[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f1vzgtH_9A2JKvznlN6uLqn-W2BfN7n8w9-_OTvdiguM":3},{"id":4,"url_slug":5,"title":6,"description":7,"plugin_slug":8,"theme_slug":9,"affected_versions":10,"patched_in_version":11,"severity":12,"cvss_score":13,"cvss_vector":14,"vuln_type":15,"published_date":16,"updated_date":17,"references":18,"days_to_patch":20,"patch_diff_files":21,"patch_trac_url":9,"research_status":30,"research_verified":31,"research_rounds_completed":32,"research_plan":33,"research_summary":34,"research_vulnerable_code":9,"research_fix_diff":35,"research_exploit_outline":36,"research_model_used":37,"research_started_at":38,"research_completed_at":39,"research_error":9,"poc_status":9,"poc_video_id":9,"poc_summary":9,"poc_steps":9,"poc_tested_at":9,"poc_wp_version":9,"poc_php_version":9,"poc_playwright_script":9,"poc_exploit_code":9,"poc_has_trace":31,"poc_model_used":9,"poc_verification_depth":9,"poc_exploit_code_gated":31,"source_links":40},"CVE-2026-32442","e2pdf-missing-authorization","e2pdf \u003C= 1.28.15 - Missing Authorization","The e2pdf plugin for WordPress is vulnerable to unauthorized access due to a missing capability check on a function in versions up to, and including, 1.28.15. This makes it possible for authenticated attackers, with contributor-level access and above, to perform an unauthorized action.","e2pdf",null,"\u003C=1.28.15","1.32.00","medium",4.3,"CVSS:3.1\u002FAV:N\u002FAC:L\u002FPR:L\u002FUI:N\u002FS:U\u002FC:N\u002FI:L\u002FA:N","Missing Authorization","2026-03-04 00:00:00","2026-04-15 21:05:38",[19],"https:\u002F\u002Fwww.wordfence.com\u002Fthreat-intel\u002Fvulnerabilities\u002Fid\u002F86fe195e-7ebf-4840-89e2-619a238c3082?source=api-prod",43,[22,23,24,25,26,27,28,29],"assets\u002Fpdf.js\u002Fbuild\u002Fpdf.js","assets\u002Fpdf.js\u002Fbuild\u002Fpdf.js.map","assets\u002Fpdf.js\u002Fbuild\u002Fpdf.sandbox.js","assets\u002Fpdf.js\u002Fbuild\u002Fpdf.sandbox.js.map","assets\u002Fpdf.js\u002Fbuild\u002Fpdf.worker.js","assets\u002Fpdf.js\u002Fbuild\u002Fpdf.worker.js.map","assets\u002Fpdf.js\u002Fweb\u002Fdebugger.css","assets\u002Fpdf.js\u002Fweb\u002Fdebugger.js","researched",false,3,"This exploitation research plan targets **CVE-2026-32442**, a missing authorization vulnerability in the **E2Pdf** plugin (\u003C= 1.28.15). The vulnerability allows authenticated users with **Contributor-level** permissions and above to perform unauthorized actions, specifically modifying plugin settings or template data, due to insufficient capability checks in the plugin's AJAX handlers.\n\n---\n\n### 1. Vulnerability Summary\n*   **Vulnerability:** Missing Authorization (CWE-862).\n*   **Plugin:** E2Pdf – Export Pdf Tool for WordPress.\n*   **Affected Versions:** \u003C= 1.28.15.\n*   **Vulnerable Component:** The plugin registers AJAX actions (likely `e2pdf_save_settings` or `e2pdf_template_save`) that verify a nonce but fail to check if the current user has the `manage_options` capability.\n*   **Impact:** A Contributor can modify global plugin settings or alter PDF templates, which should be restricted to Administrators.\n\n### 2. Attack Vector Analysis\n*   **Endpoint:** `\u002Fwp-admin\u002Fadmin-ajax.php`\n*   **Action:** `e2pdf_save_settings` (inferred based on \"Unauthorized Action\" and medium severity).\n*   **Method:** `POST`\n*   **Parameters:**\n    *   `action`: `e2pdf_save_settings`\n    *   `nonce`: A valid WordPress nonce for the action.\n    *   `e2pdf_settings[api_key]`: A test value to verify integrity impact.\n*   **Authentication:** Authenticated as a **Contributor**.\n*   **Preconditions:** The E2Pdf plugin must be active. A Contributor user account is required.\n\n### 3. Code Flow (Inferred)\n1.  **Entry Point:** The plugin registers AJAX handlers in a class (likely `E2Pdf_Admin`) during the `init` or `admin_init` hook.\n2.  **Hook Registration:** \n    ```php\n    add_action('wp_ajax_e2pdf_save_settings', array($this, 'ajax_save_settings'));\n    ```\n3.  **Vulnerable Handler (`ajax_save_settings`):**\n    *   The function calls `check_ajax_referer('e2pdf_nonce', 'nonce')` or `wp_verify_nonce()`.\n    *   **The Flaw:** It proceeds to call `update_option('e2pdf_settings', ...)` without checking `if (current_user_can('manage_options'))`.\n4.  **Sink:** `update_option()` modifies the site configuration.\n\n### 4. Nonce Acquisition Strategy\nE2Pdf localizes its AJAX data using `wp_localize_script`. Since the vulnerability targets Contributors, we can extract the nonce from either the WordPress Admin dashboard or a page where E2Pdf scripts are enqueued via a shortcode.\n\n*   **Localization Object:** `e2pdf_admin` (inferred).\n*   **Nonce Key:** `nonce` (inferred).\n*   **Shortcode for Frontend Loading:** `[e2pdf-download id=\"1\"]` (or any valid template ID).\n\n**Extraction Steps:**\n1.  Create a post with the `[e2pdf-download id=\"1\"]` shortcode.\n2.  Navigate to the post as the Contributor.\n3.  Execute `browser_eval` to grab the nonce:\n    ```javascript\n    window.e2pdf_admin?.nonce || window.e2pdf_ajax?.nonce\n    ```\n\n### 5. Exploitation Strategy\n1.  **Login:** Authenticate as a Contributor.\n2.  **Nonce Extraction:** Navigate to a page with an E2Pdf shortcode or the Admin dashboard and use `browser_eval` to extract the `e2pdf_admin.nonce`.\n3.  **Forged Request:** Send a POST request to `admin-ajax.php` to overwrite a plugin setting.\n\n**HTTP Request Payload:**\n*   **URL:** `http:\u002F\u002Flocalhost:8080\u002Fwp-admin\u002Fadmin-ajax.php`\n*   **Header:** `Content-Type: application\u002Fx-www-form-urlencoded`\n*   **Body:**\n    ```text\n    action=e2pdf_save_settings&nonce=[EXTRACTED_NONCE]&e2pdf_settings[debug]=1&e2pdf_settings[api_key]=VULNERABLE_TEST\n    ```\n\n### 6. Test Data Setup\n1.  **Plugin:** Install and activate E2Pdf \u003C= 1.28.15.\n2.  **User:** Create a user `attacker` with the `contributor` role.\n3.  **Template:** Create a dummy E2Pdf template (ID 1) if necessary to ensure the shortcode renders and enqueues scripts.\n4.  **Page:** \n    ```bash\n    wp post create --post_type=page --post_title=\"E2Pdf Test\" --post_status=publish --post_content='[e2pdf-view id=\"1\"]'\n    ```\n\n### 7. Expected Results\n*   **AJAX Response:** The server should return a successful JSON response, typically `{\"success\":true}` or a `1` (if using `wp_die(1)`).\n*   **Effect:** The `e2pdf_settings` option in the database will be updated.\n\n### 8. Verification Steps\n1.  **Check Database:** Use WP-CLI to verify the setting was changed.\n    ```bash\n    wp option get e2pdf_settings --format=json\n    ```\n2.  **Confirm Value:** Ensure the `api_key` or `debug` value matches the payload `VULNERABLE_TEST`.\n\n### 9. Alternative Approaches\nIf `e2pdf_save_settings` is not the vulnerable action, investigate the template saving mechanism:\n*   **Action:** `e2pdf_template_save` (inferred).\n*   **Parameters:** `id=[TEMPLATE_ID]&data=[MALICIOUS_PDF_JSON]`.\n*   **Strategy:** This would demonstrate the ability of a Contributor to overwrite templates created by Administrators, leading to potential phishing or stored XSS if the template data is rendered in the viewer.\n\n*Note: As the provided source files were only PDF.js assets, the function names and JS objects (`e2pdf_admin`, `e2pdf_save_settings`) are based on standard e2pdf architecture and must be verified by the agent using `grep` or `browser_eval` before the final payload is sent.*","The E2Pdf plugin for WordPress is vulnerable to unauthorized settings modification in versions up to and including 1.28.15. Due to a missing capability check in its AJAX handlers, authenticated attackers with Contributor-level access or higher can perform unauthorized administrative actions, such as altering global plugin configuration.","diff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fbuild\u002Fpdf.js \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fbuild\u002Fpdf.js\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fbuild\u002Fpdf.js\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fbuild\u002Fpdf.js\t2026-02-24 09:27:28.000000000 +0000\n@@ -2,7 +2,7 @@\n  * @licstart The following is the entire license notice for the\n  * JavaScript code in this page\n  *\n- * Copyright 2023 Mozilla Foundation\n+ * Copyright 2024 Mozilla Foundation\n  *\n  * Licensed under the Apache License, Version 2.0 (the \"License\");\n  * you may not use this file except in compliance with the License.\n@@ -20,85 +20,5177 @@\n  * JavaScript code in this page\n  *\u002F\n \n-\u002F******\u002F \u002F\u002F The require scope\n-\u002F******\u002F var __webpack_require__ = {};\n-\u002F******\u002F \n+\u002F**\n+ * pdfjsVersion = 5.3.31\n+ * pdfjsBuild = 47ad820d9\n+ *\u002F\n+\u002F******\u002F var __webpack_modules__ = ({\n+\n+\u002F***\u002F 34:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isCallable = __webpack_require__(4901);\n+\n+module.exports = function (it) {\n+  return typeof it == 'object' ? it !== null : isCallable(it);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 81:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var call = __webpack_require__(9565);\n+var aCallable = __webpack_require__(9306);\n+var anObject = __webpack_require__(8551);\n+var tryToString = __webpack_require__(6823);\n+var getIteratorMethod = __webpack_require__(851);\n+\n+var $TypeError = TypeError;\n+\n+module.exports = function (argument, usingIterator) {\n+  var iteratorMethod = arguments.length \u003C 2 ? getIteratorMethod(argument) : usingIterator;\n+  if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n+  throw new $TypeError(tryToString(argument) + ' is not iterable');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 283:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+var fails = __webpack_require__(9039);\n+var isCallable = __webpack_require__(4901);\n+var hasOwn = __webpack_require__(9297);\n+var DESCRIPTORS = __webpack_require__(3724);\n+var CONFIGURABLE_FUNCTION_NAME = (__webpack_require__(350).CONFIGURABLE);\n+var inspectSource = __webpack_require__(3706);\n+var InternalStateModule = __webpack_require__(1181);\n+\n+var enforceInternalState = InternalStateModule.enforce;\n+var getInternalState = InternalStateModule.get;\n+var $String = String;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\n+var defineProperty = Object.defineProperty;\n+var stringSlice = uncurryThis(''.slice);\n+var replace = uncurryThis(''.replace);\n+var join = uncurryThis([].join);\n+\n+var CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n+  return defineProperty(function () { \u002F* empty *\u002F }, 'length', { value: 8 }).length !== 8;\n+});\n+\n+var TEMPLATE = String(String).split('String');\n+\n+var makeBuiltIn = module.exports = function (value, name, options) {\n+  if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n+    name = '[' + replace($String(name), \u002F^Symbol\\(([^)]*)\\).*$\u002F, '$1') + ']';\n+  }\n+  if (options && options.getter) name = 'get ' + name;\n+  if (options && options.setter) name = 'set ' + name;\n+  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n+    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n+    else value.name = name;\n+  }\n+  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n+    defineProperty(value, 'length', { value: options.arity });\n+  }\n+  try {\n+    if (options && hasOwn(options, 'constructor') && options.constructor) {\n+      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n+    \u002F\u002F in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n+    } else if (value.prototype) value.prototype = undefined;\n+  } catch (error) { \u002F* empty *\u002F }\n+  var state = enforceInternalState(value);\n+  if (!hasOwn(state, 'source')) {\n+    state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n+  } return value;\n+};\n+\n+\u002F\u002F add fake Function#toString for correct work wrapped methods \u002F constructors with methods like LoDash isNative\n+\u002F\u002F eslint-disable-next-line no-extend-native -- required\n+Function.prototype.toString = makeBuiltIn(function toString() {\n+  return isCallable(this) && getInternalState(this).source || inspectSource(this);\n+}, 'toString');\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 350:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var hasOwn = __webpack_require__(9297);\n+\n+var FunctionPrototype = Function.prototype;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n+\n+var EXISTS = hasOwn(FunctionPrototype, 'name');\n+\u002F\u002F additional protection from minified \u002F mangled \u002F dropped function names\n+var PROPER = EXISTS && (function something() { \u002F* empty *\u002F }).name === 'something';\n+var CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n+\n+module.exports = {\n+  EXISTS: EXISTS,\n+  PROPER: PROPER,\n+  CONFIGURABLE: CONFIGURABLE\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 397:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var getBuiltIn = __webpack_require__(7751);\n+\n+module.exports = getBuiltIn('document', 'documentElement');\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 421:\n+\u002F***\u002F ((module) => {\n+\n+\n+module.exports = {};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 507:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var call = __webpack_require__(9565);\n+\n+module.exports = function (record, fn, ITERATOR_INSTEAD_OF_RECORD) {\n+  var iterator = ITERATOR_INSTEAD_OF_RECORD ? record : record.iterator;\n+  var next = record.next;\n+  var step, result;\n+  while (!(step = call(next, iterator)).done) {\n+    result = fn(step.value);\n+    if (result !== undefined) return result;\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 531:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var call = __webpack_require__(9565);\n+var aCallable = __webpack_require__(9306);\n+var anObject = __webpack_require__(8551);\n+var getIteratorDirect = __webpack_require__(1767);\n+var getIteratorFlattenable = __webpack_require__(8646);\n+var createIteratorProxy = __webpack_require__(9462);\n+var iteratorClose = __webpack_require__(9539);\n+var IS_PURE = __webpack_require__(6395);\n+var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n+\n+var flatMapWithoutClosingOnEarlyError = !IS_PURE && iteratorHelperWithoutClosingOnEarlyError('flatMap', TypeError);\n+\n+var IteratorProxy = createIteratorProxy(function () {\n+  var iterator = this.iterator;\n+  var mapper = this.mapper;\n+  var result, inner;\n+\n+  while (true) {\n+    if (inner = this.inner) try {\n+      result = anObject(call(inner.next, inner.iterator));\n+      if (!result.done) return result.value;\n+      this.inner = null;\n+    } catch (error) { iteratorClose(iterator, 'throw', error); }\n+\n+    result = anObject(call(this.next, iterator));\n+\n+    if (this.done = !!result.done) return;\n+\n+    try {\n+      this.inner = getIteratorFlattenable(mapper(result.value, this.counter++), false);\n+    } catch (error) { iteratorClose(iterator, 'throw', error); }\n+  }\n+});\n+\n+\u002F\u002F `Iterator.prototype.flatMap` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.flatmap\n+$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE || flatMapWithoutClosingOnEarlyError }, {\n+  flatMap: function flatMap(mapper) {\n+    anObject(this);\n+    try {\n+      aCallable(mapper);\n+    } catch (error) {\n+      iteratorClose(this, 'throw', error);\n+    }\n+\n+    if (flatMapWithoutClosingOnEarlyError) return call(flatMapWithoutClosingOnEarlyError, this, mapper);\n+\n+    return new IteratorProxy(getIteratorDirect(this), {\n+      mapper: mapper,\n+      inner: null\n+    });\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 616:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var fails = __webpack_require__(9039);\n+\n+module.exports = !fails(function () {\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind -- safe\n+  var test = (function () { \u002F* empty *\u002F }).bind();\n+  \u002F\u002F eslint-disable-next-line no-prototype-builtins -- safe\n+  return typeof test != 'function' || test.hasOwnProperty('prototype');\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 655:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var classof = __webpack_require__(6955);\n+\n+var $String = String;\n+\n+module.exports = function (argument) {\n+  if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n+  return $String(argument);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 679:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isPrototypeOf = __webpack_require__(1625);\n+\n+var $TypeError = TypeError;\n+\n+module.exports = function (it, Prototype) {\n+  if (isPrototypeOf(Prototype, it)) return it;\n+  throw new $TypeError('Incorrect invocation');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 741:\n+\u002F***\u002F ((module) => {\n+\n+\n+var ceil = Math.ceil;\n+var floor = Math.floor;\n+\n+\u002F\u002F `Math.trunc` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-math.trunc\n+\u002F\u002F eslint-disable-next-line es\u002Fno-math-trunc -- safe\n+module.exports = Math.trunc || function trunc(x) {\n+  var n = +x;\n+  return (n > 0 ? floor : ceil)(n);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 757:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var getBuiltIn = __webpack_require__(7751);\n+var isCallable = __webpack_require__(4901);\n+var isPrototypeOf = __webpack_require__(1625);\n+var USE_SYMBOL_AS_UID = __webpack_require__(7040);\n+\n+var $Object = Object;\n+\n+module.exports = USE_SYMBOL_AS_UID ? function (it) {\n+  return typeof it == 'symbol';\n+} : function (it) {\n+  var $Symbol = getBuiltIn('Symbol');\n+  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 851:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var classof = __webpack_require__(6955);\n+var getMethod = __webpack_require__(5966);\n+var isNullOrUndefined = __webpack_require__(4117);\n+var Iterators = __webpack_require__(6269);\n+var wellKnownSymbol = __webpack_require__(8227);\n+\n+var ITERATOR = wellKnownSymbol('iterator');\n+\n+module.exports = function (it) {\n+  if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n+    || getMethod(it, '@@iterator')\n+    || Iterators[classof(it)];\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 944:\n+\u002F***\u002F ((module) => {\n+\n+\n+var $TypeError = TypeError;\n+\n+module.exports = function (options) {\n+  var alphabet = options && options.alphabet;\n+  if (alphabet === undefined || alphabet === 'base64' || alphabet === 'base64url') return alphabet || 'base64';\n+  throw new $TypeError('Incorrect `alphabet` option');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1072:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var internalObjectKeys = __webpack_require__(1828);\n+var enumBugKeys = __webpack_require__(8727);\n+\n+\u002F\u002F `Object.keys` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.keys\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-keys -- safe\n+module.exports = Object.keys || function keys(O) {\n+  return internalObjectKeys(O, enumBugKeys);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1103:\n+\u002F***\u002F ((module) => {\n+\n+\n+module.exports = function (exec) {\n+  try {\n+    return { error: false, value: exec() };\n+  } catch (error) {\n+    return { error: true, value: error };\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1148:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var call = __webpack_require__(9565);\n+var iterate = __webpack_require__(2652);\n+var aCallable = __webpack_require__(9306);\n+var anObject = __webpack_require__(8551);\n+var getIteratorDirect = __webpack_require__(1767);\n+var iteratorClose = __webpack_require__(9539);\n+var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n+\n+var everyWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('every', TypeError);\n+\n+\u002F\u002F `Iterator.prototype.every` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.every\n+$({ target: 'Iterator', proto: true, real: true, forced: everyWithoutClosingOnEarlyError }, {\n+  every: function every(predicate) {\n+    anObject(this);\n+    try {\n+      aCallable(predicate);\n+    } catch (error) {\n+      iteratorClose(this, 'throw', error);\n+    }\n+\n+    if (everyWithoutClosingOnEarlyError) return call(everyWithoutClosingOnEarlyError, this, predicate);\n+\n+    var record = getIteratorDirect(this);\n+    var counter = 0;\n+    return !iterate(record, function (value, stop) {\n+      if (!predicate(value, counter++)) return stop();\n+    }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1181:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var NATIVE_WEAK_MAP = __webpack_require__(8622);\n+var globalThis = __webpack_require__(4576);\n+var isObject = __webpack_require__(34);\n+var createNonEnumerableProperty = __webpack_require__(6699);\n+var hasOwn = __webpack_require__(9297);\n+var shared = __webpack_require__(7629);\n+var sharedKey = __webpack_require__(6119);\n+var hiddenKeys = __webpack_require__(421);\n+\n+var OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\n+var TypeError = globalThis.TypeError;\n+var WeakMap = globalThis.WeakMap;\n+var set, get, has;\n+\n+var enforce = function (it) {\n+  return has(it) ? get(it) : set(it, {});\n+};\n+\n+var getterFor = function (TYPE) {\n+  return function (it) {\n+    var state;\n+    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n+      throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n+    } return state;\n+  };\n+};\n+\n+if (NATIVE_WEAK_MAP || shared.state) {\n+  var store = shared.state || (shared.state = new WeakMap());\n+  \u002F* eslint-disable no-self-assign -- prototype methods protection *\u002F\n+  store.get = store.get;\n+  store.has = store.has;\n+  store.set = store.set;\n+  \u002F* eslint-enable no-self-assign -- prototype methods protection *\u002F\n+  set = function (it, metadata) {\n+    if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n+    metadata.facade = it;\n+    store.set(it, metadata);\n+    return metadata;\n+  };\n+  get = function (it) {\n+    return store.get(it) || {};\n+  };\n+  has = function (it) {\n+    return store.has(it);\n+  };\n+} else {\n+  var STATE = sharedKey('state');\n+  hiddenKeys[STATE] = true;\n+  set = function (it, metadata) {\n+    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n+    metadata.facade = it;\n+    createNonEnumerableProperty(it, STATE, metadata);\n+    return metadata;\n+  };\n+  get = function (it) {\n+    return hasOwn(it, STATE) ? it[STATE] : {};\n+  };\n+  has = function (it) {\n+    return hasOwn(it, STATE);\n+  };\n+}\n+\n+module.exports = {\n+  set: set,\n+  get: get,\n+  has: has,\n+  enforce: enforce,\n+  getterFor: getterFor\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1291:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var trunc = __webpack_require__(741);\n+\n+\u002F\u002F `ToIntegerOrInfinity` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-tointegerorinfinity\n+module.exports = function (argument) {\n+  var number = +argument;\n+  \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\n+  return number !== number || number === 0 ? 0 : trunc(number);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1548:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var fails = __webpack_require__(9039);\n+var V8 = __webpack_require__(9519);\n+var ENVIRONMENT = __webpack_require__(4215);\n+\n+var structuredClone = globalThis.structuredClone;\n+\n+module.exports = !!structuredClone && !fails(function () {\n+  \u002F\u002F prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation\n+  \u002F\u002F https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F679\n+  if ((ENVIRONMENT === 'DENO' && V8 > 92) || (ENVIRONMENT === 'NODE' && V8 > 94) || (ENVIRONMENT === 'BROWSER' && V8 > 97)) return false;\n+  var buffer = new ArrayBuffer(8);\n+  var clone = structuredClone(buffer, { transfer: [buffer] });\n+  return buffer.byteLength !== 0 || clone.byteLength !== 8;\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1549:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var globalThis = __webpack_require__(4576);\n+var $fromBase64 = __webpack_require__(9143);\n+var anUint8Array = __webpack_require__(4154);\n+\n+var Uint8Array = globalThis.Uint8Array;\n+\n+var INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS = !Uint8Array || !Uint8Array.prototype.setFromBase64 || !(function () {\n+  var target = new Uint8Array([255, 255, 255, 255, 255]);\n+  try {\n+    target.setFromBase64('MjYyZg===');\n+  } catch (error) {\n+    return target[0] === 50 && target[1] === 54 && target[2] === 50 && target[3] === 255 && target[4] === 255;\n+  }\n+})();\n+\n+\u002F\u002F `Uint8Array.prototype.setFromBase64` method\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-arraybuffer-base64\n+if (Uint8Array) $({ target: 'Uint8Array', proto: true, forced: INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS }, {\n+  setFromBase64: function setFromBase64(string \u002F* , options *\u002F) {\n+    anUint8Array(this);\n+\n+    var result = $fromBase64(string, arguments.length > 1 ? arguments[1] : undefined, this, this.length);\n+\n+    return { read: result.read, written: result.written };\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1625:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+\n+module.exports = uncurryThis({}.isPrototypeOf);\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1689:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var globalThis = __webpack_require__(4576);\n+var apply = __webpack_require__(8745);\n+var slice = __webpack_require__(7680);\n+var newPromiseCapabilityModule = __webpack_require__(6043);\n+var aCallable = __webpack_require__(9306);\n+var perform = __webpack_require__(1103);\n+\n+var Promise = globalThis.Promise;\n+\n+var ACCEPT_ARGUMENTS = false;\n+\u002F\u002F Avoiding the use of polyfills of the previous iteration of this proposal\n+\u002F\u002F that does not accept arguments of the callback\n+var FORCED = !Promise || !Promise['try'] || perform(function () {\n+  Promise['try'](function (argument) {\n+    ACCEPT_ARGUMENTS = argument === 8;\n+  }, 8);\n+}).error || !ACCEPT_ARGUMENTS;\n+\n+\u002F\u002F `Promise.try` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-promise.try\n+$({ target: 'Promise', stat: true, forced: FORCED }, {\n+  'try': function (callbackfn \u002F* , ...args *\u002F) {\n+    var args = arguments.length > 1 ? slice(arguments, 1) : [];\n+    var promiseCapability = newPromiseCapabilityModule.f(this);\n+    var result = perform(function () {\n+      return apply(aCallable(callbackfn), undefined, args);\n+    });\n+    (result.error ? promiseCapability.reject : promiseCapability.resolve)(result.value);\n+    return promiseCapability.promise;\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1698:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var union = __webpack_require__(4204);\n+var setMethodAcceptSetLike = __webpack_require__(4916);\n+\n+\u002F\u002F `Set.prototype.union` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.union\n+$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('union') }, {\n+  union: union\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1701:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var call = __webpack_require__(9565);\n+var aCallable = __webpack_require__(9306);\n+var anObject = __webpack_require__(8551);\n+var getIteratorDirect = __webpack_require__(1767);\n+var createIteratorProxy = __webpack_require__(9462);\n+var callWithSafeIterationClosing = __webpack_require__(6319);\n+var iteratorClose = __webpack_require__(9539);\n+var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n+var IS_PURE = __webpack_require__(6395);\n+\n+var mapWithoutClosingOnEarlyError = !IS_PURE && iteratorHelperWithoutClosingOnEarlyError('map', TypeError);\n+\n+var IteratorProxy = createIteratorProxy(function () {\n+  var iterator = this.iterator;\n+  var result = anObject(call(this.next, iterator));\n+  var done = this.done = !!result.done;\n+  if (!done) return callWithSafeIterationClosing(iterator, this.mapper, [result.value, this.counter++], true);\n+});\n+\n+\u002F\u002F `Iterator.prototype.map` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.map\n+$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE || mapWithoutClosingOnEarlyError }, {\n+  map: function map(mapper) {\n+    anObject(this);\n+    try {\n+      aCallable(mapper);\n+    } catch (error) {\n+      iteratorClose(this, 'throw', error);\n+    }\n+\n+    if (mapWithoutClosingOnEarlyError) return call(mapWithoutClosingOnEarlyError, this, mapper);\n+\n+    return new IteratorProxy(getIteratorDirect(this), {\n+      mapper: mapper\n+    });\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1767:\n+\u002F***\u002F ((module) => {\n+\n+\n+\u002F\u002F `GetIteratorDirect(obj)` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-iterator-helpers\u002F#sec-getiteratordirect\n+module.exports = function (obj) {\n+  return {\n+    iterator: obj,\n+    next: obj.next,\n+    done: false\n+  };\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1828:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+var hasOwn = __webpack_require__(9297);\n+var toIndexedObject = __webpack_require__(5397);\n+var indexOf = (__webpack_require__(9617).indexOf);\n+var hiddenKeys = __webpack_require__(421);\n+\n+var push = uncurryThis([].push);\n+\n+module.exports = function (object, names) {\n+  var O = toIndexedObject(object);\n+  var i = 0;\n+  var result = [];\n+  var key;\n+  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n+  \u002F\u002F Don't enum bug & hidden keys\n+  while (names.length > i) if (hasOwn(O, key = names[i++])) {\n+    ~indexOf(result, key) || push(result, key);\n+  }\n+  return result;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2106:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var makeBuiltIn = __webpack_require__(283);\n+var defineProperty = __webpack_require__(4913);\n+\n+module.exports = function (target, name, descriptor) {\n+  if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n+  if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n+  return defineProperty.f(target, name, descriptor);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2140:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var wellKnownSymbol = __webpack_require__(8227);\n+\n+var TO_STRING_TAG = wellKnownSymbol('toStringTag');\n+var test = {};\n+\n+test[TO_STRING_TAG] = 'z';\n+\n+module.exports = String(test) === '[object z]';\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2195:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+\n+var toString = uncurryThis({}.toString);\n+var stringSlice = uncurryThis(''.slice);\n+\n+module.exports = function (it) {\n+  return stringSlice(toString(it), 8, -1);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2211:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var fails = __webpack_require__(9039);\n+\n+module.exports = !fails(function () {\n+  function F() { \u002F* empty *\u002F }\n+  F.prototype.constructor = null;\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-object-getprototypeof -- required for testing\n+  return Object.getPrototypeOf(new F()) !== F.prototype;\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2303:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var uncurryThis = __webpack_require__(9504);\n+\n+var Uint8Array = globalThis.Uint8Array;\n+var SyntaxError = globalThis.SyntaxError;\n+var parseInt = globalThis.parseInt;\n+var min = Math.min;\n+var NOT_HEX = \u002F[^\\da-f]\u002Fi;\n+var exec = uncurryThis(NOT_HEX.exec);\n+var stringSlice = uncurryThis(''.slice);\n+\n+module.exports = function (string, into) {\n+  var stringLength = string.length;\n+  if (stringLength % 2 !== 0) throw new SyntaxError('String should be an even number of characters');\n+  var maxLength = into ? min(into.length, stringLength \u002F 2) : stringLength \u002F 2;\n+  var bytes = into || new Uint8Array(maxLength);\n+  var read = 0;\n+  var written = 0;\n+  while (written \u003C maxLength) {\n+    var hexits = stringSlice(string, read, read += 2);\n+    if (exec(NOT_HEX, hexits)) throw new SyntaxError('String should only contain hex characters');\n+    bytes[written++] = parseInt(hexits, 16);\n+  }\n+  return { bytes: bytes, read: read };\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2360:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+\u002F* global ActiveXObject -- old IE, WSH *\u002F\n+var anObject = __webpack_require__(8551);\n+var definePropertiesModule = __webpack_require__(6801);\n+var enumBugKeys = __webpack_require__(8727);\n+var hiddenKeys = __webpack_require__(421);\n+var html = __webpack_require__(397);\n+var documentCreateElement = __webpack_require__(4055);\n+var sharedKey = __webpack_require__(6119);\n+\n+var GT = '>';\n+var LT = '\u003C';\n+var PROTOTYPE = 'prototype';\n+var SCRIPT = 'script';\n+var IE_PROTO = sharedKey('IE_PROTO');\n+\n+var EmptyConstructor = function () { \u002F* empty *\u002F };\n+\n+var scriptTag = function (content) {\n+  return LT + SCRIPT + GT + content + LT + '\u002F' + SCRIPT + GT;\n+};\n+\n+\u002F\u002F Create object with fake `null` prototype: use ActiveX Object with cleared prototype\n+var NullProtoObjectViaActiveX = function (activeXDocument) {\n+  activeXDocument.write(scriptTag(''));\n+  activeXDocument.close();\n+  var temp = activeXDocument.parentWindow.Object;\n+  \u002F\u002F eslint-disable-next-line no-useless-assignment -- avoid memory leak\n+  activeXDocument = null;\n+  return temp;\n+};\n+\n+\u002F\u002F Create object with fake `null` prototype: use iframe Object with cleared prototype\n+var NullProtoObjectViaIFrame = function () {\n+  \u002F\u002F Thrash, waste and sodomy: IE GC bug\n+  var iframe = documentCreateElement('iframe');\n+  var JS = 'java' + SCRIPT + ':';\n+  var iframeDocument;\n+  iframe.style.display = 'none';\n+  html.appendChild(iframe);\n+  \u002F\u002F https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F475\n+  iframe.src = String(JS);\n+  iframeDocument = iframe.contentWindow.document;\n+  iframeDocument.open();\n+  iframeDocument.write(scriptTag('document.F=Object'));\n+  iframeDocument.close();\n+  return iframeDocument.F;\n+};\n+\n+\u002F\u002F Check for document.domain and active x support\n+\u002F\u002F No need to use active x approach when document.domain is not set\n+\u002F\u002F see https:\u002F\u002Fgithub.com\u002Fes-shims\u002Fes5-shim\u002Fissues\u002F150\n+\u002F\u002F variation of https:\u002F\u002Fgithub.com\u002Fkitcambridge\u002Fes5-shim\u002Fcommit\u002F4f738ac066346\n+\u002F\u002F avoid IE GC bug\n+var activeXDocument;\n+var NullProtoObject = function () {\n+  try {\n+    activeXDocument = new ActiveXObject('htmlfile');\n+  } catch (error) { \u002F* ignore *\u002F }\n+  NullProtoObject = typeof document != 'undefined'\n+    ? document.domain && activeXDocument\n+      ? NullProtoObjectViaActiveX(activeXDocument) \u002F\u002F old IE\n+      : NullProtoObjectViaIFrame()\n+    : NullProtoObjectViaActiveX(activeXDocument); \u002F\u002F WSH\n+  var length = enumBugKeys.length;\n+  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n+  return NullProtoObject();\n+};\n+\n+hiddenKeys[IE_PROTO] = true;\n+\n+\u002F\u002F `Object.create` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.create\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-create -- safe\n+module.exports = Object.create || function create(O, Properties) {\n+  var result;\n+  if (O !== null) {\n+    EmptyConstructor[PROTOTYPE] = anObject(O);\n+    result = new EmptyConstructor();\n+    EmptyConstructor[PROTOTYPE] = null;\n+    \u002F\u002F add \"__proto__\" for Object.getPrototypeOf polyfill\n+    result[IE_PROTO] = O;\n+  } else result = NullProtoObject();\n+  return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2475:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var isSupersetOf = __webpack_require__(8527);\n+var setMethodAcceptSetLike = __webpack_require__(4916);\n+\n+var INCORRECT = !setMethodAcceptSetLike('isSupersetOf', function (result) {\n+  return !result;\n+});\n+\n+\u002F\u002F `Set.prototype.isSupersetOf` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.issupersetof\n+$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n+  isSupersetOf: isSupersetOf\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2489:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var call = __webpack_require__(9565);\n+var aCallable = __webpack_require__(9306);\n+var anObject = __webpack_require__(8551);\n+var getIteratorDirect = __webpack_require__(1767);\n+var createIteratorProxy = __webpack_require__(9462);\n+var callWithSafeIterationClosing = __webpack_require__(6319);\n+var IS_PURE = __webpack_require__(6395);\n+var iteratorClose = __webpack_require__(9539);\n+var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n+\n+var filterWithoutClosingOnEarlyError = !IS_PURE && iteratorHelperWithoutClosingOnEarlyError('filter', TypeError);\n+\n+var IteratorProxy = createIteratorProxy(function () {\n+  var iterator = this.iterator;\n+  var predicate = this.predicate;\n+  var next = this.next;\n+  var result, done, value;\n+  while (true) {\n+    result = anObject(call(next, iterator));\n+    done = this.done = !!result.done;\n+    if (done) return;\n+    value = result.value;\n+    if (callWithSafeIterationClosing(iterator, predicate, [value, this.counter++], true)) return value;\n+  }\n+});\n+\n+\u002F\u002F `Iterator.prototype.filter` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.filter\n+$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE || filterWithoutClosingOnEarlyError }, {\n+  filter: function filter(predicate) {\n+    anObject(this);\n+    try {\n+      aCallable(predicate);\n+    } catch (error) {\n+      iteratorClose(this, 'throw', error);\n+    }\n+\n+    if (filterWithoutClosingOnEarlyError) return call(filterWithoutClosingOnEarlyError, this, predicate);\n+\n+    return new IteratorProxy(getIteratorDirect(this), {\n+      predicate: predicate\n+    });\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2529:\n+\u002F***\u002F ((module) => {\n+\n+\n+\u002F\u002F `CreateIterResultObject` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-createiterresultobject\n+module.exports = function (value, done) {\n+  return { value: value, done: done };\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2603:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var toString = __webpack_require__(655);\n+\n+module.exports = function (argument, $default) {\n+  return argument === undefined ? arguments.length \u003C 2 ? '' : $default : toString(argument);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2652:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var bind = __webpack_require__(6080);\n+var call = __webpack_require__(9565);\n+var anObject = __webpack_require__(8551);\n+var tryToString = __webpack_require__(6823);\n+var isArrayIteratorMethod = __webpack_require__(4209);\n+var lengthOfArrayLike = __webpack_require__(6198);\n+var isPrototypeOf = __webpack_require__(1625);\n+var getIterator = __webpack_require__(81);\n+var getIteratorMethod = __webpack_require__(851);\n+var iteratorClose = __webpack_require__(9539);\n+\n+var $TypeError = TypeError;\n+\n+var Result = function (stopped, result) {\n+  this.stopped = stopped;\n+  this.result = result;\n+};\n+\n+var ResultPrototype = Result.prototype;\n+\n+module.exports = function (iterable, unboundFunction, options) {\n+  var that = options && options.that;\n+  var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n+  var IS_RECORD = !!(options && options.IS_RECORD);\n+  var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n+  var INTERRUPTED = !!(options && options.INTERRUPTED);\n+  var fn = bind(unboundFunction, that);\n+  var iterator, iterFn, index, length, result, next, step;\n+\n+  var stop = function (condition) {\n+    if (iterator) iteratorClose(iterator, 'normal', condition);\n+    return new Result(true, condition);\n+  };\n+\n+  var callFn = function (value) {\n+    if (AS_ENTRIES) {\n+      anObject(value);\n+      return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n+    } return INTERRUPTED ? fn(value, stop) : fn(value);\n+  };\n+\n+  if (IS_RECORD) {\n+    iterator = iterable.iterator;\n+  } else if (IS_ITERATOR) {\n+    iterator = iterable;\n+  } else {\n+    iterFn = getIteratorMethod(iterable);\n+    if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');\n+    \u002F\u002F optimisation for array iterators\n+    if (isArrayIteratorMethod(iterFn)) {\n+      for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n+        result = callFn(iterable[index]);\n+        if (result && isPrototypeOf(ResultPrototype, result)) return result;\n+      } return new Result(false);\n+    }\n+    iterator = getIterator(iterable, iterFn);\n+  }\n+\n+  next = IS_RECORD ? iterable.next : iterator.next;\n+  while (!(step = call(next, iterator)).done) {\n+    try {\n+      result = callFn(step.value);\n+    } catch (error) {\n+      iteratorClose(iterator, 'throw', error);\n+    }\n+    if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n+  } return new Result(false);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2777:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var call = __webpack_require__(9565);\n+var isObject = __webpack_require__(34);\n+var isSymbol = __webpack_require__(757);\n+var getMethod = __webpack_require__(5966);\n+var ordinaryToPrimitive = __webpack_require__(4270);\n+var wellKnownSymbol = __webpack_require__(8227);\n+\n+var $TypeError = TypeError;\n+var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n+\n+\u002F\u002F `ToPrimitive` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-toprimitive\n+module.exports = function (input, pref) {\n+  if (!isObject(input) || isSymbol(input)) return input;\n+  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n+  var result;\n+  if (exoticToPrim) {\n+    if (pref === undefined) pref = 'default';\n+    result = call(exoticToPrim, input, pref);\n+    if (!isObject(result) || isSymbol(result)) return result;\n+    throw new $TypeError(\"Can't convert object to primitive value\");\n+  }\n+  if (pref === undefined) pref = 'number';\n+  return ordinaryToPrimitive(input, pref);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2787:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var hasOwn = __webpack_require__(9297);\n+var isCallable = __webpack_require__(4901);\n+var toObject = __webpack_require__(8981);\n+var sharedKey = __webpack_require__(6119);\n+var CORRECT_PROTOTYPE_GETTER = __webpack_require__(2211);\n+\n+var IE_PROTO = sharedKey('IE_PROTO');\n+var $Object = Object;\n+var ObjectPrototype = $Object.prototype;\n+\n+\u002F\u002F `Object.getPrototypeOf` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.getprototypeof\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getprototypeof -- safe\n+module.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n+  var object = toObject(O);\n+  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n+  var constructor = object.constructor;\n+  if (isCallable(constructor) && object instanceof constructor) {\n+    return constructor.prototype;\n+  } return object instanceof $Object ? ObjectPrototype : null;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2796:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var fails = __webpack_require__(9039);\n+var isCallable = __webpack_require__(4901);\n+\n+var replacement = \u002F#|\\.prototype\\.\u002F;\n+\n+var isForced = function (feature, detection) {\n+  var value = data[normalize(feature)];\n+  return value === POLYFILL ? true\n+    : value === NATIVE ? false\n+    : isCallable(detection) ? fails(detection)\n+    : !!detection;\n+};\n+\n+var normalize = isForced.normalize = function (string) {\n+  return String(string).replace(replacement, '.').toLowerCase();\n+};\n+\n+var data = isForced.data = {};\n+var NATIVE = isForced.NATIVE = 'N';\n+var POLYFILL = isForced.POLYFILL = 'P';\n+\n+module.exports = isForced;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2804:\n+\u002F***\u002F ((module) => {\n+\n+\n+var commonAlphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n+var base64Alphabet = commonAlphabet + '+\u002F';\n+var base64UrlAlphabet = commonAlphabet + '-_';\n+\n+var inverse = function (characters) {\n+  \u002F\u002F TODO: use `Object.create(null)` in `core-js@4`\n+  var result = {};\n+  var index = 0;\n+  for (; index \u003C 64; index++) result[characters.charAt(index)] = index;\n+  return result;\n+};\n+\n+module.exports = {\n+  i2c: base64Alphabet,\n+  c2i: inverse(base64Alphabet),\n+  i2cUrl: base64UrlAlphabet,\n+  c2iUrl: inverse(base64UrlAlphabet)\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2812:\n+\u002F***\u002F ((module) => {\n+\n+\n+var $TypeError = TypeError;\n+\n+module.exports = function (passed, required) {\n+  if (passed \u003C required) throw new $TypeError('Not enough arguments');\n+  return passed;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2839:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+\n+var navigator = globalThis.navigator;\n+var userAgent = navigator && navigator.userAgent;\n+\n+module.exports = userAgent ? String(userAgent) : '';\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2967:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+\u002F* eslint-disable no-proto -- safe *\u002F\n+var uncurryThisAccessor = __webpack_require__(6706);\n+var isObject = __webpack_require__(34);\n+var requireObjectCoercible = __webpack_require__(7750);\n+var aPossiblePrototype = __webpack_require__(3506);\n+\n+\u002F\u002F `Object.setPrototypeOf` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.setprototypeof\n+\u002F\u002F Works with __proto__ only. Old v8 can't work with null proto objects.\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-setprototypeof -- safe\n+module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n+  var CORRECT_SETTER = false;\n+  var test = {};\n+  var setter;\n+  try {\n+    setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n+    setter(test, []);\n+    CORRECT_SETTER = test instanceof Array;\n+  } catch (error) { \u002F* empty *\u002F }\n+  return function setPrototypeOf(O, proto) {\n+    requireObjectCoercible(O);\n+    aPossiblePrototype(proto);\n+    if (!isObject(O)) return O;\n+    if (CORRECT_SETTER) setter(O, proto);\n+    else O.__proto__ = proto;\n+    return O;\n+  };\n+}() : undefined);\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3167:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isCallable = __webpack_require__(4901);\n+var isObject = __webpack_require__(34);\n+var setPrototypeOf = __webpack_require__(2967);\n+\n+\u002F\u002F makes subclassing work correct for wrapped built-ins\n+module.exports = function ($this, dummy, Wrapper) {\n+  var NewTarget, NewTargetPrototype;\n+  if (\n+    \u002F\u002F it can work only with native `setPrototypeOf`\n+    setPrototypeOf &&\n+    \u002F\u002F we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n+    isCallable(NewTarget = dummy.constructor) &&\n+    NewTarget !== Wrapper &&\n+    isObject(NewTargetPrototype = NewTarget.prototype) &&\n+    NewTargetPrototype !== Wrapper.prototype\n+  ) setPrototypeOf($this, NewTargetPrototype);\n+  return $this;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3238:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var NATIVE_ARRAY_BUFFER = __webpack_require__(7811);\n+var arrayBufferByteLength = __webpack_require__(7394);\n+\n+var DataView = globalThis.DataView;\n+\n+module.exports = function (O) {\n+  if (!NATIVE_ARRAY_BUFFER || arrayBufferByteLength(O) !== 0) return false;\n+  try {\n+    \u002F\u002F eslint-disable-next-line no-new -- thrower\n+    new DataView(O);\n+    return false;\n+  } catch (error) {\n+    return true;\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3392:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+\n+var id = 0;\n+var postfix = Math.random();\n+var toString = uncurryThis(1.0.toString);\n+\n+module.exports = function (key) {\n+  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3440:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aSet = __webpack_require__(7080);\n+var SetHelpers = __webpack_require__(4402);\n+var clone = __webpack_require__(9286);\n+var size = __webpack_require__(5170);\n+var getSetRecord = __webpack_require__(3789);\n+var iterateSet = __webpack_require__(8469);\n+var iterateSimple = __webpack_require__(507);\n+\n+var has = SetHelpers.has;\n+var remove = SetHelpers.remove;\n+\n+\u002F\u002F `Set.prototype.difference` method\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\n+module.exports = function difference(other) {\n+  var O = aSet(this);\n+  var otherRec = getSetRecord(other);\n+  var result = clone(O);\n+  if (size(O) \u003C= otherRec.size) iterateSet(O, function (e) {\n+    if (otherRec.includes(e)) remove(result, e);\n+  });\n+  else iterateSimple(otherRec.getIterator(), function (e) {\n+    if (has(O, e)) remove(result, e);\n+  });\n+  return result;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3463:\n+\u002F***\u002F ((module) => {\n+\n+\n+var $TypeError = TypeError;\n+\n+module.exports = function (argument) {\n+  if (typeof argument == 'string') return argument;\n+  throw new $TypeError('Argument is not a string');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3506:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isPossiblePrototype = __webpack_require__(3925);\n+\n+var $String = String;\n+var $TypeError = TypeError;\n+\n+module.exports = function (argument) {\n+  if (isPossiblePrototype(argument)) return argument;\n+  throw new $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3579:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var call = __webpack_require__(9565);\n+var iterate = __webpack_require__(2652);\n+var aCallable = __webpack_require__(9306);\n+var anObject = __webpack_require__(8551);\n+var getIteratorDirect = __webpack_require__(1767);\n+var iteratorClose = __webpack_require__(9539);\n+var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n+\n+var someWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('some', TypeError);\n+\n+\u002F\u002F `Iterator.prototype.some` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.some\n+$({ target: 'Iterator', proto: true, real: true, forced: someWithoutClosingOnEarlyError }, {\n+  some: function some(predicate) {\n+    anObject(this);\n+    try {\n+      aCallable(predicate);\n+    } catch (error) {\n+      iteratorClose(this, 'throw', error);\n+    }\n+\n+    if (someWithoutClosingOnEarlyError) return call(someWithoutClosingOnEarlyError, this, predicate);\n+\n+    var record = getIteratorDirect(this);\n+    var counter = 0;\n+    return iterate(record, function (value, stop) {\n+      if (predicate(value, counter++)) return stop();\n+    }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3650:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aSet = __webpack_require__(7080);\n+var SetHelpers = __webpack_require__(4402);\n+var clone = __webpack_require__(9286);\n+var getSetRecord = __webpack_require__(3789);\n+var iterateSimple = __webpack_require__(507);\n+\n+var add = SetHelpers.add;\n+var has = SetHelpers.has;\n+var remove = SetHelpers.remove;\n+\n+\u002F\u002F `Set.prototype.symmetricDifference` method\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\n+module.exports = function symmetricDifference(other) {\n+  var O = aSet(this);\n+  var keysIter = getSetRecord(other).getIterator();\n+  var result = clone(O);\n+  iterateSimple(keysIter, function (e) {\n+    if (has(O, e)) remove(result, e);\n+    else add(result, e);\n+  });\n+  return result;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3706:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+var isCallable = __webpack_require__(4901);\n+var store = __webpack_require__(7629);\n+\n+var functionToString = uncurryThis(Function.toString);\n+\n+\u002F\u002F this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\n+if (!isCallable(store.inspectSource)) {\n+  store.inspectSource = function (it) {\n+    return functionToString(it);\n+  };\n+}\n+\n+module.exports = store.inspectSource;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3717:\n+\u002F***\u002F ((__unused_webpack_module, exports) => {\n+\n+\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertysymbols -- safe\n+exports.f = Object.getOwnPropertySymbols;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3724:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var fails = __webpack_require__(9039);\n+\n+\u002F\u002F Detect IE8's incomplete defineProperty implementation\n+module.exports = !fails(function () {\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- required for testing\n+  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3789:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aCallable = __webpack_require__(9306);\n+var anObject = __webpack_require__(8551);\n+var call = __webpack_require__(9565);\n+var toIntegerOrInfinity = __webpack_require__(1291);\n+var getIteratorDirect = __webpack_require__(1767);\n+\n+var INVALID_SIZE = 'Invalid size';\n+var $RangeError = RangeError;\n+var $TypeError = TypeError;\n+var max = Math.max;\n+\n+var SetRecord = function (set, intSize) {\n+  this.set = set;\n+  this.size = max(intSize, 0);\n+  this.has = aCallable(set.has);\n+  this.keys = aCallable(set.keys);\n+};\n+\n+SetRecord.prototype = {\n+  getIterator: function () {\n+    return getIteratorDirect(anObject(call(this.keys, this.set)));\n+  },\n+  includes: function (it) {\n+    return call(this.has, this.set, it);\n+  }\n+};\n+\n+\u002F\u002F `GetSetRecord` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-set-methods\u002F#sec-getsetrecord\n+module.exports = function (obj) {\n+  anObject(obj);\n+  var numSize = +obj.size;\n+  \u002F\u002F NOTE: If size is undefined, then numSize will be NaN\n+  \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\n+  if (numSize !== numSize) throw new $TypeError(INVALID_SIZE);\n+  var intSize = toIntegerOrInfinity(numSize);\n+  if (intSize \u003C 0) throw new $RangeError(INVALID_SIZE);\n+  return new SetRecord(obj, intSize);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3838:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aSet = __webpack_require__(7080);\n+var size = __webpack_require__(5170);\n+var iterate = __webpack_require__(8469);\n+var getSetRecord = __webpack_require__(3789);\n+\n+\u002F\u002F `Set.prototype.isSubsetOf` method\n+\u002F\u002F https:\u002F\u002Ftc39.github.io\u002Fproposal-set-methods\u002F#Set.prototype.isSubsetOf\n+module.exports = function isSubsetOf(other) {\n+  var O = aSet(this);\n+  var otherRec = getSetRecord(other);\n+  if (size(O) > otherRec.size) return false;\n+  return iterate(O, function (e) {\n+    if (!otherRec.includes(e)) return false;\n+  }, true) !== false;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3853:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var isDisjointFrom = __webpack_require__(4449);\n+var setMethodAcceptSetLike = __webpack_require__(4916);\n+\n+var INCORRECT = !setMethodAcceptSetLike('isDisjointFrom', function (result) {\n+  return !result;\n+});\n+\n+\u002F\u002F `Set.prototype.isDisjointFrom` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.isdisjointfrom\n+$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n+  isDisjointFrom: isDisjointFrom\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3925:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isObject = __webpack_require__(34);\n+\n+module.exports = function (argument) {\n+  return isObject(argument) || argument === null;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3972:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isObject = __webpack_require__(34);\n+\n+var $String = String;\n+var $TypeError = TypeError;\n+\n+module.exports = function (argument) {\n+  if (argument === undefined || isObject(argument)) return argument;\n+  throw new $TypeError($String(argument) + ' is not an object or undefined');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4055:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var isObject = __webpack_require__(34);\n+\n+var document = globalThis.document;\n+\u002F\u002F typeof document.createElement is 'object' in old IE\n+var EXISTS = isObject(document) && isObject(document.createElement);\n+\n+module.exports = function (it) {\n+  return EXISTS ? document.createElement(it) : {};\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4114:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var toObject = __webpack_require__(8981);\n+var lengthOfArrayLike = __webpack_require__(6198);\n+var setArrayLength = __webpack_require__(4527);\n+var doesNotExceedSafeInteger = __webpack_require__(6837);\n+var fails = __webpack_require__(9039);\n+\n+var INCORRECT_TO_LENGTH = fails(function () {\n+  return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n+});\n+\n+\u002F\u002F V8 \u003C= 121 and Safari \u003C= 15.4; FF \u003C 23 throws InternalError\n+\u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=12681\n+var properErrorOnNonWritableLength = function () {\n+  try {\n+    \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\n+    Object.defineProperty([], 'length', { writable: false }).push();\n+  } catch (error) {\n+    return error instanceof TypeError;\n+  }\n+};\n+\n+var FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n+\n+\u002F\u002F `Array.prototype.push` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-array.prototype.push\n+$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n+  \u002F\u002F eslint-disable-next-line no-unused-vars -- required for `.length`\n+  push: function push(item) {\n+    var O = toObject(this);\n+    var len = lengthOfArrayLike(O);\n+    var argCount = arguments.length;\n+    doesNotExceedSafeInteger(len + argCount);\n+    for (var i = 0; i \u003C argCount; i++) {\n+      O[len] = arguments[i];\n+      len++;\n+    }\n+    setArrayLength(O, len);\n+    return len;\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4117:\n+\u002F***\u002F ((module) => {\n+\n+\n+\u002F\u002F we can't use just `it == null` since of `document.all` special case\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-IsHTMLDDA-internal-slot-aec\n+module.exports = function (it) {\n+  return it === null || it === undefined;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4149:\n+\u002F***\u002F ((module) => {\n+\n+\n+var $RangeError = RangeError;\n+\n+module.exports = function (it) {\n+  \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\n+  if (it === it) return it;\n+  throw new $RangeError('NaN is not allowed');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4154:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var classof = __webpack_require__(6955);\n+\n+var $TypeError = TypeError;\n+\n+\u002F\u002F Perform ? RequireInternalSlot(argument, [[TypedArrayName]])\n+\u002F\u002F If argument.[[TypedArrayName]] is not \"Uint8Array\", throw a TypeError exception\n+module.exports = function (argument) {\n+  if (classof(argument) === 'Uint8Array') return argument;\n+  throw new $TypeError('Argument is not an Uint8Array');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4204:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aSet = __webpack_require__(7080);\n+var add = (__webpack_require__(4402).add);\n+var clone = __webpack_require__(9286);\n+var getSetRecord = __webpack_require__(3789);\n+var iterateSimple = __webpack_require__(507);\n+\n+\u002F\u002F `Set.prototype.union` method\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\n+module.exports = function union(other) {\n+  var O = aSet(this);\n+  var keysIter = getSetRecord(other).getIterator();\n+  var result = clone(O);\n+  iterateSimple(keysIter, function (it) {\n+    add(result, it);\n+  });\n+  return result;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4209:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var wellKnownSymbol = __webpack_require__(8227);\n+var Iterators = __webpack_require__(6269);\n+\n+var ITERATOR = wellKnownSymbol('iterator');\n+var ArrayPrototype = Array.prototype;\n+\n+\u002F\u002F check on default Array iterator\n+module.exports = function (it) {\n+  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4215:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+\u002F* global Bun, Deno -- detection *\u002F\n+var globalThis = __webpack_require__(4576);\n+var userAgent = __webpack_require__(2839);\n+var classof = __webpack_require__(2195);\n+\n+var userAgentStartsWith = function (string) {\n+  return userAgent.slice(0, string.length) === string;\n+};\n+\n+module.exports = (function () {\n+  if (userAgentStartsWith('Bun\u002F')) return 'BUN';\n+  if (userAgentStartsWith('Cloudflare-Workers')) return 'CLOUDFLARE';\n+  if (userAgentStartsWith('Deno\u002F')) return 'DENO';\n+  if (userAgentStartsWith('Node.js\u002F')) return 'NODE';\n+  if (globalThis.Bun && typeof Bun.version == 'string') return 'BUN';\n+  if (globalThis.Deno && typeof Deno.version == 'object') return 'DENO';\n+  if (classof(globalThis.process) === 'process') return 'NODE';\n+  if (globalThis.window && globalThis.document) return 'BROWSER';\n+  return 'REST';\n+})();\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4270:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var call = __webpack_require__(9565);\n+var isCallable = __webpack_require__(4901);\n+var isObject = __webpack_require__(34);\n+\n+var $TypeError = TypeError;\n+\n+\u002F\u002F `OrdinaryToPrimitive` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-ordinarytoprimitive\n+module.exports = function (input, pref) {\n+  var fn, val;\n+  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n+  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n+  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n+  throw new $TypeError(\"Can't convert object to primitive value\");\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4376:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var classof = __webpack_require__(2195);\n+\n+\u002F\u002F `IsArray` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-isarray\n+\u002F\u002F eslint-disable-next-line es\u002Fno-array-isarray -- safe\n+module.exports = Array.isArray || function isArray(argument) {\n+  return classof(argument) === 'Array';\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4402:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+\n+\u002F\u002F eslint-disable-next-line es\u002Fno-set -- safe\n+var SetPrototype = Set.prototype;\n+\n+module.exports = {\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-set -- safe\n+  Set: Set,\n+  add: uncurryThis(SetPrototype.add),\n+  has: uncurryThis(SetPrototype.has),\n+  remove: uncurryThis(SetPrototype['delete']),\n+  proto: SetPrototype\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4449:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aSet = __webpack_require__(7080);\n+var has = (__webpack_require__(4402).has);\n+var size = __webpack_require__(5170);\n+var getSetRecord = __webpack_require__(3789);\n+var iterateSet = __webpack_require__(8469);\n+var iterateSimple = __webpack_require__(507);\n+var iteratorClose = __webpack_require__(9539);\n+\n+\u002F\u002F `Set.prototype.isDisjointFrom` method\n+\u002F\u002F https:\u002F\u002Ftc39.github.io\u002Fproposal-set-methods\u002F#Set.prototype.isDisjointFrom\n+module.exports = function isDisjointFrom(other) {\n+  var O = aSet(this);\n+  var otherRec = getSetRecord(other);\n+  if (size(O) \u003C= otherRec.size) return iterateSet(O, function (e) {\n+    if (otherRec.includes(e)) return false;\n+  }, true) !== false;\n+  var iterator = otherRec.getIterator();\n+  return iterateSimple(iterator, function (e) {\n+    if (has(O, e)) return iteratorClose(iterator, 'normal', false);\n+  }) !== false;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4483:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var getBuiltInNodeModule = __webpack_require__(9429);\n+var PROPER_STRUCTURED_CLONE_TRANSFER = __webpack_require__(1548);\n+\n+var structuredClone = globalThis.structuredClone;\n+var $ArrayBuffer = globalThis.ArrayBuffer;\n+var $MessageChannel = globalThis.MessageChannel;\n+var detach = false;\n+var WorkerThreads, channel, buffer, $detach;\n+\n+if (PROPER_STRUCTURED_CLONE_TRANSFER) {\n+  detach = function (transferable) {\n+    structuredClone(transferable, { transfer: [transferable] });\n+  };\n+} else if ($ArrayBuffer) try {\n+  if (!$MessageChannel) {\n+    WorkerThreads = getBuiltInNodeModule('worker_threads');\n+    if (WorkerThreads) $MessageChannel = WorkerThreads.MessageChannel;\n+  }\n+\n+  if ($MessageChannel) {\n+    channel = new $MessageChannel();\n+    buffer = new $ArrayBuffer(2);\n+\n+    $detach = function (transferable) {\n+      channel.port1.postMessage(null, [transferable]);\n+    };\n+\n+    if (buffer.byteLength === 2) {\n+      $detach(buffer);\n+      if (buffer.byteLength === 0) detach = $detach;\n+    }\n+  }\n+} catch (error) { \u002F* empty *\u002F }\n+\n+module.exports = detach;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4495:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+\u002F* eslint-disable es\u002Fno-symbol -- required for testing *\u002F\n+var V8_VERSION = __webpack_require__(9519);\n+var fails = __webpack_require__(9039);\n+var globalThis = __webpack_require__(4576);\n+\n+var $String = globalThis.String;\n+\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertysymbols -- required for testing\n+module.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n+  var symbol = Symbol('symbol detection');\n+  \u002F\u002F Chrome 38 Symbol has incorrect toString conversion\n+  \u002F\u002F `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n+  \u002F\u002F nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n+  \u002F\u002F of course, fail.\n+  return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n+    \u002F\u002F Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n+    !Symbol.sham && V8_VERSION && V8_VERSION \u003C 41;\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4527:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var isArray = __webpack_require__(4376);\n+\n+var $TypeError = TypeError;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n+\n+\u002F\u002F Safari \u003C 13 does not throw an error in this case\n+var SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n+  \u002F\u002F makes no sense without proper strict mode support\n+  if (this !== undefined) return true;\n+  try {\n+    \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\n+    Object.defineProperty([], 'length', { writable: false }).length = 1;\n+  } catch (error) {\n+    return error instanceof TypeError;\n+  }\n+}();\n+\n+module.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n+  if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n+    throw new $TypeError('Cannot set read only .length');\n+  } return O.length = length;\n+} : function (O, length) {\n+  return O.length = length;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4549:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fecma262\u002Fpull\u002F3467\n+module.exports = function (METHOD_NAME, ExpectedError) {\n+  var Iterator = globalThis.Iterator;\n+  var IteratorPrototype = Iterator && Iterator.prototype;\n+  var method = IteratorPrototype && IteratorPrototype[METHOD_NAME];\n+\n+  var CLOSED = false;\n+\n+  if (method) try {\n+    method.call({\n+      next: function () { return { done: true }; },\n+      'return': function () { CLOSED = true; }\n+    }, -1);\n+  } catch (error) {\n+    \u002F\u002F https:\u002F\u002Fbugs.webkit.org\u002Fshow_bug.cgi?id=291195\n+    if (!(error instanceof ExpectedError)) CLOSED = false;\n+  }\n+\n+  if (!CLOSED) return method;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4576:\n+\u002F***\u002F (function(module) {\n+\n+\n+var check = function (it) {\n+  return it && it.Math === Math && it;\n+};\n+\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F86#issuecomment-115759028\n+module.exports =\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-global-this -- safe\n+  check(typeof globalThis == 'object' && globalThis) ||\n+  check(typeof window == 'object' && window) ||\n+  \u002F\u002F eslint-disable-next-line no-restricted-globals -- safe\n+  check(typeof self == 'object' && self) ||\n+  check(typeof global == 'object' && global) ||\n+  check(typeof this == 'object' && this) ||\n+  \u002F\u002F eslint-disable-next-line no-new-func -- fallback\n+  (function () { return this; })() || Function('return this')();\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4603:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var defineBuiltIn = __webpack_require__(6840);\n+var uncurryThis = __webpack_require__(9504);\n+var toString = __webpack_require__(655);\n+var validateArgumentsLength = __webpack_require__(2812);\n+\n+var $URLSearchParams = URLSearchParams;\n+var URLSearchParamsPrototype = $URLSearchParams.prototype;\n+var append = uncurryThis(URLSearchParamsPrototype.append);\n+var $delete = uncurryThis(URLSearchParamsPrototype['delete']);\n+var forEach = uncurryThis(URLSearchParamsPrototype.forEach);\n+var push = uncurryThis([].push);\n+var params = new $URLSearchParams('a=1&a=2&b=3');\n+\n+params['delete']('a', 1);\n+\u002F\u002F `undefined` case is a Chromium 117 bug\n+\u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=14222\n+params['delete']('b', undefined);\n+\n+if (params + '' !== 'a=2') {\n+  defineBuiltIn(URLSearchParamsPrototype, 'delete', function (name \u002F* , value *\u002F) {\n+    var length = arguments.length;\n+    var $value = length \u003C 2 ? undefined : arguments[1];\n+    if (length && $value === undefined) return $delete(this, name);\n+    var entries = [];\n+    forEach(this, function (v, k) { \u002F\u002F also validates `this`\n+      push(entries, { key: k, value: v });\n+    });\n+    validateArgumentsLength(length, 1);\n+    var key = toString(name);\n+    var value = toString($value);\n+    var index = 0;\n+    var dindex = 0;\n+    var found = false;\n+    var entriesLength = entries.length;\n+    var entry;\n+    while (index \u003C entriesLength) {\n+      entry = entries[index++];\n+      if (found || entry.key === key) {\n+        found = true;\n+        $delete(this, entry.key);\n+      } else dindex++;\n+    }\n+    while (dindex \u003C entriesLength) {\n+      entry = entries[dindex++];\n+      if (!(entry.key === key && entry.value === value)) append(this, entry.key, entry.value);\n+    }\n+  }, { enumerable: true, unsafe: true });\n+}\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4628:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var newPromiseCapabilityModule = __webpack_require__(6043);\n+\n+\u002F\u002F `Promise.withResolvers` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-promise.withResolvers\n+$({ target: 'Promise', stat: true }, {\n+  withResolvers: function withResolvers() {\n+    var promiseCapability = newPromiseCapabilityModule.f(this);\n+    return {\n+      promise: promiseCapability.promise,\n+      resolve: promiseCapability.resolve,\n+      reject: promiseCapability.reject\n+    };\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4659:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var definePropertyModule = __webpack_require__(4913);\n+var createPropertyDescriptor = __webpack_require__(6980);\n+\n+module.exports = function (object, key, value) {\n+  if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));\n+  else object[key] = value;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4901:\n+\u002F***\u002F ((module) => {\n+\n+\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-IsHTMLDDA-internal-slot\n+var documentAll = typeof document == 'object' && document.all;\n+\n+\u002F\u002F `IsCallable` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iscallable\n+\u002F\u002F eslint-disable-next-line unicorn\u002Fno-typeof-undefined -- required for testing\n+module.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n+  return typeof argument == 'function' || argument === documentAll;\n+} : function (argument) {\n+  return typeof argument == 'function';\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4913:\n+\u002F***\u002F ((__unused_webpack_module, exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var IE8_DOM_DEFINE = __webpack_require__(5917);\n+var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(8686);\n+var anObject = __webpack_require__(8551);\n+var toPropertyKey = __webpack_require__(6969);\n+\n+var $TypeError = TypeError;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\n+var $defineProperty = Object.defineProperty;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n+var ENUMERABLE = 'enumerable';\n+var CONFIGURABLE = 'configurable';\n+var WRITABLE = 'writable';\n+\n+\u002F\u002F `Object.defineProperty` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.defineproperty\n+exports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n+  anObject(O);\n+  P = toPropertyKey(P);\n+  anObject(Attributes);\n+  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n+    var current = $getOwnPropertyDescriptor(O, P);\n+    if (current && current[WRITABLE]) {\n+      O[P] = Attributes.value;\n+      Attributes = {\n+        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n+        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n+        writable: false\n+      };\n+    }\n+  } return $defineProperty(O, P, Attributes);\n+} : $defineProperty : function defineProperty(O, P, Attributes) {\n+  anObject(O);\n+  P = toPropertyKey(P);\n+  anObject(Attributes);\n+  if (IE8_DOM_DEFINE) try {\n+    return $defineProperty(O, P, Attributes);\n+  } catch (error) { \u002F* empty *\u002F }\n+  if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n+  if ('value' in Attributes) O[P] = Attributes.value;\n+  return O;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4916:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var getBuiltIn = __webpack_require__(7751);\n+\n+var createSetLike = function (size) {\n+  return {\n+    size: size,\n+    has: function () {\n+      return false;\n+    },\n+    keys: function () {\n+      return {\n+        next: function () {\n+          return { done: true };\n+        }\n+      };\n+    }\n+  };\n+};\n+\n+var createSetLikeWithInfinitySize = function (size) {\n+  return {\n+    size: size,\n+    has: function () {\n+      return true;\n+    },\n+    keys: function () {\n+      throw new Error('e');\n+    }\n+  };\n+};\n+\n+module.exports = function (name, callback) {\n+  var Set = getBuiltIn('Set');\n+  try {\n+    new Set()[name](createSetLike(0));\n+    try {\n+      \u002F\u002F late spec change, early WebKit ~ Safari 17 implementation does not pass it\n+      \u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\u002Fpull\u002F88\n+      \u002F\u002F also covered engines with\n+      \u002F\u002F https:\u002F\u002Fbugs.webkit.org\u002Fshow_bug.cgi?id=272679\n+      new Set()[name](createSetLike(-1));\n+      return false;\n+    } catch (error2) {\n+      if (!callback) return true;\n+      \u002F\u002F early V8 implementation bug\n+      \u002F\u002F https:\u002F\u002Fissues.chromium.org\u002Fissues\u002F351332634\n+      try {\n+        new Set()[name](createSetLikeWithInfinitySize(-Infinity));\n+        return false;\n+      } catch (error) {\n+        var set = new Set();\n+        set.add(1);\n+        set.add(2);\n+        return callback(set[name](createSetLikeWithInfinitySize(Infinity)));\n+      }\n+    }\n+  } catch (error) {\n+    return false;\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4979:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var globalThis = __webpack_require__(4576);\n+var getBuiltIn = __webpack_require__(7751);\n+var createPropertyDescriptor = __webpack_require__(6980);\n+var defineProperty = (__webpack_require__(4913).f);\n+var hasOwn = __webpack_require__(9297);\n+var anInstance = __webpack_require__(679);\n+var inheritIfRequired = __webpack_require__(3167);\n+var normalizeStringArgument = __webpack_require__(2603);\n+var DOMExceptionConstants = __webpack_require__(5002);\n+var clearErrorStack = __webpack_require__(8574);\n+var DESCRIPTORS = __webpack_require__(3724);\n+var IS_PURE = __webpack_require__(6395);\n+\n+var DOM_EXCEPTION = 'DOMException';\n+var Error = getBuiltIn('Error');\n+var NativeDOMException = getBuiltIn(DOM_EXCEPTION);\n+\n+var $DOMException = function DOMException() {\n+  anInstance(this, DOMExceptionPrototype);\n+  var argumentsLength = arguments.length;\n+  var message = normalizeStringArgument(argumentsLength \u003C 1 ? undefined : arguments[0]);\n+  var name = normalizeStringArgument(argumentsLength \u003C 2 ? undefined : arguments[1], 'Error');\n+  var that = new NativeDOMException(message, name);\n+  var error = new Error(message);\n+  error.name = DOM_EXCEPTION;\n+  defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\n+  inheritIfRequired(that, this, $DOMException);\n+  return that;\n+};\n+\n+var DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;\n+\n+var ERROR_HAS_STACK = 'stack' in new Error(DOM_EXCEPTION);\n+var DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);\n+\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+var descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(globalThis, DOM_EXCEPTION);\n+\n+\u002F\u002F Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002FJarred-Sumner\u002Fbun\u002Fissues\u002F399\n+var BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);\n+\n+var FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;\n+\n+\u002F\u002F `DOMException` constructor patch for `.stack` where it's required\n+\u002F\u002F https:\u002F\u002Fwebidl.spec.whatwg.org\u002F#es-DOMException-specialness\n+$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { \u002F\u002F TODO: fix export logic\n+  DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\n+});\n+\n+var PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\n+var PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\n+\n+if (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {\n+  if (!IS_PURE) {\n+    defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException));\n+  }\n+\n+  for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\n+    var constant = DOMExceptionConstants[key];\n+    var constantName = constant.s;\n+    if (!hasOwn(PolyfilledDOMException, constantName)) {\n+      defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));\n+    }\n+  }\n+}\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5002:\n+\u002F***\u002F ((module) => {\n+\n+\n+module.exports = {\n+  IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },\n+  DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },\n+  HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },\n+  WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 },\n+  InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 },\n+  NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 },\n+  NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 },\n+  NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 },\n+  NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 },\n+  InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 },\n+  InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 },\n+  SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 },\n+  InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 },\n+  NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 },\n+  InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 },\n+  ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 },\n+  TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 },\n+  SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 },\n+  NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 },\n+  AbortError: { s: 'ABORT_ERR', c: 20, m: 1 },\n+  URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 },\n+  QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 },\n+  TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 },\n+  InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 },\n+  DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5024:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var symmetricDifference = __webpack_require__(3650);\n+var setMethodAcceptSetLike = __webpack_require__(4916);\n+\n+\u002F\u002F `Set.prototype.symmetricDifference` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.symmetricdifference\n+$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('symmetricDifference') }, {\n+  symmetricDifference: symmetricDifference\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5031:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var getBuiltIn = __webpack_require__(7751);\n+var uncurryThis = __webpack_require__(9504);\n+var getOwnPropertyNamesModule = __webpack_require__(8480);\n+var getOwnPropertySymbolsModule = __webpack_require__(3717);\n+var anObject = __webpack_require__(8551);\n+\n+var concat = uncurryThis([].concat);\n+\n+\u002F\u002F all object keys, includes non-enumerable and symbols\n+module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n+  var keys = getOwnPropertyNamesModule.f(anObject(it));\n+  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n+  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5169:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isDetached = __webpack_require__(3238);\n+\n+var $TypeError = TypeError;\n+\n+module.exports = function (it) {\n+  if (isDetached(it)) throw new $TypeError('ArrayBuffer is detached');\n+  return it;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5170:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThisAccessor = __webpack_require__(6706);\n+var SetHelpers = __webpack_require__(4402);\n+\n+module.exports = uncurryThisAccessor(SetHelpers.proto, 'size', 'get') || function (set) {\n+  return set.size;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5370:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var lengthOfArrayLike = __webpack_require__(6198);\n+\n+module.exports = function (Constructor, list, $length) {\n+  var index = 0;\n+  var length = arguments.length > 2 ? $length : lengthOfArrayLike(list);\n+  var result = new Constructor(length);\n+  while (length > index) result[index] = list[index++];\n+  return result;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5397:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+\u002F\u002F toObject with fallback for non-array-like ES3 strings\n+var IndexedObject = __webpack_require__(7055);\n+var requireObjectCoercible = __webpack_require__(7750);\n+\n+module.exports = function (it) {\n+  return IndexedObject(requireObjectCoercible(it));\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5610:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var toIntegerOrInfinity = __webpack_require__(1291);\n+\n+var max = Math.max;\n+var min = Math.min;\n+\n+\u002F\u002F Helper for a popular repeating case of the spec:\n+\u002F\u002F Let integer be ? ToInteger(index).\n+\u002F\u002F If integer \u003C 0, let result be max((length + integer), 0); else let result be min(integer, length).\n+module.exports = function (index, length) {\n+  var integer = toIntegerOrInfinity(index);\n+  return integer \u003C 0 ? max(integer + length, 0) : min(integer, length);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5623:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var globalThis = __webpack_require__(4576);\n+var uncurryThis = __webpack_require__(9504);\n+var anUint8Array = __webpack_require__(4154);\n+var notDetached = __webpack_require__(5169);\n+\n+var numberToString = uncurryThis(1.0.toString);\n+\n+\u002F\u002F `Uint8Array.prototype.toHex` method\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-arraybuffer-base64\n+if (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {\n+  toHex: function toHex() {\n+    anUint8Array(this);\n+    notDetached(this.buffer);\n+    var result = '';\n+    for (var i = 0, length = this.length; i \u003C length; i++) {\n+      var hex = numberToString(this[i], 16);\n+      result += hex.length === 1 ? '0' + hex : hex;\n+    }\n+    return result;\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5636:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var uncurryThis = __webpack_require__(9504);\n+var uncurryThisAccessor = __webpack_require__(6706);\n+var toIndex = __webpack_require__(7696);\n+var notDetached = __webpack_require__(5169);\n+var arrayBufferByteLength = __webpack_require__(7394);\n+var detachTransferable = __webpack_require__(4483);\n+var PROPER_STRUCTURED_CLONE_TRANSFER = __webpack_require__(1548);\n+\n+var structuredClone = globalThis.structuredClone;\n+var ArrayBuffer = globalThis.ArrayBuffer;\n+var DataView = globalThis.DataView;\n+var min = Math.min;\n+var ArrayBufferPrototype = ArrayBuffer.prototype;\n+var DataViewPrototype = DataView.prototype;\n+var slice = uncurryThis(ArrayBufferPrototype.slice);\n+var isResizable = uncurryThisAccessor(ArrayBufferPrototype, 'resizable', 'get');\n+var maxByteLength = uncurryThisAccessor(ArrayBufferPrototype, 'maxByteLength', 'get');\n+var getInt8 = uncurryThis(DataViewPrototype.getInt8);\n+var setInt8 = uncurryThis(DataViewPrototype.setInt8);\n+\n+module.exports = (PROPER_STRUCTURED_CLONE_TRANSFER || detachTransferable) && function (arrayBuffer, newLength, preserveResizability) {\n+  var byteLength = arrayBufferByteLength(arrayBuffer);\n+  var newByteLength = newLength === undefined ? byteLength : toIndex(newLength);\n+  var fixedLength = !isResizable || !isResizable(arrayBuffer);\n+  var newBuffer;\n+  notDetached(arrayBuffer);\n+  if (PROPER_STRUCTURED_CLONE_TRANSFER) {\n+    arrayBuffer = structuredClone(arrayBuffer, { transfer: [arrayBuffer] });\n+    if (byteLength === newByteLength && (preserveResizability || fixedLength)) return arrayBuffer;\n+  }\n+  if (byteLength >= newByteLength && (!preserveResizability || fixedLength)) {\n+    newBuffer = slice(arrayBuffer, 0, newByteLength);\n+  } else {\n+    var options = preserveResizability && !fixedLength && maxByteLength ? { maxByteLength: maxByteLength(arrayBuffer) } : undefined;\n+    newBuffer = new ArrayBuffer(newByteLength, options);\n+    var a = new DataView(arrayBuffer);\n+    var b = new DataView(newBuffer);\n+    var copyLength = min(newByteLength, byteLength);\n+    for (var i = 0; i \u003C copyLength; i++) setInt8(b, i, getInt8(a, i));\n+  }\n+  if (!PROPER_STRUCTURED_CLONE_TRANSFER) detachTransferable(arrayBuffer);\n+  return newBuffer;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5745:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var store = __webpack_require__(7629);\n+\n+module.exports = function (key, value) {\n+  return store[key] || (store[key] = value || {});\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5781:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var getBuiltIn = __webpack_require__(7751);\n+var validateArgumentsLength = __webpack_require__(2812);\n+var toString = __webpack_require__(655);\n+var USE_NATIVE_URL = __webpack_require__(7416);\n+\n+var URL = getBuiltIn('URL');\n+\n+\u002F\u002F `URL.parse` method\n+\u002F\u002F https:\u002F\u002Furl.spec.whatwg.org\u002F#dom-url-canparse\n+$({ target: 'URL', stat: true, forced: !USE_NATIVE_URL }, {\n+  parse: function parse(url) {\n+    var length = validateArgumentsLength(arguments.length, 1);\n+    var urlString = toString(url);\n+    var base = length \u003C 2 || arguments[1] === undefined ? undefined : toString(arguments[1]);\n+    try {\n+      return new URL(urlString, base);\n+    } catch (error) {\n+      return null;\n+    }\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5876:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var isSubsetOf = __webpack_require__(3838);\n+var setMethodAcceptSetLike = __webpack_require__(4916);\n+\n+var INCORRECT = !setMethodAcceptSetLike('isSubsetOf', function (result) {\n+  return result;\n+});\n+\n+\u002F\u002F `Set.prototype.isSubsetOf` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.issubsetof\n+$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n+  isSubsetOf: isSubsetOf\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5917:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var fails = __webpack_require__(9039);\n+var createElement = __webpack_require__(4055);\n+\n+\u002F\u002F Thanks to IE8 for its funny defineProperty\n+module.exports = !DESCRIPTORS && !fails(function () {\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- required for testing\n+  return Object.defineProperty(createElement('div'), 'a', {\n+    get: function () { return 7; }\n+  }).a !== 7;\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5966:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aCallable = __webpack_require__(9306);\n+var isNullOrUndefined = __webpack_require__(4117);\n+\n+\u002F\u002F `GetMethod` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-getmethod\n+module.exports = function (V, P) {\n+  var func = V[P];\n+  return isNullOrUndefined(func) ? undefined : aCallable(func);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6043:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aCallable = __webpack_require__(9306);\n+\n+var $TypeError = TypeError;\n+\n+var PromiseCapability = function (C) {\n+  var resolve, reject;\n+  this.promise = new C(function ($$resolve, $$reject) {\n+    if (resolve !== undefined || reject !== undefined) throw new $TypeError('Bad Promise constructor');\n+    resolve = $$resolve;\n+    reject = $$reject;\n+  });\n+  this.resolve = aCallable(resolve);\n+  this.reject = aCallable(reject);\n+};\n+\n+\u002F\u002F `NewPromiseCapability` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-newpromisecapability\n+module.exports.f = function (C) {\n+  return new PromiseCapability(C);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6080:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(7476);\n+var aCallable = __webpack_require__(9306);\n+var NATIVE_BIND = __webpack_require__(616);\n+\n+var bind = uncurryThis(uncurryThis.bind);\n+\n+\u002F\u002F optional \u002F simple context binding\n+module.exports = function (fn, that) {\n+  aCallable(fn);\n+  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (\u002F* ...args *\u002F) {\n+    return fn.apply(that, arguments);\n+  };\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6119:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var shared = __webpack_require__(5745);\n+var uid = __webpack_require__(3392);\n+\n+var keys = shared('keys');\n+\n+module.exports = function (key) {\n+  return keys[key] || (keys[key] = uid(key));\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6193:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var ENVIRONMENT = __webpack_require__(4215);\n+\n+module.exports = ENVIRONMENT === 'NODE';\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6198:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var toLength = __webpack_require__(8014);\n+\n+\u002F\u002F `LengthOfArrayLike` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-lengthofarraylike\n+module.exports = function (obj) {\n+  return toLength(obj.length);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6269:\n+\u002F***\u002F ((module) => {\n+\n+\n+module.exports = {};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6279:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var defineBuiltIn = __webpack_require__(6840);\n+\n+module.exports = function (target, src, options) {\n+  for (var key in src) defineBuiltIn(target, key, src[key], options);\n+  return target;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6319:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var anObject = __webpack_require__(8551);\n+var iteratorClose = __webpack_require__(9539);\n+\n+\u002F\u002F call something on iterator step with safe closing on error\n+module.exports = function (iterator, fn, value, ENTRIES) {\n+  try {\n+    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n+  } catch (error) {\n+    iteratorClose(iterator, 'throw', error);\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6395:\n+\u002F***\u002F ((module) => {\n+\n+\n+module.exports = false;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6518:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var getOwnPropertyDescriptor = (__webpack_require__(7347).f);\n+var createNonEnumerableProperty = __webpack_require__(6699);\n+var defineBuiltIn = __webpack_require__(6840);\n+var defineGlobalProperty = __webpack_require__(9433);\n+var copyConstructorProperties = __webpack_require__(7740);\n+var isForced = __webpack_require__(2796);\n+\n+\u002F*\n+  options.target         - name of the target object\n+  options.global         - target is the global object\n+  options.stat           - export as static methods of target\n+  options.proto          - export as prototype methods of target\n+  options.real           - real prototype method for the `pure` version\n+  options.forced         - export even if the native feature is available\n+  options.bind           - bind methods to the target, required for the `pure` version\n+  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version\n+  options.unsafe         - use the simple assignment of property instead of delete + defineProperty\n+  options.sham           - add a flag to not completely full polyfills\n+  options.enumerable     - export as enumerable property\n+  options.dontCallGetSet - prevent calling a getter on target\n+  options.name           - the .name of the function if it does not match the key\n+*\u002F\n+module.exports = function (options, source) {\n+  var TARGET = options.target;\n+  var GLOBAL = options.global;\n+  var STATIC = options.stat;\n+  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n+  if (GLOBAL) {\n+    target = globalThis;\n+  } else if (STATIC) {\n+    target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\n+  } else {\n+    target = globalThis[TARGET] && globalThis[TARGET].prototype;\n+  }\n+  if (target) for (key in source) {\n+    sourceProperty = source[key];\n+    if (options.dontCallGetSet) {\n+      descriptor = getOwnPropertyDescriptor(target, key);\n+      targetProperty = descriptor && descriptor.value;\n+    } else targetProperty = target[key];\n+    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n+    \u002F\u002F contained in target\n+    if (!FORCED && targetProperty !== undefined) {\n+      if (typeof sourceProperty == typeof targetProperty) continue;\n+      copyConstructorProperties(sourceProperty, targetProperty);\n+    }\n+    \u002F\u002F add a flag to not completely full polyfills\n+    if (options.sham || (targetProperty && targetProperty.sham)) {\n+      createNonEnumerableProperty(sourceProperty, 'sham', true);\n+    }\n+    defineBuiltIn(target, key, sourceProperty, options);\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6573:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var defineBuiltInAccessor = __webpack_require__(2106);\n+var isDetached = __webpack_require__(3238);\n+\n+var ArrayBufferPrototype = ArrayBuffer.prototype;\n+\n+\u002F\u002F `ArrayBuffer.prototype.detached` getter\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-get-arraybuffer.prototype.detached\n+if (DESCRIPTORS && !('detached' in ArrayBufferPrototype)) {\n+  defineBuiltInAccessor(ArrayBufferPrototype, 'detached', {\n+    configurable: true,\n+    get: function detached() {\n+      return isDetached(this);\n+    }\n+  });\n+}\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6699:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var definePropertyModule = __webpack_require__(4913);\n+var createPropertyDescriptor = __webpack_require__(6980);\n+\n+module.exports = DESCRIPTORS ? function (object, key, value) {\n+  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n+} : function (object, key, value) {\n+  object[key] = value;\n+  return object;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6706:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+var aCallable = __webpack_require__(9306);\n+\n+module.exports = function (object, key, method) {\n+  try {\n+    \u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+    return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n+  } catch (error) { \u002F* empty *\u002F }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6801:\n+\u002F***\u002F ((__unused_webpack_module, exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(8686);\n+var definePropertyModule = __webpack_require__(4913);\n+var anObject = __webpack_require__(8551);\n+var toIndexedObject = __webpack_require__(5397);\n+var objectKeys = __webpack_require__(1072);\n+\n+\u002F\u002F `Object.defineProperties` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.defineproperties\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperties -- safe\n+exports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n+  anObject(O);\n+  var props = toIndexedObject(Properties);\n+  var keys = objectKeys(Properties);\n+  var length = keys.length;\n+  var index = 0;\n+  var key;\n+  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n+  return O;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6823:\n+\u002F***\u002F ((module) => {\n+\n+\n+var $String = String;\n+\n+module.exports = function (argument) {\n+  try {\n+    return $String(argument);\n+  } catch (error) {\n+    return 'Object';\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6837:\n+\u002F***\u002F ((module) => {\n+\n+\n+var $TypeError = TypeError;\n+var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; \u002F\u002F 2 ** 53 - 1 == 9007199254740991\n+\n+module.exports = function (it) {\n+  if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n+  return it;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6840:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isCallable = __webpack_require__(4901);\n+var definePropertyModule = __webpack_require__(4913);\n+var makeBuiltIn = __webpack_require__(283);\n+var defineGlobalProperty = __webpack_require__(9433);\n+\n+module.exports = function (O, key, value, options) {\n+  if (!options) options = {};\n+  var simple = options.enumerable;\n+  var name = options.name !== undefined ? options.name : key;\n+  if (isCallable(value)) makeBuiltIn(value, name, options);\n+  if (options.global) {\n+    if (simple) O[key] = value;\n+    else defineGlobalProperty(key, value);\n+  } else {\n+    try {\n+      if (!options.unsafe) delete O[key];\n+      else if (O[key]) simple = true;\n+    } catch (error) { \u002F* empty *\u002F }\n+    if (simple) O[key] = value;\n+    else definePropertyModule.f(O, key, {\n+      value: value,\n+      enumerable: false,\n+      configurable: !options.nonConfigurable,\n+      writable: !options.nonWritable\n+    });\n+  } return O;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6955:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var TO_STRING_TAG_SUPPORT = __webpack_require__(2140);\n+var isCallable = __webpack_require__(4901);\n+var classofRaw = __webpack_require__(2195);\n+var wellKnownSymbol = __webpack_require__(8227);\n+\n+var TO_STRING_TAG = wellKnownSymbol('toStringTag');\n+var $Object = Object;\n+\n+\u002F\u002F ES3 wrong here\n+var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n+\n+\u002F\u002F fallback for IE11 Script Access Denied error\n+var tryGet = function (it, key) {\n+  try {\n+    return it[key];\n+  } catch (error) { \u002F* empty *\u002F }\n+};\n+\n+\u002F\u002F getting tag from ES6+ `Object.prototype.toString`\n+module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n+  var O, tag, result;\n+  return it === undefined ? 'Undefined' : it === null ? 'Null'\n+    \u002F\u002F @@toStringTag case\n+    : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n+    \u002F\u002F builtinTag case\n+    : CORRECT_ARGUMENTS ? classofRaw(O)\n+    \u002F\u002F ES3 arguments fallback\n+    : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6969:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var toPrimitive = __webpack_require__(2777);\n+var isSymbol = __webpack_require__(757);\n+\n+\u002F\u002F `ToPropertyKey` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-topropertykey\n+module.exports = function (argument) {\n+  var key = toPrimitive(argument, 'string');\n+  return isSymbol(key) ? key : key + '';\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6980:\n+\u002F***\u002F ((module) => {\n+\n+\n+module.exports = function (bitmap, value) {\n+  return {\n+    enumerable: !(bitmap & 1),\n+    configurable: !(bitmap & 2),\n+    writable: !(bitmap & 4),\n+    value: value\n+  };\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7040:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+\u002F* eslint-disable es\u002Fno-symbol -- required for testing *\u002F\n+var NATIVE_SYMBOL = __webpack_require__(4495);\n+\n+module.exports = NATIVE_SYMBOL &&\n+  !Symbol.sham &&\n+  typeof Symbol.iterator == 'symbol';\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7055:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+var fails = __webpack_require__(9039);\n+var classof = __webpack_require__(2195);\n+\n+var $Object = Object;\n+var split = uncurryThis(''.split);\n+\n+\u002F\u002F fallback for non-array-like ES3 and non-enumerable old V8 strings\n+module.exports = fails(function () {\n+  \u002F\u002F throws an error in rhino, see https:\u002F\u002Fgithub.com\u002Fmozilla\u002Frhino\u002Fissues\u002F346\n+  \u002F\u002F eslint-disable-next-line no-prototype-builtins -- safe\n+  return !$Object('z').propertyIsEnumerable(0);\n+}) ? function (it) {\n+  return classof(it) === 'String' ? split(it, '') : $Object(it);\n+} : $Object;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7080:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var has = (__webpack_require__(4402).has);\n+\n+\u002F\u002F Perform ? RequireInternalSlot(M, [[SetData]])\n+module.exports = function (it) {\n+  has(it);\n+  return it;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7347:\n+\u002F***\u002F ((__unused_webpack_module, exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var call = __webpack_require__(9565);\n+var propertyIsEnumerableModule = __webpack_require__(8773);\n+var createPropertyDescriptor = __webpack_require__(6980);\n+var toIndexedObject = __webpack_require__(5397);\n+var toPropertyKey = __webpack_require__(6969);\n+var hasOwn = __webpack_require__(9297);\n+var IE8_DOM_DEFINE = __webpack_require__(5917);\n+\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n+\n+\u002F\u002F `Object.getOwnPropertyDescriptor` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.getownpropertydescriptor\n+exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n+  O = toIndexedObject(O);\n+  P = toPropertyKey(P);\n+  if (IE8_DOM_DEFINE) try {\n+    return $getOwnPropertyDescriptor(O, P);\n+  } catch (error) { \u002F* empty *\u002F }\n+  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7394:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var uncurryThisAccessor = __webpack_require__(6706);\n+var classof = __webpack_require__(2195);\n+\n+var ArrayBuffer = globalThis.ArrayBuffer;\n+var TypeError = globalThis.TypeError;\n+\n+\u002F\u002F Includes\n+\u002F\u002F - Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).\n+\u002F\u002F - If IsSharedArrayBuffer(O) is true, throw a TypeError exception.\n+module.exports = ArrayBuffer && uncurryThisAccessor(ArrayBuffer.prototype, 'byteLength', 'get') || function (O) {\n+  if (classof(O) !== 'ArrayBuffer') throw new TypeError('ArrayBuffer expected');\n+  return O.byteLength;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7416:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var fails = __webpack_require__(9039);\n+var wellKnownSymbol = __webpack_require__(8227);\n+var DESCRIPTORS = __webpack_require__(3724);\n+var IS_PURE = __webpack_require__(6395);\n+\n+var ITERATOR = wellKnownSymbol('iterator');\n+\n+module.exports = !fails(function () {\n+  \u002F\u002F eslint-disable-next-line unicorn\u002Frelative-url-style -- required for testing\n+  var url = new URL('b?a=1&b=2&c=3', 'https:\u002F\u002Fa');\n+  var params = url.searchParams;\n+  var params2 = new URLSearchParams('a=1&a=2&b=3');\n+  var result = '';\n+  url.pathname = 'c%20d';\n+  params.forEach(function (value, key) {\n+    params['delete']('b');\n+    result += key + value;\n+  });\n+  params2['delete']('a', 2);\n+  \u002F\u002F `undefined` case is a Chromium 117 bug\n+  \u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=14222\n+  params2['delete']('b', undefined);\n+  return (IS_PURE && (!url.toJSON || !params2.has('a', 1) || params2.has('a', 2) || !params2.has('a', undefined) || params2.has('b')))\n+    || (!params.size && (IS_PURE || !DESCRIPTORS))\n+    || !params.sort\n+    || url.href !== 'https:\u002F\u002Fa\u002Fc%20d?a=1&c=3'\n+    || params.get('c') !== '3'\n+    || String(new URLSearchParams('?a=1')) !== 'a=1'\n+    || !params[ITERATOR]\n+    \u002F\u002F throws in Edge\n+    || new URL('https:\u002F\u002Fa@b').username !== 'a'\n+    || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n+    \u002F\u002F not punycoded in Edge\n+    || new URL('https:\u002F\u002Fтест').host !== 'xn--e1aybc'\n+    \u002F\u002F not escaped in Chrome 62-\n+    || new URL('https:\u002F\u002Fa#б').hash !== '#%D0%B1'\n+    \u002F\u002F fails in Chrome 66-\n+    || result !== 'a1c3'\n+    \u002F\u002F throws in Safari\n+    || new URL('https:\u002F\u002Fx', undefined).host !== 'x';\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7476:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var classofRaw = __webpack_require__(2195);\n+var uncurryThis = __webpack_require__(9504);\n+\n+module.exports = function (fn) {\n+  \u002F\u002F Nashorn bug:\n+  \u002F\u002F   https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F1128\n+  \u002F\u002F   https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F1130\n+  if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7566:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var defineBuiltIn = __webpack_require__(6840);\n+var uncurryThis = __webpack_require__(9504);\n+var toString = __webpack_require__(655);\n+var validateArgumentsLength = __webpack_require__(2812);\n+\n+var $URLSearchParams = URLSearchParams;\n+var URLSearchParamsPrototype = $URLSearchParams.prototype;\n+var getAll = uncurryThis(URLSearchParamsPrototype.getAll);\n+var $has = uncurryThis(URLSearchParamsPrototype.has);\n+var params = new $URLSearchParams('a=1');\n+\n+\u002F\u002F `undefined` case is a Chromium 117 bug\n+\u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=14222\n+if (params.has('a', 2) || !params.has('a', undefined)) {\n+  defineBuiltIn(URLSearchParamsPrototype, 'has', function has(name \u002F* , value *\u002F) {\n+    var length = arguments.length;\n+    var $value = length \u003C 2 ? undefined : arguments[1];\n+    if (length && $value === undefined) return $has(this, name);\n+    var values = getAll(this, name); \u002F\u002F also validates `this`\n+    validateArgumentsLength(length, 1);\n+    var value = toString($value);\n+    var index = 0;\n+    while (index \u003C values.length) {\n+      if (values[index++] === value) return true;\n+    } return false;\n+  }, { enumerable: true, unsafe: true });\n+}\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7629:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var IS_PURE = __webpack_require__(6395);\n+var globalThis = __webpack_require__(4576);\n+var defineGlobalProperty = __webpack_require__(9433);\n+\n+var SHARED = '__core-js_shared__';\n+var store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n+\n+(store.versions || (store.versions = [])).push({\n+  version: '3.42.0',\n+  mode: IS_PURE ? 'pure' : 'global',\n+  copyright: '© 2014-2025 Denis Pushkarev (zloirock.ru)',\n+  license: 'https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fv3.42.0\u002FLICENSE',\n+  source: 'https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js'\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7642:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var difference = __webpack_require__(3440);\n+var setMethodAcceptSetLike = __webpack_require__(4916);\n+\n+var INCORRECT = !setMethodAcceptSetLike('difference', function (result) {\n+  return result.size === 0;\n+});\n+\n+\u002F\u002F `Set.prototype.difference` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.difference\n+$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n+  difference: difference\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7657:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var fails = __webpack_require__(9039);\n+var isCallable = __webpack_require__(4901);\n+var isObject = __webpack_require__(34);\n+var create = __webpack_require__(2360);\n+var getPrototypeOf = __webpack_require__(2787);\n+var defineBuiltIn = __webpack_require__(6840);\n+var wellKnownSymbol = __webpack_require__(8227);\n+var IS_PURE = __webpack_require__(6395);\n+\n+var ITERATOR = wellKnownSymbol('iterator');\n+var BUGGY_SAFARI_ITERATORS = false;\n+\n+\u002F\u002F `%IteratorPrototype%` object\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-%iteratorprototype%-object\n+var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n+\n+\u002F* eslint-disable es\u002Fno-array-prototype-keys -- safe *\u002F\n+if ([].keys) {\n+  arrayIterator = [].keys();\n+  \u002F\u002F Safari 8 has buggy iterators w\u002Fo `next`\n+  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n+  else {\n+    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n+    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n+  }\n+}\n+\n+var NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n+  var test = {};\n+  \u002F\u002F FF44- legacy iterators case\n+  return IteratorPrototype[ITERATOR].call(test) !== test;\n+});\n+\n+if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\n+else if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n+\n+\u002F\u002F `%IteratorPrototype%[@@iterator]()` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-%iteratorprototype%-@@iterator\n+if (!isCallable(IteratorPrototype[ITERATOR])) {\n+  defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n+    return this;\n+  });\n+}\n+\n+module.exports = {\n+  IteratorPrototype: IteratorPrototype,\n+  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7680:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+\n+module.exports = uncurryThis([].slice);\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7696:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var toIntegerOrInfinity = __webpack_require__(1291);\n+var toLength = __webpack_require__(8014);\n+\n+var $RangeError = RangeError;\n+\n+\u002F\u002F `ToIndex` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-toindex\n+module.exports = function (it) {\n+  if (it === undefined) return 0;\n+  var number = toIntegerOrInfinity(it);\n+  var length = toLength(number);\n+  if (number !== length) throw new $RangeError('Wrong length or index');\n+  return length;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7740:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var hasOwn = __webpack_require__(9297);\n+var ownKeys = __webpack_require__(5031);\n+var getOwnPropertyDescriptorModule = __webpack_require__(7347);\n+var definePropertyModule = __webpack_require__(4913);\n+\n+module.exports = function (target, source, exceptions) {\n+  var keys = ownKeys(source);\n+  var defineProperty = definePropertyModule.f;\n+  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n+  for (var i = 0; i \u003C keys.length; i++) {\n+    var key = keys[i];\n+    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n+      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n+    }\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7750:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isNullOrUndefined = __webpack_require__(4117);\n+\n+var $TypeError = TypeError;\n+\n+\u002F\u002F `RequireObjectCoercible` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-requireobjectcoercible\n+module.exports = function (it) {\n+  if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n+  return it;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7751:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var isCallable = __webpack_require__(4901);\n+\n+var aFunction = function (argument) {\n+  return isCallable(argument) ? argument : undefined;\n+};\n+\n+module.exports = function (namespace, method) {\n+  return arguments.length \u003C 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7811:\n+\u002F***\u002F ((module) => {\n+\n+\n+\u002F\u002F eslint-disable-next-line es\u002Fno-typed-arrays -- safe\n+module.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7936:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var $transfer = __webpack_require__(5636);\n+\n+\u002F\u002F `ArrayBuffer.prototype.transferToFixedLength` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-arraybuffer-transfer\u002F#sec-arraybuffer.prototype.transfertofixedlength\n+if ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n+  transferToFixedLength: function transferToFixedLength() {\n+    return $transfer(this, arguments.length ? arguments[0] : undefined, false);\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8004:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var fails = __webpack_require__(9039);\n+var intersection = __webpack_require__(8750);\n+var setMethodAcceptSetLike = __webpack_require__(4916);\n+\n+var INCORRECT = !setMethodAcceptSetLike('intersection', function (result) {\n+  return result.size === 2 && result.has(1) && result.has(2);\n+}) || fails(function () {\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-array-from, es\u002Fno-set, es\u002Fno-set-prototype-intersection -- testing\n+  return String(Array.from(new Set([1, 2, 3]).intersection(new Set([3, 2])))) !== '3,2';\n+});\n+\n+\u002F\u002F `Set.prototype.intersection` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.intersection\n+$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n+  intersection: intersection\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8014:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var toIntegerOrInfinity = __webpack_require__(1291);\n+\n+var min = Math.min;\n+\n+\u002F\u002F `ToLength` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-tolength\n+module.exports = function (argument) {\n+  var len = toIntegerOrInfinity(argument);\n+  return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; \u002F\u002F 2 ** 53 - 1 == 9007199254740991\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8100:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var $transfer = __webpack_require__(5636);\n+\n+\u002F\u002F `ArrayBuffer.prototype.transfer` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-arraybuffer-transfer\u002F#sec-arraybuffer.prototype.transfer\n+if ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n+  transfer: function transfer() {\n+    return $transfer(this, arguments.length ? arguments[0] : undefined, true);\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8111:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var globalThis = __webpack_require__(4576);\n+var anInstance = __webpack_require__(679);\n+var anObject = __webpack_require__(8551);\n+var isCallable = __webpack_require__(4901);\n+var getPrototypeOf = __webpack_require__(2787);\n+var defineBuiltInAccessor = __webpack_require__(2106);\n+var createProperty = __webpack_require__(4659);\n+var fails = __webpack_require__(9039);\n+var hasOwn = __webpack_require__(9297);\n+var wellKnownSymbol = __webpack_require__(8227);\n+var IteratorPrototype = (__webpack_require__(7657).IteratorPrototype);\n+var DESCRIPTORS = __webpack_require__(3724);\n+var IS_PURE = __webpack_require__(6395);\n+\n+var CONSTRUCTOR = 'constructor';\n+var ITERATOR = 'Iterator';\n+var TO_STRING_TAG = wellKnownSymbol('toStringTag');\n+\n+var $TypeError = TypeError;\n+var NativeIterator = globalThis[ITERATOR];\n+\n+\u002F\u002F FF56- have non-standard global helper `Iterator`\n+var FORCED = IS_PURE\n+  || !isCallable(NativeIterator)\n+  || NativeIterator.prototype !== IteratorPrototype\n+  \u002F\u002F FF44- non-standard `Iterator` passes previous tests\n+  || !fails(function () { NativeIterator({}); });\n+\n+var IteratorConstructor = function Iterator() {\n+  anInstance(this, IteratorPrototype);\n+  if (getPrototypeOf(this) === IteratorPrototype) throw new $TypeError('Abstract class Iterator not directly constructable');\n+};\n+\n+var defineIteratorPrototypeAccessor = function (key, value) {\n+  if (DESCRIPTORS) {\n+    defineBuiltInAccessor(IteratorPrototype, key, {\n+      configurable: true,\n+      get: function () {\n+        return value;\n+      },\n+      set: function (replacement) {\n+        anObject(this);\n+        if (this === IteratorPrototype) throw new $TypeError(\"You can't redefine this property\");\n+        if (hasOwn(this, key)) this[key] = replacement;\n+        else createProperty(this, key, replacement);\n+      }\n+    });\n+  } else IteratorPrototype[key] = value;\n+};\n+\n+if (!hasOwn(IteratorPrototype, TO_STRING_TAG)) defineIteratorPrototypeAccessor(TO_STRING_TAG, ITERATOR);\n+\n+if (FORCED || !hasOwn(IteratorPrototype, CONSTRUCTOR) || IteratorPrototype[CONSTRUCTOR] === Object) {\n+  defineIteratorPrototypeAccessor(CONSTRUCTOR, IteratorConstructor);\n+}\n+\n+IteratorConstructor.prototype = IteratorPrototype;\n+\n+\u002F\u002F `Iterator` constructor\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator\n+$({ global: true, constructor: true, forced: FORCED }, {\n+  Iterator: IteratorConstructor\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8227:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var shared = __webpack_require__(5745);\n+var hasOwn = __webpack_require__(9297);\n+var uid = __webpack_require__(3392);\n+var NATIVE_SYMBOL = __webpack_require__(4495);\n+var USE_SYMBOL_AS_UID = __webpack_require__(7040);\n+\n+var Symbol = globalThis.Symbol;\n+var WellKnownSymbolsStore = shared('wks');\n+var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n+\n+module.exports = function (name) {\n+  if (!hasOwn(WellKnownSymbolsStore, name)) {\n+    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n+      ? Symbol[name]\n+      : createWellKnownSymbol('Symbol.' + name);\n+  } return WellKnownSymbolsStore[name];\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8235:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+var hasOwn = __webpack_require__(9297);\n+\n+var $SyntaxError = SyntaxError;\n+var $parseInt = parseInt;\n+var fromCharCode = String.fromCharCode;\n+var at = uncurryThis(''.charAt);\n+var slice = uncurryThis(''.slice);\n+var exec = uncurryThis(\u002F.\u002F.exec);\n+\n+var codePoints = {\n+  '\\\\\"': '\"',\n+  '\\\\\\\\': '\\\\',\n+  '\\\\\u002F': '\u002F',\n+  '\\\\b': '\\b',\n+  '\\\\f': '\\f',\n+  '\\\\n': '\\n',\n+  '\\\\r': '\\r',\n+  '\\\\t': '\\t'\n+};\n+\n+var IS_4_HEX_DIGITS = \u002F^[\\da-f]{4}$\u002Fi;\n+\u002F\u002F eslint-disable-next-line regexp\u002Fno-control-character -- safe\n+var IS_C0_CONTROL_CODE = \u002F^[\\u0000-\\u001F]$\u002F;\n+\n+module.exports = function (source, i) {\n+  var unterminated = true;\n+  var value = '';\n+  while (i \u003C source.length) {\n+    var chr = at(source, i);\n+    if (chr === '\\\\') {\n+      var twoChars = slice(source, i, i + 2);\n+      if (hasOwn(codePoints, twoChars)) {\n+        value += codePoints[twoChars];\n+        i += 2;\n+      } else if (twoChars === '\\\\u') {\n+        i += 2;\n+        var fourHexDigits = slice(source, i, i + 4);\n+        if (!exec(IS_4_HEX_DIGITS, fourHexDigits)) throw new $SyntaxError('Bad Unicode escape at: ' + i);\n+        value += fromCharCode($parseInt(fourHexDigits, 16));\n+        i += 4;\n+      } else throw new $SyntaxError('Unknown escape sequence: \"' + twoChars + '\"');\n+    } else if (chr === '\"') {\n+      unterminated = false;\n+      i++;\n+      break;\n+    } else {\n+      if (exec(IS_C0_CONTROL_CODE, chr)) throw new $SyntaxError('Bad control character in string literal at: ' + i);\n+      value += chr;\n+      i++;\n+    }\n+  }\n+  if (unterminated) throw new $SyntaxError('Unterminated string at: ' + i);\n+  return { value: value, end: i };\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8237:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var iterate = __webpack_require__(2652);\n+var aCallable = __webpack_require__(9306);\n+var anObject = __webpack_require__(8551);\n+var getIteratorDirect = __webpack_require__(1767);\n+var iteratorClose = __webpack_require__(9539);\n+var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n+var apply = __webpack_require__(8745);\n+var fails = __webpack_require__(9039);\n+\n+var $TypeError = TypeError;\n+\n+\u002F\u002F https:\u002F\u002Fbugs.webkit.org\u002Fshow_bug.cgi?id=291651\n+var FAILS_ON_INITIAL_UNDEFINED = fails(function () {\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-iterator-prototype-reduce, es\u002Fno-array-prototype-keys, array-callback-return -- required for testing\n+  [].keys().reduce(function () { \u002F* empty *\u002F }, undefined);\n+});\n+\n+var reduceWithoutClosingOnEarlyError = !FAILS_ON_INITIAL_UNDEFINED && iteratorHelperWithoutClosingOnEarlyError('reduce', $TypeError);\n+\n+\u002F\u002F `Iterator.prototype.reduce` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.reduce\n+$({ target: 'Iterator', proto: true, real: true, forced: FAILS_ON_INITIAL_UNDEFINED || reduceWithoutClosingOnEarlyError }, {\n+  reduce: function reduce(reducer \u002F* , initialValue *\u002F) {\n+    anObject(this);\n+    try {\n+      aCallable(reducer);\n+    } catch (error) {\n+      iteratorClose(this, 'throw', error);\n+    }\n+\n+    var noInitial = arguments.length \u003C 2;\n+    var accumulator = noInitial ? undefined : arguments[1];\n+    if (reduceWithoutClosingOnEarlyError) {\n+      return apply(reduceWithoutClosingOnEarlyError, this, noInitial ? [reducer] : [reducer, accumulator]);\n+    }\n+    var record = getIteratorDirect(this);\n+    var counter = 0;\n+    iterate(record, function (value) {\n+      if (noInitial) {\n+        noInitial = false;\n+        accumulator = value;\n+      } else {\n+        accumulator = reducer(accumulator, value, counter);\n+      }\n+      counter++;\n+    }, { IS_RECORD: true });\n+    if (noInitial) throw new $TypeError('Reduce of empty iterator with no initial value');\n+    return accumulator;\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8335:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var DESCRIPTORS = __webpack_require__(3724);\n+var globalThis = __webpack_require__(4576);\n+var getBuiltIn = __webpack_require__(7751);\n+var uncurryThis = __webpack_require__(9504);\n+var call = __webpack_require__(9565);\n+var isCallable = __webpack_require__(4901);\n+var isObject = __webpack_require__(34);\n+var isArray = __webpack_require__(4376);\n+var hasOwn = __webpack_require__(9297);\n+var toString = __webpack_require__(655);\n+var lengthOfArrayLike = __webpack_require__(6198);\n+var createProperty = __webpack_require__(4659);\n+var fails = __webpack_require__(9039);\n+var parseJSONString = __webpack_require__(8235);\n+var NATIVE_SYMBOL = __webpack_require__(4495);\n+\n+var JSON = globalThis.JSON;\n+var Number = globalThis.Number;\n+var SyntaxError = globalThis.SyntaxError;\n+var nativeParse = JSON && JSON.parse;\n+var enumerableOwnProperties = getBuiltIn('Object', 'keys');\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n+var at = uncurryThis(''.charAt);\n+var slice = uncurryThis(''.slice);\n+var exec = uncurryThis(\u002F.\u002F.exec);\n+var push = uncurryThis([].push);\n+\n+var IS_DIGIT = \u002F^\\d$\u002F;\n+var IS_NON_ZERO_DIGIT = \u002F^[1-9]$\u002F;\n+var IS_NUMBER_START = \u002F^[\\d-]$\u002F;\n+var IS_WHITESPACE = \u002F^[\\t\\n\\r ]$\u002F;\n+\n+var PRIMITIVE = 0;\n+var OBJECT = 1;\n+\n+var $parse = function (source, reviver) {\n+  source = toString(source);\n+  var context = new Context(source, 0, '');\n+  var root = context.parse();\n+  var value = root.value;\n+  var endIndex = context.skip(IS_WHITESPACE, root.end);\n+  if (endIndex \u003C source.length) {\n+    throw new SyntaxError('Unexpected extra character: \"' + at(source, endIndex) + '\" after the parsed data at: ' + endIndex);\n+  }\n+  return isCallable(reviver) ? internalize({ '': value }, '', reviver, root) : value;\n+};\n+\n+var internalize = function (holder, name, reviver, node) {\n+  var val = holder[name];\n+  var unmodified = node && val === node.value;\n+  var context = unmodified && typeof node.source == 'string' ? { source: node.source } : {};\n+  var elementRecordsLen, keys, len, i, P;\n+  if (isObject(val)) {\n+    var nodeIsArray = isArray(val);\n+    var nodes = unmodified ? node.nodes : nodeIsArray ? [] : {};\n+    if (nodeIsArray) {\n+      elementRecordsLen = nodes.length;\n+      len = lengthOfArrayLike(val);\n+      for (i = 0; i \u003C len; i++) {\n+        internalizeProperty(val, i, internalize(val, '' + i, reviver, i \u003C elementRecordsLen ? nodes[i] : undefined));\n+      }\n+    } else {\n+      keys = enumerableOwnProperties(val);\n+      len = lengthOfArrayLike(keys);\n+      for (i = 0; i \u003C len; i++) {\n+        P = keys[i];\n+        internalizeProperty(val, P, internalize(val, P, reviver, hasOwn(nodes, P) ? nodes[P] : undefined));\n+      }\n+    }\n+  }\n+  return call(reviver, holder, name, val, context);\n+};\n+\n+var internalizeProperty = function (object, key, value) {\n+  if (DESCRIPTORS) {\n+    var descriptor = getOwnPropertyDescriptor(object, key);\n+    if (descriptor && !descriptor.configurable) return;\n+  }\n+  if (value === undefined) delete object[key];\n+  else createProperty(object, key, value);\n+};\n+\n+var Node = function (value, end, source, nodes) {\n+  this.value = value;\n+  this.end = end;\n+  this.source = source;\n+  this.nodes = nodes;\n+};\n+\n+var Context = function (source, index) {\n+  this.source = source;\n+  this.index = index;\n+};\n+\n+\u002F\u002F https:\u002F\u002Fwww.json.org\u002Fjson-en.html\n+Context.prototype = {\n+  fork: function (nextIndex) {\n+    return new Context(this.source, nextIndex);\n+  },\n+  parse: function () {\n+    var source = this.source;\n+    var i = this.skip(IS_WHITESPACE, this.index);\n+    var fork = this.fork(i);\n+    var chr = at(source, i);\n+    if (exec(IS_NUMBER_START, chr)) return fork.number();\n+    switch (chr) {\n+      case '{':\n+        return fork.object();\n+      case '[':\n+        return fork.array();\n+      case '\"':\n+        return fork.string();\n+      case 't':\n+        return fork.keyword(true);\n+      case 'f':\n+        return fork.keyword(false);\n+      case 'n':\n+        return fork.keyword(null);\n+    } throw new SyntaxError('Unexpected character: \"' + chr + '\" at: ' + i);\n+  },\n+  node: function (type, value, start, end, nodes) {\n+    return new Node(value, end, type ? null : slice(this.source, start, end), nodes);\n+  },\n+  object: function () {\n+    var source = this.source;\n+    var i = this.index + 1;\n+    var expectKeypair = false;\n+    var object = {};\n+    var nodes = {};\n+    while (i \u003C source.length) {\n+      i = this.until(['\"', '}'], i);\n+      if (at(source, i) === '}' && !expectKeypair) {\n+        i++;\n+        break;\n+      }\n+      \u002F\u002F Parsing the key\n+      var result = this.fork(i).string();\n+      var key = result.value;\n+      i = result.end;\n+      i = this.until([':'], i) + 1;\n+      \u002F\u002F Parsing value\n+      i = this.skip(IS_WHITESPACE, i);\n+      result = this.fork(i).parse();\n+      createProperty(nodes, key, result);\n+      createProperty(object, key, result.value);\n+      i = this.until([',', '}'], result.end);\n+      var chr = at(source, i);\n+      if (chr === ',') {\n+        expectKeypair = true;\n+        i++;\n+      } else if (chr === '}') {\n+        i++;\n+        break;\n+      }\n+    }\n+    return this.node(OBJECT, object, this.index, i, nodes);\n+  },\n+  array: function () {\n+    var source = this.source;\n+    var i = this.index + 1;\n+    var expectElement = false;\n+    var array = [];\n+    var nodes = [];\n+    while (i \u003C source.length) {\n+      i = this.skip(IS_WHITESPACE, i);\n+      if (at(source, i) === ']' && !expectElement) {\n+        i++;\n+        break;\n+      }\n+      var result = this.fork(i).parse();\n+      push(nodes, result);\n+      push(array, result.value);\n+      i = this.until([',', ']'], result.end);\n+      if (at(source, i) === ',') {\n+        expectElement = true;\n+        i++;\n+      } else if (at(source, i) === ']') {\n+        i++;\n+        break;\n+      }\n+    }\n+    return this.node(OBJECT, array, this.index, i, nodes);\n+  },\n+  string: function () {\n+    var index = this.index;\n+    var parsed = parseJSONString(this.source, this.index + 1);\n+    return this.node(PRIMITIVE, parsed.value, index, parsed.end);\n+  },\n+  number: function () {\n+    var source = this.source;\n+    var startIndex = this.index;\n+    var i = startIndex;\n+    if (at(source, i) === '-') i++;\n+    if (at(source, i) === '0') i++;\n+    else if (exec(IS_NON_ZERO_DIGIT, at(source, i))) i = this.skip(IS_DIGIT, i + 1);\n+    else throw new SyntaxError('Failed to parse number at: ' + i);\n+    if (at(source, i) === '.') i = this.skip(IS_DIGIT, i + 1);\n+    if (at(source, i) === 'e' || at(source, i) === 'E') {\n+      i++;\n+      if (at(source, i) === '+' || at(source, i) === '-') i++;\n+      var exponentStartIndex = i;\n+      i = this.skip(IS_DIGIT, i);\n+      if (exponentStartIndex === i) throw new SyntaxError(\"Failed to parse number's exponent value at: \" + i);\n+    }\n+    return this.node(PRIMITIVE, Number(slice(source, startIndex, i)), startIndex, i);\n+  },\n+  keyword: function (value) {\n+    var keyword = '' + value;\n+    var index = this.index;\n+    var endIndex = index + keyword.length;\n+    if (slice(this.source, index, endIndex) !== keyword) throw new SyntaxError('Failed to parse value at: ' + index);\n+    return this.node(PRIMITIVE, value, index, endIndex);\n+  },\n+  skip: function (regex, i) {\n+    var source = this.source;\n+    for (; i \u003C source.length; i++) if (!exec(regex, at(source, i))) break;\n+    return i;\n+  },\n+  until: function (array, i) {\n+    i = this.skip(IS_WHITESPACE, i);\n+    var chr = at(this.source, i);\n+    for (var j = 0; j \u003C array.length; j++) if (array[j] === chr) return i;\n+    throw new SyntaxError('Unexpected character: \"' + chr + '\" at: ' + i);\n+  }\n+};\n+\n+var NO_SOURCE_SUPPORT = fails(function () {\n+  var unsafeInt = '9007199254740993';\n+  var source;\n+  nativeParse(unsafeInt, function (key, value, context) {\n+    source = context.source;\n+  });\n+  return source !== unsafeInt;\n+});\n+\n+var PROPER_BASE_PARSE = NATIVE_SYMBOL && !fails(function () {\n+  \u002F\u002F Safari 9 bug\n+  return 1 \u002F nativeParse('-0 \\t') !== -Infinity;\n+});\n+\n+\u002F\u002F `JSON.parse` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-json.parse\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-json-parse-with-source\n+$({ target: 'JSON', stat: true, forced: NO_SOURCE_SUPPORT }, {\n+  parse: function parse(text, reviver) {\n+    return PROPER_BASE_PARSE && !isCallable(reviver) ? nativeParse(text) : $parse(text, reviver);\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8469:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+var iterateSimple = __webpack_require__(507);\n+var SetHelpers = __webpack_require__(4402);\n+\n+var Set = SetHelpers.Set;\n+var SetPrototype = SetHelpers.proto;\n+var forEach = uncurryThis(SetPrototype.forEach);\n+var keys = uncurryThis(SetPrototype.keys);\n+var next = keys(new Set()).next;\n+\n+module.exports = function (set, fn, interruptible) {\n+  return interruptible ? iterateSimple({ iterator: keys(set), next: next }, fn) : forEach(set, fn);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8480:\n+\u002F***\u002F ((__unused_webpack_module, exports, __webpack_require__) => {\n+\n+\n+var internalObjectKeys = __webpack_require__(1828);\n+var enumBugKeys = __webpack_require__(8727);\n+\n+var hiddenKeys = enumBugKeys.concat('length', 'prototype');\n+\n+\u002F\u002F `Object.getOwnPropertyNames` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.getownpropertynames\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertynames -- safe\n+exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n+  return internalObjectKeys(O, hiddenKeys);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8527:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aSet = __webpack_require__(7080);\n+var has = (__webpack_require__(4402).has);\n+var size = __webpack_require__(5170);\n+var getSetRecord = __webpack_require__(3789);\n+var iterateSimple = __webpack_require__(507);\n+var iteratorClose = __webpack_require__(9539);\n+\n+\u002F\u002F `Set.prototype.isSupersetOf` method\n+\u002F\u002F https:\u002F\u002Ftc39.github.io\u002Fproposal-set-methods\u002F#Set.prototype.isSupersetOf\n+module.exports = function isSupersetOf(other) {\n+  var O = aSet(this);\n+  var otherRec = getSetRecord(other);\n+  if (size(O) \u003C otherRec.size) return false;\n+  var iterator = otherRec.getIterator();\n+  return iterateSimple(iterator, function (e) {\n+    if (!has(O, e)) return iteratorClose(iterator, 'normal', false);\n+  }) !== false;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8551:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isObject = __webpack_require__(34);\n+\n+var $String = String;\n+var $TypeError = TypeError;\n+\n+\u002F\u002F `Assert: Type(argument) is Object`\n+module.exports = function (argument) {\n+  if (isObject(argument)) return argument;\n+  throw new $TypeError($String(argument) + ' is not an object');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8574:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+\n+var $Error = Error;\n+var replace = uncurryThis(''.replace);\n+\n+var TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd');\n+\u002F\u002F eslint-disable-next-line redos\u002Fno-vulnerable, sonarjs\u002Fslow-regex -- safe\n+var V8_OR_CHAKRA_STACK_ENTRY = \u002F\\n\\s*at [^:]*:[^\\n]*\u002F;\n+var IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n+\n+module.exports = function (stack, dropEntries) {\n+  if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n+    while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n+  } return stack;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8622:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var isCallable = __webpack_require__(4901);\n+\n+var WeakMap = globalThis.WeakMap;\n+\n+module.exports = isCallable(WeakMap) && \u002Fnative code\u002F.test(String(WeakMap));\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8646:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var call = __webpack_require__(9565);\n+var anObject = __webpack_require__(8551);\n+var getIteratorDirect = __webpack_require__(1767);\n+var getIteratorMethod = __webpack_require__(851);\n+\n+module.exports = function (obj, stringHandling) {\n+  if (!stringHandling || typeof obj !== 'string') anObject(obj);\n+  var method = getIteratorMethod(obj);\n+  return getIteratorDirect(anObject(method !== undefined ? call(method, obj) : obj));\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8686:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var fails = __webpack_require__(9039);\n+\n+\u002F\u002F V8 ~ Chrome 36-\n+\u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=3334\n+module.exports = DESCRIPTORS && fails(function () {\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- required for testing\n+  return Object.defineProperty(function () { \u002F* empty *\u002F }, 'prototype', {\n+    value: 42,\n+    writable: false\n+  }).prototype !== 42;\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8721:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var uncurryThis = __webpack_require__(9504);\n+var defineBuiltInAccessor = __webpack_require__(2106);\n+\n+var URLSearchParamsPrototype = URLSearchParams.prototype;\n+var forEach = uncurryThis(URLSearchParamsPrototype.forEach);\n+\n+\u002F\u002F `URLSearchParams.prototype.size` getter\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Fwhatwg\u002Furl\u002Fpull\u002F734\n+if (DESCRIPTORS && !('size' in URLSearchParamsPrototype)) {\n+  defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\n+    get: function size() {\n+      var count = 0;\n+      forEach(this, function () { count++; });\n+      return count;\n+    },\n+    configurable: true,\n+    enumerable: true\n+  });\n+}\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8727:\n+\u002F***\u002F ((module) => {\n+\n+\n+\u002F\u002F IE8- don't enum bug keys\n+module.exports = [\n+  'constructor',\n+  'hasOwnProperty',\n+  'isPrototypeOf',\n+  'propertyIsEnumerable',\n+  'toLocaleString',\n+  'toString',\n+  'valueOf'\n+];\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8745:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var NATIVE_BIND = __webpack_require__(616);\n+\n+var FunctionPrototype = Function.prototype;\n+var apply = FunctionPrototype.apply;\n+var call = FunctionPrototype.call;\n+\n+\u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind, es\u002Fno-reflect -- safe\n+module.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n+  return call.apply(apply, arguments);\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8750:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aSet = __webpack_require__(7080);\n+var SetHelpers = __webpack_require__(4402);\n+var size = __webpack_require__(5170);\n+var getSetRecord = __webpack_require__(3789);\n+var iterateSet = __webpack_require__(8469);\n+var iterateSimple = __webpack_require__(507);\n+\n+var Set = SetHelpers.Set;\n+var add = SetHelpers.add;\n+var has = SetHelpers.has;\n+\n+\u002F\u002F `Set.prototype.intersection` method\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\n+module.exports = function intersection(other) {\n+  var O = aSet(this);\n+  var otherRec = getSetRecord(other);\n+  var result = new Set();\n+\n+  if (size(O) > otherRec.size) {\n+    iterateSimple(otherRec.getIterator(), function (e) {\n+      if (has(O, e)) add(result, e);\n+    });\n+  } else {\n+    iterateSet(O, function (e) {\n+      if (otherRec.includes(e)) add(result, e);\n+    });\n+  }\n+\n+  return result;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8773:\n+\u002F***\u002F ((__unused_webpack_module, exports) => {\n+\n+\n+var $propertyIsEnumerable = {}.propertyIsEnumerable;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n+\n+\u002F\u002F Nashorn ~ JDK8 bug\n+var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n+\n+\u002F\u002F `Object.prototype.propertyIsEnumerable` method implementation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.prototype.propertyisenumerable\n+exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n+  var descriptor = getOwnPropertyDescriptor(this, V);\n+  return !!descriptor && descriptor.enumerable;\n+} : $propertyIsEnumerable;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8981:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var requireObjectCoercible = __webpack_require__(7750);\n+\n+var $Object = Object;\n+\n+\u002F\u002F `ToObject` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-toobject\n+module.exports = function (argument) {\n+  return $Object(requireObjectCoercible(argument));\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9039:\n+\u002F***\u002F ((module) => {\n+\n+\n+module.exports = function (exec) {\n+  try {\n+    return !!exec();\n+  } catch (error) {\n+    return true;\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9143:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var uncurryThis = __webpack_require__(9504);\n+var anObjectOrUndefined = __webpack_require__(3972);\n+var aString = __webpack_require__(3463);\n+var hasOwn = __webpack_require__(9297);\n+var base64Map = __webpack_require__(2804);\n+var getAlphabetOption = __webpack_require__(944);\n+var notDetached = __webpack_require__(5169);\n+\n+var base64Alphabet = base64Map.c2i;\n+var base64UrlAlphabet = base64Map.c2iUrl;\n+\n+var SyntaxError = globalThis.SyntaxError;\n+var TypeError = globalThis.TypeError;\n+var at = uncurryThis(''.charAt);\n+\n+var skipAsciiWhitespace = function (string, index) {\n+  var length = string.length;\n+  for (;index \u003C length; index++) {\n+    var chr = at(string, index);\n+    if (chr !== ' ' && chr !== '\\t' && chr !== '\\n' && chr !== '\\f' && chr !== '\\r') break;\n+  } return index;\n+};\n+\n+var decodeBase64Chunk = function (chunk, alphabet, throwOnExtraBits) {\n+  var chunkLength = chunk.length;\n+\n+  if (chunkLength \u003C 4) {\n+    chunk += chunkLength === 2 ? 'AA' : 'A';\n+  }\n+\n+  var triplet = (alphabet[at(chunk, 0)] \u003C\u003C 18)\n+    + (alphabet[at(chunk, 1)] \u003C\u003C 12)\n+    + (alphabet[at(chunk, 2)] \u003C\u003C 6)\n+    + alphabet[at(chunk, 3)];\n+\n+  var chunkBytes = [\n+    (triplet >> 16) & 255,\n+    (triplet >> 8) & 255,\n+    triplet & 255\n+  ];\n+\n+  if (chunkLength === 2) {\n+    if (throwOnExtraBits && chunkBytes[1] !== 0) {\n+      throw new SyntaxError('Extra bits');\n+    }\n+    return [chunkBytes[0]];\n+  }\n+\n+  if (chunkLength === 3) {\n+    if (throwOnExtraBits && chunkBytes[2] !== 0) {\n+      throw new SyntaxError('Extra bits');\n+    }\n+    return [chunkBytes[0], chunkBytes[1]];\n+  }\n+\n+  return chunkBytes;\n+};\n+\n+var writeBytes = function (bytes, elements, written) {\n+  var elementsLength = elements.length;\n+  for (var index = 0; index \u003C elementsLength; index++) {\n+    bytes[written + index] = elements[index];\n+  }\n+  return written + elementsLength;\n+};\n+\n+\u002F* eslint-disable max-statements, max-depth -- TODO *\u002F\n+module.exports = function (string, options, into, maxLength) {\n+  aString(string);\n+  anObjectOrUndefined(options);\n+  var alphabet = getAlphabetOption(options) === 'base64' ? base64Alphabet : base64UrlAlphabet;\n+  var lastChunkHandling = options ? options.lastChunkHandling : undefined;\n+\n+  if (lastChunkHandling === undefined) lastChunkHandling = 'loose';\n+\n+  if (lastChunkHandling !== 'loose' && lastChunkHandling !== 'strict' && lastChunkHandling !== 'stop-before-partial') {\n+    throw new TypeError('Incorrect `lastChunkHandling` option');\n+  }\n+\n+  if (into) notDetached(into.buffer);\n+\n+  var bytes = into || [];\n+  var written = 0;\n+  var read = 0;\n+  var chunk = '';\n+  var index = 0;\n+\n+  if (maxLength) while (true) {\n+    index = skipAsciiWhitespace(string, index);\n+    if (index === string.length) {\n+      if (chunk.length > 0) {\n+        if (lastChunkHandling === 'stop-before-partial') {\n+          break;\n+        }\n+        if (lastChunkHandling === 'loose') {\n+          if (chunk.length === 1) {\n+            throw new SyntaxError('Malformed padding: exactly one additional character');\n+          }\n+          written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, false), written);\n+        } else {\n+          throw new SyntaxError('Missing padding');\n+        }\n+      }\n+      read = string.length;\n+      break;\n+    }\n+    var chr = at(string, index);\n+    ++index;\n+    if (chr === '=') {\n+      if (chunk.length \u003C 2) {\n+        throw new SyntaxError('Padding is too early');\n+      }\n+      index = skipAsciiWhitespace(string, index);\n+      if (chunk.length === 2) {\n+        if (index === string.length) {\n+          if (lastChunkHandling === 'stop-before-partial') {\n+            break;\n+          }\n+          throw new SyntaxError('Malformed padding: only one =');\n+        }\n+        if (at(string, index) === '=') {\n+          ++index;\n+          index = skipAsciiWhitespace(string, index);\n+        }\n+      }\n+      if (index \u003C string.length) {\n+        throw new SyntaxError('Unexpected character after padding');\n+      }\n+      written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, lastChunkHandling === 'strict'), written);\n+      read = string.length;\n+      break;\n+    }\n+    if (!hasOwn(alphabet, chr)) {\n+      throw new SyntaxError('Unexpected character');\n+    }\n+    var remainingBytes = maxLength - written;\n+    if (remainingBytes === 1 && chunk.length === 2 || remainingBytes === 2 && chunk.length === 3) {\n+      \u002F\u002F special case: we can fit exactly the number of bytes currently represented by chunk, so we were just checking for `=`\n+      break;\n+    }\n+\n+    chunk += chr;\n+    if (chunk.length === 4) {\n+      written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, false), written);\n+      chunk = '';\n+      read = index;\n+      if (written === maxLength) {\n+        break;\n+      }\n+    }\n+  }\n+\n+  return { bytes: bytes, read: read, written: written };\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9286:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var SetHelpers = __webpack_require__(4402);\n+var iterate = __webpack_require__(8469);\n+\n+var Set = SetHelpers.Set;\n+var add = SetHelpers.add;\n+\n+module.exports = function (set) {\n+  var result = new Set();\n+  iterate(set, function (it) {\n+    add(result, it);\n+  });\n+  return result;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9297:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+var toObject = __webpack_require__(8981);\n+\n+var hasOwnProperty = uncurryThis({}.hasOwnProperty);\n+\n+\u002F\u002F `HasOwnProperty` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-hasownproperty\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-hasown -- safe\n+module.exports = Object.hasOwn || function hasOwn(it, key) {\n+  return hasOwnProperty(toObject(it), key);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9306:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isCallable = __webpack_require__(4901);\n+var tryToString = __webpack_require__(6823);\n+\n+var $TypeError = TypeError;\n+\n+\u002F\u002F `Assert: IsCallable(argument) is true`\n+module.exports = function (argument) {\n+  if (isCallable(argument)) return argument;\n+  throw new $TypeError(tryToString(argument) + ' is not a function');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9314:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var call = __webpack_require__(9565);\n+var anObject = __webpack_require__(8551);\n+var getIteratorDirect = __webpack_require__(1767);\n+var notANaN = __webpack_require__(4149);\n+var toPositiveInteger = __webpack_require__(9590);\n+var iteratorClose = __webpack_require__(9539);\n+var createIteratorProxy = __webpack_require__(9462);\n+var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n+var IS_PURE = __webpack_require__(6395);\n+\n+var dropWithoutClosingOnEarlyError = !IS_PURE && iteratorHelperWithoutClosingOnEarlyError('drop', RangeError);\n+\n+var IteratorProxy = createIteratorProxy(function () {\n+  var iterator = this.iterator;\n+  var next = this.next;\n+  var result, done;\n+  while (this.remaining) {\n+    this.remaining--;\n+    result = anObject(call(next, iterator));\n+    done = this.done = !!result.done;\n+    if (done) return;\n+  }\n+  result = anObject(call(next, iterator));\n+  done = this.done = !!result.done;\n+  if (!done) return result.value;\n+});\n+\n+\u002F\u002F `Iterator.prototype.drop` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.drop\n+$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE || dropWithoutClosingOnEarlyError }, {\n+  drop: function drop(limit) {\n+    anObject(this);\n+    var remaining;\n+    try {\n+      remaining = toPositiveInteger(notANaN(+limit));\n+    } catch (error) {\n+      iteratorClose(this, 'throw', error);\n+    }\n+\n+    if (dropWithoutClosingOnEarlyError) return call(dropWithoutClosingOnEarlyError, this, remaining);\n+\n+    return new IteratorProxy(getIteratorDirect(this), {\n+      remaining: remaining\n+    });\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9429:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var IS_NODE = __webpack_require__(6193);\n+\n+module.exports = function (name) {\n+  if (IS_NODE) {\n+    try {\n+      return globalThis.process.getBuiltinModule(name);\n+    } catch (error) { \u002F* empty *\u002F }\n+    try {\n+      \u002F\u002F eslint-disable-next-line no-new-func -- safe\n+      return Function('return require(\"' + name + '\")')();\n+    } catch (error) { \u002F* empty *\u002F }\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9432:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var globalThis = __webpack_require__(4576);\n+var arrayFromConstructorAndList = __webpack_require__(5370);\n+var $fromBase64 = __webpack_require__(9143);\n+\n+var Uint8Array = globalThis.Uint8Array;\n+\n+\u002F\u002F `Uint8Array.fromBase64` method\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-arraybuffer-base64\n+if (Uint8Array) $({ target: 'Uint8Array', stat: true }, {\n+  fromBase64: function fromBase64(string \u002F* , options *\u002F) {\n+    var result = $fromBase64(string, arguments.length > 1 ? arguments[1] : undefined, null, 0x1FFFFFFFFFFFFF);\n+    return arrayFromConstructorAndList(Uint8Array, result.bytes);\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9433:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\n+var defineProperty = Object.defineProperty;\n+\n+module.exports = function (key, value) {\n+  try {\n+    defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\n+  } catch (error) {\n+    globalThis[key] = value;\n+  } return value;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9462:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var call = __webpack_require__(9565);\n+var create = __webpack_require__(2360);\n+var createNonEnumerableProperty = __webpack_require__(6699);\n+var defineBuiltIns = __webpack_require__(6279);\n+var wellKnownSymbol = __webpack_require__(8227);\n+var InternalStateModule = __webpack_require__(1181);\n+var getMethod = __webpack_require__(5966);\n+var IteratorPrototype = (__webpack_require__(7657).IteratorPrototype);\n+var createIterResultObject = __webpack_require__(2529);\n+var iteratorClose = __webpack_require__(9539);\n+\n+var TO_STRING_TAG = wellKnownSymbol('toStringTag');\n+var ITERATOR_HELPER = 'IteratorHelper';\n+var WRAP_FOR_VALID_ITERATOR = 'WrapForValidIterator';\n+var setInternalState = InternalStateModule.set;\n+\n+var createIteratorProxyPrototype = function (IS_ITERATOR) {\n+  var getInternalState = InternalStateModule.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER);\n+\n+  return defineBuiltIns(create(IteratorPrototype), {\n+    next: function next() {\n+      var state = getInternalState(this);\n+      \u002F\u002F for simplification:\n+      \u002F\u002F   for `%WrapForValidIteratorPrototype%.next` or with `state.returnHandlerResult` our `nextHandler` returns `IterResultObject`\n+      \u002F\u002F   for `%IteratorHelperPrototype%.next` - just a value\n+      if (IS_ITERATOR) return state.nextHandler();\n+      if (state.done) return createIterResultObject(undefined, true);\n+      try {\n+        var result = state.nextHandler();\n+        return state.returnHandlerResult ? result : createIterResultObject(result, state.done);\n+      } catch (error) {\n+        state.done = true;\n+        throw error;\n+      }\n+    },\n+    'return': function () {\n+      var state = getInternalState(this);\n+      var iterator = state.iterator;\n+      state.done = true;\n+      if (IS_ITERATOR) {\n+        var returnMethod = getMethod(iterator, 'return');\n+        return returnMethod ? call(returnMethod, iterator) : createIterResultObject(undefined, true);\n+      }\n+      if (state.inner) try {\n+        iteratorClose(state.inner.iterator, 'normal');\n+      } catch (error) {\n+        return iteratorClose(iterator, 'throw', error);\n+      }\n+      if (iterator) iteratorClose(iterator, 'normal');\n+      return createIterResultObject(undefined, true);\n+    }\n+  });\n+};\n+\n+var WrapForValidIteratorPrototype = createIteratorProxyPrototype(true);\n+var IteratorHelperPrototype = createIteratorProxyPrototype(false);\n+\n+createNonEnumerableProperty(IteratorHelperPrototype, TO_STRING_TAG, 'Iterator Helper');\n+\n+module.exports = function (nextHandler, IS_ITERATOR, RETURN_HANDLER_RESULT) {\n+  var IteratorProxy = function Iterator(record, state) {\n+    if (state) {\n+      state.iterator = record.iterator;\n+      state.next = record.next;\n+    } else state = record;\n+    state.type = IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER;\n+    state.returnHandlerResult = !!RETURN_HANDLER_RESULT;\n+    state.nextHandler = nextHandler;\n+    state.counter = 0;\n+    state.done = false;\n+    setInternalState(this, state);\n+  };\n+\n+  IteratorProxy.prototype = IS_ITERATOR ? WrapForValidIteratorPrototype : IteratorHelperPrototype;\n+\n+  return IteratorProxy;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9504:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var NATIVE_BIND = __webpack_require__(616);\n+\n+var FunctionPrototype = Function.prototype;\n+var call = FunctionPrototype.call;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind -- safe\n+var uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n+\n+module.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n+  return function () {\n+    return call.apply(fn, arguments);\n+  };\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9519:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var userAgent = __webpack_require__(2839);\n+\n+var process = globalThis.process;\n+var Deno = globalThis.Deno;\n+var versions = process && process.versions || Deno && Deno.version;\n+var v8 = versions && versions.v8;\n+var match, version;\n+\n+if (v8) {\n+  match = v8.split('.');\n+  \u002F\u002F in old Chrome, versions of V8 isn't V8 = Chrome \u002F 10\n+  \u002F\u002F but their correct versions are not interesting for us\n+  version = match[0] > 0 && match[0] \u003C 4 ? 1 : +(match[0] + match[1]);\n+}\n+\n+\u002F\u002F BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n+\u002F\u002F so check `userAgent` even if `.v8` exists, but 0\n+if (!version && userAgent) {\n+  match = userAgent.match(\u002FEdge\\\u002F(\\d+)\u002F);\n+  if (!match || match[1] >= 74) {\n+    match = userAgent.match(\u002FChrome\\\u002F(\\d+)\u002F);\n+    if (match) version = +match[1];\n+  }\n+}\n+\n+module.exports = version;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9539:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var call = __webpack_require__(9565);\n+var anObject = __webpack_require__(8551);\n+var getMethod = __webpack_require__(5966);\n+\n+module.exports = function (iterator, kind, value) {\n+  var innerResult, innerError;\n+  anObject(iterator);\n+  try {\n+    innerResult = getMethod(iterator, 'return');\n+    if (!innerResult) {\n+      if (kind === 'throw') throw value;\n+      return value;\n+    }\n+    innerResult = call(innerResult, iterator);\n+  } catch (error) {\n+    innerError = true;\n+    innerResult = error;\n+  }\n+  if (kind === 'throw') throw value;\n+  if (innerError) throw innerResult;\n+  anObject(innerResult);\n+  return value;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9565:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var NATIVE_BIND = __webpack_require__(616);\n+\n+var call = Function.prototype.call;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind -- safe\n+module.exports = NATIVE_BIND ? call.bind(call) : function () {\n+  return call.apply(call, arguments);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9590:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var toIntegerOrInfinity = __webpack_require__(1291);\n+\n+var $RangeError = RangeError;\n+\n+module.exports = function (it) {\n+  var result = toIntegerOrInfinity(it);\n+  if (result \u003C 0) throw new $RangeError(\"The argument can't be less than 0\");\n+  return result;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9617:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var toIndexedObject = __webpack_require__(5397);\n+var toAbsoluteIndex = __webpack_require__(5610);\n+var lengthOfArrayLike = __webpack_require__(6198);\n+\n+\u002F\u002F `Array.prototype.{ indexOf, includes }` methods implementation\n+var createMethod = function (IS_INCLUDES) {\n+  return function ($this, el, fromIndex) {\n+    var O = toIndexedObject($this);\n+    var length = lengthOfArrayLike(O);\n+    if (length === 0) return !IS_INCLUDES && -1;\n+    var index = toAbsoluteIndex(fromIndex, length);\n+    var value;\n+    \u002F\u002F Array#includes uses SameValueZero equality algorithm\n+    \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\n+    if (IS_INCLUDES && el !== el) while (length > index) {\n+      value = O[index++];\n+      \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\n+      if (value !== value) return true;\n+    \u002F\u002F Array#indexOf ignores holes, Array#includes - not\n+    } else for (;length > index; index++) {\n+      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n+    } return !IS_INCLUDES && -1;\n+  };\n+};\n+\n+module.exports = {\n+  \u002F\u002F `Array.prototype.includes` method\n+  \u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-array.prototype.includes\n+  includes: createMethod(true),\n+  \u002F\u002F `Array.prototype.indexOf` method\n+  \u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-array.prototype.indexof\n+  indexOf: createMethod(false)\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9631:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var globalThis = __webpack_require__(4576);\n+var uncurryThis = __webpack_require__(9504);\n+var anObjectOrUndefined = __webpack_require__(3972);\n+var anUint8Array = __webpack_require__(4154);\n+var notDetached = __webpack_require__(5169);\n+var base64Map = __webpack_require__(2804);\n+var getAlphabetOption = __webpack_require__(944);\n+\n+var base64Alphabet = base64Map.i2c;\n+var base64UrlAlphabet = base64Map.i2cUrl;\n+\n+var charAt = uncurryThis(''.charAt);\n+\n+\u002F\u002F `Uint8Array.prototype.toBase64` method\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-arraybuffer-base64\n+if (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {\n+  toBase64: function toBase64(\u002F* options *\u002F) {\n+    var array = anUint8Array(this);\n+    var options = arguments.length ? anObjectOrUndefined(arguments[0]) : undefined;\n+    var alphabet = getAlphabetOption(options) === 'base64' ? base64Alphabet : base64UrlAlphabet;\n+    var omitPadding = !!options && !!options.omitPadding;\n+    notDetached(this.buffer);\n+\n+    var result = '';\n+    var i = 0;\n+    var length = array.length;\n+    var triplet;\n+\n+    var at = function (shift) {\n+      return charAt(alphabet, (triplet >> (6 * shift)) & 63);\n+    };\n+\n+    for (; i + 2 \u003C length; i += 3) {\n+      triplet = (array[i] \u003C\u003C 16) + (array[i + 1] \u003C\u003C 8) + array[i + 2];\n+      result += at(3) + at(2) + at(1) + at(0);\n+    }\n+    if (i + 2 === length) {\n+      triplet = (array[i] \u003C\u003C 16) + (array[i + 1] \u003C\u003C 8);\n+      result += at(3) + at(2) + at(1) + (omitPadding ? '' : '=');\n+    } else if (i + 1 === length) {\n+      triplet = array[i] \u003C\u003C 16;\n+      result += at(3) + at(2) + (omitPadding ? '' : '==');\n+    }\n+\n+    return result;\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9797:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var globalThis = __webpack_require__(4576);\n+var aString = __webpack_require__(3463);\n+var anUint8Array = __webpack_require__(4154);\n+var notDetached = __webpack_require__(5169);\n+var $fromHex = __webpack_require__(2303);\n+\n+\u002F\u002F `Uint8Array.prototype.setFromHex` method\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-arraybuffer-base64\n+if (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {\n+  setFromHex: function setFromHex(string) {\n+    anUint8Array(this);\n+    aString(string);\n+    notDetached(this.buffer);\n+    var read = $fromHex(string, this).read;\n+    return { read: read, written: read \u002F 2 };\n+  }\n+});\n+\n+\n+\u002F***\u002F })\n+\n+\u002F******\u002F });\n \u002F************************************************************************\u002F\n-\u002F******\u002F \u002F* webpack\u002Fruntime\u002Fdefine property getters *\u002F\n-\u002F******\u002F (() => {\n-\u002F******\u002F \t\u002F\u002F define getter functions for harmony exports\n-\u002F******\u002F \t__webpack_require__.d = (exports, definition) => {\n-\u002F******\u002F \t\tfor(var key in definition) {\n-\u002F******\u002F \t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n-\u002F******\u002F \t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n-\u002F******\u002F \t\t\t}\n-\u002F******\u002F \t\t}\n+\u002F******\u002F \u002F\u002F The module cache\n+\u002F******\u002F var __webpack_module_cache__ = {};\n+\u002F******\u002F \n+\u002F******\u002F \u002F\u002F The require function\n+\u002F******\u002F function __webpack_require__(moduleId) {\n+\u002F******\u002F \t\u002F\u002F Check if module is in cache\n+\u002F******\u002F \tvar cachedModule = __webpack_module_cache__[moduleId];\n+\u002F******\u002F \tif (cachedModule !== undefined) {\n+\u002F******\u002F \t\treturn cachedModule.exports;\n+\u002F******\u002F \t}\n+\u002F******\u002F \t\u002F\u002F Create a new module (and put it into the cache)\n+\u002F******\u002F \tvar module = __webpack_module_cache__[moduleId] = {\n+\u002F******\u002F \t\t\u002F\u002F no module.id needed\n+\u002F******\u002F \t\t\u002F\u002F no module.loaded needed\n+\u002F******\u002F \t\texports: {}\n \u002F******\u002F \t};\n-\u002F******\u002F })();\n \u002F******\u002F \n-\u002F******\u002F \u002F* webpack\u002Fruntime\u002FhasOwnProperty shorthand *\u002F\n-\u002F******\u002F (() => {\n-\u002F******\u002F \t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n-\u002F******\u002F })();\n+\u002F******\u002F \t\u002F\u002F Execute the module function\n+\u002F******\u002F \t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n+\u002F******\u002F \n+\u002F******\u002F \t\u002F\u002F Return the exports of the module\n+\u002F******\u002F \treturn module.exports;\n+\u002F******\u002F }\n \u002F******\u002F \n \u002F************************************************************************\u002F\n-var __webpack_exports__ = globalThis.pdfjsLib = {};\n+var __webpack_exports__ = {};\n+\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array.push.js\n+var es_array_push = __webpack_require__(4114);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array-buffer.detached.js\n+var es_array_buffer_detached = __webpack_require__(6573);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array-buffer.transfer.js\n+var es_array_buffer_transfer = __webpack_require__(8100);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array-buffer.transfer-to-fixed-length.js\n+var es_array_buffer_transfer_to_fixed_length = __webpack_require__(7936);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.constructor.js\n+var es_iterator_constructor = __webpack_require__(8111);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.reduce.js\n+var es_iterator_reduce = __webpack_require__(8237);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.promise.try.js\n+var es_promise_try = __webpack_require__(1689);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.uint8-array.from-base64.js\n+var esnext_uint8_array_from_base64 = __webpack_require__(9432);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.uint8-array.set-from-base64.js\n+var esnext_uint8_array_set_from_base64 = __webpack_require__(1549);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.uint8-array.set-from-hex.js\n+var esnext_uint8_array_set_from_hex = __webpack_require__(9797);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.uint8-array.to-base64.js\n+var esnext_uint8_array_to_base64 = __webpack_require__(9631);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.uint8-array.to-hex.js\n+var esnext_uint8_array_to_hex = __webpack_require__(5623);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.dom-exception.stack.js\n+var web_dom_exception_stack = __webpack_require__(4979);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.url.parse.js\n+var web_url_parse = __webpack_require__(5781);\n+;\u002F\u002F .\u002Fsrc\u002Fshared\u002Futil.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n-\u002F\u002F EXPORTS\n-__webpack_require__.d(__webpack_exports__, {\n-  AbortException: () => (\u002F* reexport *\u002F AbortException),\n-  AnnotationEditorLayer: () => (\u002F* reexport *\u002F AnnotationEditorLayer),\n-  AnnotationEditorParamsType: () => (\u002F* reexport *\u002F AnnotationEditorParamsType),\n-  AnnotationEditorType: () => (\u002F* reexport *\u002F AnnotationEditorType),\n-  AnnotationEditorUIManager: () => (\u002F* reexport *\u002F AnnotationEditorUIManager),\n-  AnnotationLayer: () => (\u002F* reexport *\u002F AnnotationLayer),\n-  AnnotationMode: () => (\u002F* reexport *\u002F AnnotationMode),\n-  CMapCompressionType: () => (\u002F* reexport *\u002F CMapCompressionType),\n-  ColorPicker: () => (\u002F* reexport *\u002F ColorPicker),\n-  DOMSVGFactory: () => (\u002F* reexport *\u002F DOMSVGFactory),\n-  DrawLayer: () => (\u002F* reexport *\u002F DrawLayer),\n-  FeatureTest: () => (\u002F* reexport *\u002F util_FeatureTest),\n-  GlobalWorkerOptions: () => (\u002F* reexport *\u002F GlobalWorkerOptions),\n-  ImageKind: () => (\u002F* reexport *\u002F util_ImageKind),\n-  InvalidPDFException: () => (\u002F* reexport *\u002F InvalidPDFException),\n-  MissingPDFException: () => (\u002F* reexport *\u002F MissingPDFException),\n-  OPS: () => (\u002F* reexport *\u002F OPS),\n-  Outliner: () => (\u002F* reexport *\u002F Outliner),\n-  PDFDataRangeTransport: () => (\u002F* reexport *\u002F PDFDataRangeTransport),\n-  PDFDateString: () => (\u002F* reexport *\u002F PDFDateString),\n-  PDFWorker: () => (\u002F* reexport *\u002F PDFWorker),\n-  PasswordResponses: () => (\u002F* reexport *\u002F PasswordResponses),\n-  PermissionFlag: () => (\u002F* reexport *\u002F PermissionFlag),\n-  PixelsPerInch: () => (\u002F* reexport *\u002F PixelsPerInch),\n-  RenderingCancelledException: () => (\u002F* reexport *\u002F RenderingCancelledException),\n-  TextLayer: () => (\u002F* reexport *\u002F TextLayer),\n-  UnexpectedResponseException: () => (\u002F* reexport *\u002F UnexpectedResponseException),\n-  Util: () => (\u002F* reexport *\u002F Util),\n-  VerbosityLevel: () => (\u002F* reexport *\u002F VerbosityLevel),\n-  XfaLayer: () => (\u002F* reexport *\u002F XfaLayer),\n-  build: () => (\u002F* reexport *\u002F build),\n-  createValidAbsoluteUrl: () => (\u002F* reexport *\u002F createValidAbsoluteUrl),\n-  fetchData: () => (\u002F* reexport *\u002F fetchData),\n-  getDocument: () => (\u002F* reexport *\u002F getDocument),\n-  getFilenameFromUrl: () => (\u002F* reexport *\u002F getFilenameFromUrl),\n-  getPdfFilenameFromUrl: () => (\u002F* reexport *\u002F getPdfFilenameFromUrl),\n-  getXfaPageViewport: () => (\u002F* reexport *\u002F getXfaPageViewport),\n-  isDataScheme: () => (\u002F* reexport *\u002F isDataScheme),\n-  isPdfFile: () => (\u002F* reexport *\u002F isPdfFile),\n-  noContextMenu: () => (\u002F* reexport *\u002F noContextMenu),\n-  normalizeUnicode: () => (\u002F* reexport *\u002F normalizeUnicode),\n-  renderTextLayer: () => (\u002F* reexport *\u002F renderTextLayer),\n-  setLayerDimensions: () => (\u002F* reexport *\u002F setLayerDimensions),\n-  shadow: () => (\u002F* reexport *\u002F shadow),\n-  updateTextLayer: () => (\u002F* reexport *\u002F updateTextLayer),\n-  version: () => (\u002F* reexport *\u002F version)\n-});\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fshared\u002Futil.js\n const isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\n-const IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\n const FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n-const MAX_IMAGE_SIZE_TO_CACHE = 10e6;\n const LINE_FACTOR = 1.35;\n const LINE_DESCENT_FACTOR = 0.35;\n const BASELINE_FACTOR = LINE_DESCENT_FACTOR \u002F LINE_FACTOR;\n@@ -110,6 +5202,7 @@\n   ANNOTATIONS_FORMS: 0x10,\n   ANNOTATIONS_STORAGE: 0x20,\n   ANNOTATIONS_DISABLE: 0x40,\n+  IS_EDITING: 0x80,\n   OPLIST: 0x100\n };\n const AnnotationMode = {\n@@ -125,7 +5218,8 @@\n   FREETEXT: 3,\n   HIGHLIGHT: 9,\n   STAMP: 13,\n-  INK: 15\n+  INK: 15,\n+  SIGNATURE: 101\n };\n const AnnotationEditorParamsType = {\n   RESIZE: 1,\n@@ -140,7 +5234,8 @@\n   HIGHLIGHT_DEFAULT_COLOR: 32,\n   HIGHLIGHT_THICKNESS: 33,\n   HIGHLIGHT_FREE: 34,\n-  HIGHLIGHT_SHOW_ALL: 35\n+  HIGHLIGHT_SHOW_ALL: 35,\n+  DRAW_STEP: 41\n };\n const PermissionFlag = {\n   PRINT: 0x04,\n@@ -273,10 +5368,6 @@\n   WARNINGS: 1,\n   INFOS: 5\n };\n-const CMapCompressionType = {\n-  NONE: 0,\n-  BINARY: 1\n-};\n const OPS = {\n   dependency: 1,\n   setLineWidth: 2,\n@@ -365,7 +5456,16 @@\n   paintImageXObjectRepeat: 88,\n   paintImageMaskXObjectRepeat: 89,\n   paintSolidColorImageMask: 90,\n-  constructPath: 91\n+  constructPath: 91,\n+  setStrokeTransparent: 92,\n+  setFillTransparent: 93,\n+  rawFillPath: 94\n+};\n+const DrawOPS = {\n+  moveTo: 0,\n+  lineTo: 1,\n+  curveTo: 2,\n+  closePath: 3\n };\n const PasswordResponses = {\n   NEED_PASSWORD: 1,\n@@ -414,26 +5514,32 @@\n   if (!url) {\n     return null;\n   }\n-  try {\n-    if (options && typeof url === \"string\") {\n-      if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n-        const dots = url.match(\u002F\\.\u002Fg);\n-        if (dots?.length >= 2) {\n-          url = `http:\u002F\u002F${url}`;\n-        }\n-      }\n-      if (options.tryConvertEncoding) {\n-        try {\n-          url = stringToUTF8String(url);\n-        } catch {}\n+  if (options && typeof url === \"string\") {\n+    if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n+      const dots = url.match(\u002F\\.\u002Fg);\n+      if (dots?.length >= 2) {\n+        url = `http:\u002F\u002F${url}`;\n       }\n     }\n-    const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n-    if (_isValidProtocol(absoluteUrl)) {\n-      return absoluteUrl;\n+    if (options.tryConvertEncoding) {\n+      try {\n+        url = stringToUTF8String(url);\n+      } catch {}\n     }\n-  } catch {}\n-  return null;\n+  }\n+  const absoluteUrl = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n+  return _isValidProtocol(absoluteUrl) ? absoluteUrl : null;\n+}\n+function updateUrlHash(url, hash, allowRel = false) {\n+  const res = URL.parse(url);\n+  if (res) {\n+    res.hash = hash;\n+    return res.href;\n+  }\n+  if (allowRel && createValidAbsoluteUrl(url, \"http:\u002F\u002Fexample.com\")) {\n+    return url.split(\"#\", 1)[0] + `${hash ? `#${hash}` : \"\"}`;\n+  }\n+  return \"\";\n }\n function shadow(obj, prop, value, nonSerializable = false) {\n   Object.defineProperty(obj, prop, {\n@@ -446,9 +5552,6 @@\n }\n const BaseException = function BaseExceptionClosure() {\n   function BaseException(message, name) {\n-    if (this.constructor === BaseException) {\n-      unreachable(\"Cannot initialize BaseException.\");\n-    }\n     this.message = message;\n     this.name = name;\n   }\n@@ -473,15 +5576,11 @@\n     super(msg, \"InvalidPDFException\");\n   }\n }\n-class MissingPDFException extends BaseException {\n-  constructor(msg) {\n-    super(msg, \"MissingPDFException\");\n-  }\n-}\n-class UnexpectedResponseException extends BaseException {\n-  constructor(msg, status) {\n-    super(msg, \"UnexpectedResponseException\");\n+class ResponseException extends BaseException {\n+  constructor(msg, status, missing) {\n+    super(msg, \"ResponseException\");\n     this.status = status;\n+    this.missing = missing;\n   }\n }\n class FormatError extends BaseException {\n@@ -528,13 +5627,6 @@\n function objectSize(obj) {\n   return Object.keys(obj).length;\n }\n-function objectFromMap(map) {\n-  const obj = Object.create(null);\n-  for (const [key, value] of map) {\n-    obj[key] = value;\n-  }\n-  return obj;\n-}\n function isLittleEndian() {\n   const buffer8 = new Uint8Array(4);\n   buffer8[0] = 1;\n@@ -559,14 +5651,20 @@\n   static get isOffscreenCanvasSupported() {\n     return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n   }\n+  static get isImageDecoderSupported() {\n+    return shadow(this, \"isImageDecoderSupported\", typeof ImageDecoder !== \"undefined\");\n+  }\n   static get platform() {\n-    if (typeof navigator !== \"undefined\" && typeof navigator?.platform === \"string\") {\n-      return shadow(this, \"platform\", {\n-        isMac: navigator.platform.includes(\"Mac\")\n-      });\n-    }\n+    const {\n+      platform,\n+      userAgent\n+    } = navigator;\n     return shadow(this, \"platform\", {\n-      isMac: false\n+      isAndroid: userAgent.includes(\"Android\"),\n+      isLinux: platform.includes(\"Linux\"),\n+      isMac: platform.includes(\"Mac\"),\n+      isWindows: platform.includes(\"Win\"),\n+      isFirefox: userAgent.includes(\"Firefox\")\n     });\n   }\n   static get isCSSRoundSupported() {\n@@ -625,39 +5723,87 @@\n   static transform(m1, m2) {\n     return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n   }\n-  static applyTransform(p, m) {\n-    const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n-    const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n-    return [xt, yt];\n+  static applyTransform(p, m, pos = 0) {\n+    const p0 = p[pos];\n+    const p1 = p[pos + 1];\n+    p[pos] = p0 * m[0] + p1 * m[2] + m[4];\n+    p[pos + 1] = p0 * m[1] + p1 * m[3] + m[5];\n+  }\n+  static applyTransformToBezier(p, transform, pos = 0) {\n+    const m0 = transform[0];\n+    const m1 = transform[1];\n+    const m2 = transform[2];\n+    const m3 = transform[3];\n+    const m4 = transform[4];\n+    const m5 = transform[5];\n+    for (let i = 0; i \u003C 6; i += 2) {\n+      const pI = p[pos + i];\n+      const pI1 = p[pos + i + 1];\n+      p[pos + i] = pI * m0 + pI1 * m2 + m4;\n+      p[pos + i + 1] = pI * m1 + pI1 * m3 + m5;\n+    }\n   }\n   static applyInverseTransform(p, m) {\n+    const p0 = p[0];\n+    const p1 = p[1];\n     const d = m[0] * m[3] - m[1] * m[2];\n-    const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) \u002F d;\n-    const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) \u002F d;\n-    return [xt, yt];\n-  }\n-  static getAxialAlignedBoundingBox(r, m) {\n-    const p1 = this.applyTransform(r, m);\n-    const p2 = this.applyTransform(r.slice(2, 4), m);\n-    const p3 = this.applyTransform([r[0], r[3]], m);\n-    const p4 = this.applyTransform([r[2], r[1]], m);\n-    return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];\n+    p[0] = (p0 * m[3] - p1 * m[2] + m[2] * m[5] - m[4] * m[3]) \u002F d;\n+    p[1] = (-p0 * m[1] + p1 * m[0] + m[4] * m[1] - m[5] * m[0]) \u002F d;\n+  }\n+  static axialAlignedBoundingBox(rect, transform, output) {\n+    const m0 = transform[0];\n+    const m1 = transform[1];\n+    const m2 = transform[2];\n+    const m3 = transform[3];\n+    const m4 = transform[4];\n+    const m5 = transform[5];\n+    const r0 = rect[0];\n+    const r1 = rect[1];\n+    const r2 = rect[2];\n+    const r3 = rect[3];\n+    let a0 = m0 * r0 + m4;\n+    let a2 = a0;\n+    let a1 = m0 * r2 + m4;\n+    let a3 = a1;\n+    let b0 = m3 * r1 + m5;\n+    let b2 = b0;\n+    let b1 = m3 * r3 + m5;\n+    let b3 = b1;\n+    if (m1 !== 0 || m2 !== 0) {\n+      const m1r0 = m1 * r0;\n+      const m1r2 = m1 * r2;\n+      const m2r1 = m2 * r1;\n+      const m2r3 = m2 * r3;\n+      a0 += m2r1;\n+      a3 += m2r1;\n+      a1 += m2r3;\n+      a2 += m2r3;\n+      b0 += m1r0;\n+      b3 += m1r0;\n+      b1 += m1r2;\n+      b2 += m1r2;\n+    }\n+    output[0] = Math.min(output[0], a0, a1, a2, a3);\n+    output[1] = Math.min(output[1], b0, b1, b2, b3);\n+    output[2] = Math.max(output[2], a0, a1, a2, a3);\n+    output[3] = Math.max(output[3], b0, b1, b2, b3);\n   }\n   static inverseTransform(m) {\n     const d = m[0] * m[3] - m[1] * m[2];\n     return [m[3] \u002F d, -m[1] \u002F d, -m[2] \u002F d, m[0] \u002F d, (m[2] * m[5] - m[4] * m[3]) \u002F d, (m[4] * m[1] - m[5] * m[0]) \u002F d];\n   }\n-  static singularValueDecompose2dScale(m) {\n-    const transpose = [m[0], m[2], m[1], m[3]];\n-    const a = m[0] * transpose[0] + m[1] * transpose[2];\n-    const b = m[0] * transpose[1] + m[1] * transpose[3];\n-    const c = m[2] * transpose[0] + m[3] * transpose[2];\n-    const d = m[2] * transpose[1] + m[3] * transpose[3];\n-    const first = (a + d) \u002F 2;\n-    const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) \u002F 2;\n-    const sx = first + second || 1;\n-    const sy = first - second || 1;\n-    return [Math.sqrt(sx), Math.sqrt(sy)];\n+  static singularValueDecompose2dScale(matrix, output) {\n+    const m0 = matrix[0];\n+    const m1 = matrix[1];\n+    const m2 = matrix[2];\n+    const m3 = matrix[3];\n+    const a = m0 ** 2 + m1 ** 2;\n+    const b = m0 * m2 + m1 * m3;\n+    const c = m2 ** 2 + m3 ** 2;\n+    const first = (a + c) \u002F 2;\n+    const second = Math.sqrt(first ** 2 - (a * c - b ** 2));\n+    output[0] = Math.sqrt(first + second || 1);\n+    output[1] = Math.sqrt(first - second || 1);\n   }\n   static normalizeRect(rect) {\n     const r = rect.slice(0);\n@@ -684,6 +5830,18 @@\n     }\n     return [xLow, yLow, xHigh, yHigh];\n   }\n+  static pointBoundingBox(x, y, minMax) {\n+    minMax[0] = Math.min(minMax[0], x);\n+    minMax[1] = Math.min(minMax[1], y);\n+    minMax[2] = Math.max(minMax[2], x);\n+    minMax[3] = Math.max(minMax[3], y);\n+  }\n+  static rectBoundingBox(x0, y0, x1, y1, minMax) {\n+    minMax[0] = Math.min(minMax[0], x0, x1);\n+    minMax[1] = Math.min(minMax[1], y0, y1);\n+    minMax[2] = Math.max(minMax[2], x0, x1);\n+    minMax[3] = Math.max(minMax[3], y0, y1);\n+  }\n   static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\n     if (t \u003C= 0 || t >= 1) {\n       return;\n@@ -715,21 +5873,16 @@\n     this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b - sqrtDelta) \u002F a2, minMax);\n   }\n   static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n-    if (minMax) {\n-      minMax[0] = Math.min(minMax[0], x0, x3);\n-      minMax[1] = Math.min(minMax[1], y0, y3);\n-      minMax[2] = Math.max(minMax[2], x0, x3);\n-      minMax[3] = Math.max(minMax[3], y0, y3);\n-    } else {\n-      minMax = [Math.min(x0, x3), Math.min(y0, y3), Math.max(x0, x3), Math.max(y0, y3)];\n-    }\n+    minMax[0] = Math.min(minMax[0], x0, x3);\n+    minMax[1] = Math.min(minMax[1], y0, y3);\n+    minMax[2] = Math.max(minMax[2], x0, x3);\n+    minMax[3] = Math.max(minMax[3], y0, y3);\n     this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-x0 + 3 * (x1 - x2) + x3), 6 * (x0 - 2 * x1 + x2), 3 * (x1 - x0), minMax);\n     this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-y0 + 3 * (y1 - y2) + y3), 6 * (y0 - 2 * y1 + y2), 3 * (y1 - y0), minMax);\n-    return minMax;\n   }\n }\n const PDFStringTranslateTable = (\u002F* unused pure expression or super *\u002F null && ([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac]));\n-function stringToPDFString(str) {\n+function stringToPDFString(str, keepEscapeSequence = false) {\n   if (str[0] >= \"\\xEF\") {\n     let encoding;\n     if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n@@ -752,7 +5905,7 @@\n         });\n         const buffer = stringToBytes(str);\n         const decoded = decoder.decode(buffer);\n-        if (!decoded.includes(\"\\x1b\")) {\n+        if (keepEscapeSequence || !decoded.includes(\"\\x1b\")) {\n           return decoded;\n         }\n         return decoded.replaceAll(\u002F\\x1b[^\\x1b]*(?:\\x1b|$)\u002Fg, \"\");\n@@ -764,7 +5917,7 @@\n   const strBuf = [];\n   for (let i = 0, ii = str.length; i \u003C ii; i++) {\n     const charCode = str.charCodeAt(i);\n-    if (charCode === 0x1b) {\n+    if (!keepEscapeSequence && charCode === 0x1b) {\n       while (++i \u003C ii && str.charCodeAt(i) !== 0x1b) {}\n       continue;\n     }\n@@ -804,185 +5957,146 @@\n   return str.replaceAll(NormalizeRegex, (_, p1, p2) => p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2));\n }\n function getUuid() {\n-  if (typeof crypto !== \"undefined\" && typeof crypto?.randomUUID === \"function\") {\n+  if (typeof crypto.randomUUID === \"function\") {\n     return crypto.randomUUID();\n   }\n   const buf = new Uint8Array(32);\n-  if (typeof crypto !== \"undefined\" && typeof crypto?.getRandomValues === \"function\") {\n-    crypto.getRandomValues(buf);\n-  } else {\n-    for (let i = 0; i \u003C 32; i++) {\n-      buf[i] = Math.floor(Math.random() * 255);\n-    }\n-  }\n+  crypto.getRandomValues(buf);\n   return bytesToString(buf);\n }\n const AnnotationPrefix = \"pdfjs_internal_id_\";\n-const FontRenderOps = {\n-  BEZIER_CURVE_TO: 0,\n-  MOVE_TO: 1,\n-  LINE_TO: 2,\n-  QUADRATIC_CURVE_TO: 3,\n-  RESTORE: 4,\n-  SAVE: 5,\n-  SCALE: 6,\n-  TRANSFORM: 7,\n-  TRANSLATE: 8\n-};\n-\n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Fbase_factory.js\n-\n-class BaseFilterFactory {\n-  constructor() {\n-    if (this.constructor === BaseFilterFactory) {\n-      unreachable(\"Cannot initialize BaseFilterFactory.\");\n-    }\n-  }\n-  addFilter(maps) {\n-    return \"none\";\n-  }\n-  addHCMFilter(fgColor, bgColor) {\n-    return \"none\";\n-  }\n-  addAlphaFilter(map) {\n-    return \"none\";\n-  }\n-  addLuminosityFilter(map) {\n-    return \"none\";\n-  }\n-  addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n-    return \"none\";\n+function _isValidExplicitDest(validRef, validName, dest) {\n+  if (!Array.isArray(dest) || dest.length \u003C 2) {\n+    return false;\n   }\n-  destroy(keepHCM = false) {}\n-}\n-class BaseCanvasFactory {\n-  constructor() {\n-    if (this.constructor === BaseCanvasFactory) {\n-      unreachable(\"Cannot initialize BaseCanvasFactory.\");\n-    }\n+  const [page, zoom, ...args] = dest;\n+  if (!validRef(page) && !Number.isInteger(page)) {\n+    return false;\n   }\n-  create(width, height) {\n-    if (width \u003C= 0 || height \u003C= 0) {\n-      throw new Error(\"Invalid canvas size\");\n-    }\n-    const canvas = this._createCanvas(width, height);\n-    return {\n-      canvas,\n-      context: canvas.getContext(\"2d\")\n-    };\n+  if (!validName(zoom)) {\n+    return false;\n   }\n-  reset(canvasAndContext, width, height) {\n-    if (!canvasAndContext.canvas) {\n-      throw new Error(\"Canvas is not specified\");\n-    }\n-    if (width \u003C= 0 || height \u003C= 0) {\n-      throw new Error(\"Invalid canvas size\");\n-    }\n-    canvasAndContext.canvas.width = width;\n-    canvasAndContext.canvas.height = height;\n+  const argsLen = args.length;\n+  let allowNull = true;\n+  switch (zoom.name) {\n+    case \"XYZ\":\n+      if (argsLen \u003C 2 || argsLen > 3) {\n+        return false;\n+      }\n+      break;\n+    case \"Fit\":\n+    case \"FitB\":\n+      return argsLen === 0;\n+    case \"FitH\":\n+    case \"FitBH\":\n+    case \"FitV\":\n+    case \"FitBV\":\n+      if (argsLen > 1) {\n+        return false;\n+      }\n+      break;\n+    case \"FitR\":\n+      if (argsLen !== 4) {\n+        return false;\n+      }\n+      allowNull = false;\n+      break;\n+    default:\n+      return false;\n   }\n-  destroy(canvasAndContext) {\n-    if (!canvasAndContext.canvas) {\n-      throw new Error(\"Canvas is not specified\");\n+  for (const arg of args) {\n+    if (typeof arg === \"number\" || allowNull && arg === null) {\n+      continue;\n     }\n-    canvasAndContext.canvas.width = 0;\n-    canvasAndContext.canvas.height = 0;\n-    canvasAndContext.canvas = null;\n-    canvasAndContext.context = null;\n-  }\n-  _createCanvas(width, height) {\n-    unreachable(\"Abstract method `_createCanvas` called.\");\n+    return false;\n   }\n+  return true;\n }\n-class BaseCMapReaderFactory {\n-  constructor({\n-    baseUrl = null,\n-    isCompressed = true\n-  }) {\n-    if (this.constructor === BaseCMapReaderFactory) {\n-      unreachable(\"Cannot initialize BaseCMapReaderFactory.\");\n-    }\n-    this.baseUrl = baseUrl;\n-    this.isCompressed = isCompressed;\n-  }\n-  async fetch({\n-    name\n-  }) {\n-    if (!this.baseUrl) {\n-      throw new Error('The CMap \"baseUrl\" parameter must be specified, ensure that ' + 'the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.');\n-    }\n-    if (!name) {\n-      throw new Error(\"CMap name must be specified.\");\n-    }\n-    const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n-    const compressionType = this.isCompressed ? CMapCompressionType.BINARY : CMapCompressionType.NONE;\n-    return this._fetchData(url, compressionType).catch(reason => {\n-      throw new Error(`Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`);\n-    });\n-  }\n-  _fetchData(url, compressionType) {\n-    unreachable(\"Abstract method `_fetchData` called.\");\n-  }\n+function MathClamp(v, min, max) {\n+  return Math.min(Math.max(v, min), max);\n }\n-class BaseStandardFontDataFactory {\n-  constructor({\n-    baseUrl = null\n-  }) {\n-    if (this.constructor === BaseStandardFontDataFactory) {\n-      unreachable(\"Cannot initialize BaseStandardFontDataFactory.\");\n-    }\n-    this.baseUrl = baseUrl;\n-  }\n-  async fetch({\n-    filename\n-  }) {\n-    if (!this.baseUrl) {\n-      throw new Error('The standard font \"baseUrl\" parameter must be specified, ensure that ' + 'the \"standardFontDataUrl\" API parameter is provided.');\n-    }\n-    if (!filename) {\n-      throw new Error(\"Font filename must be specified.\");\n-    }\n-    const url = `${this.baseUrl}${filename}`;\n-    return this._fetchData(url).catch(reason => {\n-      throw new Error(`Unable to load font data at: ${url}`);\n-    });\n+function toHexUtil(arr) {\n+  if (Uint8Array.prototype.toHex) {\n+    return arr.toHex();\n   }\n-  _fetchData(url) {\n-    unreachable(\"Abstract method `_fetchData` called.\");\n+  return Array.from(arr, num => hexNumbers[num]).join(\"\");\n+}\n+function toBase64Util(arr) {\n+  if (Uint8Array.prototype.toBase64) {\n+    return arr.toBase64();\n   }\n+  return btoa(bytesToString(arr));\n }\n-class BaseSVGFactory {\n-  constructor() {\n-    if (this.constructor === BaseSVGFactory) {\n-      unreachable(\"Cannot initialize BaseSVGFactory.\");\n-    }\n+function fromBase64Util(str) {\n+  if (Uint8Array.fromBase64) {\n+    return Uint8Array.fromBase64(str);\n   }\n-  create(width, height, skipDimensions = false) {\n-    if (width \u003C= 0 || height \u003C= 0) {\n-      throw new Error(\"Invalid SVG dimensions\");\n-    }\n-    const svg = this._createSVG(\"svg:svg\");\n-    svg.setAttribute(\"version\", \"1.1\");\n-    if (!skipDimensions) {\n-      svg.setAttribute(\"width\", `${width}px`);\n-      svg.setAttribute(\"height\", `${height}px`);\n+  return stringToBytes(atob(str));\n+}\n+if (typeof Math.sumPrecise !== \"function\") {\n+  Math.sumPrecise = function (numbers) {\n+    return numbers.reduce((a, b) => a + b, 0);\n+  };\n+}\n+if (typeof AbortSignal.any !== \"function\") {\n+  AbortSignal.any = function (iterable) {\n+    const ac = new AbortController();\n+    const {\n+      signal\n+    } = ac;\n+    for (const s of iterable) {\n+      if (s.aborted) {\n+        ac.abort(s.reason);\n+        return signal;\n+      }\n     }\n-    svg.setAttribute(\"preserveAspectRatio\", \"none\");\n-    svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n-    return svg;\n-  }\n-  createElement(type) {\n-    if (typeof type !== \"string\") {\n-      throw new Error(\"Invalid SVG element type\");\n+    for (const s of iterable) {\n+      s.addEventListener(\"abort\", () => {\n+        ac.abort(s.reason);\n+      }, {\n+        signal\n+      });\n     }\n-    return this._createSVG(type);\n-  }\n-  _createSVG(type) {\n-    unreachable(\"Abstract method `_createSVG` called.\");\n-  }\n+    return signal;\n+  };\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Fdisplay_utils.js\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.map.js\n+var es_iterator_map = __webpack_require__(1701);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.promise.with-resolvers.js\n+var es_promise_with_resolvers = __webpack_require__(4628);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.difference.v2.js\n+var es_set_difference_v2 = __webpack_require__(7642);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.intersection.v2.js\n+var es_set_intersection_v2 = __webpack_require__(8004);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.is-disjoint-from.v2.js\n+var es_set_is_disjoint_from_v2 = __webpack_require__(3853);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.is-subset-of.v2.js\n+var es_set_is_subset_of_v2 = __webpack_require__(5876);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.is-superset-of.v2.js\n+var es_set_is_superset_of_v2 = __webpack_require__(2475);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.symmetric-difference.v2.js\n+var es_set_symmetric_difference_v2 = __webpack_require__(5024);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.union.v2.js\n+var es_set_union_v2 = __webpack_require__(1698);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.url-search-params.delete.js\n+var web_url_search_params_delete = __webpack_require__(4603);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.url-search-params.has.js\n+var web_url_search_params_has = __webpack_require__(7566);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.url-search-params.size.js\n+var web_url_search_params_size = __webpack_require__(8721);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.drop.js\n+var es_iterator_drop = __webpack_require__(9314);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.every.js\n+var es_iterator_every = __webpack_require__(1148);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.some.js\n+var es_iterator_some = __webpack_require__(3579);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.json.parse.js\n+var esnext_json_parse = __webpack_require__(8335);\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Fdisplay_utils.js\n+\n+\n+\n \n \n const SVG_NS = \"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\";\n@@ -991,321 +6105,6 @@\n   static PDF = 72.0;\n   static PDF_TO_CSS_UNITS = this.CSS \u002F this.PDF;\n }\n-class DOMFilterFactory extends BaseFilterFactory {\n-  #_cache;\n-  #_defs;\n-  #docId;\n-  #document;\n-  #_hcmCache;\n-  #id = 0;\n-  constructor({\n-    docId,\n-    ownerDocument = globalThis.document\n-  } = {}) {\n-    super();\n-    this.#docId = docId;\n-    this.#document = ownerDocument;\n-  }\n-  get #cache() {\n-    return this.#_cache ||= new Map();\n-  }\n-  get #hcmCache() {\n-    return this.#_hcmCache ||= new Map();\n-  }\n-  get #defs() {\n-    if (!this.#_defs) {\n-      const div = this.#document.createElement(\"div\");\n-      const {\n-        style\n-      } = div;\n-      style.visibility = \"hidden\";\n-      style.contain = \"strict\";\n-      style.width = style.height = 0;\n-      style.position = \"absolute\";\n-      style.top = style.left = 0;\n-      style.zIndex = -1;\n-      const svg = this.#document.createElementNS(SVG_NS, \"svg\");\n-      svg.setAttribute(\"width\", 0);\n-      svg.setAttribute(\"height\", 0);\n-      this.#_defs = this.#document.createElementNS(SVG_NS, \"defs\");\n-      div.append(svg);\n-      svg.append(this.#_defs);\n-      this.#document.body.append(div);\n-    }\n-    return this.#_defs;\n-  }\n-  #createTables(maps) {\n-    if (maps.length === 1) {\n-      const mapR = maps[0];\n-      const buffer = new Array(256);\n-      for (let i = 0; i \u003C 256; i++) {\n-        buffer[i] = mapR[i] \u002F 255;\n-      }\n-      const table = buffer.join(\",\");\n-      return [table, table, table];\n-    }\n-    const [mapR, mapG, mapB] = maps;\n-    const bufferR = new Array(256);\n-    const bufferG = new Array(256);\n-    const bufferB = new Array(256);\n-    for (let i = 0; i \u003C 256; i++) {\n-      bufferR[i] = mapR[i] \u002F 255;\n-      bufferG[i] = mapG[i] \u002F 255;\n-      bufferB[i] = mapB[i] \u002F 255;\n-    }\n-    return [bufferR.join(\",\"), bufferG.join(\",\"), bufferB.join(\",\")];\n-  }\n-  addFilter(maps) {\n-    if (!maps) {\n-      return \"none\";\n-    }\n-    let value = this.#cache.get(maps);\n-    if (value) {\n-      return value;\n-    }\n-    const [tableR, tableG, tableB] = this.#createTables(maps);\n-    const key = maps.length === 1 ? tableR : `${tableR}${tableG}${tableB}`;\n-    value = this.#cache.get(key);\n-    if (value) {\n-      this.#cache.set(maps, value);\n-      return value;\n-    }\n-    const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n-    const url = `url(#${id})`;\n-    this.#cache.set(maps, url);\n-    this.#cache.set(key, url);\n-    const filter = this.#createFilter(id);\n-    this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n-    return url;\n-  }\n-  addHCMFilter(fgColor, bgColor) {\n-    const key = `${fgColor}-${bgColor}`;\n-    const filterName = \"base\";\n-    let info = this.#hcmCache.get(filterName);\n-    if (info?.key === key) {\n-      return info.url;\n-    }\n-    if (info) {\n-      info.filter?.remove();\n-      info.key = key;\n-      info.url = \"none\";\n-      info.filter = null;\n-    } else {\n-      info = {\n-        key,\n-        url: \"none\",\n-        filter: null\n-      };\n-      this.#hcmCache.set(filterName, info);\n-    }\n-    if (!fgColor || !bgColor) {\n-      return info.url;\n-    }\n-    const fgRGB = this.#getRGB(fgColor);\n-    fgColor = Util.makeHexColor(...fgRGB);\n-    const bgRGB = this.#getRGB(bgColor);\n-    bgColor = Util.makeHexColor(...bgRGB);\n-    this.#defs.style.color = \"\";\n-    if (fgColor === \"#000000\" && bgColor === \"#ffffff\" || fgColor === bgColor) {\n-      return info.url;\n-    }\n-    const map = new Array(256);\n-    for (let i = 0; i \u003C= 255; i++) {\n-      const x = i \u002F 255;\n-      map[i] = x \u003C= 0.03928 ? x \u002F 12.92 : ((x + 0.055) \u002F 1.055) ** 2.4;\n-    }\n-    const table = map.join(\",\");\n-    const id = `g_${this.#docId}_hcm_filter`;\n-    const filter = info.filter = this.#createFilter(id);\n-    this.#addTransferMapConversion(table, table, table, filter);\n-    this.#addGrayConversion(filter);\n-    const getSteps = (c, n) => {\n-      const start = fgRGB[c] \u002F 255;\n-      const end = bgRGB[c] \u002F 255;\n-      const arr = new Array(n + 1);\n-      for (let i = 0; i \u003C= n; i++) {\n-        arr[i] = start + i \u002F n * (end - start);\n-      }\n-      return arr.join(\",\");\n-    };\n-    this.#addTransferMapConversion(getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), filter);\n-    info.url = `url(#${id})`;\n-    return info.url;\n-  }\n-  addAlphaFilter(map) {\n-    let value = this.#cache.get(map);\n-    if (value) {\n-      return value;\n-    }\n-    const [tableA] = this.#createTables([map]);\n-    const key = `alpha_${tableA}`;\n-    value = this.#cache.get(key);\n-    if (value) {\n-      this.#cache.set(map, value);\n-      return value;\n-    }\n-    const id = `g_${this.#docId}_alpha_map_${this.#id++}`;\n-    const url = `url(#${id})`;\n-    this.#cache.set(map, url);\n-    this.#cache.set(key, url);\n-    const filter = this.#createFilter(id);\n-    this.#addTransferMapAlphaConversion(tableA, filter);\n-    return url;\n-  }\n-  addLuminosityFilter(map) {\n-    let value = this.#cache.get(map || \"luminosity\");\n-    if (value) {\n-      return value;\n-    }\n-    let tableA, key;\n-    if (map) {\n-      [tableA] = this.#createTables([map]);\n-      key = `luminosity_${tableA}`;\n-    } else {\n-      key = \"luminosity\";\n-    }\n-    value = this.#cache.get(key);\n-    if (value) {\n-      this.#cache.set(map, value);\n-      return value;\n-    }\n-    const id = `g_${this.#docId}_luminosity_map_${this.#id++}`;\n-    const url = `url(#${id})`;\n-    this.#cache.set(map, url);\n-    this.#cache.set(key, url);\n-    const filter = this.#createFilter(id);\n-    this.#addLuminosityConversion(filter);\n-    if (map) {\n-      this.#addTransferMapAlphaConversion(tableA, filter);\n-    }\n-    return url;\n-  }\n-  addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n-    const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n-    let info = this.#hcmCache.get(filterName);\n-    if (info?.key === key) {\n-      return info.url;\n-    }\n-    if (info) {\n-      info.filter?.remove();\n-      info.key = key;\n-      info.url = \"none\";\n-      info.filter = null;\n-    } else {\n-      info = {\n-        key,\n-        url: \"none\",\n-        filter: null\n-      };\n-      this.#hcmCache.set(filterName, info);\n-    }\n-    if (!fgColor || !bgColor) {\n-      return info.url;\n-    }\n-    const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n-    let fgGray = Math.round(0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]);\n-    let bgGray = Math.round(0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]);\n-    let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(this.#getRGB.bind(this));\n-    if (bgGray \u003C fgGray) {\n-      [fgGray, bgGray, newFgRGB, newBgRGB] = [bgGray, fgGray, newBgRGB, newFgRGB];\n-    }\n-    this.#defs.style.color = \"\";\n-    const getSteps = (fg, bg, n) => {\n-      const arr = new Array(256);\n-      const step = (bgGray - fgGray) \u002F n;\n-      const newStart = fg \u002F 255;\n-      const newStep = (bg - fg) \u002F (255 * n);\n-      let prev = 0;\n-      for (let i = 0; i \u003C= n; i++) {\n-        const k = Math.round(fgGray + i * step);\n-        const value = newStart + i * newStep;\n-        for (let j = prev; j \u003C= k; j++) {\n-          arr[j] = value;\n-        }\n-        prev = k + 1;\n-      }\n-      for (let i = prev; i \u003C 256; i++) {\n-        arr[i] = arr[prev - 1];\n-      }\n-      return arr.join(\",\");\n-    };\n-    const id = `g_${this.#docId}_hcm_${filterName}_filter`;\n-    const filter = info.filter = this.#createFilter(id);\n-    this.#addGrayConversion(filter);\n-    this.#addTransferMapConversion(getSteps(newFgRGB[0], newBgRGB[0], 5), getSteps(newFgRGB[1], newBgRGB[1], 5), getSteps(newFgRGB[2], newBgRGB[2], 5), filter);\n-    info.url = `url(#${id})`;\n-    return info.url;\n-  }\n-  destroy(keepHCM = false) {\n-    if (keepHCM && this.#hcmCache.size !== 0) {\n-      return;\n-    }\n-    if (this.#_defs) {\n-      this.#_defs.parentNode.parentNode.remove();\n-      this.#_defs = null;\n-    }\n-    if (this.#_cache) {\n-      this.#_cache.clear();\n-      this.#_cache = null;\n-    }\n-    this.#id = 0;\n-  }\n-  #addLuminosityConversion(filter) {\n-    const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n-    feColorMatrix.setAttribute(\"type\", \"matrix\");\n-    feColorMatrix.setAttribute(\"values\", \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0\");\n-    filter.append(feColorMatrix);\n-  }\n-  #addGrayConversion(filter) {\n-    const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n-    feColorMatrix.setAttribute(\"type\", \"matrix\");\n-    feColorMatrix.setAttribute(\"values\", \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\");\n-    filter.append(feColorMatrix);\n-  }\n-  #createFilter(id) {\n-    const filter = this.#document.createElementNS(SVG_NS, \"filter\");\n-    filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n-    filter.setAttribute(\"id\", id);\n-    this.#defs.append(filter);\n-    return filter;\n-  }\n-  #appendFeFunc(feComponentTransfer, func, table) {\n-    const feFunc = this.#document.createElementNS(SVG_NS, func);\n-    feFunc.setAttribute(\"type\", \"discrete\");\n-    feFunc.setAttribute(\"tableValues\", table);\n-    feComponentTransfer.append(feFunc);\n-  }\n-  #addTransferMapConversion(rTable, gTable, bTable, filter) {\n-    const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n-    filter.append(feComponentTransfer);\n-    this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n-    this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n-    this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n-  }\n-  #addTransferMapAlphaConversion(aTable, filter) {\n-    const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n-    filter.append(feComponentTransfer);\n-    this.#appendFeFunc(feComponentTransfer, \"feFuncA\", aTable);\n-  }\n-  #getRGB(color) {\n-    this.#defs.style.color = color;\n-    return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"color\"));\n-  }\n-}\n-class DOMCanvasFactory extends BaseCanvasFactory {\n-  constructor({\n-    ownerDocument = globalThis.document\n-  } = {}) {\n-    super();\n-    this._document = ownerDocument;\n-  }\n-  _createCanvas(width, height) {\n-    const canvas = this._document.createElement(\"canvas\");\n-    canvas.width = width;\n-    canvas.height = height;\n-    return canvas;\n-  }\n-}\n async function fetchData(url, type = \"text\") {\n   if (isValidFetchUrl(url, document.baseURI)) {\n     const response = await fetch(url);\n@@ -1346,27 +6145,10 @@\n     request.send(null);\n   });\n }\n-class DOMCMapReaderFactory extends BaseCMapReaderFactory {\n-  _fetchData(url, compressionType) {\n-    return fetchData(url, this.isCompressed ? \"arraybuffer\" : \"text\").then(data => ({\n-      cMapData: data instanceof ArrayBuffer ? new Uint8Array(data) : stringToBytes(data),\n-      compressionType\n-    }));\n-  }\n-}\n-class DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n-  _fetchData(url) {\n-    return fetchData(url, \"arraybuffer\").then(data => new Uint8Array(data));\n-  }\n-}\n-class DOMSVGFactory extends BaseSVGFactory {\n-  _createSVG(type) {\n-    return document.createElementNS(SVG_NS, type);\n-  }\n-}\n class PageViewport {\n   constructor({\n     viewBox,\n+    userUnit,\n     scale,\n     rotation,\n     offsetX = 0,\n@@ -1374,10 +6156,12 @@\n     dontFlip = false\n   }) {\n     this.viewBox = viewBox;\n+    this.userUnit = userUnit;\n     this.scale = scale;\n     this.rotation = rotation;\n     this.offsetX = offsetX;\n     this.offsetY = offsetY;\n+    scale *= userUnit;\n     const centerX = (viewBox[2] + viewBox[0]) \u002F 2;\n     const centerY = (viewBox[3] + viewBox[1]) \u002F 2;\n     let rotateA, rotateB, rotateC, rotateD;\n@@ -1435,14 +6219,12 @@\n     this.height = height;\n   }\n   get rawDims() {\n-    const {\n-      viewBox\n-    } = this;\n+    const dims = this.viewBox;\n     return shadow(this, \"rawDims\", {\n-      pageWidth: viewBox[2] - viewBox[0],\n-      pageHeight: viewBox[3] - viewBox[1],\n-      pageX: viewBox[0],\n-      pageY: viewBox[1]\n+      pageWidth: dims[2] - dims[0],\n+      pageHeight: dims[3] - dims[1],\n+      pageX: dims[0],\n+      pageY: dims[1]\n     });\n   }\n   clone({\n@@ -1454,6 +6236,7 @@\n   } = {}) {\n     return new PageViewport({\n       viewBox: this.viewBox.slice(),\n+      userUnit: this.userUnit,\n       scale,\n       rotation,\n       offsetX,\n@@ -1462,15 +6245,21 @@\n     });\n   }\n   convertToViewportPoint(x, y) {\n-    return Util.applyTransform([x, y], this.transform);\n+    const p = [x, y];\n+    Util.applyTransform(p, this.transform);\n+    return p;\n   }\n   convertToViewportRectangle(rect) {\n-    const topLeft = Util.applyTransform([rect[0], rect[1]], this.transform);\n-    const bottomRight = Util.applyTransform([rect[2], rect[3]], this.transform);\n+    const topLeft = [rect[0], rect[1]];\n+    Util.applyTransform(topLeft, this.transform);\n+    const bottomRight = [rect[2], rect[3]];\n+    Util.applyTransform(bottomRight, this.transform);\n     return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n   }\n   convertToPdfPoint(x, y) {\n-    return Util.applyInverseTransform([x, y], this.transform);\n+    const p = [x, y];\n+    Util.applyInverseTransform(p, this.transform);\n+    return p;\n   }\n }\n class RenderingCancelledException extends BaseException {\n@@ -1555,29 +6344,27 @@\n   }\n }\n function isValidFetchUrl(url, baseUrl) {\n-  try {\n-    const {\n-      protocol\n-    } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n-    return protocol === \"http:\" || protocol === \"https:\";\n-  } catch {\n-    return false;\n-  }\n+  const res = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n+  return res?.protocol === \"http:\" || res?.protocol === \"https:\";\n }\n function noContextMenu(e) {\n   e.preventDefault();\n }\n+function stopEvent(e) {\n+  e.preventDefault();\n+  e.stopPropagation();\n+}\n function deprecated(details) {\n   console.log(\"Deprecated API usage: \" + details);\n }\n-let pdfDateStringRegex;\n class PDFDateString {\n+  static #regex;\n   static toDateObject(input) {\n     if (!input || typeof input !== \"string\") {\n       return null;\n     }\n-    pdfDateStringRegex ||= new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+|-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n-    const matches = pdfDateStringRegex.exec(input);\n+    this.#regex ||= new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+|-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n+    const matches = this.#regex.exec(input);\n     if (!matches) {\n       return null;\n     }\n@@ -1618,6 +6405,7 @@\n   const viewBox = [0, 0, parseInt(width), parseInt(height)];\n   return new PageViewport({\n     viewBox,\n+    userUnit: 1,\n     scale,\n     rotation\n   });\n@@ -1639,6 +6427,7 @@\n function getColorValues(colors) {\n   const span = document.createElement(\"span\");\n   span.style.visibility = \"hidden\";\n+  span.style.colorScheme = \"only light\";\n   document.body.append(span);\n   for (const name of colors.keys()) {\n     span.style.color = name;\n@@ -1679,10 +6468,10 @@\n       style\n     } = div;\n     const useRound = util_FeatureTest.isCSSRoundSupported;\n-    const w = `var(--scale-factor) * ${pageWidth}px`,\n-      h = `var(--scale-factor) * ${pageHeight}px`;\n-    const widthStr = useRound ? `round(${w}, 1px)` : `calc(${w})`,\n-      heightStr = useRound ? `round(${h}, 1px)` : `calc(${h})`;\n+    const w = `var(--total-scale-factor) * ${pageWidth}px`,\n+      h = `var(--total-scale-factor) * ${pageHeight}px`;\n+    const widthStr = useRound ? `round(down, ${w}, var(--scale-round-x))` : `calc(${w})`,\n+      heightStr = useRound ? `round(down, ${h}, var(--scale-round-y))` : `calc(${h})`;\n     if (!mustFlip || viewport.rotation % 180 === 0) {\n       style.width = widthStr;\n       style.height = heightStr;\n@@ -1695,23 +6484,84 @@\n     div.setAttribute(\"data-main-rotation\", viewport.rotation);\n   }\n }\n+class OutputScale {\n+  constructor() {\n+    const {\n+      pixelRatio\n+    } = OutputScale;\n+    this.sx = pixelRatio;\n+    this.sy = pixelRatio;\n+  }\n+  get scaled() {\n+    return this.sx !== 1 || this.sy !== 1;\n+  }\n+  get symmetric() {\n+    return this.sx === this.sy;\n+  }\n+  limitCanvas(width, height, maxPixels, maxDim, capAreaFactor = -1) {\n+    let maxAreaScale = Infinity,\n+      maxWidthScale = Infinity,\n+      maxHeightScale = Infinity;\n+    maxPixels = OutputScale.capPixels(maxPixels, capAreaFactor);\n+    if (maxPixels > 0) {\n+      maxAreaScale = Math.sqrt(maxPixels \u002F (width * height));\n+    }\n+    if (maxDim !== -1) {\n+      maxWidthScale = maxDim \u002F width;\n+      maxHeightScale = maxDim \u002F height;\n+    }\n+    const maxScale = Math.min(maxAreaScale, maxWidthScale, maxHeightScale);\n+    if (this.sx > maxScale || this.sy > maxScale) {\n+      this.sx = maxScale;\n+      this.sy = maxScale;\n+      return true;\n+    }\n+    return false;\n+  }\n+  static get pixelRatio() {\n+    return globalThis.devicePixelRatio || 1;\n+  }\n+  static capPixels(maxPixels, capAreaFactor) {\n+    if (capAreaFactor >= 0) {\n+      const winPixels = Math.ceil(window.screen.availWidth * window.screen.availHeight * this.pixelRatio ** 2 * (1 + capAreaFactor \u002F 100));\n+      return maxPixels > 0 ? Math.min(maxPixels, winPixels) : winPixels;\n+    }\n+    return maxPixels;\n+  }\n+}\n+const SupportedImageMimeTypes = [\"image\u002Fapng\", \"image\u002Favif\", \"image\u002Fbmp\", \"image\u002Fgif\", \"image\u002Fjpeg\", \"image\u002Fpng\", \"image\u002Fsvg+xml\", \"image\u002Fwebp\", \"image\u002Fx-icon\"];\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Feditor\u002Ftoolbar.js\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Feditor\u002Ftoolbar.js\n \n class EditorToolbar {\n   #toolbar = null;\n   #colorPicker = null;\n   #editor;\n   #buttons = null;\n+  #altText = null;\n+  #signatureDescriptionButton = null;\n+  static #l10nRemove = null;\n   constructor(editor) {\n     this.#editor = editor;\n+    EditorToolbar.#l10nRemove ||= Object.freeze({\n+      freetext: \"pdfjs-editor-remove-freetext-button\",\n+      highlight: \"pdfjs-editor-remove-highlight-button\",\n+      ink: \"pdfjs-editor-remove-ink-button\",\n+      stamp: \"pdfjs-editor-remove-stamp-button\",\n+      signature: \"pdfjs-editor-remove-signature-button\"\n+    });\n   }\n   render() {\n     const editToolbar = this.#toolbar = document.createElement(\"div\");\n-    editToolbar.className = \"editToolbar\";\n+    editToolbar.classList.add(\"editToolbar\", \"hidden\");\n     editToolbar.setAttribute(\"role\", \"toolbar\");\n-    editToolbar.addEventListener(\"contextmenu\", noContextMenu);\n-    editToolbar.addEventListener(\"pointerdown\", EditorToolbar.#pointerDown);\n+    const signal = this.#editor._uiManager._signal;\n+    editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n+      signal\n+    });\n+    editToolbar.addEventListener(\"pointerdown\", EditorToolbar.#pointerDown, {\n+      signal\n+    });\n     const buttons = this.#buttons = document.createElement(\"div\");\n     buttons.className = \"buttons\";\n     editToolbar.append(buttons);\n@@ -1727,27 +6577,33 @@\n     this.#addDeleteButton();\n     return editToolbar;\n   }\n+  get div() {\n+    return this.#toolbar;\n+  }\n   static #pointerDown(e) {\n     e.stopPropagation();\n   }\n   #focusIn(e) {\n     this.#editor._focusEventsAllowed = false;\n-    e.preventDefault();\n-    e.stopPropagation();\n+    stopEvent(e);\n   }\n   #focusOut(e) {\n     this.#editor._focusEventsAllowed = true;\n-    e.preventDefault();\n-    e.stopPropagation();\n+    stopEvent(e);\n   }\n   #addListenersToElement(element) {\n+    const signal = this.#editor._uiManager._signal;\n     element.addEventListener(\"focusin\", this.#focusIn.bind(this), {\n-      capture: true\n+      capture: true,\n+      signal\n     });\n     element.addEventListener(\"focusout\", this.#focusOut.bind(this), {\n-      capture: true\n+      capture: true,\n+      signal\n+    });\n+    element.addEventListener(\"contextmenu\", noContextMenu, {\n+      signal\n     });\n-    element.addEventListener(\"contextmenu\", noContextMenu);\n   }\n   hide() {\n     this.#toolbar.classList.add(\"hidden\");\n@@ -1755,15 +6611,22 @@\n   }\n   show() {\n     this.#toolbar.classList.remove(\"hidden\");\n+    this.#altText?.shown();\n   }\n   #addDeleteButton() {\n+    const {\n+      editorType,\n+      _uiManager\n+    } = this.#editor;\n     const button = document.createElement(\"button\");\n     button.className = \"delete\";\n     button.tabIndex = 0;\n-    button.setAttribute(\"data-l10n-id\", `pdfjs-editor-remove-${this.#editor.editorType}-button`);\n+    button.setAttribute(\"data-l10n-id\", EditorToolbar.#l10nRemove[editorType]);\n     this.#addListenersToElement(button);\n     button.addEventListener(\"click\", e => {\n-      this.#editor._uiManager.delete();\n+      _uiManager.delete();\n+    }, {\n+      signal: _uiManager._signal\n     });\n     this.#buttons.append(button);\n   }\n@@ -1772,9 +6635,11 @@\n     divider.className = \"divider\";\n     return divider;\n   }\n-  addAltTextButton(button) {\n+  async addAltText(altText) {\n+    const button = await altText.render();\n     this.#addListenersToElement(button);\n     this.#buttons.prepend(button, this.#divider);\n+    this.#altText = altText;\n   }\n   addColorPicker(colorPicker) {\n     this.#colorPicker = colorPicker;\n@@ -1782,6 +6647,16 @@\n     this.#addListenersToElement(button);\n     this.#buttons.prepend(button, this.#divider);\n   }\n+  async addEditSignatureButton(signatureManager) {\n+    const button = this.#signatureDescriptionButton = await signatureManager.renderEditButton(this.#editor);\n+    this.#addListenersToElement(button);\n+    this.#buttons.prepend(button, this.#divider);\n+  }\n+  updateEditSignatureButton(description) {\n+    if (this.#signatureDescriptionButton) {\n+      this.#signatureDescriptionButton.title = description;\n+    }\n+  }\n   remove() {\n     this.#toolbar.remove();\n     this.#colorPicker?.destroy();\n@@ -1799,7 +6674,9 @@\n     const editToolbar = this.#toolbar = document.createElement(\"div\");\n     editToolbar.className = \"editToolbar\";\n     editToolbar.setAttribute(\"role\", \"toolbar\");\n-    editToolbar.addEventListener(\"contextmenu\", noContextMenu);\n+    editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n+      signal: this.#uiManager._signal\n+    });\n     const buttons = this.#buttons = document.createElement(\"div\");\n     buttons.className = \"buttons\";\n     editToolbar.append(buttons);\n@@ -1851,15 +6728,38 @@\n     button.append(span);\n     span.className = \"visuallyHidden\";\n     span.setAttribute(\"data-l10n-id\", \"pdfjs-highlight-floating-button-label\");\n-    button.addEventListener(\"contextmenu\", noContextMenu);\n+    const signal = this.#uiManager._signal;\n+    button.addEventListener(\"contextmenu\", noContextMenu, {\n+      signal\n+    });\n     button.addEventListener(\"click\", () => {\n       this.#uiManager.highlightSelection(\"floating_button\");\n+    }, {\n+      signal\n     });\n     this.#buttons.append(button);\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Feditor\u002Ftools.js\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Feditor\u002Ftools.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n \n@@ -1868,9 +6768,6 @@\n     element.addEventListener(name, obj[name].bind(obj));\n   }\n }\n-function opacityToHex(opacity) {\n-  return Math.round(Math.min(255, Math.max(1, 255 * opacity))).toString(16).padStart(2, \"0\");\n-}\n class IdManager {\n   #id = 0;\n   get id() {\n@@ -1884,7 +6781,9 @@\n   static get _isSVGFittingCanvas() {\n     const svg = `data:image\u002Fsvg+xml;charset=UTF-8,\u003Csvg viewBox=\"0 0 1 1\" width=\"1\" height=\"1\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\u003Crect width=\"1\" height=\"1\" style=\"fill:red;\"\u002F>\u003C\u002Fsvg>`;\n     const canvas = new OffscreenCanvas(1, 3);\n-    const ctx = canvas.getContext(\"2d\");\n+    const ctx = canvas.getContext(\"2d\", {\n+      willReadFrequently: true\n+    });\n     const image = new Image();\n     image.src = svg;\n     const promise = image.decode().then(() => {\n@@ -1914,8 +6813,10 @@\n       if (typeof rawData === \"string\") {\n         data.url = rawData;\n         image = await fetchData(rawData, \"blob\");\n-      } else {\n+      } else if (rawData instanceof File) {\n         image = data.file = rawData;\n+      } else if (rawData instanceof Blob) {\n+        image = rawData;\n       }\n       if (image.type === \"image\u002Fsvg+xml\") {\n         const mustRemoveAspectRatioPromise = ImageManager._isSVGFittingCanvas;\n@@ -1940,7 +6841,7 @@\n       }\n       data.refCounter = 1;\n     } catch (e) {\n-      console.error(e);\n+      warn(e);\n       data = null;\n     }\n     this.#cache.set(key, data);\n@@ -1961,6 +6862,10 @@\n   async getFromUrl(url) {\n     return this.#get(url, url);\n   }\n+  async getFromBlob(id, blobPromise) {\n+    const blob = await blobPromise;\n+    return this.#get(id, blob);\n+  }\n   async getFromId(id) {\n     this.#cache ||= new Map();\n     const data = this.#cache.get(id);\n@@ -1974,8 +6879,35 @@\n     if (data.file) {\n       return this.getFromFile(data.file);\n     }\n+    if (data.blobPromise) {\n+      const {\n+        blobPromise\n+      } = data;\n+      delete data.blobPromise;\n+      return this.getFromBlob(data.id, blobPromise);\n+    }\n     return this.getFromUrl(data.url);\n   }\n+  getFromCanvas(id, canvas) {\n+    this.#cache ||= new Map();\n+    let data = this.#cache.get(id);\n+    if (data?.bitmap) {\n+      data.refCounter += 1;\n+      return data;\n+    }\n+    const offscreen = new OffscreenCanvas(canvas.width, canvas.height);\n+    const ctx = offscreen.getContext(\"2d\");\n+    ctx.drawImage(canvas, 0, 0);\n+    data = {\n+      bitmap: offscreen.transferToImageBitmap(),\n+      id: `image_${this.#baseId}_${this.#id++}`,\n+      refCounter: 1,\n+      isSvg: false\n+    };\n+    this.#cache.set(id, data);\n+    this.#cache.set(data.id, data);\n+    return data;\n+  }\n   getSvgUrl(id) {\n     const data = this.#cache.get(id);\n     if (!data?.isSvg) {\n@@ -1993,6 +6925,16 @@\n     if (data.refCounter !== 0) {\n       return;\n     }\n+    const {\n+      bitmap\n+    } = data;\n+    if (!data.url && !data.file) {\n+      const canvas = new OffscreenCanvas(bitmap.width, bitmap.height);\n+      const ctx = canvas.getContext(\"bitmaprenderer\");\n+      ctx.transferFromImageBitmap(bitmap);\n+      data.blobPromise = canvas.convertToBlob();\n+    }\n+    bitmap.close?.();\n     data.bitmap = null;\n   }\n   isValidId(id) {\n@@ -2087,6 +7029,20 @@\n   hasSomethingToRedo() {\n     return this.#position \u003C this.#commands.length - 1;\n   }\n+  cleanType(type) {\n+    if (this.#position === -1) {\n+      return;\n+    }\n+    for (let i = this.#position; i >= 0; i--) {\n+      if (this.#commands[i].type !== type) {\n+        this.#commands.splice(i + 1, this.#position - i);\n+        this.#position = i;\n+        return;\n+      }\n+    }\n+    this.#commands.length = 0;\n+    this.#position = -1;\n+  }\n   destroy() {\n     this.#commands = null;\n   }\n@@ -2157,8 +7113,7 @@\n     }\n     callback.bind(self, ...args, event)();\n     if (!bubbles) {\n-      event.stopPropagation();\n-      event.preventDefault();\n+      stopEvent(event);\n     }\n   }\n }\n@@ -2190,6 +7145,7 @@\n   }\n }\n class AnnotationEditorUIManager {\n+  #abortController = new AbortController();\n   #activeEditor = null;\n   #allEditors = new Map();\n   #allLayers = new Map();\n@@ -2197,40 +7153,37 @@\n   #annotationStorage = null;\n   #changedExistingAnnotations = null;\n   #commandManager = new CommandManager();\n+  #copyPasteAC = null;\n+  #currentDrawingSession = null;\n   #currentPageIndex = 0;\n   #deletedAnnotationsElementIds = new Set();\n   #draggingEditors = null;\n   #editorTypes = null;\n   #editorsToRescale = new Set();\n+  _editorUndoBar = null;\n   #enableHighlightFloatingButton = false;\n+  #enableUpdatedAddImage = false;\n+  #enableNewAltTextWhenAddingImage = false;\n   #filterFactory = null;\n   #focusMainContainerTimeoutId = null;\n+  #focusManagerAC = null;\n   #highlightColors = null;\n   #highlightWhenShiftUp = false;\n   #highlightToolbar = null;\n   #idManager = new IdManager();\n   #isEnabled = false;\n   #isWaiting = false;\n+  #keyboardManagerAC = null;\n   #lastActiveElement = null;\n   #mainHighlightColorPicker = null;\n+  #missingCanvases = null;\n   #mlManager = null;\n   #mode = AnnotationEditorType.NONE;\n   #selectedEditors = new Set();\n   #selectedTextNode = null;\n+  #signatureManager = null;\n   #pageColors = null;\n   #showAllStates = null;\n-  #boundBlur = this.blur.bind(this);\n-  #boundFocus = this.focus.bind(this);\n-  #boundCopy = this.copy.bind(this);\n-  #boundCut = this.cut.bind(this);\n-  #boundPaste = this.paste.bind(this);\n-  #boundKeydown = this.keydown.bind(this);\n-  #boundKeyup = this.keyup.bind(this);\n-  #boundOnEditingAction = this.onEditingAction.bind(this);\n-  #boundOnPageChanging = this.onPageChanging.bind(this);\n-  #boundOnScaleChanging = this.onScaleChanging.bind(this);\n-  #boundSelectionChange = this.#selectionChange.bind(this);\n-  #boundOnRotationChanging = this.onRotationChanging.bind(this);\n   #previousStates = {\n     isEditing: false,\n     isEmpty: true,\n@@ -2243,6 +7196,7 @@\n   #translationTimeoutId = null;\n   #container = null;\n   #viewer = null;\n+  #updateModeCapability = null;\n   static TRANSLATE_SMALL = 1;\n   static TRANSLATE_BIG = 10;\n   static get _keyboardManager() {\n@@ -2303,48 +7257,72 @@\n       checker: arrowChecker\n     }]]));\n   }\n-  constructor(container, viewer, altTextManager, eventBus, pdfDocument, pageColors, highlightColors, enableHighlightFloatingButton, mlManager) {\n+  constructor(container, viewer, altTextManager, signatureManager, eventBus, pdfDocument, pageColors, highlightColors, enableHighlightFloatingButton, enableUpdatedAddImage, enableNewAltTextWhenAddingImage, mlManager, editorUndoBar, supportsPinchToZoom) {\n+    const signal = this._signal = this.#abortController.signal;\n     this.#container = container;\n     this.#viewer = viewer;\n     this.#altTextManager = altTextManager;\n+    this.#signatureManager = signatureManager;\n     this._eventBus = eventBus;\n-    this._eventBus._on(\"editingaction\", this.#boundOnEditingAction);\n-    this._eventBus._on(\"pagechanging\", this.#boundOnPageChanging);\n-    this._eventBus._on(\"scalechanging\", this.#boundOnScaleChanging);\n-    this._eventBus._on(\"rotationchanging\", this.#boundOnRotationChanging);\n+    eventBus._on(\"editingaction\", this.onEditingAction.bind(this), {\n+      signal\n+    });\n+    eventBus._on(\"pagechanging\", this.onPageChanging.bind(this), {\n+      signal\n+    });\n+    eventBus._on(\"scalechanging\", this.onScaleChanging.bind(this), {\n+      signal\n+    });\n+    eventBus._on(\"rotationchanging\", this.onRotationChanging.bind(this), {\n+      signal\n+    });\n+    eventBus._on(\"setpreference\", this.onSetPreference.bind(this), {\n+      signal\n+    });\n+    eventBus._on(\"switchannotationeditorparams\", evt => this.updateParams(evt.type, evt.value), {\n+      signal\n+    });\n     this.#addSelectionListener();\n+    this.#addDragAndDropListeners();\n     this.#addKeyboardManager();\n     this.#annotationStorage = pdfDocument.annotationStorage;\n     this.#filterFactory = pdfDocument.filterFactory;\n     this.#pageColors = pageColors;\n     this.#highlightColors = highlightColors || null;\n     this.#enableHighlightFloatingButton = enableHighlightFloatingButton;\n+    this.#enableUpdatedAddImage = enableUpdatedAddImage;\n+    this.#enableNewAltTextWhenAddingImage = enableNewAltTextWhenAddingImage;\n     this.#mlManager = mlManager || null;\n     this.viewParameters = {\n       realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\n       rotation: 0\n     };\n     this.isShiftKeyDown = false;\n+    this._editorUndoBar = editorUndoBar || null;\n+    this._supportsPinchToZoom = supportsPinchToZoom !== false;\n   }\n   destroy() {\n-    this.#removeKeyboardManager();\n-    this.#removeFocusManager();\n-    this._eventBus._off(\"editingaction\", this.#boundOnEditingAction);\n-    this._eventBus._off(\"pagechanging\", this.#boundOnPageChanging);\n-    this._eventBus._off(\"scalechanging\", this.#boundOnScaleChanging);\n-    this._eventBus._off(\"rotationchanging\", this.#boundOnRotationChanging);\n+    this.#updateModeCapability?.resolve();\n+    this.#updateModeCapability = null;\n+    this.#abortController?.abort();\n+    this.#abortController = null;\n+    this._signal = null;\n     for (const layer of this.#allLayers.values()) {\n       layer.destroy();\n     }\n     this.#allLayers.clear();\n     this.#allEditors.clear();\n     this.#editorsToRescale.clear();\n+    this.#missingCanvases?.clear();\n     this.#activeEditor = null;\n     this.#selectedEditors.clear();\n     this.#commandManager.destroy();\n     this.#altTextManager?.destroy();\n+    this.#signatureManager?.destroy();\n     this.#highlightToolbar?.hide();\n     this.#highlightToolbar = null;\n+    this.#mainHighlightColorPicker?.destroy();\n+    this.#mainHighlightColorPicker = null;\n     if (this.#focusMainContainerTimeoutId) {\n       clearTimeout(this.#focusMainContainerTimeoutId);\n       this.#focusMainContainerTimeoutId = null;\n@@ -2353,13 +7331,19 @@\n       clearTimeout(this.#translationTimeoutId);\n       this.#translationTimeoutId = null;\n     }\n-    this.#removeSelectionListener();\n+    this._editorUndoBar?.destroy();\n+  }\n+  combinedSignal(ac) {\n+    return AbortSignal.any([this._signal, ac.signal]);\n   }\n-  async mlGuess(data) {\n-    return this.#mlManager?.guess(data) || null;\n+  get mlManager() {\n+    return this.#mlManager;\n   }\n-  get hasMLManager() {\n-    return !!this.#mlManager;\n+  get useNewAltTextFlow() {\n+    return this.#enableUpdatedAddImage;\n+  }\n+  get useNewAltTextWhenAddingImage() {\n+    return this.#enableNewAltTextWhenAddingImage;\n   }\n   get hcmFilter() {\n     return shadow(this, \"hcmFilter\", this.#pageColors ? this.#filterFactory.addHCMFilter(this.#pageColors.foreground, this.#pageColors.background) : \"none\");\n@@ -2373,11 +7357,56 @@\n   get highlightColorNames() {\n     return shadow(this, \"highlightColorNames\", this.highlightColors ? new Map(Array.from(this.highlightColors, e => e.reverse())) : null);\n   }\n+  setCurrentDrawingSession(layer) {\n+    if (layer) {\n+      this.unselectAll();\n+      this.disableUserSelect(true);\n+    } else {\n+      this.disableUserSelect(false);\n+    }\n+    this.#currentDrawingSession = layer;\n+  }\n   setMainHighlightColorPicker(colorPicker) {\n     this.#mainHighlightColorPicker = colorPicker;\n   }\n-  editAltText(editor) {\n-    this.#altTextManager?.editAltText(this, editor);\n+  editAltText(editor, firstTime = false) {\n+    this.#altTextManager?.editAltText(this, editor, firstTime);\n+  }\n+  getSignature(editor) {\n+    this.#signatureManager?.getSignature({\n+      uiManager: this,\n+      editor\n+    });\n+  }\n+  get signatureManager() {\n+    return this.#signatureManager;\n+  }\n+  switchToMode(mode, callback) {\n+    this._eventBus.on(\"annotationeditormodechanged\", callback, {\n+      once: true,\n+      signal: this._signal\n+    });\n+    this._eventBus.dispatch(\"showannotationeditorui\", {\n+      source: this,\n+      mode\n+    });\n+  }\n+  setPreference(name, value) {\n+    this._eventBus.dispatch(\"setpreference\", {\n+      source: this,\n+      name,\n+      value\n+    });\n+  }\n+  onSetPreference({\n+    name,\n+    value\n+  }) {\n+    switch (name) {\n+      case \"enableNewAltTextWhenAddingImage\":\n+        this.#enableNewAltTextWhenAddingImage = value;\n+        break;\n+    }\n   }\n   onPageChanging({\n     pageNumber\n@@ -2418,6 +7447,7 @@\n     for (const editor of this.#editorsToRescale) {\n       editor.onScaleChanging();\n     }\n+    this.#currentDrawingSession?.onScaleChanging();\n   }\n   onRotationChanging({\n     pagesRotation\n@@ -2430,6 +7460,20 @@\n   }) {\n     return anchorNode.nodeType === Node.TEXT_NODE ? anchorNode.parentElement : anchorNode;\n   }\n+  #getLayerForTextLayer(textLayer) {\n+    const {\n+      currentLayer\n+    } = this;\n+    if (currentLayer.hasTextLayer(textLayer)) {\n+      return currentLayer;\n+    }\n+    for (const layer of this.#allLayers.values()) {\n+      if (layer.hasTextLayer(textLayer)) {\n+        return layer;\n+      }\n+    }\n+    return null;\n+  }\n   highlightSelection(methodOfCreation = \"\") {\n     const selection = document.getSelection();\n     if (!selection || selection.isCollapsed) {\n@@ -2449,30 +7493,30 @@\n       return;\n     }\n     selection.empty();\n-    if (this.#mode === AnnotationEditorType.NONE) {\n-      this._eventBus.dispatch(\"showannotationeditorui\", {\n-        source: this,\n-        mode: AnnotationEditorType.HIGHLIGHT\n+    const layer = this.#getLayerForTextLayer(textLayer);\n+    const isNoneMode = this.#mode === AnnotationEditorType.NONE;\n+    const callback = () => {\n+      layer?.createAndAddNewEditor({\n+        x: 0,\n+        y: 0\n+      }, false, {\n+        methodOfCreation,\n+        boxes,\n+        anchorNode,\n+        anchorOffset,\n+        focusNode,\n+        focusOffset,\n+        text\n       });\n-      this.showAllEditors(\"highlight\", true, true);\n-    }\n-    for (const layer of this.#allLayers.values()) {\n-      if (layer.hasTextLayer(textLayer)) {\n-        layer.createAndAddNewEditor({\n-          x: 0,\n-          y: 0\n-        }, false, {\n-          methodOfCreation,\n-          boxes,\n-          anchorNode,\n-          anchorOffset,\n-          focusNode,\n-          focusOffset,\n-          text\n-        });\n-        break;\n+      if (isNoneMode) {\n+        this.showAllEditors(\"highlight\", true, true);\n       }\n+    };\n+    if (isNoneMode) {\n+      this.switchToMode(AnnotationEditorType.HIGHLIGHT, callback);\n+      return;\n     }\n+    callback();\n   }\n   #displayHighlightToolbar() {\n     const selection = document.getSelection();\n@@ -2536,18 +7580,26 @@\n     }\n     this.#highlightWhenShiftUp = this.isShiftKeyDown;\n     if (!this.isShiftKeyDown) {\n+      const activeLayer = this.#mode === AnnotationEditorType.HIGHLIGHT ? this.#getLayerForTextLayer(textLayer) : null;\n+      activeLayer?.toggleDrawing();\n+      const ac = new AbortController();\n+      const signal = this.combinedSignal(ac);\n       const pointerup = e => {\n         if (e.type === \"pointerup\" && e.button !== 0) {\n           return;\n         }\n-        window.removeEventListener(\"pointerup\", pointerup);\n-        window.removeEventListener(\"blur\", pointerup);\n+        ac.abort();\n+        activeLayer?.toggleDrawing(true);\n         if (e.type === \"pointerup\") {\n           this.#onSelectEnd(\"main_toolbar\");\n         }\n       };\n-      window.addEventListener(\"pointerup\", pointerup);\n-      window.addEventListener(\"blur\", pointerup);\n+      window.addEventListener(\"pointerup\", pointerup, {\n+        signal\n+      });\n+      window.addEventListener(\"blur\", pointerup, {\n+        signal\n+      });\n     }\n   }\n   #onSelectEnd(methodOfCreation = \"\") {\n@@ -2558,18 +7610,26 @@\n     }\n   }\n   #addSelectionListener() {\n-    document.addEventListener(\"selectionchange\", this.#boundSelectionChange);\n-  }\n-  #removeSelectionListener() {\n-    document.removeEventListener(\"selectionchange\", this.#boundSelectionChange);\n+    document.addEventListener(\"selectionchange\", this.#selectionChange.bind(this), {\n+      signal: this._signal\n+    });\n   }\n   #addFocusManager() {\n-    window.addEventListener(\"focus\", this.#boundFocus);\n-    window.addEventListener(\"blur\", this.#boundBlur);\n+    if (this.#focusManagerAC) {\n+      return;\n+    }\n+    this.#focusManagerAC = new AbortController();\n+    const signal = this.combinedSignal(this.#focusManagerAC);\n+    window.addEventListener(\"focus\", this.focus.bind(this), {\n+      signal\n+    });\n+    window.addEventListener(\"blur\", this.blur.bind(this), {\n+      signal\n+    });\n   }\n   #removeFocusManager() {\n-    window.removeEventListener(\"focus\", this.#boundFocus);\n-    window.removeEventListener(\"blur\", this.#boundBlur);\n+    this.#focusManagerAC?.abort();\n+    this.#focusManagerAC = null;\n   }\n   blur() {\n     this.isShiftKeyDown = false;\n@@ -2600,27 +7660,56 @@\n     lastActiveElement.addEventListener(\"focusin\", () => {\n       lastEditor._focusEventsAllowed = true;\n     }, {\n-      once: true\n+      once: true,\n+      signal: this._signal\n     });\n     lastActiveElement.focus();\n   }\n   #addKeyboardManager() {\n-    window.addEventListener(\"keydown\", this.#boundKeydown);\n-    window.addEventListener(\"keyup\", this.#boundKeyup);\n+    if (this.#keyboardManagerAC) {\n+      return;\n+    }\n+    this.#keyboardManagerAC = new AbortController();\n+    const signal = this.combinedSignal(this.#keyboardManagerAC);\n+    window.addEventListener(\"keydown\", this.keydown.bind(this), {\n+      signal\n+    });\n+    window.addEventListener(\"keyup\", this.keyup.bind(this), {\n+      signal\n+    });\n   }\n   #removeKeyboardManager() {\n-    window.removeEventListener(\"keydown\", this.#boundKeydown);\n-    window.removeEventListener(\"keyup\", this.#boundKeyup);\n+    this.#keyboardManagerAC?.abort();\n+    this.#keyboardManagerAC = null;\n   }\n   #addCopyPasteListeners() {\n-    document.addEventListener(\"copy\", this.#boundCopy);\n-    document.addEventListener(\"cut\", this.#boundCut);\n-    document.addEventListener(\"paste\", this.#boundPaste);\n+    if (this.#copyPasteAC) {\n+      return;\n+    }\n+    this.#copyPasteAC = new AbortController();\n+    const signal = this.combinedSignal(this.#copyPasteAC);\n+    document.addEventListener(\"copy\", this.copy.bind(this), {\n+      signal\n+    });\n+    document.addEventListener(\"cut\", this.cut.bind(this), {\n+      signal\n+    });\n+    document.addEventListener(\"paste\", this.paste.bind(this), {\n+      signal\n+    });\n   }\n   #removeCopyPasteListeners() {\n-    document.removeEventListener(\"copy\", this.#boundCopy);\n-    document.removeEventListener(\"cut\", this.#boundCut);\n-    document.removeEventListener(\"paste\", this.#boundPaste);\n+    this.#copyPasteAC?.abort();\n+    this.#copyPasteAC = null;\n+  }\n+  #addDragAndDropListeners() {\n+    const signal = this._signal;\n+    document.addEventListener(\"dragover\", this.dragOver.bind(this), {\n+      signal\n+    });\n+    document.addEventListener(\"drop\", this.drop.bind(this), {\n+      signal\n+    });\n   }\n   addEditListeners() {\n     this.#addKeyboardManager();\n@@ -2630,6 +7719,30 @@\n     this.#removeKeyboardManager();\n     this.#removeCopyPasteListeners();\n   }\n+  dragOver(event) {\n+    for (const {\n+      type\n+    } of event.dataTransfer.items) {\n+      for (const editorType of this.#editorTypes) {\n+        if (editorType.isHandlingMimeForPasting(type)) {\n+          event.dataTransfer.dropEffect = \"copy\";\n+          event.preventDefault();\n+          return;\n+        }\n+      }\n+    }\n+  }\n+  drop(event) {\n+    for (const item of event.dataTransfer.items) {\n+      for (const editorType of this.#editorTypes) {\n+        if (editorType.isHandlingMimeForPasting(item.type)) {\n+          editorType.paste(item, this.currentLayer);\n+          event.preventDefault();\n+          return;\n+        }\n+      }\n+    }\n+  }\n   copy(event) {\n     event.preventDefault();\n     this.#activeEditor?.commitOrRemove();\n@@ -2652,7 +7765,7 @@\n     this.copy(event);\n     this.delete();\n   }\n-  paste(event) {\n+  async paste(event) {\n     event.preventDefault();\n     const {\n       clipboardData\n@@ -2683,7 +7796,7 @@\n     try {\n       const newEditors = [];\n       for (const editor of data) {\n-        const deserializedEditor = layer.deserialize(editor);\n+        const deserializedEditor = await layer.deserialize(editor);\n         if (!deserializedEditor) {\n           return;\n         }\n@@ -2811,49 +7924,64 @@\n   removeLayer(layer) {\n     this.#allLayers.delete(layer.pageIndex);\n   }\n-  updateMode(mode, editId = null, isFromKeyboard = false) {\n+  async updateMode(mode, editId = null, isFromKeyboard = false) {\n     if (this.#mode === mode) {\n       return;\n     }\n+    if (this.#updateModeCapability) {\n+      await this.#updateModeCapability.promise;\n+      if (!this.#updateModeCapability) {\n+        return;\n+      }\n+    }\n+    this.#updateModeCapability = Promise.withResolvers();\n+    this.#currentDrawingSession?.commitOrRemove();\n     this.#mode = mode;\n     if (mode === AnnotationEditorType.NONE) {\n       this.setEditingState(false);\n       this.#disableAll();\n+      this._editorUndoBar?.hide();\n+      this.#updateModeCapability.resolve();\n       return;\n     }\n+    if (mode === AnnotationEditorType.SIGNATURE) {\n+      await this.#signatureManager?.loadSignatures();\n+    }\n     this.setEditingState(true);\n-    this.#enableAll();\n+    await this.#enableAll();\n     this.unselectAll();\n     for (const layer of this.#allLayers.values()) {\n       layer.updateMode(mode);\n     }\n-    if (!editId && isFromKeyboard) {\n-      this.addNewEditorFromKeyboard();\n-      return;\n-    }\n     if (!editId) {\n+      if (isFromKeyboard) {\n+        this.addNewEditorFromKeyboard();\n+      }\n+      this.#updateModeCapability.resolve();\n       return;\n     }\n     for (const editor of this.#allEditors.values()) {\n-      if (editor.annotationElementId === editId) {\n+      if (editor.annotationElementId === editId || editor.id === editId) {\n         this.setSelected(editor);\n         editor.enterInEditMode();\n-        break;\n+      } else {\n+        editor.unselect();\n       }\n     }\n+    this.#updateModeCapability.resolve();\n   }\n   addNewEditorFromKeyboard() {\n     if (this.currentLayer.canCreateNewEmptyEditor()) {\n       this.currentLayer.addNewEditor();\n     }\n   }\n-  updateToolbar(mode) {\n-    if (mode === this.#mode) {\n+  updateToolbar(options) {\n+    if (options.mode === this.#mode) {\n       return;\n     }\n     this._eventBus.dispatch(\"switchannotationeditormode\", {\n       source: this,\n-      mode\n+      ...options\n     });\n   }\n   updateParams(type, value) {\n@@ -2862,7 +7990,7 @@\n     }\n     switch (type) {\n       case AnnotationEditorParamsType.CREATE:\n-        this.currentLayer.addNewEditor();\n+        this.currentLayer.addNewEditor(value);\n         return;\n       case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n         this.#mainHighlightColorPicker?.updateColor(value);\n@@ -2914,12 +8042,14 @@\n       layer.div.classList.toggle(\"waiting\", mustWait);\n     }\n   }\n-  #enableAll() {\n+  async #enableAll() {\n     if (!this.#isEnabled) {\n       this.#isEnabled = true;\n+      const promises = [];\n       for (const layer of this.#allLayers.values()) {\n-        layer.enable();\n+        promises.push(layer.enable());\n       }\n+      await Promise.all(promises);\n       for (const editor of this.#allEditors.values()) {\n         editor.enable();\n       }\n@@ -2963,6 +8093,9 @@\n       }, 0);\n     }\n     this.#allEditors.delete(editor.id);\n+    if (editor.annotationElementId) {\n+      this.#missingCanvases?.delete(editor.annotationElementId);\n+    }\n     this.unselect(editor);\n     if (!editor.annotationElementId || !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)) {\n       this.#annotationStorage?.remove(editor.id);\n@@ -3009,6 +8142,9 @@\n       this.#dispatchUpdateUI(editor.propertiesToUpdate);\n     }\n   }\n+  updateUIForDefaultProperties(editorType) {\n+    this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n+  }\n   toggleSelected(editor) {\n     if (this.#selectedEditors.has(editor)) {\n       this.#selectedEditors.delete(editor);\n@@ -3026,6 +8162,7 @@\n     });\n   }\n   setSelected(editor) {\n+    this.#currentDrawingSession?.commitOrRemove();\n     for (const ed of this.#selectedEditors) {\n       if (ed !== editor) {\n         ed.unselect();\n@@ -3065,6 +8202,7 @@\n       hasSomethingToRedo: true,\n       isEmpty: this.#isEmpty()\n     });\n+    this._editorUndoBar?.hide();\n   }\n   redo() {\n     this.#commandManager.redo();\n@@ -3082,6 +8220,9 @@\n       isEmpty: this.#isEmpty()\n     });\n   }\n+  cleanUndoStack(type) {\n+    this.#commandManager.cleanType(type);\n+  }\n   #isEmpty() {\n     if (this.#allEditors.size === 0) {\n       return true;\n@@ -3095,11 +8236,13 @@\n   }\n   delete() {\n     this.commitOrRemove();\n-    if (!this.hasSelection) {\n+    const drawingEditor = this.currentLayer?.endDrawingSession(true);\n+    if (!this.hasSelection && !drawingEditor) {\n       return;\n     }\n-    const editors = [...this.#selectedEditors];\n+    const editors = drawingEditor ? [drawingEditor] : [...this.#selectedEditors];\n     const cmd = () => {\n+      this._editorUndoBar?.show(undo, editors.length === 1 ? editors[0].editorType : editors.length);\n       for (const editor of editors) {\n         editor.remove();\n       }\n@@ -3150,6 +8293,9 @@\n         return;\n       }\n     }\n+    if (this.#currentDrawingSession?.commitOrRemove()) {\n+      return;\n+    }\n     if (!this.hasSelection) {\n       return;\n     }\n@@ -3184,6 +8330,7 @@\n           for (const editor of editors) {\n             if (this.#allEditors.has(editor.id)) {\n               editor.translateInPage(totalX, totalY);\n+              editor.translationDone();\n             }\n           }\n         },\n@@ -3191,6 +8338,7 @@\n           for (const editor of editors) {\n             if (this.#allEditors.has(editor.id)) {\n               editor.translateInPage(-totalX, -totalY);\n+              editor.translationDone();\n             }\n           }\n         },\n@@ -3199,6 +8347,7 @@\n     }, TIME_TO_WAIT);\n     for (const editor of editors) {\n       editor.translateInPage(x, y);\n+      editor.translationDone();\n     }\n   }\n   setUpDragSession() {\n@@ -3408,50 +8557,102 @@\n     }\n     editor.renderAnnotationElement(annotation);\n   }\n+  setMissingCanvas(annotationId, annotationElementId, canvas) {\n+    const editor = this.#missingCanvases?.get(annotationId);\n+    if (!editor) {\n+      return;\n+    }\n+    editor.setCanvas(annotationElementId, canvas);\n+    this.#missingCanvases.delete(annotationId);\n+  }\n+  addMissingCanvas(annotationId, editor) {\n+    (this.#missingCanvases ||= new Map()).set(annotationId, editor);\n+  }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Feditor\u002Falt_text.js\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Feditor\u002Falt_text.js\n \n class AltText {\n-  #altText = \"\";\n+  #altText = null;\n   #altTextDecorative = false;\n   #altTextButton = null;\n+  #altTextButtonLabel = null;\n   #altTextTooltip = null;\n   #altTextTooltipTimeout = null;\n   #altTextWasFromKeyBoard = false;\n+  #badge = null;\n   #editor = null;\n-  static _l10nPromise = null;\n+  #guessedText = null;\n+  #textWithDisclaimer = null;\n+  #useNewAltTextFlow = false;\n+  static #l10nNewButton = null;\n+  static _l10n = null;\n   constructor(editor) {\n     this.#editor = editor;\n+    this.#useNewAltTextFlow = editor._uiManager.useNewAltTextFlow;\n+    AltText.#l10nNewButton ||= Object.freeze({\n+      added: \"pdfjs-editor-new-alt-text-added-button\",\n+      \"added-label\": \"pdfjs-editor-new-alt-text-added-button-label\",\n+      missing: \"pdfjs-editor-new-alt-text-missing-button\",\n+      \"missing-label\": \"pdfjs-editor-new-alt-text-missing-button-label\",\n+      review: \"pdfjs-editor-new-alt-text-to-review-button\",\n+      \"review-label\": \"pdfjs-editor-new-alt-text-to-review-button-label\"\n+    });\n   }\n-  static initialize(l10nPromise) {\n-    AltText._l10nPromise ||= l10nPromise;\n+  static initialize(l10n) {\n+    AltText._l10n ??= l10n;\n   }\n   async render() {\n     const altText = this.#altTextButton = document.createElement(\"button\");\n     altText.className = \"altText\";\n-    const msg = await AltText._l10nPromise.get(\"pdfjs-editor-alt-text-button-label\");\n-    altText.textContent = msg;\n-    altText.setAttribute(\"aria-label\", msg);\n     altText.tabIndex = \"0\";\n-    altText.addEventListener(\"contextmenu\", noContextMenu);\n-    altText.addEventListener(\"pointerdown\", event => event.stopPropagation());\n+    const label = this.#altTextButtonLabel = document.createElement(\"span\");\n+    altText.append(label);\n+    if (this.#useNewAltTextFlow) {\n+      altText.classList.add(\"new\");\n+      altText.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton.missing);\n+      label.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[\"missing-label\"]);\n+    } else {\n+      altText.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button\");\n+      label.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button-label\");\n+    }\n+    const signal = this.#editor._uiManager._signal;\n+    altText.addEventListener(\"contextmenu\", noContextMenu, {\n+      signal\n+    });\n+    altText.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n+      signal\n+    });\n     const onClick = event => {\n       event.preventDefault();\n       this.#editor._uiManager.editAltText(this.#editor);\n+      if (this.#useNewAltTextFlow) {\n+        this.#editor._reportTelemetry({\n+          action: \"pdfjs.image.alt_text.image_status_label_clicked\",\n+          data: {\n+            label: this.#label\n+          }\n+        });\n+      }\n     };\n     altText.addEventListener(\"click\", onClick, {\n-      capture: true\n+      capture: true,\n+      signal\n     });\n     altText.addEventListener(\"keydown\", event => {\n       if (event.target === altText && event.key === \"Enter\") {\n         this.#altTextWasFromKeyBoard = true;\n         onClick(event);\n       }\n+    }, {\n+      signal\n     });\n     await this.#setState();\n     return altText;\n   }\n+  get #label() {\n+    return this.#altText && \"added\" || this.#altText === null && this.guessedText && \"review\" || \"missing\";\n+  }\n   finish() {\n     if (!this.#altTextButton) {\n       return;\n@@ -3462,8 +8663,55 @@\n     this.#altTextWasFromKeyBoard = false;\n   }\n   isEmpty() {\n+    if (this.#useNewAltTextFlow) {\n+      return this.#altText === null;\n+    }\n     return !this.#altText && !this.#altTextDecorative;\n   }\n+  hasData() {\n+    if (this.#useNewAltTextFlow) {\n+      return this.#altText !== null || !!this.#guessedText;\n+    }\n+    return this.isEmpty();\n+  }\n+  get guessedText() {\n+    return this.#guessedText;\n+  }\n+  async setGuessedText(guessedText) {\n+    if (this.#altText !== null) {\n+      return;\n+    }\n+    this.#guessedText = guessedText;\n+    this.#textWithDisclaimer = await AltText._l10n.get(\"pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer\", {\n+      generatedAltText: guessedText\n+    });\n+    this.#setState();\n+  }\n+  toggleAltTextBadge(visibility = false) {\n+    if (!this.#useNewAltTextFlow || this.#altText) {\n+      this.#badge?.remove();\n+      this.#badge = null;\n+      return;\n+    }\n+    if (!this.#badge) {\n+      const badge = this.#badge = document.createElement(\"div\");\n+      badge.className = \"noAltTextBadge\";\n+      this.#editor.div.append(badge);\n+    }\n+    this.#badge.classList.toggle(\"hidden\", !visibility);\n+  }\n+  serialize(isForCopying) {\n+    let altText = this.#altText;\n+    if (!isForCopying && this.#guessedText === altText) {\n+      altText = this.#textWithDisclaimer;\n+    }\n+    return {\n+      altText,\n+      decorative: this.#altTextDecorative,\n+      guessedText: this.#guessedText,\n+      textWithDisclaimer: this.#textWithDisclaimer\n+    };\n+  }\n   get data() {\n     return {\n       altText: this.#altText,\n@@ -3472,13 +8720,22 @@\n   }\n   set data({\n     altText,\n-    decorative\n+    decorative,\n+    guessedText,\n+    textWithDisclaimer,\n+    cancel = false\n   }) {\n+    if (guessedText) {\n+      this.#guessedText = guessedText;\n+      this.#textWithDisclaimer = textWithDisclaimer;\n+    }\n     if (this.#altText === altText && this.#altTextDecorative === decorative) {\n       return;\n     }\n-    this.#altText = altText;\n-    this.#altTextDecorative = decorative;\n+    if (!cancel) {\n+      this.#altText = altText;\n+      this.#altTextDecorative = decorative;\n+    }\n     this.#setState();\n   }\n   toggle(enabled = false) {\n@@ -3491,33 +8748,58 @@\n     }\n     this.#altTextButton.disabled = !enabled;\n   }\n+  shown() {\n+    this.#editor._reportTelemetry({\n+      action: \"pdfjs.image.alt_text.image_status_label_displayed\",\n+      data: {\n+        label: this.#label\n+      }\n+    });\n+  }\n   destroy() {\n     this.#altTextButton?.remove();\n     this.#altTextButton = null;\n+    this.#altTextButtonLabel = null;\n     this.#altTextTooltip = null;\n+    this.#badge?.remove();\n+    this.#badge = null;\n   }\n   async #setState() {\n     const button = this.#altTextButton;\n     if (!button) {\n       return;\n     }\n-    if (!this.#altText && !this.#altTextDecorative) {\n-      button.classList.remove(\"done\");\n-      this.#altTextTooltip?.remove();\n-      return;\n+    if (this.#useNewAltTextFlow) {\n+      button.classList.toggle(\"done\", !!this.#altText);\n+      button.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[this.#label]);\n+      this.#altTextButtonLabel?.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[`${this.#label}-label`]);\n+      if (!this.#altText) {\n+        this.#altTextTooltip?.remove();\n+        return;\n+      }\n+    } else {\n+      if (!this.#altText && !this.#altTextDecorative) {\n+        button.classList.remove(\"done\");\n+        this.#altTextTooltip?.remove();\n+        return;\n+      }\n+      button.classList.add(\"done\");\n+      button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-edit-button\");\n     }\n-    button.classList.add(\"done\");\n-    AltText._l10nPromise.get(\"pdfjs-editor-alt-text-edit-button-label\").then(msg => {\n-      button.setAttribute(\"aria-label\", msg);\n-    });\n     let tooltip = this.#altTextTooltip;\n     if (!tooltip) {\n       this.#altTextTooltip = tooltip = document.createElement(\"span\");\n       tooltip.className = \"tooltip\";\n       tooltip.setAttribute(\"role\", \"tooltip\");\n-      const id = tooltip.id = `alt-text-tooltip-${this.#editor.id}`;\n-      button.setAttribute(\"aria-describedby\", id);\n+      tooltip.id = `alt-text-tooltip-${this.#editor.id}`;\n       const DELAY_TO_SHOW_TOOLTIP = 100;\n+      const signal = this.#editor._uiManager._signal;\n+      signal.addEventListener(\"abort\", () => {\n+        clearTimeout(this.#altTextTooltipTimeout);\n+        this.#altTextTooltipTimeout = null;\n+      }, {\n+        once: true\n+      });\n       button.addEventListener(\"mouseenter\", () => {\n         this.#altTextTooltipTimeout = setTimeout(() => {\n           this.#altTextTooltipTimeout = null;\n@@ -3526,6 +8808,8 @@\n             action: \"alt_text_tooltip\"\n           });\n         }, DELAY_TO_SHOW_TOOLTIP);\n+      }, {\n+        signal\n       });\n       button.addEventListener(\"mouseleave\", () => {\n         if (this.#altTextTooltipTimeout) {\n@@ -3533,36 +8817,222 @@\n           this.#altTextTooltipTimeout = null;\n         }\n         this.#altTextTooltip?.classList.remove(\"show\");\n+      }, {\n+        signal\n       });\n     }\n-    tooltip.innerText = this.#altTextDecorative ? await AltText._l10nPromise.get(\"pdfjs-editor-alt-text-decorative-tooltip\") : this.#altText;\n+    if (this.#altTextDecorative) {\n+      tooltip.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-decorative-tooltip\");\n+    } else {\n+      tooltip.removeAttribute(\"data-l10n-id\");\n+      tooltip.textContent = this.#altText;\n+    }\n     if (!tooltip.parentNode) {\n       button.append(tooltip);\n     }\n-    const element = this.#editor.getImageForAltText();\n+    const element = this.#editor.getElementForAltText();\n     element?.setAttribute(\"aria-describedby\", tooltip.id);\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Feditor\u002Feditor.js\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Ftouch_manager.js\n+\n+class TouchManager {\n+  #container;\n+  #isPinching = false;\n+  #isPinchingStopped = null;\n+  #isPinchingDisabled;\n+  #onPinchStart;\n+  #onPinching;\n+  #onPinchEnd;\n+  #pointerDownAC = null;\n+  #signal;\n+  #touchInfo = null;\n+  #touchManagerAC;\n+  #touchMoveAC = null;\n+  constructor({\n+    container,\n+    isPinchingDisabled = null,\n+    isPinchingStopped = null,\n+    onPinchStart = null,\n+    onPinching = null,\n+    onPinchEnd = null,\n+    signal\n+  }) {\n+    this.#container = container;\n+    this.#isPinchingStopped = isPinchingStopped;\n+    this.#isPinchingDisabled = isPinchingDisabled;\n+    this.#onPinchStart = onPinchStart;\n+    this.#onPinching = onPinching;\n+    this.#onPinchEnd = onPinchEnd;\n+    this.#touchManagerAC = new AbortController();\n+    this.#signal = AbortSignal.any([signal, this.#touchManagerAC.signal]);\n+    container.addEventListener(\"touchstart\", this.#onTouchStart.bind(this), {\n+      passive: false,\n+      signal: this.#signal\n+    });\n+  }\n+  get MIN_TOUCH_DISTANCE_TO_PINCH() {\n+    return 35 \u002F OutputScale.pixelRatio;\n+  }\n+  #onTouchStart(evt) {\n+    if (this.#isPinchingDisabled?.()) {\n+      return;\n+    }\n+    if (evt.touches.length === 1) {\n+      if (this.#pointerDownAC) {\n+        return;\n+      }\n+      const pointerDownAC = this.#pointerDownAC = new AbortController();\n+      const signal = AbortSignal.any([this.#signal, pointerDownAC.signal]);\n+      const container = this.#container;\n+      const opts = {\n+        capture: true,\n+        signal,\n+        passive: false\n+      };\n+      const cancelPointerDown = e => {\n+        if (e.pointerType === \"touch\") {\n+          this.#pointerDownAC?.abort();\n+          this.#pointerDownAC = null;\n+        }\n+      };\n+      container.addEventListener(\"pointerdown\", e => {\n+        if (e.pointerType === \"touch\") {\n+          stopEvent(e);\n+          cancelPointerDown(e);\n+        }\n+      }, opts);\n+      container.addEventListener(\"pointerup\", cancelPointerDown, opts);\n+      container.addEventListener(\"pointercancel\", cancelPointerDown, opts);\n+      return;\n+    }\n+    if (!this.#touchMoveAC) {\n+      this.#touchMoveAC = new AbortController();\n+      const signal = AbortSignal.any([this.#signal, this.#touchMoveAC.signal]);\n+      const container = this.#container;\n+      const opt = {\n+        signal,\n+        capture: false,\n+        passive: false\n+      };\n+      container.addEventListener(\"touchmove\", this.#onTouchMove.bind(this), opt);\n+      const onTouchEnd = this.#onTouchEnd.bind(this);\n+      container.addEventListener(\"touchend\", onTouchEnd, opt);\n+      container.addEventListener(\"touchcancel\", onTouchEnd, opt);\n+      opt.capture = true;\n+      container.addEventListener(\"pointerdown\", stopEvent, opt);\n+      container.addEventListener(\"pointermove\", stopEvent, opt);\n+      container.addEventListener(\"pointercancel\", stopEvent, opt);\n+      container.addEventListener(\"pointerup\", stopEvent, opt);\n+      this.#onPinchStart?.();\n+    }\n+    stopEvent(evt);\n+    if (evt.touches.length !== 2 || this.#isPinchingStopped?.()) {\n+      this.#touchInfo = null;\n+      return;\n+    }\n+    let [touch0, touch1] = evt.touches;\n+    if (touch0.identifier > touch1.identifier) {\n+      [touch0, touch1] = [touch1, touch0];\n+    }\n+    this.#touchInfo = {\n+      touch0X: touch0.screenX,\n+      touch0Y: touch0.screenY,\n+      touch1X: touch1.screenX,\n+      touch1Y: touch1.screenY\n+    };\n+  }\n+  #onTouchMove(evt) {\n+    if (!this.#touchInfo || evt.touches.length !== 2) {\n+      return;\n+    }\n+    stopEvent(evt);\n+    let [touch0, touch1] = evt.touches;\n+    if (touch0.identifier > touch1.identifier) {\n+      [touch0, touch1] = [touch1, touch0];\n+    }\n+    const {\n+      screenX: screen0X,\n+      screenY: screen0Y\n+    } = touch0;\n+    const {\n+      screenX: screen1X,\n+      screenY: screen1Y\n+    } = touch1;\n+    const touchInfo = this.#touchInfo;\n+    const {\n+      touch0X: pTouch0X,\n+      touch0Y: pTouch0Y,\n+      touch1X: pTouch1X,\n+      touch1Y: pTouch1Y\n+    } = touchInfo;\n+    const prevGapX = pTouch1X - pTouch0X;\n+    const prevGapY = pTouch1Y - pTouch0Y;\n+    const currGapX = screen1X - screen0X;\n+    const currGapY = screen1Y - screen0Y;\n+    const distance = Math.hypot(currGapX, currGapY) || 1;\n+    const pDistance = Math.hypot(prevGapX, prevGapY) || 1;\n+    if (!this.#isPinching && Math.abs(pDistance - distance) \u003C= TouchManager.MIN_TOUCH_DISTANCE_TO_PINCH) {\n+      return;\n+    }\n+    touchInfo.touch0X = screen0X;\n+    touchInfo.touch0Y = screen0Y;\n+    touchInfo.touch1X = screen1X;\n+    touchInfo.touch1Y = screen1Y;\n+    if (!this.#isPinching) {\n+      this.#isPinching = true;\n+      return;\n+    }\n+    const origin = [(screen0X + screen1X) \u002F 2, (screen0Y + screen1Y) \u002F 2];\n+    this.#onPinching?.(origin, pDistance, distance);\n+  }\n+  #onTouchEnd(evt) {\n+    if (evt.touches.length >= 2) {\n+      return;\n+    }\n+    if (this.#touchMoveAC) {\n+      this.#touchMoveAC.abort();\n+      this.#touchMoveAC = null;\n+      this.#onPinchEnd?.();\n+    }\n+    if (!this.#touchInfo) {\n+      return;\n+    }\n+    stopEvent(evt);\n+    this.#touchInfo = null;\n+    this.#isPinching = false;\n+  }\n+  destroy() {\n+    this.#touchManagerAC?.abort();\n+    this.#touchManagerAC = null;\n+    this.#pointerDownAC?.abort();\n+    this.#pointerDownAC = null;\n+  }\n+}\n+\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Feditor\u002Feditor.js\n+\n \n \n \n \n \n class AnnotationEditor {\n+  #accessibilityData = null;\n   #allResizerDivs = null;\n   #altText = null;\n   #disabled = false;\n+  #dragPointerId = null;\n+  #dragPointerType = \"\";\n   #keepAspectRatio = false;\n   #resizersDiv = null;\n+  #lastPointerCoords = null;\n   #savedDimensions = null;\n-  #boundFocusin = this.focusin.bind(this);\n-  #boundFocusout = this.focusout.bind(this);\n-  #editToolbar = null;\n+  #focusAC = null;\n   #focusedResizerName = \"\";\n   #hasBeenClicked = false;\n-  #initialPosition = null;\n+  #initialRect = null;\n   #isEditing = false;\n   #isInEditMode = false;\n   #isResizerEnabledForKeyboard = false;\n@@ -3570,11 +9040,17 @@\n   #prevDragX = 0;\n   #prevDragY = 0;\n   #telemetryTimeouts = null;\n+  #touchManager = null;\n+  isSelected = false;\n+  _isCopy = false;\n+  _editToolbar = null;\n   _initialOptions = Object.create(null);\n+  _initialData = null;\n   _isVisible = true;\n   _uiManager = null;\n   _focusEventsAllowed = true;\n-  _l10nPromise = null;\n+  static _l10n = null;\n+  static _l10nResizer = null;\n   #isDraggable = false;\n   #zIndex = AnnotationEditor._zIndex++;\n   static _borderLineWidth = -1;\n@@ -3604,9 +9080,6 @@\n     }], [[\"Escape\", \"mac+Escape\"], AnnotationEditor.prototype._stopResizingWithKeyboard]]));\n   }\n   constructor(parameters) {\n-    if (this.constructor === AnnotationEditor) {\n-      unreachable(\"Cannot initialize AnnotationEditor.\");\n-    }\n     this.parent = parameters.parent;\n     this.id = parameters.id;\n     this.width = this.height = null;\n@@ -3640,6 +9113,9 @@\n   get editorType() {\n     return Object.getPrototypeOf(this).constructor._type;\n   }\n+  static get isDrawer() {\n+    return false;\n+  }\n   static get _defaultLineColor() {\n     return shadow(this, \"_defaultLineColor\", this._colorManager.getHexCode(\"CanvasText\"));\n   }\n@@ -3653,13 +9129,18 @@\n     fakeEditor.deleted = true;\n     fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);\n   }\n-  static initialize(l10n, _uiManager, options) {\n-    AnnotationEditor._l10nPromise ||= new Map([\"pdfjs-editor-alt-text-button-label\", \"pdfjs-editor-alt-text-edit-button-label\", \"pdfjs-editor-alt-text-decorative-tooltip\", \"pdfjs-editor-resizer-label-topLeft\", \"pdfjs-editor-resizer-label-topMiddle\", \"pdfjs-editor-resizer-label-topRight\", \"pdfjs-editor-resizer-label-middleRight\", \"pdfjs-editor-resizer-label-bottomRight\", \"pdfjs-editor-resizer-label-bottomMiddle\", \"pdfjs-editor-resizer-label-bottomLeft\", \"pdfjs-editor-resizer-label-middleLeft\"].map(str => [str, l10n.get(str.replaceAll(\u002F([A-Z])\u002Fg, c => `-${c.toLowerCase()}`))]));\n-    if (options?.strings) {\n-      for (const str of options.strings) {\n-        AnnotationEditor._l10nPromise.set(str, l10n.get(str));\n-      }\n-    }\n+  static initialize(l10n, _uiManager) {\n+    AnnotationEditor._l10n ??= l10n;\n+    AnnotationEditor._l10nResizer ||= Object.freeze({\n+      topLeft: \"pdfjs-editor-resizer-top-left\",\n+      topMiddle: \"pdfjs-editor-resizer-top-middle\",\n+      topRight: \"pdfjs-editor-resizer-top-right\",\n+      middleRight: \"pdfjs-editor-resizer-middle-right\",\n+      bottomRight: \"pdfjs-editor-resizer-bottom-right\",\n+      bottomMiddle: \"pdfjs-editor-resizer-bottom-middle\",\n+      bottomLeft: \"pdfjs-editor-resizer-bottom-left\",\n+      middleLeft: \"pdfjs-editor-resizer-middle-left\"\n+    });\n     if (AnnotationEditor._borderLineWidth !== -1) {\n       return;\n     }\n@@ -3778,25 +9259,37 @@\n     this.y = (y + ty) \u002F height;\n     this.fixAndSetPosition();\n   }\n+  _moveAfterPaste(baseX, baseY) {\n+    const [parentWidth, parentHeight] = this.parentDimensions;\n+    this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n+    this._onTranslated();\n+  }\n   #translate([width, height], x, y) {\n     [x, y] = this.screenToPageTranslation(x, y);\n     this.x += x \u002F width;\n     this.y += y \u002F height;\n+    this._onTranslating(this.x, this.y);\n     this.fixAndSetPosition();\n   }\n   translate(x, y) {\n     this.#translate(this.parentDimensions, x, y);\n   }\n   translateInPage(x, y) {\n-    this.#initialPosition ||= [this.x, this.y];\n+    this.#initialRect ||= [this.x, this.y, this.width, this.height];\n     this.#translate(this.pageDimensions, x, y);\n     this.div.scrollIntoView({\n       block: \"nearest\"\n     });\n   }\n+  translationDone() {\n+    this._onTranslated(this.x, this.y);\n+  }\n   drag(tx, ty) {\n-    this.#initialPosition ||= [this.x, this.y];\n-    const [parentWidth, parentHeight] = this.parentDimensions;\n+    this.#initialRect ||= [this.x, this.y, this.width, this.height];\n+    const {\n+      div,\n+      parentDimensions: [parentWidth, parentHeight]\n+    } = this;\n     this.x += tx \u002F parentWidth;\n     this.y += ty \u002F parentHeight;\n     if (this.parent && (this.x \u003C 0 || this.x > 1 || this.y \u003C 0 || this.y > 1)) {\n@@ -3816,14 +9309,23 @@\n     const [bx, by] = this.getBaseTranslation();\n     x += bx;\n     y += by;\n-    this.div.style.left = `${(100 * x).toFixed(2)}%`;\n-    this.div.style.top = `${(100 * y).toFixed(2)}%`;\n-    this.div.scrollIntoView({\n+    const {\n+      style\n+    } = div;\n+    style.left = `${(100 * x).toFixed(2)}%`;\n+    style.top = `${(100 * y).toFixed(2)}%`;\n+    this._onTranslating(x, y);\n+    div.scrollIntoView({\n       block: \"nearest\"\n     });\n   }\n+  _onTranslating(x, y) {}\n+  _onTranslated(x, y) {}\n   get _hasBeenMoved() {\n-    return !!this.#initialPosition && (this.#initialPosition[0] !== this.x || this.#initialPosition[1] !== this.y);\n+    return !!this.#initialRect && (this.#initialRect[0] !== this.x || this.#initialRect[1] !== this.y);\n+  }\n+  get _hasBeenResized() {\n+    return !!this.#initialRect && (this.#initialRect[2] !== this.width || this.#initialRect[3] !== this.height);\n   }\n   getBaseTranslation() {\n     const [parentWidth, parentHeight] = this.parentDimensions;\n@@ -3847,7 +9349,12 @@\n     return true;\n   }\n   fixAndSetPosition(rotation = this.rotation) {\n-    const [pageWidth, pageHeight] = this.pageDimensions;\n+    const {\n+      div: {\n+        style\n+      },\n+      pageDimensions: [pageWidth, pageHeight]\n+    } = this;\n     let {\n       x,\n       y,\n@@ -3861,20 +9368,20 @@\n     if (this._mustFixPosition) {\n       switch (rotation) {\n         case 0:\n-          x = Math.max(0, Math.min(pageWidth - width, x));\n-          y = Math.max(0, Math.min(pageHeight - height, y));\n+          x = MathClamp(x, 0, pageWidth - width);\n+          y = MathClamp(y, 0, pageHeight - height);\n           break;\n         case 90:\n-          x = Math.max(0, Math.min(pageWidth - height, x));\n-          y = Math.min(pageHeight, Math.max(width, y));\n+          x = MathClamp(x, 0, pageWidth - height);\n+          y = MathClamp(y, width, pageHeight);\n           break;\n         case 180:\n-          x = Math.min(pageWidth, Math.max(width, x));\n-          y = Math.min(pageHeight, Math.max(height, y));\n+          x = MathClamp(x, width, pageWidth);\n+          y = MathClamp(y, height, pageHeight);\n           break;\n         case 270:\n-          x = Math.min(pageWidth, Math.max(height, x));\n-          y = Math.max(0, Math.min(pageHeight - width, y));\n+          x = MathClamp(x, height, pageWidth);\n+          y = MathClamp(y, 0, pageHeight - width);\n           break;\n       }\n     }\n@@ -3883,9 +9390,6 @@\n     const [bx, by] = this.getBaseTranslation();\n     x += bx;\n     y += by;\n-    const {\n-      style\n-    } = this.div;\n     style.left = `${(100 * x).toFixed(2)}%`;\n     style.top = `${(100 * y).toFixed(2)}%`;\n     this.moveInDOM();\n@@ -3937,15 +9441,16 @@\n       parentScale,\n       pageDimensions: [pageWidth, pageHeight]\n     } = this;\n-    const scaledWidth = pageWidth * parentScale;\n-    const scaledHeight = pageHeight * parentScale;\n-    return util_FeatureTest.isCSSRoundSupported ? [Math.round(scaledWidth), Math.round(scaledHeight)] : [scaledWidth, scaledHeight];\n+    return [pageWidth * parentScale, pageHeight * parentScale];\n   }\n   setDims(width, height) {\n     const [parentWidth, parentHeight] = this.parentDimensions;\n-    this.div.style.width = `${(100 * width \u002F parentWidth).toFixed(2)}%`;\n+    const {\n+      style\n+    } = this.div;\n+    style.width = `${(100 * width \u002F parentWidth).toFixed(2)}%`;\n     if (!this.#keepAspectRatio) {\n-      this.div.style.height = `${(100 * height \u002F parentHeight).toFixed(2)}%`;\n+      style.height = `${(100 * height \u002F parentHeight).toFixed(2)}%`;\n     }\n   }\n   fixDims() {\n@@ -3979,13 +9484,18 @@\n     this.#resizersDiv = document.createElement(\"div\");\n     this.#resizersDiv.classList.add(\"resizers\");\n     const classes = this._willKeepAspectRatio ? [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"] : [\"topLeft\", \"topMiddle\", \"topRight\", \"middleRight\", \"bottomRight\", \"bottomMiddle\", \"bottomLeft\", \"middleLeft\"];\n+    const signal = this._uiManager._signal;\n     for (const name of classes) {\n       const div = document.createElement(\"div\");\n       this.#resizersDiv.append(div);\n       div.classList.add(\"resizer\", name);\n       div.setAttribute(\"data-resizer-name\", name);\n-      div.addEventListener(\"pointerdown\", this.#resizerPointerdown.bind(this, name));\n-      div.addEventListener(\"contextmenu\", noContextMenu);\n+      div.addEventListener(\"pointerdown\", this.#resizerPointerdown.bind(this, name), {\n+        signal\n+      });\n+      div.addEventListener(\"contextmenu\", noContextMenu, {\n+        signal\n+      });\n       div.tabIndex = -1;\n     }\n     this.div.prepend(this.#resizersDiv);\n@@ -3999,39 +9509,71 @@\n       return;\n     }\n     this.#altText?.toggle(false);\n-    const boundResizerPointermove = this.#resizerPointermove.bind(this, name);\n     const savedDraggable = this._isDraggable;\n     this._isDraggable = false;\n-    const pointerMoveOptions = {\n+    this.#lastPointerCoords = [event.screenX, event.screenY];\n+    const ac = new AbortController();\n+    const signal = this._uiManager.combinedSignal(ac);\n+    this.parent.togglePointerEvents(false);\n+    window.addEventListener(\"pointermove\", this.#resizerPointermove.bind(this, name), {\n       passive: true,\n-      capture: true\n+      capture: true,\n+      signal\n+    });\n+    window.addEventListener(\"touchmove\", stopEvent, {\n+      passive: false,\n+      signal\n+    });\n+    window.addEventListener(\"contextmenu\", noContextMenu, {\n+      signal\n+    });\n+    this.#savedDimensions = {\n+      savedX: this.x,\n+      savedY: this.y,\n+      savedWidth: this.width,\n+      savedHeight: this.height\n     };\n-    this.parent.togglePointerEvents(false);\n-    window.addEventListener(\"pointermove\", boundResizerPointermove, pointerMoveOptions);\n-    window.addEventListener(\"contextmenu\", noContextMenu);\n-    const savedX = this.x;\n-    const savedY = this.y;\n-    const savedWidth = this.width;\n-    const savedHeight = this.height;\n     const savedParentCursor = this.parent.div.style.cursor;\n     const savedCursor = this.div.style.cursor;\n     this.div.style.cursor = this.parent.div.style.cursor = window.getComputedStyle(event.target).cursor;\n     const pointerUpCallback = () => {\n+      ac.abort();\n       this.parent.togglePointerEvents(true);\n       this.#altText?.toggle(true);\n       this._isDraggable = savedDraggable;\n-      window.removeEventListener(\"pointerup\", pointerUpCallback);\n-      window.removeEventListener(\"blur\", pointerUpCallback);\n-      window.removeEventListener(\"pointermove\", boundResizerPointermove, pointerMoveOptions);\n-      window.removeEventListener(\"contextmenu\", noContextMenu);\n       this.parent.div.style.cursor = savedParentCursor;\n       this.div.style.cursor = savedCursor;\n-      this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight);\n+      this.#addResizeToUndoStack();\n     };\n-    window.addEventListener(\"pointerup\", pointerUpCallback);\n-    window.addEventListener(\"blur\", pointerUpCallback);\n+    window.addEventListener(\"pointerup\", pointerUpCallback, {\n+      signal\n+    });\n+    window.addEventListener(\"blur\", pointerUpCallback, {\n+      signal\n+    });\n   }\n-  #addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight) {\n+  #resize(x, y, width, height) {\n+    this.width = width;\n+    this.height = height;\n+    this.x = x;\n+    this.y = y;\n+    const [parentWidth, parentHeight] = this.parentDimensions;\n+    this.setDims(parentWidth * width, parentHeight * height);\n+    this.fixAndSetPosition();\n+    this._onResized();\n+  }\n+  _onResized() {}\n+  #addResizeToUndoStack() {\n+    if (!this.#savedDimensions) {\n+      return;\n+    }\n+    const {\n+      savedX,\n+      savedY,\n+      savedWidth,\n+      savedHeight\n+    } = this.#savedDimensions;\n+    this.#savedDimensions = null;\n     const newX = this.x;\n     const newY = this.y;\n     const newWidth = this.width;\n@@ -4040,27 +9582,14 @@\n       return;\n     }\n     this.addCommands({\n-      cmd: () => {\n-        this.width = newWidth;\n-        this.height = newHeight;\n-        this.x = newX;\n-        this.y = newY;\n-        const [parentWidth, parentHeight] = this.parentDimensions;\n-        this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n-        this.fixAndSetPosition();\n-      },\n-      undo: () => {\n-        this.width = savedWidth;\n-        this.height = savedHeight;\n-        this.x = savedX;\n-        this.y = savedY;\n-        const [parentWidth, parentHeight] = this.parentDimensions;\n-        this.setDims(parentWidth * savedWidth, parentHeight * savedHeight);\n-        this.fixAndSetPosition();\n-      },\n+      cmd: this.#resize.bind(this, newX, newY, newWidth, newHeight),\n+      undo: this.#resize.bind(this, savedX, savedY, savedWidth, savedHeight),\n       mustExec: true\n     });\n   }\n+  static _round(x) {\n+    return Math.round(x * 10000) \u002F 10000;\n+  }\n   #resizerPointermove(name, event) {\n     const [parentWidth, parentHeight] = this.parentDimensions;\n     const savedX = this.x;\n@@ -4069,7 +9598,6 @@\n     const savedHeight = this.height;\n     const minWidth = AnnotationEditor.MIN_SIZE \u002F parentWidth;\n     const minHeight = AnnotationEditor.MIN_SIZE \u002F parentHeight;\n-    const round = x => Math.round(x * 10000) \u002F 10000;\n     const rotationMatrix = this.#getRotationMatrix(this.rotation);\n     const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n     const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n@@ -4121,54 +9649,80 @@\n     const point = getPoint(savedWidth, savedHeight);\n     const oppositePoint = getOpposite(savedWidth, savedHeight);\n     let transfOppositePoint = transf(...oppositePoint);\n-    const oppositeX = round(savedX + transfOppositePoint[0]);\n-    const oppositeY = round(savedY + transfOppositePoint[1]);\n+    const oppositeX = AnnotationEditor._round(savedX + transfOppositePoint[0]);\n+    const oppositeY = AnnotationEditor._round(savedY + transfOppositePoint[1]);\n     let ratioX = 1;\n     let ratioY = 1;\n-    let [deltaX, deltaY] = this.screenToPageTranslation(event.movementX, event.movementY);\n+    let deltaX, deltaY;\n+    if (!event.fromKeyboard) {\n+      const {\n+        screenX,\n+        screenY\n+      } = event;\n+      const [lastScreenX, lastScreenY] = this.#lastPointerCoords;\n+      [deltaX, deltaY] = this.screenToPageTranslation(screenX - lastScreenX, screenY - lastScreenY);\n+      this.#lastPointerCoords[0] = screenX;\n+      this.#lastPointerCoords[1] = screenY;\n+    } else {\n+      ({\n+        deltaX,\n+        deltaY\n+      } = event);\n+    }\n     [deltaX, deltaY] = invTransf(deltaX \u002F parentWidth, deltaY \u002F parentHeight);\n     if (isDiagonal) {\n       const oldDiag = Math.hypot(savedWidth, savedHeight);\n       ratioX = ratioY = Math.max(Math.min(Math.hypot(oppositePoint[0] - point[0] - deltaX, oppositePoint[1] - point[1] - deltaY) \u002F oldDiag, 1 \u002F savedWidth, 1 \u002F savedHeight), minWidth \u002F savedWidth, minHeight \u002F savedHeight);\n     } else if (isHorizontal) {\n-      ratioX = Math.max(minWidth, Math.min(1, Math.abs(oppositePoint[0] - point[0] - deltaX))) \u002F savedWidth;\n+      ratioX = MathClamp(Math.abs(oppositePoint[0] - point[0] - deltaX), minWidth, 1) \u002F savedWidth;\n     } else {\n-      ratioY = Math.max(minHeight, Math.min(1, Math.abs(oppositePoint[1] - point[1] - deltaY))) \u002F savedHeight;\n+      ratioY = MathClamp(Math.abs(oppositePoint[1] - point[1] - deltaY), minHeight, 1) \u002F savedHeight;\n     }\n-    const newWidth = round(savedWidth * ratioX);\n-    const newHeight = round(savedHeight * ratioY);\n+    const newWidth = AnnotationEditor._round(savedWidth * ratioX);\n+    const newHeight = AnnotationEditor._round(savedHeight * ratioY);\n     transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n     const newX = oppositeX - transfOppositePoint[0];\n     const newY = oppositeY - transfOppositePoint[1];\n+    this.#initialRect ||= [this.x, this.y, this.width, this.height];\n     this.width = newWidth;\n     this.height = newHeight;\n     this.x = newX;\n     this.y = newY;\n     this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n     this.fixAndSetPosition();\n+    this._onResizing();\n   }\n+  _onResizing() {}\n   altTextFinish() {\n     this.#altText?.finish();\n   }\n   async addEditToolbar() {\n-    if (this.#editToolbar || this.#isInEditMode) {\n-      return this.#editToolbar;\n+    if (this._editToolbar || this.#isInEditMode) {\n+      return this._editToolbar;\n     }\n-    this.#editToolbar = new EditorToolbar(this);\n-    this.div.append(this.#editToolbar.render());\n+    this._editToolbar = new EditorToolbar(this);\n+    this.div.append(this._editToolbar.render());\n     if (this.#altText) {\n-      this.#editToolbar.addAltTextButton(await this.#altText.render());\n+      await this._editToolbar.addAltText(this.#altText);\n     }\n-    return this.#editToolbar;\n+    return this._editToolbar;\n   }\n   removeEditToolbar() {\n-    if (!this.#editToolbar) {\n+    if (!this._editToolbar) {\n       return;\n     }\n-    this.#editToolbar.remove();\n-    this.#editToolbar = null;\n+    this._editToolbar.remove();\n+    this._editToolbar = null;\n     this.#altText?.destroy();\n   }\n+  addContainer(container) {\n+    const editToolbarDiv = this._editToolbar?.div;\n+    if (editToolbarDiv) {\n+      editToolbarDiv.before(container);\n+    } else {\n+      this.div.append(container);\n+    }\n+  }\n   getClientDimensions() {\n     return this.div.getBoundingClientRect();\n   }\n@@ -4176,8 +9730,12 @@\n     if (this.#altText) {\n       return;\n     }\n-    AltText.initialize(AnnotationEditor._l10nPromise);\n+    AltText.initialize(AnnotationEditor._l10n);\n     this.#altText = new AltText(this);\n+    if (this.#accessibilityData) {\n+      this.#altText.data = this.#accessibilityData;\n+      this.#accessibilityData = null;\n+    }\n     await this.addEditToolbar();\n   }\n   get altTextData() {\n@@ -4189,30 +9747,105 @@\n     }\n     this.#altText.data = data;\n   }\n+  get guessedAltText() {\n+    return this.#altText?.guessedText;\n+  }\n+  async setGuessedAltText(text) {\n+    await this.#altText?.setGuessedText(text);\n+  }\n+  serializeAltText(isForCopying) {\n+    return this.#altText?.serialize(isForCopying);\n+  }\n   hasAltText() {\n-    return !this.#altText?.isEmpty();\n+    return !!this.#altText && !this.#altText.isEmpty();\n+  }\n+  hasAltTextData() {\n+    return this.#altText?.hasData() ?? false;\n   }\n   render() {\n-    this.div = document.createElement(\"div\");\n-    this.div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n-    this.div.className = this.name;\n-    this.div.setAttribute(\"id\", this.id);\n-    this.div.tabIndex = this.#disabled ? -1 : 0;\n+    const div = this.div = document.createElement(\"div\");\n+    div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n+    div.className = this.name;\n+    div.setAttribute(\"id\", this.id);\n+    div.tabIndex = this.#disabled ? -1 : 0;\n+    div.setAttribute(\"role\", \"application\");\n+    if (this.defaultL10nId) {\n+      div.setAttribute(\"data-l10n-id\", this.defaultL10nId);\n+    }\n     if (!this._isVisible) {\n-      this.div.classList.add(\"hidden\");\n+      div.classList.add(\"hidden\");\n     }\n     this.setInForeground();\n-    this.div.addEventListener(\"focusin\", this.#boundFocusin);\n-    this.div.addEventListener(\"focusout\", this.#boundFocusout);\n+    this.#addFocusListeners();\n     const [parentWidth, parentHeight] = this.parentDimensions;\n     if (this.parentRotation % 180 !== 0) {\n-      this.div.style.maxWidth = `${(100 * parentHeight \u002F parentWidth).toFixed(2)}%`;\n-      this.div.style.maxHeight = `${(100 * parentWidth \u002F parentHeight).toFixed(2)}%`;\n+      div.style.maxWidth = `${(100 * parentHeight \u002F parentWidth).toFixed(2)}%`;\n+      div.style.maxHeight = `${(100 * parentWidth \u002F parentHeight).toFixed(2)}%`;\n     }\n     const [tx, ty] = this.getInitialTranslation();\n     this.translate(tx, ty);\n-    bindEvents(this, this.div, [\"pointerdown\"]);\n-    return this.div;\n+    bindEvents(this, div, [\"keydown\", \"pointerdown\", \"dblclick\"]);\n+    if (this.isResizable && this._uiManager._supportsPinchToZoom) {\n+      this.#touchManager ||= new TouchManager({\n+        container: div,\n+        isPinchingDisabled: () => !this.isSelected,\n+        onPinchStart: this.#touchPinchStartCallback.bind(this),\n+        onPinching: this.#touchPinchCallback.bind(this),\n+        onPinchEnd: this.#touchPinchEndCallback.bind(this),\n+        signal: this._uiManager._signal\n+      });\n+    }\n+    this._uiManager._editorUndoBar?.hide();\n+    return div;\n+  }\n+  #touchPinchStartCallback() {\n+    this.#savedDimensions = {\n+      savedX: this.x,\n+      savedY: this.y,\n+      savedWidth: this.width,\n+      savedHeight: this.height\n+    };\n+    this.#altText?.toggle(false);\n+    this.parent.togglePointerEvents(false);\n+  }\n+  #touchPinchCallback(_origin, prevDistance, distance) {\n+    const slowDownFactor = 0.7;\n+    let factor = slowDownFactor * (distance \u002F prevDistance) + 1 - slowDownFactor;\n+    if (factor === 1) {\n+      return;\n+    }\n+    const rotationMatrix = this.#getRotationMatrix(this.rotation);\n+    const transf = (x, y) => [rotationMatrix[0] * x + rotationMatrix[2] * y, rotationMatrix[1] * x + rotationMatrix[3] * y];\n+    const [parentWidth, parentHeight] = this.parentDimensions;\n+    const savedX = this.x;\n+    const savedY = this.y;\n+    const savedWidth = this.width;\n+    const savedHeight = this.height;\n+    const minWidth = AnnotationEditor.MIN_SIZE \u002F parentWidth;\n+    const minHeight = AnnotationEditor.MIN_SIZE \u002F parentHeight;\n+    factor = Math.max(Math.min(factor, 1 \u002F savedWidth, 1 \u002F savedHeight), minWidth \u002F savedWidth, minHeight \u002F savedHeight);\n+    const newWidth = AnnotationEditor._round(savedWidth * factor);\n+    const newHeight = AnnotationEditor._round(savedHeight * factor);\n+    if (newWidth === savedWidth && newHeight === savedHeight) {\n+      return;\n+    }\n+    this.#initialRect ||= [savedX, savedY, savedWidth, savedHeight];\n+    const transfCenterPoint = transf(savedWidth \u002F 2, savedHeight \u002F 2);\n+    const centerX = AnnotationEditor._round(savedX + transfCenterPoint[0]);\n+    const centerY = AnnotationEditor._round(savedY + transfCenterPoint[1]);\n+    const newTransfCenterPoint = transf(newWidth \u002F 2, newHeight \u002F 2);\n+    this.x = centerX - newTransfCenterPoint[0];\n+    this.y = centerY - newTransfCenterPoint[1];\n+    this.width = newWidth;\n+    this.height = newHeight;\n+    this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n+    this.fixAndSetPosition();\n+    this._onResizing();\n+  }\n+  #touchPinchEndCallback() {\n+    this.#altText?.toggle(true);\n+    this.parent.togglePointerEvents(true);\n+    this.#addResizeToUndoStack();\n   }\n   pointerdown(event) {\n     const {\n@@ -4240,44 +9873,79 @@\n     }\n   }\n   #setUpDragSession(event) {\n-    const isSelected = this._uiManager.isSelected(this);\n+    const {\n+      isSelected\n+    } = this;\n     this._uiManager.setUpDragSession();\n-    let pointerMoveOptions, pointerMoveCallback;\n+    let hasDraggingStarted = false;\n+    const ac = new AbortController();\n+    const signal = this._uiManager.combinedSignal(ac);\n+    const opts = {\n+      capture: true,\n+      passive: false,\n+      signal\n+    };\n+    const cancelDrag = e => {\n+      ac.abort();\n+      this.#dragPointerId = null;\n+      this.#hasBeenClicked = false;\n+      if (!this._uiManager.endDragSession()) {\n+        this.#selectOnPointerEvent(e);\n+      }\n+      if (hasDraggingStarted) {\n+        this._onStopDragging();\n+      }\n+    };\n     if (isSelected) {\n-      this.div.classList.add(\"moving\");\n-      pointerMoveOptions = {\n-        passive: true,\n-        capture: true\n-      };\n       this.#prevDragX = event.clientX;\n       this.#prevDragY = event.clientY;\n-      pointerMoveCallback = e => {\n+      this.#dragPointerId = event.pointerId;\n+      this.#dragPointerType = event.pointerType;\n+      window.addEventListener(\"pointermove\", e => {\n+        if (!hasDraggingStarted) {\n+          hasDraggingStarted = true;\n+          this._onStartDragging();\n+        }\n         const {\n           clientX: x,\n-          clientY: y\n+          clientY: y,\n+          pointerId\n         } = e;\n+        if (pointerId !== this.#dragPointerId) {\n+          stopEvent(e);\n+          return;\n+        }\n         const [tx, ty] = this.screenToPageTranslation(x - this.#prevDragX, y - this.#prevDragY);\n         this.#prevDragX = x;\n         this.#prevDragY = y;\n         this._uiManager.dragSelectedEditors(tx, ty);\n-      };\n-      window.addEventListener(\"pointermove\", pointerMoveCallback, pointerMoveOptions);\n+      }, opts);\n+      window.addEventListener(\"touchmove\", stopEvent, opts);\n+      window.addEventListener(\"pointerdown\", e => {\n+        if (e.pointerType === this.#dragPointerType) {\n+          if (this.#touchManager || e.isPrimary) {\n+            cancelDrag(e);\n+          }\n+        }\n+        stopEvent(e);\n+      }, opts);\n     }\n-    const pointerUpCallback = () => {\n-      window.removeEventListener(\"pointerup\", pointerUpCallback);\n-      window.removeEventListener(\"blur\", pointerUpCallback);\n-      if (isSelected) {\n-        this.div.classList.remove(\"moving\");\n-        window.removeEventListener(\"pointermove\", pointerMoveCallback, pointerMoveOptions);\n-      }\n-      this.#hasBeenClicked = false;\n-      if (!this._uiManager.endDragSession()) {\n-        this.#selectOnPointerEvent(event);\n+    const pointerUpCallback = e => {\n+      if (!this.#dragPointerId || this.#dragPointerId === e.pointerId) {\n+        cancelDrag(e);\n+        return;\n       }\n+      stopEvent(e);\n     };\n-    window.addEventListener(\"pointerup\", pointerUpCallback);\n-    window.addEventListener(\"blur\", pointerUpCallback);\n+    window.addEventListener(\"pointerup\", pointerUpCallback, {\n+      signal\n+    });\n+    window.addEventListener(\"blur\", pointerUpCallback, {\n+      signal\n+    });\n   }\n+  _onStartDragging() {}\n+  _onStopDragging() {}\n   moveInDOM() {\n     if (this.#moveInDOMTimeout) {\n       clearTimeout(this.#moveInDOMTimeout);\n@@ -4292,6 +9960,7 @@\n     this.x = x;\n     this.y = y;\n     this.fixAndSetPosition();\n+    this._onTranslated();\n   }\n   getRect(tx, ty, rotation = this.rotation) {\n     const scale = this.parentScale;\n@@ -4333,15 +10002,25 @@\n         throw new Error(\"Invalid rotation\");\n     }\n   }\n-  onceAdded() {}\n+  onceAdded(focus) {}\n   isEmpty() {\n     return false;\n   }\n   enableEditMode() {\n+    if (this.isInEditMode()) {\n+      return false;\n+    }\n+    this.parent.setEditingState(false);\n     this.#isInEditMode = true;\n+    return true;\n   }\n   disableEditMode() {\n+    if (!this.isInEditMode()) {\n+      return false;\n+    }\n+    this.parent.setEditingState(true);\n     this.#isInEditMode = false;\n+    return true;\n   }\n   isInEditMode() {\n     return this.#isInEditMode;\n@@ -4352,21 +10031,57 @@\n   needsToBeRebuilt() {\n     return this.div && !this.isAttachedToDOM;\n   }\n+  get isOnScreen() {\n+    const {\n+      top,\n+      left,\n+      bottom,\n+      right\n+    } = this.getClientDimensions();\n+    const {\n+      innerHeight,\n+      innerWidth\n+    } = window;\n+    return left \u003C innerWidth && right > 0 && top \u003C innerHeight && bottom > 0;\n+  }\n+  #addFocusListeners() {\n+    if (this.#focusAC || !this.div) {\n+      return;\n+    }\n+    this.#focusAC = new AbortController();\n+    const signal = this._uiManager.combinedSignal(this.#focusAC);\n+    this.div.addEventListener(\"focusin\", this.focusin.bind(this), {\n+      signal\n+    });\n+    this.div.addEventListener(\"focusout\", this.focusout.bind(this), {\n+      signal\n+    });\n+  }\n   rebuild() {\n-    this.div?.addEventListener(\"focusin\", this.#boundFocusin);\n-    this.div?.addEventListener(\"focusout\", this.#boundFocusout);\n+    this.#addFocusListeners();\n   }\n   rotate(_angle) {}\n+  resize() {}\n+  serializeDeleted() {\n+    return {\n+      id: this.annotationElementId,\n+      deleted: true,\n+      pageIndex: this.pageIndex,\n+      popupRef: this._initialData?.popupRef || \"\"\n+    };\n+  }\n   serialize(isForCopying = false, context = null) {\n     unreachable(\"An editor must be serializable\");\n   }\n-  static deserialize(data, parent, uiManager) {\n+  static async deserialize(data, parent, uiManager) {\n     const editor = new this.prototype.constructor({\n       parent,\n       id: parent.getNextId(),\n       uiManager\n     });\n     editor.rotation = data.rotation;\n+    editor.#accessibilityData = data.accessibilityData;\n+    editor._isCopy = data.isCopy || false;\n     const [pageWidth, pageHeight] = editor.pageDimensions;\n     const [x, y, width, height] = editor.getRectInCurrentCoords(data.rect, pageHeight);\n     editor.x = x \u002F pageWidth;\n@@ -4379,8 +10094,8 @@\n     return !!this.annotationElementId && (this.deleted || this.serialize() !== null);\n   }\n   remove() {\n-    this.div.removeEventListener(\"focusin\", this.#boundFocusin);\n-    this.div.removeEventListener(\"focusout\", this.#boundFocusout);\n+    this.#focusAC?.abort();\n+    this.#focusAC = null;\n     if (!this.isEmpty()) {\n       this.commit();\n     }\n@@ -4402,6 +10117,8 @@\n       this.#telemetryTimeouts = null;\n     }\n     this.parent = null;\n+    this.#touchManager?.destroy();\n+    this.#touchManager = null;\n   }\n   get isResizable() {\n     return false;\n@@ -4410,7 +10127,6 @@\n     if (this.isResizable) {\n       this.#createResizers();\n       this.#resizersDiv.classList.remove(\"hidden\");\n-      bindEvents(this, this.div, [\"keydown\"]);\n     }\n   }\n   get toolbarPosition() {\n@@ -4432,13 +10148,20 @@\n       this.#allResizerDivs = Array.from(children);\n       const boundResizerKeydown = this.#resizerKeydown.bind(this);\n       const boundResizerBlur = this.#resizerBlur.bind(this);\n+      const signal = this._uiManager._signal;\n       for (const div of this.#allResizerDivs) {\n         const name = div.getAttribute(\"data-resizer-name\");\n         div.setAttribute(\"role\", \"spinbutton\");\n-        div.addEventListener(\"keydown\", boundResizerKeydown);\n-        div.addEventListener(\"blur\", boundResizerBlur);\n-        div.addEventListener(\"focus\", this.#resizerFocus.bind(this, name));\n-        AnnotationEditor._l10nPromise.get(`pdfjs-editor-resizer-label-${name}`).then(msg => div.setAttribute(\"aria-label\", msg));\n+        div.addEventListener(\"keydown\", boundResizerKeydown, {\n+          signal\n+        });\n+        div.addEventListener(\"blur\", boundResizerBlur, {\n+          signal\n+        });\n+        div.addEventListener(\"focus\", this.#resizerFocus.bind(this, name), {\n+          signal\n+        });\n+        div.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n       }\n     }\n     const first = this.#allResizerDivs[0];\n@@ -4464,7 +10187,7 @@\n       for (const child of children) {\n         const div = this.#allResizerDivs[i++];\n         const name = div.getAttribute(\"data-resizer-name\");\n-        AnnotationEditor._l10nPromise.get(`pdfjs-editor-resizer-label-${name}`).then(msg => child.setAttribute(\"aria-label\", msg));\n+        child.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n       }\n     }\n     this.#setResizerTabIndex(0);\n@@ -4499,42 +10222,43 @@\n       return;\n     }\n     this.#resizerPointermove(this.#focusedResizerName, {\n-      movementX: x,\n-      movementY: y\n+      deltaX: x,\n+      deltaY: y,\n+      fromKeyboard: true\n     });\n   }\n   #stopResizing() {\n     this.#isResizerEnabledForKeyboard = false;\n     this.#setResizerTabIndex(-1);\n-    if (this.#savedDimensions) {\n-      const {\n-        savedX,\n-        savedY,\n-        savedWidth,\n-        savedHeight\n-      } = this.#savedDimensions;\n-      this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight);\n-      this.#savedDimensions = null;\n-    }\n+    this.#addResizeToUndoStack();\n   }\n   _stopResizingWithKeyboard() {\n     this.#stopResizing();\n     this.div.focus();\n   }\n   select() {\n+    if (this.isSelected && this._editToolbar) {\n+      return;\n+    }\n+    this.isSelected = true;\n     this.makeResizable();\n     this.div?.classList.add(\"selectedEditor\");\n-    if (!this.#editToolbar) {\n+    if (!this._editToolbar) {\n       this.addEditToolbar().then(() => {\n         if (this.div?.classList.contains(\"selectedEditor\")) {\n-          this.#editToolbar?.show();\n+          this._editToolbar?.show();\n         }\n       });\n       return;\n     }\n-    this.#editToolbar?.show();\n+    this._editToolbar?.show();\n+    this.#altText?.toggleAltTextBadge(false);\n   }\n   unselect() {\n+    if (!this.isSelected) {\n+      return;\n+    }\n+    this.isSelected = false;\n     this.#resizersDiv?.classList.add(\"hidden\");\n     this.div?.classList.remove(\"selectedEditor\");\n     if (this.div?.contains(document.activeElement)) {\n@@ -4542,14 +10266,31 @@\n         preventScroll: true\n       });\n     }\n-    this.#editToolbar?.hide();\n+    this._editToolbar?.hide();\n+    this.#altText?.toggleAltTextBadge(true);\n   }\n   updateParams(type, value) {}\n   disableEditing() {}\n   enableEditing() {}\n-  enterInEditMode() {}\n-  getImageForAltText() {\n-    return null;\n+  get canChangeContent() {\n+    return false;\n+  }\n+  enterInEditMode() {\n+    if (!this.canChangeContent) {\n+      return;\n+    }\n+    this.enableEditMode();\n+    this.div.focus();\n+  }\n+  dblclick(event) {\n+    this.enterInEditMode();\n+    this.parent.updateToolbar({\n+      mode: this.constructor._editorType,\n+      editId: this.id\n+    });\n+  }\n+  getElementForAltText() {\n+    return this.div;\n   }\n   get contentDiv() {\n     return this.div;\n@@ -4655,7 +10396,7 @@\n     const {\n       firstChild\n     } = annotation.container;\n-    if (firstChild.nodeName === \"DIV\" && firstChild.classList.contains(\"annotationContent\")) {\n+    if (firstChild?.nodeName === \"DIV\" && firstChild.classList.contains(\"annotationContent\")) {\n       firstChild.remove();\n     }\n   }\n@@ -4667,15 +10408,18 @@\n     this.deleted = true;\n   }\n   serialize() {\n-    return {\n-      id: this.annotationElementId,\n-      deleted: true,\n-      pageIndex: this.pageIndex\n-    };\n+    return this.serializeDeleted();\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fshared\u002Fmurmurhash3.js\n+;\u002F\u002F .\u002Fsrc\u002Fshared\u002Fmurmurhash3.js\n+\n+\n+\n+\n+\n+\n+\n const SEED = 0xc3d2e1f0;\n const MASK_HIGH = 0xffff0000;\n const MASK_LOW = 0xffff;\n@@ -4768,7 +10512,18 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Fannotation_storage.js\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Fannotation_storage.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n \n@@ -4779,6 +10534,7 @@\n });\n class AnnotationStorage {\n   #modified = false;\n+  #modifiedIds = null;\n   #storage = new Map();\n   constructor() {\n     this.onSetModified = null;\n@@ -4833,14 +10589,6 @@\n   has(key) {\n     return this.#storage.has(key);\n   }\n-  getAll() {\n-    return this.#storage.size > 0 ? objectFromMap(this.#storage) : null;\n-  }\n-  setAll(obj) {\n-    for (const [key, val] of Object.entries(obj)) {\n-      this.setValue(key, val);\n-    }\n-  }\n   get size() {\n     return this.#storage.size;\n   }\n@@ -4930,6 +10678,28 @@\n     }\n     return stats;\n   }\n+  resetModifiedIds() {\n+    this.#modifiedIds = null;\n+  }\n+  get modifiedIds() {\n+    if (this.#modifiedIds) {\n+      return this.#modifiedIds;\n+    }\n+    const ids = [];\n+    for (const value of this.#storage.values()) {\n+      if (!(value instanceof AnnotationEditor) || !value.annotationElementId || !value.serialize()) {\n+        continue;\n+      }\n+      ids.push(value.annotationElementId);\n+    }\n+    return this.#modifiedIds = {\n+      ids: new Set(ids),\n+      hash: ids.join(\",\")\n+    };\n+  }\n+  [Symbol.iterator]() {\n+    return this.#storage.entries();\n+  }\n }\n class PrintAnnotationStorage extends AnnotationStorage {\n   #serializable;\n@@ -4955,9 +10725,24 @@\n   get serializable() {\n     return this.#serializable;\n   }\n+  get modifiedIds() {\n+    return shadow(this, \"modifiedIds\", {\n+      ids: new Set(),\n+      hash: \"\"\n+    });\n+  }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Ffont_loader.js\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Ffont_loader.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n class FontLoader {\n   #systemFonts = new Set();\n@@ -5000,12 +10785,13 @@\n   }\n   async loadSystemFont({\n     systemFontInfo: info,\n+    disableFontFace,\n     _inspectFont\n   }) {\n     if (!info || this.#systemFonts.has(info.loadedName)) {\n       return;\n     }\n-    assert(!this.disableFontFace, \"loadSystemFont shouldn't be called when `disableFontFace` is set.\");\n+    assert(!disableFontFace, \"loadSystemFont shouldn't be called when `disableFontFace` is set.\");\n     if (this.isFontLoadingAPISupported) {\n       const {\n         loadedName,\n@@ -5066,13 +10852,7 @@\n     return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n   }\n   get isSyncFontLoadingSupported() {\n-    let supported = false;\n-    if (isNodeJS) {\n-      supported = true;\n-    } else if (typeof navigator !== \"undefined\" && typeof navigator?.userAgent === \"string\" && \u002FMozilla\\\u002F5.0.*?rv:\\d+.*? Gecko\u002F.test(navigator.userAgent)) {\n-      supported = true;\n-    }\n-    return shadow(this, \"isSyncFontLoadingSupported\", supported);\n+    return shadow(this, \"isSyncFontLoadingSupported\", isNodeJS || util_FeatureTest.platform.isFirefox);\n   }\n   _queueLoadingCallback(callback) {\n     function completeRequest() {\n@@ -5164,15 +10944,11 @@\n   }\n }\n class FontFaceObject {\n-  constructor(translatedData, {\n-    disableFontFace = false,\n-    inspectFont = null\n-  }) {\n+  constructor(translatedData, inspectFont = null) {\n     this.compiledGlyphs = Object.create(null);\n     for (const i in translatedData) {\n       this[i] = translatedData[i];\n     }\n-    this.disableFontFace = disableFontFace === true;\n     this._inspectFont = inspectFont;\n   }\n   createNativeFontFace() {\n@@ -5198,8 +10974,7 @@\n     if (!this.data || this.disableFontFace) {\n       return null;\n     }\n-    const data = bytesToString(this.data);\n-    const url = `url(data:${this.mimetype};base64,${btoa(data)});`;\n+    const url = `url(data:${this.mimetype};base64,${toBase64Util(this.data)});`;\n     let rule;\n     if (!this.cssFontInfo) {\n       rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n@@ -5217,146 +10992,1145 @@\n     if (this.compiledGlyphs[character] !== undefined) {\n       return this.compiledGlyphs[character];\n     }\n+    const objId = this.loadedName + \"_path_\" + character;\n     let cmds;\n     try {\n-      cmds = objs.get(this.loadedName + \"_path_\" + character);\n+      cmds = objs.get(objId);\n     } catch (ex) {\n       warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n     }\n-    if (!Array.isArray(cmds) || cmds.length === 0) {\n-      return this.compiledGlyphs[character] = function (c, size) {};\n+    const path = new Path2D(cmds || \"\");\n+    if (!this.fontExtraProperties) {\n+      objs.delete(objId);\n     }\n-    const commands = [];\n-    for (let i = 0, ii = cmds.length; i \u003C ii;) {\n-      switch (cmds[i++]) {\n-        case FontRenderOps.BEZIER_CURVE_TO:\n-          {\n-            const [a, b, c, d, e, f] = cmds.slice(i, i + 6);\n-            commands.push(ctx => ctx.bezierCurveTo(a, b, c, d, e, f));\n-            i += 6;\n-          }\n-          break;\n-        case FontRenderOps.MOVE_TO:\n-          {\n-            const [a, b] = cmds.slice(i, i + 2);\n-            commands.push(ctx => ctx.moveTo(a, b));\n-            i += 2;\n-          }\n-          break;\n-        case FontRenderOps.LINE_TO:\n-          {\n-            const [a, b] = cmds.slice(i, i + 2);\n-            commands.push(ctx => ctx.lineTo(a, b));\n-            i += 2;\n-          }\n-          break;\n-        case FontRenderOps.QUADRATIC_CURVE_TO:\n-          {\n-            const [a, b, c, d] = cmds.slice(i, i + 4);\n-            commands.push(ctx => ctx.quadraticCurveTo(a, b, c, d));\n-            i += 4;\n-          }\n-          break;\n-        case FontRenderOps.RESTORE:\n-          commands.push(ctx => ctx.restore());\n-          break;\n-        case FontRenderOps.SAVE:\n-          commands.push(ctx => ctx.save());\n+    return this.compiledGlyphs[character] = path;\n+  }\n+}\n+\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Fapi_utils.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+function getUrlProp(val) {\n+  if (val instanceof URL) {\n+    return val.href;\n+  }\n+  if (typeof val === \"string\") {\n+    if (isNodeJS) {\n+      return val;\n+    }\n+    const url = URL.parse(val, window.location);\n+    if (url) {\n+      return url.href;\n+    }\n+  }\n+  throw new Error(\"Invalid PDF url data: \" + \"either string or URL-object is expected in the url property.\");\n+}\n+function getDataProp(val) {\n+  if (isNodeJS && typeof Buffer !== \"undefined\" && val instanceof Buffer) {\n+    throw new Error(\"Please provide binary data as `Uint8Array`, rather than `Buffer`.\");\n+  }\n+  if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n+    return val;\n+  }\n+  if (typeof val === \"string\") {\n+    return stringToBytes(val);\n+  }\n+  if (val instanceof ArrayBuffer || ArrayBuffer.isView(val) || typeof val === \"object\" && !isNaN(val?.length)) {\n+    return new Uint8Array(val);\n+  }\n+  throw new Error(\"Invalid PDF binary data: either TypedArray, \" + \"string, or array-like object is expected in the data property.\");\n+}\n+function getFactoryUrlProp(val) {\n+  if (typeof val !== \"string\") {\n+    return null;\n+  }\n+  if (val.endsWith(\"\u002F\")) {\n+    return val;\n+  }\n+  throw new Error(`Invalid factory url: \"${val}\" must include trailing slash.`);\n+}\n+const isRefProxy = v => typeof v === \"object\" && Number.isInteger(v?.num) && v.num >= 0 && Number.isInteger(v?.gen) && v.gen >= 0;\n+const isNameProxy = v => typeof v === \"object\" && typeof v?.name === \"string\";\n+const isValidExplicitDest = _isValidExplicitDest.bind(null, isRefProxy, isNameProxy);\n+class LoopbackPort {\n+  #listeners = new Map();\n+  #deferred = Promise.resolve();\n+  postMessage(obj, transfer) {\n+    const event = {\n+      data: structuredClone(obj, transfer ? {\n+        transfer\n+      } : null)\n+    };\n+    this.#deferred.then(() => {\n+      for (const [listener] of this.#listeners) {\n+        listener.call(this, event);\n+      }\n+    });\n+  }\n+  addEventListener(name, listener, options = null) {\n+    let rmAbort = null;\n+    if (options?.signal instanceof AbortSignal) {\n+      const {\n+        signal\n+      } = options;\n+      if (signal.aborted) {\n+        warn(\"LoopbackPort - cannot use an `aborted` signal.\");\n+        return;\n+      }\n+      const onAbort = () => this.removeEventListener(name, listener);\n+      rmAbort = () => signal.removeEventListener(\"abort\", onAbort);\n+      signal.addEventListener(\"abort\", onAbort);\n+    }\n+    this.#listeners.set(listener, rmAbort);\n+  }\n+  removeEventListener(name, listener) {\n+    const rmAbort = this.#listeners.get(listener);\n+    rmAbort?.();\n+    this.#listeners.delete(listener);\n+  }\n+  terminate() {\n+    for (const [, rmAbort] of this.#listeners) {\n+      rmAbort?.();\n+    }\n+    this.#listeners.clear();\n+  }\n+}\n+\n+;\u002F\u002F .\u002Fsrc\u002Fshared\u002Fmessage_handler.js\n+\n+\n+\n+const CallbackKind = {\n+  DATA: 1,\n+  ERROR: 2\n+};\n+const StreamKind = {\n+  CANCEL: 1,\n+  CANCEL_COMPLETE: 2,\n+  CLOSE: 3,\n+  ENQUEUE: 4,\n+  ERROR: 5,\n+  PULL: 6,\n+  PULL_COMPLETE: 7,\n+  START_COMPLETE: 8\n+};\n+function onFn() {}\n+function wrapReason(ex) {\n+  if (ex instanceof AbortException || ex instanceof InvalidPDFException || ex instanceof PasswordException || ex instanceof ResponseException || ex instanceof UnknownErrorException) {\n+    return ex;\n+  }\n+  if (!(ex instanceof Error || typeof ex === \"object\" && ex !== null)) {\n+    unreachable('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n+  }\n+  switch (ex.name) {\n+    case \"AbortException\":\n+      return new AbortException(ex.message);\n+    case \"InvalidPDFException\":\n+      return new InvalidPDFException(ex.message);\n+    case \"PasswordException\":\n+      return new PasswordException(ex.message, ex.code);\n+    case \"ResponseException\":\n+      return new ResponseException(ex.message, ex.status, ex.missing);\n+    case \"UnknownErrorException\":\n+      return new UnknownErrorException(ex.message, ex.details);\n+  }\n+  return new UnknownErrorException(ex.message, ex.toString());\n+}\n+class MessageHandler {\n+  #messageAC = new AbortController();\n+  constructor(sourceName, targetName, comObj) {\n+    this.sourceName = sourceName;\n+    this.targetName = targetName;\n+    this.comObj = comObj;\n+    this.callbackId = 1;\n+    this.streamId = 1;\n+    this.streamSinks = Object.create(null);\n+    this.streamControllers = Object.create(null);\n+    this.callbackCapabilities = Object.create(null);\n+    this.actionHandler = Object.create(null);\n+    comObj.addEventListener(\"message\", this.#onMessage.bind(this), {\n+      signal: this.#messageAC.signal\n+    });\n+  }\n+  #onMessage({\n+    data\n+  }) {\n+    if (data.targetName !== this.sourceName) {\n+      return;\n+    }\n+    if (data.stream) {\n+      this.#processStreamMessage(data);\n+      return;\n+    }\n+    if (data.callback) {\n+      const callbackId = data.callbackId;\n+      const capability = this.callbackCapabilities[callbackId];\n+      if (!capability) {\n+        throw new Error(`Cannot resolve callback ${callbackId}`);\n+      }\n+      delete this.callbackCapabilities[callbackId];\n+      if (data.callback === CallbackKind.DATA) {\n+        capability.resolve(data.data);\n+      } else if (data.callback === CallbackKind.ERROR) {\n+        capability.reject(wrapReason(data.reason));\n+      } else {\n+        throw new Error(\"Unexpected callback case\");\n+      }\n+      return;\n+    }\n+    const action = this.actionHandler[data.action];\n+    if (!action) {\n+      throw new Error(`Unknown action from worker: ${data.action}`);\n+    }\n+    if (data.callbackId) {\n+      const sourceName = this.sourceName,\n+        targetName = data.sourceName,\n+        comObj = this.comObj;\n+      Promise.try(action, data.data).then(function (result) {\n+        comObj.postMessage({\n+          sourceName,\n+          targetName,\n+          callback: CallbackKind.DATA,\n+          callbackId: data.callbackId,\n+          data: result\n+        });\n+      }, function (reason) {\n+        comObj.postMessage({\n+          sourceName,\n+          targetName,\n+          callback: CallbackKind.ERROR,\n+          callbackId: data.callbackId,\n+          reason: wrapReason(reason)\n+        });\n+      });\n+      return;\n+    }\n+    if (data.streamId) {\n+      this.#createStreamSink(data);\n+      return;\n+    }\n+    action(data.data);\n+  }\n+  on(actionName, handler) {\n+    const ah = this.actionHandler;\n+    if (ah[actionName]) {\n+      throw new Error(`There is already an actionName called \"${actionName}\"`);\n+    }\n+    ah[actionName] = handler;\n+  }\n+  send(actionName, data, transfers) {\n+    this.comObj.postMessage({\n+      sourceName: this.sourceName,\n+      targetName: this.targetName,\n+      action: actionName,\n+      data\n+    }, transfers);\n+  }\n+  sendWithPromise(actionName, data, transfers) {\n+    const callbackId = this.callbackId++;\n+    const capability = Promise.withResolvers();\n+    this.callbackCapabilities[callbackId] = capability;\n+    try {\n+      this.comObj.postMessage({\n+        sourceName: this.sourceName,\n+        targetName: this.targetName,\n+        action: actionName,\n+        callbackId,\n+        data\n+      }, transfers);\n+    } catch (ex) {\n+      capability.reject(ex);\n+    }\n+    return capability.promise;\n+  }\n+  sendWithStream(actionName, data, queueingStrategy, transfers) {\n+    const streamId = this.streamId++,\n+      sourceName = this.sourceName,\n+      targetName = this.targetName,\n+      comObj = this.comObj;\n+    return new ReadableStream({\n+      start: controller => {\n+        const startCapability = Promise.withResolvers();\n+        this.streamControllers[streamId] = {\n+          controller,\n+          startCall: startCapability,\n+          pullCall: null,\n+          cancelCall: null,\n+          isClosed: false\n+        };\n+        comObj.postMessage({\n+          sourceName,\n+          targetName,\n+          action: actionName,\n+          streamId,\n+          data,\n+          desiredSize: controller.desiredSize\n+        }, transfers);\n+        return startCapability.promise;\n+      },\n+      pull: controller => {\n+        const pullCapability = Promise.withResolvers();\n+        this.streamControllers[streamId].pullCall = pullCapability;\n+        comObj.postMessage({\n+          sourceName,\n+          targetName,\n+          stream: StreamKind.PULL,\n+          streamId,\n+          desiredSize: controller.desiredSize\n+        });\n+        return pullCapability.promise;\n+      },\n+      cancel: reason => {\n+        assert(reason instanceof Error, \"cancel must have a valid reason\");\n+        const cancelCapability = Promise.withResolvers();\n+        this.streamControllers[streamId].cancelCall = cancelCapability;\n+        this.streamControllers[streamId].isClosed = true;\n+        comObj.postMessage({\n+          sourceName,\n+          targetName,\n+          stream: StreamKind.CANCEL,\n+          streamId,\n+          reason: wrapReason(reason)\n+        });\n+        return cancelCapability.promise;\n+      }\n+    }, queueingStrategy);\n+  }\n+  #createStreamSink(data) {\n+    const streamId = data.streamId,\n+      sourceName = this.sourceName,\n+      targetName = data.sourceName,\n+      comObj = this.comObj;\n+    const self = this,\n+      action = this.actionHandler[data.action];\n+    const streamSink = {\n+      enqueue(chunk, size = 1, transfers) {\n+        if (this.isCancelled) {\n+          return;\n+        }\n+        const lastDesiredSize = this.desiredSize;\n+        this.desiredSize -= size;\n+        if (lastDesiredSize > 0 && this.desiredSize \u003C= 0) {\n+          this.sinkCapability = Promise.withResolvers();\n+          this.ready = this.sinkCapability.promise;\n+        }\n+        comObj.postMessage({\n+          sourceName,\n+          targetName,\n+          stream: StreamKind.ENQUEUE,\n+          streamId,\n+          chunk\n+        }, transfers);\n+      },\n+      close() {\n+        if (this.isCancelled) {\n+          return;\n+        }\n+        this.isCancelled = true;\n+        comObj.postMessage({\n+          sourceName,\n+          targetName,\n+          stream: StreamKind.CLOSE,\n+          streamId\n+        });\n+        delete self.streamSinks[streamId];\n+      },\n+      error(reason) {\n+        assert(reason instanceof Error, \"error must have a valid reason\");\n+        if (this.isCancelled) {\n+          return;\n+        }\n+        this.isCancelled = true;\n+        comObj.postMessage({\n+          sourceName,\n+          targetName,\n+          stream: StreamKind.ERROR,\n+          streamId,\n+          reason: wrapReason(reason)\n+        });\n+      },\n+      sinkCapability: Promise.withResolvers(),\n+      onPull: null,\n+      onCancel: null,\n+      isCancelled: false,\n+      desiredSize: data.desiredSize,\n+      ready: null\n+    };\n+    streamSink.sinkCapability.resolve();\n+    streamSink.ready = streamSink.sinkCapability.promise;\n+    this.streamSinks[streamId] = streamSink;\n+    Promise.try(action, data.data, streamSink).then(function () {\n+      comObj.postMessage({\n+        sourceName,\n+        targetName,\n+        stream: StreamKind.START_COMPLETE,\n+        streamId,\n+        success: true\n+      });\n+    }, function (reason) {\n+      comObj.postMessage({\n+        sourceName,\n+        targetName,\n+        stream: StreamKind.START_COMPLETE,\n+        streamId,\n+        reason: wrapReason(reason)\n+      });\n+    });\n+  }\n+  #processStreamMessage(data) {\n+    const streamId = data.streamId,\n+      sourceName = this.sourceName,\n+      targetName = data.sourceName,\n+      comObj = this.comObj;\n+    const streamController = this.streamControllers[streamId],\n+      streamSink = this.streamSinks[streamId];\n+    switch (data.stream) {\n+      case StreamKind.START_COMPLETE:\n+        if (data.success) {\n+          streamController.startCall.resolve();\n+        } else {\n+          streamController.startCall.reject(wrapReason(data.reason));\n+        }\n+        break;\n+      case StreamKind.PULL_COMPLETE:\n+        if (data.success) {\n+          streamController.pullCall.resolve();\n+        } else {\n+          streamController.pullCall.reject(wrapReason(data.reason));\n+        }\n+        break;\n+      case StreamKind.PULL:\n+        if (!streamSink) {\n+          comObj.postMessage({\n+            sourceName,\n+            targetName,\n+            stream: StreamKind.PULL_COMPLETE,\n+            streamId,\n+            success: true\n+          });\n           break;\n-        case FontRenderOps.SCALE:\n-          assert(commands.length === 2, \"Scale command is only valid at the third position.\");\n+        }\n+        if (streamSink.desiredSize \u003C= 0 && data.desiredSize > 0) {\n+          streamSink.sinkCapability.resolve();\n+        }\n+        streamSink.desiredSize = data.desiredSize;\n+        Promise.try(streamSink.onPull || onFn).then(function () {\n+          comObj.postMessage({\n+            sourceName,\n+            targetName,\n+            stream: StreamKind.PULL_COMPLETE,\n+            streamId,\n+            success: true\n+          });\n+        }, function (reason) {\n+          comObj.postMessage({\n+            sourceName,\n+            targetName,\n+            stream: StreamKind.PULL_COMPLETE,\n+            streamId,\n+            reason: wrapReason(reason)\n+          });\n+        });\n+        break;\n+      case StreamKind.ENQUEUE:\n+        assert(streamController, \"enqueue should have stream controller\");\n+        if (streamController.isClosed) {\n           break;\n-        case FontRenderOps.TRANSFORM:\n-          {\n-            const [a, b, c, d, e, f] = cmds.slice(i, i + 6);\n-            commands.push(ctx => ctx.transform(a, b, c, d, e, f));\n-            i += 6;\n-          }\n+        }\n+        streamController.controller.enqueue(data.chunk);\n+        break;\n+      case StreamKind.CLOSE:\n+        assert(streamController, \"close should have stream controller\");\n+        if (streamController.isClosed) {\n           break;\n-        case FontRenderOps.TRANSLATE:\n-          {\n-            const [a, b] = cmds.slice(i, i + 2);\n-            commands.push(ctx => ctx.translate(a, b));\n-            i += 2;\n-          }\n+        }\n+        streamController.isClosed = true;\n+        streamController.controller.close();\n+        this.#deleteStreamController(streamController, streamId);\n+        break;\n+      case StreamKind.ERROR:\n+        assert(streamController, \"error should have stream controller\");\n+        streamController.controller.error(wrapReason(data.reason));\n+        this.#deleteStreamController(streamController, streamId);\n+        break;\n+      case StreamKind.CANCEL_COMPLETE:\n+        if (data.success) {\n+          streamController.cancelCall.resolve();\n+        } else {\n+          streamController.cancelCall.reject(wrapReason(data.reason));\n+        }\n+        this.#deleteStreamController(streamController, streamId);\n+        break;\n+      case StreamKind.CANCEL:\n+        if (!streamSink) {\n           break;\n+        }\n+        const dataReason = wrapReason(data.reason);\n+        Promise.try(streamSink.onCancel || onFn, dataReason).then(function () {\n+          comObj.postMessage({\n+            sourceName,\n+            targetName,\n+            stream: StreamKind.CANCEL_COMPLETE,\n+            streamId,\n+            success: true\n+          });\n+        }, function (reason) {\n+          comObj.postMessage({\n+            sourceName,\n+            targetName,\n+            stream: StreamKind.CANCEL_COMPLETE,\n+            streamId,\n+            reason: wrapReason(reason)\n+          });\n+        });\n+        streamSink.sinkCapability.reject(dataReason);\n+        streamSink.isCancelled = true;\n+        delete this.streamSinks[streamId];\n+        break;\n+      default:\n+        throw new Error(\"Unexpected stream case\");\n+    }\n+  }\n+  async #deleteStreamController(streamController, streamId) {\n+    await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]);\n+    delete this.streamControllers[streamId];\n+  }\n+  destroy() {\n+    this.#messageAC?.abort();\n+    this.#messageAC = null;\n+  }\n+}\n+\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Fcanvas_factory.js\n+\n+class BaseCanvasFactory {\n+  #enableHWA = false;\n+  constructor({\n+    enableHWA = false\n+  }) {\n+    this.#enableHWA = enableHWA;\n+  }\n+  create(width, height) {\n+    if (width \u003C= 0 || height \u003C= 0) {\n+      throw new Error(\"Invalid canvas size\");\n+    }\n+    const canvas = this._createCanvas(width, height);\n+    return {\n+      canvas,\n+      context: canvas.getContext(\"2d\", {\n+        willReadFrequently: !this.#enableHWA\n+      })\n+    };\n+  }\n+  reset(canvasAndContext, width, height) {\n+    if (!canvasAndContext.canvas) {\n+      throw new Error(\"Canvas is not specified\");\n+    }\n+    if (width \u003C= 0 || height \u003C= 0) {\n+      throw new Error(\"Invalid canvas size\");\n+    }\n+    canvasAndContext.canvas.width = width;\n+    canvasAndContext.canvas.height = height;\n+  }\n+  destroy(canvasAndContext) {\n+    if (!canvasAndContext.canvas) {\n+      throw new Error(\"Canvas is not specified\");\n+    }\n+    canvasAndContext.canvas.width = 0;\n+    canvasAndContext.canvas.height = 0;\n+    canvasAndContext.canvas = null;\n+    canvasAndContext.context = null;\n+  }\n+  _createCanvas(width, height) {\n+    unreachable(\"Abstract method `_createCanvas` called.\");\n+  }\n+}\n+class DOMCanvasFactory extends BaseCanvasFactory {\n+  constructor({\n+    ownerDocument = globalThis.document,\n+    enableHWA = false\n+  }) {\n+    super({\n+      enableHWA\n+    });\n+    this._document = ownerDocument;\n+  }\n+  _createCanvas(width, height) {\n+    const canvas = this._document.createElement(\"canvas\");\n+    canvas.width = width;\n+    canvas.height = height;\n+    return canvas;\n+  }\n+}\n+\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Fcmap_reader_factory.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+class BaseCMapReaderFactory {\n+  constructor({\n+    baseUrl = null,\n+    isCompressed = true\n+  }) {\n+    this.baseUrl = baseUrl;\n+    this.isCompressed = isCompressed;\n+  }\n+  async fetch({\n+    name\n+  }) {\n+    if (!this.baseUrl) {\n+      throw new Error(\"Ensure that the `cMapUrl` and `cMapPacked` API parameters are provided.\");\n+    }\n+    if (!name) {\n+      throw new Error(\"CMap name must be specified.\");\n+    }\n+    const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n+    return this._fetch(url).then(cMapData => ({\n+      cMapData,\n+      isCompressed: this.isCompressed\n+    })).catch(reason => {\n+      throw new Error(`Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`);\n+    });\n+  }\n+  async _fetch(url) {\n+    unreachable(\"Abstract method `_fetch` called.\");\n+  }\n+}\n+class DOMCMapReaderFactory extends BaseCMapReaderFactory {\n+  async _fetch(url) {\n+    const data = await fetchData(url, this.isCompressed ? \"arraybuffer\" : \"text\");\n+    return data instanceof ArrayBuffer ? new Uint8Array(data) : stringToBytes(data);\n+  }\n+}\n+\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.filter.js\n+var es_iterator_filter = __webpack_require__(2489);\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Ffilter_factory.js\n+\n+\n+\n+\n+\n+class BaseFilterFactory {\n+  addFilter(maps) {\n+    return \"none\";\n+  }\n+  addHCMFilter(fgColor, bgColor) {\n+    return \"none\";\n+  }\n+  addAlphaFilter(map) {\n+    return \"none\";\n+  }\n+  addLuminosityFilter(map) {\n+    return \"none\";\n+  }\n+  addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n+    return \"none\";\n+  }\n+  destroy(keepHCM = false) {}\n+}\n+class DOMFilterFactory extends BaseFilterFactory {\n+  #baseUrl;\n+  #_cache;\n+  #_defs;\n+  #docId;\n+  #document;\n+  #_hcmCache;\n+  #id = 0;\n+  constructor({\n+    docId,\n+    ownerDocument = globalThis.document\n+  }) {\n+    super();\n+    this.#docId = docId;\n+    this.#document = ownerDocument;\n+  }\n+  get #cache() {\n+    return this.#_cache ||= new Map();\n+  }\n+  get #hcmCache() {\n+    return this.#_hcmCache ||= new Map();\n+  }\n+  get #defs() {\n+    if (!this.#_defs) {\n+      const div = this.#document.createElement(\"div\");\n+      const {\n+        style\n+      } = div;\n+      style.visibility = \"hidden\";\n+      style.contain = \"strict\";\n+      style.width = style.height = 0;\n+      style.position = \"absolute\";\n+      style.top = style.left = 0;\n+      style.zIndex = -1;\n+      const svg = this.#document.createElementNS(SVG_NS, \"svg\");\n+      svg.setAttribute(\"width\", 0);\n+      svg.setAttribute(\"height\", 0);\n+      this.#_defs = this.#document.createElementNS(SVG_NS, \"defs\");\n+      div.append(svg);\n+      svg.append(this.#_defs);\n+      this.#document.body.append(div);\n+    }\n+    return this.#_defs;\n+  }\n+  #createTables(maps) {\n+    if (maps.length === 1) {\n+      const mapR = maps[0];\n+      const buffer = new Array(256);\n+      for (let i = 0; i \u003C 256; i++) {\n+        buffer[i] = mapR[i] \u002F 255;\n       }\n+      const table = buffer.join(\",\");\n+      return [table, table, table];\n+    }\n+    const [mapR, mapG, mapB] = maps;\n+    const bufferR = new Array(256);\n+    const bufferG = new Array(256);\n+    const bufferB = new Array(256);\n+    for (let i = 0; i \u003C 256; i++) {\n+      bufferR[i] = mapR[i] \u002F 255;\n+      bufferG[i] = mapG[i] \u002F 255;\n+      bufferB[i] = mapB[i] \u002F 255;\n     }\n-    return this.compiledGlyphs[character] = function glyphDrawer(ctx, size) {\n-      commands[0](ctx);\n-      commands[1](ctx);\n-      ctx.scale(size, -size);\n-      for (let i = 2, ii = commands.length; i \u003C ii; i++) {\n-        commands[i](ctx);\n+    return [bufferR.join(\",\"), bufferG.join(\",\"), bufferB.join(\",\")];\n+  }\n+  #createUrl(id) {\n+    if (this.#baseUrl === undefined) {\n+      this.#baseUrl = \"\";\n+      const url = this.#document.URL;\n+      if (url !== this.#document.baseURI) {\n+        if (isDataScheme(url)) {\n+          warn('#createUrl: ignore \"data:\"-URL for performance reasons.');\n+        } else {\n+          this.#baseUrl = updateUrlHash(url, \"\");\n+        }\n       }\n+    }\n+    return `url(${this.#baseUrl}#${id})`;\n+  }\n+  addFilter(maps) {\n+    if (!maps) {\n+      return \"none\";\n+    }\n+    let value = this.#cache.get(maps);\n+    if (value) {\n+      return value;\n+    }\n+    const [tableR, tableG, tableB] = this.#createTables(maps);\n+    const key = maps.length === 1 ? tableR : `${tableR}${tableG}${tableB}`;\n+    value = this.#cache.get(key);\n+    if (value) {\n+      this.#cache.set(maps, value);\n+      return value;\n+    }\n+    const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n+    const url = this.#createUrl(id);\n+    this.#cache.set(maps, url);\n+    this.#cache.set(key, url);\n+    const filter = this.#createFilter(id);\n+    this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n+    return url;\n+  }\n+  addHCMFilter(fgColor, bgColor) {\n+    const key = `${fgColor}-${bgColor}`;\n+    const filterName = \"base\";\n+    let info = this.#hcmCache.get(filterName);\n+    if (info?.key === key) {\n+      return info.url;\n+    }\n+    if (info) {\n+      info.filter?.remove();\n+      info.key = key;\n+      info.url = \"none\";\n+      info.filter = null;\n+    } else {\n+      info = {\n+        key,\n+        url: \"none\",\n+        filter: null\n+      };\n+      this.#hcmCache.set(filterName, info);\n+    }\n+    if (!fgColor || !bgColor) {\n+      return info.url;\n+    }\n+    const fgRGB = this.#getRGB(fgColor);\n+    fgColor = Util.makeHexColor(...fgRGB);\n+    const bgRGB = this.#getRGB(bgColor);\n+    bgColor = Util.makeHexColor(...bgRGB);\n+    this.#defs.style.color = \"\";\n+    if (fgColor === \"#000000\" && bgColor === \"#ffffff\" || fgColor === bgColor) {\n+      return info.url;\n+    }\n+    const map = new Array(256);\n+    for (let i = 0; i \u003C= 255; i++) {\n+      const x = i \u002F 255;\n+      map[i] = x \u003C= 0.03928 ? x \u002F 12.92 : ((x + 0.055) \u002F 1.055) ** 2.4;\n+    }\n+    const table = map.join(\",\");\n+    const id = `g_${this.#docId}_hcm_filter`;\n+    const filter = info.filter = this.#createFilter(id);\n+    this.#addTransferMapConversion(table, table, table, filter);\n+    this.#addGrayConversion(filter);\n+    const getSteps = (c, n) => {\n+      const start = fgRGB[c] \u002F 255;\n+      const end = bgRGB[c] \u002F 255;\n+      const arr = new Array(n + 1);\n+      for (let i = 0; i \u003C= n; i++) {\n+        arr[i] = start + i \u002F n * (end - start);\n+      }\n+      return arr.join(\",\");\n     };\n+    this.#addTransferMapConversion(getSteps(0, 5), getSteps(1, 5), getSteps(2, 5), filter);\n+    info.url = this.#createUrl(id);\n+    return info.url;\n+  }\n+  addAlphaFilter(map) {\n+    let value = this.#cache.get(map);\n+    if (value) {\n+      return value;\n+    }\n+    const [tableA] = this.#createTables([map]);\n+    const key = `alpha_${tableA}`;\n+    value = this.#cache.get(key);\n+    if (value) {\n+      this.#cache.set(map, value);\n+      return value;\n+    }\n+    const id = `g_${this.#docId}_alpha_map_${this.#id++}`;\n+    const url = this.#createUrl(id);\n+    this.#cache.set(map, url);\n+    this.#cache.set(key, url);\n+    const filter = this.#createFilter(id);\n+    this.#addTransferMapAlphaConversion(tableA, filter);\n+    return url;\n+  }\n+  addLuminosityFilter(map) {\n+    let value = this.#cache.get(map || \"luminosity\");\n+    if (value) {\n+      return value;\n+    }\n+    let tableA, key;\n+    if (map) {\n+      [tableA] = this.#createTables([map]);\n+      key = `luminosity_${tableA}`;\n+    } else {\n+      key = \"luminosity\";\n+    }\n+    value = this.#cache.get(key);\n+    if (value) {\n+      this.#cache.set(map, value);\n+      return value;\n+    }\n+    const id = `g_${this.#docId}_luminosity_map_${this.#id++}`;\n+    const url = this.#createUrl(id);\n+    this.#cache.set(map, url);\n+    this.#cache.set(key, url);\n+    const filter = this.#createFilter(id);\n+    this.#addLuminosityConversion(filter);\n+    if (map) {\n+      this.#addTransferMapAlphaConversion(tableA, filter);\n+    }\n+    return url;\n+  }\n+  addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n+    const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n+    let info = this.#hcmCache.get(filterName);\n+    if (info?.key === key) {\n+      return info.url;\n+    }\n+    if (info) {\n+      info.filter?.remove();\n+      info.key = key;\n+      info.url = \"none\";\n+      info.filter = null;\n+    } else {\n+      info = {\n+        key,\n+        url: \"none\",\n+        filter: null\n+      };\n+      this.#hcmCache.set(filterName, info);\n+    }\n+    if (!fgColor || !bgColor) {\n+      return info.url;\n+    }\n+    const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n+    let fgGray = Math.round(0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]);\n+    let bgGray = Math.round(0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]);\n+    let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(this.#getRGB.bind(this));\n+    if (bgGray \u003C fgGray) {\n+      [fgGray, bgGray, newFgRGB, newBgRGB] = [bgGray, fgGray, newBgRGB, newFgRGB];\n+    }\n+    this.#defs.style.color = \"\";\n+    const getSteps = (fg, bg, n) => {\n+      const arr = new Array(256);\n+      const step = (bgGray - fgGray) \u002F n;\n+      const newStart = fg \u002F 255;\n+      const newStep = (bg - fg) \u002F (255 * n);\n+      let prev = 0;\n+      for (let i = 0; i \u003C= n; i++) {\n+        const k = Math.round(fgGray + i * step);\n+        const value = newStart + i * newStep;\n+        for (let j = prev; j \u003C= k; j++) {\n+          arr[j] = value;\n+        }\n+        prev = k + 1;\n+      }\n+      for (let i = prev; i \u003C 256; i++) {\n+        arr[i] = arr[prev - 1];\n+      }\n+      return arr.join(\",\");\n+    };\n+    const id = `g_${this.#docId}_hcm_${filterName}_filter`;\n+    const filter = info.filter = this.#createFilter(id);\n+    this.#addGrayConversion(filter);\n+    this.#addTransferMapConversion(getSteps(newFgRGB[0], newBgRGB[0], 5), getSteps(newFgRGB[1], newBgRGB[1], 5), getSteps(newFgRGB[2], newBgRGB[2], 5), filter);\n+    info.url = this.#createUrl(id);\n+    return info.url;\n+  }\n+  destroy(keepHCM = false) {\n+    if (keepHCM && this.#_hcmCache?.size) {\n+      return;\n+    }\n+    this.#_defs?.parentNode.parentNode.remove();\n+    this.#_defs = null;\n+    this.#_cache?.clear();\n+    this.#_cache = null;\n+    this.#_hcmCache?.clear();\n+    this.#_hcmCache = null;\n+    this.#id = 0;\n+  }\n+  #addLuminosityConversion(filter) {\n+    const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n+    feColorMatrix.setAttribute(\"type\", \"matrix\");\n+    feColorMatrix.setAttribute(\"values\", \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0\");\n+    filter.append(feColorMatrix);\n+  }\n+  #addGrayConversion(filter) {\n+    const feColorMatrix = this.#document.createElementNS(SVG_NS, \"feColorMatrix\");\n+    feColorMatrix.setAttribute(\"type\", \"matrix\");\n+    feColorMatrix.setAttribute(\"values\", \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\");\n+    filter.append(feColorMatrix);\n+  }\n+  #createFilter(id) {\n+    const filter = this.#document.createElementNS(SVG_NS, \"filter\");\n+    filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n+    filter.setAttribute(\"id\", id);\n+    this.#defs.append(filter);\n+    return filter;\n+  }\n+  #appendFeFunc(feComponentTransfer, func, table) {\n+    const feFunc = this.#document.createElementNS(SVG_NS, func);\n+    feFunc.setAttribute(\"type\", \"discrete\");\n+    feFunc.setAttribute(\"tableValues\", table);\n+    feComponentTransfer.append(feFunc);\n+  }\n+  #addTransferMapConversion(rTable, gTable, bTable, filter) {\n+    const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n+    filter.append(feComponentTransfer);\n+    this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n+    this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n+    this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n+  }\n+  #addTransferMapAlphaConversion(aTable, filter) {\n+    const feComponentTransfer = this.#document.createElementNS(SVG_NS, \"feComponentTransfer\");\n+    filter.append(feComponentTransfer);\n+    this.#appendFeFunc(feComponentTransfer, \"feFuncA\", aTable);\n+  }\n+  #getRGB(color) {\n+    this.#defs.style.color = color;\n+    return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"color\"));\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Fnode_utils.js\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Fstandard_fontdata_factory.js\n \n \n-if (isNodeJS) {\n-  var packageCapability = Promise.withResolvers();\n-  var packageMap = null;\n-  const loadPackages = async () => {\n-    const fs = await import( \u002F*webpackIgnore: true*\u002F\"fs\"),\n-      http = await import( \u002F*webpackIgnore: true*\u002F\"http\"),\n-      https = await import( \u002F*webpackIgnore: true*\u002F\"https\"),\n-      url = await import( \u002F*webpackIgnore: true*\u002F\"url\");\n-    let canvas, path2d;\n-    return new Map(Object.entries({\n-      fs,\n-      http,\n-      https,\n-      url,\n-      canvas,\n-      path2d\n-    }));\n-  };\n-  loadPackages().then(map => {\n-    packageMap = map;\n-    packageCapability.resolve();\n-  }, reason => {\n-    warn(`loadPackages: ${reason}`);\n-    packageMap = new Map();\n-    packageCapability.resolve();\n-  });\n+\n+\n+\n+\n+\n+\n+\n+class BaseStandardFontDataFactory {\n+  constructor({\n+    baseUrl = null\n+  }) {\n+    this.baseUrl = baseUrl;\n+  }\n+  async fetch({\n+    filename\n+  }) {\n+    if (!this.baseUrl) {\n+      throw new Error(\"Ensure that the `standardFontDataUrl` API parameter is provided.\");\n+    }\n+    if (!filename) {\n+      throw new Error(\"Font filename must be specified.\");\n+    }\n+    const url = `${this.baseUrl}${filename}`;\n+    return this._fetch(url).catch(reason => {\n+      throw new Error(`Unable to load font data at: ${url}`);\n+    });\n+  }\n+  async _fetch(url) {\n+    unreachable(\"Abstract method `_fetch` called.\");\n+  }\n }\n-class NodePackages {\n-  static get promise() {\n-    return packageCapability.promise;\n+class DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n+  async _fetch(url) {\n+    const data = await fetchData(url, \"arraybuffer\");\n+    return new Uint8Array(data);\n   }\n-  static get(name) {\n-    return packageMap?.get(name);\n+}\n+\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Fwasm_factory.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+class BaseWasmFactory {\n+  constructor({\n+    baseUrl = null\n+  }) {\n+    this.baseUrl = baseUrl;\n+  }\n+  async fetch({\n+    filename\n+  }) {\n+    if (!this.baseUrl) {\n+      throw new Error(\"Ensure that the `wasmUrl` API parameter is provided.\");\n+    }\n+    if (!filename) {\n+      throw new Error(\"Wasm filename must be specified.\");\n+    }\n+    const url = `${this.baseUrl}${filename}`;\n+    return this._fetch(url).catch(reason => {\n+      throw new Error(`Unable to load wasm data at: ${url}`);\n+    });\n+  }\n+  async _fetch(url) {\n+    unreachable(\"Abstract method `_fetch` called.\");\n   }\n }\n-const node_utils_fetchData = function (url) {\n-  const fs = NodePackages.get(\"fs\");\n-  return fs.promises.readFile(url).then(data => new Uint8Array(data));\n-};\n+class DOMWasmFactory extends BaseWasmFactory {\n+  async _fetch(url) {\n+    const data = await fetchData(url, \"arraybuffer\");\n+    return new Uint8Array(data);\n+  }\n+}\n+\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Fnode_utils.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+if (isNodeJS) {\n+  let canvas;\n+  try {\n+    const require = process.getBuiltinModule(\"module\").createRequire(import.meta.url);\n+    try {\n+      canvas = require(\"@napi-rs\u002Fcanvas\");\n+    } catch (ex) {\n+      warn(`Cannot load \"@napi-rs\u002Fcanvas\" package: \"${ex}\".`);\n+    }\n+  } catch (ex) {\n+    warn(`Cannot access the \\`require\\` function: \"${ex}\".`);\n+  }\n+  if (!globalThis.DOMMatrix) {\n+    if (canvas?.DOMMatrix) {\n+      globalThis.DOMMatrix = canvas.DOMMatrix;\n+    } else {\n+      warn(\"Cannot polyfill `DOMMatrix`, rendering may be broken.\");\n+    }\n+  }\n+  if (!globalThis.ImageData) {\n+    if (canvas?.ImageData) {\n+      globalThis.ImageData = canvas.ImageData;\n+    } else {\n+      warn(\"Cannot polyfill `ImageData`, rendering may be broken.\");\n+    }\n+  }\n+  if (!globalThis.Path2D) {\n+    if (canvas?.Path2D) {\n+      globalThis.Path2D = canvas.Path2D;\n+    } else {\n+      warn(\"Cannot polyfill `Path2D`, rendering may be broken.\");\n+    }\n+  }\n+  if (!globalThis.navigator?.language) {\n+    globalThis.navigator = {\n+      language: \"en-US\",\n+      platform: \"\",\n+      userAgent: \"\"\n+    };\n+  }\n+}\n+async function node_utils_fetchData(url) {\n+  const fs = process.getBuiltinModule(\"fs\");\n+  const data = await fs.promises.readFile(url);\n+  return new Uint8Array(data);\n+}\n class NodeFilterFactory extends BaseFilterFactory {}\n class NodeCanvasFactory extends BaseCanvasFactory {\n   _createCanvas(width, height) {\n-    const canvas = NodePackages.get(\"canvas\");\n+    const require = process.getBuiltinModule(\"module\").createRequire(import.meta.url);\n+    const canvas = require(\"@napi-rs\u002Fcanvas\");\n     return canvas.createCanvas(width, height);\n   }\n }\n class NodeCMapReaderFactory extends BaseCMapReaderFactory {\n-  _fetchData(url, compressionType) {\n-    return node_utils_fetchData(url).then(data => ({\n-      cMapData: data,\n-      compressionType\n-    }));\n+  async _fetch(url) {\n+    return node_utils_fetchData(url);\n   }\n }\n class NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\n-  _fetchData(url) {\n+  async _fetch(url) {\n+    return node_utils_fetchData(url);\n+  }\n+}\n+class NodeWasmFactory extends BaseWasmFactory {\n+  async _fetch(url) {\n     return node_utils_fetchData(url);\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Fpattern_helper.js\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Fpattern_helper.js\n+\n+\n+\n \n \n const PathType = {\n@@ -5375,10 +12149,8 @@\n   ctx.clip(region);\n }\n class BaseShadingPattern {\n-  constructor() {\n-    if (this.constructor === BaseShadingPattern) {\n-      unreachable(\"Cannot initialize BaseShadingPattern.\");\n-    }\n+  isModifyingCurrentTransform() {\n+    return false;\n   }\n   getPattern() {\n     unreachable(\"Abstract method `getPattern` called.\");\n@@ -5414,7 +12186,7 @@\n       const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, getCurrentTransform(ctx)) || [0, 0, 0, 0];\n       const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n       const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n-      const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", width, height, true);\n+      const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", width, height);\n       const tmpCtx = tmpCanvas.context;\n       tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n       tmpCtx.beginPath();\n@@ -5573,8 +12345,8 @@\n     this._colors = IR[3];\n     this._figures = IR[4];\n     this._bounds = IR[5];\n-    this._bbox = IR[7];\n-    this._background = IR[8];\n+    this._bbox = IR[6];\n+    this._background = IR[7];\n     this.matrix = null;\n   }\n   _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n@@ -5599,7 +12371,7 @@\n     };\n     const paddedWidth = width + BORDER_SIZE * 2;\n     const paddedHeight = height + BORDER_SIZE * 2;\n-    const tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight, false);\n+    const tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight);\n     const tmpCtx = tmpCanvas.context;\n     const data = tmpCtx.createImageData(width, height);\n     if (backgroundColor) {\n@@ -5624,17 +12396,22 @@\n       scaleY\n     };\n   }\n+  isModifyingCurrentTransform() {\n+    return true;\n+  }\n   getPattern(ctx, owner, inverse, pathType) {\n     applyBoundingBox(ctx, this._bbox);\n-    let scale;\n+    const scale = new Float32Array(2);\n     if (pathType === PathType.SHADING) {\n-      scale = Util.singularValueDecompose2dScale(getCurrentTransform(ctx));\n+      Util.singularValueDecompose2dScale(getCurrentTransform(ctx), scale);\n+    } else if (this.matrix) {\n+      Util.singularValueDecompose2dScale(this.matrix, scale);\n+      const [matrixScaleX, matrixScaleY] = scale;\n+      Util.singularValueDecompose2dScale(owner.baseTransform, scale);\n+      scale[0] *= matrixScaleX;\n+      scale[1] *= matrixScaleY;\n     } else {\n-      scale = Util.singularValueDecompose2dScale(owner.baseTransform);\n-      if (this.matrix) {\n-        const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n-        scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n-      }\n+      Util.singularValueDecompose2dScale(owner.baseTransform, scale);\n     }\n     const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases);\n     if (pathType !== PathType.SHADING) {\n@@ -5670,7 +12447,8 @@\n };\n class TilingPattern {\n   static MAX_PATTERN_SIZE = 3000;\n-  constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n+  constructor(IR, ctx, canvasGraphicsFactory, baseTransform) {\n+    this.color = IR[1];\n     this.operatorList = IR[2];\n     this.matrix = IR[3];\n     this.bbox = IR[4];\n@@ -5678,64 +12456,109 @@\n     this.ystep = IR[6];\n     this.paintType = IR[7];\n     this.tilingType = IR[8];\n-    this.color = color;\n     this.ctx = ctx;\n     this.canvasGraphicsFactory = canvasGraphicsFactory;\n     this.baseTransform = baseTransform;\n   }\n   createPatternCanvas(owner) {\n-    const operatorList = this.operatorList;\n-    const bbox = this.bbox;\n-    const xstep = this.xstep;\n-    const ystep = this.ystep;\n-    const paintType = this.paintType;\n-    const tilingType = this.tilingType;\n-    const color = this.color;\n-    const canvasGraphicsFactory = this.canvasGraphicsFactory;\n+    const {\n+      bbox,\n+      operatorList,\n+      paintType,\n+      tilingType,\n+      color,\n+      canvasGraphicsFactory\n+    } = this;\n+    let {\n+      xstep,\n+      ystep\n+    } = this;\n+    xstep = Math.abs(xstep);\n+    ystep = Math.abs(ystep);\n     info(\"TilingType: \" + tilingType);\n     const x0 = bbox[0],\n       y0 = bbox[1],\n       x1 = bbox[2],\n       y1 = bbox[3];\n-    const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n-    const curMatrixScale = Util.singularValueDecompose2dScale(this.baseTransform);\n-    const combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]];\n-    const dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]);\n-    const dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]);\n-    const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", dimx.size, dimy.size, true);\n+    const width = x1 - x0;\n+    const height = y1 - y0;\n+    const scale = new Float32Array(2);\n+    Util.singularValueDecompose2dScale(this.matrix, scale);\n+    const [matrixScaleX, matrixScaleY] = scale;\n+    Util.singularValueDecompose2dScale(this.baseTransform, scale);\n+    const combinedScaleX = matrixScaleX * scale[0];\n+    const combinedScaleY = matrixScaleY * scale[1];\n+    let canvasWidth = width,\n+      canvasHeight = height,\n+      redrawHorizontally = false,\n+      redrawVertically = false;\n+    const xScaledStep = Math.ceil(xstep * combinedScaleX);\n+    const yScaledStep = Math.ceil(ystep * combinedScaleY);\n+    const xScaledWidth = Math.ceil(width * combinedScaleX);\n+    const yScaledHeight = Math.ceil(height * combinedScaleY);\n+    if (xScaledStep >= xScaledWidth) {\n+      canvasWidth = xstep;\n+    } else {\n+      redrawHorizontally = true;\n+    }\n+    if (yScaledStep >= yScaledHeight) {\n+      canvasHeight = ystep;\n+    } else {\n+      redrawVertically = true;\n+    }\n+    const dimx = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n+    const dimy = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n+    const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", dimx.size, dimy.size);\n     const tmpCtx = tmpCanvas.context;\n     const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n     graphics.groupLevel = owner.groupLevel;\n     this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n-    let adjustedX0 = x0;\n-    let adjustedY0 = y0;\n-    let adjustedX1 = x1;\n-    let adjustedY1 = y1;\n-    if (x0 \u003C 0) {\n-      adjustedX0 = 0;\n-      adjustedX1 += Math.abs(x0);\n-    }\n-    if (y0 \u003C 0) {\n-      adjustedY0 = 0;\n-      adjustedY1 += Math.abs(y0);\n-    }\n-    tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0));\n+    tmpCtx.translate(-dimx.scale * x0, -dimy.scale * y0);\n     graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n     tmpCtx.save();\n-    this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1);\n+    this.clipBbox(graphics, x0, y0, x1, y1);\n     graphics.baseTransform = getCurrentTransform(graphics.ctx);\n     graphics.executeOperatorList(operatorList);\n     graphics.endDrawing();\n+    tmpCtx.restore();\n+    if (redrawHorizontally || redrawVertically) {\n+      const image = tmpCanvas.canvas;\n+      if (redrawHorizontally) {\n+        canvasWidth = xstep;\n+      }\n+      if (redrawVertically) {\n+        canvasHeight = ystep;\n+      }\n+      const dimx2 = this.getSizeAndScale(canvasWidth, this.ctx.canvas.width, combinedScaleX);\n+      const dimy2 = this.getSizeAndScale(canvasHeight, this.ctx.canvas.height, combinedScaleY);\n+      const xSize = dimx2.size;\n+      const ySize = dimy2.size;\n+      const tmpCanvas2 = owner.cachedCanvases.getCanvas(\"pattern-workaround\", xSize, ySize);\n+      const tmpCtx2 = tmpCanvas2.context;\n+      const ii = redrawHorizontally ? Math.floor(width \u002F xstep) : 0;\n+      const jj = redrawVertically ? Math.floor(height \u002F ystep) : 0;\n+      for (let i = 0; i \u003C= ii; i++) {\n+        for (let j = 0; j \u003C= jj; j++) {\n+          tmpCtx2.drawImage(image, xSize * i, ySize * j, xSize, ySize, 0, 0, xSize, ySize);\n+        }\n+      }\n+      return {\n+        canvas: tmpCanvas2.canvas,\n+        scaleX: dimx2.scale,\n+        scaleY: dimy2.scale,\n+        offsetX: x0,\n+        offsetY: y0\n+      };\n+    }\n     return {\n       canvas: tmpCanvas.canvas,\n       scaleX: dimx.scale,\n       scaleY: dimy.scale,\n-      offsetX: adjustedX0,\n-      offsetY: adjustedY0\n+      offsetX: x0,\n+      offsetY: y0\n     };\n   }\n   getSizeAndScale(step, realOutputSize, scale) {\n-    step = Math.abs(step);\n     const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n     let size = Math.ceil(step * scale);\n     if (size >= maxSize) {\n@@ -5752,7 +12575,7 @@\n     const bboxWidth = x1 - x0;\n     const bboxHeight = y1 - y0;\n     graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n-    graphics.current.updateRectMinMax(getCurrentTransform(graphics.ctx), [x0, y0, x1, y1]);\n+    Util.axialAlignedBoundingBox([x0, y0, x1, y1], getCurrentTransform(graphics.ctx), graphics.current.minMax);\n     graphics.clip();\n     graphics.endPath();\n   }\n@@ -5761,23 +12584,24 @@\n       current = graphics.current;\n     switch (paintType) {\n       case PaintType.COLORED:\n-        const ctx = this.ctx;\n-        context.fillStyle = ctx.fillStyle;\n-        context.strokeStyle = ctx.strokeStyle;\n-        current.fillColor = ctx.fillStyle;\n-        current.strokeColor = ctx.strokeStyle;\n+        const {\n+          fillStyle,\n+          strokeStyle\n+        } = this.ctx;\n+        context.fillStyle = current.fillColor = fillStyle;\n+        context.strokeStyle = current.strokeColor = strokeStyle;\n         break;\n       case PaintType.UNCOLORED:\n-        const cssColor = Util.makeHexColor(color[0], color[1], color[2]);\n-        context.fillStyle = cssColor;\n-        context.strokeStyle = cssColor;\n-        current.fillColor = cssColor;\n-        current.strokeColor = cssColor;\n+        context.fillStyle = context.strokeStyle = color;\n+        current.fillColor = current.strokeColor = color;\n         break;\n       default:\n         throw new FormatError(`Unsupported paint type: ${paintType}`);\n     }\n   }\n+  isModifyingCurrentTransform() {\n+    return false;\n+  }\n   getPattern(ctx, owner, inverse, pathType) {\n     let matrix = inverse;\n     if (pathType !== PathType.SHADING) {\n@@ -5796,7 +12620,10 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fshared\u002Fimage_utils.js\n+;\u002F\u002F .\u002Fsrc\u002Fshared\u002Fimage_utils.js\n+\n+\n+\n \n function convertToRGBA(params) {\n   switch (params.kind) {\n@@ -5857,7 +12684,8 @@\n   height\n }) {\n   let i = 0;\n-  const len32 = src.length >> 2;\n+  const len = width * height * 3;\n+  const len32 = len >> 2;\n   const src32 = new Uint32Array(src.buffer, srcPos, len32);\n   if (FeatureTest.isLittleEndian) {\n     for (; i \u003C len32 - 2; i += 3, destPos += 4) {\n@@ -5869,7 +12697,7 @@\n       dest[destPos + 2] = s2 >>> 16 | s3 \u003C\u003C 16 | 0xff000000;\n       dest[destPos + 3] = s3 >>> 8 | 0xff000000;\n     }\n-    for (let j = i * 4, jj = src.length; j \u003C jj; j += 3) {\n+    for (let j = i * 4, jj = srcPos + len; j \u003C jj; j += 3) {\n       dest[destPos++] = src[j] | src[j + 1] \u003C\u003C 8 | src[j + 2] \u003C\u003C 16 | 0xff000000;\n     }\n   } else {\n@@ -5882,12 +12710,12 @@\n       dest[destPos + 2] = s2 \u003C\u003C 16 | s3 >>> 16 | 0xff;\n       dest[destPos + 3] = s3 \u003C\u003C 8 | 0xff;\n     }\n-    for (let j = i * 4, jj = src.length; j \u003C jj; j += 3) {\n+    for (let j = i * 4, jj = srcPos + len; j \u003C jj; j += 3) {\n       dest[destPos++] = src[j] \u003C\u003C 24 | src[j + 1] \u003C\u003C 16 | src[j + 2] \u003C\u003C 8 | 0xff;\n     }\n   }\n   return {\n-    srcPos,\n+    srcPos: srcPos + len,\n     destPos\n   };\n }\n@@ -5903,7 +12731,14 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Fcanvas.js\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Fcanvas.js\n+\n+\n+\n+\n+\n+\n+\n \n \n \n@@ -5912,8 +12747,10 @@\n const MAX_FONT_SIZE = 100;\n const EXECUTION_TIME = 15;\n const EXECUTION_STEPS = 10;\n-const MAX_SIZE_TO_COMPILE = 1000;\n const FULL_CHUNK_HEIGHT = 16;\n+const SCALE_MATRIX = new DOMMatrix();\n+const XY = new Float32Array(2);\n+const MIN_MAX_INIT = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]);\n function mirrorContextOperations(ctx, destCtx) {\n   if (ctx._removeMirroring) {\n     throw new Error(\"Context is already forwarding operations.\");\n@@ -5951,39 +12788,39 @@\n     ctx.beginPath = ctx.__originalBeginPath;\n     delete ctx._removeMirroring;\n   };\n-  ctx.save = function ctxSave() {\n+  ctx.save = function () {\n     destCtx.save();\n     this.__originalSave();\n   };\n-  ctx.restore = function ctxRestore() {\n+  ctx.restore = function () {\n     destCtx.restore();\n     this.__originalRestore();\n   };\n-  ctx.translate = function ctxTranslate(x, y) {\n+  ctx.translate = function (x, y) {\n     destCtx.translate(x, y);\n     this.__originalTranslate(x, y);\n   };\n-  ctx.scale = function ctxScale(x, y) {\n+  ctx.scale = function (x, y) {\n     destCtx.scale(x, y);\n     this.__originalScale(x, y);\n   };\n-  ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n+  ctx.transform = function (a, b, c, d, e, f) {\n     destCtx.transform(a, b, c, d, e, f);\n     this.__originalTransform(a, b, c, d, e, f);\n   };\n-  ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n+  ctx.setTransform = function (a, b, c, d, e, f) {\n     destCtx.setTransform(a, b, c, d, e, f);\n     this.__originalSetTransform(a, b, c, d, e, f);\n   };\n-  ctx.resetTransform = function ctxResetTransform() {\n+  ctx.resetTransform = function () {\n     destCtx.resetTransform();\n     this.__originalResetTransform();\n   };\n-  ctx.rotate = function ctxRotate(angle) {\n+  ctx.rotate = function (angle) {\n     destCtx.rotate(angle);\n     this.__originalRotate(angle);\n   };\n-  ctx.clip = function ctxRotate(rule) {\n+  ctx.clip = function (rule) {\n     destCtx.clip(rule);\n     this.__originalClip(rule);\n   };\n@@ -6074,213 +12911,51 @@\n   const scaleY = Math.hypot(c, d);\n   return [scaleX * destW, scaleY * destH];\n }\n-function compileType3Glyph(imgData) {\n-  const {\n-    width,\n-    height\n-  } = imgData;\n-  if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {\n-    return null;\n-  }\n-  const POINT_TO_PROCESS_LIMIT = 1000;\n-  const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n-  const width1 = width + 1;\n-  let points = new Uint8Array(width1 * (height + 1));\n-  let i, j, j0;\n-  const lineSize = width + 7 & ~7;\n-  let data = new Uint8Array(lineSize * height),\n-    pos = 0;\n-  for (const elem of imgData.data) {\n-    let mask = 128;\n-    while (mask > 0) {\n-      data[pos++] = elem & mask ? 0 : 255;\n-      mask >>= 1;\n-    }\n-  }\n-  let count = 0;\n-  pos = 0;\n-  if (data[pos] !== 0) {\n-    points[0] = 1;\n-    ++count;\n-  }\n-  for (j = 1; j \u003C width; j++) {\n-    if (data[pos] !== data[pos + 1]) {\n-      points[j] = data[pos] ? 2 : 1;\n-      ++count;\n-    }\n-    pos++;\n-  }\n-  if (data[pos] !== 0) {\n-    points[j] = 2;\n-    ++count;\n-  }\n-  for (i = 1; i \u003C height; i++) {\n-    pos = i * lineSize;\n-    j0 = i * width1;\n-    if (data[pos - lineSize] !== data[pos]) {\n-      points[j0] = data[pos] ? 1 : 8;\n-      ++count;\n-    }\n-    let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n-    for (j = 1; j \u003C width; j++) {\n-      sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);\n-      if (POINT_TYPES[sum]) {\n-        points[j0 + j] = POINT_TYPES[sum];\n-        ++count;\n-      }\n-      pos++;\n-    }\n-    if (data[pos - lineSize] !== data[pos]) {\n-      points[j0 + j] = data[pos] ? 2 : 4;\n-      ++count;\n-    }\n-    if (count > POINT_TO_PROCESS_LIMIT) {\n-      return null;\n-    }\n-  }\n-  pos = lineSize * (height - 1);\n-  j0 = i * width1;\n-  if (data[pos] !== 0) {\n-    points[j0] = 8;\n-    ++count;\n-  }\n-  for (j = 1; j \u003C width; j++) {\n-    if (data[pos] !== data[pos + 1]) {\n-      points[j0 + j] = data[pos] ? 4 : 8;\n-      ++count;\n-    }\n-    pos++;\n-  }\n-  if (data[pos] !== 0) {\n-    points[j0 + j] = 4;\n-    ++count;\n-  }\n-  if (count > POINT_TO_PROCESS_LIMIT) {\n-    return null;\n-  }\n-  const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n-  const path = new Path2D();\n-  for (i = 0; count && i \u003C= height; i++) {\n-    let p = i * width1;\n-    const end = p + width;\n-    while (p \u003C end && !points[p]) {\n-      p++;\n-    }\n-    if (p === end) {\n-      continue;\n-    }\n-    path.moveTo(p % width1, i);\n-    const p0 = p;\n-    let type = points[p];\n-    do {\n-      const step = steps[type];\n-      do {\n-        p += step;\n-      } while (!points[p]);\n-      const pp = points[p];\n-      if (pp !== 5 && pp !== 10) {\n-        type = pp;\n-        points[p] = 0;\n-      } else {\n-        type = pp & 0x33 * type >> 4;\n-        points[p] &= type >> 2 | type \u003C\u003C 2;\n-      }\n-      path.lineTo(p % width1, p \u002F width1 | 0);\n-      if (!points[p]) {\n-        --count;\n-      }\n-    } while (p0 !== p);\n-    --i;\n-  }\n-  data = null;\n-  points = null;\n-  const drawOutline = function (c) {\n-    c.save();\n-    c.scale(1 \u002F width, -1 \u002F height);\n-    c.translate(0, -height);\n-    c.fill(path);\n-    c.beginPath();\n-    c.restore();\n-  };\n-  return drawOutline;\n-}\n class CanvasExtraState {\n+  alphaIsShape = false;\n+  fontSize = 0;\n+  fontSizeScale = 1;\n+  textMatrix = null;\n+  textMatrixScale = 1;\n+  fontMatrix = FONT_IDENTITY_MATRIX;\n+  leading = 0;\n+  x = 0;\n+  y = 0;\n+  lineX = 0;\n+  lineY = 0;\n+  charSpacing = 0;\n+  wordSpacing = 0;\n+  textHScale = 1;\n+  textRenderingMode = TextRenderingMode.FILL;\n+  textRise = 0;\n+  fillColor = \"#000000\";\n+  strokeColor = \"#000000\";\n+  patternFill = false;\n+  patternStroke = false;\n+  fillAlpha = 1;\n+  strokeAlpha = 1;\n+  lineWidth = 1;\n+  activeSMask = null;\n+  transferMaps = \"none\";\n   constructor(width, height) {\n-    this.alphaIsShape = false;\n-    this.fontSize = 0;\n-    this.fontSizeScale = 1;\n-    this.textMatrix = IDENTITY_MATRIX;\n-    this.textMatrixScale = 1;\n-    this.fontMatrix = FONT_IDENTITY_MATRIX;\n-    this.leading = 0;\n-    this.x = 0;\n-    this.y = 0;\n-    this.lineX = 0;\n-    this.lineY = 0;\n-    this.charSpacing = 0;\n-    this.wordSpacing = 0;\n-    this.textHScale = 1;\n-    this.textRenderingMode = TextRenderingMode.FILL;\n-    this.textRise = 0;\n-    this.fillColor = \"#000000\";\n-    this.strokeColor = \"#000000\";\n-    this.patternFill = false;\n-    this.fillAlpha = 1;\n-    this.strokeAlpha = 1;\n-    this.lineWidth = 1;\n-    this.activeSMask = null;\n-    this.transferMaps = \"none\";\n-    this.startNewPathAndClipBox([0, 0, width, height]);\n+    this.clipBox = new Float32Array([0, 0, width, height]);\n+    this.minMax = MIN_MAX_INIT.slice();\n   }\n   clone() {\n     const clone = Object.create(this);\n     clone.clipBox = this.clipBox.slice();\n+    clone.minMax = this.minMax.slice();\n     return clone;\n   }\n-  setCurrentPoint(x, y) {\n-    this.x = x;\n-    this.y = y;\n-  }\n-  updatePathMinMax(transform, x, y) {\n-    [x, y] = Util.applyTransform([x, y], transform);\n-    this.minX = Math.min(this.minX, x);\n-    this.minY = Math.min(this.minY, y);\n-    this.maxX = Math.max(this.maxX, x);\n-    this.maxY = Math.max(this.maxY, y);\n-  }\n-  updateRectMinMax(transform, rect) {\n-    const p1 = Util.applyTransform(rect, transform);\n-    const p2 = Util.applyTransform(rect.slice(2), transform);\n-    const p3 = Util.applyTransform([rect[0], rect[3]], transform);\n-    const p4 = Util.applyTransform([rect[2], rect[1]], transform);\n-    this.minX = Math.min(this.minX, p1[0], p2[0], p3[0], p4[0]);\n-    this.minY = Math.min(this.minY, p1[1], p2[1], p3[1], p4[1]);\n-    this.maxX = Math.max(this.maxX, p1[0], p2[0], p3[0], p4[0]);\n-    this.maxY = Math.max(this.maxY, p1[1], p2[1], p3[1], p4[1]);\n-  }\n-  updateScalingPathMinMax(transform, minMax) {\n-    Util.scaleMinMax(transform, minMax);\n-    this.minX = Math.min(this.minX, minMax[0]);\n-    this.minY = Math.min(this.minY, minMax[1]);\n-    this.maxX = Math.max(this.maxX, minMax[2]);\n-    this.maxY = Math.max(this.maxY, minMax[3]);\n-  }\n-  updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n-    const box = Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax);\n-    if (minMax) {\n-      return;\n-    }\n-    this.updateRectMinMax(transform, box);\n-  }\n   getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n-    const box = [this.minX, this.minY, this.maxX, this.maxY];\n+    const box = this.minMax.slice();\n     if (pathType === PathType.STROKE) {\n       if (!transform) {\n         unreachable(\"Stroke bounding box must include transform.\");\n       }\n-      const scale = Util.singularValueDecompose2dScale(transform);\n-      const xStrokePad = scale[0] * this.lineWidth \u002F 2;\n-      const yStrokePad = scale[1] * this.lineWidth \u002F 2;\n+      Util.singularValueDecompose2dScale(transform, XY);\n+      const xStrokePad = XY[0] * this.lineWidth \u002F 2;\n+      const yStrokePad = XY[1] * this.lineWidth \u002F 2;\n       box[0] -= xStrokePad;\n       box[1] -= yStrokePad;\n       box[2] += xStrokePad;\n@@ -6293,21 +12968,18 @@\n     this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n   }\n   isEmptyClip() {\n-    return this.minX === Infinity;\n+    return this.minMax[0] === Infinity;\n   }\n   startNewPathAndClipBox(box) {\n-    this.clipBox = box;\n-    this.minX = Infinity;\n-    this.minY = Infinity;\n-    this.maxX = 0;\n-    this.maxY = 0;\n+    this.clipBox.set(box, 0);\n+    this.minMax.set(MIN_MAX_INIT, 0);\n   }\n   getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n     return Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));\n   }\n }\n function putBinaryImageData(ctx, imgData) {\n-  if (typeof ImageData !== \"undefined\" && imgData instanceof ImageData) {\n+  if (imgData instanceof ImageData) {\n     ctx.putImageData(imgData, 0, 0);\n     return;\n   }\n@@ -6454,24 +13126,20 @@\n     ctx.setLineDash([]);\n     ctx.lineDashOffset = 0;\n   }\n-  if (!isNodeJS) {\n-    const {\n-      filter\n-    } = ctx;\n-    if (filter !== \"none\" && filter !== \"\") {\n-      ctx.filter = \"none\";\n-    }\n+  const {\n+    filter\n+  } = ctx;\n+  if (filter !== \"none\" && filter !== \"\") {\n+    ctx.filter = \"none\";\n   }\n }\n function getImageSmoothingEnabled(transform, interpolate) {\n   if (interpolate) {\n     return true;\n   }\n-  const scale = Util.singularValueDecompose2dScale(transform);\n-  scale[0] = Math.fround(scale[0]);\n-  scale[1] = Math.fround(scale[1]);\n-  const actualScale = Math.fround((globalThis.devicePixelRatio || 1) * PixelsPerInch.PDF_TO_CSS_UNITS);\n-  return scale[0] \u003C= actualScale && scale[1] \u003C= actualScale;\n+  Util.singularValueDecompose2dScale(transform, XY);\n+  const actualScale = Math.fround(OutputScale.pixelRatio * PixelsPerInch.PDF_TO_CSS_UNITS);\n+  return XY[0] \u003C= actualScale && XY[1] \u003C= actualScale;\n }\n const LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\n const LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\n@@ -6494,7 +13162,6 @@\n     this.canvasFactory = canvasFactory;\n     this.filterFactory = filterFactory;\n     this.groupStack = [];\n-    this.processingType3 = null;\n     this.baseTransform = null;\n     this.baseTransformStack = [];\n     this.groupLevel = 0;\n@@ -6601,6 +13268,7 @@\n     while (this.stateStack.length || this.inSMaskMode) {\n       this.restore();\n     }\n+    this.current.activeSMask = null;\n     this.ctx.restore();\n     if (this.transparentCanvas) {\n       this.ctx = this.compositeCtx;\n@@ -6638,8 +13306,8 @@\n     }\n   }\n   _scaleImage(img, inverseTransform) {\n-    const width = img.width;\n-    const height = img.height;\n+    const width = img.width ?? img.displayWidth;\n+    const height = img.height ?? img.displayHeight;\n     let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);\n     let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);\n     let paintWidth = width,\n@@ -6708,7 +13376,9 @@\n     }\n     let maskToCanvas = Util.transform(currentTransform, [1 \u002F width, 0, 0, -1 \u002F height, 0, 0]);\n     maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n-    const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox([0, 0, width, height], maskToCanvas);\n+    const minMax = MIN_MAX_INIT.slice();\n+    Util.axialAlignedBoundingBox([0, 0, width, height], maskToCanvas, minMax);\n+    const [minX, minY, maxX, maxY] = minMax;\n     const drawnWidth = Math.round(maxX - minX) || 1;\n     const drawnHeight = Math.round(maxY - minY) || 1;\n     const fillCanvas = this.cachedCanvases.getCanvas(\"fillCanvas\", drawnWidth, drawnHeight);\n@@ -6796,8 +13466,7 @@\n           this.current.strokeAlpha = value;\n           break;\n         case \"ca\":\n-          this.current.fillAlpha = value;\n-          this.ctx.globalAlpha = value;\n+          this.ctx.globalAlpha = this.current.fillAlpha = value;\n           break;\n         case \"BM\":\n           this.ctx.globalCompositeOperation = value;\n@@ -6833,12 +13502,11 @@\n     const cacheId = \"smaskGroupAt\" + this.groupLevel;\n     const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight);\n     this.suspendedCtx = this.ctx;\n-    this.ctx = scratchCanvas.context;\n-    const ctx = this.ctx;\n-    ctx.setTransform(...getCurrentTransform(this.suspendedCtx));\n+    const ctx = this.ctx = scratchCanvas.context;\n+    ctx.setTransform(this.suspendedCtx.getTransform());\n     copyCtxState(this.suspendedCtx, ctx);\n     mirrorContextOperations(ctx, this.suspendedCtx);\n-    this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n+    this.setGState([[\"BM\", \"source-over\"]]);\n   }\n   endSMaskMode() {\n     if (!this.inSMaskMode) {\n@@ -6894,15 +13562,13 @@\n         const canvas = this.cachedCanvases.getCanvas(\"maskExtension\", width, height);\n         const ctx = canvas.context;\n         ctx.drawImage(maskCanvas, -maskX, -maskY);\n-        if (backdrop.some(c => c !== 0)) {\n-          ctx.globalCompositeOperation = \"destination-atop\";\n-          ctx.fillStyle = Util.makeHexColor(...backdrop);\n-          ctx.fillRect(0, 0, width, height);\n-          ctx.globalCompositeOperation = \"source-over\";\n-        }\n+        ctx.globalCompositeOperation = \"destination-atop\";\n+        ctx.fillStyle = backdrop;\n+        ctx.fillRect(0, 0, width, height);\n+        ctx.globalCompositeOperation = \"source-over\";\n         maskCanvas = canvas.canvas;\n         maskX = maskY = 0;\n-      } else if (backdrop.some(c => c !== 0)) {\n+      } else {\n         maskCtx.save();\n         maskCtx.globalAlpha = 1;\n         maskCtx.setTransform(1, 0, 0, 1, 0, 0);\n@@ -6910,7 +13576,7 @@\n         clip.rect(maskX, maskY, width, height);\n         maskCtx.clip(clip);\n         maskCtx.globalCompositeOperation = \"destination-atop\";\n-        maskCtx.fillStyle = Util.makeHexColor(...backdrop);\n+        maskCtx.fillStyle = backdrop;\n         maskCtx.fillRect(maskX, maskY, width, height);\n         maskCtx.restore();\n       }\n@@ -6933,197 +13599,155 @@\n   save() {\n     if (this.inSMaskMode) {\n       copyCtxState(this.ctx, this.suspendedCtx);\n-      this.suspendedCtx.save();\n-    } else {\n-      this.ctx.save();\n     }\n+    this.ctx.save();\n     const old = this.current;\n     this.stateStack.push(old);\n     this.current = old.clone();\n   }\n   restore() {\n-    if (this.stateStack.length === 0 && this.inSMaskMode) {\n-      this.endSMaskMode();\n-    }\n-    if (this.stateStack.length !== 0) {\n-      this.current = this.stateStack.pop();\n+    if (this.stateStack.length === 0) {\n       if (this.inSMaskMode) {\n-        this.suspendedCtx.restore();\n-        copyCtxState(this.suspendedCtx, this.ctx);\n-      } else {\n-        this.ctx.restore();\n+        this.endSMaskMode();\n       }\n-      this.checkSMaskState();\n-      this.pendingClip = null;\n-      this._cachedScaleForStroking[0] = -1;\n-      this._cachedGetSinglePixelWidth = null;\n+      return;\n     }\n+    this.current = this.stateStack.pop();\n+    this.ctx.restore();\n+    if (this.inSMaskMode) {\n+      copyCtxState(this.suspendedCtx, this.ctx);\n+    }\n+    this.checkSMaskState();\n+    this.pendingClip = null;\n+    this._cachedScaleForStroking[0] = -1;\n+    this._cachedGetSinglePixelWidth = null;\n   }\n   transform(a, b, c, d, e, f) {\n     this.ctx.transform(a, b, c, d, e, f);\n     this._cachedScaleForStroking[0] = -1;\n     this._cachedGetSinglePixelWidth = null;\n   }\n-  constructPath(ops, args, minMax) {\n-    const ctx = this.ctx;\n-    const current = this.current;\n-    let x = current.x,\n-      y = current.y;\n-    let startX, startY;\n-    const currentTransform = getCurrentTransform(ctx);\n-    const isScalingMatrix = currentTransform[0] === 0 && currentTransform[3] === 0 || currentTransform[1] === 0 && currentTransform[2] === 0;\n-    const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null;\n-    for (let i = 0, j = 0, ii = ops.length; i \u003C ii; i++) {\n-      switch (ops[i] | 0) {\n-        case OPS.rectangle:\n-          x = args[j++];\n-          y = args[j++];\n-          const width = args[j++];\n-          const height = args[j++];\n-          const xw = x + width;\n-          const yh = y + height;\n-          ctx.moveTo(x, y);\n-          if (width === 0 || height === 0) {\n-            ctx.lineTo(xw, yh);\n-          } else {\n-            ctx.lineTo(xw, y);\n-            ctx.lineTo(xw, yh);\n-            ctx.lineTo(x, yh);\n-          }\n-          if (!isScalingMatrix) {\n-            current.updateRectMinMax(currentTransform, [x, y, xw, yh]);\n-          }\n-          ctx.closePath();\n-          break;\n-        case OPS.moveTo:\n-          x = args[j++];\n-          y = args[j++];\n-          ctx.moveTo(x, y);\n-          if (!isScalingMatrix) {\n-            current.updatePathMinMax(currentTransform, x, y);\n-          }\n-          break;\n-        case OPS.lineTo:\n-          x = args[j++];\n-          y = args[j++];\n-          ctx.lineTo(x, y);\n-          if (!isScalingMatrix) {\n-            current.updatePathMinMax(currentTransform, x, y);\n-          }\n-          break;\n-        case OPS.curveTo:\n-          startX = x;\n-          startY = y;\n-          x = args[j + 4];\n-          y = args[j + 5];\n-          ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);\n-          current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y, minMaxForBezier);\n-          j += 6;\n-          break;\n-        case OPS.curveTo2:\n-          startX = x;\n-          startY = y;\n-          ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);\n-          current.updateCurvePathMinMax(currentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3], minMaxForBezier);\n-          x = args[j + 2];\n-          y = args[j + 3];\n-          j += 4;\n-          break;\n-        case OPS.curveTo3:\n-          startX = x;\n-          startY = y;\n-          x = args[j + 2];\n-          y = args[j + 3];\n-          ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n-          current.updateCurvePathMinMax(currentTransform, startX, startY, args[j], args[j + 1], x, y, x, y, minMaxForBezier);\n-          j += 4;\n-          break;\n-        case OPS.closePath:\n-          ctx.closePath();\n-          break;\n-      }\n+  constructPath(op, data, minMax) {\n+    let [path] = data;\n+    if (!minMax) {\n+      path ||= data[0] = new Path2D();\n+      this[op](path);\n+      return;\n     }\n-    if (isScalingMatrix) {\n-      current.updateScalingPathMinMax(currentTransform, minMaxForBezier);\n+    if (!(path instanceof Path2D)) {\n+      const path2d = data[0] = new Path2D();\n+      for (let i = 0, ii = path.length; i \u003C ii;) {\n+        switch (path[i++]) {\n+          case DrawOPS.moveTo:\n+            path2d.moveTo(path[i++], path[i++]);\n+            break;\n+          case DrawOPS.lineTo:\n+            path2d.lineTo(path[i++], path[i++]);\n+            break;\n+          case DrawOPS.curveTo:\n+            path2d.bezierCurveTo(path[i++], path[i++], path[i++], path[i++], path[i++], path[i++]);\n+            break;\n+          case DrawOPS.closePath:\n+            path2d.closePath();\n+            break;\n+          default:\n+            warn(`Unrecognized drawing path operator: ${path[i - 1]}`);\n+            break;\n+        }\n+      }\n+      path = path2d;\n     }\n-    current.setCurrentPoint(x, y);\n+    Util.axialAlignedBoundingBox(minMax, getCurrentTransform(this.ctx), this.current.minMax);\n+    this[op](path);\n   }\n   closePath() {\n     this.ctx.closePath();\n   }\n-  stroke(consumePath = true) {\n+  stroke(path, consumePath = true) {\n     const ctx = this.ctx;\n     const strokeColor = this.current.strokeColor;\n     ctx.globalAlpha = this.current.strokeAlpha;\n     if (this.contentVisible) {\n       if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n+        const baseTransform = strokeColor.isModifyingCurrentTransform() ? ctx.getTransform() : null;\n         ctx.save();\n         ctx.strokeStyle = strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE);\n-        this.rescaleAndStroke(false);\n+        if (baseTransform) {\n+          const newPath = new Path2D();\n+          newPath.addPath(path, ctx.getTransform().invertSelf().multiplySelf(baseTransform));\n+          path = newPath;\n+        }\n+        this.rescaleAndStroke(path, false);\n         ctx.restore();\n       } else {\n-        this.rescaleAndStroke(true);\n+        this.rescaleAndStroke(path, true);\n       }\n     }\n     if (consumePath) {\n-      this.consumePath(this.current.getClippedPathBoundingBox());\n+      this.consumePath(path, this.current.getClippedPathBoundingBox(PathType.STROKE, getCurrentTransform(this.ctx)));\n     }\n     ctx.globalAlpha = this.current.fillAlpha;\n   }\n-  closeStroke() {\n-    this.closePath();\n-    this.stroke();\n+  closeStroke(path) {\n+    this.stroke(path);\n   }\n-  fill(consumePath = true) {\n+  fill(path, consumePath = true) {\n     const ctx = this.ctx;\n     const fillColor = this.current.fillColor;\n     const isPatternFill = this.current.patternFill;\n     let needRestore = false;\n     if (isPatternFill) {\n+      const baseTransform = fillColor.isModifyingCurrentTransform() ? ctx.getTransform() : null;\n       ctx.save();\n       ctx.fillStyle = fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL);\n+      if (baseTransform) {\n+        const newPath = new Path2D();\n+        newPath.addPath(path, ctx.getTransform().invertSelf().multiplySelf(baseTransform));\n+        path = newPath;\n+      }\n       needRestore = true;\n     }\n     const intersect = this.current.getClippedPathBoundingBox();\n     if (this.contentVisible && intersect !== null) {\n       if (this.pendingEOFill) {\n-        ctx.fill(\"evenodd\");\n+        ctx.fill(path, \"evenodd\");\n         this.pendingEOFill = false;\n       } else {\n-        ctx.fill();\n+        ctx.fill(path);\n       }\n     }\n     if (needRestore) {\n       ctx.restore();\n     }\n     if (consumePath) {\n-      this.consumePath(intersect);\n+      this.consumePath(path, intersect);\n     }\n   }\n-  eoFill() {\n+  eoFill(path) {\n     this.pendingEOFill = true;\n-    this.fill();\n+    this.fill(path);\n   }\n-  fillStroke() {\n-    this.fill(false);\n-    this.stroke(false);\n-    this.consumePath();\n+  fillStroke(path) {\n+    this.fill(path, false);\n+    this.stroke(path, false);\n+    this.consumePath(path);\n   }\n-  eoFillStroke() {\n+  eoFillStroke(path) {\n     this.pendingEOFill = true;\n-    this.fillStroke();\n+    this.fillStroke(path);\n   }\n-  closeFillStroke() {\n-    this.closePath();\n-    this.fillStroke();\n+  closeFillStroke(path) {\n+    this.fillStroke(path);\n   }\n-  closeEOFillStroke() {\n+  closeEOFillStroke(path) {\n     this.pendingEOFill = true;\n-    this.closePath();\n-    this.fillStroke();\n+    this.fillStroke(path);\n+  }\n+  endPath(path) {\n+    this.consumePath(path);\n   }\n-  endPath() {\n-    this.consumePath();\n+  rawFillPath(path) {\n+    this.ctx.fill(path);\n   }\n   clip() {\n     this.pendingClip = NORMAL_CLIP;\n@@ -7132,7 +13756,7 @@\n     this.pendingClip = EO_CLIP;\n   }\n   beginText() {\n-    this.current.textMatrix = IDENTITY_MATRIX;\n+    this.current.textMatrix = null;\n     this.current.textMatrixScale = 1;\n     this.current.x = this.current.lineX = 0;\n     this.current.y = this.current.lineY = 0;\n@@ -7141,19 +13765,20 @@\n     const paths = this.pendingTextPaths;\n     const ctx = this.ctx;\n     if (paths === undefined) {\n-      ctx.beginPath();\n       return;\n     }\n-    ctx.save();\n-    ctx.beginPath();\n-    for (const path of paths) {\n-      ctx.setTransform(...path.transform);\n-      ctx.translate(path.x, path.y);\n-      path.addToPath(ctx, path.fontSize);\n+    const newPath = new Path2D();\n+    const invTransf = ctx.getTransform().invertSelf();\n+    for (const {\n+      transform,\n+      x,\n+      y,\n+      fontSize,\n+      path\n+    } of paths) {\n+      newPath.addPath(path, new DOMMatrix(transform).preMultiplySelf(invTransf).translate(x, y).scale(fontSize, -fontSize));\n     }\n-    ctx.restore();\n-    ctx.clip();\n-    ctx.beginPath();\n+    ctx.clip(newPath);\n     delete this.pendingTextPaths;\n   }\n   setCharSpacing(spacing) {\n@@ -7221,16 +13846,24 @@\n     this.setLeading(-y);\n     this.moveText(x, y);\n   }\n-  setTextMatrix(a, b, c, d, e, f) {\n-    this.current.textMatrix = [a, b, c, d, e, f];\n-    this.current.textMatrixScale = Math.hypot(a, b);\n-    this.current.x = this.current.lineX = 0;\n-    this.current.y = this.current.lineY = 0;\n+  setTextMatrix(matrix) {\n+    const {\n+      current\n+    } = this;\n+    current.textMatrix = matrix;\n+    current.textMatrixScale = Math.hypot(matrix[0], matrix[1]);\n+    current.x = current.lineX = 0;\n+    current.y = current.lineY = 0;\n   }\n   nextLine() {\n     this.moveText(0, this.current.leading);\n   }\n-  paintChar(character, x, y, patternTransform) {\n+  #getScaledPath(path, currentTransform, transform) {\n+    const newPath = new Path2D();\n+    newPath.addPath(path, new DOMMatrix(transform).invertSelf().multiplySelf(currentTransform));\n+    return newPath;\n+  }\n+  paintChar(character, x, y, patternFillTransform, patternStrokeTransform) {\n     const ctx = this.ctx;\n     const current = this.current;\n     const font = current.font;\n@@ -7239,23 +13872,44 @@\n     const fillStrokeMode = textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n     const isAddToPathSet = !!(textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG);\n     const patternFill = current.patternFill && !font.missingFile;\n-    let addToPath;\n-    if (font.disableFontFace || isAddToPathSet || patternFill) {\n-      addToPath = font.getPathGenerator(this.commonObjs, character);\n+    const patternStroke = current.patternStroke && !font.missingFile;\n+    let path;\n+    if (font.disableFontFace || isAddToPathSet || patternFill || patternStroke) {\n+      path = font.getPathGenerator(this.commonObjs, character);\n     }\n-    if (font.disableFontFace || patternFill) {\n+    if (font.disableFontFace || patternFill || patternStroke) {\n       ctx.save();\n       ctx.translate(x, y);\n-      ctx.beginPath();\n-      addToPath(ctx, fontSize);\n-      if (patternTransform) {\n-        ctx.setTransform(...patternTransform);\n-      }\n+      ctx.scale(fontSize, -fontSize);\n+      let currentTransform;\n       if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n-        ctx.fill();\n+        if (patternFillTransform) {\n+          currentTransform = ctx.getTransform();\n+          ctx.setTransform(...patternFillTransform);\n+          ctx.fill(this.#getScaledPath(path, currentTransform, patternFillTransform));\n+        } else {\n+          ctx.fill(path);\n+        }\n       }\n       if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n-        ctx.stroke();\n+        if (patternStrokeTransform) {\n+          currentTransform ||= ctx.getTransform();\n+          ctx.setTransform(...patternStrokeTransform);\n+          const {\n+            a,\n+            b,\n+            c,\n+            d\n+          } = currentTransform;\n+          const invPatternTransform = Util.inverseTransform(patternStrokeTransform);\n+          const transf = Util.transform([a, b, c, d, 0, 0], invPatternTransform);\n+          Util.singularValueDecompose2dScale(transf, XY);\n+          ctx.lineWidth *= Math.max(XY[0], XY[1]) \u002F fontSize;\n+          ctx.stroke(this.#getScaledPath(path, currentTransform, patternStrokeTransform));\n+        } else {\n+          ctx.lineWidth \u002F= fontSize;\n+          ctx.stroke(path);\n+        }\n       }\n       ctx.restore();\n     } else {\n@@ -7273,7 +13927,7 @@\n         x,\n         y,\n         fontSize,\n-        addToPath\n+        path\n       });\n     }\n   }\n@@ -7316,21 +13970,30 @@\n     const widthAdvanceScale = fontSize * current.fontMatrix[0];\n     const simpleFillText = current.textRenderingMode === TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n     ctx.save();\n-    ctx.transform(...current.textMatrix);\n+    if (current.textMatrix) {\n+      ctx.transform(...current.textMatrix);\n+    }\n     ctx.translate(current.x, current.y + current.textRise);\n     if (fontDirection > 0) {\n       ctx.scale(textHScale, -1);\n     } else {\n       ctx.scale(textHScale, 1);\n     }\n-    let patternTransform;\n+    let patternFillTransform, patternStrokeTransform;\n     if (current.patternFill) {\n       ctx.save();\n       const pattern = current.fillColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.FILL);\n-      patternTransform = getCurrentTransform(ctx);\n+      patternFillTransform = getCurrentTransform(ctx);\n       ctx.restore();\n       ctx.fillStyle = pattern;\n     }\n+    if (current.patternStroke) {\n+      ctx.save();\n+      const pattern = current.strokeColor.getPattern(ctx, this, getCurrentTransformInverse(ctx), PathType.STROKE);\n+      patternStrokeTransform = getCurrentTransform(ctx);\n+      ctx.restore();\n+      ctx.strokeStyle = pattern;\n+    }\n     let lineWidth = current.lineWidth;\n     const scale = current.textMatrixScale;\n     if (scale === 0 || lineWidth === 0) {\n@@ -7400,11 +14063,11 @@\n         if (simpleFillText && !accent) {\n           ctx.fillText(character, scaledX, scaledY);\n         } else {\n-          this.paintChar(character, scaledX, scaledY, patternTransform);\n+          this.paintChar(character, scaledX, scaledY, patternFillTransform, patternStrokeTransform);\n           if (accent) {\n             const scaledAccentX = scaledX + fontSize * accent.offset.x \u002F fontSizeScale;\n             const scaledAccentY = scaledY - fontSize * accent.offset.y \u002F fontSizeScale;\n-            this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform);\n+            this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternFillTransform, patternStrokeTransform);\n           }\n         }\n       }\n@@ -7443,8 +14106,10 @@\n     this._cachedScaleForStroking[0] = -1;\n     this._cachedGetSinglePixelWidth = null;\n     ctx.save();\n-    ctx.transform(...current.textMatrix);\n-    ctx.translate(current.x, current.y);\n+    if (current.textMatrix) {\n+      ctx.transform(...current.textMatrix);\n+    }\n+    ctx.translate(current.x, current.y + current.textRise);\n     ctx.scale(textHScale, fontDirection);\n     for (i = 0; i \u003C glyphsLength; ++i) {\n       glyph = glyphs[i];\n@@ -7458,34 +14123,31 @@\n       const operatorList = font.charProcOperatorList[glyph.operatorListId];\n       if (!operatorList) {\n         warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n-        continue;\n-      }\n-      if (this.contentVisible) {\n-        this.processingType3 = glyph;\n+      } else if (this.contentVisible) {\n         this.save();\n         ctx.scale(fontSize, fontSize);\n         ctx.transform(...fontMatrix);\n         this.executeOperatorList(operatorList);\n         this.restore();\n       }\n-      const transformed = Util.applyTransform([glyph.width, 0], fontMatrix);\n-      width = transformed[0] * fontSize + spacing;\n+      const p = [glyph.width, 0];\n+      Util.applyTransform(p, fontMatrix);\n+      width = p[0] * fontSize + spacing;\n       ctx.translate(width, 0);\n       current.x += width * textHScale;\n     }\n     ctx.restore();\n-    this.processingType3 = null;\n   }\n   setCharWidth(xWidth, yWidth) {}\n   setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n-    this.ctx.rect(llx, lly, urx - llx, ury - lly);\n-    this.ctx.clip();\n+    const clip = new Path2D();\n+    clip.rect(llx, lly, urx - llx, ury - lly);\n+    this.ctx.clip(clip);\n     this.endPath();\n   }\n   getColorN_Pattern(IR) {\n     let pattern;\n     if (IR[0] === \"TilingPattern\") {\n-      const color = IR[1];\n       const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\n       const canvasGraphicsFactory = {\n         createCanvasGraphics: ctx => new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory, this.filterFactory, {\n@@ -7493,7 +14155,7 @@\n           markedContentStack: this.markedContentStack\n         })\n       };\n-      pattern = new TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);\n+      pattern = new TilingPattern(IR, this.ctx, canvasGraphicsFactory, baseTransform);\n     } else {\n       pattern = this._getPattern(IR[1], IR[2]);\n     }\n@@ -7501,20 +14163,26 @@\n   }\n   setStrokeColorN() {\n     this.current.strokeColor = this.getColorN_Pattern(arguments);\n+    this.current.patternStroke = true;\n   }\n   setFillColorN() {\n     this.current.fillColor = this.getColorN_Pattern(arguments);\n     this.current.patternFill = true;\n   }\n-  setStrokeRGBColor(r, g, b) {\n-    const color = Util.makeHexColor(r, g, b);\n-    this.ctx.strokeStyle = color;\n-    this.current.strokeColor = color;\n-  }\n-  setFillRGBColor(r, g, b) {\n-    const color = Util.makeHexColor(r, g, b);\n-    this.ctx.fillStyle = color;\n-    this.current.fillColor = color;\n+  setStrokeRGBColor(color) {\n+    this.ctx.strokeStyle = this.current.strokeColor = color;\n+    this.current.patternStroke = false;\n+  }\n+  setStrokeTransparent() {\n+    this.ctx.strokeStyle = this.current.strokeColor = \"transparent\";\n+    this.current.patternStroke = false;\n+  }\n+  setFillRGBColor(color) {\n+    this.ctx.fillStyle = this.current.fillColor = color;\n+    this.current.patternFill = false;\n+  }\n+  setFillTransparent() {\n+    this.ctx.fillStyle = this.current.fillColor = \"transparent\";\n     this.current.patternFill = false;\n   }\n   _getPattern(objId, matrix = null) {\n@@ -7544,7 +14212,9 @@\n         width,\n         height\n       } = ctx.canvas;\n-      const [x0, y0, x1, y1] = Util.getAxialAlignedBoundingBox([0, 0, width, height], inv);\n+      const minMax = MIN_MAX_INIT.slice();\n+      Util.axialAlignedBoundingBox([0, 0, width, height], inv, minMax);\n+      const [x0, y0, x1, y1] = minMax;\n       this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n     } else {\n       this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n@@ -7569,11 +14239,11 @@\n     }\n     this.baseTransform = getCurrentTransform(this.ctx);\n     if (bbox) {\n-      const width = bbox[2] - bbox[0];\n-      const height = bbox[3] - bbox[1];\n-      this.ctx.rect(bbox[0], bbox[1], width, height);\n-      this.current.updateRectMinMax(getCurrentTransform(this.ctx), bbox);\n-      this.clip();\n+      Util.axialAlignedBoundingBox(bbox, this.baseTransform, this.current.minMax);\n+      const [x0, y0, x1, y1] = bbox;\n+      const clip = new Path2D();\n+      clip.rect(x0, y0, x1 - x0, y1 - y0);\n+      this.ctx.clip(clip);\n       this.endPath();\n     }\n   }\n@@ -7607,7 +14277,8 @@\n     if (!group.bbox) {\n       throw new Error(\"Bounding box is required.\");\n     }\n-    let bounds = Util.getAxialAlignedBoundingBox(group.bbox, getCurrentTransform(currentCtx));\n+    let bounds = MIN_MAX_INIT.slice();\n+    Util.axialAlignedBoundingBox(group.bbox, getCurrentTransform(currentCtx), bounds);\n     const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n     bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n     const offsetX = Math.floor(bounds[0]);\n@@ -7623,6 +14294,15 @@\n     const groupCtx = scratchCanvas.context;\n     groupCtx.translate(-offsetX, -offsetY);\n     groupCtx.transform(...currentTransform);\n+    let clip = new Path2D();\n+    const [x0, y0, x1, y1] = group.bbox;\n+    clip.rect(x0, y0, x1 - x0, y1 - y0);\n+    if (group.matrix) {\n+      const path = new Path2D();\n+      path.addPath(clip, new DOMMatrix(group.matrix));\n+      clip = path;\n+    }\n+    groupCtx.clip(clip);\n     if (group.smask) {\n       this.smaskStack.push({\n         canvas: scratchCanvas.canvas,\n@@ -7663,7 +14343,8 @@\n       this.restore();\n       this.ctx.save();\n       this.ctx.setTransform(...currentMtx);\n-      const dirtyBox = Util.getAxialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx);\n+      const dirtyBox = MIN_MAX_INIT.slice();\n+      Util.axialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx, dirtyBox);\n       this.ctx.drawImage(groupCtx.canvas, 0, 0);\n       this.ctx.restore();\n       this.compose(dirtyBox);\n@@ -7688,7 +14369,7 @@\n         rect[0] = rect[1] = 0;\n         rect[2] = width;\n         rect[3] = height;\n-        const [scaleX, scaleY] = Util.singularValueDecompose2dScale(getCurrentTransform(this.ctx));\n+        Util.singularValueDecompose2dScale(getCurrentTransform(this.ctx), XY);\n         const {\n           viewportScale\n         } = this;\n@@ -7703,13 +14384,14 @@\n         this.annotationCanvas.savedCtx = this.ctx;\n         this.ctx = context;\n         this.ctx.save();\n-        this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);\n+        this.ctx.setTransform(XY[0], 0, 0, -XY[1], 0, height * XY[1]);\n         resetCtxToDefault(this.ctx);\n       } else {\n         resetCtxToDefault(this.ctx);\n-        this.ctx.rect(rect[0], rect[1], width, height);\n-        this.ctx.clip();\n         this.endPath();\n+        const clip = new Path2D();\n+        clip.rect(rect[0], rect[1], width, height);\n+        this.ctx.clip(clip);\n       }\n     }\n     this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n@@ -7733,16 +14415,6 @@\n     img = this.getObject(img.data, img);\n     img.count = count;\n     const ctx = this.ctx;\n-    const glyph = this.processingType3;\n-    if (glyph) {\n-      if (glyph.compiled === undefined) {\n-        glyph.compiled = compileType3Glyph(img);\n-      }\n-      if (glyph.compiled) {\n-        glyph.compiled(ctx);\n-        return;\n-      }\n-    }\n     const mask = this._createMaskCanvas(img);\n     const maskCanvas = mask.canvas;\n     ctx.save();\n@@ -7764,8 +14436,7 @@\n     ctx.setTransform(1, 0, 0, 1, mask.offsetX - currentTransform[4], mask.offsetY - currentTransform[5]);\n     for (let i = 0, ii = positions.length; i \u003C ii; i += 2) {\n       const trans = Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]);\n-      const [x, y] = Util.applyTransform([0, 0], trans);\n-      ctx.drawImage(mask.canvas, x, y);\n+      ctx.drawImage(mask.canvas, trans[4], trans[5]);\n     }\n     ctx.restore();\n     this.compose();\n@@ -7867,13 +14538,11 @@\n     const height = imgData.height;\n     const ctx = this.ctx;\n     this.save();\n-    if (!isNodeJS) {\n-      const {\n-        filter\n-      } = ctx;\n-      if (filter !== \"none\" && filter !== \"\") {\n-        ctx.filter = \"none\";\n-      }\n+    const {\n+      filter\n+    } = ctx;\n+    if (filter !== \"none\" && filter !== \"\") {\n+      ctx.filter = \"none\";\n     }\n     ctx.scale(1 \u002F width, -1 \u002F height);\n     let imgToPaint;\n@@ -7950,7 +14619,7 @@\n   }\n   beginCompat() {}\n   endCompat() {}\n-  consumePath(clipBox) {\n+  consumePath(path, clipBox) {\n     const isEmpty = this.current.isEmptyClip();\n     if (this.pendingClip) {\n       this.current.updateClipFromPath();\n@@ -7962,15 +14631,14 @@\n     if (this.pendingClip) {\n       if (!isEmpty) {\n         if (this.pendingClip === EO_CLIP) {\n-          ctx.clip(\"evenodd\");\n+          ctx.clip(path, \"evenodd\");\n         } else {\n-          ctx.clip();\n+          ctx.clip(path);\n         }\n       }\n       this.pendingClip = null;\n     }\n     this.current.startNewPathAndClipBox(this.current.clipBox);\n-    ctx.beginPath();\n   }\n   getSinglePixelWidth() {\n     if (!this._cachedGetSinglePixelWidth) {\n@@ -8035,17 +14703,17 @@\n     }\n     return this._cachedScaleForStroking;\n   }\n-  rescaleAndStroke(saveRestore) {\n+  rescaleAndStroke(path, saveRestore) {\n     const {\n-      ctx\n+      ctx,\n+      current: {\n+        lineWidth\n+      }\n     } = this;\n-    const {\n-      lineWidth\n-    } = this.current;\n     const [scaleX, scaleY] = this.getScaleForStroking();\n-    ctx.lineWidth = lineWidth || 1;\n-    if (scaleX === 1 && scaleY === 1) {\n-      ctx.stroke();\n+    if (scaleX === scaleY) {\n+      ctx.lineWidth = (lineWidth || 1) * scaleX;\n+      ctx.stroke(path);\n       return;\n     }\n     const dashes = ctx.getLineDash();\n@@ -8053,12 +14721,17 @@\n       ctx.save();\n     }\n     ctx.scale(scaleX, scaleY);\n+    SCALE_MATRIX.a = 1 \u002F scaleX;\n+    SCALE_MATRIX.d = 1 \u002F scaleY;\n+    const newPath = new Path2D();\n+    newPath.addPath(path, SCALE_MATRIX);\n     if (dashes.length > 0) {\n       const scale = Math.max(scaleX, scaleY);\n       ctx.setLineDash(dashes.map(x => x \u002F scale));\n       ctx.lineDashOffset \u002F= scale;\n     }\n-    ctx.stroke();\n+    ctx.lineWidth = lineWidth || 1;\n+    ctx.stroke(newPath);\n     if (saveRestore) {\n       ctx.restore();\n     }\n@@ -8078,7 +14751,7 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Fworker_options.js\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Fworker_options.js\n class GlobalWorkerOptions {\n   static #port = null;\n   static #src = \"\";\n@@ -8102,436 +14775,29 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fshared\u002Fmessage_handler.js\n-\n-const CallbackKind = {\n-  UNKNOWN: 0,\n-  DATA: 1,\n-  ERROR: 2\n-};\n-const StreamKind = {\n-  UNKNOWN: 0,\n-  CANCEL: 1,\n-  CANCEL_COMPLETE: 2,\n-  CLOSE: 3,\n-  ENQUEUE: 4,\n-  ERROR: 5,\n-  PULL: 6,\n-  PULL_COMPLETE: 7,\n-  START_COMPLETE: 8\n-};\n-function wrapReason(reason) {\n-  if (!(reason instanceof Error || typeof reason === \"object\" && reason !== null)) {\n-    unreachable('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n-  }\n-  switch (reason.name) {\n-    case \"AbortException\":\n-      return new AbortException(reason.message);\n-    case \"MissingPDFException\":\n-      return new MissingPDFException(reason.message);\n-    case \"PasswordException\":\n-      return new PasswordException(reason.message, reason.code);\n-    case \"UnexpectedResponseException\":\n-      return new UnexpectedResponseException(reason.message, reason.status);\n-    case \"UnknownErrorException\":\n-      return new UnknownErrorException(reason.message, reason.details);\n-    default:\n-      return new UnknownErrorException(reason.message, reason.toString());\n-  }\n-}\n-class MessageHandler {\n-  constructor(sourceName, targetName, comObj) {\n-    this.sourceName = sourceName;\n-    this.targetName = targetName;\n-    this.comObj = comObj;\n-    this.callbackId = 1;\n-    this.streamId = 1;\n-    this.streamSinks = Object.create(null);\n-    this.streamControllers = Object.create(null);\n-    this.callbackCapabilities = Object.create(null);\n-    this.actionHandler = Object.create(null);\n-    this._onComObjOnMessage = event => {\n-      const data = event.data;\n-      if (data.targetName !== this.sourceName) {\n-        return;\n-      }\n-      if (data.stream) {\n-        this.#processStreamMessage(data);\n-        return;\n-      }\n-      if (data.callback) {\n-        const callbackId = data.callbackId;\n-        const capability = this.callbackCapabilities[callbackId];\n-        if (!capability) {\n-          throw new Error(`Cannot resolve callback ${callbackId}`);\n-        }\n-        delete this.callbackCapabilities[callbackId];\n-        if (data.callback === CallbackKind.DATA) {\n-          capability.resolve(data.data);\n-        } else if (data.callback === CallbackKind.ERROR) {\n-          capability.reject(wrapReason(data.reason));\n-        } else {\n-          throw new Error(\"Unexpected callback case\");\n-        }\n-        return;\n-      }\n-      const action = this.actionHandler[data.action];\n-      if (!action) {\n-        throw new Error(`Unknown action from worker: ${data.action}`);\n-      }\n-      if (data.callbackId) {\n-        const cbSourceName = this.sourceName;\n-        const cbTargetName = data.sourceName;\n-        new Promise(function (resolve) {\n-          resolve(action(data.data));\n-        }).then(function (result) {\n-          comObj.postMessage({\n-            sourceName: cbSourceName,\n-            targetName: cbTargetName,\n-            callback: CallbackKind.DATA,\n-            callbackId: data.callbackId,\n-            data: result\n-          });\n-        }, function (reason) {\n-          comObj.postMessage({\n-            sourceName: cbSourceName,\n-            targetName: cbTargetName,\n-            callback: CallbackKind.ERROR,\n-            callbackId: data.callbackId,\n-            reason: wrapReason(reason)\n-          });\n-        });\n-        return;\n-      }\n-      if (data.streamId) {\n-        this.#createStreamSink(data);\n-        return;\n-      }\n-      action(data.data);\n-    };\n-    comObj.addEventListener(\"message\", this._onComObjOnMessage);\n-  }\n-  on(actionName, handler) {\n-    const ah = this.actionHandler;\n-    if (ah[actionName]) {\n-      throw new Error(`There is already an actionName called \"${actionName}\"`);\n-    }\n-    ah[actionName] = handler;\n-  }\n-  send(actionName, data, transfers) {\n-    this.comObj.postMessage({\n-      sourceName: this.sourceName,\n-      targetName: this.targetName,\n-      action: actionName,\n-      data\n-    }, transfers);\n-  }\n-  sendWithPromise(actionName, data, transfers) {\n-    const callbackId = this.callbackId++;\n-    const capability = Promise.withResolvers();\n-    this.callbackCapabilities[callbackId] = capability;\n-    try {\n-      this.comObj.postMessage({\n-        sourceName: this.sourceName,\n-        targetName: this.targetName,\n-        action: actionName,\n-        callbackId,\n-        data\n-      }, transfers);\n-    } catch (ex) {\n-      capability.reject(ex);\n-    }\n-    return capability.promise;\n-  }\n-  sendWithStream(actionName, data, queueingStrategy, transfers) {\n-    const streamId = this.streamId++,\n-      sourceName = this.sourceName,\n-      targetName = this.targetName,\n-      comObj = this.comObj;\n-    return new ReadableStream({\n-      start: controller => {\n-        const startCapability = Promise.withResolvers();\n-        this.streamControllers[streamId] = {\n-          controller,\n-          startCall: startCapability,\n-          pullCall: null,\n-          cancelCall: null,\n-          isClosed: false\n-        };\n-        comObj.postMessage({\n-          sourceName,\n-          targetName,\n-          action: actionName,\n-          streamId,\n-          data,\n-          desiredSize: controller.desiredSize\n-        }, transfers);\n-        return startCapability.promise;\n-      },\n-      pull: controller => {\n-        const pullCapability = Promise.withResolvers();\n-        this.streamControllers[streamId].pullCall = pullCapability;\n-        comObj.postMessage({\n-          sourceName,\n-          targetName,\n-          stream: StreamKind.PULL,\n-          streamId,\n-          desiredSize: controller.desiredSize\n-        });\n-        return pullCapability.promise;\n-      },\n-      cancel: reason => {\n-        assert(reason instanceof Error, \"cancel must have a valid reason\");\n-        const cancelCapability = Promise.withResolvers();\n-        this.streamControllers[streamId].cancelCall = cancelCapability;\n-        this.streamControllers[streamId].isClosed = true;\n-        comObj.postMessage({\n-          sourceName,\n-          targetName,\n-          stream: StreamKind.CANCEL,\n-          streamId,\n-          reason: wrapReason(reason)\n-        });\n-        return cancelCapability.promise;\n-      }\n-    }, queueingStrategy);\n-  }\n-  #createStreamSink(data) {\n-    const streamId = data.streamId,\n-      sourceName = this.sourceName,\n-      targetName = data.sourceName,\n-      comObj = this.comObj;\n-    const self = this,\n-      action = this.actionHandler[data.action];\n-    const streamSink = {\n-      enqueue(chunk, size = 1, transfers) {\n-        if (this.isCancelled) {\n-          return;\n-        }\n-        const lastDesiredSize = this.desiredSize;\n-        this.desiredSize -= size;\n-        if (lastDesiredSize > 0 && this.desiredSize \u003C= 0) {\n-          this.sinkCapability = Promise.withResolvers();\n-          this.ready = this.sinkCapability.promise;\n-        }\n-        comObj.postMessage({\n-          sourceName,\n-          targetName,\n-          stream: StreamKind.ENQUEUE,\n-          streamId,\n-          chunk\n-        }, transfers);\n-      },\n-      close() {\n-        if (this.isCancelled) {\n-          return;\n-        }\n-        this.isCancelled = true;\n-        comObj.postMessage({\n-          sourceName,\n-          targetName,\n-          stream: StreamKind.CLOSE,\n-          streamId\n-        });\n-        delete self.streamSinks[streamId];\n-      },\n-      error(reason) {\n-        assert(reason instanceof Error, \"error must have a valid reason\");\n-        if (this.isCancelled) {\n-          return;\n-        }\n-        this.isCancelled = true;\n-        comObj.postMessage({\n-          sourceName,\n-          targetName,\n-          stream: StreamKind.ERROR,\n-          streamId,\n-          reason: wrapReason(reason)\n-        });\n-      },\n-      sinkCapability: Promise.withResolvers(),\n-      onPull: null,\n-      onCancel: null,\n-      isCancelled: false,\n-      desiredSize: data.desiredSize,\n-      ready: null\n-    };\n-    streamSink.sinkCapability.resolve();\n-    streamSink.ready = streamSink.sinkCapability.promise;\n-    this.streamSinks[streamId] = streamSink;\n-    new Promise(function (resolve) {\n-      resolve(action(data.data, streamSink));\n-    }).then(function () {\n-      comObj.postMessage({\n-        sourceName,\n-        targetName,\n-        stream: StreamKind.START_COMPLETE,\n-        streamId,\n-        success: true\n-      });\n-    }, function (reason) {\n-      comObj.postMessage({\n-        sourceName,\n-        targetName,\n-        stream: StreamKind.START_COMPLETE,\n-        streamId,\n-        reason: wrapReason(reason)\n-      });\n-    });\n-  }\n-  #processStreamMessage(data) {\n-    const streamId = data.streamId,\n-      sourceName = this.sourceName,\n-      targetName = data.sourceName,\n-      comObj = this.comObj;\n-    const streamController = this.streamControllers[streamId],\n-      streamSink = this.streamSinks[streamId];\n-    switch (data.stream) {\n-      case StreamKind.START_COMPLETE:\n-        if (data.success) {\n-          streamController.startCall.resolve();\n-        } else {\n-          streamController.startCall.reject(wrapReason(data.reason));\n-        }\n-        break;\n-      case StreamKind.PULL_COMPLETE:\n-        if (data.success) {\n-          streamController.pullCall.resolve();\n-        } else {\n-          streamController.pullCall.reject(wrapReason(data.reason));\n-        }\n-        break;\n-      case StreamKind.PULL:\n-        if (!streamSink) {\n-          comObj.postMessage({\n-            sourceName,\n-            targetName,\n-            stream: StreamKind.PULL_COMPLETE,\n-            streamId,\n-            success: true\n-          });\n-          break;\n-        }\n-        if (streamSink.desiredSize \u003C= 0 && data.desiredSize > 0) {\n-          streamSink.sinkCapability.resolve();\n-        }\n-        streamSink.desiredSize = data.desiredSize;\n-        new Promise(function (resolve) {\n-          resolve(streamSink.onPull?.());\n-        }).then(function () {\n-          comObj.postMessage({\n-            sourceName,\n-            targetName,\n-            stream: StreamKind.PULL_COMPLETE,\n-            streamId,\n-            success: true\n-          });\n-        }, function (reason) {\n-          comObj.postMessage({\n-            sourceName,\n-            targetName,\n-            stream: StreamKind.PULL_COMPLETE,\n-            streamId,\n-            reason: wrapReason(reason)\n-          });\n-        });\n-        break;\n-      case StreamKind.ENQUEUE:\n-        assert(streamController, \"enqueue should have stream controller\");\n-        if (streamController.isClosed) {\n-          break;\n-        }\n-        streamController.controller.enqueue(data.chunk);\n-        break;\n-      case StreamKind.CLOSE:\n-        assert(streamController, \"close should have stream controller\");\n-        if (streamController.isClosed) {\n-          break;\n-        }\n-        streamController.isClosed = true;\n-        streamController.controller.close();\n-        this.#deleteStreamController(streamController, streamId);\n-        break;\n-      case StreamKind.ERROR:\n-        assert(streamController, \"error should have stream controller\");\n-        streamController.controller.error(wrapReason(data.reason));\n-        this.#deleteStreamController(streamController, streamId);\n-        break;\n-      case StreamKind.CANCEL_COMPLETE:\n-        if (data.success) {\n-          streamController.cancelCall.resolve();\n-        } else {\n-          streamController.cancelCall.reject(wrapReason(data.reason));\n-        }\n-        this.#deleteStreamController(streamController, streamId);\n-        break;\n-      case StreamKind.CANCEL:\n-        if (!streamSink) {\n-          break;\n-        }\n-        new Promise(function (resolve) {\n-          resolve(streamSink.onCancel?.(wrapReason(data.reason)));\n-        }).then(function () {\n-          comObj.postMessage({\n-            sourceName,\n-            targetName,\n-            stream: StreamKind.CANCEL_COMPLETE,\n-            streamId,\n-            success: true\n-          });\n-        }, function (reason) {\n-          comObj.postMessage({\n-            sourceName,\n-            targetName,\n-            stream: StreamKind.CANCEL_COMPLETE,\n-            streamId,\n-            reason: wrapReason(reason)\n-          });\n-        });\n-        streamSink.sinkCapability.reject(wrapReason(data.reason));\n-        streamSink.isCancelled = true;\n-        delete this.streamSinks[streamId];\n-        break;\n-      default:\n-        throw new Error(\"Unexpected stream case\");\n-    }\n-  }\n-  async #deleteStreamController(streamController, streamId) {\n-    await Promise.allSettled([streamController.startCall?.promise, streamController.pullCall?.promise, streamController.cancelCall?.promise]);\n-    delete this.streamControllers[streamId];\n-  }\n-  destroy() {\n-    this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n-  }\n-}\n-\n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Fmetadata.js\n-\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Fmetadata.js\n class Metadata {\n-  #metadataMap;\n+  #map;\n   #data;\n   constructor({\n     parsedData,\n     rawData\n   }) {\n-    this.#metadataMap = parsedData;\n+    this.#map = parsedData;\n     this.#data = rawData;\n   }\n   getRaw() {\n     return this.#data;\n   }\n   get(name) {\n-    return this.#metadataMap.get(name) ?? null;\n-  }\n-  getAll() {\n-    return objectFromMap(this.#metadataMap);\n+    return this.#map.get(name) ?? null;\n   }\n-  has(name) {\n-    return this.#metadataMap.has(name);\n+  [Symbol.iterator]() {\n+    return this.#map.entries();\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Foptional_content_config.js\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Foptional_content_config.js\n \n \n const INTERNAL = Symbol(\"INTERNAL\");\n@@ -8543,13 +14809,15 @@\n   constructor(renderingIntent, {\n     name,\n     intent,\n-    usage\n+    usage,\n+    rbGroups\n   }) {\n     this.#isDisplay = !!(renderingIntent & RenderingIntentFlag.DISPLAY);\n     this.#isPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n     this.name = name;\n     this.intent = intent;\n     this.usage = usage;\n+    this.rbGroups = rbGroups;\n   }\n   get visible() {\n     if (this.#userSet) {\n@@ -8713,12 +14981,21 @@\n     warn(`Unknown group type ${group.type}.`);\n     return true;\n   }\n-  setVisibility(id, visible = true) {\n+  setVisibility(id, visible = true, preserveRB = true) {\n     const group = this.#groups.get(id);\n     if (!group) {\n       warn(`Optional content group not found: ${id}`);\n       return;\n     }\n+    if (preserveRB && visible && group.rbGroups.length) {\n+      for (const rbGroup of group.rbGroups) {\n+        for (const otherId of rbGroup) {\n+          if (otherId !== id) {\n+            this.#groups.get(otherId)?._setVisible(INTERNAL, false, true);\n+          }\n+        }\n+      }\n+    }\n     group._setVisible(INTERNAL, !!visible, true);\n     this.#cachedGetHash = null;\n   }\n@@ -8741,13 +15018,13 @@\n       }\n       switch (operator) {\n         case \"ON\":\n-          group._setVisible(INTERNAL, true);\n+          this.setVisibility(elem, true, preserveRB);\n           break;\n         case \"OFF\":\n-          group._setVisible(INTERNAL, false);\n+          this.setVisibility(elem, false, preserveRB);\n           break;\n         case \"Toggle\":\n-          group._setVisible(INTERNAL, !group.visible);\n+          this.setVisibility(elem, !group.visible, preserveRB);\n           break;\n       }\n     }\n@@ -8765,9 +15042,6 @@\n     }\n     return [...this.#groups.keys()];\n   }\n-  getGroups() {\n-    return this.#groups.size > 0 ? objectFromMap(this.#groups) : null;\n-  }\n   getGroup(id) {\n     return this.#groups.get(id) || null;\n   }\n@@ -8781,9 +15055,23 @@\n     }\n     return this.#cachedGetHash = hash.hexdigest();\n   }\n+  [Symbol.iterator]() {\n+    return this.#groups.entries();\n+  }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Ftransport_stream.js\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Ftransport_stream.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n class PDFDataTransportStream {\n@@ -9051,7 +15339,9 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Fcontent_disposition.js\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Fcontent_disposition.js\n+\n+\n \n function getFilenameFromContentDispositionHeader(contentDisposition) {\n   let needsEncodingFixup = true;\n@@ -9182,12 +15472,29 @@\n   return \"\";\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Fnetwork_utils.js\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Fnetwork_utils.js\n \n \n \n+\n+function createHeaders(isHttp, httpHeaders) {\n+  const headers = new Headers();\n+  if (!isHttp || !httpHeaders || typeof httpHeaders !== \"object\") {\n+    return headers;\n+  }\n+  for (const key in httpHeaders) {\n+    const val = httpHeaders[key];\n+    if (val !== undefined) {\n+      headers.append(key, val);\n+    }\n+  }\n+  return headers;\n+}\n+function getResponseOrigin(url) {\n+  return URL.parse(url)?.origin ?? null;\n+}\n function validateRangeRequestCapabilities({\n-  getResponseHeader,\n+  responseHeaders,\n   isHttp,\n   rangeChunkSize,\n   disableRange\n@@ -9196,7 +15503,7 @@\n     allowRangeRequests: false,\n     suggestedLength: undefined\n   };\n-  const length = parseInt(getResponseHeader(\"Content-Length\"), 10);\n+  const length = parseInt(responseHeaders.get(\"Content-Length\"), 10);\n   if (!Number.isInteger(length)) {\n     return returnValues;\n   }\n@@ -9207,18 +15514,18 @@\n   if (disableRange || !isHttp) {\n     return returnValues;\n   }\n-  if (getResponseHeader(\"Accept-Ranges\") !== \"bytes\") {\n+  if (responseHeaders.get(\"Accept-Ranges\") !== \"bytes\") {\n     return returnValues;\n   }\n-  const contentEncoding = getResponseHeader(\"Content-Encoding\") || \"identity\";\n+  const contentEncoding = responseHeaders.get(\"Content-Encoding\") || \"identity\";\n   if (contentEncoding !== \"identity\") {\n     return returnValues;\n   }\n   returnValues.allowRangeRequests = true;\n   return returnValues;\n }\n-function extractFilenameFromHeader(getResponseHeader) {\n-  const contentDisposition = getResponseHeader(\"Content-Disposition\");\n+function extractFilenameFromHeader(responseHeaders) {\n+  const contentDisposition = responseHeaders.get(\"Content-Disposition\");\n   if (contentDisposition) {\n     let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n     if (filename.includes(\"%\")) {\n@@ -9232,17 +15539,23 @@\n   }\n   return null;\n }\n-function createResponseStatusError(status, url) {\n-  if (status === 404 || status === 0 && url.startsWith(\"file:\")) {\n-    return new MissingPDFException('Missing PDF \"' + url + '\".');\n-  }\n-  return new UnexpectedResponseException(`Unexpected server response (${status}) while retrieving PDF \"${url}\".`, status);\n+function createResponseError(status, url) {\n+  return new ResponseException(`Unexpected server response (${status}) while retrieving PDF \"${url}\".`, status, status === 404 || status === 0 && url.startsWith(\"file:\"));\n }\n function validateResponseStatus(status) {\n   return status === 200 || status === 206;\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Ffetch_stream.js\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Ffetch_stream.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n function createFetchOptions(headers, withCredentials, abortController) {\n@@ -9255,17 +15568,6 @@\n     redirect: \"follow\"\n   };\n }\n-function createHeaders(httpHeaders) {\n-  const headers = new Headers();\n-  for (const property in httpHeaders) {\n-    const value = httpHeaders[property];\n-    if (value === undefined) {\n-      continue;\n-    }\n-    headers.append(property, value);\n-  }\n-  return headers;\n-}\n function getArrayBuffer(val) {\n   if (val instanceof Uint8Array) {\n     return val.buffer;\n@@ -9277,10 +15579,11 @@\n   return new Uint8Array(val).buffer;\n }\n class PDFFetchStream {\n+  _responseOrigin = null;\n   constructor(source) {\n     this.source = source;\n     this.isHttp = \u002F^https?:\u002Fi.test(source.url);\n-    this.httpHeaders = this.isHttp && source.httpHeaders || {};\n+    this.headers = createHeaders(this.isHttp, source.httpHeaders);\n     this._fullRequestReader = null;\n     this._rangeRequestReaders = [];\n   }\n@@ -9325,27 +15628,28 @@\n     this._abortController = new AbortController();\n     this._isStreamingSupported = !source.disableStream;\n     this._isRangeSupported = !source.disableRange;\n-    this._headers = createHeaders(this._stream.httpHeaders);\n+    const headers = new Headers(stream.headers);\n     const url = source.url;\n-    fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => {\n+    fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n+      stream._responseOrigin = getResponseOrigin(response.url);\n       if (!validateResponseStatus(response.status)) {\n-        throw createResponseStatusError(response.status, url);\n+        throw createResponseError(response.status, url);\n       }\n       this._reader = response.body.getReader();\n       this._headersCapability.resolve();\n-      const getResponseHeader = name => response.headers.get(name);\n+      const responseHeaders = response.headers;\n       const {\n         allowRangeRequests,\n         suggestedLength\n       } = validateRangeRequestCapabilities({\n-        getResponseHeader,\n-        isHttp: this._stream.isHttp,\n+        responseHeaders,\n+        isHttp: stream.isHttp,\n         rangeChunkSize: this._rangeChunkSize,\n         disableRange: this._disableRange\n       });\n       this._isRangeSupported = allowRangeRequests;\n       this._contentLength = suggestedLength || this._contentLength;\n-      this._filename = extractFilenameFromHeader(getResponseHeader);\n+      this._filename = extractFilenameFromHeader(responseHeaders);\n       if (!this._isStreamingSupported && this._isRangeSupported) {\n         this.cancel(new AbortException(\"Streaming is disabled.\"));\n       }\n@@ -9404,12 +15708,16 @@\n     this._readCapability = Promise.withResolvers();\n     this._isStreamingSupported = !source.disableStream;\n     this._abortController = new AbortController();\n-    this._headers = createHeaders(this._stream.httpHeaders);\n-    this._headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n+    const headers = new Headers(stream.headers);\n+    headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n     const url = source.url;\n-    fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => {\n+    fetch(url, createFetchOptions(headers, this._withCredentials, this._abortController)).then(response => {\n+      const responseOrigin = getResponseOrigin(response.url);\n+      if (responseOrigin !== stream._responseOrigin) {\n+        throw new Error(`Expected range response-origin \"${responseOrigin}\" to match \"${stream._responseOrigin}\".`);\n+      }\n       if (!validateResponseStatus(response.status)) {\n-        throw createResponseStatusError(response.status, url);\n+        throw createResponseError(response.status, url);\n       }\n       this._readCapability.resolve();\n       this._reader = response.body.getReader();\n@@ -9446,7 +15754,11 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Fnetwork.js\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Fnetwork.js\n+\n+\n+\n+\n \n \n const OK_RESPONSE = 200;\n@@ -9459,27 +15771,19 @@\n   return stringToBytes(data).buffer;\n }\n class NetworkManager {\n-  constructor(url, args = {}) {\n+  _responseOrigin = null;\n+  constructor({\n+    url,\n+    httpHeaders,\n+    withCredentials\n+  }) {\n     this.url = url;\n     this.isHttp = \u002F^https?:\u002Fi.test(url);\n-    this.httpHeaders = this.isHttp && args.httpHeaders || Object.create(null);\n-    this.withCredentials = args.withCredentials || false;\n+    this.headers = createHeaders(this.isHttp, httpHeaders);\n+    this.withCredentials = withCredentials || false;\n     this.currXhrId = 0;\n     this.pendingRequests = Object.create(null);\n   }\n-  requestRange(begin, end, listeners) {\n-    const args = {\n-      begin,\n-      end\n-    };\n-    for (const prop in listeners) {\n-      args[prop] = listeners[prop];\n-    }\n-    return this.request(args);\n-  }\n-  requestFull(listeners) {\n-    return this.request(listeners);\n-  }\n   request(args) {\n     const xhr = new XMLHttpRequest();\n     const xhrId = this.currXhrId++;\n@@ -9488,12 +15792,8 @@\n     };\n     xhr.open(\"GET\", this.url);\n     xhr.withCredentials = this.withCredentials;\n-    for (const property in this.httpHeaders) {\n-      const value = this.httpHeaders[property];\n-      if (value === undefined) {\n-        continue;\n-      }\n-      xhr.setRequestHeader(property, value);\n+    for (const [key, val] of this.headers) {\n+      xhr.setRequestHeader(key, val);\n     }\n     if (this.isHttp && \"begin\" in args && \"end\" in args) {\n       xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n@@ -9502,11 +15802,10 @@\n       pendingRequest.expectedStatus = OK_RESPONSE;\n     }\n     xhr.responseType = \"arraybuffer\";\n-    if (args.onError) {\n-      xhr.onerror = function (evt) {\n-        args.onError(xhr.status);\n-      };\n-    }\n+    assert(args.onError, \"Expected `onError` callback to be provided.\");\n+    xhr.onerror = () => {\n+      args.onError(xhr.status);\n+    };\n     xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n     xhr.onprogress = this.onProgress.bind(this, xhrId);\n     pendingRequest.onHeadersReceived = args.onHeadersReceived;\n@@ -9541,30 +15840,35 @@\n     }\n     delete this.pendingRequests[xhrId];\n     if (xhr.status === 0 && this.isHttp) {\n-      pendingRequest.onError?.(xhr.status);\n+      pendingRequest.onError(xhr.status);\n       return;\n     }\n     const xhrStatus = xhr.status || OK_RESPONSE;\n     const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n     if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n-      pendingRequest.onError?.(xhr.status);\n+      pendingRequest.onError(xhr.status);\n       return;\n     }\n     const chunk = network_getArrayBuffer(xhr);\n     if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n       const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n       const matches = \u002Fbytes (\\d+)-(\\d+)\\\u002F(\\d+)\u002F.exec(rangeHeader);\n-      pendingRequest.onDone({\n-        begin: parseInt(matches[1], 10),\n-        chunk\n-      });\n+      if (matches) {\n+        pendingRequest.onDone({\n+          begin: parseInt(matches[1], 10),\n+          chunk\n+        });\n+      } else {\n+        warn(`Missing or invalid \"Content-Range\" header.`);\n+        pendingRequest.onError(0);\n+      }\n     } else if (chunk) {\n       pendingRequest.onDone({\n         begin: 0,\n         chunk\n       });\n     } else {\n-      pendingRequest.onError?.(xhr.status);\n+      pendingRequest.onError(xhr.status);\n     }\n   }\n   getRequestXhr(xhrId) {\n@@ -9582,10 +15886,7 @@\n class PDFNetworkStream {\n   constructor(source) {\n     this._source = source;\n-    this._manager = new NetworkManager(source.url, {\n-      httpHeaders: source.httpHeaders,\n-      withCredentials: source.withCredentials\n-    });\n+    this._manager = new NetworkManager(source);\n     this._rangeChunkSize = source.rangeChunkSize;\n     this._fullRequestReader = null;\n     this._rangeRequestReaders = [];\n@@ -9617,15 +15918,14 @@\n class PDFNetworkStreamFullRequestReader {\n   constructor(manager, source) {\n     this._manager = manager;\n-    const args = {\n+    this._url = source.url;\n+    this._fullRequestId = manager.request({\n       onHeadersReceived: this._onHeadersReceived.bind(this),\n       onDone: this._onDone.bind(this),\n       onError: this._onError.bind(this),\n       onProgress: this._onProgress.bind(this)\n-    };\n-    this._url = source.url;\n-    this._fullRequestId = manager.requestFull(args);\n-    this._headersReceivedCapability = Promise.withResolvers();\n+    });\n+    this._headersCapability = Promise.withResolvers();\n     this._disableRange = source.disableRange || false;\n     this._contentLength = source.length;\n     this._rangeChunkSize = source.rangeChunkSize;\n@@ -9644,12 +15944,17 @@\n   _onHeadersReceived() {\n     const fullRequestXhrId = this._fullRequestId;\n     const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n-    const getResponseHeader = name => fullRequestXhr.getResponseHeader(name);\n+    this._manager._responseOrigin = getResponseOrigin(fullRequestXhr.responseURL);\n+    const rawResponseHeaders = fullRequestXhr.getAllResponseHeaders();\n+    const responseHeaders = new Headers(rawResponseHeaders ? rawResponseHeaders.trimStart().replace(\u002F[^\\S ]+$\u002F, \"\").split(\u002F[\\r\\n]+\u002F).map(x => {\n+      const [key, ...val] = x.split(\": \");\n+      return [key, val.join(\": \")];\n+    }) : []);\n     const {\n       allowRangeRequests,\n       suggestedLength\n     } = validateRangeRequestCapabilities({\n-      getResponseHeader,\n+      responseHeaders,\n       isHttp: this._manager.isHttp,\n       rangeChunkSize: this._rangeChunkSize,\n       disableRange: this._disableRange\n@@ -9658,11 +15963,11 @@\n       this._isRangeSupported = true;\n     }\n     this._contentLength = suggestedLength || this._contentLength;\n-    this._filename = extractFilenameFromHeader(getResponseHeader);\n+    this._filename = extractFilenameFromHeader(responseHeaders);\n     if (this._isRangeSupported) {\n       this._manager.abortRequest(fullRequestXhrId);\n     }\n-    this._headersReceivedCapability.resolve();\n+    this._headersCapability.resolve();\n   }\n   _onDone(data) {\n     if (data) {\n@@ -9689,8 +15994,8 @@\n     this._requests.length = 0;\n   }\n   _onError(status) {\n-    this._storedError = createResponseStatusError(status, this._url);\n-    this._headersReceivedCapability.reject(this._storedError);\n+    this._storedError = createResponseError(status, this._url);\n+    this._headersCapability.reject(this._storedError);\n     for (const requestCapability of this._requests) {\n       requestCapability.reject(this._storedError);\n     }\n@@ -9716,9 +16021,10 @@\n     return this._contentLength;\n   }\n   get headersReady() {\n-    return this._headersReceivedCapability.promise;\n+    return this._headersCapability.promise;\n   }\n   async read() {\n+    await this._headersCapability.promise;\n     if (this._storedError) {\n       throw this._storedError;\n     }\n@@ -9741,7 +16047,7 @@\n   }\n   cancel(reason) {\n     this._done = true;\n-    this._headersReceivedCapability.reject(reason);\n+    this._headersCapability.reject(reason);\n     for (const requestCapability of this._requests) {\n       requestCapability.resolve({\n         value: undefined,\n@@ -9758,13 +16064,15 @@\n class PDFNetworkStreamRangeRequestReader {\n   constructor(manager, begin, end) {\n     this._manager = manager;\n-    const args = {\n+    this._url = manager.url;\n+    this._requestId = manager.request({\n+      begin,\n+      end,\n+      onHeadersReceived: this._onHeadersReceived.bind(this),\n       onDone: this._onDone.bind(this),\n       onError: this._onError.bind(this),\n       onProgress: this._onProgress.bind(this)\n-    };\n-    this._url = manager.url;\n-    this._requestId = manager.requestRange(begin, end, args);\n+    });\n     this._requests = [];\n     this._queuedChunk = null;\n     this._done = false;\n@@ -9772,6 +16080,13 @@\n     this.onProgress = null;\n     this.onClosed = null;\n   }\n+  _onHeadersReceived() {\n+    const responseOrigin = getResponseOrigin(this._manager.getRequestXhr(this._requestId)?.responseURL);\n+    if (responseOrigin !== this._manager._responseOrigin) {\n+      this._storedError = new Error(`Expected range response-origin \"${responseOrigin}\" to match \"${this._manager._responseOrigin}\".`);\n+      this._onError(0);\n+    }\n+  }\n   _close() {\n     this.onClosed?.(this);\n   }\n@@ -9797,7 +16112,7 @@\n     this._close();\n   }\n   _onError(status) {\n-    this._storedError = createResponseStatusError(status, this._url);\n+    this._storedError ??= createResponseError(status, this._url);\n     for (const requestCapability of this._requests) {\n       requestCapability.reject(this._storedError);\n     }\n@@ -9852,32 +16167,34 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Fnode_stream.js\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Fnode_stream.js\n \n \n \n-const fileUriRegex = \u002F^file:\\\u002F\\\u002F\\\u002F[a-zA-Z]:\\\u002F\u002F;\n-function parseUrl(sourceUrl) {\n-  const url = NodePackages.get(\"url\");\n-  const parsedUrl = url.parse(sourceUrl);\n-  if (parsedUrl.protocol === \"file:\" || parsedUrl.host) {\n-    return parsedUrl;\n-  }\n-  if (\u002F^[a-z]:[\u002F\\\\]\u002Fi.test(sourceUrl)) {\n-    return url.parse(`file:\u002F\u002F\u002F${sourceUrl}`);\n-  }\n-  if (!parsedUrl.host) {\n-    parsedUrl.protocol = \"file:\";\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+const urlRegex = \u002F^[a-z][a-z0-9\\-+.]+:\u002Fi;\n+function parseUrlOrPath(sourceUrl) {\n+  if (urlRegex.test(sourceUrl)) {\n+    return new URL(sourceUrl);\n   }\n-  return parsedUrl;\n+  const url = process.getBuiltinModule(\"url\");\n+  return new URL(url.pathToFileURL(sourceUrl));\n }\n class PDFNodeStream {\n   constructor(source) {\n     this.source = source;\n-    this.url = parseUrl(source.url);\n-    this.isHttp = this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n-    this.isFsUrl = this.url.protocol === \"file:\";\n-    this.httpHeaders = this.isHttp && source.httpHeaders || {};\n+    this.url = parseUrlOrPath(source.url);\n+    assert(this.url.protocol === \"file:\", \"PDFNodeStream only supports file:\u002F\u002F URLs.\");\n     this._fullRequestReader = null;\n     this._rangeRequestReaders = [];\n   }\n@@ -9886,14 +16203,14 @@\n   }\n   getFullReader() {\n     assert(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n-    this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);\n+    this._fullRequestReader = new PDFNodeStreamFsFullReader(this);\n     return this._fullRequestReader;\n   }\n   getRangeReader(start, end) {\n     if (end \u003C= this._progressiveDataLength) {\n       return null;\n     }\n-    const rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end);\n+    const rangeReader = new PDFNodeStreamFsRangeReader(this, start, end);\n     this._rangeRequestReaders.push(rangeReader);\n     return rangeReader;\n   }\n@@ -9904,7 +16221,7 @@\n     }\n   }\n }\n-class BaseFullReader {\n+class PDFNodeStreamFsFullReader {\n   constructor(stream) {\n     this._url = stream.url;\n     this._done = false;\n@@ -9924,6 +16241,18 @@\n     this._readableStream = null;\n     this._readCapability = Promise.withResolvers();\n     this._headersCapability = Promise.withResolvers();\n+    const fs = process.getBuiltinModule(\"fs\");\n+    fs.promises.lstat(this._url).then(stat => {\n+      this._contentLength = stat.size;\n+      this._setReadableStream(fs.createReadStream(this._url));\n+      this._headersCapability.resolve();\n+    }, error => {\n+      if (error.code === \"ENOENT\") {\n+        error = createResponseError(0, this._url.href);\n+      }\n+      this._storedError = error;\n+      this._headersCapability.reject(error);\n+    });\n   }\n   get headersReady() {\n     return this._headersCapability.promise;\n@@ -9999,8 +16328,8 @@\n     }\n   }\n }\n-class BaseRangeReader {\n-  constructor(stream) {\n+class PDFNodeStreamFsRangeReader {\n+  constructor(stream, start, end) {\n     this._url = stream.url;\n     this._done = false;\n     this._storedError = null;\n@@ -10010,6 +16339,11 @@\n     this._readCapability = Promise.withResolvers();\n     const source = stream.source;\n     this._isStreamingSupported = !source.disableStream;\n+    const fs = process.getBuiltinModule(\"fs\");\n+    this._setReadableStream(fs.createReadStream(this._url, {\n+      start,\n+      end: end - 1\n+    }));\n   }\n   get isStreamingSupported() {\n     return this._isStreamingSupported;\n@@ -10069,134 +16403,83 @@\n     }\n   }\n }\n-function createRequestOptions(parsedUrl, headers) {\n-  return {\n-    protocol: parsedUrl.protocol,\n-    auth: parsedUrl.auth,\n-    host: parsedUrl.hostname,\n-    port: parsedUrl.port,\n-    path: parsedUrl.path,\n-    method: \"GET\",\n-    headers\n-  };\n-}\n-class PDFNodeStreamFullReader extends BaseFullReader {\n-  constructor(stream) {\n-    super(stream);\n-    const handleResponse = response => {\n-      if (response.statusCode === 404) {\n-        const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n-        this._storedError = error;\n-        this._headersCapability.reject(error);\n-        return;\n-      }\n-      this._headersCapability.resolve();\n-      this._setReadableStream(response);\n-      const getResponseHeader = name => this._readableStream.headers[name.toLowerCase()];\n-      const {\n-        allowRangeRequests,\n-        suggestedLength\n-      } = validateRangeRequestCapabilities({\n-        getResponseHeader,\n-        isHttp: stream.isHttp,\n-        rangeChunkSize: this._rangeChunkSize,\n-        disableRange: this._disableRange\n-      });\n-      this._isRangeSupported = allowRangeRequests;\n-      this._contentLength = suggestedLength || this._contentLength;\n-      this._filename = extractFilenameFromHeader(getResponseHeader);\n+\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Fpdf_objects.js\n+\n+const INITIAL_DATA = Symbol(\"INITIAL_DATA\");\n+class PDFObjects {\n+  #objs = Object.create(null);\n+  #ensureObj(objId) {\n+    return this.#objs[objId] ||= {\n+      ...Promise.withResolvers(),\n+      data: INITIAL_DATA\n     };\n-    this._request = null;\n-    if (this._url.protocol === \"http:\") {\n-      const http = NodePackages.get(\"http\");\n-      this._request = http.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse);\n-    } else {\n-      const https = NodePackages.get(\"https\");\n-      this._request = https.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse);\n-    }\n-    this._request.on(\"error\", reason => {\n-      this._storedError = reason;\n-      this._headersCapability.reject(reason);\n-    });\n-    this._request.end();\n   }\n-}\n-class PDFNodeStreamRangeReader extends BaseRangeReader {\n-  constructor(stream, start, end) {\n-    super(stream);\n-    this._httpHeaders = {};\n-    for (const property in stream.httpHeaders) {\n-      const value = stream.httpHeaders[property];\n-      if (value === undefined) {\n-        continue;\n-      }\n-      this._httpHeaders[property] = value;\n+  get(objId, callback = null) {\n+    if (callback) {\n+      const obj = this.#ensureObj(objId);\n+      obj.promise.then(() => callback(obj.data));\n+      return null;\n     }\n-    this._httpHeaders.Range = `bytes=${start}-${end - 1}`;\n-    const handleResponse = response => {\n-      if (response.statusCode === 404) {\n-        const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n-        this._storedError = error;\n-        return;\n-      }\n-      this._setReadableStream(response);\n-    };\n-    this._request = null;\n-    if (this._url.protocol === \"http:\") {\n-      const http = NodePackages.get(\"http\");\n-      this._request = http.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);\n-    } else {\n-      const https = NodePackages.get(\"https\");\n-      this._request = https.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);\n+    const obj = this.#objs[objId];\n+    if (!obj || obj.data === INITIAL_DATA) {\n+      throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n     }\n-    this._request.on(\"error\", reason => {\n-      this._storedError = reason;\n-    });\n-    this._request.end();\n+    return obj.data;\n   }\n-}\n-class PDFNodeStreamFsFullReader extends BaseFullReader {\n-  constructor(stream) {\n-    super(stream);\n-    let path = decodeURIComponent(this._url.path);\n-    if (fileUriRegex.test(this._url.href)) {\n-      path = path.replace(\u002F^\\\u002F\u002F, \"\");\n+  has(objId) {\n+    const obj = this.#objs[objId];\n+    return !!obj && obj.data !== INITIAL_DATA;\n+  }\n+  delete(objId) {\n+    const obj = this.#objs[objId];\n+    if (!obj || obj.data === INITIAL_DATA) {\n+      return false;\n     }\n-    const fs = NodePackages.get(\"fs\");\n-    fs.promises.lstat(path).then(stat => {\n-      this._contentLength = stat.size;\n-      this._setReadableStream(fs.createReadStream(path));\n-      this._headersCapability.resolve();\n-    }, error => {\n-      if (error.code === \"ENOENT\") {\n-        error = new MissingPDFException(`Missing PDF \"${path}\".`);\n-      }\n-      this._storedError = error;\n-      this._headersCapability.reject(error);\n-    });\n+    delete this.#objs[objId];\n+    return true;\n   }\n-}\n-class PDFNodeStreamFsRangeReader extends BaseRangeReader {\n-  constructor(stream, start, end) {\n-    super(stream);\n-    let path = decodeURIComponent(this._url.path);\n-    if (fileUriRegex.test(this._url.href)) {\n-      path = path.replace(\u002F^\\\u002F\u002F, \"\");\n+  resolve(objId, data = null) {\n+    const obj = this.#ensureObj(objId);\n+    obj.data = data;\n+    obj.resolve();\n+  }\n+  clear() {\n+    for (const objId in this.#objs) {\n+      const {\n+        data\n+      } = this.#objs[objId];\n+      data?.bitmap?.close();\n+    }\n+    this.#objs = Object.create(null);\n+  }\n+  *[Symbol.iterator]() {\n+    for (const objId in this.#objs) {\n+      const {\n+        data\n+      } = this.#objs[objId];\n+      if (data === INITIAL_DATA) {\n+        continue;\n+      }\n+      yield [objId, data];\n     }\n-    const fs = NodePackages.get(\"fs\");\n-    this._setReadableStream(fs.createReadStream(path, {\n-      start,\n-      end: end - 1\n-    }));\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Ftext_layer.js\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Ftext_layer.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n const MAX_TEXT_DIVS_TO_RENDER = 100000;\n const DEFAULT_FONT_SIZE = 30;\n-const DEFAULT_FONT_ASCENT = 0.8;\n class TextLayer {\n   #capability = Promise.withResolvers();\n   #container = null;\n@@ -10218,6 +16501,8 @@\n   #transform = null;\n   static #ascentCache = new Map();\n   static #canvasContexts = new Map();\n+  static #canvasCtxFonts = new WeakMap();\n+  static #minFontSize = null;\n   static #pendingTextLayers = new Set();\n   constructor({\n     textContentSource,\n@@ -10237,11 +16522,9 @@\n       throw new Error('No \"textContentSource\" parameter specified.');\n     }\n     this.#container = this.#rootContainer = container;\n-    this.#scale = viewport.scale * (globalThis.devicePixelRatio || 1);\n+    this.#scale = viewport.scale * OutputScale.pixelRatio;\n     this.#rotation = viewport.rotation;\n     this.#layoutTextParams = {\n-      prevFontSize: null,\n-      prevFontFamily: null,\n       div: null,\n       properties: null,\n       ctx: null\n@@ -10255,12 +16538,20 @@\n     this.#transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n     this.#pageWidth = pageWidth;\n     this.#pageHeight = pageHeight;\n+    TextLayer.#ensureMinFontSizeComputed();\n     setLayerDimensions(container, viewport);\n-    this.#capability.promise.catch(() => {}).then(() => {\n+    this.#capability.promise.finally(() => {\n       TextLayer.#pendingTextLayers.delete(this);\n       this.#layoutTextParams = null;\n       this.#styleCache = null;\n-    });\n+    }).catch(() => {});\n+  }\n+  static get fontFamilyMap() {\n+    const {\n+      isWindows,\n+      isFirefox\n+    } = util_FeatureTest.platform;\n+    return shadow(this, \"fontFamilyMap\", new Map([[\"sans-serif\", `${isWindows && isFirefox ? \"Calibri, \" : \"\"}sans-serif`], [\"monospace\", `${isWindows && isFirefox ? \"Lucida Console, \" : \"\"}monospace`]]));\n   }\n   render() {\n     const pump = () => {\n@@ -10287,7 +16578,7 @@\n     viewport,\n     onBefore = null\n   }) {\n-    const scale = viewport.scale * (globalThis.devicePixelRatio || 1);\n+    const scale = viewport.scale * OutputScale.pixelRatio;\n     const rotation = viewport.rotation;\n     if (rotation !== this.#rotation) {\n       onBefore?.();\n@@ -10300,8 +16591,6 @@\n       onBefore?.();\n       this.#scale = scale;\n       const params = {\n-        prevFontSize: null,\n-        prevFontFamily: null,\n         div: null,\n         properties: null,\n         ctx: TextLayer.#getCtx(this.#lang)\n@@ -10329,7 +16618,7 @@\n     if (this.#disableProcessItems) {\n       return;\n     }\n-    this.#layoutTextParams.ctx ||= TextLayer.#getCtx(this.#lang);\n+    this.#layoutTextParams.ctx ??= TextLayer.#getCtx(this.#lang);\n     const textDivs = this.#textDivs,\n       textContentItemsStr = this.#textContentItemsStr;\n     for (const item of items) {\n@@ -10372,9 +16661,10 @@\n     if (style.vertical) {\n       angle += Math.PI \u002F 2;\n     }\n-    const fontFamily = this.#fontInspectorEnabled && style.fontSubstitution || style.fontFamily;\n+    let fontFamily = this.#fontInspectorEnabled && style.fontSubstitution || style.fontFamily;\n+    fontFamily = TextLayer.fontFamilyMap.get(fontFamily) || fontFamily;\n     const fontHeight = Math.hypot(tx[2], tx[3]);\n-    const fontAscent = fontHeight * TextLayer.#getAscent(fontFamily, this.#lang);\n+    const fontAscent = fontHeight * TextLayer.#getAscent(fontFamily, style, this.#lang);\n     let left, top;\n     if (angle === 0) {\n       left = tx[4];\n@@ -10383,7 +16673,7 @@\n       left = tx[4] + fontAscent * Math.sin(angle);\n       top = tx[5] - fontAscent * Math.cos(angle);\n     }\n-    const scaleFactorStr = \"calc(var(--scale-factor)*\";\n+    const scaleFactorStr = \"calc(var(--total-scale-factor) *\";\n     const divStyle = textDiv.style;\n     if (this.#container === this.#rootContainer) {\n       divStyle.left = `${(100 * left \u002F this.#pageWidth).toFixed(2)}%`;\n@@ -10392,7 +16682,7 @@\n       divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`;\n       divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`;\n     }\n-    divStyle.fontSize = `${scaleFactorStr}${fontHeight.toFixed(2)}px)`;\n+    divStyle.fontSize = `${scaleFactorStr}${(TextLayer.#minFontSize * fontHeight).toFixed(2)}px)`;\n     divStyle.fontFamily = fontFamily;\n     textDivProperties.fontSize = fontHeight;\n     textDiv.setAttribute(\"role\", \"presentation\");\n@@ -10434,14 +16724,15 @@\n     const {\n       div,\n       properties,\n-      ctx,\n-      prevFontSize,\n-      prevFontFamily\n+      ctx\n     } = params;\n     const {\n       style\n     } = div;\n     let transform = \"\";\n+    if (TextLayer.#minFontSize > 1) {\n+      transform = `scale(${1 \u002F TextLayer.#minFontSize})`;\n+    }\n     if (properties.canvasWidth !== 0 && properties.hasText) {\n       const {\n         fontFamily\n@@ -10450,16 +16741,12 @@\n         canvasWidth,\n         fontSize\n       } = properties;\n-      if (prevFontSize !== fontSize || prevFontFamily !== fontFamily) {\n-        ctx.font = `${fontSize * this.#scale}px ${fontFamily}`;\n-        params.prevFontSize = fontSize;\n-        params.prevFontFamily = fontFamily;\n-      }\n+      TextLayer.#ensureCtxFont(ctx, fontSize * this.#scale, fontFamily);\n       const {\n         width\n       } = ctx.measureText(div.textContent);\n       if (width > 0) {\n-        transform = `scaleX(${canvasWidth * this.#scale \u002F width})`;\n+        transform = `scaleX(${canvasWidth * this.#scale \u002F width}) ${transform}`;\n       }\n     }\n     if (properties.angle !== 0) {\n@@ -10482,99 +16769,79 @@\n     this.#canvasContexts.clear();\n   }\n   static #getCtx(lang = null) {\n-    let canvasContext = this.#canvasContexts.get(lang ||= \"\");\n-    if (!canvasContext) {\n+    let ctx = this.#canvasContexts.get(lang ||= \"\");\n+    if (!ctx) {\n       const canvas = document.createElement(\"canvas\");\n       canvas.className = \"hiddenCanvasElement\";\n       canvas.lang = lang;\n       document.body.append(canvas);\n-      canvasContext = canvas.getContext(\"2d\", {\n-        alpha: false\n+      ctx = canvas.getContext(\"2d\", {\n+        alpha: false,\n+        willReadFrequently: true\n+      });\n+      this.#canvasContexts.set(lang, ctx);\n+      this.#canvasCtxFonts.set(ctx, {\n+        size: 0,\n+        family: \"\"\n       });\n-      this.#canvasContexts.set(lang, canvasContext);\n     }\n-    return canvasContext;\n+    return ctx;\n+  }\n+  static #ensureCtxFont(ctx, size, family) {\n+    const cached = this.#canvasCtxFonts.get(ctx);\n+    if (size === cached.size && family === cached.family) {\n+      return;\n+    }\n+    ctx.font = `${size}px ${family}`;\n+    cached.size = size;\n+    cached.family = family;\n   }\n-  static #getAscent(fontFamily, lang) {\n+  static #ensureMinFontSizeComputed() {\n+    if (this.#minFontSize !== null) {\n+      return;\n+    }\n+    const div = document.createElement(\"div\");\n+    div.style.opacity = 0;\n+    div.style.lineHeight = 1;\n+    div.style.fontSize = \"1px\";\n+    div.style.position = \"absolute\";\n+    div.textContent = \"X\";\n+    document.body.append(div);\n+    this.#minFontSize = div.getBoundingClientRect().height;\n+    div.remove();\n+  }\n+  static #getAscent(fontFamily, style, lang) {\n     const cachedAscent = this.#ascentCache.get(fontFamily);\n     if (cachedAscent) {\n       return cachedAscent;\n     }\n     const ctx = this.#getCtx(lang);\n-    const savedFont = ctx.font;\n     ctx.canvas.width = ctx.canvas.height = DEFAULT_FONT_SIZE;\n-    ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`;\n+    this.#ensureCtxFont(ctx, DEFAULT_FONT_SIZE, fontFamily);\n     const metrics = ctx.measureText(\"\");\n-    let ascent = metrics.fontBoundingBoxAscent;\n-    let descent = Math.abs(metrics.fontBoundingBoxDescent);\n+    const ascent = metrics.fontBoundingBoxAscent;\n+    const descent = Math.abs(metrics.fontBoundingBoxDescent);\n+    ctx.canvas.width = ctx.canvas.height = 0;\n+    let ratio = 0.8;\n     if (ascent) {\n-      const ratio = ascent \u002F (ascent + descent);\n-      this.#ascentCache.set(fontFamily, ratio);\n-      ctx.canvas.width = ctx.canvas.height = 0;\n-      ctx.font = savedFont;\n-      return ratio;\n-    }\n-    ctx.strokeStyle = \"red\";\n-    ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n-    ctx.strokeText(\"g\", 0, 0);\n-    let pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n-    descent = 0;\n-    for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) {\n-      if (pixels[i] > 0) {\n-        descent = Math.ceil(i \u002F 4 \u002F DEFAULT_FONT_SIZE);\n-        break;\n+      ratio = ascent \u002F (ascent + descent);\n+    } else {\n+      if (util_FeatureTest.platform.isFirefox) {\n+        warn(\"Enable the `dom.textMetrics.fontBoundingBox.enabled` preference \" + \"in `about:config` to improve TextLayer rendering.\");\n       }\n-    }\n-    ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n-    ctx.strokeText(\"A\", 0, DEFAULT_FONT_SIZE);\n-    pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n-    ascent = 0;\n-    for (let i = 0, ii = pixels.length; i \u003C ii; i += 4) {\n-      if (pixels[i] > 0) {\n-        ascent = DEFAULT_FONT_SIZE - Math.floor(i \u002F 4 \u002F DEFAULT_FONT_SIZE);\n-        break;\n+      if (style.ascent) {\n+        ratio = style.ascent;\n+      } else if (style.descent) {\n+        ratio = 1 + style.descent;\n       }\n     }\n-    ctx.canvas.width = ctx.canvas.height = 0;\n-    ctx.font = savedFont;\n-    const ratio = ascent ? ascent \u002F (ascent + descent) : DEFAULT_FONT_ASCENT;\n     this.#ascentCache.set(fontFamily, ratio);\n     return ratio;\n   }\n }\n-function renderTextLayer() {\n-  deprecated(\"`renderTextLayer`, please use `TextLayer` instead.\");\n-  const {\n-    textContentSource,\n-    container,\n-    viewport,\n-    ...rest\n-  } = arguments[0];\n-  const restKeys = Object.keys(rest);\n-  if (restKeys.length > 0) {\n-    warn(\"Ignoring `renderTextLayer` parameters: \" + restKeys.join(\", \"));\n-  }\n-  const textLayer = new TextLayer({\n-    textContentSource,\n-    container,\n-    viewport\n-  });\n-  const {\n-    textDivs,\n-    textContentItemsStr\n-  } = textLayer;\n-  const promise = textLayer.render();\n-  return {\n-    promise,\n-    textDivs,\n-    textContentItemsStr\n-  };\n-}\n-function updateTextLayer() {\n-  deprecated(\"`updateTextLayer`, please use `TextLayer` instead.\");\n-}\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Fxfa_text.js\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Fxfa_text.js\n+\n class XfaText {\n   static textContent(xfa) {\n     const items = [];\n@@ -10617,7 +16884,37 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Fapi.js\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Fapi.js\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@@ -10634,14 +16931,8 @@\n \n \n \n-const DEFAULT_RANGE_CHUNK_SIZE = 65536;\n const RENDERING_CANCELLED_TIMEOUT = 100;\n-const DELAYED_CLEANUP_TIMEOUT = 5000;\n-const DefaultCanvasFactory = isNodeJS ? NodeCanvasFactory : DOMCanvasFactory;\n-const DefaultCMapReaderFactory = isNodeJS ? NodeCMapReaderFactory : DOMCMapReaderFactory;\n-const DefaultFilterFactory = isNodeJS ? NodeFilterFactory : DOMFilterFactory;\n-const DefaultStandardFontDataFactory = isNodeJS ? NodeStandardFontDataFactory : DOMStandardFontDataFactory;\n-function getDocument(src) {\n+function getDocument(src = {}) {\n   if (typeof src === \"string\" || src instanceof URL) {\n     src = {\n       url: src\n@@ -10651,12 +16942,6 @@\n       data: src\n     };\n   }\n-  if (typeof src !== \"object\") {\n-    throw new Error(\"Invalid parameter in getDocument, need parameter object.\");\n-  }\n-  if (!src.url && !src.data && !src.range) {\n-    throw new Error(\"Invalid parameter object: need either .data, .range or .url\");\n-  }\n   const task = new PDFDocumentLoadingTask();\n   const {\n     docId\n@@ -10667,19 +16952,23 @@\n   const withCredentials = src.withCredentials === true;\n   const password = src.password ?? null;\n   const rangeTransport = src.range instanceof PDFDataRangeTransport ? src.range : null;\n-  const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : DEFAULT_RANGE_CHUNK_SIZE;\n+  const rangeChunkSize = Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0 ? src.rangeChunkSize : 2 ** 16;\n   let worker = src.worker instanceof PDFWorker ? src.worker : null;\n   const verbosity = src.verbosity;\n   const docBaseUrl = typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl) ? src.docBaseUrl : null;\n-  const cMapUrl = typeof src.cMapUrl === \"string\" ? src.cMapUrl : null;\n+  const cMapUrl = getFactoryUrlProp(src.cMapUrl);\n   const cMapPacked = src.cMapPacked !== false;\n-  const CMapReaderFactory = src.CMapReaderFactory || DefaultCMapReaderFactory;\n-  const standardFontDataUrl = typeof src.standardFontDataUrl === \"string\" ? src.standardFontDataUrl : null;\n-  const StandardFontDataFactory = src.StandardFontDataFactory || DefaultStandardFontDataFactory;\n+  const CMapReaderFactory = src.CMapReaderFactory || (isNodeJS ? NodeCMapReaderFactory : DOMCMapReaderFactory);\n+  const iccUrl = getFactoryUrlProp(src.iccUrl);\n+  const standardFontDataUrl = getFactoryUrlProp(src.standardFontDataUrl);\n+  const StandardFontDataFactory = src.StandardFontDataFactory || (isNodeJS ? NodeStandardFontDataFactory : DOMStandardFontDataFactory);\n+  const wasmUrl = getFactoryUrlProp(src.wasmUrl);\n+  const WasmFactory = src.WasmFactory || (isNodeJS ? NodeWasmFactory : DOMWasmFactory);\n   const ignoreErrors = src.stopAtErrors !== true;\n   const maxImageSize = Number.isInteger(src.maxImageSize) && src.maxImageSize > -1 ? src.maxImageSize : -1;\n   const isEvalSupported = src.isEvalSupported !== false;\n   const isOffscreenCanvasSupported = typeof src.isOffscreenCanvasSupported === \"boolean\" ? src.isOffscreenCanvasSupported : !isNodeJS;\n+  const isImageDecoderSupported = typeof src.isImageDecoderSupported === \"boolean\" ? src.isImageDecoderSupported : !isNodeJS && (util_FeatureTest.platform.isFirefox || !globalThis.chrome);\n   const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes) ? src.canvasMaxAreaInBytes : -1;\n   const disableFontFace = typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : isNodeJS;\n   const fontExtraProperties = src.fontExtraProperties === true;\n@@ -10689,42 +16978,45 @@\n   const disableStream = src.disableStream === true;\n   const disableAutoFetch = src.disableAutoFetch === true;\n   const pdfBug = src.pdfBug === true;\n+  const CanvasFactory = src.CanvasFactory || (isNodeJS ? NodeCanvasFactory : DOMCanvasFactory);\n+  const FilterFactory = src.FilterFactory || (isNodeJS ? NodeFilterFactory : DOMFilterFactory);\n+  const enableHWA = src.enableHWA === true;\n+  const useWasm = src.useWasm !== false;\n   const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n   const useSystemFonts = typeof src.useSystemFonts === \"boolean\" ? src.useSystemFonts : !isNodeJS && !disableFontFace;\n-  const useWorkerFetch = typeof src.useWorkerFetch === \"boolean\" ? src.useWorkerFetch : CMapReaderFactory === DOMCMapReaderFactory && StandardFontDataFactory === DOMStandardFontDataFactory && cMapUrl && standardFontDataUrl && isValidFetchUrl(cMapUrl, document.baseURI) && isValidFetchUrl(standardFontDataUrl, document.baseURI);\n-  const canvasFactory = src.canvasFactory || new DefaultCanvasFactory({\n-    ownerDocument\n-  });\n-  const filterFactory = src.filterFactory || new DefaultFilterFactory({\n-    docId,\n-    ownerDocument\n-  });\n+  const useWorkerFetch = typeof src.useWorkerFetch === \"boolean\" ? src.useWorkerFetch : !!(CMapReaderFactory === DOMCMapReaderFactory && StandardFontDataFactory === DOMStandardFontDataFactory && WasmFactory === DOMWasmFactory && cMapUrl && standardFontDataUrl && wasmUrl && isValidFetchUrl(cMapUrl, document.baseURI) && isValidFetchUrl(standardFontDataUrl, document.baseURI) && isValidFetchUrl(wasmUrl, document.baseURI));\n   const styleElement = null;\n   setVerbosityLevel(verbosity);\n   const transportFactory = {\n-    canvasFactory,\n-    filterFactory\n-  };\n-  if (!useWorkerFetch) {\n-    transportFactory.cMapReaderFactory = new CMapReaderFactory({\n+    canvasFactory: new CanvasFactory({\n+      ownerDocument,\n+      enableHWA\n+    }),\n+    filterFactory: new FilterFactory({\n+      docId,\n+      ownerDocument\n+    }),\n+    cMapReaderFactory: useWorkerFetch ? null : new CMapReaderFactory({\n       baseUrl: cMapUrl,\n       isCompressed: cMapPacked\n-    });\n-    transportFactory.standardFontDataFactory = new StandardFontDataFactory({\n+    }),\n+    standardFontDataFactory: useWorkerFetch ? null : new StandardFontDataFactory({\n       baseUrl: standardFontDataUrl\n-    });\n-  }\n+    }),\n+    wasmFactory: useWorkerFetch ? null : new WasmFactory({\n+      baseUrl: wasmUrl\n+    })\n+  };\n   if (!worker) {\n-    const workerParams = {\n+    worker = PDFWorker.create({\n       verbosity,\n       port: GlobalWorkerOptions.workerPort\n-    };\n-    worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);\n+    });\n     task._worker = worker;\n   }\n   const docParams = {\n     docId,\n-    apiVersion: \"4.3.136\",\n+    apiVersion: \"5.3.31\",\n     data,\n     password,\n     disableAutoFetch,\n@@ -10738,16 +17030,19 @@\n       ignoreErrors,\n       isEvalSupported,\n       isOffscreenCanvasSupported,\n+      isImageDecoderSupported,\n       canvasMaxAreaInBytes,\n       fontExtraProperties,\n       useSystemFonts,\n-      cMapUrl: useWorkerFetch ? cMapUrl : null,\n-      standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null\n+      useWasm,\n+      useWorkerFetch,\n+      cMapUrl,\n+      iccUrl,\n+      standardFontDataUrl,\n+      wasmUrl\n     }\n   };\n   const transportParams = {\n-    disableFontFace,\n-    fontExtraProperties,\n     ownerDocument,\n     pdfBug,\n     styleElement,\n@@ -10771,16 +17066,11 @@\n         disableStream\n       });\n     } else if (!data) {\n-      const createPDFNetworkStream = params => {\n-        if (isNodeJS) {\n-          const isFetchSupported = function () {\n-            return typeof fetch !== \"undefined\" && typeof Response !== \"undefined\" && \"body\" in Response.prototype;\n-          };\n-          return isFetchSupported() && isValidFetchUrl(params.url) ? new PDFFetchStream(params) : new PDFNodeStream(params);\n-        }\n-        return isValidFetchUrl(params.url) ? new PDFFetchStream(params) : new PDFNetworkStream(params);\n-      };\n-      networkStream = createPDFNetworkStream({\n+      if (!url) {\n+        throw new Error(\"getDocument - no `url` parameter provided.\");\n+      }\n+      const NetworkStream = isValidFetchUrl(url) ? PDFFetchStream : isNodeJS ? PDFNodeStream : PDFNetworkStream;\n+      networkStream = new NetworkStream({\n         url,\n         length,\n         httpHeaders,\n@@ -10805,48 +17095,15 @@\n   }).catch(task._capability.reject);\n   return task;\n }\n-function getUrlProp(val) {\n-  if (val instanceof URL) {\n-    return val.href;\n-  }\n-  try {\n-    return new URL(val, window.location).href;\n-  } catch {\n-    if (isNodeJS && typeof val === \"string\") {\n-      return val;\n-    }\n-  }\n-  throw new Error(\"Invalid PDF url data: \" + \"either string or URL-object is expected in the url property.\");\n-}\n-function getDataProp(val) {\n-  if (isNodeJS && typeof Buffer !== \"undefined\" && val instanceof Buffer) {\n-    throw new Error(\"Please provide binary data as `Uint8Array`, rather than `Buffer`.\");\n-  }\n-  if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n-    return val;\n-  }\n-  if (typeof val === \"string\") {\n-    return stringToBytes(val);\n-  }\n-  if (val instanceof ArrayBuffer || ArrayBuffer.isView(val) || typeof val === \"object\" && !isNaN(val?.length)) {\n-    return new Uint8Array(val);\n-  }\n-  throw new Error(\"Invalid PDF binary data: either TypedArray, \" + \"string, or array-like object is expected in the data property.\");\n-}\n-function isRefProxy(ref) {\n-  return typeof ref === \"object\" && Number.isInteger(ref?.num) && ref.num >= 0 && Number.isInteger(ref?.gen) && ref.gen >= 0;\n-}\n class PDFDocumentLoadingTask {\n   static #docId = 0;\n-  constructor() {\n-    this._capability = Promise.withResolvers();\n-    this._transport = null;\n-    this._worker = null;\n-    this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n-    this.destroyed = false;\n-    this.onPassword = null;\n-    this.onProgress = null;\n-  }\n+  _capability = Promise.withResolvers();\n+  _transport = null;\n+  _worker = null;\n+  docId = `d${PDFDocumentLoadingTask.#docId++}`;\n+  destroyed = false;\n+  onPassword = null;\n+  onProgress = null;\n   get promise() {\n     return this._capability.promise;\n   }\n@@ -10864,64 +17121,65 @@\n       throw ex;\n     }\n     this._transport = null;\n-    if (this._worker) {\n-      this._worker.destroy();\n-      this._worker = null;\n-    }\n+    this._worker?.destroy();\n+    this._worker = null;\n+  }\n+  async getData() {\n+    return this._transport.getData();\n   }\n }\n class PDFDataRangeTransport {\n+  #capability = Promise.withResolvers();\n+  #progressiveDoneListeners = [];\n+  #progressiveReadListeners = [];\n+  #progressListeners = [];\n+  #rangeListeners = [];\n   constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {\n     this.length = length;\n     this.initialData = initialData;\n     this.progressiveDone = progressiveDone;\n     this.contentDispositionFilename = contentDispositionFilename;\n-    this._rangeListeners = [];\n-    this._progressListeners = [];\n-    this._progressiveReadListeners = [];\n-    this._progressiveDoneListeners = [];\n-    this._readyCapability = Promise.withResolvers();\n   }\n   addRangeListener(listener) {\n-    this._rangeListeners.push(listener);\n+    this.#rangeListeners.push(listener);\n   }\n   addProgressListener(listener) {\n-    this._progressListeners.push(listener);\n+    this.#progressListeners.push(listener);\n   }\n   addProgressiveReadListener(listener) {\n-    this._progressiveReadListeners.push(listener);\n+    this.#progressiveReadListeners.push(listener);\n   }\n   addProgressiveDoneListener(listener) {\n-    this._progressiveDoneListeners.push(listener);\n+    this.#progressiveDoneListeners.push(listener);\n   }\n   onDataRange(begin, chunk) {\n-    for (const listener of this._rangeListeners) {\n+    for (const listener of this.#rangeListeners) {\n       listener(begin, chunk);\n     }\n   }\n   onDataProgress(loaded, total) {\n-    this._readyCapability.promise.then(() => {\n-      for (const listener of this._progressListeners) {\n+    this.#capability.promise.then(() => {\n+      for (const listener of this.#progressListeners) {\n         listener(loaded, total);\n       }\n     });\n   }\n   onDataProgressiveRead(chunk) {\n-    this._readyCapability.promise.then(() => {\n-      for (const listener of this._progressiveReadListeners) {\n+    this.#capability.promise.then(() => {\n+      for (const listener of this.#progressiveReadListeners) {\n         listener(chunk);\n       }\n     });\n   }\n   onDataProgressiveDone() {\n-    this._readyCapability.promise.then(() => {\n-      for (const listener of this._progressiveDoneListeners) {\n+    this.#capability.promise.then(() => {\n+      for (const listener of this.#progressiveDoneListeners) {\n         listener();\n       }\n     });\n   }\n   transportReady() {\n-    this._readyCapability.resolve();\n+    this.#capability.resolve();\n   }\n   requestDataRange(begin, end) {\n     unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n@@ -10936,6 +17194,9 @@\n   get annotationStorage() {\n     return this._transport.annotationStorage;\n   }\n+  get canvasFactory() {\n+    return this._transport.canvasFactory;\n+  }\n   get filterFactory() {\n     return this._transport.filterFactory;\n   }\n@@ -11039,7 +17300,6 @@\n   }\n }\n class PDFPageProxy {\n-  #delayedCleanupTimeout = null;\n   #pendingCleanup = false;\n   constructor(pageIndex, pageInfo, transport, pdfBug = false) {\n     this._pageIndex = pageIndex;\n@@ -11049,7 +17309,6 @@\n     this._pdfBug = pdfBug;\n     this.commonObjs = transport.commonObjs;\n     this.objs = new PDFObjects();\n-    this._maybeCleanupAfterRender = false;\n     this._intentStates = new Map();\n     this.destroyed = false;\n   }\n@@ -11077,6 +17336,7 @@\n   } = {}) {\n     return new PageViewport({\n       viewBox: this.view,\n+      userUnit: this.userUnit,\n       scale,\n       rotation,\n       offsetX,\n@@ -11114,16 +17374,16 @@\n     optionalContentConfigPromise = null,\n     annotationCanvasMap = null,\n     pageColors = null,\n-    printAnnotationStorage = null\n+    printAnnotationStorage = null,\n+    isEditing = false\n   }) {\n     this._stats?.time(\"Overall\");\n-    const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage);\n+    const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing);\n     const {\n       renderingIntent,\n       cacheKey\n     } = intentArgs;\n     this.#pendingCleanup = false;\n-    this.#abortDelayedCleanup();\n     optionalContentConfigPromise ||= this._transport.getOptionalContentConfig(renderingIntent);\n     let intentState = this._intentStates.get(cacheKey);\n     if (!intentState) {\n@@ -11148,10 +17408,10 @@\n     }\n     const complete = error => {\n       intentState.renderTasks.delete(internalRenderTask);\n-      if (this._maybeCleanupAfterRender || intentPrint) {\n+      if (intentPrint) {\n         this.#pendingCleanup = true;\n       }\n-      this.#tryCleanup(!intentPrint);\n+      this.#tryCleanup();\n       if (error) {\n         internalRenderTask.capability.reject(error);\n         this._abortOperatorList({\n@@ -11210,7 +17470,8 @@\n   getOperatorList({\n     intent = \"display\",\n     annotationMode = AnnotationMode.ENABLE,\n-    printAnnotationStorage = null\n+    printAnnotationStorage = null,\n+    isEditing = false\n   } = {}) {\n     function operatorListChanged() {\n       if (intentState.operatorList.lastChunk) {\n@@ -11218,7 +17479,7 @@\n         intentState.renderTasks.delete(opListTask);\n       }\n     }\n-    const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, true);\n+    const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, printAnnotationStorage, isEditing, true);\n     let intentState = this._intentStates.get(intentArgs.cacheKey);\n     if (!intentState) {\n       intentState = Object.create(null);\n@@ -11309,29 +17570,20 @@\n     }\n     this.objs.clear();\n     this.#pendingCleanup = false;\n-    this.#abortDelayedCleanup();\n     return Promise.all(waitOn);\n   }\n   cleanup(resetStats = false) {\n     this.#pendingCleanup = true;\n-    const success = this.#tryCleanup(false);\n+    const success = this.#tryCleanup();\n     if (resetStats && success) {\n       this._stats &&= new StatTimer();\n     }\n     return success;\n   }\n-  #tryCleanup(delayed = false) {\n-    this.#abortDelayedCleanup();\n+  #tryCleanup() {\n     if (!this.#pendingCleanup || this.destroyed) {\n       return false;\n     }\n-    if (delayed) {\n-      this.#delayedCleanupTimeout = setTimeout(() => {\n-        this.#delayedCleanupTimeout = null;\n-        this.#tryCleanup(false);\n-      }, DELAYED_CLEANUP_TIMEOUT);\n-      return false;\n-    }\n     for (const {\n       renderTasks,\n       operatorList\n@@ -11345,12 +17597,6 @@\n     this.#pendingCleanup = false;\n     return true;\n   }\n-  #abortDelayedCleanup() {\n-    if (this.#delayedCleanupTimeout) {\n-      clearTimeout(this.#delayedCleanupTimeout);\n-      this.#delayedCleanupTimeout = null;\n-    }\n-  }\n   _startRenderPage(transparency, cacheKey) {\n     const intentState = this._intentStates.get(cacheKey);\n     if (!intentState) {\n@@ -11370,13 +17616,14 @@\n       internalRenderTask.operatorListChanged();\n     }\n     if (operatorListChunk.lastChunk) {\n-      this.#tryCleanup(true);\n+      this.#tryCleanup();\n     }\n   }\n   _pumpOperatorList({\n     renderingIntent,\n     cacheKey,\n-    annotationStorageSerializable\n+    annotationStorageSerializable,\n+    modifiedIds\n   }) {\n     const {\n       map,\n@@ -11386,7 +17633,8 @@\n       pageIndex: this._pageIndex,\n       intent: renderingIntent,\n       cacheKey,\n-      annotationStorage: map\n+      annotationStorage: map,\n+      modifiedIds\n     }, transfer);\n     const reader = readableStream.getReader();\n     const intentState = this._intentStates.get(cacheKey);\n@@ -11415,7 +17663,7 @@\n           for (const internalRenderTask of intentState.renderTasks) {\n             internalRenderTask.operatorListChanged();\n           }\n-          this.#tryCleanup(true);\n+          this.#tryCleanup();\n         }\n         if (intentState.displayReadyCapability) {\n           intentState.displayReadyCapability.reject(reason);\n@@ -11477,62 +17725,41 @@\n     return this._stats;\n   }\n }\n-class LoopbackPort {\n-  #listeners = new Set();\n-  #deferred = Promise.resolve();\n-  postMessage(obj, transfer) {\n-    const event = {\n-      data: structuredClone(obj, transfer ? {\n-        transfer\n-      } : null)\n+class PDFWorker {\n+  #capability = Promise.withResolvers();\n+  #messageHandler = null;\n+  #port = null;\n+  #webWorker = null;\n+  static #fakeWorkerId = 0;\n+  static #isWorkerDisabled = false;\n+  static #workerPorts = new WeakMap();\n+  static {\n+    if (isNodeJS) {\n+      this.#isWorkerDisabled = true;\n+      GlobalWorkerOptions.workerSrc ||= \".\u002Fpdf.worker.js\";\n+    }\n+    this._isSameOrigin = (baseUrl, otherUrl) => {\n+      const base = URL.parse(baseUrl);\n+      if (!base?.origin || base.origin === \"null\") {\n+        return false;\n+      }\n+      const other = new URL(otherUrl, base);\n+      return base.origin === other.origin;\n     };\n-    this.#deferred.then(() => {\n-      for (const listener of this.#listeners) {\n-        listener.call(this, event);\n+    this._createCDNWrapper = url => {\n+      const wrapper = `await import(\"${url}\");`;\n+      return URL.createObjectURL(new Blob([wrapper], {\n+        type: \"text\u002Fjavascript\"\n+      }));\n+    };\n+    this.fromPort = params => {\n+      deprecated(\"`PDFWorker.fromPort` - please use `PDFWorker.create` instead.\");\n+      if (!params?.port) {\n+        throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n       }\n-    });\n-  }\n-  addEventListener(name, listener) {\n-    this.#listeners.add(listener);\n-  }\n-  removeEventListener(name, listener) {\n-    this.#listeners.delete(listener);\n-  }\n-  terminate() {\n-    this.#listeners.clear();\n-  }\n-}\n-const PDFWorkerUtil = {\n-  isWorkerDisabled: false,\n-  fakeWorkerId: 0\n-};\n-{\n-  if (isNodeJS) {\n-    PDFWorkerUtil.isWorkerDisabled = true;\n-    GlobalWorkerOptions.workerSrc ||= \".\u002Fpdf.worker.js\";\n+      return this.create(params);\n+    };\n   }\n-  PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) {\n-    let base;\n-    try {\n-      base = new URL(baseUrl);\n-      if (!base.origin || base.origin === \"null\") {\n-        return false;\n-      }\n-    } catch {\n-      return false;\n-    }\n-    const other = new URL(otherUrl, base);\n-    return base.origin === other.origin;\n-  };\n-  PDFWorkerUtil.createCDNWrapper = function (url) {\n-    const wrapper = `await import(\"${url}\");`;\n-    return URL.createObjectURL(new Blob([wrapper], {\n-      type: \"text\u002Fjavascript\"\n-    }));\n-  };\n-}\n-class PDFWorker {\n-  static #workerPorts;\n   constructor({\n     name = null,\n     port = null,\n@@ -11541,160 +17768,140 @@\n     this.name = name;\n     this.destroyed = false;\n     this.verbosity = verbosity;\n-    this._readyCapability = Promise.withResolvers();\n-    this._port = null;\n-    this._webWorker = null;\n-    this._messageHandler = null;\n     if (port) {\n-      if (PDFWorker.#workerPorts?.has(port)) {\n+      if (PDFWorker.#workerPorts.has(port)) {\n         throw new Error(\"Cannot use more than one PDFWorker per port.\");\n       }\n-      (PDFWorker.#workerPorts ||= new WeakMap()).set(port, this);\n-      this._initializeFromPort(port);\n-      return;\n+      PDFWorker.#workerPorts.set(port, this);\n+      this.#initializeFromPort(port);\n+    } else {\n+      this.#initialize();\n     }\n-    this._initialize();\n   }\n   get promise() {\n-    if (isNodeJS) {\n-      return Promise.all([NodePackages.promise, this._readyCapability.promise]);\n-    }\n-    return this._readyCapability.promise;\n+    return this.#capability.promise;\n+  }\n+  #resolve() {\n+    this.#capability.resolve();\n+    this.#messageHandler.send(\"configure\", {\n+      verbosity: this.verbosity\n+    });\n   }\n   get port() {\n-    return this._port;\n+    return this.#port;\n   }\n   get messageHandler() {\n-    return this._messageHandler;\n-  }\n-  _initializeFromPort(port) {\n-    this._port = port;\n-    this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n-    this._messageHandler.on(\"ready\", function () {});\n-    this._readyCapability.resolve();\n-    this._messageHandler.send(\"configure\", {\n-      verbosity: this.verbosity\n-    });\n+    return this.#messageHandler;\n   }\n-  _initialize() {\n-    if (!PDFWorkerUtil.isWorkerDisabled && !PDFWorker.#mainThreadWorkerMessageHandler) {\n-      let {\n-        workerSrc\n-      } = PDFWorker;\n-      try {\n-        if (!PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)) {\n-          workerSrc = PDFWorkerUtil.createCDNWrapper(new URL(workerSrc, window.location).href);\n-        }\n-        const worker = new Worker(workerSrc, {\n-          type: \"module\"\n-        });\n-        const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n-        const terminateEarly = () => {\n-          worker.removeEventListener(\"error\", onWorkerError);\n-          messageHandler.destroy();\n-          worker.terminate();\n-          if (this.destroyed) {\n-            this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n-          } else {\n-            this._setupFakeWorker();\n-          }\n-        };\n-        const onWorkerError = () => {\n-          if (!this._webWorker) {\n-            terminateEarly();\n-          }\n-        };\n-        worker.addEventListener(\"error\", onWorkerError);\n-        messageHandler.on(\"test\", data => {\n-          worker.removeEventListener(\"error\", onWorkerError);\n-          if (this.destroyed) {\n-            terminateEarly();\n-            return;\n-          }\n-          if (data) {\n-            this._messageHandler = messageHandler;\n-            this._port = worker;\n-            this._webWorker = worker;\n-            this._readyCapability.resolve();\n-            messageHandler.send(\"configure\", {\n-              verbosity: this.verbosity\n-            });\n-          } else {\n-            this._setupFakeWorker();\n-            messageHandler.destroy();\n-            worker.terminate();\n-          }\n-        });\n-        messageHandler.on(\"ready\", data => {\n-          worker.removeEventListener(\"error\", onWorkerError);\n-          if (this.destroyed) {\n-            terminateEarly();\n-            return;\n-          }\n-          try {\n-            sendTest();\n-          } catch {\n-            this._setupFakeWorker();\n-          }\n-        });\n-        const sendTest = () => {\n-          const testObj = new Uint8Array();\n-          messageHandler.send(\"test\", testObj, [testObj.buffer]);\n-        };\n-        sendTest();\n-        return;\n-      } catch {\n-        info(\"The worker has been disabled.\");\n+  #initializeFromPort(port) {\n+    this.#port = port;\n+    this.#messageHandler = new MessageHandler(\"main\", \"worker\", port);\n+    this.#messageHandler.on(\"ready\", () => {});\n+    this.#resolve();\n+  }\n+  #initialize() {\n+    if (PDFWorker.#isWorkerDisabled || PDFWorker.#mainThreadWorkerMessageHandler) {\n+      this.#setupFakeWorker();\n+      return;\n+    }\n+    let {\n+      workerSrc\n+    } = PDFWorker;\n+    try {\n+      if (!PDFWorker._isSameOrigin(window.location, workerSrc)) {\n+        workerSrc = PDFWorker._createCDNWrapper(new URL(workerSrc, window.location).href);\n       }\n+      const worker = new Worker(workerSrc, {\n+        type: \"module\"\n+      });\n+      const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n+      const terminateEarly = () => {\n+        ac.abort();\n+        messageHandler.destroy();\n+        worker.terminate();\n+        if (this.destroyed) {\n+          this.#capability.reject(new Error(\"Worker was destroyed\"));\n+        } else {\n+          this.#setupFakeWorker();\n+        }\n+      };\n+      const ac = new AbortController();\n+      worker.addEventListener(\"error\", () => {\n+        if (!this.#webWorker) {\n+          terminateEarly();\n+        }\n+      }, {\n+        signal: ac.signal\n+      });\n+      messageHandler.on(\"test\", data => {\n+        ac.abort();\n+        if (this.destroyed || !data) {\n+          terminateEarly();\n+          return;\n+        }\n+        this.#messageHandler = messageHandler;\n+        this.#port = worker;\n+        this.#webWorker = worker;\n+        this.#resolve();\n+      });\n+      messageHandler.on(\"ready\", data => {\n+        ac.abort();\n+        if (this.destroyed) {\n+          terminateEarly();\n+          return;\n+        }\n+        try {\n+          sendTest();\n+        } catch {\n+          this.#setupFakeWorker();\n+        }\n+      });\n+      const sendTest = () => {\n+        const testObj = new Uint8Array();\n+        messageHandler.send(\"test\", testObj, [testObj.buffer]);\n+      };\n+      sendTest();\n+      return;\n+    } catch {\n+      info(\"The worker has been disabled.\");\n     }\n-    this._setupFakeWorker();\n+    this.#setupFakeWorker();\n   }\n-  _setupFakeWorker() {\n-    if (!PDFWorkerUtil.isWorkerDisabled) {\n+  #setupFakeWorker() {\n+    if (!PDFWorker.#isWorkerDisabled) {\n       warn(\"Setting up fake worker.\");\n-      PDFWorkerUtil.isWorkerDisabled = true;\n+      PDFWorker.#isWorkerDisabled = true;\n     }\n     PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => {\n       if (this.destroyed) {\n-        this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n+        this.#capability.reject(new Error(\"Worker was destroyed\"));\n         return;\n       }\n       const port = new LoopbackPort();\n-      this._port = port;\n-      const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;\n+      this.#port = port;\n+      const id = `fake${PDFWorker.#fakeWorkerId++}`;\n       const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n       WorkerMessageHandler.setup(workerHandler, port);\n-      const messageHandler = new MessageHandler(id, id + \"_worker\", port);\n-      this._messageHandler = messageHandler;\n-      this._readyCapability.resolve();\n-      messageHandler.send(\"configure\", {\n-        verbosity: this.verbosity\n-      });\n+      this.#messageHandler = new MessageHandler(id, id + \"_worker\", port);\n+      this.#resolve();\n     }).catch(reason => {\n-      this._readyCapability.reject(new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n+      this.#capability.reject(new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n     });\n   }\n   destroy() {\n     this.destroyed = true;\n-    if (this._webWorker) {\n-      this._webWorker.terminate();\n-      this._webWorker = null;\n-    }\n-    PDFWorker.#workerPorts?.delete(this._port);\n-    this._port = null;\n-    if (this._messageHandler) {\n-      this._messageHandler.destroy();\n-      this._messageHandler = null;\n-    }\n-  }\n-  static fromPort(params) {\n-    if (!params?.port) {\n-      throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n-    }\n-    const cachedPort = this.#workerPorts?.get(params.port);\n+    this.#webWorker?.terminate();\n+    this.#webWorker = null;\n+    PDFWorker.#workerPorts.delete(this.#port);\n+    this.#port = null;\n+    this.#messageHandler?.destroy();\n+    this.#messageHandler = null;\n+  }\n+  static create(params) {\n+    const cachedPort = this.#workerPorts.get(params?.port);\n     if (cachedPort) {\n       if (cachedPort._pendingDestroy) {\n-        throw new Error(\"PDFWorker.fromPort - the worker is being destroyed.\\n\" + \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\");\n+        throw new Error(\"PDFWorker.create - the worker is being destroyed.\\n\" + \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\");\n       }\n       return cachedPort;\n     }\n@@ -11718,7 +17925,10 @@\n       if (this.#mainThreadWorkerMessageHandler) {\n         return this.#mainThreadWorkerMessageHandler;\n       }\n-      const worker = await import( \u002F*webpackIgnore: true*\u002Fthis.workerSrc);\n+      const worker = await import(\n+      \u002F*webpackIgnore: true*\u002F\n+      \u002F*@vite-ignore*\u002F\n+      this.workerSrc);\n       return worker.WorkerMessageHandler;\n     };\n     return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n@@ -11744,6 +17954,7 @@\n     this.filterFactory = factory.filterFactory;\n     this.cMapReaderFactory = factory.cMapReaderFactory;\n     this.standardFontDataFactory = factory.standardFontDataFactory;\n+    this.wasmFactory = factory.wasmFactory;\n     this.destroyed = false;\n     this.destroyCapability = null;\n     this._networkStream = networkStream;\n@@ -11764,7 +17975,7 @@\n   get annotationStorage() {\n     return shadow(this, \"annotationStorage\", new AnnotationStorage());\n   }\n-  getRenderingIntent(intent, annotationMode = AnnotationMode.ENABLE, printAnnotationStorage = null, isOpList = false) {\n+  getRenderingIntent(intent, annotationMode = AnnotationMode.ENABLE, printAnnotationStorage = null, isEditing = false, isOpList = false) {\n     let renderingIntent = RenderingIntentFlag.DISPLAY;\n     let annotationStorageSerializable = SerializableEmpty;\n     switch (intent) {\n@@ -11779,6 +17990,7 @@\n       default:\n         warn(`getRenderingIntent - invalid intent: ${intent}`);\n     }\n+    const annotationStorage = renderingIntent & RenderingIntentFlag.PRINT && printAnnotationStorage instanceof PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage;\n     switch (annotationMode) {\n       case AnnotationMode.DISABLE:\n         renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\n@@ -11790,19 +18002,27 @@\n         break;\n       case AnnotationMode.ENABLE_STORAGE:\n         renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\n-        const annotationStorage = renderingIntent & RenderingIntentFlag.PRINT && printAnnotationStorage instanceof PrintAnnotationStorage ? printAnnotationStorage : this.annotationStorage;\n         annotationStorageSerializable = annotationStorage.serializable;\n         break;\n       default:\n         warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n     }\n+    if (isEditing) {\n+      renderingIntent += RenderingIntentFlag.IS_EDITING;\n+    }\n     if (isOpList) {\n       renderingIntent += RenderingIntentFlag.OPLIST;\n     }\n+    const {\n+      ids: modifiedIds,\n+      hash: modifiedIdsHash\n+    } = annotationStorage.modifiedIds;\n+    const cacheKeyBuf = [renderingIntent, annotationStorageSerializable.hash, modifiedIdsHash];\n     return {\n       renderingIntent,\n-      cacheKey: `${renderingIntent}_${annotationStorageSerializable.hash}`,\n-      annotationStorageSerializable\n+      cacheKey: cacheKeyBuf.join(\"_\"),\n+      annotationStorageSerializable,\n+      modifiedIds\n     };\n   }\n   destroy() {\n@@ -11831,10 +18051,8 @@\n       this.filterFactory.destroy();\n       TextLayer.cleanup();\n       this._networkStream?.cancelAllRequests(new AbortException(\"Worker was terminated.\"));\n-      if (this.messageHandler) {\n-        this.messageHandler.destroy();\n-        this.messageHandler = null;\n-      }\n+      this.messageHandler?.destroy();\n+      this.messageHandler = null;\n       this.destroyCapability.resolve();\n     }, this.destroyCapability.reject);\n     return this.destroyCapability.promise;\n@@ -11878,28 +18096,29 @@\n         });\n       };\n     });\n-    messageHandler.on(\"ReaderHeadersReady\", data => {\n-      const headersCapability = Promise.withResolvers();\n-      const fullReader = this._fullReader;\n-      fullReader.headersReady.then(() => {\n-        if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {\n-          if (this._lastProgress) {\n-            loadingTask.onProgress?.(this._lastProgress);\n-          }\n-          fullReader.onProgress = evt => {\n-            loadingTask.onProgress?.({\n-              loaded: evt.loaded,\n-              total: evt.total\n-            });\n-          };\n-        }\n-        headersCapability.resolve({\n-          isStreamingSupported: fullReader.isStreamingSupported,\n-          isRangeSupported: fullReader.isRangeSupported,\n-          contentLength: fullReader.contentLength\n-        });\n-      }, headersCapability.reject);\n-      return headersCapability.promise;\n+    messageHandler.on(\"ReaderHeadersReady\", async data => {\n+      await this._fullReader.headersReady;\n+      const {\n+        isStreamingSupported,\n+        isRangeSupported,\n+        contentLength\n+      } = this._fullReader;\n+      if (!isStreamingSupported || !isRangeSupported) {\n+        if (this._lastProgress) {\n+          loadingTask.onProgress?.(this._lastProgress);\n+        }\n+        this._fullReader.onProgress = evt => {\n+          loadingTask.onProgress?.({\n+            loaded: evt.loaded,\n+            total: evt.total\n+          });\n+        };\n+      }\n+      return {\n+        isStreamingSupported,\n+        isRangeSupported,\n+        contentLength\n+      };\n     });\n     messageHandler.on(\"GetRangeReader\", (data, sink) => {\n       assert(this._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n@@ -11941,32 +18160,15 @@\n       delete pdfInfo.htmlForXfa;\n       loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n     });\n-    messageHandler.on(\"DocException\", function (ex) {\n-      let reason;\n-      switch (ex.name) {\n-        case \"PasswordException\":\n-          reason = new PasswordException(ex.message, ex.code);\n-          break;\n-        case \"InvalidPDFException\":\n-          reason = new InvalidPDFException(ex.message);\n-          break;\n-        case \"MissingPDFException\":\n-          reason = new MissingPDFException(ex.message);\n-          break;\n-        case \"UnexpectedResponseException\":\n-          reason = new UnexpectedResponseException(ex.message, ex.status);\n-          break;\n-        case \"UnknownErrorException\":\n-          reason = new UnknownErrorException(ex.message, ex.details);\n-          break;\n-        default:\n-          unreachable(\"DocException - expected a valid Error.\");\n-      }\n-      loadingTask._capability.reject(reason);\n+    messageHandler.on(\"DocException\", ex => {\n+      loadingTask._capability.reject(wrapReason(ex));\n     });\n-    messageHandler.on(\"PasswordRequest\", exception => {\n+    messageHandler.on(\"PasswordRequest\", ex => {\n       this.#passwordCapability = Promise.withResolvers();\n-      if (loadingTask.onPassword) {\n+      try {\n+        if (!loadingTask.onPassword) {\n+          throw wrapReason(ex);\n+        }\n         const updatePassword = password => {\n           if (password instanceof Error) {\n             this.#passwordCapability.reject(password);\n@@ -11976,13 +18178,9 @@\n             });\n           }\n         };\n-        try {\n-          loadingTask.onPassword(updatePassword, exception.code);\n-        } catch (ex) {\n-          this.#passwordCapability.reject(ex);\n-        }\n-      } else {\n-        this.#passwordCapability.reject(new PasswordException(exception.message, exception.code));\n+        loadingTask.onPassword(updatePassword, ex.code);\n+      } catch (err) {\n+        this.#passwordCapability.reject(err);\n       }\n       return this.#passwordCapability.promise;\n     });\n@@ -12009,26 +18207,18 @@\n       }\n       switch (type) {\n         case \"Font\":\n-          const {\n-            disableFontFace,\n-            fontExtraProperties,\n-            pdfBug\n-          } = this._params;\n           if (\"error\" in exportedData) {\n             const exportedError = exportedData.error;\n             warn(`Error during font loading: ${exportedError}`);\n             this.commonObjs.resolve(id, exportedError);\n             break;\n           }\n-          const inspectFont = pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null;\n-          const font = new FontFaceObject(exportedData, {\n-            disableFontFace,\n-            inspectFont\n-          });\n+          const inspectFont = this._params.pdfBug && globalThis.FontInspector?.enabled ? (font, url) => globalThis.FontInspector.fontAdded(font, url) : null;\n+          const font = new FontFaceObject(exportedData, inspectFont);\n           this.fontLoader.bind(font).catch(() => messageHandler.sendWithPromise(\"FontFallback\", {\n             id\n           })).finally(() => {\n-            if (!fontExtraProperties && font.data) {\n+            if (!font.fontExtraProperties && font.data) {\n               font.data = null;\n             }\n             this.commonObjs.resolve(id, font);\n@@ -12076,11 +18266,6 @@\n       }\n       switch (type) {\n         case \"Image\":\n-          pageProxy.objs.resolve(id, imageData);\n-          if (imageData?.dataLen > MAX_IMAGE_SIZE_TO_CACHE) {\n-            pageProxy._maybeCleanupAfterRender = true;\n-          }\n-          break;\n         case \"Pattern\":\n           pageProxy.objs.resolve(id, imageData);\n           break;\n@@ -12097,23 +18282,15 @@\n         total: data.total\n       });\n     });\n-    messageHandler.on(\"FetchBuiltInCMap\", data => {\n+    messageHandler.on(\"FetchBinaryData\", async data => {\n       if (this.destroyed) {\n-        return Promise.reject(new Error(\"Worker was destroyed.\"));\n+        throw new Error(\"Worker was destroyed.\");\n       }\n-      if (!this.cMapReaderFactory) {\n-        return Promise.reject(new Error(\"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\"));\n+      const factory = this[data.type];\n+      if (!factory) {\n+        throw new Error(`${data.type} not initialized, see the \\`useWorkerFetch\\` parameter.`);\n       }\n-      return this.cMapReaderFactory.fetch(data);\n-    });\n-    messageHandler.on(\"FetchStandardFontData\", data => {\n-      if (this.destroyed) {\n-        return Promise.reject(new Error(\"Worker was destroyed.\"));\n-      }\n-      if (!this.standardFontDataFactory) {\n-        return Promise.reject(new Error(\"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\"));\n-      }\n-      return this.standardFontDataFactory.fetch(data);\n+      return factory.fetch(data);\n     });\n   }\n   getData() {\n@@ -12281,62 +18458,12 @@\n     return this.#pageRefCache.get(refStr) ?? null;\n   }\n }\n-const INITIAL_DATA = Symbol(\"INITIAL_DATA\");\n-class PDFObjects {\n-  #objs = Object.create(null);\n-  #ensureObj(objId) {\n-    return this.#objs[objId] ||= {\n-      ...Promise.withResolvers(),\n-      data: INITIAL_DATA\n-    };\n-  }\n-  get(objId, callback = null) {\n-    if (callback) {\n-      const obj = this.#ensureObj(objId);\n-      obj.promise.then(() => callback(obj.data));\n-      return null;\n-    }\n-    const obj = this.#objs[objId];\n-    if (!obj || obj.data === INITIAL_DATA) {\n-      throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n-    }\n-    return obj.data;\n-  }\n-  has(objId) {\n-    const obj = this.#objs[objId];\n-    return !!obj && obj.data !== INITIAL_DATA;\n-  }\n-  resolve(objId, data = null) {\n-    const obj = this.#ensureObj(objId);\n-    obj.data = data;\n-    obj.resolve();\n-  }\n-  clear() {\n-    for (const objId in this.#objs) {\n-      const {\n-        data\n-      } = this.#objs[objId];\n-      data?.bitmap?.close();\n-    }\n-    this.#objs = Object.create(null);\n-  }\n-  *[Symbol.iterator]() {\n-    for (const objId in this.#objs) {\n-      const {\n-        data\n-      } = this.#objs[objId];\n-      if (data === INITIAL_DATA) {\n-        continue;\n-      }\n-      yield [objId, data];\n-    }\n-  }\n-}\n class RenderTask {\n   #internalRenderTask = null;\n+  onContinue = null;\n+  onError = null;\n   constructor(internalRenderTask) {\n     this.#internalRenderTask = internalRenderTask;\n-    this.onContinue = null;\n   }\n   get promise() {\n     return this.#internalRenderTask.capability.promise;\n@@ -12358,6 +18485,7 @@\n   }\n }\n class InternalRenderTask {\n+  #rAF = null;\n   static #canvasInUse = new WeakSet();\n   constructor({\n     callback,\n@@ -12442,8 +18570,14 @@\n     this.running = false;\n     this.cancelled = true;\n     this.gfx?.endDrawing();\n+    if (this.#rAF) {\n+      window.cancelAnimationFrame(this.#rAF);\n+      this.#rAF = null;\n+    }\n     InternalRenderTask.#canvasInUse.delete(this._canvas);\n-    this.callback(error || new RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, extraDelay));\n+    error ||= new RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, extraDelay);\n+    this.callback(error);\n+    this.task.onError?.(error);\n   }\n   operatorListChanged() {\n     if (!this.graphicsReady) {\n@@ -12469,7 +18603,8 @@\n   }\n   _scheduleNext() {\n     if (this._useRequestAnimationFrame) {\n-      window.requestAnimationFrame(() => {\n+      this.#rAF = window.requestAnimationFrame(() => {\n+        this.#rAF = null;\n         this._nextBound().catch(this._cancelBound);\n       });\n     } else {\n@@ -12491,10 +18626,14 @@\n     }\n   }\n }\n-const version = \"4.3.136\";\n-const build = \"0cec64437\";\n+const version = \"5.3.31\";\n+const build = \"47ad820d9\";\n+\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.flat-map.js\n+var es_iterator_flat_map = __webpack_require__(531);\n+;\u002F\u002F .\u002Fsrc\u002Fshared\u002Fscripting_utils.js\n+\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fshared\u002Fscripting_utils.js\n function makeColorComp(n) {\n   return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, \"0\");\n }\n@@ -12553,7 +18692,42 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Fxfa_layer.js\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Fsvg_factory.js\n+\n+\n+class BaseSVGFactory {\n+  create(width, height, skipDimensions = false) {\n+    if (width \u003C= 0 || height \u003C= 0) {\n+      throw new Error(\"Invalid SVG dimensions\");\n+    }\n+    const svg = this._createSVG(\"svg:svg\");\n+    svg.setAttribute(\"version\", \"1.1\");\n+    if (!skipDimensions) {\n+      svg.setAttribute(\"width\", `${width}px`);\n+      svg.setAttribute(\"height\", `${height}px`);\n+    }\n+    svg.setAttribute(\"preserveAspectRatio\", \"none\");\n+    svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n+    return svg;\n+  }\n+  createElement(type) {\n+    if (typeof type !== \"string\") {\n+      throw new Error(\"Invalid SVG element type\");\n+    }\n+    return this._createSVG(type);\n+  }\n+  _createSVG(type) {\n+    unreachable(\"Abstract method `_createSVG` called.\");\n+  }\n+}\n+class DOMSVGFactory extends BaseSVGFactory {\n+  _createSVG(type) {\n+    return document.createElementNS(SVG_NS, type);\n+  }\n+}\n+\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Fxfa_layer.js\n+\n \n class XfaLayer {\n   static setupStorage(html, id, element, storage, intent) {\n@@ -12764,7 +18938,19 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Fannotation_layer.js\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Fannotation_layer.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n \n@@ -12773,12 +18959,6 @@\n const DEFAULT_TAB_INDEX = 1000;\n const annotation_layer_DEFAULT_FONT_SIZE = 9;\n const GetElementsByNameSet = new WeakSet();\n-function getRectDims(rect) {\n-  return {\n-    width: rect[2] - rect[0],\n-    height: rect[3] - rect[1]\n-  };\n-}\n class AnnotationElementFactory {\n   static create(parameters) {\n     const subtype = parameters.data.annotationType;\n@@ -12876,6 +19056,9 @@\n   }) {\n     return !!(titleObj?.str || contentsObj?.str || richText?.str);\n   }\n+  get _isEditable() {\n+    return this.data.isEditable;\n+  }\n   get hasPopupData() {\n     return AnnotationElement._hasPopupData(this.data);\n   }\n@@ -12923,15 +19106,11 @@\n       }\n     } = this;\n     currentRect?.splice(0, 4, ...rect);\n-    const {\n-      width,\n-      height\n-    } = getRectDims(rect);\n     style.left = `${100 * (rect[0] - pageX) \u002F pageWidth}%`;\n     style.top = `${100 * (pageHeight - rect[3] + pageY) \u002F pageHeight}%`;\n     if (rotation === 0) {\n-      style.width = `${100 * width \u002F pageWidth}%`;\n-      style.height = `${100 * height \u002F pageHeight}%`;\n+      style.width = `${100 * (rect[2] - rect[0]) \u002F pageWidth}%`;\n+      style.height = `${100 * (rect[3] - rect[1]) \u002F pageHeight}%`;\n     } else {\n       this.setRotation(rotation);\n     }\n@@ -12953,9 +19132,6 @@\n       style\n     } = container;\n     style.zIndex = this.parent.zIndex++;\n-    if (data.popupRef) {\n-      container.setAttribute(\"aria-haspopup\", \"dialog\");\n-    }\n     if (data.alternativeText) {\n       container.title = data.alternativeText;\n     }\n@@ -12974,16 +19150,16 @@\n     const {\n       width,\n       height\n-    } = getRectDims(data.rect);\n+    } = this;\n     if (!ignoreBorder && data.borderStyle.width > 0) {\n       style.borderWidth = `${data.borderStyle.width}px`;\n       const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n       const verticalRadius = data.borderStyle.verticalCornerRadius;\n       if (horizontalRadius > 0 || verticalRadius > 0) {\n-        const radius = `calc(${horizontalRadius}px * var(--scale-factor)) \u002F calc(${verticalRadius}px * var(--scale-factor))`;\n+        const radius = `calc(${horizontalRadius}px * var(--total-scale-factor)) \u002F calc(${verticalRadius}px * var(--total-scale-factor))`;\n         style.borderRadius = radius;\n       } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n-        const radius = `calc(${width}px * var(--scale-factor)) \u002F calc(${height}px * var(--scale-factor))`;\n+        const radius = `calc(${width}px * var(--total-scale-factor)) \u002F calc(${height}px * var(--total-scale-factor))`;\n         style.borderRadius = radius;\n       }\n       switch (data.borderStyle.style) {\n@@ -13041,20 +19217,15 @@\n       pageWidth,\n       pageHeight\n     } = this.parent.viewport.rawDims;\n-    const {\n+    let {\n       width,\n       height\n-    } = getRectDims(this.data.rect);\n-    let elementWidth, elementHeight;\n-    if (angle % 180 === 0) {\n-      elementWidth = 100 * width \u002F pageWidth;\n-      elementHeight = 100 * height \u002F pageHeight;\n-    } else {\n-      elementWidth = 100 * height \u002F pageWidth;\n-      elementHeight = 100 * width \u002F pageHeight;\n+    } = this;\n+    if (angle % 180 !== 0) {\n+      [width, height] = [height, width];\n     }\n-    container.style.width = `${elementWidth}%`;\n-    container.style.height = `${elementHeight}%`;\n+    container.style.width = `${100 * width \u002F pageWidth}%`;\n+    container.style.height = `${100 * height \u002F pageHeight}%`;\n     container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n   }\n   get _commonActions() {\n@@ -13175,15 +19346,9 @@\n     if (!quadPoints) {\n       return;\n     }\n-    const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect;\n-    if (quadPoints.length === 1) {\n-      const [, {\n-        x: trX,\n-        y: trY\n-      }, {\n-        x: blX,\n-        y: blY\n-      }] = quadPoints[0];\n+    const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect.map(x => Math.fround(x));\n+    if (quadPoints.length === 8) {\n+      const [trX, trY, blX, blY] = quadPoints.subarray(2, 6);\n       if (rectTrX === trX && rectTrY === trY && rectBlX === blX && rectBlY === blY) {\n         return;\n       }\n@@ -13217,13 +19382,11 @@\n     clipPath.setAttribute(\"id\", id);\n     clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n     defs.append(clipPath);\n-    for (const [, {\n-      x: trX,\n-      y: trY\n-    }, {\n-      x: blX,\n-      y: blY\n-    }] of quadPoints) {\n+    for (let i = 2, ii = quadPoints.length; i \u003C ii; i += 8) {\n+      const trX = quadPoints[i];\n+      const trY = quadPoints[i + 1];\n+      const blX = quadPoints[i + 2];\n+      const blY = quadPoints[i + 3];\n       const rect = svgFactory.createElement(\"rect\");\n       const x = (blX - rectBlX) \u002F width;\n       const y = (rectTrY - trY) \u002F height;\n@@ -13245,10 +19408,8 @@\n   }\n   _createPopup() {\n     const {\n-      container,\n       data\n     } = this;\n-    container.setAttribute(\"aria-haspopup\", \"dialog\");\n     const popup = this.#popupElement = new PopupAnnotationElement({\n       data: {\n         color: data.color,\n@@ -13344,9 +19505,6 @@\n       triggers.classList.add(\"highlightArea\");\n     }\n   }\n-  get _isEditable() {\n-    return false;\n-  }\n   _editOnDoubleClick() {\n     if (!this._isEditable) {\n       return;\n@@ -13365,6 +19523,12 @@\n       });\n     });\n   }\n+  get width() {\n+    return this.data.rect[2] - this.data.rect[0];\n+  }\n+  get height() {\n+    return this.data.rect[3] - this.data.rect[1];\n+  }\n }\n class LinkAnnotationElement extends AnnotationElement {\n   constructor(parameters, options = null) {\n@@ -13703,7 +19867,7 @@\n       const height = Math.abs(this.data.rect[3] - this.data.rect[1] - BORDER_SIZE);\n       computedFontSize = Math.min(fontSize, roundToOneDecimal(height \u002F LINE_FACTOR));\n     }\n-    style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`;\n+    style.fontSize = `calc(${computedFontSize}px * var(--total-scale-factor))`;\n     style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n     if (this.data.textAlignment !== null) {\n       style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n@@ -13771,7 +19935,7 @@\n         }\n       } else {\n         element = document.createElement(\"input\");\n-        element.type = \"text\";\n+        element.type = this.data.password ? \"password\" : \"text\";\n         element.setAttribute(\"value\", fieldFormattedValues ?? textContent);\n         if (this.data.doNotScroll) {\n           element.style.overflowX = \"hidden\";\n@@ -14018,7 +20182,7 @@\n         const fieldWidth = this.data.rect[2] - this.data.rect[0];\n         const combWidth = fieldWidth \u002F maxLen;\n         element.classList.add(\"comb\");\n-        element.style.letterSpacing = `calc(${combWidth}px * var(--scale-factor) - 1ch)`;\n+        element.style.letterSpacing = `calc(${combWidth}px * var(--total-scale-factor) - 1ch)`;\n       }\n     } else {\n       element = document.createElement(\"div\");\n@@ -14471,6 +20635,7 @@\n     const elementIds = [];\n     for (const element of this.elements) {\n       element.popup = popup;\n+      element.container.ariaHasPopup = \"dialog\";\n       elementIds.push(element.data.id);\n       element.addHighlightArea();\n     }\n@@ -14544,12 +20709,7 @@\n     popup.className = \"popup\";\n     if (this.#color) {\n       const baseColor = popup.style.outlineColor = Util.makeHexColor(...this.#color);\n-      if (CSS.supports(\"background-color\", \"color-mix(in srgb, red 30%, white)\")) {\n-        popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n-      } else {\n-        const BACKGROUND_ENLIGHT = 0.7;\n-        popup.style.backgroundColor = Util.makeHexColor(...this.#color.map(c => Math.floor(BACKGROUND_ENLIGHT * (255 - c) + c)));\n-      }\n+      popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n     }\n     const header = document.createElement(\"span\");\n     header.className = \"header\";\n@@ -14563,10 +20723,9 @@\n     if (this.#dateObj) {\n       const modificationDate = document.createElement(\"span\");\n       modificationDate.classList.add(\"popupDate\");\n-      modificationDate.setAttribute(\"data-l10n-id\", \"pdfjs-annotation-date-string\");\n+      modificationDate.setAttribute(\"data-l10n-id\", \"pdfjs-annotation-date-time-string\");\n       modificationDate.setAttribute(\"data-l10n-args\", JSON.stringify({\n-        date: this.#dateObj.toLocaleDateString(),\n-        time: this.#dateObj.toLocaleTimeString()\n+        dateObj: this.#dateObj.valueOf()\n       }));\n       header.append(modificationDate);\n     }\n@@ -14616,7 +20775,7 @@\n     const lineAttributes = {\n       style: {\n         color: this.#fontColor,\n-        fontSize: this.#fontSize ? `calc(${this.#fontSize}px * var(--scale-factor))` : \"\"\n+        fontSize: this.#fontSize ? `calc(${this.#fontSize}px * var(--total-scale-factor))` : \"\"\n       }\n     };\n     for (const line of text.split(\"\\n\")) {\n@@ -14804,9 +20963,6 @@\n     this._editOnDoubleClick();\n     return this.container;\n   }\n-  get _isEditable() {\n-    return this.data.hasOwnCanvas;\n-  }\n }\n class LineAnnotationElement extends AnnotationElement {\n   #line = null;\n@@ -14818,11 +20974,11 @@\n   }\n   render() {\n     this.container.classList.add(\"lineAnnotation\");\n-    const data = this.data;\n     const {\n+      data,\n       width,\n       height\n-    } = getRectDims(data.rect);\n+    } = this;\n     const svg = this.svgFactory.create(width, height, true);\n     const line = this.#line = this.svgFactory.createElement(\"svg:line\");\n     line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n@@ -14856,11 +21012,11 @@\n   }\n   render() {\n     this.container.classList.add(\"squareAnnotation\");\n-    const data = this.data;\n     const {\n+      data,\n       width,\n       height\n-    } = getRectDims(data.rect);\n+    } = this;\n     const svg = this.svgFactory.create(width, height, true);\n     const borderWidth = data.borderStyle.width;\n     const square = this.#square = this.svgFactory.createElement(\"svg:rect\");\n@@ -14895,11 +21051,11 @@\n   }\n   render() {\n     this.container.classList.add(\"circleAnnotation\");\n-    const data = this.data;\n     const {\n+      data,\n       width,\n       height\n-    } = getRectDims(data.rect);\n+    } = this;\n     const svg = this.svgFactory.create(width, height, true);\n     const borderWidth = data.borderStyle.width;\n     const circle = this.#circle = this.svgFactory.createElement(\"svg:ellipse\");\n@@ -14936,27 +21092,35 @@\n   }\n   render() {\n     this.container.classList.add(this.containerClassName);\n-    const data = this.data;\n     const {\n+      data: {\n+        rect,\n+        vertices,\n+        borderStyle,\n+        popupRef\n+      },\n       width,\n       height\n-    } = getRectDims(data.rect);\n+    } = this;\n+    if (!vertices) {\n+      return this.container;\n+    }\n     const svg = this.svgFactory.create(width, height, true);\n     let points = [];\n-    for (const coordinate of data.vertices) {\n-      const x = coordinate.x - data.rect[0];\n-      const y = data.rect[3] - coordinate.y;\n-      points.push(x + \",\" + y);\n+    for (let i = 0, ii = vertices.length; i \u003C ii; i += 2) {\n+      const x = vertices[i] - rect[0];\n+      const y = rect[3] - vertices[i + 1];\n+      points.push(`${x},${y}`);\n     }\n     points = points.join(\" \");\n     const polyline = this.#polyline = this.svgFactory.createElement(this.svgElementName);\n     polyline.setAttribute(\"points\", points);\n-    polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n+    polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n     polyline.setAttribute(\"stroke\", \"transparent\");\n     polyline.setAttribute(\"fill\", \"transparent\");\n     svg.append(polyline);\n     this.container.append(svg);\n-    if (!data.popupRef && this.hasPopupData) {\n+    if (!popupRef && this.hasPopupData) {\n       this._createPopup();\n     }\n     return this.container;\n@@ -14991,6 +21155,7 @@\n   }\n }\n class InkAnnotationElement extends AnnotationElement {\n+  #polylinesGroupElement = null;\n   #polylines = [];\n   constructor(parameters) {\n     super(parameters, {\n@@ -14999,38 +21164,102 @@\n     });\n     this.containerClassName = \"inkAnnotation\";\n     this.svgElementName = \"svg:polyline\";\n-    this.annotationEditorType = AnnotationEditorType.INK;\n+    this.annotationEditorType = this.data.it === \"InkHighlight\" ? AnnotationEditorType.HIGHLIGHT : AnnotationEditorType.INK;\n+  }\n+  #getTransform(rotation, rect) {\n+    switch (rotation) {\n+      case 90:\n+        return {\n+          transform: `rotate(90) translate(${-rect[0]},${rect[1]}) scale(1,-1)`,\n+          width: rect[3] - rect[1],\n+          height: rect[2] - rect[0]\n+        };\n+      case 180:\n+        return {\n+          transform: `rotate(180) translate(${-rect[2]},${rect[1]}) scale(1,-1)`,\n+          width: rect[2] - rect[0],\n+          height: rect[3] - rect[1]\n+        };\n+      case 270:\n+        return {\n+          transform: `rotate(270) translate(${-rect[2]},${rect[3]}) scale(1,-1)`,\n+          width: rect[3] - rect[1],\n+          height: rect[2] - rect[0]\n+        };\n+      default:\n+        return {\n+          transform: `translate(${-rect[0]},${rect[3]}) scale(1,-1)`,\n+          width: rect[2] - rect[0],\n+          height: rect[3] - rect[1]\n+        };\n+    }\n   }\n   render() {\n     this.container.classList.add(this.containerClassName);\n-    const data = this.data;\n     const {\n+      data: {\n+        rect,\n+        rotation,\n+        inkLists,\n+        borderStyle,\n+        popupRef\n+      }\n+    } = this;\n+    const {\n+      transform,\n       width,\n       height\n-    } = getRectDims(data.rect);\n+    } = this.#getTransform(rotation, rect);\n     const svg = this.svgFactory.create(width, height, true);\n-    for (const inkList of data.inkLists) {\n-      let points = [];\n-      for (const coordinate of inkList) {\n-        const x = coordinate.x - data.rect[0];\n-        const y = data.rect[3] - coordinate.y;\n-        points.push(`${x},${y}`);\n-      }\n-      points = points.join(\" \");\n+    const g = this.#polylinesGroupElement = this.svgFactory.createElement(\"svg:g\");\n+    svg.append(g);\n+    g.setAttribute(\"stroke-width\", borderStyle.width || 1);\n+    g.setAttribute(\"stroke-linecap\", \"round\");\n+    g.setAttribute(\"stroke-linejoin\", \"round\");\n+    g.setAttribute(\"stroke-miterlimit\", 10);\n+    g.setAttribute(\"stroke\", \"transparent\");\n+    g.setAttribute(\"fill\", \"transparent\");\n+    g.setAttribute(\"transform\", transform);\n+    for (let i = 0, ii = inkLists.length; i \u003C ii; i++) {\n       const polyline = this.svgFactory.createElement(this.svgElementName);\n       this.#polylines.push(polyline);\n-      polyline.setAttribute(\"points\", points);\n-      polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n-      polyline.setAttribute(\"stroke\", \"transparent\");\n-      polyline.setAttribute(\"fill\", \"transparent\");\n-      if (!data.popupRef && this.hasPopupData) {\n-        this._createPopup();\n-      }\n-      svg.append(polyline);\n+      polyline.setAttribute(\"points\", inkLists[i].join(\",\"));\n+      g.append(polyline);\n+    }\n+    if (!popupRef && this.hasPopupData) {\n+      this._createPopup();\n     }\n     this.container.append(svg);\n+    this._editOnDoubleClick();\n     return this.container;\n   }\n+  updateEdited(params) {\n+    super.updateEdited(params);\n+    const {\n+      thickness,\n+      points,\n+      rect\n+    } = params;\n+    const g = this.#polylinesGroupElement;\n+    if (thickness >= 0) {\n+      g.setAttribute(\"stroke-width\", thickness || 1);\n+    }\n+    if (points) {\n+      for (let i = 0, ii = this.#polylines.length; i \u003C ii; i++) {\n+        this.#polylines[i].setAttribute(\"points\", points[i].join(\",\"));\n+      }\n+    }\n+    if (rect) {\n+      const {\n+        transform,\n+        width,\n+        height\n+      } = this.#getTransform(this.data.rotation, rect);\n+      const root = g.parentElement;\n+      root.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n+      g.setAttribute(\"transform\", transform);\n+    }\n+  }\n   getElementsToTriggerPopup() {\n     return this.#polylines;\n   }\n@@ -15045,12 +21274,14 @@\n       ignoreBorder: true,\n       createQuadrilaterals: true\n     });\n+    this.annotationEditorType = AnnotationEditorType.HIGHLIGHT;\n   }\n   render() {\n     if (!this.data.popupRef && this.hasPopupData) {\n       this._createPopup();\n     }\n     this.container.classList.add(\"highlightAnnotation\");\n+    this._editOnDoubleClick();\n     return this.container;\n   }\n }\n@@ -15108,12 +21339,15 @@\n       isRenderable: true,\n       ignoreBorder: true\n     });\n+    this.annotationEditorType = AnnotationEditorType.STAMP;\n   }\n   render() {\n     this.container.classList.add(\"stampAnnotation\");\n+    this.container.setAttribute(\"role\", \"img\");\n     if (!this.data.popupRef && this.hasPopupData) {\n       this._createPopup();\n     }\n+    this._editOnDoubleClick();\n     return this.container;\n   }\n }\n@@ -15181,25 +21415,37 @@\n   #accessibilityManager = null;\n   #annotationCanvasMap = null;\n   #editableAnnotations = new Map();\n+  #structTreeLayer = null;\n   constructor({\n     div,\n     accessibilityManager,\n     annotationCanvasMap,\n     annotationEditorUIManager,\n     page,\n-    viewport\n+    viewport,\n+    structTreeLayer\n   }) {\n     this.div = div;\n     this.#accessibilityManager = accessibilityManager;\n     this.#annotationCanvasMap = annotationCanvasMap;\n+    this.#structTreeLayer = structTreeLayer || null;\n     this.page = page;\n     this.viewport = viewport;\n     this.zIndex = 0;\n     this._annotationEditorUIManager = annotationEditorUIManager;\n   }\n-  #appendElement(element, id) {\n+  hasEditableAnnotations() {\n+    return this.#editableAnnotations.size > 0;\n+  }\n+  async #appendElement(element, id) {\n     const contentElement = element.firstChild || element;\n-    contentElement.id = `${AnnotationPrefix}${id}`;\n+    const annotationId = contentElement.id = `${AnnotationPrefix}${id}`;\n+    const ariaAttributes = await this.#structTreeLayer?.getAriaAttributes(annotationId);\n+    if (ariaAttributes) {\n+      for (const [key, value] of ariaAttributes) {\n+        contentElement.setAttribute(key, value);\n+      }\n+    }\n     this.div.append(element);\n     this.#accessibilityManager?.moveElementInDOM(this.div, element, contentElement, false);\n   }\n@@ -15231,11 +21477,7 @@\n       }\n       const isPopupAnnotation = data.annotationType === AnnotationType.POPUP;\n       if (!isPopupAnnotation) {\n-        const {\n-          width,\n-          height\n-        } = getRectDims(data.rect);\n-        if (width \u003C= 0 || height \u003C= 0) {\n+        if (data.rect[2] === data.rect[0] || data.rect[3] === data.rect[1]) {\n           continue;\n         }\n       } else {\n@@ -15262,14 +21504,33 @@\n       if (data.hidden) {\n         rendered.style.visibility = \"hidden\";\n       }\n-      this.#appendElement(rendered, data.id);\n-      if (element.annotationEditorType > 0) {\n+      await this.#appendElement(rendered, data.id);\n+      if (element._isEditable) {\n         this.#editableAnnotations.set(element.data.id, element);\n         this._annotationEditorUIManager?.renderAnnotationElement(element);\n       }\n     }\n     this.#setAnnotationCanvasMap();\n   }\n+  async addLinkAnnotations(annotations, linkService) {\n+    const elementParams = {\n+      data: null,\n+      layer: this.div,\n+      linkService,\n+      svgFactory: new DOMSVGFactory(),\n+      parent: this\n+    };\n+    for (const data of annotations) {\n+      data.borderStyle ||= AnnotationLayer._defaultBorderStyle;\n+      elementParams.data = data;\n+      const element = AnnotationElementFactory.create(elementParams);\n+      if (!element.isRenderable) {\n+        continue;\n+      }\n+      const rendered = element.render();\n+      await this.#appendElement(rendered, data.id);\n+    }\n+  }\n   update({\n     viewport\n   }) {\n@@ -15304,6 +21565,16 @@\n       } else {\n         firstChild.after(canvas);\n       }\n+      const editableAnnotation = this.#editableAnnotations.get(id);\n+      if (!editableAnnotation) {\n+        continue;\n+      }\n+      if (editableAnnotation._hasNoCanvas) {\n+        this._annotationEditorUIManager?.setMissingCanvas(id, element.id, canvas);\n+        editableAnnotation._hasNoCanvas = false;\n+      } else {\n+        editableAnnotation.canvas = canvas;\n+      }\n     }\n     this.#annotationCanvasMap.clear();\n   }\n@@ -15313,25 +21584,34 @@\n   getEditableAnnotation(id) {\n     return this.#editableAnnotations.get(id);\n   }\n+  static get _defaultBorderStyle() {\n+    return shadow(this, \"_defaultBorderStyle\", Object.freeze({\n+      width: 1,\n+      rawWidth: 1,\n+      style: AnnotationBorderStyleType.SOLID,\n+      dashArray: [3],\n+      horizontalCornerRadius: 0,\n+      verticalCornerRadius: 0\n+    }));\n+  }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Feditor\u002Ffreetext.js\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Feditor\u002Ffreetext.js\n+\n+\n+\n+\n \n \n \n \n const EOL_PATTERN = \u002F\\r\\n?|\\n\u002Fg;\n class FreeTextEditor extends AnnotationEditor {\n-  #boundEditorDivBlur = this.editorDivBlur.bind(this);\n-  #boundEditorDivFocus = this.editorDivFocus.bind(this);\n-  #boundEditorDivInput = this.editorDivInput.bind(this);\n-  #boundEditorDivKeydown = this.editorDivKeydown.bind(this);\n-  #boundEditorDivPaste = this.editorDivPaste.bind(this);\n   #color;\n   #content = \"\";\n   #editorDivId = `${this.id}-editor`;\n+  #editModeAC = null;\n   #fontSize;\n-  #initialData = null;\n   static _freeTextDefaultContent = \"\";\n   static _internalPadding = 0;\n   static _defaultColor = null;\n@@ -15380,9 +21660,7 @@\n     this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n   }\n   static initialize(l10n, uiManager) {\n-    AnnotationEditor.initialize(l10n, uiManager, {\n-      strings: [\"pdfjs-free-text-default-content\"]\n-    });\n+    AnnotationEditor.initialize(l10n, uiManager);\n     const style = getComputedStyle(document.documentElement);\n     this._internalPadding = parseFloat(style.getPropertyValue(\"--freetext-padding\"));\n   }\n@@ -15414,7 +21692,7 @@\n   }\n   #updateFontSize(fontSize) {\n     const setFontsize = size => {\n-      this.editorDiv.style.fontSize = `calc(${size}px * var(--scale-factor))`;\n+      this.editorDiv.style.fontSize = `calc(${size}px * var(--total-scale-factor))`;\n       this.translate(0, -(size - this.#fontSize) * this.parentScale);\n       this.#fontSize = size;\n       this.#setEditorDimensions();\n@@ -15465,42 +21743,48 @@\n     }\n   }\n   enableEditMode() {\n-    if (this.isInEditMode()) {\n-      return;\n+    if (!super.enableEditMode()) {\n+      return false;\n     }\n-    this.parent.setEditingState(false);\n-    this.parent.updateToolbar(AnnotationEditorType.FREETEXT);\n-    super.enableEditMode();\n     this.overlayDiv.classList.remove(\"enabled\");\n     this.editorDiv.contentEditable = true;\n     this._isDraggable = false;\n     this.div.removeAttribute(\"aria-activedescendant\");\n-    this.editorDiv.addEventListener(\"keydown\", this.#boundEditorDivKeydown);\n-    this.editorDiv.addEventListener(\"focus\", this.#boundEditorDivFocus);\n-    this.editorDiv.addEventListener(\"blur\", this.#boundEditorDivBlur);\n-    this.editorDiv.addEventListener(\"input\", this.#boundEditorDivInput);\n-    this.editorDiv.addEventListener(\"paste\", this.#boundEditorDivPaste);\n+    this.#editModeAC = new AbortController();\n+    const signal = this._uiManager.combinedSignal(this.#editModeAC);\n+    this.editorDiv.addEventListener(\"keydown\", this.editorDivKeydown.bind(this), {\n+      signal\n+    });\n+    this.editorDiv.addEventListener(\"focus\", this.editorDivFocus.bind(this), {\n+      signal\n+    });\n+    this.editorDiv.addEventListener(\"blur\", this.editorDivBlur.bind(this), {\n+      signal\n+    });\n+    this.editorDiv.addEventListener(\"input\", this.editorDivInput.bind(this), {\n+      signal\n+    });\n+    this.editorDiv.addEventListener(\"paste\", this.editorDivPaste.bind(this), {\n+      signal\n+    });\n+    return true;\n   }\n   disableEditMode() {\n-    if (!this.isInEditMode()) {\n-      return;\n+    if (!super.disableEditMode()) {\n+      return false;\n     }\n-    this.parent.setEditingState(true);\n-    super.disableEditMode();\n     this.overlayDiv.classList.add(\"enabled\");\n     this.editorDiv.contentEditable = false;\n     this.div.setAttribute(\"aria-activedescendant\", this.#editorDivId);\n     this._isDraggable = true;\n-    this.editorDiv.removeEventListener(\"keydown\", this.#boundEditorDivKeydown);\n-    this.editorDiv.removeEventListener(\"focus\", this.#boundEditorDivFocus);\n-    this.editorDiv.removeEventListener(\"blur\", this.#boundEditorDivBlur);\n-    this.editorDiv.removeEventListener(\"input\", this.#boundEditorDivInput);\n-    this.editorDiv.removeEventListener(\"paste\", this.#boundEditorDivPaste);\n+    this.#editModeAC?.abort();\n+    this.#editModeAC = null;\n     this.div.focus({\n       preventScroll: true\n     });\n     this.isEditing = false;\n     this.parent.div.classList.add(\"freetextEditing\");\n+    return true;\n   }\n   focusin(event) {\n     if (!this._focusEventsAllowed) {\n@@ -15511,12 +21795,14 @@\n       this.editorDiv.focus();\n     }\n   }\n-  onceAdded() {\n+  onceAdded(focus) {\n     if (this.width) {\n       return;\n     }\n     this.enableEditMode();\n-    this.editorDiv.focus();\n+    if (focus) {\n+      this.editorDiv.focus();\n+    }\n     if (this._initialOptions?.isCentered) {\n       this.center();\n     }\n@@ -15536,8 +21822,13 @@\n   #extractText() {\n     const buffer = [];\n     this.editorDiv.normalize();\n+    let prevChild = null;\n     for (const child of this.editorDiv.childNodes) {\n+      if (prevChild?.nodeType === Node.TEXT_NODE && child.nodeName === \"BR\") {\n+        continue;\n+      }\n       buffer.push(FreeTextEditor.#getNodeContent(child));\n+      prevChild = child;\n     }\n     return buffer.join(\"\\n\");\n   }\n@@ -15609,9 +21900,6 @@\n     this.enableEditMode();\n     this.editorDiv.focus();\n   }\n-  dblclick(event) {\n-    this.enterInEditMode();\n-  }\n   keydown(event) {\n     if (event.target === this.div && event.key === \"Enter\") {\n       this.enterInEditMode();\n@@ -15638,12 +21926,15 @@\n     this.editorDiv.setAttribute(\"role\", \"textbox\");\n     this.editorDiv.setAttribute(\"aria-multiline\", true);\n   }\n+  get canChangeContent() {\n+    return true;\n+  }\n   render() {\n     if (this.div) {\n       return this.div;\n     }\n     let baseX, baseY;\n-    if (this.width) {\n+    if (this._isCopy || this.annotationElementId) {\n       baseX = this.x;\n       baseY = this.y;\n     }\n@@ -15651,26 +21942,25 @@\n     this.editorDiv = document.createElement(\"div\");\n     this.editorDiv.className = \"internal\";\n     this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n-    this.editorDiv.setAttribute(\"data-l10n-id\", \"pdfjs-free-text\");\n+    this.editorDiv.setAttribute(\"data-l10n-id\", \"pdfjs-free-text2\");\n+    this.editorDiv.setAttribute(\"data-l10n-attrs\", \"default-content\");\n     this.enableEditing();\n-    AnnotationEditor._l10nPromise.get(\"pdfjs-free-text-default-content\").then(msg => this.editorDiv?.setAttribute(\"default-content\", msg));\n     this.editorDiv.contentEditable = true;\n     const {\n       style\n     } = this.editorDiv;\n-    style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\n+    style.fontSize = `calc(${this.#fontSize}px * var(--total-scale-factor))`;\n     style.color = this.#color;\n     this.div.append(this.editorDiv);\n     this.overlayDiv = document.createElement(\"div\");\n     this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n     this.div.append(this.overlayDiv);\n-    bindEvents(this, this.div, [\"dblclick\", \"keydown\"]);\n-    if (this.width) {\n+    if (this._isCopy || this.annotationElementId) {\n       const [parentWidth, parentHeight] = this.parentDimensions;\n       if (this.annotationElementId) {\n         const {\n           position\n-        } = this.#initialData;\n+        } = this._initialData;\n         let [tx, ty] = this.getInitialTranslation();\n         [tx, ty] = this.pageTranslationToScreen(tx, ty);\n         const [pageWidth, pageHeight] = this.pageDimensions;\n@@ -15699,7 +21989,7 @@\n         }\n         this.setAt(posX * parentWidth, posY * parentHeight, tx, ty);\n       } else {\n-        this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n+        this._moveAfterPaste(baseX, baseY);\n       }\n       this.#setContent();\n       this._isDraggable = true;\n@@ -15772,7 +22062,7 @@\n     this.#content = `${bufferBefore.join(\"\\n\")}${paste}${bufferAfter.join(\"\\n\")}`;\n     this.#setContent();\n     const newRange = new Range();\n-    let beforeLength = bufferBefore.reduce((acc, line) => acc + line.length, 0);\n+    let beforeLength = Math.sumPrecise(bufferBefore.map(line => line.length));\n     for (const {\n       firstChild\n     } of this.editorDiv.childNodes) {\n@@ -15809,7 +22099,7 @@\n   get contentDiv() {\n     return this.editorDiv;\n   }\n-  static deserialize(data, parent, uiManager) {\n+  static async deserialize(data, parent, uiManager) {\n     let initialData = null;\n     if (data instanceof FreeTextAnnotationElement) {\n       const {\n@@ -15820,7 +22110,8 @@\n           },\n           rect,\n           rotation,\n-          id\n+          id,\n+          popupRef\n         },\n         textContent,\n         textPosition,\n@@ -15843,15 +22134,16 @@\n         rect: rect.slice(0),\n         rotation,\n         id,\n-        deleted: false\n+        deleted: false,\n+        popupRef\n       };\n     }\n-    const editor = super.deserialize(data, parent, uiManager);\n+    const editor = await super.deserialize(data, parent, uiManager);\n     editor.#fontSize = data.fontSize;\n     editor.#color = Util.makeHexColor(...data.color);\n     editor.#content = FreeTextEditor.#deserializeContent(data.value);\n     editor.annotationElementId = data.id || null;\n-    editor.#initialData = initialData;\n+    editor._initialData = initialData;\n     return editor;\n   }\n   serialize(isForCopying = false) {\n@@ -15859,11 +22151,7 @@\n       return null;\n     }\n     if (this.deleted) {\n-      return {\n-        pageIndex: this.pageIndex,\n-        id: this.annotationElementId,\n-        deleted: true\n-      };\n+      return this.serializeDeleted();\n     }\n     const padding = FreeTextEditor._internalPadding * this.parentScale;\n     const rect = this.getRect(padding, padding);\n@@ -15879,6 +22167,7 @@\n       structTreeParentId: this._structTreeParentId\n     };\n     if (isForCopying) {\n+      serialized.isCopy = true;\n       return serialized;\n     }\n     if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n@@ -15893,7 +22182,7 @@\n       fontSize,\n       color,\n       pageIndex\n-    } = this.#initialData;\n+    } = this._initialData;\n     return this._hasBeenMoved || serialized.value !== value || serialized.fontSize !== fontSize || serialized.color.some((c, i) => c !== color[i]) || serialized.pageIndex !== pageIndex;\n   }\n   renderAnnotationElement(annotation) {\n@@ -15904,7 +22193,7 @@\n     const {\n       style\n     } = content;\n-    style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\n+    style.fontSize = `calc(${this.#fontSize}px * var(--total-scale-factor))`;\n     style.color = this.#color;\n     content.replaceChildren();\n     for (const line of this.#content.split(\"\\n\")) {\n@@ -15925,263 +22214,92 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Feditor\u002Foutliner.js\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Feditor\u002Fdrawers\u002Foutline.js\n \n-class Outliner {\n-  #box;\n-  #verticalEdges = [];\n-  #intervals = [];\n-  constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\n-    let minX = Infinity;\n-    let maxX = -Infinity;\n-    let minY = Infinity;\n-    let maxY = -Infinity;\n-    const NUMBER_OF_DIGITS = 4;\n-    const EPSILON = 10 ** -NUMBER_OF_DIGITS;\n-    for (const {\n-      x,\n-      y,\n-      width,\n-      height\n-    } of boxes) {\n-      const x1 = Math.floor((x - borderWidth) \u002F EPSILON) * EPSILON;\n-      const x2 = Math.ceil((x + width + borderWidth) \u002F EPSILON) * EPSILON;\n-      const y1 = Math.floor((y - borderWidth) \u002F EPSILON) * EPSILON;\n-      const y2 = Math.ceil((y + height + borderWidth) \u002F EPSILON) * EPSILON;\n-      const left = [x1, y1, y2, true];\n-      const right = [x2, y1, y2, false];\n-      this.#verticalEdges.push(left, right);\n-      minX = Math.min(minX, x1);\n-      maxX = Math.max(maxX, x2);\n-      minY = Math.min(minY, y1);\n-      maxY = Math.max(maxY, y2);\n-    }\n-    const bboxWidth = maxX - minX + 2 * innerMargin;\n-    const bboxHeight = maxY - minY + 2 * innerMargin;\n-    const shiftedMinX = minX - innerMargin;\n-    const shiftedMinY = minY - innerMargin;\n-    const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2);\n-    const lastPoint = [lastEdge[0], lastEdge[2]];\n-    for (const edge of this.#verticalEdges) {\n-      const [x, y1, y2] = edge;\n-      edge[0] = (x - shiftedMinX) \u002F bboxWidth;\n-      edge[1] = (y1 - shiftedMinY) \u002F bboxHeight;\n-      edge[2] = (y2 - shiftedMinY) \u002F bboxHeight;\n-    }\n-    this.#box = {\n-      x: shiftedMinX,\n-      y: shiftedMinY,\n-      width: bboxWidth,\n-      height: bboxHeight,\n-      lastPoint\n-    };\n+\n+\n+\n+class Outline {\n+  static PRECISION = 1e-4;\n+  toSVGPath() {\n+    unreachable(\"Abstract method `toSVGPath` must be implemented.\");\n   }\n-  getOutlines() {\n-    this.#verticalEdges.sort((a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]);\n-    const outlineVerticalEdges = [];\n-    for (const edge of this.#verticalEdges) {\n-      if (edge[3]) {\n-        outlineVerticalEdges.push(...this.#breakEdge(edge));\n-        this.#insert(edge);\n-      } else {\n-        this.#remove(edge);\n-        outlineVerticalEdges.push(...this.#breakEdge(edge));\n-      }\n-    }\n-    return this.#getOutlines(outlineVerticalEdges);\n+  get box() {\n+    unreachable(\"Abstract getter `box` must be implemented.\");\n   }\n-  #getOutlines(outlineVerticalEdges) {\n-    const edges = [];\n-    const allEdges = new Set();\n-    for (const edge of outlineVerticalEdges) {\n-      const [x, y1, y2] = edge;\n-      edges.push([x, y1, edge], [x, y2, edge]);\n-    }\n-    edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]);\n-    for (let i = 0, ii = edges.length; i \u003C ii; i += 2) {\n-      const edge1 = edges[i][2];\n-      const edge2 = edges[i + 1][2];\n-      edge1.push(edge2);\n-      edge2.push(edge1);\n-      allEdges.add(edge1);\n-      allEdges.add(edge2);\n-    }\n-    const outlines = [];\n-    let outline;\n-    while (allEdges.size > 0) {\n-      const edge = allEdges.values().next().value;\n-      let [x, y1, y2, edge1, edge2] = edge;\n-      allEdges.delete(edge);\n-      let lastPointX = x;\n-      let lastPointY = y1;\n-      outline = [x, y2];\n-      outlines.push(outline);\n-      while (true) {\n-        let e;\n-        if (allEdges.has(edge1)) {\n-          e = edge1;\n-        } else if (allEdges.has(edge2)) {\n-          e = edge2;\n-        } else {\n-          break;\n-        }\n-        allEdges.delete(e);\n-        [x, y1, y2, edge1, edge2] = e;\n-        if (lastPointX !== x) {\n-          outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2);\n-          lastPointX = x;\n-        }\n-        lastPointY = lastPointY === y1 ? y2 : y1;\n-      }\n-      outline.push(lastPointX, lastPointY);\n-    }\n-    return new HighlightOutline(outlines, this.#box);\n+  serialize(_bbox, _rotation) {\n+    unreachable(\"Abstract method `serialize` must be implemented.\");\n   }\n-  #binarySearch(y) {\n-    const array = this.#intervals;\n-    let start = 0;\n-    let end = array.length - 1;\n-    while (start \u003C= end) {\n-      const middle = start + end >> 1;\n-      const y1 = array[middle][0];\n-      if (y1 === y) {\n-        return middle;\n-      }\n-      if (y1 \u003C y) {\n-        start = middle + 1;\n-      } else {\n-        end = middle - 1;\n-      }\n+  static _rescale(src, tx, ty, sx, sy, dest) {\n+    dest ||= new Float32Array(src.length);\n+    for (let i = 0, ii = src.length; i \u003C ii; i += 2) {\n+      dest[i] = tx + src[i] * sx;\n+      dest[i + 1] = ty + src[i + 1] * sy;\n     }\n-    return end + 1;\n-  }\n-  #insert([, y1, y2]) {\n-    const index = this.#binarySearch(y1);\n-    this.#intervals.splice(index, 0, [y1, y2]);\n+    return dest;\n   }\n-  #remove([, y1, y2]) {\n-    const index = this.#binarySearch(y1);\n-    for (let i = index; i \u003C this.#intervals.length; i++) {\n-      const [start, end] = this.#intervals[i];\n-      if (start !== y1) {\n-        break;\n-      }\n-      if (start === y1 && end === y2) {\n-        this.#intervals.splice(i, 1);\n-        return;\n-      }\n-    }\n-    for (let i = index - 1; i >= 0; i--) {\n-      const [start, end] = this.#intervals[i];\n-      if (start !== y1) {\n-        break;\n-      }\n-      if (start === y1 && end === y2) {\n-        this.#intervals.splice(i, 1);\n-        return;\n-      }\n+  static _rescaleAndSwap(src, tx, ty, sx, sy, dest) {\n+    dest ||= new Float32Array(src.length);\n+    for (let i = 0, ii = src.length; i \u003C ii; i += 2) {\n+      dest[i] = tx + src[i + 1] * sx;\n+      dest[i + 1] = ty + src[i] * sy;\n     }\n+    return dest;\n   }\n-  #breakEdge(edge) {\n-    const [x, y1, y2] = edge;\n-    const results = [[x, y1, y2]];\n-    const index = this.#binarySearch(y2);\n-    for (let i = 0; i \u003C index; i++) {\n-      const [start, end] = this.#intervals[i];\n-      for (let j = 0, jj = results.length; j \u003C jj; j++) {\n-        const [, y3, y4] = results[j];\n-        if (end \u003C= y3 || y4 \u003C= start) {\n-          continue;\n-        }\n-        if (y3 >= start) {\n-          if (y4 > end) {\n-            results[j][1] = end;\n-          } else {\n-            if (jj === 1) {\n-              return [];\n-            }\n-            results.splice(j, 1);\n-            j--;\n-            jj--;\n-          }\n-          continue;\n-        }\n-        results[j][2] = start;\n-        if (y4 > end) {\n-          results.push([x, end, y4]);\n-        }\n-      }\n+  static _translate(src, tx, ty, dest) {\n+    dest ||= new Float32Array(src.length);\n+    for (let i = 0, ii = src.length; i \u003C ii; i += 2) {\n+      dest[i] = tx + src[i];\n+      dest[i + 1] = ty + src[i + 1];\n     }\n-    return results;\n-  }\n-}\n-class Outline {\n-  toSVGPath() {\n-    throw new Error(\"Abstract method `toSVGPath` must be implemented.\");\n-  }\n-  get box() {\n-    throw new Error(\"Abstract getter `box` must be implemented.\");\n-  }\n-  serialize(_bbox, _rotation) {\n-    throw new Error(\"Abstract method `serialize` must be implemented.\");\n+    return dest;\n   }\n-  get free() {\n-    return this instanceof FreeHighlightOutline;\n+  static svgRound(x) {\n+    return Math.round(x * 10000);\n   }\n-}\n-class HighlightOutline extends Outline {\n-  #box;\n-  #outlines;\n-  constructor(outlines, box) {\n-    super();\n-    this.#outlines = outlines;\n-    this.#box = box;\n-  }\n-  toSVGPath() {\n-    const buffer = [];\n-    for (const polygon of this.#outlines) {\n-      let [prevX, prevY] = polygon;\n-      buffer.push(`M${prevX} ${prevY}`);\n-      for (let i = 2; i \u003C polygon.length; i += 2) {\n-        const x = polygon[i];\n-        const y = polygon[i + 1];\n-        if (x === prevX) {\n-          buffer.push(`V${y}`);\n-          prevY = y;\n-        } else if (y === prevY) {\n-          buffer.push(`H${x}`);\n-          prevX = x;\n-        }\n-      }\n-      buffer.push(\"Z\");\n+  static _normalizePoint(x, y, parentWidth, parentHeight, rotation) {\n+    switch (rotation) {\n+      case 90:\n+        return [1 - y \u002F parentWidth, x \u002F parentHeight];\n+      case 180:\n+        return [1 - x \u002F parentWidth, 1 - y \u002F parentHeight];\n+      case 270:\n+        return [y \u002F parentWidth, 1 - x \u002F parentHeight];\n+      default:\n+        return [x \u002F parentWidth, y \u002F parentHeight];\n     }\n-    return buffer.join(\" \");\n   }\n-  serialize([blX, blY, trX, trY], _rotation) {\n-    const outlines = [];\n-    const width = trX - blX;\n-    const height = trY - blY;\n-    for (const outline of this.#outlines) {\n-      const points = new Array(outline.length);\n-      for (let i = 0; i \u003C outline.length; i += 2) {\n-        points[i] = blX + outline[i] * width;\n-        points[i + 1] = trY - outline[i + 1] * height;\n-      }\n-      outlines.push(points);\n+  static _normalizePagePoint(x, y, rotation) {\n+    switch (rotation) {\n+      case 90:\n+        return [1 - y, x];\n+      case 180:\n+        return [1 - x, 1 - y];\n+      case 270:\n+        return [y, 1 - x];\n+      default:\n+        return [x, y];\n     }\n-    return outlines;\n   }\n-  get box() {\n-    return this.#box;\n+  static createBezierPoints(x1, y1, x2, y2, x3, y3) {\n+    return [(x1 + 5 * x2) \u002F 6, (y1 + 5 * y2) \u002F 6, (5 * x2 + x3) \u002F 6, (5 * y2 + y3) \u002F 6, (x2 + x3) \u002F 2, (y2 + y3) \u002F 2];\n   }\n }\n-class FreeOutliner {\n+\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Feditor\u002Fdrawers\u002Ffreedraw.js\n+\n+\n+\n+\n+\n+\n+class FreeDrawOutliner {\n   #box;\n   #bottom = [];\n   #innerMargin;\n   #isLTR;\n   #top = [];\n-  #last = new Float64Array(18);\n+  #last = new Float32Array(18);\n   #lastX;\n   #lastY;\n   #min;\n@@ -16191,7 +22309,7 @@\n   #points = [];\n   static #MIN_DIST = 8;\n   static #MIN_DIFF = 2;\n-  static #MIN = FreeOutliner.#MIN_DIST + FreeOutliner.#MIN_DIFF;\n+  static #MIN = FreeDrawOutliner.#MIN_DIST + FreeDrawOutliner.#MIN_DIFF;\n   constructor({\n     x,\n     y\n@@ -16201,14 +22319,11 @@\n     this.#isLTR = isLTR;\n     this.#last.set([NaN, NaN, NaN, NaN, x, y], 6);\n     this.#innerMargin = innerMargin;\n-    this.#min_dist = FreeOutliner.#MIN_DIST * scaleFactor;\n-    this.#min = FreeOutliner.#MIN * scaleFactor;\n+    this.#min_dist = FreeDrawOutliner.#MIN_DIST * scaleFactor;\n+    this.#min = FreeDrawOutliner.#MIN * scaleFactor;\n     this.#scaleFactor = scaleFactor;\n     this.#points.push(x, y);\n   }\n-  get free() {\n-    return true;\n-  }\n   isEmpty() {\n     return isNaN(this.#last[8]);\n   }\n@@ -16282,12 +22397,8 @@\n     }\n     const top = this.#top;\n     const bottom = this.#bottom;\n-    const lastTop = this.#last.subarray(4, 6);\n-    const lastBottom = this.#last.subarray(16, 18);\n-    const [x, y, width, height] = this.#box;\n-    const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n     if (isNaN(this.#last[6]) && !this.isEmpty()) {\n-      return `M${(this.#last[2] - x) \u002F width} ${(this.#last[3] - y) \u002F height} L${(this.#last[4] - x) \u002F width} ${(this.#last[5] - y) \u002F height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(this.#last[16] - x) \u002F width} ${(this.#last[17] - y) \u002F height} L${(this.#last[14] - x) \u002F width} ${(this.#last[15] - y) \u002F height} Z`;\n+      return this.#toSVGPathTwoPoints();\n     }\n     const buffer = [];\n     buffer.push(`M${top[4]} ${top[5]}`);\n@@ -16298,7 +22409,7 @@\n         buffer.push(`C${top[i]} ${top[i + 1]} ${top[i + 2]} ${top[i + 3]} ${top[i + 4]} ${top[i + 5]}`);\n       }\n     }\n-    buffer.push(`L${(lastTop[0] - x) \u002F width} ${(lastTop[1] - y) \u002F height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(lastBottom[0] - x) \u002F width} ${(lastBottom[1] - y) \u002F height}`);\n+    this.#toSVGPathEnd(buffer);\n     for (let i = bottom.length - 6; i >= 6; i -= 6) {\n       if (isNaN(bottom[i])) {\n         buffer.push(`L${bottom[i + 4]} ${bottom[i + 5]}`);\n@@ -16306,30 +22417,44 @@\n         buffer.push(`C${bottom[i]} ${bottom[i + 1]} ${bottom[i + 2]} ${bottom[i + 3]} ${bottom[i + 4]} ${bottom[i + 5]}`);\n       }\n     }\n-    buffer.push(`L${bottom[4]} ${bottom[5]} Z`);\n+    this.#toSVGPathStart(buffer);\n     return buffer.join(\" \");\n   }\n+  #toSVGPathTwoPoints() {\n+    const [x, y, width, height] = this.#box;\n+    const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n+    return `M${(this.#last[2] - x) \u002F width} ${(this.#last[3] - y) \u002F height} L${(this.#last[4] - x) \u002F width} ${(this.#last[5] - y) \u002F height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(this.#last[16] - x) \u002F width} ${(this.#last[17] - y) \u002F height} L${(this.#last[14] - x) \u002F width} ${(this.#last[15] - y) \u002F height} Z`;\n+  }\n+  #toSVGPathStart(buffer) {\n+    const bottom = this.#bottom;\n+    buffer.push(`L${bottom[4]} ${bottom[5]} Z`);\n+  }\n+  #toSVGPathEnd(buffer) {\n+    const [x, y, width, height] = this.#box;\n+    const lastTop = this.#last.subarray(4, 6);\n+    const lastBottom = this.#last.subarray(16, 18);\n+    const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n+    buffer.push(`L${(lastTop[0] - x) \u002F width} ${(lastTop[1] - y) \u002F height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${(lastBottom[0] - x) \u002F width} ${(lastBottom[1] - y) \u002F height}`);\n+  }\n+  newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n+    return new FreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n+  }\n   getOutlines() {\n     const top = this.#top;\n     const bottom = this.#bottom;\n     const last = this.#last;\n-    const lastTop = last.subarray(4, 6);\n-    const lastBottom = last.subarray(16, 18);\n     const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n-    const points = new Float64Array((this.#points?.length ?? 0) + 2);\n+    const points = new Float32Array((this.#points?.length ?? 0) + 2);\n     for (let i = 0, ii = points.length - 2; i \u003C ii; i += 2) {\n       points[i] = (this.#points[i] - layerX) \u002F layerWidth;\n       points[i + 1] = (this.#points[i + 1] - layerY) \u002F layerHeight;\n     }\n     points[points.length - 2] = (this.#lastX - layerX) \u002F layerWidth;\n     points[points.length - 1] = (this.#lastY - layerY) \u002F layerHeight;\n-    const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n     if (isNaN(last[6]) && !this.isEmpty()) {\n-      const outline = new Float64Array(36);\n-      outline.set([NaN, NaN, NaN, NaN, (last[2] - layerX) \u002F layerWidth, (last[3] - layerY) \u002F layerHeight, NaN, NaN, NaN, NaN, (last[4] - layerX) \u002F layerWidth, (last[5] - layerY) \u002F layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (last[16] - layerX) \u002F layerWidth, (last[17] - layerY) \u002F layerHeight, NaN, NaN, NaN, NaN, (last[14] - layerX) \u002F layerWidth, (last[15] - layerY) \u002F layerHeight], 0);\n-      return new FreeHighlightOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n+      return this.#getOutlineTwoPoints(points);\n     }\n-    const outline = new Float64Array(this.#top.length + 24 + this.#bottom.length);\n+    const outline = new Float32Array(this.#top.length + 24 + this.#bottom.length);\n     let N = top.length;\n     for (let i = 0; i \u003C N; i += 2) {\n       if (isNaN(top[i])) {\n@@ -16339,8 +22464,7 @@\n       outline[i] = top[i];\n       outline[i + 1] = top[i + 1];\n     }\n-    outline.set([NaN, NaN, NaN, NaN, (lastTop[0] - layerX) \u002F layerWidth, (lastTop[1] - layerY) \u002F layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (lastBottom[0] - layerX) \u002F layerWidth, (lastBottom[1] - layerY) \u002F layerHeight], N);\n-    N += 24;\n+    N = this.#getOutlineEnd(outline, N);\n     for (let i = bottom.length - 6; i >= 6; i -= 6) {\n       for (let j = 0; j \u003C 6; j += 2) {\n         if (isNaN(bottom[i + j])) {\n@@ -16353,13 +22477,34 @@\n         N += 2;\n       }\n     }\n-    outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], N);\n-    return new FreeHighlightOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n+    this.#getOutlineStart(outline, N);\n+    return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n+  }\n+  #getOutlineTwoPoints(points) {\n+    const last = this.#last;\n+    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n+    const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n+    const outline = new Float32Array(36);\n+    outline.set([NaN, NaN, NaN, NaN, (last[2] - layerX) \u002F layerWidth, (last[3] - layerY) \u002F layerHeight, NaN, NaN, NaN, NaN, (last[4] - layerX) \u002F layerWidth, (last[5] - layerY) \u002F layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (last[16] - layerX) \u002F layerWidth, (last[17] - layerY) \u002F layerHeight, NaN, NaN, NaN, NaN, (last[14] - layerX) \u002F layerWidth, (last[15] - layerY) \u002F layerHeight], 0);\n+    return this.newFreeDrawOutline(outline, points, this.#box, this.#scaleFactor, this.#innerMargin, this.#isLTR);\n+  }\n+  #getOutlineStart(outline, pos) {\n+    const bottom = this.#bottom;\n+    outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], pos);\n+    return pos += 6;\n+  }\n+  #getOutlineEnd(outline, pos) {\n+    const lastTop = this.#last.subarray(4, 6);\n+    const lastBottom = this.#last.subarray(16, 18);\n+    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n+    const [lastTopX, lastTopY, lastBottomX, lastBottomY] = this.#getLastCoords();\n+    outline.set([NaN, NaN, NaN, NaN, (lastTop[0] - layerX) \u002F layerWidth, (lastTop[1] - layerY) \u002F layerHeight, NaN, NaN, NaN, NaN, lastTopX, lastTopY, NaN, NaN, NaN, NaN, lastBottomX, lastBottomY, NaN, NaN, NaN, NaN, (lastBottom[0] - layerX) \u002F layerWidth, (lastBottom[1] - layerY) \u002F layerHeight], pos);\n+    return pos += 24;\n   }\n }\n-class FreeHighlightOutline extends Outline {\n+class FreeDrawOutline extends Outline {\n   #box;\n-  #bbox = null;\n+  #bbox = new Float32Array(4);\n   #innerMargin;\n   #isLTR;\n   #points;\n@@ -16373,13 +22518,9 @@\n     this.#scaleFactor = scaleFactor;\n     this.#innerMargin = innerMargin;\n     this.#isLTR = isLTR;\n+    this.lastPoint = [NaN, NaN];\n     this.#computeMinMax(isLTR);\n-    const {\n-      x,\n-      y,\n-      width,\n-      height\n-    } = this.#bbox;\n+    const [x, y, width, height] = this.#bbox;\n     for (let i = 0, ii = outline.length; i \u003C ii; i += 2) {\n       outline[i] = (outline[i] - x) \u002F width;\n       outline[i + 1] = (outline[i + 1] - y) \u002F height;\n@@ -16408,20 +22549,20 @@\n     let points;\n     switch (rotation) {\n       case 0:\n-        outline = this.#rescale(this.#outline, blX, trY, width, -height);\n-        points = this.#rescale(this.#points, blX, trY, width, -height);\n+        outline = Outline._rescale(this.#outline, blX, trY, width, -height);\n+        points = Outline._rescale(this.#points, blX, trY, width, -height);\n         break;\n       case 90:\n-        outline = this.#rescaleAndSwap(this.#outline, blX, blY, width, height);\n-        points = this.#rescaleAndSwap(this.#points, blX, blY, width, height);\n+        outline = Outline._rescaleAndSwap(this.#outline, blX, blY, width, height);\n+        points = Outline._rescaleAndSwap(this.#points, blX, blY, width, height);\n         break;\n       case 180:\n-        outline = this.#rescale(this.#outline, trX, blY, -width, height);\n-        points = this.#rescale(this.#points, trX, blY, -width, height);\n+        outline = Outline._rescale(this.#outline, trX, blY, -width, height);\n+        points = Outline._rescale(this.#points, trX, blY, -width, height);\n         break;\n       case 270:\n-        outline = this.#rescaleAndSwap(this.#outline, trX, trY, -width, -height);\n-        points = this.#rescaleAndSwap(this.#points, trX, trY, -width, -height);\n+        outline = Outline._rescaleAndSwap(this.#outline, trX, trY, -width, -height);\n+        points = Outline._rescaleAndSwap(this.#points, trX, trY, -width, -height);\n         break;\n     }\n     return {\n@@ -16429,51 +22570,29 @@\n       points: [Array.from(points)]\n     };\n   }\n-  #rescale(src, tx, ty, sx, sy) {\n-    const dest = new Float64Array(src.length);\n-    for (let i = 0, ii = src.length; i \u003C ii; i += 2) {\n-      dest[i] = tx + src[i] * sx;\n-      dest[i + 1] = ty + src[i + 1] * sy;\n-    }\n-    return dest;\n-  }\n-  #rescaleAndSwap(src, tx, ty, sx, sy) {\n-    const dest = new Float64Array(src.length);\n-    for (let i = 0, ii = src.length; i \u003C ii; i += 2) {\n-      dest[i] = tx + src[i + 1] * sx;\n-      dest[i + 1] = ty + src[i] * sy;\n-    }\n-    return dest;\n-  }\n   #computeMinMax(isLTR) {\n     const outline = this.#outline;\n     let lastX = outline[4];\n     let lastY = outline[5];\n-    let minX = lastX;\n-    let minY = lastY;\n-    let maxX = lastX;\n-    let maxY = lastY;\n+    const minMax = [lastX, lastY, lastX, lastY];\n     let lastPointX = lastX;\n     let lastPointY = lastY;\n     const ltrCallback = isLTR ? Math.max : Math.min;\n     for (let i = 6, ii = outline.length; i \u003C ii; i += 6) {\n+      const x = outline[i + 4],\n+        y = outline[i + 5];\n       if (isNaN(outline[i])) {\n-        minX = Math.min(minX, outline[i + 4]);\n-        minY = Math.min(minY, outline[i + 5]);\n-        maxX = Math.max(maxX, outline[i + 4]);\n-        maxY = Math.max(maxY, outline[i + 5]);\n-        if (lastPointY \u003C outline[i + 5]) {\n-          lastPointX = outline[i + 4];\n-          lastPointY = outline[i + 5];\n-        } else if (lastPointY === outline[i + 5]) {\n-          lastPointX = ltrCallback(lastPointX, outline[i + 4]);\n+        Util.pointBoundingBox(x, y, minMax);\n+        if (lastPointY \u003C y) {\n+          lastPointX = x;\n+          lastPointY = y;\n+        } else if (lastPointY === y) {\n+          lastPointX = ltrCallback(lastPointX, x);\n         }\n       } else {\n-        const bbox = Util.bezierBoundingBox(lastX, lastY, ...outline.slice(i, i + 6));\n-        minX = Math.min(minX, bbox[0]);\n-        minY = Math.min(minY, bbox[1]);\n-        maxX = Math.max(maxX, bbox[2]);\n-        maxY = Math.max(maxY, bbox[3]);\n+        const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n+        Util.bezierBoundingBox(lastX, lastY, ...outline.slice(i, i + 6), bbox);\n+        Util.rectBoundingBox(...bbox, minMax);\n         if (lastPointY \u003C bbox[3]) {\n           lastPointX = bbox[2];\n           lastPointY = bbox[3];\n@@ -16481,37 +22600,30 @@\n           lastPointX = ltrCallback(lastPointX, bbox[2]);\n         }\n       }\n-      lastX = outline[i + 4];\n-      lastY = outline[i + 5];\n+      lastX = x;\n+      lastY = y;\n     }\n-    const x = minX - this.#innerMargin,\n-      y = minY - this.#innerMargin,\n-      width = maxX - minX + 2 * this.#innerMargin,\n-      height = maxY - minY + 2 * this.#innerMargin;\n-    this.#bbox = {\n-      x,\n-      y,\n-      width,\n-      height,\n-      lastPoint: [lastPointX, lastPointY]\n-    };\n+    const bbox = this.#bbox;\n+    bbox[0] = minMax[0] - this.#innerMargin;\n+    bbox[1] = minMax[1] - this.#innerMargin;\n+    bbox[2] = minMax[2] - minMax[0] + 2 * this.#innerMargin;\n+    bbox[3] = minMax[3] - minMax[1] + 2 * this.#innerMargin;\n+    this.lastPoint = [lastPointX, lastPointY];\n   }\n   get box() {\n     return this.#bbox;\n   }\n+  newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n+    return new FreeDrawOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n+  }\n   getNewOutline(thickness, innerMargin) {\n-    const {\n-      x,\n-      y,\n-      width,\n-      height\n-    } = this.#bbox;\n+    const [x, y, width, height] = this.#bbox;\n     const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n     const sx = width * layerWidth;\n     const sy = height * layerHeight;\n     const tx = x * layerWidth + layerX;\n     const ty = y * layerHeight + layerY;\n-    const outliner = new FreeOutliner({\n+    const outliner = this.newOutliner({\n       x: this.#points[0] * sx + tx,\n       y: this.#points[1] * sy + ty\n     }, this.#box, this.#scaleFactor, thickness, this.#isLTR, innerMargin ?? this.#innerMargin);\n@@ -16525,13 +22637,265 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Feditor\u002Fcolor_picker.js\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Feditor\u002Fdrawers\u002Fhighlight.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+class HighlightOutliner {\n+  #box;\n+  #lastPoint;\n+  #verticalEdges = [];\n+  #intervals = [];\n+  constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\n+    const minMax = [Infinity, Infinity, -Infinity, -Infinity];\n+    const NUMBER_OF_DIGITS = 4;\n+    const EPSILON = 10 ** -NUMBER_OF_DIGITS;\n+    for (const {\n+      x,\n+      y,\n+      width,\n+      height\n+    } of boxes) {\n+      const x1 = Math.floor((x - borderWidth) \u002F EPSILON) * EPSILON;\n+      const x2 = Math.ceil((x + width + borderWidth) \u002F EPSILON) * EPSILON;\n+      const y1 = Math.floor((y - borderWidth) \u002F EPSILON) * EPSILON;\n+      const y2 = Math.ceil((y + height + borderWidth) \u002F EPSILON) * EPSILON;\n+      const left = [x1, y1, y2, true];\n+      const right = [x2, y1, y2, false];\n+      this.#verticalEdges.push(left, right);\n+      Util.rectBoundingBox(x1, y1, x2, y2, minMax);\n+    }\n+    const bboxWidth = minMax[2] - minMax[0] + 2 * innerMargin;\n+    const bboxHeight = minMax[3] - minMax[1] + 2 * innerMargin;\n+    const shiftedMinX = minMax[0] - innerMargin;\n+    const shiftedMinY = minMax[1] - innerMargin;\n+    const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2);\n+    const lastPoint = [lastEdge[0], lastEdge[2]];\n+    for (const edge of this.#verticalEdges) {\n+      const [x, y1, y2] = edge;\n+      edge[0] = (x - shiftedMinX) \u002F bboxWidth;\n+      edge[1] = (y1 - shiftedMinY) \u002F bboxHeight;\n+      edge[2] = (y2 - shiftedMinY) \u002F bboxHeight;\n+    }\n+    this.#box = new Float32Array([shiftedMinX, shiftedMinY, bboxWidth, bboxHeight]);\n+    this.#lastPoint = lastPoint;\n+  }\n+  getOutlines() {\n+    this.#verticalEdges.sort((a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]);\n+    const outlineVerticalEdges = [];\n+    for (const edge of this.#verticalEdges) {\n+      if (edge[3]) {\n+        outlineVerticalEdges.push(...this.#breakEdge(edge));\n+        this.#insert(edge);\n+      } else {\n+        this.#remove(edge);\n+        outlineVerticalEdges.push(...this.#breakEdge(edge));\n+      }\n+    }\n+    return this.#getOutlines(outlineVerticalEdges);\n+  }\n+  #getOutlines(outlineVerticalEdges) {\n+    const edges = [];\n+    const allEdges = new Set();\n+    for (const edge of outlineVerticalEdges) {\n+      const [x, y1, y2] = edge;\n+      edges.push([x, y1, edge], [x, y2, edge]);\n+    }\n+    edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]);\n+    for (let i = 0, ii = edges.length; i \u003C ii; i += 2) {\n+      const edge1 = edges[i][2];\n+      const edge2 = edges[i + 1][2];\n+      edge1.push(edge2);\n+      edge2.push(edge1);\n+      allEdges.add(edge1);\n+      allEdges.add(edge2);\n+    }\n+    const outlines = [];\n+    let outline;\n+    while (allEdges.size > 0) {\n+      const edge = allEdges.values().next().value;\n+      let [x, y1, y2, edge1, edge2] = edge;\n+      allEdges.delete(edge);\n+      let lastPointX = x;\n+      let lastPointY = y1;\n+      outline = [x, y2];\n+      outlines.push(outline);\n+      while (true) {\n+        let e;\n+        if (allEdges.has(edge1)) {\n+          e = edge1;\n+        } else if (allEdges.has(edge2)) {\n+          e = edge2;\n+        } else {\n+          break;\n+        }\n+        allEdges.delete(e);\n+        [x, y1, y2, edge1, edge2] = e;\n+        if (lastPointX !== x) {\n+          outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2);\n+          lastPointX = x;\n+        }\n+        lastPointY = lastPointY === y1 ? y2 : y1;\n+      }\n+      outline.push(lastPointX, lastPointY);\n+    }\n+    return new HighlightOutline(outlines, this.#box, this.#lastPoint);\n+  }\n+  #binarySearch(y) {\n+    const array = this.#intervals;\n+    let start = 0;\n+    let end = array.length - 1;\n+    while (start \u003C= end) {\n+      const middle = start + end >> 1;\n+      const y1 = array[middle][0];\n+      if (y1 === y) {\n+        return middle;\n+      }\n+      if (y1 \u003C y) {\n+        start = middle + 1;\n+      } else {\n+        end = middle - 1;\n+      }\n+    }\n+    return end + 1;\n+  }\n+  #insert([, y1, y2]) {\n+    const index = this.#binarySearch(y1);\n+    this.#intervals.splice(index, 0, [y1, y2]);\n+  }\n+  #remove([, y1, y2]) {\n+    const index = this.#binarySearch(y1);\n+    for (let i = index; i \u003C this.#intervals.length; i++) {\n+      const [start, end] = this.#intervals[i];\n+      if (start !== y1) {\n+        break;\n+      }\n+      if (start === y1 && end === y2) {\n+        this.#intervals.splice(i, 1);\n+        return;\n+      }\n+    }\n+    for (let i = index - 1; i >= 0; i--) {\n+      const [start, end] = this.#intervals[i];\n+      if (start !== y1) {\n+        break;\n+      }\n+      if (start === y1 && end === y2) {\n+        this.#intervals.splice(i, 1);\n+        return;\n+      }\n+    }\n+  }\n+  #breakEdge(edge) {\n+    const [x, y1, y2] = edge;\n+    const results = [[x, y1, y2]];\n+    const index = this.#binarySearch(y2);\n+    for (let i = 0; i \u003C index; i++) {\n+      const [start, end] = this.#intervals[i];\n+      for (let j = 0, jj = results.length; j \u003C jj; j++) {\n+        const [, y3, y4] = results[j];\n+        if (end \u003C= y3 || y4 \u003C= start) {\n+          continue;\n+        }\n+        if (y3 >= start) {\n+          if (y4 > end) {\n+            results[j][1] = end;\n+          } else {\n+            if (jj === 1) {\n+              return [];\n+            }\n+            results.splice(j, 1);\n+            j--;\n+            jj--;\n+          }\n+          continue;\n+        }\n+        results[j][2] = start;\n+        if (y4 > end) {\n+          results.push([x, end, y4]);\n+        }\n+      }\n+    }\n+    return results;\n+  }\n+}\n+class HighlightOutline extends Outline {\n+  #box;\n+  #outlines;\n+  constructor(outlines, box, lastPoint) {\n+    super();\n+    this.#outlines = outlines;\n+    this.#box = box;\n+    this.lastPoint = lastPoint;\n+  }\n+  toSVGPath() {\n+    const buffer = [];\n+    for (const polygon of this.#outlines) {\n+      let [prevX, prevY] = polygon;\n+      buffer.push(`M${prevX} ${prevY}`);\n+      for (let i = 2; i \u003C polygon.length; i += 2) {\n+        const x = polygon[i];\n+        const y = polygon[i + 1];\n+        if (x === prevX) {\n+          buffer.push(`V${y}`);\n+          prevY = y;\n+        } else if (y === prevY) {\n+          buffer.push(`H${x}`);\n+          prevX = x;\n+        }\n+      }\n+      buffer.push(\"Z\");\n+    }\n+    return buffer.join(\" \");\n+  }\n+  serialize([blX, blY, trX, trY], _rotation) {\n+    const outlines = [];\n+    const width = trX - blX;\n+    const height = trY - blY;\n+    for (const outline of this.#outlines) {\n+      const points = new Array(outline.length);\n+      for (let i = 0; i \u003C outline.length; i += 2) {\n+        points[i] = blX + outline[i] * width;\n+        points[i + 1] = trY - outline[i + 1] * height;\n+      }\n+      outlines.push(points);\n+    }\n+    return outlines;\n+  }\n+  get box() {\n+    return this.#box;\n+  }\n+  get classNamesForOutlining() {\n+    return [\"highlightOutline\"];\n+  }\n+}\n+class FreeHighlightOutliner extends FreeDrawOutliner {\n+  newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n+    return new FreeHighlightOutline(outline, points, box, scaleFactor, innerMargin, isLTR);\n+  }\n+}\n+class FreeHighlightOutline extends FreeDrawOutline {\n+  newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n+    return new FreeHighlightOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin);\n+  }\n+}\n+\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Feditor\u002Fcolor_picker.js\n \n \n \n class ColorPicker {\n-  #boundKeyDown = this.#keyDown.bind(this);\n-  #boundPointerDown = this.#pointerDown.bind(this);\n   #button = null;\n   #buttonSwatch = null;\n   #defaultColor;\n@@ -16540,8 +22904,10 @@\n   #isMainColorPicker = false;\n   #editor = null;\n   #eventBus;\n+  #openDropdownAC = null;\n   #uiManager = null;\n   #type;\n+  static #l10nColor = null;\n   static get _keyboardManager() {\n     return shadow(this, \"_keyboardManager\", new KeyboardManager([[[\"Escape\", \"mac+Escape\"], ColorPicker.prototype._hideDropdownFromKeyboard], [[\" \", \"mac+ \"], ColorPicker.prototype._colorSelectFromKeyboard], [[\"ArrowDown\", \"ArrowRight\", \"mac+ArrowDown\", \"mac+ArrowRight\"], ColorPicker.prototype._moveToNext], [[\"ArrowUp\", \"ArrowLeft\", \"mac+ArrowUp\", \"mac+ArrowLeft\"], ColorPicker.prototype._moveToPrevious], [[\"Home\", \"mac+Home\"], ColorPicker.prototype._moveToBeginning], [[\"End\", \"mac+End\"], ColorPicker.prototype._moveToEnd]]));\n   }\n@@ -16560,6 +22926,13 @@\n     this.#uiManager = editor?._uiManager || uiManager;\n     this.#eventBus = this.#uiManager._eventBus;\n     this.#defaultColor = editor?.color || this.#uiManager?.highlightColors.values().next().value || \"#FFFF98\";\n+    ColorPicker.#l10nColor ||= Object.freeze({\n+      blue: \"pdfjs-editor-colorpicker-blue\",\n+      green: \"pdfjs-editor-colorpicker-green\",\n+      pink: \"pdfjs-editor-colorpicker-pink\",\n+      red: \"pdfjs-editor-colorpicker-red\",\n+      yellow: \"pdfjs-editor-colorpicker-yellow\"\n+    });\n   }\n   renderButton() {\n     const button = this.#button = document.createElement(\"button\");\n@@ -16567,8 +22940,13 @@\n     button.tabIndex = \"0\";\n     button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-button\");\n     button.setAttribute(\"aria-haspopup\", true);\n-    button.addEventListener(\"click\", this.#openDropdown.bind(this));\n-    button.addEventListener(\"keydown\", this.#boundKeyDown);\n+    const signal = this.#uiManager._signal;\n+    button.addEventListener(\"click\", this.#openDropdown.bind(this), {\n+      signal\n+    });\n+    button.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n+      signal\n+    });\n     const swatch = this.#buttonSwatch = document.createElement(\"span\");\n     swatch.className = \"swatch\";\n     swatch.setAttribute(\"aria-hidden\", true);\n@@ -16584,7 +22962,10 @@\n   }\n   #getDropdownRoot() {\n     const div = document.createElement(\"div\");\n-    div.addEventListener(\"contextmenu\", noContextMenu);\n+    const signal = this.#uiManager._signal;\n+    div.addEventListener(\"contextmenu\", noContextMenu, {\n+      signal\n+    });\n     div.className = \"dropdown\";\n     div.role = \"listbox\";\n     div.setAttribute(\"aria-multiselectable\", false);\n@@ -16596,16 +22977,20 @@\n       button.role = \"option\";\n       button.setAttribute(\"data-color\", color);\n       button.title = name;\n-      button.setAttribute(\"data-l10n-id\", `pdfjs-editor-colorpicker-${name}`);\n+      button.setAttribute(\"data-l10n-id\", ColorPicker.#l10nColor[name]);\n       const swatch = document.createElement(\"span\");\n       button.append(swatch);\n       swatch.className = \"swatch\";\n       swatch.style.backgroundColor = color;\n       button.setAttribute(\"aria-selected\", color === this.#defaultColor);\n-      button.addEventListener(\"click\", this.#colorSelect.bind(this, color));\n+      button.addEventListener(\"click\", this.#colorSelect.bind(this, color), {\n+        signal\n+      });\n       div.append(button);\n     }\n-    div.addEventListener(\"keydown\", this.#boundKeyDown);\n+    div.addEventListener(\"keydown\", this.#keyDown.bind(this), {\n+      signal\n+    });\n     return div;\n   }\n   #colorSelect(color, event) {\n@@ -16673,7 +23058,12 @@\n       return;\n     }\n     this.#dropdownWasFromKeyboard = event.detail === 0;\n-    window.addEventListener(\"pointerdown\", this.#boundPointerDown);\n+    if (!this.#openDropdownAC) {\n+      this.#openDropdownAC = new AbortController();\n+      window.addEventListener(\"pointerdown\", this.#pointerDown.bind(this), {\n+        signal: this.#uiManager.combinedSignal(this.#openDropdownAC)\n+      });\n+    }\n     if (this.#dropdown) {\n       this.#dropdown.classList.remove(\"hidden\");\n       return;\n@@ -16689,7 +23079,8 @@\n   }\n   hideDropdown() {\n     this.#dropdown?.classList.add(\"hidden\");\n-    window.removeEventListener(\"pointerdown\", this.#boundPointerDown);\n+    this.#openDropdownAC?.abort();\n+    this.#openDropdownAC = null;\n   }\n   get #isDropdownVisible() {\n     return this.#dropdown && !this.#dropdown.classList.contains(\"hidden\");\n@@ -16729,7 +23120,14 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Feditor\u002Fhighlight.js\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Feditor\u002Fhighlight.js\n+\n+\n+\n+\n+\n+\n+\n \n \n \n@@ -16749,7 +23147,6 @@\n   #highlightOutlines = null;\n   #id = null;\n   #isFreeHighlight = false;\n-  #boundKeydown = this.#keydown.bind(this);\n   #lastPoint = null;\n   #opacity;\n   #outlineId = null;\n@@ -16759,7 +23156,6 @@\n   static _defaultColor = null;\n   static _defaultOpacity = 1;\n   static _defaultThickness = 12;\n-  static _l10nPromise;\n   static _type = \"highlight\";\n   static _editorType = AnnotationEditorType.HIGHLIGHT;\n   static _freeHighlightId = -1;\n@@ -16789,11 +23185,12 @@\n     this.#methodOfCreation = params.methodOfCreation || \"\";\n     this.#text = params.text || \"\";\n     this._isDraggable = false;\n+    this.defaultL10nId = \"pdfjs-editor-highlight-editor\";\n     if (params.highlightId > -1) {\n       this.#isFreeHighlight = true;\n       this.#createFreeOutlines(params);\n       this.#addToDrawLayer();\n-    } else {\n+    } else if (this.#boxes) {\n       this.#anchorNode = params.anchorNode;\n       this.#anchorOffset = params.anchorOffset;\n       this.#focusNode = params.focusNode;\n@@ -16824,19 +23221,14 @@\n     };\n   }\n   #createOutlines() {\n-    const outliner = new Outliner(this.#boxes, 0.001);\n+    const outliner = new HighlightOutliner(this.#boxes, 0.001);\n     this.#highlightOutlines = outliner.getOutlines();\n-    ({\n-      x: this.x,\n-      y: this.y,\n-      width: this.width,\n-      height: this.height\n-    } = this.#highlightOutlines.box);\n-    const outlinerForOutline = new Outliner(this.#boxes, 0.0025, 0.001, this._uiManager.direction === \"ltr\");\n+    [this.x, this.y, this.width, this.height] = this.#highlightOutlines.box;\n+    const outlinerForOutline = new HighlightOutliner(this.#boxes, 0.0025, 0.001, this._uiManager.direction === \"ltr\");\n     this.#focusOutlines = outlinerForOutline.getOutlines();\n     const {\n       lastPoint\n-    } = this.#focusOutlines.box;\n+    } = this.#focusOutlines;\n     this.#lastPoint = [(lastPoint[0] - this.x) \u002F this.width, (lastPoint[1] - this.y) \u002F this.height];\n   }\n   #createFreeOutlines({\n@@ -16850,21 +23242,38 @@\n     if (highlightId >= 0) {\n       this.#id = highlightId;\n       this.#clipPathId = clipPathId;\n-      this.parent.drawLayer.finalizeLine(highlightId, highlightOutlines);\n-      this.#outlineId = this.parent.drawLayer.highlightOutline(this.#focusOutlines);\n+      this.parent.drawLayer.finalizeDraw(highlightId, {\n+        bbox: highlightOutlines.box,\n+        path: {\n+          d: highlightOutlines.toSVGPath()\n+        }\n+      });\n+      this.#outlineId = this.parent.drawLayer.drawOutline({\n+        rootClass: {\n+          highlightOutline: true,\n+          free: true\n+        },\n+        bbox: this.#focusOutlines.box,\n+        path: {\n+          d: this.#focusOutlines.toSVGPath()\n+        }\n+      }, true);\n     } else if (this.parent) {\n       const angle = this.parent.viewport.rotation;\n-      this.parent.drawLayer.updateLine(this.#id, highlightOutlines);\n-      this.parent.drawLayer.updateBox(this.#id, HighlightEditor.#rotateBbox(this.#highlightOutlines.box, (angle - this.rotation + 360) % 360));\n-      this.parent.drawLayer.updateLine(this.#outlineId, this.#focusOutlines);\n-      this.parent.drawLayer.updateBox(this.#outlineId, HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle));\n+      this.parent.drawLayer.updateProperties(this.#id, {\n+        bbox: HighlightEditor.#rotateBbox(this.#highlightOutlines.box, (angle - this.rotation + 360) % 360),\n+        path: {\n+          d: highlightOutlines.toSVGPath()\n+        }\n+      });\n+      this.parent.drawLayer.updateProperties(this.#outlineId, {\n+        bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n+        path: {\n+          d: this.#focusOutlines.toSVGPath()\n+        }\n+      });\n     }\n-    const {\n-      x,\n-      y,\n-      width,\n-      height\n-    } = highlightOutlines.box;\n+    const [x, y, width, height] = highlightOutlines.box;\n     switch (this.rotation) {\n       case 0:\n         this.x = x;\n@@ -16899,7 +23308,7 @@\n     }\n     const {\n       lastPoint\n-    } = this.#focusOutlines.box;\n+    } = this.#focusOutlines;\n     this.#lastPoint = [(lastPoint[0] - x) \u002F width, (lastPoint[1] - y) \u002F height];\n   }\n   static initialize(l10n, uiManager) {\n@@ -16937,15 +23346,22 @@\n     return [[AnnotationEditorParamsType.HIGHLIGHT_COLOR, this.color || HighlightEditor._defaultColor], [AnnotationEditorParamsType.HIGHLIGHT_THICKNESS, this.#thickness || HighlightEditor._defaultThickness], [AnnotationEditorParamsType.HIGHLIGHT_FREE, this.#isFreeHighlight]];\n   }\n   #updateColor(color) {\n-    const setColor = col => {\n+    const setColorAndOpacity = (col, opa) => {\n       this.color = col;\n-      this.parent?.drawLayer.changeColor(this.#id, col);\n+      this.#opacity = opa;\n+      this.parent?.drawLayer.updateProperties(this.#id, {\n+        root: {\n+          fill: col,\n+          \"fill-opacity\": opa\n+        }\n+      });\n       this.#colorPicker?.updateColor(col);\n     };\n     const savedColor = this.color;\n+    const savedOpacity = this.#opacity;\n     this.addCommands({\n-      cmd: setColor.bind(this, color),\n-      undo: setColor.bind(this, savedColor),\n+      cmd: setColorAndOpacity.bind(this, color, HighlightEditor._defaultOpacity),\n+      undo: setColorAndOpacity.bind(this, savedColor, savedOpacity),\n       post: this._uiManager.updateUI.bind(this._uiManager, this),\n       mustExec: true,\n       type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n@@ -17007,9 +23423,13 @@\n   getRect(tx, ty) {\n     return super.getRect(tx, ty, this.#getRotation());\n   }\n-  onceAdded() {\n-    this.parent.addUndoableEditor(this);\n-    this.div.focus();\n+  onceAdded(focus) {\n+    if (!this.annotationElementId) {\n+      this.parent.addUndoableEditor(this);\n+    }\n+    if (focus) {\n+      this.div.focus();\n+    }\n   }\n   remove() {\n     this.#cleanDrawLayer();\n@@ -17072,47 +23492,45 @@\n     ({\n       id: this.#id,\n       clipPathId: this.#clipPathId\n-    } = parent.drawLayer.highlight(this.#highlightOutlines, this.color, this.#opacity));\n-    this.#outlineId = parent.drawLayer.highlightOutline(this.#focusOutlines);\n+    } = parent.drawLayer.draw({\n+      bbox: this.#highlightOutlines.box,\n+      root: {\n+        viewBox: \"0 0 1 1\",\n+        fill: this.color,\n+        \"fill-opacity\": this.#opacity\n+      },\n+      rootClass: {\n+        highlight: true,\n+        free: this.#isFreeHighlight\n+      },\n+      path: {\n+        d: this.#highlightOutlines.toSVGPath()\n+      }\n+    }, false, true));\n+    this.#outlineId = parent.drawLayer.drawOutline({\n+      rootClass: {\n+        highlightOutline: true,\n+        free: this.#isFreeHighlight\n+      },\n+      bbox: this.#focusOutlines.box,\n+      path: {\n+        d: this.#focusOutlines.toSVGPath()\n+      }\n+    }, this.#isFreeHighlight);\n     if (this.#highlightDiv) {\n       this.#highlightDiv.style.clipPath = this.#clipPathId;\n     }\n   }\n-  static #rotateBbox({\n-    x,\n-    y,\n-    width,\n-    height\n-  }, angle) {\n+  static #rotateBbox([x, y, width, height], angle) {\n     switch (angle) {\n       case 90:\n-        return {\n-          x: 1 - y - height,\n-          y: x,\n-          width: height,\n-          height: width\n-        };\n+        return [1 - y - height, x, height, width];\n       case 180:\n-        return {\n-          x: 1 - x - width,\n-          y: 1 - y - height,\n-          width,\n-          height\n-        };\n+        return [1 - x - width, 1 - y - height, width, height];\n       case 270:\n-        return {\n-          x: y,\n-          y: 1 - x - width,\n-          width: height,\n-          height: width\n-        };\n+        return [y, 1 - x - width, height, width];\n     }\n-    return {\n-      x,\n-      y,\n-      width,\n-      height\n-    };\n+    return [x, y, width, height];\n   }\n   rotate(angle) {\n     const {\n@@ -17123,12 +23541,20 @@\n       angle = (angle - this.rotation + 360) % 360;\n       box = HighlightEditor.#rotateBbox(this.#highlightOutlines.box, angle);\n     } else {\n-      box = HighlightEditor.#rotateBbox(this, angle);\n+      box = HighlightEditor.#rotateBbox([this.x, this.y, this.width, this.height], angle);\n     }\n-    drawLayer.rotate(this.#id, angle);\n-    drawLayer.rotate(this.#outlineId, angle);\n-    drawLayer.updateBox(this.#id, box);\n-    drawLayer.updateBox(this.#outlineId, HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle));\n+    drawLayer.updateProperties(this.#id, {\n+      bbox: box,\n+      root: {\n+        \"data-main-rotation\": angle\n+      }\n+    });\n+    drawLayer.updateProperties(this.#outlineId, {\n+      bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n+      root: {\n+        \"data-main-rotation\": angle\n+      }\n+    });\n   }\n   render() {\n     if (this.div) {\n@@ -17142,7 +23568,9 @@\n     if (this.#isFreeHighlight) {\n       div.classList.add(\"free\");\n     } else {\n-      this.div.addEventListener(\"keydown\", this.#boundKeydown);\n+      this.div.addEventListener(\"keydown\", this.#keydown.bind(this), {\n+        signal: this._uiManager._signal\n+      });\n     }\n     const highlightDiv = this.#highlightDiv = document.createElement(\"div\");\n     div.append(highlightDiv);\n@@ -17156,10 +23584,22 @@\n     return div;\n   }\n   pointerover() {\n-    this.parent.drawLayer.addClass(this.#outlineId, \"hovered\");\n+    if (!this.isSelected) {\n+      this.parent?.drawLayer.updateProperties(this.#outlineId, {\n+        rootClass: {\n+          hovered: true\n+        }\n+      });\n+    }\n   }\n   pointerleave() {\n-    this.parent.drawLayer.removeClass(this.#outlineId, \"hovered\");\n+    if (!this.isSelected) {\n+      this.parent?.drawLayer.updateProperties(this.#outlineId, {\n+        rootClass: {\n+          hovered: false\n+        }\n+      });\n+    }\n   }\n   #keydown(event) {\n     HighlightEditor._keyboardManager.exec(this, event);\n@@ -17193,15 +23633,23 @@\n     if (!this.#outlineId) {\n       return;\n     }\n-    this.parent?.drawLayer.removeClass(this.#outlineId, \"hovered\");\n-    this.parent?.drawLayer.addClass(this.#outlineId, \"selected\");\n+    this.parent?.drawLayer.updateProperties(this.#outlineId, {\n+      rootClass: {\n+        hovered: false,\n+        selected: true\n+      }\n+    });\n   }\n   unselect() {\n     super.unselect();\n     if (!this.#outlineId) {\n       return;\n     }\n-    this.parent?.drawLayer.removeClass(this.#outlineId, \"selected\");\n+    this.parent?.drawLayer.updateProperties(this.#outlineId, {\n+      rootClass: {\n+        selected: false\n+      }\n+    });\n     if (!this.#isFreeHighlight) {\n       this.#setCaret(false);\n     }\n@@ -17212,8 +23660,16 @@\n   show(visible = this._isVisible) {\n     super.show(visible);\n     if (this.parent) {\n-      this.parent.drawLayer.show(this.#id, visible);\n-      this.parent.drawLayer.show(this.#outlineId, visible);\n+      this.parent.drawLayer.updateProperties(this.#id, {\n+        rootClass: {\n+          hidden: !visible\n+        }\n+      });\n+      this.parent.drawLayer.updateProperties(this.#outlineId, {\n+        rootClass: {\n+          hidden: !visible\n+        }\n+      });\n     }\n   }\n   #getRotation() {\n@@ -17224,8 +23680,9 @@\n       return null;\n     }\n     const [pageWidth, pageHeight] = this.pageDimensions;\n+    const [pageX, pageY] = this.pageTranslation;\n     const boxes = this.#boxes;\n-    const quadPoints = new Array(boxes.length * 8);\n+    const quadPoints = new Float32Array(boxes.length * 8);\n     let i = 0;\n     for (const {\n       x,\n@@ -17233,12 +23690,12 @@\n       width,\n       height\n     } of boxes) {\n-      const sx = x * pageWidth;\n-      const sy = (1 - y - height) * pageHeight;\n+      const sx = x * pageWidth + pageX;\n+      const sy = (1 - y) * pageHeight + pageY;\n       quadPoints[i] = quadPoints[i + 4] = sx;\n       quadPoints[i + 1] = quadPoints[i + 3] = sy;\n       quadPoints[i + 2] = quadPoints[i + 6] = sx + width * pageWidth;\n-      quadPoints[i + 5] = quadPoints[i + 7] = sy + height * pageHeight;\n+      quadPoints[i + 5] = quadPoints[i + 7] = sy - height * pageHeight;\n       i += 8;\n     }\n     return quadPoints;\n@@ -17257,42 +23714,59 @@\n       width: parentWidth,\n       height: parentHeight\n     } = textLayer.getBoundingClientRect();\n-    const pointerMove = e => {\n-      this.#highlightMove(parent, e);\n-    };\n-    const pointerDownOptions = {\n-      capture: true,\n-      passive: false\n-    };\n-    const pointerDown = e => {\n-      e.preventDefault();\n-      e.stopPropagation();\n-    };\n+    const ac = new AbortController();\n+    const signal = parent.combinedSignal(ac);\n     const pointerUpCallback = e => {\n-      textLayer.removeEventListener(\"pointermove\", pointerMove);\n-      window.removeEventListener(\"blur\", pointerUpCallback);\n-      window.removeEventListener(\"pointerup\", pointerUpCallback);\n-      window.removeEventListener(\"pointerdown\", pointerDown, pointerDownOptions);\n-      window.removeEventListener(\"contextmenu\", noContextMenu);\n+      ac.abort();\n       this.#endHighlight(parent, e);\n     };\n-    window.addEventListener(\"blur\", pointerUpCallback);\n-    window.addEventListener(\"pointerup\", pointerUpCallback);\n-    window.addEventListener(\"pointerdown\", pointerDown, pointerDownOptions);\n-    window.addEventListener(\"contextmenu\", noContextMenu);\n-    textLayer.addEventListener(\"pointermove\", pointerMove);\n-    this._freeHighlight = new FreeOutliner({\n+    window.addEventListener(\"blur\", pointerUpCallback, {\n+      signal\n+    });\n+    window.addEventListener(\"pointerup\", pointerUpCallback, {\n+      signal\n+    });\n+    window.addEventListener(\"pointerdown\", stopEvent, {\n+      capture: true,\n+      passive: false,\n+      signal\n+    });\n+    window.addEventListener(\"contextmenu\", noContextMenu, {\n+      signal\n+    });\n+    textLayer.addEventListener(\"pointermove\", this.#highlightMove.bind(this, parent), {\n+      signal\n+    });\n+    this._freeHighlight = new FreeHighlightOutliner({\n       x,\n       y\n     }, [layerX, layerY, parentWidth, parentHeight], parent.scale, this._defaultThickness \u002F 2, isLTR, 0.001);\n     ({\n       id: this._freeHighlightId,\n       clipPathId: this._freeHighlightClipId\n-    } = parent.drawLayer.highlight(this._freeHighlight, this._defaultColor, this._defaultOpacity, true));\n+    } = parent.drawLayer.draw({\n+      bbox: [0, 0, 1, 1],\n+      root: {\n+        viewBox: \"0 0 1 1\",\n+        fill: this._defaultColor,\n+        \"fill-opacity\": this._defaultOpacity\n+      },\n+      rootClass: {\n+        highlight: true,\n+        free: true\n+      },\n+      path: {\n+        d: this._freeHighlight.toSVGPath()\n+      }\n+    }, true, true));\n   }\n   static #highlightMove(parent, event) {\n     if (this._freeHighlight.add(event)) {\n-      parent.drawLayer.updatePath(this._freeHighlightId, this._freeHighlight);\n+      parent.drawLayer.updateProperties(this._freeHighlightId, {\n+        path: {\n+          d: this._freeHighlight.toSVGPath()\n+        }\n+      });\n     }\n   }\n   static #endHighlight(parent, event) {\n@@ -17304,43 +23778,157 @@\n         methodOfCreation: \"main_toolbar\"\n       });\n     } else {\n-      parent.drawLayer.removeFreeHighlight(this._freeHighlightId);\n+      parent.drawLayer.remove(this._freeHighlightId);\n     }\n     this._freeHighlightId = -1;\n     this._freeHighlight = null;\n     this._freeHighlightClipId = \"\";\n   }\n-  static deserialize(data, parent, uiManager) {\n-    const editor = super.deserialize(data, parent, uiManager);\n+  static async deserialize(data, parent, uiManager) {\n+    let initialData = null;\n+    if (data instanceof HighlightAnnotationElement) {\n+      const {\n+        data: {\n+          quadPoints,\n+          rect,\n+          rotation,\n+          id,\n+          color,\n+          opacity,\n+          popupRef\n+        },\n+        parent: {\n+          page: {\n+            pageNumber\n+          }\n+        }\n+      } = data;\n+      initialData = data = {\n+        annotationType: AnnotationEditorType.HIGHLIGHT,\n+        color: Array.from(color),\n+        opacity,\n+        quadPoints,\n+        boxes: null,\n+        pageIndex: pageNumber - 1,\n+        rect: rect.slice(0),\n+        rotation,\n+        id,\n+        deleted: false,\n+        popupRef\n+      };\n+    } else if (data instanceof InkAnnotationElement) {\n+      const {\n+        data: {\n+          inkLists,\n+          rect,\n+          rotation,\n+          id,\n+          color,\n+          borderStyle: {\n+            rawWidth: thickness\n+          },\n+          popupRef\n+        },\n+        parent: {\n+          page: {\n+            pageNumber\n+          }\n+        }\n+      } = data;\n+      initialData = data = {\n+        annotationType: AnnotationEditorType.HIGHLIGHT,\n+        color: Array.from(color),\n+        thickness,\n+        inkLists,\n+        boxes: null,\n+        pageIndex: pageNumber - 1,\n+        rect: rect.slice(0),\n+        rotation,\n+        id,\n+        deleted: false,\n+        popupRef\n+      };\n+    }\n     const {\n-      rect: [blX, blY, trX, trY],\n       color,\n-      quadPoints\n+      quadPoints,\n+      inkLists,\n+      opacity\n     } = data;\n+    const editor = await super.deserialize(data, parent, uiManager);\n     editor.color = Util.makeHexColor(...color);\n-    editor.#opacity = data.opacity;\n+    editor.#opacity = opacity || 1;\n+    if (inkLists) {\n+      editor.#thickness = data.thickness;\n+    }\n+    editor.annotationElementId = data.id || null;\n+    editor._initialData = initialData;\n     const [pageWidth, pageHeight] = editor.pageDimensions;\n-    editor.width = (trX - blX) \u002F pageWidth;\n-    editor.height = (trY - blY) \u002F pageHeight;\n-    const boxes = editor.#boxes = [];\n-    for (let i = 0; i \u003C quadPoints.length; i += 8) {\n-      boxes.push({\n-        x: (quadPoints[4] - trX) \u002F pageWidth,\n-        y: (trY - (1 - quadPoints[i + 5])) \u002F pageHeight,\n-        width: (quadPoints[i + 2] - quadPoints[i]) \u002F pageWidth,\n-        height: (quadPoints[i + 5] - quadPoints[i + 1]) \u002F pageHeight\n+    const [pageX, pageY] = editor.pageTranslation;\n+    if (quadPoints) {\n+      const boxes = editor.#boxes = [];\n+      for (let i = 0; i \u003C quadPoints.length; i += 8) {\n+        boxes.push({\n+          x: (quadPoints[i] - pageX) \u002F pageWidth,\n+          y: 1 - (quadPoints[i + 1] - pageY) \u002F pageHeight,\n+          width: (quadPoints[i + 2] - quadPoints[i]) \u002F pageWidth,\n+          height: (quadPoints[i + 1] - quadPoints[i + 5]) \u002F pageHeight\n+        });\n+      }\n+      editor.#createOutlines();\n+      editor.#addToDrawLayer();\n+      editor.rotate(editor.rotation);\n+    } else if (inkLists) {\n+      editor.#isFreeHighlight = true;\n+      const points = inkLists[0];\n+      const point = {\n+        x: points[0] - pageX,\n+        y: pageHeight - (points[1] - pageY)\n+      };\n+      const outliner = new FreeHighlightOutliner(point, [0, 0, pageWidth, pageHeight], 1, editor.#thickness \u002F 2, true, 0.001);\n+      for (let i = 0, ii = points.length; i \u003C ii; i += 2) {\n+        point.x = points[i] - pageX;\n+        point.y = pageHeight - (points[i + 1] - pageY);\n+        outliner.add(point);\n+      }\n+      const {\n+        id,\n+        clipPathId\n+      } = parent.drawLayer.draw({\n+        bbox: [0, 0, 1, 1],\n+        root: {\n+          viewBox: \"0 0 1 1\",\n+          fill: editor.color,\n+          \"fill-opacity\": editor._defaultOpacity\n+        },\n+        rootClass: {\n+          highlight: true,\n+          free: true\n+        },\n+        path: {\n+          d: outliner.toSVGPath()\n+        }\n+      }, true, true);\n+      editor.#createFreeOutlines({\n+        highlightOutlines: outliner.getOutlines(),\n+        highlightId: id,\n+        clipPathId\n       });\n+      editor.#addToDrawLayer();\n+      editor.rotate(editor.parentRotation);\n     }\n-    editor.#createOutlines();\n     return editor;\n   }\n   serialize(isForCopying = false) {\n     if (this.isEmpty() || isForCopying) {\n       return null;\n     }\n+    if (this.deleted) {\n+      return this.serializeDeleted();\n+    }\n     const rect = this.getRect(0, 0);\n     const color = AnnotationEditor._colorManager.convert(this.color);\n-    return {\n+    const serialized = {\n       annotationType: AnnotationEditorType.HIGHLIGHT,\n       color,\n       opacity: this.#opacity,\n@@ -17352,141 +23940,272 @@\n       rotation: this.#getRotation(),\n       structTreeParentId: this._structTreeParentId\n     };\n+    if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n+      return null;\n+    }\n+    serialized.id = this.annotationElementId;\n+    return serialized;\n+  }\n+  #hasElementChanged(serialized) {\n+    const {\n+      color\n+    } = this._initialData;\n+    return serialized.color.some((c, i) => c !== color[i]);\n+  }\n+  renderAnnotationElement(annotation) {\n+    annotation.updateEdited({\n+      rect: this.getRect(0, 0)\n+    });\n+    return null;\n   }\n   static canCreateNewEmptyEditor() {\n     return false;\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Feditor\u002Fink.js\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Feditor\u002Fdraw.js\n \n \n \n \n \n-class InkEditor extends AnnotationEditor {\n-  #baseHeight = 0;\n-  #baseWidth = 0;\n-  #boundCanvasPointermove = this.canvasPointermove.bind(this);\n-  #boundCanvasPointerleave = this.canvasPointerleave.bind(this);\n-  #boundCanvasPointerup = this.canvasPointerup.bind(this);\n-  #boundCanvasPointerdown = this.canvasPointerdown.bind(this);\n-  #canvasContextMenuTimeoutId = null;\n-  #currentPath2D = new Path2D();\n-  #disableEditing = false;\n-  #hasSomethingToDraw = false;\n-  #isCanvasInitialized = false;\n-  #observer = null;\n-  #realWidth = 0;\n-  #realHeight = 0;\n-  #requestFrameCallback = null;\n-  static _defaultColor = null;\n-  static _defaultOpacity = 1;\n-  static _defaultThickness = 1;\n-  static _type = \"ink\";\n-  static _editorType = AnnotationEditorType.INK;\n+\n+\n+\n+\n+\n+\n+class DrawingOptions {\n+  #svgProperties = Object.create(null);\n+  updateProperty(name, value) {\n+    this[name] = value;\n+    this.updateSVGProperty(name, value);\n+  }\n+  updateProperties(properties) {\n+    if (!properties) {\n+      return;\n+    }\n+    for (const [name, value] of Object.entries(properties)) {\n+      if (!name.startsWith(\"_\")) {\n+        this.updateProperty(name, value);\n+      }\n+    }\n+  }\n+  updateSVGProperty(name, value) {\n+    this.#svgProperties[name] = value;\n+  }\n+  toSVGProperties() {\n+    const root = this.#svgProperties;\n+    this.#svgProperties = Object.create(null);\n+    return {\n+      root\n+    };\n+  }\n+  reset() {\n+    this.#svgProperties = Object.create(null);\n+  }\n+  updateAll(options = this) {\n+    this.updateProperties(options);\n+  }\n+  clone() {\n+    unreachable(\"Not implemented\");\n+  }\n+}\n+class DrawingEditor extends AnnotationEditor {\n+  #drawOutlines = null;\n+  #mustBeCommitted;\n+  _drawId = null;\n+  static _currentDrawId = -1;\n+  static _currentParent = null;\n+  static #currentDraw = null;\n+  static #currentDrawingAC = null;\n+  static #currentDrawingOptions = null;\n+  static #currentPointerId = NaN;\n+  static #currentPointerType = null;\n+  static #currentPointerIds = null;\n+  static #currentMoveTimestamp = NaN;\n+  static _INNER_MARGIN = 3;\n   constructor(params) {\n-    super({\n-      ...params,\n-      name: \"inkEditor\"\n-    });\n-    this.color = params.color || null;\n-    this.thickness = params.thickness || null;\n-    this.opacity = params.opacity || null;\n-    this.paths = [];\n-    this.bezierPath2D = [];\n-    this.allRawPaths = [];\n-    this.currentPath = [];\n-    this.scaleFactor = 1;\n-    this.translationX = this.translationY = 0;\n-    this.x = 0;\n-    this.y = 0;\n-    this._willKeepAspectRatio = true;\n+    super(params);\n+    this.#mustBeCommitted = params.mustBeCommitted || false;\n+    this._addOutlines(params);\n   }\n-  static initialize(l10n, uiManager) {\n-    AnnotationEditor.initialize(l10n, uiManager);\n+  _addOutlines(params) {\n+    if (params.drawOutlines) {\n+      this.#createDrawOutlines(params);\n+      this.#addToDrawLayer();\n+    }\n+  }\n+  #createDrawOutlines({\n+    drawOutlines,\n+    drawId,\n+    drawingOptions\n+  }) {\n+    this.#drawOutlines = drawOutlines;\n+    this._drawingOptions ||= drawingOptions;\n+    if (drawId >= 0) {\n+      this._drawId = drawId;\n+      this.parent.drawLayer.finalizeDraw(drawId, drawOutlines.defaultProperties);\n+    } else {\n+      this._drawId = this.#createDrawing(drawOutlines, this.parent);\n+    }\n+    this.#updateBbox(drawOutlines.box);\n+  }\n+  #createDrawing(drawOutlines, parent) {\n+    const {\n+      id\n+    } = parent.drawLayer.draw(DrawingEditor._mergeSVGProperties(this._drawingOptions.toSVGProperties(), drawOutlines.defaultSVGProperties), false, false);\n+    return id;\n+  }\n+  static _mergeSVGProperties(p1, p2) {\n+    const p1Keys = new Set(Object.keys(p1));\n+    for (const [key, value] of Object.entries(p2)) {\n+      if (p1Keys.has(key)) {\n+        Object.assign(p1[key], value);\n+      } else {\n+        p1[key] = value;\n+      }\n+    }\n+    return p1;\n+  }\n+  static getDefaultDrawingOptions(_options) {\n+    unreachable(\"Not implemented\");\n+  }\n+  static get typesMap() {\n+    unreachable(\"Not implemented\");\n+  }\n+  static get isDrawer() {\n+    return true;\n+  }\n+  static get supportMultipleDrawings() {\n+    return false;\n   }\n   static updateDefaultParams(type, value) {\n-    switch (type) {\n-      case AnnotationEditorParamsType.INK_THICKNESS:\n-        InkEditor._defaultThickness = value;\n-        break;\n-      case AnnotationEditorParamsType.INK_COLOR:\n-        InkEditor._defaultColor = value;\n-        break;\n-      case AnnotationEditorParamsType.INK_OPACITY:\n-        InkEditor._defaultOpacity = value \u002F 100;\n-        break;\n+    const propertyName = this.typesMap.get(type);\n+    if (propertyName) {\n+      this._defaultDrawingOptions.updateProperty(propertyName, value);\n+    }\n+    if (this._currentParent) {\n+      DrawingEditor.#currentDraw.updateProperty(propertyName, value);\n+      this._currentParent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n     }\n   }\n   updateParams(type, value) {\n-    switch (type) {\n-      case AnnotationEditorParamsType.INK_THICKNESS:\n-        this.#updateThickness(value);\n-        break;\n-      case AnnotationEditorParamsType.INK_COLOR:\n-        this.#updateColor(value);\n-        break;\n-      case AnnotationEditorParamsType.INK_OPACITY:\n-        this.#updateOpacity(value);\n-        break;\n+    const propertyName = this.constructor.typesMap.get(type);\n+    if (propertyName) {\n+      this._updateProperty(type, propertyName, value);\n     }\n   }\n   static get defaultPropertiesToUpdate() {\n-    return [[AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness], [AnnotationEditorParamsType.INK_COLOR, InkEditor._defaultColor || AnnotationEditor._defaultLineColor], [AnnotationEditorParamsType.INK_OPACITY, Math.round(InkEditor._defaultOpacity * 100)]];\n+    const properties = [];\n+    const options = this._defaultDrawingOptions;\n+    for (const [type, name] of this.typesMap) {\n+      properties.push([type, options[name]]);\n+    }\n+    return properties;\n   }\n   get propertiesToUpdate() {\n-    return [[AnnotationEditorParamsType.INK_THICKNESS, this.thickness || InkEditor._defaultThickness], [AnnotationEditorParamsType.INK_COLOR, this.color || InkEditor._defaultColor || AnnotationEditor._defaultLineColor], [AnnotationEditorParamsType.INK_OPACITY, Math.round(100 * (this.opacity ?? InkEditor._defaultOpacity))]];\n+    const properties = [];\n+    const {\n+      _drawingOptions\n+    } = this;\n+    for (const [type, name] of this.constructor.typesMap) {\n+      properties.push([type, _drawingOptions[name]]);\n+    }\n+    return properties;\n   }\n-  #updateThickness(thickness) {\n-    const setThickness = th => {\n-      this.thickness = th;\n-      this.#fitToContent();\n+  _updateProperty(type, name, value) {\n+    const options = this._drawingOptions;\n+    const savedValue = options[name];\n+    const setter = val => {\n+      options.updateProperty(name, val);\n+      const bbox = this.#drawOutlines.updateProperty(name, val);\n+      if (bbox) {\n+        this.#updateBbox(bbox);\n+      }\n+      this.parent?.drawLayer.updateProperties(this._drawId, options.toSVGProperties());\n     };\n-    const savedThickness = this.thickness;\n     this.addCommands({\n-      cmd: setThickness.bind(this, thickness),\n-      undo: setThickness.bind(this, savedThickness),\n+      cmd: setter.bind(this, value),\n+      undo: setter.bind(this, savedValue),\n       post: this._uiManager.updateUI.bind(this._uiManager, this),\n       mustExec: true,\n-      type: AnnotationEditorParamsType.INK_THICKNESS,\n+      type,\n       overwriteIfSameType: true,\n       keepUndo: true\n     });\n   }\n-  #updateColor(color) {\n-    const setColor = col => {\n-      this.color = col;\n-      this.#redraw();\n-    };\n-    const savedColor = this.color;\n-    this.addCommands({\n-      cmd: setColor.bind(this, color),\n-      undo: setColor.bind(this, savedColor),\n-      post: this._uiManager.updateUI.bind(this._uiManager, this),\n-      mustExec: true,\n-      type: AnnotationEditorParamsType.INK_COLOR,\n-      overwriteIfSameType: true,\n-      keepUndo: true\n+  _onResizing() {\n+    this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathResizingSVGProperties(this.#convertToDrawSpace()), {\n+      bbox: this.#rotateBox()\n+    }));\n+  }\n+  _onResized() {\n+    this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathResizedSVGProperties(this.#convertToDrawSpace()), {\n+      bbox: this.#rotateBox()\n+    }));\n+  }\n+  _onTranslating(_x, _y) {\n+    this.parent?.drawLayer.updateProperties(this._drawId, {\n+      bbox: this.#rotateBox()\n     });\n   }\n-  #updateOpacity(opacity) {\n-    const setOpacity = op => {\n-      this.opacity = op;\n-      this.#redraw();\n-    };\n-    opacity \u002F= 100;\n-    const savedOpacity = this.opacity;\n-    this.addCommands({\n-      cmd: setOpacity.bind(this, opacity),\n-      undo: setOpacity.bind(this, savedOpacity),\n-      post: this._uiManager.updateUI.bind(this._uiManager, this),\n-      mustExec: true,\n-      type: AnnotationEditorParamsType.INK_OPACITY,\n-      overwriteIfSameType: true,\n-      keepUndo: true\n+  _onTranslated() {\n+    this.parent?.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties(this.#drawOutlines.getPathTranslatedSVGProperties(this.#convertToDrawSpace(), this.parentDimensions), {\n+      bbox: this.#rotateBox()\n+    }));\n+  }\n+  _onStartDragging() {\n+    this.parent?.drawLayer.updateProperties(this._drawId, {\n+      rootClass: {\n+        moving: true\n+      }\n+    });\n+  }\n+  _onStopDragging() {\n+    this.parent?.drawLayer.updateProperties(this._drawId, {\n+      rootClass: {\n+        moving: false\n+      }\n     });\n   }\n+  commit() {\n+    super.commit();\n+    this.disableEditMode();\n+    this.disableEditing();\n+  }\n+  disableEditing() {\n+    super.disableEditing();\n+    this.div.classList.toggle(\"disabled\", true);\n+  }\n+  enableEditing() {\n+    super.enableEditing();\n+    this.div.classList.toggle(\"disabled\", false);\n+  }\n+  getBaseTranslation() {\n+    return [0, 0];\n+  }\n+  get isResizable() {\n+    return true;\n+  }\n+  onceAdded(focus) {\n+    if (!this.annotationElementId) {\n+      this.parent.addUndoableEditor(this);\n+    }\n+    this._isDraggable = true;\n+    if (this.#mustBeCommitted) {\n+      this.#mustBeCommitted = false;\n+      this.commit();\n+      this.parent.setSelected(this);\n+      if (focus && this.isOnScreen) {\n+        this.div.focus();\n+      }\n+    }\n+  }\n+  remove() {\n+    this.#cleanDrawLayer();\n+    super.remove();\n+  }\n   rebuild() {\n     if (!this.parent) {\n       return;\n@@ -17495,666 +24214,2300 @@\n     if (this.div === null) {\n       return;\n     }\n-    if (!this.canvas) {\n-      this.#createCanvas();\n-      this.#createObserver();\n-    }\n+    this.#addToDrawLayer();\n+    this.#updateBbox(this.#drawOutlines.box);\n     if (!this.isAttachedToDOM) {\n       this.parent.add(this);\n-      this.#setCanvasDims();\n-    }\n-    this.#fitToContent();\n-  }\n-  remove() {\n-    if (this.canvas === null) {\n-      return;\n-    }\n-    if (!this.isEmpty()) {\n-      this.commit();\n     }\n-    this.canvas.width = this.canvas.height = 0;\n-    this.canvas.remove();\n-    this.canvas = null;\n-    if (this.#canvasContextMenuTimeoutId) {\n-      clearTimeout(this.#canvasContextMenuTimeoutId);\n-      this.#canvasContextMenuTimeoutId = null;\n-    }\n-    this.#observer.disconnect();\n-    this.#observer = null;\n-    super.remove();\n   }\n   setParent(parent) {\n-    if (!this.parent && parent) {\n+    let mustBeSelected = false;\n+    if (this.parent && !parent) {\n       this._uiManager.removeShouldRescale(this);\n-    } else if (this.parent && parent === null) {\n+      this.#cleanDrawLayer();\n+    } else if (parent) {\n       this._uiManager.addShouldRescale(this);\n+      this.#addToDrawLayer(parent);\n+      mustBeSelected = !this.parent && this.div?.classList.contains(\"selectedEditor\");\n     }\n     super.setParent(parent);\n+    if (mustBeSelected) {\n+      this.select();\n+    }\n   }\n-  onScaleChanging() {\n-    const [parentWidth, parentHeight] = this.parentDimensions;\n-    const width = this.width * parentWidth;\n-    const height = this.height * parentHeight;\n-    this.setDimensions(width, height);\n-  }\n-  enableEditMode() {\n-    if (this.#disableEditing || this.canvas === null) {\n+  #cleanDrawLayer() {\n+    if (this._drawId === null || !this.parent) {\n       return;\n     }\n-    super.enableEditMode();\n-    this._isDraggable = false;\n-    this.canvas.addEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n+    this.parent.drawLayer.remove(this._drawId);\n+    this._drawId = null;\n+    this._drawingOptions.reset();\n   }\n-  disableEditMode() {\n-    if (!this.isInEditMode() || this.canvas === null) {\n+  #addToDrawLayer(parent = this.parent) {\n+    if (this._drawId !== null && this.parent === parent) {\n       return;\n     }\n-    super.disableEditMode();\n-    this._isDraggable = !this.isEmpty();\n-    this.div.classList.remove(\"editing\");\n-    this.canvas.removeEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n-  }\n-  onceAdded() {\n-    this._isDraggable = !this.isEmpty();\n-  }\n-  isEmpty() {\n-    return this.paths.length === 0 || this.paths.length === 1 && this.paths[0].length === 0;\n+    if (this._drawId !== null) {\n+      this.parent.drawLayer.updateParent(this._drawId, parent.drawLayer);\n+      return;\n+    }\n+    this._drawingOptions.updateAll();\n+    this._drawId = this.#createDrawing(this.#drawOutlines, parent);\n   }\n-  #getInitialBBox() {\n+  #convertToParentSpace([x, y, width, height]) {\n     const {\n-      parentRotation,\n-      parentDimensions: [width, height]\n+      parentDimensions: [pW, pH],\n+      rotation\n     } = this;\n-    switch (parentRotation) {\n+    switch (rotation) {\n       case 90:\n-        return [0, height, height, width];\n+        return [y, 1 - x, width * (pH \u002F pW), height * (pW \u002F pH)];\n       case 180:\n-        return [width, height, width, height];\n+        return [1 - x, 1 - y, width, height];\n       case 270:\n-        return [width, 0, height, width];\n+        return [1 - y, x, width * (pH \u002F pW), height * (pW \u002F pH)];\n       default:\n-        return [0, 0, width, height];\n+        return [x, y, width, height];\n     }\n   }\n-  #setStroke() {\n+  #convertToDrawSpace() {\n     const {\n-      ctx,\n-      color,\n-      opacity,\n-      thickness,\n-      parentScale,\n-      scaleFactor\n+      x,\n+      y,\n+      width,\n+      height,\n+      parentDimensions: [pW, pH],\n+      rotation\n     } = this;\n-    ctx.lineWidth = thickness * parentScale \u002F scaleFactor;\n-    ctx.lineCap = \"round\";\n-    ctx.lineJoin = \"round\";\n-    ctx.miterLimit = 10;\n-    ctx.strokeStyle = `${color}${opacityToHex(opacity)}`;\n-  }\n-  #startDrawing(x, y) {\n-    this.canvas.addEventListener(\"contextmenu\", noContextMenu);\n-    this.canvas.addEventListener(\"pointerleave\", this.#boundCanvasPointerleave);\n-    this.canvas.addEventListener(\"pointermove\", this.#boundCanvasPointermove);\n-    this.canvas.addEventListener(\"pointerup\", this.#boundCanvasPointerup);\n-    this.canvas.removeEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n-    this.isEditing = true;\n-    if (!this.#isCanvasInitialized) {\n-      this.#isCanvasInitialized = true;\n-      this.#setCanvasDims();\n-      this.thickness ||= InkEditor._defaultThickness;\n-      this.color ||= InkEditor._defaultColor || AnnotationEditor._defaultLineColor;\n-      this.opacity ??= InkEditor._defaultOpacity;\n-    }\n-    this.currentPath.push([x, y]);\n-    this.#hasSomethingToDraw = false;\n-    this.#setStroke();\n-    this.#requestFrameCallback = () => {\n-      this.#drawPoints();\n-      if (this.#requestFrameCallback) {\n-        window.requestAnimationFrame(this.#requestFrameCallback);\n-      }\n-    };\n-    window.requestAnimationFrame(this.#requestFrameCallback);\n-  }\n-  #draw(x, y) {\n-    const [lastX, lastY] = this.currentPath.at(-1);\n-    if (this.currentPath.length > 1 && x === lastX && y === lastY) {\n-      return;\n-    }\n-    const currentPath = this.currentPath;\n-    let path2D = this.#currentPath2D;\n-    currentPath.push([x, y]);\n-    this.#hasSomethingToDraw = true;\n-    if (currentPath.length \u003C= 2) {\n-      path2D.moveTo(...currentPath[0]);\n-      path2D.lineTo(x, y);\n-      return;\n-    }\n-    if (currentPath.length === 3) {\n-      this.#currentPath2D = path2D = new Path2D();\n-      path2D.moveTo(...currentPath[0]);\n-    }\n-    this.#makeBezierCurve(path2D, ...currentPath.at(-3), ...currentPath.at(-2), x, y);\n-  }\n-  #endPath() {\n-    if (this.currentPath.length === 0) {\n-      return;\n-    }\n-    const lastPoint = this.currentPath.at(-1);\n-    this.#currentPath2D.lineTo(...lastPoint);\n-  }\n-  #stopDrawing(x, y) {\n-    this.#requestFrameCallback = null;\n-    x = Math.min(Math.max(x, 0), this.canvas.width);\n-    y = Math.min(Math.max(y, 0), this.canvas.height);\n-    this.#draw(x, y);\n-    this.#endPath();\n-    let bezier;\n-    if (this.currentPath.length !== 1) {\n-      bezier = this.#generateBezierPoints();\n-    } else {\n-      const xy = [x, y];\n-      bezier = [[xy, xy.slice(), xy.slice(), xy]];\n-    }\n-    const path2D = this.#currentPath2D;\n-    const currentPath = this.currentPath;\n-    this.currentPath = [];\n-    this.#currentPath2D = new Path2D();\n-    const cmd = () => {\n-      this.allRawPaths.push(currentPath);\n-      this.paths.push(bezier);\n-      this.bezierPath2D.push(path2D);\n-      this._uiManager.rebuild(this);\n-    };\n-    const undo = () => {\n-      this.allRawPaths.pop();\n-      this.paths.pop();\n-      this.bezierPath2D.pop();\n-      if (this.paths.length === 0) {\n-        this.remove();\n-      } else {\n-        if (!this.canvas) {\n-          this.#createCanvas();\n-          this.#createObserver();\n-        }\n-        this.#fitToContent();\n-      }\n-    };\n-    this.addCommands({\n-      cmd,\n-      undo,\n-      mustExec: true\n-    });\n+    switch (rotation) {\n+      case 90:\n+        return [1 - y, x, width * (pW \u002F pH), height * (pH \u002F pW)];\n+      case 180:\n+        return [1 - x, 1 - y, width, height];\n+      case 270:\n+        return [y, 1 - x, width * (pW \u002F pH), height * (pH \u002F pW)];\n+      default:\n+        return [x, y, width, height];\n+    }\n   }\n-  #drawPoints() {\n-    if (!this.#hasSomethingToDraw) {\n-      return;\n+  #updateBbox(bbox) {\n+    [this.x, this.y, this.width, this.height] = this.#convertToParentSpace(bbox);\n+    if (this.div) {\n+      this.fixAndSetPosition();\n+      const [parentWidth, parentHeight] = this.parentDimensions;\n+      this.setDims(this.width * parentWidth, this.height * parentHeight);\n     }\n-    this.#hasSomethingToDraw = false;\n-    const thickness = Math.ceil(this.thickness * this.parentScale);\n-    const lastPoints = this.currentPath.slice(-3);\n-    const x = lastPoints.map(xy => xy[0]);\n-    const y = lastPoints.map(xy => xy[1]);\n-    const xMin = Math.min(...x) - thickness;\n-    const xMax = Math.max(...x) + thickness;\n-    const yMin = Math.min(...y) - thickness;\n-    const yMax = Math.max(...y) + thickness;\n+    this._onResized();\n+  }\n+  #rotateBox() {\n     const {\n-      ctx\n+      x,\n+      y,\n+      width,\n+      height,\n+      rotation,\n+      parentRotation,\n+      parentDimensions: [pW, pH]\n     } = this;\n-    ctx.save();\n-    ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n-    for (const path of this.bezierPath2D) {\n-      ctx.stroke(path);\n+    switch ((rotation * 4 + parentRotation) \u002F 90) {\n+      case 1:\n+        return [1 - y - height, x, height, width];\n+      case 2:\n+        return [1 - x - width, 1 - y - height, width, height];\n+      case 3:\n+        return [y, 1 - x - width, height, width];\n+      case 4:\n+        return [x, y - width * (pW \u002F pH), height * (pH \u002F pW), width * (pW \u002F pH)];\n+      case 5:\n+        return [1 - y, x, width * (pW \u002F pH), height * (pH \u002F pW)];\n+      case 6:\n+        return [1 - x - height * (pH \u002F pW), 1 - y, height * (pH \u002F pW), width * (pW \u002F pH)];\n+      case 7:\n+        return [y - width * (pW \u002F pH), 1 - x - height * (pH \u002F pW), width * (pW \u002F pH), height * (pH \u002F pW)];\n+      case 8:\n+        return [x - width, y - height, width, height];\n+      case 9:\n+        return [1 - y, x - width, height, width];\n+      case 10:\n+        return [1 - x, 1 - y, width, height];\n+      case 11:\n+        return [y - height, 1 - x, height, width];\n+      case 12:\n+        return [x - height * (pH \u002F pW), y, height * (pH \u002F pW), width * (pW \u002F pH)];\n+      case 13:\n+        return [1 - y - width * (pW \u002F pH), x - height * (pH \u002F pW), width * (pW \u002F pH), height * (pH \u002F pW)];\n+      case 14:\n+        return [1 - x, 1 - y - width * (pW \u002F pH), height * (pH \u002F pW), width * (pW \u002F pH)];\n+      case 15:\n+        return [y, 1 - x, width * (pW \u002F pH), height * (pH \u002F pW)];\n+      default:\n+        return [x, y, width, height];\n     }\n-    ctx.stroke(this.#currentPath2D);\n-    ctx.restore();\n   }\n-  #makeBezierCurve(path2D, x0, y0, x1, y1, x2, y2) {\n-    const prevX = (x0 + x1) \u002F 2;\n-    const prevY = (y0 + y1) \u002F 2;\n-    const x3 = (x1 + x2) \u002F 2;\n-    const y3 = (y1 + y2) \u002F 2;\n-    path2D.bezierCurveTo(prevX + 2 * (x1 - prevX) \u002F 3, prevY + 2 * (y1 - prevY) \u002F 3, x3 + 2 * (x1 - x3) \u002F 3, y3 + 2 * (y1 - y3) \u002F 3, x3, y3);\n-  }\n-  #generateBezierPoints() {\n-    const path = this.currentPath;\n-    if (path.length \u003C= 2) {\n-      return [[path[0], path[0], path.at(-1), path.at(-1)]];\n+  rotate() {\n+    if (!this.parent) {\n+      return;\n     }\n-    const bezierPoints = [];\n-    let i;\n-    let [x0, y0] = path[0];\n-    for (i = 1; i \u003C path.length - 2; i++) {\n-      const [x1, y1] = path[i];\n-      const [x2, y2] = path[i + 1];\n-      const x3 = (x1 + x2) \u002F 2;\n-      const y3 = (y1 + y2) \u002F 2;\n-      const control1 = [x0 + 2 * (x1 - x0) \u002F 3, y0 + 2 * (y1 - y0) \u002F 3];\n-      const control2 = [x3 + 2 * (x1 - x3) \u002F 3, y3 + 2 * (y1 - y3) \u002F 3];\n-      bezierPoints.push([[x0, y0], control1, control2, [x3, y3]]);\n-      [x0, y0] = [x3, y3];\n-    }\n-    const [x1, y1] = path[i];\n-    const [x2, y2] = path[i + 1];\n-    const control1 = [x0 + 2 * (x1 - x0) \u002F 3, y0 + 2 * (y1 - y0) \u002F 3];\n-    const control2 = [x2 + 2 * (x1 - x2) \u002F 3, y2 + 2 * (y1 - y2) \u002F 3];\n-    bezierPoints.push([[x0, y0], control1, control2, [x2, y2]]);\n-    return bezierPoints;\n+    this.parent.drawLayer.updateProperties(this._drawId, DrawingEditor._mergeSVGProperties({\n+      bbox: this.#rotateBox()\n+    }, this.#drawOutlines.updateRotation((this.parentRotation - this.rotation + 360) % 360)));\n   }\n-  #redraw() {\n-    if (this.isEmpty()) {\n-      this.#updateTransform();\n+  onScaleChanging() {\n+    if (!this.parent) {\n       return;\n     }\n-    this.#setStroke();\n-    const {\n-      canvas,\n-      ctx\n-    } = this;\n-    ctx.setTransform(1, 0, 0, 1, 0, 0);\n-    ctx.clearRect(0, 0, canvas.width, canvas.height);\n-    this.#updateTransform();\n-    for (const path of this.bezierPath2D) {\n-      ctx.stroke(path);\n+    this.#updateBbox(this.#drawOutlines.updateParentDimensions(this.parentDimensions, this.parent.scale));\n+  }\n+  static onScaleChangingWhenDrawing() {}\n+  render() {\n+    if (this.div) {\n+      return this.div;\n     }\n+    let baseX, baseY;\n+    if (this._isCopy) {\n+      baseX = this.x;\n+      baseY = this.y;\n+    }\n+    const div = super.render();\n+    div.classList.add(\"draw\");\n+    const drawDiv = document.createElement(\"div\");\n+    div.append(drawDiv);\n+    drawDiv.setAttribute(\"aria-hidden\", \"true\");\n+    drawDiv.className = \"internal\";\n+    const [parentWidth, parentHeight] = this.parentDimensions;\n+    this.setDims(this.width * parentWidth, this.height * parentHeight);\n+    this._uiManager.addShouldRescale(this);\n+    this.disableEditing();\n+    if (this._isCopy) {\n+      this._moveAfterPaste(baseX, baseY);\n+    }\n+    return div;\n   }\n-  commit() {\n-    if (this.#disableEditing) {\n+  static createDrawerInstance(_x, _y, _parentWidth, _parentHeight, _rotation) {\n+    unreachable(\"Not implemented\");\n+  }\n+  static startDrawing(parent, uiManager, _isLTR, event) {\n+    const {\n+      target,\n+      offsetX: x,\n+      offsetY: y,\n+      pointerId,\n+      pointerType\n+    } = event;\n+    if (DrawingEditor.#currentPointerType && DrawingEditor.#currentPointerType !== pointerType) {\n       return;\n     }\n-    super.commit();\n-    this.isEditing = false;\n-    this.disableEditMode();\n-    this.setInForeground();\n-    this.#disableEditing = true;\n-    this.div.classList.add(\"disabled\");\n-    this.#fitToContent(true);\n-    this.select();\n-    this.parent.addInkEditorIfNeeded(true);\n-    this.moveInDOM();\n-    this.div.focus({\n-      preventScroll: true\n+    const {\n+      viewport: {\n+        rotation\n+      }\n+    } = parent;\n+    const {\n+      width: parentWidth,\n+      height: parentHeight\n+    } = target.getBoundingClientRect();\n+    const ac = DrawingEditor.#currentDrawingAC = new AbortController();\n+    const signal = parent.combinedSignal(ac);\n+    DrawingEditor.#currentPointerId ||= pointerId;\n+    DrawingEditor.#currentPointerType ??= pointerType;\n+    window.addEventListener(\"pointerup\", e => {\n+      if (DrawingEditor.#currentPointerId === e.pointerId) {\n+        this._endDraw(e);\n+      } else {\n+        DrawingEditor.#currentPointerIds?.delete(e.pointerId);\n+      }\n+    }, {\n+      signal\n     });\n+    window.addEventListener(\"pointercancel\", e => {\n+      if (DrawingEditor.#currentPointerId === e.pointerId) {\n+        this._currentParent.endDrawingSession();\n+      } else {\n+        DrawingEditor.#currentPointerIds?.delete(e.pointerId);\n+      }\n+    }, {\n+      signal\n+    });\n+    window.addEventListener(\"pointerdown\", e => {\n+      if (DrawingEditor.#currentPointerType !== e.pointerType) {\n+        return;\n+      }\n+      (DrawingEditor.#currentPointerIds ||= new Set()).add(e.pointerId);\n+      if (DrawingEditor.#currentDraw.isCancellable()) {\n+        DrawingEditor.#currentDraw.removeLastElement();\n+        if (DrawingEditor.#currentDraw.isEmpty()) {\n+          this._currentParent.endDrawingSession(true);\n+        } else {\n+          this._endDraw(null);\n+        }\n+      }\n+    }, {\n+      capture: true,\n+      passive: false,\n+      signal\n+    });\n+    window.addEventListener(\"contextmenu\", noContextMenu, {\n+      signal\n+    });\n+    target.addEventListener(\"pointermove\", this._drawMove.bind(this), {\n+      signal\n+    });\n+    target.addEventListener(\"touchmove\", e => {\n+      if (e.timeStamp === DrawingEditor.#currentMoveTimestamp) {\n+        stopEvent(e);\n+      }\n+    }, {\n+      signal\n+    });\n+    parent.toggleDrawing();\n+    uiManager._editorUndoBar?.hide();\n+    if (DrawingEditor.#currentDraw) {\n+      parent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.startNew(x, y, parentWidth, parentHeight, rotation));\n+      return;\n+    }\n+    uiManager.updateUIForDefaultProperties(this);\n+    DrawingEditor.#currentDraw = this.createDrawerInstance(x, y, parentWidth, parentHeight, rotation);\n+    DrawingEditor.#currentDrawingOptions = this.getDefaultDrawingOptions();\n+    this._currentParent = parent;\n+    ({\n+      id: this._currentDrawId\n+    } = parent.drawLayer.draw(this._mergeSVGProperties(DrawingEditor.#currentDrawingOptions.toSVGProperties(), DrawingEditor.#currentDraw.defaultSVGProperties), true, false));\n   }\n-  focusin(event) {\n-    if (!this._focusEventsAllowed) {\n+  static _drawMove(event) {\n+    DrawingEditor.#currentMoveTimestamp = -1;\n+    if (!DrawingEditor.#currentDraw) {\n       return;\n     }\n-    super.focusin(event);\n-    this.enableEditMode();\n+    const {\n+      offsetX,\n+      offsetY,\n+      pointerId\n+    } = event;\n+    if (DrawingEditor.#currentPointerId !== pointerId) {\n+      return;\n+    }\n+    if (DrawingEditor.#currentPointerIds?.size >= 1) {\n+      this._endDraw(event);\n+      return;\n+    }\n+    this._currentParent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.add(offsetX, offsetY));\n+    DrawingEditor.#currentMoveTimestamp = event.timeStamp;\n+    stopEvent(event);\n+  }\n+  static _cleanup(all) {\n+    if (all) {\n+      this._currentDrawId = -1;\n+      this._currentParent = null;\n+      DrawingEditor.#currentDraw = null;\n+      DrawingEditor.#currentDrawingOptions = null;\n+      DrawingEditor.#currentPointerType = null;\n+      DrawingEditor.#currentMoveTimestamp = NaN;\n+    }\n+    if (DrawingEditor.#currentDrawingAC) {\n+      DrawingEditor.#currentDrawingAC.abort();\n+      DrawingEditor.#currentDrawingAC = null;\n+      DrawingEditor.#currentPointerId = NaN;\n+      DrawingEditor.#currentPointerIds = null;\n+    }\n   }\n-  canvasPointerdown(event) {\n-    if (event.button !== 0 || !this.isInEditMode() || this.#disableEditing) {\n+  static _endDraw(event) {\n+    const parent = this._currentParent;\n+    if (!parent) {\n       return;\n     }\n-    this.setInForeground();\n-    event.preventDefault();\n-    if (!this.div.contains(document.activeElement)) {\n-      this.div.focus({\n-        preventScroll: true\n+    parent.toggleDrawing(true);\n+    this._cleanup(false);\n+    if (event?.target === parent.div) {\n+      parent.drawLayer.updateProperties(this._currentDrawId, DrawingEditor.#currentDraw.end(event.offsetX, event.offsetY));\n+    }\n+    if (this.supportMultipleDrawings) {\n+      const draw = DrawingEditor.#currentDraw;\n+      const drawId = this._currentDrawId;\n+      const lastElement = draw.getLastElement();\n+      parent.addCommands({\n+        cmd: () => {\n+          parent.drawLayer.updateProperties(drawId, draw.setLastElement(lastElement));\n+        },\n+        undo: () => {\n+          parent.drawLayer.updateProperties(drawId, draw.removeLastElement());\n+        },\n+        mustExec: false,\n+        type: AnnotationEditorParamsType.DRAW_STEP\n       });\n+      return;\n     }\n-    this.#startDrawing(event.offsetX, event.offsetY);\n+    this.endDrawing(false);\n   }\n-  canvasPointermove(event) {\n-    event.preventDefault();\n-    this.#draw(event.offsetX, event.offsetY);\n+  static endDrawing(isAborted) {\n+    const parent = this._currentParent;\n+    if (!parent) {\n+      return null;\n+    }\n+    parent.toggleDrawing(true);\n+    parent.cleanUndoStack(AnnotationEditorParamsType.DRAW_STEP);\n+    if (!DrawingEditor.#currentDraw.isEmpty()) {\n+      const {\n+        pageDimensions: [pageWidth, pageHeight],\n+        scale\n+      } = parent;\n+      const editor = parent.createAndAddNewEditor({\n+        offsetX: 0,\n+        offsetY: 0\n+      }, false, {\n+        drawId: this._currentDrawId,\n+        drawOutlines: DrawingEditor.#currentDraw.getOutlines(pageWidth * scale, pageHeight * scale, scale, this._INNER_MARGIN),\n+        drawingOptions: DrawingEditor.#currentDrawingOptions,\n+        mustBeCommitted: !isAborted\n+      });\n+      this._cleanup(true);\n+      return editor;\n+    }\n+    parent.drawLayer.remove(this._currentDrawId);\n+    this._cleanup(true);\n+    return null;\n   }\n-  canvasPointerup(event) {\n-    event.preventDefault();\n-    this.#endDrawing(event);\n+  createDrawingOptions(_data) {}\n+  static deserializeDraw(_pageX, _pageY, _pageWidth, _pageHeight, _innerWidth, _data) {\n+    unreachable(\"Not implemented\");\n   }\n-  canvasPointerleave(event) {\n-    this.#endDrawing(event);\n+  static async deserialize(data, parent, uiManager) {\n+    const {\n+      rawDims: {\n+        pageWidth,\n+        pageHeight,\n+        pageX,\n+        pageY\n+      }\n+    } = parent.viewport;\n+    const drawOutlines = this.deserializeDraw(pageX, pageY, pageWidth, pageHeight, this._INNER_MARGIN, data);\n+    const editor = await super.deserialize(data, parent, uiManager);\n+    editor.createDrawingOptions(data);\n+    editor.#createDrawOutlines({\n+      drawOutlines\n+    });\n+    editor.#addToDrawLayer();\n+    editor.onScaleChanging();\n+    editor.rotate();\n+    return editor;\n   }\n-  #endDrawing(event) {\n-    this.canvas.removeEventListener(\"pointerleave\", this.#boundCanvasPointerleave);\n-    this.canvas.removeEventListener(\"pointermove\", this.#boundCanvasPointermove);\n-    this.canvas.removeEventListener(\"pointerup\", this.#boundCanvasPointerup);\n-    this.canvas.addEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n-    if (this.#canvasContextMenuTimeoutId) {\n-      clearTimeout(this.#canvasContextMenuTimeoutId);\n-    }\n-    this.#canvasContextMenuTimeoutId = setTimeout(() => {\n-      this.#canvasContextMenuTimeoutId = null;\n-      this.canvas.removeEventListener(\"contextmenu\", noContextMenu);\n-    }, 10);\n-    this.#stopDrawing(event.offsetX, event.offsetY);\n-    this.addToAnnotationStorage();\n-    this.setInBackground();\n+  serializeDraw(isForCopying) {\n+    const [pageX, pageY] = this.pageTranslation;\n+    const [pageWidth, pageHeight] = this.pageDimensions;\n+    return this.#drawOutlines.serialize([pageX, pageY, pageWidth, pageHeight], isForCopying);\n   }\n-  #createCanvas() {\n-    this.canvas = document.createElement(\"canvas\");\n-    this.canvas.width = this.canvas.height = 0;\n-    this.canvas.className = \"inkEditorCanvas\";\n-    this.canvas.setAttribute(\"data-l10n-id\", \"pdfjs-ink-canvas\");\n-    this.div.append(this.canvas);\n-    this.ctx = this.canvas.getContext(\"2d\");\n-  }\n-  #createObserver() {\n-    this.#observer = new ResizeObserver(entries => {\n-      const rect = entries[0].contentRect;\n-      if (rect.width && rect.height) {\n-        this.setDimensions(rect.width, rect.height);\n-      }\n+  renderAnnotationElement(annotation) {\n+    annotation.updateEdited({\n+      rect: this.getRect(0, 0)\n     });\n-    this.#observer.observe(this.div);\n+    return null;\n   }\n-  get isResizable() {\n-    return !this.isEmpty() && this.#disableEditing;\n+  static canCreateNewEmptyEditor() {\n+    return false;\n   }\n-  render() {\n-    if (this.div) {\n-      return this.div;\n+}\n+\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Feditor\u002Fdrawers\u002Finkdraw.js\n+\n+\n+\n+\n+\n+\n+\n+\n+class InkDrawOutliner {\n+  #last = new Float64Array(6);\n+  #line;\n+  #lines;\n+  #rotation;\n+  #thickness;\n+  #points;\n+  #lastSVGPath = \"\";\n+  #lastIndex = 0;\n+  #outlines = new InkDrawOutline();\n+  #parentWidth;\n+  #parentHeight;\n+  constructor(x, y, parentWidth, parentHeight, rotation, thickness) {\n+    this.#parentWidth = parentWidth;\n+    this.#parentHeight = parentHeight;\n+    this.#rotation = rotation;\n+    this.#thickness = thickness;\n+    [x, y] = this.#normalizePoint(x, y);\n+    const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n+    this.#points = [x, y];\n+    this.#lines = [{\n+      line,\n+      points: this.#points\n+    }];\n+    this.#last.set(line, 0);\n+  }\n+  updateProperty(name, value) {\n+    if (name === \"stroke-width\") {\n+      this.#thickness = value;\n     }\n-    let baseX, baseY;\n-    if (this.width) {\n-      baseX = this.x;\n-      baseY = this.y;\n+  }\n+  #normalizePoint(x, y) {\n+    return Outline._normalizePoint(x, y, this.#parentWidth, this.#parentHeight, this.#rotation);\n+  }\n+  isEmpty() {\n+    return !this.#lines || this.#lines.length === 0;\n+  }\n+  isCancellable() {\n+    return this.#points.length \u003C= 10;\n+  }\n+  add(x, y) {\n+    [x, y] = this.#normalizePoint(x, y);\n+    const [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n+    const diffX = x - x2;\n+    const diffY = y - y2;\n+    const d = Math.hypot(this.#parentWidth * diffX, this.#parentHeight * diffY);\n+    if (d \u003C= 2) {\n+      return null;\n     }\n-    super.render();\n-    this.div.setAttribute(\"data-l10n-id\", \"pdfjs-ink\");\n-    const [x, y, w, h] = this.#getInitialBBox();\n-    this.setAt(x, y, 0, 0);\n-    this.setDims(w, h);\n-    this.#createCanvas();\n-    if (this.width) {\n-      const [parentWidth, parentHeight] = this.parentDimensions;\n-      this.setAspectRatio(this.width * parentWidth, this.height * parentHeight);\n-      this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n-      this.#isCanvasInitialized = true;\n-      this.#setCanvasDims();\n-      this.setDims(this.width * parentWidth, this.height * parentHeight);\n-      this.#redraw();\n-      this.div.classList.add(\"disabled\");\n-    } else {\n-      this.div.classList.add(\"editing\");\n-      this.enableEditMode();\n+    this.#points.push(x, y);\n+    if (isNaN(x1)) {\n+      this.#last.set([x2, y2, x, y], 2);\n+      this.#line.push(NaN, NaN, NaN, NaN, x, y);\n+      return {\n+        path: {\n+          d: this.toSVGPath()\n+        }\n+      };\n     }\n-    this.#createObserver();\n-    return this.div;\n+    if (isNaN(this.#last[0])) {\n+      this.#line.splice(6, 6);\n+    }\n+    this.#last.set([x1, y1, x2, y2, x, y], 0);\n+    this.#line.push(...Outline.createBezierPoints(x1, y1, x2, y2, x, y));\n+    return {\n+      path: {\n+        d: this.toSVGPath()\n+      }\n+    };\n   }\n-  #setCanvasDims() {\n-    if (!this.#isCanvasInitialized) {\n-      return;\n+  end(x, y) {\n+    const change = this.add(x, y);\n+    if (change) {\n+      return change;\n     }\n-    const [parentWidth, parentHeight] = this.parentDimensions;\n-    this.canvas.width = Math.ceil(this.width * parentWidth);\n-    this.canvas.height = Math.ceil(this.height * parentHeight);\n-    this.#updateTransform();\n-  }\n-  setDimensions(width, height) {\n-    const roundedWidth = Math.round(width);\n-    const roundedHeight = Math.round(height);\n-    if (this.#realWidth === roundedWidth && this.#realHeight === roundedHeight) {\n-      return;\n+    if (this.#points.length === 2) {\n+      return {\n+        path: {\n+          d: this.toSVGPath()\n+        }\n+      };\n     }\n-    this.#realWidth = roundedWidth;\n-    this.#realHeight = roundedHeight;\n-    this.canvas.style.visibility = \"hidden\";\n-    const [parentWidth, parentHeight] = this.parentDimensions;\n-    this.width = width \u002F parentWidth;\n-    this.height = height \u002F parentHeight;\n-    this.fixAndSetPosition();\n-    if (this.#disableEditing) {\n-      this.#setScaleFactor(width, height);\n+    return null;\n+  }\n+  startNew(x, y, parentWidth, parentHeight, rotation) {\n+    this.#parentWidth = parentWidth;\n+    this.#parentHeight = parentHeight;\n+    this.#rotation = rotation;\n+    [x, y] = this.#normalizePoint(x, y);\n+    const line = this.#line = [NaN, NaN, NaN, NaN, x, y];\n+    this.#points = [x, y];\n+    const last = this.#lines.at(-1);\n+    if (last) {\n+      last.line = new Float32Array(last.line);\n+      last.points = new Float32Array(last.points);\n+    }\n+    this.#lines.push({\n+      line,\n+      points: this.#points\n+    });\n+    this.#last.set(line, 0);\n+    this.#lastIndex = 0;\n+    this.toSVGPath();\n+    return null;\n+  }\n+  getLastElement() {\n+    return this.#lines.at(-1);\n+  }\n+  setLastElement(element) {\n+    if (!this.#lines) {\n+      return this.#outlines.setLastElement(element);\n+    }\n+    this.#lines.push(element);\n+    this.#line = element.line;\n+    this.#points = element.points;\n+    this.#lastIndex = 0;\n+    return {\n+      path: {\n+        d: this.toSVGPath()\n+      }\n+    };\n+  }\n+  removeLastElement() {\n+    if (!this.#lines) {\n+      return this.#outlines.removeLastElement();\n     }\n-    this.#setCanvasDims();\n-    this.#redraw();\n-    this.canvas.style.visibility = \"visible\";\n-    this.fixDims();\n-  }\n-  #setScaleFactor(width, height) {\n-    const padding = this.#getPadding();\n-    const scaleFactorW = (width - padding) \u002F this.#baseWidth;\n-    const scaleFactorH = (height - padding) \u002F this.#baseHeight;\n-    this.scaleFactor = Math.min(scaleFactorW, scaleFactorH);\n-  }\n-  #updateTransform() {\n-    const padding = this.#getPadding() \u002F 2;\n-    this.ctx.setTransform(this.scaleFactor, 0, 0, this.scaleFactor, this.translationX * this.scaleFactor + padding, this.translationY * this.scaleFactor + padding);\n-  }\n-  static #buildPath2D(bezier) {\n-    const path2D = new Path2D();\n-    for (let i = 0, ii = bezier.length; i \u003C ii; i++) {\n-      const [first, control1, control2, second] = bezier[i];\n-      if (i === 0) {\n-        path2D.moveTo(...first);\n+    this.#lines.pop();\n+    this.#lastSVGPath = \"\";\n+    for (let i = 0, ii = this.#lines.length; i \u003C ii; i++) {\n+      const {\n+        line,\n+        points\n+      } = this.#lines[i];\n+      this.#line = line;\n+      this.#points = points;\n+      this.#lastIndex = 0;\n+      this.toSVGPath();\n+    }\n+    return {\n+      path: {\n+        d: this.#lastSVGPath\n       }\n-      path2D.bezierCurveTo(control1[0], control1[1], control2[0], control2[1], second[0], second[1]);\n+    };\n+  }\n+  toSVGPath() {\n+    const firstX = Outline.svgRound(this.#line[4]);\n+    const firstY = Outline.svgRound(this.#line[5]);\n+    if (this.#points.length === 2) {\n+      this.#lastSVGPath = `${this.#lastSVGPath} M ${firstX} ${firstY} Z`;\n+      return this.#lastSVGPath;\n+    }\n+    if (this.#points.length \u003C= 6) {\n+      const i = this.#lastSVGPath.lastIndexOf(\"M\");\n+      this.#lastSVGPath = `${this.#lastSVGPath.slice(0, i)} M ${firstX} ${firstY}`;\n+      this.#lastIndex = 6;\n+    }\n+    if (this.#points.length === 4) {\n+      const secondX = Outline.svgRound(this.#line[10]);\n+      const secondY = Outline.svgRound(this.#line[11]);\n+      this.#lastSVGPath = `${this.#lastSVGPath} L ${secondX} ${secondY}`;\n+      this.#lastIndex = 12;\n+      return this.#lastSVGPath;\n     }\n-    return path2D;\n+    const buffer = [];\n+    if (this.#lastIndex === 0) {\n+      buffer.push(`M ${firstX} ${firstY}`);\n+      this.#lastIndex = 6;\n+    }\n+    for (let i = this.#lastIndex, ii = this.#line.length; i \u003C ii; i += 6) {\n+      const [c1x, c1y, c2x, c2y, x, y] = this.#line.slice(i, i + 6).map(Outline.svgRound);\n+      buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n+    }\n+    this.#lastSVGPath += buffer.join(\" \");\n+    this.#lastIndex = this.#line.length;\n+    return this.#lastSVGPath;\n+  }\n+  getOutlines(parentWidth, parentHeight, scale, innerMargin) {\n+    const last = this.#lines.at(-1);\n+    last.line = new Float32Array(last.line);\n+    last.points = new Float32Array(last.points);\n+    this.#outlines.build(this.#lines, parentWidth, parentHeight, scale, this.#rotation, this.#thickness, innerMargin);\n+    this.#last = null;\n+    this.#line = null;\n+    this.#lines = null;\n+    this.#lastSVGPath = null;\n+    return this.#outlines;\n   }\n-  static #toPDFCoordinates(points, rect, rotation) {\n-    const [blX, blY, trX, trY] = rect;\n-    switch (rotation) {\n+  get defaultSVGProperties() {\n+    return {\n+      root: {\n+        viewBox: \"0 0 10000 10000\"\n+      },\n+      rootClass: {\n+        draw: true\n+      },\n+      bbox: [0, 0, 1, 1]\n+    };\n+  }\n+}\n+class InkDrawOutline extends Outline {\n+  #bbox;\n+  #currentRotation = 0;\n+  #innerMargin;\n+  #lines;\n+  #parentWidth;\n+  #parentHeight;\n+  #parentScale;\n+  #rotation;\n+  #thickness;\n+  build(lines, parentWidth, parentHeight, parentScale, rotation, thickness, innerMargin) {\n+    this.#parentWidth = parentWidth;\n+    this.#parentHeight = parentHeight;\n+    this.#parentScale = parentScale;\n+    this.#rotation = rotation;\n+    this.#thickness = thickness;\n+    this.#innerMargin = innerMargin ?? 0;\n+    this.#lines = lines;\n+    this.#computeBbox();\n+  }\n+  get thickness() {\n+    return this.#thickness;\n+  }\n+  setLastElement(element) {\n+    this.#lines.push(element);\n+    return {\n+      path: {\n+        d: this.toSVGPath()\n+      }\n+    };\n+  }\n+  removeLastElement() {\n+    this.#lines.pop();\n+    return {\n+      path: {\n+        d: this.toSVGPath()\n+      }\n+    };\n+  }\n+  toSVGPath() {\n+    const buffer = [];\n+    for (const {\n+      line\n+    } of this.#lines) {\n+      buffer.push(`M${Outline.svgRound(line[4])} ${Outline.svgRound(line[5])}`);\n+      if (line.length === 6) {\n+        buffer.push(\"Z\");\n+        continue;\n+      }\n+      if (line.length === 12 && isNaN(line[6])) {\n+        buffer.push(`L${Outline.svgRound(line[10])} ${Outline.svgRound(line[11])}`);\n+        continue;\n+      }\n+      for (let i = 6, ii = line.length; i \u003C ii; i += 6) {\n+        const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6).map(Outline.svgRound);\n+        buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n+      }\n+    }\n+    return buffer.join(\"\");\n+  }\n+  serialize([pageX, pageY, pageWidth, pageHeight], isForCopying) {\n+    const serializedLines = [];\n+    const serializedPoints = [];\n+    const [x, y, width, height] = this.#getBBoxWithNoMargin();\n+    let tx, ty, sx, sy, x1, y1, x2, y2, rescaleFn;\n+    switch (this.#rotation) {\n       case 0:\n-        for (let i = 0, ii = points.length; i \u003C ii; i += 2) {\n-          points[i] += blX;\n-          points[i + 1] = trY - points[i + 1];\n-        }\n+        rescaleFn = Outline._rescale;\n+        tx = pageX;\n+        ty = pageY + pageHeight;\n+        sx = pageWidth;\n+        sy = -pageHeight;\n+        x1 = pageX + x * pageWidth;\n+        y1 = pageY + (1 - y - height) * pageHeight;\n+        x2 = pageX + (x + width) * pageWidth;\n+        y2 = pageY + (1 - y) * pageHeight;\n         break;\n       case 90:\n-        for (let i = 0, ii = points.length; i \u003C ii; i += 2) {\n-          const x = points[i];\n-          points[i] = points[i + 1] + blX;\n-          points[i + 1] = x + blY;\n-        }\n+        rescaleFn = Outline._rescaleAndSwap;\n+        tx = pageX;\n+        ty = pageY;\n+        sx = pageWidth;\n+        sy = pageHeight;\n+        x1 = pageX + y * pageWidth;\n+        y1 = pageY + x * pageHeight;\n+        x2 = pageX + (y + height) * pageWidth;\n+        y2 = pageY + (x + width) * pageHeight;\n         break;\n       case 180:\n-        for (let i = 0, ii = points.length; i \u003C ii; i += 2) {\n-          points[i] = trX - points[i];\n-          points[i + 1] += blY;\n-        }\n+        rescaleFn = Outline._rescale;\n+        tx = pageX + pageWidth;\n+        ty = pageY;\n+        sx = -pageWidth;\n+        sy = pageHeight;\n+        x1 = pageX + (1 - x - width) * pageWidth;\n+        y1 = pageY + y * pageHeight;\n+        x2 = pageX + (1 - x) * pageWidth;\n+        y2 = pageY + (y + height) * pageHeight;\n         break;\n       case 270:\n-        for (let i = 0, ii = points.length; i \u003C ii; i += 2) {\n-          const x = points[i];\n-          points[i] = trX - points[i + 1];\n-          points[i + 1] = trY - x;\n-        }\n+        rescaleFn = Outline._rescaleAndSwap;\n+        tx = pageX + pageWidth;\n+        ty = pageY + pageHeight;\n+        sx = -pageWidth;\n+        sy = -pageHeight;\n+        x1 = pageX + (1 - y - height) * pageWidth;\n+        y1 = pageY + (1 - x - width) * pageHeight;\n+        x2 = pageX + (1 - y) * pageWidth;\n+        y2 = pageY + (1 - x) * pageHeight;\n         break;\n-      default:\n-        throw new Error(\"Invalid rotation\");\n     }\n-    return points;\n+    for (const {\n+      line,\n+      points\n+    } of this.#lines) {\n+      serializedLines.push(rescaleFn(line, tx, ty, sx, sy, isForCopying ? new Array(line.length) : null));\n+      serializedPoints.push(rescaleFn(points, tx, ty, sx, sy, isForCopying ? new Array(points.length) : null));\n+    }\n+    return {\n+      lines: serializedLines,\n+      points: serializedPoints,\n+      rect: [x1, y1, x2, y2]\n+    };\n   }\n-  static #fromPDFCoordinates(points, rect, rotation) {\n-    const [blX, blY, trX, trY] = rect;\n+  static deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, {\n+    paths: {\n+      lines,\n+      points\n+    },\n+    rotation,\n+    thickness\n+  }) {\n+    const newLines = [];\n+    let tx, ty, sx, sy, rescaleFn;\n     switch (rotation) {\n       case 0:\n-        for (let i = 0, ii = points.length; i \u003C ii; i += 2) {\n-          points[i] -= blX;\n-          points[i + 1] = trY - points[i + 1];\n-        }\n+        rescaleFn = Outline._rescale;\n+        tx = -pageX \u002F pageWidth;\n+        ty = pageY \u002F pageHeight + 1;\n+        sx = 1 \u002F pageWidth;\n+        sy = -1 \u002F pageHeight;\n         break;\n       case 90:\n-        for (let i = 0, ii = points.length; i \u003C ii; i += 2) {\n-          const x = points[i];\n-          points[i] = points[i + 1] - blY;\n-          points[i + 1] = x - blX;\n-        }\n+        rescaleFn = Outline._rescaleAndSwap;\n+        tx = -pageY \u002F pageHeight;\n+        ty = -pageX \u002F pageWidth;\n+        sx = 1 \u002F pageHeight;\n+        sy = 1 \u002F pageWidth;\n         break;\n       case 180:\n-        for (let i = 0, ii = points.length; i \u003C ii; i += 2) {\n-          points[i] = trX - points[i];\n-          points[i + 1] -= blY;\n-        }\n+        rescaleFn = Outline._rescale;\n+        tx = pageX \u002F pageWidth + 1;\n+        ty = -pageY \u002F pageHeight;\n+        sx = -1 \u002F pageWidth;\n+        sy = 1 \u002F pageHeight;\n         break;\n       case 270:\n-        for (let i = 0, ii = points.length; i \u003C ii; i += 2) {\n-          const x = points[i];\n-          points[i] = trY - points[i + 1];\n-          points[i + 1] = trX - x;\n+        rescaleFn = Outline._rescaleAndSwap;\n+        tx = pageY \u002F pageHeight + 1;\n+        ty = pageX \u002F pageWidth + 1;\n+        sx = -1 \u002F pageHeight;\n+        sy = -1 \u002F pageWidth;\n+        break;\n+    }\n+    if (!lines) {\n+      lines = [];\n+      for (const point of points) {\n+        const len = point.length;\n+        if (len === 2) {\n+          lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1]]));\n+          continue;\n+        }\n+        if (len === 4) {\n+          lines.push(new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1], NaN, NaN, NaN, NaN, point[2], point[3]]));\n+          continue;\n+        }\n+        const line = new Float32Array(3 * (len - 2));\n+        lines.push(line);\n+        let [x1, y1, x2, y2] = point.subarray(0, 4);\n+        line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n+        for (let i = 4; i \u003C len; i += 2) {\n+          const x = point[i];\n+          const y = point[i + 1];\n+          line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n+          [x1, y1, x2, y2] = [x2, y2, x, y];\n+        }\n+      }\n+    }\n+    for (let i = 0, ii = lines.length; i \u003C ii; i++) {\n+      newLines.push({\n+        line: rescaleFn(lines[i].map(x => x ?? NaN), tx, ty, sx, sy),\n+        points: rescaleFn(points[i].map(x => x ?? NaN), tx, ty, sx, sy)\n+      });\n+    }\n+    const outlines = new this.prototype.constructor();\n+    outlines.build(newLines, pageWidth, pageHeight, 1, rotation, thickness, innerMargin);\n+    return outlines;\n+  }\n+  #getMarginComponents(thickness = this.#thickness) {\n+    const margin = this.#innerMargin + thickness \u002F 2 * this.#parentScale;\n+    return this.#rotation % 180 === 0 ? [margin \u002F this.#parentWidth, margin \u002F this.#parentHeight] : [margin \u002F this.#parentHeight, margin \u002F this.#parentWidth];\n+  }\n+  #getBBoxWithNoMargin() {\n+    const [x, y, width, height] = this.#bbox;\n+    const [marginX, marginY] = this.#getMarginComponents(0);\n+    return [x + marginX, y + marginY, width - 2 * marginX, height - 2 * marginY];\n+  }\n+  #computeBbox() {\n+    const bbox = this.#bbox = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]);\n+    for (const {\n+      line\n+    } of this.#lines) {\n+      if (line.length \u003C= 12) {\n+        for (let i = 4, ii = line.length; i \u003C ii; i += 6) {\n+          Util.pointBoundingBox(line[i], line[i + 1], bbox);\n         }\n+        continue;\n+      }\n+      let lastX = line[4],\n+        lastY = line[5];\n+      for (let i = 6, ii = line.length; i \u003C ii; i += 6) {\n+        const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6);\n+        Util.bezierBoundingBox(lastX, lastY, c1x, c1y, c2x, c2y, x, y, bbox);\n+        lastX = x;\n+        lastY = y;\n+      }\n+    }\n+    const [marginX, marginY] = this.#getMarginComponents();\n+    bbox[0] = MathClamp(bbox[0] - marginX, 0, 1);\n+    bbox[1] = MathClamp(bbox[1] - marginY, 0, 1);\n+    bbox[2] = MathClamp(bbox[2] + marginX, 0, 1);\n+    bbox[3] = MathClamp(bbox[3] + marginY, 0, 1);\n+    bbox[2] -= bbox[0];\n+    bbox[3] -= bbox[1];\n+  }\n+  get box() {\n+    return this.#bbox;\n+  }\n+  updateProperty(name, value) {\n+    if (name === \"stroke-width\") {\n+      return this.#updateThickness(value);\n+    }\n+    return null;\n+  }\n+  #updateThickness(thickness) {\n+    const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n+    this.#thickness = thickness;\n+    const [newMarginX, newMarginY] = this.#getMarginComponents();\n+    const [diffMarginX, diffMarginY] = [newMarginX - oldMarginX, newMarginY - oldMarginY];\n+    const bbox = this.#bbox;\n+    bbox[0] -= diffMarginX;\n+    bbox[1] -= diffMarginY;\n+    bbox[2] += 2 * diffMarginX;\n+    bbox[3] += 2 * diffMarginY;\n+    return bbox;\n+  }\n+  updateParentDimensions([width, height], scale) {\n+    const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n+    this.#parentWidth = width;\n+    this.#parentHeight = height;\n+    this.#parentScale = scale;\n+    const [newMarginX, newMarginY] = this.#getMarginComponents();\n+    const diffMarginX = newMarginX - oldMarginX;\n+    const diffMarginY = newMarginY - oldMarginY;\n+    const bbox = this.#bbox;\n+    bbox[0] -= diffMarginX;\n+    bbox[1] -= diffMarginY;\n+    bbox[2] += 2 * diffMarginX;\n+    bbox[3] += 2 * diffMarginY;\n+    return bbox;\n+  }\n+  updateRotation(rotation) {\n+    this.#currentRotation = rotation;\n+    return {\n+      path: {\n+        transform: this.rotationTransform\n+      }\n+    };\n+  }\n+  get viewBox() {\n+    return this.#bbox.map(Outline.svgRound).join(\" \");\n+  }\n+  get defaultProperties() {\n+    const [x, y] = this.#bbox;\n+    return {\n+      root: {\n+        viewBox: this.viewBox\n+      },\n+      path: {\n+        \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`\n+      }\n+    };\n+  }\n+  get rotationTransform() {\n+    const [,, width, height] = this.#bbox;\n+    let a = 0,\n+      b = 0,\n+      c = 0,\n+      d = 0,\n+      e = 0,\n+      f = 0;\n+    switch (this.#currentRotation) {\n+      case 90:\n+        b = height \u002F width;\n+        c = -width \u002F height;\n+        e = width;\n+        break;\n+      case 180:\n+        a = -1;\n+        d = -1;\n+        e = width;\n+        f = height;\n+        break;\n+      case 270:\n+        b = -height \u002F width;\n+        c = width \u002F height;\n+        f = height;\n         break;\n       default:\n-        throw new Error(\"Invalid rotation\");\n+        return \"\";\n     }\n-    return points;\n+    return `matrix(${a} ${b} ${c} ${d} ${Outline.svgRound(e)} ${Outline.svgRound(f)})`;\n   }\n-  #serializePaths(s, tx, ty, rect) {\n-    const paths = [];\n-    const padding = this.thickness \u002F 2;\n-    const shiftX = s * tx + padding;\n-    const shiftY = s * ty + padding;\n-    for (const bezier of this.paths) {\n-      const buffer = [];\n-      const points = [];\n-      for (let j = 0, jj = bezier.length; j \u003C jj; j++) {\n-        const [first, control1, control2, second] = bezier[j];\n-        if (first[0] === second[0] && first[1] === second[1] && jj === 1) {\n-          const p0 = s * first[0] + shiftX;\n-          const p1 = s * first[1] + shiftY;\n-          buffer.push(p0, p1);\n-          points.push(p0, p1);\n-          break;\n+  getPathResizingSVGProperties([newX, newY, newWidth, newHeight]) {\n+    const [marginX, marginY] = this.#getMarginComponents();\n+    const [x, y, width, height] = this.#bbox;\n+    if (Math.abs(width - marginX) \u003C= Outline.PRECISION || Math.abs(height - marginY) \u003C= Outline.PRECISION) {\n+      const tx = newX + newWidth \u002F 2 - (x + width \u002F 2);\n+      const ty = newY + newHeight \u002F 2 - (y + height \u002F 2);\n+      return {\n+        path: {\n+          \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n+          transform: `${this.rotationTransform} translate(${tx} ${ty})`\n         }\n-        const p10 = s * first[0] + shiftX;\n-        const p11 = s * first[1] + shiftY;\n-        const p20 = s * control1[0] + shiftX;\n-        const p21 = s * control1[1] + shiftY;\n-        const p30 = s * control2[0] + shiftX;\n-        const p31 = s * control2[1] + shiftY;\n-        const p40 = s * second[0] + shiftX;\n-        const p41 = s * second[1] + shiftY;\n-        if (j === 0) {\n-          buffer.push(p10, p11);\n-          points.push(p10, p11);\n-        }\n-        buffer.push(p20, p21, p30, p31, p40, p41);\n-        points.push(p20, p21);\n-        if (j === jj - 1) {\n-          points.push(p40, p41);\n+      };\n+    }\n+    const s1x = (newWidth - 2 * marginX) \u002F (width - 2 * marginX);\n+    const s1y = (newHeight - 2 * marginY) \u002F (height - 2 * marginY);\n+    const s2x = width \u002F newWidth;\n+    const s2y = height \u002F newHeight;\n+    return {\n+      path: {\n+        \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`,\n+        transform: `${this.rotationTransform} scale(${s2x} ${s2y}) ` + `translate(${Outline.svgRound(marginX)} ${Outline.svgRound(marginY)}) scale(${s1x} ${s1y}) ` + `translate(${Outline.svgRound(-marginX)} ${Outline.svgRound(-marginY)})`\n+      }\n+    };\n+  }\n+  getPathResizedSVGProperties([newX, newY, newWidth, newHeight]) {\n+    const [marginX, marginY] = this.#getMarginComponents();\n+    const bbox = this.#bbox;\n+    const [x, y, width, height] = bbox;\n+    bbox[0] = newX;\n+    bbox[1] = newY;\n+    bbox[2] = newWidth;\n+    bbox[3] = newHeight;\n+    if (Math.abs(width - marginX) \u003C= Outline.PRECISION || Math.abs(height - marginY) \u003C= Outline.PRECISION) {\n+      const tx = newX + newWidth \u002F 2 - (x + width \u002F 2);\n+      const ty = newY + newHeight \u002F 2 - (y + height \u002F 2);\n+      for (const {\n+        line,\n+        points\n+      } of this.#lines) {\n+        Outline._translate(line, tx, ty, line);\n+        Outline._translate(points, tx, ty, points);\n+      }\n+      return {\n+        root: {\n+          viewBox: this.viewBox\n+        },\n+        path: {\n+          \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n+          transform: this.rotationTransform || null,\n+          d: this.toSVGPath()\n         }\n+      };\n+    }\n+    const s1x = (newWidth - 2 * marginX) \u002F (width - 2 * marginX);\n+    const s1y = (newHeight - 2 * marginY) \u002F (height - 2 * marginY);\n+    const tx = -s1x * (x + marginX) + newX + marginX;\n+    const ty = -s1y * (y + marginY) + newY + marginY;\n+    if (s1x !== 1 || s1y !== 1 || tx !== 0 || ty !== 0) {\n+      for (const {\n+        line,\n+        points\n+      } of this.#lines) {\n+        Outline._rescale(line, tx, ty, s1x, s1y, line);\n+        Outline._rescale(points, tx, ty, s1x, s1y, points);\n       }\n-      paths.push({\n-        bezier: InkEditor.#toPDFCoordinates(buffer, rect, this.rotation),\n-        points: InkEditor.#toPDFCoordinates(points, rect, this.rotation)\n-      });\n     }\n-    return paths;\n+    return {\n+      root: {\n+        viewBox: this.viewBox\n+      },\n+      path: {\n+        \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n+        transform: this.rotationTransform || null,\n+        d: this.toSVGPath()\n+      }\n+    };\n   }\n-  #getBbox() {\n-    let xMin = Infinity;\n-    let xMax = -Infinity;\n-    let yMin = Infinity;\n-    let yMax = -Infinity;\n-    for (const path of this.paths) {\n-      for (const [first, control1, control2, second] of path) {\n-        const bbox = Util.bezierBoundingBox(...first, ...control1, ...control2, ...second);\n-        xMin = Math.min(xMin, bbox[0]);\n-        yMin = Math.min(yMin, bbox[1]);\n-        xMax = Math.max(xMax, bbox[2]);\n-        yMax = Math.max(yMax, bbox[3]);\n+  getPathTranslatedSVGProperties([newX, newY], parentDimensions) {\n+    const [newParentWidth, newParentHeight] = parentDimensions;\n+    const bbox = this.#bbox;\n+    const tx = newX - bbox[0];\n+    const ty = newY - bbox[1];\n+    if (this.#parentWidth === newParentWidth && this.#parentHeight === newParentHeight) {\n+      for (const {\n+        line,\n+        points\n+      } of this.#lines) {\n+        Outline._translate(line, tx, ty, line);\n+        Outline._translate(points, tx, ty, points);\n       }\n+    } else {\n+      const sx = this.#parentWidth \u002F newParentWidth;\n+      const sy = this.#parentHeight \u002F newParentHeight;\n+      this.#parentWidth = newParentWidth;\n+      this.#parentHeight = newParentHeight;\n+      for (const {\n+        line,\n+        points\n+      } of this.#lines) {\n+        Outline._rescale(line, tx, ty, sx, sy, line);\n+        Outline._rescale(points, tx, ty, sx, sy, points);\n+      }\n+      bbox[2] *= sx;\n+      bbox[3] *= sy;\n     }\n-    return [xMin, yMin, xMax, yMax];\n+    bbox[0] = newX;\n+    bbox[1] = newY;\n+    return {\n+      root: {\n+        viewBox: this.viewBox\n+      },\n+      path: {\n+        d: this.toSVGPath(),\n+        \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`\n+      }\n+    };\n   }\n-  #getPadding() {\n-    return this.#disableEditing ? Math.ceil(this.thickness * this.parentScale) : 0;\n+  get defaultSVGProperties() {\n+    const bbox = this.#bbox;\n+    return {\n+      root: {\n+        viewBox: this.viewBox\n+      },\n+      rootClass: {\n+        draw: true\n+      },\n+      path: {\n+        d: this.toSVGPath(),\n+        \"transform-origin\": `${Outline.svgRound(bbox[0])} ${Outline.svgRound(bbox[1])}`,\n+        transform: this.rotationTransform || null\n+      },\n+      bbox\n+    };\n   }\n-  #fitToContent(firstTime = false) {\n-    if (this.isEmpty()) {\n+}\n+\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Feditor\u002Fink.js\n+\n+\n+\n+\n+\n+\n+\n+class InkDrawingOptions extends DrawingOptions {\n+  constructor(viewerParameters) {\n+    super();\n+    this._viewParameters = viewerParameters;\n+    super.updateProperties({\n+      fill: \"none\",\n+      stroke: AnnotationEditor._defaultLineColor,\n+      \"stroke-opacity\": 1,\n+      \"stroke-width\": 1,\n+      \"stroke-linecap\": \"round\",\n+      \"stroke-linejoin\": \"round\",\n+      \"stroke-miterlimit\": 10\n+    });\n+  }\n+  updateSVGProperty(name, value) {\n+    if (name === \"stroke-width\") {\n+      value ??= this[\"stroke-width\"];\n+      value *= this._viewParameters.realScale;\n+    }\n+    super.updateSVGProperty(name, value);\n+  }\n+  clone() {\n+    const clone = new InkDrawingOptions(this._viewParameters);\n+    clone.updateAll(this);\n+    return clone;\n+  }\n+}\n+class InkEditor extends DrawingEditor {\n+  static _type = \"ink\";\n+  static _editorType = AnnotationEditorType.INK;\n+  static _defaultDrawingOptions = null;\n+  constructor(params) {\n+    super({\n+      ...params,\n+      name: \"inkEditor\"\n+    });\n+    this._willKeepAspectRatio = true;\n+    this.defaultL10nId = \"pdfjs-editor-ink-editor\";\n+  }\n+  static initialize(l10n, uiManager) {\n+    AnnotationEditor.initialize(l10n, uiManager);\n+    this._defaultDrawingOptions = new InkDrawingOptions(uiManager.viewParameters);\n+  }\n+  static getDefaultDrawingOptions(options) {\n+    const clone = this._defaultDrawingOptions.clone();\n+    clone.updateProperties(options);\n+    return clone;\n+  }\n+  static get supportMultipleDrawings() {\n+    return true;\n+  }\n+  static get typesMap() {\n+    return shadow(this, \"typesMap\", new Map([[AnnotationEditorParamsType.INK_THICKNESS, \"stroke-width\"], [AnnotationEditorParamsType.INK_COLOR, \"stroke\"], [AnnotationEditorParamsType.INK_OPACITY, \"stroke-opacity\"]]));\n+  }\n+  static createDrawerInstance(x, y, parentWidth, parentHeight, rotation) {\n+    return new InkDrawOutliner(x, y, parentWidth, parentHeight, rotation, this._defaultDrawingOptions[\"stroke-width\"]);\n+  }\n+  static deserializeDraw(pageX, pageY, pageWidth, pageHeight, innerMargin, data) {\n+    return InkDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n+  }\n+  static async deserialize(data, parent, uiManager) {\n+    let initialData = null;\n+    if (data instanceof InkAnnotationElement) {\n+      const {\n+        data: {\n+          inkLists,\n+          rect,\n+          rotation,\n+          id,\n+          color,\n+          opacity,\n+          borderStyle: {\n+            rawWidth: thickness\n+          },\n+          popupRef\n+        },\n+        parent: {\n+          page: {\n+            pageNumber\n+          }\n+        }\n+      } = data;\n+      initialData = data = {\n+        annotationType: AnnotationEditorType.INK,\n+        color: Array.from(color),\n+        thickness,\n+        opacity,\n+        paths: {\n+          points: inkLists\n+        },\n+        boxes: null,\n+        pageIndex: pageNumber - 1,\n+        rect: rect.slice(0),\n+        rotation,\n+        id,\n+        deleted: false,\n+        popupRef\n+      };\n+    }\n+    const editor = await super.deserialize(data, parent, uiManager);\n+    editor.annotationElementId = data.id || null;\n+    editor._initialData = initialData;\n+    return editor;\n+  }\n+  onScaleChanging() {\n+    if (!this.parent) {\n       return;\n     }\n-    if (!this.#disableEditing) {\n-      this.#redraw();\n+    super.onScaleChanging();\n+    const {\n+      _drawId,\n+      _drawingOptions,\n+      parent\n+    } = this;\n+    _drawingOptions.updateSVGProperty(\"stroke-width\");\n+    parent.drawLayer.updateProperties(_drawId, _drawingOptions.toSVGProperties());\n+  }\n+  static onScaleChangingWhenDrawing() {\n+    const parent = this._currentParent;\n+    if (!parent) {\n       return;\n     }\n-    const bbox = this.#getBbox();\n-    const padding = this.#getPadding();\n-    this.#baseWidth = Math.max(AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);\n-    this.#baseHeight = Math.max(AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);\n-    const width = Math.ceil(padding + this.#baseWidth * this.scaleFactor);\n-    const height = Math.ceil(padding + this.#baseHeight * this.scaleFactor);\n-    const [parentWidth, parentHeight] = this.parentDimensions;\n-    this.width = width \u002F parentWidth;\n-    this.height = height \u002F parentHeight;\n-    this.setAspectRatio(width, height);\n-    const prevTranslationX = this.translationX;\n-    const prevTranslationY = this.translationY;\n-    this.translationX = -bbox[0];\n-    this.translationY = -bbox[1];\n-    this.#setCanvasDims();\n-    this.#redraw();\n-    this.#realWidth = width;\n-    this.#realHeight = height;\n-    this.setDims(width, height);\n-    const unscaledPadding = firstTime ? padding \u002F this.scaleFactor \u002F 2 : 0;\n-    this.translate(prevTranslationX - this.translationX - unscaledPadding, prevTranslationY - this.translationY - unscaledPadding);\n+    super.onScaleChangingWhenDrawing();\n+    this._defaultDrawingOptions.updateSVGProperty(\"stroke-width\");\n+    parent.drawLayer.updateProperties(this._currentDrawId, this._defaultDrawingOptions.toSVGProperties());\n   }\n-  static deserialize(data, parent, uiManager) {\n-    if (data instanceof InkAnnotationElement) {\n+  createDrawingOptions({\n+    color,\n+    thickness,\n+    opacity\n+  }) {\n+    this._drawingOptions = InkEditor.getDefaultDrawingOptions({\n+      stroke: Util.makeHexColor(...color),\n+      \"stroke-width\": thickness,\n+      \"stroke-opacity\": opacity\n+    });\n+  }\n+  serialize(isForCopying = false) {\n+    if (this.isEmpty()) {\n       return null;\n     }\n-    const editor = super.deserialize(data, parent, uiManager);\n-    editor.thickness = data.thickness;\n-    editor.color = Util.makeHexColor(...data.color);\n-    editor.opacity = data.opacity;\n-    const [pageWidth, pageHeight] = editor.pageDimensions;\n-    const width = editor.width * pageWidth;\n-    const height = editor.height * pageHeight;\n-    const scaleFactor = editor.parentScale;\n-    const padding = data.thickness \u002F 2;\n-    editor.#disableEditing = true;\n-    editor.#realWidth = Math.round(width);\n-    editor.#realHeight = Math.round(height);\n+    if (this.deleted) {\n+      return this.serializeDeleted();\n+    }\n+    const {\n+      lines,\n+      points,\n+      rect\n+    } = this.serializeDraw(isForCopying);\n+    const {\n+      _drawingOptions: {\n+        stroke,\n+        \"stroke-opacity\": opacity,\n+        \"stroke-width\": thickness\n+      }\n+    } = this;\n+    const serialized = {\n+      annotationType: AnnotationEditorType.INK,\n+      color: AnnotationEditor._colorManager.convert(stroke),\n+      opacity,\n+      thickness,\n+      paths: {\n+        lines,\n+        points\n+      },\n+      pageIndex: this.pageIndex,\n+      rect,\n+      rotation: this.rotation,\n+      structTreeParentId: this._structTreeParentId\n+    };\n+    if (isForCopying) {\n+      serialized.isCopy = true;\n+      return serialized;\n+    }\n+    if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n+      return null;\n+    }\n+    serialized.id = this.annotationElementId;\n+    return serialized;\n+  }\n+  #hasElementChanged(serialized) {\n+    const {\n+      color,\n+      thickness,\n+      opacity,\n+      pageIndex\n+    } = this._initialData;\n+    return this._hasBeenMoved || this._hasBeenResized || serialized.color.some((c, i) => c !== color[i]) || serialized.thickness !== thickness || serialized.opacity !== opacity || serialized.pageIndex !== pageIndex;\n+  }\n+  renderAnnotationElement(annotation) {\n     const {\n-      paths,\n+      points,\n+      rect\n+    } = this.serializeDraw(false);\n+    annotation.updateEdited({\n       rect,\n+      thickness: this._drawingOptions[\"stroke-width\"],\n+      points\n+    });\n+    return null;\n+  }\n+}\n+\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Feditor\u002Fdrawers\u002Fcontour.js\n+\n+class ContourDrawOutline extends InkDrawOutline {\n+  toSVGPath() {\n+    let path = super.toSVGPath();\n+    if (!path.endsWith(\"Z\")) {\n+      path += \"Z\";\n+    }\n+    return path;\n+  }\n+}\n+\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Feditor\u002Fdrawers\u002Fsignaturedraw.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+const BASE_HEADER_LENGTH = 8;\n+const POINTS_PROPERTIES_NUMBER = 3;\n+class SignatureExtractor {\n+  static #PARAMETERS = {\n+    maxDim: 512,\n+    sigmaSFactor: 0.02,\n+    sigmaR: 25,\n+    kernelSize: 16\n+  };\n+  static #neighborIndexToId(i0, j0, i, j) {\n+    i -= i0;\n+    j -= j0;\n+    if (i === 0) {\n+      return j > 0 ? 0 : 4;\n+    }\n+    if (i === 1) {\n+      return j + 6;\n+    }\n+    return 2 - j;\n+  }\n+  static #neighborIdToIndex = new Int32Array([0, 1, -1, 1, -1, 0, -1, -1, 0, -1, 1, -1, 1, 0, 1, 1]);\n+  static #clockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n+    const id = this.#neighborIndexToId(i0, j0, i, j);\n+    for (let k = 0; k \u003C 8; k++) {\n+      const kk = (-k + id - offset + 16) % 8;\n+      const shiftI = this.#neighborIdToIndex[2 * kk];\n+      const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n+      if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n+        return kk;\n+      }\n+    }\n+    return -1;\n+  }\n+  static #counterClockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n+    const id = this.#neighborIndexToId(i0, j0, i, j);\n+    for (let k = 0; k \u003C 8; k++) {\n+      const kk = (k + id + offset + 16) % 8;\n+      const shiftI = this.#neighborIdToIndex[2 * kk];\n+      const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n+      if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n+        return kk;\n+      }\n+    }\n+    return -1;\n+  }\n+  static #findContours(buf, width, height, threshold) {\n+    const N = buf.length;\n+    const types = new Int32Array(N);\n+    for (let i = 0; i \u003C N; i++) {\n+      types[i] = buf[i] \u003C= threshold ? 1 : 0;\n+    }\n+    for (let i = 1; i \u003C height - 1; i++) {\n+      types[i * width] = types[i * width + width - 1] = 0;\n+    }\n+    for (let i = 0; i \u003C width; i++) {\n+      types[i] = types[width * height - 1 - i] = 0;\n+    }\n+    let nbd = 1;\n+    let lnbd;\n+    const contours = [];\n+    for (let i = 1; i \u003C height - 1; i++) {\n+      lnbd = 1;\n+      for (let j = 1; j \u003C width - 1; j++) {\n+        const ij = i * width + j;\n+        const pix = types[ij];\n+        if (pix === 0) {\n+          continue;\n+        }\n+        let i2 = i;\n+        let j2 = j;\n+        if (pix === 1 && types[ij - 1] === 0) {\n+          nbd += 1;\n+          j2 -= 1;\n+        } else if (pix >= 1 && types[ij + 1] === 0) {\n+          nbd += 1;\n+          j2 += 1;\n+          if (pix > 1) {\n+            lnbd = pix;\n+          }\n+        } else {\n+          if (pix !== 1) {\n+            lnbd = Math.abs(pix);\n+          }\n+          continue;\n+        }\n+        const points = [j, i];\n+        const isHole = j2 === j + 1;\n+        const contour = {\n+          isHole,\n+          points,\n+          id: nbd,\n+          parent: 0\n+        };\n+        contours.push(contour);\n+        let contour0;\n+        for (const c of contours) {\n+          if (c.id === lnbd) {\n+            contour0 = c;\n+            break;\n+          }\n+        }\n+        if (!contour0) {\n+          contour.parent = isHole ? lnbd : 0;\n+        } else if (contour0.isHole) {\n+          contour.parent = isHole ? contour0.parent : lnbd;\n+        } else {\n+          contour.parent = isHole ? lnbd : contour0.parent;\n+        }\n+        const k = this.#clockwiseNonZero(types, width, i, j, i2, j2, 0);\n+        if (k === -1) {\n+          types[ij] = -nbd;\n+          if (types[ij] !== 1) {\n+            lnbd = Math.abs(types[ij]);\n+          }\n+          continue;\n+        }\n+        let shiftI = this.#neighborIdToIndex[2 * k];\n+        let shiftJ = this.#neighborIdToIndex[2 * k + 1];\n+        const i1 = i + shiftI;\n+        const j1 = j + shiftJ;\n+        i2 = i1;\n+        j2 = j1;\n+        let i3 = i;\n+        let j3 = j;\n+        while (true) {\n+          const kk = this.#counterClockwiseNonZero(types, width, i3, j3, i2, j2, 1);\n+          shiftI = this.#neighborIdToIndex[2 * kk];\n+          shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n+          const i4 = i3 + shiftI;\n+          const j4 = j3 + shiftJ;\n+          points.push(j4, i4);\n+          const ij3 = i3 * width + j3;\n+          if (types[ij3 + 1] === 0) {\n+            types[ij3] = -nbd;\n+          } else if (types[ij3] === 1) {\n+            types[ij3] = nbd;\n+          }\n+          if (i4 === i && j4 === j && i3 === i1 && j3 === j1) {\n+            if (types[ij] !== 1) {\n+              lnbd = Math.abs(types[ij]);\n+            }\n+            break;\n+          } else {\n+            i2 = i3;\n+            j2 = j3;\n+            i3 = i4;\n+            j3 = j4;\n+          }\n+        }\n+      }\n+    }\n+    return contours;\n+  }\n+  static #douglasPeuckerHelper(points, start, end, output) {\n+    if (end - start \u003C= 4) {\n+      for (let i = start; i \u003C end - 2; i += 2) {\n+        output.push(points[i], points[i + 1]);\n+      }\n+      return;\n+    }\n+    const ax = points[start];\n+    const ay = points[start + 1];\n+    const abx = points[end - 4] - ax;\n+    const aby = points[end - 3] - ay;\n+    const dist = Math.hypot(abx, aby);\n+    const nabx = abx \u002F dist;\n+    const naby = aby \u002F dist;\n+    const aa = nabx * ay - naby * ax;\n+    const m = aby \u002F abx;\n+    const invS = 1 \u002F dist;\n+    const phi = Math.atan(m);\n+    const cosPhi = Math.cos(phi);\n+    const sinPhi = Math.sin(phi);\n+    const tmax = invS * (Math.abs(cosPhi) + Math.abs(sinPhi));\n+    const poly = invS * (1 - tmax + tmax ** 2);\n+    const partialPhi = Math.max(Math.atan(Math.abs(sinPhi + cosPhi) * poly), Math.atan(Math.abs(sinPhi - cosPhi) * poly));\n+    let dmax = 0;\n+    let index = start;\n+    for (let i = start + 2; i \u003C end - 2; i += 2) {\n+      const d = Math.abs(aa - nabx * points[i + 1] + naby * points[i]);\n+      if (d > dmax) {\n+        index = i;\n+        dmax = d;\n+      }\n+    }\n+    if (dmax > (dist * partialPhi) ** 2) {\n+      this.#douglasPeuckerHelper(points, start, index + 2, output);\n+      this.#douglasPeuckerHelper(points, index, end, output);\n+    } else {\n+      output.push(ax, ay);\n+    }\n+  }\n+  static #douglasPeucker(points) {\n+    const output = [];\n+    const len = points.length;\n+    this.#douglasPeuckerHelper(points, 0, len, output);\n+    output.push(points[len - 2], points[len - 1]);\n+    return output.length \u003C= 4 ? null : output;\n+  }\n+  static #bilateralFilter(buf, width, height, sigmaS, sigmaR, kernelSize) {\n+    const kernel = new Float32Array(kernelSize ** 2);\n+    const sigmaS2 = -2 * sigmaS ** 2;\n+    const halfSize = kernelSize >> 1;\n+    for (let i = 0; i \u003C kernelSize; i++) {\n+      const x = (i - halfSize) ** 2;\n+      for (let j = 0; j \u003C kernelSize; j++) {\n+        kernel[i * kernelSize + j] = Math.exp((x + (j - halfSize) ** 2) \u002F sigmaS2);\n+      }\n+    }\n+    const rangeValues = new Float32Array(256);\n+    const sigmaR2 = -2 * sigmaR ** 2;\n+    for (let i = 0; i \u003C 256; i++) {\n+      rangeValues[i] = Math.exp(i ** 2 \u002F sigmaR2);\n+    }\n+    const N = buf.length;\n+    const out = new Uint8Array(N);\n+    const histogram = new Uint32Array(256);\n+    for (let i = 0; i \u003C height; i++) {\n+      for (let j = 0; j \u003C width; j++) {\n+        const ij = i * width + j;\n+        const center = buf[ij];\n+        let sum = 0;\n+        let norm = 0;\n+        for (let k = 0; k \u003C kernelSize; k++) {\n+          const y = i + k - halfSize;\n+          if (y \u003C 0 || y >= height) {\n+            continue;\n+          }\n+          for (let l = 0; l \u003C kernelSize; l++) {\n+            const x = j + l - halfSize;\n+            if (x \u003C 0 || x >= width) {\n+              continue;\n+            }\n+            const neighbour = buf[y * width + x];\n+            const w = kernel[k * kernelSize + l] * rangeValues[Math.abs(neighbour - center)];\n+            sum += neighbour * w;\n+            norm += w;\n+          }\n+        }\n+        const pix = out[ij] = Math.round(sum \u002F norm);\n+        histogram[pix]++;\n+      }\n+    }\n+    return [out, histogram];\n+  }\n+  static #getHistogram(buf) {\n+    const histogram = new Uint32Array(256);\n+    for (const g of buf) {\n+      histogram[g]++;\n+    }\n+    return histogram;\n+  }\n+  static #toUint8(buf) {\n+    const N = buf.length;\n+    const out = new Uint8ClampedArray(N >> 2);\n+    let max = -Infinity;\n+    let min = Infinity;\n+    for (let i = 0, ii = out.length; i \u003C ii; i++) {\n+      const A = buf[(i \u003C\u003C 2) + 3];\n+      if (A === 0) {\n+        max = out[i] = 0xff;\n+        continue;\n+      }\n+      const pix = out[i] = buf[i \u003C\u003C 2];\n+      if (pix > max) {\n+        max = pix;\n+      }\n+      if (pix \u003C min) {\n+        min = pix;\n+      }\n+    }\n+    const ratio = 255 \u002F (max - min);\n+    for (let i = 0; i \u003C N; i++) {\n+      out[i] = (out[i] - min) * ratio;\n+    }\n+    return out;\n+  }\n+  static #guessThreshold(histogram) {\n+    let i;\n+    let M = -Infinity;\n+    let L = -Infinity;\n+    const min = histogram.findIndex(v => v !== 0);\n+    let pos = min;\n+    let spos = min;\n+    for (i = min; i \u003C 256; i++) {\n+      const v = histogram[i];\n+      if (v > M) {\n+        if (i - pos > L) {\n+          L = i - pos;\n+          spos = i - 1;\n+        }\n+        M = v;\n+        pos = i;\n+      }\n+    }\n+    for (i = spos - 1; i >= 0; i--) {\n+      if (histogram[i] > histogram[i + 1]) {\n+        break;\n+      }\n+    }\n+    return i;\n+  }\n+  static #getGrayPixels(bitmap) {\n+    const originalBitmap = bitmap;\n+    const {\n+      width,\n+      height\n+    } = bitmap;\n+    const {\n+      maxDim\n+    } = this.#PARAMETERS;\n+    let newWidth = width;\n+    let newHeight = height;\n+    if (width > maxDim || height > maxDim) {\n+      let prevWidth = width;\n+      let prevHeight = height;\n+      let steps = Math.log2(Math.max(width, height) \u002F maxDim);\n+      const isteps = Math.floor(steps);\n+      steps = steps === isteps ? isteps - 1 : isteps;\n+      for (let i = 0; i \u003C steps; i++) {\n+        newWidth = Math.ceil(prevWidth \u002F 2);\n+        newHeight = Math.ceil(prevHeight \u002F 2);\n+        const offscreen = new OffscreenCanvas(newWidth, newHeight);\n+        const ctx = offscreen.getContext(\"2d\");\n+        ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n+        prevWidth = newWidth;\n+        prevHeight = newHeight;\n+        if (bitmap !== originalBitmap) {\n+          bitmap.close();\n+        }\n+        bitmap = offscreen.transferToImageBitmap();\n+      }\n+      const ratio = Math.min(maxDim \u002F newWidth, maxDim \u002F newHeight);\n+      newWidth = Math.round(newWidth * ratio);\n+      newHeight = Math.round(newHeight * ratio);\n+    }\n+    const offscreen = new OffscreenCanvas(newWidth, newHeight);\n+    const ctx = offscreen.getContext(\"2d\", {\n+      willReadFrequently: true\n+    });\n+    ctx.filter = \"grayscale(1)\";\n+    ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, newWidth, newHeight);\n+    const grayImage = ctx.getImageData(0, 0, newWidth, newHeight).data;\n+    const uint8Buf = this.#toUint8(grayImage);\n+    return [uint8Buf, newWidth, newHeight];\n+  }\n+  static extractContoursFromText(text, {\n+    fontFamily,\n+    fontStyle,\n+    fontWeight\n+  }, pageWidth, pageHeight, rotation, innerMargin) {\n+    let canvas = new OffscreenCanvas(1, 1);\n+    let ctx = canvas.getContext(\"2d\", {\n+      alpha: false\n+    });\n+    const fontSize = 200;\n+    const font = ctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;\n+    const {\n+      actualBoundingBoxLeft,\n+      actualBoundingBoxRight,\n+      actualBoundingBoxAscent,\n+      actualBoundingBoxDescent,\n+      fontBoundingBoxAscent,\n+      fontBoundingBoxDescent,\n+      width\n+    } = ctx.measureText(text);\n+    const SCALE = 1.5;\n+    const canvasWidth = Math.ceil(Math.max(Math.abs(actualBoundingBoxLeft) + Math.abs(actualBoundingBoxRight) || 0, width) * SCALE);\n+    const canvasHeight = Math.ceil(Math.max(Math.abs(actualBoundingBoxAscent) + Math.abs(actualBoundingBoxDescent) || fontSize, Math.abs(fontBoundingBoxAscent) + Math.abs(fontBoundingBoxDescent) || fontSize) * SCALE);\n+    canvas = new OffscreenCanvas(canvasWidth, canvasHeight);\n+    ctx = canvas.getContext(\"2d\", {\n+      alpha: true,\n+      willReadFrequently: true\n+    });\n+    ctx.font = font;\n+    ctx.filter = \"grayscale(1)\";\n+    ctx.fillStyle = \"white\";\n+    ctx.fillRect(0, 0, canvasWidth, canvasHeight);\n+    ctx.fillStyle = \"black\";\n+    ctx.fillText(text, canvasWidth * (SCALE - 1) \u002F 2, canvasHeight * (3 - SCALE) \u002F 2);\n+    const uint8Buf = this.#toUint8(ctx.getImageData(0, 0, canvasWidth, canvasHeight).data);\n+    const histogram = this.#getHistogram(uint8Buf);\n+    const threshold = this.#guessThreshold(histogram);\n+    const contourList = this.#findContours(uint8Buf, canvasWidth, canvasHeight, threshold);\n+    return this.processDrawnLines({\n+      lines: {\n+        curves: contourList,\n+        width: canvasWidth,\n+        height: canvasHeight\n+      },\n+      pageWidth,\n+      pageHeight,\n+      rotation,\n+      innerMargin,\n+      mustSmooth: true,\n+      areContours: true\n+    });\n+  }\n+  static process(bitmap, pageWidth, pageHeight, rotation, innerMargin) {\n+    const [uint8Buf, width, height] = this.#getGrayPixels(bitmap);\n+    const [buffer, histogram] = this.#bilateralFilter(uint8Buf, width, height, Math.hypot(width, height) * this.#PARAMETERS.sigmaSFactor, this.#PARAMETERS.sigmaR, this.#PARAMETERS.kernelSize);\n+    const threshold = this.#guessThreshold(histogram);\n+    const contourList = this.#findContours(buffer, width, height, threshold);\n+    return this.processDrawnLines({\n+      lines: {\n+        curves: contourList,\n+        width,\n+        height\n+      },\n+      pageWidth,\n+      pageHeight,\n+      rotation,\n+      innerMargin,\n+      mustSmooth: true,\n+      areContours: true\n+    });\n+  }\n+  static processDrawnLines({\n+    lines,\n+    pageWidth,\n+    pageHeight,\n+    rotation,\n+    innerMargin,\n+    mustSmooth,\n+    areContours\n+  }) {\n+    if (rotation % 180 !== 0) {\n+      [pageWidth, pageHeight] = [pageHeight, pageWidth];\n+    }\n+    const {\n+      curves,\n+      width,\n+      height\n+    } = lines;\n+    const thickness = lines.thickness ?? 0;\n+    const linesAndPoints = [];\n+    const ratio = Math.min(pageWidth \u002F width, pageHeight \u002F height);\n+    const xScale = ratio \u002F pageWidth;\n+    const yScale = ratio \u002F pageHeight;\n+    const newCurves = [];\n+    for (const {\n+      points\n+    } of curves) {\n+      const reducedPoints = mustSmooth ? this.#douglasPeucker(points) : points;\n+      if (!reducedPoints) {\n+        continue;\n+      }\n+      newCurves.push(reducedPoints);\n+      const len = reducedPoints.length;\n+      const newPoints = new Float32Array(len);\n+      const line = new Float32Array(3 * (len === 2 ? 2 : len - 2));\n+      linesAndPoints.push({\n+        line,\n+        points: newPoints\n+      });\n+      if (len === 2) {\n+        newPoints[0] = reducedPoints[0] * xScale;\n+        newPoints[1] = reducedPoints[1] * yScale;\n+        line.set([NaN, NaN, NaN, NaN, newPoints[0], newPoints[1]], 0);\n+        continue;\n+      }\n+      let [x1, y1, x2, y2] = reducedPoints;\n+      x1 *= xScale;\n+      y1 *= yScale;\n+      x2 *= xScale;\n+      y2 *= yScale;\n+      newPoints.set([x1, y1, x2, y2], 0);\n+      line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n+      for (let i = 4; i \u003C len; i += 2) {\n+        const x = newPoints[i] = reducedPoints[i] * xScale;\n+        const y = newPoints[i + 1] = reducedPoints[i + 1] * yScale;\n+        line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n+        [x1, y1, x2, y2] = [x2, y2, x, y];\n+      }\n+    }\n+    if (linesAndPoints.length === 0) {\n+      return null;\n+    }\n+    const outline = areContours ? new ContourDrawOutline() : new InkDrawOutline();\n+    outline.build(linesAndPoints, pageWidth, pageHeight, 1, rotation, areContours ? 0 : thickness, innerMargin);\n+    return {\n+      outline,\n+      newCurves,\n+      areContours,\n+      thickness,\n+      width,\n+      height\n+    };\n+  }\n+  static async compressSignature({\n+    outlines,\n+    areContours,\n+    thickness,\n+    width,\n+    height\n+  }) {\n+    let minDiff = Infinity;\n+    let maxDiff = -Infinity;\n+    let outlinesLength = 0;\n+    for (const points of outlines) {\n+      outlinesLength += points.length;\n+      for (let i = 2, ii = points.length; i \u003C ii; i++) {\n+        const dx = points[i] - points[i - 2];\n+        minDiff = Math.min(minDiff, dx);\n+        maxDiff = Math.max(maxDiff, dx);\n+      }\n+    }\n+    let bufferType;\n+    if (minDiff >= -128 && maxDiff \u003C= 127) {\n+      bufferType = Int8Array;\n+    } else if (minDiff >= -32768 && maxDiff \u003C= 32767) {\n+      bufferType = Int16Array;\n+    } else {\n+      bufferType = Int32Array;\n+    }\n+    const len = outlines.length;\n+    const headerLength = BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * len;\n+    const header = new Uint32Array(headerLength);\n+    let offset = 0;\n+    header[offset++] = headerLength * Uint32Array.BYTES_PER_ELEMENT + (outlinesLength - 2 * len) * bufferType.BYTES_PER_ELEMENT;\n+    header[offset++] = 0;\n+    header[offset++] = width;\n+    header[offset++] = height;\n+    header[offset++] = areContours ? 0 : 1;\n+    header[offset++] = Math.max(0, Math.floor(thickness ?? 0));\n+    header[offset++] = len;\n+    header[offset++] = bufferType.BYTES_PER_ELEMENT;\n+    for (const points of outlines) {\n+      header[offset++] = points.length - 2;\n+      header[offset++] = points[0];\n+      header[offset++] = points[1];\n+    }\n+    const cs = new CompressionStream(\"deflate-raw\");\n+    const writer = cs.writable.getWriter();\n+    await writer.ready;\n+    writer.write(header);\n+    const BufferCtor = bufferType.prototype.constructor;\n+    for (const points of outlines) {\n+      const diffs = new BufferCtor(points.length - 2);\n+      for (let i = 2, ii = points.length; i \u003C ii; i++) {\n+        diffs[i - 2] = points[i] - points[i - 2];\n+      }\n+      writer.write(diffs);\n+    }\n+    writer.close();\n+    const buf = await new Response(cs.readable).arrayBuffer();\n+    const bytes = new Uint8Array(buf);\n+    return toBase64Util(bytes);\n+  }\n+  static async decompressSignature(signatureData) {\n+    try {\n+      const bytes = fromBase64Util(signatureData);\n+      const {\n+        readable,\n+        writable\n+      } = new DecompressionStream(\"deflate-raw\");\n+      const writer = writable.getWriter();\n+      await writer.ready;\n+      writer.write(bytes).then(async () => {\n+        await writer.ready;\n+        await writer.close();\n+      }).catch(() => {});\n+      let data = null;\n+      let offset = 0;\n+      for await (const chunk of readable) {\n+        data ||= new Uint8Array(new Uint32Array(chunk.buffer, 0, 4)[0]);\n+        data.set(chunk, offset);\n+        offset += chunk.length;\n+      }\n+      const header = new Uint32Array(data.buffer, 0, data.length >> 2);\n+      const version = header[1];\n+      if (version !== 0) {\n+        throw new Error(`Invalid version: ${version}`);\n+      }\n+      const width = header[2];\n+      const height = header[3];\n+      const areContours = header[4] === 0;\n+      const thickness = header[5];\n+      const numberOfDrawings = header[6];\n+      const bufferType = header[7];\n+      const outlines = [];\n+      const diffsOffset = (BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * numberOfDrawings) * Uint32Array.BYTES_PER_ELEMENT;\n+      let diffs;\n+      switch (bufferType) {\n+        case Int8Array.BYTES_PER_ELEMENT:\n+          diffs = new Int8Array(data.buffer, diffsOffset);\n+          break;\n+        case Int16Array.BYTES_PER_ELEMENT:\n+          diffs = new Int16Array(data.buffer, diffsOffset);\n+          break;\n+        case Int32Array.BYTES_PER_ELEMENT:\n+          diffs = new Int32Array(data.buffer, diffsOffset);\n+          break;\n+      }\n+      offset = 0;\n+      for (let i = 0; i \u003C numberOfDrawings; i++) {\n+        const len = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH];\n+        const points = new Float32Array(len + 2);\n+        outlines.push(points);\n+        for (let j = 0; j \u003C POINTS_PROPERTIES_NUMBER - 1; j++) {\n+          points[j] = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH + j + 1];\n+        }\n+        for (let j = 0; j \u003C len; j++) {\n+          points[j + 2] = points[j] + diffs[offset++];\n+        }\n+      }\n+      return {\n+        areContours,\n+        thickness,\n+        outlines,\n+        width,\n+        height\n+      };\n+    } catch (e) {\n+      warn(`decompressSignature: ${e}`);\n+      return null;\n+    }\n+  }\n+}\n+\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Feditor\u002Fsignature.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+class SignatureOptions extends DrawingOptions {\n+  constructor() {\n+    super();\n+    super.updateProperties({\n+      fill: AnnotationEditor._defaultLineColor,\n+      \"stroke-width\": 0\n+    });\n+  }\n+  clone() {\n+    const clone = new SignatureOptions();\n+    clone.updateAll(this);\n+    return clone;\n+  }\n+}\n+class DrawnSignatureOptions extends InkDrawingOptions {\n+  constructor(viewerParameters) {\n+    super(viewerParameters);\n+    super.updateProperties({\n+      stroke: AnnotationEditor._defaultLineColor,\n+      \"stroke-width\": 1\n+    });\n+  }\n+  clone() {\n+    const clone = new DrawnSignatureOptions(this._viewParameters);\n+    clone.updateAll(this);\n+    return clone;\n+  }\n+}\n+class SignatureEditor extends DrawingEditor {\n+  #isExtracted = false;\n+  #description = null;\n+  #signatureData = null;\n+  #signatureUUID = null;\n+  static _type = \"signature\";\n+  static _editorType = AnnotationEditorType.SIGNATURE;\n+  static _defaultDrawingOptions = null;\n+  constructor(params) {\n+    super({\n+      ...params,\n+      mustBeCommitted: true,\n+      name: \"signatureEditor\"\n+    });\n+    this._willKeepAspectRatio = true;\n+    this.#signatureData = params.signatureData || null;\n+    this.#description = null;\n+    this.defaultL10nId = \"pdfjs-editor-signature-editor1\";\n+  }\n+  static initialize(l10n, uiManager) {\n+    AnnotationEditor.initialize(l10n, uiManager);\n+    this._defaultDrawingOptions = new SignatureOptions();\n+    this._defaultDrawnSignatureOptions = new DrawnSignatureOptions(uiManager.viewParameters);\n+  }\n+  static getDefaultDrawingOptions(options) {\n+    const clone = this._defaultDrawingOptions.clone();\n+    clone.updateProperties(options);\n+    return clone;\n+  }\n+  static get supportMultipleDrawings() {\n+    return false;\n+  }\n+  static get typesMap() {\n+    return shadow(this, \"typesMap\", new Map());\n+  }\n+  static get isDrawer() {\n+    return false;\n+  }\n+  get telemetryFinalData() {\n+    return {\n+      type: \"signature\",\n+      hasDescription: !!this.#description\n+    };\n+  }\n+  static computeTelemetryFinalData(data) {\n+    const hasDescriptionStats = data.get(\"hasDescription\");\n+    return {\n+      hasAltText: hasDescriptionStats.get(true) ?? 0,\n+      hasNoAltText: hasDescriptionStats.get(false) ?? 0\n+    };\n+  }\n+  get isResizable() {\n+    return true;\n+  }\n+  onScaleChanging() {\n+    if (this._drawId === null) {\n+      return;\n+    }\n+    super.onScaleChanging();\n+  }\n+  render() {\n+    if (this.div) {\n+      return this.div;\n+    }\n+    let baseX, baseY;\n+    const {\n+      _isCopy\n+    } = this;\n+    if (_isCopy) {\n+      this._isCopy = false;\n+      baseX = this.x;\n+      baseY = this.y;\n+    }\n+    super.render();\n+    if (this._drawId === null) {\n+      if (this.#signatureData) {\n+        const {\n+          lines,\n+          mustSmooth,\n+          areContours,\n+          description,\n+          uuid,\n+          heightInPage\n+        } = this.#signatureData;\n+        const {\n+          rawDims: {\n+            pageWidth,\n+            pageHeight\n+          },\n+          rotation\n+        } = this.parent.viewport;\n+        const outline = SignatureExtractor.processDrawnLines({\n+          lines,\n+          pageWidth,\n+          pageHeight,\n+          rotation,\n+          innerMargin: SignatureEditor._INNER_MARGIN,\n+          mustSmooth,\n+          areContours\n+        });\n+        this.addSignature(outline, heightInPage, description, uuid);\n+      } else {\n+        this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n+          description: \"\"\n+        }));\n+        this.div.hidden = true;\n+        this._uiManager.getSignature(this);\n+      }\n+    }\n+    if (_isCopy) {\n+      this._isCopy = true;\n+      this._moveAfterPaste(baseX, baseY);\n+    }\n+    return this.div;\n+  }\n+  setUuid(uuid) {\n+    this.#signatureUUID = uuid;\n+    this.addEditToolbar();\n+  }\n+  getUuid() {\n+    return this.#signatureUUID;\n+  }\n+  get description() {\n+    return this.#description;\n+  }\n+  set description(description) {\n+    this.#description = description;\n+    super.addEditToolbar().then(toolbar => {\n+      toolbar?.updateEditSignatureButton(description);\n+    });\n+  }\n+  getSignaturePreview() {\n+    const {\n+      newCurves,\n+      areContours,\n+      thickness,\n+      width,\n+      height\n+    } = this.#signatureData;\n+    const maxDim = Math.max(width, height);\n+    const outlineData = SignatureExtractor.processDrawnLines({\n+      lines: {\n+        curves: newCurves.map(points => ({\n+          points\n+        })),\n+        thickness,\n+        width,\n+        height\n+      },\n+      pageWidth: maxDim,\n+      pageHeight: maxDim,\n+      rotation: 0,\n+      innerMargin: 0,\n+      mustSmooth: false,\n+      areContours\n+    });\n+    return {\n+      areContours,\n+      outline: outlineData.outline\n+    };\n+  }\n+  async addEditToolbar() {\n+    const toolbar = await super.addEditToolbar();\n+    if (!toolbar) {\n+      return null;\n+    }\n+    if (this._uiManager.signatureManager && this.#description !== null) {\n+      await toolbar.addEditSignatureButton(this._uiManager.signatureManager, this.#signatureUUID, this.#description);\n+      toolbar.show();\n+    }\n+    return toolbar;\n+  }\n+  addSignature(data, heightInPage, description, uuid) {\n+    const {\n+      x: savedX,\n+      y: savedY\n+    } = this;\n+    const {\n+      outline\n+    } = this.#signatureData = data;\n+    this.#isExtracted = outline instanceof ContourDrawOutline;\n+    this.#description = description;\n+    this.div.setAttribute(\"data-l10n-args\", JSON.stringify({\n+      description\n+    }));\n+    let drawingOptions;\n+    if (this.#isExtracted) {\n+      drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n+    } else {\n+      drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\n+      drawingOptions.updateProperties({\n+        \"stroke-width\": outline.thickness\n+      });\n+    }\n+    this._addOutlines({\n+      drawOutlines: outline,\n+      drawingOptions\n+    });\n+    const [parentWidth, parentHeight] = this.parentDimensions;\n+    const [, pageHeight] = this.pageDimensions;\n+    let newHeight = heightInPage \u002F pageHeight;\n+    newHeight = newHeight >= 1 ? 0.5 : newHeight;\n+    this.width *= newHeight \u002F this.height;\n+    if (this.width >= 1) {\n+      newHeight *= 0.9 \u002F this.width;\n+      this.width = 0.9;\n+    }\n+    this.height = newHeight;\n+    this.setDims(parentWidth * this.width, parentHeight * this.height);\n+    this.x = savedX;\n+    this.y = savedY;\n+    this.center();\n+    this._onResized();\n+    this.onScaleChanging();\n+    this.rotate();\n+    this._uiManager.addToAnnotationStorage(this);\n+    this.setUuid(uuid);\n+    this._reportTelemetry({\n+      action: \"pdfjs.signature.inserted\",\n+      data: {\n+        hasBeenSaved: !!uuid,\n+        hasDescription: !!description\n+      }\n+    });\n+    this.div.hidden = false;\n+  }\n+  getFromImage(bitmap) {\n+    const {\n+      rawDims: {\n+        pageWidth,\n+        pageHeight\n+      },\n       rotation\n-    } = data;\n-    for (let {\n-      bezier\n-    } of paths) {\n-      bezier = InkEditor.#fromPDFCoordinates(bezier, rect, rotation);\n-      const path = [];\n-      editor.paths.push(path);\n-      let p0 = scaleFactor * (bezier[0] - padding);\n-      let p1 = scaleFactor * (bezier[1] - padding);\n-      for (let i = 2, ii = bezier.length; i \u003C ii; i += 6) {\n-        const p10 = scaleFactor * (bezier[i] - padding);\n-        const p11 = scaleFactor * (bezier[i + 1] - padding);\n-        const p20 = scaleFactor * (bezier[i + 2] - padding);\n-        const p21 = scaleFactor * (bezier[i + 3] - padding);\n-        const p30 = scaleFactor * (bezier[i + 4] - padding);\n-        const p31 = scaleFactor * (bezier[i + 5] - padding);\n-        path.push([[p0, p1], [p10, p11], [p20, p21], [p30, p31]]);\n-        p0 = p30;\n-        p1 = p31;\n-      }\n-      const path2D = this.#buildPath2D(path);\n-      editor.bezierPath2D.push(path2D);\n-    }\n-    const bbox = editor.#getBbox();\n-    editor.#baseWidth = Math.max(AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);\n-    editor.#baseHeight = Math.max(AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);\n-    editor.#setScaleFactor(width, height);\n-    return editor;\n+    } = this.parent.viewport;\n+    return SignatureExtractor.process(bitmap, pageWidth, pageHeight, rotation, SignatureEditor._INNER_MARGIN);\n   }\n-  serialize() {\n+  getFromText(text, fontInfo) {\n+    const {\n+      rawDims: {\n+        pageWidth,\n+        pageHeight\n+      },\n+      rotation\n+    } = this.parent.viewport;\n+    return SignatureExtractor.extractContoursFromText(text, fontInfo, pageWidth, pageHeight, rotation, SignatureEditor._INNER_MARGIN);\n+  }\n+  getDrawnSignature(curves) {\n+    const {\n+      rawDims: {\n+        pageWidth,\n+        pageHeight\n+      },\n+      rotation\n+    } = this.parent.viewport;\n+    return SignatureExtractor.processDrawnLines({\n+      lines: curves,\n+      pageWidth,\n+      pageHeight,\n+      rotation,\n+      innerMargin: SignatureEditor._INNER_MARGIN,\n+      mustSmooth: false,\n+      areContours: false\n+    });\n+  }\n+  createDrawingOptions({\n+    areContours,\n+    thickness\n+  }) {\n+    if (areContours) {\n+      this._drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n+    } else {\n+      this._drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\n+      this._drawingOptions.updateProperties({\n+        \"stroke-width\": thickness\n+      });\n+    }\n+  }\n+  serialize(isForCopying = false) {\n     if (this.isEmpty()) {\n       return null;\n     }\n-    const rect = this.getRect(0, 0);\n-    const color = AnnotationEditor._colorManager.convert(this.ctx.strokeStyle);\n-    return {\n-      annotationType: AnnotationEditorType.INK,\n-      color,\n-      thickness: this.thickness,\n-      opacity: this.opacity,\n-      paths: this.#serializePaths(this.scaleFactor \u002F this.parentScale, this.translationX, this.translationY, rect),\n+    const {\n+      lines,\n+      points,\n+      rect\n+    } = this.serializeDraw(isForCopying);\n+    const {\n+      _drawingOptions: {\n+        \"stroke-width\": thickness\n+      }\n+    } = this;\n+    const serialized = {\n+      annotationType: AnnotationEditorType.SIGNATURE,\n+      isSignature: true,\n+      areContours: this.#isExtracted,\n+      color: [0, 0, 0],\n+      thickness: this.#isExtracted ? 0 : thickness,\n       pageIndex: this.pageIndex,\n       rect,\n       rotation: this.rotation,\n       structTreeParentId: this._structTreeParentId\n     };\n+    if (isForCopying) {\n+      serialized.paths = {\n+        lines,\n+        points\n+      };\n+      serialized.uuid = this.#signatureUUID;\n+      serialized.isCopy = true;\n+    } else {\n+      serialized.lines = lines;\n+    }\n+    if (this.#description) {\n+      serialized.accessibilityData = {\n+        type: \"Figure\",\n+        alt: this.#description\n+      };\n+    }\n+    return serialized;\n+  }\n+  static deserializeDraw(pageX, pageY, pageWidth, pageHeight, innerMargin, data) {\n+    if (data.areContours) {\n+      return ContourDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n+    }\n+    return InkDrawOutline.deserialize(pageX, pageY, pageWidth, pageHeight, innerMargin, data);\n+  }\n+  static async deserialize(data, parent, uiManager) {\n+    const editor = await super.deserialize(data, parent, uiManager);\n+    editor.#isExtracted = data.areContours;\n+    editor.#description = data.accessibilityData?.alt || \"\";\n+    editor.#signatureUUID = data.uuid;\n+    return editor;\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Feditor\u002Fstamp.js\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Feditor\u002Fstamp.js\n+\n+\n+\n \n \n \n@@ -18167,7 +26520,7 @@\n   #bitmapFile = null;\n   #bitmapFileName = \"\";\n   #canvas = null;\n-  #observer = null;\n+  #missingCanvas = false;\n   #resizeTimeoutId = null;\n   #isSvg = false;\n   #hasBeenAddedInUndoStack = false;\n@@ -18180,25 +26533,40 @@\n     });\n     this.#bitmapUrl = params.bitmapUrl;\n     this.#bitmapFile = params.bitmapFile;\n+    this.defaultL10nId = \"pdfjs-editor-stamp-editor\";\n   }\n   static initialize(l10n, uiManager) {\n     AnnotationEditor.initialize(l10n, uiManager);\n   }\n-  static get supportedTypes() {\n-    const types = [\"apng\", \"avif\", \"bmp\", \"gif\", \"jpeg\", \"png\", \"svg+xml\", \"webp\", \"x-icon\"];\n-    return shadow(this, \"supportedTypes\", types.map(type => `image\u002F${type}`));\n-  }\n-  static get supportedTypesStr() {\n-    return shadow(this, \"supportedTypesStr\", this.supportedTypes.join(\",\"));\n-  }\n   static isHandlingMimeForPasting(mime) {\n-    return this.supportedTypes.includes(mime);\n+    return SupportedImageMimeTypes.includes(mime);\n   }\n   static paste(item, parent) {\n-    parent.pasteEditor(AnnotationEditorType.STAMP, {\n+    parent.pasteEditor({\n+      mode: AnnotationEditorType.STAMP\n+    }, {\n       bitmapFile: item.getAsFile()\n     });\n   }\n+  altTextFinish() {\n+    if (this._uiManager.useNewAltTextFlow) {\n+      this.div.hidden = false;\n+    }\n+    super.altTextFinish();\n+  }\n+  get telemetryFinalData() {\n+    return {\n+      type: \"stamp\",\n+      hasAltText: !!this.altTextData?.altText\n+    };\n+  }\n+  static computeTelemetryFinalData(data) {\n+    const hasAltTextStats = data.get(\"hasAltText\");\n+    return {\n+      hasAltText: hasAltTextStats.get(true) ?? 0,\n+      hasNoAltText: hasAltTextStats.get(false) ?? 0\n+    };\n+  }\n   #getBitmapFetched(data, fromId = false) {\n     if (!data) {\n       this.remove();\n@@ -18217,9 +26585,76 @@\n   #getBitmapDone() {\n     this.#bitmapPromise = null;\n     this._uiManager.enableWaiting(false);\n-    if (this.#canvas) {\n-      this.div.focus();\n+    if (!this.#canvas) {\n+      return;\n+    }\n+    if (this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n+      this._editToolbar.hide();\n+      this._uiManager.editAltText(this, true);\n+      return;\n+    }\n+    if (!this._uiManager.useNewAltTextWhenAddingImage && this._uiManager.useNewAltTextFlow && this.#bitmap) {\n+      this._reportTelemetry({\n+        action: \"pdfjs.image.image_added\",\n+        data: {\n+          alt_text_modal: false,\n+          alt_text_type: \"empty\"\n+        }\n+      });\n+      try {\n+        this.mlGuessAltText();\n+      } catch {}\n     }\n+    this.div.focus();\n+  }\n+  async mlGuessAltText(imageData = null, updateAltTextData = true) {\n+    if (this.hasAltTextData()) {\n+      return null;\n+    }\n+    const {\n+      mlManager\n+    } = this._uiManager;\n+    if (!mlManager) {\n+      throw new Error(\"No ML.\");\n+    }\n+    if (!(await mlManager.isEnabledFor(\"altText\"))) {\n+      throw new Error(\"ML isn't enabled for alt text.\");\n+    }\n+    const {\n+      data,\n+      width,\n+      height\n+    } = imageData || this.copyCanvas(null, null, true).imageData;\n+    const response = await mlManager.guess({\n+      name: \"altText\",\n+      request: {\n+        data,\n+        width,\n+        height,\n+        channels: data.length \u002F (width * height)\n+      }\n+    });\n+    if (!response) {\n+      throw new Error(\"No response from the AI service.\");\n+    }\n+    if (response.error) {\n+      throw new Error(\"Error from the AI service.\");\n+    }\n+    if (response.cancel) {\n+      return null;\n+    }\n+    if (!response.output) {\n+      throw new Error(\"No valid response from the AI service.\");\n+    }\n+    const altText = response.output;\n+    await this.setGuessedAltText(altText);\n+    if (updateAltTextData && !this.hasAltTextData()) {\n+      this.altTextData = {\n+        alt: altText,\n+        decorative: false\n+      };\n+    }\n+    return altText;\n   }\n   #getBitmap() {\n     if (this.#bitmapId) {\n@@ -18243,7 +26678,8 @@\n     }\n     const input = document.createElement(\"input\");\n     input.type = \"file\";\n-    input.accept = StampEditor.supportedTypesStr;\n+    input.accept = SupportedImageMimeTypes.join(\",\");\n+    const signal = this._uiManager._signal;\n     this.#bitmapPromise = new Promise(resolve => {\n       input.addEventListener(\"change\", async () => {\n         if (!input.files || input.files.length === 0) {\n@@ -18251,13 +26687,23 @@\n         } else {\n           this._uiManager.enableWaiting(true);\n           const data = await this._uiManager.imageManager.getFromFile(input.files[0]);\n+          this._reportTelemetry({\n+            action: \"pdfjs.image.image_selected\",\n+            data: {\n+              alt_text_modal: this._uiManager.useNewAltTextFlow\n+            }\n+          });\n           this.#getBitmapFetched(data);\n         }\n         resolve();\n+      }, {\n+        signal\n       });\n       input.addEventListener(\"cancel\", () => {\n         this.remove();\n         resolve();\n+      }, {\n+        signal\n       });\n     }).finally(() => this.#getBitmapDone());\n     input.click();\n@@ -18268,8 +26714,6 @@\n       this._uiManager.imageManager.deleteId(this.#bitmapId);\n       this.#canvas?.remove();\n       this.#canvas = null;\n-      this.#observer?.disconnect();\n-      this.#observer = null;\n       if (this.#resizeTimeoutId) {\n         clearTimeout(this.#resizeTimeoutId);\n         this.#resizeTimeoutId = null;\n@@ -18295,12 +26739,14 @@\n       this.parent.add(this);\n     }\n   }\n-  onceAdded() {\n+  onceAdded(focus) {\n     this._isDraggable = true;\n-    this.div.focus();\n+    if (focus) {\n+      this.div.focus();\n+    }\n   }\n   isEmpty() {\n-    return !(this.#bitmapPromise || this.#bitmap || this.#bitmapUrl || this.#bitmapFile || this.#bitmapId);\n+    return !(this.#bitmapPromise || this.#bitmap || this.#bitmapUrl || this.#bitmapFile || this.#bitmapId || this.#missingCanvas);\n   }\n   get isResizable() {\n     return true;\n@@ -18310,24 +26756,57 @@\n       return this.div;\n     }\n     let baseX, baseY;\n-    if (this.width) {\n+    if (this._isCopy) {\n       baseX = this.x;\n       baseY = this.y;\n     }\n     super.render();\n     this.div.hidden = true;\n     this.addAltTextButton();\n-    if (this.#bitmap) {\n-      this.#createCanvas();\n-    } else {\n-      this.#getBitmap();\n+    if (!this.#missingCanvas) {\n+      if (this.#bitmap) {\n+        this.#createCanvas();\n+      } else {\n+        this.#getBitmap();\n+      }\n     }\n-    if (this.width) {\n-      const [parentWidth, parentHeight] = this.parentDimensions;\n-      this.setAt(baseX * parentWidth, baseY * parentHeight, this.width * parentWidth, this.height * parentHeight);\n+    if (this._isCopy) {\n+      this._moveAfterPaste(baseX, baseY);\n     }\n+    this._uiManager.addShouldRescale(this);\n     return this.div;\n   }\n+  setCanvas(annotationElementId, canvas) {\n+    const {\n+      id: bitmapId,\n+      bitmap\n+    } = this._uiManager.imageManager.getFromCanvas(annotationElementId, canvas);\n+    canvas.remove();\n+    if (bitmapId && this._uiManager.imageManager.isValidId(bitmapId)) {\n+      this.#bitmapId = bitmapId;\n+      if (bitmap) {\n+        this.#bitmap = bitmap;\n+      }\n+      this.#missingCanvas = false;\n+      this.#createCanvas();\n+    }\n+  }\n+  _onResized() {\n+    this.onScaleChanging();\n+  }\n+  onScaleChanging() {\n+    if (!this.parent) {\n+      return;\n+    }\n+    if (this.#resizeTimeoutId !== null) {\n+      clearTimeout(this.#resizeTimeoutId);\n+    }\n+    const TIME_TO_WAIT = 200;\n+    this.#resizeTimeoutId = setTimeout(() => {\n+      this.#resizeTimeoutId = null;\n+      this.#drawBitmap();\n+    }, TIME_TO_WAIT);\n+  }\n   #createCanvas() {\n     const {\n       div\n@@ -18350,10 +26829,20 @@\n     this.setDims(width * parentWidth \u002F pageWidth, height * parentHeight \u002F pageHeight);\n     this._uiManager.enableWaiting(false);\n     const canvas = this.#canvas = document.createElement(\"canvas\");\n-    div.append(canvas);\n-    div.hidden = false;\n-    this.#drawBitmap(width, height);\n-    this.#createObserver();\n+    canvas.setAttribute(\"role\", \"img\");\n+    this.addContainer(canvas);\n+    this.width = width \u002F pageWidth;\n+    this.height = height \u002F pageHeight;\n+    if (this._initialOptions?.isCentered) {\n+      this.center();\n+    } else {\n+      this.fixAndSetPosition();\n+    }\n+    this._initialOptions = null;\n+    if (!this._uiManager.useNewAltTextWhenAddingImage || !this._uiManager.useNewAltTextFlow || this.annotationElementId) {\n+      div.hidden = false;\n+    }\n+    this.#drawBitmap();\n     if (!this.#hasBeenAddedInUndoStack) {\n       this.parent.addUndoableEditor(this);\n       this.#hasBeenAddedInUndoStack = true;\n@@ -18362,28 +26851,92 @@\n       action: \"inserted_image\"\n     });\n     if (this.#bitmapFileName) {\n-      canvas.setAttribute(\"aria-label\", this.#bitmapFileName);\n+      this.div.setAttribute(\"aria-description\", this.#bitmapFileName);\n     }\n   }\n-  #setDimensions(width, height) {\n-    const [parentWidth, parentHeight] = this.parentDimensions;\n-    this.width = width \u002F parentWidth;\n-    this.height = height \u002F parentHeight;\n-    this.setDims(width, height);\n-    if (this._initialOptions?.isCentered) {\n-      this.center();\n-    } else {\n-      this.fixAndSetPosition();\n+  copyCanvas(maxDataDimension, maxPreviewDimension, createImageData = false) {\n+    if (!maxDataDimension) {\n+      maxDataDimension = 224;\n     }\n-    this._initialOptions = null;\n-    if (this.#resizeTimeoutId !== null) {\n-      clearTimeout(this.#resizeTimeoutId);\n+    const {\n+      width: bitmapWidth,\n+      height: bitmapHeight\n+    } = this.#bitmap;\n+    const outputScale = new OutputScale();\n+    let bitmap = this.#bitmap;\n+    let width = bitmapWidth,\n+      height = bitmapHeight;\n+    let canvas = null;\n+    if (maxPreviewDimension) {\n+      if (bitmapWidth > maxPreviewDimension || bitmapHeight > maxPreviewDimension) {\n+        const ratio = Math.min(maxPreviewDimension \u002F bitmapWidth, maxPreviewDimension \u002F bitmapHeight);\n+        width = Math.floor(bitmapWidth * ratio);\n+        height = Math.floor(bitmapHeight * ratio);\n+      }\n+      canvas = document.createElement(\"canvas\");\n+      const scaledWidth = canvas.width = Math.ceil(width * outputScale.sx);\n+      const scaledHeight = canvas.height = Math.ceil(height * outputScale.sy);\n+      if (!this.#isSvg) {\n+        bitmap = this.#scaleBitmap(scaledWidth, scaledHeight);\n+      }\n+      const ctx = canvas.getContext(\"2d\");\n+      ctx.filter = this._uiManager.hcmFilter;\n+      let white = \"white\",\n+        black = \"#cfcfd8\";\n+      if (this._uiManager.hcmFilter !== \"none\") {\n+        black = \"black\";\n+      } else if (window.matchMedia?.(\"(prefers-color-scheme: dark)\").matches) {\n+        white = \"#8f8f9d\";\n+        black = \"#42414d\";\n+      }\n+      const boxDim = 15;\n+      const boxDimWidth = boxDim * outputScale.sx;\n+      const boxDimHeight = boxDim * outputScale.sy;\n+      const pattern = new OffscreenCanvas(boxDimWidth * 2, boxDimHeight * 2);\n+      const patternCtx = pattern.getContext(\"2d\");\n+      patternCtx.fillStyle = white;\n+      patternCtx.fillRect(0, 0, boxDimWidth * 2, boxDimHeight * 2);\n+      patternCtx.fillStyle = black;\n+      patternCtx.fillRect(0, 0, boxDimWidth, boxDimHeight);\n+      patternCtx.fillRect(boxDimWidth, boxDimHeight, boxDimWidth, boxDimHeight);\n+      ctx.fillStyle = ctx.createPattern(pattern, \"repeat\");\n+      ctx.fillRect(0, 0, scaledWidth, scaledHeight);\n+      ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n+    }\n+    let imageData = null;\n+    if (createImageData) {\n+      let dataWidth, dataHeight;\n+      if (outputScale.symmetric && bitmap.width \u003C maxDataDimension && bitmap.height \u003C maxDataDimension) {\n+        dataWidth = bitmap.width;\n+        dataHeight = bitmap.height;\n+      } else {\n+        bitmap = this.#bitmap;\n+        if (bitmapWidth > maxDataDimension || bitmapHeight > maxDataDimension) {\n+          const ratio = Math.min(maxDataDimension \u002F bitmapWidth, maxDataDimension \u002F bitmapHeight);\n+          dataWidth = Math.floor(bitmapWidth * ratio);\n+          dataHeight = Math.floor(bitmapHeight * ratio);\n+          if (!this.#isSvg) {\n+            bitmap = this.#scaleBitmap(dataWidth, dataHeight);\n+          }\n+        }\n+      }\n+      const offscreen = new OffscreenCanvas(dataWidth, dataHeight);\n+      const offscreenCtx = offscreen.getContext(\"2d\", {\n+        willReadFrequently: true\n+      });\n+      offscreenCtx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, dataWidth, dataHeight);\n+      imageData = {\n+        width: dataWidth,\n+        height: dataHeight,\n+        data: offscreenCtx.getImageData(0, 0, dataWidth, dataHeight).data\n+      };\n     }\n-    const TIME_TO_WAIT = 200;\n-    this.#resizeTimeoutId = setTimeout(() => {\n-      this.#resizeTimeoutId = null;\n-      this.#drawBitmap(width, height);\n-    }, TIME_TO_WAIT);\n+    return {\n+      canvas,\n+      width,\n+      height,\n+      imageData\n+    };\n   }\n   #scaleBitmap(width, height) {\n     const {\n@@ -18409,44 +26962,25 @@\n     }\n     return bitmap;\n   }\n-  #drawBitmap(width, height) {\n-    width = Math.ceil(width);\n-    height = Math.ceil(height);\n+  #drawBitmap() {\n+    const [parentWidth, parentHeight] = this.parentDimensions;\n+    const {\n+      width,\n+      height\n+    } = this;\n+    const outputScale = new OutputScale();\n+    const scaledWidth = Math.ceil(width * parentWidth * outputScale.sx);\n+    const scaledHeight = Math.ceil(height * parentHeight * outputScale.sy);\n     const canvas = this.#canvas;\n-    if (!canvas || canvas.width === width && canvas.height === height) {\n+    if (!canvas || canvas.width === scaledWidth && canvas.height === scaledHeight) {\n       return;\n     }\n-    canvas.width = width;\n-    canvas.height = height;\n-    const bitmap = this.#isSvg ? this.#bitmap : this.#scaleBitmap(width, height);\n-    if (this._uiManager.hasMLManager && !this.hasAltText()) {\n-      const offscreen = new OffscreenCanvas(width, height);\n-      const ctx = offscreen.getContext(\"2d\");\n-      ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, width, height);\n-      this._uiManager.mlGuess({\n-        service: \"image-to-text\",\n-        request: {\n-          data: ctx.getImageData(0, 0, width, height).data,\n-          width,\n-          height,\n-          channels: 4\n-        }\n-      }).then(response => {\n-        const altText = response?.output || \"\";\n-        if (this.parent && altText && !this.hasAltText()) {\n-          this.altTextData = {\n-            altText,\n-            decorative: false\n-          };\n-        }\n-      });\n-    }\n+    canvas.width = scaledWidth;\n+    canvas.height = scaledHeight;\n+    const bitmap = this.#isSvg ? this.#bitmap : this.#scaleBitmap(scaledWidth, scaledHeight);\n     const ctx = canvas.getContext(\"2d\");\n     ctx.filter = this._uiManager.hcmFilter;\n-    ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, width, height);\n-  }\n-  getImageForAltText() {\n-    return this.#canvas;\n+    ctx.drawImage(bitmap, 0, 0, bitmap.width, bitmap.height, 0, 0, scaledWidth, scaledHeight);\n   }\n   #serializeBitmap(toUrl) {\n     if (toUrl) {\n@@ -18476,29 +27010,74 @@\n     }\n     return structuredClone(this.#bitmap);\n   }\n-  #createObserver() {\n-    this.#observer = new ResizeObserver(entries => {\n-      const rect = entries[0].contentRect;\n-      if (rect.width && rect.height) {\n-        this.#setDimensions(rect.width, rect.height);\n-      }\n-    });\n-    this.#observer.observe(this.div);\n-  }\n-  static deserialize(data, parent, uiManager) {\n+  static async deserialize(data, parent, uiManager) {\n+    let initialData = null;\n+    let missingCanvas = false;\n     if (data instanceof StampAnnotationElement) {\n-      return null;\n+      const {\n+        data: {\n+          rect,\n+          rotation,\n+          id,\n+          structParent,\n+          popupRef\n+        },\n+        container,\n+        parent: {\n+          page: {\n+            pageNumber\n+          }\n+        },\n+        canvas\n+      } = data;\n+      let bitmapId, bitmap;\n+      if (canvas) {\n+        delete data.canvas;\n+        ({\n+          id: bitmapId,\n+          bitmap\n+        } = uiManager.imageManager.getFromCanvas(container.id, canvas));\n+        canvas.remove();\n+      } else {\n+        missingCanvas = true;\n+        data._hasNoCanvas = true;\n+      }\n+      const altText = (await parent._structTree.getAriaAttributes(`${AnnotationPrefix}${id}`))?.get(\"aria-label\") || \"\";\n+      initialData = data = {\n+        annotationType: AnnotationEditorType.STAMP,\n+        bitmapId,\n+        bitmap,\n+        pageIndex: pageNumber - 1,\n+        rect: rect.slice(0),\n+        rotation,\n+        id,\n+        deleted: false,\n+        accessibilityData: {\n+          decorative: false,\n+          altText\n+        },\n+        isSvg: false,\n+        structParent,\n+        popupRef\n+      };\n     }\n-    const editor = super.deserialize(data, parent, uiManager);\n+    const editor = await super.deserialize(data, parent, uiManager);\n     const {\n       rect,\n+      bitmap,\n       bitmapUrl,\n       bitmapId,\n       isSvg,\n       accessibilityData\n     } = data;\n-    if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\n+    if (missingCanvas) {\n+      uiManager.addMissingCanvas(data.id, editor);\n+      editor.#missingCanvas = true;\n+    } else if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\n       editor.#bitmapId = bitmapId;\n+      if (bitmap) {\n+        editor.#bitmap = bitmap;\n+      }\n     } else {\n       editor.#bitmapUrl = bitmapUrl;\n     }\n@@ -18506,15 +27085,21 @@\n     const [parentWidth, parentHeight] = editor.pageDimensions;\n     editor.width = (rect[2] - rect[0]) \u002F parentWidth;\n     editor.height = (rect[3] - rect[1]) \u002F parentHeight;\n+    editor.annotationElementId = data.id || null;\n     if (accessibilityData) {\n       editor.altTextData = accessibilityData;\n     }\n+    editor._initialData = initialData;\n+    editor.#hasBeenAddedInUndoStack = !!initialData;\n     return editor;\n   }\n   serialize(isForCopying = false, context = null) {\n     if (this.isEmpty()) {\n       return null;\n     }\n+    if (this.deleted) {\n+      return this.serializeDeleted();\n+    }\n     const serialized = {\n       annotationType: AnnotationEditorType.STAMP,\n       bitmapId: this.#bitmapId,\n@@ -18526,19 +27111,32 @@\n     };\n     if (isForCopying) {\n       serialized.bitmapUrl = this.#serializeBitmap(true);\n-      serialized.accessibilityData = this.altTextData;\n+      serialized.accessibilityData = this.serializeAltText(true);\n+      serialized.isCopy = true;\n       return serialized;\n     }\n     const {\n       decorative,\n       altText\n-    } = this.altTextData;\n+    } = this.serializeAltText(false);\n     if (!decorative && altText) {\n       serialized.accessibilityData = {\n         type: \"Figure\",\n         alt: altText\n       };\n     }\n+    if (this.annotationElementId) {\n+      const changes = this.#hasElementChanged(serialized);\n+      if (changes.isSame) {\n+        return null;\n+      }\n+      if (changes.isSameAltText) {\n+        delete serialized.accessibilityData;\n+      } else {\n+        serialized.accessibilityData.structParent = this._initialData.structParent ?? -1;\n+      }\n+    }\n+    serialized.id = this.annotationElementId;\n     if (context === null) {\n       return serialized;\n     }\n@@ -18560,9 +27158,39 @@\n     }\n     return serialized;\n   }\n+  #hasElementChanged(serialized) {\n+    const {\n+      pageIndex,\n+      accessibilityData: {\n+        altText\n+      }\n+    } = this._initialData;\n+    const isSamePageIndex = serialized.pageIndex === pageIndex;\n+    const isSameAltText = (serialized.accessibilityData?.alt || \"\") === altText;\n+    return {\n+      isSame: !this._hasBeenMoved && !this._hasBeenResized && isSamePageIndex && isSameAltText,\n+      isSameAltText\n+    };\n+  }\n+  renderAnnotationElement(annotation) {\n+    annotation.updateEdited({\n+      rect: this.getRect(0, 0)\n+    });\n+    return null;\n+  }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Feditor\u002Fannotation_editor_layer.js\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Feditor\u002Fannotation_editor_layer.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n \n@@ -18574,22 +27202,24 @@\n   #accessibilityManager;\n   #allowClick = false;\n   #annotationLayer = null;\n-  #boundPointerup = null;\n-  #boundPointerdown = null;\n-  #boundTextLayerPointerDown = null;\n+  #clickAC = null;\n   #editorFocusTimeoutId = null;\n   #editors = new Map();\n   #hadPointerDown = false;\n-  #isCleaningUp = false;\n   #isDisabling = false;\n+  #isEnabling = false;\n+  #drawingAC = null;\n+  #focusedElement = null;\n   #textLayer = null;\n+  #textSelectionAC = null;\n   #uiManager;\n   static _initialized = false;\n-  static #editorTypes = new Map([FreeTextEditor, InkEditor, StampEditor, HighlightEditor].map(type => [type._editorType, type]));\n+  static #editorTypes = new Map([FreeTextEditor, InkEditor, StampEditor, HighlightEditor, SignatureEditor].map(type => [type._editorType, type]));\n   constructor({\n     uiManager,\n     pageIndex,\n     div,\n+    structTreeLayer,\n     accessibilityManager,\n     annotationLayer,\n     drawLayer,\n@@ -18613,6 +27243,7 @@\n     this.viewport = viewport;\n     this.#textLayer = textLayer;\n     this.drawLayer = drawLayer;\n+    this._structTree = structTreeLayer;\n     this.#uiManager.addLayer(this);\n   }\n   get isEmpty() {\n@@ -18621,8 +27252,8 @@\n   get isInvisible() {\n     return this.isEmpty && this.#uiManager.getMode() === AnnotationEditorType.NONE;\n   }\n-  updateToolbar(mode) {\n-    this.#uiManager.updateToolbar(mode);\n+  updateToolbar(options) {\n+    this.#uiManager.updateToolbar(options);\n   }\n   updateMode(mode = this.#uiManager.getMode()) {\n     this.#cleanup();\n@@ -18634,10 +27265,9 @@\n         this.disableClick();\n         return;\n       case AnnotationEditorType.INK:\n-        this.addInkEditorIfNeeded(false);\n         this.disableTextSelection();\n         this.togglePointerEvents(true);\n-        this.disableClick();\n+        this.enableClick();\n         break;\n       case AnnotationEditorType.HIGHLIGHT:\n         this.enableTextSelection();\n@@ -18661,37 +27291,26 @@\n   hasTextLayer(textLayer) {\n     return textLayer === this.#textLayer?.div;\n   }\n-  addInkEditorIfNeeded(isCommitting) {\n-    if (this.#uiManager.getMode() !== AnnotationEditorType.INK) {\n-      return;\n-    }\n-    if (!isCommitting) {\n-      for (const editor of this.#editors.values()) {\n-        if (editor.isEmpty()) {\n-          editor.setInBackground();\n-          return;\n-        }\n-      }\n-    }\n-    const editor = this.createAndAddNewEditor({\n-      offsetX: 0,\n-      offsetY: 0\n-    }, false);\n-    editor.setInBackground();\n-  }\n   setEditingState(isEditing) {\n     this.#uiManager.setEditingState(isEditing);\n   }\n   addCommands(params) {\n     this.#uiManager.addCommands(params);\n   }\n+  cleanUndoStack(type) {\n+    this.#uiManager.cleanUndoStack(type);\n+  }\n+  toggleDrawing(enabled = false) {\n+    this.div.classList.toggle(\"drawing\", !enabled);\n+  }\n   togglePointerEvents(enabled = false) {\n     this.div.classList.toggle(\"disabled\", !enabled);\n   }\n   toggleAnnotationLayerPointerEvents(enabled = false) {\n     this.#annotationLayer?.div.classList.toggle(\"disabled\", !enabled);\n   }\n-  enable() {\n+  async enable() {\n+    this.#isEnabling = true;\n     this.div.tabIndex = 0;\n     this.togglePointerEvents(true);\n     const annotationElementIds = new Set();\n@@ -18704,6 +27323,7 @@\n       }\n     }\n     if (!this.#annotationLayer) {\n+      this.#isEnabling = false;\n       return;\n     }\n     const editables = this.#annotationLayer.getEditableAnnotations();\n@@ -18715,13 +27335,14 @@\n       if (annotationElementIds.has(editable.data.id)) {\n         continue;\n       }\n-      const editor = this.deserialize(editable);\n+      const editor = await this.deserialize(editable);\n       if (!editor) {\n         continue;\n       }\n       this.addOrRebuild(editor);\n       editor.enableEditing();\n     }\n+    this.#isEnabling = false;\n   }\n   disable() {\n     this.#isDisabling = true;\n@@ -18762,8 +27383,9 @@\n         editor = changedAnnotations.get(id);\n         if (editor) {\n           this.#uiManager.addChangedExistingAnnotation(editor);\n-          editor.renderAnnotationElement(editable);\n-          editor.show(false);\n+          if (editor.renderAnnotationElement(editable)) {\n+            editor.show(false);\n+          }\n         }\n         editable.show();\n       }\n@@ -18794,23 +27416,29 @@\n   }\n   enableTextSelection() {\n     this.div.tabIndex = -1;\n-    if (this.#textLayer?.div && !this.#boundTextLayerPointerDown) {\n-      this.#boundTextLayerPointerDown = this.#textLayerPointerDown.bind(this);\n-      this.#textLayer.div.addEventListener(\"pointerdown\", this.#boundTextLayerPointerDown);\n+    if (this.#textLayer?.div && !this.#textSelectionAC) {\n+      this.#textSelectionAC = new AbortController();\n+      const signal = this.#uiManager.combinedSignal(this.#textSelectionAC);\n+      this.#textLayer.div.addEventListener(\"pointerdown\", this.#textLayerPointerDown.bind(this), {\n+        signal\n+      });\n       this.#textLayer.div.classList.add(\"highlighting\");\n     }\n   }\n   disableTextSelection() {\n     this.div.tabIndex = 0;\n-    if (this.#textLayer?.div && this.#boundTextLayerPointerDown) {\n-      this.#textLayer.div.removeEventListener(\"pointerdown\", this.#boundTextLayerPointerDown);\n-      this.#boundTextLayerPointerDown = null;\n+    if (this.#textLayer?.div && this.#textSelectionAC) {\n+      this.#textSelectionAC.abort();\n+      this.#textSelectionAC = null;\n       this.#textLayer.div.classList.remove(\"highlighting\");\n     }\n   }\n   #textLayerPointerDown(event) {\n     this.#uiManager.unselectAll();\n-    if (event.target === this.#textLayer.div) {\n+    const {\n+      target\n+    } = event;\n+    if (target === this.#textLayer.div || (target.getAttribute(\"role\") === \"img\" || target.classList.contains(\"endOfContent\")) && this.#textLayer.div.contains(target)) {\n       const {\n         isMac\n       } = util_FeatureTest.platform;\n@@ -18819,32 +27447,42 @@\n       }\n       this.#uiManager.showAllEditors(\"highlight\", true, true);\n       this.#textLayer.div.classList.add(\"free\");\n-      HighlightEditor.startHighlighting(this, this.#uiManager.direction === \"ltr\", event);\n+      this.toggleDrawing();\n+      HighlightEditor.startHighlighting(this, this.#uiManager.direction === \"ltr\", {\n+        target: this.#textLayer.div,\n+        x: event.x,\n+        y: event.y\n+      });\n       this.#textLayer.div.addEventListener(\"pointerup\", () => {\n         this.#textLayer.div.classList.remove(\"free\");\n+        this.toggleDrawing(true);\n       }, {\n-        once: true\n+        once: true,\n+        signal: this.#uiManager._signal\n       });\n       event.preventDefault();\n     }\n   }\n   enableClick() {\n-    if (this.#boundPointerdown) {\n+    if (this.#clickAC) {\n       return;\n     }\n-    this.#boundPointerdown = this.pointerdown.bind(this);\n-    this.#boundPointerup = this.pointerup.bind(this);\n-    this.div.addEventListener(\"pointerdown\", this.#boundPointerdown);\n-    this.div.addEventListener(\"pointerup\", this.#boundPointerup);\n+    this.#clickAC = new AbortController();\n+    const signal = this.#uiManager.combinedSignal(this.#clickAC);\n+    this.div.addEventListener(\"pointerdown\", this.pointerdown.bind(this), {\n+      signal\n+    });\n+    const pointerup = this.pointerup.bind(this);\n+    this.div.addEventListener(\"pointerup\", pointerup, {\n+      signal\n+    });\n+    this.div.addEventListener(\"pointercancel\", pointerup, {\n+      signal\n+    });\n   }\n   disableClick() {\n-    if (!this.#boundPointerdown) {\n-      return;\n-    }\n-    this.div.removeEventListener(\"pointerdown\", this.#boundPointerdown);\n-    this.div.removeEventListener(\"pointerup\", this.#boundPointerup);\n-    this.#boundPointerdown = null;\n-    this.#boundPointerup = null;\n+    this.#clickAC?.abort();\n+    this.#clickAC = null;\n   }\n   attach(editor) {\n     this.#editors.set(editor.id, editor);\n@@ -18867,9 +27505,6 @@\n     this.#uiManager.removeEditor(editor);\n     editor.div.remove();\n     editor.isAttachedToDOM = false;\n-    if (!this.#isCleaningUp) {\n-      this.addInkEditorIfNeeded(false);\n-    }\n   }\n   changeParent(editor) {\n     if (editor.parent === this) {\n@@ -18901,7 +27536,7 @@\n       editor.isAttachedToDOM = true;\n     }\n     editor.fixAndSetPosition();\n-    editor.onceAdded();\n+    editor.onceAdded(!this.#isEnabling);\n     this.#uiManager.addToAnnotationStorage(editor);\n     editor._reportTelemetry(editor.telemetryInitialData);\n   }\n@@ -18920,7 +27555,8 @@\n           editor.div.addEventListener(\"focusin\", () => {\n             editor._focusEventsAllowed = true;\n           }, {\n-            once: true\n+            once: true,\n+            signal: this.#uiManager._signal\n           });\n           activeElement.focus();\n         } else {\n@@ -18956,6 +27592,9 @@\n   get #currentEditorType() {\n     return AnnotationEditorLayer.#editorTypes.get(this.#uiManager.getMode());\n   }\n+  combinedSignal(ac) {\n+    return this.#uiManager.combinedSignal(ac);\n+  }\n   #createNewEditor(params) {\n     const editorType = this.#currentEditorType;\n     return editorType ? new editorType.prototype.constructor(params) : null;\n@@ -18963,9 +27602,9 @@\n   canCreateNewEmptyEditor() {\n     return this.#currentEditorType?.canCreateNewEmptyEditor();\n   }\n-  pasteEditor(mode, params) {\n-    this.#uiManager.updateToolbar(mode);\n-    this.#uiManager.updateMode(mode);\n+  async pasteEditor(options, params) {\n+    this.updateToolbar(options);\n+    await this.#uiManager.updateMode(options.mode);\n     const {\n       offsetX,\n       offsetY\n@@ -18984,8 +27623,8 @@\n       this.add(editor);\n     }\n   }\n-  deserialize(data) {\n-    return AnnotationEditorLayer.#editorTypes.get(data.annotationType ?? data.annotationEditorType)?.deserialize(data, this, this.#uiManager) || null;\n+  async deserialize(data) {\n+    return (await AnnotationEditorLayer.#editorTypes.get(data.annotationType ?? data.annotationEditorType)?.deserialize(data, this, this.#uiManager)) || null;\n   }\n   createAndAddNewEditor(event, isCentered, data = {}) {\n     const id = this.getNextId();\n@@ -19022,8 +27661,8 @@\n       offsetY\n     };\n   }\n-  addNewEditor() {\n-    this.createAndAddNewEditor(this.#getCenterPoint(), true);\n+  addNewEditor(data = {}) {\n+    this.createAndAddNewEditor(this.#getCenterPoint(), true, data);\n   }\n   setSelected(editor) {\n     this.#uiManager.setSelected(editor);\n@@ -19031,9 +27670,6 @@\n   toggleSelected(editor) {\n     this.#uiManager.toggleSelected(editor);\n   }\n-  isSelected(editor) {\n-    return this.#uiManager.isSelected(editor);\n-  }\n   unselect(editor) {\n     this.#uiManager.unselect(editor);\n   }\n@@ -19051,11 +27687,15 @@\n       return;\n     }\n     this.#hadPointerDown = false;\n+    if (this.#currentEditorType?.isDrawer && this.#currentEditorType.supportMultipleDrawings) {\n+      return;\n+    }\n     if (!this.#allowClick) {\n       this.#allowClick = true;\n       return;\n     }\n-    if (this.#uiManager.getMode() === AnnotationEditorType.STAMP) {\n+    const currentMode = this.#uiManager.getMode();\n+    if (currentMode === AnnotationEditorType.STAMP || currentMode === AnnotationEditorType.SIGNATURE) {\n       this.#uiManager.unselectAll();\n       return;\n     }\n@@ -19079,9 +27719,63 @@\n       return;\n     }\n     this.#hadPointerDown = true;\n+    if (this.#currentEditorType?.isDrawer) {\n+      this.startDrawingSession(event);\n+      return;\n+    }\n     const editor = this.#uiManager.getActive();\n     this.#allowClick = !editor || editor.isEmpty();\n   }\n+  startDrawingSession(event) {\n+    this.div.focus({\n+      preventScroll: true\n+    });\n+    if (this.#drawingAC) {\n+      this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n+      return;\n+    }\n+    this.#uiManager.setCurrentDrawingSession(this);\n+    this.#drawingAC = new AbortController();\n+    const signal = this.#uiManager.combinedSignal(this.#drawingAC);\n+    this.div.addEventListener(\"blur\", ({\n+      relatedTarget\n+    }) => {\n+      if (relatedTarget && !this.div.contains(relatedTarget)) {\n+        this.#focusedElement = null;\n+        this.commitOrRemove();\n+      }\n+    }, {\n+      signal\n+    });\n+    this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n+  }\n+  pause(on) {\n+    if (on) {\n+      const {\n+        activeElement\n+      } = document;\n+      if (this.div.contains(activeElement)) {\n+        this.#focusedElement = activeElement;\n+      }\n+      return;\n+    }\n+    if (this.#focusedElement) {\n+      setTimeout(() => {\n+        this.#focusedElement?.focus();\n+        this.#focusedElement = null;\n+      }, 0);\n+    }\n+  }\n+  endDrawingSession(isAborted = false) {\n+    if (!this.#drawingAC) {\n+      return null;\n+    }\n+    this.#uiManager.setCurrentDrawingSession(null);\n+    this.#drawingAC.abort();\n+    this.#drawingAC = null;\n+    this.#focusedElement = null;\n+    return this.#currentEditorType.endDrawing(isAborted);\n+  }\n   findNewParent(editor, x, y) {\n     const layer = this.#uiManager.findParent(x, y);\n     if (layer === null || layer === this) {\n@@ -19090,7 +27784,21 @@\n     layer.changeParent(editor);\n     return true;\n   }\n+  commitOrRemove() {\n+    if (this.#drawingAC) {\n+      this.endDrawingSession();\n+      return true;\n+    }\n+    return false;\n+  }\n+  onScaleChanging() {\n+    if (!this.#drawingAC) {\n+      return;\n+    }\n+    this.#currentEditorType.onScaleChangingWhenDrawing(this);\n+  }\n   destroy() {\n+    this.commitOrRemove();\n     if (this.#uiManager.getActive()?.parent === this) {\n       this.#uiManager.commitOrRemove();\n       this.#uiManager.setActiveEditor(null);\n@@ -19110,13 +27818,11 @@\n     this.#uiManager.removeLayer(this);\n   }\n   #cleanup() {\n-    this.#isCleaningUp = true;\n     for (const editor of this.#editors.values()) {\n       if (editor.isEmpty()) {\n         editor.remove();\n       }\n     }\n-    this.#isCleaningUp = false;\n   }\n   render({\n     viewport\n@@ -19145,7 +27851,6 @@\n         editor.rotate(rotation);\n       }\n     }\n-    this.addInkEditorIfNeeded(false);\n   }\n   get pageDimensions() {\n     const {\n@@ -19159,14 +27864,14 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fdisplay\u002Fdraw_layer.js\n+;\u002F\u002F .\u002Fsrc\u002Fdisplay\u002Fdraw_layer.js\n \n \n class DrawLayer {\n   #parent = null;\n-  #id = 0;\n   #mapping = new Map();\n   #toUpdate = new Map();\n+  static #id = 0;\n   constructor({\n     pageIndex\n   }) {\n@@ -19190,12 +27895,7 @@\n   static get _svgFactory() {\n     return shadow(this, \"_svgFactory\", new DOMSVGFactory());\n   }\n-  static #setBox(element, {\n-    x = 0,\n-    y = 0,\n-    width = 1,\n-    height = 1\n-  } = {}) {\n+  static #setBox(element, [x, y, width, height]) {\n     const {\n       style\n     } = element;\n@@ -19204,11 +27904,10 @@\n     style.width = `${100 * width}%`;\n     style.height = `${100 * height}%`;\n   }\n-  #createSVG(box) {\n+  #createSVG() {\n     const svg = DrawLayer._svgFactory.create(1, 1, true);\n     this.#parent.append(svg);\n     svg.setAttribute(\"aria-hidden\", true);\n-    DrawLayer.#setBox(svg, box);\n     return svg;\n   }\n   #createClipPath(defs, pathId) {\n@@ -19223,50 +27922,51 @@\n     clipPathUse.classList.add(\"clip\");\n     return clipPathId;\n   }\n-  highlight(outlines, color, opacity, isPathUpdatable = false) {\n-    const id = this.#id++;\n-    const root = this.#createSVG(outlines.box);\n-    root.classList.add(\"highlight\");\n-    if (outlines.free) {\n-      root.classList.add(\"free\");\n+  #updateProperties(element, properties) {\n+    for (const [key, value] of Object.entries(properties)) {\n+      if (value === null) {\n+        element.removeAttribute(key);\n+      } else {\n+        element.setAttribute(key, value);\n+      }\n     }\n+  }\n+  draw(properties, isPathUpdatable = false, hasClip = false) {\n+    const id = DrawLayer.#id++;\n+    const root = this.#createSVG();\n     const defs = DrawLayer._svgFactory.createElement(\"defs\");\n     root.append(defs);\n     const path = DrawLayer._svgFactory.createElement(\"path\");\n     defs.append(path);\n     const pathId = `path_p${this.pageIndex}_${id}`;\n     path.setAttribute(\"id\", pathId);\n-    path.setAttribute(\"d\", outlines.toSVGPath());\n+    path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n     if (isPathUpdatable) {\n       this.#toUpdate.set(id, path);\n     }\n-    const clipPathId = this.#createClipPath(defs, pathId);\n+    const clipPathId = hasClip ? this.#createClipPath(defs, pathId) : null;\n     const use = DrawLayer._svgFactory.createElement(\"use\");\n     root.append(use);\n-    root.setAttribute(\"fill\", color);\n-    root.setAttribute(\"fill-opacity\", opacity);\n     use.setAttribute(\"href\", `#${pathId}`);\n+    this.updateProperties(root, properties);\n     this.#mapping.set(id, root);\n     return {\n       id,\n       clipPathId: `url(#${clipPathId})`\n     };\n   }\n-  highlightOutline(outlines) {\n-    const id = this.#id++;\n-    const root = this.#createSVG(outlines.box);\n-    root.classList.add(\"highlightOutline\");\n+  drawOutline(properties, mustRemoveSelfIntersections) {\n+    const id = DrawLayer.#id++;\n+    const root = this.#createSVG();\n     const defs = DrawLayer._svgFactory.createElement(\"defs\");\n     root.append(defs);\n     const path = DrawLayer._svgFactory.createElement(\"path\");\n     defs.append(path);\n     const pathId = `path_p${this.pageIndex}_${id}`;\n     path.setAttribute(\"id\", pathId);\n-    path.setAttribute(\"d\", outlines.toSVGPath());\n     path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n     let maskId;\n-    if (outlines.free) {\n-      root.classList.add(\"free\");\n+    if (mustRemoveSelfIntersections) {\n       const mask = DrawLayer._svgFactory.createElement(\"mask\");\n       defs.append(mask);\n       maskId = `mask_p${this.pageIndex}_${id}`;\n@@ -19295,50 +27995,62 @@\n     root.append(use2);\n     use1.classList.add(\"mainOutline\");\n     use2.classList.add(\"secondaryOutline\");\n+    this.updateProperties(root, properties);\n     this.#mapping.set(id, root);\n     return id;\n   }\n-  finalizeLine(id, line) {\n-    const path = this.#toUpdate.get(id);\n+  finalizeDraw(id, properties) {\n     this.#toUpdate.delete(id);\n-    this.updateBox(id, line.box);\n-    path.setAttribute(\"d\", line.toSVGPath());\n+    this.updateProperties(id, properties);\n   }\n-  updateLine(id, line) {\n-    const root = this.#mapping.get(id);\n-    const defs = root.firstChild;\n-    const path = defs.firstChild;\n-    path.setAttribute(\"d\", line.toSVGPath());\n-  }\n-  removeFreeHighlight(id) {\n-    this.remove(id);\n-    this.#toUpdate.delete(id);\n-  }\n-  updatePath(id, line) {\n-    this.#toUpdate.get(id).setAttribute(\"d\", line.toSVGPath());\n-  }\n-  updateBox(id, box) {\n-    DrawLayer.#setBox(this.#mapping.get(id), box);\n-  }\n-  show(id, visible) {\n-    this.#mapping.get(id).classList.toggle(\"hidden\", !visible);\n-  }\n-  rotate(id, angle) {\n-    this.#mapping.get(id).setAttribute(\"data-main-rotation\", angle);\n-  }\n-  changeColor(id, color) {\n-    this.#mapping.get(id).setAttribute(\"fill\", color);\n-  }\n-  changeOpacity(id, opacity) {\n-    this.#mapping.get(id).setAttribute(\"fill-opacity\", opacity);\n-  }\n-  addClass(id, className) {\n-    this.#mapping.get(id).classList.add(className);\n+  updateProperties(elementOrId, properties) {\n+    if (!properties) {\n+      return;\n+    }\n+    const {\n+      root,\n+      bbox,\n+      rootClass,\n+      path\n+    } = properties;\n+    const element = typeof elementOrId === \"number\" ? this.#mapping.get(elementOrId) : elementOrId;\n+    if (!element) {\n+      return;\n+    }\n+    if (root) {\n+      this.#updateProperties(element, root);\n+    }\n+    if (bbox) {\n+      DrawLayer.#setBox(element, bbox);\n+    }\n+    if (rootClass) {\n+      const {\n+        classList\n+      } = element;\n+      for (const [className, value] of Object.entries(rootClass)) {\n+        classList.toggle(className, value);\n+      }\n+    }\n+    if (path) {\n+      const defs = element.firstChild;\n+      const pathElement = defs.firstChild;\n+      this.#updateProperties(pathElement, path);\n+    }\n   }\n-  removeClass(id, className) {\n-    this.#mapping.get(id).classList.remove(className);\n+  updateParent(id, layer) {\n+    if (layer === this) {\n+      return;\n+    }\n+    const root = this.#mapping.get(id);\n+    if (!root) {\n+      return;\n+    }\n+    layer.#parent.append(root);\n+    this.#mapping.delete(id);\n+    layer.#mapping.set(id, root);\n   }\n   remove(id) {\n+    this.#toUpdate.delete(id);\n     if (this.#parent === null) {\n       return;\n     }\n@@ -19351,10 +28063,14 @@\n       root.remove();\n     }\n     this.#mapping.clear();\n+    this.#toUpdate.clear();\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fpdf.js\n+;\u002F\u002F .\u002Fsrc\u002Fpdf.js\n+\n+\n+\n \n \n \n@@ -19367,55 +28083,66 @@\n \n \n \n-const pdfjsVersion = \"4.3.136\";\n-const pdfjsBuild = \"0cec64437\";\n-\n-var __webpack_exports__AbortException = __webpack_exports__.AbortException;\n-var __webpack_exports__AnnotationEditorLayer = __webpack_exports__.AnnotationEditorLayer;\n-var __webpack_exports__AnnotationEditorParamsType = __webpack_exports__.AnnotationEditorParamsType;\n-var __webpack_exports__AnnotationEditorType = __webpack_exports__.AnnotationEditorType;\n-var __webpack_exports__AnnotationEditorUIManager = __webpack_exports__.AnnotationEditorUIManager;\n-var __webpack_exports__AnnotationLayer = __webpack_exports__.AnnotationLayer;\n-var __webpack_exports__AnnotationMode = __webpack_exports__.AnnotationMode;\n-var __webpack_exports__CMapCompressionType = __webpack_exports__.CMapCompressionType;\n-var __webpack_exports__ColorPicker = __webpack_exports__.ColorPicker;\n-var __webpack_exports__DOMSVGFactory = __webpack_exports__.DOMSVGFactory;\n-var __webpack_exports__DrawLayer = __webpack_exports__.DrawLayer;\n-var __webpack_exports__FeatureTest = __webpack_exports__.FeatureTest;\n-var __webpack_exports__GlobalWorkerOptions = __webpack_exports__.GlobalWorkerOptions;\n-var __webpack_exports__ImageKind = __webpack_exports__.ImageKind;\n-var __webpack_exports__InvalidPDFException = __webpack_exports__.InvalidPDFException;\n-var __webpack_exports__MissingPDFException = __webpack_exports__.MissingPDFException;\n-var __webpack_exports__OPS = __webpack_exports__.OPS;\n-var __webpack_exports__Outliner = __webpack_exports__.Outliner;\n-var __webpack_exports__PDFDataRangeTransport = __webpack_exports__.PDFDataRangeTransport;\n-var __webpack_exports__PDFDateString = __webpack_exports__.PDFDateString;\n-var __webpack_exports__PDFWorker = __webpack_exports__.PDFWorker;\n-var __webpack_exports__PasswordResponses = __webpack_exports__.PasswordResponses;\n-var __webpack_exports__PermissionFlag = __webpack_exports__.PermissionFlag;\n-var __webpack_exports__PixelsPerInch = __webpack_exports__.PixelsPerInch;\n-var __webpack_exports__RenderingCancelledException = __webpack_exports__.RenderingCancelledException;\n-var __webpack_exports__TextLayer = __webpack_exports__.TextLayer;\n-var __webpack_exports__UnexpectedResponseException = __webpack_exports__.UnexpectedResponseException;\n-var __webpack_exports__Util = __webpack_exports__.Util;\n-var __webpack_exports__VerbosityLevel = __webpack_exports__.VerbosityLevel;\n-var __webpack_exports__XfaLayer = __webpack_exports__.XfaLayer;\n-var __webpack_exports__build = __webpack_exports__.build;\n-var __webpack_exports__createValidAbsoluteUrl = __webpack_exports__.createValidAbsoluteUrl;\n-var __webpack_exports__fetchData = __webpack_exports__.fetchData;\n-var __webpack_exports__getDocument = __webpack_exports__.getDocument;\n-var __webpack_exports__getFilenameFromUrl = __webpack_exports__.getFilenameFromUrl;\n-var __webpack_exports__getPdfFilenameFromUrl = __webpack_exports__.getPdfFilenameFromUrl;\n-var __webpack_exports__getXfaPageViewport = __webpack_exports__.getXfaPageViewport;\n-var __webpack_exports__isDataScheme = __webpack_exports__.isDataScheme;\n-var __webpack_exports__isPdfFile = __webpack_exports__.isPdfFile;\n-var __webpack_exports__noContextMenu = __webpack_exports__.noContextMenu;\n-var __webpack_exports__normalizeUnicode = __webpack_exports__.normalizeUnicode;\n-var __webpack_exports__renderTextLayer = __webpack_exports__.renderTextLayer;\n-var __webpack_exports__setLayerDimensions = __webpack_exports__.setLayerDimensions;\n-var __webpack_exports__shadow = __webpack_exports__.shadow;\n-var __webpack_exports__updateTextLayer = __webpack_exports__.updateTextLayer;\n-var __webpack_exports__version = __webpack_exports__.version;\n-export { __webpack_exports__AbortException as AbortException, __webpack_exports__AnnotationEditorLayer as AnnotationEditorLayer, __webpack_exports__AnnotationEditorParamsType as AnnotationEditorParamsType, __webpack_exports__AnnotationEditorType as AnnotationEditorType, __webpack_exports__AnnotationEditorUIManager as AnnotationEditorUIManager, __webpack_exports__AnnotationLayer as AnnotationLayer, __webpack_exports__AnnotationMode as AnnotationMode, __webpack_exports__CMapCompressionType as CMapCompressionType, __webpack_exports__ColorPicker as ColorPicker, __webpack_exports__DOMSVGFactory as DOMSVGFactory, __webpack_exports__DrawLayer as DrawLayer, __webpack_exports__FeatureTest as FeatureTest, __webpack_exports__GlobalWorkerOptions as GlobalWorkerOptions, __webpack_exports__ImageKind as ImageKind, __webpack_exports__InvalidPDFException as InvalidPDFException, __webpack_exports__MissingPDFException as MissingPDFException, __webpack_exports__OPS as OPS, __webpack_exports__Outliner as Outliner, __webpack_exports__PDFDataRangeTransport as PDFDataRangeTransport, __webpack_exports__PDFDateString as PDFDateString, __webpack_exports__PDFWorker as PDFWorker, __webpack_exports__PasswordResponses as PasswordResponses, __webpack_exports__PermissionFlag as PermissionFlag, __webpack_exports__PixelsPerInch as PixelsPerInch, __webpack_exports__RenderingCancelledException as RenderingCancelledException, __webpack_exports__TextLayer as TextLayer, __webpack_exports__UnexpectedResponseException as UnexpectedResponseException, __webpack_exports__Util as Util, __webpack_exports__VerbosityLevel as VerbosityLevel, __webpack_exports__XfaLayer as XfaLayer, __webpack_exports__build as build, __webpack_exports__createValidAbsoluteUrl as createValidAbsoluteUrl, __webpack_exports__fetchData as fetchData, __webpack_exports__getDocument as getDocument, __webpack_exports__getFilenameFromUrl as getFilenameFromUrl, __webpack_exports__getPdfFilenameFromUrl as getPdfFilenameFromUrl, __webpack_exports__getXfaPageViewport as getXfaPageViewport, __webpack_exports__isDataScheme as isDataScheme, __webpack_exports__isPdfFile as isPdfFile, __webpack_exports__noContextMenu as noContextMenu, __webpack_exports__normalizeUnicode as normalizeUnicode, __webpack_exports__renderTextLayer as renderTextLayer, __webpack_exports__setLayerDimensions as setLayerDimensions, __webpack_exports__shadow as shadow, __webpack_exports__updateTextLayer as updateTextLayer, __webpack_exports__version as version };\n+\n+{\n+  globalThis._pdfjsTestingUtils = {\n+    HighlightOutliner: HighlightOutliner\n+  };\n+}\n+globalThis.pdfjsLib = {\n+  AbortException: AbortException,\n+  AnnotationEditorLayer: AnnotationEditorLayer,\n+  AnnotationEditorParamsType: AnnotationEditorParamsType,\n+  AnnotationEditorType: AnnotationEditorType,\n+  AnnotationEditorUIManager: AnnotationEditorUIManager,\n+  AnnotationLayer: AnnotationLayer,\n+  AnnotationMode: AnnotationMode,\n+  AnnotationType: AnnotationType,\n+  build: build,\n+  ColorPicker: ColorPicker,\n+  createValidAbsoluteUrl: createValidAbsoluteUrl,\n+  DOMSVGFactory: DOMSVGFactory,\n+  DrawLayer: DrawLayer,\n+  FeatureTest: util_FeatureTest,\n+  fetchData: fetchData,\n+  getDocument: getDocument,\n+  getFilenameFromUrl: getFilenameFromUrl,\n+  getPdfFilenameFromUrl: getPdfFilenameFromUrl,\n+  getUuid: getUuid,\n+  getXfaPageViewport: getXfaPageViewport,\n+  GlobalWorkerOptions: GlobalWorkerOptions,\n+  ImageKind: util_ImageKind,\n+  InvalidPDFException: InvalidPDFException,\n+  isDataScheme: isDataScheme,\n+  isPdfFile: isPdfFile,\n+  isValidExplicitDest: isValidExplicitDest,\n+  MathClamp: MathClamp,\n+  noContextMenu: noContextMenu,\n+  normalizeUnicode: normalizeUnicode,\n+  OPS: OPS,\n+  OutputScale: OutputScale,\n+  PasswordResponses: PasswordResponses,\n+  PDFDataRangeTransport: PDFDataRangeTransport,\n+  PDFDateString: PDFDateString,\n+  PDFWorker: PDFWorker,\n+  PermissionFlag: PermissionFlag,\n+  PixelsPerInch: PixelsPerInch,\n+  RenderingCancelledException: RenderingCancelledException,\n+  ResponseException: ResponseException,\n+  setLayerDimensions: setLayerDimensions,\n+  shadow: shadow,\n+  SignatureExtractor: SignatureExtractor,\n+  stopEvent: stopEvent,\n+  SupportedImageMimeTypes: SupportedImageMimeTypes,\n+  TextLayer: TextLayer,\n+  TouchManager: TouchManager,\n+  updateUrlHash: updateUrlHash,\n+  Util: Util,\n+  VerbosityLevel: VerbosityLevel,\n+  version: version,\n+  XfaLayer: XfaLayer\n+};\n+\n+export { AbortException, AnnotationEditorLayer, AnnotationEditorParamsType, AnnotationEditorType, AnnotationEditorUIManager, AnnotationLayer, AnnotationMode, AnnotationType, ColorPicker, DOMSVGFactory, DrawLayer, util_FeatureTest as FeatureTest, GlobalWorkerOptions, util_ImageKind as ImageKind, InvalidPDFException, MathClamp, OPS, OutputScale, PDFDataRangeTransport, PDFDateString, PDFWorker, PasswordResponses, PermissionFlag, PixelsPerInch, RenderingCancelledException, ResponseException, SignatureExtractor, SupportedImageMimeTypes, TextLayer, TouchManager, Util, VerbosityLevel, XfaLayer, build, createValidAbsoluteUrl, fetchData, getDocument, getFilenameFromUrl, getPdfFilenameFromUrl, getUuid, getXfaPageViewport, isDataScheme, isPdfFile, isValidExplicitDest, noContextMenu, normalizeUnicode, setLayerDimensions, shadow, stopEvent, updateUrlHash, version };\n \n \u002F\u002F# sourceMappingURL=pdf.js.map\n\\ No newline at end of file\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fbuild\u002Fpdf.js.map \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fbuild\u002Fpdf.js.map\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fbuild\u002Fpdf.js.map\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fbuild\u002Fpdf.js.map\t2026-02-24 09:27:28.000000000 +0000\n@@ -1 +1 @@\n-{\"version\":3,\"file\":\"pdf.js\",\"mappings\":\"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AE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC7E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAC7E,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,K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\u002FM,WAAW,KAAK8M,qBAAqB,EAAE;MAC9C\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\u002FB+P,GAAG,CAAC\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\u002FB,6BAA6BgC,CAACC,MAAM,EAAE\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\u002FH,GAAG,CAAC;IAC\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\u002FiB,CAAC,EAAEgkB,MAAM;QACT\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\u002FB;EAMAwM,QAAQA,CAAC\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\u002FDmP,MAAM,CAAC\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\u002FC,gBAAgB,CAACsB,gBAAgB,GAC\u002FB0B,UAAU,CAAC\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\u002FG,EAAE,EAAEC,EAAE,CAAC;IAE\u002FC,IAAI,CAACvuB,CAAC,GAAG,CAACA,CAAC,GAAGsuB,EAAE,IAAIxpB,KAAK;IACzB,IAAI,CAAC7E,CAAC,GAAG,CAACA,CAAC,GAAGsuB,EAAE,IAAIxpB,MAAM;IAE1B,IAAI,CAAC8vB,iBAAiB,CAAC,CAAC;EAC1B;EAEA,CAACS,SAASC,CAAC,CAACzwB,KAAK,EAAEC,MAAM,CAAC,EAAE\u002FE,CAAC,EAAEC,CAAC,EAAE;IAChC,CAACD,CAAC,EAAEC,CAAC,CAAC,GAAG,IAAI,CAACo1B,uBAAuB,CAACr1B,CAAC,EAAEC,CAAC,CAAC;IAE3C,IAAI,CAACD,CAAC,IAAIA,CAAC,GAAG8E,KAAK;IACnB,IAAI,CAAC7E,CAAC,IAAIA,CAAC,GAAG8E,MAAM;IAEpB,IAAI,CAAC8vB,iBAAiB,CAAC,CAAC;EAC1B;EAOAS,SAASA,CAACt1B,CAAC,EAAEC,CAAC,EAAE;IAGd,IAAI,CAAC,CAACq1B,SAAS,CAAC,IAAI,CAAC3B,gBAAgB,EAAE3zB,CAAC,EAAEC,CAAC,CAAC;EAC9C;EAQAwtB,eAAeA,CAACztB,CAAC,EAAEC,CAAC,EAAE;IACpB,IAAI,CAAC,CAACiyB,eAAe,KAAK,CAAC,IAAI,CAAClyB,CAAC,EAAE,IAAI,CAACC,CAAC,CAAC;IAC1C,IAAI,CAAC,CAACq1B,SAAS,CAAC,IAAI,CAAC7B,cAAc,EAAEzzB,CAAC,EAAEC,CAAC,CAAC;IAC1C,IAAI,CAACsH,GAAG,CAACiuB,cAAc,CAAC;MAAEC,KAAK,EAAE;IAAU,CAAC,CAAC;EAC\u002FC;EAEAjH,IAAIA,CAACF,EAAE,EAAEC,EAAE,EAAE;IACX,IAAI,CAAC,CAAC2D,eAAe,KAAK,CAAC,IAAI,CAAClyB,CAAC,EAAE,IAAI,CAACC,CAAC,CAAC;IAC1C,MAAM,CAACkvB,WAAW,EAAEC,YAAY,CAAC,GAAG,IAAI,CAACuE,gBAAgB;IACzD,IAAI,CAAC3zB,CAAC,IAAIsuB,EAAE,GAAGa,WAAW;IAC1B,IAAI,CAAClvB,CAAC,IAAIsuB,EAAE,GAAGa,YAAY;IAC3B,IAAI,IAAI,CAAC7X,MAAM,KAAK,IAAI,CAACvX,CAAC,GAAG,CAAC,IAAI,IAAI,CAACA,CAAC,GAAG,CAAC,IAAI,IAAI,CAACC,CAAC,GAAG,CAAC,IAAI,IAAI,CAACA,CAAC,GAAG,CAAC,CAAC,EAAE;MASzE,MAAM;QAAED,CAAC;QAAEC;MAAE,CAAC,GAAG,IAAI,CAACsH,GAAG,CAAC2c,qBAAqB,CAAC,CAAC;MACjD,IAAI,IAAI,CAAC3M,MAAM,CAACme,aAAa,CAAC,IAAI,EAAE11B,CAAC,EAAEC,CAAC,CAAC,EAAE;QACzC,IAAI,CAACD,CAAC,IAAIlG,IAAI,CAACqJ,KAAK,CAAC,IAAI,CAACnD,CAAC,CAAC;QAC5B,IAAI,CAACC,CAAC,IAAInG,IAAI,CAACqJ,KAAK,CAAC,IAAI,CAAClD,CAAC,CAAC;MAC9B;IACF;IAKA,IAAI;MAAED,CAAC;MAAEC;IAAE,CAAC,GAAG,IAAI;IACnB,MAAM,CAAC01B,EAAE,EAAEC,EAAE,CAAC,GAAG,IAAI,CAACC,kBAAkB,CAAC,CAAC;IAC1C71B,CAAC,IAAI21B,EAAE;IACP11B,CAAC,IAAI21B,EAAE;IAEP,IAAI,CAACruB,GAAG,CAACC,KAAK,CAACK,IAAI,GAAI,GAAE,CAAC,GAAG,GAAG7H,CAAC,EAAE81B,OAAO,CAAC,CAAC,CAAE,GAAE;IAChD,IAAI,CAACvuB,GAAG,CAACC,KAAK,CAACI,GAAG,GAAI,GAAE,CAAC,GAAG,GAAG3H,CAAC,EAAE61B,OAAO,CAAC,CAAC,CAAE,GAAE;IAC\u002FC,IAAI,CAACvuB,GAAG,CAACiuB,cAAc,CAAC;MAAEC,KAAK,EAAE;IAAU,CAAC,CAAC;EAC\u002FC;EAEA,IAAIM,aAAaA,CAAA,EAAG;IAClB,OACE,CAAC,CAAC,IAAI,CAAC,CAAC7D,eAAe,KACtB,IAAI,CAAC,CAACA,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,CAAClyB,CAAC,IAClC,IAAI,CAAC,CAACkyB,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,CAACjyB,CAAC,CAAC;EAE1C;EASA41B,kBAAkBA,CAAA,EAAG;IACnB,MAAM,CAAC1G,WAAW,EAAEC,YAAY,CAAC,GAAG,IAAI,CAACuE,gBAAgB;IACzD,MAAM;MAAEd;IAAiB,CAAC,GAAGtB,gBAAgB;IAC7C,MAAMvxB,CAAC,GAAG6yB,gBAAgB,GAAG1D,WAAW;IACxC,MAAMlvB,CAAC,GAAG4yB,gBAAgB,GAAGzD,YAAY;IACzC,QAAQ,IAAI,CAAChhB,QAAQ;MACnB,KAAK,EAAE;QACL,OAAO,CAAC,CAACpO,CAAC,EAAEC,CAAC,CAAC;MAChB,KAAK,GAAG;QACN,OAAO,CAACD,CAAC,EAAEC,CAAC,CAAC;MACf,KAAK,GAAG;QACN,OAAO,CAACD,CAAC,EAAE,CAACC,CAAC,CAAC;MAChB;QACE,OAAO,CAAC,CAACD,CAAC,EAAE,CAACC,CAAC,CAAC;IACnB;EACF;EAMA,IAAI+1B,gBAAgBA,CAAA,EAAG;IACrB,OAAO,IAAI;EACb;EAMAnB,iBAAiBA,CAACzmB,QAAQ,GAAG,IAAI,CAACA,QAAQ,EAAE;IAC1C,MAAM,CAACa,SAAS,EAAEC,UAAU,CAAC,GAAG,IAAI,CAACukB,cAAc;IACnD,IAAI;MAAEzzB,CAAC;MAAEC,CAAC;MAAE6E,KAAK;MAAEC;IAAO,CAAC,GAAG,IAAI;IAClCD,KAAK,IAAImK,SAAS;IAClBlK,MAAM,IAAImK,UAAU;IACpBlP,CAAC,IAAIiP,SAAS;IACdhP,CAAC,IAAIiP,UAAU;IAEf,IAAI,IAAI,CAAC8mB,gBAAgB,EAAE;MACzB,QAAQ5nB,QAAQ;QACd,KAAK,CAAC;UACJpO,CAAC,GAAGlG,IAAI,CAACgE,GAAG,CAAC,CAAC,EAAEhE,IAAI,CAACC,GAAG,CAACkV,SAAS,GAAGnK,KAAK,EAAE9E,CAAC,CAAC,CAAC;UAC\u002FCC,CAAC,GAAGnG,IAAI,CAACgE,GAAG,CAAC,CAAC,EAAEhE,IAAI,CAACC,GAAG,CAACmV,UAAU,GAAGnK,MAAM,EAAE9E,CAAC,CAAC,CAAC;UACjD;QACF,KAAK,EAAE;UACLD,CAAC,GAAGlG,IAAI,CAACgE,GAAG,CAAC,CAAC,EAAEhE,IAAI,CAACC,GAAG,CAACkV,SAAS,GAAGlK,MAAM,EAAE\u002FE,CAAC,CAAC,CAAC;UAChDC,CAAC,GAAGnG,IAAI,CAACC,GAAG,CAACmV,UAAU,EAAEpV,IAAI,CAACgE,GAAG,CAACgH,KAAK,EAAE7E,CAAC,CAAC,CAAC;UAC5C;QACF,KAAK,GAAG;UACND,CAAC,GAAGlG,IAAI,CAACC,GAAG,CAACkV,SAAS,EAAEnV,IAAI,CAACgE,GAAG,CAACgH,KAAK,EAAE9E,CAAC,CAAC,CAAC;UAC3CC,CAAC,GAAGnG,IAAI,CAACC,GAAG,CAACmV,UAAU,EAAEpV,IAAI,CAACgE,GAAG,CAACiH,MAAM,EAAE9E,CAAC,CAAC,CAAC;UAC7C;QACF,KAAK,GAAG;UACND,CAAC,GAAGlG,IAAI,CAACC,GAAG,CAACkV,SAAS,EAAEnV,IAAI,CAACgE,GAAG,CAACiH,MAAM,EAAE\u002FE,CAAC,CAAC,CAAC;UAC5CC,CAAC,GAAGnG,IAAI,CAACgE,GAAG,CAAC,CAAC,EAAEhE,IAAI,CAACC,GAAG,CAACmV,UAAU,GAAGpK,KAAK,EAAE7E,CAAC,CAAC,CAAC;UAChD;MACJ;IACF;IAEA,IAAI,CAACD,CAAC,GAAGA,CAAC,IAAIiP,SAAS;IACvB,IAAI,CAAChP,CAAC,GAAGA,CAAC,IAAIiP,UAAU;IAExB,MAAM,CAACymB,EAAE,EAAEC,EAAE,CAAC,GAAG,IAAI,CAACC,kBAAkB,CAAC,CAAC;IAC1C71B,CAAC,IAAI21B,EAAE;IACP11B,CAAC,IAAI21B,EAAE;IAEP,MAAM;MAAEpuB;IAAM,CAAC,GAAG,IAAI,CAACD,GAAG;IAC1BC,KAAK,CAACK,IAAI,GAAI,GAAE,CAAC,GAAG,GAAG7H,CAAC,EAAE81B,OAAO,CAAC,CAAC,CAAE,GAAE;IACvCtuB,KAAK,CAACI,GAAG,GAAI,GAAE,CAAC,GAAG,GAAG3H,CAAC,EAAE61B,OAAO,CAAC,CAAC,CAAE,GAAE;IAEtC,IAAI,CAACG,SAAS,CAAC,CAAC;EAClB;EAEA,OAAO,CAACC,WAAWC,CAACn2B,CAAC,EAAEC,CAAC,EAAEm2B,KAAK,EAAE;IAC\u002FB,QAAQA,KAAK;MACX,KAAK,EAAE;QACL,OAAO,CAACn2B,CAAC,EAAE,CAACD,CAAC,CAAC;MAChB,KAAK,GAAG;QACN,OAAO,CAAC,CAACA,CAAC,EAAE,CAACC,CAAC,CAAC;MACjB,KAAK,GAAG;QACN,OAAO,CAAC,CAACA,CAAC,EAAED,CAAC,CAAC;MAChB;QACE,OAAO,CAACA,CAAC,EAAEC,CAAC,CAAC;IACjB;EACF;EAOAo1B,uBAAuBA,CAACr1B,CAAC,EAAEC,CAAC,EAAE;IAC5B,OAAOsxB,gBAAgB,CAAC,CAAC2E,WAAW,CAACl2B,CAAC,EAAEC,CAAC,EAAE,IAAI,CAAC20B,cAAc,CAAC;EACjE;EAOAyB,uBAAuBA,CAACr2B,CAAC,EAAEC,CAAC,EAAE;IAC5B,OAAOsxB,gBAAgB,CAAC,CAAC2E,WAAW,CAACl2B,CAAC,EAAEC,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC20B,cAAc,CAAC;EACvE;EAEA,CAAC0B,iBAAiBC,CAACnoB,QAAQ,EAAE;IAC3B,QAAQA,QAAQ;MACd,KAAK,EAAE;QAAE;UACP,MAAM,CAACa,SAAS,EAAEC,UAAU,CAAC,GAAG,IAAI,CAACukB,cAAc;UACnD,OAAO,CAAC,CAAC,EAAE,CAACxkB,SAAS,GAAGC,UAAU,EAAEA,UAAU,GAAGD,SAAS,EAAE,CAAC,CAAC;QAChE;MACA,KAAK,GAAG;QACN,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MACvB,KAAK,GAAG;QAAE;UACR,MAAM,CAACA,SAAS,EAAEC,UAAU,CAAC,GAAG,IAAI,CAACukB,cAAc;UACnD,OAAO,CAAC,CAAC,EAAExkB,SAAS,GAAGC,UAAU,EAAE,CAACA,UAAU,GAAGD,SAAS,EAAE,CAAC,CAAC;QAChE;MACA;QACE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACvB;EACF;EAEA,IAAIunB,WAAWA,CAAA,EAAG;IAChB,OAAO,IAAI,CAAC3hB,UAAU,CAAC2N,cAAc,CAACC,SAAS;EACjD;EAEA,IAAImS,cAAcA,CAAA,EAAG;IACnB,OAAO,CAAC,IAAI,CAAC\u002Ff,UAAU,CAAC2N,cAAc,CAACpU,QAAQ,GAAG,IAAI,CAAColB,YAAY,IAAI,GAAG;EAC5E;EAEA,IAAIG,gBAAgBA,CAAA,EAAG;IACrB,MAAM;MACJ6C,WAAW;MACX\u002FC,cAAc,EAAE,CAACxkB,SAAS,EAAEC,UAAU;IACxC,CAAC,GAAG,IAAI;IACR,MAAMunB,WAAW,GAAGxnB,SAAS,GAAGunB,WAAW;IAC3C,MAAME,YAAY,GAAGxnB,UAAU,GAAGsnB,WAAW;IAC7C,OAAOl7B,gBAAW,CAACO,mBAAmB,GAClC,CAAC\u002FB,IAAI,CAACmQ,KAAK,CAACwsB,WAAW,CAAC,EAAE38B,IAAI,CAACmQ,KAAK,CAACysB,YAAY,CAAC,CAAC,GACnD,CAACD,WAAW,EAAEC,YAAY,CAAC;EACjC;EAOAC,OAAOA,CAAC7xB,KAAK,EAAEC,MAAM,EAAE;IACrB,MAAM,CAACoqB,WAAW,EAAEC,YAAY,CAAC,GAAG,IAAI,CAACuE,gBAAgB;IACzD,IAAI,CAACpsB,GAAG,CAACC,KAAK,CAAC1C,KAAK,GAAI,GAAE,CAAE,GAAG,GAAGA,KAAK,GAAIqqB,WAAW,EAAE2G,OAAO,CAAC,CAAC,CAAE,GAAE;IACrE,IAAI,CAAC,IAAI,CAAC,CAACrE,eAAe,EAAE;MAC1B,IAAI,CAAClqB,GAAG,CAACC,KAAK,CAACzC,MAAM,GAAI,GAAE,CAAE,GAAG,GAAGA,MAAM,GAAIqqB,YAAY,EAAE0G,OAAO,CAAC,CAAC,CAAE,GAAE;IAC1E;EACF;EAEAc,OAAOA,CAAA,EAAG;IACR,MAAM;MAAEpvB;IAAM,CAAC,GAAG,IAAI,CAACD,GAAG;IAC1B,MAAM;MAAExC,MAAM;MAAED;IAAM,CAAC,GAAG0C,KAAK;IAC\u002FB,MAAMqvB,YAAY,GAAG\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\u002F\u002FB,IAAI,EAAEmjB,KAAK,EAAE;IAC\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\u002F\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\u002Fe,KAAK,EAAE;IAC3B,MAAM;MAAE\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\u002FN,uBAAuBA,CAAA,EAAG;IAC\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\u002FH,GAAG,CAAC;EAC\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\u002FF,aAAa,CAAC,KAAK,CAAC;IAC\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\u002F\u002FB,CAAC;MAC3BsgC,GAAG,GAAGT,GAAG,GAAG,CAACA,GAAG,GAAGG,GAAG,IAAIhgC,CAAC;IAC7B;IAEA,IAAIA,CAAC;IACL,IAAI1K,CAAC,GAAGR,EAAE,EAAE;MACVkL,CAAC,GAAG,CAAC;IACP,CAAC,MAAM,IAAI1K,CAAC,GAAGN,EAAE,EAAE;MACjBgL,CAAC,GAAG,CAAC;IACP,CAAC,MAAM;MACLA,CAAC,GAAG,CAAClL,EAAE,GAAGQ,CAAC,KAAKR,EAAE,GAAGE,EAAE,CAAC;IAC1B;IACAurC,EAAE,GAAG7rC,EAAE,GAAG,CAACA,EAAE,GAAGE,EAAE,IAAIoL,CAAC;IACvBwgC,GAAG,GAAGhB,GAAG,GAAG,CAACA,GAAG,GAAGM,GAAG,IAAI9\u002FB,CAAC;IAC3BygC,GAAG,GAAGhB,GAAG,GAAG,CAACA,GAAG,GAAGM,GAAG,IAAI\u002F\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\u002FxC,CAAC,CAAC,EACL+xC,EAAE,CAAC\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\u002F+B,GAAG,CAACwyB,aAAa;EAC\u002FCxyB,GAAG,CAACg\u002FB,cAAc,GAAGh\u002FB,GAAG,CAAC1U,IAAI;EAC7B0U,GAAG,CAACi\u002FB,mBAAmB,GAAGj\u002FB,GAAG,CAACliB,SAAS;EACvCkiB,GAAG,CAACk\u002FB,mBAAmB,GAAGl\u002FB,GAAG,CAAC+1B,SAAS;EAEvC\u002F1B,GAAG,CAACk+B,gBAAgB,GAAG,MAAM;IAC3Bl+B,GAAG,CAAC1iB,IAAI,GAAG0iB,GAAG,CAACm+B,cAAc;IAC7Bn+B,GAAG,CAACziB,OAAO,GAAGyiB,GAAG,CAACo+B,iBAAiB;IACnCp+B,GAAG,CAACmoB,MAAM,GAAGnoB,GAAG,CAACq+B,gBAAgB;IACjCr+B,GAAG,CAACjF,KAAK,GAAGiF,GAAG,CAACs+B,eAAe;IAC\u002FBt+B,GAAG,CAACkiB,SAAS,GAAGliB,GAAG,CAACu+B,mBAAmB;IACvCv+B,GAAG,CAACxiB,SAAS,GAAGwiB,GAAG,CAACw+B,mBAAmB;IACvCx+B,GAAG,CAACq2B,YAAY,GAAGr2B,GAAG,CAACy+B,sBAAsB;IAC7Cz+B,GAAG,CAAC2+B,cAAc,GAAG3+B,GAAG,CAAC0+B,wBAAwB;IAEjD1+B,GAAG,CAACvhB,IAAI,GAAGuhB,GAAG,CAAC4+B,cAAc;IAC7B5+B,GAAG,CAACviB,MAAM,GAAGuiB,GAAG,CAAC6+B,gBAAgB;IACjC7+B,GAAG,CAACtiB,MAAM,GAAGsiB,GAAG,CAAC8+B,gBAAgB;IACjC9+B,GAAG,CAACwyB,aAAa,GAAGxyB,GAAG,CAAC++B,uBAAuB;IAC\u002FC\u002F+B,GAAG,CAAC1U,IAAI,GAAG0U,GAAG,CAACg\u002FB,cAAc;IAC7Bh\u002FB,GAAG,CAACliB,SAAS,GAAGkiB,GAAG,CAACi\u002FB,mBAAmB;IACvCj\u002FB,GAAG,CAAC+1B,SAAS,GAAG\u002F1B,GAAG,CAACk\u002FB,mBAAmB;IACvC,OAAOl\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\u002FB;EAEAb,sBAAsBA,CAACz\u002FB,GAAG,EAAE;IAC1B,IAAI,CAAC0\u002FB,OAAO,GAAG1\u002FB,GAAG;IAClB,IAAI,CAAC6\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\u002FB,UAAU,EAAE;MACnB,MAAMi\u002FB,WAAW,GAAG,IAAI,CAAC\u002F\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\u002FC,MAAM0H,WAAW,GAAG\u002FkD,IAAI,CAACmQ,KAAK,CAAC4gC,IAAI,GAAGD,IAAI,CAAC,IAAI,CAAC;IAChD,MAAMkU,UAAU,GAAG,IAAI,CAAC\u002FV,cAAc,CAACC,SAAS,CAC9C,YAAY,EACZ4V,UAAU,EACVC,WACF,CAAC;IACD,MAAME,OAAO,GAAGD,UAAU,CAAC55C,OAAO;IAMlC,MAAMmJ,OAAO,GAAG8oC,IAAI;IACpB,MAAM7oC,OAAO,GAAGs8B,IAAI;IACpBmU,OAAO,CAACzpB,SAAS,CAAC,CAACjnB,OAAO,EAAE,CAACC,OAAO,CAAC;IACrCywC,OAAO,CAACnuD,SAAS,CAAC,GAAG+tD,YAAY,CAAC;IAElC,IAAI,CAACJ,MAAM,EAAE;MAEXA,MAAM,GAAG,IAAI,CAACX,WAAW,CACvBY,UAAU,CAACx5C,MAAM,EACjBuO,0BAA0B,CAACwrC,OAAO,CACpC,CAAC;MACDR,MAAM,GAAGA,MAAM,CAACV,GAAG;MACnB,IAAI52C,KAAK,IAAIm3C,aAAa,EAAE;QAC1Bn3C,KAAK,CAAC6B,GAAG,CAACw1C,QAAQ,EAAEC,MAAM,CAAC;MAC7B;IACF;IAEAQ,OAAO,CAACC,qBAAqB,GAAGpF,wBAAwB,CACtDzmC,mBAAmB,CAAC4rC,OAAO,CAAC,EAC5BlB,GAAG,CAAChE,WACN,CAAC;IAEDvG,wBAAwB,CACtByL,OAAO,EACPR,MAAM,EACN,CAAC,EACD,CAAC,EACDA,MAAM,CAACz5C,KAAK,EACZy5C,MAAM,CAACx5C,MAAM,EACb,CAAC,EACD,CAAC,EACDD,KAAK,EACLC,MACF,CAAC;IACDg6C,OAAO,CAACpF,wBAAwB,GAAG,WAAW;IAE9C,MAAMpR,OAAO,GAAGhsC,IAAI,CAAC3L,SAAS,CAAC2iB,0BAA0B,CAACwrC,OAAO,CAAC,EAAE,CAClE,CAAC,EACD,CAAC,EACD,CAAC,EACD,CAAC,EACD,CAAC1wC,OAAO,EACR,CAACC,OAAO,CACT,CAAC;IACFywC,OAAO,CAAC1V,SAAS,GAAG+U,aAAa,GAC7BhP,SAAS,CAAC9H,UAAU,CAACl0B,GAAG,EAAE,IAAI,EAAEm1B,OAAO,EAAExB,QAAQ,CAACr9C,IAAI,CAAC,GACvD0lD,SAAS;IAEb2P,OAAO,CAAC3C,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAEt3C,KAAK,EAAEC,MAAM,CAAC;IAErC,IAAIkC,KAAK,IAAI,CAACm3C,aAAa,EAAE;MAG3B,IAAI,CAACrV,cAAc,CAAC1yB,MAAM,CAAC,YAAY,CAAC;MACxCpP,KAAK,CAAC6B,GAAG,CAACw1C,QAAQ,EAAEQ,UAAU,CAAC95C,MAAM,CAAC;IACxC;IAGA,OAAO;MACLA,MAAM,EAAE85C,UAAU,CAAC95C,MAAM;MACzBqJ,OAAO,EAAEvU,IAAI,CAACmQ,KAAK,CAACoE,OAAO,CAAC;MAC5BC,OAAO,EAAExU,IAAI,CAACmQ,KAAK,CAACqE,OAAO;IAC7B,CAAC;EACH;EAGApe,YAAYA,CAAC4U,KAAK,EAAE;IAClB,IAAIA,KAAK,KAAK,IAAI,CAAC6jC,OAAO,CAACiO,SAAS,EAAE;MACpC,IAAI,CAACgF,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtC;IACA,IAAI,CAACjT,OAAO,CAACiO,SAAS,GAAG9xC,KAAK;IAC9B,IAAI,CAACsO,GAAG,CAACwjC,SAAS,GAAG9xC,KAAK;EAC5B;EAEA3U,UAAUA,CAACqX,KAAK,EAAE;IAChB,IAAI,CAAC4L,GAAG,CAAComC,OAAO,GAAGS,eAAe,CAACzyC,KAAK,CAAC;EAC3C;EAEApX,WAAWA,CAACoX,KAAK,EAAE;IACjB,IAAI,CAAC4L,GAAG,CAACqmC,QAAQ,GAAGS,gBAAgB,CAAC1yC,KAAK,CAAC;EAC7C;EAEAnX,aAAaA,CAAC4uD,KAAK,EAAE;IACnB,IAAI,CAAC7rC,GAAG,CAACsmC,UAAU,GAAGuF,KAAK;EAC7B;EAEA3uD,OAAOA,CAAC4uD,SAAS,EAAEC,SAAS,EAAE;IAC5B,MAAM\u002FrC,GAAG,GAAG,IAAI,CAACA,GAAG;IACpB,IAAIA,GAAG,CAAC8lC,WAAW,KAAK5\u002FC,SAAS,EAAE;MACjC8Z,GAAG,CAAC8lC,WAAW,CAACgG,SAAS,CAAC;MAC1B9rC,GAAG,CAACgmC,cAAc,GAAG+F,SAAS;IAChC;EACF;EAEA5uD,kBAAkBA,CAAC6uD,MAAM,EAAE,CAE3B;EAEA5uD,WAAWA,CAAC6uD,QAAQ,EAAE,CAEtB;EAEA5uD,SAASA,CAAC6uD,MAAM,EAAE;IAChB,KAAK,MAAM,CAACxkD,GAAG,EAAEjD,KAAK,CAAC,IAAIynD,MAAM,EAAE;MACjC,QAAQxkD,GAAG;QACT,KAAK,IAAI;UACP,IAAI,CAAC5K,YAAY,CAAC2H,KAAK,CAAC;UACxB;QACF,KAAK,IAAI;UACP,IAAI,CAAC1H,UAAU,CAAC0H,KAAK,CAAC;UACtB;QACF,KAAK,IAAI;UACP,IAAI,CAACzH,WAAW,CAACyH,KAAK,CAAC;UACvB;QACF,KAAK,IAAI;UACP,IAAI,CAACxH,aAAa,CAACwH,KAAK,CAAC;UACzB;QACF,KAAK,GAAG;UACN,IAAI,CAACvH,OAAO,CAACuH,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,CAAC;UAChC;QACF,KAAK,IAAI;UACP,IAAI,CAACtH,kBAAkB,CAACsH,KAAK,CAAC;UAC9B;QACF,KAAK,IAAI;UACP,IAAI,CAACrH,WAAW,CAACqH,KAAK,CAAC;UACvB;QACF,KAAK,MAAM;UACT,IAAI,CAACxF,OAAO,CAACwF,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,CAAC;UAChC;QACF,KAAK,IAAI;UACP,IAAI,CAAC8wC,OAAO,CAACgO,WAAW,GAAG9+C,KAAK;UAChC;QACF,KAAK,IAAI;UACP,IAAI,CAAC8wC,OAAO,CAAC+N,SAAS,GAAG7+C,KAAK;UAC9B,IAAI,CAACub,GAAG,CAACmmC,WAAW,GAAG1hD,KAAK;UAC5B;QACF,KAAK,IAAI;UACP,IAAI,CAACub,GAAG,CAACumC,wBAAwB,GAAG9hD,KAAK;UACzC;QACF,KAAK,OAAO;UACV,IAAI,CAAC8wC,OAAO,CAACkO,WAAW,GAAGh\u002FC,KAAK,GAAG,IAAI,CAACwjD,SAAS,GAAG,IAAI;UACxD,IAAI,CAACA,SAAS,GAAG,IAAI;UACrB,IAAI,CAACkE,eAAe,CAAC,CAAC;UACtB;QACF,KAAK,IAAI;UACP,IAAI,CAACnsC,GAAG,CAACrK,MAAM,GAAG,IAAI,CAAC4\u002FB,OAAO,CAACmO,YAAY,GACzC,IAAI,CAACn5B,aAAa,CAAC3Z,SAAS,CAACnM,KAAK,CAAC;UACrC;MACJ;IACF;EACF;EAEA,IAAIylD,WAAWA,CAAA,EAAG;IAChB,OAAO,CAAC,CAAC,IAAI,CAAChC,YAAY;EAC5B;EAEAiE,eAAeA,CAAA,EAAG;IAChB,MAAMjC,WAAW,GAAG,IAAI,CAACA,WAAW;IACpC,IAAI,IAAI,CAAC3U,OAAO,CAACkO,WAAW,IAAI,CAACyG,WAAW,EAAE;MAC5C,IAAI,CAACkC,cAAc,CAAC,CAAC;IACvB,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC7W,OAAO,CAACkO,WAAW,IAAIyG,WAAW,EAAE;MACnD,IAAI,CAACmC,YAAY,CAAC,CAAC;IACrB;EAEF;EAWAD,cAAcA,CAAA,EAAG;IACf,IAAI,IAAI,CAAClC,WAAW,EAAE;MACpB,MAAM,IAAI9mD,KAAK,CAAC,mDAAmD,CAAC;IACtE;IACA,MAAMooD,UAAU,GAAG,IAAI,CAACxrC,GAAG,CAACpO,MAAM,CAACF,KAAK;IACxC,MAAM+5C,WAAW,GAAG,IAAI,CAACzrC,GAAG,CAACpO,MAAM,CAACD,MAAM;IAC1C,MAAM26C,OAAO,GAAG,cAAc,GAAG,IAAI,CAACpR,UAAU;IAChD,MAAMqR,aAAa,GAAG,IAAI,CAAC5W,cAAc,CAACC,SAAS,CACjD0W,OAAO,EACPd,UAAU,EACVC,WACF,CAAC;IACD,IAAI,CAACvD,YAAY,GAAG,IAAI,CAACloC,GAAG;IAC5B,IAAI,CAACA,GAAG,GAAGusC,aAAa,CAACz6C,OAAO;IAChC,MAAMkO,GAAG,GAAG,IAAI,CAACA,GAAG;IACpBA,GAAG,CAACq2B,YAAY,CAAC,GAAGt2B,mBAAmB,CAAC,IAAI,CAACmoC,YAAY,CAAC,CAAC;IAC3DxC,YAAY,CAAC,IAAI,CAACwC,YAAY,EAAEloC,GAAG,CAAC;IACpCg+B,uBAAuB,CAACh+B,GAAG,EAAE,IAAI,CAACkoC,YAAY,CAAC;IAE\u002FC,IAAI,CAAC7qD,SAAS,CAAC,CACb,CAAC,IAAI,EAAE,aAAa,CAAC,EACrB,CAAC,IAAI,EAAE,CAAC,CAAC,EACT,CAAC,IAAI,EAAE,CAAC,CAAC,CACV,CAAC;EACJ;EAEAgvD,YAAYA,CAAA,EAAG;IACb,IAAI,CAAC,IAAI,CAACnC,WAAW,EAAE;MACrB,MAAM,IAAI9mD,KAAK,CAAC,6CAA6C,CAAC;IAChE;IAGA,IAAI,CAAC4c,GAAG,CAACk+B,gBAAgB,CAAC,CAAC;IAC3BwH,YAAY,CAAC,IAAI,CAAC1lC,GAAG,EAAE,IAAI,CAACkoC,YAAY,CAAC;IACzC,IAAI,CAACloC,GAAG,GAAG,IAAI,CAACkoC,YAAY;IAE5B,IAAI,CAACA,YAAY,GAAG,IAAI;EAC1B;EAEAsE,OAAOA,CAACC,QAAQ,EAAE;IAChB,IAAI,CAAC,IAAI,CAAClX,OAAO,CAACkO,WAAW,EAAE;MAC7B;IACF;IAEA,IAAI,CAACgJ,QAAQ,EAAE;MACbA,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAACzsC,GAAG,CAACpO,MAAM,CAACF,KAAK,EAAE,IAAI,CAACsO,GAAG,CAACpO,MAAM,CAACD,MAAM,CAAC;IAClE,CAAC,MAAM;MACL86C,QAAQ,CAAC,CAAC,CAAC,GAAG\u002FlD,IAAI,CAACqJ,KAAK,CAAC08C,QAAQ,CAAC,CAAC,CAAC,CAAC;MACrCA,QAAQ,CAAC,CAAC,CAAC,GAAG\u002FlD,IAAI,CAACqJ,KAAK,CAAC08C,QAAQ,CAAC,CAAC,CAAC,CAAC;MACrCA,QAAQ,CAAC,CAAC,CAAC,GAAG\u002FlD,IAAI,CAAC+uC,IAAI,CAACgX,QAAQ,CAAC,CAAC,CAAC,CAAC;MACpCA,QAAQ,CAAC,CAAC,CAAC,GAAG\u002FlD,IAAI,CAAC+uC,IAAI,CAACgX,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtC;IACA,MAAMC,KAAK,GAAG,IAAI,CAACnX,OAAO,CAACkO,WAAW;IACtC,MAAMyE,YAAY,GAAG,IAAI,CAACA,YAAY;IAEtC,IAAI,CAACyE,YAAY,CAACzE,YAAY,EAAEwE,KAAK,EAAE,IAAI,CAAC1sC,GAAG,EAAEysC,QAAQ,CAAC;IAG1D,IAAI,CAACzsC,GAAG,CAAC1iB,IAAI,CAAC,CAAC;IACf,IAAI,CAAC0iB,GAAG,CAACq2B,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACvC,IAAI,CAACr2B,GAAG,CAAC81B,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC91B,GAAG,CAACpO,MAAM,CAACF,KAAK,EAAE,IAAI,CAACsO,GAAG,CAACpO,MAAM,CAACD,MAAM,CAAC;IACvE,IAAI,CAACqO,GAAG,CAACziB,OAAO,CAAC,CAAC;EACpB;EAEAovD,YAAYA,CAAC3sC,GAAG,EAAE0sC,KAAK,EAAEE,QAAQ,EAAEC,QAAQ,EAAE;IAC3C,MAAMC,YAAY,GAAGD,QAAQ,CAAC,CAAC,CAAC;IAChC,MAAME,YAAY,GAAGF,QAAQ,CAAC,CAAC,CAAC;IAChC,MAAMG,UAAU,GAAGH,QAAQ,CAAC,CAAC,CAAC,GAAGC,YAAY;IAC7C,MAAMG,WAAW,GAAGJ,QAAQ,CAAC,CAAC,CAAC,GAAGE,YAAY;IAC9C,IAAIC,UAAU,KAAK,CAAC,IAAIC,WAAW,KAAK,CAAC,EAAE;MACzC;IACF;IACA,IAAI,CAACC,mBAAmB,CACtBR,KAAK,CAAC56C,OAAO,EACb86C,QAAQ,EACRI,UAAU,EACVC,WAAW,EACXP,KAAK,CAACS,OAAO,EACbT,KAAK,CAACU,QAAQ,EACdV,KAAK,CAACW,WAAW,EACjBP,YAAY,EACZC,YAAY,EACZL,KAAK,CAACzxC,OAAO,EACbyxC,KAAK,CAACxxC,OACR,CAAC;IACD8E,GAAG,CAAC1iB,IAAI,CAAC,CAAC;IACV0iB,GAAG,CAACmmC,WAAW,GAAG,CAAC;IACnBnmC,GAAG,CAACumC,wBAAwB,GAAG,aAAa;IAC5CvmC,GAAG,CAACq2B,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAClCr2B,GAAG,CAACkF,SAAS,CAAC0nC,QAAQ,CAACh7C,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IACpCoO,GAAG,CAACziB,OAAO,CAAC,CAAC;EACf;EAEA2vD,mBAAmBA,CACjBI,OAAO,EACPV,QAAQ,EACRl7C,KAAK,EACLC,MAAM,EACNw7C,OAAO,EACPC,QAAQ,EACRC,WAAW,EACXP,YAAY,EACZC,YAAY,EACZQ,WAAW,EACXC,WAAW,EACX;IACA,IAAIpC,UAAU,GAAGkC,OAAO,CAAC17C,MAAM;IAC\u002FB,IAAI67C,KAAK,GAAGX,YAAY,GAAGS,WAAW;IACtC,IAAIG,KAAK,GAAGX,YAAY,GAAGS,WAAW;IAEtC,IAAIJ,QAAQ,EAAE;MACZ,IACEK,KAAK,GAAG,CAAC,IACTC,KAAK,GAAG,CAAC,IACTD,KAAK,GAAG\u002F7C,KAAK,GAAG05C,UAAU,CAAC15C,KAAK,IAChCg8C,KAAK,GAAG\u002F7C,MAAM,GAAGy5C,UAAU,CAACz5C,MAAM,EAClC;QACA,MAAMC,MAAM,GAAG,IAAI,CAAC+jC,cAAc,CAACC,SAAS,CAC1C,eAAe,EACflkC,KAAK,EACLC,MACF,CAAC;QACD,MAAMqO,GAAG,GAAGpO,MAAM,CAACE,OAAO;QAC1BkO,GAAG,CAACkF,SAAS,CAACkmC,UAAU,EAAE,CAACqC,KAAK,EAAE,CAACC,KAAK,CAAC;QACzC,IAAIN,QAAQ,CAACt3B,IAAI,CAAC\u002FqB,CAAC,IAAIA,CAAC,KAAK,CAAC,CAAC,EAAE;UAC\u002FBiV,GAAG,CAACumC,wBAAwB,GAAG,kBAAkB;UACjDvmC,GAAG,CAACi2B,SAAS,GAAG9sC,IAAI,CAACC,YAAY,CAAC,GAAGgkD,QAAQ,CAAC;UAC9CptC,GAAG,CAACgpC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAEt3C,KAAK,EAAEC,MAAM,CAAC;UACjCqO,GAAG,CAACumC,wBAAwB,GAAG,aAAa;QAC9C;QAEA6E,UAAU,GAAGx5C,MAAM,CAACA,MAAM;QAC1B67C,KAAK,GAAGC,KAAK,GAAG,CAAC;MACnB,CAAC,MAAM,IAAIN,QAAQ,CAACt3B,IAAI,CAAC\u002FqB,CAAC,IAAIA,CAAC,KAAK,CAAC,CAAC,EAAE;QACtCuiD,OAAO,CAAChwD,IAAI,CAAC,CAAC;QACdgwD,OAAO,CAACnH,WAAW,GAAG,CAAC;QACvBmH,OAAO,CAACjX,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM53C,IAAI,GAAG,IAAIu1C,MAAM,CAAC,CAAC;QACzBv1C,IAAI,CAAC6M,IAAI,CAACmiD,KAAK,EAAEC,KAAK,EAAEh8C,KAAK,EAAEC,MAAM,CAAC;QACtC27C,OAAO,CAAC7uD,IAAI,CAACA,IAAI,CAAC;QAClB6uD,OAAO,CAAC\u002FG,wBAAwB,GAAG,kBAAkB;QACrD+G,OAAO,CAACrX,SAAS,GAAG9sC,IAAI,CAACC,YAAY,CAAC,GAAGgkD,QAAQ,CAAC;QAClDE,OAAO,CAACtE,QAAQ,CAACyE,KAAK,EAAEC,KAAK,EAAEh8C,KAAK,EAAEC,MAAM,CAAC;QAC7C27C,OAAO,CAAC\u002FvD,OAAO,CAAC,CAAC;MACnB;IACF;IAEAqvD,QAAQ,CAACtvD,IAAI,CAAC,CAAC;IACfsvD,QAAQ,CAACzG,WAAW,GAAG,CAAC;IACxByG,QAAQ,CAACvW,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAEvC,IAAI8W,OAAO,KAAK,OAAO,IAAIE,WAAW,EAAE;MACtCT,QAAQ,CAACj3C,MAAM,GAAG,IAAI,CAAC4U,aAAa,CAACtZ,cAAc,CAACo8C,WAAW,CAAC;IAClE,CAAC,MAAM,IAAIF,OAAO,KAAK,YAAY,EAAE;MACnCP,QAAQ,CAACj3C,MAAM,GAAG,IAAI,CAAC4U,aAAa,CAACrZ,mBAAmB,CAACm8C,WAAW,CAAC;IACvE;IAEA,MAAM5uD,IAAI,GAAG,IAAIu1C,MAAM,CAAC,CAAC;IACzBv1C,IAAI,CAAC6M,IAAI,CAACwhD,YAAY,EAAEC,YAAY,EAAEr7C,KAAK,EAAEC,MAAM,CAAC;IACpDi7C,QAAQ,CAACnuD,IAAI,CAACA,IAAI,CAAC;IACnBmuD,QAAQ,CAACrG,wBAAwB,GAAG,gBAAgB;IACpDqG,QAAQ,CAAC1nC,SAAS,CAChBkmC,UAAU,EACVqC,KAAK,EACLC,KAAK,EACLh8C,KAAK,EACLC,MAAM,EACNm7C,YAAY,EACZC,YAAY,EACZr7C,KAAK,EACLC,MACF,CAAC;IACDi7C,QAAQ,CAACrvD,OAAO,CAAC,CAAC;EACpB;EAEAD,IAAIA,CAAA,EAAG;IACL,IAAI,IAAI,CAAC4sD,WAAW,EAAE;MAIpBxE,YAAY,CAAC,IAAI,CAAC1lC,GAAG,EAAE,IAAI,CAACkoC,YAAY,CAAC;MAGzC,IAAI,CAACA,YAAY,CAAC5qD,IAAI,CAAC,CAAC;IAC1B,CAAC,MAAM;MACL,IAAI,CAAC0iB,GAAG,CAAC1iB,IAAI,CAAC,CAAC;IACjB;IACA,MAAMqwD,GAAG,GAAG,IAAI,CAACpY,OAAO;IACxB,IAAI,CAACgS,UAAU,CAACzgD,IAAI,CAAC6mD,GAAG,CAAC;IACzB,IAAI,CAACpY,OAAO,GAAGoY,GAAG,CAAC1xC,KAAK,CAAC,CAAC;EAC5B;EAEA1e,OAAOA,CAAA,EAAG;IACR,IAAI,IAAI,CAACgqD,UAAU,CAACtjD,MAAM,KAAK,CAAC,IAAI,IAAI,CAACimD,WAAW,EAAE;MACpD,IAAI,CAACmC,YAAY,CAAC,CAAC;IACrB;IACA,IAAI,IAAI,CAAC9E,UAAU,CAACtjD,MAAM,KAAK,CAAC,EAAE;MAChC,IAAI,CAACsxC,OAAO,GAAG,IAAI,CAACgS,UAAU,CAACqG,GAAG,CAAC,CAAC;MACpC,IAAI,IAAI,CAAC1D,WAAW,EAAE;QAGpB,IAAI,CAAChC,YAAY,CAAC3qD,OAAO,CAAC,CAAC;QAC3BmoD,YAAY,CAAC,IAAI,CAACwC,YAAY,EAAE,IAAI,CAACloC,GAAG,CAAC;MAC3C,CAAC,MAAM;QACL,IAAI,CAACA,GAAG,CAACziB,OAAO,CAAC,CAAC;MACpB;MACA,IAAI,CAAC4uD,eAAe,CAAC,CAAC;MAGtB,IAAI,CAAC3E,WAAW,GAAG,IAAI;MAEvB,IAAI,CAACgB,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;MACpC,IAAI,CAACC,0BAA0B,GAAG,IAAI;IACxC;EACF;EAEAjrD,SAASA,CAACsN,CAAC,EAAEvB,CAAC,EAAEwB,CAAC,EAAEZ,CAAC,EAAEgU,CAAC,EAAE8B,CAAC,EAAE;IAC1B,IAAI,CAACD,GAAG,CAACxiB,SAAS,CAACsN,CAAC,EAAEvB,CAAC,EAAEwB,CAAC,EAAEZ,CAAC,EAAEgU,CAAC,EAAE8B,CAAC,CAAC;IAEpC,IAAI,CAACuoC,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,CAACC,0BAA0B,GAAG,IAAI;EACxC;EAGArmD,aAAaA,CAACyrD,GAAG,EAAE\u002FkC,IAAI,EAAErf,MAAM,EAAE;IAC\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\u002FB;EAEA\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\u002Ff,UAAU,IAAI,YAAY;IAC\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\u002FC,KAAK;QACrCk\u002FC,OAAO,GAAGG,EAAE,GAAGtO,aAAa;QAC5BoO,OAAO,GAAG,CAACjkD,CAAC,GAAGokD,EAAE,IAAIvO,aAAa;MACpC,CAAC,MAAM;QACLmO,OAAO,GAAGhkD,CAAC,GAAG61C,aAAa;QAC3BoO,OAAO,GAAG,CAAC;MACb;MAEA,IAAIzhB,IAAI,CAAC6hB,SAAS,IAAIv\u002FC,KAAK,GAAG,CAAC,EAAE;QAI\u002FB,MAAMw\u002FC,aAAa,GACflxC,GAAG,CAACmxC,WAAW,CAAC7e,SAAS,CAAC,CAAC5gC,KAAK,GAAG,IAAI,GAAI8wC,QAAQ,GACrDC,aAAa;QACf,IAAI\u002FwC,KAAK,GAAGw\u002FC,aAAa,IAAI,IAAI,CAACxB,uBAAuB,EAAE;UACzD,MAAM0B,eAAe,GAAG1\u002FC,KAAK,GAAGw\u002FC,aAAa;UAC7CV,aAAa,GAAG,IAAI;UACpBxwC,GAAG,CAAC1iB,IAAI,CAAC,CAAC;UACV0iB,GAAG,CAACjF,KAAK,CAACq2C,eAAe,EAAE,CAAC,CAAC;UAC7BR,OAAO,IAAIQ,eAAe;QAC5B,CAAC,MAAM,IAAI1\u002FC,KAAK,KAAKw\u002FC,aAAa,EAAE;UAClCN,OAAO,IACH,CAACl\u002FC,KAAK,GAAGw\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\u002FB,OAAO,CAAC0G,WAAW,GAAG\u002FlC,KAAK;EAClC;EAEA3V,eAAeA,CAAC8I,CAAC,EAAEC,CAAC,EAAEC,CAAC,EAAE;IACvB,MAAM2M,KAAK,GAAG\u002FM,IAAI,CAACC,YAAY,CAACC,CAAC,EAAEC,CAAC,EAAEC,CAAC,CAAC;IACxC,IAAI,CAACyW,GAAG,CAACi2B,SAAS,GAAG\u002F\u002FB,KAAK;IAC1B,IAAI,CAACq\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\u002FL,mBAAmB,CAAC5xC,GAAG,CAAC\u002FB,EAAE,EAAE\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\u002FC,OAAO,CAAC;EACvC;EAEAr\u002FC,uBAAuBA,CAACswD,KAAK,EAAE1b,MAAM,EAAEC,MAAM,EAAE4c,SAAS,EAAE;IACxD,IAAI,CAAC,IAAI,CAACvL,cAAc,EAAE;MACxB;IACF;IACA,MAAM7G,OAAO,GAAG,IAAI,CAACqH,SAAS,CAAC4J,KAAK,CAAC;IACrC,IAAI,CAACjR,OAAO,EAAE;MACZp+C,IAAI,CAAC,iCAAiC,CAAC;MACvC;IACF;IAEA,MAAMwO,KAAK,GAAG4vC,OAAO,CAAC5vC,KAAK;IAC3B,MAAMC,MAAM,GAAG2vC,OAAO,CAAC3vC,MAAM;IAC7B,MAAMnK,GAAG,GAAG,EAAE;IACd,KAAK,IAAIhB,CAAC,GAAG,CAAC,EAAEuH,EAAE,GAAG2lD,SAAS,CAACzvD,MAAM,EAAEuC,CAAC,GAAGuH,EAAE,EAAEvH,CAAC,IAAI,CAAC,EAAE;MACrDgB,GAAG,CAACV,IAAI,CAAC;QACPtJ,SAAS,EAAE,CAACq5C,MAAM,EAAE,CAAC,EAAE,CAAC,EAAEC,MAAM,EAAE4c,SAAS,CAACltD,CAAC,CAAC,EAAEktD,SAAS,CAACltD,CAAC,GAAG,CAAC,CAAC,CAAC;QACjEoG,CAAC,EAAE,CAAC;QACJC,CAAC,EAAE,CAAC;QACJ6T,CAAC,EAAEhP,KAAK;QACRiP,CAAC,EAAEhP;MACL,CAAC,CAAC;IACJ;IACA,IAAI,CAAC3P,4BAA4B,CAACs\u002FC,OAAO,EAAE95C,GAAG,CAAC;EACjD;EAEAqsD,yBAAyBA,CAAC7zC,GAAG,EAAE;IAC7B,IAAI,IAAI,CAACu1B,OAAO,CAACmO,YAAY,KAAK,MAAM,EAAE;MACxC1jC,GAAG,CAACrK,MAAM,GAAG,IAAI,CAAC4\u002FB,OAAO,CAACmO,YAAY;MACtC1jC,GAAG,CAACkF,SAAS,CAAClF,GAAG,CAACpO,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;MAC\u002FBoO,GAAG,CAACrK,MAAM,GAAG,MAAM;IACrB;IACA,OAAOqK,GAAG,CAACpO,MAAM;EACnB;EAEAkiD,yBAAyBA,CAACxS,OAAO,EAAE;IACjC,IAAI,IAAI,CAAC\u002FL,OAAO,CAACmO,YAAY,KAAK,MAAM,EAAE;MACxC,OAAOpC,OAAO,CAACh8B,MAAM;IACvB;IACA,MAAM;MAAEA,MAAM;MAAE5T,KAAK;MAAEC;IAAO,CAAC,GAAG2vC,OAAO;IACzC,MAAM5L,SAAS,GAAG,IAAI,CAACC,cAAc,CAACC,SAAS,CAC7C,aAAa,EACblkC,KAAK,EACLC,MACF,CAAC;IACD,MAAMkkC,MAAM,GAAGH,SAAS,CAAC5jC,OAAO;IAChC+jC,MAAM,CAAClgC,MAAM,GAAG,IAAI,CAAC4\u002FB,OAAO,CAACmO,YAAY;IACzC7N,MAAM,CAAC3wB,SAAS,CAACI,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9BuwB,MAAM,CAAClgC,MAAM,GAAG,MAAM;IAEtB,OAAO+\u002FB,SAAS,CAAC9jC,MAAM;EACzB;EAEA7P,uBAAuBA,CAACu\u002FC,OAAO,EAAE;IAC\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\u002FB,CAAC,EACP6\u002FB,KAAK,CAAC5\u002FB,CAAC,EACP4\u002FB,KAAK,CAAC\u002FrB,CAAC,EACP+rB,KAAK,CAAC9rB,CAAC,EACP,CAAC,EACD,CAAC,CAAC,EACF,CAAC,EACD,CACF,CAAC;MACDX,GAAG,CAACziB,OAAO,CAAC,CAAC;IACf;IACA,IAAI,CAACivD,OAAO,CAAC,CAAC;EAChB;EAEArqD,wBAAwBA,CAAA,EAAG;IACzB,IAAI,CAAC,IAAI,CAACgmD,cAAc,EAAE;MACxB;IACF;IACA,IAAI,CAACnoC,GAAG,CAACgpC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7B,IAAI,CAACwD,OAAO,CAAC,CAAC;EAChB;EAIAzrD,SAASA,CAACkzD,GAAG,EAAE,CAEf;EAEAjzD,cAAcA,CAACizD,GAAG,EAAErO,UAAU,EAAE,CAEhC;EAEA3kD,kBAAkBA,CAACgzD,GAAG,EAAE;IACtB,IAAI,CAAC5M,kBAAkB,CAACvgD,IAAI,CAAC;MAC3B8wB,OAAO,EAAE;IACX,CAAC,CAAC;EACJ;EAEA12B,uBAAuBA,CAAC+yD,GAAG,EAAErO,UAAU,EAAE;IACvC,IAAIqO,GAAG,KAAK,IAAI,EAAE;MAChB,IAAI,CAAC5M,kBAAkB,CAACvgD,IAAI,CAAC;QAC3B8wB,OAAO,EAAE,IAAI,CAACwvB,qBAAqB,CAAC8M,SAAS,CAACtO,UAAU;MAC1D,CAAC,CAAC;IACJ,CAAC,MAAM;MACL,IAAI,CAACyB,kBAAkB,CAACvgD,IAAI,CAAC;QAC3B8wB,OAAO,EAAE;MACX,CAAC,CAAC;IACJ;IACA,IAAI,CAACuwB,cAAc,GAAG,IAAI,CAACgM,gBAAgB,CAAC,CAAC;EAC\u002FC;EAEAhzD,gBAAgBA,CAAA,EAAG;IACjB,IAAI,CAACkmD,kBAAkB,CAACuG,GAAG,CAAC,CAAC;IAC7B,IAAI,CAACzF,cAAc,GAAG,IAAI,CAACgM,gBAAgB,CAAC,CAAC;EAC\u002FC;EAIA\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\u002FC,IAAI,CAACivD,aAAa,GAAG\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\u002FC,IAAI;EACnB;EAEA\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\u002FD,IAAI,KAAK,MAAM,EAAE;MAEhC,IAAIs\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\u002FR2C;AACI;AAG\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\u002FD,SAAS,CAACt\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\u002FB\u002FX;MACF,CAAC,CAAC;IACJ,CAAC,MAAM,IAAIA,KAAK,EAAE;MAChBq9D,cAAc,CAACO,MAAM,CAAC;QACpBxH,KAAK,EAAE,CAAC;QACRp2D;MACF,CAAC,CAAC;IACJ,CAAC,MAAM;MACLq9D,cAAc,CAACG,OAAO,GAAGX,GAAG,CAAC59D,MAAM,CAAC;IACtC;EACF;EAEA++D,aAAaA,CAACZ,KAAK,EAAE;IACnB,OAAO,IAAI,CAACJ,eAAe,CAACI,KAAK,CAAC,CAACP,GAAG;EACxC;EAEAoB,gBAAgBA,CAACb,KAAK,EAAE;IACtB,OAAOA,KAAK,IAAI,IAAI,CAACJ,eAAe;EACtC;EAEAkB,YAAYA,CAACd,KAAK,EAAE;IAClB,MAAMP,GAAG,GAAG,IAAI,CAACG,eAAe,CAACI,KAAK,CAAC,CAACP,GAAG;IAC3C,OAAO,IAAI,CAACG,eAAe,CAACI,KAAK,CAAC;IAClCP,GAAG,CAAC9E,KAAK,CAAC,CAAC;EACb;AACF;AAGA,MAAMoG,gBAAgB,CAAC;EACrB3\u002FD,WAAWA,CAACqtB,MAAM,EAAE;IAClB,IAAI,CAACuyC,OAAO,GAAGvyC,MAAM;IACrB,IAAI,CAACwyC,QAAQ,GAAG,IAAIvB,cAAc,CAACjxC,MAAM,CAACjvB,GAAG,EAAE;MAC7C8+D,WAAW,EAAE7vC,MAAM,CAAC6vC,WAAW;MAC\u002FBP,eAAe,EAAEtvC,MAAM,CAACsvC;IAC1B,CAAC,CAAC;IACF,IAAI,CAACkB,eAAe,GAAGxwC,MAAM,CAAC4uC,cAAc;IAC5C,IAAI,CAACxE,kBAAkB,GAAG,IAAI;IAC9B,IAAI,CAAC6F,oBAAoB,GAAG,EAAE;EAChC;EAEAwC,2BAA2BA,CAAChH,MAAM,EAAE;IAClC,MAAM13D,CAAC,GAAG,IAAI,CAACk8D,oBAAoB,CAACvE,OAAO,CAACD,MAAM,CAAC;IACnD,IAAI13D,CAAC,IAAI,CAAC,EAAE;MACV,IAAI,CAACk8D,oBAAoB,CAACj7C,MAAM,CAACjhB,CAAC,EAAE,CAAC,CAAC;IACxC;EACF;EAEA43D,aAAaA,CAAA,EAAG;IACd\u002F6D,MAAM,CACJ,CAAC,IAAI,CAACw5D,kBAAkB,EACxB,yDACF,CAAC;IACD,IAAI,CAACA,kBAAkB,GAAG,IAAIsI,iCAAiC,CAC7D,IAAI,CAACF,QAAQ,EACb,IAAI,CAACD,OACP,CAAC;IACD,OAAO,IAAI,CAACnI,kBAAkB;EAChC;EAEA0B,cAAcA,CAACvB,KAAK,EAAE1mD,GAAG,EAAE;IACzB,MAAM4nD,MAAM,GAAG,IAAIkH,kCAAkC,CACnD,IAAI,CAACH,QAAQ,EACbjI,KAAK,EACL1mD,GACF,CAAC;IACD4nD,MAAM,CAACmH,QAAQ,GAAG,IAAI,CAACH,2BAA2B,CAACvuD,IAAI,CAAC,IAAI,CAAC;IAC7D,IAAI,CAAC+rD,oBAAoB,CAAC57D,IAAI,CAACo3D,MAAM,CAAC;IACtC,OAAOA,MAAM;EACf;EAEAQ,iBAAiBA,CAAClsD,MAAM,EAAE;IACxB,IAAI,CAACqqD,kBAAkB,EAAExE,MAAM,CAAC7lD,MAAM,CAAC;IAEvC,KAAK,MAAM0rD,MAAM,IAAI,IAAI,CAACwE,oBAAoB,CAACn4D,KAAK,CAAC,CAAC,CAAC,EAAE;MACvD2zD,MAAM,CAAC7F,MAAM,CAAC7lD,MAAM,CAAC;IACvB;EACF;AACF;AAGA,MAAM2yD,iCAAiC,CAAC;EACtC\u002F\u002FD,WAAWA,CAACkgE,OAAO,EAAE7yC,MAAM,EAAE;IAC3B,IAAI,CAACwyC,QAAQ,GAAGK,OAAO;IAEvB,MAAMx8C,IAAI,GAAG;MACXy7C,iBAAiB,EAAE,IAAI,CAACgB,kBAAkB,CAAC5uD,IAAI,CAAC,IAAI,CAAC;MACrD6tD,MAAM,EAAE,IAAI,CAACgB,OAAO,CAAC7uD,IAAI,CAAC,IAAI,CAAC;MAC\u002FBytD,OAAO,EAAE,IAAI,CAACqB,QAAQ,CAAC9uD,IAAI,CAAC,IAAI,CAAC;MACjCqnD,UAAU,EAAE,IAAI,CAACZ,WAAW,CAACzmD,IAAI,CAAC,IAAI;IACxC,CAAC;IACD,IAAI,CAAC+uD,IAAI,GAAGjzC,MAAM,CAACjvB,GAAG;IACtB,IAAI,CAACmiE,cAAc,GAAGL,OAAO,CAACvB,WAAW,CAACj7C,IAAI,CAAC;IAC\u002FC,IAAI,CAAC88C,0BAA0B,GAAGlsD,OAAO,CAACk5B,aAAa,CAAC,CAAC;IACzD,IAAI,CAACowB,aAAa,GAAGvwC,MAAM,CAACwpC,YAAY,IAAI,KAAK;IACjD,IAAI,CAACW,cAAc,GAAGnqC,MAAM,CAACxuB,MAAM;IACnC,IAAI,CAACg\u002FD,eAAe,GAAGxwC,MAAM,CAAC4uC,cAAc;IAC5C,IAAI,CAAC,IAAI,CAAC4B,eAAe,IAAI,CAAC,IAAI,CAACD,aAAa,EAAE;MAChD,IAAI,CAACA,aAAa,GAAG,IAAI;IAC3B;IAEA,IAAI,CAACtG,qBAAqB,GAAG,KAAK;IAClC,IAAI,CAACC,iBAAiB,GAAG,KAAK;IAE9B,IAAI,CAACkJ,aAAa,GAAG,EAAE;IACvB,IAAI,CAAC9G,SAAS,GAAG,EAAE;IACnB,IAAI,CAACF,KAAK,GAAG,KAAK;IAClB,IAAI,CAACiH,YAAY,GAAG5\u002FD,SAAS;IAC7B,IAAI,CAAC44D,SAAS,GAAG,IAAI;IAErB,IAAI,CAACd,UAAU,GAAG,IAAI;EACxB;EAEAuH,kBAAkBA,CAAA,EAAG;IACnB,MAAMQ,gBAAgB,GAAG,IAAI,CAACJ,cAAc;IAC5C,MAAMK,cAAc,GAAG,IAAI,CAACf,QAAQ,CAACL,aAAa,CAACmB,gBAAgB,CAAC;IAEpE,MAAM5E,iBAAiB,GAAGh8D,IAAI,IAAI6gE,cAAc,CAAC7E,iBAAiB,CAACh8D,IAAI,CAAC;IAExE,MAAM;MAAEo8D,kBAAkB;MAAEC;IAAgB,CAAC,GAC3CN,gCAAgC,CAAC;MAC\u002FBC,iBAAiB;MACjBC,MAAM,EAAE,IAAI,CAAC6D,QAAQ,CAAC7D,MAAM;MAC5BC,cAAc,EAAE,IAAI,CAAC4B,eAAe;MACpChH,YAAY,EAAE,IAAI,CAAC+G;IACrB,CAAC,CAAC;IAEJ,IAAIzB,kBAAkB,EAAE;MACtB,IAAI,CAAC5E,iBAAiB,GAAG,IAAI;IAC\u002FB;IAEA,IAAI,CAACC,cAAc,GAAG4E,eAAe,IAAI,IAAI,CAAC5E,cAAc;IAE5D,IAAI,CAACkC,SAAS,GAAG4C,yBAAyB,CAACP,iBAAiB,CAAC;IAE7D,IAAI,IAAI,CAACxE,iBAAiB,EAAE;MAK1B,IAAI,CAACsI,QAAQ,CAACH,YAAY,CAACiB,gBAAgB,CAAC;IAC9C;IAEA,IAAI,CAACH,0BAA0B,CAACjsD,OAAO,CAAC,CAAC;EAC3C;EAEA6rD,OAAOA,CAAChrD,IAAI,EAAE;IACZ,IAAIA,IAAI,EAAE;MACR,IAAI,IAAI,CAACukD,SAAS,CAAC96D,MAAM,GAAG,CAAC,EAAE;QAC7B,MAAMg7D,iBAAiB,GAAG,IAAI,CAACF,SAAS,CAAC3uB,KAAK,CAAC,CAAC;QAChD6uB,iBAAiB,CAACtlD,OAAO,CAAC;UAAElV,KAAK,EAAE+V,IAAI,CAAC5T,KAAK;UAAEspC,IAAI,EAAE;QAAM,CAAC,CAAC;MAC\u002FD,CAAC,MAAM;QACL,IAAI,CAAC21B,aAAa,CAAC\u002F+D,IAAI,CAAC0T,IAAI,CAAC5T,KAAK,CAAC;MACrC;IACF;IACA,IAAI,CAACi4D,KAAK,GAAG,IAAI;IACjB,IAAI,IAAI,CAACgH,aAAa,CAAC5hE,MAAM,GAAG,CAAC,EAAE;MACjC;IACF;IACA,KAAK,MAAMg7D,iBAAiB,IAAI,IAAI,CAACF,SAAS,EAAE;MAC9CE,iBAAiB,CAACtlD,OAAO,CAAC;QAAElV,KAAK,EAAEyB,SAAS;QAAEgqC,IAAI,EAAE;MAAK,CAAC,CAAC;IAC7D;IACA,IAAI,CAAC6uB,SAAS,CAAC96D,MAAM,GAAG,CAAC;EAC3B;EAEAwhE,QAAQA,CAAC5\u002FD,MAAM,EAAE;IACf,IAAI,CAACigE,YAAY,GAAGnE,yBAAyB,CAAC97D,MAAM,EAAE,IAAI,CAAC6\u002FD,IAAI,CAAC;IAChE,IAAI,CAACE,0BAA0B,CAAChsD,MAAM,CAAC,IAAI,CAACksD,YAAY,CAAC;IACzD,KAAK,MAAM7G,iBAAiB,IAAI,IAAI,CAACF,SAAS,EAAE;MAC9CE,iBAAiB,CAACrlD,MAAM,CAAC,IAAI,CAACksD,YAAY,CAAC;IAC7C;IACA,IAAI,CAAC\u002FG,SAAS,CAAC96D,MAAM,GAAG,CAAC;IACzB,IAAI,CAAC4hE,aAAa,CAAC5hE,MAAM,GAAG,CAAC;EAC\u002FB;EAEAm5D,WAAWA,CAACW,GAAG,EAAE;IACf,IAAI,CAACC,UAAU,GAAG;MAChBxuB,MAAM,EAAEuuB,GAAG,CAACvuB,MAAM;MAClB2tB,KAAK,EAAEY,GAAG,CAACkI,gBAAgB,GAAGlI,GAAG,CAACZ,KAAK,GAAG,IAAI,CAACP;IACjD,CAAC,CAAC;EACJ;EAEA,IAAIlqD,QAAQA,CAAA,EAAG;IACb,OAAO,IAAI,CAACosD,SAAS;EACvB;EAEA,IAAIK,gBAAgBA,CAAA,EAAG;IACrB,OAAO,IAAI,CAACxC,iBAAiB;EAC\u002FB;EAEA,IAAIyC,oBAAoBA,CAAA,EAAG;IACzB,OAAO,IAAI,CAAC1C,qBAAqB;EACnC;EAEA,IAAI2C,aAAaA,CAAA,EAAG;IAClB,OAAO,IAAI,CAACzC,cAAc;EAC5B;EAEA,IAAIsC,YAAYA,CAAA,EAAG;IACjB,OAAO,IAAI,CAAC0G,0BAA0B,CAAC3gD,OAAO;EAChD;EAEA,MAAMq6C,IAAIA,CAAA,EAAG;IACX,IAAI,IAAI,CAACwG,YAAY,EAAE;MACrB,MAAM,IAAI,CAACA,YAAY;IACzB;IACA,IAAI,IAAI,CAACD,aAAa,CAAC5hE,MAAM,GAAG,CAAC,EAAE;MACjC,MAAM2C,KAAK,GAAG,IAAI,CAACi\u002FD,aAAa,CAACz1B,KAAK,CAAC,CAAC;MACxC,OAAO;QAAE3rC,KAAK,EAAEmC,KAAK;QAAEspC,IAAI,EAAE;MAAM,CAAC;IACtC;IACA,IAAI,IAAI,CAAC2uB,KAAK,EAAE;MACd,OAAO;QAAEp6D,KAAK,EAAEyB,SAAS;QAAEgqC,IAAI,EAAE;MAAK,CAAC;IACzC;IACA,MAAM+uB,iBAAiB,GAAGvlD,OAAO,CAACk5B,aAAa,CAAC,CAAC;IACjD,IAAI,CAACmsB,SAAS,CAACj4D,IAAI,CAACm4D,iBAAiB,CAAC;IACtC,OAAOA,iBAAiB,CAACh6C,OAAO;EAClC;EAEAozC,MAAMA,CAAC7lD,MAAM,EAAE;IACb,IAAI,CAACqsD,KAAK,GAAG,IAAI;IACjB,IAAI,CAAC+G,0BAA0B,CAAChsD,MAAM,CAACpH,MAAM,CAAC;IAC9C,KAAK,MAAMysD,iBAAiB,IAAI,IAAI,CAACF,SAAS,EAAE;MAC9CE,iBAAiB,CAACtlD,OAAO,CAAC;QAAElV,KAAK,EAAEyB,SAAS;QAAEgqC,IAAI,EAAE;MAAK,CAAC,CAAC;IAC7D;IACA,IAAI,CAAC6uB,SAAS,CAAC96D,MAAM,GAAG,CAAC;IACzB,IAAI,IAAI,CAACghE,QAAQ,CAACJ,gBAAgB,CAAC,IAAI,CAACc,cAAc,CAAC,EAAE;MACvD,IAAI,CAACV,QAAQ,CAACH,YAAY,CAAC,IAAI,CAACa,cAAc,CAAC;IACjD;IACA,IAAI,CAAC9I,kBAAkB,GAAG,IAAI;EAChC;AACF;AAGA,MAAMuI,kCAAkC,CAAC;EACvChgE,WAAWA,CAACkgE,OAAO,EAAEtI,KAAK,EAAE1mD,GAAG,EAAE;IAC\u002FB,IAAI,CAAC2uD,QAAQ,GAAGK,OAAO;IAEvB,MAAMx8C,IAAI,GAAG;MACX07C,MAAM,EAAE,IAAI,CAACgB,OAAO,CAAC7uD,IAAI,CAAC,IAAI,CAAC;MAC\u002FBytD,OAAO,EAAE,IAAI,CAACqB,QAAQ,CAAC9uD,IAAI,CAAC,IAAI,CAAC;MACjCqnD,UAAU,EAAE,IAAI,CAACZ,WAAW,CAACzmD,IAAI,CAAC,IAAI;IACxC,CAAC;IACD,IAAI,CAAC+uD,IAAI,GAAGJ,OAAO,CAAC9hE,GAAG;IACvB,IAAI,CAAC0iE,UAAU,GAAGZ,OAAO,CAACzB,YAAY,CAAC7G,KAAK,EAAE1mD,GAAG,EAAEwS,IAAI,CAAC;IACxD,IAAI,CAACi2C,SAAS,GAAG,EAAE;IACnB,IAAI,CAACS,YAAY,GAAG,IAAI;IACxB,IAAI,CAACX,KAAK,GAAG,KAAK;IAClB,IAAI,CAACiH,YAAY,GAAG5\u002FD,SAAS;IAE7B,IAAI,CAAC83D,UAAU,GAAG,IAAI;IACtB,IAAI,CAACqH,QAAQ,GAAG,IAAI;EACtB;EAEAc,MAAMA,CAAA,EAAG;IACP,IAAI,CAACd,QAAQ,GAAG,IAAI,CAAC;EACvB;EAEAG,OAAOA,CAAChrD,IAAI,EAAE;IACZ,MAAM5T,KAAK,GAAG4T,IAAI,CAAC5T,KAAK;IACxB,IAAI,IAAI,CAACm4D,SAAS,CAAC96D,MAAM,GAAG,CAAC,EAAE;MAC7B,MAAMg7D,iBAAiB,GAAG,IAAI,CAACF,SAAS,CAAC3uB,KAAK,CAAC,CAAC;MAChD6uB,iBAAiB,CAACtlD,OAAO,CAAC;QAAElV,KAAK,EAAEmC,KAAK;QAAEspC,IAAI,EAAE;MAAM,CAAC,CAAC;IAC1D,CAAC,MAAM;MACL,IAAI,CAACsvB,YAAY,GAAG54D,KAAK;IAC3B;IACA,IAAI,CAACi4D,KAAK,GAAG,IAAI;IACjB,KAAK,MAAMI,iBAAiB,IAAI,IAAI,CAACF,SAAS,EAAE;MAC9CE,iBAAiB,CAACtlD,OAAO,CAAC;QAAElV,KAAK,EAAEyB,SAAS;QAAEgqC,IAAI,EAAE;MAAK,CAAC,CAAC;IAC7D;IACA,IAAI,CAAC6uB,SAAS,CAAC96D,MAAM,GAAG,CAAC;IACzB,IAAI,CAACkiE,MAAM,CAAC,CAAC;EACf;EAEAV,QAAQA,CAAC5\u002FD,MAAM,EAAE;IACf,IAAI,CAACigE,YAAY,GAAGnE,yBAAyB,CAAC97D,MAAM,EAAE,IAAI,CAAC6\u002FD,IAAI,CAAC;IAChE,KAAK,MAAMzG,iBAAiB,IAAI,IAAI,CAACF,SAAS,EAAE;MAC9CE,iBAAiB,CAACrlD,MAAM,CAAC,IAAI,CAACksD,YAAY,CAAC;IAC7C;IACA,IAAI,CAAC\u002FG,SAAS,CAAC96D,MAAM,GAAG,CAAC;IACzB,IAAI,CAACu7D,YAAY,GAAG,IAAI;EAC1B;EAEApC,WAAWA,CAACW,GAAG,EAAE;IACf,IAAI,CAAC,IAAI,CAACqB,oBAAoB,EAAE;MAC9B,IAAI,CAACpB,UAAU,GAAG;QAAExuB,MAAM,EAAEuuB,GAAG,CAACvuB;MAAO,CAAC,CAAC;IAC3C;EACF;EAEA,IAAI4vB,oBAAoBA,CAAA,EAAG;IACzB,OAAO,KAAK;EACd;EAEA,MAAME,IAAIA,CAAA,EAAG;IACX,IAAI,IAAI,CAACwG,YAAY,EAAE;MACrB,MAAM,IAAI,CAACA,YAAY;IACzB;IACA,IAAI,IAAI,CAACtG,YAAY,KAAK,IAAI,EAAE;MAC9B,MAAM54D,KAAK,GAAG,IAAI,CAAC44D,YAAY;MAC\u002FB,IAAI,CAACA,YAAY,GAAG,IAAI;MACxB,OAAO;QAAE\u002F6D,KAAK,EAAEmC,KAAK;QAAEspC,IAAI,EAAE;MAAM,CAAC;IACtC;IACA,IAAI,IAAI,CAAC2uB,KAAK,EAAE;MACd,OAAO;QAAEp6D,KAAK,EAAEyB,SAAS;QAAEgqC,IAAI,EAAE;MAAK,CAAC;IACzC;IACA,MAAM+uB,iBAAiB,GAAGvlD,OAAO,CAACk5B,aAAa,CAAC,CAAC;IACjD,IAAI,CAACmsB,SAAS,CAACj4D,IAAI,CAACm4D,iBAAiB,CAAC;IACtC,OAAOA,iBAAiB,CAACh6C,OAAO;EAClC;EAEAozC,MAAMA,CAAC7lD,MAAM,EAAE;IACb,IAAI,CAACqsD,KAAK,GAAG,IAAI;IACjB,KAAK,MAAMI,iBAAiB,IAAI,IAAI,CAACF,SAAS,EAAE;MAC9CE,iBAAiB,CAACtlD,OAAO,CAAC;QAAElV,KAAK,EAAEyB,SAAS;QAAEgqC,IAAI,EAAE;MAAK,CAAC,CAAC;IAC7D;IACA,IAAI,CAAC6uB,SAAS,CAAC96D,MAAM,GAAG,CAAC;IACzB,IAAI,IAAI,CAACghE,QAAQ,CAACJ,gBAAgB,CAAC,IAAI,CAACqB,UAAU,CAAC,EAAE;MACnD,IAAI,CAACjB,QAAQ,CAACH,YAAY,CAAC,IAAI,CAACoB,UAAU,CAAC;IAC7C;IACA,IAAI,CAACC,MAAM,CAAC,CAAC;EACf;AACF;;;ACrdgF;AAIpD;AACmB;AAQ\u002FC,MAAMC,YAAY,GAAG,yBAAyB;AAE9C,SAASC,QAAQA,CAACC,SAAS,EAAE;EAC3B,MAAM9iE,GAAG,GAAG2vC,YAAY,CAAC1jC,GAAG,CAAC,KAAK,CAAC;EACnC,MAAM82D,SAAS,GAAG\u002FiE,GAAG,CAAC0xB,KAAK,CAACoxC,SAAS,CAAC;EACtC,IAAIC,SAAS,CAAC9iE,QAAQ,KAAK,OAAO,IAAI8iE,SAAS,CAACC,IAAI,EAAE;IACpD,OAAOD,SAAS;EAClB;EAEA,IAAI,eAAe,CAACzpD,IAAI,CAACwpD,SAAS,CAAC,EAAE;IACnC,OAAO9iE,GAAG,CAAC0xB,KAAK,CAAE,WAAUoxC,SAAU,EAAC,CAAC;EAC1C;EAEA,IAAI,CAACC,SAAS,CAACC,IAAI,EAAE;IACnBD,SAAS,CAAC9iE,QAAQ,GAAG,OAAO;EAC9B;EACA,OAAO8iE,SAAS;AAClB;AAEA,MAAME,aAAa,CAAC;EAClBrhE,WAAWA,CAACqtB,MAAM,EAAE;IAClB,IAAI,CAACA,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACjvB,GAAG,GAAG6iE,QAAQ,CAAC5zC,MAAM,CAACjvB,GAAG,CAAC;IAC\u002FB,IAAI,CAAC49D,MAAM,GACT,IAAI,CAAC59D,GAAG,CAACC,QAAQ,KAAK,OAAO,IAAI,IAAI,CAACD,GAAG,CAACC,QAAQ,KAAK,QAAQ;IAEjE,IAAI,CAACijE,OAAO,GAAG,IAAI,CAACljE,GAAG,CAACC,QAAQ,KAAK,OAAO;IAC5C,IAAI,CAAC6+D,WAAW,GAAI,IAAI,CAAClB,MAAM,IAAI3uC,MAAM,CAAC6vC,WAAW,IAAK,CAAC,CAAC;IAE5D,IAAI,CAACzF,kBAAkB,GAAG,IAAI;IAC9B,IAAI,CAAC6F,oBAAoB,GAAG,EAAE;EAChC;EAEA,IAAI7E,sBAAsBA,CAAA,EAAG;IAC3B,OAAO,IAAI,CAAChB,kBAAkB,EAAEiB,OAAO,IAAI,CAAC;EAC9C;EAEAM,aAAaA,CAAA,EAAG;IACd\u002F6D,MAAM,CACJ,CAAC,IAAI,CAACw5D,kBAAkB,EACxB,sDACF,CAAC;IACD,IAAI,CAACA,kBAAkB,GAAG,IAAI,CAAC6J,OAAO,GAClC,IAAIC,yBAAyB,CAAC,IAAI,CAAC,GACnC,IAAIC,uBAAuB,CAAC,IAAI,CAAC;IACrC,OAAO,IAAI,CAAC\u002FJ,kBAAkB;EAChC;EAEA0B,cAAcA,CAACloD,KAAK,EAAEC,GAAG,EAAE;IACzB,IAAIA,GAAG,IAAI,IAAI,CAACunD,sBAAsB,EAAE;MACtC,OAAO,IAAI;IACb;IACA,MAAMF,WAAW,GAAG,IAAI,CAAC+I,OAAO,GAC5B,IAAIG,0BAA0B,CAAC,IAAI,EAAExwD,KAAK,EAAEC,GAAG,CAAC,GAChD,IAAIwwD,wBAAwB,CAAC,IAAI,EAAEzwD,KAAK,EAAEC,GAAG,CAAC;IAClD,IAAI,CAACosD,oBAAoB,CAAC57D,IAAI,CAAC62D,WAAW,CAAC;IAC3C,OAAOA,WAAW;EACpB;EAEAe,iBAAiBA,CAAClsD,MAAM,EAAE;IACxB,IAAI,CAACqqD,kBAAkB,EAAExE,MAAM,CAAC7lD,MAAM,CAAC;IAEvC,KAAK,MAAM0rD,MAAM,IAAI,IAAI,CAACwE,oBAAoB,CAACn4D,KAAK,CAAC,CAAC,CAAC,EAAE;MACvD2zD,MAAM,CAAC7F,MAAM,CAAC7lD,MAAM,CAAC;IACvB;EACF;AACF;AAEA,MAAMu0D,cAAc,CAAC;EACnB3hE,WAAWA,CAACwxD,MAAM,EAAE;IAClB,IAAI,CAAC8O,IAAI,GAAG9O,MAAM,CAACpzD,GAAG;IACtB,IAAI,CAACq7D,KAAK,GAAG,KAAK;IAClB,IAAI,CAACiH,YAAY,GAAG,IAAI;IACxB,IAAI,CAAC9H,UAAU,GAAG,IAAI;IACtB,MAAMvrC,MAAM,GAAGmkC,MAAM,CAACnkC,MAAM;IAC5B,IAAI,CAACmqC,cAAc,GAAGnqC,MAAM,CAACxuB,MAAM;IACnC,IAAI,CAAC65D,OAAO,GAAG,CAAC;IAChB,IAAI,CAACgB,SAAS,GAAG,IAAI;IAErB,IAAI,CAACkE,aAAa,GAAGvwC,MAAM,CAACwpC,YAAY,IAAI,KAAK;IACjD,IAAI,CAACgH,eAAe,GAAGxwC,MAAM,CAAC4uC,cAAc;IAC5C,IAAI,CAAC,IAAI,CAAC4B,eAAe,IAAI,CAAC,IAAI,CAACD,aAAa,EAAE;MAChD,IAAI,CAACA,aAAa,GAAG,IAAI;IAC3B;IAEA,IAAI,CAACtG,qBAAqB,GAAG,CAACjqC,MAAM,CAACypC,aAAa;IAClD,IAAI,CAACS,iBAAiB,GAAG,CAAClqC,MAAM,CAACwpC,YAAY;IAE7C,IAAI,CAAC+K,eAAe,GAAG,IAAI;IAC3B,IAAI,CAAC1D,eAAe,GAAG5pD,OAAO,CAACk5B,aAAa,CAAC,CAAC;IAC9C,IAAI,CAACmwB,kBAAkB,GAAGrpD,OAAO,CAACk5B,aAAa,CAAC,CAAC;EACnD;EAEA,IAAIssB,YAAYA,CAAA,EAAG;IACjB,OAAO,IAAI,CAAC6D,kBAAkB,CAAC99C,OAAO;EACxC;EAEA,IAAIvS,QAAQA,CAAA,EAAG;IACb,OAAO,IAAI,CAACosD,SAAS;EACvB;EAEA,IAAIO,aAAaA,CAAA,EAAG;IAClB,OAAO,IAAI,CAACzC,cAAc;EAC5B;EAEA,IAAIuC,gBAAgBA,CAAA,EAAG;IACrB,OAAO,IAAI,CAACxC,iBAAiB;EAC\u002FB;EAEA,IAAIyC,oBAAoBA,CAAA,EAAG;IACzB,OAAO,IAAI,CAAC1C,qBAAqB;EACnC;EAEA,MAAM4C,IAAIA,CAAA,EAAG;IACX,MAAM,IAAI,CAACgE,eAAe,CAACr+C,OAAO;IAClC,IAAI,IAAI,CAAC45C,KAAK,EAAE;MACd,OAAO;QAAEp6D,KAAK,EAAEyB,SAAS;QAAEgqC,IAAI,EAAE;MAAK,CAAC;IACzC;IACA,IAAI,IAAI,CAAC41B,YAAY,EAAE;MACrB,MAAM,IAAI,CAACA,YAAY;IACzB;IAEA,MAAMl\u002FD,KAAK,GAAG,IAAI,CAACogE,eAAe,CAAC1H,IAAI,CAAC,CAAC;IACzC,IAAI14D,KAAK,KAAK,IAAI,EAAE;MAClB,IAAI,CAAC08D,eAAe,GAAG5pD,OAAO,CAACk5B,aAAa,CAAC,CAAC;MAC9C,OAAO,IAAI,CAAC0sB,IAAI,CAAC,CAAC;IACpB;IACA,IAAI,CAACxB,OAAO,IAAIl3D,KAAK,CAAC3C,MAAM;IAC5B,IAAI,CAAC+5D,UAAU,GAAG;MAChBxuB,MAAM,EAAE,IAAI,CAACsuB,OAAO;MACpBX,KAAK,EAAE,IAAI,CAACP;IACd,CAAC,CAAC;IAGF,MAAM70D,MAAM,GAAG,IAAIb,UAAU,CAACN,KAAK,CAAC,CAACmB,MAAM;IAC3C,OAAO;MAAEtD,KAAK,EAAEsD,MAAM;MAAEmoC,IAAI,EAAE;IAAM,CAAC;EACvC;EAEAmoB,MAAMA,CAAC7lD,MAAM,EAAE;IAGb,IAAI,CAAC,IAAI,CAACw0D,eAAe,EAAE;MACzB,IAAI,CAACC,MAAM,CAACz0D,MAAM,CAAC;MACnB;IACF;IACA,IAAI,CAACw0D,eAAe,CAACz1D,OAAO,CAACiB,MAAM,CAAC;EACtC;EAEAy0D,MAAMA,CAACz0D,MAAM,EAAE;IACb,IAAI,CAACszD,YAAY,GAAGtzD,MAAM;IAC1B,IAAI,CAAC8wD,eAAe,CAAC3pD,OAAO,CAAC,CAAC;EAChC;EAEAutD,kBAAkBA,CAACC,cAAc,EAAE;IACjC,IAAI,CAACH,eAAe,GAAGG,cAAc;IACrCA,cAAc,CAAChQ,EAAE,CAAC,UAAU,EAAE,MAAM;MAClC,IAAI,CAACmM,eAAe,CAAC3pD,OAAO,CAAC,CAAC;IAChC,CAAC,CAAC;IAEFwtD,cAAc,CAAChQ,EAAE,CAAC,KAAK,EAAE,MAAM;MAE7BgQ,cAAc,CAAC51D,OAAO,CAAC,CAAC;MACxB,IAAI,CAACstD,KAAK,GAAG,IAAI;MACjB,IAAI,CAACyE,eAAe,CAAC3pD,OAAO,CAAC,CAAC;IAChC,CAAC,CAAC;IAEFwtD,cAAc,CAAChQ,EAAE,CAAC,OAAO,EAAE3kD,MAAM,IAAI;MACnC,IAAI,CAACy0D,MAAM,CAACz0D,MAAM,CAAC;IACrB,CAAC,CAAC;IAIF,IAAI,CAAC,IAAI,CAACkqD,qBAAqB,IAAI,IAAI,CAACC,iBAAiB,EAAE;MACzD,IAAI,CAACsK,MAAM,CAAC,IAAIlhE,cAAc,CAAC,uBAAuB,CAAC,CAAC;IAC1D;IAGA,IAAI,IAAI,CAAC+\u002FD,YAAY,EAAE;MACrB,IAAI,CAACkB,eAAe,CAACz1D,OAAO,CAAC,IAAI,CAACu0D,YAAY,CAAC;IACjD;EACF;AACF;AAEA,MAAMsB,eAAe,CAAC;EACpBhiE,WAAWA,CAACwxD,MAAM,EAAE;IAClB,IAAI,CAAC8O,IAAI,GAAG9O,MAAM,CAACpzD,GAAG;IACtB,IAAI,CAACq7D,KAAK,GAAG,KAAK;IAClB,IAAI,CAACiH,YAAY,GAAG,IAAI;IACxB,IAAI,CAAC9H,UAAU,GAAG,IAAI;IACtB,IAAI,CAACF,OAAO,GAAG,CAAC;IAChB,IAAI,CAACkJ,eAAe,GAAG,IAAI;IAC3B,IAAI,CAAC1D,eAAe,GAAG5pD,OAAO,CAACk5B,aAAa,CAAC,CAAC;IAC9C,MAAMngB,MAAM,GAAGmkC,MAAM,CAACnkC,MAAM;IAC5B,IAAI,CAACiqC,qBAAqB,GAAG,CAACjqC,MAAM,CAACypC,aAAa;EACpD;EAEA,IAAIkD,oBAAoBA,CAAA,EAAG;IACzB,OAAO,IAAI,CAAC1C,qBAAqB;EACnC;EAEA,MAAM4C,IAAIA,CAAA,EAAG;IACX,MAAM,IAAI,CAACgE,eAAe,CAACr+C,OAAO;IAClC,IAAI,IAAI,CAAC45C,KAAK,EAAE;MACd,OAAO;QAAEp6D,KAAK,EAAEyB,SAAS;QAAEgqC,IAAI,EAAE;MAAK,CAAC;IACzC;IACA,IAAI,IAAI,CAAC41B,YAAY,EAAE;MACrB,MAAM,IAAI,CAACA,YAAY;IACzB;IAEA,MAAMl\u002FD,KAAK,GAAG,IAAI,CAACogE,eAAe,CAAC1H,IAAI,CAAC,CAAC;IACzC,IAAI14D,KAAK,KAAK,IAAI,EAAE;MAClB,IAAI,CAAC08D,eAAe,GAAG5pD,OAAO,CAACk5B,aAAa,CAAC,CAAC;MAC9C,OAAO,IAAI,CAAC0sB,IAAI,CAAC,CAAC;IACpB;IACA,IAAI,CAACxB,OAAO,IAAIl3D,KAAK,CAAC3C,MAAM;IAC5B,IAAI,CAAC+5D,UAAU,GAAG;MAAExuB,MAAM,EAAE,IAAI,CAACsuB;IAAQ,CAAC,CAAC;IAG3C,MAAM\u002F1D,MAAM,GAAG,IAAIb,UAAU,CAACN,KAAK,CAAC,CAACmB,MAAM;IAC3C,OAAO;MAAEtD,KAAK,EAAEsD,MAAM;MAAEmoC,IAAI,EAAE;IAAM,CAAC;EACvC;EAEAmoB,MAAMA,CAAC7lD,MAAM,EAAE;IAGb,IAAI,CAAC,IAAI,CAACw0D,eAAe,EAAE;MACzB,IAAI,CAACC,MAAM,CAACz0D,MAAM,CAAC;MACnB;IACF;IACA,IAAI,CAACw0D,eAAe,CAACz1D,OAAO,CAACiB,MAAM,CAAC;EACtC;EAEAy0D,MAAMA,CAACz0D,MAAM,EAAE;IACb,IAAI,CAACszD,YAAY,GAAGtzD,MAAM;IAC1B,IAAI,CAAC8wD,eAAe,CAAC3pD,OAAO,CAAC,CAAC;EAChC;EAEAutD,kBAAkBA,CAACC,cAAc,EAAE;IACjC,IAAI,CAACH,eAAe,GAAGG,cAAc;IACrCA,cAAc,CAAChQ,EAAE,CAAC,UAAU,EAAE,MAAM;MAClC,IAAI,CAACmM,eAAe,CAAC3pD,OAAO,CAAC,CAAC;IAChC,CAAC,CAAC;IAEFwtD,cAAc,CAAChQ,EAAE,CAAC,KAAK,EAAE,MAAM;MAE7BgQ,cAAc,CAAC51D,OAAO,CAAC,CAAC;MACxB,IAAI,CAACstD,KAAK,GAAG,IAAI;MACjB,IAAI,CAACyE,eAAe,CAAC3pD,OAAO,CAAC,CAAC;IAChC,CAAC,CAAC;IAEFwtD,cAAc,CAAChQ,EAAE,CAAC,OAAO,EAAE3kD,MAAM,IAAI;MACnC,IAAI,CAACy0D,MAAM,CAACz0D,MAAM,CAAC;IACrB,CAAC,CAAC;IAGF,IAAI,IAAI,CAACszD,YAAY,EAAE;MACrB,IAAI,CAACkB,eAAe,CAACz1D,OAAO,CAAC,IAAI,CAACu0D,YAAY,CAAC;IACjD;EACF;AACF;AAEA,SAASuB,oBAAoBA,CAACd,SAAS,EAAEzE,OAAO,EAAE;EAChD,OAAO;IACLr+D,QAAQ,EAAE8iE,SAAS,CAAC9iE,QAAQ;IAC5B6jE,IAAI,EAAEf,SAAS,CAACe,IAAI;IACpBd,IAAI,EAAED,SAAS,CAACgB,QAAQ;IACxBvS,IAAI,EAAEuR,SAAS,CAACvR,IAAI;IACpB9S,IAAI,EAAEqkB,SAAS,CAACrkB,IAAI;IACpB+f,MAAM,EAAE,KAAK;IACbH;EACF,CAAC;AACH;AAEA,MAAM8E,uBAAuB,SAASG,cAAc,CAAC;EACnD3hE,WAAWA,CAACwxD,MAAM,EAAE;IAClB,KAAK,CAACA,MAAM,CAAC;IAEb,MAAM4Q,cAAc,GAAGruD,QAAQ,IAAI;MACjC,IAAIA,QAAQ,CAACsuD,UAAU,KAAK,GAAG,EAAE;QAC\u002FB,MAAMphD,KAAK,GAAG,IAAI1gB,mBAAmB,CAAE,gBAAe,IAAI,CAAC+\u002FD,IAAK,IAAG,CAAC;QACpE,IAAI,CAACI,YAAY,GAAGz\u002FC,KAAK;QACzB,IAAI,CAAC08C,kBAAkB,CAACnpD,MAAM,CAACyM,KAAK,CAAC;QACrC;MACF;MACA,IAAI,CAAC08C,kBAAkB,CAACppD,OAAO,CAAC,CAAC;MACjC,IAAI,CAACutD,kBAAkB,CAAC\u002FtD,QAAQ,CAAC;MAIjC,MAAMgoD,iBAAiB,GAAGh8D,IAAI,IAC5B,IAAI,CAAC6hE,eAAe,CAAClF,OAAO,CAAC38D,IAAI,CAACyX,WAAW,CAAC,CAAC,CAAC;MAElD,MAAM;QAAE2kD,kBAAkB;QAAEC;MAAgB,CAAC,GAC3CN,gCAAgC,CAAC;QAC\u002FBC,iBAAiB;QACjBC,MAAM,EAAExK,MAAM,CAACwK,MAAM;QACrBC,cAAc,EAAE,IAAI,CAAC4B,eAAe;QACpChH,YAAY,EAAE,IAAI,CAAC+G;MACrB,CAAC,CAAC;MAEJ,IAAI,CAACrG,iBAAiB,GAAG4E,kBAAkB;MAE3C,IAAI,CAAC3E,cAAc,GAAG4E,eAAe,IAAI,IAAI,CAAC5E,cAAc;MAE5D,IAAI,CAACkC,SAAS,GAAG4C,yBAAyB,CAACP,iBAAiB,CAAC;IAC\u002FD,CAAC;IAED,IAAI,CAACuG,QAAQ,GAAG,IAAI;IACpB,IAAI,IAAI,CAAChC,IAAI,CAACjiE,QAAQ,KAAK,OAAO,EAAE;MAClC,MAAMuvC,IAAI,GAAGG,YAAY,CAAC1jC,GAAG,CAAC,MAAM,CAAC;MACrC,IAAI,CAACi4D,QAAQ,GAAG10B,IAAI,CAACn5B,OAAO,CAC1BwtD,oBAAoB,CAAC,IAAI,CAAC3B,IAAI,EAAE9O,MAAM,CAAC0L,WAAW,CAAC,EACnDkF,cACF,CAAC;IACH,CAAC,MAAM;MACL,MAAMv0B,KAAK,GAAGE,YAAY,CAAC1jC,GAAG,CAAC,OAAO,CAAC;MACvC,IAAI,CAACi4D,QAAQ,GAAGz0B,KAAK,CAACp5B,OAAO,CAC3BwtD,oBAAoB,CAAC,IAAI,CAAC3B,IAAI,EAAE9O,MAAM,CAAC0L,WAAW,CAAC,EACnDkF,cACF,CAAC;IACH;IAEA,IAAI,CAACE,QAAQ,CAACvQ,EAAE,CAAC,OAAO,EAAE3kD,MAAM,IAAI;MAClC,IAAI,CAACszD,YAAY,GAAGtzD,MAAM;MAC1B,IAAI,CAACuwD,kBAAkB,CAACnpD,MAAM,CAACpH,MAAM,CAAC;IACxC,CAAC,CAAC;IAIF,IAAI,CAACk1D,QAAQ,CAACpxD,GAAG,CAAC,CAAC;EACrB;AACF;AAEA,MAAMwwD,wBAAwB,SAASM,eAAe,CAAC;EACrDhiE,WAAWA,CAACwxD,MAAM,EAAEvgD,KAAK,EAAEC,GAAG,EAAE;IAC9B,KAAK,CAACsgD,MAAM,CAAC;IAEb,IAAI,CAAC+Q,YAAY,GAAG,CAAC,CAAC;IACtB,KAAK,MAAM9hB,QAAQ,IAAI+Q,MAAM,CAAC0L,WAAW,EAAE;MACzC,MAAM79D,KAAK,GAAGmyD,MAAM,CAAC0L,WAAW,CAACzc,QAAQ,CAAC;MAC1C,IAAIphD,KAAK,KAAKyB,SAAS,EAAE;QACvB;MACF;MACA,IAAI,CAACyhE,YAAY,CAAC9hB,QAAQ,CAAC,GAAGphD,KAAK;IACrC;IACA,IAAI,CAACkjE,YAAY,CAACC,KAAK,GAAI,SAAQvxD,KAAM,IAAGC,GAAG,GAAG,CAAE,EAAC;IAErD,MAAMkxD,cAAc,GAAGruD,QAAQ,IAAI;MACjC,IAAIA,QAAQ,CAACsuD,UAAU,KAAK,GAAG,EAAE;QAC\u002FB,MAAMphD,KAAK,GAAG,IAAI1gB,mBAAmB,CAAE,gBAAe,IAAI,CAAC+\u002FD,IAAK,IAAG,CAAC;QACpE,IAAI,CAACI,YAAY,GAAGz\u002FC,KAAK;QACzB;MACF;MACA,IAAI,CAAC6gD,kBAAkB,CAAC\u002FtD,QAAQ,CAAC;IACnC,CAAC;IAED,IAAI,CAACuuD,QAAQ,GAAG,IAAI;IACpB,IAAI,IAAI,CAAChC,IAAI,CAACjiE,QAAQ,KAAK,OAAO,EAAE;MAClC,MAAMuvC,IAAI,GAAGG,YAAY,CAAC1jC,GAAG,CAAC,MAAM,CAAC;MACrC,IAAI,CAACi4D,QAAQ,GAAG10B,IAAI,CAACn5B,OAAO,CAC1BwtD,oBAAoB,CAAC,IAAI,CAAC3B,IAAI,EAAE,IAAI,CAACiC,YAAY,CAAC,EAClDH,cACF,CAAC;IACH,CAAC,MAAM;MACL,MAAMv0B,KAAK,GAAGE,YAAY,CAAC1jC,GAAG,CAAC,OAAO,CAAC;MACvC,IAAI,CAACi4D,QAAQ,GAAGz0B,KAAK,CAACp5B,OAAO,CAC3BwtD,oBAAoB,CAAC,IAAI,CAAC3B,IAAI,EAAE,IAAI,CAACiC,YAAY,CAAC,EAClDH,cACF,CAAC;IACH;IAEA,IAAI,CAACE,QAAQ,CAACvQ,EAAE,CAAC,OAAO,EAAE3kD,MAAM,IAAI;MAClC,IAAI,CAACszD,YAAY,GAAGtzD,MAAM;IAC5B,CAAC,CAAC;IACF,IAAI,CAACk1D,QAAQ,CAACpxD,GAAG,CAAC,CAAC;EACrB;AACF;AAEA,MAAMqwD,yBAAyB,SAASI,cAAc,CAAC;EACrD3hE,WAAWA,CAACwxD,MAAM,EAAE;IAClB,KAAK,CAACA,MAAM,CAAC;IAEb,IAAI1U,IAAI,GAAGh0C,kBAAkB,CAAC,IAAI,CAACw3D,IAAI,CAACxjB,IAAI,CAAC;IAG7C,IAAIkkB,YAAY,CAACtpD,IAAI,CAAC,IAAI,CAAC4oD,IAAI,CAACmC,IAAI,CAAC,EAAE;MACrC3lB,IAAI,GAAGA,IAAI,CAAC6e,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IAChC;IAEA,MAAMhuB,EAAE,GAAGI,YAAY,CAAC1jC,GAAG,CAAC,IAAI,CAAC;IACjCsjC,EAAE,CAACK,QAAQ,CAAC00B,KAAK,CAAC5lB,IAAI,CAAC,CAAC3nC,IAAI,CAC1BwtD,IAAI,IAAI;MAEN,IAAI,CAACnL,cAAc,GAAGmL,IAAI,CAACtwD,IAAI;MAE\u002FB,IAAI,CAACyvD,kBAAkB,CAACn0B,EAAE,CAACi1B,gBAAgB,CAAC9lB,IAAI,CAAC,CAAC;MAClD,IAAI,CAAC6gB,kBAAkB,CAACppD,OAAO,CAAC,CAAC;IACnC,CAAC,EACD0M,KAAK,IAAI;MACP,IAAIA,KAAK,CAAC9gB,IAAI,KAAK,QAAQ,EAAE;QAC3B8gB,KAAK,GAAG,IAAI1gB,mBAAmB,CAAE,gBAAeu8C,IAAK,IAAG,CAAC;MAC3D;MACA,IAAI,CAAC4jB,YAAY,GAAGz\u002FC,KAAK;MACzB,IAAI,CAAC08C,kBAAkB,CAACnpD,MAAM,CAACyM,KAAK,CAAC;IACvC,CACF,CAAC;EACH;AACF;AAEA,MAAMwgD,0BAA0B,SAASO,eAAe,CAAC;EACvDhiE,WAAWA,CAACwxD,MAAM,EAAEvgD,KAAK,EAAEC,GAAG,EAAE;IAC9B,KAAK,CAACsgD,MAAM,CAAC;IAEb,IAAI1U,IAAI,GAAGh0C,kBAAkB,CAAC,IAAI,CAACw3D,IAAI,CAACxjB,IAAI,CAAC;IAG7C,IAAIkkB,YAAY,CAACtpD,IAAI,CAAC,IAAI,CAAC4oD,IAAI,CAACmC,IAAI,CAAC,EAAE;MACrC3lB,IAAI,GAAGA,IAAI,CAAC6e,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IAChC;IAEA,MAAMhuB,EAAE,GAAGI,YAAY,CAAC1jC,GAAG,CAAC,IAAI,CAAC;IACjC,IAAI,CAACy3D,kBAAkB,CAACn0B,EAAE,CAACi1B,gBAAgB,CAAC9lB,IAAI,EAAE;MAAE7rC,KAAK;MAAEC,GAAG,EAAEA,GAAG,GAAG;IAAE,CAAC,CAAC,CAAC;EAC7E;AACF;;;ACjb+D;AACK;AAqBpE,MAAM2xD,uBAAuB,GAAG,MAAM;AACtC,MAAMC,iBAAiB,GAAG,EAAE;AAC5B,MAAMC,mBAAmB,GAAG,GAAG;AAE\u002FB,MAAMC,SAAS,CAAC;EACd,CAACtR,UAAU,GAAGp9C,OAAO,CAACk5B,aAAa,CAAC,CAAC;EAErC,CAACtlB,SAAS,GAAG,IAAI;EAEjB,CAAC+6C,mBAAmB,GAAG,KAAK;EAE5B,CAACC,oBAAoB,GAAG,CAAC,CAAC5\u002FD,UAAU,CAAC6\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\u002FkE,KAAK,CAACqwB,KAAK,CAAC;QAC\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\u002FuC,EAAE,GAAG\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\u002F\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\u002FB,MAAMurE,UAAU,GACd,OAAO\u002FoD,GAAG,CAAC+oD,UAAU,KAAK,QAAQ,IAAI,CAACtxD,YAAY,CAACuI,GAAG,CAAC+oD,UAAU,CAAC,GAC\u002FD\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\u002FB,eAAe;MACfu\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\u002FC,IAAI;MAClBp\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\u002FjE,KAAK,CAAC+jE,IAAI;UAC\u002FB7jE,MAAM,CAACoxB,MAAM,CAACsH,WAAW,CAACksC,MAAM,EAAE9kE,KAAK,CAAC8kE,MAAM,CAAC;UAC\u002FClsC,WAAW,CAACvI,KAAK,CAAChuB,IAAI,CAAC,GAAGrC,KAAK,CAACqwB,KAAK,CAAC;UACtCw0C,IAAI,CAAC,CAAC;QACR,CAAC,EAAE1vD,MAAM,CAAC;MACZ;MAEA,MAAMskD,MAAM,GAAGiJ,cAAc,CAAC9D,SAAS,CAAC,CAAC;MACzC,MAAMhmC,WAAW,GAAG;QAClBvI,KAAK,EAAE,EAAE;QACTy0C,MAAM,EAAE5kE,MAAM,CAAC8C,MAAM,CAAC,IAAI,CAAC;QAC3B+gE,IAAI,EAAE;MACR,CAAC;MACDc,IAAI,CAAC,CAAC;IACR,CAAC,CAAC;EACJ;EAOAuN,aAAaA,CAAA,EAAG;IACd,OAAO,IAAI,CAACzG,UAAU,CAACyG,aAAa,CAAC,IAAI,CAAC5C,UAAU,CAAC;EACvD;EAMA6C,QAAQA,CAAA,EAAG;IACT,IAAI,CAACpH,SAAS,GAAG,IAAI;IAErB,MAAMqH,MAAM,GAAG,EAAE;IACjB,KAAK,MAAM7B,WAAW,IAAI,IAAI,CAACX,aAAa,CAAC5kD,MAAM,CAAC,CAAC,EAAE;MACrD,IAAI,CAACimD,kBAAkB,CAAC;QACtBV,WAAW;QACX1iE,MAAM,EAAE,IAAIpP,KAAK,CAAC,qBAAqB,CAAC;QACxC4zE,KAAK,EAAE;MACT,CAAC,CAAC;MAEF,IAAI9B,WAAW,CAACmB,oBAAoB,EAAE;QAEpC;MACF;MACA,KAAK,MAAMX,kBAAkB,IAAIR,WAAW,CAACO,WAAW,EAAE;QACxDsB,MAAM,CAACjwE,IAAI,CAAC4uE,kBAAkB,CAACuB,SAAS,CAAC;QACzCvB,kBAAkB,CAACrd,MAAM,CAAC,CAAC;MAC7B;IACF;IACA,IAAI,CAAChmB,IAAI,CAAC16B,KAAK,CAAC,CAAC;IACjB,IAAI,CAAC,CAACo8D,cAAc,GAAG,KAAK;IAC5B,IAAI,CAAC,CAACkB,mBAAmB,CAAC,CAAC;IAE3B,OAAOv7D,OAAO,CAACu8D,GAAG,CAACc,MAAM,CAAC;EAC5B;EASAzL,OAAOA,CAAC4L,UAAU,GAAG,KAAK,EAAE;IAC1B,IAAI,CAAC,CAACnD,cAAc,GAAG,IAAI;IAC3B,MAAM9a,OAAO,GAAG,IAAI,CAAC,CAAC0c,UAAU,CAAiB,KAAK,CAAC;IAEvD,IAAIuB,UAAU,IAAIje,OAAO,EAAE;MACzB,IAAI,CAACkb,MAAM,KAAK,IAAI12D,SAAS,CAAC,CAAC;IACjC;IACA,OAAOw7C,OAAO;EAChB;EASA,CAAC0c,UAAUwB,CAACC,OAAO,GAAG,KAAK,EAAE;IAC3B,IAAI,CAAC,CAACnC,mBAAmB,CAAC,CAAC;IAE3B,IAAI,CAAC,IAAI,CAAC,CAAClB,cAAc,IAAI,IAAI,CAACrE,SAAS,EAAE;MAC3C,OAAO,KAAK;IACd;IACA,IAAI0H,OAAO,EAAE;MACX,IAAI,CAAC,CAACtD,qBAAqB,GAAGr7C,UAAU,CAAC,MAAM;QAC7C,IAAI,CAAC,CAACq7C,qBAAqB,GAAG,IAAI;QAClC,IAAI,CAAC,CAAC6B,UAAU,CAAiB,KAAK,CAAC;MACzC,CAAC,EAAE3I,uBAAuB,CAAC;MAE3B,OAAO,KAAK;IACd;IACA,KAAK,MAAM;MAAEyI,WAAW;MAAEn7B;IAAa,CAAC,IAAI,IAAI,CAACi6B,aAAa,CAAC5kD,MAAM,CAAC,CAAC,EAAE;MACvE,IAAI8lD,WAAW,CAACh+D,IAAI,GAAG,CAAC,IAAI,CAAC6iC,YAAY,CAACg7B,SAAS,EAAE;QACnD,OAAO,KAAK;MACd;IACF;IACA,IAAI,CAACf,aAAa,CAAC58D,KAAK,CAAC,CAAC;IAC1B,IAAI,CAAC06B,IAAI,CAAC16B,KAAK,CAAC,CAAC;IACjB,IAAI,CAAC,CAACo8D,cAAc,GAAG,KAAK;IAC5B,OAAO,IAAI;EACb;EAEA,CAACkB,mBAAmBoC,CAAA,EAAG;IACrB,IAAI,IAAI,CAAC,CAACvD,qBAAqB,EAAE;MAC\u002FBlkD,YAAY,CAAC,IAAI,CAAC,CAACkkD,qBAAqB,CAAC;MACzC,IAAI,CAAC,CAACA,qBAAqB,GAAG,IAAI;IACpC;EACF;EAKAwD,gBAAgBA,CAACxuB,YAAY,EAAEoC,QAAQ,EAAE;IACvC,MAAMgqB,WAAW,GAAG,IAAI,CAACX,aAAa,CAAC9kE,GAAG,CAACy7C,QAAQ,CAAC;IACpD,IAAI,CAACgqB,WAAW,EAAE;MAChB;IACF;IACA,IAAI,CAACf,MAAM,EAAEr2D,OAAO,CAAC,cAAc,CAAC;IAIpCo3D,WAAW,CAACG,sBAAsB,EAAE17D,OAAO,CAACmvC,YAAY,CAAC;EAC3D;EAKAyuB,gBAAgBA,CAACC,iBAAiB,EAAEtC,WAAW,EAAE;IAE\u002FC,KAAK,IAAI1uE,CAAC,GAAG,CAAC,EAAEuH,EAAE,GAAGypE,iBAAiB,CAACvzE,MAAM,EAAEuC,CAAC,GAAGuH,EAAE,EAAEvH,CAAC,EAAE,EAAE;MAC1D0uE,WAAW,CAAC56B,YAAY,CAACiP,OAAO,CAACziD,IAAI,CAAC0wE,iBAAiB,CAACjuB,OAAO,CAAC\u002FiD,CAAC,CAAC,CAAC;MACnE0uE,WAAW,CAAC56B,YAAY,CAACgP,SAAS,CAACxiD,IAAI,CAAC0wE,iBAAiB,CAACluB,SAAS,CAAC9iD,CAAC,CAAC,CAAC;IACzE;IACA0uE,WAAW,CAAC56B,YAAY,CAACg7B,SAAS,GAAGkC,iBAAiB,CAAClC,SAAS;IAChEJ,WAAW,CAAC56B,YAAY,CAACi7B,cAAc,GAAGiC,iBAAiB,CAACjC,cAAc;IAG1E,KAAK,MAAMG,kBAAkB,IAAIR,WAAW,CAACO,WAAW,EAAE;MACxDC,kBAAkB,CAACS,mBAAmB,CAAC,CAAC;IAC1C;IAEA,IAAIqB,iBAAiB,CAAClC,SAAS,EAAE;MAC\u002FB,IAAI,CAAC,CAACK,UAAU,CAAiB,IAAI,CAAC;IACxC;EACF;EAKAH,iBAAiBA,CAAC;IAChBvb,eAAe;IACf\u002FO,QAAQ;IACRusB;EACF,CAAC,EAAE;IAOD,MAAM;MAAEjwE,GAAG;MAAEukC;IAAS,CAAC,GAAG0rC,6BAA6B;IAEvD,MAAMtQ,cAAc,GAAG,IAAI,CAACiJ,UAAU,CAACR,cAAc,CAACnY,cAAc,CAClE,iBAAiB,EACjB;MACEjhC,SAAS,EAAE,IAAI,CAACy9C,UAAU;MAC1BjoB,MAAM,EAAEiO,eAAe;MACvB\u002FO,QAAQ;MACRphC,iBAAiB,EAAEtiB;IACrB,CAAC,EACDukC,QACF,CAAC;IACD,MAAMmyB,MAAM,GAAGiJ,cAAc,CAAC9D,SAAS,CAAC,CAAC;IAEzC,MAAM6R,WAAW,GAAG,IAAI,CAACX,aAAa,CAAC9kE,GAAG,CAACy7C,QAAQ,CAAC;IACpDgqB,WAAW,CAACwC,YAAY,GAAGxZ,MAAM;IAEjC,MAAMoL,IAAI,GAAGA,CAAA,KAAM;MACjBpL,MAAM,CAACoB,IAAI,CAAC,CAAC,CAAC\u002FkD,IAAI,CAChB,CAAC;QAAE9V,KAAK;QAAEyrC;MAAK,CAAC,KAAK;QACnB,IAAIA,IAAI,EAAE;UACRglC,WAAW,CAACwC,YAAY,GAAG,IAAI;UAC\u002FB;QACF;QACA,IAAI,IAAI,CAACtH,UAAU,CAACV,SAAS,EAAE;UAC7B;QACF;QACA,IAAI,CAAC6H,gBAAgB,CAAC9yE,KAAK,EAAEywE,WAAW,CAAC;QACzC5L,IAAI,CAAC,CAAC;MACR,CAAC,EACD92D,MAAM,IAAI;QACR0iE,WAAW,CAACwC,YAAY,GAAG,IAAI;QAE\u002FB,IAAI,IAAI,CAACtH,UAAU,CAACV,SAAS,EAAE;UAC7B;QACF;QACA,IAAIwF,WAAW,CAAC56B,YAAY,EAAE;UAE5B46B,WAAW,CAAC56B,YAAY,CAACg7B,SAAS,GAAG,IAAI;UAEzC,KAAK,MAAMI,kBAAkB,IAAIR,WAAW,CAACO,WAAW,EAAE;YACxDC,kBAAkB,CAACS,mBAAmB,CAAC,CAAC;UAC1C;UACA,IAAI,CAAC,CAACR,UAAU,CAAiB,IAAI,CAAC;QACxC;QAEA,IAAIT,WAAW,CAACG,sBAAsB,EAAE;UACtCH,WAAW,CAACG,sBAAsB,CAACz7D,MAAM,CAACpH,MAAM,CAAC;QACnD,CAAC,MAAM,IAAI0iE,WAAW,CAACmB,oBAAoB,EAAE;UAC3CnB,WAAW,CAACmB,oBAAoB,CAACz8D,MAAM,CAACpH,MAAM,CAAC;QACjD,CAAC,MAAM;UACL,MAAMA,MAAM;QACd;MACF,CACF,CAAC;IACH,CAAC;IACD82D,IAAI,CAAC,CAAC;EACR;EAKAsM,kBAAkBA,CAAC;IAAEV,WAAW;IAAE1iE,MAAM;IAAEwkE,KAAK,GAAG;EAAM,CAAC,EAAE;IAQzD,IAAI,CAAC9B,WAAW,CAACwC,YAAY,EAAE;MAC7B;IACF;IAEA,IAAIxC,WAAW,CAACC,yBAAyB,EAAE;MACzCvlD,YAAY,CAACslD,WAAW,CAACC,yBAAyB,CAAC;MACnDD,WAAW,CAACC,yBAAyB,GAAG,IAAI;IAC9C;IAEA,IAAI,CAAC6B,KAAK,EAAE;MAGV,IAAI9B,WAAW,CAACO,WAAW,CAACh+D,IAAI,GAAG,CAAC,EAAE;QACpC;MACF;MAIA,IAAIjF,MAAM,YAAY+J,2BAA2B,EAAE;QACjD,IAAIo7D,KAAK,GAAG5K,2BAA2B;QACvC,IAAIv6D,MAAM,CAACgK,UAAU,GAAG,CAAC,IAAIhK,MAAM,CAACgK,UAAU,GAAc,IAAI,EAAE;UAEhEm7D,KAAK,IAAInlE,MAAM,CAACgK,UAAU;QAC5B;QAEA04D,WAAW,CAACC,yBAAyB,GAAG18C,UAAU,CAAC,MAAM;UACvDy8C,WAAW,CAACC,yBAAyB,GAAG,IAAI;UAC5C,IAAI,CAACS,kBAAkB,CAAC;YAAEV,WAAW;YAAE1iE,MAAM;YAAEwkE,KAAK,EAAE;UAAK,CAAC,CAAC;QAC\u002FD,CAAC,EAAEW,KAAK,CAAC;QACT;MACF;IACF;IACAzC,WAAW,CAACwC,YAAY,CACrBrf,MAAM,CAAC,IAAItyD,cAAc,CAACyM,MAAM,CAACtN,OAAO,CAAC,CAAC,CAC1CqN,KAAK,CAAC,MAAM,CAEb,CAAC,CAAC;IACJ2iE,WAAW,CAACwC,YAAY,GAAG,IAAI;IAE\u002FB,IAAI,IAAI,CAACtH,UAAU,CAACV,SAAS,EAAE;MAC7B;IACF;IAGA,KAAK,MAAM,CAACkI,WAAW,EAAEC,cAAc,CAAC,IAAI,IAAI,CAACtD,aAAa,EAAE;MAC9D,IAAIsD,cAAc,KAAK3C,WAAW,EAAE;QAClC,IAAI,CAACX,aAAa,CAACtxD,MAAM,CAAC20D,WAAW,CAAC;QACtC;MACF;IACF;IAEA,IAAI,CAACtM,OAAO,CAAC,CAAC;EAChB;EAMA,IAAIl+B,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAAC+mC,MAAM;EACpB;AACF;AAEA,MAAM2D,YAAY,CAAC;EACjB,CAAChU,SAAS,GAAG,IAAI97C,GAAG,CAAC,CAAC;EAEtB,CAAC+vD,QAAQ,GAAGr+D,OAAO,CAACC,OAAO,CAAC,CAAC;EAE7Bs9C,WAAWA,CAAC1yD,GAAG,EAAEwnC,QAAQ,EAAE;IACzB,MAAMzjB,KAAK,GAAG;MACZ9N,IAAI,EAAEizB,eAAe,CAAClpC,GAAG,EAAEwnC,QAAQ,GAAG;QAAEA;MAAS,CAAC,GAAG,IAAI;IAC3D,CAAC;IAED,IAAI,CAAC,CAACgsC,QAAQ,CAACx9D,IAAI,CAAC,MAAM;MACxB,KAAK,MAAM62D,QAAQ,IAAI,IAAI,CAAC,CAACtN,SAAS,EAAE;QACtCsN,QAAQ,CAAC4G,IAAI,CAAC,IAAI,EAAE1vD,KAAK,CAAC;MAC5B;IACF,CAAC,CAAC;EACJ;EAEAhH,gBAAgBA,CAACnc,IAAI,EAAEisE,QAAQ,EAAE;IAC\u002FB,IAAI,CAAC,CAACtN,SAAS,CAACphD,GAAG,CAAC0uD,QAAQ,CAAC;EAC\u002FB;EAEAh+C,mBAAmBA,CAACjuB,IAAI,EAAEisE,QAAQ,EAAE;IAClC,IAAI,CAAC,CAACtN,SAAS,CAAC7gD,MAAM,CAACmuD,QAAQ,CAAC;EAClC;EAEA6G,SAASA,CAAA,EAAG;IACV,IAAI,CAAC,CAACnU,SAAS,CAACnsD,KAAK,CAAC,CAAC;EACzB;AACF;AAUA,MAAMugE,aAAa,GAAG;EACpBC,gBAAgB,EAAE,KAAK;EACvBC,YAAY,EAAE;AAChB,CAAC;AACgE;EAC\u002FD,IAAItlF,QAAQ,EAAE;IAEZolF,aAAa,CAACC,gBAAgB,GAAG,IAAI;IAErCpjB,mBAAmB,CAACI,SAAS,KAEzB,kBAAkB;EACxB;EAGA+iB,aAAa,CAACG,YAAY,GAAG,UAAU10E,OAAO,EAAE20E,QAAQ,EAAE;IACxD,IAAIC,IAAI;IACR,IAAI;MACFA,IAAI,GAAG,IAAIl0E,GAAG,CAACV,OAAO,CAAC;MACvB,IAAI,CAAC40E,IAAI,CAACC,MAAM,IAAID,IAAI,CAACC,MAAM,KAAK,MAAM,EAAE;QAC1C,OAAO,KAAK;MACd;IACF,CAAC,CAAC,MAAM;MACN,OAAO,KAAK;IACd;IAEA,MAAMC,KAAK,GAAG,IAAIp0E,GAAG,CAACi0E,QAAQ,EAAEC,IAAI,CAAC;IACrC,OAAOA,IAAI,CAACC,MAAM,KAAKC,KAAK,CAACD,MAAM;EACrC,CAAC;EAEDN,aAAa,CAACQ,gBAAgB,GAAG,UAAUl1E,GAAG,EAAE;IAI9C,MAAMm1E,OAAO,GAAI,iBAAgBn1E,GAAI,KAAI;IACzC,OAAOa,GAAG,CAACu0E,eAAe,CACxB,IAAIC,IAAI,CAAC,CAACF,OAAO,CAAC,EAAE;MAAExlF,IAAI,EAAE;IAAkB,CAAC,CACjD,CAAC;EACH,CAAC;AACH;AAUA,MAAM26E,SAAS,CAAC;EACd,OAAO,CAACgL,WAAW;EAEnB1zE,WAAWA,CAAC;IACVD,IAAI,GAAG,IAAI;IACX6vD,IAAI,GAAG,IAAI;IACXxyD,SAAS,GAAGK,iBAAiB,CAAC;EAChC,CAAC,GAAG,CAAC,CAAC,EAAE;IACN,IAAI,CAACsC,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACuqE,SAAS,GAAG,KAAK;IACtB,IAAI,CAACltE,SAAS,GAAGA,SAAS;IAE1B,IAAI,CAAC2uE,gBAAgB,GAAGz3D,OAAO,CAACk5B,aAAa,CAAC,CAAC;IAC\u002FC,IAAI,CAACmmC,KAAK,GAAG,IAAI;IACjB,IAAI,CAACC,UAAU,GAAG,IAAI;IACtB,IAAI,CAACC,eAAe,GAAG,IAAI;IAE3B,IAEEjkB,IAAI,EACJ;MACA,IAAI8Y,SAAS,CAAC,CAACgL,WAAW,EAAElwD,GAAG,CAACosC,IAAI,CAAC,EAAE;QACrC,MAAM,IAAI5xD,KAAK,CAAC,8CAA8C,CAAC;MACjE;MACA,CAAC0qE,SAAS,CAAC,CAACgL,WAAW,KAAK,IAAI9P,OAAO,CAAC,CAAC,EAAEtzD,GAAG,CAACs\u002FC,IAAI,EAAE,IAAI,CAAC;MAC1D,IAAI,CAACkkB,mBAAmB,CAAClkB,IAAI,CAAC;MAC9B;IACF;IACA,IAAI,CAACmkB,WAAW,CAAC,CAAC;EACpB;EAMA,IAAIl0D,OAAOA,CAAA,EAAG;IACZ,IAGEnyB,QAAQ,EACR;MAEA,OAAO4mB,OAAO,CAACu8D,GAAG,CAAC,CAAC9iC,YAAY,CAACluB,OAAO,EAAE,IAAI,CAACksD,gBAAgB,CAAClsD,OAAO,CAAC,CAAC;IAC3E;IACA,OAAO,IAAI,CAACksD,gBAAgB,CAAClsD,OAAO;EACtC;EAMA,IAAI+vC,IAAIA,CAAA,EAAG;IACT,OAAO,IAAI,CAAC+jB,KAAK;EACnB;EAMA,IAAInJ,cAAcA,CAAA,EAAG;IACnB,OAAO,IAAI,CAACqJ,eAAe;EAC7B;EAEAC,mBAAmBA,CAAClkB,IAAI,EAAE;IAIxB,IAAI,CAAC+jB,KAAK,GAAG\u002FjB,IAAI;IACjB,IAAI,CAACikB,eAAe,GAAG,IAAIhjB,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAEjB,IAAI,CAAC;IACjE,IAAI,CAACikB,eAAe,CAAC9hB,EAAE,CAAC,OAAO,EAAE,YAAY,CAG7C,CAAC,CAAC;IACF,IAAI,CAACga,gBAAgB,CAACx3D,OAAO,CAAC,CAAC;IAE\u002FB,IAAI,CAACs\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\u002FD,IAAI,CAACo\u002FD,oBAAoB,IAAI;MAC5B,IAAI,IAAI,CAACjK,SAAS,EAAE;QAClB,IAAI,CAACyB,gBAAgB,CAACv3D,MAAM,CAAC,IAAIxW,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC\u002FD;MACF;MACA,MAAM4xD,IAAI,GAAG,IAAI8iB,YAAY,CAAC,CAAC;MAC\u002FB,IAAI,CAACiB,KAAK,GAAG\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\u002FD,IAAI,CAAC,CAAC0\u002FD,cAAc,CAACxkE,GAAG,CAACvQ,IAAI,EAAE8f,OAAO,CAAC;IACvC,OAAOA,OAAO;EAChB;EAEA,IAAI6E,iBAAiBA,CAAA,EAAG;IACtB,OAAOxlB,MAAM,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI0nC,iBAAiB,CAAC,CAAC,CAAC;EACnE;EAEA+mC,kBAAkBA,CAChB\u002FmB,MAAM,EACN6oB,cAAc,GAAG1gF,cAAc,CAACE,MAAM,EACtC0gF,sBAAsB,GAAG,IAAI,EAC7BmG,QAAQ,GAAG,KAAK,EAChB;IACA,IAAIjhB,eAAe,GAAGvmE,mBAAmB,CAACE,OAAO;IACjD,IAAI6jF,6BAA6B,GAAG7rC,iBAAiB;IAErD,QAAQogB,MAAM;MACZ,KAAK,KAAK;QACRiO,eAAe,GAAGvmE,mBAAmB,CAACC,GAAG;QACzC;MACF,KAAK,SAAS;QACZ;MACF,KAAK,OAAO;QACVsmE,eAAe,GAAGvmE,mBAAmB,CAACG,KAAK;QAC3C;MACF;QACEqP,IAAI,CAAE,wCAAuC8oD,MAAO,EAAC,CAAC;IAC1D;IAEA,QAAQ6oB,cAAc;MACpB,KAAK1gF,cAAc,CAACC,OAAO;QACzB6lE,eAAe,IAAIvmE,mBAAmB,CAACO,mBAAmB;QAC1D;MACF,KAAKE,cAAc,CAACE,MAAM;QACxB;MACF,KAAKF,cAAc,CAACG,YAAY;QAC9B2lE,eAAe,IAAIvmE,mBAAmB,CAACK,iBAAiB;QACxD;MACF,KAAKI,cAAc,CAACI,cAAc;QAChC0lE,eAAe,IAAIvmE,mBAAmB,CAACM,mBAAmB;QAE1D,MAAM81B,iBAAiB,GACrBmwC,eAAe,GAAGvmE,mBAAmB,CAACG,KAAK,IAC3CkhF,sBAAsB,YAAY\u002FnC,sBAAsB,GACpD+nC,sBAAsB,GACtB,IAAI,CAACjrD,iBAAiB;QAE5B2tD,6BAA6B,GAAG3tD,iBAAiB,CAACmjB,YAAY;QAC9D;MACF;QACE\u002FpC,IAAI,CAAE,gDAA+C2xE,cAAe,EAAC,CAAC;IAC1E;IAEA,IAAIqG,QAAQ,EAAE;MACZjhB,eAAe,IAAIvmE,mBAAmB,CAACQ,MAAM;IAC\u002FC;IAEA,OAAO;MACL+lE,eAAe;MACf\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\u002FmE,IAAI,CAAC,IAAI,CAAC;IAC\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\u002F9B,MAAMA,CAAC\u002FK,UAAU,EAAE;IACxB,MAAMxiC,SAAS,GAAI,UAASwiC,UAAU,CAAC1f,QAAQ,CAAC9iB,SAAS,CAACuJ,IAAI,CAAC,GAAG,CAAE,GAAE;IACtEi5B,UAAU,CAAC7rB,GAAG,CAACC,KAAK,CAAC5W,SAAS,GAAGA,SAAS;IAC1CwiC,UAAU,CAAC7rB,GAAG,CAACotE,MAAM,GAAG,KAAK;EAC\u002FB;AACF;;;AClQ2B;AAKC;AACgC;AACG;AACrB;AAE1C,MAAMC,iBAAiB,GAAG,IAAI;AAC9B,MAAMtZ,kCAAiB,GAAG,CAAC;AAC3B,MAAMuZ,oBAAoB,GAAG,IAAIxE,OAAO,CAAC,CAAC;AAE1C,SAASyE,WAAWA,CAACp2E,IAAI,EAAE;EACzB,OAAO;IACLoG,KAAK,EAAEpG,IAAI,CAAC,CAAC,CAAC,GAAGA,IAAI,CAAC,CAAC,CAAC;IACxBqG,MAAM,EAAErG,IAAI,CAAC,CAAC,CAAC,GAAGA,IAAI,CAAC,CAAC;EAC1B,CAAC;AACH;AAkBA,MAAMq2E,wBAAwB,CAAC;EAK7B,OAAOl6E,MAAMA,CAACu4B,UAAU,EAAE;IACxB,MAAMmtB,OAAO,GAAGntB,UAAU,CAACxlB,IAAI,CAAConE,cAAc;IAE9C,QAAQz0B,OAAO;MACb,KAAK\u002F1D,cAAc,CAACE,IAAI;QACtB,OAAO,IAAIuqF,qBAAqB,CAAC7hD,UAAU,CAAC;MAE9C,KAAK5oC,cAAc,CAACC,IAAI;QACtB,OAAO,IAAIyqF,qBAAqB,CAAC9hD,UAAU,CAAC;MAE9C,KAAK5oC,cAAc,CAACgB,MAAM;QACxB,MAAM2pF,SAAS,GAAG\u002FhD,UAAU,CAACxlB,IAAI,CAACunE,SAAS;QAE3C,QAAQA,SAAS;UACf,KAAK,IAAI;YACP,OAAO,IAAIC,2BAA2B,CAAChiD,UAAU,CAAC;UACpD,KAAK,KAAK;YACR,IAAIA,UAAU,CAACxlB,IAAI,CAACynE,WAAW,EAAE;cAC\u002FB,OAAO,IAAIC,kCAAkC,CAACliD,UAAU,CAAC;YAC3D,CAAC,MAAM,IAAIA,UAAU,CAACxlB,IAAI,CAAC2nE,QAAQ,EAAE;cACnC,OAAO,IAAIC,+BAA+B,CAACpiD,UAAU,CAAC;YACxD;YACA,OAAO,IAAIqiD,iCAAiC,CAACriD,UAAU,CAAC;UAC1D,KAAK,IAAI;YACP,OAAO,IAAIsiD,6BAA6B,CAACtiD,UAAU,CAAC;UACtD,KAAK,KAAK;YACR,OAAO,IAAIuiD,gCAAgC,CAACviD,UAAU,CAAC;QAC3D;QACA,OAAO,IAAIwiD,uBAAuB,CAACxiD,UAAU,CAAC;MAEhD,KAAK5oC,cAAc,CAACY,KAAK;QACvB,OAAO,IAAIyqF,sBAAsB,CAACziD,UAAU,CAAC;MAE\u002FC,KAAK5oC,cAAc,CAACzC,QAAQ;QAC1B,OAAO,IAAI+tF,yBAAyB,CAAC1iD,UAAU,CAAC;MAElD,KAAK5oC,cAAc,CAACG,IAAI;QACtB,OAAO,IAAIorF,qBAAqB,CAAC3iD,UAAU,CAAC;MAE9C,KAAK5oC,cAAc,CAACI,MAAM;QACxB,OAAO,IAAIorF,uBAAuB,CAAC5iD,UAAU,CAAC;MAEhD,KAAK5oC,cAAc,CAACK,MAAM;QACxB,OAAO,IAAIorF,uBAAuB,CAAC7iD,UAAU,CAAC;MAEhD,KAAK5oC,cAAc,CAACO,QAAQ;QAC1B,OAAO,IAAImrF,yBAAyB,CAAC9iD,UAAU,CAAC;MAElD,KAAK5oC,cAAc,CAACW,KAAK;QACvB,OAAO,IAAIgrF,sBAAsB,CAAC\u002FiD,UAAU,CAAC;MAE\u002FC,KAAK5oC,cAAc,CAACtC,GAAG;QACrB,OAAO,IAAIkuF,oBAAoB,CAAChjD,UAAU,CAAC;MAE7C,KAAK5oC,cAAc,CAACM,OAAO;QACzB,OAAO,IAAIurF,wBAAwB,CAACjjD,UAAU,CAAC;MAEjD,KAAK5oC,cAAc,CAACxC,SAAS;QAC3B,OAAO,IAAIsuF,0BAA0B,CAACljD,UAAU,CAAC;MAEnD,KAAK5oC,cAAc,CAACQ,SAAS;QAC3B,OAAO,IAAIurF,0BAA0B,CAACnjD,UAAU,CAAC;MAEnD,KAAK5oC,cAAc,CAACS,QAAQ;QAC1B,OAAO,IAAIurF,yBAAyB,CAACpjD,UAAU,CAAC;MAElD,KAAK5oC,cAAc,CAACU,SAAS;QAC3B,OAAO,IAAIurF,0BAA0B,CAACrjD,UAAU,CAAC;MAEnD,KAAK5oC,cAAc,CAACvC,KAAK;QACvB,OAAO,IAAIyuF,sBAAsB,CAACtjD,UAAU,CAAC;MAE\u002FC,KAAK5oC,cAAc,CAACa,cAAc;QAChC,OAAO,IAAIsrF,+BAA+B,CAACvjD,UAAU,CAAC;MAExD;QACE,OAAO,IAAIwjD,iBAAiB,CAACxjD,UAAU,CAAC;IAC5C;EACF;AACF;AAEA,MAAMwjD,iBAAiB,CAAC;EACtB,CAACC,OAAO,GAAG,IAAI;EAEf,CAACC,SAAS,GAAG,KAAK;EAElB,CAACC,YAAY,GAAG,IAAI;EAEpBv+E,WAAWA,CACT46B,UAAU,EACV;IACE4jD,YAAY,GAAG,KAAK;IACpBC,YAAY,GAAG,KAAK;IACpBC,oBAAoB,GAAG;EACzB,CAAC,GAAG,CAAC,CAAC,EACN;IACA,IAAI,CAACF,YAAY,GAAGA,YAAY;IAChC,IAAI,CAACppE,IAAI,GAAGwlB,UAAU,CAACxlB,IAAI;IAC3B,IAAI,CAACkV,KAAK,GAAGsQ,UAAU,CAACtQ,KAAK;IAC7B,IAAI,CAAC6wD,WAAW,GAAGvgD,UAAU,CAACugD,WAAW;IACzC,IAAI,CAACwD,eAAe,GAAG\u002FjD,UAAU,CAAC+jD,eAAe;IACjD,IAAI,CAACC,kBAAkB,GAAGhkD,UAAU,CAACgkD,kBAAkB;IACvD,IAAI,CAACC,WAAW,GAAGjkD,UAAU,CAACikD,WAAW;IACzC,IAAI,CAACC,UAAU,GAAGlkD,UAAU,CAACkkD,UAAU;IACvC,IAAI,CAACp6D,iBAAiB,GAAGkW,UAAU,CAAClW,iBAAiB;IACrD,IAAI,CAACq6D,eAAe,GAAGnkD,UAAU,CAACmkD,eAAe;IACjD,IAAI,CAACxQ,YAAY,GAAG3zC,UAAU,CAAC2zC,YAAY;IAC3C,IAAI,CAACyQ,aAAa,GAAGpkD,UAAU,CAACqkD,YAAY;IAC5C,IAAI,CAAClgE,MAAM,GAAG6b,UAAU,CAAC7b,MAAM;IAE\u002FB,IAAIy\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\u002F9D,KAAK,CAAC;MAC\u002FC,CAAC;MACD0zB,SAAS,EAAE1zB,KAAK,IAAI;QAClB+9D,QAAQ,CAAC,WAAW,EAAE,iBAAiB,EAAE\u002F9D,KAAK,CAAC;MACjD,CAAC;MACDvX,OAAO,EAAEuX,KAAK,IAAI;QAChB+9D,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE\u002F9D,KAAK,CAAC;MACrC,CAAC;MACD4+D,SAAS,EAAE5+D,KAAK,IAAI;QAClB+9D,QAAQ,CAAC,WAAW,EAAE,OAAO,EAAE\u002F9D,KAAK,CAAC;MACvC,CAAC;MACD29D,WAAW,EAAE39D,KAAK,IAAI;QACpB+9D,QAAQ,CAAC,aAAa,EAAE,aAAa,EAAE\u002F9D,KAAK,CAAC;MAC\u002FC,CAAC;MACD2zB,WAAW,EAAE3zB,KAAK,IAAI;QACpB+9D,QAAQ,CAAC,aAAa,EAAE,aAAa,EAAE\u002F9D,KAAK,CAAC;MAC\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\u002FB,MAAM\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\u002FC,OAAO,EAClB2\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\u002FC,YAAY,KAAKs\u002FC,KAAK,CAAC9C,YAAY;cACvD78C,OAAO,CAAClZ,QAAQ,CAACrf,EAAE,EAAE;gBAAElP;cAAM,CAAC,CAAC;cAC\u002FB;YACF;UACA,KAAK,UAAU;UACf,KAAK,SAAS;YAAE;cACd,MAAMA,KAAK,GAAGonF,KAAK,CAACt\u002FC,YAAY,IAAI,EAAE;cACtCL,OAAO,CAAClZ,QAAQ,CAACrf,EAAE,EAAE;gBAAElP;cAAM,CAAC,CAAC;cAC\u002FB;YACF;UACA;YACE;QACJ;QAEA,MAAMwkF,UAAU,GAAGx1E,QAAQ,CAAC42B,aAAa,CAAE,qBAAoB12B,EAAG,IAAG,CAAC;QACtE,IAAI,CAACs1E,UAAU,EAAE;UACf;QACF,CAAC,MAAM,IAAI,CAACxH,oBAAoB,CAAC74D,GAAG,CAACqgE,UAAU,CAAC,EAAE;UAChD\u002FlF,IAAI,CAAE,+CAA8CyQ,EAAG,EAAC,CAAC;UACzD;QACF;QACAs1E,UAAU,CAAC8C,aAAa,CAAC,IAAIC,KAAK,CAAC,WAAW,CAAC,CAAC;MAClD;MAEA,IAAI,IAAI,CAAC7H,eAAe,EAAE;QAExB,IAAI,CAAC5D,WAAW,CAACzxD,QAAQ,EAAE0D,QAAQ,CAAC,wBAAwB,EAAE;UAC5DC,MAAM,EAAE,IAAI;UACZ+zD,MAAM,EAAE;YACN7yE,EAAE,EAAE,KAAK;YACT4nD,GAAG,EAAEuwB,MAAM;YACX3mF,IAAI,EAAE;UACR;QACF,CAAC,CAAC;MACJ;MAEA,OAAO,KAAK;IACd,CAAC;EACH;AACF;AAEA,MAAM28E,qBAAqB,SAAS0B,iBAAiB,CAAC;EACpDp+E,WAAWA,CAAC46B,UAAU,EAAE;IACtB,KAAK,CAACA,UAAU,EAAE;MAAE4jD,YAAY,EAAE;IAAK,CAAC,CAAC;EAC3C;EAEAziE,MAAMA,CAAA,EAAG;IACP,IAAI,CAACmM,SAAS,CAAC7K,SAAS,CAACC,GAAG,CAAC,gBAAgB,CAAC;IAE9C,MAAMoC,KAAK,GAAGrR,QAAQ,CAACT,aAAa,CAAC,KAAK,CAAC;IAC3C8R,KAAK,CAACE,GAAG,GACP,IAAI,CAACg\u002FD,kBAAkB,GACvB,aAAa,GACb,IAAI,CAACxpE,IAAI,CAACrV,IAAI,CAACyX,WAAW,CAAC,CAAC,GAC5B,MAAM;IACRkI,KAAK,CAAC\u002FR,YAAY,CAAC,cAAc,EAAE,4BAA4B,CAAC;IAChE+R,KAAK,CAAC\u002FR,YAAY,CAChB,gBAAgB,EAChB4hB,IAAI,CAACC,SAAS,CAAC;MAAEzhC,IAAI,EAAE,IAAI,CAACqnB,IAAI,CAACrV;IAAK,CAAC,CACzC,CAAC;IAED,IAAI,CAAC,IAAI,CAACqV,IAAI,CAAC4qE,QAAQ,IAAI,IAAI,CAACR,YAAY,EAAE;MAC5C,IAAI,CAAC2D,YAAY,CAAC,CAAC;IACrB;IAEA,IAAI,CAACj7D,SAAS,CAAC1Y,MAAM,CAACkQ,KAAK,CAAC;IAC5B,OAAO,IAAI,CAACwI,SAAS;EACvB;AACF;AAEA,MAAMk1D,uBAAuB,SAASgB,iBAAiB,CAAC;EACtDriE,MAAMA,CAAA,EAAG;IAEP,OAAO,IAAI,CAACmM,SAAS;EACvB;EAEA2+D,wBAAwBA,CAAC3pE,OAAO,EAAE;IAChC,IAAI,IAAI,CAAC9H,IAAI,CAAC04C,YAAY,EAAE;MAC1B,IAAI5wC,OAAO,CAAC4pE,eAAe,EAAE5hD,QAAQ,KAAK,QAAQ,EAAE;QAClDhoB,OAAO,CAAC4pE,eAAe,CAAC3K,MAAM,GAAG,IAAI;MACvC;MACAj\u002FD,OAAO,CAACi\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\u002FlE,KAAK,CAACk+D,MAAM,CAAC\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\u002FCyuE,oBAAoB,CAAC\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\u002FCyuE,oBAAoB,CAAC\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\u002FB;IACF;IAEAJ,aAAa,CAAC\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\u002FC,IAAI,CAAC\u002FiE,SAAS,CAAC1Y,MAAM,CAACy7E,aAAa,CAAC;IACpC,OAAO,IAAI,CAAC\u002FiE,SAAS;EACvB;AACF;AAEA,MAAMm1D,sBAAsB,SAASe,iBAAiB,CAAC;EACrDp+E,WAAWA,CAAC46B,UAAU,EAAE;IACtB,MAAM;MAAExlB,IAAI;MAAEkuE;IAAS,CAAC,GAAG1oD,UAAU;IACrC,KAAK,CAACA,UAAU,EAAE;MAAE4jD,YAAY,EAAEJ,iBAAiB,CAACgB,aAAa,CAAChqE,IAAI;IAAE,CAAC,CAAC;IAC1E,IAAI,CAACkuE,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAAC3D,KAAK,GAAG,IAAI;EACnB;EAEA5jE,MAAMA,CAAA,EAAG;IACP,IAAI,CAACmM,SAAS,CAAC7K,SAAS,CAACC,GAAG,CAAC,iBAAiB,CAAC;IAE\u002FC,MAAMqiE,KAAK,GAAI,IAAI,CAACA,KAAK,GAAG,IAAI0M,YAAY,CAAC;MAC3CnkE,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBpX,KAAK,EAAE,IAAI,CAACsE,IAAI,CAACtE,KAAK;MACtBuuE,QAAQ,EAAE,IAAI,CAACjqE,IAAI,CAACiqE,QAAQ;MAC5B+D,gBAAgB,EAAE,IAAI,CAAChuE,IAAI,CAACguE,gBAAgB;MAC5C9D,WAAW,EAAE,IAAI,CAAClqE,IAAI,CAACkqE,WAAW;MAClCC,QAAQ,EAAE,IAAI,CAACnqE,IAAI,CAACmqE,QAAQ;MAC5Br5E,IAAI,EAAE,IAAI,CAACkP,IAAI,CAAClP,IAAI;MACpBm9E,UAAU,EAAE,IAAI,CAACjuE,IAAI,CAACiuE,UAAU,IAAI,IAAI;MACxCtkE,MAAM,EAAE,IAAI,CAACA,MAAM;MACnBukE,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvB3uE,IAAI,EAAE,IAAI,CAACS,IAAI,CAACT;IAClB,CAAC,CAAE;IAEH,MAAM23E,UAAU,GAAG,EAAE;IACrB,KAAK,MAAMpvE,OAAO,IAAI,IAAI,CAAComE,QAAQ,EAAE;MACnCpmE,OAAO,CAACyiE,KAAK,GAAGA,KAAK;MACrB2M,UAAU,CAAC5qF,IAAI,CAACwb,OAAO,CAAC9H,IAAI,CAAC7G,EAAE,CAAC;MAChC2O,OAAO,CAACgnE,gBAAgB,CAAC,CAAC;IAC5B;IAEA,IAAI,CAACh8D,SAAS,CAACva,YAAY,CACzB,eAAe,EACf2+E,UAAU,CAAClqF,GAAG,CAACmM,EAAE,IAAK,GAAE1D,gBAAiB,GAAE0D,EAAG,EAAC,CAAC,CAAC5M,IAAI,CAAC,GAAG,CAC3D,CAAC;IAED,OAAO,IAAI,CAACumB,SAAS;EACvB;AACF;AAEA,MAAMmkE,YAAY,CAAC;EACjB,CAACE,YAAY,GAAG,IAAI,CAAC,CAACH,OAAO,CAAC76E,IAAI,CAAC,IAAI,CAAC;EAExC,CAACi7E,SAAS,GAAG,IAAI,CAAC,CAACpvE,IAAI,CAAC7L,IAAI,CAAC,IAAI,CAAC;EAElC,CAACk7E,SAAS,GAAG,IAAI,CAAC,CAACjvE,IAAI,CAACjM,IAAI,CAAC,IAAI,CAAC;EAElC,CAACm7E,WAAW,GAAG,IAAI,CAAC,CAAC9gE,MAAM,CAACra,IAAI,CAAC,IAAI,CAAC;EAEtC,CAACT,KAAK,GAAG,IAAI;EAEb,CAACoX,SAAS,GAAG,IAAI;EAEjB,CAACo3D,WAAW,GAAG,IAAI;EAEnB,CAACqN,OAAO,GAAG,IAAI;EAEf,CAACrJ,QAAQ,GAAG,IAAI;EAEhB,CAACvkE,MAAM,GAAG,IAAI;EAEd,CAACskE,UAAU,GAAG,IAAI;EAElB,CAACuJ,MAAM,GAAG,KAAK;EAEf,CAACjN,KAAK,GAAG,IAAI;EAEb,CAACxwE,QAAQ,GAAG,IAAI;EAEhB,CAACjJ,IAAI,GAAG,IAAI;EAEZ,CAACq5E,QAAQ,GAAG,IAAI;EAEhB,CAACF,QAAQ,GAAG,IAAI;EAEhB,CAAChB,OAAO,GAAG,IAAI;EAEf,CAACwO,UAAU,GAAG,KAAK;EAEnB7sF,WAAWA,CAAC;IACVkoB,SAAS;IACTpX,KAAK;IACLwyE,QAAQ;IACRjE,QAAQ;IACR+D,gBAAgB;IAChB9D,WAAW;IACXC,QAAQ;IACRxgE,MAAM;IACN7Y,IAAI;IACJm9E,UAAU;IACV1uE;EACF,CAAC,EAAE;IACD,IAAI,CAAC,CAACuT,SAAS,GAAGA,SAAS;IAC3B,IAAI,CAAC,CAACm3D,QAAQ,GAAGA,QAAQ;IACzB,IAAI,CAAC,CAACC,WAAW,GAAGA,WAAW;IAC\u002FB,IAAI,CAAC,CAACC,QAAQ,GAAGA,QAAQ;IACzB,IAAI,CAAC,CAACxgE,MAAM,GAAGA,MAAM;IACrB,IAAI,CAAC,CAACjO,KAAK,GAAGA,KAAK;IACnB,IAAI,CAAC,CAAC5K,IAAI,GAAGA,IAAI;IACjB,IAAI,CAAC,CAACm9E,UAAU,GAAGA,UAAU;IAC7B,IAAI,CAAC,CAACC,QAAQ,GAAGA,QAAQ;IAKzB,IAAI,CAAC,CAACqJ,OAAO,GAAGxzE,aAAa,CAACC,YAAY,CAACgqE,gBAAgB,CAAC;IAE5D,IAAI,CAAC0J,OAAO,GAAGxJ,QAAQ,CAACyJ,OAAO,CAACh0E,CAAC,IAAIA,CAAC,CAACkrE,yBAAyB,CAAC,CAAC,CAAC;IAEnE,KAAK,MAAM\u002FmE,OAAO,IAAI,IAAI,CAAC4vE,OAAO,EAAE;MAClC5vE,OAAO,CAAChB,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAACwwE,WAAW,CAAC;MACpDxvE,OAAO,CAAChB,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,CAACuwE,SAAS,CAAC;MACvDvvE,OAAO,CAAChB,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,CAACswE,SAAS,CAAC;MACvDtvE,OAAO,CAACG,SAAS,CAACC,GAAG,CAAC,kBAAkB,CAAC;IAC3C;IAGA,KAAK,MAAMJ,OAAO,IAAIomE,QAAQ,EAAE;MAC9BpmE,OAAO,CAACgL,SAAS,EAAEhM,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAACqwE,YAAY,CAAC;IACpE;IAEA,IAAI,CAAC,CAACrkE,SAAS,CAACi0D,MAAM,GAAG,IAAI;IAC7B,IAAIxnE,IAAI,EAAE;MACR,IAAI,CAAC,CAACiX,MAAM,CAAC,CAAC;IAChB;EAWF;EAEA7P,MAAMA,CAAA,EAAG;IACP,IAAI,IAAI,CAAC,CAAC4jE,KAAK,EAAE;MACf;IACF;IAEA,MAAMA,KAAK,GAAI,IAAI,CAAC,CAACA,KAAK,GAAGtxE,QAAQ,CAACT,aAAa,CAAC,KAAK,CAAE;IAC3D+xE,KAAK,CAAC1jE,SAAS,GAAG,OAAO;IAEzB,IAAI,IAAI,CAAC,CAACnL,KAAK,EAAE;MACf,MAAMk8E,SAAS,GAAIrN,KAAK,CAAC3wE,KAAK,CAACi+E,YAAY,GAAGlpF,IAAI,CAACC,YAAY,CAC7D,GAAG,IAAI,CAAC,CAAC8M,KACX,CAAE;MACF,IAEEvN,GAAG,CAACC,QAAQ,CAAC,kBAAkB,EAAE,oCAAoC,CAAC,EACtE;QACAm8E,KAAK,CAAC3wE,KAAK,CAAC+kC,eAAe,GAAI,sBAAqBi5C,SAAU,cAAa;MAC7E,CAAC,MAAM;QAKL,MAAME,kBAAkB,GAAG,GAAG;QAC9BvN,KAAK,CAAC3wE,KAAK,CAAC+kC,eAAe,GAAGhwC,IAAI,CAACC,YAAY,CAC7C,GAAG,IAAI,CAAC,CAAC8M,KAAK,CAAC1O,GAAG,CAACuD,CAAC,IAClBrE,IAAI,CAACqJ,KAAK,CAACuiF,kBAAkB,IAAI,GAAG,GAAGvnF,CAAC,CAAC,GAAGA,CAAC,CAC\u002FC,CACF,CAAC;MACH;IACF;IAEA,MAAMwnF,MAAM,GAAG9+E,QAAQ,CAACT,aAAa,CAAC,MAAM,CAAC;IAC7Cu\u002FE,MAAM,CAAClxE,SAAS,GAAG,QAAQ;IAC3B,MAAMikE,KAAK,GAAG7xE,QAAQ,CAACT,aAAa,CAAC,IAAI,CAAC;IAC1Cu\u002FE,MAAM,CAAC39E,MAAM,CAAC0wE,KAAK,CAAC;IACpB,CAAC;MAAExa,GAAG,EAAEwa,KAAK,CAACxa,GAAG;MAAE7jE,GAAG,EAAEq+E,KAAK,CAACjoD;IAAY,CAAC,GAAG,IAAI,CAAC,CAAConD,QAAQ;IAC5DM,KAAK,CAACnwE,MAAM,CAAC29E,MAAM,CAAC;IAEpB,IAAI,IAAI,CAAC,CAACR,OAAO,EAAE;MACjB,MAAMvJ,gBAAgB,GAAG\u002F0E,QAAQ,CAACT,aAAa,CAAC,MAAM,CAAC;MACvDw1E,gBAAgB,CAAC\u002FlE,SAAS,CAACC,GAAG,CAAC,WAAW,CAAC;MAC3C8lE,gBAAgB,CAACz1E,YAAY,CAC3B,cAAc,EACd,8BACF,CAAC;MACDy1E,gBAAgB,CAACz1E,YAAY,CAC3B,gBAAgB,EAChB4hB,IAAI,CAACC,SAAS,CAAC;QACbjmB,IAAI,EAAE,IAAI,CAAC,CAACojF,OAAO,CAACS,kBAAkB,CAAC,CAAC;QACxC50E,IAAI,EAAE,IAAI,CAAC,CAACm0E,OAAO,CAACU,kBAAkB,CAAC;MACzC,CAAC,CACH,CAAC;MACDF,MAAM,CAAC39E,MAAM,CAAC4zE,gBAAgB,CAAC;IACjC;IAEA,MAAM3I,IAAI,GAAG,IAAI,CAAC,CAACA,IAAI;IACvB,IAAIA,IAAI,EAAE;MACRF,QAAQ,CAACx+D,MAAM,CAAC;QACd2\u002FD,OAAO,EAAEjB,IAAI;QACb7zB,MAAM,EAAE,UAAU;QAClB73C,GAAG,EAAE4wE;MACP,CAAC,CAAC;MACFA,KAAK,CAAC57C,SAAS,CAAC1mB,SAAS,CAACC,GAAG,CAAC,UAAU,EAAE,cAAc,CAAC;IAC3D,CAAC,MAAM;MACL,MAAMgwE,QAAQ,GAAG,IAAI,CAACC,eAAe,CAAC,IAAI,CAAC,CAACjO,WAAW,CAAC;MACxDK,KAAK,CAACnwE,MAAM,CAAC89E,QAAQ,CAAC;IACxB;IACA,IAAI,CAAC,CAACplE,SAAS,CAAC1Y,MAAM,CAACmwE,KAAK,CAAC;EAC\u002FB;EAEA,IAAI,CAAClF,IAAI+S,CAAA,EAAG;IACV,MAAMjO,QAAQ,GAAG,IAAI,CAAC,CAACA,QAAQ;IAC\u002FB,MAAMD,WAAW,GAAG,IAAI,CAAC,CAACA,WAAW;IACrC,IACEC,QAAQ,EAAE19E,GAAG,KACZ,CAACy9E,WAAW,EAAEz9E,GAAG,IAAIy9E,WAAW,CAACz9E,GAAG,KAAK09E,QAAQ,CAAC19E,GAAG,CAAC,EACvD;MACA,OAAO,IAAI,CAAC,CAAC09E,QAAQ,CAAC9E,IAAI,IAAI,IAAI;IACpC;IACA,OAAO,IAAI;EACb;EAEA,IAAI,CAACr9B,QAAQqwC,CAAA,EAAG;IACd,OAAO,IAAI,CAAC,CAAChT,IAAI,EAAErgE,UAAU,EAAEpL,KAAK,EAAEouC,QAAQ,IAAI,CAAC;EACrD;EAEA,IAAI,CAAC0qC,SAAS4F,CAAA,EAAG;IACf,OAAO,IAAI,CAAC,CAACjT,IAAI,EAAErgE,UAAU,EAAEpL,KAAK,EAAE8B,KAAK,IAAI,IAAI;EACrD;EAEA,CAAC68E,gBAAgBC,CAACv5E,IAAI,EAAE;IACtB,MAAMw5E,UAAU,GAAG,EAAE;IACrB,MAAMC,YAAY,GAAG;MACnBjsF,GAAG,EAAEwS,IAAI;MACTomE,IAAI,EAAE;QACJ16E,IAAI,EAAE,KAAK;QACXqa,UAAU,EAAE;UACVsrD,GAAG,EAAE;QACP,CAAC;QACDriC,QAAQ,EAAE,CACR;UACEtjC,IAAI,EAAE,GAAG;UACTsjC,QAAQ,EAAEwqD;QACZ,CAAC;MAEL;IACF,CAAC;IACD,MAAME,cAAc,GAAG;MACrB\u002F+E,KAAK,EAAE;QACL8B,KAAK,EAAE,IAAI,CAAC,CAACg3E,SAAS;QACtB1qC,QAAQ,EAAE,IAAI,CAAC,CAACA,QAAQ,GACnB,QAAO,IAAI,CAAC,CAACA,QAAS,2BAA0B,GACjD;MACN;IACF,CAAC;IACD,KAAK,MAAM4wC,IAAI,IAAI35E,IAAI,CAACuD,KAAK,CAAC,IAAI,CAAC,EAAE;MACnCi2E,UAAU,CAACnsF,IAAI,CAAC;QACd3B,IAAI,EAAE,MAAM;QACZV,KAAK,EAAE2uF,IAAI;QACX5zE,UAAU,EAAE2zE;MACd,CAAC,CAAC;IACJ;IACA,OAAOD,YAAY;EACrB;EAUAP,eAAeA,CAAC;IAAE1rF,GAAG;IAAE6jE;EAAI,CAAC,EAAE;IAC5B,MAAMhhE,CAAC,GAAG2J,QAAQ,CAACT,aAAa,CAAC,GAAG,CAAC;IACrClJ,CAAC,CAAC2Y,SAAS,CAACC,GAAG,CAAC,cAAc,CAAC;IAC\u002FB5Y,CAAC,CAACghE,GAAG,GAAGA,GAAG;IACX,MAAMuoB,KAAK,GAAGpsF,GAAG,CAAC+V,KAAK,CAAC,cAAc,CAAC;IACvC,KAAK,IAAIxW,CAAC,GAAG,CAAC,EAAEuH,EAAE,GAAGslF,KAAK,CAACpvF,MAAM,EAAEuC,CAAC,GAAGuH,EAAE,EAAE,EAAEvH,CAAC,EAAE;MAC9C,MAAM4sF,IAAI,GAAGC,KAAK,CAAC7sF,CAAC,CAAC;MACrBsD,CAAC,CAAC8K,MAAM,CAACnB,QAAQ,CAACytE,cAAc,CAACkS,IAAI,CAAC,CAAC;MACvC,IAAI5sF,CAAC,GAAGuH,EAAE,GAAG,CAAC,EAAE;QACdjE,CAAC,CAAC8K,MAAM,CAACnB,QAAQ,CAACT,aAAa,CAAC,IAAI,CAAC,CAAC;MACxC;IACF;IACA,OAAOlJ,CAAC;EACV;EAEA,CAAC0nF,OAAO8B,CAAChrE,KAAK,EAAE;IACd,IAAIA,KAAK,CAACC,MAAM,IAAID,KAAK,CAACI,QAAQ,IAAIJ,KAAK,CAACE,OAAO,IAAIF,KAAK,CAACG,OAAO,EAAE;MACpE;IACF;IAEA,IAAIH,KAAK,CAAC5gB,GAAG,KAAK,OAAO,IAAK4gB,KAAK,CAAC5gB,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,CAACsqF,MAAO,EAAE;MACrE,IAAI,CAAC,CAAChhE,MAAM,CAAC,CAAC;IAChB;EACF;EAEA6zD,YAAYA,CAAC;IAAEv5E,IAAI;IAAE4nF;EAAa,CAAC,EAAE;IACnC,IAAI,CAAC,CAACzP,OAAO,KAAK;MAChBiB,WAAW,EAAE,IAAI,CAAC,CAACA,WAAW;MAC9BC,QAAQ,EAAE,IAAI,CAAC,CAACA;IAClB,CAAC;IACD,IAAIr5E,IAAI,EAAE;MACR,IAAI,CAAC,CAACiJ,QAAQ,GAAG,IAAI;IACvB;IACA,IAAI2+E,YAAY,EAAE;MAChB,IAAI,CAAC,CAACvO,QAAQ,GAAG,IAAI,CAAC,CAACoO,gBAAgB,CAACG,YAAY,CAAC;MACrD,IAAI,CAAC,CAACxO,WAAW,GAAG,IAAI;IAC1B;IACA,IAAI,CAAC,CAACK,KAAK,EAAEjvE,MAAM,CAAC,CAAC;IACrB,IAAI,CAAC,CAACivE,KAAK,GAAG,IAAI;EACpB;EAEAC,WAAWA,CAAA,EAAG;IACZ,IAAI,CAAC,IAAI,CAAC,CAACvB,OAAO,EAAE;MAClB;IACF;IACA,CAAC;MAAEiB,WAAW,EAAE,IAAI,CAAC,CAACA,WAAW;MAAEC,QAAQ,EAAE,IAAI,CAAC,CAACA;IAAS,CAAC,GAC3D,IAAI,CAAC,CAAClB,OAAO;IACf,IAAI,CAAC,CAACA,OAAO,GAAG,IAAI;IACpB,IAAI,CAAC,CAACsB,KAAK,EAAEjvE,MAAM,CAAC,CAAC;IACrB,IAAI,CAAC,CAACivE,KAAK,GAAG,IAAI;IAClB,IAAI,CAAC,CAACxwE,QAAQ,GAAG,IAAI;EACvB;EAEA,CAACg\u002FE,WAAWC,CAAA,EAAG;IACb,IAAI,IAAI,CAAC,CAACj\u002FE,QAAQ,KAAK,IAAI,EAAE;MAC3B;IACF;IACA,MAAM;MACJ4mE,IAAI,EAAE;QAAEhhB;MAAK,CAAC;MACd75C,QAAQ,EAAE;QACR1E,OAAO,EAAE;UAAEC,SAAS;UAAEC,UAAU;UAAEC,KAAK;UAAEC;QAAM;MACjD;IACF,CAAC,GAAG,IAAI,CAAC,CAACmI,MAAM;IAEhB,IAAIsvE,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,CAAChL,UAAU;IACtC,IAAIn9E,IAAI,GAAGmoF,aAAa,GAAG,IAAI,CAAC,CAAChL,UAAU,GAAG,IAAI,CAAC,CAACn9E,IAAI;IACxD,KAAK,MAAMgX,OAAO,IAAI,IAAI,CAAC,CAAComE,QAAQ,EAAE;MACpC,IAAI,CAACp9E,IAAI,IAAInC,IAAI,CAACoC,SAAS,CAAC+W,OAAO,CAAC9H,IAAI,CAAClP,IAAI,EAAEA,IAAI,CAAC,KAAK,IAAI,EAAE;QAC7DA,IAAI,GAAGgX,OAAO,CAAC9H,IAAI,CAAClP,IAAI;QACxBmoF,aAAa,GAAG,IAAI;QACpB;MACF;IACF;IAEA,MAAMC,cAAc,GAAGvqF,IAAI,CAACkC,aAAa,CAAC,CACxCC,IAAI,CAAC,CAAC,CAAC,EACP6uD,IAAI,CAAC,CAAC,CAAC,GAAG7uD,IAAI,CAAC,CAAC,CAAC,GAAG6uD,IAAI,CAAC,CAAC,CAAC,EAC3B7uD,IAAI,CAAC,CAAC,CAAC,EACP6uD,IAAI,CAAC,CAAC,CAAC,GAAG7uD,IAAI,CAAC,CAAC,CAAC,GAAG6uD,IAAI,CAAC,CAAC,CAAC,CAC5B,CAAC;IAEF,MAAMw5B,iCAAiC,GAAG,CAAC;IAC3C,MAAM53D,WAAW,GAAG03D,aAAa,GAC7BnoF,IAAI,CAAC,CAAC,CAAC,GAAGA,IAAI,CAAC,CAAC,CAAC,GAAGqoF,iCAAiC,GACrD,CAAC;IACL,MAAMC,SAAS,GAAGF,cAAc,CAAC,CAAC,CAAC,GAAG33D,WAAW;IACjD,MAAM83D,QAAQ,GAAGH,cAAc,CAAC,CAAC,CAAC;IAClC,IAAI,CAAC,CAACn\u002FE,QAAQ,GAAG,CACd,GAAG,IAAIq\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\u002FE,MAAM,CAAC;IAClB,IAAI,CAAC\u002FmE,SAAS,CAAC1Y,MAAM,CAAC\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\u002FBkP,iBAAiB,EAAE+P,MAAM,CAAC\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\u002FE,IAAI,CAAC,IAAI,CAAC;EAEnD,CAAC8\u002FE,mBAAmB,GAAG,IAAI,CAACC,cAAc,CAAC\u002F\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\u002FBgR,IAAI,EAAEm\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\u002FH,EAAE,EAAEC,EAAE,CAAC;QAC\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\u002FnE,aAAa;MAC3CkoE,WAAW,CAAC\u002FyF,IAAI,CACd4yF,cAAc,CAACL,SAAS,CAAC9uF,KAAK,CAACovF,WAAW,CAAC,CAAC9rF,UAAU,CAACwoF,WAAW,EAAE,EAAE,CACxE,CAAC;MACD,IAAIlyE,MAAM,KAAK,IAAI,CAACwzE,SAAS,EAAE;QAC7B,IAAI5vF,MAAM,GAAG6xF,YAAY;QACzB,KAAK,MAAMxwD,KAAK,IAAI,IAAI,CAACuuD,SAAS,CAACU,UAAU,EAAE;UAC7C,IAAIjvD,KAAK,KAAKjlB,MAAM,EAAE;YACpBpc,MAAM,GAAG8xF,WAAW;YACpB;UACF;UACA9xF,MAAM,CAACjB,IAAI,CAACwvF,cAAc,CAAC,CAACgC,cAAc,CAAClvD,KAAK,CAAC,CAAC;QACpD;MACF;MACAwwD,YAAY,CAAC9yF,IAAI,CACf4yF,cAAc,CAACL,SAAS,CACrB9uF,KAAK,CAAC,CAAC,EAAEovF,WAAW,CAAC,CACrB9rF,UAAU,CAACwoF,WAAW,EAAE,EAAE,CAC\u002FB,CAAC;IACH,CAAC,MAAM,IAAIqD,cAAc,KAAK,IAAI,CAAC\u002FB,SAAS,EAAE;MAC5C,IAAI5vF,MAAM,GAAG6xF,YAAY;MACzB,IAAIpzF,CAAC,GAAG,CAAC;MACT,KAAK,MAAM4iC,KAAK,IAAI,IAAI,CAACuuD,SAAS,CAACU,UAAU,EAAE;QAC7C,IAAI7xF,CAAC,EAAE,KAAKmzF,WAAW,EAAE;UACvB5xF,MAAM,GAAG8xF,WAAW;QACtB;QACA9xF,MAAM,CAACjB,IAAI,CAACwvF,cAAc,CAAC,CAACgC,cAAc,CAAClvD,KAAK,CAAC,CAAC;MACpD;IACF;IACA,IAAI,CAAC,CAACgB,OAAO,GAAI,GAAEwvD,YAAY,CAAC7yF,IAAI,CAAC,IAAI,CAAE,GAAEilB,KAAM,GAAE6tE,WAAW,CAAC9yF,IAAI,CAAC,IAAI,CAAE,EAAC;IAC7E,IAAI,CAAC,CAAC+xF,UAAU,CAAC,CAAC;IAGlB,MAAMgB,QAAQ,GAAG,IAAIlyB,KAAK,CAAC,CAAC;IAC5B,IAAImyB,YAAY,GAAGH,YAAY,CAACI,MAAM,CAAC,CAACC,GAAG,EAAE7G,IAAI,KAAK6G,GAAG,GAAG7G,IAAI,CAACnvF,MAAM,EAAE,CAAC,CAAC;IAC3E,KAAK,MAAM;MAAEglC;IAAW,CAAC,IAAI,IAAI,CAAC0uD,SAAS,CAACU,UAAU,EAAE;MAEtD,IAAIpvD,UAAU,CAACzX,QAAQ,KAAKC,IAAI,CAACC,SAAS,EAAE;QAC1C,MAAMztB,MAAM,GAAGglC,UAAU,CAACowD,SAAS,CAACp1F,MAAM;QAC1C,IAAI81F,YAAY,IAAI91F,MAAM,EAAE;UAC1B61F,QAAQ,CAACI,QAAQ,CAACjxD,UAAU,EAAE8wD,YAAY,CAAC;UAC3CD,QAAQ,CAACK,MAAM,CAAClxD,UAAU,EAAE8wD,YAAY,CAAC;UACzC;QACF;QACAA,YAAY,IAAI91F,MAAM;MACxB;IACF;IACA4tB,SAAS,CAACuoE,eAAe,CAAC,CAAC;IAC3BvoE,SAAS,CAACwoE,QAAQ,CAACP,QAAQ,CAAC;EAC9B;EAEA,CAAChB,UAAUwB,CAAA,EAAG;IACZ,IAAI,CAAC3C,SAAS,CAAC4C,eAAe,CAAC,CAAC;IAChC,IAAI,CAAC,IAAI,CAAC,CAACnwD,OAAO,EAAE;MAClB;IACF;IACA,KAAK,MAAMgpD,IAAI,IAAI,IAAI,CAAC,CAAChpD,OAAO,CAACptB,KAAK,CAAC,IAAI,CAAC,EAAE;MAC5C,MAAM7I,GAAG,GAAGV,QAAQ,CAACT,aAAa,CAAC,KAAK,CAAC;MACzCmB,GAAG,CAACS,MAAM,CACRw+E,IAAI,GAAG3\u002FE,QAAQ,CAACytE,cAAc,CAACkS,IAAI,CAAC,GAAG3\u002FE,QAAQ,CAACT,aAAa,CAAC,IAAI,CACpE,CAAC;MACD,IAAI,CAAC2kF,SAAS,CAAC\u002FiF,MAAM,CAACT,GAAG,CAAC;IAC5B;EACF;EAEA,CAACqmF,gBAAgBC,CAAA,EAAG;IAClB,OAAO,IAAI,CAAC,CAACrwD,OAAO,CAACv8B,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC;EAC9C;EAEA,OAAO,CAACyrF,kBAAkBoB,CAACtwD,OAAO,EAAE;IAClC,OAAOA,OAAO,CAACv8B,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;EACxC;EAGA,IAAIk8B,UAAUA,CAAA,EAAG;IACf,OAAO,IAAI,CAAC4tD,SAAS;EACvB;EAGA,OAAOriE,WAAWA,CAAC9a,IAAI,EAAE2J,MAAM,EAAEV,SAAS,EAAE;IAC1C,IAAI04C,WAAW,GAAG,IAAI;IACtB,IAAI3hD,IAAI,YAAYkoE,yBAAyB,EAAE;MAC7C,MAAM;QACJloE,IAAI,EAAE;UACJ2yE,qBAAqB,EAAE;YAAE3qC,QAAQ;YAAE0qC;UAAU,CAAC;UAC9C5hF,IAAI;UACJ0P,QAAQ;UACRrH;QACF,CAAC;QACD0pB,WAAW;QACX42D,YAAY;QACZ9vE,MAAM,EAAE;UACNg3D,IAAI,EAAE;YAAE1qD;UAAW;QACrB;MACF,CAAC,GAAGjW,IAAI;MAGR,IAAI,CAAC6iB,WAAW,IAAIA,WAAW,CAACp5B,MAAM,KAAK,CAAC,EAAE;QAE5C,OAAO,IAAI;MACb;MACAk4D,WAAW,GAAG3hD,IAAI,GAAG;QACnBonE,cAAc,EAAEntF,oBAAoB,CAACE,QAAQ;QAC7CuhB,KAAK,EAAEpN,KAAK,CAACC,IAAI,CAACmkF,SAAS,CAAC;QAC5B1qC,QAAQ;QACR\u002F9C,KAAK,EAAE44B,WAAW,CAACt2B,IAAI,CAAC,IAAI,CAAC;QAC7BwN,QAAQ,EAAE0\u002FE,YAAY;QACtBz9D,SAAS,EAAE\u002FF,UAAU,GAAG,CAAC;QACzBnlB,IAAI,EAAEA,IAAI,CAACf,KAAK,CAAC,CAAC,CAAC;QACnByQ,QAAQ;QACRrH,EAAE;QACFklB,OAAO,EAAE;MACX,CAAC;IACH;IACA,MAAM5X,MAAM,GAAG,KAAK,CAACqU,WAAW,CAAC9a,IAAI,EAAE2J,MAAM,EAAEV,SAAS,CAAC;IACzDxC,MAAM,CAAC,CAACuhC,QAAQ,GAAGhoC,IAAI,CAACgoC,QAAQ;IAChCvhC,MAAM,CAAC,CAAC\u002FK,KAAK,GAAG\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\u002FC,MAAMr\u002FC,UAAU,GAAGpE,IAAI,GAAGD,IAAI,GAAG,CAAC,GAAG0jD,WAAW;IAChD,MAAMI,WAAW,GAAGv3C,IAAI,GAAGm3C,WAAW;IACtC,MAAMK,WAAW,GAAG\u002FjD,IAAI,GAAG0jD,WAAW;IACtC,MAAMM,QAAQ,GAAG,IAAI,CAAC,CAACR,aAAa,CAAC7yE,EAAE,CAACpE,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACxD,MAAM03E,SAAS,GAAG,CAACD,QAAQ,CAAC,CAAC,CAAC,EAAEA,QAAQ,CAAC,CAAC,CAAC,CAAC;IAG5C,KAAK,MAAME,IAAI,IAAI,IAAI,CAAC,CAACV,aAAa,EAAE;MACtC,MAAM,CAACpuF,CAAC,EAAEP,EAAE,EAAEC,EAAE,CAAC,GAAGovF,IAAI;MACxBA,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC9uF,CAAC,GAAG0uF,WAAW,IAAI1\u002FC,SAAS;MACvC8\u002FC,IAAI,CAAC,CAAC,CAAC,GAAG,CAACrvF,EAAE,GAAGkvF,WAAW,IAAI1\u002FC,UAAU;MACzC6\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\u002F\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\u002FoC,GAAG;IAC3D,MAAM\u002FY,EAAE,GAAGuG,KAAK,GAAGs7C,UAAU;IAC7B,MAAM5hD,EAAE,GAAGuG,MAAM,GAAGs7C,WAAW;IAC\u002FB,MAAM\u002FxB,EAAE,GAAGtuB,CAAC,GAAGogD,UAAU,GAAGp8B,MAAM;IAClC,MAAMuK,EAAE,GAAGtuB,CAAC,GAAGogD,WAAW,GAAGp8B,MAAM;IACnC,MAAM6uE,QAAQ,GAAG,IAAIlC,YAAY,CAC\u002FB;MACE5wF,CAAC,EAAE,IAAI,CAAC,CAAC80C,MAAM,CAAC,CAAC,CAAC,GAAGv2C,EAAE,GAAG+vB,EAAE;MAC5BruB,CAAC,EAAE,IAAI,CAAC,CAAC60C,MAAM,CAAC,CAAC,CAAC,GAAGt2C,EAAE,GAAG+vB;IAC5B,CAAC,EACD,IAAI,CAAC,CAACjX,GAAG,EACT,IAAI,CAAC,CAAC25E,WAAW,EACjBC,SAAS,EACT,IAAI,CAAC,CAAC\u002F5E,KAAK,EACXm3E,WAAW,IAAI,IAAI,CAAC,CAACA,WACvB,CAAC;IACD,KAAK,IAAI10F,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,IAAI,CAAC,CAACk7C,MAAM,CAACz9C,MAAM,EAAEuC,CAAC,IAAI,CAAC,EAAE;MAC\u002FCk5F,QAAQ,CAACh9E,GAAG,CAAC;QACX9V,CAAC,EAAE,IAAI,CAAC,CAAC80C,MAAM,CAACl7C,CAAC,CAAC,GAAG2E,EAAE,GAAG+vB,EAAE;QAC5BruB,CAAC,EAAE,IAAI,CAAC,CAAC60C,MAAM,CAACl7C,CAAC,GAAG,CAAC,CAAC,GAAG4E,EAAE,GAAG+vB;MAChC,CAAC,CAAC;IACJ;IACA,OAAOukE,QAAQ,CAAC\u002FD,WAAW,CAAC,CAAC;EAC\u002FB;AACF;;;AC74B0E;AAC7B;AACO;AAEpD,MAAMgE,WAAW,CAAC;EAChB,CAAChO,YAAY,GAAG,IAAI,CAAC,CAACH,OAAO,CAAC76E,IAAI,CAAC,IAAI,CAAC;EAExC,CAACipF,gBAAgB,GAAG,IAAI,CAAC,CAACr+E,WAAW,CAAC5K,IAAI,CAAC,IAAI,CAAC;EAEhD,CAACmM,MAAM,GAAG,IAAI;EAEd,CAAC+8E,YAAY,GAAG,IAAI;EAEpB,CAACC,YAAY;EAEb,CAACC,QAAQ,GAAG,IAAI;EAEhB,CAACC,uBAAuB,GAAG,KAAK;EAEhC,CAACC,iBAAiB,GAAG,KAAK;EAE1B,CAACh\u002FE,MAAM,GAAG,IAAI;EAEd,CAAC6N,QAAQ;EAET,CAACrL,SAAS,GAAG,IAAI;EAEjB,CAACtwB,IAAI;EAEL,WAAWu6B,gBAAgBA,CAAA,EAAG;IAC5B,OAAOppB,MAAM,CACX,IAAI,EACJ,kBAAkB,EAClB,IAAIujB,eAAe,CAAC,CAClB,CACE,CAAC,QAAQ,EAAE,YAAY,CAAC,EACxB83E,WAAW,CAACt6F,SAAS,CAAC66F,yBAAyB,CAChD,EACD,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,EAAEP,WAAW,CAACt6F,SAAS,CAAC86F,wBAAwB,CAAC,EAChE,CACE,CAAC,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,CAAC,EAC9DR,WAAW,CAACt6F,SAAS,CAAC+6F,WAAW,CAClC,EACD,CACE,CAAC,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,CAAC,EACxDT,WAAW,CAACt6F,SAAS,CAACg7F,eAAe,CACtC,EACD,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,EAAEV,WAAW,CAACt6F,SAAS,CAACi7F,gBAAgB,CAAC,EAC9D,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,EAAEX,WAAW,CAACt6F,SAAS,CAACk7F,UAAU,CAAC,CACvD,CACH,CAAC;EACH;EAEAn7F,WAAWA,CAAC;IAAE6b,MAAM,GAAG,IAAI;IAAEwC,SAAS,GAAG;EAAK,CAAC,EAAE;IAC\u002FC,IAAIxC,MAAM,EAAE;MACV,IAAI,CAAC,CAACg\u002FE,iBAAiB,GAAG,KAAK;MAC\u002FB,IAAI,CAAC,CAAC9sG,IAAI,GAAG4B,0BAA0B,CAACS,eAAe;MACvD,IAAI,CAAC,CAACyrB,MAAM,GAAGA,MAAM;IACvB,CAAC,MAAM;MACL,IAAI,CAAC,CAACg\u002FE,iBAAiB,GAAG,IAAI;MAC9B,IAAI,CAAC,CAAC9sG,IAAI,GAAG4B,0BAA0B,CAACU,uBAAuB;IACjE;IACA,IAAI,CAAC,CAACguB,SAAS,GAAGxC,MAAM,EAAEQ,UAAU,IAAIgC,SAAS;IACjD,IAAI,CAAC,CAACqL,QAAQ,GAAG,IAAI,CAAC,CAACrL,SAAS,CAACuL,SAAS;IAC1C,IAAI,CAAC,CAAC8wE,YAAY,GAChB7+E,MAAM,EAAE\u002FK,KAAK,IACb,IAAI,CAAC,CAACuN,SAAS,EAAEgH,eAAe,CAACkF,MAAM,CAAC,CAAC,CAACnI,IAAI,CAAC,CAAC,CAAC\u002FiB,KAAK,IACtD,SAAS;EACb;EAEA8e,YAAYA,CAAA,EAAG;IACb,MAAMT,MAAM,GAAI,IAAI,CAAC,CAACA,MAAM,GAAGrP,QAAQ,CAACT,aAAa,CAAC,QAAQ,CAAE;IAChE8P,MAAM,CAACzB,SAAS,GAAG,aAAa;IAChCyB,MAAM,CAACC,QAAQ,GAAG,GAAG;IACrBD,MAAM,CAAC\u002FP,YAAY,CAAC,cAAc,EAAE,iCAAiC,CAAC;IACtE+P,MAAM,CAAC\u002FP,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC;IAC1C+P,MAAM,CAACxB,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAACk\u002FE,YAAY,CAAC7pF,IAAI,CAAC,IAAI,CAAC,CAAC;IAC\u002FDmM,MAAM,CAACxB,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAACqwE,YAAY,CAAC;IACtD,MAAM8O,MAAM,GAAI,IAAI,CAAC,CAACZ,YAAY,GAAGpsF,QAAQ,CAACT,aAAa,CAAC,MAAM,CAAE;IACpEytF,MAAM,CAACp\u002FE,SAAS,GAAG,QAAQ;IAC3Bo\u002FE,MAAM,CAAC1tF,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC;IACxC0tF,MAAM,CAACrsF,KAAK,CAAC+kC,eAAe,GAAG,IAAI,CAAC,CAAC2mD,YAAY;IACjDh9E,MAAM,CAAClO,MAAM,CAAC6rF,MAAM,CAAC;IACrB,OAAO39E,MAAM;EACf;EAEA49E,kBAAkBA,CAAA,EAAG;IACnB,MAAMX,QAAQ,GAAI,IAAI,CAAC,CAACA,QAAQ,GAAG,IAAI,CAAC,CAACY,eAAe,CAAC,CAAE;IAC3DZ,QAAQ,CAAChtF,YAAY,CAAC,kBAAkB,EAAE,YAAY,CAAC;IACvDgtF,QAAQ,CAAChtF,YAAY,CAAC,iBAAiB,EAAE,2BAA2B,CAAC;IAErE,OAAOgtF,QAAQ;EACjB;EAEA,CAACY,eAAeC,CAAA,EAAG;IACjB,MAAMzsF,GAAG,GAAGV,QAAQ,CAACT,aAAa,CAAC,KAAK,CAAC;IACzCmB,GAAG,CAACmN,gBAAgB,CAAC,aAAa,EAAEpD,aAAa,CAAC;IAClD\u002FJ,GAAG,CAACkN,SAAS,GAAG,UAAU;IAC1BlN,GAAG,CAAC0sF,IAAI,GAAG,SAAS;IACpB1sF,GAAG,CAACpB,YAAY,CAAC,sBAAsB,EAAE,KAAK,CAAC;IAC\u002FCoB,GAAG,CAACpB,YAAY,CAAC,kBAAkB,EAAE,UAAU,CAAC;IAChDoB,GAAG,CAACpB,YAAY,CAAC,cAAc,EAAE,mCAAmC,CAAC;IACrE,KAAK,MAAM,CAAC5N,IAAI,EAAE+Q,KAAK,CAAC,IAAI,IAAI,CAAC,CAACuN,SAAS,CAACgH,eAAe,EAAE;MAC3D,MAAM3H,MAAM,GAAGrP,QAAQ,CAACT,aAAa,CAAC,QAAQ,CAAC;MAC\u002FC8P,MAAM,CAACC,QAAQ,GAAG,GAAG;MACrBD,MAAM,CAAC+9E,IAAI,GAAG,QAAQ;MACtB\u002F9E,MAAM,CAAC\u002FP,YAAY,CAAC,YAAY,EAAEmD,KAAK,CAAC;MACxC4M,MAAM,CAACwiE,KAAK,GAAGngF,IAAI;MACnB2d,MAAM,CAAC\u002FP,YAAY,CAAC,cAAc,EAAG,4BAA2B5N,IAAK,EAAC,CAAC;MACvE,MAAMs7F,MAAM,GAAGhtF,QAAQ,CAACT,aAAa,CAAC,MAAM,CAAC;MAC7C8P,MAAM,CAAClO,MAAM,CAAC6rF,MAAM,CAAC;MACrBA,MAAM,CAACp\u002FE,SAAS,GAAG,QAAQ;MAC3Bo\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\u002F\u002FE,MAAM,EAAEyX,QAAQ,CAAC,CAAC;MACxB;IACF;IACA,IAAI,CAAC\u002FV,YAAY,CAAC,CAAC;IACnB,IAAI,CAAC,CAACG,MAAM,CAAC4I,KAAK,CAAC;MACjBke,aAAa,EAAE,IAAI;MACnBnM,YAAY,EAAE,IAAI,CAAC,CAACuiE;IACtB,CAAC,CAAC;EACJ;EAEAvoE,WAAWA,CAACvhB,KAAK,EAAE;IACjB,IAAI,IAAI,CAAC,CAAC2pF,YAAY,EAAE;MACtB,IAAI,CAAC,CAACA,YAAY,CAACzrF,KAAK,CAAC+kC,eAAe,GAAGjjC,KAAK;IAClD;IACA,IAAI,CAAC,IAAI,CAAC,CAAC6pF,QAAQ,EAAE;MACnB;IACF;IAEA,MAAMv5F,CAAC,GAAG,IAAI,CAAC,CAACid,SAAS,CAACgH,eAAe,CAACkF,MAAM,CAAC,CAAC;IAClD,KAAK,MAAMyZ,KAAK,IAAI,IAAI,CAAC,CAAC22D,QAAQ,CAACt3D,QAAQ,EAAE;MAC3CW,KAAK,CAACr2B,YAAY,CAAC,eAAe,EAAEvM,CAAC,CAACghB,IAAI,CAAC,CAAC,CAAC\u002FiB,KAAK,KAAKyR,KAAK,CAAC;IAC\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\u002FD,WAAW,CAAC,CAAC;IAChD,CAAC;MACC\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\u002FC;QACF;IACF;IAEA,MAAM;MAAE2\u002FE;IAAU,CAAC,GAAG,IAAI,CAAC,CAAC6F,aAAa,CAACp9E,GAAG;IAC7C,IAAI,CAAC,CAACu3E,SAAS,GAAG,CAAC,CAACA,SAAS,CAAC,CAAC,CAAC,GAAG7uF,CAAC,IAAI8E,KAAK,EAAE,CAAC+pF,SAAS,CAAC,CAAC,CAAC,GAAG5uF,CAAC,IAAI8E,MAAM,CAAC;EAC7E;EAGA,OAAOwrB,UAAUA,CAAC6D,IAAI,EAAEvd,SAAS,EAAE;IACjC0a,gBAAgB,CAAChB,UAAU,CAAC6D,IAAI,EAAEvd,SAAS,CAAC;IAC5C29E,eAAe,CAAChK,aAAa,KAC3B3zE,SAAS,CAACgH,eAAe,EAAEkF,MAAM,CAAC,CAAC,CAACnI,IAAI,CAAC,CAAC,CAAC\u002FiB,KAAK,IAAI,SAAS;EACjE;EAGA,OAAOkzB,mBAAmBA,CAACxkC,IAAI,EAAEsR,KAAK,EAAE;IACtC,QAAQtR,IAAI;MACV,KAAK4B,0BAA0B,CAACU,uBAAuB;QACrD2rG,eAAe,CAAChK,aAAa,GAAG3yF,KAAK;QACrC;MACF,KAAK1P,0BAA0B,CAACW,mBAAmB;QACjD0rG,eAAe,CAACQ,iBAAiB,GAAGn9F,KAAK;QACzC;IACJ;EACF;EAGA41B,eAAeA,CAACztB,CAAC,EAAEC,CAAC,EAAE,CAAC;EAGvB,IAAI2U,eAAeA,CAAA,EAAG;IACpB,OAAO,IAAI,CAAC,CAACi6E,SAAS;EACxB;EAGAjkE,YAAYA,CAACrkC,IAAI,EAAEsR,KAAK,EAAE;IACxB,QAAQtR,IAAI;MACV,KAAK4B,0BAA0B,CAACS,eAAe;QAC7C,IAAI,CAAC,CAACiiC,WAAW,CAAChzB,KAAK,CAAC;QACxB;MACF,KAAK1P,0BAA0B,CAACW,mBAAmB;QACjD,IAAI,CAAC,CAACstG,eAAe,CAACv+F,KAAK,CAAC;QAC5B;IACJ;EACF;EAEA,WAAW4xB,yBAAyBA,CAAA,EAAG;IACrC,OAAO,CACL,CACEthC,0BAA0B,CAACU,uBAAuB,EAClD2rG,eAAe,CAAChK,aAAa,CAC9B,EACD,CACEriG,0BAA0B,CAACW,mBAAmB,EAC9C0rG,eAAe,CAACQ,iBAAiB,CAClC,CACF;EACH;EAGA,IAAIxoE,kBAAkBA,CAAA,EAAG;IACvB,OAAO,CACL,CACErkC,0BAA0B,CAACS,eAAe,EAC1C,IAAI,CAAC0gB,KAAK,IAAIkrF,eAAe,CAAChK,aAAa,CAC5C,EACD,CACEriG,0BAA0B,CAACW,mBAAmB,EAC9C,IAAI,CAAC,CAACooG,SAAS,IAAIsD,eAAe,CAACQ,iBAAiB,CACrD,EACD,CAAC7sG,0BAA0B,CAACY,cAAc,EAAE,IAAI,CAAC,CAAC8rG,eAAe,CAAC,CACnE;EACH;EAMA,CAAChqE,WAAWqgE,CAAC5hF,KAAK,EAAE;IAClB,MAAMmwE,QAAQ,GAAG0R,GAAG,IAAI;MACtB,IAAI,CAAC7hF,KAAK,GAAG6hF,GAAG;MAChB,IAAI,CAAC5zE,MAAM,EAAEu+E,SAAS,CAACO,WAAW,CAAC,IAAI,CAAC,CAACtvF,EAAE,EAAEokF,GAAG,CAAC;MACjD,IAAI,CAAC,CAAC\u002F2E,WAAW,EAAEyW,WAAW,CAACsgE,GAAG,CAAC;IACrC,CAAC;IACD,MAAMC,UAAU,GAAG,IAAI,CAAC9hF,KAAK;IAC7B,IAAI,CAACuf,WAAW,CAAC;MACfxO,GAAG,EAAEo\u002FD,QAAQ,CAAC1vE,IAAI,CAAC,IAAI,EAAET,KAAK,CAAC;MAC\u002FBgR,IAAI,EAAEm\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\u002FE,cAAc,GACZ,CAAC,IAAI,CAACv\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\u002F\u002FD,KAAK,CAAC;IAChD;IACA0\u002FD,SAAS,CAACv6D,MAAM,CAAC,IAAI,CAAC,CAACx0B,EAAE,EAAEqvB,KAAK,CAAC;IACjC0\u002FD,SAAS,CAACv6D,MAAM,CAAC,IAAI,CAAC,CAACu5D,SAAS,EAAE1+D,KAAK,CAAC;IACxC0\u002FD,SAAS,CAACI,SAAS,CAAC,IAAI,CAAC,CAACnvF,EAAE,EAAEuQ,GAAG,CAAC;IAClCw+E,SAAS,CAACI,SAAS,CACjB,IAAI,CAAC,CAACpB,SAAS,EACfN,eAAe,CAAC,CAAC2B,UAAU,CAAC,IAAI,CAAC,CAACzB,aAAa,CAACp9E,GAAG,EAAE8e,KAAK,CAC5D,CAAC;EACH;EAGA7hB,MAAMA,CAAA,EAAG;IACP,IAAI,IAAI,CAAChN,GAAG,EAAE;MACZ,OAAO,IAAI,CAACA,GAAG;IACjB;IAEA,MAAMA,GAAG,GAAG,KAAK,CAACgN,MAAM,CAAC,CAAC;IAC1B,IAAI,IAAI,CAAC,CAAC1H,IAAI,EAAE;MACdtF,GAAG,CAACpB,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC0G,IAAI,CAAC;MAC1CtF,GAAG,CAACpB,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC;IAClC;IACA,IAAI,IAAI,CAAC,CAAC0uF,eAAe,EAAE;MACzBttF,GAAG,CAACsO,SAAS,CAACC,GAAG,CAAC,MAAM,CAAC;IAC3B,CAAC,MAAM;MACL,IAAI,CAACvO,GAAG,CAACmN,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC2K,YAAY,CAAC;IAC1D;IACA,MAAMs1E,YAAY,GAAI,IAAI,CAAC,CAACA,YAAY,GAAG9tF,QAAQ,CAACT,aAAa,CAAC,KAAK,CAAE;IACzEmB,GAAG,CAACS,MAAM,CAAC2sF,YAAY,CAAC;IACxBA,YAAY,CAACxuF,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;IAChDwuF,YAAY,CAAClgF,SAAS,GAAG,UAAU;IACnCkgF,YAAY,CAACntF,KAAK,CAAC+zE,QAAQ,GAAG,IAAI,CAAC,CAACkZ,UAAU;IAC9C,MAAM,CAACtlE,WAAW,EAAEC,YAAY,CAAC,GAAG,IAAI,CAACuE,gBAAgB;IACzD,IAAI,CAACgD,OAAO,CAAC,IAAI,CAAC7xB,KAAK,GAAGqqB,WAAW,EAAE,IAAI,CAACpqB,MAAM,GAAGqqB,YAAY,CAAC;IAElE1X,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAACi9E,YAAY,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IACrE,IAAI,CAACz3D,aAAa,CAAC,CAAC;IAEpB,OAAO31B,GAAG;EACZ;EAEA6vF,WAAWA,CAAA,EAAG;IACZ,IAAI,CAAC7\u002FE,MAAM,CAACu+E,SAAS,CAACuB,QAAQ,CAAC,IAAI,CAAC,CAACvC,SAAS,EAAE,SAAS,CAAC;EAC5D;EAEAwC,YAAYA,CAAA,EAAG;IACb,IAAI,CAAC\u002F\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\u002FK,KAAK,GAAG\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\u002FBgR,IAAI,EAAEm\u002FD,QAAQ,CAAC1vE,IAAI,CAAC,IAAI,EAAEqhF,UAAU,CAAC;MACrC7wE,IAAI,EAAE,IAAI,CAAC1F,UAAU,CAAC+X,QAAQ,CAAC7iB,IAAI,CAAC,IAAI,CAAC8K,UAAU,EAAE,IAAI,CAAC;MAC1D2F,QAAQ,EAAE,IAAI;MACdj0B,IAAI,EAAE4B,0BAA0B,CAACM,SAAS;MAC1CiyB,mBAAmB,EAAE,IAAI;MACzBC,QAAQ,EAAE;IACZ,CAAC,CAAC;EACJ;EAMA,CAACs\u002FE,aAAaG,CAACviF,OAAO,EAAE;IACtB,MAAMwiF,UAAU,GAAGnyC,EAAE,IAAI;MACvB,IAAI,CAACrwC,OAAO,GAAGqwC,EAAE;MACjB,IAAI,CAAC,CAACiyC,MAAM,CAAC,CAAC;IAChB,CAAC;IACDtiF,OAAO,IAAI,GAAG;IACd,MAAMyiF,YAAY,GAAG,IAAI,CAACziF,OAAO;IACjC,IAAI,CAACgR,WAAW,CAAC;MACfxO,GAAG,EAAEggF,UAAU,CAACtwF,IAAI,CAAC,IAAI,EAAE8N,OAAO,CAAC;MACnCyC,IAAI,EAAE+\u002FE,UAAU,CAACtwF,IAAI,CAAC,IAAI,EAAEuwF,YAAY,CAAC;MACzC\u002F\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\u002FB,aAAa;IAChCS,WAAW,CAAC5\u002FF,IAAI,CAAC,CAAC8F,CAAC,EAAEC,CAAC,CAAC,CAAC;IACxB,IAAI,CAAC,CAACq5F,kBAAkB,GAAG,IAAI;IAE\u002FB,IAAIQ,WAAW,CAACziG,MAAM,IAAI,CAAC,EAAE;MAC3B+jG,MAAM,CAACvqG,MAAM,CAAC,GAAGipG,WAAW,CAAC,CAAC,CAAC,CAAC;MAChCsB,MAAM,CAACtqG,MAAM,CAACkP,CAAC,EAAEC,CAAC,CAAC;MACnB;IACF;IAEA,IAAI65F,WAAW,CAACziG,MAAM,KAAK,CAAC,EAAE;MAC5B,IAAI,CAAC,CAACgiG,aAAa,GAAG+B,MAAM,GAAG,IAAIh0D,MAAM,CAAC,CAAC;MAC3Cg0D,MAAM,CAACvqG,MAAM,CAAC,GAAGipG,WAAW,CAAC,CAAC,CAAC,CAAC;IAClC;IAEA,IAAI,CAAC,CAACuB,eAAe,CACnBD,MAAM,EACN,GAAGtB,WAAW,CAACv+E,EAAE,CAAC,CAAC,CAAC,CAAC,EACrB,GAAGu+E,WAAW,CAACv+E,EAAE,CAAC,CAAC,CAAC,CAAC,EACrBvb,CAAC,EACDC,CACF,CAAC;EACH;EAEA,CAACrO,OAAO0pG,CAAA,EAAG;IACT,IAAI,IAAI,CAACxB,WAAW,CAACziG,MAAM,KAAK,CAAC,EAAE;MACjC;IACF;IACA,MAAMw3F,SAAS,GAAG,IAAI,CAACiL,WAAW,CAACv+E,EAAE,CAAC,CAAC,CAAC,CAAC;IACzC,IAAI,CAAC,CAAC89E,aAAa,CAACvoG,MAAM,CAAC,GAAG+9F,SAAS,CAAC;EAC1C;EAOA,CAAC0M,WAAWC,CAACx7F,CAAC,EAAEC,CAAC,EAAE;IACjB,IAAI,CAAC,CAAC05F,oBAAoB,GAAG,IAAI;IAEjC35F,CAAC,GAAGlG,IAAI,CAACC,GAAG,CAACD,IAAI,CAACgE,GAAG,CAACkC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAACgF,MAAM,CAACF,KAAK,CAAC;IAC\u002FC7E,CAAC,GAAGnG,IAAI,CAACC,GAAG,CAACD,IAAI,CAACgE,GAAG,CAACmC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC+E,MAAM,CAACD,MAAM,CAAC;IAEhD,IAAI,CAAC,CAACm2F,IAAI,CAACl7F,CAAC,EAAEC,CAAC,CAAC;IAChB,IAAI,CAAC,CAACrO,OAAO,CAAC,CAAC;IAKf,IAAI6pG,MAAM;IACV,IAAI,IAAI,CAAC3B,WAAW,CAACziG,MAAM,KAAK,CAAC,EAAE;MACjCokG,MAAM,GAAG,IAAI,CAAC,CAACC,oBAAoB,CAAC,CAAC;IACvC,CAAC,MAAM;MAEL,MAAMC,EAAE,GAAG,CAAC37F,CAAC,EAAEC,CAAC,CAAC;MACjBw7F,MAAM,GAAG,CAAC,CAACE,EAAE,EAAEA,EAAE,CAACh+F,KAAK,CAAC,CAAC,EAAEg+F,EAAE,CAACh+F,KAAK,CAAC,CAAC,EAAEg+F,EAAE,CAAC,CAAC;IAC7C;IACA,MAAMP,MAAM,GAAG,IAAI,CAAC,CAAC\u002FB,aAAa;IAClC,MAAMS,WAAW,GAAG,IAAI,CAACA,WAAW;IACpC,IAAI,CAACA,WAAW,GAAG,EAAE;IACrB,IAAI,CAAC,CAACT,aAAa,GAAG,IAAIjyD,MAAM,CAAC,CAAC;IAElC,MAAM\u002FsB,GAAG,GAAGA,CAAA,KAAM;MAChB,IAAI,CAACw\u002FE,WAAW,CAAC3\u002FF,IAAI,CAAC4\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\u002FD,OAAO;IAC\u002FB,MAAM9yD,MAAM,GAAG+I,CAAC,GAAGzV,EAAE,GAAGw\u002FD,OAAO;IAC\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\u002FK,KAAK,GAAG\u002FM,IAAI,CAACC,YAAY,CAAC,GAAGoR,IAAI,CAACtE,KAAK,CAAC;IAC\u002FC+K,MAAM,CAACwD,OAAO,GAAGjK,IAAI,CAACiK,OAAO;IAE7B,MAAM,CAAC5I,SAAS,EAAEC,UAAU,CAAC,GAAGmF,MAAM,CAACof,cAAc;IACrD,MAAM3uB,KAAK,GAAGuP,MAAM,CAACvP,KAAK,GAAGmK,SAAS;IACtC,MAAMlK,MAAM,GAAGsP,MAAM,CAACtP,MAAM,GAAGmK,UAAU;IACzC,MAAM+hF,WAAW,GAAG58E,MAAM,CAACmiB,WAAW;IACtC,MAAMu3D,OAAO,GAAGngF,IAAI,CAACsjF,SAAS,GAAG,CAAC;IAElC78E,MAAM,CAAC,CAAC4oB,cAAc,GAAG,IAAI;IAC7B5oB,MAAM,CAAC,CAAColF,SAAS,GAAG3\u002FF,IAAI,CAACmQ,KAAK,CAACnF,KAAK,CAAC;IACrCuP,MAAM,CAAC,CAACqlF,UAAU,GAAG5\u002FF,IAAI,CAACmQ,KAAK,CAAClF,MAAM,CAAC;IAEvC,MAAM;MAAE48C,KAAK;MAAEjjD,IAAI;MAAE0P;IAAS,CAAC,GAAGR,IAAI;IAEtC,KAAK,IAAI;MAAE6tF;IAAO,CAAC,IAAI95C,KAAK,EAAE;MAC5B85C,MAAM,GAAGhD,SAAS,CAAC,CAACoF,kBAAkB,CAACpC,MAAM,EAAE\u002F8F,IAAI,EAAE0P,QAAQ,CAAC;MAC9D,MAAMknC,IAAI,GAAG,EAAE;MACfjhC,MAAM,CAACstC,KAAK,CAACznD,IAAI,CAACo7C,IAAI,CAAC;MACvB,IAAIC,EAAE,GAAG07C,WAAW,IAAIwK,MAAM,CAAC,CAAC,CAAC,GAAG1N,OAAO,CAAC;MAC5C,IAAItwF,EAAE,GAAGwzF,WAAW,IAAIwK,MAAM,CAAC,CAAC,CAAC,GAAG1N,OAAO,CAAC;MAC5C,KAAK,IAAIn0F,CAAC,GAAG,CAAC,EAAEuH,EAAE,GAAGs6F,MAAM,CAACpkG,MAAM,EAAEuC,CAAC,GAAGuH,EAAE,EAAEvH,CAAC,IAAI,CAAC,EAAE;QAClD,MAAMqkG,GAAG,GAAGhN,WAAW,IAAIwK,MAAM,CAAC7hG,CAAC,CAAC,GAAGm0F,OAAO,CAAC;QAC\u002FC,MAAMmQ,GAAG,GAAGjN,WAAW,IAAIwK,MAAM,CAAC7hG,CAAC,GAAG,CAAC,CAAC,GAAGm0F,OAAO,CAAC;QACnD,MAAMoQ,GAAG,GAAGlN,WAAW,IAAIwK,MAAM,CAAC7hG,CAAC,GAAG,CAAC,CAAC,GAAGm0F,OAAO,CAAC;QACnD,MAAMqQ,GAAG,GAAGnN,WAAW,IAAIwK,MAAM,CAAC7hG,CAAC,GAAG,CAAC,CAAC,GAAGm0F,OAAO,CAAC;QACnD,MAAMsQ,GAAG,GAAGpN,WAAW,IAAIwK,MAAM,CAAC7hG,CAAC,GAAG,CAAC,CAAC,GAAGm0F,OAAO,CAAC;QACnD,MAAMuQ,GAAG,GAAGrN,WAAW,IAAIwK,MAAM,CAAC7hG,CAAC,GAAG,CAAC,CAAC,GAAGm0F,OAAO,CAAC;QACnDz4C,IAAI,CAACp7C,IAAI,CAAC,CACR,CAACq7C,EAAE,EAAE93C,EAAE,CAAC,EACR,CAACwgG,GAAG,EAAEC,GAAG,CAAC,EACV,CAACC,GAAG,EAAEC,GAAG,CAAC,EACV,CAACC,GAAG,EAAEC,GAAG,CAAC,CACX,CAAC;QACF\u002FoD,EAAE,GAAG8oD,GAAG;QACR5gG,EAAE,GAAG6gG,GAAG;MACV;MACA,MAAMlD,MAAM,GAAG,IAAI,CAAC,CAACqC,WAAW,CAACnoD,IAAI,CAAC;MACtCjhC,MAAM,CAACulF,YAAY,CAAC1\u002FF,IAAI,CAACkhG,MAAM,CAAC;IAClC;IAEA,MAAMl0D,IAAI,GAAG7yB,MAAM,CAAC,CAACoqF,OAAO,CAAC,CAAC;IAC9BpqF,MAAM,CAAC,CAACskF,SAAS,GAAG7+F,IAAI,CAACgE,GAAG,CAACyzB,gBAAgB,CAACiH,QAAQ,EAAE0O,IAAI,CAAC,CAAC,CAAC,GAAGA,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1E7yB,MAAM,CAAC,CAACqkF,UAAU,GAAG5+F,IAAI,CAACgE,GAAG,CAACyzB,gBAAgB,CAACiH,QAAQ,EAAE0O,IAAI,CAAC,CAAC,CAAC,GAAGA,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3E7yB,MAAM,CAAC,CAAC8oF,cAAc,CAACr4F,KAAK,EAAEC,MAAM,CAAC;IAErC,OAAOsP,MAAM;EACf;EAGAmH,SAASA,CAAA,EAAG;IACV,IAAI,IAAI,CAAC6E,OAAO,CAAC,CAAC,EAAE;MAClB,OAAO,IAAI;IACb;IAEA,MAAM3hB,IAAI,GAAG,IAAI,CAACq8B,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAC\u002FB,MAAMzxB,KAAK,GAAGioB,gBAAgB,CAACuB,aAAa,CAACvW,OAAO,CAAC,IAAI,CAACnJ,GAAG,CAAC+7B,WAAW,CAAC;IAE1E,OAAO;MACL6lC,cAAc,EAAEntF,oBAAoB,CAACK,GAAG;MACxCohB,KAAK;MACL4nF,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBr5E,OAAO,EAAE,IAAI,CAACA,OAAO;MACrB8pC,KAAK,EAAE,IAAI,CAAC,CAACo8C,cAAc,CACzB,IAAI,CAAC9M,WAAW,GAAG,IAAI,CAACz6D,WAAW,EACnC,IAAI,CAACujE,YAAY,EACjB,IAAI,CAACC,YAAY,EACjBt7F,IACF,CAAC;MACDkrB,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBlrB,IAAI;MACJ0P,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvB4\u002FE,kBAAkB,EAAE,IAAI,CAACz6D;IAC3B,CAAC;EACH;AACF;;;AClqCoE;AACrB;AACK;AACY;AAKhE,MAAM0rE,WAAW,SAAS1tE,gBAAgB,CAAC;EACzC,CAAC7Y,MAAM,GAAG,IAAI;EAEd,CAACwmF,QAAQ,GAAG,IAAI;EAEhB,CAACC,aAAa,GAAG,IAAI;EAErB,CAACC,SAAS,GAAG,IAAI;EAEjB,CAACC,UAAU,GAAG,IAAI;EAElB,CAACC,cAAc,GAAG,EAAE;EAEpB,CAACt6F,MAAM,GAAG,IAAI;EAEd,CAACw0F,QAAQ,GAAG,IAAI;EAEhB,CAAC+F,eAAe,GAAG,IAAI;EAEvB,CAAC3mF,KAAK,GAAG,KAAK;EAEd,CAAC4mF,uBAAuB,GAAG,KAAK;EAEhC,OAAO1rE,KAAK,GAAG,OAAO;EAEtB,OAAO62D,WAAW,GAAG9iG,oBAAoB,CAACI,KAAK;EAE\u002FCuQ,WAAWA,CAACy0B,MAAM,EAAE;IAClB,KAAK,CAAC;MAAE,GAAGA,MAAM;MAAE10B,IAAI,EAAE;IAAc,CAAC,CAAC;IACzC,IAAI,CAAC,CAAC6mG,SAAS,GAAGnyE,MAAM,CAACmyE,SAAS;IAClC,IAAI,CAAC,CAACC,UAAU,GAAGpyE,MAAM,CAACoyE,UAAU;EACtC;EAGA,OAAO9uE,UAAUA,CAAC6D,IAAI,EAAEvd,SAAS,EAAE;IACjC0a,gBAAgB,CAAChB,UAAU,CAAC6D,IAAI,EAAEvd,SAAS,CAAC;EAC9C;EAEA,WAAW4oF,cAAcA,CAAA,EAAG;IAG1B,MAAMj2E,KAAK,GAAG,CACZ,MAAM,EACN,MAAM,EACN,KAAK,EACL,KAAK,EACL,MAAM,EACN,KAAK,EACL,SAAS,EACT,MAAM,EACN,QAAQ,CACT;IACD,OAAO9xB,MAAM,CACX,IAAI,EACJ,gBAAgB,EAChB8xB,KAAK,CAAC5uB,GAAG,CAACrU,IAAI,IAAK,SAAQA,IAAK,EAAC,CACnC,CAAC;EACH;EAEA,WAAWm5G,iBAAiBA,CAAA,EAAG;IAC7B,OAAOhoG,MAAM,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,CAAC+nG,cAAc,CAACtlG,IAAI,CAAC,GAAG,CAAC,CAAC;EACzE;EAGA,OAAOguB,wBAAwBA,CAACsM,IAAI,EAAE;IACpC,OAAO,IAAI,CAACgrE,cAAc,CAAC7jG,QAAQ,CAAC64B,IAAI,CAAC;EAC3C;EAGA,OAAOrV,KAAKA,CAAC6I,IAAI,EAAE1Q,MAAM,EAAE;IACzBA,MAAM,CAACooF,WAAW,CAAC93G,oBAAoB,CAACI,KAAK,EAAE;MAC7Co3G,UAAU,EAAEp3E,IAAI,CAAC23E,SAAS,CAAC;IAC7B,CAAC,CAAC;EACJ;EAEA,CAACC,gBAAgBC,CAAClyF,IAAI,EAAEmyF,MAAM,GAAG,KAAK,EAAE;IACtC,IAAI,CAACnyF,IAAI,EAAE;MACT,IAAI,CAAC1E,MAAM,CAAC,CAAC;MACb;IACF;IACA,IAAI,CAAC,CAACwP,MAAM,GAAG9K,IAAI,CAAC8K,MAAM;IAC1B,IAAI,CAACqnF,MAAM,EAAE;MACX,IAAI,CAAC,CAACb,QAAQ,GAAGtxF,IAAI,CAAC7G,EAAE;MACxB,IAAI,CAAC,CAAC6R,KAAK,GAAGhL,IAAI,CAACgL,KAAK;IAC1B;IACA,IAAIhL,IAAI,CAACiL,IAAI,EAAE;MACb,IAAI,CAAC,CAACymF,cAAc,GAAG1xF,IAAI,CAACiL,IAAI,CAACtgB,IAAI;IACvC;IACA,IAAI,CAAC,CAACquC,YAAY,CAAC,CAAC;EACtB;EAEA,CAACo5D,aAAaC,CAAA,EAAG;IACf,IAAI,CAAC,CAACd,aAAa,GAAG,IAAI;IAC1B,IAAI,CAACtqF,UAAU,CAACsW,aAAa,CAAC,KAAK,CAAC;IACpC,IAAI,IAAI,CAAC,CAACnmB,MAAM,EAAE;MAChB,IAAI,CAACuC,GAAG,CAACuX,KAAK,CAAC,CAAC;IAClB;EACF;EAEA,CAACohF,SAASC,CAAA,EAAG;IACX,IAAI,IAAI,CAAC,CAACjB,QAAQ,EAAE;MAClB,IAAI,CAACrqF,UAAU,CAACsW,aAAa,CAAC,IAAI,CAAC;MACnC,IAAI,CAACtW,UAAU,CAACka,YAAY,CACzBlV,SAAS,CAAC,IAAI,CAAC,CAACqlF,QAAQ,CAAC,CACzBvxF,IAAI,CAACC,IAAI,IAAI,IAAI,CAAC,CAACiyF,gBAAgB,CAACjyF,IAAI,EAAiB,IAAI,CAAC,CAAC,CAC\u002FDyhE,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC2wB,aAAa,CAAC,CAAC,CAAC;MACvC;IACF;IAEA,IAAI,IAAI,CAAC,CAACZ,SAAS,EAAE;MACnB,MAAMxoG,GAAG,GAAG,IAAI,CAAC,CAACwoG,SAAS;MAC3B,IAAI,CAAC,CAACA,SAAS,GAAG,IAAI;MACtB,IAAI,CAACvqF,UAAU,CAACsW,aAAa,CAAC,IAAI,CAAC;MACnC,IAAI,CAAC,CAACg0E,aAAa,GAAG,IAAI,CAACtqF,UAAU,CAACka,YAAY,CAC\u002FCnV,UAAU,CAAChjB,GAAG,CAAC,CACf+W,IAAI,CAACC,IAAI,IAAI,IAAI,CAAC,CAACiyF,gBAAgB,CAACjyF,IAAI,CAAC,CAAC,CAC1CyhE,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC2wB,aAAa,CAAC,CAAC,CAAC;MACvC;IACF;IAEA,IAAI,IAAI,CAAC,CAACX,UAAU,EAAE;MACpB,MAAMxmF,IAAI,GAAG,IAAI,CAAC,CAACwmF,UAAU;MAC7B,IAAI,CAAC,CAACA,UAAU,GAAG,IAAI;MACvB,IAAI,CAACxqF,UAAU,CAACsW,aAAa,CAAC,IAAI,CAAC;MACnC,IAAI,CAAC,CAACg0E,aAAa,GAAG,IAAI,CAACtqF,UAAU,CAACka,YAAY,CAC\u002FCrV,WAAW,CAACb,IAAI,CAAC,CACjBlL,IAAI,CAACC,IAAI,IAAI,IAAI,CAAC,CAACiyF,gBAAgB,CAACjyF,IAAI,CAAC,CAAC,CAC1CyhE,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC2wB,aAAa,CAAC,CAAC,CAAC;MACvC;IACF;IAEA,MAAMnuF,KAAK,GAAGhL,QAAQ,CAACT,aAAa,CAAC,OAAO,CAAC;IAM7CyL,KAAK,CAACtrB,IAAI,GAAG,MAAM;IACnBsrB,KAAK,CAACuuF,MAAM,GAAGnB,WAAW,CAACS,iBAAiB;IAC5C,IAAI,CAAC,CAACP,aAAa,GAAG,IAAIryF,OAAO,CAACC,OAAO,IAAI;MAC3C8E,KAAK,CAAC6C,gBAAgB,CAAC,QAAQ,EAAE,YAAY;QAC3C,IAAI,CAAC7C,KAAK,CAACwuF,KAAK,IAAIxuF,KAAK,CAACwuF,KAAK,CAAChpG,MAAM,KAAK,CAAC,EAAE;UAC5C,IAAI,CAAC6R,MAAM,CAAC,CAAC;QACf,CAAC,MAAM;UACL,IAAI,CAAC2L,UAAU,CAACsW,aAAa,CAAC,IAAI,CAAC;UACnC,MAAMvd,IAAI,GAAG,MAAM,IAAI,CAACiH,UAAU,CAACka,YAAY,CAACrV,WAAW,CACzD7H,KAAK,CAACwuF,KAAK,CAAC,CAAC,CACf,CAAC;UACD,IAAI,CAAC,CAACR,gBAAgB,CAACjyF,IAAI,CAAC;QAC9B;QAIAb,OAAO,CAAC,CAAC;MACX,CAAC,CAAC;MACF8E,KAAK,CAAC6C,gBAAgB,CAAC,QAAQ,EAAE,MAAM;QACrC,IAAI,CAACxL,MAAM,CAAC,CAAC;QACb6D,OAAO,CAAC,CAAC;MACX,CAAC,CAAC;IACJ,CAAC,CAAC,CAACsiE,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC2wB,aAAa,CAAC,CAAC,CAAC;IAErCnuF,KAAK,CAACyuF,KAAK,CAAC,CAAC;EAEjB;EAGAp3F,MAAMA,CAAA,EAAG;IACP,IAAI,IAAI,CAAC,CAACg2F,QAAQ,EAAE;MAClB,IAAI,CAAC,CAACxmF,MAAM,GAAG,IAAI;MACnB,IAAI,CAAC7D,UAAU,CAACka,YAAY,CAAChV,QAAQ,CAAC,IAAI,CAAC,CAACmlF,QAAQ,CAAC;MACrD,IAAI,CAAC,CAACl6F,MAAM,EAAEkE,MAAM,CAAC,CAAC;MACtB,IAAI,CAAC,CAAClE,MAAM,GAAG,IAAI;MACnB,IAAI,CAAC,CAACw0F,QAAQ,EAAEiB,UAAU,CAAC,CAAC;MAC5B,IAAI,CAAC,CAACjB,QAAQ,GAAG,IAAI;MACrB,IAAI,IAAI,CAAC,CAAC+F,eAAe,EAAE;QACzBv8E,YAAY,CAAC,IAAI,CAAC,CAACu8E,eAAe,CAAC;QACnC,IAAI,CAAC,CAACA,eAAe,GAAG,IAAI;MAC9B;IACF;IACA,KAAK,CAACr2F,MAAM,CAAC,CAAC;EAChB;EAGAulB,OAAOA,CAAA,EAAG;IACR,IAAI,CAAC,IAAI,CAAClX,MAAM,EAAE;MAGhB,IAAI,IAAI,CAAC,CAAC2nF,QAAQ,EAAE;QAClB,IAAI,CAAC,CAACgB,SAAS,CAAC,CAAC;MACnB;MACA;IACF;IACA,KAAK,CAACzxE,OAAO,CAAC,CAAC;IACf,IAAI,IAAI,CAAClnB,GAAG,KAAK,IAAI,EAAE;MACrB;IACF;IAEA,IAAI,IAAI,CAAC,CAAC23F,QAAQ,IAAI,IAAI,CAAC,CAACl6F,MAAM,KAAK,IAAI,EAAE;MAC3C,IAAI,CAAC,CAACk7F,SAAS,CAAC,CAAC;IACnB;IAEA,IAAI,CAAC,IAAI,CAACtsE,eAAe,EAAE;MAGzB,IAAI,CAACrc,MAAM,CAACzB,GAAG,CAAC,IAAI,CAAC;IACvB;EACF;EAGAqlB,SAASA,CAAA,EAAG;IACV,IAAI,CAACzG,YAAY,GAAG,IAAI;IACxB,IAAI,CAACntB,GAAG,CAACuX,KAAK,CAAC,CAAC;EAClB;EAGAuB,OAAOA,CAAA,EAAG;IACR,OAAO,EACL,IAAI,CAAC,CAAC8+E,aAAa,IACnB,IAAI,CAAC,CAACzmF,MAAM,IACZ,IAAI,CAAC,CAAC0mF,SAAS,IACf,IAAI,CAAC,CAACC,UAAU,IAChB,IAAI,CAAC,CAACH,QAAQ,CACf;EACH;EAGA,IAAIvjE,WAAWA,CAAA,EAAG;IAChB,OAAO,IAAI;EACb;EAGApnB,MAAMA,CAAA,EAAG;IACP,IAAI,IAAI,CAAChN,GAAG,EAAE;MACZ,OAAO,IAAI,CAACA,GAAG;IACjB;IAEA,IAAI6kF,KAAK,EAAEC,KAAK;IAChB,IAAI,IAAI,CAACvnF,KAAK,EAAE;MACdsnF,KAAK,GAAG,IAAI,CAACpsF,CAAC;MACdqsF,KAAK,GAAG,IAAI,CAACpsF,CAAC;IAChB;IAEA,KAAK,CAACsU,MAAM,CAAC,CAAC;IACd,IAAI,CAAChN,GAAG,CAACotE,MAAM,GAAG,IAAI;IAEtB,IAAI,CAACn+D,gBAAgB,CAAC,CAAC;IAEvB,IAAI,IAAI,CAAC,CAACkC,MAAM,EAAE;MAChB,IAAI,CAAC,CAACkuB,YAAY,CAAC,CAAC;IACtB,CAAC,MAAM;MACL,IAAI,CAAC,CAACs5D,SAAS,CAAC,CAAC;IACnB;IAEA,IAAI,IAAI,CAACp7F,KAAK,EAAE;MAEd,MAAM,CAACqqB,WAAW,EAAEC,YAAY,CAAC,GAAG,IAAI,CAACuE,gBAAgB;MACzD,IAAI,CAACyB,KAAK,CACRg3D,KAAK,GAAGj9D,WAAW,EACnBk9D,KAAK,GAAGj9D,YAAY,EACpB,IAAI,CAACtqB,KAAK,GAAGqqB,WAAW,EACxB,IAAI,CAACpqB,MAAM,GAAGqqB,YAChB,CAAC;IACH;IAEA,OAAO,IAAI,CAAC7nB,GAAG;EACjB;EAEA,CAACq\u002FB,YAAY+1D,CAAA,EAAG;IACd,MAAM;MAAEp1F;IAAI,CAAC,GAAG,IAAI;IACpB,IAAI;MAAEzC,KAAK;MAAEC;IAAO,CAAC,GAAG,IAAI,CAAC,CAAC2T,MAAM;IACpC,MAAM,CAACzJ,SAAS,EAAEC,UAAU,CAAC,GAAG,IAAI,CAACukB,cAAc;IACnD,MAAM8sE,SAAS,GAAG,IAAI;IACtB,IAAI,IAAI,CAACz7F,KAAK,EAAE;MACdA,KAAK,GAAG,IAAI,CAACA,KAAK,GAAGmK,SAAS;MAC9BlK,MAAM,GAAG,IAAI,CAACA,MAAM,GAAGmK,UAAU;IACnC,CAAC,MAAM,IACLpK,KAAK,GAAGy7F,SAAS,GAAGtxF,SAAS,IAC7BlK,MAAM,GAAGw7F,SAAS,GAAGrxF,UAAU,EAC\u002FB;MAGA,MAAMsxF,MAAM,GAAG1mG,IAAI,CAACC,GAAG,CACpBwmG,SAAS,GAAGtxF,SAAS,GAAInK,KAAK,EAC9By7F,SAAS,GAAGrxF,UAAU,GAAInK,MAC7B,CAAC;MACDD,KAAK,IAAI07F,MAAM;MACfz7F,MAAM,IAAIy7F,MAAM;IAClB;IACA,MAAM,CAACrxE,WAAW,EAAEC,YAAY,CAAC,GAAG,IAAI,CAACuE,gBAAgB;IACzD,IAAI,CAACgD,OAAO,CACT7xB,KAAK,GAAGqqB,WAAW,GAAIlgB,SAAS,EAChClK,MAAM,GAAGqqB,YAAY,GAAIlgB,UAC5B,CAAC;IAED,IAAI,CAAC2F,UAAU,CAACsW,aAAa,CAAC,KAAK,CAAC;IACpC,MAAMnmB,MAAM,GAAI,IAAI,CAAC,CAACA,MAAM,GAAG6B,QAAQ,CAACT,aAAa,CAAC,QAAQ,CAAE;IAChEmB,GAAG,CAACS,MAAM,CAAChD,MAAM,CAAC;IAClBuC,GAAG,CAACotE,MAAM,GAAG,KAAK;IAClB,IAAI,CAAC,CAAC8rB,UAAU,CAAC37F,KAAK,EAAEC,MAAM,CAAC;IAC\u002FB,IAAI,CAAC,CAACw1F,cAAc,CAAC,CAAC;IACtB,IAAI,CAAC,IAAI,CAAC,CAACiF,uBAAuB,EAAE;MAClC,IAAI,CAACjoF,MAAM,CAACq\u002FE,iBAAiB,CAAC,IAAI,CAAC;MACnC,IAAI,CAAC,CAAC4I,uBAAuB,GAAG,IAAI;IACtC;IAKA,IAAI,CAACpuE,gBAAgB,CAAC;MACpBtG,MAAM,EAAE;IACV,CAAC,CAAC;IACF,IAAI,IAAI,CAAC,CAACw0E,cAAc,EAAE;MACxBt6F,MAAM,CAACmB,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,CAACm5F,cAAc,CAAC;IACzD;EACF;EASA,CAAC5E,aAAagG,CAAC57F,KAAK,EAAEC,MAAM,EAAE;IAC5B,MAAM,CAACoqB,WAAW,EAAEC,YAAY,CAAC,GAAG,IAAI,CAACuE,gBAAgB;IACzD,IAAI,CAAC7uB,KAAK,GAAGA,KAAK,GAAGqqB,WAAW;IAChC,IAAI,CAACpqB,MAAM,GAAGA,MAAM,GAAGqqB,YAAY;IACnC,IAAI,CAACuH,OAAO,CAAC7xB,KAAK,EAAEC,MAAM,CAAC;IAC3B,IAAI,IAAI,CAAC0tB,eAAe,EAAEa,UAAU,EAAE;MACpC,IAAI,CAACqB,MAAM,CAAC,CAAC;IACf,CAAC,MAAM;MACL,IAAI,CAACE,iBAAiB,CAAC,CAAC;IAC1B;IACA,IAAI,CAACpC,eAAe,GAAG,IAAI;IAC3B,IAAI,IAAI,CAAC,CAAC8sE,eAAe,KAAK,IAAI,EAAE;MAClCv8E,YAAY,CAAC,IAAI,CAAC,CAACu8E,eAAe,CAAC;IACrC;IAKA,MAAM\u002FxE,YAAY,GAAG,GAAG;IACxB,IAAI,CAAC,CAAC+xE,eAAe,GAAG1zE,UAAU,CAAC,MAAM;MACvC,IAAI,CAAC,CAAC0zE,eAAe,GAAG,IAAI;MAC5B,IAAI,CAAC,CAACkB,UAAU,CAAC37F,KAAK,EAAEC,MAAM,CAAC;IACjC,CAAC,EAAEyoB,YAAY,CAAC;EAClB;EAEA,CAACmzE,WAAWC,CAAC97F,KAAK,EAAEC,MAAM,EAAE;IAC1B,MAAM;MAAED,KAAK,EAAE+7F,WAAW;MAAE97F,MAAM,EAAE+7F;IAAa,CAAC,GAAG,IAAI,CAAC,CAACpoF,MAAM;IAEjE,IAAI0f,QAAQ,GAAGyoE,WAAW;IAC1B,IAAIxoE,SAAS,GAAGyoE,YAAY;IAC5B,IAAIpoF,MAAM,GAAG,IAAI,CAAC,CAACA,MAAM;IACzB,OAAO0f,QAAQ,GAAG,CAAC,GAAGtzB,KAAK,IAAIuzB,SAAS,GAAG,CAAC,GAAGtzB,MAAM,EAAE;MACrD,MAAMg8F,SAAS,GAAG3oE,QAAQ;MAC1B,MAAM4oE,UAAU,GAAG3oE,SAAS;MAE5B,IAAID,QAAQ,GAAG,CAAC,GAAGtzB,KAAK,EAAE;QAIxBszB,QAAQ,GACNA,QAAQ,IAAI,KAAK,GACbt+B,IAAI,CAACqJ,KAAK,CAACi1B,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,GAC5Bt+B,IAAI,CAAC+uC,IAAI,CAACzQ,QAAQ,GAAG,CAAC,CAAC;MAC\u002FB;MACA,IAAIC,SAAS,GAAG,CAAC,GAAGtzB,MAAM,EAAE;QAC1BszB,SAAS,GACPA,SAAS,IAAI,KAAK,GACdv+B,IAAI,CAACqJ,KAAK,CAACk1B,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,GAC7Bv+B,IAAI,CAAC+uC,IAAI,CAACxQ,SAAS,GAAG,CAAC,CAAC;MAChC;MAEA,MAAM4oE,SAAS,GAAG,IAAIzlG,eAAe,CAAC48B,QAAQ,EAAEC,SAAS,CAAC;MAC1D,MAAMjlB,GAAG,GAAG6tF,SAAS,CAAC97F,UAAU,CAAC,IAAI,CAAC;MACtCiO,GAAG,CAACkF,SAAS,CACXI,MAAM,EACN,CAAC,EACD,CAAC,EACDqoF,SAAS,EACTC,UAAU,EACV,CAAC,EACD,CAAC,EACD5oE,QAAQ,EACRC,SACF,CAAC;MACD3f,MAAM,GAAGuoF,SAAS,CAACC,qBAAqB,CAAC,CAAC;IAC5C;IAEA,OAAOxoF,MAAM;EACf;EAEA,CAAC+nF,UAAUU,CAACr8F,KAAK,EAAEC,MAAM,EAAE;IACzBD,KAAK,GAAGhL,IAAI,CAAC+uC,IAAI,CAAC\u002FjC,KAAK,CAAC;IACxBC,MAAM,GAAGjL,IAAI,CAAC+uC,IAAI,CAAC9jC,MAAM,CAAC;IAC1B,MAAMC,MAAM,GAAG,IAAI,CAAC,CAACA,MAAM;IAC3B,IAAI,CAACA,MAAM,IAAKA,MAAM,CAACF,KAAK,KAAKA,KAAK,IAAIE,MAAM,CAACD,MAAM,KAAKA,MAAO,EAAE;MACnE;IACF;IACAC,MAAM,CAACF,KAAK,GAAGA,KAAK;IACpBE,MAAM,CAACD,MAAM,GAAGA,MAAM;IACtB,MAAM2T,MAAM,GAAG,IAAI,CAAC,CAACE,KAAK,GACtB,IAAI,CAAC,CAACF,MAAM,GACZ,IAAI,CAAC,CAACioF,WAAW,CAAC77F,KAAK,EAAEC,MAAM,CAAC;IAEpC,IAAI,IAAI,CAAC8P,UAAU,CAACuO,YAAY,IAAI,CAAC,IAAI,CAACgX,UAAU,CAAC,CAAC,EAAE;MACtD,MAAM6mE,SAAS,GAAG,IAAIzlG,eAAe,CAACsJ,KAAK,EAAEC,MAAM,CAAC;MACpD,MAAMqO,GAAG,GAAG6tF,SAAS,CAAC97F,UAAU,CAAC,IAAI,CAAC;MACtCiO,GAAG,CAACkF,SAAS,CACXI,MAAM,EACN,CAAC,EACD,CAAC,EACDA,MAAM,CAAC5T,KAAK,EACZ4T,MAAM,CAAC3T,MAAM,EACb,CAAC,EACD,CAAC,EACDD,KAAK,EACLC,MACF,CAAC;MACD,IAAI,CAAC8P,UAAU,CACZqO,OAAO,CAAC;QACPk+E,OAAO,EAAE,eAAe;QACxBn0F,OAAO,EAAE;UACPW,IAAI,EAAEwF,GAAG,CAACmF,YAAY,CAAC,CAAC,EAAE,CAAC,EAAEzT,KAAK,EAAEC,MAAM,CAAC,CAAC6I,IAAI;UAChD9I,KAAK;UACLC,MAAM;UACNs8F,QAAQ,EAAE;QACZ;MACF,CAAC,CAAC,CACD1zF,IAAI,CAACpB,QAAQ,IAAI;QAChB,MAAMyjB,OAAO,GAAGzjB,QAAQ,EAAEuzD,MAAM,IAAI,EAAE;QACtC,IAAI,IAAI,CAACvoD,MAAM,IAAIyY,OAAO,IAAI,CAAC,IAAI,CAACoK,UAAU,CAAC,CAAC,EAAE;UAChD,IAAI,CAACD,WAAW,GAAG;YAAEnK,OAAO;YAAEc,UAAU,EAAE;UAAM,CAAC;QACnD;MACF,CAAC,CAAC;IACN;IACA,MAAM1d,GAAG,GAAGpO,MAAM,CAACG,UAAU,CAAC,IAAI,CAAC;IACnCiO,GAAG,CAACrK,MAAM,GAAG,IAAI,CAAC8L,UAAU,CAACwO,SAAS;IACtCjQ,GAAG,CAACkF,SAAS,CACXI,MAAM,EACN,CAAC,EACD,CAAC,EACDA,MAAM,CAAC5T,KAAK,EACZ4T,MAAM,CAAC3T,MAAM,EACb,CAAC,EACD,CAAC,EACDD,KAAK,EACLC,MACF,CAAC;EACH;EAGAusB,kBAAkBA,CAAA,EAAG;IACnB,OAAO,IAAI,CAAC,CAACtsB,MAAM;EACrB;EAEA,CAACs8F,eAAeC,CAACC,KAAK,EAAE;IACtB,IAAIA,KAAK,EAAE;MACT,IAAI,IAAI,CAAC,CAAC5oF,KAAK,EAAE;QACf,MAAMhiB,GAAG,GAAG,IAAI,CAACie,UAAU,CAACka,YAAY,CAACjV,SAAS,CAAC,IAAI,CAAC,CAAColF,QAAQ,CAAC;QAClE,IAAItoG,GAAG,EAAE;UACP,OAAOA,GAAG;QACZ;MACF;MAGA,MAAMoO,MAAM,GAAG6B,QAAQ,CAACT,aAAa,CAAC,QAAQ,CAAC;MAC\u002FC,CAAC;QAAEtB,KAAK,EAAEE,MAAM,CAACF,KAAK;QAAEC,MAAM,EAAEC,MAAM,CAACD;MAAO,CAAC,GAAG,IAAI,CAAC,CAAC2T,MAAM;MAC9D,MAAMtF,GAAG,GAAGpO,MAAM,CAACG,UAAU,CAAC,IAAI,CAAC;MACnCiO,GAAG,CAACkF,SAAS,CAAC,IAAI,CAAC,CAACI,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;MAEjC,OAAO1T,MAAM,CAACy8F,SAAS,CAAC,CAAC;IAC3B;IAEA,IAAI,IAAI,CAAC,CAAC7oF,KAAK,EAAE;MACf,MAAM,CAAC3J,SAAS,EAAEC,UAAU,CAAC,GAAG,IAAI,CAACukB,cAAc;MAGnD,MAAM3uB,KAAK,GAAGhL,IAAI,CAACmQ,KAAK,CACtB,IAAI,CAACnF,KAAK,GAAGmK,SAAS,GAAG3I,aAAa,CAACE,gBACzC,CAAC;MACD,MAAMzB,MAAM,GAAGjL,IAAI,CAACmQ,KAAK,CACvB,IAAI,CAAClF,MAAM,GAAGmK,UAAU,GAAG5I,aAAa,CAACE,gBAC3C,CAAC;MACD,MAAMy6F,SAAS,GAAG,IAAIzlG,eAAe,CAACsJ,KAAK,EAAEC,MAAM,CAAC;MACpD,MAAMqO,GAAG,GAAG6tF,SAAS,CAAC97F,UAAU,CAAC,IAAI,CAAC;MACtCiO,GAAG,CAACkF,SAAS,CACX,IAAI,CAAC,CAACI,MAAM,EACZ,CAAC,EACD,CAAC,EACD,IAAI,CAAC,CAACA,MAAM,CAAC5T,KAAK,EAClB,IAAI,CAAC,CAAC4T,MAAM,CAAC3T,MAAM,EACnB,CAAC,EACD,CAAC,EACDD,KAAK,EACLC,MACF,CAAC;MACD,OAAOk8F,SAAS,CAACC,qBAAqB,CAAC,CAAC;IAC1C;IAEA,OAAOrgE,eAAe,CAAC,IAAI,CAAC,CAACnoB,MAAM,CAAC;EACtC;EAKA,CAAC6hF,cAAcqC,CAAA,EAAG;IAChB,IAAI,CAAC,CAACpD,QAAQ,GAAG,IAAIqD,cAAc,CAAC5zE,OAAO,IAAI;MAC7C,MAAMvqB,IAAI,GAAGuqB,OAAO,CAAC,CAAC,CAAC,CAAC6zE,WAAW;MACnC,IAAIp+F,IAAI,CAACoG,KAAK,IAAIpG,IAAI,CAACqG,MAAM,EAAE;QAC7B,IAAI,CAAC,CAAC21F,aAAa,CAACh8F,IAAI,CAACoG,KAAK,EAAEpG,IAAI,CAACqG,MAAM,CAAC;MAC9C;IACF,CAAC,CAAC;IACF,IAAI,CAAC,CAACy0F,QAAQ,CAACuD,OAAO,CAAC,IAAI,CAACx1F,GAAG,CAAC;EAClC;EAGA,OAAOmhB,WAAWA,CAAC9a,IAAI,EAAE2J,MAAM,EAAEV,SAAS,EAAE;IAC1C,IAAIjJ,IAAI,YAAY8oE,sBAAsB,EAAE;MAC1C,OAAO,IAAI;IACb;IACA,MAAMriE,MAAM,GAAG,KAAK,CAACqU,WAAW,CAAC9a,IAAI,EAAE2J,MAAM,EAAEV,SAAS,CAAC;IACzD,MAAM;MAAEnY,IAAI;MAAE0gG,SAAS;MAAEF,QAAQ;MAAEtmF,KAAK;MAAE8oF;IAAkB,CAAC,GAAG9zF,IAAI;IACpE,IAAIsxF,QAAQ,IAAIroF,SAAS,CAACkY,YAAY,CAAC\u002FU,SAAS,CAACklF,QAAQ,CAAC,EAAE;MAC1D7qF,MAAM,CAAC,CAAC6qF,QAAQ,GAAGA,QAAQ;IAC7B,CAAC,MAAM;MACL7qF,MAAM,CAAC,CAAC+qF,SAAS,GAAGA,SAAS;IAC\u002FB;IACA\u002FqF,MAAM,CAAC,CAACuE,KAAK,GAAGA,KAAK;IAErB,MAAM,CAACuW,WAAW,EAAEC,YAAY,CAAC,GAAG\u002Fa,MAAM,CAACof,cAAc;IACzDpf,MAAM,CAACvP,KAAK,GAAG,CAACpG,IAAI,CAAC,CAAC,CAAC,GAAGA,IAAI,CAAC,CAAC,CAAC,IAAIywB,WAAW;IAChD9a,MAAM,CAACtP,MAAM,GAAG,CAACrG,IAAI,CAAC,CAAC,CAAC,GAAGA,IAAI,CAAC,CAAC,CAAC,IAAI0wB,YAAY;IAElD,IAAIsyE,iBAAiB,EAAE;MACrBrtF,MAAM,CAAC8lB,WAAW,GAAGunE,iBAAiB;IACxC;IAEA,OAAOrtF,MAAM;EACf;EAGAmH,SAASA,CAACigB,YAAY,GAAG,KAAK,EAAEv2B,OAAO,GAAG,IAAI,EAAE;IAC9C,IAAI,IAAI,CAACmb,OAAO,CAAC,CAAC,EAAE;MAClB,OAAO,IAAI;IACb;IAEA,MAAMuH,UAAU,GAAG;MACjBotD,cAAc,EAAEntF,oBAAoB,CAACI,KAAK;MAC1Ci3G,QAAQ,EAAE,IAAI,CAAC,CAACA,QAAQ;MACxBt1E,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBlrB,IAAI,EAAE,IAAI,CAACq8B,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;MACxB3sB,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBwK,KAAK,EAAE,IAAI,CAAC,CAACA,KAAK;MAClBo1E,kBAAkB,EAAE,IAAI,CAACz6D;IAC3B,CAAC;IAED,IAAIkI,YAAY,EAAE;MAIhB7T,UAAU,CAACw3E,SAAS,GAAG,IAAI,CAAC,CAACkC,eAAe,CAAe,IAAI,CAAC;MAChE15E,UAAU,CAAC85E,iBAAiB,GAAG,IAAI,CAACvnE,WAAW;MAC\u002FC,OAAOvS,UAAU;IACnB;IAEA,MAAM;MAAEkJ,UAAU;MAAEd;IAAQ,CAAC,GAAG,IAAI,CAACmK,WAAW;IAChD,IAAI,CAACrJ,UAAU,IAAId,OAAO,EAAE;MAC1BpI,UAAU,CAAC85E,iBAAiB,GAAG;QAAEn7G,IAAI,EAAE,QAAQ;QAAEo7G,GAAG,EAAE3xE;MAAQ,CAAC;IACjE;IAEA,IAAI9qB,OAAO,KAAK,IAAI,EAAE;MACpB,OAAO0iB,UAAU;IACnB;IAEA1iB,OAAO,CAAC08F,MAAM,KAAK,IAAIl\u002FF,GAAG,CAAC,CAAC;IAC5B,MAAMm\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\u002FE,YAAY,CAAC,IAAI,CAAC,CAACq\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\u002FB\u002FvD,IAAI,CAAC\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\",\"sources\":[\"webpack:\u002F\u002Fpdf.js\u002Fwebpack\u002Fbootstrap\",\"webpack:\u002F\u002Fpdf.js\u002Fwebpack\u002Fruntime\u002Fdefine property getters\",\"webpack:\u002F\u002Fpdf.js\u002Fwebpack\u002Fruntime\u002FhasOwnProperty shorthand\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fshared\u002Futil.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fbase_factory.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fdisplay_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Feditor\u002Ftoolbar.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Feditor\u002Ftools.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Feditor\u002Falt_text.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Feditor\u002Feditor.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fshared\u002Fmurmurhash3.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fannotation_storage.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Ffont_loader.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fnode_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fpattern_helper.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fshared\u002Fimage_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fcanvas.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fworker_options.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fshared\u002Fmessage_handler.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fmetadata.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Foptional_content_config.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Ftransport_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fcontent_disposition.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fnetwork_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Ffetch_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fnetwork.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fnode_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Ftext_layer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fxfa_text.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fapi.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fshared\u002Fscripting_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fxfa_layer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fannotation_layer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Feditor\u002Ffreetext.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Feditor\u002Foutliner.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Feditor\u002Fcolor_picker.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Feditor\u002Fhighlight.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Feditor\u002Fink.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Feditor\u002Fstamp.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Feditor\u002Fannotation_editor_layer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fdraw_layer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fpdf.js\"],\"sourcesContent\":[\"\u002F\u002F The require scope\\nvar __webpack_require__ = {};\\n\\n\",\"\u002F\u002F define getter functions for harmony exports\\n__webpack_require__.d = (exports, definition) => {\\n\\tfor(var key in definition) {\\n\\t\\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\\n\\t\\t\\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\\n\\t\\t}\\n\\t}\\n};\",\"__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\u002F* globals process *\u002F\\n\\n\u002F\u002F NW.js \u002F Electron is a browser context, but copies some Node.js objects; see\\n\u002F\u002F http:\u002F\u002Fdocs.nwjs.io\u002Fen\u002Flatest\u002FFor%20Users\u002FAdvanced\u002FJavaScript%20Contexts%20in%20NW.js\u002F#access-nodejs-and-nwjs-api-in-browser-context\\n\u002F\u002F https:\u002F\u002Fwww.electronjs.org\u002Fdocs\u002Fapi\u002Fprocess#processversionselectron-readonly\\n\u002F\u002F https:\u002F\u002Fwww.electronjs.org\u002Fdocs\u002Fapi\u002Fprocess#processtype-readonly\\nconst isNodeJS =\\n  (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) &&\\n  typeof process === \\\"object\\\" &&\\n  process + \\\"\\\" === \\\"[object process]\\\" &&\\n  !process.versions.nw &&\\n  !(process.versions.electron && process.type && process.type !== \\\"browser\\\");\\n\\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\\n\\nconst MAX_IMAGE_SIZE_TO_CACHE = 10e6; \u002F\u002F Ten megabytes.\\n\\n\u002F\u002F Represent the percentage of the height of a single-line field over\\n\u002F\u002F the font size. Acrobat seems to use this value.\\nconst LINE_FACTOR = 1.35;\\nconst LINE_DESCENT_FACTOR = 0.35;\\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR \u002F LINE_FACTOR;\\n\\n\u002F**\\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\\n * how these flags are being used:\\n *  - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\\n *    `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\\n *  - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\\n *    annotations are rendered onto the canvas (i.e. by being included in the\\n *    operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\\n *    and their `annotationMode`-option.\\n *  - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\\n *    `OperatorList`-constructor (on the worker-thread).\\n *\u002F\\nconst RenderingIntentFlag = {\\n  ANY: 0x01,\\n  DISPLAY: 0x02,\\n  PRINT: 0x04,\\n  SAVE: 0x08,\\n  ANNOTATIONS_FORMS: 0x10,\\n  ANNOTATIONS_STORAGE: 0x20,\\n  ANNOTATIONS_DISABLE: 0x40,\\n  OPLIST: 0x100,\\n};\\n\\nconst AnnotationMode = {\\n  DISABLE: 0,\\n  ENABLE: 1,\\n  ENABLE_FORMS: 2,\\n  ENABLE_STORAGE: 3,\\n};\\n\\nconst AnnotationEditorPrefix = \\\"pdfjs_internal_editor_\\\";\\n\\nconst AnnotationEditorType = {\\n  DISABLE: -1,\\n  NONE: 0,\\n  FREETEXT: 3,\\n  HIGHLIGHT: 9,\\n  STAMP: 13,\\n  INK: 15,\\n};\\n\\nconst AnnotationEditorParamsType = {\\n  RESIZE: 1,\\n  CREATE: 2,\\n  FREETEXT_SIZE: 11,\\n  FREETEXT_COLOR: 12,\\n  FREETEXT_OPACITY: 13,\\n  INK_COLOR: 21,\\n  INK_THICKNESS: 22,\\n  INK_OPACITY: 23,\\n  HIGHLIGHT_COLOR: 31,\\n  HIGHLIGHT_DEFAULT_COLOR: 32,\\n  HIGHLIGHT_THICKNESS: 33,\\n  HIGHLIGHT_FREE: 34,\\n  HIGHLIGHT_SHOW_ALL: 35,\\n};\\n\\n\u002F\u002F Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\\nconst PermissionFlag = {\\n  PRINT: 0x04,\\n  MODIFY_CONTENTS: 0x08,\\n  COPY: 0x10,\\n  MODIFY_ANNOTATIONS: 0x20,\\n  FILL_INTERACTIVE_FORMS: 0x100,\\n  COPY_FOR_ACCESSIBILITY: 0x200,\\n  ASSEMBLE: 0x400,\\n  PRINT_HIGH_QUALITY: 0x800,\\n};\\n\\nconst TextRenderingMode = {\\n  FILL: 0,\\n  STROKE: 1,\\n  FILL_STROKE: 2,\\n  INVISIBLE: 3,\\n  FILL_ADD_TO_PATH: 4,\\n  STROKE_ADD_TO_PATH: 5,\\n  FILL_STROKE_ADD_TO_PATH: 6,\\n  ADD_TO_PATH: 7,\\n  FILL_STROKE_MASK: 3,\\n  ADD_TO_PATH_FLAG: 4,\\n};\\n\\nconst ImageKind = {\\n  GRAYSCALE_1BPP: 1,\\n  RGB_24BPP: 2,\\n  RGBA_32BPP: 3,\\n};\\n\\nconst AnnotationType = {\\n  TEXT: 1,\\n  LINK: 2,\\n  FREETEXT: 3,\\n  LINE: 4,\\n  SQUARE: 5,\\n  CIRCLE: 6,\\n  POLYGON: 7,\\n  POLYLINE: 8,\\n  HIGHLIGHT: 9,\\n  UNDERLINE: 10,\\n  SQUIGGLY: 11,\\n  STRIKEOUT: 12,\\n  STAMP: 13,\\n  CARET: 14,\\n  INK: 15,\\n  POPUP: 16,\\n  FILEATTACHMENT: 17,\\n  SOUND: 18,\\n  MOVIE: 19,\\n  WIDGET: 20,\\n  SCREEN: 21,\\n  PRINTERMARK: 22,\\n  TRAPNET: 23,\\n  WATERMARK: 24,\\n  THREED: 25,\\n  REDACT: 26,\\n};\\n\\nconst AnnotationReplyType = {\\n  GROUP: \\\"Group\\\",\\n  REPLY: \\\"R\\\",\\n};\\n\\nconst AnnotationFlag = {\\n  INVISIBLE: 0x01,\\n  HIDDEN: 0x02,\\n  PRINT: 0x04,\\n  NOZOOM: 0x08,\\n  NOROTATE: 0x10,\\n  NOVIEW: 0x20,\\n  READONLY: 0x40,\\n  LOCKED: 0x80,\\n  TOGGLENOVIEW: 0x100,\\n  LOCKEDCONTENTS: 0x200,\\n};\\n\\nconst AnnotationFieldFlag = {\\n  READONLY: 0x0000001,\\n  REQUIRED: 0x0000002,\\n  NOEXPORT: 0x0000004,\\n  MULTILINE: 0x0001000,\\n  PASSWORD: 0x0002000,\\n  NOTOGGLETOOFF: 0x0004000,\\n  RADIO: 0x0008000,\\n  PUSHBUTTON: 0x0010000,\\n  COMBO: 0x0020000,\\n  EDIT: 0x0040000,\\n  SORT: 0x0080000,\\n  FILESELECT: 0x0100000,\\n  MULTISELECT: 0x0200000,\\n  DONOTSPELLCHECK: 0x0400000,\\n  DONOTSCROLL: 0x0800000,\\n  COMB: 0x1000000,\\n  RICHTEXT: 0x2000000,\\n  RADIOSINUNISON: 0x2000000,\\n  COMMITONSELCHANGE: 0x4000000,\\n};\\n\\nconst AnnotationBorderStyleType = {\\n  SOLID: 1,\\n  DASHED: 2,\\n  BEVELED: 3,\\n  INSET: 4,\\n  UNDERLINE: 5,\\n};\\n\\nconst AnnotationActionEventType = {\\n  E: \\\"Mouse Enter\\\",\\n  X: \\\"Mouse Exit\\\",\\n  D: \\\"Mouse Down\\\",\\n  U: \\\"Mouse Up\\\",\\n  Fo: \\\"Focus\\\",\\n  Bl: \\\"Blur\\\",\\n  PO: \\\"PageOpen\\\",\\n  PC: \\\"PageClose\\\",\\n  PV: \\\"PageVisible\\\",\\n  PI: \\\"PageInvisible\\\",\\n  K: \\\"Keystroke\\\",\\n  F: \\\"Format\\\",\\n  V: \\\"Validate\\\",\\n  C: \\\"Calculate\\\",\\n};\\n\\nconst DocumentActionEventType = {\\n  WC: \\\"WillClose\\\",\\n  WS: \\\"WillSave\\\",\\n  DS: \\\"DidSave\\\",\\n  WP: \\\"WillPrint\\\",\\n  DP: \\\"DidPrint\\\",\\n};\\n\\nconst PageActionEventType = {\\n  O: \\\"PageOpen\\\",\\n  C: \\\"PageClose\\\",\\n};\\n\\nconst VerbosityLevel = {\\n  ERRORS: 0,\\n  WARNINGS: 1,\\n  INFOS: 5,\\n};\\n\\nconst CMapCompressionType = {\\n  NONE: 0,\\n  BINARY: 1,\\n};\\n\\n\u002F\u002F All the possible operations for an operator list.\\nconst OPS = {\\n  \u002F\u002F Intentionally start from 1 so it is easy to spot bad operators that will be\\n  \u002F\u002F 0's.\\n  \u002F\u002F PLEASE NOTE: We purposely keep any removed operators commented out, since\\n  \u002F\u002F              re-numbering the list would risk breaking third-party users.\\n  dependency: 1,\\n  setLineWidth: 2,\\n  setLineCap: 3,\\n  setLineJoin: 4,\\n  setMiterLimit: 5,\\n  setDash: 6,\\n  setRenderingIntent: 7,\\n  setFlatness: 8,\\n  setGState: 9,\\n  save: 10,\\n  restore: 11,\\n  transform: 12,\\n  moveTo: 13,\\n  lineTo: 14,\\n  curveTo: 15,\\n  curveTo2: 16,\\n  curveTo3: 17,\\n  closePath: 18,\\n  rectangle: 19,\\n  stroke: 20,\\n  closeStroke: 21,\\n  fill: 22,\\n  eoFill: 23,\\n  fillStroke: 24,\\n  eoFillStroke: 25,\\n  closeFillStroke: 26,\\n  closeEOFillStroke: 27,\\n  endPath: 28,\\n  clip: 29,\\n  eoClip: 30,\\n  beginText: 31,\\n  endText: 32,\\n  setCharSpacing: 33,\\n  setWordSpacing: 34,\\n  setHScale: 35,\\n  setLeading: 36,\\n  setFont: 37,\\n  setTextRenderingMode: 38,\\n  setTextRise: 39,\\n  moveText: 40,\\n  setLeadingMoveText: 41,\\n  setTextMatrix: 42,\\n  nextLine: 43,\\n  showText: 44,\\n  showSpacedText: 45,\\n  nextLineShowText: 46,\\n  nextLineSetSpacingShowText: 47,\\n  setCharWidth: 48,\\n  setCharWidthAndBounds: 49,\\n  setStrokeColorSpace: 50,\\n  setFillColorSpace: 51,\\n  setStrokeColor: 52,\\n  setStrokeColorN: 53,\\n  setFillColor: 54,\\n  setFillColorN: 55,\\n  setStrokeGray: 56,\\n  setFillGray: 57,\\n  setStrokeRGBColor: 58,\\n  setFillRGBColor: 59,\\n  setStrokeCMYKColor: 60,\\n  setFillCMYKColor: 61,\\n  shadingFill: 62,\\n  beginInlineImage: 63,\\n  beginImageData: 64,\\n  endInlineImage: 65,\\n  paintXObject: 66,\\n  markPoint: 67,\\n  markPointProps: 68,\\n  beginMarkedContent: 69,\\n  beginMarkedContentProps: 70,\\n  endMarkedContent: 71,\\n  beginCompat: 72,\\n  endCompat: 73,\\n  paintFormXObjectBegin: 74,\\n  paintFormXObjectEnd: 75,\\n  beginGroup: 76,\\n  endGroup: 77,\\n  \u002F\u002F beginAnnotations: 78,\\n  \u002F\u002F endAnnotations: 79,\\n  beginAnnotation: 80,\\n  endAnnotation: 81,\\n  \u002F\u002F paintJpegXObject: 82,\\n  paintImageMaskXObject: 83,\\n  paintImageMaskXObjectGroup: 84,\\n  paintImageXObject: 85,\\n  paintInlineImageXObject: 86,\\n  paintInlineImageXObjectGroup: 87,\\n  paintImageXObjectRepeat: 88,\\n  paintImageMaskXObjectRepeat: 89,\\n  paintSolidColorImageMask: 90,\\n  constructPath: 91,\\n};\\n\\nconst PasswordResponses = {\\n  NEED_PASSWORD: 1,\\n  INCORRECT_PASSWORD: 2,\\n};\\n\\nlet verbosity = VerbosityLevel.WARNINGS;\\n\\nfunction setVerbosityLevel(level) {\\n  if (Number.isInteger(level)) {\\n    verbosity = level;\\n  }\\n}\\n\\nfunction getVerbosityLevel() {\\n  return verbosity;\\n}\\n\\n\u002F\u002F A notice for devs. These are good for things that are helpful to devs, such\\n\u002F\u002F as warning that Workers were disabled, which is important to devs but not\\n\u002F\u002F end users.\\nfunction info(msg) {\\n  if (verbosity >= VerbosityLevel.INFOS) {\\n    console.log(`Info: ${msg}`);\\n  }\\n}\\n\\n\u002F\u002F Non-fatal warnings.\\nfunction warn(msg) {\\n  if (verbosity >= VerbosityLevel.WARNINGS) {\\n    console.log(`Warning: ${msg}`);\\n  }\\n}\\n\\nfunction unreachable(msg) {\\n  throw new Error(msg);\\n}\\n\\nfunction assert(cond, msg) {\\n  if (!cond) {\\n    unreachable(msg);\\n  }\\n}\\n\\n\u002F\u002F Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\\nfunction _isValidProtocol(url) {\\n  switch (url?.protocol) {\\n    case \\\"http:\\\":\\n    case \\\"https:\\\":\\n    case \\\"ftp:\\\":\\n    case \\\"mailto:\\\":\\n    case \\\"tel:\\\":\\n      return true;\\n    default:\\n      return false;\\n  }\\n}\\n\\n\u002F**\\n * Attempts to create a valid absolute URL.\\n *\\n * @param {URL|string} url - An absolute, or relative, URL.\\n * @param {URL|string} [baseUrl] - An absolute URL.\\n * @param {Object} [options]\\n * @returns Either a valid {URL}, or `null` otherwise.\\n *\u002F\\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\\n  if (!url) {\\n    return null;\\n  }\\n  try {\\n    if (options && typeof url === \\\"string\\\") {\\n      \u002F\u002F Let URLs beginning with \\\"www.\\\" default to using the \\\"http:\u002F\u002F\\\" protocol.\\n      if (options.addDefaultProtocol && url.startsWith(\\\"www.\\\")) {\\n        const dots = url.match(\u002F\\\\.\u002Fg);\\n        \u002F\u002F Avoid accidentally matching a *relative* URL pointing to a file named\\n        \u002F\u002F e.g. \\\"www.pdf\\\" or similar.\\n        if (dots?.length >= 2) {\\n          url = `http:\u002F\u002F${url}`;\\n        }\\n      }\\n\\n      \u002F\u002F According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\\n      \u002F\u002F in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\\n      if (options.tryConvertEncoding) {\\n        try {\\n          url = stringToUTF8String(url);\\n        } catch {}\\n      }\\n    }\\n\\n    const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\\n    if (_isValidProtocol(absoluteUrl)) {\\n      return absoluteUrl;\\n    }\\n  } catch {\\n    \u002F* `new URL()` will throw on incorrect data. *\u002F\\n  }\\n  return null;\\n}\\n\\nfunction shadow(obj, prop, value, nonSerializable = false) {\\n  if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n    assert(\\n      prop in obj,\\n      `shadow: Property \\\"${prop && prop.toString()}\\\" not found in object.`\\n    );\\n  }\\n  Object.defineProperty(obj, prop, {\\n    value,\\n    enumerable: !nonSerializable,\\n    configurable: true,\\n    writable: false,\\n  });\\n  return value;\\n}\\n\\n\u002F**\\n * @type {any}\\n *\u002F\\nconst BaseException = (function BaseExceptionClosure() {\\n  \u002F\u002F eslint-disable-next-line no-shadow\\n  function BaseException(message, name) {\\n    if (this.constructor === BaseException) {\\n      unreachable(\\\"Cannot initialize BaseException.\\\");\\n    }\\n    this.message = message;\\n    this.name = name;\\n  }\\n  BaseException.prototype = new Error();\\n  BaseException.constructor = BaseException;\\n\\n  return BaseException;\\n})();\\n\\nclass PasswordException extends BaseException {\\n  constructor(msg, code) {\\n    super(msg, \\\"PasswordException\\\");\\n    this.code = code;\\n  }\\n}\\n\\nclass UnknownErrorException extends BaseException {\\n  constructor(msg, details) {\\n    super(msg, \\\"UnknownErrorException\\\");\\n    this.details = details;\\n  }\\n}\\n\\nclass InvalidPDFException extends BaseException {\\n  constructor(msg) {\\n    super(msg, \\\"InvalidPDFException\\\");\\n  }\\n}\\n\\nclass MissingPDFException extends BaseException {\\n  constructor(msg) {\\n    super(msg, \\\"MissingPDFException\\\");\\n  }\\n}\\n\\nclass UnexpectedResponseException extends BaseException {\\n  constructor(msg, status) {\\n    super(msg, \\\"UnexpectedResponseException\\\");\\n    this.status = status;\\n  }\\n}\\n\\n\u002F**\\n * Error caused during parsing PDF data.\\n *\u002F\\nclass FormatError extends BaseException {\\n  constructor(msg) {\\n    super(msg, \\\"FormatError\\\");\\n  }\\n}\\n\\n\u002F**\\n * Error used to indicate task cancellation.\\n *\u002F\\nclass AbortException extends BaseException {\\n  constructor(msg) {\\n    super(msg, \\\"AbortException\\\");\\n  }\\n}\\n\\nfunction bytesToString(bytes) {\\n  if (typeof bytes !== \\\"object\\\" || bytes?.length === undefined) {\\n    unreachable(\\\"Invalid argument for bytesToString\\\");\\n  }\\n  const length = bytes.length;\\n  const MAX_ARGUMENT_COUNT = 8192;\\n  if (length \u003C MAX_ARGUMENT_COUNT) {\\n    return String.fromCharCode.apply(null, bytes);\\n  }\\n  const strBuf = [];\\n  for (let i = 0; i \u003C length; i += MAX_ARGUMENT_COUNT) {\\n    const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\\n    const chunk = bytes.subarray(i, chunkEnd);\\n    strBuf.push(String.fromCharCode.apply(null, chunk));\\n  }\\n  return strBuf.join(\\\"\\\");\\n}\\n\\nfunction stringToBytes(str) {\\n  if (typeof str !== \\\"string\\\") {\\n    unreachable(\\\"Invalid argument for stringToBytes\\\");\\n  }\\n  const length = str.length;\\n  const bytes = new Uint8Array(length);\\n  for (let i = 0; i \u003C length; ++i) {\\n    bytes[i] = str.charCodeAt(i) & 0xff;\\n  }\\n  return bytes;\\n}\\n\\nfunction string32(value) {\\n  if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n    assert(\\n      typeof value === \\\"number\\\" && Math.abs(value) \u003C 2 ** 32,\\n      `string32: Unexpected input \\\"${value}\\\".`\\n    );\\n  }\\n  return String.fromCharCode(\\n    (value >> 24) & 0xff,\\n    (value >> 16) & 0xff,\\n    (value >> 8) & 0xff,\\n    value & 0xff\\n  );\\n}\\n\\nfunction objectSize(obj) {\\n  return Object.keys(obj).length;\\n}\\n\\n\u002F\u002F Ensure that the returned Object has a `null` prototype; hence why\\n\u002F\u002F `Object.fromEntries(...)` is not used.\\nfunction objectFromMap(map) {\\n  const obj = Object.create(null);\\n  for (const [key, value] of map) {\\n    obj[key] = value;\\n  }\\n  return obj;\\n}\\n\\n\u002F\u002F Checks the endianness of the platform.\\nfunction isLittleEndian() {\\n  const buffer8 = new Uint8Array(4);\\n  buffer8[0] = 1;\\n  const view32 = new Uint32Array(buffer8.buffer, 0, 1);\\n  return view32[0] === 1;\\n}\\n\\n\u002F\u002F Checks if it's possible to eval JS expressions.\\nfunction isEvalSupported() {\\n  try {\\n    new Function(\\\"\\\"); \u002F\u002F eslint-disable-line no-new, no-new-func\\n    return true;\\n  } catch {\\n    return false;\\n  }\\n}\\n\\nclass FeatureTest {\\n  static get isLittleEndian() {\\n    return shadow(this, \\\"isLittleEndian\\\", isLittleEndian());\\n  }\\n\\n  static get isEvalSupported() {\\n    return shadow(this, \\\"isEvalSupported\\\", isEvalSupported());\\n  }\\n\\n  static get isOffscreenCanvasSupported() {\\n    return shadow(\\n      this,\\n      \\\"isOffscreenCanvasSupported\\\",\\n      typeof OffscreenCanvas !== \\\"undefined\\\"\\n    );\\n  }\\n\\n  static get platform() {\\n    if (\\n      (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) ||\\n      (typeof navigator !== \\\"undefined\\\" &&\\n        typeof navigator?.platform === \\\"string\\\")\\n    ) {\\n      return shadow(this, \\\"platform\\\", {\\n        isMac: navigator.platform.includes(\\\"Mac\\\"),\\n      });\\n    }\\n    return shadow(this, \\\"platform\\\", { isMac: false });\\n  }\\n\\n  static get isCSSRoundSupported() {\\n    return shadow(\\n      this,\\n      \\\"isCSSRoundSupported\\\",\\n      globalThis.CSS?.supports?.(\\\"width: round(1.5px, 1px)\\\")\\n    );\\n  }\\n}\\n\\nconst hexNumbers = Array.from(Array(256).keys(), n =>\\n  n.toString(16).padStart(2, \\\"0\\\")\\n);\\n\\nclass Util {\\n  static makeHexColor(r, g, b) {\\n    return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\\n  }\\n\\n  \u002F\u002F Apply a scaling matrix to some min\u002Fmax values.\\n  \u002F\u002F If a scaling factor is negative then min and max must be\\n  \u002F\u002F swapped.\\n  static scaleMinMax(transform, minMax) {\\n    let temp;\\n    if (transform[0]) {\\n      if (transform[0] \u003C 0) {\\n        temp = minMax[0];\\n        minMax[0] = minMax[2];\\n        minMax[2] = temp;\\n      }\\n      minMax[0] *= transform[0];\\n      minMax[2] *= transform[0];\\n\\n      if (transform[3] \u003C 0) {\\n        temp = minMax[1];\\n        minMax[1] = minMax[3];\\n        minMax[3] = temp;\\n      }\\n      minMax[1] *= transform[3];\\n      minMax[3] *= transform[3];\\n    } else {\\n      temp = minMax[0];\\n      minMax[0] = minMax[1];\\n      minMax[1] = temp;\\n      temp = minMax[2];\\n      minMax[2] = minMax[3];\\n      minMax[3] = temp;\\n\\n      if (transform[1] \u003C 0) {\\n        temp = minMax[1];\\n        minMax[1] = minMax[3];\\n        minMax[3] = temp;\\n      }\\n      minMax[1] *= transform[1];\\n      minMax[3] *= transform[1];\\n\\n      if (transform[2] \u003C 0) {\\n        temp = minMax[0];\\n        minMax[0] = minMax[2];\\n        minMax[2] = temp;\\n      }\\n      minMax[0] *= transform[2];\\n      minMax[2] *= transform[2];\\n    }\\n    minMax[0] += transform[4];\\n    minMax[1] += transform[5];\\n    minMax[2] += transform[4];\\n    minMax[3] += transform[5];\\n  }\\n\\n  \u002F\u002F Concatenates two transformation matrices together and returns the result.\\n  static transform(m1, m2) {\\n    return [\\n      m1[0] * m2[0] + m1[2] * m2[1],\\n      m1[1] * m2[0] + m1[3] * m2[1],\\n      m1[0] * m2[2] + m1[2] * m2[3],\\n      m1[1] * m2[2] + m1[3] * m2[3],\\n      m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\\n      m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\\n    ];\\n  }\\n\\n  \u002F\u002F For 2d affine transforms\\n  static applyTransform(p, m) {\\n    const xt = p[0] * m[0] + p[1] * m[2] + m[4];\\n    const yt = p[0] * m[1] + p[1] * m[3] + m[5];\\n    return [xt, yt];\\n  }\\n\\n  static applyInverseTransform(p, m) {\\n    const d = m[0] * m[3] - m[1] * m[2];\\n    const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) \u002F d;\\n    const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) \u002F d;\\n    return [xt, yt];\\n  }\\n\\n  \u002F\u002F Applies the transform to the rectangle and finds the minimum axially\\n  \u002F\u002F aligned bounding box.\\n  static getAxialAlignedBoundingBox(r, m) {\\n    const p1 = this.applyTransform(r, m);\\n    const p2 = this.applyTransform(r.slice(2, 4), m);\\n    const p3 = this.applyTransform([r[0], r[3]], m);\\n    const p4 = this.applyTransform([r[2], r[1]], m);\\n    return [\\n      Math.min(p1[0], p2[0], p3[0], p4[0]),\\n      Math.min(p1[1], p2[1], p3[1], p4[1]),\\n      Math.max(p1[0], p2[0], p3[0], p4[0]),\\n      Math.max(p1[1], p2[1], p3[1], p4[1]),\\n    ];\\n  }\\n\\n  static inverseTransform(m) {\\n    const d = m[0] * m[3] - m[1] * m[2];\\n    return [\\n      m[3] \u002F d,\\n      -m[1] \u002F d,\\n      -m[2] \u002F d,\\n      m[0] \u002F d,\\n      (m[2] * m[5] - m[4] * m[3]) \u002F d,\\n      (m[4] * m[1] - m[5] * m[0]) \u002F d,\\n    ];\\n  }\\n\\n  \u002F\u002F This calculation uses Singular Value Decomposition.\\n  \u002F\u002F The SVD can be represented with formula A = USV. We are interested in the\\n  \u002F\u002F matrix S here because it represents the scale values.\\n  static singularValueDecompose2dScale(m) {\\n    const transpose = [m[0], m[2], m[1], m[3]];\\n\\n    \u002F\u002F Multiply matrix m with its transpose.\\n    const a = m[0] * transpose[0] + m[1] * transpose[2];\\n    const b = m[0] * transpose[1] + m[1] * transpose[3];\\n    const c = m[2] * transpose[0] + m[3] * transpose[2];\\n    const d = m[2] * transpose[1] + m[3] * transpose[3];\\n\\n    \u002F\u002F Solve the second degree polynomial to get roots.\\n    const first = (a + d) \u002F 2;\\n    const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) \u002F 2;\\n    const sx = first + second || 1;\\n    const sy = first - second || 1;\\n\\n    \u002F\u002F Scale values are the square roots of the eigenvalues.\\n    return [Math.sqrt(sx), Math.sqrt(sy)];\\n  }\\n\\n  \u002F\u002F Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) \u003C (x2,y2)\\n  \u002F\u002F For coordinate systems whose origin lies in the bottom-left, this\\n  \u002F\u002F means normalization to (BL,TR) ordering. For systems with origin in the\\n  \u002F\u002F top-left, this means (TL,BR) ordering.\\n  static normalizeRect(rect) {\\n    const r = rect.slice(0); \u002F\u002F clone rect\\n    if (rect[0] > rect[2]) {\\n      r[0] = rect[2];\\n      r[2] = rect[0];\\n    }\\n    if (rect[1] > rect[3]) {\\n      r[1] = rect[3];\\n      r[3] = rect[1];\\n    }\\n    return r;\\n  }\\n\\n  \u002F\u002F Returns a rectangle [x1, y1, x2, y2] corresponding to the\\n  \u002F\u002F intersection of rect1 and rect2. If no intersection, returns 'null'\\n  \u002F\u002F The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\\n  static intersect(rect1, rect2) {\\n    const xLow = Math.max(\\n      Math.min(rect1[0], rect1[2]),\\n      Math.min(rect2[0], rect2[2])\\n    );\\n    const xHigh = Math.min(\\n      Math.max(rect1[0], rect1[2]),\\n      Math.max(rect2[0], rect2[2])\\n    );\\n    if (xLow > xHigh) {\\n      return null;\\n    }\\n    const yLow = Math.max(\\n      Math.min(rect1[1], rect1[3]),\\n      Math.min(rect2[1], rect2[3])\\n    );\\n    const yHigh = Math.min(\\n      Math.max(rect1[1], rect1[3]),\\n      Math.max(rect2[1], rect2[3])\\n    );\\n    if (yLow > yHigh) {\\n      return null;\\n    }\\n\\n    return [xLow, yLow, xHigh, yHigh];\\n  }\\n\\n  static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\\n    if (t \u003C= 0 || t >= 1) {\\n      return;\\n    }\\n    const mt = 1 - t;\\n    const tt = t * t;\\n    const ttt = tt * t;\\n    const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\\n    const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\\n    minMax[0] = Math.min(minMax[0], x);\\n    minMax[1] = Math.min(minMax[1], y);\\n    minMax[2] = Math.max(minMax[2], x);\\n    minMax[3] = Math.max(minMax[3], y);\\n  }\\n\\n  static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\\n    if (Math.abs(a) \u003C 1e-12) {\\n      if (Math.abs(b) >= 1e-12) {\\n        this.#getExtremumOnCurve(\\n          x0,\\n          x1,\\n          x2,\\n          x3,\\n          y0,\\n          y1,\\n          y2,\\n          y3,\\n          -c \u002F b,\\n          minMax\\n        );\\n      }\\n      return;\\n    }\\n\\n    const delta = b ** 2 - 4 * c * a;\\n    if (delta \u003C 0) {\\n      return;\\n    }\\n    const sqrtDelta = Math.sqrt(delta);\\n    const a2 = 2 * a;\\n    this.#getExtremumOnCurve(\\n      x0,\\n      x1,\\n      x2,\\n      x3,\\n      y0,\\n      y1,\\n      y2,\\n      y3,\\n      (-b + sqrtDelta) \u002F a2,\\n      minMax\\n    );\\n    this.#getExtremumOnCurve(\\n      x0,\\n      x1,\\n      x2,\\n      x3,\\n      y0,\\n      y1,\\n      y2,\\n      y3,\\n      (-b - sqrtDelta) \u002F a2,\\n      minMax\\n    );\\n  }\\n\\n  \u002F\u002F From https:\u002F\u002Fgithub.com\u002Fadobe-webplatform\u002FSnap.svg\u002Fblob\u002Fb365287722a72526000ac4bfcf0ce4cac2faa015\u002Fsrc\u002Fpath.js#L852\\n  static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\\n    if (minMax) {\\n      minMax[0] = Math.min(minMax[0], x0, x3);\\n      minMax[1] = Math.min(minMax[1], y0, y3);\\n      minMax[2] = Math.max(minMax[2], x0, x3);\\n      minMax[3] = Math.max(minMax[3], y0, y3);\\n    } else {\\n      minMax = [\\n        Math.min(x0, x3),\\n        Math.min(y0, y3),\\n        Math.max(x0, x3),\\n        Math.max(y0, y3),\\n      ];\\n    }\\n    this.#getExtremum(\\n      x0,\\n      x1,\\n      x2,\\n      x3,\\n      y0,\\n      y1,\\n      y2,\\n      y3,\\n      3 * (-x0 + 3 * (x1 - x2) + x3),\\n      6 * (x0 - 2 * x1 + x2),\\n      3 * (x1 - x0),\\n      minMax\\n    );\\n    this.#getExtremum(\\n      x0,\\n      x1,\\n      x2,\\n      x3,\\n      y0,\\n      y1,\\n      y2,\\n      y3,\\n      3 * (-y0 + 3 * (y1 - y2) + y3),\\n      6 * (y0 - 2 * y1 + y2),\\n      3 * (y1 - y0),\\n      minMax\\n    );\\n    return minMax;\\n  }\\n}\\n\\nconst PDFStringTranslateTable = [\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\\n  0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\\n  0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\\n  0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\\n  0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\\n  0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\\n];\\n\\nfunction stringToPDFString(str) {\\n  \u002F\u002F See section 7.9.2.2 Text String Type.\\n  \u002F\u002F The string can contain some language codes bracketed with 0x0b,\\n  \u002F\u002F so we must remove them.\\n  if (str[0] >= \\\"\\\\xEF\\\") {\\n    let encoding;\\n    if (str[0] === \\\"\\\\xFE\\\" && str[1] === \\\"\\\\xFF\\\") {\\n      encoding = \\\"utf-16be\\\";\\n      if (str.length % 2 === 1) {\\n        str = str.slice(0, -1);\\n      }\\n    } else if (str[0] === \\\"\\\\xFF\\\" && str[1] === \\\"\\\\xFE\\\") {\\n      encoding = \\\"utf-16le\\\";\\n      if (str.length % 2 === 1) {\\n        str = str.slice(0, -1);\\n      }\\n    } else if (str[0] === \\\"\\\\xEF\\\" && str[1] === \\\"\\\\xBB\\\" && str[2] === \\\"\\\\xBF\\\") {\\n      encoding = \\\"utf-8\\\";\\n    }\\n\\n    if (encoding) {\\n      try {\\n        const decoder = new TextDecoder(encoding, { fatal: true });\\n        const buffer = stringToBytes(str);\\n        const decoded = decoder.decode(buffer);\\n        if (!decoded.includes(\\\"\\\\x1b\\\")) {\\n          return decoded;\\n        }\\n        return decoded.replaceAll(\u002F\\\\x1b[^\\\\x1b]*(?:\\\\x1b|$)\u002Fg, \\\"\\\");\\n      } catch (ex) {\\n        warn(`stringToPDFString: \\\"${ex}\\\".`);\\n      }\\n    }\\n  }\\n  \u002F\u002F ISO Latin 1\\n  const strBuf = [];\\n  for (let i = 0, ii = str.length; i \u003C ii; i++) {\\n    const charCode = str.charCodeAt(i);\\n    if (charCode === 0x1b) {\\n      \u002F\u002F eslint-disable-next-line no-empty\\n      while (++i \u003C ii && str.charCodeAt(i) !== 0x1b) {}\\n      continue;\\n    }\\n    const code = PDFStringTranslateTable[charCode];\\n    strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\\n  }\\n  return strBuf.join(\\\"\\\");\\n}\\n\\nfunction stringToUTF8String(str) {\\n  return decodeURIComponent(escape(str));\\n}\\n\\nfunction utf8StringToString(str) {\\n  return unescape(encodeURIComponent(str));\\n}\\n\\nfunction isArrayEqual(arr1, arr2) {\\n  if (arr1.length !== arr2.length) {\\n    return false;\\n  }\\n  for (let i = 0, ii = arr1.length; i \u003C ii; i++) {\\n    if (arr1[i] !== arr2[i]) {\\n      return false;\\n    }\\n  }\\n  return true;\\n}\\n\\nfunction getModificationDate(date = new Date()) {\\n  const buffer = [\\n    date.getUTCFullYear().toString(),\\n    (date.getUTCMonth() + 1).toString().padStart(2, \\\"0\\\"),\\n    date.getUTCDate().toString().padStart(2, \\\"0\\\"),\\n    date.getUTCHours().toString().padStart(2, \\\"0\\\"),\\n    date.getUTCMinutes().toString().padStart(2, \\\"0\\\"),\\n    date.getUTCSeconds().toString().padStart(2, \\\"0\\\"),\\n  ];\\n\\n  return buffer.join(\\\"\\\");\\n}\\n\\nlet NormalizeRegex = null;\\nlet NormalizationMap = null;\\nfunction normalizeUnicode(str) {\\n  if (!NormalizeRegex) {\\n    \u002F\u002F In order to generate the following regex:\\n    \u002F\u002F  - create a PDF containing all the chars in the range 0000-FFFF with\\n    \u002F\u002F    a NFKC which is different of the char.\\n    \u002F\u002F  - copy and paste all those chars and get the ones where NFKC is\\n    \u002F\u002F    required.\\n    \u002F\u002F It appears that most the chars here contain some ligatures.\\n    NormalizeRegex =\\n      \u002F([\\\\u00a0\\\\u00b5\\\\u037e\\\\u0eb3\\\\u2000-\\\\u200a\\\\u202f\\\\u2126\\\\ufb00-\\\\ufb04\\\\ufb06\\\\ufb20-\\\\ufb36\\\\ufb38-\\\\ufb3c\\\\ufb3e\\\\ufb40-\\\\ufb41\\\\ufb43-\\\\ufb44\\\\ufb46-\\\\ufba1\\\\ufba4-\\\\ufba9\\\\ufbae-\\\\ufbb1\\\\ufbd3-\\\\ufbdc\\\\ufbde-\\\\ufbe7\\\\ufbea-\\\\ufbf8\\\\ufbfc-\\\\ufbfd\\\\ufc00-\\\\ufc5d\\\\ufc64-\\\\ufcf1\\\\ufcf5-\\\\ufd3d\\\\ufd88\\\\ufdf4\\\\ufdfa-\\\\ufdfb\\\\ufe71\\\\ufe77\\\\ufe79\\\\ufe7b\\\\ufe7d]+)|(\\\\ufb05+)\u002Fgu;\\n    NormalizationMap = new Map([[\\\"ﬅ\\\", \\\"ſt\\\"]]);\\n  }\\n  return str.replaceAll(NormalizeRegex, (_, p1, p2) =>\\n    p1 ? p1.normalize(\\\"NFKC\\\") : NormalizationMap.get(p2)\\n  );\\n}\\n\\nfunction getUuid() {\\n  if (\\n    (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) ||\\n    (typeof crypto !== \\\"undefined\\\" && typeof crypto?.randomUUID === \\\"function\\\")\\n  ) {\\n    return crypto.randomUUID();\\n  }\\n  const buf = new Uint8Array(32);\\n  if (\\n    typeof crypto !== \\\"undefined\\\" &&\\n    typeof crypto?.getRandomValues === \\\"function\\\"\\n  ) {\\n    crypto.getRandomValues(buf);\\n  } else {\\n    for (let i = 0; i \u003C 32; i++) {\\n      buf[i] = Math.floor(Math.random() * 255);\\n    }\\n  }\\n  return bytesToString(buf);\\n}\\n\\nconst AnnotationPrefix = \\\"pdfjs_internal_id_\\\";\\n\\nconst FontRenderOps = {\\n  BEZIER_CURVE_TO: 0,\\n  MOVE_TO: 1,\\n  LINE_TO: 2,\\n  QUADRATIC_CURVE_TO: 3,\\n  RESTORE: 4,\\n  SAVE: 5,\\n  SCALE: 6,\\n  TRANSFORM: 7,\\n  TRANSLATE: 8,\\n};\\n\\nexport {\\n  AbortException,\\n  AnnotationActionEventType,\\n  AnnotationBorderStyleType,\\n  AnnotationEditorParamsType,\\n  AnnotationEditorPrefix,\\n  AnnotationEditorType,\\n  AnnotationFieldFlag,\\n  AnnotationFlag,\\n  AnnotationMode,\\n  AnnotationPrefix,\\n  AnnotationReplyType,\\n  AnnotationType,\\n  assert,\\n  BaseException,\\n  BASELINE_FACTOR,\\n  bytesToString,\\n  CMapCompressionType,\\n  createValidAbsoluteUrl,\\n  DocumentActionEventType,\\n  FeatureTest,\\n  FONT_IDENTITY_MATRIX,\\n  FontRenderOps,\\n  FormatError,\\n  getModificationDate,\\n  getUuid,\\n  getVerbosityLevel,\\n  IDENTITY_MATRIX,\\n  ImageKind,\\n  info,\\n  InvalidPDFException,\\n  isArrayEqual,\\n  isNodeJS,\\n  LINE_DESCENT_FACTOR,\\n  LINE_FACTOR,\\n  MAX_IMAGE_SIZE_TO_CACHE,\\n  MissingPDFException,\\n  normalizeUnicode,\\n  objectFromMap,\\n  objectSize,\\n  OPS,\\n  PageActionEventType,\\n  PasswordException,\\n  PasswordResponses,\\n  PermissionFlag,\\n  RenderingIntentFlag,\\n  setVerbosityLevel,\\n  shadow,\\n  string32,\\n  stringToBytes,\\n  stringToPDFString,\\n  stringToUTF8String,\\n  TextRenderingMode,\\n  UnexpectedResponseException,\\n  UnknownErrorException,\\n  unreachable,\\n  utf8StringToString,\\n  Util,\\n  VerbosityLevel,\\n  warn,\\n};\\n\",\"\u002F* Copyright 2015 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { CMapCompressionType, unreachable } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nclass BaseFilterFactory {\\n  constructor() {\\n    if (this.constructor === BaseFilterFactory) {\\n      unreachable(\\\"Cannot initialize BaseFilterFactory.\\\");\\n    }\\n  }\\n\\n  addFilter(maps) {\\n    return \\\"none\\\";\\n  }\\n\\n  addHCMFilter(fgColor, bgColor) {\\n    return \\\"none\\\";\\n  }\\n\\n  addAlphaFilter(map) {\\n    return \\\"none\\\";\\n  }\\n\\n  addLuminosityFilter(map) {\\n    return \\\"none\\\";\\n  }\\n\\n  addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\\n    return \\\"none\\\";\\n  }\\n\\n  destroy(keepHCM = false) {}\\n}\\n\\nclass BaseCanvasFactory {\\n  constructor() {\\n    if (this.constructor === BaseCanvasFactory) {\\n      unreachable(\\\"Cannot initialize BaseCanvasFactory.\\\");\\n    }\\n  }\\n\\n  create(width, height) {\\n    if (width \u003C= 0 || height \u003C= 0) {\\n      throw new Error(\\\"Invalid canvas size\\\");\\n    }\\n    const canvas = this._createCanvas(width, height);\\n    return {\\n      canvas,\\n      context: canvas.getContext(\\\"2d\\\"),\\n    };\\n  }\\n\\n  reset(canvasAndContext, width, height) {\\n    if (!canvasAndContext.canvas) {\\n      throw new Error(\\\"Canvas is not specified\\\");\\n    }\\n    if (width \u003C= 0 || height \u003C= 0) {\\n      throw new Error(\\\"Invalid canvas size\\\");\\n    }\\n    canvasAndContext.canvas.width = width;\\n    canvasAndContext.canvas.height = height;\\n  }\\n\\n  destroy(canvasAndContext) {\\n    if (!canvasAndContext.canvas) {\\n      throw new Error(\\\"Canvas is not specified\\\");\\n    }\\n    \u002F\u002F Zeroing the width and height cause Firefox to release graphics\\n    \u002F\u002F resources immediately, which can greatly reduce memory consumption.\\n    canvasAndContext.canvas.width = 0;\\n    canvasAndContext.canvas.height = 0;\\n    canvasAndContext.canvas = null;\\n    canvasAndContext.context = null;\\n  }\\n\\n  \u002F**\\n   * @ignore\\n   *\u002F\\n  _createCanvas(width, height) {\\n    unreachable(\\\"Abstract method `_createCanvas` called.\\\");\\n  }\\n}\\n\\nclass BaseCMapReaderFactory {\\n  constructor({ baseUrl = null, isCompressed = true }) {\\n    if (this.constructor === BaseCMapReaderFactory) {\\n      unreachable(\\\"Cannot initialize BaseCMapReaderFactory.\\\");\\n    }\\n    this.baseUrl = baseUrl;\\n    this.isCompressed = isCompressed;\\n  }\\n\\n  async fetch({ name }) {\\n    if (!this.baseUrl) {\\n      throw new Error(\\n        'The CMap \\\"baseUrl\\\" parameter must be specified, ensure that ' +\\n          'the \\\"cMapUrl\\\" and \\\"cMapPacked\\\" API parameters are provided.'\\n      );\\n    }\\n    if (!name) {\\n      throw new Error(\\\"CMap name must be specified.\\\");\\n    }\\n    const url = this.baseUrl + name + (this.isCompressed ? \\\".bcmap\\\" : \\\"\\\");\\n    const compressionType = this.isCompressed\\n      ? CMapCompressionType.BINARY\\n      : CMapCompressionType.NONE;\\n\\n    return this._fetchData(url, compressionType).catch(reason => {\\n      throw new Error(\\n        `Unable to load ${this.isCompressed ? \\\"binary \\\" : \\\"\\\"}CMap at: ${url}`\\n      );\\n    });\\n  }\\n\\n  \u002F**\\n   * @ignore\\n   *\u002F\\n  _fetchData(url, compressionType) {\\n    unreachable(\\\"Abstract method `_fetchData` called.\\\");\\n  }\\n}\\n\\nclass BaseStandardFontDataFactory {\\n  constructor({ baseUrl = null }) {\\n    if (this.constructor === BaseStandardFontDataFactory) {\\n      unreachable(\\\"Cannot initialize BaseStandardFontDataFactory.\\\");\\n    }\\n    this.baseUrl = baseUrl;\\n  }\\n\\n  async fetch({ filename }) {\\n    if (!this.baseUrl) {\\n      throw new Error(\\n        'The standard font \\\"baseUrl\\\" parameter must be specified, ensure that ' +\\n          'the \\\"standardFontDataUrl\\\" API parameter is provided.'\\n      );\\n    }\\n    if (!filename) {\\n      throw new Error(\\\"Font filename must be specified.\\\");\\n    }\\n    const url = `${this.baseUrl}${filename}`;\\n\\n    return this._fetchData(url).catch(reason => {\\n      throw new Error(`Unable to load font data at: ${url}`);\\n    });\\n  }\\n\\n  \u002F**\\n   * @ignore\\n   *\u002F\\n  _fetchData(url) {\\n    unreachable(\\\"Abstract method `_fetchData` called.\\\");\\n  }\\n}\\n\\nclass BaseSVGFactory {\\n  constructor() {\\n    if (this.constructor === BaseSVGFactory) {\\n      unreachable(\\\"Cannot initialize BaseSVGFactory.\\\");\\n    }\\n  }\\n\\n  create(width, height, skipDimensions = false) {\\n    if (width \u003C= 0 || height \u003C= 0) {\\n      throw new Error(\\\"Invalid SVG dimensions\\\");\\n    }\\n    const svg = this._createSVG(\\\"svg:svg\\\");\\n    svg.setAttribute(\\\"version\\\", \\\"1.1\\\");\\n\\n    if (!skipDimensions) {\\n      svg.setAttribute(\\\"width\\\", `${width}px`);\\n      svg.setAttribute(\\\"height\\\", `${height}px`);\\n    }\\n\\n    svg.setAttribute(\\\"preserveAspectRatio\\\", \\\"none\\\");\\n    svg.setAttribute(\\\"viewBox\\\", `0 0 ${width} ${height}`);\\n\\n    return svg;\\n  }\\n\\n  createElement(type) {\\n    if (typeof type !== \\\"string\\\") {\\n      throw new Error(\\\"Invalid SVG element type\\\");\\n    }\\n    return this._createSVG(type);\\n  }\\n\\n  \u002F**\\n   * @ignore\\n   *\u002F\\n  _createSVG(type) {\\n    unreachable(\\\"Abstract method `_createSVG` called.\\\");\\n  }\\n}\\n\\nexport {\\n  BaseCanvasFactory,\\n  BaseCMapReaderFactory,\\n  BaseFilterFactory,\\n  BaseStandardFontDataFactory,\\n  BaseSVGFactory,\\n};\\n\",\"\u002F* Copyright 2015 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  BaseCanvasFactory,\\n  BaseCMapReaderFactory,\\n  BaseFilterFactory,\\n  BaseStandardFontDataFactory,\\n  BaseSVGFactory,\\n} from \\\".\u002Fbase_factory.js\\\";\\nimport {\\n  BaseException,\\n  FeatureTest,\\n  shadow,\\n  stringToBytes,\\n  Util,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nconst SVG_NS = \\\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\\\";\\n\\nclass PixelsPerInch {\\n  static CSS = 96.0;\\n\\n  static PDF = 72.0;\\n\\n  static PDF_TO_CSS_UNITS = this.CSS \u002F this.PDF;\\n}\\n\\n\u002F**\\n * FilterFactory aims to create some SVG filters we can use when drawing an\\n * image (or whatever) on a canvas.\\n * Filters aren't applied with ctx.putImageData because it just overwrites the\\n * underlying pixels.\\n * With these filters, it's possible for example to apply some transfer maps on\\n * an image without the need to apply them on the pixel arrays: the renderer\\n * does the magic for us.\\n *\u002F\\nclass DOMFilterFactory extends BaseFilterFactory {\\n  #_cache;\\n\\n  #_defs;\\n\\n  #docId;\\n\\n  #document;\\n\\n  #_hcmCache;\\n\\n  #id = 0;\\n\\n  constructor({ docId, ownerDocument = globalThis.document } = {}) {\\n    super();\\n    this.#docId = docId;\\n    this.#document = ownerDocument;\\n  }\\n\\n  get #cache() {\\n    return (this.#_cache ||= new Map());\\n  }\\n\\n  get #hcmCache() {\\n    return (this.#_hcmCache ||= new Map());\\n  }\\n\\n  get #defs() {\\n    if (!this.#_defs) {\\n      const div = this.#document.createElement(\\\"div\\\");\\n      const { style } = div;\\n      style.visibility = \\\"hidden\\\";\\n      style.contain = \\\"strict\\\";\\n      style.width = style.height = 0;\\n      style.position = \\\"absolute\\\";\\n      style.top = style.left = 0;\\n      style.zIndex = -1;\\n\\n      const svg = this.#document.createElementNS(SVG_NS, \\\"svg\\\");\\n      svg.setAttribute(\\\"width\\\", 0);\\n      svg.setAttribute(\\\"height\\\", 0);\\n      this.#_defs = this.#document.createElementNS(SVG_NS, \\\"defs\\\");\\n      div.append(svg);\\n      svg.append(this.#_defs);\\n      this.#document.body.append(div);\\n    }\\n    return this.#_defs;\\n  }\\n\\n  #createTables(maps) {\\n    if (maps.length === 1) {\\n      const mapR = maps[0];\\n      const buffer = new Array(256);\\n      for (let i = 0; i \u003C 256; i++) {\\n        buffer[i] = mapR[i] \u002F 255;\\n      }\\n\\n      const table = buffer.join(\\\",\\\");\\n      return [table, table, table];\\n    }\\n\\n    const [mapR, mapG, mapB] = maps;\\n    const bufferR = new Array(256);\\n    const bufferG = new Array(256);\\n    const bufferB = new Array(256);\\n    for (let i = 0; i \u003C 256; i++) {\\n      bufferR[i] = mapR[i] \u002F 255;\\n      bufferG[i] = mapG[i] \u002F 255;\\n      bufferB[i] = mapB[i] \u002F 255;\\n    }\\n    return [bufferR.join(\\\",\\\"), bufferG.join(\\\",\\\"), bufferB.join(\\\",\\\")];\\n  }\\n\\n  addFilter(maps) {\\n    if (!maps) {\\n      return \\\"none\\\";\\n    }\\n\\n    \u002F\u002F When a page is zoomed the page is re-drawn but the maps are likely\\n    \u002F\u002F the same.\\n    let value = this.#cache.get(maps);\\n    if (value) {\\n      return value;\\n    }\\n\\n    const [tableR, tableG, tableB] = this.#createTables(maps);\\n    const key = maps.length === 1 ? tableR : `${tableR}${tableG}${tableB}`;\\n\\n    value = this.#cache.get(key);\\n    if (value) {\\n      this.#cache.set(maps, value);\\n      return value;\\n    }\\n\\n    \u002F\u002F We create a SVG filter: feComponentTransferElement\\n    \u002F\u002F  https:\u002F\u002Fwww.w3.org\u002FTR\u002FSVG11\u002Ffilters.html#feComponentTransferElement\\n\\n    const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\\n    const url = `url(#${id})`;\\n    this.#cache.set(maps, url);\\n    this.#cache.set(key, url);\\n\\n    const filter = this.#createFilter(id);\\n    this.#addTransferMapConversion(tableR, tableG, tableB, filter);\\n\\n    return url;\\n  }\\n\\n  addHCMFilter(fgColor, bgColor) {\\n    const key = `${fgColor}-${bgColor}`;\\n    const filterName = \\\"base\\\";\\n    let info = this.#hcmCache.get(filterName);\\n    if (info?.key === key) {\\n      return info.url;\\n    }\\n\\n    if (info) {\\n      info.filter?.remove();\\n      info.key = key;\\n      info.url = \\\"none\\\";\\n      info.filter = null;\\n    } else {\\n      info = {\\n        key,\\n        url: \\\"none\\\",\\n        filter: null,\\n      };\\n      this.#hcmCache.set(filterName, info);\\n    }\\n\\n    if (!fgColor || !bgColor) {\\n      return info.url;\\n    }\\n\\n    const fgRGB = this.#getRGB(fgColor);\\n    fgColor = Util.makeHexColor(...fgRGB);\\n    const bgRGB = this.#getRGB(bgColor);\\n    bgColor = Util.makeHexColor(...bgRGB);\\n    this.#defs.style.color = \\\"\\\";\\n\\n    if (\\n      (fgColor === \\\"#000000\\\" && bgColor === \\\"#ffffff\\\") ||\\n      fgColor === bgColor\\n    ) {\\n      return info.url;\\n    }\\n\\n    \u002F\u002F https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAccessibility\u002FUnderstanding_Colors_and_Luminance\\n    \u002F\u002F\\n    \u002F\u002F Relative luminance:\\n    \u002F\u002F https:\u002F\u002Fwww.w3.org\u002FTR\u002FWCAG20\u002F#relativeluminancedef\\n    \u002F\u002F\\n    \u002F\u002F We compute the rounded luminance of the default background color.\\n    \u002F\u002F Then for every color in the pdf, if its rounded luminance is the\\n    \u002F\u002F same as the background one then it's replaced by the new\\n    \u002F\u002F background color else by the foreground one.\\n    const map = new Array(256);\\n    for (let i = 0; i \u003C= 255; i++) {\\n      const x = i \u002F 255;\\n      map[i] = x \u003C= 0.03928 ? x \u002F 12.92 : ((x + 0.055) \u002F 1.055) ** 2.4;\\n    }\\n    const table = map.join(\\\",\\\");\\n\\n    const id = `g_${this.#docId}_hcm_filter`;\\n    const filter = (info.filter = this.#createFilter(id));\\n    this.#addTransferMapConversion(table, table, table, filter);\\n    this.#addGrayConversion(filter);\\n\\n    const getSteps = (c, n) => {\\n      const start = fgRGB[c] \u002F 255;\\n      const end = bgRGB[c] \u002F 255;\\n      const arr = new Array(n + 1);\\n      for (let i = 0; i \u003C= n; i++) {\\n        arr[i] = start + (i \u002F n) * (end - start);\\n      }\\n      return arr.join(\\\",\\\");\\n    };\\n    this.#addTransferMapConversion(\\n      getSteps(0, 5),\\n      getSteps(1, 5),\\n      getSteps(2, 5),\\n      filter\\n    );\\n\\n    info.url = `url(#${id})`;\\n    return info.url;\\n  }\\n\\n  addAlphaFilter(map) {\\n    \u002F\u002F When a page is zoomed the page is re-drawn but the maps are likely\\n    \u002F\u002F the same.\\n    let value = this.#cache.get(map);\\n    if (value) {\\n      return value;\\n    }\\n\\n    const [tableA] = this.#createTables([map]);\\n    const key = `alpha_${tableA}`;\\n\\n    value = this.#cache.get(key);\\n    if (value) {\\n      this.#cache.set(map, value);\\n      return value;\\n    }\\n\\n    const id = `g_${this.#docId}_alpha_map_${this.#id++}`;\\n    const url = `url(#${id})`;\\n    this.#cache.set(map, url);\\n    this.#cache.set(key, url);\\n\\n    const filter = this.#createFilter(id);\\n    this.#addTransferMapAlphaConversion(tableA, filter);\\n\\n    return url;\\n  }\\n\\n  addLuminosityFilter(map) {\\n    \u002F\u002F When a page is zoomed the page is re-drawn but the maps are likely\\n    \u002F\u002F the same.\\n    let value = this.#cache.get(map || \\\"luminosity\\\");\\n    if (value) {\\n      return value;\\n    }\\n\\n    let tableA, key;\\n    if (map) {\\n      [tableA] = this.#createTables([map]);\\n      key = `luminosity_${tableA}`;\\n    } else {\\n      key = \\\"luminosity\\\";\\n    }\\n\\n    value = this.#cache.get(key);\\n    if (value) {\\n      this.#cache.set(map, value);\\n      return value;\\n    }\\n\\n    const id = `g_${this.#docId}_luminosity_map_${this.#id++}`;\\n    const url = `url(#${id})`;\\n    this.#cache.set(map, url);\\n    this.#cache.set(key, url);\\n\\n    const filter = this.#createFilter(id);\\n    this.#addLuminosityConversion(filter);\\n    if (map) {\\n      this.#addTransferMapAlphaConversion(tableA, filter);\\n    }\\n\\n    return url;\\n  }\\n\\n  addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\\n    const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\\n    let info = this.#hcmCache.get(filterName);\\n    if (info?.key === key) {\\n      return info.url;\\n    }\\n\\n    if (info) {\\n      info.filter?.remove();\\n      info.key = key;\\n      info.url = \\\"none\\\";\\n      info.filter = null;\\n    } else {\\n      info = {\\n        key,\\n        url: \\\"none\\\",\\n        filter: null,\\n      };\\n      this.#hcmCache.set(filterName, info);\\n    }\\n\\n    if (!fgColor || !bgColor) {\\n      return info.url;\\n    }\\n\\n    const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\\n    let fgGray = Math.round(\\n      0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]\\n    );\\n    let bgGray = Math.round(\\n      0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]\\n    );\\n    let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(\\n      this.#getRGB.bind(this)\\n    );\\n    if (bgGray \u003C fgGray) {\\n      [fgGray, bgGray, newFgRGB, newBgRGB] = [\\n        bgGray,\\n        fgGray,\\n        newBgRGB,\\n        newFgRGB,\\n      ];\\n    }\\n    this.#defs.style.color = \\\"\\\";\\n\\n    \u002F\u002F Now we can create the filters to highlight some canvas parts.\\n    \u002F\u002F The colors in the pdf will almost be Canvas and CanvasText, hence we\\n    \u002F\u002F want to filter them to finally get Highlight and HighlightText.\\n    \u002F\u002F Since we're in HCM the background color and the foreground color should\\n    \u002F\u002F be really different when converted to grayscale (if they're not then it\\n    \u002F\u002F means that we've a poor contrast). Once the canvas colors are converted\\n    \u002F\u002F to grayscale we can easily map them on their new colors.\\n    \u002F\u002F The grayscale step is important because if we've something like:\\n    \u002F\u002F   fgColor = #FF....\\n    \u002F\u002F   bgColor = #FF....\\n    \u002F\u002F   then we are enable to map the red component on the new red components\\n    \u002F\u002F   which can be different.\\n\\n    const getSteps = (fg, bg, n) => {\\n      const arr = new Array(256);\\n      const step = (bgGray - fgGray) \u002F n;\\n      const newStart = fg \u002F 255;\\n      const newStep = (bg - fg) \u002F (255 * n);\\n      let prev = 0;\\n      for (let i = 0; i \u003C= n; i++) {\\n        const k = Math.round(fgGray + i * step);\\n        const value = newStart + i * newStep;\\n        for (let j = prev; j \u003C= k; j++) {\\n          arr[j] = value;\\n        }\\n        prev = k + 1;\\n      }\\n      for (let i = prev; i \u003C 256; i++) {\\n        arr[i] = arr[prev - 1];\\n      }\\n      return arr.join(\\\",\\\");\\n    };\\n\\n    const id = `g_${this.#docId}_hcm_${filterName}_filter`;\\n    const filter = (info.filter = this.#createFilter(id));\\n\\n    this.#addGrayConversion(filter);\\n    this.#addTransferMapConversion(\\n      getSteps(newFgRGB[0], newBgRGB[0], 5),\\n      getSteps(newFgRGB[1], newBgRGB[1], 5),\\n      getSteps(newFgRGB[2], newBgRGB[2], 5),\\n      filter\\n    );\\n\\n    info.url = `url(#${id})`;\\n    return info.url;\\n  }\\n\\n  destroy(keepHCM = false) {\\n    if (keepHCM && this.#hcmCache.size !== 0) {\\n      return;\\n    }\\n    if (this.#_defs) {\\n      this.#_defs.parentNode.parentNode.remove();\\n      this.#_defs = null;\\n    }\\n    if (this.#_cache) {\\n      this.#_cache.clear();\\n      this.#_cache = null;\\n    }\\n    this.#id = 0;\\n  }\\n\\n  #addLuminosityConversion(filter) {\\n    const feColorMatrix = this.#document.createElementNS(\\n      SVG_NS,\\n      \\\"feColorMatrix\\\"\\n    );\\n    feColorMatrix.setAttribute(\\\"type\\\", \\\"matrix\\\");\\n    feColorMatrix.setAttribute(\\n      \\\"values\\\",\\n      \\\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0\\\"\\n    );\\n    filter.append(feColorMatrix);\\n  }\\n\\n  #addGrayConversion(filter) {\\n    const feColorMatrix = this.#document.createElementNS(\\n      SVG_NS,\\n      \\\"feColorMatrix\\\"\\n    );\\n    feColorMatrix.setAttribute(\\\"type\\\", \\\"matrix\\\");\\n    feColorMatrix.setAttribute(\\n      \\\"values\\\",\\n      \\\"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\\\"\\n    );\\n    filter.append(feColorMatrix);\\n  }\\n\\n  #createFilter(id) {\\n    const filter = this.#document.createElementNS(SVG_NS, \\\"filter\\\");\\n    filter.setAttribute(\\\"color-interpolation-filters\\\", \\\"sRGB\\\");\\n    filter.setAttribute(\\\"id\\\", id);\\n    this.#defs.append(filter);\\n\\n    return filter;\\n  }\\n\\n  #appendFeFunc(feComponentTransfer, func, table) {\\n    const feFunc = this.#document.createElementNS(SVG_NS, func);\\n    feFunc.setAttribute(\\\"type\\\", \\\"discrete\\\");\\n    feFunc.setAttribute(\\\"tableValues\\\", table);\\n    feComponentTransfer.append(feFunc);\\n  }\\n\\n  #addTransferMapConversion(rTable, gTable, bTable, filter) {\\n    const feComponentTransfer = this.#document.createElementNS(\\n      SVG_NS,\\n      \\\"feComponentTransfer\\\"\\n    );\\n    filter.append(feComponentTransfer);\\n    this.#appendFeFunc(feComponentTransfer, \\\"feFuncR\\\", rTable);\\n    this.#appendFeFunc(feComponentTransfer, \\\"feFuncG\\\", gTable);\\n    this.#appendFeFunc(feComponentTransfer, \\\"feFuncB\\\", bTable);\\n  }\\n\\n  #addTransferMapAlphaConversion(aTable, filter) {\\n    const feComponentTransfer = this.#document.createElementNS(\\n      SVG_NS,\\n      \\\"feComponentTransfer\\\"\\n    );\\n    filter.append(feComponentTransfer);\\n    this.#appendFeFunc(feComponentTransfer, \\\"feFuncA\\\", aTable);\\n  }\\n\\n  #getRGB(color) {\\n    this.#defs.style.color = color;\\n    return getRGB(getComputedStyle(this.#defs).getPropertyValue(\\\"color\\\"));\\n  }\\n}\\n\\nclass DOMCanvasFactory extends BaseCanvasFactory {\\n  constructor({ ownerDocument = globalThis.document } = {}) {\\n    super();\\n    this._document = ownerDocument;\\n  }\\n\\n  \u002F**\\n   * @ignore\\n   *\u002F\\n  _createCanvas(width, height) {\\n    const canvas = this._document.createElement(\\\"canvas\\\");\\n    canvas.width = width;\\n    canvas.height = height;\\n    return canvas;\\n  }\\n}\\n\\nasync function fetchData(url, type = \\\"text\\\") {\\n  if (\\n    (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) ||\\n    isValidFetchUrl(url, document.baseURI)\\n  ) {\\n    const response = await fetch(url);\\n    if (!response.ok) {\\n      throw new Error(response.statusText);\\n    }\\n    switch (type) {\\n      case \\\"arraybuffer\\\":\\n        return response.arrayBuffer();\\n      case \\\"blob\\\":\\n        return response.blob();\\n      case \\\"json\\\":\\n        return response.json();\\n    }\\n    return response.text();\\n  }\\n\\n  \u002F\u002F The Fetch API is not supported.\\n  return new Promise((resolve, reject) => {\\n    const request = new XMLHttpRequest();\\n    request.open(\\\"GET\\\", url, \u002F* async = *\u002F true);\\n    request.responseType = type;\\n\\n    request.onreadystatechange = () => {\\n      if (request.readyState !== XMLHttpRequest.DONE) {\\n        return;\\n      }\\n      if (request.status === 200 || request.status === 0) {\\n        switch (type) {\\n          case \\\"arraybuffer\\\":\\n          case \\\"blob\\\":\\n          case \\\"json\\\":\\n            resolve(request.response);\\n            return;\\n        }\\n        resolve(request.responseText);\\n        return;\\n      }\\n      reject(new Error(request.statusText));\\n    };\\n\\n    request.send(null);\\n  });\\n}\\n\\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\\n  \u002F**\\n   * @ignore\\n   *\u002F\\n  _fetchData(url, compressionType) {\\n    return fetchData(\\n      url,\\n      \u002F* type = *\u002F this.isCompressed ? \\\"arraybuffer\\\" : \\\"text\\\"\\n    ).then(data => ({\\n      cMapData:\\n        data instanceof ArrayBuffer\\n          ? new Uint8Array(data)\\n          : stringToBytes(data),\\n      compressionType,\\n    }));\\n  }\\n}\\n\\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\\n  \u002F**\\n   * @ignore\\n   *\u002F\\n  _fetchData(url) {\\n    return fetchData(url, \u002F* type = *\u002F \\\"arraybuffer\\\").then(\\n      data => new Uint8Array(data)\\n    );\\n  }\\n}\\n\\nclass DOMSVGFactory extends BaseSVGFactory {\\n  \u002F**\\n   * @ignore\\n   *\u002F\\n  _createSVG(type) {\\n    return document.createElementNS(SVG_NS, type);\\n  }\\n}\\n\\n\u002F**\\n * @typedef {Object} PageViewportParameters\\n * @property {Array\u003Cnumber>} viewBox - The xMin, yMin, xMax and\\n *   yMax coordinates.\\n * @property {number} scale - The scale of the viewport.\\n * @property {number} rotation - The rotation, in degrees, of the viewport.\\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset. The\\n *   default value is `0`.\\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset. The\\n *   default value is `0`.\\n * @property {boolean} [dontFlip] - If true, the y-axis will not be flipped.\\n *   The default value is `false`.\\n *\u002F\\n\\n\u002F**\\n * @typedef {Object} PageViewportCloneParameters\\n * @property {number} [scale] - The scale, overriding the one in the cloned\\n *   viewport. The default value is `this.scale`.\\n * @property {number} [rotation] - The rotation, in degrees, overriding the one\\n *   in the cloned viewport. The default value is `this.rotation`.\\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\\n *   The default value is `this.offsetX`.\\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\\n *   The default value is `this.offsetY`.\\n * @property {boolean} [dontFlip] - If true, the x-axis will not be flipped.\\n *   The default value is `false`.\\n *\u002F\\n\\n\u002F**\\n * PDF page viewport created based on scale, rotation and offset.\\n *\u002F\\nclass PageViewport {\\n  \u002F**\\n   * @param {PageViewportParameters}\\n   *\u002F\\n  constructor({\\n    viewBox,\\n    scale,\\n    rotation,\\n    offsetX = 0,\\n    offsetY = 0,\\n    dontFlip = false,\\n  }) {\\n    this.viewBox = viewBox;\\n    this.scale = scale;\\n    this.rotation = rotation;\\n    this.offsetX = offsetX;\\n    this.offsetY = offsetY;\\n\\n    \u002F\u002F creating transform to convert pdf coordinate system to the normal\\n    \u002F\u002F canvas like coordinates taking in account scale and rotation\\n    const centerX = (viewBox[2] + viewBox[0]) \u002F 2;\\n    const centerY = (viewBox[3] + viewBox[1]) \u002F 2;\\n    let rotateA, rotateB, rotateC, rotateD;\\n    \u002F\u002F Normalize the rotation, by clamping it to the [0, 360) range.\\n    rotation %= 360;\\n    if (rotation \u003C 0) {\\n      rotation += 360;\\n    }\\n    switch (rotation) {\\n      case 180:\\n        rotateA = -1;\\n        rotateB = 0;\\n        rotateC = 0;\\n        rotateD = 1;\\n        break;\\n      case 90:\\n        rotateA = 0;\\n        rotateB = 1;\\n        rotateC = 1;\\n        rotateD = 0;\\n        break;\\n      case 270:\\n        rotateA = 0;\\n        rotateB = -1;\\n        rotateC = -1;\\n        rotateD = 0;\\n        break;\\n      case 0:\\n        rotateA = 1;\\n        rotateB = 0;\\n        rotateC = 0;\\n        rotateD = -1;\\n        break;\\n      default:\\n        throw new Error(\\n          \\\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\\\"\\n        );\\n    }\\n\\n    if (dontFlip) {\\n      rotateC = -rotateC;\\n      rotateD = -rotateD;\\n    }\\n\\n    let offsetCanvasX, offsetCanvasY;\\n    let width, height;\\n    if (rotateA === 0) {\\n      offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\\n      offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\\n      width = (viewBox[3] - viewBox[1]) * scale;\\n      height = (viewBox[2] - viewBox[0]) * scale;\\n    } else {\\n      offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\\n      offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\\n      width = (viewBox[2] - viewBox[0]) * scale;\\n      height = (viewBox[3] - viewBox[1]) * scale;\\n    }\\n    \u002F\u002F creating transform for the following operations:\\n    \u002F\u002F translate(-centerX, -centerY), rotate and flip vertically,\\n    \u002F\u002F scale, and translate(offsetCanvasX, offsetCanvasY)\\n    this.transform = [\\n      rotateA * scale,\\n      rotateB * scale,\\n      rotateC * scale,\\n      rotateD * scale,\\n      offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,\\n      offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY,\\n    ];\\n\\n    this.width = width;\\n    this.height = height;\\n  }\\n\\n  \u002F**\\n   * The original, un-scaled, viewport dimensions.\\n   * @type {Object}\\n   *\u002F\\n  get rawDims() {\\n    const { viewBox } = this;\\n    return shadow(this, \\\"rawDims\\\", {\\n      pageWidth: viewBox[2] - viewBox[0],\\n      pageHeight: viewBox[3] - viewBox[1],\\n      pageX: viewBox[0],\\n      pageY: viewBox[1],\\n    });\\n  }\\n\\n  \u002F**\\n   * Clones viewport, with optional additional properties.\\n   * @param {PageViewportCloneParameters} [params]\\n   * @returns {PageViewport} Cloned viewport.\\n   *\u002F\\n  clone({\\n    scale = this.scale,\\n    rotation = this.rotation,\\n    offsetX = this.offsetX,\\n    offsetY = this.offsetY,\\n    dontFlip = false,\\n  } = {}) {\\n    return new PageViewport({\\n      viewBox: this.viewBox.slice(),\\n      scale,\\n      rotation,\\n      offsetX,\\n      offsetY,\\n      dontFlip,\\n    });\\n  }\\n\\n  \u002F**\\n   * Converts PDF point to the viewport coordinates. For examples, useful for\\n   * converting PDF location into canvas pixel coordinates.\\n   * @param {number} x - The x-coordinate.\\n   * @param {number} y - The y-coordinate.\\n   * @returns {Array} Array containing `x`- and `y`-coordinates of the\\n   *   point in the viewport coordinate space.\\n   * @see {@link convertToPdfPoint}\\n   * @see {@link convertToViewportRectangle}\\n   *\u002F\\n  convertToViewportPoint(x, y) {\\n    return Util.applyTransform([x, y], this.transform);\\n  }\\n\\n  \u002F**\\n   * Converts PDF rectangle to the viewport coordinates.\\n   * @param {Array} rect - The xMin, yMin, xMax and yMax coordinates.\\n   * @returns {Array} Array containing corresponding coordinates of the\\n   *   rectangle in the viewport coordinate space.\\n   * @see {@link convertToViewportPoint}\\n   *\u002F\\n  convertToViewportRectangle(rect) {\\n    const topLeft = Util.applyTransform([rect[0], rect[1]], this.transform);\\n    const bottomRight = Util.applyTransform([rect[2], rect[3]], this.transform);\\n    return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\\n  }\\n\\n  \u002F**\\n   * Converts viewport coordinates to the PDF location. For examples, useful\\n   * for converting canvas pixel location into PDF one.\\n   * @param {number} x - The x-coordinate.\\n   * @param {number} y - The y-coordinate.\\n   * @returns {Array} Array containing `x`- and `y`-coordinates of the\\n   *   point in the PDF coordinate space.\\n   * @see {@link convertToViewportPoint}\\n   *\u002F\\n  convertToPdfPoint(x, y) {\\n    return Util.applyInverseTransform([x, y], this.transform);\\n  }\\n}\\n\\nclass RenderingCancelledException extends BaseException {\\n  constructor(msg, extraDelay = 0) {\\n    super(msg, \\\"RenderingCancelledException\\\");\\n    this.extraDelay = extraDelay;\\n  }\\n}\\n\\nfunction isDataScheme(url) {\\n  const ii = url.length;\\n  let i = 0;\\n  while (i \u003C ii && url[i].trim() === \\\"\\\") {\\n    i++;\\n  }\\n  return url.substring(i, i + 5).toLowerCase() === \\\"data:\\\";\\n}\\n\\nfunction isPdfFile(filename) {\\n  return typeof filename === \\\"string\\\" && \u002F\\\\.pdf$\u002Fi.test(filename);\\n}\\n\\n\u002F**\\n * Gets the filename from a given URL.\\n * @param {string} url\\n * @returns {string}\\n *\u002F\\nfunction getFilenameFromUrl(url) {\\n  [url] = url.split(\u002F[#?]\u002F, 1);\\n  return url.substring(url.lastIndexOf(\\\"\u002F\\\") + 1);\\n}\\n\\n\u002F**\\n * Returns the filename or guessed filename from the url (see issue 3455).\\n * @param {string} url - The original PDF location.\\n * @param {string} defaultFilename - The value returned if the filename is\\n *   unknown, or the protocol is unsupported.\\n * @returns {string} Guessed PDF filename.\\n *\u002F\\nfunction getPdfFilenameFromUrl(url, defaultFilename = \\\"document.pdf\\\") {\\n  if (typeof url !== \\\"string\\\") {\\n    return defaultFilename;\\n  }\\n  if (isDataScheme(url)) {\\n    warn('getPdfFilenameFromUrl: ignore \\\"data:\\\"-URL for performance reasons.');\\n    return defaultFilename;\\n  }\\n  const reURI = \u002F^(?:(?:[^:]+:)?\\\\\u002F\\\\\u002F[^\u002F]+)?([^?#]*)(\\\\?[^#]*)?(#.*)?$\u002F;\\n  \u002F\u002F              SCHEME        HOST        1.PATH  2.QUERY   3.REF\\n  \u002F\u002F Pattern to get last matching NAME.pdf\\n  const reFilename = \u002F[^\u002F?#=]+\\\\.pdf\\\\b(?!.*\\\\.pdf\\\\b)\u002Fi;\\n  const splitURI = reURI.exec(url);\\n  let suggestedFilename =\\n    reFilename.exec(splitURI[1]) ||\\n    reFilename.exec(splitURI[2]) ||\\n    reFilename.exec(splitURI[3]);\\n  if (suggestedFilename) {\\n    suggestedFilename = suggestedFilename[0];\\n    if (suggestedFilename.includes(\\\"%\\\")) {\\n      \u002F\u002F URL-encoded %2Fpath%2Fto%2Ffile.pdf should be file.pdf\\n      try {\\n        suggestedFilename = reFilename.exec(\\n          decodeURIComponent(suggestedFilename)\\n        )[0];\\n      } catch {\\n        \u002F\u002F Possible (extremely rare) errors:\\n        \u002F\u002F URIError \\\"Malformed URI\\\", e.g. for \\\"%AA.pdf\\\"\\n        \u002F\u002F TypeError \\\"null has no properties\\\", e.g. for \\\"%2F.pdf\\\"\\n      }\\n    }\\n  }\\n  return suggestedFilename || defaultFilename;\\n}\\n\\nclass StatTimer {\\n  started = Object.create(null);\\n\\n  times = [];\\n\\n  time(name) {\\n    if (name in this.started) {\\n      warn(`Timer is already running for ${name}`);\\n    }\\n    this.started[name] = Date.now();\\n  }\\n\\n  timeEnd(name) {\\n    if (!(name in this.started)) {\\n      warn(`Timer has not been started for ${name}`);\\n    }\\n    this.times.push({\\n      name,\\n      start: this.started[name],\\n      end: Date.now(),\\n    });\\n    \u002F\u002F Remove timer from started so it can be called again.\\n    delete this.started[name];\\n  }\\n\\n  toString() {\\n    \u002F\u002F Find the longest name for padding purposes.\\n    const outBuf = [];\\n    let longest = 0;\\n    for (const { name } of this.times) {\\n      longest = Math.max(name.length, longest);\\n    }\\n    for (const { name, start, end } of this.times) {\\n      outBuf.push(`${name.padEnd(longest)} ${end - start}ms\\\\n`);\\n    }\\n    return outBuf.join(\\\"\\\");\\n  }\\n}\\n\\nfunction isValidFetchUrl(url, baseUrl) {\\n  if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n    throw new Error(\\\"Not implemented: isValidFetchUrl\\\");\\n  }\\n  try {\\n    const { protocol } = baseUrl ? new URL(url, baseUrl) : new URL(url);\\n    \u002F\u002F The Fetch API only supports the http\u002Fhttps protocols, and not file\u002Fftp.\\n    return protocol === \\\"http:\\\" || protocol === \\\"https:\\\";\\n  } catch {\\n    return false; \u002F\u002F `new URL()` will throw on incorrect data.\\n  }\\n}\\n\\n\u002F**\\n * Event handler to suppress context menu.\\n *\u002F\\nfunction noContextMenu(e) {\\n  e.preventDefault();\\n}\\n\\n\u002F\u002F Deprecated API function -- display regardless of the `verbosity` setting.\\nfunction deprecated(details) {\\n  console.log(\\\"Deprecated API usage: \\\" + details);\\n}\\n\\nlet pdfDateStringRegex;\\n\\nclass PDFDateString {\\n  \u002F**\\n   * Convert a PDF date string to a JavaScript `Date` object.\\n   *\\n   * The PDF date string format is described in section 7.9.4 of the official\\n   * PDF 32000-1:2008 specification. However, in the PDF 1.7 reference (sixth\\n   * edition) Adobe describes the same format including a trailing apostrophe.\\n   * This syntax in incorrect, but Adobe Acrobat creates PDF files that contain\\n   * them. We ignore all apostrophes as they are not necessary for date parsing.\\n   *\\n   * Moreover, Adobe Acrobat doesn't handle changing the date to universal time\\n   * and doesn't use the user's time zone (effectively ignoring the HH' and mm'\\n   * parts of the date string).\\n   *\\n   * @param {string} input\\n   * @returns {Date|null}\\n   *\u002F\\n  static toDateObject(input) {\\n    if (!input || typeof input !== \\\"string\\\") {\\n      return null;\\n    }\\n\\n    \u002F\u002F Lazily initialize the regular expression.\\n    pdfDateStringRegex ||= new RegExp(\\n      \\\"^D:\\\" + \u002F\u002F Prefix (required)\\n        \\\"(\\\\\\\\d{4})\\\" + \u002F\u002F Year (required)\\n        \\\"(\\\\\\\\d{2})?\\\" + \u002F\u002F Month (optional)\\n        \\\"(\\\\\\\\d{2})?\\\" + \u002F\u002F Day (optional)\\n        \\\"(\\\\\\\\d{2})?\\\" + \u002F\u002F Hour (optional)\\n        \\\"(\\\\\\\\d{2})?\\\" + \u002F\u002F Minute (optional)\\n        \\\"(\\\\\\\\d{2})?\\\" + \u002F\u002F Second (optional)\\n        \\\"([Z|+|-])?\\\" + \u002F\u002F Universal time relation (optional)\\n        \\\"(\\\\\\\\d{2})?\\\" + \u002F\u002F Offset hour (optional)\\n        \\\"'?\\\" + \u002F\u002F Splitting apostrophe (optional)\\n        \\\"(\\\\\\\\d{2})?\\\" + \u002F\u002F Offset minute (optional)\\n        \\\"'?\\\" \u002F\u002F Trailing apostrophe (optional)\\n    );\\n\\n    \u002F\u002F Optional fields that don't satisfy the requirements from the regular\\n    \u002F\u002F expression (such as incorrect digit counts or numbers that are out of\\n    \u002F\u002F range) will fall back the defaults from the specification.\\n    const matches = pdfDateStringRegex.exec(input);\\n    if (!matches) {\\n      return null;\\n    }\\n\\n    \u002F\u002F JavaScript's `Date` object expects the month to be between 0 and 11\\n    \u002F\u002F instead of 1 and 12, so we have to correct for that.\\n    const year = parseInt(matches[1], 10);\\n    let month = parseInt(matches[2], 10);\\n    month = month >= 1 && month \u003C= 12 ? month - 1 : 0;\\n    let day = parseInt(matches[3], 10);\\n    day = day >= 1 && day \u003C= 31 ? day : 1;\\n    let hour = parseInt(matches[4], 10);\\n    hour = hour >= 0 && hour \u003C= 23 ? hour : 0;\\n    let minute = parseInt(matches[5], 10);\\n    minute = minute >= 0 && minute \u003C= 59 ? minute : 0;\\n    let second = parseInt(matches[6], 10);\\n    second = second >= 0 && second \u003C= 59 ? second : 0;\\n    const universalTimeRelation = matches[7] || \\\"Z\\\";\\n    let offsetHour = parseInt(matches[8], 10);\\n    offsetHour = offsetHour >= 0 && offsetHour \u003C= 23 ? offsetHour : 0;\\n    let offsetMinute = parseInt(matches[9], 10) || 0;\\n    offsetMinute = offsetMinute >= 0 && offsetMinute \u003C= 59 ? offsetMinute : 0;\\n\\n    \u002F\u002F Universal time relation 'Z' means that the local time is equal to the\\n    \u002F\u002F universal time, whereas the relations '+'\u002F'-' indicate that the local\\n    \u002F\u002F time is later respectively earlier than the universal time. Every date\\n    \u002F\u002F is normalized to universal time.\\n    if (universalTimeRelation === \\\"-\\\") {\\n      hour += offsetHour;\\n      minute += offsetMinute;\\n    } else if (universalTimeRelation === \\\"+\\\") {\\n      hour -= offsetHour;\\n      minute -= offsetMinute;\\n    }\\n\\n    return new Date(Date.UTC(year, month, day, hour, minute, second));\\n  }\\n}\\n\\n\u002F**\\n * NOTE: This is (mostly) intended to support printing of XFA forms.\\n *\u002F\\nfunction getXfaPageViewport(xfaPage, { scale = 1, rotation = 0 }) {\\n  const { width, height } = xfaPage.attributes.style;\\n  const viewBox = [0, 0, parseInt(width), parseInt(height)];\\n\\n  return new PageViewport({\\n    viewBox,\\n    scale,\\n    rotation,\\n  });\\n}\\n\\nfunction getRGB(color) {\\n  if (color.startsWith(\\\"#\\\")) {\\n    const colorRGB = parseInt(color.slice(1), 16);\\n    return [\\n      (colorRGB & 0xff0000) >> 16,\\n      (colorRGB & 0x00ff00) >> 8,\\n      colorRGB & 0x0000ff,\\n    ];\\n  }\\n\\n  if (color.startsWith(\\\"rgb(\\\")) {\\n    \u002F\u002F getComputedStyle(...).color returns a `rgb(R, G, B)` color.\\n    return color\\n      .slice(\u002F* \\\"rgb(\\\".length *\u002F 4, -1) \u002F\u002F Strip out \\\"rgb(\\\" and \\\")\\\".\\n      .split(\\\",\\\")\\n      .map(x => parseInt(x));\\n  }\\n\\n  if (color.startsWith(\\\"rgba(\\\")) {\\n    return color\\n      .slice(\u002F* \\\"rgba(\\\".length *\u002F 5, -1) \u002F\u002F Strip out \\\"rgba(\\\" and \\\")\\\".\\n      .split(\\\",\\\")\\n      .map(x => parseInt(x))\\n      .slice(0, 3);\\n  }\\n\\n  warn(`Not a valid color format: \\\"${color}\\\"`);\\n  return [0, 0, 0];\\n}\\n\\nfunction getColorValues(colors) {\\n  const span = document.createElement(\\\"span\\\");\\n  span.style.visibility = \\\"hidden\\\";\\n  document.body.append(span);\\n  for (const name of colors.keys()) {\\n    span.style.color = name;\\n    const computedColor = window.getComputedStyle(span).color;\\n    colors.set(name, getRGB(computedColor));\\n  }\\n  span.remove();\\n}\\n\\nfunction getCurrentTransform(ctx) {\\n  const { a, b, c, d, e, f } = ctx.getTransform();\\n  return [a, b, c, d, e, f];\\n}\\n\\nfunction getCurrentTransformInverse(ctx) {\\n  const { a, b, c, d, e, f } = ctx.getTransform().invertSelf();\\n  return [a, b, c, d, e, f];\\n}\\n\\n\u002F**\\n * @param {HTMLDivElement} div\\n * @param {PageViewport} viewport\\n * @param {boolean} mustFlip\\n * @param {boolean} mustRotate\\n *\u002F\\nfunction setLayerDimensions(\\n  div,\\n  viewport,\\n  mustFlip = false,\\n  mustRotate = true\\n) {\\n  if (viewport instanceof PageViewport) {\\n    const { pageWidth, pageHeight } = viewport.rawDims;\\n    const { style } = div;\\n    const useRound = FeatureTest.isCSSRoundSupported;\\n\\n    const w = `var(--scale-factor) * ${pageWidth}px`,\\n      h = `var(--scale-factor) * ${pageHeight}px`;\\n    const widthStr = useRound ? `round(${w}, 1px)` : `calc(${w})`,\\n      heightStr = useRound ? `round(${h}, 1px)` : `calc(${h})`;\\n\\n    if (!mustFlip || viewport.rotation % 180 === 0) {\\n      style.width = widthStr;\\n      style.height = heightStr;\\n    } else {\\n      style.width = heightStr;\\n      style.height = widthStr;\\n    }\\n  }\\n\\n  if (mustRotate) {\\n    div.setAttribute(\\\"data-main-rotation\\\", viewport.rotation);\\n  }\\n}\\n\\nexport {\\n  deprecated,\\n  DOMCanvasFactory,\\n  DOMCMapReaderFactory,\\n  DOMFilterFactory,\\n  DOMStandardFontDataFactory,\\n  DOMSVGFactory,\\n  fetchData,\\n  getColorValues,\\n  getCurrentTransform,\\n  getCurrentTransformInverse,\\n  getFilenameFromUrl,\\n  getPdfFilenameFromUrl,\\n  getRGB,\\n  getXfaPageViewport,\\n  isDataScheme,\\n  isPdfFile,\\n  isValidFetchUrl,\\n  noContextMenu,\\n  PageViewport,\\n  PDFDateString,\\n  PixelsPerInch,\\n  RenderingCancelledException,\\n  setLayerDimensions,\\n  StatTimer,\\n};\\n\",\"\u002F* Copyright 2023 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { noContextMenu } from \\\"..\u002Fdisplay_utils.js\\\";\\n\\nclass EditorToolbar {\\n  #toolbar = null;\\n\\n  #colorPicker = null;\\n\\n  #editor;\\n\\n  #buttons = null;\\n\\n  constructor(editor) {\\n    this.#editor = editor;\\n  }\\n\\n  render() {\\n    const editToolbar = (this.#toolbar = document.createElement(\\\"div\\\"));\\n    editToolbar.className = \\\"editToolbar\\\";\\n    editToolbar.setAttribute(\\\"role\\\", \\\"toolbar\\\");\\n    editToolbar.addEventListener(\\\"contextmenu\\\", noContextMenu);\\n    editToolbar.addEventListener(\\\"pointerdown\\\", EditorToolbar.#pointerDown);\\n\\n    const buttons = (this.#buttons = document.createElement(\\\"div\\\"));\\n    buttons.className = \\\"buttons\\\";\\n    editToolbar.append(buttons);\\n\\n    const position = this.#editor.toolbarPosition;\\n    if (position) {\\n      const { style } = editToolbar;\\n      const x =\\n        this.#editor._uiManager.direction === \\\"ltr\\\"\\n          ? 1 - position[0]\\n          : position[0];\\n      style.insetInlineEnd = `${100 * x}%`;\\n      style.top = `calc(${\\n        100 * position[1]\\n      }% + var(--editor-toolbar-vert-offset))`;\\n    }\\n\\n    this.#addDeleteButton();\\n\\n    return editToolbar;\\n  }\\n\\n  static #pointerDown(e) {\\n    e.stopPropagation();\\n  }\\n\\n  #focusIn(e) {\\n    this.#editor._focusEventsAllowed = false;\\n    e.preventDefault();\\n    e.stopPropagation();\\n  }\\n\\n  #focusOut(e) {\\n    this.#editor._focusEventsAllowed = true;\\n    e.preventDefault();\\n    e.stopPropagation();\\n  }\\n\\n  #addListenersToElement(element) {\\n    \u002F\u002F If we're clicking on a button with the keyboard or with\\n    \u002F\u002F the mouse, we don't want to trigger any focus events on\\n    \u002F\u002F the editor.\\n    element.addEventListener(\\\"focusin\\\", this.#focusIn.bind(this), {\\n      capture: true,\\n    });\\n    element.addEventListener(\\\"focusout\\\", this.#focusOut.bind(this), {\\n      capture: true,\\n    });\\n    element.addEventListener(\\\"contextmenu\\\", noContextMenu);\\n  }\\n\\n  hide() {\\n    this.#toolbar.classList.add(\\\"hidden\\\");\\n    this.#colorPicker?.hideDropdown();\\n  }\\n\\n  show() {\\n    this.#toolbar.classList.remove(\\\"hidden\\\");\\n  }\\n\\n  #addDeleteButton() {\\n    const button = document.createElement(\\\"button\\\");\\n    button.className = \\\"delete\\\";\\n    button.tabIndex = 0;\\n    button.setAttribute(\\n      \\\"data-l10n-id\\\",\\n      `pdfjs-editor-remove-${this.#editor.editorType}-button`\\n    );\\n    this.#addListenersToElement(button);\\n    button.addEventListener(\\\"click\\\", e => {\\n      this.#editor._uiManager.delete();\\n    });\\n    this.#buttons.append(button);\\n  }\\n\\n  get #divider() {\\n    const divider = document.createElement(\\\"div\\\");\\n    divider.className = \\\"divider\\\";\\n    return divider;\\n  }\\n\\n  addAltTextButton(button) {\\n    this.#addListenersToElement(button);\\n    this.#buttons.prepend(button, this.#divider);\\n  }\\n\\n  addColorPicker(colorPicker) {\\n    this.#colorPicker = colorPicker;\\n    const button = colorPicker.renderButton();\\n    this.#addListenersToElement(button);\\n    this.#buttons.prepend(button, this.#divider);\\n  }\\n\\n  remove() {\\n    this.#toolbar.remove();\\n    this.#colorPicker?.destroy();\\n    this.#colorPicker = null;\\n  }\\n}\\n\\nclass HighlightToolbar {\\n  #buttons = null;\\n\\n  #toolbar = null;\\n\\n  #uiManager;\\n\\n  constructor(uiManager) {\\n    this.#uiManager = uiManager;\\n  }\\n\\n  #render() {\\n    const editToolbar = (this.#toolbar = document.createElement(\\\"div\\\"));\\n    editToolbar.className = \\\"editToolbar\\\";\\n    editToolbar.setAttribute(\\\"role\\\", \\\"toolbar\\\");\\n    editToolbar.addEventListener(\\\"contextmenu\\\", noContextMenu);\\n\\n    const buttons = (this.#buttons = document.createElement(\\\"div\\\"));\\n    buttons.className = \\\"buttons\\\";\\n    editToolbar.append(buttons);\\n\\n    this.#addHighlightButton();\\n\\n    return editToolbar;\\n  }\\n\\n  #getLastPoint(boxes, isLTR) {\\n    let lastY = 0;\\n    let lastX = 0;\\n    for (const box of boxes) {\\n      const y = box.y + box.height;\\n      if (y \u003C lastY) {\\n        continue;\\n      }\\n      const x = box.x + (isLTR ? box.width : 0);\\n      if (y > lastY) {\\n        lastX = x;\\n        lastY = y;\\n        continue;\\n      }\\n      if (isLTR) {\\n        if (x > lastX) {\\n          lastX = x;\\n        }\\n      } else if (x \u003C lastX) {\\n        lastX = x;\\n      }\\n    }\\n    return [isLTR ? 1 - lastX : lastX, lastY];\\n  }\\n\\n  show(parent, boxes, isLTR) {\\n    const [x, y] = this.#getLastPoint(boxes, isLTR);\\n    const { style } = (this.#toolbar ||= this.#render());\\n    parent.append(this.#toolbar);\\n    style.insetInlineEnd = `${100 * x}%`;\\n    style.top = `calc(${100 * y}% + var(--editor-toolbar-vert-offset))`;\\n  }\\n\\n  hide() {\\n    this.#toolbar.remove();\\n  }\\n\\n  #addHighlightButton() {\\n    const button = document.createElement(\\\"button\\\");\\n    button.className = \\\"highlightButton\\\";\\n    button.tabIndex = 0;\\n    button.setAttribute(\\\"data-l10n-id\\\", `pdfjs-highlight-floating-button1`);\\n    const span = document.createElement(\\\"span\\\");\\n    button.append(span);\\n    span.className = \\\"visuallyHidden\\\";\\n    span.setAttribute(\\\"data-l10n-id\\\", \\\"pdfjs-highlight-floating-button-label\\\");\\n    button.addEventListener(\\\"contextmenu\\\", noContextMenu);\\n    button.addEventListener(\\\"click\\\", () => {\\n      this.#uiManager.highlightSelection(\\\"floating_button\\\");\\n    });\\n    this.#buttons.append(button);\\n  }\\n}\\n\\nexport { EditorToolbar, HighlightToolbar };\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Feditor.js\\\").AnnotationEditor} AnnotationEditor *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fannotation_editor_layer.js\\\").AnnotationEditorLayer} AnnotationEditorLayer *\u002F\\n\\nimport {\\n  AnnotationEditorParamsType,\\n  AnnotationEditorPrefix,\\n  AnnotationEditorType,\\n  FeatureTest,\\n  getUuid,\\n  shadow,\\n  Util,\\n  warn,\\n} from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  fetchData,\\n  getColorValues,\\n  getRGB,\\n  PixelsPerInch,\\n} from \\\"..\u002Fdisplay_utils.js\\\";\\nimport { HighlightToolbar } from \\\".\u002Ftoolbar.js\\\";\\n\\nfunction bindEvents(obj, element, names) {\\n  for (const name of names) {\\n    element.addEventListener(name, obj[name].bind(obj));\\n  }\\n}\\n\\n\u002F**\\n * Convert a number between 0 and 100 into an hex number between 0 and 255.\\n * @param {number} opacity\\n * @return {string}\\n *\u002F\\nfunction opacityToHex(opacity) {\\n  return Math.round(Math.min(255, Math.max(1, 255 * opacity)))\\n    .toString(16)\\n    .padStart(2, \\\"0\\\");\\n}\\n\\n\u002F**\\n * Class to create some unique ids for the different editors.\\n *\u002F\\nclass IdManager {\\n  #id = 0;\\n\\n  constructor() {\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING\\\")) {\\n      Object.defineProperty(this, \\\"reset\\\", {\\n        value: () => (this.#id = 0),\\n      });\\n    }\\n  }\\n\\n  \u002F**\\n   * Get a unique id.\\n   * @returns {string}\\n   *\u002F\\n  get id() {\\n    return `${AnnotationEditorPrefix}${this.#id++}`;\\n  }\\n}\\n\\n\u002F**\\n * Class to manage the images used by the editors.\\n * The main idea is to try to minimize the memory used by the images.\\n * The images are cached and reused when possible\\n * We use a refCounter to know when an image is not used anymore but we need to\\n * be able to restore an image after a remove+undo, so we keep a file reference\\n * or an url one.\\n *\u002F\\nclass ImageManager {\\n  #baseId = getUuid();\\n\\n  #id = 0;\\n\\n  #cache = null;\\n\\n  static get _isSVGFittingCanvas() {\\n    \u002F\u002F By default, Firefox doesn't rescale without preserving the aspect ratio\\n    \u002F\u002F when drawing an SVG image on a canvas, see https:\u002F\u002Fbugzilla.mozilla.org\u002F1547776.\\n    \u002F\u002F The \\\"workaround\\\" is to append \\\"svgView(preserveAspectRatio(none))\\\" to the\\n    \u002F\u002F url, but according to comment #15, it seems that it leads to unexpected\\n    \u002F\u002F behavior in Safari.\\n    const svg = `data:image\u002Fsvg+xml;charset=UTF-8,\u003Csvg viewBox=\\\"0 0 1 1\\\" width=\\\"1\\\" height=\\\"1\\\" xmlns=\\\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\\\">\u003Crect width=\\\"1\\\" height=\\\"1\\\" style=\\\"fill:red;\\\"\u002F>\u003C\u002Fsvg>`;\\n    const canvas = new OffscreenCanvas(1, 3);\\n    const ctx = canvas.getContext(\\\"2d\\\");\\n    const image = new Image();\\n    image.src = svg;\\n    const promise = image.decode().then(() => {\\n      ctx.drawImage(image, 0, 0, 1, 1, 0, 0, 1, 3);\\n      return new Uint32Array(ctx.getImageData(0, 0, 1, 1).data.buffer)[0] === 0;\\n    });\\n\\n    return shadow(this, \\\"_isSVGFittingCanvas\\\", promise);\\n  }\\n\\n  async #get(key, rawData) {\\n    this.#cache ||= new Map();\\n    let data = this.#cache.get(key);\\n    if (data === null) {\\n      \u002F\u002F We already tried to load the image but it failed.\\n      return null;\\n    }\\n    if (data?.bitmap) {\\n      data.refCounter += 1;\\n      return data;\\n    }\\n    try {\\n      data ||= {\\n        bitmap: null,\\n        id: `image_${this.#baseId}_${this.#id++}`,\\n        refCounter: 0,\\n        isSvg: false,\\n      };\\n      let image;\\n      if (typeof rawData === \\\"string\\\") {\\n        data.url = rawData;\\n        image = await fetchData(rawData, \\\"blob\\\");\\n      } else {\\n        image = data.file = rawData;\\n      }\\n\\n      if (image.type === \\\"image\u002Fsvg+xml\\\") {\\n        \u002F\u002F Unfortunately, createImageBitmap doesn't work with SVG images.\\n        \u002F\u002F (see https:\u002F\u002Fbugzilla.mozilla.org\u002F1841972).\\n        const mustRemoveAspectRatioPromise = ImageManager._isSVGFittingCanvas;\\n        const fileReader = new FileReader();\\n        const imageElement = new Image();\\n        const imagePromise = new Promise((resolve, reject) => {\\n          imageElement.onload = () => {\\n            data.bitmap = imageElement;\\n            data.isSvg = true;\\n            resolve();\\n          };\\n          fileReader.onload = async () => {\\n            const url = (data.svgUrl = fileReader.result);\\n            \u002F\u002F We need to set the preserveAspectRatio to none in order to let\\n            \u002F\u002F the image fits the canvas when resizing.\\n            imageElement.src = (await mustRemoveAspectRatioPromise)\\n              ? `${url}#svgView(preserveAspectRatio(none))`\\n              : url;\\n          };\\n          imageElement.onerror = fileReader.onerror = reject;\\n        });\\n        fileReader.readAsDataURL(image);\\n        await imagePromise;\\n      } else {\\n        data.bitmap = await createImageBitmap(image);\\n      }\\n      data.refCounter = 1;\\n    } catch (e) {\\n      console.error(e);\\n      data = null;\\n    }\\n    this.#cache.set(key, data);\\n    if (data) {\\n      this.#cache.set(data.id, data);\\n    }\\n    return data;\\n  }\\n\\n  async getFromFile(file) {\\n    const { lastModified, name, size, type } = file;\\n    return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\\n  }\\n\\n  async getFromUrl(url) {\\n    return this.#get(url, url);\\n  }\\n\\n  async getFromId(id) {\\n    this.#cache ||= new Map();\\n    const data = this.#cache.get(id);\\n    if (!data) {\\n      return null;\\n    }\\n    if (data.bitmap) {\\n      data.refCounter += 1;\\n      return data;\\n    }\\n\\n    if (data.file) {\\n      return this.getFromFile(data.file);\\n    }\\n    return this.getFromUrl(data.url);\\n  }\\n\\n  getSvgUrl(id) {\\n    const data = this.#cache.get(id);\\n    if (!data?.isSvg) {\\n      return null;\\n    }\\n    return data.svgUrl;\\n  }\\n\\n  deleteId(id) {\\n    this.#cache ||= new Map();\\n    const data = this.#cache.get(id);\\n    if (!data) {\\n      return;\\n    }\\n    data.refCounter -= 1;\\n    if (data.refCounter !== 0) {\\n      return;\\n    }\\n    data.bitmap = null;\\n  }\\n\\n  \u002F\u002F We can use the id only if it belongs this manager.\\n  \u002F\u002F We must take care of having the right manager because we can copy\u002Fpaste\\n  \u002F\u002F some images from other documents, hence it'd be a pity to use an id from an\\n  \u002F\u002F other manager.\\n  isValidId(id) {\\n    return id.startsWith(`image_${this.#baseId}_`);\\n  }\\n}\\n\\n\u002F**\\n * Class to handle undo\u002Fredo.\\n * Commands are just saved in a buffer.\\n * If we hit some memory issues we could likely use a circular buffer.\\n * It has to be used as a singleton.\\n *\u002F\\nclass CommandManager {\\n  #commands = [];\\n\\n  #locked = false;\\n\\n  #maxSize;\\n\\n  #position = -1;\\n\\n  constructor(maxSize = 128) {\\n    this.#maxSize = maxSize;\\n  }\\n\\n  \u002F**\\n   * @typedef {Object} addOptions\\n   * @property {function} cmd\\n   * @property {function} undo\\n   * @property {function} [post]\\n   * @property {boolean} mustExec\\n   * @property {number} type\\n   * @property {boolean} overwriteIfSameType\\n   * @property {boolean} keepUndo\\n   *\u002F\\n\\n  \u002F**\\n   * Add a new couple of commands to be used in case of redo\u002Fundo.\\n   * @param {addOptions} options\\n   *\u002F\\n  add({\\n    cmd,\\n    undo,\\n    post,\\n    mustExec,\\n    type = NaN,\\n    overwriteIfSameType = false,\\n    keepUndo = false,\\n  }) {\\n    if (mustExec) {\\n      cmd();\\n    }\\n\\n    if (this.#locked) {\\n      return;\\n    }\\n\\n    const save = { cmd, undo, post, type };\\n    if (this.#position === -1) {\\n      if (this.#commands.length > 0) {\\n        \u002F\u002F All the commands have been undone and then a new one is added\\n        \u002F\u002F hence we clear the queue.\\n        this.#commands.length = 0;\\n      }\\n      this.#position = 0;\\n      this.#commands.push(save);\\n      return;\\n    }\\n\\n    if (overwriteIfSameType && this.#commands[this.#position].type === type) {\\n      \u002F\u002F For example when we change a color we don't want to\\n      \u002F\u002F be able to undo all the steps, hence we only want to\\n      \u002F\u002F keep the last undoable action in this sequence of actions.\\n      if (keepUndo) {\\n        save.undo = this.#commands[this.#position].undo;\\n      }\\n      this.#commands[this.#position] = save;\\n      return;\\n    }\\n\\n    const next = this.#position + 1;\\n    if (next === this.#maxSize) {\\n      this.#commands.splice(0, 1);\\n    } else {\\n      this.#position = next;\\n      if (next \u003C this.#commands.length) {\\n        this.#commands.splice(next);\\n      }\\n    }\\n\\n    this.#commands.push(save);\\n  }\\n\\n  \u002F**\\n   * Undo the last command.\\n   *\u002F\\n  undo() {\\n    if (this.#position === -1) {\\n      \u002F\u002F Nothing to undo.\\n      return;\\n    }\\n\\n    \u002F\u002F Avoid to insert something during the undo execution.\\n    this.#locked = true;\\n    const { undo, post } = this.#commands[this.#position];\\n    undo();\\n    post?.();\\n    this.#locked = false;\\n\\n    this.#position -= 1;\\n  }\\n\\n  \u002F**\\n   * Redo the last command.\\n   *\u002F\\n  redo() {\\n    if (this.#position \u003C this.#commands.length - 1) {\\n      this.#position += 1;\\n\\n      \u002F\u002F Avoid to insert something during the redo execution.\\n      this.#locked = true;\\n      const { cmd, post } = this.#commands[this.#position];\\n      cmd();\\n      post?.();\\n      this.#locked = false;\\n    }\\n  }\\n\\n  \u002F**\\n   * Check if there is something to undo.\\n   * @returns {boolean}\\n   *\u002F\\n  hasSomethingToUndo() {\\n    return this.#position !== -1;\\n  }\\n\\n  \u002F**\\n   * Check if there is something to redo.\\n   * @returns {boolean}\\n   *\u002F\\n  hasSomethingToRedo() {\\n    return this.#position \u003C this.#commands.length - 1;\\n  }\\n\\n  destroy() {\\n    this.#commands = null;\\n  }\\n}\\n\\n\u002F**\\n * Class to handle the different keyboards shortcuts we can have on mac or\\n * non-mac OSes.\\n *\u002F\\nclass KeyboardManager {\\n  \u002F**\\n   * Create a new keyboard manager class.\\n   * @param {Array\u003CArray>} callbacks - an array containing an array of shortcuts\\n   * and a callback to call.\\n   * A shortcut is a string like `ctrl+c` or `mac+ctrl+c` for mac OS.\\n   *\u002F\\n  constructor(callbacks) {\\n    this.buffer = [];\\n    this.callbacks = new Map();\\n    this.allKeys = new Set();\\n\\n    const { isMac } = FeatureTest.platform;\\n    for (const [keys, callback, options = {}] of callbacks) {\\n      for (const key of keys) {\\n        const isMacKey = key.startsWith(\\\"mac+\\\");\\n        if (isMac && isMacKey) {\\n          this.callbacks.set(key.slice(4), { callback, options });\\n          this.allKeys.add(key.split(\\\"+\\\").at(-1));\\n        } else if (!isMac && !isMacKey) {\\n          this.callbacks.set(key, { callback, options });\\n          this.allKeys.add(key.split(\\\"+\\\").at(-1));\\n        }\\n      }\\n    }\\n  }\\n\\n  \u002F**\\n   * Serialize an event into a string in order to match a\\n   * potential key for a callback.\\n   * @param {KeyboardEvent} event\\n   * @returns {string}\\n   *\u002F\\n  #serialize(event) {\\n    if (event.altKey) {\\n      this.buffer.push(\\\"alt\\\");\\n    }\\n    if (event.ctrlKey) {\\n      this.buffer.push(\\\"ctrl\\\");\\n    }\\n    if (event.metaKey) {\\n      this.buffer.push(\\\"meta\\\");\\n    }\\n    if (event.shiftKey) {\\n      this.buffer.push(\\\"shift\\\");\\n    }\\n    this.buffer.push(event.key);\\n    const str = this.buffer.join(\\\"+\\\");\\n    this.buffer.length = 0;\\n\\n    return str;\\n  }\\n\\n  \u002F**\\n   * Execute a callback, if any, for a given keyboard event.\\n   * The self is used as `this` in the callback.\\n   * @param {Object} self\\n   * @param {KeyboardEvent} event\\n   * @returns\\n   *\u002F\\n  exec(self, event) {\\n    if (!this.allKeys.has(event.key)) {\\n      return;\\n    }\\n    const info = this.callbacks.get(this.#serialize(event));\\n    if (!info) {\\n      return;\\n    }\\n    const {\\n      callback,\\n      options: { bubbles = false, args = [], checker = null },\\n    } = info;\\n\\n    if (checker && !checker(self, event)) {\\n      return;\\n    }\\n    callback.bind(self, ...args, event)();\\n\\n    \u002F\u002F For example, ctrl+s in a FreeText must be handled by the viewer, hence\\n    \u002F\u002F the event must bubble.\\n    if (!bubbles) {\\n      event.stopPropagation();\\n      event.preventDefault();\\n    }\\n  }\\n}\\n\\nclass ColorManager {\\n  static _colorsMapping = new Map([\\n    [\\\"CanvasText\\\", [0, 0, 0]],\\n    [\\\"Canvas\\\", [255, 255, 255]],\\n  ]);\\n\\n  get _colors() {\\n    if (\\n      typeof PDFJSDev !== \\\"undefined\\\" &&\\n      PDFJSDev.test(\\\"LIB\\\") &&\\n      typeof document === \\\"undefined\\\"\\n    ) {\\n      return shadow(this, \\\"_colors\\\", ColorManager._colorsMapping);\\n    }\\n\\n    const colors = new Map([\\n      [\\\"CanvasText\\\", null],\\n      [\\\"Canvas\\\", null],\\n    ]);\\n    getColorValues(colors);\\n    return shadow(this, \\\"_colors\\\", colors);\\n  }\\n\\n  \u002F**\\n   * In High Contrast Mode, the color on the screen is not always the\\n   * real color used in the pdf.\\n   * For example in some cases white can appear to be black but when saving\\n   * we want to have white.\\n   * @param {string} color\\n   * @returns {Array\u003Cnumber>}\\n   *\u002F\\n  convert(color) {\\n    const rgb = getRGB(color);\\n    if (!window.matchMedia(\\\"(forced-colors: active)\\\").matches) {\\n      return rgb;\\n    }\\n\\n    for (const [name, RGB] of this._colors) {\\n      if (RGB.every((x, i) => x === rgb[i])) {\\n        return ColorManager._colorsMapping.get(name);\\n      }\\n    }\\n    return rgb;\\n  }\\n\\n  \u002F**\\n   * An input element must have its color value as a hex string\\n   * and not as color name.\\n   * So this function converts a name into an hex string.\\n   * @param {string} name\\n   * @returns {string}\\n   *\u002F\\n  getHexCode(name) {\\n    const rgb = this._colors.get(name);\\n    if (!rgb) {\\n      return name;\\n    }\\n    return Util.makeHexColor(...rgb);\\n  }\\n}\\n\\n\u002F**\\n * A pdf has several pages and each of them when it will rendered\\n * will have an AnnotationEditorLayer which will contain the some\\n * new Annotations associated to an editor in order to modify them.\\n *\\n * This class is used to manage all the different layers, editors and\\n * some action like copy\u002Fpaste, undo\u002Fredo, ...\\n *\u002F\\nclass AnnotationEditorUIManager {\\n  #activeEditor = null;\\n\\n  #allEditors = new Map();\\n\\n  #allLayers = new Map();\\n\\n  #altTextManager = null;\\n\\n  #annotationStorage = null;\\n\\n  #changedExistingAnnotations = null;\\n\\n  #commandManager = new CommandManager();\\n\\n  #currentPageIndex = 0;\\n\\n  #deletedAnnotationsElementIds = new Set();\\n\\n  #draggingEditors = null;\\n\\n  #editorTypes = null;\\n\\n  #editorsToRescale = new Set();\\n\\n  #enableHighlightFloatingButton = false;\\n\\n  #filterFactory = null;\\n\\n  #focusMainContainerTimeoutId = null;\\n\\n  #highlightColors = null;\\n\\n  #highlightWhenShiftUp = false;\\n\\n  #highlightToolbar = null;\\n\\n  #idManager = new IdManager();\\n\\n  #isEnabled = false;\\n\\n  #isWaiting = false;\\n\\n  #lastActiveElement = null;\\n\\n  #mainHighlightColorPicker = null;\\n\\n  #mlManager = null;\\n\\n  #mode = AnnotationEditorType.NONE;\\n\\n  #selectedEditors = new Set();\\n\\n  #selectedTextNode = null;\\n\\n  #pageColors = null;\\n\\n  #showAllStates = null;\\n\\n  #boundBlur = this.blur.bind(this);\\n\\n  #boundFocus = this.focus.bind(this);\\n\\n  #boundCopy = this.copy.bind(this);\\n\\n  #boundCut = this.cut.bind(this);\\n\\n  #boundPaste = this.paste.bind(this);\\n\\n  #boundKeydown = this.keydown.bind(this);\\n\\n  #boundKeyup = this.keyup.bind(this);\\n\\n  #boundOnEditingAction = this.onEditingAction.bind(this);\\n\\n  #boundOnPageChanging = this.onPageChanging.bind(this);\\n\\n  #boundOnScaleChanging = this.onScaleChanging.bind(this);\\n\\n  #boundSelectionChange = this.#selectionChange.bind(this);\\n\\n  #boundOnRotationChanging = this.onRotationChanging.bind(this);\\n\\n  #previousStates = {\\n    isEditing: false,\\n    isEmpty: true,\\n    hasSomethingToUndo: false,\\n    hasSomethingToRedo: false,\\n    hasSelectedEditor: false,\\n    hasSelectedText: false,\\n  };\\n\\n  #translation = [0, 0];\\n\\n  #translationTimeoutId = null;\\n\\n  #container = null;\\n\\n  #viewer = null;\\n\\n  static TRANSLATE_SMALL = 1; \u002F\u002F page units.\\n\\n  static TRANSLATE_BIG = 10; \u002F\u002F page units.\\n\\n  static get _keyboardManager() {\\n    const proto = AnnotationEditorUIManager.prototype;\\n\\n    \u002F**\\n     * If the focused element is an input, we don't want to handle the arrow.\\n     * For example, sliders can be controlled with the arrow keys.\\n     *\u002F\\n    const arrowChecker = self =>\\n      self.#container.contains(document.activeElement) &&\\n      document.activeElement.tagName !== \\\"BUTTON\\\" &&\\n      self.hasSomethingToControl();\\n\\n    const textInputChecker = (_self, { target: el }) => {\\n      if (el instanceof HTMLInputElement) {\\n        const { type } = el;\\n        return type !== \\\"text\\\" && type !== \\\"number\\\";\\n      }\\n      return true;\\n    };\\n\\n    const small = this.TRANSLATE_SMALL;\\n    const big = this.TRANSLATE_BIG;\\n\\n    return shadow(\\n      this,\\n      \\\"_keyboardManager\\\",\\n      new KeyboardManager([\\n        [\\n          [\\\"ctrl+a\\\", \\\"mac+meta+a\\\"],\\n          proto.selectAll,\\n          { checker: textInputChecker },\\n        ],\\n        [[\\\"ctrl+z\\\", \\\"mac+meta+z\\\"], proto.undo, { checker: textInputChecker }],\\n        [\\n          \u002F\u002F On mac, depending of the OS version, the event.key is either \\\"z\\\" or\\n          \u002F\u002F \\\"Z\\\" when the user presses \\\"meta+shift+z\\\".\\n          [\\n            \\\"ctrl+y\\\",\\n            \\\"ctrl+shift+z\\\",\\n            \\\"mac+meta+shift+z\\\",\\n            \\\"ctrl+shift+Z\\\",\\n            \\\"mac+meta+shift+Z\\\",\\n          ],\\n          proto.redo,\\n          { checker: textInputChecker },\\n        ],\\n        [\\n          [\\n            \\\"Backspace\\\",\\n            \\\"alt+Backspace\\\",\\n            \\\"ctrl+Backspace\\\",\\n            \\\"shift+Backspace\\\",\\n            \\\"mac+Backspace\\\",\\n            \\\"mac+alt+Backspace\\\",\\n            \\\"mac+ctrl+Backspace\\\",\\n            \\\"Delete\\\",\\n            \\\"ctrl+Delete\\\",\\n            \\\"shift+Delete\\\",\\n            \\\"mac+Delete\\\",\\n          ],\\n          proto.delete,\\n          { checker: textInputChecker },\\n        ],\\n        [\\n          [\\\"Enter\\\", \\\"mac+Enter\\\"],\\n          proto.addNewEditorFromKeyboard,\\n          {\\n            \u002F\u002F Those shortcuts can be used in the toolbar for some other actions\\n            \u002F\u002F like zooming, hence we need to check if the container has the\\n            \u002F\u002F focus.\\n            checker: (self, { target: el }) =>\\n              !(el instanceof HTMLButtonElement) &&\\n              self.#container.contains(el) &&\\n              !self.isEnterHandled,\\n          },\\n        ],\\n        [\\n          [\\\" \\\", \\\"mac+ \\\"],\\n          proto.addNewEditorFromKeyboard,\\n          {\\n            \u002F\u002F Those shortcuts can be used in the toolbar for some other actions\\n            \u002F\u002F like zooming, hence we need to check if the container has the\\n            \u002F\u002F focus.\\n            checker: (self, { target: el }) =>\\n              !(el instanceof HTMLButtonElement) &&\\n              self.#container.contains(document.activeElement),\\n          },\\n        ],\\n        [[\\\"Escape\\\", \\\"mac+Escape\\\"], proto.unselectAll],\\n        [\\n          [\\\"ArrowLeft\\\", \\\"mac+ArrowLeft\\\"],\\n          proto.translateSelectedEditors,\\n          { args: [-small, 0], checker: arrowChecker },\\n        ],\\n        [\\n          [\\\"ctrl+ArrowLeft\\\", \\\"mac+shift+ArrowLeft\\\"],\\n          proto.translateSelectedEditors,\\n          { args: [-big, 0], checker: arrowChecker },\\n        ],\\n        [\\n          [\\\"ArrowRight\\\", \\\"mac+ArrowRight\\\"],\\n          proto.translateSelectedEditors,\\n          { args: [small, 0], checker: arrowChecker },\\n        ],\\n        [\\n          [\\\"ctrl+ArrowRight\\\", \\\"mac+shift+ArrowRight\\\"],\\n          proto.translateSelectedEditors,\\n          { args: [big, 0], checker: arrowChecker },\\n        ],\\n        [\\n          [\\\"ArrowUp\\\", \\\"mac+ArrowUp\\\"],\\n          proto.translateSelectedEditors,\\n          { args: [0, -small], checker: arrowChecker },\\n        ],\\n        [\\n          [\\\"ctrl+ArrowUp\\\", \\\"mac+shift+ArrowUp\\\"],\\n          proto.translateSelectedEditors,\\n          { args: [0, -big], checker: arrowChecker },\\n        ],\\n        [\\n          [\\\"ArrowDown\\\", \\\"mac+ArrowDown\\\"],\\n          proto.translateSelectedEditors,\\n          { args: [0, small], checker: arrowChecker },\\n        ],\\n        [\\n          [\\\"ctrl+ArrowDown\\\", \\\"mac+shift+ArrowDown\\\"],\\n          proto.translateSelectedEditors,\\n          { args: [0, big], checker: arrowChecker },\\n        ],\\n      ])\\n    );\\n  }\\n\\n  constructor(\\n    container,\\n    viewer,\\n    altTextManager,\\n    eventBus,\\n    pdfDocument,\\n    pageColors,\\n    highlightColors,\\n    enableHighlightFloatingButton,\\n    mlManager\\n  ) {\\n    this.#container = container;\\n    this.#viewer = viewer;\\n    this.#altTextManager = altTextManager;\\n    this._eventBus = eventBus;\\n    this._eventBus._on(\\\"editingaction\\\", this.#boundOnEditingAction);\\n    this._eventBus._on(\\\"pagechanging\\\", this.#boundOnPageChanging);\\n    this._eventBus._on(\\\"scalechanging\\\", this.#boundOnScaleChanging);\\n    this._eventBus._on(\\\"rotationchanging\\\", this.#boundOnRotationChanging);\\n    this.#addSelectionListener();\\n    this.#addKeyboardManager();\\n    this.#annotationStorage = pdfDocument.annotationStorage;\\n    this.#filterFactory = pdfDocument.filterFactory;\\n    this.#pageColors = pageColors;\\n    this.#highlightColors = highlightColors || null;\\n    this.#enableHighlightFloatingButton = enableHighlightFloatingButton;\\n    this.#mlManager = mlManager || null;\\n    this.viewParameters = {\\n      realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\\n      rotation: 0,\\n    };\\n    this.isShiftKeyDown = false;\\n\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING\\\")) {\\n      Object.defineProperty(this, \\\"reset\\\", {\\n        value: () => {\\n          this.selectAll();\\n          this.delete();\\n          this.#idManager.reset();\\n        },\\n      });\\n    }\\n  }\\n\\n  destroy() {\\n    this.#removeKeyboardManager();\\n    this.#removeFocusManager();\\n    this._eventBus._off(\\\"editingaction\\\", this.#boundOnEditingAction);\\n    this._eventBus._off(\\\"pagechanging\\\", this.#boundOnPageChanging);\\n    this._eventBus._off(\\\"scalechanging\\\", this.#boundOnScaleChanging);\\n    this._eventBus._off(\\\"rotationchanging\\\", this.#boundOnRotationChanging);\\n    for (const layer of this.#allLayers.values()) {\\n      layer.destroy();\\n    }\\n    this.#allLayers.clear();\\n    this.#allEditors.clear();\\n    this.#editorsToRescale.clear();\\n    this.#activeEditor = null;\\n    this.#selectedEditors.clear();\\n    this.#commandManager.destroy();\\n    this.#altTextManager?.destroy();\\n    this.#highlightToolbar?.hide();\\n    this.#highlightToolbar = null;\\n    if (this.#focusMainContainerTimeoutId) {\\n      clearTimeout(this.#focusMainContainerTimeoutId);\\n      this.#focusMainContainerTimeoutId = null;\\n    }\\n    if (this.#translationTimeoutId) {\\n      clearTimeout(this.#translationTimeoutId);\\n      this.#translationTimeoutId = null;\\n    }\\n    this.#removeSelectionListener();\\n  }\\n\\n  async mlGuess(data) {\\n    return this.#mlManager?.guess(data) || null;\\n  }\\n\\n  get hasMLManager() {\\n    return !!this.#mlManager;\\n  }\\n\\n  get hcmFilter() {\\n    return shadow(\\n      this,\\n      \\\"hcmFilter\\\",\\n      this.#pageColors\\n        ? this.#filterFactory.addHCMFilter(\\n            this.#pageColors.foreground,\\n            this.#pageColors.background\\n          )\\n        : \\\"none\\\"\\n    );\\n  }\\n\\n  get direction() {\\n    return shadow(\\n      this,\\n      \\\"direction\\\",\\n      getComputedStyle(this.#container).direction\\n    );\\n  }\\n\\n  get highlightColors() {\\n    return shadow(\\n      this,\\n      \\\"highlightColors\\\",\\n      this.#highlightColors\\n        ? new Map(\\n            this.#highlightColors\\n              .split(\\\",\\\")\\n              .map(pair => pair.split(\\\"=\\\").map(x => x.trim()))\\n          )\\n        : null\\n    );\\n  }\\n\\n  get highlightColorNames() {\\n    return shadow(\\n      this,\\n      \\\"highlightColorNames\\\",\\n      this.highlightColors\\n        ? new Map(Array.from(this.highlightColors, e => e.reverse()))\\n        : null\\n    );\\n  }\\n\\n  setMainHighlightColorPicker(colorPicker) {\\n    this.#mainHighlightColorPicker = colorPicker;\\n  }\\n\\n  editAltText(editor) {\\n    this.#altTextManager?.editAltText(this, editor);\\n  }\\n\\n  onPageChanging({ pageNumber }) {\\n    this.#currentPageIndex = pageNumber - 1;\\n  }\\n\\n  focusMainContainer() {\\n    this.#container.focus();\\n  }\\n\\n  findParent(x, y) {\\n    for (const layer of this.#allLayers.values()) {\\n      const {\\n        x: layerX,\\n        y: layerY,\\n        width,\\n        height,\\n      } = layer.div.getBoundingClientRect();\\n      if (\\n        x >= layerX &&\\n        x \u003C= layerX + width &&\\n        y >= layerY &&\\n        y \u003C= layerY + height\\n      ) {\\n        return layer;\\n      }\\n    }\\n    return null;\\n  }\\n\\n  disableUserSelect(value = false) {\\n    this.#viewer.classList.toggle(\\\"noUserSelect\\\", value);\\n  }\\n\\n  addShouldRescale(editor) {\\n    this.#editorsToRescale.add(editor);\\n  }\\n\\n  removeShouldRescale(editor) {\\n    this.#editorsToRescale.delete(editor);\\n  }\\n\\n  onScaleChanging({ scale }) {\\n    this.commitOrRemove();\\n    this.viewParameters.realScale = scale * PixelsPerInch.PDF_TO_CSS_UNITS;\\n    for (const editor of this.#editorsToRescale) {\\n      editor.onScaleChanging();\\n    }\\n  }\\n\\n  onRotationChanging({ pagesRotation }) {\\n    this.commitOrRemove();\\n    this.viewParameters.rotation = pagesRotation;\\n  }\\n\\n  #getAnchorElementForSelection({ anchorNode }) {\\n    return anchorNode.nodeType === Node.TEXT_NODE\\n      ? anchorNode.parentElement\\n      : anchorNode;\\n  }\\n\\n  highlightSelection(methodOfCreation = \\\"\\\") {\\n    const selection = document.getSelection();\\n    if (!selection || selection.isCollapsed) {\\n      return;\\n    }\\n    const { anchorNode, anchorOffset, focusNode, focusOffset } = selection;\\n    const text = selection.toString();\\n    const anchorElement = this.#getAnchorElementForSelection(selection);\\n    const textLayer = anchorElement.closest(\\\".textLayer\\\");\\n    const boxes = this.getSelectionBoxes(textLayer);\\n    if (!boxes) {\\n      return;\\n    }\\n    selection.empty();\\n    if (this.#mode === AnnotationEditorType.NONE) {\\n      this._eventBus.dispatch(\\\"showannotationeditorui\\\", {\\n        source: this,\\n        mode: AnnotationEditorType.HIGHLIGHT,\\n      });\\n      this.showAllEditors(\\\"highlight\\\", true, \u002F* updateButton = *\u002F true);\\n    }\\n    for (const layer of this.#allLayers.values()) {\\n      if (layer.hasTextLayer(textLayer)) {\\n        layer.createAndAddNewEditor({ x: 0, y: 0 }, false, {\\n          methodOfCreation,\\n          boxes,\\n          anchorNode,\\n          anchorOffset,\\n          focusNode,\\n          focusOffset,\\n          text,\\n        });\\n        break;\\n      }\\n    }\\n  }\\n\\n  #displayHighlightToolbar() {\\n    const selection = document.getSelection();\\n    if (!selection || selection.isCollapsed) {\\n      return;\\n    }\\n    const anchorElement = this.#getAnchorElementForSelection(selection);\\n    const textLayer = anchorElement.closest(\\\".textLayer\\\");\\n    const boxes = this.getSelectionBoxes(textLayer);\\n    if (!boxes) {\\n      return;\\n    }\\n    this.#highlightToolbar ||= new HighlightToolbar(this);\\n    this.#highlightToolbar.show(textLayer, boxes, this.direction === \\\"ltr\\\");\\n  }\\n\\n  \u002F**\\n   * Add an editor in the annotation storage.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  addToAnnotationStorage(editor) {\\n    if (\\n      !editor.isEmpty() &&\\n      this.#annotationStorage &&\\n      !this.#annotationStorage.has(editor.id)\\n    ) {\\n      this.#annotationStorage.setValue(editor.id, editor);\\n    }\\n  }\\n\\n  #selectionChange() {\\n    const selection = document.getSelection();\\n    if (!selection || selection.isCollapsed) {\\n      if (this.#selectedTextNode) {\\n        this.#highlightToolbar?.hide();\\n        this.#selectedTextNode = null;\\n        this.#dispatchUpdateStates({\\n          hasSelectedText: false,\\n        });\\n      }\\n      return;\\n    }\\n    const { anchorNode } = selection;\\n    if (anchorNode === this.#selectedTextNode) {\\n      return;\\n    }\\n\\n    const anchorElement = this.#getAnchorElementForSelection(selection);\\n    const textLayer = anchorElement.closest(\\\".textLayer\\\");\\n    if (!textLayer) {\\n      if (this.#selectedTextNode) {\\n        this.#highlightToolbar?.hide();\\n        this.#selectedTextNode = null;\\n        this.#dispatchUpdateStates({\\n          hasSelectedText: false,\\n        });\\n      }\\n      return;\\n    }\\n    this.#highlightToolbar?.hide();\\n    this.#selectedTextNode = anchorNode;\\n    this.#dispatchUpdateStates({\\n      hasSelectedText: true,\\n    });\\n\\n    if (\\n      this.#mode !== AnnotationEditorType.HIGHLIGHT &&\\n      this.#mode !== AnnotationEditorType.NONE\\n    ) {\\n      return;\\n    }\\n\\n    if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\\n      this.showAllEditors(\\\"highlight\\\", true, \u002F* updateButton = *\u002F true);\\n    }\\n\\n    this.#highlightWhenShiftUp = this.isShiftKeyDown;\\n    if (!this.isShiftKeyDown) {\\n      const pointerup = e => {\\n        if (e.type === \\\"pointerup\\\" && e.button !== 0) {\\n          \u002F\u002F Do nothing on right click.\\n          return;\\n        }\\n        window.removeEventListener(\\\"pointerup\\\", pointerup);\\n        window.removeEventListener(\\\"blur\\\", pointerup);\\n        if (e.type === \\\"pointerup\\\") {\\n          this.#onSelectEnd(\\\"main_toolbar\\\");\\n        }\\n      };\\n      window.addEventListener(\\\"pointerup\\\", pointerup);\\n      window.addEventListener(\\\"blur\\\", pointerup);\\n    }\\n  }\\n\\n  #onSelectEnd(methodOfCreation = \\\"\\\") {\\n    if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\\n      this.highlightSelection(methodOfCreation);\\n    } else if (this.#enableHighlightFloatingButton) {\\n      this.#displayHighlightToolbar();\\n    }\\n  }\\n\\n  #addSelectionListener() {\\n    document.addEventListener(\\\"selectionchange\\\", this.#boundSelectionChange);\\n  }\\n\\n  #removeSelectionListener() {\\n    document.removeEventListener(\\\"selectionchange\\\", this.#boundSelectionChange);\\n  }\\n\\n  #addFocusManager() {\\n    window.addEventListener(\\\"focus\\\", this.#boundFocus);\\n    window.addEventListener(\\\"blur\\\", this.#boundBlur);\\n  }\\n\\n  #removeFocusManager() {\\n    window.removeEventListener(\\\"focus\\\", this.#boundFocus);\\n    window.removeEventListener(\\\"blur\\\", this.#boundBlur);\\n  }\\n\\n  blur() {\\n    this.isShiftKeyDown = false;\\n    if (this.#highlightWhenShiftUp) {\\n      this.#highlightWhenShiftUp = false;\\n      this.#onSelectEnd(\\\"main_toolbar\\\");\\n    }\\n    if (!this.hasSelection) {\\n      return;\\n    }\\n    \u002F\u002F When several editors are selected and the window loses focus, we want to\\n    \u002F\u002F keep the last active element in order to be able to focus it again when\\n    \u002F\u002F the window gets the focus back but we don't want to trigger any focus\\n    \u002F\u002F callbacks else only one editor will be selected.\\n    const { activeElement } = document;\\n    for (const editor of this.#selectedEditors) {\\n      if (editor.div.contains(activeElement)) {\\n        this.#lastActiveElement = [editor, activeElement];\\n        editor._focusEventsAllowed = false;\\n        break;\\n      }\\n    }\\n  }\\n\\n  focus() {\\n    if (!this.#lastActiveElement) {\\n      return;\\n    }\\n    const [lastEditor, lastActiveElement] = this.#lastActiveElement;\\n    this.#lastActiveElement = null;\\n    lastActiveElement.addEventListener(\\n      \\\"focusin\\\",\\n      () => {\\n        lastEditor._focusEventsAllowed = true;\\n      },\\n      { once: true }\\n    );\\n    lastActiveElement.focus();\\n  }\\n\\n  #addKeyboardManager() {\\n    \u002F\u002F The keyboard events are caught at the container level in order to be able\\n    \u002F\u002F to execute some callbacks even if the current page doesn't have focus.\\n    window.addEventListener(\\\"keydown\\\", this.#boundKeydown);\\n    window.addEventListener(\\\"keyup\\\", this.#boundKeyup);\\n  }\\n\\n  #removeKeyboardManager() {\\n    window.removeEventListener(\\\"keydown\\\", this.#boundKeydown);\\n    window.removeEventListener(\\\"keyup\\\", this.#boundKeyup);\\n  }\\n\\n  #addCopyPasteListeners() {\\n    document.addEventListener(\\\"copy\\\", this.#boundCopy);\\n    document.addEventListener(\\\"cut\\\", this.#boundCut);\\n    document.addEventListener(\\\"paste\\\", this.#boundPaste);\\n  }\\n\\n  #removeCopyPasteListeners() {\\n    document.removeEventListener(\\\"copy\\\", this.#boundCopy);\\n    document.removeEventListener(\\\"cut\\\", this.#boundCut);\\n    document.removeEventListener(\\\"paste\\\", this.#boundPaste);\\n  }\\n\\n  addEditListeners() {\\n    this.#addKeyboardManager();\\n    this.#addCopyPasteListeners();\\n  }\\n\\n  removeEditListeners() {\\n    this.#removeKeyboardManager();\\n    this.#removeCopyPasteListeners();\\n  }\\n\\n  \u002F**\\n   * Copy callback.\\n   * @param {ClipboardEvent} event\\n   *\u002F\\n  copy(event) {\\n    event.preventDefault();\\n\\n    \u002F\u002F An editor is being edited so just commit it.\\n    this.#activeEditor?.commitOrRemove();\\n\\n    if (!this.hasSelection) {\\n      return;\\n    }\\n\\n    const editors = [];\\n    for (const editor of this.#selectedEditors) {\\n      const serialized = editor.serialize(\u002F* isForCopying = *\u002F true);\\n      if (serialized) {\\n        editors.push(serialized);\\n      }\\n    }\\n    if (editors.length === 0) {\\n      return;\\n    }\\n\\n    event.clipboardData.setData(\\\"application\u002Fpdfjs\\\", JSON.stringify(editors));\\n  }\\n\\n  \u002F**\\n   * Cut callback.\\n   * @param {ClipboardEvent} event\\n   *\u002F\\n  cut(event) {\\n    this.copy(event);\\n    this.delete();\\n  }\\n\\n  \u002F**\\n   * Paste callback.\\n   * @param {ClipboardEvent} event\\n   *\u002F\\n  paste(event) {\\n    event.preventDefault();\\n    const { clipboardData } = event;\\n    for (const item of clipboardData.items) {\\n      for (const editorType of this.#editorTypes) {\\n        if (editorType.isHandlingMimeForPasting(item.type)) {\\n          editorType.paste(item, this.currentLayer);\\n          return;\\n        }\\n      }\\n    }\\n\\n    let data = clipboardData.getData(\\\"application\u002Fpdfjs\\\");\\n    if (!data) {\\n      return;\\n    }\\n\\n    try {\\n      data = JSON.parse(data);\\n    } catch (ex) {\\n      warn(`paste: \\\"${ex.message}\\\".`);\\n      return;\\n    }\\n\\n    if (!Array.isArray(data)) {\\n      return;\\n    }\\n\\n    this.unselectAll();\\n    const layer = this.currentLayer;\\n\\n    try {\\n      const newEditors = [];\\n      for (const editor of data) {\\n        const deserializedEditor = layer.deserialize(editor);\\n        if (!deserializedEditor) {\\n          return;\\n        }\\n        newEditors.push(deserializedEditor);\\n      }\\n\\n      const cmd = () => {\\n        for (const editor of newEditors) {\\n          this.#addEditorToLayer(editor);\\n        }\\n        this.#selectEditors(newEditors);\\n      };\\n      const undo = () => {\\n        for (const editor of newEditors) {\\n          editor.remove();\\n        }\\n      };\\n      this.addCommands({ cmd, undo, mustExec: true });\\n    } catch (ex) {\\n      warn(`paste: \\\"${ex.message}\\\".`);\\n    }\\n  }\\n\\n  \u002F**\\n   * Keydown callback.\\n   * @param {KeyboardEvent} event\\n   *\u002F\\n  keydown(event) {\\n    if (!this.isShiftKeyDown && event.key === \\\"Shift\\\") {\\n      this.isShiftKeyDown = true;\\n    }\\n    if (\\n      this.#mode !== AnnotationEditorType.NONE &&\\n      !this.isEditorHandlingKeyboard\\n    ) {\\n      AnnotationEditorUIManager._keyboardManager.exec(this, event);\\n    }\\n  }\\n\\n  \u002F**\\n   * Keyup callback.\\n   * @param {KeyboardEvent} event\\n   *\u002F\\n  keyup(event) {\\n    if (this.isShiftKeyDown && event.key === \\\"Shift\\\") {\\n      this.isShiftKeyDown = false;\\n      if (this.#highlightWhenShiftUp) {\\n        this.#highlightWhenShiftUp = false;\\n        this.#onSelectEnd(\\\"main_toolbar\\\");\\n      }\\n    }\\n  }\\n\\n  \u002F**\\n   * Execute an action for a given name.\\n   * For example, the user can click on the \\\"Undo\\\" entry in the context menu\\n   * and it'll trigger the undo action.\\n   *\u002F\\n  onEditingAction({ name }) {\\n    switch (name) {\\n      case \\\"undo\\\":\\n      case \\\"redo\\\":\\n      case \\\"delete\\\":\\n      case \\\"selectAll\\\":\\n        this[name]();\\n        break;\\n      case \\\"highlightSelection\\\":\\n        this.highlightSelection(\\\"context_menu\\\");\\n        break;\\n    }\\n  }\\n\\n  \u002F**\\n   * Update the different possible states of this manager, e.g. is there\\n   * something to undo, redo, ...\\n   * @param {Object} details\\n   *\u002F\\n  #dispatchUpdateStates(details) {\\n    const hasChanged = Object.entries(details).some(\\n      ([key, value]) => this.#previousStates[key] !== value\\n    );\\n\\n    if (hasChanged) {\\n      this._eventBus.dispatch(\\\"annotationeditorstateschanged\\\", {\\n        source: this,\\n        details: Object.assign(this.#previousStates, details),\\n      });\\n      \u002F\u002F We could listen on our own event but it sounds like a bit weird and\\n      \u002F\u002F it's a way to simpler to handle that stuff here instead of having to\\n      \u002F\u002F add something in every place where an editor can be unselected.\\n      if (\\n        this.#mode === AnnotationEditorType.HIGHLIGHT &&\\n        details.hasSelectedEditor === false\\n      ) {\\n        this.#dispatchUpdateUI([\\n          [AnnotationEditorParamsType.HIGHLIGHT_FREE, true],\\n        ]);\\n      }\\n    }\\n  }\\n\\n  #dispatchUpdateUI(details) {\\n    this._eventBus.dispatch(\\\"annotationeditorparamschanged\\\", {\\n      source: this,\\n      details,\\n    });\\n  }\\n\\n  \u002F**\\n   * Set the editing state.\\n   * It can be useful to temporarily disable it when the user is editing a\\n   * FreeText annotation.\\n   * @param {boolean} isEditing\\n   *\u002F\\n  setEditingState(isEditing) {\\n    if (isEditing) {\\n      this.#addFocusManager();\\n      this.#addCopyPasteListeners();\\n      this.#dispatchUpdateStates({\\n        isEditing: this.#mode !== AnnotationEditorType.NONE,\\n        isEmpty: this.#isEmpty(),\\n        hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\\n        hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\\n        hasSelectedEditor: false,\\n      });\\n    } else {\\n      this.#removeFocusManager();\\n      this.#removeCopyPasteListeners();\\n      this.#dispatchUpdateStates({\\n        isEditing: false,\\n      });\\n      this.disableUserSelect(false);\\n    }\\n  }\\n\\n  registerEditorTypes(types) {\\n    if (this.#editorTypes) {\\n      return;\\n    }\\n    this.#editorTypes = types;\\n    for (const editorType of this.#editorTypes) {\\n      this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\\n    }\\n  }\\n\\n  \u002F**\\n   * Get an id.\\n   * @returns {string}\\n   *\u002F\\n  getId() {\\n    return this.#idManager.id;\\n  }\\n\\n  get currentLayer() {\\n    return this.#allLayers.get(this.#currentPageIndex);\\n  }\\n\\n  getLayer(pageIndex) {\\n    return this.#allLayers.get(pageIndex);\\n  }\\n\\n  get currentPageIndex() {\\n    return this.#currentPageIndex;\\n  }\\n\\n  \u002F**\\n   * Add a new layer for a page which will contains the editors.\\n   * @param {AnnotationEditorLayer} layer\\n   *\u002F\\n  addLayer(layer) {\\n    this.#allLayers.set(layer.pageIndex, layer);\\n    if (this.#isEnabled) {\\n      layer.enable();\\n    } else {\\n      layer.disable();\\n    }\\n  }\\n\\n  \u002F**\\n   * Remove a layer.\\n   * @param {AnnotationEditorLayer} layer\\n   *\u002F\\n  removeLayer(layer) {\\n    this.#allLayers.delete(layer.pageIndex);\\n  }\\n\\n  \u002F**\\n   * Change the editor mode (None, FreeText, Ink, ...)\\n   * @param {number} mode\\n   * @param {string|null} editId\\n   * @param {boolean} [isFromKeyboard] - true if the mode change is due to a\\n   *   keyboard action.\\n   *\u002F\\n  updateMode(mode, editId = null, isFromKeyboard = false) {\\n    if (this.#mode === mode) {\\n      return;\\n    }\\n    this.#mode = mode;\\n    if (mode === AnnotationEditorType.NONE) {\\n      this.setEditingState(false);\\n      this.#disableAll();\\n      return;\\n    }\\n    this.setEditingState(true);\\n    this.#enableAll();\\n    this.unselectAll();\\n    for (const layer of this.#allLayers.values()) {\\n      layer.updateMode(mode);\\n    }\\n    if (!editId && isFromKeyboard) {\\n      this.addNewEditorFromKeyboard();\\n      return;\\n    }\\n\\n    if (!editId) {\\n      return;\\n    }\\n    for (const editor of this.#allEditors.values()) {\\n      if (editor.annotationElementId === editId) {\\n        this.setSelected(editor);\\n        editor.enterInEditMode();\\n        break;\\n      }\\n    }\\n  }\\n\\n  addNewEditorFromKeyboard() {\\n    if (this.currentLayer.canCreateNewEmptyEditor()) {\\n      this.currentLayer.addNewEditor();\\n    }\\n  }\\n\\n  \u002F**\\n   * Update the toolbar if it's required to reflect the tool currently used.\\n   * @param {number} mode\\n   * @returns {undefined}\\n   *\u002F\\n  updateToolbar(mode) {\\n    if (mode === this.#mode) {\\n      return;\\n    }\\n    this._eventBus.dispatch(\\\"switchannotationeditormode\\\", {\\n      source: this,\\n      mode,\\n    });\\n  }\\n\\n  \u002F**\\n   * Update a parameter in the current editor or globally.\\n   * @param {number} type\\n   * @param {*} value\\n   *\u002F\\n  updateParams(type, value) {\\n    if (!this.#editorTypes) {\\n      return;\\n    }\\n\\n    switch (type) {\\n      case AnnotationEditorParamsType.CREATE:\\n        this.currentLayer.addNewEditor();\\n        return;\\n      case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\\n        this.#mainHighlightColorPicker?.updateColor(value);\\n        break;\\n      case AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL:\\n        this._eventBus.dispatch(\\\"reporttelemetry\\\", {\\n          source: this,\\n          details: {\\n            type: \\\"editing\\\",\\n            data: {\\n              type: \\\"highlight\\\",\\n              action: \\\"toggle_visibility\\\",\\n            },\\n          },\\n        });\\n        (this.#showAllStates ||= new Map()).set(type, value);\\n        this.showAllEditors(\\\"highlight\\\", value);\\n        break;\\n    }\\n\\n    for (const editor of this.#selectedEditors) {\\n      editor.updateParams(type, value);\\n    }\\n\\n    for (const editorType of this.#editorTypes) {\\n      editorType.updateDefaultParams(type, value);\\n    }\\n  }\\n\\n  showAllEditors(type, visible, updateButton = false) {\\n    for (const editor of this.#allEditors.values()) {\\n      if (editor.editorType === type) {\\n        editor.show(visible);\\n      }\\n    }\\n    const state =\\n      this.#showAllStates?.get(AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL) ??\\n      true;\\n    if (state !== visible) {\\n      this.#dispatchUpdateUI([\\n        [AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL, visible],\\n      ]);\\n    }\\n  }\\n\\n  enableWaiting(mustWait = false) {\\n    if (this.#isWaiting === mustWait) {\\n      return;\\n    }\\n    this.#isWaiting = mustWait;\\n    for (const layer of this.#allLayers.values()) {\\n      if (mustWait) {\\n        layer.disableClick();\\n      } else {\\n        layer.enableClick();\\n      }\\n      layer.div.classList.toggle(\\\"waiting\\\", mustWait);\\n    }\\n  }\\n\\n  \u002F**\\n   * Enable all the layers.\\n   *\u002F\\n  #enableAll() {\\n    if (!this.#isEnabled) {\\n      this.#isEnabled = true;\\n      for (const layer of this.#allLayers.values()) {\\n        layer.enable();\\n      }\\n      for (const editor of this.#allEditors.values()) {\\n        editor.enable();\\n      }\\n    }\\n  }\\n\\n  \u002F**\\n   * Disable all the layers.\\n   *\u002F\\n  #disableAll() {\\n    this.unselectAll();\\n    if (this.#isEnabled) {\\n      this.#isEnabled = false;\\n      for (const layer of this.#allLayers.values()) {\\n        layer.disable();\\n      }\\n      for (const editor of this.#allEditors.values()) {\\n        editor.disable();\\n      }\\n    }\\n  }\\n\\n  \u002F**\\n   * Get all the editors belonging to a given page.\\n   * @param {number} pageIndex\\n   * @returns {Array\u003CAnnotationEditor>}\\n   *\u002F\\n  getEditors(pageIndex) {\\n    const editors = [];\\n    for (const editor of this.#allEditors.values()) {\\n      if (editor.pageIndex === pageIndex) {\\n        editors.push(editor);\\n      }\\n    }\\n    return editors;\\n  }\\n\\n  \u002F**\\n   * Get an editor with the given id.\\n   * @param {string} id\\n   * @returns {AnnotationEditor}\\n   *\u002F\\n  getEditor(id) {\\n    return this.#allEditors.get(id);\\n  }\\n\\n  \u002F**\\n   * Add a new editor.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  addEditor(editor) {\\n    this.#allEditors.set(editor.id, editor);\\n  }\\n\\n  \u002F**\\n   * Remove an editor.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  removeEditor(editor) {\\n    if (editor.div.contains(document.activeElement)) {\\n      if (this.#focusMainContainerTimeoutId) {\\n        clearTimeout(this.#focusMainContainerTimeoutId);\\n      }\\n      this.#focusMainContainerTimeoutId = setTimeout(() => {\\n        \u002F\u002F When the div is removed from DOM the focus can move on the\\n        \u002F\u002F document.body, so we need to move it back to the main container.\\n        this.focusMainContainer();\\n        this.#focusMainContainerTimeoutId = null;\\n      }, 0);\\n    }\\n    this.#allEditors.delete(editor.id);\\n    this.unselect(editor);\\n    if (\\n      !editor.annotationElementId ||\\n      !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)\\n    ) {\\n      this.#annotationStorage?.remove(editor.id);\\n    }\\n  }\\n\\n  \u002F**\\n   * The annotation element with the given id has been deleted.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  addDeletedAnnotationElement(editor) {\\n    this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\\n    this.addChangedExistingAnnotation(editor);\\n    editor.deleted = true;\\n  }\\n\\n  \u002F**\\n   * Check if the annotation element with the given id has been deleted.\\n   * @param {string} annotationElementId\\n   * @returns {boolean}\\n   *\u002F\\n  isDeletedAnnotationElement(annotationElementId) {\\n    return this.#deletedAnnotationsElementIds.has(annotationElementId);\\n  }\\n\\n  \u002F**\\n   * The annotation element with the given id have been restored.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  removeDeletedAnnotationElement(editor) {\\n    this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\\n    this.removeChangedExistingAnnotation(editor);\\n    editor.deleted = false;\\n  }\\n\\n  \u002F**\\n   * Add an editor to the layer it belongs to or add it to the global map.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  #addEditorToLayer(editor) {\\n    const layer = this.#allLayers.get(editor.pageIndex);\\n    if (layer) {\\n      layer.addOrRebuild(editor);\\n    } else {\\n      this.addEditor(editor);\\n      this.addToAnnotationStorage(editor);\\n    }\\n  }\\n\\n  \u002F**\\n   * Set the given editor as the active one.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  setActiveEditor(editor) {\\n    if (this.#activeEditor === editor) {\\n      return;\\n    }\\n\\n    this.#activeEditor = editor;\\n    if (editor) {\\n      this.#dispatchUpdateUI(editor.propertiesToUpdate);\\n    }\\n  }\\n\\n  get #lastSelectedEditor() {\\n    let ed = null;\\n    for (ed of this.#selectedEditors) {\\n      \u002F\u002F Iterate to get the last element.\\n    }\\n    return ed;\\n  }\\n\\n  \u002F**\\n   * Update the UI of the active editor.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  updateUI(editor) {\\n    if (this.#lastSelectedEditor === editor) {\\n      this.#dispatchUpdateUI(editor.propertiesToUpdate);\\n    }\\n  }\\n\\n  \u002F**\\n   * Add or remove an editor the current selection.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  toggleSelected(editor) {\\n    if (this.#selectedEditors.has(editor)) {\\n      this.#selectedEditors.delete(editor);\\n      editor.unselect();\\n      this.#dispatchUpdateStates({\\n        hasSelectedEditor: this.hasSelection,\\n      });\\n      return;\\n    }\\n    this.#selectedEditors.add(editor);\\n    editor.select();\\n    this.#dispatchUpdateUI(editor.propertiesToUpdate);\\n    this.#dispatchUpdateStates({\\n      hasSelectedEditor: true,\\n    });\\n  }\\n\\n  \u002F**\\n   * Set the last selected editor.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  setSelected(editor) {\\n    for (const ed of this.#selectedEditors) {\\n      if (ed !== editor) {\\n        ed.unselect();\\n      }\\n    }\\n    this.#selectedEditors.clear();\\n\\n    this.#selectedEditors.add(editor);\\n    editor.select();\\n    this.#dispatchUpdateUI(editor.propertiesToUpdate);\\n    this.#dispatchUpdateStates({\\n      hasSelectedEditor: true,\\n    });\\n  }\\n\\n  \u002F**\\n   * Check if the editor is selected.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  isSelected(editor) {\\n    return this.#selectedEditors.has(editor);\\n  }\\n\\n  get firstSelectedEditor() {\\n    return this.#selectedEditors.values().next().value;\\n  }\\n\\n  \u002F**\\n   * Unselect an editor.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  unselect(editor) {\\n    editor.unselect();\\n    this.#selectedEditors.delete(editor);\\n    this.#dispatchUpdateStates({\\n      hasSelectedEditor: this.hasSelection,\\n    });\\n  }\\n\\n  get hasSelection() {\\n    return this.#selectedEditors.size !== 0;\\n  }\\n\\n  get isEnterHandled() {\\n    return (\\n      this.#selectedEditors.size === 1 &&\\n      this.firstSelectedEditor.isEnterHandled\\n    );\\n  }\\n\\n  \u002F**\\n   * Undo the last command.\\n   *\u002F\\n  undo() {\\n    this.#commandManager.undo();\\n    this.#dispatchUpdateStates({\\n      hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\\n      hasSomethingToRedo: true,\\n      isEmpty: this.#isEmpty(),\\n    });\\n  }\\n\\n  \u002F**\\n   * Redo the last undoed command.\\n   *\u002F\\n  redo() {\\n    this.#commandManager.redo();\\n    this.#dispatchUpdateStates({\\n      hasSomethingToUndo: true,\\n      hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\\n      isEmpty: this.#isEmpty(),\\n    });\\n  }\\n\\n  \u002F**\\n   * Add a command to execute (cmd) and another one to undo it.\\n   * @param {Object} params\\n   *\u002F\\n  addCommands(params) {\\n    this.#commandManager.add(params);\\n    this.#dispatchUpdateStates({\\n      hasSomethingToUndo: true,\\n      hasSomethingToRedo: false,\\n      isEmpty: this.#isEmpty(),\\n    });\\n  }\\n\\n  #isEmpty() {\\n    if (this.#allEditors.size === 0) {\\n      return true;\\n    }\\n\\n    if (this.#allEditors.size === 1) {\\n      for (const editor of this.#allEditors.values()) {\\n        return editor.isEmpty();\\n      }\\n    }\\n\\n    return false;\\n  }\\n\\n  \u002F**\\n   * Delete the current editor or all.\\n   *\u002F\\n  delete() {\\n    this.commitOrRemove();\\n    if (!this.hasSelection) {\\n      return;\\n    }\\n\\n    const editors = [...this.#selectedEditors];\\n    const cmd = () => {\\n      for (const editor of editors) {\\n        editor.remove();\\n      }\\n    };\\n    const undo = () => {\\n      for (const editor of editors) {\\n        this.#addEditorToLayer(editor);\\n      }\\n    };\\n\\n    this.addCommands({ cmd, undo, mustExec: true });\\n  }\\n\\n  commitOrRemove() {\\n    \u002F\u002F An editor is being edited so just commit it.\\n    this.#activeEditor?.commitOrRemove();\\n  }\\n\\n  hasSomethingToControl() {\\n    return this.#activeEditor || this.hasSelection;\\n  }\\n\\n  \u002F**\\n   * Select the editors.\\n   * @param {Array\u003CAnnotationEditor>} editors\\n   *\u002F\\n  #selectEditors(editors) {\\n    for (const editor of this.#selectedEditors) {\\n      editor.unselect();\\n    }\\n    this.#selectedEditors.clear();\\n    for (const editor of editors) {\\n      if (editor.isEmpty()) {\\n        continue;\\n      }\\n      this.#selectedEditors.add(editor);\\n      editor.select();\\n    }\\n    this.#dispatchUpdateStates({ hasSelectedEditor: this.hasSelection });\\n  }\\n\\n  \u002F**\\n   * Select all the editors.\\n   *\u002F\\n  selectAll() {\\n    for (const editor of this.#selectedEditors) {\\n      editor.commit();\\n    }\\n    this.#selectEditors(this.#allEditors.values());\\n  }\\n\\n  \u002F**\\n   * Unselect all the selected editors.\\n   *\u002F\\n  unselectAll() {\\n    if (this.#activeEditor) {\\n      \u002F\u002F An editor is being edited so just commit it.\\n      this.#activeEditor.commitOrRemove();\\n      if (this.#mode !== AnnotationEditorType.NONE) {\\n        \u002F\u002F If the mode is NONE, we want to really unselect the editor, hence we\\n        \u002F\u002F mustn't return here.\\n        return;\\n      }\\n    }\\n\\n    if (!this.hasSelection) {\\n      return;\\n    }\\n    for (const editor of this.#selectedEditors) {\\n      editor.unselect();\\n    }\\n    this.#selectedEditors.clear();\\n    this.#dispatchUpdateStates({\\n      hasSelectedEditor: false,\\n    });\\n  }\\n\\n  translateSelectedEditors(x, y, noCommit = false) {\\n    if (!noCommit) {\\n      this.commitOrRemove();\\n    }\\n    if (!this.hasSelection) {\\n      return;\\n    }\\n\\n    this.#translation[0] += x;\\n    this.#translation[1] += y;\\n    const [totalX, totalY] = this.#translation;\\n    const editors = [...this.#selectedEditors];\\n\\n    \u002F\u002F We don't want to have an undo\u002Fredo for each translation so we wait a bit\\n    \u002F\u002F before adding the command to the command manager.\\n    const TIME_TO_WAIT = 1000;\\n\\n    if (this.#translationTimeoutId) {\\n      clearTimeout(this.#translationTimeoutId);\\n    }\\n\\n    this.#translationTimeoutId = setTimeout(() => {\\n      this.#translationTimeoutId = null;\\n      this.#translation[0] = this.#translation[1] = 0;\\n\\n      this.addCommands({\\n        cmd: () => {\\n          for (const editor of editors) {\\n            if (this.#allEditors.has(editor.id)) {\\n              editor.translateInPage(totalX, totalY);\\n            }\\n          }\\n        },\\n        undo: () => {\\n          for (const editor of editors) {\\n            if (this.#allEditors.has(editor.id)) {\\n              editor.translateInPage(-totalX, -totalY);\\n            }\\n          }\\n        },\\n        mustExec: false,\\n      });\\n    }, TIME_TO_WAIT);\\n\\n    for (const editor of editors) {\\n      editor.translateInPage(x, y);\\n    }\\n  }\\n\\n  \u002F**\\n   * Set up the drag session for moving the selected editors.\\n   *\u002F\\n  setUpDragSession() {\\n    \u002F\u002F Note: don't use any references to the editor's parent which can be null\\n    \u002F\u002F if the editor belongs to a destroyed page.\\n    if (!this.hasSelection) {\\n      return;\\n    }\\n    \u002F\u002F Avoid to have spurious text selection in the text layer when dragging.\\n    this.disableUserSelect(true);\\n    this.#draggingEditors = new Map();\\n    for (const editor of this.#selectedEditors) {\\n      this.#draggingEditors.set(editor, {\\n        savedX: editor.x,\\n        savedY: editor.y,\\n        savedPageIndex: editor.pageIndex,\\n        newX: 0,\\n        newY: 0,\\n        newPageIndex: -1,\\n      });\\n    }\\n  }\\n\\n  \u002F**\\n   * Ends the drag session.\\n   * @returns {boolean} true if at least one editor has been moved.\\n   *\u002F\\n  endDragSession() {\\n    if (!this.#draggingEditors) {\\n      return false;\\n    }\\n    this.disableUserSelect(false);\\n    const map = this.#draggingEditors;\\n    this.#draggingEditors = null;\\n    let mustBeAddedInUndoStack = false;\\n\\n    for (const [{ x, y, pageIndex }, value] of map) {\\n      value.newX = x;\\n      value.newY = y;\\n      value.newPageIndex = pageIndex;\\n      mustBeAddedInUndoStack ||=\\n        x !== value.savedX ||\\n        y !== value.savedY ||\\n        pageIndex !== value.savedPageIndex;\\n    }\\n\\n    if (!mustBeAddedInUndoStack) {\\n      return false;\\n    }\\n\\n    const move = (editor, x, y, pageIndex) => {\\n      if (this.#allEditors.has(editor.id)) {\\n        \u002F\u002F The editor can be undone\u002Fredone on a page which is not visible (and\\n        \u002F\u002F which potentially has no annotation editor layer), hence we need to\\n        \u002F\u002F use the pageIndex instead of the parent.\\n        const parent = this.#allLayers.get(pageIndex);\\n        if (parent) {\\n          editor._setParentAndPosition(parent, x, y);\\n        } else {\\n          editor.pageIndex = pageIndex;\\n          editor.x = x;\\n          editor.y = y;\\n        }\\n      }\\n    };\\n\\n    this.addCommands({\\n      cmd: () => {\\n        for (const [editor, { newX, newY, newPageIndex }] of map) {\\n          move(editor, newX, newY, newPageIndex);\\n        }\\n      },\\n      undo: () => {\\n        for (const [editor, { savedX, savedY, savedPageIndex }] of map) {\\n          move(editor, savedX, savedY, savedPageIndex);\\n        }\\n      },\\n      mustExec: true,\\n    });\\n\\n    return true;\\n  }\\n\\n  \u002F**\\n   * Drag the set of selected editors.\\n   * @param {number} tx\\n   * @param {number} ty\\n   *\u002F\\n  dragSelectedEditors(tx, ty) {\\n    if (!this.#draggingEditors) {\\n      return;\\n    }\\n    for (const editor of this.#draggingEditors.keys()) {\\n      editor.drag(tx, ty);\\n    }\\n  }\\n\\n  \u002F**\\n   * Rebuild the editor (usually on undo\u002Fredo actions) on a potentially\\n   * non-rendered page.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  rebuild(editor) {\\n    if (editor.parent === null) {\\n      const parent = this.getLayer(editor.pageIndex);\\n      if (parent) {\\n        parent.changeParent(editor);\\n        parent.addOrRebuild(editor);\\n      } else {\\n        this.addEditor(editor);\\n        this.addToAnnotationStorage(editor);\\n        editor.rebuild();\\n      }\\n    } else {\\n      editor.parent.addOrRebuild(editor);\\n    }\\n  }\\n\\n  get isEditorHandlingKeyboard() {\\n    return (\\n      this.getActive()?.shouldGetKeyboardEvents() ||\\n      (this.#selectedEditors.size === 1 &&\\n        this.firstSelectedEditor.shouldGetKeyboardEvents())\\n    );\\n  }\\n\\n  \u002F**\\n   * Is the current editor the one passed as argument?\\n   * @param {AnnotationEditor} editor\\n   * @returns\\n   *\u002F\\n  isActive(editor) {\\n    return this.#activeEditor === editor;\\n  }\\n\\n  \u002F**\\n   * Get the current active editor.\\n   * @returns {AnnotationEditor|null}\\n   *\u002F\\n  getActive() {\\n    return this.#activeEditor;\\n  }\\n\\n  \u002F**\\n   * Get the current editor mode.\\n   * @returns {number}\\n   *\u002F\\n  getMode() {\\n    return this.#mode;\\n  }\\n\\n  get imageManager() {\\n    return shadow(this, \\\"imageManager\\\", new ImageManager());\\n  }\\n\\n  getSelectionBoxes(textLayer) {\\n    if (!textLayer) {\\n      return null;\\n    }\\n    const selection = document.getSelection();\\n    for (let i = 0, ii = selection.rangeCount; i \u003C ii; i++) {\\n      if (\\n        !textLayer.contains(selection.getRangeAt(i).commonAncestorContainer)\\n      ) {\\n        return null;\\n      }\\n    }\\n\\n    const {\\n      x: layerX,\\n      y: layerY,\\n      width: parentWidth,\\n      height: parentHeight,\\n    } = textLayer.getBoundingClientRect();\\n\\n    \u002F\u002F We must rotate the boxes because we want to have them in the non-rotated\\n    \u002F\u002F page coordinates.\\n    let rotator;\\n    switch (textLayer.getAttribute(\\\"data-main-rotation\\\")) {\\n      case \\\"90\\\":\\n        rotator = (x, y, w, h) => ({\\n          x: (y - layerY) \u002F parentHeight,\\n          y: 1 - (x + w - layerX) \u002F parentWidth,\\n          width: h \u002F parentHeight,\\n          height: w \u002F parentWidth,\\n        });\\n        break;\\n      case \\\"180\\\":\\n        rotator = (x, y, w, h) => ({\\n          x: 1 - (x + w - layerX) \u002F parentWidth,\\n          y: 1 - (y + h - layerY) \u002F parentHeight,\\n          width: w \u002F parentWidth,\\n          height: h \u002F parentHeight,\\n        });\\n        break;\\n      case \\\"270\\\":\\n        rotator = (x, y, w, h) => ({\\n          x: 1 - (y + h - layerY) \u002F parentHeight,\\n          y: (x - layerX) \u002F parentWidth,\\n          width: h \u002F parentHeight,\\n          height: w \u002F parentWidth,\\n        });\\n        break;\\n      default:\\n        rotator = (x, y, w, h) => ({\\n          x: (x - layerX) \u002F parentWidth,\\n          y: (y - layerY) \u002F parentHeight,\\n          width: w \u002F parentWidth,\\n          height: h \u002F parentHeight,\\n        });\\n        break;\\n    }\\n\\n    const boxes = [];\\n    for (let i = 0, ii = selection.rangeCount; i \u003C ii; i++) {\\n      const range = selection.getRangeAt(i);\\n      if (range.collapsed) {\\n        continue;\\n      }\\n      for (const { x, y, width, height } of range.getClientRects()) {\\n        if (width === 0 || height === 0) {\\n          continue;\\n        }\\n        boxes.push(rotator(x, y, width, height));\\n      }\\n    }\\n    return boxes.length === 0 ? null : boxes;\\n  }\\n\\n  addChangedExistingAnnotation({ annotationElementId, id }) {\\n    (this.#changedExistingAnnotations ||= new Map()).set(\\n      annotationElementId,\\n      id\\n    );\\n  }\\n\\n  removeChangedExistingAnnotation({ annotationElementId }) {\\n    this.#changedExistingAnnotations?.delete(annotationElementId);\\n  }\\n\\n  renderAnnotationElement(annotation) {\\n    const editorId = this.#changedExistingAnnotations?.get(annotation.data.id);\\n    if (!editorId) {\\n      return;\\n    }\\n    const editor = this.#annotationStorage.getRawValue(editorId);\\n    if (!editor) {\\n      return;\\n    }\\n    if (this.#mode === AnnotationEditorType.NONE && !editor.hasBeenModified) {\\n      return;\\n    }\\n    editor.renderAnnotationElement(annotation);\\n  }\\n}\\n\\nexport {\\n  AnnotationEditorUIManager,\\n  bindEvents,\\n  ColorManager,\\n  CommandManager,\\n  KeyboardManager,\\n  opacityToHex,\\n};\\n\",\"\u002F* Copyright 2023 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { noContextMenu } from \\\"..\u002Fdisplay_utils.js\\\";\\n\\nclass AltText {\\n  #altText = \\\"\\\";\\n\\n  #altTextDecorative = false;\\n\\n  #altTextButton = null;\\n\\n  #altTextTooltip = null;\\n\\n  #altTextTooltipTimeout = null;\\n\\n  #altTextWasFromKeyBoard = false;\\n\\n  #editor = null;\\n\\n  static _l10nPromise = null;\\n\\n  constructor(editor) {\\n    this.#editor = editor;\\n  }\\n\\n  static initialize(l10nPromise) {\\n    AltText._l10nPromise ||= l10nPromise;\\n  }\\n\\n  async render() {\\n    const altText = (this.#altTextButton = document.createElement(\\\"button\\\"));\\n    altText.className = \\\"altText\\\";\\n    const msg = await AltText._l10nPromise.get(\\n      \\\"pdfjs-editor-alt-text-button-label\\\"\\n    );\\n    altText.textContent = msg;\\n    altText.setAttribute(\\\"aria-label\\\", msg);\\n    altText.tabIndex = \\\"0\\\";\\n    altText.addEventListener(\\\"contextmenu\\\", noContextMenu);\\n    altText.addEventListener(\\\"pointerdown\\\", event => event.stopPropagation());\\n\\n    const onClick = event => {\\n      event.preventDefault();\\n      this.#editor._uiManager.editAltText(this.#editor);\\n    };\\n    altText.addEventListener(\\\"click\\\", onClick, { capture: true });\\n    altText.addEventListener(\\\"keydown\\\", event => {\\n      if (event.target === altText && event.key === \\\"Enter\\\") {\\n        this.#altTextWasFromKeyBoard = true;\\n        onClick(event);\\n      }\\n    });\\n    await this.#setState();\\n\\n    return altText;\\n  }\\n\\n  finish() {\\n    if (!this.#altTextButton) {\\n      return;\\n    }\\n    this.#altTextButton.focus({ focusVisible: this.#altTextWasFromKeyBoard });\\n    this.#altTextWasFromKeyBoard = false;\\n  }\\n\\n  isEmpty() {\\n    return !this.#altText && !this.#altTextDecorative;\\n  }\\n\\n  get data() {\\n    return {\\n      altText: this.#altText,\\n      decorative: this.#altTextDecorative,\\n    };\\n  }\\n\\n  \u002F**\\n   * Set the alt text data.\\n   *\u002F\\n  set data({ altText, decorative }) {\\n    if (this.#altText === altText && this.#altTextDecorative === decorative) {\\n      return;\\n    }\\n    this.#altText = altText;\\n    this.#altTextDecorative = decorative;\\n    this.#setState();\\n  }\\n\\n  toggle(enabled = false) {\\n    if (!this.#altTextButton) {\\n      return;\\n    }\\n    if (!enabled && this.#altTextTooltipTimeout) {\\n      clearTimeout(this.#altTextTooltipTimeout);\\n      this.#altTextTooltipTimeout = null;\\n    }\\n    this.#altTextButton.disabled = !enabled;\\n  }\\n\\n  destroy() {\\n    this.#altTextButton?.remove();\\n    this.#altTextButton = null;\\n    this.#altTextTooltip = null;\\n  }\\n\\n  async #setState() {\\n    const button = this.#altTextButton;\\n    if (!button) {\\n      return;\\n    }\\n    if (!this.#altText && !this.#altTextDecorative) {\\n      button.classList.remove(\\\"done\\\");\\n      this.#altTextTooltip?.remove();\\n      return;\\n    }\\n    button.classList.add(\\\"done\\\");\\n\\n    AltText._l10nPromise\\n      .get(\\\"pdfjs-editor-alt-text-edit-button-label\\\")\\n      .then(msg => {\\n        button.setAttribute(\\\"aria-label\\\", msg);\\n      });\\n    let tooltip = this.#altTextTooltip;\\n    if (!tooltip) {\\n      this.#altTextTooltip = tooltip = document.createElement(\\\"span\\\");\\n      tooltip.className = \\\"tooltip\\\";\\n      tooltip.setAttribute(\\\"role\\\", \\\"tooltip\\\");\\n      const id = (tooltip.id = `alt-text-tooltip-${this.#editor.id}`);\\n      button.setAttribute(\\\"aria-describedby\\\", id);\\n\\n      const DELAY_TO_SHOW_TOOLTIP = 100;\\n      button.addEventListener(\\\"mouseenter\\\", () => {\\n        this.#altTextTooltipTimeout = setTimeout(() => {\\n          this.#altTextTooltipTimeout = null;\\n          this.#altTextTooltip.classList.add(\\\"show\\\");\\n          this.#editor._reportTelemetry({\\n            action: \\\"alt_text_tooltip\\\",\\n          });\\n        }, DELAY_TO_SHOW_TOOLTIP);\\n      });\\n      button.addEventListener(\\\"mouseleave\\\", () => {\\n        if (this.#altTextTooltipTimeout) {\\n          clearTimeout(this.#altTextTooltipTimeout);\\n          this.#altTextTooltipTimeout = null;\\n        }\\n        this.#altTextTooltip?.classList.remove(\\\"show\\\");\\n      });\\n    }\\n    tooltip.innerText = this.#altTextDecorative\\n      ? await AltText._l10nPromise.get(\\n          \\\"pdfjs-editor-alt-text-decorative-tooltip\\\"\\n        )\\n      : this.#altText;\\n\\n    if (!tooltip.parentNode) {\\n      button.append(tooltip);\\n    }\\n\\n    const element = this.#editor.getImageForAltText();\\n    element?.setAttribute(\\\"aria-describedby\\\", tooltip.id);\\n  }\\n}\\n\\nexport { AltText };\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fannotation_editor_layer.js\\\").AnnotationEditorLayer} AnnotationEditorLayer *\u002F\\n\\nimport {\\n  AnnotationEditorUIManager,\\n  bindEvents,\\n  ColorManager,\\n  KeyboardManager,\\n} from \\\".\u002Ftools.js\\\";\\nimport { FeatureTest, shadow, unreachable } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport { AltText } from \\\".\u002Falt_text.js\\\";\\nimport { EditorToolbar } from \\\".\u002Ftoolbar.js\\\";\\nimport { noContextMenu } from \\\"..\u002Fdisplay_utils.js\\\";\\n\\n\u002F**\\n * @typedef {Object} AnnotationEditorParameters\\n * @property {AnnotationEditorUIManager} uiManager - the global manager\\n * @property {AnnotationEditorLayer} parent - the layer containing this editor\\n * @property {string} id - editor id\\n * @property {number} x - x-coordinate\\n * @property {number} y - y-coordinate\\n *\u002F\\n\\n\u002F**\\n * Base class for editors.\\n *\u002F\\nclass AnnotationEditor {\\n  #allResizerDivs = null;\\n\\n  #altText = null;\\n\\n  #disabled = false;\\n\\n  #keepAspectRatio = false;\\n\\n  #resizersDiv = null;\\n\\n  #savedDimensions = null;\\n\\n  #boundFocusin = this.focusin.bind(this);\\n\\n  #boundFocusout = this.focusout.bind(this);\\n\\n  #editToolbar = null;\\n\\n  #focusedResizerName = \\\"\\\";\\n\\n  #hasBeenClicked = false;\\n\\n  #initialPosition = null;\\n\\n  #isEditing = false;\\n\\n  #isInEditMode = false;\\n\\n  #isResizerEnabledForKeyboard = false;\\n\\n  #moveInDOMTimeout = null;\\n\\n  #prevDragX = 0;\\n\\n  #prevDragY = 0;\\n\\n  #telemetryTimeouts = null;\\n\\n  _initialOptions = Object.create(null);\\n\\n  _isVisible = true;\\n\\n  _uiManager = null;\\n\\n  _focusEventsAllowed = true;\\n\\n  _l10nPromise = null;\\n\\n  #isDraggable = false;\\n\\n  #zIndex = AnnotationEditor._zIndex++;\\n\\n  static _borderLineWidth = -1;\\n\\n  static _colorManager = new ColorManager();\\n\\n  static _zIndex = 1;\\n\\n  \u002F\u002F Time to wait (in ms) before sending the telemetry data.\\n  \u002F\u002F We wait a bit to avoid sending too many requests when changing something\\n  \u002F\u002F like the thickness of a line.\\n  static _telemetryTimeout = 1000;\\n\\n  static get _resizerKeyboardManager() {\\n    const resize = AnnotationEditor.prototype._resizeWithKeyboard;\\n    const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\\n    const big = AnnotationEditorUIManager.TRANSLATE_BIG;\\n\\n    return shadow(\\n      this,\\n      \\\"_resizerKeyboardManager\\\",\\n      new KeyboardManager([\\n        [[\\\"ArrowLeft\\\", \\\"mac+ArrowLeft\\\"], resize, { args: [-small, 0] }],\\n        [\\n          [\\\"ctrl+ArrowLeft\\\", \\\"mac+shift+ArrowLeft\\\"],\\n          resize,\\n          { args: [-big, 0] },\\n        ],\\n        [[\\\"ArrowRight\\\", \\\"mac+ArrowRight\\\"], resize, { args: [small, 0] }],\\n        [\\n          [\\\"ctrl+ArrowRight\\\", \\\"mac+shift+ArrowRight\\\"],\\n          resize,\\n          { args: [big, 0] },\\n        ],\\n        [[\\\"ArrowUp\\\", \\\"mac+ArrowUp\\\"], resize, { args: [0, -small] }],\\n        [[\\\"ctrl+ArrowUp\\\", \\\"mac+shift+ArrowUp\\\"], resize, { args: [0, -big] }],\\n        [[\\\"ArrowDown\\\", \\\"mac+ArrowDown\\\"], resize, { args: [0, small] }],\\n        [[\\\"ctrl+ArrowDown\\\", \\\"mac+shift+ArrowDown\\\"], resize, { args: [0, big] }],\\n        [\\n          [\\\"Escape\\\", \\\"mac+Escape\\\"],\\n          AnnotationEditor.prototype._stopResizingWithKeyboard,\\n        ],\\n      ])\\n    );\\n  }\\n\\n  \u002F**\\n   * @param {AnnotationEditorParameters} parameters\\n   *\u002F\\n  constructor(parameters) {\\n    if (this.constructor === AnnotationEditor) {\\n      unreachable(\\\"Cannot initialize AnnotationEditor.\\\");\\n    }\\n\\n    this.parent = parameters.parent;\\n    this.id = parameters.id;\\n    this.width = this.height = null;\\n    this.pageIndex = parameters.parent.pageIndex;\\n    this.name = parameters.name;\\n    this.div = null;\\n    this._uiManager = parameters.uiManager;\\n    this.annotationElementId = null;\\n    this._willKeepAspectRatio = false;\\n    this._initialOptions.isCentered = parameters.isCentered;\\n    this._structTreeParentId = null;\\n\\n    const {\\n      rotation,\\n      rawDims: { pageWidth, pageHeight, pageX, pageY },\\n    } = this.parent.viewport;\\n\\n    this.rotation = rotation;\\n    this.pageRotation =\\n      (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\\n    this.pageDimensions = [pageWidth, pageHeight];\\n    this.pageTranslation = [pageX, pageY];\\n\\n    const [width, height] = this.parentDimensions;\\n    this.x = parameters.x \u002F width;\\n    this.y = parameters.y \u002F height;\\n\\n    this.isAttachedToDOM = false;\\n    this.deleted = false;\\n  }\\n\\n  get editorType() {\\n    return Object.getPrototypeOf(this).constructor._type;\\n  }\\n\\n  static get _defaultLineColor() {\\n    return shadow(\\n      this,\\n      \\\"_defaultLineColor\\\",\\n      this._colorManager.getHexCode(\\\"CanvasText\\\")\\n    );\\n  }\\n\\n  static deleteAnnotationElement(editor) {\\n    const fakeEditor = new FakeEditor({\\n      id: editor.parent.getNextId(),\\n      parent: editor.parent,\\n      uiManager: editor._uiManager,\\n    });\\n    fakeEditor.annotationElementId = editor.annotationElementId;\\n    fakeEditor.deleted = true;\\n    fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);\\n  }\\n\\n  \u002F**\\n   * Initialize the l10n stuff for this type of editor.\\n   * @param {Object} l10n\\n   *\u002F\\n  static initialize(l10n, _uiManager, options) {\\n    AnnotationEditor._l10nPromise ||= new Map(\\n      [\\n        \\\"pdfjs-editor-alt-text-button-label\\\",\\n        \\\"pdfjs-editor-alt-text-edit-button-label\\\",\\n        \\\"pdfjs-editor-alt-text-decorative-tooltip\\\",\\n        \\\"pdfjs-editor-resizer-label-topLeft\\\",\\n        \\\"pdfjs-editor-resizer-label-topMiddle\\\",\\n        \\\"pdfjs-editor-resizer-label-topRight\\\",\\n        \\\"pdfjs-editor-resizer-label-middleRight\\\",\\n        \\\"pdfjs-editor-resizer-label-bottomRight\\\",\\n        \\\"pdfjs-editor-resizer-label-bottomMiddle\\\",\\n        \\\"pdfjs-editor-resizer-label-bottomLeft\\\",\\n        \\\"pdfjs-editor-resizer-label-middleLeft\\\",\\n      ].map(str => [\\n        str,\\n        l10n.get(str.replaceAll(\u002F([A-Z])\u002Fg, c => `-${c.toLowerCase()}`)),\\n      ])\\n    );\\n    if (options?.strings) {\\n      for (const str of options.strings) {\\n        AnnotationEditor._l10nPromise.set(str, l10n.get(str));\\n      }\\n    }\\n    if (AnnotationEditor._borderLineWidth !== -1) {\\n      return;\\n    }\\n    const style = getComputedStyle(document.documentElement);\\n    AnnotationEditor._borderLineWidth =\\n      parseFloat(style.getPropertyValue(\\\"--outline-width\\\")) || 0;\\n  }\\n\\n  \u002F**\\n   * Update the default parameters for this type of editor.\\n   * @param {number} _type\\n   * @param {*} _value\\n   *\u002F\\n  static updateDefaultParams(_type, _value) {}\\n\\n  \u002F**\\n   * Get the default properties to set in the UI for this type of editor.\\n   * @returns {Array}\\n   *\u002F\\n  static get defaultPropertiesToUpdate() {\\n    return [];\\n  }\\n\\n  \u002F**\\n   * Check if this kind of editor is able to handle the given mime type for\\n   * pasting.\\n   * @param {string} mime\\n   * @returns {boolean}\\n   *\u002F\\n  static isHandlingMimeForPasting(mime) {\\n    return false;\\n  }\\n\\n  \u002F**\\n   * Extract the data from the clipboard item and delegate the creation of the\\n   * editor to the parent.\\n   * @param {DataTransferItem} item\\n   * @param {AnnotationEditorLayer} parent\\n   *\u002F\\n  static paste(item, parent) {\\n    unreachable(\\\"Not implemented\\\");\\n  }\\n\\n  \u002F**\\n   * Get the properties to update in the UI for this editor.\\n   * @returns {Array}\\n   *\u002F\\n  get propertiesToUpdate() {\\n    return [];\\n  }\\n\\n  get _isDraggable() {\\n    return this.#isDraggable;\\n  }\\n\\n  set _isDraggable(value) {\\n    this.#isDraggable = value;\\n    this.div?.classList.toggle(\\\"draggable\\\", value);\\n  }\\n\\n  \u002F**\\n   * @returns {boolean} true if the editor handles the Enter key itself.\\n   *\u002F\\n  get isEnterHandled() {\\n    return true;\\n  }\\n\\n  center() {\\n    const [pageWidth, pageHeight] = this.pageDimensions;\\n    switch (this.parentRotation) {\\n      case 90:\\n        this.x -= (this.height * pageHeight) \u002F (pageWidth * 2);\\n        this.y += (this.width * pageWidth) \u002F (pageHeight * 2);\\n        break;\\n      case 180:\\n        this.x += this.width \u002F 2;\\n        this.y += this.height \u002F 2;\\n        break;\\n      case 270:\\n        this.x += (this.height * pageHeight) \u002F (pageWidth * 2);\\n        this.y -= (this.width * pageWidth) \u002F (pageHeight * 2);\\n        break;\\n      default:\\n        this.x -= this.width \u002F 2;\\n        this.y -= this.height \u002F 2;\\n        break;\\n    }\\n    this.fixAndSetPosition();\\n  }\\n\\n  \u002F**\\n   * Add some commands into the CommandManager (undo\u002Fredo stuff).\\n   * @param {Object} params\\n   *\u002F\\n  addCommands(params) {\\n    this._uiManager.addCommands(params);\\n  }\\n\\n  get currentLayer() {\\n    return this._uiManager.currentLayer;\\n  }\\n\\n  \u002F**\\n   * This editor will be behind the others.\\n   *\u002F\\n  setInBackground() {\\n    this.div.style.zIndex = 0;\\n  }\\n\\n  \u002F**\\n   * This editor will be in the foreground.\\n   *\u002F\\n  setInForeground() {\\n    this.div.style.zIndex = this.#zIndex;\\n  }\\n\\n  setParent(parent) {\\n    if (parent !== null) {\\n      this.pageIndex = parent.pageIndex;\\n      this.pageDimensions = parent.pageDimensions;\\n    } else {\\n      \u002F\u002F The editor is being removed from the DOM, so we need to stop resizing.\\n      this.#stopResizing();\\n    }\\n    this.parent = parent;\\n  }\\n\\n  \u002F**\\n   * onfocus callback.\\n   *\u002F\\n  focusin(event) {\\n    if (!this._focusEventsAllowed) {\\n      return;\\n    }\\n    if (!this.#hasBeenClicked) {\\n      this.parent.setSelected(this);\\n    } else {\\n      this.#hasBeenClicked = false;\\n    }\\n  }\\n\\n  \u002F**\\n   * onblur callback.\\n   * @param {FocusEvent} event\\n   *\u002F\\n  focusout(event) {\\n    if (!this._focusEventsAllowed) {\\n      return;\\n    }\\n\\n    if (!this.isAttachedToDOM) {\\n      return;\\n    }\\n\\n    \u002F\u002F In case of focusout, the relatedTarget is the element which\\n    \u002F\u002F is grabbing the focus.\\n    \u002F\u002F So if the related target is an element under the div for this\\n    \u002F\u002F editor, then the editor isn't unactive.\\n    const target = event.relatedTarget;\\n    if (target?.closest(`#${this.id}`)) {\\n      return;\\n    }\\n\\n    event.preventDefault();\\n\\n    if (!this.parent?.isMultipleSelection) {\\n      this.commitOrRemove();\\n    }\\n  }\\n\\n  commitOrRemove() {\\n    if (this.isEmpty()) {\\n      this.remove();\\n    } else {\\n      this.commit();\\n    }\\n  }\\n\\n  \u002F**\\n   * Commit the data contained in this editor.\\n   *\u002F\\n  commit() {\\n    this.addToAnnotationStorage();\\n  }\\n\\n  addToAnnotationStorage() {\\n    this._uiManager.addToAnnotationStorage(this);\\n  }\\n\\n  \u002F**\\n   * Set the editor position within its parent.\\n   * @param {number} x\\n   * @param {number} y\\n   * @param {number} tx - x-translation in screen coordinates.\\n   * @param {number} ty - y-translation in screen coordinates.\\n   *\u002F\\n  setAt(x, y, tx, ty) {\\n    const [width, height] = this.parentDimensions;\\n    [tx, ty] = this.screenToPageTranslation(tx, ty);\\n\\n    this.x = (x + tx) \u002F width;\\n    this.y = (y + ty) \u002F height;\\n\\n    this.fixAndSetPosition();\\n  }\\n\\n  #translate([width, height], x, y) {\\n    [x, y] = this.screenToPageTranslation(x, y);\\n\\n    this.x += x \u002F width;\\n    this.y += y \u002F height;\\n\\n    this.fixAndSetPosition();\\n  }\\n\\n  \u002F**\\n   * Translate the editor position within its parent.\\n   * @param {number} x - x-translation in screen coordinates.\\n   * @param {number} y - y-translation in screen coordinates.\\n   *\u002F\\n  translate(x, y) {\\n    \u002F\u002F We don't change the initial position because the move here hasn't been\\n    \u002F\u002F done by the user.\\n    this.#translate(this.parentDimensions, x, y);\\n  }\\n\\n  \u002F**\\n   * Translate the editor position within its page and adjust the scroll\\n   * in order to have the editor in the view.\\n   * @param {number} x - x-translation in page coordinates.\\n   * @param {number} y - y-translation in page coordinates.\\n   *\u002F\\n  translateInPage(x, y) {\\n    this.#initialPosition ||= [this.x, this.y];\\n    this.#translate(this.pageDimensions, x, y);\\n    this.div.scrollIntoView({ block: \\\"nearest\\\" });\\n  }\\n\\n  drag(tx, ty) {\\n    this.#initialPosition ||= [this.x, this.y];\\n    const [parentWidth, parentHeight] = this.parentDimensions;\\n    this.x += tx \u002F parentWidth;\\n    this.y += ty \u002F parentHeight;\\n    if (this.parent && (this.x \u003C 0 || this.x > 1 || this.y \u003C 0 || this.y > 1)) {\\n      \u002F\u002F It's possible to not have a parent: for example, when the user is\\n      \u002F\u002F dragging all the selected editors but this one on a page which has been\\n      \u002F\u002F destroyed.\\n      \u002F\u002F It's why we need to check for it. In such a situation, it isn't really\\n      \u002F\u002F a problem to not find a new parent: it's something which is related to\\n      \u002F\u002F what the user is seeing, hence it depends on how pages are layed out.\\n\\n      \u002F\u002F The element will be outside of its parent so change the parent.\\n      const { x, y } = this.div.getBoundingClientRect();\\n      if (this.parent.findNewParent(this, x, y)) {\\n        this.x -= Math.floor(this.x);\\n        this.y -= Math.floor(this.y);\\n      }\\n    }\\n\\n    \u002F\u002F The editor can be moved wherever the user wants, so we don't need to fix\\n    \u002F\u002F the position: it'll be done when the user will release the mouse button.\\n\\n    let { x, y } = this;\\n    const [bx, by] = this.getBaseTranslation();\\n    x += bx;\\n    y += by;\\n\\n    this.div.style.left = `${(100 * x).toFixed(2)}%`;\\n    this.div.style.top = `${(100 * y).toFixed(2)}%`;\\n    this.div.scrollIntoView({ block: \\\"nearest\\\" });\\n  }\\n\\n  get _hasBeenMoved() {\\n    return (\\n      !!this.#initialPosition &&\\n      (this.#initialPosition[0] !== this.x ||\\n        this.#initialPosition[1] !== this.y)\\n    );\\n  }\\n\\n  \u002F**\\n   * Get the translation to take into account the editor border.\\n   * The CSS engine positions the element by taking the border into account so\\n   * we must apply the opposite translation to have the editor in the right\\n   * position.\\n   * @returns {Array\u003Cnumber>}\\n   *\u002F\\n  getBaseTranslation() {\\n    const [parentWidth, parentHeight] = this.parentDimensions;\\n    const { _borderLineWidth } = AnnotationEditor;\\n    const x = _borderLineWidth \u002F parentWidth;\\n    const y = _borderLineWidth \u002F parentHeight;\\n    switch (this.rotation) {\\n      case 90:\\n        return [-x, y];\\n      case 180:\\n        return [x, y];\\n      case 270:\\n        return [x, -y];\\n      default:\\n        return [-x, -y];\\n    }\\n  }\\n\\n  \u002F**\\n   * @returns {boolean} true if position must be fixed (i.e. make the x and y\\n   * living in the page).\\n   *\u002F\\n  get _mustFixPosition() {\\n    return true;\\n  }\\n\\n  \u002F**\\n   * Fix the position of the editor in order to keep it inside its parent page.\\n   * @param {number} [rotation] - the rotation of the page.\\n   *\u002F\\n  fixAndSetPosition(rotation = this.rotation) {\\n    const [pageWidth, pageHeight] = this.pageDimensions;\\n    let { x, y, width, height } = this;\\n    width *= pageWidth;\\n    height *= pageHeight;\\n    x *= pageWidth;\\n    y *= pageHeight;\\n\\n    if (this._mustFixPosition) {\\n      switch (rotation) {\\n        case 0:\\n          x = Math.max(0, Math.min(pageWidth - width, x));\\n          y = Math.max(0, Math.min(pageHeight - height, y));\\n          break;\\n        case 90:\\n          x = Math.max(0, Math.min(pageWidth - height, x));\\n          y = Math.min(pageHeight, Math.max(width, y));\\n          break;\\n        case 180:\\n          x = Math.min(pageWidth, Math.max(width, x));\\n          y = Math.min(pageHeight, Math.max(height, y));\\n          break;\\n        case 270:\\n          x = Math.min(pageWidth, Math.max(height, x));\\n          y = Math.max(0, Math.min(pageHeight - width, y));\\n          break;\\n      }\\n    }\\n\\n    this.x = x \u002F= pageWidth;\\n    this.y = y \u002F= pageHeight;\\n\\n    const [bx, by] = this.getBaseTranslation();\\n    x += bx;\\n    y += by;\\n\\n    const { style } = this.div;\\n    style.left = `${(100 * x).toFixed(2)}%`;\\n    style.top = `${(100 * y).toFixed(2)}%`;\\n\\n    this.moveInDOM();\\n  }\\n\\n  static #rotatePoint(x, y, angle) {\\n    switch (angle) {\\n      case 90:\\n        return [y, -x];\\n      case 180:\\n        return [-x, -y];\\n      case 270:\\n        return [-y, x];\\n      default:\\n        return [x, y];\\n    }\\n  }\\n\\n  \u002F**\\n   * Convert a screen translation into a page one.\\n   * @param {number} x\\n   * @param {number} y\\n   *\u002F\\n  screenToPageTranslation(x, y) {\\n    return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\\n  }\\n\\n  \u002F**\\n   * Convert a page translation into a screen one.\\n   * @param {number} x\\n   * @param {number} y\\n   *\u002F\\n  pageTranslationToScreen(x, y) {\\n    return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\\n  }\\n\\n  #getRotationMatrix(rotation) {\\n    switch (rotation) {\\n      case 90: {\\n        const [pageWidth, pageHeight] = this.pageDimensions;\\n        return [0, -pageWidth \u002F pageHeight, pageHeight \u002F pageWidth, 0];\\n      }\\n      case 180:\\n        return [-1, 0, 0, -1];\\n      case 270: {\\n        const [pageWidth, pageHeight] = this.pageDimensions;\\n        return [0, pageWidth \u002F pageHeight, -pageHeight \u002F pageWidth, 0];\\n      }\\n      default:\\n        return [1, 0, 0, 1];\\n    }\\n  }\\n\\n  get parentScale() {\\n    return this._uiManager.viewParameters.realScale;\\n  }\\n\\n  get parentRotation() {\\n    return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\\n  }\\n\\n  get parentDimensions() {\\n    const {\\n      parentScale,\\n      pageDimensions: [pageWidth, pageHeight],\\n    } = this;\\n    const scaledWidth = pageWidth * parentScale;\\n    const scaledHeight = pageHeight * parentScale;\\n    return FeatureTest.isCSSRoundSupported\\n      ? [Math.round(scaledWidth), Math.round(scaledHeight)]\\n      : [scaledWidth, scaledHeight];\\n  }\\n\\n  \u002F**\\n   * Set the dimensions of this editor.\\n   * @param {number} width\\n   * @param {number} height\\n   *\u002F\\n  setDims(width, height) {\\n    const [parentWidth, parentHeight] = this.parentDimensions;\\n    this.div.style.width = `${((100 * width) \u002F parentWidth).toFixed(2)}%`;\\n    if (!this.#keepAspectRatio) {\\n      this.div.style.height = `${((100 * height) \u002F parentHeight).toFixed(2)}%`;\\n    }\\n  }\\n\\n  fixDims() {\\n    const { style } = this.div;\\n    const { height, width } = style;\\n    const widthPercent = width.endsWith(\\\"%\\\");\\n    const heightPercent = !this.#keepAspectRatio && height.endsWith(\\\"%\\\");\\n    if (widthPercent && heightPercent) {\\n      return;\\n    }\\n\\n    const [parentWidth, parentHeight] = this.parentDimensions;\\n    if (!widthPercent) {\\n      style.width = `${((100 * parseFloat(width)) \u002F parentWidth).toFixed(2)}%`;\\n    }\\n    if (!this.#keepAspectRatio && !heightPercent) {\\n      style.height = `${((100 * parseFloat(height)) \u002F parentHeight).toFixed(\\n        2\\n      )}%`;\\n    }\\n  }\\n\\n  \u002F**\\n   * Get the translation used to position this editor when it's created.\\n   * @returns {Array\u003Cnumber>}\\n   *\u002F\\n  getInitialTranslation() {\\n    return [0, 0];\\n  }\\n\\n  #createResizers() {\\n    if (this.#resizersDiv) {\\n      return;\\n    }\\n    this.#resizersDiv = document.createElement(\\\"div\\\");\\n    this.#resizersDiv.classList.add(\\\"resizers\\\");\\n    \u002F\u002F When the resizers are used with the keyboard, they're focusable, hence\\n    \u002F\u002F we want to have them in this order (top left, top middle, top right, ...)\\n    \u002F\u002F in the DOM to have the focus order correct.\\n    const classes = this._willKeepAspectRatio\\n      ? [\\\"topLeft\\\", \\\"topRight\\\", \\\"bottomRight\\\", \\\"bottomLeft\\\"]\\n      : [\\n          \\\"topLeft\\\",\\n          \\\"topMiddle\\\",\\n          \\\"topRight\\\",\\n          \\\"middleRight\\\",\\n          \\\"bottomRight\\\",\\n          \\\"bottomMiddle\\\",\\n          \\\"bottomLeft\\\",\\n          \\\"middleLeft\\\",\\n        ];\\n    for (const name of classes) {\\n      const div = document.createElement(\\\"div\\\");\\n      this.#resizersDiv.append(div);\\n      div.classList.add(\\\"resizer\\\", name);\\n      div.setAttribute(\\\"data-resizer-name\\\", name);\\n      div.addEventListener(\\n        \\\"pointerdown\\\",\\n        this.#resizerPointerdown.bind(this, name)\\n      );\\n      div.addEventListener(\\\"contextmenu\\\", noContextMenu);\\n      div.tabIndex = -1;\\n    }\\n    this.div.prepend(this.#resizersDiv);\\n  }\\n\\n  #resizerPointerdown(name, event) {\\n    event.preventDefault();\\n    const { isMac } = FeatureTest.platform;\\n    if (event.button !== 0 || (event.ctrlKey && isMac)) {\\n      return;\\n    }\\n\\n    this.#altText?.toggle(false);\\n\\n    const boundResizerPointermove = this.#resizerPointermove.bind(this, name);\\n    const savedDraggable = this._isDraggable;\\n    this._isDraggable = false;\\n    const pointerMoveOptions = { passive: true, capture: true };\\n    this.parent.togglePointerEvents(false);\\n    window.addEventListener(\\n      \\\"pointermove\\\",\\n      boundResizerPointermove,\\n      pointerMoveOptions\\n    );\\n    window.addEventListener(\\\"contextmenu\\\", noContextMenu);\\n    const savedX = this.x;\\n    const savedY = this.y;\\n    const savedWidth = this.width;\\n    const savedHeight = this.height;\\n    const savedParentCursor = this.parent.div.style.cursor;\\n    const savedCursor = this.div.style.cursor;\\n    this.div.style.cursor = this.parent.div.style.cursor =\\n      window.getComputedStyle(event.target).cursor;\\n\\n    const pointerUpCallback = () => {\\n      this.parent.togglePointerEvents(true);\\n      this.#altText?.toggle(true);\\n      this._isDraggable = savedDraggable;\\n      window.removeEventListener(\\\"pointerup\\\", pointerUpCallback);\\n      window.removeEventListener(\\\"blur\\\", pointerUpCallback);\\n      window.removeEventListener(\\n        \\\"pointermove\\\",\\n        boundResizerPointermove,\\n        pointerMoveOptions\\n      );\\n      window.removeEventListener(\\\"contextmenu\\\", noContextMenu);\\n      this.parent.div.style.cursor = savedParentCursor;\\n      this.div.style.cursor = savedCursor;\\n\\n      this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight);\\n    };\\n    window.addEventListener(\\\"pointerup\\\", pointerUpCallback);\\n    \u002F\u002F If the user switches to another window (with alt+tab), then we end the\\n    \u002F\u002F resize session.\\n    window.addEventListener(\\\"blur\\\", pointerUpCallback);\\n  }\\n\\n  #addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight) {\\n    const newX = this.x;\\n    const newY = this.y;\\n    const newWidth = this.width;\\n    const newHeight = this.height;\\n    if (\\n      newX === savedX &&\\n      newY === savedY &&\\n      newWidth === savedWidth &&\\n      newHeight === savedHeight\\n    ) {\\n      return;\\n    }\\n\\n    this.addCommands({\\n      cmd: () => {\\n        this.width = newWidth;\\n        this.height = newHeight;\\n        this.x = newX;\\n        this.y = newY;\\n        const [parentWidth, parentHeight] = this.parentDimensions;\\n        this.setDims(parentWidth * newWidth, parentHeight * newHeight);\\n        this.fixAndSetPosition();\\n      },\\n      undo: () => {\\n        this.width = savedWidth;\\n        this.height = savedHeight;\\n        this.x = savedX;\\n        this.y = savedY;\\n        const [parentWidth, parentHeight] = this.parentDimensions;\\n        this.setDims(parentWidth * savedWidth, parentHeight * savedHeight);\\n        this.fixAndSetPosition();\\n      },\\n      mustExec: true,\\n    });\\n  }\\n\\n  #resizerPointermove(name, event) {\\n    const [parentWidth, parentHeight] = this.parentDimensions;\\n    const savedX = this.x;\\n    const savedY = this.y;\\n    const savedWidth = this.width;\\n    const savedHeight = this.height;\\n    const minWidth = AnnotationEditor.MIN_SIZE \u002F parentWidth;\\n    const minHeight = AnnotationEditor.MIN_SIZE \u002F parentHeight;\\n\\n    \u002F\u002F 10000 because we multiply by 100 and use toFixed(2) in fixAndSetPosition.\\n    \u002F\u002F Without rounding, the positions of the corners other than the top left\\n    \u002F\u002F one can be slightly wrong.\\n    const round = x => Math.round(x * 10000) \u002F 10000;\\n    const rotationMatrix = this.#getRotationMatrix(this.rotation);\\n    const transf = (x, y) => [\\n      rotationMatrix[0] * x + rotationMatrix[2] * y,\\n      rotationMatrix[1] * x + rotationMatrix[3] * y,\\n    ];\\n    const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\\n    const invTransf = (x, y) => [\\n      invRotationMatrix[0] * x + invRotationMatrix[2] * y,\\n      invRotationMatrix[1] * x + invRotationMatrix[3] * y,\\n    ];\\n    let getPoint;\\n    let getOpposite;\\n    let isDiagonal = false;\\n    let isHorizontal = false;\\n\\n    switch (name) {\\n      case \\\"topLeft\\\":\\n        isDiagonal = true;\\n        getPoint = (w, h) => [0, 0];\\n        getOpposite = (w, h) => [w, h];\\n        break;\\n      case \\\"topMiddle\\\":\\n        getPoint = (w, h) => [w \u002F 2, 0];\\n        getOpposite = (w, h) => [w \u002F 2, h];\\n        break;\\n      case \\\"topRight\\\":\\n        isDiagonal = true;\\n        getPoint = (w, h) => [w, 0];\\n        getOpposite = (w, h) => [0, h];\\n        break;\\n      case \\\"middleRight\\\":\\n        isHorizontal = true;\\n        getPoint = (w, h) => [w, h \u002F 2];\\n        getOpposite = (w, h) => [0, h \u002F 2];\\n        break;\\n      case \\\"bottomRight\\\":\\n        isDiagonal = true;\\n        getPoint = (w, h) => [w, h];\\n        getOpposite = (w, h) => [0, 0];\\n        break;\\n      case \\\"bottomMiddle\\\":\\n        getPoint = (w, h) => [w \u002F 2, h];\\n        getOpposite = (w, h) => [w \u002F 2, 0];\\n        break;\\n      case \\\"bottomLeft\\\":\\n        isDiagonal = true;\\n        getPoint = (w, h) => [0, h];\\n        getOpposite = (w, h) => [w, 0];\\n        break;\\n      case \\\"middleLeft\\\":\\n        isHorizontal = true;\\n        getPoint = (w, h) => [0, h \u002F 2];\\n        getOpposite = (w, h) => [w, h \u002F 2];\\n        break;\\n    }\\n\\n    const point = getPoint(savedWidth, savedHeight);\\n    const oppositePoint = getOpposite(savedWidth, savedHeight);\\n    let transfOppositePoint = transf(...oppositePoint);\\n    const oppositeX = round(savedX + transfOppositePoint[0]);\\n    const oppositeY = round(savedY + transfOppositePoint[1]);\\n    let ratioX = 1;\\n    let ratioY = 1;\\n\\n    let [deltaX, deltaY] = this.screenToPageTranslation(\\n      event.movementX,\\n      event.movementY\\n    );\\n    [deltaX, deltaY] = invTransf(deltaX \u002F parentWidth, deltaY \u002F parentHeight);\\n\\n    if (isDiagonal) {\\n      const oldDiag = Math.hypot(savedWidth, savedHeight);\\n      ratioX = ratioY = Math.max(\\n        Math.min(\\n          Math.hypot(\\n            oppositePoint[0] - point[0] - deltaX,\\n            oppositePoint[1] - point[1] - deltaY\\n          ) \u002F oldDiag,\\n          \u002F\u002F Avoid the editor to be larger than the page.\\n          1 \u002F savedWidth,\\n          1 \u002F savedHeight\\n        ),\\n        \u002F\u002F Avoid the editor to be smaller than the minimum size.\\n        minWidth \u002F savedWidth,\\n        minHeight \u002F savedHeight\\n      );\\n    } else if (isHorizontal) {\\n      ratioX =\\n        Math.max(\\n          minWidth,\\n          Math.min(1, Math.abs(oppositePoint[0] - point[0] - deltaX))\\n        ) \u002F savedWidth;\\n    } else {\\n      ratioY =\\n        Math.max(\\n          minHeight,\\n          Math.min(1, Math.abs(oppositePoint[1] - point[1] - deltaY))\\n        ) \u002F savedHeight;\\n    }\\n\\n    const newWidth = round(savedWidth * ratioX);\\n    const newHeight = round(savedHeight * ratioY);\\n    transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\\n    const newX = oppositeX - transfOppositePoint[0];\\n    const newY = oppositeY - transfOppositePoint[1];\\n\\n    this.width = newWidth;\\n    this.height = newHeight;\\n    this.x = newX;\\n    this.y = newY;\\n\\n    this.setDims(parentWidth * newWidth, parentHeight * newHeight);\\n    this.fixAndSetPosition();\\n  }\\n\\n  altTextFinish() {\\n    this.#altText?.finish();\\n  }\\n\\n  \u002F**\\n   * Add a toolbar for this editor.\\n   * @returns {Promise\u003CEditorToolbar|null>}\\n   *\u002F\\n  async addEditToolbar() {\\n    if (this.#editToolbar || this.#isInEditMode) {\\n      return this.#editToolbar;\\n    }\\n    this.#editToolbar = new EditorToolbar(this);\\n    this.div.append(this.#editToolbar.render());\\n    if (this.#altText) {\\n      this.#editToolbar.addAltTextButton(await this.#altText.render());\\n    }\\n\\n    return this.#editToolbar;\\n  }\\n\\n  removeEditToolbar() {\\n    if (!this.#editToolbar) {\\n      return;\\n    }\\n    this.#editToolbar.remove();\\n    this.#editToolbar = null;\\n\\n    \u002F\u002F We destroy the alt text but we don't null it because we want to be able\\n    \u002F\u002F to restore it in case the user undoes the deletion.\\n    this.#altText?.destroy();\\n  }\\n\\n  getClientDimensions() {\\n    return this.div.getBoundingClientRect();\\n  }\\n\\n  async addAltTextButton() {\\n    if (this.#altText) {\\n      return;\\n    }\\n    AltText.initialize(AnnotationEditor._l10nPromise);\\n    this.#altText = new AltText(this);\\n    await this.addEditToolbar();\\n  }\\n\\n  get altTextData() {\\n    return this.#altText?.data;\\n  }\\n\\n  \u002F**\\n   * Set the alt text data.\\n   *\u002F\\n  set altTextData(data) {\\n    if (!this.#altText) {\\n      return;\\n    }\\n    this.#altText.data = data;\\n  }\\n\\n  hasAltText() {\\n    return !this.#altText?.isEmpty();\\n  }\\n\\n  \u002F**\\n   * Render this editor in a div.\\n   * @returns {HTMLDivElement | null}\\n   *\u002F\\n  render() {\\n    this.div = document.createElement(\\\"div\\\");\\n    this.div.setAttribute(\\\"data-editor-rotation\\\", (360 - this.rotation) % 360);\\n    this.div.className = this.name;\\n    this.div.setAttribute(\\\"id\\\", this.id);\\n    this.div.tabIndex = this.#disabled ? -1 : 0;\\n    if (!this._isVisible) {\\n      this.div.classList.add(\\\"hidden\\\");\\n    }\\n\\n    this.setInForeground();\\n\\n    this.div.addEventListener(\\\"focusin\\\", this.#boundFocusin);\\n    this.div.addEventListener(\\\"focusout\\\", this.#boundFocusout);\\n\\n    const [parentWidth, parentHeight] = this.parentDimensions;\\n    if (this.parentRotation % 180 !== 0) {\\n      this.div.style.maxWidth = `${((100 * parentHeight) \u002F parentWidth).toFixed(\\n        2\\n      )}%`;\\n      this.div.style.maxHeight = `${(\\n        (100 * parentWidth) \u002F\\n        parentHeight\\n      ).toFixed(2)}%`;\\n    }\\n\\n    const [tx, ty] = this.getInitialTranslation();\\n    this.translate(tx, ty);\\n\\n    bindEvents(this, this.div, [\\\"pointerdown\\\"]);\\n\\n    return this.div;\\n  }\\n\\n  \u002F**\\n   * Onpointerdown callback.\\n   * @param {PointerEvent} event\\n   *\u002F\\n  pointerdown(event) {\\n    const { isMac } = FeatureTest.platform;\\n    if (event.button !== 0 || (event.ctrlKey && isMac)) {\\n      \u002F\u002F Avoid to focus this editor because of a non-left click.\\n      event.preventDefault();\\n      return;\\n    }\\n\\n    this.#hasBeenClicked = true;\\n\\n    if (this._isDraggable) {\\n      this.#setUpDragSession(event);\\n      return;\\n    }\\n\\n    this.#selectOnPointerEvent(event);\\n  }\\n\\n  #selectOnPointerEvent(event) {\\n    const { isMac } = FeatureTest.platform;\\n    if (\\n      (event.ctrlKey && !isMac) ||\\n      event.shiftKey ||\\n      (event.metaKey && isMac)\\n    ) {\\n      this.parent.toggleSelected(this);\\n    } else {\\n      this.parent.setSelected(this);\\n    }\\n  }\\n\\n  #setUpDragSession(event) {\\n    const isSelected = this._uiManager.isSelected(this);\\n    this._uiManager.setUpDragSession();\\n\\n    let pointerMoveOptions, pointerMoveCallback;\\n    if (isSelected) {\\n      this.div.classList.add(\\\"moving\\\");\\n      pointerMoveOptions = { passive: true, capture: true };\\n      this.#prevDragX = event.clientX;\\n      this.#prevDragY = event.clientY;\\n      pointerMoveCallback = e => {\\n        const { clientX: x, clientY: y } = e;\\n        const [tx, ty] = this.screenToPageTranslation(\\n          x - this.#prevDragX,\\n          y - this.#prevDragY\\n        );\\n        this.#prevDragX = x;\\n        this.#prevDragY = y;\\n        this._uiManager.dragSelectedEditors(tx, ty);\\n      };\\n      window.addEventListener(\\n        \\\"pointermove\\\",\\n        pointerMoveCallback,\\n        pointerMoveOptions\\n      );\\n    }\\n\\n    const pointerUpCallback = () => {\\n      window.removeEventListener(\\\"pointerup\\\", pointerUpCallback);\\n      window.removeEventListener(\\\"blur\\\", pointerUpCallback);\\n      if (isSelected) {\\n        this.div.classList.remove(\\\"moving\\\");\\n        window.removeEventListener(\\n          \\\"pointermove\\\",\\n          pointerMoveCallback,\\n          pointerMoveOptions\\n        );\\n      }\\n\\n      this.#hasBeenClicked = false;\\n      if (!this._uiManager.endDragSession()) {\\n        this.#selectOnPointerEvent(event);\\n      }\\n    };\\n    window.addEventListener(\\\"pointerup\\\", pointerUpCallback);\\n    \u002F\u002F If the user is using alt+tab during the dragging session, the pointerup\\n    \u002F\u002F event could be not fired, but a blur event is fired so we can use it in\\n    \u002F\u002F order to interrupt the dragging session.\\n    window.addEventListener(\\\"blur\\\", pointerUpCallback);\\n  }\\n\\n  moveInDOM() {\\n    \u002F\u002F Moving the editor in the DOM can be expensive, so we wait a bit before.\\n    \u002F\u002F It's important to not block the UI (for example when changing the font\\n    \u002F\u002F size in a FreeText).\\n    if (this.#moveInDOMTimeout) {\\n      clearTimeout(this.#moveInDOMTimeout);\\n    }\\n    this.#moveInDOMTimeout = setTimeout(() => {\\n      this.#moveInDOMTimeout = null;\\n      this.parent?.moveEditorInDOM(this);\\n    }, 0);\\n  }\\n\\n  _setParentAndPosition(parent, x, y) {\\n    parent.changeParent(this);\\n    this.x = x;\\n    this.y = y;\\n    this.fixAndSetPosition();\\n  }\\n\\n  \u002F**\\n   * Convert the current rect into a page one.\\n   * @param {number} tx - x-translation in screen coordinates.\\n   * @param {number} ty - y-translation in screen coordinates.\\n   * @param {number} [rotation] - the rotation of the page.\\n   *\u002F\\n  getRect(tx, ty, rotation = this.rotation) {\\n    const scale = this.parentScale;\\n    const [pageWidth, pageHeight] = this.pageDimensions;\\n    const [pageX, pageY] = this.pageTranslation;\\n    const shiftX = tx \u002F scale;\\n    const shiftY = ty \u002F scale;\\n    const x = this.x * pageWidth;\\n    const y = this.y * pageHeight;\\n    const width = this.width * pageWidth;\\n    const height = this.height * pageHeight;\\n\\n    switch (rotation) {\\n      case 0:\\n        return [\\n          x + shiftX + pageX,\\n          pageHeight - y - shiftY - height + pageY,\\n          x + shiftX + width + pageX,\\n          pageHeight - y - shiftY + pageY,\\n        ];\\n      case 90:\\n        return [\\n          x + shiftY + pageX,\\n          pageHeight - y + shiftX + pageY,\\n          x + shiftY + height + pageX,\\n          pageHeight - y + shiftX + width + pageY,\\n        ];\\n      case 180:\\n        return [\\n          x - shiftX - width + pageX,\\n          pageHeight - y + shiftY + pageY,\\n          x - shiftX + pageX,\\n          pageHeight - y + shiftY + height + pageY,\\n        ];\\n      case 270:\\n        return [\\n          x - shiftY - height + pageX,\\n          pageHeight - y - shiftX - width + pageY,\\n          x - shiftY + pageX,\\n          pageHeight - y - shiftX + pageY,\\n        ];\\n      default:\\n        throw new Error(\\\"Invalid rotation\\\");\\n    }\\n  }\\n\\n  getRectInCurrentCoords(rect, pageHeight) {\\n    const [x1, y1, x2, y2] = rect;\\n\\n    const width = x2 - x1;\\n    const height = y2 - y1;\\n\\n    switch (this.rotation) {\\n      case 0:\\n        return [x1, pageHeight - y2, width, height];\\n      case 90:\\n        return [x1, pageHeight - y1, height, width];\\n      case 180:\\n        return [x2, pageHeight - y1, width, height];\\n      case 270:\\n        return [x2, pageHeight - y2, height, width];\\n      default:\\n        throw new Error(\\\"Invalid rotation\\\");\\n    }\\n  }\\n\\n  \u002F**\\n   * Executed once this editor has been rendered.\\n   *\u002F\\n  onceAdded() {}\\n\\n  \u002F**\\n   * Check if the editor contains something.\\n   * @returns {boolean}\\n   *\u002F\\n  isEmpty() {\\n    return false;\\n  }\\n\\n  \u002F**\\n   * Enable edit mode.\\n   *\u002F\\n  enableEditMode() {\\n    this.#isInEditMode = true;\\n  }\\n\\n  \u002F**\\n   * Disable edit mode.\\n   *\u002F\\n  disableEditMode() {\\n    this.#isInEditMode = false;\\n  }\\n\\n  \u002F**\\n   * Check if the editor is edited.\\n   * @returns {boolean}\\n   *\u002F\\n  isInEditMode() {\\n    return this.#isInEditMode;\\n  }\\n\\n  \u002F**\\n   * If it returns true, then this editor handles the keyboard\\n   * events itself.\\n   * @returns {boolean}\\n   *\u002F\\n  shouldGetKeyboardEvents() {\\n    return this.#isResizerEnabledForKeyboard;\\n  }\\n\\n  \u002F**\\n   * Check if this editor needs to be rebuilt or not.\\n   * @returns {boolean}\\n   *\u002F\\n  needsToBeRebuilt() {\\n    return this.div && !this.isAttachedToDOM;\\n  }\\n\\n  \u002F**\\n   * Rebuild the editor in case it has been removed on undo.\\n   *\\n   * To implement in subclasses.\\n   *\u002F\\n  rebuild() {\\n    this.div?.addEventListener(\\\"focusin\\\", this.#boundFocusin);\\n    this.div?.addEventListener(\\\"focusout\\\", this.#boundFocusout);\\n  }\\n\\n  \u002F**\\n   * Rotate the editor.\\n   * @param {number} angle\\n   *\u002F\\n  rotate(_angle) {}\\n\\n  \u002F**\\n   * Serialize the editor.\\n   * The result of the serialization will be used to construct a\\n   * new annotation to add to the pdf document.\\n   *\\n   * To implement in subclasses.\\n   * @param {boolean} [isForCopying]\\n   * @param {Object | null} [context]\\n   * @returns {Object | null}\\n   *\u002F\\n  serialize(isForCopying = false, context = null) {\\n    unreachable(\\\"An editor must be serializable\\\");\\n  }\\n\\n  \u002F**\\n   * Deserialize the editor.\\n   * The result of the deserialization is a new editor.\\n   *\\n   * @param {Object} data\\n   * @param {AnnotationEditorLayer} parent\\n   * @param {AnnotationEditorUIManager} uiManager\\n   * @returns {AnnotationEditor | null}\\n   *\u002F\\n  static deserialize(data, parent, uiManager) {\\n    const editor = new this.prototype.constructor({\\n      parent,\\n      id: parent.getNextId(),\\n      uiManager,\\n    });\\n    editor.rotation = data.rotation;\\n\\n    const [pageWidth, pageHeight] = editor.pageDimensions;\\n    const [x, y, width, height] = editor.getRectInCurrentCoords(\\n      data.rect,\\n      pageHeight\\n    );\\n    editor.x = x \u002F pageWidth;\\n    editor.y = y \u002F pageHeight;\\n    editor.width = width \u002F pageWidth;\\n    editor.height = height \u002F pageHeight;\\n\\n    return editor;\\n  }\\n\\n  \u002F**\\n   * Check if an existing annotation associated with this editor has been\\n   * modified.\\n   * @returns {boolean}\\n   *\u002F\\n  get hasBeenModified() {\\n    return (\\n      !!this.annotationElementId && (this.deleted || this.serialize() !== null)\\n    );\\n  }\\n\\n  \u002F**\\n   * Remove this editor.\\n   * It's used on ctrl+backspace action.\\n   *\u002F\\n  remove() {\\n    this.div.removeEventListener(\\\"focusin\\\", this.#boundFocusin);\\n    this.div.removeEventListener(\\\"focusout\\\", this.#boundFocusout);\\n\\n    if (!this.isEmpty()) {\\n      \u002F\u002F The editor is removed but it can be back at some point thanks to\\n      \u002F\u002F undo\u002Fredo so we must commit it before.\\n      this.commit();\\n    }\\n    if (this.parent) {\\n      this.parent.remove(this);\\n    } else {\\n      this._uiManager.removeEditor(this);\\n    }\\n\\n    if (this.#moveInDOMTimeout) {\\n      clearTimeout(this.#moveInDOMTimeout);\\n      this.#moveInDOMTimeout = null;\\n    }\\n    this.#stopResizing();\\n    this.removeEditToolbar();\\n    if (this.#telemetryTimeouts) {\\n      for (const timeout of this.#telemetryTimeouts.values()) {\\n        clearTimeout(timeout);\\n      }\\n      this.#telemetryTimeouts = null;\\n    }\\n    this.parent = null;\\n  }\\n\\n  \u002F**\\n   * @returns {boolean} true if this editor can be resized.\\n   *\u002F\\n  get isResizable() {\\n    return false;\\n  }\\n\\n  \u002F**\\n   * Add the resizers to this editor.\\n   *\u002F\\n  makeResizable() {\\n    if (this.isResizable) {\\n      this.#createResizers();\\n      this.#resizersDiv.classList.remove(\\\"hidden\\\");\\n      bindEvents(this, this.div, [\\\"keydown\\\"]);\\n    }\\n  }\\n\\n  get toolbarPosition() {\\n    return null;\\n  }\\n\\n  \u002F**\\n   * onkeydown callback.\\n   * @param {KeyboardEvent} event\\n   *\u002F\\n  keydown(event) {\\n    if (\\n      !this.isResizable ||\\n      event.target !== this.div ||\\n      event.key !== \\\"Enter\\\"\\n    ) {\\n      return;\\n    }\\n    this._uiManager.setSelected(this);\\n    this.#savedDimensions = {\\n      savedX: this.x,\\n      savedY: this.y,\\n      savedWidth: this.width,\\n      savedHeight: this.height,\\n    };\\n    const children = this.#resizersDiv.children;\\n    if (!this.#allResizerDivs) {\\n      this.#allResizerDivs = Array.from(children);\\n      const boundResizerKeydown = this.#resizerKeydown.bind(this);\\n      const boundResizerBlur = this.#resizerBlur.bind(this);\\n      for (const div of this.#allResizerDivs) {\\n        const name = div.getAttribute(\\\"data-resizer-name\\\");\\n        div.setAttribute(\\\"role\\\", \\\"spinbutton\\\");\\n        div.addEventListener(\\\"keydown\\\", boundResizerKeydown);\\n        div.addEventListener(\\\"blur\\\", boundResizerBlur);\\n        div.addEventListener(\\\"focus\\\", this.#resizerFocus.bind(this, name));\\n        AnnotationEditor._l10nPromise\\n          .get(`pdfjs-editor-resizer-label-${name}`)\\n          .then(msg => div.setAttribute(\\\"aria-label\\\", msg));\\n      }\\n    }\\n\\n    \u002F\u002F We want to have the resizers in the visual order, so we move the first\\n    \u002F\u002F (top-left) to the right place.\\n    const first = this.#allResizerDivs[0];\\n    let firstPosition = 0;\\n    for (const div of children) {\\n      if (div === first) {\\n        break;\\n      }\\n      firstPosition++;\\n    }\\n    const nextFirstPosition =\\n      (((360 - this.rotation + this.parentRotation) % 360) \u002F 90) *\\n      (this.#allResizerDivs.length \u002F 4);\\n\\n    if (nextFirstPosition !== firstPosition) {\\n      \u002F\u002F We need to reorder the resizers in the DOM in order to have the focus\\n      \u002F\u002F on the top-left one.\\n      if (nextFirstPosition \u003C firstPosition) {\\n        for (let i = 0; i \u003C firstPosition - nextFirstPosition; i++) {\\n          this.#resizersDiv.append(this.#resizersDiv.firstChild);\\n        }\\n      } else if (nextFirstPosition > firstPosition) {\\n        for (let i = 0; i \u003C nextFirstPosition - firstPosition; i++) {\\n          this.#resizersDiv.firstChild.before(this.#resizersDiv.lastChild);\\n        }\\n      }\\n\\n      let i = 0;\\n      for (const child of children) {\\n        const div = this.#allResizerDivs[i++];\\n        const name = div.getAttribute(\\\"data-resizer-name\\\");\\n        AnnotationEditor._l10nPromise\\n          .get(`pdfjs-editor-resizer-label-${name}`)\\n          .then(msg => child.setAttribute(\\\"aria-label\\\", msg));\\n      }\\n    }\\n\\n    this.#setResizerTabIndex(0);\\n    this.#isResizerEnabledForKeyboard = true;\\n    this.#resizersDiv.firstChild.focus({ focusVisible: true });\\n    event.preventDefault();\\n    event.stopImmediatePropagation();\\n  }\\n\\n  #resizerKeydown(event) {\\n    AnnotationEditor._resizerKeyboardManager.exec(this, event);\\n  }\\n\\n  #resizerBlur(event) {\\n    if (\\n      this.#isResizerEnabledForKeyboard &&\\n      event.relatedTarget?.parentNode !== this.#resizersDiv\\n    ) {\\n      this.#stopResizing();\\n    }\\n  }\\n\\n  #resizerFocus(name) {\\n    this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : \\\"\\\";\\n  }\\n\\n  #setResizerTabIndex(value) {\\n    if (!this.#allResizerDivs) {\\n      return;\\n    }\\n    for (const div of this.#allResizerDivs) {\\n      div.tabIndex = value;\\n    }\\n  }\\n\\n  _resizeWithKeyboard(x, y) {\\n    if (!this.#isResizerEnabledForKeyboard) {\\n      return;\\n    }\\n    this.#resizerPointermove(this.#focusedResizerName, {\\n      movementX: x,\\n      movementY: y,\\n    });\\n  }\\n\\n  #stopResizing() {\\n    this.#isResizerEnabledForKeyboard = false;\\n    this.#setResizerTabIndex(-1);\\n    if (this.#savedDimensions) {\\n      const { savedX, savedY, savedWidth, savedHeight } = this.#savedDimensions;\\n      this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight);\\n      this.#savedDimensions = null;\\n    }\\n  }\\n\\n  _stopResizingWithKeyboard() {\\n    this.#stopResizing();\\n    this.div.focus();\\n  }\\n\\n  \u002F**\\n   * Select this editor.\\n   *\u002F\\n  select() {\\n    this.makeResizable();\\n    this.div?.classList.add(\\\"selectedEditor\\\");\\n    if (!this.#editToolbar) {\\n      this.addEditToolbar().then(() => {\\n        if (this.div?.classList.contains(\\\"selectedEditor\\\")) {\\n          \u002F\u002F The editor can have been unselected while we were waiting for the\\n          \u002F\u002F edit toolbar to be created, hence we want to be sure that this\\n          \u002F\u002F editor is still selected.\\n          this.#editToolbar?.show();\\n        }\\n      });\\n      return;\\n    }\\n    this.#editToolbar?.show();\\n  }\\n\\n  \u002F**\\n   * Unselect this editor.\\n   *\u002F\\n  unselect() {\\n    this.#resizersDiv?.classList.add(\\\"hidden\\\");\\n    this.div?.classList.remove(\\\"selectedEditor\\\");\\n    if (this.div?.contains(document.activeElement)) {\\n      \u002F\u002F Don't use this.div.blur() because we don't know where the focus will\\n      \u002F\u002F go.\\n      this._uiManager.currentLayer.div.focus({\\n        preventScroll: true,\\n      });\\n    }\\n    this.#editToolbar?.hide();\\n  }\\n\\n  \u002F**\\n   * Update some parameters which have been changed through the UI.\\n   * @param {number} type\\n   * @param {*} value\\n   *\u002F\\n  updateParams(type, value) {}\\n\\n  \u002F**\\n   * When the user disables the editing mode some editors can change some of\\n   * their properties.\\n   *\u002F\\n  disableEditing() {}\\n\\n  \u002F**\\n   * When the user enables the editing mode some editors can change some of\\n   * their properties.\\n   *\u002F\\n  enableEditing() {}\\n\\n  \u002F**\\n   * The editor is about to be edited.\\n   *\u002F\\n  enterInEditMode() {}\\n\\n  \u002F**\\n   * @returns {HTMLElement | null} the element requiring an alt text.\\n   *\u002F\\n  getImageForAltText() {\\n    return null;\\n  }\\n\\n  \u002F**\\n   * Get the div which really contains the displayed content.\\n   * @returns {HTMLDivElement | undefined}\\n   *\u002F\\n  get contentDiv() {\\n    return this.div;\\n  }\\n\\n  \u002F**\\n   * If true then the editor is currently edited.\\n   * @type {boolean}\\n   *\u002F\\n  get isEditing() {\\n    return this.#isEditing;\\n  }\\n\\n  \u002F**\\n   * When set to true, it means that this editor is currently edited.\\n   * @param {boolean} value\\n   *\u002F\\n  set isEditing(value) {\\n    this.#isEditing = value;\\n    if (!this.parent) {\\n      return;\\n    }\\n    if (value) {\\n      this.parent.setSelected(this);\\n      this.parent.setActiveEditor(this);\\n    } else {\\n      this.parent.setActiveEditor(null);\\n    }\\n  }\\n\\n  \u002F**\\n   * Set the aspect ratio to use when resizing.\\n   * @param {number} width\\n   * @param {number} height\\n   *\u002F\\n  setAspectRatio(width, height) {\\n    this.#keepAspectRatio = true;\\n    const aspectRatio = width \u002F height;\\n    const { style } = this.div;\\n    style.aspectRatio = aspectRatio;\\n    style.height = \\\"auto\\\";\\n  }\\n\\n  static get MIN_SIZE() {\\n    return 16;\\n  }\\n\\n  static canCreateNewEmptyEditor() {\\n    return true;\\n  }\\n\\n  \u002F**\\n   * Get the data to report to the telemetry when the editor is added.\\n   * @returns {Object}\\n   *\u002F\\n  get telemetryInitialData() {\\n    return { action: \\\"added\\\" };\\n  }\\n\\n  \u002F**\\n   * The telemetry data to use when saving\u002Fprinting.\\n   * @returns {Object|null}\\n   *\u002F\\n  get telemetryFinalData() {\\n    return null;\\n  }\\n\\n  _reportTelemetry(data, mustWait = false) {\\n    if (mustWait) {\\n      this.#telemetryTimeouts ||= new Map();\\n      const { action } = data;\\n      let timeout = this.#telemetryTimeouts.get(action);\\n      if (timeout) {\\n        clearTimeout(timeout);\\n      }\\n      timeout = setTimeout(() => {\\n        this._reportTelemetry(data);\\n        this.#telemetryTimeouts.delete(action);\\n        if (this.#telemetryTimeouts.size === 0) {\\n          this.#telemetryTimeouts = null;\\n        }\\n      }, AnnotationEditor._telemetryTimeout);\\n      this.#telemetryTimeouts.set(action, timeout);\\n      return;\\n    }\\n    data.type ||= this.editorType;\\n    this._uiManager._eventBus.dispatch(\\\"reporttelemetry\\\", {\\n      source: this,\\n      details: {\\n        type: \\\"editing\\\",\\n        data,\\n      },\\n    });\\n  }\\n\\n  \u002F**\\n   * Show or hide this editor.\\n   * @param {boolean|undefined} visible\\n   *\u002F\\n  show(visible = this._isVisible) {\\n    this.div.classList.toggle(\\\"hidden\\\", !visible);\\n    this._isVisible = visible;\\n  }\\n\\n  enable() {\\n    if (this.div) {\\n      this.div.tabIndex = 0;\\n    }\\n    this.#disabled = false;\\n  }\\n\\n  disable() {\\n    if (this.div) {\\n      this.div.tabIndex = -1;\\n    }\\n    this.#disabled = true;\\n  }\\n\\n  \u002F**\\n   * Render an annotation in the annotation layer.\\n   * @param {Object} annotation\\n   * @returns {HTMLElement}\\n   *\u002F\\n  renderAnnotationElement(annotation) {\\n    let content = annotation.container.querySelector(\\\".annotationContent\\\");\\n    if (!content) {\\n      content = document.createElement(\\\"div\\\");\\n      content.classList.add(\\\"annotationContent\\\", this.editorType);\\n      annotation.container.prepend(content);\\n    } else if (content.nodeName === \\\"CANVAS\\\") {\\n      const canvas = content;\\n      content = document.createElement(\\\"div\\\");\\n      content.classList.add(\\\"annotationContent\\\", this.editorType);\\n      canvas.before(content);\\n    }\\n\\n    return content;\\n  }\\n\\n  resetAnnotationElement(annotation) {\\n    const { firstChild } = annotation.container;\\n    if (\\n      firstChild.nodeName === \\\"DIV\\\" &&\\n      firstChild.classList.contains(\\\"annotationContent\\\")\\n    ) {\\n      firstChild.remove();\\n    }\\n  }\\n}\\n\\n\u002F\u002F This class is used to fake an editor which has been deleted.\\nclass FakeEditor extends AnnotationEditor {\\n  constructor(params) {\\n    super(params);\\n    this.annotationElementId = params.annotationElementId;\\n    this.deleted = true;\\n  }\\n\\n  serialize() {\\n    return {\\n      id: this.annotationElementId,\\n      deleted: true,\\n      pageIndex: this.pageIndex,\\n    };\\n  }\\n}\\n\\nexport { AnnotationEditor };\\n\",\"\u002F* Copyright 2014 Opera Software ASA\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\\n *\\n * Based on https:\u002F\u002Fcode.google.com\u002Fp\u002Fsmhasher\u002Fwiki\u002FMurmurHash3.\\n * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.\\n *\u002F\\n\\nconst SEED = 0xc3d2e1f0;\\n\u002F\u002F Workaround for missing math precision in JS.\\nconst MASK_HIGH = 0xffff0000;\\nconst MASK_LOW = 0xffff;\\n\\nclass MurmurHash3_64 {\\n  constructor(seed) {\\n    this.h1 = seed ? seed & 0xffffffff : SEED;\\n    this.h2 = seed ? seed & 0xffffffff : SEED;\\n  }\\n\\n  update(input) {\\n    let data, length;\\n    if (typeof input === \\\"string\\\") {\\n      data = new Uint8Array(input.length * 2);\\n      length = 0;\\n      for (let i = 0, ii = input.length; i \u003C ii; i++) {\\n        const code = input.charCodeAt(i);\\n        if (code \u003C= 0xff) {\\n          data[length++] = code;\\n        } else {\\n          data[length++] = code >>> 8;\\n          data[length++] = code & 0xff;\\n        }\\n      }\\n    } else if (ArrayBuffer.isView(input)) {\\n      data = input.slice();\\n      length = data.byteLength;\\n    } else {\\n      throw new Error(\\\"Invalid data format, must be a string or TypedArray.\\\");\\n    }\\n\\n    const blockCounts = length >> 2;\\n    const tailLength = length - blockCounts * 4;\\n    \u002F\u002F We don't care about endianness here.\\n    const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\\n    let k1 = 0,\\n      k2 = 0;\\n    let h1 = this.h1,\\n      h2 = this.h2;\\n    const C1 = 0xcc9e2d51,\\n      C2 = 0x1b873593;\\n    const C1_LOW = C1 & MASK_LOW,\\n      C2_LOW = C2 & MASK_LOW;\\n\\n    for (let i = 0; i \u003C blockCounts; i++) {\\n      if (i & 1) {\\n        k1 = dataUint32[i];\\n        k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\\n        k1 = (k1 \u003C\u003C 15) | (k1 >>> 17);\\n        k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\\n        h1 ^= k1;\\n        h1 = (h1 \u003C\u003C 13) | (h1 >>> 19);\\n        h1 = h1 * 5 + 0xe6546b64;\\n      } else {\\n        k2 = dataUint32[i];\\n        k2 = ((k2 * C1) & MASK_HIGH) | ((k2 * C1_LOW) & MASK_LOW);\\n        k2 = (k2 \u003C\u003C 15) | (k2 >>> 17);\\n        k2 = ((k2 * C2) & MASK_HIGH) | ((k2 * C2_LOW) & MASK_LOW);\\n        h2 ^= k2;\\n        h2 = (h2 \u003C\u003C 13) | (h2 >>> 19);\\n        h2 = h2 * 5 + 0xe6546b64;\\n      }\\n    }\\n\\n    k1 = 0;\\n\\n    switch (tailLength) {\\n      case 3:\\n        k1 ^= data[blockCounts * 4 + 2] \u003C\u003C 16;\\n      \u002F* falls through *\u002F\\n      case 2:\\n        k1 ^= data[blockCounts * 4 + 1] \u003C\u003C 8;\\n      \u002F* falls through *\u002F\\n      case 1:\\n        k1 ^= data[blockCounts * 4];\\n        \u002F* falls through *\u002F\\n\\n        k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\\n        k1 = (k1 \u003C\u003C 15) | (k1 >>> 17);\\n        k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\\n        if (blockCounts & 1) {\\n          h1 ^= k1;\\n        } else {\\n          h2 ^= k1;\\n        }\\n    }\\n\\n    this.h1 = h1;\\n    this.h2 = h2;\\n  }\\n\\n  hexdigest() {\\n    let h1 = this.h1,\\n      h2 = this.h2;\\n\\n    h1 ^= h2 >>> 1;\\n    h1 = ((h1 * 0xed558ccd) & MASK_HIGH) | ((h1 * 0x8ccd) & MASK_LOW);\\n    h2 =\\n      ((h2 * 0xff51afd7) & MASK_HIGH) |\\n      (((((h2 \u003C\u003C 16) | (h1 >>> 16)) * 0xafd7ed55) & MASK_HIGH) >>> 16);\\n    h1 ^= h2 >>> 1;\\n    h1 = ((h1 * 0x1a85ec53) & MASK_HIGH) | ((h1 * 0xec53) & MASK_LOW);\\n    h2 =\\n      ((h2 * 0xc4ceb9fe) & MASK_HIGH) |\\n      (((((h2 \u003C\u003C 16) | (h1 >>> 16)) * 0xb9fe1a85) & MASK_HIGH) >>> 16);\\n    h1 ^= h2 >>> 1;\\n\\n    return (\\n      (h1 >>> 0).toString(16).padStart(8, \\\"0\\\") +\\n      (h2 >>> 0).toString(16).padStart(8, \\\"0\\\")\\n    );\\n  }\\n}\\n\\nexport { MurmurHash3_64 };\\n\",\"\u002F* Copyright 2020 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { objectFromMap, unreachable } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { AnnotationEditor } from \\\".\u002Feditor\u002Feditor.js\\\";\\nimport { MurmurHash3_64 } from \\\"..\u002Fshared\u002Fmurmurhash3.js\\\";\\n\\nconst SerializableEmpty = Object.freeze({\\n  map: null,\\n  hash: \\\"\\\",\\n  transfer: undefined,\\n});\\n\\n\u002F**\\n * Key\u002Fvalue storage for annotation data in forms.\\n *\u002F\\nclass AnnotationStorage {\\n  #modified = false;\\n\\n  #storage = new Map();\\n\\n  constructor() {\\n    \u002F\u002F Callbacks to signal when the modification state is set or reset.\\n    \u002F\u002F This is used by the viewer to only bind on `beforeunload` if forms\\n    \u002F\u002F are actually edited to prevent doing so unconditionally since that\\n    \u002F\u002F can have undesirable effects.\\n    this.onSetModified = null;\\n    this.onResetModified = null;\\n    this.onAnnotationEditor = null;\\n  }\\n\\n  \u002F**\\n   * Get the value for a given key if it exists, or return the default value.\\n   * @param {string} key\\n   * @param {Object} defaultValue\\n   * @returns {Object}\\n   *\u002F\\n  getValue(key, defaultValue) {\\n    const value = this.#storage.get(key);\\n    if (value === undefined) {\\n      return defaultValue;\\n    }\\n\\n    return Object.assign(defaultValue, value);\\n  }\\n\\n  \u002F**\\n   * Get the value for a given key.\\n   * @param {string} key\\n   * @returns {Object}\\n   *\u002F\\n  getRawValue(key) {\\n    return this.#storage.get(key);\\n  }\\n\\n  \u002F**\\n   * Remove a value from the storage.\\n   * @param {string} key\\n   *\u002F\\n  remove(key) {\\n    this.#storage.delete(key);\\n\\n    if (this.#storage.size === 0) {\\n      this.resetModified();\\n    }\\n\\n    if (typeof this.onAnnotationEditor === \\\"function\\\") {\\n      for (const value of this.#storage.values()) {\\n        if (value instanceof AnnotationEditor) {\\n          return;\\n        }\\n      }\\n      this.onAnnotationEditor(null);\\n    }\\n  }\\n\\n  \u002F**\\n   * Set the value for a given key\\n   * @param {string} key\\n   * @param {Object} value\\n   *\u002F\\n  setValue(key, value) {\\n    const obj = this.#storage.get(key);\\n    let modified = false;\\n    if (obj !== undefined) {\\n      for (const [entry, val] of Object.entries(value)) {\\n        if (obj[entry] !== val) {\\n          modified = true;\\n          obj[entry] = val;\\n        }\\n      }\\n    } else {\\n      modified = true;\\n      this.#storage.set(key, value);\\n    }\\n    if (modified) {\\n      this.#setModified();\\n    }\\n\\n    if (\\n      value instanceof AnnotationEditor &&\\n      typeof this.onAnnotationEditor === \\\"function\\\"\\n    ) {\\n      this.onAnnotationEditor(value.constructor._type);\\n    }\\n  }\\n\\n  \u002F**\\n   * Check if the storage contains the given key.\\n   * @param {string} key\\n   * @returns {boolean}\\n   *\u002F\\n  has(key) {\\n    return this.#storage.has(key);\\n  }\\n\\n  \u002F**\\n   * @returns {Object | null}\\n   *\u002F\\n  getAll() {\\n    return this.#storage.size > 0 ? objectFromMap(this.#storage) : null;\\n  }\\n\\n  \u002F**\\n   * @param {Object} obj\\n   *\u002F\\n  setAll(obj) {\\n    for (const [key, val] of Object.entries(obj)) {\\n      this.setValue(key, val);\\n    }\\n  }\\n\\n  get size() {\\n    return this.#storage.size;\\n  }\\n\\n  #setModified() {\\n    if (!this.#modified) {\\n      this.#modified = true;\\n      if (typeof this.onSetModified === \\\"function\\\") {\\n        this.onSetModified();\\n      }\\n    }\\n  }\\n\\n  resetModified() {\\n    if (this.#modified) {\\n      this.#modified = false;\\n      if (typeof this.onResetModified === \\\"function\\\") {\\n        this.onResetModified();\\n      }\\n    }\\n  }\\n\\n  \u002F**\\n   * @returns {PrintAnnotationStorage}\\n   *\u002F\\n  get print() {\\n    return new PrintAnnotationStorage(this);\\n  }\\n\\n  \u002F**\\n   * PLEASE NOTE: Only intended for usage within the API itself.\\n   * @ignore\\n   *\u002F\\n  get serializable() {\\n    if (this.#storage.size === 0) {\\n      return SerializableEmpty;\\n    }\\n    const map = new Map(),\\n      hash = new MurmurHash3_64(),\\n      transfer = [];\\n    const context = Object.create(null);\\n    let hasBitmap = false;\\n\\n    for (const [key, val] of this.#storage) {\\n      const serialized =\\n        val instanceof AnnotationEditor\\n          ? val.serialize(\u002F* isForCopying = *\u002F false, context)\\n          : val;\\n      if (serialized) {\\n        map.set(key, serialized);\\n\\n        hash.update(`${key}:${JSON.stringify(serialized)}`);\\n        hasBitmap ||= !!serialized.bitmap;\\n      }\\n    }\\n\\n    if (hasBitmap) {\\n      \u002F\u002F We must transfer the bitmap data separately, since it can be changed\\n      \u002F\u002F during serialization with SVG images.\\n      for (const value of map.values()) {\\n        if (value.bitmap) {\\n          transfer.push(value.bitmap);\\n        }\\n      }\\n    }\\n\\n    return map.size > 0\\n      ? { map, hash: hash.hexdigest(), transfer }\\n      : SerializableEmpty;\\n  }\\n\\n  get editorStats() {\\n    let stats = null;\\n    const typeToEditor = new Map();\\n    for (const value of this.#storage.values()) {\\n      if (!(value instanceof AnnotationEditor)) {\\n        continue;\\n      }\\n      const editorStats = value.telemetryFinalData;\\n      if (!editorStats) {\\n        continue;\\n      }\\n      const { type } = editorStats;\\n      if (!typeToEditor.has(type)) {\\n        typeToEditor.set(type, Object.getPrototypeOf(value).constructor);\\n      }\\n      stats ||= Object.create(null);\\n      const map = (stats[type] ||= new Map());\\n      for (const [key, val] of Object.entries(editorStats)) {\\n        if (key === \\\"type\\\") {\\n          continue;\\n        }\\n        let counters = map.get(key);\\n        if (!counters) {\\n          counters = new Map();\\n          map.set(key, counters);\\n        }\\n        const count = counters.get(val) ?? 0;\\n        counters.set(val, count + 1);\\n      }\\n    }\\n    for (const [type, editor] of typeToEditor) {\\n      stats[type] = editor.computeTelemetryFinalData(stats[type]);\\n    }\\n    return stats;\\n  }\\n}\\n\\n\u002F**\\n * A special `AnnotationStorage` for use during printing, where the serializable\\n * data is *frozen* upon initialization, to prevent scripting from modifying its\\n * contents. (Necessary since printing is triggered synchronously in browsers.)\\n *\u002F\\nclass PrintAnnotationStorage extends AnnotationStorage {\\n  #serializable;\\n\\n  constructor(parent) {\\n    super();\\n    const { map, hash, transfer } = parent.serializable;\\n    \u002F\u002F Create a *copy* of the data, since Objects are passed by reference in JS.\\n    const clone = structuredClone(map, transfer ? { transfer } : null);\\n\\n    this.#serializable = { map: clone, hash, transfer };\\n  }\\n\\n  \u002F**\\n   * @returns {PrintAnnotationStorage}\\n   *\u002F\\n  \u002F\u002F eslint-disable-next-line getter-return\\n  get print() {\\n    unreachable(\\\"Should not call PrintAnnotationStorage.print\\\");\\n  }\\n\\n  \u002F**\\n   * PLEASE NOTE: Only intended for usage within the API itself.\\n   * @ignore\\n   *\u002F\\n  get serializable() {\\n    return this.#serializable;\\n  }\\n}\\n\\nexport { AnnotationStorage, PrintAnnotationStorage, SerializableEmpty };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  assert,\\n  bytesToString,\\n  FontRenderOps,\\n  isNodeJS,\\n  shadow,\\n  string32,\\n  unreachable,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nclass FontLoader {\\n  #systemFonts = new Set();\\n\\n  constructor({\\n    ownerDocument = globalThis.document,\\n    styleElement = null, \u002F\u002F For testing only.\\n  }) {\\n    this._document = ownerDocument;\\n\\n    this.nativeFontFaces = new Set();\\n    this.styleElement =\\n      typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")\\n        ? styleElement\\n        : null;\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      this.loadingRequests = [];\\n      this.loadTestFontId = 0;\\n    }\\n  }\\n\\n  addNativeFontFace(nativeFontFace) {\\n    this.nativeFontFaces.add(nativeFontFace);\\n    this._document.fonts.add(nativeFontFace);\\n  }\\n\\n  removeNativeFontFace(nativeFontFace) {\\n    this.nativeFontFaces.delete(nativeFontFace);\\n    this._document.fonts.delete(nativeFontFace);\\n  }\\n\\n  insertRule(rule) {\\n    if (!this.styleElement) {\\n      this.styleElement = this._document.createElement(\\\"style\\\");\\n      this._document.documentElement\\n        .getElementsByTagName(\\\"head\\\")[0]\\n        .append(this.styleElement);\\n    }\\n    const styleSheet = this.styleElement.sheet;\\n    styleSheet.insertRule(rule, styleSheet.cssRules.length);\\n  }\\n\\n  clear() {\\n    for (const nativeFontFace of this.nativeFontFaces) {\\n      this._document.fonts.delete(nativeFontFace);\\n    }\\n    this.nativeFontFaces.clear();\\n    this.#systemFonts.clear();\\n\\n    if (this.styleElement) {\\n      \u002F\u002F Note: ChildNode.remove doesn't throw if the parentNode is undefined.\\n      this.styleElement.remove();\\n      this.styleElement = null;\\n    }\\n  }\\n\\n  async loadSystemFont({ systemFontInfo: info, _inspectFont }) {\\n    if (!info || this.#systemFonts.has(info.loadedName)) {\\n      return;\\n    }\\n    assert(\\n      !this.disableFontFace,\\n      \\\"loadSystemFont shouldn't be called when `disableFontFace` is set.\\\"\\n    );\\n\\n    if (this.isFontLoadingAPISupported) {\\n      const { loadedName, src, style } = info;\\n      const fontFace = new FontFace(loadedName, src, style);\\n      this.addNativeFontFace(fontFace);\\n      try {\\n        await fontFace.load();\\n        this.#systemFonts.add(loadedName);\\n        _inspectFont?.(info);\\n      } catch {\\n        warn(\\n          `Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`\\n        );\\n\\n        this.removeNativeFontFace(fontFace);\\n      }\\n      return;\\n    }\\n\\n    unreachable(\\n      \\\"Not implemented: loadSystemFont without the Font Loading API.\\\"\\n    );\\n  }\\n\\n  async bind(font) {\\n    \u002F\u002F Add the font to the DOM only once; skip if the font is already loaded.\\n    if (font.attached || (font.missingFile && !font.systemFontInfo)) {\\n      return;\\n    }\\n    font.attached = true;\\n\\n    if (font.systemFontInfo) {\\n      await this.loadSystemFont(font);\\n      return;\\n    }\\n\\n    if (this.isFontLoadingAPISupported) {\\n      const nativeFontFace = font.createNativeFontFace();\\n      if (nativeFontFace) {\\n        this.addNativeFontFace(nativeFontFace);\\n        try {\\n          await nativeFontFace.loaded;\\n        } catch (ex) {\\n          warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\\n\\n          \u002F\u002F When font loading failed, fall back to the built-in font renderer.\\n          font.disableFontFace = true;\\n          throw ex;\\n        }\\n      }\\n      return; \u002F\u002F The font was, asynchronously, loaded.\\n    }\\n\\n    \u002F\u002F !this.isFontLoadingAPISupported\\n    const rule = font.createFontFaceRule();\\n    if (rule) {\\n      this.insertRule(rule);\\n\\n      if (this.isSyncFontLoadingSupported) {\\n        return; \u002F\u002F The font was, synchronously, loaded.\\n      }\\n      if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n        throw new Error(\\\"Not implemented: async font loading\\\");\\n      }\\n      await new Promise(resolve => {\\n        const request = this._queueLoadingCallback(resolve);\\n        this._prepareFontLoadEvent(font, request);\\n      });\\n      \u002F\u002F The font was, asynchronously, loaded.\\n    }\\n  }\\n\\n  get isFontLoadingAPISupported() {\\n    const hasFonts = !!this._document?.fonts;\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      return shadow(\\n        this,\\n        \\\"isFontLoadingAPISupported\\\",\\n        hasFonts && !this.styleElement\\n      );\\n    }\\n    return shadow(this, \\\"isFontLoadingAPISupported\\\", hasFonts);\\n  }\\n\\n  get isSyncFontLoadingSupported() {\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      return shadow(this, \\\"isSyncFontLoadingSupported\\\", true);\\n    }\\n\\n    let supported = false;\\n    if (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"CHROME\\\")) {\\n      if (isNodeJS) {\\n        \u002F\u002F Node.js - we can pretend that sync font loading is supported.\\n        supported = true;\\n      } else if (\\n        typeof navigator !== \\\"undefined\\\" &&\\n        typeof navigator?.userAgent === \\\"string\\\" &&\\n        \u002F\u002F User agent string sniffing is bad, but there is no reliable way to\\n        \u002F\u002F tell if the font is fully loaded and ready to be used with canvas.\\n        \u002FMozilla\\\\\u002F5.0.*?rv:\\\\d+.*? Gecko\u002F.test(navigator.userAgent)\\n      ) {\\n        \u002F\u002F Firefox, from version 14, supports synchronous font loading.\\n        supported = true;\\n      }\\n    }\\n    return shadow(this, \\\"isSyncFontLoadingSupported\\\", supported);\\n  }\\n\\n  _queueLoadingCallback(callback) {\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      throw new Error(\\\"Not implemented: _queueLoadingCallback\\\");\\n    }\\n\\n    function completeRequest() {\\n      assert(!request.done, \\\"completeRequest() cannot be called twice.\\\");\\n      request.done = true;\\n\\n      \u002F\u002F Sending all completed requests in order of how they were queued.\\n      while (loadingRequests.length > 0 && loadingRequests[0].done) {\\n        const otherRequest = loadingRequests.shift();\\n        setTimeout(otherRequest.callback, 0);\\n      }\\n    }\\n\\n    const { loadingRequests } = this;\\n    const request = {\\n      done: false,\\n      complete: completeRequest,\\n      callback,\\n    };\\n    loadingRequests.push(request);\\n    return request;\\n  }\\n\\n  get _loadTestFont() {\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      throw new Error(\\\"Not implemented: _loadTestFont\\\");\\n    }\\n\\n    \u002F\u002F This is a CFF font with 1 glyph for '.' that fills its entire width\\n    \u002F\u002F and height.\\n    const testFont = atob(\\n      \\\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\\\" +\\n        \\\"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk\u002FxVFDQAA\\\" +\\n        \\\"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\\\" +\\n        \\\"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T\u002FhgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\\\" +\\n        \\\"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\\\" +\\n        \\\"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\\\" +\\n        \\\"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\\\" +\\n        \\\"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\\\" +\\n        \\\"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\\\" +\\n        \\\"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\\\" +\\n        \\\"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\\\" +\\n        \\\"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7\u002F\u002FwAA\\\" +\\n        \\\"AC7\u002F\u002F\u002F\u002FTAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\" +\\n        \\\"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\" +\\n        \\\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\" +\\n        \\\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\" +\\n        \\\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\" +\\n        \\\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD\u002FgwAyAAAAAQAAAAAAAAAAAAAAAAAA\\\" +\\n        \\\"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA\u002FgXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\\\" +\\n        \\\"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE\u002Ft3\\\" +\\n        \\\"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\\\" +\\n        \\\"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\\\"\\n    );\\n    return shadow(this, \\\"_loadTestFont\\\", testFont);\\n  }\\n\\n  _prepareFontLoadEvent(font, request) {\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      throw new Error(\\\"Not implemented: _prepareFontLoadEvent\\\");\\n    }\\n\\n    \u002F** Hack begin *\u002F\\n    \u002F\u002F There's currently no event when a font has finished downloading so the\\n    \u002F\u002F following code is a dirty hack to 'guess' when a font is ready.\\n    \u002F\u002F It's assumed fonts are loaded in order, so add a known test font after\\n    \u002F\u002F the desired fonts and then test for the loading of that test font.\\n\\n    function int32(data, offset) {\\n      return (\\n        (data.charCodeAt(offset) \u003C\u003C 24) |\\n        (data.charCodeAt(offset + 1) \u003C\u003C 16) |\\n        (data.charCodeAt(offset + 2) \u003C\u003C 8) |\\n        (data.charCodeAt(offset + 3) & 0xff)\\n      );\\n    }\\n    function spliceString(s, offset, remove, insert) {\\n      const chunk1 = s.substring(0, offset);\\n      const chunk2 = s.substring(offset + remove);\\n      return chunk1 + insert + chunk2;\\n    }\\n    let i, ii;\\n\\n    \u002F\u002F The temporary canvas is used to determine if fonts are loaded.\\n    const canvas = this._document.createElement(\\\"canvas\\\");\\n    canvas.width = 1;\\n    canvas.height = 1;\\n    const ctx = canvas.getContext(\\\"2d\\\");\\n\\n    let called = 0;\\n    function isFontReady(name, callback) {\\n      \u002F\u002F With setTimeout clamping this gives the font ~100ms to load.\\n      if (++called > 30) {\\n        warn(\\\"Load test font never loaded.\\\");\\n        callback();\\n        return;\\n      }\\n      ctx.font = \\\"30px \\\" + name;\\n      ctx.fillText(\\\".\\\", 0, 20);\\n      const imageData = ctx.getImageData(0, 0, 1, 1);\\n      if (imageData.data[3] > 0) {\\n        callback();\\n        return;\\n      }\\n      setTimeout(isFontReady.bind(null, name, callback));\\n    }\\n\\n    const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\\n    \u002F\u002F Chromium seems to cache fonts based on a hash of the actual font data,\\n    \u002F\u002F so the font must be modified for each load test else it will appear to\\n    \u002F\u002F be loaded already.\\n    \u002F\u002F TODO: This could maybe be made faster by avoiding the btoa of the full\\n    \u002F\u002F font by splitting it in chunks before hand and padding the font id.\\n    let data = this._loadTestFont;\\n    const COMMENT_OFFSET = 976; \u002F\u002F has to be on 4 byte boundary (for checksum)\\n    data = spliceString(\\n      data,\\n      COMMENT_OFFSET,\\n      loadTestFontId.length,\\n      loadTestFontId\\n    );\\n    \u002F\u002F CFF checksum is important for IE, adjusting it\\n    const CFF_CHECKSUM_OFFSET = 16;\\n    const XXXX_VALUE = 0x58585858; \u002F\u002F the \\\"comment\\\" filled with 'X'\\n    let checksum = int32(data, CFF_CHECKSUM_OFFSET);\\n    for (i = 0, ii = loadTestFontId.length - 3; i \u003C ii; i += 4) {\\n      checksum = (checksum - XXXX_VALUE + int32(loadTestFontId, i)) | 0;\\n    }\\n    if (i \u003C loadTestFontId.length) {\\n      \u002F\u002F align to 4 bytes boundary\\n      checksum = (checksum - XXXX_VALUE + int32(loadTestFontId + \\\"XXX\\\", i)) | 0;\\n    }\\n    data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\\n\\n    const url = `url(data:font\u002Fopentype;base64,${btoa(data)});`;\\n    const rule = `@font-face {font-family:\\\"${loadTestFontId}\\\";src:${url}}`;\\n    this.insertRule(rule);\\n\\n    const div = this._document.createElement(\\\"div\\\");\\n    div.style.visibility = \\\"hidden\\\";\\n    div.style.width = div.style.height = \\\"10px\\\";\\n    div.style.position = \\\"absolute\\\";\\n    div.style.top = div.style.left = \\\"0px\\\";\\n\\n    for (const name of [font.loadedName, loadTestFontId]) {\\n      const span = this._document.createElement(\\\"span\\\");\\n      span.textContent = \\\"Hi\\\";\\n      span.style.fontFamily = name;\\n      div.append(span);\\n    }\\n    this._document.body.append(div);\\n\\n    isFontReady(loadTestFontId, () => {\\n      div.remove();\\n      request.complete();\\n    });\\n    \u002F** Hack end *\u002F\\n  }\\n}\\n\\nclass FontFaceObject {\\n  constructor(translatedData, { disableFontFace = false, inspectFont = null }) {\\n    this.compiledGlyphs = Object.create(null);\\n    \u002F\u002F importing translated data\\n    for (const i in translatedData) {\\n      this[i] = translatedData[i];\\n    }\\n    this.disableFontFace = disableFontFace === true;\\n    this._inspectFont = inspectFont;\\n  }\\n\\n  createNativeFontFace() {\\n    if (!this.data || this.disableFontFace) {\\n      return null;\\n    }\\n    let nativeFontFace;\\n    if (!this.cssFontInfo) {\\n      nativeFontFace = new FontFace(this.loadedName, this.data, {});\\n    } else {\\n      const css = {\\n        weight: this.cssFontInfo.fontWeight,\\n      };\\n      if (this.cssFontInfo.italicAngle) {\\n        css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\\n      }\\n      nativeFontFace = new FontFace(\\n        this.cssFontInfo.fontFamily,\\n        this.data,\\n        css\\n      );\\n    }\\n\\n    this._inspectFont?.(this);\\n    return nativeFontFace;\\n  }\\n\\n  createFontFaceRule() {\\n    if (!this.data || this.disableFontFace) {\\n      return null;\\n    }\\n    const data = bytesToString(this.data);\\n    \u002F\u002F Add the @font-face rule to the document.\\n    const url = `url(data:${this.mimetype};base64,${btoa(data)});`;\\n    let rule;\\n    if (!this.cssFontInfo) {\\n      rule = `@font-face {font-family:\\\"${this.loadedName}\\\";src:${url}}`;\\n    } else {\\n      let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\\n      if (this.cssFontInfo.italicAngle) {\\n        css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\\n      }\\n      rule = `@font-face {font-family:\\\"${this.cssFontInfo.fontFamily}\\\";${css}src:${url}}`;\\n    }\\n\\n    this._inspectFont?.(this, url);\\n    return rule;\\n  }\\n\\n  getPathGenerator(objs, character) {\\n    if (this.compiledGlyphs[character] !== undefined) {\\n      return this.compiledGlyphs[character];\\n    }\\n\\n    let cmds;\\n    try {\\n      cmds = objs.get(this.loadedName + \\\"_path_\\\" + character);\\n    } catch (ex) {\\n      warn(`getPathGenerator - ignoring character: \\\"${ex}\\\".`);\\n    }\\n\\n    if (!Array.isArray(cmds) || cmds.length === 0) {\\n      return (this.compiledGlyphs[character] = function (c, size) {\\n        \u002F\u002F No-op function, to allow rendering to continue.\\n      });\\n    }\\n\\n    const commands = [];\\n    for (let i = 0, ii = cmds.length; i \u003C ii; ) {\\n      switch (cmds[i++]) {\\n        case FontRenderOps.BEZIER_CURVE_TO:\\n          {\\n            const [a, b, c, d, e, f] = cmds.slice(i, i + 6);\\n            commands.push(ctx => ctx.bezierCurveTo(a, b, c, d, e, f));\\n            i += 6;\\n          }\\n          break;\\n        case FontRenderOps.MOVE_TO:\\n          {\\n            const [a, b] = cmds.slice(i, i + 2);\\n            commands.push(ctx => ctx.moveTo(a, b));\\n            i += 2;\\n          }\\n          break;\\n        case FontRenderOps.LINE_TO:\\n          {\\n            const [a, b] = cmds.slice(i, i + 2);\\n            commands.push(ctx => ctx.lineTo(a, b));\\n            i += 2;\\n          }\\n          break;\\n        case FontRenderOps.QUADRATIC_CURVE_TO:\\n          {\\n            const [a, b, c, d] = cmds.slice(i, i + 4);\\n            commands.push(ctx => ctx.quadraticCurveTo(a, b, c, d));\\n            i += 4;\\n          }\\n          break;\\n        case FontRenderOps.RESTORE:\\n          commands.push(ctx => ctx.restore());\\n          break;\\n        case FontRenderOps.SAVE:\\n          commands.push(ctx => ctx.save());\\n          break;\\n        case FontRenderOps.SCALE:\\n          \u002F\u002F The scale command must be at the third position, after save and\\n          \u002F\u002F transform (for the font matrix) commands (see also\\n          \u002F\u002F font_renderer.js).\\n          \u002F\u002F The goal is to just scale the canvas and then run the commands loop\\n          \u002F\u002F without the need to pass the size parameter to each command.\\n          assert(\\n            commands.length === 2,\\n            \\\"Scale command is only valid at the third position.\\\"\\n          );\\n          break;\\n        case FontRenderOps.TRANSFORM:\\n          {\\n            const [a, b, c, d, e, f] = cmds.slice(i, i + 6);\\n            commands.push(ctx => ctx.transform(a, b, c, d, e, f));\\n            i += 6;\\n          }\\n          break;\\n        case FontRenderOps.TRANSLATE:\\n          {\\n            const [a, b] = cmds.slice(i, i + 2);\\n            commands.push(ctx => ctx.translate(a, b));\\n            i += 2;\\n          }\\n          break;\\n      }\\n    }\\n\\n    return (this.compiledGlyphs[character] = function glyphDrawer(ctx, size) {\\n      commands[0](ctx);\\n      commands[1](ctx);\\n      ctx.scale(size, -size);\\n      for (let i = 2, ii = commands.length; i \u003C ii; i++) {\\n        commands[i](ctx);\\n      }\\n    });\\n  }\\n}\\n\\nexport { FontFaceObject, FontLoader };\\n\",\"\u002F* Copyright 2020 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  BaseCanvasFactory,\\n  BaseCMapReaderFactory,\\n  BaseFilterFactory,\\n  BaseStandardFontDataFactory,\\n} from \\\".\u002Fbase_factory.js\\\";\\nimport { isNodeJS, warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nif (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n  throw new Error(\\n    'Module \\\".\u002Fnode_utils.js\\\" shall not be used with MOZCENTRAL builds.'\\n  );\\n}\\n\\nif (isNodeJS) {\\n  \u002F\u002F eslint-disable-next-line no-var\\n  var packageCapability = Promise.withResolvers();\\n  \u002F\u002F eslint-disable-next-line no-var\\n  var packageMap = null;\\n\\n  const loadPackages = async () => {\\n    \u002F\u002F Native packages.\\n    const fs = await __non_webpack_import__(\\\"fs\\\"),\\n      http = await __non_webpack_import__(\\\"http\\\"),\\n      https = await __non_webpack_import__(\\\"https\\\"),\\n      url = await __non_webpack_import__(\\\"url\\\");\\n\\n    \u002F\u002F Optional, third-party, packages.\\n    let canvas, path2d;\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && !PDFJSDev.test(\\\"SKIP_BABEL\\\")) {\\n      try {\\n        canvas = await __non_webpack_import__(\\\"canvas\\\");\\n      } catch {}\\n      try {\\n        path2d = await __non_webpack_import__(\\\"path2d\\\");\\n      } catch {}\\n    }\\n\\n    return new Map(Object.entries({ fs, http, https, url, canvas, path2d }));\\n  };\\n\\n  loadPackages().then(\\n    map => {\\n      packageMap = map;\\n      packageCapability.resolve();\\n\\n      if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"SKIP_BABEL\\\")) {\\n        return;\\n      }\\n      if (!globalThis.DOMMatrix) {\\n        const DOMMatrix = map.get(\\\"canvas\\\")?.DOMMatrix;\\n\\n        if (DOMMatrix) {\\n          globalThis.DOMMatrix = DOMMatrix;\\n        } else {\\n          warn(\\\"Cannot polyfill `DOMMatrix`, rendering may be broken.\\\");\\n        }\\n      }\\n      if (!globalThis.Path2D) {\\n        const CanvasRenderingContext2D =\\n          map.get(\\\"canvas\\\")?.CanvasRenderingContext2D;\\n        const applyPath2DToCanvasRenderingContext =\\n          map.get(\\\"path2d\\\")?.applyPath2DToCanvasRenderingContext;\\n        const Path2D = map.get(\\\"path2d\\\")?.Path2D;\\n\\n        if (\\n          CanvasRenderingContext2D &&\\n          applyPath2DToCanvasRenderingContext &&\\n          Path2D\\n        ) {\\n          applyPath2DToCanvasRenderingContext(CanvasRenderingContext2D);\\n          globalThis.Path2D = Path2D;\\n        } else {\\n          warn(\\\"Cannot polyfill `Path2D`, rendering may be broken.\\\");\\n        }\\n      }\\n    },\\n    reason => {\\n      warn(`loadPackages: ${reason}`);\\n\\n      packageMap = new Map();\\n      packageCapability.resolve();\\n    }\\n  );\\n}\\n\\nclass NodePackages {\\n  static get promise() {\\n    return packageCapability.promise;\\n  }\\n\\n  static get(name) {\\n    return packageMap?.get(name);\\n  }\\n}\\n\\nconst fetchData = function (url) {\\n  const fs = NodePackages.get(\\\"fs\\\");\\n  return fs.promises.readFile(url).then(data => new Uint8Array(data));\\n};\\n\\nclass NodeFilterFactory extends BaseFilterFactory {}\\n\\nclass NodeCanvasFactory extends BaseCanvasFactory {\\n  \u002F**\\n   * @ignore\\n   *\u002F\\n  _createCanvas(width, height) {\\n    const canvas = NodePackages.get(\\\"canvas\\\");\\n    return canvas.createCanvas(width, height);\\n  }\\n}\\n\\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\\n  \u002F**\\n   * @ignore\\n   *\u002F\\n  _fetchData(url, compressionType) {\\n    return fetchData(url).then(data => ({ cMapData: data, compressionType }));\\n  }\\n}\\n\\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\\n  \u002F**\\n   * @ignore\\n   *\u002F\\n  _fetchData(url) {\\n    return fetchData(url);\\n  }\\n}\\n\\nexport {\\n  NodeCanvasFactory,\\n  NodeCMapReaderFactory,\\n  NodeFilterFactory,\\n  NodePackages,\\n  NodeStandardFontDataFactory,\\n};\\n\",\"\u002F* Copyright 2014 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { FormatError, info, unreachable, Util } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { getCurrentTransform } from \\\".\u002Fdisplay_utils.js\\\";\\n\\nconst PathType = {\\n  FILL: \\\"Fill\\\",\\n  STROKE: \\\"Stroke\\\",\\n  SHADING: \\\"Shading\\\",\\n};\\n\\nfunction applyBoundingBox(ctx, bbox) {\\n  if (!bbox) {\\n    return;\\n  }\\n  const width = bbox[2] - bbox[0];\\n  const height = bbox[3] - bbox[1];\\n  const region = new Path2D();\\n  region.rect(bbox[0], bbox[1], width, height);\\n  ctx.clip(region);\\n}\\n\\nclass BaseShadingPattern {\\n  constructor() {\\n    if (this.constructor === BaseShadingPattern) {\\n      unreachable(\\\"Cannot initialize BaseShadingPattern.\\\");\\n    }\\n  }\\n\\n  getPattern() {\\n    unreachable(\\\"Abstract method `getPattern` called.\\\");\\n  }\\n}\\n\\nclass RadialAxialShadingPattern extends BaseShadingPattern {\\n  constructor(IR) {\\n    super();\\n    this._type = IR[1];\\n    this._bbox = IR[2];\\n    this._colorStops = IR[3];\\n    this._p0 = IR[4];\\n    this._p1 = IR[5];\\n    this._r0 = IR[6];\\n    this._r1 = IR[7];\\n    this.matrix = null;\\n  }\\n\\n  _createGradient(ctx) {\\n    let grad;\\n    if (this._type === \\\"axial\\\") {\\n      grad = ctx.createLinearGradient(\\n        this._p0[0],\\n        this._p0[1],\\n        this._p1[0],\\n        this._p1[1]\\n      );\\n    } else if (this._type === \\\"radial\\\") {\\n      grad = ctx.createRadialGradient(\\n        this._p0[0],\\n        this._p0[1],\\n        this._r0,\\n        this._p1[0],\\n        this._p1[1],\\n        this._r1\\n      );\\n    }\\n\\n    for (const colorStop of this._colorStops) {\\n      grad.addColorStop(colorStop[0], colorStop[1]);\\n    }\\n    return grad;\\n  }\\n\\n  getPattern(ctx, owner, inverse, pathType) {\\n    let pattern;\\n    if (pathType === PathType.STROKE || pathType === PathType.FILL) {\\n      const ownerBBox = owner.current.getClippedPathBoundingBox(\\n        pathType,\\n        getCurrentTransform(ctx)\\n      ) || [0, 0, 0, 0];\\n      \u002F\u002F Create a canvas that is only as big as the current path. This doesn't\\n      \u002F\u002F allow us to cache the pattern, but it generally creates much smaller\\n      \u002F\u002F canvases and saves memory use. See bug 1722807 for an example.\\n      const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\\n      const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\\n\\n      const tmpCanvas = owner.cachedCanvases.getCanvas(\\n        \\\"pattern\\\",\\n        width,\\n        height,\\n        true\\n      );\\n\\n      const tmpCtx = tmpCanvas.context;\\n      tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\\n      tmpCtx.beginPath();\\n      tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\\n      \u002F\u002F Non shading fill patterns are positioned relative to the base transform\\n      \u002F\u002F (usually the page's initial transform), but we may have created a\\n      \u002F\u002F smaller canvas based on the path, so we must account for the shift.\\n      tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\\n      inverse = Util.transform(inverse, [\\n        1,\\n        0,\\n        0,\\n        1,\\n        ownerBBox[0],\\n        ownerBBox[1],\\n      ]);\\n\\n      tmpCtx.transform(...owner.baseTransform);\\n      if (this.matrix) {\\n        tmpCtx.transform(...this.matrix);\\n      }\\n      applyBoundingBox(tmpCtx, this._bbox);\\n\\n      tmpCtx.fillStyle = this._createGradient(tmpCtx);\\n      tmpCtx.fill();\\n\\n      pattern = ctx.createPattern(tmpCanvas.canvas, \\\"no-repeat\\\");\\n      const domMatrix = new DOMMatrix(inverse);\\n      pattern.setTransform(domMatrix);\\n    } else {\\n      \u002F\u002F Shading fills are applied relative to the current matrix which is also\\n      \u002F\u002F how canvas gradients work, so there's no need to do anything special\\n      \u002F\u002F here.\\n      applyBoundingBox(ctx, this._bbox);\\n      pattern = this._createGradient(ctx);\\n    }\\n    return pattern;\\n  }\\n}\\n\\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\\n  \u002F\u002F Very basic Gouraud-shaded triangle rasterization algorithm.\\n  const coords = context.coords,\\n    colors = context.colors;\\n  const bytes = data.data,\\n    rowSize = data.width * 4;\\n  let tmp;\\n  if (coords[p1 + 1] > coords[p2 + 1]) {\\n    tmp = p1;\\n    p1 = p2;\\n    p2 = tmp;\\n    tmp = c1;\\n    c1 = c2;\\n    c2 = tmp;\\n  }\\n  if (coords[p2 + 1] > coords[p3 + 1]) {\\n    tmp = p2;\\n    p2 = p3;\\n    p3 = tmp;\\n    tmp = c2;\\n    c2 = c3;\\n    c3 = tmp;\\n  }\\n  if (coords[p1 + 1] > coords[p2 + 1]) {\\n    tmp = p1;\\n    p1 = p2;\\n    p2 = tmp;\\n    tmp = c1;\\n    c1 = c2;\\n    c2 = tmp;\\n  }\\n  const x1 = (coords[p1] + context.offsetX) * context.scaleX;\\n  const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\\n  const x2 = (coords[p2] + context.offsetX) * context.scaleX;\\n  const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\\n  const x3 = (coords[p3] + context.offsetX) * context.scaleX;\\n  const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\\n  if (y1 >= y3) {\\n    return;\\n  }\\n  const c1r = colors[c1],\\n    c1g = colors[c1 + 1],\\n    c1b = colors[c1 + 2];\\n  const c2r = colors[c2],\\n    c2g = colors[c2 + 1],\\n    c2b = colors[c2 + 2];\\n  const c3r = colors[c3],\\n    c3g = colors[c3 + 1],\\n    c3b = colors[c3 + 2];\\n\\n  const minY = Math.round(y1),\\n    maxY = Math.round(y3);\\n  let xa, car, cag, cab;\\n  let xb, cbr, cbg, cbb;\\n  for (let y = minY; y \u003C= maxY; y++) {\\n    if (y \u003C y2) {\\n      const k = y \u003C y1 ? 0 : (y1 - y) \u002F (y1 - y2);\\n      xa = x1 - (x1 - x2) * k;\\n      car = c1r - (c1r - c2r) * k;\\n      cag = c1g - (c1g - c2g) * k;\\n      cab = c1b - (c1b - c2b) * k;\\n    } else {\\n      let k;\\n      if (y > y3) {\\n        k = 1;\\n      } else if (y2 === y3) {\\n        k = 0;\\n      } else {\\n        k = (y2 - y) \u002F (y2 - y3);\\n      }\\n      xa = x2 - (x2 - x3) * k;\\n      car = c2r - (c2r - c3r) * k;\\n      cag = c2g - (c2g - c3g) * k;\\n      cab = c2b - (c2b - c3b) * k;\\n    }\\n\\n    let k;\\n    if (y \u003C y1) {\\n      k = 0;\\n    } else if (y > y3) {\\n      k = 1;\\n    } else {\\n      k = (y1 - y) \u002F (y1 - y3);\\n    }\\n    xb = x1 - (x1 - x3) * k;\\n    cbr = c1r - (c1r - c3r) * k;\\n    cbg = c1g - (c1g - c3g) * k;\\n    cbb = c1b - (c1b - c3b) * k;\\n    const x1_ = Math.round(Math.min(xa, xb));\\n    const x2_ = Math.round(Math.max(xa, xb));\\n    let j = rowSize * y + x1_ * 4;\\n    for (let x = x1_; x \u003C= x2_; x++) {\\n      k = (xa - x) \u002F (xa - xb);\\n      if (k \u003C 0) {\\n        k = 0;\\n      } else if (k > 1) {\\n        k = 1;\\n      }\\n      bytes[j++] = (car - (car - cbr) * k) | 0;\\n      bytes[j++] = (cag - (cag - cbg) * k) | 0;\\n      bytes[j++] = (cab - (cab - cbb) * k) | 0;\\n      bytes[j++] = 255;\\n    }\\n  }\\n}\\n\\nfunction drawFigure(data, figure, context) {\\n  const ps = figure.coords;\\n  const cs = figure.colors;\\n  let i, ii;\\n  switch (figure.type) {\\n    case \\\"lattice\\\":\\n      const verticesPerRow = figure.verticesPerRow;\\n      const rows = Math.floor(ps.length \u002F verticesPerRow) - 1;\\n      const cols = verticesPerRow - 1;\\n      for (i = 0; i \u003C rows; i++) {\\n        let q = i * verticesPerRow;\\n        for (let j = 0; j \u003C cols; j++, q++) {\\n          drawTriangle(\\n            data,\\n            context,\\n            ps[q],\\n            ps[q + 1],\\n            ps[q + verticesPerRow],\\n            cs[q],\\n            cs[q + 1],\\n            cs[q + verticesPerRow]\\n          );\\n          drawTriangle(\\n            data,\\n            context,\\n            ps[q + verticesPerRow + 1],\\n            ps[q + 1],\\n            ps[q + verticesPerRow],\\n            cs[q + verticesPerRow + 1],\\n            cs[q + 1],\\n            cs[q + verticesPerRow]\\n          );\\n        }\\n      }\\n      break;\\n    case \\\"triangles\\\":\\n      for (i = 0, ii = ps.length; i \u003C ii; i += 3) {\\n        drawTriangle(\\n          data,\\n          context,\\n          ps[i],\\n          ps[i + 1],\\n          ps[i + 2],\\n          cs[i],\\n          cs[i + 1],\\n          cs[i + 2]\\n        );\\n      }\\n      break;\\n    default:\\n      throw new Error(\\\"illegal figure\\\");\\n  }\\n}\\n\\nclass MeshShadingPattern extends BaseShadingPattern {\\n  constructor(IR) {\\n    super();\\n    this._coords = IR[2];\\n    this._colors = IR[3];\\n    this._figures = IR[4];\\n    this._bounds = IR[5];\\n    this._bbox = IR[7];\\n    this._background = IR[8];\\n    this.matrix = null;\\n  }\\n\\n  _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\\n    \u002F\u002F we will increase scale on some weird factor to let antialiasing take\\n    \u002F\u002F care of \\\"rough\\\" edges\\n    const EXPECTED_SCALE = 1.1;\\n    \u002F\u002F MAX_PATTERN_SIZE is used to avoid OOM situation.\\n    const MAX_PATTERN_SIZE = 3000; \u002F\u002F 10in @ 300dpi shall be enough\\n    \u002F\u002F We need to keep transparent border around our pattern for fill():\\n    \u002F\u002F createPattern with 'no-repeat' will bleed edges across entire area.\\n    const BORDER_SIZE = 2;\\n\\n    const offsetX = Math.floor(this._bounds[0]);\\n    const offsetY = Math.floor(this._bounds[1]);\\n    const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\\n    const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\\n\\n    const width = Math.min(\\n      Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)),\\n      MAX_PATTERN_SIZE\\n    );\\n    const height = Math.min(\\n      Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)),\\n      MAX_PATTERN_SIZE\\n    );\\n    const scaleX = boundsWidth \u002F width;\\n    const scaleY = boundsHeight \u002F height;\\n\\n    const context = {\\n      coords: this._coords,\\n      colors: this._colors,\\n      offsetX: -offsetX,\\n      offsetY: -offsetY,\\n      scaleX: 1 \u002F scaleX,\\n      scaleY: 1 \u002F scaleY,\\n    };\\n\\n    const paddedWidth = width + BORDER_SIZE * 2;\\n    const paddedHeight = height + BORDER_SIZE * 2;\\n\\n    const tmpCanvas = cachedCanvases.getCanvas(\\n      \\\"mesh\\\",\\n      paddedWidth,\\n      paddedHeight,\\n      false\\n    );\\n    const tmpCtx = tmpCanvas.context;\\n\\n    const data = tmpCtx.createImageData(width, height);\\n    if (backgroundColor) {\\n      const bytes = data.data;\\n      for (let i = 0, ii = bytes.length; i \u003C ii; i += 4) {\\n        bytes[i] = backgroundColor[0];\\n        bytes[i + 1] = backgroundColor[1];\\n        bytes[i + 2] = backgroundColor[2];\\n        bytes[i + 3] = 255;\\n      }\\n    }\\n    for (const figure of this._figures) {\\n      drawFigure(data, figure, context);\\n    }\\n    tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\\n    const canvas = tmpCanvas.canvas;\\n\\n    return {\\n      canvas,\\n      offsetX: offsetX - BORDER_SIZE * scaleX,\\n      offsetY: offsetY - BORDER_SIZE * scaleY,\\n      scaleX,\\n      scaleY,\\n    };\\n  }\\n\\n  getPattern(ctx, owner, inverse, pathType) {\\n    applyBoundingBox(ctx, this._bbox);\\n    let scale;\\n    if (pathType === PathType.SHADING) {\\n      scale = Util.singularValueDecompose2dScale(getCurrentTransform(ctx));\\n    } else {\\n      \u002F\u002F Obtain scale from matrix and current transformation matrix.\\n      scale = Util.singularValueDecompose2dScale(owner.baseTransform);\\n      if (this.matrix) {\\n        const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\\n        scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\\n      }\\n    }\\n\\n    \u002F\u002F Rasterizing on the main thread since sending\u002Fqueue large canvases\\n    \u002F\u002F might cause OOM.\\n    const temporaryPatternCanvas = this._createMeshCanvas(\\n      scale,\\n      pathType === PathType.SHADING ? null : this._background,\\n      owner.cachedCanvases\\n    );\\n\\n    if (pathType !== PathType.SHADING) {\\n      ctx.setTransform(...owner.baseTransform);\\n      if (this.matrix) {\\n        ctx.transform(...this.matrix);\\n      }\\n    }\\n\\n    ctx.translate(\\n      temporaryPatternCanvas.offsetX,\\n      temporaryPatternCanvas.offsetY\\n    );\\n    ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\\n\\n    return ctx.createPattern(temporaryPatternCanvas.canvas, \\\"no-repeat\\\");\\n  }\\n}\\n\\nclass DummyShadingPattern extends BaseShadingPattern {\\n  getPattern() {\\n    return \\\"hotpink\\\";\\n  }\\n}\\n\\nfunction getShadingPattern(IR) {\\n  switch (IR[0]) {\\n    case \\\"RadialAxial\\\":\\n      return new RadialAxialShadingPattern(IR);\\n    case \\\"Mesh\\\":\\n      return new MeshShadingPattern(IR);\\n    case \\\"Dummy\\\":\\n      return new DummyShadingPattern();\\n  }\\n  throw new Error(`Unknown IR type: ${IR[0]}`);\\n}\\n\\nconst PaintType = {\\n  COLORED: 1,\\n  UNCOLORED: 2,\\n};\\n\\nclass TilingPattern {\\n  \u002F\u002F 10in @ 300dpi shall be enough.\\n  static MAX_PATTERN_SIZE = 3000;\\n\\n  constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\\n    this.operatorList = IR[2];\\n    this.matrix = IR[3];\\n    this.bbox = IR[4];\\n    this.xstep = IR[5];\\n    this.ystep = IR[6];\\n    this.paintType = IR[7];\\n    this.tilingType = IR[8];\\n    this.color = color;\\n    this.ctx = ctx;\\n    this.canvasGraphicsFactory = canvasGraphicsFactory;\\n    this.baseTransform = baseTransform;\\n  }\\n\\n  createPatternCanvas(owner) {\\n    const operatorList = this.operatorList;\\n    const bbox = this.bbox;\\n    const xstep = this.xstep;\\n    const ystep = this.ystep;\\n    const paintType = this.paintType;\\n    const tilingType = this.tilingType;\\n    const color = this.color;\\n    const canvasGraphicsFactory = this.canvasGraphicsFactory;\\n\\n    info(\\\"TilingType: \\\" + tilingType);\\n\\n    \u002F\u002F A tiling pattern as defined by PDF spec 8.7.2 is a cell whose size is\\n    \u002F\u002F described by bbox, and may repeat regularly by shifting the cell by\\n    \u002F\u002F xstep and ystep.\\n    \u002F\u002F Because the HTML5 canvas API does not support pattern repetition with\\n    \u002F\u002F gaps in between, we use the xstep\u002Fystep instead of the bbox's size.\\n    \u002F\u002F\\n    \u002F\u002F This has the following consequences (similarly for ystep):\\n    \u002F\u002F\\n    \u002F\u002F - If xstep is the same as bbox, then there is no observable difference.\\n    \u002F\u002F\\n    \u002F\u002F - If xstep is larger than bbox, then the pattern canvas is partially\\n    \u002F\u002F   empty: the area bounded by bbox is painted, the outside area is void.\\n    \u002F\u002F\\n    \u002F\u002F - If xstep is smaller than bbox, then the pixels between xstep and the\\n    \u002F\u002F   bbox boundary will be missing. This is INCORRECT behavior.\\n    \u002F\u002F   \\\"Figures on adjacent tiles should not overlap\\\" (PDF spec 8.7.3.1),\\n    \u002F\u002F   but overlapping cells without common pixels are still valid.\\n    \u002F\u002F   TODO: Fix the implementation, to allow this scenario to be painted\\n    \u002F\u002F   correctly.\\n\\n    const x0 = bbox[0],\\n      y0 = bbox[1],\\n      x1 = bbox[2],\\n      y1 = bbox[3];\\n\\n    \u002F\u002F Obtain scale from matrix and current transformation matrix.\\n    const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\\n    const curMatrixScale = Util.singularValueDecompose2dScale(\\n      this.baseTransform\\n    );\\n    const combinedScale = [\\n      matrixScale[0] * curMatrixScale[0],\\n      matrixScale[1] * curMatrixScale[1],\\n    ];\\n\\n    \u002F\u002F Use width and height values that are as close as possible to the end\\n    \u002F\u002F result when the pattern is used. Too low value makes the pattern look\\n    \u002F\u002F blurry. Too large value makes it look too crispy.\\n    const dimx = this.getSizeAndScale(\\n      xstep,\\n      this.ctx.canvas.width,\\n      combinedScale[0]\\n    );\\n    const dimy = this.getSizeAndScale(\\n      ystep,\\n      this.ctx.canvas.height,\\n      combinedScale[1]\\n    );\\n\\n    const tmpCanvas = owner.cachedCanvases.getCanvas(\\n      \\\"pattern\\\",\\n      dimx.size,\\n      dimy.size,\\n      true\\n    );\\n    const tmpCtx = tmpCanvas.context;\\n    const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\\n    graphics.groupLevel = owner.groupLevel;\\n\\n    this.setFillAndStrokeStyleToContext(graphics, paintType, color);\\n\\n    let adjustedX0 = x0;\\n    let adjustedY0 = y0;\\n    let adjustedX1 = x1;\\n    let adjustedY1 = y1;\\n    \u002F\u002F Some bounding boxes have negative x0\u002Fy0 coordinates which will cause the\\n    \u002F\u002F some of the drawing to be off of the canvas. To avoid this shift the\\n    \u002F\u002F bounding box over.\\n    if (x0 \u003C 0) {\\n      adjustedX0 = 0;\\n      adjustedX1 += Math.abs(x0);\\n    }\\n    if (y0 \u003C 0) {\\n      adjustedY0 = 0;\\n      adjustedY1 += Math.abs(y0);\\n    }\\n    tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0));\\n    graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\\n\\n    \u002F\u002F To match CanvasGraphics beginDrawing we must save the context here or\\n    \u002F\u002F else we end up with unbalanced save\u002Frestores.\\n    tmpCtx.save();\\n\\n    this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1);\\n\\n    graphics.baseTransform = getCurrentTransform(graphics.ctx);\\n\\n    graphics.executeOperatorList(operatorList);\\n\\n    graphics.endDrawing();\\n\\n    return {\\n      canvas: tmpCanvas.canvas,\\n      scaleX: dimx.scale,\\n      scaleY: dimy.scale,\\n      offsetX: adjustedX0,\\n      offsetY: adjustedY0,\\n    };\\n  }\\n\\n  getSizeAndScale(step, realOutputSize, scale) {\\n    \u002F\u002F xstep \u002F ystep may be negative -- normalize.\\n    step = Math.abs(step);\\n    \u002F\u002F MAX_PATTERN_SIZE is used to avoid OOM situation.\\n    \u002F\u002F Use the destination canvas's size if it is bigger than the hard-coded\\n    \u002F\u002F limit of MAX_PATTERN_SIZE to avoid clipping patterns that cover the\\n    \u002F\u002F whole canvas.\\n    const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\\n    let size = Math.ceil(step * scale);\\n    if (size >= maxSize) {\\n      size = maxSize;\\n    } else {\\n      scale = size \u002F step;\\n    }\\n    return { scale, size };\\n  }\\n\\n  clipBbox(graphics, x0, y0, x1, y1) {\\n    const bboxWidth = x1 - x0;\\n    const bboxHeight = y1 - y0;\\n    graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\\n    graphics.current.updateRectMinMax(getCurrentTransform(graphics.ctx), [\\n      x0,\\n      y0,\\n      x1,\\n      y1,\\n    ]);\\n    graphics.clip();\\n    graphics.endPath();\\n  }\\n\\n  setFillAndStrokeStyleToContext(graphics, paintType, color) {\\n    const context = graphics.ctx,\\n      current = graphics.current;\\n    switch (paintType) {\\n      case PaintType.COLORED:\\n        const ctx = this.ctx;\\n        context.fillStyle = ctx.fillStyle;\\n        context.strokeStyle = ctx.strokeStyle;\\n        current.fillColor = ctx.fillStyle;\\n        current.strokeColor = ctx.strokeStyle;\\n        break;\\n      case PaintType.UNCOLORED:\\n        const cssColor = Util.makeHexColor(color[0], color[1], color[2]);\\n        context.fillStyle = cssColor;\\n        context.strokeStyle = cssColor;\\n        \u002F\u002F Set color needed by image masks (fixes issues 3226 and 8741).\\n        current.fillColor = cssColor;\\n        current.strokeColor = cssColor;\\n        break;\\n      default:\\n        throw new FormatError(`Unsupported paint type: ${paintType}`);\\n    }\\n  }\\n\\n  getPattern(ctx, owner, inverse, pathType) {\\n    \u002F\u002F PDF spec 8.7.2 NOTE 1: pattern's matrix is relative to initial matrix.\\n    let matrix = inverse;\\n    if (pathType !== PathType.SHADING) {\\n      matrix = Util.transform(matrix, owner.baseTransform);\\n      if (this.matrix) {\\n        matrix = Util.transform(matrix, this.matrix);\\n      }\\n    }\\n\\n    const temporaryPatternCanvas = this.createPatternCanvas(owner);\\n\\n    let domMatrix = new DOMMatrix(matrix);\\n    \u002F\u002F Rescale and so that the ctx.createPattern call generates a pattern with\\n    \u002F\u002F the desired size.\\n    domMatrix = domMatrix.translate(\\n      temporaryPatternCanvas.offsetX,\\n      temporaryPatternCanvas.offsetY\\n    );\\n    domMatrix = domMatrix.scale(\\n      1 \u002F temporaryPatternCanvas.scaleX,\\n      1 \u002F temporaryPatternCanvas.scaleY\\n    );\\n\\n    const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \\\"repeat\\\");\\n    pattern.setTransform(domMatrix);\\n\\n    return pattern;\\n  }\\n}\\n\\nexport { getShadingPattern, PathType, TilingPattern };\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { FeatureTest, ImageKind } from \\\".\u002Futil.js\\\";\\n\\nfunction convertToRGBA(params) {\\n  switch (params.kind) {\\n    case ImageKind.GRAYSCALE_1BPP:\\n      return convertBlackAndWhiteToRGBA(params);\\n    case ImageKind.RGB_24BPP:\\n      return convertRGBToRGBA(params);\\n  }\\n\\n  return null;\\n}\\n\\nfunction convertBlackAndWhiteToRGBA({\\n  src,\\n  srcPos = 0,\\n  dest,\\n  width,\\n  height,\\n  nonBlackColor = 0xffffffff,\\n  inverseDecode = false,\\n}) {\\n  const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\\n  const [zeroMapping, oneMapping] = inverseDecode\\n    ? [nonBlackColor, black]\\n    : [black, nonBlackColor];\\n  const widthInSource = width >> 3;\\n  const widthRemainder = width & 7;\\n  const srcLength = src.length;\\n  dest = new Uint32Array(dest.buffer);\\n  let destPos = 0;\\n\\n  for (let i = 0; i \u003C height; i++) {\\n    for (const max = srcPos + widthInSource; srcPos \u003C max; srcPos++) {\\n      const elem = srcPos \u003C srcLength ? src[srcPos] : 255;\\n      dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\\n      dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\\n      dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\\n      dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\\n      dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\\n      dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\\n      dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\\n      dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\\n    }\\n    if (widthRemainder === 0) {\\n      continue;\\n    }\\n    const elem = srcPos \u003C srcLength ? src[srcPos++] : 255;\\n    for (let j = 0; j \u003C widthRemainder; j++) {\\n      dest[destPos++] = elem & (1 \u003C\u003C (7 - j)) ? oneMapping : zeroMapping;\\n    }\\n  }\\n  return { srcPos, destPos };\\n}\\n\\nfunction convertRGBToRGBA({\\n  src,\\n  srcPos = 0,\\n  dest,\\n  destPos = 0,\\n  width,\\n  height,\\n}) {\\n  let i = 0;\\n  const len32 = src.length >> 2;\\n  const src32 = new Uint32Array(src.buffer, srcPos, len32);\\n\\n  if (FeatureTest.isLittleEndian) {\\n    \u002F\u002F It's a way faster to do the shuffle manually instead of working\\n    \u002F\u002F component by component with some Uint8 arrays.\\n    for (; i \u003C len32 - 2; i += 3, destPos += 4) {\\n      const s1 = src32[i]; \u002F\u002F R2B1G1R1\\n      const s2 = src32[i + 1]; \u002F\u002F G3R3B2G2\\n      const s3 = src32[i + 2]; \u002F\u002F B4G4R4B3\\n\\n      dest[destPos] = s1 | 0xff000000;\\n      dest[destPos + 1] = (s1 >>> 24) | (s2 \u003C\u003C 8) | 0xff000000;\\n      dest[destPos + 2] = (s2 >>> 16) | (s3 \u003C\u003C 16) | 0xff000000;\\n      dest[destPos + 3] = (s3 >>> 8) | 0xff000000;\\n    }\\n\\n    for (let j = i * 4, jj = src.length; j \u003C jj; j += 3) {\\n      dest[destPos++] =\\n        src[j] | (src[j + 1] \u003C\u003C 8) | (src[j + 2] \u003C\u003C 16) | 0xff000000;\\n    }\\n  } else {\\n    for (; i \u003C len32 - 2; i += 3, destPos += 4) {\\n      const s1 = src32[i]; \u002F\u002F R1G1B1R2\\n      const s2 = src32[i + 1]; \u002F\u002F G2B2R3G3\\n      const s3 = src32[i + 2]; \u002F\u002F B3R4G4B4\\n\\n      dest[destPos] = s1 | 0xff;\\n      dest[destPos + 1] = (s1 \u003C\u003C 24) | (s2 >>> 8) | 0xff;\\n      dest[destPos + 2] = (s2 \u003C\u003C 16) | (s3 >>> 16) | 0xff;\\n      dest[destPos + 3] = (s3 \u003C\u003C 8) | 0xff;\\n    }\\n\\n    for (let j = i * 4, jj = src.length; j \u003C jj; j += 3) {\\n      dest[destPos++] =\\n        (src[j] \u003C\u003C 24) | (src[j + 1] \u003C\u003C 16) | (src[j + 2] \u003C\u003C 8) | 0xff;\\n    }\\n  }\\n\\n  return { srcPos, destPos };\\n}\\n\\nfunction grayToRGBA(src, dest) {\\n  if (FeatureTest.isLittleEndian) {\\n    for (let i = 0, ii = src.length; i \u003C ii; i++) {\\n      dest[i] = (src[i] * 0x10101) | 0xff000000;\\n    }\\n  } else {\\n    for (let i = 0, ii = src.length; i \u003C ii; i++) {\\n      dest[i] = (src[i] * 0x1010100) | 0x000000ff;\\n    }\\n  }\\n}\\n\\nexport { convertBlackAndWhiteToRGBA, convertToRGBA, grayToRGBA };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  FeatureTest,\\n  FONT_IDENTITY_MATRIX,\\n  IDENTITY_MATRIX,\\n  ImageKind,\\n  info,\\n  isNodeJS,\\n  OPS,\\n  shadow,\\n  TextRenderingMode,\\n  unreachable,\\n  Util,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  getCurrentTransform,\\n  getCurrentTransformInverse,\\n  PixelsPerInch,\\n} from \\\".\u002Fdisplay_utils.js\\\";\\nimport {\\n  getShadingPattern,\\n  PathType,\\n  TilingPattern,\\n} from \\\".\u002Fpattern_helper.js\\\";\\nimport { convertBlackAndWhiteToRGBA } from \\\"..\u002Fshared\u002Fimage_utils.js\\\";\\n\\n\u002F\u002F \u003Ccanvas> contexts store most of the state we need natively.\\n\u002F\u002F However, PDF needs a bit more state, which we store here.\\n\u002F\u002F Minimal font size that would be used during canvas fillText operations.\\nconst MIN_FONT_SIZE = 16;\\n\u002F\u002F Maximum font size that would be used during canvas fillText operations.\\nconst MAX_FONT_SIZE = 100;\\n\\n\u002F\u002F Defines the time the `executeOperatorList`-method is going to be executing\\n\u002F\u002F before it stops and schedules a continue of execution.\\nconst EXECUTION_TIME = 15; \u002F\u002F ms\\n\u002F\u002F Defines the number of steps before checking the execution time.\\nconst EXECUTION_STEPS = 10;\\n\\n\u002F\u002F To disable Type3 compilation, set the value to `-1`.\\nconst MAX_SIZE_TO_COMPILE = 1000;\\n\\nconst FULL_CHUNK_HEIGHT = 16;\\n\\n\u002F**\\n * Overrides certain methods on a 2d ctx so that when they are called they\\n * will also call the same method on the destCtx. The methods that are\\n * overridden are all the transformation state modifiers, path creation, and\\n * save\u002Frestore. We only forward these specific methods because they are the\\n * only state modifiers that we cannot copy over when we switch contexts.\\n *\\n * To remove mirroring call `ctx._removeMirroring()`.\\n *\\n * @param {Object} ctx - The 2d canvas context that will duplicate its calls on\\n *   the destCtx.\\n * @param {Object} destCtx - The 2d canvas context that will receive the\\n *   forwarded calls.\\n *\u002F\\nfunction mirrorContextOperations(ctx, destCtx) {\\n  if (ctx._removeMirroring) {\\n    throw new Error(\\\"Context is already forwarding operations.\\\");\\n  }\\n  ctx.__originalSave = ctx.save;\\n  ctx.__originalRestore = ctx.restore;\\n  ctx.__originalRotate = ctx.rotate;\\n  ctx.__originalScale = ctx.scale;\\n  ctx.__originalTranslate = ctx.translate;\\n  ctx.__originalTransform = ctx.transform;\\n  ctx.__originalSetTransform = ctx.setTransform;\\n  ctx.__originalResetTransform = ctx.resetTransform;\\n  ctx.__originalClip = ctx.clip;\\n  ctx.__originalMoveTo = ctx.moveTo;\\n  ctx.__originalLineTo = ctx.lineTo;\\n  ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\\n  ctx.__originalRect = ctx.rect;\\n  ctx.__originalClosePath = ctx.closePath;\\n  ctx.__originalBeginPath = ctx.beginPath;\\n\\n  ctx._removeMirroring = () => {\\n    ctx.save = ctx.__originalSave;\\n    ctx.restore = ctx.__originalRestore;\\n    ctx.rotate = ctx.__originalRotate;\\n    ctx.scale = ctx.__originalScale;\\n    ctx.translate = ctx.__originalTranslate;\\n    ctx.transform = ctx.__originalTransform;\\n    ctx.setTransform = ctx.__originalSetTransform;\\n    ctx.resetTransform = ctx.__originalResetTransform;\\n\\n    ctx.clip = ctx.__originalClip;\\n    ctx.moveTo = ctx.__originalMoveTo;\\n    ctx.lineTo = ctx.__originalLineTo;\\n    ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\\n    ctx.rect = ctx.__originalRect;\\n    ctx.closePath = ctx.__originalClosePath;\\n    ctx.beginPath = ctx.__originalBeginPath;\\n    delete ctx._removeMirroring;\\n  };\\n\\n  ctx.save = function ctxSave() {\\n    destCtx.save();\\n    this.__originalSave();\\n  };\\n\\n  ctx.restore = function ctxRestore() {\\n    destCtx.restore();\\n    this.__originalRestore();\\n  };\\n\\n  ctx.translate = function ctxTranslate(x, y) {\\n    destCtx.translate(x, y);\\n    this.__originalTranslate(x, y);\\n  };\\n\\n  ctx.scale = function ctxScale(x, y) {\\n    destCtx.scale(x, y);\\n    this.__originalScale(x, y);\\n  };\\n\\n  ctx.transform = function ctxTransform(a, b, c, d, e, f) {\\n    destCtx.transform(a, b, c, d, e, f);\\n    this.__originalTransform(a, b, c, d, e, f);\\n  };\\n\\n  ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\\n    destCtx.setTransform(a, b, c, d, e, f);\\n    this.__originalSetTransform(a, b, c, d, e, f);\\n  };\\n\\n  ctx.resetTransform = function ctxResetTransform() {\\n    destCtx.resetTransform();\\n    this.__originalResetTransform();\\n  };\\n\\n  ctx.rotate = function ctxRotate(angle) {\\n    destCtx.rotate(angle);\\n    this.__originalRotate(angle);\\n  };\\n\\n  ctx.clip = function ctxRotate(rule) {\\n    destCtx.clip(rule);\\n    this.__originalClip(rule);\\n  };\\n\\n  ctx.moveTo = function (x, y) {\\n    destCtx.moveTo(x, y);\\n    this.__originalMoveTo(x, y);\\n  };\\n\\n  ctx.lineTo = function (x, y) {\\n    destCtx.lineTo(x, y);\\n    this.__originalLineTo(x, y);\\n  };\\n\\n  ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\\n    destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\\n    this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\\n  };\\n\\n  ctx.rect = function (x, y, width, height) {\\n    destCtx.rect(x, y, width, height);\\n    this.__originalRect(x, y, width, height);\\n  };\\n\\n  ctx.closePath = function () {\\n    destCtx.closePath();\\n    this.__originalClosePath();\\n  };\\n\\n  ctx.beginPath = function () {\\n    destCtx.beginPath();\\n    this.__originalBeginPath();\\n  };\\n}\\n\\nclass CachedCanvases {\\n  constructor(canvasFactory) {\\n    this.canvasFactory = canvasFactory;\\n    this.cache = Object.create(null);\\n  }\\n\\n  getCanvas(id, width, height) {\\n    let canvasEntry;\\n    if (this.cache[id] !== undefined) {\\n      canvasEntry = this.cache[id];\\n      this.canvasFactory.reset(canvasEntry, width, height);\\n    } else {\\n      canvasEntry = this.canvasFactory.create(width, height);\\n      this.cache[id] = canvasEntry;\\n    }\\n    return canvasEntry;\\n  }\\n\\n  delete(id) {\\n    delete this.cache[id];\\n  }\\n\\n  clear() {\\n    for (const id in this.cache) {\\n      const canvasEntry = this.cache[id];\\n      this.canvasFactory.destroy(canvasEntry);\\n      delete this.cache[id];\\n    }\\n  }\\n}\\n\\nfunction drawImageAtIntegerCoords(\\n  ctx,\\n  srcImg,\\n  srcX,\\n  srcY,\\n  srcW,\\n  srcH,\\n  destX,\\n  destY,\\n  destW,\\n  destH\\n) {\\n  const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);\\n  if (b === 0 && c === 0) {\\n    \u002F\u002F top-left corner is at (X, Y) and\\n    \u002F\u002F bottom-right one is at (X + width, Y + height).\\n\\n    \u002F\u002F If leftX is 4.321 then it's rounded to 4.\\n    \u002F\u002F If width is 10.432 then it's rounded to 11 because\\n    \u002F\u002F rightX = leftX + width = 14.753 which is rounded to 15\\n    \u002F\u002F so after rounding the total width is 11 (15 - 4).\\n    \u002F\u002F It's why we can't just floor\u002Fceil uniformly, it just depends\\n    \u002F\u002F on the values we've.\\n\\n    const tlX = destX * a + tx;\\n    const rTlX = Math.round(tlX);\\n    const tlY = destY * d + ty;\\n    const rTlY = Math.round(tlY);\\n    const brX = (destX + destW) * a + tx;\\n\\n    \u002F\u002F Some pdf contains images with 1x1 images so in case of 0-width after\\n    \u002F\u002F scaling we must fallback on 1 to be sure there is something.\\n    const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\\n    const brY = (destY + destH) * d + ty;\\n    const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\\n\\n    \u002F\u002F We must apply a transformation in order to apply it on the image itself.\\n    \u002F\u002F For example if a == 1 && d == -1, it means that the image itself is\\n    \u002F\u002F mirrored w.r.t. the x-axis.\\n    ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);\\n    ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);\\n    ctx.setTransform(a, b, c, d, tx, ty);\\n\\n    return [rWidth, rHeight];\\n  }\\n\\n  if (a === 0 && d === 0) {\\n    \u002F\u002F This path is taken in issue9462.pdf (page 3).\\n    const tlX = destY * c + tx;\\n    const rTlX = Math.round(tlX);\\n    const tlY = destX * b + ty;\\n    const rTlY = Math.round(tlY);\\n    const brX = (destY + destH) * c + tx;\\n    const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\\n    const brY = (destX + destW) * b + ty;\\n    const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\\n\\n    ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);\\n    ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);\\n    ctx.setTransform(a, b, c, d, tx, ty);\\n\\n    return [rHeight, rWidth];\\n  }\\n\\n  \u002F\u002F Not a scale matrix so let the render handle the case without rounding.\\n  ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\\n\\n  const scaleX = Math.hypot(a, b);\\n  const scaleY = Math.hypot(c, d);\\n  return [scaleX * destW, scaleY * destH];\\n}\\n\\nfunction compileType3Glyph(imgData) {\\n  const { width, height } = imgData;\\n  if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {\\n    return null;\\n  }\\n\\n  const POINT_TO_PROCESS_LIMIT = 1000;\\n  const POINT_TYPES = new Uint8Array([\\n    0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0,\\n  ]);\\n\\n  const width1 = width + 1;\\n  let points = new Uint8Array(width1 * (height + 1));\\n  let i, j, j0;\\n\\n  \u002F\u002F decodes bit-packed mask data\\n  const lineSize = (width + 7) & ~7;\\n  let data = new Uint8Array(lineSize * height),\\n    pos = 0;\\n  for (const elem of imgData.data) {\\n    let mask = 128;\\n    while (mask > 0) {\\n      data[pos++] = elem & mask ? 0 : 255;\\n      mask >>= 1;\\n    }\\n  }\\n\\n  \u002F\u002F finding interesting points: every point is located between mask pixels,\\n  \u002F\u002F so there will be points of the (width + 1)x(height + 1) grid. Every point\\n  \u002F\u002F will have flags assigned based on neighboring mask pixels:\\n  \u002F\u002F   4 | 8\\n  \u002F\u002F   --P--\\n  \u002F\u002F   2 | 1\\n  \u002F\u002F We are interested only in points with the flags:\\n  \u002F\u002F   - outside corners: 1, 2, 4, 8;\\n  \u002F\u002F   - inside corners: 7, 11, 13, 14;\\n  \u002F\u002F   - and, intersections: 5, 10.\\n  let count = 0;\\n  pos = 0;\\n  if (data[pos] !== 0) {\\n    points[0] = 1;\\n    ++count;\\n  }\\n  for (j = 1; j \u003C width; j++) {\\n    if (data[pos] !== data[pos + 1]) {\\n      points[j] = data[pos] ? 2 : 1;\\n      ++count;\\n    }\\n    pos++;\\n  }\\n  if (data[pos] !== 0) {\\n    points[j] = 2;\\n    ++count;\\n  }\\n  for (i = 1; i \u003C height; i++) {\\n    pos = i * lineSize;\\n    j0 = i * width1;\\n    if (data[pos - lineSize] !== data[pos]) {\\n      points[j0] = data[pos] ? 1 : 8;\\n      ++count;\\n    }\\n    \u002F\u002F 'sum' is the position of the current pixel configuration in the 'TYPES'\\n    \u002F\u002F array (in order 8-1-2-4, so we can use '>>2' to shift the column).\\n    let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\\n    for (j = 1; j \u003C width; j++) {\\n      sum =\\n        (sum >> 2) +\\n        (data[pos + 1] ? 4 : 0) +\\n        (data[pos - lineSize + 1] ? 8 : 0);\\n      if (POINT_TYPES[sum]) {\\n        points[j0 + j] = POINT_TYPES[sum];\\n        ++count;\\n      }\\n      pos++;\\n    }\\n    if (data[pos - lineSize] !== data[pos]) {\\n      points[j0 + j] = data[pos] ? 2 : 4;\\n      ++count;\\n    }\\n\\n    if (count > POINT_TO_PROCESS_LIMIT) {\\n      return null;\\n    }\\n  }\\n\\n  pos = lineSize * (height - 1);\\n  j0 = i * width1;\\n  if (data[pos] !== 0) {\\n    points[j0] = 8;\\n    ++count;\\n  }\\n  for (j = 1; j \u003C width; j++) {\\n    if (data[pos] !== data[pos + 1]) {\\n      points[j0 + j] = data[pos] ? 4 : 8;\\n      ++count;\\n    }\\n    pos++;\\n  }\\n  if (data[pos] !== 0) {\\n    points[j0 + j] = 4;\\n    ++count;\\n  }\\n  if (count > POINT_TO_PROCESS_LIMIT) {\\n    return null;\\n  }\\n\\n  \u002F\u002F building outlines\\n  const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\\n  const path = new Path2D();\\n\\n  for (i = 0; count && i \u003C= height; i++) {\\n    let p = i * width1;\\n    const end = p + width;\\n    while (p \u003C end && !points[p]) {\\n      p++;\\n    }\\n    if (p === end) {\\n      continue;\\n    }\\n    path.moveTo(p % width1, i);\\n\\n    const p0 = p;\\n    let type = points[p];\\n    do {\\n      const step = steps[type];\\n      do {\\n        p += step;\\n      } while (!points[p]);\\n\\n      const pp = points[p];\\n      if (pp !== 5 && pp !== 10) {\\n        \u002F\u002F set new direction\\n        type = pp;\\n        \u002F\u002F delete mark\\n        points[p] = 0;\\n      } else {\\n        \u002F\u002F type is 5 or 10, ie, a crossing\\n        \u002F\u002F set new direction\\n        type = pp & ((0x33 * type) >> 4);\\n        \u002F\u002F set new type for \\\"future hit\\\"\\n        points[p] &= (type >> 2) | (type \u003C\u003C 2);\\n      }\\n      path.lineTo(p % width1, (p \u002F width1) | 0);\\n\\n      if (!points[p]) {\\n        --count;\\n      }\\n    } while (p0 !== p);\\n    --i;\\n  }\\n\\n  \u002F\u002F Immediately release the, potentially large, `Uint8Array`s after parsing.\\n  data = null;\\n  points = null;\\n\\n  const drawOutline = function (c) {\\n    c.save();\\n    \u002F\u002F the path shall be painted in [0..1]x[0..1] space\\n    c.scale(1 \u002F width, -1 \u002F height);\\n    c.translate(0, -height);\\n    c.fill(path);\\n    c.beginPath();\\n    c.restore();\\n  };\\n\\n  return drawOutline;\\n}\\n\\nclass CanvasExtraState {\\n  constructor(width, height) {\\n    \u002F\u002F Are soft masks and alpha values shapes or opacities?\\n    this.alphaIsShape = false;\\n    this.fontSize = 0;\\n    this.fontSizeScale = 1;\\n    this.textMatrix = IDENTITY_MATRIX;\\n    this.textMatrixScale = 1;\\n    this.fontMatrix = FONT_IDENTITY_MATRIX;\\n    this.leading = 0;\\n    \u002F\u002F Current point (in user coordinates)\\n    this.x = 0;\\n    this.y = 0;\\n    \u002F\u002F Start of text line (in text coordinates)\\n    this.lineX = 0;\\n    this.lineY = 0;\\n    \u002F\u002F Character and word spacing\\n    this.charSpacing = 0;\\n    this.wordSpacing = 0;\\n    this.textHScale = 1;\\n    this.textRenderingMode = TextRenderingMode.FILL;\\n    this.textRise = 0;\\n    \u002F\u002F Default fore and background colors\\n    this.fillColor = \\\"#000000\\\";\\n    this.strokeColor = \\\"#000000\\\";\\n    this.patternFill = false;\\n    \u002F\u002F Note: fill alpha applies to all non-stroking operations\\n    this.fillAlpha = 1;\\n    this.strokeAlpha = 1;\\n    this.lineWidth = 1;\\n    this.activeSMask = null;\\n    this.transferMaps = \\\"none\\\";\\n\\n    this.startNewPathAndClipBox([0, 0, width, height]);\\n  }\\n\\n  clone() {\\n    const clone = Object.create(this);\\n    clone.clipBox = this.clipBox.slice();\\n    return clone;\\n  }\\n\\n  setCurrentPoint(x, y) {\\n    this.x = x;\\n    this.y = y;\\n  }\\n\\n  updatePathMinMax(transform, x, y) {\\n    [x, y] = Util.applyTransform([x, y], transform);\\n    this.minX = Math.min(this.minX, x);\\n    this.minY = Math.min(this.minY, y);\\n    this.maxX = Math.max(this.maxX, x);\\n    this.maxY = Math.max(this.maxY, y);\\n  }\\n\\n  updateRectMinMax(transform, rect) {\\n    const p1 = Util.applyTransform(rect, transform);\\n    const p2 = Util.applyTransform(rect.slice(2), transform);\\n    const p3 = Util.applyTransform([rect[0], rect[3]], transform);\\n    const p4 = Util.applyTransform([rect[2], rect[1]], transform);\\n\\n    this.minX = Math.min(this.minX, p1[0], p2[0], p3[0], p4[0]);\\n    this.minY = Math.min(this.minY, p1[1], p2[1], p3[1], p4[1]);\\n    this.maxX = Math.max(this.maxX, p1[0], p2[0], p3[0], p4[0]);\\n    this.maxY = Math.max(this.maxY, p1[1], p2[1], p3[1], p4[1]);\\n  }\\n\\n  updateScalingPathMinMax(transform, minMax) {\\n    Util.scaleMinMax(transform, minMax);\\n    this.minX = Math.min(this.minX, minMax[0]);\\n    this.minY = Math.min(this.minY, minMax[1]);\\n    this.maxX = Math.max(this.maxX, minMax[2]);\\n    this.maxY = Math.max(this.maxY, minMax[3]);\\n  }\\n\\n  updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\\n    const box = Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax);\\n    if (minMax) {\\n      return;\\n    }\\n    this.updateRectMinMax(transform, box);\\n  }\\n\\n  getPathBoundingBox(pathType = PathType.FILL, transform = null) {\\n    const box = [this.minX, this.minY, this.maxX, this.maxY];\\n    if (pathType === PathType.STROKE) {\\n      if (!transform) {\\n        unreachable(\\\"Stroke bounding box must include transform.\\\");\\n      }\\n      \u002F\u002F Stroked paths can be outside of the path bounding box by 1\u002F2 the line\\n      \u002F\u002F width.\\n      const scale = Util.singularValueDecompose2dScale(transform);\\n      const xStrokePad = (scale[0] * this.lineWidth) \u002F 2;\\n      const yStrokePad = (scale[1] * this.lineWidth) \u002F 2;\\n      box[0] -= xStrokePad;\\n      box[1] -= yStrokePad;\\n      box[2] += xStrokePad;\\n      box[3] += yStrokePad;\\n    }\\n    return box;\\n  }\\n\\n  updateClipFromPath() {\\n    const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\\n    this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\\n  }\\n\\n  isEmptyClip() {\\n    return this.minX === Infinity;\\n  }\\n\\n  startNewPathAndClipBox(box) {\\n    this.clipBox = box;\\n    this.minX = Infinity;\\n    this.minY = Infinity;\\n    this.maxX = 0;\\n    this.maxY = 0;\\n  }\\n\\n  getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\\n    return Util.intersect(\\n      this.clipBox,\\n      this.getPathBoundingBox(pathType, transform)\\n    );\\n  }\\n}\\n\\nfunction putBinaryImageData(ctx, imgData) {\\n  if (typeof ImageData !== \\\"undefined\\\" && imgData instanceof ImageData) {\\n    ctx.putImageData(imgData, 0, 0);\\n    return;\\n  }\\n\\n  \u002F\u002F Put the image data to the canvas in chunks, rather than putting the\\n  \u002F\u002F whole image at once.  This saves JS memory, because the ImageData object\\n  \u002F\u002F is smaller. It also possibly saves C++ memory within the implementation\\n  \u002F\u002F of putImageData(). (E.g. in Firefox we make two short-lived copies of\\n  \u002F\u002F the data passed to putImageData()). |n| shouldn't be too small, however,\\n  \u002F\u002F because too many putImageData() calls will slow things down.\\n  \u002F\u002F\\n  \u002F\u002F Note: as written, if the last chunk is partial, the putImageData() call\\n  \u002F\u002F will (conceptually) put pixels past the bounds of the canvas.  But\\n  \u002F\u002F that's ok; any such pixels are ignored.\\n\\n  const height = imgData.height,\\n    width = imgData.width;\\n  const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\\n  const fullChunks = (height - partialChunkHeight) \u002F FULL_CHUNK_HEIGHT;\\n  const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\\n\\n  const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\\n  let srcPos = 0,\\n    destPos;\\n  const src = imgData.data;\\n  const dest = chunkImgData.data;\\n  let i, j, thisChunkHeight, elemsInThisChunk;\\n\\n  \u002F\u002F There are multiple forms in which the pixel data can be passed, and\\n  \u002F\u002F imgData.kind tells us which one this is.\\n  if (imgData.kind === ImageKind.GRAYSCALE_1BPP) {\\n    \u002F\u002F Grayscale, 1 bit per pixel (i.e. black-and-white).\\n    const srcLength = src.byteLength;\\n    const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\\n    const dest32DataLength = dest32.length;\\n    const fullSrcDiff = (width + 7) >> 3;\\n    const white = 0xffffffff;\\n    const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\\n\\n    for (i = 0; i \u003C totalChunks; i++) {\\n      thisChunkHeight = i \u003C fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\\n      destPos = 0;\\n      for (j = 0; j \u003C thisChunkHeight; j++) {\\n        const srcDiff = srcLength - srcPos;\\n        let k = 0;\\n        const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\\n        const kEndUnrolled = kEnd & ~7;\\n        let mask = 0;\\n        let srcByte = 0;\\n        for (; k \u003C kEndUnrolled; k += 8) {\\n          srcByte = src[srcPos++];\\n          dest32[destPos++] = srcByte & 128 ? white : black;\\n          dest32[destPos++] = srcByte & 64 ? white : black;\\n          dest32[destPos++] = srcByte & 32 ? white : black;\\n          dest32[destPos++] = srcByte & 16 ? white : black;\\n          dest32[destPos++] = srcByte & 8 ? white : black;\\n          dest32[destPos++] = srcByte & 4 ? white : black;\\n          dest32[destPos++] = srcByte & 2 ? white : black;\\n          dest32[destPos++] = srcByte & 1 ? white : black;\\n        }\\n        for (; k \u003C kEnd; k++) {\\n          if (mask === 0) {\\n            srcByte = src[srcPos++];\\n            mask = 128;\\n          }\\n\\n          dest32[destPos++] = srcByte & mask ? white : black;\\n          mask >>= 1;\\n        }\\n      }\\n      \u002F\u002F We ran out of input. Make all remaining pixels transparent.\\n      while (destPos \u003C dest32DataLength) {\\n        dest32[destPos++] = 0;\\n      }\\n\\n      ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\\n    }\\n  } else if (imgData.kind === ImageKind.RGBA_32BPP) {\\n    \u002F\u002F RGBA, 32-bits per pixel.\\n    j = 0;\\n    elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\\n    for (i = 0; i \u003C fullChunks; i++) {\\n      dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\\n      srcPos += elemsInThisChunk;\\n\\n      ctx.putImageData(chunkImgData, 0, j);\\n      j += FULL_CHUNK_HEIGHT;\\n    }\\n    if (i \u003C totalChunks) {\\n      elemsInThisChunk = width * partialChunkHeight * 4;\\n      dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\\n\\n      ctx.putImageData(chunkImgData, 0, j);\\n    }\\n  } else if (imgData.kind === ImageKind.RGB_24BPP) {\\n    \u002F\u002F RGB, 24-bits per pixel.\\n    thisChunkHeight = FULL_CHUNK_HEIGHT;\\n    elemsInThisChunk = width * thisChunkHeight;\\n    for (i = 0; i \u003C totalChunks; i++) {\\n      if (i >= fullChunks) {\\n        thisChunkHeight = partialChunkHeight;\\n        elemsInThisChunk = width * thisChunkHeight;\\n      }\\n\\n      destPos = 0;\\n      for (j = elemsInThisChunk; j--; ) {\\n        dest[destPos++] = src[srcPos++];\\n        dest[destPos++] = src[srcPos++];\\n        dest[destPos++] = src[srcPos++];\\n        dest[destPos++] = 255;\\n      }\\n\\n      ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\\n    }\\n  } else {\\n    throw new Error(`bad image kind: ${imgData.kind}`);\\n  }\\n}\\n\\nfunction putBinaryImageMask(ctx, imgData) {\\n  if (imgData.bitmap) {\\n    \u002F\u002F The bitmap has been created in the worker.\\n    ctx.drawImage(imgData.bitmap, 0, 0);\\n    return;\\n  }\\n\\n  \u002F\u002F Slow path: OffscreenCanvas isn't available in the worker.\\n  const height = imgData.height,\\n    width = imgData.width;\\n  const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\\n  const fullChunks = (height - partialChunkHeight) \u002F FULL_CHUNK_HEIGHT;\\n  const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\\n\\n  const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\\n  let srcPos = 0;\\n  const src = imgData.data;\\n  const dest = chunkImgData.data;\\n\\n  for (let i = 0; i \u003C totalChunks; i++) {\\n    const thisChunkHeight =\\n      i \u003C fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\\n\\n    \u002F\u002F Expand the mask so it can be used by the canvas.  Any required\\n    \u002F\u002F inversion has already been handled.\\n\\n    ({ srcPos } = convertBlackAndWhiteToRGBA({\\n      src,\\n      srcPos,\\n      dest,\\n      width,\\n      height: thisChunkHeight,\\n      nonBlackColor: 0,\\n    }));\\n\\n    ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\\n  }\\n}\\n\\nfunction copyCtxState(sourceCtx, destCtx) {\\n  const properties = [\\n    \\\"strokeStyle\\\",\\n    \\\"fillStyle\\\",\\n    \\\"fillRule\\\",\\n    \\\"globalAlpha\\\",\\n    \\\"lineWidth\\\",\\n    \\\"lineCap\\\",\\n    \\\"lineJoin\\\",\\n    \\\"miterLimit\\\",\\n    \\\"globalCompositeOperation\\\",\\n    \\\"font\\\",\\n    \\\"filter\\\",\\n  ];\\n  for (const property of properties) {\\n    if (sourceCtx[property] !== undefined) {\\n      destCtx[property] = sourceCtx[property];\\n    }\\n  }\\n  if (sourceCtx.setLineDash !== undefined) {\\n    destCtx.setLineDash(sourceCtx.getLineDash());\\n    destCtx.lineDashOffset = sourceCtx.lineDashOffset;\\n  }\\n}\\n\\nfunction resetCtxToDefault(ctx) {\\n  ctx.strokeStyle = ctx.fillStyle = \\\"#000000\\\";\\n  ctx.fillRule = \\\"nonzero\\\";\\n  ctx.globalAlpha = 1;\\n  ctx.lineWidth = 1;\\n  ctx.lineCap = \\\"butt\\\";\\n  ctx.lineJoin = \\\"miter\\\";\\n  ctx.miterLimit = 10;\\n  ctx.globalCompositeOperation = \\\"source-over\\\";\\n  ctx.font = \\\"10px sans-serif\\\";\\n  if (ctx.setLineDash !== undefined) {\\n    ctx.setLineDash([]);\\n    ctx.lineDashOffset = 0;\\n  }\\n  if (\\n    (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) ||\\n    !isNodeJS\\n  ) {\\n    const { filter } = ctx;\\n    if (filter !== \\\"none\\\" && filter !== \\\"\\\") {\\n      ctx.filter = \\\"none\\\";\\n    }\\n  }\\n}\\n\\nfunction getImageSmoothingEnabled(transform, interpolate) {\\n  \u002F\u002F In section 8.9.5.3 of the PDF spec, it's mentioned that the interpolate\\n  \u002F\u002F flag should be used when the image is upscaled.\\n  \u002F\u002F In Firefox, smoothing is always used when downscaling images (bug 1360415).\\n\\n  if (interpolate) {\\n    return true;\\n  }\\n\\n  const scale = Util.singularValueDecompose2dScale(transform);\\n  \u002F\u002F Round to a 32bit float so that `\u003C=` check below will pass for numbers that\\n  \u002F\u002F are very close, but not exactly the same 64bit floats.\\n  scale[0] = Math.fround(scale[0]);\\n  scale[1] = Math.fround(scale[1]);\\n  const actualScale = Math.fround(\\n    (globalThis.devicePixelRatio || 1) * PixelsPerInch.PDF_TO_CSS_UNITS\\n  );\\n  return scale[0] \u003C= actualScale && scale[1] \u003C= actualScale;\\n}\\n\\nconst LINE_CAP_STYLES = [\\\"butt\\\", \\\"round\\\", \\\"square\\\"];\\nconst LINE_JOIN_STYLES = [\\\"miter\\\", \\\"round\\\", \\\"bevel\\\"];\\nconst NORMAL_CLIP = {};\\nconst EO_CLIP = {};\\n\\nclass CanvasGraphics {\\n  constructor(\\n    canvasCtx,\\n    commonObjs,\\n    objs,\\n    canvasFactory,\\n    filterFactory,\\n    { optionalContentConfig, markedContentStack = null },\\n    annotationCanvasMap,\\n    pageColors\\n  ) {\\n    this.ctx = canvasCtx;\\n    this.current = new CanvasExtraState(\\n      this.ctx.canvas.width,\\n      this.ctx.canvas.height\\n    );\\n    this.stateStack = [];\\n    this.pendingClip = null;\\n    this.pendingEOFill = false;\\n    this.res = null;\\n    this.xobjs = null;\\n    this.commonObjs = commonObjs;\\n    this.objs = objs;\\n    this.canvasFactory = canvasFactory;\\n    this.filterFactory = filterFactory;\\n    this.groupStack = [];\\n    this.processingType3 = null;\\n    \u002F\u002F Patterns are painted relative to the initial page\u002Fform transform, see\\n    \u002F\u002F PDF spec 8.7.2 NOTE 1.\\n    this.baseTransform = null;\\n    this.baseTransformStack = [];\\n    this.groupLevel = 0;\\n    this.smaskStack = [];\\n    this.smaskCounter = 0;\\n    this.tempSMask = null;\\n    this.suspendedCtx = null;\\n    this.contentVisible = true;\\n    this.markedContentStack = markedContentStack || [];\\n    this.optionalContentConfig = optionalContentConfig;\\n    this.cachedCanvases = new CachedCanvases(this.canvasFactory);\\n    this.cachedPatterns = new Map();\\n    this.annotationCanvasMap = annotationCanvasMap;\\n    this.viewportScale = 1;\\n    this.outputScaleX = 1;\\n    this.outputScaleY = 1;\\n    this.pageColors = pageColors;\\n\\n    this._cachedScaleForStroking = [-1, 0];\\n    this._cachedGetSinglePixelWidth = null;\\n    this._cachedBitmapsMap = new Map();\\n  }\\n\\n  getObject(data, fallback = null) {\\n    if (typeof data === \\\"string\\\") {\\n      return data.startsWith(\\\"g_\\\")\\n        ? this.commonObjs.get(data)\\n        : this.objs.get(data);\\n    }\\n    return fallback;\\n  }\\n\\n  beginDrawing({\\n    transform,\\n    viewport,\\n    transparency = false,\\n    background = null,\\n  }) {\\n    \u002F\u002F For pdfs that use blend modes we have to clear the canvas else certain\\n    \u002F\u002F blend modes can look wrong since we'd be blending with a white\\n    \u002F\u002F backdrop. The problem with a transparent backdrop though is we then\\n    \u002F\u002F don't get sub pixel anti aliasing on text, creating temporary\\n    \u002F\u002F transparent canvas when we have blend modes.\\n    const width = this.ctx.canvas.width;\\n    const height = this.ctx.canvas.height;\\n\\n    const savedFillStyle = this.ctx.fillStyle;\\n    this.ctx.fillStyle = background || \\\"#ffffff\\\";\\n    this.ctx.fillRect(0, 0, width, height);\\n    this.ctx.fillStyle = savedFillStyle;\\n\\n    if (transparency) {\\n      const transparentCanvas = this.cachedCanvases.getCanvas(\\n        \\\"transparent\\\",\\n        width,\\n        height\\n      );\\n      this.compositeCtx = this.ctx;\\n      this.transparentCanvas = transparentCanvas.canvas;\\n      this.ctx = transparentCanvas.context;\\n      this.ctx.save();\\n      \u002F\u002F The transform can be applied before rendering, transferring it to\\n      \u002F\u002F the new canvas.\\n      this.ctx.transform(...getCurrentTransform(this.compositeCtx));\\n    }\\n\\n    this.ctx.save();\\n    resetCtxToDefault(this.ctx);\\n    if (transform) {\\n      this.ctx.transform(...transform);\\n      this.outputScaleX = transform[0];\\n      this.outputScaleY = transform[0];\\n    }\\n    this.ctx.transform(...viewport.transform);\\n    this.viewportScale = viewport.scale;\\n\\n    this.baseTransform = getCurrentTransform(this.ctx);\\n  }\\n\\n  executeOperatorList(\\n    operatorList,\\n    executionStartIdx,\\n    continueCallback,\\n    stepper\\n  ) {\\n    const argsArray = operatorList.argsArray;\\n    const fnArray = operatorList.fnArray;\\n    let i = executionStartIdx || 0;\\n    const argsArrayLen = argsArray.length;\\n\\n    \u002F\u002F Sometimes the OperatorList to execute is empty.\\n    if (argsArrayLen === i) {\\n      return i;\\n    }\\n\\n    const chunkOperations =\\n      argsArrayLen - i > EXECUTION_STEPS &&\\n      typeof continueCallback === \\\"function\\\";\\n    const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\\n    let steps = 0;\\n\\n    const commonObjs = this.commonObjs;\\n    const objs = this.objs;\\n    let fnId;\\n\\n    while (true) {\\n      if (stepper !== undefined && i === stepper.nextBreakPoint) {\\n        stepper.breakIt(i, continueCallback);\\n        return i;\\n      }\\n\\n      fnId = fnArray[i];\\n\\n      if (fnId !== OPS.dependency) {\\n        \u002F\u002F eslint-disable-next-line prefer-spread\\n        this[fnId].apply(this, argsArray[i]);\\n      } else {\\n        for (const depObjId of argsArray[i]) {\\n          const objsPool = depObjId.startsWith(\\\"g_\\\") ? commonObjs : objs;\\n\\n          \u002F\u002F If the promise isn't resolved yet, add the continueCallback\\n          \u002F\u002F to the promise and bail out.\\n          if (!objsPool.has(depObjId)) {\\n            objsPool.get(depObjId, continueCallback);\\n            return i;\\n          }\\n        }\\n      }\\n\\n      i++;\\n\\n      \u002F\u002F If the entire operatorList was executed, stop as were done.\\n      if (i === argsArrayLen) {\\n        return i;\\n      }\\n\\n      \u002F\u002F If the execution took longer then a certain amount of time and\\n      \u002F\u002F `continueCallback` is specified, interrupt the execution.\\n      if (chunkOperations && ++steps > EXECUTION_STEPS) {\\n        if (Date.now() > endTime) {\\n          continueCallback();\\n          return i;\\n        }\\n        steps = 0;\\n      }\\n\\n      \u002F\u002F If the operatorList isn't executed completely yet OR the execution\\n      \u002F\u002F time was short enough, do another execution round.\\n    }\\n  }\\n\\n  #restoreInitialState() {\\n    \u002F\u002F Finishing all opened operations such as SMask group painting.\\n    while (this.stateStack.length || this.inSMaskMode) {\\n      this.restore();\\n    }\\n\\n    this.ctx.restore();\\n\\n    if (this.transparentCanvas) {\\n      this.ctx = this.compositeCtx;\\n      this.ctx.save();\\n      this.ctx.setTransform(1, 0, 0, 1, 0, 0); \u002F\u002F Avoid apply transform twice\\n      this.ctx.drawImage(this.transparentCanvas, 0, 0);\\n      this.ctx.restore();\\n      this.transparentCanvas = null;\\n    }\\n  }\\n\\n  endDrawing() {\\n    this.#restoreInitialState();\\n\\n    this.cachedCanvases.clear();\\n    this.cachedPatterns.clear();\\n\\n    for (const cache of this._cachedBitmapsMap.values()) {\\n      for (const canvas of cache.values()) {\\n        if (\\n          typeof HTMLCanvasElement !== \\\"undefined\\\" &&\\n          canvas instanceof HTMLCanvasElement\\n        ) {\\n          canvas.width = canvas.height = 0;\\n        }\\n      }\\n      cache.clear();\\n    }\\n    this._cachedBitmapsMap.clear();\\n    this.#drawFilter();\\n  }\\n\\n  #drawFilter() {\\n    if (this.pageColors) {\\n      const hcmFilterId = this.filterFactory.addHCMFilter(\\n        this.pageColors.foreground,\\n        this.pageColors.background\\n      );\\n      if (hcmFilterId !== \\\"none\\\") {\\n        const savedFilter = this.ctx.filter;\\n        this.ctx.filter = hcmFilterId;\\n        this.ctx.drawImage(this.ctx.canvas, 0, 0);\\n        this.ctx.filter = savedFilter;\\n      }\\n    }\\n  }\\n\\n  _scaleImage(img, inverseTransform) {\\n    \u002F\u002F Vertical or horizontal scaling shall not be more than 2 to not lose the\\n    \u002F\u002F pixels during drawImage operation, painting on the temporary canvas(es)\\n    \u002F\u002F that are twice smaller in size.\\n    const width = img.width;\\n    const height = img.height;\\n    let widthScale = Math.max(\\n      Math.hypot(inverseTransform[0], inverseTransform[1]),\\n      1\\n    );\\n    let heightScale = Math.max(\\n      Math.hypot(inverseTransform[2], inverseTransform[3]),\\n      1\\n    );\\n\\n    let paintWidth = width,\\n      paintHeight = height;\\n    let tmpCanvasId = \\\"prescale1\\\";\\n    let tmpCanvas, tmpCtx;\\n    while (\\n      (widthScale > 2 && paintWidth > 1) ||\\n      (heightScale > 2 && paintHeight > 1)\\n    ) {\\n      let newWidth = paintWidth,\\n        newHeight = paintHeight;\\n      if (widthScale > 2 && paintWidth > 1) {\\n        \u002F\u002F See bug 1820511 (Windows specific bug).\\n        \u002F\u002F TODO: once the above bug is fixed we could revert to:\\n        \u002F\u002F newWidth = Math.ceil(paintWidth \u002F 2);\\n        newWidth =\\n          paintWidth >= 16384\\n            ? Math.floor(paintWidth \u002F 2) - 1 || 1\\n            : Math.ceil(paintWidth \u002F 2);\\n        widthScale \u002F= paintWidth \u002F newWidth;\\n      }\\n      if (heightScale > 2 && paintHeight > 1) {\\n        \u002F\u002F TODO: see the comment above.\\n        newHeight =\\n          paintHeight >= 16384\\n            ? Math.floor(paintHeight \u002F 2) - 1 || 1\\n            : Math.ceil(paintHeight) \u002F 2;\\n        heightScale \u002F= paintHeight \u002F newHeight;\\n      }\\n      tmpCanvas = this.cachedCanvases.getCanvas(\\n        tmpCanvasId,\\n        newWidth,\\n        newHeight\\n      );\\n      tmpCtx = tmpCanvas.context;\\n      tmpCtx.clearRect(0, 0, newWidth, newHeight);\\n      tmpCtx.drawImage(\\n        img,\\n        0,\\n        0,\\n        paintWidth,\\n        paintHeight,\\n        0,\\n        0,\\n        newWidth,\\n        newHeight\\n      );\\n      img = tmpCanvas.canvas;\\n      paintWidth = newWidth;\\n      paintHeight = newHeight;\\n      tmpCanvasId = tmpCanvasId === \\\"prescale1\\\" ? \\\"prescale2\\\" : \\\"prescale1\\\";\\n    }\\n    return {\\n      img,\\n      paintWidth,\\n      paintHeight,\\n    };\\n  }\\n\\n  _createMaskCanvas(img) {\\n    const ctx = this.ctx;\\n    const { width, height } = img;\\n    const fillColor = this.current.fillColor;\\n    const isPatternFill = this.current.patternFill;\\n    const currentTransform = getCurrentTransform(ctx);\\n\\n    let cache, cacheKey, scaled, maskCanvas;\\n    if ((img.bitmap || img.data) && img.count > 1) {\\n      const mainKey = img.bitmap || img.data.buffer;\\n      \u002F\u002F We're reusing the same image several times, so we can cache it.\\n      \u002F\u002F In case we've a pattern fill we just keep the scaled version of\\n      \u002F\u002F the image.\\n      \u002F\u002F Only the scaling part matters, the translation part is just used\\n      \u002F\u002F to compute offsets (but not when filling patterns see #15573).\\n      \u002F\u002F TODO: handle the case of a pattern fill if it's possible.\\n      cacheKey = JSON.stringify(\\n        isPatternFill\\n          ? currentTransform\\n          : [currentTransform.slice(0, 4), fillColor]\\n      );\\n\\n      cache = this._cachedBitmapsMap.get(mainKey);\\n      if (!cache) {\\n        cache = new Map();\\n        this._cachedBitmapsMap.set(mainKey, cache);\\n      }\\n      const cachedImage = cache.get(cacheKey);\\n      if (cachedImage && !isPatternFill) {\\n        const offsetX = Math.round(\\n          Math.min(currentTransform[0], currentTransform[2]) +\\n            currentTransform[4]\\n        );\\n        const offsetY = Math.round(\\n          Math.min(currentTransform[1], currentTransform[3]) +\\n            currentTransform[5]\\n        );\\n        return {\\n          canvas: cachedImage,\\n          offsetX,\\n          offsetY,\\n        };\\n      }\\n      scaled = cachedImage;\\n    }\\n\\n    if (!scaled) {\\n      maskCanvas = this.cachedCanvases.getCanvas(\\\"maskCanvas\\\", width, height);\\n      putBinaryImageMask(maskCanvas.context, img);\\n    }\\n\\n    \u002F\u002F Create the mask canvas at the size it will be drawn at and also set\\n    \u002F\u002F its transform to match the current transform so if there are any\\n    \u002F\u002F patterns applied they will be applied relative to the correct\\n    \u002F\u002F transform.\\n\\n    let maskToCanvas = Util.transform(currentTransform, [\\n      1 \u002F width,\\n      0,\\n      0,\\n      -1 \u002F height,\\n      0,\\n      0,\\n    ]);\\n    maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\\n    const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox(\\n      [0, 0, width, height],\\n      maskToCanvas\\n    );\\n    const drawnWidth = Math.round(maxX - minX) || 1;\\n    const drawnHeight = Math.round(maxY - minY) || 1;\\n    const fillCanvas = this.cachedCanvases.getCanvas(\\n      \\\"fillCanvas\\\",\\n      drawnWidth,\\n      drawnHeight\\n    );\\n    const fillCtx = fillCanvas.context;\\n\\n    \u002F\u002F The offset will be the top-left cordinate mask.\\n    \u002F\u002F If objToCanvas is [a,b,c,d,e,f] then:\\n    \u002F\u002F   - offsetX = min(a, c) + e\\n    \u002F\u002F   - offsetY = min(b, d) + f\\n    const offsetX = minX;\\n    const offsetY = minY;\\n    fillCtx.translate(-offsetX, -offsetY);\\n    fillCtx.transform(...maskToCanvas);\\n\\n    if (!scaled) {\\n      \u002F\u002F Pre-scale if needed to improve image smoothing.\\n      scaled = this._scaleImage(\\n        maskCanvas.canvas,\\n        getCurrentTransformInverse(fillCtx)\\n      );\\n      scaled = scaled.img;\\n      if (cache && isPatternFill) {\\n        cache.set(cacheKey, scaled);\\n      }\\n    }\\n\\n    fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(\\n      getCurrentTransform(fillCtx),\\n      img.interpolate\\n    );\\n\\n    drawImageAtIntegerCoords(\\n      fillCtx,\\n      scaled,\\n      0,\\n      0,\\n      scaled.width,\\n      scaled.height,\\n      0,\\n      0,\\n      width,\\n      height\\n    );\\n    fillCtx.globalCompositeOperation = \\\"source-in\\\";\\n\\n    const inverse = Util.transform(getCurrentTransformInverse(fillCtx), [\\n      1,\\n      0,\\n      0,\\n      1,\\n      -offsetX,\\n      -offsetY,\\n    ]);\\n    fillCtx.fillStyle = isPatternFill\\n      ? fillColor.getPattern(ctx, this, inverse, PathType.FILL)\\n      : fillColor;\\n\\n    fillCtx.fillRect(0, 0, width, height);\\n\\n    if (cache && !isPatternFill) {\\n      \u002F\u002F The fill canvas is put in the cache associated to the mask image\\n      \u002F\u002F so we must remove from the cached canvas: it mustn't be used again.\\n      this.cachedCanvases.delete(\\\"fillCanvas\\\");\\n      cache.set(cacheKey, fillCanvas.canvas);\\n    }\\n\\n    \u002F\u002F Round the offsets to avoid drawing fractional pixels.\\n    return {\\n      canvas: fillCanvas.canvas,\\n      offsetX: Math.round(offsetX),\\n      offsetY: Math.round(offsetY),\\n    };\\n  }\\n\\n  \u002F\u002F Graphics state\\n  setLineWidth(width) {\\n    if (width !== this.current.lineWidth) {\\n      this._cachedScaleForStroking[0] = -1;\\n    }\\n    this.current.lineWidth = width;\\n    this.ctx.lineWidth = width;\\n  }\\n\\n  setLineCap(style) {\\n    this.ctx.lineCap = LINE_CAP_STYLES[style];\\n  }\\n\\n  setLineJoin(style) {\\n    this.ctx.lineJoin = LINE_JOIN_STYLES[style];\\n  }\\n\\n  setMiterLimit(limit) {\\n    this.ctx.miterLimit = limit;\\n  }\\n\\n  setDash(dashArray, dashPhase) {\\n    const ctx = this.ctx;\\n    if (ctx.setLineDash !== undefined) {\\n      ctx.setLineDash(dashArray);\\n      ctx.lineDashOffset = dashPhase;\\n    }\\n  }\\n\\n  setRenderingIntent(intent) {\\n    \u002F\u002F This operation is ignored since we haven't found a use case for it yet.\\n  }\\n\\n  setFlatness(flatness) {\\n    \u002F\u002F This operation is ignored since we haven't found a use case for it yet.\\n  }\\n\\n  setGState(states) {\\n    for (const [key, value] of states) {\\n      switch (key) {\\n        case \\\"LW\\\":\\n          this.setLineWidth(value);\\n          break;\\n        case \\\"LC\\\":\\n          this.setLineCap(value);\\n          break;\\n        case \\\"LJ\\\":\\n          this.setLineJoin(value);\\n          break;\\n        case \\\"ML\\\":\\n          this.setMiterLimit(value);\\n          break;\\n        case \\\"D\\\":\\n          this.setDash(value[0], value[1]);\\n          break;\\n        case \\\"RI\\\":\\n          this.setRenderingIntent(value);\\n          break;\\n        case \\\"FL\\\":\\n          this.setFlatness(value);\\n          break;\\n        case \\\"Font\\\":\\n          this.setFont(value[0], value[1]);\\n          break;\\n        case \\\"CA\\\":\\n          this.current.strokeAlpha = value;\\n          break;\\n        case \\\"ca\\\":\\n          this.current.fillAlpha = value;\\n          this.ctx.globalAlpha = value;\\n          break;\\n        case \\\"BM\\\":\\n          this.ctx.globalCompositeOperation = value;\\n          break;\\n        case \\\"SMask\\\":\\n          this.current.activeSMask = value ? this.tempSMask : null;\\n          this.tempSMask = null;\\n          this.checkSMaskState();\\n          break;\\n        case \\\"TR\\\":\\n          this.ctx.filter = this.current.transferMaps =\\n            this.filterFactory.addFilter(value);\\n          break;\\n      }\\n    }\\n  }\\n\\n  get inSMaskMode() {\\n    return !!this.suspendedCtx;\\n  }\\n\\n  checkSMaskState() {\\n    const inSMaskMode = this.inSMaskMode;\\n    if (this.current.activeSMask && !inSMaskMode) {\\n      this.beginSMaskMode();\\n    } else if (!this.current.activeSMask && inSMaskMode) {\\n      this.endSMaskMode();\\n    }\\n    \u002F\u002F Else, the state is okay and nothing needs to be done.\\n  }\\n\\n  \u002F**\\n   * Soft mask mode takes the current main drawing canvas and replaces it with\\n   * a temporary canvas. Any drawing operations that happen on the temporary\\n   * canvas need to be composed with the main canvas that was suspended (see\\n   * `compose()`). The temporary canvas also duplicates many of its operations\\n   * on the suspended canvas to keep them in sync, so that when the soft mask\\n   * mode ends any clipping paths or transformations will still be active and in\\n   * the right order on the canvas' graphics state stack.\\n   *\u002F\\n  beginSMaskMode() {\\n    if (this.inSMaskMode) {\\n      throw new Error(\\\"beginSMaskMode called while already in smask mode\\\");\\n    }\\n    const drawnWidth = this.ctx.canvas.width;\\n    const drawnHeight = this.ctx.canvas.height;\\n    const cacheId = \\\"smaskGroupAt\\\" + this.groupLevel;\\n    const scratchCanvas = this.cachedCanvases.getCanvas(\\n      cacheId,\\n      drawnWidth,\\n      drawnHeight\\n    );\\n    this.suspendedCtx = this.ctx;\\n    this.ctx = scratchCanvas.context;\\n    const ctx = this.ctx;\\n    ctx.setTransform(...getCurrentTransform(this.suspendedCtx));\\n    copyCtxState(this.suspendedCtx, ctx);\\n    mirrorContextOperations(ctx, this.suspendedCtx);\\n\\n    this.setGState([\\n      [\\\"BM\\\", \\\"source-over\\\"],\\n      [\\\"ca\\\", 1],\\n      [\\\"CA\\\", 1],\\n    ]);\\n  }\\n\\n  endSMaskMode() {\\n    if (!this.inSMaskMode) {\\n      throw new Error(\\\"endSMaskMode called while not in smask mode\\\");\\n    }\\n    \u002F\u002F The soft mask is done, now restore the suspended canvas as the main\\n    \u002F\u002F drawing canvas.\\n    this.ctx._removeMirroring();\\n    copyCtxState(this.ctx, this.suspendedCtx);\\n    this.ctx = this.suspendedCtx;\\n\\n    this.suspendedCtx = null;\\n  }\\n\\n  compose(dirtyBox) {\\n    if (!this.current.activeSMask) {\\n      return;\\n    }\\n\\n    if (!dirtyBox) {\\n      dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\\n    } else {\\n      dirtyBox[0] = Math.floor(dirtyBox[0]);\\n      dirtyBox[1] = Math.floor(dirtyBox[1]);\\n      dirtyBox[2] = Math.ceil(dirtyBox[2]);\\n      dirtyBox[3] = Math.ceil(dirtyBox[3]);\\n    }\\n    const smask = this.current.activeSMask;\\n    const suspendedCtx = this.suspendedCtx;\\n\\n    this.composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\\n    \u002F\u002F Whatever was drawn has been moved to the suspended canvas, now clear it\\n    \u002F\u002F out of the current canvas.\\n    this.ctx.save();\\n    this.ctx.setTransform(1, 0, 0, 1, 0, 0);\\n    this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\\n    this.ctx.restore();\\n  }\\n\\n  composeSMask(ctx, smask, layerCtx, layerBox) {\\n    const layerOffsetX = layerBox[0];\\n    const layerOffsetY = layerBox[1];\\n    const layerWidth = layerBox[2] - layerOffsetX;\\n    const layerHeight = layerBox[3] - layerOffsetY;\\n    if (layerWidth === 0 || layerHeight === 0) {\\n      return;\\n    }\\n    this.genericComposeSMask(\\n      smask.context,\\n      layerCtx,\\n      layerWidth,\\n      layerHeight,\\n      smask.subtype,\\n      smask.backdrop,\\n      smask.transferMap,\\n      layerOffsetX,\\n      layerOffsetY,\\n      smask.offsetX,\\n      smask.offsetY\\n    );\\n    ctx.save();\\n    ctx.globalAlpha = 1;\\n    ctx.globalCompositeOperation = \\\"source-over\\\";\\n    ctx.setTransform(1, 0, 0, 1, 0, 0);\\n    ctx.drawImage(layerCtx.canvas, 0, 0);\\n    ctx.restore();\\n  }\\n\\n  genericComposeSMask(\\n    maskCtx,\\n    layerCtx,\\n    width,\\n    height,\\n    subtype,\\n    backdrop,\\n    transferMap,\\n    layerOffsetX,\\n    layerOffsetY,\\n    maskOffsetX,\\n    maskOffsetY\\n  ) {\\n    let maskCanvas = maskCtx.canvas;\\n    let maskX = layerOffsetX - maskOffsetX;\\n    let maskY = layerOffsetY - maskOffsetY;\\n\\n    if (backdrop) {\\n      if (\\n        maskX \u003C 0 ||\\n        maskY \u003C 0 ||\\n        maskX + width > maskCanvas.width ||\\n        maskY + height > maskCanvas.height\\n      ) {\\n        const canvas = this.cachedCanvases.getCanvas(\\n          \\\"maskExtension\\\",\\n          width,\\n          height\\n        );\\n        const ctx = canvas.context;\\n        ctx.drawImage(maskCanvas, -maskX, -maskY);\\n        if (backdrop.some(c => c !== 0)) {\\n          ctx.globalCompositeOperation = \\\"destination-atop\\\";\\n          ctx.fillStyle = Util.makeHexColor(...backdrop);\\n          ctx.fillRect(0, 0, width, height);\\n          ctx.globalCompositeOperation = \\\"source-over\\\";\\n        }\\n\\n        maskCanvas = canvas.canvas;\\n        maskX = maskY = 0;\\n      } else if (backdrop.some(c => c !== 0)) {\\n        maskCtx.save();\\n        maskCtx.globalAlpha = 1;\\n        maskCtx.setTransform(1, 0, 0, 1, 0, 0);\\n        const clip = new Path2D();\\n        clip.rect(maskX, maskY, width, height);\\n        maskCtx.clip(clip);\\n        maskCtx.globalCompositeOperation = \\\"destination-atop\\\";\\n        maskCtx.fillStyle = Util.makeHexColor(...backdrop);\\n        maskCtx.fillRect(maskX, maskY, width, height);\\n        maskCtx.restore();\\n      }\\n    }\\n\\n    layerCtx.save();\\n    layerCtx.globalAlpha = 1;\\n    layerCtx.setTransform(1, 0, 0, 1, 0, 0);\\n\\n    if (subtype === \\\"Alpha\\\" && transferMap) {\\n      layerCtx.filter = this.filterFactory.addAlphaFilter(transferMap);\\n    } else if (subtype === \\\"Luminosity\\\") {\\n      layerCtx.filter = this.filterFactory.addLuminosityFilter(transferMap);\\n    }\\n\\n    const clip = new Path2D();\\n    clip.rect(layerOffsetX, layerOffsetY, width, height);\\n    layerCtx.clip(clip);\\n    layerCtx.globalCompositeOperation = \\\"destination-in\\\";\\n    layerCtx.drawImage(\\n      maskCanvas,\\n      maskX,\\n      maskY,\\n      width,\\n      height,\\n      layerOffsetX,\\n      layerOffsetY,\\n      width,\\n      height\\n    );\\n    layerCtx.restore();\\n  }\\n\\n  save() {\\n    if (this.inSMaskMode) {\\n      \u002F\u002F SMask mode may be turned on\u002Foff causing us to lose graphics state.\\n      \u002F\u002F Copy the temporary canvas state to the main(suspended) canvas to keep\\n      \u002F\u002F it in sync.\\n      copyCtxState(this.ctx, this.suspendedCtx);\\n      \u002F\u002F Don't bother calling save on the temporary canvas since state is not\\n      \u002F\u002F saved there.\\n      this.suspendedCtx.save();\\n    } else {\\n      this.ctx.save();\\n    }\\n    const old = this.current;\\n    this.stateStack.push(old);\\n    this.current = old.clone();\\n  }\\n\\n  restore() {\\n    if (this.stateStack.length === 0 && this.inSMaskMode) {\\n      this.endSMaskMode();\\n    }\\n    if (this.stateStack.length !== 0) {\\n      this.current = this.stateStack.pop();\\n      if (this.inSMaskMode) {\\n        \u002F\u002F Graphics state is stored on the main(suspended) canvas. Restore its\\n        \u002F\u002F state then copy it over to the temporary canvas.\\n        this.suspendedCtx.restore();\\n        copyCtxState(this.suspendedCtx, this.ctx);\\n      } else {\\n        this.ctx.restore();\\n      }\\n      this.checkSMaskState();\\n\\n      \u002F\u002F Ensure that the clipping path is reset (fixes issue6413.pdf).\\n      this.pendingClip = null;\\n\\n      this._cachedScaleForStroking[0] = -1;\\n      this._cachedGetSinglePixelWidth = null;\\n    }\\n  }\\n\\n  transform(a, b, c, d, e, f) {\\n    this.ctx.transform(a, b, c, d, e, f);\\n\\n    this._cachedScaleForStroking[0] = -1;\\n    this._cachedGetSinglePixelWidth = null;\\n  }\\n\\n  \u002F\u002F Path\\n  constructPath(ops, args, minMax) {\\n    const ctx = this.ctx;\\n    const current = this.current;\\n    let x = current.x,\\n      y = current.y;\\n    let startX, startY;\\n    const currentTransform = getCurrentTransform(ctx);\\n\\n    \u002F\u002F Most of the time the current transform is a scaling matrix\\n    \u002F\u002F so we don't need to transform points before computing min\u002Fmax:\\n    \u002F\u002F we can compute min\u002Fmax first and then smartly \\\"apply\\\" the\\n    \u002F\u002F transform (see Util.scaleMinMax).\\n    \u002F\u002F For rectangle, moveTo and lineTo, min\u002Fmax are computed in the\\n    \u002F\u002F worker (see evaluator.js).\\n    const isScalingMatrix =\\n      (currentTransform[0] === 0 && currentTransform[3] === 0) ||\\n      (currentTransform[1] === 0 && currentTransform[2] === 0);\\n    const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null;\\n\\n    for (let i = 0, j = 0, ii = ops.length; i \u003C ii; i++) {\\n      switch (ops[i] | 0) {\\n        case OPS.rectangle:\\n          x = args[j++];\\n          y = args[j++];\\n          const width = args[j++];\\n          const height = args[j++];\\n\\n          const xw = x + width;\\n          const yh = y + height;\\n          ctx.moveTo(x, y);\\n          if (width === 0 || height === 0) {\\n            ctx.lineTo(xw, yh);\\n          } else {\\n            ctx.lineTo(xw, y);\\n            ctx.lineTo(xw, yh);\\n            ctx.lineTo(x, yh);\\n          }\\n          if (!isScalingMatrix) {\\n            current.updateRectMinMax(currentTransform, [x, y, xw, yh]);\\n          }\\n          ctx.closePath();\\n          break;\\n        case OPS.moveTo:\\n          x = args[j++];\\n          y = args[j++];\\n          ctx.moveTo(x, y);\\n          if (!isScalingMatrix) {\\n            current.updatePathMinMax(currentTransform, x, y);\\n          }\\n          break;\\n        case OPS.lineTo:\\n          x = args[j++];\\n          y = args[j++];\\n          ctx.lineTo(x, y);\\n          if (!isScalingMatrix) {\\n            current.updatePathMinMax(currentTransform, x, y);\\n          }\\n          break;\\n        case OPS.curveTo:\\n          startX = x;\\n          startY = y;\\n          x = args[j + 4];\\n          y = args[j + 5];\\n          ctx.bezierCurveTo(\\n            args[j],\\n            args[j + 1],\\n            args[j + 2],\\n            args[j + 3],\\n            x,\\n            y\\n          );\\n          current.updateCurvePathMinMax(\\n            currentTransform,\\n            startX,\\n            startY,\\n            args[j],\\n            args[j + 1],\\n            args[j + 2],\\n            args[j + 3],\\n            x,\\n            y,\\n            minMaxForBezier\\n          );\\n          j += 6;\\n          break;\\n        case OPS.curveTo2:\\n          startX = x;\\n          startY = y;\\n          ctx.bezierCurveTo(\\n            x,\\n            y,\\n            args[j],\\n            args[j + 1],\\n            args[j + 2],\\n            args[j + 3]\\n          );\\n          current.updateCurvePathMinMax(\\n            currentTransform,\\n            startX,\\n            startY,\\n            x,\\n            y,\\n            args[j],\\n            args[j + 1],\\n            args[j + 2],\\n            args[j + 3],\\n            minMaxForBezier\\n          );\\n          x = args[j + 2];\\n          y = args[j + 3];\\n          j += 4;\\n          break;\\n        case OPS.curveTo3:\\n          startX = x;\\n          startY = y;\\n          x = args[j + 2];\\n          y = args[j + 3];\\n          ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\\n          current.updateCurvePathMinMax(\\n            currentTransform,\\n            startX,\\n            startY,\\n            args[j],\\n            args[j + 1],\\n            x,\\n            y,\\n            x,\\n            y,\\n            minMaxForBezier\\n          );\\n          j += 4;\\n          break;\\n        case OPS.closePath:\\n          ctx.closePath();\\n          break;\\n      }\\n    }\\n\\n    if (isScalingMatrix) {\\n      current.updateScalingPathMinMax(currentTransform, minMaxForBezier);\\n    }\\n\\n    current.setCurrentPoint(x, y);\\n  }\\n\\n  closePath() {\\n    this.ctx.closePath();\\n  }\\n\\n  stroke(consumePath = true) {\\n    const ctx = this.ctx;\\n    const strokeColor = this.current.strokeColor;\\n    \u002F\u002F For stroke we want to temporarily change the global alpha to the\\n    \u002F\u002F stroking alpha.\\n    ctx.globalAlpha = this.current.strokeAlpha;\\n    if (this.contentVisible) {\\n      if (typeof strokeColor === \\\"object\\\" && strokeColor?.getPattern) {\\n        ctx.save();\\n        ctx.strokeStyle = strokeColor.getPattern(\\n          ctx,\\n          this,\\n          getCurrentTransformInverse(ctx),\\n          PathType.STROKE\\n        );\\n        this.rescaleAndStroke(\u002F* saveRestore *\u002F false);\\n        ctx.restore();\\n      } else {\\n        this.rescaleAndStroke(\u002F* saveRestore *\u002F true);\\n      }\\n    }\\n    if (consumePath) {\\n      this.consumePath(this.current.getClippedPathBoundingBox());\\n    }\\n    \u002F\u002F Restore the global alpha to the fill alpha\\n    ctx.globalAlpha = this.current.fillAlpha;\\n  }\\n\\n  closeStroke() {\\n    this.closePath();\\n    this.stroke();\\n  }\\n\\n  fill(consumePath = true) {\\n    const ctx = this.ctx;\\n    const fillColor = this.current.fillColor;\\n    const isPatternFill = this.current.patternFill;\\n    let needRestore = false;\\n\\n    if (isPatternFill) {\\n      ctx.save();\\n      ctx.fillStyle = fillColor.getPattern(\\n        ctx,\\n        this,\\n        getCurrentTransformInverse(ctx),\\n        PathType.FILL\\n      );\\n      needRestore = true;\\n    }\\n\\n    const intersect = this.current.getClippedPathBoundingBox();\\n    if (this.contentVisible && intersect !== null) {\\n      if (this.pendingEOFill) {\\n        ctx.fill(\\\"evenodd\\\");\\n        this.pendingEOFill = false;\\n      } else {\\n        ctx.fill();\\n      }\\n    }\\n\\n    if (needRestore) {\\n      ctx.restore();\\n    }\\n    if (consumePath) {\\n      this.consumePath(intersect);\\n    }\\n  }\\n\\n  eoFill() {\\n    this.pendingEOFill = true;\\n    this.fill();\\n  }\\n\\n  fillStroke() {\\n    this.fill(false);\\n    this.stroke(false);\\n\\n    this.consumePath();\\n  }\\n\\n  eoFillStroke() {\\n    this.pendingEOFill = true;\\n    this.fillStroke();\\n  }\\n\\n  closeFillStroke() {\\n    this.closePath();\\n    this.fillStroke();\\n  }\\n\\n  closeEOFillStroke() {\\n    this.pendingEOFill = true;\\n    this.closePath();\\n    this.fillStroke();\\n  }\\n\\n  endPath() {\\n    this.consumePath();\\n  }\\n\\n  \u002F\u002F Clipping\\n  clip() {\\n    this.pendingClip = NORMAL_CLIP;\\n  }\\n\\n  eoClip() {\\n    this.pendingClip = EO_CLIP;\\n  }\\n\\n  \u002F\u002F Text\\n  beginText() {\\n    this.current.textMatrix = IDENTITY_MATRIX;\\n    this.current.textMatrixScale = 1;\\n    this.current.x = this.current.lineX = 0;\\n    this.current.y = this.current.lineY = 0;\\n  }\\n\\n  endText() {\\n    const paths = this.pendingTextPaths;\\n    const ctx = this.ctx;\\n    if (paths === undefined) {\\n      ctx.beginPath();\\n      return;\\n    }\\n\\n    ctx.save();\\n    ctx.beginPath();\\n    for (const path of paths) {\\n      ctx.setTransform(...path.transform);\\n      ctx.translate(path.x, path.y);\\n      path.addToPath(ctx, path.fontSize);\\n    }\\n    ctx.restore();\\n    ctx.clip();\\n    ctx.beginPath();\\n    delete this.pendingTextPaths;\\n  }\\n\\n  setCharSpacing(spacing) {\\n    this.current.charSpacing = spacing;\\n  }\\n\\n  setWordSpacing(spacing) {\\n    this.current.wordSpacing = spacing;\\n  }\\n\\n  setHScale(scale) {\\n    this.current.textHScale = scale \u002F 100;\\n  }\\n\\n  setLeading(leading) {\\n    this.current.leading = -leading;\\n  }\\n\\n  setFont(fontRefName, size) {\\n    const fontObj = this.commonObjs.get(fontRefName);\\n    const current = this.current;\\n\\n    if (!fontObj) {\\n      throw new Error(`Can't find font for ${fontRefName}`);\\n    }\\n    current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\\n\\n    \u002F\u002F A valid matrix needs all main diagonal elements to be non-zero\\n    \u002F\u002F This also ensures we bypass FF bugzilla bug #719844.\\n    if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\\n      warn(\\\"Invalid font matrix for font \\\" + fontRefName);\\n    }\\n\\n    \u002F\u002F The spec for Tf (setFont) says that 'size' specifies the font 'scale',\\n    \u002F\u002F and in some docs this can be negative (inverted x-y axes).\\n    if (size \u003C 0) {\\n      size = -size;\\n      current.fontDirection = -1;\\n    } else {\\n      current.fontDirection = 1;\\n    }\\n\\n    this.current.font = fontObj;\\n    this.current.fontSize = size;\\n\\n    if (fontObj.isType3Font) {\\n      return; \u002F\u002F we don't need ctx.font for Type3 fonts\\n    }\\n\\n    const name = fontObj.loadedName || \\\"sans-serif\\\";\\n    const typeface =\\n      fontObj.systemFontInfo?.css || `\\\"${name}\\\", ${fontObj.fallbackName}`;\\n\\n    let bold = \\\"normal\\\";\\n    if (fontObj.black) {\\n      bold = \\\"900\\\";\\n    } else if (fontObj.bold) {\\n      bold = \\\"bold\\\";\\n    }\\n    const italic = fontObj.italic ? \\\"italic\\\" : \\\"normal\\\";\\n\\n    \u002F\u002F Some font backends cannot handle fonts below certain size.\\n    \u002F\u002F Keeping the font at minimal size and using the fontSizeScale to change\\n    \u002F\u002F the current transformation matrix before the fillText\u002FstrokeText.\\n    \u002F\u002F See https:\u002F\u002Fbugzilla.mozilla.org\u002Fshow_bug.cgi?id=726227\\n    let browserFontSize = size;\\n    if (size \u003C MIN_FONT_SIZE) {\\n      browserFontSize = MIN_FONT_SIZE;\\n    } else if (size > MAX_FONT_SIZE) {\\n      browserFontSize = MAX_FONT_SIZE;\\n    }\\n    this.current.fontSizeScale = size \u002F browserFontSize;\\n\\n    this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\\n  }\\n\\n  setTextRenderingMode(mode) {\\n    this.current.textRenderingMode = mode;\\n  }\\n\\n  setTextRise(rise) {\\n    this.current.textRise = rise;\\n  }\\n\\n  moveText(x, y) {\\n    this.current.x = this.current.lineX += x;\\n    this.current.y = this.current.lineY += y;\\n  }\\n\\n  setLeadingMoveText(x, y) {\\n    this.setLeading(-y);\\n    this.moveText(x, y);\\n  }\\n\\n  setTextMatrix(a, b, c, d, e, f) {\\n    this.current.textMatrix = [a, b, c, d, e, f];\\n    this.current.textMatrixScale = Math.hypot(a, b);\\n\\n    this.current.x = this.current.lineX = 0;\\n    this.current.y = this.current.lineY = 0;\\n  }\\n\\n  nextLine() {\\n    this.moveText(0, this.current.leading);\\n  }\\n\\n  paintChar(character, x, y, patternTransform) {\\n    const ctx = this.ctx;\\n    const current = this.current;\\n    const font = current.font;\\n    const textRenderingMode = current.textRenderingMode;\\n    const fontSize = current.fontSize \u002F current.fontSizeScale;\\n    const fillStrokeMode =\\n      textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\\n    const isAddToPathSet = !!(\\n      textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\\n    );\\n    const patternFill = current.patternFill && !font.missingFile;\\n\\n    let addToPath;\\n    if (font.disableFontFace || isAddToPathSet || patternFill) {\\n      addToPath = font.getPathGenerator(this.commonObjs, character);\\n    }\\n\\n    if (font.disableFontFace || patternFill) {\\n      ctx.save();\\n      ctx.translate(x, y);\\n      ctx.beginPath();\\n      addToPath(ctx, fontSize);\\n      if (patternTransform) {\\n        ctx.setTransform(...patternTransform);\\n      }\\n      if (\\n        fillStrokeMode === TextRenderingMode.FILL ||\\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\\n      ) {\\n        ctx.fill();\\n      }\\n      if (\\n        fillStrokeMode === TextRenderingMode.STROKE ||\\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\\n      ) {\\n        ctx.stroke();\\n      }\\n      ctx.restore();\\n    } else {\\n      if (\\n        fillStrokeMode === TextRenderingMode.FILL ||\\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\\n      ) {\\n        ctx.fillText(character, x, y);\\n      }\\n      if (\\n        fillStrokeMode === TextRenderingMode.STROKE ||\\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\\n      ) {\\n        ctx.strokeText(character, x, y);\\n      }\\n    }\\n\\n    if (isAddToPathSet) {\\n      const paths = (this.pendingTextPaths ||= []);\\n      paths.push({\\n        transform: getCurrentTransform(ctx),\\n        x,\\n        y,\\n        fontSize,\\n        addToPath,\\n      });\\n    }\\n  }\\n\\n  get isFontSubpixelAAEnabled() {\\n    \u002F\u002F Checks if anti-aliasing is enabled when scaled text is painted.\\n    \u002F\u002F On Windows GDI scaled fonts looks bad.\\n    const { context: ctx } = this.cachedCanvases.getCanvas(\\n      \\\"isFontSubpixelAAEnabled\\\",\\n      10,\\n      10\\n    );\\n    ctx.scale(1.5, 1);\\n    ctx.fillText(\\\"I\\\", 0, 10);\\n    const data = ctx.getImageData(0, 0, 10, 10).data;\\n    let enabled = false;\\n    for (let i = 3; i \u003C data.length; i += 4) {\\n      if (data[i] > 0 && data[i] \u003C 255) {\\n        enabled = true;\\n        break;\\n      }\\n    }\\n    return shadow(this, \\\"isFontSubpixelAAEnabled\\\", enabled);\\n  }\\n\\n  showText(glyphs) {\\n    const current = this.current;\\n    const font = current.font;\\n    if (font.isType3Font) {\\n      return this.showType3Text(glyphs);\\n    }\\n\\n    const fontSize = current.fontSize;\\n    if (fontSize === 0) {\\n      return undefined;\\n    }\\n\\n    const ctx = this.ctx;\\n    const fontSizeScale = current.fontSizeScale;\\n    const charSpacing = current.charSpacing;\\n    const wordSpacing = current.wordSpacing;\\n    const fontDirection = current.fontDirection;\\n    const textHScale = current.textHScale * fontDirection;\\n    const glyphsLength = glyphs.length;\\n    const vertical = font.vertical;\\n    const spacingDir = vertical ? 1 : -1;\\n    const defaultVMetrics = font.defaultVMetrics;\\n    const widthAdvanceScale = fontSize * current.fontMatrix[0];\\n\\n    const simpleFillText =\\n      current.textRenderingMode === TextRenderingMode.FILL &&\\n      !font.disableFontFace &&\\n      !current.patternFill;\\n\\n    ctx.save();\\n    ctx.transform(...current.textMatrix);\\n    ctx.translate(current.x, current.y + current.textRise);\\n\\n    if (fontDirection > 0) {\\n      ctx.scale(textHScale, -1);\\n    } else {\\n      ctx.scale(textHScale, 1);\\n    }\\n\\n    let patternTransform;\\n    if (current.patternFill) {\\n      ctx.save();\\n      const pattern = current.fillColor.getPattern(\\n        ctx,\\n        this,\\n        getCurrentTransformInverse(ctx),\\n        PathType.FILL\\n      );\\n      patternTransform = getCurrentTransform(ctx);\\n      ctx.restore();\\n      ctx.fillStyle = pattern;\\n    }\\n\\n    let lineWidth = current.lineWidth;\\n    const scale = current.textMatrixScale;\\n    if (scale === 0 || lineWidth === 0) {\\n      const fillStrokeMode =\\n        current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\\n      if (\\n        fillStrokeMode === TextRenderingMode.STROKE ||\\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\\n      ) {\\n        lineWidth = this.getSinglePixelWidth();\\n      }\\n    } else {\\n      lineWidth \u002F= scale;\\n    }\\n\\n    if (fontSizeScale !== 1.0) {\\n      ctx.scale(fontSizeScale, fontSizeScale);\\n      lineWidth \u002F= fontSizeScale;\\n    }\\n\\n    ctx.lineWidth = lineWidth;\\n\\n    if (font.isInvalidPDFjsFont) {\\n      const chars = [];\\n      let width = 0;\\n      for (const glyph of glyphs) {\\n        chars.push(glyph.unicode);\\n        width += glyph.width;\\n      }\\n      ctx.fillText(chars.join(\\\"\\\"), 0, 0);\\n      current.x += width * widthAdvanceScale * textHScale;\\n      ctx.restore();\\n      this.compose();\\n\\n      return undefined;\\n    }\\n\\n    let x = 0,\\n      i;\\n    for (i = 0; i \u003C glyphsLength; ++i) {\\n      const glyph = glyphs[i];\\n      if (typeof glyph === \\\"number\\\") {\\n        x += (spacingDir * glyph * fontSize) \u002F 1000;\\n        continue;\\n      }\\n\\n      let restoreNeeded = false;\\n      const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\\n      const character = glyph.fontChar;\\n      const accent = glyph.accent;\\n      let scaledX, scaledY;\\n      let width = glyph.width;\\n      if (vertical) {\\n        const vmetric = glyph.vmetric || defaultVMetrics;\\n        const vx =\\n          -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\\n        const vy = vmetric[2] * widthAdvanceScale;\\n\\n        width = vmetric ? -vmetric[0] : width;\\n        scaledX = vx \u002F fontSizeScale;\\n        scaledY = (x + vy) \u002F fontSizeScale;\\n      } else {\\n        scaledX = x \u002F fontSizeScale;\\n        scaledY = 0;\\n      }\\n\\n      if (font.remeasure && width > 0) {\\n        \u002F\u002F Some standard fonts may not have the exact width: rescale per\\n        \u002F\u002F character if measured width is greater than expected glyph width\\n        \u002F\u002F and subpixel-aa is enabled, otherwise just center the glyph.\\n        const measuredWidth =\\n          ((ctx.measureText(character).width * 1000) \u002F fontSize) *\\n          fontSizeScale;\\n        if (width \u003C measuredWidth && this.isFontSubpixelAAEnabled) {\\n          const characterScaleX = width \u002F measuredWidth;\\n          restoreNeeded = true;\\n          ctx.save();\\n          ctx.scale(characterScaleX, 1);\\n          scaledX \u002F= characterScaleX;\\n        } else if (width !== measuredWidth) {\\n          scaledX +=\\n            (((width - measuredWidth) \u002F 2000) * fontSize) \u002F fontSizeScale;\\n        }\\n      }\\n\\n      \u002F\u002F Only attempt to draw the glyph if it is actually in the embedded font\\n      \u002F\u002F file or if there isn't a font file so the fallback font is shown.\\n      if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\\n        if (simpleFillText && !accent) {\\n          \u002F\u002F common case\\n          ctx.fillText(character, scaledX, scaledY);\\n        } else {\\n          this.paintChar(character, scaledX, scaledY, patternTransform);\\n          if (accent) {\\n            const scaledAccentX =\\n              scaledX + (fontSize * accent.offset.x) \u002F fontSizeScale;\\n            const scaledAccentY =\\n              scaledY - (fontSize * accent.offset.y) \u002F fontSizeScale;\\n            this.paintChar(\\n              accent.fontChar,\\n              scaledAccentX,\\n              scaledAccentY,\\n              patternTransform\\n            );\\n          }\\n        }\\n      }\\n\\n      const charWidth = vertical\\n        ? width * widthAdvanceScale - spacing * fontDirection\\n        : width * widthAdvanceScale + spacing * fontDirection;\\n      x += charWidth;\\n\\n      if (restoreNeeded) {\\n        ctx.restore();\\n      }\\n    }\\n    if (vertical) {\\n      current.y -= x;\\n    } else {\\n      current.x += x * textHScale;\\n    }\\n    ctx.restore();\\n    this.compose();\\n\\n    return undefined;\\n  }\\n\\n  showType3Text(glyphs) {\\n    \u002F\u002F Type3 fonts - each glyph is a \\\"mini-PDF\\\"\\n    const ctx = this.ctx;\\n    const current = this.current;\\n    const font = current.font;\\n    const fontSize = current.fontSize;\\n    const fontDirection = current.fontDirection;\\n    const spacingDir = font.vertical ? 1 : -1;\\n    const charSpacing = current.charSpacing;\\n    const wordSpacing = current.wordSpacing;\\n    const textHScale = current.textHScale * fontDirection;\\n    const fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\\n    const glyphsLength = glyphs.length;\\n    const isTextInvisible =\\n      current.textRenderingMode === TextRenderingMode.INVISIBLE;\\n    let i, glyph, width, spacingLength;\\n\\n    if (isTextInvisible || fontSize === 0) {\\n      return;\\n    }\\n    this._cachedScaleForStroking[0] = -1;\\n    this._cachedGetSinglePixelWidth = null;\\n\\n    ctx.save();\\n    ctx.transform(...current.textMatrix);\\n    ctx.translate(current.x, current.y);\\n\\n    ctx.scale(textHScale, fontDirection);\\n\\n    for (i = 0; i \u003C glyphsLength; ++i) {\\n      glyph = glyphs[i];\\n      if (typeof glyph === \\\"number\\\") {\\n        spacingLength = (spacingDir * glyph * fontSize) \u002F 1000;\\n        this.ctx.translate(spacingLength, 0);\\n        current.x += spacingLength * textHScale;\\n        continue;\\n      }\\n\\n      const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\\n      const operatorList = font.charProcOperatorList[glyph.operatorListId];\\n      if (!operatorList) {\\n        warn(`Type3 character \\\"${glyph.operatorListId}\\\" is not available.`);\\n        continue;\\n      }\\n      if (this.contentVisible) {\\n        this.processingType3 = glyph;\\n        this.save();\\n        ctx.scale(fontSize, fontSize);\\n        ctx.transform(...fontMatrix);\\n        this.executeOperatorList(operatorList);\\n        this.restore();\\n      }\\n\\n      const transformed = Util.applyTransform([glyph.width, 0], fontMatrix);\\n      width = transformed[0] * fontSize + spacing;\\n\\n      ctx.translate(width, 0);\\n      current.x += width * textHScale;\\n    }\\n    ctx.restore();\\n    this.processingType3 = null;\\n  }\\n\\n  \u002F\u002F Type3 fonts\\n  setCharWidth(xWidth, yWidth) {\\n    \u002F\u002F We can safely ignore this since the width should be the same\\n    \u002F\u002F as the width in the Widths array.\\n  }\\n\\n  setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\\n    this.ctx.rect(llx, lly, urx - llx, ury - lly);\\n    this.ctx.clip();\\n    this.endPath();\\n  }\\n\\n  \u002F\u002F Color\\n  getColorN_Pattern(IR) {\\n    let pattern;\\n    if (IR[0] === \\\"TilingPattern\\\") {\\n      const color = IR[1];\\n      const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\\n      const canvasGraphicsFactory = {\\n        createCanvasGraphics: ctx =>\\n          new CanvasGraphics(\\n            ctx,\\n            this.commonObjs,\\n            this.objs,\\n            this.canvasFactory,\\n            this.filterFactory,\\n            {\\n              optionalContentConfig: this.optionalContentConfig,\\n              markedContentStack: this.markedContentStack,\\n            }\\n          ),\\n      };\\n      pattern = new TilingPattern(\\n        IR,\\n        color,\\n        this.ctx,\\n        canvasGraphicsFactory,\\n        baseTransform\\n      );\\n    } else {\\n      pattern = this._getPattern(IR[1], IR[2]);\\n    }\\n    return pattern;\\n  }\\n\\n  setStrokeColorN() {\\n    this.current.strokeColor = this.getColorN_Pattern(arguments);\\n  }\\n\\n  setFillColorN() {\\n    this.current.fillColor = this.getColorN_Pattern(arguments);\\n    this.current.patternFill = true;\\n  }\\n\\n  setStrokeRGBColor(r, g, b) {\\n    const color = Util.makeHexColor(r, g, b);\\n    this.ctx.strokeStyle = color;\\n    this.current.strokeColor = color;\\n  }\\n\\n  setFillRGBColor(r, g, b) {\\n    const color = Util.makeHexColor(r, g, b);\\n    this.ctx.fillStyle = color;\\n    this.current.fillColor = color;\\n    this.current.patternFill = false;\\n  }\\n\\n  _getPattern(objId, matrix = null) {\\n    let pattern;\\n    if (this.cachedPatterns.has(objId)) {\\n      pattern = this.cachedPatterns.get(objId);\\n    } else {\\n      pattern = getShadingPattern(this.getObject(objId));\\n      this.cachedPatterns.set(objId, pattern);\\n    }\\n    if (matrix) {\\n      pattern.matrix = matrix;\\n    }\\n    return pattern;\\n  }\\n\\n  shadingFill(objId) {\\n    if (!this.contentVisible) {\\n      return;\\n    }\\n    const ctx = this.ctx;\\n\\n    this.save();\\n    const pattern = this._getPattern(objId);\\n    ctx.fillStyle = pattern.getPattern(\\n      ctx,\\n      this,\\n      getCurrentTransformInverse(ctx),\\n      PathType.SHADING\\n    );\\n\\n    const inv = getCurrentTransformInverse(ctx);\\n    if (inv) {\\n      const { width, height } = ctx.canvas;\\n      const [x0, y0, x1, y1] = Util.getAxialAlignedBoundingBox(\\n        [0, 0, width, height],\\n        inv\\n      );\\n\\n      this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\\n    } else {\\n      \u002F\u002F HACK to draw the gradient onto an infinite rectangle.\\n      \u002F\u002F PDF gradients are drawn across the entire image while\\n      \u002F\u002F Canvas only allows gradients to be drawn in a rectangle\\n      \u002F\u002F The following bug should allow us to remove this.\\n      \u002F\u002F https:\u002F\u002Fbugzilla.mozilla.org\u002Fshow_bug.cgi?id=664884\\n\\n      this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\\n    }\\n\\n    this.compose(this.current.getClippedPathBoundingBox());\\n    this.restore();\\n  }\\n\\n  \u002F\u002F Images\\n  beginInlineImage() {\\n    unreachable(\\\"Should not call beginInlineImage\\\");\\n  }\\n\\n  beginImageData() {\\n    unreachable(\\\"Should not call beginImageData\\\");\\n  }\\n\\n  paintFormXObjectBegin(matrix, bbox) {\\n    if (!this.contentVisible) {\\n      return;\\n    }\\n    this.save();\\n    this.baseTransformStack.push(this.baseTransform);\\n\\n    if (matrix) {\\n      this.transform(...matrix);\\n    }\\n    this.baseTransform = getCurrentTransform(this.ctx);\\n\\n    if (bbox) {\\n      const width = bbox[2] - bbox[0];\\n      const height = bbox[3] - bbox[1];\\n      this.ctx.rect(bbox[0], bbox[1], width, height);\\n      this.current.updateRectMinMax(getCurrentTransform(this.ctx), bbox);\\n      this.clip();\\n      this.endPath();\\n    }\\n  }\\n\\n  paintFormXObjectEnd() {\\n    if (!this.contentVisible) {\\n      return;\\n    }\\n    this.restore();\\n    this.baseTransform = this.baseTransformStack.pop();\\n  }\\n\\n  beginGroup(group) {\\n    if (!this.contentVisible) {\\n      return;\\n    }\\n\\n    this.save();\\n    \u002F\u002F If there's an active soft mask we don't want it enabled for the group, so\\n    \u002F\u002F clear it out. The mask and suspended canvas will be restored in endGroup.\\n    if (this.inSMaskMode) {\\n      this.endSMaskMode();\\n      this.current.activeSMask = null;\\n    }\\n\\n    const currentCtx = this.ctx;\\n    \u002F\u002F TODO non-isolated groups - according to Rik at adobe non-isolated\\n    \u002F\u002F group results aren't usually that different and they even have tools\\n    \u002F\u002F that ignore this setting. Notes from Rik on implementing:\\n    \u002F\u002F - When you encounter an transparency group, create a new canvas with\\n    \u002F\u002F the dimensions of the bbox\\n    \u002F\u002F - copy the content from the previous canvas to the new canvas\\n    \u002F\u002F - draw as usual\\n    \u002F\u002F - remove the backdrop alpha:\\n    \u002F\u002F alphaNew = 1 - (1 - alpha)\u002F(1 - alphaBackdrop) with 'alpha' the alpha\\n    \u002F\u002F value of your transparency group and 'alphaBackdrop' the alpha of the\\n    \u002F\u002F backdrop\\n    \u002F\u002F - remove background color:\\n    \u002F\u002F colorNew = color - alphaNew *colorBackdrop \u002F(1 - alphaNew)\\n    if (!group.isolated) {\\n      info(\\\"TODO: Support non-isolated groups.\\\");\\n    }\\n\\n    \u002F\u002F TODO knockout - supposedly possible with the clever use of compositing\\n    \u002F\u002F modes.\\n    if (group.knockout) {\\n      warn(\\\"Knockout groups not supported.\\\");\\n    }\\n\\n    const currentTransform = getCurrentTransform(currentCtx);\\n    if (group.matrix) {\\n      currentCtx.transform(...group.matrix);\\n    }\\n    if (!group.bbox) {\\n      throw new Error(\\\"Bounding box is required.\\\");\\n    }\\n\\n    \u002F\u002F Based on the current transform figure out how big the bounding box\\n    \u002F\u002F will actually be.\\n    let bounds = Util.getAxialAlignedBoundingBox(\\n      group.bbox,\\n      getCurrentTransform(currentCtx)\\n    );\\n    \u002F\u002F Clip the bounding box to the current canvas.\\n    const canvasBounds = [\\n      0,\\n      0,\\n      currentCtx.canvas.width,\\n      currentCtx.canvas.height,\\n    ];\\n    bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\\n    \u002F\u002F Use ceil in case we're between sizes so we don't create canvas that is\\n    \u002F\u002F too small and make the canvas at least 1x1 pixels.\\n    const offsetX = Math.floor(bounds[0]);\\n    const offsetY = Math.floor(bounds[1]);\\n    const drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\\n    const drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\\n\\n    this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\\n\\n    let cacheId = \\\"groupAt\\\" + this.groupLevel;\\n    if (group.smask) {\\n      \u002F\u002F Using two cache entries is case if masks are used one after another.\\n      cacheId += \\\"_smask_\\\" + (this.smaskCounter++ % 2);\\n    }\\n    const scratchCanvas = this.cachedCanvases.getCanvas(\\n      cacheId,\\n      drawnWidth,\\n      drawnHeight\\n    );\\n    const groupCtx = scratchCanvas.context;\\n\\n    \u002F\u002F Since we created a new canvas that is just the size of the bounding box\\n    \u002F\u002F we have to translate the group ctx.\\n    groupCtx.translate(-offsetX, -offsetY);\\n    groupCtx.transform(...currentTransform);\\n\\n    if (group.smask) {\\n      \u002F\u002F Saving state and cached mask to be used in setGState.\\n      this.smaskStack.push({\\n        canvas: scratchCanvas.canvas,\\n        context: groupCtx,\\n        offsetX,\\n        offsetY,\\n        subtype: group.smask.subtype,\\n        backdrop: group.smask.backdrop,\\n        transferMap: group.smask.transferMap || null,\\n        startTransformInverse: null, \u002F\u002F used during suspend operation\\n      });\\n    } else {\\n      \u002F\u002F Setup the current ctx so when the group is popped we draw it at the\\n      \u002F\u002F right location.\\n      currentCtx.setTransform(1, 0, 0, 1, 0, 0);\\n      currentCtx.translate(offsetX, offsetY);\\n      currentCtx.save();\\n    }\\n    \u002F\u002F The transparency group inherits all off the current graphics state\\n    \u002F\u002F except the blend mode, soft mask, and alpha constants.\\n    copyCtxState(currentCtx, groupCtx);\\n    this.ctx = groupCtx;\\n    this.setGState([\\n      [\\\"BM\\\", \\\"source-over\\\"],\\n      [\\\"ca\\\", 1],\\n      [\\\"CA\\\", 1],\\n    ]);\\n    this.groupStack.push(currentCtx);\\n    this.groupLevel++;\\n  }\\n\\n  endGroup(group) {\\n    if (!this.contentVisible) {\\n      return;\\n    }\\n    this.groupLevel--;\\n    const groupCtx = this.ctx;\\n    const ctx = this.groupStack.pop();\\n    this.ctx = ctx;\\n    \u002F\u002F Turn off image smoothing to avoid sub pixel interpolation which can\\n    \u002F\u002F look kind of blurry for some pdfs.\\n    this.ctx.imageSmoothingEnabled = false;\\n\\n    if (group.smask) {\\n      this.tempSMask = this.smaskStack.pop();\\n      this.restore();\\n    } else {\\n      this.ctx.restore();\\n      const currentMtx = getCurrentTransform(this.ctx);\\n      this.restore();\\n      this.ctx.save();\\n      this.ctx.setTransform(...currentMtx);\\n      const dirtyBox = Util.getAxialAlignedBoundingBox(\\n        [0, 0, groupCtx.canvas.width, groupCtx.canvas.height],\\n        currentMtx\\n      );\\n      this.ctx.drawImage(groupCtx.canvas, 0, 0);\\n      this.ctx.restore();\\n      this.compose(dirtyBox);\\n    }\\n  }\\n\\n  beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\\n    \u002F\u002F The annotations are drawn just after the page content.\\n    \u002F\u002F The page content drawing can potentially have set a transform,\\n    \u002F\u002F a clipping path, whatever...\\n    \u002F\u002F So in order to have something clean, we restore the initial state.\\n    this.#restoreInitialState();\\n    resetCtxToDefault(this.ctx);\\n\\n    this.ctx.save();\\n    this.save();\\n\\n    if (this.baseTransform) {\\n      this.ctx.setTransform(...this.baseTransform);\\n    }\\n\\n    if (rect) {\\n      const width = rect[2] - rect[0];\\n      const height = rect[3] - rect[1];\\n\\n      if (hasOwnCanvas && this.annotationCanvasMap) {\\n        transform = transform.slice();\\n        transform[4] -= rect[0];\\n        transform[5] -= rect[1];\\n\\n        rect = rect.slice();\\n        rect[0] = rect[1] = 0;\\n        rect[2] = width;\\n        rect[3] = height;\\n\\n        const [scaleX, scaleY] = Util.singularValueDecompose2dScale(\\n          getCurrentTransform(this.ctx)\\n        );\\n        const { viewportScale } = this;\\n        const canvasWidth = Math.ceil(\\n          width * this.outputScaleX * viewportScale\\n        );\\n        const canvasHeight = Math.ceil(\\n          height * this.outputScaleY * viewportScale\\n        );\\n\\n        this.annotationCanvas = this.canvasFactory.create(\\n          canvasWidth,\\n          canvasHeight\\n        );\\n        const { canvas, context } = this.annotationCanvas;\\n        this.annotationCanvasMap.set(id, canvas);\\n        this.annotationCanvas.savedCtx = this.ctx;\\n        this.ctx = context;\\n        this.ctx.save();\\n        this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);\\n\\n        resetCtxToDefault(this.ctx);\\n      } else {\\n        resetCtxToDefault(this.ctx);\\n\\n        this.ctx.rect(rect[0], rect[1], width, height);\\n        this.ctx.clip();\\n        this.endPath();\\n      }\\n    }\\n\\n    this.current = new CanvasExtraState(\\n      this.ctx.canvas.width,\\n      this.ctx.canvas.height\\n    );\\n\\n    this.transform(...transform);\\n    this.transform(...matrix);\\n  }\\n\\n  endAnnotation() {\\n    if (this.annotationCanvas) {\\n      this.ctx.restore();\\n      this.#drawFilter();\\n\\n      this.ctx = this.annotationCanvas.savedCtx;\\n      delete this.annotationCanvas.savedCtx;\\n      delete this.annotationCanvas;\\n    }\\n  }\\n\\n  paintImageMaskXObject(img) {\\n    if (!this.contentVisible) {\\n      return;\\n    }\\n    const count = img.count;\\n    img = this.getObject(img.data, img);\\n    img.count = count;\\n\\n    const ctx = this.ctx;\\n    const glyph = this.processingType3;\\n\\n    if (glyph) {\\n      if (glyph.compiled === undefined) {\\n        glyph.compiled = compileType3Glyph(img);\\n      }\\n\\n      if (glyph.compiled) {\\n        glyph.compiled(ctx);\\n        return;\\n      }\\n    }\\n    const mask = this._createMaskCanvas(img);\\n    const maskCanvas = mask.canvas;\\n\\n    ctx.save();\\n    \u002F\u002F The mask is drawn with the transform applied. Reset the current\\n    \u002F\u002F transform to draw to the identity.\\n    ctx.setTransform(1, 0, 0, 1, 0, 0);\\n    ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\\n    ctx.restore();\\n    this.compose();\\n  }\\n\\n  paintImageMaskXObjectRepeat(\\n    img,\\n    scaleX,\\n    skewX = 0,\\n    skewY = 0,\\n    scaleY,\\n    positions\\n  ) {\\n    if (!this.contentVisible) {\\n      return;\\n    }\\n\\n    img = this.getObject(img.data, img);\\n\\n    const ctx = this.ctx;\\n    ctx.save();\\n    const currentTransform = getCurrentTransform(ctx);\\n    ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\\n    const mask = this._createMaskCanvas(img);\\n\\n    ctx.setTransform(\\n      1,\\n      0,\\n      0,\\n      1,\\n      mask.offsetX - currentTransform[4],\\n      mask.offsetY - currentTransform[5]\\n    );\\n    for (let i = 0, ii = positions.length; i \u003C ii; i += 2) {\\n      const trans = Util.transform(currentTransform, [\\n        scaleX,\\n        skewX,\\n        skewY,\\n        scaleY,\\n        positions[i],\\n        positions[i + 1],\\n      ]);\\n\\n      const [x, y] = Util.applyTransform([0, 0], trans);\\n      ctx.drawImage(mask.canvas, x, y);\\n    }\\n    ctx.restore();\\n    this.compose();\\n  }\\n\\n  paintImageMaskXObjectGroup(images) {\\n    if (!this.contentVisible) {\\n      return;\\n    }\\n    const ctx = this.ctx;\\n\\n    const fillColor = this.current.fillColor;\\n    const isPatternFill = this.current.patternFill;\\n\\n    for (const image of images) {\\n      const { data, width, height, transform } = image;\\n\\n      const maskCanvas = this.cachedCanvases.getCanvas(\\n        \\\"maskCanvas\\\",\\n        width,\\n        height\\n      );\\n      const maskCtx = maskCanvas.context;\\n      maskCtx.save();\\n\\n      const img = this.getObject(data, image);\\n      putBinaryImageMask(maskCtx, img);\\n\\n      maskCtx.globalCompositeOperation = \\\"source-in\\\";\\n\\n      maskCtx.fillStyle = isPatternFill\\n        ? fillColor.getPattern(\\n            maskCtx,\\n            this,\\n            getCurrentTransformInverse(ctx),\\n            PathType.FILL\\n          )\\n        : fillColor;\\n      maskCtx.fillRect(0, 0, width, height);\\n\\n      maskCtx.restore();\\n\\n      ctx.save();\\n      ctx.transform(...transform);\\n      ctx.scale(1, -1);\\n      drawImageAtIntegerCoords(\\n        ctx,\\n        maskCanvas.canvas,\\n        0,\\n        0,\\n        width,\\n        height,\\n        0,\\n        -1,\\n        1,\\n        1\\n      );\\n      ctx.restore();\\n    }\\n    this.compose();\\n  }\\n\\n  paintImageXObject(objId) {\\n    if (!this.contentVisible) {\\n      return;\\n    }\\n    const imgData = this.getObject(objId);\\n    if (!imgData) {\\n      warn(\\\"Dependent image isn't ready yet\\\");\\n      return;\\n    }\\n\\n    this.paintInlineImageXObject(imgData);\\n  }\\n\\n  paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\\n    if (!this.contentVisible) {\\n      return;\\n    }\\n    const imgData = this.getObject(objId);\\n    if (!imgData) {\\n      warn(\\\"Dependent image isn't ready yet\\\");\\n      return;\\n    }\\n\\n    const width = imgData.width;\\n    const height = imgData.height;\\n    const map = [];\\n    for (let i = 0, ii = positions.length; i \u003C ii; i += 2) {\\n      map.push({\\n        transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\\n        x: 0,\\n        y: 0,\\n        w: width,\\n        h: height,\\n      });\\n    }\\n    this.paintInlineImageXObjectGroup(imgData, map);\\n  }\\n\\n  applyTransferMapsToCanvas(ctx) {\\n    if (this.current.transferMaps !== \\\"none\\\") {\\n      ctx.filter = this.current.transferMaps;\\n      ctx.drawImage(ctx.canvas, 0, 0);\\n      ctx.filter = \\\"none\\\";\\n    }\\n    return ctx.canvas;\\n  }\\n\\n  applyTransferMapsToBitmap(imgData) {\\n    if (this.current.transferMaps === \\\"none\\\") {\\n      return imgData.bitmap;\\n    }\\n    const { bitmap, width, height } = imgData;\\n    const tmpCanvas = this.cachedCanvases.getCanvas(\\n      \\\"inlineImage\\\",\\n      width,\\n      height\\n    );\\n    const tmpCtx = tmpCanvas.context;\\n    tmpCtx.filter = this.current.transferMaps;\\n    tmpCtx.drawImage(bitmap, 0, 0);\\n    tmpCtx.filter = \\\"none\\\";\\n\\n    return tmpCanvas.canvas;\\n  }\\n\\n  paintInlineImageXObject(imgData) {\\n    if (!this.contentVisible) {\\n      return;\\n    }\\n    const width = imgData.width;\\n    const height = imgData.height;\\n    const ctx = this.ctx;\\n\\n    this.save();\\n\\n    if (\\n      (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) ||\\n      !isNodeJS\\n    ) {\\n      \u002F\u002F The filter, if any, will be applied in applyTransferMapsToBitmap.\\n      \u002F\u002F It must be applied to the image before rescaling else some artifacts\\n      \u002F\u002F could appear.\\n      \u002F\u002F The final restore will reset it to its value.\\n      const { filter } = ctx;\\n      if (filter !== \\\"none\\\" && filter !== \\\"\\\") {\\n        ctx.filter = \\\"none\\\";\\n      }\\n    }\\n\\n    \u002F\u002F scale the image to the unit square\\n    ctx.scale(1 \u002F width, -1 \u002F height);\\n\\n    let imgToPaint;\\n    if (imgData.bitmap) {\\n      imgToPaint = this.applyTransferMapsToBitmap(imgData);\\n    } else if (\\n      (typeof HTMLElement === \\\"function\\\" && imgData instanceof HTMLElement) ||\\n      !imgData.data\\n    ) {\\n      \u002F\u002F typeof check is needed due to node.js support, see issue #8489\\n      imgToPaint = imgData;\\n    } else {\\n      const tmpCanvas = this.cachedCanvases.getCanvas(\\n        \\\"inlineImage\\\",\\n        width,\\n        height\\n      );\\n      const tmpCtx = tmpCanvas.context;\\n      putBinaryImageData(tmpCtx, imgData);\\n      imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\\n    }\\n\\n    const scaled = this._scaleImage(\\n      imgToPaint,\\n      getCurrentTransformInverse(ctx)\\n    );\\n    ctx.imageSmoothingEnabled = getImageSmoothingEnabled(\\n      getCurrentTransform(ctx),\\n      imgData.interpolate\\n    );\\n\\n    drawImageAtIntegerCoords(\\n      ctx,\\n      scaled.img,\\n      0,\\n      0,\\n      scaled.paintWidth,\\n      scaled.paintHeight,\\n      0,\\n      -height,\\n      width,\\n      height\\n    );\\n    this.compose();\\n    this.restore();\\n  }\\n\\n  paintInlineImageXObjectGroup(imgData, map) {\\n    if (!this.contentVisible) {\\n      return;\\n    }\\n    const ctx = this.ctx;\\n    let imgToPaint;\\n    if (imgData.bitmap) {\\n      imgToPaint = imgData.bitmap;\\n    } else {\\n      const w = imgData.width;\\n      const h = imgData.height;\\n\\n      const tmpCanvas = this.cachedCanvases.getCanvas(\\\"inlineImage\\\", w, h);\\n      const tmpCtx = tmpCanvas.context;\\n      putBinaryImageData(tmpCtx, imgData);\\n      imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\\n    }\\n\\n    for (const entry of map) {\\n      ctx.save();\\n      ctx.transform(...entry.transform);\\n      ctx.scale(1, -1);\\n      drawImageAtIntegerCoords(\\n        ctx,\\n        imgToPaint,\\n        entry.x,\\n        entry.y,\\n        entry.w,\\n        entry.h,\\n        0,\\n        -1,\\n        1,\\n        1\\n      );\\n      ctx.restore();\\n    }\\n    this.compose();\\n  }\\n\\n  paintSolidColorImageMask() {\\n    if (!this.contentVisible) {\\n      return;\\n    }\\n    this.ctx.fillRect(0, 0, 1, 1);\\n    this.compose();\\n  }\\n\\n  \u002F\u002F Marked content\\n\\n  markPoint(tag) {\\n    \u002F\u002F TODO Marked content.\\n  }\\n\\n  markPointProps(tag, properties) {\\n    \u002F\u002F TODO Marked content.\\n  }\\n\\n  beginMarkedContent(tag) {\\n    this.markedContentStack.push({\\n      visible: true,\\n    });\\n  }\\n\\n  beginMarkedContentProps(tag, properties) {\\n    if (tag === \\\"OC\\\") {\\n      this.markedContentStack.push({\\n        visible: this.optionalContentConfig.isVisible(properties),\\n      });\\n    } else {\\n      this.markedContentStack.push({\\n        visible: true,\\n      });\\n    }\\n    this.contentVisible = this.isContentVisible();\\n  }\\n\\n  endMarkedContent() {\\n    this.markedContentStack.pop();\\n    this.contentVisible = this.isContentVisible();\\n  }\\n\\n  \u002F\u002F Compatibility\\n\\n  beginCompat() {\\n    \u002F\u002F TODO ignore undefined operators (should we do that anyway?)\\n  }\\n\\n  endCompat() {\\n    \u002F\u002F TODO stop ignoring undefined operators\\n  }\\n\\n  \u002F\u002F Helper functions\\n\\n  consumePath(clipBox) {\\n    const isEmpty = this.current.isEmptyClip();\\n    if (this.pendingClip) {\\n      this.current.updateClipFromPath();\\n    }\\n    if (!this.pendingClip) {\\n      this.compose(clipBox);\\n    }\\n    const ctx = this.ctx;\\n    if (this.pendingClip) {\\n      if (!isEmpty) {\\n        if (this.pendingClip === EO_CLIP) {\\n          ctx.clip(\\\"evenodd\\\");\\n        } else {\\n          ctx.clip();\\n        }\\n      }\\n      this.pendingClip = null;\\n    }\\n    this.current.startNewPathAndClipBox(this.current.clipBox);\\n    ctx.beginPath();\\n  }\\n\\n  getSinglePixelWidth() {\\n    if (!this._cachedGetSinglePixelWidth) {\\n      const m = getCurrentTransform(this.ctx);\\n      if (m[1] === 0 && m[2] === 0) {\\n        \u002F\u002F Fast path\\n        this._cachedGetSinglePixelWidth =\\n          1 \u002F Math.min(Math.abs(m[0]), Math.abs(m[3]));\\n      } else {\\n        const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\\n        const normX = Math.hypot(m[0], m[2]);\\n        const normY = Math.hypot(m[1], m[3]);\\n        this._cachedGetSinglePixelWidth = Math.max(normX, normY) \u002F absDet;\\n      }\\n    }\\n    return this._cachedGetSinglePixelWidth;\\n  }\\n\\n  getScaleForStroking() {\\n    \u002F\u002F A pixel has thicknessX = thicknessY = 1;\\n    \u002F\u002F A transformed pixel is a parallelogram and the thicknesses\\n    \u002F\u002F corresponds to the heights.\\n    \u002F\u002F The goal of this function is to rescale before setting the\\n    \u002F\u002F lineWidth in order to have both thicknesses greater or equal\\n    \u002F\u002F to 1 after transform.\\n    if (this._cachedScaleForStroking[0] === -1) {\\n      const { lineWidth } = this.current;\\n      const { a, b, c, d } = this.ctx.getTransform();\\n      let scaleX, scaleY;\\n\\n      if (b === 0 && c === 0) {\\n        \u002F\u002F Fast path\\n        const normX = Math.abs(a);\\n        const normY = Math.abs(d);\\n        if (normX === normY) {\\n          if (lineWidth === 0) {\\n            scaleX = scaleY = 1 \u002F normX;\\n          } else {\\n            const scaledLineWidth = normX * lineWidth;\\n            scaleX = scaleY = scaledLineWidth \u003C 1 ? 1 \u002F scaledLineWidth : 1;\\n          }\\n        } else if (lineWidth === 0) {\\n          scaleX = 1 \u002F normX;\\n          scaleY = 1 \u002F normY;\\n        } else {\\n          const scaledXLineWidth = normX * lineWidth;\\n          const scaledYLineWidth = normY * lineWidth;\\n          scaleX = scaledXLineWidth \u003C 1 ? 1 \u002F scaledXLineWidth : 1;\\n          scaleY = scaledYLineWidth \u003C 1 ? 1 \u002F scaledYLineWidth : 1;\\n        }\\n      } else {\\n        \u002F\u002F A pixel (base (x, y)) is transformed by M into a parallelogram:\\n        \u002F\u002F  - its area is |det(M)|;\\n        \u002F\u002F  - heightY (orthogonal to Mx) has a length: |det(M)| \u002F norm(Mx);\\n        \u002F\u002F  - heightX (orthogonal to My) has a length: |det(M)| \u002F norm(My).\\n        \u002F\u002F heightX and heightY are the thicknesses of the transformed pixel\\n        \u002F\u002F and they must be both greater or equal to 1.\\n        const absDet = Math.abs(a * d - b * c);\\n        const normX = Math.hypot(a, b);\\n        const normY = Math.hypot(c, d);\\n        if (lineWidth === 0) {\\n          scaleX = normY \u002F absDet;\\n          scaleY = normX \u002F absDet;\\n        } else {\\n          const baseArea = lineWidth * absDet;\\n          scaleX = normY > baseArea ? normY \u002F baseArea : 1;\\n          scaleY = normX > baseArea ? normX \u002F baseArea : 1;\\n        }\\n      }\\n      this._cachedScaleForStroking[0] = scaleX;\\n      this._cachedScaleForStroking[1] = scaleY;\\n    }\\n    return this._cachedScaleForStroking;\\n  }\\n\\n  \u002F\u002F Rescale before stroking in order to have a final lineWidth\\n  \u002F\u002F with both thicknesses greater or equal to 1.\\n  rescaleAndStroke(saveRestore) {\\n    const { ctx } = this;\\n    const { lineWidth } = this.current;\\n    const [scaleX, scaleY] = this.getScaleForStroking();\\n\\n    ctx.lineWidth = lineWidth || 1;\\n\\n    if (scaleX === 1 && scaleY === 1) {\\n      ctx.stroke();\\n      return;\\n    }\\n\\n    const dashes = ctx.getLineDash();\\n    if (saveRestore) {\\n      ctx.save();\\n    }\\n\\n    ctx.scale(scaleX, scaleY);\\n\\n    \u002F\u002F How the dashed line is rendered depends on the current transform...\\n    \u002F\u002F so we added a rescale to handle too thin lines and consequently\\n    \u002F\u002F the way the line is dashed will be modified.\\n    \u002F\u002F If scaleX === scaleY, the dashed lines will be rendered correctly\\n    \u002F\u002F else we'll have some bugs (but only with too thin lines).\\n    \u002F\u002F Here we take the max... why not taking the min... or something else.\\n    \u002F\u002F Anyway, as said it's buggy when scaleX !== scaleY.\\n    if (dashes.length > 0) {\\n      const scale = Math.max(scaleX, scaleY);\\n      ctx.setLineDash(dashes.map(x => x \u002F scale));\\n      ctx.lineDashOffset \u002F= scale;\\n    }\\n\\n    ctx.stroke();\\n\\n    if (saveRestore) {\\n      ctx.restore();\\n    }\\n  }\\n\\n  isContentVisible() {\\n    for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\\n      if (!this.markedContentStack[i].visible) {\\n        return false;\\n      }\\n    }\\n    return true;\\n  }\\n}\\n\\nfor (const op in OPS) {\\n  if (CanvasGraphics.prototype[op] !== undefined) {\\n    CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\\n  }\\n}\\n\\nexport { CanvasGraphics };\\n\",\"\u002F* Copyright 2018 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nclass GlobalWorkerOptions {\\n  static #port = null;\\n\\n  static #src = \\\"\\\";\\n\\n  \u002F**\\n   * @type {Worker | null}\\n   *\u002F\\n  static get workerPort() {\\n    return this.#port;\\n  }\\n\\n  \u002F**\\n   * @param {Worker | null} workerPort - Defines global port for worker process.\\n   *   Overrides the `workerSrc` option.\\n   *\u002F\\n  static set workerPort(val) {\\n    if (\\n      !(typeof Worker !== \\\"undefined\\\" && val instanceof Worker) &&\\n      val !== null\\n    ) {\\n      throw new Error(\\\"Invalid `workerPort` type.\\\");\\n    }\\n    this.#port = val;\\n  }\\n\\n  \u002F**\\n   * @type {string}\\n   *\u002F\\n  static get workerSrc() {\\n    return this.#src;\\n  }\\n\\n  \u002F**\\n   * @param {string} workerSrc - A string containing the path and filename of\\n   *   the worker file.\\n   *\\n   *   NOTE: The `workerSrc` option should always be set, in order to prevent\\n   *         any issues when using the PDF.js library.\\n   *\u002F\\n  static set workerSrc(val) {\\n    if (typeof val !== \\\"string\\\") {\\n      throw new Error(\\\"Invalid `workerSrc` type.\\\");\\n    }\\n    this.#src = val;\\n  }\\n}\\n\\nexport { GlobalWorkerOptions };\\n\",\"\u002F* Copyright 2018 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  AbortException,\\n  assert,\\n  MissingPDFException,\\n  PasswordException,\\n  UnexpectedResponseException,\\n  UnknownErrorException,\\n  unreachable,\\n} from \\\".\u002Futil.js\\\";\\n\\nconst CallbackKind = {\\n  UNKNOWN: 0,\\n  DATA: 1,\\n  ERROR: 2,\\n};\\n\\nconst StreamKind = {\\n  UNKNOWN: 0,\\n  CANCEL: 1,\\n  CANCEL_COMPLETE: 2,\\n  CLOSE: 3,\\n  ENQUEUE: 4,\\n  ERROR: 5,\\n  PULL: 6,\\n  PULL_COMPLETE: 7,\\n  START_COMPLETE: 8,\\n};\\n\\nfunction wrapReason(reason) {\\n  if (\\n    !(\\n      reason instanceof Error ||\\n      (typeof reason === \\\"object\\\" && reason !== null)\\n    )\\n  ) {\\n    unreachable(\\n      'wrapReason: Expected \\\"reason\\\" to be a (possibly cloned) Error.'\\n    );\\n  }\\n  switch (reason.name) {\\n    case \\\"AbortException\\\":\\n      return new AbortException(reason.message);\\n    case \\\"MissingPDFException\\\":\\n      return new MissingPDFException(reason.message);\\n    case \\\"PasswordException\\\":\\n      return new PasswordException(reason.message, reason.code);\\n    case \\\"UnexpectedResponseException\\\":\\n      return new UnexpectedResponseException(reason.message, reason.status);\\n    case \\\"UnknownErrorException\\\":\\n      return new UnknownErrorException(reason.message, reason.details);\\n    default:\\n      return new UnknownErrorException(reason.message, reason.toString());\\n  }\\n}\\n\\nclass MessageHandler {\\n  constructor(sourceName, targetName, comObj) {\\n    this.sourceName = sourceName;\\n    this.targetName = targetName;\\n    this.comObj = comObj;\\n    this.callbackId = 1;\\n    this.streamId = 1;\\n    this.streamSinks = Object.create(null);\\n    this.streamControllers = Object.create(null);\\n    this.callbackCapabilities = Object.create(null);\\n    this.actionHandler = Object.create(null);\\n\\n    this._onComObjOnMessage = event => {\\n      const data = event.data;\\n      if (data.targetName !== this.sourceName) {\\n        return;\\n      }\\n      if (data.stream) {\\n        this.#processStreamMessage(data);\\n        return;\\n      }\\n      if (data.callback) {\\n        const callbackId = data.callbackId;\\n        const capability = this.callbackCapabilities[callbackId];\\n        if (!capability) {\\n          throw new Error(`Cannot resolve callback ${callbackId}`);\\n        }\\n        delete this.callbackCapabilities[callbackId];\\n\\n        if (data.callback === CallbackKind.DATA) {\\n          capability.resolve(data.data);\\n        } else if (data.callback === CallbackKind.ERROR) {\\n          capability.reject(wrapReason(data.reason));\\n        } else {\\n          throw new Error(\\\"Unexpected callback case\\\");\\n        }\\n        return;\\n      }\\n      const action = this.actionHandler[data.action];\\n      if (!action) {\\n        throw new Error(`Unknown action from worker: ${data.action}`);\\n      }\\n      if (data.callbackId) {\\n        const cbSourceName = this.sourceName;\\n        const cbTargetName = data.sourceName;\\n\\n        new Promise(function (resolve) {\\n          resolve(action(data.data));\\n        }).then(\\n          function (result) {\\n            comObj.postMessage({\\n              sourceName: cbSourceName,\\n              targetName: cbTargetName,\\n              callback: CallbackKind.DATA,\\n              callbackId: data.callbackId,\\n              data: result,\\n            });\\n          },\\n          function (reason) {\\n            comObj.postMessage({\\n              sourceName: cbSourceName,\\n              targetName: cbTargetName,\\n              callback: CallbackKind.ERROR,\\n              callbackId: data.callbackId,\\n              reason: wrapReason(reason),\\n            });\\n          }\\n        );\\n        return;\\n      }\\n      if (data.streamId) {\\n        this.#createStreamSink(data);\\n        return;\\n      }\\n      action(data.data);\\n    };\\n    comObj.addEventListener(\\\"message\\\", this._onComObjOnMessage);\\n  }\\n\\n  on(actionName, handler) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        typeof handler === \\\"function\\\",\\n        'MessageHandler.on: Expected \\\"handler\\\" to be a function.'\\n      );\\n    }\\n    const ah = this.actionHandler;\\n    if (ah[actionName]) {\\n      throw new Error(`There is already an actionName called \\\"${actionName}\\\"`);\\n    }\\n    ah[actionName] = handler;\\n  }\\n\\n  \u002F**\\n   * Sends a message to the comObj to invoke the action with the supplied data.\\n   * @param {string} actionName - Action to call.\\n   * @param {JSON} data - JSON data to send.\\n   * @param {Array} [transfers] - List of transfers\u002FArrayBuffers.\\n   *\u002F\\n  send(actionName, data, transfers) {\\n    this.comObj.postMessage(\\n      {\\n        sourceName: this.sourceName,\\n        targetName: this.targetName,\\n        action: actionName,\\n        data,\\n      },\\n      transfers\\n    );\\n  }\\n\\n  \u002F**\\n   * Sends a message to the comObj to invoke the action with the supplied data.\\n   * Expects that the other side will callback with the response.\\n   * @param {string} actionName - Action to call.\\n   * @param {JSON} data - JSON data to send.\\n   * @param {Array} [transfers] - List of transfers\u002FArrayBuffers.\\n   * @returns {Promise} Promise to be resolved with response data.\\n   *\u002F\\n  sendWithPromise(actionName, data, transfers) {\\n    const callbackId = this.callbackId++;\\n    const capability = Promise.withResolvers();\\n    this.callbackCapabilities[callbackId] = capability;\\n    try {\\n      this.comObj.postMessage(\\n        {\\n          sourceName: this.sourceName,\\n          targetName: this.targetName,\\n          action: actionName,\\n          callbackId,\\n          data,\\n        },\\n        transfers\\n      );\\n    } catch (ex) {\\n      capability.reject(ex);\\n    }\\n    return capability.promise;\\n  }\\n\\n  \u002F**\\n   * Sends a message to the comObj to invoke the action with the supplied data.\\n   * Expect that the other side will callback to signal 'start_complete'.\\n   * @param {string} actionName - Action to call.\\n   * @param {JSON} data - JSON data to send.\\n   * @param {Object} queueingStrategy - Strategy to signal backpressure based on\\n   *                 internal queue.\\n   * @param {Array} [transfers] - List of transfers\u002FArrayBuffers.\\n   * @returns {ReadableStream} ReadableStream to read data in chunks.\\n   *\u002F\\n  sendWithStream(actionName, data, queueingStrategy, transfers) {\\n    const streamId = this.streamId++,\\n      sourceName = this.sourceName,\\n      targetName = this.targetName,\\n      comObj = this.comObj;\\n\\n    return new ReadableStream(\\n      {\\n        start: controller => {\\n          const startCapability = Promise.withResolvers();\\n          this.streamControllers[streamId] = {\\n            controller,\\n            startCall: startCapability,\\n            pullCall: null,\\n            cancelCall: null,\\n            isClosed: false,\\n          };\\n          comObj.postMessage(\\n            {\\n              sourceName,\\n              targetName,\\n              action: actionName,\\n              streamId,\\n              data,\\n              desiredSize: controller.desiredSize,\\n            },\\n            transfers\\n          );\\n          \u002F\u002F Return Promise for Async process, to signal success\u002Ffailure.\\n          return startCapability.promise;\\n        },\\n\\n        pull: controller => {\\n          const pullCapability = Promise.withResolvers();\\n          this.streamControllers[streamId].pullCall = pullCapability;\\n          comObj.postMessage({\\n            sourceName,\\n            targetName,\\n            stream: StreamKind.PULL,\\n            streamId,\\n            desiredSize: controller.desiredSize,\\n          });\\n          \u002F\u002F Returning Promise will not call \\\"pull\\\"\\n          \u002F\u002F again until current pull is resolved.\\n          return pullCapability.promise;\\n        },\\n\\n        cancel: reason => {\\n          assert(reason instanceof Error, \\\"cancel must have a valid reason\\\");\\n          const cancelCapability = Promise.withResolvers();\\n          this.streamControllers[streamId].cancelCall = cancelCapability;\\n          this.streamControllers[streamId].isClosed = true;\\n          comObj.postMessage({\\n            sourceName,\\n            targetName,\\n            stream: StreamKind.CANCEL,\\n            streamId,\\n            reason: wrapReason(reason),\\n          });\\n          \u002F\u002F Return Promise to signal success or failure.\\n          return cancelCapability.promise;\\n        },\\n      },\\n      queueingStrategy\\n    );\\n  }\\n\\n  #createStreamSink(data) {\\n    const streamId = data.streamId,\\n      sourceName = this.sourceName,\\n      targetName = data.sourceName,\\n      comObj = this.comObj;\\n    const self = this,\\n      action = this.actionHandler[data.action];\\n\\n    const streamSink = {\\n      enqueue(chunk, size = 1, transfers) {\\n        if (this.isCancelled) {\\n          return;\\n        }\\n        const lastDesiredSize = this.desiredSize;\\n        this.desiredSize -= size;\\n        \u002F\u002F Enqueue decreases the desiredSize property of sink,\\n        \u002F\u002F so when it changes from positive to negative,\\n        \u002F\u002F set ready as unresolved promise.\\n        if (lastDesiredSize > 0 && this.desiredSize \u003C= 0) {\\n          this.sinkCapability = Promise.withResolvers();\\n          this.ready = this.sinkCapability.promise;\\n        }\\n        comObj.postMessage(\\n          {\\n            sourceName,\\n            targetName,\\n            stream: StreamKind.ENQUEUE,\\n            streamId,\\n            chunk,\\n          },\\n          transfers\\n        );\\n      },\\n\\n      close() {\\n        if (this.isCancelled) {\\n          return;\\n        }\\n        this.isCancelled = true;\\n        comObj.postMessage({\\n          sourceName,\\n          targetName,\\n          stream: StreamKind.CLOSE,\\n          streamId,\\n        });\\n        delete self.streamSinks[streamId];\\n      },\\n\\n      error(reason) {\\n        assert(reason instanceof Error, \\\"error must have a valid reason\\\");\\n        if (this.isCancelled) {\\n          return;\\n        }\\n        this.isCancelled = true;\\n        comObj.postMessage({\\n          sourceName,\\n          targetName,\\n          stream: StreamKind.ERROR,\\n          streamId,\\n          reason: wrapReason(reason),\\n        });\\n      },\\n\\n      sinkCapability: Promise.withResolvers(),\\n      onPull: null,\\n      onCancel: null,\\n      isCancelled: false,\\n      desiredSize: data.desiredSize,\\n      ready: null,\\n    };\\n\\n    streamSink.sinkCapability.resolve();\\n    streamSink.ready = streamSink.sinkCapability.promise;\\n    this.streamSinks[streamId] = streamSink;\\n\\n    new Promise(function (resolve) {\\n      resolve(action(data.data, streamSink));\\n    }).then(\\n      function () {\\n        comObj.postMessage({\\n          sourceName,\\n          targetName,\\n          stream: StreamKind.START_COMPLETE,\\n          streamId,\\n          success: true,\\n        });\\n      },\\n      function (reason) {\\n        comObj.postMessage({\\n          sourceName,\\n          targetName,\\n          stream: StreamKind.START_COMPLETE,\\n          streamId,\\n          reason: wrapReason(reason),\\n        });\\n      }\\n    );\\n  }\\n\\n  #processStreamMessage(data) {\\n    const streamId = data.streamId,\\n      sourceName = this.sourceName,\\n      targetName = data.sourceName,\\n      comObj = this.comObj;\\n    const streamController = this.streamControllers[streamId],\\n      streamSink = this.streamSinks[streamId];\\n\\n    switch (data.stream) {\\n      case StreamKind.START_COMPLETE:\\n        if (data.success) {\\n          streamController.startCall.resolve();\\n        } else {\\n          streamController.startCall.reject(wrapReason(data.reason));\\n        }\\n        break;\\n      case StreamKind.PULL_COMPLETE:\\n        if (data.success) {\\n          streamController.pullCall.resolve();\\n        } else {\\n          streamController.pullCall.reject(wrapReason(data.reason));\\n        }\\n        break;\\n      case StreamKind.PULL:\\n        \u002F\u002F Ignore any pull after close is called.\\n        if (!streamSink) {\\n          comObj.postMessage({\\n            sourceName,\\n            targetName,\\n            stream: StreamKind.PULL_COMPLETE,\\n            streamId,\\n            success: true,\\n          });\\n          break;\\n        }\\n        \u002F\u002F Pull increases the desiredSize property of sink, so when it changes\\n        \u002F\u002F from negative to positive, set ready property as resolved promise.\\n        if (streamSink.desiredSize \u003C= 0 && data.desiredSize > 0) {\\n          streamSink.sinkCapability.resolve();\\n        }\\n        \u002F\u002F Reset desiredSize property of sink on every pull.\\n        streamSink.desiredSize = data.desiredSize;\\n\\n        new Promise(function (resolve) {\\n          resolve(streamSink.onPull?.());\\n        }).then(\\n          function () {\\n            comObj.postMessage({\\n              sourceName,\\n              targetName,\\n              stream: StreamKind.PULL_COMPLETE,\\n              streamId,\\n              success: true,\\n            });\\n          },\\n          function (reason) {\\n            comObj.postMessage({\\n              sourceName,\\n              targetName,\\n              stream: StreamKind.PULL_COMPLETE,\\n              streamId,\\n              reason: wrapReason(reason),\\n            });\\n          }\\n        );\\n        break;\\n      case StreamKind.ENQUEUE:\\n        assert(streamController, \\\"enqueue should have stream controller\\\");\\n        if (streamController.isClosed) {\\n          break;\\n        }\\n        streamController.controller.enqueue(data.chunk);\\n        break;\\n      case StreamKind.CLOSE:\\n        assert(streamController, \\\"close should have stream controller\\\");\\n        if (streamController.isClosed) {\\n          break;\\n        }\\n        streamController.isClosed = true;\\n        streamController.controller.close();\\n        this.#deleteStreamController(streamController, streamId);\\n        break;\\n      case StreamKind.ERROR:\\n        assert(streamController, \\\"error should have stream controller\\\");\\n        streamController.controller.error(wrapReason(data.reason));\\n        this.#deleteStreamController(streamController, streamId);\\n        break;\\n      case StreamKind.CANCEL_COMPLETE:\\n        if (data.success) {\\n          streamController.cancelCall.resolve();\\n        } else {\\n          streamController.cancelCall.reject(wrapReason(data.reason));\\n        }\\n        this.#deleteStreamController(streamController, streamId);\\n        break;\\n      case StreamKind.CANCEL:\\n        if (!streamSink) {\\n          break;\\n        }\\n\\n        new Promise(function (resolve) {\\n          resolve(streamSink.onCancel?.(wrapReason(data.reason)));\\n        }).then(\\n          function () {\\n            comObj.postMessage({\\n              sourceName,\\n              targetName,\\n              stream: StreamKind.CANCEL_COMPLETE,\\n              streamId,\\n              success: true,\\n            });\\n          },\\n          function (reason) {\\n            comObj.postMessage({\\n              sourceName,\\n              targetName,\\n              stream: StreamKind.CANCEL_COMPLETE,\\n              streamId,\\n              reason: wrapReason(reason),\\n            });\\n          }\\n        );\\n        streamSink.sinkCapability.reject(wrapReason(data.reason));\\n        streamSink.isCancelled = true;\\n        delete this.streamSinks[streamId];\\n        break;\\n      default:\\n        throw new Error(\\\"Unexpected stream case\\\");\\n    }\\n  }\\n\\n  async #deleteStreamController(streamController, streamId) {\\n    \u002F\u002F Delete the `streamController` only when the start, pull, and cancel\\n    \u002F\u002F capabilities have settled, to prevent `TypeError`s.\\n    await Promise.allSettled([\\n      streamController.startCall?.promise,\\n      streamController.pullCall?.promise,\\n      streamController.cancelCall?.promise,\\n    ]);\\n    delete this.streamControllers[streamId];\\n  }\\n\\n  destroy() {\\n    this.comObj.removeEventListener(\\\"message\\\", this._onComObjOnMessage);\\n  }\\n}\\n\\nexport { MessageHandler };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { objectFromMap } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nclass Metadata {\\n  #metadataMap;\\n\\n  #data;\\n\\n  constructor({ parsedData, rawData }) {\\n    this.#metadataMap = parsedData;\\n    this.#data = rawData;\\n  }\\n\\n  getRaw() {\\n    return this.#data;\\n  }\\n\\n  get(name) {\\n    return this.#metadataMap.get(name) ?? null;\\n  }\\n\\n  getAll() {\\n    return objectFromMap(this.#metadataMap);\\n  }\\n\\n  has(name) {\\n    return this.#metadataMap.has(name);\\n  }\\n}\\n\\nexport { Metadata };\\n\",\"\u002F* Copyright 2020 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  info,\\n  objectFromMap,\\n  RenderingIntentFlag,\\n  unreachable,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { MurmurHash3_64 } from \\\"..\u002Fshared\u002Fmurmurhash3.js\\\";\\n\\nconst INTERNAL = Symbol(\\\"INTERNAL\\\");\\n\\nclass OptionalContentGroup {\\n  #isDisplay = false;\\n\\n  #isPrint = false;\\n\\n  #userSet = false;\\n\\n  #visible = true;\\n\\n  constructor(renderingIntent, { name, intent, usage }) {\\n    this.#isDisplay = !!(renderingIntent & RenderingIntentFlag.DISPLAY);\\n    this.#isPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\\n\\n    this.name = name;\\n    this.intent = intent;\\n    this.usage = usage;\\n  }\\n\\n  \u002F**\\n   * @type {boolean}\\n   *\u002F\\n  get visible() {\\n    if (this.#userSet) {\\n      return this.#visible;\\n    }\\n    if (!this.#visible) {\\n      return false;\\n    }\\n    const { print, view } = this.usage;\\n\\n    if (this.#isDisplay) {\\n      return view?.viewState !== \\\"OFF\\\";\\n    } else if (this.#isPrint) {\\n      return print?.printState !== \\\"OFF\\\";\\n    }\\n    return true;\\n  }\\n\\n  \u002F**\\n   * @ignore\\n   *\u002F\\n  _setVisible(internal, visible, userSet = false) {\\n    if (internal !== INTERNAL) {\\n      unreachable(\\\"Internal method `_setVisible` called.\\\");\\n    }\\n    this.#userSet = userSet;\\n    this.#visible = visible;\\n  }\\n}\\n\\nclass OptionalContentConfig {\\n  #cachedGetHash = null;\\n\\n  #groups = new Map();\\n\\n  #initialHash = null;\\n\\n  #order = null;\\n\\n  constructor(data, renderingIntent = RenderingIntentFlag.DISPLAY) {\\n    this.renderingIntent = renderingIntent;\\n\\n    this.name = null;\\n    this.creator = null;\\n\\n    if (data === null) {\\n      return;\\n    }\\n    this.name = data.name;\\n    this.creator = data.creator;\\n    this.#order = data.order;\\n    for (const group of data.groups) {\\n      this.#groups.set(\\n        group.id,\\n        new OptionalContentGroup(renderingIntent, group)\\n      );\\n    }\\n\\n    if (data.baseState === \\\"OFF\\\") {\\n      for (const group of this.#groups.values()) {\\n        group._setVisible(INTERNAL, false);\\n      }\\n    }\\n\\n    for (const on of data.on) {\\n      this.#groups.get(on)._setVisible(INTERNAL, true);\\n    }\\n\\n    for (const off of data.off) {\\n      this.#groups.get(off)._setVisible(INTERNAL, false);\\n    }\\n\\n    \u002F\u002F The following code must always run *last* in the constructor.\\n    this.#initialHash = this.getHash();\\n  }\\n\\n  #evaluateVisibilityExpression(array) {\\n    const length = array.length;\\n    if (length \u003C 2) {\\n      return true;\\n    }\\n    const operator = array[0];\\n    for (let i = 1; i \u003C length; i++) {\\n      const element = array[i];\\n      let state;\\n      if (Array.isArray(element)) {\\n        state = this.#evaluateVisibilityExpression(element);\\n      } else if (this.#groups.has(element)) {\\n        state = this.#groups.get(element).visible;\\n      } else {\\n        warn(`Optional content group not found: ${element}`);\\n        return true;\\n      }\\n      switch (operator) {\\n        case \\\"And\\\":\\n          if (!state) {\\n            return false;\\n          }\\n          break;\\n        case \\\"Or\\\":\\n          if (state) {\\n            return true;\\n          }\\n          break;\\n        case \\\"Not\\\":\\n          return !state;\\n        default:\\n          return true;\\n      }\\n    }\\n    return operator === \\\"And\\\";\\n  }\\n\\n  isVisible(group) {\\n    if (this.#groups.size === 0) {\\n      return true;\\n    }\\n    if (!group) {\\n      info(\\\"Optional content group not defined.\\\");\\n      return true;\\n    }\\n    if (group.type === \\\"OCG\\\") {\\n      if (!this.#groups.has(group.id)) {\\n        warn(`Optional content group not found: ${group.id}`);\\n        return true;\\n      }\\n      return this.#groups.get(group.id).visible;\\n    } else if (group.type === \\\"OCMD\\\") {\\n      \u002F\u002F Per the spec, the expression should be preferred if available.\\n      if (group.expression) {\\n        return this.#evaluateVisibilityExpression(group.expression);\\n      }\\n      if (!group.policy || group.policy === \\\"AnyOn\\\") {\\n        \u002F\u002F Default\\n        for (const id of group.ids) {\\n          if (!this.#groups.has(id)) {\\n            warn(`Optional content group not found: ${id}`);\\n            return true;\\n          }\\n          if (this.#groups.get(id).visible) {\\n            return true;\\n          }\\n        }\\n        return false;\\n      } else if (group.policy === \\\"AllOn\\\") {\\n        for (const id of group.ids) {\\n          if (!this.#groups.has(id)) {\\n            warn(`Optional content group not found: ${id}`);\\n            return true;\\n          }\\n          if (!this.#groups.get(id).visible) {\\n            return false;\\n          }\\n        }\\n        return true;\\n      } else if (group.policy === \\\"AnyOff\\\") {\\n        for (const id of group.ids) {\\n          if (!this.#groups.has(id)) {\\n            warn(`Optional content group not found: ${id}`);\\n            return true;\\n          }\\n          if (!this.#groups.get(id).visible) {\\n            return true;\\n          }\\n        }\\n        return false;\\n      } else if (group.policy === \\\"AllOff\\\") {\\n        for (const id of group.ids) {\\n          if (!this.#groups.has(id)) {\\n            warn(`Optional content group not found: ${id}`);\\n            return true;\\n          }\\n          if (this.#groups.get(id).visible) {\\n            return false;\\n          }\\n        }\\n        return true;\\n      }\\n      warn(`Unknown optional content policy ${group.policy}.`);\\n      return true;\\n    }\\n    warn(`Unknown group type ${group.type}.`);\\n    return true;\\n  }\\n\\n  setVisibility(id, visible = true) {\\n    const group = this.#groups.get(id);\\n    if (!group) {\\n      warn(`Optional content group not found: ${id}`);\\n      return;\\n    }\\n    group._setVisible(INTERNAL, !!visible, \u002F* userSet = *\u002F true);\\n\\n    this.#cachedGetHash = null;\\n  }\\n\\n  setOCGState({ state, preserveRB }) {\\n    let operator;\\n\\n    for (const elem of state) {\\n      switch (elem) {\\n        case \\\"ON\\\":\\n        case \\\"OFF\\\":\\n        case \\\"Toggle\\\":\\n          operator = elem;\\n          continue;\\n      }\\n\\n      const group = this.#groups.get(elem);\\n      if (!group) {\\n        continue;\\n      }\\n      switch (operator) {\\n        case \\\"ON\\\":\\n          group._setVisible(INTERNAL, true);\\n          break;\\n        case \\\"OFF\\\":\\n          group._setVisible(INTERNAL, false);\\n          break;\\n        case \\\"Toggle\\\":\\n          group._setVisible(INTERNAL, !group.visible);\\n          break;\\n      }\\n    }\\n\\n    this.#cachedGetHash = null;\\n  }\\n\\n  get hasInitialVisibility() {\\n    return this.#initialHash === null || this.getHash() === this.#initialHash;\\n  }\\n\\n  getOrder() {\\n    if (!this.#groups.size) {\\n      return null;\\n    }\\n    if (this.#order) {\\n      return this.#order.slice();\\n    }\\n    return [...this.#groups.keys()];\\n  }\\n\\n  getGroups() {\\n    return this.#groups.size > 0 ? objectFromMap(this.#groups) : null;\\n  }\\n\\n  getGroup(id) {\\n    return this.#groups.get(id) || null;\\n  }\\n\\n  getHash() {\\n    if (this.#cachedGetHash !== null) {\\n      return this.#cachedGetHash;\\n    }\\n    const hash = new MurmurHash3_64();\\n\\n    for (const [id, group] of this.#groups) {\\n      hash.update(`${id}:${group.visible}`);\\n    }\\n    return (this.#cachedGetHash = hash.hexdigest());\\n  }\\n}\\n\\nexport { OptionalContentConfig };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\"..\u002Finterfaces\\\").IPDFStream} IPDFStream *\u002F\\n\u002F** @typedef {import(\\\"..\u002Finterfaces\\\").IPDFStreamReader} IPDFStreamReader *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Finterfaces\\\").IPDFStreamRangeReader} IPDFStreamRangeReader *\u002F\\n\\nimport { assert } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { isPdfFile } from \\\".\u002Fdisplay_utils.js\\\";\\n\\n\u002F** @implements {IPDFStream} *\u002F\\nclass PDFDataTransportStream {\\n  constructor(\\n    pdfDataRangeTransport,\\n    { disableRange = false, disableStream = false }\\n  ) {\\n    assert(\\n      pdfDataRangeTransport,\\n      'PDFDataTransportStream - missing required \\\"pdfDataRangeTransport\\\" argument.'\\n    );\\n    const { length, initialData, progressiveDone, contentDispositionFilename } =\\n      pdfDataRangeTransport;\\n\\n    this._queuedChunks = [];\\n    this._progressiveDone = progressiveDone;\\n    this._contentDispositionFilename = contentDispositionFilename;\\n\\n    if (initialData?.length > 0) {\\n      \u002F\u002F Prevent any possible issues by only transferring a Uint8Array that\\n      \u002F\u002F completely \\\"utilizes\\\" its underlying ArrayBuffer.\\n      const buffer =\\n        initialData instanceof Uint8Array &&\\n        initialData.byteLength === initialData.buffer.byteLength\\n          ? initialData.buffer\\n          : new Uint8Array(initialData).buffer;\\n      this._queuedChunks.push(buffer);\\n    }\\n\\n    this._pdfDataRangeTransport = pdfDataRangeTransport;\\n    this._isStreamingSupported = !disableStream;\\n    this._isRangeSupported = !disableRange;\\n    this._contentLength = length;\\n\\n    this._fullRequestReader = null;\\n    this._rangeReaders = [];\\n\\n    pdfDataRangeTransport.addRangeListener((begin, chunk) => {\\n      this._onReceiveData({ begin, chunk });\\n    });\\n\\n    pdfDataRangeTransport.addProgressListener((loaded, total) => {\\n      this._onProgress({ loaded, total });\\n    });\\n\\n    pdfDataRangeTransport.addProgressiveReadListener(chunk => {\\n      this._onReceiveData({ chunk });\\n    });\\n\\n    pdfDataRangeTransport.addProgressiveDoneListener(() => {\\n      this._onProgressiveDone();\\n    });\\n\\n    pdfDataRangeTransport.transportReady();\\n  }\\n\\n  _onReceiveData({ begin, chunk }) {\\n    \u002F\u002F Prevent any possible issues by only transferring a Uint8Array that\\n    \u002F\u002F completely \\\"utilizes\\\" its underlying ArrayBuffer.\\n    const buffer =\\n      chunk instanceof Uint8Array &&\\n      chunk.byteLength === chunk.buffer.byteLength\\n        ? chunk.buffer\\n        : new Uint8Array(chunk).buffer;\\n\\n    if (begin === undefined) {\\n      if (this._fullRequestReader) {\\n        this._fullRequestReader._enqueue(buffer);\\n      } else {\\n        this._queuedChunks.push(buffer);\\n      }\\n    } else {\\n      const found = this._rangeReaders.some(function (rangeReader) {\\n        if (rangeReader._begin !== begin) {\\n          return false;\\n        }\\n        rangeReader._enqueue(buffer);\\n        return true;\\n      });\\n      assert(\\n        found,\\n        \\\"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\\\"\\n      );\\n    }\\n  }\\n\\n  get _progressiveDataLength() {\\n    return this._fullRequestReader?._loaded ?? 0;\\n  }\\n\\n  _onProgress(evt) {\\n    if (evt.total === undefined) {\\n      \u002F\u002F Reporting to first range reader, if it exists.\\n      this._rangeReaders[0]?.onProgress?.({ loaded: evt.loaded });\\n    } else {\\n      this._fullRequestReader?.onProgress?.({\\n        loaded: evt.loaded,\\n        total: evt.total,\\n      });\\n    }\\n  }\\n\\n  _onProgressiveDone() {\\n    this._fullRequestReader?.progressiveDone();\\n    this._progressiveDone = true;\\n  }\\n\\n  _removeRangeReader(reader) {\\n    const i = this._rangeReaders.indexOf(reader);\\n    if (i >= 0) {\\n      this._rangeReaders.splice(i, 1);\\n    }\\n  }\\n\\n  getFullReader() {\\n    assert(\\n      !this._fullRequestReader,\\n      \\\"PDFDataTransportStream.getFullReader can only be called once.\\\"\\n    );\\n    const queuedChunks = this._queuedChunks;\\n    this._queuedChunks = null;\\n    return new PDFDataTransportStreamReader(\\n      this,\\n      queuedChunks,\\n      this._progressiveDone,\\n      this._contentDispositionFilename\\n    );\\n  }\\n\\n  getRangeReader(begin, end) {\\n    if (end \u003C= this._progressiveDataLength) {\\n      return null;\\n    }\\n    const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\\n    this._pdfDataRangeTransport.requestDataRange(begin, end);\\n    this._rangeReaders.push(reader);\\n    return reader;\\n  }\\n\\n  cancelAllRequests(reason) {\\n    this._fullRequestReader?.cancel(reason);\\n\\n    for (const reader of this._rangeReaders.slice(0)) {\\n      reader.cancel(reason);\\n    }\\n    this._pdfDataRangeTransport.abort();\\n  }\\n}\\n\\n\u002F** @implements {IPDFStreamReader} *\u002F\\nclass PDFDataTransportStreamReader {\\n  constructor(\\n    stream,\\n    queuedChunks,\\n    progressiveDone = false,\\n    contentDispositionFilename = null\\n  ) {\\n    this._stream = stream;\\n    this._done = progressiveDone || false;\\n    this._filename = isPdfFile(contentDispositionFilename)\\n      ? contentDispositionFilename\\n      : null;\\n    this._queuedChunks = queuedChunks || [];\\n    this._loaded = 0;\\n    for (const chunk of this._queuedChunks) {\\n      this._loaded += chunk.byteLength;\\n    }\\n    this._requests = [];\\n    this._headersReady = Promise.resolve();\\n    stream._fullRequestReader = this;\\n\\n    this.onProgress = null;\\n  }\\n\\n  _enqueue(chunk) {\\n    if (this._done) {\\n      return; \u002F\u002F Ignore new data.\\n    }\\n    if (this._requests.length > 0) {\\n      const requestCapability = this._requests.shift();\\n      requestCapability.resolve({ value: chunk, done: false });\\n    } else {\\n      this._queuedChunks.push(chunk);\\n    }\\n    this._loaded += chunk.byteLength;\\n  }\\n\\n  get headersReady() {\\n    return this._headersReady;\\n  }\\n\\n  get filename() {\\n    return this._filename;\\n  }\\n\\n  get isRangeSupported() {\\n    return this._stream._isRangeSupported;\\n  }\\n\\n  get isStreamingSupported() {\\n    return this._stream._isStreamingSupported;\\n  }\\n\\n  get contentLength() {\\n    return this._stream._contentLength;\\n  }\\n\\n  async read() {\\n    if (this._queuedChunks.length > 0) {\\n      const chunk = this._queuedChunks.shift();\\n      return { value: chunk, done: false };\\n    }\\n    if (this._done) {\\n      return { value: undefined, done: true };\\n    }\\n    const requestCapability = Promise.withResolvers();\\n    this._requests.push(requestCapability);\\n    return requestCapability.promise;\\n  }\\n\\n  cancel(reason) {\\n    this._done = true;\\n    for (const requestCapability of this._requests) {\\n      requestCapability.resolve({ value: undefined, done: true });\\n    }\\n    this._requests.length = 0;\\n  }\\n\\n  progressiveDone() {\\n    if (this._done) {\\n      return;\\n    }\\n    this._done = true;\\n  }\\n}\\n\\n\u002F** @implements {IPDFStreamRangeReader} *\u002F\\nclass PDFDataTransportStreamRangeReader {\\n  constructor(stream, begin, end) {\\n    this._stream = stream;\\n    this._begin = begin;\\n    this._end = end;\\n    this._queuedChunk = null;\\n    this._requests = [];\\n    this._done = false;\\n\\n    this.onProgress = null;\\n  }\\n\\n  _enqueue(chunk) {\\n    if (this._done) {\\n      return; \u002F\u002F ignore new data\\n    }\\n    if (this._requests.length === 0) {\\n      this._queuedChunk = chunk;\\n    } else {\\n      const requestsCapability = this._requests.shift();\\n      requestsCapability.resolve({ value: chunk, done: false });\\n      for (const requestCapability of this._requests) {\\n        requestCapability.resolve({ value: undefined, done: true });\\n      }\\n      this._requests.length = 0;\\n    }\\n    this._done = true;\\n    this._stream._removeRangeReader(this);\\n  }\\n\\n  get isStreamingSupported() {\\n    return false;\\n  }\\n\\n  async read() {\\n    if (this._queuedChunk) {\\n      const chunk = this._queuedChunk;\\n      this._queuedChunk = null;\\n      return { value: chunk, done: false };\\n    }\\n    if (this._done) {\\n      return { value: undefined, done: true };\\n    }\\n    const requestCapability = Promise.withResolvers();\\n    this._requests.push(requestCapability);\\n    return requestCapability.promise;\\n  }\\n\\n  cancel(reason) {\\n    this._done = true;\\n    for (const requestCapability of this._requests) {\\n      requestCapability.resolve({ value: undefined, done: true });\\n    }\\n    this._requests.length = 0;\\n    this._stream._removeRangeReader(this);\\n  }\\n}\\n\\nexport { PDFDataTransportStream };\\n\",\"\u002F* Copyright 2017 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { stringToBytes } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\n\u002F\u002F This getFilenameFromContentDispositionHeader function is adapted from\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002FRob--W\u002Fopen-in-browser\u002Fblob\u002F7e2e35a38b8b4e981b11da7b2f01df0149049e92\u002Fextension\u002Fcontent-disposition.js\\n\u002F\u002F with the following changes:\\n\u002F\u002F - Modified to conform to PDF.js's coding style.\\n\u002F\u002F - Move return to the end of the function to prevent Babel from dropping the\\n\u002F\u002F   function declarations.\\n\\n\u002F**\\n * Extract file name from the Content-Disposition HTTP response header.\\n *\\n * @param {string} contentDisposition\\n * @returns {string} Filename, if found in the Content-Disposition header.\\n *\u002F\\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\\n  let needsEncodingFixup = true;\\n\\n  \u002F\u002F filename*=ext-value (\\\"ext-value\\\" from RFC 5987, referenced by RFC 6266).\\n  let tmp = toParamRegExp(\\\"filename\\\\\\\\*\\\", \\\"i\\\").exec(contentDisposition);\\n  if (tmp) {\\n    tmp = tmp[1];\\n    let filename = rfc2616unquote(tmp);\\n    filename = unescape(filename);\\n    filename = rfc5987decode(filename);\\n    filename = rfc2047decode(filename);\\n    return fixupEncoding(filename);\\n  }\\n\\n  \u002F\u002F Continuations (RFC 2231 section 3, referenced by RFC 5987 section 3.1).\\n  \u002F\u002F filename*n*=part\\n  \u002F\u002F filename*n=part\\n  tmp = rfc2231getparam(contentDisposition);\\n  if (tmp) {\\n    \u002F\u002F RFC 2047, section\\n    const filename = rfc2047decode(tmp);\\n    return fixupEncoding(filename);\\n  }\\n\\n  \u002F\u002F filename=value (RFC 5987, section 4.1).\\n  tmp = toParamRegExp(\\\"filename\\\", \\\"i\\\").exec(contentDisposition);\\n  if (tmp) {\\n    tmp = tmp[1];\\n    let filename = rfc2616unquote(tmp);\\n    filename = rfc2047decode(filename);\\n    return fixupEncoding(filename);\\n  }\\n\\n  \u002F\u002F After this line there are only function declarations. We cannot put\\n  \u002F\u002F \\\"return\\\" here for readability because babel would then drop the function\\n  \u002F\u002F declarations...\\n  function toParamRegExp(attributePattern, flags) {\\n    return new RegExp(\\n      \\\"(?:^|;)\\\\\\\\s*\\\" +\\n        attributePattern +\\n        \\\"\\\\\\\\s*=\\\\\\\\s*\\\" +\\n        \u002F\u002F Captures: value = token | quoted-string\\n        \u002F\u002F (RFC 2616, section 3.6 and referenced by RFC 6266 4.1)\\n        \\\"(\\\" +\\n        '[^\\\";\\\\\\\\s][^;\\\\\\\\s]*' +\\n        \\\"|\\\" +\\n        '\\\"(?:[^\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\\\\"?)+\\\"?' +\\n        \\\")\\\",\\n      flags\\n    );\\n  }\\n  function textdecode(encoding, value) {\\n    if (encoding) {\\n      if (!\u002F^[\\\\x00-\\\\xFF]+$\u002F.test(value)) {\\n        return value;\\n      }\\n      try {\\n        const decoder = new TextDecoder(encoding, { fatal: true });\\n        const buffer = stringToBytes(value);\\n        value = decoder.decode(buffer);\\n        needsEncodingFixup = false;\\n      } catch {\\n        \u002F\u002F TextDecoder constructor threw - unrecognized encoding.\\n      }\\n    }\\n    return value;\\n  }\\n  function fixupEncoding(value) {\\n    if (needsEncodingFixup && \u002F[\\\\x80-\\\\xff]\u002F.test(value)) {\\n      \u002F\u002F Maybe multi-byte UTF-8.\\n      value = textdecode(\\\"utf-8\\\", value);\\n      if (needsEncodingFixup) {\\n        \u002F\u002F Try iso-8859-1 encoding.\\n        value = textdecode(\\\"iso-8859-1\\\", value);\\n      }\\n    }\\n    return value;\\n  }\\n  function rfc2231getparam(contentDispositionStr) {\\n    const matches = [];\\n    let match;\\n    \u002F\u002F Iterate over all filename*n= and filename*n*= with n being an integer\\n    \u002F\u002F of at least zero. Any non-zero number must not start with '0'.\\n    const iter = toParamRegExp(\\\"filename\\\\\\\\*((?!0\\\\\\\\d)\\\\\\\\d+)(\\\\\\\\*?)\\\", \\\"ig\\\");\\n    while ((match = iter.exec(contentDispositionStr)) !== null) {\\n      let [, n, quot, part] = match; \u002F\u002F eslint-disable-line prefer-const\\n      n = parseInt(n, 10);\\n      if (n in matches) {\\n        \u002F\u002F Ignore anything after the invalid second filename*0.\\n        if (n === 0) {\\n          break;\\n        }\\n        continue;\\n      }\\n      matches[n] = [quot, part];\\n    }\\n    const parts = [];\\n    for (let n = 0; n \u003C matches.length; ++n) {\\n      if (!(n in matches)) {\\n        \u002F\u002F Numbers must be consecutive. Truncate when there is a hole.\\n        break;\\n      }\\n      let [quot, part] = matches[n]; \u002F\u002F eslint-disable-line prefer-const\\n      part = rfc2616unquote(part);\\n      if (quot) {\\n        part = unescape(part);\\n        if (n === 0) {\\n          part = rfc5987decode(part);\\n        }\\n      }\\n      parts.push(part);\\n    }\\n    return parts.join(\\\"\\\");\\n  }\\n  function rfc2616unquote(value) {\\n    if (value.startsWith('\\\"')) {\\n      const parts = value.slice(1).split('\\\\\\\\\\\"');\\n      \u002F\u002F Find the first unescaped \\\" and terminate there.\\n      for (let i = 0; i \u003C parts.length; ++i) {\\n        const quotindex = parts[i].indexOf('\\\"');\\n        if (quotindex !== -1) {\\n          parts[i] = parts[i].slice(0, quotindex);\\n          parts.length = i + 1; \u002F\u002F Truncates and stop the iteration.\\n        }\\n        parts[i] = parts[i].replaceAll(\u002F\\\\\\\\(.)\u002Fg, \\\"$1\\\");\\n      }\\n      value = parts.join('\\\"');\\n    }\\n    return value;\\n  }\\n  function rfc5987decode(extvalue) {\\n    \u002F\u002F Decodes \\\"ext-value\\\" from RFC 5987.\\n    const encodingend = extvalue.indexOf(\\\"'\\\");\\n    if (encodingend === -1) {\\n      \u002F\u002F Some servers send \\\"filename*=\\\" without encoding 'language' prefix,\\n      \u002F\u002F e.g. in https:\u002F\u002Fgithub.com\u002FRob--W\u002Fopen-in-browser\u002Fissues\u002F26\\n      \u002F\u002F Let's accept the value like Firefox (57) (Chrome 62 rejects it).\\n      return extvalue;\\n    }\\n    const encoding = extvalue.slice(0, encodingend);\\n    const langvalue = extvalue.slice(encodingend + 1);\\n    \u002F\u002F Ignore language (RFC 5987 section 3.2.1, and RFC 6266 section 4.1 ).\\n    const value = langvalue.replace(\u002F^[^']*'\u002F, \\\"\\\");\\n    return textdecode(encoding, value);\\n  }\\n  function rfc2047decode(value) {\\n    \u002F\u002F RFC 2047-decode the result. Firefox tried to drop support for it, but\\n    \u002F\u002F backed out because some servers use it - https:\u002F\u002Fbugzil.la\u002F875615\\n    \u002F\u002F Firefox's condition for decoding is here: https:\u002F\u002Fsearchfox.org\u002Fmozilla-central\u002Frev\u002F4a590a5a15e35d88a3b23dd6ac3c471cf85b04a8\u002Fnetwerk\u002Fmime\u002FnsMIMEHeaderParamImpl.cpp#742-748\\n\\n    \u002F\u002F We are more strict and only recognize RFC 2047-encoding if the value\\n    \u002F\u002F starts with \\\"=?\\\", since then it is likely that the full value is\\n    \u002F\u002F RFC 2047-encoded.\\n\\n    \u002F\u002F Firefox also decodes words even where RFC 2047 section 5 states:\\n    \u002F\u002F \\\"An 'encoded-word' MUST NOT appear within a 'quoted-string'.\\\"\\n    if (!value.startsWith(\\\"=?\\\") || \u002F[\\\\x00-\\\\x19\\\\x80-\\\\xff]\u002F.test(value)) {\\n      return value;\\n    }\\n    \u002F\u002F RFC 2047, section 2.4\\n    \u002F\u002F encoded-word = \\\"=?\\\" charset \\\"?\\\" encoding \\\"?\\\" encoded-text \\\"?=\\\"\\n    \u002F\u002F charset = token (but let's restrict to characters that denote a\\n    \u002F\u002F       possibly valid encoding).\\n    \u002F\u002F encoding = q or b\\n    \u002F\u002F encoded-text = any printable ASCII character other than ? or space.\\n    \u002F\u002F        ... but Firefox permits ? and space.\\n    return value.replaceAll(\\n      \u002F=\\\\?([\\\\w-]*)\\\\?([QqBb])\\\\?((?:[^?]|\\\\?(?!=))*)\\\\?=\u002Fg,\\n      function (matches, charset, encoding, text) {\\n        if (encoding === \\\"q\\\" || encoding === \\\"Q\\\") {\\n          \u002F\u002F RFC 2047 section 4.2.\\n          text = text.replaceAll(\\\"_\\\", \\\" \\\");\\n          text = text.replaceAll(\u002F=([0-9a-fA-F]{2})\u002Fg, function (match, hex) {\\n            return String.fromCharCode(parseInt(hex, 16));\\n          });\\n          return textdecode(charset, text);\\n        } \u002F\u002F else encoding is b or B - base64 (RFC 2047 section 4.1)\\n        try {\\n          text = atob(text);\\n        } catch {}\\n        return textdecode(charset, text);\\n      }\\n    );\\n  }\\n\\n  return \\\"\\\";\\n}\\n\\nexport { getFilenameFromContentDispositionHeader };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  assert,\\n  MissingPDFException,\\n  UnexpectedResponseException,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { getFilenameFromContentDispositionHeader } from \\\".\u002Fcontent_disposition.js\\\";\\nimport { isPdfFile } from \\\".\u002Fdisplay_utils.js\\\";\\n\\nfunction validateRangeRequestCapabilities({\\n  getResponseHeader,\\n  isHttp,\\n  rangeChunkSize,\\n  disableRange,\\n}) {\\n  if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n    assert(\\n      Number.isInteger(rangeChunkSize) && rangeChunkSize > 0,\\n      \\\"rangeChunkSize must be an integer larger than zero.\\\"\\n    );\\n  }\\n  const returnValues = {\\n    allowRangeRequests: false,\\n    suggestedLength: undefined,\\n  };\\n\\n  const length = parseInt(getResponseHeader(\\\"Content-Length\\\"), 10);\\n  if (!Number.isInteger(length)) {\\n    return returnValues;\\n  }\\n\\n  returnValues.suggestedLength = length;\\n\\n  if (length \u003C= 2 * rangeChunkSize) {\\n    \u002F\u002F The file size is smaller than the size of two chunks, so it does not\\n    \u002F\u002F make any sense to abort the request and retry with a range request.\\n    return returnValues;\\n  }\\n\\n  if (disableRange || !isHttp) {\\n    return returnValues;\\n  }\\n  if (getResponseHeader(\\\"Accept-Ranges\\\") !== \\\"bytes\\\") {\\n    return returnValues;\\n  }\\n\\n  const contentEncoding = getResponseHeader(\\\"Content-Encoding\\\") || \\\"identity\\\";\\n  if (contentEncoding !== \\\"identity\\\") {\\n    return returnValues;\\n  }\\n\\n  returnValues.allowRangeRequests = true;\\n  return returnValues;\\n}\\n\\nfunction extractFilenameFromHeader(getResponseHeader) {\\n  const contentDisposition = getResponseHeader(\\\"Content-Disposition\\\");\\n  if (contentDisposition) {\\n    let filename = getFilenameFromContentDispositionHeader(contentDisposition);\\n    if (filename.includes(\\\"%\\\")) {\\n      try {\\n        filename = decodeURIComponent(filename);\\n      } catch {}\\n    }\\n    if (isPdfFile(filename)) {\\n      return filename;\\n    }\\n  }\\n  return null;\\n}\\n\\nfunction createResponseStatusError(status, url) {\\n  if (status === 404 || (status === 0 && url.startsWith(\\\"file:\\\"))) {\\n    return new MissingPDFException('Missing PDF \\\"' + url + '\\\".');\\n  }\\n  return new UnexpectedResponseException(\\n    `Unexpected server response (${status}) while retrieving PDF \\\"${url}\\\".`,\\n    status\\n  );\\n}\\n\\nfunction validateResponseStatus(status) {\\n  return status === 200 || status === 206;\\n}\\n\\nexport {\\n  createResponseStatusError,\\n  extractFilenameFromHeader,\\n  validateRangeRequestCapabilities,\\n  validateResponseStatus,\\n};\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { AbortException, assert, warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  createResponseStatusError,\\n  extractFilenameFromHeader,\\n  validateRangeRequestCapabilities,\\n  validateResponseStatus,\\n} from \\\".\u002Fnetwork_utils.js\\\";\\n\\nif (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n  throw new Error(\\n    'Module \\\".\u002Ffetch_stream.js\\\" shall not be used with MOZCENTRAL builds.'\\n  );\\n}\\n\\nfunction createFetchOptions(headers, withCredentials, abortController) {\\n  return {\\n    method: \\\"GET\\\",\\n    headers,\\n    signal: abortController.signal,\\n    mode: \\\"cors\\\",\\n    credentials: withCredentials ? \\\"include\\\" : \\\"same-origin\\\",\\n    redirect: \\\"follow\\\",\\n  };\\n}\\n\\nfunction createHeaders(httpHeaders) {\\n  const headers = new Headers();\\n  for (const property in httpHeaders) {\\n    const value = httpHeaders[property];\\n    if (value === undefined) {\\n      continue;\\n    }\\n    headers.append(property, value);\\n  }\\n  return headers;\\n}\\n\\nfunction getArrayBuffer(val) {\\n  if (val instanceof Uint8Array) {\\n    return val.buffer;\\n  }\\n  if (val instanceof ArrayBuffer) {\\n    return val;\\n  }\\n  warn(`getArrayBuffer - unexpected data format: ${val}`);\\n  return new Uint8Array(val).buffer;\\n}\\n\\n\u002F** @implements {IPDFStream} *\u002F\\nclass PDFFetchStream {\\n  constructor(source) {\\n    this.source = source;\\n    this.isHttp = \u002F^https?:\u002Fi.test(source.url);\\n    this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\\n\\n    this._fullRequestReader = null;\\n    this._rangeRequestReaders = [];\\n  }\\n\\n  get _progressiveDataLength() {\\n    return this._fullRequestReader?._loaded ?? 0;\\n  }\\n\\n  getFullReader() {\\n    assert(\\n      !this._fullRequestReader,\\n      \\\"PDFFetchStream.getFullReader can only be called once.\\\"\\n    );\\n    this._fullRequestReader = new PDFFetchStreamReader(this);\\n    return this._fullRequestReader;\\n  }\\n\\n  getRangeReader(begin, end) {\\n    if (end \u003C= this._progressiveDataLength) {\\n      return null;\\n    }\\n    const reader = new PDFFetchStreamRangeReader(this, begin, end);\\n    this._rangeRequestReaders.push(reader);\\n    return reader;\\n  }\\n\\n  cancelAllRequests(reason) {\\n    this._fullRequestReader?.cancel(reason);\\n\\n    for (const reader of this._rangeRequestReaders.slice(0)) {\\n      reader.cancel(reason);\\n    }\\n  }\\n}\\n\\n\u002F** @implements {IPDFStreamReader} *\u002F\\nclass PDFFetchStreamReader {\\n  constructor(stream) {\\n    this._stream = stream;\\n    this._reader = null;\\n    this._loaded = 0;\\n    this._filename = null;\\n    const source = stream.source;\\n    this._withCredentials = source.withCredentials || false;\\n    this._contentLength = source.length;\\n    this._headersCapability = Promise.withResolvers();\\n    this._disableRange = source.disableRange || false;\\n    this._rangeChunkSize = source.rangeChunkSize;\\n    if (!this._rangeChunkSize && !this._disableRange) {\\n      this._disableRange = true;\\n    }\\n\\n    this._abortController = new AbortController();\\n    this._isStreamingSupported = !source.disableStream;\\n    this._isRangeSupported = !source.disableRange;\\n\\n    this._headers = createHeaders(this._stream.httpHeaders);\\n\\n    const url = source.url;\\n    fetch(\\n      url,\\n      createFetchOptions(\\n        this._headers,\\n        this._withCredentials,\\n        this._abortController\\n      )\\n    )\\n      .then(response => {\\n        if (!validateResponseStatus(response.status)) {\\n          throw createResponseStatusError(response.status, url);\\n        }\\n        this._reader = response.body.getReader();\\n        this._headersCapability.resolve();\\n\\n        const getResponseHeader = name => response.headers.get(name);\\n\\n        const { allowRangeRequests, suggestedLength } =\\n          validateRangeRequestCapabilities({\\n            getResponseHeader,\\n            isHttp: this._stream.isHttp,\\n            rangeChunkSize: this._rangeChunkSize,\\n            disableRange: this._disableRange,\\n          });\\n\\n        this._isRangeSupported = allowRangeRequests;\\n        \u002F\u002F Setting right content length.\\n        this._contentLength = suggestedLength || this._contentLength;\\n\\n        this._filename = extractFilenameFromHeader(getResponseHeader);\\n\\n        \u002F\u002F We need to stop reading when range is supported and streaming is\\n        \u002F\u002F disabled.\\n        if (!this._isStreamingSupported && this._isRangeSupported) {\\n          this.cancel(new AbortException(\\\"Streaming is disabled.\\\"));\\n        }\\n      })\\n      .catch(this._headersCapability.reject);\\n\\n    this.onProgress = null;\\n  }\\n\\n  get headersReady() {\\n    return this._headersCapability.promise;\\n  }\\n\\n  get filename() {\\n    return this._filename;\\n  }\\n\\n  get contentLength() {\\n    return this._contentLength;\\n  }\\n\\n  get isRangeSupported() {\\n    return this._isRangeSupported;\\n  }\\n\\n  get isStreamingSupported() {\\n    return this._isStreamingSupported;\\n  }\\n\\n  async read() {\\n    await this._headersCapability.promise;\\n    const { value, done } = await this._reader.read();\\n    if (done) {\\n      return { value, done };\\n    }\\n    this._loaded += value.byteLength;\\n    this.onProgress?.({\\n      loaded: this._loaded,\\n      total: this._contentLength,\\n    });\\n\\n    return { value: getArrayBuffer(value), done: false };\\n  }\\n\\n  cancel(reason) {\\n    this._reader?.cancel(reason);\\n    this._abortController.abort();\\n  }\\n}\\n\\n\u002F** @implements {IPDFStreamRangeReader} *\u002F\\nclass PDFFetchStreamRangeReader {\\n  constructor(stream, begin, end) {\\n    this._stream = stream;\\n    this._reader = null;\\n    this._loaded = 0;\\n    const source = stream.source;\\n    this._withCredentials = source.withCredentials || false;\\n    this._readCapability = Promise.withResolvers();\\n    this._isStreamingSupported = !source.disableStream;\\n\\n    this._abortController = new AbortController();\\n    this._headers = createHeaders(this._stream.httpHeaders);\\n    this._headers.append(\\\"Range\\\", `bytes=${begin}-${end - 1}`);\\n\\n    const url = source.url;\\n    fetch(\\n      url,\\n      createFetchOptions(\\n        this._headers,\\n        this._withCredentials,\\n        this._abortController\\n      )\\n    )\\n      .then(response => {\\n        if (!validateResponseStatus(response.status)) {\\n          throw createResponseStatusError(response.status, url);\\n        }\\n        this._readCapability.resolve();\\n        this._reader = response.body.getReader();\\n      })\\n      .catch(this._readCapability.reject);\\n\\n    this.onProgress = null;\\n  }\\n\\n  get isStreamingSupported() {\\n    return this._isStreamingSupported;\\n  }\\n\\n  async read() {\\n    await this._readCapability.promise;\\n    const { value, done } = await this._reader.read();\\n    if (done) {\\n      return { value, done };\\n    }\\n    this._loaded += value.byteLength;\\n    this.onProgress?.({ loaded: this._loaded });\\n\\n    return { value: getArrayBuffer(value), done: false };\\n  }\\n\\n  cancel(reason) {\\n    this._reader?.cancel(reason);\\n    this._abortController.abort();\\n  }\\n}\\n\\nexport { PDFFetchStream };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { assert, stringToBytes } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  createResponseStatusError,\\n  extractFilenameFromHeader,\\n  validateRangeRequestCapabilities,\\n} from \\\".\u002Fnetwork_utils.js\\\";\\n\\nif (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n  throw new Error(\\n    'Module \\\".\u002Fnetwork.js\\\" shall not be used with MOZCENTRAL builds.'\\n  );\\n}\\n\\nconst OK_RESPONSE = 200;\\nconst PARTIAL_CONTENT_RESPONSE = 206;\\n\\nfunction getArrayBuffer(xhr) {\\n  const data = xhr.response;\\n  if (typeof data !== \\\"string\\\") {\\n    return data;\\n  }\\n  return stringToBytes(data).buffer;\\n}\\n\\nclass NetworkManager {\\n  constructor(url, args = {}) {\\n    this.url = url;\\n    this.isHttp = \u002F^https?:\u002Fi.test(url);\\n    this.httpHeaders = (this.isHttp && args.httpHeaders) || Object.create(null);\\n    this.withCredentials = args.withCredentials || false;\\n\\n    this.currXhrId = 0;\\n    this.pendingRequests = Object.create(null);\\n  }\\n\\n  requestRange(begin, end, listeners) {\\n    const args = {\\n      begin,\\n      end,\\n    };\\n    for (const prop in listeners) {\\n      args[prop] = listeners[prop];\\n    }\\n    return this.request(args);\\n  }\\n\\n  requestFull(listeners) {\\n    return this.request(listeners);\\n  }\\n\\n  request(args) {\\n    const xhr = new XMLHttpRequest();\\n    const xhrId = this.currXhrId++;\\n    const pendingRequest = (this.pendingRequests[xhrId] = { xhr });\\n\\n    xhr.open(\\\"GET\\\", this.url);\\n    xhr.withCredentials = this.withCredentials;\\n    for (const property in this.httpHeaders) {\\n      const value = this.httpHeaders[property];\\n      if (value === undefined) {\\n        continue;\\n      }\\n      xhr.setRequestHeader(property, value);\\n    }\\n    if (this.isHttp && \\\"begin\\\" in args && \\\"end\\\" in args) {\\n      xhr.setRequestHeader(\\\"Range\\\", `bytes=${args.begin}-${args.end - 1}`);\\n      pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\\n    } else {\\n      pendingRequest.expectedStatus = OK_RESPONSE;\\n    }\\n    xhr.responseType = \\\"arraybuffer\\\";\\n\\n    if (args.onError) {\\n      xhr.onerror = function (evt) {\\n        args.onError(xhr.status);\\n      };\\n    }\\n    xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\\n    xhr.onprogress = this.onProgress.bind(this, xhrId);\\n\\n    pendingRequest.onHeadersReceived = args.onHeadersReceived;\\n    pendingRequest.onDone = args.onDone;\\n    pendingRequest.onError = args.onError;\\n    pendingRequest.onProgress = args.onProgress;\\n\\n    xhr.send(null);\\n\\n    return xhrId;\\n  }\\n\\n  onProgress(xhrId, evt) {\\n    const pendingRequest = this.pendingRequests[xhrId];\\n    if (!pendingRequest) {\\n      return; \u002F\u002F Maybe abortRequest was called...\\n    }\\n    pendingRequest.onProgress?.(evt);\\n  }\\n\\n  onStateChange(xhrId, evt) {\\n    const pendingRequest = this.pendingRequests[xhrId];\\n    if (!pendingRequest) {\\n      return; \u002F\u002F Maybe abortRequest was called...\\n    }\\n\\n    const xhr = pendingRequest.xhr;\\n    if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\\n      pendingRequest.onHeadersReceived();\\n      delete pendingRequest.onHeadersReceived;\\n    }\\n\\n    if (xhr.readyState !== 4) {\\n      return;\\n    }\\n\\n    if (!(xhrId in this.pendingRequests)) {\\n      \u002F\u002F The XHR request might have been aborted in onHeadersReceived()\\n      \u002F\u002F callback, in which case we should abort request.\\n      return;\\n    }\\n\\n    delete this.pendingRequests[xhrId];\\n\\n    \u002F\u002F Success status == 0 can be on ftp, file and other protocols.\\n    if (xhr.status === 0 && this.isHttp) {\\n      pendingRequest.onError?.(xhr.status);\\n      return;\\n    }\\n    const xhrStatus = xhr.status || OK_RESPONSE;\\n\\n    \u002F\u002F From http:\u002F\u002Fwww.w3.org\u002FProtocols\u002Frfc2616\u002Frfc2616-sec14.html#sec14.35.2:\\n    \u002F\u002F \\\"A server MAY ignore the Range header\\\". This means it's possible to\\n    \u002F\u002F get a 200 rather than a 206 response from a range request.\\n    const ok_response_on_range_request =\\n      xhrStatus === OK_RESPONSE &&\\n      pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\\n\\n    if (\\n      !ok_response_on_range_request &&\\n      xhrStatus !== pendingRequest.expectedStatus\\n    ) {\\n      pendingRequest.onError?.(xhr.status);\\n      return;\\n    }\\n\\n    const chunk = getArrayBuffer(xhr);\\n    if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\\n      const rangeHeader = xhr.getResponseHeader(\\\"Content-Range\\\");\\n      const matches = \u002Fbytes (\\\\d+)-(\\\\d+)\\\\\u002F(\\\\d+)\u002F.exec(rangeHeader);\\n      pendingRequest.onDone({\\n        begin: parseInt(matches[1], 10),\\n        chunk,\\n      });\\n    } else if (chunk) {\\n      pendingRequest.onDone({\\n        begin: 0,\\n        chunk,\\n      });\\n    } else {\\n      pendingRequest.onError?.(xhr.status);\\n    }\\n  }\\n\\n  getRequestXhr(xhrId) {\\n    return this.pendingRequests[xhrId].xhr;\\n  }\\n\\n  isPendingRequest(xhrId) {\\n    return xhrId in this.pendingRequests;\\n  }\\n\\n  abortRequest(xhrId) {\\n    const xhr = this.pendingRequests[xhrId].xhr;\\n    delete this.pendingRequests[xhrId];\\n    xhr.abort();\\n  }\\n}\\n\\n\u002F** @implements {IPDFStream} *\u002F\\nclass PDFNetworkStream {\\n  constructor(source) {\\n    this._source = source;\\n    this._manager = new NetworkManager(source.url, {\\n      httpHeaders: source.httpHeaders,\\n      withCredentials: source.withCredentials,\\n    });\\n    this._rangeChunkSize = source.rangeChunkSize;\\n    this._fullRequestReader = null;\\n    this._rangeRequestReaders = [];\\n  }\\n\\n  _onRangeRequestReaderClosed(reader) {\\n    const i = this._rangeRequestReaders.indexOf(reader);\\n    if (i >= 0) {\\n      this._rangeRequestReaders.splice(i, 1);\\n    }\\n  }\\n\\n  getFullReader() {\\n    assert(\\n      !this._fullRequestReader,\\n      \\\"PDFNetworkStream.getFullReader can only be called once.\\\"\\n    );\\n    this._fullRequestReader = new PDFNetworkStreamFullRequestReader(\\n      this._manager,\\n      this._source\\n    );\\n    return this._fullRequestReader;\\n  }\\n\\n  getRangeReader(begin, end) {\\n    const reader = new PDFNetworkStreamRangeRequestReader(\\n      this._manager,\\n      begin,\\n      end\\n    );\\n    reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\\n    this._rangeRequestReaders.push(reader);\\n    return reader;\\n  }\\n\\n  cancelAllRequests(reason) {\\n    this._fullRequestReader?.cancel(reason);\\n\\n    for (const reader of this._rangeRequestReaders.slice(0)) {\\n      reader.cancel(reason);\\n    }\\n  }\\n}\\n\\n\u002F** @implements {IPDFStreamReader} *\u002F\\nclass PDFNetworkStreamFullRequestReader {\\n  constructor(manager, source) {\\n    this._manager = manager;\\n\\n    const args = {\\n      onHeadersReceived: this._onHeadersReceived.bind(this),\\n      onDone: this._onDone.bind(this),\\n      onError: this._onError.bind(this),\\n      onProgress: this._onProgress.bind(this),\\n    };\\n    this._url = source.url;\\n    this._fullRequestId = manager.requestFull(args);\\n    this._headersReceivedCapability = Promise.withResolvers();\\n    this._disableRange = source.disableRange || false;\\n    this._contentLength = source.length; \u002F\u002F Optional\\n    this._rangeChunkSize = source.rangeChunkSize;\\n    if (!this._rangeChunkSize && !this._disableRange) {\\n      this._disableRange = true;\\n    }\\n\\n    this._isStreamingSupported = false;\\n    this._isRangeSupported = false;\\n\\n    this._cachedChunks = [];\\n    this._requests = [];\\n    this._done = false;\\n    this._storedError = undefined;\\n    this._filename = null;\\n\\n    this.onProgress = null;\\n  }\\n\\n  _onHeadersReceived() {\\n    const fullRequestXhrId = this._fullRequestId;\\n    const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\\n\\n    const getResponseHeader = name => fullRequestXhr.getResponseHeader(name);\\n\\n    const { allowRangeRequests, suggestedLength } =\\n      validateRangeRequestCapabilities({\\n        getResponseHeader,\\n        isHttp: this._manager.isHttp,\\n        rangeChunkSize: this._rangeChunkSize,\\n        disableRange: this._disableRange,\\n      });\\n\\n    if (allowRangeRequests) {\\n      this._isRangeSupported = true;\\n    }\\n    \u002F\u002F Setting right content length.\\n    this._contentLength = suggestedLength || this._contentLength;\\n\\n    this._filename = extractFilenameFromHeader(getResponseHeader);\\n\\n    if (this._isRangeSupported) {\\n      \u002F\u002F NOTE: by cancelling the full request, and then issuing range\\n      \u002F\u002F requests, there will be an issue for sites where you can only\\n      \u002F\u002F request the pdf once. However, if this is the case, then the\\n      \u002F\u002F server should not be returning that it can support range requests.\\n      this._manager.abortRequest(fullRequestXhrId);\\n    }\\n\\n    this._headersReceivedCapability.resolve();\\n  }\\n\\n  _onDone(data) {\\n    if (data) {\\n      if (this._requests.length > 0) {\\n        const requestCapability = this._requests.shift();\\n        requestCapability.resolve({ value: data.chunk, done: false });\\n      } else {\\n        this._cachedChunks.push(data.chunk);\\n      }\\n    }\\n    this._done = true;\\n    if (this._cachedChunks.length > 0) {\\n      return;\\n    }\\n    for (const requestCapability of this._requests) {\\n      requestCapability.resolve({ value: undefined, done: true });\\n    }\\n    this._requests.length = 0;\\n  }\\n\\n  _onError(status) {\\n    this._storedError = createResponseStatusError(status, this._url);\\n    this._headersReceivedCapability.reject(this._storedError);\\n    for (const requestCapability of this._requests) {\\n      requestCapability.reject(this._storedError);\\n    }\\n    this._requests.length = 0;\\n    this._cachedChunks.length = 0;\\n  }\\n\\n  _onProgress(evt) {\\n    this.onProgress?.({\\n      loaded: evt.loaded,\\n      total: evt.lengthComputable ? evt.total : this._contentLength,\\n    });\\n  }\\n\\n  get filename() {\\n    return this._filename;\\n  }\\n\\n  get isRangeSupported() {\\n    return this._isRangeSupported;\\n  }\\n\\n  get isStreamingSupported() {\\n    return this._isStreamingSupported;\\n  }\\n\\n  get contentLength() {\\n    return this._contentLength;\\n  }\\n\\n  get headersReady() {\\n    return this._headersReceivedCapability.promise;\\n  }\\n\\n  async read() {\\n    if (this._storedError) {\\n      throw this._storedError;\\n    }\\n    if (this._cachedChunks.length > 0) {\\n      const chunk = this._cachedChunks.shift();\\n      return { value: chunk, done: false };\\n    }\\n    if (this._done) {\\n      return { value: undefined, done: true };\\n    }\\n    const requestCapability = Promise.withResolvers();\\n    this._requests.push(requestCapability);\\n    return requestCapability.promise;\\n  }\\n\\n  cancel(reason) {\\n    this._done = true;\\n    this._headersReceivedCapability.reject(reason);\\n    for (const requestCapability of this._requests) {\\n      requestCapability.resolve({ value: undefined, done: true });\\n    }\\n    this._requests.length = 0;\\n    if (this._manager.isPendingRequest(this._fullRequestId)) {\\n      this._manager.abortRequest(this._fullRequestId);\\n    }\\n    this._fullRequestReader = null;\\n  }\\n}\\n\\n\u002F** @implements {IPDFStreamRangeReader} *\u002F\\nclass PDFNetworkStreamRangeRequestReader {\\n  constructor(manager, begin, end) {\\n    this._manager = manager;\\n\\n    const args = {\\n      onDone: this._onDone.bind(this),\\n      onError: this._onError.bind(this),\\n      onProgress: this._onProgress.bind(this),\\n    };\\n    this._url = manager.url;\\n    this._requestId = manager.requestRange(begin, end, args);\\n    this._requests = [];\\n    this._queuedChunk = null;\\n    this._done = false;\\n    this._storedError = undefined;\\n\\n    this.onProgress = null;\\n    this.onClosed = null;\\n  }\\n\\n  _close() {\\n    this.onClosed?.(this);\\n  }\\n\\n  _onDone(data) {\\n    const chunk = data.chunk;\\n    if (this._requests.length > 0) {\\n      const requestCapability = this._requests.shift();\\n      requestCapability.resolve({ value: chunk, done: false });\\n    } else {\\n      this._queuedChunk = chunk;\\n    }\\n    this._done = true;\\n    for (const requestCapability of this._requests) {\\n      requestCapability.resolve({ value: undefined, done: true });\\n    }\\n    this._requests.length = 0;\\n    this._close();\\n  }\\n\\n  _onError(status) {\\n    this._storedError = createResponseStatusError(status, this._url);\\n    for (const requestCapability of this._requests) {\\n      requestCapability.reject(this._storedError);\\n    }\\n    this._requests.length = 0;\\n    this._queuedChunk = null;\\n  }\\n\\n  _onProgress(evt) {\\n    if (!this.isStreamingSupported) {\\n      this.onProgress?.({ loaded: evt.loaded });\\n    }\\n  }\\n\\n  get isStreamingSupported() {\\n    return false;\\n  }\\n\\n  async read() {\\n    if (this._storedError) {\\n      throw this._storedError;\\n    }\\n    if (this._queuedChunk !== null) {\\n      const chunk = this._queuedChunk;\\n      this._queuedChunk = null;\\n      return { value: chunk, done: false };\\n    }\\n    if (this._done) {\\n      return { value: undefined, done: true };\\n    }\\n    const requestCapability = Promise.withResolvers();\\n    this._requests.push(requestCapability);\\n    return requestCapability.promise;\\n  }\\n\\n  cancel(reason) {\\n    this._done = true;\\n    for (const requestCapability of this._requests) {\\n      requestCapability.resolve({ value: undefined, done: true });\\n    }\\n    this._requests.length = 0;\\n    if (this._manager.isPendingRequest(this._requestId)) {\\n      this._manager.abortRequest(this._requestId);\\n    }\\n    this._close();\\n  }\\n}\\n\\nexport { PDFNetworkStream };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { AbortException, assert, MissingPDFException } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  extractFilenameFromHeader,\\n  validateRangeRequestCapabilities,\\n} from \\\".\u002Fnetwork_utils.js\\\";\\nimport { NodePackages } from \\\".\u002Fnode_utils.js\\\";\\n\\nif (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n  throw new Error(\\n    'Module \\\".\u002Fnode_stream.js\\\" shall not be used with MOZCENTRAL builds.'\\n  );\\n}\\n\\nconst fileUriRegex = \u002F^file:\\\\\u002F\\\\\u002F\\\\\u002F[a-zA-Z]:\\\\\u002F\u002F;\\n\\nfunction parseUrl(sourceUrl) {\\n  const url = NodePackages.get(\\\"url\\\");\\n  const parsedUrl = url.parse(sourceUrl);\\n  if (parsedUrl.protocol === \\\"file:\\\" || parsedUrl.host) {\\n    return parsedUrl;\\n  }\\n  \u002F\u002F Prepending 'file:\u002F\u002F\u002F' to Windows absolute path.\\n  if (\u002F^[a-z]:[\u002F\\\\\\\\]\u002Fi.test(sourceUrl)) {\\n    return url.parse(`file:\u002F\u002F\u002F${sourceUrl}`);\\n  }\\n  \u002F\u002F Changes protocol to 'file:' if url refers to filesystem.\\n  if (!parsedUrl.host) {\\n    parsedUrl.protocol = \\\"file:\\\";\\n  }\\n  return parsedUrl;\\n}\\n\\nclass PDFNodeStream {\\n  constructor(source) {\\n    this.source = source;\\n    this.url = parseUrl(source.url);\\n    this.isHttp =\\n      this.url.protocol === \\\"http:\\\" || this.url.protocol === \\\"https:\\\";\\n    \u002F\u002F Check if url refers to filesystem.\\n    this.isFsUrl = this.url.protocol === \\\"file:\\\";\\n    this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\\n\\n    this._fullRequestReader = null;\\n    this._rangeRequestReaders = [];\\n  }\\n\\n  get _progressiveDataLength() {\\n    return this._fullRequestReader?._loaded ?? 0;\\n  }\\n\\n  getFullReader() {\\n    assert(\\n      !this._fullRequestReader,\\n      \\\"PDFNodeStream.getFullReader can only be called once.\\\"\\n    );\\n    this._fullRequestReader = this.isFsUrl\\n      ? new PDFNodeStreamFsFullReader(this)\\n      : new PDFNodeStreamFullReader(this);\\n    return this._fullRequestReader;\\n  }\\n\\n  getRangeReader(start, end) {\\n    if (end \u003C= this._progressiveDataLength) {\\n      return null;\\n    }\\n    const rangeReader = this.isFsUrl\\n      ? new PDFNodeStreamFsRangeReader(this, start, end)\\n      : new PDFNodeStreamRangeReader(this, start, end);\\n    this._rangeRequestReaders.push(rangeReader);\\n    return rangeReader;\\n  }\\n\\n  cancelAllRequests(reason) {\\n    this._fullRequestReader?.cancel(reason);\\n\\n    for (const reader of this._rangeRequestReaders.slice(0)) {\\n      reader.cancel(reason);\\n    }\\n  }\\n}\\n\\nclass BaseFullReader {\\n  constructor(stream) {\\n    this._url = stream.url;\\n    this._done = false;\\n    this._storedError = null;\\n    this.onProgress = null;\\n    const source = stream.source;\\n    this._contentLength = source.length; \u002F\u002F optional\\n    this._loaded = 0;\\n    this._filename = null;\\n\\n    this._disableRange = source.disableRange || false;\\n    this._rangeChunkSize = source.rangeChunkSize;\\n    if (!this._rangeChunkSize && !this._disableRange) {\\n      this._disableRange = true;\\n    }\\n\\n    this._isStreamingSupported = !source.disableStream;\\n    this._isRangeSupported = !source.disableRange;\\n\\n    this._readableStream = null;\\n    this._readCapability = Promise.withResolvers();\\n    this._headersCapability = Promise.withResolvers();\\n  }\\n\\n  get headersReady() {\\n    return this._headersCapability.promise;\\n  }\\n\\n  get filename() {\\n    return this._filename;\\n  }\\n\\n  get contentLength() {\\n    return this._contentLength;\\n  }\\n\\n  get isRangeSupported() {\\n    return this._isRangeSupported;\\n  }\\n\\n  get isStreamingSupported() {\\n    return this._isStreamingSupported;\\n  }\\n\\n  async read() {\\n    await this._readCapability.promise;\\n    if (this._done) {\\n      return { value: undefined, done: true };\\n    }\\n    if (this._storedError) {\\n      throw this._storedError;\\n    }\\n\\n    const chunk = this._readableStream.read();\\n    if (chunk === null) {\\n      this._readCapability = Promise.withResolvers();\\n      return this.read();\\n    }\\n    this._loaded += chunk.length;\\n    this.onProgress?.({\\n      loaded: this._loaded,\\n      total: this._contentLength,\\n    });\\n\\n    \u002F\u002F Ensure that `read()` method returns ArrayBuffer.\\n    const buffer = new Uint8Array(chunk).buffer;\\n    return { value: buffer, done: false };\\n  }\\n\\n  cancel(reason) {\\n    \u002F\u002F Call `this._error()` method when cancel is called\\n    \u002F\u002F before _readableStream is set.\\n    if (!this._readableStream) {\\n      this._error(reason);\\n      return;\\n    }\\n    this._readableStream.destroy(reason);\\n  }\\n\\n  _error(reason) {\\n    this._storedError = reason;\\n    this._readCapability.resolve();\\n  }\\n\\n  _setReadableStream(readableStream) {\\n    this._readableStream = readableStream;\\n    readableStream.on(\\\"readable\\\", () => {\\n      this._readCapability.resolve();\\n    });\\n\\n    readableStream.on(\\\"end\\\", () => {\\n      \u002F\u002F Destroy readable to minimize resource usage.\\n      readableStream.destroy();\\n      this._done = true;\\n      this._readCapability.resolve();\\n    });\\n\\n    readableStream.on(\\\"error\\\", reason => {\\n      this._error(reason);\\n    });\\n\\n    \u002F\u002F We need to stop reading when range is supported and streaming is\\n    \u002F\u002F disabled.\\n    if (!this._isStreamingSupported && this._isRangeSupported) {\\n      this._error(new AbortException(\\\"streaming is disabled\\\"));\\n    }\\n\\n    \u002F\u002F Destroy ReadableStream if already in errored state.\\n    if (this._storedError) {\\n      this._readableStream.destroy(this._storedError);\\n    }\\n  }\\n}\\n\\nclass BaseRangeReader {\\n  constructor(stream) {\\n    this._url = stream.url;\\n    this._done = false;\\n    this._storedError = null;\\n    this.onProgress = null;\\n    this._loaded = 0;\\n    this._readableStream = null;\\n    this._readCapability = Promise.withResolvers();\\n    const source = stream.source;\\n    this._isStreamingSupported = !source.disableStream;\\n  }\\n\\n  get isStreamingSupported() {\\n    return this._isStreamingSupported;\\n  }\\n\\n  async read() {\\n    await this._readCapability.promise;\\n    if (this._done) {\\n      return { value: undefined, done: true };\\n    }\\n    if (this._storedError) {\\n      throw this._storedError;\\n    }\\n\\n    const chunk = this._readableStream.read();\\n    if (chunk === null) {\\n      this._readCapability = Promise.withResolvers();\\n      return this.read();\\n    }\\n    this._loaded += chunk.length;\\n    this.onProgress?.({ loaded: this._loaded });\\n\\n    \u002F\u002F Ensure that `read()` method returns ArrayBuffer.\\n    const buffer = new Uint8Array(chunk).buffer;\\n    return { value: buffer, done: false };\\n  }\\n\\n  cancel(reason) {\\n    \u002F\u002F Call `this._error()` method when cancel is called\\n    \u002F\u002F before _readableStream is set.\\n    if (!this._readableStream) {\\n      this._error(reason);\\n      return;\\n    }\\n    this._readableStream.destroy(reason);\\n  }\\n\\n  _error(reason) {\\n    this._storedError = reason;\\n    this._readCapability.resolve();\\n  }\\n\\n  _setReadableStream(readableStream) {\\n    this._readableStream = readableStream;\\n    readableStream.on(\\\"readable\\\", () => {\\n      this._readCapability.resolve();\\n    });\\n\\n    readableStream.on(\\\"end\\\", () => {\\n      \u002F\u002F Destroy readableStream to minimize resource usage.\\n      readableStream.destroy();\\n      this._done = true;\\n      this._readCapability.resolve();\\n    });\\n\\n    readableStream.on(\\\"error\\\", reason => {\\n      this._error(reason);\\n    });\\n\\n    \u002F\u002F Destroy readableStream if already in errored state.\\n    if (this._storedError) {\\n      this._readableStream.destroy(this._storedError);\\n    }\\n  }\\n}\\n\\nfunction createRequestOptions(parsedUrl, headers) {\\n  return {\\n    protocol: parsedUrl.protocol,\\n    auth: parsedUrl.auth,\\n    host: parsedUrl.hostname,\\n    port: parsedUrl.port,\\n    path: parsedUrl.path,\\n    method: \\\"GET\\\",\\n    headers,\\n  };\\n}\\n\\nclass PDFNodeStreamFullReader extends BaseFullReader {\\n  constructor(stream) {\\n    super(stream);\\n\\n    const handleResponse = response => {\\n      if (response.statusCode === 404) {\\n        const error = new MissingPDFException(`Missing PDF \\\"${this._url}\\\".`);\\n        this._storedError = error;\\n        this._headersCapability.reject(error);\\n        return;\\n      }\\n      this._headersCapability.resolve();\\n      this._setReadableStream(response);\\n\\n      \u002F\u002F Make sure that headers name are in lower case, as mentioned\\n      \u002F\u002F here: https:\u002F\u002Fnodejs.org\u002Fapi\u002Fhttp.html#http_message_headers.\\n      const getResponseHeader = name =>\\n        this._readableStream.headers[name.toLowerCase()];\\n\\n      const { allowRangeRequests, suggestedLength } =\\n        validateRangeRequestCapabilities({\\n          getResponseHeader,\\n          isHttp: stream.isHttp,\\n          rangeChunkSize: this._rangeChunkSize,\\n          disableRange: this._disableRange,\\n        });\\n\\n      this._isRangeSupported = allowRangeRequests;\\n      \u002F\u002F Setting right content length.\\n      this._contentLength = suggestedLength || this._contentLength;\\n\\n      this._filename = extractFilenameFromHeader(getResponseHeader);\\n    };\\n\\n    this._request = null;\\n    if (this._url.protocol === \\\"http:\\\") {\\n      const http = NodePackages.get(\\\"http\\\");\\n      this._request = http.request(\\n        createRequestOptions(this._url, stream.httpHeaders),\\n        handleResponse\\n      );\\n    } else {\\n      const https = NodePackages.get(\\\"https\\\");\\n      this._request = https.request(\\n        createRequestOptions(this._url, stream.httpHeaders),\\n        handleResponse\\n      );\\n    }\\n\\n    this._request.on(\\\"error\\\", reason => {\\n      this._storedError = reason;\\n      this._headersCapability.reject(reason);\\n    });\\n    \u002F\u002F Note: `request.end(data)` is used to write `data` to request body\\n    \u002F\u002F and notify end of request. But one should always call `request.end()`\\n    \u002F\u002F even if there is no data to write -- (to notify the end of request).\\n    this._request.end();\\n  }\\n}\\n\\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\\n  constructor(stream, start, end) {\\n    super(stream);\\n\\n    this._httpHeaders = {};\\n    for (const property in stream.httpHeaders) {\\n      const value = stream.httpHeaders[property];\\n      if (value === undefined) {\\n        continue;\\n      }\\n      this._httpHeaders[property] = value;\\n    }\\n    this._httpHeaders.Range = `bytes=${start}-${end - 1}`;\\n\\n    const handleResponse = response => {\\n      if (response.statusCode === 404) {\\n        const error = new MissingPDFException(`Missing PDF \\\"${this._url}\\\".`);\\n        this._storedError = error;\\n        return;\\n      }\\n      this._setReadableStream(response);\\n    };\\n\\n    this._request = null;\\n    if (this._url.protocol === \\\"http:\\\") {\\n      const http = NodePackages.get(\\\"http\\\");\\n      this._request = http.request(\\n        createRequestOptions(this._url, this._httpHeaders),\\n        handleResponse\\n      );\\n    } else {\\n      const https = NodePackages.get(\\\"https\\\");\\n      this._request = https.request(\\n        createRequestOptions(this._url, this._httpHeaders),\\n        handleResponse\\n      );\\n    }\\n\\n    this._request.on(\\\"error\\\", reason => {\\n      this._storedError = reason;\\n    });\\n    this._request.end();\\n  }\\n}\\n\\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\\n  constructor(stream) {\\n    super(stream);\\n\\n    let path = decodeURIComponent(this._url.path);\\n\\n    \u002F\u002F Remove the extra slash to get right path from url like `file:\u002F\u002F\u002FC:\u002F`\\n    if (fileUriRegex.test(this._url.href)) {\\n      path = path.replace(\u002F^\\\\\u002F\u002F, \\\"\\\");\\n    }\\n\\n    const fs = NodePackages.get(\\\"fs\\\");\\n    fs.promises.lstat(path).then(\\n      stat => {\\n        \u002F\u002F Setting right content length.\\n        this._contentLength = stat.size;\\n\\n        this._setReadableStream(fs.createReadStream(path));\\n        this._headersCapability.resolve();\\n      },\\n      error => {\\n        if (error.code === \\\"ENOENT\\\") {\\n          error = new MissingPDFException(`Missing PDF \\\"${path}\\\".`);\\n        }\\n        this._storedError = error;\\n        this._headersCapability.reject(error);\\n      }\\n    );\\n  }\\n}\\n\\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\\n  constructor(stream, start, end) {\\n    super(stream);\\n\\n    let path = decodeURIComponent(this._url.path);\\n\\n    \u002F\u002F Remove the extra slash to get right path from url like `file:\u002F\u002F\u002FC:\u002F`\\n    if (fileUriRegex.test(this._url.href)) {\\n      path = path.replace(\u002F^\\\\\u002F\u002F, \\\"\\\");\\n    }\\n\\n    const fs = NodePackages.get(\\\"fs\\\");\\n    this._setReadableStream(fs.createReadStream(path, { start, end: end - 1 }));\\n  }\\n}\\n\\nexport { PDFNodeStream };\\n\",\"\u002F* Copyright 2015 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fdisplay_utils\\\").PageViewport} PageViewport *\u002F\\n\u002F** @typedef {import(\\\".\u002Fapi\\\").TextContent} TextContent *\u002F\\n\\nimport { AbortException, Util, warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { deprecated, setLayerDimensions } from \\\".\u002Fdisplay_utils.js\\\";\\n\\n\u002F**\\n * @typedef {Object} TextLayerParameters\\n * @property {ReadableStream | TextContent} textContentSource - Text content to\\n *   render, i.e. the value returned by the page's `streamTextContent` or\\n *   `getTextContent` method.\\n * @property {HTMLElement} container - The DOM node that will contain the text\\n *   runs.\\n * @property {PageViewport} viewport - The target viewport to properly layout\\n *   the text runs.\\n *\u002F\\n\\n\u002F**\\n * @typedef {Object} TextLayerUpdateParameters\\n * @property {PageViewport} viewport - The target viewport to properly layout\\n *   the text runs.\\n * @property {function} [onBefore] - Callback invoked before the textLayer is\\n *   updated in the DOM.\\n *\u002F\\n\\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\\nconst DEFAULT_FONT_SIZE = 30;\\nconst DEFAULT_FONT_ASCENT = 0.8;\\n\\nclass TextLayer {\\n  #capability = Promise.withResolvers();\\n\\n  #container = null;\\n\\n  #disableProcessItems = false;\\n\\n  #fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\\n\\n  #lang = null;\\n\\n  #layoutTextParams = null;\\n\\n  #pageHeight = 0;\\n\\n  #pageWidth = 0;\\n\\n  #reader = null;\\n\\n  #rootContainer = null;\\n\\n  #rotation = 0;\\n\\n  #scale = 0;\\n\\n  #styleCache = Object.create(null);\\n\\n  #textContentItemsStr = [];\\n\\n  #textContentSource = null;\\n\\n  #textDivs = [];\\n\\n  #textDivProperties = new WeakMap();\\n\\n  #transform = null;\\n\\n  static #ascentCache = new Map();\\n\\n  static #canvasContexts = new Map();\\n\\n  static #pendingTextLayers = new Set();\\n\\n  \u002F**\\n   * @param {TextLayerParameters} options\\n   *\u002F\\n  constructor({ textContentSource, container, viewport }) {\\n    if (textContentSource instanceof ReadableStream) {\\n      this.#textContentSource = textContentSource;\\n    } else if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) &&\\n      typeof textContentSource === \\\"object\\\"\\n    ) {\\n      this.#textContentSource = new ReadableStream({\\n        start(controller) {\\n          controller.enqueue(textContentSource);\\n          controller.close();\\n        },\\n      });\\n    } else {\\n      throw new Error('No \\\"textContentSource\\\" parameter specified.');\\n    }\\n    this.#container = this.#rootContainer = container;\\n\\n    this.#scale = viewport.scale * (globalThis.devicePixelRatio || 1);\\n    this.#rotation = viewport.rotation;\\n    this.#layoutTextParams = {\\n      prevFontSize: null,\\n      prevFontFamily: null,\\n      div: null,\\n      properties: null,\\n      ctx: null,\\n    };\\n    const { pageWidth, pageHeight, pageX, pageY } = viewport.rawDims;\\n    this.#transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\\n    this.#pageWidth = pageWidth;\\n    this.#pageHeight = pageHeight;\\n\\n    setLayerDimensions(container, viewport);\\n\\n    \u002F\u002F Always clean-up the temporary canvas once rendering is no longer pending.\\n    this.#capability.promise\\n      .catch(() => {\\n        \u002F\u002F Avoid \\\"Uncaught promise\\\" messages in the console.\\n      })\\n      .then(() => {\\n        TextLayer.#pendingTextLayers.delete(this);\\n        this.#layoutTextParams = null;\\n        this.#styleCache = null;\\n      });\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      \u002F\u002F For testing purposes.\\n      Object.defineProperty(this, \\\"pageWidth\\\", {\\n        get() {\\n          return this.#pageWidth;\\n        },\\n      });\\n      Object.defineProperty(this, \\\"pageHeight\\\", {\\n        get() {\\n          return this.#pageHeight;\\n        },\\n      });\\n    }\\n  }\\n\\n  \u002F**\\n   * Render the textLayer.\\n   * @returns {Promise}\\n   *\u002F\\n  render() {\\n    const pump = () => {\\n      this.#reader.read().then(({ value, done }) => {\\n        if (done) {\\n          this.#capability.resolve();\\n          return;\\n        }\\n        this.#lang ??= value.lang;\\n        Object.assign(this.#styleCache, value.styles);\\n        this.#processItems(value.items);\\n        pump();\\n      }, this.#capability.reject);\\n    };\\n    this.#reader = this.#textContentSource.getReader();\\n    TextLayer.#pendingTextLayers.add(this);\\n    pump();\\n\\n    return this.#capability.promise;\\n  }\\n\\n  \u002F**\\n   * Update a previously rendered textLayer, if necessary.\\n   * @param {TextLayerUpdateParameters} options\\n   * @returns {undefined}\\n   *\u002F\\n  update({ viewport, onBefore = null }) {\\n    const scale = viewport.scale * (globalThis.devicePixelRatio || 1);\\n    const rotation = viewport.rotation;\\n\\n    if (rotation !== this.#rotation) {\\n      onBefore?.();\\n      this.#rotation = rotation;\\n      setLayerDimensions(this.#rootContainer, { rotation });\\n    }\\n\\n    if (scale !== this.#scale) {\\n      onBefore?.();\\n      this.#scale = scale;\\n      const params = {\\n        prevFontSize: null,\\n        prevFontFamily: null,\\n        div: null,\\n        properties: null,\\n        ctx: TextLayer.#getCtx(this.#lang),\\n      };\\n      for (const div of this.#textDivs) {\\n        params.properties = this.#textDivProperties.get(div);\\n        params.div = div;\\n        this.#layout(params);\\n      }\\n    }\\n  }\\n\\n  \u002F**\\n   * Cancel rendering of the textLayer.\\n   * @returns {undefined}\\n   *\u002F\\n  cancel() {\\n    const abortEx = new AbortException(\\\"TextLayer task cancelled.\\\");\\n\\n    this.#reader?.cancel(abortEx).catch(() => {\\n      \u002F\u002F Avoid \\\"Uncaught promise\\\" messages in the console.\\n    });\\n    this.#reader = null;\\n\\n    this.#capability.reject(abortEx);\\n  }\\n\\n  \u002F**\\n   * @type {Array\u003CHTMLElement>} HTML elements that correspond to the text items\\n   *   of the textContent input.\\n   *   This is output and will initially be set to an empty array.\\n   *\u002F\\n  get textDivs() {\\n    return this.#textDivs;\\n  }\\n\\n  \u002F**\\n   * @type {Array\u003Cstring>} Strings that correspond to the `str` property of\\n   *   the text items of the textContent input.\\n   *   This is output and will initially be set to an empty array\\n   *\u002F\\n  get textContentItemsStr() {\\n    return this.#textContentItemsStr;\\n  }\\n\\n  #processItems(items) {\\n    if (this.#disableProcessItems) {\\n      return;\\n    }\\n    this.#layoutTextParams.ctx ||= TextLayer.#getCtx(this.#lang);\\n\\n    const textDivs = this.#textDivs,\\n      textContentItemsStr = this.#textContentItemsStr;\\n\\n    for (const item of items) {\\n      \u002F\u002F No point in rendering many divs as it would make the browser\\n      \u002F\u002F unusable even after the divs are rendered.\\n      if (textDivs.length > MAX_TEXT_DIVS_TO_RENDER) {\\n        warn(\\\"Ignoring additional textDivs for performance reasons.\\\");\\n\\n        this.#disableProcessItems = true; \u002F\u002F Avoid multiple warnings for one page.\\n        return;\\n      }\\n\\n      if (item.str === undefined) {\\n        if (\\n          item.type === \\\"beginMarkedContentProps\\\" ||\\n          item.type === \\\"beginMarkedContent\\\"\\n        ) {\\n          const parent = this.#container;\\n          this.#container = document.createElement(\\\"span\\\");\\n          this.#container.classList.add(\\\"markedContent\\\");\\n          if (item.id !== null) {\\n            this.#container.setAttribute(\\\"id\\\", `${item.id}`);\\n          }\\n          parent.append(this.#container);\\n        } else if (item.type === \\\"endMarkedContent\\\") {\\n          this.#container = this.#container.parentNode;\\n        }\\n        continue;\\n      }\\n      textContentItemsStr.push(item.str);\\n      this.#appendText(item);\\n    }\\n  }\\n\\n  #appendText(geom) {\\n    \u002F\u002F Initialize all used properties to keep the caches monomorphic.\\n    const textDiv = document.createElement(\\\"span\\\");\\n    const textDivProperties = {\\n      angle: 0,\\n      canvasWidth: 0,\\n      hasText: geom.str !== \\\"\\\",\\n      hasEOL: geom.hasEOL,\\n      fontSize: 0,\\n    };\\n    this.#textDivs.push(textDiv);\\n\\n    const tx = Util.transform(this.#transform, geom.transform);\\n    let angle = Math.atan2(tx[1], tx[0]);\\n    const style = this.#styleCache[geom.fontName];\\n    if (style.vertical) {\\n      angle += Math.PI \u002F 2;\\n    }\\n\\n    const fontFamily =\\n      (this.#fontInspectorEnabled && style.fontSubstitution) ||\\n      style.fontFamily;\\n    const fontHeight = Math.hypot(tx[2], tx[3]);\\n    const fontAscent =\\n      fontHeight * TextLayer.#getAscent(fontFamily, this.#lang);\\n\\n    let left, top;\\n    if (angle === 0) {\\n      left = tx[4];\\n      top = tx[5] - fontAscent;\\n    } else {\\n      left = tx[4] + fontAscent * Math.sin(angle);\\n      top = tx[5] - fontAscent * Math.cos(angle);\\n    }\\n\\n    const scaleFactorStr = \\\"calc(var(--scale-factor)*\\\";\\n    const divStyle = textDiv.style;\\n    \u002F\u002F Setting the style properties individually, rather than all at once,\\n    \u002F\u002F should be OK since the `textDiv` isn't appended to the document yet.\\n    if (this.#container === this.#rootContainer) {\\n      divStyle.left = `${((100 * left) \u002F this.#pageWidth).toFixed(2)}%`;\\n      divStyle.top = `${((100 * top) \u002F this.#pageHeight).toFixed(2)}%`;\\n    } else {\\n      \u002F\u002F We're in a marked content span, hence we can't use percents.\\n      divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`;\\n      divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`;\\n    }\\n    divStyle.fontSize = `${scaleFactorStr}${fontHeight.toFixed(2)}px)`;\\n    divStyle.fontFamily = fontFamily;\\n\\n    textDivProperties.fontSize = fontHeight;\\n\\n    \u002F\u002F Keeps screen readers from pausing on every new text span.\\n    textDiv.setAttribute(\\\"role\\\", \\\"presentation\\\");\\n\\n    textDiv.textContent = geom.str;\\n    \u002F\u002F geom.dir may be 'ttb' for vertical texts.\\n    textDiv.dir = geom.dir;\\n\\n    \u002F\u002F `fontName` is only used by the FontInspector, and we only use `dataset`\\n    \u002F\u002F here to make the font name available in the debugger.\\n    if (this.#fontInspectorEnabled) {\\n      textDiv.dataset.fontName =\\n        style.fontSubstitutionLoadedName || geom.fontName;\\n    }\\n    if (angle !== 0) {\\n      textDivProperties.angle = angle * (180 \u002F Math.PI);\\n    }\\n    \u002F\u002F We don't bother scaling single-char text divs, because it has very\\n    \u002F\u002F little effect on text highlighting. This makes scrolling on docs with\\n    \u002F\u002F lots of such divs a lot faster.\\n    let shouldScaleText = false;\\n    if (geom.str.length > 1) {\\n      shouldScaleText = true;\\n    } else if (geom.str !== \\\" \\\" && geom.transform[0] !== geom.transform[3]) {\\n      const absScaleX = Math.abs(geom.transform[0]),\\n        absScaleY = Math.abs(geom.transform[3]);\\n      \u002F\u002F When the horizontal\u002Fvertical scaling differs significantly, also scale\\n      \u002F\u002F even single-char text to improve highlighting (fixes issue11713.pdf).\\n      if (\\n        absScaleX !== absScaleY &&\\n        Math.max(absScaleX, absScaleY) \u002F Math.min(absScaleX, absScaleY) > 1.5\\n      ) {\\n        shouldScaleText = true;\\n      }\\n    }\\n    if (shouldScaleText) {\\n      textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\\n    }\\n    this.#textDivProperties.set(textDiv, textDivProperties);\\n\\n    \u002F\u002F Finally, layout and append the text to the DOM.\\n    this.#layoutTextParams.div = textDiv;\\n    this.#layoutTextParams.properties = textDivProperties;\\n    this.#layout(this.#layoutTextParams);\\n\\n    if (textDivProperties.hasText) {\\n      this.#container.append(textDiv);\\n    }\\n    if (textDivProperties.hasEOL) {\\n      const br = document.createElement(\\\"br\\\");\\n      br.setAttribute(\\\"role\\\", \\\"presentation\\\");\\n      this.#container.append(br);\\n    }\\n  }\\n\\n  #layout(params) {\\n    const { div, properties, ctx, prevFontSize, prevFontFamily } = params;\\n    const { style } = div;\\n    let transform = \\\"\\\";\\n    if (properties.canvasWidth !== 0 && properties.hasText) {\\n      const { fontFamily } = style;\\n      const { canvasWidth, fontSize } = properties;\\n\\n      if (prevFontSize !== fontSize || prevFontFamily !== fontFamily) {\\n        ctx.font = `${fontSize * this.#scale}px ${fontFamily}`;\\n        params.prevFontSize = fontSize;\\n        params.prevFontFamily = fontFamily;\\n      }\\n\\n      \u002F\u002F Only measure the width for multi-char text divs, see `appendText`.\\n      const { width } = ctx.measureText(div.textContent);\\n\\n      if (width > 0) {\\n        transform = `scaleX(${(canvasWidth * this.#scale) \u002F width})`;\\n      }\\n    }\\n    if (properties.angle !== 0) {\\n      transform = `rotate(${properties.angle}deg) ${transform}`;\\n    }\\n    if (transform.length > 0) {\\n      style.transform = transform;\\n    }\\n  }\\n\\n  \u002F**\\n   * Clean-up global textLayer data.\\n   * @returns {undefined}\\n   *\u002F\\n  static cleanup() {\\n    if (this.#pendingTextLayers.size > 0) {\\n      return;\\n    }\\n    this.#ascentCache.clear();\\n\\n    for (const { canvas } of this.#canvasContexts.values()) {\\n      canvas.remove();\\n    }\\n    this.#canvasContexts.clear();\\n  }\\n\\n  static #getCtx(lang = null) {\\n    let canvasContext = this.#canvasContexts.get((lang ||= \\\"\\\"));\\n    if (!canvasContext) {\\n      \u002F\u002F We don't use an OffscreenCanvas here because we use serif\u002Fsans serif\\n      \u002F\u002F fonts with it and they depends on the locale.\\n      \u002F\u002F In Firefox, the \u003Chtml> element get a lang attribute that depends on\\n      \u002F\u002F what Fluent returns for the locale and the OffscreenCanvas uses\\n      \u002F\u002F the OS locale.\\n      \u002F\u002F Those two locales can be different and consequently the used fonts will\\n      \u002F\u002F be different (see bug 1869001).\\n      \u002F\u002F Ideally, we should use in the text layer the fonts we've in the pdf (or\\n      \u002F\u002F their replacements when they aren't embedded) and then we can use an\\n      \u002F\u002F OffscreenCanvas.\\n      const canvas = document.createElement(\\\"canvas\\\");\\n      canvas.className = \\\"hiddenCanvasElement\\\";\\n      canvas.lang = lang;\\n      document.body.append(canvas);\\n      canvasContext = canvas.getContext(\\\"2d\\\", { alpha: false });\\n      this.#canvasContexts.set(lang, canvasContext);\\n    }\\n    return canvasContext;\\n  }\\n\\n  static #getAscent(fontFamily, lang) {\\n    const cachedAscent = this.#ascentCache.get(fontFamily);\\n    if (cachedAscent) {\\n      return cachedAscent;\\n    }\\n    const ctx = this.#getCtx(lang);\\n\\n    const savedFont = ctx.font;\\n    ctx.canvas.width = ctx.canvas.height = DEFAULT_FONT_SIZE;\\n    ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`;\\n    const metrics = ctx.measureText(\\\"\\\");\\n\\n    \u002F\u002F Both properties aren't available by default in Firefox.\\n    let ascent = metrics.fontBoundingBoxAscent;\\n    let descent = Math.abs(metrics.fontBoundingBoxDescent);\\n    if (ascent) {\\n      const ratio = ascent \u002F (ascent + descent);\\n      this.#ascentCache.set(fontFamily, ratio);\\n\\n      ctx.canvas.width = ctx.canvas.height = 0;\\n      ctx.font = savedFont;\\n      return ratio;\\n    }\\n\\n    \u002F\u002F Try basic heuristic to guess ascent\u002Fdescent.\\n    \u002F\u002F Draw a g with baseline at 0,0 and then get the line\\n    \u002F\u002F number where a pixel has non-null red component (starting\\n    \u002F\u002F from bottom).\\n    ctx.strokeStyle = \\\"red\\\";\\n    ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\\n    ctx.strokeText(\\\"g\\\", 0, 0);\\n    let pixels = ctx.getImageData(\\n      0,\\n      0,\\n      DEFAULT_FONT_SIZE,\\n      DEFAULT_FONT_SIZE\\n    ).data;\\n    descent = 0;\\n    for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) {\\n      if (pixels[i] > 0) {\\n        descent = Math.ceil(i \u002F 4 \u002F DEFAULT_FONT_SIZE);\\n        break;\\n      }\\n    }\\n\\n    \u002F\u002F Draw an A with baseline at 0,DEFAULT_FONT_SIZE and then get the line\\n    \u002F\u002F number where a pixel has non-null red component (starting\\n    \u002F\u002F from top).\\n    ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\\n    ctx.strokeText(\\\"A\\\", 0, DEFAULT_FONT_SIZE);\\n    pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\\n    ascent = 0;\\n    for (let i = 0, ii = pixels.length; i \u003C ii; i += 4) {\\n      if (pixels[i] > 0) {\\n        ascent = DEFAULT_FONT_SIZE - Math.floor(i \u002F 4 \u002F DEFAULT_FONT_SIZE);\\n        break;\\n      }\\n    }\\n\\n    ctx.canvas.width = ctx.canvas.height = 0;\\n    ctx.font = savedFont;\\n\\n    const ratio = ascent ? ascent \u002F (ascent + descent) : DEFAULT_FONT_ASCENT;\\n    this.#ascentCache.set(fontFamily, ratio);\\n    return ratio;\\n  }\\n}\\n\\nfunction renderTextLayer() {\\n  if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n    return;\\n  }\\n  deprecated(\\\"`renderTextLayer`, please use `TextLayer` instead.\\\");\\n\\n  const { textContentSource, container, viewport, ...rest } = arguments[0];\\n  const restKeys = Object.keys(rest);\\n  if (restKeys.length > 0) {\\n    warn(\\\"Ignoring `renderTextLayer` parameters: \\\" + restKeys.join(\\\", \\\"));\\n  }\\n\\n  const textLayer = new TextLayer({\\n    textContentSource,\\n    container,\\n    viewport,\\n  });\\n\\n  const { textDivs, textContentItemsStr } = textLayer;\\n  const promise = textLayer.render();\\n\\n  \u002F\u002F eslint-disable-next-line consistent-return\\n  return {\\n    promise,\\n    textDivs,\\n    textContentItemsStr,\\n  };\\n}\\n\\nfunction updateTextLayer() {\\n  if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n    return;\\n  }\\n  deprecated(\\\"`updateTextLayer`, please use `TextLayer` instead.\\\");\\n}\\n\\nexport { renderTextLayer, TextLayer, updateTextLayer };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fapi\\\").TextContent} TextContent *\u002F\\n\\nclass XfaText {\\n  \u002F**\\n   * Walk an XFA tree and create an array of text nodes that is compatible\\n   * with a regular PDFs TextContent. Currently, only TextItem.str is supported,\\n   * all other fields and styles haven't been implemented.\\n   *\\n   * @param {Object} xfa - An XFA fake DOM object.\\n   *\\n   * @returns {TextContent}\\n   *\u002F\\n  static textContent(xfa) {\\n    const items = [];\\n    const output = {\\n      items,\\n      styles: Object.create(null),\\n    };\\n    function walk(node) {\\n      if (!node) {\\n        return;\\n      }\\n      let str = null;\\n      const name = node.name;\\n      if (name === \\\"#text\\\") {\\n        str = node.value;\\n      } else if (!XfaText.shouldBuildText(name)) {\\n        return;\\n      } else if (node?.attributes?.textContent) {\\n        str = node.attributes.textContent;\\n      } else if (node.value) {\\n        str = node.value;\\n      }\\n      if (str !== null) {\\n        items.push({\\n          str,\\n        });\\n      }\\n      if (!node.children) {\\n        return;\\n      }\\n      for (const child of node.children) {\\n        walk(child);\\n      }\\n    }\\n    walk(xfa);\\n    return output;\\n  }\\n\\n  \u002F**\\n   * @param {string} name - DOM node name. (lower case)\\n   *\\n   * @returns {boolean} true if the DOM node should have a corresponding text\\n   * node.\\n   *\u002F\\n  static shouldBuildText(name) {\\n    return !(\\n      name === \\\"textarea\\\" ||\\n      name === \\\"input\\\" ||\\n      name === \\\"option\\\" ||\\n      name === \\\"select\\\"\\n    );\\n  }\\n}\\n\\nexport { XfaText };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F**\\n * @module pdfjsLib\\n *\u002F\\n\\nimport {\\n  AbortException,\\n  AnnotationMode,\\n  assert,\\n  getVerbosityLevel,\\n  info,\\n  InvalidPDFException,\\n  isNodeJS,\\n  MAX_IMAGE_SIZE_TO_CACHE,\\n  MissingPDFException,\\n  PasswordException,\\n  RenderingIntentFlag,\\n  setVerbosityLevel,\\n  shadow,\\n  stringToBytes,\\n  UnexpectedResponseException,\\n  UnknownErrorException,\\n  unreachable,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  AnnotationStorage,\\n  PrintAnnotationStorage,\\n  SerializableEmpty,\\n} from \\\".\u002Fannotation_storage.js\\\";\\nimport {\\n  DOMCanvasFactory,\\n  DOMCMapReaderFactory,\\n  DOMFilterFactory,\\n  DOMStandardFontDataFactory,\\n  isDataScheme,\\n  isValidFetchUrl,\\n  PageViewport,\\n  RenderingCancelledException,\\n  StatTimer,\\n} from \\\".\u002Fdisplay_utils.js\\\";\\nimport { FontFaceObject, FontLoader } from \\\".\u002Ffont_loader.js\\\";\\nimport {\\n  NodeCanvasFactory,\\n  NodeCMapReaderFactory,\\n  NodeFilterFactory,\\n  NodePackages,\\n  NodeStandardFontDataFactory,\\n} from \\\"display-node_utils\\\";\\nimport { CanvasGraphics } from \\\".\u002Fcanvas.js\\\";\\nimport { GlobalWorkerOptions } from \\\".\u002Fworker_options.js\\\";\\nimport { MessageHandler } from \\\"..\u002Fshared\u002Fmessage_handler.js\\\";\\nimport { Metadata } from \\\".\u002Fmetadata.js\\\";\\nimport { OptionalContentConfig } from \\\".\u002Foptional_content_config.js\\\";\\nimport { PDFDataTransportStream } from \\\".\u002Ftransport_stream.js\\\";\\nimport { PDFFetchStream } from \\\"display-fetch_stream\\\";\\nimport { PDFNetworkStream } from \\\"display-network\\\";\\nimport { PDFNodeStream } from \\\"display-node_stream\\\";\\nimport { TextLayer } from \\\".\u002Ftext_layer.js\\\";\\nimport { XfaText } from \\\".\u002Fxfa_text.js\\\";\\n\\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536; \u002F\u002F 2^16 = 65536\\nconst RENDERING_CANCELLED_TIMEOUT = 100; \u002F\u002F ms\\nconst DELAYED_CLEANUP_TIMEOUT = 5000; \u002F\u002F ms\\n\\nconst DefaultCanvasFactory =\\n  typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"GENERIC\\\") && isNodeJS\\n    ? NodeCanvasFactory\\n    : DOMCanvasFactory;\\nconst DefaultCMapReaderFactory =\\n  typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"GENERIC\\\") && isNodeJS\\n    ? NodeCMapReaderFactory\\n    : DOMCMapReaderFactory;\\nconst DefaultFilterFactory =\\n  typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"GENERIC\\\") && isNodeJS\\n    ? NodeFilterFactory\\n    : DOMFilterFactory;\\nconst DefaultStandardFontDataFactory =\\n  typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"GENERIC\\\") && isNodeJS\\n    ? NodeStandardFontDataFactory\\n    : DOMStandardFontDataFactory;\\n\\n\u002F**\\n * @typedef { Int8Array | Uint8Array | Uint8ClampedArray |\\n *            Int16Array | Uint16Array |\\n *            Int32Array | Uint32Array | Float32Array |\\n *            Float64Array\\n * } TypedArray\\n *\u002F\\n\\n\u002F**\\n * @typedef {Object} RefProxy\\n * @property {number} num\\n * @property {number} gen\\n *\u002F\\n\\n\u002F**\\n * Document initialization \u002F loading parameters object.\\n *\\n * @typedef {Object} DocumentInitParameters\\n * @property {string | URL} [url] - The URL of the PDF.\\n * @property {TypedArray | ArrayBuffer | Array\u003Cnumber> | string} [data] -\\n *   Binary PDF data.\\n *   Use TypedArrays (Uint8Array) to improve the memory usage. If PDF data is\\n *   BASE64-encoded, use `atob()` to convert it to a binary string first.\\n *\\n *   NOTE: If TypedArrays are used they will generally be transferred to the\\n *   worker-thread. This will help reduce main-thread memory usage, however\\n *   it will take ownership of the TypedArrays.\\n * @property {Object} [httpHeaders] - Basic authentication headers.\\n * @property {boolean} [withCredentials] - Indicates whether or not\\n *   cross-site Access-Control requests should be made using credentials such\\n *   as cookies or authorization headers. The default is `false`.\\n * @property {string} [password] - For decrypting password-protected PDFs.\\n * @property {number} [length] - The PDF file length. It's used for progress\\n *   reports and range requests operations.\\n * @property {PDFDataRangeTransport} [range] - Allows for using a custom range\\n *   transport implementation.\\n * @property {number} [rangeChunkSize] - Specify maximum number of bytes fetched\\n *   per range request. The default value is {@link DEFAULT_RANGE_CHUNK_SIZE}.\\n * @property {PDFWorker} [worker] - The worker that will be used for loading and\\n *   parsing the PDF data.\\n * @property {number} [verbosity] - Controls the logging level; the constants\\n *   from {@link VerbosityLevel} should be used.\\n * @property {string} [docBaseUrl] - The base URL of the document, used when\\n *   attempting to recover valid absolute URLs for annotations, and outline\\n *   items, that (incorrectly) only specify relative URLs.\\n * @property {string} [cMapUrl] - The URL where the predefined Adobe CMaps are\\n *   located. Include the trailing slash.\\n * @property {boolean} [cMapPacked] - Specifies if the Adobe CMaps are binary\\n *   packed or not. The default value is `true`.\\n * @property {Object} [CMapReaderFactory] - The factory that will be used when\\n *   reading built-in CMap files. Providing a custom factory is useful for\\n *   environments without Fetch API or `XMLHttpRequest` support, such as\\n *   Node.js. The default value is {DOMCMapReaderFactory}.\\n * @property {boolean} [useSystemFonts] - When `true`, fonts that aren't\\n *   embedded in the PDF document will fallback to a system font.\\n *   The default value is `true` in web environments and `false` in Node.js;\\n *   unless `disableFontFace === true` in which case this defaults to `false`\\n *   regardless of the environment (to prevent completely broken fonts).\\n * @property {string} [standardFontDataUrl] - The URL where the standard font\\n *   files are located. Include the trailing slash.\\n * @property {Object} [StandardFontDataFactory] - The factory that will be used\\n *   when reading the standard font files. Providing a custom factory is useful\\n *   for environments without Fetch API or `XMLHttpRequest` support, such as\\n *   Node.js. The default value is {DOMStandardFontDataFactory}.\\n * @property {boolean} [useWorkerFetch] - Enable using the Fetch API in the\\n *   worker-thread when reading CMap and standard font files. When `true`,\\n *   the `CMapReaderFactory` and `StandardFontDataFactory` options are ignored.\\n *   The default value is `true` in web environments and `false` in Node.js.\\n * @property {boolean} [stopAtErrors] - Reject certain promises, e.g.\\n *   `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\\n *   PDF data cannot be successfully parsed, instead of attempting to recover\\n *   whatever possible of the data. The default value is `false`.\\n * @property {number} [maxImageSize] - The maximum allowed image size in total\\n *   pixels, i.e. width * height. Images above this value will not be rendered.\\n *   Use -1 for no limit, which is also the default value.\\n * @property {boolean} [isEvalSupported] - Determines if we can evaluate strings\\n *   as JavaScript. Primarily used to improve performance of PDF functions.\\n *   The default value is `true`.\\n * @property {boolean} [isOffscreenCanvasSupported] - Determines if we can use\\n *   `OffscreenCanvas` in the worker. Primarily used to improve performance of\\n *   image conversion\u002Frendering.\\n *   The default value is `true` in web environments and `false` in Node.js.\\n * @property {number} [canvasMaxAreaInBytes] - The integer value is used to\\n *   know when an image must be resized (uses `OffscreenCanvas` in the worker).\\n *   If it's -1 then a possibly slow algorithm is used to guess the max value.\\n * @property {boolean} [disableFontFace] - By default fonts are converted to\\n *   OpenType fonts and loaded via the Font Loading API or `@font-face` rules.\\n *   If disabled, fonts will be rendered using a built-in font renderer that\\n *   constructs the glyphs with primitive path commands.\\n *   The default value is `false` in web environments and `true` in Node.js.\\n * @property {boolean} [fontExtraProperties] - Include additional properties,\\n *   which are unused during rendering of PDF documents, when exporting the\\n *   parsed font data from the worker-thread. This may be useful for debugging\\n *   purposes (and backwards compatibility), but note that it will lead to\\n *   increased memory usage. The default value is `false`.\\n * @property {boolean} [enableXfa] - Render Xfa forms if any.\\n *   The default value is `false`.\\n * @property {HTMLDocument} [ownerDocument] - Specify an explicit document\\n *   context to create elements with and to load resources, such as fonts,\\n *   into. Defaults to the current document.\\n * @property {boolean} [disableRange] - Disable range request loading of PDF\\n *   files. When enabled, and if the server supports partial content requests,\\n *   then the PDF will be fetched in chunks. The default value is `false`.\\n * @property {boolean} [disableStream] - Disable streaming of PDF file data.\\n *   By default PDF.js attempts to load PDF files in chunks. The default value\\n *   is `false`.\\n * @property {boolean} [disableAutoFetch] - Disable pre-fetching of PDF file\\n *   data. When range requests are enabled PDF.js will automatically keep\\n *   fetching more data even if it isn't needed to display the current page.\\n *   The default value is `false`.\\n *\\n *   NOTE: It is also necessary to disable streaming, see above, in order for\\n *   disabling of pre-fetching to work correctly.\\n * @property {boolean} [pdfBug] - Enables special hooks for debugging PDF.js\\n *   (see `web\u002Fdebugger.js`). The default value is `false`.\\n * @property {Object} [canvasFactory] - The factory instance that will be used\\n *   when creating canvases. The default value is {new DOMCanvasFactory()}.\\n * @property {Object} [filterFactory] - A factory instance that will be used\\n *   to create SVG filters when rendering some images on the main canvas.\\n *\u002F\\n\\n\u002F**\\n * This is the main entry point for loading a PDF and interacting with it.\\n *\\n * NOTE: If a URL is used to fetch the PDF data a standard Fetch API call (or\\n * XHR as fallback) is used, which means it must follow same origin rules,\\n * e.g. no cross-domain requests without CORS.\\n *\\n * @param {string | URL | TypedArray | ArrayBuffer | DocumentInitParameters}\\n *   src - Can be a URL where a PDF file is located, a typed array (Uint8Array)\\n *         already populated with data, or a parameter object.\\n * @returns {PDFDocumentLoadingTask}\\n *\u002F\\nfunction getDocument(src) {\\n  if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n    if (typeof src === \\\"string\\\" || src instanceof URL) {\\n      src = { url: src };\\n    } else if (src instanceof ArrayBuffer || ArrayBuffer.isView(src)) {\\n      src = { data: src };\\n    }\\n  }\\n  if (typeof src !== \\\"object\\\") {\\n    throw new Error(\\\"Invalid parameter in getDocument, need parameter object.\\\");\\n  }\\n  if (!src.url && !src.data && !src.range) {\\n    throw new Error(\\n      \\\"Invalid parameter object: need either .data, .range or .url\\\"\\n    );\\n  }\\n  const task = new PDFDocumentLoadingTask();\\n  const { docId } = task;\\n\\n  const url = src.url ? getUrlProp(src.url) : null;\\n  const data = src.data ? getDataProp(src.data) : null;\\n  const httpHeaders = src.httpHeaders || null;\\n  const withCredentials = src.withCredentials === true;\\n  const password = src.password ?? null;\\n  const rangeTransport =\\n    src.range instanceof PDFDataRangeTransport ? src.range : null;\\n  const rangeChunkSize =\\n    Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0\\n      ? src.rangeChunkSize\\n      : DEFAULT_RANGE_CHUNK_SIZE;\\n  let worker = src.worker instanceof PDFWorker ? src.worker : null;\\n  const verbosity = src.verbosity;\\n  \u002F\u002F Ignore \\\"data:\\\"-URLs, since they can't be used to recover valid absolute\\n  \u002F\u002F URLs anyway. We want to avoid sending them to the worker-thread, since\\n  \u002F\u002F they contain the *entire* PDF document and can thus be arbitrarily long.\\n  const docBaseUrl =\\n    typeof src.docBaseUrl === \\\"string\\\" && !isDataScheme(src.docBaseUrl)\\n      ? src.docBaseUrl\\n      : null;\\n  const cMapUrl = typeof src.cMapUrl === \\\"string\\\" ? src.cMapUrl : null;\\n  const cMapPacked = src.cMapPacked !== false;\\n  const CMapReaderFactory = src.CMapReaderFactory || DefaultCMapReaderFactory;\\n  const standardFontDataUrl =\\n    typeof src.standardFontDataUrl === \\\"string\\\"\\n      ? src.standardFontDataUrl\\n      : null;\\n  const StandardFontDataFactory =\\n    src.StandardFontDataFactory || DefaultStandardFontDataFactory;\\n  const ignoreErrors = src.stopAtErrors !== true;\\n  const maxImageSize =\\n    Number.isInteger(src.maxImageSize) && src.maxImageSize > -1\\n      ? src.maxImageSize\\n      : -1;\\n  const isEvalSupported = src.isEvalSupported !== false;\\n  const isOffscreenCanvasSupported =\\n    typeof src.isOffscreenCanvasSupported === \\\"boolean\\\"\\n      ? src.isOffscreenCanvasSupported\\n      : !isNodeJS;\\n  const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes)\\n    ? src.canvasMaxAreaInBytes\\n    : -1;\\n  const disableFontFace =\\n    typeof src.disableFontFace === \\\"boolean\\\" ? src.disableFontFace : isNodeJS;\\n  const fontExtraProperties = src.fontExtraProperties === true;\\n  const enableXfa = src.enableXfa === true;\\n  const ownerDocument = src.ownerDocument || globalThis.document;\\n  const disableRange = src.disableRange === true;\\n  const disableStream = src.disableStream === true;\\n  const disableAutoFetch = src.disableAutoFetch === true;\\n  const pdfBug = src.pdfBug === true;\\n\\n  \u002F\u002F Parameters whose default values depend on other parameters.\\n  const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\\n  const useSystemFonts =\\n    typeof src.useSystemFonts === \\\"boolean\\\"\\n      ? src.useSystemFonts\\n      : !isNodeJS && !disableFontFace;\\n  const useWorkerFetch =\\n    typeof src.useWorkerFetch === \\\"boolean\\\"\\n      ? src.useWorkerFetch\\n      : (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) ||\\n        (CMapReaderFactory === DOMCMapReaderFactory &&\\n          StandardFontDataFactory === DOMStandardFontDataFactory &&\\n          cMapUrl &&\\n          standardFontDataUrl &&\\n          isValidFetchUrl(cMapUrl, document.baseURI) &&\\n          isValidFetchUrl(standardFontDataUrl, document.baseURI));\\n  const canvasFactory =\\n    src.canvasFactory || new DefaultCanvasFactory({ ownerDocument });\\n  const filterFactory =\\n    src.filterFactory || new DefaultFilterFactory({ docId, ownerDocument });\\n\\n  \u002F\u002F Parameters only intended for development\u002Ftesting purposes.\\n  const styleElement =\\n    typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")\\n      ? src.styleElement\\n      : null;\\n\\n  \u002F\u002F Set the main-thread verbosity level.\\n  setVerbosityLevel(verbosity);\\n\\n  \u002F\u002F Ensure that the various factories can be initialized, when necessary,\\n  \u002F\u002F since the user may provide *custom* ones.\\n  const transportFactory = {\\n    canvasFactory,\\n    filterFactory,\\n  };\\n  if (!useWorkerFetch) {\\n    transportFactory.cMapReaderFactory = new CMapReaderFactory({\\n      baseUrl: cMapUrl,\\n      isCompressed: cMapPacked,\\n    });\\n    transportFactory.standardFontDataFactory = new StandardFontDataFactory({\\n      baseUrl: standardFontDataUrl,\\n    });\\n  }\\n\\n  if (!worker) {\\n    const workerParams = {\\n      verbosity,\\n      port: GlobalWorkerOptions.workerPort,\\n    };\\n    \u002F\u002F Worker was not provided -- creating and owning our own. If message port\\n    \u002F\u002F is specified in global worker options, using it.\\n    worker = workerParams.port\\n      ? PDFWorker.fromPort(workerParams)\\n      : new PDFWorker(workerParams);\\n    task._worker = worker;\\n  }\\n\\n  const docParams = {\\n    docId,\\n    apiVersion:\\n      typeof PDFJSDev !== \\\"undefined\\\" && !PDFJSDev.test(\\\"TESTING\\\")\\n        ? PDFJSDev.eval(\\\"BUNDLE_VERSION\\\")\\n        : null,\\n    data,\\n    password,\\n    disableAutoFetch,\\n    rangeChunkSize,\\n    length,\\n    docBaseUrl,\\n    enableXfa,\\n    evaluatorOptions: {\\n      maxImageSize,\\n      disableFontFace,\\n      ignoreErrors,\\n      isEvalSupported,\\n      isOffscreenCanvasSupported,\\n      canvasMaxAreaInBytes,\\n      fontExtraProperties,\\n      useSystemFonts,\\n      cMapUrl: useWorkerFetch ? cMapUrl : null,\\n      standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null,\\n    },\\n  };\\n  const transportParams = {\\n    disableFontFace,\\n    fontExtraProperties,\\n    ownerDocument,\\n    pdfBug,\\n    styleElement,\\n    loadingParams: {\\n      disableAutoFetch,\\n      enableXfa,\\n    },\\n  };\\n\\n  worker.promise\\n    .then(function () {\\n      if (task.destroyed) {\\n        throw new Error(\\\"Loading aborted\\\");\\n      }\\n      if (worker.destroyed) {\\n        throw new Error(\\\"Worker was destroyed\\\");\\n      }\\n\\n      const workerIdPromise = worker.messageHandler.sendWithPromise(\\n        \\\"GetDocRequest\\\",\\n        docParams,\\n        data ? [data.buffer] : null\\n      );\\n\\n      let networkStream;\\n      if (rangeTransport) {\\n        networkStream = new PDFDataTransportStream(rangeTransport, {\\n          disableRange,\\n          disableStream,\\n        });\\n      } else if (!data) {\\n        if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n          throw new Error(\\\"Not implemented: createPDFNetworkStream\\\");\\n        }\\n        const createPDFNetworkStream = params => {\\n          if (\\n            typeof PDFJSDev !== \\\"undefined\\\" &&\\n            PDFJSDev.test(\\\"GENERIC\\\") &&\\n            isNodeJS\\n          ) {\\n            const isFetchSupported = function () {\\n              return (\\n                typeof fetch !== \\\"undefined\\\" &&\\n                typeof Response !== \\\"undefined\\\" &&\\n                \\\"body\\\" in Response.prototype\\n              );\\n            };\\n            return isFetchSupported() && isValidFetchUrl(params.url)\\n              ? new PDFFetchStream(params)\\n              : new PDFNodeStream(params);\\n          }\\n          return isValidFetchUrl(params.url)\\n            ? new PDFFetchStream(params)\\n            : new PDFNetworkStream(params);\\n        };\\n\\n        networkStream = createPDFNetworkStream({\\n          url,\\n          length,\\n          httpHeaders,\\n          withCredentials,\\n          rangeChunkSize,\\n          disableRange,\\n          disableStream,\\n        });\\n      }\\n\\n      return workerIdPromise.then(workerId => {\\n        if (task.destroyed) {\\n          throw new Error(\\\"Loading aborted\\\");\\n        }\\n        if (worker.destroyed) {\\n          throw new Error(\\\"Worker was destroyed\\\");\\n        }\\n\\n        const messageHandler = new MessageHandler(docId, workerId, worker.port);\\n        const transport = new WorkerTransport(\\n          messageHandler,\\n          task,\\n          networkStream,\\n          transportParams,\\n          transportFactory\\n        );\\n        task._transport = transport;\\n        messageHandler.send(\\\"Ready\\\", null);\\n      });\\n    })\\n    .catch(task._capability.reject);\\n\\n  return task;\\n}\\n\\nfunction getUrlProp(val) {\\n  if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n    return null; \u002F\u002F The 'url' is unused with `PDFDataRangeTransport`.\\n  }\\n  if (val instanceof URL) {\\n    return val.href;\\n  }\\n  try {\\n    \u002F\u002F The full path is required in the 'url' field.\\n    return new URL(val, window.location).href;\\n  } catch {\\n    if (\\n      typeof PDFJSDev !== \\\"undefined\\\" &&\\n      PDFJSDev.test(\\\"GENERIC\\\") &&\\n      isNodeJS &&\\n      typeof val === \\\"string\\\"\\n    ) {\\n      return val; \u002F\u002F Use the url as-is in Node.js environments.\\n    }\\n  }\\n  throw new Error(\\n    \\\"Invalid PDF url data: \\\" +\\n      \\\"either string or URL-object is expected in the url property.\\\"\\n  );\\n}\\n\\nfunction getDataProp(val) {\\n  \u002F\u002F Converting string or array-like data to Uint8Array.\\n  if (\\n    typeof PDFJSDev !== \\\"undefined\\\" &&\\n    PDFJSDev.test(\\\"GENERIC\\\") &&\\n    isNodeJS &&\\n    typeof Buffer !== \\\"undefined\\\" && \u002F\u002F eslint-disable-line no-undef\\n    val instanceof Buffer \u002F\u002F eslint-disable-line no-undef\\n  ) {\\n    throw new Error(\\n      \\\"Please provide binary data as `Uint8Array`, rather than `Buffer`.\\\"\\n    );\\n  }\\n  if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\\n    \u002F\u002F Use the data as-is when it's already a Uint8Array that completely\\n    \u002F\u002F \\\"utilizes\\\" its underlying ArrayBuffer, to prevent any possible\\n    \u002F\u002F issues when transferring it to the worker-thread.\\n    return val;\\n  }\\n  if (typeof val === \\\"string\\\") {\\n    return stringToBytes(val);\\n  }\\n  if (\\n    val instanceof ArrayBuffer ||\\n    ArrayBuffer.isView(val) ||\\n    (typeof val === \\\"object\\\" && !isNaN(val?.length))\\n  ) {\\n    return new Uint8Array(val);\\n  }\\n  throw new Error(\\n    \\\"Invalid PDF binary data: either TypedArray, \\\" +\\n      \\\"string, or array-like object is expected in the data property.\\\"\\n  );\\n}\\n\\nfunction isRefProxy(ref) {\\n  return (\\n    typeof ref === \\\"object\\\" &&\\n    Number.isInteger(ref?.num) &&\\n    ref.num >= 0 &&\\n    Number.isInteger(ref?.gen) &&\\n    ref.gen >= 0\\n  );\\n}\\n\\n\u002F**\\n * @typedef {Object} OnProgressParameters\\n * @property {number} loaded - Currently loaded number of bytes.\\n * @property {number} total - Total number of bytes in the PDF file.\\n *\u002F\\n\\n\u002F**\\n * The loading task controls the operations required to load a PDF document\\n * (such as network requests) and provides a way to listen for completion,\\n * after which individual pages can be rendered.\\n *\u002F\\nclass PDFDocumentLoadingTask {\\n  static #docId = 0;\\n\\n  constructor() {\\n    this._capability = Promise.withResolvers();\\n    this._transport = null;\\n    this._worker = null;\\n\\n    \u002F**\\n     * Unique identifier for the document loading task.\\n     * @type {string}\\n     *\u002F\\n    this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\\n\\n    \u002F**\\n     * Whether the loading task is destroyed or not.\\n     * @type {boolean}\\n     *\u002F\\n    this.destroyed = false;\\n\\n    \u002F**\\n     * Callback to request a password if a wrong or no password was provided.\\n     * The callback receives two parameters: a function that should be called\\n     * with the new password, and a reason (see {@link PasswordResponses}).\\n     * @type {function}\\n     *\u002F\\n    this.onPassword = null;\\n\\n    \u002F**\\n     * Callback to be able to monitor the loading progress of the PDF file\\n     * (necessary to implement e.g. a loading bar).\\n     * The callback receives an {@link OnProgressParameters} argument.\\n     * @type {function}\\n     *\u002F\\n    this.onProgress = null;\\n  }\\n\\n  \u002F**\\n   * Promise for document loading task completion.\\n   * @type {Promise\u003CPDFDocumentProxy>}\\n   *\u002F\\n  get promise() {\\n    return this._capability.promise;\\n  }\\n\\n  \u002F**\\n   * Abort all network requests and destroy the worker.\\n   * @returns {Promise\u003Cvoid>} A promise that is resolved when destruction is\\n   *   completed.\\n   *\u002F\\n  async destroy() {\\n    this.destroyed = true;\\n    try {\\n      if (this._worker?.port) {\\n        this._worker._pendingDestroy = true;\\n      }\\n      await this._transport?.destroy();\\n    } catch (ex) {\\n      if (this._worker?.port) {\\n        delete this._worker._pendingDestroy;\\n      }\\n      throw ex;\\n    }\\n\\n    this._transport = null;\\n    if (this._worker) {\\n      this._worker.destroy();\\n      this._worker = null;\\n    }\\n  }\\n}\\n\\n\u002F**\\n * Abstract class to support range requests file loading.\\n *\\n * NOTE: The TypedArrays passed to the constructor and relevant methods below\\n * will generally be transferred to the worker-thread. This will help reduce\\n * main-thread memory usage, however it will take ownership of the TypedArrays.\\n *\u002F\\nclass PDFDataRangeTransport {\\n  \u002F**\\n   * @param {number} length\\n   * @param {Uint8Array|null} initialData\\n   * @param {boolean} [progressiveDone]\\n   * @param {string} [contentDispositionFilename]\\n   *\u002F\\n  constructor(\\n    length,\\n    initialData,\\n    progressiveDone = false,\\n    contentDispositionFilename = null\\n  ) {\\n    this.length = length;\\n    this.initialData = initialData;\\n    this.progressiveDone = progressiveDone;\\n    this.contentDispositionFilename = contentDispositionFilename;\\n\\n    this._rangeListeners = [];\\n    this._progressListeners = [];\\n    this._progressiveReadListeners = [];\\n    this._progressiveDoneListeners = [];\\n    this._readyCapability = Promise.withResolvers();\\n  }\\n\\n  \u002F**\\n   * @param {function} listener\\n   *\u002F\\n  addRangeListener(listener) {\\n    this._rangeListeners.push(listener);\\n  }\\n\\n  \u002F**\\n   * @param {function} listener\\n   *\u002F\\n  addProgressListener(listener) {\\n    this._progressListeners.push(listener);\\n  }\\n\\n  \u002F**\\n   * @param {function} listener\\n   *\u002F\\n  addProgressiveReadListener(listener) {\\n    this._progressiveReadListeners.push(listener);\\n  }\\n\\n  \u002F**\\n   * @param {function} listener\\n   *\u002F\\n  addProgressiveDoneListener(listener) {\\n    this._progressiveDoneListeners.push(listener);\\n  }\\n\\n  \u002F**\\n   * @param {number} begin\\n   * @param {Uint8Array|null} chunk\\n   *\u002F\\n  onDataRange(begin, chunk) {\\n    for (const listener of this._rangeListeners) {\\n      listener(begin, chunk);\\n    }\\n  }\\n\\n  \u002F**\\n   * @param {number} loaded\\n   * @param {number|undefined} total\\n   *\u002F\\n  onDataProgress(loaded, total) {\\n    this._readyCapability.promise.then(() => {\\n      for (const listener of this._progressListeners) {\\n        listener(loaded, total);\\n      }\\n    });\\n  }\\n\\n  \u002F**\\n   * @param {Uint8Array|null} chunk\\n   *\u002F\\n  onDataProgressiveRead(chunk) {\\n    this._readyCapability.promise.then(() => {\\n      for (const listener of this._progressiveReadListeners) {\\n        listener(chunk);\\n      }\\n    });\\n  }\\n\\n  onDataProgressiveDone() {\\n    this._readyCapability.promise.then(() => {\\n      for (const listener of this._progressiveDoneListeners) {\\n        listener();\\n      }\\n    });\\n  }\\n\\n  transportReady() {\\n    this._readyCapability.resolve();\\n  }\\n\\n  \u002F**\\n   * @param {number} begin\\n   * @param {number} end\\n   *\u002F\\n  requestDataRange(begin, end) {\\n    unreachable(\\\"Abstract method PDFDataRangeTransport.requestDataRange\\\");\\n  }\\n\\n  abort() {}\\n}\\n\\n\u002F**\\n * Proxy to a `PDFDocument` in the worker thread.\\n *\u002F\\nclass PDFDocumentProxy {\\n  constructor(pdfInfo, transport) {\\n    this._pdfInfo = pdfInfo;\\n    this._transport = transport;\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      \u002F\u002F For testing purposes.\\n      Object.defineProperty(this, \\\"getNetworkStreamName\\\", {\\n        value: () => this._transport.getNetworkStreamName(),\\n      });\\n      Object.defineProperty(this, \\\"getXFADatasets\\\", {\\n        value: () => this._transport.getXFADatasets(),\\n      });\\n      Object.defineProperty(this, \\\"getXRefPrevValue\\\", {\\n        value: () => this._transport.getXRefPrevValue(),\\n      });\\n      Object.defineProperty(this, \\\"getStartXRefPos\\\", {\\n        value: () => this._transport.getStartXRefPos(),\\n      });\\n      Object.defineProperty(this, \\\"getAnnotArray\\\", {\\n        value: pageIndex => this._transport.getAnnotArray(pageIndex),\\n      });\\n    }\\n  }\\n\\n  \u002F**\\n   * @type {AnnotationStorage} Storage for annotation data in forms.\\n   *\u002F\\n  get annotationStorage() {\\n    return this._transport.annotationStorage;\\n  }\\n\\n  \u002F**\\n   * @type {Object} The filter factory instance.\\n   *\u002F\\n  get filterFactory() {\\n    return this._transport.filterFactory;\\n  }\\n\\n  \u002F**\\n   * @type {number} Total number of pages in the PDF file.\\n   *\u002F\\n  get numPages() {\\n    return this._pdfInfo.numPages;\\n  }\\n\\n  \u002F**\\n   * @type {Array\u003Cstring, string|null>} A (not guaranteed to be) unique ID to\\n   *   identify the PDF document.\\n   *   NOTE: The first element will always be defined for all PDF documents,\\n   *   whereas the second element is only defined for *modified* PDF documents.\\n   *\u002F\\n  get fingerprints() {\\n    return this._pdfInfo.fingerprints;\\n  }\\n\\n  \u002F**\\n   * @type {boolean} True if only XFA form.\\n   *\u002F\\n  get isPureXfa() {\\n    return shadow(this, \\\"isPureXfa\\\", !!this._transport._htmlForXfa);\\n  }\\n\\n  \u002F**\\n   * NOTE: This is (mostly) intended to support printing of XFA forms.\\n   *\\n   * @type {Object | null} An object representing a HTML tree structure\\n   *   to render the XFA, or `null` when no XFA form exists.\\n   *\u002F\\n  get allXfaHtml() {\\n    return this._transport._htmlForXfa;\\n  }\\n\\n  \u002F**\\n   * @param {number} pageNumber - The page number to get. The first page is 1.\\n   * @returns {Promise\u003CPDFPageProxy>} A promise that is resolved with\\n   *   a {@link PDFPageProxy} object.\\n   *\u002F\\n  getPage(pageNumber) {\\n    return this._transport.getPage(pageNumber);\\n  }\\n\\n  \u002F**\\n   * @param {RefProxy} ref - The page reference.\\n   * @returns {Promise\u003Cnumber>} A promise that is resolved with the page index,\\n   *   starting from zero, that is associated with the reference.\\n   *\u002F\\n  getPageIndex(ref) {\\n    return this._transport.getPageIndex(ref);\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003CObject\u003Cstring, Array\u003Cany>>>} A promise that is resolved\\n   *   with a mapping from named destinations to references.\\n   *\\n   * This can be slow for large documents. Use `getDestination` instead.\\n   *\u002F\\n  getDestinations() {\\n    return this._transport.getDestinations();\\n  }\\n\\n  \u002F**\\n   * @param {string} id - The named destination to get.\\n   * @returns {Promise\u003CArray\u003Cany> | null>} A promise that is resolved with all\\n   *   information of the given named destination, or `null` when the named\\n   *   destination is not present in the PDF file.\\n   *\u002F\\n  getDestination(id) {\\n    return this._transport.getDestination(id);\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003CArray\u003Cstring> | null>} A promise that is resolved with\\n   *   an {Array} containing the page labels that correspond to the page\\n   *   indexes, or `null` when no page labels are present in the PDF file.\\n   *\u002F\\n  getPageLabels() {\\n    return this._transport.getPageLabels();\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003Cstring>} A promise that is resolved with a {string}\\n   *   containing the page layout name.\\n   *\u002F\\n  getPageLayout() {\\n    return this._transport.getPageLayout();\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003Cstring>} A promise that is resolved with a {string}\\n   *   containing the page mode name.\\n   *\u002F\\n  getPageMode() {\\n    return this._transport.getPageMode();\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003CObject | null>} A promise that is resolved with an\\n   *   {Object} containing the viewer preferences, or `null` when no viewer\\n   *   preferences are present in the PDF file.\\n   *\u002F\\n  getViewerPreferences() {\\n    return this._transport.getViewerPreferences();\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003Cany | null>} A promise that is resolved with an {Array}\\n   *   containing the destination, or `null` when no open action is present\\n   *   in the PDF.\\n   *\u002F\\n  getOpenAction() {\\n    return this._transport.getOpenAction();\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003Cany>} A promise that is resolved with a lookup table\\n   *   for mapping named attachments to their content.\\n   *\u002F\\n  getAttachments() {\\n    return this._transport.getAttachments();\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003CObject | null>} A promise that is resolved with\\n   *   an {Object} with the JavaScript actions:\\n   *     - from the name tree.\\n   *     - from A or AA entries in the catalog dictionary.\\n   *   , or `null` if no JavaScript exists.\\n   *\u002F\\n  getJSActions() {\\n    return this._transport.getDocJSActions();\\n  }\\n\\n  \u002F**\\n   * @typedef {Object} OutlineNode\\n   * @property {string} title\\n   * @property {boolean} bold\\n   * @property {boolean} italic\\n   * @property {Uint8ClampedArray} color - The color in RGB format to use for\\n   *   display purposes.\\n   * @property {string | Array\u003Cany> | null} dest\\n   * @property {string | null} url\\n   * @property {string | undefined} unsafeUrl\\n   * @property {boolean | undefined} newWindow\\n   * @property {number | undefined} count\\n   * @property {Array\u003COutlineNode>} items\\n   *\u002F\\n\\n  \u002F**\\n   * @returns {Promise\u003CArray\u003COutlineNode>>} A promise that is resolved with an\\n   *   {Array} that is a tree outline (if it has one) of the PDF file.\\n   *\u002F\\n  getOutline() {\\n    return this._transport.getOutline();\\n  }\\n\\n  \u002F**\\n   * @typedef {Object} GetOptionalContentConfigParameters\\n   * @property {string} [intent] - Determines the optional content groups that\\n   *   are visible by default; valid values are:\\n   *    - 'display' (viewable groups).\\n   *    - 'print' (printable groups).\\n   *    - 'any' (all groups).\\n   *   The default value is 'display'.\\n   *\u002F\\n\\n  \u002F**\\n   * @param {GetOptionalContentConfigParameters} [params] - Optional content\\n   *   config parameters.\\n   * @returns {Promise\u003COptionalContentConfig>} A promise that is resolved with\\n   *   an {@link OptionalContentConfig} that contains all the optional content\\n   *   groups (assuming that the document has any).\\n   *\u002F\\n  getOptionalContentConfig({ intent = \\\"display\\\" } = {}) {\\n    const { renderingIntent } = this._transport.getRenderingIntent(intent);\\n\\n    return this._transport.getOptionalContentConfig(renderingIntent);\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003CArray\u003Cnumber> | null>} A promise that is resolved with\\n   *   an {Array} that contains the permission flags for the PDF document, or\\n   *   `null` when no permissions are present in the PDF file.\\n   *\u002F\\n  getPermissions() {\\n    return this._transport.getPermissions();\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003C{ info: Object, metadata: Metadata }>} A promise that is\\n   *   resolved with an {Object} that has `info` and `metadata` properties.\\n   *   `info` is an {Object} filled with anything available in the information\\n   *   dictionary and similarly `metadata` is a {Metadata} object with\\n   *   information from the metadata section of the PDF.\\n   *\u002F\\n  getMetadata() {\\n    return this._transport.getMetadata();\\n  }\\n\\n  \u002F**\\n   * @typedef {Object} MarkInfo\\n   * Properties correspond to Table 321 of the PDF 32000-1:2008 spec.\\n   * @property {boolean} Marked\\n   * @property {boolean} UserProperties\\n   * @property {boolean} Suspects\\n   *\u002F\\n\\n  \u002F**\\n   * @returns {Promise\u003CMarkInfo | null>} A promise that is resolved with\\n   *   a {MarkInfo} object that contains the MarkInfo flags for the PDF\\n   *   document, or `null` when no MarkInfo values are present in the PDF file.\\n   *\u002F\\n  getMarkInfo() {\\n    return this._transport.getMarkInfo();\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003CUint8Array>} A promise that is resolved with a\\n   *   {Uint8Array} containing the raw data of the PDF document.\\n   *\u002F\\n  getData() {\\n    return this._transport.getData();\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003CUint8Array>} A promise that is resolved with a\\n   *   {Uint8Array} containing the full data of the saved document.\\n   *\u002F\\n  saveDocument() {\\n    return this._transport.saveDocument();\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003C{ length: number }>} A promise that is resolved when the\\n   *   document's data is loaded. It is resolved with an {Object} that contains\\n   *   the `length` property that indicates size of the PDF data in bytes.\\n   *\u002F\\n  getDownloadInfo() {\\n    return this._transport.downloadInfoCapability.promise;\\n  }\\n\\n  \u002F**\\n   * Cleans up resources allocated by the document on both the main and worker\\n   * threads.\\n   *\\n   * NOTE: Do not, under any circumstances, call this method when rendering is\\n   * currently ongoing since that may lead to rendering errors.\\n   *\\n   * @param {boolean} [keepLoadedFonts] - Let fonts remain attached to the DOM.\\n   *   NOTE: This will increase persistent memory usage, hence don't use this\\n   *   option unless absolutely necessary. The default value is `false`.\\n   * @returns {Promise} A promise that is resolved when clean-up has finished.\\n   *\u002F\\n  cleanup(keepLoadedFonts = false) {\\n    return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\\n  }\\n\\n  \u002F**\\n   * Destroys the current document instance and terminates the worker.\\n   *\u002F\\n  destroy() {\\n    return this.loadingTask.destroy();\\n  }\\n\\n  \u002F**\\n   * @param {RefProxy} ref - The page reference.\\n   * @returns {number | null} The page number, if it's cached.\\n   *\u002F\\n  cachedPageNumber(ref) {\\n    return this._transport.cachedPageNumber(ref);\\n  }\\n\\n  \u002F**\\n   * @type {DocumentInitParameters} A subset of the current\\n   *   {DocumentInitParameters}, which are needed in the viewer.\\n   *\u002F\\n  get loadingParams() {\\n    return this._transport.loadingParams;\\n  }\\n\\n  \u002F**\\n   * @type {PDFDocumentLoadingTask} The loadingTask for the current document.\\n   *\u002F\\n  get loadingTask() {\\n    return this._transport.loadingTask;\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003CObject\u003Cstring, Array\u003CObject>> | null>} A promise that is\\n   *   resolved with an {Object} containing \u002FAcroForm field data for the JS\\n   *   sandbox, or `null` when no field data is present in the PDF file.\\n   *\u002F\\n  getFieldObjects() {\\n    return this._transport.getFieldObjects();\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003Cboolean>} A promise that is resolved with `true`\\n   *   if some \u002FAcroForm fields have JavaScript actions.\\n   *\u002F\\n  hasJSActions() {\\n    return this._transport.hasJSActions();\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003CArray\u003Cstring> | null>} A promise that is resolved with an\\n   *   {Array\u003Cstring>} containing IDs of annotations that have a calculation\\n   *   action, or `null` when no such annotations are present in the PDF file.\\n   *\u002F\\n  getCalculationOrderIds() {\\n    return this._transport.getCalculationOrderIds();\\n  }\\n}\\n\\n\u002F**\\n * Page getViewport parameters.\\n *\\n * @typedef {Object} GetViewportParameters\\n * @property {number} scale - The desired scale of the viewport.\\n * @property {number} [rotation] - The desired rotation, in degrees, of\\n *   the viewport. If omitted it defaults to the page rotation.\\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\\n *   The default value is `0`.\\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\\n *   The default value is `0`.\\n * @property {boolean} [dontFlip] - If true, the y-axis will not be\\n *   flipped. The default value is `false`.\\n *\u002F\\n\\n\u002F**\\n * Page getTextContent parameters.\\n *\\n * @typedef {Object} getTextContentParameters\\n * @property {boolean} [includeMarkedContent] - When true include marked\\n *   content items in the items array of TextContent. The default is `false`.\\n * @property {boolean} [disableNormalization] - When true the text is *not*\\n *   normalized in the worker-thread. The default is `false`.\\n *\u002F\\n\\n\u002F**\\n * Page text content.\\n *\\n * @typedef {Object} TextContent\\n * @property {Array\u003CTextItem | TextMarkedContent>} items - Array of\\n *   {@link TextItem} and {@link TextMarkedContent} objects. TextMarkedContent\\n *   items are included when includeMarkedContent is true.\\n * @property {Object\u003Cstring, TextStyle>} styles - {@link TextStyle} objects,\\n *   indexed by font name.\\n * @property {string | null} lang - The document \u002FLang attribute.\\n *\u002F\\n\\n\u002F**\\n * Page text content part.\\n *\\n * @typedef {Object} TextItem\\n * @property {string} str - Text content.\\n * @property {string} dir - Text direction: 'ttb', 'ltr' or 'rtl'.\\n * @property {Array\u003Cany>} transform - Transformation matrix.\\n * @property {number} width - Width in device space.\\n * @property {number} height - Height in device space.\\n * @property {string} fontName - Font name used by PDF.js for converted font.\\n * @property {boolean} hasEOL - Indicating if the text content is followed by a\\n *   line-break.\\n *\u002F\\n\\n\u002F**\\n * Page text marked content part.\\n *\\n * @typedef {Object} TextMarkedContent\\n * @property {string} type - Either 'beginMarkedContent',\\n *   'beginMarkedContentProps', or 'endMarkedContent'.\\n * @property {string} id - The marked content identifier. Only used for type\\n *   'beginMarkedContentProps'.\\n *\u002F\\n\\n\u002F**\\n * Text style.\\n *\\n * @typedef {Object} TextStyle\\n * @property {number} ascent - Font ascent.\\n * @property {number} descent - Font descent.\\n * @property {boolean} vertical - Whether or not the text is in vertical mode.\\n * @property {string} fontFamily - The possible font family.\\n *\u002F\\n\\n\u002F**\\n * Page annotation parameters.\\n *\\n * @typedef {Object} GetAnnotationsParameters\\n * @property {string} [intent] - Determines the annotations that are fetched,\\n *   can be 'display' (viewable annotations), 'print' (printable annotations),\\n *   or 'any' (all annotations). The default value is 'display'.\\n *\u002F\\n\\n\u002F**\\n * Page render parameters.\\n *\\n * @typedef {Object} RenderParameters\\n * @property {CanvasRenderingContext2D} canvasContext - A 2D context of a DOM\\n *   Canvas object.\\n * @property {PageViewport} viewport - Rendering viewport obtained by calling\\n *   the `PDFPageProxy.getViewport` method.\\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\\n *   or 'any'. The default value is 'display'.\\n * @property {number} [annotationMode] Controls which annotations are rendered\\n *   onto the canvas, for annotations with appearance-data; the values from\\n *   {@link AnnotationMode} should be used. The following values are supported:\\n *    - `AnnotationMode.DISABLE`, which disables all annotations.\\n *    - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\\n *      it also depends on the `intent`-option, see above).\\n *    - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\\n *      interactive form elements (those will be rendered in the display layer).\\n *    - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\\n *      (as above) but where interactive form elements are updated with data\\n *      from the {@link AnnotationStorage}-instance; useful e.g. for printing.\\n *   The default value is `AnnotationMode.ENABLE`.\\n * @property {Array\u003Cany>} [transform] - Additional transform, applied just\\n *   before viewport transform.\\n * @property {CanvasGradient | CanvasPattern | string} [background] - Background\\n *   to use for the canvas.\\n *   Any valid `canvas.fillStyle` can be used: a `DOMString` parsed as CSS\\n *   \u003Ccolor> value, a `CanvasGradient` object (a linear or radial gradient) or\\n *   a `CanvasPattern` object (a repetitive image). The default value is\\n *   'rgb(255,255,255)'.\\n *\\n *   NOTE: This option may be partially, or completely, ignored when the\\n *   `pageColors`-option is used.\\n * @property {Object} [pageColors] - Overwrites background and foreground colors\\n *   with user defined ones in order to improve readability in high contrast\\n *   mode.\\n * @property {Promise\u003COptionalContentConfig>} [optionalContentConfigPromise] -\\n *   A promise that should resolve with an {@link OptionalContentConfig}\\n *   created from `PDFDocumentProxy.getOptionalContentConfig`. If `null`,\\n *   the configuration will be fetched automatically with the default visibility\\n *   states set.\\n * @property {Map\u003Cstring, HTMLCanvasElement>} [annotationCanvasMap] - Map some\\n *   annotation ids with canvases used to render them.\\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\\n *\u002F\\n\\n\u002F**\\n * Page getOperatorList parameters.\\n *\\n * @typedef {Object} GetOperatorListParameters\\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\\n *   or 'any'. The default value is 'display'.\\n * @property {number} [annotationMode] Controls which annotations are included\\n *   in the operatorList, for annotations with appearance-data; the values from\\n *   {@link AnnotationMode} should be used. The following values are supported:\\n *    - `AnnotationMode.DISABLE`, which disables all annotations.\\n *    - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\\n *      it also depends on the `intent`-option, see above).\\n *    - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\\n *      interactive form elements (those will be rendered in the display layer).\\n *    - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\\n *      (as above) but where interactive form elements are updated with data\\n *      from the {@link AnnotationStorage}-instance; useful e.g. for printing.\\n *   The default value is `AnnotationMode.ENABLE`.\\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\\n *\u002F\\n\\n\u002F**\\n * Structure tree node. The root node will have a role \\\"Root\\\".\\n *\\n * @typedef {Object} StructTreeNode\\n * @property {Array\u003CStructTreeNode | StructTreeContent>} children - Array of\\n *   {@link StructTreeNode} and {@link StructTreeContent} objects.\\n * @property {string} role - element's role, already mapped if a role map exists\\n * in the PDF.\\n *\u002F\\n\\n\u002F**\\n * Structure tree content.\\n *\\n * @typedef {Object} StructTreeContent\\n * @property {string} type - either \\\"content\\\" for page and stream structure\\n *   elements or \\\"object\\\" for object references.\\n * @property {string} id - unique id that will map to the text layer.\\n *\u002F\\n\\n\u002F**\\n * PDF page operator list.\\n *\\n * @typedef {Object} PDFOperatorList\\n * @property {Array\u003Cnumber>} fnArray - Array containing the operator functions.\\n * @property {Array\u003Cany>} argsArray - Array containing the arguments of the\\n *   functions.\\n *\u002F\\n\\n\u002F**\\n * Proxy to a `PDFPage` in the worker thread.\\n *\u002F\\nclass PDFPageProxy {\\n  #delayedCleanupTimeout = null;\\n\\n  #pendingCleanup = false;\\n\\n  constructor(pageIndex, pageInfo, transport, pdfBug = false) {\\n    this._pageIndex = pageIndex;\\n    this._pageInfo = pageInfo;\\n    this._transport = transport;\\n    this._stats = pdfBug ? new StatTimer() : null;\\n    this._pdfBug = pdfBug;\\n    \u002F** @type {PDFObjects} *\u002F\\n    this.commonObjs = transport.commonObjs;\\n    this.objs = new PDFObjects();\\n\\n    this._maybeCleanupAfterRender = false;\\n    this._intentStates = new Map();\\n    this.destroyed = false;\\n  }\\n\\n  \u002F**\\n   * @type {number} Page number of the page. First page is 1.\\n   *\u002F\\n  get pageNumber() {\\n    return this._pageIndex + 1;\\n  }\\n\\n  \u002F**\\n   * @type {number} The number of degrees the page is rotated clockwise.\\n   *\u002F\\n  get rotate() {\\n    return this._pageInfo.rotate;\\n  }\\n\\n  \u002F**\\n   * @type {RefProxy | null} The reference that points to this page.\\n   *\u002F\\n  get ref() {\\n    return this._pageInfo.ref;\\n  }\\n\\n  \u002F**\\n   * @type {number} The default size of units in 1\u002F72nds of an inch.\\n   *\u002F\\n  get userUnit() {\\n    return this._pageInfo.userUnit;\\n  }\\n\\n  \u002F**\\n   * @type {Array\u003Cnumber>} An array of the visible portion of the PDF page in\\n   *   user space units [x1, y1, x2, y2].\\n   *\u002F\\n  get view() {\\n    return this._pageInfo.view;\\n  }\\n\\n  \u002F**\\n   * @param {GetViewportParameters} params - Viewport parameters.\\n   * @returns {PageViewport} Contains 'width' and 'height' properties\\n   *   along with transforms required for rendering.\\n   *\u002F\\n  getViewport({\\n    scale,\\n    rotation = this.rotate,\\n    offsetX = 0,\\n    offsetY = 0,\\n    dontFlip = false,\\n  } = {}) {\\n    return new PageViewport({\\n      viewBox: this.view,\\n      scale,\\n      rotation,\\n      offsetX,\\n      offsetY,\\n      dontFlip,\\n    });\\n  }\\n\\n  \u002F**\\n   * @param {GetAnnotationsParameters} [params] - Annotation parameters.\\n   * @returns {Promise\u003CArray\u003Cany>>} A promise that is resolved with an\\n   *   {Array} of the annotation objects.\\n   *\u002F\\n  getAnnotations({ intent = \\\"display\\\" } = {}) {\\n    const { renderingIntent } = this._transport.getRenderingIntent(intent);\\n\\n    return this._transport.getAnnotations(this._pageIndex, renderingIntent);\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003CObject>} A promise that is resolved with an\\n   *   {Object} with JS actions.\\n   *\u002F\\n  getJSActions() {\\n    return this._transport.getPageJSActions(this._pageIndex);\\n  }\\n\\n  \u002F**\\n   * @type {Object} The filter factory instance.\\n   *\u002F\\n  get filterFactory() {\\n    return this._transport.filterFactory;\\n  }\\n\\n  \u002F**\\n   * @type {boolean} True if only XFA form.\\n   *\u002F\\n  get isPureXfa() {\\n    return shadow(this, \\\"isPureXfa\\\", !!this._transport._htmlForXfa);\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003CObject | null>} A promise that is resolved with\\n   *   an {Object} with a fake DOM object (a tree structure where elements\\n   *   are {Object} with a name, attributes (class, style, ...), value and\\n   *   children, very similar to a HTML DOM tree), or `null` if no XFA exists.\\n   *\u002F\\n  async getXfa() {\\n    return this._transport._htmlForXfa?.children[this._pageIndex] || null;\\n  }\\n\\n  \u002F**\\n   * Begins the process of rendering a page to the desired context.\\n   *\\n   * @param {RenderParameters} params - Page render parameters.\\n   * @returns {RenderTask} An object that contains a promise that is\\n   *   resolved when the page finishes rendering.\\n   *\u002F\\n  render({\\n    canvasContext,\\n    viewport,\\n    intent = \\\"display\\\",\\n    annotationMode = AnnotationMode.ENABLE,\\n    transform = null,\\n    background = null,\\n    optionalContentConfigPromise = null,\\n    annotationCanvasMap = null,\\n    pageColors = null,\\n    printAnnotationStorage = null,\\n  }) {\\n    this._stats?.time(\\\"Overall\\\");\\n\\n    const intentArgs = this._transport.getRenderingIntent(\\n      intent,\\n      annotationMode,\\n      printAnnotationStorage\\n    );\\n    const { renderingIntent, cacheKey } = intentArgs;\\n    \u002F\u002F If there was a pending destroy, cancel it so no cleanup happens during\\n    \u002F\u002F this call to render...\\n    this.#pendingCleanup = false;\\n    \u002F\u002F ... and ensure that a delayed cleanup is always aborted.\\n    this.#abortDelayedCleanup();\\n\\n    optionalContentConfigPromise ||=\\n      this._transport.getOptionalContentConfig(renderingIntent);\\n\\n    let intentState = this._intentStates.get(cacheKey);\\n    if (!intentState) {\\n      intentState = Object.create(null);\\n      this._intentStates.set(cacheKey, intentState);\\n    }\\n\\n    \u002F\u002F Ensure that a pending `streamReader` cancel timeout is always aborted.\\n    if (intentState.streamReaderCancelTimeout) {\\n      clearTimeout(intentState.streamReaderCancelTimeout);\\n      intentState.streamReaderCancelTimeout = null;\\n    }\\n\\n    const intentPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\\n\\n    \u002F\u002F If there's no displayReadyCapability yet, then the operatorList\\n    \u002F\u002F was never requested before. Make the request and create the promise.\\n    if (!intentState.displayReadyCapability) {\\n      intentState.displayReadyCapability = Promise.withResolvers();\\n      intentState.operatorList = {\\n        fnArray: [],\\n        argsArray: [],\\n        lastChunk: false,\\n        separateAnnots: null,\\n      };\\n\\n      this._stats?.time(\\\"Page Request\\\");\\n      this._pumpOperatorList(intentArgs);\\n    }\\n\\n    const complete = error => {\\n      intentState.renderTasks.delete(internalRenderTask);\\n\\n      \u002F\u002F Attempt to reduce memory usage during *printing*, by always running\\n      \u002F\u002F cleanup immediately once rendering has finished.\\n      if (this._maybeCleanupAfterRender || intentPrint) {\\n        this.#pendingCleanup = true;\\n      }\\n      this.#tryCleanup(\u002F* delayed = *\u002F !intentPrint);\\n\\n      if (error) {\\n        internalRenderTask.capability.reject(error);\\n\\n        this._abortOperatorList({\\n          intentState,\\n          reason: error instanceof Error ? error : new Error(error),\\n        });\\n      } else {\\n        internalRenderTask.capability.resolve();\\n      }\\n\\n      if (this._stats) {\\n        this._stats.timeEnd(\\\"Rendering\\\");\\n        this._stats.timeEnd(\\\"Overall\\\");\\n\\n        if (globalThis.Stats?.enabled) {\\n          globalThis.Stats.add(this.pageNumber, this._stats);\\n        }\\n      }\\n    };\\n\\n    const internalRenderTask = new InternalRenderTask({\\n      callback: complete,\\n      \u002F\u002F Only include the required properties, and *not* the entire object.\\n      params: {\\n        canvasContext,\\n        viewport,\\n        transform,\\n        background,\\n      },\\n      objs: this.objs,\\n      commonObjs: this.commonObjs,\\n      annotationCanvasMap,\\n      operatorList: intentState.operatorList,\\n      pageIndex: this._pageIndex,\\n      canvasFactory: this._transport.canvasFactory,\\n      filterFactory: this._transport.filterFactory,\\n      useRequestAnimationFrame: !intentPrint,\\n      pdfBug: this._pdfBug,\\n      pageColors,\\n    });\\n\\n    (intentState.renderTasks ||= new Set()).add(internalRenderTask);\\n    const renderTask = internalRenderTask.task;\\n\\n    Promise.all([\\n      intentState.displayReadyCapability.promise,\\n      optionalContentConfigPromise,\\n    ])\\n      .then(([transparency, optionalContentConfig]) => {\\n        if (this.destroyed) {\\n          complete();\\n          return;\\n        }\\n        this._stats?.time(\\\"Rendering\\\");\\n\\n        if (!(optionalContentConfig.renderingIntent & renderingIntent)) {\\n          throw new Error(\\n            \\\"Must use the same `intent`-argument when calling the `PDFPageProxy.render` \\\" +\\n              \\\"and `PDFDocumentProxy.getOptionalContentConfig` methods.\\\"\\n          );\\n        }\\n        internalRenderTask.initializeGraphics({\\n          transparency,\\n          optionalContentConfig,\\n        });\\n        internalRenderTask.operatorListChanged();\\n      })\\n      .catch(complete);\\n\\n    return renderTask;\\n  }\\n\\n  \u002F**\\n   * @param {GetOperatorListParameters} params - Page getOperatorList\\n   *   parameters.\\n   * @returns {Promise\u003CPDFOperatorList>} A promise resolved with an\\n   *   {@link PDFOperatorList} object that represents the page's operator list.\\n   *\u002F\\n  getOperatorList({\\n    intent = \\\"display\\\",\\n    annotationMode = AnnotationMode.ENABLE,\\n    printAnnotationStorage = null,\\n  } = {}) {\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && !PDFJSDev.test(\\\"GENERIC\\\")) {\\n      throw new Error(\\\"Not implemented: getOperatorList\\\");\\n    }\\n    function operatorListChanged() {\\n      if (intentState.operatorList.lastChunk) {\\n        intentState.opListReadCapability.resolve(intentState.operatorList);\\n\\n        intentState.renderTasks.delete(opListTask);\\n      }\\n    }\\n\\n    const intentArgs = this._transport.getRenderingIntent(\\n      intent,\\n      annotationMode,\\n      printAnnotationStorage,\\n      \u002F* isOpList = *\u002F true\\n    );\\n    let intentState = this._intentStates.get(intentArgs.cacheKey);\\n    if (!intentState) {\\n      intentState = Object.create(null);\\n      this._intentStates.set(intentArgs.cacheKey, intentState);\\n    }\\n    let opListTask;\\n\\n    if (!intentState.opListReadCapability) {\\n      opListTask = Object.create(null);\\n      opListTask.operatorListChanged = operatorListChanged;\\n      intentState.opListReadCapability = Promise.withResolvers();\\n      (intentState.renderTasks ||= new Set()).add(opListTask);\\n      intentState.operatorList = {\\n        fnArray: [],\\n        argsArray: [],\\n        lastChunk: false,\\n        separateAnnots: null,\\n      };\\n\\n      this._stats?.time(\\\"Page Request\\\");\\n      this._pumpOperatorList(intentArgs);\\n    }\\n    return intentState.opListReadCapability.promise;\\n  }\\n\\n  \u002F**\\n   * NOTE: All occurrences of whitespace will be replaced by\\n   * standard spaces (0x20).\\n   *\\n   * @param {getTextContentParameters} params - getTextContent parameters.\\n   * @returns {ReadableStream} Stream for reading text content chunks.\\n   *\u002F\\n  streamTextContent({\\n    includeMarkedContent = false,\\n    disableNormalization = false,\\n  } = {}) {\\n    const TEXT_CONTENT_CHUNK_SIZE = 100;\\n\\n    return this._transport.messageHandler.sendWithStream(\\n      \\\"GetTextContent\\\",\\n      {\\n        pageIndex: this._pageIndex,\\n        includeMarkedContent: includeMarkedContent === true,\\n        disableNormalization: disableNormalization === true,\\n      },\\n      {\\n        highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\\n        size(textContent) {\\n          return textContent.items.length;\\n        },\\n      }\\n    );\\n  }\\n\\n  \u002F**\\n   * NOTE: All occurrences of whitespace will be replaced by\\n   * standard spaces (0x20).\\n   *\\n   * @param {getTextContentParameters} params - getTextContent parameters.\\n   * @returns {Promise\u003CTextContent>} A promise that is resolved with a\\n   *   {@link TextContent} object that represents the page's text content.\\n   *\u002F\\n  getTextContent(params = {}) {\\n    if (this._transport._htmlForXfa) {\\n      \u002F\u002F TODO: We need to revisit this once the XFA foreground patch lands and\\n      \u002F\u002F only do this for non-foreground XFA.\\n      return this.getXfa().then(xfa => XfaText.textContent(xfa));\\n    }\\n    const readableStream = this.streamTextContent(params);\\n\\n    return new Promise(function (resolve, reject) {\\n      function pump() {\\n        reader.read().then(function ({ value, done }) {\\n          if (done) {\\n            resolve(textContent);\\n            return;\\n          }\\n          textContent.lang ??= value.lang;\\n          Object.assign(textContent.styles, value.styles);\\n          textContent.items.push(...value.items);\\n          pump();\\n        }, reject);\\n      }\\n\\n      const reader = readableStream.getReader();\\n      const textContent = {\\n        items: [],\\n        styles: Object.create(null),\\n        lang: null,\\n      };\\n      pump();\\n    });\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003CStructTreeNode>} A promise that is resolved with a\\n   *   {@link StructTreeNode} object that represents the page's structure tree,\\n   *   or `null` when no structure tree is present for the current page.\\n   *\u002F\\n  getStructTree() {\\n    return this._transport.getStructTree(this._pageIndex);\\n  }\\n\\n  \u002F**\\n   * Destroys the page object.\\n   * @private\\n   *\u002F\\n  _destroy() {\\n    this.destroyed = true;\\n\\n    const waitOn = [];\\n    for (const intentState of this._intentStates.values()) {\\n      this._abortOperatorList({\\n        intentState,\\n        reason: new Error(\\\"Page was destroyed.\\\"),\\n        force: true,\\n      });\\n\\n      if (intentState.opListReadCapability) {\\n        \u002F\u002F Avoid errors below, since the renderTasks are just stubs.\\n        continue;\\n      }\\n      for (const internalRenderTask of intentState.renderTasks) {\\n        waitOn.push(internalRenderTask.completed);\\n        internalRenderTask.cancel();\\n      }\\n    }\\n    this.objs.clear();\\n    this.#pendingCleanup = false;\\n    this.#abortDelayedCleanup();\\n\\n    return Promise.all(waitOn);\\n  }\\n\\n  \u002F**\\n   * Cleans up resources allocated by the page.\\n   *\\n   * @param {boolean} [resetStats] - Reset page stats, if enabled.\\n   *   The default value is `false`.\\n   * @returns {boolean} Indicates if clean-up was successfully run.\\n   *\u002F\\n  cleanup(resetStats = false) {\\n    this.#pendingCleanup = true;\\n    const success = this.#tryCleanup(\u002F* delayed = *\u002F false);\\n\\n    if (resetStats && success) {\\n      this._stats &&= new StatTimer();\\n    }\\n    return success;\\n  }\\n\\n  \u002F**\\n   * Attempts to clean up if rendering is in a state where that's possible.\\n   * @param {boolean} [delayed] - Delay the cleanup, to e.g. improve zooming\\n   *   performance in documents with large images.\\n   *   The default value is `false`.\\n   * @returns {boolean} Indicates if clean-up was successfully run.\\n   *\u002F\\n  #tryCleanup(delayed = false) {\\n    this.#abortDelayedCleanup();\\n\\n    if (!this.#pendingCleanup || this.destroyed) {\\n      return false;\\n    }\\n    if (delayed) {\\n      this.#delayedCleanupTimeout = setTimeout(() => {\\n        this.#delayedCleanupTimeout = null;\\n        this.#tryCleanup(\u002F* delayed = *\u002F false);\\n      }, DELAYED_CLEANUP_TIMEOUT);\\n\\n      return false;\\n    }\\n    for (const { renderTasks, operatorList } of this._intentStates.values()) {\\n      if (renderTasks.size > 0 || !operatorList.lastChunk) {\\n        return false;\\n      }\\n    }\\n    this._intentStates.clear();\\n    this.objs.clear();\\n    this.#pendingCleanup = false;\\n    return true;\\n  }\\n\\n  #abortDelayedCleanup() {\\n    if (this.#delayedCleanupTimeout) {\\n      clearTimeout(this.#delayedCleanupTimeout);\\n      this.#delayedCleanupTimeout = null;\\n    }\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _startRenderPage(transparency, cacheKey) {\\n    const intentState = this._intentStates.get(cacheKey);\\n    if (!intentState) {\\n      return; \u002F\u002F Rendering was cancelled.\\n    }\\n    this._stats?.timeEnd(\\\"Page Request\\\");\\n\\n    \u002F\u002F TODO Refactor RenderPageRequest to separate rendering\\n    \u002F\u002F and operator list logic\\n    intentState.displayReadyCapability?.resolve(transparency);\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _renderPageChunk(operatorListChunk, intentState) {\\n    \u002F\u002F Add the new chunk to the current operator list.\\n    for (let i = 0, ii = operatorListChunk.length; i \u003C ii; i++) {\\n      intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\\n      intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\\n    }\\n    intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\\n    intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\\n\\n    \u002F\u002F Notify all the rendering tasks there are more operators to be consumed.\\n    for (const internalRenderTask of intentState.renderTasks) {\\n      internalRenderTask.operatorListChanged();\\n    }\\n\\n    if (operatorListChunk.lastChunk) {\\n      this.#tryCleanup(\u002F* delayed = *\u002F true);\\n    }\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _pumpOperatorList({\\n    renderingIntent,\\n    cacheKey,\\n    annotationStorageSerializable,\\n  }) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        Number.isInteger(renderingIntent) && renderingIntent > 0,\\n        '_pumpOperatorList: Expected valid \\\"renderingIntent\\\" argument.'\\n      );\\n    }\\n    const { map, transfer } = annotationStorageSerializable;\\n\\n    const readableStream = this._transport.messageHandler.sendWithStream(\\n      \\\"GetOperatorList\\\",\\n      {\\n        pageIndex: this._pageIndex,\\n        intent: renderingIntent,\\n        cacheKey,\\n        annotationStorage: map,\\n      },\\n      transfer\\n    );\\n    const reader = readableStream.getReader();\\n\\n    const intentState = this._intentStates.get(cacheKey);\\n    intentState.streamReader = reader;\\n\\n    const pump = () => {\\n      reader.read().then(\\n        ({ value, done }) => {\\n          if (done) {\\n            intentState.streamReader = null;\\n            return;\\n          }\\n          if (this._transport.destroyed) {\\n            return; \u002F\u002F Ignore any pending requests if the worker was terminated.\\n          }\\n          this._renderPageChunk(value, intentState);\\n          pump();\\n        },\\n        reason => {\\n          intentState.streamReader = null;\\n\\n          if (this._transport.destroyed) {\\n            return; \u002F\u002F Ignore any pending requests if the worker was terminated.\\n          }\\n          if (intentState.operatorList) {\\n            \u002F\u002F Mark operator list as complete.\\n            intentState.operatorList.lastChunk = true;\\n\\n            for (const internalRenderTask of intentState.renderTasks) {\\n              internalRenderTask.operatorListChanged();\\n            }\\n            this.#tryCleanup(\u002F* delayed = *\u002F true);\\n          }\\n\\n          if (intentState.displayReadyCapability) {\\n            intentState.displayReadyCapability.reject(reason);\\n          } else if (intentState.opListReadCapability) {\\n            intentState.opListReadCapability.reject(reason);\\n          } else {\\n            throw reason;\\n          }\\n        }\\n      );\\n    };\\n    pump();\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _abortOperatorList({ intentState, reason, force = false }) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        reason instanceof Error,\\n        '_abortOperatorList: Expected valid \\\"reason\\\" argument.'\\n      );\\n    }\\n\\n    if (!intentState.streamReader) {\\n      return;\\n    }\\n    \u002F\u002F Ensure that a pending `streamReader` cancel timeout is always aborted.\\n    if (intentState.streamReaderCancelTimeout) {\\n      clearTimeout(intentState.streamReaderCancelTimeout);\\n      intentState.streamReaderCancelTimeout = null;\\n    }\\n\\n    if (!force) {\\n      \u002F\u002F Ensure that an Error occurring in *only* one `InternalRenderTask`, e.g.\\n      \u002F\u002F multiple render() calls on the same canvas, won't break all rendering.\\n      if (intentState.renderTasks.size > 0) {\\n        return;\\n      }\\n      \u002F\u002F Don't immediately abort parsing on the worker-thread when rendering is\\n      \u002F\u002F cancelled, since that will unnecessarily delay re-rendering when (for\\n      \u002F\u002F partially parsed pages) e.g. zooming\u002Frotation occurs in the viewer.\\n      if (reason instanceof RenderingCancelledException) {\\n        let delay = RENDERING_CANCELLED_TIMEOUT;\\n        if (reason.extraDelay > 0 && reason.extraDelay \u003C \u002F* ms = *\u002F 1000) {\\n          \u002F\u002F Above, we prevent the total delay from becoming arbitrarily large.\\n          delay += reason.extraDelay;\\n        }\\n\\n        intentState.streamReaderCancelTimeout = setTimeout(() => {\\n          intentState.streamReaderCancelTimeout = null;\\n          this._abortOperatorList({ intentState, reason, force: true });\\n        }, delay);\\n        return;\\n      }\\n    }\\n    intentState.streamReader\\n      .cancel(new AbortException(reason.message))\\n      .catch(() => {\\n        \u002F\u002F Avoid \\\"Uncaught promise\\\" messages in the console.\\n      });\\n    intentState.streamReader = null;\\n\\n    if (this._transport.destroyed) {\\n      return; \u002F\u002F Ignore any pending requests if the worker was terminated.\\n    }\\n    \u002F\u002F Remove the current `intentState`, since a cancelled `getOperatorList`\\n    \u002F\u002F call on the worker-thread cannot be re-started...\\n    for (const [curCacheKey, curIntentState] of this._intentStates) {\\n      if (curIntentState === intentState) {\\n        this._intentStates.delete(curCacheKey);\\n        break;\\n      }\\n    }\\n    \u002F\u002F ... and force clean-up to ensure that any old state is always removed.\\n    this.cleanup();\\n  }\\n\\n  \u002F**\\n   * @type {StatTimer | null} Returns page stats, if enabled; returns `null`\\n   *   otherwise.\\n   *\u002F\\n  get stats() {\\n    return this._stats;\\n  }\\n}\\n\\nclass LoopbackPort {\\n  #listeners = new Set();\\n\\n  #deferred = Promise.resolve();\\n\\n  postMessage(obj, transfer) {\\n    const event = {\\n      data: structuredClone(obj, transfer ? { transfer } : null),\\n    };\\n\\n    this.#deferred.then(() => {\\n      for (const listener of this.#listeners) {\\n        listener.call(this, event);\\n      }\\n    });\\n  }\\n\\n  addEventListener(name, listener) {\\n    this.#listeners.add(listener);\\n  }\\n\\n  removeEventListener(name, listener) {\\n    this.#listeners.delete(listener);\\n  }\\n\\n  terminate() {\\n    this.#listeners.clear();\\n  }\\n}\\n\\n\u002F**\\n * @typedef {Object} PDFWorkerParameters\\n * @property {string} [name] - The name of the worker.\\n * @property {Worker} [port] - The `workerPort` object.\\n * @property {number} [verbosity] - Controls the logging level;\\n *   the constants from {@link VerbosityLevel} should be used.\\n *\u002F\\n\\nconst PDFWorkerUtil = {\\n  isWorkerDisabled: false,\\n  fakeWorkerId: 0,\\n};\\nif (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n  if (isNodeJS) {\\n    \u002F\u002F Workers aren't supported in Node.js, force-disabling them there.\\n    PDFWorkerUtil.isWorkerDisabled = true;\\n\\n    GlobalWorkerOptions.workerSrc ||= PDFJSDev.test(\\\"LIB\\\")\\n      ? \\\"..\u002Fpdf.worker.js\\\"\\n      : \\\".\u002Fpdf.worker.js\\\";\\n  }\\n\\n  \u002F\u002F Check if URLs have the same origin. For non-HTTP based URLs, returns false.\\n  PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) {\\n    let base;\\n    try {\\n      base = new URL(baseUrl);\\n      if (!base.origin || base.origin === \\\"null\\\") {\\n        return false; \u002F\u002F non-HTTP url\\n      }\\n    } catch {\\n      return false;\\n    }\\n\\n    const other = new URL(otherUrl, base);\\n    return base.origin === other.origin;\\n  };\\n\\n  PDFWorkerUtil.createCDNWrapper = function (url) {\\n    \u002F\u002F We will rely on blob URL's property to specify origin.\\n    \u002F\u002F We want this function to fail in case if createObjectURL or Blob do not\\n    \u002F\u002F exist or fail for some reason -- our Worker creation will fail anyway.\\n    const wrapper = `await import(\\\"${url}\\\");`;\\n    return URL.createObjectURL(\\n      new Blob([wrapper], { type: \\\"text\u002Fjavascript\\\" })\\n    );\\n  };\\n}\\n\\n\u002F**\\n * PDF.js web worker abstraction that controls the instantiation of PDF\\n * documents. Message handlers are used to pass information from the main\\n * thread to the worker thread and vice versa. If the creation of a web\\n * worker is not possible, a \\\"fake\\\" worker will be used instead.\\n *\\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\\n *\u002F\\nclass PDFWorker {\\n  static #workerPorts;\\n\\n  constructor({\\n    name = null,\\n    port = null,\\n    verbosity = getVerbosityLevel(),\\n  } = {}) {\\n    this.name = name;\\n    this.destroyed = false;\\n    this.verbosity = verbosity;\\n\\n    this._readyCapability = Promise.withResolvers();\\n    this._port = null;\\n    this._webWorker = null;\\n    this._messageHandler = null;\\n\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) &&\\n      port\\n    ) {\\n      if (PDFWorker.#workerPorts?.has(port)) {\\n        throw new Error(\\\"Cannot use more than one PDFWorker per port.\\\");\\n      }\\n      (PDFWorker.#workerPorts ||= new WeakMap()).set(port, this);\\n      this._initializeFromPort(port);\\n      return;\\n    }\\n    this._initialize();\\n  }\\n\\n  \u002F**\\n   * Promise for worker initialization completion.\\n   * @type {Promise\u003Cvoid>}\\n   *\u002F\\n  get promise() {\\n    if (\\n      typeof PDFJSDev !== \\\"undefined\\\" &&\\n      PDFJSDev.test(\\\"GENERIC\\\") &&\\n      isNodeJS\\n    ) {\\n      \u002F\u002F Ensure that all Node.js packages\u002Fpolyfills have loaded.\\n      return Promise.all([NodePackages.promise, this._readyCapability.promise]);\\n    }\\n    return this._readyCapability.promise;\\n  }\\n\\n  \u002F**\\n   * The current `workerPort`, when it exists.\\n   * @type {Worker}\\n   *\u002F\\n  get port() {\\n    return this._port;\\n  }\\n\\n  \u002F**\\n   * The current MessageHandler-instance.\\n   * @type {MessageHandler}\\n   *\u002F\\n  get messageHandler() {\\n    return this._messageHandler;\\n  }\\n\\n  _initializeFromPort(port) {\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      throw new Error(\\\"Not implemented: _initializeFromPort\\\");\\n    }\\n    this._port = port;\\n    this._messageHandler = new MessageHandler(\\\"main\\\", \\\"worker\\\", port);\\n    this._messageHandler.on(\\\"ready\\\", function () {\\n      \u002F\u002F Ignoring \\\"ready\\\" event -- MessageHandler should already be initialized\\n      \u002F\u002F and ready to accept messages.\\n    });\\n    this._readyCapability.resolve();\\n    \u002F\u002F Send global setting, e.g. verbosity level.\\n    this._messageHandler.send(\\\"configure\\\", {\\n      verbosity: this.verbosity,\\n    });\\n  }\\n\\n  _initialize() {\\n    \u002F\u002F If worker support isn't disabled explicit and the browser has worker\\n    \u002F\u002F support, create a new web worker and test if it\u002Fthe browser fulfills\\n    \u002F\u002F all requirements to run parts of pdf.js in a web worker.\\n    \u002F\u002F Right now, the requirement is, that an Uint8Array is still an\\n    \u002F\u002F Uint8Array as it arrives on the worker. (Chrome added this with v.15.)\\n    if (\\n      !PDFWorkerUtil.isWorkerDisabled &&\\n      !PDFWorker.#mainThreadWorkerMessageHandler\\n    ) {\\n      let { workerSrc } = PDFWorker;\\n\\n      try {\\n        \u002F\u002F Wraps workerSrc path into blob URL, if the former does not belong\\n        \u002F\u002F to the same origin.\\n        if (\\n          typeof PDFJSDev !== \\\"undefined\\\" &&\\n          PDFJSDev.test(\\\"GENERIC\\\") &&\\n          !PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)\\n        ) {\\n          workerSrc = PDFWorkerUtil.createCDNWrapper(\\n            new URL(workerSrc, window.location).href\\n          );\\n        }\\n\\n        const worker = new Worker(workerSrc, { type: \\\"module\\\" });\\n        const messageHandler = new MessageHandler(\\\"main\\\", \\\"worker\\\", worker);\\n        const terminateEarly = () => {\\n          worker.removeEventListener(\\\"error\\\", onWorkerError);\\n          messageHandler.destroy();\\n          worker.terminate();\\n          if (this.destroyed) {\\n            this._readyCapability.reject(new Error(\\\"Worker was destroyed\\\"));\\n          } else {\\n            \u002F\u002F Fall back to fake worker if the termination is caused by an\\n            \u002F\u002F error (e.g. NetworkError \u002F SecurityError).\\n            this._setupFakeWorker();\\n          }\\n        };\\n\\n        const onWorkerError = () => {\\n          if (!this._webWorker) {\\n            \u002F\u002F Worker failed to initialize due to an error. Clean up and fall\\n            \u002F\u002F back to the fake worker.\\n            terminateEarly();\\n          }\\n        };\\n        worker.addEventListener(\\\"error\\\", onWorkerError);\\n\\n        messageHandler.on(\\\"test\\\", data => {\\n          worker.removeEventListener(\\\"error\\\", onWorkerError);\\n          if (this.destroyed) {\\n            terminateEarly();\\n            return; \u002F\u002F worker was destroyed\\n          }\\n          if (data) {\\n            this._messageHandler = messageHandler;\\n            this._port = worker;\\n            this._webWorker = worker;\\n\\n            this._readyCapability.resolve();\\n            \u002F\u002F Send global setting, e.g. verbosity level.\\n            messageHandler.send(\\\"configure\\\", {\\n              verbosity: this.verbosity,\\n            });\\n          } else {\\n            this._setupFakeWorker();\\n            messageHandler.destroy();\\n            worker.terminate();\\n          }\\n        });\\n\\n        messageHandler.on(\\\"ready\\\", data => {\\n          worker.removeEventListener(\\\"error\\\", onWorkerError);\\n          if (this.destroyed) {\\n            terminateEarly();\\n            return; \u002F\u002F worker was destroyed\\n          }\\n          try {\\n            sendTest();\\n          } catch {\\n            \u002F\u002F We need fallback to a faked worker.\\n            this._setupFakeWorker();\\n          }\\n        });\\n\\n        const sendTest = () => {\\n          const testObj = new Uint8Array();\\n          \u002F\u002F Ensure that we can use `postMessage` transfers.\\n          messageHandler.send(\\\"test\\\", testObj, [testObj.buffer]);\\n        };\\n\\n        \u002F\u002F It might take time for the worker to initialize. We will try to send\\n        \u002F\u002F the \\\"test\\\" message immediately, and once the \\\"ready\\\" message arrives.\\n        \u002F\u002F The worker shall process only the first received \\\"test\\\" message.\\n        sendTest();\\n        return;\\n      } catch {\\n        info(\\\"The worker has been disabled.\\\");\\n      }\\n    }\\n    \u002F\u002F Either workers are disabled, not supported or have thrown an exception.\\n    \u002F\u002F Thus, we fallback to a faked worker.\\n    this._setupFakeWorker();\\n  }\\n\\n  _setupFakeWorker() {\\n    if (!PDFWorkerUtil.isWorkerDisabled) {\\n      warn(\\\"Setting up fake worker.\\\");\\n      PDFWorkerUtil.isWorkerDisabled = true;\\n    }\\n\\n    PDFWorker._setupFakeWorkerGlobal\\n      .then(WorkerMessageHandler => {\\n        if (this.destroyed) {\\n          this._readyCapability.reject(new Error(\\\"Worker was destroyed\\\"));\\n          return;\\n        }\\n        const port = new LoopbackPort();\\n        this._port = port;\\n\\n        \u002F\u002F All fake workers use the same port, making id unique.\\n        const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;\\n\\n        \u002F\u002F If the main thread is our worker, setup the handling for the\\n        \u002F\u002F messages -- the main thread sends to it self.\\n        const workerHandler = new MessageHandler(id + \\\"_worker\\\", id, port);\\n        WorkerMessageHandler.setup(workerHandler, port);\\n\\n        const messageHandler = new MessageHandler(id, id + \\\"_worker\\\", port);\\n        this._messageHandler = messageHandler;\\n        this._readyCapability.resolve();\\n        \u002F\u002F Send global setting, e.g. verbosity level.\\n        messageHandler.send(\\\"configure\\\", {\\n          verbosity: this.verbosity,\\n        });\\n      })\\n      .catch(reason => {\\n        this._readyCapability.reject(\\n          new Error(`Setting up fake worker failed: \\\"${reason.message}\\\".`)\\n        );\\n      });\\n  }\\n\\n  \u002F**\\n   * Destroys the worker instance.\\n   *\u002F\\n  destroy() {\\n    this.destroyed = true;\\n    if (this._webWorker) {\\n      \u002F\u002F We need to terminate only web worker created resource.\\n      this._webWorker.terminate();\\n      this._webWorker = null;\\n    }\\n    PDFWorker.#workerPorts?.delete(this._port);\\n    this._port = null;\\n    if (this._messageHandler) {\\n      this._messageHandler.destroy();\\n      this._messageHandler = null;\\n    }\\n  }\\n\\n  \u002F**\\n   * @param {PDFWorkerParameters} params - The worker initialization parameters.\\n   *\u002F\\n  static fromPort(params) {\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      throw new Error(\\\"Not implemented: fromPort\\\");\\n    }\\n    if (!params?.port) {\\n      throw new Error(\\\"PDFWorker.fromPort - invalid method signature.\\\");\\n    }\\n    const cachedPort = this.#workerPorts?.get(params.port);\\n    if (cachedPort) {\\n      if (cachedPort._pendingDestroy) {\\n        throw new Error(\\n          \\\"PDFWorker.fromPort - the worker is being destroyed.\\\\n\\\" +\\n            \\\"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\\\"\\n        );\\n      }\\n      return cachedPort;\\n    }\\n    return new PDFWorker(params);\\n  }\\n\\n  \u002F**\\n   * The current `workerSrc`, when it exists.\\n   * @type {string}\\n   *\u002F\\n  static get workerSrc() {\\n    if (GlobalWorkerOptions.workerSrc) {\\n      return GlobalWorkerOptions.workerSrc;\\n    }\\n    throw new Error('No \\\"GlobalWorkerOptions.workerSrc\\\" specified.');\\n  }\\n\\n  static get #mainThreadWorkerMessageHandler() {\\n    try {\\n      return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\\n    } catch {\\n      return null;\\n    }\\n  }\\n\\n  \u002F\u002F Loads worker code into the main-thread.\\n  static get _setupFakeWorkerGlobal() {\\n    const loader = async () => {\\n      if (this.#mainThreadWorkerMessageHandler) {\\n        \u002F\u002F The worker was already loaded using e.g. a `\u003Cscript>` tag.\\n        return this.#mainThreadWorkerMessageHandler;\\n      }\\n      const worker =\\n        typeof PDFJSDev === \\\"undefined\\\"\\n          ? await import(\\\"pdfjs\u002Fpdf.worker.js\\\")\\n          : await __non_webpack_import__(this.workerSrc);\\n      return worker.WorkerMessageHandler;\\n    };\\n\\n    return shadow(this, \\\"_setupFakeWorkerGlobal\\\", loader());\\n  }\\n}\\n\\n\u002F**\\n * For internal use only.\\n * @ignore\\n *\u002F\\nclass WorkerTransport {\\n  #methodPromises = new Map();\\n\\n  #pageCache = new Map();\\n\\n  #pagePromises = new Map();\\n\\n  #pageRefCache = new Map();\\n\\n  #passwordCapability = null;\\n\\n  constructor(messageHandler, loadingTask, networkStream, params, factory) {\\n    this.messageHandler = messageHandler;\\n    this.loadingTask = loadingTask;\\n    this.commonObjs = new PDFObjects();\\n    this.fontLoader = new FontLoader({\\n      ownerDocument: params.ownerDocument,\\n      styleElement: params.styleElement,\\n    });\\n    this.loadingParams = params.loadingParams;\\n    this._params = params;\\n\\n    this.canvasFactory = factory.canvasFactory;\\n    this.filterFactory = factory.filterFactory;\\n    this.cMapReaderFactory = factory.cMapReaderFactory;\\n    this.standardFontDataFactory = factory.standardFontDataFactory;\\n\\n    this.destroyed = false;\\n    this.destroyCapability = null;\\n\\n    this._networkStream = networkStream;\\n    this._fullReader = null;\\n    this._lastProgress = null;\\n    this.downloadInfoCapability = Promise.withResolvers();\\n\\n    this.setupMessageHandler();\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      \u002F\u002F For testing purposes.\\n      Object.defineProperty(this, \\\"getNetworkStreamName\\\", {\\n        value: () => networkStream?.constructor?.name || null,\\n      });\\n      Object.defineProperty(this, \\\"getXFADatasets\\\", {\\n        value: () =>\\n          this.messageHandler.sendWithPromise(\\\"GetXFADatasets\\\", null),\\n      });\\n      Object.defineProperty(this, \\\"getXRefPrevValue\\\", {\\n        value: () =>\\n          this.messageHandler.sendWithPromise(\\\"GetXRefPrevValue\\\", null),\\n      });\\n      Object.defineProperty(this, \\\"getStartXRefPos\\\", {\\n        value: () =>\\n          this.messageHandler.sendWithPromise(\\\"GetStartXRefPos\\\", null),\\n      });\\n      Object.defineProperty(this, \\\"getAnnotArray\\\", {\\n        value: pageIndex =>\\n          this.messageHandler.sendWithPromise(\\\"GetAnnotArray\\\", { pageIndex }),\\n      });\\n    }\\n  }\\n\\n  #cacheSimpleMethod(name, data = null) {\\n    const cachedPromise = this.#methodPromises.get(name);\\n    if (cachedPromise) {\\n      return cachedPromise;\\n    }\\n    const promise = this.messageHandler.sendWithPromise(name, data);\\n\\n    this.#methodPromises.set(name, promise);\\n    return promise;\\n  }\\n\\n  get annotationStorage() {\\n    return shadow(this, \\\"annotationStorage\\\", new AnnotationStorage());\\n  }\\n\\n  getRenderingIntent(\\n    intent,\\n    annotationMode = AnnotationMode.ENABLE,\\n    printAnnotationStorage = null,\\n    isOpList = false\\n  ) {\\n    let renderingIntent = RenderingIntentFlag.DISPLAY; \u002F\u002F Default value.\\n    let annotationStorageSerializable = SerializableEmpty;\\n\\n    switch (intent) {\\n      case \\\"any\\\":\\n        renderingIntent = RenderingIntentFlag.ANY;\\n        break;\\n      case \\\"display\\\":\\n        break;\\n      case \\\"print\\\":\\n        renderingIntent = RenderingIntentFlag.PRINT;\\n        break;\\n      default:\\n        warn(`getRenderingIntent - invalid intent: ${intent}`);\\n    }\\n\\n    switch (annotationMode) {\\n      case AnnotationMode.DISABLE:\\n        renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\\n        break;\\n      case AnnotationMode.ENABLE:\\n        break;\\n      case AnnotationMode.ENABLE_FORMS:\\n        renderingIntent += RenderingIntentFlag.ANNOTATIONS_FORMS;\\n        break;\\n      case AnnotationMode.ENABLE_STORAGE:\\n        renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\\n\\n        const annotationStorage =\\n          renderingIntent & RenderingIntentFlag.PRINT &&\\n          printAnnotationStorage instanceof PrintAnnotationStorage\\n            ? printAnnotationStorage\\n            : this.annotationStorage;\\n\\n        annotationStorageSerializable = annotationStorage.serializable;\\n        break;\\n      default:\\n        warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\\n    }\\n\\n    if (isOpList) {\\n      renderingIntent += RenderingIntentFlag.OPLIST;\\n    }\\n\\n    return {\\n      renderingIntent,\\n      cacheKey: `${renderingIntent}_${annotationStorageSerializable.hash}`,\\n      annotationStorageSerializable,\\n    };\\n  }\\n\\n  destroy() {\\n    if (this.destroyCapability) {\\n      return this.destroyCapability.promise;\\n    }\\n\\n    this.destroyed = true;\\n    this.destroyCapability = Promise.withResolvers();\\n\\n    this.#passwordCapability?.reject(\\n      new Error(\\\"Worker was destroyed during onPassword callback\\\")\\n    );\\n\\n    const waitOn = [];\\n    \u002F\u002F We need to wait for all renderings to be completed, e.g.\\n    \u002F\u002F timeout\u002FrAF can take a long time.\\n    for (const page of this.#pageCache.values()) {\\n      waitOn.push(page._destroy());\\n    }\\n    this.#pageCache.clear();\\n    this.#pagePromises.clear();\\n    this.#pageRefCache.clear();\\n    \u002F\u002F Allow `AnnotationStorage`-related clean-up when destroying the document.\\n    if (this.hasOwnProperty(\\\"annotationStorage\\\")) {\\n      this.annotationStorage.resetModified();\\n    }\\n    \u002F\u002F We also need to wait for the worker to finish its long running tasks.\\n    const terminated = this.messageHandler.sendWithPromise(\\\"Terminate\\\", null);\\n    waitOn.push(terminated);\\n\\n    Promise.all(waitOn).then(() => {\\n      this.commonObjs.clear();\\n      this.fontLoader.clear();\\n      this.#methodPromises.clear();\\n      this.filterFactory.destroy();\\n      TextLayer.cleanup();\\n\\n      this._networkStream?.cancelAllRequests(\\n        new AbortException(\\\"Worker was terminated.\\\")\\n      );\\n\\n      if (this.messageHandler) {\\n        this.messageHandler.destroy();\\n        this.messageHandler = null;\\n      }\\n      this.destroyCapability.resolve();\\n    }, this.destroyCapability.reject);\\n    return this.destroyCapability.promise;\\n  }\\n\\n  setupMessageHandler() {\\n    const { messageHandler, loadingTask } = this;\\n\\n    messageHandler.on(\\\"GetReader\\\", (data, sink) => {\\n      assert(\\n        this._networkStream,\\n        \\\"GetReader - no `IPDFStream` instance available.\\\"\\n      );\\n      this._fullReader = this._networkStream.getFullReader();\\n      this._fullReader.onProgress = evt => {\\n        this._lastProgress = {\\n          loaded: evt.loaded,\\n          total: evt.total,\\n        };\\n      };\\n      sink.onPull = () => {\\n        this._fullReader\\n          .read()\\n          .then(function ({ value, done }) {\\n            if (done) {\\n              sink.close();\\n              return;\\n            }\\n            assert(\\n              value instanceof ArrayBuffer,\\n              \\\"GetReader - expected an ArrayBuffer.\\\"\\n            );\\n            \u002F\u002F Enqueue data chunk into sink, and transfer it\\n            \u002F\u002F to other side as `Transferable` object.\\n            sink.enqueue(new Uint8Array(value), 1, [value]);\\n          })\\n          .catch(reason => {\\n            sink.error(reason);\\n          });\\n      };\\n\\n      sink.onCancel = reason => {\\n        this._fullReader.cancel(reason);\\n\\n        sink.ready.catch(readyReason => {\\n          if (this.destroyed) {\\n            return; \u002F\u002F Ignore any pending requests if the worker was terminated.\\n          }\\n          throw readyReason;\\n        });\\n      };\\n    });\\n\\n    messageHandler.on(\\\"ReaderHeadersReady\\\", data => {\\n      const headersCapability = Promise.withResolvers();\\n      const fullReader = this._fullReader;\\n      fullReader.headersReady.then(() => {\\n        \u002F\u002F If stream or range are disabled, it's our only way to report\\n        \u002F\u002F loading progress.\\n        if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {\\n          if (this._lastProgress) {\\n            loadingTask.onProgress?.(this._lastProgress);\\n          }\\n          fullReader.onProgress = evt => {\\n            loadingTask.onProgress?.({\\n              loaded: evt.loaded,\\n              total: evt.total,\\n            });\\n          };\\n        }\\n\\n        headersCapability.resolve({\\n          isStreamingSupported: fullReader.isStreamingSupported,\\n          isRangeSupported: fullReader.isRangeSupported,\\n          contentLength: fullReader.contentLength,\\n        });\\n      }, headersCapability.reject);\\n\\n      return headersCapability.promise;\\n    });\\n\\n    messageHandler.on(\\\"GetRangeReader\\\", (data, sink) => {\\n      assert(\\n        this._networkStream,\\n        \\\"GetRangeReader - no `IPDFStream` instance available.\\\"\\n      );\\n      const rangeReader = this._networkStream.getRangeReader(\\n        data.begin,\\n        data.end\\n      );\\n\\n      \u002F\u002F When streaming is enabled, it's possible that the data requested here\\n      \u002F\u002F has already been fetched via the `_fullRequestReader` implementation.\\n      \u002F\u002F However, given that the PDF data is loaded asynchronously on the\\n      \u002F\u002F main-thread and then sent via `postMessage` to the worker-thread,\\n      \u002F\u002F it may not have been available during parsing (hence the attempt to\\n      \u002F\u002F use range requests here).\\n      \u002F\u002F\\n      \u002F\u002F To avoid wasting time and resources here, we'll thus *not* dispatch\\n      \u002F\u002F range requests if the data was already loaded but has not been sent to\\n      \u002F\u002F the worker-thread yet (which will happen via the `_fullRequestReader`).\\n      if (!rangeReader) {\\n        sink.close();\\n        return;\\n      }\\n\\n      sink.onPull = () => {\\n        rangeReader\\n          .read()\\n          .then(function ({ value, done }) {\\n            if (done) {\\n              sink.close();\\n              return;\\n            }\\n            assert(\\n              value instanceof ArrayBuffer,\\n              \\\"GetRangeReader - expected an ArrayBuffer.\\\"\\n            );\\n            sink.enqueue(new Uint8Array(value), 1, [value]);\\n          })\\n          .catch(reason => {\\n            sink.error(reason);\\n          });\\n      };\\n\\n      sink.onCancel = reason => {\\n        rangeReader.cancel(reason);\\n\\n        sink.ready.catch(readyReason => {\\n          if (this.destroyed) {\\n            return; \u002F\u002F Ignore any pending requests if the worker was terminated.\\n          }\\n          throw readyReason;\\n        });\\n      };\\n    });\\n\\n    messageHandler.on(\\\"GetDoc\\\", ({ pdfInfo }) => {\\n      this._numPages = pdfInfo.numPages;\\n      this._htmlForXfa = pdfInfo.htmlForXfa;\\n      delete pdfInfo.htmlForXfa;\\n      loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\\n    });\\n\\n    messageHandler.on(\\\"DocException\\\", function (ex) {\\n      let reason;\\n      switch (ex.name) {\\n        case \\\"PasswordException\\\":\\n          reason = new PasswordException(ex.message, ex.code);\\n          break;\\n        case \\\"InvalidPDFException\\\":\\n          reason = new InvalidPDFException(ex.message);\\n          break;\\n        case \\\"MissingPDFException\\\":\\n          reason = new MissingPDFException(ex.message);\\n          break;\\n        case \\\"UnexpectedResponseException\\\":\\n          reason = new UnexpectedResponseException(ex.message, ex.status);\\n          break;\\n        case \\\"UnknownErrorException\\\":\\n          reason = new UnknownErrorException(ex.message, ex.details);\\n          break;\\n        default:\\n          unreachable(\\\"DocException - expected a valid Error.\\\");\\n      }\\n      loadingTask._capability.reject(reason);\\n    });\\n\\n    messageHandler.on(\\\"PasswordRequest\\\", exception => {\\n      this.#passwordCapability = Promise.withResolvers();\\n\\n      if (loadingTask.onPassword) {\\n        const updatePassword = password => {\\n          if (password instanceof Error) {\\n            this.#passwordCapability.reject(password);\\n          } else {\\n            this.#passwordCapability.resolve({ password });\\n          }\\n        };\\n        try {\\n          loadingTask.onPassword(updatePassword, exception.code);\\n        } catch (ex) {\\n          this.#passwordCapability.reject(ex);\\n        }\\n      } else {\\n        this.#passwordCapability.reject(\\n          new PasswordException(exception.message, exception.code)\\n        );\\n      }\\n      return this.#passwordCapability.promise;\\n    });\\n\\n    messageHandler.on(\\\"DataLoaded\\\", data => {\\n      \u002F\u002F For consistency: Ensure that progress is always reported when the\\n      \u002F\u002F entire PDF file has been loaded, regardless of how it was fetched.\\n      loadingTask.onProgress?.({\\n        loaded: data.length,\\n        total: data.length,\\n      });\\n\\n      this.downloadInfoCapability.resolve(data);\\n    });\\n\\n    messageHandler.on(\\\"StartRenderPage\\\", data => {\\n      if (this.destroyed) {\\n        return; \u002F\u002F Ignore any pending requests if the worker was terminated.\\n      }\\n\\n      const page = this.#pageCache.get(data.pageIndex);\\n      page._startRenderPage(data.transparency, data.cacheKey);\\n    });\\n\\n    messageHandler.on(\\\"commonobj\\\", ([id, type, exportedData]) => {\\n      if (this.destroyed) {\\n        return null; \u002F\u002F Ignore any pending requests if the worker was terminated.\\n      }\\n\\n      if (this.commonObjs.has(id)) {\\n        return null;\\n      }\\n\\n      switch (type) {\\n        case \\\"Font\\\":\\n          const { disableFontFace, fontExtraProperties, pdfBug } = this._params;\\n\\n          if (\\\"error\\\" in exportedData) {\\n            const exportedError = exportedData.error;\\n            warn(`Error during font loading: ${exportedError}`);\\n            this.commonObjs.resolve(id, exportedError);\\n            break;\\n          }\\n\\n          const inspectFont =\\n            pdfBug && globalThis.FontInspector?.enabled\\n              ? (font, url) => globalThis.FontInspector.fontAdded(font, url)\\n              : null;\\n          const font = new FontFaceObject(exportedData, {\\n            disableFontFace,\\n            inspectFont,\\n          });\\n\\n          this.fontLoader\\n            .bind(font)\\n            .catch(() => messageHandler.sendWithPromise(\\\"FontFallback\\\", { id }))\\n            .finally(() => {\\n              if (!fontExtraProperties && font.data) {\\n                \u002F\u002F Immediately release the `font.data` property once the font\\n                \u002F\u002F has been attached to the DOM, since it's no longer needed,\\n                \u002F\u002F rather than waiting for a `PDFDocumentProxy.cleanup` call.\\n                \u002F\u002F Since `font.data` could be very large, e.g. in some cases\\n                \u002F\u002F multiple megabytes, this will help reduce memory usage.\\n                font.data = null;\\n              }\\n              this.commonObjs.resolve(id, font);\\n            });\\n          break;\\n        case \\\"CopyLocalImage\\\":\\n          const { imageRef } = exportedData;\\n          assert(imageRef, \\\"The imageRef must be defined.\\\");\\n\\n          for (const pageProxy of this.#pageCache.values()) {\\n            for (const [, data] of pageProxy.objs) {\\n              if (data?.ref !== imageRef) {\\n                continue;\\n              }\\n              if (!data.dataLen) {\\n                return null;\\n              }\\n              this.commonObjs.resolve(id, structuredClone(data));\\n              return data.dataLen;\\n            }\\n          }\\n          break;\\n        case \\\"FontPath\\\":\\n        case \\\"Image\\\":\\n        case \\\"Pattern\\\":\\n          this.commonObjs.resolve(id, exportedData);\\n          break;\\n        default:\\n          throw new Error(`Got unknown common object type ${type}`);\\n      }\\n\\n      return null;\\n    });\\n\\n    messageHandler.on(\\\"obj\\\", ([id, pageIndex, type, imageData]) => {\\n      if (this.destroyed) {\\n        \u002F\u002F Ignore any pending requests if the worker was terminated.\\n        return;\\n      }\\n\\n      const pageProxy = this.#pageCache.get(pageIndex);\\n      if (pageProxy.objs.has(id)) {\\n        return;\\n      }\\n      \u002F\u002F Don't store data *after* cleanup has successfully run, see bug 1854145.\\n      if (pageProxy._intentStates.size === 0) {\\n        imageData?.bitmap?.close(); \u002F\u002F Release any `ImageBitmap` data.\\n        return;\\n      }\\n\\n      switch (type) {\\n        case \\\"Image\\\":\\n          pageProxy.objs.resolve(id, imageData);\\n\\n          \u002F\u002F Heuristic that will allow us not to store large data.\\n          if (imageData?.dataLen > MAX_IMAGE_SIZE_TO_CACHE) {\\n            pageProxy._maybeCleanupAfterRender = true;\\n          }\\n          break;\\n        case \\\"Pattern\\\":\\n          pageProxy.objs.resolve(id, imageData);\\n          break;\\n        default:\\n          throw new Error(`Got unknown object type ${type}`);\\n      }\\n    });\\n\\n    messageHandler.on(\\\"DocProgress\\\", data => {\\n      if (this.destroyed) {\\n        return; \u002F\u002F Ignore any pending requests if the worker was terminated.\\n      }\\n      loadingTask.onProgress?.({\\n        loaded: data.loaded,\\n        total: data.total,\\n      });\\n    });\\n\\n    messageHandler.on(\\\"FetchBuiltInCMap\\\", data => {\\n      if (this.destroyed) {\\n        return Promise.reject(new Error(\\\"Worker was destroyed.\\\"));\\n      }\\n      if (!this.cMapReaderFactory) {\\n        return Promise.reject(\\n          new Error(\\n            \\\"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\\\"\\n          )\\n        );\\n      }\\n      return this.cMapReaderFactory.fetch(data);\\n    });\\n\\n    messageHandler.on(\\\"FetchStandardFontData\\\", data => {\\n      if (this.destroyed) {\\n        return Promise.reject(new Error(\\\"Worker was destroyed.\\\"));\\n      }\\n      if (!this.standardFontDataFactory) {\\n        return Promise.reject(\\n          new Error(\\n            \\\"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\\\"\\n          )\\n        );\\n      }\\n      return this.standardFontDataFactory.fetch(data);\\n    });\\n  }\\n\\n  getData() {\\n    return this.messageHandler.sendWithPromise(\\\"GetData\\\", null);\\n  }\\n\\n  saveDocument() {\\n    if (this.annotationStorage.size \u003C= 0) {\\n      warn(\\n        \\\"saveDocument called while `annotationStorage` is empty, \\\" +\\n          \\\"please use the getData-method instead.\\\"\\n      );\\n    }\\n    const { map, transfer } = this.annotationStorage.serializable;\\n\\n    return this.messageHandler\\n      .sendWithPromise(\\n        \\\"SaveDocument\\\",\\n        {\\n          isPureXfa: !!this._htmlForXfa,\\n          numPages: this._numPages,\\n          annotationStorage: map,\\n          filename: this._fullReader?.filename ?? null,\\n        },\\n        transfer\\n      )\\n      .finally(() => {\\n        this.annotationStorage.resetModified();\\n      });\\n  }\\n\\n  getPage(pageNumber) {\\n    if (\\n      !Number.isInteger(pageNumber) ||\\n      pageNumber \u003C= 0 ||\\n      pageNumber > this._numPages\\n    ) {\\n      return Promise.reject(new Error(\\\"Invalid page request.\\\"));\\n    }\\n\\n    const pageIndex = pageNumber - 1,\\n      cachedPromise = this.#pagePromises.get(pageIndex);\\n    if (cachedPromise) {\\n      return cachedPromise;\\n    }\\n    const promise = this.messageHandler\\n      .sendWithPromise(\\\"GetPage\\\", {\\n        pageIndex,\\n      })\\n      .then(pageInfo => {\\n        if (this.destroyed) {\\n          throw new Error(\\\"Transport destroyed\\\");\\n        }\\n        if (pageInfo.refStr) {\\n          this.#pageRefCache.set(pageInfo.refStr, pageNumber);\\n        }\\n\\n        const page = new PDFPageProxy(\\n          pageIndex,\\n          pageInfo,\\n          this,\\n          this._params.pdfBug\\n        );\\n        this.#pageCache.set(pageIndex, page);\\n        return page;\\n      });\\n    this.#pagePromises.set(pageIndex, promise);\\n    return promise;\\n  }\\n\\n  getPageIndex(ref) {\\n    if (!isRefProxy(ref)) {\\n      return Promise.reject(new Error(\\\"Invalid pageIndex request.\\\"));\\n    }\\n    return this.messageHandler.sendWithPromise(\\\"GetPageIndex\\\", {\\n      num: ref.num,\\n      gen: ref.gen,\\n    });\\n  }\\n\\n  getAnnotations(pageIndex, intent) {\\n    return this.messageHandler.sendWithPromise(\\\"GetAnnotations\\\", {\\n      pageIndex,\\n      intent,\\n    });\\n  }\\n\\n  getFieldObjects() {\\n    return this.#cacheSimpleMethod(\\\"GetFieldObjects\\\");\\n  }\\n\\n  hasJSActions() {\\n    return this.#cacheSimpleMethod(\\\"HasJSActions\\\");\\n  }\\n\\n  getCalculationOrderIds() {\\n    return this.messageHandler.sendWithPromise(\\\"GetCalculationOrderIds\\\", null);\\n  }\\n\\n  getDestinations() {\\n    return this.messageHandler.sendWithPromise(\\\"GetDestinations\\\", null);\\n  }\\n\\n  getDestination(id) {\\n    if (typeof id !== \\\"string\\\") {\\n      return Promise.reject(new Error(\\\"Invalid destination request.\\\"));\\n    }\\n    return this.messageHandler.sendWithPromise(\\\"GetDestination\\\", {\\n      id,\\n    });\\n  }\\n\\n  getPageLabels() {\\n    return this.messageHandler.sendWithPromise(\\\"GetPageLabels\\\", null);\\n  }\\n\\n  getPageLayout() {\\n    return this.messageHandler.sendWithPromise(\\\"GetPageLayout\\\", null);\\n  }\\n\\n  getPageMode() {\\n    return this.messageHandler.sendWithPromise(\\\"GetPageMode\\\", null);\\n  }\\n\\n  getViewerPreferences() {\\n    return this.messageHandler.sendWithPromise(\\\"GetViewerPreferences\\\", null);\\n  }\\n\\n  getOpenAction() {\\n    return this.messageHandler.sendWithPromise(\\\"GetOpenAction\\\", null);\\n  }\\n\\n  getAttachments() {\\n    return this.messageHandler.sendWithPromise(\\\"GetAttachments\\\", null);\\n  }\\n\\n  getDocJSActions() {\\n    return this.#cacheSimpleMethod(\\\"GetDocJSActions\\\");\\n  }\\n\\n  getPageJSActions(pageIndex) {\\n    return this.messageHandler.sendWithPromise(\\\"GetPageJSActions\\\", {\\n      pageIndex,\\n    });\\n  }\\n\\n  getStructTree(pageIndex) {\\n    return this.messageHandler.sendWithPromise(\\\"GetStructTree\\\", {\\n      pageIndex,\\n    });\\n  }\\n\\n  getOutline() {\\n    return this.messageHandler.sendWithPromise(\\\"GetOutline\\\", null);\\n  }\\n\\n  getOptionalContentConfig(renderingIntent) {\\n    return this.#cacheSimpleMethod(\\\"GetOptionalContentConfig\\\").then(\\n      data => new OptionalContentConfig(data, renderingIntent)\\n    );\\n  }\\n\\n  getPermissions() {\\n    return this.messageHandler.sendWithPromise(\\\"GetPermissions\\\", null);\\n  }\\n\\n  getMetadata() {\\n    const name = \\\"GetMetadata\\\",\\n      cachedPromise = this.#methodPromises.get(name);\\n    if (cachedPromise) {\\n      return cachedPromise;\\n    }\\n    const promise = this.messageHandler\\n      .sendWithPromise(name, null)\\n      .then(results => ({\\n        info: results[0],\\n        metadata: results[1] ? new Metadata(results[1]) : null,\\n        contentDispositionFilename: this._fullReader?.filename ?? null,\\n        contentLength: this._fullReader?.contentLength ?? null,\\n      }));\\n    this.#methodPromises.set(name, promise);\\n    return promise;\\n  }\\n\\n  getMarkInfo() {\\n    return this.messageHandler.sendWithPromise(\\\"GetMarkInfo\\\", null);\\n  }\\n\\n  async startCleanup(keepLoadedFonts = false) {\\n    if (this.destroyed) {\\n      return; \u002F\u002F No need to manually clean-up when destruction has started.\\n    }\\n    await this.messageHandler.sendWithPromise(\\\"Cleanup\\\", null);\\n\\n    for (const page of this.#pageCache.values()) {\\n      const cleanupSuccessful = page.cleanup();\\n\\n      if (!cleanupSuccessful) {\\n        throw new Error(\\n          `startCleanup: Page ${page.pageNumber} is currently rendering.`\\n        );\\n      }\\n    }\\n    this.commonObjs.clear();\\n    if (!keepLoadedFonts) {\\n      this.fontLoader.clear();\\n    }\\n    this.#methodPromises.clear();\\n    this.filterFactory.destroy(\u002F* keepHCM = *\u002F true);\\n    TextLayer.cleanup();\\n  }\\n\\n  cachedPageNumber(ref) {\\n    if (!isRefProxy(ref)) {\\n      return null;\\n    }\\n    const refStr = ref.gen === 0 ? `${ref.num}R` : `${ref.num}R${ref.gen}`;\\n    return this.#pageRefCache.get(refStr) ?? null;\\n  }\\n}\\n\\nconst INITIAL_DATA = Symbol(\\\"INITIAL_DATA\\\");\\n\\n\u002F**\\n * A PDF document and page is built of many objects. E.g. there are objects for\\n * fonts, images, rendering code, etc. These objects may get processed inside of\\n * a worker. This class implements some basic methods to manage these objects.\\n *\u002F\\nclass PDFObjects {\\n  #objs = Object.create(null);\\n\\n  \u002F**\\n   * Ensures there is an object defined for `objId`.\\n   *\\n   * @param {string} objId\\n   * @returns {Object}\\n   *\u002F\\n  #ensureObj(objId) {\\n    return (this.#objs[objId] ||= {\\n      ...Promise.withResolvers(),\\n      data: INITIAL_DATA,\\n    });\\n  }\\n\\n  \u002F**\\n   * If called *without* callback, this returns the data of `objId` but the\\n   * object needs to be resolved. If it isn't, this method throws.\\n   *\\n   * If called *with* a callback, the callback is called with the data of the\\n   * object once the object is resolved. That means, if you call this method\\n   * and the object is already resolved, the callback gets called right away.\\n   *\\n   * @param {string} objId\\n   * @param {function} [callback]\\n   * @returns {any}\\n   *\u002F\\n  get(objId, callback = null) {\\n    \u002F\u002F If there is a callback, then the get can be async and the object is\\n    \u002F\u002F not required to be resolved right now.\\n    if (callback) {\\n      const obj = this.#ensureObj(objId);\\n      obj.promise.then(() => callback(obj.data));\\n      return null;\\n    }\\n    \u002F\u002F If there isn't a callback, the user expects to get the resolved data\\n    \u002F\u002F directly.\\n    const obj = this.#objs[objId];\\n    \u002F\u002F If there isn't an object yet or the object isn't resolved, then the\\n    \u002F\u002F data isn't ready yet!\\n    if (!obj || obj.data === INITIAL_DATA) {\\n      throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\\n    }\\n    return obj.data;\\n  }\\n\\n  \u002F**\\n   * @param {string} objId\\n   * @returns {boolean}\\n   *\u002F\\n  has(objId) {\\n    const obj = this.#objs[objId];\\n    return !!obj && obj.data !== INITIAL_DATA;\\n  }\\n\\n  \u002F**\\n   * Resolves the object `objId` with optional `data`.\\n   *\\n   * @param {string} objId\\n   * @param {any} [data]\\n   *\u002F\\n  resolve(objId, data = null) {\\n    const obj = this.#ensureObj(objId);\\n    obj.data = data;\\n    obj.resolve();\\n  }\\n\\n  clear() {\\n    for (const objId in this.#objs) {\\n      const { data } = this.#objs[objId];\\n      data?.bitmap?.close(); \u002F\u002F Release any `ImageBitmap` data.\\n    }\\n    this.#objs = Object.create(null);\\n  }\\n\\n  *[Symbol.iterator]() {\\n    for (const objId in this.#objs) {\\n      const { data } = this.#objs[objId];\\n\\n      if (data === INITIAL_DATA) {\\n        continue;\\n      }\\n      yield [objId, data];\\n    }\\n  }\\n}\\n\\n\u002F**\\n * Allows controlling of the rendering tasks.\\n *\u002F\\nclass RenderTask {\\n  #internalRenderTask = null;\\n\\n  constructor(internalRenderTask) {\\n    this.#internalRenderTask = internalRenderTask;\\n\\n    \u002F**\\n     * Callback for incremental rendering -- a function that will be called\\n     * each time the rendering is paused.  To continue rendering call the\\n     * function that is the first argument to the callback.\\n     * @type {function}\\n     *\u002F\\n    this.onContinue = null;\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      \u002F\u002F For testing purposes.\\n      Object.defineProperty(this, \\\"getOperatorList\\\", {\\n        value: () => this.#internalRenderTask.operatorList,\\n      });\\n    }\\n  }\\n\\n  \u002F**\\n   * Promise for rendering task completion.\\n   * @type {Promise\u003Cvoid>}\\n   *\u002F\\n  get promise() {\\n    return this.#internalRenderTask.capability.promise;\\n  }\\n\\n  \u002F**\\n   * Cancels the rendering task. If the task is currently rendering it will\\n   * not be cancelled until graphics pauses with a timeout. The promise that\\n   * this object extends will be rejected when cancelled.\\n   *\\n   * @param {number} [extraDelay]\\n   *\u002F\\n  cancel(extraDelay = 0) {\\n    this.#internalRenderTask.cancel(\u002F* error = *\u002F null, extraDelay);\\n  }\\n\\n  \u002F**\\n   * Whether form fields are rendered separately from the main operatorList.\\n   * @type {boolean}\\n   *\u002F\\n  get separateAnnots() {\\n    const { separateAnnots } = this.#internalRenderTask.operatorList;\\n    if (!separateAnnots) {\\n      return false;\\n    }\\n    const { annotationCanvasMap } = this.#internalRenderTask;\\n    return (\\n      separateAnnots.form ||\\n      (separateAnnots.canvas && annotationCanvasMap?.size > 0)\\n    );\\n  }\\n}\\n\\n\u002F**\\n * For internal use only.\\n * @ignore\\n *\u002F\\nclass InternalRenderTask {\\n  static #canvasInUse = new WeakSet();\\n\\n  constructor({\\n    callback,\\n    params,\\n    objs,\\n    commonObjs,\\n    annotationCanvasMap,\\n    operatorList,\\n    pageIndex,\\n    canvasFactory,\\n    filterFactory,\\n    useRequestAnimationFrame = false,\\n    pdfBug = false,\\n    pageColors = null,\\n  }) {\\n    this.callback = callback;\\n    this.params = params;\\n    this.objs = objs;\\n    this.commonObjs = commonObjs;\\n    this.annotationCanvasMap = annotationCanvasMap;\\n    this.operatorListIdx = null;\\n    this.operatorList = operatorList;\\n    this._pageIndex = pageIndex;\\n    this.canvasFactory = canvasFactory;\\n    this.filterFactory = filterFactory;\\n    this._pdfBug = pdfBug;\\n    this.pageColors = pageColors;\\n\\n    this.running = false;\\n    this.graphicsReadyCallback = null;\\n    this.graphicsReady = false;\\n    this._useRequestAnimationFrame =\\n      useRequestAnimationFrame === true && typeof window !== \\\"undefined\\\";\\n    this.cancelled = false;\\n    this.capability = Promise.withResolvers();\\n    this.task = new RenderTask(this);\\n    \u002F\u002F caching this-bound methods\\n    this._cancelBound = this.cancel.bind(this);\\n    this._continueBound = this._continue.bind(this);\\n    this._scheduleNextBound = this._scheduleNext.bind(this);\\n    this._nextBound = this._next.bind(this);\\n    this._canvas = params.canvasContext.canvas;\\n  }\\n\\n  get completed() {\\n    return this.capability.promise.catch(function () {\\n      \u002F\u002F Ignoring errors, since we only want to know when rendering is\\n      \u002F\u002F no longer pending.\\n    });\\n  }\\n\\n  initializeGraphics({ transparency = false, optionalContentConfig }) {\\n    if (this.cancelled) {\\n      return;\\n    }\\n    if (this._canvas) {\\n      if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\\n        throw new Error(\\n          \\\"Cannot use the same canvas during multiple render() operations. \\\" +\\n            \\\"Use different canvas or ensure previous operations were \\\" +\\n            \\\"cancelled or completed.\\\"\\n        );\\n      }\\n      InternalRenderTask.#canvasInUse.add(this._canvas);\\n    }\\n\\n    if (this._pdfBug && globalThis.StepperManager?.enabled) {\\n      this.stepper = globalThis.StepperManager.create(this._pageIndex);\\n      this.stepper.init(this.operatorList);\\n      this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\\n    }\\n    const { canvasContext, viewport, transform, background } = this.params;\\n\\n    this.gfx = new CanvasGraphics(\\n      canvasContext,\\n      this.commonObjs,\\n      this.objs,\\n      this.canvasFactory,\\n      this.filterFactory,\\n      { optionalContentConfig },\\n      this.annotationCanvasMap,\\n      this.pageColors\\n    );\\n    this.gfx.beginDrawing({\\n      transform,\\n      viewport,\\n      transparency,\\n      background,\\n    });\\n    this.operatorListIdx = 0;\\n    this.graphicsReady = true;\\n    this.graphicsReadyCallback?.();\\n  }\\n\\n  cancel(error = null, extraDelay = 0) {\\n    this.running = false;\\n    this.cancelled = true;\\n    this.gfx?.endDrawing();\\n    InternalRenderTask.#canvasInUse.delete(this._canvas);\\n\\n    this.callback(\\n      error ||\\n        new RenderingCancelledException(\\n          `Rendering cancelled, page ${this._pageIndex + 1}`,\\n          extraDelay\\n        )\\n    );\\n  }\\n\\n  operatorListChanged() {\\n    if (!this.graphicsReady) {\\n      this.graphicsReadyCallback ||= this._continueBound;\\n      return;\\n    }\\n    this.stepper?.updateOperatorList(this.operatorList);\\n\\n    if (this.running) {\\n      return;\\n    }\\n    this._continue();\\n  }\\n\\n  _continue() {\\n    this.running = true;\\n    if (this.cancelled) {\\n      return;\\n    }\\n    if (this.task.onContinue) {\\n      this.task.onContinue(this._scheduleNextBound);\\n    } else {\\n      this._scheduleNext();\\n    }\\n  }\\n\\n  _scheduleNext() {\\n    if (this._useRequestAnimationFrame) {\\n      window.requestAnimationFrame(() => {\\n        this._nextBound().catch(this._cancelBound);\\n      });\\n    } else {\\n      Promise.resolve().then(this._nextBound).catch(this._cancelBound);\\n    }\\n  }\\n\\n  async _next() {\\n    if (this.cancelled) {\\n      return;\\n    }\\n    this.operatorListIdx = this.gfx.executeOperatorList(\\n      this.operatorList,\\n      this.operatorListIdx,\\n      this._continueBound,\\n      this.stepper\\n    );\\n    if (this.operatorListIdx === this.operatorList.argsArray.length) {\\n      this.running = false;\\n      if (this.operatorList.lastChunk) {\\n        this.gfx.endDrawing();\\n        InternalRenderTask.#canvasInUse.delete(this._canvas);\\n\\n        this.callback();\\n      }\\n    }\\n  }\\n}\\n\\n\u002F** @type {string} *\u002F\\nconst version =\\n  typeof PDFJSDev !== \\\"undefined\\\" ? PDFJSDev.eval(\\\"BUNDLE_VERSION\\\") : null;\\n\u002F** @type {string} *\u002F\\nconst build =\\n  typeof PDFJSDev !== \\\"undefined\\\" ? PDFJSDev.eval(\\\"BUNDLE_BUILD\\\") : null;\\n\\nexport {\\n  build,\\n  DefaultCanvasFactory,\\n  DefaultCMapReaderFactory,\\n  DefaultFilterFactory,\\n  DefaultStandardFontDataFactory,\\n  getDocument,\\n  LoopbackPort,\\n  PDFDataRangeTransport,\\n  PDFDocumentLoadingTask,\\n  PDFDocumentProxy,\\n  PDFPageProxy,\\n  PDFWorker,\\n  PDFWorkerUtil,\\n  RenderTask,\\n  version,\\n};\\n\",\"\u002F* Copyright 2020 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F**\\n * PLEASE NOTE: This file is currently imported in both the `..\u002Fdisplay\u002F` and\\n *              `..\u002Fscripting_api\u002F` folders, hence be EXTREMELY careful about\\n *              introducing any dependencies here since that can lead to an\\n *              unexpected\u002Funnecessary size increase of the *built* files.\\n *\u002F\\n\\nfunction makeColorComp(n) {\\n  return Math.floor(Math.max(0, Math.min(1, n)) * 255)\\n    .toString(16)\\n    .padStart(2, \\\"0\\\");\\n}\\n\\nfunction scaleAndClamp(x) {\\n  return Math.max(0, Math.min(255, 255 * x));\\n}\\n\\n\u002F\u002F PDF specifications section 10.3\\nclass ColorConverters {\\n  static CMYK_G([c, y, m, k]) {\\n    return [\\\"G\\\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\\n  }\\n\\n  static G_CMYK([g]) {\\n    return [\\\"CMYK\\\", 0, 0, 0, 1 - g];\\n  }\\n\\n  static G_RGB([g]) {\\n    return [\\\"RGB\\\", g, g, g];\\n  }\\n\\n  static G_rgb([g]) {\\n    g = scaleAndClamp(g);\\n    return [g, g, g];\\n  }\\n\\n  static G_HTML([g]) {\\n    const G = makeColorComp(g);\\n    return `#${G}${G}${G}`;\\n  }\\n\\n  static RGB_G([r, g, b]) {\\n    return [\\\"G\\\", 0.3 * r + 0.59 * g + 0.11 * b];\\n  }\\n\\n  static RGB_rgb(color) {\\n    return color.map(scaleAndClamp);\\n  }\\n\\n  static RGB_HTML(color) {\\n    return `#${color.map(makeColorComp).join(\\\"\\\")}`;\\n  }\\n\\n  static T_HTML() {\\n    return \\\"#00000000\\\";\\n  }\\n\\n  static T_rgb() {\\n    return [null];\\n  }\\n\\n  static CMYK_RGB([c, y, m, k]) {\\n    return [\\n      \\\"RGB\\\",\\n      1 - Math.min(1, c + k),\\n      1 - Math.min(1, m + k),\\n      1 - Math.min(1, y + k),\\n    ];\\n  }\\n\\n  static CMYK_rgb([c, y, m, k]) {\\n    return [\\n      scaleAndClamp(1 - Math.min(1, c + k)),\\n      scaleAndClamp(1 - Math.min(1, m + k)),\\n      scaleAndClamp(1 - Math.min(1, y + k)),\\n    ];\\n  }\\n\\n  static CMYK_HTML(components) {\\n    const rgb = this.CMYK_RGB(components).slice(1);\\n    return this.RGB_HTML(rgb);\\n  }\\n\\n  static RGB_CMYK([r, g, b]) {\\n    const c = 1 - r;\\n    const m = 1 - g;\\n    const y = 1 - b;\\n    const k = Math.min(c, m, y);\\n    return [\\\"CMYK\\\", c, m, y, k];\\n  }\\n}\\n\\nexport { ColorConverters };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fannotation_storage\\\").AnnotationStorage} AnnotationStorage *\u002F\\n\u002F** @typedef {import(\\\".\u002Fdisplay_utils\\\").PageViewport} PageViewport *\u002F\\n\u002F** @typedef {import(\\\"..\u002F..\u002Fweb\u002Finterfaces\\\").IPDFLinkService} IPDFLinkService *\u002F\\n\\nimport { XfaText } from \\\".\u002Fxfa_text.js\\\";\\n\\n\u002F**\\n * @typedef {Object} XfaLayerParameters\\n * @property {PageViewport} viewport\\n * @property {HTMLDivElement} div\\n * @property {Object} xfaHtml\\n * @property {AnnotationStorage} [annotationStorage]\\n * @property {IPDFLinkService} linkService\\n * @property {string} [intent] - (default value is 'display').\\n *\u002F\\n\\nclass XfaLayer {\\n  static setupStorage(html, id, element, storage, intent) {\\n    const storedData = storage.getValue(id, { value: null });\\n    switch (element.name) {\\n      case \\\"textarea\\\":\\n        if (storedData.value !== null) {\\n          html.textContent = storedData.value;\\n        }\\n        if (intent === \\\"print\\\") {\\n          break;\\n        }\\n        html.addEventListener(\\\"input\\\", event => {\\n          storage.setValue(id, { value: event.target.value });\\n        });\\n        break;\\n      case \\\"input\\\":\\n        if (\\n          element.attributes.type === \\\"radio\\\" ||\\n          element.attributes.type === \\\"checkbox\\\"\\n        ) {\\n          if (storedData.value === element.attributes.xfaOn) {\\n            html.setAttribute(\\\"checked\\\", true);\\n          } else if (storedData.value === element.attributes.xfaOff) {\\n            \u002F\u002F The checked attribute may have been set when opening the file,\\n            \u002F\u002F unset through the UI and we're here because of printing.\\n            html.removeAttribute(\\\"checked\\\");\\n          }\\n          if (intent === \\\"print\\\") {\\n            break;\\n          }\\n          html.addEventListener(\\\"change\\\", event => {\\n            storage.setValue(id, {\\n              value: event.target.checked\\n                ? event.target.getAttribute(\\\"xfaOn\\\")\\n                : event.target.getAttribute(\\\"xfaOff\\\"),\\n            });\\n          });\\n        } else {\\n          if (storedData.value !== null) {\\n            html.setAttribute(\\\"value\\\", storedData.value);\\n          }\\n          if (intent === \\\"print\\\") {\\n            break;\\n          }\\n          html.addEventListener(\\\"input\\\", event => {\\n            storage.setValue(id, { value: event.target.value });\\n          });\\n        }\\n        break;\\n      case \\\"select\\\":\\n        if (storedData.value !== null) {\\n          html.setAttribute(\\\"value\\\", storedData.value);\\n          for (const option of element.children) {\\n            if (option.attributes.value === storedData.value) {\\n              option.attributes.selected = true;\\n            } else if (option.attributes.hasOwnProperty(\\\"selected\\\")) {\\n              delete option.attributes.selected;\\n            }\\n          }\\n        }\\n        html.addEventListener(\\\"input\\\", event => {\\n          const options = event.target.options;\\n          const value =\\n            options.selectedIndex === -1\\n              ? \\\"\\\"\\n              : options[options.selectedIndex].value;\\n          storage.setValue(id, { value });\\n        });\\n        break;\\n    }\\n  }\\n\\n  static setAttributes({ html, element, storage = null, intent, linkService }) {\\n    const { attributes } = element;\\n    const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\\n\\n    if (attributes.type === \\\"radio\\\") {\\n      \u002F\u002F Avoid to have a radio group when printing with the same as one\\n      \u002F\u002F already displayed.\\n      attributes.name = `${attributes.name}-${intent}`;\\n    }\\n    for (const [key, value] of Object.entries(attributes)) {\\n      if (value === null || value === undefined) {\\n        continue;\\n      }\\n\\n      switch (key) {\\n        case \\\"class\\\":\\n          if (value.length) {\\n            html.setAttribute(key, value.join(\\\" \\\"));\\n          }\\n          break;\\n        case \\\"dataId\\\":\\n          \u002F\u002F We don't need to add dataId in the html object but it can\\n          \u002F\u002F be useful to know its value when writing printing tests:\\n          \u002F\u002F in this case, don't skip dataId to have its value.\\n          break;\\n        case \\\"id\\\":\\n          html.setAttribute(\\\"data-element-id\\\", value);\\n          break;\\n        case \\\"style\\\":\\n          Object.assign(html.style, value);\\n          break;\\n        case \\\"textContent\\\":\\n          html.textContent = value;\\n          break;\\n        default:\\n          if (!isHTMLAnchorElement || (key !== \\\"href\\\" && key !== \\\"newWindow\\\")) {\\n            html.setAttribute(key, value);\\n          }\\n      }\\n    }\\n\\n    if (isHTMLAnchorElement) {\\n      linkService.addLinkAttributes(\\n        html,\\n        attributes.href,\\n        attributes.newWindow\\n      );\\n    }\\n\\n    \u002F\u002F Set the value after the others to be sure to overwrite any other values.\\n    if (storage && attributes.dataId) {\\n      this.setupStorage(html, attributes.dataId, element, storage);\\n    }\\n  }\\n\\n  \u002F**\\n   * Render the XFA layer.\\n   *\\n   * @param {XfaLayerParameters} parameters\\n   *\u002F\\n  static render(parameters) {\\n    const storage = parameters.annotationStorage;\\n    const linkService = parameters.linkService;\\n    const root = parameters.xfaHtml;\\n    const intent = parameters.intent || \\\"display\\\";\\n    const rootHtml = document.createElement(root.name);\\n    if (root.attributes) {\\n      this.setAttributes({\\n        html: rootHtml,\\n        element: root,\\n        intent,\\n        linkService,\\n      });\\n    }\\n\\n    const isNotForRichText = intent !== \\\"richText\\\";\\n    const rootDiv = parameters.div;\\n    rootDiv.append(rootHtml);\\n\\n    if (parameters.viewport) {\\n      const transform = `matrix(${parameters.viewport.transform.join(\\\",\\\")})`;\\n      rootDiv.style.transform = transform;\\n    }\\n\\n    \u002F\u002F Set defaults.\\n    if (isNotForRichText) {\\n      rootDiv.setAttribute(\\\"class\\\", \\\"xfaLayer xfaFont\\\");\\n    }\\n\\n    \u002F\u002F Text nodes used for the text highlighter.\\n    const textDivs = [];\\n\\n    \u002F\u002F In the rich text context, it's possible to just have a text node without\\n    \u002F\u002F a root element, so we handle this case here (see issue 17215).\\n    if (root.children.length === 0) {\\n      if (root.value) {\\n        const node = document.createTextNode(root.value);\\n        rootHtml.append(node);\\n        if (isNotForRichText && XfaText.shouldBuildText(root.name)) {\\n          textDivs.push(node);\\n        }\\n      }\\n      return { textDivs };\\n    }\\n\\n    const stack = [[root, -1, rootHtml]];\\n\\n    while (stack.length > 0) {\\n      const [parent, i, html] = stack.at(-1);\\n      if (i + 1 === parent.children.length) {\\n        stack.pop();\\n        continue;\\n      }\\n\\n      const child = parent.children[++stack.at(-1)[1]];\\n      if (child === null) {\\n        continue;\\n      }\\n\\n      const { name } = child;\\n      if (name === \\\"#text\\\") {\\n        const node = document.createTextNode(child.value);\\n        textDivs.push(node);\\n        html.append(node);\\n        continue;\\n      }\\n\\n      const childHtml = child?.attributes?.xmlns\\n        ? document.createElementNS(child.attributes.xmlns, name)\\n        : document.createElement(name);\\n\\n      html.append(childHtml);\\n      if (child.attributes) {\\n        this.setAttributes({\\n          html: childHtml,\\n          element: child,\\n          storage,\\n          intent,\\n          linkService,\\n        });\\n      }\\n\\n      if (child.children?.length > 0) {\\n        stack.push([child, -1, childHtml]);\\n      } else if (child.value) {\\n        const node = document.createTextNode(child.value);\\n        if (isNotForRichText && XfaText.shouldBuildText(name)) {\\n          textDivs.push(node);\\n        }\\n        childHtml.append(node);\\n      }\\n    }\\n\\n    \u002F**\\n     * TODO: re-enable that stuff once we've JS implementation.\\n     * See https:\u002F\u002Fbugzilla.mozilla.org\u002Fshow_bug.cgi?id=1719465.\\n     *\\n     * for (const el of rootDiv.querySelectorAll(\\n     * \\\".xfaDisabled input, .xfaDisabled textarea\\\"\\n     * )) {\\n     * el.setAttribute(\\\"disabled\\\", true);\\n     * }\\n     * for (const el of rootDiv.querySelectorAll(\\n     * \\\".xfaReadOnly input, .xfaReadOnly textarea\\\"\\n     * )) {\\n     * el.setAttribute(\\\"readOnly\\\", true);\\n     * }\\n     *\u002F\\n\\n    for (const el of rootDiv.querySelectorAll(\\n      \\\".xfaNonInteractive input, .xfaNonInteractive textarea\\\"\\n    )) {\\n      el.setAttribute(\\\"readOnly\\\", true);\\n    }\\n\\n    return {\\n      textDivs,\\n    };\\n  }\\n\\n  \u002F**\\n   * Update the XFA layer.\\n   *\\n   * @param {XfaLayerParameters} parameters\\n   *\u002F\\n  static update(parameters) {\\n    const transform = `matrix(${parameters.viewport.transform.join(\\\",\\\")})`;\\n    parameters.div.style.transform = transform;\\n    parameters.div.hidden = false;\\n  }\\n}\\n\\nexport { XfaLayer };\\n\",\"\u002F* Copyright 2014 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fapi\\\").PDFPageProxy} PDFPageProxy *\u002F\\n\u002F** @typedef {import(\\\".\u002Fdisplay_utils\\\").PageViewport} PageViewport *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002F..\u002Fweb\u002Ftext_accessibility.js\\\").TextAccessibilityManager} TextAccessibilityManager *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002F..\u002Fweb\u002Finterfaces\\\").IDownloadManager} IDownloadManager *\u002F\\n\u002F** @typedef {import(\\\"..\u002F..\u002Fweb\u002Finterfaces\\\").IPDFLinkService} IPDFLinkService *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Feditor\u002Ftools.js\\\").AnnotationEditorUIManager} AnnotationEditorUIManager *\u002F\\n\\nimport {\\n  AnnotationBorderStyleType,\\n  AnnotationEditorType,\\n  AnnotationPrefix,\\n  AnnotationType,\\n  FeatureTest,\\n  LINE_FACTOR,\\n  shadow,\\n  unreachable,\\n  Util,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  DOMSVGFactory,\\n  PDFDateString,\\n  setLayerDimensions,\\n} from \\\".\u002Fdisplay_utils.js\\\";\\nimport { AnnotationStorage } from \\\".\u002Fannotation_storage.js\\\";\\nimport { ColorConverters } from \\\"..\u002Fshared\u002Fscripting_utils.js\\\";\\nimport { XfaLayer } from \\\".\u002Fxfa_layer.js\\\";\\n\\nconst DEFAULT_TAB_INDEX = 1000;\\nconst DEFAULT_FONT_SIZE = 9;\\nconst GetElementsByNameSet = new WeakSet();\\n\\nfunction getRectDims(rect) {\\n  return {\\n    width: rect[2] - rect[0],\\n    height: rect[3] - rect[1],\\n  };\\n}\\n\\n\u002F**\\n * @typedef {Object} AnnotationElementParameters\\n * @property {Object} data\\n * @property {HTMLDivElement} layer\\n * @property {IPDFLinkService} linkService\\n * @property {IDownloadManager} [downloadManager]\\n * @property {AnnotationStorage} [annotationStorage]\\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\\n *   for annotation icons. Include trailing slash.\\n * @property {boolean} renderForms\\n * @property {Object} svgFactory\\n * @property {boolean} [enableScripting]\\n * @property {boolean} [hasJSActions]\\n * @property {Object} [fieldObjects]\\n *\u002F\\n\\nclass AnnotationElementFactory {\\n  \u002F**\\n   * @param {AnnotationElementParameters} parameters\\n   * @returns {AnnotationElement}\\n   *\u002F\\n  static create(parameters) {\\n    const subtype = parameters.data.annotationType;\\n\\n    switch (subtype) {\\n      case AnnotationType.LINK:\\n        return new LinkAnnotationElement(parameters);\\n\\n      case AnnotationType.TEXT:\\n        return new TextAnnotationElement(parameters);\\n\\n      case AnnotationType.WIDGET:\\n        const fieldType = parameters.data.fieldType;\\n\\n        switch (fieldType) {\\n          case \\\"Tx\\\":\\n            return new TextWidgetAnnotationElement(parameters);\\n          case \\\"Btn\\\":\\n            if (parameters.data.radioButton) {\\n              return new RadioButtonWidgetAnnotationElement(parameters);\\n            } else if (parameters.data.checkBox) {\\n              return new CheckboxWidgetAnnotationElement(parameters);\\n            }\\n            return new PushButtonWidgetAnnotationElement(parameters);\\n          case \\\"Ch\\\":\\n            return new ChoiceWidgetAnnotationElement(parameters);\\n          case \\\"Sig\\\":\\n            return new SignatureWidgetAnnotationElement(parameters);\\n        }\\n        return new WidgetAnnotationElement(parameters);\\n\\n      case AnnotationType.POPUP:\\n        return new PopupAnnotationElement(parameters);\\n\\n      case AnnotationType.FREETEXT:\\n        return new FreeTextAnnotationElement(parameters);\\n\\n      case AnnotationType.LINE:\\n        return new LineAnnotationElement(parameters);\\n\\n      case AnnotationType.SQUARE:\\n        return new SquareAnnotationElement(parameters);\\n\\n      case AnnotationType.CIRCLE:\\n        return new CircleAnnotationElement(parameters);\\n\\n      case AnnotationType.POLYLINE:\\n        return new PolylineAnnotationElement(parameters);\\n\\n      case AnnotationType.CARET:\\n        return new CaretAnnotationElement(parameters);\\n\\n      case AnnotationType.INK:\\n        return new InkAnnotationElement(parameters);\\n\\n      case AnnotationType.POLYGON:\\n        return new PolygonAnnotationElement(parameters);\\n\\n      case AnnotationType.HIGHLIGHT:\\n        return new HighlightAnnotationElement(parameters);\\n\\n      case AnnotationType.UNDERLINE:\\n        return new UnderlineAnnotationElement(parameters);\\n\\n      case AnnotationType.SQUIGGLY:\\n        return new SquigglyAnnotationElement(parameters);\\n\\n      case AnnotationType.STRIKEOUT:\\n        return new StrikeOutAnnotationElement(parameters);\\n\\n      case AnnotationType.STAMP:\\n        return new StampAnnotationElement(parameters);\\n\\n      case AnnotationType.FILEATTACHMENT:\\n        return new FileAttachmentAnnotationElement(parameters);\\n\\n      default:\\n        return new AnnotationElement(parameters);\\n    }\\n  }\\n}\\n\\nclass AnnotationElement {\\n  #updates = null;\\n\\n  #hasBorder = false;\\n\\n  #popupElement = null;\\n\\n  constructor(\\n    parameters,\\n    {\\n      isRenderable = false,\\n      ignoreBorder = false,\\n      createQuadrilaterals = false,\\n    } = {}\\n  ) {\\n    this.isRenderable = isRenderable;\\n    this.data = parameters.data;\\n    this.layer = parameters.layer;\\n    this.linkService = parameters.linkService;\\n    this.downloadManager = parameters.downloadManager;\\n    this.imageResourcesPath = parameters.imageResourcesPath;\\n    this.renderForms = parameters.renderForms;\\n    this.svgFactory = parameters.svgFactory;\\n    this.annotationStorage = parameters.annotationStorage;\\n    this.enableScripting = parameters.enableScripting;\\n    this.hasJSActions = parameters.hasJSActions;\\n    this._fieldObjects = parameters.fieldObjects;\\n    this.parent = parameters.parent;\\n\\n    if (isRenderable) {\\n      this.container = this._createContainer(ignoreBorder);\\n    }\\n    if (createQuadrilaterals) {\\n      this._createQuadrilaterals();\\n    }\\n  }\\n\\n  static _hasPopupData({ titleObj, contentsObj, richText }) {\\n    return !!(titleObj?.str || contentsObj?.str || richText?.str);\\n  }\\n\\n  get hasPopupData() {\\n    return AnnotationElement._hasPopupData(this.data);\\n  }\\n\\n  updateEdited(params) {\\n    if (!this.container) {\\n      return;\\n    }\\n\\n    this.#updates ||= {\\n      rect: this.data.rect.slice(0),\\n    };\\n\\n    const { rect } = params;\\n\\n    if (rect) {\\n      this.#setRectEdited(rect);\\n    }\\n\\n    this.#popupElement?.popup.updateEdited(params);\\n  }\\n\\n  resetEdited() {\\n    if (!this.#updates) {\\n      return;\\n    }\\n    this.#setRectEdited(this.#updates.rect);\\n    this.#popupElement?.popup.resetEdited();\\n    this.#updates = null;\\n  }\\n\\n  #setRectEdited(rect) {\\n    const {\\n      container: { style },\\n      data: { rect: currentRect, rotation },\\n      parent: {\\n        viewport: {\\n          rawDims: { pageWidth, pageHeight, pageX, pageY },\\n        },\\n      },\\n    } = this;\\n    currentRect?.splice(0, 4, ...rect);\\n    const { width, height } = getRectDims(rect);\\n    style.left = `${(100 * (rect[0] - pageX)) \u002F pageWidth}%`;\\n    style.top = `${(100 * (pageHeight - rect[3] + pageY)) \u002F pageHeight}%`;\\n    if (rotation === 0) {\\n      style.width = `${(100 * width) \u002F pageWidth}%`;\\n      style.height = `${(100 * height) \u002F pageHeight}%`;\\n    } else {\\n      this.setRotation(rotation);\\n    }\\n  }\\n\\n  \u002F**\\n   * Create an empty container for the annotation's HTML element.\\n   *\\n   * @private\\n   * @param {boolean} ignoreBorder\\n   * @memberof AnnotationElement\\n   * @returns {HTMLElement} A section element.\\n   *\u002F\\n  _createContainer(ignoreBorder) {\\n    const {\\n      data,\\n      parent: { page, viewport },\\n    } = this;\\n\\n    const container = document.createElement(\\\"section\\\");\\n    container.setAttribute(\\\"data-annotation-id\\\", data.id);\\n    if (!(this instanceof WidgetAnnotationElement)) {\\n      container.tabIndex = DEFAULT_TAB_INDEX;\\n    }\\n    const { style } = container;\\n\\n    \u002F\u002F The accessibility manager will move the annotation in the DOM in\\n    \u002F\u002F order to match the visual ordering.\\n    \u002F\u002F But if an annotation is above an other one, then we must draw it\\n    \u002F\u002F after the other one whatever the order is in the DOM, hence the\\n    \u002F\u002F use of the z-index.\\n    style.zIndex = this.parent.zIndex++;\\n\\n    if (data.popupRef) {\\n      container.setAttribute(\\\"aria-haspopup\\\", \\\"dialog\\\");\\n    }\\n\\n    if (data.alternativeText) {\\n      container.title = data.alternativeText;\\n    }\\n\\n    if (data.noRotate) {\\n      container.classList.add(\\\"norotate\\\");\\n    }\\n\\n    if (!data.rect || this instanceof PopupAnnotationElement) {\\n      const { rotation } = data;\\n      if (!data.hasOwnCanvas && rotation !== 0) {\\n        this.setRotation(rotation, container);\\n      }\\n      return container;\\n    }\\n\\n    const { width, height } = getRectDims(data.rect);\\n\\n    if (!ignoreBorder && data.borderStyle.width > 0) {\\n      style.borderWidth = `${data.borderStyle.width}px`;\\n\\n      const horizontalRadius = data.borderStyle.horizontalCornerRadius;\\n      const verticalRadius = data.borderStyle.verticalCornerRadius;\\n      if (horizontalRadius > 0 || verticalRadius > 0) {\\n        const radius = `calc(${horizontalRadius}px * var(--scale-factor)) \u002F calc(${verticalRadius}px * var(--scale-factor))`;\\n        style.borderRadius = radius;\\n      } else if (this instanceof RadioButtonWidgetAnnotationElement) {\\n        const radius = `calc(${width}px * var(--scale-factor)) \u002F calc(${height}px * var(--scale-factor))`;\\n        style.borderRadius = radius;\\n      }\\n\\n      switch (data.borderStyle.style) {\\n        case AnnotationBorderStyleType.SOLID:\\n          style.borderStyle = \\\"solid\\\";\\n          break;\\n\\n        case AnnotationBorderStyleType.DASHED:\\n          style.borderStyle = \\\"dashed\\\";\\n          break;\\n\\n        case AnnotationBorderStyleType.BEVELED:\\n          warn(\\\"Unimplemented border style: beveled\\\");\\n          break;\\n\\n        case AnnotationBorderStyleType.INSET:\\n          warn(\\\"Unimplemented border style: inset\\\");\\n          break;\\n\\n        case AnnotationBorderStyleType.UNDERLINE:\\n          style.borderBottomStyle = \\\"solid\\\";\\n          break;\\n\\n        default:\\n          break;\\n      }\\n\\n      const borderColor = data.borderColor || null;\\n      if (borderColor) {\\n        this.#hasBorder = true;\\n        style.borderColor = Util.makeHexColor(\\n          borderColor[0] | 0,\\n          borderColor[1] | 0,\\n          borderColor[2] | 0\\n        );\\n      } else {\\n        \u002F\u002F Transparent (invisible) border, so do not draw it at all.\\n        style.borderWidth = 0;\\n      }\\n    }\\n\\n    \u002F\u002F Do *not* modify `data.rect`, since that will corrupt the annotation\\n    \u002F\u002F position on subsequent calls to `_createContainer` (see issue 6804).\\n    const rect = Util.normalizeRect([\\n      data.rect[0],\\n      page.view[3] - data.rect[1] + page.view[1],\\n      data.rect[2],\\n      page.view[3] - data.rect[3] + page.view[1],\\n    ]);\\n    const { pageWidth, pageHeight, pageX, pageY } = viewport.rawDims;\\n\\n    style.left = `${(100 * (rect[0] - pageX)) \u002F pageWidth}%`;\\n    style.top = `${(100 * (rect[1] - pageY)) \u002F pageHeight}%`;\\n\\n    const { rotation } = data;\\n    if (data.hasOwnCanvas || rotation === 0) {\\n      style.width = `${(100 * width) \u002F pageWidth}%`;\\n      style.height = `${(100 * height) \u002F pageHeight}%`;\\n    } else {\\n      this.setRotation(rotation, container);\\n    }\\n\\n    return container;\\n  }\\n\\n  setRotation(angle, container = this.container) {\\n    if (!this.data.rect) {\\n      return;\\n    }\\n    const { pageWidth, pageHeight } = this.parent.viewport.rawDims;\\n    const { width, height } = getRectDims(this.data.rect);\\n\\n    let elementWidth, elementHeight;\\n    if (angle % 180 === 0) {\\n      elementWidth = (100 * width) \u002F pageWidth;\\n      elementHeight = (100 * height) \u002F pageHeight;\\n    } else {\\n      elementWidth = (100 * height) \u002F pageWidth;\\n      elementHeight = (100 * width) \u002F pageHeight;\\n    }\\n\\n    container.style.width = `${elementWidth}%`;\\n    container.style.height = `${elementHeight}%`;\\n\\n    container.setAttribute(\\\"data-main-rotation\\\", (360 - angle) % 360);\\n  }\\n\\n  get _commonActions() {\\n    const setColor = (jsName, styleName, event) => {\\n      const color = event.detail[jsName];\\n      const colorType = color[0];\\n      const colorArray = color.slice(1);\\n      event.target.style[styleName] =\\n        ColorConverters[`${colorType}_HTML`](colorArray);\\n      this.annotationStorage.setValue(this.data.id, {\\n        [styleName]: ColorConverters[`${colorType}_rgb`](colorArray),\\n      });\\n    };\\n\\n    return shadow(this, \\\"_commonActions\\\", {\\n      display: event => {\\n        const { display } = event.detail;\\n        \u002F\u002F See scripting\u002Fconstants.js for the values of `Display`.\\n        \u002F\u002F 0 = visible, 1 = hidden, 2 = noPrint and 3 = noView.\\n        const hidden = display % 2 === 1;\\n        this.container.style.visibility = hidden ? \\\"hidden\\\" : \\\"visible\\\";\\n        this.annotationStorage.setValue(this.data.id, {\\n          noView: hidden,\\n          noPrint: display === 1 || display === 2,\\n        });\\n      },\\n      print: event => {\\n        this.annotationStorage.setValue(this.data.id, {\\n          noPrint: !event.detail.print,\\n        });\\n      },\\n      hidden: event => {\\n        const { hidden } = event.detail;\\n        this.container.style.visibility = hidden ? \\\"hidden\\\" : \\\"visible\\\";\\n        this.annotationStorage.setValue(this.data.id, {\\n          noPrint: hidden,\\n          noView: hidden,\\n        });\\n      },\\n      focus: event => {\\n        setTimeout(() => event.target.focus({ preventScroll: false }), 0);\\n      },\\n      userName: event => {\\n        \u002F\u002F tooltip\\n        event.target.title = event.detail.userName;\\n      },\\n      readonly: event => {\\n        event.target.disabled = event.detail.readonly;\\n      },\\n      required: event => {\\n        this._setRequired(event.target, event.detail.required);\\n      },\\n      bgColor: event => {\\n        setColor(\\\"bgColor\\\", \\\"backgroundColor\\\", event);\\n      },\\n      fillColor: event => {\\n        setColor(\\\"fillColor\\\", \\\"backgroundColor\\\", event);\\n      },\\n      fgColor: event => {\\n        setColor(\\\"fgColor\\\", \\\"color\\\", event);\\n      },\\n      textColor: event => {\\n        setColor(\\\"textColor\\\", \\\"color\\\", event);\\n      },\\n      borderColor: event => {\\n        setColor(\\\"borderColor\\\", \\\"borderColor\\\", event);\\n      },\\n      strokeColor: event => {\\n        setColor(\\\"strokeColor\\\", \\\"borderColor\\\", event);\\n      },\\n      rotation: event => {\\n        const angle = event.detail.rotation;\\n        this.setRotation(angle);\\n        this.annotationStorage.setValue(this.data.id, {\\n          rotation: angle,\\n        });\\n      },\\n    });\\n  }\\n\\n  _dispatchEventFromSandbox(actions, jsEvent) {\\n    const commonActions = this._commonActions;\\n    for (const name of Object.keys(jsEvent.detail)) {\\n      const action = actions[name] || commonActions[name];\\n      action?.(jsEvent);\\n    }\\n  }\\n\\n  _setDefaultPropertiesFromJS(element) {\\n    if (!this.enableScripting) {\\n      return;\\n    }\\n\\n    \u002F\u002F Some properties may have been updated thanks to JS.\\n    const storedData = this.annotationStorage.getRawValue(this.data.id);\\n    if (!storedData) {\\n      return;\\n    }\\n\\n    const commonActions = this._commonActions;\\n    for (const [actionName, detail] of Object.entries(storedData)) {\\n      const action = commonActions[actionName];\\n      if (action) {\\n        const eventProxy = {\\n          detail: {\\n            [actionName]: detail,\\n          },\\n          target: element,\\n        };\\n        action(eventProxy);\\n        \u002F\u002F The action has been consumed: no need to keep it.\\n        delete storedData[actionName];\\n      }\\n    }\\n  }\\n\\n  \u002F**\\n   * Create quadrilaterals from the annotation's quadpoints.\\n   *\\n   * @private\\n   * @memberof AnnotationElement\\n   *\u002F\\n  _createQuadrilaterals() {\\n    if (!this.container) {\\n      return;\\n    }\\n    const { quadPoints } = this.data;\\n    if (!quadPoints) {\\n      return;\\n    }\\n\\n    const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect;\\n\\n    if (quadPoints.length === 1) {\\n      const [, { x: trX, y: trY }, { x: blX, y: blY }] = quadPoints[0];\\n      if (\\n        rectTrX === trX &&\\n        rectTrY === trY &&\\n        rectBlX === blX &&\\n        rectBlY === blY\\n      ) {\\n        \u002F\u002F The quadpoints cover the whole annotation rectangle, so no need to\\n        \u002F\u002F create a quadrilateral.\\n        return;\\n      }\\n    }\\n\\n    const { style } = this.container;\\n    let svgBuffer;\\n    if (this.#hasBorder) {\\n      const { borderColor, borderWidth } = style;\\n      style.borderWidth = 0;\\n      svgBuffer = [\\n        \\\"url('data:image\u002Fsvg+xml;utf8,\\\",\\n        `\u003Csvg xmlns=\\\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\\\"`,\\n        ` preserveAspectRatio=\\\"none\\\" viewBox=\\\"0 0 1 1\\\">`,\\n        `\u003Cg fill=\\\"transparent\\\" stroke=\\\"${borderColor}\\\" stroke-width=\\\"${borderWidth}\\\">`,\\n      ];\\n      this.container.classList.add(\\\"hasBorder\\\");\\n    }\\n\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING\\\")) {\\n      this.container.classList.add(\\\"hasClipPath\\\");\\n    }\\n\\n    const width = rectTrX - rectBlX;\\n    const height = rectTrY - rectBlY;\\n\\n    const { svgFactory } = this;\\n    const svg = svgFactory.createElement(\\\"svg\\\");\\n    svg.classList.add(\\\"quadrilateralsContainer\\\");\\n    svg.setAttribute(\\\"width\\\", 0);\\n    svg.setAttribute(\\\"height\\\", 0);\\n    const defs = svgFactory.createElement(\\\"defs\\\");\\n    svg.append(defs);\\n    const clipPath = svgFactory.createElement(\\\"clipPath\\\");\\n    const id = `clippath_${this.data.id}`;\\n    clipPath.setAttribute(\\\"id\\\", id);\\n    clipPath.setAttribute(\\\"clipPathUnits\\\", \\\"objectBoundingBox\\\");\\n    defs.append(clipPath);\\n\\n    for (const [, { x: trX, y: trY }, { x: blX, y: blY }] of quadPoints) {\\n      const rect = svgFactory.createElement(\\\"rect\\\");\\n      const x = (blX - rectBlX) \u002F width;\\n      const y = (rectTrY - trY) \u002F height;\\n      const rectWidth = (trX - blX) \u002F width;\\n      const rectHeight = (trY - blY) \u002F height;\\n      rect.setAttribute(\\\"x\\\", x);\\n      rect.setAttribute(\\\"y\\\", y);\\n      rect.setAttribute(\\\"width\\\", rectWidth);\\n      rect.setAttribute(\\\"height\\\", rectHeight);\\n      clipPath.append(rect);\\n      svgBuffer?.push(\\n        `\u003Crect vector-effect=\\\"non-scaling-stroke\\\" x=\\\"${x}\\\" y=\\\"${y}\\\" width=\\\"${rectWidth}\\\" height=\\\"${rectHeight}\\\"\u002F>`\\n      );\\n    }\\n\\n    if (this.#hasBorder) {\\n      svgBuffer.push(`\u003C\u002Fg>\u003C\u002Fsvg>')`);\\n      style.backgroundImage = svgBuffer.join(\\\"\\\");\\n    }\\n\\n    this.container.append(svg);\\n    this.container.style.clipPath = `url(#${id})`;\\n  }\\n\\n  \u002F**\\n   * Create a popup for the annotation's HTML element. This is used for\\n   * annotations that do not have a Popup entry in the dictionary, but\\n   * are of a type that works with popups (such as Highlight annotations).\\n   *\\n   * @private\\n   * @memberof AnnotationElement\\n   *\u002F\\n  _createPopup() {\\n    const { container, data } = this;\\n    container.setAttribute(\\\"aria-haspopup\\\", \\\"dialog\\\");\\n\\n    const popup = (this.#popupElement = new PopupAnnotationElement({\\n      data: {\\n        color: data.color,\\n        titleObj: data.titleObj,\\n        modificationDate: data.modificationDate,\\n        contentsObj: data.contentsObj,\\n        richText: data.richText,\\n        parentRect: data.rect,\\n        borderStyle: 0,\\n        id: `popup_${data.id}`,\\n        rotation: data.rotation,\\n      },\\n      parent: this.parent,\\n      elements: [this],\\n    }));\\n    this.parent.div.append(popup.render());\\n  }\\n\\n  \u002F**\\n   * Render the annotation's HTML element(s).\\n   *\\n   * @public\\n   * @memberof AnnotationElement\\n   *\u002F\\n  render() {\\n    unreachable(\\\"Abstract method `AnnotationElement.render` called\\\");\\n  }\\n\\n  \u002F**\\n   * @private\\n   * @returns {Array}\\n   *\u002F\\n  _getElementsByName(name, skipId = null) {\\n    const fields = [];\\n\\n    if (this._fieldObjects) {\\n      const fieldObj = this._fieldObjects[name];\\n      if (fieldObj) {\\n        for (const { page, id, exportValues } of fieldObj) {\\n          if (page === -1) {\\n            continue;\\n          }\\n          if (id === skipId) {\\n            continue;\\n          }\\n          const exportValue =\\n            typeof exportValues === \\\"string\\\" ? exportValues : null;\\n\\n          const domElement = document.querySelector(\\n            `[data-element-id=\\\"${id}\\\"]`\\n          );\\n          if (domElement && !GetElementsByNameSet.has(domElement)) {\\n            warn(`_getElementsByName - element not allowed: ${id}`);\\n            continue;\\n          }\\n          fields.push({ id, exportValue, domElement });\\n        }\\n      }\\n      return fields;\\n    }\\n    \u002F\u002F Fallback to a regular DOM lookup, to ensure that the standalone\\n    \u002F\u002F viewer components won't break.\\n    for (const domElement of document.getElementsByName(name)) {\\n      const { exportValue } = domElement;\\n      const id = domElement.getAttribute(\\\"data-element-id\\\");\\n      if (id === skipId) {\\n        continue;\\n      }\\n      if (!GetElementsByNameSet.has(domElement)) {\\n        continue;\\n      }\\n      fields.push({ id, exportValue, domElement });\\n    }\\n    return fields;\\n  }\\n\\n  show() {\\n    if (this.container) {\\n      this.container.hidden = false;\\n    }\\n    this.popup?.maybeShow();\\n  }\\n\\n  hide() {\\n    if (this.container) {\\n      this.container.hidden = true;\\n    }\\n    this.popup?.forceHide();\\n  }\\n\\n  \u002F**\\n   * Get the HTML element(s) which can trigger a popup when clicked or hovered.\\n   *\\n   * @public\\n   * @memberof AnnotationElement\\n   * @returns {Array\u003CHTMLElement>|HTMLElement} An array of elements or an\\n   *          element.\\n   *\u002F\\n  getElementsToTriggerPopup() {\\n    return this.container;\\n  }\\n\\n  addHighlightArea() {\\n    const triggers = this.getElementsToTriggerPopup();\\n    if (Array.isArray(triggers)) {\\n      for (const element of triggers) {\\n        element.classList.add(\\\"highlightArea\\\");\\n      }\\n    } else {\\n      triggers.classList.add(\\\"highlightArea\\\");\\n    }\\n  }\\n\\n  get _isEditable() {\\n    return false;\\n  }\\n\\n  _editOnDoubleClick() {\\n    if (!this._isEditable) {\\n      return;\\n    }\\n    const {\\n      annotationEditorType: mode,\\n      data: { id: editId },\\n    } = this;\\n    this.container.addEventListener(\\\"dblclick\\\", () => {\\n      this.linkService.eventBus?.dispatch(\\\"switchannotationeditormode\\\", {\\n        source: this,\\n        mode,\\n        editId,\\n      });\\n    });\\n  }\\n}\\n\\nclass LinkAnnotationElement extends AnnotationElement {\\n  constructor(parameters, options = null) {\\n    super(parameters, {\\n      isRenderable: true,\\n      ignoreBorder: !!options?.ignoreBorder,\\n      createQuadrilaterals: true,\\n    });\\n    this.isTooltipOnly = parameters.data.isTooltipOnly;\\n  }\\n\\n  render() {\\n    const { data, linkService } = this;\\n    const link = document.createElement(\\\"a\\\");\\n    link.setAttribute(\\\"data-element-id\\\", data.id);\\n    let isBound = false;\\n\\n    if (data.url) {\\n      linkService.addLinkAttributes(link, data.url, data.newWindow);\\n      isBound = true;\\n    } else if (data.action) {\\n      this._bindNamedAction(link, data.action);\\n      isBound = true;\\n    } else if (data.attachment) {\\n      this.#bindAttachment(link, data.attachment, data.attachmentDest);\\n      isBound = true;\\n    } else if (data.setOCGState) {\\n      this.#bindSetOCGState(link, data.setOCGState);\\n      isBound = true;\\n    } else if (data.dest) {\\n      this._bindLink(link, data.dest);\\n      isBound = true;\\n    } else {\\n      if (\\n        data.actions &&\\n        (data.actions.Action ||\\n          data.actions[\\\"Mouse Up\\\"] ||\\n          data.actions[\\\"Mouse Down\\\"]) &&\\n        this.enableScripting &&\\n        this.hasJSActions\\n      ) {\\n        this._bindJSAction(link, data);\\n        isBound = true;\\n      }\\n\\n      if (data.resetForm) {\\n        this._bindResetFormAction(link, data.resetForm);\\n        isBound = true;\\n      } else if (this.isTooltipOnly && !isBound) {\\n        this._bindLink(link, \\\"\\\");\\n        isBound = true;\\n      }\\n    }\\n\\n    this.container.classList.add(\\\"linkAnnotation\\\");\\n    if (isBound) {\\n      this.container.append(link);\\n    }\\n\\n    return this.container;\\n  }\\n\\n  #setInternalLink() {\\n    this.container.setAttribute(\\\"data-internal-link\\\", \\\"\\\");\\n  }\\n\\n  \u002F**\\n   * Bind internal links to the link element.\\n   *\\n   * @private\\n   * @param {Object} link\\n   * @param {Object} destination\\n   * @memberof LinkAnnotationElement\\n   *\u002F\\n  _bindLink(link, destination) {\\n    link.href = this.linkService.getDestinationHash(destination);\\n    link.onclick = () => {\\n      if (destination) {\\n        this.linkService.goToDestination(destination);\\n      }\\n      return false;\\n    };\\n    if (destination || destination === \u002F* isTooltipOnly = *\u002F \\\"\\\") {\\n      this.#setInternalLink();\\n    }\\n  }\\n\\n  \u002F**\\n   * Bind named actions to the link element.\\n   *\\n   * @private\\n   * @param {Object} link\\n   * @param {Object} action\\n   * @memberof LinkAnnotationElement\\n   *\u002F\\n  _bindNamedAction(link, action) {\\n    link.href = this.linkService.getAnchorUrl(\\\"\\\");\\n    link.onclick = () => {\\n      this.linkService.executeNamedAction(action);\\n      return false;\\n    };\\n    this.#setInternalLink();\\n  }\\n\\n  \u002F**\\n   * Bind attachments to the link element.\\n   * @param {Object} link\\n   * @param {Object} attachment\\n   * @param {str} [dest]\\n   *\u002F\\n  #bindAttachment(link, attachment, dest = null) {\\n    link.href = this.linkService.getAnchorUrl(\\\"\\\");\\n    if (attachment.description) {\\n      link.title = attachment.description;\\n    }\\n    link.onclick = () => {\\n      this.downloadManager?.openOrDownloadData(\\n        attachment.content,\\n        attachment.filename,\\n        dest\\n      );\\n      return false;\\n    };\\n    this.#setInternalLink();\\n  }\\n\\n  \u002F**\\n   * Bind SetOCGState actions to the link element.\\n   * @param {Object} link\\n   * @param {Object} action\\n   *\u002F\\n  #bindSetOCGState(link, action) {\\n    link.href = this.linkService.getAnchorUrl(\\\"\\\");\\n    link.onclick = () => {\\n      this.linkService.executeSetOCGState(action);\\n      return false;\\n    };\\n    this.#setInternalLink();\\n  }\\n\\n  \u002F**\\n   * Bind JS actions to the link element.\\n   *\\n   * @private\\n   * @param {Object} link\\n   * @param {Object} data\\n   * @memberof LinkAnnotationElement\\n   *\u002F\\n  _bindJSAction(link, data) {\\n    link.href = this.linkService.getAnchorUrl(\\\"\\\");\\n    const map = new Map([\\n      [\\\"Action\\\", \\\"onclick\\\"],\\n      [\\\"Mouse Up\\\", \\\"onmouseup\\\"],\\n      [\\\"Mouse Down\\\", \\\"onmousedown\\\"],\\n    ]);\\n    for (const name of Object.keys(data.actions)) {\\n      const jsName = map.get(name);\\n      if (!jsName) {\\n        continue;\\n      }\\n      link[jsName] = () => {\\n        this.linkService.eventBus?.dispatch(\\\"dispatcheventinsandbox\\\", {\\n          source: this,\\n          detail: {\\n            id: data.id,\\n            name,\\n          },\\n        });\\n        return false;\\n      };\\n    }\\n\\n    if (!link.onclick) {\\n      link.onclick = () => false;\\n    }\\n    this.#setInternalLink();\\n  }\\n\\n  _bindResetFormAction(link, resetForm) {\\n    const otherClickAction = link.onclick;\\n    if (!otherClickAction) {\\n      link.href = this.linkService.getAnchorUrl(\\\"\\\");\\n    }\\n    this.#setInternalLink();\\n\\n    if (!this._fieldObjects) {\\n      warn(\\n        `_bindResetFormAction - \\\"resetForm\\\" action not supported, ` +\\n          \\\"ensure that the `fieldObjects` parameter is provided.\\\"\\n      );\\n      if (!otherClickAction) {\\n        link.onclick = () => false;\\n      }\\n      return;\\n    }\\n\\n    link.onclick = () => {\\n      otherClickAction?.();\\n\\n      const {\\n        fields: resetFormFields,\\n        refs: resetFormRefs,\\n        include,\\n      } = resetForm;\\n\\n      const allFields = [];\\n      if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\\n        const fieldIds = new Set(resetFormRefs);\\n        for (const fieldName of resetFormFields) {\\n          const fields = this._fieldObjects[fieldName] || [];\\n          for (const { id } of fields) {\\n            fieldIds.add(id);\\n          }\\n        }\\n        for (const fields of Object.values(this._fieldObjects)) {\\n          for (const field of fields) {\\n            if (fieldIds.has(field.id) === include) {\\n              allFields.push(field);\\n            }\\n          }\\n        }\\n      } else {\\n        for (const fields of Object.values(this._fieldObjects)) {\\n          allFields.push(...fields);\\n        }\\n      }\\n\\n      const storage = this.annotationStorage;\\n      const allIds = [];\\n      for (const field of allFields) {\\n        const { id } = field;\\n        allIds.push(id);\\n        switch (field.type) {\\n          case \\\"text\\\": {\\n            const value = field.defaultValue || \\\"\\\";\\n            storage.setValue(id, { value });\\n            break;\\n          }\\n          case \\\"checkbox\\\":\\n          case \\\"radiobutton\\\": {\\n            const value = field.defaultValue === field.exportValues;\\n            storage.setValue(id, { value });\\n            break;\\n          }\\n          case \\\"combobox\\\":\\n          case \\\"listbox\\\": {\\n            const value = field.defaultValue || \\\"\\\";\\n            storage.setValue(id, { value });\\n            break;\\n          }\\n          default:\\n            continue;\\n        }\\n\\n        const domElement = document.querySelector(`[data-element-id=\\\"${id}\\\"]`);\\n        if (!domElement) {\\n          continue;\\n        } else if (!GetElementsByNameSet.has(domElement)) {\\n          warn(`_bindResetFormAction - element not allowed: ${id}`);\\n          continue;\\n        }\\n        domElement.dispatchEvent(new Event(\\\"resetform\\\"));\\n      }\\n\\n      if (this.enableScripting) {\\n        \u002F\u002F Update the values in the sandbox.\\n        this.linkService.eventBus?.dispatch(\\\"dispatcheventinsandbox\\\", {\\n          source: this,\\n          detail: {\\n            id: \\\"app\\\",\\n            ids: allIds,\\n            name: \\\"ResetForm\\\",\\n          },\\n        });\\n      }\\n\\n      return false;\\n    };\\n  }\\n}\\n\\nclass TextAnnotationElement extends AnnotationElement {\\n  constructor(parameters) {\\n    super(parameters, { isRenderable: true });\\n  }\\n\\n  render() {\\n    this.container.classList.add(\\\"textAnnotation\\\");\\n\\n    const image = document.createElement(\\\"img\\\");\\n    image.src =\\n      this.imageResourcesPath +\\n      \\\"annotation-\\\" +\\n      this.data.name.toLowerCase() +\\n      \\\".svg\\\";\\n    image.setAttribute(\\\"data-l10n-id\\\", \\\"pdfjs-text-annotation-type\\\");\\n    image.setAttribute(\\n      \\\"data-l10n-args\\\",\\n      JSON.stringify({ type: this.data.name })\\n    );\\n\\n    if (!this.data.popupRef && this.hasPopupData) {\\n      this._createPopup();\\n    }\\n\\n    this.container.append(image);\\n    return this.container;\\n  }\\n}\\n\\nclass WidgetAnnotationElement extends AnnotationElement {\\n  render() {\\n    \u002F\u002F Show only the container for unsupported field types.\\n    return this.container;\\n  }\\n\\n  showElementAndHideCanvas(element) {\\n    if (this.data.hasOwnCanvas) {\\n      if (element.previousSibling?.nodeName === \\\"CANVAS\\\") {\\n        element.previousSibling.hidden = true;\\n      }\\n      element.hidden = false;\\n    }\\n  }\\n\\n  _getKeyModifier(event) {\\n    return FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\\n  }\\n\\n  _setEventListener(element, elementData, baseName, eventName, valueGetter) {\\n    if (baseName.includes(\\\"mouse\\\")) {\\n      \u002F\u002F Mouse events\\n      element.addEventListener(baseName, event => {\\n        this.linkService.eventBus?.dispatch(\\\"dispatcheventinsandbox\\\", {\\n          source: this,\\n          detail: {\\n            id: this.data.id,\\n            name: eventName,\\n            value: valueGetter(event),\\n            shift: event.shiftKey,\\n            modifier: this._getKeyModifier(event),\\n          },\\n        });\\n      });\\n    } else {\\n      \u002F\u002F Non-mouse events\\n      element.addEventListener(baseName, event => {\\n        if (baseName === \\\"blur\\\") {\\n          if (!elementData.focused || !event.relatedTarget) {\\n            return;\\n          }\\n          elementData.focused = false;\\n        } else if (baseName === \\\"focus\\\") {\\n          if (elementData.focused) {\\n            return;\\n          }\\n          elementData.focused = true;\\n        }\\n\\n        if (!valueGetter) {\\n          return;\\n        }\\n\\n        this.linkService.eventBus?.dispatch(\\\"dispatcheventinsandbox\\\", {\\n          source: this,\\n          detail: {\\n            id: this.data.id,\\n            name: eventName,\\n            value: valueGetter(event),\\n          },\\n        });\\n      });\\n    }\\n  }\\n\\n  _setEventListeners(element, elementData, names, getter) {\\n    for (const [baseName, eventName] of names) {\\n      if (eventName === \\\"Action\\\" || this.data.actions?.[eventName]) {\\n        if (eventName === \\\"Focus\\\" || eventName === \\\"Blur\\\") {\\n          elementData ||= { focused: false };\\n        }\\n        this._setEventListener(\\n          element,\\n          elementData,\\n          baseName,\\n          eventName,\\n          getter\\n        );\\n        if (eventName === \\\"Focus\\\" && !this.data.actions?.Blur) {\\n          \u002F\u002F Ensure that elementData will have the correct value.\\n          this._setEventListener(element, elementData, \\\"blur\\\", \\\"Blur\\\", null);\\n        } else if (eventName === \\\"Blur\\\" && !this.data.actions?.Focus) {\\n          this._setEventListener(element, elementData, \\\"focus\\\", \\\"Focus\\\", null);\\n        }\\n      }\\n    }\\n  }\\n\\n  _setBackgroundColor(element) {\\n    const color = this.data.backgroundColor || null;\\n    element.style.backgroundColor =\\n      color === null\\n        ? \\\"transparent\\\"\\n        : Util.makeHexColor(color[0], color[1], color[2]);\\n  }\\n\\n  \u002F**\\n   * Apply text styles to the text in the element.\\n   *\\n   * @private\\n   * @param {HTMLDivElement} element\\n   * @memberof TextWidgetAnnotationElement\\n   *\u002F\\n  _setTextStyle(element) {\\n    const TEXT_ALIGNMENT = [\\\"left\\\", \\\"center\\\", \\\"right\\\"];\\n    const { fontColor } = this.data.defaultAppearanceData;\\n    const fontSize =\\n      this.data.defaultAppearanceData.fontSize || DEFAULT_FONT_SIZE;\\n\\n    const style = element.style;\\n\\n    \u002F\u002F TODO: If the font-size is zero, calculate it based on the height and\\n    \u002F\u002F       width of the element.\\n    \u002F\u002F Not setting `style.fontSize` will use the default font-size for now.\\n\\n    \u002F\u002F We don't use the font, as specified in the PDF document, for the \u003Cinput>\\n    \u002F\u002F element. Hence using the original `fontSize` could look bad, which is why\\n    \u002F\u002F it's instead based on the field height.\\n    \u002F\u002F If the height is \\\"big\\\" then it could lead to a too big font size\\n    \u002F\u002F so in this case use the one we've in the pdf (hence the min).\\n    let computedFontSize;\\n    const BORDER_SIZE = 2;\\n    const roundToOneDecimal = x => Math.round(10 * x) \u002F 10;\\n    if (this.data.multiLine) {\\n      const height = Math.abs(\\n        this.data.rect[3] - this.data.rect[1] - BORDER_SIZE\\n      );\\n      const numberOfLines = Math.round(height \u002F (LINE_FACTOR * fontSize)) || 1;\\n      const lineHeight = height \u002F numberOfLines;\\n      computedFontSize = Math.min(\\n        fontSize,\\n        roundToOneDecimal(lineHeight \u002F LINE_FACTOR)\\n      );\\n    } else {\\n      const height = Math.abs(\\n        this.data.rect[3] - this.data.rect[1] - BORDER_SIZE\\n      );\\n      computedFontSize = Math.min(\\n        fontSize,\\n        roundToOneDecimal(height \u002F LINE_FACTOR)\\n      );\\n    }\\n    style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`;\\n\\n    style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\\n\\n    if (this.data.textAlignment !== null) {\\n      style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\\n    }\\n  }\\n\\n  _setRequired(element, isRequired) {\\n    if (isRequired) {\\n      element.setAttribute(\\\"required\\\", true);\\n    } else {\\n      element.removeAttribute(\\\"required\\\");\\n    }\\n    element.setAttribute(\\\"aria-required\\\", isRequired);\\n  }\\n}\\n\\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\\n  constructor(parameters) {\\n    const isRenderable =\\n      parameters.renderForms ||\\n      parameters.data.hasOwnCanvas ||\\n      (!parameters.data.hasAppearance && !!parameters.data.fieldValue);\\n    super(parameters, { isRenderable });\\n  }\\n\\n  setPropertyOnSiblings(base, key, value, keyInStorage) {\\n    const storage = this.annotationStorage;\\n    for (const element of this._getElementsByName(\\n      base.name,\\n      \u002F* skipId = *\u002F base.id\\n    )) {\\n      if (element.domElement) {\\n        element.domElement[key] = value;\\n      }\\n      storage.setValue(element.id, { [keyInStorage]: value });\\n    }\\n  }\\n\\n  render() {\\n    const storage = this.annotationStorage;\\n    const id = this.data.id;\\n\\n    this.container.classList.add(\\\"textWidgetAnnotation\\\");\\n\\n    let element = null;\\n    if (this.renderForms) {\\n      \u002F\u002F NOTE: We cannot set the values using `element.value` below, since it\\n      \u002F\u002F       prevents the AnnotationLayer rasterizer in `test\u002Fdriver.js`\\n      \u002F\u002F       from parsing the elements correctly for the reference tests.\\n      const storedData = storage.getValue(id, {\\n        value: this.data.fieldValue,\\n      });\\n      let textContent = storedData.value || \\\"\\\";\\n      const maxLen = storage.getValue(id, {\\n        charLimit: this.data.maxLen,\\n      }).charLimit;\\n      if (maxLen && textContent.length > maxLen) {\\n        textContent = textContent.slice(0, maxLen);\\n      }\\n\\n      let fieldFormattedValues =\\n        storedData.formattedValue || this.data.textContent?.join(\\\"\\\\n\\\") || null;\\n      if (fieldFormattedValues && this.data.comb) {\\n        fieldFormattedValues = fieldFormattedValues.replaceAll(\u002F\\\\s+\u002Fg, \\\"\\\");\\n      }\\n\\n      const elementData = {\\n        userValue: textContent,\\n        formattedValue: fieldFormattedValues,\\n        lastCommittedValue: null,\\n        commitKey: 1,\\n        focused: false,\\n      };\\n\\n      if (this.data.multiLine) {\\n        element = document.createElement(\\\"textarea\\\");\\n        element.textContent = fieldFormattedValues ?? textContent;\\n        if (this.data.doNotScroll) {\\n          element.style.overflowY = \\\"hidden\\\";\\n        }\\n      } else {\\n        element = document.createElement(\\\"input\\\");\\n        element.type = \\\"text\\\";\\n        element.setAttribute(\\\"value\\\", fieldFormattedValues ?? textContent);\\n        if (this.data.doNotScroll) {\\n          element.style.overflowX = \\\"hidden\\\";\\n        }\\n      }\\n      if (this.data.hasOwnCanvas) {\\n        element.hidden = true;\\n      }\\n      GetElementsByNameSet.add(element);\\n      element.setAttribute(\\\"data-element-id\\\", id);\\n\\n      element.disabled = this.data.readOnly;\\n      element.name = this.data.fieldName;\\n      element.tabIndex = DEFAULT_TAB_INDEX;\\n\\n      this._setRequired(element, this.data.required);\\n\\n      if (maxLen) {\\n        element.maxLength = maxLen;\\n      }\\n\\n      element.addEventListener(\\\"input\\\", event => {\\n        storage.setValue(id, { value: event.target.value });\\n        this.setPropertyOnSiblings(\\n          element,\\n          \\\"value\\\",\\n          event.target.value,\\n          \\\"value\\\"\\n        );\\n        elementData.formattedValue = null;\\n      });\\n\\n      element.addEventListener(\\\"resetform\\\", event => {\\n        const defaultValue = this.data.defaultFieldValue ?? \\\"\\\";\\n        element.value = elementData.userValue = defaultValue;\\n        elementData.formattedValue = null;\\n      });\\n\\n      let blurListener = event => {\\n        const { formattedValue } = elementData;\\n        if (formattedValue !== null && formattedValue !== undefined) {\\n          event.target.value = formattedValue;\\n        }\\n        \u002F\u002F Reset the cursor position to the start of the field (issue 12359).\\n        event.target.scrollLeft = 0;\\n      };\\n\\n      if (this.enableScripting && this.hasJSActions) {\\n        element.addEventListener(\\\"focus\\\", event => {\\n          if (elementData.focused) {\\n            return;\\n          }\\n          const { target } = event;\\n          if (elementData.userValue) {\\n            target.value = elementData.userValue;\\n          }\\n          elementData.lastCommittedValue = target.value;\\n          elementData.commitKey = 1;\\n          if (!this.data.actions?.Focus) {\\n            elementData.focused = true;\\n          }\\n        });\\n\\n        element.addEventListener(\\\"updatefromsandbox\\\", jsEvent => {\\n          this.showElementAndHideCanvas(jsEvent.target);\\n          const actions = {\\n            value(event) {\\n              elementData.userValue = event.detail.value ?? \\\"\\\";\\n              storage.setValue(id, { value: elementData.userValue.toString() });\\n              event.target.value = elementData.userValue;\\n            },\\n            formattedValue(event) {\\n              const { formattedValue } = event.detail;\\n              elementData.formattedValue = formattedValue;\\n              if (\\n                formattedValue !== null &&\\n                formattedValue !== undefined &&\\n                event.target !== document.activeElement\\n              ) {\\n                \u002F\u002F Input hasn't the focus so display formatted string\\n                event.target.value = formattedValue;\\n              }\\n              storage.setValue(id, {\\n                formattedValue,\\n              });\\n            },\\n            selRange(event) {\\n              event.target.setSelectionRange(...event.detail.selRange);\\n            },\\n            charLimit: event => {\\n              const { charLimit } = event.detail;\\n              const { target } = event;\\n              if (charLimit === 0) {\\n                target.removeAttribute(\\\"maxLength\\\");\\n                return;\\n              }\\n\\n              target.setAttribute(\\\"maxLength\\\", charLimit);\\n              let value = elementData.userValue;\\n              if (!value || value.length \u003C= charLimit) {\\n                return;\\n              }\\n              value = value.slice(0, charLimit);\\n              target.value = elementData.userValue = value;\\n              storage.setValue(id, { value });\\n\\n              this.linkService.eventBus?.dispatch(\\\"dispatcheventinsandbox\\\", {\\n                source: this,\\n                detail: {\\n                  id,\\n                  name: \\\"Keystroke\\\",\\n                  value,\\n                  willCommit: true,\\n                  commitKey: 1,\\n                  selStart: target.selectionStart,\\n                  selEnd: target.selectionEnd,\\n                },\\n              });\\n            },\\n          };\\n          this._dispatchEventFromSandbox(actions, jsEvent);\\n        });\\n\\n        \u002F\u002F Even if the field hasn't any actions\\n        \u002F\u002F leaving it can still trigger some actions with Calculate\\n        element.addEventListener(\\\"keydown\\\", event => {\\n          elementData.commitKey = 1;\\n          \u002F\u002F If the key is one of Escape, Enter then the data are committed.\\n          \u002F\u002F If we've a Tab then data will be committed on blur.\\n          let commitKey = -1;\\n          if (event.key === \\\"Escape\\\") {\\n            commitKey = 0;\\n          } else if (event.key === \\\"Enter\\\" && !this.data.multiLine) {\\n            \u002F\u002F When we've a multiline field, \\\"Enter\\\" key is a key as the other\\n            \u002F\u002F hence we don't commit the data (Acrobat behaves the same way)\\n            \u002F\u002F (see issue #15627).\\n            commitKey = 2;\\n          } else if (event.key === \\\"Tab\\\") {\\n            elementData.commitKey = 3;\\n          }\\n          if (commitKey === -1) {\\n            return;\\n          }\\n          const { value } = event.target;\\n          if (elementData.lastCommittedValue === value) {\\n            return;\\n          }\\n          elementData.lastCommittedValue = value;\\n          \u002F\u002F Save the entered value\\n          elementData.userValue = value;\\n          this.linkService.eventBus?.dispatch(\\\"dispatcheventinsandbox\\\", {\\n            source: this,\\n            detail: {\\n              id,\\n              name: \\\"Keystroke\\\",\\n              value,\\n              willCommit: true,\\n              commitKey,\\n              selStart: event.target.selectionStart,\\n              selEnd: event.target.selectionEnd,\\n            },\\n          });\\n        });\\n        const _blurListener = blurListener;\\n        blurListener = null;\\n        element.addEventListener(\\\"blur\\\", event => {\\n          if (!elementData.focused || !event.relatedTarget) {\\n            return;\\n          }\\n          if (!this.data.actions?.Blur) {\\n            elementData.focused = false;\\n          }\\n          const { value } = event.target;\\n          elementData.userValue = value;\\n          if (elementData.lastCommittedValue !== value) {\\n            this.linkService.eventBus?.dispatch(\\\"dispatcheventinsandbox\\\", {\\n              source: this,\\n              detail: {\\n                id,\\n                name: \\\"Keystroke\\\",\\n                value,\\n                willCommit: true,\\n                commitKey: elementData.commitKey,\\n                selStart: event.target.selectionStart,\\n                selEnd: event.target.selectionEnd,\\n              },\\n            });\\n          }\\n          _blurListener(event);\\n        });\\n\\n        if (this.data.actions?.Keystroke) {\\n          element.addEventListener(\\\"beforeinput\\\", event => {\\n            elementData.lastCommittedValue = null;\\n            const { data, target } = event;\\n            const { value, selectionStart, selectionEnd } = target;\\n\\n            let selStart = selectionStart,\\n              selEnd = selectionEnd;\\n\\n            switch (event.inputType) {\\n              \u002F\u002F https:\u002F\u002Frawgit.com\u002Fw3c\u002Finput-events\u002Fv1\u002Findex.html#interface-InputEvent-Attributes\\n              case \\\"deleteWordBackward\\\": {\\n                const match = value\\n                  .substring(0, selectionStart)\\n                  .match(\u002F\\\\w*[^\\\\w]*$\u002F);\\n                if (match) {\\n                  selStart -= match[0].length;\\n                }\\n                break;\\n              }\\n              case \\\"deleteWordForward\\\": {\\n                const match = value\\n                  .substring(selectionStart)\\n                  .match(\u002F^[^\\\\w]*\\\\w*\u002F);\\n                if (match) {\\n                  selEnd += match[0].length;\\n                }\\n                break;\\n              }\\n              case \\\"deleteContentBackward\\\":\\n                if (selectionStart === selectionEnd) {\\n                  selStart -= 1;\\n                }\\n                break;\\n              case \\\"deleteContentForward\\\":\\n                if (selectionStart === selectionEnd) {\\n                  selEnd += 1;\\n                }\\n                break;\\n            }\\n\\n            \u002F\u002F We handle the event ourselves.\\n            event.preventDefault();\\n            this.linkService.eventBus?.dispatch(\\\"dispatcheventinsandbox\\\", {\\n              source: this,\\n              detail: {\\n                id,\\n                name: \\\"Keystroke\\\",\\n                value,\\n                change: data || \\\"\\\",\\n                willCommit: false,\\n                selStart,\\n                selEnd,\\n              },\\n            });\\n          });\\n        }\\n\\n        this._setEventListeners(\\n          element,\\n          elementData,\\n          [\\n            [\\\"focus\\\", \\\"Focus\\\"],\\n            [\\\"blur\\\", \\\"Blur\\\"],\\n            [\\\"mousedown\\\", \\\"Mouse Down\\\"],\\n            [\\\"mouseenter\\\", \\\"Mouse Enter\\\"],\\n            [\\\"mouseleave\\\", \\\"Mouse Exit\\\"],\\n            [\\\"mouseup\\\", \\\"Mouse Up\\\"],\\n          ],\\n          event => event.target.value\\n        );\\n      }\\n\\n      if (blurListener) {\\n        element.addEventListener(\\\"blur\\\", blurListener);\\n      }\\n\\n      if (this.data.comb) {\\n        const fieldWidth = this.data.rect[2] - this.data.rect[0];\\n        const combWidth = fieldWidth \u002F maxLen;\\n\\n        element.classList.add(\\\"comb\\\");\\n        element.style.letterSpacing = `calc(${combWidth}px * var(--scale-factor) - 1ch)`;\\n      }\\n    } else {\\n      element = document.createElement(\\\"div\\\");\\n      element.textContent = this.data.fieldValue;\\n      element.style.verticalAlign = \\\"middle\\\";\\n      element.style.display = \\\"table-cell\\\";\\n\\n      if (this.data.hasOwnCanvas) {\\n        element.hidden = true;\\n      }\\n    }\\n\\n    this._setTextStyle(element);\\n    this._setBackgroundColor(element);\\n    this._setDefaultPropertiesFromJS(element);\\n\\n    this.container.append(element);\\n    return this.container;\\n  }\\n}\\n\\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\\n  constructor(parameters) {\\n    super(parameters, { isRenderable: !!parameters.data.hasOwnCanvas });\\n  }\\n}\\n\\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\\n  constructor(parameters) {\\n    super(parameters, { isRenderable: parameters.renderForms });\\n  }\\n\\n  render() {\\n    const storage = this.annotationStorage;\\n    const data = this.data;\\n    const id = data.id;\\n    let value = storage.getValue(id, {\\n      value: data.exportValue === data.fieldValue,\\n    }).value;\\n    if (typeof value === \\\"string\\\") {\\n      \u002F\u002F The value has been changed through js and set in annotationStorage.\\n      value = value !== \\\"Off\\\";\\n      storage.setValue(id, { value });\\n    }\\n\\n    this.container.classList.add(\\\"buttonWidgetAnnotation\\\", \\\"checkBox\\\");\\n\\n    const element = document.createElement(\\\"input\\\");\\n    GetElementsByNameSet.add(element);\\n    element.setAttribute(\\\"data-element-id\\\", id);\\n\\n    element.disabled = data.readOnly;\\n    this._setRequired(element, this.data.required);\\n    element.type = \\\"checkbox\\\";\\n    element.name = data.fieldName;\\n    if (value) {\\n      element.setAttribute(\\\"checked\\\", true);\\n    }\\n    element.setAttribute(\\\"exportValue\\\", data.exportValue);\\n    element.tabIndex = DEFAULT_TAB_INDEX;\\n\\n    element.addEventListener(\\\"change\\\", event => {\\n      const { name, checked } = event.target;\\n      for (const checkbox of this._getElementsByName(name, \u002F* skipId = *\u002F id)) {\\n        const curChecked = checked && checkbox.exportValue === data.exportValue;\\n        if (checkbox.domElement) {\\n          checkbox.domElement.checked = curChecked;\\n        }\\n        storage.setValue(checkbox.id, { value: curChecked });\\n      }\\n      storage.setValue(id, { value: checked });\\n    });\\n\\n    element.addEventListener(\\\"resetform\\\", event => {\\n      const defaultValue = data.defaultFieldValue || \\\"Off\\\";\\n      event.target.checked = defaultValue === data.exportValue;\\n    });\\n\\n    if (this.enableScripting && this.hasJSActions) {\\n      element.addEventListener(\\\"updatefromsandbox\\\", jsEvent => {\\n        const actions = {\\n          value(event) {\\n            event.target.checked = event.detail.value !== \\\"Off\\\";\\n            storage.setValue(id, { value: event.target.checked });\\n          },\\n        };\\n        this._dispatchEventFromSandbox(actions, jsEvent);\\n      });\\n\\n      this._setEventListeners(\\n        element,\\n        null,\\n        [\\n          [\\\"change\\\", \\\"Validate\\\"],\\n          [\\\"change\\\", \\\"Action\\\"],\\n          [\\\"focus\\\", \\\"Focus\\\"],\\n          [\\\"blur\\\", \\\"Blur\\\"],\\n          [\\\"mousedown\\\", \\\"Mouse Down\\\"],\\n          [\\\"mouseenter\\\", \\\"Mouse Enter\\\"],\\n          [\\\"mouseleave\\\", \\\"Mouse Exit\\\"],\\n          [\\\"mouseup\\\", \\\"Mouse Up\\\"],\\n        ],\\n        event => event.target.checked\\n      );\\n    }\\n\\n    this._setBackgroundColor(element);\\n    this._setDefaultPropertiesFromJS(element);\\n\\n    this.container.append(element);\\n    return this.container;\\n  }\\n}\\n\\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\\n  constructor(parameters) {\\n    super(parameters, { isRenderable: parameters.renderForms });\\n  }\\n\\n  render() {\\n    this.container.classList.add(\\\"buttonWidgetAnnotation\\\", \\\"radioButton\\\");\\n    const storage = this.annotationStorage;\\n    const data = this.data;\\n    const id = data.id;\\n    let value = storage.getValue(id, {\\n      value: data.fieldValue === data.buttonValue,\\n    }).value;\\n    if (typeof value === \\\"string\\\") {\\n      \u002F\u002F The value has been changed through js and set in annotationStorage.\\n      value = value !== data.buttonValue;\\n      storage.setValue(id, { value });\\n    }\\n\\n    if (value) {\\n      \u002F\u002F It's possible that multiple radio buttons are checked.\\n      \u002F\u002F So if this one is checked we just reset the other ones.\\n      \u002F\u002F (see bug 1864136). Then when the other ones will be rendered they will\\n      \u002F\u002F unchecked (because of their value in the storage).\\n      \u002F\u002F Consequently, the first checked radio button will be the only checked\\n      \u002F\u002F one.\\n      for (const radio of this._getElementsByName(\\n        data.fieldName,\\n        \u002F* skipId = *\u002F id\\n      )) {\\n        storage.setValue(radio.id, { value: false });\\n      }\\n    }\\n\\n    const element = document.createElement(\\\"input\\\");\\n    GetElementsByNameSet.add(element);\\n    element.setAttribute(\\\"data-element-id\\\", id);\\n\\n    element.disabled = data.readOnly;\\n    this._setRequired(element, this.data.required);\\n    element.type = \\\"radio\\\";\\n    element.name = data.fieldName;\\n    if (value) {\\n      element.setAttribute(\\\"checked\\\", true);\\n    }\\n    element.tabIndex = DEFAULT_TAB_INDEX;\\n\\n    element.addEventListener(\\\"change\\\", event => {\\n      const { name, checked } = event.target;\\n      for (const radio of this._getElementsByName(name, \u002F* skipId = *\u002F id)) {\\n        storage.setValue(radio.id, { value: false });\\n      }\\n      storage.setValue(id, { value: checked });\\n    });\\n\\n    element.addEventListener(\\\"resetform\\\", event => {\\n      const defaultValue = data.defaultFieldValue;\\n      event.target.checked =\\n        defaultValue !== null &&\\n        defaultValue !== undefined &&\\n        defaultValue === data.buttonValue;\\n    });\\n\\n    if (this.enableScripting && this.hasJSActions) {\\n      const pdfButtonValue = data.buttonValue;\\n      element.addEventListener(\\\"updatefromsandbox\\\", jsEvent => {\\n        const actions = {\\n          value: event => {\\n            const checked = pdfButtonValue === event.detail.value;\\n            for (const radio of this._getElementsByName(event.target.name)) {\\n              const curChecked = checked && radio.id === id;\\n              if (radio.domElement) {\\n                radio.domElement.checked = curChecked;\\n              }\\n              storage.setValue(radio.id, { value: curChecked });\\n            }\\n          },\\n        };\\n        this._dispatchEventFromSandbox(actions, jsEvent);\\n      });\\n\\n      this._setEventListeners(\\n        element,\\n        null,\\n        [\\n          [\\\"change\\\", \\\"Validate\\\"],\\n          [\\\"change\\\", \\\"Action\\\"],\\n          [\\\"focus\\\", \\\"Focus\\\"],\\n          [\\\"blur\\\", \\\"Blur\\\"],\\n          [\\\"mousedown\\\", \\\"Mouse Down\\\"],\\n          [\\\"mouseenter\\\", \\\"Mouse Enter\\\"],\\n          [\\\"mouseleave\\\", \\\"Mouse Exit\\\"],\\n          [\\\"mouseup\\\", \\\"Mouse Up\\\"],\\n        ],\\n        event => event.target.checked\\n      );\\n    }\\n\\n    this._setBackgroundColor(element);\\n    this._setDefaultPropertiesFromJS(element);\\n\\n    this.container.append(element);\\n    return this.container;\\n  }\\n}\\n\\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\\n  constructor(parameters) {\\n    super(parameters, { ignoreBorder: parameters.data.hasAppearance });\\n  }\\n\\n  render() {\\n    \u002F\u002F The rendering and functionality of a push button widget annotation is\\n    \u002F\u002F equal to that of a link annotation, but may have more functionality, such\\n    \u002F\u002F as performing actions on form fields (resetting, submitting, et cetera).\\n    const container = super.render();\\n    container.classList.add(\\\"buttonWidgetAnnotation\\\", \\\"pushButton\\\");\\n\\n    const linkElement = container.lastChild;\\n    if (this.enableScripting && this.hasJSActions && linkElement) {\\n      this._setDefaultPropertiesFromJS(linkElement);\\n\\n      linkElement.addEventListener(\\\"updatefromsandbox\\\", jsEvent => {\\n        this._dispatchEventFromSandbox({}, jsEvent);\\n      });\\n    }\\n\\n    return container;\\n  }\\n}\\n\\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\\n  constructor(parameters) {\\n    super(parameters, { isRenderable: parameters.renderForms });\\n  }\\n\\n  render() {\\n    this.container.classList.add(\\\"choiceWidgetAnnotation\\\");\\n    const storage = this.annotationStorage;\\n    const id = this.data.id;\\n\\n    const storedData = storage.getValue(id, {\\n      value: this.data.fieldValue,\\n    });\\n\\n    const selectElement = document.createElement(\\\"select\\\");\\n    GetElementsByNameSet.add(selectElement);\\n    selectElement.setAttribute(\\\"data-element-id\\\", id);\\n\\n    selectElement.disabled = this.data.readOnly;\\n    this._setRequired(selectElement, this.data.required);\\n    selectElement.name = this.data.fieldName;\\n    selectElement.tabIndex = DEFAULT_TAB_INDEX;\\n\\n    let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\\n\\n    if (!this.data.combo) {\\n      \u002F\u002F List boxes have a size and (optionally) multiple selection.\\n      selectElement.size = this.data.options.length;\\n      if (this.data.multiSelect) {\\n        selectElement.multiple = true;\\n      }\\n    }\\n\\n    selectElement.addEventListener(\\\"resetform\\\", event => {\\n      const defaultValue = this.data.defaultFieldValue;\\n      for (const option of selectElement.options) {\\n        option.selected = option.value === defaultValue;\\n      }\\n    });\\n\\n    \u002F\u002F Insert the options into the choice field.\\n    for (const option of this.data.options) {\\n      const optionElement = document.createElement(\\\"option\\\");\\n      optionElement.textContent = option.displayValue;\\n      optionElement.value = option.exportValue;\\n      if (storedData.value.includes(option.exportValue)) {\\n        optionElement.setAttribute(\\\"selected\\\", true);\\n        addAnEmptyEntry = false;\\n      }\\n      selectElement.append(optionElement);\\n    }\\n\\n    let removeEmptyEntry = null;\\n    if (addAnEmptyEntry) {\\n      const noneOptionElement = document.createElement(\\\"option\\\");\\n      noneOptionElement.value = \\\" \\\";\\n      noneOptionElement.setAttribute(\\\"hidden\\\", true);\\n      noneOptionElement.setAttribute(\\\"selected\\\", true);\\n      selectElement.prepend(noneOptionElement);\\n\\n      removeEmptyEntry = () => {\\n        noneOptionElement.remove();\\n        selectElement.removeEventListener(\\\"input\\\", removeEmptyEntry);\\n        removeEmptyEntry = null;\\n      };\\n      selectElement.addEventListener(\\\"input\\\", removeEmptyEntry);\\n    }\\n\\n    const getValue = isExport => {\\n      const name = isExport ? \\\"value\\\" : \\\"textContent\\\";\\n      const { options, multiple } = selectElement;\\n      if (!multiple) {\\n        return options.selectedIndex === -1\\n          ? null\\n          : options[options.selectedIndex][name];\\n      }\\n      return Array.prototype.filter\\n        .call(options, option => option.selected)\\n        .map(option => option[name]);\\n    };\\n\\n    let selectedValues = getValue(\u002F* isExport *\u002F false);\\n\\n    const getItems = event => {\\n      const options = event.target.options;\\n      return Array.prototype.map.call(options, option => ({\\n        displayValue: option.textContent,\\n        exportValue: option.value,\\n      }));\\n    };\\n\\n    if (this.enableScripting && this.hasJSActions) {\\n      selectElement.addEventListener(\\\"updatefromsandbox\\\", jsEvent => {\\n        const actions = {\\n          value(event) {\\n            removeEmptyEntry?.();\\n            const value = event.detail.value;\\n            const values = new Set(Array.isArray(value) ? value : [value]);\\n            for (const option of selectElement.options) {\\n              option.selected = values.has(option.value);\\n            }\\n            storage.setValue(id, {\\n              value: getValue(\u002F* isExport *\u002F true),\\n            });\\n            selectedValues = getValue(\u002F* isExport *\u002F false);\\n          },\\n          multipleSelection(event) {\\n            selectElement.multiple = true;\\n          },\\n          remove(event) {\\n            const options = selectElement.options;\\n            const index = event.detail.remove;\\n            options[index].selected = false;\\n            selectElement.remove(index);\\n            if (options.length > 0) {\\n              const i = Array.prototype.findIndex.call(\\n                options,\\n                option => option.selected\\n              );\\n              if (i === -1) {\\n                options[0].selected = true;\\n              }\\n            }\\n            storage.setValue(id, {\\n              value: getValue(\u002F* isExport *\u002F true),\\n              items: getItems(event),\\n            });\\n            selectedValues = getValue(\u002F* isExport *\u002F false);\\n          },\\n          clear(event) {\\n            while (selectElement.length !== 0) {\\n              selectElement.remove(0);\\n            }\\n            storage.setValue(id, { value: null, items: [] });\\n            selectedValues = getValue(\u002F* isExport *\u002F false);\\n          },\\n          insert(event) {\\n            const { index, displayValue, exportValue } = event.detail.insert;\\n            const selectChild = selectElement.children[index];\\n            const optionElement = document.createElement(\\\"option\\\");\\n            optionElement.textContent = displayValue;\\n            optionElement.value = exportValue;\\n\\n            if (selectChild) {\\n              selectChild.before(optionElement);\\n            } else {\\n              selectElement.append(optionElement);\\n            }\\n            storage.setValue(id, {\\n              value: getValue(\u002F* isExport *\u002F true),\\n              items: getItems(event),\\n            });\\n            selectedValues = getValue(\u002F* isExport *\u002F false);\\n          },\\n          items(event) {\\n            const { items } = event.detail;\\n            while (selectElement.length !== 0) {\\n              selectElement.remove(0);\\n            }\\n            for (const item of items) {\\n              const { displayValue, exportValue } = item;\\n              const optionElement = document.createElement(\\\"option\\\");\\n              optionElement.textContent = displayValue;\\n              optionElement.value = exportValue;\\n              selectElement.append(optionElement);\\n            }\\n            if (selectElement.options.length > 0) {\\n              selectElement.options[0].selected = true;\\n            }\\n            storage.setValue(id, {\\n              value: getValue(\u002F* isExport *\u002F true),\\n              items: getItems(event),\\n            });\\n            selectedValues = getValue(\u002F* isExport *\u002F false);\\n          },\\n          indices(event) {\\n            const indices = new Set(event.detail.indices);\\n            for (const option of event.target.options) {\\n              option.selected = indices.has(option.index);\\n            }\\n            storage.setValue(id, {\\n              value: getValue(\u002F* isExport *\u002F true),\\n            });\\n            selectedValues = getValue(\u002F* isExport *\u002F false);\\n          },\\n          editable(event) {\\n            event.target.disabled = !event.detail.editable;\\n          },\\n        };\\n        this._dispatchEventFromSandbox(actions, jsEvent);\\n      });\\n\\n      selectElement.addEventListener(\\\"input\\\", event => {\\n        const exportValue = getValue(\u002F* isExport *\u002F true);\\n        const change = getValue(\u002F* isExport *\u002F false);\\n        storage.setValue(id, { value: exportValue });\\n\\n        event.preventDefault();\\n\\n        this.linkService.eventBus?.dispatch(\\\"dispatcheventinsandbox\\\", {\\n          source: this,\\n          detail: {\\n            id,\\n            name: \\\"Keystroke\\\",\\n            value: selectedValues,\\n            change,\\n            changeEx: exportValue,\\n            willCommit: false,\\n            commitKey: 1,\\n            keyDown: false,\\n          },\\n        });\\n      });\\n\\n      this._setEventListeners(\\n        selectElement,\\n        null,\\n        [\\n          [\\\"focus\\\", \\\"Focus\\\"],\\n          [\\\"blur\\\", \\\"Blur\\\"],\\n          [\\\"mousedown\\\", \\\"Mouse Down\\\"],\\n          [\\\"mouseenter\\\", \\\"Mouse Enter\\\"],\\n          [\\\"mouseleave\\\", \\\"Mouse Exit\\\"],\\n          [\\\"mouseup\\\", \\\"Mouse Up\\\"],\\n          [\\\"input\\\", \\\"Action\\\"],\\n          [\\\"input\\\", \\\"Validate\\\"],\\n        ],\\n        event => event.target.value\\n      );\\n    } else {\\n      selectElement.addEventListener(\\\"input\\\", function (event) {\\n        storage.setValue(id, { value: getValue(\u002F* isExport *\u002F true) });\\n      });\\n    }\\n\\n    if (this.data.combo) {\\n      this._setTextStyle(selectElement);\\n    } else {\\n      \u002F\u002F Just use the default font size...\\n      \u002F\u002F it's a bit hard to guess what is a good size.\\n    }\\n    this._setBackgroundColor(selectElement);\\n    this._setDefaultPropertiesFromJS(selectElement);\\n\\n    this.container.append(selectElement);\\n    return this.container;\\n  }\\n}\\n\\nclass PopupAnnotationElement extends AnnotationElement {\\n  constructor(parameters) {\\n    const { data, elements } = parameters;\\n    super(parameters, { isRenderable: AnnotationElement._hasPopupData(data) });\\n    this.elements = elements;\\n    this.popup = null;\\n  }\\n\\n  render() {\\n    this.container.classList.add(\\\"popupAnnotation\\\");\\n\\n    const popup = (this.popup = new PopupElement({\\n      container: this.container,\\n      color: this.data.color,\\n      titleObj: this.data.titleObj,\\n      modificationDate: this.data.modificationDate,\\n      contentsObj: this.data.contentsObj,\\n      richText: this.data.richText,\\n      rect: this.data.rect,\\n      parentRect: this.data.parentRect || null,\\n      parent: this.parent,\\n      elements: this.elements,\\n      open: this.data.open,\\n    }));\\n\\n    const elementIds = [];\\n    for (const element of this.elements) {\\n      element.popup = popup;\\n      elementIds.push(element.data.id);\\n      element.addHighlightArea();\\n    }\\n\\n    this.container.setAttribute(\\n      \\\"aria-controls\\\",\\n      elementIds.map(id => `${AnnotationPrefix}${id}`).join(\\\",\\\")\\n    );\\n\\n    return this.container;\\n  }\\n}\\n\\nclass PopupElement {\\n  #boundKeyDown = this.#keyDown.bind(this);\\n\\n  #boundHide = this.#hide.bind(this);\\n\\n  #boundShow = this.#show.bind(this);\\n\\n  #boundToggle = this.#toggle.bind(this);\\n\\n  #color = null;\\n\\n  #container = null;\\n\\n  #contentsObj = null;\\n\\n  #dateObj = null;\\n\\n  #elements = null;\\n\\n  #parent = null;\\n\\n  #parentRect = null;\\n\\n  #pinned = false;\\n\\n  #popup = null;\\n\\n  #position = null;\\n\\n  #rect = null;\\n\\n  #richText = null;\\n\\n  #titleObj = null;\\n\\n  #updates = null;\\n\\n  #wasVisible = false;\\n\\n  constructor({\\n    container,\\n    color,\\n    elements,\\n    titleObj,\\n    modificationDate,\\n    contentsObj,\\n    richText,\\n    parent,\\n    rect,\\n    parentRect,\\n    open,\\n  }) {\\n    this.#container = container;\\n    this.#titleObj = titleObj;\\n    this.#contentsObj = contentsObj;\\n    this.#richText = richText;\\n    this.#parent = parent;\\n    this.#color = color;\\n    this.#rect = rect;\\n    this.#parentRect = parentRect;\\n    this.#elements = elements;\\n\\n    \u002F\u002F The modification date is shown in the popup instead of the creation\\n    \u002F\u002F date if it is available and can be parsed correctly, which is\\n    \u002F\u002F consistent with other viewers such as Adobe Acrobat.\\n    this.#dateObj = PDFDateString.toDateObject(modificationDate);\\n\\n    this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\\n    \u002F\u002F Attach the event listeners to the trigger element.\\n    for (const element of this.trigger) {\\n      element.addEventListener(\\\"click\\\", this.#boundToggle);\\n      element.addEventListener(\\\"mouseenter\\\", this.#boundShow);\\n      element.addEventListener(\\\"mouseleave\\\", this.#boundHide);\\n      element.classList.add(\\\"popupTriggerArea\\\");\\n    }\\n\\n    \u002F\u002F Attach the event listener to toggle the popup with the keyboard.\\n    for (const element of elements) {\\n      element.container?.addEventListener(\\\"keydown\\\", this.#boundKeyDown);\\n    }\\n\\n    this.#container.hidden = true;\\n    if (open) {\\n      this.#toggle();\\n    }\\n\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING\\\")) {\\n      \u002F\u002F Since the popup is lazily created, we need to ensure that it'll be\\n      \u002F\u002F created and displayed during reference tests.\\n      this.#parent.popupShow.push(async () => {\\n        if (this.#container.hidden) {\\n          this.#show();\\n        }\\n      });\\n    }\\n  }\\n\\n  render() {\\n    if (this.#popup) {\\n      return;\\n    }\\n\\n    const popup = (this.#popup = document.createElement(\\\"div\\\"));\\n    popup.className = \\\"popup\\\";\\n\\n    if (this.#color) {\\n      const baseColor = (popup.style.outlineColor = Util.makeHexColor(\\n        ...this.#color\\n      ));\\n      if (\\n        (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) ||\\n        CSS.supports(\\\"background-color\\\", \\\"color-mix(in srgb, red 30%, white)\\\")\\n      ) {\\n        popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\\n      } else {\\n        \u002F\u002F color-mix isn't supported in some browsers hence this version.\\n        \u002F\u002F See https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FCSS\u002Fcolor_value\u002Fcolor-mix#browser_compatibility\\n        \u002F\u002F TODO: Use color-mix when it's supported everywhere.\\n        \u002F\u002F Enlighten the color.\\n        const BACKGROUND_ENLIGHT = 0.7;\\n        popup.style.backgroundColor = Util.makeHexColor(\\n          ...this.#color.map(c =>\\n            Math.floor(BACKGROUND_ENLIGHT * (255 - c) + c)\\n          )\\n        );\\n      }\\n    }\\n\\n    const header = document.createElement(\\\"span\\\");\\n    header.className = \\\"header\\\";\\n    const title = document.createElement(\\\"h1\\\");\\n    header.append(title);\\n    ({ dir: title.dir, str: title.textContent } = this.#titleObj);\\n    popup.append(header);\\n\\n    if (this.#dateObj) {\\n      const modificationDate = document.createElement(\\\"span\\\");\\n      modificationDate.classList.add(\\\"popupDate\\\");\\n      modificationDate.setAttribute(\\n        \\\"data-l10n-id\\\",\\n        \\\"pdfjs-annotation-date-string\\\"\\n      );\\n      modificationDate.setAttribute(\\n        \\\"data-l10n-args\\\",\\n        JSON.stringify({\\n          date: this.#dateObj.toLocaleDateString(),\\n          time: this.#dateObj.toLocaleTimeString(),\\n        })\\n      );\\n      header.append(modificationDate);\\n    }\\n\\n    const html = this.#html;\\n    if (html) {\\n      XfaLayer.render({\\n        xfaHtml: html,\\n        intent: \\\"richText\\\",\\n        div: popup,\\n      });\\n      popup.lastChild.classList.add(\\\"richText\\\", \\\"popupContent\\\");\\n    } else {\\n      const contents = this._formatContents(this.#contentsObj);\\n      popup.append(contents);\\n    }\\n    this.#container.append(popup);\\n  }\\n\\n  get #html() {\\n    const richText = this.#richText;\\n    const contentsObj = this.#contentsObj;\\n    if (\\n      richText?.str &&\\n      (!contentsObj?.str || contentsObj.str === richText.str)\\n    ) {\\n      return this.#richText.html || null;\\n    }\\n    return null;\\n  }\\n\\n  get #fontSize() {\\n    return this.#html?.attributes?.style?.fontSize || 0;\\n  }\\n\\n  get #fontColor() {\\n    return this.#html?.attributes?.style?.color || null;\\n  }\\n\\n  #makePopupContent(text) {\\n    const popupLines = [];\\n    const popupContent = {\\n      str: text,\\n      html: {\\n        name: \\\"div\\\",\\n        attributes: {\\n          dir: \\\"auto\\\",\\n        },\\n        children: [\\n          {\\n            name: \\\"p\\\",\\n            children: popupLines,\\n          },\\n        ],\\n      },\\n    };\\n    const lineAttributes = {\\n      style: {\\n        color: this.#fontColor,\\n        fontSize: this.#fontSize\\n          ? `calc(${this.#fontSize}px * var(--scale-factor))`\\n          : \\\"\\\",\\n      },\\n    };\\n    for (const line of text.split(\\\"\\\\n\\\")) {\\n      popupLines.push({\\n        name: \\\"span\\\",\\n        value: line,\\n        attributes: lineAttributes,\\n      });\\n    }\\n    return popupContent;\\n  }\\n\\n  \u002F**\\n   * Format the contents of the popup by adding newlines where necessary.\\n   *\\n   * @private\\n   * @param {Object\u003Cstring, string>} contentsObj\\n   * @memberof PopupElement\\n   * @returns {HTMLParagraphElement}\\n   *\u002F\\n  _formatContents({ str, dir }) {\\n    const p = document.createElement(\\\"p\\\");\\n    p.classList.add(\\\"popupContent\\\");\\n    p.dir = dir;\\n    const lines = str.split(\u002F(?:\\\\r\\\\n?|\\\\n)\u002F);\\n    for (let i = 0, ii = lines.length; i \u003C ii; ++i) {\\n      const line = lines[i];\\n      p.append(document.createTextNode(line));\\n      if (i \u003C ii - 1) {\\n        p.append(document.createElement(\\\"br\\\"));\\n      }\\n    }\\n    return p;\\n  }\\n\\n  #keyDown(event) {\\n    if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\\n      return;\\n    }\\n\\n    if (event.key === \\\"Enter\\\" || (event.key === \\\"Escape\\\" && this.#pinned)) {\\n      this.#toggle();\\n    }\\n  }\\n\\n  updateEdited({ rect, popupContent }) {\\n    this.#updates ||= {\\n      contentsObj: this.#contentsObj,\\n      richText: this.#richText,\\n    };\\n    if (rect) {\\n      this.#position = null;\\n    }\\n    if (popupContent) {\\n      this.#richText = this.#makePopupContent(popupContent);\\n      this.#contentsObj = null;\\n    }\\n    this.#popup?.remove();\\n    this.#popup = null;\\n  }\\n\\n  resetEdited() {\\n    if (!this.#updates) {\\n      return;\\n    }\\n    ({ contentsObj: this.#contentsObj, richText: this.#richText } =\\n      this.#updates);\\n    this.#updates = null;\\n    this.#popup?.remove();\\n    this.#popup = null;\\n    this.#position = null;\\n  }\\n\\n  #setPosition() {\\n    if (this.#position !== null) {\\n      return;\\n    }\\n    const {\\n      page: { view },\\n      viewport: {\\n        rawDims: { pageWidth, pageHeight, pageX, pageY },\\n      },\\n    } = this.#parent;\\n\\n    let useParentRect = !!this.#parentRect;\\n    let rect = useParentRect ? this.#parentRect : this.#rect;\\n    for (const element of this.#elements) {\\n      if (!rect || Util.intersect(element.data.rect, rect) !== null) {\\n        rect = element.data.rect;\\n        useParentRect = true;\\n        break;\\n      }\\n    }\\n\\n    const normalizedRect = Util.normalizeRect([\\n      rect[0],\\n      view[3] - rect[1] + view[1],\\n      rect[2],\\n      view[3] - rect[3] + view[1],\\n    ]);\\n\\n    const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\\n    const parentWidth = useParentRect\\n      ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION\\n      : 0;\\n    const popupLeft = normalizedRect[0] + parentWidth;\\n    const popupTop = normalizedRect[1];\\n    this.#position = [\\n      (100 * (popupLeft - pageX)) \u002F pageWidth,\\n      (100 * (popupTop - pageY)) \u002F pageHeight,\\n    ];\\n\\n    const { style } = this.#container;\\n    style.left = `${this.#position[0]}%`;\\n    style.top = `${this.#position[1]}%`;\\n  }\\n\\n  \u002F**\\n   * Toggle the visibility of the popup.\\n   *\u002F\\n  #toggle() {\\n    this.#pinned = !this.#pinned;\\n    if (this.#pinned) {\\n      this.#show();\\n      this.#container.addEventListener(\\\"click\\\", this.#boundToggle);\\n      this.#container.addEventListener(\\\"keydown\\\", this.#boundKeyDown);\\n    } else {\\n      this.#hide();\\n      this.#container.removeEventListener(\\\"click\\\", this.#boundToggle);\\n      this.#container.removeEventListener(\\\"keydown\\\", this.#boundKeyDown);\\n    }\\n  }\\n\\n  \u002F**\\n   * Show the popup.\\n   *\u002F\\n  #show() {\\n    if (!this.#popup) {\\n      this.render();\\n    }\\n    if (!this.isVisible) {\\n      this.#setPosition();\\n      this.#container.hidden = false;\\n      this.#container.style.zIndex =\\n        parseInt(this.#container.style.zIndex) + 1000;\\n    } else if (this.#pinned) {\\n      this.#container.classList.add(\\\"focused\\\");\\n    }\\n  }\\n\\n  \u002F**\\n   * Hide the popup.\\n   *\u002F\\n  #hide() {\\n    this.#container.classList.remove(\\\"focused\\\");\\n    if (this.#pinned || !this.isVisible) {\\n      return;\\n    }\\n    this.#container.hidden = true;\\n    this.#container.style.zIndex =\\n      parseInt(this.#container.style.zIndex) - 1000;\\n  }\\n\\n  forceHide() {\\n    this.#wasVisible = this.isVisible;\\n    if (!this.#wasVisible) {\\n      return;\\n    }\\n    this.#container.hidden = true;\\n  }\\n\\n  maybeShow() {\\n    if (!this.#wasVisible) {\\n      return;\\n    }\\n    if (!this.#popup) {\\n      this.#show();\\n    }\\n    this.#wasVisible = false;\\n    this.#container.hidden = false;\\n  }\\n\\n  get isVisible() {\\n    return this.#container.hidden === false;\\n  }\\n}\\n\\nclass FreeTextAnnotationElement extends AnnotationElement {\\n  constructor(parameters) {\\n    super(parameters, { isRenderable: true, ignoreBorder: true });\\n    this.textContent = parameters.data.textContent;\\n    this.textPosition = parameters.data.textPosition;\\n    this.annotationEditorType = AnnotationEditorType.FREETEXT;\\n  }\\n\\n  render() {\\n    this.container.classList.add(\\\"freeTextAnnotation\\\");\\n\\n    if (this.textContent) {\\n      const content = document.createElement(\\\"div\\\");\\n      content.classList.add(\\\"annotationTextContent\\\");\\n      content.setAttribute(\\\"role\\\", \\\"comment\\\");\\n      for (const line of this.textContent) {\\n        const lineSpan = document.createElement(\\\"span\\\");\\n        lineSpan.textContent = line;\\n        content.append(lineSpan);\\n      }\\n      this.container.append(content);\\n    }\\n\\n    if (!this.data.popupRef && this.hasPopupData) {\\n      this._createPopup();\\n    }\\n\\n    this._editOnDoubleClick();\\n\\n    return this.container;\\n  }\\n\\n  get _isEditable() {\\n    return this.data.hasOwnCanvas;\\n  }\\n}\\n\\nclass LineAnnotationElement extends AnnotationElement {\\n  #line = null;\\n\\n  constructor(parameters) {\\n    super(parameters, { isRenderable: true, ignoreBorder: true });\\n  }\\n\\n  render() {\\n    this.container.classList.add(\\\"lineAnnotation\\\");\\n\\n    \u002F\u002F Create an invisible line with the same starting and ending coordinates\\n    \u002F\u002F that acts as the trigger for the popup. Only the line itself should\\n    \u002F\u002F trigger the popup, not the entire container.\\n    const data = this.data;\\n    const { width, height } = getRectDims(data.rect);\\n    const svg = this.svgFactory.create(\\n      width,\\n      height,\\n      \u002F* skipDimensions = *\u002F true\\n    );\\n\\n    \u002F\u002F PDF coordinates are calculated from a bottom left origin, so transform\\n    \u002F\u002F the line coordinates to a top left origin for the SVG element.\\n    const line = (this.#line = this.svgFactory.createElement(\\\"svg:line\\\"));\\n    line.setAttribute(\\\"x1\\\", data.rect[2] - data.lineCoordinates[0]);\\n    line.setAttribute(\\\"y1\\\", data.rect[3] - data.lineCoordinates[1]);\\n    line.setAttribute(\\\"x2\\\", data.rect[2] - data.lineCoordinates[2]);\\n    line.setAttribute(\\\"y2\\\", data.rect[3] - data.lineCoordinates[3]);\\n    \u002F\u002F Ensure that the 'stroke-width' is always non-zero, since otherwise it\\n    \u002F\u002F won't be possible to open\u002Fclose the popup (note e.g. issue 11122).\\n    line.setAttribute(\\\"stroke-width\\\", data.borderStyle.width || 1);\\n    line.setAttribute(\\\"stroke\\\", \\\"transparent\\\");\\n    line.setAttribute(\\\"fill\\\", \\\"transparent\\\");\\n\\n    svg.append(line);\\n    this.container.append(svg);\\n\\n    \u002F\u002F Create the popup ourselves so that we can bind it to the line instead\\n    \u002F\u002F of to the entire container (which is the default).\\n    if (!data.popupRef && this.hasPopupData) {\\n      this._createPopup();\\n    }\\n\\n    return this.container;\\n  }\\n\\n  getElementsToTriggerPopup() {\\n    return this.#line;\\n  }\\n\\n  addHighlightArea() {\\n    this.container.classList.add(\\\"highlightArea\\\");\\n  }\\n}\\n\\nclass SquareAnnotationElement extends AnnotationElement {\\n  #square = null;\\n\\n  constructor(parameters) {\\n    super(parameters, { isRenderable: true, ignoreBorder: true });\\n  }\\n\\n  render() {\\n    this.container.classList.add(\\\"squareAnnotation\\\");\\n\\n    \u002F\u002F Create an invisible square with the same rectangle that acts as the\\n    \u002F\u002F trigger for the popup. Only the square itself should trigger the\\n    \u002F\u002F popup, not the entire container.\\n    const data = this.data;\\n    const { width, height } = getRectDims(data.rect);\\n    const svg = this.svgFactory.create(\\n      width,\\n      height,\\n      \u002F* skipDimensions = *\u002F true\\n    );\\n\\n    \u002F\u002F The browser draws half of the borders inside the square and half of\\n    \u002F\u002F the borders outside the square by default. This behavior cannot be\\n    \u002F\u002F changed programmatically, so correct for that here.\\n    const borderWidth = data.borderStyle.width;\\n    const square = (this.#square = this.svgFactory.createElement(\\\"svg:rect\\\"));\\n    square.setAttribute(\\\"x\\\", borderWidth \u002F 2);\\n    square.setAttribute(\\\"y\\\", borderWidth \u002F 2);\\n    square.setAttribute(\\\"width\\\", width - borderWidth);\\n    square.setAttribute(\\\"height\\\", height - borderWidth);\\n    \u002F\u002F Ensure that the 'stroke-width' is always non-zero, since otherwise it\\n    \u002F\u002F won't be possible to open\u002Fclose the popup (note e.g. issue 11122).\\n    square.setAttribute(\\\"stroke-width\\\", borderWidth || 1);\\n    square.setAttribute(\\\"stroke\\\", \\\"transparent\\\");\\n    square.setAttribute(\\\"fill\\\", \\\"transparent\\\");\\n\\n    svg.append(square);\\n    this.container.append(svg);\\n\\n    \u002F\u002F Create the popup ourselves so that we can bind it to the square instead\\n    \u002F\u002F of to the entire container (which is the default).\\n    if (!data.popupRef && this.hasPopupData) {\\n      this._createPopup();\\n    }\\n\\n    return this.container;\\n  }\\n\\n  getElementsToTriggerPopup() {\\n    return this.#square;\\n  }\\n\\n  addHighlightArea() {\\n    this.container.classList.add(\\\"highlightArea\\\");\\n  }\\n}\\n\\nclass CircleAnnotationElement extends AnnotationElement {\\n  #circle = null;\\n\\n  constructor(parameters) {\\n    super(parameters, { isRenderable: true, ignoreBorder: true });\\n  }\\n\\n  render() {\\n    this.container.classList.add(\\\"circleAnnotation\\\");\\n\\n    \u002F\u002F Create an invisible circle with the same ellipse that acts as the\\n    \u002F\u002F trigger for the popup. Only the circle itself should trigger the\\n    \u002F\u002F popup, not the entire container.\\n    const data = this.data;\\n    const { width, height } = getRectDims(data.rect);\\n    const svg = this.svgFactory.create(\\n      width,\\n      height,\\n      \u002F* skipDimensions = *\u002F true\\n    );\\n\\n    \u002F\u002F The browser draws half of the borders inside the circle and half of\\n    \u002F\u002F the borders outside the circle by default. This behavior cannot be\\n    \u002F\u002F changed programmatically, so correct for that here.\\n    const borderWidth = data.borderStyle.width;\\n    const circle = (this.#circle =\\n      this.svgFactory.createElement(\\\"svg:ellipse\\\"));\\n    circle.setAttribute(\\\"cx\\\", width \u002F 2);\\n    circle.setAttribute(\\\"cy\\\", height \u002F 2);\\n    circle.setAttribute(\\\"rx\\\", width \u002F 2 - borderWidth \u002F 2);\\n    circle.setAttribute(\\\"ry\\\", height \u002F 2 - borderWidth \u002F 2);\\n    \u002F\u002F Ensure that the 'stroke-width' is always non-zero, since otherwise it\\n    \u002F\u002F won't be possible to open\u002Fclose the popup (note e.g. issue 11122).\\n    circle.setAttribute(\\\"stroke-width\\\", borderWidth || 1);\\n    circle.setAttribute(\\\"stroke\\\", \\\"transparent\\\");\\n    circle.setAttribute(\\\"fill\\\", \\\"transparent\\\");\\n\\n    svg.append(circle);\\n    this.container.append(svg);\\n\\n    \u002F\u002F Create the popup ourselves so that we can bind it to the circle instead\\n    \u002F\u002F of to the entire container (which is the default).\\n    if (!data.popupRef && this.hasPopupData) {\\n      this._createPopup();\\n    }\\n\\n    return this.container;\\n  }\\n\\n  getElementsToTriggerPopup() {\\n    return this.#circle;\\n  }\\n\\n  addHighlightArea() {\\n    this.container.classList.add(\\\"highlightArea\\\");\\n  }\\n}\\n\\nclass PolylineAnnotationElement extends AnnotationElement {\\n  #polyline = null;\\n\\n  constructor(parameters) {\\n    super(parameters, { isRenderable: true, ignoreBorder: true });\\n\\n    this.containerClassName = \\\"polylineAnnotation\\\";\\n    this.svgElementName = \\\"svg:polyline\\\";\\n  }\\n\\n  render() {\\n    this.container.classList.add(this.containerClassName);\\n\\n    \u002F\u002F Create an invisible polyline with the same points that acts as the\\n    \u002F\u002F trigger for the popup. Only the polyline itself should trigger the\\n    \u002F\u002F popup, not the entire container.\\n    const data = this.data;\\n    const { width, height } = getRectDims(data.rect);\\n    const svg = this.svgFactory.create(\\n      width,\\n      height,\\n      \u002F* skipDimensions = *\u002F true\\n    );\\n\\n    \u002F\u002F Convert the vertices array to a single points string that the SVG\\n    \u002F\u002F polyline element expects (\\\"x1,y1 x2,y2 ...\\\"). PDF coordinates are\\n    \u002F\u002F calculated from a bottom left origin, so transform the polyline\\n    \u002F\u002F coordinates to a top left origin for the SVG element.\\n    let points = [];\\n    for (const coordinate of data.vertices) {\\n      const x = coordinate.x - data.rect[0];\\n      const y = data.rect[3] - coordinate.y;\\n      points.push(x + \\\",\\\" + y);\\n    }\\n    points = points.join(\\\" \\\");\\n\\n    const polyline = (this.#polyline = this.svgFactory.createElement(\\n      this.svgElementName\\n    ));\\n    polyline.setAttribute(\\\"points\\\", points);\\n    \u002F\u002F Ensure that the 'stroke-width' is always non-zero, since otherwise it\\n    \u002F\u002F won't be possible to open\u002Fclose the popup (note e.g. issue 11122).\\n    polyline.setAttribute(\\\"stroke-width\\\", data.borderStyle.width || 1);\\n    polyline.setAttribute(\\\"stroke\\\", \\\"transparent\\\");\\n    polyline.setAttribute(\\\"fill\\\", \\\"transparent\\\");\\n\\n    svg.append(polyline);\\n    this.container.append(svg);\\n\\n    \u002F\u002F Create the popup ourselves so that we can bind it to the polyline\\n    \u002F\u002F instead of to the entire container (which is the default).\\n    if (!data.popupRef && this.hasPopupData) {\\n      this._createPopup();\\n    }\\n\\n    return this.container;\\n  }\\n\\n  getElementsToTriggerPopup() {\\n    return this.#polyline;\\n  }\\n\\n  addHighlightArea() {\\n    this.container.classList.add(\\\"highlightArea\\\");\\n  }\\n}\\n\\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\\n  constructor(parameters) {\\n    \u002F\u002F Polygons are specific forms of polylines, so reuse their logic.\\n    super(parameters);\\n\\n    this.containerClassName = \\\"polygonAnnotation\\\";\\n    this.svgElementName = \\\"svg:polygon\\\";\\n  }\\n}\\n\\nclass CaretAnnotationElement extends AnnotationElement {\\n  constructor(parameters) {\\n    super(parameters, { isRenderable: true, ignoreBorder: true });\\n  }\\n\\n  render() {\\n    this.container.classList.add(\\\"caretAnnotation\\\");\\n\\n    if (!this.data.popupRef && this.hasPopupData) {\\n      this._createPopup();\\n    }\\n    return this.container;\\n  }\\n}\\n\\nclass InkAnnotationElement extends AnnotationElement {\\n  #polylines = [];\\n\\n  constructor(parameters) {\\n    super(parameters, { isRenderable: true, ignoreBorder: true });\\n\\n    this.containerClassName = \\\"inkAnnotation\\\";\\n\\n    \u002F\u002F Use the polyline SVG element since it allows us to use coordinates\\n    \u002F\u002F directly and to draw both straight lines and curves.\\n    this.svgElementName = \\\"svg:polyline\\\";\\n    this.annotationEditorType = AnnotationEditorType.INK;\\n  }\\n\\n  render() {\\n    this.container.classList.add(this.containerClassName);\\n\\n    \u002F\u002F Create an invisible polyline with the same points that acts as the\\n    \u002F\u002F trigger for the popup.\\n    const data = this.data;\\n    const { width, height } = getRectDims(data.rect);\\n    const svg = this.svgFactory.create(\\n      width,\\n      height,\\n      \u002F* skipDimensions = *\u002F true\\n    );\\n\\n    for (const inkList of data.inkLists) {\\n      \u002F\u002F Convert the ink list to a single points string that the SVG\\n      \u002F\u002F polyline element expects (\\\"x1,y1 x2,y2 ...\\\"). PDF coordinates are\\n      \u002F\u002F calculated from a bottom left origin, so transform the polyline\\n      \u002F\u002F coordinates to a top left origin for the SVG element.\\n      let points = [];\\n      for (const coordinate of inkList) {\\n        const x = coordinate.x - data.rect[0];\\n        const y = data.rect[3] - coordinate.y;\\n        points.push(`${x},${y}`);\\n      }\\n      points = points.join(\\\" \\\");\\n\\n      const polyline = this.svgFactory.createElement(this.svgElementName);\\n      this.#polylines.push(polyline);\\n      polyline.setAttribute(\\\"points\\\", points);\\n      \u002F\u002F Ensure that the 'stroke-width' is always non-zero, since otherwise it\\n      \u002F\u002F won't be possible to open\u002Fclose the popup (note e.g. issue 11122).\\n      polyline.setAttribute(\\\"stroke-width\\\", data.borderStyle.width || 1);\\n      polyline.setAttribute(\\\"stroke\\\", \\\"transparent\\\");\\n      polyline.setAttribute(\\\"fill\\\", \\\"transparent\\\");\\n\\n      \u002F\u002F Create the popup ourselves so that we can bind it to the polyline\\n      \u002F\u002F instead of to the entire container (which is the default).\\n      if (!data.popupRef && this.hasPopupData) {\\n        this._createPopup();\\n      }\\n\\n      svg.append(polyline);\\n    }\\n\\n    this.container.append(svg);\\n    return this.container;\\n  }\\n\\n  getElementsToTriggerPopup() {\\n    return this.#polylines;\\n  }\\n\\n  addHighlightArea() {\\n    this.container.classList.add(\\\"highlightArea\\\");\\n  }\\n}\\n\\nclass HighlightAnnotationElement extends AnnotationElement {\\n  constructor(parameters) {\\n    super(parameters, {\\n      isRenderable: true,\\n      ignoreBorder: true,\\n      createQuadrilaterals: true,\\n    });\\n  }\\n\\n  render() {\\n    if (!this.data.popupRef && this.hasPopupData) {\\n      this._createPopup();\\n    }\\n\\n    this.container.classList.add(\\\"highlightAnnotation\\\");\\n    return this.container;\\n  }\\n}\\n\\nclass UnderlineAnnotationElement extends AnnotationElement {\\n  constructor(parameters) {\\n    super(parameters, {\\n      isRenderable: true,\\n      ignoreBorder: true,\\n      createQuadrilaterals: true,\\n    });\\n  }\\n\\n  render() {\\n    if (!this.data.popupRef && this.hasPopupData) {\\n      this._createPopup();\\n    }\\n\\n    this.container.classList.add(\\\"underlineAnnotation\\\");\\n    return this.container;\\n  }\\n}\\n\\nclass SquigglyAnnotationElement extends AnnotationElement {\\n  constructor(parameters) {\\n    super(parameters, {\\n      isRenderable: true,\\n      ignoreBorder: true,\\n      createQuadrilaterals: true,\\n    });\\n  }\\n\\n  render() {\\n    if (!this.data.popupRef && this.hasPopupData) {\\n      this._createPopup();\\n    }\\n\\n    this.container.classList.add(\\\"squigglyAnnotation\\\");\\n    return this.container;\\n  }\\n}\\n\\nclass StrikeOutAnnotationElement extends AnnotationElement {\\n  constructor(parameters) {\\n    super(parameters, {\\n      isRenderable: true,\\n      ignoreBorder: true,\\n      createQuadrilaterals: true,\\n    });\\n  }\\n\\n  render() {\\n    if (!this.data.popupRef && this.hasPopupData) {\\n      this._createPopup();\\n    }\\n\\n    this.container.classList.add(\\\"strikeoutAnnotation\\\");\\n    return this.container;\\n  }\\n}\\n\\nclass StampAnnotationElement extends AnnotationElement {\\n  constructor(parameters) {\\n    super(parameters, { isRenderable: true, ignoreBorder: true });\\n  }\\n\\n  render() {\\n    this.container.classList.add(\\\"stampAnnotation\\\");\\n\\n    if (!this.data.popupRef && this.hasPopupData) {\\n      this._createPopup();\\n    }\\n    return this.container;\\n  }\\n}\\n\\nclass FileAttachmentAnnotationElement extends AnnotationElement {\\n  #trigger = null;\\n\\n  constructor(parameters) {\\n    super(parameters, { isRenderable: true });\\n\\n    const { file } = this.data;\\n    this.filename = file.filename;\\n    this.content = file.content;\\n\\n    this.linkService.eventBus?.dispatch(\\\"fileattachmentannotation\\\", {\\n      source: this,\\n      ...file,\\n    });\\n  }\\n\\n  render() {\\n    this.container.classList.add(\\\"fileAttachmentAnnotation\\\");\\n\\n    const { container, data } = this;\\n    let trigger;\\n    if (data.hasAppearance || data.fillAlpha === 0) {\\n      trigger = document.createElement(\\\"div\\\");\\n    } else {\\n      \u002F\u002F Unfortunately it seems that it's not clearly specified exactly what\\n      \u002F\u002F names are actually valid, since Table 184 contains:\\n      \u002F\u002F   Conforming readers shall provide predefined icon appearances for at\\n      \u002F\u002F   least the following standard names: GraphPushPin, PaperclipTag.\\n      \u002F\u002F   Additional names may be supported as well. Default value: PushPin.\\n      trigger = document.createElement(\\\"img\\\");\\n      trigger.src = `${this.imageResourcesPath}annotation-${\\n        \u002Fpaperclip\u002Fi.test(data.name) ? \\\"paperclip\\\" : \\\"pushpin\\\"\\n      }.svg`;\\n\\n      if (data.fillAlpha && data.fillAlpha \u003C 1) {\\n        trigger.style = `filter: opacity(${Math.round(\\n          data.fillAlpha * 100\\n        )}%);`;\\n\\n        if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING\\\")) {\\n          this.container.classList.add(\\\"hasFillAlpha\\\");\\n        }\\n      }\\n    }\\n    trigger.addEventListener(\\\"dblclick\\\", this.#download.bind(this));\\n    this.#trigger = trigger;\\n\\n    const { isMac } = FeatureTest.platform;\\n    container.addEventListener(\\\"keydown\\\", evt => {\\n      if (evt.key === \\\"Enter\\\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\\n        this.#download();\\n      }\\n    });\\n\\n    if (!data.popupRef && this.hasPopupData) {\\n      this._createPopup();\\n    } else {\\n      trigger.classList.add(\\\"popupTriggerArea\\\");\\n    }\\n\\n    container.append(trigger);\\n    return container;\\n  }\\n\\n  getElementsToTriggerPopup() {\\n    return this.#trigger;\\n  }\\n\\n  addHighlightArea() {\\n    this.container.classList.add(\\\"highlightArea\\\");\\n  }\\n\\n  \u002F**\\n   * Download the file attachment associated with this annotation.\\n   *\u002F\\n  #download() {\\n    this.downloadManager?.openOrDownloadData(this.content, this.filename);\\n  }\\n}\\n\\n\u002F**\\n * @typedef {Object} AnnotationLayerParameters\\n * @property {PageViewport} viewport\\n * @property {HTMLDivElement} div\\n * @property {Array} annotations\\n * @property {PDFPageProxy} page\\n * @property {IPDFLinkService} linkService\\n * @property {IDownloadManager} [downloadManager]\\n * @property {AnnotationStorage} [annotationStorage]\\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\\n *   for annotation icons. Include trailing slash.\\n * @property {boolean} renderForms\\n * @property {boolean} [enableScripting] - Enable embedded script execution.\\n * @property {boolean} [hasJSActions] - Some fields have JS actions.\\n *   The default value is `false`.\\n * @property {Object\u003Cstring, Array\u003CObject>> | null} [fieldObjects]\\n * @property {Map\u003Cstring, HTMLCanvasElement>} [annotationCanvasMap]\\n * @property {TextAccessibilityManager} [accessibilityManager]\\n * @property {AnnotationEditorUIManager} [annotationEditorUIManager]\\n *\u002F\\n\\n\u002F**\\n * Manage the layer containing all the annotations.\\n *\u002F\\nclass AnnotationLayer {\\n  #accessibilityManager = null;\\n\\n  #annotationCanvasMap = null;\\n\\n  #editableAnnotations = new Map();\\n\\n  constructor({\\n    div,\\n    accessibilityManager,\\n    annotationCanvasMap,\\n    annotationEditorUIManager,\\n    page,\\n    viewport,\\n  }) {\\n    this.div = div;\\n    this.#accessibilityManager = accessibilityManager;\\n    this.#annotationCanvasMap = annotationCanvasMap;\\n    this.page = page;\\n    this.viewport = viewport;\\n    this.zIndex = 0;\\n    this._annotationEditorUIManager = annotationEditorUIManager;\\n\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING\\\")) {\\n      \u002F\u002F For testing purposes.\\n      Object.defineProperty(this, \\\"showPopups\\\", {\\n        value: async () => {\\n          for (const show of this.popupShow) {\\n            await show();\\n          }\\n        },\\n      });\\n      this.popupShow = [];\\n    }\\n  }\\n\\n  #appendElement(element, id) {\\n    const contentElement = element.firstChild || element;\\n    contentElement.id = `${AnnotationPrefix}${id}`;\\n\\n    this.div.append(element);\\n    this.#accessibilityManager?.moveElementInDOM(\\n      this.div,\\n      element,\\n      contentElement,\\n      \u002F* isRemovable = *\u002F false\\n    );\\n  }\\n\\n  \u002F**\\n   * Render a new annotation layer with all annotation elements.\\n   *\\n   * @param {AnnotationLayerParameters} params\\n   * @memberof AnnotationLayer\\n   *\u002F\\n  async render(params) {\\n    const { annotations } = params;\\n    const layer = this.div;\\n    setLayerDimensions(layer, this.viewport);\\n\\n    const popupToElements = new Map();\\n    const elementParams = {\\n      data: null,\\n      layer,\\n      linkService: params.linkService,\\n      downloadManager: params.downloadManager,\\n      imageResourcesPath: params.imageResourcesPath || \\\"\\\",\\n      renderForms: params.renderForms !== false,\\n      svgFactory: new DOMSVGFactory(),\\n      annotationStorage: params.annotationStorage || new AnnotationStorage(),\\n      enableScripting: params.enableScripting === true,\\n      hasJSActions: params.hasJSActions,\\n      fieldObjects: params.fieldObjects,\\n      parent: this,\\n      elements: null,\\n    };\\n\\n    for (const data of annotations) {\\n      if (data.noHTML) {\\n        continue;\\n      }\\n      const isPopupAnnotation = data.annotationType === AnnotationType.POPUP;\\n      if (!isPopupAnnotation) {\\n        const { width, height } = getRectDims(data.rect);\\n        if (width \u003C= 0 || height \u003C= 0) {\\n          continue; \u002F\u002F Ignore empty annotations.\\n        }\\n      } else {\\n        const elements = popupToElements.get(data.id);\\n        if (!elements) {\\n          \u002F\u002F Ignore popup annotations without a corresponding annotation.\\n          continue;\\n        }\\n        elementParams.elements = elements;\\n      }\\n      elementParams.data = data;\\n      const element = AnnotationElementFactory.create(elementParams);\\n\\n      if (!element.isRenderable) {\\n        continue;\\n      }\\n\\n      if (!isPopupAnnotation && data.popupRef) {\\n        const elements = popupToElements.get(data.popupRef);\\n        if (!elements) {\\n          popupToElements.set(data.popupRef, [element]);\\n        } else {\\n          elements.push(element);\\n        }\\n      }\\n\\n      const rendered = element.render();\\n      if (data.hidden) {\\n        rendered.style.visibility = \\\"hidden\\\";\\n      }\\n      this.#appendElement(rendered, data.id);\\n\\n      if (element.annotationEditorType > 0) {\\n        this.#editableAnnotations.set(element.data.id, element);\\n        this._annotationEditorUIManager?.renderAnnotationElement(element);\\n      }\\n    }\\n\\n    this.#setAnnotationCanvasMap();\\n  }\\n\\n  \u002F**\\n   * Update the annotation elements on existing annotation layer.\\n   *\\n   * @param {AnnotationLayerParameters} viewport\\n   * @memberof AnnotationLayer\\n   *\u002F\\n  update({ viewport }) {\\n    const layer = this.div;\\n    this.viewport = viewport;\\n    setLayerDimensions(layer, { rotation: viewport.rotation });\\n\\n    this.#setAnnotationCanvasMap();\\n    layer.hidden = false;\\n  }\\n\\n  #setAnnotationCanvasMap() {\\n    if (!this.#annotationCanvasMap) {\\n      return;\\n    }\\n    const layer = this.div;\\n    for (const [id, canvas] of this.#annotationCanvasMap) {\\n      const element = layer.querySelector(`[data-annotation-id=\\\"${id}\\\"]`);\\n      if (!element) {\\n        continue;\\n      }\\n\\n      canvas.className = \\\"annotationContent\\\";\\n      const { firstChild } = element;\\n      if (!firstChild) {\\n        element.append(canvas);\\n      } else if (firstChild.nodeName === \\\"CANVAS\\\") {\\n        firstChild.replaceWith(canvas);\\n      } else if (!firstChild.classList.contains(\\\"annotationContent\\\")) {\\n        firstChild.before(canvas);\\n      } else {\\n        firstChild.after(canvas);\\n      }\\n    }\\n    this.#annotationCanvasMap.clear();\\n  }\\n\\n  getEditableAnnotations() {\\n    return Array.from(this.#editableAnnotations.values());\\n  }\\n\\n  getEditableAnnotation(id) {\\n    return this.#editableAnnotations.get(id);\\n  }\\n}\\n\\nexport {\\n  AnnotationLayer,\\n  FreeTextAnnotationElement,\\n  InkAnnotationElement,\\n  StampAnnotationElement,\\n};\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fannotation_editor_layer.js\\\").AnnotationEditorLayer} AnnotationEditorLayer *\u002F\\n\\nimport {\\n  AnnotationEditorParamsType,\\n  AnnotationEditorType,\\n  assert,\\n  LINE_FACTOR,\\n  shadow,\\n  Util,\\n} from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  AnnotationEditorUIManager,\\n  bindEvents,\\n  KeyboardManager,\\n} from \\\".\u002Ftools.js\\\";\\nimport { AnnotationEditor } from \\\".\u002Feditor.js\\\";\\nimport { FreeTextAnnotationElement } from \\\"..\u002Fannotation_layer.js\\\";\\n\\nconst EOL_PATTERN = \u002F\\\\r\\\\n?|\\\\n\u002Fg;\\n\\n\u002F**\\n * Basic text editor in order to create a FreeTex annotation.\\n *\u002F\\nclass FreeTextEditor extends AnnotationEditor {\\n  #boundEditorDivBlur = this.editorDivBlur.bind(this);\\n\\n  #boundEditorDivFocus = this.editorDivFocus.bind(this);\\n\\n  #boundEditorDivInput = this.editorDivInput.bind(this);\\n\\n  #boundEditorDivKeydown = this.editorDivKeydown.bind(this);\\n\\n  #boundEditorDivPaste = this.editorDivPaste.bind(this);\\n\\n  #color;\\n\\n  #content = \\\"\\\";\\n\\n  #editorDivId = `${this.id}-editor`;\\n\\n  #fontSize;\\n\\n  #initialData = null;\\n\\n  static _freeTextDefaultContent = \\\"\\\";\\n\\n  static _internalPadding = 0;\\n\\n  static _defaultColor = null;\\n\\n  static _defaultFontSize = 10;\\n\\n  static get _keyboardManager() {\\n    const proto = FreeTextEditor.prototype;\\n\\n    const arrowChecker = self => self.isEmpty();\\n\\n    const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\\n    const big = AnnotationEditorUIManager.TRANSLATE_BIG;\\n\\n    return shadow(\\n      this,\\n      \\\"_keyboardManager\\\",\\n      new KeyboardManager([\\n        [\\n          \u002F\u002F Commit the text in case the user use ctrl+s to save the document.\\n          \u002F\u002F The event must bubble in order to be caught by the viewer.\\n          \u002F\u002F See bug 1831574.\\n          [\\\"ctrl+s\\\", \\\"mac+meta+s\\\", \\\"ctrl+p\\\", \\\"mac+meta+p\\\"],\\n          proto.commitOrRemove,\\n          { bubbles: true },\\n        ],\\n        [\\n          [\\\"ctrl+Enter\\\", \\\"mac+meta+Enter\\\", \\\"Escape\\\", \\\"mac+Escape\\\"],\\n          proto.commitOrRemove,\\n        ],\\n        [\\n          [\\\"ArrowLeft\\\", \\\"mac+ArrowLeft\\\"],\\n          proto._translateEmpty,\\n          { args: [-small, 0], checker: arrowChecker },\\n        ],\\n        [\\n          [\\\"ctrl+ArrowLeft\\\", \\\"mac+shift+ArrowLeft\\\"],\\n          proto._translateEmpty,\\n          { args: [-big, 0], checker: arrowChecker },\\n        ],\\n        [\\n          [\\\"ArrowRight\\\", \\\"mac+ArrowRight\\\"],\\n          proto._translateEmpty,\\n          { args: [small, 0], checker: arrowChecker },\\n        ],\\n        [\\n          [\\\"ctrl+ArrowRight\\\", \\\"mac+shift+ArrowRight\\\"],\\n          proto._translateEmpty,\\n          { args: [big, 0], checker: arrowChecker },\\n        ],\\n        [\\n          [\\\"ArrowUp\\\", \\\"mac+ArrowUp\\\"],\\n          proto._translateEmpty,\\n          { args: [0, -small], checker: arrowChecker },\\n        ],\\n        [\\n          [\\\"ctrl+ArrowUp\\\", \\\"mac+shift+ArrowUp\\\"],\\n          proto._translateEmpty,\\n          { args: [0, -big], checker: arrowChecker },\\n        ],\\n        [\\n          [\\\"ArrowDown\\\", \\\"mac+ArrowDown\\\"],\\n          proto._translateEmpty,\\n          { args: [0, small], checker: arrowChecker },\\n        ],\\n        [\\n          [\\\"ctrl+ArrowDown\\\", \\\"mac+shift+ArrowDown\\\"],\\n          proto._translateEmpty,\\n          { args: [0, big], checker: arrowChecker },\\n        ],\\n      ])\\n    );\\n  }\\n\\n  static _type = \\\"freetext\\\";\\n\\n  static _editorType = AnnotationEditorType.FREETEXT;\\n\\n  constructor(params) {\\n    super({ ...params, name: \\\"freeTextEditor\\\" });\\n    this.#color =\\n      params.color ||\\n      FreeTextEditor._defaultColor ||\\n      AnnotationEditor._defaultLineColor;\\n    this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static initialize(l10n, uiManager) {\\n    AnnotationEditor.initialize(l10n, uiManager, {\\n      strings: [\\\"pdfjs-free-text-default-content\\\"],\\n    });\\n    const style = getComputedStyle(document.documentElement);\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      const lineHeight = parseFloat(\\n        style.getPropertyValue(\\\"--freetext-line-height\\\")\\n      );\\n      assert(\\n        lineHeight === LINE_FACTOR,\\n        \\\"Update the CSS variable to agree with the constant.\\\"\\n      );\\n    }\\n\\n    this._internalPadding = parseFloat(\\n      style.getPropertyValue(\\\"--freetext-padding\\\")\\n    );\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static updateDefaultParams(type, value) {\\n    switch (type) {\\n      case AnnotationEditorParamsType.FREETEXT_SIZE:\\n        FreeTextEditor._defaultFontSize = value;\\n        break;\\n      case AnnotationEditorParamsType.FREETEXT_COLOR:\\n        FreeTextEditor._defaultColor = value;\\n        break;\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  updateParams(type, value) {\\n    switch (type) {\\n      case AnnotationEditorParamsType.FREETEXT_SIZE:\\n        this.#updateFontSize(value);\\n        break;\\n      case AnnotationEditorParamsType.FREETEXT_COLOR:\\n        this.#updateColor(value);\\n        break;\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static get defaultPropertiesToUpdate() {\\n    return [\\n      [\\n        AnnotationEditorParamsType.FREETEXT_SIZE,\\n        FreeTextEditor._defaultFontSize,\\n      ],\\n      [\\n        AnnotationEditorParamsType.FREETEXT_COLOR,\\n        FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor,\\n      ],\\n    ];\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  get propertiesToUpdate() {\\n    return [\\n      [AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize],\\n      [AnnotationEditorParamsType.FREETEXT_COLOR, this.#color],\\n    ];\\n  }\\n\\n  \u002F**\\n   * Update the font size and make this action as undoable.\\n   * @param {number} fontSize\\n   *\u002F\\n  #updateFontSize(fontSize) {\\n    const setFontsize = size => {\\n      this.editorDiv.style.fontSize = `calc(${size}px * var(--scale-factor))`;\\n      this.translate(0, -(size - this.#fontSize) * this.parentScale);\\n      this.#fontSize = size;\\n      this.#setEditorDimensions();\\n    };\\n    const savedFontsize = this.#fontSize;\\n    this.addCommands({\\n      cmd: setFontsize.bind(this, fontSize),\\n      undo: setFontsize.bind(this, savedFontsize),\\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\\n      mustExec: true,\\n      type: AnnotationEditorParamsType.FREETEXT_SIZE,\\n      overwriteIfSameType: true,\\n      keepUndo: true,\\n    });\\n  }\\n\\n  \u002F**\\n   * Update the color and make this action undoable.\\n   * @param {string} color\\n   *\u002F\\n  #updateColor(color) {\\n    const setColor = col => {\\n      this.#color = this.editorDiv.style.color = col;\\n    };\\n    const savedColor = this.#color;\\n    this.addCommands({\\n      cmd: setColor.bind(this, color),\\n      undo: setColor.bind(this, savedColor),\\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\\n      mustExec: true,\\n      type: AnnotationEditorParamsType.FREETEXT_COLOR,\\n      overwriteIfSameType: true,\\n      keepUndo: true,\\n    });\\n  }\\n\\n  \u002F**\\n   * Helper to translate the editor with the keyboard when it's empty.\\n   * @param {number} x in page units.\\n   * @param {number} y in page units.\\n   *\u002F\\n  _translateEmpty(x, y) {\\n    this._uiManager.translateSelectedEditors(x, y, \u002F* noCommit = *\u002F true);\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  getInitialTranslation() {\\n    \u002F\u002F The start of the base line is where the user clicked.\\n    const scale = this.parentScale;\\n    return [\\n      -FreeTextEditor._internalPadding * scale,\\n      -(FreeTextEditor._internalPadding + this.#fontSize) * scale,\\n    ];\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  rebuild() {\\n    if (!this.parent) {\\n      return;\\n    }\\n    super.rebuild();\\n    if (this.div === null) {\\n      return;\\n    }\\n\\n    if (!this.isAttachedToDOM) {\\n      \u002F\u002F At some point this editor was removed and we're rebuilting it,\\n      \u002F\u002F hence we must add it to its parent.\\n      this.parent.add(this);\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  enableEditMode() {\\n    if (this.isInEditMode()) {\\n      return;\\n    }\\n\\n    this.parent.setEditingState(false);\\n    this.parent.updateToolbar(AnnotationEditorType.FREETEXT);\\n    super.enableEditMode();\\n    this.overlayDiv.classList.remove(\\\"enabled\\\");\\n    this.editorDiv.contentEditable = true;\\n    this._isDraggable = false;\\n    this.div.removeAttribute(\\\"aria-activedescendant\\\");\\n    this.editorDiv.addEventListener(\\\"keydown\\\", this.#boundEditorDivKeydown);\\n    this.editorDiv.addEventListener(\\\"focus\\\", this.#boundEditorDivFocus);\\n    this.editorDiv.addEventListener(\\\"blur\\\", this.#boundEditorDivBlur);\\n    this.editorDiv.addEventListener(\\\"input\\\", this.#boundEditorDivInput);\\n    this.editorDiv.addEventListener(\\\"paste\\\", this.#boundEditorDivPaste);\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  disableEditMode() {\\n    if (!this.isInEditMode()) {\\n      return;\\n    }\\n\\n    this.parent.setEditingState(true);\\n    super.disableEditMode();\\n    this.overlayDiv.classList.add(\\\"enabled\\\");\\n    this.editorDiv.contentEditable = false;\\n    this.div.setAttribute(\\\"aria-activedescendant\\\", this.#editorDivId);\\n    this._isDraggable = true;\\n    this.editorDiv.removeEventListener(\\\"keydown\\\", this.#boundEditorDivKeydown);\\n    this.editorDiv.removeEventListener(\\\"focus\\\", this.#boundEditorDivFocus);\\n    this.editorDiv.removeEventListener(\\\"blur\\\", this.#boundEditorDivBlur);\\n    this.editorDiv.removeEventListener(\\\"input\\\", this.#boundEditorDivInput);\\n    this.editorDiv.removeEventListener(\\\"paste\\\", this.#boundEditorDivPaste);\\n\\n    \u002F\u002F On Chrome, the focus is given to \u003Cbody> when contentEditable is set to\\n    \u002F\u002F false, hence we focus the div.\\n    this.div.focus({\\n      preventScroll: true \u002F* See issue #15744 *\u002F,\\n    });\\n\\n    \u002F\u002F In case the blur callback hasn't been called.\\n    this.isEditing = false;\\n    this.parent.div.classList.add(\\\"freetextEditing\\\");\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  focusin(event) {\\n    if (!this._focusEventsAllowed) {\\n      return;\\n    }\\n    super.focusin(event);\\n    if (event.target !== this.editorDiv) {\\n      this.editorDiv.focus();\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  onceAdded() {\\n    if (this.width) {\\n      \u002F\u002F The editor was created in using ctrl+c.\\n      return;\\n    }\\n    this.enableEditMode();\\n    this.editorDiv.focus();\\n    if (this._initialOptions?.isCentered) {\\n      this.center();\\n    }\\n    this._initialOptions = null;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  isEmpty() {\\n    return !this.editorDiv || this.editorDiv.innerText.trim() === \\\"\\\";\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  remove() {\\n    this.isEditing = false;\\n    if (this.parent) {\\n      this.parent.setEditingState(true);\\n      this.parent.div.classList.add(\\\"freetextEditing\\\");\\n    }\\n    super.remove();\\n  }\\n\\n  \u002F**\\n   * Extract the text from this editor.\\n   * @returns {string}\\n   *\u002F\\n  #extractText() {\\n    \u002F\u002F We don't use innerText because there are some bugs with line breaks.\\n    const buffer = [];\\n    this.editorDiv.normalize();\\n    for (const child of this.editorDiv.childNodes) {\\n      buffer.push(FreeTextEditor.#getNodeContent(child));\\n    }\\n    return buffer.join(\\\"\\\\n\\\");\\n  }\\n\\n  #setEditorDimensions() {\\n    const [parentWidth, parentHeight] = this.parentDimensions;\\n\\n    let rect;\\n    if (this.isAttachedToDOM) {\\n      rect = this.div.getBoundingClientRect();\\n    } else {\\n      \u002F\u002F This editor isn't on screen but we need to get its dimensions, so\\n      \u002F\u002F we just insert it in the DOM, get its bounding box and then remove it.\\n      const { currentLayer, div } = this;\\n      const savedDisplay = div.style.display;\\n      const savedVisibility = div.classList.contains(\\\"hidden\\\");\\n      div.classList.remove(\\\"hidden\\\");\\n      div.style.display = \\\"hidden\\\";\\n      currentLayer.div.append(this.div);\\n      rect = div.getBoundingClientRect();\\n      div.remove();\\n      div.style.display = savedDisplay;\\n      div.classList.toggle(\\\"hidden\\\", savedVisibility);\\n    }\\n\\n    \u002F\u002F The dimensions are relative to the rotation of the page, hence we need to\\n    \u002F\u002F take that into account (see issue #16636).\\n    if (this.rotation % 180 === this.parentRotation % 180) {\\n      this.width = rect.width \u002F parentWidth;\\n      this.height = rect.height \u002F parentHeight;\\n    } else {\\n      this.width = rect.height \u002F parentWidth;\\n      this.height = rect.width \u002F parentHeight;\\n    }\\n    this.fixAndSetPosition();\\n  }\\n\\n  \u002F**\\n   * Commit the content we have in this editor.\\n   * @returns {undefined}\\n   *\u002F\\n  commit() {\\n    if (!this.isInEditMode()) {\\n      return;\\n    }\\n\\n    super.commit();\\n    this.disableEditMode();\\n    const savedText = this.#content;\\n    const newText = (this.#content = this.#extractText().trimEnd());\\n    if (savedText === newText) {\\n      return;\\n    }\\n\\n    const setText = text => {\\n      this.#content = text;\\n      if (!text) {\\n        this.remove();\\n        return;\\n      }\\n      this.#setContent();\\n      this._uiManager.rebuild(this);\\n      this.#setEditorDimensions();\\n    };\\n    this.addCommands({\\n      cmd: () => {\\n        setText(newText);\\n      },\\n      undo: () => {\\n        setText(savedText);\\n      },\\n      mustExec: false,\\n    });\\n    this.#setEditorDimensions();\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  shouldGetKeyboardEvents() {\\n    return this.isInEditMode();\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  enterInEditMode() {\\n    this.enableEditMode();\\n    this.editorDiv.focus();\\n  }\\n\\n  \u002F**\\n   * ondblclick callback.\\n   * @param {MouseEvent} event\\n   *\u002F\\n  dblclick(event) {\\n    this.enterInEditMode();\\n  }\\n\\n  \u002F**\\n   * onkeydown callback.\\n   * @param {KeyboardEvent} event\\n   *\u002F\\n  keydown(event) {\\n    if (event.target === this.div && event.key === \\\"Enter\\\") {\\n      this.enterInEditMode();\\n      \u002F\u002F Avoid to add an unwanted new line.\\n      event.preventDefault();\\n    }\\n  }\\n\\n  editorDivKeydown(event) {\\n    FreeTextEditor._keyboardManager.exec(this, event);\\n  }\\n\\n  editorDivFocus(event) {\\n    this.isEditing = true;\\n  }\\n\\n  editorDivBlur(event) {\\n    this.isEditing = false;\\n  }\\n\\n  editorDivInput(event) {\\n    this.parent.div.classList.toggle(\\\"freetextEditing\\\", this.isEmpty());\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  disableEditing() {\\n    this.editorDiv.setAttribute(\\\"role\\\", \\\"comment\\\");\\n    this.editorDiv.removeAttribute(\\\"aria-multiline\\\");\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  enableEditing() {\\n    this.editorDiv.setAttribute(\\\"role\\\", \\\"textbox\\\");\\n    this.editorDiv.setAttribute(\\\"aria-multiline\\\", true);\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  render() {\\n    if (this.div) {\\n      return this.div;\\n    }\\n\\n    let baseX, baseY;\\n    if (this.width) {\\n      baseX = this.x;\\n      baseY = this.y;\\n    }\\n\\n    super.render();\\n    this.editorDiv = document.createElement(\\\"div\\\");\\n    this.editorDiv.className = \\\"internal\\\";\\n\\n    this.editorDiv.setAttribute(\\\"id\\\", this.#editorDivId);\\n    this.editorDiv.setAttribute(\\\"data-l10n-id\\\", \\\"pdfjs-free-text\\\");\\n    this.enableEditing();\\n\\n    AnnotationEditor._l10nPromise\\n      .get(\\\"pdfjs-free-text-default-content\\\")\\n      .then(msg => this.editorDiv?.setAttribute(\\\"default-content\\\", msg));\\n    this.editorDiv.contentEditable = true;\\n\\n    const { style } = this.editorDiv;\\n    style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\\n    style.color = this.#color;\\n\\n    this.div.append(this.editorDiv);\\n\\n    this.overlayDiv = document.createElement(\\\"div\\\");\\n    this.overlayDiv.classList.add(\\\"overlay\\\", \\\"enabled\\\");\\n    this.div.append(this.overlayDiv);\\n\\n    bindEvents(this, this.div, [\\\"dblclick\\\", \\\"keydown\\\"]);\\n\\n    if (this.width) {\\n      \u002F\u002F This editor was created in using copy (ctrl+c).\\n      const [parentWidth, parentHeight] = this.parentDimensions;\\n      if (this.annotationElementId) {\\n        \u002F\u002F This stuff is hard to test: if something is changed here, please\\n        \u002F\u002F test with the following PDF file:\\n        \u002F\u002F  - freetexts.pdf\\n        \u002F\u002F  - rotated_freetexts.pdf\\n        \u002F\u002F Only small variations between the original annotation and its editor\\n        \u002F\u002F are allowed.\\n\\n        \u002F\u002F position is the position of the first glyph in the annotation\\n        \u002F\u002F and it's relative to its container.\\n        const { position } = this.#initialData;\\n        let [tx, ty] = this.getInitialTranslation();\\n        [tx, ty] = this.pageTranslationToScreen(tx, ty);\\n        const [pageWidth, pageHeight] = this.pageDimensions;\\n        const [pageX, pageY] = this.pageTranslation;\\n        let posX, posY;\\n        switch (this.rotation) {\\n          case 0:\\n            posX = baseX + (position[0] - pageX) \u002F pageWidth;\\n            posY = baseY + this.height - (position[1] - pageY) \u002F pageHeight;\\n            break;\\n          case 90:\\n            posX = baseX + (position[0] - pageX) \u002F pageWidth;\\n            posY = baseY - (position[1] - pageY) \u002F pageHeight;\\n            [tx, ty] = [ty, -tx];\\n            break;\\n          case 180:\\n            posX = baseX - this.width + (position[0] - pageX) \u002F pageWidth;\\n            posY = baseY - (position[1] - pageY) \u002F pageHeight;\\n            [tx, ty] = [-tx, -ty];\\n            break;\\n          case 270:\\n            posX =\\n              baseX +\\n              (position[0] - pageX - this.height * pageHeight) \u002F pageWidth;\\n            posY =\\n              baseY +\\n              (position[1] - pageY - this.width * pageWidth) \u002F pageHeight;\\n            [tx, ty] = [-ty, tx];\\n            break;\\n        }\\n        this.setAt(posX * parentWidth, posY * parentHeight, tx, ty);\\n      } else {\\n        this.setAt(\\n          baseX * parentWidth,\\n          baseY * parentHeight,\\n          this.width * parentWidth,\\n          this.height * parentHeight\\n        );\\n      }\\n\\n      this.#setContent();\\n      this._isDraggable = true;\\n      this.editorDiv.contentEditable = false;\\n    } else {\\n      this._isDraggable = false;\\n      this.editorDiv.contentEditable = true;\\n    }\\n\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING\\\")) {\\n      this.div.setAttribute(\\\"annotation-id\\\", this.annotationElementId);\\n    }\\n\\n    return this.div;\\n  }\\n\\n  static #getNodeContent(node) {\\n    return (\\n      node.nodeType === Node.TEXT_NODE ? node.nodeValue : node.innerText\\n    ).replaceAll(EOL_PATTERN, \\\"\\\");\\n  }\\n\\n  editorDivPaste(event) {\\n    const clipboardData = event.clipboardData || window.clipboardData;\\n    const { types } = clipboardData;\\n    if (types.length === 1 && types[0] === \\\"text\u002Fplain\\\") {\\n      return;\\n    }\\n\\n    event.preventDefault();\\n    const paste = FreeTextEditor.#deserializeContent(\\n      clipboardData.getData(\\\"text\\\") || \\\"\\\"\\n    ).replaceAll(EOL_PATTERN, \\\"\\\\n\\\");\\n    if (!paste) {\\n      return;\\n    }\\n    const selection = window.getSelection();\\n    if (!selection.rangeCount) {\\n      return;\\n    }\\n    this.editorDiv.normalize();\\n    selection.deleteFromDocument();\\n    const range = selection.getRangeAt(0);\\n    if (!paste.includes(\\\"\\\\n\\\")) {\\n      range.insertNode(document.createTextNode(paste));\\n      this.editorDiv.normalize();\\n      selection.collapseToStart();\\n      return;\\n    }\\n\\n    \u002F\u002F Collect the text before and after the caret.\\n    const { startContainer, startOffset } = range;\\n    const bufferBefore = [];\\n    const bufferAfter = [];\\n    if (startContainer.nodeType === Node.TEXT_NODE) {\\n      const parent = startContainer.parentElement;\\n      bufferAfter.push(\\n        startContainer.nodeValue.slice(startOffset).replaceAll(EOL_PATTERN, \\\"\\\")\\n      );\\n      if (parent !== this.editorDiv) {\\n        let buffer = bufferBefore;\\n        for (const child of this.editorDiv.childNodes) {\\n          if (child === parent) {\\n            buffer = bufferAfter;\\n            continue;\\n          }\\n          buffer.push(FreeTextEditor.#getNodeContent(child));\\n        }\\n      }\\n      bufferBefore.push(\\n        startContainer.nodeValue\\n          .slice(0, startOffset)\\n          .replaceAll(EOL_PATTERN, \\\"\\\")\\n      );\\n    } else if (startContainer === this.editorDiv) {\\n      let buffer = bufferBefore;\\n      let i = 0;\\n      for (const child of this.editorDiv.childNodes) {\\n        if (i++ === startOffset) {\\n          buffer = bufferAfter;\\n        }\\n        buffer.push(FreeTextEditor.#getNodeContent(child));\\n      }\\n    }\\n    this.#content = `${bufferBefore.join(\\\"\\\\n\\\")}${paste}${bufferAfter.join(\\\"\\\\n\\\")}`;\\n    this.#setContent();\\n\\n    \u002F\u002F Set the caret at the right position.\\n    const newRange = new Range();\\n    let beforeLength = bufferBefore.reduce((acc, line) => acc + line.length, 0);\\n    for (const { firstChild } of this.editorDiv.childNodes) {\\n      \u002F\u002F Each child is either a div with a text node or a br element.\\n      if (firstChild.nodeType === Node.TEXT_NODE) {\\n        const length = firstChild.nodeValue.length;\\n        if (beforeLength \u003C= length) {\\n          newRange.setStart(firstChild, beforeLength);\\n          newRange.setEnd(firstChild, beforeLength);\\n          break;\\n        }\\n        beforeLength -= length;\\n      }\\n    }\\n    selection.removeAllRanges();\\n    selection.addRange(newRange);\\n  }\\n\\n  #setContent() {\\n    this.editorDiv.replaceChildren();\\n    if (!this.#content) {\\n      return;\\n    }\\n    for (const line of this.#content.split(\\\"\\\\n\\\")) {\\n      const div = document.createElement(\\\"div\\\");\\n      div.append(\\n        line ? document.createTextNode(line) : document.createElement(\\\"br\\\")\\n      );\\n      this.editorDiv.append(div);\\n    }\\n  }\\n\\n  #serializeContent() {\\n    return this.#content.replaceAll(\\\"\\\\xa0\\\", \\\" \\\");\\n  }\\n\\n  static #deserializeContent(content) {\\n    return content.replaceAll(\\\" \\\", \\\"\\\\xa0\\\");\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  get contentDiv() {\\n    return this.editorDiv;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static deserialize(data, parent, uiManager) {\\n    let initialData = null;\\n    if (data instanceof FreeTextAnnotationElement) {\\n      const {\\n        data: {\\n          defaultAppearanceData: { fontSize, fontColor },\\n          rect,\\n          rotation,\\n          id,\\n        },\\n        textContent,\\n        textPosition,\\n        parent: {\\n          page: { pageNumber },\\n        },\\n      } = data;\\n      \u002F\u002F textContent is supposed to be an array of strings containing each line\\n      \u002F\u002F of text. However, it can be null or empty.\\n      if (!textContent || textContent.length === 0) {\\n        \u002F\u002F Empty annotation.\\n        return null;\\n      }\\n      initialData = data = {\\n        annotationType: AnnotationEditorType.FREETEXT,\\n        color: Array.from(fontColor),\\n        fontSize,\\n        value: textContent.join(\\\"\\\\n\\\"),\\n        position: textPosition,\\n        pageIndex: pageNumber - 1,\\n        rect: rect.slice(0),\\n        rotation,\\n        id,\\n        deleted: false,\\n      };\\n    }\\n    const editor = super.deserialize(data, parent, uiManager);\\n    editor.#fontSize = data.fontSize;\\n    editor.#color = Util.makeHexColor(...data.color);\\n    editor.#content = FreeTextEditor.#deserializeContent(data.value);\\n    editor.annotationElementId = data.id || null;\\n    editor.#initialData = initialData;\\n\\n    return editor;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  serialize(isForCopying = false) {\\n    if (this.isEmpty()) {\\n      return null;\\n    }\\n\\n    if (this.deleted) {\\n      return {\\n        pageIndex: this.pageIndex,\\n        id: this.annotationElementId,\\n        deleted: true,\\n      };\\n    }\\n\\n    const padding = FreeTextEditor._internalPadding * this.parentScale;\\n    const rect = this.getRect(padding, padding);\\n    const color = AnnotationEditor._colorManager.convert(\\n      this.isAttachedToDOM\\n        ? getComputedStyle(this.editorDiv).color\\n        : this.#color\\n    );\\n\\n    const serialized = {\\n      annotationType: AnnotationEditorType.FREETEXT,\\n      color,\\n      fontSize: this.#fontSize,\\n      value: this.#serializeContent(),\\n      pageIndex: this.pageIndex,\\n      rect,\\n      rotation: this.rotation,\\n      structTreeParentId: this._structTreeParentId,\\n    };\\n\\n    if (isForCopying) {\\n      \u002F\u002F Don't add the id when copying because the pasted editor mustn't be\\n      \u002F\u002F linked to an existing annotation.\\n      return serialized;\\n    }\\n\\n    if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\\n      return null;\\n    }\\n\\n    serialized.id = this.annotationElementId;\\n\\n    return serialized;\\n  }\\n\\n  #hasElementChanged(serialized) {\\n    const { value, fontSize, color, pageIndex } = this.#initialData;\\n\\n    return (\\n      this._hasBeenMoved ||\\n      serialized.value !== value ||\\n      serialized.fontSize !== fontSize ||\\n      serialized.color.some((c, i) => c !== color[i]) ||\\n      serialized.pageIndex !== pageIndex\\n    );\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  renderAnnotationElement(annotation) {\\n    const content = super.renderAnnotationElement(annotation);\\n    if (this.deleted) {\\n      return content;\\n    }\\n    const { style } = content;\\n    style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\\n    style.color = this.#color;\\n\\n    content.replaceChildren();\\n    for (const line of this.#content.split(\\\"\\\\n\\\")) {\\n      const div = document.createElement(\\\"div\\\");\\n      div.append(\\n        line ? document.createTextNode(line) : document.createElement(\\\"br\\\")\\n      );\\n      content.append(div);\\n    }\\n\\n    const padding = FreeTextEditor._internalPadding * this.parentScale;\\n    annotation.updateEdited({\\n      rect: this.getRect(padding, padding),\\n      popupContent: this.#content,\\n    });\\n\\n    return content;\\n  }\\n\\n  resetAnnotationElement(annotation) {\\n    super.resetAnnotationElement(annotation);\\n    annotation.resetEdited();\\n  }\\n}\\n\\nexport { FreeTextEditor };\\n\",\"\u002F* Copyright 2023 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { Util } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\n\\nclass Outliner {\\n  #box;\\n\\n  #verticalEdges = [];\\n\\n  #intervals = [];\\n\\n  \u002F**\\n   * Construct an outliner.\\n   * @param {Array\u003CObject>} boxes - An array of axis-aligned rectangles.\\n   * @param {number} borderWidth - The width of the border of the boxes, it\\n   *   allows to make the boxes bigger (or smaller).\\n   * @param {number} innerMargin - The margin between the boxes and the\\n   *   outlines. It's important to not have a null innerMargin when we want to\\n   *   draw the outline else the stroked outline could be clipped because of its\\n   *   width.\\n   * @param {boolean} isLTR - true if we're in LTR mode. It's used to determine\\n   *   the last point of the boxes.\\n   *\u002F\\n  constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\\n    let minX = Infinity;\\n    let maxX = -Infinity;\\n    let minY = Infinity;\\n    let maxY = -Infinity;\\n\\n    \u002F\u002F We round the coordinates to slightly reduce the number of edges in the\\n    \u002F\u002F final outlines.\\n    const NUMBER_OF_DIGITS = 4;\\n    const EPSILON = 10 ** -NUMBER_OF_DIGITS;\\n\\n    \u002F\u002F The coordinates of the boxes are in the page coordinate system.\\n    for (const { x, y, width, height } of boxes) {\\n      const x1 = Math.floor((x - borderWidth) \u002F EPSILON) * EPSILON;\\n      const x2 = Math.ceil((x + width + borderWidth) \u002F EPSILON) * EPSILON;\\n      const y1 = Math.floor((y - borderWidth) \u002F EPSILON) * EPSILON;\\n      const y2 = Math.ceil((y + height + borderWidth) \u002F EPSILON) * EPSILON;\\n      const left = [x1, y1, y2, true];\\n      const right = [x2, y1, y2, false];\\n      this.#verticalEdges.push(left, right);\\n\\n      minX = Math.min(minX, x1);\\n      maxX = Math.max(maxX, x2);\\n      minY = Math.min(minY, y1);\\n      maxY = Math.max(maxY, y2);\\n    }\\n\\n    const bboxWidth = maxX - minX + 2 * innerMargin;\\n    const bboxHeight = maxY - minY + 2 * innerMargin;\\n    const shiftedMinX = minX - innerMargin;\\n    const shiftedMinY = minY - innerMargin;\\n    const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2);\\n    const lastPoint = [lastEdge[0], lastEdge[2]];\\n\\n    \u002F\u002F Convert the coordinates of the edges into box coordinates.\\n    for (const edge of this.#verticalEdges) {\\n      const [x, y1, y2] = edge;\\n      edge[0] = (x - shiftedMinX) \u002F bboxWidth;\\n      edge[1] = (y1 - shiftedMinY) \u002F bboxHeight;\\n      edge[2] = (y2 - shiftedMinY) \u002F bboxHeight;\\n    }\\n\\n    this.#box = {\\n      x: shiftedMinX,\\n      y: shiftedMinY,\\n      width: bboxWidth,\\n      height: bboxHeight,\\n      lastPoint,\\n    };\\n  }\\n\\n  getOutlines() {\\n    \u002F\u002F We begin to sort lexicographically the vertical edges by their abscissa,\\n    \u002F\u002F and then by their ordinate.\\n    this.#verticalEdges.sort(\\n      (a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]\\n    );\\n\\n    \u002F\u002F We're now using a sweep line algorithm to find the outlines.\\n    \u002F\u002F We start with the leftmost vertical edge, and we're going to iterate\\n    \u002F\u002F over all the vertical edges from left to right.\\n    \u002F\u002F Each time we encounter a left edge, we're going to insert the interval\\n    \u002F\u002F [y1, y2] in the set of intervals.\\n    \u002F\u002F This set of intervals is used to break the vertical edges into chunks:\\n    \u002F\u002F we only take the part of the vertical edge that isn't in the union of\\n    \u002F\u002F the intervals.\\n    const outlineVerticalEdges = [];\\n    for (const edge of this.#verticalEdges) {\\n      if (edge[3]) {\\n        \u002F\u002F Left edge.\\n        outlineVerticalEdges.push(...this.#breakEdge(edge));\\n        this.#insert(edge);\\n      } else {\\n        \u002F\u002F Right edge.\\n        this.#remove(edge);\\n        outlineVerticalEdges.push(...this.#breakEdge(edge));\\n      }\\n    }\\n    return this.#getOutlines(outlineVerticalEdges);\\n  }\\n\\n  #getOutlines(outlineVerticalEdges) {\\n    const edges = [];\\n    const allEdges = new Set();\\n\\n    for (const edge of outlineVerticalEdges) {\\n      const [x, y1, y2] = edge;\\n      edges.push([x, y1, edge], [x, y2, edge]);\\n    }\\n\\n    \u002F\u002F We sort lexicographically the vertices of each edge by their ordinate and\\n    \u002F\u002F by their abscissa.\\n    \u002F\u002F Every pair (v_2i, v_{2i + 1}) of vertices defines a horizontal edge.\\n    \u002F\u002F So for every vertical edge, we're going to add the two vertical edges\\n    \u002F\u002F which are connected to it through a horizontal edge.\\n    edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]);\\n    for (let i = 0, ii = edges.length; i \u003C ii; i += 2) {\\n      const edge1 = edges[i][2];\\n      const edge2 = edges[i + 1][2];\\n      edge1.push(edge2);\\n      edge2.push(edge1);\\n      allEdges.add(edge1);\\n      allEdges.add(edge2);\\n    }\\n    const outlines = [];\\n    let outline;\\n\\n    while (allEdges.size > 0) {\\n      const edge = allEdges.values().next().value;\\n      let [x, y1, y2, edge1, edge2] = edge;\\n      allEdges.delete(edge);\\n      let lastPointX = x;\\n      let lastPointY = y1;\\n\\n      outline = [x, y2];\\n      outlines.push(outline);\\n\\n      while (true) {\\n        let e;\\n        if (allEdges.has(edge1)) {\\n          e = edge1;\\n        } else if (allEdges.has(edge2)) {\\n          e = edge2;\\n        } else {\\n          break;\\n        }\\n\\n        allEdges.delete(e);\\n        [x, y1, y2, edge1, edge2] = e;\\n\\n        if (lastPointX !== x) {\\n          outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2);\\n          lastPointX = x;\\n        }\\n        lastPointY = lastPointY === y1 ? y2 : y1;\\n      }\\n      outline.push(lastPointX, lastPointY);\\n    }\\n    return new HighlightOutline(outlines, this.#box);\\n  }\\n\\n  #binarySearch(y) {\\n    const array = this.#intervals;\\n    let start = 0;\\n    let end = array.length - 1;\\n\\n    while (start \u003C= end) {\\n      const middle = (start + end) >> 1;\\n      const y1 = array[middle][0];\\n      if (y1 === y) {\\n        return middle;\\n      }\\n      if (y1 \u003C y) {\\n        start = middle + 1;\\n      } else {\\n        end = middle - 1;\\n      }\\n    }\\n    return end + 1;\\n  }\\n\\n  #insert([, y1, y2]) {\\n    const index = this.#binarySearch(y1);\\n    this.#intervals.splice(index, 0, [y1, y2]);\\n  }\\n\\n  #remove([, y1, y2]) {\\n    const index = this.#binarySearch(y1);\\n    for (let i = index; i \u003C this.#intervals.length; i++) {\\n      const [start, end] = this.#intervals[i];\\n      if (start !== y1) {\\n        break;\\n      }\\n      if (start === y1 && end === y2) {\\n        this.#intervals.splice(i, 1);\\n        return;\\n      }\\n    }\\n    for (let i = index - 1; i >= 0; i--) {\\n      const [start, end] = this.#intervals[i];\\n      if (start !== y1) {\\n        break;\\n      }\\n      if (start === y1 && end === y2) {\\n        this.#intervals.splice(i, 1);\\n        return;\\n      }\\n    }\\n  }\\n\\n  #breakEdge(edge) {\\n    const [x, y1, y2] = edge;\\n    const results = [[x, y1, y2]];\\n    const index = this.#binarySearch(y2);\\n    for (let i = 0; i \u003C index; i++) {\\n      const [start, end] = this.#intervals[i];\\n      for (let j = 0, jj = results.length; j \u003C jj; j++) {\\n        const [, y3, y4] = results[j];\\n        if (end \u003C= y3 || y4 \u003C= start) {\\n          \u002F\u002F There is no intersection between the interval and the edge, hence\\n          \u002F\u002F we keep it as is.\\n          continue;\\n        }\\n        if (y3 >= start) {\\n          if (y4 > end) {\\n            results[j][1] = end;\\n          } else {\\n            if (jj === 1) {\\n              return [];\\n            }\\n            \u002F\u002F The edge is included in the interval, hence we remove it.\\n            results.splice(j, 1);\\n            j--;\\n            jj--;\\n          }\\n          continue;\\n        }\\n        results[j][2] = start;\\n        if (y4 > end) {\\n          results.push([x, end, y4]);\\n        }\\n      }\\n    }\\n    return results;\\n  }\\n}\\n\\nclass Outline {\\n  \u002F**\\n   * @returns {string} The SVG path of the outline.\\n   *\u002F\\n  toSVGPath() {\\n    throw new Error(\\\"Abstract method `toSVGPath` must be implemented.\\\");\\n  }\\n\\n  \u002F**\\n   * @type {Object|null} The bounding box of the outline.\\n   *\u002F\\n  get box() {\\n    throw new Error(\\\"Abstract getter `box` must be implemented.\\\");\\n  }\\n\\n  serialize(_bbox, _rotation) {\\n    throw new Error(\\\"Abstract method `serialize` must be implemented.\\\");\\n  }\\n\\n  get free() {\\n    return this instanceof FreeHighlightOutline;\\n  }\\n}\\n\\nclass HighlightOutline extends Outline {\\n  #box;\\n\\n  #outlines;\\n\\n  constructor(outlines, box) {\\n    super();\\n    this.#outlines = outlines;\\n    this.#box = box;\\n  }\\n\\n  toSVGPath() {\\n    const buffer = [];\\n    for (const polygon of this.#outlines) {\\n      let [prevX, prevY] = polygon;\\n      buffer.push(`M${prevX} ${prevY}`);\\n      for (let i = 2; i \u003C polygon.length; i += 2) {\\n        const x = polygon[i];\\n        const y = polygon[i + 1];\\n        if (x === prevX) {\\n          buffer.push(`V${y}`);\\n          prevY = y;\\n        } else if (y === prevY) {\\n          buffer.push(`H${x}`);\\n          prevX = x;\\n        }\\n      }\\n      buffer.push(\\\"Z\\\");\\n    }\\n    return buffer.join(\\\" \\\");\\n  }\\n\\n  \u002F**\\n   * Serialize the outlines into the PDF page coordinate system.\\n   * @param {Array\u003Cnumber>} _bbox - the bounding box of the annotation.\\n   * @param {number} _rotation - the rotation of the annotation.\\n   * @returns {Array\u003CArray\u003Cnumber>>}\\n   *\u002F\\n  serialize([blX, blY, trX, trY], _rotation) {\\n    const outlines = [];\\n    const width = trX - blX;\\n    const height = trY - blY;\\n    for (const outline of this.#outlines) {\\n      const points = new Array(outline.length);\\n      for (let i = 0; i \u003C outline.length; i += 2) {\\n        points[i] = blX + outline[i] * width;\\n        points[i + 1] = trY - outline[i + 1] * height;\\n      }\\n      outlines.push(points);\\n    }\\n    return outlines;\\n  }\\n\\n  get box() {\\n    return this.#box;\\n  }\\n}\\n\\nclass FreeOutliner {\\n  #box;\\n\\n  #bottom = [];\\n\\n  #innerMargin;\\n\\n  #isLTR;\\n\\n  #top = [];\\n\\n  \u002F\u002F The first 6 elements are the last 3 points of the top part of the outline.\\n  \u002F\u002F The next 6 elements are the last 3 points of the line.\\n  \u002F\u002F The next 6 elements are the last 3 points of the bottom part of the\\n  \u002F\u002F outline.\\n  \u002F\u002F We track the last 3 points in order to be able to:\\n  \u002F\u002F  - compute the normal of the line,\\n  \u002F\u002F  - compute the control points of the quadratic Bézier curve.\\n  #last = new Float64Array(18);\\n\\n  #lastX;\\n\\n  #lastY;\\n\\n  #min;\\n\\n  #min_dist;\\n\\n  #scaleFactor;\\n\\n  #thickness;\\n\\n  #points = [];\\n\\n  static #MIN_DIST = 8;\\n\\n  static #MIN_DIFF = 2;\\n\\n  static #MIN = FreeOutliner.#MIN_DIST + FreeOutliner.#MIN_DIFF;\\n\\n  constructor({ x, y }, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\\n    this.#box = box;\\n    this.#thickness = thickness * scaleFactor;\\n    this.#isLTR = isLTR;\\n    this.#last.set([NaN, NaN, NaN, NaN, x, y], 6);\\n    this.#innerMargin = innerMargin;\\n    this.#min_dist = FreeOutliner.#MIN_DIST * scaleFactor;\\n    this.#min = FreeOutliner.#MIN * scaleFactor;\\n    this.#scaleFactor = scaleFactor;\\n    this.#points.push(x, y);\\n  }\\n\\n  get free() {\\n    return true;\\n  }\\n\\n  isEmpty() {\\n    \u002F\u002F When we add a second point then this.#last.slice(6) will be something\\n    \u002F\u002F like [NaN, NaN, firstX, firstY, secondX, secondY,...] so having a NaN\\n    \u002F\u002F at index 8 means that we've only one point.\\n    return isNaN(this.#last[8]);\\n  }\\n\\n  #getLastCoords() {\\n    const lastTop = this.#last.subarray(4, 6);\\n    const lastBottom = this.#last.subarray(16, 18);\\n    const [x, y, width, height] = this.#box;\\n\\n    return [\\n      (this.#lastX + (lastTop[0] - lastBottom[0]) \u002F 2 - x) \u002F width,\\n      (this.#lastY + (lastTop[1] - lastBottom[1]) \u002F 2 - y) \u002F height,\\n      (this.#lastX + (lastBottom[0] - lastTop[0]) \u002F 2 - x) \u002F width,\\n      (this.#lastY + (lastBottom[1] - lastTop[1]) \u002F 2 - y) \u002F height,\\n    ];\\n  }\\n\\n  add({ x, y }) {\\n    this.#lastX = x;\\n    this.#lastY = y;\\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\\n    let [x1, y1, x2, y2] = this.#last.subarray(8, 12);\\n    const diffX = x - x2;\\n    const diffY = y - y2;\\n    const d = Math.hypot(diffX, diffY);\\n    if (d \u003C this.#min) {\\n      \u002F\u002F The idea is to avoid garbage points around the last point.\\n      \u002F\u002F When the points are too close, it just leads to bad normal vectors and\\n      \u002F\u002F control points.\\n      return false;\\n    }\\n    const diffD = d - this.#min_dist;\\n    const K = diffD \u002F d;\\n    const shiftX = K * diffX;\\n    const shiftY = K * diffY;\\n\\n    \u002F\u002F We update the last 3 points of the line.\\n    let x0 = x1;\\n    let y0 = y1;\\n    x1 = x2;\\n    y1 = y2;\\n    x2 += shiftX;\\n    y2 += shiftY;\\n\\n    \u002F\u002F We keep track of the points in order to be able to compute the focus\\n    \u002F\u002F outline.\\n    this.#points?.push(x, y);\\n\\n    \u002F\u002F Create the normal unit vector.\\n    \u002F\u002F |(shiftX, shiftY)| = |K| * |(diffX, diffY)| = |K| * d = diffD.\\n    const nX = -shiftY \u002F diffD;\\n    const nY = shiftX \u002F diffD;\\n    const thX = nX * this.#thickness;\\n    const thY = nY * this.#thickness;\\n    this.#last.set(this.#last.subarray(2, 8), 0);\\n    this.#last.set([x2 + thX, y2 + thY], 4);\\n    this.#last.set(this.#last.subarray(14, 18), 12);\\n    this.#last.set([x2 - thX, y2 - thY], 16);\\n\\n    if (isNaN(this.#last[6])) {\\n      if (this.#top.length === 0) {\\n        this.#last.set([x1 + thX, y1 + thY], 2);\\n        this.#top.push(\\n          NaN,\\n          NaN,\\n          NaN,\\n          NaN,\\n          (x1 + thX - layerX) \u002F layerWidth,\\n          (y1 + thY - layerY) \u002F layerHeight\\n        );\\n        this.#last.set([x1 - thX, y1 - thY], 14);\\n        this.#bottom.push(\\n          NaN,\\n          NaN,\\n          NaN,\\n          NaN,\\n          (x1 - thX - layerX) \u002F layerWidth,\\n          (y1 - thY - layerY) \u002F layerHeight\\n        );\\n      }\\n      this.#last.set([x0, y0, x1, y1, x2, y2], 6);\\n      return !this.isEmpty();\\n    }\\n\\n    this.#last.set([x0, y0, x1, y1, x2, y2], 6);\\n\\n    const angle = Math.abs(\\n      Math.atan2(y0 - y1, x0 - x1) - Math.atan2(shiftY, shiftX)\\n    );\\n    if (angle \u003C Math.PI \u002F 2) {\\n      \u002F\u002F In order to avoid some possible artifacts, we're going to use the a\\n      \u002F\u002F straight line instead of a quadratic Bézier curve.\\n      [x1, y1, x2, y2] = this.#last.subarray(2, 6);\\n      this.#top.push(\\n        NaN,\\n        NaN,\\n        NaN,\\n        NaN,\\n        ((x1 + x2) \u002F 2 - layerX) \u002F layerWidth,\\n        ((y1 + y2) \u002F 2 - layerY) \u002F layerHeight\\n      );\\n      [x1, y1, x0, y0] = this.#last.subarray(14, 18);\\n      this.#bottom.push(\\n        NaN,\\n        NaN,\\n        NaN,\\n        NaN,\\n        ((x0 + x1) \u002F 2 - layerX) \u002F layerWidth,\\n        ((y0 + y1) \u002F 2 - layerY) \u002F layerHeight\\n      );\\n      return true;\\n    }\\n\\n    \u002F\u002F Control points and the final point for the quadratic Bézier curve.\\n    [x0, y0, x1, y1, x2, y2] = this.#last.subarray(0, 6);\\n    this.#top.push(\\n      ((x0 + 5 * x1) \u002F 6 - layerX) \u002F layerWidth,\\n      ((y0 + 5 * y1) \u002F 6 - layerY) \u002F layerHeight,\\n      ((5 * x1 + x2) \u002F 6 - layerX) \u002F layerWidth,\\n      ((5 * y1 + y2) \u002F 6 - layerY) \u002F layerHeight,\\n      ((x1 + x2) \u002F 2 - layerX) \u002F layerWidth,\\n      ((y1 + y2) \u002F 2 - layerY) \u002F layerHeight\\n    );\\n    [x2, y2, x1, y1, x0, y0] = this.#last.subarray(12, 18);\\n    this.#bottom.push(\\n      ((x0 + 5 * x1) \u002F 6 - layerX) \u002F layerWidth,\\n      ((y0 + 5 * y1) \u002F 6 - layerY) \u002F layerHeight,\\n      ((5 * x1 + x2) \u002F 6 - layerX) \u002F layerWidth,\\n      ((5 * y1 + y2) \u002F 6 - layerY) \u002F layerHeight,\\n      ((x1 + x2) \u002F 2 - layerX) \u002F layerWidth,\\n      ((y1 + y2) \u002F 2 - layerY) \u002F layerHeight\\n    );\\n    return true;\\n  }\\n\\n  toSVGPath() {\\n    if (this.isEmpty()) {\\n      \u002F\u002F We've only one point.\\n      return \\\"\\\";\\n    }\\n    const top = this.#top;\\n    const bottom = this.#bottom;\\n    const lastTop = this.#last.subarray(4, 6);\\n    const lastBottom = this.#last.subarray(16, 18);\\n    const [x, y, width, height] = this.#box;\\n    const [lastTopX, lastTopY, lastBottomX, lastBottomY] =\\n      this.#getLastCoords();\\n\\n    if (isNaN(this.#last[6]) && !this.isEmpty()) {\\n      \u002F\u002F We've only two points.\\n      return `M${(this.#last[2] - x) \u002F width} ${\\n        (this.#last[3] - y) \u002F height\\n      } L${(this.#last[4] - x) \u002F width} ${(this.#last[5] - y) \u002F height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${\\n        (this.#last[16] - x) \u002F width\\n      } ${(this.#last[17] - y) \u002F height} L${(this.#last[14] - x) \u002F width} ${\\n        (this.#last[15] - y) \u002F height\\n      } Z`;\\n    }\\n\\n    const buffer = [];\\n    buffer.push(`M${top[4]} ${top[5]}`);\\n    for (let i = 6; i \u003C top.length; i += 6) {\\n      if (isNaN(top[i])) {\\n        buffer.push(`L${top[i + 4]} ${top[i + 5]}`);\\n      } else {\\n        buffer.push(\\n          `C${top[i]} ${top[i + 1]} ${top[i + 2]} ${top[i + 3]} ${top[i + 4]} ${\\n            top[i + 5]\\n          }`\\n        );\\n      }\\n    }\\n\\n    buffer.push(\\n      `L${(lastTop[0] - x) \u002F width} ${(lastTop[1] - y) \u002F height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${\\n        (lastBottom[0] - x) \u002F width\\n      } ${(lastBottom[1] - y) \u002F height}`\\n    );\\n    for (let i = bottom.length - 6; i >= 6; i -= 6) {\\n      if (isNaN(bottom[i])) {\\n        buffer.push(`L${bottom[i + 4]} ${bottom[i + 5]}`);\\n      } else {\\n        buffer.push(\\n          `C${bottom[i]} ${bottom[i + 1]} ${bottom[i + 2]} ${bottom[i + 3]} ${\\n            bottom[i + 4]\\n          } ${bottom[i + 5]}`\\n        );\\n      }\\n    }\\n    buffer.push(`L${bottom[4]} ${bottom[5]} Z`);\\n\\n    return buffer.join(\\\" \\\");\\n  }\\n\\n  getOutlines() {\\n    const top = this.#top;\\n    const bottom = this.#bottom;\\n    const last = this.#last;\\n    const lastTop = last.subarray(4, 6);\\n    const lastBottom = last.subarray(16, 18);\\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\\n\\n    const points = new Float64Array((this.#points?.length ?? 0) + 2);\\n    for (let i = 0, ii = points.length - 2; i \u003C ii; i += 2) {\\n      points[i] = (this.#points[i] - layerX) \u002F layerWidth;\\n      points[i + 1] = (this.#points[i + 1] - layerY) \u002F layerHeight;\\n    }\\n    points[points.length - 2] = (this.#lastX - layerX) \u002F layerWidth;\\n    points[points.length - 1] = (this.#lastY - layerY) \u002F layerHeight;\\n    const [lastTopX, lastTopY, lastBottomX, lastBottomY] =\\n      this.#getLastCoords();\\n\\n    if (isNaN(last[6]) && !this.isEmpty()) {\\n      \u002F\u002F We've only two points.\\n      const outline = new Float64Array(36);\\n      outline.set(\\n        [\\n          NaN,\\n          NaN,\\n          NaN,\\n          NaN,\\n          (last[2] - layerX) \u002F layerWidth,\\n          (last[3] - layerY) \u002F layerHeight,\\n          NaN,\\n          NaN,\\n          NaN,\\n          NaN,\\n          (last[4] - layerX) \u002F layerWidth,\\n          (last[5] - layerY) \u002F layerHeight,\\n          NaN,\\n          NaN,\\n          NaN,\\n          NaN,\\n          lastTopX,\\n          lastTopY,\\n          NaN,\\n          NaN,\\n          NaN,\\n          NaN,\\n          lastBottomX,\\n          lastBottomY,\\n          NaN,\\n          NaN,\\n          NaN,\\n          NaN,\\n          (last[16] - layerX) \u002F layerWidth,\\n          (last[17] - layerY) \u002F layerHeight,\\n          NaN,\\n          NaN,\\n          NaN,\\n          NaN,\\n          (last[14] - layerX) \u002F layerWidth,\\n          (last[15] - layerY) \u002F layerHeight,\\n        ],\\n        0\\n      );\\n      return new FreeHighlightOutline(\\n        outline,\\n        points,\\n        this.#box,\\n        this.#scaleFactor,\\n        this.#innerMargin,\\n        this.#isLTR\\n      );\\n    }\\n\\n    const outline = new Float64Array(\\n      this.#top.length + 24 + this.#bottom.length\\n    );\\n    let N = top.length;\\n    for (let i = 0; i \u003C N; i += 2) {\\n      if (isNaN(top[i])) {\\n        outline[i] = outline[i + 1] = NaN;\\n        continue;\\n      }\\n      outline[i] = top[i];\\n      outline[i + 1] = top[i + 1];\\n    }\\n\\n    outline.set(\\n      [\\n        NaN,\\n        NaN,\\n        NaN,\\n        NaN,\\n        (lastTop[0] - layerX) \u002F layerWidth,\\n        (lastTop[1] - layerY) \u002F layerHeight,\\n        NaN,\\n        NaN,\\n        NaN,\\n        NaN,\\n        lastTopX,\\n        lastTopY,\\n        NaN,\\n        NaN,\\n        NaN,\\n        NaN,\\n        lastBottomX,\\n        lastBottomY,\\n        NaN,\\n        NaN,\\n        NaN,\\n        NaN,\\n        (lastBottom[0] - layerX) \u002F layerWidth,\\n        (lastBottom[1] - layerY) \u002F layerHeight,\\n      ],\\n      N\\n    );\\n    N += 24;\\n\\n    for (let i = bottom.length - 6; i >= 6; i -= 6) {\\n      for (let j = 0; j \u003C 6; j += 2) {\\n        if (isNaN(bottom[i + j])) {\\n          outline[N] = outline[N + 1] = NaN;\\n          N += 2;\\n          continue;\\n        }\\n        outline[N] = bottom[i + j];\\n        outline[N + 1] = bottom[i + j + 1];\\n        N += 2;\\n      }\\n    }\\n    outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], N);\\n    return new FreeHighlightOutline(\\n      outline,\\n      points,\\n      this.#box,\\n      this.#scaleFactor,\\n      this.#innerMargin,\\n      this.#isLTR\\n    );\\n  }\\n}\\n\\nclass FreeHighlightOutline extends Outline {\\n  #box;\\n\\n  #bbox = null;\\n\\n  #innerMargin;\\n\\n  #isLTR;\\n\\n  #points;\\n\\n  #scaleFactor;\\n\\n  #outline;\\n\\n  constructor(outline, points, box, scaleFactor, innerMargin, isLTR) {\\n    super();\\n    this.#outline = outline;\\n    this.#points = points;\\n    this.#box = box;\\n    this.#scaleFactor = scaleFactor;\\n    this.#innerMargin = innerMargin;\\n    this.#isLTR = isLTR;\\n    this.#computeMinMax(isLTR);\\n\\n    const { x, y, width, height } = this.#bbox;\\n    for (let i = 0, ii = outline.length; i \u003C ii; i += 2) {\\n      outline[i] = (outline[i] - x) \u002F width;\\n      outline[i + 1] = (outline[i + 1] - y) \u002F height;\\n    }\\n    for (let i = 0, ii = points.length; i \u003C ii; i += 2) {\\n      points[i] = (points[i] - x) \u002F width;\\n      points[i + 1] = (points[i + 1] - y) \u002F height;\\n    }\\n  }\\n\\n  toSVGPath() {\\n    const buffer = [`M${this.#outline[4]} ${this.#outline[5]}`];\\n    for (let i = 6, ii = this.#outline.length; i \u003C ii; i += 6) {\\n      if (isNaN(this.#outline[i])) {\\n        buffer.push(`L${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\\n        continue;\\n      }\\n      buffer.push(\\n        `C${this.#outline[i]} ${this.#outline[i + 1]} ${this.#outline[i + 2]} ${\\n          this.#outline[i + 3]\\n        } ${this.#outline[i + 4]} ${this.#outline[i + 5]}`\\n      );\\n    }\\n    buffer.push(\\\"Z\\\");\\n    return buffer.join(\\\" \\\");\\n  }\\n\\n  serialize([blX, blY, trX, trY], rotation) {\\n    const width = trX - blX;\\n    const height = trY - blY;\\n    let outline;\\n    let points;\\n    switch (rotation) {\\n      case 0:\\n        outline = this.#rescale(this.#outline, blX, trY, width, -height);\\n        points = this.#rescale(this.#points, blX, trY, width, -height);\\n        break;\\n      case 90:\\n        outline = this.#rescaleAndSwap(this.#outline, blX, blY, width, height);\\n        points = this.#rescaleAndSwap(this.#points, blX, blY, width, height);\\n        break;\\n      case 180:\\n        outline = this.#rescale(this.#outline, trX, blY, -width, height);\\n        points = this.#rescale(this.#points, trX, blY, -width, height);\\n        break;\\n      case 270:\\n        outline = this.#rescaleAndSwap(\\n          this.#outline,\\n          trX,\\n          trY,\\n          -width,\\n          -height\\n        );\\n        points = this.#rescaleAndSwap(this.#points, trX, trY, -width, -height);\\n        break;\\n    }\\n    return { outline: Array.from(outline), points: [Array.from(points)] };\\n  }\\n\\n  #rescale(src, tx, ty, sx, sy) {\\n    const dest = new Float64Array(src.length);\\n    for (let i = 0, ii = src.length; i \u003C ii; i += 2) {\\n      dest[i] = tx + src[i] * sx;\\n      dest[i + 1] = ty + src[i + 1] * sy;\\n    }\\n    return dest;\\n  }\\n\\n  #rescaleAndSwap(src, tx, ty, sx, sy) {\\n    const dest = new Float64Array(src.length);\\n    for (let i = 0, ii = src.length; i \u003C ii; i += 2) {\\n      dest[i] = tx + src[i + 1] * sx;\\n      dest[i + 1] = ty + src[i] * sy;\\n    }\\n    return dest;\\n  }\\n\\n  #computeMinMax(isLTR) {\\n    const outline = this.#outline;\\n    let lastX = outline[4];\\n    let lastY = outline[5];\\n    let minX = lastX;\\n    let minY = lastY;\\n    let maxX = lastX;\\n    let maxY = lastY;\\n    let lastPointX = lastX;\\n    let lastPointY = lastY;\\n    const ltrCallback = isLTR ? Math.max : Math.min;\\n\\n    for (let i = 6, ii = outline.length; i \u003C ii; i += 6) {\\n      if (isNaN(outline[i])) {\\n        minX = Math.min(minX, outline[i + 4]);\\n        minY = Math.min(minY, outline[i + 5]);\\n        maxX = Math.max(maxX, outline[i + 4]);\\n        maxY = Math.max(maxY, outline[i + 5]);\\n        if (lastPointY \u003C outline[i + 5]) {\\n          lastPointX = outline[i + 4];\\n          lastPointY = outline[i + 5];\\n        } else if (lastPointY === outline[i + 5]) {\\n          lastPointX = ltrCallback(lastPointX, outline[i + 4]);\\n        }\\n      } else {\\n        const bbox = Util.bezierBoundingBox(\\n          lastX,\\n          lastY,\\n          ...outline.slice(i, i + 6)\\n        );\\n        minX = Math.min(minX, bbox[0]);\\n        minY = Math.min(minY, bbox[1]);\\n        maxX = Math.max(maxX, bbox[2]);\\n        maxY = Math.max(maxY, bbox[3]);\\n        if (lastPointY \u003C bbox[3]) {\\n          lastPointX = bbox[2];\\n          lastPointY = bbox[3];\\n        } else if (lastPointY === bbox[3]) {\\n          lastPointX = ltrCallback(lastPointX, bbox[2]);\\n        }\\n      }\\n      lastX = outline[i + 4];\\n      lastY = outline[i + 5];\\n    }\\n\\n    const x = minX - this.#innerMargin,\\n      y = minY - this.#innerMargin,\\n      width = maxX - minX + 2 * this.#innerMargin,\\n      height = maxY - minY + 2 * this.#innerMargin;\\n    this.#bbox = { x, y, width, height, lastPoint: [lastPointX, lastPointY] };\\n  }\\n\\n  get box() {\\n    return this.#bbox;\\n  }\\n\\n  getNewOutline(thickness, innerMargin) {\\n    \u002F\u002F Build the outline of the highlight to use as the focus outline.\\n    const { x, y, width, height } = this.#bbox;\\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\\n    const sx = width * layerWidth;\\n    const sy = height * layerHeight;\\n    const tx = x * layerWidth + layerX;\\n    const ty = y * layerHeight + layerY;\\n    const outliner = new FreeOutliner(\\n      {\\n        x: this.#points[0] * sx + tx,\\n        y: this.#points[1] * sy + ty,\\n      },\\n      this.#box,\\n      this.#scaleFactor,\\n      thickness,\\n      this.#isLTR,\\n      innerMargin ?? this.#innerMargin\\n    );\\n    for (let i = 2; i \u003C this.#points.length; i += 2) {\\n      outliner.add({\\n        x: this.#points[i] * sx + tx,\\n        y: this.#points[i + 1] * sy + ty,\\n      });\\n    }\\n    return outliner.getOutlines();\\n  }\\n}\\n\\nexport { FreeOutliner, Outliner };\\n\",\"\u002F* Copyright 2023 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { AnnotationEditorParamsType, shadow } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport { KeyboardManager } from \\\".\u002Ftools.js\\\";\\nimport { noContextMenu } from \\\"..\u002Fdisplay_utils.js\\\";\\n\\nclass ColorPicker {\\n  #boundKeyDown = this.#keyDown.bind(this);\\n\\n  #boundPointerDown = this.#pointerDown.bind(this);\\n\\n  #button = null;\\n\\n  #buttonSwatch = null;\\n\\n  #defaultColor;\\n\\n  #dropdown = null;\\n\\n  #dropdownWasFromKeyboard = false;\\n\\n  #isMainColorPicker = false;\\n\\n  #editor = null;\\n\\n  #eventBus;\\n\\n  #uiManager = null;\\n\\n  #type;\\n\\n  static get _keyboardManager() {\\n    return shadow(\\n      this,\\n      \\\"_keyboardManager\\\",\\n      new KeyboardManager([\\n        [\\n          [\\\"Escape\\\", \\\"mac+Escape\\\"],\\n          ColorPicker.prototype._hideDropdownFromKeyboard,\\n        ],\\n        [[\\\" \\\", \\\"mac+ \\\"], ColorPicker.prototype._colorSelectFromKeyboard],\\n        [\\n          [\\\"ArrowDown\\\", \\\"ArrowRight\\\", \\\"mac+ArrowDown\\\", \\\"mac+ArrowRight\\\"],\\n          ColorPicker.prototype._moveToNext,\\n        ],\\n        [\\n          [\\\"ArrowUp\\\", \\\"ArrowLeft\\\", \\\"mac+ArrowUp\\\", \\\"mac+ArrowLeft\\\"],\\n          ColorPicker.prototype._moveToPrevious,\\n        ],\\n        [[\\\"Home\\\", \\\"mac+Home\\\"], ColorPicker.prototype._moveToBeginning],\\n        [[\\\"End\\\", \\\"mac+End\\\"], ColorPicker.prototype._moveToEnd],\\n      ])\\n    );\\n  }\\n\\n  constructor({ editor = null, uiManager = null }) {\\n    if (editor) {\\n      this.#isMainColorPicker = false;\\n      this.#type = AnnotationEditorParamsType.HIGHLIGHT_COLOR;\\n      this.#editor = editor;\\n    } else {\\n      this.#isMainColorPicker = true;\\n      this.#type = AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR;\\n    }\\n    this.#uiManager = editor?._uiManager || uiManager;\\n    this.#eventBus = this.#uiManager._eventBus;\\n    this.#defaultColor =\\n      editor?.color ||\\n      this.#uiManager?.highlightColors.values().next().value ||\\n      \\\"#FFFF98\\\";\\n  }\\n\\n  renderButton() {\\n    const button = (this.#button = document.createElement(\\\"button\\\"));\\n    button.className = \\\"colorPicker\\\";\\n    button.tabIndex = \\\"0\\\";\\n    button.setAttribute(\\\"data-l10n-id\\\", \\\"pdfjs-editor-colorpicker-button\\\");\\n    button.setAttribute(\\\"aria-haspopup\\\", true);\\n    button.addEventListener(\\\"click\\\", this.#openDropdown.bind(this));\\n    button.addEventListener(\\\"keydown\\\", this.#boundKeyDown);\\n    const swatch = (this.#buttonSwatch = document.createElement(\\\"span\\\"));\\n    swatch.className = \\\"swatch\\\";\\n    swatch.setAttribute(\\\"aria-hidden\\\", true);\\n    swatch.style.backgroundColor = this.#defaultColor;\\n    button.append(swatch);\\n    return button;\\n  }\\n\\n  renderMainDropdown() {\\n    const dropdown = (this.#dropdown = this.#getDropdownRoot());\\n    dropdown.setAttribute(\\\"aria-orientation\\\", \\\"horizontal\\\");\\n    dropdown.setAttribute(\\\"aria-labelledby\\\", \\\"highlightColorPickerLabel\\\");\\n\\n    return dropdown;\\n  }\\n\\n  #getDropdownRoot() {\\n    const div = document.createElement(\\\"div\\\");\\n    div.addEventListener(\\\"contextmenu\\\", noContextMenu);\\n    div.className = \\\"dropdown\\\";\\n    div.role = \\\"listbox\\\";\\n    div.setAttribute(\\\"aria-multiselectable\\\", false);\\n    div.setAttribute(\\\"aria-orientation\\\", \\\"vertical\\\");\\n    div.setAttribute(\\\"data-l10n-id\\\", \\\"pdfjs-editor-colorpicker-dropdown\\\");\\n    for (const [name, color] of this.#uiManager.highlightColors) {\\n      const button = document.createElement(\\\"button\\\");\\n      button.tabIndex = \\\"0\\\";\\n      button.role = \\\"option\\\";\\n      button.setAttribute(\\\"data-color\\\", color);\\n      button.title = name;\\n      button.setAttribute(\\\"data-l10n-id\\\", `pdfjs-editor-colorpicker-${name}`);\\n      const swatch = document.createElement(\\\"span\\\");\\n      button.append(swatch);\\n      swatch.className = \\\"swatch\\\";\\n      swatch.style.backgroundColor = color;\\n      button.setAttribute(\\\"aria-selected\\\", color === this.#defaultColor);\\n      button.addEventListener(\\\"click\\\", this.#colorSelect.bind(this, color));\\n      div.append(button);\\n    }\\n\\n    div.addEventListener(\\\"keydown\\\", this.#boundKeyDown);\\n\\n    return div;\\n  }\\n\\n  #colorSelect(color, event) {\\n    event.stopPropagation();\\n    this.#eventBus.dispatch(\\\"switchannotationeditorparams\\\", {\\n      source: this,\\n      type: this.#type,\\n      value: color,\\n    });\\n  }\\n\\n  _colorSelectFromKeyboard(event) {\\n    if (event.target === this.#button) {\\n      this.#openDropdown(event);\\n      return;\\n    }\\n    const color = event.target.getAttribute(\\\"data-color\\\");\\n    if (!color) {\\n      return;\\n    }\\n    this.#colorSelect(color, event);\\n  }\\n\\n  _moveToNext(event) {\\n    if (!this.#isDropdownVisible) {\\n      this.#openDropdown(event);\\n      return;\\n    }\\n    if (event.target === this.#button) {\\n      this.#dropdown.firstChild?.focus();\\n      return;\\n    }\\n    event.target.nextSibling?.focus();\\n  }\\n\\n  _moveToPrevious(event) {\\n    if (\\n      event.target === this.#dropdown?.firstChild ||\\n      event.target === this.#button\\n    ) {\\n      if (this.#isDropdownVisible) {\\n        this._hideDropdownFromKeyboard();\\n      }\\n      return;\\n    }\\n    if (!this.#isDropdownVisible) {\\n      this.#openDropdown(event);\\n    }\\n    event.target.previousSibling?.focus();\\n  }\\n\\n  _moveToBeginning(event) {\\n    if (!this.#isDropdownVisible) {\\n      this.#openDropdown(event);\\n      return;\\n    }\\n    this.#dropdown.firstChild?.focus();\\n  }\\n\\n  _moveToEnd(event) {\\n    if (!this.#isDropdownVisible) {\\n      this.#openDropdown(event);\\n      return;\\n    }\\n    this.#dropdown.lastChild?.focus();\\n  }\\n\\n  #keyDown(event) {\\n    ColorPicker._keyboardManager.exec(this, event);\\n  }\\n\\n  #openDropdown(event) {\\n    if (this.#isDropdownVisible) {\\n      this.hideDropdown();\\n      return;\\n    }\\n    this.#dropdownWasFromKeyboard = event.detail === 0;\\n    window.addEventListener(\\\"pointerdown\\\", this.#boundPointerDown);\\n    if (this.#dropdown) {\\n      this.#dropdown.classList.remove(\\\"hidden\\\");\\n      return;\\n    }\\n    const root = (this.#dropdown = this.#getDropdownRoot());\\n    this.#button.append(root);\\n  }\\n\\n  #pointerDown(event) {\\n    if (this.#dropdown?.contains(event.target)) {\\n      return;\\n    }\\n    this.hideDropdown();\\n  }\\n\\n  hideDropdown() {\\n    this.#dropdown?.classList.add(\\\"hidden\\\");\\n    window.removeEventListener(\\\"pointerdown\\\", this.#boundPointerDown);\\n  }\\n\\n  get #isDropdownVisible() {\\n    return this.#dropdown && !this.#dropdown.classList.contains(\\\"hidden\\\");\\n  }\\n\\n  _hideDropdownFromKeyboard() {\\n    if (this.#isMainColorPicker) {\\n      return;\\n    }\\n    if (!this.#isDropdownVisible) {\\n      \u002F\u002F The user pressed Escape with no dropdown visible, so we must\\n      \u002F\u002F unselect it.\\n      this.#editor?.unselect();\\n      return;\\n    }\\n    this.hideDropdown();\\n    this.#button.focus({\\n      preventScroll: true,\\n      focusVisible: this.#dropdownWasFromKeyboard,\\n    });\\n  }\\n\\n  updateColor(color) {\\n    if (this.#buttonSwatch) {\\n      this.#buttonSwatch.style.backgroundColor = color;\\n    }\\n    if (!this.#dropdown) {\\n      return;\\n    }\\n\\n    const i = this.#uiManager.highlightColors.values();\\n    for (const child of this.#dropdown.children) {\\n      child.setAttribute(\\\"aria-selected\\\", i.next().value === color);\\n    }\\n  }\\n\\n  destroy() {\\n    this.#button?.remove();\\n    this.#button = null;\\n    this.#buttonSwatch = null;\\n    this.#dropdown?.remove();\\n    this.#dropdown = null;\\n  }\\n}\\n\\nexport { ColorPicker };\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  AnnotationEditorParamsType,\\n  AnnotationEditorType,\\n  shadow,\\n  Util,\\n} from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport { bindEvents, KeyboardManager } from \\\".\u002Ftools.js\\\";\\nimport { FreeOutliner, Outliner } from \\\".\u002Foutliner.js\\\";\\nimport { AnnotationEditor } from \\\".\u002Feditor.js\\\";\\nimport { ColorPicker } from \\\".\u002Fcolor_picker.js\\\";\\nimport { noContextMenu } from \\\"..\u002Fdisplay_utils.js\\\";\\n\\n\u002F**\\n * Basic draw editor in order to generate an Highlight annotation.\\n *\u002F\\nclass HighlightEditor extends AnnotationEditor {\\n  #anchorNode = null;\\n\\n  #anchorOffset = 0;\\n\\n  #boxes;\\n\\n  #clipPathId = null;\\n\\n  #colorPicker = null;\\n\\n  #focusOutlines = null;\\n\\n  #focusNode = null;\\n\\n  #focusOffset = 0;\\n\\n  #highlightDiv = null;\\n\\n  #highlightOutlines = null;\\n\\n  #id = null;\\n\\n  #isFreeHighlight = false;\\n\\n  #boundKeydown = this.#keydown.bind(this);\\n\\n  #lastPoint = null;\\n\\n  #opacity;\\n\\n  #outlineId = null;\\n\\n  #text = \\\"\\\";\\n\\n  #thickness;\\n\\n  #methodOfCreation = \\\"\\\";\\n\\n  static _defaultColor = null;\\n\\n  static _defaultOpacity = 1;\\n\\n  static _defaultThickness = 12;\\n\\n  static _l10nPromise;\\n\\n  static _type = \\\"highlight\\\";\\n\\n  static _editorType = AnnotationEditorType.HIGHLIGHT;\\n\\n  static _freeHighlightId = -1;\\n\\n  static _freeHighlight = null;\\n\\n  static _freeHighlightClipId = \\\"\\\";\\n\\n  static get _keyboardManager() {\\n    const proto = HighlightEditor.prototype;\\n    return shadow(\\n      this,\\n      \\\"_keyboardManager\\\",\\n      new KeyboardManager([\\n        [[\\\"ArrowLeft\\\", \\\"mac+ArrowLeft\\\"], proto._moveCaret, { args: [0] }],\\n        [[\\\"ArrowRight\\\", \\\"mac+ArrowRight\\\"], proto._moveCaret, { args: [1] }],\\n        [[\\\"ArrowUp\\\", \\\"mac+ArrowUp\\\"], proto._moveCaret, { args: [2] }],\\n        [[\\\"ArrowDown\\\", \\\"mac+ArrowDown\\\"], proto._moveCaret, { args: [3] }],\\n      ])\\n    );\\n  }\\n\\n  constructor(params) {\\n    super({ ...params, name: \\\"highlightEditor\\\" });\\n    this.color = params.color || HighlightEditor._defaultColor;\\n    this.#thickness = params.thickness || HighlightEditor._defaultThickness;\\n    this.#opacity = params.opacity || HighlightEditor._defaultOpacity;\\n    this.#boxes = params.boxes || null;\\n    this.#methodOfCreation = params.methodOfCreation || \\\"\\\";\\n    this.#text = params.text || \\\"\\\";\\n    this._isDraggable = false;\\n\\n    if (params.highlightId > -1) {\\n      this.#isFreeHighlight = true;\\n      this.#createFreeOutlines(params);\\n      this.#addToDrawLayer();\\n    } else {\\n      this.#anchorNode = params.anchorNode;\\n      this.#anchorOffset = params.anchorOffset;\\n      this.#focusNode = params.focusNode;\\n      this.#focusOffset = params.focusOffset;\\n      this.#createOutlines();\\n      this.#addToDrawLayer();\\n      this.rotate(this.rotation);\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  get telemetryInitialData() {\\n    return {\\n      action: \\\"added\\\",\\n      type: this.#isFreeHighlight ? \\\"free_highlight\\\" : \\\"highlight\\\",\\n      color: this._uiManager.highlightColorNames.get(this.color),\\n      thickness: this.#thickness,\\n      methodOfCreation: this.#methodOfCreation,\\n    };\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  get telemetryFinalData() {\\n    return {\\n      type: \\\"highlight\\\",\\n      color: this._uiManager.highlightColorNames.get(this.color),\\n    };\\n  }\\n\\n  static computeTelemetryFinalData(data) {\\n    \u002F\u002F We want to know how many colors have been used.\\n    return { numberOfColors: data.get(\\\"color\\\").size };\\n  }\\n\\n  #createOutlines() {\\n    const outliner = new Outliner(this.#boxes, \u002F* borderWidth = *\u002F 0.001);\\n    this.#highlightOutlines = outliner.getOutlines();\\n    ({\\n      x: this.x,\\n      y: this.y,\\n      width: this.width,\\n      height: this.height,\\n    } = this.#highlightOutlines.box);\\n\\n    const outlinerForOutline = new Outliner(\\n      this.#boxes,\\n      \u002F* borderWidth = *\u002F 0.0025,\\n      \u002F* innerMargin = *\u002F 0.001,\\n      this._uiManager.direction === \\\"ltr\\\"\\n    );\\n    this.#focusOutlines = outlinerForOutline.getOutlines();\\n\\n    \u002F\u002F The last point is in the pages coordinate system.\\n    const { lastPoint } = this.#focusOutlines.box;\\n    this.#lastPoint = [\\n      (lastPoint[0] - this.x) \u002F this.width,\\n      (lastPoint[1] - this.y) \u002F this.height,\\n    ];\\n  }\\n\\n  #createFreeOutlines({ highlightOutlines, highlightId, clipPathId }) {\\n    this.#highlightOutlines = highlightOutlines;\\n    const extraThickness = 1.5;\\n    this.#focusOutlines = highlightOutlines.getNewOutline(\\n      \u002F* Slightly bigger than the highlight in order to have a little\\n         space between the highlight and the outline. *\u002F\\n      this.#thickness \u002F 2 + extraThickness,\\n      \u002F* innerMargin = *\u002F 0.0025\\n    );\\n\\n    if (highlightId >= 0) {\\n      this.#id = highlightId;\\n      this.#clipPathId = clipPathId;\\n      \u002F\u002F We need to redraw the highlight because we change the coordinates to be\\n      \u002F\u002F in the box coordinate system.\\n      this.parent.drawLayer.finalizeLine(highlightId, highlightOutlines);\\n      this.#outlineId = this.parent.drawLayer.highlightOutline(\\n        this.#focusOutlines\\n      );\\n    } else if (this.parent) {\\n      const angle = this.parent.viewport.rotation;\\n      this.parent.drawLayer.updateLine(this.#id, highlightOutlines);\\n      this.parent.drawLayer.updateBox(\\n        this.#id,\\n        HighlightEditor.#rotateBbox(\\n          this.#highlightOutlines.box,\\n          (angle - this.rotation + 360) % 360\\n        )\\n      );\\n\\n      this.parent.drawLayer.updateLine(this.#outlineId, this.#focusOutlines);\\n      this.parent.drawLayer.updateBox(\\n        this.#outlineId,\\n        HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle)\\n      );\\n    }\\n    const { x, y, width, height } = highlightOutlines.box;\\n    switch (this.rotation) {\\n      case 0:\\n        this.x = x;\\n        this.y = y;\\n        this.width = width;\\n        this.height = height;\\n        break;\\n      case 90: {\\n        const [pageWidth, pageHeight] = this.parentDimensions;\\n        this.x = y;\\n        this.y = 1 - x;\\n        this.width = (width * pageHeight) \u002F pageWidth;\\n        this.height = (height * pageWidth) \u002F pageHeight;\\n        break;\\n      }\\n      case 180:\\n        this.x = 1 - x;\\n        this.y = 1 - y;\\n        this.width = width;\\n        this.height = height;\\n        break;\\n      case 270: {\\n        const [pageWidth, pageHeight] = this.parentDimensions;\\n        this.x = 1 - y;\\n        this.y = x;\\n        this.width = (width * pageHeight) \u002F pageWidth;\\n        this.height = (height * pageWidth) \u002F pageHeight;\\n        break;\\n      }\\n    }\\n\\n    const { lastPoint } = this.#focusOutlines.box;\\n    this.#lastPoint = [(lastPoint[0] - x) \u002F width, (lastPoint[1] - y) \u002F height];\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static initialize(l10n, uiManager) {\\n    AnnotationEditor.initialize(l10n, uiManager);\\n    HighlightEditor._defaultColor ||=\\n      uiManager.highlightColors?.values().next().value || \\\"#fff066\\\";\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static updateDefaultParams(type, value) {\\n    switch (type) {\\n      case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\\n        HighlightEditor._defaultColor = value;\\n        break;\\n      case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\\n        HighlightEditor._defaultThickness = value;\\n        break;\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  translateInPage(x, y) {}\\n\\n  \u002F** @inheritdoc *\u002F\\n  get toolbarPosition() {\\n    return this.#lastPoint;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  updateParams(type, value) {\\n    switch (type) {\\n      case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\\n        this.#updateColor(value);\\n        break;\\n      case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\\n        this.#updateThickness(value);\\n        break;\\n    }\\n  }\\n\\n  static get defaultPropertiesToUpdate() {\\n    return [\\n      [\\n        AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR,\\n        HighlightEditor._defaultColor,\\n      ],\\n      [\\n        AnnotationEditorParamsType.HIGHLIGHT_THICKNESS,\\n        HighlightEditor._defaultThickness,\\n      ],\\n    ];\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  get propertiesToUpdate() {\\n    return [\\n      [\\n        AnnotationEditorParamsType.HIGHLIGHT_COLOR,\\n        this.color || HighlightEditor._defaultColor,\\n      ],\\n      [\\n        AnnotationEditorParamsType.HIGHLIGHT_THICKNESS,\\n        this.#thickness || HighlightEditor._defaultThickness,\\n      ],\\n      [AnnotationEditorParamsType.HIGHLIGHT_FREE, this.#isFreeHighlight],\\n    ];\\n  }\\n\\n  \u002F**\\n   * Update the color and make this action undoable.\\n   * @param {string} color\\n   *\u002F\\n  #updateColor(color) {\\n    const setColor = col => {\\n      this.color = col;\\n      this.parent?.drawLayer.changeColor(this.#id, col);\\n      this.#colorPicker?.updateColor(col);\\n    };\\n    const savedColor = this.color;\\n    this.addCommands({\\n      cmd: setColor.bind(this, color),\\n      undo: setColor.bind(this, savedColor),\\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\\n      mustExec: true,\\n      type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\\n      overwriteIfSameType: true,\\n      keepUndo: true,\\n    });\\n\\n    this._reportTelemetry(\\n      {\\n        action: \\\"color_changed\\\",\\n        color: this._uiManager.highlightColorNames.get(color),\\n      },\\n      \u002F* mustWait = *\u002F true\\n    );\\n  }\\n\\n  \u002F**\\n   * Update the thickness and make this action undoable.\\n   * @param {number} thickness\\n   *\u002F\\n  #updateThickness(thickness) {\\n    const savedThickness = this.#thickness;\\n    const setThickness = th => {\\n      this.#thickness = th;\\n      this.#changeThickness(th);\\n    };\\n    this.addCommands({\\n      cmd: setThickness.bind(this, thickness),\\n      undo: setThickness.bind(this, savedThickness),\\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\\n      mustExec: true,\\n      type: AnnotationEditorParamsType.INK_THICKNESS,\\n      overwriteIfSameType: true,\\n      keepUndo: true,\\n    });\\n    this._reportTelemetry(\\n      { action: \\\"thickness_changed\\\", thickness },\\n      \u002F* mustWait = *\u002F true\\n    );\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  async addEditToolbar() {\\n    const toolbar = await super.addEditToolbar();\\n    if (!toolbar) {\\n      return null;\\n    }\\n    if (this._uiManager.highlightColors) {\\n      this.#colorPicker = new ColorPicker({ editor: this });\\n      toolbar.addColorPicker(this.#colorPicker);\\n    }\\n    return toolbar;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  disableEditing() {\\n    super.disableEditing();\\n    this.div.classList.toggle(\\\"disabled\\\", true);\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  enableEditing() {\\n    super.enableEditing();\\n    this.div.classList.toggle(\\\"disabled\\\", false);\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  fixAndSetPosition() {\\n    return super.fixAndSetPosition(this.#getRotation());\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  getBaseTranslation() {\\n    \u002F\u002F The editor itself doesn't have any CSS border (we're drawing one\\n    \u002F\u002F ourselves in using SVG).\\n    return [0, 0];\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  getRect(tx, ty) {\\n    return super.getRect(tx, ty, this.#getRotation());\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  onceAdded() {\\n    this.parent.addUndoableEditor(this);\\n    this.div.focus();\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  remove() {\\n    this.#cleanDrawLayer();\\n    this._reportTelemetry({\\n      action: \\\"deleted\\\",\\n    });\\n    super.remove();\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  rebuild() {\\n    if (!this.parent) {\\n      return;\\n    }\\n    super.rebuild();\\n    if (this.div === null) {\\n      return;\\n    }\\n\\n    this.#addToDrawLayer();\\n\\n    if (!this.isAttachedToDOM) {\\n      \u002F\u002F At some point this editor was removed and we're rebuilding it,\\n      \u002F\u002F hence we must add it to its parent.\\n      this.parent.add(this);\\n    }\\n  }\\n\\n  setParent(parent) {\\n    let mustBeSelected = false;\\n    if (this.parent && !parent) {\\n      this.#cleanDrawLayer();\\n    } else if (parent) {\\n      this.#addToDrawLayer(parent);\\n      \u002F\u002F If mustBeSelected is true it means that this editor was selected\\n      \u002F\u002F when its parent has been destroyed, hence we must select it again.\\n      mustBeSelected =\\n        !this.parent && this.div?.classList.contains(\\\"selectedEditor\\\");\\n    }\\n    super.setParent(parent);\\n    this.show(this._isVisible);\\n    if (mustBeSelected) {\\n      \u002F\u002F We select it after the parent has been set.\\n      this.select();\\n    }\\n  }\\n\\n  #changeThickness(thickness) {\\n    if (!this.#isFreeHighlight) {\\n      return;\\n    }\\n    this.#createFreeOutlines({\\n      highlightOutlines: this.#highlightOutlines.getNewOutline(thickness \u002F 2),\\n    });\\n    this.fixAndSetPosition();\\n    const [parentWidth, parentHeight] = this.parentDimensions;\\n    this.setDims(this.width * parentWidth, this.height * parentHeight);\\n  }\\n\\n  #cleanDrawLayer() {\\n    if (this.#id === null || !this.parent) {\\n      return;\\n    }\\n    this.parent.drawLayer.remove(this.#id);\\n    this.#id = null;\\n    this.parent.drawLayer.remove(this.#outlineId);\\n    this.#outlineId = null;\\n  }\\n\\n  #addToDrawLayer(parent = this.parent) {\\n    if (this.#id !== null) {\\n      return;\\n    }\\n    ({ id: this.#id, clipPathId: this.#clipPathId } =\\n      parent.drawLayer.highlight(\\n        this.#highlightOutlines,\\n        this.color,\\n        this.#opacity\\n      ));\\n    this.#outlineId = parent.drawLayer.highlightOutline(this.#focusOutlines);\\n    if (this.#highlightDiv) {\\n      this.#highlightDiv.style.clipPath = this.#clipPathId;\\n    }\\n  }\\n\\n  static #rotateBbox({ x, y, width, height }, angle) {\\n    switch (angle) {\\n      case 90:\\n        return {\\n          x: 1 - y - height,\\n          y: x,\\n          width: height,\\n          height: width,\\n        };\\n      case 180:\\n        return {\\n          x: 1 - x - width,\\n          y: 1 - y - height,\\n          width,\\n          height,\\n        };\\n      case 270:\\n        return {\\n          x: y,\\n          y: 1 - x - width,\\n          width: height,\\n          height: width,\\n        };\\n    }\\n    return {\\n      x,\\n      y,\\n      width,\\n      height,\\n    };\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  rotate(angle) {\\n    \u002F\u002F We need to rotate the svgs because of the coordinates system.\\n    const { drawLayer } = this.parent;\\n    let box;\\n    if (this.#isFreeHighlight) {\\n      angle = (angle - this.rotation + 360) % 360;\\n      box = HighlightEditor.#rotateBbox(this.#highlightOutlines.box, angle);\\n    } else {\\n      \u002F\u002F An highlight annotation is always drawn horizontally.\\n      box = HighlightEditor.#rotateBbox(this, angle);\\n    }\\n    drawLayer.rotate(this.#id, angle);\\n    drawLayer.rotate(this.#outlineId, angle);\\n    drawLayer.updateBox(this.#id, box);\\n    drawLayer.updateBox(\\n      this.#outlineId,\\n      HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle)\\n    );\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  render() {\\n    if (this.div) {\\n      return this.div;\\n    }\\n\\n    const div = super.render();\\n    if (this.#text) {\\n      div.setAttribute(\\\"aria-label\\\", this.#text);\\n      div.setAttribute(\\\"role\\\", \\\"mark\\\");\\n    }\\n    if (this.#isFreeHighlight) {\\n      div.classList.add(\\\"free\\\");\\n    } else {\\n      this.div.addEventListener(\\\"keydown\\\", this.#boundKeydown);\\n    }\\n    const highlightDiv = (this.#highlightDiv = document.createElement(\\\"div\\\"));\\n    div.append(highlightDiv);\\n    highlightDiv.setAttribute(\\\"aria-hidden\\\", \\\"true\\\");\\n    highlightDiv.className = \\\"internal\\\";\\n    highlightDiv.style.clipPath = this.#clipPathId;\\n    const [parentWidth, parentHeight] = this.parentDimensions;\\n    this.setDims(this.width * parentWidth, this.height * parentHeight);\\n\\n    bindEvents(this, this.#highlightDiv, [\\\"pointerover\\\", \\\"pointerleave\\\"]);\\n    this.enableEditing();\\n\\n    return div;\\n  }\\n\\n  pointerover() {\\n    this.parent.drawLayer.addClass(this.#outlineId, \\\"hovered\\\");\\n  }\\n\\n  pointerleave() {\\n    this.parent.drawLayer.removeClass(this.#outlineId, \\\"hovered\\\");\\n  }\\n\\n  #keydown(event) {\\n    HighlightEditor._keyboardManager.exec(this, event);\\n  }\\n\\n  _moveCaret(direction) {\\n    this.parent.unselect(this);\\n    switch (direction) {\\n      case 0 \u002F* left *\u002F:\\n      case 2 \u002F* up *\u002F:\\n        this.#setCaret(\u002F* start = *\u002F true);\\n        break;\\n      case 1 \u002F* right *\u002F:\\n      case 3 \u002F* down *\u002F:\\n        this.#setCaret(\u002F* start = *\u002F false);\\n        break;\\n    }\\n  }\\n\\n  #setCaret(start) {\\n    if (!this.#anchorNode) {\\n      return;\\n    }\\n    const selection = window.getSelection();\\n    if (start) {\\n      selection.setPosition(this.#anchorNode, this.#anchorOffset);\\n    } else {\\n      selection.setPosition(this.#focusNode, this.#focusOffset);\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  select() {\\n    super.select();\\n    if (!this.#outlineId) {\\n      return;\\n    }\\n    this.parent?.drawLayer.removeClass(this.#outlineId, \\\"hovered\\\");\\n    this.parent?.drawLayer.addClass(this.#outlineId, \\\"selected\\\");\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  unselect() {\\n    super.unselect();\\n    if (!this.#outlineId) {\\n      return;\\n    }\\n    this.parent?.drawLayer.removeClass(this.#outlineId, \\\"selected\\\");\\n    if (!this.#isFreeHighlight) {\\n      this.#setCaret(\u002F* start = *\u002F false);\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  get _mustFixPosition() {\\n    return !this.#isFreeHighlight;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  show(visible = this._isVisible) {\\n    super.show(visible);\\n    if (this.parent) {\\n      this.parent.drawLayer.show(this.#id, visible);\\n      this.parent.drawLayer.show(this.#outlineId, visible);\\n    }\\n  }\\n\\n  #getRotation() {\\n    \u002F\u002F Highlight annotations are always drawn horizontally but if\\n    \u002F\u002F a free highlight annotation can be rotated.\\n    return this.#isFreeHighlight ? this.rotation : 0;\\n  }\\n\\n  #serializeBoxes() {\\n    if (this.#isFreeHighlight) {\\n      return null;\\n    }\\n    const [pageWidth, pageHeight] = this.pageDimensions;\\n    const boxes = this.#boxes;\\n    const quadPoints = new Array(boxes.length * 8);\\n    let i = 0;\\n    for (const { x, y, width, height } of boxes) {\\n      const sx = x * pageWidth;\\n      const sy = (1 - y - height) * pageHeight;\\n      \u002F\u002F The specifications say that the rectangle should start from the bottom\\n      \u002F\u002F left corner and go counter-clockwise.\\n      \u002F\u002F But when opening the file in Adobe Acrobat it appears that this isn't\\n      \u002F\u002F correct hence the 4th and 6th numbers are just swapped.\\n      quadPoints[i] = quadPoints[i + 4] = sx;\\n      quadPoints[i + 1] = quadPoints[i + 3] = sy;\\n      quadPoints[i + 2] = quadPoints[i + 6] = sx + width * pageWidth;\\n      quadPoints[i + 5] = quadPoints[i + 7] = sy + height * pageHeight;\\n      i += 8;\\n    }\\n    return quadPoints;\\n  }\\n\\n  #serializeOutlines(rect) {\\n    return this.#highlightOutlines.serialize(rect, this.#getRotation());\\n  }\\n\\n  static startHighlighting(parent, isLTR, { target: textLayer, x, y }) {\\n    const {\\n      x: layerX,\\n      y: layerY,\\n      width: parentWidth,\\n      height: parentHeight,\\n    } = textLayer.getBoundingClientRect();\\n    const pointerMove = e => {\\n      this.#highlightMove(parent, e);\\n    };\\n    const pointerDownOptions = { capture: true, passive: false };\\n    const pointerDown = e => {\\n      \u002F\u002F Avoid to have undesired clicks during the drawing.\\n      e.preventDefault();\\n      e.stopPropagation();\\n    };\\n    const pointerUpCallback = e => {\\n      textLayer.removeEventListener(\\\"pointermove\\\", pointerMove);\\n      window.removeEventListener(\\\"blur\\\", pointerUpCallback);\\n      window.removeEventListener(\\\"pointerup\\\", pointerUpCallback);\\n      window.removeEventListener(\\n        \\\"pointerdown\\\",\\n        pointerDown,\\n        pointerDownOptions\\n      );\\n      window.removeEventListener(\\\"contextmenu\\\", noContextMenu);\\n      this.#endHighlight(parent, e);\\n    };\\n    window.addEventListener(\\\"blur\\\", pointerUpCallback);\\n    window.addEventListener(\\\"pointerup\\\", pointerUpCallback);\\n    window.addEventListener(\\\"pointerdown\\\", pointerDown, pointerDownOptions);\\n    window.addEventListener(\\\"contextmenu\\\", noContextMenu);\\n\\n    textLayer.addEventListener(\\\"pointermove\\\", pointerMove);\\n    this._freeHighlight = new FreeOutliner(\\n      { x, y },\\n      [layerX, layerY, parentWidth, parentHeight],\\n      parent.scale,\\n      this._defaultThickness \u002F 2,\\n      isLTR,\\n      \u002F* innerMargin = *\u002F 0.001\\n    );\\n    ({ id: this._freeHighlightId, clipPathId: this._freeHighlightClipId } =\\n      parent.drawLayer.highlight(\\n        this._freeHighlight,\\n        this._defaultColor,\\n        this._defaultOpacity,\\n        \u002F* isPathUpdatable = *\u002F true\\n      ));\\n  }\\n\\n  static #highlightMove(parent, event) {\\n    if (this._freeHighlight.add(event)) {\\n      \u002F\u002F Redraw only if the point has been added.\\n      parent.drawLayer.updatePath(this._freeHighlightId, this._freeHighlight);\\n    }\\n  }\\n\\n  static #endHighlight(parent, event) {\\n    if (!this._freeHighlight.isEmpty()) {\\n      parent.createAndAddNewEditor(event, false, {\\n        highlightId: this._freeHighlightId,\\n        highlightOutlines: this._freeHighlight.getOutlines(),\\n        clipPathId: this._freeHighlightClipId,\\n        methodOfCreation: \\\"main_toolbar\\\",\\n      });\\n    } else {\\n      parent.drawLayer.removeFreeHighlight(this._freeHighlightId);\\n    }\\n    this._freeHighlightId = -1;\\n    this._freeHighlight = null;\\n    this._freeHighlightClipId = \\\"\\\";\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static deserialize(data, parent, uiManager) {\\n    const editor = super.deserialize(data, parent, uiManager);\\n\\n    const {\\n      rect: [blX, blY, trX, trY],\\n      color,\\n      quadPoints,\\n    } = data;\\n    editor.color = Util.makeHexColor(...color);\\n    editor.#opacity = data.opacity;\\n\\n    const [pageWidth, pageHeight] = editor.pageDimensions;\\n    editor.width = (trX - blX) \u002F pageWidth;\\n    editor.height = (trY - blY) \u002F pageHeight;\\n    const boxes = (editor.#boxes = []);\\n    for (let i = 0; i \u003C quadPoints.length; i += 8) {\\n      boxes.push({\\n        x: (quadPoints[4] - trX) \u002F pageWidth,\\n        y: (trY - (1 - quadPoints[i + 5])) \u002F pageHeight,\\n        width: (quadPoints[i + 2] - quadPoints[i]) \u002F pageWidth,\\n        height: (quadPoints[i + 5] - quadPoints[i + 1]) \u002F pageHeight,\\n      });\\n    }\\n    editor.#createOutlines();\\n\\n    return editor;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  serialize(isForCopying = false) {\\n    \u002F\u002F It doesn't make sense to copy\u002Fpaste a highlight annotation.\\n    if (this.isEmpty() || isForCopying) {\\n      return null;\\n    }\\n\\n    const rect = this.getRect(0, 0);\\n    const color = AnnotationEditor._colorManager.convert(this.color);\\n\\n    return {\\n      annotationType: AnnotationEditorType.HIGHLIGHT,\\n      color,\\n      opacity: this.#opacity,\\n      thickness: this.#thickness,\\n      quadPoints: this.#serializeBoxes(),\\n      outlines: this.#serializeOutlines(rect),\\n      pageIndex: this.pageIndex,\\n      rect,\\n      rotation: this.#getRotation(),\\n      structTreeParentId: this._structTreeParentId,\\n    };\\n  }\\n\\n  static canCreateNewEmptyEditor() {\\n    return false;\\n  }\\n}\\n\\nexport { HighlightEditor };\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  AnnotationEditorParamsType,\\n  AnnotationEditorType,\\n  Util,\\n} from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport { AnnotationEditor } from \\\".\u002Feditor.js\\\";\\nimport { InkAnnotationElement } from \\\"..\u002Fannotation_layer.js\\\";\\nimport { noContextMenu } from \\\"..\u002Fdisplay_utils.js\\\";\\nimport { opacityToHex } from \\\".\u002Ftools.js\\\";\\n\\n\u002F**\\n * Basic draw editor in order to generate an Ink annotation.\\n *\u002F\\nclass InkEditor extends AnnotationEditor {\\n  #baseHeight = 0;\\n\\n  #baseWidth = 0;\\n\\n  #boundCanvasPointermove = this.canvasPointermove.bind(this);\\n\\n  #boundCanvasPointerleave = this.canvasPointerleave.bind(this);\\n\\n  #boundCanvasPointerup = this.canvasPointerup.bind(this);\\n\\n  #boundCanvasPointerdown = this.canvasPointerdown.bind(this);\\n\\n  #canvasContextMenuTimeoutId = null;\\n\\n  #currentPath2D = new Path2D();\\n\\n  #disableEditing = false;\\n\\n  #hasSomethingToDraw = false;\\n\\n  #isCanvasInitialized = false;\\n\\n  #observer = null;\\n\\n  #realWidth = 0;\\n\\n  #realHeight = 0;\\n\\n  #requestFrameCallback = null;\\n\\n  static _defaultColor = null;\\n\\n  static _defaultOpacity = 1;\\n\\n  static _defaultThickness = 1;\\n\\n  static _type = \\\"ink\\\";\\n\\n  static _editorType = AnnotationEditorType.INK;\\n\\n  constructor(params) {\\n    super({ ...params, name: \\\"inkEditor\\\" });\\n    this.color = params.color || null;\\n    this.thickness = params.thickness || null;\\n    this.opacity = params.opacity || null;\\n    this.paths = [];\\n    this.bezierPath2D = [];\\n    this.allRawPaths = [];\\n    this.currentPath = [];\\n    this.scaleFactor = 1;\\n    this.translationX = this.translationY = 0;\\n    this.x = 0;\\n    this.y = 0;\\n    this._willKeepAspectRatio = true;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static initialize(l10n, uiManager) {\\n    AnnotationEditor.initialize(l10n, uiManager);\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static updateDefaultParams(type, value) {\\n    switch (type) {\\n      case AnnotationEditorParamsType.INK_THICKNESS:\\n        InkEditor._defaultThickness = value;\\n        break;\\n      case AnnotationEditorParamsType.INK_COLOR:\\n        InkEditor._defaultColor = value;\\n        break;\\n      case AnnotationEditorParamsType.INK_OPACITY:\\n        InkEditor._defaultOpacity = value \u002F 100;\\n        break;\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  updateParams(type, value) {\\n    switch (type) {\\n      case AnnotationEditorParamsType.INK_THICKNESS:\\n        this.#updateThickness(value);\\n        break;\\n      case AnnotationEditorParamsType.INK_COLOR:\\n        this.#updateColor(value);\\n        break;\\n      case AnnotationEditorParamsType.INK_OPACITY:\\n        this.#updateOpacity(value);\\n        break;\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static get defaultPropertiesToUpdate() {\\n    return [\\n      [AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness],\\n      [\\n        AnnotationEditorParamsType.INK_COLOR,\\n        InkEditor._defaultColor || AnnotationEditor._defaultLineColor,\\n      ],\\n      [\\n        AnnotationEditorParamsType.INK_OPACITY,\\n        Math.round(InkEditor._defaultOpacity * 100),\\n      ],\\n    ];\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  get propertiesToUpdate() {\\n    return [\\n      [\\n        AnnotationEditorParamsType.INK_THICKNESS,\\n        this.thickness || InkEditor._defaultThickness,\\n      ],\\n      [\\n        AnnotationEditorParamsType.INK_COLOR,\\n        this.color ||\\n          InkEditor._defaultColor ||\\n          AnnotationEditor._defaultLineColor,\\n      ],\\n      [\\n        AnnotationEditorParamsType.INK_OPACITY,\\n        Math.round(100 * (this.opacity ?? InkEditor._defaultOpacity)),\\n      ],\\n    ];\\n  }\\n\\n  \u002F**\\n   * Update the thickness and make this action undoable.\\n   * @param {number} thickness\\n   *\u002F\\n  #updateThickness(thickness) {\\n    const setThickness = th => {\\n      this.thickness = th;\\n      this.#fitToContent();\\n    };\\n    const savedThickness = this.thickness;\\n    this.addCommands({\\n      cmd: setThickness.bind(this, thickness),\\n      undo: setThickness.bind(this, savedThickness),\\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\\n      mustExec: true,\\n      type: AnnotationEditorParamsType.INK_THICKNESS,\\n      overwriteIfSameType: true,\\n      keepUndo: true,\\n    });\\n  }\\n\\n  \u002F**\\n   * Update the color and make this action undoable.\\n   * @param {string} color\\n   *\u002F\\n  #updateColor(color) {\\n    const setColor = col => {\\n      this.color = col;\\n      this.#redraw();\\n    };\\n    const savedColor = this.color;\\n    this.addCommands({\\n      cmd: setColor.bind(this, color),\\n      undo: setColor.bind(this, savedColor),\\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\\n      mustExec: true,\\n      type: AnnotationEditorParamsType.INK_COLOR,\\n      overwriteIfSameType: true,\\n      keepUndo: true,\\n    });\\n  }\\n\\n  \u002F**\\n   * Update the opacity and make this action undoable.\\n   * @param {number} opacity\\n   *\u002F\\n  #updateOpacity(opacity) {\\n    const setOpacity = op => {\\n      this.opacity = op;\\n      this.#redraw();\\n    };\\n    opacity \u002F= 100;\\n    const savedOpacity = this.opacity;\\n    this.addCommands({\\n      cmd: setOpacity.bind(this, opacity),\\n      undo: setOpacity.bind(this, savedOpacity),\\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\\n      mustExec: true,\\n      type: AnnotationEditorParamsType.INK_OPACITY,\\n      overwriteIfSameType: true,\\n      keepUndo: true,\\n    });\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  rebuild() {\\n    if (!this.parent) {\\n      return;\\n    }\\n    super.rebuild();\\n    if (this.div === null) {\\n      return;\\n    }\\n\\n    if (!this.canvas) {\\n      this.#createCanvas();\\n      this.#createObserver();\\n    }\\n\\n    if (!this.isAttachedToDOM) {\\n      \u002F\u002F At some point this editor was removed and we're rebuilding it,\\n      \u002F\u002F hence we must add it to its parent.\\n      this.parent.add(this);\\n      this.#setCanvasDims();\\n    }\\n    this.#fitToContent();\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  remove() {\\n    if (this.canvas === null) {\\n      return;\\n    }\\n\\n    if (!this.isEmpty()) {\\n      this.commit();\\n    }\\n\\n    \u002F\u002F Destroy the canvas.\\n    this.canvas.width = this.canvas.height = 0;\\n    this.canvas.remove();\\n    this.canvas = null;\\n\\n    if (this.#canvasContextMenuTimeoutId) {\\n      clearTimeout(this.#canvasContextMenuTimeoutId);\\n      this.#canvasContextMenuTimeoutId = null;\\n    }\\n\\n    this.#observer.disconnect();\\n    this.#observer = null;\\n\\n    super.remove();\\n  }\\n\\n  setParent(parent) {\\n    if (!this.parent && parent) {\\n      \u002F\u002F We've a parent hence the rescale will be handled thanks to the\\n      \u002F\u002F ResizeObserver.\\n      this._uiManager.removeShouldRescale(this);\\n    } else if (this.parent && parent === null) {\\n      \u002F\u002F The editor is removed from the DOM, hence we handle the rescale thanks\\n      \u002F\u002F to the onScaleChanging callback.\\n      \u002F\u002F This way, it'll be saved\u002Fprinted correctly.\\n      this._uiManager.addShouldRescale(this);\\n    }\\n    super.setParent(parent);\\n  }\\n\\n  onScaleChanging() {\\n    const [parentWidth, parentHeight] = this.parentDimensions;\\n    const width = this.width * parentWidth;\\n    const height = this.height * parentHeight;\\n    this.setDimensions(width, height);\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  enableEditMode() {\\n    if (this.#disableEditing || this.canvas === null) {\\n      return;\\n    }\\n\\n    super.enableEditMode();\\n    this._isDraggable = false;\\n    this.canvas.addEventListener(\\\"pointerdown\\\", this.#boundCanvasPointerdown);\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  disableEditMode() {\\n    if (!this.isInEditMode() || this.canvas === null) {\\n      return;\\n    }\\n\\n    super.disableEditMode();\\n    this._isDraggable = !this.isEmpty();\\n    this.div.classList.remove(\\\"editing\\\");\\n\\n    this.canvas.removeEventListener(\\n      \\\"pointerdown\\\",\\n      this.#boundCanvasPointerdown\\n    );\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  onceAdded() {\\n    this._isDraggable = !this.isEmpty();\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  isEmpty() {\\n    return (\\n      this.paths.length === 0 ||\\n      (this.paths.length === 1 && this.paths[0].length === 0)\\n    );\\n  }\\n\\n  #getInitialBBox() {\\n    const {\\n      parentRotation,\\n      parentDimensions: [width, height],\\n    } = this;\\n    switch (parentRotation) {\\n      case 90:\\n        return [0, height, height, width];\\n      case 180:\\n        return [width, height, width, height];\\n      case 270:\\n        return [width, 0, height, width];\\n      default:\\n        return [0, 0, width, height];\\n    }\\n  }\\n\\n  \u002F**\\n   * Set line styles.\\n   *\u002F\\n  #setStroke() {\\n    const { ctx, color, opacity, thickness, parentScale, scaleFactor } = this;\\n    ctx.lineWidth = (thickness * parentScale) \u002F scaleFactor;\\n    ctx.lineCap = \\\"round\\\";\\n    ctx.lineJoin = \\\"round\\\";\\n    ctx.miterLimit = 10;\\n    ctx.strokeStyle = `${color}${opacityToHex(opacity)}`;\\n  }\\n\\n  \u002F**\\n   * Start to draw on the canvas.\\n   * @param {number} x\\n   * @param {number} y\\n   *\u002F\\n  #startDrawing(x, y) {\\n    this.canvas.addEventListener(\\\"contextmenu\\\", noContextMenu);\\n    this.canvas.addEventListener(\\\"pointerleave\\\", this.#boundCanvasPointerleave);\\n    this.canvas.addEventListener(\\\"pointermove\\\", this.#boundCanvasPointermove);\\n    this.canvas.addEventListener(\\\"pointerup\\\", this.#boundCanvasPointerup);\\n    this.canvas.removeEventListener(\\n      \\\"pointerdown\\\",\\n      this.#boundCanvasPointerdown\\n    );\\n\\n    this.isEditing = true;\\n    if (!this.#isCanvasInitialized) {\\n      this.#isCanvasInitialized = true;\\n      this.#setCanvasDims();\\n      this.thickness ||= InkEditor._defaultThickness;\\n      this.color ||=\\n        InkEditor._defaultColor || AnnotationEditor._defaultLineColor;\\n      this.opacity ??= InkEditor._defaultOpacity;\\n    }\\n    this.currentPath.push([x, y]);\\n    this.#hasSomethingToDraw = false;\\n    this.#setStroke();\\n\\n    this.#requestFrameCallback = () => {\\n      this.#drawPoints();\\n      if (this.#requestFrameCallback) {\\n        window.requestAnimationFrame(this.#requestFrameCallback);\\n      }\\n    };\\n    window.requestAnimationFrame(this.#requestFrameCallback);\\n  }\\n\\n  \u002F**\\n   * Draw on the canvas.\\n   * @param {number} x\\n   * @param {number} y\\n   *\u002F\\n  #draw(x, y) {\\n    const [lastX, lastY] = this.currentPath.at(-1);\\n    if (this.currentPath.length > 1 && x === lastX && y === lastY) {\\n      return;\\n    }\\n    const currentPath = this.currentPath;\\n    let path2D = this.#currentPath2D;\\n    currentPath.push([x, y]);\\n    this.#hasSomethingToDraw = true;\\n\\n    if (currentPath.length \u003C= 2) {\\n      path2D.moveTo(...currentPath[0]);\\n      path2D.lineTo(x, y);\\n      return;\\n    }\\n\\n    if (currentPath.length === 3) {\\n      this.#currentPath2D = path2D = new Path2D();\\n      path2D.moveTo(...currentPath[0]);\\n    }\\n\\n    this.#makeBezierCurve(\\n      path2D,\\n      ...currentPath.at(-3),\\n      ...currentPath.at(-2),\\n      x,\\n      y\\n    );\\n  }\\n\\n  #endPath() {\\n    if (this.currentPath.length === 0) {\\n      return;\\n    }\\n    const lastPoint = this.currentPath.at(-1);\\n    this.#currentPath2D.lineTo(...lastPoint);\\n  }\\n\\n  \u002F**\\n   * Stop to draw on the canvas.\\n   * @param {number} x\\n   * @param {number} y\\n   *\u002F\\n  #stopDrawing(x, y) {\\n    this.#requestFrameCallback = null;\\n\\n    x = Math.min(Math.max(x, 0), this.canvas.width);\\n    y = Math.min(Math.max(y, 0), this.canvas.height);\\n\\n    this.#draw(x, y);\\n    this.#endPath();\\n\\n    \u002F\u002F Interpolate the path entered by the user with some\\n    \u002F\u002F Bezier's curves in order to have a smoother path and\\n    \u002F\u002F to reduce the data size used to draw it in the PDF.\\n    let bezier;\\n    if (this.currentPath.length !== 1) {\\n      bezier = this.#generateBezierPoints();\\n    } else {\\n      \u002F\u002F We have only one point finally.\\n      const xy = [x, y];\\n      bezier = [[xy, xy.slice(), xy.slice(), xy]];\\n    }\\n    const path2D = this.#currentPath2D;\\n    const currentPath = this.currentPath;\\n    this.currentPath = [];\\n    this.#currentPath2D = new Path2D();\\n\\n    const cmd = () => {\\n      this.allRawPaths.push(currentPath);\\n      this.paths.push(bezier);\\n      this.bezierPath2D.push(path2D);\\n      this._uiManager.rebuild(this);\\n    };\\n\\n    const undo = () => {\\n      this.allRawPaths.pop();\\n      this.paths.pop();\\n      this.bezierPath2D.pop();\\n      if (this.paths.length === 0) {\\n        this.remove();\\n      } else {\\n        if (!this.canvas) {\\n          this.#createCanvas();\\n          this.#createObserver();\\n        }\\n        this.#fitToContent();\\n      }\\n    };\\n\\n    this.addCommands({ cmd, undo, mustExec: true });\\n  }\\n\\n  #drawPoints() {\\n    if (!this.#hasSomethingToDraw) {\\n      return;\\n    }\\n    this.#hasSomethingToDraw = false;\\n\\n    const thickness = Math.ceil(this.thickness * this.parentScale);\\n    const lastPoints = this.currentPath.slice(-3);\\n    const x = lastPoints.map(xy => xy[0]);\\n    const y = lastPoints.map(xy => xy[1]);\\n    const xMin = Math.min(...x) - thickness;\\n    const xMax = Math.max(...x) + thickness;\\n    const yMin = Math.min(...y) - thickness;\\n    const yMax = Math.max(...y) + thickness;\\n\\n    const { ctx } = this;\\n    ctx.save();\\n\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      \u002F\u002F In Chrome, the clip() method doesn't work as expected.\\n      ctx.clearRect(xMin, yMin, xMax - xMin, yMax - yMin);\\n      ctx.beginPath();\\n      ctx.rect(xMin, yMin, xMax - xMin, yMax - yMin);\\n      ctx.clip();\\n    } else {\\n      ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\\n    }\\n\\n    for (const path of this.bezierPath2D) {\\n      ctx.stroke(path);\\n    }\\n    ctx.stroke(this.#currentPath2D);\\n\\n    ctx.restore();\\n  }\\n\\n  #makeBezierCurve(path2D, x0, y0, x1, y1, x2, y2) {\\n    const prevX = (x0 + x1) \u002F 2;\\n    const prevY = (y0 + y1) \u002F 2;\\n    const x3 = (x1 + x2) \u002F 2;\\n    const y3 = (y1 + y2) \u002F 2;\\n\\n    path2D.bezierCurveTo(\\n      prevX + (2 * (x1 - prevX)) \u002F 3,\\n      prevY + (2 * (y1 - prevY)) \u002F 3,\\n      x3 + (2 * (x1 - x3)) \u002F 3,\\n      y3 + (2 * (y1 - y3)) \u002F 3,\\n      x3,\\n      y3\\n    );\\n  }\\n\\n  #generateBezierPoints() {\\n    const path = this.currentPath;\\n    if (path.length \u003C= 2) {\\n      return [[path[0], path[0], path.at(-1), path.at(-1)]];\\n    }\\n\\n    const bezierPoints = [];\\n    let i;\\n    let [x0, y0] = path[0];\\n    for (i = 1; i \u003C path.length - 2; i++) {\\n      const [x1, y1] = path[i];\\n      const [x2, y2] = path[i + 1];\\n      const x3 = (x1 + x2) \u002F 2;\\n      const y3 = (y1 + y2) \u002F 2;\\n\\n      \u002F\u002F The quadratic is: [[x0, y0], [x1, y1], [x3, y3]].\\n      \u002F\u002F Convert the quadratic to a cubic\\n      \u002F\u002F (see https:\u002F\u002Ffontforge.org\u002Fdocs\u002Ftechref\u002Fbezier.html#converting-truetype-to-postscript)\\n      const control1 = [x0 + (2 * (x1 - x0)) \u002F 3, y0 + (2 * (y1 - y0)) \u002F 3];\\n      const control2 = [x3 + (2 * (x1 - x3)) \u002F 3, y3 + (2 * (y1 - y3)) \u002F 3];\\n\\n      bezierPoints.push([[x0, y0], control1, control2, [x3, y3]]);\\n\\n      [x0, y0] = [x3, y3];\\n    }\\n\\n    const [x1, y1] = path[i];\\n    const [x2, y2] = path[i + 1];\\n\\n    \u002F\u002F The quadratic is: [[x0, y0], [x1, y1], [x2, y2]].\\n    const control1 = [x0 + (2 * (x1 - x0)) \u002F 3, y0 + (2 * (y1 - y0)) \u002F 3];\\n    const control2 = [x2 + (2 * (x1 - x2)) \u002F 3, y2 + (2 * (y1 - y2)) \u002F 3];\\n\\n    bezierPoints.push([[x0, y0], control1, control2, [x2, y2]]);\\n    return bezierPoints;\\n  }\\n\\n  \u002F**\\n   * Redraw all the paths.\\n   *\u002F\\n  #redraw() {\\n    if (this.isEmpty()) {\\n      this.#updateTransform();\\n      return;\\n    }\\n    this.#setStroke();\\n\\n    const { canvas, ctx } = this;\\n    ctx.setTransform(1, 0, 0, 1, 0, 0);\\n    ctx.clearRect(0, 0, canvas.width, canvas.height);\\n    this.#updateTransform();\\n\\n    for (const path of this.bezierPath2D) {\\n      ctx.stroke(path);\\n    }\\n  }\\n\\n  \u002F**\\n   * Commit the curves we have in this editor.\\n   *\u002F\\n  commit() {\\n    if (this.#disableEditing) {\\n      return;\\n    }\\n\\n    super.commit();\\n\\n    this.isEditing = false;\\n    this.disableEditMode();\\n\\n    \u002F\u002F This editor must be on top of the main ink editor.\\n    this.setInForeground();\\n\\n    this.#disableEditing = true;\\n    this.div.classList.add(\\\"disabled\\\");\\n\\n    this.#fitToContent(\u002F* firstTime = *\u002F true);\\n    this.select();\\n\\n    this.parent.addInkEditorIfNeeded(\u002F* isCommitting = *\u002F true);\\n\\n    \u002F\u002F When committing, the position of this editor is changed, hence we must\\n    \u002F\u002F move it to the right position in the DOM.\\n    this.moveInDOM();\\n    this.div.focus({\\n      preventScroll: true \u002F* See issue #15744 *\u002F,\\n    });\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  focusin(event) {\\n    if (!this._focusEventsAllowed) {\\n      return;\\n    }\\n    super.focusin(event);\\n    this.enableEditMode();\\n  }\\n\\n  \u002F**\\n   * onpointerdown callback for the canvas we're drawing on.\\n   * @param {PointerEvent} event\\n   *\u002F\\n  canvasPointerdown(event) {\\n    if (event.button !== 0 || !this.isInEditMode() || this.#disableEditing) {\\n      return;\\n    }\\n\\n    \u002F\u002F We want to draw on top of any other editors.\\n    \u002F\u002F Since it's the last child, there's no need to give it a higher z-index.\\n    this.setInForeground();\\n\\n    event.preventDefault();\\n\\n    if (!this.div.contains(document.activeElement)) {\\n      this.div.focus({\\n        preventScroll: true \u002F* See issue #17327 *\u002F,\\n      });\\n    }\\n\\n    this.#startDrawing(event.offsetX, event.offsetY);\\n  }\\n\\n  \u002F**\\n   * onpointermove callback for the canvas we're drawing on.\\n   * @param {PointerEvent} event\\n   *\u002F\\n  canvasPointermove(event) {\\n    event.preventDefault();\\n    this.#draw(event.offsetX, event.offsetY);\\n  }\\n\\n  \u002F**\\n   * onpointerup callback for the canvas we're drawing on.\\n   * @param {PointerEvent} event\\n   *\u002F\\n  canvasPointerup(event) {\\n    event.preventDefault();\\n    this.#endDrawing(event);\\n  }\\n\\n  \u002F**\\n   * onpointerleave callback for the canvas we're drawing on.\\n   * @param {PointerEvent} event\\n   *\u002F\\n  canvasPointerleave(event) {\\n    this.#endDrawing(event);\\n  }\\n\\n  \u002F**\\n   * End the drawing.\\n   * @param {PointerEvent} event\\n   *\u002F\\n  #endDrawing(event) {\\n    this.canvas.removeEventListener(\\n      \\\"pointerleave\\\",\\n      this.#boundCanvasPointerleave\\n    );\\n    this.canvas.removeEventListener(\\n      \\\"pointermove\\\",\\n      this.#boundCanvasPointermove\\n    );\\n    this.canvas.removeEventListener(\\\"pointerup\\\", this.#boundCanvasPointerup);\\n    this.canvas.addEventListener(\\\"pointerdown\\\", this.#boundCanvasPointerdown);\\n\\n    \u002F\u002F Slight delay to avoid the context menu to appear (it can happen on a long\\n    \u002F\u002F tap with a pen).\\n    if (this.#canvasContextMenuTimeoutId) {\\n      clearTimeout(this.#canvasContextMenuTimeoutId);\\n    }\\n    this.#canvasContextMenuTimeoutId = setTimeout(() => {\\n      this.#canvasContextMenuTimeoutId = null;\\n      this.canvas.removeEventListener(\\\"contextmenu\\\", noContextMenu);\\n    }, 10);\\n\\n    this.#stopDrawing(event.offsetX, event.offsetY);\\n\\n    this.addToAnnotationStorage();\\n\\n    \u002F\u002F Since the ink editor covers all of the page and we want to be able\\n    \u002F\u002F to select another editor, we just put this one in the background.\\n    this.setInBackground();\\n  }\\n\\n  \u002F**\\n   * Create the canvas element.\\n   *\u002F\\n  #createCanvas() {\\n    this.canvas = document.createElement(\\\"canvas\\\");\\n    this.canvas.width = this.canvas.height = 0;\\n    this.canvas.className = \\\"inkEditorCanvas\\\";\\n    this.canvas.setAttribute(\\\"data-l10n-id\\\", \\\"pdfjs-ink-canvas\\\");\\n\\n    this.div.append(this.canvas);\\n    this.ctx = this.canvas.getContext(\\\"2d\\\");\\n  }\\n\\n  \u002F**\\n   * Create the resize observer.\\n   *\u002F\\n  #createObserver() {\\n    this.#observer = new ResizeObserver(entries => {\\n      const rect = entries[0].contentRect;\\n      if (rect.width && rect.height) {\\n        this.setDimensions(rect.width, rect.height);\\n      }\\n    });\\n    this.#observer.observe(this.div);\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  get isResizable() {\\n    return !this.isEmpty() && this.#disableEditing;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  render() {\\n    if (this.div) {\\n      return this.div;\\n    }\\n\\n    let baseX, baseY;\\n    if (this.width) {\\n      baseX = this.x;\\n      baseY = this.y;\\n    }\\n\\n    super.render();\\n\\n    this.div.setAttribute(\\\"data-l10n-id\\\", \\\"pdfjs-ink\\\");\\n\\n    const [x, y, w, h] = this.#getInitialBBox();\\n    this.setAt(x, y, 0, 0);\\n    this.setDims(w, h);\\n\\n    this.#createCanvas();\\n\\n    if (this.width) {\\n      \u002F\u002F This editor was created in using copy (ctrl+c).\\n      const [parentWidth, parentHeight] = this.parentDimensions;\\n      this.setAspectRatio(this.width * parentWidth, this.height * parentHeight);\\n      this.setAt(\\n        baseX * parentWidth,\\n        baseY * parentHeight,\\n        this.width * parentWidth,\\n        this.height * parentHeight\\n      );\\n      this.#isCanvasInitialized = true;\\n      this.#setCanvasDims();\\n      this.setDims(this.width * parentWidth, this.height * parentHeight);\\n      this.#redraw();\\n      this.div.classList.add(\\\"disabled\\\");\\n    } else {\\n      this.div.classList.add(\\\"editing\\\");\\n      this.enableEditMode();\\n    }\\n\\n    this.#createObserver();\\n\\n    return this.div;\\n  }\\n\\n  #setCanvasDims() {\\n    if (!this.#isCanvasInitialized) {\\n      return;\\n    }\\n    const [parentWidth, parentHeight] = this.parentDimensions;\\n    this.canvas.width = Math.ceil(this.width * parentWidth);\\n    this.canvas.height = Math.ceil(this.height * parentHeight);\\n    this.#updateTransform();\\n  }\\n\\n  \u002F**\\n   * When the dimensions of the div change the inner canvas must\\n   * renew its dimensions, hence it must redraw its own contents.\\n   * @param {number} width - the new width of the div\\n   * @param {number} height - the new height of the div\\n   * @returns\\n   *\u002F\\n  setDimensions(width, height) {\\n    const roundedWidth = Math.round(width);\\n    const roundedHeight = Math.round(height);\\n    if (\\n      this.#realWidth === roundedWidth &&\\n      this.#realHeight === roundedHeight\\n    ) {\\n      return;\\n    }\\n\\n    this.#realWidth = roundedWidth;\\n    this.#realHeight = roundedHeight;\\n\\n    this.canvas.style.visibility = \\\"hidden\\\";\\n\\n    const [parentWidth, parentHeight] = this.parentDimensions;\\n    this.width = width \u002F parentWidth;\\n    this.height = height \u002F parentHeight;\\n    this.fixAndSetPosition();\\n\\n    if (this.#disableEditing) {\\n      this.#setScaleFactor(width, height);\\n    }\\n\\n    this.#setCanvasDims();\\n    this.#redraw();\\n\\n    this.canvas.style.visibility = \\\"visible\\\";\\n\\n    \u002F\u002F For any reason the dimensions couldn't be in percent but in pixels, hence\\n    \u002F\u002F we must fix them.\\n    this.fixDims();\\n  }\\n\\n  #setScaleFactor(width, height) {\\n    const padding = this.#getPadding();\\n    const scaleFactorW = (width - padding) \u002F this.#baseWidth;\\n    const scaleFactorH = (height - padding) \u002F this.#baseHeight;\\n    this.scaleFactor = Math.min(scaleFactorW, scaleFactorH);\\n  }\\n\\n  \u002F**\\n   * Update the canvas transform.\\n   *\u002F\\n  #updateTransform() {\\n    const padding = this.#getPadding() \u002F 2;\\n    this.ctx.setTransform(\\n      this.scaleFactor,\\n      0,\\n      0,\\n      this.scaleFactor,\\n      this.translationX * this.scaleFactor + padding,\\n      this.translationY * this.scaleFactor + padding\\n    );\\n  }\\n\\n  \u002F**\\n   * Convert into a Path2D.\\n   * @param {Array\u003CArray\u003Cnumber>>} bezier\\n   * @returns {Path2D}\\n   *\u002F\\n  static #buildPath2D(bezier) {\\n    const path2D = new Path2D();\\n    for (let i = 0, ii = bezier.length; i \u003C ii; i++) {\\n      const [first, control1, control2, second] = bezier[i];\\n      if (i === 0) {\\n        path2D.moveTo(...first);\\n      }\\n      path2D.bezierCurveTo(\\n        control1[0],\\n        control1[1],\\n        control2[0],\\n        control2[1],\\n        second[0],\\n        second[1]\\n      );\\n    }\\n    return path2D;\\n  }\\n\\n  static #toPDFCoordinates(points, rect, rotation) {\\n    const [blX, blY, trX, trY] = rect;\\n\\n    switch (rotation) {\\n      case 0:\\n        for (let i = 0, ii = points.length; i \u003C ii; i += 2) {\\n          points[i] += blX;\\n          points[i + 1] = trY - points[i + 1];\\n        }\\n        break;\\n      case 90:\\n        for (let i = 0, ii = points.length; i \u003C ii; i += 2) {\\n          const x = points[i];\\n          points[i] = points[i + 1] + blX;\\n          points[i + 1] = x + blY;\\n        }\\n        break;\\n      case 180:\\n        for (let i = 0, ii = points.length; i \u003C ii; i += 2) {\\n          points[i] = trX - points[i];\\n          points[i + 1] += blY;\\n        }\\n        break;\\n      case 270:\\n        for (let i = 0, ii = points.length; i \u003C ii; i += 2) {\\n          const x = points[i];\\n          points[i] = trX - points[i + 1];\\n          points[i + 1] = trY - x;\\n        }\\n        break;\\n      default:\\n        throw new Error(\\\"Invalid rotation\\\");\\n    }\\n    return points;\\n  }\\n\\n  static #fromPDFCoordinates(points, rect, rotation) {\\n    const [blX, blY, trX, trY] = rect;\\n\\n    switch (rotation) {\\n      case 0:\\n        for (let i = 0, ii = points.length; i \u003C ii; i += 2) {\\n          points[i] -= blX;\\n          points[i + 1] = trY - points[i + 1];\\n        }\\n        break;\\n      case 90:\\n        for (let i = 0, ii = points.length; i \u003C ii; i += 2) {\\n          const x = points[i];\\n          points[i] = points[i + 1] - blY;\\n          points[i + 1] = x - blX;\\n        }\\n        break;\\n      case 180:\\n        for (let i = 0, ii = points.length; i \u003C ii; i += 2) {\\n          points[i] = trX - points[i];\\n          points[i + 1] -= blY;\\n        }\\n        break;\\n      case 270:\\n        for (let i = 0, ii = points.length; i \u003C ii; i += 2) {\\n          const x = points[i];\\n          points[i] = trY - points[i + 1];\\n          points[i + 1] = trX - x;\\n        }\\n        break;\\n      default:\\n        throw new Error(\\\"Invalid rotation\\\");\\n    }\\n    return points;\\n  }\\n\\n  \u002F**\\n   * Transform and serialize the paths.\\n   * @param {number} s - scale factor\\n   * @param {number} tx - abscissa of the translation\\n   * @param {number} ty - ordinate of the translation\\n   * @param {Array\u003Cnumber>} rect - the bounding box of the annotation\\n   *\u002F\\n  #serializePaths(s, tx, ty, rect) {\\n    const paths = [];\\n    const padding = this.thickness \u002F 2;\\n    const shiftX = s * tx + padding;\\n    const shiftY = s * ty + padding;\\n    for (const bezier of this.paths) {\\n      const buffer = [];\\n      const points = [];\\n      for (let j = 0, jj = bezier.length; j \u003C jj; j++) {\\n        const [first, control1, control2, second] = bezier[j];\\n        if (first[0] === second[0] && first[1] === second[1] && jj === 1) {\\n          \u002F\u002F We have only one point.\\n          const p0 = s * first[0] + shiftX;\\n          const p1 = s * first[1] + shiftY;\\n          buffer.push(p0, p1);\\n          points.push(p0, p1);\\n          break;\\n        }\\n        const p10 = s * first[0] + shiftX;\\n        const p11 = s * first[1] + shiftY;\\n        const p20 = s * control1[0] + shiftX;\\n        const p21 = s * control1[1] + shiftY;\\n        const p30 = s * control2[0] + shiftX;\\n        const p31 = s * control2[1] + shiftY;\\n        const p40 = s * second[0] + shiftX;\\n        const p41 = s * second[1] + shiftY;\\n\\n        if (j === 0) {\\n          buffer.push(p10, p11);\\n          points.push(p10, p11);\\n        }\\n        buffer.push(p20, p21, p30, p31, p40, p41);\\n        points.push(p20, p21);\\n        if (j === jj - 1) {\\n          points.push(p40, p41);\\n        }\\n      }\\n      paths.push({\\n        bezier: InkEditor.#toPDFCoordinates(buffer, rect, this.rotation),\\n        points: InkEditor.#toPDFCoordinates(points, rect, this.rotation),\\n      });\\n    }\\n\\n    return paths;\\n  }\\n\\n  \u002F**\\n   * Get the bounding box containing all the paths.\\n   * @returns {Array\u003Cnumber>}\\n   *\u002F\\n  #getBbox() {\\n    let xMin = Infinity;\\n    let xMax = -Infinity;\\n    let yMin = Infinity;\\n    let yMax = -Infinity;\\n\\n    for (const path of this.paths) {\\n      for (const [first, control1, control2, second] of path) {\\n        const bbox = Util.bezierBoundingBox(\\n          ...first,\\n          ...control1,\\n          ...control2,\\n          ...second\\n        );\\n        xMin = Math.min(xMin, bbox[0]);\\n        yMin = Math.min(yMin, bbox[1]);\\n        xMax = Math.max(xMax, bbox[2]);\\n        yMax = Math.max(yMax, bbox[3]);\\n      }\\n    }\\n\\n    return [xMin, yMin, xMax, yMax];\\n  }\\n\\n  \u002F**\\n   * The bounding box is computed with null thickness, so we must take\\n   * it into account for the display.\\n   * It corresponds to the total padding, hence it should be divided by 2\\n   * in order to have left\u002Fright paddings.\\n   * @returns {number}\\n   *\u002F\\n  #getPadding() {\\n    return this.#disableEditing\\n      ? Math.ceil(this.thickness * this.parentScale)\\n      : 0;\\n  }\\n\\n  \u002F**\\n   * Set the div position and dimensions in order to fit to\\n   * the bounding box of the contents.\\n   * @returns {undefined}\\n   *\u002F\\n  #fitToContent(firstTime = false) {\\n    if (this.isEmpty()) {\\n      return;\\n    }\\n\\n    if (!this.#disableEditing) {\\n      this.#redraw();\\n      return;\\n    }\\n\\n    const bbox = this.#getBbox();\\n    const padding = this.#getPadding();\\n    this.#baseWidth = Math.max(AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);\\n    this.#baseHeight = Math.max(AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);\\n\\n    const width = Math.ceil(padding + this.#baseWidth * this.scaleFactor);\\n    const height = Math.ceil(padding + this.#baseHeight * this.scaleFactor);\\n\\n    const [parentWidth, parentHeight] = this.parentDimensions;\\n    this.width = width \u002F parentWidth;\\n    this.height = height \u002F parentHeight;\\n\\n    this.setAspectRatio(width, height);\\n\\n    const prevTranslationX = this.translationX;\\n    const prevTranslationY = this.translationY;\\n\\n    this.translationX = -bbox[0];\\n    this.translationY = -bbox[1];\\n    this.#setCanvasDims();\\n    this.#redraw();\\n\\n    this.#realWidth = width;\\n    this.#realHeight = height;\\n\\n    this.setDims(width, height);\\n    const unscaledPadding = firstTime ? padding \u002F this.scaleFactor \u002F 2 : 0;\\n    this.translate(\\n      prevTranslationX - this.translationX - unscaledPadding,\\n      prevTranslationY - this.translationY - unscaledPadding\\n    );\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static deserialize(data, parent, uiManager) {\\n    if (data instanceof InkAnnotationElement) {\\n      return null;\\n    }\\n    const editor = super.deserialize(data, parent, uiManager);\\n\\n    editor.thickness = data.thickness;\\n    editor.color = Util.makeHexColor(...data.color);\\n    editor.opacity = data.opacity;\\n\\n    const [pageWidth, pageHeight] = editor.pageDimensions;\\n    const width = editor.width * pageWidth;\\n    const height = editor.height * pageHeight;\\n    const scaleFactor = editor.parentScale;\\n    const padding = data.thickness \u002F 2;\\n\\n    editor.#disableEditing = true;\\n    editor.#realWidth = Math.round(width);\\n    editor.#realHeight = Math.round(height);\\n\\n    const { paths, rect, rotation } = data;\\n\\n    for (let { bezier } of paths) {\\n      bezier = InkEditor.#fromPDFCoordinates(bezier, rect, rotation);\\n      const path = [];\\n      editor.paths.push(path);\\n      let p0 = scaleFactor * (bezier[0] - padding);\\n      let p1 = scaleFactor * (bezier[1] - padding);\\n      for (let i = 2, ii = bezier.length; i \u003C ii; i += 6) {\\n        const p10 = scaleFactor * (bezier[i] - padding);\\n        const p11 = scaleFactor * (bezier[i + 1] - padding);\\n        const p20 = scaleFactor * (bezier[i + 2] - padding);\\n        const p21 = scaleFactor * (bezier[i + 3] - padding);\\n        const p30 = scaleFactor * (bezier[i + 4] - padding);\\n        const p31 = scaleFactor * (bezier[i + 5] - padding);\\n        path.push([\\n          [p0, p1],\\n          [p10, p11],\\n          [p20, p21],\\n          [p30, p31],\\n        ]);\\n        p0 = p30;\\n        p1 = p31;\\n      }\\n      const path2D = this.#buildPath2D(path);\\n      editor.bezierPath2D.push(path2D);\\n    }\\n\\n    const bbox = editor.#getBbox();\\n    editor.#baseWidth = Math.max(AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);\\n    editor.#baseHeight = Math.max(AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);\\n    editor.#setScaleFactor(width, height);\\n\\n    return editor;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  serialize() {\\n    if (this.isEmpty()) {\\n      return null;\\n    }\\n\\n    const rect = this.getRect(0, 0);\\n    const color = AnnotationEditor._colorManager.convert(this.ctx.strokeStyle);\\n\\n    return {\\n      annotationType: AnnotationEditorType.INK,\\n      color,\\n      thickness: this.thickness,\\n      opacity: this.opacity,\\n      paths: this.#serializePaths(\\n        this.scaleFactor \u002F this.parentScale,\\n        this.translationX,\\n        this.translationY,\\n        rect\\n      ),\\n      pageIndex: this.pageIndex,\\n      rect,\\n      rotation: this.rotation,\\n      structTreeParentId: this._structTreeParentId,\\n    };\\n  }\\n}\\n\\nexport { InkEditor };\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { AnnotationEditorType, shadow } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport { AnnotationEditor } from \\\".\u002Feditor.js\\\";\\nimport { PixelsPerInch } from \\\"..\u002Fdisplay_utils.js\\\";\\nimport { StampAnnotationElement } from \\\"..\u002Fannotation_layer.js\\\";\\n\\n\u002F**\\n * Basic text editor in order to create a FreeTex annotation.\\n *\u002F\\nclass StampEditor extends AnnotationEditor {\\n  #bitmap = null;\\n\\n  #bitmapId = null;\\n\\n  #bitmapPromise = null;\\n\\n  #bitmapUrl = null;\\n\\n  #bitmapFile = null;\\n\\n  #bitmapFileName = \\\"\\\";\\n\\n  #canvas = null;\\n\\n  #observer = null;\\n\\n  #resizeTimeoutId = null;\\n\\n  #isSvg = false;\\n\\n  #hasBeenAddedInUndoStack = false;\\n\\n  static _type = \\\"stamp\\\";\\n\\n  static _editorType = AnnotationEditorType.STAMP;\\n\\n  constructor(params) {\\n    super({ ...params, name: \\\"stampEditor\\\" });\\n    this.#bitmapUrl = params.bitmapUrl;\\n    this.#bitmapFile = params.bitmapFile;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static initialize(l10n, uiManager) {\\n    AnnotationEditor.initialize(l10n, uiManager);\\n  }\\n\\n  static get supportedTypes() {\\n    \u002F\u002F See https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FMedia\u002FFormats\u002FImage_types\\n    \u002F\u002F to know which types are supported by the browser.\\n    const types = [\\n      \\\"apng\\\",\\n      \\\"avif\\\",\\n      \\\"bmp\\\",\\n      \\\"gif\\\",\\n      \\\"jpeg\\\",\\n      \\\"png\\\",\\n      \\\"svg+xml\\\",\\n      \\\"webp\\\",\\n      \\\"x-icon\\\",\\n    ];\\n    return shadow(\\n      this,\\n      \\\"supportedTypes\\\",\\n      types.map(type => `image\u002F${type}`)\\n    );\\n  }\\n\\n  static get supportedTypesStr() {\\n    return shadow(this, \\\"supportedTypesStr\\\", this.supportedTypes.join(\\\",\\\"));\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static isHandlingMimeForPasting(mime) {\\n    return this.supportedTypes.includes(mime);\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static paste(item, parent) {\\n    parent.pasteEditor(AnnotationEditorType.STAMP, {\\n      bitmapFile: item.getAsFile(),\\n    });\\n  }\\n\\n  #getBitmapFetched(data, fromId = false) {\\n    if (!data) {\\n      this.remove();\\n      return;\\n    }\\n    this.#bitmap = data.bitmap;\\n    if (!fromId) {\\n      this.#bitmapId = data.id;\\n      this.#isSvg = data.isSvg;\\n    }\\n    if (data.file) {\\n      this.#bitmapFileName = data.file.name;\\n    }\\n    this.#createCanvas();\\n  }\\n\\n  #getBitmapDone() {\\n    this.#bitmapPromise = null;\\n    this._uiManager.enableWaiting(false);\\n    if (this.#canvas) {\\n      this.div.focus();\\n    }\\n  }\\n\\n  #getBitmap() {\\n    if (this.#bitmapId) {\\n      this._uiManager.enableWaiting(true);\\n      this._uiManager.imageManager\\n        .getFromId(this.#bitmapId)\\n        .then(data => this.#getBitmapFetched(data, \u002F* fromId = *\u002F true))\\n        .finally(() => this.#getBitmapDone());\\n      return;\\n    }\\n\\n    if (this.#bitmapUrl) {\\n      const url = this.#bitmapUrl;\\n      this.#bitmapUrl = null;\\n      this._uiManager.enableWaiting(true);\\n      this.#bitmapPromise = this._uiManager.imageManager\\n        .getFromUrl(url)\\n        .then(data => this.#getBitmapFetched(data))\\n        .finally(() => this.#getBitmapDone());\\n      return;\\n    }\\n\\n    if (this.#bitmapFile) {\\n      const file = this.#bitmapFile;\\n      this.#bitmapFile = null;\\n      this._uiManager.enableWaiting(true);\\n      this.#bitmapPromise = this._uiManager.imageManager\\n        .getFromFile(file)\\n        .then(data => this.#getBitmapFetched(data))\\n        .finally(() => this.#getBitmapDone());\\n      return;\\n    }\\n\\n    const input = document.createElement(\\\"input\\\");\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING\\\")) {\\n      input.hidden = true;\\n      input.id = \\\"stampEditorFileInput\\\";\\n      document.body.append(input);\\n    }\\n    input.type = \\\"file\\\";\\n    input.accept = StampEditor.supportedTypesStr;\\n    this.#bitmapPromise = new Promise(resolve => {\\n      input.addEventListener(\\\"change\\\", async () => {\\n        if (!input.files || input.files.length === 0) {\\n          this.remove();\\n        } else {\\n          this._uiManager.enableWaiting(true);\\n          const data = await this._uiManager.imageManager.getFromFile(\\n            input.files[0]\\n          );\\n          this.#getBitmapFetched(data);\\n        }\\n        if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING\\\")) {\\n          input.remove();\\n        }\\n        resolve();\\n      });\\n      input.addEventListener(\\\"cancel\\\", () => {\\n        this.remove();\\n        resolve();\\n      });\\n    }).finally(() => this.#getBitmapDone());\\n    if (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"TESTING\\\")) {\\n      input.click();\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  remove() {\\n    if (this.#bitmapId) {\\n      this.#bitmap = null;\\n      this._uiManager.imageManager.deleteId(this.#bitmapId);\\n      this.#canvas?.remove();\\n      this.#canvas = null;\\n      this.#observer?.disconnect();\\n      this.#observer = null;\\n      if (this.#resizeTimeoutId) {\\n        clearTimeout(this.#resizeTimeoutId);\\n        this.#resizeTimeoutId = null;\\n      }\\n    }\\n    super.remove();\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  rebuild() {\\n    if (!this.parent) {\\n      \u002F\u002F It's possible to have to rebuild an editor which is not on a visible\\n      \u002F\u002F page.\\n      if (this.#bitmapId) {\\n        this.#getBitmap();\\n      }\\n      return;\\n    }\\n    super.rebuild();\\n    if (this.div === null) {\\n      return;\\n    }\\n\\n    if (this.#bitmapId && this.#canvas === null) {\\n      this.#getBitmap();\\n    }\\n\\n    if (!this.isAttachedToDOM) {\\n      \u002F\u002F At some point this editor was removed and we're rebuilting it,\\n      \u002F\u002F hence we must add it to its parent.\\n      this.parent.add(this);\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  onceAdded() {\\n    this._isDraggable = true;\\n    this.div.focus();\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  isEmpty() {\\n    return !(\\n      this.#bitmapPromise ||\\n      this.#bitmap ||\\n      this.#bitmapUrl ||\\n      this.#bitmapFile ||\\n      this.#bitmapId\\n    );\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  get isResizable() {\\n    return true;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  render() {\\n    if (this.div) {\\n      return this.div;\\n    }\\n\\n    let baseX, baseY;\\n    if (this.width) {\\n      baseX = this.x;\\n      baseY = this.y;\\n    }\\n\\n    super.render();\\n    this.div.hidden = true;\\n\\n    this.addAltTextButton();\\n\\n    if (this.#bitmap) {\\n      this.#createCanvas();\\n    } else {\\n      this.#getBitmap();\\n    }\\n\\n    if (this.width) {\\n      \u002F\u002F This editor was created in using copy (ctrl+c).\\n      const [parentWidth, parentHeight] = this.parentDimensions;\\n      this.setAt(\\n        baseX * parentWidth,\\n        baseY * parentHeight,\\n        this.width * parentWidth,\\n        this.height * parentHeight\\n      );\\n    }\\n\\n    return this.div;\\n  }\\n\\n  #createCanvas() {\\n    const { div } = this;\\n    let { width, height } = this.#bitmap;\\n    const [pageWidth, pageHeight] = this.pageDimensions;\\n    const MAX_RATIO = 0.75;\\n    if (this.width) {\\n      width = this.width * pageWidth;\\n      height = this.height * pageHeight;\\n    } else if (\\n      width > MAX_RATIO * pageWidth ||\\n      height > MAX_RATIO * pageHeight\\n    ) {\\n      \u002F\u002F If the the image is too big compared to the page dimensions\\n      \u002F\u002F (more than MAX_RATIO) then we scale it down.\\n      const factor = Math.min(\\n        (MAX_RATIO * pageWidth) \u002F width,\\n        (MAX_RATIO * pageHeight) \u002F height\\n      );\\n      width *= factor;\\n      height *= factor;\\n    }\\n    const [parentWidth, parentHeight] = this.parentDimensions;\\n    this.setDims(\\n      (width * parentWidth) \u002F pageWidth,\\n      (height * parentHeight) \u002F pageHeight\\n    );\\n\\n    this._uiManager.enableWaiting(false);\\n    const canvas = (this.#canvas = document.createElement(\\\"canvas\\\"));\\n    div.append(canvas);\\n    div.hidden = false;\\n    this.#drawBitmap(width, height);\\n    this.#createObserver();\\n    if (!this.#hasBeenAddedInUndoStack) {\\n      this.parent.addUndoableEditor(this);\\n      this.#hasBeenAddedInUndoStack = true;\\n    }\\n\\n    \u002F\u002F There are multiple ways to add an image to the page, so here we just\\n    \u002F\u002F count the number of times an image is added to the page whatever the way\\n    \u002F\u002F is.\\n    this._reportTelemetry({\\n      action: \\\"inserted_image\\\",\\n    });\\n    if (this.#bitmapFileName) {\\n      canvas.setAttribute(\\\"aria-label\\\", this.#bitmapFileName);\\n    }\\n  }\\n\\n  \u002F**\\n   * When the dimensions of the div change the inner canvas must\\n   * renew its dimensions, hence it must redraw its own contents.\\n   * @param {number} width - the new width of the div\\n   * @param {number} height - the new height of the div\\n   * @returns\\n   *\u002F\\n  #setDimensions(width, height) {\\n    const [parentWidth, parentHeight] = this.parentDimensions;\\n    this.width = width \u002F parentWidth;\\n    this.height = height \u002F parentHeight;\\n    this.setDims(width, height);\\n    if (this._initialOptions?.isCentered) {\\n      this.center();\\n    } else {\\n      this.fixAndSetPosition();\\n    }\\n    this._initialOptions = null;\\n    if (this.#resizeTimeoutId !== null) {\\n      clearTimeout(this.#resizeTimeoutId);\\n    }\\n    \u002F\u002F When the user is resizing the editor we just use CSS to scale the image\\n    \u002F\u002F to avoid redrawing it too often.\\n    \u002F\u002F And once the user stops resizing the editor we redraw the image in\\n    \u002F\u002F rescaling it correctly (see this.#scaleBitmap).\\n    const TIME_TO_WAIT = 200;\\n    this.#resizeTimeoutId = setTimeout(() => {\\n      this.#resizeTimeoutId = null;\\n      this.#drawBitmap(width, height);\\n    }, TIME_TO_WAIT);\\n  }\\n\\n  #scaleBitmap(width, height) {\\n    const { width: bitmapWidth, height: bitmapHeight } = this.#bitmap;\\n\\n    let newWidth = bitmapWidth;\\n    let newHeight = bitmapHeight;\\n    let bitmap = this.#bitmap;\\n    while (newWidth > 2 * width || newHeight > 2 * height) {\\n      const prevWidth = newWidth;\\n      const prevHeight = newHeight;\\n\\n      if (newWidth > 2 * width) {\\n        \u002F\u002F See bug 1820511 (Windows specific bug).\\n        \u002F\u002F TODO: once the above bug is fixed we could revert to:\\n        \u002F\u002F newWidth = Math.ceil(newWidth \u002F 2);\\n        newWidth =\\n          newWidth >= 16384\\n            ? Math.floor(newWidth \u002F 2) - 1\\n            : Math.ceil(newWidth \u002F 2);\\n      }\\n      if (newHeight > 2 * height) {\\n        newHeight =\\n          newHeight >= 16384\\n            ? Math.floor(newHeight \u002F 2) - 1\\n            : Math.ceil(newHeight \u002F 2);\\n      }\\n\\n      const offscreen = new OffscreenCanvas(newWidth, newHeight);\\n      const ctx = offscreen.getContext(\\\"2d\\\");\\n      ctx.drawImage(\\n        bitmap,\\n        0,\\n        0,\\n        prevWidth,\\n        prevHeight,\\n        0,\\n        0,\\n        newWidth,\\n        newHeight\\n      );\\n      bitmap = offscreen.transferToImageBitmap();\\n    }\\n\\n    return bitmap;\\n  }\\n\\n  #drawBitmap(width, height) {\\n    width = Math.ceil(width);\\n    height = Math.ceil(height);\\n    const canvas = this.#canvas;\\n    if (!canvas || (canvas.width === width && canvas.height === height)) {\\n      return;\\n    }\\n    canvas.width = width;\\n    canvas.height = height;\\n    const bitmap = this.#isSvg\\n      ? this.#bitmap\\n      : this.#scaleBitmap(width, height);\\n\\n    if (this._uiManager.hasMLManager && !this.hasAltText()) {\\n      const offscreen = new OffscreenCanvas(width, height);\\n      const ctx = offscreen.getContext(\\\"2d\\\");\\n      ctx.drawImage(\\n        bitmap,\\n        0,\\n        0,\\n        bitmap.width,\\n        bitmap.height,\\n        0,\\n        0,\\n        width,\\n        height\\n      );\\n      this._uiManager\\n        .mlGuess({\\n          service: \\\"image-to-text\\\",\\n          request: {\\n            data: ctx.getImageData(0, 0, width, height).data,\\n            width,\\n            height,\\n            channels: 4,\\n          },\\n        })\\n        .then(response => {\\n          const altText = response?.output || \\\"\\\";\\n          if (this.parent && altText && !this.hasAltText()) {\\n            this.altTextData = { altText, decorative: false };\\n          }\\n        });\\n    }\\n    const ctx = canvas.getContext(\\\"2d\\\");\\n    ctx.filter = this._uiManager.hcmFilter;\\n    ctx.drawImage(\\n      bitmap,\\n      0,\\n      0,\\n      bitmap.width,\\n      bitmap.height,\\n      0,\\n      0,\\n      width,\\n      height\\n    );\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  getImageForAltText() {\\n    return this.#canvas;\\n  }\\n\\n  #serializeBitmap(toUrl) {\\n    if (toUrl) {\\n      if (this.#isSvg) {\\n        const url = this._uiManager.imageManager.getSvgUrl(this.#bitmapId);\\n        if (url) {\\n          return url;\\n        }\\n      }\\n      \u002F\u002F We convert to a data url because it's sync and the url can live in the\\n      \u002F\u002F clipboard.\\n      const canvas = document.createElement(\\\"canvas\\\");\\n      ({ width: canvas.width, height: canvas.height } = this.#bitmap);\\n      const ctx = canvas.getContext(\\\"2d\\\");\\n      ctx.drawImage(this.#bitmap, 0, 0);\\n\\n      return canvas.toDataURL();\\n    }\\n\\n    if (this.#isSvg) {\\n      const [pageWidth, pageHeight] = this.pageDimensions;\\n      \u002F\u002F Multiply by PixelsPerInch.PDF_TO_CSS_UNITS in order to increase the\\n      \u002F\u002F image resolution when rasterizing it.\\n      const width = Math.round(\\n        this.width * pageWidth * PixelsPerInch.PDF_TO_CSS_UNITS\\n      );\\n      const height = Math.round(\\n        this.height * pageHeight * PixelsPerInch.PDF_TO_CSS_UNITS\\n      );\\n      const offscreen = new OffscreenCanvas(width, height);\\n      const ctx = offscreen.getContext(\\\"2d\\\");\\n      ctx.drawImage(\\n        this.#bitmap,\\n        0,\\n        0,\\n        this.#bitmap.width,\\n        this.#bitmap.height,\\n        0,\\n        0,\\n        width,\\n        height\\n      );\\n      return offscreen.transferToImageBitmap();\\n    }\\n\\n    return structuredClone(this.#bitmap);\\n  }\\n\\n  \u002F**\\n   * Create the resize observer.\\n   *\u002F\\n  #createObserver() {\\n    this.#observer = new ResizeObserver(entries => {\\n      const rect = entries[0].contentRect;\\n      if (rect.width && rect.height) {\\n        this.#setDimensions(rect.width, rect.height);\\n      }\\n    });\\n    this.#observer.observe(this.div);\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static deserialize(data, parent, uiManager) {\\n    if (data instanceof StampAnnotationElement) {\\n      return null;\\n    }\\n    const editor = super.deserialize(data, parent, uiManager);\\n    const { rect, bitmapUrl, bitmapId, isSvg, accessibilityData } = data;\\n    if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\\n      editor.#bitmapId = bitmapId;\\n    } else {\\n      editor.#bitmapUrl = bitmapUrl;\\n    }\\n    editor.#isSvg = isSvg;\\n\\n    const [parentWidth, parentHeight] = editor.pageDimensions;\\n    editor.width = (rect[2] - rect[0]) \u002F parentWidth;\\n    editor.height = (rect[3] - rect[1]) \u002F parentHeight;\\n\\n    if (accessibilityData) {\\n      editor.altTextData = accessibilityData;\\n    }\\n\\n    return editor;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  serialize(isForCopying = false, context = null) {\\n    if (this.isEmpty()) {\\n      return null;\\n    }\\n\\n    const serialized = {\\n      annotationType: AnnotationEditorType.STAMP,\\n      bitmapId: this.#bitmapId,\\n      pageIndex: this.pageIndex,\\n      rect: this.getRect(0, 0),\\n      rotation: this.rotation,\\n      isSvg: this.#isSvg,\\n      structTreeParentId: this._structTreeParentId,\\n    };\\n\\n    if (isForCopying) {\\n      \u002F\u002F We don't know what's the final destination (this pdf or another one)\\n      \u002F\u002F of this annotation and the clipboard doesn't support ImageBitmaps,\\n      \u002F\u002F hence we serialize the bitmap to a data url.\\n      serialized.bitmapUrl = this.#serializeBitmap(\u002F* toUrl = *\u002F true);\\n      serialized.accessibilityData = this.altTextData;\\n      return serialized;\\n    }\\n\\n    const { decorative, altText } = this.altTextData;\\n    if (!decorative && altText) {\\n      serialized.accessibilityData = { type: \\\"Figure\\\", alt: altText };\\n    }\\n\\n    if (context === null) {\\n      return serialized;\\n    }\\n\\n    context.stamps ||= new Map();\\n    const area = this.#isSvg\\n      ? (serialized.rect[2] - serialized.rect[0]) *\\n        (serialized.rect[3] - serialized.rect[1])\\n      : null;\\n    if (!context.stamps.has(this.#bitmapId)) {\\n      \u002F\u002F We don't want to have multiple copies of the same bitmap in the\\n      \u002F\u002F annotationMap, hence we only add the bitmap the first time we meet it.\\n      context.stamps.set(this.#bitmapId, { area, serialized });\\n      serialized.bitmap = this.#serializeBitmap(\u002F* toUrl = *\u002F false);\\n    } else if (this.#isSvg) {\\n      \u002F\u002F If we have multiple copies of the same svg but with different sizes,\\n      \u002F\u002F then we want to keep the biggest one.\\n      const prevData = context.stamps.get(this.#bitmapId);\\n      if (area > prevData.area) {\\n        prevData.area = area;\\n        prevData.serialized.bitmap.close();\\n        prevData.serialized.bitmap = this.#serializeBitmap(\u002F* toUrl = *\u002F false);\\n      }\\n    }\\n    return serialized;\\n  }\\n}\\n\\nexport { StampEditor };\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Ftools.js\\\").AnnotationEditorUIManager} AnnotationEditorUIManager *\u002F\\n\u002F** @typedef {import(\\\"..\u002Fdisplay_utils.js\\\").PageViewport} PageViewport *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002F..\u002F..\u002Fweb\u002Ftext_accessibility.js\\\").TextAccessibilityManager} TextAccessibilityManager *\u002F\\n\u002F** @typedef {import(\\\"..\u002F..\u002F..\u002Fweb\u002Finterfaces\\\").IL10n} IL10n *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fannotation_layer.js\\\").AnnotationLayer} AnnotationLayer *\u002F\\n\u002F** @typedef {import(\\\"..\u002Fdraw_layer.js\\\").DrawLayer} DrawLayer *\u002F\\n\\nimport { AnnotationEditorType, FeatureTest } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport { AnnotationEditor } from \\\".\u002Feditor.js\\\";\\nimport { FreeTextEditor } from \\\".\u002Ffreetext.js\\\";\\nimport { HighlightEditor } from \\\".\u002Fhighlight.js\\\";\\nimport { InkEditor } from \\\".\u002Fink.js\\\";\\nimport { setLayerDimensions } from \\\"..\u002Fdisplay_utils.js\\\";\\nimport { StampEditor } from \\\".\u002Fstamp.js\\\";\\n\\n\u002F**\\n * @typedef {Object} AnnotationEditorLayerOptions\\n * @property {Object} mode\\n * @property {HTMLDivElement} div\\n * @property {AnnotationEditorUIManager} uiManager\\n * @property {boolean} enabled\\n * @property {TextAccessibilityManager} [accessibilityManager]\\n * @property {number} pageIndex\\n * @property {IL10n} l10n\\n * @property {AnnotationLayer} [annotationLayer]\\n * @property {HTMLDivElement} [textLayer]\\n * @property {DrawLayer} drawLayer\\n * @property {PageViewport} viewport\\n *\u002F\\n\\n\u002F**\\n * @typedef {Object} RenderEditorLayerOptions\\n * @property {PageViewport} viewport\\n *\u002F\\n\\n\u002F**\\n * Manage all the different editors on a page.\\n *\u002F\\nclass AnnotationEditorLayer {\\n  #accessibilityManager;\\n\\n  #allowClick = false;\\n\\n  #annotationLayer = null;\\n\\n  #boundPointerup = null;\\n\\n  #boundPointerdown = null;\\n\\n  #boundTextLayerPointerDown = null;\\n\\n  #editorFocusTimeoutId = null;\\n\\n  #editors = new Map();\\n\\n  #hadPointerDown = false;\\n\\n  #isCleaningUp = false;\\n\\n  #isDisabling = false;\\n\\n  #textLayer = null;\\n\\n  #uiManager;\\n\\n  static _initialized = false;\\n\\n  static #editorTypes = new Map(\\n    [FreeTextEditor, InkEditor, StampEditor, HighlightEditor].map(type => [\\n      type._editorType,\\n      type,\\n    ])\\n  );\\n\\n  \u002F**\\n   * @param {AnnotationEditorLayerOptions} options\\n   *\u002F\\n  constructor({\\n    uiManager,\\n    pageIndex,\\n    div,\\n    accessibilityManager,\\n    annotationLayer,\\n    drawLayer,\\n    textLayer,\\n    viewport,\\n    l10n,\\n  }) {\\n    const editorTypes = [...AnnotationEditorLayer.#editorTypes.values()];\\n    if (!AnnotationEditorLayer._initialized) {\\n      AnnotationEditorLayer._initialized = true;\\n      for (const editorType of editorTypes) {\\n        editorType.initialize(l10n, uiManager);\\n      }\\n    }\\n    uiManager.registerEditorTypes(editorTypes);\\n\\n    this.#uiManager = uiManager;\\n    this.pageIndex = pageIndex;\\n    this.div = div;\\n    this.#accessibilityManager = accessibilityManager;\\n    this.#annotationLayer = annotationLayer;\\n    this.viewport = viewport;\\n    this.#textLayer = textLayer;\\n    this.drawLayer = drawLayer;\\n\\n    this.#uiManager.addLayer(this);\\n  }\\n\\n  get isEmpty() {\\n    return this.#editors.size === 0;\\n  }\\n\\n  get isInvisible() {\\n    return (\\n      this.isEmpty && this.#uiManager.getMode() === AnnotationEditorType.NONE\\n    );\\n  }\\n\\n  \u002F**\\n   * Update the toolbar if it's required to reflect the tool currently used.\\n   * @param {number} mode\\n   *\u002F\\n  updateToolbar(mode) {\\n    this.#uiManager.updateToolbar(mode);\\n  }\\n\\n  \u002F**\\n   * The mode has changed: it must be updated.\\n   * @param {number} mode\\n   *\u002F\\n  updateMode(mode = this.#uiManager.getMode()) {\\n    this.#cleanup();\\n    switch (mode) {\\n      case AnnotationEditorType.NONE:\\n        this.disableTextSelection();\\n        this.togglePointerEvents(false);\\n        this.toggleAnnotationLayerPointerEvents(true);\\n        this.disableClick();\\n        return;\\n      case AnnotationEditorType.INK:\\n        \u002F\u002F We always want to have an ink editor ready to draw in.\\n        this.addInkEditorIfNeeded(false);\\n\\n        this.disableTextSelection();\\n        this.togglePointerEvents(true);\\n        this.disableClick();\\n        break;\\n      case AnnotationEditorType.HIGHLIGHT:\\n        this.enableTextSelection();\\n        this.togglePointerEvents(false);\\n        this.disableClick();\\n        break;\\n      default:\\n        this.disableTextSelection();\\n        this.togglePointerEvents(true);\\n        this.enableClick();\\n    }\\n\\n    this.toggleAnnotationLayerPointerEvents(false);\\n    const { classList } = this.div;\\n    for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\\n      classList.toggle(\\n        `${editorType._type}Editing`,\\n        mode === editorType._editorType\\n      );\\n    }\\n    this.div.hidden = false;\\n  }\\n\\n  hasTextLayer(textLayer) {\\n    return textLayer === this.#textLayer?.div;\\n  }\\n\\n  addInkEditorIfNeeded(isCommitting) {\\n    if (this.#uiManager.getMode() !== AnnotationEditorType.INK) {\\n      \u002F\u002F We don't want to add an ink editor if we're not in ink mode!\\n      return;\\n    }\\n\\n    if (!isCommitting) {\\n      \u002F\u002F We're removing an editor but an empty one can already exist so in this\\n      \u002F\u002F case we don't need to create a new one.\\n      for (const editor of this.#editors.values()) {\\n        if (editor.isEmpty()) {\\n          editor.setInBackground();\\n          return;\\n        }\\n      }\\n    }\\n\\n    const editor = this.createAndAddNewEditor(\\n      { offsetX: 0, offsetY: 0 },\\n      \u002F* isCentered = *\u002F false\\n    );\\n    editor.setInBackground();\\n  }\\n\\n  \u002F**\\n   * Set the editing state.\\n   * @param {boolean} isEditing\\n   *\u002F\\n  setEditingState(isEditing) {\\n    this.#uiManager.setEditingState(isEditing);\\n  }\\n\\n  \u002F**\\n   * Add some commands into the CommandManager (undo\u002Fredo stuff).\\n   * @param {Object} params\\n   *\u002F\\n  addCommands(params) {\\n    this.#uiManager.addCommands(params);\\n  }\\n\\n  togglePointerEvents(enabled = false) {\\n    this.div.classList.toggle(\\\"disabled\\\", !enabled);\\n  }\\n\\n  toggleAnnotationLayerPointerEvents(enabled = false) {\\n    this.#annotationLayer?.div.classList.toggle(\\\"disabled\\\", !enabled);\\n  }\\n\\n  \u002F**\\n   * Enable pointer events on the main div in order to enable\\n   * editor creation.\\n   *\u002F\\n  enable() {\\n    this.div.tabIndex = 0;\\n    this.togglePointerEvents(true);\\n    const annotationElementIds = new Set();\\n    for (const editor of this.#editors.values()) {\\n      editor.enableEditing();\\n      editor.show(true);\\n      if (editor.annotationElementId) {\\n        this.#uiManager.removeChangedExistingAnnotation(editor);\\n        annotationElementIds.add(editor.annotationElementId);\\n      }\\n    }\\n\\n    if (!this.#annotationLayer) {\\n      return;\\n    }\\n\\n    const editables = this.#annotationLayer.getEditableAnnotations();\\n    for (const editable of editables) {\\n      \u002F\u002F The element must be hidden whatever its state is.\\n      editable.hide();\\n      if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) {\\n        continue;\\n      }\\n      if (annotationElementIds.has(editable.data.id)) {\\n        continue;\\n      }\\n      const editor = this.deserialize(editable);\\n      if (!editor) {\\n        continue;\\n      }\\n      this.addOrRebuild(editor);\\n      editor.enableEditing();\\n    }\\n  }\\n\\n  \u002F**\\n   * Disable editor creation.\\n   *\u002F\\n  disable() {\\n    this.#isDisabling = true;\\n    this.div.tabIndex = -1;\\n    this.togglePointerEvents(false);\\n    const changedAnnotations = new Map();\\n    const resetAnnotations = new Map();\\n    for (const editor of this.#editors.values()) {\\n      editor.disableEditing();\\n      if (!editor.annotationElementId) {\\n        continue;\\n      }\\n      if (editor.serialize() !== null) {\\n        changedAnnotations.set(editor.annotationElementId, editor);\\n        continue;\\n      } else {\\n        resetAnnotations.set(editor.annotationElementId, editor);\\n      }\\n      this.getEditableAnnotation(editor.annotationElementId)?.show();\\n      editor.remove();\\n    }\\n\\n    if (this.#annotationLayer) {\\n      \u002F\u002F Show the annotations that were hidden in enable().\\n      const editables = this.#annotationLayer.getEditableAnnotations();\\n      for (const editable of editables) {\\n        const { id } = editable.data;\\n        if (this.#uiManager.isDeletedAnnotationElement(id)) {\\n          continue;\\n        }\\n        let editor = resetAnnotations.get(id);\\n        if (editor) {\\n          editor.resetAnnotationElement(editable);\\n          editor.show(false);\\n          editable.show();\\n          continue;\\n        }\\n\\n        editor = changedAnnotations.get(id);\\n        if (editor) {\\n          this.#uiManager.addChangedExistingAnnotation(editor);\\n          editor.renderAnnotationElement(editable);\\n          editor.show(false);\\n        }\\n        editable.show();\\n      }\\n    }\\n\\n    this.#cleanup();\\n    if (this.isEmpty) {\\n      this.div.hidden = true;\\n    }\\n    const { classList } = this.div;\\n    for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\\n      classList.remove(`${editorType._type}Editing`);\\n    }\\n    this.disableTextSelection();\\n    this.toggleAnnotationLayerPointerEvents(true);\\n\\n    this.#isDisabling = false;\\n  }\\n\\n  getEditableAnnotation(id) {\\n    return this.#annotationLayer?.getEditableAnnotation(id) || null;\\n  }\\n\\n  \u002F**\\n   * Set the current editor.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  setActiveEditor(editor) {\\n    const currentActive = this.#uiManager.getActive();\\n    if (currentActive === editor) {\\n      return;\\n    }\\n\\n    this.#uiManager.setActiveEditor(editor);\\n  }\\n\\n  enableTextSelection() {\\n    this.div.tabIndex = -1;\\n    if (this.#textLayer?.div && !this.#boundTextLayerPointerDown) {\\n      this.#boundTextLayerPointerDown = this.#textLayerPointerDown.bind(this);\\n      this.#textLayer.div.addEventListener(\\n        \\\"pointerdown\\\",\\n        this.#boundTextLayerPointerDown\\n      );\\n      this.#textLayer.div.classList.add(\\\"highlighting\\\");\\n    }\\n  }\\n\\n  disableTextSelection() {\\n    this.div.tabIndex = 0;\\n    if (this.#textLayer?.div && this.#boundTextLayerPointerDown) {\\n      this.#textLayer.div.removeEventListener(\\n        \\\"pointerdown\\\",\\n        this.#boundTextLayerPointerDown\\n      );\\n      this.#boundTextLayerPointerDown = null;\\n      this.#textLayer.div.classList.remove(\\\"highlighting\\\");\\n    }\\n  }\\n\\n  #textLayerPointerDown(event) {\\n    \u002F\u002F Unselect all the editors in order to let the user select some text\\n    \u002F\u002F without being annoyed by an editor toolbar.\\n    this.#uiManager.unselectAll();\\n    if (event.target === this.#textLayer.div) {\\n      const { isMac } = FeatureTest.platform;\\n      if (event.button !== 0 || (event.ctrlKey && isMac)) {\\n        \u002F\u002F Do nothing on right click.\\n        return;\\n      }\\n      this.#uiManager.showAllEditors(\\n        \\\"highlight\\\",\\n        true,\\n        \u002F* updateButton = *\u002F true\\n      );\\n      this.#textLayer.div.classList.add(\\\"free\\\");\\n      HighlightEditor.startHighlighting(\\n        this,\\n        this.#uiManager.direction === \\\"ltr\\\",\\n        event\\n      );\\n      this.#textLayer.div.addEventListener(\\n        \\\"pointerup\\\",\\n        () => {\\n          this.#textLayer.div.classList.remove(\\\"free\\\");\\n        },\\n        { once: true }\\n      );\\n      event.preventDefault();\\n    }\\n  }\\n\\n  enableClick() {\\n    if (this.#boundPointerdown) {\\n      return;\\n    }\\n    this.#boundPointerdown = this.pointerdown.bind(this);\\n    this.#boundPointerup = this.pointerup.bind(this);\\n    this.div.addEventListener(\\\"pointerdown\\\", this.#boundPointerdown);\\n    this.div.addEventListener(\\\"pointerup\\\", this.#boundPointerup);\\n  }\\n\\n  disableClick() {\\n    if (!this.#boundPointerdown) {\\n      return;\\n    }\\n    this.div.removeEventListener(\\\"pointerdown\\\", this.#boundPointerdown);\\n    this.div.removeEventListener(\\\"pointerup\\\", this.#boundPointerup);\\n    this.#boundPointerdown = null;\\n    this.#boundPointerup = null;\\n  }\\n\\n  attach(editor) {\\n    this.#editors.set(editor.id, editor);\\n    const { annotationElementId } = editor;\\n    if (\\n      annotationElementId &&\\n      this.#uiManager.isDeletedAnnotationElement(annotationElementId)\\n    ) {\\n      this.#uiManager.removeDeletedAnnotationElement(editor);\\n    }\\n  }\\n\\n  detach(editor) {\\n    this.#editors.delete(editor.id);\\n    this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\\n\\n    if (!this.#isDisabling && editor.annotationElementId) {\\n      this.#uiManager.addDeletedAnnotationElement(editor);\\n    }\\n  }\\n\\n  \u002F**\\n   * Remove an editor.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  remove(editor) {\\n    this.detach(editor);\\n    this.#uiManager.removeEditor(editor);\\n    editor.div.remove();\\n    editor.isAttachedToDOM = false;\\n\\n    if (!this.#isCleaningUp) {\\n      this.addInkEditorIfNeeded(\u002F* isCommitting = *\u002F false);\\n    }\\n  }\\n\\n  \u002F**\\n   * An editor can have a different parent, for example after having\\n   * being dragged and droped from a page to another.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  changeParent(editor) {\\n    if (editor.parent === this) {\\n      return;\\n    }\\n\\n    if (editor.parent && editor.annotationElementId) {\\n      this.#uiManager.addDeletedAnnotationElement(editor.annotationElementId);\\n      AnnotationEditor.deleteAnnotationElement(editor);\\n      editor.annotationElementId = null;\\n    }\\n\\n    this.attach(editor);\\n    editor.parent?.detach(editor);\\n    editor.setParent(this);\\n    if (editor.div && editor.isAttachedToDOM) {\\n      editor.div.remove();\\n      this.div.append(editor.div);\\n    }\\n  }\\n\\n  \u002F**\\n   * Add a new editor in the current view.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  add(editor) {\\n    if (editor.parent === this && editor.isAttachedToDOM) {\\n      return;\\n    }\\n    this.changeParent(editor);\\n    this.#uiManager.addEditor(editor);\\n    this.attach(editor);\\n\\n    if (!editor.isAttachedToDOM) {\\n      const div = editor.render();\\n      this.div.append(div);\\n      editor.isAttachedToDOM = true;\\n    }\\n\\n    \u002F\u002F The editor will be correctly moved into the DOM (see fixAndSetPosition).\\n    editor.fixAndSetPosition();\\n    editor.onceAdded();\\n    this.#uiManager.addToAnnotationStorage(editor);\\n    editor._reportTelemetry(editor.telemetryInitialData);\\n  }\\n\\n  moveEditorInDOM(editor) {\\n    if (!editor.isAttachedToDOM) {\\n      return;\\n    }\\n\\n    const { activeElement } = document;\\n    if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) {\\n      \u002F\u002F When the div is moved in the DOM the focus can move somewhere else,\\n      \u002F\u002F so we want to be sure that the focus will stay on the editor but we\\n      \u002F\u002F don't want to call any focus callbacks, hence we disable them and only\\n      \u002F\u002F re-enable them when the editor has the focus.\\n      editor._focusEventsAllowed = false;\\n      this.#editorFocusTimeoutId = setTimeout(() => {\\n        this.#editorFocusTimeoutId = null;\\n        if (!editor.div.contains(document.activeElement)) {\\n          editor.div.addEventListener(\\n            \\\"focusin\\\",\\n            () => {\\n              editor._focusEventsAllowed = true;\\n            },\\n            { once: true }\\n          );\\n          activeElement.focus();\\n        } else {\\n          editor._focusEventsAllowed = true;\\n        }\\n      }, 0);\\n    }\\n\\n    editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(\\n      this.div,\\n      editor.div,\\n      editor.contentDiv,\\n      \u002F* isRemovable = *\u002F true\\n    );\\n  }\\n\\n  \u002F**\\n   * Add or rebuild depending if it has been removed or not.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  addOrRebuild(editor) {\\n    if (editor.needsToBeRebuilt()) {\\n      editor.parent ||= this;\\n      editor.rebuild();\\n      editor.show();\\n    } else {\\n      this.add(editor);\\n    }\\n  }\\n\\n  \u002F**\\n   * Add a new editor and make this addition undoable.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  addUndoableEditor(editor) {\\n    const cmd = () => editor._uiManager.rebuild(editor);\\n    const undo = () => {\\n      editor.remove();\\n    };\\n\\n    this.addCommands({ cmd, undo, mustExec: false });\\n  }\\n\\n  \u002F**\\n   * Get an id for an editor.\\n   * @returns {string}\\n   *\u002F\\n  getNextId() {\\n    return this.#uiManager.getId();\\n  }\\n\\n  get #currentEditorType() {\\n    return AnnotationEditorLayer.#editorTypes.get(this.#uiManager.getMode());\\n  }\\n\\n  \u002F**\\n   * Create a new editor\\n   * @param {Object} params\\n   * @returns {AnnotationEditor}\\n   *\u002F\\n  #createNewEditor(params) {\\n    const editorType = this.#currentEditorType;\\n    return editorType ? new editorType.prototype.constructor(params) : null;\\n  }\\n\\n  canCreateNewEmptyEditor() {\\n    return this.#currentEditorType?.canCreateNewEmptyEditor();\\n  }\\n\\n  \u002F**\\n   * Paste some content into a new editor.\\n   * @param {number} mode\\n   * @param {Object} params\\n   *\u002F\\n  pasteEditor(mode, params) {\\n    this.#uiManager.updateToolbar(mode);\\n    this.#uiManager.updateMode(mode);\\n\\n    const { offsetX, offsetY } = this.#getCenterPoint();\\n    const id = this.getNextId();\\n    const editor = this.#createNewEditor({\\n      parent: this,\\n      id,\\n      x: offsetX,\\n      y: offsetY,\\n      uiManager: this.#uiManager,\\n      isCentered: true,\\n      ...params,\\n    });\\n    if (editor) {\\n      this.add(editor);\\n    }\\n  }\\n\\n  \u002F**\\n   * Create a new editor\\n   * @param {Object} data\\n   * @returns {AnnotationEditor | null}\\n   *\u002F\\n  deserialize(data) {\\n    return (\\n      AnnotationEditorLayer.#editorTypes\\n        .get(data.annotationType ?? data.annotationEditorType)\\n        ?.deserialize(data, this, this.#uiManager) || null\\n    );\\n  }\\n\\n  \u002F**\\n   * Create and add a new editor.\\n   * @param {PointerEvent} event\\n   * @param {boolean} isCentered\\n   * @param [Object] data\\n   * @returns {AnnotationEditor}\\n   *\u002F\\n  createAndAddNewEditor(event, isCentered, data = {}) {\\n    const id = this.getNextId();\\n    const editor = this.#createNewEditor({\\n      parent: this,\\n      id,\\n      x: event.offsetX,\\n      y: event.offsetY,\\n      uiManager: this.#uiManager,\\n      isCentered,\\n      ...data,\\n    });\\n    if (editor) {\\n      this.add(editor);\\n    }\\n\\n    return editor;\\n  }\\n\\n  #getCenterPoint() {\\n    const { x, y, width, height } = this.div.getBoundingClientRect();\\n    const tlX = Math.max(0, x);\\n    const tlY = Math.max(0, y);\\n    const brX = Math.min(window.innerWidth, x + width);\\n    const brY = Math.min(window.innerHeight, y + height);\\n    const centerX = (tlX + brX) \u002F 2 - x;\\n    const centerY = (tlY + brY) \u002F 2 - y;\\n    const [offsetX, offsetY] =\\n      this.viewport.rotation % 180 === 0\\n        ? [centerX, centerY]\\n        : [centerY, centerX];\\n\\n    return { offsetX, offsetY };\\n  }\\n\\n  \u002F**\\n   * Create and add a new editor.\\n   *\u002F\\n  addNewEditor() {\\n    this.createAndAddNewEditor(this.#getCenterPoint(), \u002F* isCentered = *\u002F true);\\n  }\\n\\n  \u002F**\\n   * Set the last selected editor.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  setSelected(editor) {\\n    this.#uiManager.setSelected(editor);\\n  }\\n\\n  \u002F**\\n   * Add or remove an editor the current selection.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  toggleSelected(editor) {\\n    this.#uiManager.toggleSelected(editor);\\n  }\\n\\n  \u002F**\\n   * Check if the editor is selected.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  isSelected(editor) {\\n    return this.#uiManager.isSelected(editor);\\n  }\\n\\n  \u002F**\\n   * Unselect an editor.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  unselect(editor) {\\n    this.#uiManager.unselect(editor);\\n  }\\n\\n  \u002F**\\n   * Pointerup callback.\\n   * @param {PointerEvent} event\\n   *\u002F\\n  pointerup(event) {\\n    const { isMac } = FeatureTest.platform;\\n    if (event.button !== 0 || (event.ctrlKey && isMac)) {\\n      \u002F\u002F Don't create an editor on right click.\\n      return;\\n    }\\n\\n    if (event.target !== this.div) {\\n      return;\\n    }\\n\\n    if (!this.#hadPointerDown) {\\n      \u002F\u002F It can happen when the user starts a drag inside a text editor\\n      \u002F\u002F and then releases the mouse button outside of it. In such a case\\n      \u002F\u002F we don't want to create a new editor, hence we check that a pointerdown\\n      \u002F\u002F occurred on this div previously.\\n      return;\\n    }\\n    this.#hadPointerDown = false;\\n\\n    if (!this.#allowClick) {\\n      this.#allowClick = true;\\n      return;\\n    }\\n\\n    if (this.#uiManager.getMode() === AnnotationEditorType.STAMP) {\\n      this.#uiManager.unselectAll();\\n      return;\\n    }\\n\\n    this.createAndAddNewEditor(event, \u002F* isCentered = *\u002F false);\\n  }\\n\\n  \u002F**\\n   * Pointerdown callback.\\n   * @param {PointerEvent} event\\n   *\u002F\\n  pointerdown(event) {\\n    if (this.#uiManager.getMode() === AnnotationEditorType.HIGHLIGHT) {\\n      this.enableTextSelection();\\n    }\\n    if (this.#hadPointerDown) {\\n      \u002F\u002F It's possible to have a second pointerdown event before a pointerup one\\n      \u002F\u002F when the user puts a finger on a touchscreen and then add a second one\\n      \u002F\u002F to start a pinch-to-zoom gesture.\\n      \u002F\u002F That said, in case it's possible to have two pointerdown events with\\n      \u002F\u002F a mouse, we don't want to create a new editor in such a case either.\\n      this.#hadPointerDown = false;\\n      return;\\n    }\\n    const { isMac } = FeatureTest.platform;\\n    if (event.button !== 0 || (event.ctrlKey && isMac)) {\\n      \u002F\u002F Do nothing on right click.\\n      return;\\n    }\\n\\n    if (event.target !== this.div) {\\n      return;\\n    }\\n\\n    this.#hadPointerDown = true;\\n\\n    const editor = this.#uiManager.getActive();\\n    this.#allowClick = !editor || editor.isEmpty();\\n  }\\n\\n  \u002F**\\n   *\\n   * @param {AnnotationEditor} editor\\n   * @param {number} x\\n   * @param {number} y\\n   * @returns\\n   *\u002F\\n  findNewParent(editor, x, y) {\\n    const layer = this.#uiManager.findParent(x, y);\\n    if (layer === null || layer === this) {\\n      return false;\\n    }\\n    layer.changeParent(editor);\\n    return true;\\n  }\\n\\n  \u002F**\\n   * Destroy the main editor.\\n   *\u002F\\n  destroy() {\\n    if (this.#uiManager.getActive()?.parent === this) {\\n      \u002F\u002F We need to commit the current editor before destroying the layer.\\n      this.#uiManager.commitOrRemove();\\n      this.#uiManager.setActiveEditor(null);\\n    }\\n\\n    if (this.#editorFocusTimeoutId) {\\n      clearTimeout(this.#editorFocusTimeoutId);\\n      this.#editorFocusTimeoutId = null;\\n    }\\n\\n    for (const editor of this.#editors.values()) {\\n      this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\\n      editor.setParent(null);\\n      editor.isAttachedToDOM = false;\\n      editor.div.remove();\\n    }\\n    this.div = null;\\n    this.#editors.clear();\\n    this.#uiManager.removeLayer(this);\\n  }\\n\\n  #cleanup() {\\n    \u002F\u002F When we're cleaning up, some editors are removed but we don't want\\n    \u002F\u002F to add a new one which will induce an addition in this.#editors, hence\\n    \u002F\u002F an infinite loop.\\n    this.#isCleaningUp = true;\\n    for (const editor of this.#editors.values()) {\\n      if (editor.isEmpty()) {\\n        editor.remove();\\n      }\\n    }\\n    this.#isCleaningUp = false;\\n  }\\n\\n  \u002F**\\n   * Render the main editor.\\n   * @param {RenderEditorLayerOptions} parameters\\n   *\u002F\\n  render({ viewport }) {\\n    this.viewport = viewport;\\n    setLayerDimensions(this.div, viewport);\\n    for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\\n      this.add(editor);\\n      editor.rebuild();\\n    }\\n    \u002F\u002F We're maybe rendering a layer which was invisible when we started to edit\\n    \u002F\u002F so we must set the different callbacks for it.\\n    this.updateMode();\\n  }\\n\\n  \u002F**\\n   * Update the main editor.\\n   * @param {RenderEditorLayerOptions} parameters\\n   *\u002F\\n  update({ viewport }) {\\n    \u002F\u002F Editors have their dimensions\u002Fpositions in percent so to avoid any\\n    \u002F\u002F issues (see #15582), we must commit the current one before changing\\n    \u002F\u002F the viewport.\\n    this.#uiManager.commitOrRemove();\\n    this.#cleanup();\\n\\n    const oldRotation = this.viewport.rotation;\\n    const rotation = viewport.rotation;\\n    this.viewport = viewport;\\n    setLayerDimensions(this.div, { rotation });\\n    if (oldRotation !== rotation) {\\n      for (const editor of this.#editors.values()) {\\n        editor.rotate(rotation);\\n      }\\n    }\\n    this.addInkEditorIfNeeded(\u002F* isCommitting = *\u002F false);\\n  }\\n\\n  \u002F**\\n   * Get page dimensions.\\n   * @returns {Object} dimensions.\\n   *\u002F\\n  get pageDimensions() {\\n    const { pageWidth, pageHeight } = this.viewport.rawDims;\\n    return [pageWidth, pageHeight];\\n  }\\n\\n  get scale() {\\n    return this.#uiManager.viewParameters.realScale;\\n  }\\n}\\n\\nexport { AnnotationEditorLayer };\\n\",\"\u002F* Copyright 2023 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { DOMSVGFactory } from \\\".\u002Fdisplay_utils.js\\\";\\nimport { shadow } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\n\u002F**\\n * Manage the SVGs drawn on top of the page canvas.\\n * It's important to have them directly on top of the canvas because we want to\\n * be able to use mix-blend-mode for some of them.\\n *\u002F\\nclass DrawLayer {\\n  #parent = null;\\n\\n  #id = 0;\\n\\n  #mapping = new Map();\\n\\n  #toUpdate = new Map();\\n\\n  constructor({ pageIndex }) {\\n    this.pageIndex = pageIndex;\\n  }\\n\\n  setParent(parent) {\\n    if (!this.#parent) {\\n      this.#parent = parent;\\n      return;\\n    }\\n\\n    if (this.#parent !== parent) {\\n      if (this.#mapping.size > 0) {\\n        for (const root of this.#mapping.values()) {\\n          root.remove();\\n          parent.append(root);\\n        }\\n      }\\n      this.#parent = parent;\\n    }\\n  }\\n\\n  static get _svgFactory() {\\n    return shadow(this, \\\"_svgFactory\\\", new DOMSVGFactory());\\n  }\\n\\n  static #setBox(element, { x = 0, y = 0, width = 1, height = 1 } = {}) {\\n    const { style } = element;\\n    style.top = `${100 * y}%`;\\n    style.left = `${100 * x}%`;\\n    style.width = `${100 * width}%`;\\n    style.height = `${100 * height}%`;\\n  }\\n\\n  #createSVG(box) {\\n    const svg = DrawLayer._svgFactory.create(1, 1, \u002F* skipDimensions = *\u002F true);\\n    this.#parent.append(svg);\\n    svg.setAttribute(\\\"aria-hidden\\\", true);\\n    DrawLayer.#setBox(svg, box);\\n\\n    return svg;\\n  }\\n\\n  #createClipPath(defs, pathId) {\\n    const clipPath = DrawLayer._svgFactory.createElement(\\\"clipPath\\\");\\n    defs.append(clipPath);\\n    const clipPathId = `clip_${pathId}`;\\n    clipPath.setAttribute(\\\"id\\\", clipPathId);\\n    clipPath.setAttribute(\\\"clipPathUnits\\\", \\\"objectBoundingBox\\\");\\n    const clipPathUse = DrawLayer._svgFactory.createElement(\\\"use\\\");\\n    clipPath.append(clipPathUse);\\n    clipPathUse.setAttribute(\\\"href\\\", `#${pathId}`);\\n    clipPathUse.classList.add(\\\"clip\\\");\\n\\n    return clipPathId;\\n  }\\n\\n  highlight(outlines, color, opacity, isPathUpdatable = false) {\\n    const id = this.#id++;\\n    const root = this.#createSVG(outlines.box);\\n    root.classList.add(\\\"highlight\\\");\\n    if (outlines.free) {\\n      root.classList.add(\\\"free\\\");\\n    }\\n    const defs = DrawLayer._svgFactory.createElement(\\\"defs\\\");\\n    root.append(defs);\\n    const path = DrawLayer._svgFactory.createElement(\\\"path\\\");\\n    defs.append(path);\\n    const pathId = `path_p${this.pageIndex}_${id}`;\\n    path.setAttribute(\\\"id\\\", pathId);\\n    path.setAttribute(\\\"d\\\", outlines.toSVGPath());\\n\\n    if (isPathUpdatable) {\\n      this.#toUpdate.set(id, path);\\n    }\\n\\n    \u002F\u002F Create the clipping path for the editor div.\\n    const clipPathId = this.#createClipPath(defs, pathId);\\n\\n    const use = DrawLayer._svgFactory.createElement(\\\"use\\\");\\n    root.append(use);\\n    root.setAttribute(\\\"fill\\\", color);\\n    root.setAttribute(\\\"fill-opacity\\\", opacity);\\n    use.setAttribute(\\\"href\\\", `#${pathId}`);\\n\\n    this.#mapping.set(id, root);\\n\\n    return { id, clipPathId: `url(#${clipPathId})` };\\n  }\\n\\n  highlightOutline(outlines) {\\n    \u002F\u002F We cannot draw the outline directly in the SVG for highlights because\\n    \u002F\u002F it composes with its parent with mix-blend-mode: multiply.\\n    \u002F\u002F But the outline has a different mix-blend-mode, so we need to draw it in\\n    \u002F\u002F its own SVG.\\n    const id = this.#id++;\\n    const root = this.#createSVG(outlines.box);\\n    root.classList.add(\\\"highlightOutline\\\");\\n    const defs = DrawLayer._svgFactory.createElement(\\\"defs\\\");\\n    root.append(defs);\\n    const path = DrawLayer._svgFactory.createElement(\\\"path\\\");\\n    defs.append(path);\\n    const pathId = `path_p${this.pageIndex}_${id}`;\\n    path.setAttribute(\\\"id\\\", pathId);\\n    path.setAttribute(\\\"d\\\", outlines.toSVGPath());\\n    path.setAttribute(\\\"vector-effect\\\", \\\"non-scaling-stroke\\\");\\n\\n    let maskId;\\n    if (outlines.free) {\\n      root.classList.add(\\\"free\\\");\\n      const mask = DrawLayer._svgFactory.createElement(\\\"mask\\\");\\n      defs.append(mask);\\n      maskId = `mask_p${this.pageIndex}_${id}`;\\n      mask.setAttribute(\\\"id\\\", maskId);\\n      mask.setAttribute(\\\"maskUnits\\\", \\\"objectBoundingBox\\\");\\n      const rect = DrawLayer._svgFactory.createElement(\\\"rect\\\");\\n      mask.append(rect);\\n      rect.setAttribute(\\\"width\\\", \\\"1\\\");\\n      rect.setAttribute(\\\"height\\\", \\\"1\\\");\\n      rect.setAttribute(\\\"fill\\\", \\\"white\\\");\\n      const use = DrawLayer._svgFactory.createElement(\\\"use\\\");\\n      mask.append(use);\\n      use.setAttribute(\\\"href\\\", `#${pathId}`);\\n      use.setAttribute(\\\"stroke\\\", \\\"none\\\");\\n      use.setAttribute(\\\"fill\\\", \\\"black\\\");\\n      use.setAttribute(\\\"fill-rule\\\", \\\"nonzero\\\");\\n      use.classList.add(\\\"mask\\\");\\n    }\\n\\n    const use1 = DrawLayer._svgFactory.createElement(\\\"use\\\");\\n    root.append(use1);\\n    use1.setAttribute(\\\"href\\\", `#${pathId}`);\\n    if (maskId) {\\n      use1.setAttribute(\\\"mask\\\", `url(#${maskId})`);\\n    }\\n    const use2 = use1.cloneNode();\\n    root.append(use2);\\n    use1.classList.add(\\\"mainOutline\\\");\\n    use2.classList.add(\\\"secondaryOutline\\\");\\n\\n    this.#mapping.set(id, root);\\n\\n    return id;\\n  }\\n\\n  finalizeLine(id, line) {\\n    const path = this.#toUpdate.get(id);\\n    this.#toUpdate.delete(id);\\n    this.updateBox(id, line.box);\\n    path.setAttribute(\\\"d\\\", line.toSVGPath());\\n  }\\n\\n  updateLine(id, line) {\\n    const root = this.#mapping.get(id);\\n    const defs = root.firstChild;\\n    const path = defs.firstChild;\\n    path.setAttribute(\\\"d\\\", line.toSVGPath());\\n  }\\n\\n  removeFreeHighlight(id) {\\n    this.remove(id);\\n    this.#toUpdate.delete(id);\\n  }\\n\\n  updatePath(id, line) {\\n    this.#toUpdate.get(id).setAttribute(\\\"d\\\", line.toSVGPath());\\n  }\\n\\n  updateBox(id, box) {\\n    DrawLayer.#setBox(this.#mapping.get(id), box);\\n  }\\n\\n  show(id, visible) {\\n    this.#mapping.get(id).classList.toggle(\\\"hidden\\\", !visible);\\n  }\\n\\n  rotate(id, angle) {\\n    this.#mapping.get(id).setAttribute(\\\"data-main-rotation\\\", angle);\\n  }\\n\\n  changeColor(id, color) {\\n    this.#mapping.get(id).setAttribute(\\\"fill\\\", color);\\n  }\\n\\n  changeOpacity(id, opacity) {\\n    this.#mapping.get(id).setAttribute(\\\"fill-opacity\\\", opacity);\\n  }\\n\\n  addClass(id, className) {\\n    this.#mapping.get(id).classList.add(className);\\n  }\\n\\n  removeClass(id, className) {\\n    this.#mapping.get(id).classList.remove(className);\\n  }\\n\\n  remove(id) {\\n    if (this.#parent === null) {\\n      return;\\n    }\\n    this.#mapping.get(id).remove();\\n    this.#mapping.delete(id);\\n  }\\n\\n  destroy() {\\n    this.#parent = null;\\n    for (const root of this.#mapping.values()) {\\n      root.remove();\\n    }\\n    this.#mapping.clear();\\n  }\\n}\\n\\nexport { DrawLayer };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fdisplay\u002Fapi\\\").OnProgressParameters} OnProgressParameters *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fdisplay\u002Fapi\\\").PDFDocumentLoadingTask} PDFDocumentLoadingTask *\u002F\\n\u002F** @typedef {import(\\\".\u002Fdisplay\u002Fapi\\\").PDFDocumentProxy} PDFDocumentProxy *\u002F\\n\u002F** @typedef {import(\\\".\u002Fdisplay\u002Fapi\\\").PDFPageProxy} PDFPageProxy *\u002F\\n\u002F** @typedef {import(\\\".\u002Fdisplay\u002Fapi\\\").RenderTask} RenderTask *\u002F\\n\u002F** @typedef {import(\\\".\u002Fdisplay\u002Fdisplay_utils\\\").PageViewport} PageViewport *\u002F\\n\\nimport {\\n  AbortException,\\n  AnnotationEditorParamsType,\\n  AnnotationEditorType,\\n  AnnotationMode,\\n  CMapCompressionType,\\n  createValidAbsoluteUrl,\\n  FeatureTest,\\n  ImageKind,\\n  InvalidPDFException,\\n  MissingPDFException,\\n  normalizeUnicode,\\n  OPS,\\n  PasswordResponses,\\n  PermissionFlag,\\n  shadow,\\n  UnexpectedResponseException,\\n  Util,\\n  VerbosityLevel,\\n} from \\\".\u002Fshared\u002Futil.js\\\";\\nimport {\\n  build,\\n  getDocument,\\n  PDFDataRangeTransport,\\n  PDFWorker,\\n  version,\\n} from \\\".\u002Fdisplay\u002Fapi.js\\\";\\nimport {\\n  DOMSVGFactory,\\n  fetchData,\\n  getFilenameFromUrl,\\n  getPdfFilenameFromUrl,\\n  getXfaPageViewport,\\n  isDataScheme,\\n  isPdfFile,\\n  noContextMenu,\\n  PDFDateString,\\n  PixelsPerInch,\\n  RenderingCancelledException,\\n  setLayerDimensions,\\n} from \\\".\u002Fdisplay\u002Fdisplay_utils.js\\\";\\nimport {\\n  renderTextLayer,\\n  TextLayer,\\n  updateTextLayer,\\n} from \\\".\u002Fdisplay\u002Ftext_layer.js\\\";\\nimport { AnnotationEditorLayer } from \\\".\u002Fdisplay\u002Feditor\u002Fannotation_editor_layer.js\\\";\\nimport { AnnotationEditorUIManager } from \\\".\u002Fdisplay\u002Feditor\u002Ftools.js\\\";\\nimport { AnnotationLayer } from \\\".\u002Fdisplay\u002Fannotation_layer.js\\\";\\nimport { ColorPicker } from \\\".\u002Fdisplay\u002Feditor\u002Fcolor_picker.js\\\";\\nimport { DrawLayer } from \\\".\u002Fdisplay\u002Fdraw_layer.js\\\";\\nimport { GlobalWorkerOptions } from \\\".\u002Fdisplay\u002Fworker_options.js\\\";\\nimport { Outliner } from \\\".\u002Fdisplay\u002Feditor\u002Foutliner.js\\\";\\nimport { XfaLayer } from \\\".\u002Fdisplay\u002Fxfa_layer.js\\\";\\n\\n\u002F* eslint-disable-next-line no-unused-vars *\u002F\\nconst pdfjsVersion =\\n  typeof PDFJSDev !== \\\"undefined\\\" ? PDFJSDev.eval(\\\"BUNDLE_VERSION\\\") : void 0;\\n\u002F* eslint-disable-next-line no-unused-vars *\u002F\\nconst pdfjsBuild =\\n  typeof PDFJSDev !== \\\"undefined\\\" ? PDFJSDev.eval(\\\"BUNDLE_BUILD\\\") : void 0;\\n\\nexport {\\n  AbortException,\\n  AnnotationEditorLayer,\\n  AnnotationEditorParamsType,\\n  AnnotationEditorType,\\n  AnnotationEditorUIManager,\\n  AnnotationLayer,\\n  AnnotationMode,\\n  build,\\n  CMapCompressionType,\\n  ColorPicker,\\n  createValidAbsoluteUrl,\\n  DOMSVGFactory,\\n  DrawLayer,\\n  FeatureTest,\\n  fetchData,\\n  getDocument,\\n  getFilenameFromUrl,\\n  getPdfFilenameFromUrl,\\n  getXfaPageViewport,\\n  GlobalWorkerOptions,\\n  ImageKind,\\n  InvalidPDFException,\\n  isDataScheme,\\n  isPdfFile,\\n  MissingPDFException,\\n  noContextMenu,\\n  normalizeUnicode,\\n  OPS,\\n  Outliner,\\n  PasswordResponses,\\n  PDFDataRangeTransport,\\n  PDFDateString,\\n  PDFWorker,\\n  PermissionFlag,\\n  PixelsPerInch,\\n  RenderingCancelledException,\\n  renderTextLayer,\\n  setLayerDimensions,\\n  shadow,\\n  TextLayer,\\n  UnexpectedResponseException,\\n  updateTextLayer,\\n  Util,\\n  VerbosityLevel,\\n  version,\\n  XfaLayer,\\n};\\n\"],\"names\":[\"isNodeJS\",\"process\",\"versions\",\"nw\",\"electron\",\"type\",\"IDENTITY_MATRIX\",\"FONT_IDENTITY_MATRIX\",\"MAX_IMAGE_SIZE_TO_CACHE\",\"LINE_FACTOR\",\"LINE_DESCENT_FACTOR\",\"BASELINE_FACTOR\",\"RenderingIntentFlag\",\"ANY\",\"DISPLAY\",\"PRINT\",\"SAVE\",\"ANNOTATIONS_FORMS\",\"ANNOTATIONS_STORAGE\",\"ANNOTATIONS_DISABLE\",\"OPLIST\",\"AnnotationMode\",\"DISABLE\",\"ENABLE\",\"ENABLE_FORMS\",\"ENABLE_STORAGE\",\"AnnotationEditorPrefix\",\"AnnotationEditorType\",\"NONE\",\"FREETEXT\",\"HIGHLIGHT\",\"STAMP\",\"INK\",\"AnnotationEditorParamsType\",\"RESIZE\",\"CREATE\",\"FREETEXT_SIZE\",\"FREETEXT_COLOR\",\"FREETEXT_OPACITY\",\"INK_COLOR\",\"INK_THICKNESS\",\"INK_OPACITY\",\"HIGHLIGHT_COLOR\",\"HIGHLIGHT_DEFAULT_COLOR\",\"HIGHLIGHT_THICKNESS\",\"HIGHLIGHT_FREE\",\"HIGHLIGHT_SHOW_ALL\",\"PermissionFlag\",\"MODIFY_CONTENTS\",\"COPY\",\"MODIFY_ANNOTATIONS\",\"FILL_INTERACTIVE_FORMS\",\"COPY_FOR_ACCESSIBILITY\",\"ASSEMBLE\",\"PRINT_HIGH_QUALITY\",\"TextRenderingMode\",\"FILL\",\"STROKE\",\"FILL_STROKE\",\"INVISIBLE\",\"FILL_ADD_TO_PATH\",\"STROKE_ADD_TO_PATH\",\"FILL_STROKE_ADD_TO_PATH\",\"ADD_TO_PATH\",\"FILL_STROKE_MASK\",\"ADD_TO_PATH_FLAG\",\"ImageKind\",\"GRAYSCALE_1BPP\",\"RGB_24BPP\",\"RGBA_32BPP\",\"AnnotationType\",\"TEXT\",\"LINK\",\"LINE\",\"SQUARE\",\"CIRCLE\",\"POLYGON\",\"POLYLINE\",\"UNDERLINE\",\"SQUIGGLY\",\"STRIKEOUT\",\"CARET\",\"POPUP\",\"FILEATTACHMENT\",\"SOUND\",\"MOVIE\",\"WIDGET\",\"SCREEN\",\"PRINTERMARK\",\"TRAPNET\",\"WATERMARK\",\"THREED\",\"REDACT\",\"AnnotationReplyType\",\"GROUP\",\"REPLY\",\"AnnotationFlag\",\"HIDDEN\",\"NOZOOM\",\"NOROTATE\",\"NOVIEW\",\"READONLY\",\"LOCKED\",\"TOGGLENOVIEW\",\"LOCKEDCONTENTS\",\"AnnotationFieldFlag\",\"REQUIRED\",\"NOEXPORT\",\"MULTILINE\",\"PASSWORD\",\"NOTOGGLETOOFF\",\"RADIO\",\"PUSHBUTTON\",\"COMBO\",\"EDIT\",\"SORT\",\"FILESELECT\",\"MULTISELECT\",\"DONOTSPELLCHECK\",\"DONOTSCROLL\",\"COMB\",\"RICHTEXT\",\"RADIOSINUNISON\",\"COMMITONSELCHANGE\",\"AnnotationBorderStyleType\",\"SOLID\",\"DASHED\",\"BEVELED\",\"INSET\",\"AnnotationActionEventType\",\"E\",\"X\",\"D\",\"U\",\"Fo\",\"Bl\",\"PO\",\"PC\",\"PV\",\"PI\",\"K\",\"F\",\"V\",\"C\",\"DocumentActionEventType\",\"WC\",\"WS\",\"DS\",\"WP\",\"DP\",\"PageActionEventType\",\"O\",\"VerbosityLevel\",\"ERRORS\",\"WARNINGS\",\"INFOS\",\"CMapCompressionType\",\"BINARY\",\"OPS\",\"dependency\",\"setLineWidth\",\"setLineCap\",\"setLineJoin\",\"setMiterLimit\",\"setDash\",\"setRenderingIntent\",\"setFlatness\",\"setGState\",\"save\",\"restore\",\"transform\",\"moveTo\",\"lineTo\",\"curveTo\",\"curveTo2\",\"curveTo3\",\"closePath\",\"rectangle\",\"stroke\",\"closeStroke\",\"fill\",\"eoFill\",\"fillStroke\",\"eoFillStroke\",\"closeFillStroke\",\"closeEOFillStroke\",\"endPath\",\"clip\",\"eoClip\",\"beginText\",\"endText\",\"setCharSpacing\",\"setWordSpacing\",\"setHScale\",\"setLeading\",\"setFont\",\"setTextRenderingMode\",\"setTextRise\",\"moveText\",\"setLeadingMoveText\",\"setTextMatrix\",\"nextLine\",\"showText\",\"showSpacedText\",\"nextLineShowText\",\"nextLineSetSpacingShowText\",\"setCharWidth\",\"setCharWidthAndBounds\",\"setStrokeColorSpace\",\"setFillColorSpace\",\"setStrokeColor\",\"setStrokeColorN\",\"setFillColor\",\"setFillColorN\",\"setStrokeGray\",\"setFillGray\",\"setStrokeRGBColor\",\"setFillRGBColor\",\"setStrokeCMYKColor\",\"setFillCMYKColor\",\"shadingFill\",\"beginInlineImage\",\"beginImageData\",\"endInlineImage\",\"paintXObject\",\"markPoint\",\"markPointProps\",\"beginMarkedContent\",\"beginMarkedContentProps\",\"endMarkedContent\",\"beginCompat\",\"endCompat\",\"paintFormXObjectBegin\",\"paintFormXObjectEnd\",\"beginGroup\",\"endGroup\",\"beginAnnotation\",\"endAnnotation\",\"paintImageMaskXObject\",\"paintImageMaskXObjectGroup\",\"paintImageXObject\",\"paintInlineImageXObject\",\"paintInlineImageXObjectGroup\",\"paintImageXObjectRepeat\",\"paintImageMaskXObjectRepeat\",\"paintSolidColorImageMask\",\"constructPath\",\"PasswordResponses\",\"NEED_PASSWORD\",\"INCORRECT_PASSWORD\",\"verbosity\",\"setVerbosityLevel\",\"level\",\"Number\",\"isInteger\",\"getVerbosityLevel\",\"info\",\"msg\",\"console\",\"log\",\"warn\",\"unreachable\",\"Error\",\"assert\",\"cond\",\"_isValidProtocol\",\"url\",\"protocol\",\"createValidAbsoluteUrl\",\"baseUrl\",\"options\",\"addDefaultProtocol\",\"startsWith\",\"dots\",\"match\",\"length\",\"tryConvertEncoding\",\"stringToUTF8String\",\"absoluteUrl\",\"URL\",\"shadow\",\"obj\",\"prop\",\"value\",\"nonSerializable\",\"Object\",\"defineProperty\",\"enumerable\",\"configurable\",\"writable\",\"BaseException\",\"BaseExceptionClosure\",\"message\",\"name\",\"constructor\",\"prototype\",\"PasswordException\",\"code\",\"UnknownErrorException\",\"details\",\"InvalidPDFException\",\"MissingPDFException\",\"UnexpectedResponseException\",\"status\",\"FormatError\",\"AbortException\",\"bytesToString\",\"bytes\",\"undefined\",\"MAX_ARGUMENT_COUNT\",\"String\",\"fromCharCode\",\"apply\",\"strBuf\",\"i\",\"chunkEnd\",\"Math\",\"min\",\"chunk\",\"subarray\",\"push\",\"join\",\"stringToBytes\",\"str\",\"Uint8Array\",\"charCodeAt\",\"string32\",\"objectSize\",\"keys\",\"objectFromMap\",\"map\",\"create\",\"key\",\"isLittleEndian\",\"buffer8\",\"view32\",\"Uint32Array\",\"buffer\",\"isEvalSupported\",\"Function\",\"FeatureTest\",\"isOffscreenCanvasSupported\",\"OffscreenCanvas\",\"platform\",\"navigator\",\"isMac\",\"includes\",\"isCSSRoundSupported\",\"globalThis\",\"CSS\",\"supports\",\"hexNumbers\",\"Array\",\"from\",\"n\",\"toString\",\"padStart\",\"Util\",\"makeHexColor\",\"r\",\"g\",\"b\",\"scaleMinMax\",\"minMax\",\"temp\",\"m1\",\"m2\",\"applyTransform\",\"p\",\"m\",\"xt\",\"yt\",\"applyInverseTransform\",\"d\",\"getAxialAlignedBoundingBox\",\"p1\",\"p2\",\"slice\",\"p3\",\"p4\",\"max\",\"inverseTransform\",\"singularValueDecompose2dScale\",\"transpose\",\"a\",\"c\",\"first\",\"second\",\"sqrt\",\"sx\",\"sy\",\"normalizeRect\",\"rect\",\"intersect\",\"rect1\",\"rect2\",\"xLow\",\"xHigh\",\"yLow\",\"yHigh\",\"getExtremumOnCurve\",\"#getExtremumOnCurve\",\"x0\",\"x1\",\"x2\",\"x3\",\"y0\",\"y1\",\"y2\",\"y3\",\"t\",\"mt\",\"tt\",\"ttt\",\"x\",\"y\",\"getExtremum\",\"#getExtremum\",\"abs\",\"delta\",\"sqrtDelta\",\"a2\",\"bezierBoundingBox\",\"PDFStringTranslateTable\",\"stringToPDFString\",\"encoding\",\"decoder\",\"TextDecoder\",\"fatal\",\"decoded\",\"decode\",\"replaceAll\",\"ex\",\"ii\",\"charCode\",\"charAt\",\"decodeURIComponent\",\"escape\",\"utf8StringToString\",\"unescape\",\"encodeURIComponent\",\"isArrayEqual\",\"arr1\",\"arr2\",\"getModificationDate\",\"date\",\"Date\",\"getUTCFullYear\",\"getUTCMonth\",\"getUTCDate\",\"getUTCHours\",\"getUTCMinutes\",\"getUTCSeconds\",\"NormalizeRegex\",\"NormalizationMap\",\"normalizeUnicode\",\"Map\",\"_\",\"normalize\",\"get\",\"getUuid\",\"crypto\",\"randomUUID\",\"buf\",\"getRandomValues\",\"floor\",\"random\",\"AnnotationPrefix\",\"FontRenderOps\",\"BEZIER_CURVE_TO\",\"MOVE_TO\",\"LINE_TO\",\"QUADRATIC_CURVE_TO\",\"RESTORE\",\"SCALE\",\"TRANSFORM\",\"TRANSLATE\",\"BaseFilterFactory\",\"addFilter\",\"maps\",\"addHCMFilter\",\"fgColor\",\"bgColor\",\"addAlphaFilter\",\"addLuminosityFilter\",\"addHighlightHCMFilter\",\"filterName\",\"newFgColor\",\"newBgColor\",\"destroy\",\"keepHCM\",\"BaseCanvasFactory\",\"width\",\"height\",\"canvas\",\"_createCanvas\",\"context\",\"getContext\",\"reset\",\"canvasAndContext\",\"BaseCMapReaderFactory\",\"isCompressed\",\"fetch\",\"compressionType\",\"_fetchData\",\"catch\",\"reason\",\"BaseStandardFontDataFactory\",\"filename\",\"BaseSVGFactory\",\"skipDimensions\",\"svg\",\"_createSVG\",\"setAttribute\",\"createElement\",\"SVG_NS\",\"PixelsPerInch\",\"PDF\",\"PDF_TO_CSS_UNITS\",\"DOMFilterFactory\",\"_cache\",\"_defs\",\"docId\",\"document\",\"_hcmCache\",\"id\",\"ownerDocument\",\"cache\",\"#cache\",\"hcmCache\",\"#hcmCache\",\"defs\",\"#defs\",\"div\",\"style\",\"visibility\",\"contain\",\"position\",\"top\",\"left\",\"zIndex\",\"createElementNS\",\"append\",\"body\",\"createTables\",\"#createTables\",\"mapR\",\"table\",\"mapG\",\"mapB\",\"bufferR\",\"bufferG\",\"bufferB\",\"tableR\",\"tableG\",\"tableB\",\"set\",\"filter\",\"createFilter\",\"addTransferMapConversion\",\"remove\",\"fgRGB\",\"getRGB\",\"bgRGB\",\"color\",\"addGrayConversion\",\"getSteps\",\"start\",\"end\",\"arr\",\"tableA\",\"addTransferMapAlphaConversion\",\"addLuminosityConversion\",\"bind\",\"fgGray\",\"round\",\"bgGray\",\"newFgRGB\",\"newBgRGB\",\"fg\",\"bg\",\"step\",\"newStart\",\"newStep\",\"prev\",\"k\",\"j\",\"size\",\"parentNode\",\"clear\",\"#addLuminosityConversion\",\"feColorMatrix\",\"#addGrayConversion\",\"#createFilter\",\"appendFeFunc\",\"#appendFeFunc\",\"feComponentTransfer\",\"func\",\"feFunc\",\"#addTransferMapConversion\",\"rTable\",\"gTable\",\"bTable\",\"#addTransferMapAlphaConversion\",\"aTable\",\"#getRGB\",\"getComputedStyle\",\"getPropertyValue\",\"DOMCanvasFactory\",\"_document\",\"fetchData\",\"isValidFetchUrl\",\"baseURI\",\"response\",\"ok\",\"statusText\",\"arrayBuffer\",\"blob\",\"json\",\"text\",\"Promise\",\"resolve\",\"reject\",\"request\",\"XMLHttpRequest\",\"open\",\"responseType\",\"onreadystatechange\",\"readyState\",\"DONE\",\"responseText\",\"send\",\"DOMCMapReaderFactory\",\"then\",\"data\",\"cMapData\",\"ArrayBuffer\",\"DOMStandardFontDataFactory\",\"DOMSVGFactory\",\"PageViewport\",\"viewBox\",\"scale\",\"rotation\",\"offsetX\",\"offsetY\",\"dontFlip\",\"centerX\",\"centerY\",\"rotateA\",\"rotateB\",\"rotateC\",\"rotateD\",\"offsetCanvasX\",\"offsetCanvasY\",\"rawDims\",\"pageWidth\",\"pageHeight\",\"pageX\",\"pageY\",\"clone\",\"convertToViewportPoint\",\"convertToViewportRectangle\",\"topLeft\",\"bottomRight\",\"convertToPdfPoint\",\"RenderingCancelledException\",\"extraDelay\",\"isDataScheme\",\"trim\",\"substring\",\"toLowerCase\",\"isPdfFile\",\"test\",\"getFilenameFromUrl\",\"split\",\"lastIndexOf\",\"getPdfFilenameFromUrl\",\"defaultFilename\",\"reURI\",\"reFilename\",\"splitURI\",\"exec\",\"suggestedFilename\",\"StatTimer\",\"started\",\"times\",\"time\",\"now\",\"timeEnd\",\"outBuf\",\"longest\",\"padEnd\",\"noContextMenu\",\"e\",\"preventDefault\",\"deprecated\",\"pdfDateStringRegex\",\"PDFDateString\",\"toDateObject\",\"input\",\"RegExp\",\"matches\",\"year\",\"parseInt\",\"month\",\"day\",\"hour\",\"minute\",\"universalTimeRelation\",\"offsetHour\",\"offsetMinute\",\"UTC\",\"getXfaPageViewport\",\"xfaPage\",\"attributes\",\"colorRGB\",\"getColorValues\",\"colors\",\"span\",\"computedColor\",\"window\",\"getCurrentTransform\",\"ctx\",\"f\",\"getTransform\",\"getCurrentTransformInverse\",\"invertSelf\",\"setLayerDimensions\",\"viewport\",\"mustFlip\",\"mustRotate\",\"useRound\",\"w\",\"h\",\"widthStr\",\"heightStr\",\"EditorToolbar\",\"toolbar\",\"colorPicker\",\"editor\",\"buttons\",\"render\",\"editToolbar\",\"className\",\"addEventListener\",\"pointerDown\",\"toolbarPosition\",\"_uiManager\",\"direction\",\"insetInlineEnd\",\"addDeleteButton\",\"#pointerDown\",\"stopPropagation\",\"focusIn\",\"#focusIn\",\"_focusEventsAllowed\",\"focusOut\",\"#focusOut\",\"addListenersToElement\",\"#addListenersToElement\",\"element\",\"capture\",\"hide\",\"classList\",\"add\",\"hideDropdown\",\"show\",\"#addDeleteButton\",\"button\",\"tabIndex\",\"editorType\",\"delete\",\"divider\",\"#divider\",\"addAltTextButton\",\"prepend\",\"addColorPicker\",\"renderButton\",\"HighlightToolbar\",\"uiManager\",\"#render\",\"addHighlightButton\",\"getLastPoint\",\"#getLastPoint\",\"boxes\",\"isLTR\",\"lastY\",\"lastX\",\"box\",\"parent\",\"#addHighlightButton\",\"highlightSelection\",\"bindEvents\",\"names\",\"opacityToHex\",\"opacity\",\"IdManager\",\"ImageManager\",\"baseId\",\"_isSVGFittingCanvas\",\"image\",\"Image\",\"src\",\"promise\",\"drawImage\",\"getImageData\",\"#get\",\"rawData\",\"bitmap\",\"refCounter\",\"isSvg\",\"file\",\"mustRemoveAspectRatioPromise\",\"fileReader\",\"FileReader\",\"imageElement\",\"imagePromise\",\"onload\",\"svgUrl\",\"result\",\"onerror\",\"readAsDataURL\",\"createImageBitmap\",\"error\",\"getFromFile\",\"lastModified\",\"getFromUrl\",\"getFromId\",\"getSvgUrl\",\"deleteId\",\"isValidId\",\"CommandManager\",\"commands\",\"locked\",\"maxSize\",\"cmd\",\"undo\",\"post\",\"mustExec\",\"NaN\",\"overwriteIfSameType\",\"keepUndo\",\"next\",\"splice\",\"redo\",\"hasSomethingToUndo\",\"hasSomethingToRedo\",\"KeyboardManager\",\"callbacks\",\"allKeys\",\"Set\",\"callback\",\"isMacKey\",\"at\",\"serialize\",\"#serialize\",\"event\",\"altKey\",\"ctrlKey\",\"metaKey\",\"shiftKey\",\"self\",\"has\",\"bubbles\",\"args\",\"checker\",\"ColorManager\",\"_colorsMapping\",\"_colors\",\"convert\",\"rgb\",\"matchMedia\",\"RGB\",\"every\",\"getHexCode\",\"AnnotationEditorUIManager\",\"activeEditor\",\"allEditors\",\"allLayers\",\"altTextManager\",\"annotationStorage\",\"changedExistingAnnotations\",\"commandManager\",\"currentPageIndex\",\"deletedAnnotationsElementIds\",\"draggingEditors\",\"editorTypes\",\"editorsToRescale\",\"enableHighlightFloatingButton\",\"filterFactory\",\"focusMainContainerTimeoutId\",\"highlightColors\",\"highlightWhenShiftUp\",\"highlightToolbar\",\"idManager\",\"isEnabled\",\"isWaiting\",\"lastActiveElement\",\"mainHighlightColorPicker\",\"mlManager\",\"mode\",\"selectedEditors\",\"selectedTextNode\",\"pageColors\",\"showAllStates\",\"boundBlur\",\"blur\",\"boundFocus\",\"focus\",\"boundCopy\",\"copy\",\"boundCut\",\"cut\",\"boundPaste\",\"paste\",\"boundKeydown\",\"keydown\",\"boundKeyup\",\"keyup\",\"boundOnEditingAction\",\"onEditingAction\",\"boundOnPageChanging\",\"onPageChanging\",\"boundOnScaleChanging\",\"onScaleChanging\",\"boundSelectionChange\",\"selectionChange\",\"boundOnRotationChanging\",\"onRotationChanging\",\"previousStates\",\"isEditing\",\"isEmpty\",\"hasSelectedEditor\",\"hasSelectedText\",\"translation\",\"translationTimeoutId\",\"container\",\"viewer\",\"TRANSLATE_SMALL\",\"TRANSLATE_BIG\",\"_keyboardManager\",\"proto\",\"arrowChecker\",\"contains\",\"activeElement\",\"tagName\",\"hasSomethingToControl\",\"textInputChecker\",\"_self\",\"target\",\"el\",\"HTMLInputElement\",\"small\",\"big\",\"selectAll\",\"addNewEditorFromKeyboard\",\"HTMLButtonElement\",\"isEnterHandled\",\"unselectAll\",\"translateSelectedEditors\",\"eventBus\",\"pdfDocument\",\"_eventBus\",\"_on\",\"addSelectionListener\",\"addKeyboardManager\",\"viewParameters\",\"realScale\",\"isShiftKeyDown\",\"removeKeyboardManager\",\"removeFocusManager\",\"_off\",\"layer\",\"values\",\"clearTimeout\",\"removeSelectionListener\",\"mlGuess\",\"guess\",\"hasMLManager\",\"hcmFilter\",\"foreground\",\"background\",\"pair\",\"highlightColorNames\",\"reverse\",\"setMainHighlightColorPicker\",\"editAltText\",\"pageNumber\",\"focusMainContainer\",\"findParent\",\"layerX\",\"layerY\",\"getBoundingClientRect\",\"disableUserSelect\",\"toggle\",\"addShouldRescale\",\"removeShouldRescale\",\"commitOrRemove\",\"pagesRotation\",\"getAnchorElementForSelection\",\"#getAnchorElementForSelection\",\"anchorNode\",\"nodeType\",\"Node\",\"TEXT_NODE\",\"parentElement\",\"methodOfCreation\",\"selection\",\"getSelection\",\"isCollapsed\",\"anchorOffset\",\"focusNode\",\"focusOffset\",\"anchorElement\",\"textLayer\",\"closest\",\"getSelectionBoxes\",\"empty\",\"dispatch\",\"source\",\"showAllEditors\",\"hasTextLayer\",\"createAndAddNewEditor\",\"displayHighlightToolbar\",\"#displayHighlightToolbar\",\"addToAnnotationStorage\",\"setValue\",\"#selectionChange\",\"dispatchUpdateStates\",\"pointerup\",\"removeEventListener\",\"onSelectEnd\",\"#onSelectEnd\",\"#addSelectionListener\",\"#removeSelectionListener\",\"addFocusManager\",\"#addFocusManager\",\"#removeFocusManager\",\"hasSelection\",\"lastEditor\",\"once\",\"#addKeyboardManager\",\"#removeKeyboardManager\",\"addCopyPasteListeners\",\"#addCopyPasteListeners\",\"removeCopyPasteListeners\",\"#removeCopyPasteListeners\",\"addEditListeners\",\"removeEditListeners\",\"editors\",\"serialized\",\"clipboardData\",\"setData\",\"JSON\",\"stringify\",\"item\",\"items\",\"isHandlingMimeForPasting\",\"currentLayer\",\"getData\",\"parse\",\"isArray\",\"newEditors\",\"deserializedEditor\",\"deserialize\",\"addEditorToLayer\",\"selectEditors\",\"addCommands\",\"isEditorHandlingKeyboard\",\"#dispatchUpdateStates\",\"hasChanged\",\"entries\",\"some\",\"assign\",\"dispatchUpdateUI\",\"#dispatchUpdateUI\",\"setEditingState\",\"registerEditorTypes\",\"types\",\"defaultPropertiesToUpdate\",\"getId\",\"getLayer\",\"pageIndex\",\"addLayer\",\"enable\",\"disable\",\"removeLayer\",\"updateMode\",\"editId\",\"isFromKeyboard\",\"disableAll\",\"enableAll\",\"annotationElementId\",\"setSelected\",\"enterInEditMode\",\"canCreateNewEmptyEditor\",\"addNewEditor\",\"updateToolbar\",\"updateParams\",\"updateColor\",\"action\",\"updateDefaultParams\",\"visible\",\"updateButton\",\"state\",\"enableWaiting\",\"mustWait\",\"disableClick\",\"enableClick\",\"#enableAll\",\"#disableAll\",\"getEditors\",\"getEditor\",\"addEditor\",\"removeEditor\",\"setTimeout\",\"unselect\",\"addDeletedAnnotationElement\",\"addChangedExistingAnnotation\",\"deleted\",\"isDeletedAnnotationElement\",\"removeDeletedAnnotationElement\",\"removeChangedExistingAnnotation\",\"#addEditorToLayer\",\"addOrRebuild\",\"setActiveEditor\",\"propertiesToUpdate\",\"lastSelectedEditor\",\"#lastSelectedEditor\",\"ed\",\"updateUI\",\"toggleSelected\",\"select\",\"isSelected\",\"firstSelectedEditor\",\"params\",\"#isEmpty\",\"#selectEditors\",\"commit\",\"noCommit\",\"totalX\",\"totalY\",\"TIME_TO_WAIT\",\"translateInPage\",\"setUpDragSession\",\"savedX\",\"savedY\",\"savedPageIndex\",\"newX\",\"newY\",\"newPageIndex\",\"endDragSession\",\"mustBeAddedInUndoStack\",\"move\",\"_setParentAndPosition\",\"dragSelectedEditors\",\"tx\",\"ty\",\"drag\",\"rebuild\",\"changeParent\",\"getActive\",\"shouldGetKeyboardEvents\",\"isActive\",\"getMode\",\"imageManager\",\"rangeCount\",\"getRangeAt\",\"commonAncestorContainer\",\"parentWidth\",\"parentHeight\",\"rotator\",\"getAttribute\",\"range\",\"collapsed\",\"getClientRects\",\"renderAnnotationElement\",\"annotation\",\"editorId\",\"getRawValue\",\"hasBeenModified\",\"AltText\",\"altText\",\"altTextDecorative\",\"altTextButton\",\"altTextTooltip\",\"altTextTooltipTimeout\",\"altTextWasFromKeyBoard\",\"_l10nPromise\",\"initialize\",\"l10nPromise\",\"textContent\",\"onClick\",\"setState\",\"finish\",\"focusVisible\",\"decorative\",\"enabled\",\"disabled\",\"#setState\",\"tooltip\",\"DELAY_TO_SHOW_TOOLTIP\",\"_reportTelemetry\",\"innerText\",\"getImageForAltText\",\"AnnotationEditor\",\"allResizerDivs\",\"keepAspectRatio\",\"resizersDiv\",\"savedDimensions\",\"boundFocusin\",\"focusin\",\"boundFocusout\",\"focusout\",\"focusedResizerName\",\"hasBeenClicked\",\"initialPosition\",\"isInEditMode\",\"isResizerEnabledForKeyboard\",\"moveInDOMTimeout\",\"prevDragX\",\"prevDragY\",\"telemetryTimeouts\",\"_initialOptions\",\"_isVisible\",\"isDraggable\",\"_zIndex\",\"_borderLineWidth\",\"_colorManager\",\"_telemetryTimeout\",\"_resizerKeyboardManager\",\"resize\",\"_resizeWithKeyboard\",\"_stopResizingWithKeyboard\",\"parameters\",\"_willKeepAspectRatio\",\"isCentered\",\"_structTreeParentId\",\"pageRotation\",\"pageDimensions\",\"pageTranslation\",\"parentDimensions\",\"isAttachedToDOM\",\"getPrototypeOf\",\"_type\",\"_defaultLineColor\",\"deleteAnnotationElement\",\"fakeEditor\",\"FakeEditor\",\"getNextId\",\"l10n\",\"strings\",\"documentElement\",\"parseFloat\",\"_value\",\"mime\",\"_isDraggable\",\"center\",\"parentRotation\",\"fixAndSetPosition\",\"setInBackground\",\"setInForeground\",\"setParent\",\"stopResizing\",\"relatedTarget\",\"isMultipleSelection\",\"setAt\",\"screenToPageTranslation\",\"translate\",\"#translate\",\"scrollIntoView\",\"block\",\"findNewParent\",\"bx\",\"by\",\"getBaseTranslation\",\"toFixed\",\"_hasBeenMoved\",\"_mustFixPosition\",\"moveInDOM\",\"rotatePoint\",\"#rotatePoint\",\"angle\",\"pageTranslationToScreen\",\"getRotationMatrix\",\"#getRotationMatrix\",\"parentScale\",\"scaledWidth\",\"scaledHeight\",\"setDims\",\"fixDims\",\"widthPercent\",\"endsWith\",\"heightPercent\",\"getInitialTranslation\",\"createResizers\",\"#createResizers\",\"classes\",\"resizerPointerdown\",\"#resizerPointerdown\",\"boundResizerPointermove\",\"resizerPointermove\",\"savedDraggable\",\"pointerMoveOptions\",\"passive\",\"togglePointerEvents\",\"savedWidth\",\"savedHeight\",\"savedParentCursor\",\"cursor\",\"savedCursor\",\"pointerUpCallback\",\"addResizeToUndoStack\",\"#addResizeToUndoStack\",\"newWidth\",\"newHeight\",\"#resizerPointermove\",\"minWidth\",\"MIN_SIZE\",\"minHeight\",\"rotationMatrix\",\"transf\",\"invRotationMatrix\",\"invTransf\",\"getPoint\",\"getOpposite\",\"isDiagonal\",\"isHorizontal\",\"point\",\"oppositePoint\",\"transfOppositePoint\",\"oppositeX\",\"oppositeY\",\"ratioX\",\"ratioY\",\"deltaX\",\"deltaY\",\"movementX\",\"movementY\",\"oldDiag\",\"hypot\",\"altTextFinish\",\"addEditToolbar\",\"removeEditToolbar\",\"getClientDimensions\",\"altTextData\",\"hasAltText\",\"maxWidth\",\"maxHeight\",\"pointerdown\",\"selectOnPointerEvent\",\"#selectOnPointerEvent\",\"#setUpDragSession\",\"pointerMoveCallback\",\"clientX\",\"clientY\",\"moveEditorInDOM\",\"getRect\",\"shiftX\",\"shiftY\",\"getRectInCurrentCoords\",\"onceAdded\",\"enableEditMode\",\"disableEditMode\",\"needsToBeRebuilt\",\"rotate\",\"_angle\",\"isForCopying\",\"timeout\",\"isResizable\",\"makeResizable\",\"children\",\"boundResizerKeydown\",\"resizerKeydown\",\"boundResizerBlur\",\"resizerBlur\",\"resizerFocus\",\"firstPosition\",\"nextFirstPosition\",\"firstChild\",\"before\",\"lastChild\",\"child\",\"setResizerTabIndex\",\"stopImmediatePropagation\",\"#resizerKeydown\",\"#resizerBlur\",\"#resizerFocus\",\"#setResizerTabIndex\",\"#stopResizing\",\"preventScroll\",\"disableEditing\",\"enableEditing\",\"contentDiv\",\"setAspectRatio\",\"aspectRatio\",\"telemetryInitialData\",\"telemetryFinalData\",\"content\",\"querySelector\",\"nodeName\",\"resetAnnotationElement\",\"SEED\",\"MASK_HIGH\",\"MASK_LOW\",\"MurmurHash3_64\",\"seed\",\"h1\",\"h2\",\"update\",\"isView\",\"byteLength\",\"blockCounts\",\"tailLength\",\"dataUint32\",\"k1\",\"k2\",\"C1\",\"C2\",\"C1_LOW\",\"C2_LOW\",\"hexdigest\",\"SerializableEmpty\",\"freeze\",\"hash\",\"transfer\",\"AnnotationStorage\",\"modified\",\"storage\",\"onSetModified\",\"onResetModified\",\"onAnnotationEditor\",\"getValue\",\"defaultValue\",\"resetModified\",\"entry\",\"val\",\"setModified\",\"getAll\",\"setAll\",\"#setModified\",\"print\",\"PrintAnnotationStorage\",\"serializable\",\"hasBitmap\",\"editorStats\",\"stats\",\"typeToEditor\",\"counters\",\"count\",\"computeTelemetryFinalData\",\"structuredClone\",\"FontLoader\",\"systemFonts\",\"styleElement\",\"nativeFontFaces\",\"loadingRequests\",\"loadTestFontId\",\"addNativeFontFace\",\"nativeFontFace\",\"fonts\",\"removeNativeFontFace\",\"insertRule\",\"rule\",\"getElementsByTagName\",\"styleSheet\",\"sheet\",\"cssRules\",\"loadSystemFont\",\"systemFontInfo\",\"_inspectFont\",\"loadedName\",\"disableFontFace\",\"isFontLoadingAPISupported\",\"fontFace\",\"FontFace\",\"load\",\"baseFontName\",\"font\",\"attached\",\"missingFile\",\"createNativeFontFace\",\"loaded\",\"family\",\"createFontFaceRule\",\"isSyncFontLoadingSupported\",\"_queueLoadingCallback\",\"_prepareFontLoadEvent\",\"hasFonts\",\"supported\",\"userAgent\",\"completeRequest\",\"done\",\"otherRequest\",\"shift\",\"complete\",\"_loadTestFont\",\"testFont\",\"atob\",\"int32\",\"offset\",\"spliceString\",\"s\",\"insert\",\"chunk1\",\"chunk2\",\"called\",\"isFontReady\",\"fillText\",\"imageData\",\"COMMENT_OFFSET\",\"CFF_CHECKSUM_OFFSET\",\"XXXX_VALUE\",\"checksum\",\"btoa\",\"fontFamily\",\"FontFaceObject\",\"translatedData\",\"inspectFont\",\"compiledGlyphs\",\"cssFontInfo\",\"css\",\"weight\",\"fontWeight\",\"italicAngle\",\"mimetype\",\"getPathGenerator\",\"objs\",\"character\",\"cmds\",\"bezierCurveTo\",\"quadraticCurveTo\",\"glyphDrawer\",\"packageCapability\",\"withResolvers\",\"packageMap\",\"loadPackages\",\"fs\",\"http\",\"https\",\"path2d\",\"NodePackages\",\"promises\",\"readFile\",\"NodeFilterFactory\",\"NodeCanvasFactory\",\"createCanvas\",\"NodeCMapReaderFactory\",\"NodeStandardFontDataFactory\",\"PathType\",\"SHADING\",\"applyBoundingBox\",\"bbox\",\"region\",\"Path2D\",\"BaseShadingPattern\",\"getPattern\",\"RadialAxialShadingPattern\",\"IR\",\"_bbox\",\"_colorStops\",\"_p0\",\"_p1\",\"_r0\",\"_r1\",\"matrix\",\"_createGradient\",\"grad\",\"createLinearGradient\",\"createRadialGradient\",\"colorStop\",\"addColorStop\",\"owner\",\"inverse\",\"pathType\",\"pattern\",\"ownerBBox\",\"current\",\"getClippedPathBoundingBox\",\"ceil\",\"tmpCanvas\",\"cachedCanvases\",\"getCanvas\",\"tmpCtx\",\"clearRect\",\"beginPath\",\"baseTransform\",\"fillStyle\",\"createPattern\",\"domMatrix\",\"DOMMatrix\",\"setTransform\",\"drawTriangle\",\"c1\",\"c2\",\"c3\",\"coords\",\"rowSize\",\"tmp\",\"scaleX\",\"scaleY\",\"c1r\",\"c1g\",\"c1b\",\"c2r\",\"c2g\",\"c2b\",\"c3r\",\"c3g\",\"c3b\",\"minY\",\"maxY\",\"xa\",\"car\",\"cag\",\"cab\",\"xb\",\"cbr\",\"cbg\",\"cbb\",\"x1_\",\"x2_\",\"drawFigure\",\"figure\",\"ps\",\"cs\",\"verticesPerRow\",\"rows\",\"cols\",\"q\",\"MeshShadingPattern\",\"_coords\",\"_figures\",\"_bounds\",\"_background\",\"_createMeshCanvas\",\"combinedScale\",\"backgroundColor\",\"EXPECTED_SCALE\",\"MAX_PATTERN_SIZE\",\"BORDER_SIZE\",\"boundsWidth\",\"boundsHeight\",\"paddedWidth\",\"paddedHeight\",\"createImageData\",\"putImageData\",\"matrixScale\",\"temporaryPatternCanvas\",\"DummyShadingPattern\",\"getShadingPattern\",\"PaintType\",\"COLORED\",\"UNCOLORED\",\"TilingPattern\",\"canvasGraphicsFactory\",\"operatorList\",\"xstep\",\"ystep\",\"paintType\",\"tilingType\",\"createPatternCanvas\",\"curMatrixScale\",\"dimx\",\"getSizeAndScale\",\"dimy\",\"graphics\",\"createCanvasGraphics\",\"groupLevel\",\"setFillAndStrokeStyleToContext\",\"adjustedX0\",\"adjustedY0\",\"adjustedX1\",\"adjustedY1\",\"clipBbox\",\"executeOperatorList\",\"endDrawing\",\"realOutputSize\",\"bboxWidth\",\"bboxHeight\",\"updateRectMinMax\",\"strokeStyle\",\"fillColor\",\"strokeColor\",\"cssColor\",\"convertToRGBA\",\"kind\",\"convertBlackAndWhiteToRGBA\",\"convertRGBToRGBA\",\"srcPos\",\"dest\",\"nonBlackColor\",\"inverseDecode\",\"black\",\"zeroMapping\",\"oneMapping\",\"widthInSource\",\"widthRemainder\",\"srcLength\",\"destPos\",\"elem\",\"len32\",\"src32\",\"s1\",\"s2\",\"s3\",\"jj\",\"grayToRGBA\",\"MIN_FONT_SIZE\",\"MAX_FONT_SIZE\",\"EXECUTION_TIME\",\"EXECUTION_STEPS\",\"MAX_SIZE_TO_COMPILE\",\"FULL_CHUNK_HEIGHT\",\"mirrorContextOperations\",\"destCtx\",\"_removeMirroring\",\"__originalSave\",\"__originalRestore\",\"__originalRotate\",\"__originalScale\",\"__originalTranslate\",\"__originalTransform\",\"__originalSetTransform\",\"__originalResetTransform\",\"resetTransform\",\"__originalClip\",\"__originalMoveTo\",\"__originalLineTo\",\"__originalBezierCurveTo\",\"__originalRect\",\"__originalClosePath\",\"__originalBeginPath\",\"ctxSave\",\"ctxRestore\",\"ctxTranslate\",\"ctxScale\",\"ctxTransform\",\"ctxSetTransform\",\"ctxResetTransform\",\"ctxRotate\",\"cp1x\",\"cp1y\",\"cp2x\",\"cp2y\",\"CachedCanvases\",\"canvasFactory\",\"canvasEntry\",\"drawImageAtIntegerCoords\",\"srcImg\",\"srcX\",\"srcY\",\"srcW\",\"srcH\",\"destX\",\"destY\",\"destW\",\"destH\",\"tlX\",\"rTlX\",\"tlY\",\"rTlY\",\"brX\",\"rWidth\",\"brY\",\"rHeight\",\"sign\",\"compileType3Glyph\",\"imgData\",\"POINT_TO_PROCESS_LIMIT\",\"POINT_TYPES\",\"width1\",\"points\",\"j0\",\"lineSize\",\"pos\",\"mask\",\"sum\",\"steps\",\"Int32Array\",\"path\",\"p0\",\"pp\",\"drawOutline\",\"CanvasExtraState\",\"alphaIsShape\",\"fontSize\",\"fontSizeScale\",\"textMatrix\",\"textMatrixScale\",\"fontMatrix\",\"leading\",\"lineX\",\"lineY\",\"charSpacing\",\"wordSpacing\",\"textHScale\",\"textRenderingMode\",\"textRise\",\"patternFill\",\"fillAlpha\",\"strokeAlpha\",\"lineWidth\",\"activeSMask\",\"transferMaps\",\"startNewPathAndClipBox\",\"clipBox\",\"setCurrentPoint\",\"updatePathMinMax\",\"minX\",\"maxX\",\"updateScalingPathMinMax\",\"updateCurvePathMinMax\",\"getPathBoundingBox\",\"xStrokePad\",\"yStrokePad\",\"updateClipFromPath\",\"isEmptyClip\",\"Infinity\",\"putBinaryImageData\",\"ImageData\",\"partialChunkHeight\",\"fullChunks\",\"totalChunks\",\"chunkImgData\",\"thisChunkHeight\",\"elemsInThisChunk\",\"dest32\",\"dest32DataLength\",\"fullSrcDiff\",\"white\",\"srcDiff\",\"kEnd\",\"kEndUnrolled\",\"srcByte\",\"putBinaryImageMask\",\"copyCtxState\",\"sourceCtx\",\"properties\",\"property\",\"setLineDash\",\"getLineDash\",\"lineDashOffset\",\"resetCtxToDefault\",\"fillRule\",\"globalAlpha\",\"lineCap\",\"lineJoin\",\"miterLimit\",\"globalCompositeOperation\",\"getImageSmoothingEnabled\",\"interpolate\",\"fround\",\"actualScale\",\"devicePixelRatio\",\"LINE_CAP_STYLES\",\"LINE_JOIN_STYLES\",\"NORMAL_CLIP\",\"EO_CLIP\",\"CanvasGraphics\",\"canvasCtx\",\"commonObjs\",\"optionalContentConfig\",\"markedContentStack\",\"annotationCanvasMap\",\"stateStack\",\"pendingClip\",\"pendingEOFill\",\"res\",\"xobjs\",\"groupStack\",\"processingType3\",\"baseTransformStack\",\"smaskStack\",\"smaskCounter\",\"tempSMask\",\"suspendedCtx\",\"contentVisible\",\"cachedPatterns\",\"viewportScale\",\"outputScaleX\",\"outputScaleY\",\"_cachedScaleForStroking\",\"_cachedGetSinglePixelWidth\",\"_cachedBitmapsMap\",\"getObject\",\"fallback\",\"beginDrawing\",\"transparency\",\"savedFillStyle\",\"fillRect\",\"transparentCanvas\",\"compositeCtx\",\"executionStartIdx\",\"continueCallback\",\"stepper\",\"argsArray\",\"fnArray\",\"argsArrayLen\",\"chunkOperations\",\"endTime\",\"fnId\",\"nextBreakPoint\",\"breakIt\",\"depObjId\",\"objsPool\",\"restoreInitialState\",\"#restoreInitialState\",\"inSMaskMode\",\"HTMLCanvasElement\",\"drawFilter\",\"#drawFilter\",\"hcmFilterId\",\"savedFilter\",\"_scaleImage\",\"img\",\"widthScale\",\"heightScale\",\"paintWidth\",\"paintHeight\",\"tmpCanvasId\",\"_createMaskCanvas\",\"isPatternFill\",\"currentTransform\",\"cacheKey\",\"scaled\",\"maskCanvas\",\"mainKey\",\"cachedImage\",\"maskToCanvas\",\"drawnWidth\",\"drawnHeight\",\"fillCanvas\",\"fillCtx\",\"imageSmoothingEnabled\",\"limit\",\"dashArray\",\"dashPhase\",\"intent\",\"flatness\",\"states\",\"checkSMaskState\",\"beginSMaskMode\",\"endSMaskMode\",\"cacheId\",\"scratchCanvas\",\"compose\",\"dirtyBox\",\"smask\",\"composeSMask\",\"layerCtx\",\"layerBox\",\"layerOffsetX\",\"layerOffsetY\",\"layerWidth\",\"layerHeight\",\"genericComposeSMask\",\"subtype\",\"backdrop\",\"transferMap\",\"maskCtx\",\"maskOffsetX\",\"maskOffsetY\",\"maskX\",\"maskY\",\"old\",\"pop\",\"ops\",\"startX\",\"startY\",\"isScalingMatrix\",\"minMaxForBezier\",\"xw\",\"yh\",\"consumePath\",\"rescaleAndStroke\",\"needRestore\",\"paths\",\"pendingTextPaths\",\"addToPath\",\"spacing\",\"fontRefName\",\"fontObj\",\"fontDirection\",\"isType3Font\",\"typeface\",\"fallbackName\",\"bold\",\"italic\",\"browserFontSize\",\"rise\",\"paintChar\",\"patternTransform\",\"fillStrokeMode\",\"isAddToPathSet\",\"strokeText\",\"isFontSubpixelAAEnabled\",\"glyphs\",\"showType3Text\",\"glyphsLength\",\"vertical\",\"spacingDir\",\"defaultVMetrics\",\"widthAdvanceScale\",\"simpleFillText\",\"getSinglePixelWidth\",\"isInvalidPDFjsFont\",\"chars\",\"glyph\",\"unicode\",\"restoreNeeded\",\"isSpace\",\"fontChar\",\"accent\",\"scaledX\",\"scaledY\",\"vmetric\",\"vx\",\"vy\",\"remeasure\",\"measuredWidth\",\"measureText\",\"characterScaleX\",\"isInFont\",\"scaledAccentX\",\"scaledAccentY\",\"charWidth\",\"isTextInvisible\",\"spacingLength\",\"charProcOperatorList\",\"operatorListId\",\"transformed\",\"xWidth\",\"yWidth\",\"llx\",\"lly\",\"urx\",\"ury\",\"getColorN_Pattern\",\"_getPattern\",\"arguments\",\"objId\",\"inv\",\"group\",\"currentCtx\",\"isolated\",\"knockout\",\"bounds\",\"canvasBounds\",\"groupCtx\",\"startTransformInverse\",\"currentMtx\",\"hasOwnCanvas\",\"canvasWidth\",\"canvasHeight\",\"annotationCanvas\",\"savedCtx\",\"compiled\",\"skewX\",\"skewY\",\"positions\",\"trans\",\"images\",\"applyTransferMapsToCanvas\",\"applyTransferMapsToBitmap\",\"imgToPaint\",\"HTMLElement\",\"tag\",\"isVisible\",\"isContentVisible\",\"absDet\",\"normX\",\"normY\",\"getScaleForStroking\",\"scaledLineWidth\",\"scaledXLineWidth\",\"scaledYLineWidth\",\"baseArea\",\"saveRestore\",\"dashes\",\"op\",\"GlobalWorkerOptions\",\"port\",\"workerPort\",\"Worker\",\"workerSrc\",\"CallbackKind\",\"UNKNOWN\",\"DATA\",\"ERROR\",\"StreamKind\",\"CANCEL\",\"CANCEL_COMPLETE\",\"CLOSE\",\"ENQUEUE\",\"PULL\",\"PULL_COMPLETE\",\"START_COMPLETE\",\"wrapReason\",\"MessageHandler\",\"sourceName\",\"targetName\",\"comObj\",\"callbackId\",\"streamId\",\"streamSinks\",\"streamControllers\",\"callbackCapabilities\",\"actionHandler\",\"_onComObjOnMessage\",\"stream\",\"processStreamMessage\",\"capability\",\"cbSourceName\",\"cbTargetName\",\"postMessage\",\"createStreamSink\",\"on\",\"actionName\",\"handler\",\"ah\",\"transfers\",\"sendWithPromise\",\"sendWithStream\",\"queueingStrategy\",\"ReadableStream\",\"controller\",\"startCapability\",\"startCall\",\"pullCall\",\"cancelCall\",\"isClosed\",\"desiredSize\",\"pull\",\"pullCapability\",\"cancel\",\"cancelCapability\",\"#createStreamSink\",\"streamSink\",\"enqueue\",\"isCancelled\",\"lastDesiredSize\",\"sinkCapability\",\"ready\",\"close\",\"onPull\",\"onCancel\",\"success\",\"#processStreamMessage\",\"streamController\",\"deleteStreamController\",\"#deleteStreamController\",\"allSettled\",\"Metadata\",\"metadataMap\",\"parsedData\",\"getRaw\",\"INTERNAL\",\"Symbol\",\"OptionalContentGroup\",\"isDisplay\",\"isPrint\",\"userSet\",\"renderingIntent\",\"usage\",\"view\",\"viewState\",\"printState\",\"_setVisible\",\"internal\",\"OptionalContentConfig\",\"cachedGetHash\",\"groups\",\"initialHash\",\"order\",\"creator\",\"baseState\",\"off\",\"getHash\",\"evaluateVisibilityExpression\",\"#evaluateVisibilityExpression\",\"array\",\"operator\",\"expression\",\"policy\",\"ids\",\"setVisibility\",\"setOCGState\",\"preserveRB\",\"hasInitialVisibility\",\"getOrder\",\"getGroups\",\"getGroup\",\"PDFDataTransportStream\",\"pdfDataRangeTransport\",\"disableRange\",\"disableStream\",\"initialData\",\"progressiveDone\",\"contentDispositionFilename\",\"_queuedChunks\",\"_progressiveDone\",\"_contentDispositionFilename\",\"_pdfDataRangeTransport\",\"_isStreamingSupported\",\"_isRangeSupported\",\"_contentLength\",\"_fullRequestReader\",\"_rangeReaders\",\"addRangeListener\",\"begin\",\"_onReceiveData\",\"addProgressListener\",\"total\",\"_onProgress\",\"addProgressiveReadListener\",\"addProgressiveDoneListener\",\"_onProgressiveDone\",\"transportReady\",\"_enqueue\",\"found\",\"rangeReader\",\"_begin\",\"_progressiveDataLength\",\"_loaded\",\"evt\",\"onProgress\",\"_removeRangeReader\",\"reader\",\"indexOf\",\"getFullReader\",\"queuedChunks\",\"PDFDataTransportStreamReader\",\"getRangeReader\",\"PDFDataTransportStreamRangeReader\",\"requestDataRange\",\"cancelAllRequests\",\"abort\",\"_stream\",\"_done\",\"_filename\",\"_requests\",\"_headersReady\",\"requestCapability\",\"headersReady\",\"isRangeSupported\",\"isStreamingSupported\",\"contentLength\",\"read\",\"_end\",\"_queuedChunk\",\"requestsCapability\",\"getFilenameFromContentDispositionHeader\",\"contentDisposition\",\"needsEncodingFixup\",\"toParamRegExp\",\"rfc2616unquote\",\"rfc5987decode\",\"rfc2047decode\",\"fixupEncoding\",\"rfc2231getparam\",\"attributePattern\",\"flags\",\"textdecode\",\"contentDispositionStr\",\"iter\",\"quot\",\"part\",\"parts\",\"quotindex\",\"extvalue\",\"encodingend\",\"langvalue\",\"replace\",\"charset\",\"hex\",\"validateRangeRequestCapabilities\",\"getResponseHeader\",\"isHttp\",\"rangeChunkSize\",\"returnValues\",\"allowRangeRequests\",\"suggestedLength\",\"contentEncoding\",\"extractFilenameFromHeader\",\"createResponseStatusError\",\"validateResponseStatus\",\"createFetchOptions\",\"headers\",\"withCredentials\",\"abortController\",\"method\",\"signal\",\"credentials\",\"redirect\",\"createHeaders\",\"httpHeaders\",\"Headers\",\"getArrayBuffer\",\"PDFFetchStream\",\"_rangeRequestReaders\",\"PDFFetchStreamReader\",\"PDFFetchStreamRangeReader\",\"_reader\",\"_withCredentials\",\"_headersCapability\",\"_disableRange\",\"_rangeChunkSize\",\"_abortController\",\"AbortController\",\"_headers\",\"getReader\",\"_readCapability\",\"OK_RESPONSE\",\"PARTIAL_CONTENT_RESPONSE\",\"xhr\",\"NetworkManager\",\"currXhrId\",\"pendingRequests\",\"requestRange\",\"listeners\",\"requestFull\",\"xhrId\",\"pendingRequest\",\"setRequestHeader\",\"expectedStatus\",\"onError\",\"onStateChange\",\"onprogress\",\"onHeadersReceived\",\"onDone\",\"xhrStatus\",\"ok_response_on_range_request\",\"rangeHeader\",\"getRequestXhr\",\"isPendingRequest\",\"abortRequest\",\"PDFNetworkStream\",\"_source\",\"_manager\",\"_onRangeRequestReaderClosed\",\"PDFNetworkStreamFullRequestReader\",\"PDFNetworkStreamRangeRequestReader\",\"onClosed\",\"manager\",\"_onHeadersReceived\",\"_onDone\",\"_onError\",\"_url\",\"_fullRequestId\",\"_headersReceivedCapability\",\"_cachedChunks\",\"_storedError\",\"fullRequestXhrId\",\"fullRequestXhr\",\"lengthComputable\",\"_requestId\",\"_close\",\"fileUriRegex\",\"parseUrl\",\"sourceUrl\",\"parsedUrl\",\"host\",\"PDFNodeStream\",\"isFsUrl\",\"PDFNodeStreamFsFullReader\",\"PDFNodeStreamFullReader\",\"PDFNodeStreamFsRangeReader\",\"PDFNodeStreamRangeReader\",\"BaseFullReader\",\"_readableStream\",\"_error\",\"_setReadableStream\",\"readableStream\",\"BaseRangeReader\",\"createRequestOptions\",\"auth\",\"hostname\",\"handleResponse\",\"statusCode\",\"_request\",\"_httpHeaders\",\"Range\",\"href\",\"lstat\",\"stat\",\"createReadStream\",\"MAX_TEXT_DIVS_TO_RENDER\",\"DEFAULT_FONT_SIZE\",\"DEFAULT_FONT_ASCENT\",\"TextLayer\",\"disableProcessItems\",\"fontInspectorEnabled\",\"FontInspector\",\"lang\",\"layoutTextParams\",\"rootContainer\",\"styleCache\",\"textContentItemsStr\",\"textContentSource\",\"textDivs\",\"textDivProperties\",\"WeakMap\",\"ascentCache\",\"canvasContexts\",\"pendingTextLayers\",\"prevFontSize\",\"prevFontFamily\",\"pump\",\"styles\",\"processItems\",\"onBefore\",\"getCtx\",\"layout\",\"abortEx\",\"#processItems\",\"appendText\",\"#appendText\",\"geom\",\"textDiv\",\"hasText\",\"hasEOL\",\"atan2\",\"fontName\",\"fontSubstitution\",\"fontHeight\",\"fontAscent\",\"getAscent\",\"sin\",\"cos\",\"scaleFactorStr\",\"divStyle\",\"dir\",\"dataset\",\"fontSubstitutionLoadedName\",\"shouldScaleText\",\"absScaleX\",\"absScaleY\",\"br\",\"#layout\",\"cleanup\",\"#getCtx\",\"canvasContext\",\"alpha\",\"#getAscent\",\"cachedAscent\",\"savedFont\",\"metrics\",\"ascent\",\"fontBoundingBoxAscent\",\"descent\",\"fontBoundingBoxDescent\",\"ratio\",\"pixels\",\"renderTextLayer\",\"rest\",\"restKeys\",\"updateTextLayer\",\"XfaText\",\"xfa\",\"output\",\"walk\",\"node\",\"shouldBuildText\",\"DEFAULT_RANGE_CHUNK_SIZE\",\"RENDERING_CANCELLED_TIMEOUT\",\"DELAYED_CLEANUP_TIMEOUT\",\"DefaultCanvasFactory\",\"DefaultCMapReaderFactory\",\"DefaultFilterFactory\",\"DefaultStandardFontDataFactory\",\"getDocument\",\"task\",\"PDFDocumentLoadingTask\",\"getUrlProp\",\"getDataProp\",\"password\",\"rangeTransport\",\"PDFDataRangeTransport\",\"worker\",\"PDFWorker\",\"docBaseUrl\",\"cMapUrl\",\"cMapPacked\",\"CMapReaderFactory\",\"standardFontDataUrl\",\"StandardFontDataFactory\",\"ignoreErrors\",\"stopAtErrors\",\"maxImageSize\",\"canvasMaxAreaInBytes\",\"fontExtraProperties\",\"enableXfa\",\"disableAutoFetch\",\"pdfBug\",\"useSystemFonts\",\"useWorkerFetch\",\"transportFactory\",\"cMapReaderFactory\",\"standardFontDataFactory\",\"workerParams\",\"fromPort\",\"_worker\",\"docParams\",\"apiVersion\",\"evaluatorOptions\",\"transportParams\",\"loadingParams\",\"destroyed\",\"workerIdPromise\",\"messageHandler\",\"networkStream\",\"createPDFNetworkStream\",\"isFetchSupported\",\"Response\",\"workerId\",\"transport\",\"WorkerTransport\",\"_transport\",\"_capability\",\"location\",\"Buffer\",\"isNaN\",\"isRefProxy\",\"ref\",\"num\",\"gen\",\"onPassword\",\"_pendingDestroy\",\"_rangeListeners\",\"_progressListeners\",\"_progressiveReadListeners\",\"_progressiveDoneListeners\",\"_readyCapability\",\"listener\",\"onDataRange\",\"onDataProgress\",\"onDataProgressiveRead\",\"onDataProgressiveDone\",\"PDFDocumentProxy\",\"pdfInfo\",\"_pdfInfo\",\"numPages\",\"fingerprints\",\"isPureXfa\",\"_htmlForXfa\",\"allXfaHtml\",\"getPage\",\"getPageIndex\",\"getDestinations\",\"getDestination\",\"getPageLabels\",\"getPageLayout\",\"getPageMode\",\"getViewerPreferences\",\"getOpenAction\",\"getAttachments\",\"getJSActions\",\"getDocJSActions\",\"getOutline\",\"getOptionalContentConfig\",\"getRenderingIntent\",\"getPermissions\",\"getMetadata\",\"getMarkInfo\",\"saveDocument\",\"getDownloadInfo\",\"downloadInfoCapability\",\"keepLoadedFonts\",\"startCleanup\",\"loadingTask\",\"cachedPageNumber\",\"getFieldObjects\",\"hasJSActions\",\"getCalculationOrderIds\",\"PDFPageProxy\",\"delayedCleanupTimeout\",\"pendingCleanup\",\"pageInfo\",\"_pageIndex\",\"_pageInfo\",\"_stats\",\"_pdfBug\",\"PDFObjects\",\"_maybeCleanupAfterRender\",\"_intentStates\",\"userUnit\",\"getViewport\",\"getAnnotations\",\"getPageJSActions\",\"getXfa\",\"annotationMode\",\"optionalContentConfigPromise\",\"printAnnotationStorage\",\"intentArgs\",\"abortDelayedCleanup\",\"intentState\",\"streamReaderCancelTimeout\",\"intentPrint\",\"displayReadyCapability\",\"lastChunk\",\"separateAnnots\",\"_pumpOperatorList\",\"renderTasks\",\"internalRenderTask\",\"tryCleanup\",\"_abortOperatorList\",\"Stats\",\"InternalRenderTask\",\"useRequestAnimationFrame\",\"renderTask\",\"all\",\"initializeGraphics\",\"operatorListChanged\",\"getOperatorList\",\"opListReadCapability\",\"opListTask\",\"streamTextContent\",\"includeMarkedContent\",\"disableNormalization\",\"TEXT_CONTENT_CHUNK_SIZE\",\"highWaterMark\",\"getTextContent\",\"getStructTree\",\"_destroy\",\"waitOn\",\"force\",\"completed\",\"resetStats\",\"#tryCleanup\",\"delayed\",\"#abortDelayedCleanup\",\"_startRenderPage\",\"_renderPageChunk\",\"operatorListChunk\",\"annotationStorageSerializable\",\"streamReader\",\"delay\",\"curCacheKey\",\"curIntentState\",\"LoopbackPort\",\"deferred\",\"call\",\"terminate\",\"PDFWorkerUtil\",\"isWorkerDisabled\",\"fakeWorkerId\",\"isSameOrigin\",\"otherUrl\",\"base\",\"origin\",\"other\",\"createCDNWrapper\",\"wrapper\",\"createObjectURL\",\"Blob\",\"workerPorts\",\"_port\",\"_webWorker\",\"_messageHandler\",\"_initializeFromPort\",\"_initialize\",\"mainThreadWorkerMessageHandler\",\"terminateEarly\",\"onWorkerError\",\"_setupFakeWorker\",\"sendTest\",\"testObj\",\"_setupFakeWorkerGlobal\",\"WorkerMessageHandler\",\"workerHandler\",\"setup\",\"cachedPort\",\"#mainThreadWorkerMessageHandler\",\"pdfjsWorker\",\"loader\",\"methodPromises\",\"pageCache\",\"pagePromises\",\"pageRefCache\",\"passwordCapability\",\"factory\",\"fontLoader\",\"_params\",\"destroyCapability\",\"_networkStream\",\"_fullReader\",\"_lastProgress\",\"setupMessageHandler\",\"cacheSimpleMethod\",\"#cacheSimpleMethod\",\"cachedPromise\",\"isOpList\",\"page\",\"hasOwnProperty\",\"terminated\",\"sink\",\"readyReason\",\"headersCapability\",\"fullReader\",\"_numPages\",\"htmlForXfa\",\"exception\",\"updatePassword\",\"exportedData\",\"exportedError\",\"fontAdded\",\"finally\",\"imageRef\",\"pageProxy\",\"dataLen\",\"refStr\",\"results\",\"metadata\",\"cleanupSuccessful\",\"INITIAL_DATA\",\"ensureObj\",\"#ensureObj\",\"iterator\",\"RenderTask\",\"onContinue\",\"form\",\"canvasInUse\",\"WeakSet\",\"operatorListIdx\",\"running\",\"graphicsReadyCallback\",\"graphicsReady\",\"_useRequestAnimationFrame\",\"cancelled\",\"_cancelBound\",\"_continueBound\",\"_continue\",\"_scheduleNextBound\",\"_scheduleNext\",\"_nextBound\",\"_next\",\"_canvas\",\"StepperManager\",\"init\",\"getNextBreakPoint\",\"gfx\",\"updateOperatorList\",\"requestAnimationFrame\",\"version\",\"build\",\"makeColorComp\",\"scaleAndClamp\",\"ColorConverters\",\"CMYK_G\",\"G_CMYK\",\"G_RGB\",\"G_rgb\",\"G_HTML\",\"G\",\"RGB_G\",\"RGB_rgb\",\"RGB_HTML\",\"T_HTML\",\"T_rgb\",\"CMYK_RGB\",\"CMYK_rgb\",\"CMYK_HTML\",\"components\",\"RGB_CMYK\",\"XfaLayer\",\"setupStorage\",\"html\",\"storedData\",\"xfaOn\",\"xfaOff\",\"removeAttribute\",\"checked\",\"option\",\"selected\",\"selectedIndex\",\"setAttributes\",\"linkService\",\"isHTMLAnchorElement\",\"HTMLAnchorElement\",\"addLinkAttributes\",\"newWindow\",\"dataId\",\"root\",\"xfaHtml\",\"rootHtml\",\"isNotForRichText\",\"rootDiv\",\"createTextNode\",\"stack\",\"childHtml\",\"xmlns\",\"querySelectorAll\",\"hidden\",\"DEFAULT_TAB_INDEX\",\"GetElementsByNameSet\",\"getRectDims\",\"AnnotationElementFactory\",\"annotationType\",\"LinkAnnotationElement\",\"TextAnnotationElement\",\"fieldType\",\"TextWidgetAnnotationElement\",\"radioButton\",\"RadioButtonWidgetAnnotationElement\",\"checkBox\",\"CheckboxWidgetAnnotationElement\",\"PushButtonWidgetAnnotationElement\",\"ChoiceWidgetAnnotationElement\",\"SignatureWidgetAnnotationElement\",\"WidgetAnnotationElement\",\"PopupAnnotationElement\",\"FreeTextAnnotationElement\",\"LineAnnotationElement\",\"SquareAnnotationElement\",\"CircleAnnotationElement\",\"PolylineAnnotationElement\",\"CaretAnnotationElement\",\"InkAnnotationElement\",\"PolygonAnnotationElement\",\"HighlightAnnotationElement\",\"UnderlineAnnotationElement\",\"SquigglyAnnotationElement\",\"StrikeOutAnnotationElement\",\"StampAnnotationElement\",\"FileAttachmentAnnotationElement\",\"AnnotationElement\",\"updates\",\"hasBorder\",\"popupElement\",\"isRenderable\",\"ignoreBorder\",\"createQuadrilaterals\",\"downloadManager\",\"imageResourcesPath\",\"renderForms\",\"svgFactory\",\"enableScripting\",\"_fieldObjects\",\"fieldObjects\",\"_createContainer\",\"_createQuadrilaterals\",\"_hasPopupData\",\"titleObj\",\"contentsObj\",\"richText\",\"hasPopupData\",\"updateEdited\",\"setRectEdited\",\"popup\",\"resetEdited\",\"#setRectEdited\",\"currentRect\",\"setRotation\",\"popupRef\",\"alternativeText\",\"title\",\"noRotate\",\"borderStyle\",\"borderWidth\",\"horizontalRadius\",\"horizontalCornerRadius\",\"verticalRadius\",\"verticalCornerRadius\",\"radius\",\"borderRadius\",\"borderBottomStyle\",\"borderColor\",\"elementWidth\",\"elementHeight\",\"_commonActions\",\"setColor\",\"jsName\",\"styleName\",\"detail\",\"colorType\",\"colorArray\",\"display\",\"noView\",\"noPrint\",\"userName\",\"readonly\",\"required\",\"_setRequired\",\"textColor\",\"_dispatchEventFromSandbox\",\"actions\",\"jsEvent\",\"commonActions\",\"_setDefaultPropertiesFromJS\",\"eventProxy\",\"quadPoints\",\"rectBlX\",\"rectBlY\",\"rectTrX\",\"rectTrY\",\"trX\",\"trY\",\"blX\",\"blY\",\"svgBuffer\",\"clipPath\",\"rectWidth\",\"rectHeight\",\"backgroundImage\",\"_createPopup\",\"modificationDate\",\"parentRect\",\"elements\",\"_getElementsByName\",\"skipId\",\"fields\",\"fieldObj\",\"exportValues\",\"exportValue\",\"domElement\",\"getElementsByName\",\"maybeShow\",\"forceHide\",\"getElementsToTriggerPopup\",\"addHighlightArea\",\"triggers\",\"_isEditable\",\"_editOnDoubleClick\",\"annotationEditorType\",\"isTooltipOnly\",\"link\",\"isBound\",\"_bindNamedAction\",\"attachment\",\"bindAttachment\",\"attachmentDest\",\"bindSetOCGState\",\"_bindLink\",\"Action\",\"_bindJSAction\",\"resetForm\",\"_bindResetFormAction\",\"setInternalLink\",\"#setInternalLink\",\"destination\",\"getDestinationHash\",\"onclick\",\"goToDestination\",\"getAnchorUrl\",\"executeNamedAction\",\"#bindAttachment\",\"description\",\"openOrDownloadData\",\"#bindSetOCGState\",\"executeSetOCGState\",\"otherClickAction\",\"resetFormFields\",\"refs\",\"resetFormRefs\",\"include\",\"allFields\",\"fieldIds\",\"fieldName\",\"field\",\"allIds\",\"dispatchEvent\",\"Event\",\"showElementAndHideCanvas\",\"previousSibling\",\"_getKeyModifier\",\"_setEventListener\",\"elementData\",\"baseName\",\"eventName\",\"valueGetter\",\"modifier\",\"focused\",\"_setEventListeners\",\"getter\",\"Blur\",\"Focus\",\"_setBackgroundColor\",\"_setTextStyle\",\"TEXT_ALIGNMENT\",\"fontColor\",\"defaultAppearanceData\",\"computedFontSize\",\"roundToOneDecimal\",\"multiLine\",\"numberOfLines\",\"lineHeight\",\"textAlignment\",\"textAlign\",\"isRequired\",\"hasAppearance\",\"fieldValue\",\"setPropertyOnSiblings\",\"keyInStorage\",\"maxLen\",\"charLimit\",\"fieldFormattedValues\",\"formattedValue\",\"comb\",\"userValue\",\"lastCommittedValue\",\"commitKey\",\"doNotScroll\",\"overflowY\",\"overflowX\",\"readOnly\",\"maxLength\",\"defaultFieldValue\",\"blurListener\",\"scrollLeft\",\"selRange\",\"setSelectionRange\",\"willCommit\",\"selStart\",\"selectionStart\",\"selEnd\",\"selectionEnd\",\"_blurListener\",\"Keystroke\",\"inputType\",\"change\",\"fieldWidth\",\"combWidth\",\"letterSpacing\",\"verticalAlign\",\"checkbox\",\"curChecked\",\"buttonValue\",\"radio\",\"pdfButtonValue\",\"linkElement\",\"selectElement\",\"addAnEmptyEntry\",\"combo\",\"multiSelect\",\"multiple\",\"optionElement\",\"displayValue\",\"removeEmptyEntry\",\"noneOptionElement\",\"isExport\",\"selectedValues\",\"getItems\",\"multipleSelection\",\"index\",\"findIndex\",\"selectChild\",\"indices\",\"editable\",\"changeEx\",\"keyDown\",\"PopupElement\",\"elementIds\",\"boundKeyDown\",\"boundHide\",\"boundShow\",\"boundToggle\",\"dateObj\",\"pinned\",\"wasVisible\",\"trigger\",\"flatMap\",\"baseColor\",\"outlineColor\",\"BACKGROUND_ENLIGHT\",\"header\",\"toLocaleDateString\",\"toLocaleTimeString\",\"contents\",\"_formatContents\",\"#html\",\"#fontSize\",\"#fontColor\",\"makePopupContent\",\"#makePopupContent\",\"popupLines\",\"popupContent\",\"lineAttributes\",\"line\",\"lines\",\"#keyDown\",\"setPosition\",\"#setPosition\",\"useParentRect\",\"normalizedRect\",\"HORIZONTAL_SPACE_AFTER_ANNOTATION\",\"popupLeft\",\"popupTop\",\"#toggle\",\"#show\",\"#hide\",\"textPosition\",\"lineSpan\",\"lineCoordinates\",\"square\",\"circle\",\"polyline\",\"containerClassName\",\"svgElementName\",\"coordinate\",\"vertices\",\"polylines\",\"inkList\",\"inkLists\",\"download\",\"#download\",\"AnnotationLayer\",\"accessibilityManager\",\"editableAnnotations\",\"annotationEditorUIManager\",\"_annotationEditorUIManager\",\"appendElement\",\"#appendElement\",\"contentElement\",\"moveElementInDOM\",\"annotations\",\"popupToElements\",\"elementParams\",\"noHTML\",\"isPopupAnnotation\",\"rendered\",\"setAnnotationCanvasMap\",\"#setAnnotationCanvasMap\",\"replaceWith\",\"after\",\"getEditableAnnotations\",\"getEditableAnnotation\",\"EOL_PATTERN\",\"FreeTextEditor\",\"boundEditorDivBlur\",\"editorDivBlur\",\"boundEditorDivFocus\",\"editorDivFocus\",\"boundEditorDivInput\",\"editorDivInput\",\"boundEditorDivKeydown\",\"editorDivKeydown\",\"boundEditorDivPaste\",\"editorDivPaste\",\"editorDivId\",\"_freeTextDefaultContent\",\"_internalPadding\",\"_defaultColor\",\"_defaultFontSize\",\"_translateEmpty\",\"_editorType\",\"updateFontSize\",\"#updateFontSize\",\"setFontsize\",\"editorDiv\",\"setEditorDimensions\",\"savedFontsize\",\"#updateColor\",\"col\",\"savedColor\",\"overlayDiv\",\"contentEditable\",\"extractText\",\"#extractText\",\"childNodes\",\"getNodeContent\",\"#setEditorDimensions\",\"savedDisplay\",\"savedVisibility\",\"savedText\",\"newText\",\"trimEnd\",\"setText\",\"setContent\",\"dblclick\",\"baseX\",\"baseY\",\"posX\",\"posY\",\"#getNodeContent\",\"nodeValue\",\"deserializeContent\",\"deleteFromDocument\",\"insertNode\",\"collapseToStart\",\"startContainer\",\"startOffset\",\"bufferBefore\",\"bufferAfter\",\"newRange\",\"beforeLength\",\"reduce\",\"acc\",\"setStart\",\"setEnd\",\"removeAllRanges\",\"addRange\",\"#setContent\",\"replaceChildren\",\"serializeContent\",\"#serializeContent\",\"#deserializeContent\",\"padding\",\"structTreeParentId\",\"hasElementChanged\",\"#hasElementChanged\",\"Outliner\",\"verticalEdges\",\"intervals\",\"innerMargin\",\"NUMBER_OF_DIGITS\",\"EPSILON\",\"right\",\"shiftedMinX\",\"shiftedMinY\",\"lastEdge\",\"lastPoint\",\"edge\",\"getOutlines\",\"sort\",\"outlineVerticalEdges\",\"breakEdge\",\"#getOutlines\",\"edges\",\"allEdges\",\"edge1\",\"edge2\",\"outlines\",\"outline\",\"lastPointX\",\"lastPointY\",\"HighlightOutline\",\"binarySearch\",\"#binarySearch\",\"middle\",\"#insert\",\"#remove\",\"#breakEdge\",\"y4\",\"Outline\",\"toSVGPath\",\"_rotation\",\"free\",\"FreeHighlightOutline\",\"polygon\",\"prevX\",\"prevY\",\"FreeOutliner\",\"bottom\",\"last\",\"Float64Array\",\"min_dist\",\"scaleFactor\",\"thickness\",\"MIN_DIST\",\"MIN_DIFF\",\"MIN\",\"getLastCoords\",\"#getLastCoords\",\"lastTop\",\"lastBottom\",\"diffX\",\"diffY\",\"diffD\",\"nX\",\"nY\",\"thX\",\"thY\",\"lastTopX\",\"lastTopY\",\"lastBottomX\",\"lastBottomY\",\"N\",\"computeMinMax\",\"rescale\",\"rescaleAndSwap\",\"#rescale\",\"#rescaleAndSwap\",\"#computeMinMax\",\"ltrCallback\",\"getNewOutline\",\"outliner\",\"ColorPicker\",\"boundPointerDown\",\"buttonSwatch\",\"defaultColor\",\"dropdown\",\"dropdownWasFromKeyboard\",\"isMainColorPicker\",\"_hideDropdownFromKeyboard\",\"_colorSelectFromKeyboard\",\"_moveToNext\",\"_moveToPrevious\",\"_moveToBeginning\",\"_moveToEnd\",\"openDropdown\",\"swatch\",\"renderMainDropdown\",\"getDropdownRoot\",\"#getDropdownRoot\",\"role\",\"colorSelect\",\"#colorSelect\",\"isDropdownVisible\",\"nextSibling\",\"#openDropdown\",\"#isDropdownVisible\",\"HighlightEditor\",\"clipPathId\",\"focusOutlines\",\"highlightDiv\",\"highlightOutlines\",\"isFreeHighlight\",\"outlineId\",\"_defaultOpacity\",\"_defaultThickness\",\"_freeHighlightId\",\"_freeHighlight\",\"_freeHighlightClipId\",\"_moveCaret\",\"highlightId\",\"createFreeOutlines\",\"addToDrawLayer\",\"createOutlines\",\"numberOfColors\",\"#createOutlines\",\"outlinerForOutline\",\"#createFreeOutlines\",\"extraThickness\",\"drawLayer\",\"finalizeLine\",\"highlightOutline\",\"updateLine\",\"updateBox\",\"rotateBbox\",\"updateThickness\",\"changeColor\",\"#updateThickness\",\"savedThickness\",\"setThickness\",\"th\",\"changeThickness\",\"getRotation\",\"addUndoableEditor\",\"cleanDrawLayer\",\"mustBeSelected\",\"#changeThickness\",\"#cleanDrawLayer\",\"#addToDrawLayer\",\"highlight\",\"#rotateBbox\",\"pointerover\",\"addClass\",\"pointerleave\",\"removeClass\",\"#keydown\",\"setCaret\",\"#setCaret\",\"#getRotation\",\"serializeBoxes\",\"#serializeBoxes\",\"serializeOutlines\",\"#serializeOutlines\",\"startHighlighting\",\"pointerMove\",\"highlightMove\",\"pointerDownOptions\",\"endHighlight\",\"#highlightMove\",\"updatePath\",\"#endHighlight\",\"removeFreeHighlight\",\"InkEditor\",\"baseHeight\",\"baseWidth\",\"boundCanvasPointermove\",\"canvasPointermove\",\"boundCanvasPointerleave\",\"canvasPointerleave\",\"boundCanvasPointerup\",\"canvasPointerup\",\"boundCanvasPointerdown\",\"canvasPointerdown\",\"canvasContextMenuTimeoutId\",\"currentPath2D\",\"hasSomethingToDraw\",\"isCanvasInitialized\",\"observer\",\"realWidth\",\"realHeight\",\"requestFrameCallback\",\"bezierPath2D\",\"allRawPaths\",\"currentPath\",\"translationX\",\"translationY\",\"updateOpacity\",\"fitToContent\",\"redraw\",\"#updateOpacity\",\"setOpacity\",\"savedOpacity\",\"createObserver\",\"setCanvasDims\",\"disconnect\",\"setDimensions\",\"getInitialBBox\",\"#getInitialBBox\",\"setStroke\",\"#setStroke\",\"startDrawing\",\"#startDrawing\",\"drawPoints\",\"draw\",\"#draw\",\"path2D\",\"makeBezierCurve\",\"#endPath\",\"stopDrawing\",\"#stopDrawing\",\"bezier\",\"generateBezierPoints\",\"xy\",\"#drawPoints\",\"lastPoints\",\"xMin\",\"xMax\",\"yMin\",\"yMax\",\"#makeBezierCurve\",\"#generateBezierPoints\",\"bezierPoints\",\"control1\",\"control2\",\"#redraw\",\"updateTransform\",\"addInkEditorIfNeeded\",\"#endDrawing\",\"#createCanvas\",\"#createObserver\",\"ResizeObserver\",\"contentRect\",\"observe\",\"#setCanvasDims\",\"roundedWidth\",\"roundedHeight\",\"setScaleFactor\",\"#setScaleFactor\",\"getPadding\",\"scaleFactorW\",\"scaleFactorH\",\"#updateTransform\",\"buildPath2D\",\"#buildPath2D\",\"toPDFCoordinates\",\"#toPDFCoordinates\",\"fromPDFCoordinates\",\"#fromPDFCoordinates\",\"serializePaths\",\"#serializePaths\",\"p10\",\"p11\",\"p20\",\"p21\",\"p30\",\"p31\",\"p40\",\"p41\",\"getBbox\",\"#getBbox\",\"#getPadding\",\"#fitToContent\",\"firstTime\",\"prevTranslationX\",\"prevTranslationY\",\"unscaledPadding\",\"StampEditor\",\"bitmapId\",\"bitmapPromise\",\"bitmapUrl\",\"bitmapFile\",\"bitmapFileName\",\"resizeTimeoutId\",\"hasBeenAddedInUndoStack\",\"supportedTypes\",\"supportedTypesStr\",\"pasteEditor\",\"getAsFile\",\"getBitmapFetched\",\"#getBitmapFetched\",\"fromId\",\"getBitmapDone\",\"#getBitmapDone\",\"getBitmap\",\"#getBitmap\",\"accept\",\"files\",\"click\",\"MAX_RATIO\",\"factor\",\"drawBitmap\",\"#setDimensions\",\"scaleBitmap\",\"#scaleBitmap\",\"bitmapWidth\",\"bitmapHeight\",\"prevWidth\",\"prevHeight\",\"offscreen\",\"transferToImageBitmap\",\"#drawBitmap\",\"service\",\"channels\",\"serializeBitmap\",\"#serializeBitmap\",\"toUrl\",\"toDataURL\",\"accessibilityData\",\"alt\",\"stamps\",\"area\",\"prevData\",\"AnnotationEditorLayer\",\"allowClick\",\"annotationLayer\",\"boundPointerup\",\"boundPointerdown\",\"boundTextLayerPointerDown\",\"editorFocusTimeoutId\",\"hadPointerDown\",\"isCleaningUp\",\"isDisabling\",\"_initialized\",\"isInvisible\",\"disableTextSelection\",\"toggleAnnotationLayerPointerEvents\",\"enableTextSelection\",\"isCommitting\",\"annotationElementIds\",\"editables\",\"changedAnnotations\",\"resetAnnotations\",\"currentActive\",\"textLayerPointerDown\",\"#textLayerPointerDown\",\"attach\",\"detach\",\"removePointerInTextLayer\",\"currentEditorType\",\"#currentEditorType\",\"createNewEditor\",\"#createNewEditor\",\"getCenterPoint\",\"#getCenterPoint\",\"innerWidth\",\"innerHeight\",\"#cleanup\",\"oldRotation\",\"DrawLayer\",\"mapping\",\"toUpdate\",\"_svgFactory\",\"setBox\",\"#setBox\",\"createSVG\",\"#createSVG\",\"createClipPath\",\"#createClipPath\",\"pathId\",\"clipPathUse\",\"isPathUpdatable\",\"use\",\"maskId\",\"use1\",\"use2\",\"cloneNode\",\"changeOpacity\",\"pdfjsVersion\",\"pdfjsBuild\"],\"sourceRoot\":\"\"}\n\\ No newline at end of file\n+{\"version\":3,\"file\":\"pdf.js\",\"mappings\":\"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\u002FC,eAAe,mBAAO,CAAC,IAAwB;AAC\u002FC,kBAAkB,mBAAO,CAAC,IAA4B;AACtD,4BAA4B,mBAAO,CAAC,IAAuC;AAC3E,wBAAwB,mBAAO,CAAC,IAAmC;AACnE,oBAAoB,mBAAO,CAAC,IAAqC;AACjE,kBAAkB,mBAAO,CAAC,EAA2B;AACrD,wBAAwB,mBAAO,CAAC,GAAkC;AAClE,oBAAoB,mBAAO,CAAC,IAA6B;;AAEzD;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,4DAA4D,gBAAgB;AAC5E;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,IAAI;AACJ;;;;;;;;ACpEa;AACb,WAAW,mBAAO,CAAC,IAA4B;AAC\u002FC,eAAe,mBAAO,CAAC,EAAwB;AAC\u002FC,eAAe,mBAAO,CAAC,GAAwB;AAC\u002FC,gBAAgB,mBAAO,CAAC,IAAyB;AACjD,0BAA0B,mBAAO,CAAC,IAAoC;AACtE,sBAAsB,mBAAO,CAAC,IAAgC;;AAE9D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzBa;AACb,aAAa,mBAAO,CAAC,IAA+B;AACpD,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,eAAe,mBAAO,CAAC,IAAwB;AAC\u002FC,gBAAgB,mBAAO,CAAC,IAAyB;AACjD,+BAA+B,mBAAO,CAAC,IAAuC;;AAE9E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;;;;;;;ACrBa;AACb,YAAY,mBAAO,CAAC,IAAoB;AACxC,iBAAiB,mBAAO,CAAC,IAA0B;;AAEnD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;ACtBa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS,YAAY;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClBa;AACb;;AAEA;AACA;AACA;AACA;;;;;;;;ACNa;AACb,iBAAiB,mBAAO,CAAC,IAA0B;;AAEnD;AACA;;AAEA;;;;;;;;ACNa;AACb;AACA,0BAA0B,mBAAO,CAAC,IAA6C;AAC\u002FE,eAAe,mBAAO,CAAC,EAAwB;AAC\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\u002FC,WAAW,mBAAO,CAAC,IAA4B;AAC\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IAA0B;;AAEnD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,0BAA0B,SAAS,eAAe;AAClD,8BAA8B;AAC9B,KAAK;AACL,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;;;;;;;ACtBa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,cAAc;;;;;;;;ACflB;AACb,oBAAoB,mBAAO,CAAC,IAA8B;AAC1D,kBAAkB,mBAAO,CAAC,IAAoC;AAC9D,eAAe,mBAAO,CAAC,GAAwB;AAC\u002FC,8BAA8B,mBAAO,CAAC,IAAwC;;AAE9E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC,sBAAsB,kBAAkB;AACxC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,GAAG,IAAI,gCAAgC;AACvC;;;;;;;;AChDa;AACb,QAAQ,mBAAO,CAAC,IAAqB;AACrC,iCAAiC,mBAAO,CAAC,IAAqC;;AAE9E;AACA;AACA,IAAI,+BAA+B;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;ACfY;AACb,kBAAkB,mBAAO,CAAC,IAA0B;AACpD,2BAA2B,mBAAO,CAAC,IAAqC;AACxE,+BAA+B,mBAAO,CAAC,IAAyC;;AAEhF;AACA;AACA;AACA;;;;;;;;ACRa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;;;;;;;ACXa;AACb,kBAAkB,mBAAO,CAAC,IAA0B;AACpD,qBAAqB,mBAAO,CAAC,IAA6B;AAC1D,8BAA8B,mBAAO,CAAC,IAAsC;AAC5E,eAAe,mBAAO,CAAC,IAAwB;AAC\u002FC,oBAAoB,mBAAO,CAAC,IAA8B;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB;AACpB;AACA;AACA;AACA;;;;;;;;AC3Ca;AACb,iBAAiB,mBAAO,CAAC,IAA2B;;AAEpD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;;;;;;;AC3Da;AACb,QAAQ,mBAAO,CAAC,IAAqB;AACrC,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,iBAAiB,mBAAO,CAAC,IAA2B;AACpD,+BAA+B,mBAAO,CAAC,IAAyC;AAChF,qBAAqB,6BAAgD;AACrE,aAAa,mBAAO,CAAC,IAA+B;AACpD,iBAAiB,mBAAO,CAAC,GAA0B;AACnD,wBAAwB,mBAAO,CAAC,IAAkC;AAClE,8BAA8B,mBAAO,CAAC,IAAwC;AAC9E,4BAA4B,mBAAO,CAAC,IAAsC;AAC1E,sBAAsB,mBAAO,CAAC,IAAgC;AAC9D,kBAAkB,mBAAO,CAAC,IAA0B;AACpD,cAAc,mBAAO,CAAC,IAAsB;;AAE5C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,IAAI,wEAAwE,IAAI;AAChF;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AAC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\u002FC,wBAAwB,mBAAO,CAAC,IAAkC;AAClE,oBAAoB,mBAAO,CAAC,IAA6B;AACzD,+CAA+C,mBAAO,CAAC,IAA6D;AACpH,YAAY,mBAAO,CAAC,IAA6B;AACjD,YAAY,mBAAO,CAAC,IAAoB;;AAExC;;AAEA;AACA;AACA;AACA,iCAAiC,aAAa;AAC9C,CAAC;;AAED;;AAEA;AACA;AACA,IAAI,qHAAqH;AACzH;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,KAAK,IAAI,iBAAiB;AAC1B;AACA;AACA;AACA,CAAC;;;;;;;;ACnDY;AACb,QAAQ,mBAAO,CAAC,IAAqB;AACrC,kBAAkB,mBAAO,CAAC,IAA0B;AACpD,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,iBAAiB,mBAAO,CAAC,IAA2B;AACpD,kBAAkB,mBAAO,CAAC,IAAoC;AAC9D,WAAW,mBAAO,CAAC,IAA4B;AAC\u002FC,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,eAAe,mBAAO,CAAC,EAAwB;AAC\u002FC,cAAc,mBAAO,CAAC,IAAuB;AAC7C,aAAa,mBAAO,CAAC,IAA+B;AACpD,eAAe,mBAAO,CAAC,GAAwB;AAC\u002FC,wBAAwB,mBAAO,CAAC,IAAmC;AACnE,qBAAqB,mBAAO,CAAC,IAA8B;AAC3D,YAAY,mBAAO,CAAC,IAAoB;AACxC,sBAAsB,mBAAO,CAAC,IAAgC;AAC9D,oBAAoB,mBAAO,CAAC,IAA2C;;AAEvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,WAAW;AACxD;;AAEA;AACA;AACA;AACA,iEAAiE,sBAAsB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,SAAS;AAC3B;AACA;AACA,MAAM;AACN;AACA;AACA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,QAAQ,mBAAmB;AAC3B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,WAAW,mBAAmB;AAC9B;AACA,GAAG;AACH;AACA;AACA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,IAAI,uDAAuD;AAC3D;AACA;AACA;AACA,CAAC;;;;;;;;AC1PY;AACb,kBAAkB,mBAAO,CAAC,IAAoC;AAC9D,oBAAoB,mBAAO,CAAC,GAA6B;AACzD,iBAAiB,mBAAO,CAAC,IAA0B;;AAEnD;AACA;AACA;AACA;AACA;;AAEA;AACA,yCAAyC,iCAAiC;AAC1E;;;;;;;;ACba;AACb,yBAAyB,mBAAO,CAAC,IAAmC;AACpE,kBAAkB,mBAAO,CAAC,IAA4B;;AAEtD;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;;;;;;;ACXa;AACb,WAAW,mBAAO,CAAC,IAAoB;AACvC,UAAU,+BAAuC;AACjD,WAAW,mBAAO,CAAC,IAAuB;AAC1C,mBAAmB,mBAAO,CAAC,IAA6B;AACxD,oBAAoB,mBAAO,CAAC,GAA6B;AACzD,oBAAoB,mBAAO,CAAC,IAA6B;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;;;;;;AClBa;AACb,eAAe,mBAAO,CAAC,EAAwB;;AAE\u002FC;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;ACVa;AACb,kBAAkB,mBAAO,CAAC,IAAoC;;AAE9D;AACA;;AAEA,6BAA6B,uCAAuC;AACpE;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;;;;;;;ACfa;AACb,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,iBAAiB,mBAAO,CAAC,IAA0B;;AAEnD;;AAEA;;;;;;;;ACNa;AACb,WAAW,mBAAO,CAAC,IAA4B;AAC\u002FC,eAAe,mBAAO,CAAC,IAAwB;AAC\u002FC,wBAAwB,mBAAO,CAAC,IAAkC;AAClE,wBAAwB,mBAAO,CAAC,GAAkC;;AAElE;AACA;AACA;AACA;AACA;;;;;;;;ACVa;AACb,kBAAkB,mBAAO,CAAC,IAA0B;AACpD,YAAY,mBAAO,CAAC,IAAoB;;AAExC;AACA;AACA;AACA;AACA,6CAA6C,aAAa;AAC1D;AACA;AACA,GAAG;AACH,CAAC;;;;;;;;ACZY;AACb,kBAAkB,mBAAO,CAAC,IAA0B;AACpD,kBAAkB,mBAAO,CAAC,IAAoC;AAC9D,4BAA4B,mBAAO,CAAC,IAAuC;;AAE3E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,UAAU;AAC5C;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;;;;;;;;ACpBa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACVa;AACb,kBAAkB,mBAAO,CAAC,GAAmC;;AAE7D;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;;;;;;;ACVY;AACb,WAAW,mBAAO,CAAC,IAAoB;AACvC,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,WAAW,mBAAO,CAAC,IAAuB;AAC1C,mBAAmB,mBAAO,CAAC,IAA6B;AACxD,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,oBAAoB,mBAAO,CAAC,GAA6B;;AAEzD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA,KAAK;AACL;;AAEA;AACA;;;;;;;;AC9Ba;AACb,8BAA8B;AAC9B;AACA;;AAEA;AACA,4EAA4E,MAAM;;AAElF;AACA;AACA,SAAS;AACT;AACA;AACA,EAAE;;;;;;;;ACbW;AACb,6BAA6B,mBAAO,CAAC,IAAuC;;AAE5E;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;ACTa;AACb;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;;;;;;;ACPa;AACb,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,kBAAkB,mBAAO,CAAC,IAAoC;AAC9D,0BAA0B,mBAAO,CAAC,IAAqC;AACvE,cAAc,mBAAO,CAAC,IAAuB;AAC7C,aAAa,mBAAO,CAAC,IAA+B;AACpD,gBAAgB,mBAAO,CAAC,IAAyB;AACjD,wBAAwB,mBAAO,CAAC,GAAkC;AAClE,kBAAkB,mBAAO,CAAC,IAAwC;;AAElE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAQ,gBAAgB;AACxB;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,sBAAsB,wBAAwB;AAC9C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAW;AACX;;;;;;;;AC3Ja;AACb,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,cAAc,mBAAO,CAAC,IAA0B;;AAEhD;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;;ACba;AACb,kBAAkB,mBAAO,CAAC,IAAoC;AAC9D,eAAe,mBAAO,CAAC,IAAwB;;AAE\u002FC,mCAAmC;;AAEnC;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACXa;AACb,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,kBAAkB,mBAAO,CAAC,IAA4B;;AAEtD;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;ACVa;AACb,QAAQ,mBAAO,CAAC,IAAqB;AACrC,WAAW,mBAAO,CAAC,IAA4B;AAC\u002FC,eAAe,mBAAO,CAAC,IAAwB;AAC\u002FC,wBAAwB,mBAAO,CAAC,IAAkC;AAClE,cAAc,mBAAO,CAAC,IAAwB;AAC9C,wBAAwB,mBAAO,CAAC,IAAkC;AAClE,oBAAoB,mBAAO,CAAC,IAA6B;AACzD,0BAA0B,mBAAO,CAAC,IAAoC;AACtE,+CAA+C,mBAAO,CAAC,IAA6D;AACpH,cAAc,mBAAO,CAAC,IAAsB;;AAE5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,IAAI,gGAAgG;AACpG;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA,CAAC;;;;;;;;AC\u002FCY;AACb,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,cAAc,mBAAO,CAAC,IAAkC;;AAExD;AACA;AACA;AACA;AACA,MAAM,gBAAgB;AACtB;AACA;AACA;AACA,MAAM,gBAAgB;AACtB;AACA;;;;;;;;ACda;AACb,QAAQ,mBAAO,CAAC,IAAqB;AACrC,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,kCAAkC,mBAAO,CAAC,IAA8C;AACxF,kBAAkB,mBAAO,CAAC,IAAgC;;AAE1D;;AAEA;AACA;AACA,oBAAoB,kCAAkC;AACtD;AACA;AACA;AACA;AACA,CAAC;;;;;;;;ACfY;AACb,iBAAiB,mBAAO,CAAC,IAA0B;;AAEnD;AACA;;AAEA;AACA;AACA,sCAAsC,kDAAkD;AACxF,IAAI;AACJ;AACA,IAAI;AACJ;;;;;;;;ACZa;AACb,WAAW,mBAAO,CAAC,IAA4B;AAC\u002FC,aAAa,mBAAO,CAAC,IAA4B;AACjD,kCAAkC,mBAAO,CAAC,IAA6C;AACvF,qBAAqB,mBAAO,CAAC,IAA+B;AAC5D,sBAAsB,mBAAO,CAAC,IAAgC;AAC9D,0BAA0B,mBAAO,CAAC,IAA6B;AAC\u002FD,gBAAgB,mBAAO,CAAC,IAAyB;AACjD,wBAAwB,6CAAwD;AAChF,6BAA6B,mBAAO,CAAC,IAAwC;AAC7E,oBAAoB,mBAAO,CAAC,IAA6B;;AAEzD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;;;;;;AC7Ea;AACb,kBAAkB,mBAAO,CAAC,GAAmC;;AAE7D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;ACZa;AACb,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,gBAAgB,mBAAO,CAAC,IAAqC;;AAE7D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC3Ba;AACb,WAAW,mBAAO,CAAC,IAA4B;AAC\u002FC,eAAe,mBAAO,CAAC,IAAwB;AAC\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\u002FC,GAAG,EAAE,mBAAmB,CAAC;IAC\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AE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAC7E,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC7E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MA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\u002FX,GAAG,CAAC\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\u002FlC,IAAI,EAAEmjB,KAAK,EAAE;IAC\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\u002FB,CAAC,EAAEC,CAAC,KAAK,CACvBk\u002FB,cAAc,CAAC,CAAC,CAAC,GAAGn\u002FB,CAAC,GAAGm\u002FB,cAAc,CAAC,CAAC,CAAC,GAAGl\u002FB,CAAC,EAC7Ck\u002FB,cAAc,CAAC,CAAC,CAAC,GAAGn\u002FB,CAAC,GAAGm\u002FB,cAAc,CAAC,CAAC,CAAC,GAAGl\u002FB,CAAC,CAC9C;IACD,MAAMo\u002FB,iBAAiB,GAAG,IAAI,CAAC,CAACrC,iBAAiB,CAAC,GAAG,GAAG,IAAI,CAACv0B,QAAQ,CAAC;IACtE,MAAM62B,SAAS,GAAGA,CAACt\u002FB,CAAC,EAAEC,CAAC,KAAK,CAC1Bo\u002FB,iBAAiB,CAAC,CAAC,CAAC,GAAGr\u002FB,CAAC,GAAGq\u002FB,iBAAiB,CAAC,CAAC,CAAC,GAAGp\u002FB,CAAC,EACnDo\u002FB,iBAAiB,CAAC,CAAC,CAAC,GAAGr\u002FB,CAAC,GAAGq\u002FB,iBAAiB,CAAC,CAAC,CAAC,GAAGp\u002FB,CAAC,CACpD;IACD,IAAIs\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\u002FC,MAAM\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\u002FB\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\u002FB,CAAC,EAAEC,CAAC,KAAK,CACvBk\u002FB,cAAc,CAAC,CAAC,CAAC,GAAGn\u002FB,CAAC,GAAGm\u002FB,cAAc,CAAC,CAAC,CAAC,GAAGl\u002FB,CAAC,EAC7Ck\u002FB,cAAc,CAAC,CAAC,CAAC,GAAGn\u002FB,CAAC,GAAGm\u002FB,cAAc,CAAC,CAAC,CAAC,GAAGl\u002FB,CAAC,CAC9C;IAGD,MAAM,CAACiwB,WAAW,EAAEC,YAAY,CAAC,GAAG,IAAI,CAACkJ,gBAAgB;IACzD,MAAM3K,MAAM,GAAG,IAAI,CAAC1uB,CAAC;IACrB,MAAM2uB,MAAM,GAAG,IAAI,CAAC1uB,CAAC;IACrB,MAAMg+B,UAAU,GAAG,IAAI,CAAC50B,KAAK;IAC7B,MAAM60B,WAAW,GAAG,IAAI,CAAC50B,MAAM;IAE\u002FB,MAAM01B,QAAQ,GAAGtI,gBAAgB,CAACuI,QAAQ,GAAG\u002FO,WAAW;IACxD,MAAMgP,SAAS,GAAGxI,gBAAgB,CAACuI,QAAQ,GAAG9O,YAAY;IAC1DiS,MAAM,GAAG\u002FoC,IAAI,CAACwF,GAAG,CACfxF,IAAI,CAACC,GAAG,CAAC8oC,MAAM,EAAE,CAAC,GAAGnE,UAAU,EAAE,CAAC,GAAGC,WAAW,CAAC,EACjDc,QAAQ,GAAGf,UAAU,EACrBiB,SAAS,GAAGhB,WACd,CAAC;IACD,MAAMS,QAAQ,GAAGjI,gBAAgB,CAACmI,MAAM,CAACZ,UAAU,GAAGmE,MAAM,CAAC;IAC7D,MAAMxD,SAAS,GAAGlI,gBAAgB,CAACmI,MAAM,CAACX,WAAW,GAAGkE,MAAM,CAAC;IAC\u002FD,IAAIzD,QAAQ,KAAKV,UAAU,IAAIW,SAAS,KAAKV,WAAW,EAAE;MACxD;IACF;IAEA,IAAI,CAAC,CAAC5G,WAAW,KAAK,CAAC5I,MAAM,EAAEC,MAAM,EAAEsP,UAAU,EAAEC,WAAW,CAAC;IAC\u002FD,MAAMmE,iBAAiB,GAAGjD,MAAM,CAACnB,UAAU,GAAG,CAAC,EAAEC,WAAW,GAAG,CAAC,CAAC;IACjE,MAAMr1B,OAAO,GAAG6tB,gBAAgB,CAACmI,MAAM,CAACnQ,MAAM,GAAG2T,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACtE,MAAMv5B,OAAO,GAAG4tB,gBAAgB,CAACmI,MAAM,CAAClQ,MAAM,GAAG0T,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACtE,MAAMC,oBAAoB,GAAGlD,MAAM,CAACT,QAAQ,GAAG,CAAC,EAAEC,SAAS,GAAG,CAAC,CAAC;IAEhE,IAAI,CAAC5+B,CAAC,GAAG6I,OAAO,GAAGy5B,oBAAoB,CAAC,CAAC,CAAC;IAC1C,IAAI,CAACriC,CAAC,GAAG6I,OAAO,GAAGw5B,oBAAoB,CAAC,CAAC,CAAC;IAC1C,IAAI,CAACj5B,KAAK,GAAGs1B,QAAQ;IACrB,IAAI,CAACr1B,MAAM,GAAGs1B,SAAS;IAEvB,IAAI,CAACzB,OAAO,CAACjN,WAAW,GAAGyO,QAAQ,EAAExO,YAAY,GAAGyO,SAAS,CAAC;IAC9D,IAAI,CAAC\u002FD,iBAAiB,CAAC,CAAC;IAExB,IAAI,CAAC2F,WAAW,CAAC,CAAC;EACpB;EAEA,CAACsB,qBAAqBS,CAAA,EAAG;IACvB,IAAI,CAAC,CAAC9wB,OAAO,EAAEsS,MAAM,CAAC,IAAI,CAAC;IAC3B,IAAI,CAACnO,MAAM,CAACmoB,mBAAmB,CAAC,IAAI,CAAC;IACrC,IAAI,CAAC,CAACQ,oBAAoB,CAAC,CAAC;EAC9B;EAMAiE,WAAWA,CAACvnB,KAAK,EAAE;IACjB,MAAM;MAAE7f;IAAM,CAAC,GAAGX,gBAAW,CAACK,QAAQ;IACtC,IAAImgB,KAAK,CAAChH,MAAM,KAAK,CAAC,IAAKgH,KAAK,CAACE,OAAO,IAAI\u002Ff,KAAM,EAAE;MAElD6f,KAAK,CAAC9O,cAAc,CAAC,CAAC;MACtB;IACF;IACA,IAAI,CAAC,CAACkrB,cAAc,GAAG,IAAI;IAE3B,IAAI,IAAI,CAACqD,YAAY,EAAE;MACrB,IAAI,CAAC,CAACjM,gBAAgB,CAACxT,KAAK,CAAC;MAC7B;IACF;IAEA,IAAI,CAAC,CAACwnB,oBAAoB,CAACxnB,KAAK,CAAC;EACnC;EAEA,CAACwnB,oBAAoBC,CAACznB,KAAK,EAAE;IAC3B,MAAM;MAAE7f;IAAM,CAAC,GAAGX,gBAAW,CAACK,QAAQ;IACtC,IACGmgB,KAAK,CAACE,OAAO,IAAI,CAAC\u002Ff,KAAK,IACxB6f,KAAK,CAACI,QAAQ,IACbJ,KAAK,CAACG,OAAO,IAAIhgB,KAAM,EACxB;MACA,IAAI,CAACwa,MAAM,CAAC4X,cAAc,CAAC,IAAI,CAAC;IAClC,CAAC,MAAM;MACL,IAAI,CAAC5X,MAAM,CAACoV,WAAW,CAAC,IAAI,CAAC;IAC\u002FB;EACF;EAEA,CAACyD,gBAAgBkU,CAAC1nB,KAAK,EAAE;IACvB,MAAM;MAAEyS;IAAW,CAAC,GAAG,IAAI;IAC3B,IAAI,CAACpb,UAAU,CAACmc,gBAAgB,CAAC,CAAC;IAClC,IAAImU,kBAAkB,GAAG,KAAK;IAE9B,MAAM38B,EAAE,GAAG,IAAIC,eAAe,CAAC,CAAC;IAChC,MAAMC,MAAM,GAAG,IAAI,CAACmM,UAAU,CAAC4P,cAAc,CAACjc,EAAE,CAAC;IACjD,MAAMwuB,IAAI,GAAG;MAAE\u002FgB,OAAO,EAAE,IAAI;MAAE2gB,OAAO,EAAE,KAAK;MAAEluB;IAAO,CAAC;IACtD,MAAM08B,UAAU,GAAG32B,CAAC,IAAI;MACtBjG,EAAE,CAACK,KAAK,CAAC,CAAC;MAEV,IAAI,CAAC,CAACuwB,aAAa,GAAG,IAAI;MAC1B,IAAI,CAAC,CAACQ,cAAc,GAAG,KAAK;MAC5B,IAAI,CAAC,IAAI,CAAC\u002FkB,UAAU,CAAC0c,cAAc,CAAC,CAAC,EAAE;QACrC,IAAI,CAAC,CAACyT,oBAAoB,CAACv2B,CAAC,CAAC;MAC\u002FB;MACA,IAAI02B,kBAAkB,EAAE;QACtB,IAAI,CAACE,eAAe,CAAC,CAAC;MACxB;IACF,CAAC;IAED,IAAIpV,UAAU,EAAE;MACd,IAAI,CAAC,CAACgK,SAAS,GAAGzc,KAAK,CAAC8nB,OAAO;MAC\u002FB,IAAI,CAAC,CAACpL,SAAS,GAAG1c,KAAK,CAAC+nB,OAAO;MAC\u002FB,IAAI,CAAC,CAACnM,aAAa,GAAG5b,KAAK,CAACgoB,SAAS;MACrC,IAAI,CAAC,CAACnM,eAAe,GAAG7b,KAAK,CAAC0Z,WAAW;MACzCnmB,MAAM,CAAChI,gBAAgB,CACrB,aAAa,EACb0F,CAAC,IAAI;QACH,IAAI,CAAC02B,kBAAkB,EAAE;UACvBA,kBAAkB,GAAG,IAAI;UACzB,IAAI,CAACM,gBAAgB,CAAC,CAAC;QACzB;QACA,MAAM;UAAEH,OAAO,EAAE\u002FiC,CAAC;UAAEgjC,OAAO,EAAE\u002FiC,CAAC;UAAEgjC;QAAU,CAAC,GAAG\u002F2B,CAAC;QAC\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\u002FC;EAWA,aAAa0zB,WAAWA,CAAC\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\u002FsB,GAAG,CAACnE,GAAG,CAAC;EAC\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\u002FB,gBAAgB,CAAC,IACpC,CAACt\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\u002FBgK,EAAE,YAAY3J,iBAAiB,IAC\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\u002FC,gBAAgB,SAASL,iBAAiB,CAAC;EAC\u002FCr8C,WAAWA,CAAC;IAAEkyC,aAAa,GAAG1uC,UAAU,CAACuL,QAAQ;IAAEutC,SAAS,GAAG;EAAM,CAAC,EAAE;IACtE,KAAK,CAAC;MAAEA;IAAU,CAAC,CAAC;IACpB,IAAI,CAAClK,SAAS,GAAGF,aAAa;EAChC;EAKAqK,aAAaA,CAAClrC,KAAK,EAAEC,MAAM,EAAE;IAC3B,MAAMkN,MAAM,GAAG,IAAI,CAAC4zB,SAAS,CAACl8B,aAAa,CAAC,QAAQ,CAAC;IACrDsI,MAAM,CAACnN,KAAK,GAAGA,KAAK;IACpBmN,MAAM,CAAClN,MAAM,GAAGA,MAAM;IACtB,OAAOkN,MAAM;EACf;AACF;;;;;;;;;;AC1E+D;AAChB;AAE\u002FC,MAAMm+B,qBAAqB,CAAC;EAC1B38C,WAAWA,CAAC;IAAEjC,OAAO,GAAG,IAAI;IAAE6+C,YAAY,GAAG;EAAK,CAAC,EAAE;IAOnD,IAAI,CAAC7+C,OAAO,GAAGA,OAAO;IACtB,IAAI,CAAC6+C,YAAY,GAAGA,YAAY;EAClC;EAEA,MAAM1tC,KAAKA,CAAC;IAAEpP;EAAK,CAAC,EAAE;IACpB,IAAI,CAAC,IAAI,CAAC\u002FB,OAAO,EAAE;MACjB,MAAM,IAAIP,KAAK,CACb,yEACF,CAAC;IACH;IACA,IAAI,CAACsC,IAAI,EAAE;MACT,MAAM,IAAItC,KAAK,CAAC,8BAA8B,CAAC;IACjD;IACA,MAAMI,GAAG,GAAG,IAAI,CAACG,OAAO,GAAG+B,IAAI,IAAI,IAAI,CAAC88C,YAAY,GAAG,QAAQ,GAAG,EAAE,CAAC;IAErE,OAAO,IAAI,CAACC,MAAM,CAACj\u002FC,GAAG,CAAC,CACpBmhB,IAAI,CAAC+9B,QAAQ,KAAK;MAAEA,QAAQ;MAAEF,YAAY,EAAE,IAAI,CAACA;IAAa,CAAC,CAAC,CAAC,CACjEG,KAAK,CAACxuC,MAAM,IAAI;MACf,MAAM,IAAI\u002FQ,KAAK,CACb,kBAAkB,IAAI,CAACo\u002FC,YAAY,GAAG,SAAS,GAAG,EAAE,YAAYh\u002FC,GAAG,EACrE,CAAC;IACH,CAAC,CAAC;EACN;EAMA,MAAMi\u002FC,MAAMA,CAACj\u002FC,GAAG,EAAE;IAChBL,WAAW,CAAC,kCAAkC,CAAC;EACjD;AACF;AAEA,MAAMy\u002FC,oBAAoB,SAASL,qBAAqB,CAAC;EAIvD,MAAME,MAAMA,CAACj\u002FC,GAAG,EAAE;IAChB,MAAMshB,IAAI,GAAG,MAAMrQ,SAAS,CAC1BjR,GAAG,EACU,IAAI,CAACg\u002FC,YAAY,GAAG,aAAa,GAAG,MACnD,CAAC;IACD,OAAO19B,IAAI,YAAYkwB,WAAW,GAC9B,IAAIvtC,UAAU,CAACqd,IAAI,CAAC,GACpBvd,aAAa,CAACud,IAAI,CAAC;EACzB;AACF;;;;;;;;ACzDkE;AACS;AAE3E,MAAM+9B,iBAAiB,CAAC;EAUtBC,SAASA,CAACC,IAAI,EAAE;IACd,OAAO,MAAM;EACf;EAEA7yB,YAAYA,CAAC8yB,OAAO,EAAEC,OAAO,EAAE;IAC7B,OAAO,MAAM;EACf;EAEAC,cAAcA,CAACxnC,GAAG,EAAE;IAClB,OAAO,MAAM;EACf;EAEAynC,mBAAmBA,CAACznC,GAAG,EAAE;IACvB,OAAO,MAAM;EACf;EAEA0nC,qBAAqBA,CAACC,UAAU,EAAEL,OAAO,EAAEC,OAAO,EAAEK,UAAU,EAAEC,UAAU,EAAE;IAC1E,OAAO,MAAM;EACf;EAEA3gC,OAAOA,CAAC4gC,OAAO,GAAG,KAAK,EAAE,CAAC;AAC5B;AAWA,MAAMC,gBAAgB,SAASZ,iBAAiB,CAAC;EAC\u002FC,CAACl\u002FC,OAAO;EAER,CAAC+\u002FC,MAAM;EAEP,CAACC,KAAK;EAEN,CAACC,KAAK;EAEN,CAACjvC,QAAQ;EAET,CAACkvC,SAAS;EAEV,CAAC\u002F\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\u002FB,KAAK,iBAAiB,IAAI,CAAC,CAAC9\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\u002FB,KAAK,cAAc,IAAI,CAAC,CAAC9\u002FB,EAAE,EAAE,EAAE;IACrD,MAAMtgB,GAAG,GAAG,IAAI,CAAC,CAACshD,SAAS,CAAChhC,EAAE,CAAC;IAC\u002FB,IAAI,CAAC,CAACG,KAAK,CAAC3H,GAAG,CAACZ,GAAG,EAAElY,GAAG,CAAC;IACzB,IAAI,CAAC,CAACygB,KAAK,CAAC3H,GAAG,CAAC0I,GAAG,EAAExhB,GAAG,CAAC;IAEzB,MAAM2hD,MAAM,GAAG,IAAI,CAAC,CAACC,YAAY,CAACthC,EAAE,CAAC;IACrC,IAAI,CAAC,CAAC6hC,6BAA6B,CAACD,MAAM,EAAEP,MAAM,CAAC;IAEnD,OAAO3hD,GAAG;EACZ;EAEA2\u002FC,mBAAmBA,CAACznC,GAAG,EAAE;IAGvB,IAAI1W,KAAK,GAAG,IAAI,CAAC,CAACif,KAAK,CAACxS,GAAG,CAACiK,GAAG,IAAI,YAAY,CAAC;IAChD,IAAI1W,KAAK,EAAE;MACT,OAAOA,KAAK;IACd;IAEA,IAAI0gD,MAAM,EAAE1gC,GAAG;IACf,IAAItJ,GAAG,EAAE;MACP,CAACgqC,MAAM,CAAC,GAAG,IAAI,CAAC,CAACrB,YAAY,CAAC,CAAC3oC,GAAG,CAAC,CAAC;MACpCsJ,GAAG,GAAG,cAAc0gC,MAAM,EAAE;IAC9B,CAAC,MAAM;MACL1gC,GAAG,GAAG,YAAY;IACpB;IAEAhgB,KAAK,GAAG,IAAI,CAAC,CAACif,KAAK,CAACxS,GAAG,CAACuT,GAAG,CAAC;IAC5B,IAAIhgB,KAAK,EAAE;MACT,IAAI,CAAC,CAACif,KAAK,CAAC3H,GAAG,CAACZ,GAAG,EAAE1W,KAAK,CAAC;MAC3B,OAAOA,KAAK;IACd;IAEA,MAAM8e,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC8\u002FB,KAAK,mBAAmB,IAAI,CAAC,CAAC9\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\u002FC,CAAC,GAAGt\u002FC,IAAI,CAACylC,KAAK,CAACmZ,MAAM,GAAG9+C,CAAC,GAAGo\u002FC,IAAI,CAAC;QACvC,MAAMnhD,KAAK,GAAGohD,QAAQ,GAAGr\u002FC,CAAC,GAAGs\u002FC,OAAO;QACpC,KAAK,IAAIG,CAAC,GAAGF,IAAI,EAAEE,CAAC,IAAID,CAAC,EAAEC,CAAC,EAAE,EAAE;UAC9B1zC,GAAG,CAAC0zC,CAAC,CAAC,GAAGxhD,KAAK;QAChB;QACAshD,IAAI,GAAGC,CAAC,GAAG,CAAC;MACd;MACA,KAAK,IAAIx\u002FC,CAAC,GAAGu\u002FC,IAAI,EAAEv\u002FC,CAAC,GAAG,GAAG,EAAEA,CAAC,EAAE,EAAE;QAC\u002FB+L,GAAG,CAAC\u002FL,CAAC,CAAC,GAAG+L,GAAG,CAACwzC,IAAI,GAAG,CAAC,CAAC;MACxB;MACA,OAAOxzC,GAAG,CAACxL,IAAI,CAAC,GAAG,CAAC;IACtB,CAAC;IAED,MAAMwc,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC8\u002FB,KAAK,QAAQP,UAAU,SAAS;IACtD,MAAM8B,MAAM,GAAIriD,IAAI,CAACqiD,MAAM,GAAG,IAAI,CAAC,CAACC,YAAY,CAACthC,EAAE,CAAE;IAErD,IAAI,CAAC,CAAC0hC,iBAAiB,CAACL,MAAM,CAAC;IAC\u002FB,IAAI,CAAC,CAACE,wBAAwB,CAC5BI,QAAQ,CAACM,QAAQ,CAAC,CAAC,CAAC,EAAEC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EACrCP,QAAQ,CAACM,QAAQ,CAAC,CAAC,CAAC,EAAEC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EACrCP,QAAQ,CAACM,QAAQ,CAAC,CAAC,CAAC,EAAEC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EACrCb,MACF,CAAC;IAEDriD,IAAI,CAACU,GAAG,GAAG,IAAI,CAAC,CAACshD,SAAS,CAAChhC,EAAE,CAAC;IAC9B,OAAOhhB,IAAI,CAACU,GAAG;EACjB;EAEAof,OAAOA,CAAC4gC,OAAO,GAAG,KAAK,EAAE;IACvB,IAAIA,OAAO,IAAI,IAAI,CAAC,CAACK,SAAS,EAAEx9B,IAAI,EAAE;MACpC;IACF;IACA,IAAI,CAAC,CAACs9B,KAAK,EAAExiB,UAAU,CAACA,UAAU,CAAC5kB,MAAM,CAAC,CAAC;IAC3C,IAAI,CAAC,CAAConC,KAAK,GAAG,IAAI;IAElB,IAAI,CAAC,CAACD,MAAM,EAAE9zB,KAAK,CAAC,CAAC;IACrB,IAAI,CAAC,CAAC8zB,MAAM,GAAG,IAAI;IAEnB,IAAI,CAAC,CAACG,SAAS,EAAEj0B,KAAK,CAAC,CAAC;IACxB,IAAI,CAAC,CAACi0B,SAAS,GAAG,IAAI;IAEtB,IAAI,CAAC,CAAC\u002F\u002FB,EAAE,GAAG,CAAC;EACd;EAEA,CAAC8hC,uBAAuBa,CAACtB,MAAM,EAAE;IAC\u002FB,MAAMuB,aAAa,GAAG,IAAI,CAAC,CAAC\u002FxC,QAAQ,CAACyvC,eAAe,CAClD\u002FvC,MAAM,EACN,eACF,CAAC;IACDqyC,aAAa,CAAClpC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC5CkpC,aAAa,CAAClpC,YAAY,CACxB,QAAQ,EACR,iDACF,CAAC;IACD2nC,MAAM,CAACjpC,MAAM,CAACwqC,aAAa,CAAC;EAC9B;EAEA,CAAClB,iBAAiBmB,CAACxB,MAAM,EAAE;IACzB,MAAMuB,aAAa,GAAG,IAAI,CAAC,CAAC\u002FxC,QAAQ,CAACyvC,eAAe,CAClD\u002FvC,MAAM,EACN,eACF,CAAC;IACDqyC,aAAa,CAAClpC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC5CkpC,aAAa,CAAClpC,YAAY,CACxB,QAAQ,EACR,sFACF,CAAC;IACD2nC,MAAM,CAACjpC,MAAM,CAACwqC,aAAa,CAAC;EAC9B;EAEA,CAACtB,YAAYwB,CAAC9iC,EAAE,EAAE;IAChB,MAAMqhC,MAAM,GAAG,IAAI,CAAC,CAACxwC,QAAQ,CAACyvC,eAAe,CAAC\u002FvC,MAAM,EAAE,QAAQ,CAAC;IAC\u002FD8wC,MAAM,CAAC3nC,YAAY,CAAC,6BAA6B,EAAE,MAAM,CAAC;IAC1D2nC,MAAM,CAAC3nC,YAAY,CAAC,IAAI,EAAEsG,EAAE,CAAC;IAC7B,IAAI,CAAC,CAACmgC,IAAI,CAAC\u002FnC,MAAM,CAACipC,MAAM,CAAC;IAEzB,OAAOA,MAAM;EACf;EAEA,CAAC0B,YAAYC,CAACC,mBAAmB,EAAEC,IAAI,EAAExC,KAAK,EAAE;IAC9C,MAAMyC,MAAM,GAAG,IAAI,CAAC,CAACtyC,QAAQ,CAACyvC,eAAe,CAAC\u002FvC,MAAM,EAAE2yC,IAAI,CAAC;IAC3DC,MAAM,CAACzpC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC;IACvCypC,MAAM,CAACzpC,YAAY,CAAC,aAAa,EAAEgnC,KAAK,CAAC;IACzCuC,mBAAmB,CAAC7qC,MAAM,CAAC+qC,MAAM,CAAC;EACpC;EAEA,CAAC5B,wBAAwB6B,CAACC,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAElC,MAAM,EAAE;IACxD,MAAM4B,mBAAmB,GAAG,IAAI,CAAC,CAACpyC,QAAQ,CAACyvC,eAAe,CACxD\u002FvC,MAAM,EACN,qBACF,CAAC;IACD8wC,MAAM,CAACjpC,MAAM,CAAC6qC,mBAAmB,CAAC;IAClC,IAAI,CAAC,CAACF,YAAY,CAACE,mBAAmB,EAAE,SAAS,EAAEI,MAAM,CAAC;IAC1D,IAAI,CAAC,CAACN,YAAY,CAACE,mBAAmB,EAAE,SAAS,EAAEK,MAAM,CAAC;IAC1D,IAAI,CAAC,CAACP,YAAY,CAACE,mBAAmB,EAAE,SAAS,EAAEM,MAAM,CAAC;EAC5D;EAEA,CAAC1B,6BAA6B2B,CAACC,MAAM,EAAEpC,MAAM,EAAE;IAC7C,MAAM4B,mBAAmB,GAAG,IAAI,CAAC,CAACpyC,QAAQ,CAACyvC,eAAe,CACxD\u002FvC,MAAM,EACN,qBACF,CAAC;IACD8wC,MAAM,CAACjpC,MAAM,CAAC6qC,mBAAmB,CAAC;IAClC,IAAI,CAAC,CAACF,YAAY,CAACE,mBAAmB,EAAE,SAAS,EAAEQ,MAAM,CAAC;EAC5D;EAEA,CAAChsC,MAAMisC,CAAChsC,KAAK,EAAE;IACb,IAAI,CAAC,CAACyoC,IAAI,CAAC3oC,KAAK,CAACE,KAAK,GAAGA,KAAK;IAC9B,OAAOD,MAAM,CAACc,gBAAgB,CAAC,IAAI,CAAC,CAAC4nC,IAAI,CAAC,CAAC9b,gBAAgB,CAAC,OAAO,CAAC,CAAC;EACvE;AACF;;;;;;;;;;AC3e+C;AACC;AAEhD,MAAMsf,2BAA2B,CAAC;EAChC7hD,WAAWA,CAAC;IAAEjC,OAAO,GAAG;EAAK,CAAC,EAAE;IAO9B,IAAI,CAACA,OAAO,GAAGA,OAAO;EACxB;EAEA,MAAMmR,KAAKA,CAAC;IAAEwD;EAAS,CAAC,EAAE;IACxB,IAAI,CAAC,IAAI,CAAC3U,OAAO,EAAE;MACjB,MAAM,IAAIP,KAAK,CACb,kEACF,CAAC;IACH;IACA,IAAI,CAACkV,QAAQ,EAAE;MACb,MAAM,IAAIlV,KAAK,CAAC,kCAAkC,CAAC;IACrD;IACA,MAAMI,GAAG,GAAG,GAAG,IAAI,CAACG,OAAO,GAAG2U,QAAQ,EAAE;IAExC,OAAO,IAAI,CAACmqC,MAAM,CAACj\u002FC,GAAG,CAAC,CAACm\u002FC,KAAK,CAACxuC,MAAM,IAAI;MACtC,MAAM,IAAI\u002FQ,KAAK,CAAC,gCAAgCI,GAAG,EAAE,CAAC;IACxD,CAAC,CAAC;EACJ;EAMA,MAAMi\u002FC,MAAMA,CAACj\u002FC,GAAG,EAAE;IAChBL,WAAW,CAAC,kCAAkC,CAAC;EACjD;AACF;AAEA,MAAMukD,0BAA0B,SAASD,2BAA2B,CAAC;EAInE,MAAMhF,MAAMA,CAACj\u002FC,GAAG,EAAE;IAChB,MAAMshB,IAAI,GAAG,MAAMrQ,SAAS,CAACjR,GAAG,EAAe,aAAa,CAAC;IAC7D,OAAO,IAAIiE,UAAU,CAACqd,IAAI,CAAC;EAC7B;AACF;;;;;;;;;;AC\u002FC+C;AACC;AAEhD,MAAM6iC,eAAe,CAAC;EACpB\u002FhD,WAAWA,CAAC;IAAEjC,OAAO,GAAG;EAAK,CAAC,EAAE;IAO9B,IAAI,CAACA,OAAO,GAAGA,OAAO;EACxB;EAEA,MAAMmR,KAAKA,CAAC;IAAEwD;EAAS,CAAC,EAAE;IACxB,IAAI,CAAC,IAAI,CAAC3U,OAAO,EAAE;MACjB,MAAM,IAAIP,KAAK,CAAC,sDAAsD,CAAC;IACzE;IACA,IAAI,CAACkV,QAAQ,EAAE;MACb,MAAM,IAAIlV,KAAK,CAAC,kCAAkC,CAAC;IACrD;IACA,MAAMI,GAAG,GAAG,GAAG,IAAI,CAACG,OAAO,GAAG2U,QAAQ,EAAE;IAExC,OAAO,IAAI,CAACmqC,MAAM,CAACj\u002FC,GAAG,CAAC,CAACm\u002FC,KAAK,CAACxuC,MAAM,IAAI;MACtC,MAAM,IAAI\u002FQ,KAAK,CAAC,gCAAgCI,GAAG,EAAE,CAAC;IACxD,CAAC,CAAC;EACJ;EAMA,MAAMi\u002FC,MAAMA,CAACj\u002FC,GAAG,EAAE;IAChBL,WAAW,CAAC,kCAAkC,CAAC;EACjD;AACF;AAEA,MAAMykD,cAAc,SAASD,eAAe,CAAC;EAI3C,MAAMlF,MAAMA,CAACj\u002FC,GAAG,EAAE;IAChB,MAAMshB,IAAI,GAAG,MAAMrQ,SAAS,CAACjR,GAAG,EAAe,aAAa,CAAC;IAC7D,OAAO,IAAIiE,UAAU,CAACqd,IAAI,CAAC;EAC7B;AACF;;;;;;;;;;AC5CmD;AACK;AACS;AACT;AACqB;AACzB;AAQpD,IAAInyB,QAAQ,EAAE;EAIV,IAAIyxB,MAAM;EACV,IAAI;IACF,MAAMyjC,OAAO,GAAGj1D,OAAO,CACpBk1D,gBAAgB,CAAC,QAAQ,CAAC,CAC1BC,aAAa,CAACC,MAAM,CAACC,IAAI,CAACzkD,GAAG,CAAC;IAEjC,IAAI;MACF4gB,MAAM,GAAGyjC,OAAO,CAAC,iBAAiB,CAAC;IACrC,CAAC,CAAC,OAAOh4C,EAAE,EAAE;MACX3M,IAAI,CAAC,2CAA2C2M,EAAE,IAAI,CAAC;IACzD;EACF,CAAC,CAAC,OAAOA,EAAE,EAAE;IACX3M,IAAI,CAAC,4CAA4C2M,EAAE,IAAI,CAAC;EAC1D;EAEA,IAAI,CAACzG,UAAU,CAAC8+C,SAAS,EAAE;IACzB,IAAI9jC,MAAM,EAAE8jC,SAAS,EAAE;MACrB9+C,UAAU,CAAC8+C,SAAS,GAAG9jC,MAAM,CAAC8jC,SAAS;IACzC,CAAC,MAAM;MACLhlD,IAAI,CAAC,uDAAuD,CAAC;IAC\u002FD;EACF;EACA,IAAI,CAACkG,UAAU,CAAC++C,SAAS,EAAE;IACzB,IAAI\u002FjC,MAAM,EAAE+jC,SAAS,EAAE;MACrB\u002F+C,UAAU,CAAC++C,SAAS,GAAG\u002FjC,MAAM,CAAC+jC,SAAS;IACzC,CAAC,MAAM;MACLjlD,IAAI,CAAC,uDAAuD,CAAC;IAC\u002FD;EACF;EACA,IAAI,CAACkG,UAAU,CAACqzC,MAAM,EAAE;IACtB,IAAIr4B,MAAM,EAAEq4B,MAAM,EAAE;MAClBrzC,UAAU,CAACqzC,MAAM,GAAGr4B,MAAM,CAACq4B,MAAM;IACnC,CAAC,MAAM;MACLv5C,IAAI,CAAC,oDAAoD,CAAC;IAC5D;EACF;EACA,IAAI,CAACkG,UAAU,CAACR,SAAS,EAAEw\u002FC,QAAQ,EAAE;IACnCh\u002FC,UAAU,CAACR,SAAS,GAAG;MACrBw\u002FC,QAAQ,EAAE,OAAO;MACjB1\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\u002FC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAEs\u002FC,MAAM,CAACzmC,MAAM,CAACnN,KAAK,EAAE4zC,MAAM,CAACzmC,MAAM,CAAClN,MAAM,CAAC;MAI5D2zC,MAAM,CAACrhB,SAAS,CAAC,CAAC+gB,SAAS,CAAC,CAAC,CAAC,EAAE,CAACA,SAAS,CAAC,CAAC,CAAC,CAAC;MAC9CH,OAAO,GAAGvgD,IAAI,CAACzM,SAAS,CAACgtD,OAAO,EAAE,CAChC,CAAC,EACD,CAAC,EACD,CAAC,EACD,CAAC,EACDG,SAAS,CAAC,CAAC,CAAC,EACZA,SAAS,CAAC,CAAC,CAAC,CACb,CAAC;MAEFM,MAAM,CAACztD,SAAS,CAAC,GAAG+sD,KAAK,CAACa,aAAa,CAAC;MACxC,IAAI,IAAI,CAACp+C,MAAM,EAAE;QACfi+C,MAAM,CAACztD,SAAS,CAAC,GAAG,IAAI,CAACwP,MAAM,CAAC;MAClC;MACAm8C,gBAAgB,CAAC8B,MAAM,EAAE,IAAI,CAACtB,KAAK,CAAC;MAEpCsB,MAAM,CAACI,SAAS,GAAG,IAAI,CAACpB,eAAe,CAACgB,MAAM,CAAC;MAC\u002FCA,MAAM,CAAC\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\u002FC,GAAG,GAAG,CAAC;IAC7B,KAAK,IAAIt\u002FC,CAAC,GAAGs\u002FC,GAAG,EAAEt\u002FC,CAAC,IAAIu\u002FC,GAAG,EAAEv\u002FC,CAAC,EAAE,EAAE;MAC\u002FB24C,CAAC,GAAG,CAACmG,EAAE,GAAG9+C,CAAC,KAAK8+C,EAAE,GAAGI,EAAE,CAAC;MACxB,IAAIvG,CAAC,GAAG,CAAC,EAAE;QACTA,CAAC,GAAG,CAAC;MACP,CAAC,MAAM,IAAIA,CAAC,GAAG,CAAC,EAAE;QAChBA,CAAC,GAAG,CAAC;MACP;MACA\u002F\u002FC,KAAK,CAACggD,CAAC,EAAE,CAAC,GAAImG,GAAG,GAAG,CAACA,GAAG,GAAGI,GAAG,IAAIxG,CAAC,GAAI,CAAC;MACxC\u002F\u002FC,KAAK,CAACggD,CAAC,EAAE,CAAC,GAAIoG,GAAG,GAAG,CAACA,GAAG,GAAGI,GAAG,IAAIzG,CAAC,GAAI,CAAC;MACxC\u002F\u002FC,KAAK,CAACggD,CAAC,EAAE,CAAC,GAAIqG,GAAG,GAAG,CAACA,GAAG,GAAGI,GAAG,IAAI1G,CAAC,GAAI,CAAC;MACxC\u002F\u002FC,KAAK,CAACggD,CAAC,EAAE,CAAC,GAAG,GAAG;IAClB;EACF;AACF;AAEA,SAAS4G,UAAUA,CAACtoC,IAAI,EAAEuoC,MAAM,EAAElb,OAAO,EAAE;EACzC,MAAMmb,EAAE,GAAGD,MAAM,CAAC3B,MAAM;EACxB,MAAM6B,EAAE,GAAGF,MAAM,CAACzxC,MAAM;EACxB,IAAI7U,CAAC,EAAE+I,EAAE;EACT,QAAQu9C,MAAM,CAACr6D,IAAI;IACjB,KAAK,SAAS;MACZ,MAAMw6D,cAAc,GAAGH,MAAM,CAACG,cAAc;MAC5C,MAAMC,IAAI,GAAGxmD,IAAI,CAAC6iC,KAAK,CAACwjB,EAAE,CAACrpD,MAAM,GAAGupD,cAAc,CAAC,GAAG,CAAC;MACvD,MAAME,IAAI,GAAGF,cAAc,GAAG,CAAC;MAC\u002FB,KAAKzmD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0mD,IAAI,EAAE1mD,CAAC,EAAE,EAAE;QACzB,IAAI4mD,CAAC,GAAG5mD,CAAC,GAAGymD,cAAc;QAC1B,KAAK,IAAIhH,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGkH,IAAI,EAAElH,CAAC,EAAE,EAAEmH,CAAC,EAAE,EAAE;UAClCtC,YAAY,CACVvmC,IAAI,EACJqtB,OAAO,EACPmb,EAAE,CAACK,CAAC,CAAC,EACLL,EAAE,CAACK,CAAC,GAAG,CAAC,CAAC,EACTL,EAAE,CAACK,CAAC,GAAGH,cAAc,CAAC,EACtBD,EAAE,CAACI,CAAC,CAAC,EACLJ,EAAE,CAACI,CAAC,GAAG,CAAC,CAAC,EACTJ,EAAE,CAACI,CAAC,GAAGH,cAAc,CACvB,CAAC;UACDnC,YAAY,CACVvmC,IAAI,EACJqtB,OAAO,EACPmb,EAAE,CAACK,CAAC,GAAGH,cAAc,GAAG,CAAC,CAAC,EAC1BF,EAAE,CAACK,CAAC,GAAG,CAAC,CAAC,EACTL,EAAE,CAACK,CAAC,GAAGH,cAAc,CAAC,EACtBD,EAAE,CAACI,CAAC,GAAGH,cAAc,GAAG,CAAC,CAAC,EAC1BD,EAAE,CAACI,CAAC,GAAG,CAAC,CAAC,EACTJ,EAAE,CAACI,CAAC,GAAGH,cAAc,CACvB,CAAC;QACH;MACF;MACA;IACF,KAAK,WAAW;MACd,KAAKzmD,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAGw9C,EAAE,CAACrpD,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,IAAI,CAAC,EAAE;QAC1CskD,YAAY,CACVvmC,IAAI,EACJqtB,OAAO,EACPmb,EAAE,CAACvmD,CAAC,CAAC,EACLumD,EAAE,CAACvmD,CAAC,GAAG,CAAC,CAAC,EACTumD,EAAE,CAACvmD,CAAC,GAAG,CAAC,CAAC,EACTwmD,EAAE,CAACxmD,CAAC,CAAC,EACLwmD,EAAE,CAACxmD,CAAC,GAAG,CAAC,CAAC,EACTwmD,EAAE,CAACxmD,CAAC,GAAG,CAAC,CACV,CAAC;MACH;MACA;IACF;MACE,MAAM,IAAI3D,KAAK,CAAC,gBAAgB,CAAC;EACrC;AACF;AAEA,MAAMwqD,kBAAkB,SAAS1E,kBAAkB,CAAC;EAClDtjD,WAAWA,CAAC0jD,EAAE,EAAE;IACd,KAAK,CAAC,CAAC;IACP,IAAI,CAACuE,OAAO,GAAGvE,EAAE,CAAC,CAAC,CAAC;IACpB,IAAI,CAAC9\u002FB,OAAO,GAAG8\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\u002F4C,KAAK;MACrBg5C,YAAY,GAAG\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\u002FI,CAAC,EAAE,EAAE;QAC5B,KAAK,IAAIy\u002FC,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAIgL,EAAE,EAAEhL,CAAC,EAAE,EAAE;UAC5B+K,OAAO,CAAC3sC,SAAS,CACfL,KAAK,EACL6sC,KAAK,GAAGrqD,CAAC,EACTsqD,KAAK,GAAG7K,CAAC,EACT4K,KAAK,EACLC,KAAK,EACL,CAAC,EACD,CAAC,EACDD,KAAK,EACLC,KACF,CAAC;QACH;MACF;MACA,OAAO;QACLjtC,MAAM,EAAEktC,UAAU,CAACltC,MAAM;QACzBynC,MAAM,EAAEqF,KAAK,CAAC96C,KAAK;QACnB01C,MAAM,EAAEqF,KAAK,CAAC\u002F6C,KAAK;QACnBE,OAAO,EAAEvI,EAAE;QACXwI,OAAO,EAAEvI;MACX,CAAC;IACH;IAEA,OAAO;MACLoW,MAAM,EAAEsmC,SAAS,CAACtmC,MAAM;MACxBynC,MAAM,EAAE2E,IAAI,CAACp6C,KAAK;MAClB01C,MAAM,EAAE4E,IAAI,CAACt6C,KAAK;MAClBE,OAAO,EAAEvI,EAAE;MACXwI,OAAO,EAAEvI;IACX,CAAC;EACH;EAEAyiD,eAAeA,CAACtK,IAAI,EAAEsL,cAAc,EAAEr7C,KAAK,EAAE;IAK3C,MAAMkR,OAAO,GAAGrgB,IAAI,CAACwF,GAAG,CAAC6iD,aAAa,CAACjB,gBAAgB,EAAEoD,cAAc,CAAC;IACxE,IAAIprC,IAAI,GAAGpf,IAAI,CAAC0X,IAAI,CAACwnC,IAAI,GAAG\u002FvC,KAAK,CAAC;IAClC,IAAIiQ,IAAI,IAAIiB,OAAO,EAAE;MACnBjB,IAAI,GAAGiB,OAAO;IAChB,CAAC,MAAM;MACLlR,KAAK,GAAGiQ,IAAI,GAAG8\u002FB,IAAI;IACrB;IACA,OAAO;MAAE\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\u002FB13C,GAAG,CAAC+sB,SAAS,GAAG\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\u002FB\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\u002FzC,IAAI;EAC9B,IAAI\u002Fd,CAAC,EAAEy\u002FC,CAAC,EAAEsS,eAAe,EAAEC,gBAAgB;EAI3C,IAAIN,OAAO,CAACzG,IAAI,KAAKl7D,cAAS,CAACC,cAAc,EAAE;IAE7C,MAAM47D,SAAS,GAAGluC,GAAG,CAACywB,UAAU;IAChC,MAAM8jB,MAAM,GAAG,IAAI\u002FwD,WAAW,CAACkK,IAAI,CAACjK,MAAM,EAAE,CAAC,EAAEiK,IAAI,CAAC+iC,UAAU,IAAI,CAAC,CAAC;IACpE,MAAM+jB,gBAAgB,GAAGD,MAAM,CAAC\u002F0D,MAAM;IACtC,MAAMi1D,WAAW,GAAIjiD,KAAK,GAAG,CAAC,IAAK,CAAC;IACpC,MAAMkiD,KAAK,GAAG,UAAU;IACxB,MAAM7G,KAAK,GAAGjqD,gBAAW,CAACP,cAAc,GAAG,UAAU,GAAG,UAAU;IAElE,KAAKf,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6xD,WAAW,EAAE7xD,CAAC,EAAE,EAAE;MAChC+xD,eAAe,GAAG\u002FxD,CAAC,GAAG4xD,UAAU,GAAGlF,iBAAiB,GAAGiF,kBAAkB;MACzE9F,OAAO,GAAG,CAAC;MACX,KAAKpM,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGsS,eAAe,EAAEtS,CAAC,EAAE,EAAE;QACpC,MAAM4S,OAAO,GAAGzG,SAAS,GAAGR,MAAM;QAClC,IAAI5L,CAAC,GAAG,CAAC;QACT,MAAM8S,IAAI,GAAGD,OAAO,GAAGF,WAAW,GAAGjiD,KAAK,GAAGmiD,OAAO,GAAG,CAAC,GAAG,CAAC;QAC5D,MAAME,YAAY,GAAGD,IAAI,GAAG,CAAC,CAAC;QAC9B,IAAIE,IAAI,GAAG,CAAC;QACZ,IAAIC,OAAO,GAAG,CAAC;QACf,OAAOjT,CAAC,GAAG+S,YAAY,EAAE\u002FS,CAAC,IAAI,CAAC,EAAE;UAC\u002FBiT,OAAO,GAAG\u002F0C,GAAG,CAAC0tC,MAAM,EAAE,CAAC;UACvB6G,MAAM,CAACpG,OAAO,EAAE,CAAC,GAAG4G,OAAO,GAAG,GAAG,GAAGL,KAAK,GAAG7G,KAAK;UACjD0G,MAAM,CAACpG,OAAO,EAAE,CAAC,GAAG4G,OAAO,GAAG,EAAE,GAAGL,KAAK,GAAG7G,KAAK;UAChD0G,MAAM,CAACpG,OAAO,EAAE,CAAC,GAAG4G,OAAO,GAAG,EAAE,GAAGL,KAAK,GAAG7G,KAAK;UAChD0G,MAAM,CAACpG,OAAO,EAAE,CAAC,GAAG4G,OAAO,GAAG,EAAE,GAAGL,KAAK,GAAG7G,KAAK;UAChD0G,MAAM,CAACpG,OAAO,EAAE,CAAC,GAAG4G,OAAO,GAAG,CAAC,GAAGL,KAAK,GAAG7G,KAAK;UAC\u002FC0G,MAAM,CAACpG,OAAO,EAAE,CAAC,GAAG4G,OAAO,GAAG,CAAC,GAAGL,KAAK,GAAG7G,KAAK;UAC\u002FC0G,MAAM,CAACpG,OAAO,EAAE,CAAC,GAAG4G,OAAO,GAAG,CAAC,GAAGL,KAAK,GAAG7G,KAAK;UAC\u002FC0G,MAAM,CAACpG,OAAO,EAAE,CAAC,GAAG4G,OAAO,GAAG,CAAC,GAAGL,KAAK,GAAG7G,KAAK;QACjD;QACA,OAAO\u002FL,CAAC,GAAG8S,IAAI,EAAE9S,CAAC,EAAE,EAAE;UACpB,IAAIgT,IAAI,KAAK,CAAC,EAAE;YACdC,OAAO,GAAG\u002F0C,GAAG,CAAC0tC,MAAM,EAAE,CAAC;YACvBoH,IAAI,GAAG,GAAG;UACZ;UAEAP,MAAM,CAACpG,OAAO,EAAE,CAAC,GAAG4G,OAAO,GAAGD,IAAI,GAAGJ,KAAK,GAAG7G,KAAK;UAClDiH,IAAI,KAAK,CAAC;QACZ;MACF;MAEA,OAAO3G,OAAO,GAAGqG,gBAAgB,EAAE;QACjCD,MAAM,CAACpG,OAAO,EAAE,CAAC,GAAG,CAAC;MACvB;MAEAn2C,GAAG,CAACmyC,YAAY,CAACiK,YAAY,EAAE,CAAC,EAAE9xD,CAAC,GAAG0sD,iBAAiB,CAAC;IAC1D;EACF,CAAC,MAAM,IAAIgF,OAAO,CAACzG,IAAI,KAAKl7D,cAAS,CAACG,UAAU,EAAE;IAEhDuvD,CAAC,GAAG,CAAC;IACLuS,gBAAgB,GAAG9hD,KAAK,GAAGw8C,iBAAiB,GAAG,CAAC;IAChD,KAAK1sD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG4xD,UAAU,EAAE5xD,CAAC,EAAE,EAAE;MAC\u002FBoL,IAAI,CAACmK,GAAG,CAACmI,GAAG,CAACrd,QAAQ,CAAC+qD,MAAM,EAAEA,MAAM,GAAG4G,gBAAgB,CAAC,CAAC;MACzD5G,MAAM,IAAI4G,gBAAgB;MAE1Bt8C,GAAG,CAACmyC,YAAY,CAACiK,YAAY,EAAE,CAAC,EAAErS,CAAC,CAAC;MACpCA,CAAC,IAAIiN,iBAAiB;IACxB;IACA,IAAI1sD,CAAC,GAAG6xD,WAAW,EAAE;MACnBG,gBAAgB,GAAG9hD,KAAK,GAAGyhD,kBAAkB,GAAG,CAAC;MACjDvmD,IAAI,CAACmK,GAAG,CAACmI,GAAG,CAACrd,QAAQ,CAAC+qD,MAAM,EAAEA,MAAM,GAAG4G,gBAAgB,CAAC,CAAC;MAEzDt8C,GAAG,CAACmyC,YAAY,CAACiK,YAAY,EAAE,CAAC,EAAErS,CAAC,CAAC;IACtC;EACF,CAAC,MAAM,IAAIiS,OAAO,CAACzG,IAAI,KAAKl7D,cAAS,CAACE,SAAS,EAAE;IAE\u002FC8hE,eAAe,GAAGrF,iBAAiB;IACnCsF,gBAAgB,GAAG9hD,KAAK,GAAG6hD,eAAe;IAC1C,KAAK\u002FxD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6xD,WAAW,EAAE7xD,CAAC,EAAE,EAAE;MAChC,IAAIA,CAAC,IAAI4xD,UAAU,EAAE;QACnBG,eAAe,GAAGJ,kBAAkB;QACpCK,gBAAgB,GAAG9hD,KAAK,GAAG6hD,eAAe;MAC5C;MAEAlG,OAAO,GAAG,CAAC;MACX,KAAKpM,CAAC,GAAGuS,gBAAgB,EAAEvS,CAAC,EAAE,GAAI;QAChCr0C,IAAI,CAACygD,OAAO,EAAE,CAAC,GAAGnuC,GAAG,CAAC0tC,MAAM,EAAE,CAAC;QAC\u002FBhgD,IAAI,CAACygD,OAAO,EAAE,CAAC,GAAGnuC,GAAG,CAAC0tC,MAAM,EAAE,CAAC;QAC\u002FBhgD,IAAI,CAACygD,OAAO,EAAE,CAAC,GAAGnuC,GAAG,CAAC0tC,MAAM,EAAE,CAAC;QAC\u002FBhgD,IAAI,CAACygD,OAAO,EAAE,CAAC,GAAG,GAAG;MACvB;MAEAn2C,GAAG,CAACmyC,YAAY,CAACiK,YAAY,EAAE,CAAC,EAAE9xD,CAAC,GAAG0sD,iBAAiB,CAAC;IAC1D;EACF,CAAC,MAAM;IACL,MAAM,IAAIrwD,KAAK,CAAC,mBAAmBq1D,OAAO,CAACzG,IAAI,EAAE,CAAC;EACpD;AACF;AAEA,SAASyH,kBAAkBA,CAACh9C,GAAG,EAAEg8C,OAAO,EAAE;EACxC,IAAIA,OAAO,CAACvzC,MAAM,EAAE;IAElBzI,GAAG,CAACmI,SAAS,CAAC6zC,OAAO,CAACvzC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IACnC;EACF;EAGA,MAAMhO,MAAM,GAAGuhD,OAAO,CAACvhD,MAAM;IAC3BD,KAAK,GAAGwhD,OAAO,CAACxhD,KAAK;EACvB,MAAMyhD,kBAAkB,GAAGxhD,MAAM,GAAGu8C,iBAAiB;EACrD,MAAMkF,UAAU,GAAG,CAACzhD,MAAM,GAAGwhD,kBAAkB,IAAIjF,iBAAiB;EACpE,MAAMmF,WAAW,GAAGF,kBAAkB,KAAK,CAAC,GAAGC,UAAU,GAAGA,UAAU,GAAG,CAAC;EAE1E,MAAME,YAAY,GAAGp8C,GAAG,CAACkyC,eAAe,CAAC13C,KAAK,EAAEw8C,iBAAiB,CAAC;EAClE,IAAItB,MAAM,GAAG,CAAC;EACd,MAAM1tC,GAAG,GAAGg0C,OAAO,CAAC3zC,IAAI;EACxB,MAAM3S,IAAI,GAAG0mD,YAAY,CAAC\u002FzC,IAAI;EAE9B,KAAK,IAAI\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\u002FD,SAAS;IACT4f,QAAQ;IACR2\u002FC,YAAY,GAAG,KAAK;IACpBvsC,UAAU,GAAG;EACf,CAAC,EAAE;IAMD,MAAMnZ,KAAK,GAAG,IAAI,CAACwF,GAAG,CAAC2H,MAAM,CAACnN,KAAK;IACnC,MAAMC,MAAM,GAAG,IAAI,CAACuF,GAAG,CAAC2H,MAAM,CAAClN,MAAM;IAErC,MAAM0lD,cAAc,GAAG,IAAI,CAACngD,GAAG,CAACwuC,SAAS;IACzC,IAAI,CAACxuC,GAAG,CAACwuC,SAAS,GAAG76B,UAAU,IAAI,SAAS;IAC5C,IAAI,CAAC3T,GAAG,CAACogD,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE5lD,KAAK,EAAEC,MAAM,CAAC;IACtC,IAAI,CAACuF,GAAG,CAACwuC,SAAS,GAAG2R,cAAc;IAEnC,IAAID,YAAY,EAAE;MAChB,MAAMG,iBAAiB,GAAG,IAAI,CAACnS,cAAc,CAACC,SAAS,CACrD,aAAa,EACb3zC,KAAK,EACLC,MACF,CAAC;MACD,IAAI,CAAC6lD,YAAY,GAAG,IAAI,CAACtgD,GAAG;MAC5B,IAAI,CAACqgD,iBAAiB,GAAGA,iBAAiB,CAAC14C,MAAM;MACjD,IAAI,CAAC3H,GAAG,GAAGqgD,iBAAiB,CAAC3qB,OAAO;MACpC,IAAI,CAAC11B,GAAG,CAACvf,IAAI,CAAC,CAAC;MAGf,IAAI,CAACuf,GAAG,CAACrf,SAAS,CAAC,GAAGof,mBAAmB,CAAC,IAAI,CAACugD,YAAY,CAAC,CAAC;IAC\u002FD;IAEA,IAAI,CAACtgD,GAAG,CAACvf,IAAI,CAAC,CAAC;IACf+8D,iBAAiB,CAAC,IAAI,CAACx9C,GAAG,CAAC;IAC3B,IAAIrf,SAAS,EAAE;MACb,IAAI,CAACqf,GAAG,CAACrf,SAAS,CAAC,GAAGA,SAAS,CAAC;MAChC,IAAI,CAAC++D,YAAY,GAAG\u002F+D,SAAS,CAAC,CAAC,CAAC;MAChC,IAAI,CAACg\u002FD,YAAY,GAAGh\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\u002FD,iBAAiB,GAAG,IAAI;IAC\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\u002FS,IAAI,EAAEgT,IAAI,EAAE\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\u002FC,YAAY,CAAC;IAE\u002FC,IAAI,CAAC9+D,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;EACzC;EAEAqjE,YAAYA,CAAA,EAAG;IACb,IAAI,CAAC,IAAI,CAACtC,WAAW,EAAE;MACrB,MAAM,IAAI56D,KAAK,CAAC,6CAA6C,CAAC;IAChE;IAGA,IAAI,CAACqZ,GAAG,CAACs3C,gBAAgB,CAAC,CAAC;IAC3B2F,YAAY,CAAC,IAAI,CAACj9C,GAAG,EAAE,IAAI,CAACs\u002FC,YAAY,CAAC;IACzC,IAAI,CAACt\u002FC,GAAG,GAAG,IAAI,CAACs\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\u002FC,YAAY,CAAC;IAC3C;IACA,IAAI,CAACt\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\u002F\u002FB,GAAG,CAACE,YAAY,CAAC,CAAC,CAACE,UAAU,CAAC,CAAC,CAACslD,YAAY,CAACnX,aAAa,CAC5D,CAAC;UACDxO,IAAI,GAAGylB,OAAO;QAChB;QACA,IAAI,CAACG,gBAAgB,CAAC5lB,IAAI,EAAoB,KAAK,CAAC;QACpD\u002F\u002FB,GAAG,CAACtf,OAAO,CAAC,CAAC;MACf,CAAC,MAAM;QACL,IAAI,CAACilE,gBAAgB,CAAC5lB,IAAI,EAAoB,IAAI,CAAC;MACrD;IACF;IACA,IAAIwlB,WAAW,EAAE;MACf,IAAI,CAACA,WAAW,CACdxlB,IAAI,EACJ,IAAI,CAACgO,OAAO,CAACC,yBAAyB,CACpC5B,QAAQ,CAACxyD,MAAM,EACfmmB,mBAAmB,CAAC,IAAI,CAACC,GAAG,CAC9B,CACF,CAAC;IACH;IAEAA,GAAG,CAAC09C,WAAW,GAAG,IAAI,CAAC3P,OAAO,CAACoN,SAAS;EAC1C;EAEA\u002F5D,WAAWA,CAAC2+C,IAAI,EAAE;IAChB,IAAI,CAAC5+C,MAAM,CAAC4+C,IAAI,CAAC;EACnB;EAEA1+C,IAAIA,CAAC0+C,IAAI,EAAEwlB,WAAW,GAAG,IAAI,EAAE;IAC7B,MAAMvlD,GAAG,GAAG,IAAI,CAACA,GAAG;IACpB,MAAMo1C,SAAS,GAAG,IAAI,CAACrH,OAAO,CAACqH,SAAS;IACxC,MAAMmN,aAAa,GAAG,IAAI,CAACxU,OAAO,CAACkN,WAAW;IAC9C,IAAI2K,WAAW,GAAG,KAAK;IAEvB,IAAIrD,aAAa,EAAE;MACjB,MAAMhU,aAAa,GAAG6G,SAAS,CAAC1I,2BAA2B,CAAC,CAAC,GACzD1sC,GAAG,CAACE,YAAY,CAAC,CAAC,GAClB,IAAI;MACRF,GAAG,CAACvf,IAAI,CAAC,CAAC;MACVuf,GAAG,CAACwuC,SAAS,GAAG4G,SAAS,CAACzI,UAAU,CAClC3sC,GAAG,EACH,IAAI,EACJG,0BAA0B,CAACH,GAAG,CAAC,EAC\u002FBosC,QAAQ,CAACzyD,IACX,CAAC;MACD,IAAI40D,aAAa,EAAE;QACjB,MAAMiX,OAAO,GAAG,IAAIxlB,MAAM,CAAC,CAAC;QAC5BwlB,OAAO,CAACC,OAAO,CACb1lB,IAAI,EACJ\u002F\u002FB,GAAG,CAACE,YAAY,CAAC,CAAC,CAACE,UAAU,CAAC,CAAC,CAACslD,YAAY,CAACnX,aAAa,CAC5D,CAAC;QACDxO,IAAI,GAAGylB,OAAO;MAChB;MACAI,WAAW,GAAG,IAAI;IACpB;IAEA,MAAMj1D,SAAS,GAAG,IAAI,CAACo9C,OAAO,CAACC,yBAAyB,CAAC,CAAC;IAC1D,IAAI,IAAI,CAACuR,cAAc,IAAI5uD,SAAS,KAAK,IAAI,EAAE;MAC7C,IAAI,IAAI,CAACouD,aAAa,EAAE;QACtB\u002F+C,GAAG,CAAC3e,IAAI,CAAC0+C,IAAI,EAAE,SAAS,CAAC;QACzB,IAAI,CAACgf,aAAa,GAAG,KAAK;MAC5B,CAAC,MAAM;QACL\u002F+C,GAAG,CAAC3e,IAAI,CAAC0+C,IAAI,CAAC;MAChB;IACF;IAEA,IAAI6lB,WAAW,EAAE;MACf5lD,GAAG,CAACtf,OAAO,CAAC,CAAC;IACf;IACA,IAAI6kE,WAAW,EAAE;MACf,IAAI,CAACA,WAAW,CAACxlB,IAAI,EAAEpvC,SAAS,CAAC;IACnC;EACF;EAEArP,MAAMA,CAACy+C,IAAI,EAAE;IACX,IAAI,CAACgf,aAAa,GAAG,IAAI;IACzB,IAAI,CAAC19D,IAAI,CAAC0+C,IAAI,CAAC;EACjB;EAEAx+C,UAAUA,CAACw+C,IAAI,EAAE;IACf,IAAI,CAAC1+C,IAAI,CAAC0+C,IAAI,EAAE,KAAK,CAAC;IACtB,IAAI,CAAC5+C,MAAM,CAAC4+C,IAAI,EAAE,KAAK,CAAC;IAExB,IAAI,CAACwlB,WAAW,CAACxlB,IAAI,CAAC;EACxB;EAEAv+C,YAAYA,CAACu+C,IAAI,EAAE;IACjB,IAAI,CAACgf,aAAa,GAAG,IAAI;IACzB,IAAI,CAACx9D,UAAU,CAACw+C,IAAI,CAAC;EACvB;EAEAt+C,eAAeA,CAACs+C,IAAI,EAAE;IACpB,IAAI,CAACx+C,UAAU,CAACw+C,IAAI,CAAC;EACvB;EAEAr+C,iBAAiBA,CAACq+C,IAAI,EAAE;IACtB,IAAI,CAACgf,aAAa,GAAG,IAAI;IACzB,IAAI,CAACx9D,UAAU,CAACw+C,IAAI,CAAC;EACvB;EAEAp+C,OAAOA,CAACo+C,IAAI,EAAE;IACZ,IAAI,CAACwlB,WAAW,CAACxlB,IAAI,CAAC;EACxB;EAEAr6C,WAAWA,CAACq6C,IAAI,EAAE;IAChB,IAAI,CAAC\u002F\u002FB,GAAG,CAAC3e,IAAI,CAAC0+C,IAAI,CAAC;EACrB;EAGAn+C,IAAIA,CAAA,EAAG;IACL,IAAI,CAACk9D,WAAW,GAAGT,WAAW;EAChC;EAEAx8D,MAAMA,CAAA,EAAG;IACP,IAAI,CAACi9D,WAAW,GAAGR,OAAO;EAC5B;EAGAx8D,SAASA,CAAA,EAAG;IACV,IAAI,CAACisD,OAAO,CAACuM,UAAU,GAAG,IAAI;IAC9B,IAAI,CAACvM,OAAO,CAACwM,eAAe,GAAG,CAAC;IAChC,IAAI,CAACxM,OAAO,CAAC58C,CAAC,GAAG,IAAI,CAAC48C,OAAO,CAAC2M,KAAK,GAAG,CAAC;IACvC,IAAI,CAAC3M,OAAO,CAAC38C,CAAC,GAAG,IAAI,CAAC28C,OAAO,CAAC4M,KAAK,GAAG,CAAC;EACzC;EAEA54D,OAAOA,CAAA,EAAG;IACR,MAAM8jE,KAAK,GAAG,IAAI,CAACC,gBAAgB;IACnC,MAAM9lD,GAAG,GAAG,IAAI,CAACA,GAAG;IACpB,IAAI6lD,KAAK,KAAK77D,SAAS,EAAE;MACvB;IACF;IAEA,MAAMw7D,OAAO,GAAG,IAAIxlB,MAAM,CAAC,CAAC;IAC5B,MAAMvP,SAAS,GAAGzwB,GAAG,CAACE,YAAY,CAAC,CAAC,CAACE,UAAU,CAAC,CAAC;IACjD,KAAK,MAAM;MAAEzf,SAAS;MAAEwQ,CAAC;MAAEC,CAAC;MAAEgpD,QAAQ;MAAEra;IAAK,CAAC,IAAI8lB,KAAK,EAAE;MACvDL,OAAO,CAACC,OAAO,CACb1lB,IAAI,EACJ,IAAI0L,SAAS,CAAC9qD,SAAS,CAAC,CACrBolE,eAAe,CAACt1B,SAAS,CAAC,CAC1B1D,SAAS,CAAC57B,CAAC,EAAEC,CAAC,CAAC,CACfuI,KAAK,CAACygD,QAAQ,EAAE,CAACA,QAAQ,CAC9B,CAAC;IACH;IAEAp6C,GAAG,CAACpe,IAAI,CAAC4jE,OAAO,CAAC;IACjB,OAAO,IAAI,CAACM,gBAAgB;EAC9B;EAEA9jE,cAAcA,CAACgkE,OAAO,EAAE;IACtB,IAAI,CAACjY,OAAO,CAAC6M,WAAW,GAAGoL,OAAO;EACpC;EAEA\u002FjE,cAAcA,CAAC+jE,OAAO,EAAE;IACtB,IAAI,CAACjY,OAAO,CAAC8M,WAAW,GAAGmL,OAAO;EACpC;EAEA9jE,SAASA,CAACyX,KAAK,EAAE;IACf,IAAI,CAACo0C,OAAO,CAAC+M,UAAU,GAAGnhD,KAAK,GAAG,GAAG;EACvC;EAEAxX,UAAUA,CAACs4D,OAAO,EAAE;IAClB,IAAI,CAAC1M,OAAO,CAAC0M,OAAO,GAAG,CAACA,OAAO;EACjC;EAEAr4D,OAAOA,CAAC6jE,WAAW,EAAEr8C,IAAI,EAAE;IACzB,MAAMs8C,OAAO,GAAG,IAAI,CAACzH,UAAU,CAACzpD,GAAG,CAACixD,WAAW,CAAC;IAChD,MAAMlY,OAAO,GAAG,IAAI,CAACA,OAAO;IAE5B,IAAI,CAACmY,OAAO,EAAE;MACZ,MAAM,IAAIv\u002FD,KAAK,CAAC,uBAAuBs\u002FD,WAAW,EAAE,CAAC;IACvD;IACAlY,OAAO,CAACyM,UAAU,GAAG0L,OAAO,CAAC1L,UAAU,IAAIhkE,oBAAoB;IAI\u002FD,IAAIu3D,OAAO,CAACyM,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAIzM,OAAO,CAACyM,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;MAC9D\u002FzD,IAAI,CAAC,+BAA+B,GAAGw\u002FD,WAAW,CAAC;IACrD;IAIA,IAAIr8C,IAAI,GAAG,CAAC,EAAE;MACZA,IAAI,GAAG,CAACA,IAAI;MACZmkC,OAAO,CAACoY,aAAa,GAAG,CAAC,CAAC;IAC5B,CAAC,MAAM;MACLpY,OAAO,CAACoY,aAAa,GAAG,CAAC;IAC3B;IAEA,IAAI,CAACpY,OAAO,CAAChR,IAAI,GAAGmpB,OAAO;IAC3B,IAAI,CAACnY,OAAO,CAACqM,QAAQ,GAAGxwC,IAAI;IAE5B,IAAIs8C,OAAO,CAACE,WAAW,EAAE;MACvB;IACF;IAEA,MAAMn9D,IAAI,GAAGi9D,OAAO,CAACzpB,UAAU,IAAI,YAAY;IAC\u002FC,MAAM4pB,QAAQ,GACZH,OAAO,CAAC5pB,cAAc,EAAE+C,GAAG,IAAI,IAAIp2C,IAAI,MAAMi9D,OAAO,CAACI,YAAY,EAAE;IAErE,IAAIC,IAAI,GAAG,QAAQ;IACnB,IAAIL,OAAO,CAACrQ,KAAK,EAAE;MACjB0Q,IAAI,GAAG,KAAK;IACd,CAAC,MAAM,IAAIL,OAAO,CAACK,IAAI,EAAE;MACvBA,IAAI,GAAG,MAAM;IACf;IACA,MAAMC,MAAM,GAAGN,OAAO,CAACM,MAAM,GAAG,QAAQ,GAAG,QAAQ;IAMnD,IAAIC,eAAe,GAAG78C,IAAI;IAC1B,IAAIA,IAAI,GAAGgtC,aAAa,EAAE;MACxB6P,eAAe,GAAG7P,aAAa;IACjC,CAAC,MAAM,IAAIhtC,IAAI,GAAGitC,aAAa,EAAE;MAC\u002FB4P,eAAe,GAAG5P,aAAa;IACjC;IACA,IAAI,CAAC9I,OAAO,CAACsM,aAAa,GAAGzwC,IAAI,GAAG68C,eAAe;IAEnD,IAAI,CAACzmD,GAAG,CAAC+8B,IAAI,GAAG,GAAGypB,MAAM,IAAID,IAAI,IAAIE,eAAe,MAAMJ,QAAQ,EAAE;EACtE;EAEAhkE,oBAAoBA,CAACmtB,IAAI,EAAE;IACzB,IAAI,CAACu+B,OAAO,CAACgN,iBAAiB,GAAGvrC,IAAI;EACvC;EAEAltB,WAAWA,CAACokE,IAAI,EAAE;IAChB,IAAI,CAAC3Y,OAAO,CAACiN,QAAQ,GAAG0L,IAAI;EAC9B;EAEAnkE,QAAQA,CAAC4O,CAAC,EAAEC,CAAC,EAAE;IACb,IAAI,CAAC28C,OAAO,CAAC58C,CAAC,GAAG,IAAI,CAAC48C,OAAO,CAAC2M,KAAK,IAAIvpD,CAAC;IACxC,IAAI,CAAC48C,OAAO,CAAC38C,CAAC,GAAG,IAAI,CAAC28C,OAAO,CAAC4M,KAAK,IAAIvpD,CAAC;EAC1C;EAEA5O,kBAAkBA,CAAC2O,CAAC,EAAEC,CAAC,EAAE;IACvB,IAAI,CAACjP,UAAU,CAAC,CAACiP,CAAC,CAAC;IACnB,IAAI,CAAC7O,QAAQ,CAAC4O,CAAC,EAAEC,CAAC,CAAC;EACrB;EAEA3O,aAAaA,CAAC0N,MAAM,EAAE;IACpB,MAAM;MAAE49C;IAAQ,CAAC,GAAG,IAAI;IACxBA,OAAO,CAACuM,UAAU,GAAGnqD,MAAM;IAC3B49C,OAAO,CAACwM,eAAe,GAAG\u002FvD,IAAI,CAACi9B,KAAK,CAACt3B,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,CAAC;IAE1D49C,OAAO,CAAC58C,CAAC,GAAG48C,OAAO,CAAC2M,KAAK,GAAG,CAAC;IAC7B3M,OAAO,CAAC38C,CAAC,GAAG28C,OAAO,CAAC4M,KAAK,GAAG,CAAC;EAC\u002FB;EAEAj4D,QAAQA,CAAA,EAAG;IACT,IAAI,CAACH,QAAQ,CAAC,CAAC,EAAE,IAAI,CAACwrD,OAAO,CAAC0M,OAAO,CAAC;EACxC;EAEA,CAACkM,aAAaC,CAAC7mB,IAAI,EAAEyiB,gBAAgB,EAAE7hE,SAAS,EAAE;IAChD,MAAM6kE,OAAO,GAAG,IAAIxlB,MAAM,CAAC,CAAC;IAC5BwlB,OAAO,CAACC,OAAO,CACb1lB,IAAI,EACJ,IAAI0L,SAAS,CAAC9qD,SAAS,CAAC,CAACyf,UAAU,CAAC,CAAC,CAACslD,YAAY,CAAClD,gBAAgB,CACrE,CAAC;IACD,OAAOgD,OAAO;EAChB;EAEAqB,SAASA,CAACjnB,SAAS,EAAEzuC,CAAC,EAAEC,CAAC,EAAE01D,oBAAoB,EAAEC,sBAAsB,EAAE;IACvE,MAAM\u002FmD,GAAG,GAAG,IAAI,CAACA,GAAG;IACpB,MAAM+tC,OAAO,GAAG,IAAI,CAACA,OAAO;IAC5B,MAAMhR,IAAI,GAAGgR,OAAO,CAAChR,IAAI;IACzB,MAAMge,iBAAiB,GAAGhN,OAAO,CAACgN,iBAAiB;IACnD,MAAMX,QAAQ,GAAGrM,OAAO,CAACqM,QAAQ,GAAGrM,OAAO,CAACsM,aAAa;IACzD,MAAM2M,cAAc,GAClBjM,iBAAiB,GAAGrhE,iBAAiB,CAACS,gBAAgB;IACxD,MAAM8sE,cAAc,GAAG,CAAC,EACtBlM,iBAAiB,GAAGrhE,iBAAiB,CAACU,gBAAgB,CACvD;IACD,MAAM6gE,WAAW,GAAGlN,OAAO,CAACkN,WAAW,IAAI,CAACle,IAAI,CAACE,WAAW;IAC5D,MAAMie,aAAa,GAAGnN,OAAO,CAACmN,aAAa,IAAI,CAACne,IAAI,CAACE,WAAW;IAEhE,IAAI8C,IAAI;IACR,IACEhD,IAAI,CAACR,eAAe,IACpB0qB,cAAc,IACdhM,WAAW,IACXC,aAAa,EACb;MACAnb,IAAI,GAAGhD,IAAI,CAAC2C,gBAAgB,CAAC,IAAI,CAAC+e,UAAU,EAAE7e,SAAS,CAAC;IAC1D;IAEA,IAAI7C,IAAI,CAACR,eAAe,IAAI0e,WAAW,IAAIC,aAAa,EAAE;MACxDl7C,GAAG,CAACvf,IAAI,CAAC,CAAC;MACVuf,GAAG,CAAC+sB,SAAS,CAAC57B,CAAC,EAAEC,CAAC,CAAC;MACnB4O,GAAG,CAACrG,KAAK,CAACygD,QAAQ,EAAE,CAACA,QAAQ,CAAC;MAC9B,IAAIoI,gBAAgB;MACpB,IACEwE,cAAc,KAAKttE,iBAAiB,CAACC,IAAI,IACzCqtE,cAAc,KAAKttE,iBAAiB,CAACG,WAAW,EAChD;QACA,IAAIitE,oBAAoB,EAAE;UACxBtE,gBAAgB,GAAGxiD,GAAG,CAACE,YAAY,CAAC,CAAC;UACrCF,GAAG,CAAC2uC,YAAY,CAAC,GAAGmY,oBAAoB,CAAC;UACzC9mD,GAAG,CAAC3e,IAAI,CACN,IAAI,CAAC,CAACslE,aAAa,CAAC5mB,IAAI,EAAEyiB,gBAAgB,EAAEsE,oBAAoB,CAClE,CAAC;QACH,CAAC,MAAM;UACL9mD,GAAG,CAAC3e,IAAI,CAAC0+C,IAAI,CAAC;QAChB;MACF;MACA,IACEinB,cAAc,KAAKttE,iBAAiB,CAACE,MAAM,IAC3CotE,cAAc,KAAKttE,iBAAiB,CAACG,WAAW,EAChD;QACA,IAAIktE,sBAAsB,EAAE;UAC1BvE,gBAAgB,KAAKxiD,GAAG,CAACE,YAAY,CAAC,CAAC;UACvCF,GAAG,CAAC2uC,YAAY,CAAC,GAAGoY,sBAAsB,CAAC;UAC3C,MAAM;YAAE32D,CAAC;YAAE5C,CAAC;YAAE6C,CAAC;YAAEzB;UAAE,CAAC,GAAG4zD,gBAAgB;UACvC,MAAM0E,mBAAmB,GAAG95D,IAAI,CAAC6C,gBAAgB,CAC\u002FC82D,sBACF,CAAC;UACD,MAAMx2B,MAAM,GAAGnjC,IAAI,CAACzM,SAAS,CAC3B,CAACyP,CAAC,EAAE5C,CAAC,EAAE6C,CAAC,EAAEzB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAClBs4D,mBACF,CAAC;UACD95D,IAAI,CAAC8C,6BAA6B,CAACqgC,MAAM,EAAE2mB,EAAE,CAAC;UAK9Cl3C,GAAG,CAACq7C,SAAS,IAAI7wD,IAAI,CAACwF,GAAG,CAACknD,EAAE,CAAC,CAAC,CAAC,EAAEA,EAAE,CAAC,CAAC,CAAC,CAAC,GAAGkD,QAAQ;UAClDp6C,GAAG,CAAC7e,MAAM,CACR,IAAI,CAAC,CAACwlE,aAAa,CAAC5mB,IAAI,EAAEyiB,gBAAgB,EAAEuE,sBAAsB,CACpE,CAAC;QACH,CAAC,MAAM;UACL\u002FmD,GAAG,CAACq7C,SAAS,IAAIjB,QAAQ;UACzBp6C,GAAG,CAAC7e,MAAM,CAAC4+C,IAAI,CAAC;QAClB;MACF;MACA\u002F\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\u002FmD,mBAAmB,CAACC,GAAG,CAAC;MAC\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\u002FC,QAAQ,GACrDC,aAAa;QACf,IAAI7\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\u002FD,MAAM;MAE\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\u002FF,KAAK,EAAE;MAEf,IAAI,CAAC\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\u002FL,mBAAmB,CAAC\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\u002FC,wBAAwB,CACtB\u002F4C,GAAG,EACH0iD,UAAU,CAAC\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\u002FC,wBAAwB,CACtB\u002F4C,GAAG,EACHorD,UAAU,EACVpxB,KAAK,CAAC7oC,CAAC,EACP6oC,KAAK,CAAC5oC,CAAC,EACP4oC,KAAK,CAACr5B,CAAC,EACPq5B,KAAK,CAACp5B,CAAC,EACP,CAAC,EACD,CAAC,CAAC,EACF,CAAC,EACD,CACF,CAAC;MACDZ,GAAG,CAACtf,OAAO,CAAC,CAAC;IACf;IACA,IAAI,CAACsjE,OAAO,CAAC,CAAC;EAChB;EAEA1+D,wBAAwBA,CAAA,EAAG;IACzB,IAAI,CAAC,IAAI,CAACi6D,cAAc,EAAE;MACxB;IACF;IACA,IAAI,CAACv\u002FC,GAAG,CAACogD,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC7B,IAAI,CAAC4D,OAAO,CAAC,CAAC;EAChB;EAIA9\u002FD,SAASA,CAAConE,GAAG,EAAE,CAEf;EAEAnnE,cAAcA,CAACmnE,GAAG,EAAEnO,UAAU,EAAE,CAEhC;EAEA\u002F4D,kBAAkBA,CAACknE,GAAG,EAAE;IACtB,IAAI,CAAC3M,kBAAkB,CAAC\u002FzD,IAAI,CAAC;MAC3BgyB,OAAO,EAAE;IACX,CAAC,CAAC;EACJ;EAEAv4B,uBAAuBA,CAACinE,GAAG,EAAEnO,UAAU,EAAE;IACvC,IAAImO,GAAG,KAAK,IAAI,EAAE;MAChB,IAAI,CAAC3M,kBAAkB,CAAC\u002FzD,IAAI,CAAC;QAC3BgyB,OAAO,EAAE,IAAI,CAAC8hC,qBAAqB,CAAC6M,SAAS,CAACpO,UAAU;MAC1D,CAAC,CAAC;IACJ,CAAC,MAAM;MACL,IAAI,CAACwB,kBAAkB,CAAC\u002FzD,IAAI,CAAC;QAC3BgyB,OAAO,EAAE;MACX,CAAC,CAAC;IACJ;IACA,IAAI,CAAC2iC,cAAc,GAAG,IAAI,CAACiM,gBAAgB,CAAC,CAAC;EAC\u002FC;EAEAlnE,gBAAgBA,CAAA,EAAG;IACjB,IAAI,CAACq6D,kBAAkB,CAACyG,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC7F,cAAc,GAAG,IAAI,CAACiM,gBAAgB,CAAC,CAAC;EAC\u002FC;EAIAjnE,WAAWA,CAAA,EAAG,CAEd;EAEAC,SAASA,CAAA,EAAG,CAEZ;EAIA+gE,WAAWA,CAACxlB,IAAI,EAAEyb,OAAO,EAAE;IACzB,MAAMzrC,OAAO,GAAG,IAAI,CAACg+B,OAAO,CAAC+N,WAAW,CAAC,CAAC;IAC1C,IAAI,IAAI,CAACgD,WAAW,EAAE;MACpB,IAAI,CAAC\u002FQ,OAAO,CAAC6N,kBAAkB,CAAC,CAAC;IACnC;IACA,IAAI,CAAC,IAAI,CAACkD,WAAW,EAAE;MACrB,IAAI,CAACkF,OAAO,CAACxI,OAAO,CAAC;IACvB;IACA,MAAMx7C,GAAG,GAAG,IAAI,CAACA,GAAG;IACpB,IAAI,IAAI,CAAC8+C,WAAW,EAAE;MACpB,IAAI,CAAC\u002FuC,OAAO,EAAE;QACZ,IAAI,IAAI,CAAC+uC,WAAW,KAAKR,OAAO,EAAE;UAChCt+C,GAAG,CAACpe,IAAI,CAACm+C,IAAI,EAAE,SAAS,CAAC;QAC3B,CAAC,MAAM;UACL\u002F\u002FB,GAAG,CAACpe,IAAI,CAACm+C,IAAI,CAAC;QAChB;MACF;MACA,IAAI,CAAC+e,WAAW,GAAG,IAAI;IACzB;IACA,IAAI,CAAC\u002FQ,OAAO,CAAC8N,sBAAsB,CAAC,IAAI,CAAC9N,OAAO,CAACyN,OAAO,CAAC;EAC3D;EAEAqM,mBAAmBA,CAAA,EAAG;IACpB,IAAI,CAAC,IAAI,CAAChI,0BAA0B,EAAE;MACpC,MAAM7xD,CAAC,GAAG+R,mBAAmB,CAAC,IAAI,CAACC,GAAG,CAAC;MACvC,IAAIhS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAIA,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;QAE5B,IAAI,CAAC6xD,0BAA0B,GAC7B,CAAC,GAAGr1D,IAAI,CAACC,GAAG,CAACD,IAAI,CAAC8H,GAAG,CAACtE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAExD,IAAI,CAAC8H,GAAG,CAACtE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAChD,CAAC,MAAM;QACL,MAAMy9D,MAAM,GAAGjhE,IAAI,CAAC8H,GAAG,CAACtE,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,MAAM09D,KAAK,GAAGlhE,IAAI,CAACi9B,KAAK,CAACz5B,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM29D,KAAK,GAAGnhE,IAAI,CAACi9B,KAAK,CAACz5B,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC6xD,0BAA0B,GAAGr1D,IAAI,CAACwF,GAAG,CAAC07D,KAAK,EAAEC,KAAK,CAAC,GAAGF,MAAM;MACnE;IACF;IACA,OAAO,IAAI,CAAC5L,0BAA0B;EACxC;EAEA+L,mBAAmBA,CAAA,EAAG;IAOpB,IAAI,IAAI,CAAChM,uBAAuB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;MAC1C,MAAM;QAAEvE;MAAU,CAAC,GAAG,IAAI,CAACtN,OAAO;MAClC,MAAM;QAAE39C,CAAC;QAAE5C,CAAC;QAAE6C,CAAC;QAAEzB;MAAE,CAAC,GAAG,IAAI,CAACoR,GAAG,CAACE,YAAY,CAAC,CAAC;MAC9C,IAAIkvC,MAAM,EAAEC,MAAM;MAElB,IAAI7hD,CAAC,KAAK,CAAC,IAAI6C,CAAC,KAAK,CAAC,EAAE;QAEtB,MAAMq7D,KAAK,GAAGlhE,IAAI,CAAC8H,GAAG,CAAClC,CAAC,CAAC;QACzB,MAAMu7D,KAAK,GAAGnhE,IAAI,CAAC8H,GAAG,CAAC1D,CAAC,CAAC;QACzB,IAAI88D,KAAK,KAAKC,KAAK,EAAE;UACnB,IAAItQ,SAAS,KAAK,CAAC,EAAE;YACnBjM,MAAM,GAAGC,MAAM,GAAG,CAAC,GAAGqc,KAAK;UAC7B,CAAC,MAAM;YACL,MAAMG,eAAe,GAAGH,KAAK,GAAGrQ,SAAS;YACzCjM,MAAM,GAAGC,MAAM,GAAGwc,eAAe,GAAG,CAAC,GAAG,CAAC,GAAGA,eAAe,GAAG,CAAC;UACjE;QACF,CAAC,MAAM,IAAIxQ,SAAS,KAAK,CAAC,EAAE;UAC1BjM,MAAM,GAAG,CAAC,GAAGsc,KAAK;UAClBrc,MAAM,GAAG,CAAC,GAAGsc,KAAK;QACpB,CAAC,MAAM;UACL,MAAMG,gBAAgB,GAAGJ,KAAK,GAAGrQ,SAAS;UAC1C,MAAM0Q,gBAAgB,GAAGJ,KAAK,GAAGtQ,SAAS;UAC1CjM,MAAM,GAAG0c,gBAAgB,GAAG,CAAC,GAAG,CAAC,GAAGA,gBAAgB,GAAG,CAAC;UACxDzc,MAAM,GAAG0c,gBAAgB,GAAG,CAAC,GAAG,CAAC,GAAGA,gBAAgB,GAAG,CAAC;QAC1D;MACF,CAAC,MAAM;QAOL,MAAMN,MAAM,GAAGjhE,IAAI,CAAC8H,GAAG,CAAClC,CAAC,GAAGxB,CAAC,GAAGpB,CAAC,GAAG6C,CAAC,CAAC;QACtC,MAAMq7D,KAAK,GAAGlhE,IAAI,CAACi9B,KAAK,CAACr3B,CAAC,EAAE5C,CAAC,CAAC;QAC9B,MAAMm+D,KAAK,GAAGnhE,IAAI,CAACi9B,KAAK,CAACp3B,CAAC,EAAEzB,CAAC,CAAC;QAC9B,IAAIysD,SAAS,KAAK,CAAC,EAAE;UACnBjM,MAAM,GAAGuc,KAAK,GAAGF,MAAM;UACvBpc,MAAM,GAAGqc,KAAK,GAAGD,MAAM;QACzB,CAAC,MAAM;UACL,MAAMO,QAAQ,GAAG3Q,SAAS,GAAGoQ,MAAM;UACnCrc,MAAM,GAAGuc,KAAK,GAAGK,QAAQ,GAAGL,KAAK,GAAGK,QAAQ,GAAG,CAAC;UAChD3c,MAAM,GAAGqc,KAAK,GAAGM,QAAQ,GAAGN,KAAK,GAAGM,QAAQ,GAAG,CAAC;QAClD;MACF;MACA,IAAI,CAACpM,uBAAuB,CAAC,CAAC,CAAC,GAAGxQ,MAAM;MACxC,IAAI,CAACwQ,uBAAuB,CAAC,CAAC,CAAC,GAAGvQ,MAAM;IAC1C;IACA,OAAO,IAAI,CAACuQ,uBAAuB;EACrC;EAIA+F,gBAAgBA,CAAC5lB,IAAI,EAAEksB,WAAW,EAAE;IAClC,MAAM;MACJjsD,GAAG;MACH+tC,OAAO,EAAE;QAAEsN;MAAU;IACvB,CAAC,GAAG,IAAI;IACR,MAAM,CAACjM,MAAM,EAAEC,MAAM,CAAC,GAAG,IAAI,CAACuc,mBAAmB,CAAC,CAAC;IAEnD,IAAIxc,MAAM,KAAKC,MAAM,EAAE;MACrBrvC,GAAG,CAACq7C,SAAS,GAAG,CAACA,SAAS,IAAI,CAAC,IAAIjM,MAAM;MACzCpvC,GAAG,CAAC7e,MAAM,CAAC4+C,IAAI,CAAC;MAChB;IACF;IAEA,MAAMmsB,MAAM,GAAGlsD,GAAG,CAACs9C,WAAW,CAAC,CAAC;IAChC,IAAI2O,WAAW,EAAE;MACfjsD,GAAG,CAACvf,IAAI,CAAC,CAAC;IACZ;IAEAuf,GAAG,CAACrG,KAAK,CAACy1C,MAAM,EAAEC,MAAM,CAAC;IACzB4H,YAAY,CAAC7mD,CAAC,GAAG,CAAC,GAAGg\u002FC,MAAM;IAC3B6H,YAAY,CAACroD,CAAC,GAAG,CAAC,GAAGygD,MAAM;IAC3B,MAAMmW,OAAO,GAAG,IAAIxlB,MAAM,CAAC,CAAC;IAC5BwlB,OAAO,CAACC,OAAO,CAAC1lB,IAAI,EAAEkX,YAAY,CAAC;IASnC,IAAIiV,MAAM,CAAC1kE,MAAM,GAAG,CAAC,EAAE;MACrB,MAAMmS,KAAK,GAAGnP,IAAI,CAACwF,GAAG,CAACo\u002FC,MAAM,EAAEC,MAAM,CAAC;MACtCrvC,GAAG,CAACq9C,WAAW,CAAC6O,MAAM,CAACjtD,GAAG,CAAC9N,CAAC,IAAIA,CAAC,GAAGwI,KAAK,CAAC,CAAC;MAC3CqG,GAAG,CAACu9C,cAAc,IAAI5jD,KAAK;IAC7B;IAEAqG,GAAG,CAACq7C,SAAS,GAAGA,SAAS,IAAI,CAAC;IAC9Br7C,GAAG,CAAC7e,MAAM,CAACqkE,OAAO,CAAC;IAEnB,IAAIyG,WAAW,EAAE;MACfjsD,GAAG,CAACtf,OAAO,CAAC,CAAC;IACf;EACF;EAEA8qE,gBAAgBA,CAAA,EAAG;IACjB,KAAK,IAAIlhE,CAAC,GAAG,IAAI,CAACq0D,kBAAkB,CAACn3D,MAAM,GAAG,CAAC,EAAE8C,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;MAC5D,IAAI,CAAC,IAAI,CAACq0D,kBAAkB,CAACr0D,CAAC,CAAC,CAACsyB,OAAO,EAAE;QACvC,OAAO,KAAK;MACd;IACF;IACA,OAAO,IAAI;EACb;AACF;AAEA,KAAK,MAAMyoC,EAAE,IAAItlE,GAAG,EAAE;EACpB,IAAIw+D,cAAc,CAACr1D,SAAS,CAACm8D,EAAE,CAAC,KAAKr7D,SAAS,EAAE;IAC9Cu0D,cAAc,CAACr1D,SAAS,CAACnJ,GAAG,CAACslE,EAAE,CAAC,CAAC,GAAG9G,cAAc,CAACr1D,SAAS,CAACm8D,EAAE,CAAC;EAClE;AACF;;;ACr+FA,MAAM8G,mBAAmB,CAAC;EACxB,OAAO,CAACC,IAAI,GAAG,IAAI;EAEnB,OAAO,CAACpkD,GAAG,GAAG,EAAE;EAKhB,WAAWqkD,UAAUA,CAAA,EAAG;IACtB,OAAO,IAAI,CAAC,CAACD,IAAI;EACnB;EAMA,WAAWC,UAAUA,CAACpyB,GAAG,EAAE;IACzB,IACE,EAAE,OAAOqyB,MAAM,KAAK,WAAW,IAAIryB,GAAG,YAAYqyB,MAAM,CAAC,IACzDryB,GAAG,KAAK,IAAI,EACZ;MACA,MAAM,IAAItzC,KAAK,CAAC,4BAA4B,CAAC;IAC\u002FC;IACA,IAAI,CAAC,CAACylE,IAAI,GAAGnyB,GAAG;EAClB;EAKA,WAAWsyB,SAASA,CAAA,EAAG;IACrB,OAAO,IAAI,CAAC,CAACvkD,GAAG;EAClB;EASA,WAAWukD,SAASA,CAACtyB,GAAG,EAAE;IACxB,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE;MAC3B,MAAM,IAAItzC,KAAK,CAAC,2BAA2B,CAAC;IAC9C;IACA,IAAI,CAAC,CAACqhB,GAAG,GAAGiyB,GAAG;EACjB;AACF;;;AC9CA,MAAMuyB,QAAQ,CAAC;EACb,CAACvtD,GAAG;EAEJ,CAACoJ,IAAI;EAELlf,WAAWA,CAAC;IAAEsjE,UAAU;IAAEjkD;EAAQ,CAAC,EAAE;IACnC,IAAI,CAAC,CAACvJ,GAAG,GAAGwtD,UAAU;IACtB,IAAI,CAAC,CAACpkD,IAAI,GAAGG,OAAO;EACtB;EAEAkkD,MAAMA,CAAA,EAAG;IACP,OAAO,IAAI,CAAC,CAACrkD,IAAI;EACnB;EAEArT,GAAGA,CAAC\u002FL,IAAI,EAAE;IACR,OAAO,IAAI,CAAC,CAACgW,GAAG,CAACjK,GAAG,CAAC\u002FL,IAAI,CAAC,IAAI,IAAI;EACpC;EAEA,CAAC+xC,MAAM,CAACC,QAAQ,IAAI;IAClB,OAAO,IAAI,CAAC,CAACh8B,GAAG,CAAC0b,OAAO,CAAC,CAAC;EAC5B;AACF;;;AChB2B;AAC+B;AAE1D,MAAMgyC,QAAQ,GAAG3xB,MAAM,CAAC,UAAU,CAAC;AAEnC,MAAM4xB,oBAAoB,CAAC;EACzB,CAACC,SAAS,GAAG,KAAK;EAElB,CAACC,OAAO,GAAG,KAAK;EAEhB,CAACC,OAAO,GAAG,KAAK;EAEhB,CAACnwC,OAAO,GAAG,IAAI;EAEfzzB,WAAWA,CAAC6jE,eAAe,EAAE;IAAE\u002FjE,IAAI;IAAEu6D,MAAM;IAAEyJ,KAAK;IAAEC;EAAS,CAAC,EAAE;IAC9D,IAAI,CAAC,CAACL,SAAS,GAAG,CAAC,EAAEG,eAAe,GAAGp2E,mBAAmB,CAACE,OAAO,CAAC;IACnE,IAAI,CAAC,CAACg2E,OAAO,GAAG,CAAC,EAAEE,eAAe,GAAGp2E,mBAAmB,CAACG,KAAK,CAAC;IAE\u002FD,IAAI,CAACkS,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACu6D,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACyJ,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,QAAQ,GAAGA,QAAQ;EAC1B;EAKA,IAAItwC,OAAOA,CAAA,EAAG;IACZ,IAAI,IAAI,CAAC,CAACmwC,OAAO,EAAE;MACjB,OAAO,IAAI,CAAC,CAACnwC,OAAO;IACtB;IACA,IAAI,CAAC,IAAI,CAAC,CAACA,OAAO,EAAE;MAClB,OAAO,KAAK;IACd;IACA,MAAM;MAAEwd,KAAK;MAAE+yB;IAAK,CAAC,GAAG,IAAI,CAACF,KAAK;IAElC,IAAI,IAAI,CAAC,CAACJ,SAAS,EAAE;MACnB,OAAOM,IAAI,EAAEC,SAAS,KAAK,KAAK;IAClC,CAAC,MAAM,IAAI,IAAI,CAAC,CAACN,OAAO,EAAE;MACxB,OAAO1yB,KAAK,EAAEizB,UAAU,KAAK,KAAK;IACpC;IACA,OAAO,IAAI;EACb;EAKAC,WAAWA,CAACC,QAAQ,EAAE3wC,OAAO,EAAEmwC,OAAO,GAAG,KAAK,EAAE;IAC9C,IAAIQ,QAAQ,KAAKZ,QAAQ,EAAE;MACzBjmE,WAAW,CAAC,uCAAuC,CAAC;IACtD;IACA,IAAI,CAAC,CAACqmE,OAAO,GAAGA,OAAO;IACvB,IAAI,CAAC,CAACnwC,OAAO,GAAGA,OAAO;EACzB;AACF;AAEA,MAAM4wC,qBAAqB,CAAC;EAC1B,CAACC,aAAa,GAAG,IAAI;EAErB,CAACC,MAAM,GAAG,IAAI94D,GAAG,CAAC,CAAC;EAEnB,CAAC+4D,WAAW,GAAG,IAAI;EAEnB,CAACC,KAAK,GAAG,IAAI;EAEbzkE,WAAWA,CAACkf,IAAI,EAAE2kD,eAAe,GAAGp2E,mBAAmB,CAACE,OAAO,EAAE;IAC\u002FD,IAAI,CAACk2E,eAAe,GAAGA,eAAe;IAEtC,IAAI,CAAC\u002FjE,IAAI,GAAG,IAAI;IAChB,IAAI,CAAC4kE,OAAO,GAAG,IAAI;IAEnB,IAAIxlD,IAAI,KAAK,IAAI,EAAE;MACjB;IACF;IACA,IAAI,CAACpf,IAAI,GAAGof,IAAI,CAACpf,IAAI;IACrB,IAAI,CAAC4kE,OAAO,GAAGxlD,IAAI,CAACwlD,OAAO;IAC3B,IAAI,CAAC,CAACD,KAAK,GAAGvlD,IAAI,CAACulD,KAAK;IACxB,KAAK,MAAM3D,KAAK,IAAI5hD,IAAI,CAACqlD,MAAM,EAAE;MAC\u002FB,IAAI,CAAC,CAACA,MAAM,CAAC7tD,GAAG,CACdoqD,KAAK,CAAC5iD,EAAE,EACR,IAAIulD,oBAAoB,CAACI,eAAe,EAAE\u002FC,KAAK,CACjD,CAAC;IACH;IAEA,IAAI5hD,IAAI,CAACylD,SAAS,KAAK,KAAK,EAAE;MAC5B,KAAK,MAAM7D,KAAK,IAAI,IAAI,CAAC,CAACyD,MAAM,CAACx6C,MAAM,CAAC,CAAC,EAAE;QACzC+2C,KAAK,CAACqD,WAAW,CAACX,QAAQ,EAAE,KAAK,CAAC;MACpC;IACF;IAEA,KAAK,MAAMr4C,EAAE,IAAIjM,IAAI,CAACiM,EAAE,EAAE;MACxB,IAAI,CAAC,CAACo5C,MAAM,CAAC14D,GAAG,CAACsf,EAAE,CAAC,CAACg5C,WAAW,CAACX,QAAQ,EAAE,IAAI,CAAC;IAClD;IAEA,KAAK,MAAMoB,GAAG,IAAI1lD,IAAI,CAAC0lD,GAAG,EAAE;MAC1B,IAAI,CAAC,CAACL,MAAM,CAAC14D,GAAG,CAAC+4D,GAAG,CAAC,CAACT,WAAW,CAACX,QAAQ,EAAE,KAAK,CAAC;IACpD;IAGA,IAAI,CAAC,CAACgB,WAAW,GAAG,IAAI,CAACK,OAAO,CAAC,CAAC;EACpC;EAEA,CAACC,4BAA4BC,CAACC,KAAK,EAAE;IACnC,MAAM3mE,MAAM,GAAG2mE,KAAK,CAAC3mE,MAAM;IAC3B,IAAIA,MAAM,GAAG,CAAC,EAAE;MACd,OAAO,IAAI;IACb;IACA,MAAM4mE,QAAQ,GAAGD,KAAK,CAAC,CAAC,CAAC;IACzB,KAAK,IAAI7jE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG9C,MAAM,EAAE8C,CAAC,EAAE,EAAE;MAC\u002FB,MAAMqa,OAAO,GAAGwpD,KAAK,CAAC7jE,CAAC,CAAC;MACxB,IAAIwyB,KAAK;MACT,IAAI\u002FvB,KAAK,CAAC4I,OAAO,CAACgP,OAAO,CAAC,EAAE;QAC1BmY,KAAK,GAAG,IAAI,CAAC,CAACmxC,4BAA4B,CAACtpD,OAAO,CAAC;MACrD,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC+oD,MAAM,CAAChhD,GAAG,CAAC\u002FH,OAAO,CAAC,EAAE;QACpCmY,KAAK,GAAG,IAAI,CAAC,CAAC4wC,MAAM,CAAC14D,GAAG,CAAC2P,OAAO,CAAC,CAACiY,OAAO;MAC3C,CAAC,MAAM;QACLn2B,IAAI,CAAC,qCAAqCke,OAAO,EAAE,CAAC;QACpD,OAAO,IAAI;MACb;MACA,QAAQypD,QAAQ;QACd,KAAK,KAAK;UACR,IAAI,CAACtxC,KAAK,EAAE;YACV,OAAO,KAAK;UACd;UACA;QACF,KAAK,IAAI;UACP,IAAIA,KAAK,EAAE;YACT,OAAO,IAAI;UACb;UACA;QACF,KAAK,KAAK;UACR,OAAO,CAACA,KAAK;QACf;UACE,OAAO,IAAI;MACf;IACF;IACA,OAAOsxC,QAAQ,KAAK,KAAK;EAC3B;EAEA7C,SAASA,CAACtB,KAAK,EAAE;IACf,IAAI,IAAI,CAAC,CAACyD,MAAM,CAAC9jD,IAAI,KAAK,CAAC,EAAE;MAC3B,OAAO,IAAI;IACb;IACA,IAAI,CAACqgD,KAAK,EAAE;MACV5jE,IAAI,CAAC,qCAAqC,CAAC;MAC3C,OAAO,IAAI;IACb;IACA,IAAI4jE,KAAK,CAAC1zE,IAAI,KAAK,KAAK,EAAE;MACxB,IAAI,CAAC,IAAI,CAAC,CAACm3E,MAAM,CAAChhD,GAAG,CAACu9C,KAAK,CAAC5iD,EAAE,CAAC,EAAE;QAC\u002FB5gB,IAAI,CAAC,qCAAqCwjE,KAAK,CAAC5iD,EAAE,EAAE,CAAC;QACrD,OAAO,IAAI;MACb;MACA,OAAO,IAAI,CAAC,CAACqmD,MAAM,CAAC14D,GAAG,CAACi1D,KAAK,CAAC5iD,EAAE,CAAC,CAACuV,OAAO;IAC3C,CAAC,MAAM,IAAIqtC,KAAK,CAAC1zE,IAAI,KAAK,MAAM,EAAE;MAEhC,IAAI0zE,KAAK,CAACoE,UAAU,EAAE;QACpB,OAAO,IAAI,CAAC,CAACJ,4BAA4B,CAAChE,KAAK,CAACoE,UAAU,CAAC;MAC7D;MACA,IAAI,CAACpE,KAAK,CAACqE,MAAM,IAAIrE,KAAK,CAACqE,MAAM,KAAK,OAAO,EAAE;QAE7C,KAAK,MAAMjnD,EAAE,IAAI4iD,KAAK,CAAClvB,GAAG,EAAE;UAC1B,IAAI,CAAC,IAAI,CAAC,CAAC2yB,MAAM,CAAChhD,GAAG,CAACrF,EAAE,CAAC,EAAE;YACzB5gB,IAAI,CAAC,qCAAqC4gB,EAAE,EAAE,CAAC;YAC\u002FC,OAAO,IAAI;UACb;UACA,IAAI,IAAI,CAAC,CAACqmD,MAAM,CAAC14D,GAAG,CAACqS,EAAE,CAAC,CAACuV,OAAO,EAAE;YAChC,OAAO,IAAI;UACb;QACF;QACA,OAAO,KAAK;MACd,CAAC,MAAM,IAAIqtC,KAAK,CAACqE,MAAM,KAAK,OAAO,EAAE;QACnC,KAAK,MAAMjnD,EAAE,IAAI4iD,KAAK,CAAClvB,GAAG,EAAE;UAC1B,IAAI,CAAC,IAAI,CAAC,CAAC2yB,MAAM,CAAChhD,GAAG,CAACrF,EAAE,CAAC,EAAE;YACzB5gB,IAAI,CAAC,qCAAqC4gB,EAAE,EAAE,CAAC;YAC\u002FC,OAAO,IAAI;UACb;UACA,IAAI,CAAC,IAAI,CAAC,CAACqmD,MAAM,CAAC14D,GAAG,CAACqS,EAAE,CAAC,CAACuV,OAAO,EAAE;YACjC,OAAO,KAAK;UACd;QACF;QACA,OAAO,IAAI;MACb,CAAC,MAAM,IAAIqtC,KAAK,CAACqE,MAAM,KAAK,QAAQ,EAAE;QACpC,KAAK,MAAMjnD,EAAE,IAAI4iD,KAAK,CAAClvB,GAAG,EAAE;UAC1B,IAAI,CAAC,IAAI,CAAC,CAAC2yB,MAAM,CAAChhD,GAAG,CAACrF,EAAE,CAAC,EAAE;YACzB5gB,IAAI,CAAC,qCAAqC4gB,EAAE,EAAE,CAAC;YAC\u002FC,OAAO,IAAI;UACb;UACA,IAAI,CAAC,IAAI,CAAC,CAACqmD,MAAM,CAAC14D,GAAG,CAACqS,EAAE,CAAC,CAACuV,OAAO,EAAE;YACjC,OAAO,IAAI;UACb;QACF;QACA,OAAO,KAAK;MACd,CAAC,MAAM,IAAIqtC,KAAK,CAACqE,MAAM,KAAK,QAAQ,EAAE;QACpC,KAAK,MAAMjnD,EAAE,IAAI4iD,KAAK,CAAClvB,GAAG,EAAE;UAC1B,IAAI,CAAC,IAAI,CAAC,CAAC2yB,MAAM,CAAChhD,GAAG,CAACrF,EAAE,CAAC,EAAE;YACzB5gB,IAAI,CAAC,qCAAqC4gB,EAAE,EAAE,CAAC;YAC\u002FC,OAAO,IAAI;UACb;UACA,IAAI,IAAI,CAAC,CAACqmD,MAAM,CAAC14D,GAAG,CAACqS,EAAE,CAAC,CAACuV,OAAO,EAAE;YAChC,OAAO,KAAK;UACd;QACF;QACA,OAAO,IAAI;MACb;MACAn2B,IAAI,CAAC,mCAAmCwjE,KAAK,CAACqE,MAAM,GAAG,CAAC;MACxD,OAAO,IAAI;IACb;IACA7nE,IAAI,CAAC,sBAAsBwjE,KAAK,CAAC1zE,IAAI,GAAG,CAAC;IACzC,OAAO,IAAI;EACb;EAEAg4E,aAAaA,CAAClnD,EAAE,EAAEuV,OAAO,GAAG,IAAI,EAAE4xC,UAAU,GAAG,IAAI,EAAE;IACnD,MAAMvE,KAAK,GAAG,IAAI,CAAC,CAACyD,MAAM,CAAC14D,GAAG,CAACqS,EAAE,CAAC;IAClC,IAAI,CAAC4iD,KAAK,EAAE;MACVxjE,IAAI,CAAC,qCAAqC4gB,EAAE,EAAE,CAAC;MAC\u002FC;IACF;IAKA,IAAImnD,UAAU,IAAI5xC,OAAO,IAAIqtC,KAAK,CAACiD,QAAQ,CAAC1lE,MAAM,EAAE;MAClD,KAAK,MAAMinE,OAAO,IAAIxE,KAAK,CAACiD,QAAQ,EAAE;QACpC,KAAK,MAAMwB,OAAO,IAAID,OAAO,EAAE;UAC7B,IAAIC,OAAO,KAAKrnD,EAAE,EAAE;YAClB,IAAI,CAAC,CAACqmD,MAAM,CAAC14D,GAAG,CAAC05D,OAAO,CAAC,EAAEpB,WAAW,CAACX,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC;UAC\u002FD;QACF;MACF;IACF;IAEA1C,KAAK,CAACqD,WAAW,CAACX,QAAQ,EAAE,CAAC,CAAC\u002FvC,OAAO,EAAkB,IAAI,CAAC;IAE5D,IAAI,CAAC,CAAC6wC,aAAa,GAAG,IAAI;EAC5B;EAEAkB,WAAWA,CAAC;IAAE7xC,KAAK;IAAE0xC;EAAW,CAAC,EAAE;IACjC,IAAIJ,QAAQ;IAEZ,KAAK,MAAMhY,IAAI,IAAIt5B,KAAK,EAAE;MACxB,QAAQs5B,IAAI;QACV,KAAK,IAAI;QACT,KAAK,KAAK;QACV,KAAK,QAAQ;UACXgY,QAAQ,GAAGhY,IAAI;UACf;MACJ;MAEA,MAAM6T,KAAK,GAAG,IAAI,CAAC,CAACyD,MAAM,CAAC14D,GAAG,CAACohD,IAAI,CAAC;MACpC,IAAI,CAAC6T,KAAK,EAAE;QACV;MACF;MACA,QAAQmE,QAAQ;QACd,KAAK,IAAI;UACP,IAAI,CAACG,aAAa,CAACnY,IAAI,EAAE,IAAI,EAAEoY,UAAU,CAAC;UAC1C;QACF,KAAK,KAAK;UACR,IAAI,CAACD,aAAa,CAACnY,IAAI,EAAE,KAAK,EAAEoY,UAAU,CAAC;UAC3C;QACF,KAAK,QAAQ;UACX,IAAI,CAACD,aAAa,CAACnY,IAAI,EAAE,CAAC6T,KAAK,CAACrtC,OAAO,EAAE4xC,UAAU,CAAC;UACpD;MACJ;IACF;IAEA,IAAI,CAAC,CAACf,aAAa,GAAG,IAAI;EAC5B;EAEA,IAAImB,oBAAoBA,CAAA,EAAG;IACzB,OAAO,IAAI,CAAC,CAACjB,WAAW,KAAK,IAAI,IAAI,IAAI,CAACK,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC,CAACL,WAAW;EAC3E;EAEAkB,QAAQA,CAAA,EAAG;IACT,IAAI,CAAC,IAAI,CAAC,CAACnB,MAAM,CAAC9jD,IAAI,EAAE;MACtB,OAAO,IAAI;IACb;IACA,IAAI,IAAI,CAAC,CAACgkD,KAAK,EAAE;MACf,OAAO,IAAI,CAAC,CAACA,KAAK,CAACl9D,KAAK,CAAC,CAAC;IAC5B;IACA,OAAO,CAAC,GAAG,IAAI,CAAC,CAACg9D,MAAM,CAACtiE,IAAI,CAAC,CAAC,CAAC;EACjC;EAEA0jE,QAAQA,CAACznD,EAAE,EAAE;IACX,OAAO,IAAI,CAAC,CAACqmD,MAAM,CAAC14D,GAAG,CAACqS,EAAE,CAAC,IAAI,IAAI;EACrC;EAEA2mD,OAAOA,CAAA,EAAG;IACR,IAAI,IAAI,CAAC,CAACP,aAAa,KAAK,IAAI,EAAE;MAChC,OAAO,IAAI,CAAC,CAACA,aAAa;IAC5B;IACA,MAAM1lE,IAAI,GAAG,IAAImwC,cAAc,CAAC,CAAC;IAEjC,KAAK,MAAM,CAAC7wB,EAAE,EAAE4iD,KAAK,CAAC,IAAI,IAAI,CAAC,CAACyD,MAAM,EAAE;MACtC3lE,IAAI,CAACuwC,MAAM,CAAC,GAAGjxB,EAAE,IAAI4iD,KAAK,CAACrtC,OAAO,EAAE,CAAC;IACvC;IACA,OAAQ,IAAI,CAAC,CAAC6wC,aAAa,GAAG1lE,IAAI,CAACoxC,SAAS,CAAC,CAAC;EAChD;EAEA,CAAC6B,MAAM,CAACC,QAAQ,IAAI;IAClB,OAAO,IAAI,CAAC,CAACyyB,MAAM,CAAC\u002FyC,OAAO,CAAC,CAAC;EAC\u002FB;AACF;;;;;;;;;;;;;;AC7S2C;AACI;AAG\u002FC,MAAMo0C,sBAAsB,CAAC;EAC3B5lE,WAAWA,CACT6lE,qBAAqB,EACrB;IAAEC,YAAY,GAAG,KAAK;IAAEC,aAAa,GAAG;EAAM,CAAC,EAC\u002FC;IACAtoE,MAAM,CACJooE,qBAAqB,EACrB,6EACF,CAAC;IACD,MAAM;MAAExnE,MAAM;MAAE2nE,WAAW;MAAEC,eAAe;MAAEC;IAA2B,CAAC,GACxEL,qBAAqB;IAEvB,IAAI,CAACM,aAAa,GAAG,EAAE;IACvB,IAAI,CAACC,gBAAgB,GAAGH,eAAe;IACvC,IAAI,CAACI,2BAA2B,GAAGH,0BAA0B;IAE7D,IAAIF,WAAW,EAAE3nE,MAAM,GAAG,CAAC,EAAE;MAG3B,MAAMiE,MAAM,GACV0jE,WAAW,YAAYnkE,UAAU,IACjCmkE,WAAW,CAAC12B,UAAU,KAAK02B,WAAW,CAAC1jE,MAAM,CAACgtC,UAAU,GACpD02B,WAAW,CAAC1jE,MAAM,GAClB,IAAIT,UAAU,CAACmkE,WAAW,CAAC,CAAC1jE,MAAM;MACxC,IAAI,CAAC6jE,aAAa,CAAC1kE,IAAI,CAACa,MAAM,CAAC;IACjC;IAEA,IAAI,CAACgkE,sBAAsB,GAAGT,qBAAqB;IACnD,IAAI,CAACU,qBAAqB,GAAG,CAACR,aAAa;IAC3C,IAAI,CAACS,iBAAiB,GAAG,CAACV,YAAY;IACtC,IAAI,CAACW,cAAc,GAAGpoE,MAAM;IAE5B,IAAI,CAACqoE,kBAAkB,GAAG,IAAI;IAC9B,IAAI,CAACC,aAAa,GAAG,EAAE;IAEvBd,qBAAqB,CAACe,gBAAgB,CAAC,CAACC,KAAK,EAAEtlE,KAAK,KAAK;MACvD,IAAI,CAACulE,cAAc,CAAC;QAAED,KAAK;QAAEtlE;MAAM,CAAC,CAAC;IACvC,CAAC,CAAC;IAEFskE,qBAAqB,CAACkB,mBAAmB,CAAC,CAAC\u002FyB,MAAM,EAAEgzB,KAAK,KAAK;MAC3D,IAAI,CAACC,WAAW,CAAC;QAAEjzB,MAAM;QAAEgzB;MAAM,CAAC,CAAC;IACrC,CAAC,CAAC;IAEFnB,qBAAqB,CAACqB,0BAA0B,CAAC3lE,KAAK,IAAI;MACxD,IAAI,CAACulE,cAAc,CAAC;QAAEvlE;MAAM,CAAC,CAAC;IAChC,CAAC,CAAC;IAEFskE,qBAAqB,CAACsB,0BAA0B,CAAC,MAAM;MACrD,IAAI,CAACC,kBAAkB,CAAC,CAAC;IAC3B,CAAC,CAAC;IAEFvB,qBAAqB,CAACwB,cAAc,CAAC,CAAC;EACxC;EAEAP,cAAcA,CAAC;IAAED,KAAK;IAAEtlE;EAAM,CAAC,EAAE;IAG\u002FB,MAAMe,MAAM,GACVf,KAAK,YAAYM,UAAU,IAC3BN,KAAK,CAAC+tC,UAAU,KAAK\u002FtC,KAAK,CAACe,MAAM,CAACgtC,UAAU,GACxC\u002FtC,KAAK,CAACe,MAAM,GACZ,IAAIT,UAAU,CAACN,KAAK,CAAC,CAACe,MAAM;IAElC,IAAIukE,KAAK,KAAKhmE,SAAS,EAAE;MACvB,IAAI,IAAI,CAAC6lE,kBAAkB,EAAE;QAC3B,IAAI,CAACA,kBAAkB,CAACY,QAAQ,CAAChlE,MAAM,CAAC;MAC1C,CAAC,MAAM;QACL,IAAI,CAAC6jE,aAAa,CAAC1kE,IAAI,CAACa,MAAM,CAAC;MACjC;IACF,CAAC,MAAM;MACL,MAAMilE,KAAK,GAAG,IAAI,CAACZ,aAAa,CAACl1C,IAAI,CAAC,UAAU+1C,WAAW,EAAE;QAC3D,IAAIA,WAAW,CAACC,MAAM,KAAKZ,KAAK,EAAE;UAChC,OAAO,KAAK;QACd;QACAW,WAAW,CAACF,QAAQ,CAAChlE,MAAM,CAAC;QAC5B,OAAO,IAAI;MACb,CAAC,CAAC;MACF7E,MAAM,CACJ8pE,KAAK,EACL,yEACF,CAAC;IACH;EACF;EAEA,IAAIG,sBAAsBA,CAAA,EAAG;IAC3B,OAAO,IAAI,CAAChB,kBAAkB,EAAEiB,OAAO,IAAI,CAAC;EAC9C;EAEAV,WAAWA,CAAC59C,GAAG,EAAE;IACf,IAAIA,GAAG,CAAC29C,KAAK,KAAKnmE,SAAS,EAAE;MAE3B,IAAI,CAAC8lE,aAAa,CAAC,CAAC,CAAC,EAAEiB,UAAU,GAAG;QAAE5zB,MAAM,EAAE3qB,GAAG,CAAC2qB;MAAO,CAAC,CAAC;IAC7D,CAAC,MAAM;MACL,IAAI,CAAC0yB,kBAAkB,EAAEkB,UAAU,GAAG;QACpC5zB,MAAM,EAAE3qB,GAAG,CAAC2qB,MAAM;QAClBgzB,KAAK,EAAE39C,GAAG,CAAC29C;MACb,CAAC,CAAC;IACJ;EACF;EAEAI,kBAAkBA,CAAA,EAAG;IACnB,IAAI,CAACV,kBAAkB,EAAET,eAAe,CAAC,CAAC;IAC1C,IAAI,CAACG,gBAAgB,GAAG,IAAI;EAC9B;EAEAyB,kBAAkBA,CAACC,MAAM,EAAE;IACzB,MAAM3mE,CAAC,GAAG,IAAI,CAACwlE,aAAa,CAACoB,OAAO,CAACD,MAAM,CAAC;IAC5C,IAAI3mE,CAAC,IAAI,CAAC,EAAE;MACV,IAAI,CAACwlE,aAAa,CAACxkD,MAAM,CAAChhB,CAAC,EAAE,CAAC,CAAC;IACjC;EACF;EAEA6mE,aAAaA,CAAA,EAAG;IACdvqE,MAAM,CACJ,CAAC,IAAI,CAACipE,kBAAkB,EACxB,+DACF,CAAC;IACD,MAAMuB,YAAY,GAAG,IAAI,CAAC9B,aAAa;IACvC,IAAI,CAACA,aAAa,GAAG,IAAI;IACzB,OAAO,IAAI+B,4BAA4B,CACrC,IAAI,EACJD,YAAY,EACZ,IAAI,CAAC7B,gBAAgB,EACrB,IAAI,CAACC,2BACP,CAAC;EACH;EAEA8B,cAAcA,CAACtB,KAAK,EAAEhzD,GAAG,EAAE;IACzB,IAAIA,GAAG,IAAI,IAAI,CAAC6zD,sBAAsB,EAAE;MACtC,OAAO,IAAI;IACb;IACA,MAAMI,MAAM,GAAG,IAAIM,iCAAiC,CAAC,IAAI,EAAEvB,KAAK,EAAEhzD,GAAG,CAAC;IACtE,IAAI,CAACyyD,sBAAsB,CAAC+B,gBAAgB,CAACxB,KAAK,EAAEhzD,GAAG,CAAC;IACxD,IAAI,CAAC8yD,aAAa,CAACllE,IAAI,CAACqmE,MAAM,CAAC;IAC\u002FB,OAAOA,MAAM;EACf;EAEAQ,iBAAiBA,CAAC\u002F5D,MAAM,EAAE;IACxB,IAAI,CAACm4D,kBAAkB,EAAE3rC,MAAM,CAACxsB,MAAM,CAAC;IAEvC,KAAK,MAAMu5D,MAAM,IAAI,IAAI,CAACnB,aAAa,CAACp\u002FD,KAAK,CAAC,CAAC,CAAC,EAAE;MAChDugE,MAAM,CAAC\u002FsC,MAAM,CAACxsB,MAAM,CAAC;IACvB;IACA,IAAI,CAAC+3D,sBAAsB,CAACh4D,KAAK,CAAC,CAAC;EACrC;AACF;AAGA,MAAM45D,4BAA4B,CAAC;EACjCloE,WAAWA,CACT65C,MAAM,EACNouB,YAAY,EACZhC,eAAe,GAAG,KAAK,EACvBC,0BAA0B,GAAG,IAAI,EACjC;IACA,IAAI,CAACqC,OAAO,GAAG1uB,MAAM;IACrB,IAAI,CAAC2uB,KAAK,GAAGvC,eAAe,IAAI,KAAK;IACrC,IAAI,CAACwC,SAAS,GAAGh2D,SAAS,CAACyzD,0BAA0B,CAAC,GAClDA,0BAA0B,GAC1B,IAAI;IACR,IAAI,CAACC,aAAa,GAAG8B,YAAY,IAAI,EAAE;IACvC,IAAI,CAACN,OAAO,GAAG,CAAC;IAChB,KAAK,MAAMpmE,KAAK,IAAI,IAAI,CAAC4kE,aAAa,EAAE;MACtC,IAAI,CAACwB,OAAO,IAAIpmE,KAAK,CAAC+tC,UAAU;IAClC;IACA,IAAI,CAACo5B,SAAS,GAAG,EAAE;IACnB,IAAI,CAACC,aAAa,GAAGl5D,OAAO,CAACC,OAAO,CAAC,CAAC;IACtCmqC,MAAM,CAAC6sB,kBAAkB,GAAG,IAAI;IAEhC,IAAI,CAACkB,UAAU,GAAG,IAAI;EACxB;EAEAN,QAAQA,CAAC\u002FlE,KAAK,EAAE;IACd,IAAI,IAAI,CAACinE,KAAK,EAAE;MACd;IACF;IACA,IAAI,IAAI,CAACE,SAAS,CAACrqE,MAAM,GAAG,CAAC,EAAE;MAC7B,MAAMuqE,iBAAiB,GAAG,IAAI,CAACF,SAAS,CAACh0B,KAAK,CAAC,CAAC;MAChDk0B,iBAAiB,CAACl5D,OAAO,CAAC;QAAEtQ,KAAK,EAAEmC,KAAK;QAAEizC,IAAI,EAAE;MAAM,CAAC,CAAC;IAC1D,CAAC,MAAM;MACL,IAAI,CAAC2xB,aAAa,CAAC1kE,IAAI,CAACF,KAAK,CAAC;IAChC;IACA,IAAI,CAAComE,OAAO,IAAIpmE,KAAK,CAAC+tC,UAAU;EAClC;EAEA,IAAIu5B,YAAYA,CAAA,EAAG;IACjB,OAAO,IAAI,CAACF,aAAa;EAC3B;EAEA,IAAIj2D,QAAQA,CAAA,EAAG;IACb,OAAO,IAAI,CAAC+1D,SAAS;EACvB;EAEA,IAAIK,gBAAgBA,CAAA,EAAG;IACrB,OAAO,IAAI,CAACP,OAAO,CAAC\u002FB,iBAAiB;EACvC;EAEA,IAAIuC,oBAAoBA,CAAA,EAAG;IACzB,OAAO,IAAI,CAACR,OAAO,CAAChC,qBAAqB;EAC3C;EAEA,IAAIyC,aAAaA,CAAA,EAAG;IAClB,OAAO,IAAI,CAACT,OAAO,CAAC9B,cAAc;EACpC;EAEA,MAAMwC,IAAIA,CAAA,EAAG;IACX,IAAI,IAAI,CAAC9C,aAAa,CAAC9nE,MAAM,GAAG,CAAC,EAAE;MACjC,MAAMkD,KAAK,GAAG,IAAI,CAAC4kE,aAAa,CAACzxB,KAAK,CAAC,CAAC;MACxC,OAAO;QAAEt1C,KAAK,EAAEmC,KAAK;QAAEizC,IAAI,EAAE;MAAM,CAAC;IACtC;IACA,IAAI,IAAI,CAACg0B,KAAK,EAAE;MACd,OAAO;QAAEppE,KAAK,EAAEyB,SAAS;QAAE2zC,IAAI,EAAE;MAAK,CAAC;IACzC;IACA,MAAMo0B,iBAAiB,GAAGn5D,OAAO,CAACkjB,aAAa,CAAC,CAAC;IACjD,IAAI,CAAC+1C,SAAS,CAACjnE,IAAI,CAACmnE,iBAAiB,CAAC;IACtC,OAAOA,iBAAiB,CAAC9pD,OAAO;EAClC;EAEAic,MAAMA,CAACxsB,MAAM,EAAE;IACb,IAAI,CAACi6D,KAAK,GAAG,IAAI;IACjB,KAAK,MAAMI,iBAAiB,IAAI,IAAI,CAACF,SAAS,EAAE;MAC9CE,iBAAiB,CAACl5D,OAAO,CAAC;QAAEtQ,KAAK,EAAEyB,SAAS;QAAE2zC,IAAI,EAAE;MAAK,CAAC,CAAC;IAC7D;IACA,IAAI,CAACk0B,SAAS,CAACrqE,MAAM,GAAG,CAAC;EAC3B;EAEA4nE,eAAeA,CAAA,EAAG;IAChB,IAAI,IAAI,CAACuC,KAAK,EAAE;MACd;IACF;IACA,IAAI,CAACA,KAAK,GAAG,IAAI;EACnB;AACF;AAGA,MAAMJ,iCAAiC,CAAC;EACtCpoE,WAAWA,CAAC65C,MAAM,EAAEgtB,KAAK,EAAEhzD,GAAG,EAAE;IAC9B,IAAI,CAAC00D,OAAO,GAAG1uB,MAAM;IACrB,IAAI,CAAC4tB,MAAM,GAAGZ,KAAK;IACnB,IAAI,CAACqC,IAAI,GAAGr1D,GAAG;IACf,IAAI,CAACs1D,YAAY,GAAG,IAAI;IACxB,IAAI,CAACT,SAAS,GAAG,EAAE;IACnB,IAAI,CAACF,KAAK,GAAG,KAAK;IAElB,IAAI,CAACZ,UAAU,GAAG,IAAI;EACxB;EAEAN,QAAQA,CAAC\u002FlE,KAAK,EAAE;IACd,IAAI,IAAI,CAACinE,KAAK,EAAE;MACd;IACF;IACA,IAAI,IAAI,CAACE,SAAS,CAACrqE,MAAM,KAAK,CAAC,EAAE;MAC\u002FB,IAAI,CAAC8qE,YAAY,GAAG5nE,KAAK;IAC3B,CAAC,MAAM;MACL,MAAM6nE,kBAAkB,GAAG,IAAI,CAACV,SAAS,CAACh0B,KAAK,CAAC,CAAC;MACjD00B,kBAAkB,CAAC15D,OAAO,CAAC;QAAEtQ,KAAK,EAAEmC,KAAK;QAAEizC,IAAI,EAAE;MAAM,CAAC,CAAC;MACzD,KAAK,MAAMo0B,iBAAiB,IAAI,IAAI,CAACF,SAAS,EAAE;QAC9CE,iBAAiB,CAACl5D,OAAO,CAAC;UAAEtQ,KAAK,EAAEyB,SAAS;UAAE2zC,IAAI,EAAE;QAAK,CAAC,CAAC;MAC7D;MACA,IAAI,CAACk0B,SAAS,CAACrqE,MAAM,GAAG,CAAC;IAC3B;IACA,IAAI,CAACmqE,KAAK,GAAG,IAAI;IACjB,IAAI,CAACD,OAAO,CAACV,kBAAkB,CAAC,IAAI,CAAC;EACvC;EAEA,IAAIkB,oBAAoBA,CAAA,EAAG;IACzB,OAAO,KAAK;EACd;EAEA,MAAME,IAAIA,CAAA,EAAG;IACX,IAAI,IAAI,CAACE,YAAY,EAAE;MACrB,MAAM5nE,KAAK,GAAG,IAAI,CAAC4nE,YAAY;MAC\u002FB,IAAI,CAACA,YAAY,GAAG,IAAI;MACxB,OAAO;QAAE\u002FpE,KAAK,EAAEmC,KAAK;QAAEizC,IAAI,EAAE;MAAM,CAAC;IACtC;IACA,IAAI,IAAI,CAACg0B,KAAK,EAAE;MACd,OAAO;QAAEppE,KAAK,EAAEyB,SAAS;QAAE2zC,IAAI,EAAE;MAAK,CAAC;IACzC;IACA,MAAMo0B,iBAAiB,GAAGn5D,OAAO,CAACkjB,aAAa,CAAC,CAAC;IACjD,IAAI,CAAC+1C,SAAS,CAACjnE,IAAI,CAACmnE,iBAAiB,CAAC;IACtC,OAAOA,iBAAiB,CAAC9pD,OAAO;EAClC;EAEAic,MAAMA,CAACxsB,MAAM,EAAE;IACb,IAAI,CAACi6D,KAAK,GAAG,IAAI;IACjB,KAAK,MAAMI,iBAAiB,IAAI,IAAI,CAACF,SAAS,EAAE;MAC9CE,iBAAiB,CAACl5D,OAAO,CAAC;QAAEtQ,KAAK,EAAEyB,SAAS;QAAE2zC,IAAI,EAAE;MAAK,CAAC,CAAC;IAC7D;IACA,IAAI,CAACk0B,SAAS,CAACrqE,MAAM,GAAG,CAAC;IACzB,IAAI,CAACkqE,OAAO,CAACV,kBAAkB,CAAC,IAAI,CAAC;EACvC;AACF;;;;;AC5SkD;AAelD,SAASwB,uCAAuCA,CAACC,kBAAkB,EAAE;EACnE,IAAIC,kBAAkB,GAAG,IAAI;EAG7B,IAAIvjB,GAAG,GAAGwjB,aAAa,CAAC,aAAa,EAAE,GAAG,CAAC,CAACr2D,IAAI,CAACm2D,kBAAkB,CAAC;EACpE,IAAItjB,GAAG,EAAE;IACPA,GAAG,GAAGA,GAAG,CAAC,CAAC,CAAC;IACZ,IAAItzC,QAAQ,GAAG+2D,cAAc,CAACzjB,GAAG,CAAC;IAClCtzC,QAAQ,GAAGlI,QAAQ,CAACkI,QAAQ,CAAC;IAC7BA,QAAQ,GAAGg3D,aAAa,CAACh3D,QAAQ,CAAC;IAClCA,QAAQ,GAAGi3D,aAAa,CAACj3D,QAAQ,CAAC;IAClC,OAAOk3D,aAAa,CAACl3D,QAAQ,CAAC;EAChC;EAKAszC,GAAG,GAAG6jB,eAAe,CAACP,kBAAkB,CAAC;EACzC,IAAItjB,GAAG,EAAE;IAEP,MAAMtzC,QAAQ,GAAGi3D,aAAa,CAAC3jB,GAAG,CAAC;IACnC,OAAO4jB,aAAa,CAACl3D,QAAQ,CAAC;EAChC;EAGAszC,GAAG,GAAGwjB,aAAa,CAAC,UAAU,EAAE,GAAG,CAAC,CAACr2D,IAAI,CAACm2D,kBAAkB,CAAC;EAC7D,IAAItjB,GAAG,EAAE;IACPA,GAAG,GAAGA,GAAG,CAAC,CAAC,CAAC;IACZ,IAAItzC,QAAQ,GAAG+2D,cAAc,CAACzjB,GAAG,CAAC;IAClCtzC,QAAQ,GAAGi3D,aAAa,CAACj3D,QAAQ,CAAC;IAClC,OAAOk3D,aAAa,CAACl3D,QAAQ,CAAC;EAChC;EAKA,SAAS82D,aAAaA,CAACM,gBAAgB,EAAEC,KAAK,EAAE;IAC9C,OAAO,IAAIp1D,MAAM,CACf,aAAa,GACXm1D,gBAAgB,GAChB,WAAW,GAGX,GAAG,GACH,kBAAkB,GAClB,GAAG,GACH,yBAAyB,GACzB,GAAG,EACLC,KACF,CAAC;EACH;EACA,SAASC,UAAUA,CAACtgE,QAAQ,EAAEtK,KAAK,EAAE;IACnC,IAAIsK,QAAQ,EAAE;MACZ,IAAI,CAAC,gBAAgB,CAACiJ,IAAI,CAACvT,KAAK,CAAC,EAAE;QACjC,OAAOA,KAAK;MACd;MACA,IAAI;QACF,MAAMuK,OAAO,GAAG,IAAIC,WAAW,CAACF,QAAQ,EAAE;UAAEG,KAAK,EAAE;QAAK,CAAC,CAAC;QAC1D,MAAMvH,MAAM,GAAGX,aAAa,CAACvC,KAAK,CAAC;QACnCA,KAAK,GAAGuK,OAAO,CAACI,MAAM,CAACzH,MAAM,CAAC;QAC9BinE,kBAAkB,GAAG,KAAK;MAC5B,CAAC,CAAC,MAAM,CAER;IACF;IACA,OAAOnqE,KAAK;EACd;EACA,SAASwqE,aAAaA,CAACxqE,KAAK,EAAE;IAC5B,IAAImqE,kBAAkB,IAAI,aAAa,CAAC52D,IAAI,CAACvT,KAAK,CAAC,EAAE;MAEnDA,KAAK,GAAG4qE,UAAU,CAAC,OAAO,EAAE5qE,KAAK,CAAC;MAClC,IAAImqE,kBAAkB,EAAE;QAEtBnqE,KAAK,GAAG4qE,UAAU,CAAC,YAAY,EAAE5qE,KAAK,CAAC;MACzC;IACF;IACA,OAAOA,KAAK;EACd;EACA,SAASyqE,eAAeA,CAACI,qBAAqB,EAAE;IAC9C,MAAMr1D,OAAO,GAAG,EAAE;IAClB,IAAIxW,KAAK;IAGT,MAAM8rE,IAAI,GAAGV,aAAa,CAAC,iCAAiC,EAAE,IAAI,CAAC;IACnE,OAAO,CAACprE,KAAK,GAAG8rE,IAAI,CAAC\u002F2D,IAAI,CAAC82D,qBAAqB,CAAC,MAAM,IAAI,EAAE;MAC1D,IAAI,GAAGnmE,CAAC,EAAEqmE,IAAI,EAAEC,IAAI,CAAC,GAAGhsE,KAAK;MAC7B0F,CAAC,GAAGgR,QAAQ,CAAChR,CAAC,EAAE,EAAE,CAAC;MACnB,IAAIA,CAAC,IAAI8Q,OAAO,EAAE;QAEhB,IAAI9Q,CAAC,KAAK,CAAC,EAAE;UACX;QACF;QACA;MACF;MACA8Q,OAAO,CAAC9Q,CAAC,CAAC,GAAG,CAACqmE,IAAI,EAAEC,IAAI,CAAC;IAC3B;IACA,MAAMC,KAAK,GAAG,EAAE;IAChB,KAAK,IAAIvmE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG8Q,OAAO,CAACvW,MAAM,EAAE,EAAEyF,CAAC,EAAE;MACvC,IAAI,EAAEA,CAAC,IAAI8Q,OAAO,CAAC,EAAE;QAEnB;MACF;MACA,IAAI,CAACu1D,IAAI,EAAEC,IAAI,CAAC,GAAGx1D,OAAO,CAAC9Q,CAAC,CAAC;MAC7BsmE,IAAI,GAAGX,cAAc,CAACW,IAAI,CAAC;MAC3B,IAAID,IAAI,EAAE;QACRC,IAAI,GAAG5\u002FD,QAAQ,CAAC4\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\u002FC,MAAM,CAACy\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\u002FE,iBAAiB,GAAG,IAAI;IAC\u002FB;IAEA,IAAI,CAACC,cAAc,GAAG+E,eAAe,IAAI,IAAI,CAAC\u002FE,cAAc;IAE5D,IAAI,CAACgC,SAAS,GAAGiD,yBAAyB,CAACN,eAAe,CAAC;IAE3D,IAAI,IAAI,CAAC5E,iBAAiB,EAAE;MAK1B,IAAI,CAACiI,QAAQ,CAACH,YAAY,CAACgB,gBAAgB,CAAC;IAC9C;IAEA,IAAI,CAAC5C,kBAAkB,CAACh9D,OAAO,CAAC,CAAC;EACnC;EAEAw\u002FD,OAAOA,CAAChwD,IAAI,EAAE;IACZ,IAAIA,IAAI,EAAE;MACR,IAAI,IAAI,CAACwpD,SAAS,CAACrqE,MAAM,GAAG,CAAC,EAAE;QAC7B,MAAMuqE,iBAAiB,GAAG,IAAI,CAACF,SAAS,CAACh0B,KAAK,CAAC,CAAC;QAChDk0B,iBAAiB,CAACl5D,OAAO,CAAC;UAAEtQ,KAAK,EAAE8f,IAAI,CAAC3d,KAAK;UAAEizC,IAAI,EAAE;QAAM,CAAC,CAAC;MAC\u002FD,CAAC,MAAM;QACL,IAAI,CAAC46B,aAAa,CAAC3tE,IAAI,CAACyd,IAAI,CAAC3d,KAAK,CAAC;MACrC;IACF;IACA,IAAI,CAACinE,KAAK,GAAG,IAAI;IACjB,IAAI,IAAI,CAAC4G,aAAa,CAAC\u002FwE,MAAM,GAAG,CAAC,EAAE;MACjC;IACF;IACA,KAAK,MAAMuqE,iBAAiB,IAAI,IAAI,CAACF,SAAS,EAAE;MAC9CE,iBAAiB,CAACl5D,OAAO,CAAC;QAAEtQ,KAAK,EAAEyB,SAAS;QAAE2zC,IAAI,EAAE;MAAK,CAAC,CAAC;IAC7D;IACA,IAAI,CAACk0B,SAAS,CAACrqE,MAAM,GAAG,CAAC;EAC3B;EAEA8wE,QAAQA,CAAC5uE,MAAM,EAAE;IACf,IAAI,CAAC8uE,YAAY,GAAG1D,mBAAmB,CAACprE,MAAM,EAAE,IAAI,CAACwuE,IAAI,CAAC;IAC1D,IAAI,CAACrC,kBAAkB,CAAC\u002F8D,MAAM,CAAC,IAAI,CAAC0\u002FD,YAAY,CAAC;IACjD,KAAK,MAAMzG,iBAAiB,IAAI,IAAI,CAACF,SAAS,EAAE;MAC9CE,iBAAiB,CAACj5D,MAAM,CAAC,IAAI,CAAC0\u002FD,YAAY,CAAC;IAC7C;IACA,IAAI,CAAC3G,SAAS,CAACrqE,MAAM,GAAG,CAAC;IACzB,IAAI,CAAC+wE,aAAa,CAAC\u002FwE,MAAM,GAAG,CAAC;EAC\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\u002FByxD,IAAI,IAAI;MAEN,IAAI,CAAC\u002FJ,cAAc,GAAG+J,IAAI,CAAC\u002FvD,IAAI;MAE\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\u002FB,MAAM,CAAC,cAAc,CAAC;AAO3C,MAAMi\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\u002FD,IAAI,CAAC,CAAConE,MAAM,EAAE\u002FsC,MAAM,CAAC+3C,OAAO,CAAC,CAAC\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\u002FCsI,MAAM,CAAC\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\u002FD,MAAM,EAAE;QAChBI,KAAK,GAAG9\u002FD,KAAK,CAAC0\u002FD,MAAM;MACtB,CAAC,MAAM,IAAI1\u002FD,KAAK,CAAC4\u002FD,OAAO,EAAE;QACxBE,KAAK,GAAG,CAAC,GAAG9\u002FD,KAAK,CAAC4\u002FD,OAAO;MAC3B;IACF;IAEA,IAAI,CAAC,CAACtD,WAAW,CAACt7D,GAAG,CAACk\u002FB,UAAU,EAAE4\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\u002F0B,0BAA0B,IACtDi1B,WAAW,KAAK\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\u002FD,OAAO;EACjD;EASAu\u002FD,iBAAiBA,CAAC;IAChBC,oBAAoB,GAAG,KAAK;IAC5BC,oBAAoB,GAAG;EACzB,CAAC,GAAG,CAAC,CAAC,EAAE;IACN,MAAMC,uBAAuB,GAAG,GAAG;IAEnC,OAAO,IAAI,CAACzF,UAAU,CAACN,cAAc,CAACl+B,cAAc,CAClD,gBAAgB,EAChB;MACEpoB,SAAS,EAAE,IAAI,CAACgqD,UAAU;MAC1BmC,oBAAoB,EAAEA,oBAAoB,KAAK,IAAI;MACnDC,oBAAoB,EAAEA,oBAAoB,KAAK;IACjD,CAAC,EACD;MACEE,aAAa,EAAED,uBAAuB;MACtC\u002F9D,IAAIA,CAAC6a,WAAW,EAAE;QAChB,OAAOA,WAAW,CAAClL,KAAK,CAAC\u002FxB,MAAM;MACjC;IACF,CACF,CAAC;EACH;EAUAqgF,cAAcA,CAAC9oD,MAAM,GAAG,CAAC,CAAC,EAAE;IAC1B,IAAI,IAAI,CAACmjD,UAAU,CAACkB,WAAW,EAAE;MAG\u002FB,OAAO,IAAI,CAAC0C,MAAM,CAAC,CAAC,CAAC59D,IAAI,CAAC22D,GAAG,IAAID,OAAO,CAACn6C,WAAW,CAACo6C,GAAG,CAAC,CAAC;IAC5D;IACA,MAAM9E,cAAc,GAAG,IAAI,CAACyN,iBAAiB,CAACzoD,MAAM,CAAC;IAErD,OAAO,IAAInmB,OAAO,CAAC,UAAUC,OAAO,EAAEC,MAAM,EAAE;MAC5C,SAAS6iE,IAAIA,CAAA,EAAG;QACd1K,MAAM,CAACmB,IAAI,CAAC,CAAC,CAAClqD,IAAI,CAAC,UAAU;UAAE3f,KAAK;UAAEo1C;QAAK,CAAC,EAAE;UAC5C,IAAIA,IAAI,EAAE;YACR9kC,OAAO,CAAC4rB,WAAW,CAAC;YACpB;UACF;UACAA,WAAW,CAACi2C,IAAI,KAAKnyE,KAAK,CAACmyE,IAAI;UAC\u002FBjyE,MAAM,CAACoyB,MAAM,CAAC4J,WAAW,CAACm3C,MAAM,EAAErzE,KAAK,CAACqzE,MAAM,CAAC;UAC\u002FCn3C,WAAW,CAAClL,KAAK,CAAC3uB,IAAI,CAAC,GAAGrC,KAAK,CAACgxB,KAAK,CAAC;UACtCoiD,IAAI,CAAC,CAAC;QACR,CAAC,EAAE7iE,MAAM,CAAC;MACZ;MAEA,MAAMm4D,MAAM,GAAG8I,cAAc,CAAC9D,SAAS,CAAC,CAAC;MACzC,MAAMxxC,WAAW,GAAG;QAClBlL,KAAK,EAAE,EAAE;QACTqiD,MAAM,EAAEnzE,MAAM,CAACiU,MAAM,CAAC,IAAI,CAAC;QAC3Bg+D,IAAI,EAAE;MACR,CAAC;MACDiB,IAAI,CAAC,CAAC;IACR,CAAC,CAAC;EACJ;EAOAmM,aAAaA,CAAA,EAAG;IACd,OAAO,IAAI,CAAC5F,UAAU,CAAC4F,aAAa,CAAC,IAAI,CAACxC,UAAU,CAAC;EACvD;EAMAyC,QAAQA,CAAA,EAAG;IACT,IAAI,CAACrG,SAAS,GAAG,IAAI;IAErB,MAAMsG,MAAM,GAAG,EAAE;IACjB,KAAK,MAAM5B,WAAW,IAAI,IAAI,CAACV,aAAa,CAACxyD,MAAM,CAAC,CAAC,EAAE;MACrD,IAAI,CAAC4zD,kBAAkB,CAAC;QACtBV,WAAW;QACX1uE,MAAM,EAAE,IAAI\u002FQ,KAAK,CAAC,qBAAqB,CAAC;QACxCshF,KAAK,EAAE;MACT,CAAC,CAAC;MAEF,IAAI7B,WAAW,CAACkB,oBAAoB,EAAE;QAEpC;MACF;MACA,KAAK,MAAMV,kBAAkB,IAAIR,WAAW,CAACO,WAAW,EAAE;QACxDqB,MAAM,CAACp9E,IAAI,CAACg8E,kBAAkB,CAACsB,SAAS,CAAC;QACzCtB,kBAAkB,CAAC1iD,MAAM,CAAC,CAAC;MAC7B;IACF;IACA,IAAI,CAACyb,IAAI,CAACxsB,KAAK,CAAC,CAAC;IACjB,IAAI,CAAC,CAACiyD,cAAc,GAAG,KAAK;IAE5B,OAAOxsE,OAAO,CAACykB,GAAG,CAAC2qD,MAAM,CAAC;EAC5B;EASApK,OAAOA,CAACuK,UAAU,GAAG,KAAK,EAAE;IAC1B,IAAI,CAAC,CAAC\u002FC,cAAc,GAAG,IAAI;IAC3B,MAAMngC,OAAO,GAAG,IAAI,CAAC,CAAC4hC,UAAU,CAAC,CAAC;IAElC,IAAIsB,UAAU,IAAIljC,OAAO,EAAE;MACzB,IAAI,CAACugC,MAAM,KAAK,IAAIhpE,SAAS,CAAC,CAAC;IACjC;IACA,OAAOyoC,OAAO;EAChB;EAMA,CAAC4hC,UAAUuB,CAAA,EAAG;IACZ,IAAI,CAAC,IAAI,CAAC,CAAChD,cAAc,IAAI,IAAI,CAAC1D,SAAS,EAAE;MAC3C,OAAO,KAAK;IACd;IACA,KAAK,MAAM;MAAEiF,WAAW;MAAE5zB;IAAa,CAAC,IAAI,IAAI,CAAC2yB,aAAa,CAACxyD,MAAM,CAAC,CAAC,EAAE;MACvE,IAAIyzD,WAAW,CAAC\u002F8D,IAAI,GAAG,CAAC,IAAI,CAACmpC,YAAY,CAACyzB,SAAS,EAAE;QACnD,OAAO,KAAK;MACd;IACF;IACA,IAAI,CAACd,aAAa,CAACvyD,KAAK,CAAC,CAAC;IAC1B,IAAI,CAACwsB,IAAI,CAACxsB,KAAK,CAAC,CAAC;IACjB,IAAI,CAAC,CAACiyD,cAAc,GAAG,KAAK;IAC5B,OAAO,IAAI;EACb;EAKAiD,gBAAgBA,CAACnoB,YAAY,EAAEuC,QAAQ,EAAE;IACvC,MAAM2jB,WAAW,GAAG,IAAI,CAACV,aAAa,CAAC1wE,GAAG,CAACytD,QAAQ,CAAC;IACpD,IAAI,CAAC2jB,WAAW,EAAE;MAChB;IACF;IACA,IAAI,CAACZ,MAAM,EAAE1oE,OAAO,CAAC,cAAc,CAAC;IAIpCspE,WAAW,CAACG,sBAAsB,EAAE1tE,OAAO,CAACqnD,YAAY,CAAC;EAC3D;EAKAooB,gBAAgBA,CAACC,iBAAiB,EAAEnC,WAAW,EAAE;IAE\u002FC,KAAK,IAAI97E,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAGk1E,iBAAiB,CAAC\u002FgF,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,EAAE,EAAE;MAC1D87E,WAAW,CAACrzB,YAAY,CAAC4N,OAAO,CAAC\u002F1D,IAAI,CAAC29E,iBAAiB,CAAC5nB,OAAO,CAACr2D,CAAC,CAAC,CAAC;MACnE87E,WAAW,CAACrzB,YAAY,CAAC2N,SAAS,CAAC91D,IAAI,CAAC29E,iBAAiB,CAAC7nB,SAAS,CAACp2D,CAAC,CAAC,CAAC;IACzE;IACA87E,WAAW,CAACrzB,YAAY,CAACyzB,SAAS,GAAG+B,iBAAiB,CAAC\u002FB,SAAS;IAChEJ,WAAW,CAACrzB,YAAY,CAAC0zB,cAAc,GAAG8B,iBAAiB,CAAC9B,cAAc;IAG1E,KAAK,MAAMG,kBAAkB,IAAIR,WAAW,CAACO,WAAW,EAAE;MACxDC,kBAAkB,CAACQ,mBAAmB,CAAC,CAAC;IAC1C;IAEA,IAAImB,iBAAiB,CAAC\u002FB,SAAS,EAAE;MAC\u002FB,IAAI,CAAC,CAACK,UAAU,CAAC,CAAC;IACpB;EACF;EAKAH,iBAAiBA,CAAC;IAChB1Z,eAAe;IACfvK,QAAQ;IACR+lB,6BAA6B;IAC7BhvC;EACF,CAAC,EAAE;IAOD,MAAM;MAAEv6B,GAAG;MAAEo6B;IAAS,CAAC,GAAGmvC,6BAA6B;IAEvD,MAAMzO,cAAc,GAAG,IAAI,CAACmI,UAAU,CAACN,cAAc,CAACl+B,cAAc,CAClE,iBAAiB,EACjB;MACEpoB,SAAS,EAAE,IAAI,CAACgqD,UAAU;MAC1B9hB,MAAM,EAAEwJ,eAAe;MACvBvK,QAAQ;MACR70C,iBAAiB,EAAE3O,GAAG;MACtBu6B;IACF,CAAC,EACDH,QACF,CAAC;IACD,MAAM43B,MAAM,GAAG8I,cAAc,CAAC9D,SAAS,CAAC,CAAC;IAEzC,MAAMmQ,WAAW,GAAG,IAAI,CAACV,aAAa,CAAC1wE,GAAG,CAACytD,QAAQ,CAAC;IACpD2jB,WAAW,CAACqC,YAAY,GAAGxX,MAAM;IAEjC,MAAM0K,IAAI,GAAGA,CAAA,KAAM;MACjB1K,MAAM,CAACmB,IAAI,CAAC,CAAC,CAAClqD,IAAI,CAChB,CAAC;QAAE3f,KAAK;QAAEo1C;MAAK,CAAC,KAAK;QACnB,IAAIA,IAAI,EAAE;UACRyoC,WAAW,CAACqC,YAAY,GAAG,IAAI;UAC\u002FB;QACF;QACA,IAAI,IAAI,CAACvG,UAAU,CAACR,SAAS,EAAE;UAC7B;QACF;QACA,IAAI,CAAC4G,gBAAgB,CAAC\u002F\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\u002FC,IAAI,CAAC,CAACwV,cAAc,GAAG,IAAIz\u002FB,cAAc,CAAC96B,EAAE,EAAEA,EAAE,GAAG,SAAS,EAAE+kD,IAAI,CAAC;MACnE,IAAI,CAAC,CAACvzD,OAAO,CAAC,CAAC;IACjB,CAAC,CAAC,CACDqtC,KAAK,CAACxuC,MAAM,IAAI;MACf,IAAI,CAAC,CAACwrC,UAAU,CAACpqC,MAAM,CACrB,IAAInS,KAAK,CAAC,mCAAmC+Q,MAAM,CAAC1O,OAAO,IAAI,CACjE,CAAC;IACH,CAAC,CAAC;EACN;EAKAmd,OAAOA,CAAA,EAAG;IACR,IAAI,CAACu7D,SAAS,GAAG,IAAI;IAGrB,IAAI,CAAC,CAACmH,SAAS,EAAExnC,SAAS,CAAC,CAAC;IAC5B,IAAI,CAAC,CAACwnC,SAAS,GAAG,IAAI;IAEtBpJ,SAAS,CAAC,CAACuJ,WAAW,CAAC1jE,MAAM,CAAC,IAAI,CAAC,CAAC8mD,IAAI,CAAC;IACzC,IAAI,CAAC,CAACA,IAAI,GAAG,IAAI;IAEjB,IAAI,CAAC,CAACwV,cAAc,EAAEz7D,OAAO,CAAC,CAAC;IAC\u002FB,IAAI,CAAC,CAACy7D,cAAc,GAAG,IAAI;EAC7B;EAMA,OAAOllE,MAAMA,CAACqiB,MAAM,EAAE;IACpB,MAAMwrD,UAAU,GAAG,IAAI,CAAC,CAACvB,WAAW,CAACh0E,GAAG,CAAC+pB,MAAM,EAAEqtC,IAAI,CAAC;IACtD,IAAIme,UAAU,EAAE;MACd,IAAIA,UAAU,CAAClI,eAAe,EAAE;QAC9B,MAAM,IAAI17E,KAAK,CACb,qDAAqD,GACnD,oEACJ,CAAC;MACH;MACA,OAAO4jF,UAAU;IACnB;IACA,OAAO,IAAI9K,SAAS,CAAC1gD,MAAM,CAAC;EAC9B;EAMA,WAAWwtC,SAASA,CAAA,EAAG;IACrB,IAAIJ,mBAAmB,CAACI,SAAS,EAAE;MACjC,OAAOJ,mBAAmB,CAACI,SAAS;IACtC;IACA,MAAM,IAAI5lE,KAAK,CAAC,+CAA+C,CAAC;EAClE;EAEA,WAAW,CAACkjF,8BAA8BW,CAAA,EAAG;IAC3C,IAAI;MACF,OAAO79E,UAAU,CAAC89E,WAAW,EAAEL,oBAAoB,IAAI,IAAI;IAC7D,CAAC,CAAC,MAAM;MACN,OAAO,IAAI;IACb;EACF;EAGA,WAAWD,sBAAsBA,CAAA,EAAG;IAClC,MAAMO,MAAM,GAAG,MAAAA,CAAA,KAAY;MACzB,IAAI,IAAI,CAAC,CAACb,8BAA8B,EAAE;QAExC,OAAO,IAAI,CAAC,CAACA,8BAA8B;MAC7C;MACA,MAAMrK,MAAM,GAGN;MAAA;MAAA;MAAqB,IAAI,CAACjT,SAAS,CAAC;MAC1C,OAAOiT,MAAM,CAAC4K,oBAAoB;IACpC,CAAC;IAED,OAAOhiF,MAAM,CAAC,IAAI,EAAE,wBAAwB,EAAEsiF,MAAM,CAAC,CAAC,CAAC;EACzD;AACF;AAMA,MAAMzI,eAAe,CAAC;EACpB,CAAC0I,cAAc,GAAG,IAAI\u002F1E,GAAG,CAAC,CAAC;EAE3B,CAACg2E,SAAS,GAAG,IAAIh2E,GAAG,CAAC,CAAC;EAEtB,CAACi2E,YAAY,GAAG,IAAIj2E,GAAG,CAAC,CAAC;EAEzB,CAACk2E,YAAY,GAAG,IAAIl2E,GAAG,CAAC,CAAC;EAEzB,CAACm2E,kBAAkB,GAAG,IAAI;EAE1B5hF,WAAWA,CAACy4E,cAAc,EAAEkD,WAAW,EAAEjD,aAAa,EAAE9iD,MAAM,EAAEisD,OAAO,EAAE;IACvE,IAAI,CAACpJ,cAAc,GAAGA,cAAc;IACpC,IAAI,CAACkD,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACrmB,UAAU,GAAG,IAAIwb,UAAU,CAAC,CAAC;IAClC,IAAI,CAACgR,UAAU,GAAG,IAAI9vC,UAAU,CAAC;MAC\u002FBE,aAAa,EAAEtc,MAAM,CAACsc,aAAa;MACnCC,YAAY,EAAEvc,MAAM,CAACuc;IACvB,CAAC,CAAC;IACF,IAAI,CAACmmC,aAAa,GAAG1iD,MAAM,CAAC0iD,aAAa;IACzC,IAAI,CAACyJ,OAAO,GAAGnsD,MAAM;IAErB,IAAI,CAAC85B,aAAa,GAAGmyB,OAAO,CAACnyB,aAAa;IAC1C,IAAI,CAACnqC,aAAa,GAAGs8D,OAAO,CAACt8D,aAAa;IAC1C,IAAI,CAACuyD,iBAAiB,GAAG+J,OAAO,CAAC\u002FJ,iBAAiB;IAClD,IAAI,CAACC,uBAAuB,GAAG8J,OAAO,CAAC9J,uBAAuB;IAC9D,IAAI,CAACC,WAAW,GAAG6J,OAAO,CAAC7J,WAAW;IAEtC,IAAI,CAACO,SAAS,GAAG,KAAK;IACtB,IAAI,CAACyJ,iBAAiB,GAAG,IAAI;IAE7B,IAAI,CAACC,cAAc,GAAGvJ,aAAa;IACnC,IAAI,CAACwJ,WAAW,GAAG,IAAI;IACvB,IAAI,CAACC,aAAa,GAAG,IAAI;IACzB,IAAI,CAAC3G,sBAAsB,GAAG\u002FrE,OAAO,CAACkjB,aAAa,CAAC,CAAC;IAErD,IAAI,CAACyvD,mBAAmB,CAAC,CAAC;EAwB5B;EAEA,CAACC,iBAAiBC,CAACxiF,IAAI,EAAEof,IAAI,GAAG,IAAI,EAAE;IACpC,MAAMqjE,aAAa,GAAG,IAAI,CAAC,CAACf,cAAc,CAAC31E,GAAG,CAAC\u002FL,IAAI,CAAC;IACpD,IAAIyiF,aAAa,EAAE;MACjB,OAAOA,aAAa;IACtB;IACA,MAAMzjE,OAAO,GAAG,IAAI,CAAC25D,cAAc,CAACn+B,eAAe,CAACx6C,IAAI,EAAEof,IAAI,CAAC;IAE\u002FD,IAAI,CAAC,CAACsiE,cAAc,CAAC9qE,GAAG,CAAC5W,IAAI,EAAEgf,OAAO,CAAC;IACvC,OAAOA,OAAO;EAChB;EAEA,IAAI2F,iBAAiBA,CAAA,EAAG;IACtB,OAAOxlB,MAAM,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAIkxC,iBAAiB,CAAC,CAAC,CAAC;EACnE;EAEA+qC,kBAAkBA,CAChB7gB,MAAM,EACNwiB,cAAc,GAAG1uF,cAAc,CAACE,MAAM,EACtC0uF,sBAAsB,GAAG,IAAI,EAC7Bp2D,SAAS,GAAG,KAAK,EACjB67D,QAAQ,GAAG,KAAK,EAChB;IACA,IAAI3e,eAAe,GAAGp2E,mBAAmB,CAACE,OAAO;IACjD,IAAI0xF,6BAA6B,GAAGpvC,iBAAiB;IAErD,QAAQoqB,MAAM;MACZ,KAAK,KAAK;QACRwJ,eAAe,GAAGp2E,mBAAmB,CAACC,GAAG;QACzC;MACF,KAAK,SAAS;QACZ;MACF,KAAK,OAAO;QACVm2E,eAAe,GAAGp2E,mBAAmB,CAACG,KAAK;QAC3C;MACF;QACE0P,IAAI,CAAC,wCAAwC+8D,MAAM,EAAE,CAAC;IAC1D;IAEA,MAAM51C,iBAAiB,GACrBo\u002FC,eAAe,GAAGp2E,mBAAmB,CAACG,KAAK,IAC3CmvF,sBAAsB,YAAY7rC,sBAAsB,GACpD6rC,sBAAsB,GACtB,IAAI,CAACt4D,iBAAiB;IAE5B,QAAQo4D,cAAc;MACpB,KAAK1uF,cAAc,CAACC,OAAO;QACzBy1E,eAAe,IAAIp2E,mBAAmB,CAACO,mBAAmB;QAC1D;MACF,KAAKG,cAAc,CAACE,MAAM;QACxB;MACF,KAAKF,cAAc,CAACG,YAAY;QAC9Bu1E,eAAe,IAAIp2E,mBAAmB,CAACK,iBAAiB;QACxD;MACF,KAAKK,cAAc,CAACI,cAAc;QAChCs1E,eAAe,IAAIp2E,mBAAmB,CAACM,mBAAmB;QAE1DsxF,6BAA6B,GAAG56D,iBAAiB,CAAC0sB,YAAY;QAC9D;MACF;QACE7zC,IAAI,CAAC,gDAAgDu\u002FE,cAAc,EAAE,CAAC;IAC1E;IAEA,IAAIl2D,SAAS,EAAE;MACbk9C,eAAe,IAAIp2E,mBAAmB,CAACQ,UAAU;IACnD;IACA,IAAIu0F,QAAQ,EAAE;MACZ3e,eAAe,IAAIp2E,mBAAmB,CAACS,MAAM;IAC\u002FC;IAEA,MAAM;MAAE0jD,GAAG,EAAEvB,WAAW;MAAEzxC,IAAI,EAAE6jF;IAAgB,CAAC,GAC\u002FCh+D,iBAAiB,CAAC4rB,WAAW;IAE\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\u002FE,MAAM;IACrB,IAAI,CAAC\u002FwD,UAAU,GAAGA,UAAU;IAE5B,IAAI,CAAC49D,OAAO,GAAG,KAAK;IACpB,IAAI,CAACC,qBAAqB,GAAG,IAAI;IACjC,IAAI,CAACC,aAAa,GAAG,KAAK;IAC1B,IAAI,CAACC,yBAAyB,GAC5BzG,wBAAwB,KAAK,IAAI,IAAI,OAAOtnE,MAAM,KAAK,WAAW;IACpE,IAAI,CAACguE,SAAS,GAAG,KAAK;IACtB,IAAI,CAACzqC,UAAU,GAAGtqC,OAAO,CAACkjB,aAAa,CAAC,CAAC;IACzC,IAAI,CAACqjD,IAAI,GAAG,IAAI6N,UAAU,CAAC,IAAI,CAAC;IAEhC,IAAI,CAACY,YAAY,GAAG,IAAI,CAAC1pD,MAAM,CAACtf,IAAI,CAAC,IAAI,CAAC;IAC1C,IAAI,CAACipE,cAAc,GAAG,IAAI,CAACC,SAAS,CAAClpE,IAAI,CAAC,IAAI,CAAC;IAC\u002FC,IAAI,CAACmpE,kBAAkB,GAAG,IAAI,CAACC,aAAa,CAACppE,IAAI,CAAC,IAAI,CAAC;IACvD,IAAI,CAACqpE,UAAU,GAAG,IAAI,CAACC,KAAK,CAACtpE,IAAI,CAAC,IAAI,CAAC;IACvC,IAAI,CAACupE,OAAO,GAAGpvD,MAAM,CAACgnD,aAAa,CAACp+D,MAAM;EAC5C;EAEA,IAAIugE,SAASA,CAAA,EAAG;IACd,OAAO,IAAI,CAAChlC,UAAU,CAACj7B,OAAO,CAACi+B,KAAK,CAAC,YAAY,CAGjD,CAAC,CAAC;EACJ;EAEAihC,kBAAkBA,CAAC;IAAEjnB,YAAY,GAAG,KAAK;IAAExB;EAAsB,CAAC,EAAE;IAClE,IAAI,IAAI,CAACivB,SAAS,EAAE;MAClB;IACF;IACA,IAAI,IAAI,CAACQ,OAAO,EAAE;MAChB,IAAInH,kBAAkB,CAAC,CAACoG,WAAW,CAAC1gE,GAAG,CAAC,IAAI,CAACyhE,OAAO,CAAC,EAAE;QACrD,MAAM,IAAIxnF,KAAK,CACb,kEAAkE,GAChE,0DAA0D,GAC1D,yBACJ,CAAC;MACH;MACAqgF,kBAAkB,CAAC,CAACoG,WAAW,CAAC5pE,GAAG,CAAC,IAAI,CAAC2qE,OAAO,CAAC;IACnD;IAEA,IAAI,IAAI,CAAC1I,OAAO,IAAI94E,UAAU,CAACyhF,cAAc,EAAEjqD,OAAO,EAAE;MACtD,IAAI,CAACs8B,OAAO,GAAG9zD,UAAU,CAACyhF,cAAc,CAAC1xE,MAAM,CAAC,IAAI,CAAC4oE,UAAU,CAAC;MAChE,IAAI,CAAC7kB,OAAO,CAAC4tB,IAAI,CAAC,IAAI,CAACt7B,YAAY,CAAC;MACpC,IAAI,CAAC0N,OAAO,CAACQ,cAAc,GAAG,IAAI,CAACR,OAAO,CAAC6tB,iBAAiB,CAAC,CAAC;IAChE;IACA,MAAM;MAAEvI,aAAa;MAAExlE,QAAQ;MAAE5f,SAAS;MAAEgzB;IAAW,CAAC,GAAG,IAAI,CAACoL,MAAM;IAEtE,IAAI,CAACwvD,GAAG,GAAG,IAAIhwB,cAAc,CAC3BwnB,aAAa,EACb,IAAI,CAACtnB,UAAU,EACf,IAAI,CAAC9e,IAAI,EACT,IAAI,CAACkZ,aAAa,EAClB,IAAI,CAACnqC,aAAa,EAClB;MAAEgwC;IAAsB,CAAC,EACzB,IAAI,CAACE,mBAAmB,EACxB,IAAI,CAACjvC,UACP,CAAC;IACD,IAAI,CAAC4+D,GAAG,CAACtuB,YAAY,CAAC;MACpBt\u002FD,SAAS;MACT4f,QAAQ;MACR2\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\u002FB,IAAI,CAAC+H,GAAG,CAAC\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\u002FvC,MAAM,EAAErhB,IAAI,CAAC;EAC\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\u002FoD,UAAU,CAAC;MAE\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\u002FD3G,IAAI,CAAC0zD,MAAM,CAAC\u002FsD,CAAC,CACf,CAAC;IAED,IAAI2mF,UAAU,CAACtwF,MAAM,KAAK,CAAC,EAAE;MAC3B,MAAM,CAAC2wF,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,CAAC,GAAGR,UAAU,CAACntF,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;MACtD,IACEstF,OAAO,KAAKE,GAAG,IACfD,OAAO,KAAKE,GAAG,IACfL,OAAO,KAAKM,GAAG,IACfL,OAAO,KAAKM,GAAG,EACf;QAGA;MACF;IACF;IAEA,MAAM;MAAEz5E;IAAM,CAAC,GAAG,IAAI,CAACuR,SAAS;IAChC,IAAImoE,SAAS;IACb,IAAI,IAAI,CAAC,CAACtE,SAAS,EAAE;MACnB,MAAM;QAAEuC,WAAW;QAAER;MAAY,CAAC,GAAGn3E,KAAK;MAC1CA,KAAK,CAACm3E,WAAW,GAAG,CAAC;MACrBuC,SAAS,GAAG,CACV,+BAA+B,EAC\u002FB,yCAAyC,EACzC,gDAAgD,EAChD,iCAAiC\u002FB,WAAW,mBAAmBR,WAAW,IAAI,CAC\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\u002FC,OAAO,CAACriB,QAAQ,CAAC\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\u002FC\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\u002F5E,OAAO,CAAC9F,KAAK,CAAC8\u002FE,SAAS,GAAG,QAAQ;QACpC;MACF,CAAC,MAAM;QACLh6E,OAAO,GAAGzM,QAAQ,CAACmH,aAAa,CAAC,OAAO,CAAC;QACzCsF,OAAO,CAACpuB,IAAI,GAAG,IAAI,CAAC8xB,IAAI,CAACg3D,QAAQ,GAAG,UAAU,GAAG,MAAM;QACvD16D,OAAO,CAAC5D,YAAY,CAAC,OAAO,EAAEq9E,oBAAoB,IAAI35D,WAAW,CAAC;QAClE,IAAI,IAAI,CAACpc,IAAI,CAACq2E,WAAW,EAAE;UACzB\u002F5E,OAAO,CAAC9F,KAAK,CAAC+\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\u002FB,IAAI,CAACwoF,WAAW,CAACl\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\u002FC,mBAAmB,CAAC,OAAO,EAAE0\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\u002FG,KAAK,EAAE;YACX,OAAOm0E,aAAa,CAAC\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\u002FC,MAAMitE,WAAW,GAAGx\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\u002FC8kF,QAAQ,CAAC1\u002FD,WAAW,GAAG4+D,IAAI;QAC3B1rD,OAAO,CAACl4B,MAAM,CAAC0kF,QAAQ,CAAC;MAC1B;MACA,IAAI,CAAC\u002FzE,SAAS,CAAC3Q,MAAM,CAACk4B,OAAO,CAAC;IAChC;IAEA,IAAI,CAAC,IAAI,CAACtvB,IAAI,CAACotB,QAAQ,IAAI,IAAI,CAAC4\u002FC,YAAY,EAAE;MAC5C,IAAI,CAACuD,YAAY,CAAC,CAAC;IACrB;IAEA,IAAI,CAACiB,kBAAkB,CAAC,CAAC;IAEzB,OAAO,IAAI,CAACzpE,SAAS;EACvB;AACF;AAEA,MAAM8iE,qBAAqB,SAASa,iBAAiB,CAAC;EACpD,CAACsP,IAAI,GAAG,IAAI;EAEZl6F,WAAWA,CAAC8gC,UAAU,EAAE;IACtB,KAAK,CAACA,UAAU,EAAE;MAAEkqD,YAAY,EAAE,IAAI;MAAEC,YAAY,EAAE;IAAK,CAAC,CAAC;EAC\u002FD;EAEA\u002FwE,MAAMA,CAAA,EAAG;IACP,IAAI,CAAC+M,SAAS,CAAC7M,SAAS,CAACC,GAAG,CAAC,gBAAgB,CAAC;IAK9C,MAAM;MAAE6E,IAAI;MAAE7N,KAAK;MAAEC;IAAO,CAAC,GAAG,IAAI;IACpC,MAAMiN,GAAG,GAAG,IAAI,CAAC+sE,UAAU,CAAC\u002F3E,MAAM,CAChClC,KAAK,EACLC,MAAM,EACiB,IACzB,CAAC;IAID,MAAM4oF,IAAI,GAAI,IAAI,CAAC,CAACA,IAAI,GAAG,IAAI,CAAC5O,UAAU,CAACp1E,aAAa,CAAC,UAAU,CAAE;IACrEgkF,IAAI,CAACtiF,YAAY,CAAC,IAAI,EAAEsH,IAAI,CAACvZ,IAAI,CAAC,CAAC,CAAC,GAAGuZ,IAAI,CAAC+7E,eAAe,CAAC,CAAC,CAAC,CAAC;IAC\u002FDf,IAAI,CAACtiF,YAAY,CAAC,IAAI,EAAEsH,IAAI,CAACvZ,IAAI,CAAC,CAAC,CAAC,GAAGuZ,IAAI,CAAC+7E,eAAe,CAAC,CAAC,CAAC,CAAC;IAC\u002FDf,IAAI,CAACtiF,YAAY,CAAC,IAAI,EAAEsH,IAAI,CAACvZ,IAAI,CAAC,CAAC,CAAC,GAAGuZ,IAAI,CAAC+7E,eAAe,CAAC,CAAC,CAAC,CAAC;IAC\u002FDf,IAAI,CAACtiF,YAAY,CAAC,IAAI,EAAEsH,IAAI,CAACvZ,IAAI,CAAC,CAAC,CAAC,GAAGuZ,IAAI,CAAC+7E,eAAe,CAAC,CAAC,CAAC,CAAC;IAG\u002FDf,IAAI,CAACtiF,YAAY,CAAC,cAAc,EAAEsH,IAAI,CAAC0tE,WAAW,CAACv7E,KAAK,IAAI,CAAC,CAAC;IAC9D6oF,IAAI,CAACtiF,YAAY,CAAC,QAAQ,EAAE,aAAa,CAAC;IAC1CsiF,IAAI,CAACtiF,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC;IAExC2G,GAAG,CAACjI,MAAM,CAAC4jF,IAAI,CAAC;IAChB,IAAI,CAACjzE,SAAS,CAAC3Q,MAAM,CAACiI,GAAG,CAAC;IAI1B,IAAI,CAACW,IAAI,CAACotB,QAAQ,IAAI,IAAI,CAAC4\u002FC,YAAY,EAAE;MACvC,IAAI,CAACuD,YAAY,CAAC,CAAC;IACrB;IAEA,OAAO,IAAI,CAACxoE,SAAS;EACvB;EAEAspE,yBAAyBA,CAAA,EAAG;IAC1B,OAAO,IAAI,CAAC,CAAC2J,IAAI;EACnB;EAEA1J,gBAAgBA,CAAA,EAAG;IACjB,IAAI,CAACvpE,SAAS,CAAC7M,SAAS,CAACC,GAAG,CAAC,eAAe,CAAC;EAC\u002FC;AACF;AAEA,MAAM2vE,uBAAuB,SAASY,iBAAiB,CAAC;EACtD,CAACsQ,MAAM,GAAG,IAAI;EAEdl7F,WAAWA,CAAC8gC,UAAU,EAAE;IACtB,KAAK,CAACA,UAAU,EAAE;MAAEkqD,YAAY,EAAE,IAAI;MAAEC,YAAY,EAAE;IAAK,CAAC,CAAC;EAC\u002FD;EAEA\u002FwE,MAAMA,CAAA,EAAG;IACP,IAAI,CAAC+M,SAAS,CAAC7M,SAAS,CAACC,GAAG,CAAC,kBAAkB,CAAC;IAKhD,MAAM;MAAE6E,IAAI;MAAE7N,KAAK;MAAEC;IAAO,CAAC,GAAG,IAAI;IACpC,MAAMiN,GAAG,GAAG,IAAI,CAAC+sE,UAAU,CAAC\u002F3E,MAAM,CAChClC,KAAK,EACLC,MAAM,EACiB,IACzB,CAAC;IAKD,MAAMu7E,WAAW,GAAG3tE,IAAI,CAAC0tE,WAAW,CAACv7E,KAAK;IAC1C,MAAM6pF,MAAM,GAAI,IAAI,CAAC,CAACA,MAAM,GAAG,IAAI,CAAC5P,UAAU,CAACp1E,aAAa,CAAC,UAAU,CAAE;IACzEglF,MAAM,CAACtjF,YAAY,CAAC,GAAG,EAAEi1E,WAAW,GAAG,CAAC,CAAC;IACzCqO,MAAM,CAACtjF,YAAY,CAAC,GAAG,EAAEi1E,WAAW,GAAG,CAAC,CAAC;IACzCqO,MAAM,CAACtjF,YAAY,CAAC,OAAO,EAAEvG,KAAK,GAAGw7E,WAAW,CAAC;IACjDqO,MAAM,CAACtjF,YAAY,CAAC,QAAQ,EAAEtG,MAAM,GAAGu7E,WAAW,CAAC;IAGnDqO,MAAM,CAACtjF,YAAY,CAAC,cAAc,EAAEi1E,WAAW,IAAI,CAAC,CAAC;IACrDqO,MAAM,CAACtjF,YAAY,CAAC,QAAQ,EAAE,aAAa,CAAC;IAC5CsjF,MAAM,CAACtjF,YAAY,CAAC,MAAM,EAAE,aAAa,CAAC;IAE1C2G,GAAG,CAACjI,MAAM,CAAC4kF,MAAM,CAAC;IAClB,IAAI,CAACj0E,SAAS,CAAC3Q,MAAM,CAACiI,GAAG,CAAC;IAI1B,IAAI,CAACW,IAAI,CAACotB,QAAQ,IAAI,IAAI,CAAC4\u002FC,YAAY,EAAE;MACvC,IAAI,CAACuD,YAAY,CAAC,CAAC;IACrB;IAEA,OAAO,IAAI,CAACxoE,SAAS;EACvB;EAEAspE,yBAAyBA,CAAA,EAAG;IAC1B,OAAO,IAAI,CAAC,CAAC2K,MAAM;EACrB;EAEA1K,gBAAgBA,CAAA,EAAG;IACjB,IAAI,CAACvpE,SAAS,CAAC7M,SAAS,CAACC,GAAG,CAAC,eAAe,CAAC;EAC\u002FC;AACF;AAEA,MAAM4vE,uBAAuB,SAASW,iBAAiB,CAAC;EACtD,CAACuQ,MAAM,GAAG,IAAI;EAEdn7F,WAAWA,CAAC8gC,UAAU,EAAE;IACtB,KAAK,CAACA,UAAU,EAAE;MAAEkqD,YAAY,EAAE,IAAI;MAAEC,YAAY,EAAE;IAAK,CAAC,CAAC;EAC\u002FD;EAEA\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\u002FD;EAEA\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\u002FE,MAAM,CAAC;MAC1B;MAEA,MAAMk\u002FE,kBAAkB,GAAG,IAAI,CAAC,CAACvB,mBAAmB,CAACtwF,GAAG,CAACqS,EAAE,CAAC;MAC5D,IAAI,CAACw\u002FE,kBAAkB,EAAE;QACvB;MACF;MACA,IAAIA,kBAAkB,CAACC,YAAY,EAAE;QAEnC,IAAI,CAACrB,0BAA0B,EAAExjE,gBAAgB,CAC\u002FC5a,EAAE,EACF1C,OAAO,CAAC0C,EAAE,EACVM,MACF,CAAC;QACDk\u002FE,kBAAkB,CAACC,YAAY,GAAG,KAAK;MACzC,CAAC,MAAM;QACLD,kBAAkB,CAACl\u002FE,MAAM,GAAGA,MAAM;MACpC;IACF;IACA,IAAI,CAAC,CAACi3C,mBAAmB,CAACzrC,KAAK,CAAC,CAAC;EACnC;EAEA4zE,sBAAsBA,CAAA,EAAG;IACvB,OAAOh6F,KAAK,CAACC,IAAI,CAAC,IAAI,CAAC,CAACs4F,mBAAmB,CAACpyE,MAAM,CAAC,CAAC,CAAC;EACvD;EAEA8zE,qBAAqBA,CAAC3\u002FE,EAAE,EAAE;IACxB,OAAO,IAAI,CAAC,CAACi+E,mBAAmB,CAACtwF,GAAG,CAACqS,EAAE,CAAC;EAC1C;EAKA,WAAWo\u002FE,mBAAmBA,CAAA,EAAG;IAC\u002FB,OAAOr+F,MAAM,CACX,IAAI,EACJ,qBAAqB,EACrBK,MAAM,CAACsa,MAAM,CAAC;MACZvI,KAAK,EAAE,CAAC;MACRysF,QAAQ,EAAE,CAAC;MACXpoF,KAAK,EAAE9gB,yBAAyB,CAACC,KAAK;MACtCslE,SAAS,EAAE,CAAC,CAAC,CAAC;MACd4yB,sBAAsB,EAAE,CAAC;MACzBE,oBAAoB,EAAE;IACxB,CAAC,CACH,CAAC;EACH;AACF;;;;;;;AC9vG8B;AAC0C;AACzB;AACoB;AAEnE,MAAM8Q,WAAW,GAAG,WAAW;AAK\u002FB,MAAMC,cAAc,SAASt\u002FD,gBAAgB,CAAC;EAC5C,CAAC9oB,KAAK;EAEN,CAAC44B,OAAO,GAAG,EAAE;EAEb,CAACyvD,WAAW,GAAG,GAAG,IAAI,CAAC\u002F\u002FE,EAAE,SAAS;EAElC,CAACggF,UAAU,GAAG,IAAI;EAElB,CAACjtC,QAAQ;EAET,OAAOktC,uBAAuB,GAAG,EAAE;EAEnC,OAAOC,gBAAgB,GAAG,CAAC;EAE3B,OAAOC,aAAa,GAAG,IAAI;EAE3B,OAAOC,gBAAgB,GAAG,EAAE;EAE5B,WAAWh3E,gBAAgBA,CAAA,EAAG;IAC5B,MAAMC,KAAK,GAAGy2E,cAAc,CAACj+F,SAAS;IAEtC,MAAMynB,YAAY,GAAGlE,IAAI,IAAIA,IAAI,CAACsD,OAAO,CAAC,CAAC;IAE3C,MAAMsB,KAAK,GAAG\u002FD,yBAAyB,CAACiD,eAAe;IACvD,MAAMe,GAAG,GAAGhE,yBAAyB,CAACkD,aAAa;IAEnD,OAAOpoB,MAAM,CACX,IAAI,EACJ,kBAAkB,EAClB,IAAIujB,eAAe,CAAC,CAClB,CAIE,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,CAAC,EAChD+E,KAAK,CAAC2E,cAAc,EACpB;MAAE1I,OAAO,EAAE;IAAK,CAAC,CAClB,EACD,CACE,CAAC,YAAY,EAAE,gBAAgB,EAAE,QAAQ,EAAE,YAAY,CAAC,EACxD+D,KAAK,CAAC2E,cAAc,CACrB,EACD,CACE,CAAC,WAAW,EAAE,eAAe,CAAC,EAC9B3E,KAAK,CAACg3E,eAAe,EACrB;MAAE5xF,IAAI,EAAE,CAAC,CAACub,KAAK,EAAE,CAAC,CAAC;MAAEzE,OAAO,EAAE+D;IAAa,CAAC,CAC7C,EACD,CACE,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,EACzCD,KAAK,CAACg3E,eAAe,EACrB;MAAE5xF,IAAI,EAAE,CAAC,CAACwb,GAAG,EAAE,CAAC,CAAC;MAAE1E,OAAO,EAAE+D;IAAa,CAAC,CAC3C,EACD,CACE,CAAC,YAAY,EAAE,gBAAgB,CAAC,EAChCD,KAAK,CAACg3E,eAAe,EACrB;MAAE5xF,IAAI,EAAE,CAACub,KAAK,EAAE,CAAC,CAAC;MAAEzE,OAAO,EAAE+D;IAAa,CAAC,CAC5C,EACD,CACE,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,EAC3CD,KAAK,CAACg3E,eAAe,EACrB;MAAE5xF,IAAI,EAAE,CAACwb,GAAG,EAAE,CAAC,CAAC;MAAE1E,OAAO,EAAE+D;IAAa,CAAC,CAC1C,EACD,CACE,CAAC,SAAS,EAAE,aAAa,CAAC,EAC1BD,KAAK,CAACg3E,eAAe,EACrB;MAAE5xF,IAAI,EAAE,CAAC,CAAC,EAAE,CAACub,KAAK,CAAC;MAAEzE,OAAO,EAAE+D;IAAa,CAAC,CAC7C,EACD,CACE,CAAC,cAAc,EAAE,mBAAmB,CAAC,EACrCD,KAAK,CAACg3E,eAAe,EACrB;MAAE5xF,IAAI,EAAE,CAAC,CAAC,EAAE,CAACwb,GAAG,CAAC;MAAE1E,OAAO,EAAE+D;IAAa,CAAC,CAC3C,EACD,CACE,CAAC,WAAW,EAAE,eAAe,CAAC,EAC9BD,KAAK,CAACg3E,eAAe,EACrB;MAAE5xF,IAAI,EAAE,CAAC,CAAC,EAAEub,KAAK,CAAC;MAAEzE,OAAO,EAAE+D;IAAa,CAAC,CAC5C,EACD,CACE,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,EACzCD,KAAK,CAACg3E,eAAe,EACrB;MAAE5xF,IAAI,EAAE,CAAC,CAAC,EAAEwb,GAAG,CAAC;MAAE1E,OAAO,EAAE+D;IAAa,CAAC,CAC1C,CACF,CACH,CAAC;EACH;EAEA,OAAOga,KAAK,GAAG,UAAU;EAEzB,OAAO0M,WAAW,GAAGz\u002FC,oBAAoB,CAACE,QAAQ;EAElDqR,WAAWA,CAAC41B,MAAM,EAAE;IAClB,KAAK,CAAC;MAAE,GAAGA,MAAM;MAAE91B,IAAI,EAAE;IAAiB,CAAC,CAAC;IAC5C,IAAI,CAAC,CAAC8V,KAAK,GACTggB,MAAM,CAAChgB,KAAK,IACZooF,cAAc,CAACK,aAAa,IAC5B3\u002FD,gBAAgB,CAACgD,iBAAiB;IACpC,IAAI,CAAC,CAACuvB,QAAQ,GAAGr7B,MAAM,CAACq7B,QAAQ,IAAI+sC,cAAc,CAACM,gBAAgB;EACrE;EAGA,OAAOtkE,UAAUA,CAACC,IAAI,EAAE\u002Fc,SAAS,EAAE;IACjCwhB,gBAAgB,CAAC1E,UAAU,CAACC,IAAI,EAAE\u002Fc,SAAS,CAAC;IAC5C,MAAMxH,KAAK,GAAGe,gBAAgB,CAAC1H,QAAQ,CAACszB,eAAe,CAAC;IAYxD,IAAI,CAAC+7D,gBAAgB,GAAG97D,UAAU,CAChC5sB,KAAK,CAAC6sB,gBAAgB,CAAC,oBAAoB,CAC7C,CAAC;EACH;EAGA,OAAO\u002FO,mBAAmBA,CAACpmC,IAAI,EAAEgS,KAAK,EAAE;IACtC,QAAQhS,IAAI;MACV,KAAK4B,0BAA0B,CAACG,aAAa;QAC3C6uG,cAAc,CAACM,gBAAgB,GAAGl\u002FF,KAAK;QACvC;MACF,KAAKpQ,0BAA0B,CAACI,cAAc;QAC5C4uG,cAAc,CAACK,aAAa,GAAGj\u002FF,KAAK;QACpC;IACJ;EACF;EAGAkqB,YAAYA,CAACl8B,IAAI,EAAEgS,KAAK,EAAE;IACxB,QAAQhS,IAAI;MACV,KAAK4B,0BAA0B,CAACG,aAAa;QAC3C,IAAI,CAAC,CAACqvG,cAAc,CAACp\u002FF,KAAK,CAAC;QAC3B;MACF,KAAKpQ,0BAA0B,CAACI,cAAc;QAC5C,IAAI,CAAC,CAACkkC,WAAW,CAACl0B,KAAK,CAAC;QACxB;IACJ;EACF;EAGA,WAAW4yB,yBAAyBA,CAAA,EAAG;IACrC,OAAO,CACL,CACEhjC,0BAA0B,CAACG,aAAa,EACxC6uG,cAAc,CAACM,gBAAgB,CAChC,EACD,CACEtvG,0BAA0B,CAACI,cAAc,EACzC4uG,cAAc,CAACK,aAAa,IAAI3\u002FD,gBAAgB,CAACgD,iBAAiB,CACnE,CACF;EACH;EAGA,IAAIxM,kBAAkBA,CAAA,EAAG;IACvB,OAAO,CACL,CAAClmC,0BAA0B,CAACG,aAAa,EAAE,IAAI,CAAC,CAAC8hE,QAAQ,CAAC,EAC1D,CAACjiE,0BAA0B,CAACI,cAAc,EAAE,IAAI,CAAC,CAACwmB,KAAK,CAAC,CACzD;EACH;EAMA,CAAC4oF,cAAcC,CAACxtC,QAAQ,EAAE;IACxB,MAAMytC,WAAW,GAAGj+E,IAAI,IAAI;MAC1B,IAAI,CAACk+E,SAAS,CAACjpF,KAAK,CAACu7C,QAAQ,GAAG,QAAQxwC,IAAI,iCAAiC;MAC7E,IAAI,CAACmjB,SAAS,CAAC,CAAC,EAAE,EAAEnjB,IAAI,GAAG,IAAI,CAAC,CAACwwC,QAAQ,CAAC,GAAG,IAAI,CAAC\u002FrB,WAAW,CAAC;MAC9D,IAAI,CAAC,CAAC+rB,QAAQ,GAAGxwC,IAAI;MACrB,IAAI,CAAC,CAACm+E,mBAAmB,CAAC,CAAC;IAC7B,CAAC;IACD,MAAMC,aAAa,GAAG,IAAI,CAAC,CAAC5tC,QAAQ;IACpC,IAAI,CAAC7\u002FB,WAAW,CAAC;MACfzP,GAAG,EAAE+8E,WAAW,CAACjjF,IAAI,CAAC,IAAI,EAAEw1C,QAAQ,CAAC;MACrCrvC,IAAI,EAAE88E,WAAW,CAACjjF,IAAI,CAAC,IAAI,EAAEojF,aAAa,CAAC;MAC3Ch9E,IAAI,EAAE,IAAI,CAACvH,UAAU,CAACgb,QAAQ,CAAC7Z,IAAI,CAAC,IAAI,CAACnB,UAAU,EAAE,IAAI,CAAC;MAC1DwH,QAAQ,EAAE,IAAI;MACd10B,IAAI,EAAE4B,0BAA0B,CAACG,aAAa;MAC9C6yB,mBAAmB,EAAE,IAAI;MACzBC,QAAQ,EAAE;IACZ,CAAC,CAAC;EACJ;EAMA,CAACqR,WAAWwrE,CAAClpF,KAAK,EAAE;IAClB,MAAM23E,QAAQ,GAAGwR,GAAG,IAAI;MACtB,IAAI,CAAC,CAACnpF,KAAK,GAAG,IAAI,CAAC+oF,SAAS,CAACjpF,KAAK,CAACE,KAAK,GAAGmpF,GAAG;IAChD,CAAC;IACD,MAAMC,UAAU,GAAG,IAAI,CAAC,CAACppF,KAAK;IAC9B,IAAI,CAACwb,WAAW,CAAC;MACfzP,GAAG,EAAE4rE,QAAQ,CAAC9xE,IAAI,CAAC,IAAI,EAAE7F,KAAK,CAAC;MAC\u002FBgM,IAAI,EAAE2rE,QAAQ,CAAC9xE,IAAI,CAAC,IAAI,EAAEujF,UAAU,CAAC;MACrCn9E,IAAI,EAAE,IAAI,CAACvH,UAAU,CAACgb,QAAQ,CAAC7Z,IAAI,CAAC,IAAI,CAACnB,UAAU,EAAE,IAAI,CAAC;MAC1DwH,QAAQ,EAAE,IAAI;MACd10B,IAAI,EAAE4B,0BAA0B,CAACI,cAAc;MAC\u002FC4yB,mBAAmB,EAAE,IAAI;MACzBC,QAAQ,EAAE;IACZ,CAAC,CAAC;EACJ;EAOAs8E,eAAeA,CAACv2F,CAAC,EAAEC,CAAC,EAAE;IACpB,IAAI,CAACqS,UAAU,CAACmO,wBAAwB,CAACzgB,CAAC,EAAEC,CAAC,EAAmB,IAAI,CAAC;EACvE;EAGAu9B,qBAAqBA,CAAA,EAAG;IAEtB,MAAMh1B,KAAK,GAAG,IAAI,CAAC00B,WAAW;IAC9B,OAAO,CACL,CAAC84D,cAAc,CAACI,gBAAgB,GAAG5tF,KAAK,EACxC,EAAEwtF,cAAc,CAACI,gBAAgB,GAAG,IAAI,CAAC,CAACntC,QAAQ,CAAC,GAAGzgD,KAAK,CAC5D;EACH;EAGAgnB,OAAOA,CAAA,EAAG;IACR,IAAI,CAAC,IAAI,CAAC5Z,MAAM,EAAE;MAChB;IACF;IACA,KAAK,CAAC4Z,OAAO,CAAC,CAAC;IACf,IAAI,IAAI,CAACrgB,GAAG,KAAK,IAAI,EAAE;MACrB;IACF;IAEA,IAAI,CAAC,IAAI,CAACmqB,eAAe,EAAE;MAGzB,IAAI,CAAC1jB,MAAM,CAACvD,GAAG,CAAC,IAAI,CAAC;IACvB;EACF;EAGAqxB,cAAcA,CAAA,EAAG;IACf,IAAI,CAAC,KAAK,CAACA,cAAc,CAAC,CAAC,EAAE;MAC3B,OAAO,KAAK;IACd;IAEA,IAAI,CAACuzD,UAAU,CAAC7kF,SAAS,CAACzD,MAAM,CAAC,SAAS,CAAC;IAC3C,IAAI,CAACgoF,SAAS,CAACO,eAAe,GAAG,IAAI;IACrC,IAAI,CAACx8D,YAAY,GAAG,KAAK;IACzB,IAAI,CAACvrB,GAAG,CAACkkB,eAAe,CAAC,uBAAuB,CAAC;IAQjD,IAAI,CAAC,CAAC6iE,UAAU,GAAG,IAAIhwF,eAAe,CAAC,CAAC;IACxC,MAAMC,MAAM,GAAG,IAAI,CAACmM,UAAU,CAAC4P,cAAc,CAAC,IAAI,CAAC,CAACg0E,UAAU,CAAC;IAE\u002FD,IAAI,CAACS,SAAS,CAACnwF,gBAAgB,CAC7B,SAAS,EACT,IAAI,CAAC2wF,gBAAgB,CAAC1jF,IAAI,CAAC,IAAI,CAAC,EAChC;MAAEtN;IAAO,CACX,CAAC;IACD,IAAI,CAACwwF,SAAS,CAACnwF,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC4wF,cAAc,CAAC3jF,IAAI,CAAC,IAAI,CAAC,EAAE;MACvEtN;IACF,CAAC,CAAC;IACF,IAAI,CAACwwF,SAAS,CAACnwF,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC6wF,aAAa,CAAC5jF,IAAI,CAAC,IAAI,CAAC,EAAE;MACrEtN;IACF,CAAC,CAAC;IACF,IAAI,CAACwwF,SAAS,CAACnwF,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC8wF,cAAc,CAAC7jF,IAAI,CAAC,IAAI,CAAC,EAAE;MACvEtN;IACF,CAAC,CAAC;IACF,IAAI,CAACwwF,SAAS,CAACnwF,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC+wF,cAAc,CAAC9jF,IAAI,CAAC,IAAI,CAAC,EAAE;MACvEtN;IACF,CAAC,CAAC;IAEF,OAAO,IAAI;EACb;EAGAw9B,eAAeA,CAAA,EAAG;IAChB,IAAI,CAAC,KAAK,CAACA,eAAe,CAAC,CAAC,EAAE;MAC5B,OAAO,KAAK;IACd;IAEA,IAAI,CAACszD,UAAU,CAAC7kF,SAAS,CAACC,GAAG,CAAC,SAAS,CAAC;IACxC,IAAI,CAACskF,SAAS,CAACO,eAAe,GAAG,KAAK;IACtC,IAAI,CAAC\u002FnF,GAAG,CAACS,YAAY,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAACqmF,WAAW,CAAC;IACjE,IAAI,CAACv7D,YAAY,GAAG,IAAI;IAExB,IAAI,CAAC,CAACw7D,UAAU,EAAE5vF,KAAK,CAAC,CAAC;IACzB,IAAI,CAAC,CAAC4vF,UAAU,GAAG,IAAI;IAIvB,IAAI,CAAC\u002FmF,GAAG,CAACuU,KAAK,CAAC;MACbmiB,aAAa,EAAE;IACjB,CAAC,CAAC;IAGF,IAAI,CAAClnB,SAAS,GAAG,KAAK;IACtB,IAAI,CAAC\u002FI,MAAM,CAACzG,GAAG,CAACiD,SAAS,CAACC,GAAG,CAAC,iBAAiB,CAAC;IAEhD,OAAO,IAAI;EACb;EAGA6oB,OAAOA,CAACjgB,KAAK,EAAE;IACb,IAAI,CAAC,IAAI,CAAC9H,mBAAmB,EAAE;MAC7B;IACF;IACA,KAAK,CAAC+nB,OAAO,CAACjgB,KAAK,CAAC;IACpB,IAAIA,KAAK,CAAC8E,MAAM,KAAK,IAAI,CAAC42E,SAAS,EAAE;MACnC,IAAI,CAACA,SAAS,CAACjzE,KAAK,CAAC,CAAC;IACxB;EACF;EAGA+f,SAASA,CAAC\u002Ff,KAAK,EAAE;IACf,IAAI,IAAI,CAACra,KAAK,EAAE;MAEd;IACF;IACA,IAAI,CAACq6B,cAAc,CAAC,CAAC;IACrB,IAAIhgB,KAAK,EAAE;MACT,IAAI,CAACizE,SAAS,CAACjzE,KAAK,CAAC,CAAC;IACxB;IACA,IAAI,IAAI,CAACsU,eAAe,EAAEgB,UAAU,EAAE;MACpC,IAAI,CAAC2B,MAAM,CAAC,CAAC;IACf;IACA,IAAI,CAAC3C,eAAe,GAAG,IAAI;EAC7B;EAGApZ,OAAOA,CAAA,EAAG;IACR,OAAO,CAAC,IAAI,CAAC+3E,SAAS,IAAI,IAAI,CAACA,SAAS,CAACa,SAAS,CAACltF,IAAI,CAAC,CAAC,KAAK,EAAE;EAClE;EAGAqE,MAAMA,CAAA,EAAG;IACP,IAAI,CAACgQ,SAAS,GAAG,KAAK;IACtB,IAAI,IAAI,CAAC\u002FI,MAAM,EAAE;MACf,IAAI,CAACA,MAAM,CAACiU,eAAe,CAAC,IAAI,CAAC;MACjC,IAAI,CAACjU,MAAM,CAACzG,GAAG,CAACiD,SAAS,CAACC,GAAG,CAAC,iBAAiB,CAAC;IAClD;IACA,KAAK,CAAC1D,MAAM,CAAC,CAAC;EAChB;EAMA,CAAC8oF,WAAWC,CAAA,EAAG;IAEb,MAAMp9F,MAAM,GAAG,EAAE;IACjB,IAAI,CAACq8F,SAAS,CAAC\u002FyF,SAAS,CAAC,CAAC;IAC1B,IAAI+zF,SAAS,GAAG,IAAI;IACpB,KAAK,MAAMtyD,KAAK,IAAI,IAAI,CAACsxD,SAAS,CAACiB,UAAU,EAAE;MAC7C,IAAID,SAAS,EAAEpzE,QAAQ,KAAKC,IAAI,CAACC,SAAS,IAAI4gB,KAAK,CAACqB,QAAQ,KAAK,IAAI,EAAE;QAIrE;MACF;MACApsC,MAAM,CAACb,IAAI,CAACu8F,cAAc,CAAC,CAAC6B,cAAc,CAACxyD,KAAK,CAAC,CAAC;MAClDsyD,SAAS,GAAGtyD,KAAK;IACnB;IACA,OAAO\u002FqC,MAAM,CAACZ,IAAI,CAAC,IAAI,CAAC;EAC1B;EAEA,CAACk9F,mBAAmBkB,CAAA,EAAG;IACrB,MAAM,CAAC5nE,WAAW,EAAEC,YAAY,CAAC,GAAG,IAAI,CAACkJ,gBAAgB;IAEzD,IAAI17B,IAAI;IACR,IAAI,IAAI,CAAC27B,eAAe,EAAE;MACxB37B,IAAI,GAAG,IAAI,CAACwR,GAAG,CAAC2U,qBAAqB,CAAC,CAAC;IACzC,CAAC,MAAM;MAGL,MAAM;QAAEgB,YAAY;QAAE3V;MAAI,CAAC,GAAG,IAAI;MAClC,MAAM4oF,YAAY,GAAG5oF,GAAG,CAACzB,KAAK,CAACm4E,OAAO;MACtC,MAAMmS,eAAe,GAAG7oF,GAAG,CAACiD,SAAS,CAACqN,QAAQ,CAAC,QAAQ,CAAC;MACxDtQ,GAAG,CAACiD,SAAS,CAACzD,MAAM,CAAC,QAAQ,CAAC;MAC9BQ,GAAG,CAACzB,KAAK,CAACm4E,OAAO,GAAG,QAAQ;MAC5B\u002FgE,YAAY,CAAC3V,GAAG,CAACb,MAAM,CAAC,IAAI,CAACa,GAAG,CAAC;MACjCxR,IAAI,GAAGwR,GAAG,CAAC2U,qBAAqB,CAAC,CAAC;MAClC3U,GAAG,CAACR,MAAM,CAAC,CAAC;MACZQ,GAAG,CAACzB,KAAK,CAACm4E,OAAO,GAAGkS,YAAY;MAChC5oF,GAAG,CAACiD,SAAS,CAAC2R,MAAM,CAAC,QAAQ,EAAEi0E,eAAe,CAAC;IACjD;IAIA,IAAI,IAAI,CAACvvF,QAAQ,GAAG,GAAG,KAAK,IAAI,CAACmyB,cAAc,GAAG,GAAG,EAAE;MACrD,IAAI,CAACvxB,KAAK,GAAG1L,IAAI,CAAC0L,KAAK,GAAG6mB,WAAW;MACrC,IAAI,CAAC5mB,MAAM,GAAG3L,IAAI,CAAC2L,MAAM,GAAG6mB,YAAY;IAC1C,CAAC,MAAM;MACL,IAAI,CAAC9mB,KAAK,GAAG1L,IAAI,CAAC2L,MAAM,GAAG4mB,WAAW;MACtC,IAAI,CAAC5mB,MAAM,GAAG3L,IAAI,CAAC0L,KAAK,GAAG8mB,YAAY;IACzC;IACA,IAAI,CAAC0K,iBAAiB,CAAC,CAAC;EAC1B;EAMA3M,MAAMA,CAAA,EAAG;IACP,IAAI,CAAC,IAAI,CAACqJ,YAAY,CAAC,CAAC,EAAE;MACxB;IACF;IAEA,KAAK,CAACrJ,MAAM,CAAC,CAAC;IACd,IAAI,CAACyV,eAAe,CAAC,CAAC;IACtB,MAAMs0D,SAAS,GAAG,IAAI,CAAC,CAACzxD,OAAO;IAC\u002FB,MAAM0xD,OAAO,GAAI,IAAI,CAAC,CAAC1xD,OAAO,GAAG,IAAI,CAAC,CAACixD,WAAW,CAAC,CAAC,CAACU,OAAO,CAAC,CAAE;IAC\u002FD,IAAIF,SAAS,KAAKC,OAAO,EAAE;MACzB;IACF;IAEA,MAAME,OAAO,GAAG5wF,IAAI,IAAI;MACtB,IAAI,CAAC,CAACg\u002FB,OAAO,GAAGh\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\u002FD,IAAI,CAAC+mF,SAAS,CAAC\u002FmF,YAAY,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IACjE,IAAI,CAACm2B,aAAa,CAAC,CAAC;IAEpB,IAAI,CAAC4wD,SAAS,CAACO,eAAe,GAAG,IAAI;IAErC,MAAM;MAAExpF;IAAM,CAAC,GAAG,IAAI,CAACipF,SAAS;IAChCjpF,KAAK,CAACu7C,QAAQ,GAAG,QAAQ,IAAI,CAAC,CAACA,QAAQ,iCAAiC;IACxEv7C,KAAK,CAACE,KAAK,GAAG,IAAI,CAAC,CAACA,KAAK;IAEzB,IAAI,CAACuB,GAAG,CAACb,MAAM,CAAC,IAAI,CAACqoF,SAAS,CAAC;IAE\u002FB,IAAI,CAACM,UAAU,GAAGlwF,QAAQ,CAACmH,aAAa,CAAC,KAAK,CAAC;IAC\u002FC,IAAI,CAAC+oF,UAAU,CAAC7kF,SAAS,CAACC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC;IACnD,IAAI,CAAClD,GAAG,CAACb,MAAM,CAAC,IAAI,CAAC2oF,UAAU,CAAC;IAEhC,IAAI,IAAI,CAACn\u002FD,OAAO,IAAI,IAAI,CAAC\u002FM,mBAAmB,EAAE;MAE5C,MAAM,CAACmF,WAAW,EAAEC,YAAY,CAAC,GAAG,IAAI,CAACkJ,gBAAgB;MACzD,IAAI,IAAI,CAACtO,mBAAmB,EAAE;QAU5B,MAAM;UAAErY;QAAS,CAAC,GAAG,IAAI,CAACulB,YAAY;QACtC,IAAI,CAAC5I,EAAE,EAAEC,EAAE,CAAC,GAAG,IAAI,CAACkO,qBAAqB,CAAC,CAAC;QAC3C,CAACnO,EAAE,EAAEC,EAAE,CAAC,GAAG,IAAI,CAACyN,uBAAuB,CAAC1N,EAAE,EAAEC,EAAE,CAAC;QAC\u002FC,MAAM,CAAC7lB,SAAS,EAAEC,UAAU,CAAC,GAAG,IAAI,CAACyvB,cAAc;QACnD,MAAM,CAACxvB,KAAK,EAAEC,KAAK,CAAC,GAAG,IAAI,CAACwvB,eAAe;QAC3C,IAAIk\u002FD,IAAI,EAAEC,IAAI;QACd,QAAQ,IAAI,CAAC9vF,QAAQ;UACnB,KAAK,CAAC;YACJ6vF,IAAI,GAAG78D,KAAK,GAAG,CAAC\u002FoB,QAAQ,CAAC,CAAC,CAAC,GAAG\u002FI,KAAK,IAAIF,SAAS;YAChD8uF,IAAI,GAAG78D,KAAK,GAAG,IAAI,CAACpyB,MAAM,GAAG,CAACoJ,QAAQ,CAAC,CAAC,CAAC,GAAG9I,KAAK,IAAIF,UAAU;YAC\u002FD;UACF,KAAK,EAAE;YACL4uF,IAAI,GAAG78D,KAAK,GAAG,CAAC\u002FoB,QAAQ,CAAC,CAAC,CAAC,GAAG\u002FI,KAAK,IAAIF,SAAS;YAChD8uF,IAAI,GAAG78D,KAAK,GAAG,CAAChpB,QAAQ,CAAC,CAAC,CAAC,GAAG9I,KAAK,IAAIF,UAAU;YACjD,CAAC2lB,EAAE,EAAEC,EAAE,CAAC,GAAG,CAACA,EAAE,EAAE,CAACD,EAAE,CAAC;YACpB;UACF,KAAK,GAAG;YACNipE,IAAI,GAAG78D,KAAK,GAAG,IAAI,CAACpyB,KAAK,GAAG,CAACqJ,QAAQ,CAAC,CAAC,CAAC,GAAG\u002FI,KAAK,IAAIF,SAAS;YAC7D8uF,IAAI,GAAG78D,KAAK,GAAG,CAAChpB,QAAQ,CAAC,CAAC,CAAC,GAAG9I,KAAK,IAAIF,UAAU;YACjD,CAAC2lB,EAAE,EAAEC,EAAE,CAAC,GAAG,CAAC,CAACD,EAAE,EAAE,CAACC,EAAE,CAAC;YACrB;UACF,KAAK,GAAG;YACNgpE,IAAI,GACF78D,KAAK,GACL,CAAC\u002FoB,QAAQ,CAAC,CAAC,CAAC,GAAG\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\u002FF,IAAI,CACdq\u002FF,cAAc,CAACL,SAAS,CAACl5F,KAAK,CAACw5F,WAAW,CAAC,CAAC\u002F2F,UAAU,CAAC+zF,WAAW,EAAE,EAAE,CACxE,CAAC;MACD,IAAIngF,MAAM,KAAK,IAAI,CAAC+gF,SAAS,EAAE;QAC7B,IAAIr8F,MAAM,GAAG0+F,YAAY;QACzB,KAAK,MAAM3zD,KAAK,IAAI,IAAI,CAACsxD,SAAS,CAACiB,UAAU,EAAE;UAC7C,IAAIvyD,KAAK,KAAKzvB,MAAM,EAAE;YACpBtb,MAAM,GAAG2+F,WAAW;YACpB;UACF;UACA3+F,MAAM,CAACb,IAAI,CAACu8F,cAAc,CAAC,CAAC6B,cAAc,CAACxyD,KAAK,CAAC,CAAC;QACpD;MACF;MACA2zD,YAAY,CAACv\u002FF,IAAI,CACfq\u002FF,cAAc,CAACL,SAAS,CACrBl5F,KAAK,CAAC,CAAC,EAAEw5F,WAAW,CAAC,CACrB\u002F2F,UAAU,CAAC+zF,WAAW,EAAE,EAAE,CAC\u002FB,CAAC;IACH,CAAC,MAAM,IAAI+C,cAAc,KAAK,IAAI,CAACnC,SAAS,EAAE;MAC5C,IAAIr8F,MAAM,GAAG0+F,YAAY;MACzB,IAAI7\u002FF,CAAC,GAAG,CAAC;MACT,KAAK,MAAMksC,KAAK,IAAI,IAAI,CAACsxD,SAAS,CAACiB,UAAU,EAAE;QAC7C,IAAIz+F,CAAC,EAAE,KAAK4\u002FF,WAAW,EAAE;UACvBz+F,MAAM,GAAG2+F,WAAW;QACtB;QACA3+F,MAAM,CAACb,IAAI,CAACu8F,cAAc,CAAC,CAAC6B,cAAc,CAACxyD,KAAK,CAAC,CAAC;MACpD;IACF;IACA,IAAI,CAAC,CAACmB,OAAO,GAAG,GAAGwyD,YAAY,CAACt\u002FF,IAAI,CAAC,IAAI,CAAC,GAAGiuB,KAAK,GAAGsxE,WAAW,CAACv\u002FF,IAAI,CAAC,IAAI,CAAC,EAAE;IAC7E,IAAI,CAAC,CAAC2+F,UAAU,CAAC,CAAC;IAGlB,MAAMa,QAAQ,GAAG,IAAIC,KAAK,CAAC,CAAC;IAC5B,IAAIC,YAAY,GAAG\u002F\u002FF,IAAI,CAACsM,UAAU,CAACqzF,YAAY,CAAClrF,GAAG,CAACokF,IAAI,IAAIA,IAAI,CAAC77F,MAAM,CAAC,CAAC;IACzE,KAAK,MAAM;MAAE8uC;IAAW,CAAC,IAAI,IAAI,CAACwxD,SAAS,CAACiB,UAAU,EAAE;MAEtD,IAAIzyD,UAAU,CAAC5gB,QAAQ,KAAKC,IAAI,CAACC,SAAS,EAAE;QAC1C,MAAMpuB,MAAM,GAAG8uC,UAAU,CAACszD,SAAS,CAACpiG,MAAM;QAC1C,IAAI+iG,YAAY,IAAI\u002FiG,MAAM,EAAE;UAC1B6iG,QAAQ,CAACG,QAAQ,CAACl0D,UAAU,EAAEi0D,YAAY,CAAC;UAC3CF,QAAQ,CAACI,MAAM,CAACn0D,UAAU,EAAEi0D,YAAY,CAAC;UACzC;QACF;QACAA,YAAY,IAAI\u002FiG,MAAM;MACxB;IACF;IACA4uB,SAAS,CAACs0E,eAAe,CAAC,CAAC;IAC3Bt0E,SAAS,CAACu0E,QAAQ,CAACN,QAAQ,CAAC;EAC9B;EAEA,CAACb,UAAUoB,CAAA,EAAG;IACZ,IAAI,CAAC9C,SAAS,CAAC+C,eAAe,CAAC,CAAC;IAChC,IAAI,CAAC,IAAI,CAAC,CAAClzD,OAAO,EAAE;MAClB;IACF;IACA,KAAK,MAAM0rD,IAAI,IAAI,IAAI,CAAC,CAAC1rD,OAAO,CAACxvC,KAAK,CAAC,IAAI,CAAC,EAAE;MAC5C,MAAMmY,GAAG,GAAGpI,QAAQ,CAACmH,aAAa,CAAC,KAAK,CAAC;MACzCiB,GAAG,CAACb,MAAM,CACR4jF,IAAI,GAAGnrF,QAAQ,CAACw5E,cAAc,CAAC2R,IAAI,CAAC,GAAGnrF,QAAQ,CAACmH,aAAa,CAAC,IAAI,CACpE,CAAC;MACD,IAAI,CAACyoF,SAAS,CAACroF,MAAM,CAACa,GAAG,CAAC;IAC5B;EACF;EAEA,CAACwqF,gBAAgBC,CAAA,EAAG;IAClB,OAAO,IAAI,CAAC,CAACpzD,OAAO,CAACxkC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC;EAC9C;EAEA,OAAO,CAAC02F,kBAAkBmB,CAACrzD,OAAO,EAAE;IAClC,OAAOA,OAAO,CAACxkC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;EACxC;EAGA,IAAImkC,UAAUA,CAAA,EAAG;IACf,OAAO,IAAI,CAACwwD,SAAS;EACvB;EAGA,aAAa1tE,WAAWA,CAAC\u002FR,IAAI,EAAEtB,MAAM,EAAEV,SAAS,EAAE;IAChD,IAAI8oD,WAAW,GAAG,IAAI;IACtB,IAAI9mD,IAAI,YAAY4qE,yBAAyB,EAAE;MAC7C,MAAM;QACJ5qE,IAAI,EAAE;UACJi1E,qBAAqB,EAAE;YAAEljC,QAAQ;YAAEijC;UAAU,CAAC;UAC9CvuF,IAAI;UACJ8K,QAAQ;UACRyN,EAAE;UACFouB;QACF,CAAC;QACDhR,WAAW;QACXy\u002FD,YAAY;QACZn9E,MAAM,EAAE;UACNnR,IAAI,EAAE;YAAE+e;UAAW;QACrB;MACF,CAAC,GAAGtM,IAAI;MAGR,IAAI,CAACoc,WAAW,IAAIA,WAAW,CAACj9B,MAAM,KAAK,CAAC,EAAE;QAE5C,OAAO,IAAI;MACb;MACA2nE,WAAW,GAAG9mD,IAAI,GAAG;QACnB8pE,cAAc,EAAEv6F,oBAAoB,CAACE,QAAQ;QAC7CinB,KAAK,EAAEhS,KAAK,CAACC,IAAI,CAACqwF,SAAS,CAAC;QAC5BjjC,QAAQ;QACR7xD,KAAK,EAAEk8B,WAAW,CAAC55B,IAAI,CAAC,IAAI,CAAC;QAC7BgZ,QAAQ,EAAEqgF,YAAY;QACtB5oE,SAAS,EAAE3G,UAAU,GAAG,CAAC;QACzB7lB,IAAI,EAAEA,IAAI,CAAC4B,KAAK,CAAC,CAAC,CAAC;QACnBkJ,QAAQ;QACRyN,EAAE;QACFyW,OAAO,EAAE,KAAK;QACd2X;MACF,CAAC;IACH;IACA,MAAM\u002FyB,MAAM,GAAG,MAAM,KAAK,CAAC0X,WAAW,CAAC\u002FR,IAAI,EAAEtB,MAAM,EAAEV,SAAS,CAAC;IAC\u002FD3D,MAAM,CAAC,CAAC03C,QAAQ,GAAG\u002FxC,IAAI,CAAC+xC,QAAQ;IAChC13C,MAAM,CAAC,CAAC3D,KAAK,GAAG3R,IAAI,CAACC,YAAY,CAAC,GAAGgb,IAAI,CAACtJ,KAAK,CAAC;IAChD2D,MAAM,CAAC,CAACi1B,OAAO,GAAGwvD,cAAc,CAAC,CAAC0C,kBAAkB,CAACxhF,IAAI,CAAC9f,KAAK,CAAC;IAChEma,MAAM,CAACwZ,mBAAmB,GAAG7T,IAAI,CAAChB,EAAE,IAAI,IAAI;IAC5C3E,MAAM,CAAC0mB,YAAY,GAAG+lC,WAAW;IAEjC,OAAOzsD,MAAM;EACf;EAGAwJ,SAASA,CAAC8X,YAAY,GAAG,KAAK,EAAE;IAC9B,IAAI,IAAI,CAACjU,OAAO,CAAC,CAAC,EAAE;MAClB,OAAO,IAAI;IACb;IAEA,IAAI,IAAI,CAAC+N,OAAO,EAAE;MAChB,OAAO,IAAI,CAAC0X,gBAAgB,CAAC,CAAC;IAChC;IAEA,MAAMy1D,OAAO,GAAG9D,cAAc,CAACI,gBAAgB,GAAG,IAAI,CAACl5D,WAAW;IAClE,MAAMv\u002FB,IAAI,GAAG,IAAI,CAAC0lC,OAAO,CAACy2D,OAAO,EAAEA,OAAO,CAAC;IAC3C,MAAMlsF,KAAK,GAAG8oB,gBAAgB,CAAC8B,aAAa,CAAC3c,OAAO,CAClD,IAAI,CAACyd,eAAe,GAChB7qB,gBAAgB,CAAC,IAAI,CAACkoF,SAAS,CAAC,CAAC\u002FoF,KAAK,GACtC,IAAI,CAAC,CAACA,KACZ,CAAC;IAED,MAAM6a,UAAU,GAAG;MACjBu4D,cAAc,EAAEv6F,oBAAoB,CAACE,QAAQ;MAC7CinB,KAAK;MACLq7C,QAAQ,EAAE,IAAI,CAAC,CAACA,QAAQ;MACxB7xD,KAAK,EAAE,IAAI,CAAC,CAACuiG,gBAAgB,CAAC,CAAC;MAC\u002FBxvE,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBxsB,IAAI;MACJ8K,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBsxF,kBAAkB,EAAE,IAAI,CAAC9gE;IAC3B,CAAC;IAED,IAAIpG,YAAY,EAAE;MAGhBpK,UAAU,CAAC+b,MAAM,GAAG,IAAI;MACxB,OAAO\u002Fb,UAAU;IACnB;IAEA,IAAI,IAAI,CAACsC,mBAAmB,IAAI,CAAC,IAAI,CAAC,CAACivE,iBAAiB,CAACvxE,UAAU,CAAC,EAAE;MACpE,OAAO,IAAI;IACb;IAEAA,UAAU,CAACvS,EAAE,GAAG,IAAI,CAAC6U,mBAAmB;IAExC,OAAOtC,UAAU;EACnB;EAEA,CAACuxE,iBAAiBC,CAACxxE,UAAU,EAAE;IAC7B,MAAM;MAAErxB,KAAK;MAAE6xD,QAAQ;MAAEr7C,KAAK;MAAEuc;IAAU,CAAC,GAAG,IAAI,CAAC8N,YAAY;IAE\u002FD,OACE,IAAI,CAACuE,aAAa,IAClB\u002FT,UAAU,CAACrxB,KAAK,KAAKA,KAAK,IAC1BqxB,UAAU,CAACwgC,QAAQ,KAAKA,QAAQ,IAChCxgC,UAAU,CAAC7a,KAAK,CAAC6b,IAAI,CAAC,CAACvqB,CAAC,EAAE\u002FF,CAAC,KAAK+F,CAAC,KAAK0O,KAAK,CAACzU,CAAC,CAAC,CAAC,IAC\u002FCsvB,UAAU,CAAC0B,SAAS,KAAKA,SAAS;EAEtC;EAGAsG,uBAAuBA,CAACC,UAAU,EAAE;IAClC,MAAM8V,OAAO,GAAG,KAAK,CAAC\u002FV,uBAAuB,CAACC,UAAU,CAAC;IACzD,IAAI,IAAI,CAAC\u002FD,OAAO,EAAE;MAChB,OAAO6Z,OAAO;IAChB;IACA,MAAM;MAAE94B;IAAM,CAAC,GAAG84B,OAAO;IACzB94B,KAAK,CAACu7C,QAAQ,GAAG,QAAQ,IAAI,CAAC,CAACA,QAAQ,iCAAiC;IACxEv7C,KAAK,CAACE,KAAK,GAAG,IAAI,CAAC,CAACA,KAAK;IAEzB44B,OAAO,CAACkzD,eAAe,CAAC,CAAC;IACzB,KAAK,MAAMxH,IAAI,IAAI,IAAI,CAAC,CAAC1rD,OAAO,CAACxvC,KAAK,CAAC,IAAI,CAAC,EAAE;MAC5C,MAAMmY,GAAG,GAAGpI,QAAQ,CAACmH,aAAa,CAAC,KAAK,CAAC;MACzCiB,GAAG,CAACb,MAAM,CACR4jF,IAAI,GAAGnrF,QAAQ,CAACw5E,cAAc,CAAC2R,IAAI,CAAC,GAAGnrF,QAAQ,CAACmH,aAAa,CAAC,IAAI,CACpE,CAAC;MACDs4B,OAAO,CAACl4B,MAAM,CAACa,GAAG,CAAC;IACrB;IAEA,MAAM2qF,OAAO,GAAG9D,cAAc,CAACI,gBAAgB,GAAG,IAAI,CAACl5D,WAAW;IAClExM,UAAU,CAACyzD,YAAY,CAAC;MACtBxmF,IAAI,EAAE,IAAI,CAAC0lC,OAAO,CAACy2D,OAAO,EAAEA,OAAO,CAAC;MACpC9H,YAAY,EAAE,IAAI,CAAC,CAACxrD;IACtB,CAAC,CAAC;IAEF,OAAOA,OAAO;EAChB;EAEAG,sBAAsBA,CAACjW,UAAU,EAAE;IACjC,KAAK,CAACiW,sBAAsB,CAACjW,UAAU,CAAC;IACxCA,UAAU,CAAC4zD,WAAW,CAAC,CAAC;EAC1B;AACF;;;;;;ACz2BsD;AAEtD,MAAM4V,OAAO,CAAC;EACZ,OAAOC,SAAS,GAAG,IAAI;EAKvBC,SAASA,CAAA,EAAG;IACV7kG,WAAW,CAAC,kDAAkD,CAAC;EACjE;EAMA,IAAIogB,GAAGA,CAAA,EAAG;IACRpgB,WAAW,CAAC,4CAA4C,CAAC;EAC3D;EAEAwlB,SAASA,CAAC4gC,KAAK,EAAE0+C,SAAS,EAAE;IAC1B9kG,WAAW,CAAC,kDAAkD,CAAC;EACjE;EAEA,OAAO+kG,QAAQA,CAACzjF,GAAG,EAAEwY,EAAE,EAAEC,EAAE,EAAEvf,EAAE,EAAEC,EAAE,EAAEzL,IAAI,EAAE;IACzCA,IAAI,KAAK,IAAI08C,YAAY,CAACpqC,GAAG,CAACxgB,MAAM,CAAC;IACrC,KAAK,IAAI8C,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAG2U,GAAG,CAACxgB,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,IAAI,CAAC,EAAE;MAC\u002FCoL,IAAI,CAACpL,CAAC,CAAC,GAAGk2B,EAAE,GAAGxY,GAAG,CAAC1d,CAAC,CAAC,GAAG4W,EAAE;MAC1BxL,IAAI,CAACpL,CAAC,GAAG,CAAC,CAAC,GAAGm2B,EAAE,GAAGzY,GAAG,CAAC1d,CAAC,GAAG,CAAC,CAAC,GAAG6W,EAAE;IACpC;IACA,OAAOzL,IAAI;EACb;EAEA,OAAOg2F,eAAeA,CAAC1jF,GAAG,EAAEwY,EAAE,EAAEC,EAAE,EAAEvf,EAAE,EAAEC,EAAE,EAAEzL,IAAI,EAAE;IAChDA,IAAI,KAAK,IAAI08C,YAAY,CAACpqC,GAAG,CAACxgB,MAAM,CAAC;IACrC,KAAK,IAAI8C,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAG2U,GAAG,CAACxgB,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,IAAI,CAAC,EAAE;MAC\u002FCoL,IAAI,CAACpL,CAAC,CAAC,GAAGk2B,EAAE,GAAGxY,GAAG,CAAC1d,CAAC,GAAG,CAAC,CAAC,GAAG4W,EAAE;MAC9BxL,IAAI,CAACpL,CAAC,GAAG,CAAC,CAAC,GAAGm2B,EAAE,GAAGzY,GAAG,CAAC1d,CAAC,CAAC,GAAG6W,EAAE;IAChC;IACA,OAAOzL,IAAI;EACb;EAEA,OAAOi2F,UAAUA,CAAC3jF,GAAG,EAAEwY,EAAE,EAAEC,EAAE,EAAE\u002FqB,IAAI,EAAE;IACnCA,IAAI,KAAK,IAAI08C,YAAY,CAACpqC,GAAG,CAACxgB,MAAM,CAAC;IACrC,KAAK,IAAI8C,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAG2U,GAAG,CAACxgB,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,IAAI,CAAC,EAAE;MAC\u002FCoL,IAAI,CAACpL,CAAC,CAAC,GAAGk2B,EAAE,GAAGxY,GAAG,CAAC1d,CAAC,CAAC;MACrBoL,IAAI,CAACpL,CAAC,GAAG,CAAC,CAAC,GAAGm2B,EAAE,GAAGzY,GAAG,CAAC1d,CAAC,GAAG,CAAC,CAAC;IAC\u002FB;IACA,OAAOoL,IAAI;EACb;EAEA,OAAOk2F,QAAQA,CAACz6F,CAAC,EAAE;IAKjB,OAAO3G,IAAI,CAACylC,KAAK,CAAC9+B,CAAC,GAAG,KAAK,CAAC;EAC9B;EAEA,OAAO06F,eAAeA,CAAC16F,CAAC,EAAEC,CAAC,EAAEiwB,WAAW,EAAEC,YAAY,EAAE1nB,QAAQ,EAAE;IAChE,QAAQA,QAAQ;MACd,KAAK,EAAE;QACL,OAAO,CAAC,CAAC,GAAGxI,CAAC,GAAGiwB,WAAW,EAAElwB,CAAC,GAAGmwB,YAAY,CAAC;MAChD,KAAK,GAAG;QACN,OAAO,CAAC,CAAC,GAAGnwB,CAAC,GAAGkwB,WAAW,EAAE,CAAC,GAAGjwB,CAAC,GAAGkwB,YAAY,CAAC;MACpD,KAAK,GAAG;QACN,OAAO,CAAClwB,CAAC,GAAGiwB,WAAW,EAAE,CAAC,GAAGlwB,CAAC,GAAGmwB,YAAY,CAAC;MAChD;QACE,OAAO,CAACnwB,CAAC,GAAGkwB,WAAW,EAAEjwB,CAAC,GAAGkwB,YAAY,CAAC;IAC9C;EACF;EAEA,OAAOwqE,mBAAmBA,CAAC36F,CAAC,EAAEC,CAAC,EAAEwI,QAAQ,EAAE;IACzC,QAAQA,QAAQ;MACd,KAAK,EAAE;QACL,OAAO,CAAC,CAAC,GAAGxI,CAAC,EAAED,CAAC,CAAC;MACnB,KAAK,GAAG;QACN,OAAO,CAAC,CAAC,GAAGA,CAAC,EAAE,CAAC,GAAGC,CAAC,CAAC;MACvB,KAAK,GAAG;QACN,OAAO,CAACA,CAAC,EAAE,CAAC,GAAGD,CAAC,CAAC;MACnB;QACE,OAAO,CAACA,CAAC,EAAEC,CAAC,CAAC;IACjB;EACF;EAEA,OAAO26F,kBAAkBA,CAACv6F,EAAE,EAAEC,EAAE,EAAEG,EAAE,EAAEE,EAAE,EAAED,EAAE,EAAEE,EAAE,EAAE;IAChD,OAAO,CACL,CAACP,EAAE,GAAG,CAAC,GAAGI,EAAE,IAAI,CAAC,EACjB,CAACH,EAAE,GAAG,CAAC,GAAGK,EAAE,IAAI,CAAC,EACjB,CAAC,CAAC,GAAGF,EAAE,GAAGC,EAAE,IAAI,CAAC,EACjB,CAAC,CAAC,GAAGC,EAAE,GAAGC,EAAE,IAAI,CAAC,EACjB,CAACH,EAAE,GAAGC,EAAE,IAAI,CAAC,EACb,CAACC,EAAE,GAAGC,EAAE,IAAI,CAAC,CACd;EACH;AACF;;;;;;;AC\u002FFuC;AACQ;AAE\u002FC,MAAMi6F,gBAAgB,CAAC;EACrB,CAACllF,GAAG;EAEJ,CAACmuB,MAAM,GAAG,EAAE;EAEZ,CAACg3D,WAAW;EAEZ,CAACtlF,KAAK;EAEN,CAAC1C,GAAG,GAAG,EAAE;EAST,CAACioF,IAAI,GAAG,IAAI95C,YAAY,CAAC,EAAE,CAAC;EAE5B,CAACvrC,KAAK;EAEN,CAACD,KAAK;EAEN,CAACnc,GAAG;EAEJ,CAAC0hG,QAAQ;EAET,CAACC,WAAW;EAEZ,CAACnH,SAAS;EAEV,CAACN,MAAM,GAAG,EAAE;EAEZ,OAAO,CAAC0H,QAAQ,GAAG,CAAC;EAEpB,OAAO,CAACC,QAAQ,GAAG,CAAC;EAEpB,OAAO,CAACC,GAAG,GAAGP,gBAAgB,CAAC,CAACK,QAAQ,GAAGL,gBAAgB,CAAC,CAACM,QAAQ;EAErEnjG,WAAWA,CAAC;IAAEgI,CAAC;IAAEC;EAAE,CAAC,EAAE0V,GAAG,EAAEslF,WAAW,EAAEnH,SAAS,EAAEt+E,KAAK,EAAEslF,WAAW,GAAG,CAAC,EAAE;IACzE,IAAI,CAAC,CAACnlF,GAAG,GAAGA,GAAG;IACf,IAAI,CAAC,CAACm+E,SAAS,GAAGA,SAAS,GAAGmH,WAAW;IACzC,IAAI,CAAC,CAACzlF,KAAK,GAAGA,KAAK;IACnB,IAAI,CAAC,CAACulF,IAAI,CAACrsF,GAAG,CAAC,CAACqL,GAAG,EAAEA,GAAG,EAAEA,GAAG,EAAEA,GAAG,EAAE\u002FZ,CAAC,EAAEC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7C,IAAI,CAAC,CAAC66F,WAAW,GAAGA,WAAW;IAC\u002FB,IAAI,CAAC,CAACE,QAAQ,GAAGH,gBAAgB,CAAC,CAACK,QAAQ,GAAGD,WAAW;IACzD,IAAI,CAAC,CAAC3hG,GAAG,GAAGuhG,gBAAgB,CAAC,CAACO,GAAG,GAAGH,WAAW;IAC\u002FC,IAAI,CAAC,CAACA,WAAW,GAAGA,WAAW;IAC\u002FB,IAAI,CAAC,CAACzH,MAAM,CAAC\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\u002FF,KAAK,GAAGz\u002FF,CAAC;QACX,CAAC,MAAM,IAAIA,CAAC,KAAKy\u002FF,KAAK,EAAE;UACtBplG,MAAM,CAACb,IAAI,CAAC,IAAIuG,CAAC,EAAE,CAAC;UACpBy\u002FF,KAAK,GAAGz\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\u002FB,IAAI,CAAC,CAAC\u002F6G,IAAI,GAAG4B,0BAA0B,CAACS,eAAe;MACvD,IAAI,CAAC,CAAC8pB,MAAM,GAAGA,MAAM;IACvB,CAAC,MAAM;MACL,IAAI,CAAC,CAAC4uF,iBAAiB,GAAG,IAAI;MAC9B,IAAI,CAAC,CAAC\u002F6G,IAAI,GAAG4B,0BAA0B,CAACU,uBAAuB;IACjE;IACA,IAAI,CAAC,CAACwtB,SAAS,GAAG3D,MAAM,EAAEe,UAAU,IAAI4C,SAAS;IACjD,IAAI,CAAC,CAACwL,QAAQ,GAAG,IAAI,CAAC,CAACxL,SAAS,CAAC4L,SAAS;IAC1C,IAAI,CAAC,CAACk\u002FE,YAAY,GAChBzuF,MAAM,EAAE3D,KAAK,IACb,IAAI,CAAC,CAACsH,SAAS,EAAEwI,eAAe,CAACqE,MAAM,CAAC,CAAC,CAAC7H,IAAI,CAAC,CAAC,CAAC9iB,KAAK,IACtD,SAAS;IAEX0oG,WAAW,CAAC,CAACO,SAAS,KAAK\u002FoG,MAAM,CAACsa,MAAM,CAAC;MACvCgvF,IAAI,EAAE,+BAA+B;MACrCC,KAAK,EAAE,gCAAgC;MACvCC,IAAI,EAAE,+BAA+B;MACrCC,GAAG,EAAE,8BAA8B;MACnCC,MAAM,EAAE;IACV,CAAC,CAAC;EACJ;EAEAvsF,YAAYA,CAAA,EAAG;IACb,MAAMR,MAAM,GAAI,IAAI,CAAC,CAACA,MAAM,GAAGlN,QAAQ,CAACmH,aAAa,CAAC,QAAQ,CAAE;IAChE+F,MAAM,CAACxB,SAAS,GAAG,aAAa;IAChCwB,MAAM,CAACC,QAAQ,GAAG,GAAG;IACrBD,MAAM,CAACrE,YAAY,CAAC,cAAc,EAAE,iCAAiC,CAAC;IACtEqE,MAAM,CAACrE,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC;IAC1C,MAAMzJ,MAAM,GAAG,IAAI,CAAC,CAAC+O,SAAS,CAAC3C,OAAO;IACtC0B,MAAM,CAACzN,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAACy6F,YAAY,CAACxtF,IAAI,CAAC,IAAI,CAAC,EAAE;MAAEtN;IAAO,CAAC,CAAC;IAC3E8N,MAAM,CAACzN,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC+pF,OAAO,CAAC98E,IAAI,CAAC,IAAI,CAAC,EAAE;MAAEtN;IAAO,CAAC,CAAC;IACxE,MAAM+6F,MAAM,GAAI,IAAI,CAAC,CAACnB,YAAY,GAAGh5F,QAAQ,CAACmH,aAAa,CAAC,MAAM,CAAE;IACpEgzF,MAAM,CAACzuF,SAAS,GAAG,QAAQ;IAC3ByuF,MAAM,CAACtxF,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC;IACxCsxF,MAAM,CAACxzF,KAAK,CAAC6yC,eAAe,GAAG,IAAI,CAAC,CAACy\u002FC,YAAY;IACjD\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\u002FC,MAAM,CAACm\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\u002FF,EAAE,GAAGD,EAAE,CAAC,EAAE5\u002FF,MAAM,IAAI4\u002FF,EAAE,GAAGC,EAAE,CAAC,CAAC;MAC1D,KAAK,GAAG;QACN,OAAO,CAAC,CAAC,GAAGnpG,CAAC,EAAE,CAAC,GAAGC,CAAC,EAAEoJ,KAAK,EAAEC,MAAM,CAAC;MACtC,KAAK,GAAG;QACN,OAAO,CAAC,CAAC,GAAGrJ,CAAC,EAAED,CAAC,EAAEqJ,KAAK,IAAI8\u002FF,EAAE,GAAGD,EAAE,CAAC,EAAE5\u002FF,MAAM,IAAI4\u002FF,EAAE,GAAGC,EAAE,CAAC,CAAC;MAC1D;QACE,OAAO,CAACnpG,CAAC,EAAEC,CAAC,EAAEoJ,KAAK,EAAEC,MAAM,CAAC;IAChC;EACF;EAEA,CAACk\u002FF,kBAAkBY,CAAA,EAAG;IACpB,MAAM;MACJppG,CAAC;MACDC,CAAC;MACDoJ,KAAK;MACLC,MAAM;MACN+vB,gBAAgB,EAAE,CAAC6vE,EAAE,EAAEC,EAAE,CAAC;MAC1B1gG;IACF,CAAC,GAAG,IAAI;IACR,QAAQA,QAAQ;MACd,KAAK,EAAE;QACL,OAAO,CAAC,CAAC,GAAGxI,CAAC,EAAED,CAAC,EAAEqJ,KAAK,IAAI6\u002FF,EAAE,GAAGC,EAAE,CAAC,EAAE7\u002FF,MAAM,IAAI6\u002FF,EAAE,GAAGD,EAAE,CAAC,CAAC;MAC1D,KAAK,GAAG;QACN,OAAO,CAAC,CAAC,GAAGlpG,CAAC,EAAE,CAAC,GAAGC,CAAC,EAAEoJ,KAAK,EAAEC,MAAM,CAAC;MACtC,KAAK,GAAG;QACN,OAAO,CAACrJ,CAAC,EAAE,CAAC,GAAGD,CAAC,EAAEqJ,KAAK,IAAI6\u002FF,EAAE,GAAGC,EAAE,CAAC,EAAE7\u002FF,MAAM,IAAI6\u002FF,EAAE,GAAGD,EAAE,CAAC,CAAC;MAC1D;QACE,OAAO,CAAClpG,CAAC,EAAEC,CAAC,EAAEoJ,KAAK,EAAEC,MAAM,CAAC;IAChC;EACF;EAEA,CAACm+F,UAAU4B,CAACjuD,IAAI,EAAE;IAChB,CAAC,IAAI,CAACp7C,CAAC,EAAE,IAAI,CAACC,CAAC,EAAE,IAAI,CAACoJ,KAAK,EAAE,IAAI,CAACC,MAAM,CAAC,GACvC,IAAI,CAAC,CAAC0\u002FF,oBAAoB,CAAC5tD,IAAI,CAAC;IAClC,IAAI,IAAI,CAACjsC,GAAG,EAAE;MACZ,IAAI,CAAC0rB,iBAAiB,CAAC,CAAC;MACxB,MAAM,CAAC3K,WAAW,EAAEC,YAAY,CAAC,GAAG,IAAI,CAACkJ,gBAAgB;MACzD,IAAI,CAAC8D,OAAO,CAAC,IAAI,CAAC9zB,KAAK,GAAG6mB,WAAW,EAAE,IAAI,CAAC5mB,MAAM,GAAG6mB,YAAY,CAAC;IACpE;IACA,IAAI,CAACsO,UAAU,CAAC,CAAC;EACnB;EAEA,CAACgqE,SAASa,CAAA,EAAG;IAaX,MAAM;MACJtpG,CAAC;MACDC,CAAC;MACDoJ,KAAK;MACLC,MAAM;MACNb,QAAQ;MACRmyB,cAAc;MACdvB,gBAAgB,EAAE,CAAC6vE,EAAE,EAAEC,EAAE;IAC3B,CAAC,GAAG,IAAI;IACR,QAAQ,CAAC1gG,QAAQ,GAAG,CAAC,GAAGmyB,cAAc,IAAI,EAAE;MAC1C,KAAK,CAAC;QAEJ,OAAO,CAAC,CAAC,GAAG36B,CAAC,GAAGqJ,MAAM,EAAEtJ,CAAC,EAAEsJ,MAAM,EAAED,KAAK,CAAC;MAC3C,KAAK,CAAC;QAEJ,OAAO,CAAC,CAAC,GAAGrJ,CAAC,GAAGqJ,KAAK,EAAE,CAAC,GAAGpJ,CAAC,GAAGqJ,MAAM,EAAED,KAAK,EAAEC,MAAM,CAAC;MACvD,KAAK,CAAC;QAEJ,OAAO,CAACrJ,CAAC,EAAE,CAAC,GAAGD,CAAC,GAAGqJ,KAAK,EAAEC,MAAM,EAAED,KAAK,CAAC;MAC1C,KAAK,CAAC;QAEJ,OAAO,CACLrJ,CAAC,EACDC,CAAC,GAAGoJ,KAAK,IAAI6\u002FF,EAAE,GAAGC,EAAE,CAAC,EACrB7\u002FF,MAAM,IAAI6\u002FF,EAAE,GAAGD,EAAE,CAAC,EAClB7\u002FF,KAAK,IAAI6\u002FF,EAAE,GAAGC,EAAE,CAAC,CAClB;MACH,KAAK,CAAC;QAEJ,OAAO,CAAC,CAAC,GAAGlpG,CAAC,EAAED,CAAC,EAAEqJ,KAAK,IAAI6\u002FF,EAAE,GAAGC,EAAE,CAAC,EAAE7\u002FF,MAAM,IAAI6\u002FF,EAAE,GAAGD,EAAE,CAAC,CAAC;MAC1D,KAAK,CAAC;QAEJ,OAAO,CACL,CAAC,GAAGlpG,CAAC,GAAGsJ,MAAM,IAAI6\u002FF,EAAE,GAAGD,EAAE,CAAC,EAC1B,CAAC,GAAGjpG,CAAC,EACLqJ,MAAM,IAAI6\u002FF,EAAE,GAAGD,EAAE,CAAC,EAClB7\u002FF,KAAK,IAAI6\u002FF,EAAE,GAAGC,EAAE,CAAC,CAClB;MACH,KAAK,CAAC;QAEJ,OAAO,CACLlpG,CAAC,GAAGoJ,KAAK,IAAI6\u002FF,EAAE,GAAGC,EAAE,CAAC,EACrB,CAAC,GAAGnpG,CAAC,GAAGsJ,MAAM,IAAI6\u002FF,EAAE,GAAGD,EAAE,CAAC,EAC1B7\u002FF,KAAK,IAAI6\u002FF,EAAE,GAAGC,EAAE,CAAC,EACjB7\u002FF,MAAM,IAAI6\u002FF,EAAE,GAAGD,EAAE,CAAC,CACnB;MACH,KAAK,CAAC;QAEJ,OAAO,CAAClpG,CAAC,GAAGqJ,KAAK,EAAEpJ,CAAC,GAAGqJ,MAAM,EAAED,KAAK,EAAEC,MAAM,CAAC;MAC\u002FC,KAAK,CAAC;QAEJ,OAAO,CAAC,CAAC,GAAGrJ,CAAC,EAAED,CAAC,GAAGqJ,KAAK,EAAEC,MAAM,EAAED,KAAK,CAAC;MAC1C,KAAK,EAAE;QAEL,OAAO,CAAC,CAAC,GAAGrJ,CAAC,EAAE,CAAC,GAAGC,CAAC,EAAEoJ,KAAK,EAAEC,MAAM,CAAC;MACtC,KAAK,EAAE;QAEL,OAAO,CAACrJ,CAAC,GAAGqJ,MAAM,EAAE,CAAC,GAAGtJ,CAAC,EAAEsJ,MAAM,EAAED,KAAK,CAAC;MAC3C,KAAK,EAAE;QAEL,OAAO,CACLrJ,CAAC,GAAGsJ,MAAM,IAAI6\u002FF,EAAE,GAAGD,EAAE,CAAC,EACtBjpG,CAAC,EACDqJ,MAAM,IAAI6\u002FF,EAAE,GAAGD,EAAE,CAAC,EAClB7\u002FF,KAAK,IAAI6\u002FF,EAAE,GAAGC,EAAE,CAAC,CAClB;MACH,KAAK,EAAE;QAEL,OAAO,CACL,CAAC,GAAGlpG,CAAC,GAAGoJ,KAAK,IAAI6\u002FF,EAAE,GAAGC,EAAE,CAAC,EACzBnpG,CAAC,GAAGsJ,MAAM,IAAI6\u002FF,EAAE,GAAGD,EAAE,CAAC,EACtB7\u002FF,KAAK,IAAI6\u002FF,EAAE,GAAGC,EAAE,CAAC,EACjB7\u002FF,MAAM,IAAI6\u002FF,EAAE,GAAGD,EAAE,CAAC,CACnB;MACH,KAAK,EAAE;QAEL,OAAO,CACL,CAAC,GAAGlpG,CAAC,EACL,CAAC,GAAGC,CAAC,GAAGoJ,KAAK,IAAI6\u002FF,EAAE,GAAGC,EAAE,CAAC,EACzB7\u002FF,MAAM,IAAI6\u002FF,EAAE,GAAGD,EAAE,CAAC,EAClB7\u002FF,KAAK,IAAI6\u002FF,EAAE,GAAGC,EAAE,CAAC,CAClB;MACH,KAAK,EAAE;QAEL,OAAO,CAAClpG,CAAC,EAAE,CAAC,GAAGD,CAAC,EAAEqJ,KAAK,IAAI6\u002FF,EAAE,GAAGC,EAAE,CAAC,EAAE7\u002FF,MAAM,IAAI6\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\u002FB;IACF;IACA,MAAM;MAAE\u002F9F,OAAO;MAAEC,OAAO;MAAEs6B;IAAU,CAAC,GAAGhoB,KAAK;IAE7C,IAAIkrF,aAAa,CAAC,CAACS,gBAAgB,KAAK3jE,SAAS,EAAE;MACjD;IACF;IACA,IAAIkjE,aAAa,CAAC,CAACW,iBAAiB,EAAEruF,IAAI,IAAI,CAAC,EAAE;MAE\u002FC,IAAI,CAACuxF,QAAQ,CAAC\u002FuF,KAAK,CAAC;MACpB;IACF;IACA,IAAI,CAACurF,cAAc,CAACrD,SAAS,CAACM,gBAAgB,CAC5C,IAAI,CAAC8C,cAAc,EACnBJ,aAAa,CAAC,CAACM,WAAW,CAACp0F,GAAG,CAAC3J,OAAO,EAAEC,OAAO,CACjD,CAAC;IAEDw9F,aAAa,CAAC,CAACY,oBAAoB,GAAG9rF,KAAK,CAACmvF,SAAS;IACrDh+F,SAAS,CAAC6O,KAAK,CAAC;EAClB;EAEA,OAAOqvF,QAAQA,CAACp+E,GAAG,EAAE;IACnB,IAAIA,GAAG,EAAE;MACP,IAAI,CAACq6E,cAAc,GAAG,CAAC,CAAC;MACxB,IAAI,CAACC,cAAc,GAAG,IAAI;MAC1BL,aAAa,CAAC,CAACM,WAAW,GAAG,IAAI;MACjCN,aAAa,CAAC,CAACQ,qBAAqB,GAAG,IAAI;MAC3CR,aAAa,CAAC,CAACU,kBAAkB,GAAG,IAAI;MACxCV,aAAa,CAAC,CAACY,oBAAoB,GAAGhtF,GAAG;IAC3C;IAEA,IAAIosF,aAAa,CAAC,CAACO,gBAAgB,EAAE;MACnCP,aAAa,CAAC,CAACO,gBAAgB,CAACpgG,KAAK,CAAC,CAAC;MACvC6\u002FF,aAAa,CAAC,CAACO,gBAAgB,GAAG,IAAI;MACtCP,aAAa,CAAC,CAACS,gBAAgB,GAAG7sF,GAAG;MACrCosF,aAAa,CAAC,CAACW,iBAAiB,GAAG,IAAI;IACzC;EACF;EAEA,OAAOkD,QAAQA,CAAC\u002FuF,KAAK,EAAE;IACrB,MAAMrF,MAAM,GAAG,IAAI,CAAC4wF,cAAc;IAClC,IAAI,CAAC5wF,MAAM,EAAE;MACX;IACF;IAEAA,MAAM,CAAC0Q,aAAa,CAAC,IAAI,CAAC;IAC1B,IAAI,CAACgkF,QAAQ,CAAC,KAAK,CAAC;IAEpB,IAAIrvF,KAAK,EAAE8E,MAAM,KAAKnK,MAAM,CAACzG,GAAG,EAAE;MAChCyG,MAAM,CAACutF,SAAS,CAACM,gBAAgB,CAC\u002FB,IAAI,CAAC8C,cAAc,EACnBJ,aAAa,CAAC,CAACM,WAAW,CAAC56F,GAAG,CAACoP,KAAK,CAACvS,OAAO,EAAEuS,KAAK,CAACtS,OAAO,CAC7D,CAAC;IACH;IACA,IAAI,IAAI,CAACs\u002FF,uBAAuB,EAAE;MAChC,MAAMtD,IAAI,GAAGwB,aAAa,CAAC,CAACM,WAAW;MACvC,MAAMW,MAAM,GAAG,IAAI,CAACb,cAAc;MAClC,MAAMgE,WAAW,GAAG5F,IAAI,CAAC6F,cAAc,CAAC,CAAC;MACzC50F,MAAM,CAACwT,WAAW,CAAC;QACjBzP,GAAG,EAAEA,CAAA,KAAM;UACT\u002FD,MAAM,CAACutF,SAAS,CAACM,gBAAgB,CAC\u002FB2D,MAAM,EACNzC,IAAI,CAAC8F,cAAc,CAACF,WAAW,CACjC,CAAC;QACH,CAAC;QACD3wF,IAAI,EAAEA,CAAA,KAAM;UACVhE,MAAM,CAACutF,SAAS,CAACM,gBAAgB,CAAC2D,MAAM,EAAEzC,IAAI,CAACuF,iBAAiB,CAAC,CAAC,CAAC;QACrE,CAAC;QACDpwF,QAAQ,EAAE,KAAK;QACf10B,IAAI,EAAE4B,0BAA0B,CAACc;MACnC,CAAC,CAAC;MAEF;IACF;IAEA,IAAI,CAACu7D,UAAU,CAAmB,KAAK,CAAC;EAC1C;EAEA,OAAOA,UAAUA,CAACqnD,SAAS,EAAE;IAC3B,MAAM90F,MAAM,GAAG,IAAI,CAAC4wF,cAAc;IAClC,IAAI,CAAC5wF,MAAM,EAAE;MACX,OAAO,IAAI;IACb;IACAA,MAAM,CAAC0Q,aAAa,CAAC,IAAI,CAAC;IAC1B1Q,MAAM,CAACiY,cAAc,CAAC7mC,0BAA0B,CAACc,SAAS,CAAC;IAE3D,IAAI,CAACq+G,aAAa,CAAC,CAACM,WAAW,CAAC7nF,OAAO,CAAC,CAAC,EAAE;MACzC,MAAM;QACJua,cAAc,EAAE,CAAC1vB,SAAS,EAAEC,UAAU,CAAC;QACvClB;MACF,CAAC,GAAGoN,MAAM;MAEV,MAAMrE,MAAM,GAAGqE,MAAM,CAACgQ,qBAAqB,CACzC;QAAEld,OAAO,EAAE,CAAC;QAAEC,OAAO,EAAE;MAAE,CAAC,EAC1B,KAAK,EACL;QACEy+F,MAAM,EAAE,IAAI,CAACb,cAAc;QAC3BH,YAAY,EAAED,aAAa,CAAC,CAACM,WAAW,CAAC5J,WAAW,CAClDpzF,SAAS,GAAGjB,KAAK,EACjBkB,UAAU,GAAGlB,KAAK,EAClBA,KAAK,EACL,IAAI,CAACw+F,aACP,CAAC;QACDK,cAAc,EAAElB,aAAa,CAAC,CAACQ,qBAAqB;QACpDN,eAAe,EAAE,CAACqE;MACpB,CACF,CAAC;MACD,IAAI,CAACJ,QAAQ,CAAC,IAAI,CAAC;MACnB,OAAO\u002F4F,MAAM;IACf;IAEAqE,MAAM,CAACutF,SAAS,CAACx0F,MAAM,CAAC,IAAI,CAAC43F,cAAc,CAAC;IAC5C,IAAI,CAAC+D,QAAQ,CAAC,IAAI,CAAC;IACnB,OAAO,IAAI;EACb;EAMAK,oBAAoBA,CAACC,KAAK,EAAE,CAAC;EAY7B,OAAOC,eAAeA,CACpBC,MAAM,EACNC,MAAM,EACNC,UAAU,EACVC,WAAW,EACXC,WAAW,EACXN,KAAK,EACL;IACAr1G,WAAW,CAAC,iBAAiB,CAAC;EAChC;EAGA,aAAa0zB,WAAWA,CAAC\u002FR,IAAI,EAAEtB,MAAM,EAAEV,SAAS,EAAE;IAChD,MAAM;MACJ3L,OAAO,EAAE;QAAEE,SAAS;QAAEC,UAAU;QAAEC,KAAK;QAAEC;MAAM;IACjD,CAAC,GAAGgM,MAAM,CAACxG,QAAQ;IACnB,MAAMg3F,YAAY,GAAG,IAAI,CAACyE,eAAe,CACvClhG,KAAK,EACLC,KAAK,EACLH,SAAS,EACTC,UAAU,EACV,IAAI,CAACs9F,aAAa,EAClB9vF,IACF,CAAC;IACD,MAAM3F,MAAM,GAAG,MAAM,KAAK,CAAC0X,WAAW,CAAC\u002FR,IAAI,EAAEtB,MAAM,EAAEV,SAAS,CAAC;IAC\u002FD3D,MAAM,CAACo5F,oBAAoB,CAACzzF,IAAI,CAAC;IACjC3F,MAAM,CAAC,CAAC21F,kBAAkB,CAAC;MAAEd;IAAa,CAAC,CAAC;IAC5C70F,MAAM,CAAC,CAACqxF,cAAc,CAAC,CAAC;IACxBrxF,MAAM,CAAC2P,eAAe,CAAC,CAAC;IACxB3P,MAAM,CAAC4yB,MAAM,CAAC,CAAC;IAEf,OAAO5yB,MAAM;EACf;EAEA45F,aAAaA,CAACt4E,YAAY,EAAE;IAC1B,MAAM,CAAClpB,KAAK,EAAEC,KAAK,CAAC,GAAG,IAAI,CAACwvB,eAAe;IAC3C,MAAM,CAAC3vB,SAAS,EAAEC,UAAU,CAAC,GAAG,IAAI,CAACyvB,cAAc;IACnD,OAAO,IAAI,CAAC,CAACitE,YAAY,CAACrrF,SAAS,CACjC,CAACpR,KAAK,EAAEC,KAAK,EAAEH,SAAS,EAAEC,UAAU,CAAC,EACrCmpB,YACF,CAAC;EACH;EAGApC,uBAAuBA,CAACC,UAAU,EAAE;IAClCA,UAAU,CAACyzD,YAAY,CAAC;MACtBxmF,IAAI,EAAE,IAAI,CAAC0lC,OAAO,CAAC,CAAC,EAAE,CAAC;IACzB,CAAC,CAAC;IAEF,OAAO,IAAI;EACb;EAEA,OAAOlY,uBAAuBA,CAAA,EAAG;IAC\u002FB,OAAO,KAAK;EACd;AACF;;;;;;;;;ACh9B0D;AACnB;AAEvC,MAAMigF,eAAe,CAAC;EAEpB,CAACrQ,IAAI,GAAG,IAAIsQ,YAAY,CAAC,CAAC,CAAC;EAE3B,CAACnZ,IAAI;EAEL,CAACC,KAAK;EAEN,CAAC1pF,QAAQ;EAET,CAACqrF,SAAS;EAEV,CAACN,MAAM;EAEP,CAAC8X,WAAW,GAAG,EAAE;EAEjB,CAACC,SAAS,GAAG,CAAC;EAEd,CAACxM,QAAQ,GAAG,IAAIyM,cAAc,CAAC,CAAC;EAEhC,CAACt7E,WAAW;EAEZ,CAACC,YAAY;EAEbn4B,WAAWA,CAACgI,CAAC,EAAEC,CAAC,EAAEiwB,WAAW,EAAEC,YAAY,EAAE1nB,QAAQ,EAAEqrF,SAAS,EAAE;IAChE,IAAI,CAAC,CAAC5jE,WAAW,GAAGA,WAAW;IAC\u002FB,IAAI,CAAC,CAACC,YAAY,GAAGA,YAAY;IACjC,IAAI,CAAC,CAAC1nB,QAAQ,GAAGA,QAAQ;IACzB,IAAI,CAAC,CAACqrF,SAAS,GAAGA,SAAS;IAE3B,CAAC9zF,CAAC,EAAEC,CAAC,CAAC,GAAG,IAAI,CAAC,CAACwrG,cAAc,CAACzrG,CAAC,EAAEC,CAAC,CAAC;IAEnC,MAAMiyF,IAAI,GAAI,IAAI,CAAC,CAACA,IAAI,GAAG,CAACn4E,GAAG,EAAEA,GAAG,EAAEA,GAAG,EAAEA,GAAG,EAAE\u002FZ,CAAC,EAAEC,CAAC,CAAE;IACtD,IAAI,CAAC,CAACuzF,MAAM,GAAG,CAACxzF,CAAC,EAAEC,CAAC,CAAC;IACrB,IAAI,CAAC,CAACkyF,KAAK,GAAG,CAAC;MAAED,IAAI;MAAEsB,MAAM,EAAE,IAAI,CAAC,CAACA;IAAO,CAAC,CAAC;IAC9C,IAAI,CAAC,CAACuH,IAAI,CAACrsF,GAAG,CAACwjF,IAAI,EAAE,CAAC,CAAC;EACzB;EAEA6T,cAAcA,CAACjuG,IAAI,EAAEV,KAAK,EAAE;IAC1B,IAAIU,IAAI,KAAK,cAAc,EAAE;MAC3B,IAAI,CAAC,CAACg8F,SAAS,GAAG18F,KAAK;IACzB;EACF;EAEA,CAACq0G,cAAcC,CAAC1rG,CAAC,EAAEC,CAAC,EAAE;IACpB,OAAOi6F,OAAO,CAACQ,eAAe,CAC5B16F,CAAC,EACDC,CAAC,EACD,IAAI,CAAC,CAACiwB,WAAW,EACjB,IAAI,CAAC,CAACC,YAAY,EAClB,IAAI,CAAC,CAAC1nB,QACR,CAAC;EACH;EAEAmW,OAAOA,CAAA,EAAG;IACR,OAAO,CAAC,IAAI,CAAC,CAACuzE,KAAK,IAAI,IAAI,CAAC,CAACA,KAAK,CAAC97F,MAAM,KAAK,CAAC;EACjD;EAEA4zG,aAAaA,CAAA,EAAG;IAGd,OAAO,IAAI,CAAC,CAACzW,MAAM,CAACn9F,MAAM,IAAI,EAAE;EAClC;EAEAgc,GAAGA,CAACrS,CAAC,EAAEC,CAAC,EAAE;IAGR,CAACD,CAAC,EAAEC,CAAC,CAAC,GAAG,IAAI,CAAC,CAACwrG,cAAc,CAACzrG,CAAC,EAAEC,CAAC,CAAC;IACnC,MAAM,CAACI,EAAE,EAAEC,EAAE,EAAEG,EAAE,EAAEE,EAAE,CAAC,GAAG,IAAI,CAAC,CAACo6F,IAAI,CAACvhG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IAClD,MAAMiiG,KAAK,GAAGz7F,CAAC,GAAGS,EAAE;IACpB,MAAMi7F,KAAK,GAAGz7F,CAAC,GAAGU,EAAE;IACpB,MAAMlD,CAAC,GAAGpE,IAAI,CAACi9B,KAAK,CAAC,IAAI,CAAC,CAACpG,WAAW,GAAGurE,KAAK,EAAE,IAAI,CAAC,CAACtrE,YAAY,GAAGurE,KAAK,CAAC;IAC3E,IAAIj+F,CAAC,IAAI,CAAC,EAAE;MAIV,OAAO,IAAI;IACb;IAEA,IAAI,CAAC,CAAC+1F,MAAM,CAAC\u002F5F,IAAI,CAACuG,CAAC,EAAEC,CAAC,CAAC;IAEvB,IAAIkvC,KAAK,CAAC9uC,EAAE,CAAC,EAAE;MAEb,IAAI,CAAC,CAAC06F,IAAI,CAACrsF,GAAG,CAAC,CAACjO,EAAE,EAAEE,EAAE,EAAEX,CAAC,EAAEC,CAAC,CAAC,EAAE,CAAC,CAAC;MACjC,IAAI,CAAC,CAACiyF,IAAI,CAACz4F,IAAI,CAACsgB,GAAG,EAAEA,GAAG,EAAEA,GAAG,EAAEA,GAAG,EAAE\u002FZ,CAAC,EAAEC,CAAC,CAAC;MACzC,OAAO;QACL2uC,IAAI,EAAE;UACJnxC,CAAC,EAAE,IAAI,CAAC28F,SAAS,CAAC;QACpB;MACF,CAAC;IACH;IAEA,IAAIjrD,KAAK,CAAC,IAAI,CAAC,CAAC4rD,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;MAExB,IAAI,CAAC,CAAC7I,IAAI,CAAC\u002F3E,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IACzB;IAEA,IAAI,CAAC,CAAC4gF,IAAI,CAACrsF,GAAG,CAAC,CAACrO,EAAE,EAAEC,EAAE,EAAEG,EAAE,EAAEE,EAAE,EAAEX,CAAC,EAAEC,CAAC,CAAC,EAAE,CAAC,CAAC;IACzC,IAAI,CAAC,CAACiyF,IAAI,CAACz4F,IAAI,CAAC,GAAGygG,OAAO,CAACU,kBAAkB,CAACv6F,EAAE,EAAEC,EAAE,EAAEG,EAAE,EAAEE,EAAE,EAAEX,CAAC,EAAEC,CAAC,CAAC,CAAC;IAEpE,OAAO;MACL2uC,IAAI,EAAE;QACJnxC,CAAC,EAAE,IAAI,CAAC28F,SAAS,CAAC;MACpB;IACF,CAAC;EACH;EAEAvuF,GAAGA,CAAC7L,CAAC,EAAEC,CAAC,EAAE;IACR,MAAMwuF,MAAM,GAAG,IAAI,CAACp8E,GAAG,CAACrS,CAAC,EAAEC,CAAC,CAAC;IAC7B,IAAIwuF,MAAM,EAAE;MACV,OAAOA,MAAM;IACf;IACA,IAAI,IAAI,CAAC,CAAC+E,MAAM,CAACn9F,MAAM,KAAK,CAAC,EAAE;MAE7B,OAAO;QACLu4C,IAAI,EAAE;UACJnxC,CAAC,EAAE,IAAI,CAAC28F,SAAS,CAAC;QACpB;MACF,CAAC;IACH;IACA,OAAO,IAAI;EACb;EAEAiQ,QAAQA,CAACrqG,CAAC,EAAEC,CAAC,EAAEiwB,WAAW,EAAEC,YAAY,EAAE1nB,QAAQ,EAAE;IAClD,IAAI,CAAC,CAACynB,WAAW,GAAGA,WAAW;IAC\u002FB,IAAI,CAAC,CAACC,YAAY,GAAGA,YAAY;IACjC,IAAI,CAAC,CAAC1nB,QAAQ,GAAGA,QAAQ;IAEzB,CAACzI,CAAC,EAAEC,CAAC,CAAC,GAAG,IAAI,CAAC,CAACwrG,cAAc,CAACzrG,CAAC,EAAEC,CAAC,CAAC;IAEnC,MAAMiyF,IAAI,GAAI,IAAI,CAAC,CAACA,IAAI,GAAG,CAACn4E,GAAG,EAAEA,GAAG,EAAEA,GAAG,EAAEA,GAAG,EAAE\u002FZ,CAAC,EAAEC,CAAC,CAAE;IACtD,IAAI,CAAC,CAACuzF,MAAM,GAAG,CAACxzF,CAAC,EAAEC,CAAC,CAAC;IACrB,MAAM86F,IAAI,GAAG,IAAI,CAAC,CAAC5I,KAAK,CAACr3E,EAAE,CAAC,CAAC,CAAC,CAAC;IAC\u002FB,IAAIigF,IAAI,EAAE;MACRA,IAAI,CAAC7I,IAAI,GAAG,IAAIjxC,YAAY,CAAC85C,IAAI,CAAC7I,IAAI,CAAC;MACvC6I,IAAI,CAACvH,MAAM,GAAG,IAAIvyC,YAAY,CAAC85C,IAAI,CAACvH,MAAM,CAAC;IAC7C;IACA,IAAI,CAAC,CAACrB,KAAK,CAAC14F,IAAI,CAAC;MAAEy4F,IAAI;MAAEsB,MAAM,EAAE,IAAI,CAAC,CAACA;IAAO,CAAC,CAAC;IAChD,IAAI,CAAC,CAACuH,IAAI,CAACrsF,GAAG,CAACwjF,IAAI,EAAE,CAAC,CAAC;IACvB,IAAI,CAAC,CAACqZ,SAAS,GAAG,CAAC;IACnB,IAAI,CAACnR,SAAS,CAAC,CAAC;IAEhB,OAAO,IAAI;EACb;EAEAoQ,cAAcA,CAAA,EAAG;IACf,OAAO,IAAI,CAAC,CAACrY,KAAK,CAACr3E,EAAE,CAAC,CAAC,CAAC,CAAC;EAC3B;EAEA2vF,cAAcA,CAACj3F,OAAO,EAAE;IACtB,IAAI,CAAC,IAAI,CAAC,CAAC2+E,KAAK,EAAE;MAChB,OAAO,IAAI,CAAC,CAAC4M,QAAQ,CAAC0L,cAAc,CAACj3F,OAAO,CAAC;IAC\u002FC;IACA,IAAI,CAAC,CAAC2+E,KAAK,CAAC14F,IAAI,CAAC+Z,OAAO,CAAC;IACzB,IAAI,CAAC,CAAC0+E,IAAI,GAAG1+E,OAAO,CAAC0+E,IAAI;IACzB,IAAI,CAAC,CAACsB,MAAM,GAAGhgF,OAAO,CAACggF,MAAM;IAC7B,IAAI,CAAC,CAAC+X,SAAS,GAAG,CAAC;IACnB,OAAO;MACL38D,IAAI,EAAE;QACJnxC,CAAC,EAAE,IAAI,CAAC28F,SAAS,CAAC;MACpB;IACF,CAAC;EACH;EAEA8P,iBAAiBA,CAAA,EAAG;IAClB,IAAI,CAAC,IAAI,CAAC,CAAC\u002FX,KAAK,EAAE;MAChB,OAAO,IAAI,CAAC,CAAC4M,QAAQ,CAACmL,iBAAiB,CAAC,CAAC;IAC3C;IACA,IAAI,CAAC,CAAC\u002FX,KAAK,CAACl+B,GAAG,CAAC,CAAC;IACjB,IAAI,CAAC,CAACq3C,WAAW,GAAG,EAAE;IACtB,KAAK,IAAInyG,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAG,IAAI,CAAC,CAACiwF,KAAK,CAAC97F,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,EAAE,EAAE;MACpD,MAAM;QAAE+4F,IAAI;QAAEsB;MAAO,CAAC,GAAG,IAAI,CAAC,CAACrB,KAAK,CAACh5F,CAAC,CAAC;MACvC,IAAI,CAAC,CAAC+4F,IAAI,GAAGA,IAAI;MACjB,IAAI,CAAC,CAACsB,MAAM,GAAGA,MAAM;MACrB,IAAI,CAAC,CAAC+X,SAAS,GAAG,CAAC;MACnB,IAAI,CAACnR,SAAS,CAAC,CAAC;IAClB;IAEA,OAAO;MACLxrD,IAAI,EAAE;QACJnxC,CAAC,EAAE,IAAI,CAAC,CAAC6tG;MACX;IACF,CAAC;EACH;EAEAlR,SAASA,CAAA,EAAG;IACV,MAAMuR,MAAM,GAAGzR,OAAO,CAACO,QAAQ,CAAC,IAAI,CAAC,CAACvI,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM0Z,MAAM,GAAG1R,OAAO,CAACO,QAAQ,CAAC,IAAI,CAAC,CAACvI,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9C,IAAI,IAAI,CAAC,CAACsB,MAAM,CAACn9F,MAAM,KAAK,CAAC,EAAE;MAC7B,IAAI,CAAC,CAACi1G,WAAW,GAAG,GAAG,IAAI,CAAC,CAACA,WAAW,MAAMK,MAAM,IAAIC,MAAM,IAAI;MAClE,OAAO,IAAI,CAAC,CAACN,WAAW;IAC1B;IAEA,IAAI,IAAI,CAAC,CAAC9X,MAAM,CAACn9F,MAAM,IAAI,CAAC,EAAE;MAE5B,MAAM8C,CAAC,GAAG,IAAI,CAAC,CAACmyG,WAAW,CAACzgG,WAAW,CAAC,GAAG,CAAC;MAC5C,IAAI,CAAC,CAACygG,WAAW,GAAG,GAAG,IAAI,CAAC,CAACA,WAAW,CAAC\u002FrG,KAAK,CAAC,CAAC,EAAEpG,CAAC,CAAC,MAAMwyG,MAAM,IAAIC,MAAM,EAAE;MAC5E,IAAI,CAAC,CAACL,SAAS,GAAG,CAAC;IACrB;IAEA,IAAI,IAAI,CAAC,CAAC\u002FX,MAAM,CAACn9F,MAAM,KAAK,CAAC,EAAE;MAC7B,MAAMw1G,OAAO,GAAG3R,OAAO,CAACO,QAAQ,CAAC,IAAI,CAAC,CAACvI,IAAI,CAAC,EAAE,CAAC,CAAC;MAChD,MAAM4Z,OAAO,GAAG5R,OAAO,CAACO,QAAQ,CAAC,IAAI,CAAC,CAACvI,IAAI,CAAC,EAAE,CAAC,CAAC;MAChD,IAAI,CAAC,CAACoZ,WAAW,GAAG,GAAG,IAAI,CAAC,CAACA,WAAW,MAAMO,OAAO,IAAIC,OAAO,EAAE;MAClE,IAAI,CAAC,CAACP,SAAS,GAAG,EAAE;MACpB,OAAO,IAAI,CAAC,CAACD,WAAW;IAC1B;IAEA,MAAMhxG,MAAM,GAAG,EAAE;IACjB,IAAI,IAAI,CAAC,CAACixG,SAAS,KAAK,CAAC,EAAE;MACzBjxG,MAAM,CAACb,IAAI,CAAC,KAAKkyG,MAAM,IAAIC,MAAM,EAAE,CAAC;MACpC,IAAI,CAAC,CAACL,SAAS,GAAG,CAAC;IACrB;IAEA,KAAK,IAAIpyG,CAAC,GAAG,IAAI,CAAC,CAACoyG,SAAS,EAAErpG,EAAE,GAAG,IAAI,CAAC,CAACgwF,IAAI,CAAC77F,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,IAAI,CAAC,EAAE;MACpE,MAAM,CAAC4yG,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAElsG,CAAC,EAAEC,CAAC,CAAC,GAAG,IAAI,CAAC,CAACiyF,IAAI,CAC1C3yF,KAAK,CAACpG,CAAC,EAAEA,CAAC,GAAG,CAAC,CAAC,CACf2U,GAAG,CAACosF,OAAO,CAACO,QAAQ,CAAC;MACxBngG,MAAM,CAACb,IAAI,CAAC,IAAIsyG,GAAG,IAAIC,GAAG,IAAIC,GAAG,IAAIC,GAAG,IAAIlsG,CAAC,IAAIC,CAAC,EAAE,CAAC;IACvD;IACA,IAAI,CAAC,CAACqrG,WAAW,IAAIhxG,MAAM,CAACZ,IAAI,CAAC,GAAG,CAAC;IACrC,IAAI,CAAC,CAAC6xG,SAAS,GAAG,IAAI,CAAC,CAACrZ,IAAI,CAAC77F,MAAM;IAEnC,OAAO,IAAI,CAAC,CAACi1G,WAAW;EAC1B;EAEAzO,WAAWA,CAAC3sE,WAAW,EAAEC,YAAY,EAAE3nB,KAAK,EAAEsyF,WAAW,EAAE;IACzD,MAAMC,IAAI,GAAG,IAAI,CAAC,CAAC5I,KAAK,CAACr3E,EAAE,CAAC,CAAC,CAAC,CAAC;IAC\u002FBigF,IAAI,CAAC7I,IAAI,GAAG,IAAIjxC,YAAY,CAAC85C,IAAI,CAAC7I,IAAI,CAAC;IACvC6I,IAAI,CAACvH,MAAM,GAAG,IAAIvyC,YAAY,CAAC85C,IAAI,CAACvH,MAAM,CAAC;IAE3C,IAAI,CAAC,CAACuL,QAAQ,CAACthB,KAAK,CAClB,IAAI,CAAC,CAAC0U,KAAK,EACXjiE,WAAW,EACXC,YAAY,EACZ3nB,KAAK,EACL,IAAI,CAAC,CAACC,QAAQ,EACd,IAAI,CAAC,CAACqrF,SAAS,EACfgH,WACF,CAAC;IAGD,IAAI,CAAC,CAACC,IAAI,GAAG,IAAI;IACjB,IAAI,CAAC,CAAC7I,IAAI,GAAG,IAAI;IACjB,IAAI,CAAC,CAACC,KAAK,GAAG,IAAI;IAClB,IAAI,CAAC,CAACmZ,WAAW,GAAG,IAAI;IAExB,OAAO,IAAI,CAAC,CAACvM,QAAQ;EACvB;EAEA,IAAI6I,oBAAoBA,CAAA,EAAG;IACzB,OAAO;MACL1nB,IAAI,EAAE;QACJ53E,OAAO,EAAE;MACX,CAAC;MACDg7F,SAAS,EAAE;QACTqB,IAAI,EAAE;MACR,CAAC;MACDvpD,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACnB,CAAC;EACH;AACF;AAEA,MAAMowD,cAAc,SAAStR,OAAO,CAAC;EACnC,CAAC9+C,IAAI;EAEL,CAAC+wD,eAAe,GAAG,CAAC;EAEpB,CAACrR,WAAW;EAEZ,CAAC3I,KAAK;EAEN,CAACjiE,WAAW;EAEZ,CAACC,YAAY;EAEb,CAAC+M,WAAW;EAEZ,CAACz0B,QAAQ;EAET,CAACqrF,SAAS;EAEVrW,KAAKA,CACH0U,KAAK,EACLjiE,WAAW,EACXC,YAAY,EACZ+M,WAAW,EACXz0B,QAAQ,EACRqrF,SAAS,EACTgH,WAAW,EACX;IACA,IAAI,CAAC,CAAC5qE,WAAW,GAAGA,WAAW;IAC\u002FB,IAAI,CAAC,CAACC,YAAY,GAAGA,YAAY;IACjC,IAAI,CAAC,CAAC+M,WAAW,GAAGA,WAAW;IAC\u002FB,IAAI,CAAC,CAACz0B,QAAQ,GAAGA,QAAQ;IACzB,IAAI,CAAC,CAACqrF,SAAS,GAAGA,SAAS;IAC3B,IAAI,CAAC,CAACgH,WAAW,GAAGA,WAAW,IAAI,CAAC;IACpC,IAAI,CAAC,CAAC3I,KAAK,GAAGA,KAAK;IAEnB,IAAI,CAAC,CAACia,WAAW,CAAC,CAAC;EACrB;EAEA,IAAItY,SAASA,CAAA,EAAG;IACd,OAAO,IAAI,CAAC,CAACA,SAAS;EACxB;EAEA2W,cAAcA,CAACj3F,OAAO,EAAE;IACtB,IAAI,CAAC,CAAC2+E,KAAK,CAAC14F,IAAI,CAAC+Z,OAAO,CAAC;IACzB,OAAO;MACLo7B,IAAI,EAAE;QACJnxC,CAAC,EAAE,IAAI,CAAC28F,SAAS,CAAC;MACpB;IACF,CAAC;EACH;EAEA8P,iBAAiBA,CAAA,EAAG;IAClB,IAAI,CAAC,CAAC\u002FX,KAAK,CAACl+B,GAAG,CAAC,CAAC;IACjB,OAAO;MACLrlB,IAAI,EAAE;QACJnxC,CAAC,EAAE,IAAI,CAAC28F,SAAS,CAAC;MACpB;IACF,CAAC;EACH;EAEAA,SAASA,CAAA,EAAG;IACV,MAAM9\u002FF,MAAM,GAAG,EAAE;IACjB,KAAK,MAAM;MAAE43F;IAAK,CAAC,IAAI,IAAI,CAAC,CAACC,KAAK,EAAE;MAClC73F,MAAM,CAACb,IAAI,CAAC,IAAIygG,OAAO,CAACO,QAAQ,CAACvI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAIgI,OAAO,CAACO,QAAQ,CAACvI,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;MACzE,IAAIA,IAAI,CAAC77F,MAAM,KAAK,CAAC,EAAE;QACrBiE,MAAM,CAACb,IAAI,CAAC,GAAG,CAAC;QAChB;MACF;MACA,IAAIy4F,IAAI,CAAC77F,MAAM,KAAK,EAAE,IAAI84C,KAAK,CAAC+iD,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;QACxC53F,MAAM,CAACb,IAAI,CACT,IAAIygG,OAAO,CAACO,QAAQ,CAACvI,IAAI,CAAC,EAAE,CAAC,CAAC,IAAIgI,OAAO,CAACO,QAAQ,CAACvI,IAAI,CAAC,EAAE,CAAC,CAAC,EAC9D,CAAC;QACD;MACF;MACA,KAAK,IAAI\u002F4F,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAGgwF,IAAI,CAAC77F,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,IAAI,CAAC,EAAE;QAChD,MAAM,CAAC4yG,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAEC,GAAG,EAAElsG,CAAC,EAAEC,CAAC,CAAC,GAAGiyF,IAAI,CACpC14F,QAAQ,CAACL,CAAC,EAAEA,CAAC,GAAG,CAAC,CAAC,CAClB2U,GAAG,CAACosF,OAAO,CAACO,QAAQ,CAAC;QACxBngG,MAAM,CAACb,IAAI,CAAC,IAAIsyG,GAAG,IAAIC,GAAG,IAAIC,GAAG,IAAIC,GAAG,IAAIlsG,CAAC,IAAIC,CAAC,EAAE,CAAC;MACvD;IACF;IACA,OAAO3F,MAAM,CAACZ,IAAI,CAAC,EAAE,CAAC;EACxB;EAEAqhB,SAASA,CAAC,CAACpR,KAAK,EAAEC,KAAK,EAAEH,SAAS,EAAEC,UAAU,CAAC,EAAEmpB,YAAY,EAAE;IAC7D,MAAMw5E,eAAe,GAAG,EAAE;IAC1B,MAAMC,gBAAgB,GAAG,EAAE;IAC3B,MAAM,CAACtsG,CAAC,EAAEC,CAAC,EAAEoJ,KAAK,EAAEC,MAAM,CAAC,GAAG,IAAI,CAAC,CAACijG,mBAAmB,CAAC,CAAC;IACzD,IAAIl9E,EAAE,EAAEC,EAAE,EAAEvf,EAAE,EAAEC,EAAE,EAAE3P,EAAE,EAAEC,EAAE,EAAEG,EAAE,EAAEE,EAAE,EAAE6rG,SAAS;IAE7C,QAAQ,IAAI,CAAC,CAAC\u002FjG,QAAQ;MACpB,KAAK,CAAC;QACJ+jG,SAAS,GAAGtS,OAAO,CAACI,QAAQ;QAC5BjrE,EAAE,GAAG1lB,KAAK;QACV2lB,EAAE,GAAG1lB,KAAK,GAAGF,UAAU;QACvBqG,EAAE,GAAGtG,SAAS;QACduG,EAAE,GAAG,CAACtG,UAAU;QAChBrJ,EAAE,GAAGsJ,KAAK,GAAG3J,CAAC,GAAGyJ,SAAS;QAC1BnJ,EAAE,GAAGsJ,KAAK,GAAG,CAAC,CAAC,GAAG3J,CAAC,GAAGqJ,MAAM,IAAII,UAAU;QAC1CjJ,EAAE,GAAGkJ,KAAK,GAAG,CAAC3J,CAAC,GAAGqJ,KAAK,IAAII,SAAS;QACpC9I,EAAE,GAAGiJ,KAAK,GAAG,CAAC,CAAC,GAAG3J,CAAC,IAAIyJ,UAAU;QACjC;MACF,KAAK,EAAE;QACL8iG,SAAS,GAAGtS,OAAO,CAACK,eAAe;QACnClrE,EAAE,GAAG1lB,KAAK;QACV2lB,EAAE,GAAG1lB,KAAK;QACVmG,EAAE,GAAGtG,SAAS;QACduG,EAAE,GAAGtG,UAAU;QACfrJ,EAAE,GAAGsJ,KAAK,GAAG1J,CAAC,GAAGwJ,SAAS;QAC1BnJ,EAAE,GAAGsJ,KAAK,GAAG5J,CAAC,GAAG0J,UAAU;QAC3BjJ,EAAE,GAAGkJ,KAAK,GAAG,CAAC1J,CAAC,GAAGqJ,MAAM,IAAIG,SAAS;QACrC9I,EAAE,GAAGiJ,KAAK,GAAG,CAAC5J,CAAC,GAAGqJ,KAAK,IAAIK,UAAU;QACrC;MACF,KAAK,GAAG;QACN8iG,SAAS,GAAGtS,OAAO,CAACI,QAAQ;QAC5BjrE,EAAE,GAAG1lB,KAAK,GAAGF,SAAS;QACtB6lB,EAAE,GAAG1lB,KAAK;QACVmG,EAAE,GAAG,CAACtG,SAAS;QACfuG,EAAE,GAAGtG,UAAU;QACfrJ,EAAE,GAAGsJ,KAAK,GAAG,CAAC,CAAC,GAAG3J,CAAC,GAAGqJ,KAAK,IAAII,SAAS;QACxCnJ,EAAE,GAAGsJ,KAAK,GAAG3J,CAAC,GAAGyJ,UAAU;QAC3BjJ,EAAE,GAAGkJ,KAAK,GAAG,CAAC,CAAC,GAAG3J,CAAC,IAAIyJ,SAAS;QAChC9I,EAAE,GAAGiJ,KAAK,GAAG,CAAC3J,CAAC,GAAGqJ,MAAM,IAAII,UAAU;QACtC;MACF,KAAK,GAAG;QACN8iG,SAAS,GAAGtS,OAAO,CAACK,eAAe;QACnClrE,EAAE,GAAG1lB,KAAK,GAAGF,SAAS;QACtB6lB,EAAE,GAAG1lB,KAAK,GAAGF,UAAU;QACvBqG,EAAE,GAAG,CAACtG,SAAS;QACfuG,EAAE,GAAG,CAACtG,UAAU;QAChBrJ,EAAE,GAAGsJ,KAAK,GAAG,CAAC,CAAC,GAAG1J,CAAC,GAAGqJ,MAAM,IAAIG,SAAS;QACzCnJ,EAAE,GAAGsJ,KAAK,GAAG,CAAC,CAAC,GAAG5J,CAAC,GAAGqJ,KAAK,IAAIK,UAAU;QACzCjJ,EAAE,GAAGkJ,KAAK,GAAG,CAAC,CAAC,GAAG1J,CAAC,IAAIwJ,SAAS;QAChC9I,EAAE,GAAGiJ,KAAK,GAAG,CAAC,CAAC,GAAG5J,CAAC,IAAI0J,UAAU;QACjC;IACJ;IAEA,KAAK,MAAM;MAAEwoF,IAAI;MAAEsB;IAAO,CAAC,IAAI,IAAI,CAAC,CAACrB,KAAK,EAAE;MAC1Cka,eAAe,CAAC5yG,IAAI,CAClB+yG,SAAS,CACPta,IAAI,EACJ7iE,EAAE,EACFC,EAAE,EACFvf,EAAE,EACFC,EAAE,EACF6iB,YAAY,GAAG,IAAIj3B,KAAK,CAACs2F,IAAI,CAAC77F,MAAM,CAAC,GAAG,IAC1C,CACF,CAAC;MACDi2G,gBAAgB,CAAC7yG,IAAI,CACnB+yG,SAAS,CACPhZ,MAAM,EACNnkE,EAAE,EACFC,EAAE,EACFvf,EAAE,EACFC,EAAE,EACF6iB,YAAY,GAAG,IAAIj3B,KAAK,CAAC43F,MAAM,CAACn9F,MAAM,CAAC,GAAG,IAC5C,CACF,CAAC;IACH;IAEA,OAAO;MACL87F,KAAK,EAAEka,eAAe;MACtB7Y,MAAM,EAAE8Y,gBAAgB;MACxB3uG,IAAI,EAAE,CAAC0C,EAAE,EAAEC,EAAE,EAAEG,EAAE,EAAEE,EAAE;IACvB,CAAC;EACH;EAEA,OAAOsoB,WAAWA,CAChBtf,KAAK,EACLC,KAAK,EACLH,SAAS,EACTC,UAAU,EACVoxF,WAAW,EACX;IAAEpmC,KAAK,EAAE;MAAEy9B,KAAK;MAAEqB;IAAO,CAAC;IAAE\u002FqF,QAAQ;IAAEqrF;EAAU,CAAC,EACjD;IACA,MAAM2Y,QAAQ,GAAG,EAAE;IACnB,IAAIp9E,EAAE,EAAEC,EAAE,EAAEvf,EAAE,EAAEC,EAAE,EAAEw8F,SAAS;IAC7B,QAAQ\u002FjG,QAAQ;MACd,KAAK,CAAC;QACJ+jG,SAAS,GAAGtS,OAAO,CAACI,QAAQ;QAC5BjrE,EAAE,GAAG,CAAC1lB,KAAK,GAAGF,SAAS;QACvB6lB,EAAE,GAAG1lB,KAAK,GAAGF,UAAU,GAAG,CAAC;QAC3BqG,EAAE,GAAG,CAAC,GAAGtG,SAAS;QAClBuG,EAAE,GAAG,CAAC,CAAC,GAAGtG,UAAU;QACpB;MACF,KAAK,EAAE;QACL8iG,SAAS,GAAGtS,OAAO,CAACK,eAAe;QACnClrE,EAAE,GAAG,CAACzlB,KAAK,GAAGF,UAAU;QACxB4lB,EAAE,GAAG,CAAC3lB,KAAK,GAAGF,SAAS;QACvBsG,EAAE,GAAG,CAAC,GAAGrG,UAAU;QACnBsG,EAAE,GAAG,CAAC,GAAGvG,SAAS;QAClB;MACF,KAAK,GAAG;QACN+iG,SAAS,GAAGtS,OAAO,CAACI,QAAQ;QAC5BjrE,EAAE,GAAG1lB,KAAK,GAAGF,SAAS,GAAG,CAAC;QAC1B6lB,EAAE,GAAG,CAAC1lB,KAAK,GAAGF,UAAU;QACxBqG,EAAE,GAAG,CAAC,CAAC,GAAGtG,SAAS;QACnBuG,EAAE,GAAG,CAAC,GAAGtG,UAAU;QACnB;MACF,KAAK,GAAG;QACN8iG,SAAS,GAAGtS,OAAO,CAACK,eAAe;QACnClrE,EAAE,GAAGzlB,KAAK,GAAGF,UAAU,GAAG,CAAC;QAC3B4lB,EAAE,GAAG3lB,KAAK,GAAGF,SAAS,GAAG,CAAC;QAC1BsG,EAAE,GAAG,CAAC,CAAC,GAAGrG,UAAU;QACpBsG,EAAE,GAAG,CAAC,CAAC,GAAGvG,SAAS;QACnB;IACJ;IAEA,IAAI,CAAC0oF,KAAK,EAAE;MACVA,KAAK,GAAG,EAAE;MACV,KAAK,MAAMxyD,KAAK,IAAI6zD,MAAM,EAAE;QAC1B,MAAMtuC,GAAG,GAAGvlB,KAAK,CAACtpC,MAAM;QACxB,IAAI6uD,GAAG,KAAK,CAAC,EAAE;UACbitC,KAAK,CAAC14F,IAAI,CACR,IAAIwnD,YAAY,CAAC,CAAClnC,GAAG,EAAEA,GAAG,EAAEA,GAAG,EAAEA,GAAG,EAAE4lB,KAAK,CAAC,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC,CAAC,CAAC,CAC3D,CAAC;UACD;QACF;QACA,IAAIulB,GAAG,KAAK,CAAC,EAAE;UACbitC,KAAK,CAAC14F,IAAI,CACR,IAAIwnD,YAAY,CAAC,CACflnC,GAAG,EACHA,GAAG,EACHA,GAAG,EACHA,GAAG,EACH4lB,KAAK,CAAC,CAAC,CAAC,EACRA,KAAK,CAAC,CAAC,CAAC,EACR5lB,GAAG,EACHA,GAAG,EACHA,GAAG,EACHA,GAAG,EACH4lB,KAAK,CAAC,CAAC,CAAC,EACRA,KAAK,CAAC,CAAC,CAAC,CACT,CACH,CAAC;UACD;QACF;QACA,MAAMuyD,IAAI,GAAG,IAAIjxC,YAAY,CAAC,CAAC,IAAIiE,GAAG,GAAG,CAAC,CAAC,CAAC;QAC5CitC,KAAK,CAAC14F,IAAI,CAACy4F,IAAI,CAAC;QAChB,IAAI,CAAC7xF,EAAE,EAAEC,EAAE,EAAEG,EAAE,EAAEE,EAAE,CAAC,GAAGg\u002FB,KAAK,CAACnmC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3C04F,IAAI,CAACxjF,GAAG,CAAC,CAACqL,GAAG,EAAEA,GAAG,EAAEA,GAAG,EAAEA,GAAG,EAAE1Z,EAAE,EAAEC,EAAE,CAAC,EAAE,CAAC,CAAC;QACzC,KAAK,IAAInH,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+rD,GAAG,EAAE\u002FrD,CAAC,IAAI,CAAC,EAAE;UAC\u002FB,MAAM6G,CAAC,GAAG2\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\u002F4F,CAAC,CAAC,EAAE+4F,IAAI,CAAC\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\u002F8F,KAAK;IAAEkmF,SAAS;IAAE\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\u002FC,CAAC,EAAE;IAQtCz\u002FC,CAAC,IAAIy1G,EAAE;IACPh2D,CAAC,IAAIi2D,EAAE;IAEP,IAAI11G,CAAC,KAAK,CAAC,EAAE;MACX,OAAOy\u002FC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;IACtB;IAEA,IAAIz\u002FC,CAAC,KAAK,CAAC,EAAE;MACX,OAAOy\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\u002FB,KAAK,IAAIy\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\u002FrD,CAAC,IAAI,CAAC,EAAE;QAC\u002FB,MAAM6G,CAAC,GAAIo1G,SAAS,CAACj8G,CAAC,CAAC,GAAGg8G,aAAa,CAACh8G,CAAC,CAAC,GAAG67G,MAAO;QACpD,MAAM\u002F0G,CAAC,GAAIm1G,SAAS,CAACj8G,CAAC,GAAG,CAAC,CAAC,GAAGg8G,aAAa,CAACh8G,CAAC,GAAG,CAAC,CAAC,GAAG87G,MAAO;QAC5D\u002FiB,IAAI,CAACxjF,GAAG,CAACwrF,OAAO,CAACU,kBAAkB,CAACv6F,EAAE,EAAEC,EAAE,EAAEG,EAAE,EAAEE,EAAE,EAAEX,CAAC,EAAEC,CAAC,CAAC,EAAE,CAAC9G,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvE,CAACkH,EAAE,EAAEC,EAAE,EAAEG,EAAE,EAAEE,EAAE,CAAC,GAAG,CAACF,EAAE,EAAEE,EAAE,EAAEX,CAAC,EAAEC,CAAC,CAAC;MACnC;IACF;IAEA,IAAI80G,cAAc,CAAC1+G,MAAM,KAAK,CAAC,EAAE;MAC\u002FB,OAAO,IAAI;IACb;IAEA,MAAMsmG,OAAO,GAAGmY,WAAW,GACvB,IAAI5G,kBAAkB,CAAC,CAAC,GACxB,IAAI1C,cAAc,CAAC,CAAC;IAExB7O,OAAO,CAAClf,KAAK,CACXs3B,cAAc,EACdtrG,SAAS,EACTC,UAAU,EACV,CAAC,EACDjB,QAAQ,EACRqsG,WAAW,GAAG,CAAC,GAAGhhB,SAAS,EAC3BgH,WACF,CAAC;IAED,OAAO;MAAE6B,OAAO;MAAEuY,SAAS;MAAEJ,WAAW;MAAEhhB,SAAS;MAAEzqF,KAAK;MAAEC;IAAO,CAAC;EACtE;EAEA,aAAa+rG,iBAAiBA,CAAC;IAC7BtW,QAAQ;IACR+V,WAAW;IACXhhB,SAAS;IACTzqF,KAAK;IACLC;EACF,CAAC,EAAE;IAyBD,IAAIgsG,OAAO,GAAG9kG,QAAQ;IACtB,IAAI+kG,OAAO,GAAG,CAAC\u002FkG,QAAQ;IACvB,IAAIglG,cAAc,GAAG,CAAC;IACtB,KAAK,MAAMhiB,MAAM,IAAIuL,QAAQ,EAAE;MAC7ByW,cAAc,IAAIhiB,MAAM,CAACn9F,MAAM;MAC\u002FB,KAAK,IAAI8C,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAGsxF,MAAM,CAACn9F,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,EAAE,EAAE;QAC\u002FC,MAAMs8G,EAAE,GAAGjiB,MAAM,CAACr6F,CAAC,CAAC,GAAGq6F,MAAM,CAACr6F,CAAC,GAAG,CAAC,CAAC;QACpCm8G,OAAO,GAAGj8G,IAAI,CAACC,GAAG,CAACg8G,OAAO,EAAEG,EAAE,CAAC;QAC\u002FBF,OAAO,GAAGl8G,IAAI,CAACwF,GAAG,CAAC02G,OAAO,EAAEE,EAAE,CAAC;MACjC;IACF;IAEA,IAAIC,UAAU;IACd,IAAIJ,OAAO,IAAI,CAAC,GAAG,IAAIC,OAAO,IAAI,GAAG,EAAE;MACrCG,UAAU,GAAGC,SAAS;IACxB,CAAC,MAAM,IAAIL,OAAO,IAAI,CAAC,KAAK,IAAIC,OAAO,IAAI,KAAK,EAAE;MAChDG,UAAU,GAAGE,UAAU;IACzB,CAAC,MAAM;MACLF,UAAU,GAAG3G,UAAU;IACzB;IAEA,MAAM7pD,GAAG,GAAG65C,QAAQ,CAAC1oG,MAAM;IAC3B,MAAMw\u002FG,YAAY,GAAG1H,kBAAkB,GAAGC,wBAAwB,GAAGlpD,GAAG;IACxE,MAAMosC,MAAM,GAAG,IAAIj3F,WAAW,CAACw7G,YAAY,CAAC;IAE5C,IAAI9oE,MAAM,GAAG,CAAC;IACdukD,MAAM,CAACvkD,MAAM,EAAE,CAAC,GACd8oE,YAAY,GAAGx7G,WAAW,CAACy7G,iBAAiB,GAC5C,CAACN,cAAc,GAAG,CAAC,GAAGtwD,GAAG,IAAIwwD,UAAU,CAACI,iBAAiB;IAC3DxkB,MAAM,CAACvkD,MAAM,EAAE,CAAC,GAAG,CAAC;IACpBukD,MAAM,CAACvkD,MAAM,EAAE,CAAC,GAAG1jC,KAAK;IACxBioF,MAAM,CAACvkD,MAAM,EAAE,CAAC,GAAGzjC,MAAM;IACzBgoF,MAAM,CAACvkD,MAAM,EAAE,CAAC,GAAG+nE,WAAW,GAAG,CAAC,GAAG,CAAC;IACtCxjB,MAAM,CAACvkD,MAAM,EAAE,CAAC,GAAG1zC,IAAI,CAACwF,GAAG,CAAC,CAAC,EAAExF,IAAI,CAAC6iC,KAAK,CAAC43D,SAAS,IAAI,CAAC,CAAC,CAAC;IAC1DxC,MAAM,CAACvkD,MAAM,EAAE,CAAC,GAAGmY,GAAG;IACtBosC,MAAM,CAACvkD,MAAM,EAAE,CAAC,GAAG2oE,UAAU,CAACI,iBAAiB;IAC\u002FC,KAAK,MAAMtiB,MAAM,IAAIuL,QAAQ,EAAE;MAC7BzN,MAAM,CAACvkD,MAAM,EAAE,CAAC,GAAGymD,MAAM,CAACn9F,MAAM,GAAG,CAAC;MACpCi7F,MAAM,CAACvkD,MAAM,EAAE,CAAC,GAAGymD,MAAM,CAAC,CAAC,CAAC;MAC5BlC,MAAM,CAACvkD,MAAM,EAAE,CAAC,GAAGymD,MAAM,CAAC,CAAC,CAAC;IAC9B;IAEA,MAAM7zC,EAAE,GAAG,IAAIo2D,iBAAiB,CAAC,aAAa,CAAC;IAC\u002FC,MAAMC,MAAM,GAAGr2D,EAAE,CAACjoD,QAAQ,CAACu+G,SAAS,CAAC,CAAC;IACtC,MAAMD,MAAM,CAACtiE,KAAK;IAElBsiE,MAAM,CAACE,KAAK,CAAC5kB,MAAM,CAAC;IACpB,MAAM6kB,UAAU,GAAGT,UAAU,CAAC39G,SAAS,CAACC,WAAW;IACnD,KAAK,MAAMw7F,MAAM,IAAIuL,QAAQ,EAAE;MAC7B,MAAMqX,KAAK,GAAG,IAAID,UAAU,CAAC3iB,MAAM,CAACn9F,MAAM,GAAG,CAAC,CAAC;MAC\u002FC,KAAK,IAAI8C,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAGsxF,MAAM,CAACn9F,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,EAAE,EAAE;QAC\u002FCi9G,KAAK,CAACj9G,CAAC,GAAG,CAAC,CAAC,GAAGq6F,MAAM,CAACr6F,CAAC,CAAC,GAAGq6F,MAAM,CAACr6F,CAAC,GAAG,CAAC,CAAC;MAC1C;MACA68G,MAAM,CAACE,KAAK,CAACE,KAAK,CAAC;IACrB;IAEAJ,MAAM,CAAC38F,KAAK,CAAC,CAAC;IAEd,MAAMpV,GAAG,GAAG,MAAM,IAAIoyG,QAAQ,CAAC12D,EAAE,CAAC22D,QAAQ,CAAC,CAACjvG,WAAW,CAAC,CAAC;IACzD,MAAMzO,KAAK,GAAG,IAAIiB,UAAU,CAACoK,GAAG,CAAC;IAEjC,OAAOoB,YAAY,CAACzM,KAAK,CAAC;EAC5B;EAEA,aAAa29G,mBAAmBA,CAACC,aAAa,EAAE;IAC9C,IAAI;MACF,MAAM59G,KAAK,GAAG4M,cAAc,CAACgxG,aAAa,CAAC;MAC3C,MAAM;QAAEF,QAAQ;QAAE5+G;MAAS,CAAC,GAAG,IAAI++G,mBAAmB,CAAC,aAAa,CAAC;MACrE,MAAMT,MAAM,GAAGt+G,QAAQ,CAACu+G,SAAS,CAAC,CAAC;MACnC,MAAMD,MAAM,CAACtiE,KAAK;MAIlBsiE,MAAM,CACHE,KAAK,CAACt9G,KAAK,CAAC,CACZme,IAAI,CAAC,YAAY;QAChB,MAAMi\u002FF,MAAM,CAACtiE,KAAK;QAClB,MAAMsiE,MAAM,CAAC38F,KAAK,CAAC,CAAC;MACtB,CAAC,CAAC,CACD07B,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;MAElB,IAAI79B,IAAI,GAAG,IAAI;MACf,IAAI61B,MAAM,GAAG,CAAC;MACd,WAAW,MAAMxzC,KAAK,IAAI+8G,QAAQ,EAAE;QAClCp\u002FF,IAAI,KAAK,IAAIrd,UAAU,CAAC,IAAIQ,WAAW,CAACd,KAAK,CAACe,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC\u002FD4c,IAAI,CAACxI,GAAG,CAACnV,KAAK,EAAEwzC,MAAM,CAAC;QACvBA,MAAM,IAAIxzC,KAAK,CAAClD,MAAM;MACxB;MAGA,MAAMi7F,MAAM,GAAG,IAAIj3F,WAAW,CAAC6c,IAAI,CAAC5c,MAAM,EAAE,CAAC,EAAE4c,IAAI,CAAC7gB,MAAM,IAAI,CAAC,CAAC;MAChE,MAAMmnF,OAAO,GAAG8T,MAAM,CAAC,CAAC,CAAC;MACzB,IAAI9T,OAAO,KAAK,CAAC,EAAE;QACjB,MAAM,IAAIhoF,KAAK,CAAC,oBAAoBgoF,OAAO,EAAE,CAAC;MAChD;MACA,MAAMn0E,KAAK,GAAGioF,MAAM,CAAC,CAAC,CAAC;MACvB,MAAMhoF,MAAM,GAAGgoF,MAAM,CAAC,CAAC,CAAC;MACxB,MAAMwjB,WAAW,GAAGxjB,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;MACnC,MAAMwC,SAAS,GAAGxC,MAAM,CAAC,CAAC,CAAC;MAC3B,MAAMolB,gBAAgB,GAAGplB,MAAM,CAAC,CAAC,CAAC;MAClC,MAAMokB,UAAU,GAAGpkB,MAAM,CAAC,CAAC,CAAC;MAC5B,MAAMyN,QAAQ,GAAG,EAAE;MACnB,MAAM4X,WAAW,GACf,CAACxI,kBAAkB,GAAGC,wBAAwB,GAAGsI,gBAAgB,IACjEr8G,WAAW,CAACy7G,iBAAiB;MAC\u002FB,IAAIM,KAAK;MAET,QAAQV,UAAU;QAChB,KAAKC,SAAS,CAACG,iBAAiB;UAC9BM,KAAK,GAAG,IAAIT,SAAS,CAACz+F,IAAI,CAAC5c,MAAM,EAAEq8G,WAAW,CAAC;UAC\u002FC;QACF,KAAKf,UAAU,CAACE,iBAAiB;UAC\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\u002FF,IAAK;IAChD,IAAI,CAAC,CAAC6\u002FF,WAAW,GAAGpa,OAAO,YAAYuR,kBAAkB;IACzD,IAAI,CAAC,CAACp5F,WAAW,GAAGA,WAAW;IAC\u002FB,IAAI,CAAC3F,GAAG,CAACS,YAAY,CAAC,gBAAgB,EAAEgZ,IAAI,CAACC,SAAS,CAAC;MAAE\u002FT;IAAY,CAAC,CAAC,CAAC;IACxE,IAAIuyF,cAAc;IAClB,IAAI,IAAI,CAAC,CAAC0P,WAAW,EAAE;MACrB1P,cAAc,GAAGyP,eAAe,CAAChP,wBAAwB,CAAC,CAAC;IAC7D,CAAC,MAAM;MACLT,cAAc,GAAGyP,eAAe,CAACG,6BAA6B,CAACptG,KAAK,CAAC,CAAC;MACtEw9F,cAAc,CAAC5D,gBAAgB,CAAC;QAAE,cAAc,EAAE9G,OAAO,CAAC7I;MAAU,CAAC,CAAC;IACxE;IACA,IAAI,CAACmT,YAAY,CAAC;MAChBb,YAAY,EAAEzJ,OAAO;MACrB0K;IACF,CAAC,CAAC;IACF,MAAM,CAACn3E,WAAW,EAAEC,YAAY,CAAC,GAAG,IAAI,CAACkJ,gBAAgB;IACzD,MAAM,GAAG3vB,UAAU,CAAC,GAAG,IAAI,CAACyvB,cAAc;IAC1C,IAAIyF,SAAS,GAAG04E,YAAY,GAAG5tG,UAAU;IAGzCk1B,SAAS,GAAGA,SAAS,IAAI,CAAC,GAAG,GAAG,GAAGA,SAAS;IAE5C,IAAI,CAACv1B,KAAK,IAAIu1B,SAAS,GAAG,IAAI,CAACt1B,MAAM;IACrC,IAAI,IAAI,CAACD,KAAK,IAAI,CAAC,EAAE;MACnBu1B,SAAS,IAAI,GAAG,GAAG,IAAI,CAACv1B,KAAK;MAC7B,IAAI,CAACA,KAAK,GAAG,GAAG;IAClB;IAEA,IAAI,CAACC,MAAM,GAAGs1B,SAAS;IACvB,IAAI,CAACzB,OAAO,CAACjN,WAAW,GAAG,IAAI,CAAC7mB,KAAK,EAAE8mB,YAAY,GAAG,IAAI,CAAC7mB,MAAM,CAAC;IAClE,IAAI,CAACtJ,CAAC,GAAG0uB,MAAM;IACf,IAAI,CAACzuB,CAAC,GAAG0uB,MAAM;IACf,IAAI,CAACgM,MAAM,CAAC,CAAC;IAEb,IAAI,CAAC8D,UAAU,CAAC,CAAC;IACjB,IAAI,CAACvd,eAAe,CAAC,CAAC;IACtB,IAAI,CAACijB,MAAM,CAAC,CAAC;IACb,IAAI,CAAC7xB,UAAU,CAAC0T,sBAAsB,CAAC,IAAI,CAAC;IAC5C,IAAI,CAACwxF,OAAO,CAACH,IAAI,CAAC;IAElB,IAAI,CAACjlF,gBAAgB,CAAC;MACpB7G,MAAM,EAAE,0BAA0B;MAClCrU,IAAI,EAAE;QACJygG,YAAY,EAAE,CAAC,CAACN,IAAI;QACpBH,cAAc,EAAE,CAAC,CAACpiG;MACpB;IACF,CAAC,CAAC;IAEF,IAAI,CAAC3F,GAAG,CAACyxE,MAAM,GAAG,KAAK;EACzB;EAEAg3B,YAAYA,CAACtgG,MAAM,EAAE;IACnB,MAAM;MACJ\u002FN,OAAO,EAAE;QAAEE,SAAS;QAAEC;MAAW,CAAC;MAClCjB;IACF,CAAC,GAAG,IAAI,CAACmN,MAAM,CAACxG,QAAQ;IACxB,OAAOi\u002FF,kBAAkB,CAACrpH,OAAO,CAC\u002FBsyB,MAAM,EACN7N,SAAS,EACTC,UAAU,EACVjB,QAAQ,EACRquG,eAAe,CAAC9P,aAClB,CAAC;EACH;EAEA6Q,WAAWA,CAACrwG,IAAI,EAAEswG,QAAQ,EAAE;IAC1B,MAAM;MACJvuG,OAAO,EAAE;QAAEE,SAAS;QAAEC;MAAW,CAAC;MAClCjB;IACF,CAAC,GAAG,IAAI,CAACmN,MAAM,CAACxG,QAAQ;IACxB,OAAOi\u002FF,kBAAkB,CAAC8F,uBAAuB,CAC\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\u002FD3D,MAAM,CAAC,CAACwlG,WAAW,GAAG7\u002FF,IAAI,CAAC49F,WAAW;IACtCvjG,MAAM,CAAC,CAACuD,WAAW,GAAGoC,IAAI,CAACyf,iBAAiB,EAAEshF,GAAG,IAAI,EAAE;IACvD1mG,MAAM,CAAC,CAACylG,aAAa,GAAG9\u002FF,IAAI,CAACmgG,IAAI;IACjC,OAAO9lG,MAAM;EACf;AACF;;;;;;AC5a8E;AAKjD;AACkB;AACiB;AAKhE,MAAM2mG,WAAW,SAASxhF,gBAAgB,CAAC;EACzC,CAACpf,MAAM,GAAG,IAAI;EAEd,CAAC6gG,QAAQ,GAAG,IAAI;EAEhB,CAACC,aAAa,GAAG,IAAI;EAErB,CAACC,SAAS,GAAG,IAAI;EAEjB,CAACC,UAAU,GAAG,IAAI;EAElB,CAACC,cAAc,GAAG,EAAE;EAEpB,CAAC\u002FhG,MAAM,GAAG,IAAI;EAEd,CAACgiG,aAAa,GAAG,KAAK;EAEtB,CAACC,eAAe,GAAG,IAAI;EAEvB,CAACjhG,KAAK,GAAG,KAAK;EAEd,CAACkhG,uBAAuB,GAAG,KAAK;EAEhC,OAAOl\u002FE,KAAK,GAAG,OAAO;EAEtB,OAAO0M,WAAW,GAAGz\u002FC,oBAAoB,CAACI,KAAK;EAE\u002FCmR,WAAWA,CAAC41B,MAAM,EAAE;IAClB,KAAK,CAAC;MAAE,GAAGA,MAAM;MAAE91B,IAAI,EAAE;IAAc,CAAC,CAAC;IACzC,IAAI,CAAC,CAACugH,SAAS,GAAGzqF,MAAM,CAACyqF,SAAS;IAClC,IAAI,CAAC,CAACC,UAAU,GAAG1qF,MAAM,CAAC0qF,UAAU;IACpC,IAAI,CAAC\u002F2E,aAAa,GAAG,2BAA2B;EAClD;EAGA,OAAOvP,UAAUA,CAACC,IAAI,EAAE\u002Fc,SAAS,EAAE;IACjCwhB,gBAAgB,CAAC1E,UAAU,CAACC,IAAI,EAAE\u002Fc,SAAS,CAAC;EAC9C;EAGA,OAAOmT,wBAAwBA,CAACoS,IAAI,EAAE;IACpC,OAAOtpB,uBAAuB,CAACjW,QAAQ,CAACu\u002FB,IAAI,CAAC;EAC\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\u002FB;MAGA,MAAM04B,MAAM,GAAG\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\u002FjG,KAAK,EAAE;MACf,MAAM,CAAC\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\u002FF,qBAAqB,CAAC,CAACh\u002FF,WAAW,CAAC8E,MAAM,CAAC,CAAC,CAAC;IACpE,IAAI,CAACk6F,qBAAqB,CAACW,YAAY,EAAE;MACvCX,qBAAqB,CAACW,YAAY,GAAG,IAAI;MACzC,KAAK,MAAM5oG,UAAU,IAAIiJ,WAAW,EAAE;QACpCjJ,UAAU,CAACge,UAAU,CAACC,IAAI,EAAE\u002Fc,SAAS,CAAC;MACxC;IACF;IACAA,SAAS,CAAC4U,mBAAmB,CAAC7M,WAAW,CAAC;IAE1C,IAAI,CAAC,CAAC\u002FH,SAAS,GAAGA,SAAS;IAC3B,IAAI,CAACiV,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAAChb,GAAG,GAAGA,GAAG;IACd,IAAI,CAAC,CAAC+kF,oBAAoB,GAAGA,oBAAoB;IACjD,IAAI,CAAC,CAACioB,eAAe,GAAGA,eAAe;IACvC,IAAI,CAAC\u002FsG,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAAC,CAACyV,SAAS,GAAGA,SAAS;IAC3B,IAAI,CAACs+E,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAACsY,WAAW,GAAGrnB,eAAe;IAElC,IAAI,CAAC,CAACl\u002FE,SAAS,CAACkV,QAAQ,CAAC,IAAI,CAAC;EAChC;EAEA,IAAIxL,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC,CAAC4J,OAAO,CAAC\u002FP,IAAI,KAAK,CAAC;EACjC;EAEA,IAAIokG,WAAWA,CAAA,EAAG;IAChB,OACE,IAAI,CAACj+F,OAAO,IAAI,IAAI,CAAC,CAAC1J,SAAS,CAAC2a,OAAO,CAAC,CAAC,KAAKppC,oBAAoB,CAACC,IAAI;EAE3E;EAMA2kC,aAAaA,CAACr1B,OAAO,EAAE;IACrB,IAAI,CAAC,CAACkf,SAAS,CAACmW,aAAa,CAACr1B,OAAO,CAAC;EACxC;EAMAw0B,UAAUA,CAACnM,IAAI,GAAG,IAAI,CAAC,CAACnJ,SAAS,CAAC2a,OAAO,CAAC,CAAC,EAAE;IAC3C,IAAI,CAAC,CAAC48C,OAAO,CAAC,CAAC;IACf,QAAQpuD,IAAI;MACV,KAAK53B,oBAAoB,CAACC,IAAI;QAC5B,IAAI,CAACo2H,oBAAoB,CAAC,CAAC;QAC3B,IAAI,CAAC\u002F+E,mBAAmB,CAAC,KAAK,CAAC;QAC\u002FB,IAAI,CAACg\u002FE,kCAAkC,CAAC,IAAI,CAAC;QAC7C,IAAI,CAACjxF,YAAY,CAAC,CAAC;QACnB;MACF,KAAKrlC,oBAAoB,CAACK,GAAG;QAC3B,IAAI,CAACg2H,oBAAoB,CAAC,CAAC;QAC3B,IAAI,CAAC\u002F+E,mBAAmB,CAAC,IAAI,CAAC;QAC9B,IAAI,CAAChS,WAAW,CAAC,CAAC;QAClB;MACF,KAAKtlC,oBAAoB,CAACG,SAAS;QACjC,IAAI,CAACo2H,mBAAmB,CAAC,CAAC;QAC1B,IAAI,CAACj\u002FE,mBAAmB,CAAC,KAAK,CAAC;QAC\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\u002FB,MAAMo\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\u002FB;IAGA\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\u002FD,WAAW,CAAC\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\u002FBpwE,IAAI,CAACh\u002FB,YAAY,CAAC,eAAe,EAAE,oBAAoB,CAAC;IAExD,IAAIuvG,eAAe,EAAE;MACnB,IAAI,CAAC,CAACX,QAAQ,CAAC9vG,GAAG,CAACwH,EAAE,EAAE04B,IAAI,CAAC;IAC9B;IAGA,MAAMkzD,UAAU,GAAGsd,OAAO,GAAG,IAAI,CAAC,CAACN,cAAc,CAACzoE,IAAI,EAAE2oE,MAAM,CAAC,GAAG,IAAI;IAEtE,MAAMK,GAAG,GAAGf,SAAS,CAACG,WAAW,CAACvwG,aAAa,CAAC,KAAK,CAAC;IACtDgyE,IAAI,CAAC5xE,MAAM,CAAC+wG,GAAG,CAAC;IAChBA,GAAG,CAACzvG,YAAY,CAAC,MAAM,EAAE,IAAIovG,MAAM,EAAE,CAAC;IACtC,IAAI,CAACvb,gBAAgB,CAACvjB,IAAI,EAAEl0B,UAAU,CAAC;IAEvC,IAAI,CAAC,CAACuyD,OAAO,CAAC7vG,GAAG,CAACwH,EAAE,EAAEgqE,IAAI,CAAC;IAE3B,OAAO;MAAEhqE,EAAE;MAAE4rF,UAAU,EAAE,QAAQA,UAAU;IAAI,CAAC;EAClD;EAEAuB,WAAWA,CAACr3C,UAAU,EAAEszD,2BAA2B,EAAE;IAKnD,MAAMppG,EAAE,GAAGooG,SAAS,CAAC,CAACpoG,EAAE,EAAE;IAC1B,MAAMgqE,IAAI,GAAG,IAAI,CAAC,CAAC0+B,SAAS,CAAC,CAAC;IAC9B,MAAMvoE,IAAI,GAAGioE,SAAS,CAACG,WAAW,CAACvwG,aAAa,CAAC,MAAM,CAAC;IACxDgyE,IAAI,CAAC5xE,MAAM,CAAC+nC,IAAI,CAAC;IACjB,MAAMzH,IAAI,GAAG0vE,SAAS,CAACG,WAAW,CAACvwG,aAAa,CAAC,MAAM,CAAC;IACxDmoC,IAAI,CAAC\u002FnC,MAAM,CAACsgC,IAAI,CAAC;IACjB,MAAMowE,MAAM,GAAG,SAAS,IAAI,CAAC70F,SAAS,IAAIjU,EAAE,EAAE;IAC9C04B,IAAI,CAACh\u002FB,YAAY,CAAC,IAAI,EAAEovG,MAAM,CAAC;IAC\u002FBpwE,IAAI,CAACh\u002FB,YAAY,CAAC,eAAe,EAAE,oBAAoB,CAAC;IAExD,IAAI2vG,MAAM;IACV,IAAID,2BAA2B,EAAE;MAC\u002FB,MAAM3zD,IAAI,GAAG2yD,SAAS,CAACG,WAAW,CAACvwG,aAAa,CAAC,MAAM,CAAC;MACxDmoC,IAAI,CAAC\u002FnC,MAAM,CAACq9C,IAAI,CAAC;MACjB4zD,MAAM,GAAG,SAAS,IAAI,CAACp1F,SAAS,IAAIjU,EAAE,EAAE;MACxCy1C,IAAI,CAAC\u002F7C,YAAY,CAAC,IAAI,EAAE2vG,MAAM,CAAC;MAC\u002FB5zD,IAAI,CAAC\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\",\"sources\":[\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-object.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-iterator.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fmake-built-in.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffunction-name.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fhtml.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fhidden-keys.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fiterate-simple.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.flat-map.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffunction-bind-native.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-string.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fan-instance.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fmath-trunc.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-symbol.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-iterator-method.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-alphabet-option.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-keys.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fperform.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.every.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Finternal-state.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-integer-or-infinity.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fstructured-clone-proper-transfer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.uint8-array.set-from-base64.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-is-prototype-of.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.promise.try.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.union.v2.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.map.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-iterator-direct.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-keys-internal.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdefine-built-in-accessor.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-string-tag-support.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fclassof-raw.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fcorrect-prototype-getter.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fuint8-from-hex.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-create.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.is-superset-of.v2.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.filter.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fcreate-iter-result-object.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fnormalize-string-argument.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fiterate.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-primitive.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-get-prototype-of.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-forced.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fbase64-map.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fvalidate-arguments-length.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fenvironment-user-agent.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-set-prototype-of.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Finherit-if-required.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-buffer-is-detached.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fuid.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-difference.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fa-string.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fa-possible-prototype.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.some.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-symmetric-difference.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Finspect-source.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-get-own-property-symbols.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdescriptors.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-set-record.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-is-subset-of.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.is-disjoint-from.v2.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-possible-prototype.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fan-object-or-undefined.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdocument-create-element.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array.push.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-null-or-undefined.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fnot-a-nan.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fan-uint8-array.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-union.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-array-iterator-method.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fenvironment.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fordinary-to-primitive.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-array.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-helpers.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-is-disjoint-from.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdetach-transferable.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fsymbol-constructor-detection.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-set-length.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fiterator-helper-without-closing-on-early-error.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fglobal-this.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.url-search-params.delete.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.promise.with-resolvers.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fcreate-property.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-callable.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-define-property.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-method-accept-set-like.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.dom-exception.stack.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdom-exception-constants.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.symmetric-difference.v2.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fown-keys.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-buffer-not-detached.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-size.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-from-constructor-and-list.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-indexed-object.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-absolute-index.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.uint8-array.to-hex.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-buffer-transfer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fshared.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.url.parse.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.is-subset-of.v2.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fie8-dom-define.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-method.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fnew-promise-capability.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffunction-bind-context.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fshared-key.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fenvironment-is-node.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Flength-of-array-like.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fiterators.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdefine-built-ins.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fcall-with-safe-iteration-closing.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-pure.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fexport.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array-buffer.detached.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fcreate-non-enumerable-property.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffunction-uncurry-this-accessor.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-define-properties.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ftry-to-string.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdoes-not-exceed-safe-integer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdefine-built-in.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fclassof.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-property-key.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fcreate-property-descriptor.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fuse-symbol-as-uid.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Findexed-object.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fa-set.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-get-own-property-descriptor.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-buffer-byte-length.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Furl-constructor-detection.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffunction-uncurry-this-clause.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.url-search-params.has.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fshared-store.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.difference.v2.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fiterators-core.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-slice.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-index.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fcopy-constructor-properties.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Frequire-object-coercible.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-built-in.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-buffer-basic-detection.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array-buffer.transfer-to-fixed-length.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.intersection.v2.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-length.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array-buffer.transfer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.constructor.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fwell-known-symbol.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fparse-json-string.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.reduce.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.json.parse.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-iterate.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-get-own-property-names.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-is-superset-of.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fan-object.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ferror-stack-clear.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fweak-map-basic-detection.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-iterator-flattenable.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fv8-prototype-define-bug.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.url-search-params.size.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fenum-bug-keys.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffunction-apply.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-intersection.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-property-is-enumerable.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-object.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffails.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fuint8-from-base64.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-clone.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fhas-own-property.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fa-callable.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.drop.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-built-in-node-module.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.uint8-array.from-base64.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdefine-global-property.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fiterator-create-proxy.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffunction-uncurry-this.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fenvironment-v8-version.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fiterator-close.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffunction-call.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-positive-integer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-includes.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.uint8-array.to-base64.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.uint8-array.set-from-hex.js\",\"webpack:\u002F\u002Fpdf.js\u002Fwebpack\u002Fbootstrap\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fshared\u002Futil.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fdisplay_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Feditor\u002Ftoolbar.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Feditor\u002Ftools.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Feditor\u002Falt_text.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Ftouch_manager.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Feditor\u002Feditor.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fshared\u002Fmurmurhash3.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fannotation_storage.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Ffont_loader.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fapi_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fshared\u002Fmessage_handler.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fcanvas_factory.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fcmap_reader_factory.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Ffilter_factory.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fstandard_fontdata_factory.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fwasm_factory.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fnode_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fpattern_helper.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fshared\u002Fimage_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fcanvas.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fworker_options.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fmetadata.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Foptional_content_config.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Ftransport_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fcontent_disposition.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fnetwork_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Ffetch_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fnetwork.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fnode_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fpdf_objects.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Ftext_layer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fxfa_text.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fapi.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fshared\u002Fscripting_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fsvg_factory.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fxfa_layer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fannotation_layer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Feditor\u002Ffreetext.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Feditor\u002Fdrawers\u002Foutline.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Feditor\u002Fdrawers\u002Ffreedraw.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Feditor\u002Fdrawers\u002Fhighlight.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Feditor\u002Fcolor_picker.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Feditor\u002Fhighlight.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Feditor\u002Fdraw.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Feditor\u002Fdrawers\u002Finkdraw.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Feditor\u002Fink.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Feditor\u002Fdrawers\u002Fcontour.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Feditor\u002Fdrawers\u002Fsignaturedraw.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Feditor\u002Fsignature.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Feditor\u002Fstamp.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Feditor\u002Fannotation_editor_layer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fdisplay\u002Fdraw_layer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fpdf.js\"],\"sourcesContent\":[\"'use strict';\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\n\\nmodule.exports = function (it) {\\n  return typeof it == 'object' ? it !== null : isCallable(it);\\n};\\n\",\"'use strict';\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar tryToString = require('..\u002Finternals\u002Ftry-to-string');\\nvar getIteratorMethod = require('..\u002Finternals\u002Fget-iterator-method');\\n\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (argument, usingIterator) {\\n  var iteratorMethod = arguments.length \u003C 2 ? getIteratorMethod(argument) : usingIterator;\\n  if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\\n  throw new $TypeError(tryToString(argument) + ' is not iterable');\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar CONFIGURABLE_FUNCTION_NAME = require('..\u002Finternals\u002Ffunction-name').CONFIGURABLE;\\nvar inspectSource = require('..\u002Finternals\u002Finspect-source');\\nvar InternalStateModule = require('..\u002Finternals\u002Finternal-state');\\n\\nvar enforceInternalState = InternalStateModule.enforce;\\nvar getInternalState = InternalStateModule.get;\\nvar $String = String;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\\nvar defineProperty = Object.defineProperty;\\nvar stringSlice = uncurryThis(''.slice);\\nvar replace = uncurryThis(''.replace);\\nvar join = uncurryThis([].join);\\n\\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\\n  return defineProperty(function () { \u002F* empty *\u002F }, 'length', { value: 8 }).length !== 8;\\n});\\n\\nvar TEMPLATE = String(String).split('String');\\n\\nvar makeBuiltIn = module.exports = function (value, name, options) {\\n  if (stringSlice($String(name), 0, 7) === 'Symbol(') {\\n    name = '[' + replace($String(name), \u002F^Symbol\\\\(([^)]*)\\\\).*$\u002F, '$1') + ']';\\n  }\\n  if (options && options.getter) name = 'get ' + name;\\n  if (options && options.setter) name = 'set ' + name;\\n  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\\n    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\\n    else value.name = name;\\n  }\\n  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\\n    defineProperty(value, 'length', { value: options.arity });\\n  }\\n  try {\\n    if (options && hasOwn(options, 'constructor') && options.constructor) {\\n      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\\n    \u002F\u002F in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\\n    } else if (value.prototype) value.prototype = undefined;\\n  } catch (error) { \u002F* empty *\u002F }\\n  var state = enforceInternalState(value);\\n  if (!hasOwn(state, 'source')) {\\n    state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\\n  } return value;\\n};\\n\\n\u002F\u002F add fake Function#toString for correct work wrapped methods \u002F constructors with methods like LoDash isNative\\n\u002F\u002F eslint-disable-next-line no-extend-native -- required\\nFunction.prototype.toString = makeBuiltIn(function toString() {\\n  return isCallable(this) && getInternalState(this).source || inspectSource(this);\\n}, 'toString');\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\n\\nvar FunctionPrototype = Function.prototype;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\\n\\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\\n\u002F\u002F additional protection from minified \u002F mangled \u002F dropped function names\\nvar PROPER = EXISTS && (function something() { \u002F* empty *\u002F }).name === 'something';\\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\\n\\nmodule.exports = {\\n  EXISTS: EXISTS,\\n  PROPER: PROPER,\\n  CONFIGURABLE: CONFIGURABLE\\n};\\n\",\"'use strict';\\nvar getBuiltIn = require('..\u002Finternals\u002Fget-built-in');\\n\\nmodule.exports = getBuiltIn('document', 'documentElement');\\n\",\"'use strict';\\nmodule.exports = {};\\n\",\"'use strict';\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\n\\nmodule.exports = function (record, fn, ITERATOR_INSTEAD_OF_RECORD) {\\n  var iterator = ITERATOR_INSTEAD_OF_RECORD ? record : record.iterator;\\n  var next = record.next;\\n  var step, result;\\n  while (!(step = call(next, iterator)).done) {\\n    result = fn(step.value);\\n    if (result !== undefined) return result;\\n  }\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar getIteratorDirect = require('..\u002Finternals\u002Fget-iterator-direct');\\nvar getIteratorFlattenable = require('..\u002Finternals\u002Fget-iterator-flattenable');\\nvar createIteratorProxy = require('..\u002Finternals\u002Fiterator-create-proxy');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\nvar IS_PURE = require('..\u002Finternals\u002Fis-pure');\\nvar iteratorHelperWithoutClosingOnEarlyError = require('..\u002Finternals\u002Fiterator-helper-without-closing-on-early-error');\\n\\nvar flatMapWithoutClosingOnEarlyError = !IS_PURE && iteratorHelperWithoutClosingOnEarlyError('flatMap', TypeError);\\n\\nvar IteratorProxy = createIteratorProxy(function () {\\n  var iterator = this.iterator;\\n  var mapper = this.mapper;\\n  var result, inner;\\n\\n  while (true) {\\n    if (inner = this.inner) try {\\n      result = anObject(call(inner.next, inner.iterator));\\n      if (!result.done) return result.value;\\n      this.inner = null;\\n    } catch (error) { iteratorClose(iterator, 'throw', error); }\\n\\n    result = anObject(call(this.next, iterator));\\n\\n    if (this.done = !!result.done) return;\\n\\n    try {\\n      this.inner = getIteratorFlattenable(mapper(result.value, this.counter++), false);\\n    } catch (error) { iteratorClose(iterator, 'throw', error); }\\n  }\\n});\\n\\n\u002F\u002F `Iterator.prototype.flatMap` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.flatmap\\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE || flatMapWithoutClosingOnEarlyError }, {\\n  flatMap: function flatMap(mapper) {\\n    anObject(this);\\n    try {\\n      aCallable(mapper);\\n    } catch (error) {\\n      iteratorClose(this, 'throw', error);\\n    }\\n\\n    if (flatMapWithoutClosingOnEarlyError) return call(flatMapWithoutClosingOnEarlyError, this, mapper);\\n\\n    return new IteratorProxy(getIteratorDirect(this), {\\n      mapper: mapper,\\n      inner: null\\n    });\\n  }\\n});\\n\",\"'use strict';\\nvar fails = require('..\u002Finternals\u002Ffails');\\n\\nmodule.exports = !fails(function () {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind -- safe\\n  var test = (function () { \u002F* empty *\u002F }).bind();\\n  \u002F\u002F eslint-disable-next-line no-prototype-builtins -- safe\\n  return typeof test != 'function' || test.hasOwnProperty('prototype');\\n});\\n\",\"'use strict';\\nvar classof = require('..\u002Finternals\u002Fclassof');\\n\\nvar $String = String;\\n\\nmodule.exports = function (argument) {\\n  if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\\n  return $String(argument);\\n};\\n\",\"'use strict';\\nvar isPrototypeOf = require('..\u002Finternals\u002Fobject-is-prototype-of');\\n\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (it, Prototype) {\\n  if (isPrototypeOf(Prototype, it)) return it;\\n  throw new $TypeError('Incorrect invocation');\\n};\\n\",\"'use strict';\\nvar ceil = Math.ceil;\\nvar floor = Math.floor;\\n\\n\u002F\u002F `Math.trunc` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-math.trunc\\n\u002F\u002F eslint-disable-next-line es\u002Fno-math-trunc -- safe\\nmodule.exports = Math.trunc || function trunc(x) {\\n  var n = +x;\\n  return (n > 0 ? floor : ceil)(n);\\n};\\n\",\"'use strict';\\nvar getBuiltIn = require('..\u002Finternals\u002Fget-built-in');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar isPrototypeOf = require('..\u002Finternals\u002Fobject-is-prototype-of');\\nvar USE_SYMBOL_AS_UID = require('..\u002Finternals\u002Fuse-symbol-as-uid');\\n\\nvar $Object = Object;\\n\\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\\n  return typeof it == 'symbol';\\n} : function (it) {\\n  var $Symbol = getBuiltIn('Symbol');\\n  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\\n};\\n\",\"'use strict';\\nvar classof = require('..\u002Finternals\u002Fclassof');\\nvar getMethod = require('..\u002Finternals\u002Fget-method');\\nvar isNullOrUndefined = require('..\u002Finternals\u002Fis-null-or-undefined');\\nvar Iterators = require('..\u002Finternals\u002Fiterators');\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\n\\nmodule.exports = function (it) {\\n  if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\\n    || getMethod(it, '@@iterator')\\n    || Iterators[classof(it)];\\n};\\n\",\"'use strict';\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (options) {\\n  var alphabet = options && options.alphabet;\\n  if (alphabet === undefined || alphabet === 'base64' || alphabet === 'base64url') return alphabet || 'base64';\\n  throw new $TypeError('Incorrect `alphabet` option');\\n};\\n\",\"'use strict';\\nvar internalObjectKeys = require('..\u002Finternals\u002Fobject-keys-internal');\\nvar enumBugKeys = require('..\u002Finternals\u002Fenum-bug-keys');\\n\\n\u002F\u002F `Object.keys` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.keys\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-keys -- safe\\nmodule.exports = Object.keys || function keys(O) {\\n  return internalObjectKeys(O, enumBugKeys);\\n};\\n\",\"'use strict';\\nmodule.exports = function (exec) {\\n  try {\\n    return { error: false, value: exec() };\\n  } catch (error) {\\n    return { error: true, value: error };\\n  }\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar iterate = require('..\u002Finternals\u002Fiterate');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar getIteratorDirect = require('..\u002Finternals\u002Fget-iterator-direct');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\nvar iteratorHelperWithoutClosingOnEarlyError = require('..\u002Finternals\u002Fiterator-helper-without-closing-on-early-error');\\n\\nvar everyWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('every', TypeError);\\n\\n\u002F\u002F `Iterator.prototype.every` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.every\\n$({ target: 'Iterator', proto: true, real: true, forced: everyWithoutClosingOnEarlyError }, {\\n  every: function every(predicate) {\\n    anObject(this);\\n    try {\\n      aCallable(predicate);\\n    } catch (error) {\\n      iteratorClose(this, 'throw', error);\\n    }\\n\\n    if (everyWithoutClosingOnEarlyError) return call(everyWithoutClosingOnEarlyError, this, predicate);\\n\\n    var record = getIteratorDirect(this);\\n    var counter = 0;\\n    return !iterate(record, function (value, stop) {\\n      if (!predicate(value, counter++)) return stop();\\n    }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\\n  }\\n});\\n\",\"'use strict';\\nvar NATIVE_WEAK_MAP = require('..\u002Finternals\u002Fweak-map-basic-detection');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\nvar createNonEnumerableProperty = require('..\u002Finternals\u002Fcreate-non-enumerable-property');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar shared = require('..\u002Finternals\u002Fshared-store');\\nvar sharedKey = require('..\u002Finternals\u002Fshared-key');\\nvar hiddenKeys = require('..\u002Finternals\u002Fhidden-keys');\\n\\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\\nvar TypeError = globalThis.TypeError;\\nvar WeakMap = globalThis.WeakMap;\\nvar set, get, has;\\n\\nvar enforce = function (it) {\\n  return has(it) ? get(it) : set(it, {});\\n};\\n\\nvar getterFor = function (TYPE) {\\n  return function (it) {\\n    var state;\\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\\n      throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\\n    } return state;\\n  };\\n};\\n\\nif (NATIVE_WEAK_MAP || shared.state) {\\n  var store = shared.state || (shared.state = new WeakMap());\\n  \u002F* eslint-disable no-self-assign -- prototype methods protection *\u002F\\n  store.get = store.get;\\n  store.has = store.has;\\n  store.set = store.set;\\n  \u002F* eslint-enable no-self-assign -- prototype methods protection *\u002F\\n  set = function (it, metadata) {\\n    if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\\n    metadata.facade = it;\\n    store.set(it, metadata);\\n    return metadata;\\n  };\\n  get = function (it) {\\n    return store.get(it) || {};\\n  };\\n  has = function (it) {\\n    return store.has(it);\\n  };\\n} else {\\n  var STATE = sharedKey('state');\\n  hiddenKeys[STATE] = true;\\n  set = function (it, metadata) {\\n    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\\n    metadata.facade = it;\\n    createNonEnumerableProperty(it, STATE, metadata);\\n    return metadata;\\n  };\\n  get = function (it) {\\n    return hasOwn(it, STATE) ? it[STATE] : {};\\n  };\\n  has = function (it) {\\n    return hasOwn(it, STATE);\\n  };\\n}\\n\\nmodule.exports = {\\n  set: set,\\n  get: get,\\n  has: has,\\n  enforce: enforce,\\n  getterFor: getterFor\\n};\\n\",\"'use strict';\\nvar trunc = require('..\u002Finternals\u002Fmath-trunc');\\n\\n\u002F\u002F `ToIntegerOrInfinity` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-tointegerorinfinity\\nmodule.exports = function (argument) {\\n  var number = +argument;\\n  \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\\n  return number !== number || number === 0 ? 0 : trunc(number);\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar V8 = require('..\u002Finternals\u002Fenvironment-v8-version');\\nvar ENVIRONMENT = require('..\u002Finternals\u002Fenvironment');\\n\\nvar structuredClone = globalThis.structuredClone;\\n\\nmodule.exports = !!structuredClone && !fails(function () {\\n  \u002F\u002F prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation\\n  \u002F\u002F https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F679\\n  if ((ENVIRONMENT === 'DENO' && V8 > 92) || (ENVIRONMENT === 'NODE' && V8 > 94) || (ENVIRONMENT === 'BROWSER' && V8 > 97)) return false;\\n  var buffer = new ArrayBuffer(8);\\n  var clone = structuredClone(buffer, { transfer: [buffer] });\\n  return buffer.byteLength !== 0 || clone.byteLength !== 8;\\n});\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar $fromBase64 = require('..\u002Finternals\u002Fuint8-from-base64');\\nvar anUint8Array = require('..\u002Finternals\u002Fan-uint8-array');\\n\\nvar Uint8Array = globalThis.Uint8Array;\\n\\nvar INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS = !Uint8Array || !Uint8Array.prototype.setFromBase64 || !(function () {\\n  var target = new Uint8Array([255, 255, 255, 255, 255]);\\n  try {\\n    target.setFromBase64('MjYyZg===');\\n  } catch (error) {\\n    return target[0] === 50 && target[1] === 54 && target[2] === 50 && target[3] === 255 && target[4] === 255;\\n  }\\n})();\\n\\n\u002F\u002F `Uint8Array.prototype.setFromBase64` method\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-arraybuffer-base64\\nif (Uint8Array) $({ target: 'Uint8Array', proto: true, forced: INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS }, {\\n  setFromBase64: function setFromBase64(string \u002F* , options *\u002F) {\\n    anUint8Array(this);\\n\\n    var result = $fromBase64(string, arguments.length > 1 ? arguments[1] : undefined, this, this.length);\\n\\n    return { read: result.read, written: result.written };\\n  }\\n});\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\n\\nmodule.exports = uncurryThis({}.isPrototypeOf);\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar apply = require('..\u002Finternals\u002Ffunction-apply');\\nvar slice = require('..\u002Finternals\u002Farray-slice');\\nvar newPromiseCapabilityModule = require('..\u002Finternals\u002Fnew-promise-capability');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar perform = require('..\u002Finternals\u002Fperform');\\n\\nvar Promise = globalThis.Promise;\\n\\nvar ACCEPT_ARGUMENTS = false;\\n\u002F\u002F Avoiding the use of polyfills of the previous iteration of this proposal\\n\u002F\u002F that does not accept arguments of the callback\\nvar FORCED = !Promise || !Promise['try'] || perform(function () {\\n  Promise['try'](function (argument) {\\n    ACCEPT_ARGUMENTS = argument === 8;\\n  }, 8);\\n}).error || !ACCEPT_ARGUMENTS;\\n\\n\u002F\u002F `Promise.try` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-promise.try\\n$({ target: 'Promise', stat: true, forced: FORCED }, {\\n  'try': function (callbackfn \u002F* , ...args *\u002F) {\\n    var args = arguments.length > 1 ? slice(arguments, 1) : [];\\n    var promiseCapability = newPromiseCapabilityModule.f(this);\\n    var result = perform(function () {\\n      return apply(aCallable(callbackfn), undefined, args);\\n    });\\n    (result.error ? promiseCapability.reject : promiseCapability.resolve)(result.value);\\n    return promiseCapability.promise;\\n  }\\n});\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar union = require('..\u002Finternals\u002Fset-union');\\nvar setMethodAcceptSetLike = require('..\u002Finternals\u002Fset-method-accept-set-like');\\n\\n\u002F\u002F `Set.prototype.union` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.union\\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('union') }, {\\n  union: union\\n});\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar getIteratorDirect = require('..\u002Finternals\u002Fget-iterator-direct');\\nvar createIteratorProxy = require('..\u002Finternals\u002Fiterator-create-proxy');\\nvar callWithSafeIterationClosing = require('..\u002Finternals\u002Fcall-with-safe-iteration-closing');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\nvar iteratorHelperWithoutClosingOnEarlyError = require('..\u002Finternals\u002Fiterator-helper-without-closing-on-early-error');\\nvar IS_PURE = require('..\u002Finternals\u002Fis-pure');\\n\\nvar mapWithoutClosingOnEarlyError = !IS_PURE && iteratorHelperWithoutClosingOnEarlyError('map', TypeError);\\n\\nvar IteratorProxy = createIteratorProxy(function () {\\n  var iterator = this.iterator;\\n  var result = anObject(call(this.next, iterator));\\n  var done = this.done = !!result.done;\\n  if (!done) return callWithSafeIterationClosing(iterator, this.mapper, [result.value, this.counter++], true);\\n});\\n\\n\u002F\u002F `Iterator.prototype.map` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.map\\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE || mapWithoutClosingOnEarlyError }, {\\n  map: function map(mapper) {\\n    anObject(this);\\n    try {\\n      aCallable(mapper);\\n    } catch (error) {\\n      iteratorClose(this, 'throw', error);\\n    }\\n\\n    if (mapWithoutClosingOnEarlyError) return call(mapWithoutClosingOnEarlyError, this, mapper);\\n\\n    return new IteratorProxy(getIteratorDirect(this), {\\n      mapper: mapper\\n    });\\n  }\\n});\\n\",\"'use strict';\\n\u002F\u002F `GetIteratorDirect(obj)` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-iterator-helpers\u002F#sec-getiteratordirect\\nmodule.exports = function (obj) {\\n  return {\\n    iterator: obj,\\n    next: obj.next,\\n    done: false\\n  };\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar toIndexedObject = require('..\u002Finternals\u002Fto-indexed-object');\\nvar indexOf = require('..\u002Finternals\u002Farray-includes').indexOf;\\nvar hiddenKeys = require('..\u002Finternals\u002Fhidden-keys');\\n\\nvar push = uncurryThis([].push);\\n\\nmodule.exports = function (object, names) {\\n  var O = toIndexedObject(object);\\n  var i = 0;\\n  var result = [];\\n  var key;\\n  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\\n  \u002F\u002F Don't enum bug & hidden keys\\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\\n    ~indexOf(result, key) || push(result, key);\\n  }\\n  return result;\\n};\\n\",\"'use strict';\\nvar makeBuiltIn = require('..\u002Finternals\u002Fmake-built-in');\\nvar defineProperty = require('..\u002Finternals\u002Fobject-define-property');\\n\\nmodule.exports = function (target, name, descriptor) {\\n  if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\\n  if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\\n  return defineProperty.f(target, name, descriptor);\\n};\\n\",\"'use strict';\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\n\\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\\nvar test = {};\\n\\ntest[TO_STRING_TAG] = 'z';\\n\\nmodule.exports = String(test) === '[object z]';\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\n\\nvar toString = uncurryThis({}.toString);\\nvar stringSlice = uncurryThis(''.slice);\\n\\nmodule.exports = function (it) {\\n  return stringSlice(toString(it), 8, -1);\\n};\\n\",\"'use strict';\\nvar fails = require('..\u002Finternals\u002Ffails');\\n\\nmodule.exports = !fails(function () {\\n  function F() { \u002F* empty *\u002F }\\n  F.prototype.constructor = null;\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-object-getprototypeof -- required for testing\\n  return Object.getPrototypeOf(new F()) !== F.prototype;\\n});\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\n\\nvar Uint8Array = globalThis.Uint8Array;\\nvar SyntaxError = globalThis.SyntaxError;\\nvar parseInt = globalThis.parseInt;\\nvar min = Math.min;\\nvar NOT_HEX = \u002F[^\\\\da-f]\u002Fi;\\nvar exec = uncurryThis(NOT_HEX.exec);\\nvar stringSlice = uncurryThis(''.slice);\\n\\nmodule.exports = function (string, into) {\\n  var stringLength = string.length;\\n  if (stringLength % 2 !== 0) throw new SyntaxError('String should be an even number of characters');\\n  var maxLength = into ? min(into.length, stringLength \u002F 2) : stringLength \u002F 2;\\n  var bytes = into || new Uint8Array(maxLength);\\n  var read = 0;\\n  var written = 0;\\n  while (written \u003C maxLength) {\\n    var hexits = stringSlice(string, read, read += 2);\\n    if (exec(NOT_HEX, hexits)) throw new SyntaxError('String should only contain hex characters');\\n    bytes[written++] = parseInt(hexits, 16);\\n  }\\n  return { bytes: bytes, read: read };\\n};\\n\",\"'use strict';\\n\u002F* global ActiveXObject -- old IE, WSH *\u002F\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar definePropertiesModule = require('..\u002Finternals\u002Fobject-define-properties');\\nvar enumBugKeys = require('..\u002Finternals\u002Fenum-bug-keys');\\nvar hiddenKeys = require('..\u002Finternals\u002Fhidden-keys');\\nvar html = require('..\u002Finternals\u002Fhtml');\\nvar documentCreateElement = require('..\u002Finternals\u002Fdocument-create-element');\\nvar sharedKey = require('..\u002Finternals\u002Fshared-key');\\n\\nvar GT = '>';\\nvar LT = '\u003C';\\nvar PROTOTYPE = 'prototype';\\nvar SCRIPT = 'script';\\nvar IE_PROTO = sharedKey('IE_PROTO');\\n\\nvar EmptyConstructor = function () { \u002F* empty *\u002F };\\n\\nvar scriptTag = function (content) {\\n  return LT + SCRIPT + GT + content + LT + '\u002F' + SCRIPT + GT;\\n};\\n\\n\u002F\u002F Create object with fake `null` prototype: use ActiveX Object with cleared prototype\\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\\n  activeXDocument.write(scriptTag(''));\\n  activeXDocument.close();\\n  var temp = activeXDocument.parentWindow.Object;\\n  \u002F\u002F eslint-disable-next-line no-useless-assignment -- avoid memory leak\\n  activeXDocument = null;\\n  return temp;\\n};\\n\\n\u002F\u002F Create object with fake `null` prototype: use iframe Object with cleared prototype\\nvar NullProtoObjectViaIFrame = function () {\\n  \u002F\u002F Thrash, waste and sodomy: IE GC bug\\n  var iframe = documentCreateElement('iframe');\\n  var JS = 'java' + SCRIPT + ':';\\n  var iframeDocument;\\n  iframe.style.display = 'none';\\n  html.appendChild(iframe);\\n  \u002F\u002F https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F475\\n  iframe.src = String(JS);\\n  iframeDocument = iframe.contentWindow.document;\\n  iframeDocument.open();\\n  iframeDocument.write(scriptTag('document.F=Object'));\\n  iframeDocument.close();\\n  return iframeDocument.F;\\n};\\n\\n\u002F\u002F Check for document.domain and active x support\\n\u002F\u002F No need to use active x approach when document.domain is not set\\n\u002F\u002F see https:\u002F\u002Fgithub.com\u002Fes-shims\u002Fes5-shim\u002Fissues\u002F150\\n\u002F\u002F variation of https:\u002F\u002Fgithub.com\u002Fkitcambridge\u002Fes5-shim\u002Fcommit\u002F4f738ac066346\\n\u002F\u002F avoid IE GC bug\\nvar activeXDocument;\\nvar NullProtoObject = function () {\\n  try {\\n    activeXDocument = new ActiveXObject('htmlfile');\\n  } catch (error) { \u002F* ignore *\u002F }\\n  NullProtoObject = typeof document != 'undefined'\\n    ? document.domain && activeXDocument\\n      ? NullProtoObjectViaActiveX(activeXDocument) \u002F\u002F old IE\\n      : NullProtoObjectViaIFrame()\\n    : NullProtoObjectViaActiveX(activeXDocument); \u002F\u002F WSH\\n  var length = enumBugKeys.length;\\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\\n  return NullProtoObject();\\n};\\n\\nhiddenKeys[IE_PROTO] = true;\\n\\n\u002F\u002F `Object.create` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.create\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-create -- safe\\nmodule.exports = Object.create || function create(O, Properties) {\\n  var result;\\n  if (O !== null) {\\n    EmptyConstructor[PROTOTYPE] = anObject(O);\\n    result = new EmptyConstructor();\\n    EmptyConstructor[PROTOTYPE] = null;\\n    \u002F\u002F add \\\"__proto__\\\" for Object.getPrototypeOf polyfill\\n    result[IE_PROTO] = O;\\n  } else result = NullProtoObject();\\n  return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar isSupersetOf = require('..\u002Finternals\u002Fset-is-superset-of');\\nvar setMethodAcceptSetLike = require('..\u002Finternals\u002Fset-method-accept-set-like');\\n\\nvar INCORRECT = !setMethodAcceptSetLike('isSupersetOf', function (result) {\\n  return !result;\\n});\\n\\n\u002F\u002F `Set.prototype.isSupersetOf` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.issupersetof\\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\\n  isSupersetOf: isSupersetOf\\n});\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar getIteratorDirect = require('..\u002Finternals\u002Fget-iterator-direct');\\nvar createIteratorProxy = require('..\u002Finternals\u002Fiterator-create-proxy');\\nvar callWithSafeIterationClosing = require('..\u002Finternals\u002Fcall-with-safe-iteration-closing');\\nvar IS_PURE = require('..\u002Finternals\u002Fis-pure');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\nvar iteratorHelperWithoutClosingOnEarlyError = require('..\u002Finternals\u002Fiterator-helper-without-closing-on-early-error');\\n\\nvar filterWithoutClosingOnEarlyError = !IS_PURE && iteratorHelperWithoutClosingOnEarlyError('filter', TypeError);\\n\\nvar IteratorProxy = createIteratorProxy(function () {\\n  var iterator = this.iterator;\\n  var predicate = this.predicate;\\n  var next = this.next;\\n  var result, done, value;\\n  while (true) {\\n    result = anObject(call(next, iterator));\\n    done = this.done = !!result.done;\\n    if (done) return;\\n    value = result.value;\\n    if (callWithSafeIterationClosing(iterator, predicate, [value, this.counter++], true)) return value;\\n  }\\n});\\n\\n\u002F\u002F `Iterator.prototype.filter` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.filter\\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE || filterWithoutClosingOnEarlyError }, {\\n  filter: function filter(predicate) {\\n    anObject(this);\\n    try {\\n      aCallable(predicate);\\n    } catch (error) {\\n      iteratorClose(this, 'throw', error);\\n    }\\n\\n    if (filterWithoutClosingOnEarlyError) return call(filterWithoutClosingOnEarlyError, this, predicate);\\n\\n    return new IteratorProxy(getIteratorDirect(this), {\\n      predicate: predicate\\n    });\\n  }\\n});\\n\",\"'use strict';\\n\u002F\u002F `CreateIterResultObject` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-createiterresultobject\\nmodule.exports = function (value, done) {\\n  return { value: value, done: done };\\n};\\n\",\"'use strict';\\nvar toString = require('..\u002Finternals\u002Fto-string');\\n\\nmodule.exports = function (argument, $default) {\\n  return argument === undefined ? arguments.length \u003C 2 ? '' : $default : toString(argument);\\n};\\n\",\"'use strict';\\nvar bind = require('..\u002Finternals\u002Ffunction-bind-context');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar tryToString = require('..\u002Finternals\u002Ftry-to-string');\\nvar isArrayIteratorMethod = require('..\u002Finternals\u002Fis-array-iterator-method');\\nvar lengthOfArrayLike = require('..\u002Finternals\u002Flength-of-array-like');\\nvar isPrototypeOf = require('..\u002Finternals\u002Fobject-is-prototype-of');\\nvar getIterator = require('..\u002Finternals\u002Fget-iterator');\\nvar getIteratorMethod = require('..\u002Finternals\u002Fget-iterator-method');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\n\\nvar $TypeError = TypeError;\\n\\nvar Result = function (stopped, result) {\\n  this.stopped = stopped;\\n  this.result = result;\\n};\\n\\nvar ResultPrototype = Result.prototype;\\n\\nmodule.exports = function (iterable, unboundFunction, options) {\\n  var that = options && options.that;\\n  var AS_ENTRIES = !!(options && options.AS_ENTRIES);\\n  var IS_RECORD = !!(options && options.IS_RECORD);\\n  var IS_ITERATOR = !!(options && options.IS_ITERATOR);\\n  var INTERRUPTED = !!(options && options.INTERRUPTED);\\n  var fn = bind(unboundFunction, that);\\n  var iterator, iterFn, index, length, result, next, step;\\n\\n  var stop = function (condition) {\\n    if (iterator) iteratorClose(iterator, 'normal', condition);\\n    return new Result(true, condition);\\n  };\\n\\n  var callFn = function (value) {\\n    if (AS_ENTRIES) {\\n      anObject(value);\\n      return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\\n    } return INTERRUPTED ? fn(value, stop) : fn(value);\\n  };\\n\\n  if (IS_RECORD) {\\n    iterator = iterable.iterator;\\n  } else if (IS_ITERATOR) {\\n    iterator = iterable;\\n  } else {\\n    iterFn = getIteratorMethod(iterable);\\n    if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');\\n    \u002F\u002F optimisation for array iterators\\n    if (isArrayIteratorMethod(iterFn)) {\\n      for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\\n        result = callFn(iterable[index]);\\n        if (result && isPrototypeOf(ResultPrototype, result)) return result;\\n      } return new Result(false);\\n    }\\n    iterator = getIterator(iterable, iterFn);\\n  }\\n\\n  next = IS_RECORD ? iterable.next : iterator.next;\\n  while (!(step = call(next, iterator)).done) {\\n    try {\\n      result = callFn(step.value);\\n    } catch (error) {\\n      iteratorClose(iterator, 'throw', error);\\n    }\\n    if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\\n  } return new Result(false);\\n};\\n\",\"'use strict';\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\nvar isSymbol = require('..\u002Finternals\u002Fis-symbol');\\nvar getMethod = require('..\u002Finternals\u002Fget-method');\\nvar ordinaryToPrimitive = require('..\u002Finternals\u002Fordinary-to-primitive');\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\n\\nvar $TypeError = TypeError;\\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\\n\\n\u002F\u002F `ToPrimitive` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-toprimitive\\nmodule.exports = function (input, pref) {\\n  if (!isObject(input) || isSymbol(input)) return input;\\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\\n  var result;\\n  if (exoticToPrim) {\\n    if (pref === undefined) pref = 'default';\\n    result = call(exoticToPrim, input, pref);\\n    if (!isObject(result) || isSymbol(result)) return result;\\n    throw new $TypeError(\\\"Can't convert object to primitive value\\\");\\n  }\\n  if (pref === undefined) pref = 'number';\\n  return ordinaryToPrimitive(input, pref);\\n};\\n\",\"'use strict';\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar toObject = require('..\u002Finternals\u002Fto-object');\\nvar sharedKey = require('..\u002Finternals\u002Fshared-key');\\nvar CORRECT_PROTOTYPE_GETTER = require('..\u002Finternals\u002Fcorrect-prototype-getter');\\n\\nvar IE_PROTO = sharedKey('IE_PROTO');\\nvar $Object = Object;\\nvar ObjectPrototype = $Object.prototype;\\n\\n\u002F\u002F `Object.getPrototypeOf` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.getprototypeof\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getprototypeof -- safe\\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\\n  var object = toObject(O);\\n  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\\n  var constructor = object.constructor;\\n  if (isCallable(constructor) && object instanceof constructor) {\\n    return constructor.prototype;\\n  } return object instanceof $Object ? ObjectPrototype : null;\\n};\\n\",\"'use strict';\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\n\\nvar replacement = \u002F#|\\\\.prototype\\\\.\u002F;\\n\\nvar isForced = function (feature, detection) {\\n  var value = data[normalize(feature)];\\n  return value === POLYFILL ? true\\n    : value === NATIVE ? false\\n    : isCallable(detection) ? fails(detection)\\n    : !!detection;\\n};\\n\\nvar normalize = isForced.normalize = function (string) {\\n  return String(string).replace(replacement, '.').toLowerCase();\\n};\\n\\nvar data = isForced.data = {};\\nvar NATIVE = isForced.NATIVE = 'N';\\nvar POLYFILL = isForced.POLYFILL = 'P';\\n\\nmodule.exports = isForced;\\n\",\"'use strict';\\nvar commonAlphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\\nvar base64Alphabet = commonAlphabet + '+\u002F';\\nvar base64UrlAlphabet = commonAlphabet + '-_';\\n\\nvar inverse = function (characters) {\\n  \u002F\u002F TODO: use `Object.create(null)` in `core-js@4`\\n  var result = {};\\n  var index = 0;\\n  for (; index \u003C 64; index++) result[characters.charAt(index)] = index;\\n  return result;\\n};\\n\\nmodule.exports = {\\n  i2c: base64Alphabet,\\n  c2i: inverse(base64Alphabet),\\n  i2cUrl: base64UrlAlphabet,\\n  c2iUrl: inverse(base64UrlAlphabet)\\n};\\n\",\"'use strict';\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (passed, required) {\\n  if (passed \u003C required) throw new $TypeError('Not enough arguments');\\n  return passed;\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\n\\nvar navigator = globalThis.navigator;\\nvar userAgent = navigator && navigator.userAgent;\\n\\nmodule.exports = userAgent ? String(userAgent) : '';\\n\",\"'use strict';\\n\u002F* eslint-disable no-proto -- safe *\u002F\\nvar uncurryThisAccessor = require('..\u002Finternals\u002Ffunction-uncurry-this-accessor');\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\nvar requireObjectCoercible = require('..\u002Finternals\u002Frequire-object-coercible');\\nvar aPossiblePrototype = require('..\u002Finternals\u002Fa-possible-prototype');\\n\\n\u002F\u002F `Object.setPrototypeOf` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.setprototypeof\\n\u002F\u002F Works with __proto__ only. Old v8 can't work with null proto objects.\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-setprototypeof -- safe\\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\\n  var CORRECT_SETTER = false;\\n  var test = {};\\n  var setter;\\n  try {\\n    setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\\n    setter(test, []);\\n    CORRECT_SETTER = test instanceof Array;\\n  } catch (error) { \u002F* empty *\u002F }\\n  return function setPrototypeOf(O, proto) {\\n    requireObjectCoercible(O);\\n    aPossiblePrototype(proto);\\n    if (!isObject(O)) return O;\\n    if (CORRECT_SETTER) setter(O, proto);\\n    else O.__proto__ = proto;\\n    return O;\\n  };\\n}() : undefined);\\n\",\"'use strict';\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\nvar setPrototypeOf = require('..\u002Finternals\u002Fobject-set-prototype-of');\\n\\n\u002F\u002F makes subclassing work correct for wrapped built-ins\\nmodule.exports = function ($this, dummy, Wrapper) {\\n  var NewTarget, NewTargetPrototype;\\n  if (\\n    \u002F\u002F it can work only with native `setPrototypeOf`\\n    setPrototypeOf &&\\n    \u002F\u002F we haven't completely correct pre-ES6 way for getting `new.target`, so use this\\n    isCallable(NewTarget = dummy.constructor) &&\\n    NewTarget !== Wrapper &&\\n    isObject(NewTargetPrototype = NewTarget.prototype) &&\\n    NewTargetPrototype !== Wrapper.prototype\\n  ) setPrototypeOf($this, NewTargetPrototype);\\n  return $this;\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar NATIVE_ARRAY_BUFFER = require('..\u002Finternals\u002Farray-buffer-basic-detection');\\nvar arrayBufferByteLength = require('..\u002Finternals\u002Farray-buffer-byte-length');\\n\\nvar DataView = globalThis.DataView;\\n\\nmodule.exports = function (O) {\\n  if (!NATIVE_ARRAY_BUFFER || arrayBufferByteLength(O) !== 0) return false;\\n  try {\\n    \u002F\u002F eslint-disable-next-line no-new -- thrower\\n    new DataView(O);\\n    return false;\\n  } catch (error) {\\n    return true;\\n  }\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\n\\nvar id = 0;\\nvar postfix = Math.random();\\nvar toString = uncurryThis(1.0.toString);\\n\\nmodule.exports = function (key) {\\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\\n};\\n\",\"'use strict';\\nvar aSet = require('..\u002Finternals\u002Fa-set');\\nvar SetHelpers = require('..\u002Finternals\u002Fset-helpers');\\nvar clone = require('..\u002Finternals\u002Fset-clone');\\nvar size = require('..\u002Finternals\u002Fset-size');\\nvar getSetRecord = require('..\u002Finternals\u002Fget-set-record');\\nvar iterateSet = require('..\u002Finternals\u002Fset-iterate');\\nvar iterateSimple = require('..\u002Finternals\u002Fiterate-simple');\\n\\nvar has = SetHelpers.has;\\nvar remove = SetHelpers.remove;\\n\\n\u002F\u002F `Set.prototype.difference` method\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\\nmodule.exports = function difference(other) {\\n  var O = aSet(this);\\n  var otherRec = getSetRecord(other);\\n  var result = clone(O);\\n  if (size(O) \u003C= otherRec.size) iterateSet(O, function (e) {\\n    if (otherRec.includes(e)) remove(result, e);\\n  });\\n  else iterateSimple(otherRec.getIterator(), function (e) {\\n    if (has(O, e)) remove(result, e);\\n  });\\n  return result;\\n};\\n\",\"'use strict';\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (argument) {\\n  if (typeof argument == 'string') return argument;\\n  throw new $TypeError('Argument is not a string');\\n};\\n\",\"'use strict';\\nvar isPossiblePrototype = require('..\u002Finternals\u002Fis-possible-prototype');\\n\\nvar $String = String;\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (argument) {\\n  if (isPossiblePrototype(argument)) return argument;\\n  throw new $TypeError(\\\"Can't set \\\" + $String(argument) + ' as a prototype');\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar iterate = require('..\u002Finternals\u002Fiterate');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar getIteratorDirect = require('..\u002Finternals\u002Fget-iterator-direct');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\nvar iteratorHelperWithoutClosingOnEarlyError = require('..\u002Finternals\u002Fiterator-helper-without-closing-on-early-error');\\n\\nvar someWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('some', TypeError);\\n\\n\u002F\u002F `Iterator.prototype.some` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.some\\n$({ target: 'Iterator', proto: true, real: true, forced: someWithoutClosingOnEarlyError }, {\\n  some: function some(predicate) {\\n    anObject(this);\\n    try {\\n      aCallable(predicate);\\n    } catch (error) {\\n      iteratorClose(this, 'throw', error);\\n    }\\n\\n    if (someWithoutClosingOnEarlyError) return call(someWithoutClosingOnEarlyError, this, predicate);\\n\\n    var record = getIteratorDirect(this);\\n    var counter = 0;\\n    return iterate(record, function (value, stop) {\\n      if (predicate(value, counter++)) return stop();\\n    }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\\n  }\\n});\\n\",\"'use strict';\\nvar aSet = require('..\u002Finternals\u002Fa-set');\\nvar SetHelpers = require('..\u002Finternals\u002Fset-helpers');\\nvar clone = require('..\u002Finternals\u002Fset-clone');\\nvar getSetRecord = require('..\u002Finternals\u002Fget-set-record');\\nvar iterateSimple = require('..\u002Finternals\u002Fiterate-simple');\\n\\nvar add = SetHelpers.add;\\nvar has = SetHelpers.has;\\nvar remove = SetHelpers.remove;\\n\\n\u002F\u002F `Set.prototype.symmetricDifference` method\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\\nmodule.exports = function symmetricDifference(other) {\\n  var O = aSet(this);\\n  var keysIter = getSetRecord(other).getIterator();\\n  var result = clone(O);\\n  iterateSimple(keysIter, function (e) {\\n    if (has(O, e)) remove(result, e);\\n    else add(result, e);\\n  });\\n  return result;\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar store = require('..\u002Finternals\u002Fshared-store');\\n\\nvar functionToString = uncurryThis(Function.toString);\\n\\n\u002F\u002F this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\\nif (!isCallable(store.inspectSource)) {\\n  store.inspectSource = function (it) {\\n    return functionToString(it);\\n  };\\n}\\n\\nmodule.exports = store.inspectSource;\\n\",\"'use strict';\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertysymbols -- safe\\nexports.f = Object.getOwnPropertySymbols;\\n\",\"'use strict';\\nvar fails = require('..\u002Finternals\u002Ffails');\\n\\n\u002F\u002F Detect IE8's incomplete defineProperty implementation\\nmodule.exports = !fails(function () {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- required for testing\\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\\n});\\n\",\"'use strict';\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar toIntegerOrInfinity = require('..\u002Finternals\u002Fto-integer-or-infinity');\\nvar getIteratorDirect = require('..\u002Finternals\u002Fget-iterator-direct');\\n\\nvar INVALID_SIZE = 'Invalid size';\\nvar $RangeError = RangeError;\\nvar $TypeError = TypeError;\\nvar max = Math.max;\\n\\nvar SetRecord = function (set, intSize) {\\n  this.set = set;\\n  this.size = max(intSize, 0);\\n  this.has = aCallable(set.has);\\n  this.keys = aCallable(set.keys);\\n};\\n\\nSetRecord.prototype = {\\n  getIterator: function () {\\n    return getIteratorDirect(anObject(call(this.keys, this.set)));\\n  },\\n  includes: function (it) {\\n    return call(this.has, this.set, it);\\n  }\\n};\\n\\n\u002F\u002F `GetSetRecord` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-set-methods\u002F#sec-getsetrecord\\nmodule.exports = function (obj) {\\n  anObject(obj);\\n  var numSize = +obj.size;\\n  \u002F\u002F NOTE: If size is undefined, then numSize will be NaN\\n  \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\\n  if (numSize !== numSize) throw new $TypeError(INVALID_SIZE);\\n  var intSize = toIntegerOrInfinity(numSize);\\n  if (intSize \u003C 0) throw new $RangeError(INVALID_SIZE);\\n  return new SetRecord(obj, intSize);\\n};\\n\",\"'use strict';\\nvar aSet = require('..\u002Finternals\u002Fa-set');\\nvar size = require('..\u002Finternals\u002Fset-size');\\nvar iterate = require('..\u002Finternals\u002Fset-iterate');\\nvar getSetRecord = require('..\u002Finternals\u002Fget-set-record');\\n\\n\u002F\u002F `Set.prototype.isSubsetOf` method\\n\u002F\u002F https:\u002F\u002Ftc39.github.io\u002Fproposal-set-methods\u002F#Set.prototype.isSubsetOf\\nmodule.exports = function isSubsetOf(other) {\\n  var O = aSet(this);\\n  var otherRec = getSetRecord(other);\\n  if (size(O) > otherRec.size) return false;\\n  return iterate(O, function (e) {\\n    if (!otherRec.includes(e)) return false;\\n  }, true) !== false;\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar isDisjointFrom = require('..\u002Finternals\u002Fset-is-disjoint-from');\\nvar setMethodAcceptSetLike = require('..\u002Finternals\u002Fset-method-accept-set-like');\\n\\nvar INCORRECT = !setMethodAcceptSetLike('isDisjointFrom', function (result) {\\n  return !result;\\n});\\n\\n\u002F\u002F `Set.prototype.isDisjointFrom` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.isdisjointfrom\\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\\n  isDisjointFrom: isDisjointFrom\\n});\\n\",\"'use strict';\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\n\\nmodule.exports = function (argument) {\\n  return isObject(argument) || argument === null;\\n};\\n\",\"'use strict';\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\n\\nvar $String = String;\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (argument) {\\n  if (argument === undefined || isObject(argument)) return argument;\\n  throw new $TypeError($String(argument) + ' is not an object or undefined');\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\n\\nvar document = globalThis.document;\\n\u002F\u002F typeof document.createElement is 'object' in old IE\\nvar EXISTS = isObject(document) && isObject(document.createElement);\\n\\nmodule.exports = function (it) {\\n  return EXISTS ? document.createElement(it) : {};\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar toObject = require('..\u002Finternals\u002Fto-object');\\nvar lengthOfArrayLike = require('..\u002Finternals\u002Flength-of-array-like');\\nvar setArrayLength = require('..\u002Finternals\u002Farray-set-length');\\nvar doesNotExceedSafeInteger = require('..\u002Finternals\u002Fdoes-not-exceed-safe-integer');\\nvar fails = require('..\u002Finternals\u002Ffails');\\n\\nvar INCORRECT_TO_LENGTH = fails(function () {\\n  return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\\n});\\n\\n\u002F\u002F V8 \u003C= 121 and Safari \u003C= 15.4; FF \u003C 23 throws InternalError\\n\u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=12681\\nvar properErrorOnNonWritableLength = function () {\\n  try {\\n    \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\\n    Object.defineProperty([], 'length', { writable: false }).push();\\n  } catch (error) {\\n    return error instanceof TypeError;\\n  }\\n};\\n\\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\\n\\n\u002F\u002F `Array.prototype.push` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-array.prototype.push\\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\\n  \u002F\u002F eslint-disable-next-line no-unused-vars -- required for `.length`\\n  push: function push(item) {\\n    var O = toObject(this);\\n    var len = lengthOfArrayLike(O);\\n    var argCount = arguments.length;\\n    doesNotExceedSafeInteger(len + argCount);\\n    for (var i = 0; i \u003C argCount; i++) {\\n      O[len] = arguments[i];\\n      len++;\\n    }\\n    setArrayLength(O, len);\\n    return len;\\n  }\\n});\\n\",\"'use strict';\\n\u002F\u002F we can't use just `it == null` since of `document.all` special case\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-IsHTMLDDA-internal-slot-aec\\nmodule.exports = function (it) {\\n  return it === null || it === undefined;\\n};\\n\",\"'use strict';\\nvar $RangeError = RangeError;\\n\\nmodule.exports = function (it) {\\n  \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\\n  if (it === it) return it;\\n  throw new $RangeError('NaN is not allowed');\\n};\\n\",\"'use strict';\\nvar classof = require('..\u002Finternals\u002Fclassof');\\n\\nvar $TypeError = TypeError;\\n\\n\u002F\u002F Perform ? RequireInternalSlot(argument, [[TypedArrayName]])\\n\u002F\u002F If argument.[[TypedArrayName]] is not \\\"Uint8Array\\\", throw a TypeError exception\\nmodule.exports = function (argument) {\\n  if (classof(argument) === 'Uint8Array') return argument;\\n  throw new $TypeError('Argument is not an Uint8Array');\\n};\\n\",\"'use strict';\\nvar aSet = require('..\u002Finternals\u002Fa-set');\\nvar add = require('..\u002Finternals\u002Fset-helpers').add;\\nvar clone = require('..\u002Finternals\u002Fset-clone');\\nvar getSetRecord = require('..\u002Finternals\u002Fget-set-record');\\nvar iterateSimple = require('..\u002Finternals\u002Fiterate-simple');\\n\\n\u002F\u002F `Set.prototype.union` method\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\\nmodule.exports = function union(other) {\\n  var O = aSet(this);\\n  var keysIter = getSetRecord(other).getIterator();\\n  var result = clone(O);\\n  iterateSimple(keysIter, function (it) {\\n    add(result, it);\\n  });\\n  return result;\\n};\\n\",\"'use strict';\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\nvar Iterators = require('..\u002Finternals\u002Fiterators');\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\nvar ArrayPrototype = Array.prototype;\\n\\n\u002F\u002F check on default Array iterator\\nmodule.exports = function (it) {\\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\\n};\\n\",\"'use strict';\\n\u002F* global Bun, Deno -- detection *\u002F\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar userAgent = require('..\u002Finternals\u002Fenvironment-user-agent');\\nvar classof = require('..\u002Finternals\u002Fclassof-raw');\\n\\nvar userAgentStartsWith = function (string) {\\n  return userAgent.slice(0, string.length) === string;\\n};\\n\\nmodule.exports = (function () {\\n  if (userAgentStartsWith('Bun\u002F')) return 'BUN';\\n  if (userAgentStartsWith('Cloudflare-Workers')) return 'CLOUDFLARE';\\n  if (userAgentStartsWith('Deno\u002F')) return 'DENO';\\n  if (userAgentStartsWith('Node.js\u002F')) return 'NODE';\\n  if (globalThis.Bun && typeof Bun.version == 'string') return 'BUN';\\n  if (globalThis.Deno && typeof Deno.version == 'object') return 'DENO';\\n  if (classof(globalThis.process) === 'process') return 'NODE';\\n  if (globalThis.window && globalThis.document) return 'BROWSER';\\n  return 'REST';\\n})();\\n\",\"'use strict';\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\n\\nvar $TypeError = TypeError;\\n\\n\u002F\u002F `OrdinaryToPrimitive` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-ordinarytoprimitive\\nmodule.exports = function (input, pref) {\\n  var fn, val;\\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\\n  throw new $TypeError(\\\"Can't convert object to primitive value\\\");\\n};\\n\",\"'use strict';\\nvar classof = require('..\u002Finternals\u002Fclassof-raw');\\n\\n\u002F\u002F `IsArray` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-isarray\\n\u002F\u002F eslint-disable-next-line es\u002Fno-array-isarray -- safe\\nmodule.exports = Array.isArray || function isArray(argument) {\\n  return classof(argument) === 'Array';\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\n\\n\u002F\u002F eslint-disable-next-line es\u002Fno-set -- safe\\nvar SetPrototype = Set.prototype;\\n\\nmodule.exports = {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-set -- safe\\n  Set: Set,\\n  add: uncurryThis(SetPrototype.add),\\n  has: uncurryThis(SetPrototype.has),\\n  remove: uncurryThis(SetPrototype['delete']),\\n  proto: SetPrototype\\n};\\n\",\"'use strict';\\nvar aSet = require('..\u002Finternals\u002Fa-set');\\nvar has = require('..\u002Finternals\u002Fset-helpers').has;\\nvar size = require('..\u002Finternals\u002Fset-size');\\nvar getSetRecord = require('..\u002Finternals\u002Fget-set-record');\\nvar iterateSet = require('..\u002Finternals\u002Fset-iterate');\\nvar iterateSimple = require('..\u002Finternals\u002Fiterate-simple');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\n\\n\u002F\u002F `Set.prototype.isDisjointFrom` method\\n\u002F\u002F https:\u002F\u002Ftc39.github.io\u002Fproposal-set-methods\u002F#Set.prototype.isDisjointFrom\\nmodule.exports = function isDisjointFrom(other) {\\n  var O = aSet(this);\\n  var otherRec = getSetRecord(other);\\n  if (size(O) \u003C= otherRec.size) return iterateSet(O, function (e) {\\n    if (otherRec.includes(e)) return false;\\n  }, true) !== false;\\n  var iterator = otherRec.getIterator();\\n  return iterateSimple(iterator, function (e) {\\n    if (has(O, e)) return iteratorClose(iterator, 'normal', false);\\n  }) !== false;\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar getBuiltInNodeModule = require('..\u002Finternals\u002Fget-built-in-node-module');\\nvar PROPER_STRUCTURED_CLONE_TRANSFER = require('..\u002Finternals\u002Fstructured-clone-proper-transfer');\\n\\nvar structuredClone = globalThis.structuredClone;\\nvar $ArrayBuffer = globalThis.ArrayBuffer;\\nvar $MessageChannel = globalThis.MessageChannel;\\nvar detach = false;\\nvar WorkerThreads, channel, buffer, $detach;\\n\\nif (PROPER_STRUCTURED_CLONE_TRANSFER) {\\n  detach = function (transferable) {\\n    structuredClone(transferable, { transfer: [transferable] });\\n  };\\n} else if ($ArrayBuffer) try {\\n  if (!$MessageChannel) {\\n    WorkerThreads = getBuiltInNodeModule('worker_threads');\\n    if (WorkerThreads) $MessageChannel = WorkerThreads.MessageChannel;\\n  }\\n\\n  if ($MessageChannel) {\\n    channel = new $MessageChannel();\\n    buffer = new $ArrayBuffer(2);\\n\\n    $detach = function (transferable) {\\n      channel.port1.postMessage(null, [transferable]);\\n    };\\n\\n    if (buffer.byteLength === 2) {\\n      $detach(buffer);\\n      if (buffer.byteLength === 0) detach = $detach;\\n    }\\n  }\\n} catch (error) { \u002F* empty *\u002F }\\n\\nmodule.exports = detach;\\n\",\"'use strict';\\n\u002F* eslint-disable es\u002Fno-symbol -- required for testing *\u002F\\nvar V8_VERSION = require('..\u002Finternals\u002Fenvironment-v8-version');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\n\\nvar $String = globalThis.String;\\n\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertysymbols -- required for testing\\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\\n  var symbol = Symbol('symbol detection');\\n  \u002F\u002F Chrome 38 Symbol has incorrect toString conversion\\n  \u002F\u002F `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\\n  \u002F\u002F nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\\n  \u002F\u002F of course, fail.\\n  return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\\n    \u002F\u002F Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\\n    !Symbol.sham && V8_VERSION && V8_VERSION \u003C 41;\\n});\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar isArray = require('..\u002Finternals\u002Fis-array');\\n\\nvar $TypeError = TypeError;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\n\\n\u002F\u002F Safari \u003C 13 does not throw an error in this case\\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\\n  \u002F\u002F makes no sense without proper strict mode support\\n  if (this !== undefined) return true;\\n  try {\\n    \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\\n    Object.defineProperty([], 'length', { writable: false }).length = 1;\\n  } catch (error) {\\n    return error instanceof TypeError;\\n  }\\n}();\\n\\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\\n  if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\\n    throw new $TypeError('Cannot set read only .length');\\n  } return O.length = length;\\n} : function (O, length) {\\n  return O.length = length;\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\n\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fecma262\u002Fpull\u002F3467\\nmodule.exports = function (METHOD_NAME, ExpectedError) {\\n  var Iterator = globalThis.Iterator;\\n  var IteratorPrototype = Iterator && Iterator.prototype;\\n  var method = IteratorPrototype && IteratorPrototype[METHOD_NAME];\\n\\n  var CLOSED = false;\\n\\n  if (method) try {\\n    method.call({\\n      next: function () { return { done: true }; },\\n      'return': function () { CLOSED = true; }\\n    }, -1);\\n  } catch (error) {\\n    \u002F\u002F https:\u002F\u002Fbugs.webkit.org\u002Fshow_bug.cgi?id=291195\\n    if (!(error instanceof ExpectedError)) CLOSED = false;\\n  }\\n\\n  if (!CLOSED) return method;\\n};\\n\",\"'use strict';\\nvar check = function (it) {\\n  return it && it.Math === Math && it;\\n};\\n\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F86#issuecomment-115759028\\nmodule.exports =\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-global-this -- safe\\n  check(typeof globalThis == 'object' && globalThis) ||\\n  check(typeof window == 'object' && window) ||\\n  \u002F\u002F eslint-disable-next-line no-restricted-globals -- safe\\n  check(typeof self == 'object' && self) ||\\n  check(typeof global == 'object' && global) ||\\n  check(typeof this == 'object' && this) ||\\n  \u002F\u002F eslint-disable-next-line no-new-func -- fallback\\n  (function () { return this; })() || Function('return this')();\\n\",\"'use strict';\\nvar defineBuiltIn = require('..\u002Finternals\u002Fdefine-built-in');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar toString = require('..\u002Finternals\u002Fto-string');\\nvar validateArgumentsLength = require('..\u002Finternals\u002Fvalidate-arguments-length');\\n\\nvar $URLSearchParams = URLSearchParams;\\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\\nvar append = uncurryThis(URLSearchParamsPrototype.append);\\nvar $delete = uncurryThis(URLSearchParamsPrototype['delete']);\\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\\nvar push = uncurryThis([].push);\\nvar params = new $URLSearchParams('a=1&a=2&b=3');\\n\\nparams['delete']('a', 1);\\n\u002F\u002F `undefined` case is a Chromium 117 bug\\n\u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=14222\\nparams['delete']('b', undefined);\\n\\nif (params + '' !== 'a=2') {\\n  defineBuiltIn(URLSearchParamsPrototype, 'delete', function (name \u002F* , value *\u002F) {\\n    var length = arguments.length;\\n    var $value = length \u003C 2 ? undefined : arguments[1];\\n    if (length && $value === undefined) return $delete(this, name);\\n    var entries = [];\\n    forEach(this, function (v, k) { \u002F\u002F also validates `this`\\n      push(entries, { key: k, value: v });\\n    });\\n    validateArgumentsLength(length, 1);\\n    var key = toString(name);\\n    var value = toString($value);\\n    var index = 0;\\n    var dindex = 0;\\n    var found = false;\\n    var entriesLength = entries.length;\\n    var entry;\\n    while (index \u003C entriesLength) {\\n      entry = entries[index++];\\n      if (found || entry.key === key) {\\n        found = true;\\n        $delete(this, entry.key);\\n      } else dindex++;\\n    }\\n    while (dindex \u003C entriesLength) {\\n      entry = entries[dindex++];\\n      if (!(entry.key === key && entry.value === value)) append(this, entry.key, entry.value);\\n    }\\n  }, { enumerable: true, unsafe: true });\\n}\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar newPromiseCapabilityModule = require('..\u002Finternals\u002Fnew-promise-capability');\\n\\n\u002F\u002F `Promise.withResolvers` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-promise.withResolvers\\n$({ target: 'Promise', stat: true }, {\\n  withResolvers: function withResolvers() {\\n    var promiseCapability = newPromiseCapabilityModule.f(this);\\n    return {\\n      promise: promiseCapability.promise,\\n      resolve: promiseCapability.resolve,\\n      reject: promiseCapability.reject\\n    };\\n  }\\n});\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar definePropertyModule = require('..\u002Finternals\u002Fobject-define-property');\\nvar createPropertyDescriptor = require('..\u002Finternals\u002Fcreate-property-descriptor');\\n\\nmodule.exports = function (object, key, value) {\\n  if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));\\n  else object[key] = value;\\n};\\n\",\"'use strict';\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-IsHTMLDDA-internal-slot\\nvar documentAll = typeof document == 'object' && document.all;\\n\\n\u002F\u002F `IsCallable` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iscallable\\n\u002F\u002F eslint-disable-next-line unicorn\u002Fno-typeof-undefined -- required for testing\\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\\n  return typeof argument == 'function' || argument === documentAll;\\n} : function (argument) {\\n  return typeof argument == 'function';\\n};\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar IE8_DOM_DEFINE = require('..\u002Finternals\u002Fie8-dom-define');\\nvar V8_PROTOTYPE_DEFINE_BUG = require('..\u002Finternals\u002Fv8-prototype-define-bug');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar toPropertyKey = require('..\u002Finternals\u002Fto-property-key');\\n\\nvar $TypeError = TypeError;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\\nvar $defineProperty = Object.defineProperty;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\nvar ENUMERABLE = 'enumerable';\\nvar CONFIGURABLE = 'configurable';\\nvar WRITABLE = 'writable';\\n\\n\u002F\u002F `Object.defineProperty` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.defineproperty\\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\\n  anObject(O);\\n  P = toPropertyKey(P);\\n  anObject(Attributes);\\n  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\\n    var current = $getOwnPropertyDescriptor(O, P);\\n    if (current && current[WRITABLE]) {\\n      O[P] = Attributes.value;\\n      Attributes = {\\n        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\\n        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\\n        writable: false\\n      };\\n    }\\n  } return $defineProperty(O, P, Attributes);\\n} : $defineProperty : function defineProperty(O, P, Attributes) {\\n  anObject(O);\\n  P = toPropertyKey(P);\\n  anObject(Attributes);\\n  if (IE8_DOM_DEFINE) try {\\n    return $defineProperty(O, P, Attributes);\\n  } catch (error) { \u002F* empty *\u002F }\\n  if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\\n  if ('value' in Attributes) O[P] = Attributes.value;\\n  return O;\\n};\\n\",\"'use strict';\\nvar getBuiltIn = require('..\u002Finternals\u002Fget-built-in');\\n\\nvar createSetLike = function (size) {\\n  return {\\n    size: size,\\n    has: function () {\\n      return false;\\n    },\\n    keys: function () {\\n      return {\\n        next: function () {\\n          return { done: true };\\n        }\\n      };\\n    }\\n  };\\n};\\n\\nvar createSetLikeWithInfinitySize = function (size) {\\n  return {\\n    size: size,\\n    has: function () {\\n      return true;\\n    },\\n    keys: function () {\\n      throw new Error('e');\\n    }\\n  };\\n};\\n\\nmodule.exports = function (name, callback) {\\n  var Set = getBuiltIn('Set');\\n  try {\\n    new Set()[name](createSetLike(0));\\n    try {\\n      \u002F\u002F late spec change, early WebKit ~ Safari 17 implementation does not pass it\\n      \u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\u002Fpull\u002F88\\n      \u002F\u002F also covered engines with\\n      \u002F\u002F https:\u002F\u002Fbugs.webkit.org\u002Fshow_bug.cgi?id=272679\\n      new Set()[name](createSetLike(-1));\\n      return false;\\n    } catch (error2) {\\n      if (!callback) return true;\\n      \u002F\u002F early V8 implementation bug\\n      \u002F\u002F https:\u002F\u002Fissues.chromium.org\u002Fissues\u002F351332634\\n      try {\\n        new Set()[name](createSetLikeWithInfinitySize(-Infinity));\\n        return false;\\n      } catch (error) {\\n        var set = new Set();\\n        set.add(1);\\n        set.add(2);\\n        return callback(set[name](createSetLikeWithInfinitySize(Infinity)));\\n      }\\n    }\\n  } catch (error) {\\n    return false;\\n  }\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar getBuiltIn = require('..\u002Finternals\u002Fget-built-in');\\nvar createPropertyDescriptor = require('..\u002Finternals\u002Fcreate-property-descriptor');\\nvar defineProperty = require('..\u002Finternals\u002Fobject-define-property').f;\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar anInstance = require('..\u002Finternals\u002Fan-instance');\\nvar inheritIfRequired = require('..\u002Finternals\u002Finherit-if-required');\\nvar normalizeStringArgument = require('..\u002Finternals\u002Fnormalize-string-argument');\\nvar DOMExceptionConstants = require('..\u002Finternals\u002Fdom-exception-constants');\\nvar clearErrorStack = require('..\u002Finternals\u002Ferror-stack-clear');\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar IS_PURE = require('..\u002Finternals\u002Fis-pure');\\n\\nvar DOM_EXCEPTION = 'DOMException';\\nvar Error = getBuiltIn('Error');\\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION);\\n\\nvar $DOMException = function DOMException() {\\n  anInstance(this, DOMExceptionPrototype);\\n  var argumentsLength = arguments.length;\\n  var message = normalizeStringArgument(argumentsLength \u003C 1 ? undefined : arguments[0]);\\n  var name = normalizeStringArgument(argumentsLength \u003C 2 ? undefined : arguments[1], 'Error');\\n  var that = new NativeDOMException(message, name);\\n  var error = new Error(message);\\n  error.name = DOM_EXCEPTION;\\n  defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\\n  inheritIfRequired(that, this, $DOMException);\\n  return that;\\n};\\n\\nvar DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;\\n\\nvar ERROR_HAS_STACK = 'stack' in new Error(DOM_EXCEPTION);\\nvar DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);\\n\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(globalThis, DOM_EXCEPTION);\\n\\n\u002F\u002F Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002FJarred-Sumner\u002Fbun\u002Fissues\u002F399\\nvar BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);\\n\\nvar FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;\\n\\n\u002F\u002F `DOMException` constructor patch for `.stack` where it's required\\n\u002F\u002F https:\u002F\u002Fwebidl.spec.whatwg.org\u002F#es-DOMException-specialness\\n$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { \u002F\u002F TODO: fix export logic\\n  DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\\n});\\n\\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\\n\\nif (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {\\n  if (!IS_PURE) {\\n    defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException));\\n  }\\n\\n  for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\\n    var constant = DOMExceptionConstants[key];\\n    var constantName = constant.s;\\n    if (!hasOwn(PolyfilledDOMException, constantName)) {\\n      defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));\\n    }\\n  }\\n}\\n\",\"'use strict';\\nmodule.exports = {\\n  IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },\\n  DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },\\n  HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },\\n  WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 },\\n  InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 },\\n  NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 },\\n  NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 },\\n  NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 },\\n  NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 },\\n  InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 },\\n  InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 },\\n  SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 },\\n  InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 },\\n  NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 },\\n  InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 },\\n  ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 },\\n  TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 },\\n  SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 },\\n  NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 },\\n  AbortError: { s: 'ABORT_ERR', c: 20, m: 1 },\\n  URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 },\\n  QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 },\\n  TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 },\\n  InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 },\\n  DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 }\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar symmetricDifference = require('..\u002Finternals\u002Fset-symmetric-difference');\\nvar setMethodAcceptSetLike = require('..\u002Finternals\u002Fset-method-accept-set-like');\\n\\n\u002F\u002F `Set.prototype.symmetricDifference` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.symmetricdifference\\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('symmetricDifference') }, {\\n  symmetricDifference: symmetricDifference\\n});\\n\",\"'use strict';\\nvar getBuiltIn = require('..\u002Finternals\u002Fget-built-in');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar getOwnPropertyNamesModule = require('..\u002Finternals\u002Fobject-get-own-property-names');\\nvar getOwnPropertySymbolsModule = require('..\u002Finternals\u002Fobject-get-own-property-symbols');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\n\\nvar concat = uncurryThis([].concat);\\n\\n\u002F\u002F all object keys, includes non-enumerable and symbols\\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\\n  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\\n};\\n\",\"'use strict';\\nvar isDetached = require('..\u002Finternals\u002Farray-buffer-is-detached');\\n\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (it) {\\n  if (isDetached(it)) throw new $TypeError('ArrayBuffer is detached');\\n  return it;\\n};\\n\",\"'use strict';\\nvar uncurryThisAccessor = require('..\u002Finternals\u002Ffunction-uncurry-this-accessor');\\nvar SetHelpers = require('..\u002Finternals\u002Fset-helpers');\\n\\nmodule.exports = uncurryThisAccessor(SetHelpers.proto, 'size', 'get') || function (set) {\\n  return set.size;\\n};\\n\",\"'use strict';\\nvar lengthOfArrayLike = require('..\u002Finternals\u002Flength-of-array-like');\\n\\nmodule.exports = function (Constructor, list, $length) {\\n  var index = 0;\\n  var length = arguments.length > 2 ? $length : lengthOfArrayLike(list);\\n  var result = new Constructor(length);\\n  while (length > index) result[index] = list[index++];\\n  return result;\\n};\\n\",\"'use strict';\\n\u002F\u002F toObject with fallback for non-array-like ES3 strings\\nvar IndexedObject = require('..\u002Finternals\u002Findexed-object');\\nvar requireObjectCoercible = require('..\u002Finternals\u002Frequire-object-coercible');\\n\\nmodule.exports = function (it) {\\n  return IndexedObject(requireObjectCoercible(it));\\n};\\n\",\"'use strict';\\nvar toIntegerOrInfinity = require('..\u002Finternals\u002Fto-integer-or-infinity');\\n\\nvar max = Math.max;\\nvar min = Math.min;\\n\\n\u002F\u002F Helper for a popular repeating case of the spec:\\n\u002F\u002F Let integer be ? ToInteger(index).\\n\u002F\u002F If integer \u003C 0, let result be max((length + integer), 0); else let result be min(integer, length).\\nmodule.exports = function (index, length) {\\n  var integer = toIntegerOrInfinity(index);\\n  return integer \u003C 0 ? max(integer + length, 0) : min(integer, length);\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar anUint8Array = require('..\u002Finternals\u002Fan-uint8-array');\\nvar notDetached = require('..\u002Finternals\u002Farray-buffer-not-detached');\\n\\nvar numberToString = uncurryThis(1.0.toString);\\n\\n\u002F\u002F `Uint8Array.prototype.toHex` method\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-arraybuffer-base64\\nif (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {\\n  toHex: function toHex() {\\n    anUint8Array(this);\\n    notDetached(this.buffer);\\n    var result = '';\\n    for (var i = 0, length = this.length; i \u003C length; i++) {\\n      var hex = numberToString(this[i], 16);\\n      result += hex.length === 1 ? '0' + hex : hex;\\n    }\\n    return result;\\n  }\\n});\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar uncurryThisAccessor = require('..\u002Finternals\u002Ffunction-uncurry-this-accessor');\\nvar toIndex = require('..\u002Finternals\u002Fto-index');\\nvar notDetached = require('..\u002Finternals\u002Farray-buffer-not-detached');\\nvar arrayBufferByteLength = require('..\u002Finternals\u002Farray-buffer-byte-length');\\nvar detachTransferable = require('..\u002Finternals\u002Fdetach-transferable');\\nvar PROPER_STRUCTURED_CLONE_TRANSFER = require('..\u002Finternals\u002Fstructured-clone-proper-transfer');\\n\\nvar structuredClone = globalThis.structuredClone;\\nvar ArrayBuffer = globalThis.ArrayBuffer;\\nvar DataView = globalThis.DataView;\\nvar min = Math.min;\\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\\nvar DataViewPrototype = DataView.prototype;\\nvar slice = uncurryThis(ArrayBufferPrototype.slice);\\nvar isResizable = uncurryThisAccessor(ArrayBufferPrototype, 'resizable', 'get');\\nvar maxByteLength = uncurryThisAccessor(ArrayBufferPrototype, 'maxByteLength', 'get');\\nvar getInt8 = uncurryThis(DataViewPrototype.getInt8);\\nvar setInt8 = uncurryThis(DataViewPrototype.setInt8);\\n\\nmodule.exports = (PROPER_STRUCTURED_CLONE_TRANSFER || detachTransferable) && function (arrayBuffer, newLength, preserveResizability) {\\n  var byteLength = arrayBufferByteLength(arrayBuffer);\\n  var newByteLength = newLength === undefined ? byteLength : toIndex(newLength);\\n  var fixedLength = !isResizable || !isResizable(arrayBuffer);\\n  var newBuffer;\\n  notDetached(arrayBuffer);\\n  if (PROPER_STRUCTURED_CLONE_TRANSFER) {\\n    arrayBuffer = structuredClone(arrayBuffer, { transfer: [arrayBuffer] });\\n    if (byteLength === newByteLength && (preserveResizability || fixedLength)) return arrayBuffer;\\n  }\\n  if (byteLength >= newByteLength && (!preserveResizability || fixedLength)) {\\n    newBuffer = slice(arrayBuffer, 0, newByteLength);\\n  } else {\\n    var options = preserveResizability && !fixedLength && maxByteLength ? { maxByteLength: maxByteLength(arrayBuffer) } : undefined;\\n    newBuffer = new ArrayBuffer(newByteLength, options);\\n    var a = new DataView(arrayBuffer);\\n    var b = new DataView(newBuffer);\\n    var copyLength = min(newByteLength, byteLength);\\n    for (var i = 0; i \u003C copyLength; i++) setInt8(b, i, getInt8(a, i));\\n  }\\n  if (!PROPER_STRUCTURED_CLONE_TRANSFER) detachTransferable(arrayBuffer);\\n  return newBuffer;\\n};\\n\",\"'use strict';\\nvar store = require('..\u002Finternals\u002Fshared-store');\\n\\nmodule.exports = function (key, value) {\\n  return store[key] || (store[key] = value || {});\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar getBuiltIn = require('..\u002Finternals\u002Fget-built-in');\\nvar validateArgumentsLength = require('..\u002Finternals\u002Fvalidate-arguments-length');\\nvar toString = require('..\u002Finternals\u002Fto-string');\\nvar USE_NATIVE_URL = require('..\u002Finternals\u002Furl-constructor-detection');\\n\\nvar URL = getBuiltIn('URL');\\n\\n\u002F\u002F `URL.parse` method\\n\u002F\u002F https:\u002F\u002Furl.spec.whatwg.org\u002F#dom-url-canparse\\n$({ target: 'URL', stat: true, forced: !USE_NATIVE_URL }, {\\n  parse: function parse(url) {\\n    var length = validateArgumentsLength(arguments.length, 1);\\n    var urlString = toString(url);\\n    var base = length \u003C 2 || arguments[1] === undefined ? undefined : toString(arguments[1]);\\n    try {\\n      return new URL(urlString, base);\\n    } catch (error) {\\n      return null;\\n    }\\n  }\\n});\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar isSubsetOf = require('..\u002Finternals\u002Fset-is-subset-of');\\nvar setMethodAcceptSetLike = require('..\u002Finternals\u002Fset-method-accept-set-like');\\n\\nvar INCORRECT = !setMethodAcceptSetLike('isSubsetOf', function (result) {\\n  return result;\\n});\\n\\n\u002F\u002F `Set.prototype.isSubsetOf` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.issubsetof\\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\\n  isSubsetOf: isSubsetOf\\n});\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar createElement = require('..\u002Finternals\u002Fdocument-create-element');\\n\\n\u002F\u002F Thanks to IE8 for its funny defineProperty\\nmodule.exports = !DESCRIPTORS && !fails(function () {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- required for testing\\n  return Object.defineProperty(createElement('div'), 'a', {\\n    get: function () { return 7; }\\n  }).a !== 7;\\n});\\n\",\"'use strict';\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar isNullOrUndefined = require('..\u002Finternals\u002Fis-null-or-undefined');\\n\\n\u002F\u002F `GetMethod` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-getmethod\\nmodule.exports = function (V, P) {\\n  var func = V[P];\\n  return isNullOrUndefined(func) ? undefined : aCallable(func);\\n};\\n\",\"'use strict';\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\n\\nvar $TypeError = TypeError;\\n\\nvar PromiseCapability = function (C) {\\n  var resolve, reject;\\n  this.promise = new C(function ($$resolve, $$reject) {\\n    if (resolve !== undefined || reject !== undefined) throw new $TypeError('Bad Promise constructor');\\n    resolve = $$resolve;\\n    reject = $$reject;\\n  });\\n  this.resolve = aCallable(resolve);\\n  this.reject = aCallable(reject);\\n};\\n\\n\u002F\u002F `NewPromiseCapability` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-newpromisecapability\\nmodule.exports.f = function (C) {\\n  return new PromiseCapability(C);\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this-clause');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar NATIVE_BIND = require('..\u002Finternals\u002Ffunction-bind-native');\\n\\nvar bind = uncurryThis(uncurryThis.bind);\\n\\n\u002F\u002F optional \u002F simple context binding\\nmodule.exports = function (fn, that) {\\n  aCallable(fn);\\n  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (\u002F* ...args *\u002F) {\\n    return fn.apply(that, arguments);\\n  };\\n};\\n\",\"'use strict';\\nvar shared = require('..\u002Finternals\u002Fshared');\\nvar uid = require('..\u002Finternals\u002Fuid');\\n\\nvar keys = shared('keys');\\n\\nmodule.exports = function (key) {\\n  return keys[key] || (keys[key] = uid(key));\\n};\\n\",\"'use strict';\\nvar ENVIRONMENT = require('..\u002Finternals\u002Fenvironment');\\n\\nmodule.exports = ENVIRONMENT === 'NODE';\\n\",\"'use strict';\\nvar toLength = require('..\u002Finternals\u002Fto-length');\\n\\n\u002F\u002F `LengthOfArrayLike` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-lengthofarraylike\\nmodule.exports = function (obj) {\\n  return toLength(obj.length);\\n};\\n\",\"'use strict';\\nmodule.exports = {};\\n\",\"'use strict';\\nvar defineBuiltIn = require('..\u002Finternals\u002Fdefine-built-in');\\n\\nmodule.exports = function (target, src, options) {\\n  for (var key in src) defineBuiltIn(target, key, src[key], options);\\n  return target;\\n};\\n\",\"'use strict';\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\n\\n\u002F\u002F call something on iterator step with safe closing on error\\nmodule.exports = function (iterator, fn, value, ENTRIES) {\\n  try {\\n    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\\n  } catch (error) {\\n    iteratorClose(iterator, 'throw', error);\\n  }\\n};\\n\",\"'use strict';\\nmodule.exports = false;\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar getOwnPropertyDescriptor = require('..\u002Finternals\u002Fobject-get-own-property-descriptor').f;\\nvar createNonEnumerableProperty = require('..\u002Finternals\u002Fcreate-non-enumerable-property');\\nvar defineBuiltIn = require('..\u002Finternals\u002Fdefine-built-in');\\nvar defineGlobalProperty = require('..\u002Finternals\u002Fdefine-global-property');\\nvar copyConstructorProperties = require('..\u002Finternals\u002Fcopy-constructor-properties');\\nvar isForced = require('..\u002Finternals\u002Fis-forced');\\n\\n\u002F*\\n  options.target         - name of the target object\\n  options.global         - target is the global object\\n  options.stat           - export as static methods of target\\n  options.proto          - export as prototype methods of target\\n  options.real           - real prototype method for the `pure` version\\n  options.forced         - export even if the native feature is available\\n  options.bind           - bind methods to the target, required for the `pure` version\\n  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version\\n  options.unsafe         - use the simple assignment of property instead of delete + defineProperty\\n  options.sham           - add a flag to not completely full polyfills\\n  options.enumerable     - export as enumerable property\\n  options.dontCallGetSet - prevent calling a getter on target\\n  options.name           - the .name of the function if it does not match the key\\n*\u002F\\nmodule.exports = function (options, source) {\\n  var TARGET = options.target;\\n  var GLOBAL = options.global;\\n  var STATIC = options.stat;\\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\\n  if (GLOBAL) {\\n    target = globalThis;\\n  } else if (STATIC) {\\n    target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\\n  } else {\\n    target = globalThis[TARGET] && globalThis[TARGET].prototype;\\n  }\\n  if (target) for (key in source) {\\n    sourceProperty = source[key];\\n    if (options.dontCallGetSet) {\\n      descriptor = getOwnPropertyDescriptor(target, key);\\n      targetProperty = descriptor && descriptor.value;\\n    } else targetProperty = target[key];\\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\\n    \u002F\u002F contained in target\\n    if (!FORCED && targetProperty !== undefined) {\\n      if (typeof sourceProperty == typeof targetProperty) continue;\\n      copyConstructorProperties(sourceProperty, targetProperty);\\n    }\\n    \u002F\u002F add a flag to not completely full polyfills\\n    if (options.sham || (targetProperty && targetProperty.sham)) {\\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\\n    }\\n    defineBuiltIn(target, key, sourceProperty, options);\\n  }\\n};\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar defineBuiltInAccessor = require('..\u002Finternals\u002Fdefine-built-in-accessor');\\nvar isDetached = require('..\u002Finternals\u002Farray-buffer-is-detached');\\n\\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\\n\\n\u002F\u002F `ArrayBuffer.prototype.detached` getter\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-get-arraybuffer.prototype.detached\\nif (DESCRIPTORS && !('detached' in ArrayBufferPrototype)) {\\n  defineBuiltInAccessor(ArrayBufferPrototype, 'detached', {\\n    configurable: true,\\n    get: function detached() {\\n      return isDetached(this);\\n    }\\n  });\\n}\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar definePropertyModule = require('..\u002Finternals\u002Fobject-define-property');\\nvar createPropertyDescriptor = require('..\u002Finternals\u002Fcreate-property-descriptor');\\n\\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\\n} : function (object, key, value) {\\n  object[key] = value;\\n  return object;\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\n\\nmodule.exports = function (object, key, method) {\\n  try {\\n    \u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\n    return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\\n  } catch (error) { \u002F* empty *\u002F }\\n};\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar V8_PROTOTYPE_DEFINE_BUG = require('..\u002Finternals\u002Fv8-prototype-define-bug');\\nvar definePropertyModule = require('..\u002Finternals\u002Fobject-define-property');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar toIndexedObject = require('..\u002Finternals\u002Fto-indexed-object');\\nvar objectKeys = require('..\u002Finternals\u002Fobject-keys');\\n\\n\u002F\u002F `Object.defineProperties` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.defineproperties\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperties -- safe\\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\\n  anObject(O);\\n  var props = toIndexedObject(Properties);\\n  var keys = objectKeys(Properties);\\n  var length = keys.length;\\n  var index = 0;\\n  var key;\\n  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\\n  return O;\\n};\\n\",\"'use strict';\\nvar $String = String;\\n\\nmodule.exports = function (argument) {\\n  try {\\n    return $String(argument);\\n  } catch (error) {\\n    return 'Object';\\n  }\\n};\\n\",\"'use strict';\\nvar $TypeError = TypeError;\\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; \u002F\u002F 2 ** 53 - 1 == 9007199254740991\\n\\nmodule.exports = function (it) {\\n  if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\\n  return it;\\n};\\n\",\"'use strict';\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar definePropertyModule = require('..\u002Finternals\u002Fobject-define-property');\\nvar makeBuiltIn = require('..\u002Finternals\u002Fmake-built-in');\\nvar defineGlobalProperty = require('..\u002Finternals\u002Fdefine-global-property');\\n\\nmodule.exports = function (O, key, value, options) {\\n  if (!options) options = {};\\n  var simple = options.enumerable;\\n  var name = options.name !== undefined ? options.name : key;\\n  if (isCallable(value)) makeBuiltIn(value, name, options);\\n  if (options.global) {\\n    if (simple) O[key] = value;\\n    else defineGlobalProperty(key, value);\\n  } else {\\n    try {\\n      if (!options.unsafe) delete O[key];\\n      else if (O[key]) simple = true;\\n    } catch (error) { \u002F* empty *\u002F }\\n    if (simple) O[key] = value;\\n    else definePropertyModule.f(O, key, {\\n      value: value,\\n      enumerable: false,\\n      configurable: !options.nonConfigurable,\\n      writable: !options.nonWritable\\n    });\\n  } return O;\\n};\\n\",\"'use strict';\\nvar TO_STRING_TAG_SUPPORT = require('..\u002Finternals\u002Fto-string-tag-support');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar classofRaw = require('..\u002Finternals\u002Fclassof-raw');\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\n\\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\\nvar $Object = Object;\\n\\n\u002F\u002F ES3 wrong here\\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\\n\\n\u002F\u002F fallback for IE11 Script Access Denied error\\nvar tryGet = function (it, key) {\\n  try {\\n    return it[key];\\n  } catch (error) { \u002F* empty *\u002F }\\n};\\n\\n\u002F\u002F getting tag from ES6+ `Object.prototype.toString`\\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\\n  var O, tag, result;\\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\\n    \u002F\u002F @@toStringTag case\\n    : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\\n    \u002F\u002F builtinTag case\\n    : CORRECT_ARGUMENTS ? classofRaw(O)\\n    \u002F\u002F ES3 arguments fallback\\n    : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\\n};\\n\",\"'use strict';\\nvar toPrimitive = require('..\u002Finternals\u002Fto-primitive');\\nvar isSymbol = require('..\u002Finternals\u002Fis-symbol');\\n\\n\u002F\u002F `ToPropertyKey` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-topropertykey\\nmodule.exports = function (argument) {\\n  var key = toPrimitive(argument, 'string');\\n  return isSymbol(key) ? key : key + '';\\n};\\n\",\"'use strict';\\nmodule.exports = function (bitmap, value) {\\n  return {\\n    enumerable: !(bitmap & 1),\\n    configurable: !(bitmap & 2),\\n    writable: !(bitmap & 4),\\n    value: value\\n  };\\n};\\n\",\"'use strict';\\n\u002F* eslint-disable es\u002Fno-symbol -- required for testing *\u002F\\nvar NATIVE_SYMBOL = require('..\u002Finternals\u002Fsymbol-constructor-detection');\\n\\nmodule.exports = NATIVE_SYMBOL &&\\n  !Symbol.sham &&\\n  typeof Symbol.iterator == 'symbol';\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar classof = require('..\u002Finternals\u002Fclassof-raw');\\n\\nvar $Object = Object;\\nvar split = uncurryThis(''.split);\\n\\n\u002F\u002F fallback for non-array-like ES3 and non-enumerable old V8 strings\\nmodule.exports = fails(function () {\\n  \u002F\u002F throws an error in rhino, see https:\u002F\u002Fgithub.com\u002Fmozilla\u002Frhino\u002Fissues\u002F346\\n  \u002F\u002F eslint-disable-next-line no-prototype-builtins -- safe\\n  return !$Object('z').propertyIsEnumerable(0);\\n}) ? function (it) {\\n  return classof(it) === 'String' ? split(it, '') : $Object(it);\\n} : $Object;\\n\",\"'use strict';\\nvar has = require('..\u002Finternals\u002Fset-helpers').has;\\n\\n\u002F\u002F Perform ? RequireInternalSlot(M, [[SetData]])\\nmodule.exports = function (it) {\\n  has(it);\\n  return it;\\n};\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar propertyIsEnumerableModule = require('..\u002Finternals\u002Fobject-property-is-enumerable');\\nvar createPropertyDescriptor = require('..\u002Finternals\u002Fcreate-property-descriptor');\\nvar toIndexedObject = require('..\u002Finternals\u002Fto-indexed-object');\\nvar toPropertyKey = require('..\u002Finternals\u002Fto-property-key');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar IE8_DOM_DEFINE = require('..\u002Finternals\u002Fie8-dom-define');\\n\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\n\\n\u002F\u002F `Object.getOwnPropertyDescriptor` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.getownpropertydescriptor\\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\\n  O = toIndexedObject(O);\\n  P = toPropertyKey(P);\\n  if (IE8_DOM_DEFINE) try {\\n    return $getOwnPropertyDescriptor(O, P);\\n  } catch (error) { \u002F* empty *\u002F }\\n  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar uncurryThisAccessor = require('..\u002Finternals\u002Ffunction-uncurry-this-accessor');\\nvar classof = require('..\u002Finternals\u002Fclassof-raw');\\n\\nvar ArrayBuffer = globalThis.ArrayBuffer;\\nvar TypeError = globalThis.TypeError;\\n\\n\u002F\u002F Includes\\n\u002F\u002F - Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).\\n\u002F\u002F - If IsSharedArrayBuffer(O) is true, throw a TypeError exception.\\nmodule.exports = ArrayBuffer && uncurryThisAccessor(ArrayBuffer.prototype, 'byteLength', 'get') || function (O) {\\n  if (classof(O) !== 'ArrayBuffer') throw new TypeError('ArrayBuffer expected');\\n  return O.byteLength;\\n};\\n\",\"'use strict';\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar IS_PURE = require('..\u002Finternals\u002Fis-pure');\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\n\\nmodule.exports = !fails(function () {\\n  \u002F\u002F eslint-disable-next-line unicorn\u002Frelative-url-style -- required for testing\\n  var url = new URL('b?a=1&b=2&c=3', 'https:\u002F\u002Fa');\\n  var params = url.searchParams;\\n  var params2 = new URLSearchParams('a=1&a=2&b=3');\\n  var result = '';\\n  url.pathname = 'c%20d';\\n  params.forEach(function (value, key) {\\n    params['delete']('b');\\n    result += key + value;\\n  });\\n  params2['delete']('a', 2);\\n  \u002F\u002F `undefined` case is a Chromium 117 bug\\n  \u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=14222\\n  params2['delete']('b', undefined);\\n  return (IS_PURE && (!url.toJSON || !params2.has('a', 1) || params2.has('a', 2) || !params2.has('a', undefined) || params2.has('b')))\\n    || (!params.size && (IS_PURE || !DESCRIPTORS))\\n    || !params.sort\\n    || url.href !== 'https:\u002F\u002Fa\u002Fc%20d?a=1&c=3'\\n    || params.get('c') !== '3'\\n    || String(new URLSearchParams('?a=1')) !== 'a=1'\\n    || !params[ITERATOR]\\n    \u002F\u002F throws in Edge\\n    || new URL('https:\u002F\u002Fa@b').username !== 'a'\\n    || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\\n    \u002F\u002F not punycoded in Edge\\n    || new URL('https:\u002F\u002Fтест').host !== 'xn--e1aybc'\\n    \u002F\u002F not escaped in Chrome 62-\\n    || new URL('https:\u002F\u002Fa#б').hash !== '#%D0%B1'\\n    \u002F\u002F fails in Chrome 66-\\n    || result !== 'a1c3'\\n    \u002F\u002F throws in Safari\\n    || new URL('https:\u002F\u002Fx', undefined).host !== 'x';\\n});\\n\",\"'use strict';\\nvar classofRaw = require('..\u002Finternals\u002Fclassof-raw');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\n\\nmodule.exports = function (fn) {\\n  \u002F\u002F Nashorn bug:\\n  \u002F\u002F   https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F1128\\n  \u002F\u002F   https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F1130\\n  if (classofRaw(fn) === 'Function') return uncurryThis(fn);\\n};\\n\",\"'use strict';\\nvar defineBuiltIn = require('..\u002Finternals\u002Fdefine-built-in');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar toString = require('..\u002Finternals\u002Fto-string');\\nvar validateArgumentsLength = require('..\u002Finternals\u002Fvalidate-arguments-length');\\n\\nvar $URLSearchParams = URLSearchParams;\\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\\nvar getAll = uncurryThis(URLSearchParamsPrototype.getAll);\\nvar $has = uncurryThis(URLSearchParamsPrototype.has);\\nvar params = new $URLSearchParams('a=1');\\n\\n\u002F\u002F `undefined` case is a Chromium 117 bug\\n\u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=14222\\nif (params.has('a', 2) || !params.has('a', undefined)) {\\n  defineBuiltIn(URLSearchParamsPrototype, 'has', function has(name \u002F* , value *\u002F) {\\n    var length = arguments.length;\\n    var $value = length \u003C 2 ? undefined : arguments[1];\\n    if (length && $value === undefined) return $has(this, name);\\n    var values = getAll(this, name); \u002F\u002F also validates `this`\\n    validateArgumentsLength(length, 1);\\n    var value = toString($value);\\n    var index = 0;\\n    while (index \u003C values.length) {\\n      if (values[index++] === value) return true;\\n    } return false;\\n  }, { enumerable: true, unsafe: true });\\n}\\n\",\"'use strict';\\nvar IS_PURE = require('..\u002Finternals\u002Fis-pure');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar defineGlobalProperty = require('..\u002Finternals\u002Fdefine-global-property');\\n\\nvar SHARED = '__core-js_shared__';\\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\\n\\n(store.versions || (store.versions = [])).push({\\n  version: '3.42.0',\\n  mode: IS_PURE ? 'pure' : 'global',\\n  copyright: '© 2014-2025 Denis Pushkarev (zloirock.ru)',\\n  license: 'https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fv3.42.0\u002FLICENSE',\\n  source: 'https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js'\\n});\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar difference = require('..\u002Finternals\u002Fset-difference');\\nvar setMethodAcceptSetLike = require('..\u002Finternals\u002Fset-method-accept-set-like');\\n\\nvar INCORRECT = !setMethodAcceptSetLike('difference', function (result) {\\n  return result.size === 0;\\n});\\n\\n\u002F\u002F `Set.prototype.difference` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.difference\\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\\n  difference: difference\\n});\\n\",\"'use strict';\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\nvar create = require('..\u002Finternals\u002Fobject-create');\\nvar getPrototypeOf = require('..\u002Finternals\u002Fobject-get-prototype-of');\\nvar defineBuiltIn = require('..\u002Finternals\u002Fdefine-built-in');\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\nvar IS_PURE = require('..\u002Finternals\u002Fis-pure');\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\nvar BUGGY_SAFARI_ITERATORS = false;\\n\\n\u002F\u002F `%IteratorPrototype%` object\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-%iteratorprototype%-object\\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\\n\\n\u002F* eslint-disable es\u002Fno-array-prototype-keys -- safe *\u002F\\nif ([].keys) {\\n  arrayIterator = [].keys();\\n  \u002F\u002F Safari 8 has buggy iterators w\u002Fo `next`\\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\\n  else {\\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\\n  }\\n}\\n\\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\\n  var test = {};\\n  \u002F\u002F FF44- legacy iterators case\\n  return IteratorPrototype[ITERATOR].call(test) !== test;\\n});\\n\\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\\n\\n\u002F\u002F `%IteratorPrototype%[@@iterator]()` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-%iteratorprototype%-@@iterator\\nif (!isCallable(IteratorPrototype[ITERATOR])) {\\n  defineBuiltIn(IteratorPrototype, ITERATOR, function () {\\n    return this;\\n  });\\n}\\n\\nmodule.exports = {\\n  IteratorPrototype: IteratorPrototype,\\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\n\\nmodule.exports = uncurryThis([].slice);\\n\",\"'use strict';\\nvar toIntegerOrInfinity = require('..\u002Finternals\u002Fto-integer-or-infinity');\\nvar toLength = require('..\u002Finternals\u002Fto-length');\\n\\nvar $RangeError = RangeError;\\n\\n\u002F\u002F `ToIndex` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-toindex\\nmodule.exports = function (it) {\\n  if (it === undefined) return 0;\\n  var number = toIntegerOrInfinity(it);\\n  var length = toLength(number);\\n  if (number !== length) throw new $RangeError('Wrong length or index');\\n  return length;\\n};\\n\",\"'use strict';\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar ownKeys = require('..\u002Finternals\u002Fown-keys');\\nvar getOwnPropertyDescriptorModule = require('..\u002Finternals\u002Fobject-get-own-property-descriptor');\\nvar definePropertyModule = require('..\u002Finternals\u002Fobject-define-property');\\n\\nmodule.exports = function (target, source, exceptions) {\\n  var keys = ownKeys(source);\\n  var defineProperty = definePropertyModule.f;\\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\\n  for (var i = 0; i \u003C keys.length; i++) {\\n    var key = keys[i];\\n    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\\n    }\\n  }\\n};\\n\",\"'use strict';\\nvar isNullOrUndefined = require('..\u002Finternals\u002Fis-null-or-undefined');\\n\\nvar $TypeError = TypeError;\\n\\n\u002F\u002F `RequireObjectCoercible` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-requireobjectcoercible\\nmodule.exports = function (it) {\\n  if (isNullOrUndefined(it)) throw new $TypeError(\\\"Can't call method on \\\" + it);\\n  return it;\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\n\\nvar aFunction = function (argument) {\\n  return isCallable(argument) ? argument : undefined;\\n};\\n\\nmodule.exports = function (namespace, method) {\\n  return arguments.length \u003C 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\\n};\\n\",\"'use strict';\\n\u002F\u002F eslint-disable-next-line es\u002Fno-typed-arrays -- safe\\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar $transfer = require('..\u002Finternals\u002Farray-buffer-transfer');\\n\\n\u002F\u002F `ArrayBuffer.prototype.transferToFixedLength` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-arraybuffer-transfer\u002F#sec-arraybuffer.prototype.transfertofixedlength\\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\\n  transferToFixedLength: function transferToFixedLength() {\\n    return $transfer(this, arguments.length ? arguments[0] : undefined, false);\\n  }\\n});\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar intersection = require('..\u002Finternals\u002Fset-intersection');\\nvar setMethodAcceptSetLike = require('..\u002Finternals\u002Fset-method-accept-set-like');\\n\\nvar INCORRECT = !setMethodAcceptSetLike('intersection', function (result) {\\n  return result.size === 2 && result.has(1) && result.has(2);\\n}) || fails(function () {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-array-from, es\u002Fno-set, es\u002Fno-set-prototype-intersection -- testing\\n  return String(Array.from(new Set([1, 2, 3]).intersection(new Set([3, 2])))) !== '3,2';\\n});\\n\\n\u002F\u002F `Set.prototype.intersection` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.intersection\\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\\n  intersection: intersection\\n});\\n\",\"'use strict';\\nvar toIntegerOrInfinity = require('..\u002Finternals\u002Fto-integer-or-infinity');\\n\\nvar min = Math.min;\\n\\n\u002F\u002F `ToLength` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-tolength\\nmodule.exports = function (argument) {\\n  var len = toIntegerOrInfinity(argument);\\n  return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; \u002F\u002F 2 ** 53 - 1 == 9007199254740991\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar $transfer = require('..\u002Finternals\u002Farray-buffer-transfer');\\n\\n\u002F\u002F `ArrayBuffer.prototype.transfer` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-arraybuffer-transfer\u002F#sec-arraybuffer.prototype.transfer\\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\\n  transfer: function transfer() {\\n    return $transfer(this, arguments.length ? arguments[0] : undefined, true);\\n  }\\n});\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar anInstance = require('..\u002Finternals\u002Fan-instance');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar getPrototypeOf = require('..\u002Finternals\u002Fobject-get-prototype-of');\\nvar defineBuiltInAccessor = require('..\u002Finternals\u002Fdefine-built-in-accessor');\\nvar createProperty = require('..\u002Finternals\u002Fcreate-property');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\nvar IteratorPrototype = require('..\u002Finternals\u002Fiterators-core').IteratorPrototype;\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar IS_PURE = require('..\u002Finternals\u002Fis-pure');\\n\\nvar CONSTRUCTOR = 'constructor';\\nvar ITERATOR = 'Iterator';\\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\\n\\nvar $TypeError = TypeError;\\nvar NativeIterator = globalThis[ITERATOR];\\n\\n\u002F\u002F FF56- have non-standard global helper `Iterator`\\nvar FORCED = IS_PURE\\n  || !isCallable(NativeIterator)\\n  || NativeIterator.prototype !== IteratorPrototype\\n  \u002F\u002F FF44- non-standard `Iterator` passes previous tests\\n  || !fails(function () { NativeIterator({}); });\\n\\nvar IteratorConstructor = function Iterator() {\\n  anInstance(this, IteratorPrototype);\\n  if (getPrototypeOf(this) === IteratorPrototype) throw new $TypeError('Abstract class Iterator not directly constructable');\\n};\\n\\nvar defineIteratorPrototypeAccessor = function (key, value) {\\n  if (DESCRIPTORS) {\\n    defineBuiltInAccessor(IteratorPrototype, key, {\\n      configurable: true,\\n      get: function () {\\n        return value;\\n      },\\n      set: function (replacement) {\\n        anObject(this);\\n        if (this === IteratorPrototype) throw new $TypeError(\\\"You can't redefine this property\\\");\\n        if (hasOwn(this, key)) this[key] = replacement;\\n        else createProperty(this, key, replacement);\\n      }\\n    });\\n  } else IteratorPrototype[key] = value;\\n};\\n\\nif (!hasOwn(IteratorPrototype, TO_STRING_TAG)) defineIteratorPrototypeAccessor(TO_STRING_TAG, ITERATOR);\\n\\nif (FORCED || !hasOwn(IteratorPrototype, CONSTRUCTOR) || IteratorPrototype[CONSTRUCTOR] === Object) {\\n  defineIteratorPrototypeAccessor(CONSTRUCTOR, IteratorConstructor);\\n}\\n\\nIteratorConstructor.prototype = IteratorPrototype;\\n\\n\u002F\u002F `Iterator` constructor\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator\\n$({ global: true, constructor: true, forced: FORCED }, {\\n  Iterator: IteratorConstructor\\n});\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar shared = require('..\u002Finternals\u002Fshared');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar uid = require('..\u002Finternals\u002Fuid');\\nvar NATIVE_SYMBOL = require('..\u002Finternals\u002Fsymbol-constructor-detection');\\nvar USE_SYMBOL_AS_UID = require('..\u002Finternals\u002Fuse-symbol-as-uid');\\n\\nvar Symbol = globalThis.Symbol;\\nvar WellKnownSymbolsStore = shared('wks');\\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\\n\\nmodule.exports = function (name) {\\n  if (!hasOwn(WellKnownSymbolsStore, name)) {\\n    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\\n      ? Symbol[name]\\n      : createWellKnownSymbol('Symbol.' + name);\\n  } return WellKnownSymbolsStore[name];\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\n\\nvar $SyntaxError = SyntaxError;\\nvar $parseInt = parseInt;\\nvar fromCharCode = String.fromCharCode;\\nvar at = uncurryThis(''.charAt);\\nvar slice = uncurryThis(''.slice);\\nvar exec = uncurryThis(\u002F.\u002F.exec);\\n\\nvar codePoints = {\\n  '\\\\\\\\\\\"': '\\\"',\\n  '\\\\\\\\\\\\\\\\': '\\\\\\\\',\\n  '\\\\\\\\\u002F': '\u002F',\\n  '\\\\\\\\b': '\\\\b',\\n  '\\\\\\\\f': '\\\\f',\\n  '\\\\\\\\n': '\\\\n',\\n  '\\\\\\\\r': '\\\\r',\\n  '\\\\\\\\t': '\\\\t'\\n};\\n\\nvar IS_4_HEX_DIGITS = \u002F^[\\\\da-f]{4}$\u002Fi;\\n\u002F\u002F eslint-disable-next-line regexp\u002Fno-control-character -- safe\\nvar IS_C0_CONTROL_CODE = \u002F^[\\\\u0000-\\\\u001F]$\u002F;\\n\\nmodule.exports = function (source, i) {\\n  var unterminated = true;\\n  var value = '';\\n  while (i \u003C source.length) {\\n    var chr = at(source, i);\\n    if (chr === '\\\\\\\\') {\\n      var twoChars = slice(source, i, i + 2);\\n      if (hasOwn(codePoints, twoChars)) {\\n        value += codePoints[twoChars];\\n        i += 2;\\n      } else if (twoChars === '\\\\\\\\u') {\\n        i += 2;\\n        var fourHexDigits = slice(source, i, i + 4);\\n        if (!exec(IS_4_HEX_DIGITS, fourHexDigits)) throw new $SyntaxError('Bad Unicode escape at: ' + i);\\n        value += fromCharCode($parseInt(fourHexDigits, 16));\\n        i += 4;\\n      } else throw new $SyntaxError('Unknown escape sequence: \\\"' + twoChars + '\\\"');\\n    } else if (chr === '\\\"') {\\n      unterminated = false;\\n      i++;\\n      break;\\n    } else {\\n      if (exec(IS_C0_CONTROL_CODE, chr)) throw new $SyntaxError('Bad control character in string literal at: ' + i);\\n      value += chr;\\n      i++;\\n    }\\n  }\\n  if (unterminated) throw new $SyntaxError('Unterminated string at: ' + i);\\n  return { value: value, end: i };\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar iterate = require('..\u002Finternals\u002Fiterate');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar getIteratorDirect = require('..\u002Finternals\u002Fget-iterator-direct');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\nvar iteratorHelperWithoutClosingOnEarlyError = require('..\u002Finternals\u002Fiterator-helper-without-closing-on-early-error');\\nvar apply = require('..\u002Finternals\u002Ffunction-apply');\\nvar fails = require('..\u002Finternals\u002Ffails');\\n\\nvar $TypeError = TypeError;\\n\\n\u002F\u002F https:\u002F\u002Fbugs.webkit.org\u002Fshow_bug.cgi?id=291651\\nvar FAILS_ON_INITIAL_UNDEFINED = fails(function () {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-iterator-prototype-reduce, es\u002Fno-array-prototype-keys, array-callback-return -- required for testing\\n  [].keys().reduce(function () { \u002F* empty *\u002F }, undefined);\\n});\\n\\nvar reduceWithoutClosingOnEarlyError = !FAILS_ON_INITIAL_UNDEFINED && iteratorHelperWithoutClosingOnEarlyError('reduce', $TypeError);\\n\\n\u002F\u002F `Iterator.prototype.reduce` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.reduce\\n$({ target: 'Iterator', proto: true, real: true, forced: FAILS_ON_INITIAL_UNDEFINED || reduceWithoutClosingOnEarlyError }, {\\n  reduce: function reduce(reducer \u002F* , initialValue *\u002F) {\\n    anObject(this);\\n    try {\\n      aCallable(reducer);\\n    } catch (error) {\\n      iteratorClose(this, 'throw', error);\\n    }\\n\\n    var noInitial = arguments.length \u003C 2;\\n    var accumulator = noInitial ? undefined : arguments[1];\\n    if (reduceWithoutClosingOnEarlyError) {\\n      return apply(reduceWithoutClosingOnEarlyError, this, noInitial ? [reducer] : [reducer, accumulator]);\\n    }\\n    var record = getIteratorDirect(this);\\n    var counter = 0;\\n    iterate(record, function (value) {\\n      if (noInitial) {\\n        noInitial = false;\\n        accumulator = value;\\n      } else {\\n        accumulator = reducer(accumulator, value, counter);\\n      }\\n      counter++;\\n    }, { IS_RECORD: true });\\n    if (noInitial) throw new $TypeError('Reduce of empty iterator with no initial value');\\n    return accumulator;\\n  }\\n});\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar getBuiltIn = require('..\u002Finternals\u002Fget-built-in');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\nvar isArray = require('..\u002Finternals\u002Fis-array');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar toString = require('..\u002Finternals\u002Fto-string');\\nvar lengthOfArrayLike = require('..\u002Finternals\u002Flength-of-array-like');\\nvar createProperty = require('..\u002Finternals\u002Fcreate-property');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar parseJSONString = require('..\u002Finternals\u002Fparse-json-string');\\nvar NATIVE_SYMBOL = require('..\u002Finternals\u002Fsymbol-constructor-detection');\\n\\nvar JSON = globalThis.JSON;\\nvar Number = globalThis.Number;\\nvar SyntaxError = globalThis.SyntaxError;\\nvar nativeParse = JSON && JSON.parse;\\nvar enumerableOwnProperties = getBuiltIn('Object', 'keys');\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\nvar at = uncurryThis(''.charAt);\\nvar slice = uncurryThis(''.slice);\\nvar exec = uncurryThis(\u002F.\u002F.exec);\\nvar push = uncurryThis([].push);\\n\\nvar IS_DIGIT = \u002F^\\\\d$\u002F;\\nvar IS_NON_ZERO_DIGIT = \u002F^[1-9]$\u002F;\\nvar IS_NUMBER_START = \u002F^[\\\\d-]$\u002F;\\nvar IS_WHITESPACE = \u002F^[\\\\t\\\\n\\\\r ]$\u002F;\\n\\nvar PRIMITIVE = 0;\\nvar OBJECT = 1;\\n\\nvar $parse = function (source, reviver) {\\n  source = toString(source);\\n  var context = new Context(source, 0, '');\\n  var root = context.parse();\\n  var value = root.value;\\n  var endIndex = context.skip(IS_WHITESPACE, root.end);\\n  if (endIndex \u003C source.length) {\\n    throw new SyntaxError('Unexpected extra character: \\\"' + at(source, endIndex) + '\\\" after the parsed data at: ' + endIndex);\\n  }\\n  return isCallable(reviver) ? internalize({ '': value }, '', reviver, root) : value;\\n};\\n\\nvar internalize = function (holder, name, reviver, node) {\\n  var val = holder[name];\\n  var unmodified = node && val === node.value;\\n  var context = unmodified && typeof node.source == 'string' ? { source: node.source } : {};\\n  var elementRecordsLen, keys, len, i, P;\\n  if (isObject(val)) {\\n    var nodeIsArray = isArray(val);\\n    var nodes = unmodified ? node.nodes : nodeIsArray ? [] : {};\\n    if (nodeIsArray) {\\n      elementRecordsLen = nodes.length;\\n      len = lengthOfArrayLike(val);\\n      for (i = 0; i \u003C len; i++) {\\n        internalizeProperty(val, i, internalize(val, '' + i, reviver, i \u003C elementRecordsLen ? nodes[i] : undefined));\\n      }\\n    } else {\\n      keys = enumerableOwnProperties(val);\\n      len = lengthOfArrayLike(keys);\\n      for (i = 0; i \u003C len; i++) {\\n        P = keys[i];\\n        internalizeProperty(val, P, internalize(val, P, reviver, hasOwn(nodes, P) ? nodes[P] : undefined));\\n      }\\n    }\\n  }\\n  return call(reviver, holder, name, val, context);\\n};\\n\\nvar internalizeProperty = function (object, key, value) {\\n  if (DESCRIPTORS) {\\n    var descriptor = getOwnPropertyDescriptor(object, key);\\n    if (descriptor && !descriptor.configurable) return;\\n  }\\n  if (value === undefined) delete object[key];\\n  else createProperty(object, key, value);\\n};\\n\\nvar Node = function (value, end, source, nodes) {\\n  this.value = value;\\n  this.end = end;\\n  this.source = source;\\n  this.nodes = nodes;\\n};\\n\\nvar Context = function (source, index) {\\n  this.source = source;\\n  this.index = index;\\n};\\n\\n\u002F\u002F https:\u002F\u002Fwww.json.org\u002Fjson-en.html\\nContext.prototype = {\\n  fork: function (nextIndex) {\\n    return new Context(this.source, nextIndex);\\n  },\\n  parse: function () {\\n    var source = this.source;\\n    var i = this.skip(IS_WHITESPACE, this.index);\\n    var fork = this.fork(i);\\n    var chr = at(source, i);\\n    if (exec(IS_NUMBER_START, chr)) return fork.number();\\n    switch (chr) {\\n      case '{':\\n        return fork.object();\\n      case '[':\\n        return fork.array();\\n      case '\\\"':\\n        return fork.string();\\n      case 't':\\n        return fork.keyword(true);\\n      case 'f':\\n        return fork.keyword(false);\\n      case 'n':\\n        return fork.keyword(null);\\n    } throw new SyntaxError('Unexpected character: \\\"' + chr + '\\\" at: ' + i);\\n  },\\n  node: function (type, value, start, end, nodes) {\\n    return new Node(value, end, type ? null : slice(this.source, start, end), nodes);\\n  },\\n  object: function () {\\n    var source = this.source;\\n    var i = this.index + 1;\\n    var expectKeypair = false;\\n    var object = {};\\n    var nodes = {};\\n    while (i \u003C source.length) {\\n      i = this.until(['\\\"', '}'], i);\\n      if (at(source, i) === '}' && !expectKeypair) {\\n        i++;\\n        break;\\n      }\\n      \u002F\u002F Parsing the key\\n      var result = this.fork(i).string();\\n      var key = result.value;\\n      i = result.end;\\n      i = this.until([':'], i) + 1;\\n      \u002F\u002F Parsing value\\n      i = this.skip(IS_WHITESPACE, i);\\n      result = this.fork(i).parse();\\n      createProperty(nodes, key, result);\\n      createProperty(object, key, result.value);\\n      i = this.until([',', '}'], result.end);\\n      var chr = at(source, i);\\n      if (chr === ',') {\\n        expectKeypair = true;\\n        i++;\\n      } else if (chr === '}') {\\n        i++;\\n        break;\\n      }\\n    }\\n    return this.node(OBJECT, object, this.index, i, nodes);\\n  },\\n  array: function () {\\n    var source = this.source;\\n    var i = this.index + 1;\\n    var expectElement = false;\\n    var array = [];\\n    var nodes = [];\\n    while (i \u003C source.length) {\\n      i = this.skip(IS_WHITESPACE, i);\\n      if (at(source, i) === ']' && !expectElement) {\\n        i++;\\n        break;\\n      }\\n      var result = this.fork(i).parse();\\n      push(nodes, result);\\n      push(array, result.value);\\n      i = this.until([',', ']'], result.end);\\n      if (at(source, i) === ',') {\\n        expectElement = true;\\n        i++;\\n      } else if (at(source, i) === ']') {\\n        i++;\\n        break;\\n      }\\n    }\\n    return this.node(OBJECT, array, this.index, i, nodes);\\n  },\\n  string: function () {\\n    var index = this.index;\\n    var parsed = parseJSONString(this.source, this.index + 1);\\n    return this.node(PRIMITIVE, parsed.value, index, parsed.end);\\n  },\\n  number: function () {\\n    var source = this.source;\\n    var startIndex = this.index;\\n    var i = startIndex;\\n    if (at(source, i) === '-') i++;\\n    if (at(source, i) === '0') i++;\\n    else if (exec(IS_NON_ZERO_DIGIT, at(source, i))) i = this.skip(IS_DIGIT, i + 1);\\n    else throw new SyntaxError('Failed to parse number at: ' + i);\\n    if (at(source, i) === '.') i = this.skip(IS_DIGIT, i + 1);\\n    if (at(source, i) === 'e' || at(source, i) === 'E') {\\n      i++;\\n      if (at(source, i) === '+' || at(source, i) === '-') i++;\\n      var exponentStartIndex = i;\\n      i = this.skip(IS_DIGIT, i);\\n      if (exponentStartIndex === i) throw new SyntaxError(\\\"Failed to parse number's exponent value at: \\\" + i);\\n    }\\n    return this.node(PRIMITIVE, Number(slice(source, startIndex, i)), startIndex, i);\\n  },\\n  keyword: function (value) {\\n    var keyword = '' + value;\\n    var index = this.index;\\n    var endIndex = index + keyword.length;\\n    if (slice(this.source, index, endIndex) !== keyword) throw new SyntaxError('Failed to parse value at: ' + index);\\n    return this.node(PRIMITIVE, value, index, endIndex);\\n  },\\n  skip: function (regex, i) {\\n    var source = this.source;\\n    for (; i \u003C source.length; i++) if (!exec(regex, at(source, i))) break;\\n    return i;\\n  },\\n  until: function (array, i) {\\n    i = this.skip(IS_WHITESPACE, i);\\n    var chr = at(this.source, i);\\n    for (var j = 0; j \u003C array.length; j++) if (array[j] === chr) return i;\\n    throw new SyntaxError('Unexpected character: \\\"' + chr + '\\\" at: ' + i);\\n  }\\n};\\n\\nvar NO_SOURCE_SUPPORT = fails(function () {\\n  var unsafeInt = '9007199254740993';\\n  var source;\\n  nativeParse(unsafeInt, function (key, value, context) {\\n    source = context.source;\\n  });\\n  return source !== unsafeInt;\\n});\\n\\nvar PROPER_BASE_PARSE = NATIVE_SYMBOL && !fails(function () {\\n  \u002F\u002F Safari 9 bug\\n  return 1 \u002F nativeParse('-0 \\\\t') !== -Infinity;\\n});\\n\\n\u002F\u002F `JSON.parse` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-json.parse\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-json-parse-with-source\\n$({ target: 'JSON', stat: true, forced: NO_SOURCE_SUPPORT }, {\\n  parse: function parse(text, reviver) {\\n    return PROPER_BASE_PARSE && !isCallable(reviver) ? nativeParse(text) : $parse(text, reviver);\\n  }\\n});\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar iterateSimple = require('..\u002Finternals\u002Fiterate-simple');\\nvar SetHelpers = require('..\u002Finternals\u002Fset-helpers');\\n\\nvar Set = SetHelpers.Set;\\nvar SetPrototype = SetHelpers.proto;\\nvar forEach = uncurryThis(SetPrototype.forEach);\\nvar keys = uncurryThis(SetPrototype.keys);\\nvar next = keys(new Set()).next;\\n\\nmodule.exports = function (set, fn, interruptible) {\\n  return interruptible ? iterateSimple({ iterator: keys(set), next: next }, fn) : forEach(set, fn);\\n};\\n\",\"'use strict';\\nvar internalObjectKeys = require('..\u002Finternals\u002Fobject-keys-internal');\\nvar enumBugKeys = require('..\u002Finternals\u002Fenum-bug-keys');\\n\\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\\n\\n\u002F\u002F `Object.getOwnPropertyNames` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.getownpropertynames\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertynames -- safe\\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\\n  return internalObjectKeys(O, hiddenKeys);\\n};\\n\",\"'use strict';\\nvar aSet = require('..\u002Finternals\u002Fa-set');\\nvar has = require('..\u002Finternals\u002Fset-helpers').has;\\nvar size = require('..\u002Finternals\u002Fset-size');\\nvar getSetRecord = require('..\u002Finternals\u002Fget-set-record');\\nvar iterateSimple = require('..\u002Finternals\u002Fiterate-simple');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\n\\n\u002F\u002F `Set.prototype.isSupersetOf` method\\n\u002F\u002F https:\u002F\u002Ftc39.github.io\u002Fproposal-set-methods\u002F#Set.prototype.isSupersetOf\\nmodule.exports = function isSupersetOf(other) {\\n  var O = aSet(this);\\n  var otherRec = getSetRecord(other);\\n  if (size(O) \u003C otherRec.size) return false;\\n  var iterator = otherRec.getIterator();\\n  return iterateSimple(iterator, function (e) {\\n    if (!has(O, e)) return iteratorClose(iterator, 'normal', false);\\n  }) !== false;\\n};\\n\",\"'use strict';\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\n\\nvar $String = String;\\nvar $TypeError = TypeError;\\n\\n\u002F\u002F `Assert: Type(argument) is Object`\\nmodule.exports = function (argument) {\\n  if (isObject(argument)) return argument;\\n  throw new $TypeError($String(argument) + ' is not an object');\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\n\\nvar $Error = Error;\\nvar replace = uncurryThis(''.replace);\\n\\nvar TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd');\\n\u002F\u002F eslint-disable-next-line redos\u002Fno-vulnerable, sonarjs\u002Fslow-regex -- safe\\nvar V8_OR_CHAKRA_STACK_ENTRY = \u002F\\\\n\\\\s*at [^:]*:[^\\\\n]*\u002F;\\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\\n\\nmodule.exports = function (stack, dropEntries) {\\n  if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\\n    while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\\n  } return stack;\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\n\\nvar WeakMap = globalThis.WeakMap;\\n\\nmodule.exports = isCallable(WeakMap) && \u002Fnative code\u002F.test(String(WeakMap));\\n\",\"'use strict';\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar getIteratorDirect = require('..\u002Finternals\u002Fget-iterator-direct');\\nvar getIteratorMethod = require('..\u002Finternals\u002Fget-iterator-method');\\n\\nmodule.exports = function (obj, stringHandling) {\\n  if (!stringHandling || typeof obj !== 'string') anObject(obj);\\n  var method = getIteratorMethod(obj);\\n  return getIteratorDirect(anObject(method !== undefined ? call(method, obj) : obj));\\n};\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar fails = require('..\u002Finternals\u002Ffails');\\n\\n\u002F\u002F V8 ~ Chrome 36-\\n\u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=3334\\nmodule.exports = DESCRIPTORS && fails(function () {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- required for testing\\n  return Object.defineProperty(function () { \u002F* empty *\u002F }, 'prototype', {\\n    value: 42,\\n    writable: false\\n  }).prototype !== 42;\\n});\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar defineBuiltInAccessor = require('..\u002Finternals\u002Fdefine-built-in-accessor');\\n\\nvar URLSearchParamsPrototype = URLSearchParams.prototype;\\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\\n\\n\u002F\u002F `URLSearchParams.prototype.size` getter\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Fwhatwg\u002Furl\u002Fpull\u002F734\\nif (DESCRIPTORS && !('size' in URLSearchParamsPrototype)) {\\n  defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\\n    get: function size() {\\n      var count = 0;\\n      forEach(this, function () { count++; });\\n      return count;\\n    },\\n    configurable: true,\\n    enumerable: true\\n  });\\n}\\n\",\"'use strict';\\n\u002F\u002F IE8- don't enum bug keys\\nmodule.exports = [\\n  'constructor',\\n  'hasOwnProperty',\\n  'isPrototypeOf',\\n  'propertyIsEnumerable',\\n  'toLocaleString',\\n  'toString',\\n  'valueOf'\\n];\\n\",\"'use strict';\\nvar NATIVE_BIND = require('..\u002Finternals\u002Ffunction-bind-native');\\n\\nvar FunctionPrototype = Function.prototype;\\nvar apply = FunctionPrototype.apply;\\nvar call = FunctionPrototype.call;\\n\\n\u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind, es\u002Fno-reflect -- safe\\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\\n  return call.apply(apply, arguments);\\n});\\n\",\"'use strict';\\nvar aSet = require('..\u002Finternals\u002Fa-set');\\nvar SetHelpers = require('..\u002Finternals\u002Fset-helpers');\\nvar size = require('..\u002Finternals\u002Fset-size');\\nvar getSetRecord = require('..\u002Finternals\u002Fget-set-record');\\nvar iterateSet = require('..\u002Finternals\u002Fset-iterate');\\nvar iterateSimple = require('..\u002Finternals\u002Fiterate-simple');\\n\\nvar Set = SetHelpers.Set;\\nvar add = SetHelpers.add;\\nvar has = SetHelpers.has;\\n\\n\u002F\u002F `Set.prototype.intersection` method\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\\nmodule.exports = function intersection(other) {\\n  var O = aSet(this);\\n  var otherRec = getSetRecord(other);\\n  var result = new Set();\\n\\n  if (size(O) > otherRec.size) {\\n    iterateSimple(otherRec.getIterator(), function (e) {\\n      if (has(O, e)) add(result, e);\\n    });\\n  } else {\\n    iterateSet(O, function (e) {\\n      if (otherRec.includes(e)) add(result, e);\\n    });\\n  }\\n\\n  return result;\\n};\\n\",\"'use strict';\\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\n\\n\u002F\u002F Nashorn ~ JDK8 bug\\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\\n\\n\u002F\u002F `Object.prototype.propertyIsEnumerable` method implementation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.prototype.propertyisenumerable\\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\\n  var descriptor = getOwnPropertyDescriptor(this, V);\\n  return !!descriptor && descriptor.enumerable;\\n} : $propertyIsEnumerable;\\n\",\"'use strict';\\nvar requireObjectCoercible = require('..\u002Finternals\u002Frequire-object-coercible');\\n\\nvar $Object = Object;\\n\\n\u002F\u002F `ToObject` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-toobject\\nmodule.exports = function (argument) {\\n  return $Object(requireObjectCoercible(argument));\\n};\\n\",\"'use strict';\\nmodule.exports = function (exec) {\\n  try {\\n    return !!exec();\\n  } catch (error) {\\n    return true;\\n  }\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar anObjectOrUndefined = require('..\u002Finternals\u002Fan-object-or-undefined');\\nvar aString = require('..\u002Finternals\u002Fa-string');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar base64Map = require('..\u002Finternals\u002Fbase64-map');\\nvar getAlphabetOption = require('..\u002Finternals\u002Fget-alphabet-option');\\nvar notDetached = require('..\u002Finternals\u002Farray-buffer-not-detached');\\n\\nvar base64Alphabet = base64Map.c2i;\\nvar base64UrlAlphabet = base64Map.c2iUrl;\\n\\nvar SyntaxError = globalThis.SyntaxError;\\nvar TypeError = globalThis.TypeError;\\nvar at = uncurryThis(''.charAt);\\n\\nvar skipAsciiWhitespace = function (string, index) {\\n  var length = string.length;\\n  for (;index \u003C length; index++) {\\n    var chr = at(string, index);\\n    if (chr !== ' ' && chr !== '\\\\t' && chr !== '\\\\n' && chr !== '\\\\f' && chr !== '\\\\r') break;\\n  } return index;\\n};\\n\\nvar decodeBase64Chunk = function (chunk, alphabet, throwOnExtraBits) {\\n  var chunkLength = chunk.length;\\n\\n  if (chunkLength \u003C 4) {\\n    chunk += chunkLength === 2 ? 'AA' : 'A';\\n  }\\n\\n  var triplet = (alphabet[at(chunk, 0)] \u003C\u003C 18)\\n    + (alphabet[at(chunk, 1)] \u003C\u003C 12)\\n    + (alphabet[at(chunk, 2)] \u003C\u003C 6)\\n    + alphabet[at(chunk, 3)];\\n\\n  var chunkBytes = [\\n    (triplet >> 16) & 255,\\n    (triplet >> 8) & 255,\\n    triplet & 255\\n  ];\\n\\n  if (chunkLength === 2) {\\n    if (throwOnExtraBits && chunkBytes[1] !== 0) {\\n      throw new SyntaxError('Extra bits');\\n    }\\n    return [chunkBytes[0]];\\n  }\\n\\n  if (chunkLength === 3) {\\n    if (throwOnExtraBits && chunkBytes[2] !== 0) {\\n      throw new SyntaxError('Extra bits');\\n    }\\n    return [chunkBytes[0], chunkBytes[1]];\\n  }\\n\\n  return chunkBytes;\\n};\\n\\nvar writeBytes = function (bytes, elements, written) {\\n  var elementsLength = elements.length;\\n  for (var index = 0; index \u003C elementsLength; index++) {\\n    bytes[written + index] = elements[index];\\n  }\\n  return written + elementsLength;\\n};\\n\\n\u002F* eslint-disable max-statements, max-depth -- TODO *\u002F\\nmodule.exports = function (string, options, into, maxLength) {\\n  aString(string);\\n  anObjectOrUndefined(options);\\n  var alphabet = getAlphabetOption(options) === 'base64' ? base64Alphabet : base64UrlAlphabet;\\n  var lastChunkHandling = options ? options.lastChunkHandling : undefined;\\n\\n  if (lastChunkHandling === undefined) lastChunkHandling = 'loose';\\n\\n  if (lastChunkHandling !== 'loose' && lastChunkHandling !== 'strict' && lastChunkHandling !== 'stop-before-partial') {\\n    throw new TypeError('Incorrect `lastChunkHandling` option');\\n  }\\n\\n  if (into) notDetached(into.buffer);\\n\\n  var bytes = into || [];\\n  var written = 0;\\n  var read = 0;\\n  var chunk = '';\\n  var index = 0;\\n\\n  if (maxLength) while (true) {\\n    index = skipAsciiWhitespace(string, index);\\n    if (index === string.length) {\\n      if (chunk.length > 0) {\\n        if (lastChunkHandling === 'stop-before-partial') {\\n          break;\\n        }\\n        if (lastChunkHandling === 'loose') {\\n          if (chunk.length === 1) {\\n            throw new SyntaxError('Malformed padding: exactly one additional character');\\n          }\\n          written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, false), written);\\n        } else {\\n          throw new SyntaxError('Missing padding');\\n        }\\n      }\\n      read = string.length;\\n      break;\\n    }\\n    var chr = at(string, index);\\n    ++index;\\n    if (chr === '=') {\\n      if (chunk.length \u003C 2) {\\n        throw new SyntaxError('Padding is too early');\\n      }\\n      index = skipAsciiWhitespace(string, index);\\n      if (chunk.length === 2) {\\n        if (index === string.length) {\\n          if (lastChunkHandling === 'stop-before-partial') {\\n            break;\\n          }\\n          throw new SyntaxError('Malformed padding: only one =');\\n        }\\n        if (at(string, index) === '=') {\\n          ++index;\\n          index = skipAsciiWhitespace(string, index);\\n        }\\n      }\\n      if (index \u003C string.length) {\\n        throw new SyntaxError('Unexpected character after padding');\\n      }\\n      written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, lastChunkHandling === 'strict'), written);\\n      read = string.length;\\n      break;\\n    }\\n    if (!hasOwn(alphabet, chr)) {\\n      throw new SyntaxError('Unexpected character');\\n    }\\n    var remainingBytes = maxLength - written;\\n    if (remainingBytes === 1 && chunk.length === 2 || remainingBytes === 2 && chunk.length === 3) {\\n      \u002F\u002F special case: we can fit exactly the number of bytes currently represented by chunk, so we were just checking for `=`\\n      break;\\n    }\\n\\n    chunk += chr;\\n    if (chunk.length === 4) {\\n      written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, false), written);\\n      chunk = '';\\n      read = index;\\n      if (written === maxLength) {\\n        break;\\n      }\\n    }\\n  }\\n\\n  return { bytes: bytes, read: read, written: written };\\n};\\n\",\"'use strict';\\nvar SetHelpers = require('..\u002Finternals\u002Fset-helpers');\\nvar iterate = require('..\u002Finternals\u002Fset-iterate');\\n\\nvar Set = SetHelpers.Set;\\nvar add = SetHelpers.add;\\n\\nmodule.exports = function (set) {\\n  var result = new Set();\\n  iterate(set, function (it) {\\n    add(result, it);\\n  });\\n  return result;\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar toObject = require('..\u002Finternals\u002Fto-object');\\n\\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\\n\\n\u002F\u002F `HasOwnProperty` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-hasownproperty\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-hasown -- safe\\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\\n  return hasOwnProperty(toObject(it), key);\\n};\\n\",\"'use strict';\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar tryToString = require('..\u002Finternals\u002Ftry-to-string');\\n\\nvar $TypeError = TypeError;\\n\\n\u002F\u002F `Assert: IsCallable(argument) is true`\\nmodule.exports = function (argument) {\\n  if (isCallable(argument)) return argument;\\n  throw new $TypeError(tryToString(argument) + ' is not a function');\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar getIteratorDirect = require('..\u002Finternals\u002Fget-iterator-direct');\\nvar notANaN = require('..\u002Finternals\u002Fnot-a-nan');\\nvar toPositiveInteger = require('..\u002Finternals\u002Fto-positive-integer');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\nvar createIteratorProxy = require('..\u002Finternals\u002Fiterator-create-proxy');\\nvar iteratorHelperWithoutClosingOnEarlyError = require('..\u002Finternals\u002Fiterator-helper-without-closing-on-early-error');\\nvar IS_PURE = require('..\u002Finternals\u002Fis-pure');\\n\\nvar dropWithoutClosingOnEarlyError = !IS_PURE && iteratorHelperWithoutClosingOnEarlyError('drop', RangeError);\\n\\nvar IteratorProxy = createIteratorProxy(function () {\\n  var iterator = this.iterator;\\n  var next = this.next;\\n  var result, done;\\n  while (this.remaining) {\\n    this.remaining--;\\n    result = anObject(call(next, iterator));\\n    done = this.done = !!result.done;\\n    if (done) return;\\n  }\\n  result = anObject(call(next, iterator));\\n  done = this.done = !!result.done;\\n  if (!done) return result.value;\\n});\\n\\n\u002F\u002F `Iterator.prototype.drop` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.drop\\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE || dropWithoutClosingOnEarlyError }, {\\n  drop: function drop(limit) {\\n    anObject(this);\\n    var remaining;\\n    try {\\n      remaining = toPositiveInteger(notANaN(+limit));\\n    } catch (error) {\\n      iteratorClose(this, 'throw', error);\\n    }\\n\\n    if (dropWithoutClosingOnEarlyError) return call(dropWithoutClosingOnEarlyError, this, remaining);\\n\\n    return new IteratorProxy(getIteratorDirect(this), {\\n      remaining: remaining\\n    });\\n  }\\n});\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar IS_NODE = require('..\u002Finternals\u002Fenvironment-is-node');\\n\\nmodule.exports = function (name) {\\n  if (IS_NODE) {\\n    try {\\n      return globalThis.process.getBuiltinModule(name);\\n    } catch (error) { \u002F* empty *\u002F }\\n    try {\\n      \u002F\u002F eslint-disable-next-line no-new-func -- safe\\n      return Function('return require(\\\"' + name + '\\\")')();\\n    } catch (error) { \u002F* empty *\u002F }\\n  }\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar arrayFromConstructorAndList = require('..\u002Finternals\u002Farray-from-constructor-and-list');\\nvar $fromBase64 = require('..\u002Finternals\u002Fuint8-from-base64');\\n\\nvar Uint8Array = globalThis.Uint8Array;\\n\\n\u002F\u002F `Uint8Array.fromBase64` method\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-arraybuffer-base64\\nif (Uint8Array) $({ target: 'Uint8Array', stat: true }, {\\n  fromBase64: function fromBase64(string \u002F* , options *\u002F) {\\n    var result = $fromBase64(string, arguments.length > 1 ? arguments[1] : undefined, null, 0x1FFFFFFFFFFFFF);\\n    return arrayFromConstructorAndList(Uint8Array, result.bytes);\\n  }\\n});\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\n\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\\nvar defineProperty = Object.defineProperty;\\n\\nmodule.exports = function (key, value) {\\n  try {\\n    defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\\n  } catch (error) {\\n    globalThis[key] = value;\\n  } return value;\\n};\\n\",\"'use strict';\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar create = require('..\u002Finternals\u002Fobject-create');\\nvar createNonEnumerableProperty = require('..\u002Finternals\u002Fcreate-non-enumerable-property');\\nvar defineBuiltIns = require('..\u002Finternals\u002Fdefine-built-ins');\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\nvar InternalStateModule = require('..\u002Finternals\u002Finternal-state');\\nvar getMethod = require('..\u002Finternals\u002Fget-method');\\nvar IteratorPrototype = require('..\u002Finternals\u002Fiterators-core').IteratorPrototype;\\nvar createIterResultObject = require('..\u002Finternals\u002Fcreate-iter-result-object');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\n\\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\\nvar ITERATOR_HELPER = 'IteratorHelper';\\nvar WRAP_FOR_VALID_ITERATOR = 'WrapForValidIterator';\\nvar setInternalState = InternalStateModule.set;\\n\\nvar createIteratorProxyPrototype = function (IS_ITERATOR) {\\n  var getInternalState = InternalStateModule.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER);\\n\\n  return defineBuiltIns(create(IteratorPrototype), {\\n    next: function next() {\\n      var state = getInternalState(this);\\n      \u002F\u002F for simplification:\\n      \u002F\u002F   for `%WrapForValidIteratorPrototype%.next` or with `state.returnHandlerResult` our `nextHandler` returns `IterResultObject`\\n      \u002F\u002F   for `%IteratorHelperPrototype%.next` - just a value\\n      if (IS_ITERATOR) return state.nextHandler();\\n      if (state.done) return createIterResultObject(undefined, true);\\n      try {\\n        var result = state.nextHandler();\\n        return state.returnHandlerResult ? result : createIterResultObject(result, state.done);\\n      } catch (error) {\\n        state.done = true;\\n        throw error;\\n      }\\n    },\\n    'return': function () {\\n      var state = getInternalState(this);\\n      var iterator = state.iterator;\\n      state.done = true;\\n      if (IS_ITERATOR) {\\n        var returnMethod = getMethod(iterator, 'return');\\n        return returnMethod ? call(returnMethod, iterator) : createIterResultObject(undefined, true);\\n      }\\n      if (state.inner) try {\\n        iteratorClose(state.inner.iterator, 'normal');\\n      } catch (error) {\\n        return iteratorClose(iterator, 'throw', error);\\n      }\\n      if (iterator) iteratorClose(iterator, 'normal');\\n      return createIterResultObject(undefined, true);\\n    }\\n  });\\n};\\n\\nvar WrapForValidIteratorPrototype = createIteratorProxyPrototype(true);\\nvar IteratorHelperPrototype = createIteratorProxyPrototype(false);\\n\\ncreateNonEnumerableProperty(IteratorHelperPrototype, TO_STRING_TAG, 'Iterator Helper');\\n\\nmodule.exports = function (nextHandler, IS_ITERATOR, RETURN_HANDLER_RESULT) {\\n  var IteratorProxy = function Iterator(record, state) {\\n    if (state) {\\n      state.iterator = record.iterator;\\n      state.next = record.next;\\n    } else state = record;\\n    state.type = IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER;\\n    state.returnHandlerResult = !!RETURN_HANDLER_RESULT;\\n    state.nextHandler = nextHandler;\\n    state.counter = 0;\\n    state.done = false;\\n    setInternalState(this, state);\\n  };\\n\\n  IteratorProxy.prototype = IS_ITERATOR ? WrapForValidIteratorPrototype : IteratorHelperPrototype;\\n\\n  return IteratorProxy;\\n};\\n\",\"'use strict';\\nvar NATIVE_BIND = require('..\u002Finternals\u002Ffunction-bind-native');\\n\\nvar FunctionPrototype = Function.prototype;\\nvar call = FunctionPrototype.call;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind -- safe\\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\\n\\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\\n  return function () {\\n    return call.apply(fn, arguments);\\n  };\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar userAgent = require('..\u002Finternals\u002Fenvironment-user-agent');\\n\\nvar process = globalThis.process;\\nvar Deno = globalThis.Deno;\\nvar versions = process && process.versions || Deno && Deno.version;\\nvar v8 = versions && versions.v8;\\nvar match, version;\\n\\nif (v8) {\\n  match = v8.split('.');\\n  \u002F\u002F in old Chrome, versions of V8 isn't V8 = Chrome \u002F 10\\n  \u002F\u002F but their correct versions are not interesting for us\\n  version = match[0] > 0 && match[0] \u003C 4 ? 1 : +(match[0] + match[1]);\\n}\\n\\n\u002F\u002F BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\\n\u002F\u002F so check `userAgent` even if `.v8` exists, but 0\\nif (!version && userAgent) {\\n  match = userAgent.match(\u002FEdge\\\\\u002F(\\\\d+)\u002F);\\n  if (!match || match[1] >= 74) {\\n    match = userAgent.match(\u002FChrome\\\\\u002F(\\\\d+)\u002F);\\n    if (match) version = +match[1];\\n  }\\n}\\n\\nmodule.exports = version;\\n\",\"'use strict';\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar getMethod = require('..\u002Finternals\u002Fget-method');\\n\\nmodule.exports = function (iterator, kind, value) {\\n  var innerResult, innerError;\\n  anObject(iterator);\\n  try {\\n    innerResult = getMethod(iterator, 'return');\\n    if (!innerResult) {\\n      if (kind === 'throw') throw value;\\n      return value;\\n    }\\n    innerResult = call(innerResult, iterator);\\n  } catch (error) {\\n    innerError = true;\\n    innerResult = error;\\n  }\\n  if (kind === 'throw') throw value;\\n  if (innerError) throw innerResult;\\n  anObject(innerResult);\\n  return value;\\n};\\n\",\"'use strict';\\nvar NATIVE_BIND = require('..\u002Finternals\u002Ffunction-bind-native');\\n\\nvar call = Function.prototype.call;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind -- safe\\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\\n  return call.apply(call, arguments);\\n};\\n\",\"'use strict';\\nvar toIntegerOrInfinity = require('..\u002Finternals\u002Fto-integer-or-infinity');\\n\\nvar $RangeError = RangeError;\\n\\nmodule.exports = function (it) {\\n  var result = toIntegerOrInfinity(it);\\n  if (result \u003C 0) throw new $RangeError(\\\"The argument can't be less than 0\\\");\\n  return result;\\n};\\n\",\"'use strict';\\nvar toIndexedObject = require('..\u002Finternals\u002Fto-indexed-object');\\nvar toAbsoluteIndex = require('..\u002Finternals\u002Fto-absolute-index');\\nvar lengthOfArrayLike = require('..\u002Finternals\u002Flength-of-array-like');\\n\\n\u002F\u002F `Array.prototype.{ indexOf, includes }` methods implementation\\nvar createMethod = function (IS_INCLUDES) {\\n  return function ($this, el, fromIndex) {\\n    var O = toIndexedObject($this);\\n    var length = lengthOfArrayLike(O);\\n    if (length === 0) return !IS_INCLUDES && -1;\\n    var index = toAbsoluteIndex(fromIndex, length);\\n    var value;\\n    \u002F\u002F Array#includes uses SameValueZero equality algorithm\\n    \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\\n    if (IS_INCLUDES && el !== el) while (length > index) {\\n      value = O[index++];\\n      \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\\n      if (value !== value) return true;\\n    \u002F\u002F Array#indexOf ignores holes, Array#includes - not\\n    } else for (;length > index; index++) {\\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\\n    } return !IS_INCLUDES && -1;\\n  };\\n};\\n\\nmodule.exports = {\\n  \u002F\u002F `Array.prototype.includes` method\\n  \u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-array.prototype.includes\\n  includes: createMethod(true),\\n  \u002F\u002F `Array.prototype.indexOf` method\\n  \u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-array.prototype.indexof\\n  indexOf: createMethod(false)\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar anObjectOrUndefined = require('..\u002Finternals\u002Fan-object-or-undefined');\\nvar anUint8Array = require('..\u002Finternals\u002Fan-uint8-array');\\nvar notDetached = require('..\u002Finternals\u002Farray-buffer-not-detached');\\nvar base64Map = require('..\u002Finternals\u002Fbase64-map');\\nvar getAlphabetOption = require('..\u002Finternals\u002Fget-alphabet-option');\\n\\nvar base64Alphabet = base64Map.i2c;\\nvar base64UrlAlphabet = base64Map.i2cUrl;\\n\\nvar charAt = uncurryThis(''.charAt);\\n\\n\u002F\u002F `Uint8Array.prototype.toBase64` method\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-arraybuffer-base64\\nif (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {\\n  toBase64: function toBase64(\u002F* options *\u002F) {\\n    var array = anUint8Array(this);\\n    var options = arguments.length ? anObjectOrUndefined(arguments[0]) : undefined;\\n    var alphabet = getAlphabetOption(options) === 'base64' ? base64Alphabet : base64UrlAlphabet;\\n    var omitPadding = !!options && !!options.omitPadding;\\n    notDetached(this.buffer);\\n\\n    var result = '';\\n    var i = 0;\\n    var length = array.length;\\n    var triplet;\\n\\n    var at = function (shift) {\\n      return charAt(alphabet, (triplet >> (6 * shift)) & 63);\\n    };\\n\\n    for (; i + 2 \u003C length; i += 3) {\\n      triplet = (array[i] \u003C\u003C 16) + (array[i + 1] \u003C\u003C 8) + array[i + 2];\\n      result += at(3) + at(2) + at(1) + at(0);\\n    }\\n    if (i + 2 === length) {\\n      triplet = (array[i] \u003C\u003C 16) + (array[i + 1] \u003C\u003C 8);\\n      result += at(3) + at(2) + at(1) + (omitPadding ? '' : '=');\\n    } else if (i + 1 === length) {\\n      triplet = array[i] \u003C\u003C 16;\\n      result += at(3) + at(2) + (omitPadding ? '' : '==');\\n    }\\n\\n    return result;\\n  }\\n});\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar aString = require('..\u002Finternals\u002Fa-string');\\nvar anUint8Array = require('..\u002Finternals\u002Fan-uint8-array');\\nvar notDetached = require('..\u002Finternals\u002Farray-buffer-not-detached');\\nvar $fromHex = require('..\u002Finternals\u002Fuint8-from-hex');\\n\\n\u002F\u002F `Uint8Array.prototype.setFromHex` method\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-arraybuffer-base64\\nif (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {\\n  setFromHex: function setFromHex(string) {\\n    anUint8Array(this);\\n    aString(string);\\n    notDetached(this.buffer);\\n    var read = $fromHex(string, this).read;\\n    return { read: read, written: read \u002F 2 };\\n  }\\n});\\n\",\"\u002F\u002F The module cache\\nvar __webpack_module_cache__ = {};\\n\\n\u002F\u002F The require function\\nfunction __webpack_require__(moduleId) {\\n\\t\u002F\u002F Check if module is in cache\\n\\tvar cachedModule = __webpack_module_cache__[moduleId];\\n\\tif (cachedModule !== undefined) {\\n\\t\\treturn cachedModule.exports;\\n\\t}\\n\\t\u002F\u002F Create a new module (and put it into the cache)\\n\\tvar module = __webpack_module_cache__[moduleId] = {\\n\\t\\t\u002F\u002F no module.id needed\\n\\t\\t\u002F\u002F no module.loaded needed\\n\\t\\texports: {}\\n\\t};\\n\\n\\t\u002F\u002F Execute the module function\\n\\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\\n\\n\\t\u002F\u002F Return the exports of the module\\n\\treturn module.exports;\\n}\\n\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\u002F* globals process *\u002F\\n\\n\u002F\u002F NW.js \u002F Electron is a browser context, but copies some Node.js objects; see\\n\u002F\u002F http:\u002F\u002Fdocs.nwjs.io\u002Fen\u002Flatest\u002FFor%20Users\u002FAdvanced\u002FJavaScript%20Contexts%20in%20NW.js\u002F#access-nodejs-and-nwjs-api-in-browser-context\\n\u002F\u002F https:\u002F\u002Fwww.electronjs.org\u002Fdocs\u002Fapi\u002Fprocess#processversionselectron-readonly\\n\u002F\u002F https:\u002F\u002Fwww.electronjs.org\u002Fdocs\u002Fapi\u002Fprocess#processtype-readonly\\nconst isNodeJS =\\n  (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) &&\\n  typeof process === \\\"object\\\" &&\\n  process + \\\"\\\" === \\\"[object process]\\\" &&\\n  !process.versions.nw &&\\n  !(process.versions.electron && process.type && process.type !== \\\"browser\\\");\\n\\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\\n\\n\u002F\u002F Represent the percentage of the height of a single-line field over\\n\u002F\u002F the font size. Acrobat seems to use this value.\\nconst LINE_FACTOR = 1.35;\\nconst LINE_DESCENT_FACTOR = 0.35;\\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR \u002F LINE_FACTOR;\\n\\n\u002F**\\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\\n * how these flags are being used:\\n *  - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\\n *    `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\\n *  - SAVE is used, on the worker-thread, when saving modified annotations.\\n *  - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\\n *    annotations are rendered onto the canvas (i.e. by being included in the\\n *    operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\\n *    and their `annotationMode`-option.\\n *  - IS_EDITING is used when editing is active in the viewer.\\n *  - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\\n *    `OperatorList`-constructor (on the worker-thread).\\n *\u002F\\nconst RenderingIntentFlag = {\\n  ANY: 0x01,\\n  DISPLAY: 0x02,\\n  PRINT: 0x04,\\n  SAVE: 0x08,\\n  ANNOTATIONS_FORMS: 0x10,\\n  ANNOTATIONS_STORAGE: 0x20,\\n  ANNOTATIONS_DISABLE: 0x40,\\n  IS_EDITING: 0x80,\\n  OPLIST: 0x100,\\n};\\n\\nconst AnnotationMode = {\\n  DISABLE: 0,\\n  ENABLE: 1,\\n  ENABLE_FORMS: 2,\\n  ENABLE_STORAGE: 3,\\n};\\n\\nconst AnnotationEditorPrefix = \\\"pdfjs_internal_editor_\\\";\\n\\nconst AnnotationEditorType = {\\n  DISABLE: -1,\\n  NONE: 0,\\n  FREETEXT: 3,\\n  HIGHLIGHT: 9,\\n  STAMP: 13,\\n  INK: 15,\\n  SIGNATURE: 101,\\n};\\n\\nconst AnnotationEditorParamsType = {\\n  RESIZE: 1,\\n  CREATE: 2,\\n  FREETEXT_SIZE: 11,\\n  FREETEXT_COLOR: 12,\\n  FREETEXT_OPACITY: 13,\\n  INK_COLOR: 21,\\n  INK_THICKNESS: 22,\\n  INK_OPACITY: 23,\\n  HIGHLIGHT_COLOR: 31,\\n  HIGHLIGHT_DEFAULT_COLOR: 32,\\n  HIGHLIGHT_THICKNESS: 33,\\n  HIGHLIGHT_FREE: 34,\\n  HIGHLIGHT_SHOW_ALL: 35,\\n  DRAW_STEP: 41,\\n};\\n\\n\u002F\u002F Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\\nconst PermissionFlag = {\\n  PRINT: 0x04,\\n  MODIFY_CONTENTS: 0x08,\\n  COPY: 0x10,\\n  MODIFY_ANNOTATIONS: 0x20,\\n  FILL_INTERACTIVE_FORMS: 0x100,\\n  COPY_FOR_ACCESSIBILITY: 0x200,\\n  ASSEMBLE: 0x400,\\n  PRINT_HIGH_QUALITY: 0x800,\\n};\\n\\nconst TextRenderingMode = {\\n  FILL: 0,\\n  STROKE: 1,\\n  FILL_STROKE: 2,\\n  INVISIBLE: 3,\\n  FILL_ADD_TO_PATH: 4,\\n  STROKE_ADD_TO_PATH: 5,\\n  FILL_STROKE_ADD_TO_PATH: 6,\\n  ADD_TO_PATH: 7,\\n  FILL_STROKE_MASK: 3,\\n  ADD_TO_PATH_FLAG: 4,\\n};\\n\\nconst ImageKind = {\\n  GRAYSCALE_1BPP: 1,\\n  RGB_24BPP: 2,\\n  RGBA_32BPP: 3,\\n};\\n\\nconst AnnotationType = {\\n  TEXT: 1,\\n  LINK: 2,\\n  FREETEXT: 3,\\n  LINE: 4,\\n  SQUARE: 5,\\n  CIRCLE: 6,\\n  POLYGON: 7,\\n  POLYLINE: 8,\\n  HIGHLIGHT: 9,\\n  UNDERLINE: 10,\\n  SQUIGGLY: 11,\\n  STRIKEOUT: 12,\\n  STAMP: 13,\\n  CARET: 14,\\n  INK: 15,\\n  POPUP: 16,\\n  FILEATTACHMENT: 17,\\n  SOUND: 18,\\n  MOVIE: 19,\\n  WIDGET: 20,\\n  SCREEN: 21,\\n  PRINTERMARK: 22,\\n  TRAPNET: 23,\\n  WATERMARK: 24,\\n  THREED: 25,\\n  REDACT: 26,\\n};\\n\\nconst AnnotationReplyType = {\\n  GROUP: \\\"Group\\\",\\n  REPLY: \\\"R\\\",\\n};\\n\\nconst AnnotationFlag = {\\n  INVISIBLE: 0x01,\\n  HIDDEN: 0x02,\\n  PRINT: 0x04,\\n  NOZOOM: 0x08,\\n  NOROTATE: 0x10,\\n  NOVIEW: 0x20,\\n  READONLY: 0x40,\\n  LOCKED: 0x80,\\n  TOGGLENOVIEW: 0x100,\\n  LOCKEDCONTENTS: 0x200,\\n};\\n\\nconst AnnotationFieldFlag = {\\n  READONLY: 0x0000001,\\n  REQUIRED: 0x0000002,\\n  NOEXPORT: 0x0000004,\\n  MULTILINE: 0x0001000,\\n  PASSWORD: 0x0002000,\\n  NOTOGGLETOOFF: 0x0004000,\\n  RADIO: 0x0008000,\\n  PUSHBUTTON: 0x0010000,\\n  COMBO: 0x0020000,\\n  EDIT: 0x0040000,\\n  SORT: 0x0080000,\\n  FILESELECT: 0x0100000,\\n  MULTISELECT: 0x0200000,\\n  DONOTSPELLCHECK: 0x0400000,\\n  DONOTSCROLL: 0x0800000,\\n  COMB: 0x1000000,\\n  RICHTEXT: 0x2000000,\\n  RADIOSINUNISON: 0x2000000,\\n  COMMITONSELCHANGE: 0x4000000,\\n};\\n\\nconst AnnotationBorderStyleType = {\\n  SOLID: 1,\\n  DASHED: 2,\\n  BEVELED: 3,\\n  INSET: 4,\\n  UNDERLINE: 5,\\n};\\n\\nconst AnnotationActionEventType = {\\n  E: \\\"Mouse Enter\\\",\\n  X: \\\"Mouse Exit\\\",\\n  D: \\\"Mouse Down\\\",\\n  U: \\\"Mouse Up\\\",\\n  Fo: \\\"Focus\\\",\\n  Bl: \\\"Blur\\\",\\n  PO: \\\"PageOpen\\\",\\n  PC: \\\"PageClose\\\",\\n  PV: \\\"PageVisible\\\",\\n  PI: \\\"PageInvisible\\\",\\n  K: \\\"Keystroke\\\",\\n  F: \\\"Format\\\",\\n  V: \\\"Validate\\\",\\n  C: \\\"Calculate\\\",\\n};\\n\\nconst DocumentActionEventType = {\\n  WC: \\\"WillClose\\\",\\n  WS: \\\"WillSave\\\",\\n  DS: \\\"DidSave\\\",\\n  WP: \\\"WillPrint\\\",\\n  DP: \\\"DidPrint\\\",\\n};\\n\\nconst PageActionEventType = {\\n  O: \\\"PageOpen\\\",\\n  C: \\\"PageClose\\\",\\n};\\n\\nconst VerbosityLevel = {\\n  ERRORS: 0,\\n  WARNINGS: 1,\\n  INFOS: 5,\\n};\\n\\n\u002F\u002F All the possible operations for an operator list.\\nconst OPS = {\\n  \u002F\u002F Intentionally start from 1 so it is easy to spot bad operators that will be\\n  \u002F\u002F 0's.\\n  \u002F\u002F PLEASE NOTE: We purposely keep any removed operators commented out, since\\n  \u002F\u002F              re-numbering the list would risk breaking third-party users.\\n  dependency: 1,\\n  setLineWidth: 2,\\n  setLineCap: 3,\\n  setLineJoin: 4,\\n  setMiterLimit: 5,\\n  setDash: 6,\\n  setRenderingIntent: 7,\\n  setFlatness: 8,\\n  setGState: 9,\\n  save: 10,\\n  restore: 11,\\n  transform: 12,\\n  moveTo: 13,\\n  lineTo: 14,\\n  curveTo: 15,\\n  curveTo2: 16,\\n  curveTo3: 17,\\n  closePath: 18,\\n  rectangle: 19,\\n  stroke: 20,\\n  closeStroke: 21,\\n  fill: 22,\\n  eoFill: 23,\\n  fillStroke: 24,\\n  eoFillStroke: 25,\\n  closeFillStroke: 26,\\n  closeEOFillStroke: 27,\\n  endPath: 28,\\n  clip: 29,\\n  eoClip: 30,\\n  beginText: 31,\\n  endText: 32,\\n  setCharSpacing: 33,\\n  setWordSpacing: 34,\\n  setHScale: 35,\\n  setLeading: 36,\\n  setFont: 37,\\n  setTextRenderingMode: 38,\\n  setTextRise: 39,\\n  moveText: 40,\\n  setLeadingMoveText: 41,\\n  setTextMatrix: 42,\\n  nextLine: 43,\\n  showText: 44,\\n  showSpacedText: 45,\\n  nextLineShowText: 46,\\n  nextLineSetSpacingShowText: 47,\\n  setCharWidth: 48,\\n  setCharWidthAndBounds: 49,\\n  setStrokeColorSpace: 50,\\n  setFillColorSpace: 51,\\n  setStrokeColor: 52,\\n  setStrokeColorN: 53,\\n  setFillColor: 54,\\n  setFillColorN: 55,\\n  setStrokeGray: 56,\\n  setFillGray: 57,\\n  setStrokeRGBColor: 58,\\n  setFillRGBColor: 59,\\n  setStrokeCMYKColor: 60,\\n  setFillCMYKColor: 61,\\n  shadingFill: 62,\\n  beginInlineImage: 63,\\n  beginImageData: 64,\\n  endInlineImage: 65,\\n  paintXObject: 66,\\n  markPoint: 67,\\n  markPointProps: 68,\\n  beginMarkedContent: 69,\\n  beginMarkedContentProps: 70,\\n  endMarkedContent: 71,\\n  beginCompat: 72,\\n  endCompat: 73,\\n  paintFormXObjectBegin: 74,\\n  paintFormXObjectEnd: 75,\\n  beginGroup: 76,\\n  endGroup: 77,\\n  \u002F\u002F beginAnnotations: 78,\\n  \u002F\u002F endAnnotations: 79,\\n  beginAnnotation: 80,\\n  endAnnotation: 81,\\n  \u002F\u002F paintJpegXObject: 82,\\n  paintImageMaskXObject: 83,\\n  paintImageMaskXObjectGroup: 84,\\n  paintImageXObject: 85,\\n  paintInlineImageXObject: 86,\\n  paintInlineImageXObjectGroup: 87,\\n  paintImageXObjectRepeat: 88,\\n  paintImageMaskXObjectRepeat: 89,\\n  paintSolidColorImageMask: 90,\\n  constructPath: 91,\\n  setStrokeTransparent: 92,\\n  setFillTransparent: 93,\\n  rawFillPath: 94,\\n};\\n\\n\u002F\u002F In order to have a switch statement that is fast (i.e. which use a jump\\n\u002F\u002F table), we need to have the OPS in a contiguous range.\\nconst DrawOPS = {\\n  moveTo: 0,\\n  lineTo: 1,\\n  curveTo: 2,\\n  closePath: 3,\\n};\\n\\nconst PasswordResponses = {\\n  NEED_PASSWORD: 1,\\n  INCORRECT_PASSWORD: 2,\\n};\\n\\nlet verbosity = VerbosityLevel.WARNINGS;\\n\\nfunction setVerbosityLevel(level) {\\n  if (Number.isInteger(level)) {\\n    verbosity = level;\\n  }\\n}\\n\\nfunction getVerbosityLevel() {\\n  return verbosity;\\n}\\n\\n\u002F\u002F A notice for devs. These are good for things that are helpful to devs, such\\n\u002F\u002F as warning that Workers were disabled, which is important to devs but not\\n\u002F\u002F end users.\\nfunction info(msg) {\\n  if (verbosity >= VerbosityLevel.INFOS) {\\n    \u002F\u002F eslint-disable-next-line no-console\\n    console.log(`Info: ${msg}`);\\n  }\\n}\\n\\n\u002F\u002F Non-fatal warnings.\\nfunction warn(msg) {\\n  if (verbosity >= VerbosityLevel.WARNINGS) {\\n    \u002F\u002F eslint-disable-next-line no-console\\n    console.log(`Warning: ${msg}`);\\n  }\\n}\\n\\nfunction unreachable(msg) {\\n  throw new Error(msg);\\n}\\n\\nfunction assert(cond, msg) {\\n  if (!cond) {\\n    unreachable(msg);\\n  }\\n}\\n\\n\u002F\u002F Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\\nfunction _isValidProtocol(url) {\\n  switch (url?.protocol) {\\n    case \\\"http:\\\":\\n    case \\\"https:\\\":\\n    case \\\"ftp:\\\":\\n    case \\\"mailto:\\\":\\n    case \\\"tel:\\\":\\n      return true;\\n    default:\\n      return false;\\n  }\\n}\\n\\n\u002F**\\n * Attempts to create a valid absolute URL.\\n *\\n * @param {URL|string} url - An absolute, or relative, URL.\\n * @param {URL|string} [baseUrl] - An absolute URL.\\n * @param {Object} [options]\\n * @returns Either a valid {URL}, or `null` otherwise.\\n *\u002F\\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\\n  if (!url) {\\n    return null;\\n  }\\n  if (options && typeof url === \\\"string\\\") {\\n    \u002F\u002F Let URLs beginning with \\\"www.\\\" default to using the \\\"http:\u002F\u002F\\\" protocol.\\n    if (options.addDefaultProtocol && url.startsWith(\\\"www.\\\")) {\\n      const dots = url.match(\u002F\\\\.\u002Fg);\\n      \u002F\u002F Avoid accidentally matching a *relative* URL pointing to a file named\\n      \u002F\u002F e.g. \\\"www.pdf\\\" or similar.\\n      if (dots?.length >= 2) {\\n        url = `http:\u002F\u002F${url}`;\\n      }\\n    }\\n\\n    \u002F\u002F According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\\n    \u002F\u002F in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\\n    if (options.tryConvertEncoding) {\\n      try {\\n        url = stringToUTF8String(url);\\n      } catch {}\\n    }\\n  }\\n\\n  const absoluteUrl = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\\n  return _isValidProtocol(absoluteUrl) ? absoluteUrl : null;\\n}\\n\\n\u002F**\\n * Remove, or replace, the hash property of the URL.\\n *\\n * @param {URL|string} url - The absolute, or relative, URL.\\n * @param {string} hash - The hash property (use an empty string to remove it).\\n * @param {boolean} [allowRel] - Allow relative URLs.\\n * @returns {string} The resulting URL string.\\n *\u002F\\nfunction updateUrlHash(url, hash, allowRel = false) {\\n  const res = URL.parse(url);\\n  if (res) {\\n    res.hash = hash;\\n    return res.href;\\n  }\\n  \u002F\u002F Support well-formed relative URLs, necessary for `web\u002Fapp.js` in GENERIC\\n  \u002F\u002F builds, by optionally falling back to string parsing.\\n  if (allowRel && createValidAbsoluteUrl(url, \\\"http:\u002F\u002Fexample.com\\\")) {\\n    return url.split(\\\"#\\\", 1)[0] + `${hash ? `#${hash}` : \\\"\\\"}`;\\n  }\\n  return \\\"\\\";\\n}\\n\\nfunction shadow(obj, prop, value, nonSerializable = false) {\\n  if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n    assert(\\n      prop in obj,\\n      `shadow: Property \\\"${prop && prop.toString()}\\\" not found in object.`\\n    );\\n  }\\n  Object.defineProperty(obj, prop, {\\n    value,\\n    enumerable: !nonSerializable,\\n    configurable: true,\\n    writable: false,\\n  });\\n  return value;\\n}\\n\\n\u002F**\\n * @type {any}\\n *\u002F\\nconst BaseException = (function BaseExceptionClosure() {\\n  \u002F\u002F eslint-disable-next-line no-shadow\\n  function BaseException(message, name) {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      this.constructor === BaseException\\n    ) {\\n      unreachable(\\\"Cannot initialize BaseException.\\\");\\n    }\\n    this.message = message;\\n    this.name = name;\\n  }\\n  BaseException.prototype = new Error();\\n  BaseException.constructor = BaseException;\\n\\n  return BaseException;\\n})();\\n\\nclass PasswordException extends BaseException {\\n  constructor(msg, code) {\\n    super(msg, \\\"PasswordException\\\");\\n    this.code = code;\\n  }\\n}\\n\\nclass UnknownErrorException extends BaseException {\\n  constructor(msg, details) {\\n    super(msg, \\\"UnknownErrorException\\\");\\n    this.details = details;\\n  }\\n}\\n\\nclass InvalidPDFException extends BaseException {\\n  constructor(msg) {\\n    super(msg, \\\"InvalidPDFException\\\");\\n  }\\n}\\n\\nclass ResponseException extends BaseException {\\n  constructor(msg, status, missing) {\\n    super(msg, \\\"ResponseException\\\");\\n    this.status = status;\\n    this.missing = missing;\\n  }\\n}\\n\\n\u002F**\\n * Error caused during parsing PDF data.\\n *\u002F\\nclass FormatError extends BaseException {\\n  constructor(msg) {\\n    super(msg, \\\"FormatError\\\");\\n  }\\n}\\n\\n\u002F**\\n * Error used to indicate task cancellation.\\n *\u002F\\nclass AbortException extends BaseException {\\n  constructor(msg) {\\n    super(msg, \\\"AbortException\\\");\\n  }\\n}\\n\\nfunction bytesToString(bytes) {\\n  if (typeof bytes !== \\\"object\\\" || bytes?.length === undefined) {\\n    unreachable(\\\"Invalid argument for bytesToString\\\");\\n  }\\n  const length = bytes.length;\\n  const MAX_ARGUMENT_COUNT = 8192;\\n  if (length \u003C MAX_ARGUMENT_COUNT) {\\n    return String.fromCharCode.apply(null, bytes);\\n  }\\n  const strBuf = [];\\n  for (let i = 0; i \u003C length; i += MAX_ARGUMENT_COUNT) {\\n    const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\\n    const chunk = bytes.subarray(i, chunkEnd);\\n    strBuf.push(String.fromCharCode.apply(null, chunk));\\n  }\\n  return strBuf.join(\\\"\\\");\\n}\\n\\nfunction stringToBytes(str) {\\n  if (typeof str !== \\\"string\\\") {\\n    unreachable(\\\"Invalid argument for stringToBytes\\\");\\n  }\\n  const length = str.length;\\n  const bytes = new Uint8Array(length);\\n  for (let i = 0; i \u003C length; ++i) {\\n    bytes[i] = str.charCodeAt(i) & 0xff;\\n  }\\n  return bytes;\\n}\\n\\nfunction string32(value) {\\n  if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n    assert(\\n      typeof value === \\\"number\\\" && Math.abs(value) \u003C 2 ** 32,\\n      `string32: Unexpected input \\\"${value}\\\".`\\n    );\\n  }\\n  return String.fromCharCode(\\n    (value >> 24) & 0xff,\\n    (value >> 16) & 0xff,\\n    (value >> 8) & 0xff,\\n    value & 0xff\\n  );\\n}\\n\\nfunction objectSize(obj) {\\n  return Object.keys(obj).length;\\n}\\n\\n\u002F\u002F Checks the endianness of the platform.\\nfunction isLittleEndian() {\\n  const buffer8 = new Uint8Array(4);\\n  buffer8[0] = 1;\\n  const view32 = new Uint32Array(buffer8.buffer, 0, 1);\\n  return view32[0] === 1;\\n}\\n\\n\u002F\u002F Checks if it's possible to eval JS expressions.\\nfunction isEvalSupported() {\\n  try {\\n    new Function(\\\"\\\"); \u002F\u002F eslint-disable-line no-new, no-new-func\\n    return true;\\n  } catch {\\n    return false;\\n  }\\n}\\n\\nclass FeatureTest {\\n  static get isLittleEndian() {\\n    return shadow(this, \\\"isLittleEndian\\\", isLittleEndian());\\n  }\\n\\n  static get isEvalSupported() {\\n    return shadow(this, \\\"isEvalSupported\\\", isEvalSupported());\\n  }\\n\\n  static get isOffscreenCanvasSupported() {\\n    return shadow(\\n      this,\\n      \\\"isOffscreenCanvasSupported\\\",\\n      typeof OffscreenCanvas !== \\\"undefined\\\"\\n    );\\n  }\\n\\n  static get isImageDecoderSupported() {\\n    return shadow(\\n      this,\\n      \\\"isImageDecoderSupported\\\",\\n      typeof ImageDecoder !== \\\"undefined\\\"\\n    );\\n  }\\n\\n  static get platform() {\\n    const { platform, userAgent } = navigator;\\n\\n    return shadow(this, \\\"platform\\\", {\\n      isAndroid: userAgent.includes(\\\"Android\\\"),\\n      isLinux: platform.includes(\\\"Linux\\\"),\\n      isMac: platform.includes(\\\"Mac\\\"),\\n      isWindows: platform.includes(\\\"Win\\\"),\\n      isFirefox:\\n        (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) ||\\n        userAgent.includes(\\\"Firefox\\\"),\\n    });\\n  }\\n\\n  static get isCSSRoundSupported() {\\n    return shadow(\\n      this,\\n      \\\"isCSSRoundSupported\\\",\\n      globalThis.CSS?.supports?.(\\\"width: round(1.5px, 1px)\\\")\\n    );\\n  }\\n}\\n\\nconst hexNumbers = Array.from(Array(256).keys(), n =>\\n  n.toString(16).padStart(2, \\\"0\\\")\\n);\\n\\nclass Util {\\n  static makeHexColor(r, g, b) {\\n    return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\\n  }\\n\\n  \u002F\u002F Apply a scaling matrix to some min\u002Fmax values.\\n  \u002F\u002F If a scaling factor is negative then min and max must be\\n  \u002F\u002F swapped.\\n  static scaleMinMax(transform, minMax) {\\n    let temp;\\n    if (transform[0]) {\\n      if (transform[0] \u003C 0) {\\n        temp = minMax[0];\\n        minMax[0] = minMax[2];\\n        minMax[2] = temp;\\n      }\\n      minMax[0] *= transform[0];\\n      minMax[2] *= transform[0];\\n\\n      if (transform[3] \u003C 0) {\\n        temp = minMax[1];\\n        minMax[1] = minMax[3];\\n        minMax[3] = temp;\\n      }\\n      minMax[1] *= transform[3];\\n      minMax[3] *= transform[3];\\n    } else {\\n      temp = minMax[0];\\n      minMax[0] = minMax[1];\\n      minMax[1] = temp;\\n      temp = minMax[2];\\n      minMax[2] = minMax[3];\\n      minMax[3] = temp;\\n\\n      if (transform[1] \u003C 0) {\\n        temp = minMax[1];\\n        minMax[1] = minMax[3];\\n        minMax[3] = temp;\\n      }\\n      minMax[1] *= transform[1];\\n      minMax[3] *= transform[1];\\n\\n      if (transform[2] \u003C 0) {\\n        temp = minMax[0];\\n        minMax[0] = minMax[2];\\n        minMax[2] = temp;\\n      }\\n      minMax[0] *= transform[2];\\n      minMax[2] *= transform[2];\\n    }\\n    minMax[0] += transform[4];\\n    minMax[1] += transform[5];\\n    minMax[2] += transform[4];\\n    minMax[3] += transform[5];\\n  }\\n\\n  \u002F\u002F Concatenates two transformation matrices together and returns the result.\\n  static transform(m1, m2) {\\n    return [\\n      m1[0] * m2[0] + m1[2] * m2[1],\\n      m1[1] * m2[0] + m1[3] * m2[1],\\n      m1[0] * m2[2] + m1[2] * m2[3],\\n      m1[1] * m2[2] + m1[3] * m2[3],\\n      m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\\n      m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\\n    ];\\n  }\\n\\n  \u002F\u002F For 2d affine transforms\\n  static applyTransform(p, m, pos = 0) {\\n    const p0 = p[pos];\\n    const p1 = p[pos + 1];\\n    p[pos] = p0 * m[0] + p1 * m[2] + m[4];\\n    p[pos + 1] = p0 * m[1] + p1 * m[3] + m[5];\\n  }\\n\\n  static applyTransformToBezier(p, transform, pos = 0) {\\n    const m0 = transform[0];\\n    const m1 = transform[1];\\n    const m2 = transform[2];\\n    const m3 = transform[3];\\n    const m4 = transform[4];\\n    const m5 = transform[5];\\n    for (let i = 0; i \u003C 6; i += 2) {\\n      const pI = p[pos + i];\\n      const pI1 = p[pos + i + 1];\\n      p[pos + i] = pI * m0 + pI1 * m2 + m4;\\n      p[pos + i + 1] = pI * m1 + pI1 * m3 + m5;\\n    }\\n  }\\n\\n  static applyInverseTransform(p, m) {\\n    const p0 = p[0];\\n    const p1 = p[1];\\n    const d = m[0] * m[3] - m[1] * m[2];\\n    p[0] = (p0 * m[3] - p1 * m[2] + m[2] * m[5] - m[4] * m[3]) \u002F d;\\n    p[1] = (-p0 * m[1] + p1 * m[0] + m[4] * m[1] - m[5] * m[0]) \u002F d;\\n  }\\n\\n  \u002F\u002F Applies the transform to the rectangle and finds the minimum axially\\n  \u002F\u002F aligned bounding box.\\n  static axialAlignedBoundingBox(rect, transform, output) {\\n    const m0 = transform[0];\\n    const m1 = transform[1];\\n    const m2 = transform[2];\\n    const m3 = transform[3];\\n    const m4 = transform[4];\\n    const m5 = transform[5];\\n    const r0 = rect[0];\\n    const r1 = rect[1];\\n    const r2 = rect[2];\\n    const r3 = rect[3];\\n\\n    let a0 = m0 * r0 + m4;\\n    let a2 = a0;\\n    let a1 = m0 * r2 + m4;\\n    let a3 = a1;\\n    let b0 = m3 * r1 + m5;\\n    let b2 = b0;\\n    let b1 = m3 * r3 + m5;\\n    let b3 = b1;\\n\\n    if (m1 !== 0 || m2 !== 0) {\\n      \u002F\u002F Non-scaling matrix: shouldn't be frequent.\\n      const m1r0 = m1 * r0;\\n      const m1r2 = m1 * r2;\\n      const m2r1 = m2 * r1;\\n      const m2r3 = m2 * r3;\\n      a0 += m2r1;\\n      a3 += m2r1;\\n      a1 += m2r3;\\n      a2 += m2r3;\\n      b0 += m1r0;\\n      b3 += m1r0;\\n      b1 += m1r2;\\n      b2 += m1r2;\\n    }\\n\\n    output[0] = Math.min(output[0], a0, a1, a2, a3);\\n    output[1] = Math.min(output[1], b0, b1, b2, b3);\\n    output[2] = Math.max(output[2], a0, a1, a2, a3);\\n    output[3] = Math.max(output[3], b0, b1, b2, b3);\\n  }\\n\\n  static inverseTransform(m) {\\n    const d = m[0] * m[3] - m[1] * m[2];\\n    return [\\n      m[3] \u002F d,\\n      -m[1] \u002F d,\\n      -m[2] \u002F d,\\n      m[0] \u002F d,\\n      (m[2] * m[5] - m[4] * m[3]) \u002F d,\\n      (m[4] * m[1] - m[5] * m[0]) \u002F d,\\n    ];\\n  }\\n\\n  \u002F\u002F This calculation uses Singular Value Decomposition.\\n  \u002F\u002F The SVD can be represented with formula A = USV. We are interested in the\\n  \u002F\u002F matrix S here because it represents the scale values.\\n  static singularValueDecompose2dScale(matrix, output) {\\n    const m0 = matrix[0];\\n    const m1 = matrix[1];\\n    const m2 = matrix[2];\\n    const m3 = matrix[3];\\n    \u002F\u002F Multiply matrix m with its transpose.\\n    const a = m0 ** 2 + m1 ** 2;\\n    const b = m0 * m2 + m1 * m3;\\n    const c = m2 ** 2 + m3 ** 2;\\n\\n    \u002F\u002F Solve the second degree polynomial to get roots.\\n    const first = (a + c) \u002F 2;\\n    const second = Math.sqrt(first ** 2 - (a * c - b ** 2));\\n    output[0] = Math.sqrt(first + second || 1);\\n    output[1] = Math.sqrt(first - second || 1);\\n  }\\n\\n  \u002F\u002F Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) \u003C (x2,y2)\\n  \u002F\u002F For coordinate systems whose origin lies in the bottom-left, this\\n  \u002F\u002F means normalization to (BL,TR) ordering. For systems with origin in the\\n  \u002F\u002F top-left, this means (TL,BR) ordering.\\n  static normalizeRect(rect) {\\n    const r = rect.slice(0); \u002F\u002F clone rect\\n    if (rect[0] > rect[2]) {\\n      r[0] = rect[2];\\n      r[2] = rect[0];\\n    }\\n    if (rect[1] > rect[3]) {\\n      r[1] = rect[3];\\n      r[3] = rect[1];\\n    }\\n    return r;\\n  }\\n\\n  \u002F\u002F Returns a rectangle [x1, y1, x2, y2] corresponding to the\\n  \u002F\u002F intersection of rect1 and rect2. If no intersection, returns 'null'\\n  \u002F\u002F The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\\n  static intersect(rect1, rect2) {\\n    const xLow = Math.max(\\n      Math.min(rect1[0], rect1[2]),\\n      Math.min(rect2[0], rect2[2])\\n    );\\n    const xHigh = Math.min(\\n      Math.max(rect1[0], rect1[2]),\\n      Math.max(rect2[0], rect2[2])\\n    );\\n    if (xLow > xHigh) {\\n      return null;\\n    }\\n    const yLow = Math.max(\\n      Math.min(rect1[1], rect1[3]),\\n      Math.min(rect2[1], rect2[3])\\n    );\\n    const yHigh = Math.min(\\n      Math.max(rect1[1], rect1[3]),\\n      Math.max(rect2[1], rect2[3])\\n    );\\n    if (yLow > yHigh) {\\n      return null;\\n    }\\n\\n    return [xLow, yLow, xHigh, yHigh];\\n  }\\n\\n  static pointBoundingBox(x, y, minMax) {\\n    minMax[0] = Math.min(minMax[0], x);\\n    minMax[1] = Math.min(minMax[1], y);\\n    minMax[2] = Math.max(minMax[2], x);\\n    minMax[3] = Math.max(minMax[3], y);\\n  }\\n\\n  static rectBoundingBox(x0, y0, x1, y1, minMax) {\\n    minMax[0] = Math.min(minMax[0], x0, x1);\\n    minMax[1] = Math.min(minMax[1], y0, y1);\\n    minMax[2] = Math.max(minMax[2], x0, x1);\\n    minMax[3] = Math.max(minMax[3], y0, y1);\\n  }\\n\\n  static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\\n    if (t \u003C= 0 || t >= 1) {\\n      return;\\n    }\\n    const mt = 1 - t;\\n    const tt = t * t;\\n    const ttt = tt * t;\\n    const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\\n    const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\\n    minMax[0] = Math.min(minMax[0], x);\\n    minMax[1] = Math.min(minMax[1], y);\\n    minMax[2] = Math.max(minMax[2], x);\\n    minMax[3] = Math.max(minMax[3], y);\\n  }\\n\\n  static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\\n    if (Math.abs(a) \u003C 1e-12) {\\n      if (Math.abs(b) >= 1e-12) {\\n        this.#getExtremumOnCurve(\\n          x0,\\n          x1,\\n          x2,\\n          x3,\\n          y0,\\n          y1,\\n          y2,\\n          y3,\\n          -c \u002F b,\\n          minMax\\n        );\\n      }\\n      return;\\n    }\\n\\n    const delta = b ** 2 - 4 * c * a;\\n    if (delta \u003C 0) {\\n      return;\\n    }\\n    const sqrtDelta = Math.sqrt(delta);\\n    const a2 = 2 * a;\\n    this.#getExtremumOnCurve(\\n      x0,\\n      x1,\\n      x2,\\n      x3,\\n      y0,\\n      y1,\\n      y2,\\n      y3,\\n      (-b + sqrtDelta) \u002F a2,\\n      minMax\\n    );\\n    this.#getExtremumOnCurve(\\n      x0,\\n      x1,\\n      x2,\\n      x3,\\n      y0,\\n      y1,\\n      y2,\\n      y3,\\n      (-b - sqrtDelta) \u002F a2,\\n      minMax\\n    );\\n  }\\n\\n  \u002F\u002F From https:\u002F\u002Fgithub.com\u002Fadobe-webplatform\u002FSnap.svg\u002Fblob\u002Fb365287722a72526000ac4bfcf0ce4cac2faa015\u002Fsrc\u002Fpath.js#L852\\n  static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\\n    minMax[0] = Math.min(minMax[0], x0, x3);\\n    minMax[1] = Math.min(minMax[1], y0, y3);\\n    minMax[2] = Math.max(minMax[2], x0, x3);\\n    minMax[3] = Math.max(minMax[3], y0, y3);\\n\\n    this.#getExtremum(\\n      x0,\\n      x1,\\n      x2,\\n      x3,\\n      y0,\\n      y1,\\n      y2,\\n      y3,\\n      3 * (-x0 + 3 * (x1 - x2) + x3),\\n      6 * (x0 - 2 * x1 + x2),\\n      3 * (x1 - x0),\\n      minMax\\n    );\\n    this.#getExtremum(\\n      x0,\\n      x1,\\n      x2,\\n      x3,\\n      y0,\\n      y1,\\n      y2,\\n      y3,\\n      3 * (-y0 + 3 * (y1 - y2) + y3),\\n      6 * (y0 - 2 * y1 + y2),\\n      3 * (y1 - y0),\\n      minMax\\n    );\\n  }\\n}\\n\\nconst PDFStringTranslateTable = [\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\\n  0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\\n  0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\\n  0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\\n  0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\\n  0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\\n];\\n\\nfunction stringToPDFString(str, keepEscapeSequence = false) {\\n  \u002F\u002F See section 7.9.2.2 Text String Type.\\n  \u002F\u002F The string can contain some language codes bracketed with 0x1b,\\n  \u002F\u002F so we must remove them.\\n  if (str[0] >= \\\"\\\\xEF\\\") {\\n    let encoding;\\n    if (str[0] === \\\"\\\\xFE\\\" && str[1] === \\\"\\\\xFF\\\") {\\n      encoding = \\\"utf-16be\\\";\\n      if (str.length % 2 === 1) {\\n        str = str.slice(0, -1);\\n      }\\n    } else if (str[0] === \\\"\\\\xFF\\\" && str[1] === \\\"\\\\xFE\\\") {\\n      encoding = \\\"utf-16le\\\";\\n      if (str.length % 2 === 1) {\\n        str = str.slice(0, -1);\\n      }\\n    } else if (str[0] === \\\"\\\\xEF\\\" && str[1] === \\\"\\\\xBB\\\" && str[2] === \\\"\\\\xBF\\\") {\\n      encoding = \\\"utf-8\\\";\\n    }\\n\\n    if (encoding) {\\n      try {\\n        const decoder = new TextDecoder(encoding, { fatal: true });\\n        const buffer = stringToBytes(str);\\n        const decoded = decoder.decode(buffer);\\n        if (keepEscapeSequence || !decoded.includes(\\\"\\\\x1b\\\")) {\\n          return decoded;\\n        }\\n        return decoded.replaceAll(\u002F\\\\x1b[^\\\\x1b]*(?:\\\\x1b|$)\u002Fg, \\\"\\\");\\n      } catch (ex) {\\n        warn(`stringToPDFString: \\\"${ex}\\\".`);\\n      }\\n    }\\n  }\\n  \u002F\u002F ISO Latin 1\\n  const strBuf = [];\\n  for (let i = 0, ii = str.length; i \u003C ii; i++) {\\n    const charCode = str.charCodeAt(i);\\n    if (!keepEscapeSequence && charCode === 0x1b) {\\n      \u002F\u002F eslint-disable-next-line no-empty\\n      while (++i \u003C ii && str.charCodeAt(i) !== 0x1b) {}\\n      continue;\\n    }\\n    const code = PDFStringTranslateTable[charCode];\\n    strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\\n  }\\n  return strBuf.join(\\\"\\\");\\n}\\n\\nfunction stringToUTF8String(str) {\\n  return decodeURIComponent(escape(str));\\n}\\n\\nfunction utf8StringToString(str) {\\n  return unescape(encodeURIComponent(str));\\n}\\n\\nfunction isArrayEqual(arr1, arr2) {\\n  if (arr1.length !== arr2.length) {\\n    return false;\\n  }\\n  for (let i = 0, ii = arr1.length; i \u003C ii; i++) {\\n    if (arr1[i] !== arr2[i]) {\\n      return false;\\n    }\\n  }\\n  return true;\\n}\\n\\nfunction getModificationDate(date = new Date()) {\\n  const buffer = [\\n    date.getUTCFullYear().toString(),\\n    (date.getUTCMonth() + 1).toString().padStart(2, \\\"0\\\"),\\n    date.getUTCDate().toString().padStart(2, \\\"0\\\"),\\n    date.getUTCHours().toString().padStart(2, \\\"0\\\"),\\n    date.getUTCMinutes().toString().padStart(2, \\\"0\\\"),\\n    date.getUTCSeconds().toString().padStart(2, \\\"0\\\"),\\n  ];\\n\\n  return buffer.join(\\\"\\\");\\n}\\n\\nlet NormalizeRegex = null;\\nlet NormalizationMap = null;\\nfunction normalizeUnicode(str) {\\n  if (!NormalizeRegex) {\\n    \u002F\u002F In order to generate the following regex:\\n    \u002F\u002F  - create a PDF containing all the chars in the range 0000-FFFF with\\n    \u002F\u002F    a NFKC which is different of the char.\\n    \u002F\u002F  - copy and paste all those chars and get the ones where NFKC is\\n    \u002F\u002F    required.\\n    \u002F\u002F It appears that most the chars here contain some ligatures.\\n    NormalizeRegex =\\n      \u002F([\\\\u00a0\\\\u00b5\\\\u037e\\\\u0eb3\\\\u2000-\\\\u200a\\\\u202f\\\\u2126\\\\ufb00-\\\\ufb04\\\\ufb06\\\\ufb20-\\\\ufb36\\\\ufb38-\\\\ufb3c\\\\ufb3e\\\\ufb40-\\\\ufb41\\\\ufb43-\\\\ufb44\\\\ufb46-\\\\ufba1\\\\ufba4-\\\\ufba9\\\\ufbae-\\\\ufbb1\\\\ufbd3-\\\\ufbdc\\\\ufbde-\\\\ufbe7\\\\ufbea-\\\\ufbf8\\\\ufbfc-\\\\ufbfd\\\\ufc00-\\\\ufc5d\\\\ufc64-\\\\ufcf1\\\\ufcf5-\\\\ufd3d\\\\ufd88\\\\ufdf4\\\\ufdfa-\\\\ufdfb\\\\ufe71\\\\ufe77\\\\ufe79\\\\ufe7b\\\\ufe7d]+)|(\\\\ufb05+)\u002Fgu;\\n    NormalizationMap = new Map([[\\\"ﬅ\\\", \\\"ſt\\\"]]);\\n  }\\n  return str.replaceAll(NormalizeRegex, (_, p1, p2) =>\\n    p1 ? p1.normalize(\\\"NFKC\\\") : NormalizationMap.get(p2)\\n  );\\n}\\n\\nfunction getUuid() {\\n  if (\\n    (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) ||\\n    typeof crypto.randomUUID === \\\"function\\\"\\n  ) {\\n    return crypto.randomUUID();\\n  }\\n  const buf = new Uint8Array(32);\\n  crypto.getRandomValues(buf);\\n  return bytesToString(buf);\\n}\\n\\nconst AnnotationPrefix = \\\"pdfjs_internal_id_\\\";\\n\\nfunction _isValidExplicitDest(validRef, validName, dest) {\\n  if (!Array.isArray(dest) || dest.length \u003C 2) {\\n    return false;\\n  }\\n  const [page, zoom, ...args] = dest;\\n  if (!validRef(page) && !Number.isInteger(page)) {\\n    return false;\\n  }\\n  if (!validName(zoom)) {\\n    return false;\\n  }\\n  const argsLen = args.length;\\n  let allowNull = true;\\n  switch (zoom.name) {\\n    case \\\"XYZ\\\":\\n      if (argsLen \u003C 2 || argsLen > 3) {\\n        return false;\\n      }\\n      break;\\n    case \\\"Fit\\\":\\n    case \\\"FitB\\\":\\n      return argsLen === 0;\\n    case \\\"FitH\\\":\\n    case \\\"FitBH\\\":\\n    case \\\"FitV\\\":\\n    case \\\"FitBV\\\":\\n      if (argsLen > 1) {\\n        return false;\\n      }\\n      break;\\n    case \\\"FitR\\\":\\n      if (argsLen !== 4) {\\n        return false;\\n      }\\n      allowNull = false;\\n      break;\\n    default:\\n      return false;\\n  }\\n  for (const arg of args) {\\n    if (typeof arg === \\\"number\\\" || (allowNull && arg === null)) {\\n      continue;\\n    }\\n    return false;\\n  }\\n  return true;\\n}\\n\\n\u002F\u002F TOOD: Replace all occurrences of this function with `Math.clamp` once\\n\u002F\u002F       https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-math-clamp\u002F is generally available.\\nfunction MathClamp(v, min, max) {\\n  return Math.min(Math.max(v, min), max);\\n}\\n\\n\u002F\u002F TODO: Remove this once `Uint8Array.prototype.toHex` is generally available.\\nfunction toHexUtil(arr) {\\n  if (Uint8Array.prototype.toHex) {\\n    return arr.toHex();\\n  }\\n  return Array.from(arr, num => hexNumbers[num]).join(\\\"\\\");\\n}\\n\\n\u002F\u002F TODO: Remove this once `Uint8Array.prototype.toBase64` is generally\\n\u002F\u002F       available.\\nfunction toBase64Util(arr) {\\n  if (Uint8Array.prototype.toBase64) {\\n    return arr.toBase64();\\n  }\\n  return btoa(bytesToString(arr));\\n}\\n\\n\u002F\u002F TODO: Remove this once `Uint8Array.fromBase64` is generally available.\\nfunction fromBase64Util(str) {\\n  if (Uint8Array.fromBase64) {\\n    return Uint8Array.fromBase64(str);\\n  }\\n  return stringToBytes(atob(str));\\n}\\n\\n\u002F\u002F TODO: Remove this once https:\u002F\u002Fbugzilla.mozilla.org\u002Fshow_bug.cgi?id=1928493\\n\u002F\u002F       is fixed.\\nif (\\n  (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"SKIP_BABEL\\\")) &&\\n  typeof Promise.try !== \\\"function\\\"\\n) {\\n  Promise.try = function (fn, ...args) {\\n    return new Promise(resolve => {\\n      resolve(fn(...args));\\n    });\\n  };\\n}\\n\\n\u002F\u002F TODO: Remove this once the `javascript.options.experimental.math_sumprecise`\\n\u002F\u002F       preference is removed from Firefox.\\nif (typeof Math.sumPrecise !== \\\"function\\\") {\\n  \u002F\u002F Note that this isn't a \\\"proper\\\" polyfill, but since we're only using it to\\n  \u002F\u002F replace `Array.prototype.reduce()` invocations it should be fine.\\n  Math.sumPrecise = function (numbers) {\\n    return numbers.reduce((a, b) => a + b, 0);\\n  };\\n}\\n\\nif (\\n  typeof PDFJSDev !== \\\"undefined\\\" &&\\n  !PDFJSDev.test(\\\"SKIP_BABEL\\\") &&\\n  typeof AbortSignal.any !== \\\"function\\\"\\n) {\\n  AbortSignal.any = function (iterable) {\\n    const ac = new AbortController();\\n    const { signal } = ac;\\n\\n    \u002F\u002F Return immediately if any of the signals are already aborted.\\n    for (const s of iterable) {\\n      if (s.aborted) {\\n        ac.abort(s.reason);\\n        return signal;\\n      }\\n    }\\n    \u002F\u002F Register \\\"abort\\\" listeners for all signals.\\n    for (const s of iterable) {\\n      s.addEventListener(\\n        \\\"abort\\\",\\n        () => {\\n          ac.abort(s.reason);\\n        },\\n        { signal } \u002F\u002F Automatically remove the listener.\\n      );\\n    }\\n\\n    return signal;\\n  };\\n}\\n\\nexport {\\n  _isValidExplicitDest,\\n  AbortException,\\n  AnnotationActionEventType,\\n  AnnotationBorderStyleType,\\n  AnnotationEditorParamsType,\\n  AnnotationEditorPrefix,\\n  AnnotationEditorType,\\n  AnnotationFieldFlag,\\n  AnnotationFlag,\\n  AnnotationMode,\\n  AnnotationPrefix,\\n  AnnotationReplyType,\\n  AnnotationType,\\n  assert,\\n  BaseException,\\n  BASELINE_FACTOR,\\n  bytesToString,\\n  createValidAbsoluteUrl,\\n  DocumentActionEventType,\\n  DrawOPS,\\n  FeatureTest,\\n  FONT_IDENTITY_MATRIX,\\n  FormatError,\\n  fromBase64Util,\\n  getModificationDate,\\n  getUuid,\\n  getVerbosityLevel,\\n  hexNumbers,\\n  ImageKind,\\n  info,\\n  InvalidPDFException,\\n  isArrayEqual,\\n  isNodeJS,\\n  LINE_DESCENT_FACTOR,\\n  LINE_FACTOR,\\n  MathClamp,\\n  normalizeUnicode,\\n  objectSize,\\n  OPS,\\n  PageActionEventType,\\n  PasswordException,\\n  PasswordResponses,\\n  PermissionFlag,\\n  RenderingIntentFlag,\\n  ResponseException,\\n  setVerbosityLevel,\\n  shadow,\\n  string32,\\n  stringToBytes,\\n  stringToPDFString,\\n  stringToUTF8String,\\n  TextRenderingMode,\\n  toBase64Util,\\n  toHexUtil,\\n  UnknownErrorException,\\n  unreachable,\\n  updateUrlHash,\\n  utf8StringToString,\\n  Util,\\n  VerbosityLevel,\\n  warn,\\n};\\n\",\"\u002F* Copyright 2015 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  BaseException,\\n  FeatureTest,\\n  shadow,\\n  Util,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nconst SVG_NS = \\\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\\\";\\n\\nclass PixelsPerInch {\\n  static CSS = 96.0;\\n\\n  static PDF = 72.0;\\n\\n  static PDF_TO_CSS_UNITS = this.CSS \u002F this.PDF;\\n}\\n\\nasync function fetchData(url, type = \\\"text\\\") {\\n  if (\\n    (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) ||\\n    isValidFetchUrl(url, document.baseURI)\\n  ) {\\n    const response = await fetch(url);\\n    if (!response.ok) {\\n      throw new Error(response.statusText);\\n    }\\n    switch (type) {\\n      case \\\"arraybuffer\\\":\\n        return response.arrayBuffer();\\n      case \\\"blob\\\":\\n        return response.blob();\\n      case \\\"json\\\":\\n        return response.json();\\n    }\\n    return response.text();\\n  }\\n\\n  \u002F\u002F The Fetch API is not supported.\\n  return new Promise((resolve, reject) => {\\n    const request = new XMLHttpRequest();\\n    request.open(\\\"GET\\\", url, \u002F* async = *\u002F true);\\n    request.responseType = type;\\n\\n    request.onreadystatechange = () => {\\n      if (request.readyState !== XMLHttpRequest.DONE) {\\n        return;\\n      }\\n      if (request.status === 200 || request.status === 0) {\\n        switch (type) {\\n          case \\\"arraybuffer\\\":\\n          case \\\"blob\\\":\\n          case \\\"json\\\":\\n            resolve(request.response);\\n            return;\\n        }\\n        resolve(request.responseText);\\n        return;\\n      }\\n      reject(new Error(request.statusText));\\n    };\\n\\n    request.send(null);\\n  });\\n}\\n\\n\u002F**\\n * @typedef {Object} PageViewportParameters\\n * @property {Array\u003Cnumber>} viewBox - The xMin, yMin, xMax and\\n *   yMax coordinates.\\n * @property {number} userUnit - The size of units.\\n * @property {number} scale - The scale of the viewport.\\n * @property {number} rotation - The rotation, in degrees, of the viewport.\\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset. The\\n *   default value is `0`.\\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset. The\\n *   default value is `0`.\\n * @property {boolean} [dontFlip] - If true, the y-axis will not be flipped.\\n *   The default value is `false`.\\n *\u002F\\n\\n\u002F**\\n * @typedef {Object} PageViewportCloneParameters\\n * @property {number} [scale] - The scale, overriding the one in the cloned\\n *   viewport. The default value is `this.scale`.\\n * @property {number} [rotation] - The rotation, in degrees, overriding the one\\n *   in the cloned viewport. The default value is `this.rotation`.\\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\\n *   The default value is `this.offsetX`.\\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\\n *   The default value is `this.offsetY`.\\n * @property {boolean} [dontFlip] - If true, the x-axis will not be flipped.\\n *   The default value is `false`.\\n *\u002F\\n\\n\u002F**\\n * PDF page viewport created based on scale, rotation and offset.\\n *\u002F\\nclass PageViewport {\\n  \u002F**\\n   * @param {PageViewportParameters}\\n   *\u002F\\n  constructor({\\n    viewBox,\\n    userUnit,\\n    scale,\\n    rotation,\\n    offsetX = 0,\\n    offsetY = 0,\\n    dontFlip = false,\\n  }) {\\n    this.viewBox = viewBox;\\n    this.userUnit = userUnit;\\n    this.scale = scale;\\n    this.rotation = rotation;\\n    this.offsetX = offsetX;\\n    this.offsetY = offsetY;\\n\\n    scale *= userUnit; \u002F\u002F Take the userUnit into account.\\n\\n    \u002F\u002F creating transform to convert pdf coordinate system to the normal\\n    \u002F\u002F canvas like coordinates taking in account scale and rotation\\n    const centerX = (viewBox[2] + viewBox[0]) \u002F 2;\\n    const centerY = (viewBox[3] + viewBox[1]) \u002F 2;\\n    let rotateA, rotateB, rotateC, rotateD;\\n    \u002F\u002F Normalize the rotation, by clamping it to the [0, 360) range.\\n    rotation %= 360;\\n    if (rotation \u003C 0) {\\n      rotation += 360;\\n    }\\n    switch (rotation) {\\n      case 180:\\n        rotateA = -1;\\n        rotateB = 0;\\n        rotateC = 0;\\n        rotateD = 1;\\n        break;\\n      case 90:\\n        rotateA = 0;\\n        rotateB = 1;\\n        rotateC = 1;\\n        rotateD = 0;\\n        break;\\n      case 270:\\n        rotateA = 0;\\n        rotateB = -1;\\n        rotateC = -1;\\n        rotateD = 0;\\n        break;\\n      case 0:\\n        rotateA = 1;\\n        rotateB = 0;\\n        rotateC = 0;\\n        rotateD = -1;\\n        break;\\n      default:\\n        throw new Error(\\n          \\\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\\\"\\n        );\\n    }\\n\\n    if (dontFlip) {\\n      rotateC = -rotateC;\\n      rotateD = -rotateD;\\n    }\\n\\n    let offsetCanvasX, offsetCanvasY;\\n    let width, height;\\n    if (rotateA === 0) {\\n      offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\\n      offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\\n      width = (viewBox[3] - viewBox[1]) * scale;\\n      height = (viewBox[2] - viewBox[0]) * scale;\\n    } else {\\n      offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\\n      offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\\n      width = (viewBox[2] - viewBox[0]) * scale;\\n      height = (viewBox[3] - viewBox[1]) * scale;\\n    }\\n    \u002F\u002F creating transform for the following operations:\\n    \u002F\u002F translate(-centerX, -centerY), rotate and flip vertically,\\n    \u002F\u002F scale, and translate(offsetCanvasX, offsetCanvasY)\\n    this.transform = [\\n      rotateA * scale,\\n      rotateB * scale,\\n      rotateC * scale,\\n      rotateD * scale,\\n      offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,\\n      offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY,\\n    ];\\n\\n    this.width = width;\\n    this.height = height;\\n  }\\n\\n  \u002F**\\n   * The original, un-scaled, viewport dimensions.\\n   * @type {Object}\\n   *\u002F\\n  get rawDims() {\\n    const dims = this.viewBox;\\n\\n    return shadow(this, \\\"rawDims\\\", {\\n      pageWidth: dims[2] - dims[0],\\n      pageHeight: dims[3] - dims[1],\\n      pageX: dims[0],\\n      pageY: dims[1],\\n    });\\n  }\\n\\n  \u002F**\\n   * Clones viewport, with optional additional properties.\\n   * @param {PageViewportCloneParameters} [params]\\n   * @returns {PageViewport} Cloned viewport.\\n   *\u002F\\n  clone({\\n    scale = this.scale,\\n    rotation = this.rotation,\\n    offsetX = this.offsetX,\\n    offsetY = this.offsetY,\\n    dontFlip = false,\\n  } = {}) {\\n    return new PageViewport({\\n      viewBox: this.viewBox.slice(),\\n      userUnit: this.userUnit,\\n      scale,\\n      rotation,\\n      offsetX,\\n      offsetY,\\n      dontFlip,\\n    });\\n  }\\n\\n  \u002F**\\n   * Converts PDF point to the viewport coordinates. For examples, useful for\\n   * converting PDF location into canvas pixel coordinates.\\n   * @param {number} x - The x-coordinate.\\n   * @param {number} y - The y-coordinate.\\n   * @returns {Array} Array containing `x`- and `y`-coordinates of the\\n   *   point in the viewport coordinate space.\\n   * @see {@link convertToPdfPoint}\\n   * @see {@link convertToViewportRectangle}\\n   *\u002F\\n  convertToViewportPoint(x, y) {\\n    const p = [x, y];\\n    Util.applyTransform(p, this.transform);\\n    return p;\\n  }\\n\\n  \u002F**\\n   * Converts PDF rectangle to the viewport coordinates.\\n   * @param {Array} rect - The xMin, yMin, xMax and yMax coordinates.\\n   * @returns {Array} Array containing corresponding coordinates of the\\n   *   rectangle in the viewport coordinate space.\\n   * @see {@link convertToViewportPoint}\\n   *\u002F\\n  convertToViewportRectangle(rect) {\\n    const topLeft = [rect[0], rect[1]];\\n    Util.applyTransform(topLeft, this.transform);\\n    const bottomRight = [rect[2], rect[3]];\\n    Util.applyTransform(bottomRight, this.transform);\\n    return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\\n  }\\n\\n  \u002F**\\n   * Converts viewport coordinates to the PDF location. For examples, useful\\n   * for converting canvas pixel location into PDF one.\\n   * @param {number} x - The x-coordinate.\\n   * @param {number} y - The y-coordinate.\\n   * @returns {Array} Array containing `x`- and `y`-coordinates of the\\n   *   point in the PDF coordinate space.\\n   * @see {@link convertToViewportPoint}\\n   *\u002F\\n  convertToPdfPoint(x, y) {\\n    const p = [x, y];\\n    Util.applyInverseTransform(p, this.transform);\\n    return p;\\n  }\\n}\\n\\nclass RenderingCancelledException extends BaseException {\\n  constructor(msg, extraDelay = 0) {\\n    super(msg, \\\"RenderingCancelledException\\\");\\n    this.extraDelay = extraDelay;\\n  }\\n}\\n\\nfunction isDataScheme(url) {\\n  const ii = url.length;\\n  let i = 0;\\n  while (i \u003C ii && url[i].trim() === \\\"\\\") {\\n    i++;\\n  }\\n  return url.substring(i, i + 5).toLowerCase() === \\\"data:\\\";\\n}\\n\\nfunction isPdfFile(filename) {\\n  return typeof filename === \\\"string\\\" && \u002F\\\\.pdf$\u002Fi.test(filename);\\n}\\n\\n\u002F**\\n * Gets the filename from a given URL.\\n * @param {string} url\\n * @returns {string}\\n *\u002F\\nfunction getFilenameFromUrl(url) {\\n  [url] = url.split(\u002F[#?]\u002F, 1);\\n  return url.substring(url.lastIndexOf(\\\"\u002F\\\") + 1);\\n}\\n\\n\u002F**\\n * Returns the filename or guessed filename from the url (see issue 3455).\\n * @param {string} url - The original PDF location.\\n * @param {string} defaultFilename - The value returned if the filename is\\n *   unknown, or the protocol is unsupported.\\n * @returns {string} Guessed PDF filename.\\n *\u002F\\nfunction getPdfFilenameFromUrl(url, defaultFilename = \\\"document.pdf\\\") {\\n  if (typeof url !== \\\"string\\\") {\\n    return defaultFilename;\\n  }\\n  if (isDataScheme(url)) {\\n    warn('getPdfFilenameFromUrl: ignore \\\"data:\\\"-URL for performance reasons.');\\n    return defaultFilename;\\n  }\\n  const reURI = \u002F^(?:(?:[^:]+:)?\\\\\u002F\\\\\u002F[^\u002F]+)?([^?#]*)(\\\\?[^#]*)?(#.*)?$\u002F;\\n  \u002F\u002F              SCHEME        HOST        1.PATH  2.QUERY   3.REF\\n  \u002F\u002F Pattern to get last matching NAME.pdf\\n  const reFilename = \u002F[^\u002F?#=]+\\\\.pdf\\\\b(?!.*\\\\.pdf\\\\b)\u002Fi;\\n  const splitURI = reURI.exec(url);\\n  let suggestedFilename =\\n    reFilename.exec(splitURI[1]) ||\\n    reFilename.exec(splitURI[2]) ||\\n    reFilename.exec(splitURI[3]);\\n  if (suggestedFilename) {\\n    suggestedFilename = suggestedFilename[0];\\n    if (suggestedFilename.includes(\\\"%\\\")) {\\n      \u002F\u002F URL-encoded %2Fpath%2Fto%2Ffile.pdf should be file.pdf\\n      try {\\n        suggestedFilename = reFilename.exec(\\n          decodeURIComponent(suggestedFilename)\\n        )[0];\\n      } catch {\\n        \u002F\u002F Possible (extremely rare) errors:\\n        \u002F\u002F URIError \\\"Malformed URI\\\", e.g. for \\\"%AA.pdf\\\"\\n        \u002F\u002F TypeError \\\"null has no properties\\\", e.g. for \\\"%2F.pdf\\\"\\n      }\\n    }\\n  }\\n  return suggestedFilename || defaultFilename;\\n}\\n\\nclass StatTimer {\\n  started = Object.create(null);\\n\\n  times = [];\\n\\n  time(name) {\\n    if (name in this.started) {\\n      warn(`Timer is already running for ${name}`);\\n    }\\n    this.started[name] = Date.now();\\n  }\\n\\n  timeEnd(name) {\\n    if (!(name in this.started)) {\\n      warn(`Timer has not been started for ${name}`);\\n    }\\n    this.times.push({\\n      name,\\n      start: this.started[name],\\n      end: Date.now(),\\n    });\\n    \u002F\u002F Remove timer from started so it can be called again.\\n    delete this.started[name];\\n  }\\n\\n  toString() {\\n    \u002F\u002F Find the longest name for padding purposes.\\n    const outBuf = [];\\n    let longest = 0;\\n    for (const { name } of this.times) {\\n      longest = Math.max(name.length, longest);\\n    }\\n    for (const { name, start, end } of this.times) {\\n      outBuf.push(`${name.padEnd(longest)} ${end - start}ms\\\\n`);\\n    }\\n    return outBuf.join(\\\"\\\");\\n  }\\n}\\n\\nfunction isValidFetchUrl(url, baseUrl) {\\n  if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n    throw new Error(\\\"Not implemented: isValidFetchUrl\\\");\\n  }\\n  const res = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\\n  \u002F\u002F The Fetch API only supports the http\u002Fhttps protocols, and not file\u002Fftp.\\n  return res?.protocol === \\\"http:\\\" || res?.protocol === \\\"https:\\\";\\n}\\n\\n\u002F**\\n * Event handler to suppress context menu.\\n *\u002F\\nfunction noContextMenu(e) {\\n  e.preventDefault();\\n}\\n\\nfunction stopEvent(e) {\\n  e.preventDefault();\\n  e.stopPropagation();\\n}\\n\\n\u002F\u002F Deprecated API function -- display regardless of the `verbosity` setting.\\nfunction deprecated(details) {\\n  \u002F\u002F eslint-disable-next-line no-console\\n  console.log(\\\"Deprecated API usage: \\\" + details);\\n}\\n\\nclass PDFDateString {\\n  static #regex;\\n\\n  \u002F**\\n   * Convert a PDF date string to a JavaScript `Date` object.\\n   *\\n   * The PDF date string format is described in section 7.9.4 of the official\\n   * PDF 32000-1:2008 specification. However, in the PDF 1.7 reference (sixth\\n   * edition) Adobe describes the same format including a trailing apostrophe.\\n   * This syntax in incorrect, but Adobe Acrobat creates PDF files that contain\\n   * them. We ignore all apostrophes as they are not necessary for date parsing.\\n   *\\n   * Moreover, Adobe Acrobat doesn't handle changing the date to universal time\\n   * and doesn't use the user's time zone (effectively ignoring the HH' and mm'\\n   * parts of the date string).\\n   *\\n   * @param {string} input\\n   * @returns {Date|null}\\n   *\u002F\\n  static toDateObject(input) {\\n    if (!input || typeof input !== \\\"string\\\") {\\n      return null;\\n    }\\n\\n    \u002F\u002F Lazily initialize the regular expression.\\n    this.#regex ||= new RegExp(\\n      \\\"^D:\\\" + \u002F\u002F Prefix (required)\\n        \\\"(\\\\\\\\d{4})\\\" + \u002F\u002F Year (required)\\n        \\\"(\\\\\\\\d{2})?\\\" + \u002F\u002F Month (optional)\\n        \\\"(\\\\\\\\d{2})?\\\" + \u002F\u002F Day (optional)\\n        \\\"(\\\\\\\\d{2})?\\\" + \u002F\u002F Hour (optional)\\n        \\\"(\\\\\\\\d{2})?\\\" + \u002F\u002F Minute (optional)\\n        \\\"(\\\\\\\\d{2})?\\\" + \u002F\u002F Second (optional)\\n        \\\"([Z|+|-])?\\\" + \u002F\u002F Universal time relation (optional)\\n        \\\"(\\\\\\\\d{2})?\\\" + \u002F\u002F Offset hour (optional)\\n        \\\"'?\\\" + \u002F\u002F Splitting apostrophe (optional)\\n        \\\"(\\\\\\\\d{2})?\\\" + \u002F\u002F Offset minute (optional)\\n        \\\"'?\\\" \u002F\u002F Trailing apostrophe (optional)\\n    );\\n\\n    \u002F\u002F Optional fields that don't satisfy the requirements from the regular\\n    \u002F\u002F expression (such as incorrect digit counts or numbers that are out of\\n    \u002F\u002F range) will fall back the defaults from the specification.\\n    const matches = this.#regex.exec(input);\\n    if (!matches) {\\n      return null;\\n    }\\n\\n    \u002F\u002F JavaScript's `Date` object expects the month to be between 0 and 11\\n    \u002F\u002F instead of 1 and 12, so we have to correct for that.\\n    const year = parseInt(matches[1], 10);\\n    let month = parseInt(matches[2], 10);\\n    month = month >= 1 && month \u003C= 12 ? month - 1 : 0;\\n    let day = parseInt(matches[3], 10);\\n    day = day >= 1 && day \u003C= 31 ? day : 1;\\n    let hour = parseInt(matches[4], 10);\\n    hour = hour >= 0 && hour \u003C= 23 ? hour : 0;\\n    let minute = parseInt(matches[5], 10);\\n    minute = minute >= 0 && minute \u003C= 59 ? minute : 0;\\n    let second = parseInt(matches[6], 10);\\n    second = second >= 0 && second \u003C= 59 ? second : 0;\\n    const universalTimeRelation = matches[7] || \\\"Z\\\";\\n    let offsetHour = parseInt(matches[8], 10);\\n    offsetHour = offsetHour >= 0 && offsetHour \u003C= 23 ? offsetHour : 0;\\n    let offsetMinute = parseInt(matches[9], 10) || 0;\\n    offsetMinute = offsetMinute >= 0 && offsetMinute \u003C= 59 ? offsetMinute : 0;\\n\\n    \u002F\u002F Universal time relation 'Z' means that the local time is equal to the\\n    \u002F\u002F universal time, whereas the relations '+'\u002F'-' indicate that the local\\n    \u002F\u002F time is later respectively earlier than the universal time. Every date\\n    \u002F\u002F is normalized to universal time.\\n    if (universalTimeRelation === \\\"-\\\") {\\n      hour += offsetHour;\\n      minute += offsetMinute;\\n    } else if (universalTimeRelation === \\\"+\\\") {\\n      hour -= offsetHour;\\n      minute -= offsetMinute;\\n    }\\n\\n    return new Date(Date.UTC(year, month, day, hour, minute, second));\\n  }\\n}\\n\\n\u002F**\\n * NOTE: This is (mostly) intended to support printing of XFA forms.\\n *\u002F\\nfunction getXfaPageViewport(xfaPage, { scale = 1, rotation = 0 }) {\\n  const { width, height } = xfaPage.attributes.style;\\n  const viewBox = [0, 0, parseInt(width), parseInt(height)];\\n\\n  return new PageViewport({\\n    viewBox,\\n    userUnit: 1,\\n    scale,\\n    rotation,\\n  });\\n}\\n\\nfunction getRGB(color) {\\n  if (color.startsWith(\\\"#\\\")) {\\n    const colorRGB = parseInt(color.slice(1), 16);\\n    return [\\n      (colorRGB & 0xff0000) >> 16,\\n      (colorRGB & 0x00ff00) >> 8,\\n      colorRGB & 0x0000ff,\\n    ];\\n  }\\n\\n  if (color.startsWith(\\\"rgb(\\\")) {\\n    \u002F\u002F getComputedStyle(...).color returns a `rgb(R, G, B)` color.\\n    return color\\n      .slice(\u002F* \\\"rgb(\\\".length *\u002F 4, -1) \u002F\u002F Strip out \\\"rgb(\\\" and \\\")\\\".\\n      .split(\\\",\\\")\\n      .map(x => parseInt(x));\\n  }\\n\\n  if (color.startsWith(\\\"rgba(\\\")) {\\n    return color\\n      .slice(\u002F* \\\"rgba(\\\".length *\u002F 5, -1) \u002F\u002F Strip out \\\"rgba(\\\" and \\\")\\\".\\n      .split(\\\",\\\")\\n      .map(x => parseInt(x))\\n      .slice(0, 3);\\n  }\\n\\n  warn(`Not a valid color format: \\\"${color}\\\"`);\\n  return [0, 0, 0];\\n}\\n\\nfunction getColorValues(colors) {\\n  const span = document.createElement(\\\"span\\\");\\n  span.style.visibility = \\\"hidden\\\";\\n  \u002F\u002F NOTE: The following does *not* affect `forced-colors: active` mode.\\n  span.style.colorScheme = \\\"only light\\\";\\n  document.body.append(span);\\n  for (const name of colors.keys()) {\\n    span.style.color = name;\\n    const computedColor = window.getComputedStyle(span).color;\\n    colors.set(name, getRGB(computedColor));\\n  }\\n  span.remove();\\n}\\n\\nfunction getCurrentTransform(ctx) {\\n  const { a, b, c, d, e, f } = ctx.getTransform();\\n  return [a, b, c, d, e, f];\\n}\\n\\nfunction getCurrentTransformInverse(ctx) {\\n  const { a, b, c, d, e, f } = ctx.getTransform().invertSelf();\\n  return [a, b, c, d, e, f];\\n}\\n\\n\u002F**\\n * @param {HTMLDivElement} div\\n * @param {PageViewport} viewport\\n * @param {boolean} mustFlip\\n * @param {boolean} mustRotate\\n *\u002F\\nfunction setLayerDimensions(\\n  div,\\n  viewport,\\n  mustFlip = false,\\n  mustRotate = true\\n) {\\n  if (viewport instanceof PageViewport) {\\n    const { pageWidth, pageHeight } = viewport.rawDims;\\n    const { style } = div;\\n    const useRound = FeatureTest.isCSSRoundSupported;\\n\\n    const w = `var(--total-scale-factor) * ${pageWidth}px`,\\n      h = `var(--total-scale-factor) * ${pageHeight}px`;\\n    const widthStr = useRound\\n        ? `round(down, ${w}, var(--scale-round-x))`\\n        : `calc(${w})`,\\n      heightStr = useRound\\n        ? `round(down, ${h}, var(--scale-round-y))`\\n        : `calc(${h})`;\\n\\n    if (!mustFlip || viewport.rotation % 180 === 0) {\\n      style.width = widthStr;\\n      style.height = heightStr;\\n    } else {\\n      style.width = heightStr;\\n      style.height = widthStr;\\n    }\\n  }\\n\\n  if (mustRotate) {\\n    div.setAttribute(\\\"data-main-rotation\\\", viewport.rotation);\\n  }\\n}\\n\\n\u002F**\\n * Scale factors for the canvas, necessary with HiDPI displays.\\n *\u002F\\nclass OutputScale {\\n  constructor() {\\n    const { pixelRatio } = OutputScale;\\n\\n    \u002F**\\n     * @type {number} Horizontal scale.\\n     *\u002F\\n    this.sx = pixelRatio;\\n\\n    \u002F**\\n     * @type {number} Vertical scale.\\n     *\u002F\\n    this.sy = pixelRatio;\\n  }\\n\\n  \u002F**\\n   * @type {boolean} Returns `true` when scaling is required, `false` otherwise.\\n   *\u002F\\n  get scaled() {\\n    return this.sx !== 1 || this.sy !== 1;\\n  }\\n\\n  \u002F**\\n   * @type {boolean} Returns `true` when scaling is symmetric,\\n   *   `false` otherwise.\\n   *\u002F\\n  get symmetric() {\\n    return this.sx === this.sy;\\n  }\\n\\n  \u002F**\\n   * @returns {boolean} Returns `true` if scaling was limited,\\n   *   `false` otherwise.\\n   *\u002F\\n  limitCanvas(width, height, maxPixels, maxDim, capAreaFactor = -1) {\\n    let maxAreaScale = Infinity,\\n      maxWidthScale = Infinity,\\n      maxHeightScale = Infinity;\\n\\n    maxPixels = OutputScale.capPixels(maxPixels, capAreaFactor);\\n    if (maxPixels > 0) {\\n      maxAreaScale = Math.sqrt(maxPixels \u002F (width * height));\\n    }\\n    if (maxDim !== -1) {\\n      maxWidthScale = maxDim \u002F width;\\n      maxHeightScale = maxDim \u002F height;\\n    }\\n    const maxScale = Math.min(maxAreaScale, maxWidthScale, maxHeightScale);\\n\\n    if (this.sx > maxScale || this.sy > maxScale) {\\n      this.sx = maxScale;\\n      this.sy = maxScale;\\n      return true;\\n    }\\n    return false;\\n  }\\n\\n  static get pixelRatio() {\\n    return globalThis.devicePixelRatio || 1;\\n  }\\n\\n  static capPixels(maxPixels, capAreaFactor) {\\n    if (capAreaFactor >= 0) {\\n      const winPixels = Math.ceil(\\n        (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING\\\")\\n          ? window.innerWidth * window.innerHeight\\n          : window.screen.availWidth * window.screen.availHeight) *\\n          this.pixelRatio ** 2 *\\n          (1 + capAreaFactor \u002F 100)\\n      );\\n      return maxPixels > 0 ? Math.min(maxPixels, winPixels) : winPixels;\\n    }\\n    return maxPixels;\\n  }\\n}\\n\\n\u002F\u002F See https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FMedia\u002FFormats\u002FImage_types\\n\u002F\u002F to know which types are supported by the browser.\\nconst SupportedImageMimeTypes = [\\n  \\\"image\u002Fapng\\\",\\n  \\\"image\u002Favif\\\",\\n  \\\"image\u002Fbmp\\\",\\n  \\\"image\u002Fgif\\\",\\n  \\\"image\u002Fjpeg\\\",\\n  \\\"image\u002Fpng\\\",\\n  \\\"image\u002Fsvg+xml\\\",\\n  \\\"image\u002Fwebp\\\",\\n  \\\"image\u002Fx-icon\\\",\\n];\\n\\nexport {\\n  deprecated,\\n  fetchData,\\n  getColorValues,\\n  getCurrentTransform,\\n  getCurrentTransformInverse,\\n  getFilenameFromUrl,\\n  getPdfFilenameFromUrl,\\n  getRGB,\\n  getXfaPageViewport,\\n  isDataScheme,\\n  isPdfFile,\\n  isValidFetchUrl,\\n  noContextMenu,\\n  OutputScale,\\n  PageViewport,\\n  PDFDateString,\\n  PixelsPerInch,\\n  RenderingCancelledException,\\n  setLayerDimensions,\\n  StatTimer,\\n  stopEvent,\\n  SupportedImageMimeTypes,\\n  SVG_NS,\\n};\\n\",\"\u002F* Copyright 2023 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { noContextMenu, stopEvent } from \\\"..\u002Fdisplay_utils.js\\\";\\n\\nclass EditorToolbar {\\n  #toolbar = null;\\n\\n  #colorPicker = null;\\n\\n  #editor;\\n\\n  #buttons = null;\\n\\n  #altText = null;\\n\\n  #signatureDescriptionButton = null;\\n\\n  static #l10nRemove = null;\\n\\n  constructor(editor) {\\n    this.#editor = editor;\\n\\n    EditorToolbar.#l10nRemove ||= Object.freeze({\\n      freetext: \\\"pdfjs-editor-remove-freetext-button\\\",\\n      highlight: \\\"pdfjs-editor-remove-highlight-button\\\",\\n      ink: \\\"pdfjs-editor-remove-ink-button\\\",\\n      stamp: \\\"pdfjs-editor-remove-stamp-button\\\",\\n      signature: \\\"pdfjs-editor-remove-signature-button\\\",\\n    });\\n  }\\n\\n  render() {\\n    const editToolbar = (this.#toolbar = document.createElement(\\\"div\\\"));\\n    editToolbar.classList.add(\\\"editToolbar\\\", \\\"hidden\\\");\\n    editToolbar.setAttribute(\\\"role\\\", \\\"toolbar\\\");\\n    const signal = this.#editor._uiManager._signal;\\n    editToolbar.addEventListener(\\\"contextmenu\\\", noContextMenu, { signal });\\n    editToolbar.addEventListener(\\\"pointerdown\\\", EditorToolbar.#pointerDown, {\\n      signal,\\n    });\\n\\n    const buttons = (this.#buttons = document.createElement(\\\"div\\\"));\\n    buttons.className = \\\"buttons\\\";\\n    editToolbar.append(buttons);\\n\\n    const position = this.#editor.toolbarPosition;\\n    if (position) {\\n      const { style } = editToolbar;\\n      const x =\\n        this.#editor._uiManager.direction === \\\"ltr\\\"\\n          ? 1 - position[0]\\n          : position[0];\\n      style.insetInlineEnd = `${100 * x}%`;\\n      style.top = `calc(${\\n        100 * position[1]\\n      }% + var(--editor-toolbar-vert-offset))`;\\n    }\\n\\n    this.#addDeleteButton();\\n\\n    return editToolbar;\\n  }\\n\\n  get div() {\\n    return this.#toolbar;\\n  }\\n\\n  static #pointerDown(e) {\\n    e.stopPropagation();\\n  }\\n\\n  #focusIn(e) {\\n    this.#editor._focusEventsAllowed = false;\\n    stopEvent(e);\\n  }\\n\\n  #focusOut(e) {\\n    this.#editor._focusEventsAllowed = true;\\n    stopEvent(e);\\n  }\\n\\n  #addListenersToElement(element) {\\n    \u002F\u002F If we're clicking on a button with the keyboard or with\\n    \u002F\u002F the mouse, we don't want to trigger any focus events on\\n    \u002F\u002F the editor.\\n    const signal = this.#editor._uiManager._signal;\\n    element.addEventListener(\\\"focusin\\\", this.#focusIn.bind(this), {\\n      capture: true,\\n      signal,\\n    });\\n    element.addEventListener(\\\"focusout\\\", this.#focusOut.bind(this), {\\n      capture: true,\\n      signal,\\n    });\\n    element.addEventListener(\\\"contextmenu\\\", noContextMenu, { signal });\\n  }\\n\\n  hide() {\\n    this.#toolbar.classList.add(\\\"hidden\\\");\\n    this.#colorPicker?.hideDropdown();\\n  }\\n\\n  show() {\\n    this.#toolbar.classList.remove(\\\"hidden\\\");\\n    this.#altText?.shown();\\n  }\\n\\n  #addDeleteButton() {\\n    const { editorType, _uiManager } = this.#editor;\\n\\n    const button = document.createElement(\\\"button\\\");\\n    button.className = \\\"delete\\\";\\n    button.tabIndex = 0;\\n    button.setAttribute(\\\"data-l10n-id\\\", EditorToolbar.#l10nRemove[editorType]);\\n    this.#addListenersToElement(button);\\n    button.addEventListener(\\n      \\\"click\\\",\\n      e => {\\n        _uiManager.delete();\\n      },\\n      { signal: _uiManager._signal }\\n    );\\n    this.#buttons.append(button);\\n  }\\n\\n  get #divider() {\\n    const divider = document.createElement(\\\"div\\\");\\n    divider.className = \\\"divider\\\";\\n    return divider;\\n  }\\n\\n  async addAltText(altText) {\\n    const button = await altText.render();\\n    this.#addListenersToElement(button);\\n    this.#buttons.prepend(button, this.#divider);\\n    this.#altText = altText;\\n  }\\n\\n  addColorPicker(colorPicker) {\\n    this.#colorPicker = colorPicker;\\n    const button = colorPicker.renderButton();\\n    this.#addListenersToElement(button);\\n    this.#buttons.prepend(button, this.#divider);\\n  }\\n\\n  async addEditSignatureButton(signatureManager) {\\n    const button = (this.#signatureDescriptionButton =\\n      await signatureManager.renderEditButton(this.#editor));\\n    this.#addListenersToElement(button);\\n    this.#buttons.prepend(button, this.#divider);\\n  }\\n\\n  updateEditSignatureButton(description) {\\n    if (this.#signatureDescriptionButton) {\\n      this.#signatureDescriptionButton.title = description;\\n    }\\n  }\\n\\n  remove() {\\n    this.#toolbar.remove();\\n    this.#colorPicker?.destroy();\\n    this.#colorPicker = null;\\n  }\\n}\\n\\nclass HighlightToolbar {\\n  #buttons = null;\\n\\n  #toolbar = null;\\n\\n  #uiManager;\\n\\n  constructor(uiManager) {\\n    this.#uiManager = uiManager;\\n  }\\n\\n  #render() {\\n    const editToolbar = (this.#toolbar = document.createElement(\\\"div\\\"));\\n    editToolbar.className = \\\"editToolbar\\\";\\n    editToolbar.setAttribute(\\\"role\\\", \\\"toolbar\\\");\\n    editToolbar.addEventListener(\\\"contextmenu\\\", noContextMenu, {\\n      signal: this.#uiManager._signal,\\n    });\\n\\n    const buttons = (this.#buttons = document.createElement(\\\"div\\\"));\\n    buttons.className = \\\"buttons\\\";\\n    editToolbar.append(buttons);\\n\\n    this.#addHighlightButton();\\n\\n    return editToolbar;\\n  }\\n\\n  #getLastPoint(boxes, isLTR) {\\n    let lastY = 0;\\n    let lastX = 0;\\n    for (const box of boxes) {\\n      const y = box.y + box.height;\\n      if (y \u003C lastY) {\\n        continue;\\n      }\\n      const x = box.x + (isLTR ? box.width : 0);\\n      if (y > lastY) {\\n        lastX = x;\\n        lastY = y;\\n        continue;\\n      }\\n      if (isLTR) {\\n        if (x > lastX) {\\n          lastX = x;\\n        }\\n      } else if (x \u003C lastX) {\\n        lastX = x;\\n      }\\n    }\\n    return [isLTR ? 1 - lastX : lastX, lastY];\\n  }\\n\\n  show(parent, boxes, isLTR) {\\n    const [x, y] = this.#getLastPoint(boxes, isLTR);\\n    const { style } = (this.#toolbar ||= this.#render());\\n    parent.append(this.#toolbar);\\n    style.insetInlineEnd = `${100 * x}%`;\\n    style.top = `calc(${100 * y}% + var(--editor-toolbar-vert-offset))`;\\n  }\\n\\n  hide() {\\n    this.#toolbar.remove();\\n  }\\n\\n  #addHighlightButton() {\\n    const button = document.createElement(\\\"button\\\");\\n    button.className = \\\"highlightButton\\\";\\n    button.tabIndex = 0;\\n    button.setAttribute(\\\"data-l10n-id\\\", `pdfjs-highlight-floating-button1`);\\n    const span = document.createElement(\\\"span\\\");\\n    button.append(span);\\n    span.className = \\\"visuallyHidden\\\";\\n    span.setAttribute(\\\"data-l10n-id\\\", \\\"pdfjs-highlight-floating-button-label\\\");\\n    const signal = this.#uiManager._signal;\\n    button.addEventListener(\\\"contextmenu\\\", noContextMenu, { signal });\\n    button.addEventListener(\\n      \\\"click\\\",\\n      () => {\\n        this.#uiManager.highlightSelection(\\\"floating_button\\\");\\n      },\\n      { signal }\\n    );\\n    this.#buttons.append(button);\\n  }\\n}\\n\\nexport { EditorToolbar, HighlightToolbar };\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Feditor.js\\\").AnnotationEditor} AnnotationEditor *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fannotation_editor_layer.js\\\").AnnotationEditorLayer} AnnotationEditorLayer *\u002F\\n\\nimport {\\n  AnnotationEditorParamsType,\\n  AnnotationEditorPrefix,\\n  AnnotationEditorType,\\n  FeatureTest,\\n  getUuid,\\n  shadow,\\n  Util,\\n  warn,\\n} from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  fetchData,\\n  getColorValues,\\n  getRGB,\\n  PixelsPerInch,\\n  stopEvent,\\n} from \\\"..\u002Fdisplay_utils.js\\\";\\nimport { HighlightToolbar } from \\\".\u002Ftoolbar.js\\\";\\n\\nfunction bindEvents(obj, element, names) {\\n  for (const name of names) {\\n    element.addEventListener(name, obj[name].bind(obj));\\n  }\\n}\\n\\n\u002F**\\n * Class to create some unique ids for the different editors.\\n *\u002F\\nclass IdManager {\\n  #id = 0;\\n\\n  constructor() {\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING\\\")) {\\n      Object.defineProperty(this, \\\"reset\\\", {\\n        value: () => (this.#id = 0),\\n      });\\n    }\\n  }\\n\\n  \u002F**\\n   * Get a unique id.\\n   * @returns {string}\\n   *\u002F\\n  get id() {\\n    return `${AnnotationEditorPrefix}${this.#id++}`;\\n  }\\n}\\n\\n\u002F**\\n * Class to manage the images used by the editors.\\n * The main idea is to try to minimize the memory used by the images.\\n * The images are cached and reused when possible\\n * We use a refCounter to know when an image is not used anymore but we need to\\n * be able to restore an image after a remove+undo, so we keep a file reference\\n * or an url one.\\n *\u002F\\nclass ImageManager {\\n  #baseId = getUuid();\\n\\n  #id = 0;\\n\\n  #cache = null;\\n\\n  static get _isSVGFittingCanvas() {\\n    \u002F\u002F By default, Firefox doesn't rescale without preserving the aspect ratio\\n    \u002F\u002F when drawing an SVG image on a canvas, see https:\u002F\u002Fbugzilla.mozilla.org\u002F1547776.\\n    \u002F\u002F The \\\"workaround\\\" is to append \\\"svgView(preserveAspectRatio(none))\\\" to the\\n    \u002F\u002F url, but according to comment #15, it seems that it leads to unexpected\\n    \u002F\u002F behavior in Safari.\\n    const svg = `data:image\u002Fsvg+xml;charset=UTF-8,\u003Csvg viewBox=\\\"0 0 1 1\\\" width=\\\"1\\\" height=\\\"1\\\" xmlns=\\\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\\\">\u003Crect width=\\\"1\\\" height=\\\"1\\\" style=\\\"fill:red;\\\"\u002F>\u003C\u002Fsvg>`;\\n    const canvas = new OffscreenCanvas(1, 3);\\n    const ctx = canvas.getContext(\\\"2d\\\", { willReadFrequently: true });\\n    const image = new Image();\\n    image.src = svg;\\n    const promise = image.decode().then(() => {\\n      ctx.drawImage(image, 0, 0, 1, 1, 0, 0, 1, 3);\\n      return new Uint32Array(ctx.getImageData(0, 0, 1, 1).data.buffer)[0] === 0;\\n    });\\n\\n    return shadow(this, \\\"_isSVGFittingCanvas\\\", promise);\\n  }\\n\\n  async #get(key, rawData) {\\n    this.#cache ||= new Map();\\n    let data = this.#cache.get(key);\\n    if (data === null) {\\n      \u002F\u002F We already tried to load the image but it failed.\\n      return null;\\n    }\\n    if (data?.bitmap) {\\n      data.refCounter += 1;\\n      return data;\\n    }\\n    try {\\n      data ||= {\\n        bitmap: null,\\n        id: `image_${this.#baseId}_${this.#id++}`,\\n        refCounter: 0,\\n        isSvg: false,\\n      };\\n      let image;\\n      if (typeof rawData === \\\"string\\\") {\\n        data.url = rawData;\\n        image = await fetchData(rawData, \\\"blob\\\");\\n      } else if (rawData instanceof File) {\\n        image = data.file = rawData;\\n      } else if (rawData instanceof Blob) {\\n        image = rawData;\\n      }\\n\\n      if (image.type === \\\"image\u002Fsvg+xml\\\") {\\n        \u002F\u002F Unfortunately, createImageBitmap doesn't work with SVG images.\\n        \u002F\u002F (see https:\u002F\u002Fbugzilla.mozilla.org\u002F1841972).\\n        const mustRemoveAspectRatioPromise = ImageManager._isSVGFittingCanvas;\\n        const fileReader = new FileReader();\\n        const imageElement = new Image();\\n        const imagePromise = new Promise((resolve, reject) => {\\n          imageElement.onload = () => {\\n            data.bitmap = imageElement;\\n            data.isSvg = true;\\n            resolve();\\n          };\\n          fileReader.onload = async () => {\\n            const url = (data.svgUrl = fileReader.result);\\n            \u002F\u002F We need to set the preserveAspectRatio to none in order to let\\n            \u002F\u002F the image fits the canvas when resizing.\\n            imageElement.src = (await mustRemoveAspectRatioPromise)\\n              ? `${url}#svgView(preserveAspectRatio(none))`\\n              : url;\\n          };\\n          imageElement.onerror = fileReader.onerror = reject;\\n        });\\n        fileReader.readAsDataURL(image);\\n        await imagePromise;\\n      } else {\\n        data.bitmap = await createImageBitmap(image);\\n      }\\n      data.refCounter = 1;\\n    } catch (e) {\\n      warn(e);\\n      data = null;\\n    }\\n    this.#cache.set(key, data);\\n    if (data) {\\n      this.#cache.set(data.id, data);\\n    }\\n    return data;\\n  }\\n\\n  async getFromFile(file) {\\n    const { lastModified, name, size, type } = file;\\n    return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\\n  }\\n\\n  async getFromUrl(url) {\\n    return this.#get(url, url);\\n  }\\n\\n  async getFromBlob(id, blobPromise) {\\n    const blob = await blobPromise;\\n    return this.#get(id, blob);\\n  }\\n\\n  async getFromId(id) {\\n    this.#cache ||= new Map();\\n    const data = this.#cache.get(id);\\n    if (!data) {\\n      return null;\\n    }\\n    if (data.bitmap) {\\n      data.refCounter += 1;\\n      return data;\\n    }\\n\\n    if (data.file) {\\n      return this.getFromFile(data.file);\\n    }\\n    if (data.blobPromise) {\\n      const { blobPromise } = data;\\n      delete data.blobPromise;\\n      return this.getFromBlob(data.id, blobPromise);\\n    }\\n    return this.getFromUrl(data.url);\\n  }\\n\\n  getFromCanvas(id, canvas) {\\n    this.#cache ||= new Map();\\n    let data = this.#cache.get(id);\\n    if (data?.bitmap) {\\n      data.refCounter += 1;\\n      return data;\\n    }\\n    const offscreen = new OffscreenCanvas(canvas.width, canvas.height);\\n    const ctx = offscreen.getContext(\\\"2d\\\");\\n    ctx.drawImage(canvas, 0, 0);\\n    data = {\\n      bitmap: offscreen.transferToImageBitmap(),\\n      id: `image_${this.#baseId}_${this.#id++}`,\\n      refCounter: 1,\\n      isSvg: false,\\n    };\\n    this.#cache.set(id, data);\\n    this.#cache.set(data.id, data);\\n    return data;\\n  }\\n\\n  getSvgUrl(id) {\\n    const data = this.#cache.get(id);\\n    if (!data?.isSvg) {\\n      return null;\\n    }\\n    return data.svgUrl;\\n  }\\n\\n  deleteId(id) {\\n    this.#cache ||= new Map();\\n    const data = this.#cache.get(id);\\n    if (!data) {\\n      return;\\n    }\\n    data.refCounter -= 1;\\n    if (data.refCounter !== 0) {\\n      return;\\n    }\\n    const { bitmap } = data;\\n    if (!data.url && !data.file) {\\n      \u002F\u002F The image has no way to be restored (ctrl+z) so we must fix that.\\n      const canvas = new OffscreenCanvas(bitmap.width, bitmap.height);\\n      const ctx = canvas.getContext(\\\"bitmaprenderer\\\");\\n      ctx.transferFromImageBitmap(bitmap);\\n      data.blobPromise = canvas.convertToBlob();\\n    }\\n\\n    bitmap.close?.();\\n    data.bitmap = null;\\n  }\\n\\n  \u002F\u002F We can use the id only if it belongs this manager.\\n  \u002F\u002F We must take care of having the right manager because we can copy\u002Fpaste\\n  \u002F\u002F some images from other documents, hence it'd be a pity to use an id from an\\n  \u002F\u002F other manager.\\n  isValidId(id) {\\n    return id.startsWith(`image_${this.#baseId}_`);\\n  }\\n}\\n\\n\u002F**\\n * Class to handle undo\u002Fredo.\\n * Commands are just saved in a buffer.\\n * If we hit some memory issues we could likely use a circular buffer.\\n * It has to be used as a singleton.\\n *\u002F\\nclass CommandManager {\\n  #commands = [];\\n\\n  #locked = false;\\n\\n  #maxSize;\\n\\n  #position = -1;\\n\\n  constructor(maxSize = 128) {\\n    this.#maxSize = maxSize;\\n  }\\n\\n  \u002F**\\n   * @typedef {Object} addOptions\\n   * @property {function} cmd\\n   * @property {function} undo\\n   * @property {function} [post]\\n   * @property {boolean} mustExec\\n   * @property {number} type\\n   * @property {boolean} overwriteIfSameType\\n   * @property {boolean} keepUndo\\n   *\u002F\\n\\n  \u002F**\\n   * Add a new couple of commands to be used in case of redo\u002Fundo.\\n   * @param {addOptions} options\\n   *\u002F\\n  add({\\n    cmd,\\n    undo,\\n    post,\\n    mustExec,\\n    type = NaN,\\n    overwriteIfSameType = false,\\n    keepUndo = false,\\n  }) {\\n    if (mustExec) {\\n      cmd();\\n    }\\n\\n    if (this.#locked) {\\n      return;\\n    }\\n\\n    const save = { cmd, undo, post, type };\\n    if (this.#position === -1) {\\n      if (this.#commands.length > 0) {\\n        \u002F\u002F All the commands have been undone and then a new one is added\\n        \u002F\u002F hence we clear the queue.\\n        this.#commands.length = 0;\\n      }\\n      this.#position = 0;\\n      this.#commands.push(save);\\n      return;\\n    }\\n\\n    if (overwriteIfSameType && this.#commands[this.#position].type === type) {\\n      \u002F\u002F For example when we change a color we don't want to\\n      \u002F\u002F be able to undo all the steps, hence we only want to\\n      \u002F\u002F keep the last undoable action in this sequence of actions.\\n      if (keepUndo) {\\n        save.undo = this.#commands[this.#position].undo;\\n      }\\n      this.#commands[this.#position] = save;\\n      return;\\n    }\\n\\n    const next = this.#position + 1;\\n    if (next === this.#maxSize) {\\n      this.#commands.splice(0, 1);\\n    } else {\\n      this.#position = next;\\n      if (next \u003C this.#commands.length) {\\n        this.#commands.splice(next);\\n      }\\n    }\\n\\n    this.#commands.push(save);\\n  }\\n\\n  \u002F**\\n   * Undo the last command.\\n   *\u002F\\n  undo() {\\n    if (this.#position === -1) {\\n      \u002F\u002F Nothing to undo.\\n      return;\\n    }\\n\\n    \u002F\u002F Avoid to insert something during the undo execution.\\n    this.#locked = true;\\n    const { undo, post } = this.#commands[this.#position];\\n    undo();\\n    post?.();\\n    this.#locked = false;\\n\\n    this.#position -= 1;\\n  }\\n\\n  \u002F**\\n   * Redo the last command.\\n   *\u002F\\n  redo() {\\n    if (this.#position \u003C this.#commands.length - 1) {\\n      this.#position += 1;\\n\\n      \u002F\u002F Avoid to insert something during the redo execution.\\n      this.#locked = true;\\n      const { cmd, post } = this.#commands[this.#position];\\n      cmd();\\n      post?.();\\n      this.#locked = false;\\n    }\\n  }\\n\\n  \u002F**\\n   * Check if there is something to undo.\\n   * @returns {boolean}\\n   *\u002F\\n  hasSomethingToUndo() {\\n    return this.#position !== -1;\\n  }\\n\\n  \u002F**\\n   * Check if there is something to redo.\\n   * @returns {boolean}\\n   *\u002F\\n  hasSomethingToRedo() {\\n    return this.#position \u003C this.#commands.length - 1;\\n  }\\n\\n  cleanType(type) {\\n    if (this.#position === -1) {\\n      return;\\n    }\\n    for (let i = this.#position; i >= 0; i--) {\\n      if (this.#commands[i].type !== type) {\\n        this.#commands.splice(i + 1, this.#position - i);\\n        this.#position = i;\\n        return;\\n      }\\n    }\\n    this.#commands.length = 0;\\n    this.#position = -1;\\n  }\\n\\n  destroy() {\\n    this.#commands = null;\\n  }\\n}\\n\\n\u002F**\\n * Class to handle the different keyboards shortcuts we can have on mac or\\n * non-mac OSes.\\n *\u002F\\nclass KeyboardManager {\\n  \u002F**\\n   * Create a new keyboard manager class.\\n   * @param {Array\u003CArray>} callbacks - an array containing an array of shortcuts\\n   * and a callback to call.\\n   * A shortcut is a string like `ctrl+c` or `mac+ctrl+c` for mac OS.\\n   *\u002F\\n  constructor(callbacks) {\\n    this.buffer = [];\\n    this.callbacks = new Map();\\n    this.allKeys = new Set();\\n\\n    const { isMac } = FeatureTest.platform;\\n    for (const [keys, callback, options = {}] of callbacks) {\\n      for (const key of keys) {\\n        const isMacKey = key.startsWith(\\\"mac+\\\");\\n        if (isMac && isMacKey) {\\n          this.callbacks.set(key.slice(4), { callback, options });\\n          this.allKeys.add(key.split(\\\"+\\\").at(-1));\\n        } else if (!isMac && !isMacKey) {\\n          this.callbacks.set(key, { callback, options });\\n          this.allKeys.add(key.split(\\\"+\\\").at(-1));\\n        }\\n      }\\n    }\\n  }\\n\\n  \u002F**\\n   * Serialize an event into a string in order to match a\\n   * potential key for a callback.\\n   * @param {KeyboardEvent} event\\n   * @returns {string}\\n   *\u002F\\n  #serialize(event) {\\n    if (event.altKey) {\\n      this.buffer.push(\\\"alt\\\");\\n    }\\n    if (event.ctrlKey) {\\n      this.buffer.push(\\\"ctrl\\\");\\n    }\\n    if (event.metaKey) {\\n      this.buffer.push(\\\"meta\\\");\\n    }\\n    if (event.shiftKey) {\\n      this.buffer.push(\\\"shift\\\");\\n    }\\n    this.buffer.push(event.key);\\n    const str = this.buffer.join(\\\"+\\\");\\n    this.buffer.length = 0;\\n\\n    return str;\\n  }\\n\\n  \u002F**\\n   * Execute a callback, if any, for a given keyboard event.\\n   * The self is used as `this` in the callback.\\n   * @param {Object} self\\n   * @param {KeyboardEvent} event\\n   * @returns\\n   *\u002F\\n  exec(self, event) {\\n    if (!this.allKeys.has(event.key)) {\\n      return;\\n    }\\n    const info = this.callbacks.get(this.#serialize(event));\\n    if (!info) {\\n      return;\\n    }\\n    const {\\n      callback,\\n      options: { bubbles = false, args = [], checker = null },\\n    } = info;\\n\\n    if (checker && !checker(self, event)) {\\n      return;\\n    }\\n    callback.bind(self, ...args, event)();\\n\\n    \u002F\u002F For example, ctrl+s in a FreeText must be handled by the viewer, hence\\n    \u002F\u002F the event must bubble.\\n    if (!bubbles) {\\n      stopEvent(event);\\n    }\\n  }\\n}\\n\\nclass ColorManager {\\n  static _colorsMapping = new Map([\\n    [\\\"CanvasText\\\", [0, 0, 0]],\\n    [\\\"Canvas\\\", [255, 255, 255]],\\n  ]);\\n\\n  get _colors() {\\n    if (\\n      typeof PDFJSDev !== \\\"undefined\\\" &&\\n      PDFJSDev.test(\\\"LIB\\\") &&\\n      typeof document === \\\"undefined\\\"\\n    ) {\\n      return shadow(this, \\\"_colors\\\", ColorManager._colorsMapping);\\n    }\\n\\n    const colors = new Map([\\n      [\\\"CanvasText\\\", null],\\n      [\\\"Canvas\\\", null],\\n    ]);\\n    getColorValues(colors);\\n    return shadow(this, \\\"_colors\\\", colors);\\n  }\\n\\n  \u002F**\\n   * In High Contrast Mode, the color on the screen is not always the\\n   * real color used in the pdf.\\n   * For example in some cases white can appear to be black but when saving\\n   * we want to have white.\\n   * @param {string} color\\n   * @returns {Array\u003Cnumber>}\\n   *\u002F\\n  convert(color) {\\n    const rgb = getRGB(color);\\n    if (!window.matchMedia(\\\"(forced-colors: active)\\\").matches) {\\n      return rgb;\\n    }\\n\\n    for (const [name, RGB] of this._colors) {\\n      if (RGB.every((x, i) => x === rgb[i])) {\\n        return ColorManager._colorsMapping.get(name);\\n      }\\n    }\\n    return rgb;\\n  }\\n\\n  \u002F**\\n   * An input element must have its color value as a hex string\\n   * and not as color name.\\n   * So this function converts a name into an hex string.\\n   * @param {string} name\\n   * @returns {string}\\n   *\u002F\\n  getHexCode(name) {\\n    const rgb = this._colors.get(name);\\n    if (!rgb) {\\n      return name;\\n    }\\n    return Util.makeHexColor(...rgb);\\n  }\\n}\\n\\n\u002F**\\n * A pdf has several pages and each of them when it will rendered\\n * will have an AnnotationEditorLayer which will contain the some\\n * new Annotations associated to an editor in order to modify them.\\n *\\n * This class is used to manage all the different layers, editors and\\n * some action like copy\u002Fpaste, undo\u002Fredo, ...\\n *\u002F\\nclass AnnotationEditorUIManager {\\n  #abortController = new AbortController();\\n\\n  #activeEditor = null;\\n\\n  #allEditors = new Map();\\n\\n  #allLayers = new Map();\\n\\n  #altTextManager = null;\\n\\n  #annotationStorage = null;\\n\\n  #changedExistingAnnotations = null;\\n\\n  #commandManager = new CommandManager();\\n\\n  #copyPasteAC = null;\\n\\n  #currentDrawingSession = null;\\n\\n  #currentPageIndex = 0;\\n\\n  #deletedAnnotationsElementIds = new Set();\\n\\n  #draggingEditors = null;\\n\\n  #editorTypes = null;\\n\\n  #editorsToRescale = new Set();\\n\\n  _editorUndoBar = null;\\n\\n  #enableHighlightFloatingButton = false;\\n\\n  #enableUpdatedAddImage = false;\\n\\n  #enableNewAltTextWhenAddingImage = false;\\n\\n  #filterFactory = null;\\n\\n  #focusMainContainerTimeoutId = null;\\n\\n  #focusManagerAC = null;\\n\\n  #highlightColors = null;\\n\\n  #highlightWhenShiftUp = false;\\n\\n  #highlightToolbar = null;\\n\\n  #idManager = new IdManager();\\n\\n  #isEnabled = false;\\n\\n  #isWaiting = false;\\n\\n  #keyboardManagerAC = null;\\n\\n  #lastActiveElement = null;\\n\\n  #mainHighlightColorPicker = null;\\n\\n  #missingCanvases = null;\\n\\n  #mlManager = null;\\n\\n  #mode = AnnotationEditorType.NONE;\\n\\n  #selectedEditors = new Set();\\n\\n  #selectedTextNode = null;\\n\\n  #signatureManager = null;\\n\\n  #pageColors = null;\\n\\n  #showAllStates = null;\\n\\n  #previousStates = {\\n    isEditing: false,\\n    isEmpty: true,\\n    hasSomethingToUndo: false,\\n    hasSomethingToRedo: false,\\n    hasSelectedEditor: false,\\n    hasSelectedText: false,\\n  };\\n\\n  #translation = [0, 0];\\n\\n  #translationTimeoutId = null;\\n\\n  #container = null;\\n\\n  #viewer = null;\\n\\n  #updateModeCapability = null;\\n\\n  static TRANSLATE_SMALL = 1; \u002F\u002F page units.\\n\\n  static TRANSLATE_BIG = 10; \u002F\u002F page units.\\n\\n  static get _keyboardManager() {\\n    const proto = AnnotationEditorUIManager.prototype;\\n\\n    \u002F**\\n     * If the focused element is an input, we don't want to handle the arrow.\\n     * For example, sliders can be controlled with the arrow keys.\\n     *\u002F\\n    const arrowChecker = self =>\\n      self.#container.contains(document.activeElement) &&\\n      document.activeElement.tagName !== \\\"BUTTON\\\" &&\\n      self.hasSomethingToControl();\\n\\n    const textInputChecker = (_self, { target: el }) => {\\n      if (el instanceof HTMLInputElement) {\\n        const { type } = el;\\n        return type !== \\\"text\\\" && type !== \\\"number\\\";\\n      }\\n      return true;\\n    };\\n\\n    const small = this.TRANSLATE_SMALL;\\n    const big = this.TRANSLATE_BIG;\\n\\n    return shadow(\\n      this,\\n      \\\"_keyboardManager\\\",\\n      new KeyboardManager([\\n        [\\n          [\\\"ctrl+a\\\", \\\"mac+meta+a\\\"],\\n          proto.selectAll,\\n          { checker: textInputChecker },\\n        ],\\n        [[\\\"ctrl+z\\\", \\\"mac+meta+z\\\"], proto.undo, { checker: textInputChecker }],\\n        [\\n          \u002F\u002F On mac, depending of the OS version, the event.key is either \\\"z\\\" or\\n          \u002F\u002F \\\"Z\\\" when the user presses \\\"meta+shift+z\\\".\\n          [\\n            \\\"ctrl+y\\\",\\n            \\\"ctrl+shift+z\\\",\\n            \\\"mac+meta+shift+z\\\",\\n            \\\"ctrl+shift+Z\\\",\\n            \\\"mac+meta+shift+Z\\\",\\n          ],\\n          proto.redo,\\n          { checker: textInputChecker },\\n        ],\\n        [\\n          [\\n            \\\"Backspace\\\",\\n            \\\"alt+Backspace\\\",\\n            \\\"ctrl+Backspace\\\",\\n            \\\"shift+Backspace\\\",\\n            \\\"mac+Backspace\\\",\\n            \\\"mac+alt+Backspace\\\",\\n            \\\"mac+ctrl+Backspace\\\",\\n            \\\"Delete\\\",\\n            \\\"ctrl+Delete\\\",\\n            \\\"shift+Delete\\\",\\n            \\\"mac+Delete\\\",\\n          ],\\n          proto.delete,\\n          { checker: textInputChecker },\\n        ],\\n        [\\n          [\\\"Enter\\\", \\\"mac+Enter\\\"],\\n          proto.addNewEditorFromKeyboard,\\n          {\\n            \u002F\u002F Those shortcuts can be used in the toolbar for some other actions\\n            \u002F\u002F like zooming, hence we need to check if the container has the\\n            \u002F\u002F focus.\\n            checker: (self, { target: el }) =>\\n              !(el instanceof HTMLButtonElement) &&\\n              self.#container.contains(el) &&\\n              !self.isEnterHandled,\\n          },\\n        ],\\n        [\\n          [\\\" \\\", \\\"mac+ \\\"],\\n          proto.addNewEditorFromKeyboard,\\n          {\\n            \u002F\u002F Those shortcuts can be used in the toolbar for some other actions\\n            \u002F\u002F like zooming, hence we need to check if the container has the\\n            \u002F\u002F focus.\\n            checker: (self, { target: el }) =>\\n              !(el instanceof HTMLButtonElement) &&\\n              self.#container.contains(document.activeElement),\\n          },\\n        ],\\n        [[\\\"Escape\\\", \\\"mac+Escape\\\"], proto.unselectAll],\\n        [\\n          [\\\"ArrowLeft\\\", \\\"mac+ArrowLeft\\\"],\\n          proto.translateSelectedEditors,\\n          { args: [-small, 0], checker: arrowChecker },\\n        ],\\n        [\\n          [\\\"ctrl+ArrowLeft\\\", \\\"mac+shift+ArrowLeft\\\"],\\n          proto.translateSelectedEditors,\\n          { args: [-big, 0], checker: arrowChecker },\\n        ],\\n        [\\n          [\\\"ArrowRight\\\", \\\"mac+ArrowRight\\\"],\\n          proto.translateSelectedEditors,\\n          { args: [small, 0], checker: arrowChecker },\\n        ],\\n        [\\n          [\\\"ctrl+ArrowRight\\\", \\\"mac+shift+ArrowRight\\\"],\\n          proto.translateSelectedEditors,\\n          { args: [big, 0], checker: arrowChecker },\\n        ],\\n        [\\n          [\\\"ArrowUp\\\", \\\"mac+ArrowUp\\\"],\\n          proto.translateSelectedEditors,\\n          { args: [0, -small], checker: arrowChecker },\\n        ],\\n        [\\n          [\\\"ctrl+ArrowUp\\\", \\\"mac+shift+ArrowUp\\\"],\\n          proto.translateSelectedEditors,\\n          { args: [0, -big], checker: arrowChecker },\\n        ],\\n        [\\n          [\\\"ArrowDown\\\", \\\"mac+ArrowDown\\\"],\\n          proto.translateSelectedEditors,\\n          { args: [0, small], checker: arrowChecker },\\n        ],\\n        [\\n          [\\\"ctrl+ArrowDown\\\", \\\"mac+shift+ArrowDown\\\"],\\n          proto.translateSelectedEditors,\\n          { args: [0, big], checker: arrowChecker },\\n        ],\\n      ])\\n    );\\n  }\\n\\n  constructor(\\n    container,\\n    viewer,\\n    altTextManager,\\n    signatureManager,\\n    eventBus,\\n    pdfDocument,\\n    pageColors,\\n    highlightColors,\\n    enableHighlightFloatingButton,\\n    enableUpdatedAddImage,\\n    enableNewAltTextWhenAddingImage,\\n    mlManager,\\n    editorUndoBar,\\n    supportsPinchToZoom\\n  ) {\\n    const signal = (this._signal = this.#abortController.signal);\\n    this.#container = container;\\n    this.#viewer = viewer;\\n    this.#altTextManager = altTextManager;\\n    this.#signatureManager = signatureManager;\\n    this._eventBus = eventBus;\\n    eventBus._on(\\\"editingaction\\\", this.onEditingAction.bind(this), { signal });\\n    eventBus._on(\\\"pagechanging\\\", this.onPageChanging.bind(this), { signal });\\n    eventBus._on(\\\"scalechanging\\\", this.onScaleChanging.bind(this), { signal });\\n    eventBus._on(\\\"rotationchanging\\\", this.onRotationChanging.bind(this), {\\n      signal,\\n    });\\n    eventBus._on(\\\"setpreference\\\", this.onSetPreference.bind(this), { signal });\\n    eventBus._on(\\n      \\\"switchannotationeditorparams\\\",\\n      evt => this.updateParams(evt.type, evt.value),\\n      { signal }\\n    );\\n    this.#addSelectionListener();\\n    this.#addDragAndDropListeners();\\n    this.#addKeyboardManager();\\n    this.#annotationStorage = pdfDocument.annotationStorage;\\n    this.#filterFactory = pdfDocument.filterFactory;\\n    this.#pageColors = pageColors;\\n    this.#highlightColors = highlightColors || null;\\n    this.#enableHighlightFloatingButton = enableHighlightFloatingButton;\\n    this.#enableUpdatedAddImage = enableUpdatedAddImage;\\n    this.#enableNewAltTextWhenAddingImage = enableNewAltTextWhenAddingImage;\\n    this.#mlManager = mlManager || null;\\n    this.viewParameters = {\\n      realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\\n      rotation: 0,\\n    };\\n    this.isShiftKeyDown = false;\\n    this._editorUndoBar = editorUndoBar || null;\\n    this._supportsPinchToZoom = supportsPinchToZoom !== false;\\n\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING\\\")) {\\n      Object.defineProperty(this, \\\"reset\\\", {\\n        value: () => {\\n          this.selectAll();\\n          this.delete();\\n          this.#idManager.reset();\\n        },\\n      });\\n    }\\n  }\\n\\n  destroy() {\\n    this.#updateModeCapability?.resolve();\\n    this.#updateModeCapability = null;\\n\\n    this.#abortController?.abort();\\n    this.#abortController = null;\\n    this._signal = null;\\n\\n    for (const layer of this.#allLayers.values()) {\\n      layer.destroy();\\n    }\\n    this.#allLayers.clear();\\n    this.#allEditors.clear();\\n    this.#editorsToRescale.clear();\\n    this.#missingCanvases?.clear();\\n    this.#activeEditor = null;\\n    this.#selectedEditors.clear();\\n    this.#commandManager.destroy();\\n    this.#altTextManager?.destroy();\\n    this.#signatureManager?.destroy();\\n    this.#highlightToolbar?.hide();\\n    this.#highlightToolbar = null;\\n    this.#mainHighlightColorPicker?.destroy();\\n    this.#mainHighlightColorPicker = null;\\n    if (this.#focusMainContainerTimeoutId) {\\n      clearTimeout(this.#focusMainContainerTimeoutId);\\n      this.#focusMainContainerTimeoutId = null;\\n    }\\n    if (this.#translationTimeoutId) {\\n      clearTimeout(this.#translationTimeoutId);\\n      this.#translationTimeoutId = null;\\n    }\\n    this._editorUndoBar?.destroy();\\n  }\\n\\n  combinedSignal(ac) {\\n    return AbortSignal.any([this._signal, ac.signal]);\\n  }\\n\\n  get mlManager() {\\n    return this.#mlManager;\\n  }\\n\\n  get useNewAltTextFlow() {\\n    return this.#enableUpdatedAddImage;\\n  }\\n\\n  get useNewAltTextWhenAddingImage() {\\n    return this.#enableNewAltTextWhenAddingImage;\\n  }\\n\\n  get hcmFilter() {\\n    return shadow(\\n      this,\\n      \\\"hcmFilter\\\",\\n      this.#pageColors\\n        ? this.#filterFactory.addHCMFilter(\\n            this.#pageColors.foreground,\\n            this.#pageColors.background\\n          )\\n        : \\\"none\\\"\\n    );\\n  }\\n\\n  get direction() {\\n    return shadow(\\n      this,\\n      \\\"direction\\\",\\n      getComputedStyle(this.#container).direction\\n    );\\n  }\\n\\n  get highlightColors() {\\n    return shadow(\\n      this,\\n      \\\"highlightColors\\\",\\n      this.#highlightColors\\n        ? new Map(\\n            this.#highlightColors\\n              .split(\\\",\\\")\\n              .map(pair => pair.split(\\\"=\\\").map(x => x.trim()))\\n          )\\n        : null\\n    );\\n  }\\n\\n  get highlightColorNames() {\\n    return shadow(\\n      this,\\n      \\\"highlightColorNames\\\",\\n      this.highlightColors\\n        ? new Map(Array.from(this.highlightColors, e => e.reverse()))\\n        : null\\n    );\\n  }\\n\\n  \u002F**\\n   * Set the current drawing session.\\n   * @param {AnnotationEditorLayer} layer\\n   *\u002F\\n  setCurrentDrawingSession(layer) {\\n    if (layer) {\\n      this.unselectAll();\\n      this.disableUserSelect(true);\\n    } else {\\n      this.disableUserSelect(false);\\n    }\\n    this.#currentDrawingSession = layer;\\n  }\\n\\n  setMainHighlightColorPicker(colorPicker) {\\n    this.#mainHighlightColorPicker = colorPicker;\\n  }\\n\\n  editAltText(editor, firstTime = false) {\\n    this.#altTextManager?.editAltText(this, editor, firstTime);\\n  }\\n\\n  getSignature(editor) {\\n    this.#signatureManager?.getSignature({ uiManager: this, editor });\\n  }\\n\\n  get signatureManager() {\\n    return this.#signatureManager;\\n  }\\n\\n  switchToMode(mode, callback) {\\n    \u002F\u002F Switching to a mode can be asynchronous.\\n    this._eventBus.on(\\\"annotationeditormodechanged\\\", callback, {\\n      once: true,\\n      signal: this._signal,\\n    });\\n    this._eventBus.dispatch(\\\"showannotationeditorui\\\", {\\n      source: this,\\n      mode,\\n    });\\n  }\\n\\n  setPreference(name, value) {\\n    this._eventBus.dispatch(\\\"setpreference\\\", {\\n      source: this,\\n      name,\\n      value,\\n    });\\n  }\\n\\n  onSetPreference({ name, value }) {\\n    switch (name) {\\n      case \\\"enableNewAltTextWhenAddingImage\\\":\\n        this.#enableNewAltTextWhenAddingImage = value;\\n        break;\\n    }\\n  }\\n\\n  onPageChanging({ pageNumber }) {\\n    this.#currentPageIndex = pageNumber - 1;\\n  }\\n\\n  focusMainContainer() {\\n    this.#container.focus();\\n  }\\n\\n  findParent(x, y) {\\n    for (const layer of this.#allLayers.values()) {\\n      const {\\n        x: layerX,\\n        y: layerY,\\n        width,\\n        height,\\n      } = layer.div.getBoundingClientRect();\\n      if (\\n        x >= layerX &&\\n        x \u003C= layerX + width &&\\n        y >= layerY &&\\n        y \u003C= layerY + height\\n      ) {\\n        return layer;\\n      }\\n    }\\n    return null;\\n  }\\n\\n  disableUserSelect(value = false) {\\n    this.#viewer.classList.toggle(\\\"noUserSelect\\\", value);\\n  }\\n\\n  addShouldRescale(editor) {\\n    this.#editorsToRescale.add(editor);\\n  }\\n\\n  removeShouldRescale(editor) {\\n    this.#editorsToRescale.delete(editor);\\n  }\\n\\n  onScaleChanging({ scale }) {\\n    this.commitOrRemove();\\n    this.viewParameters.realScale = scale * PixelsPerInch.PDF_TO_CSS_UNITS;\\n    for (const editor of this.#editorsToRescale) {\\n      editor.onScaleChanging();\\n    }\\n    this.#currentDrawingSession?.onScaleChanging();\\n  }\\n\\n  onRotationChanging({ pagesRotation }) {\\n    this.commitOrRemove();\\n    this.viewParameters.rotation = pagesRotation;\\n  }\\n\\n  #getAnchorElementForSelection({ anchorNode }) {\\n    return anchorNode.nodeType === Node.TEXT_NODE\\n      ? anchorNode.parentElement\\n      : anchorNode;\\n  }\\n\\n  #getLayerForTextLayer(textLayer) {\\n    const { currentLayer } = this;\\n    if (currentLayer.hasTextLayer(textLayer)) {\\n      return currentLayer;\\n    }\\n    for (const layer of this.#allLayers.values()) {\\n      if (layer.hasTextLayer(textLayer)) {\\n        return layer;\\n      }\\n    }\\n    return null;\\n  }\\n\\n  highlightSelection(methodOfCreation = \\\"\\\") {\\n    const selection = document.getSelection();\\n    if (!selection || selection.isCollapsed) {\\n      return;\\n    }\\n    const { anchorNode, anchorOffset, focusNode, focusOffset } = selection;\\n    const text = selection.toString();\\n    const anchorElement = this.#getAnchorElementForSelection(selection);\\n    const textLayer = anchorElement.closest(\\\".textLayer\\\");\\n    const boxes = this.getSelectionBoxes(textLayer);\\n    if (!boxes) {\\n      return;\\n    }\\n    selection.empty();\\n\\n    const layer = this.#getLayerForTextLayer(textLayer);\\n    const isNoneMode = this.#mode === AnnotationEditorType.NONE;\\n    const callback = () => {\\n      layer?.createAndAddNewEditor({ x: 0, y: 0 }, false, {\\n        methodOfCreation,\\n        boxes,\\n        anchorNode,\\n        anchorOffset,\\n        focusNode,\\n        focusOffset,\\n        text,\\n      });\\n      if (isNoneMode) {\\n        this.showAllEditors(\\\"highlight\\\", true, \u002F* updateButton = *\u002F true);\\n      }\\n    };\\n    if (isNoneMode) {\\n      this.switchToMode(AnnotationEditorType.HIGHLIGHT, callback);\\n      return;\\n    }\\n    callback();\\n  }\\n\\n  #displayHighlightToolbar() {\\n    const selection = document.getSelection();\\n    if (!selection || selection.isCollapsed) {\\n      return;\\n    }\\n    const anchorElement = this.#getAnchorElementForSelection(selection);\\n    const textLayer = anchorElement.closest(\\\".textLayer\\\");\\n    const boxes = this.getSelectionBoxes(textLayer);\\n    if (!boxes) {\\n      return;\\n    }\\n    this.#highlightToolbar ||= new HighlightToolbar(this);\\n    this.#highlightToolbar.show(textLayer, boxes, this.direction === \\\"ltr\\\");\\n  }\\n\\n  \u002F**\\n   * Add an editor in the annotation storage.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  addToAnnotationStorage(editor) {\\n    if (\\n      !editor.isEmpty() &&\\n      this.#annotationStorage &&\\n      !this.#annotationStorage.has(editor.id)\\n    ) {\\n      this.#annotationStorage.setValue(editor.id, editor);\\n    }\\n  }\\n\\n  #selectionChange() {\\n    const selection = document.getSelection();\\n    if (!selection || selection.isCollapsed) {\\n      if (this.#selectedTextNode) {\\n        this.#highlightToolbar?.hide();\\n        this.#selectedTextNode = null;\\n        this.#dispatchUpdateStates({\\n          hasSelectedText: false,\\n        });\\n      }\\n      return;\\n    }\\n    const { anchorNode } = selection;\\n    if (anchorNode === this.#selectedTextNode) {\\n      return;\\n    }\\n\\n    const anchorElement = this.#getAnchorElementForSelection(selection);\\n    const textLayer = anchorElement.closest(\\\".textLayer\\\");\\n    if (!textLayer) {\\n      if (this.#selectedTextNode) {\\n        this.#highlightToolbar?.hide();\\n        this.#selectedTextNode = null;\\n        this.#dispatchUpdateStates({\\n          hasSelectedText: false,\\n        });\\n      }\\n      return;\\n    }\\n\\n    this.#highlightToolbar?.hide();\\n    this.#selectedTextNode = anchorNode;\\n    this.#dispatchUpdateStates({\\n      hasSelectedText: true,\\n    });\\n\\n    if (\\n      this.#mode !== AnnotationEditorType.HIGHLIGHT &&\\n      this.#mode !== AnnotationEditorType.NONE\\n    ) {\\n      return;\\n    }\\n\\n    if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\\n      this.showAllEditors(\\\"highlight\\\", true, \u002F* updateButton = *\u002F true);\\n    }\\n\\n    this.#highlightWhenShiftUp = this.isShiftKeyDown;\\n    if (!this.isShiftKeyDown) {\\n      const activeLayer =\\n        this.#mode === AnnotationEditorType.HIGHLIGHT\\n          ? this.#getLayerForTextLayer(textLayer)\\n          : null;\\n      activeLayer?.toggleDrawing();\\n\\n      const ac = new AbortController();\\n      const signal = this.combinedSignal(ac);\\n\\n      const pointerup = e => {\\n        if (e.type === \\\"pointerup\\\" && e.button !== 0) {\\n          \u002F\u002F Do nothing on right click.\\n          return;\\n        }\\n        ac.abort();\\n        activeLayer?.toggleDrawing(true);\\n        if (e.type === \\\"pointerup\\\") {\\n          this.#onSelectEnd(\\\"main_toolbar\\\");\\n        }\\n      };\\n      window.addEventListener(\\\"pointerup\\\", pointerup, { signal });\\n      window.addEventListener(\\\"blur\\\", pointerup, { signal });\\n    }\\n  }\\n\\n  #onSelectEnd(methodOfCreation = \\\"\\\") {\\n    if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\\n      this.highlightSelection(methodOfCreation);\\n    } else if (this.#enableHighlightFloatingButton) {\\n      this.#displayHighlightToolbar();\\n    }\\n  }\\n\\n  #addSelectionListener() {\\n    document.addEventListener(\\n      \\\"selectionchange\\\",\\n      this.#selectionChange.bind(this),\\n      { signal: this._signal }\\n    );\\n  }\\n\\n  #addFocusManager() {\\n    if (this.#focusManagerAC) {\\n      return;\\n    }\\n    this.#focusManagerAC = new AbortController();\\n    const signal = this.combinedSignal(this.#focusManagerAC);\\n\\n    window.addEventListener(\\\"focus\\\", this.focus.bind(this), { signal });\\n    window.addEventListener(\\\"blur\\\", this.blur.bind(this), { signal });\\n  }\\n\\n  #removeFocusManager() {\\n    this.#focusManagerAC?.abort();\\n    this.#focusManagerAC = null;\\n  }\\n\\n  blur() {\\n    this.isShiftKeyDown = false;\\n    if (this.#highlightWhenShiftUp) {\\n      this.#highlightWhenShiftUp = false;\\n      this.#onSelectEnd(\\\"main_toolbar\\\");\\n    }\\n    if (!this.hasSelection) {\\n      return;\\n    }\\n    \u002F\u002F When several editors are selected and the window loses focus, we want to\\n    \u002F\u002F keep the last active element in order to be able to focus it again when\\n    \u002F\u002F the window gets the focus back but we don't want to trigger any focus\\n    \u002F\u002F callbacks else only one editor will be selected.\\n    const { activeElement } = document;\\n    for (const editor of this.#selectedEditors) {\\n      if (editor.div.contains(activeElement)) {\\n        this.#lastActiveElement = [editor, activeElement];\\n        editor._focusEventsAllowed = false;\\n        break;\\n      }\\n    }\\n  }\\n\\n  focus() {\\n    if (!this.#lastActiveElement) {\\n      return;\\n    }\\n    const [lastEditor, lastActiveElement] = this.#lastActiveElement;\\n    this.#lastActiveElement = null;\\n    lastActiveElement.addEventListener(\\n      \\\"focusin\\\",\\n      () => {\\n        lastEditor._focusEventsAllowed = true;\\n      },\\n      { once: true, signal: this._signal }\\n    );\\n    lastActiveElement.focus();\\n  }\\n\\n  #addKeyboardManager() {\\n    if (this.#keyboardManagerAC) {\\n      return;\\n    }\\n    this.#keyboardManagerAC = new AbortController();\\n    const signal = this.combinedSignal(this.#keyboardManagerAC);\\n\\n    \u002F\u002F The keyboard events are caught at the container level in order to be able\\n    \u002F\u002F to execute some callbacks even if the current page doesn't have focus.\\n    window.addEventListener(\\\"keydown\\\", this.keydown.bind(this), { signal });\\n    window.addEventListener(\\\"keyup\\\", this.keyup.bind(this), { signal });\\n  }\\n\\n  #removeKeyboardManager() {\\n    this.#keyboardManagerAC?.abort();\\n    this.#keyboardManagerAC = null;\\n  }\\n\\n  #addCopyPasteListeners() {\\n    if (this.#copyPasteAC) {\\n      return;\\n    }\\n    this.#copyPasteAC = new AbortController();\\n    const signal = this.combinedSignal(this.#copyPasteAC);\\n\\n    document.addEventListener(\\\"copy\\\", this.copy.bind(this), { signal });\\n    document.addEventListener(\\\"cut\\\", this.cut.bind(this), { signal });\\n    document.addEventListener(\\\"paste\\\", this.paste.bind(this), { signal });\\n  }\\n\\n  #removeCopyPasteListeners() {\\n    this.#copyPasteAC?.abort();\\n    this.#copyPasteAC = null;\\n  }\\n\\n  #addDragAndDropListeners() {\\n    const signal = this._signal;\\n    document.addEventListener(\\\"dragover\\\", this.dragOver.bind(this), { signal });\\n    document.addEventListener(\\\"drop\\\", this.drop.bind(this), { signal });\\n  }\\n\\n  addEditListeners() {\\n    this.#addKeyboardManager();\\n    this.#addCopyPasteListeners();\\n  }\\n\\n  removeEditListeners() {\\n    this.#removeKeyboardManager();\\n    this.#removeCopyPasteListeners();\\n  }\\n\\n  dragOver(event) {\\n    for (const { type } of event.dataTransfer.items) {\\n      for (const editorType of this.#editorTypes) {\\n        if (editorType.isHandlingMimeForPasting(type)) {\\n          event.dataTransfer.dropEffect = \\\"copy\\\";\\n          event.preventDefault();\\n          return;\\n        }\\n      }\\n    }\\n  }\\n\\n  \u002F**\\n   * Drop callback.\\n   * @param {DragEvent} event\\n   *\u002F\\n  drop(event) {\\n    for (const item of event.dataTransfer.items) {\\n      for (const editorType of this.#editorTypes) {\\n        if (editorType.isHandlingMimeForPasting(item.type)) {\\n          editorType.paste(item, this.currentLayer);\\n          event.preventDefault();\\n          return;\\n        }\\n      }\\n    }\\n  }\\n\\n  \u002F**\\n   * Copy callback.\\n   * @param {ClipboardEvent} event\\n   *\u002F\\n  copy(event) {\\n    event.preventDefault();\\n\\n    \u002F\u002F An editor is being edited so just commit it.\\n    this.#activeEditor?.commitOrRemove();\\n\\n    if (!this.hasSelection) {\\n      return;\\n    }\\n\\n    const editors = [];\\n    for (const editor of this.#selectedEditors) {\\n      const serialized = editor.serialize(\u002F* isForCopying = *\u002F true);\\n      if (serialized) {\\n        editors.push(serialized);\\n      }\\n    }\\n    if (editors.length === 0) {\\n      return;\\n    }\\n\\n    event.clipboardData.setData(\\\"application\u002Fpdfjs\\\", JSON.stringify(editors));\\n  }\\n\\n  \u002F**\\n   * Cut callback.\\n   * @param {ClipboardEvent} event\\n   *\u002F\\n  cut(event) {\\n    this.copy(event);\\n    this.delete();\\n  }\\n\\n  \u002F**\\n   * Paste callback.\\n   * @param {ClipboardEvent} event\\n   *\u002F\\n  async paste(event) {\\n    event.preventDefault();\\n    const { clipboardData } = event;\\n    for (const item of clipboardData.items) {\\n      for (const editorType of this.#editorTypes) {\\n        if (editorType.isHandlingMimeForPasting(item.type)) {\\n          editorType.paste(item, this.currentLayer);\\n          return;\\n        }\\n      }\\n    }\\n\\n    let data = clipboardData.getData(\\\"application\u002Fpdfjs\\\");\\n    if (!data) {\\n      return;\\n    }\\n\\n    try {\\n      data = JSON.parse(data);\\n    } catch (ex) {\\n      warn(`paste: \\\"${ex.message}\\\".`);\\n      return;\\n    }\\n\\n    if (!Array.isArray(data)) {\\n      return;\\n    }\\n\\n    this.unselectAll();\\n    const layer = this.currentLayer;\\n\\n    try {\\n      const newEditors = [];\\n      for (const editor of data) {\\n        const deserializedEditor = await layer.deserialize(editor);\\n        if (!deserializedEditor) {\\n          return;\\n        }\\n        newEditors.push(deserializedEditor);\\n      }\\n\\n      const cmd = () => {\\n        for (const editor of newEditors) {\\n          this.#addEditorToLayer(editor);\\n        }\\n        this.#selectEditors(newEditors);\\n      };\\n      const undo = () => {\\n        for (const editor of newEditors) {\\n          editor.remove();\\n        }\\n      };\\n      this.addCommands({ cmd, undo, mustExec: true });\\n    } catch (ex) {\\n      warn(`paste: \\\"${ex.message}\\\".`);\\n    }\\n  }\\n\\n  \u002F**\\n   * Keydown callback.\\n   * @param {KeyboardEvent} event\\n   *\u002F\\n  keydown(event) {\\n    if (!this.isShiftKeyDown && event.key === \\\"Shift\\\") {\\n      this.isShiftKeyDown = true;\\n    }\\n    if (\\n      this.#mode !== AnnotationEditorType.NONE &&\\n      !this.isEditorHandlingKeyboard\\n    ) {\\n      AnnotationEditorUIManager._keyboardManager.exec(this, event);\\n    }\\n  }\\n\\n  \u002F**\\n   * Keyup callback.\\n   * @param {KeyboardEvent} event\\n   *\u002F\\n  keyup(event) {\\n    if (this.isShiftKeyDown && event.key === \\\"Shift\\\") {\\n      this.isShiftKeyDown = false;\\n      if (this.#highlightWhenShiftUp) {\\n        this.#highlightWhenShiftUp = false;\\n        this.#onSelectEnd(\\\"main_toolbar\\\");\\n      }\\n    }\\n  }\\n\\n  \u002F**\\n   * Execute an action for a given name.\\n   * For example, the user can click on the \\\"Undo\\\" entry in the context menu\\n   * and it'll trigger the undo action.\\n   *\u002F\\n  onEditingAction({ name }) {\\n    switch (name) {\\n      case \\\"undo\\\":\\n      case \\\"redo\\\":\\n      case \\\"delete\\\":\\n      case \\\"selectAll\\\":\\n        this[name]();\\n        break;\\n      case \\\"highlightSelection\\\":\\n        this.highlightSelection(\\\"context_menu\\\");\\n        break;\\n    }\\n  }\\n\\n  \u002F**\\n   * Update the different possible states of this manager, e.g. is there\\n   * something to undo, redo, ...\\n   * @param {Object} details\\n   *\u002F\\n  #dispatchUpdateStates(details) {\\n    const hasChanged = Object.entries(details).some(\\n      ([key, value]) => this.#previousStates[key] !== value\\n    );\\n\\n    if (hasChanged) {\\n      this._eventBus.dispatch(\\\"annotationeditorstateschanged\\\", {\\n        source: this,\\n        details: Object.assign(this.#previousStates, details),\\n      });\\n      \u002F\u002F We could listen on our own event but it sounds like a bit weird and\\n      \u002F\u002F it's a way to simpler to handle that stuff here instead of having to\\n      \u002F\u002F add something in every place where an editor can be unselected.\\n      if (\\n        this.#mode === AnnotationEditorType.HIGHLIGHT &&\\n        details.hasSelectedEditor === false\\n      ) {\\n        this.#dispatchUpdateUI([\\n          [AnnotationEditorParamsType.HIGHLIGHT_FREE, true],\\n        ]);\\n      }\\n    }\\n  }\\n\\n  #dispatchUpdateUI(details) {\\n    this._eventBus.dispatch(\\\"annotationeditorparamschanged\\\", {\\n      source: this,\\n      details,\\n    });\\n  }\\n\\n  \u002F**\\n   * Set the editing state.\\n   * It can be useful to temporarily disable it when the user is editing a\\n   * FreeText annotation.\\n   * @param {boolean} isEditing\\n   *\u002F\\n  setEditingState(isEditing) {\\n    if (isEditing) {\\n      this.#addFocusManager();\\n      this.#addCopyPasteListeners();\\n      this.#dispatchUpdateStates({\\n        isEditing: this.#mode !== AnnotationEditorType.NONE,\\n        isEmpty: this.#isEmpty(),\\n        hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\\n        hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\\n        hasSelectedEditor: false,\\n      });\\n    } else {\\n      this.#removeFocusManager();\\n      this.#removeCopyPasteListeners();\\n      this.#dispatchUpdateStates({\\n        isEditing: false,\\n      });\\n      this.disableUserSelect(false);\\n    }\\n  }\\n\\n  registerEditorTypes(types) {\\n    if (this.#editorTypes) {\\n      return;\\n    }\\n    this.#editorTypes = types;\\n    for (const editorType of this.#editorTypes) {\\n      this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\\n    }\\n  }\\n\\n  \u002F**\\n   * Get an id.\\n   * @returns {string}\\n   *\u002F\\n  getId() {\\n    return this.#idManager.id;\\n  }\\n\\n  get currentLayer() {\\n    return this.#allLayers.get(this.#currentPageIndex);\\n  }\\n\\n  getLayer(pageIndex) {\\n    return this.#allLayers.get(pageIndex);\\n  }\\n\\n  get currentPageIndex() {\\n    return this.#currentPageIndex;\\n  }\\n\\n  \u002F**\\n   * Add a new layer for a page which will contains the editors.\\n   * @param {AnnotationEditorLayer} layer\\n   *\u002F\\n  addLayer(layer) {\\n    this.#allLayers.set(layer.pageIndex, layer);\\n    if (this.#isEnabled) {\\n      layer.enable();\\n    } else {\\n      layer.disable();\\n    }\\n  }\\n\\n  \u002F**\\n   * Remove a layer.\\n   * @param {AnnotationEditorLayer} layer\\n   *\u002F\\n  removeLayer(layer) {\\n    this.#allLayers.delete(layer.pageIndex);\\n  }\\n\\n  \u002F**\\n   * Change the editor mode (None, FreeText, Ink, ...)\\n   * @param {number} mode\\n   * @param {string|null} editId\\n   * @param {boolean} [isFromKeyboard] - true if the mode change is due to a\\n   *   keyboard action.\\n   *\u002F\\n  async updateMode(mode, editId = null, isFromKeyboard = false) {\\n    if (this.#mode === mode) {\\n      return;\\n    }\\n\\n    if (this.#updateModeCapability) {\\n      await this.#updateModeCapability.promise;\\n      if (!this.#updateModeCapability) {\\n        \u002F\u002F This ui manager has been destroyed.\\n        return;\\n      }\\n    }\\n\\n    this.#updateModeCapability = Promise.withResolvers();\\n    this.#currentDrawingSession?.commitOrRemove();\\n\\n    this.#mode = mode;\\n    if (mode === AnnotationEditorType.NONE) {\\n      this.setEditingState(false);\\n      this.#disableAll();\\n\\n      this._editorUndoBar?.hide();\\n\\n      this.#updateModeCapability.resolve();\\n      return;\\n    }\\n    if (mode === AnnotationEditorType.SIGNATURE) {\\n      await this.#signatureManager?.loadSignatures();\\n    }\\n    this.setEditingState(true);\\n    await this.#enableAll();\\n    this.unselectAll();\\n    for (const layer of this.#allLayers.values()) {\\n      layer.updateMode(mode);\\n    }\\n    if (!editId) {\\n      if (isFromKeyboard) {\\n        this.addNewEditorFromKeyboard();\\n      }\\n\\n      this.#updateModeCapability.resolve();\\n      return;\\n    }\\n\\n    for (const editor of this.#allEditors.values()) {\\n      if (editor.annotationElementId === editId || editor.id === editId) {\\n        this.setSelected(editor);\\n        editor.enterInEditMode();\\n      } else {\\n        editor.unselect();\\n      }\\n    }\\n\\n    this.#updateModeCapability.resolve();\\n  }\\n\\n  addNewEditorFromKeyboard() {\\n    if (this.currentLayer.canCreateNewEmptyEditor()) {\\n      this.currentLayer.addNewEditor();\\n    }\\n  }\\n\\n  \u002F**\\n   * Update the toolbar if it's required to reflect the tool currently used.\\n   * @param {Object} options\\n   * @param {number} mode\\n   * @returns {undefined}\\n   *\u002F\\n  updateToolbar(options) {\\n    if (options.mode === this.#mode) {\\n      return;\\n    }\\n    this._eventBus.dispatch(\\\"switchannotationeditormode\\\", {\\n      source: this,\\n      ...options,\\n    });\\n  }\\n\\n  \u002F**\\n   * Update a parameter in the current editor or globally.\\n   * @param {number} type\\n   * @param {*} value\\n   *\u002F\\n  updateParams(type, value) {\\n    if (!this.#editorTypes) {\\n      return;\\n    }\\n\\n    switch (type) {\\n      case AnnotationEditorParamsType.CREATE:\\n        this.currentLayer.addNewEditor(value);\\n        return;\\n      case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\\n        this.#mainHighlightColorPicker?.updateColor(value);\\n        break;\\n      case AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL:\\n        this._eventBus.dispatch(\\\"reporttelemetry\\\", {\\n          source: this,\\n          details: {\\n            type: \\\"editing\\\",\\n            data: {\\n              type: \\\"highlight\\\",\\n              action: \\\"toggle_visibility\\\",\\n            },\\n          },\\n        });\\n        (this.#showAllStates ||= new Map()).set(type, value);\\n        this.showAllEditors(\\\"highlight\\\", value);\\n        break;\\n    }\\n\\n    for (const editor of this.#selectedEditors) {\\n      editor.updateParams(type, value);\\n    }\\n\\n    for (const editorType of this.#editorTypes) {\\n      editorType.updateDefaultParams(type, value);\\n    }\\n  }\\n\\n  showAllEditors(type, visible, updateButton = false) {\\n    for (const editor of this.#allEditors.values()) {\\n      if (editor.editorType === type) {\\n        editor.show(visible);\\n      }\\n    }\\n    const state =\\n      this.#showAllStates?.get(AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL) ??\\n      true;\\n    if (state !== visible) {\\n      this.#dispatchUpdateUI([\\n        [AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL, visible],\\n      ]);\\n    }\\n  }\\n\\n  enableWaiting(mustWait = false) {\\n    if (this.#isWaiting === mustWait) {\\n      return;\\n    }\\n    this.#isWaiting = mustWait;\\n    for (const layer of this.#allLayers.values()) {\\n      if (mustWait) {\\n        layer.disableClick();\\n      } else {\\n        layer.enableClick();\\n      }\\n      layer.div.classList.toggle(\\\"waiting\\\", mustWait);\\n    }\\n  }\\n\\n  \u002F**\\n   * Enable all the layers.\\n   *\u002F\\n  async #enableAll() {\\n    if (!this.#isEnabled) {\\n      this.#isEnabled = true;\\n      const promises = [];\\n      for (const layer of this.#allLayers.values()) {\\n        promises.push(layer.enable());\\n      }\\n      await Promise.all(promises);\\n      for (const editor of this.#allEditors.values()) {\\n        editor.enable();\\n      }\\n    }\\n  }\\n\\n  \u002F**\\n   * Disable all the layers.\\n   *\u002F\\n  #disableAll() {\\n    this.unselectAll();\\n    if (this.#isEnabled) {\\n      this.#isEnabled = false;\\n      for (const layer of this.#allLayers.values()) {\\n        layer.disable();\\n      }\\n      for (const editor of this.#allEditors.values()) {\\n        editor.disable();\\n      }\\n    }\\n  }\\n\\n  \u002F**\\n   * Get all the editors belonging to a given page.\\n   * @param {number} pageIndex\\n   * @returns {Array\u003CAnnotationEditor>}\\n   *\u002F\\n  getEditors(pageIndex) {\\n    const editors = [];\\n    for (const editor of this.#allEditors.values()) {\\n      if (editor.pageIndex === pageIndex) {\\n        editors.push(editor);\\n      }\\n    }\\n    return editors;\\n  }\\n\\n  \u002F**\\n   * Get an editor with the given id.\\n   * @param {string} id\\n   * @returns {AnnotationEditor}\\n   *\u002F\\n  getEditor(id) {\\n    return this.#allEditors.get(id);\\n  }\\n\\n  \u002F**\\n   * Add a new editor.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  addEditor(editor) {\\n    this.#allEditors.set(editor.id, editor);\\n  }\\n\\n  \u002F**\\n   * Remove an editor.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  removeEditor(editor) {\\n    if (editor.div.contains(document.activeElement)) {\\n      if (this.#focusMainContainerTimeoutId) {\\n        clearTimeout(this.#focusMainContainerTimeoutId);\\n      }\\n      this.#focusMainContainerTimeoutId = setTimeout(() => {\\n        \u002F\u002F When the div is removed from DOM the focus can move on the\\n        \u002F\u002F document.body, so we need to move it back to the main container.\\n        this.focusMainContainer();\\n        this.#focusMainContainerTimeoutId = null;\\n      }, 0);\\n    }\\n    this.#allEditors.delete(editor.id);\\n    if (editor.annotationElementId) {\\n      this.#missingCanvases?.delete(editor.annotationElementId);\\n    }\\n    this.unselect(editor);\\n    if (\\n      !editor.annotationElementId ||\\n      !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)\\n    ) {\\n      this.#annotationStorage?.remove(editor.id);\\n    }\\n  }\\n\\n  \u002F**\\n   * The annotation element with the given id has been deleted.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  addDeletedAnnotationElement(editor) {\\n    this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\\n    this.addChangedExistingAnnotation(editor);\\n    editor.deleted = true;\\n  }\\n\\n  \u002F**\\n   * Check if the annotation element with the given id has been deleted.\\n   * @param {string} annotationElementId\\n   * @returns {boolean}\\n   *\u002F\\n  isDeletedAnnotationElement(annotationElementId) {\\n    return this.#deletedAnnotationsElementIds.has(annotationElementId);\\n  }\\n\\n  \u002F**\\n   * The annotation element with the given id have been restored.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  removeDeletedAnnotationElement(editor) {\\n    this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\\n    this.removeChangedExistingAnnotation(editor);\\n    editor.deleted = false;\\n  }\\n\\n  \u002F**\\n   * Add an editor to the layer it belongs to or add it to the global map.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  #addEditorToLayer(editor) {\\n    const layer = this.#allLayers.get(editor.pageIndex);\\n    if (layer) {\\n      layer.addOrRebuild(editor);\\n    } else {\\n      this.addEditor(editor);\\n      this.addToAnnotationStorage(editor);\\n    }\\n  }\\n\\n  \u002F**\\n   * Set the given editor as the active one.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  setActiveEditor(editor) {\\n    if (this.#activeEditor === editor) {\\n      return;\\n    }\\n\\n    this.#activeEditor = editor;\\n    if (editor) {\\n      this.#dispatchUpdateUI(editor.propertiesToUpdate);\\n    }\\n  }\\n\\n  get #lastSelectedEditor() {\\n    let ed = null;\\n    for (ed of this.#selectedEditors) {\\n      \u002F\u002F Iterate to get the last element.\\n    }\\n    return ed;\\n  }\\n\\n  \u002F**\\n   * Update the UI of the active editor.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  updateUI(editor) {\\n    if (this.#lastSelectedEditor === editor) {\\n      this.#dispatchUpdateUI(editor.propertiesToUpdate);\\n    }\\n  }\\n\\n  updateUIForDefaultProperties(editorType) {\\n    this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\\n  }\\n\\n  \u002F**\\n   * Add or remove an editor the current selection.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  toggleSelected(editor) {\\n    if (this.#selectedEditors.has(editor)) {\\n      this.#selectedEditors.delete(editor);\\n      editor.unselect();\\n      this.#dispatchUpdateStates({\\n        hasSelectedEditor: this.hasSelection,\\n      });\\n      return;\\n    }\\n    this.#selectedEditors.add(editor);\\n    editor.select();\\n    this.#dispatchUpdateUI(editor.propertiesToUpdate);\\n    this.#dispatchUpdateStates({\\n      hasSelectedEditor: true,\\n    });\\n  }\\n\\n  \u002F**\\n   * Set the last selected editor.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  setSelected(editor) {\\n    this.#currentDrawingSession?.commitOrRemove();\\n    for (const ed of this.#selectedEditors) {\\n      if (ed !== editor) {\\n        ed.unselect();\\n      }\\n    }\\n    this.#selectedEditors.clear();\\n\\n    this.#selectedEditors.add(editor);\\n    editor.select();\\n    this.#dispatchUpdateUI(editor.propertiesToUpdate);\\n    this.#dispatchUpdateStates({\\n      hasSelectedEditor: true,\\n    });\\n  }\\n\\n  \u002F**\\n   * Check if the editor is selected.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  isSelected(editor) {\\n    return this.#selectedEditors.has(editor);\\n  }\\n\\n  get firstSelectedEditor() {\\n    return this.#selectedEditors.values().next().value;\\n  }\\n\\n  \u002F**\\n   * Unselect an editor.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  unselect(editor) {\\n    editor.unselect();\\n    this.#selectedEditors.delete(editor);\\n    this.#dispatchUpdateStates({\\n      hasSelectedEditor: this.hasSelection,\\n    });\\n  }\\n\\n  get hasSelection() {\\n    return this.#selectedEditors.size !== 0;\\n  }\\n\\n  get isEnterHandled() {\\n    return (\\n      this.#selectedEditors.size === 1 &&\\n      this.firstSelectedEditor.isEnterHandled\\n    );\\n  }\\n\\n  \u002F**\\n   * Undo the last command.\\n   *\u002F\\n  undo() {\\n    this.#commandManager.undo();\\n    this.#dispatchUpdateStates({\\n      hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\\n      hasSomethingToRedo: true,\\n      isEmpty: this.#isEmpty(),\\n    });\\n    this._editorUndoBar?.hide();\\n  }\\n\\n  \u002F**\\n   * Redo the last undoed command.\\n   *\u002F\\n  redo() {\\n    this.#commandManager.redo();\\n    this.#dispatchUpdateStates({\\n      hasSomethingToUndo: true,\\n      hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\\n      isEmpty: this.#isEmpty(),\\n    });\\n  }\\n\\n  \u002F**\\n   * Add a command to execute (cmd) and another one to undo it.\\n   * @param {Object} params\\n   *\u002F\\n  addCommands(params) {\\n    this.#commandManager.add(params);\\n    this.#dispatchUpdateStates({\\n      hasSomethingToUndo: true,\\n      hasSomethingToRedo: false,\\n      isEmpty: this.#isEmpty(),\\n    });\\n  }\\n\\n  cleanUndoStack(type) {\\n    this.#commandManager.cleanType(type);\\n  }\\n\\n  #isEmpty() {\\n    if (this.#allEditors.size === 0) {\\n      return true;\\n    }\\n\\n    if (this.#allEditors.size === 1) {\\n      for (const editor of this.#allEditors.values()) {\\n        return editor.isEmpty();\\n      }\\n    }\\n\\n    return false;\\n  }\\n\\n  \u002F**\\n   * Delete the current editor or all.\\n   *\u002F\\n  delete() {\\n    this.commitOrRemove();\\n    const drawingEditor = this.currentLayer?.endDrawingSession(\\n      \u002F* isAborted = *\u002F true\\n    );\\n    if (!this.hasSelection && !drawingEditor) {\\n      return;\\n    }\\n\\n    const editors = drawingEditor\\n      ? [drawingEditor]\\n      : [...this.#selectedEditors];\\n    const cmd = () => {\\n      this._editorUndoBar?.show(\\n        undo,\\n        editors.length === 1 ? editors[0].editorType : editors.length\\n      );\\n      for (const editor of editors) {\\n        editor.remove();\\n      }\\n    };\\n    const undo = () => {\\n      for (const editor of editors) {\\n        this.#addEditorToLayer(editor);\\n      }\\n    };\\n\\n    this.addCommands({ cmd, undo, mustExec: true });\\n  }\\n\\n  commitOrRemove() {\\n    \u002F\u002F An editor is being edited so just commit it.\\n    this.#activeEditor?.commitOrRemove();\\n  }\\n\\n  hasSomethingToControl() {\\n    return this.#activeEditor || this.hasSelection;\\n  }\\n\\n  \u002F**\\n   * Select the editors.\\n   * @param {Array\u003CAnnotationEditor>} editors\\n   *\u002F\\n  #selectEditors(editors) {\\n    for (const editor of this.#selectedEditors) {\\n      editor.unselect();\\n    }\\n    this.#selectedEditors.clear();\\n    for (const editor of editors) {\\n      if (editor.isEmpty()) {\\n        continue;\\n      }\\n      this.#selectedEditors.add(editor);\\n      editor.select();\\n    }\\n    this.#dispatchUpdateStates({ hasSelectedEditor: this.hasSelection });\\n  }\\n\\n  \u002F**\\n   * Select all the editors.\\n   *\u002F\\n  selectAll() {\\n    for (const editor of this.#selectedEditors) {\\n      editor.commit();\\n    }\\n    this.#selectEditors(this.#allEditors.values());\\n  }\\n\\n  \u002F**\\n   * Unselect all the selected editors.\\n   *\u002F\\n  unselectAll() {\\n    if (this.#activeEditor) {\\n      \u002F\u002F An editor is being edited so just commit it.\\n      this.#activeEditor.commitOrRemove();\\n      if (this.#mode !== AnnotationEditorType.NONE) {\\n        \u002F\u002F If the mode is NONE, we want to really unselect the editor, hence we\\n        \u002F\u002F mustn't return here.\\n        return;\\n      }\\n    }\\n\\n    if (this.#currentDrawingSession?.commitOrRemove()) {\\n      return;\\n    }\\n\\n    if (!this.hasSelection) {\\n      return;\\n    }\\n    for (const editor of this.#selectedEditors) {\\n      editor.unselect();\\n    }\\n    this.#selectedEditors.clear();\\n    this.#dispatchUpdateStates({\\n      hasSelectedEditor: false,\\n    });\\n  }\\n\\n  translateSelectedEditors(x, y, noCommit = false) {\\n    if (!noCommit) {\\n      this.commitOrRemove();\\n    }\\n    if (!this.hasSelection) {\\n      return;\\n    }\\n\\n    this.#translation[0] += x;\\n    this.#translation[1] += y;\\n    const [totalX, totalY] = this.#translation;\\n    const editors = [...this.#selectedEditors];\\n\\n    \u002F\u002F We don't want to have an undo\u002Fredo for each translation so we wait a bit\\n    \u002F\u002F before adding the command to the command manager.\\n    const TIME_TO_WAIT = 1000;\\n\\n    if (this.#translationTimeoutId) {\\n      clearTimeout(this.#translationTimeoutId);\\n    }\\n\\n    this.#translationTimeoutId = setTimeout(() => {\\n      this.#translationTimeoutId = null;\\n      this.#translation[0] = this.#translation[1] = 0;\\n\\n      this.addCommands({\\n        cmd: () => {\\n          for (const editor of editors) {\\n            if (this.#allEditors.has(editor.id)) {\\n              editor.translateInPage(totalX, totalY);\\n              editor.translationDone();\\n            }\\n          }\\n        },\\n        undo: () => {\\n          for (const editor of editors) {\\n            if (this.#allEditors.has(editor.id)) {\\n              editor.translateInPage(-totalX, -totalY);\\n              editor.translationDone();\\n            }\\n          }\\n        },\\n        mustExec: false,\\n      });\\n    }, TIME_TO_WAIT);\\n\\n    for (const editor of editors) {\\n      editor.translateInPage(x, y);\\n      editor.translationDone();\\n    }\\n  }\\n\\n  \u002F**\\n   * Set up the drag session for moving the selected editors.\\n   *\u002F\\n  setUpDragSession() {\\n    \u002F\u002F Note: don't use any references to the editor's parent which can be null\\n    \u002F\u002F if the editor belongs to a destroyed page.\\n    if (!this.hasSelection) {\\n      return;\\n    }\\n    \u002F\u002F Avoid to have spurious text selection in the text layer when dragging.\\n    this.disableUserSelect(true);\\n    this.#draggingEditors = new Map();\\n    for (const editor of this.#selectedEditors) {\\n      this.#draggingEditors.set(editor, {\\n        savedX: editor.x,\\n        savedY: editor.y,\\n        savedPageIndex: editor.pageIndex,\\n        newX: 0,\\n        newY: 0,\\n        newPageIndex: -1,\\n      });\\n    }\\n  }\\n\\n  \u002F**\\n   * Ends the drag session.\\n   * @returns {boolean} true if at least one editor has been moved.\\n   *\u002F\\n  endDragSession() {\\n    if (!this.#draggingEditors) {\\n      return false;\\n    }\\n    this.disableUserSelect(false);\\n    const map = this.#draggingEditors;\\n    this.#draggingEditors = null;\\n    let mustBeAddedInUndoStack = false;\\n\\n    for (const [{ x, y, pageIndex }, value] of map) {\\n      value.newX = x;\\n      value.newY = y;\\n      value.newPageIndex = pageIndex;\\n      mustBeAddedInUndoStack ||=\\n        x !== value.savedX ||\\n        y !== value.savedY ||\\n        pageIndex !== value.savedPageIndex;\\n    }\\n\\n    if (!mustBeAddedInUndoStack) {\\n      return false;\\n    }\\n\\n    const move = (editor, x, y, pageIndex) => {\\n      if (this.#allEditors.has(editor.id)) {\\n        \u002F\u002F The editor can be undone\u002Fredone on a page which is not visible (and\\n        \u002F\u002F which potentially has no annotation editor layer), hence we need to\\n        \u002F\u002F use the pageIndex instead of the parent.\\n        const parent = this.#allLayers.get(pageIndex);\\n        if (parent) {\\n          editor._setParentAndPosition(parent, x, y);\\n        } else {\\n          editor.pageIndex = pageIndex;\\n          editor.x = x;\\n          editor.y = y;\\n        }\\n      }\\n    };\\n\\n    this.addCommands({\\n      cmd: () => {\\n        for (const [editor, { newX, newY, newPageIndex }] of map) {\\n          move(editor, newX, newY, newPageIndex);\\n        }\\n      },\\n      undo: () => {\\n        for (const [editor, { savedX, savedY, savedPageIndex }] of map) {\\n          move(editor, savedX, savedY, savedPageIndex);\\n        }\\n      },\\n      mustExec: true,\\n    });\\n\\n    return true;\\n  }\\n\\n  \u002F**\\n   * Drag the set of selected editors.\\n   * @param {number} tx\\n   * @param {number} ty\\n   *\u002F\\n  dragSelectedEditors(tx, ty) {\\n    if (!this.#draggingEditors) {\\n      return;\\n    }\\n    for (const editor of this.#draggingEditors.keys()) {\\n      editor.drag(tx, ty);\\n    }\\n  }\\n\\n  \u002F**\\n   * Rebuild the editor (usually on undo\u002Fredo actions) on a potentially\\n   * non-rendered page.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  rebuild(editor) {\\n    if (editor.parent === null) {\\n      const parent = this.getLayer(editor.pageIndex);\\n      if (parent) {\\n        parent.changeParent(editor);\\n        parent.addOrRebuild(editor);\\n      } else {\\n        this.addEditor(editor);\\n        this.addToAnnotationStorage(editor);\\n        editor.rebuild();\\n      }\\n    } else {\\n      editor.parent.addOrRebuild(editor);\\n    }\\n  }\\n\\n  get isEditorHandlingKeyboard() {\\n    return (\\n      this.getActive()?.shouldGetKeyboardEvents() ||\\n      (this.#selectedEditors.size === 1 &&\\n        this.firstSelectedEditor.shouldGetKeyboardEvents())\\n    );\\n  }\\n\\n  \u002F**\\n   * Is the current editor the one passed as argument?\\n   * @param {AnnotationEditor} editor\\n   * @returns\\n   *\u002F\\n  isActive(editor) {\\n    return this.#activeEditor === editor;\\n  }\\n\\n  \u002F**\\n   * Get the current active editor.\\n   * @returns {AnnotationEditor|null}\\n   *\u002F\\n  getActive() {\\n    return this.#activeEditor;\\n  }\\n\\n  \u002F**\\n   * Get the current editor mode.\\n   * @returns {number}\\n   *\u002F\\n  getMode() {\\n    return this.#mode;\\n  }\\n\\n  get imageManager() {\\n    return shadow(this, \\\"imageManager\\\", new ImageManager());\\n  }\\n\\n  getSelectionBoxes(textLayer) {\\n    if (!textLayer) {\\n      return null;\\n    }\\n    const selection = document.getSelection();\\n    for (let i = 0, ii = selection.rangeCount; i \u003C ii; i++) {\\n      if (\\n        !textLayer.contains(selection.getRangeAt(i).commonAncestorContainer)\\n      ) {\\n        return null;\\n      }\\n    }\\n\\n    const {\\n      x: layerX,\\n      y: layerY,\\n      width: parentWidth,\\n      height: parentHeight,\\n    } = textLayer.getBoundingClientRect();\\n\\n    \u002F\u002F We must rotate the boxes because we want to have them in the non-rotated\\n    \u002F\u002F page coordinates.\\n    let rotator;\\n    switch (textLayer.getAttribute(\\\"data-main-rotation\\\")) {\\n      case \\\"90\\\":\\n        rotator = (x, y, w, h) => ({\\n          x: (y - layerY) \u002F parentHeight,\\n          y: 1 - (x + w - layerX) \u002F parentWidth,\\n          width: h \u002F parentHeight,\\n          height: w \u002F parentWidth,\\n        });\\n        break;\\n      case \\\"180\\\":\\n        rotator = (x, y, w, h) => ({\\n          x: 1 - (x + w - layerX) \u002F parentWidth,\\n          y: 1 - (y + h - layerY) \u002F parentHeight,\\n          width: w \u002F parentWidth,\\n          height: h \u002F parentHeight,\\n        });\\n        break;\\n      case \\\"270\\\":\\n        rotator = (x, y, w, h) => ({\\n          x: 1 - (y + h - layerY) \u002F parentHeight,\\n          y: (x - layerX) \u002F parentWidth,\\n          width: h \u002F parentHeight,\\n          height: w \u002F parentWidth,\\n        });\\n        break;\\n      default:\\n        rotator = (x, y, w, h) => ({\\n          x: (x - layerX) \u002F parentWidth,\\n          y: (y - layerY) \u002F parentHeight,\\n          width: w \u002F parentWidth,\\n          height: h \u002F parentHeight,\\n        });\\n        break;\\n    }\\n\\n    const boxes = [];\\n    for (let i = 0, ii = selection.rangeCount; i \u003C ii; i++) {\\n      const range = selection.getRangeAt(i);\\n      if (range.collapsed) {\\n        continue;\\n      }\\n      for (const { x, y, width, height } of range.getClientRects()) {\\n        if (width === 0 || height === 0) {\\n          continue;\\n        }\\n        boxes.push(rotator(x, y, width, height));\\n      }\\n    }\\n    return boxes.length === 0 ? null : boxes;\\n  }\\n\\n  addChangedExistingAnnotation({ annotationElementId, id }) {\\n    (this.#changedExistingAnnotations ||= new Map()).set(\\n      annotationElementId,\\n      id\\n    );\\n  }\\n\\n  removeChangedExistingAnnotation({ annotationElementId }) {\\n    this.#changedExistingAnnotations?.delete(annotationElementId);\\n  }\\n\\n  renderAnnotationElement(annotation) {\\n    const editorId = this.#changedExistingAnnotations?.get(annotation.data.id);\\n    if (!editorId) {\\n      return;\\n    }\\n    const editor = this.#annotationStorage.getRawValue(editorId);\\n    if (!editor) {\\n      return;\\n    }\\n    if (this.#mode === AnnotationEditorType.NONE && !editor.hasBeenModified) {\\n      return;\\n    }\\n    editor.renderAnnotationElement(annotation);\\n  }\\n\\n  setMissingCanvas(annotationId, annotationElementId, canvas) {\\n    const editor = this.#missingCanvases?.get(annotationId);\\n    if (!editor) {\\n      return;\\n    }\\n    editor.setCanvas(annotationElementId, canvas);\\n    this.#missingCanvases.delete(annotationId);\\n  }\\n\\n  addMissingCanvas(annotationId, editor) {\\n    (this.#missingCanvases ||= new Map()).set(annotationId, editor);\\n  }\\n}\\n\\nexport {\\n  AnnotationEditorUIManager,\\n  bindEvents,\\n  ColorManager,\\n  CommandManager,\\n  KeyboardManager,\\n};\\n\",\"\u002F* Copyright 2023 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { noContextMenu } from \\\"..\u002Fdisplay_utils.js\\\";\\n\\nclass AltText {\\n  #altText = null;\\n\\n  #altTextDecorative = false;\\n\\n  #altTextButton = null;\\n\\n  #altTextButtonLabel = null;\\n\\n  #altTextTooltip = null;\\n\\n  #altTextTooltipTimeout = null;\\n\\n  #altTextWasFromKeyBoard = false;\\n\\n  #badge = null;\\n\\n  #editor = null;\\n\\n  #guessedText = null;\\n\\n  #textWithDisclaimer = null;\\n\\n  #useNewAltTextFlow = false;\\n\\n  static #l10nNewButton = null;\\n\\n  static _l10n = null;\\n\\n  constructor(editor) {\\n    this.#editor = editor;\\n    this.#useNewAltTextFlow = editor._uiManager.useNewAltTextFlow;\\n\\n    AltText.#l10nNewButton ||= Object.freeze({\\n      added: \\\"pdfjs-editor-new-alt-text-added-button\\\",\\n      \\\"added-label\\\": \\\"pdfjs-editor-new-alt-text-added-button-label\\\",\\n      missing: \\\"pdfjs-editor-new-alt-text-missing-button\\\",\\n      \\\"missing-label\\\": \\\"pdfjs-editor-new-alt-text-missing-button-label\\\",\\n      review: \\\"pdfjs-editor-new-alt-text-to-review-button\\\",\\n      \\\"review-label\\\": \\\"pdfjs-editor-new-alt-text-to-review-button-label\\\",\\n    });\\n  }\\n\\n  static initialize(l10n) {\\n    AltText._l10n ??= l10n;\\n  }\\n\\n  async render() {\\n    const altText = (this.#altTextButton = document.createElement(\\\"button\\\"));\\n    altText.className = \\\"altText\\\";\\n    altText.tabIndex = \\\"0\\\";\\n\\n    const label = (this.#altTextButtonLabel = document.createElement(\\\"span\\\"));\\n    altText.append(label);\\n\\n    if (this.#useNewAltTextFlow) {\\n      altText.classList.add(\\\"new\\\");\\n      altText.setAttribute(\\\"data-l10n-id\\\", AltText.#l10nNewButton.missing);\\n      label.setAttribute(\\n        \\\"data-l10n-id\\\",\\n        AltText.#l10nNewButton[\\\"missing-label\\\"]\\n      );\\n    } else {\\n      altText.setAttribute(\\\"data-l10n-id\\\", \\\"pdfjs-editor-alt-text-button\\\");\\n      label.setAttribute(\\\"data-l10n-id\\\", \\\"pdfjs-editor-alt-text-button-label\\\");\\n    }\\n\\n    const signal = this.#editor._uiManager._signal;\\n    altText.addEventListener(\\\"contextmenu\\\", noContextMenu, { signal });\\n    altText.addEventListener(\\\"pointerdown\\\", event => event.stopPropagation(), {\\n      signal,\\n    });\\n\\n    const onClick = event => {\\n      event.preventDefault();\\n      this.#editor._uiManager.editAltText(this.#editor);\\n      if (this.#useNewAltTextFlow) {\\n        this.#editor._reportTelemetry({\\n          action: \\\"pdfjs.image.alt_text.image_status_label_clicked\\\",\\n          data: { label: this.#label },\\n        });\\n      }\\n    };\\n    altText.addEventListener(\\\"click\\\", onClick, { capture: true, signal });\\n    altText.addEventListener(\\n      \\\"keydown\\\",\\n      event => {\\n        if (event.target === altText && event.key === \\\"Enter\\\") {\\n          this.#altTextWasFromKeyBoard = true;\\n          onClick(event);\\n        }\\n      },\\n      { signal }\\n    );\\n    await this.#setState();\\n\\n    return altText;\\n  }\\n\\n  get #label() {\\n    return (\\n      (this.#altText && \\\"added\\\") ||\\n      (this.#altText === null && this.guessedText && \\\"review\\\") ||\\n      \\\"missing\\\"\\n    );\\n  }\\n\\n  finish() {\\n    if (!this.#altTextButton) {\\n      return;\\n    }\\n    this.#altTextButton.focus({ focusVisible: this.#altTextWasFromKeyBoard });\\n    this.#altTextWasFromKeyBoard = false;\\n  }\\n\\n  isEmpty() {\\n    if (this.#useNewAltTextFlow) {\\n      return this.#altText === null;\\n    }\\n    return !this.#altText && !this.#altTextDecorative;\\n  }\\n\\n  hasData() {\\n    if (this.#useNewAltTextFlow) {\\n      return this.#altText !== null || !!this.#guessedText;\\n    }\\n    return this.isEmpty();\\n  }\\n\\n  get guessedText() {\\n    return this.#guessedText;\\n  }\\n\\n  async setGuessedText(guessedText) {\\n    if (this.#altText !== null) {\\n      \u002F\u002F The user provided their own alt text, so we don't want to overwrite it.\\n      return;\\n    }\\n    this.#guessedText = guessedText;\\n    this.#textWithDisclaimer = await AltText._l10n.get(\\n      \\\"pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer\\\",\\n      { generatedAltText: guessedText }\\n    );\\n    this.#setState();\\n  }\\n\\n  toggleAltTextBadge(visibility = false) {\\n    if (!this.#useNewAltTextFlow || this.#altText) {\\n      this.#badge?.remove();\\n      this.#badge = null;\\n      return;\\n    }\\n    if (!this.#badge) {\\n      const badge = (this.#badge = document.createElement(\\\"div\\\"));\\n      badge.className = \\\"noAltTextBadge\\\";\\n      this.#editor.div.append(badge);\\n    }\\n    this.#badge.classList.toggle(\\\"hidden\\\", !visibility);\\n  }\\n\\n  serialize(isForCopying) {\\n    let altText = this.#altText;\\n    if (!isForCopying && this.#guessedText === altText) {\\n      altText = this.#textWithDisclaimer;\\n    }\\n    return {\\n      altText,\\n      decorative: this.#altTextDecorative,\\n      guessedText: this.#guessedText,\\n      textWithDisclaimer: this.#textWithDisclaimer,\\n    };\\n  }\\n\\n  get data() {\\n    return {\\n      altText: this.#altText,\\n      decorative: this.#altTextDecorative,\\n    };\\n  }\\n\\n  \u002F**\\n   * Set the alt text data.\\n   *\u002F\\n  set data({\\n    altText,\\n    decorative,\\n    guessedText,\\n    textWithDisclaimer,\\n    cancel = false,\\n  }) {\\n    if (guessedText) {\\n      this.#guessedText = guessedText;\\n      this.#textWithDisclaimer = textWithDisclaimer;\\n    }\\n    if (this.#altText === altText && this.#altTextDecorative === decorative) {\\n      return;\\n    }\\n    if (!cancel) {\\n      this.#altText = altText;\\n      this.#altTextDecorative = decorative;\\n    }\\n    this.#setState();\\n  }\\n\\n  toggle(enabled = false) {\\n    if (!this.#altTextButton) {\\n      return;\\n    }\\n    if (!enabled && this.#altTextTooltipTimeout) {\\n      clearTimeout(this.#altTextTooltipTimeout);\\n      this.#altTextTooltipTimeout = null;\\n    }\\n    this.#altTextButton.disabled = !enabled;\\n  }\\n\\n  shown() {\\n    this.#editor._reportTelemetry({\\n      action: \\\"pdfjs.image.alt_text.image_status_label_displayed\\\",\\n      data: { label: this.#label },\\n    });\\n  }\\n\\n  destroy() {\\n    this.#altTextButton?.remove();\\n    this.#altTextButton = null;\\n    this.#altTextButtonLabel = null;\\n    this.#altTextTooltip = null;\\n    this.#badge?.remove();\\n    this.#badge = null;\\n  }\\n\\n  async #setState() {\\n    const button = this.#altTextButton;\\n    if (!button) {\\n      return;\\n    }\\n\\n    if (this.#useNewAltTextFlow) {\\n      button.classList.toggle(\\\"done\\\", !!this.#altText);\\n      button.setAttribute(\\\"data-l10n-id\\\", AltText.#l10nNewButton[this.#label]);\\n\\n      this.#altTextButtonLabel?.setAttribute(\\n        \\\"data-l10n-id\\\",\\n        AltText.#l10nNewButton[`${this.#label}-label`]\\n      );\\n      if (!this.#altText) {\\n        this.#altTextTooltip?.remove();\\n        return;\\n      }\\n    } else {\\n      if (!this.#altText && !this.#altTextDecorative) {\\n        button.classList.remove(\\\"done\\\");\\n        this.#altTextTooltip?.remove();\\n        return;\\n      }\\n      button.classList.add(\\\"done\\\");\\n      button.setAttribute(\\\"data-l10n-id\\\", \\\"pdfjs-editor-alt-text-edit-button\\\");\\n    }\\n\\n    let tooltip = this.#altTextTooltip;\\n    if (!tooltip) {\\n      this.#altTextTooltip = tooltip = document.createElement(\\\"span\\\");\\n      tooltip.className = \\\"tooltip\\\";\\n      tooltip.setAttribute(\\\"role\\\", \\\"tooltip\\\");\\n      tooltip.id = `alt-text-tooltip-${this.#editor.id}`;\\n\\n      const DELAY_TO_SHOW_TOOLTIP = 100;\\n      const signal = this.#editor._uiManager._signal;\\n      signal.addEventListener(\\n        \\\"abort\\\",\\n        () => {\\n          clearTimeout(this.#altTextTooltipTimeout);\\n          this.#altTextTooltipTimeout = null;\\n        },\\n        { once: true }\\n      );\\n      button.addEventListener(\\n        \\\"mouseenter\\\",\\n        () => {\\n          this.#altTextTooltipTimeout = setTimeout(() => {\\n            this.#altTextTooltipTimeout = null;\\n            this.#altTextTooltip.classList.add(\\\"show\\\");\\n            this.#editor._reportTelemetry({\\n              action: \\\"alt_text_tooltip\\\",\\n            });\\n          }, DELAY_TO_SHOW_TOOLTIP);\\n        },\\n        { signal }\\n      );\\n      button.addEventListener(\\n        \\\"mouseleave\\\",\\n        () => {\\n          if (this.#altTextTooltipTimeout) {\\n            clearTimeout(this.#altTextTooltipTimeout);\\n            this.#altTextTooltipTimeout = null;\\n          }\\n          this.#altTextTooltip?.classList.remove(\\\"show\\\");\\n        },\\n        { signal }\\n      );\\n    }\\n    if (this.#altTextDecorative) {\\n      tooltip.setAttribute(\\n        \\\"data-l10n-id\\\",\\n        \\\"pdfjs-editor-alt-text-decorative-tooltip\\\"\\n      );\\n    } else {\\n      tooltip.removeAttribute(\\\"data-l10n-id\\\");\\n      tooltip.textContent = this.#altText;\\n    }\\n\\n    if (!tooltip.parentNode) {\\n      button.append(tooltip);\\n    }\\n\\n    const element = this.#editor.getElementForAltText();\\n    element?.setAttribute(\\\"aria-describedby\\\", tooltip.id);\\n  }\\n}\\n\\nexport { AltText };\\n\",\"\u002F* Copyright 2024 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { OutputScale, stopEvent } from \\\".\u002Fdisplay_utils.js\\\";\\n\\nclass TouchManager {\\n  #container;\\n\\n  #isPinching = false;\\n\\n  #isPinchingStopped = null;\\n\\n  #isPinchingDisabled;\\n\\n  #onPinchStart;\\n\\n  #onPinching;\\n\\n  #onPinchEnd;\\n\\n  #pointerDownAC = null;\\n\\n  #signal;\\n\\n  #touchInfo = null;\\n\\n  #touchManagerAC;\\n\\n  #touchMoveAC = null;\\n\\n  constructor({\\n    container,\\n    isPinchingDisabled = null,\\n    isPinchingStopped = null,\\n    onPinchStart = null,\\n    onPinching = null,\\n    onPinchEnd = null,\\n    signal,\\n  }) {\\n    this.#container = container;\\n    this.#isPinchingStopped = isPinchingStopped;\\n    this.#isPinchingDisabled = isPinchingDisabled;\\n    this.#onPinchStart = onPinchStart;\\n    this.#onPinching = onPinching;\\n    this.#onPinchEnd = onPinchEnd;\\n    this.#touchManagerAC = new AbortController();\\n    this.#signal = AbortSignal.any([signal, this.#touchManagerAC.signal]);\\n\\n    container.addEventListener(\\\"touchstart\\\", this.#onTouchStart.bind(this), {\\n      passive: false,\\n      signal: this.#signal,\\n    });\\n  }\\n\\n  \u002F**\\n   * NOTE: Don't shadow this value since `devicePixelRatio` may change if the\\n   * window resolution changes, e.g. if the viewer is moved to another monitor.\\n   *\u002F\\n  get MIN_TOUCH_DISTANCE_TO_PINCH() {\\n    \u002F\u002F The 35 is coming from:\\n    \u002F\u002F  https:\u002F\u002Fsearchfox.org\u002Fmozilla-central\u002Fsource\u002Fgfx\u002Flayers\u002Fapz\u002Fsrc\u002FGestureEventListener.cpp#36\\n    \u002F\u002F\\n    \u002F\u002F The properties TouchEvent::screenX\u002FY are in screen CSS pixels:\\n    \u002F\u002F  https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FTouch\u002FscreenX#examples\\n    \u002F\u002F MIN_TOUCH_DISTANCE_TO_PINCH is in CSS pixels.\\n    return 35 \u002F OutputScale.pixelRatio;\\n  }\\n\\n  #onTouchStart(evt) {\\n    if (this.#isPinchingDisabled?.()) {\\n      return;\\n    }\\n\\n    if (evt.touches.length === 1) {\\n      if (this.#pointerDownAC) {\\n        return;\\n      }\\n      const pointerDownAC = (this.#pointerDownAC = new AbortController());\\n      const signal = AbortSignal.any([this.#signal, pointerDownAC.signal]);\\n      const container = this.#container;\\n\\n      \u002F\u002F We want to have the events at the capture phase to make sure we can\\n      \u002F\u002F cancel them.\\n      const opts = { capture: true, signal, passive: false };\\n      const cancelPointerDown = e => {\\n        if (e.pointerType === \\\"touch\\\") {\\n          this.#pointerDownAC?.abort();\\n          this.#pointerDownAC = null;\\n        }\\n      };\\n      container.addEventListener(\\n        \\\"pointerdown\\\",\\n        e => {\\n          if (e.pointerType === \\\"touch\\\") {\\n            \u002F\u002F This is the second finger so we don't want it select something\\n            \u002F\u002F or whatever.\\n            stopEvent(e);\\n            cancelPointerDown(e);\\n          }\\n        },\\n        opts\\n      );\\n      container.addEventListener(\\\"pointerup\\\", cancelPointerDown, opts);\\n      container.addEventListener(\\\"pointercancel\\\", cancelPointerDown, opts);\\n      return;\\n    }\\n\\n    if (!this.#touchMoveAC) {\\n      this.#touchMoveAC = new AbortController();\\n      const signal = AbortSignal.any([this.#signal, this.#touchMoveAC.signal]);\\n      const container = this.#container;\\n\\n      const opt = { signal, capture: false, passive: false };\\n      container.addEventListener(\\n        \\\"touchmove\\\",\\n        this.#onTouchMove.bind(this),\\n        opt\\n      );\\n      const onTouchEnd = this.#onTouchEnd.bind(this);\\n      container.addEventListener(\\\"touchend\\\", onTouchEnd, opt);\\n      container.addEventListener(\\\"touchcancel\\\", onTouchEnd, opt);\\n\\n      opt.capture = true;\\n      container.addEventListener(\\\"pointerdown\\\", stopEvent, opt);\\n      container.addEventListener(\\\"pointermove\\\", stopEvent, opt);\\n      container.addEventListener(\\\"pointercancel\\\", stopEvent, opt);\\n      container.addEventListener(\\\"pointerup\\\", stopEvent, opt);\\n      this.#onPinchStart?.();\\n    }\\n\\n    stopEvent(evt);\\n\\n    if (evt.touches.length !== 2 || this.#isPinchingStopped?.()) {\\n      this.#touchInfo = null;\\n      return;\\n    }\\n\\n    let [touch0, touch1] = evt.touches;\\n    if (touch0.identifier > touch1.identifier) {\\n      [touch0, touch1] = [touch1, touch0];\\n    }\\n    this.#touchInfo = {\\n      touch0X: touch0.screenX,\\n      touch0Y: touch0.screenY,\\n      touch1X: touch1.screenX,\\n      touch1Y: touch1.screenY,\\n    };\\n  }\\n\\n  #onTouchMove(evt) {\\n    if (!this.#touchInfo || evt.touches.length !== 2) {\\n      return;\\n    }\\n\\n    stopEvent(evt);\\n\\n    let [touch0, touch1] = evt.touches;\\n    if (touch0.identifier > touch1.identifier) {\\n      [touch0, touch1] = [touch1, touch0];\\n    }\\n    const { screenX: screen0X, screenY: screen0Y } = touch0;\\n    const { screenX: screen1X, screenY: screen1Y } = touch1;\\n    const touchInfo = this.#touchInfo;\\n    const {\\n      touch0X: pTouch0X,\\n      touch0Y: pTouch0Y,\\n      touch1X: pTouch1X,\\n      touch1Y: pTouch1Y,\\n    } = touchInfo;\\n\\n    const prevGapX = pTouch1X - pTouch0X;\\n    const prevGapY = pTouch1Y - pTouch0Y;\\n    const currGapX = screen1X - screen0X;\\n    const currGapY = screen1Y - screen0Y;\\n\\n    const distance = Math.hypot(currGapX, currGapY) || 1;\\n    const pDistance = Math.hypot(prevGapX, prevGapY) || 1;\\n    if (\\n      !this.#isPinching &&\\n      Math.abs(pDistance - distance) \u003C= TouchManager.MIN_TOUCH_DISTANCE_TO_PINCH\\n    ) {\\n      return;\\n    }\\n\\n    touchInfo.touch0X = screen0X;\\n    touchInfo.touch0Y = screen0Y;\\n    touchInfo.touch1X = screen1X;\\n    touchInfo.touch1Y = screen1Y;\\n\\n    if (!this.#isPinching) {\\n      \u002F\u002F Start pinching.\\n      this.#isPinching = true;\\n\\n      \u002F\u002F We return here else the first pinch is a bit too much\\n      return;\\n    }\\n\\n    const origin = [(screen0X + screen1X) \u002F 2, (screen0Y + screen1Y) \u002F 2];\\n    this.#onPinching?.(origin, pDistance, distance);\\n  }\\n\\n  #onTouchEnd(evt) {\\n    if (evt.touches.length >= 2) {\\n      return;\\n    }\\n    \u002F\u002F #touchMoveAC shouldn't be null but it seems that irl it can (see #19793).\\n    if (this.#touchMoveAC) {\\n      this.#touchMoveAC.abort();\\n      this.#touchMoveAC = null;\\n      this.#onPinchEnd?.();\\n    }\\n\\n    if (!this.#touchInfo) {\\n      return;\\n    }\\n    stopEvent(evt);\\n    this.#touchInfo = null;\\n    this.#isPinching = false;\\n  }\\n\\n  destroy() {\\n    this.#touchManagerAC?.abort();\\n    this.#touchManagerAC = null;\\n    this.#pointerDownAC?.abort();\\n    this.#pointerDownAC = null;\\n  }\\n}\\n\\nexport { TouchManager };\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fannotation_editor_layer.js\\\").AnnotationEditorLayer} AnnotationEditorLayer *\u002F\\n\\nimport {\\n  AnnotationEditorUIManager,\\n  bindEvents,\\n  ColorManager,\\n  KeyboardManager,\\n} from \\\".\u002Ftools.js\\\";\\nimport {\\n  FeatureTest,\\n  MathClamp,\\n  shadow,\\n  unreachable,\\n} from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport { noContextMenu, stopEvent } from \\\"..\u002Fdisplay_utils.js\\\";\\nimport { AltText } from \\\".\u002Falt_text.js\\\";\\nimport { EditorToolbar } from \\\".\u002Ftoolbar.js\\\";\\nimport { TouchManager } from \\\"..\u002Ftouch_manager.js\\\";\\n\\n\u002F**\\n * @typedef {Object} AnnotationEditorParameters\\n * @property {AnnotationEditorUIManager} uiManager - the global manager\\n * @property {AnnotationEditorLayer} parent - the layer containing this editor\\n * @property {string} id - editor id\\n * @property {number} x - x-coordinate\\n * @property {number} y - y-coordinate\\n *\u002F\\n\\n\u002F**\\n * Base class for editors.\\n *\u002F\\nclass AnnotationEditor {\\n  #accessibilityData = null;\\n\\n  #allResizerDivs = null;\\n\\n  #altText = null;\\n\\n  #disabled = false;\\n\\n  #dragPointerId = null;\\n\\n  #dragPointerType = \\\"\\\";\\n\\n  #keepAspectRatio = false;\\n\\n  #resizersDiv = null;\\n\\n  #lastPointerCoords = null;\\n\\n  #savedDimensions = null;\\n\\n  #focusAC = null;\\n\\n  #focusedResizerName = \\\"\\\";\\n\\n  #hasBeenClicked = false;\\n\\n  #initialRect = null;\\n\\n  #isEditing = false;\\n\\n  #isInEditMode = false;\\n\\n  #isResizerEnabledForKeyboard = false;\\n\\n  #moveInDOMTimeout = null;\\n\\n  #prevDragX = 0;\\n\\n  #prevDragY = 0;\\n\\n  #telemetryTimeouts = null;\\n\\n  #touchManager = null;\\n\\n  isSelected = false;\\n\\n  _isCopy = false;\\n\\n  _editToolbar = null;\\n\\n  _initialOptions = Object.create(null);\\n\\n  _initialData = null;\\n\\n  _isVisible = true;\\n\\n  _uiManager = null;\\n\\n  _focusEventsAllowed = true;\\n\\n  static _l10n = null;\\n\\n  static _l10nResizer = null;\\n\\n  #isDraggable = false;\\n\\n  #zIndex = AnnotationEditor._zIndex++;\\n\\n  static _borderLineWidth = -1;\\n\\n  static _colorManager = new ColorManager();\\n\\n  static _zIndex = 1;\\n\\n  \u002F\u002F Time to wait (in ms) before sending the telemetry data.\\n  \u002F\u002F We wait a bit to avoid sending too many requests when changing something\\n  \u002F\u002F like the thickness of a line.\\n  static _telemetryTimeout = 1000;\\n\\n  static get _resizerKeyboardManager() {\\n    const resize = AnnotationEditor.prototype._resizeWithKeyboard;\\n    const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\\n    const big = AnnotationEditorUIManager.TRANSLATE_BIG;\\n\\n    return shadow(\\n      this,\\n      \\\"_resizerKeyboardManager\\\",\\n      new KeyboardManager([\\n        [[\\\"ArrowLeft\\\", \\\"mac+ArrowLeft\\\"], resize, { args: [-small, 0] }],\\n        [\\n          [\\\"ctrl+ArrowLeft\\\", \\\"mac+shift+ArrowLeft\\\"],\\n          resize,\\n          { args: [-big, 0] },\\n        ],\\n        [[\\\"ArrowRight\\\", \\\"mac+ArrowRight\\\"], resize, { args: [small, 0] }],\\n        [\\n          [\\\"ctrl+ArrowRight\\\", \\\"mac+shift+ArrowRight\\\"],\\n          resize,\\n          { args: [big, 0] },\\n        ],\\n        [[\\\"ArrowUp\\\", \\\"mac+ArrowUp\\\"], resize, { args: [0, -small] }],\\n        [[\\\"ctrl+ArrowUp\\\", \\\"mac+shift+ArrowUp\\\"], resize, { args: [0, -big] }],\\n        [[\\\"ArrowDown\\\", \\\"mac+ArrowDown\\\"], resize, { args: [0, small] }],\\n        [[\\\"ctrl+ArrowDown\\\", \\\"mac+shift+ArrowDown\\\"], resize, { args: [0, big] }],\\n        [\\n          [\\\"Escape\\\", \\\"mac+Escape\\\"],\\n          AnnotationEditor.prototype._stopResizingWithKeyboard,\\n        ],\\n      ])\\n    );\\n  }\\n\\n  \u002F**\\n   * @param {AnnotationEditorParameters} parameters\\n   *\u002F\\n  constructor(parameters) {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      this.constructor === AnnotationEditor\\n    ) {\\n      unreachable(\\\"Cannot initialize AnnotationEditor.\\\");\\n    }\\n\\n    this.parent = parameters.parent;\\n    this.id = parameters.id;\\n    this.width = this.height = null;\\n    this.pageIndex = parameters.parent.pageIndex;\\n    this.name = parameters.name;\\n    this.div = null;\\n    this._uiManager = parameters.uiManager;\\n    this.annotationElementId = null;\\n    this._willKeepAspectRatio = false;\\n    this._initialOptions.isCentered = parameters.isCentered;\\n    this._structTreeParentId = null;\\n\\n    const {\\n      rotation,\\n      rawDims: { pageWidth, pageHeight, pageX, pageY },\\n    } = this.parent.viewport;\\n\\n    this.rotation = rotation;\\n    this.pageRotation =\\n      (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\\n    this.pageDimensions = [pageWidth, pageHeight];\\n    this.pageTranslation = [pageX, pageY];\\n\\n    const [width, height] = this.parentDimensions;\\n    this.x = parameters.x \u002F width;\\n    this.y = parameters.y \u002F height;\\n\\n    this.isAttachedToDOM = false;\\n    this.deleted = false;\\n  }\\n\\n  get editorType() {\\n    return Object.getPrototypeOf(this).constructor._type;\\n  }\\n\\n  static get isDrawer() {\\n    return false;\\n  }\\n\\n  static get _defaultLineColor() {\\n    return shadow(\\n      this,\\n      \\\"_defaultLineColor\\\",\\n      this._colorManager.getHexCode(\\\"CanvasText\\\")\\n    );\\n  }\\n\\n  static deleteAnnotationElement(editor) {\\n    const fakeEditor = new FakeEditor({\\n      id: editor.parent.getNextId(),\\n      parent: editor.parent,\\n      uiManager: editor._uiManager,\\n    });\\n    fakeEditor.annotationElementId = editor.annotationElementId;\\n    fakeEditor.deleted = true;\\n    fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);\\n  }\\n\\n  \u002F**\\n   * Initialize the l10n stuff for this type of editor.\\n   * @param {Object} l10n\\n   *\u002F\\n  static initialize(l10n, _uiManager) {\\n    AnnotationEditor._l10n ??= l10n;\\n\\n    AnnotationEditor._l10nResizer ||= Object.freeze({\\n      topLeft: \\\"pdfjs-editor-resizer-top-left\\\",\\n      topMiddle: \\\"pdfjs-editor-resizer-top-middle\\\",\\n      topRight: \\\"pdfjs-editor-resizer-top-right\\\",\\n      middleRight: \\\"pdfjs-editor-resizer-middle-right\\\",\\n      bottomRight: \\\"pdfjs-editor-resizer-bottom-right\\\",\\n      bottomMiddle: \\\"pdfjs-editor-resizer-bottom-middle\\\",\\n      bottomLeft: \\\"pdfjs-editor-resizer-bottom-left\\\",\\n      middleLeft: \\\"pdfjs-editor-resizer-middle-left\\\",\\n    });\\n\\n    if (AnnotationEditor._borderLineWidth !== -1) {\\n      return;\\n    }\\n    const style = getComputedStyle(document.documentElement);\\n    AnnotationEditor._borderLineWidth =\\n      parseFloat(style.getPropertyValue(\\\"--outline-width\\\")) || 0;\\n  }\\n\\n  \u002F**\\n   * Update the default parameters for this type of editor.\\n   * @param {number} _type\\n   * @param {*} _value\\n   *\u002F\\n  static updateDefaultParams(_type, _value) {}\\n\\n  \u002F**\\n   * Get the default properties to set in the UI for this type of editor.\\n   * @returns {Array}\\n   *\u002F\\n  static get defaultPropertiesToUpdate() {\\n    return [];\\n  }\\n\\n  \u002F**\\n   * Check if this kind of editor is able to handle the given mime type for\\n   * pasting.\\n   * @param {string} mime\\n   * @returns {boolean}\\n   *\u002F\\n  static isHandlingMimeForPasting(mime) {\\n    return false;\\n  }\\n\\n  \u002F**\\n   * Extract the data from the clipboard item and delegate the creation of the\\n   * editor to the parent.\\n   * @param {DataTransferItem} item\\n   * @param {AnnotationEditorLayer} parent\\n   *\u002F\\n  static paste(item, parent) {\\n    unreachable(\\\"Not implemented\\\");\\n  }\\n\\n  \u002F**\\n   * Get the properties to update in the UI for this editor.\\n   * @returns {Array}\\n   *\u002F\\n  get propertiesToUpdate() {\\n    return [];\\n  }\\n\\n  get _isDraggable() {\\n    return this.#isDraggable;\\n  }\\n\\n  set _isDraggable(value) {\\n    this.#isDraggable = value;\\n    this.div?.classList.toggle(\\\"draggable\\\", value);\\n  }\\n\\n  \u002F**\\n   * @returns {boolean} true if the editor handles the Enter key itself.\\n   *\u002F\\n  get isEnterHandled() {\\n    return true;\\n  }\\n\\n  center() {\\n    const [pageWidth, pageHeight] = this.pageDimensions;\\n    switch (this.parentRotation) {\\n      case 90:\\n        this.x -= (this.height * pageHeight) \u002F (pageWidth * 2);\\n        this.y += (this.width * pageWidth) \u002F (pageHeight * 2);\\n        break;\\n      case 180:\\n        this.x += this.width \u002F 2;\\n        this.y += this.height \u002F 2;\\n        break;\\n      case 270:\\n        this.x += (this.height * pageHeight) \u002F (pageWidth * 2);\\n        this.y -= (this.width * pageWidth) \u002F (pageHeight * 2);\\n        break;\\n      default:\\n        this.x -= this.width \u002F 2;\\n        this.y -= this.height \u002F 2;\\n        break;\\n    }\\n    this.fixAndSetPosition();\\n  }\\n\\n  \u002F**\\n   * Add some commands into the CommandManager (undo\u002Fredo stuff).\\n   * @param {Object} params\\n   *\u002F\\n  addCommands(params) {\\n    this._uiManager.addCommands(params);\\n  }\\n\\n  get currentLayer() {\\n    return this._uiManager.currentLayer;\\n  }\\n\\n  \u002F**\\n   * This editor will be behind the others.\\n   *\u002F\\n  setInBackground() {\\n    this.div.style.zIndex = 0;\\n  }\\n\\n  \u002F**\\n   * This editor will be in the foreground.\\n   *\u002F\\n  setInForeground() {\\n    this.div.style.zIndex = this.#zIndex;\\n  }\\n\\n  setParent(parent) {\\n    if (parent !== null) {\\n      this.pageIndex = parent.pageIndex;\\n      this.pageDimensions = parent.pageDimensions;\\n    } else {\\n      \u002F\u002F The editor is being removed from the DOM, so we need to stop resizing.\\n      this.#stopResizing();\\n    }\\n    this.parent = parent;\\n  }\\n\\n  \u002F**\\n   * onfocus callback.\\n   *\u002F\\n  focusin(event) {\\n    if (!this._focusEventsAllowed) {\\n      return;\\n    }\\n    if (!this.#hasBeenClicked) {\\n      this.parent.setSelected(this);\\n    } else {\\n      this.#hasBeenClicked = false;\\n    }\\n  }\\n\\n  \u002F**\\n   * onblur callback.\\n   * @param {FocusEvent} event\\n   *\u002F\\n  focusout(event) {\\n    if (!this._focusEventsAllowed) {\\n      return;\\n    }\\n\\n    if (!this.isAttachedToDOM) {\\n      return;\\n    }\\n\\n    \u002F\u002F In case of focusout, the relatedTarget is the element which\\n    \u002F\u002F is grabbing the focus.\\n    \u002F\u002F So if the related target is an element under the div for this\\n    \u002F\u002F editor, then the editor isn't unactive.\\n    const target = event.relatedTarget;\\n    if (target?.closest(`#${this.id}`)) {\\n      return;\\n    }\\n\\n    event.preventDefault();\\n\\n    if (!this.parent?.isMultipleSelection) {\\n      this.commitOrRemove();\\n    }\\n  }\\n\\n  commitOrRemove() {\\n    if (this.isEmpty()) {\\n      this.remove();\\n    } else {\\n      this.commit();\\n    }\\n  }\\n\\n  \u002F**\\n   * Commit the data contained in this editor.\\n   *\u002F\\n  commit() {\\n    this.addToAnnotationStorage();\\n  }\\n\\n  addToAnnotationStorage() {\\n    this._uiManager.addToAnnotationStorage(this);\\n  }\\n\\n  \u002F**\\n   * Set the editor position within its parent.\\n   * @param {number} x\\n   * @param {number} y\\n   * @param {number} tx - x-translation in screen coordinates.\\n   * @param {number} ty - y-translation in screen coordinates.\\n   *\u002F\\n  setAt(x, y, tx, ty) {\\n    const [width, height] = this.parentDimensions;\\n    [tx, ty] = this.screenToPageTranslation(tx, ty);\\n\\n    this.x = (x + tx) \u002F width;\\n    this.y = (y + ty) \u002F height;\\n\\n    this.fixAndSetPosition();\\n  }\\n\\n  _moveAfterPaste(baseX, baseY) {\\n    const [parentWidth, parentHeight] = this.parentDimensions;\\n    this.setAt(\\n      baseX * parentWidth,\\n      baseY * parentHeight,\\n      this.width * parentWidth,\\n      this.height * parentHeight\\n    );\\n    this._onTranslated();\\n  }\\n\\n  #translate([width, height], x, y) {\\n    [x, y] = this.screenToPageTranslation(x, y);\\n\\n    this.x += x \u002F width;\\n    this.y += y \u002F height;\\n\\n    this._onTranslating(this.x, this.y);\\n\\n    this.fixAndSetPosition();\\n  }\\n\\n  \u002F**\\n   * Translate the editor position within its parent.\\n   * @param {number} x - x-translation in screen coordinates.\\n   * @param {number} y - y-translation in screen coordinates.\\n   *\u002F\\n  translate(x, y) {\\n    \u002F\u002F We don't change the initial position because the move here hasn't been\\n    \u002F\u002F done by the user.\\n    this.#translate(this.parentDimensions, x, y);\\n  }\\n\\n  \u002F**\\n   * Translate the editor position within its page and adjust the scroll\\n   * in order to have the editor in the view.\\n   * @param {number} x - x-translation in page coordinates.\\n   * @param {number} y - y-translation in page coordinates.\\n   *\u002F\\n  translateInPage(x, y) {\\n    this.#initialRect ||= [this.x, this.y, this.width, this.height];\\n    this.#translate(this.pageDimensions, x, y);\\n    this.div.scrollIntoView({ block: \\\"nearest\\\" });\\n  }\\n\\n  translationDone() {\\n    this._onTranslated(this.x, this.y);\\n  }\\n\\n  drag(tx, ty) {\\n    this.#initialRect ||= [this.x, this.y, this.width, this.height];\\n    const {\\n      div,\\n      parentDimensions: [parentWidth, parentHeight],\\n    } = this;\\n    this.x += tx \u002F parentWidth;\\n    this.y += ty \u002F parentHeight;\\n    if (this.parent && (this.x \u003C 0 || this.x > 1 || this.y \u003C 0 || this.y > 1)) {\\n      \u002F\u002F It's possible to not have a parent: for example, when the user is\\n      \u002F\u002F dragging all the selected editors but this one on a page which has been\\n      \u002F\u002F destroyed.\\n      \u002F\u002F It's why we need to check for it. In such a situation, it isn't really\\n      \u002F\u002F a problem to not find a new parent: it's something which is related to\\n      \u002F\u002F what the user is seeing, hence it depends on how pages are layed out.\\n\\n      \u002F\u002F The element will be outside of its parent so change the parent.\\n      const { x, y } = this.div.getBoundingClientRect();\\n      if (this.parent.findNewParent(this, x, y)) {\\n        this.x -= Math.floor(this.x);\\n        this.y -= Math.floor(this.y);\\n      }\\n    }\\n\\n    \u002F\u002F The editor can be moved wherever the user wants, so we don't need to fix\\n    \u002F\u002F the position: it'll be done when the user will release the mouse button.\\n\\n    let { x, y } = this;\\n    const [bx, by] = this.getBaseTranslation();\\n    x += bx;\\n    y += by;\\n\\n    const { style } = div;\\n    style.left = `${(100 * x).toFixed(2)}%`;\\n    style.top = `${(100 * y).toFixed(2)}%`;\\n\\n    this._onTranslating(x, y);\\n\\n    div.scrollIntoView({ block: \\\"nearest\\\" });\\n  }\\n\\n  \u002F**\\n   * Called when the editor is being translated.\\n   * @param {number} x - in page coordinates.\\n   * @param {number} y - in page coordinates.\\n   *\u002F\\n  _onTranslating(x, y) {}\\n\\n  \u002F**\\n   * Called when the editor has been translated.\\n   * @param {number} x - in page coordinates.\\n   * @param {number} y - in page coordinates.\\n   *\u002F\\n  _onTranslated(x, y) {}\\n\\n  get _hasBeenMoved() {\\n    return (\\n      !!this.#initialRect &&\\n      (this.#initialRect[0] !== this.x || this.#initialRect[1] !== this.y)\\n    );\\n  }\\n\\n  get _hasBeenResized() {\\n    return (\\n      !!this.#initialRect &&\\n      (this.#initialRect[2] !== this.width ||\\n        this.#initialRect[3] !== this.height)\\n    );\\n  }\\n\\n  \u002F**\\n   * Get the translation to take into account the editor border.\\n   * The CSS engine positions the element by taking the border into account so\\n   * we must apply the opposite translation to have the editor in the right\\n   * position.\\n   * @returns {Array\u003Cnumber>}\\n   *\u002F\\n  getBaseTranslation() {\\n    const [parentWidth, parentHeight] = this.parentDimensions;\\n    const { _borderLineWidth } = AnnotationEditor;\\n    const x = _borderLineWidth \u002F parentWidth;\\n    const y = _borderLineWidth \u002F parentHeight;\\n    switch (this.rotation) {\\n      case 90:\\n        return [-x, y];\\n      case 180:\\n        return [x, y];\\n      case 270:\\n        return [x, -y];\\n      default:\\n        return [-x, -y];\\n    }\\n  }\\n\\n  \u002F**\\n   * @returns {boolean} true if position must be fixed (i.e. make the x and y\\n   * living in the page).\\n   *\u002F\\n  get _mustFixPosition() {\\n    return true;\\n  }\\n\\n  \u002F**\\n   * Fix the position of the editor in order to keep it inside its parent page.\\n   * @param {number} [rotation] - the rotation of the page.\\n   *\u002F\\n  fixAndSetPosition(rotation = this.rotation) {\\n    const {\\n      div: { style },\\n      pageDimensions: [pageWidth, pageHeight],\\n    } = this;\\n    let { x, y, width, height } = this;\\n    width *= pageWidth;\\n    height *= pageHeight;\\n    x *= pageWidth;\\n    y *= pageHeight;\\n\\n    if (this._mustFixPosition) {\\n      switch (rotation) {\\n        case 0:\\n          x = MathClamp(x, 0, pageWidth - width);\\n          y = MathClamp(y, 0, pageHeight - height);\\n          break;\\n        case 90:\\n          x = MathClamp(x, 0, pageWidth - height);\\n          y = MathClamp(y, width, pageHeight);\\n          break;\\n        case 180:\\n          x = MathClamp(x, width, pageWidth);\\n          y = MathClamp(y, height, pageHeight);\\n          break;\\n        case 270:\\n          x = MathClamp(x, height, pageWidth);\\n          y = MathClamp(y, 0, pageHeight - width);\\n          break;\\n      }\\n    }\\n\\n    this.x = x \u002F= pageWidth;\\n    this.y = y \u002F= pageHeight;\\n\\n    const [bx, by] = this.getBaseTranslation();\\n    x += bx;\\n    y += by;\\n\\n    style.left = `${(100 * x).toFixed(2)}%`;\\n    style.top = `${(100 * y).toFixed(2)}%`;\\n\\n    this.moveInDOM();\\n  }\\n\\n  static #rotatePoint(x, y, angle) {\\n    switch (angle) {\\n      case 90:\\n        return [y, -x];\\n      case 180:\\n        return [-x, -y];\\n      case 270:\\n        return [-y, x];\\n      default:\\n        return [x, y];\\n    }\\n  }\\n\\n  \u002F**\\n   * Convert a screen translation into a page one.\\n   * @param {number} x\\n   * @param {number} y\\n   *\u002F\\n  screenToPageTranslation(x, y) {\\n    return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\\n  }\\n\\n  \u002F**\\n   * Convert a page translation into a screen one.\\n   * @param {number} x\\n   * @param {number} y\\n   *\u002F\\n  pageTranslationToScreen(x, y) {\\n    return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\\n  }\\n\\n  #getRotationMatrix(rotation) {\\n    switch (rotation) {\\n      case 90: {\\n        const [pageWidth, pageHeight] = this.pageDimensions;\\n        return [0, -pageWidth \u002F pageHeight, pageHeight \u002F pageWidth, 0];\\n      }\\n      case 180:\\n        return [-1, 0, 0, -1];\\n      case 270: {\\n        const [pageWidth, pageHeight] = this.pageDimensions;\\n        return [0, pageWidth \u002F pageHeight, -pageHeight \u002F pageWidth, 0];\\n      }\\n      default:\\n        return [1, 0, 0, 1];\\n    }\\n  }\\n\\n  get parentScale() {\\n    return this._uiManager.viewParameters.realScale;\\n  }\\n\\n  get parentRotation() {\\n    return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\\n  }\\n\\n  get parentDimensions() {\\n    const {\\n      parentScale,\\n      pageDimensions: [pageWidth, pageHeight],\\n    } = this;\\n    return [pageWidth * parentScale, pageHeight * parentScale];\\n  }\\n\\n  \u002F**\\n   * Set the dimensions of this editor.\\n   * @param {number} width\\n   * @param {number} height\\n   *\u002F\\n  setDims(width, height) {\\n    const [parentWidth, parentHeight] = this.parentDimensions;\\n    const { style } = this.div;\\n    style.width = `${((100 * width) \u002F parentWidth).toFixed(2)}%`;\\n    if (!this.#keepAspectRatio) {\\n      style.height = `${((100 * height) \u002F parentHeight).toFixed(2)}%`;\\n    }\\n  }\\n\\n  fixDims() {\\n    const { style } = this.div;\\n    const { height, width } = style;\\n    const widthPercent = width.endsWith(\\\"%\\\");\\n    const heightPercent = !this.#keepAspectRatio && height.endsWith(\\\"%\\\");\\n    if (widthPercent && heightPercent) {\\n      return;\\n    }\\n\\n    const [parentWidth, parentHeight] = this.parentDimensions;\\n    if (!widthPercent) {\\n      style.width = `${((100 * parseFloat(width)) \u002F parentWidth).toFixed(2)}%`;\\n    }\\n    if (!this.#keepAspectRatio && !heightPercent) {\\n      style.height = `${((100 * parseFloat(height)) \u002F parentHeight).toFixed(2)}%`;\\n    }\\n  }\\n\\n  \u002F**\\n   * Get the translation used to position this editor when it's created.\\n   * @returns {Array\u003Cnumber>}\\n   *\u002F\\n  getInitialTranslation() {\\n    return [0, 0];\\n  }\\n\\n  #createResizers() {\\n    if (this.#resizersDiv) {\\n      return;\\n    }\\n    this.#resizersDiv = document.createElement(\\\"div\\\");\\n    this.#resizersDiv.classList.add(\\\"resizers\\\");\\n    \u002F\u002F When the resizers are used with the keyboard, they're focusable, hence\\n    \u002F\u002F we want to have them in this order (top left, top middle, top right, ...)\\n    \u002F\u002F in the DOM to have the focus order correct.\\n    const classes = this._willKeepAspectRatio\\n      ? [\\\"topLeft\\\", \\\"topRight\\\", \\\"bottomRight\\\", \\\"bottomLeft\\\"]\\n      : [\\n          \\\"topLeft\\\",\\n          \\\"topMiddle\\\",\\n          \\\"topRight\\\",\\n          \\\"middleRight\\\",\\n          \\\"bottomRight\\\",\\n          \\\"bottomMiddle\\\",\\n          \\\"bottomLeft\\\",\\n          \\\"middleLeft\\\",\\n        ];\\n    const signal = this._uiManager._signal;\\n    for (const name of classes) {\\n      const div = document.createElement(\\\"div\\\");\\n      this.#resizersDiv.append(div);\\n      div.classList.add(\\\"resizer\\\", name);\\n      div.setAttribute(\\\"data-resizer-name\\\", name);\\n      div.addEventListener(\\n        \\\"pointerdown\\\",\\n        this.#resizerPointerdown.bind(this, name),\\n        { signal }\\n      );\\n      div.addEventListener(\\\"contextmenu\\\", noContextMenu, { signal });\\n      div.tabIndex = -1;\\n    }\\n    this.div.prepend(this.#resizersDiv);\\n  }\\n\\n  #resizerPointerdown(name, event) {\\n    event.preventDefault();\\n    const { isMac } = FeatureTest.platform;\\n    if (event.button !== 0 || (event.ctrlKey && isMac)) {\\n      return;\\n    }\\n\\n    this.#altText?.toggle(false);\\n\\n    const savedDraggable = this._isDraggable;\\n    this._isDraggable = false;\\n    this.#lastPointerCoords = [event.screenX, event.screenY];\\n\\n    const ac = new AbortController();\\n    const signal = this._uiManager.combinedSignal(ac);\\n\\n    this.parent.togglePointerEvents(false);\\n    window.addEventListener(\\n      \\\"pointermove\\\",\\n      this.#resizerPointermove.bind(this, name),\\n      { passive: true, capture: true, signal }\\n    );\\n    window.addEventListener(\\n      \\\"touchmove\\\",\\n      stopEvent \u002F* Prevent the page from scrolling *\u002F,\\n      { passive: false, signal }\\n    );\\n    window.addEventListener(\\\"contextmenu\\\", noContextMenu, { signal });\\n    this.#savedDimensions = {\\n      savedX: this.x,\\n      savedY: this.y,\\n      savedWidth: this.width,\\n      savedHeight: this.height,\\n    };\\n    const savedParentCursor = this.parent.div.style.cursor;\\n    const savedCursor = this.div.style.cursor;\\n    this.div.style.cursor = this.parent.div.style.cursor =\\n      window.getComputedStyle(event.target).cursor;\\n\\n    const pointerUpCallback = () => {\\n      ac.abort();\\n      this.parent.togglePointerEvents(true);\\n      this.#altText?.toggle(true);\\n      this._isDraggable = savedDraggable;\\n      this.parent.div.style.cursor = savedParentCursor;\\n      this.div.style.cursor = savedCursor;\\n\\n      this.#addResizeToUndoStack();\\n    };\\n    window.addEventListener(\\\"pointerup\\\", pointerUpCallback, { signal });\\n    \u002F\u002F If the user switches to another window (with alt+tab), then we end the\\n    \u002F\u002F resize session.\\n    window.addEventListener(\\\"blur\\\", pointerUpCallback, { signal });\\n  }\\n\\n  #resize(x, y, width, height) {\\n    this.width = width;\\n    this.height = height;\\n    this.x = x;\\n    this.y = y;\\n    const [parentWidth, parentHeight] = this.parentDimensions;\\n    this.setDims(parentWidth * width, parentHeight * height);\\n    this.fixAndSetPosition();\\n    this._onResized();\\n  }\\n\\n  \u002F**\\n   * Called when the editor has been resized.\\n   *\u002F\\n  _onResized() {}\\n\\n  #addResizeToUndoStack() {\\n    if (!this.#savedDimensions) {\\n      return;\\n    }\\n    const { savedX, savedY, savedWidth, savedHeight } = this.#savedDimensions;\\n    this.#savedDimensions = null;\\n\\n    const newX = this.x;\\n    const newY = this.y;\\n    const newWidth = this.width;\\n    const newHeight = this.height;\\n    if (\\n      newX === savedX &&\\n      newY === savedY &&\\n      newWidth === savedWidth &&\\n      newHeight === savedHeight\\n    ) {\\n      return;\\n    }\\n\\n    this.addCommands({\\n      cmd: this.#resize.bind(this, newX, newY, newWidth, newHeight),\\n      undo: this.#resize.bind(this, savedX, savedY, savedWidth, savedHeight),\\n      mustExec: true,\\n    });\\n  }\\n\\n  static _round(x) {\\n    \u002F\u002F 10000 because we multiply by 100 and use toFixed(2) in fixAndSetPosition.\\n    \u002F\u002F Without rounding, the positions of the corners other than the top left\\n    \u002F\u002F one can be slightly wrong.\\n    return Math.round(x * 10000) \u002F 10000;\\n  }\\n\\n  #resizerPointermove(name, event) {\\n    const [parentWidth, parentHeight] = this.parentDimensions;\\n    const savedX = this.x;\\n    const savedY = this.y;\\n    const savedWidth = this.width;\\n    const savedHeight = this.height;\\n    const minWidth = AnnotationEditor.MIN_SIZE \u002F parentWidth;\\n    const minHeight = AnnotationEditor.MIN_SIZE \u002F parentHeight;\\n\\n    const rotationMatrix = this.#getRotationMatrix(this.rotation);\\n    const transf = (x, y) => [\\n      rotationMatrix[0] * x + rotationMatrix[2] * y,\\n      rotationMatrix[1] * x + rotationMatrix[3] * y,\\n    ];\\n    const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\\n    const invTransf = (x, y) => [\\n      invRotationMatrix[0] * x + invRotationMatrix[2] * y,\\n      invRotationMatrix[1] * x + invRotationMatrix[3] * y,\\n    ];\\n    let getPoint;\\n    let getOpposite;\\n    let isDiagonal = false;\\n    let isHorizontal = false;\\n\\n    switch (name) {\\n      case \\\"topLeft\\\":\\n        isDiagonal = true;\\n        getPoint = (w, h) => [0, 0];\\n        getOpposite = (w, h) => [w, h];\\n        break;\\n      case \\\"topMiddle\\\":\\n        getPoint = (w, h) => [w \u002F 2, 0];\\n        getOpposite = (w, h) => [w \u002F 2, h];\\n        break;\\n      case \\\"topRight\\\":\\n        isDiagonal = true;\\n        getPoint = (w, h) => [w, 0];\\n        getOpposite = (w, h) => [0, h];\\n        break;\\n      case \\\"middleRight\\\":\\n        isHorizontal = true;\\n        getPoint = (w, h) => [w, h \u002F 2];\\n        getOpposite = (w, h) => [0, h \u002F 2];\\n        break;\\n      case \\\"bottomRight\\\":\\n        isDiagonal = true;\\n        getPoint = (w, h) => [w, h];\\n        getOpposite = (w, h) => [0, 0];\\n        break;\\n      case \\\"bottomMiddle\\\":\\n        getPoint = (w, h) => [w \u002F 2, h];\\n        getOpposite = (w, h) => [w \u002F 2, 0];\\n        break;\\n      case \\\"bottomLeft\\\":\\n        isDiagonal = true;\\n        getPoint = (w, h) => [0, h];\\n        getOpposite = (w, h) => [w, 0];\\n        break;\\n      case \\\"middleLeft\\\":\\n        isHorizontal = true;\\n        getPoint = (w, h) => [0, h \u002F 2];\\n        getOpposite = (w, h) => [w, h \u002F 2];\\n        break;\\n    }\\n\\n    const point = getPoint(savedWidth, savedHeight);\\n    const oppositePoint = getOpposite(savedWidth, savedHeight);\\n    let transfOppositePoint = transf(...oppositePoint);\\n    const oppositeX = AnnotationEditor._round(savedX + transfOppositePoint[0]);\\n    const oppositeY = AnnotationEditor._round(savedY + transfOppositePoint[1]);\\n    let ratioX = 1;\\n    let ratioY = 1;\\n\\n    let deltaX, deltaY;\\n\\n    if (!event.fromKeyboard) {\\n      \u002F\u002F We can't use event.movementX\u002FY because they're not reliable:\\n      \u002F\u002F  https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FMouseEvent\u002FmovementX\\n      \u002F\u002F (it was buggy on a laptop with a touch screen).\\n      const { screenX, screenY } = event;\\n      const [lastScreenX, lastScreenY] = this.#lastPointerCoords;\\n      [deltaX, deltaY] = this.screenToPageTranslation(\\n        screenX - lastScreenX,\\n        screenY - lastScreenY\\n      );\\n      this.#lastPointerCoords[0] = screenX;\\n      this.#lastPointerCoords[1] = screenY;\\n    } else {\\n      ({ deltaX, deltaY } = event);\\n    }\\n    [deltaX, deltaY] = invTransf(deltaX \u002F parentWidth, deltaY \u002F parentHeight);\\n\\n    if (isDiagonal) {\\n      const oldDiag = Math.hypot(savedWidth, savedHeight);\\n      ratioX = ratioY = Math.max(\\n        Math.min(\\n          Math.hypot(\\n            oppositePoint[0] - point[0] - deltaX,\\n            oppositePoint[1] - point[1] - deltaY\\n          ) \u002F oldDiag,\\n          \u002F\u002F Avoid the editor to be larger than the page.\\n          1 \u002F savedWidth,\\n          1 \u002F savedHeight\\n        ),\\n        \u002F\u002F Avoid the editor to be smaller than the minimum size.\\n        minWidth \u002F savedWidth,\\n        minHeight \u002F savedHeight\\n      );\\n    } else if (isHorizontal) {\\n      ratioX =\\n        MathClamp(Math.abs(oppositePoint[0] - point[0] - deltaX), minWidth, 1) \u002F\\n        savedWidth;\\n    } else {\\n      ratioY =\\n        MathClamp(\\n          Math.abs(oppositePoint[1] - point[1] - deltaY),\\n          minHeight,\\n          1\\n        ) \u002F savedHeight;\\n    }\\n\\n    const newWidth = AnnotationEditor._round(savedWidth * ratioX);\\n    const newHeight = AnnotationEditor._round(savedHeight * ratioY);\\n    transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\\n    const newX = oppositeX - transfOppositePoint[0];\\n    const newY = oppositeY - transfOppositePoint[1];\\n\\n    this.#initialRect ||= [this.x, this.y, this.width, this.height];\\n    this.width = newWidth;\\n    this.height = newHeight;\\n    this.x = newX;\\n    this.y = newY;\\n\\n    this.setDims(parentWidth * newWidth, parentHeight * newHeight);\\n    this.fixAndSetPosition();\\n\\n    this._onResizing();\\n  }\\n\\n  \u002F**\\n   * Called when the editor is being resized.\\n   *\u002F\\n  _onResizing() {}\\n\\n  \u002F**\\n   * Called when the alt text dialog is closed.\\n   *\u002F\\n  altTextFinish() {\\n    this.#altText?.finish();\\n  }\\n\\n  \u002F**\\n   * Add a toolbar for this editor.\\n   * @returns {Promise\u003CEditorToolbar|null>}\\n   *\u002F\\n  async addEditToolbar() {\\n    if (this._editToolbar || this.#isInEditMode) {\\n      return this._editToolbar;\\n    }\\n    this._editToolbar = new EditorToolbar(this);\\n    this.div.append(this._editToolbar.render());\\n    if (this.#altText) {\\n      await this._editToolbar.addAltText(this.#altText);\\n    }\\n\\n    return this._editToolbar;\\n  }\\n\\n  removeEditToolbar() {\\n    if (!this._editToolbar) {\\n      return;\\n    }\\n    this._editToolbar.remove();\\n    this._editToolbar = null;\\n\\n    \u002F\u002F We destroy the alt text but we don't null it because we want to be able\\n    \u002F\u002F to restore it in case the user undoes the deletion.\\n    this.#altText?.destroy();\\n  }\\n\\n  addContainer(container) {\\n    const editToolbarDiv = this._editToolbar?.div;\\n    if (editToolbarDiv) {\\n      editToolbarDiv.before(container);\\n    } else {\\n      this.div.append(container);\\n    }\\n  }\\n\\n  getClientDimensions() {\\n    return this.div.getBoundingClientRect();\\n  }\\n\\n  async addAltTextButton() {\\n    if (this.#altText) {\\n      return;\\n    }\\n    AltText.initialize(AnnotationEditor._l10n);\\n    this.#altText = new AltText(this);\\n    if (this.#accessibilityData) {\\n      this.#altText.data = this.#accessibilityData;\\n      this.#accessibilityData = null;\\n    }\\n    await this.addEditToolbar();\\n  }\\n\\n  get altTextData() {\\n    return this.#altText?.data;\\n  }\\n\\n  \u002F**\\n   * Set the alt text data.\\n   *\u002F\\n  set altTextData(data) {\\n    if (!this.#altText) {\\n      return;\\n    }\\n    this.#altText.data = data;\\n  }\\n\\n  get guessedAltText() {\\n    return this.#altText?.guessedText;\\n  }\\n\\n  async setGuessedAltText(text) {\\n    await this.#altText?.setGuessedText(text);\\n  }\\n\\n  serializeAltText(isForCopying) {\\n    return this.#altText?.serialize(isForCopying);\\n  }\\n\\n  hasAltText() {\\n    return !!this.#altText && !this.#altText.isEmpty();\\n  }\\n\\n  hasAltTextData() {\\n    return this.#altText?.hasData() ?? false;\\n  }\\n\\n  \u002F**\\n   * Render this editor in a div.\\n   * @returns {HTMLDivElement | null}\\n   *\u002F\\n  render() {\\n    const div = (this.div = document.createElement(\\\"div\\\"));\\n    div.setAttribute(\\\"data-editor-rotation\\\", (360 - this.rotation) % 360);\\n    div.className = this.name;\\n    div.setAttribute(\\\"id\\\", this.id);\\n    div.tabIndex = this.#disabled ? -1 : 0;\\n    div.setAttribute(\\\"role\\\", \\\"application\\\");\\n    if (this.defaultL10nId) {\\n      div.setAttribute(\\\"data-l10n-id\\\", this.defaultL10nId);\\n    }\\n    if (!this._isVisible) {\\n      div.classList.add(\\\"hidden\\\");\\n    }\\n\\n    this.setInForeground();\\n    this.#addFocusListeners();\\n\\n    const [parentWidth, parentHeight] = this.parentDimensions;\\n    if (this.parentRotation % 180 !== 0) {\\n      div.style.maxWidth = `${((100 * parentHeight) \u002F parentWidth).toFixed(\\n        2\\n      )}%`;\\n      div.style.maxHeight = `${((100 * parentWidth) \u002F parentHeight).toFixed(\\n        2\\n      )}%`;\\n    }\\n\\n    const [tx, ty] = this.getInitialTranslation();\\n    this.translate(tx, ty);\\n\\n    bindEvents(this, div, [\\\"keydown\\\", \\\"pointerdown\\\", \\\"dblclick\\\"]);\\n\\n    if (this.isResizable && this._uiManager._supportsPinchToZoom) {\\n      this.#touchManager ||= new TouchManager({\\n        container: div,\\n        isPinchingDisabled: () => !this.isSelected,\\n        onPinchStart: this.#touchPinchStartCallback.bind(this),\\n        onPinching: this.#touchPinchCallback.bind(this),\\n        onPinchEnd: this.#touchPinchEndCallback.bind(this),\\n        signal: this._uiManager._signal,\\n      });\\n    }\\n\\n    this._uiManager._editorUndoBar?.hide();\\n\\n    return div;\\n  }\\n\\n  #touchPinchStartCallback() {\\n    this.#savedDimensions = {\\n      savedX: this.x,\\n      savedY: this.y,\\n      savedWidth: this.width,\\n      savedHeight: this.height,\\n    };\\n    this.#altText?.toggle(false);\\n    this.parent.togglePointerEvents(false);\\n  }\\n\\n  #touchPinchCallback(_origin, prevDistance, distance) {\\n    \u002F\u002F Slightly slow down the zooming because the editor could be small and the\\n    \u002F\u002F user could have difficulties to rescale it as they want.\\n    const slowDownFactor = 0.7;\\n    let factor =\\n      slowDownFactor * (distance \u002F prevDistance) + 1 - slowDownFactor;\\n    if (factor === 1) {\\n      return;\\n    }\\n\\n    const rotationMatrix = this.#getRotationMatrix(this.rotation);\\n    const transf = (x, y) => [\\n      rotationMatrix[0] * x + rotationMatrix[2] * y,\\n      rotationMatrix[1] * x + rotationMatrix[3] * y,\\n    ];\\n\\n    \u002F\u002F The center of the editor is the fixed point.\\n    const [parentWidth, parentHeight] = this.parentDimensions;\\n    const savedX = this.x;\\n    const savedY = this.y;\\n    const savedWidth = this.width;\\n    const savedHeight = this.height;\\n\\n    const minWidth = AnnotationEditor.MIN_SIZE \u002F parentWidth;\\n    const minHeight = AnnotationEditor.MIN_SIZE \u002F parentHeight;\\n    factor = Math.max(\\n      Math.min(factor, 1 \u002F savedWidth, 1 \u002F savedHeight),\\n      minWidth \u002F savedWidth,\\n      minHeight \u002F savedHeight\\n    );\\n    const newWidth = AnnotationEditor._round(savedWidth * factor);\\n    const newHeight = AnnotationEditor._round(savedHeight * factor);\\n    if (newWidth === savedWidth && newHeight === savedHeight) {\\n      return;\\n    }\\n\\n    this.#initialRect ||= [savedX, savedY, savedWidth, savedHeight];\\n    const transfCenterPoint = transf(savedWidth \u002F 2, savedHeight \u002F 2);\\n    const centerX = AnnotationEditor._round(savedX + transfCenterPoint[0]);\\n    const centerY = AnnotationEditor._round(savedY + transfCenterPoint[1]);\\n    const newTransfCenterPoint = transf(newWidth \u002F 2, newHeight \u002F 2);\\n\\n    this.x = centerX - newTransfCenterPoint[0];\\n    this.y = centerY - newTransfCenterPoint[1];\\n    this.width = newWidth;\\n    this.height = newHeight;\\n\\n    this.setDims(parentWidth * newWidth, parentHeight * newHeight);\\n    this.fixAndSetPosition();\\n\\n    this._onResizing();\\n  }\\n\\n  #touchPinchEndCallback() {\\n    this.#altText?.toggle(true);\\n    this.parent.togglePointerEvents(true);\\n    this.#addResizeToUndoStack();\\n  }\\n\\n  \u002F**\\n   * Onpointerdown callback.\\n   * @param {PointerEvent} event\\n   *\u002F\\n  pointerdown(event) {\\n    const { isMac } = FeatureTest.platform;\\n    if (event.button !== 0 || (event.ctrlKey && isMac)) {\\n      \u002F\u002F Avoid to focus this editor because of a non-left click.\\n      event.preventDefault();\\n      return;\\n    }\\n    this.#hasBeenClicked = true;\\n\\n    if (this._isDraggable) {\\n      this.#setUpDragSession(event);\\n      return;\\n    }\\n\\n    this.#selectOnPointerEvent(event);\\n  }\\n\\n  #selectOnPointerEvent(event) {\\n    const { isMac } = FeatureTest.platform;\\n    if (\\n      (event.ctrlKey && !isMac) ||\\n      event.shiftKey ||\\n      (event.metaKey && isMac)\\n    ) {\\n      this.parent.toggleSelected(this);\\n    } else {\\n      this.parent.setSelected(this);\\n    }\\n  }\\n\\n  #setUpDragSession(event) {\\n    const { isSelected } = this;\\n    this._uiManager.setUpDragSession();\\n    let hasDraggingStarted = false;\\n\\n    const ac = new AbortController();\\n    const signal = this._uiManager.combinedSignal(ac);\\n    const opts = { capture: true, passive: false, signal };\\n    const cancelDrag = e => {\\n      ac.abort();\\n\\n      this.#dragPointerId = null;\\n      this.#hasBeenClicked = false;\\n      if (!this._uiManager.endDragSession()) {\\n        this.#selectOnPointerEvent(e);\\n      }\\n      if (hasDraggingStarted) {\\n        this._onStopDragging();\\n      }\\n    };\\n\\n    if (isSelected) {\\n      this.#prevDragX = event.clientX;\\n      this.#prevDragY = event.clientY;\\n      this.#dragPointerId = event.pointerId;\\n      this.#dragPointerType = event.pointerType;\\n      window.addEventListener(\\n        \\\"pointermove\\\",\\n        e => {\\n          if (!hasDraggingStarted) {\\n            hasDraggingStarted = true;\\n            this._onStartDragging();\\n          }\\n          const { clientX: x, clientY: y, pointerId } = e;\\n          if (pointerId !== this.#dragPointerId) {\\n            stopEvent(e);\\n            return;\\n          }\\n          const [tx, ty] = this.screenToPageTranslation(\\n            x - this.#prevDragX,\\n            y - this.#prevDragY\\n          );\\n          this.#prevDragX = x;\\n          this.#prevDragY = y;\\n          this._uiManager.dragSelectedEditors(tx, ty);\\n        },\\n        opts\\n      );\\n      window.addEventListener(\\n        \\\"touchmove\\\",\\n        stopEvent \u002F* Prevent the page from scrolling *\u002F,\\n        opts\\n      );\\n      window.addEventListener(\\n        \\\"pointerdown\\\",\\n        \u002F\u002F If the user drags with one finger and then clicks with another.\\n        e => {\\n          if (e.pointerType === this.#dragPointerType) {\\n            \u002F\u002F We've a pinch to zoom session.\\n            \u002F\u002F We cannot have two primaries at the same time.\\n            \u002F\u002F It's possible to be in this state with Firefox and Gnome when\\n            \u002F\u002F trying to drag with three fingers (see bug 1933716).\\n            if (this.#touchManager || e.isPrimary) {\\n              cancelDrag(e);\\n            }\\n          }\\n          stopEvent(e);\\n        },\\n        opts\\n      );\\n    }\\n\\n    const pointerUpCallback = e => {\\n      if (!this.#dragPointerId || this.#dragPointerId === e.pointerId) {\\n        cancelDrag(e);\\n        return;\\n      }\\n      stopEvent(e);\\n    };\\n    window.addEventListener(\\\"pointerup\\\", pointerUpCallback, { signal });\\n    \u002F\u002F If the user is using alt+tab during the dragging session, the pointerup\\n    \u002F\u002F event could be not fired, but a blur event is fired so we can use it in\\n    \u002F\u002F order to interrupt the dragging session.\\n    window.addEventListener(\\\"blur\\\", pointerUpCallback, { signal });\\n  }\\n\\n  _onStartDragging() {}\\n\\n  _onStopDragging() {}\\n\\n  moveInDOM() {\\n    \u002F\u002F Moving the editor in the DOM can be expensive, so we wait a bit before.\\n    \u002F\u002F It's important to not block the UI (for example when changing the font\\n    \u002F\u002F size in a FreeText).\\n    if (this.#moveInDOMTimeout) {\\n      clearTimeout(this.#moveInDOMTimeout);\\n    }\\n    this.#moveInDOMTimeout = setTimeout(() => {\\n      this.#moveInDOMTimeout = null;\\n      this.parent?.moveEditorInDOM(this);\\n      if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING\\\")) {\\n        this._uiManager._eventBus.dispatch(\\\"editormovedindom\\\", {\\n          source: this,\\n        });\\n      }\\n    }, 0);\\n  }\\n\\n  _setParentAndPosition(parent, x, y) {\\n    parent.changeParent(this);\\n    this.x = x;\\n    this.y = y;\\n    this.fixAndSetPosition();\\n    this._onTranslated();\\n  }\\n\\n  \u002F**\\n   * Convert the current rect into a page one.\\n   * @param {number} tx - x-translation in screen coordinates.\\n   * @param {number} ty - y-translation in screen coordinates.\\n   * @param {number} [rotation] - the rotation of the page.\\n   *\u002F\\n  getRect(tx, ty, rotation = this.rotation) {\\n    const scale = this.parentScale;\\n    const [pageWidth, pageHeight] = this.pageDimensions;\\n    const [pageX, pageY] = this.pageTranslation;\\n    const shiftX = tx \u002F scale;\\n    const shiftY = ty \u002F scale;\\n    const x = this.x * pageWidth;\\n    const y = this.y * pageHeight;\\n    const width = this.width * pageWidth;\\n    const height = this.height * pageHeight;\\n\\n    switch (rotation) {\\n      case 0:\\n        return [\\n          x + shiftX + pageX,\\n          pageHeight - y - shiftY - height + pageY,\\n          x + shiftX + width + pageX,\\n          pageHeight - y - shiftY + pageY,\\n        ];\\n      case 90:\\n        return [\\n          x + shiftY + pageX,\\n          pageHeight - y + shiftX + pageY,\\n          x + shiftY + height + pageX,\\n          pageHeight - y + shiftX + width + pageY,\\n        ];\\n      case 180:\\n        return [\\n          x - shiftX - width + pageX,\\n          pageHeight - y + shiftY + pageY,\\n          x - shiftX + pageX,\\n          pageHeight - y + shiftY + height + pageY,\\n        ];\\n      case 270:\\n        return [\\n          x - shiftY - height + pageX,\\n          pageHeight - y - shiftX - width + pageY,\\n          x - shiftY + pageX,\\n          pageHeight - y - shiftX + pageY,\\n        ];\\n      default:\\n        throw new Error(\\\"Invalid rotation\\\");\\n    }\\n  }\\n\\n  getRectInCurrentCoords(rect, pageHeight) {\\n    const [x1, y1, x2, y2] = rect;\\n\\n    const width = x2 - x1;\\n    const height = y2 - y1;\\n\\n    switch (this.rotation) {\\n      case 0:\\n        return [x1, pageHeight - y2, width, height];\\n      case 90:\\n        return [x1, pageHeight - y1, height, width];\\n      case 180:\\n        return [x2, pageHeight - y1, width, height];\\n      case 270:\\n        return [x2, pageHeight - y2, height, width];\\n      default:\\n        throw new Error(\\\"Invalid rotation\\\");\\n    }\\n  }\\n\\n  \u002F**\\n   * Executed once this editor has been rendered.\\n   * @param {boolean} focus - true if the editor should be focused.\\n   *\u002F\\n  onceAdded(focus) {}\\n\\n  \u002F**\\n   * Check if the editor contains something.\\n   * @returns {boolean}\\n   *\u002F\\n  isEmpty() {\\n    return false;\\n  }\\n\\n  \u002F**\\n   * Enable edit mode.\\n   * @returns {boolean} - true if the edit mode has been enabled.\\n   *\u002F\\n  enableEditMode() {\\n    if (this.isInEditMode()) {\\n      return false;\\n    }\\n    this.parent.setEditingState(false);\\n    this.#isInEditMode = true;\\n\\n    return true;\\n  }\\n\\n  \u002F**\\n   * Disable edit mode.\\n   * @returns {boolean} - true if the edit mode has been disabled.\\n   *\u002F\\n  disableEditMode() {\\n    if (!this.isInEditMode()) {\\n      return false;\\n    }\\n    this.parent.setEditingState(true);\\n    this.#isInEditMode = false;\\n\\n    return true;\\n  }\\n\\n  \u002F**\\n   * Check if the editor is edited.\\n   * @returns {boolean}\\n   *\u002F\\n  isInEditMode() {\\n    return this.#isInEditMode;\\n  }\\n\\n  \u002F**\\n   * If it returns true, then this editor handles the keyboard\\n   * events itself.\\n   * @returns {boolean}\\n   *\u002F\\n  shouldGetKeyboardEvents() {\\n    return this.#isResizerEnabledForKeyboard;\\n  }\\n\\n  \u002F**\\n   * Check if this editor needs to be rebuilt or not.\\n   * @returns {boolean}\\n   *\u002F\\n  needsToBeRebuilt() {\\n    return this.div && !this.isAttachedToDOM;\\n  }\\n\\n  get isOnScreen() {\\n    const { top, left, bottom, right } = this.getClientDimensions();\\n    const { innerHeight, innerWidth } = window;\\n    return left \u003C innerWidth && right > 0 && top \u003C innerHeight && bottom > 0;\\n  }\\n\\n  #addFocusListeners() {\\n    if (this.#focusAC || !this.div) {\\n      return;\\n    }\\n    this.#focusAC = new AbortController();\\n    const signal = this._uiManager.combinedSignal(this.#focusAC);\\n\\n    this.div.addEventListener(\\\"focusin\\\", this.focusin.bind(this), { signal });\\n    this.div.addEventListener(\\\"focusout\\\", this.focusout.bind(this), { signal });\\n  }\\n\\n  \u002F**\\n   * Rebuild the editor in case it has been removed on undo.\\n   *\\n   * To implement in subclasses.\\n   *\u002F\\n  rebuild() {\\n    this.#addFocusListeners();\\n  }\\n\\n  \u002F**\\n   * Rotate the editor when the page is rotated.\\n   * @param {number} angle\\n   *\u002F\\n  rotate(_angle) {}\\n\\n  \u002F**\\n   * Resize the editor when the page is resized.\\n   *\u002F\\n  resize() {}\\n\\n  \u002F**\\n   * Serialize the editor when it has been deleted.\\n   * @returns {Object}\\n   *\u002F\\n  serializeDeleted() {\\n    return {\\n      id: this.annotationElementId,\\n      deleted: true,\\n      pageIndex: this.pageIndex,\\n      popupRef: this._initialData?.popupRef || \\\"\\\",\\n    };\\n  }\\n\\n  \u002F**\\n   * Serialize the editor.\\n   * The result of the serialization will be used to construct a\\n   * new annotation to add to the pdf document.\\n   *\\n   * To implement in subclasses.\\n   * @param {boolean} [isForCopying]\\n   * @param {Object | null} [context]\\n   * @returns {Object | null}\\n   *\u002F\\n  serialize(isForCopying = false, context = null) {\\n    unreachable(\\\"An editor must be serializable\\\");\\n  }\\n\\n  \u002F**\\n   * Deserialize the editor.\\n   * The result of the deserialization is a new editor.\\n   *\\n   * @param {Object} data\\n   * @param {AnnotationEditorLayer} parent\\n   * @param {AnnotationEditorUIManager} uiManager\\n   * @returns {Promise\u003CAnnotationEditor | null>}\\n   *\u002F\\n  static async deserialize(data, parent, uiManager) {\\n    const editor = new this.prototype.constructor({\\n      parent,\\n      id: parent.getNextId(),\\n      uiManager,\\n    });\\n    editor.rotation = data.rotation;\\n    editor.#accessibilityData = data.accessibilityData;\\n    editor._isCopy = data.isCopy || false;\\n\\n    const [pageWidth, pageHeight] = editor.pageDimensions;\\n    const [x, y, width, height] = editor.getRectInCurrentCoords(\\n      data.rect,\\n      pageHeight\\n    );\\n\\n    editor.x = x \u002F pageWidth;\\n    editor.y = y \u002F pageHeight;\\n    editor.width = width \u002F pageWidth;\\n    editor.height = height \u002F pageHeight;\\n\\n    return editor;\\n  }\\n\\n  \u002F**\\n   * Check if an existing annotation associated with this editor has been\\n   * modified.\\n   * @returns {boolean}\\n   *\u002F\\n  get hasBeenModified() {\\n    return (\\n      !!this.annotationElementId && (this.deleted || this.serialize() !== null)\\n    );\\n  }\\n\\n  \u002F**\\n   * Remove this editor.\\n   * It's used on ctrl+backspace action.\\n   *\u002F\\n  remove() {\\n    this.#focusAC?.abort();\\n    this.#focusAC = null;\\n\\n    if (!this.isEmpty()) {\\n      \u002F\u002F The editor is removed but it can be back at some point thanks to\\n      \u002F\u002F undo\u002Fredo so we must commit it before.\\n      this.commit();\\n    }\\n    if (this.parent) {\\n      this.parent.remove(this);\\n    } else {\\n      this._uiManager.removeEditor(this);\\n    }\\n\\n    if (this.#moveInDOMTimeout) {\\n      clearTimeout(this.#moveInDOMTimeout);\\n      this.#moveInDOMTimeout = null;\\n    }\\n    this.#stopResizing();\\n    this.removeEditToolbar();\\n    if (this.#telemetryTimeouts) {\\n      for (const timeout of this.#telemetryTimeouts.values()) {\\n        clearTimeout(timeout);\\n      }\\n      this.#telemetryTimeouts = null;\\n    }\\n    this.parent = null;\\n    this.#touchManager?.destroy();\\n    this.#touchManager = null;\\n  }\\n\\n  \u002F**\\n   * @returns {boolean} true if this editor can be resized.\\n   *\u002F\\n  get isResizable() {\\n    return false;\\n  }\\n\\n  \u002F**\\n   * Add the resizers to this editor.\\n   *\u002F\\n  makeResizable() {\\n    if (this.isResizable) {\\n      this.#createResizers();\\n      this.#resizersDiv.classList.remove(\\\"hidden\\\");\\n    }\\n  }\\n\\n  get toolbarPosition() {\\n    return null;\\n  }\\n\\n  \u002F**\\n   * onkeydown callback.\\n   * @param {KeyboardEvent} event\\n   *\u002F\\n  keydown(event) {\\n    if (\\n      !this.isResizable ||\\n      event.target !== this.div ||\\n      event.key !== \\\"Enter\\\"\\n    ) {\\n      return;\\n    }\\n    this._uiManager.setSelected(this);\\n    this.#savedDimensions = {\\n      savedX: this.x,\\n      savedY: this.y,\\n      savedWidth: this.width,\\n      savedHeight: this.height,\\n    };\\n    const children = this.#resizersDiv.children;\\n    if (!this.#allResizerDivs) {\\n      this.#allResizerDivs = Array.from(children);\\n      const boundResizerKeydown = this.#resizerKeydown.bind(this);\\n      const boundResizerBlur = this.#resizerBlur.bind(this);\\n      const signal = this._uiManager._signal;\\n      for (const div of this.#allResizerDivs) {\\n        const name = div.getAttribute(\\\"data-resizer-name\\\");\\n        div.setAttribute(\\\"role\\\", \\\"spinbutton\\\");\\n        div.addEventListener(\\\"keydown\\\", boundResizerKeydown, { signal });\\n        div.addEventListener(\\\"blur\\\", boundResizerBlur, { signal });\\n        div.addEventListener(\\\"focus\\\", this.#resizerFocus.bind(this, name), {\\n          signal,\\n        });\\n        div.setAttribute(\\\"data-l10n-id\\\", AnnotationEditor._l10nResizer[name]);\\n      }\\n    }\\n\\n    \u002F\u002F We want to have the resizers in the visual order, so we move the first\\n    \u002F\u002F (top-left) to the right place.\\n    const first = this.#allResizerDivs[0];\\n    let firstPosition = 0;\\n    for (const div of children) {\\n      if (div === first) {\\n        break;\\n      }\\n      firstPosition++;\\n    }\\n    const nextFirstPosition =\\n      (((360 - this.rotation + this.parentRotation) % 360) \u002F 90) *\\n      (this.#allResizerDivs.length \u002F 4);\\n\\n    if (nextFirstPosition !== firstPosition) {\\n      \u002F\u002F We need to reorder the resizers in the DOM in order to have the focus\\n      \u002F\u002F on the top-left one.\\n      if (nextFirstPosition \u003C firstPosition) {\\n        for (let i = 0; i \u003C firstPosition - nextFirstPosition; i++) {\\n          this.#resizersDiv.append(this.#resizersDiv.firstChild);\\n        }\\n      } else if (nextFirstPosition > firstPosition) {\\n        for (let i = 0; i \u003C nextFirstPosition - firstPosition; i++) {\\n          this.#resizersDiv.firstChild.before(this.#resizersDiv.lastChild);\\n        }\\n      }\\n\\n      let i = 0;\\n      for (const child of children) {\\n        const div = this.#allResizerDivs[i++];\\n        const name = div.getAttribute(\\\"data-resizer-name\\\");\\n        child.setAttribute(\\\"data-l10n-id\\\", AnnotationEditor._l10nResizer[name]);\\n      }\\n    }\\n\\n    this.#setResizerTabIndex(0);\\n    this.#isResizerEnabledForKeyboard = true;\\n    this.#resizersDiv.firstChild.focus({ focusVisible: true });\\n    event.preventDefault();\\n    event.stopImmediatePropagation();\\n  }\\n\\n  #resizerKeydown(event) {\\n    AnnotationEditor._resizerKeyboardManager.exec(this, event);\\n  }\\n\\n  #resizerBlur(event) {\\n    if (\\n      this.#isResizerEnabledForKeyboard &&\\n      event.relatedTarget?.parentNode !== this.#resizersDiv\\n    ) {\\n      this.#stopResizing();\\n    }\\n  }\\n\\n  #resizerFocus(name) {\\n    this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : \\\"\\\";\\n  }\\n\\n  #setResizerTabIndex(value) {\\n    if (!this.#allResizerDivs) {\\n      return;\\n    }\\n    for (const div of this.#allResizerDivs) {\\n      div.tabIndex = value;\\n    }\\n  }\\n\\n  _resizeWithKeyboard(x, y) {\\n    if (!this.#isResizerEnabledForKeyboard) {\\n      return;\\n    }\\n    this.#resizerPointermove(this.#focusedResizerName, {\\n      deltaX: x,\\n      deltaY: y,\\n      fromKeyboard: true,\\n    });\\n  }\\n\\n  #stopResizing() {\\n    this.#isResizerEnabledForKeyboard = false;\\n    this.#setResizerTabIndex(-1);\\n    this.#addResizeToUndoStack();\\n  }\\n\\n  _stopResizingWithKeyboard() {\\n    this.#stopResizing();\\n    this.div.focus();\\n  }\\n\\n  \u002F**\\n   * Select this editor.\\n   *\u002F\\n  select() {\\n    if (this.isSelected && this._editToolbar) {\\n      return;\\n    }\\n    this.isSelected = true;\\n    this.makeResizable();\\n    this.div?.classList.add(\\\"selectedEditor\\\");\\n    if (!this._editToolbar) {\\n      this.addEditToolbar().then(() => {\\n        if (this.div?.classList.contains(\\\"selectedEditor\\\")) {\\n          \u002F\u002F The editor can have been unselected while we were waiting for the\\n          \u002F\u002F edit toolbar to be created, hence we want to be sure that this\\n          \u002F\u002F editor is still selected.\\n          this._editToolbar?.show();\\n        }\\n      });\\n      return;\\n    }\\n    this._editToolbar?.show();\\n    this.#altText?.toggleAltTextBadge(false);\\n  }\\n\\n  \u002F**\\n   * Unselect this editor.\\n   *\u002F\\n  unselect() {\\n    if (!this.isSelected) {\\n      return;\\n    }\\n    this.isSelected = false;\\n    this.#resizersDiv?.classList.add(\\\"hidden\\\");\\n    this.div?.classList.remove(\\\"selectedEditor\\\");\\n    if (this.div?.contains(document.activeElement)) {\\n      \u002F\u002F Don't use this.div.blur() because we don't know where the focus will\\n      \u002F\u002F go.\\n      this._uiManager.currentLayer.div.focus({\\n        preventScroll: true,\\n      });\\n    }\\n    this._editToolbar?.hide();\\n    this.#altText?.toggleAltTextBadge(true);\\n  }\\n\\n  \u002F**\\n   * Update some parameters which have been changed through the UI.\\n   * @param {number} type\\n   * @param {*} value\\n   *\u002F\\n  updateParams(type, value) {}\\n\\n  \u002F**\\n   * When the user disables the editing mode some editors can change some of\\n   * their properties.\\n   *\u002F\\n  disableEditing() {}\\n\\n  \u002F**\\n   * When the user enables the editing mode some editors can change some of\\n   * their properties.\\n   *\u002F\\n  enableEditing() {}\\n\\n  \u002F**\\n   * Check if the content of this editor can be changed.\\n   * For example, a FreeText editor can be changed (the user can change the\\n   * text), but a Stamp editor cannot.\\n   * @returns {boolean}\\n   *\u002F\\n  get canChangeContent() {\\n    return false;\\n  }\\n\\n  \u002F**\\n   * The editor is about to be edited.\\n   *\u002F\\n  enterInEditMode() {\\n    if (!this.canChangeContent) {\\n      return;\\n    }\\n    this.enableEditMode();\\n    this.div.focus();\\n  }\\n\\n  \u002F**\\n   * ondblclick callback.\\n   * @param {MouseEvent} event\\n   *\u002F\\n  dblclick(event) {\\n    this.enterInEditMode();\\n    this.parent.updateToolbar({\\n      mode: this.constructor._editorType,\\n      editId: this.id,\\n    });\\n  }\\n\\n  \u002F**\\n   * @returns {HTMLElement | null} the element requiring an alt text.\\n   *\u002F\\n  getElementForAltText() {\\n    return this.div;\\n  }\\n\\n  \u002F**\\n   * Get the div which really contains the displayed content.\\n   * @returns {HTMLDivElement | undefined}\\n   *\u002F\\n  get contentDiv() {\\n    return this.div;\\n  }\\n\\n  \u002F**\\n   * If true then the editor is currently edited.\\n   * @type {boolean}\\n   *\u002F\\n  get isEditing() {\\n    return this.#isEditing;\\n  }\\n\\n  \u002F**\\n   * When set to true, it means that this editor is currently edited.\\n   * @param {boolean} value\\n   *\u002F\\n  set isEditing(value) {\\n    this.#isEditing = value;\\n    if (!this.parent) {\\n      return;\\n    }\\n    if (value) {\\n      this.parent.setSelected(this);\\n      this.parent.setActiveEditor(this);\\n    } else {\\n      this.parent.setActiveEditor(null);\\n    }\\n  }\\n\\n  \u002F**\\n   * Set the aspect ratio to use when resizing.\\n   * @param {number} width\\n   * @param {number} height\\n   *\u002F\\n  setAspectRatio(width, height) {\\n    this.#keepAspectRatio = true;\\n    const aspectRatio = width \u002F height;\\n    const { style } = this.div;\\n    style.aspectRatio = aspectRatio;\\n    style.height = \\\"auto\\\";\\n  }\\n\\n  static get MIN_SIZE() {\\n    return 16;\\n  }\\n\\n  static canCreateNewEmptyEditor() {\\n    return true;\\n  }\\n\\n  \u002F**\\n   * Get the data to report to the telemetry when the editor is added.\\n   * @returns {Object}\\n   *\u002F\\n  get telemetryInitialData() {\\n    return { action: \\\"added\\\" };\\n  }\\n\\n  \u002F**\\n   * The telemetry data to use when saving\u002Fprinting.\\n   * @returns {Object|null}\\n   *\u002F\\n  get telemetryFinalData() {\\n    return null;\\n  }\\n\\n  _reportTelemetry(data, mustWait = false) {\\n    if (mustWait) {\\n      this.#telemetryTimeouts ||= new Map();\\n      const { action } = data;\\n      let timeout = this.#telemetryTimeouts.get(action);\\n      if (timeout) {\\n        clearTimeout(timeout);\\n      }\\n      timeout = setTimeout(() => {\\n        this._reportTelemetry(data);\\n        this.#telemetryTimeouts.delete(action);\\n        if (this.#telemetryTimeouts.size === 0) {\\n          this.#telemetryTimeouts = null;\\n        }\\n      }, AnnotationEditor._telemetryTimeout);\\n      this.#telemetryTimeouts.set(action, timeout);\\n      return;\\n    }\\n    data.type ||= this.editorType;\\n    this._uiManager._eventBus.dispatch(\\\"reporttelemetry\\\", {\\n      source: this,\\n      details: {\\n        type: \\\"editing\\\",\\n        data,\\n      },\\n    });\\n  }\\n\\n  \u002F**\\n   * Show or hide this editor.\\n   * @param {boolean|undefined} visible\\n   *\u002F\\n  show(visible = this._isVisible) {\\n    this.div.classList.toggle(\\\"hidden\\\", !visible);\\n    this._isVisible = visible;\\n  }\\n\\n  enable() {\\n    if (this.div) {\\n      this.div.tabIndex = 0;\\n    }\\n    this.#disabled = false;\\n  }\\n\\n  disable() {\\n    if (this.div) {\\n      this.div.tabIndex = -1;\\n    }\\n    this.#disabled = true;\\n  }\\n\\n  \u002F**\\n   * Render an annotation in the annotation layer.\\n   * @param {Object} annotation\\n   * @returns {HTMLElement|null}\\n   *\u002F\\n  renderAnnotationElement(annotation) {\\n    let content = annotation.container.querySelector(\\\".annotationContent\\\");\\n    if (!content) {\\n      content = document.createElement(\\\"div\\\");\\n      content.classList.add(\\\"annotationContent\\\", this.editorType);\\n      annotation.container.prepend(content);\\n    } else if (content.nodeName === \\\"CANVAS\\\") {\\n      const canvas = content;\\n      content = document.createElement(\\\"div\\\");\\n      content.classList.add(\\\"annotationContent\\\", this.editorType);\\n      canvas.before(content);\\n    }\\n\\n    return content;\\n  }\\n\\n  resetAnnotationElement(annotation) {\\n    const { firstChild } = annotation.container;\\n    if (\\n      firstChild?.nodeName === \\\"DIV\\\" &&\\n      firstChild.classList.contains(\\\"annotationContent\\\")\\n    ) {\\n      firstChild.remove();\\n    }\\n  }\\n}\\n\\n\u002F\u002F This class is used to fake an editor which has been deleted.\\nclass FakeEditor extends AnnotationEditor {\\n  constructor(params) {\\n    super(params);\\n    this.annotationElementId = params.annotationElementId;\\n    this.deleted = true;\\n  }\\n\\n  serialize() {\\n    return this.serializeDeleted();\\n  }\\n}\\n\\nexport { AnnotationEditor };\\n\",\"\u002F* Copyright 2014 Opera Software ASA\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\\n *\\n * Based on https:\u002F\u002Fcode.google.com\u002Fp\u002Fsmhasher\u002Fwiki\u002FMurmurHash3.\\n * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.\\n *\u002F\\n\\nconst SEED = 0xc3d2e1f0;\\n\u002F\u002F Workaround for missing math precision in JS.\\nconst MASK_HIGH = 0xffff0000;\\nconst MASK_LOW = 0xffff;\\n\\nclass MurmurHash3_64 {\\n  constructor(seed) {\\n    this.h1 = seed ? seed & 0xffffffff : SEED;\\n    this.h2 = seed ? seed & 0xffffffff : SEED;\\n  }\\n\\n  update(input) {\\n    let data, length;\\n    if (typeof input === \\\"string\\\") {\\n      data = new Uint8Array(input.length * 2);\\n      length = 0;\\n      for (let i = 0, ii = input.length; i \u003C ii; i++) {\\n        const code = input.charCodeAt(i);\\n        if (code \u003C= 0xff) {\\n          data[length++] = code;\\n        } else {\\n          data[length++] = code >>> 8;\\n          data[length++] = code & 0xff;\\n        }\\n      }\\n    } else if (ArrayBuffer.isView(input)) {\\n      data = input.slice();\\n      length = data.byteLength;\\n    } else {\\n      throw new Error(\\\"Invalid data format, must be a string or TypedArray.\\\");\\n    }\\n\\n    const blockCounts = length >> 2;\\n    const tailLength = length - blockCounts * 4;\\n    \u002F\u002F We don't care about endianness here.\\n    const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\\n    let k1 = 0,\\n      k2 = 0;\\n    let h1 = this.h1,\\n      h2 = this.h2;\\n    const C1 = 0xcc9e2d51,\\n      C2 = 0x1b873593;\\n    const C1_LOW = C1 & MASK_LOW,\\n      C2_LOW = C2 & MASK_LOW;\\n\\n    for (let i = 0; i \u003C blockCounts; i++) {\\n      if (i & 1) {\\n        k1 = dataUint32[i];\\n        k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\\n        k1 = (k1 \u003C\u003C 15) | (k1 >>> 17);\\n        k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\\n        h1 ^= k1;\\n        h1 = (h1 \u003C\u003C 13) | (h1 >>> 19);\\n        h1 = h1 * 5 + 0xe6546b64;\\n      } else {\\n        k2 = dataUint32[i];\\n        k2 = ((k2 * C1) & MASK_HIGH) | ((k2 * C1_LOW) & MASK_LOW);\\n        k2 = (k2 \u003C\u003C 15) | (k2 >>> 17);\\n        k2 = ((k2 * C2) & MASK_HIGH) | ((k2 * C2_LOW) & MASK_LOW);\\n        h2 ^= k2;\\n        h2 = (h2 \u003C\u003C 13) | (h2 >>> 19);\\n        h2 = h2 * 5 + 0xe6546b64;\\n      }\\n    }\\n\\n    k1 = 0;\\n\\n    switch (tailLength) {\\n      case 3:\\n        k1 ^= data[blockCounts * 4 + 2] \u003C\u003C 16;\\n      \u002F* falls through *\u002F\\n      case 2:\\n        k1 ^= data[blockCounts * 4 + 1] \u003C\u003C 8;\\n      \u002F* falls through *\u002F\\n      case 1:\\n        k1 ^= data[blockCounts * 4];\\n        \u002F* falls through *\u002F\\n\\n        k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\\n        k1 = (k1 \u003C\u003C 15) | (k1 >>> 17);\\n        k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\\n        if (blockCounts & 1) {\\n          h1 ^= k1;\\n        } else {\\n          h2 ^= k1;\\n        }\\n    }\\n\\n    this.h1 = h1;\\n    this.h2 = h2;\\n  }\\n\\n  hexdigest() {\\n    let h1 = this.h1,\\n      h2 = this.h2;\\n\\n    h1 ^= h2 >>> 1;\\n    h1 = ((h1 * 0xed558ccd) & MASK_HIGH) | ((h1 * 0x8ccd) & MASK_LOW);\\n    h2 =\\n      ((h2 * 0xff51afd7) & MASK_HIGH) |\\n      (((((h2 \u003C\u003C 16) | (h1 >>> 16)) * 0xafd7ed55) & MASK_HIGH) >>> 16);\\n    h1 ^= h2 >>> 1;\\n    h1 = ((h1 * 0x1a85ec53) & MASK_HIGH) | ((h1 * 0xec53) & MASK_LOW);\\n    h2 =\\n      ((h2 * 0xc4ceb9fe) & MASK_HIGH) |\\n      (((((h2 \u003C\u003C 16) | (h1 >>> 16)) * 0xb9fe1a85) & MASK_HIGH) >>> 16);\\n    h1 ^= h2 >>> 1;\\n\\n    return (\\n      (h1 >>> 0).toString(16).padStart(8, \\\"0\\\") +\\n      (h2 >>> 0).toString(16).padStart(8, \\\"0\\\")\\n    );\\n  }\\n}\\n\\nexport { MurmurHash3_64 };\\n\",\"\u002F* Copyright 2020 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { shadow, unreachable } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { AnnotationEditor } from \\\".\u002Feditor\u002Feditor.js\\\";\\nimport { MurmurHash3_64 } from \\\"..\u002Fshared\u002Fmurmurhash3.js\\\";\\n\\nconst SerializableEmpty = Object.freeze({\\n  map: null,\\n  hash: \\\"\\\",\\n  transfer: undefined,\\n});\\n\\n\u002F**\\n * Key\u002Fvalue storage for annotation data in forms.\\n *\u002F\\nclass AnnotationStorage {\\n  #modified = false;\\n\\n  #modifiedIds = null;\\n\\n  #storage = new Map();\\n\\n  constructor() {\\n    \u002F\u002F Callbacks to signal when the modification state is set or reset.\\n    \u002F\u002F This is used by the viewer to only bind on `beforeunload` if forms\\n    \u002F\u002F are actually edited to prevent doing so unconditionally since that\\n    \u002F\u002F can have undesirable effects.\\n    this.onSetModified = null;\\n    this.onResetModified = null;\\n    this.onAnnotationEditor = null;\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      \u002F\u002F For testing purposes.\\n      Object.defineProperty(this, \\\"_setValues\\\", {\\n        value: obj => {\\n          for (const [key, val] of Object.entries(obj)) {\\n            this.setValue(key, val);\\n          }\\n        },\\n      });\\n    }\\n  }\\n\\n  \u002F**\\n   * Get the value for a given key if it exists, or return the default value.\\n   * @param {string} key\\n   * @param {Object} defaultValue\\n   * @returns {Object}\\n   *\u002F\\n  getValue(key, defaultValue) {\\n    const value = this.#storage.get(key);\\n    if (value === undefined) {\\n      return defaultValue;\\n    }\\n\\n    return Object.assign(defaultValue, value);\\n  }\\n\\n  \u002F**\\n   * Get the value for a given key.\\n   * @param {string} key\\n   * @returns {Object}\\n   *\u002F\\n  getRawValue(key) {\\n    return this.#storage.get(key);\\n  }\\n\\n  \u002F**\\n   * Remove a value from the storage.\\n   * @param {string} key\\n   *\u002F\\n  remove(key) {\\n    this.#storage.delete(key);\\n\\n    if (this.#storage.size === 0) {\\n      this.resetModified();\\n    }\\n\\n    if (typeof this.onAnnotationEditor === \\\"function\\\") {\\n      for (const value of this.#storage.values()) {\\n        if (value instanceof AnnotationEditor) {\\n          return;\\n        }\\n      }\\n      this.onAnnotationEditor(null);\\n    }\\n  }\\n\\n  \u002F**\\n   * Set the value for a given key\\n   * @param {string} key\\n   * @param {Object} value\\n   *\u002F\\n  setValue(key, value) {\\n    const obj = this.#storage.get(key);\\n    let modified = false;\\n    if (obj !== undefined) {\\n      for (const [entry, val] of Object.entries(value)) {\\n        if (obj[entry] !== val) {\\n          modified = true;\\n          obj[entry] = val;\\n        }\\n      }\\n    } else {\\n      modified = true;\\n      this.#storage.set(key, value);\\n    }\\n    if (modified) {\\n      this.#setModified();\\n    }\\n\\n    if (\\n      value instanceof AnnotationEditor &&\\n      typeof this.onAnnotationEditor === \\\"function\\\"\\n    ) {\\n      this.onAnnotationEditor(value.constructor._type);\\n    }\\n  }\\n\\n  \u002F**\\n   * Check if the storage contains the given key.\\n   * @param {string} key\\n   * @returns {boolean}\\n   *\u002F\\n  has(key) {\\n    return this.#storage.has(key);\\n  }\\n\\n  get size() {\\n    return this.#storage.size;\\n  }\\n\\n  #setModified() {\\n    if (!this.#modified) {\\n      this.#modified = true;\\n      if (typeof this.onSetModified === \\\"function\\\") {\\n        this.onSetModified();\\n      }\\n    }\\n  }\\n\\n  resetModified() {\\n    if (this.#modified) {\\n      this.#modified = false;\\n      if (typeof this.onResetModified === \\\"function\\\") {\\n        this.onResetModified();\\n      }\\n    }\\n  }\\n\\n  \u002F**\\n   * @returns {PrintAnnotationStorage}\\n   *\u002F\\n  get print() {\\n    return new PrintAnnotationStorage(this);\\n  }\\n\\n  \u002F**\\n   * PLEASE NOTE: Only intended for usage within the API itself.\\n   * @ignore\\n   *\u002F\\n  get serializable() {\\n    if (this.#storage.size === 0) {\\n      return SerializableEmpty;\\n    }\\n    const map = new Map(),\\n      hash = new MurmurHash3_64(),\\n      transfer = [];\\n    const context = Object.create(null);\\n    let hasBitmap = false;\\n\\n    for (const [key, val] of this.#storage) {\\n      const serialized =\\n        val instanceof AnnotationEditor\\n          ? val.serialize(\u002F* isForCopying = *\u002F false, context)\\n          : val;\\n      if (serialized) {\\n        map.set(key, serialized);\\n\\n        hash.update(`${key}:${JSON.stringify(serialized)}`);\\n        hasBitmap ||= !!serialized.bitmap;\\n      }\\n    }\\n\\n    if (hasBitmap) {\\n      \u002F\u002F We must transfer the bitmap data separately, since it can be changed\\n      \u002F\u002F during serialization with SVG images.\\n      for (const value of map.values()) {\\n        if (value.bitmap) {\\n          transfer.push(value.bitmap);\\n        }\\n      }\\n    }\\n\\n    return map.size > 0\\n      ? { map, hash: hash.hexdigest(), transfer }\\n      : SerializableEmpty;\\n  }\\n\\n  get editorStats() {\\n    let stats = null;\\n    const typeToEditor = new Map();\\n    for (const value of this.#storage.values()) {\\n      if (!(value instanceof AnnotationEditor)) {\\n        continue;\\n      }\\n      const editorStats = value.telemetryFinalData;\\n      if (!editorStats) {\\n        continue;\\n      }\\n      const { type } = editorStats;\\n      if (!typeToEditor.has(type)) {\\n        typeToEditor.set(type, Object.getPrototypeOf(value).constructor);\\n      }\\n      stats ||= Object.create(null);\\n      const map = (stats[type] ||= new Map());\\n      for (const [key, val] of Object.entries(editorStats)) {\\n        if (key === \\\"type\\\") {\\n          continue;\\n        }\\n        let counters = map.get(key);\\n        if (!counters) {\\n          counters = new Map();\\n          map.set(key, counters);\\n        }\\n        const count = counters.get(val) ?? 0;\\n        counters.set(val, count + 1);\\n      }\\n    }\\n    for (const [type, editor] of typeToEditor) {\\n      stats[type] = editor.computeTelemetryFinalData(stats[type]);\\n    }\\n    return stats;\\n  }\\n\\n  resetModifiedIds() {\\n    this.#modifiedIds = null;\\n  }\\n\\n  \u002F**\\n   * @returns {{ids: Set\u003Cstring>, hash: string}}\\n   *\u002F\\n  get modifiedIds() {\\n    if (this.#modifiedIds) {\\n      return this.#modifiedIds;\\n    }\\n    const ids = [];\\n    for (const value of this.#storage.values()) {\\n      if (\\n        !(value instanceof AnnotationEditor) ||\\n        !value.annotationElementId ||\\n        !value.serialize()\\n      ) {\\n        continue;\\n      }\\n      ids.push(value.annotationElementId);\\n    }\\n    return (this.#modifiedIds = {\\n      ids: new Set(ids),\\n      hash: ids.join(\\\",\\\"),\\n    });\\n  }\\n\\n  [Symbol.iterator]() {\\n    return this.#storage.entries();\\n  }\\n}\\n\\n\u002F**\\n * A special `AnnotationStorage` for use during printing, where the serializable\\n * data is *frozen* upon initialization, to prevent scripting from modifying its\\n * contents. (Necessary since printing is triggered synchronously in browsers.)\\n *\u002F\\nclass PrintAnnotationStorage extends AnnotationStorage {\\n  #serializable;\\n\\n  constructor(parent) {\\n    super();\\n    const { map, hash, transfer } = parent.serializable;\\n    \u002F\u002F Create a *copy* of the data, since Objects are passed by reference in JS.\\n    const clone = structuredClone(map, transfer ? { transfer } : null);\\n\\n    this.#serializable = { map: clone, hash, transfer };\\n  }\\n\\n  \u002F**\\n   * @returns {PrintAnnotationStorage}\\n   *\u002F\\n  \u002F\u002F eslint-disable-next-line getter-return\\n  get print() {\\n    unreachable(\\\"Should not call PrintAnnotationStorage.print\\\");\\n  }\\n\\n  \u002F**\\n   * PLEASE NOTE: Only intended for usage within the API itself.\\n   * @ignore\\n   *\u002F\\n  get serializable() {\\n    return this.#serializable;\\n  }\\n\\n  get modifiedIds() {\\n    return shadow(this, \\\"modifiedIds\\\", {\\n      ids: new Set(),\\n      hash: \\\"\\\",\\n    });\\n  }\\n}\\n\\nexport { AnnotationStorage, PrintAnnotationStorage, SerializableEmpty };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  assert,\\n  FeatureTest,\\n  isNodeJS,\\n  shadow,\\n  string32,\\n  toBase64Util,\\n  unreachable,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nclass FontLoader {\\n  #systemFonts = new Set();\\n\\n  constructor({\\n    ownerDocument = globalThis.document,\\n    styleElement = null, \u002F\u002F For testing only.\\n  }) {\\n    this._document = ownerDocument;\\n\\n    this.nativeFontFaces = new Set();\\n    this.styleElement =\\n      typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")\\n        ? styleElement\\n        : null;\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      this.loadingRequests = [];\\n      this.loadTestFontId = 0;\\n    }\\n  }\\n\\n  addNativeFontFace(nativeFontFace) {\\n    this.nativeFontFaces.add(nativeFontFace);\\n    this._document.fonts.add(nativeFontFace);\\n  }\\n\\n  removeNativeFontFace(nativeFontFace) {\\n    this.nativeFontFaces.delete(nativeFontFace);\\n    this._document.fonts.delete(nativeFontFace);\\n  }\\n\\n  insertRule(rule) {\\n    if (!this.styleElement) {\\n      this.styleElement = this._document.createElement(\\\"style\\\");\\n      this._document.documentElement\\n        .getElementsByTagName(\\\"head\\\")[0]\\n        .append(this.styleElement);\\n    }\\n    const styleSheet = this.styleElement.sheet;\\n    styleSheet.insertRule(rule, styleSheet.cssRules.length);\\n  }\\n\\n  clear() {\\n    for (const nativeFontFace of this.nativeFontFaces) {\\n      this._document.fonts.delete(nativeFontFace);\\n    }\\n    this.nativeFontFaces.clear();\\n    this.#systemFonts.clear();\\n\\n    if (this.styleElement) {\\n      \u002F\u002F Note: ChildNode.remove doesn't throw if the parentNode is undefined.\\n      this.styleElement.remove();\\n      this.styleElement = null;\\n    }\\n  }\\n\\n  async loadSystemFont({\\n    systemFontInfo: info,\\n    disableFontFace,\\n    _inspectFont,\\n  }) {\\n    if (!info || this.#systemFonts.has(info.loadedName)) {\\n      return;\\n    }\\n    assert(\\n      !disableFontFace,\\n      \\\"loadSystemFont shouldn't be called when `disableFontFace` is set.\\\"\\n    );\\n\\n    if (this.isFontLoadingAPISupported) {\\n      const { loadedName, src, style } = info;\\n      const fontFace = new FontFace(loadedName, src, style);\\n      this.addNativeFontFace(fontFace);\\n      try {\\n        await fontFace.load();\\n        this.#systemFonts.add(loadedName);\\n        _inspectFont?.(info);\\n      } catch {\\n        warn(\\n          `Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`\\n        );\\n\\n        this.removeNativeFontFace(fontFace);\\n      }\\n      return;\\n    }\\n\\n    unreachable(\\n      \\\"Not implemented: loadSystemFont without the Font Loading API.\\\"\\n    );\\n  }\\n\\n  async bind(font) {\\n    \u002F\u002F Add the font to the DOM only once; skip if the font is already loaded.\\n    if (font.attached || (font.missingFile && !font.systemFontInfo)) {\\n      return;\\n    }\\n    font.attached = true;\\n\\n    if (font.systemFontInfo) {\\n      await this.loadSystemFont(font);\\n      return;\\n    }\\n\\n    if (this.isFontLoadingAPISupported) {\\n      const nativeFontFace = font.createNativeFontFace();\\n      if (nativeFontFace) {\\n        this.addNativeFontFace(nativeFontFace);\\n        try {\\n          await nativeFontFace.loaded;\\n        } catch (ex) {\\n          warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\\n\\n          \u002F\u002F When font loading failed, fall back to the built-in font renderer.\\n          font.disableFontFace = true;\\n          throw ex;\\n        }\\n      }\\n      return; \u002F\u002F The font was, asynchronously, loaded.\\n    }\\n\\n    \u002F\u002F !this.isFontLoadingAPISupported\\n    const rule = font.createFontFaceRule();\\n    if (rule) {\\n      this.insertRule(rule);\\n\\n      if (this.isSyncFontLoadingSupported) {\\n        return; \u002F\u002F The font was, synchronously, loaded.\\n      }\\n      if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n        throw new Error(\\\"Not implemented: async font loading\\\");\\n      }\\n      await new Promise(resolve => {\\n        const request = this._queueLoadingCallback(resolve);\\n        this._prepareFontLoadEvent(font, request);\\n      });\\n      \u002F\u002F The font was, asynchronously, loaded.\\n    }\\n  }\\n\\n  get isFontLoadingAPISupported() {\\n    const hasFonts = !!this._document?.fonts;\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      return shadow(\\n        this,\\n        \\\"isFontLoadingAPISupported\\\",\\n        hasFonts && !this.styleElement\\n      );\\n    }\\n    return shadow(this, \\\"isFontLoadingAPISupported\\\", hasFonts);\\n  }\\n\\n  get isSyncFontLoadingSupported() {\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      return shadow(this, \\\"isSyncFontLoadingSupported\\\", true);\\n    }\\n\\n    \u002F\u002F Node.js - we can pretend that sync font loading is supported.\\n    \u002F\u002F Firefox, from version 14, supports synchronous font loading.\\n    return shadow(\\n      this,\\n      \\\"isSyncFontLoadingSupported\\\",\\n      (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"CHROME\\\")) &&\\n        (isNodeJS || FeatureTest.platform.isFirefox)\\n    );\\n  }\\n\\n  _queueLoadingCallback(callback) {\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      throw new Error(\\\"Not implemented: _queueLoadingCallback\\\");\\n    }\\n\\n    function completeRequest() {\\n      assert(!request.done, \\\"completeRequest() cannot be called twice.\\\");\\n      request.done = true;\\n\\n      \u002F\u002F Sending all completed requests in order of how they were queued.\\n      while (loadingRequests.length > 0 && loadingRequests[0].done) {\\n        const otherRequest = loadingRequests.shift();\\n        setTimeout(otherRequest.callback, 0);\\n      }\\n    }\\n\\n    const { loadingRequests } = this;\\n    const request = {\\n      done: false,\\n      complete: completeRequest,\\n      callback,\\n    };\\n    loadingRequests.push(request);\\n    return request;\\n  }\\n\\n  get _loadTestFont() {\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      throw new Error(\\\"Not implemented: _loadTestFont\\\");\\n    }\\n\\n    \u002F\u002F This is a CFF font with 1 glyph for '.' that fills its entire width\\n    \u002F\u002F and height.\\n    const testFont = atob(\\n      \\\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\\\" +\\n        \\\"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk\u002FxVFDQAA\\\" +\\n        \\\"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\\\" +\\n        \\\"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T\u002FhgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\\\" +\\n        \\\"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\\\" +\\n        \\\"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\\\" +\\n        \\\"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\\\" +\\n        \\\"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\\\" +\\n        \\\"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\\\" +\\n        \\\"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\\\" +\\n        \\\"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\\\" +\\n        \\\"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7\u002F\u002FwAA\\\" +\\n        \\\"AC7\u002F\u002F\u002F\u002FTAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\" +\\n        \\\"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\" +\\n        \\\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\" +\\n        \\\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\" +\\n        \\\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\\\" +\\n        \\\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD\u002FgwAyAAAAAQAAAAAAAAAAAAAAAAAA\\\" +\\n        \\\"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA\u002FgXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\\\" +\\n        \\\"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE\u002Ft3\\\" +\\n        \\\"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\\\" +\\n        \\\"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\\\"\\n    );\\n    return shadow(this, \\\"_loadTestFont\\\", testFont);\\n  }\\n\\n  _prepareFontLoadEvent(font, request) {\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      throw new Error(\\\"Not implemented: _prepareFontLoadEvent\\\");\\n    }\\n\\n    \u002F** Hack begin *\u002F\\n    \u002F\u002F There's currently no event when a font has finished downloading so the\\n    \u002F\u002F following code is a dirty hack to 'guess' when a font is ready.\\n    \u002F\u002F It's assumed fonts are loaded in order, so add a known test font after\\n    \u002F\u002F the desired fonts and then test for the loading of that test font.\\n\\n    function int32(data, offset) {\\n      return (\\n        (data.charCodeAt(offset) \u003C\u003C 24) |\\n        (data.charCodeAt(offset + 1) \u003C\u003C 16) |\\n        (data.charCodeAt(offset + 2) \u003C\u003C 8) |\\n        (data.charCodeAt(offset + 3) & 0xff)\\n      );\\n    }\\n    function spliceString(s, offset, remove, insert) {\\n      const chunk1 = s.substring(0, offset);\\n      const chunk2 = s.substring(offset + remove);\\n      return chunk1 + insert + chunk2;\\n    }\\n    let i, ii;\\n\\n    \u002F\u002F The temporary canvas is used to determine if fonts are loaded.\\n    const canvas = this._document.createElement(\\\"canvas\\\");\\n    canvas.width = 1;\\n    canvas.height = 1;\\n    const ctx = canvas.getContext(\\\"2d\\\");\\n\\n    let called = 0;\\n    function isFontReady(name, callback) {\\n      \u002F\u002F With setTimeout clamping this gives the font ~100ms to load.\\n      if (++called > 30) {\\n        warn(\\\"Load test font never loaded.\\\");\\n        callback();\\n        return;\\n      }\\n      ctx.font = \\\"30px \\\" + name;\\n      ctx.fillText(\\\".\\\", 0, 20);\\n      const imageData = ctx.getImageData(0, 0, 1, 1);\\n      if (imageData.data[3] > 0) {\\n        callback();\\n        return;\\n      }\\n      setTimeout(isFontReady.bind(null, name, callback));\\n    }\\n\\n    const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\\n    \u002F\u002F Chromium seems to cache fonts based on a hash of the actual font data,\\n    \u002F\u002F so the font must be modified for each load test else it will appear to\\n    \u002F\u002F be loaded already.\\n    \u002F\u002F TODO: This could maybe be made faster by avoiding the btoa of the full\\n    \u002F\u002F font by splitting it in chunks before hand and padding the font id.\\n    let data = this._loadTestFont;\\n    const COMMENT_OFFSET = 976; \u002F\u002F has to be on 4 byte boundary (for checksum)\\n    data = spliceString(\\n      data,\\n      COMMENT_OFFSET,\\n      loadTestFontId.length,\\n      loadTestFontId\\n    );\\n    \u002F\u002F CFF checksum is important for IE, adjusting it\\n    const CFF_CHECKSUM_OFFSET = 16;\\n    const XXXX_VALUE = 0x58585858; \u002F\u002F the \\\"comment\\\" filled with 'X'\\n    let checksum = int32(data, CFF_CHECKSUM_OFFSET);\\n    for (i = 0, ii = loadTestFontId.length - 3; i \u003C ii; i += 4) {\\n      checksum = (checksum - XXXX_VALUE + int32(loadTestFontId, i)) | 0;\\n    }\\n    if (i \u003C loadTestFontId.length) {\\n      \u002F\u002F align to 4 bytes boundary\\n      checksum = (checksum - XXXX_VALUE + int32(loadTestFontId + \\\"XXX\\\", i)) | 0;\\n    }\\n    data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\\n\\n    const url = `url(data:font\u002Fopentype;base64,${btoa(data)});`;\\n    const rule = `@font-face {font-family:\\\"${loadTestFontId}\\\";src:${url}}`;\\n    this.insertRule(rule);\\n\\n    const div = this._document.createElement(\\\"div\\\");\\n    div.style.visibility = \\\"hidden\\\";\\n    div.style.width = div.style.height = \\\"10px\\\";\\n    div.style.position = \\\"absolute\\\";\\n    div.style.top = div.style.left = \\\"0px\\\";\\n\\n    for (const name of [font.loadedName, loadTestFontId]) {\\n      const span = this._document.createElement(\\\"span\\\");\\n      span.textContent = \\\"Hi\\\";\\n      span.style.fontFamily = name;\\n      div.append(span);\\n    }\\n    this._document.body.append(div);\\n\\n    isFontReady(loadTestFontId, () => {\\n      div.remove();\\n      request.complete();\\n    });\\n    \u002F** Hack end *\u002F\\n  }\\n}\\n\\nclass FontFaceObject {\\n  constructor(translatedData, inspectFont = null) {\\n    this.compiledGlyphs = Object.create(null);\\n    \u002F\u002F importing translated data\\n    for (const i in translatedData) {\\n      this[i] = translatedData[i];\\n    }\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      if (typeof this.disableFontFace !== \\\"boolean\\\") {\\n        unreachable(\\\"disableFontFace must be available.\\\");\\n      }\\n      if (typeof this.fontExtraProperties !== \\\"boolean\\\") {\\n        unreachable(\\\"fontExtraProperties must be available.\\\");\\n      }\\n    }\\n    this._inspectFont = inspectFont;\\n  }\\n\\n  createNativeFontFace() {\\n    if (!this.data || this.disableFontFace) {\\n      return null;\\n    }\\n    let nativeFontFace;\\n    if (!this.cssFontInfo) {\\n      nativeFontFace = new FontFace(this.loadedName, this.data, {});\\n    } else {\\n      const css = {\\n        weight: this.cssFontInfo.fontWeight,\\n      };\\n      if (this.cssFontInfo.italicAngle) {\\n        css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\\n      }\\n      nativeFontFace = new FontFace(\\n        this.cssFontInfo.fontFamily,\\n        this.data,\\n        css\\n      );\\n    }\\n\\n    this._inspectFont?.(this);\\n    return nativeFontFace;\\n  }\\n\\n  createFontFaceRule() {\\n    if (!this.data || this.disableFontFace) {\\n      return null;\\n    }\\n    \u002F\u002F Add the @font-face rule to the document.\\n    const url = `url(data:${this.mimetype};base64,${toBase64Util(this.data)});`;\\n    let rule;\\n    if (!this.cssFontInfo) {\\n      rule = `@font-face {font-family:\\\"${this.loadedName}\\\";src:${url}}`;\\n    } else {\\n      let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\\n      if (this.cssFontInfo.italicAngle) {\\n        css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\\n      }\\n      rule = `@font-face {font-family:\\\"${this.cssFontInfo.fontFamily}\\\";${css}src:${url}}`;\\n    }\\n\\n    this._inspectFont?.(this, url);\\n    return rule;\\n  }\\n\\n  getPathGenerator(objs, character) {\\n    if (this.compiledGlyphs[character] !== undefined) {\\n      return this.compiledGlyphs[character];\\n    }\\n\\n    const objId = this.loadedName + \\\"_path_\\\" + character;\\n    let cmds;\\n    try {\\n      cmds = objs.get(objId);\\n    } catch (ex) {\\n      warn(`getPathGenerator - ignoring character: \\\"${ex}\\\".`);\\n    }\\n    const path = new Path2D(cmds || \\\"\\\");\\n\\n    if (!this.fontExtraProperties) {\\n      \u002F\u002F Remove the raw path-string, since we don't need it anymore.\\n      objs.delete(objId);\\n    }\\n    return (this.compiledGlyphs[character] = path);\\n  }\\n}\\n\\nexport { FontFaceObject, FontLoader };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  _isValidExplicitDest,\\n  isNodeJS,\\n  stringToBytes,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nfunction getUrlProp(val) {\\n  if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n    return null; \u002F\u002F The 'url' is unused with `PDFDataRangeTransport`.\\n  }\\n  if (val instanceof URL) {\\n    return val.href;\\n  }\\n  if (typeof val === \\\"string\\\") {\\n    if (\\n      typeof PDFJSDev !== \\\"undefined\\\" &&\\n      PDFJSDev.test(\\\"GENERIC\\\") &&\\n      isNodeJS\\n    ) {\\n      return val; \u002F\u002F Use the url as-is in Node.js environments.\\n    }\\n\\n    \u002F\u002F The full path is required in the 'url' field.\\n    const url = URL.parse(val, window.location);\\n    if (url) {\\n      return url.href;\\n    }\\n  }\\n  throw new Error(\\n    \\\"Invalid PDF url data: \\\" +\\n      \\\"either string or URL-object is expected in the url property.\\\"\\n  );\\n}\\n\\nfunction getDataProp(val) {\\n  \u002F\u002F Converting string or array-like data to Uint8Array.\\n  if (\\n    typeof PDFJSDev !== \\\"undefined\\\" &&\\n    PDFJSDev.test(\\\"GENERIC\\\") &&\\n    isNodeJS &&\\n    typeof Buffer !== \\\"undefined\\\" && \u002F\u002F eslint-disable-line no-undef\\n    val instanceof Buffer \u002F\u002F eslint-disable-line no-undef\\n  ) {\\n    throw new Error(\\n      \\\"Please provide binary data as `Uint8Array`, rather than `Buffer`.\\\"\\n    );\\n  }\\n  if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\\n    \u002F\u002F Use the data as-is when it's already a Uint8Array that completely\\n    \u002F\u002F \\\"utilizes\\\" its underlying ArrayBuffer, to prevent any possible\\n    \u002F\u002F issues when transferring it to the worker-thread.\\n    return val;\\n  }\\n  if (typeof val === \\\"string\\\") {\\n    return stringToBytes(val);\\n  }\\n  if (\\n    val instanceof ArrayBuffer ||\\n    ArrayBuffer.isView(val) ||\\n    (typeof val === \\\"object\\\" && !isNaN(val?.length))\\n  ) {\\n    return new Uint8Array(val);\\n  }\\n  throw new Error(\\n    \\\"Invalid PDF binary data: either TypedArray, \\\" +\\n      \\\"string, or array-like object is expected in the data property.\\\"\\n  );\\n}\\n\\nfunction getFactoryUrlProp(val) {\\n  if (typeof val !== \\\"string\\\") {\\n    return null;\\n  }\\n  if (val.endsWith(\\\"\u002F\\\")) {\\n    return val;\\n  }\\n  throw new Error(`Invalid factory url: \\\"${val}\\\" must include trailing slash.`);\\n}\\n\\nconst isRefProxy = v =>\\n  typeof v === \\\"object\\\" &&\\n  Number.isInteger(v?.num) &&\\n  v.num >= 0 &&\\n  Number.isInteger(v?.gen) &&\\n  v.gen >= 0;\\n\\nconst isNameProxy = v => typeof v === \\\"object\\\" && typeof v?.name === \\\"string\\\";\\n\\nconst isValidExplicitDest = _isValidExplicitDest.bind(\\n  null,\\n  \u002F* validRef = *\u002F isRefProxy,\\n  \u002F* validName = *\u002F isNameProxy\\n);\\n\\nclass LoopbackPort {\\n  #listeners = new Map();\\n\\n  #deferred = Promise.resolve();\\n\\n  postMessage(obj, transfer) {\\n    const event = {\\n      data: structuredClone(obj, transfer ? { transfer } : null),\\n    };\\n\\n    this.#deferred.then(() => {\\n      for (const [listener] of this.#listeners) {\\n        listener.call(this, event);\\n      }\\n    });\\n  }\\n\\n  addEventListener(name, listener, options = null) {\\n    let rmAbort = null;\\n    if (options?.signal instanceof AbortSignal) {\\n      const { signal } = options;\\n      if (signal.aborted) {\\n        warn(\\\"LoopbackPort - cannot use an `aborted` signal.\\\");\\n        return;\\n      }\\n      const onAbort = () => this.removeEventListener(name, listener);\\n      rmAbort = () => signal.removeEventListener(\\\"abort\\\", onAbort);\\n\\n      signal.addEventListener(\\\"abort\\\", onAbort);\\n    }\\n    this.#listeners.set(listener, rmAbort);\\n  }\\n\\n  removeEventListener(name, listener) {\\n    const rmAbort = this.#listeners.get(listener);\\n    rmAbort?.();\\n\\n    this.#listeners.delete(listener);\\n  }\\n\\n  terminate() {\\n    for (const [, rmAbort] of this.#listeners) {\\n      rmAbort?.();\\n    }\\n    this.#listeners.clear();\\n  }\\n}\\n\\nexport {\\n  getDataProp,\\n  getFactoryUrlProp,\\n  getUrlProp,\\n  isNameProxy,\\n  isRefProxy,\\n  isValidExplicitDest,\\n  LoopbackPort,\\n};\\n\",\"\u002F* Copyright 2018 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  AbortException,\\n  assert,\\n  InvalidPDFException,\\n  PasswordException,\\n  ResponseException,\\n  UnknownErrorException,\\n  unreachable,\\n} from \\\".\u002Futil.js\\\";\\n\\nconst CallbackKind = {\\n  DATA: 1,\\n  ERROR: 2,\\n};\\n\\nconst StreamKind = {\\n  CANCEL: 1,\\n  CANCEL_COMPLETE: 2,\\n  CLOSE: 3,\\n  ENQUEUE: 4,\\n  ERROR: 5,\\n  PULL: 6,\\n  PULL_COMPLETE: 7,\\n  START_COMPLETE: 8,\\n};\\n\\nfunction onFn() {}\\n\\nfunction wrapReason(ex) {\\n  if (\\n    ex instanceof AbortException ||\\n    ex instanceof InvalidPDFException ||\\n    ex instanceof PasswordException ||\\n    ex instanceof ResponseException ||\\n    ex instanceof UnknownErrorException\\n  ) {\\n    \u002F\u002F Avoid re-creating the exception when its type is already correct.\\n    return ex;\\n  }\\n\\n  if (!(ex instanceof Error || (typeof ex === \\\"object\\\" && ex !== null))) {\\n    unreachable(\\n      'wrapReason: Expected \\\"reason\\\" to be a (possibly cloned) Error.'\\n    );\\n  }\\n  switch (ex.name) {\\n    case \\\"AbortException\\\":\\n      return new AbortException(ex.message);\\n    case \\\"InvalidPDFException\\\":\\n      return new InvalidPDFException(ex.message);\\n    case \\\"PasswordException\\\":\\n      return new PasswordException(ex.message, ex.code);\\n    case \\\"ResponseException\\\":\\n      return new ResponseException(ex.message, ex.status, ex.missing);\\n    case \\\"UnknownErrorException\\\":\\n      return new UnknownErrorException(ex.message, ex.details);\\n  }\\n  return new UnknownErrorException(ex.message, ex.toString());\\n}\\n\\nclass MessageHandler {\\n  #messageAC = new AbortController();\\n\\n  constructor(sourceName, targetName, comObj) {\\n    this.sourceName = sourceName;\\n    this.targetName = targetName;\\n    this.comObj = comObj;\\n    this.callbackId = 1;\\n    this.streamId = 1;\\n    this.streamSinks = Object.create(null);\\n    this.streamControllers = Object.create(null);\\n    this.callbackCapabilities = Object.create(null);\\n    this.actionHandler = Object.create(null);\\n\\n    comObj.addEventListener(\\\"message\\\", this.#onMessage.bind(this), {\\n      signal: this.#messageAC.signal,\\n    });\\n  }\\n\\n  #onMessage({ data }) {\\n    if (data.targetName !== this.sourceName) {\\n      return;\\n    }\\n    if (data.stream) {\\n      this.#processStreamMessage(data);\\n      return;\\n    }\\n    if (data.callback) {\\n      const callbackId = data.callbackId;\\n      const capability = this.callbackCapabilities[callbackId];\\n      if (!capability) {\\n        throw new Error(`Cannot resolve callback ${callbackId}`);\\n      }\\n      delete this.callbackCapabilities[callbackId];\\n\\n      if (data.callback === CallbackKind.DATA) {\\n        capability.resolve(data.data);\\n      } else if (data.callback === CallbackKind.ERROR) {\\n        capability.reject(wrapReason(data.reason));\\n      } else {\\n        throw new Error(\\\"Unexpected callback case\\\");\\n      }\\n      return;\\n    }\\n    const action = this.actionHandler[data.action];\\n    if (!action) {\\n      throw new Error(`Unknown action from worker: ${data.action}`);\\n    }\\n    if (data.callbackId) {\\n      const sourceName = this.sourceName,\\n        targetName = data.sourceName,\\n        comObj = this.comObj;\\n\\n      Promise.try(action, data.data).then(\\n        function (result) {\\n          comObj.postMessage({\\n            sourceName,\\n            targetName,\\n            callback: CallbackKind.DATA,\\n            callbackId: data.callbackId,\\n            data: result,\\n          });\\n        },\\n        function (reason) {\\n          comObj.postMessage({\\n            sourceName,\\n            targetName,\\n            callback: CallbackKind.ERROR,\\n            callbackId: data.callbackId,\\n            reason: wrapReason(reason),\\n          });\\n        }\\n      );\\n      return;\\n    }\\n    if (data.streamId) {\\n      this.#createStreamSink(data);\\n      return;\\n    }\\n    action(data.data);\\n  }\\n\\n  on(actionName, handler) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        typeof handler === \\\"function\\\",\\n        'MessageHandler.on: Expected \\\"handler\\\" to be a function.'\\n      );\\n    }\\n    const ah = this.actionHandler;\\n    if (ah[actionName]) {\\n      throw new Error(`There is already an actionName called \\\"${actionName}\\\"`);\\n    }\\n    ah[actionName] = handler;\\n  }\\n\\n  \u002F**\\n   * Sends a message to the comObj to invoke the action with the supplied data.\\n   * @param {string} actionName - Action to call.\\n   * @param {JSON} data - JSON data to send.\\n   * @param {Array} [transfers] - List of transfers\u002FArrayBuffers.\\n   *\u002F\\n  send(actionName, data, transfers) {\\n    this.comObj.postMessage(\\n      {\\n        sourceName: this.sourceName,\\n        targetName: this.targetName,\\n        action: actionName,\\n        data,\\n      },\\n      transfers\\n    );\\n  }\\n\\n  \u002F**\\n   * Sends a message to the comObj to invoke the action with the supplied data.\\n   * Expects that the other side will callback with the response.\\n   * @param {string} actionName - Action to call.\\n   * @param {JSON} data - JSON data to send.\\n   * @param {Array} [transfers] - List of transfers\u002FArrayBuffers.\\n   * @returns {Promise} Promise to be resolved with response data.\\n   *\u002F\\n  sendWithPromise(actionName, data, transfers) {\\n    const callbackId = this.callbackId++;\\n    const capability = Promise.withResolvers();\\n    this.callbackCapabilities[callbackId] = capability;\\n    try {\\n      this.comObj.postMessage(\\n        {\\n          sourceName: this.sourceName,\\n          targetName: this.targetName,\\n          action: actionName,\\n          callbackId,\\n          data,\\n        },\\n        transfers\\n      );\\n    } catch (ex) {\\n      capability.reject(ex);\\n    }\\n    return capability.promise;\\n  }\\n\\n  \u002F**\\n   * Sends a message to the comObj to invoke the action with the supplied data.\\n   * Expect that the other side will callback to signal 'start_complete'.\\n   * @param {string} actionName - Action to call.\\n   * @param {JSON} data - JSON data to send.\\n   * @param {Object} queueingStrategy - Strategy to signal backpressure based on\\n   *                 internal queue.\\n   * @param {Array} [transfers] - List of transfers\u002FArrayBuffers.\\n   * @returns {ReadableStream} ReadableStream to read data in chunks.\\n   *\u002F\\n  sendWithStream(actionName, data, queueingStrategy, transfers) {\\n    const streamId = this.streamId++,\\n      sourceName = this.sourceName,\\n      targetName = this.targetName,\\n      comObj = this.comObj;\\n\\n    return new ReadableStream(\\n      {\\n        start: controller => {\\n          const startCapability = Promise.withResolvers();\\n          this.streamControllers[streamId] = {\\n            controller,\\n            startCall: startCapability,\\n            pullCall: null,\\n            cancelCall: null,\\n            isClosed: false,\\n          };\\n          comObj.postMessage(\\n            {\\n              sourceName,\\n              targetName,\\n              action: actionName,\\n              streamId,\\n              data,\\n              desiredSize: controller.desiredSize,\\n            },\\n            transfers\\n          );\\n          \u002F\u002F Return Promise for Async process, to signal success\u002Ffailure.\\n          return startCapability.promise;\\n        },\\n\\n        pull: controller => {\\n          const pullCapability = Promise.withResolvers();\\n          this.streamControllers[streamId].pullCall = pullCapability;\\n          comObj.postMessage({\\n            sourceName,\\n            targetName,\\n            stream: StreamKind.PULL,\\n            streamId,\\n            desiredSize: controller.desiredSize,\\n          });\\n          \u002F\u002F Returning Promise will not call \\\"pull\\\"\\n          \u002F\u002F again until current pull is resolved.\\n          return pullCapability.promise;\\n        },\\n\\n        cancel: reason => {\\n          assert(reason instanceof Error, \\\"cancel must have a valid reason\\\");\\n          const cancelCapability = Promise.withResolvers();\\n          this.streamControllers[streamId].cancelCall = cancelCapability;\\n          this.streamControllers[streamId].isClosed = true;\\n          comObj.postMessage({\\n            sourceName,\\n            targetName,\\n            stream: StreamKind.CANCEL,\\n            streamId,\\n            reason: wrapReason(reason),\\n          });\\n          \u002F\u002F Return Promise to signal success or failure.\\n          return cancelCapability.promise;\\n        },\\n      },\\n      queueingStrategy\\n    );\\n  }\\n\\n  #createStreamSink(data) {\\n    const streamId = data.streamId,\\n      sourceName = this.sourceName,\\n      targetName = data.sourceName,\\n      comObj = this.comObj;\\n    const self = this,\\n      action = this.actionHandler[data.action];\\n\\n    const streamSink = {\\n      enqueue(chunk, size = 1, transfers) {\\n        if (this.isCancelled) {\\n          return;\\n        }\\n        const lastDesiredSize = this.desiredSize;\\n        this.desiredSize -= size;\\n        \u002F\u002F Enqueue decreases the desiredSize property of sink,\\n        \u002F\u002F so when it changes from positive to negative,\\n        \u002F\u002F set ready as unresolved promise.\\n        if (lastDesiredSize > 0 && this.desiredSize \u003C= 0) {\\n          this.sinkCapability = Promise.withResolvers();\\n          this.ready = this.sinkCapability.promise;\\n        }\\n        comObj.postMessage(\\n          {\\n            sourceName,\\n            targetName,\\n            stream: StreamKind.ENQUEUE,\\n            streamId,\\n            chunk,\\n          },\\n          transfers\\n        );\\n      },\\n\\n      close() {\\n        if (this.isCancelled) {\\n          return;\\n        }\\n        this.isCancelled = true;\\n        comObj.postMessage({\\n          sourceName,\\n          targetName,\\n          stream: StreamKind.CLOSE,\\n          streamId,\\n        });\\n        delete self.streamSinks[streamId];\\n      },\\n\\n      error(reason) {\\n        assert(reason instanceof Error, \\\"error must have a valid reason\\\");\\n        if (this.isCancelled) {\\n          return;\\n        }\\n        this.isCancelled = true;\\n        comObj.postMessage({\\n          sourceName,\\n          targetName,\\n          stream: StreamKind.ERROR,\\n          streamId,\\n          reason: wrapReason(reason),\\n        });\\n      },\\n\\n      sinkCapability: Promise.withResolvers(),\\n      onPull: null,\\n      onCancel: null,\\n      isCancelled: false,\\n      desiredSize: data.desiredSize,\\n      ready: null,\\n    };\\n\\n    streamSink.sinkCapability.resolve();\\n    streamSink.ready = streamSink.sinkCapability.promise;\\n    this.streamSinks[streamId] = streamSink;\\n\\n    Promise.try(action, data.data, streamSink).then(\\n      function () {\\n        comObj.postMessage({\\n          sourceName,\\n          targetName,\\n          stream: StreamKind.START_COMPLETE,\\n          streamId,\\n          success: true,\\n        });\\n      },\\n      function (reason) {\\n        comObj.postMessage({\\n          sourceName,\\n          targetName,\\n          stream: StreamKind.START_COMPLETE,\\n          streamId,\\n          reason: wrapReason(reason),\\n        });\\n      }\\n    );\\n  }\\n\\n  #processStreamMessage(data) {\\n    const streamId = data.streamId,\\n      sourceName = this.sourceName,\\n      targetName = data.sourceName,\\n      comObj = this.comObj;\\n    const streamController = this.streamControllers[streamId],\\n      streamSink = this.streamSinks[streamId];\\n\\n    switch (data.stream) {\\n      case StreamKind.START_COMPLETE:\\n        if (data.success) {\\n          streamController.startCall.resolve();\\n        } else {\\n          streamController.startCall.reject(wrapReason(data.reason));\\n        }\\n        break;\\n      case StreamKind.PULL_COMPLETE:\\n        if (data.success) {\\n          streamController.pullCall.resolve();\\n        } else {\\n          streamController.pullCall.reject(wrapReason(data.reason));\\n        }\\n        break;\\n      case StreamKind.PULL:\\n        \u002F\u002F Ignore any pull after close is called.\\n        if (!streamSink) {\\n          comObj.postMessage({\\n            sourceName,\\n            targetName,\\n            stream: StreamKind.PULL_COMPLETE,\\n            streamId,\\n            success: true,\\n          });\\n          break;\\n        }\\n        \u002F\u002F Pull increases the desiredSize property of sink, so when it changes\\n        \u002F\u002F from negative to positive, set ready property as resolved promise.\\n        if (streamSink.desiredSize \u003C= 0 && data.desiredSize > 0) {\\n          streamSink.sinkCapability.resolve();\\n        }\\n        \u002F\u002F Reset desiredSize property of sink on every pull.\\n        streamSink.desiredSize = data.desiredSize;\\n\\n        Promise.try(streamSink.onPull || onFn).then(\\n          function () {\\n            comObj.postMessage({\\n              sourceName,\\n              targetName,\\n              stream: StreamKind.PULL_COMPLETE,\\n              streamId,\\n              success: true,\\n            });\\n          },\\n          function (reason) {\\n            comObj.postMessage({\\n              sourceName,\\n              targetName,\\n              stream: StreamKind.PULL_COMPLETE,\\n              streamId,\\n              reason: wrapReason(reason),\\n            });\\n          }\\n        );\\n        break;\\n      case StreamKind.ENQUEUE:\\n        assert(streamController, \\\"enqueue should have stream controller\\\");\\n        if (streamController.isClosed) {\\n          break;\\n        }\\n        streamController.controller.enqueue(data.chunk);\\n        break;\\n      case StreamKind.CLOSE:\\n        assert(streamController, \\\"close should have stream controller\\\");\\n        if (streamController.isClosed) {\\n          break;\\n        }\\n        streamController.isClosed = true;\\n        streamController.controller.close();\\n        this.#deleteStreamController(streamController, streamId);\\n        break;\\n      case StreamKind.ERROR:\\n        assert(streamController, \\\"error should have stream controller\\\");\\n        streamController.controller.error(wrapReason(data.reason));\\n        this.#deleteStreamController(streamController, streamId);\\n        break;\\n      case StreamKind.CANCEL_COMPLETE:\\n        if (data.success) {\\n          streamController.cancelCall.resolve();\\n        } else {\\n          streamController.cancelCall.reject(wrapReason(data.reason));\\n        }\\n        this.#deleteStreamController(streamController, streamId);\\n        break;\\n      case StreamKind.CANCEL:\\n        if (!streamSink) {\\n          break;\\n        }\\n        const dataReason = wrapReason(data.reason);\\n\\n        Promise.try(streamSink.onCancel || onFn, dataReason).then(\\n          function () {\\n            comObj.postMessage({\\n              sourceName,\\n              targetName,\\n              stream: StreamKind.CANCEL_COMPLETE,\\n              streamId,\\n              success: true,\\n            });\\n          },\\n          function (reason) {\\n            comObj.postMessage({\\n              sourceName,\\n              targetName,\\n              stream: StreamKind.CANCEL_COMPLETE,\\n              streamId,\\n              reason: wrapReason(reason),\\n            });\\n          }\\n        );\\n        streamSink.sinkCapability.reject(dataReason);\\n        streamSink.isCancelled = true;\\n        delete this.streamSinks[streamId];\\n        break;\\n      default:\\n        throw new Error(\\\"Unexpected stream case\\\");\\n    }\\n  }\\n\\n  async #deleteStreamController(streamController, streamId) {\\n    \u002F\u002F Delete the `streamController` only when the start, pull, and cancel\\n    \u002F\u002F capabilities have settled, to prevent `TypeError`s.\\n    await Promise.allSettled([\\n      streamController.startCall?.promise,\\n      streamController.pullCall?.promise,\\n      streamController.cancelCall?.promise,\\n    ]);\\n    delete this.streamControllers[streamId];\\n  }\\n\\n  destroy() {\\n    this.#messageAC?.abort();\\n    this.#messageAC = null;\\n  }\\n}\\n\\nexport { MessageHandler, wrapReason };\\n\",\"\u002F* Copyright 2015 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { unreachable } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nclass BaseCanvasFactory {\\n  #enableHWA = false;\\n\\n  constructor({ enableHWA = false }) {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      this.constructor === BaseCanvasFactory\\n    ) {\\n      unreachable(\\\"Cannot initialize BaseCanvasFactory.\\\");\\n    }\\n    this.#enableHWA = enableHWA;\\n  }\\n\\n  create(width, height) {\\n    if (width \u003C= 0 || height \u003C= 0) {\\n      throw new Error(\\\"Invalid canvas size\\\");\\n    }\\n    const canvas = this._createCanvas(width, height);\\n    return {\\n      canvas,\\n      context: canvas.getContext(\\\"2d\\\", {\\n        willReadFrequently: !this.#enableHWA,\\n      }),\\n    };\\n  }\\n\\n  reset(canvasAndContext, width, height) {\\n    if (!canvasAndContext.canvas) {\\n      throw new Error(\\\"Canvas is not specified\\\");\\n    }\\n    if (width \u003C= 0 || height \u003C= 0) {\\n      throw new Error(\\\"Invalid canvas size\\\");\\n    }\\n    canvasAndContext.canvas.width = width;\\n    canvasAndContext.canvas.height = height;\\n  }\\n\\n  destroy(canvasAndContext) {\\n    if (!canvasAndContext.canvas) {\\n      throw new Error(\\\"Canvas is not specified\\\");\\n    }\\n    \u002F\u002F Zeroing the width and height cause Firefox to release graphics\\n    \u002F\u002F resources immediately, which can greatly reduce memory consumption.\\n    canvasAndContext.canvas.width = 0;\\n    canvasAndContext.canvas.height = 0;\\n    canvasAndContext.canvas = null;\\n    canvasAndContext.context = null;\\n  }\\n\\n  \u002F**\\n   * @ignore\\n   *\u002F\\n  _createCanvas(width, height) {\\n    unreachable(\\\"Abstract method `_createCanvas` called.\\\");\\n  }\\n}\\n\\nclass DOMCanvasFactory extends BaseCanvasFactory {\\n  constructor({ ownerDocument = globalThis.document, enableHWA = false }) {\\n    super({ enableHWA });\\n    this._document = ownerDocument;\\n  }\\n\\n  \u002F**\\n   * @ignore\\n   *\u002F\\n  _createCanvas(width, height) {\\n    const canvas = this._document.createElement(\\\"canvas\\\");\\n    canvas.width = width;\\n    canvas.height = height;\\n    return canvas;\\n  }\\n}\\n\\nexport { BaseCanvasFactory, DOMCanvasFactory };\\n\",\"\u002F* Copyright 2015 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { stringToBytes, unreachable } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { fetchData } from \\\".\u002Fdisplay_utils.js\\\";\\n\\nclass BaseCMapReaderFactory {\\n  constructor({ baseUrl = null, isCompressed = true }) {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      this.constructor === BaseCMapReaderFactory\\n    ) {\\n      unreachable(\\\"Cannot initialize BaseCMapReaderFactory.\\\");\\n    }\\n    this.baseUrl = baseUrl;\\n    this.isCompressed = isCompressed;\\n  }\\n\\n  async fetch({ name }) {\\n    if (!this.baseUrl) {\\n      throw new Error(\\n        \\\"Ensure that the `cMapUrl` and `cMapPacked` API parameters are provided.\\\"\\n      );\\n    }\\n    if (!name) {\\n      throw new Error(\\\"CMap name must be specified.\\\");\\n    }\\n    const url = this.baseUrl + name + (this.isCompressed ? \\\".bcmap\\\" : \\\"\\\");\\n\\n    return this._fetch(url)\\n      .then(cMapData => ({ cMapData, isCompressed: this.isCompressed }))\\n      .catch(reason => {\\n        throw new Error(\\n          `Unable to load ${this.isCompressed ? \\\"binary \\\" : \\\"\\\"}CMap at: ${url}`\\n        );\\n      });\\n  }\\n\\n  \u002F**\\n   * @ignore\\n   * @returns {Promise\u003CUint8Array>}\\n   *\u002F\\n  async _fetch(url) {\\n    unreachable(\\\"Abstract method `_fetch` called.\\\");\\n  }\\n}\\n\\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\\n  \u002F**\\n   * @ignore\\n   *\u002F\\n  async _fetch(url) {\\n    const data = await fetchData(\\n      url,\\n      \u002F* type = *\u002F this.isCompressed ? \\\"arraybuffer\\\" : \\\"text\\\"\\n    );\\n    return data instanceof ArrayBuffer\\n      ? new Uint8Array(data)\\n      : stringToBytes(data);\\n  }\\n}\\n\\nexport { BaseCMapReaderFactory, DOMCMapReaderFactory };\\n\",\"\u002F* Copyright 2015 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { getRGB, isDataScheme, SVG_NS } from \\\".\u002Fdisplay_utils.js\\\";\\nimport { unreachable, updateUrlHash, Util, warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nclass BaseFilterFactory {\\n  constructor() {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      this.constructor === BaseFilterFactory\\n    ) {\\n      unreachable(\\\"Cannot initialize BaseFilterFactory.\\\");\\n    }\\n  }\\n\\n  addFilter(maps) {\\n    return \\\"none\\\";\\n  }\\n\\n  addHCMFilter(fgColor, bgColor) {\\n    return \\\"none\\\";\\n  }\\n\\n  addAlphaFilter(map) {\\n    return \\\"none\\\";\\n  }\\n\\n  addLuminosityFilter(map) {\\n    return \\\"none\\\";\\n  }\\n\\n  addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\\n    return \\\"none\\\";\\n  }\\n\\n  destroy(keepHCM = false) {}\\n}\\n\\n\u002F**\\n * FilterFactory aims to create some SVG filters we can use when drawing an\\n * image (or whatever) on a canvas.\\n * Filters aren't applied with ctx.putImageData because it just overwrites the\\n * underlying pixels.\\n * With these filters, it's possible for example to apply some transfer maps on\\n * an image without the need to apply them on the pixel arrays: the renderer\\n * does the magic for us.\\n *\u002F\\nclass DOMFilterFactory extends BaseFilterFactory {\\n  #baseUrl;\\n\\n  #_cache;\\n\\n  #_defs;\\n\\n  #docId;\\n\\n  #document;\\n\\n  #_hcmCache;\\n\\n  #id = 0;\\n\\n  constructor({ docId, ownerDocument = globalThis.document }) {\\n    super();\\n    this.#docId = docId;\\n    this.#document = ownerDocument;\\n  }\\n\\n  get #cache() {\\n    return (this.#_cache ||= new Map());\\n  }\\n\\n  get #hcmCache() {\\n    return (this.#_hcmCache ||= new Map());\\n  }\\n\\n  get #defs() {\\n    if (!this.#_defs) {\\n      const div = this.#document.createElement(\\\"div\\\");\\n      const { style } = div;\\n      style.visibility = \\\"hidden\\\";\\n      style.contain = \\\"strict\\\";\\n      style.width = style.height = 0;\\n      style.position = \\\"absolute\\\";\\n      style.top = style.left = 0;\\n      style.zIndex = -1;\\n\\n      const svg = this.#document.createElementNS(SVG_NS, \\\"svg\\\");\\n      svg.setAttribute(\\\"width\\\", 0);\\n      svg.setAttribute(\\\"height\\\", 0);\\n      this.#_defs = this.#document.createElementNS(SVG_NS, \\\"defs\\\");\\n      div.append(svg);\\n      svg.append(this.#_defs);\\n      this.#document.body.append(div);\\n    }\\n    return this.#_defs;\\n  }\\n\\n  #createTables(maps) {\\n    if (maps.length === 1) {\\n      const mapR = maps[0];\\n      const buffer = new Array(256);\\n      for (let i = 0; i \u003C 256; i++) {\\n        buffer[i] = mapR[i] \u002F 255;\\n      }\\n\\n      const table = buffer.join(\\\",\\\");\\n      return [table, table, table];\\n    }\\n\\n    const [mapR, mapG, mapB] = maps;\\n    const bufferR = new Array(256);\\n    const bufferG = new Array(256);\\n    const bufferB = new Array(256);\\n    for (let i = 0; i \u003C 256; i++) {\\n      bufferR[i] = mapR[i] \u002F 255;\\n      bufferG[i] = mapG[i] \u002F 255;\\n      bufferB[i] = mapB[i] \u002F 255;\\n    }\\n    return [bufferR.join(\\\",\\\"), bufferG.join(\\\",\\\"), bufferB.join(\\\",\\\")];\\n  }\\n\\n  #createUrl(id) {\\n    if (this.#baseUrl === undefined) {\\n      \u002F\u002F Unless a `\u003Cbase>`-element is present a relative URL should work.\\n      this.#baseUrl = \\\"\\\";\\n\\n      const url = this.#document.URL;\\n      if (url !== this.#document.baseURI) {\\n        if (isDataScheme(url)) {\\n          warn('#createUrl: ignore \\\"data:\\\"-URL for performance reasons.');\\n        } else {\\n          this.#baseUrl = updateUrlHash(url, \\\"\\\");\\n        }\\n      }\\n    }\\n    return `url(${this.#baseUrl}#${id})`;\\n  }\\n\\n  addFilter(maps) {\\n    if (!maps) {\\n      return \\\"none\\\";\\n    }\\n\\n    \u002F\u002F When a page is zoomed the page is re-drawn but the maps are likely\\n    \u002F\u002F the same.\\n    let value = this.#cache.get(maps);\\n    if (value) {\\n      return value;\\n    }\\n\\n    const [tableR, tableG, tableB] = this.#createTables(maps);\\n    const key = maps.length === 1 ? tableR : `${tableR}${tableG}${tableB}`;\\n\\n    value = this.#cache.get(key);\\n    if (value) {\\n      this.#cache.set(maps, value);\\n      return value;\\n    }\\n\\n    \u002F\u002F We create a SVG filter: feComponentTransferElement\\n    \u002F\u002F  https:\u002F\u002Fwww.w3.org\u002FTR\u002FSVG11\u002Ffilters.html#feComponentTransferElement\\n\\n    const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\\n    const url = this.#createUrl(id);\\n    this.#cache.set(maps, url);\\n    this.#cache.set(key, url);\\n\\n    const filter = this.#createFilter(id);\\n    this.#addTransferMapConversion(tableR, tableG, tableB, filter);\\n\\n    return url;\\n  }\\n\\n  addHCMFilter(fgColor, bgColor) {\\n    const key = `${fgColor}-${bgColor}`;\\n    const filterName = \\\"base\\\";\\n    let info = this.#hcmCache.get(filterName);\\n    if (info?.key === key) {\\n      return info.url;\\n    }\\n\\n    if (info) {\\n      info.filter?.remove();\\n      info.key = key;\\n      info.url = \\\"none\\\";\\n      info.filter = null;\\n    } else {\\n      info = {\\n        key,\\n        url: \\\"none\\\",\\n        filter: null,\\n      };\\n      this.#hcmCache.set(filterName, info);\\n    }\\n\\n    if (!fgColor || !bgColor) {\\n      return info.url;\\n    }\\n\\n    const fgRGB = this.#getRGB(fgColor);\\n    fgColor = Util.makeHexColor(...fgRGB);\\n    const bgRGB = this.#getRGB(bgColor);\\n    bgColor = Util.makeHexColor(...bgRGB);\\n    this.#defs.style.color = \\\"\\\";\\n\\n    if (\\n      (fgColor === \\\"#000000\\\" && bgColor === \\\"#ffffff\\\") ||\\n      fgColor === bgColor\\n    ) {\\n      return info.url;\\n    }\\n\\n    \u002F\u002F https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAccessibility\u002FUnderstanding_Colors_and_Luminance\\n    \u002F\u002F\\n    \u002F\u002F Relative luminance:\\n    \u002F\u002F https:\u002F\u002Fwww.w3.org\u002FTR\u002FWCAG20\u002F#relativeluminancedef\\n    \u002F\u002F\\n    \u002F\u002F We compute the rounded luminance of the default background color.\\n    \u002F\u002F Then for every color in the pdf, if its rounded luminance is the\\n    \u002F\u002F same as the background one then it's replaced by the new\\n    \u002F\u002F background color else by the foreground one.\\n    const map = new Array(256);\\n    for (let i = 0; i \u003C= 255; i++) {\\n      const x = i \u002F 255;\\n      map[i] = x \u003C= 0.03928 ? x \u002F 12.92 : ((x + 0.055) \u002F 1.055) ** 2.4;\\n    }\\n    const table = map.join(\\\",\\\");\\n\\n    const id = `g_${this.#docId}_hcm_filter`;\\n    const filter = (info.filter = this.#createFilter(id));\\n    this.#addTransferMapConversion(table, table, table, filter);\\n    this.#addGrayConversion(filter);\\n\\n    const getSteps = (c, n) => {\\n      const start = fgRGB[c] \u002F 255;\\n      const end = bgRGB[c] \u002F 255;\\n      const arr = new Array(n + 1);\\n      for (let i = 0; i \u003C= n; i++) {\\n        arr[i] = start + (i \u002F n) * (end - start);\\n      }\\n      return arr.join(\\\",\\\");\\n    };\\n    this.#addTransferMapConversion(\\n      getSteps(0, 5),\\n      getSteps(1, 5),\\n      getSteps(2, 5),\\n      filter\\n    );\\n\\n    info.url = this.#createUrl(id);\\n    return info.url;\\n  }\\n\\n  addAlphaFilter(map) {\\n    \u002F\u002F When a page is zoomed the page is re-drawn but the maps are likely\\n    \u002F\u002F the same.\\n    let value = this.#cache.get(map);\\n    if (value) {\\n      return value;\\n    }\\n\\n    const [tableA] = this.#createTables([map]);\\n    const key = `alpha_${tableA}`;\\n\\n    value = this.#cache.get(key);\\n    if (value) {\\n      this.#cache.set(map, value);\\n      return value;\\n    }\\n\\n    const id = `g_${this.#docId}_alpha_map_${this.#id++}`;\\n    const url = this.#createUrl(id);\\n    this.#cache.set(map, url);\\n    this.#cache.set(key, url);\\n\\n    const filter = this.#createFilter(id);\\n    this.#addTransferMapAlphaConversion(tableA, filter);\\n\\n    return url;\\n  }\\n\\n  addLuminosityFilter(map) {\\n    \u002F\u002F When a page is zoomed the page is re-drawn but the maps are likely\\n    \u002F\u002F the same.\\n    let value = this.#cache.get(map || \\\"luminosity\\\");\\n    if (value) {\\n      return value;\\n    }\\n\\n    let tableA, key;\\n    if (map) {\\n      [tableA] = this.#createTables([map]);\\n      key = `luminosity_${tableA}`;\\n    } else {\\n      key = \\\"luminosity\\\";\\n    }\\n\\n    value = this.#cache.get(key);\\n    if (value) {\\n      this.#cache.set(map, value);\\n      return value;\\n    }\\n\\n    const id = `g_${this.#docId}_luminosity_map_${this.#id++}`;\\n    const url = this.#createUrl(id);\\n    this.#cache.set(map, url);\\n    this.#cache.set(key, url);\\n\\n    const filter = this.#createFilter(id);\\n    this.#addLuminosityConversion(filter);\\n    if (map) {\\n      this.#addTransferMapAlphaConversion(tableA, filter);\\n    }\\n\\n    return url;\\n  }\\n\\n  addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\\n    const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\\n    let info = this.#hcmCache.get(filterName);\\n    if (info?.key === key) {\\n      return info.url;\\n    }\\n\\n    if (info) {\\n      info.filter?.remove();\\n      info.key = key;\\n      info.url = \\\"none\\\";\\n      info.filter = null;\\n    } else {\\n      info = {\\n        key,\\n        url: \\\"none\\\",\\n        filter: null,\\n      };\\n      this.#hcmCache.set(filterName, info);\\n    }\\n\\n    if (!fgColor || !bgColor) {\\n      return info.url;\\n    }\\n\\n    const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\\n    let fgGray = Math.round(\\n      0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]\\n    );\\n    let bgGray = Math.round(\\n      0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]\\n    );\\n    let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(\\n      this.#getRGB.bind(this)\\n    );\\n    if (bgGray \u003C fgGray) {\\n      [fgGray, bgGray, newFgRGB, newBgRGB] = [\\n        bgGray,\\n        fgGray,\\n        newBgRGB,\\n        newFgRGB,\\n      ];\\n    }\\n    this.#defs.style.color = \\\"\\\";\\n\\n    \u002F\u002F Now we can create the filters to highlight some canvas parts.\\n    \u002F\u002F The colors in the pdf will almost be Canvas and CanvasText, hence we\\n    \u002F\u002F want to filter them to finally get Highlight and HighlightText.\\n    \u002F\u002F Since we're in HCM the background color and the foreground color should\\n    \u002F\u002F be really different when converted to grayscale (if they're not then it\\n    \u002F\u002F means that we've a poor contrast). Once the canvas colors are converted\\n    \u002F\u002F to grayscale we can easily map them on their new colors.\\n    \u002F\u002F The grayscale step is important because if we've something like:\\n    \u002F\u002F   fgColor = #FF....\\n    \u002F\u002F   bgColor = #FF....\\n    \u002F\u002F   then we are enable to map the red component on the new red components\\n    \u002F\u002F   which can be different.\\n\\n    const getSteps = (fg, bg, n) => {\\n      const arr = new Array(256);\\n      const step = (bgGray - fgGray) \u002F n;\\n      const newStart = fg \u002F 255;\\n      const newStep = (bg - fg) \u002F (255 * n);\\n      let prev = 0;\\n      for (let i = 0; i \u003C= n; i++) {\\n        const k = Math.round(fgGray + i * step);\\n        const value = newStart + i * newStep;\\n        for (let j = prev; j \u003C= k; j++) {\\n          arr[j] = value;\\n        }\\n        prev = k + 1;\\n      }\\n      for (let i = prev; i \u003C 256; i++) {\\n        arr[i] = arr[prev - 1];\\n      }\\n      return arr.join(\\\",\\\");\\n    };\\n\\n    const id = `g_${this.#docId}_hcm_${filterName}_filter`;\\n    const filter = (info.filter = this.#createFilter(id));\\n\\n    this.#addGrayConversion(filter);\\n    this.#addTransferMapConversion(\\n      getSteps(newFgRGB[0], newBgRGB[0], 5),\\n      getSteps(newFgRGB[1], newBgRGB[1], 5),\\n      getSteps(newFgRGB[2], newBgRGB[2], 5),\\n      filter\\n    );\\n\\n    info.url = this.#createUrl(id);\\n    return info.url;\\n  }\\n\\n  destroy(keepHCM = false) {\\n    if (keepHCM && this.#_hcmCache?.size) {\\n      return;\\n    }\\n    this.#_defs?.parentNode.parentNode.remove();\\n    this.#_defs = null;\\n\\n    this.#_cache?.clear();\\n    this.#_cache = null;\\n\\n    this.#_hcmCache?.clear();\\n    this.#_hcmCache = null;\\n\\n    this.#id = 0;\\n  }\\n\\n  #addLuminosityConversion(filter) {\\n    const feColorMatrix = this.#document.createElementNS(\\n      SVG_NS,\\n      \\\"feColorMatrix\\\"\\n    );\\n    feColorMatrix.setAttribute(\\\"type\\\", \\\"matrix\\\");\\n    feColorMatrix.setAttribute(\\n      \\\"values\\\",\\n      \\\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0\\\"\\n    );\\n    filter.append(feColorMatrix);\\n  }\\n\\n  #addGrayConversion(filter) {\\n    const feColorMatrix = this.#document.createElementNS(\\n      SVG_NS,\\n      \\\"feColorMatrix\\\"\\n    );\\n    feColorMatrix.setAttribute(\\\"type\\\", \\\"matrix\\\");\\n    feColorMatrix.setAttribute(\\n      \\\"values\\\",\\n      \\\"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\\\"\\n    );\\n    filter.append(feColorMatrix);\\n  }\\n\\n  #createFilter(id) {\\n    const filter = this.#document.createElementNS(SVG_NS, \\\"filter\\\");\\n    filter.setAttribute(\\\"color-interpolation-filters\\\", \\\"sRGB\\\");\\n    filter.setAttribute(\\\"id\\\", id);\\n    this.#defs.append(filter);\\n\\n    return filter;\\n  }\\n\\n  #appendFeFunc(feComponentTransfer, func, table) {\\n    const feFunc = this.#document.createElementNS(SVG_NS, func);\\n    feFunc.setAttribute(\\\"type\\\", \\\"discrete\\\");\\n    feFunc.setAttribute(\\\"tableValues\\\", table);\\n    feComponentTransfer.append(feFunc);\\n  }\\n\\n  #addTransferMapConversion(rTable, gTable, bTable, filter) {\\n    const feComponentTransfer = this.#document.createElementNS(\\n      SVG_NS,\\n      \\\"feComponentTransfer\\\"\\n    );\\n    filter.append(feComponentTransfer);\\n    this.#appendFeFunc(feComponentTransfer, \\\"feFuncR\\\", rTable);\\n    this.#appendFeFunc(feComponentTransfer, \\\"feFuncG\\\", gTable);\\n    this.#appendFeFunc(feComponentTransfer, \\\"feFuncB\\\", bTable);\\n  }\\n\\n  #addTransferMapAlphaConversion(aTable, filter) {\\n    const feComponentTransfer = this.#document.createElementNS(\\n      SVG_NS,\\n      \\\"feComponentTransfer\\\"\\n    );\\n    filter.append(feComponentTransfer);\\n    this.#appendFeFunc(feComponentTransfer, \\\"feFuncA\\\", aTable);\\n  }\\n\\n  #getRGB(color) {\\n    this.#defs.style.color = color;\\n    return getRGB(getComputedStyle(this.#defs).getPropertyValue(\\\"color\\\"));\\n  }\\n}\\n\\nexport { BaseFilterFactory, DOMFilterFactory };\\n\",\"\u002F* Copyright 2015 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { fetchData } from \\\".\u002Fdisplay_utils.js\\\";\\nimport { unreachable } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nclass BaseStandardFontDataFactory {\\n  constructor({ baseUrl = null }) {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      this.constructor === BaseStandardFontDataFactory\\n    ) {\\n      unreachable(\\\"Cannot initialize BaseStandardFontDataFactory.\\\");\\n    }\\n    this.baseUrl = baseUrl;\\n  }\\n\\n  async fetch({ filename }) {\\n    if (!this.baseUrl) {\\n      throw new Error(\\n        \\\"Ensure that the `standardFontDataUrl` API parameter is provided.\\\"\\n      );\\n    }\\n    if (!filename) {\\n      throw new Error(\\\"Font filename must be specified.\\\");\\n    }\\n    const url = `${this.baseUrl}${filename}`;\\n\\n    return this._fetch(url).catch(reason => {\\n      throw new Error(`Unable to load font data at: ${url}`);\\n    });\\n  }\\n\\n  \u002F**\\n   * @ignore\\n   * @returns {Promise\u003CUint8Array>}\\n   *\u002F\\n  async _fetch(url) {\\n    unreachable(\\\"Abstract method `_fetch` called.\\\");\\n  }\\n}\\n\\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\\n  \u002F**\\n   * @ignore\\n   *\u002F\\n  async _fetch(url) {\\n    const data = await fetchData(url, \u002F* type = *\u002F \\\"arraybuffer\\\");\\n    return new Uint8Array(data);\\n  }\\n}\\n\\nexport { BaseStandardFontDataFactory, DOMStandardFontDataFactory };\\n\",\"\u002F* Copyright 2015 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { fetchData } from \\\".\u002Fdisplay_utils.js\\\";\\nimport { unreachable } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nclass BaseWasmFactory {\\n  constructor({ baseUrl = null }) {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      this.constructor === BaseWasmFactory\\n    ) {\\n      unreachable(\\\"Cannot initialize BaseWasmFactory.\\\");\\n    }\\n    this.baseUrl = baseUrl;\\n  }\\n\\n  async fetch({ filename }) {\\n    if (!this.baseUrl) {\\n      throw new Error(\\\"Ensure that the `wasmUrl` API parameter is provided.\\\");\\n    }\\n    if (!filename) {\\n      throw new Error(\\\"Wasm filename must be specified.\\\");\\n    }\\n    const url = `${this.baseUrl}${filename}`;\\n\\n    return this._fetch(url).catch(reason => {\\n      throw new Error(`Unable to load wasm data at: ${url}`);\\n    });\\n  }\\n\\n  \u002F**\\n   * @ignore\\n   * @returns {Promise\u003CUint8Array>}\\n   *\u002F\\n  async _fetch(url) {\\n    unreachable(\\\"Abstract method `_fetch` called.\\\");\\n  }\\n}\\n\\nclass DOMWasmFactory extends BaseWasmFactory {\\n  \u002F**\\n   * @ignore\\n   *\u002F\\n  async _fetch(url) {\\n    const data = await fetchData(url, \u002F* type = *\u002F \\\"arraybuffer\\\");\\n    return new Uint8Array(data);\\n  }\\n}\\n\\nexport { BaseWasmFactory, DOMWasmFactory };\\n\",\"\u002F* Copyright 2020 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\u002F* globals process *\u002F\\n\\nimport { isNodeJS, warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { BaseCanvasFactory } from \\\".\u002Fcanvas_factory.js\\\";\\nimport { BaseCMapReaderFactory } from \\\".\u002Fcmap_reader_factory.js\\\";\\nimport { BaseFilterFactory } from \\\".\u002Ffilter_factory.js\\\";\\nimport { BaseStandardFontDataFactory } from \\\".\u002Fstandard_fontdata_factory.js\\\";\\nimport { BaseWasmFactory } from \\\".\u002Fwasm_factory.js\\\";\\n\\nif (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n  throw new Error(\\n    'Module \\\".\u002Fnode_utils.js\\\" shall not be used with MOZCENTRAL builds.'\\n  );\\n}\\n\\nif (isNodeJS) {\\n  if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"SKIP_BABEL\\\")) {\\n    warn(\\\"Please use the `legacy` build in Node.js environments.\\\");\\n  } else {\\n    let canvas;\\n    try {\\n      const require = process\\n        .getBuiltinModule(\\\"module\\\")\\n        .createRequire(import.meta.url);\\n\\n      try {\\n        canvas = require(\\\"@napi-rs\u002Fcanvas\\\");\\n      } catch (ex) {\\n        warn(`Cannot load \\\"@napi-rs\u002Fcanvas\\\" package: \\\"${ex}\\\".`);\\n      }\\n    } catch (ex) {\\n      warn(`Cannot access the \\\\`require\\\\` function: \\\"${ex}\\\".`);\\n    }\\n\\n    if (!globalThis.DOMMatrix) {\\n      if (canvas?.DOMMatrix) {\\n        globalThis.DOMMatrix = canvas.DOMMatrix;\\n      } else {\\n        warn(\\\"Cannot polyfill `DOMMatrix`, rendering may be broken.\\\");\\n      }\\n    }\\n    if (!globalThis.ImageData) {\\n      if (canvas?.ImageData) {\\n        globalThis.ImageData = canvas.ImageData;\\n      } else {\\n        warn(\\\"Cannot polyfill `ImageData`, rendering may be broken.\\\");\\n      }\\n    }\\n    if (!globalThis.Path2D) {\\n      if (canvas?.Path2D) {\\n        globalThis.Path2D = canvas.Path2D;\\n      } else {\\n        warn(\\\"Cannot polyfill `Path2D`, rendering may be broken.\\\");\\n      }\\n    }\\n    if (!globalThis.navigator?.language) {\\n      globalThis.navigator = {\\n        language: \\\"en-US\\\",\\n        platform: \\\"\\\",\\n        userAgent: \\\"\\\",\\n      };\\n    }\\n  }\\n}\\n\\nasync function fetchData(url) {\\n  const fs = process.getBuiltinModule(\\\"fs\\\");\\n  const data = await fs.promises.readFile(url);\\n  return new Uint8Array(data);\\n}\\n\\nclass NodeFilterFactory extends BaseFilterFactory {}\\n\\nclass NodeCanvasFactory extends BaseCanvasFactory {\\n  \u002F**\\n   * @ignore\\n   *\u002F\\n  _createCanvas(width, height) {\\n    const require = process\\n      .getBuiltinModule(\\\"module\\\")\\n      .createRequire(import.meta.url);\\n    const canvas = require(\\\"@napi-rs\u002Fcanvas\\\");\\n    return canvas.createCanvas(width, height);\\n  }\\n}\\n\\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\\n  \u002F**\\n   * @ignore\\n   *\u002F\\n  async _fetch(url) {\\n    return fetchData(url);\\n  }\\n}\\n\\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\\n  \u002F**\\n   * @ignore\\n   *\u002F\\n  async _fetch(url) {\\n    return fetchData(url);\\n  }\\n}\\n\\nclass NodeWasmFactory extends BaseWasmFactory {\\n  \u002F**\\n   * @ignore\\n   *\u002F\\n  async _fetch(url) {\\n    return fetchData(url);\\n  }\\n}\\n\\nexport {\\n  fetchData,\\n  NodeCanvasFactory,\\n  NodeCMapReaderFactory,\\n  NodeFilterFactory,\\n  NodeStandardFontDataFactory,\\n  NodeWasmFactory,\\n};\\n\",\"\u002F* Copyright 2014 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { FormatError, info, unreachable, Util } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { getCurrentTransform } from \\\".\u002Fdisplay_utils.js\\\";\\n\\nconst PathType = {\\n  FILL: \\\"Fill\\\",\\n  STROKE: \\\"Stroke\\\",\\n  SHADING: \\\"Shading\\\",\\n};\\n\\nfunction applyBoundingBox(ctx, bbox) {\\n  if (!bbox) {\\n    return;\\n  }\\n  const width = bbox[2] - bbox[0];\\n  const height = bbox[3] - bbox[1];\\n  const region = new Path2D();\\n  region.rect(bbox[0], bbox[1], width, height);\\n  ctx.clip(region);\\n}\\n\\nclass BaseShadingPattern {\\n  constructor() {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      this.constructor === BaseShadingPattern\\n    ) {\\n      unreachable(\\\"Cannot initialize BaseShadingPattern.\\\");\\n    }\\n  }\\n\\n  isModifyingCurrentTransform() {\\n    return false;\\n  }\\n\\n  getPattern() {\\n    unreachable(\\\"Abstract method `getPattern` called.\\\");\\n  }\\n}\\n\\nclass RadialAxialShadingPattern extends BaseShadingPattern {\\n  constructor(IR) {\\n    super();\\n    this._type = IR[1];\\n    this._bbox = IR[2];\\n    this._colorStops = IR[3];\\n    this._p0 = IR[4];\\n    this._p1 = IR[5];\\n    this._r0 = IR[6];\\n    this._r1 = IR[7];\\n    this.matrix = null;\\n  }\\n\\n  _createGradient(ctx) {\\n    let grad;\\n    if (this._type === \\\"axial\\\") {\\n      grad = ctx.createLinearGradient(\\n        this._p0[0],\\n        this._p0[1],\\n        this._p1[0],\\n        this._p1[1]\\n      );\\n    } else if (this._type === \\\"radial\\\") {\\n      grad = ctx.createRadialGradient(\\n        this._p0[0],\\n        this._p0[1],\\n        this._r0,\\n        this._p1[0],\\n        this._p1[1],\\n        this._r1\\n      );\\n    }\\n\\n    for (const colorStop of this._colorStops) {\\n      grad.addColorStop(colorStop[0], colorStop[1]);\\n    }\\n    return grad;\\n  }\\n\\n  getPattern(ctx, owner, inverse, pathType) {\\n    let pattern;\\n    if (pathType === PathType.STROKE || pathType === PathType.FILL) {\\n      const ownerBBox = owner.current.getClippedPathBoundingBox(\\n        pathType,\\n        getCurrentTransform(ctx)\\n      ) || [0, 0, 0, 0];\\n      \u002F\u002F Create a canvas that is only as big as the current path. This doesn't\\n      \u002F\u002F allow us to cache the pattern, but it generally creates much smaller\\n      \u002F\u002F canvases and saves memory use. See bug 1722807 for an example.\\n      const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\\n      const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\\n\\n      const tmpCanvas = owner.cachedCanvases.getCanvas(\\n        \\\"pattern\\\",\\n        width,\\n        height\\n      );\\n\\n      const tmpCtx = tmpCanvas.context;\\n      tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\\n      tmpCtx.beginPath();\\n      tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\\n      \u002F\u002F Non shading fill patterns are positioned relative to the base transform\\n      \u002F\u002F (usually the page's initial transform), but we may have created a\\n      \u002F\u002F smaller canvas based on the path, so we must account for the shift.\\n      tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\\n      inverse = Util.transform(inverse, [\\n        1,\\n        0,\\n        0,\\n        1,\\n        ownerBBox[0],\\n        ownerBBox[1],\\n      ]);\\n\\n      tmpCtx.transform(...owner.baseTransform);\\n      if (this.matrix) {\\n        tmpCtx.transform(...this.matrix);\\n      }\\n      applyBoundingBox(tmpCtx, this._bbox);\\n\\n      tmpCtx.fillStyle = this._createGradient(tmpCtx);\\n      tmpCtx.fill();\\n\\n      pattern = ctx.createPattern(tmpCanvas.canvas, \\\"no-repeat\\\");\\n      const domMatrix = new DOMMatrix(inverse);\\n      pattern.setTransform(domMatrix);\\n    } else {\\n      \u002F\u002F Shading fills are applied relative to the current matrix which is also\\n      \u002F\u002F how canvas gradients work, so there's no need to do anything special\\n      \u002F\u002F here.\\n      applyBoundingBox(ctx, this._bbox);\\n      pattern = this._createGradient(ctx);\\n    }\\n    return pattern;\\n  }\\n}\\n\\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\\n  \u002F\u002F Very basic Gouraud-shaded triangle rasterization algorithm.\\n  const coords = context.coords,\\n    colors = context.colors;\\n  const bytes = data.data,\\n    rowSize = data.width * 4;\\n  let tmp;\\n  if (coords[p1 + 1] > coords[p2 + 1]) {\\n    tmp = p1;\\n    p1 = p2;\\n    p2 = tmp;\\n    tmp = c1;\\n    c1 = c2;\\n    c2 = tmp;\\n  }\\n  if (coords[p2 + 1] > coords[p3 + 1]) {\\n    tmp = p2;\\n    p2 = p3;\\n    p3 = tmp;\\n    tmp = c2;\\n    c2 = c3;\\n    c3 = tmp;\\n  }\\n  if (coords[p1 + 1] > coords[p2 + 1]) {\\n    tmp = p1;\\n    p1 = p2;\\n    p2 = tmp;\\n    tmp = c1;\\n    c1 = c2;\\n    c2 = tmp;\\n  }\\n  const x1 = (coords[p1] + context.offsetX) * context.scaleX;\\n  const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\\n  const x2 = (coords[p2] + context.offsetX) * context.scaleX;\\n  const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\\n  const x3 = (coords[p3] + context.offsetX) * context.scaleX;\\n  const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\\n  if (y1 >= y3) {\\n    return;\\n  }\\n  const c1r = colors[c1],\\n    c1g = colors[c1 + 1],\\n    c1b = colors[c1 + 2];\\n  const c2r = colors[c2],\\n    c2g = colors[c2 + 1],\\n    c2b = colors[c2 + 2];\\n  const c3r = colors[c3],\\n    c3g = colors[c3 + 1],\\n    c3b = colors[c3 + 2];\\n\\n  const minY = Math.round(y1),\\n    maxY = Math.round(y3);\\n  let xa, car, cag, cab;\\n  let xb, cbr, cbg, cbb;\\n  for (let y = minY; y \u003C= maxY; y++) {\\n    if (y \u003C y2) {\\n      const k = y \u003C y1 ? 0 : (y1 - y) \u002F (y1 - y2);\\n      xa = x1 - (x1 - x2) * k;\\n      car = c1r - (c1r - c2r) * k;\\n      cag = c1g - (c1g - c2g) * k;\\n      cab = c1b - (c1b - c2b) * k;\\n    } else {\\n      let k;\\n      if (y > y3) {\\n        k = 1;\\n      } else if (y2 === y3) {\\n        k = 0;\\n      } else {\\n        k = (y2 - y) \u002F (y2 - y3);\\n      }\\n      xa = x2 - (x2 - x3) * k;\\n      car = c2r - (c2r - c3r) * k;\\n      cag = c2g - (c2g - c3g) * k;\\n      cab = c2b - (c2b - c3b) * k;\\n    }\\n\\n    let k;\\n    if (y \u003C y1) {\\n      k = 0;\\n    } else if (y > y3) {\\n      k = 1;\\n    } else {\\n      k = (y1 - y) \u002F (y1 - y3);\\n    }\\n    xb = x1 - (x1 - x3) * k;\\n    cbr = c1r - (c1r - c3r) * k;\\n    cbg = c1g - (c1g - c3g) * k;\\n    cbb = c1b - (c1b - c3b) * k;\\n    const x1_ = Math.round(Math.min(xa, xb));\\n    const x2_ = Math.round(Math.max(xa, xb));\\n    let j = rowSize * y + x1_ * 4;\\n    for (let x = x1_; x \u003C= x2_; x++) {\\n      k = (xa - x) \u002F (xa - xb);\\n      if (k \u003C 0) {\\n        k = 0;\\n      } else if (k > 1) {\\n        k = 1;\\n      }\\n      bytes[j++] = (car - (car - cbr) * k) | 0;\\n      bytes[j++] = (cag - (cag - cbg) * k) | 0;\\n      bytes[j++] = (cab - (cab - cbb) * k) | 0;\\n      bytes[j++] = 255;\\n    }\\n  }\\n}\\n\\nfunction drawFigure(data, figure, context) {\\n  const ps = figure.coords;\\n  const cs = figure.colors;\\n  let i, ii;\\n  switch (figure.type) {\\n    case \\\"lattice\\\":\\n      const verticesPerRow = figure.verticesPerRow;\\n      const rows = Math.floor(ps.length \u002F verticesPerRow) - 1;\\n      const cols = verticesPerRow - 1;\\n      for (i = 0; i \u003C rows; i++) {\\n        let q = i * verticesPerRow;\\n        for (let j = 0; j \u003C cols; j++, q++) {\\n          drawTriangle(\\n            data,\\n            context,\\n            ps[q],\\n            ps[q + 1],\\n            ps[q + verticesPerRow],\\n            cs[q],\\n            cs[q + 1],\\n            cs[q + verticesPerRow]\\n          );\\n          drawTriangle(\\n            data,\\n            context,\\n            ps[q + verticesPerRow + 1],\\n            ps[q + 1],\\n            ps[q + verticesPerRow],\\n            cs[q + verticesPerRow + 1],\\n            cs[q + 1],\\n            cs[q + verticesPerRow]\\n          );\\n        }\\n      }\\n      break;\\n    case \\\"triangles\\\":\\n      for (i = 0, ii = ps.length; i \u003C ii; i += 3) {\\n        drawTriangle(\\n          data,\\n          context,\\n          ps[i],\\n          ps[i + 1],\\n          ps[i + 2],\\n          cs[i],\\n          cs[i + 1],\\n          cs[i + 2]\\n        );\\n      }\\n      break;\\n    default:\\n      throw new Error(\\\"illegal figure\\\");\\n  }\\n}\\n\\nclass MeshShadingPattern extends BaseShadingPattern {\\n  constructor(IR) {\\n    super();\\n    this._coords = IR[2];\\n    this._colors = IR[3];\\n    this._figures = IR[4];\\n    this._bounds = IR[5];\\n    this._bbox = IR[6];\\n    this._background = IR[7];\\n    this.matrix = null;\\n  }\\n\\n  _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\\n    \u002F\u002F we will increase scale on some weird factor to let antialiasing take\\n    \u002F\u002F care of \\\"rough\\\" edges\\n    const EXPECTED_SCALE = 1.1;\\n    \u002F\u002F MAX_PATTERN_SIZE is used to avoid OOM situation.\\n    const MAX_PATTERN_SIZE = 3000; \u002F\u002F 10in @ 300dpi shall be enough\\n    \u002F\u002F We need to keep transparent border around our pattern for fill():\\n    \u002F\u002F createPattern with 'no-repeat' will bleed edges across entire area.\\n    const BORDER_SIZE = 2;\\n\\n    const offsetX = Math.floor(this._bounds[0]);\\n    const offsetY = Math.floor(this._bounds[1]);\\n    const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\\n    const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\\n\\n    const width = Math.min(\\n      Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)),\\n      MAX_PATTERN_SIZE\\n    );\\n    const height = Math.min(\\n      Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)),\\n      MAX_PATTERN_SIZE\\n    );\\n    const scaleX = boundsWidth \u002F width;\\n    const scaleY = boundsHeight \u002F height;\\n\\n    const context = {\\n      coords: this._coords,\\n      colors: this._colors,\\n      offsetX: -offsetX,\\n      offsetY: -offsetY,\\n      scaleX: 1 \u002F scaleX,\\n      scaleY: 1 \u002F scaleY,\\n    };\\n\\n    const paddedWidth = width + BORDER_SIZE * 2;\\n    const paddedHeight = height + BORDER_SIZE * 2;\\n\\n    const tmpCanvas = cachedCanvases.getCanvas(\\n      \\\"mesh\\\",\\n      paddedWidth,\\n      paddedHeight\\n    );\\n    const tmpCtx = tmpCanvas.context;\\n\\n    const data = tmpCtx.createImageData(width, height);\\n    if (backgroundColor) {\\n      const bytes = data.data;\\n      for (let i = 0, ii = bytes.length; i \u003C ii; i += 4) {\\n        bytes[i] = backgroundColor[0];\\n        bytes[i + 1] = backgroundColor[1];\\n        bytes[i + 2] = backgroundColor[2];\\n        bytes[i + 3] = 255;\\n      }\\n    }\\n    for (const figure of this._figures) {\\n      drawFigure(data, figure, context);\\n    }\\n    tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\\n    const canvas = tmpCanvas.canvas;\\n\\n    return {\\n      canvas,\\n      offsetX: offsetX - BORDER_SIZE * scaleX,\\n      offsetY: offsetY - BORDER_SIZE * scaleY,\\n      scaleX,\\n      scaleY,\\n    };\\n  }\\n\\n  isModifyingCurrentTransform() {\\n    return true;\\n  }\\n\\n  getPattern(ctx, owner, inverse, pathType) {\\n    applyBoundingBox(ctx, this._bbox);\\n    const scale = new Float32Array(2);\\n    if (pathType === PathType.SHADING) {\\n      Util.singularValueDecompose2dScale(getCurrentTransform(ctx), scale);\\n    } else if (this.matrix) {\\n      \u002F\u002F Obtain scale from matrix and current transformation matrix.\\n      Util.singularValueDecompose2dScale(this.matrix, scale);\\n      const [matrixScaleX, matrixScaleY] = scale;\\n      Util.singularValueDecompose2dScale(owner.baseTransform, scale);\\n      scale[0] *= matrixScaleX;\\n      scale[1] *= matrixScaleY;\\n    } else {\\n      Util.singularValueDecompose2dScale(owner.baseTransform, scale);\\n    }\\n\\n    \u002F\u002F Rasterizing on the main thread since sending\u002Fqueue large canvases\\n    \u002F\u002F might cause OOM.\\n    const temporaryPatternCanvas = this._createMeshCanvas(\\n      scale,\\n      pathType === PathType.SHADING ? null : this._background,\\n      owner.cachedCanvases\\n    );\\n\\n    if (pathType !== PathType.SHADING) {\\n      ctx.setTransform(...owner.baseTransform);\\n      if (this.matrix) {\\n        ctx.transform(...this.matrix);\\n      }\\n    }\\n\\n    ctx.translate(\\n      temporaryPatternCanvas.offsetX,\\n      temporaryPatternCanvas.offsetY\\n    );\\n    ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\\n\\n    return ctx.createPattern(temporaryPatternCanvas.canvas, \\\"no-repeat\\\");\\n  }\\n}\\n\\nclass DummyShadingPattern extends BaseShadingPattern {\\n  getPattern() {\\n    return \\\"hotpink\\\";\\n  }\\n}\\n\\nfunction getShadingPattern(IR) {\\n  switch (IR[0]) {\\n    case \\\"RadialAxial\\\":\\n      return new RadialAxialShadingPattern(IR);\\n    case \\\"Mesh\\\":\\n      return new MeshShadingPattern(IR);\\n    case \\\"Dummy\\\":\\n      return new DummyShadingPattern();\\n  }\\n  throw new Error(`Unknown IR type: ${IR[0]}`);\\n}\\n\\nconst PaintType = {\\n  COLORED: 1,\\n  UNCOLORED: 2,\\n};\\n\\nclass TilingPattern {\\n  \u002F\u002F 10in @ 300dpi shall be enough.\\n  static MAX_PATTERN_SIZE = 3000;\\n\\n  constructor(IR, ctx, canvasGraphicsFactory, baseTransform) {\\n    this.color = IR[1];\\n    this.operatorList = IR[2];\\n    this.matrix = IR[3];\\n    this.bbox = IR[4];\\n    this.xstep = IR[5];\\n    this.ystep = IR[6];\\n    this.paintType = IR[7];\\n    this.tilingType = IR[8];\\n    this.ctx = ctx;\\n    this.canvasGraphicsFactory = canvasGraphicsFactory;\\n    this.baseTransform = baseTransform;\\n  }\\n\\n  createPatternCanvas(owner) {\\n    const {\\n      bbox,\\n      operatorList,\\n      paintType,\\n      tilingType,\\n      color,\\n      canvasGraphicsFactory,\\n    } = this;\\n    let { xstep, ystep } = this;\\n    xstep = Math.abs(xstep);\\n    ystep = Math.abs(ystep);\\n\\n    info(\\\"TilingType: \\\" + tilingType);\\n\\n    \u002F\u002F A tiling pattern as defined by PDF spec 8.7.2 is a cell whose size is\\n    \u002F\u002F described by bbox, and may repeat regularly by shifting the cell by\\n    \u002F\u002F xstep and ystep.\\n    \u002F\u002F Because the HTML5 canvas API does not support pattern repetition with\\n    \u002F\u002F gaps in between, we use the xstep\u002Fystep instead of the bbox's size.\\n    \u002F\u002F\\n    \u002F\u002F This has the following consequences (similarly for ystep):\\n    \u002F\u002F\\n    \u002F\u002F - If xstep is the same as bbox, then there is no observable difference.\\n    \u002F\u002F\\n    \u002F\u002F - If xstep is larger than bbox, then the pattern canvas is partially\\n    \u002F\u002F   empty: the area bounded by bbox is painted, the outside area is void.\\n    \u002F\u002F\\n    \u002F\u002F - If xstep is smaller than bbox, then the pixels between xstep and the\\n    \u002F\u002F   bbox boundary will be missing. This is INCORRECT behavior.\\n    \u002F\u002F   \\\"Figures on adjacent tiles should not overlap\\\" (PDF spec 8.7.3.1),\\n    \u002F\u002F   but overlapping cells without common pixels are still valid.\\n\\n    const x0 = bbox[0],\\n      y0 = bbox[1],\\n      x1 = bbox[2],\\n      y1 = bbox[3];\\n    const width = x1 - x0;\\n    const height = y1 - y0;\\n\\n    \u002F\u002F Obtain scale from matrix and current transformation matrix.\\n    const scale = new Float32Array(2);\\n    Util.singularValueDecompose2dScale(this.matrix, scale);\\n    const [matrixScaleX, matrixScaleY] = scale;\\n    Util.singularValueDecompose2dScale(this.baseTransform, scale);\\n    const combinedScaleX = matrixScaleX * scale[0];\\n    const combinedScaleY = matrixScaleY * scale[1];\\n\\n    let canvasWidth = width,\\n      canvasHeight = height,\\n      redrawHorizontally = false,\\n      redrawVertically = false;\\n\\n    const xScaledStep = Math.ceil(xstep * combinedScaleX);\\n    const yScaledStep = Math.ceil(ystep * combinedScaleY);\\n    const xScaledWidth = Math.ceil(width * combinedScaleX);\\n    const yScaledHeight = Math.ceil(height * combinedScaleY);\\n\\n    if (xScaledStep >= xScaledWidth) {\\n      canvasWidth = xstep;\\n    } else {\\n      redrawHorizontally = true;\\n    }\\n    if (yScaledStep >= yScaledHeight) {\\n      canvasHeight = ystep;\\n    } else {\\n      redrawVertically = true;\\n    }\\n\\n    \u002F\u002F Use width and height values that are as close as possible to the end\\n    \u002F\u002F result when the pattern is used. Too low value makes the pattern look\\n    \u002F\u002F blurry. Too large value makes it look too crispy.\\n    const dimx = this.getSizeAndScale(\\n      canvasWidth,\\n      this.ctx.canvas.width,\\n      combinedScaleX\\n    );\\n    const dimy = this.getSizeAndScale(\\n      canvasHeight,\\n      this.ctx.canvas.height,\\n      combinedScaleY\\n    );\\n\\n    const tmpCanvas = owner.cachedCanvases.getCanvas(\\n      \\\"pattern\\\",\\n      dimx.size,\\n      dimy.size\\n    );\\n    const tmpCtx = tmpCanvas.context;\\n    const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\\n    graphics.groupLevel = owner.groupLevel;\\n\\n    this.setFillAndStrokeStyleToContext(graphics, paintType, color);\\n\\n    tmpCtx.translate(-dimx.scale * x0, -dimy.scale * y0);\\n    graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\\n\\n    \u002F\u002F To match CanvasGraphics beginDrawing we must save the context here or\\n    \u002F\u002F else we end up with unbalanced save\u002Frestores.\\n    tmpCtx.save();\\n\\n    this.clipBbox(graphics, x0, y0, x1, y1);\\n\\n    graphics.baseTransform = getCurrentTransform(graphics.ctx);\\n\\n    graphics.executeOperatorList(operatorList);\\n\\n    graphics.endDrawing();\\n\\n    tmpCtx.restore();\\n\\n    if (redrawHorizontally || redrawVertically) {\\n      \u002F\u002F The tile is overlapping itself, so we create a new tile with\\n      \u002F\u002F dimensions xstep * ystep.\\n      \u002F\u002F Then we draw the overlapping parts of the original tile on the new\\n      \u002F\u002F tile.\\n      \u002F\u002F Just as a side note, the code here works correctly even if we don't\\n      \u002F\u002F have to redraw the tile horizontally or vertically. In that case, the\\n      \u002F\u002F original tile is drawn on the new tile only once, but it's useless.\\n      const image = tmpCanvas.canvas;\\n      if (redrawHorizontally) {\\n        canvasWidth = xstep;\\n      }\\n      if (redrawVertically) {\\n        canvasHeight = ystep;\\n      }\\n\\n      const dimx2 = this.getSizeAndScale(\\n        canvasWidth,\\n        this.ctx.canvas.width,\\n        combinedScaleX\\n      );\\n      const dimy2 = this.getSizeAndScale(\\n        canvasHeight,\\n        this.ctx.canvas.height,\\n        combinedScaleY\\n      );\\n\\n      const xSize = dimx2.size;\\n      const ySize = dimy2.size;\\n      const tmpCanvas2 = owner.cachedCanvases.getCanvas(\\n        \\\"pattern-workaround\\\",\\n        xSize,\\n        ySize\\n      );\\n      const tmpCtx2 = tmpCanvas2.context;\\n      const ii = redrawHorizontally ? Math.floor(width \u002F xstep) : 0;\\n      const jj = redrawVertically ? Math.floor(height \u002F ystep) : 0;\\n\\n      \u002F\u002F Draw the overlapping parts of the original tile on the new tile.\\n      for (let i = 0; i \u003C= ii; i++) {\\n        for (let j = 0; j \u003C= jj; j++) {\\n          tmpCtx2.drawImage(\\n            image,\\n            xSize * i,\\n            ySize * j,\\n            xSize,\\n            ySize,\\n            0,\\n            0,\\n            xSize,\\n            ySize\\n          );\\n        }\\n      }\\n      return {\\n        canvas: tmpCanvas2.canvas,\\n        scaleX: dimx2.scale,\\n        scaleY: dimy2.scale,\\n        offsetX: x0,\\n        offsetY: y0,\\n      };\\n    }\\n\\n    return {\\n      canvas: tmpCanvas.canvas,\\n      scaleX: dimx.scale,\\n      scaleY: dimy.scale,\\n      offsetX: x0,\\n      offsetY: y0,\\n    };\\n  }\\n\\n  getSizeAndScale(step, realOutputSize, scale) {\\n    \u002F\u002F MAX_PATTERN_SIZE is used to avoid OOM situation.\\n    \u002F\u002F Use the destination canvas's size if it is bigger than the hard-coded\\n    \u002F\u002F limit of MAX_PATTERN_SIZE to avoid clipping patterns that cover the\\n    \u002F\u002F whole canvas.\\n    const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\\n    let size = Math.ceil(step * scale);\\n    if (size >= maxSize) {\\n      size = maxSize;\\n    } else {\\n      scale = size \u002F step;\\n    }\\n    return { scale, size };\\n  }\\n\\n  clipBbox(graphics, x0, y0, x1, y1) {\\n    const bboxWidth = x1 - x0;\\n    const bboxHeight = y1 - y0;\\n    graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\\n    Util.axialAlignedBoundingBox(\\n      [x0, y0, x1, y1],\\n      getCurrentTransform(graphics.ctx),\\n      graphics.current.minMax\\n    );\\n    graphics.clip();\\n    graphics.endPath();\\n  }\\n\\n  setFillAndStrokeStyleToContext(graphics, paintType, color) {\\n    const context = graphics.ctx,\\n      current = graphics.current;\\n    switch (paintType) {\\n      case PaintType.COLORED:\\n        const { fillStyle, strokeStyle } = this.ctx;\\n        context.fillStyle = current.fillColor = fillStyle;\\n        context.strokeStyle = current.strokeColor = strokeStyle;\\n        break;\\n      case PaintType.UNCOLORED:\\n        context.fillStyle = context.strokeStyle = color;\\n        \u002F\u002F Set color needed by image masks (fixes issues 3226 and 8741).\\n        current.fillColor = current.strokeColor = color;\\n        break;\\n      default:\\n        throw new FormatError(`Unsupported paint type: ${paintType}`);\\n    }\\n  }\\n\\n  isModifyingCurrentTransform() {\\n    return false;\\n  }\\n\\n  getPattern(ctx, owner, inverse, pathType) {\\n    \u002F\u002F PDF spec 8.7.2 NOTE 1: pattern's matrix is relative to initial matrix.\\n    let matrix = inverse;\\n    if (pathType !== PathType.SHADING) {\\n      matrix = Util.transform(matrix, owner.baseTransform);\\n      if (this.matrix) {\\n        matrix = Util.transform(matrix, this.matrix);\\n      }\\n    }\\n\\n    const temporaryPatternCanvas = this.createPatternCanvas(owner);\\n\\n    let domMatrix = new DOMMatrix(matrix);\\n    \u002F\u002F Rescale and so that the ctx.createPattern call generates a pattern with\\n    \u002F\u002F the desired size.\\n    domMatrix = domMatrix.translate(\\n      temporaryPatternCanvas.offsetX,\\n      temporaryPatternCanvas.offsetY\\n    );\\n    domMatrix = domMatrix.scale(\\n      1 \u002F temporaryPatternCanvas.scaleX,\\n      1 \u002F temporaryPatternCanvas.scaleY\\n    );\\n\\n    const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \\\"repeat\\\");\\n    pattern.setTransform(domMatrix);\\n\\n    return pattern;\\n  }\\n}\\n\\nexport { getShadingPattern, PathType, TilingPattern };\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { FeatureTest, ImageKind } from \\\".\u002Futil.js\\\";\\n\\nfunction convertToRGBA(params) {\\n  switch (params.kind) {\\n    case ImageKind.GRAYSCALE_1BPP:\\n      return convertBlackAndWhiteToRGBA(params);\\n    case ImageKind.RGB_24BPP:\\n      return convertRGBToRGBA(params);\\n  }\\n\\n  return null;\\n}\\n\\nfunction convertBlackAndWhiteToRGBA({\\n  src,\\n  srcPos = 0,\\n  dest,\\n  width,\\n  height,\\n  nonBlackColor = 0xffffffff,\\n  inverseDecode = false,\\n}) {\\n  const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\\n  const [zeroMapping, oneMapping] = inverseDecode\\n    ? [nonBlackColor, black]\\n    : [black, nonBlackColor];\\n  const widthInSource = width >> 3;\\n  const widthRemainder = width & 7;\\n  const srcLength = src.length;\\n  dest = new Uint32Array(dest.buffer);\\n  let destPos = 0;\\n\\n  for (let i = 0; i \u003C height; i++) {\\n    for (const max = srcPos + widthInSource; srcPos \u003C max; srcPos++) {\\n      const elem = srcPos \u003C srcLength ? src[srcPos] : 255;\\n      dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\\n      dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\\n      dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\\n      dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\\n      dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\\n      dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\\n      dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\\n      dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\\n    }\\n    if (widthRemainder === 0) {\\n      continue;\\n    }\\n    const elem = srcPos \u003C srcLength ? src[srcPos++] : 255;\\n    for (let j = 0; j \u003C widthRemainder; j++) {\\n      dest[destPos++] = elem & (1 \u003C\u003C (7 - j)) ? oneMapping : zeroMapping;\\n    }\\n  }\\n  return { srcPos, destPos };\\n}\\n\\nfunction convertRGBToRGBA({\\n  src,\\n  srcPos = 0,\\n  dest,\\n  destPos = 0,\\n  width,\\n  height,\\n}) {\\n  let i = 0;\\n  const len = width * height * 3;\\n  const len32 = len >> 2;\\n  const src32 = new Uint32Array(src.buffer, srcPos, len32);\\n\\n  if (FeatureTest.isLittleEndian) {\\n    \u002F\u002F It's a way faster to do the shuffle manually instead of working\\n    \u002F\u002F component by component with some Uint8 arrays.\\n    for (; i \u003C len32 - 2; i += 3, destPos += 4) {\\n      const s1 = src32[i]; \u002F\u002F R2B1G1R1\\n      const s2 = src32[i + 1]; \u002F\u002F G3R3B2G2\\n      const s3 = src32[i + 2]; \u002F\u002F B4G4R4B3\\n\\n      dest[destPos] = s1 | 0xff000000;\\n      dest[destPos + 1] = (s1 >>> 24) | (s2 \u003C\u003C 8) | 0xff000000;\\n      dest[destPos + 2] = (s2 >>> 16) | (s3 \u003C\u003C 16) | 0xff000000;\\n      dest[destPos + 3] = (s3 >>> 8) | 0xff000000;\\n    }\\n\\n    for (let j = i * 4, jj = srcPos + len; j \u003C jj; j += 3) {\\n      dest[destPos++] =\\n        src[j] | (src[j + 1] \u003C\u003C 8) | (src[j + 2] \u003C\u003C 16) | 0xff000000;\\n    }\\n  } else {\\n    for (; i \u003C len32 - 2; i += 3, destPos += 4) {\\n      const s1 = src32[i]; \u002F\u002F R1G1B1R2\\n      const s2 = src32[i + 1]; \u002F\u002F G2B2R3G3\\n      const s3 = src32[i + 2]; \u002F\u002F B3R4G4B4\\n\\n      dest[destPos] = s1 | 0xff;\\n      dest[destPos + 1] = (s1 \u003C\u003C 24) | (s2 >>> 8) | 0xff;\\n      dest[destPos + 2] = (s2 \u003C\u003C 16) | (s3 >>> 16) | 0xff;\\n      dest[destPos + 3] = (s3 \u003C\u003C 8) | 0xff;\\n    }\\n\\n    for (let j = i * 4, jj = srcPos + len; j \u003C jj; j += 3) {\\n      dest[destPos++] =\\n        (src[j] \u003C\u003C 24) | (src[j + 1] \u003C\u003C 16) | (src[j + 2] \u003C\u003C 8) | 0xff;\\n    }\\n  }\\n\\n  return { srcPos: srcPos + len, destPos };\\n}\\n\\nfunction grayToRGBA(src, dest) {\\n  if (FeatureTest.isLittleEndian) {\\n    for (let i = 0, ii = src.length; i \u003C ii; i++) {\\n      dest[i] = (src[i] * 0x10101) | 0xff000000;\\n    }\\n  } else {\\n    for (let i = 0, ii = src.length; i \u003C ii; i++) {\\n      dest[i] = (src[i] * 0x1010100) | 0x000000ff;\\n    }\\n  }\\n}\\n\\nexport { convertBlackAndWhiteToRGBA, convertToRGBA, grayToRGBA };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  DrawOPS,\\n  FeatureTest,\\n  FONT_IDENTITY_MATRIX,\\n  ImageKind,\\n  info,\\n  OPS,\\n  shadow,\\n  TextRenderingMode,\\n  unreachable,\\n  Util,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  getCurrentTransform,\\n  getCurrentTransformInverse,\\n  OutputScale,\\n  PixelsPerInch,\\n} from \\\".\u002Fdisplay_utils.js\\\";\\nimport {\\n  getShadingPattern,\\n  PathType,\\n  TilingPattern,\\n} from \\\".\u002Fpattern_helper.js\\\";\\nimport { convertBlackAndWhiteToRGBA } from \\\"..\u002Fshared\u002Fimage_utils.js\\\";\\n\\n\u002F\u002F \u003Ccanvas> contexts store most of the state we need natively.\\n\u002F\u002F However, PDF needs a bit more state, which we store here.\\n\u002F\u002F Minimal font size that would be used during canvas fillText operations.\\nconst MIN_FONT_SIZE = 16;\\n\u002F\u002F Maximum font size that would be used during canvas fillText operations.\\nconst MAX_FONT_SIZE = 100;\\n\\n\u002F\u002F Defines the time the `executeOperatorList`-method is going to be executing\\n\u002F\u002F before it stops and schedules a continue of execution.\\nconst EXECUTION_TIME = 15; \u002F\u002F ms\\n\u002F\u002F Defines the number of steps before checking the execution time.\\nconst EXECUTION_STEPS = 10;\\n\\nconst FULL_CHUNK_HEIGHT = 16;\\n\\n\u002F\u002F Only used in rescaleAndStroke. The goal is to avoid\\n\u002F\u002F creating a new DOMMatrix object each time we need it.\\nconst SCALE_MATRIX = new DOMMatrix();\\n\\n\u002F\u002F Used to get some coordinates.\\nconst XY = new Float32Array(2);\\n\\n\u002F\u002F Initial rectangle values for the minMax array.\\nconst MIN_MAX_INIT = new Float32Array([\\n  Infinity,\\n  Infinity,\\n  -Infinity,\\n  -Infinity,\\n]);\\n\\n\u002F**\\n * Overrides certain methods on a 2d ctx so that when they are called they\\n * will also call the same method on the destCtx. The methods that are\\n * overridden are all the transformation state modifiers, path creation, and\\n * save\u002Frestore. We only forward these specific methods because they are the\\n * only state modifiers that we cannot copy over when we switch contexts.\\n *\\n * To remove mirroring call `ctx._removeMirroring()`.\\n *\\n * @param {Object} ctx - The 2d canvas context that will duplicate its calls on\\n *   the destCtx.\\n * @param {Object} destCtx - The 2d canvas context that will receive the\\n *   forwarded calls.\\n *\u002F\\nfunction mirrorContextOperations(ctx, destCtx) {\\n  if (ctx._removeMirroring) {\\n    throw new Error(\\\"Context is already forwarding operations.\\\");\\n  }\\n  ctx.__originalSave = ctx.save;\\n  ctx.__originalRestore = ctx.restore;\\n  ctx.__originalRotate = ctx.rotate;\\n  ctx.__originalScale = ctx.scale;\\n  ctx.__originalTranslate = ctx.translate;\\n  ctx.__originalTransform = ctx.transform;\\n  ctx.__originalSetTransform = ctx.setTransform;\\n  ctx.__originalResetTransform = ctx.resetTransform;\\n  ctx.__originalClip = ctx.clip;\\n  ctx.__originalMoveTo = ctx.moveTo;\\n  ctx.__originalLineTo = ctx.lineTo;\\n  ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\\n  ctx.__originalRect = ctx.rect;\\n  ctx.__originalClosePath = ctx.closePath;\\n  ctx.__originalBeginPath = ctx.beginPath;\\n\\n  ctx._removeMirroring = () => {\\n    ctx.save = ctx.__originalSave;\\n    ctx.restore = ctx.__originalRestore;\\n    ctx.rotate = ctx.__originalRotate;\\n    ctx.scale = ctx.__originalScale;\\n    ctx.translate = ctx.__originalTranslate;\\n    ctx.transform = ctx.__originalTransform;\\n    ctx.setTransform = ctx.__originalSetTransform;\\n    ctx.resetTransform = ctx.__originalResetTransform;\\n\\n    ctx.clip = ctx.__originalClip;\\n    ctx.moveTo = ctx.__originalMoveTo;\\n    ctx.lineTo = ctx.__originalLineTo;\\n    ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\\n    ctx.rect = ctx.__originalRect;\\n    ctx.closePath = ctx.__originalClosePath;\\n    ctx.beginPath = ctx.__originalBeginPath;\\n    delete ctx._removeMirroring;\\n  };\\n\\n  ctx.save = function () {\\n    destCtx.save();\\n    this.__originalSave();\\n  };\\n\\n  ctx.restore = function () {\\n    destCtx.restore();\\n    this.__originalRestore();\\n  };\\n\\n  ctx.translate = function (x, y) {\\n    destCtx.translate(x, y);\\n    this.__originalTranslate(x, y);\\n  };\\n\\n  ctx.scale = function (x, y) {\\n    destCtx.scale(x, y);\\n    this.__originalScale(x, y);\\n  };\\n\\n  ctx.transform = function (a, b, c, d, e, f) {\\n    destCtx.transform(a, b, c, d, e, f);\\n    this.__originalTransform(a, b, c, d, e, f);\\n  };\\n\\n  ctx.setTransform = function (a, b, c, d, e, f) {\\n    destCtx.setTransform(a, b, c, d, e, f);\\n    this.__originalSetTransform(a, b, c, d, e, f);\\n  };\\n\\n  ctx.resetTransform = function () {\\n    destCtx.resetTransform();\\n    this.__originalResetTransform();\\n  };\\n\\n  ctx.rotate = function (angle) {\\n    destCtx.rotate(angle);\\n    this.__originalRotate(angle);\\n  };\\n\\n  ctx.clip = function (rule) {\\n    destCtx.clip(rule);\\n    this.__originalClip(rule);\\n  };\\n\\n  ctx.moveTo = function (x, y) {\\n    destCtx.moveTo(x, y);\\n    this.__originalMoveTo(x, y);\\n  };\\n\\n  ctx.lineTo = function (x, y) {\\n    destCtx.lineTo(x, y);\\n    this.__originalLineTo(x, y);\\n  };\\n\\n  ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\\n    destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\\n    this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\\n  };\\n\\n  ctx.rect = function (x, y, width, height) {\\n    destCtx.rect(x, y, width, height);\\n    this.__originalRect(x, y, width, height);\\n  };\\n\\n  ctx.closePath = function () {\\n    destCtx.closePath();\\n    this.__originalClosePath();\\n  };\\n\\n  ctx.beginPath = function () {\\n    destCtx.beginPath();\\n    this.__originalBeginPath();\\n  };\\n}\\n\\nclass CachedCanvases {\\n  constructor(canvasFactory) {\\n    this.canvasFactory = canvasFactory;\\n    this.cache = Object.create(null);\\n  }\\n\\n  getCanvas(id, width, height) {\\n    let canvasEntry;\\n    if (this.cache[id] !== undefined) {\\n      canvasEntry = this.cache[id];\\n      this.canvasFactory.reset(canvasEntry, width, height);\\n    } else {\\n      canvasEntry = this.canvasFactory.create(width, height);\\n      this.cache[id] = canvasEntry;\\n    }\\n    return canvasEntry;\\n  }\\n\\n  delete(id) {\\n    delete this.cache[id];\\n  }\\n\\n  clear() {\\n    for (const id in this.cache) {\\n      const canvasEntry = this.cache[id];\\n      this.canvasFactory.destroy(canvasEntry);\\n      delete this.cache[id];\\n    }\\n  }\\n}\\n\\nfunction drawImageAtIntegerCoords(\\n  ctx,\\n  srcImg,\\n  srcX,\\n  srcY,\\n  srcW,\\n  srcH,\\n  destX,\\n  destY,\\n  destW,\\n  destH\\n) {\\n  const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);\\n  if (b === 0 && c === 0) {\\n    \u002F\u002F top-left corner is at (X, Y) and\\n    \u002F\u002F bottom-right one is at (X + width, Y + height).\\n\\n    \u002F\u002F If leftX is 4.321 then it's rounded to 4.\\n    \u002F\u002F If width is 10.432 then it's rounded to 11 because\\n    \u002F\u002F rightX = leftX + width = 14.753 which is rounded to 15\\n    \u002F\u002F so after rounding the total width is 11 (15 - 4).\\n    \u002F\u002F It's why we can't just floor\u002Fceil uniformly, it just depends\\n    \u002F\u002F on the values we've.\\n\\n    const tlX = destX * a + tx;\\n    const rTlX = Math.round(tlX);\\n    const tlY = destY * d + ty;\\n    const rTlY = Math.round(tlY);\\n    const brX = (destX + destW) * a + tx;\\n\\n    \u002F\u002F Some pdf contains images with 1x1 images so in case of 0-width after\\n    \u002F\u002F scaling we must fallback on 1 to be sure there is something.\\n    const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\\n    const brY = (destY + destH) * d + ty;\\n    const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\\n\\n    \u002F\u002F We must apply a transformation in order to apply it on the image itself.\\n    \u002F\u002F For example if a == 1 && d == -1, it means that the image itself is\\n    \u002F\u002F mirrored w.r.t. the x-axis.\\n    ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);\\n    ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);\\n    ctx.setTransform(a, b, c, d, tx, ty);\\n\\n    return [rWidth, rHeight];\\n  }\\n\\n  if (a === 0 && d === 0) {\\n    \u002F\u002F This path is taken in issue9462.pdf (page 3).\\n    const tlX = destY * c + tx;\\n    const rTlX = Math.round(tlX);\\n    const tlY = destX * b + ty;\\n    const rTlY = Math.round(tlY);\\n    const brX = (destY + destH) * c + tx;\\n    const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\\n    const brY = (destX + destW) * b + ty;\\n    const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\\n\\n    ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);\\n    ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);\\n    ctx.setTransform(a, b, c, d, tx, ty);\\n\\n    return [rHeight, rWidth];\\n  }\\n\\n  \u002F\u002F Not a scale matrix so let the render handle the case without rounding.\\n  ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\\n\\n  const scaleX = Math.hypot(a, b);\\n  const scaleY = Math.hypot(c, d);\\n  return [scaleX * destW, scaleY * destH];\\n}\\n\\nclass CanvasExtraState {\\n  \u002F\u002F Are soft masks and alpha values shapes or opacities?\\n  alphaIsShape = false;\\n\\n  fontSize = 0;\\n\\n  fontSizeScale = 1;\\n\\n  textMatrix = null;\\n\\n  textMatrixScale = 1;\\n\\n  fontMatrix = FONT_IDENTITY_MATRIX;\\n\\n  leading = 0;\\n\\n  \u002F\u002F Current point (in user coordinates)\\n  x = 0;\\n\\n  y = 0;\\n\\n  \u002F\u002F Start of text line (in text coordinates)\\n  lineX = 0;\\n\\n  lineY = 0;\\n\\n  \u002F\u002F Character and word spacing\\n  charSpacing = 0;\\n\\n  wordSpacing = 0;\\n\\n  textHScale = 1;\\n\\n  textRenderingMode = TextRenderingMode.FILL;\\n\\n  textRise = 0;\\n\\n  \u002F\u002F Default fore and background colors\\n  fillColor = \\\"#000000\\\";\\n\\n  strokeColor = \\\"#000000\\\";\\n\\n  patternFill = false;\\n\\n  patternStroke = false;\\n\\n  \u002F\u002F Note: fill alpha applies to all non-stroking operations\\n  fillAlpha = 1;\\n\\n  strokeAlpha = 1;\\n\\n  lineWidth = 1;\\n\\n  activeSMask = null;\\n\\n  transferMaps = \\\"none\\\";\\n\\n  constructor(width, height) {\\n    this.clipBox = new Float32Array([0, 0, width, height]);\\n    this.minMax = MIN_MAX_INIT.slice();\\n  }\\n\\n  clone() {\\n    const clone = Object.create(this);\\n    clone.clipBox = this.clipBox.slice();\\n    clone.minMax = this.minMax.slice();\\n    return clone;\\n  }\\n\\n  getPathBoundingBox(pathType = PathType.FILL, transform = null) {\\n    const box = this.minMax.slice();\\n    if (pathType === PathType.STROKE) {\\n      if (!transform) {\\n        unreachable(\\\"Stroke bounding box must include transform.\\\");\\n      }\\n      \u002F\u002F Stroked paths can be outside of the path bounding box by 1\u002F2 the line\\n      \u002F\u002F width.\\n      Util.singularValueDecompose2dScale(transform, XY);\\n      const xStrokePad = (XY[0] * this.lineWidth) \u002F 2;\\n      const yStrokePad = (XY[1] * this.lineWidth) \u002F 2;\\n      box[0] -= xStrokePad;\\n      box[1] -= yStrokePad;\\n      box[2] += xStrokePad;\\n      box[3] += yStrokePad;\\n    }\\n    return box;\\n  }\\n\\n  updateClipFromPath() {\\n    const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\\n    this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\\n  }\\n\\n  isEmptyClip() {\\n    return this.minMax[0] === Infinity;\\n  }\\n\\n  startNewPathAndClipBox(box) {\\n    this.clipBox.set(box, 0);\\n    this.minMax.set(MIN_MAX_INIT, 0);\\n  }\\n\\n  getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\\n    return Util.intersect(\\n      this.clipBox,\\n      this.getPathBoundingBox(pathType, transform)\\n    );\\n  }\\n}\\n\\nfunction putBinaryImageData(ctx, imgData) {\\n  if (imgData instanceof ImageData) {\\n    ctx.putImageData(imgData, 0, 0);\\n    return;\\n  }\\n\\n  \u002F\u002F Put the image data to the canvas in chunks, rather than putting the\\n  \u002F\u002F whole image at once.  This saves JS memory, because the ImageData object\\n  \u002F\u002F is smaller. It also possibly saves C++ memory within the implementation\\n  \u002F\u002F of putImageData(). (E.g. in Firefox we make two short-lived copies of\\n  \u002F\u002F the data passed to putImageData()). |n| shouldn't be too small, however,\\n  \u002F\u002F because too many putImageData() calls will slow things down.\\n  \u002F\u002F\\n  \u002F\u002F Note: as written, if the last chunk is partial, the putImageData() call\\n  \u002F\u002F will (conceptually) put pixels past the bounds of the canvas.  But\\n  \u002F\u002F that's ok; any such pixels are ignored.\\n\\n  const height = imgData.height,\\n    width = imgData.width;\\n  const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\\n  const fullChunks = (height - partialChunkHeight) \u002F FULL_CHUNK_HEIGHT;\\n  const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\\n\\n  const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\\n  let srcPos = 0,\\n    destPos;\\n  const src = imgData.data;\\n  const dest = chunkImgData.data;\\n  let i, j, thisChunkHeight, elemsInThisChunk;\\n\\n  \u002F\u002F There are multiple forms in which the pixel data can be passed, and\\n  \u002F\u002F imgData.kind tells us which one this is.\\n  if (imgData.kind === ImageKind.GRAYSCALE_1BPP) {\\n    \u002F\u002F Grayscale, 1 bit per pixel (i.e. black-and-white).\\n    const srcLength = src.byteLength;\\n    const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\\n    const dest32DataLength = dest32.length;\\n    const fullSrcDiff = (width + 7) >> 3;\\n    const white = 0xffffffff;\\n    const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\\n\\n    for (i = 0; i \u003C totalChunks; i++) {\\n      thisChunkHeight = i \u003C fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\\n      destPos = 0;\\n      for (j = 0; j \u003C thisChunkHeight; j++) {\\n        const srcDiff = srcLength - srcPos;\\n        let k = 0;\\n        const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\\n        const kEndUnrolled = kEnd & ~7;\\n        let mask = 0;\\n        let srcByte = 0;\\n        for (; k \u003C kEndUnrolled; k += 8) {\\n          srcByte = src[srcPos++];\\n          dest32[destPos++] = srcByte & 128 ? white : black;\\n          dest32[destPos++] = srcByte & 64 ? white : black;\\n          dest32[destPos++] = srcByte & 32 ? white : black;\\n          dest32[destPos++] = srcByte & 16 ? white : black;\\n          dest32[destPos++] = srcByte & 8 ? white : black;\\n          dest32[destPos++] = srcByte & 4 ? white : black;\\n          dest32[destPos++] = srcByte & 2 ? white : black;\\n          dest32[destPos++] = srcByte & 1 ? white : black;\\n        }\\n        for (; k \u003C kEnd; k++) {\\n          if (mask === 0) {\\n            srcByte = src[srcPos++];\\n            mask = 128;\\n          }\\n\\n          dest32[destPos++] = srcByte & mask ? white : black;\\n          mask >>= 1;\\n        }\\n      }\\n      \u002F\u002F We ran out of input. Make all remaining pixels transparent.\\n      while (destPos \u003C dest32DataLength) {\\n        dest32[destPos++] = 0;\\n      }\\n\\n      ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\\n    }\\n  } else if (imgData.kind === ImageKind.RGBA_32BPP) {\\n    \u002F\u002F RGBA, 32-bits per pixel.\\n    j = 0;\\n    elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\\n    for (i = 0; i \u003C fullChunks; i++) {\\n      dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\\n      srcPos += elemsInThisChunk;\\n\\n      ctx.putImageData(chunkImgData, 0, j);\\n      j += FULL_CHUNK_HEIGHT;\\n    }\\n    if (i \u003C totalChunks) {\\n      elemsInThisChunk = width * partialChunkHeight * 4;\\n      dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\\n\\n      ctx.putImageData(chunkImgData, 0, j);\\n    }\\n  } else if (imgData.kind === ImageKind.RGB_24BPP) {\\n    \u002F\u002F RGB, 24-bits per pixel.\\n    thisChunkHeight = FULL_CHUNK_HEIGHT;\\n    elemsInThisChunk = width * thisChunkHeight;\\n    for (i = 0; i \u003C totalChunks; i++) {\\n      if (i >= fullChunks) {\\n        thisChunkHeight = partialChunkHeight;\\n        elemsInThisChunk = width * thisChunkHeight;\\n      }\\n\\n      destPos = 0;\\n      for (j = elemsInThisChunk; j--; ) {\\n        dest[destPos++] = src[srcPos++];\\n        dest[destPos++] = src[srcPos++];\\n        dest[destPos++] = src[srcPos++];\\n        dest[destPos++] = 255;\\n      }\\n\\n      ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\\n    }\\n  } else {\\n    throw new Error(`bad image kind: ${imgData.kind}`);\\n  }\\n}\\n\\nfunction putBinaryImageMask(ctx, imgData) {\\n  if (imgData.bitmap) {\\n    \u002F\u002F The bitmap has been created in the worker.\\n    ctx.drawImage(imgData.bitmap, 0, 0);\\n    return;\\n  }\\n\\n  \u002F\u002F Slow path: OffscreenCanvas isn't available in the worker.\\n  const height = imgData.height,\\n    width = imgData.width;\\n  const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\\n  const fullChunks = (height - partialChunkHeight) \u002F FULL_CHUNK_HEIGHT;\\n  const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\\n\\n  const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\\n  let srcPos = 0;\\n  const src = imgData.data;\\n  const dest = chunkImgData.data;\\n\\n  for (let i = 0; i \u003C totalChunks; i++) {\\n    const thisChunkHeight =\\n      i \u003C fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\\n\\n    \u002F\u002F Expand the mask so it can be used by the canvas.  Any required\\n    \u002F\u002F inversion has already been handled.\\n\\n    ({ srcPos } = convertBlackAndWhiteToRGBA({\\n      src,\\n      srcPos,\\n      dest,\\n      width,\\n      height: thisChunkHeight,\\n      nonBlackColor: 0,\\n    }));\\n\\n    ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\\n  }\\n}\\n\\nfunction copyCtxState(sourceCtx, destCtx) {\\n  const properties = [\\n    \\\"strokeStyle\\\",\\n    \\\"fillStyle\\\",\\n    \\\"fillRule\\\",\\n    \\\"globalAlpha\\\",\\n    \\\"lineWidth\\\",\\n    \\\"lineCap\\\",\\n    \\\"lineJoin\\\",\\n    \\\"miterLimit\\\",\\n    \\\"globalCompositeOperation\\\",\\n    \\\"font\\\",\\n    \\\"filter\\\",\\n  ];\\n  for (const property of properties) {\\n    if (sourceCtx[property] !== undefined) {\\n      destCtx[property] = sourceCtx[property];\\n    }\\n  }\\n  if (sourceCtx.setLineDash !== undefined) {\\n    destCtx.setLineDash(sourceCtx.getLineDash());\\n    destCtx.lineDashOffset = sourceCtx.lineDashOffset;\\n  }\\n}\\n\\nfunction resetCtxToDefault(ctx) {\\n  ctx.strokeStyle = ctx.fillStyle = \\\"#000000\\\";\\n  ctx.fillRule = \\\"nonzero\\\";\\n  ctx.globalAlpha = 1;\\n  ctx.lineWidth = 1;\\n  ctx.lineCap = \\\"butt\\\";\\n  ctx.lineJoin = \\\"miter\\\";\\n  ctx.miterLimit = 10;\\n  ctx.globalCompositeOperation = \\\"source-over\\\";\\n  ctx.font = \\\"10px sans-serif\\\";\\n  if (ctx.setLineDash !== undefined) {\\n    ctx.setLineDash([]);\\n    ctx.lineDashOffset = 0;\\n  }\\n  const { filter } = ctx;\\n  if (filter !== \\\"none\\\" && filter !== \\\"\\\") {\\n    ctx.filter = \\\"none\\\";\\n  }\\n}\\n\\nfunction getImageSmoothingEnabled(transform, interpolate) {\\n  \u002F\u002F In section 8.9.5.3 of the PDF spec, it's mentioned that the interpolate\\n  \u002F\u002F flag should be used when the image is upscaled.\\n  \u002F\u002F In Firefox, smoothing is always used when downscaling images (bug 1360415).\\n\\n  if (interpolate) {\\n    return true;\\n  }\\n\\n  Util.singularValueDecompose2dScale(transform, XY);\\n  \u002F\u002F Round to a 32bit float so that `\u003C=` check below will pass for numbers that\\n  \u002F\u002F are very close, but not exactly the same 64bit floats.\\n  const actualScale = Math.fround(\\n    OutputScale.pixelRatio * PixelsPerInch.PDF_TO_CSS_UNITS\\n  );\\n  \u002F\u002F `XY` is a Float32Array.\\n  return XY[0] \u003C= actualScale && XY[1] \u003C= actualScale;\\n}\\n\\nconst LINE_CAP_STYLES = [\\\"butt\\\", \\\"round\\\", \\\"square\\\"];\\nconst LINE_JOIN_STYLES = [\\\"miter\\\", \\\"round\\\", \\\"bevel\\\"];\\nconst NORMAL_CLIP = {};\\nconst EO_CLIP = {};\\n\\nclass CanvasGraphics {\\n  constructor(\\n    canvasCtx,\\n    commonObjs,\\n    objs,\\n    canvasFactory,\\n    filterFactory,\\n    { optionalContentConfig, markedContentStack = null },\\n    annotationCanvasMap,\\n    pageColors\\n  ) {\\n    this.ctx = canvasCtx;\\n    this.current = new CanvasExtraState(\\n      this.ctx.canvas.width,\\n      this.ctx.canvas.height\\n    );\\n    this.stateStack = [];\\n    this.pendingClip = null;\\n    this.pendingEOFill = false;\\n    this.res = null;\\n    this.xobjs = null;\\n    this.commonObjs = commonObjs;\\n    this.objs = objs;\\n    this.canvasFactory = canvasFactory;\\n    this.filterFactory = filterFactory;\\n    this.groupStack = [];\\n    \u002F\u002F Patterns are painted relative to the initial page\u002Fform transform, see\\n    \u002F\u002F PDF spec 8.7.2 NOTE 1.\\n    this.baseTransform = null;\\n    this.baseTransformStack = [];\\n    this.groupLevel = 0;\\n    this.smaskStack = [];\\n    this.smaskCounter = 0;\\n    this.tempSMask = null;\\n    this.suspendedCtx = null;\\n    this.contentVisible = true;\\n    this.markedContentStack = markedContentStack || [];\\n    this.optionalContentConfig = optionalContentConfig;\\n    this.cachedCanvases = new CachedCanvases(this.canvasFactory);\\n    this.cachedPatterns = new Map();\\n    this.annotationCanvasMap = annotationCanvasMap;\\n    this.viewportScale = 1;\\n    this.outputScaleX = 1;\\n    this.outputScaleY = 1;\\n    this.pageColors = pageColors;\\n\\n    this._cachedScaleForStroking = [-1, 0];\\n    this._cachedGetSinglePixelWidth = null;\\n    this._cachedBitmapsMap = new Map();\\n  }\\n\\n  getObject(data, fallback = null) {\\n    if (typeof data === \\\"string\\\") {\\n      return data.startsWith(\\\"g_\\\")\\n        ? this.commonObjs.get(data)\\n        : this.objs.get(data);\\n    }\\n    return fallback;\\n  }\\n\\n  beginDrawing({\\n    transform,\\n    viewport,\\n    transparency = false,\\n    background = null,\\n  }) {\\n    \u002F\u002F For pdfs that use blend modes we have to clear the canvas else certain\\n    \u002F\u002F blend modes can look wrong since we'd be blending with a white\\n    \u002F\u002F backdrop. The problem with a transparent backdrop though is we then\\n    \u002F\u002F don't get sub pixel anti aliasing on text, creating temporary\\n    \u002F\u002F transparent canvas when we have blend modes.\\n    const width = this.ctx.canvas.width;\\n    const height = this.ctx.canvas.height;\\n\\n    const savedFillStyle = this.ctx.fillStyle;\\n    this.ctx.fillStyle = background || \\\"#ffffff\\\";\\n    this.ctx.fillRect(0, 0, width, height);\\n    this.ctx.fillStyle = savedFillStyle;\\n\\n    if (transparency) {\\n      const transparentCanvas = this.cachedCanvases.getCanvas(\\n        \\\"transparent\\\",\\n        width,\\n        height\\n      );\\n      this.compositeCtx = this.ctx;\\n      this.transparentCanvas = transparentCanvas.canvas;\\n      this.ctx = transparentCanvas.context;\\n      this.ctx.save();\\n      \u002F\u002F The transform can be applied before rendering, transferring it to\\n      \u002F\u002F the new canvas.\\n      this.ctx.transform(...getCurrentTransform(this.compositeCtx));\\n    }\\n\\n    this.ctx.save();\\n    resetCtxToDefault(this.ctx);\\n    if (transform) {\\n      this.ctx.transform(...transform);\\n      this.outputScaleX = transform[0];\\n      this.outputScaleY = transform[0];\\n    }\\n    this.ctx.transform(...viewport.transform);\\n    this.viewportScale = viewport.scale;\\n\\n    this.baseTransform = getCurrentTransform(this.ctx);\\n  }\\n\\n  executeOperatorList(\\n    operatorList,\\n    executionStartIdx,\\n    continueCallback,\\n    stepper\\n  ) {\\n    const argsArray = operatorList.argsArray;\\n    const fnArray = operatorList.fnArray;\\n    let i = executionStartIdx || 0;\\n    const argsArrayLen = argsArray.length;\\n\\n    \u002F\u002F Sometimes the OperatorList to execute is empty.\\n    if (argsArrayLen === i) {\\n      return i;\\n    }\\n\\n    const chunkOperations =\\n      argsArrayLen - i > EXECUTION_STEPS &&\\n      typeof continueCallback === \\\"function\\\";\\n    const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\\n    let steps = 0;\\n\\n    const commonObjs = this.commonObjs;\\n    const objs = this.objs;\\n    let fnId;\\n\\n    while (true) {\\n      if (stepper !== undefined && i === stepper.nextBreakPoint) {\\n        stepper.breakIt(i, continueCallback);\\n        return i;\\n      }\\n\\n      fnId = fnArray[i];\\n\\n      if (fnId !== OPS.dependency) {\\n        \u002F\u002F eslint-disable-next-line prefer-spread\\n        this[fnId].apply(this, argsArray[i]);\\n      } else {\\n        for (const depObjId of argsArray[i]) {\\n          const objsPool = depObjId.startsWith(\\\"g_\\\") ? commonObjs : objs;\\n\\n          \u002F\u002F If the promise isn't resolved yet, add the continueCallback\\n          \u002F\u002F to the promise and bail out.\\n          if (!objsPool.has(depObjId)) {\\n            objsPool.get(depObjId, continueCallback);\\n            return i;\\n          }\\n        }\\n      }\\n\\n      i++;\\n\\n      \u002F\u002F If the entire operatorList was executed, stop as were done.\\n      if (i === argsArrayLen) {\\n        return i;\\n      }\\n\\n      \u002F\u002F If the execution took longer then a certain amount of time and\\n      \u002F\u002F `continueCallback` is specified, interrupt the execution.\\n      if (chunkOperations && ++steps > EXECUTION_STEPS) {\\n        if (Date.now() > endTime) {\\n          continueCallback();\\n          return i;\\n        }\\n        steps = 0;\\n      }\\n\\n      \u002F\u002F If the operatorList isn't executed completely yet OR the execution\\n      \u002F\u002F time was short enough, do another execution round.\\n    }\\n  }\\n\\n  #restoreInitialState() {\\n    \u002F\u002F Finishing all opened operations such as SMask group painting.\\n    while (this.stateStack.length || this.inSMaskMode) {\\n      this.restore();\\n    }\\n\\n    this.current.activeSMask = null;\\n    this.ctx.restore();\\n\\n    if (this.transparentCanvas) {\\n      this.ctx = this.compositeCtx;\\n      this.ctx.save();\\n      this.ctx.setTransform(1, 0, 0, 1, 0, 0); \u002F\u002F Avoid apply transform twice\\n      this.ctx.drawImage(this.transparentCanvas, 0, 0);\\n      this.ctx.restore();\\n      this.transparentCanvas = null;\\n    }\\n  }\\n\\n  endDrawing() {\\n    this.#restoreInitialState();\\n\\n    this.cachedCanvases.clear();\\n    this.cachedPatterns.clear();\\n\\n    for (const cache of this._cachedBitmapsMap.values()) {\\n      for (const canvas of cache.values()) {\\n        if (\\n          typeof HTMLCanvasElement !== \\\"undefined\\\" &&\\n          canvas instanceof HTMLCanvasElement\\n        ) {\\n          canvas.width = canvas.height = 0;\\n        }\\n      }\\n      cache.clear();\\n    }\\n    this._cachedBitmapsMap.clear();\\n    this.#drawFilter();\\n  }\\n\\n  #drawFilter() {\\n    if (this.pageColors) {\\n      const hcmFilterId = this.filterFactory.addHCMFilter(\\n        this.pageColors.foreground,\\n        this.pageColors.background\\n      );\\n      if (hcmFilterId !== \\\"none\\\") {\\n        const savedFilter = this.ctx.filter;\\n        this.ctx.filter = hcmFilterId;\\n        this.ctx.drawImage(this.ctx.canvas, 0, 0);\\n        this.ctx.filter = savedFilter;\\n      }\\n    }\\n  }\\n\\n  _scaleImage(img, inverseTransform) {\\n    \u002F\u002F Vertical or horizontal scaling shall not be more than 2 to not lose the\\n    \u002F\u002F pixels during drawImage operation, painting on the temporary canvas(es)\\n    \u002F\u002F that are twice smaller in size.\\n\\n    \u002F\u002F displayWidth and displayHeight are used for VideoFrame.\\n    const width = img.width ?? img.displayWidth;\\n    const height = img.height ?? img.displayHeight;\\n    let widthScale = Math.max(\\n      Math.hypot(inverseTransform[0], inverseTransform[1]),\\n      1\\n    );\\n    let heightScale = Math.max(\\n      Math.hypot(inverseTransform[2], inverseTransform[3]),\\n      1\\n    );\\n\\n    let paintWidth = width,\\n      paintHeight = height;\\n    let tmpCanvasId = \\\"prescale1\\\";\\n    let tmpCanvas, tmpCtx;\\n    while (\\n      (widthScale > 2 && paintWidth > 1) ||\\n      (heightScale > 2 && paintHeight > 1)\\n    ) {\\n      let newWidth = paintWidth,\\n        newHeight = paintHeight;\\n      if (widthScale > 2 && paintWidth > 1) {\\n        \u002F\u002F See bug 1820511 (Windows specific bug).\\n        \u002F\u002F TODO: once the above bug is fixed we could revert to:\\n        \u002F\u002F newWidth = Math.ceil(paintWidth \u002F 2);\\n        newWidth =\\n          paintWidth >= 16384\\n            ? Math.floor(paintWidth \u002F 2) - 1 || 1\\n            : Math.ceil(paintWidth \u002F 2);\\n        widthScale \u002F= paintWidth \u002F newWidth;\\n      }\\n      if (heightScale > 2 && paintHeight > 1) {\\n        \u002F\u002F TODO: see the comment above.\\n        newHeight =\\n          paintHeight >= 16384\\n            ? Math.floor(paintHeight \u002F 2) - 1 || 1\\n            : Math.ceil(paintHeight) \u002F 2;\\n        heightScale \u002F= paintHeight \u002F newHeight;\\n      }\\n      tmpCanvas = this.cachedCanvases.getCanvas(\\n        tmpCanvasId,\\n        newWidth,\\n        newHeight\\n      );\\n      tmpCtx = tmpCanvas.context;\\n      tmpCtx.clearRect(0, 0, newWidth, newHeight);\\n      tmpCtx.drawImage(\\n        img,\\n        0,\\n        0,\\n        paintWidth,\\n        paintHeight,\\n        0,\\n        0,\\n        newWidth,\\n        newHeight\\n      );\\n      img = tmpCanvas.canvas;\\n      paintWidth = newWidth;\\n      paintHeight = newHeight;\\n      tmpCanvasId = tmpCanvasId === \\\"prescale1\\\" ? \\\"prescale2\\\" : \\\"prescale1\\\";\\n    }\\n    return {\\n      img,\\n      paintWidth,\\n      paintHeight,\\n    };\\n  }\\n\\n  _createMaskCanvas(img) {\\n    const ctx = this.ctx;\\n    const { width, height } = img;\\n    const fillColor = this.current.fillColor;\\n    const isPatternFill = this.current.patternFill;\\n    const currentTransform = getCurrentTransform(ctx);\\n\\n    let cache, cacheKey, scaled, maskCanvas;\\n    if ((img.bitmap || img.data) && img.count > 1) {\\n      const mainKey = img.bitmap || img.data.buffer;\\n      \u002F\u002F We're reusing the same image several times, so we can cache it.\\n      \u002F\u002F In case we've a pattern fill we just keep the scaled version of\\n      \u002F\u002F the image.\\n      \u002F\u002F Only the scaling part matters, the translation part is just used\\n      \u002F\u002F to compute offsets (but not when filling patterns see #15573).\\n      \u002F\u002F TODO: handle the case of a pattern fill if it's possible.\\n      cacheKey = JSON.stringify(\\n        isPatternFill\\n          ? currentTransform\\n          : [currentTransform.slice(0, 4), fillColor]\\n      );\\n\\n      cache = this._cachedBitmapsMap.get(mainKey);\\n      if (!cache) {\\n        cache = new Map();\\n        this._cachedBitmapsMap.set(mainKey, cache);\\n      }\\n      const cachedImage = cache.get(cacheKey);\\n      if (cachedImage && !isPatternFill) {\\n        const offsetX = Math.round(\\n          Math.min(currentTransform[0], currentTransform[2]) +\\n            currentTransform[4]\\n        );\\n        const offsetY = Math.round(\\n          Math.min(currentTransform[1], currentTransform[3]) +\\n            currentTransform[5]\\n        );\\n        return {\\n          canvas: cachedImage,\\n          offsetX,\\n          offsetY,\\n        };\\n      }\\n      scaled = cachedImage;\\n    }\\n\\n    if (!scaled) {\\n      maskCanvas = this.cachedCanvases.getCanvas(\\\"maskCanvas\\\", width, height);\\n      putBinaryImageMask(maskCanvas.context, img);\\n    }\\n\\n    \u002F\u002F Create the mask canvas at the size it will be drawn at and also set\\n    \u002F\u002F its transform to match the current transform so if there are any\\n    \u002F\u002F patterns applied they will be applied relative to the correct\\n    \u002F\u002F transform.\\n\\n    let maskToCanvas = Util.transform(currentTransform, [\\n      1 \u002F width,\\n      0,\\n      0,\\n      -1 \u002F height,\\n      0,\\n      0,\\n    ]);\\n    maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\\n    const minMax = MIN_MAX_INIT.slice();\\n    Util.axialAlignedBoundingBox([0, 0, width, height], maskToCanvas, minMax);\\n    const [minX, minY, maxX, maxY] = minMax;\\n    const drawnWidth = Math.round(maxX - minX) || 1;\\n    const drawnHeight = Math.round(maxY - minY) || 1;\\n    const fillCanvas = this.cachedCanvases.getCanvas(\\n      \\\"fillCanvas\\\",\\n      drawnWidth,\\n      drawnHeight\\n    );\\n    const fillCtx = fillCanvas.context;\\n\\n    \u002F\u002F The offset will be the top-left cordinate mask.\\n    \u002F\u002F If objToCanvas is [a,b,c,d,e,f] then:\\n    \u002F\u002F   - offsetX = min(a, c) + e\\n    \u002F\u002F   - offsetY = min(b, d) + f\\n    const offsetX = minX;\\n    const offsetY = minY;\\n    fillCtx.translate(-offsetX, -offsetY);\\n    fillCtx.transform(...maskToCanvas);\\n\\n    if (!scaled) {\\n      \u002F\u002F Pre-scale if needed to improve image smoothing.\\n      scaled = this._scaleImage(\\n        maskCanvas.canvas,\\n        getCurrentTransformInverse(fillCtx)\\n      );\\n      scaled = scaled.img;\\n      if (cache && isPatternFill) {\\n        cache.set(cacheKey, scaled);\\n      }\\n    }\\n\\n    fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(\\n      getCurrentTransform(fillCtx),\\n      img.interpolate\\n    );\\n\\n    drawImageAtIntegerCoords(\\n      fillCtx,\\n      scaled,\\n      0,\\n      0,\\n      scaled.width,\\n      scaled.height,\\n      0,\\n      0,\\n      width,\\n      height\\n    );\\n    fillCtx.globalCompositeOperation = \\\"source-in\\\";\\n\\n    const inverse = Util.transform(getCurrentTransformInverse(fillCtx), [\\n      1,\\n      0,\\n      0,\\n      1,\\n      -offsetX,\\n      -offsetY,\\n    ]);\\n    fillCtx.fillStyle = isPatternFill\\n      ? fillColor.getPattern(ctx, this, inverse, PathType.FILL)\\n      : fillColor;\\n\\n    fillCtx.fillRect(0, 0, width, height);\\n\\n    if (cache && !isPatternFill) {\\n      \u002F\u002F The fill canvas is put in the cache associated to the mask image\\n      \u002F\u002F so we must remove from the cached canvas: it mustn't be used again.\\n      this.cachedCanvases.delete(\\\"fillCanvas\\\");\\n      cache.set(cacheKey, fillCanvas.canvas);\\n    }\\n\\n    \u002F\u002F Round the offsets to avoid drawing fractional pixels.\\n    return {\\n      canvas: fillCanvas.canvas,\\n      offsetX: Math.round(offsetX),\\n      offsetY: Math.round(offsetY),\\n    };\\n  }\\n\\n  \u002F\u002F Graphics state\\n  setLineWidth(width) {\\n    if (width !== this.current.lineWidth) {\\n      this._cachedScaleForStroking[0] = -1;\\n    }\\n    this.current.lineWidth = width;\\n    this.ctx.lineWidth = width;\\n  }\\n\\n  setLineCap(style) {\\n    this.ctx.lineCap = LINE_CAP_STYLES[style];\\n  }\\n\\n  setLineJoin(style) {\\n    this.ctx.lineJoin = LINE_JOIN_STYLES[style];\\n  }\\n\\n  setMiterLimit(limit) {\\n    this.ctx.miterLimit = limit;\\n  }\\n\\n  setDash(dashArray, dashPhase) {\\n    const ctx = this.ctx;\\n    if (ctx.setLineDash !== undefined) {\\n      ctx.setLineDash(dashArray);\\n      ctx.lineDashOffset = dashPhase;\\n    }\\n  }\\n\\n  setRenderingIntent(intent) {\\n    \u002F\u002F This operation is ignored since we haven't found a use case for it yet.\\n  }\\n\\n  setFlatness(flatness) {\\n    \u002F\u002F This operation is ignored since we haven't found a use case for it yet.\\n  }\\n\\n  setGState(states) {\\n    for (const [key, value] of states) {\\n      switch (key) {\\n        case \\\"LW\\\":\\n          this.setLineWidth(value);\\n          break;\\n        case \\\"LC\\\":\\n          this.setLineCap(value);\\n          break;\\n        case \\\"LJ\\\":\\n          this.setLineJoin(value);\\n          break;\\n        case \\\"ML\\\":\\n          this.setMiterLimit(value);\\n          break;\\n        case \\\"D\\\":\\n          this.setDash(value[0], value[1]);\\n          break;\\n        case \\\"RI\\\":\\n          this.setRenderingIntent(value);\\n          break;\\n        case \\\"FL\\\":\\n          this.setFlatness(value);\\n          break;\\n        case \\\"Font\\\":\\n          this.setFont(value[0], value[1]);\\n          break;\\n        case \\\"CA\\\":\\n          this.current.strokeAlpha = value;\\n          break;\\n        case \\\"ca\\\":\\n          this.ctx.globalAlpha = this.current.fillAlpha = value;\\n          break;\\n        case \\\"BM\\\":\\n          this.ctx.globalCompositeOperation = value;\\n          break;\\n        case \\\"SMask\\\":\\n          this.current.activeSMask = value ? this.tempSMask : null;\\n          this.tempSMask = null;\\n          this.checkSMaskState();\\n          break;\\n        case \\\"TR\\\":\\n          this.ctx.filter = this.current.transferMaps =\\n            this.filterFactory.addFilter(value);\\n          break;\\n      }\\n    }\\n  }\\n\\n  get inSMaskMode() {\\n    return !!this.suspendedCtx;\\n  }\\n\\n  checkSMaskState() {\\n    const inSMaskMode = this.inSMaskMode;\\n    if (this.current.activeSMask && !inSMaskMode) {\\n      this.beginSMaskMode();\\n    } else if (!this.current.activeSMask && inSMaskMode) {\\n      this.endSMaskMode();\\n    }\\n    \u002F\u002F Else, the state is okay and nothing needs to be done.\\n  }\\n\\n  \u002F**\\n   * Soft mask mode takes the current main drawing canvas and replaces it with\\n   * a temporary canvas. Any drawing operations that happen on the temporary\\n   * canvas need to be composed with the main canvas that was suspended (see\\n   * `compose()`). The temporary canvas also duplicates many of its operations\\n   * on the suspended canvas to keep them in sync, so that when the soft mask\\n   * mode ends any clipping paths or transformations will still be active and in\\n   * the right order on the canvas' graphics state stack.\\n   *\u002F\\n  beginSMaskMode() {\\n    if (this.inSMaskMode) {\\n      throw new Error(\\\"beginSMaskMode called while already in smask mode\\\");\\n    }\\n    const drawnWidth = this.ctx.canvas.width;\\n    const drawnHeight = this.ctx.canvas.height;\\n    const cacheId = \\\"smaskGroupAt\\\" + this.groupLevel;\\n    const scratchCanvas = this.cachedCanvases.getCanvas(\\n      cacheId,\\n      drawnWidth,\\n      drawnHeight\\n    );\\n    this.suspendedCtx = this.ctx;\\n    const ctx = (this.ctx = scratchCanvas.context);\\n    ctx.setTransform(this.suspendedCtx.getTransform());\\n    copyCtxState(this.suspendedCtx, ctx);\\n    mirrorContextOperations(ctx, this.suspendedCtx);\\n\\n    this.setGState([[\\\"BM\\\", \\\"source-over\\\"]]);\\n  }\\n\\n  endSMaskMode() {\\n    if (!this.inSMaskMode) {\\n      throw new Error(\\\"endSMaskMode called while not in smask mode\\\");\\n    }\\n    \u002F\u002F The soft mask is done, now restore the suspended canvas as the main\\n    \u002F\u002F drawing canvas.\\n    this.ctx._removeMirroring();\\n    copyCtxState(this.ctx, this.suspendedCtx);\\n    this.ctx = this.suspendedCtx;\\n\\n    this.suspendedCtx = null;\\n  }\\n\\n  compose(dirtyBox) {\\n    if (!this.current.activeSMask) {\\n      return;\\n    }\\n\\n    if (!dirtyBox) {\\n      dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\\n    } else {\\n      dirtyBox[0] = Math.floor(dirtyBox[0]);\\n      dirtyBox[1] = Math.floor(dirtyBox[1]);\\n      dirtyBox[2] = Math.ceil(dirtyBox[2]);\\n      dirtyBox[3] = Math.ceil(dirtyBox[3]);\\n    }\\n    const smask = this.current.activeSMask;\\n    const suspendedCtx = this.suspendedCtx;\\n\\n    this.composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\\n    \u002F\u002F Whatever was drawn has been moved to the suspended canvas, now clear it\\n    \u002F\u002F out of the current canvas.\\n    this.ctx.save();\\n    this.ctx.setTransform(1, 0, 0, 1, 0, 0);\\n    this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\\n    this.ctx.restore();\\n  }\\n\\n  composeSMask(ctx, smask, layerCtx, layerBox) {\\n    const layerOffsetX = layerBox[0];\\n    const layerOffsetY = layerBox[1];\\n    const layerWidth = layerBox[2] - layerOffsetX;\\n    const layerHeight = layerBox[3] - layerOffsetY;\\n    if (layerWidth === 0 || layerHeight === 0) {\\n      return;\\n    }\\n    this.genericComposeSMask(\\n      smask.context,\\n      layerCtx,\\n      layerWidth,\\n      layerHeight,\\n      smask.subtype,\\n      smask.backdrop,\\n      smask.transferMap,\\n      layerOffsetX,\\n      layerOffsetY,\\n      smask.offsetX,\\n      smask.offsetY\\n    );\\n    ctx.save();\\n    ctx.globalAlpha = 1;\\n    ctx.globalCompositeOperation = \\\"source-over\\\";\\n    ctx.setTransform(1, 0, 0, 1, 0, 0);\\n    ctx.drawImage(layerCtx.canvas, 0, 0);\\n    ctx.restore();\\n  }\\n\\n  genericComposeSMask(\\n    maskCtx,\\n    layerCtx,\\n    width,\\n    height,\\n    subtype,\\n    backdrop,\\n    transferMap,\\n    layerOffsetX,\\n    layerOffsetY,\\n    maskOffsetX,\\n    maskOffsetY\\n  ) {\\n    let maskCanvas = maskCtx.canvas;\\n    let maskX = layerOffsetX - maskOffsetX;\\n    let maskY = layerOffsetY - maskOffsetY;\\n\\n    if (backdrop) {\\n      if (\\n        maskX \u003C 0 ||\\n        maskY \u003C 0 ||\\n        maskX + width > maskCanvas.width ||\\n        maskY + height > maskCanvas.height\\n      ) {\\n        const canvas = this.cachedCanvases.getCanvas(\\n          \\\"maskExtension\\\",\\n          width,\\n          height\\n        );\\n        const ctx = canvas.context;\\n        ctx.drawImage(maskCanvas, -maskX, -maskY);\\n        ctx.globalCompositeOperation = \\\"destination-atop\\\";\\n        ctx.fillStyle = backdrop;\\n        ctx.fillRect(0, 0, width, height);\\n        ctx.globalCompositeOperation = \\\"source-over\\\";\\n\\n        maskCanvas = canvas.canvas;\\n        maskX = maskY = 0;\\n      } else {\\n        maskCtx.save();\\n        maskCtx.globalAlpha = 1;\\n        maskCtx.setTransform(1, 0, 0, 1, 0, 0);\\n        const clip = new Path2D();\\n        clip.rect(maskX, maskY, width, height);\\n        maskCtx.clip(clip);\\n        maskCtx.globalCompositeOperation = \\\"destination-atop\\\";\\n        maskCtx.fillStyle = backdrop;\\n        maskCtx.fillRect(maskX, maskY, width, height);\\n        maskCtx.restore();\\n      }\\n    }\\n\\n    layerCtx.save();\\n    layerCtx.globalAlpha = 1;\\n    layerCtx.setTransform(1, 0, 0, 1, 0, 0);\\n\\n    if (subtype === \\\"Alpha\\\" && transferMap) {\\n      layerCtx.filter = this.filterFactory.addAlphaFilter(transferMap);\\n    } else if (subtype === \\\"Luminosity\\\") {\\n      layerCtx.filter = this.filterFactory.addLuminosityFilter(transferMap);\\n    }\\n\\n    const clip = new Path2D();\\n    clip.rect(layerOffsetX, layerOffsetY, width, height);\\n    layerCtx.clip(clip);\\n    layerCtx.globalCompositeOperation = \\\"destination-in\\\";\\n    layerCtx.drawImage(\\n      maskCanvas,\\n      maskX,\\n      maskY,\\n      width,\\n      height,\\n      layerOffsetX,\\n      layerOffsetY,\\n      width,\\n      height\\n    );\\n    layerCtx.restore();\\n  }\\n\\n  save() {\\n    if (this.inSMaskMode) {\\n      \u002F\u002F SMask mode may be turned on\u002Foff causing us to lose graphics state.\\n      \u002F\u002F Copy the temporary canvas state to the main(suspended) canvas to keep\\n      \u002F\u002F it in sync.\\n      copyCtxState(this.ctx, this.suspendedCtx);\\n    }\\n    this.ctx.save();\\n    const old = this.current;\\n    this.stateStack.push(old);\\n    this.current = old.clone();\\n  }\\n\\n  restore() {\\n    if (this.stateStack.length === 0) {\\n      if (this.inSMaskMode) {\\n        this.endSMaskMode();\\n      }\\n      return;\\n    }\\n\\n    this.current = this.stateStack.pop();\\n    this.ctx.restore();\\n    if (this.inSMaskMode) {\\n      \u002F\u002F Graphics state is stored on the main(suspended) canvas. Restore its\\n      \u002F\u002F state then copy it over to the temporary canvas.\\n      copyCtxState(this.suspendedCtx, this.ctx);\\n    }\\n    this.checkSMaskState();\\n\\n    \u002F\u002F Ensure that the clipping path is reset (fixes issue6413.pdf).\\n    this.pendingClip = null;\\n\\n    this._cachedScaleForStroking[0] = -1;\\n    this._cachedGetSinglePixelWidth = null;\\n  }\\n\\n  transform(a, b, c, d, e, f) {\\n    this.ctx.transform(a, b, c, d, e, f);\\n\\n    this._cachedScaleForStroking[0] = -1;\\n    this._cachedGetSinglePixelWidth = null;\\n  }\\n\\n  \u002F\u002F Path\\n  constructPath(op, data, minMax) {\\n    let [path] = data;\\n    if (!minMax) {\\n      \u002F\u002F The path is empty, so no need to update the current minMax.\\n      path ||= data[0] = new Path2D();\\n      this[op](path);\\n      return;\\n    }\\n    if (!(path instanceof Path2D)) {\\n      \u002F\u002F Using a SVG string is slightly slower than using the following loop.\\n      const path2d = (data[0] = new Path2D());\\n      for (let i = 0, ii = path.length; i \u003C ii; ) {\\n        switch (path[i++]) {\\n          case DrawOPS.moveTo:\\n            path2d.moveTo(path[i++], path[i++]);\\n            break;\\n          case DrawOPS.lineTo:\\n            path2d.lineTo(path[i++], path[i++]);\\n            break;\\n          case DrawOPS.curveTo:\\n            path2d.bezierCurveTo(\\n              path[i++],\\n              path[i++],\\n              path[i++],\\n              path[i++],\\n              path[i++],\\n              path[i++]\\n            );\\n            break;\\n          case DrawOPS.closePath:\\n            path2d.closePath();\\n            break;\\n          default:\\n            warn(`Unrecognized drawing path operator: ${path[i - 1]}`);\\n            break;\\n        }\\n      }\\n      path = path2d;\\n    }\\n    Util.axialAlignedBoundingBox(\\n      minMax,\\n      getCurrentTransform(this.ctx),\\n      this.current.minMax\\n    );\\n    this[op](path);\\n  }\\n\\n  closePath() {\\n    this.ctx.closePath();\\n  }\\n\\n  stroke(path, consumePath = true) {\\n    const ctx = this.ctx;\\n    const strokeColor = this.current.strokeColor;\\n    \u002F\u002F For stroke we want to temporarily change the global alpha to the\\n    \u002F\u002F stroking alpha.\\n    ctx.globalAlpha = this.current.strokeAlpha;\\n    if (this.contentVisible) {\\n      if (typeof strokeColor === \\\"object\\\" && strokeColor?.getPattern) {\\n        const baseTransform = strokeColor.isModifyingCurrentTransform()\\n          ? ctx.getTransform()\\n          : null;\\n        ctx.save();\\n        ctx.strokeStyle = strokeColor.getPattern(\\n          ctx,\\n          this,\\n          getCurrentTransformInverse(ctx),\\n          PathType.STROKE\\n        );\\n        if (baseTransform) {\\n          const newPath = new Path2D();\\n          newPath.addPath(\\n            path,\\n            ctx.getTransform().invertSelf().multiplySelf(baseTransform)\\n          );\\n          path = newPath;\\n        }\\n        this.rescaleAndStroke(path, \u002F* saveRestore *\u002F false);\\n        ctx.restore();\\n      } else {\\n        this.rescaleAndStroke(path, \u002F* saveRestore *\u002F true);\\n      }\\n    }\\n    if (consumePath) {\\n      this.consumePath(\\n        path,\\n        this.current.getClippedPathBoundingBox(\\n          PathType.STROKE,\\n          getCurrentTransform(this.ctx)\\n        )\\n      );\\n    }\\n    \u002F\u002F Restore the global alpha to the fill alpha\\n    ctx.globalAlpha = this.current.fillAlpha;\\n  }\\n\\n  closeStroke(path) {\\n    this.stroke(path);\\n  }\\n\\n  fill(path, consumePath = true) {\\n    const ctx = this.ctx;\\n    const fillColor = this.current.fillColor;\\n    const isPatternFill = this.current.patternFill;\\n    let needRestore = false;\\n\\n    if (isPatternFill) {\\n      const baseTransform = fillColor.isModifyingCurrentTransform()\\n        ? ctx.getTransform()\\n        : null;\\n      ctx.save();\\n      ctx.fillStyle = fillColor.getPattern(\\n        ctx,\\n        this,\\n        getCurrentTransformInverse(ctx),\\n        PathType.FILL\\n      );\\n      if (baseTransform) {\\n        const newPath = new Path2D();\\n        newPath.addPath(\\n          path,\\n          ctx.getTransform().invertSelf().multiplySelf(baseTransform)\\n        );\\n        path = newPath;\\n      }\\n      needRestore = true;\\n    }\\n\\n    const intersect = this.current.getClippedPathBoundingBox();\\n    if (this.contentVisible && intersect !== null) {\\n      if (this.pendingEOFill) {\\n        ctx.fill(path, \\\"evenodd\\\");\\n        this.pendingEOFill = false;\\n      } else {\\n        ctx.fill(path);\\n      }\\n    }\\n\\n    if (needRestore) {\\n      ctx.restore();\\n    }\\n    if (consumePath) {\\n      this.consumePath(path, intersect);\\n    }\\n  }\\n\\n  eoFill(path) {\\n    this.pendingEOFill = true;\\n    this.fill(path);\\n  }\\n\\n  fillStroke(path) {\\n    this.fill(path, false);\\n    this.stroke(path, false);\\n\\n    this.consumePath(path);\\n  }\\n\\n  eoFillStroke(path) {\\n    this.pendingEOFill = true;\\n    this.fillStroke(path);\\n  }\\n\\n  closeFillStroke(path) {\\n    this.fillStroke(path);\\n  }\\n\\n  closeEOFillStroke(path) {\\n    this.pendingEOFill = true;\\n    this.fillStroke(path);\\n  }\\n\\n  endPath(path) {\\n    this.consumePath(path);\\n  }\\n\\n  rawFillPath(path) {\\n    this.ctx.fill(path);\\n  }\\n\\n  \u002F\u002F Clipping\\n  clip() {\\n    this.pendingClip = NORMAL_CLIP;\\n  }\\n\\n  eoClip() {\\n    this.pendingClip = EO_CLIP;\\n  }\\n\\n  \u002F\u002F Text\\n  beginText() {\\n    this.current.textMatrix = null;\\n    this.current.textMatrixScale = 1;\\n    this.current.x = this.current.lineX = 0;\\n    this.current.y = this.current.lineY = 0;\\n  }\\n\\n  endText() {\\n    const paths = this.pendingTextPaths;\\n    const ctx = this.ctx;\\n    if (paths === undefined) {\\n      return;\\n    }\\n\\n    const newPath = new Path2D();\\n    const invTransf = ctx.getTransform().invertSelf();\\n    for (const { transform, x, y, fontSize, path } of paths) {\\n      newPath.addPath(\\n        path,\\n        new DOMMatrix(transform)\\n          .preMultiplySelf(invTransf)\\n          .translate(x, y)\\n          .scale(fontSize, -fontSize)\\n      );\\n    }\\n\\n    ctx.clip(newPath);\\n    delete this.pendingTextPaths;\\n  }\\n\\n  setCharSpacing(spacing) {\\n    this.current.charSpacing = spacing;\\n  }\\n\\n  setWordSpacing(spacing) {\\n    this.current.wordSpacing = spacing;\\n  }\\n\\n  setHScale(scale) {\\n    this.current.textHScale = scale \u002F 100;\\n  }\\n\\n  setLeading(leading) {\\n    this.current.leading = -leading;\\n  }\\n\\n  setFont(fontRefName, size) {\\n    const fontObj = this.commonObjs.get(fontRefName);\\n    const current = this.current;\\n\\n    if (!fontObj) {\\n      throw new Error(`Can't find font for ${fontRefName}`);\\n    }\\n    current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\\n\\n    \u002F\u002F A valid matrix needs all main diagonal elements to be non-zero\\n    \u002F\u002F This also ensures we bypass FF bugzilla bug #719844.\\n    if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\\n      warn(\\\"Invalid font matrix for font \\\" + fontRefName);\\n    }\\n\\n    \u002F\u002F The spec for Tf (setFont) says that 'size' specifies the font 'scale',\\n    \u002F\u002F and in some docs this can be negative (inverted x-y axes).\\n    if (size \u003C 0) {\\n      size = -size;\\n      current.fontDirection = -1;\\n    } else {\\n      current.fontDirection = 1;\\n    }\\n\\n    this.current.font = fontObj;\\n    this.current.fontSize = size;\\n\\n    if (fontObj.isType3Font) {\\n      return; \u002F\u002F we don't need ctx.font for Type3 fonts\\n    }\\n\\n    const name = fontObj.loadedName || \\\"sans-serif\\\";\\n    const typeface =\\n      fontObj.systemFontInfo?.css || `\\\"${name}\\\", ${fontObj.fallbackName}`;\\n\\n    let bold = \\\"normal\\\";\\n    if (fontObj.black) {\\n      bold = \\\"900\\\";\\n    } else if (fontObj.bold) {\\n      bold = \\\"bold\\\";\\n    }\\n    const italic = fontObj.italic ? \\\"italic\\\" : \\\"normal\\\";\\n\\n    \u002F\u002F Some font backends cannot handle fonts below certain size.\\n    \u002F\u002F Keeping the font at minimal size and using the fontSizeScale to change\\n    \u002F\u002F the current transformation matrix before the fillText\u002FstrokeText.\\n    \u002F\u002F See https:\u002F\u002Fbugzilla.mozilla.org\u002Fshow_bug.cgi?id=726227\\n    let browserFontSize = size;\\n    if (size \u003C MIN_FONT_SIZE) {\\n      browserFontSize = MIN_FONT_SIZE;\\n    } else if (size > MAX_FONT_SIZE) {\\n      browserFontSize = MAX_FONT_SIZE;\\n    }\\n    this.current.fontSizeScale = size \u002F browserFontSize;\\n\\n    this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\\n  }\\n\\n  setTextRenderingMode(mode) {\\n    this.current.textRenderingMode = mode;\\n  }\\n\\n  setTextRise(rise) {\\n    this.current.textRise = rise;\\n  }\\n\\n  moveText(x, y) {\\n    this.current.x = this.current.lineX += x;\\n    this.current.y = this.current.lineY += y;\\n  }\\n\\n  setLeadingMoveText(x, y) {\\n    this.setLeading(-y);\\n    this.moveText(x, y);\\n  }\\n\\n  setTextMatrix(matrix) {\\n    const { current } = this;\\n    current.textMatrix = matrix;\\n    current.textMatrixScale = Math.hypot(matrix[0], matrix[1]);\\n\\n    current.x = current.lineX = 0;\\n    current.y = current.lineY = 0;\\n  }\\n\\n  nextLine() {\\n    this.moveText(0, this.current.leading);\\n  }\\n\\n  #getScaledPath(path, currentTransform, transform) {\\n    const newPath = new Path2D();\\n    newPath.addPath(\\n      path,\\n      new DOMMatrix(transform).invertSelf().multiplySelf(currentTransform)\\n    );\\n    return newPath;\\n  }\\n\\n  paintChar(character, x, y, patternFillTransform, patternStrokeTransform) {\\n    const ctx = this.ctx;\\n    const current = this.current;\\n    const font = current.font;\\n    const textRenderingMode = current.textRenderingMode;\\n    const fontSize = current.fontSize \u002F current.fontSizeScale;\\n    const fillStrokeMode =\\n      textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\\n    const isAddToPathSet = !!(\\n      textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\\n    );\\n    const patternFill = current.patternFill && !font.missingFile;\\n    const patternStroke = current.patternStroke && !font.missingFile;\\n\\n    let path;\\n    if (\\n      font.disableFontFace ||\\n      isAddToPathSet ||\\n      patternFill ||\\n      patternStroke\\n    ) {\\n      path = font.getPathGenerator(this.commonObjs, character);\\n    }\\n\\n    if (font.disableFontFace || patternFill || patternStroke) {\\n      ctx.save();\\n      ctx.translate(x, y);\\n      ctx.scale(fontSize, -fontSize);\\n      let currentTransform;\\n      if (\\n        fillStrokeMode === TextRenderingMode.FILL ||\\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\\n      ) {\\n        if (patternFillTransform) {\\n          currentTransform = ctx.getTransform();\\n          ctx.setTransform(...patternFillTransform);\\n          ctx.fill(\\n            this.#getScaledPath(path, currentTransform, patternFillTransform)\\n          );\\n        } else {\\n          ctx.fill(path);\\n        }\\n      }\\n      if (\\n        fillStrokeMode === TextRenderingMode.STROKE ||\\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\\n      ) {\\n        if (patternStrokeTransform) {\\n          currentTransform ||= ctx.getTransform();\\n          ctx.setTransform(...patternStrokeTransform);\\n          const { a, b, c, d } = currentTransform;\\n          const invPatternTransform = Util.inverseTransform(\\n            patternStrokeTransform\\n          );\\n          const transf = Util.transform(\\n            [a, b, c, d, 0, 0],\\n            invPatternTransform\\n          );\\n          Util.singularValueDecompose2dScale(transf, XY);\\n\\n          \u002F\u002F Cancel the pattern scaling of the line width.\\n          \u002F\u002F If sx and sy are different, unfortunately we can't do anything and\\n          \u002F\u002F we'll have a rendering bug.\\n          ctx.lineWidth *= Math.max(XY[0], XY[1]) \u002F fontSize;\\n          ctx.stroke(\\n            this.#getScaledPath(path, currentTransform, patternStrokeTransform)\\n          );\\n        } else {\\n          ctx.lineWidth \u002F= fontSize;\\n          ctx.stroke(path);\\n        }\\n      }\\n      ctx.restore();\\n    } else {\\n      if (\\n        fillStrokeMode === TextRenderingMode.FILL ||\\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\\n      ) {\\n        ctx.fillText(character, x, y);\\n      }\\n      if (\\n        fillStrokeMode === TextRenderingMode.STROKE ||\\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\\n      ) {\\n        ctx.strokeText(character, x, y);\\n      }\\n    }\\n\\n    if (isAddToPathSet) {\\n      const paths = (this.pendingTextPaths ||= []);\\n      paths.push({\\n        transform: getCurrentTransform(ctx),\\n        x,\\n        y,\\n        fontSize,\\n        path,\\n      });\\n    }\\n  }\\n\\n  get isFontSubpixelAAEnabled() {\\n    \u002F\u002F Checks if anti-aliasing is enabled when scaled text is painted.\\n    \u002F\u002F On Windows GDI scaled fonts looks bad.\\n    const { context: ctx } = this.cachedCanvases.getCanvas(\\n      \\\"isFontSubpixelAAEnabled\\\",\\n      10,\\n      10\\n    );\\n    ctx.scale(1.5, 1);\\n    ctx.fillText(\\\"I\\\", 0, 10);\\n    const data = ctx.getImageData(0, 0, 10, 10).data;\\n    let enabled = false;\\n    for (let i = 3; i \u003C data.length; i += 4) {\\n      if (data[i] > 0 && data[i] \u003C 255) {\\n        enabled = true;\\n        break;\\n      }\\n    }\\n    return shadow(this, \\\"isFontSubpixelAAEnabled\\\", enabled);\\n  }\\n\\n  showText(glyphs) {\\n    const current = this.current;\\n    const font = current.font;\\n    if (font.isType3Font) {\\n      return this.showType3Text(glyphs);\\n    }\\n\\n    const fontSize = current.fontSize;\\n    if (fontSize === 0) {\\n      return undefined;\\n    }\\n\\n    const ctx = this.ctx;\\n    const fontSizeScale = current.fontSizeScale;\\n    const charSpacing = current.charSpacing;\\n    const wordSpacing = current.wordSpacing;\\n    const fontDirection = current.fontDirection;\\n    const textHScale = current.textHScale * fontDirection;\\n    const glyphsLength = glyphs.length;\\n    const vertical = font.vertical;\\n    const spacingDir = vertical ? 1 : -1;\\n    const defaultVMetrics = font.defaultVMetrics;\\n    const widthAdvanceScale = fontSize * current.fontMatrix[0];\\n\\n    const simpleFillText =\\n      current.textRenderingMode === TextRenderingMode.FILL &&\\n      !font.disableFontFace &&\\n      !current.patternFill;\\n\\n    ctx.save();\\n    if (current.textMatrix) {\\n      ctx.transform(...current.textMatrix);\\n    }\\n    ctx.translate(current.x, current.y + current.textRise);\\n\\n    if (fontDirection > 0) {\\n      ctx.scale(textHScale, -1);\\n    } else {\\n      ctx.scale(textHScale, 1);\\n    }\\n\\n    let patternFillTransform, patternStrokeTransform;\\n    if (current.patternFill) {\\n      ctx.save();\\n      const pattern = current.fillColor.getPattern(\\n        ctx,\\n        this,\\n        getCurrentTransformInverse(ctx),\\n        PathType.FILL\\n      );\\n      patternFillTransform = getCurrentTransform(ctx);\\n      ctx.restore();\\n      ctx.fillStyle = pattern;\\n    }\\n\\n    if (current.patternStroke) {\\n      ctx.save();\\n      const pattern = current.strokeColor.getPattern(\\n        ctx,\\n        this,\\n        getCurrentTransformInverse(ctx),\\n        PathType.STROKE\\n      );\\n      patternStrokeTransform = getCurrentTransform(ctx);\\n      ctx.restore();\\n      ctx.strokeStyle = pattern;\\n    }\\n\\n    let lineWidth = current.lineWidth;\\n    const scale = current.textMatrixScale;\\n    if (scale === 0 || lineWidth === 0) {\\n      const fillStrokeMode =\\n        current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\\n      if (\\n        fillStrokeMode === TextRenderingMode.STROKE ||\\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\\n      ) {\\n        lineWidth = this.getSinglePixelWidth();\\n      }\\n    } else {\\n      lineWidth \u002F= scale;\\n    }\\n\\n    if (fontSizeScale !== 1.0) {\\n      ctx.scale(fontSizeScale, fontSizeScale);\\n      lineWidth \u002F= fontSizeScale;\\n    }\\n\\n    ctx.lineWidth = lineWidth;\\n\\n    if (font.isInvalidPDFjsFont) {\\n      const chars = [];\\n      let width = 0;\\n      for (const glyph of glyphs) {\\n        chars.push(glyph.unicode);\\n        width += glyph.width;\\n      }\\n      ctx.fillText(chars.join(\\\"\\\"), 0, 0);\\n      current.x += width * widthAdvanceScale * textHScale;\\n      ctx.restore();\\n      this.compose();\\n\\n      return undefined;\\n    }\\n\\n    let x = 0,\\n      i;\\n    for (i = 0; i \u003C glyphsLength; ++i) {\\n      const glyph = glyphs[i];\\n      if (typeof glyph === \\\"number\\\") {\\n        x += (spacingDir * glyph * fontSize) \u002F 1000;\\n        continue;\\n      }\\n\\n      let restoreNeeded = false;\\n      const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\\n      const character = glyph.fontChar;\\n      const accent = glyph.accent;\\n      let scaledX, scaledY;\\n      let width = glyph.width;\\n      if (vertical) {\\n        const vmetric = glyph.vmetric || defaultVMetrics;\\n        const vx =\\n          -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\\n        const vy = vmetric[2] * widthAdvanceScale;\\n\\n        width = vmetric ? -vmetric[0] : width;\\n        scaledX = vx \u002F fontSizeScale;\\n        scaledY = (x + vy) \u002F fontSizeScale;\\n      } else {\\n        scaledX = x \u002F fontSizeScale;\\n        scaledY = 0;\\n      }\\n\\n      if (font.remeasure && width > 0) {\\n        \u002F\u002F Some standard fonts may not have the exact width: rescale per\\n        \u002F\u002F character if measured width is greater than expected glyph width\\n        \u002F\u002F and subpixel-aa is enabled, otherwise just center the glyph.\\n        const measuredWidth =\\n          ((ctx.measureText(character).width * 1000) \u002F fontSize) *\\n          fontSizeScale;\\n        if (width \u003C measuredWidth && this.isFontSubpixelAAEnabled) {\\n          const characterScaleX = width \u002F measuredWidth;\\n          restoreNeeded = true;\\n          ctx.save();\\n          ctx.scale(characterScaleX, 1);\\n          scaledX \u002F= characterScaleX;\\n        } else if (width !== measuredWidth) {\\n          scaledX +=\\n            (((width - measuredWidth) \u002F 2000) * fontSize) \u002F fontSizeScale;\\n        }\\n      }\\n\\n      \u002F\u002F Only attempt to draw the glyph if it is actually in the embedded font\\n      \u002F\u002F file or if there isn't a font file so the fallback font is shown.\\n      if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\\n        if (simpleFillText && !accent) {\\n          \u002F\u002F common case\\n          ctx.fillText(character, scaledX, scaledY);\\n        } else {\\n          this.paintChar(\\n            character,\\n            scaledX,\\n            scaledY,\\n            patternFillTransform,\\n            patternStrokeTransform\\n          );\\n          if (accent) {\\n            const scaledAccentX =\\n              scaledX + (fontSize * accent.offset.x) \u002F fontSizeScale;\\n            const scaledAccentY =\\n              scaledY - (fontSize * accent.offset.y) \u002F fontSizeScale;\\n            this.paintChar(\\n              accent.fontChar,\\n              scaledAccentX,\\n              scaledAccentY,\\n              patternFillTransform,\\n              patternStrokeTransform\\n            );\\n          }\\n        }\\n      }\\n\\n      const charWidth = vertical\\n        ? width * widthAdvanceScale - spacing * fontDirection\\n        : width * widthAdvanceScale + spacing * fontDirection;\\n      x += charWidth;\\n\\n      if (restoreNeeded) {\\n        ctx.restore();\\n      }\\n    }\\n    if (vertical) {\\n      current.y -= x;\\n    } else {\\n      current.x += x * textHScale;\\n    }\\n    ctx.restore();\\n    this.compose();\\n\\n    return undefined;\\n  }\\n\\n  showType3Text(glyphs) {\\n    \u002F\u002F Type3 fonts - each glyph is a \\\"mini-PDF\\\"\\n    const ctx = this.ctx;\\n    const current = this.current;\\n    const font = current.font;\\n    const fontSize = current.fontSize;\\n    const fontDirection = current.fontDirection;\\n    const spacingDir = font.vertical ? 1 : -1;\\n    const charSpacing = current.charSpacing;\\n    const wordSpacing = current.wordSpacing;\\n    const textHScale = current.textHScale * fontDirection;\\n    const fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\\n    const glyphsLength = glyphs.length;\\n    const isTextInvisible =\\n      current.textRenderingMode === TextRenderingMode.INVISIBLE;\\n    let i, glyph, width, spacingLength;\\n\\n    if (isTextInvisible || fontSize === 0) {\\n      return;\\n    }\\n    this._cachedScaleForStroking[0] = -1;\\n    this._cachedGetSinglePixelWidth = null;\\n\\n    ctx.save();\\n    if (current.textMatrix) {\\n      ctx.transform(...current.textMatrix);\\n    }\\n    ctx.translate(current.x, current.y + current.textRise);\\n\\n    ctx.scale(textHScale, fontDirection);\\n\\n    for (i = 0; i \u003C glyphsLength; ++i) {\\n      glyph = glyphs[i];\\n      if (typeof glyph === \\\"number\\\") {\\n        spacingLength = (spacingDir * glyph * fontSize) \u002F 1000;\\n        this.ctx.translate(spacingLength, 0);\\n        current.x += spacingLength * textHScale;\\n        continue;\\n      }\\n\\n      const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\\n      const operatorList = font.charProcOperatorList[glyph.operatorListId];\\n      if (!operatorList) {\\n        warn(`Type3 character \\\"${glyph.operatorListId}\\\" is not available.`);\\n      } else if (this.contentVisible) {\\n        this.save();\\n        ctx.scale(fontSize, fontSize);\\n        ctx.transform(...fontMatrix);\\n        this.executeOperatorList(operatorList);\\n        this.restore();\\n      }\\n\\n      const p = [glyph.width, 0];\\n      Util.applyTransform(p, fontMatrix);\\n      width = p[0] * fontSize + spacing;\\n\\n      ctx.translate(width, 0);\\n      current.x += width * textHScale;\\n    }\\n    ctx.restore();\\n  }\\n\\n  \u002F\u002F Type3 fonts\\n  setCharWidth(xWidth, yWidth) {\\n    \u002F\u002F We can safely ignore this since the width should be the same\\n    \u002F\u002F as the width in the Widths array.\\n  }\\n\\n  setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\\n    const clip = new Path2D();\\n    clip.rect(llx, lly, urx - llx, ury - lly);\\n    this.ctx.clip(clip);\\n    this.endPath();\\n  }\\n\\n  \u002F\u002F Color\\n  getColorN_Pattern(IR) {\\n    let pattern;\\n    if (IR[0] === \\\"TilingPattern\\\") {\\n      const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\\n      const canvasGraphicsFactory = {\\n        createCanvasGraphics: ctx =>\\n          new CanvasGraphics(\\n            ctx,\\n            this.commonObjs,\\n            this.objs,\\n            this.canvasFactory,\\n            this.filterFactory,\\n            {\\n              optionalContentConfig: this.optionalContentConfig,\\n              markedContentStack: this.markedContentStack,\\n            }\\n          ),\\n      };\\n      pattern = new TilingPattern(\\n        IR,\\n        this.ctx,\\n        canvasGraphicsFactory,\\n        baseTransform\\n      );\\n    } else {\\n      pattern = this._getPattern(IR[1], IR[2]);\\n    }\\n    return pattern;\\n  }\\n\\n  setStrokeColorN() {\\n    this.current.strokeColor = this.getColorN_Pattern(arguments);\\n    this.current.patternStroke = true;\\n  }\\n\\n  setFillColorN() {\\n    this.current.fillColor = this.getColorN_Pattern(arguments);\\n    this.current.patternFill = true;\\n  }\\n\\n  setStrokeRGBColor(color) {\\n    this.ctx.strokeStyle = this.current.strokeColor = color;\\n    this.current.patternStroke = false;\\n  }\\n\\n  setStrokeTransparent() {\\n    this.ctx.strokeStyle = this.current.strokeColor = \\\"transparent\\\";\\n    this.current.patternStroke = false;\\n  }\\n\\n  setFillRGBColor(color) {\\n    this.ctx.fillStyle = this.current.fillColor = color;\\n    this.current.patternFill = false;\\n  }\\n\\n  setFillTransparent() {\\n    this.ctx.fillStyle = this.current.fillColor = \\\"transparent\\\";\\n    this.current.patternFill = false;\\n  }\\n\\n  _getPattern(objId, matrix = null) {\\n    let pattern;\\n    if (this.cachedPatterns.has(objId)) {\\n      pattern = this.cachedPatterns.get(objId);\\n    } else {\\n      pattern = getShadingPattern(this.getObject(objId));\\n      this.cachedPatterns.set(objId, pattern);\\n    }\\n    if (matrix) {\\n      pattern.matrix = matrix;\\n    }\\n    return pattern;\\n  }\\n\\n  shadingFill(objId) {\\n    if (!this.contentVisible) {\\n      return;\\n    }\\n    const ctx = this.ctx;\\n\\n    this.save();\\n    const pattern = this._getPattern(objId);\\n    ctx.fillStyle = pattern.getPattern(\\n      ctx,\\n      this,\\n      getCurrentTransformInverse(ctx),\\n      PathType.SHADING\\n    );\\n\\n    const inv = getCurrentTransformInverse(ctx);\\n    if (inv) {\\n      const { width, height } = ctx.canvas;\\n      const minMax = MIN_MAX_INIT.slice();\\n      Util.axialAlignedBoundingBox([0, 0, width, height], inv, minMax);\\n      const [x0, y0, x1, y1] = minMax;\\n\\n      this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\\n    } else {\\n      \u002F\u002F HACK to draw the gradient onto an infinite rectangle.\\n      \u002F\u002F PDF gradients are drawn across the entire image while\\n      \u002F\u002F Canvas only allows gradients to be drawn in a rectangle\\n      \u002F\u002F The following bug should allow us to remove this.\\n      \u002F\u002F https:\u002F\u002Fbugzilla.mozilla.org\u002Fshow_bug.cgi?id=664884\\n\\n      this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\\n    }\\n\\n    this.compose(this.current.getClippedPathBoundingBox());\\n    this.restore();\\n  }\\n\\n  \u002F\u002F Images\\n  beginInlineImage() {\\n    unreachable(\\\"Should not call beginInlineImage\\\");\\n  }\\n\\n  beginImageData() {\\n    unreachable(\\\"Should not call beginImageData\\\");\\n  }\\n\\n  paintFormXObjectBegin(matrix, bbox) {\\n    if (!this.contentVisible) {\\n      return;\\n    }\\n    this.save();\\n    this.baseTransformStack.push(this.baseTransform);\\n\\n    if (matrix) {\\n      this.transform(...matrix);\\n    }\\n    this.baseTransform = getCurrentTransform(this.ctx);\\n\\n    if (bbox) {\\n      Util.axialAlignedBoundingBox(\\n        bbox,\\n        this.baseTransform,\\n        this.current.minMax\\n      );\\n      const [x0, y0, x1, y1] = bbox;\\n      const clip = new Path2D();\\n      clip.rect(x0, y0, x1 - x0, y1 - y0);\\n      this.ctx.clip(clip);\\n      this.endPath();\\n    }\\n  }\\n\\n  paintFormXObjectEnd() {\\n    if (!this.contentVisible) {\\n      return;\\n    }\\n    this.restore();\\n    this.baseTransform = this.baseTransformStack.pop();\\n  }\\n\\n  beginGroup(group) {\\n    if (!this.contentVisible) {\\n      return;\\n    }\\n\\n    this.save();\\n    \u002F\u002F If there's an active soft mask we don't want it enabled for the group, so\\n    \u002F\u002F clear it out. The mask and suspended canvas will be restored in endGroup.\\n    if (this.inSMaskMode) {\\n      this.endSMaskMode();\\n      this.current.activeSMask = null;\\n    }\\n\\n    const currentCtx = this.ctx;\\n    \u002F\u002F TODO non-isolated groups - according to Rik at adobe non-isolated\\n    \u002F\u002F group results aren't usually that different and they even have tools\\n    \u002F\u002F that ignore this setting. Notes from Rik on implementing:\\n    \u002F\u002F - When you encounter an transparency group, create a new canvas with\\n    \u002F\u002F the dimensions of the bbox\\n    \u002F\u002F - copy the content from the previous canvas to the new canvas\\n    \u002F\u002F - draw as usual\\n    \u002F\u002F - remove the backdrop alpha:\\n    \u002F\u002F alphaNew = 1 - (1 - alpha)\u002F(1 - alphaBackdrop) with 'alpha' the alpha\\n    \u002F\u002F value of your transparency group and 'alphaBackdrop' the alpha of the\\n    \u002F\u002F backdrop\\n    \u002F\u002F - remove background color:\\n    \u002F\u002F colorNew = color - alphaNew *colorBackdrop \u002F(1 - alphaNew)\\n    if (!group.isolated) {\\n      info(\\\"TODO: Support non-isolated groups.\\\");\\n    }\\n\\n    \u002F\u002F TODO knockout - supposedly possible with the clever use of compositing\\n    \u002F\u002F modes.\\n    if (group.knockout) {\\n      warn(\\\"Knockout groups not supported.\\\");\\n    }\\n\\n    const currentTransform = getCurrentTransform(currentCtx);\\n    if (group.matrix) {\\n      currentCtx.transform(...group.matrix);\\n    }\\n    if (!group.bbox) {\\n      throw new Error(\\\"Bounding box is required.\\\");\\n    }\\n\\n    \u002F\u002F Based on the current transform figure out how big the bounding box\\n    \u002F\u002F will actually be.\\n    let bounds = MIN_MAX_INIT.slice();\\n    Util.axialAlignedBoundingBox(\\n      group.bbox,\\n      getCurrentTransform(currentCtx),\\n      bounds\\n    );\\n\\n    \u002F\u002F Clip the bounding box to the current canvas.\\n    const canvasBounds = [\\n      0,\\n      0,\\n      currentCtx.canvas.width,\\n      currentCtx.canvas.height,\\n    ];\\n    bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\\n    \u002F\u002F Use ceil in case we're between sizes so we don't create canvas that is\\n    \u002F\u002F too small and make the canvas at least 1x1 pixels.\\n    const offsetX = Math.floor(bounds[0]);\\n    const offsetY = Math.floor(bounds[1]);\\n    const drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\\n    const drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\\n\\n    this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\\n\\n    let cacheId = \\\"groupAt\\\" + this.groupLevel;\\n    if (group.smask) {\\n      \u002F\u002F Using two cache entries is case if masks are used one after another.\\n      cacheId += \\\"_smask_\\\" + (this.smaskCounter++ % 2);\\n    }\\n    const scratchCanvas = this.cachedCanvases.getCanvas(\\n      cacheId,\\n      drawnWidth,\\n      drawnHeight\\n    );\\n    const groupCtx = scratchCanvas.context;\\n\\n    \u002F\u002F Since we created a new canvas that is just the size of the bounding box\\n    \u002F\u002F we have to translate the group ctx.\\n    groupCtx.translate(-offsetX, -offsetY);\\n    groupCtx.transform(...currentTransform);\\n\\n    \u002F\u002F Apply the bbox to the group context.\\n    let clip = new Path2D();\\n    const [x0, y0, x1, y1] = group.bbox;\\n    clip.rect(x0, y0, x1 - x0, y1 - y0);\\n    if (group.matrix) {\\n      const path = new Path2D();\\n      path.addPath(clip, new DOMMatrix(group.matrix));\\n      clip = path;\\n    }\\n    groupCtx.clip(clip);\\n\\n    if (group.smask) {\\n      \u002F\u002F Saving state and cached mask to be used in setGState.\\n      this.smaskStack.push({\\n        canvas: scratchCanvas.canvas,\\n        context: groupCtx,\\n        offsetX,\\n        offsetY,\\n        subtype: group.smask.subtype,\\n        backdrop: group.smask.backdrop,\\n        transferMap: group.smask.transferMap || null,\\n        startTransformInverse: null, \u002F\u002F used during suspend operation\\n      });\\n    } else {\\n      \u002F\u002F Setup the current ctx so when the group is popped we draw it at the\\n      \u002F\u002F right location.\\n      currentCtx.setTransform(1, 0, 0, 1, 0, 0);\\n      currentCtx.translate(offsetX, offsetY);\\n      currentCtx.save();\\n    }\\n    \u002F\u002F The transparency group inherits all off the current graphics state\\n    \u002F\u002F except the blend mode, soft mask, and alpha constants.\\n    copyCtxState(currentCtx, groupCtx);\\n    this.ctx = groupCtx;\\n    this.setGState([\\n      [\\\"BM\\\", \\\"source-over\\\"],\\n      [\\\"ca\\\", 1],\\n      [\\\"CA\\\", 1],\\n    ]);\\n    this.groupStack.push(currentCtx);\\n    this.groupLevel++;\\n  }\\n\\n  endGroup(group) {\\n    if (!this.contentVisible) {\\n      return;\\n    }\\n    this.groupLevel--;\\n    const groupCtx = this.ctx;\\n    const ctx = this.groupStack.pop();\\n    this.ctx = ctx;\\n    \u002F\u002F Turn off image smoothing to avoid sub pixel interpolation which can\\n    \u002F\u002F look kind of blurry for some pdfs.\\n    this.ctx.imageSmoothingEnabled = false;\\n\\n    if (group.smask) {\\n      this.tempSMask = this.smaskStack.pop();\\n      this.restore();\\n    } else {\\n      this.ctx.restore();\\n      const currentMtx = getCurrentTransform(this.ctx);\\n      this.restore();\\n      this.ctx.save();\\n      this.ctx.setTransform(...currentMtx);\\n      const dirtyBox = MIN_MAX_INIT.slice();\\n      Util.axialAlignedBoundingBox(\\n        [0, 0, groupCtx.canvas.width, groupCtx.canvas.height],\\n        currentMtx,\\n        dirtyBox\\n      );\\n      this.ctx.drawImage(groupCtx.canvas, 0, 0);\\n      this.ctx.restore();\\n      this.compose(dirtyBox);\\n    }\\n  }\\n\\n  beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\\n    \u002F\u002F The annotations are drawn just after the page content.\\n    \u002F\u002F The page content drawing can potentially have set a transform,\\n    \u002F\u002F a clipping path, whatever...\\n    \u002F\u002F So in order to have something clean, we restore the initial state.\\n    this.#restoreInitialState();\\n    resetCtxToDefault(this.ctx);\\n\\n    this.ctx.save();\\n    this.save();\\n\\n    if (this.baseTransform) {\\n      this.ctx.setTransform(...this.baseTransform);\\n    }\\n\\n    if (rect) {\\n      const width = rect[2] - rect[0];\\n      const height = rect[3] - rect[1];\\n\\n      if (hasOwnCanvas && this.annotationCanvasMap) {\\n        transform = transform.slice();\\n        transform[4] -= rect[0];\\n        transform[5] -= rect[1];\\n\\n        rect = rect.slice();\\n        rect[0] = rect[1] = 0;\\n        rect[2] = width;\\n        rect[3] = height;\\n\\n        Util.singularValueDecompose2dScale(getCurrentTransform(this.ctx), XY);\\n        const { viewportScale } = this;\\n        const canvasWidth = Math.ceil(\\n          width * this.outputScaleX * viewportScale\\n        );\\n        const canvasHeight = Math.ceil(\\n          height * this.outputScaleY * viewportScale\\n        );\\n\\n        this.annotationCanvas = this.canvasFactory.create(\\n          canvasWidth,\\n          canvasHeight\\n        );\\n        const { canvas, context } = this.annotationCanvas;\\n        this.annotationCanvasMap.set(id, canvas);\\n        this.annotationCanvas.savedCtx = this.ctx;\\n        this.ctx = context;\\n        this.ctx.save();\\n        this.ctx.setTransform(XY[0], 0, 0, -XY[1], 0, height * XY[1]);\\n\\n        resetCtxToDefault(this.ctx);\\n      } else {\\n        resetCtxToDefault(this.ctx);\\n\\n        \u002F\u002F Consume a potential path before clipping.\\n        this.endPath();\\n\\n        const clip = new Path2D();\\n        clip.rect(rect[0], rect[1], width, height);\\n        this.ctx.clip(clip);\\n      }\\n    }\\n\\n    this.current = new CanvasExtraState(\\n      this.ctx.canvas.width,\\n      this.ctx.canvas.height\\n    );\\n\\n    this.transform(...transform);\\n    this.transform(...matrix);\\n  }\\n\\n  endAnnotation() {\\n    if (this.annotationCanvas) {\\n      this.ctx.restore();\\n      this.#drawFilter();\\n\\n      this.ctx = this.annotationCanvas.savedCtx;\\n      delete this.annotationCanvas.savedCtx;\\n      delete this.annotationCanvas;\\n    }\\n  }\\n\\n  paintImageMaskXObject(img) {\\n    if (!this.contentVisible) {\\n      return;\\n    }\\n    const count = img.count;\\n    img = this.getObject(img.data, img);\\n    img.count = count;\\n\\n    const ctx = this.ctx;\\n    const mask = this._createMaskCanvas(img);\\n    const maskCanvas = mask.canvas;\\n\\n    ctx.save();\\n    \u002F\u002F The mask is drawn with the transform applied. Reset the current\\n    \u002F\u002F transform to draw to the identity.\\n    ctx.setTransform(1, 0, 0, 1, 0, 0);\\n    ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\\n    ctx.restore();\\n    this.compose();\\n  }\\n\\n  paintImageMaskXObjectRepeat(\\n    img,\\n    scaleX,\\n    skewX = 0,\\n    skewY = 0,\\n    scaleY,\\n    positions\\n  ) {\\n    if (!this.contentVisible) {\\n      return;\\n    }\\n\\n    img = this.getObject(img.data, img);\\n\\n    const ctx = this.ctx;\\n    ctx.save();\\n    const currentTransform = getCurrentTransform(ctx);\\n    ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\\n    const mask = this._createMaskCanvas(img);\\n\\n    ctx.setTransform(\\n      1,\\n      0,\\n      0,\\n      1,\\n      mask.offsetX - currentTransform[4],\\n      mask.offsetY - currentTransform[5]\\n    );\\n    for (let i = 0, ii = positions.length; i \u003C ii; i += 2) {\\n      const trans = Util.transform(currentTransform, [\\n        scaleX,\\n        skewX,\\n        skewY,\\n        scaleY,\\n        positions[i],\\n        positions[i + 1],\\n      ]);\\n\\n      \u002F\u002F Here we want to apply the transform at the origin,\\n      \u002F\u002F hence no additional computation is necessary.\\n      ctx.drawImage(mask.canvas, trans[4], trans[5]);\\n    }\\n    ctx.restore();\\n    this.compose();\\n  }\\n\\n  paintImageMaskXObjectGroup(images) {\\n    if (!this.contentVisible) {\\n      return;\\n    }\\n    const ctx = this.ctx;\\n\\n    const fillColor = this.current.fillColor;\\n    const isPatternFill = this.current.patternFill;\\n\\n    for (const image of images) {\\n      const { data, width, height, transform } = image;\\n\\n      const maskCanvas = this.cachedCanvases.getCanvas(\\n        \\\"maskCanvas\\\",\\n        width,\\n        height\\n      );\\n      const maskCtx = maskCanvas.context;\\n      maskCtx.save();\\n\\n      const img = this.getObject(data, image);\\n      putBinaryImageMask(maskCtx, img);\\n\\n      maskCtx.globalCompositeOperation = \\\"source-in\\\";\\n\\n      maskCtx.fillStyle = isPatternFill\\n        ? fillColor.getPattern(\\n            maskCtx,\\n            this,\\n            getCurrentTransformInverse(ctx),\\n            PathType.FILL\\n          )\\n        : fillColor;\\n      maskCtx.fillRect(0, 0, width, height);\\n\\n      maskCtx.restore();\\n\\n      ctx.save();\\n      ctx.transform(...transform);\\n      ctx.scale(1, -1);\\n      drawImageAtIntegerCoords(\\n        ctx,\\n        maskCanvas.canvas,\\n        0,\\n        0,\\n        width,\\n        height,\\n        0,\\n        -1,\\n        1,\\n        1\\n      );\\n      ctx.restore();\\n    }\\n    this.compose();\\n  }\\n\\n  paintImageXObject(objId) {\\n    if (!this.contentVisible) {\\n      return;\\n    }\\n    const imgData = this.getObject(objId);\\n    if (!imgData) {\\n      warn(\\\"Dependent image isn't ready yet\\\");\\n      return;\\n    }\\n\\n    this.paintInlineImageXObject(imgData);\\n  }\\n\\n  paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\\n    if (!this.contentVisible) {\\n      return;\\n    }\\n    const imgData = this.getObject(objId);\\n    if (!imgData) {\\n      warn(\\\"Dependent image isn't ready yet\\\");\\n      return;\\n    }\\n\\n    const width = imgData.width;\\n    const height = imgData.height;\\n    const map = [];\\n    for (let i = 0, ii = positions.length; i \u003C ii; i += 2) {\\n      map.push({\\n        transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\\n        x: 0,\\n        y: 0,\\n        w: width,\\n        h: height,\\n      });\\n    }\\n    this.paintInlineImageXObjectGroup(imgData, map);\\n  }\\n\\n  applyTransferMapsToCanvas(ctx) {\\n    if (this.current.transferMaps !== \\\"none\\\") {\\n      ctx.filter = this.current.transferMaps;\\n      ctx.drawImage(ctx.canvas, 0, 0);\\n      ctx.filter = \\\"none\\\";\\n    }\\n    return ctx.canvas;\\n  }\\n\\n  applyTransferMapsToBitmap(imgData) {\\n    if (this.current.transferMaps === \\\"none\\\") {\\n      return imgData.bitmap;\\n    }\\n    const { bitmap, width, height } = imgData;\\n    const tmpCanvas = this.cachedCanvases.getCanvas(\\n      \\\"inlineImage\\\",\\n      width,\\n      height\\n    );\\n    const tmpCtx = tmpCanvas.context;\\n    tmpCtx.filter = this.current.transferMaps;\\n    tmpCtx.drawImage(bitmap, 0, 0);\\n    tmpCtx.filter = \\\"none\\\";\\n\\n    return tmpCanvas.canvas;\\n  }\\n\\n  paintInlineImageXObject(imgData) {\\n    if (!this.contentVisible) {\\n      return;\\n    }\\n    const width = imgData.width;\\n    const height = imgData.height;\\n    const ctx = this.ctx;\\n\\n    this.save();\\n\\n    \u002F\u002F The filter, if any, will be applied in applyTransferMapsToBitmap.\\n    \u002F\u002F It must be applied to the image before rescaling else some artifacts\\n    \u002F\u002F could appear.\\n    \u002F\u002F The final restore will reset it to its value.\\n    const { filter } = ctx;\\n    if (filter !== \\\"none\\\" && filter !== \\\"\\\") {\\n      ctx.filter = \\\"none\\\";\\n    }\\n\\n    \u002F\u002F scale the image to the unit square\\n    ctx.scale(1 \u002F width, -1 \u002F height);\\n\\n    let imgToPaint;\\n    if (imgData.bitmap) {\\n      imgToPaint = this.applyTransferMapsToBitmap(imgData);\\n    } else if (\\n      (typeof HTMLElement === \\\"function\\\" && imgData instanceof HTMLElement) ||\\n      !imgData.data\\n    ) {\\n      \u002F\u002F typeof check is needed due to node.js support, see issue #8489\\n      imgToPaint = imgData;\\n    } else {\\n      const tmpCanvas = this.cachedCanvases.getCanvas(\\n        \\\"inlineImage\\\",\\n        width,\\n        height\\n      );\\n      const tmpCtx = tmpCanvas.context;\\n      putBinaryImageData(tmpCtx, imgData);\\n      imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\\n    }\\n\\n    const scaled = this._scaleImage(\\n      imgToPaint,\\n      getCurrentTransformInverse(ctx)\\n    );\\n    ctx.imageSmoothingEnabled = getImageSmoothingEnabled(\\n      getCurrentTransform(ctx),\\n      imgData.interpolate\\n    );\\n\\n    drawImageAtIntegerCoords(\\n      ctx,\\n      scaled.img,\\n      0,\\n      0,\\n      scaled.paintWidth,\\n      scaled.paintHeight,\\n      0,\\n      -height,\\n      width,\\n      height\\n    );\\n    this.compose();\\n    this.restore();\\n  }\\n\\n  paintInlineImageXObjectGroup(imgData, map) {\\n    if (!this.contentVisible) {\\n      return;\\n    }\\n    const ctx = this.ctx;\\n    let imgToPaint;\\n    if (imgData.bitmap) {\\n      imgToPaint = imgData.bitmap;\\n    } else {\\n      const w = imgData.width;\\n      const h = imgData.height;\\n\\n      const tmpCanvas = this.cachedCanvases.getCanvas(\\\"inlineImage\\\", w, h);\\n      const tmpCtx = tmpCanvas.context;\\n      putBinaryImageData(tmpCtx, imgData);\\n      imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\\n    }\\n\\n    for (const entry of map) {\\n      ctx.save();\\n      ctx.transform(...entry.transform);\\n      ctx.scale(1, -1);\\n      drawImageAtIntegerCoords(\\n        ctx,\\n        imgToPaint,\\n        entry.x,\\n        entry.y,\\n        entry.w,\\n        entry.h,\\n        0,\\n        -1,\\n        1,\\n        1\\n      );\\n      ctx.restore();\\n    }\\n    this.compose();\\n  }\\n\\n  paintSolidColorImageMask() {\\n    if (!this.contentVisible) {\\n      return;\\n    }\\n    this.ctx.fillRect(0, 0, 1, 1);\\n    this.compose();\\n  }\\n\\n  \u002F\u002F Marked content\\n\\n  markPoint(tag) {\\n    \u002F\u002F TODO Marked content.\\n  }\\n\\n  markPointProps(tag, properties) {\\n    \u002F\u002F TODO Marked content.\\n  }\\n\\n  beginMarkedContent(tag) {\\n    this.markedContentStack.push({\\n      visible: true,\\n    });\\n  }\\n\\n  beginMarkedContentProps(tag, properties) {\\n    if (tag === \\\"OC\\\") {\\n      this.markedContentStack.push({\\n        visible: this.optionalContentConfig.isVisible(properties),\\n      });\\n    } else {\\n      this.markedContentStack.push({\\n        visible: true,\\n      });\\n    }\\n    this.contentVisible = this.isContentVisible();\\n  }\\n\\n  endMarkedContent() {\\n    this.markedContentStack.pop();\\n    this.contentVisible = this.isContentVisible();\\n  }\\n\\n  \u002F\u002F Compatibility\\n\\n  beginCompat() {\\n    \u002F\u002F TODO ignore undefined operators (should we do that anyway?)\\n  }\\n\\n  endCompat() {\\n    \u002F\u002F TODO stop ignoring undefined operators\\n  }\\n\\n  \u002F\u002F Helper functions\\n\\n  consumePath(path, clipBox) {\\n    const isEmpty = this.current.isEmptyClip();\\n    if (this.pendingClip) {\\n      this.current.updateClipFromPath();\\n    }\\n    if (!this.pendingClip) {\\n      this.compose(clipBox);\\n    }\\n    const ctx = this.ctx;\\n    if (this.pendingClip) {\\n      if (!isEmpty) {\\n        if (this.pendingClip === EO_CLIP) {\\n          ctx.clip(path, \\\"evenodd\\\");\\n        } else {\\n          ctx.clip(path);\\n        }\\n      }\\n      this.pendingClip = null;\\n    }\\n    this.current.startNewPathAndClipBox(this.current.clipBox);\\n  }\\n\\n  getSinglePixelWidth() {\\n    if (!this._cachedGetSinglePixelWidth) {\\n      const m = getCurrentTransform(this.ctx);\\n      if (m[1] === 0 && m[2] === 0) {\\n        \u002F\u002F Fast path\\n        this._cachedGetSinglePixelWidth =\\n          1 \u002F Math.min(Math.abs(m[0]), Math.abs(m[3]));\\n      } else {\\n        const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\\n        const normX = Math.hypot(m[0], m[2]);\\n        const normY = Math.hypot(m[1], m[3]);\\n        this._cachedGetSinglePixelWidth = Math.max(normX, normY) \u002F absDet;\\n      }\\n    }\\n    return this._cachedGetSinglePixelWidth;\\n  }\\n\\n  getScaleForStroking() {\\n    \u002F\u002F A pixel has thicknessX = thicknessY = 1;\\n    \u002F\u002F A transformed pixel is a parallelogram and the thicknesses\\n    \u002F\u002F corresponds to the heights.\\n    \u002F\u002F The goal of this function is to rescale before setting the\\n    \u002F\u002F lineWidth in order to have both thicknesses greater or equal\\n    \u002F\u002F to 1 after transform.\\n    if (this._cachedScaleForStroking[0] === -1) {\\n      const { lineWidth } = this.current;\\n      const { a, b, c, d } = this.ctx.getTransform();\\n      let scaleX, scaleY;\\n\\n      if (b === 0 && c === 0) {\\n        \u002F\u002F Fast path\\n        const normX = Math.abs(a);\\n        const normY = Math.abs(d);\\n        if (normX === normY) {\\n          if (lineWidth === 0) {\\n            scaleX = scaleY = 1 \u002F normX;\\n          } else {\\n            const scaledLineWidth = normX * lineWidth;\\n            scaleX = scaleY = scaledLineWidth \u003C 1 ? 1 \u002F scaledLineWidth : 1;\\n          }\\n        } else if (lineWidth === 0) {\\n          scaleX = 1 \u002F normX;\\n          scaleY = 1 \u002F normY;\\n        } else {\\n          const scaledXLineWidth = normX * lineWidth;\\n          const scaledYLineWidth = normY * lineWidth;\\n          scaleX = scaledXLineWidth \u003C 1 ? 1 \u002F scaledXLineWidth : 1;\\n          scaleY = scaledYLineWidth \u003C 1 ? 1 \u002F scaledYLineWidth : 1;\\n        }\\n      } else {\\n        \u002F\u002F A pixel (base (x, y)) is transformed by M into a parallelogram:\\n        \u002F\u002F  - its area is |det(M)|;\\n        \u002F\u002F  - heightY (orthogonal to Mx) has a length: |det(M)| \u002F norm(Mx);\\n        \u002F\u002F  - heightX (orthogonal to My) has a length: |det(M)| \u002F norm(My).\\n        \u002F\u002F heightX and heightY are the thicknesses of the transformed pixel\\n        \u002F\u002F and they must be both greater or equal to 1.\\n        const absDet = Math.abs(a * d - b * c);\\n        const normX = Math.hypot(a, b);\\n        const normY = Math.hypot(c, d);\\n        if (lineWidth === 0) {\\n          scaleX = normY \u002F absDet;\\n          scaleY = normX \u002F absDet;\\n        } else {\\n          const baseArea = lineWidth * absDet;\\n          scaleX = normY > baseArea ? normY \u002F baseArea : 1;\\n          scaleY = normX > baseArea ? normX \u002F baseArea : 1;\\n        }\\n      }\\n      this._cachedScaleForStroking[0] = scaleX;\\n      this._cachedScaleForStroking[1] = scaleY;\\n    }\\n    return this._cachedScaleForStroking;\\n  }\\n\\n  \u002F\u002F Rescale before stroking in order to have a final lineWidth\\n  \u002F\u002F with both thicknesses greater or equal to 1.\\n  rescaleAndStroke(path, saveRestore) {\\n    const {\\n      ctx,\\n      current: { lineWidth },\\n    } = this;\\n    const [scaleX, scaleY] = this.getScaleForStroking();\\n\\n    if (scaleX === scaleY) {\\n      ctx.lineWidth = (lineWidth || 1) * scaleX;\\n      ctx.stroke(path);\\n      return;\\n    }\\n\\n    const dashes = ctx.getLineDash();\\n    if (saveRestore) {\\n      ctx.save();\\n    }\\n\\n    ctx.scale(scaleX, scaleY);\\n    SCALE_MATRIX.a = 1 \u002F scaleX;\\n    SCALE_MATRIX.d = 1 \u002F scaleY;\\n    const newPath = new Path2D();\\n    newPath.addPath(path, SCALE_MATRIX);\\n\\n    \u002F\u002F How the dashed line is rendered depends on the current transform...\\n    \u002F\u002F so we added a rescale to handle too thin lines and consequently\\n    \u002F\u002F the way the line is dashed will be modified.\\n    \u002F\u002F If scaleX === scaleY, the dashed lines will be rendered correctly\\n    \u002F\u002F else we'll have some bugs (but only with too thin lines).\\n    \u002F\u002F Here we take the max... why not taking the min... or something else.\\n    \u002F\u002F Anyway, as said it's buggy when scaleX !== scaleY.\\n    if (dashes.length > 0) {\\n      const scale = Math.max(scaleX, scaleY);\\n      ctx.setLineDash(dashes.map(x => x \u002F scale));\\n      ctx.lineDashOffset \u002F= scale;\\n    }\\n\\n    ctx.lineWidth = lineWidth || 1;\\n    ctx.stroke(newPath);\\n\\n    if (saveRestore) {\\n      ctx.restore();\\n    }\\n  }\\n\\n  isContentVisible() {\\n    for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\\n      if (!this.markedContentStack[i].visible) {\\n        return false;\\n      }\\n    }\\n    return true;\\n  }\\n}\\n\\nfor (const op in OPS) {\\n  if (CanvasGraphics.prototype[op] !== undefined) {\\n    CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\\n  }\\n}\\n\\nexport { CanvasGraphics };\\n\",\"\u002F* Copyright 2018 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nclass GlobalWorkerOptions {\\n  static #port = null;\\n\\n  static #src = \\\"\\\";\\n\\n  \u002F**\\n   * @type {Worker | null}\\n   *\u002F\\n  static get workerPort() {\\n    return this.#port;\\n  }\\n\\n  \u002F**\\n   * @param {Worker | null} workerPort - Defines global port for worker process.\\n   *   Overrides the `workerSrc` option.\\n   *\u002F\\n  static set workerPort(val) {\\n    if (\\n      !(typeof Worker !== \\\"undefined\\\" && val instanceof Worker) &&\\n      val !== null\\n    ) {\\n      throw new Error(\\\"Invalid `workerPort` type.\\\");\\n    }\\n    this.#port = val;\\n  }\\n\\n  \u002F**\\n   * @type {string}\\n   *\u002F\\n  static get workerSrc() {\\n    return this.#src;\\n  }\\n\\n  \u002F**\\n   * @param {string} workerSrc - A string containing the path and filename of\\n   *   the worker file.\\n   *\\n   *   NOTE: The `workerSrc` option should always be set, in order to prevent\\n   *         any issues when using the PDF.js library.\\n   *\u002F\\n  static set workerSrc(val) {\\n    if (typeof val !== \\\"string\\\") {\\n      throw new Error(\\\"Invalid `workerSrc` type.\\\");\\n    }\\n    this.#src = val;\\n  }\\n}\\n\\nexport { GlobalWorkerOptions };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nclass Metadata {\\n  #map;\\n\\n  #data;\\n\\n  constructor({ parsedData, rawData }) {\\n    this.#map = parsedData;\\n    this.#data = rawData;\\n  }\\n\\n  getRaw() {\\n    return this.#data;\\n  }\\n\\n  get(name) {\\n    return this.#map.get(name) ?? null;\\n  }\\n\\n  [Symbol.iterator]() {\\n    return this.#map.entries();\\n  }\\n}\\n\\nexport { Metadata };\\n\",\"\u002F* Copyright 2020 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  info,\\n  RenderingIntentFlag,\\n  unreachable,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { MurmurHash3_64 } from \\\"..\u002Fshared\u002Fmurmurhash3.js\\\";\\n\\nconst INTERNAL = Symbol(\\\"INTERNAL\\\");\\n\\nclass OptionalContentGroup {\\n  #isDisplay = false;\\n\\n  #isPrint = false;\\n\\n  #userSet = false;\\n\\n  #visible = true;\\n\\n  constructor(renderingIntent, { name, intent, usage, rbGroups }) {\\n    this.#isDisplay = !!(renderingIntent & RenderingIntentFlag.DISPLAY);\\n    this.#isPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\\n\\n    this.name = name;\\n    this.intent = intent;\\n    this.usage = usage;\\n    this.rbGroups = rbGroups;\\n  }\\n\\n  \u002F**\\n   * @type {boolean}\\n   *\u002F\\n  get visible() {\\n    if (this.#userSet) {\\n      return this.#visible;\\n    }\\n    if (!this.#visible) {\\n      return false;\\n    }\\n    const { print, view } = this.usage;\\n\\n    if (this.#isDisplay) {\\n      return view?.viewState !== \\\"OFF\\\";\\n    } else if (this.#isPrint) {\\n      return print?.printState !== \\\"OFF\\\";\\n    }\\n    return true;\\n  }\\n\\n  \u002F**\\n   * @ignore\\n   *\u002F\\n  _setVisible(internal, visible, userSet = false) {\\n    if (internal !== INTERNAL) {\\n      unreachable(\\\"Internal method `_setVisible` called.\\\");\\n    }\\n    this.#userSet = userSet;\\n    this.#visible = visible;\\n  }\\n}\\n\\nclass OptionalContentConfig {\\n  #cachedGetHash = null;\\n\\n  #groups = new Map();\\n\\n  #initialHash = null;\\n\\n  #order = null;\\n\\n  constructor(data, renderingIntent = RenderingIntentFlag.DISPLAY) {\\n    this.renderingIntent = renderingIntent;\\n\\n    this.name = null;\\n    this.creator = null;\\n\\n    if (data === null) {\\n      return;\\n    }\\n    this.name = data.name;\\n    this.creator = data.creator;\\n    this.#order = data.order;\\n    for (const group of data.groups) {\\n      this.#groups.set(\\n        group.id,\\n        new OptionalContentGroup(renderingIntent, group)\\n      );\\n    }\\n\\n    if (data.baseState === \\\"OFF\\\") {\\n      for (const group of this.#groups.values()) {\\n        group._setVisible(INTERNAL, false);\\n      }\\n    }\\n\\n    for (const on of data.on) {\\n      this.#groups.get(on)._setVisible(INTERNAL, true);\\n    }\\n\\n    for (const off of data.off) {\\n      this.#groups.get(off)._setVisible(INTERNAL, false);\\n    }\\n\\n    \u002F\u002F The following code must always run *last* in the constructor.\\n    this.#initialHash = this.getHash();\\n  }\\n\\n  #evaluateVisibilityExpression(array) {\\n    const length = array.length;\\n    if (length \u003C 2) {\\n      return true;\\n    }\\n    const operator = array[0];\\n    for (let i = 1; i \u003C length; i++) {\\n      const element = array[i];\\n      let state;\\n      if (Array.isArray(element)) {\\n        state = this.#evaluateVisibilityExpression(element);\\n      } else if (this.#groups.has(element)) {\\n        state = this.#groups.get(element).visible;\\n      } else {\\n        warn(`Optional content group not found: ${element}`);\\n        return true;\\n      }\\n      switch (operator) {\\n        case \\\"And\\\":\\n          if (!state) {\\n            return false;\\n          }\\n          break;\\n        case \\\"Or\\\":\\n          if (state) {\\n            return true;\\n          }\\n          break;\\n        case \\\"Not\\\":\\n          return !state;\\n        default:\\n          return true;\\n      }\\n    }\\n    return operator === \\\"And\\\";\\n  }\\n\\n  isVisible(group) {\\n    if (this.#groups.size === 0) {\\n      return true;\\n    }\\n    if (!group) {\\n      info(\\\"Optional content group not defined.\\\");\\n      return true;\\n    }\\n    if (group.type === \\\"OCG\\\") {\\n      if (!this.#groups.has(group.id)) {\\n        warn(`Optional content group not found: ${group.id}`);\\n        return true;\\n      }\\n      return this.#groups.get(group.id).visible;\\n    } else if (group.type === \\\"OCMD\\\") {\\n      \u002F\u002F Per the spec, the expression should be preferred if available.\\n      if (group.expression) {\\n        return this.#evaluateVisibilityExpression(group.expression);\\n      }\\n      if (!group.policy || group.policy === \\\"AnyOn\\\") {\\n        \u002F\u002F Default\\n        for (const id of group.ids) {\\n          if (!this.#groups.has(id)) {\\n            warn(`Optional content group not found: ${id}`);\\n            return true;\\n          }\\n          if (this.#groups.get(id).visible) {\\n            return true;\\n          }\\n        }\\n        return false;\\n      } else if (group.policy === \\\"AllOn\\\") {\\n        for (const id of group.ids) {\\n          if (!this.#groups.has(id)) {\\n            warn(`Optional content group not found: ${id}`);\\n            return true;\\n          }\\n          if (!this.#groups.get(id).visible) {\\n            return false;\\n          }\\n        }\\n        return true;\\n      } else if (group.policy === \\\"AnyOff\\\") {\\n        for (const id of group.ids) {\\n          if (!this.#groups.has(id)) {\\n            warn(`Optional content group not found: ${id}`);\\n            return true;\\n          }\\n          if (!this.#groups.get(id).visible) {\\n            return true;\\n          }\\n        }\\n        return false;\\n      } else if (group.policy === \\\"AllOff\\\") {\\n        for (const id of group.ids) {\\n          if (!this.#groups.has(id)) {\\n            warn(`Optional content group not found: ${id}`);\\n            return true;\\n          }\\n          if (this.#groups.get(id).visible) {\\n            return false;\\n          }\\n        }\\n        return true;\\n      }\\n      warn(`Unknown optional content policy ${group.policy}.`);\\n      return true;\\n    }\\n    warn(`Unknown group type ${group.type}.`);\\n    return true;\\n  }\\n\\n  setVisibility(id, visible = true, preserveRB = true) {\\n    const group = this.#groups.get(id);\\n    if (!group) {\\n      warn(`Optional content group not found: ${id}`);\\n      return;\\n    }\\n\\n    \u002F\u002F If the visibility is about to be set to `true` and the group belongs to\\n    \u002F\u002F any radiobutton groups, hide all other OCGs in these radiobutton groups,\\n    \u002F\u002F provided that radiobutton state relationships are to be preserved.\\n    if (preserveRB && visible && group.rbGroups.length) {\\n      for (const rbGroup of group.rbGroups) {\\n        for (const otherId of rbGroup) {\\n          if (otherId !== id) {\\n            this.#groups.get(otherId)?._setVisible(INTERNAL, false, true);\\n          }\\n        }\\n      }\\n    }\\n\\n    group._setVisible(INTERNAL, !!visible, \u002F* userSet = *\u002F true);\\n\\n    this.#cachedGetHash = null;\\n  }\\n\\n  setOCGState({ state, preserveRB }) {\\n    let operator;\\n\\n    for (const elem of state) {\\n      switch (elem) {\\n        case \\\"ON\\\":\\n        case \\\"OFF\\\":\\n        case \\\"Toggle\\\":\\n          operator = elem;\\n          continue;\\n      }\\n\\n      const group = this.#groups.get(elem);\\n      if (!group) {\\n        continue;\\n      }\\n      switch (operator) {\\n        case \\\"ON\\\":\\n          this.setVisibility(elem, true, preserveRB);\\n          break;\\n        case \\\"OFF\\\":\\n          this.setVisibility(elem, false, preserveRB);\\n          break;\\n        case \\\"Toggle\\\":\\n          this.setVisibility(elem, !group.visible, preserveRB);\\n          break;\\n      }\\n    }\\n\\n    this.#cachedGetHash = null;\\n  }\\n\\n  get hasInitialVisibility() {\\n    return this.#initialHash === null || this.getHash() === this.#initialHash;\\n  }\\n\\n  getOrder() {\\n    if (!this.#groups.size) {\\n      return null;\\n    }\\n    if (this.#order) {\\n      return this.#order.slice();\\n    }\\n    return [...this.#groups.keys()];\\n  }\\n\\n  getGroup(id) {\\n    return this.#groups.get(id) || null;\\n  }\\n\\n  getHash() {\\n    if (this.#cachedGetHash !== null) {\\n      return this.#cachedGetHash;\\n    }\\n    const hash = new MurmurHash3_64();\\n\\n    for (const [id, group] of this.#groups) {\\n      hash.update(`${id}:${group.visible}`);\\n    }\\n    return (this.#cachedGetHash = hash.hexdigest());\\n  }\\n\\n  [Symbol.iterator]() {\\n    return this.#groups.entries();\\n  }\\n}\\n\\nexport { OptionalContentConfig };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\"..\u002Finterfaces\\\").IPDFStream} IPDFStream *\u002F\\n\u002F** @typedef {import(\\\"..\u002Finterfaces\\\").IPDFStreamReader} IPDFStreamReader *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Finterfaces\\\").IPDFStreamRangeReader} IPDFStreamRangeReader *\u002F\\n\\nimport { assert } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { isPdfFile } from \\\".\u002Fdisplay_utils.js\\\";\\n\\n\u002F** @implements {IPDFStream} *\u002F\\nclass PDFDataTransportStream {\\n  constructor(\\n    pdfDataRangeTransport,\\n    { disableRange = false, disableStream = false }\\n  ) {\\n    assert(\\n      pdfDataRangeTransport,\\n      'PDFDataTransportStream - missing required \\\"pdfDataRangeTransport\\\" argument.'\\n    );\\n    const { length, initialData, progressiveDone, contentDispositionFilename } =\\n      pdfDataRangeTransport;\\n\\n    this._queuedChunks = [];\\n    this._progressiveDone = progressiveDone;\\n    this._contentDispositionFilename = contentDispositionFilename;\\n\\n    if (initialData?.length > 0) {\\n      \u002F\u002F Prevent any possible issues by only transferring a Uint8Array that\\n      \u002F\u002F completely \\\"utilizes\\\" its underlying ArrayBuffer.\\n      const buffer =\\n        initialData instanceof Uint8Array &&\\n        initialData.byteLength === initialData.buffer.byteLength\\n          ? initialData.buffer\\n          : new Uint8Array(initialData).buffer;\\n      this._queuedChunks.push(buffer);\\n    }\\n\\n    this._pdfDataRangeTransport = pdfDataRangeTransport;\\n    this._isStreamingSupported = !disableStream;\\n    this._isRangeSupported = !disableRange;\\n    this._contentLength = length;\\n\\n    this._fullRequestReader = null;\\n    this._rangeReaders = [];\\n\\n    pdfDataRangeTransport.addRangeListener((begin, chunk) => {\\n      this._onReceiveData({ begin, chunk });\\n    });\\n\\n    pdfDataRangeTransport.addProgressListener((loaded, total) => {\\n      this._onProgress({ loaded, total });\\n    });\\n\\n    pdfDataRangeTransport.addProgressiveReadListener(chunk => {\\n      this._onReceiveData({ chunk });\\n    });\\n\\n    pdfDataRangeTransport.addProgressiveDoneListener(() => {\\n      this._onProgressiveDone();\\n    });\\n\\n    pdfDataRangeTransport.transportReady();\\n  }\\n\\n  _onReceiveData({ begin, chunk }) {\\n    \u002F\u002F Prevent any possible issues by only transferring a Uint8Array that\\n    \u002F\u002F completely \\\"utilizes\\\" its underlying ArrayBuffer.\\n    const buffer =\\n      chunk instanceof Uint8Array &&\\n      chunk.byteLength === chunk.buffer.byteLength\\n        ? chunk.buffer\\n        : new Uint8Array(chunk).buffer;\\n\\n    if (begin === undefined) {\\n      if (this._fullRequestReader) {\\n        this._fullRequestReader._enqueue(buffer);\\n      } else {\\n        this._queuedChunks.push(buffer);\\n      }\\n    } else {\\n      const found = this._rangeReaders.some(function (rangeReader) {\\n        if (rangeReader._begin !== begin) {\\n          return false;\\n        }\\n        rangeReader._enqueue(buffer);\\n        return true;\\n      });\\n      assert(\\n        found,\\n        \\\"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\\\"\\n      );\\n    }\\n  }\\n\\n  get _progressiveDataLength() {\\n    return this._fullRequestReader?._loaded ?? 0;\\n  }\\n\\n  _onProgress(evt) {\\n    if (evt.total === undefined) {\\n      \u002F\u002F Reporting to first range reader, if it exists.\\n      this._rangeReaders[0]?.onProgress?.({ loaded: evt.loaded });\\n    } else {\\n      this._fullRequestReader?.onProgress?.({\\n        loaded: evt.loaded,\\n        total: evt.total,\\n      });\\n    }\\n  }\\n\\n  _onProgressiveDone() {\\n    this._fullRequestReader?.progressiveDone();\\n    this._progressiveDone = true;\\n  }\\n\\n  _removeRangeReader(reader) {\\n    const i = this._rangeReaders.indexOf(reader);\\n    if (i >= 0) {\\n      this._rangeReaders.splice(i, 1);\\n    }\\n  }\\n\\n  getFullReader() {\\n    assert(\\n      !this._fullRequestReader,\\n      \\\"PDFDataTransportStream.getFullReader can only be called once.\\\"\\n    );\\n    const queuedChunks = this._queuedChunks;\\n    this._queuedChunks = null;\\n    return new PDFDataTransportStreamReader(\\n      this,\\n      queuedChunks,\\n      this._progressiveDone,\\n      this._contentDispositionFilename\\n    );\\n  }\\n\\n  getRangeReader(begin, end) {\\n    if (end \u003C= this._progressiveDataLength) {\\n      return null;\\n    }\\n    const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\\n    this._pdfDataRangeTransport.requestDataRange(begin, end);\\n    this._rangeReaders.push(reader);\\n    return reader;\\n  }\\n\\n  cancelAllRequests(reason) {\\n    this._fullRequestReader?.cancel(reason);\\n\\n    for (const reader of this._rangeReaders.slice(0)) {\\n      reader.cancel(reason);\\n    }\\n    this._pdfDataRangeTransport.abort();\\n  }\\n}\\n\\n\u002F** @implements {IPDFStreamReader} *\u002F\\nclass PDFDataTransportStreamReader {\\n  constructor(\\n    stream,\\n    queuedChunks,\\n    progressiveDone = false,\\n    contentDispositionFilename = null\\n  ) {\\n    this._stream = stream;\\n    this._done = progressiveDone || false;\\n    this._filename = isPdfFile(contentDispositionFilename)\\n      ? contentDispositionFilename\\n      : null;\\n    this._queuedChunks = queuedChunks || [];\\n    this._loaded = 0;\\n    for (const chunk of this._queuedChunks) {\\n      this._loaded += chunk.byteLength;\\n    }\\n    this._requests = [];\\n    this._headersReady = Promise.resolve();\\n    stream._fullRequestReader = this;\\n\\n    this.onProgress = null;\\n  }\\n\\n  _enqueue(chunk) {\\n    if (this._done) {\\n      return; \u002F\u002F Ignore new data.\\n    }\\n    if (this._requests.length > 0) {\\n      const requestCapability = this._requests.shift();\\n      requestCapability.resolve({ value: chunk, done: false });\\n    } else {\\n      this._queuedChunks.push(chunk);\\n    }\\n    this._loaded += chunk.byteLength;\\n  }\\n\\n  get headersReady() {\\n    return this._headersReady;\\n  }\\n\\n  get filename() {\\n    return this._filename;\\n  }\\n\\n  get isRangeSupported() {\\n    return this._stream._isRangeSupported;\\n  }\\n\\n  get isStreamingSupported() {\\n    return this._stream._isStreamingSupported;\\n  }\\n\\n  get contentLength() {\\n    return this._stream._contentLength;\\n  }\\n\\n  async read() {\\n    if (this._queuedChunks.length > 0) {\\n      const chunk = this._queuedChunks.shift();\\n      return { value: chunk, done: false };\\n    }\\n    if (this._done) {\\n      return { value: undefined, done: true };\\n    }\\n    const requestCapability = Promise.withResolvers();\\n    this._requests.push(requestCapability);\\n    return requestCapability.promise;\\n  }\\n\\n  cancel(reason) {\\n    this._done = true;\\n    for (const requestCapability of this._requests) {\\n      requestCapability.resolve({ value: undefined, done: true });\\n    }\\n    this._requests.length = 0;\\n  }\\n\\n  progressiveDone() {\\n    if (this._done) {\\n      return;\\n    }\\n    this._done = true;\\n  }\\n}\\n\\n\u002F** @implements {IPDFStreamRangeReader} *\u002F\\nclass PDFDataTransportStreamRangeReader {\\n  constructor(stream, begin, end) {\\n    this._stream = stream;\\n    this._begin = begin;\\n    this._end = end;\\n    this._queuedChunk = null;\\n    this._requests = [];\\n    this._done = false;\\n\\n    this.onProgress = null;\\n  }\\n\\n  _enqueue(chunk) {\\n    if (this._done) {\\n      return; \u002F\u002F ignore new data\\n    }\\n    if (this._requests.length === 0) {\\n      this._queuedChunk = chunk;\\n    } else {\\n      const requestsCapability = this._requests.shift();\\n      requestsCapability.resolve({ value: chunk, done: false });\\n      for (const requestCapability of this._requests) {\\n        requestCapability.resolve({ value: undefined, done: true });\\n      }\\n      this._requests.length = 0;\\n    }\\n    this._done = true;\\n    this._stream._removeRangeReader(this);\\n  }\\n\\n  get isStreamingSupported() {\\n    return false;\\n  }\\n\\n  async read() {\\n    if (this._queuedChunk) {\\n      const chunk = this._queuedChunk;\\n      this._queuedChunk = null;\\n      return { value: chunk, done: false };\\n    }\\n    if (this._done) {\\n      return { value: undefined, done: true };\\n    }\\n    const requestCapability = Promise.withResolvers();\\n    this._requests.push(requestCapability);\\n    return requestCapability.promise;\\n  }\\n\\n  cancel(reason) {\\n    this._done = true;\\n    for (const requestCapability of this._requests) {\\n      requestCapability.resolve({ value: undefined, done: true });\\n    }\\n    this._requests.length = 0;\\n    this._stream._removeRangeReader(this);\\n  }\\n}\\n\\nexport { PDFDataTransportStream };\\n\",\"\u002F* Copyright 2017 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { stringToBytes } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\n\u002F\u002F This getFilenameFromContentDispositionHeader function is adapted from\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002FRob--W\u002Fopen-in-browser\u002Fblob\u002F7e2e35a38b8b4e981b11da7b2f01df0149049e92\u002Fextension\u002Fcontent-disposition.js\\n\u002F\u002F with the following changes:\\n\u002F\u002F - Modified to conform to PDF.js's coding style.\\n\u002F\u002F - Move return to the end of the function to prevent Babel from dropping the\\n\u002F\u002F   function declarations.\\n\\n\u002F**\\n * Extract file name from the Content-Disposition HTTP response header.\\n *\\n * @param {string} contentDisposition\\n * @returns {string} Filename, if found in the Content-Disposition header.\\n *\u002F\\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\\n  let needsEncodingFixup = true;\\n\\n  \u002F\u002F filename*=ext-value (\\\"ext-value\\\" from RFC 5987, referenced by RFC 6266).\\n  let tmp = toParamRegExp(\\\"filename\\\\\\\\*\\\", \\\"i\\\").exec(contentDisposition);\\n  if (tmp) {\\n    tmp = tmp[1];\\n    let filename = rfc2616unquote(tmp);\\n    filename = unescape(filename);\\n    filename = rfc5987decode(filename);\\n    filename = rfc2047decode(filename);\\n    return fixupEncoding(filename);\\n  }\\n\\n  \u002F\u002F Continuations (RFC 2231 section 3, referenced by RFC 5987 section 3.1).\\n  \u002F\u002F filename*n*=part\\n  \u002F\u002F filename*n=part\\n  tmp = rfc2231getparam(contentDisposition);\\n  if (tmp) {\\n    \u002F\u002F RFC 2047, section\\n    const filename = rfc2047decode(tmp);\\n    return fixupEncoding(filename);\\n  }\\n\\n  \u002F\u002F filename=value (RFC 5987, section 4.1).\\n  tmp = toParamRegExp(\\\"filename\\\", \\\"i\\\").exec(contentDisposition);\\n  if (tmp) {\\n    tmp = tmp[1];\\n    let filename = rfc2616unquote(tmp);\\n    filename = rfc2047decode(filename);\\n    return fixupEncoding(filename);\\n  }\\n\\n  \u002F\u002F After this line there are only function declarations. We cannot put\\n  \u002F\u002F \\\"return\\\" here for readability because babel would then drop the function\\n  \u002F\u002F declarations...\\n  function toParamRegExp(attributePattern, flags) {\\n    return new RegExp(\\n      \\\"(?:^|;)\\\\\\\\s*\\\" +\\n        attributePattern +\\n        \\\"\\\\\\\\s*=\\\\\\\\s*\\\" +\\n        \u002F\u002F Captures: value = token | quoted-string\\n        \u002F\u002F (RFC 2616, section 3.6 and referenced by RFC 6266 4.1)\\n        \\\"(\\\" +\\n        '[^\\\";\\\\\\\\s][^;\\\\\\\\s]*' +\\n        \\\"|\\\" +\\n        '\\\"(?:[^\\\"\\\\\\\\\\\\\\\\]|\\\\\\\\\\\\\\\\\\\"?)+\\\"?' +\\n        \\\")\\\",\\n      flags\\n    );\\n  }\\n  function textdecode(encoding, value) {\\n    if (encoding) {\\n      if (!\u002F^[\\\\x00-\\\\xFF]+$\u002F.test(value)) {\\n        return value;\\n      }\\n      try {\\n        const decoder = new TextDecoder(encoding, { fatal: true });\\n        const buffer = stringToBytes(value);\\n        value = decoder.decode(buffer);\\n        needsEncodingFixup = false;\\n      } catch {\\n        \u002F\u002F TextDecoder constructor threw - unrecognized encoding.\\n      }\\n    }\\n    return value;\\n  }\\n  function fixupEncoding(value) {\\n    if (needsEncodingFixup && \u002F[\\\\x80-\\\\xff]\u002F.test(value)) {\\n      \u002F\u002F Maybe multi-byte UTF-8.\\n      value = textdecode(\\\"utf-8\\\", value);\\n      if (needsEncodingFixup) {\\n        \u002F\u002F Try iso-8859-1 encoding.\\n        value = textdecode(\\\"iso-8859-1\\\", value);\\n      }\\n    }\\n    return value;\\n  }\\n  function rfc2231getparam(contentDispositionStr) {\\n    const matches = [];\\n    let match;\\n    \u002F\u002F Iterate over all filename*n= and filename*n*= with n being an integer\\n    \u002F\u002F of at least zero. Any non-zero number must not start with '0'.\\n    const iter = toParamRegExp(\\\"filename\\\\\\\\*((?!0\\\\\\\\d)\\\\\\\\d+)(\\\\\\\\*?)\\\", \\\"ig\\\");\\n    while ((match = iter.exec(contentDispositionStr)) !== null) {\\n      let [, n, quot, part] = match; \u002F\u002F eslint-disable-line prefer-const\\n      n = parseInt(n, 10);\\n      if (n in matches) {\\n        \u002F\u002F Ignore anything after the invalid second filename*0.\\n        if (n === 0) {\\n          break;\\n        }\\n        continue;\\n      }\\n      matches[n] = [quot, part];\\n    }\\n    const parts = [];\\n    for (let n = 0; n \u003C matches.length; ++n) {\\n      if (!(n in matches)) {\\n        \u002F\u002F Numbers must be consecutive. Truncate when there is a hole.\\n        break;\\n      }\\n      let [quot, part] = matches[n]; \u002F\u002F eslint-disable-line prefer-const\\n      part = rfc2616unquote(part);\\n      if (quot) {\\n        part = unescape(part);\\n        if (n === 0) {\\n          part = rfc5987decode(part);\\n        }\\n      }\\n      parts.push(part);\\n    }\\n    return parts.join(\\\"\\\");\\n  }\\n  function rfc2616unquote(value) {\\n    if (value.startsWith('\\\"')) {\\n      const parts = value.slice(1).split('\\\\\\\\\\\"');\\n      \u002F\u002F Find the first unescaped \\\" and terminate there.\\n      for (let i = 0; i \u003C parts.length; ++i) {\\n        const quotindex = parts[i].indexOf('\\\"');\\n        if (quotindex !== -1) {\\n          parts[i] = parts[i].slice(0, quotindex);\\n          parts.length = i + 1; \u002F\u002F Truncates and stop the iteration.\\n        }\\n        parts[i] = parts[i].replaceAll(\u002F\\\\\\\\(.)\u002Fg, \\\"$1\\\");\\n      }\\n      value = parts.join('\\\"');\\n    }\\n    return value;\\n  }\\n  function rfc5987decode(extvalue) {\\n    \u002F\u002F Decodes \\\"ext-value\\\" from RFC 5987.\\n    const encodingend = extvalue.indexOf(\\\"'\\\");\\n    if (encodingend === -1) {\\n      \u002F\u002F Some servers send \\\"filename*=\\\" without encoding 'language' prefix,\\n      \u002F\u002F e.g. in https:\u002F\u002Fgithub.com\u002FRob--W\u002Fopen-in-browser\u002Fissues\u002F26\\n      \u002F\u002F Let's accept the value like Firefox (57) (Chrome 62 rejects it).\\n      return extvalue;\\n    }\\n    const encoding = extvalue.slice(0, encodingend);\\n    const langvalue = extvalue.slice(encodingend + 1);\\n    \u002F\u002F Ignore language (RFC 5987 section 3.2.1, and RFC 6266 section 4.1 ).\\n    const value = langvalue.replace(\u002F^[^']*'\u002F, \\\"\\\");\\n    return textdecode(encoding, value);\\n  }\\n  function rfc2047decode(value) {\\n    \u002F\u002F RFC 2047-decode the result. Firefox tried to drop support for it, but\\n    \u002F\u002F backed out because some servers use it - https:\u002F\u002Fbugzil.la\u002F875615\\n    \u002F\u002F Firefox's condition for decoding is here: https:\u002F\u002Fsearchfox.org\u002Fmozilla-central\u002Frev\u002F4a590a5a15e35d88a3b23dd6ac3c471cf85b04a8\u002Fnetwerk\u002Fmime\u002FnsMIMEHeaderParamImpl.cpp#742-748\\n\\n    \u002F\u002F We are more strict and only recognize RFC 2047-encoding if the value\\n    \u002F\u002F starts with \\\"=?\\\", since then it is likely that the full value is\\n    \u002F\u002F RFC 2047-encoded.\\n\\n    \u002F\u002F Firefox also decodes words even where RFC 2047 section 5 states:\\n    \u002F\u002F \\\"An 'encoded-word' MUST NOT appear within a 'quoted-string'.\\\"\\n    if (!value.startsWith(\\\"=?\\\") || \u002F[\\\\x00-\\\\x19\\\\x80-\\\\xff]\u002F.test(value)) {\\n      return value;\\n    }\\n    \u002F\u002F RFC 2047, section 2.4\\n    \u002F\u002F encoded-word = \\\"=?\\\" charset \\\"?\\\" encoding \\\"?\\\" encoded-text \\\"?=\\\"\\n    \u002F\u002F charset = token (but let's restrict to characters that denote a\\n    \u002F\u002F       possibly valid encoding).\\n    \u002F\u002F encoding = q or b\\n    \u002F\u002F encoded-text = any printable ASCII character other than ? or space.\\n    \u002F\u002F        ... but Firefox permits ? and space.\\n    return value.replaceAll(\\n      \u002F=\\\\?([\\\\w-]*)\\\\?([QqBb])\\\\?((?:[^?]|\\\\?(?!=))*)\\\\?=\u002Fg,\\n      function (matches, charset, encoding, text) {\\n        if (encoding === \\\"q\\\" || encoding === \\\"Q\\\") {\\n          \u002F\u002F RFC 2047 section 4.2.\\n          text = text.replaceAll(\\\"_\\\", \\\" \\\");\\n          text = text.replaceAll(\u002F=([0-9a-fA-F]{2})\u002Fg, function (match, hex) {\\n            return String.fromCharCode(parseInt(hex, 16));\\n          });\\n          return textdecode(charset, text);\\n        } \u002F\u002F else encoding is b or B - base64 (RFC 2047 section 4.1)\\n        try {\\n          text = atob(text);\\n        } catch {}\\n        return textdecode(charset, text);\\n      }\\n    );\\n  }\\n\\n  return \\\"\\\";\\n}\\n\\nexport { getFilenameFromContentDispositionHeader };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { assert, ResponseException } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { getFilenameFromContentDispositionHeader } from \\\".\u002Fcontent_disposition.js\\\";\\nimport { isPdfFile } from \\\".\u002Fdisplay_utils.js\\\";\\n\\nfunction createHeaders(isHttp, httpHeaders) {\\n  const headers = new Headers();\\n\\n  if (!isHttp || !httpHeaders || typeof httpHeaders !== \\\"object\\\") {\\n    return headers;\\n  }\\n  for (const key in httpHeaders) {\\n    const val = httpHeaders[key];\\n    if (val !== undefined) {\\n      headers.append(key, val);\\n    }\\n  }\\n  return headers;\\n}\\n\\nfunction getResponseOrigin(url) {\\n  \u002F\u002F Notably, null is distinct from \\\"null\\\" string (e.g. from file:-URLs).\\n  return URL.parse(url)?.origin ?? null;\\n}\\n\\nfunction validateRangeRequestCapabilities({\\n  responseHeaders,\\n  isHttp,\\n  rangeChunkSize,\\n  disableRange,\\n}) {\\n  if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n    assert(\\n      Number.isInteger(rangeChunkSize) && rangeChunkSize > 0,\\n      \\\"rangeChunkSize must be an integer larger than zero.\\\"\\n    );\\n  }\\n  const returnValues = {\\n    allowRangeRequests: false,\\n    suggestedLength: undefined,\\n  };\\n\\n  const length = parseInt(responseHeaders.get(\\\"Content-Length\\\"), 10);\\n  if (!Number.isInteger(length)) {\\n    return returnValues;\\n  }\\n\\n  returnValues.suggestedLength = length;\\n\\n  if (length \u003C= 2 * rangeChunkSize) {\\n    \u002F\u002F The file size is smaller than the size of two chunks, so it does not\\n    \u002F\u002F make any sense to abort the request and retry with a range request.\\n    return returnValues;\\n  }\\n\\n  if (disableRange || !isHttp) {\\n    return returnValues;\\n  }\\n  if (responseHeaders.get(\\\"Accept-Ranges\\\") !== \\\"bytes\\\") {\\n    return returnValues;\\n  }\\n\\n  const contentEncoding = responseHeaders.get(\\\"Content-Encoding\\\") || \\\"identity\\\";\\n  if (contentEncoding !== \\\"identity\\\") {\\n    return returnValues;\\n  }\\n\\n  returnValues.allowRangeRequests = true;\\n  return returnValues;\\n}\\n\\nfunction extractFilenameFromHeader(responseHeaders) {\\n  const contentDisposition = responseHeaders.get(\\\"Content-Disposition\\\");\\n  if (contentDisposition) {\\n    let filename = getFilenameFromContentDispositionHeader(contentDisposition);\\n    if (filename.includes(\\\"%\\\")) {\\n      try {\\n        filename = decodeURIComponent(filename);\\n      } catch {}\\n    }\\n    if (isPdfFile(filename)) {\\n      return filename;\\n    }\\n  }\\n  return null;\\n}\\n\\nfunction createResponseError(status, url) {\\n  return new ResponseException(\\n    `Unexpected server response (${status}) while retrieving PDF \\\"${url}\\\".`,\\n    status,\\n    \u002F* missing = *\u002F status === 404 || (status === 0 && url.startsWith(\\\"file:\\\"))\\n  );\\n}\\n\\nfunction validateResponseStatus(status) {\\n  return status === 200 || status === 206;\\n}\\n\\nexport {\\n  createHeaders,\\n  createResponseError,\\n  extractFilenameFromHeader,\\n  getResponseOrigin,\\n  validateRangeRequestCapabilities,\\n  validateResponseStatus,\\n};\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { AbortException, assert, warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  createHeaders,\\n  createResponseError,\\n  extractFilenameFromHeader,\\n  getResponseOrigin,\\n  validateRangeRequestCapabilities,\\n  validateResponseStatus,\\n} from \\\".\u002Fnetwork_utils.js\\\";\\n\\nif (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n  throw new Error(\\n    'Module \\\".\u002Ffetch_stream.js\\\" shall not be used with MOZCENTRAL builds.'\\n  );\\n}\\n\\nfunction createFetchOptions(headers, withCredentials, abortController) {\\n  return {\\n    method: \\\"GET\\\",\\n    headers,\\n    signal: abortController.signal,\\n    mode: \\\"cors\\\",\\n    credentials: withCredentials ? \\\"include\\\" : \\\"same-origin\\\",\\n    redirect: \\\"follow\\\",\\n  };\\n}\\n\\nfunction getArrayBuffer(val) {\\n  if (val instanceof Uint8Array) {\\n    return val.buffer;\\n  }\\n  if (val instanceof ArrayBuffer) {\\n    return val;\\n  }\\n  warn(`getArrayBuffer - unexpected data format: ${val}`);\\n  return new Uint8Array(val).buffer;\\n}\\n\\n\u002F** @implements {IPDFStream} *\u002F\\nclass PDFFetchStream {\\n  _responseOrigin = null;\\n\\n  constructor(source) {\\n    this.source = source;\\n    this.isHttp = \u002F^https?:\u002Fi.test(source.url);\\n    this.headers = createHeaders(this.isHttp, source.httpHeaders);\\n\\n    this._fullRequestReader = null;\\n    this._rangeRequestReaders = [];\\n  }\\n\\n  get _progressiveDataLength() {\\n    return this._fullRequestReader?._loaded ?? 0;\\n  }\\n\\n  getFullReader() {\\n    assert(\\n      !this._fullRequestReader,\\n      \\\"PDFFetchStream.getFullReader can only be called once.\\\"\\n    );\\n    this._fullRequestReader = new PDFFetchStreamReader(this);\\n    return this._fullRequestReader;\\n  }\\n\\n  getRangeReader(begin, end) {\\n    if (end \u003C= this._progressiveDataLength) {\\n      return null;\\n    }\\n    const reader = new PDFFetchStreamRangeReader(this, begin, end);\\n    this._rangeRequestReaders.push(reader);\\n    return reader;\\n  }\\n\\n  cancelAllRequests(reason) {\\n    this._fullRequestReader?.cancel(reason);\\n\\n    for (const reader of this._rangeRequestReaders.slice(0)) {\\n      reader.cancel(reason);\\n    }\\n  }\\n}\\n\\n\u002F** @implements {IPDFStreamReader} *\u002F\\nclass PDFFetchStreamReader {\\n  constructor(stream) {\\n    this._stream = stream;\\n    this._reader = null;\\n    this._loaded = 0;\\n    this._filename = null;\\n    const source = stream.source;\\n    this._withCredentials = source.withCredentials || false;\\n    this._contentLength = source.length;\\n    this._headersCapability = Promise.withResolvers();\\n    this._disableRange = source.disableRange || false;\\n    this._rangeChunkSize = source.rangeChunkSize;\\n    if (!this._rangeChunkSize && !this._disableRange) {\\n      this._disableRange = true;\\n    }\\n\\n    this._abortController = new AbortController();\\n    this._isStreamingSupported = !source.disableStream;\\n    this._isRangeSupported = !source.disableRange;\\n    \u002F\u002F Always create a copy of the headers.\\n    const headers = new Headers(stream.headers);\\n\\n    const url = source.url;\\n    fetch(\\n      url,\\n      createFetchOptions(headers, this._withCredentials, this._abortController)\\n    )\\n      .then(response => {\\n        stream._responseOrigin = getResponseOrigin(response.url);\\n\\n        if (!validateResponseStatus(response.status)) {\\n          throw createResponseError(response.status, url);\\n        }\\n        this._reader = response.body.getReader();\\n        this._headersCapability.resolve();\\n\\n        const responseHeaders = response.headers;\\n\\n        const { allowRangeRequests, suggestedLength } =\\n          validateRangeRequestCapabilities({\\n            responseHeaders,\\n            isHttp: stream.isHttp,\\n            rangeChunkSize: this._rangeChunkSize,\\n            disableRange: this._disableRange,\\n          });\\n\\n        this._isRangeSupported = allowRangeRequests;\\n        \u002F\u002F Setting right content length.\\n        this._contentLength = suggestedLength || this._contentLength;\\n\\n        this._filename = extractFilenameFromHeader(responseHeaders);\\n\\n        \u002F\u002F We need to stop reading when range is supported and streaming is\\n        \u002F\u002F disabled.\\n        if (!this._isStreamingSupported && this._isRangeSupported) {\\n          this.cancel(new AbortException(\\\"Streaming is disabled.\\\"));\\n        }\\n      })\\n      .catch(this._headersCapability.reject);\\n\\n    this.onProgress = null;\\n  }\\n\\n  get headersReady() {\\n    return this._headersCapability.promise;\\n  }\\n\\n  get filename() {\\n    return this._filename;\\n  }\\n\\n  get contentLength() {\\n    return this._contentLength;\\n  }\\n\\n  get isRangeSupported() {\\n    return this._isRangeSupported;\\n  }\\n\\n  get isStreamingSupported() {\\n    return this._isStreamingSupported;\\n  }\\n\\n  async read() {\\n    await this._headersCapability.promise;\\n    const { value, done } = await this._reader.read();\\n    if (done) {\\n      return { value, done };\\n    }\\n    this._loaded += value.byteLength;\\n    this.onProgress?.({\\n      loaded: this._loaded,\\n      total: this._contentLength,\\n    });\\n\\n    return { value: getArrayBuffer(value), done: false };\\n  }\\n\\n  cancel(reason) {\\n    this._reader?.cancel(reason);\\n    this._abortController.abort();\\n  }\\n}\\n\\n\u002F** @implements {IPDFStreamRangeReader} *\u002F\\nclass PDFFetchStreamRangeReader {\\n  constructor(stream, begin, end) {\\n    this._stream = stream;\\n    this._reader = null;\\n    this._loaded = 0;\\n    const source = stream.source;\\n    this._withCredentials = source.withCredentials || false;\\n    this._readCapability = Promise.withResolvers();\\n    this._isStreamingSupported = !source.disableStream;\\n\\n    this._abortController = new AbortController();\\n    \u002F\u002F Always create a copy of the headers.\\n    const headers = new Headers(stream.headers);\\n    headers.append(\\\"Range\\\", `bytes=${begin}-${end - 1}`);\\n\\n    const url = source.url;\\n    fetch(\\n      url,\\n      createFetchOptions(headers, this._withCredentials, this._abortController)\\n    )\\n      .then(response => {\\n        const responseOrigin = getResponseOrigin(response.url);\\n\\n        if (responseOrigin !== stream._responseOrigin) {\\n          throw new Error(\\n            `Expected range response-origin \\\"${responseOrigin}\\\" to match \\\"${stream._responseOrigin}\\\".`\\n          );\\n        }\\n        if (!validateResponseStatus(response.status)) {\\n          throw createResponseError(response.status, url);\\n        }\\n        this._readCapability.resolve();\\n        this._reader = response.body.getReader();\\n      })\\n      .catch(this._readCapability.reject);\\n\\n    this.onProgress = null;\\n  }\\n\\n  get isStreamingSupported() {\\n    return this._isStreamingSupported;\\n  }\\n\\n  async read() {\\n    await this._readCapability.promise;\\n    const { value, done } = await this._reader.read();\\n    if (done) {\\n      return { value, done };\\n    }\\n    this._loaded += value.byteLength;\\n    this.onProgress?.({ loaded: this._loaded });\\n\\n    return { value: getArrayBuffer(value), done: false };\\n  }\\n\\n  cancel(reason) {\\n    this._reader?.cancel(reason);\\n    this._abortController.abort();\\n  }\\n}\\n\\nexport { PDFFetchStream };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { assert, stringToBytes, warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  createHeaders,\\n  createResponseError,\\n  extractFilenameFromHeader,\\n  getResponseOrigin,\\n  validateRangeRequestCapabilities,\\n} from \\\".\u002Fnetwork_utils.js\\\";\\n\\nif (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n  throw new Error(\\n    'Module \\\".\u002Fnetwork.js\\\" shall not be used with MOZCENTRAL builds.'\\n  );\\n}\\n\\nconst OK_RESPONSE = 200;\\nconst PARTIAL_CONTENT_RESPONSE = 206;\\n\\nfunction getArrayBuffer(xhr) {\\n  const data = xhr.response;\\n  if (typeof data !== \\\"string\\\") {\\n    return data;\\n  }\\n  return stringToBytes(data).buffer;\\n}\\n\\nclass NetworkManager {\\n  _responseOrigin = null;\\n\\n  constructor({ url, httpHeaders, withCredentials }) {\\n    this.url = url;\\n    this.isHttp = \u002F^https?:\u002Fi.test(url);\\n    this.headers = createHeaders(this.isHttp, httpHeaders);\\n    this.withCredentials = withCredentials || false;\\n\\n    this.currXhrId = 0;\\n    this.pendingRequests = Object.create(null);\\n  }\\n\\n  request(args) {\\n    const xhr = new XMLHttpRequest();\\n    const xhrId = this.currXhrId++;\\n    const pendingRequest = (this.pendingRequests[xhrId] = { xhr });\\n\\n    xhr.open(\\\"GET\\\", this.url);\\n    xhr.withCredentials = this.withCredentials;\\n    for (const [key, val] of this.headers) {\\n      xhr.setRequestHeader(key, val);\\n    }\\n    if (this.isHttp && \\\"begin\\\" in args && \\\"end\\\" in args) {\\n      xhr.setRequestHeader(\\\"Range\\\", `bytes=${args.begin}-${args.end - 1}`);\\n      pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\\n    } else {\\n      pendingRequest.expectedStatus = OK_RESPONSE;\\n    }\\n    xhr.responseType = \\\"arraybuffer\\\";\\n\\n    assert(args.onError, \\\"Expected `onError` callback to be provided.\\\");\\n    xhr.onerror = () => {\\n      args.onError(xhr.status);\\n    };\\n    xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\\n    xhr.onprogress = this.onProgress.bind(this, xhrId);\\n\\n    pendingRequest.onHeadersReceived = args.onHeadersReceived;\\n    pendingRequest.onDone = args.onDone;\\n    pendingRequest.onError = args.onError;\\n    pendingRequest.onProgress = args.onProgress;\\n\\n    xhr.send(null);\\n\\n    return xhrId;\\n  }\\n\\n  onProgress(xhrId, evt) {\\n    const pendingRequest = this.pendingRequests[xhrId];\\n    if (!pendingRequest) {\\n      return; \u002F\u002F Maybe abortRequest was called...\\n    }\\n    pendingRequest.onProgress?.(evt);\\n  }\\n\\n  onStateChange(xhrId, evt) {\\n    const pendingRequest = this.pendingRequests[xhrId];\\n    if (!pendingRequest) {\\n      return; \u002F\u002F Maybe abortRequest was called...\\n    }\\n\\n    const xhr = pendingRequest.xhr;\\n    if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\\n      pendingRequest.onHeadersReceived();\\n      delete pendingRequest.onHeadersReceived;\\n    }\\n\\n    if (xhr.readyState !== 4) {\\n      return;\\n    }\\n\\n    if (!(xhrId in this.pendingRequests)) {\\n      \u002F\u002F The XHR request might have been aborted in onHeadersReceived()\\n      \u002F\u002F callback, in which case we should abort request.\\n      return;\\n    }\\n\\n    delete this.pendingRequests[xhrId];\\n\\n    \u002F\u002F Success status == 0 can be on ftp, file and other protocols.\\n    if (xhr.status === 0 && this.isHttp) {\\n      pendingRequest.onError(xhr.status);\\n      return;\\n    }\\n    const xhrStatus = xhr.status || OK_RESPONSE;\\n\\n    \u002F\u002F From http:\u002F\u002Fwww.w3.org\u002FProtocols\u002Frfc2616\u002Frfc2616-sec14.html#sec14.35.2:\\n    \u002F\u002F \\\"A server MAY ignore the Range header\\\". This means it's possible to\\n    \u002F\u002F get a 200 rather than a 206 response from a range request.\\n    const ok_response_on_range_request =\\n      xhrStatus === OK_RESPONSE &&\\n      pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\\n\\n    if (\\n      !ok_response_on_range_request &&\\n      xhrStatus !== pendingRequest.expectedStatus\\n    ) {\\n      pendingRequest.onError(xhr.status);\\n      return;\\n    }\\n\\n    const chunk = getArrayBuffer(xhr);\\n    if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\\n      const rangeHeader = xhr.getResponseHeader(\\\"Content-Range\\\");\\n      const matches = \u002Fbytes (\\\\d+)-(\\\\d+)\\\\\u002F(\\\\d+)\u002F.exec(rangeHeader);\\n      if (matches) {\\n        pendingRequest.onDone({\\n          begin: parseInt(matches[1], 10),\\n          chunk,\\n        });\\n      } else {\\n        warn(`Missing or invalid \\\"Content-Range\\\" header.`);\\n        pendingRequest.onError(0);\\n      }\\n    } else if (chunk) {\\n      pendingRequest.onDone({\\n        begin: 0,\\n        chunk,\\n      });\\n    } else {\\n      pendingRequest.onError(xhr.status);\\n    }\\n  }\\n\\n  getRequestXhr(xhrId) {\\n    return this.pendingRequests[xhrId].xhr;\\n  }\\n\\n  isPendingRequest(xhrId) {\\n    return xhrId in this.pendingRequests;\\n  }\\n\\n  abortRequest(xhrId) {\\n    const xhr = this.pendingRequests[xhrId].xhr;\\n    delete this.pendingRequests[xhrId];\\n    xhr.abort();\\n  }\\n}\\n\\n\u002F** @implements {IPDFStream} *\u002F\\nclass PDFNetworkStream {\\n  constructor(source) {\\n    this._source = source;\\n    this._manager = new NetworkManager(source);\\n    this._rangeChunkSize = source.rangeChunkSize;\\n    this._fullRequestReader = null;\\n    this._rangeRequestReaders = [];\\n  }\\n\\n  _onRangeRequestReaderClosed(reader) {\\n    const i = this._rangeRequestReaders.indexOf(reader);\\n    if (i >= 0) {\\n      this._rangeRequestReaders.splice(i, 1);\\n    }\\n  }\\n\\n  getFullReader() {\\n    assert(\\n      !this._fullRequestReader,\\n      \\\"PDFNetworkStream.getFullReader can only be called once.\\\"\\n    );\\n    this._fullRequestReader = new PDFNetworkStreamFullRequestReader(\\n      this._manager,\\n      this._source\\n    );\\n    return this._fullRequestReader;\\n  }\\n\\n  getRangeReader(begin, end) {\\n    const reader = new PDFNetworkStreamRangeRequestReader(\\n      this._manager,\\n      begin,\\n      end\\n    );\\n    reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\\n    this._rangeRequestReaders.push(reader);\\n    return reader;\\n  }\\n\\n  cancelAllRequests(reason) {\\n    this._fullRequestReader?.cancel(reason);\\n\\n    for (const reader of this._rangeRequestReaders.slice(0)) {\\n      reader.cancel(reason);\\n    }\\n  }\\n}\\n\\n\u002F** @implements {IPDFStreamReader} *\u002F\\nclass PDFNetworkStreamFullRequestReader {\\n  constructor(manager, source) {\\n    this._manager = manager;\\n\\n    this._url = source.url;\\n    this._fullRequestId = manager.request({\\n      onHeadersReceived: this._onHeadersReceived.bind(this),\\n      onDone: this._onDone.bind(this),\\n      onError: this._onError.bind(this),\\n      onProgress: this._onProgress.bind(this),\\n    });\\n    this._headersCapability = Promise.withResolvers();\\n    this._disableRange = source.disableRange || false;\\n    this._contentLength = source.length; \u002F\u002F Optional\\n    this._rangeChunkSize = source.rangeChunkSize;\\n    if (!this._rangeChunkSize && !this._disableRange) {\\n      this._disableRange = true;\\n    }\\n\\n    this._isStreamingSupported = false;\\n    this._isRangeSupported = false;\\n\\n    this._cachedChunks = [];\\n    this._requests = [];\\n    this._done = false;\\n    this._storedError = undefined;\\n    this._filename = null;\\n\\n    this.onProgress = null;\\n  }\\n\\n  _onHeadersReceived() {\\n    const fullRequestXhrId = this._fullRequestId;\\n    const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\\n\\n    this._manager._responseOrigin = getResponseOrigin(\\n      fullRequestXhr.responseURL\\n    );\\n\\n    const rawResponseHeaders = fullRequestXhr.getAllResponseHeaders();\\n    const responseHeaders = new Headers(\\n      rawResponseHeaders\\n        ? rawResponseHeaders\\n            .trimStart()\\n            .replace(\u002F[^\\\\S ]+$\u002F, \\\"\\\") \u002F\u002F Not `trimEnd`, to keep regular spaces.\\n            .split(\u002F[\\\\r\\\\n]+\u002F)\\n            .map(x => {\\n              const [key, ...val] = x.split(\\\": \\\");\\n              return [key, val.join(\\\": \\\")];\\n            })\\n        : []\\n    );\\n\\n    const { allowRangeRequests, suggestedLength } =\\n      validateRangeRequestCapabilities({\\n        responseHeaders,\\n        isHttp: this._manager.isHttp,\\n        rangeChunkSize: this._rangeChunkSize,\\n        disableRange: this._disableRange,\\n      });\\n\\n    if (allowRangeRequests) {\\n      this._isRangeSupported = true;\\n    }\\n    \u002F\u002F Setting right content length.\\n    this._contentLength = suggestedLength || this._contentLength;\\n\\n    this._filename = extractFilenameFromHeader(responseHeaders);\\n\\n    if (this._isRangeSupported) {\\n      \u002F\u002F NOTE: by cancelling the full request, and then issuing range\\n      \u002F\u002F requests, there will be an issue for sites where you can only\\n      \u002F\u002F request the pdf once. However, if this is the case, then the\\n      \u002F\u002F server should not be returning that it can support range requests.\\n      this._manager.abortRequest(fullRequestXhrId);\\n    }\\n\\n    this._headersCapability.resolve();\\n  }\\n\\n  _onDone(data) {\\n    if (data) {\\n      if (this._requests.length > 0) {\\n        const requestCapability = this._requests.shift();\\n        requestCapability.resolve({ value: data.chunk, done: false });\\n      } else {\\n        this._cachedChunks.push(data.chunk);\\n      }\\n    }\\n    this._done = true;\\n    if (this._cachedChunks.length > 0) {\\n      return;\\n    }\\n    for (const requestCapability of this._requests) {\\n      requestCapability.resolve({ value: undefined, done: true });\\n    }\\n    this._requests.length = 0;\\n  }\\n\\n  _onError(status) {\\n    this._storedError = createResponseError(status, this._url);\\n    this._headersCapability.reject(this._storedError);\\n    for (const requestCapability of this._requests) {\\n      requestCapability.reject(this._storedError);\\n    }\\n    this._requests.length = 0;\\n    this._cachedChunks.length = 0;\\n  }\\n\\n  _onProgress(evt) {\\n    this.onProgress?.({\\n      loaded: evt.loaded,\\n      total: evt.lengthComputable ? evt.total : this._contentLength,\\n    });\\n  }\\n\\n  get filename() {\\n    return this._filename;\\n  }\\n\\n  get isRangeSupported() {\\n    return this._isRangeSupported;\\n  }\\n\\n  get isStreamingSupported() {\\n    return this._isStreamingSupported;\\n  }\\n\\n  get contentLength() {\\n    return this._contentLength;\\n  }\\n\\n  get headersReady() {\\n    return this._headersCapability.promise;\\n  }\\n\\n  async read() {\\n    await this._headersCapability.promise;\\n\\n    if (this._storedError) {\\n      throw this._storedError;\\n    }\\n    if (this._cachedChunks.length > 0) {\\n      const chunk = this._cachedChunks.shift();\\n      return { value: chunk, done: false };\\n    }\\n    if (this._done) {\\n      return { value: undefined, done: true };\\n    }\\n    const requestCapability = Promise.withResolvers();\\n    this._requests.push(requestCapability);\\n    return requestCapability.promise;\\n  }\\n\\n  cancel(reason) {\\n    this._done = true;\\n    this._headersCapability.reject(reason);\\n    for (const requestCapability of this._requests) {\\n      requestCapability.resolve({ value: undefined, done: true });\\n    }\\n    this._requests.length = 0;\\n    if (this._manager.isPendingRequest(this._fullRequestId)) {\\n      this._manager.abortRequest(this._fullRequestId);\\n    }\\n    this._fullRequestReader = null;\\n  }\\n}\\n\\n\u002F** @implements {IPDFStreamRangeReader} *\u002F\\nclass PDFNetworkStreamRangeRequestReader {\\n  constructor(manager, begin, end) {\\n    this._manager = manager;\\n\\n    this._url = manager.url;\\n    this._requestId = manager.request({\\n      begin,\\n      end,\\n      onHeadersReceived: this._onHeadersReceived.bind(this),\\n      onDone: this._onDone.bind(this),\\n      onError: this._onError.bind(this),\\n      onProgress: this._onProgress.bind(this),\\n    });\\n    this._requests = [];\\n    this._queuedChunk = null;\\n    this._done = false;\\n    this._storedError = undefined;\\n\\n    this.onProgress = null;\\n    this.onClosed = null;\\n  }\\n\\n  _onHeadersReceived() {\\n    const responseOrigin = getResponseOrigin(\\n      this._manager.getRequestXhr(this._requestId)?.responseURL\\n    );\\n\\n    if (responseOrigin !== this._manager._responseOrigin) {\\n      this._storedError = new Error(\\n        `Expected range response-origin \\\"${responseOrigin}\\\" to match \\\"${this._manager._responseOrigin}\\\".`\\n      );\\n      this._onError(0);\\n    }\\n  }\\n\\n  _close() {\\n    this.onClosed?.(this);\\n  }\\n\\n  _onDone(data) {\\n    const chunk = data.chunk;\\n    if (this._requests.length > 0) {\\n      const requestCapability = this._requests.shift();\\n      requestCapability.resolve({ value: chunk, done: false });\\n    } else {\\n      this._queuedChunk = chunk;\\n    }\\n    this._done = true;\\n    for (const requestCapability of this._requests) {\\n      requestCapability.resolve({ value: undefined, done: true });\\n    }\\n    this._requests.length = 0;\\n    this._close();\\n  }\\n\\n  _onError(status) {\\n    this._storedError ??= createResponseError(status, this._url);\\n    for (const requestCapability of this._requests) {\\n      requestCapability.reject(this._storedError);\\n    }\\n    this._requests.length = 0;\\n    this._queuedChunk = null;\\n  }\\n\\n  _onProgress(evt) {\\n    if (!this.isStreamingSupported) {\\n      this.onProgress?.({ loaded: evt.loaded });\\n    }\\n  }\\n\\n  get isStreamingSupported() {\\n    return false;\\n  }\\n\\n  async read() {\\n    if (this._storedError) {\\n      throw this._storedError;\\n    }\\n    if (this._queuedChunk !== null) {\\n      const chunk = this._queuedChunk;\\n      this._queuedChunk = null;\\n      return { value: chunk, done: false };\\n    }\\n    if (this._done) {\\n      return { value: undefined, done: true };\\n    }\\n    const requestCapability = Promise.withResolvers();\\n    this._requests.push(requestCapability);\\n    return requestCapability.promise;\\n  }\\n\\n  cancel(reason) {\\n    this._done = true;\\n    for (const requestCapability of this._requests) {\\n      requestCapability.resolve({ value: undefined, done: true });\\n    }\\n    this._requests.length = 0;\\n    if (this._manager.isPendingRequest(this._requestId)) {\\n      this._manager.abortRequest(this._requestId);\\n    }\\n    this._close();\\n  }\\n}\\n\\nexport { PDFNetworkStream };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\u002F* globals process *\u002F\\n\\nimport { AbortException, assert } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { createResponseError } from \\\".\u002Fnetwork_utils.js\\\";\\n\\nif (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n  throw new Error(\\n    'Module \\\".\u002Fnode_stream.js\\\" shall not be used with MOZCENTRAL builds.'\\n  );\\n}\\n\\nconst urlRegex = \u002F^[a-z][a-z0-9\\\\-+.]+:\u002Fi;\\n\\nfunction parseUrlOrPath(sourceUrl) {\\n  if (urlRegex.test(sourceUrl)) {\\n    return new URL(sourceUrl);\\n  }\\n  const url = process.getBuiltinModule(\\\"url\\\");\\n  return new URL(url.pathToFileURL(sourceUrl));\\n}\\n\\nclass PDFNodeStream {\\n  constructor(source) {\\n    this.source = source;\\n    this.url = parseUrlOrPath(source.url);\\n    assert(\\n      this.url.protocol === \\\"file:\\\",\\n      \\\"PDFNodeStream only supports file:\u002F\u002F URLs.\\\"\\n    );\\n\\n    this._fullRequestReader = null;\\n    this._rangeRequestReaders = [];\\n  }\\n\\n  get _progressiveDataLength() {\\n    return this._fullRequestReader?._loaded ?? 0;\\n  }\\n\\n  getFullReader() {\\n    assert(\\n      !this._fullRequestReader,\\n      \\\"PDFNodeStream.getFullReader can only be called once.\\\"\\n    );\\n    this._fullRequestReader = new PDFNodeStreamFsFullReader(this);\\n    return this._fullRequestReader;\\n  }\\n\\n  getRangeReader(start, end) {\\n    if (end \u003C= this._progressiveDataLength) {\\n      return null;\\n    }\\n    const rangeReader = new PDFNodeStreamFsRangeReader(this, start, end);\\n    this._rangeRequestReaders.push(rangeReader);\\n    return rangeReader;\\n  }\\n\\n  cancelAllRequests(reason) {\\n    this._fullRequestReader?.cancel(reason);\\n\\n    for (const reader of this._rangeRequestReaders.slice(0)) {\\n      reader.cancel(reason);\\n    }\\n  }\\n}\\n\\nclass PDFNodeStreamFsFullReader {\\n  constructor(stream) {\\n    this._url = stream.url;\\n    this._done = false;\\n    this._storedError = null;\\n    this.onProgress = null;\\n    const source = stream.source;\\n    this._contentLength = source.length; \u002F\u002F optional\\n    this._loaded = 0;\\n    this._filename = null;\\n\\n    this._disableRange = source.disableRange || false;\\n    this._rangeChunkSize = source.rangeChunkSize;\\n    if (!this._rangeChunkSize && !this._disableRange) {\\n      this._disableRange = true;\\n    }\\n\\n    this._isStreamingSupported = !source.disableStream;\\n    this._isRangeSupported = !source.disableRange;\\n\\n    this._readableStream = null;\\n    this._readCapability = Promise.withResolvers();\\n    this._headersCapability = Promise.withResolvers();\\n\\n    const fs = process.getBuiltinModule(\\\"fs\\\");\\n    fs.promises.lstat(this._url).then(\\n      stat => {\\n        \u002F\u002F Setting right content length.\\n        this._contentLength = stat.size;\\n\\n        this._setReadableStream(fs.createReadStream(this._url));\\n        this._headersCapability.resolve();\\n      },\\n      error => {\\n        if (error.code === \\\"ENOENT\\\") {\\n          error = createResponseError(\u002F* status = *\u002F 0, this._url.href);\\n        }\\n        this._storedError = error;\\n        this._headersCapability.reject(error);\\n      }\\n    );\\n  }\\n\\n  get headersReady() {\\n    return this._headersCapability.promise;\\n  }\\n\\n  get filename() {\\n    return this._filename;\\n  }\\n\\n  get contentLength() {\\n    return this._contentLength;\\n  }\\n\\n  get isRangeSupported() {\\n    return this._isRangeSupported;\\n  }\\n\\n  get isStreamingSupported() {\\n    return this._isStreamingSupported;\\n  }\\n\\n  async read() {\\n    await this._readCapability.promise;\\n    if (this._done) {\\n      return { value: undefined, done: true };\\n    }\\n    if (this._storedError) {\\n      throw this._storedError;\\n    }\\n\\n    const chunk = this._readableStream.read();\\n    if (chunk === null) {\\n      this._readCapability = Promise.withResolvers();\\n      return this.read();\\n    }\\n    this._loaded += chunk.length;\\n    this.onProgress?.({\\n      loaded: this._loaded,\\n      total: this._contentLength,\\n    });\\n\\n    \u002F\u002F Ensure that `read()` method returns ArrayBuffer.\\n    const buffer = new Uint8Array(chunk).buffer;\\n    return { value: buffer, done: false };\\n  }\\n\\n  cancel(reason) {\\n    \u002F\u002F Call `this._error()` method when cancel is called\\n    \u002F\u002F before _readableStream is set.\\n    if (!this._readableStream) {\\n      this._error(reason);\\n      return;\\n    }\\n    this._readableStream.destroy(reason);\\n  }\\n\\n  _error(reason) {\\n    this._storedError = reason;\\n    this._readCapability.resolve();\\n  }\\n\\n  _setReadableStream(readableStream) {\\n    this._readableStream = readableStream;\\n    readableStream.on(\\\"readable\\\", () => {\\n      this._readCapability.resolve();\\n    });\\n\\n    readableStream.on(\\\"end\\\", () => {\\n      \u002F\u002F Destroy readable to minimize resource usage.\\n      readableStream.destroy();\\n      this._done = true;\\n      this._readCapability.resolve();\\n    });\\n\\n    readableStream.on(\\\"error\\\", reason => {\\n      this._error(reason);\\n    });\\n\\n    \u002F\u002F We need to stop reading when range is supported and streaming is\\n    \u002F\u002F disabled.\\n    if (!this._isStreamingSupported && this._isRangeSupported) {\\n      this._error(new AbortException(\\\"streaming is disabled\\\"));\\n    }\\n\\n    \u002F\u002F Destroy ReadableStream if already in errored state.\\n    if (this._storedError) {\\n      this._readableStream.destroy(this._storedError);\\n    }\\n  }\\n}\\n\\nclass PDFNodeStreamFsRangeReader {\\n  constructor(stream, start, end) {\\n    this._url = stream.url;\\n    this._done = false;\\n    this._storedError = null;\\n    this.onProgress = null;\\n    this._loaded = 0;\\n    this._readableStream = null;\\n    this._readCapability = Promise.withResolvers();\\n    const source = stream.source;\\n    this._isStreamingSupported = !source.disableStream;\\n\\n    const fs = process.getBuiltinModule(\\\"fs\\\");\\n    this._setReadableStream(\\n      fs.createReadStream(this._url, { start, end: end - 1 })\\n    );\\n  }\\n\\n  get isStreamingSupported() {\\n    return this._isStreamingSupported;\\n  }\\n\\n  async read() {\\n    await this._readCapability.promise;\\n    if (this._done) {\\n      return { value: undefined, done: true };\\n    }\\n    if (this._storedError) {\\n      throw this._storedError;\\n    }\\n\\n    const chunk = this._readableStream.read();\\n    if (chunk === null) {\\n      this._readCapability = Promise.withResolvers();\\n      return this.read();\\n    }\\n    this._loaded += chunk.length;\\n    this.onProgress?.({ loaded: this._loaded });\\n\\n    \u002F\u002F Ensure that `read()` method returns ArrayBuffer.\\n    const buffer = new Uint8Array(chunk).buffer;\\n    return { value: buffer, done: false };\\n  }\\n\\n  cancel(reason) {\\n    \u002F\u002F Call `this._error()` method when cancel is called\\n    \u002F\u002F before _readableStream is set.\\n    if (!this._readableStream) {\\n      this._error(reason);\\n      return;\\n    }\\n    this._readableStream.destroy(reason);\\n  }\\n\\n  _error(reason) {\\n    this._storedError = reason;\\n    this._readCapability.resolve();\\n  }\\n\\n  _setReadableStream(readableStream) {\\n    this._readableStream = readableStream;\\n    readableStream.on(\\\"readable\\\", () => {\\n      this._readCapability.resolve();\\n    });\\n\\n    readableStream.on(\\\"end\\\", () => {\\n      \u002F\u002F Destroy readableStream to minimize resource usage.\\n      readableStream.destroy();\\n      this._done = true;\\n      this._readCapability.resolve();\\n    });\\n\\n    readableStream.on(\\\"error\\\", reason => {\\n      this._error(reason);\\n    });\\n\\n    \u002F\u002F Destroy readableStream if already in errored state.\\n    if (this._storedError) {\\n      this._readableStream.destroy(this._storedError);\\n    }\\n  }\\n}\\n\\nexport { PDFNodeStream };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nconst INITIAL_DATA = Symbol(\\\"INITIAL_DATA\\\");\\n\\n\u002F**\\n * A PDF document and page is built of many objects. E.g. there are objects for\\n * fonts, images, rendering code, etc. These objects may get processed inside of\\n * a worker. This class implements some basic methods to manage these objects.\\n *\u002F\\nclass PDFObjects {\\n  #objs = Object.create(null);\\n\\n  \u002F**\\n   * Ensures there is an object defined for `objId`.\\n   *\\n   * @param {string} objId\\n   * @returns {Object}\\n   *\u002F\\n  #ensureObj(objId) {\\n    return (this.#objs[objId] ||= {\\n      ...Promise.withResolvers(),\\n      data: INITIAL_DATA,\\n    });\\n  }\\n\\n  \u002F**\\n   * If called *without* callback, this returns the data of `objId` but the\\n   * object needs to be resolved. If it isn't, this method throws.\\n   *\\n   * If called *with* a callback, the callback is called with the data of the\\n   * object once the object is resolved. That means, if you call this method\\n   * and the object is already resolved, the callback gets called right away.\\n   *\\n   * @param {string} objId\\n   * @param {function} [callback]\\n   * @returns {any}\\n   *\u002F\\n  get(objId, callback = null) {\\n    \u002F\u002F If there is a callback, then the get can be async and the object is\\n    \u002F\u002F not required to be resolved right now.\\n    if (callback) {\\n      const obj = this.#ensureObj(objId);\\n      obj.promise.then(() => callback(obj.data));\\n      return null;\\n    }\\n    \u002F\u002F If there isn't a callback, the user expects to get the resolved data\\n    \u002F\u002F directly.\\n    const obj = this.#objs[objId];\\n    \u002F\u002F If there isn't an object yet or the object isn't resolved, then the\\n    \u002F\u002F data isn't ready yet!\\n    if (!obj || obj.data === INITIAL_DATA) {\\n      throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\\n    }\\n    return obj.data;\\n  }\\n\\n  \u002F**\\n   * @param {string} objId\\n   * @returns {boolean}\\n   *\u002F\\n  has(objId) {\\n    const obj = this.#objs[objId];\\n    return !!obj && obj.data !== INITIAL_DATA;\\n  }\\n\\n  \u002F**\\n   * @param {string} objId\\n   * @returns {boolean}\\n   *\u002F\\n  delete(objId) {\\n    const obj = this.#objs[objId];\\n    if (!obj || obj.data === INITIAL_DATA) {\\n      \u002F\u002F Only allow removing the object *after* it's been resolved.\\n      return false;\\n    }\\n    delete this.#objs[objId];\\n    return true;\\n  }\\n\\n  \u002F**\\n   * Resolves the object `objId` with optional `data`.\\n   *\\n   * @param {string} objId\\n   * @param {any} [data]\\n   *\u002F\\n  resolve(objId, data = null) {\\n    const obj = this.#ensureObj(objId);\\n    obj.data = data;\\n    obj.resolve();\\n  }\\n\\n  clear() {\\n    for (const objId in this.#objs) {\\n      const { data } = this.#objs[objId];\\n      data?.bitmap?.close(); \u002F\u002F Release any `ImageBitmap` data.\\n    }\\n    this.#objs = Object.create(null);\\n  }\\n\\n  *[Symbol.iterator]() {\\n    for (const objId in this.#objs) {\\n      const { data } = this.#objs[objId];\\n\\n      if (data === INITIAL_DATA) {\\n        continue;\\n      }\\n      yield [objId, data];\\n    }\\n  }\\n}\\n\\nexport { PDFObjects };\\n\",\"\u002F* Copyright 2015 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fdisplay_utils\\\").PageViewport} PageViewport *\u002F\\n\u002F** @typedef {import(\\\".\u002Fapi\\\").TextContent} TextContent *\u002F\\n\\nimport {\\n  AbortException,\\n  FeatureTest,\\n  shadow,\\n  Util,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { OutputScale, setLayerDimensions } from \\\".\u002Fdisplay_utils.js\\\";\\n\\n\u002F**\\n * @typedef {Object} TextLayerParameters\\n * @property {ReadableStream | TextContent} textContentSource - Text content to\\n *   render, i.e. the value returned by the page's `streamTextContent` or\\n *   `getTextContent` method.\\n * @property {HTMLElement} container - The DOM node that will contain the text\\n *   runs.\\n * @property {PageViewport} viewport - The target viewport to properly layout\\n *   the text runs.\\n *\u002F\\n\\n\u002F**\\n * @typedef {Object} TextLayerUpdateParameters\\n * @property {PageViewport} viewport - The target viewport to properly layout\\n *   the text runs.\\n * @property {function} [onBefore] - Callback invoked before the textLayer is\\n *   updated in the DOM.\\n *\u002F\\n\\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\\nconst DEFAULT_FONT_SIZE = 30;\\n\\nclass TextLayer {\\n  #capability = Promise.withResolvers();\\n\\n  #container = null;\\n\\n  #disableProcessItems = false;\\n\\n  #fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\\n\\n  #lang = null;\\n\\n  #layoutTextParams = null;\\n\\n  #pageHeight = 0;\\n\\n  #pageWidth = 0;\\n\\n  #reader = null;\\n\\n  #rootContainer = null;\\n\\n  #rotation = 0;\\n\\n  #scale = 0;\\n\\n  #styleCache = Object.create(null);\\n\\n  #textContentItemsStr = [];\\n\\n  #textContentSource = null;\\n\\n  #textDivs = [];\\n\\n  #textDivProperties = new WeakMap();\\n\\n  #transform = null;\\n\\n  static #ascentCache = new Map();\\n\\n  static #canvasContexts = new Map();\\n\\n  static #canvasCtxFonts = new WeakMap();\\n\\n  static #minFontSize = null;\\n\\n  static #pendingTextLayers = new Set();\\n\\n  \u002F**\\n   * @param {TextLayerParameters} options\\n   *\u002F\\n  constructor({ textContentSource, container, viewport }) {\\n    if (textContentSource instanceof ReadableStream) {\\n      this.#textContentSource = textContentSource;\\n    } else if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) &&\\n      typeof textContentSource === \\\"object\\\"\\n    ) {\\n      this.#textContentSource = new ReadableStream({\\n        start(controller) {\\n          controller.enqueue(textContentSource);\\n          controller.close();\\n        },\\n      });\\n    } else {\\n      throw new Error('No \\\"textContentSource\\\" parameter specified.');\\n    }\\n    this.#container = this.#rootContainer = container;\\n\\n    this.#scale = viewport.scale * OutputScale.pixelRatio;\\n    this.#rotation = viewport.rotation;\\n    this.#layoutTextParams = {\\n      div: null,\\n      properties: null,\\n      ctx: null,\\n    };\\n    const { pageWidth, pageHeight, pageX, pageY } = viewport.rawDims;\\n    this.#transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\\n    this.#pageWidth = pageWidth;\\n    this.#pageHeight = pageHeight;\\n\\n    TextLayer.#ensureMinFontSizeComputed();\\n\\n    setLayerDimensions(container, viewport);\\n\\n    \u002F\u002F Always clean-up the temporary canvas once rendering is no longer pending.\\n    this.#capability.promise\\n      .finally(() => {\\n        TextLayer.#pendingTextLayers.delete(this);\\n        this.#layoutTextParams = null;\\n        this.#styleCache = null;\\n      })\\n      .catch(() => {\\n        \u002F\u002F Avoid \\\"Uncaught promise\\\" messages in the console.\\n      });\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      \u002F\u002F For testing purposes.\\n      Object.defineProperty(this, \\\"pageWidth\\\", {\\n        get() {\\n          return this.#pageWidth;\\n        },\\n      });\\n      Object.defineProperty(this, \\\"pageHeight\\\", {\\n        get() {\\n          return this.#pageHeight;\\n        },\\n      });\\n    }\\n  }\\n\\n  static get fontFamilyMap() {\\n    const { isWindows, isFirefox } = FeatureTest.platform;\\n    return shadow(\\n      this,\\n      \\\"fontFamilyMap\\\",\\n      new Map([\\n        [\\n          \\\"sans-serif\\\",\\n          `${isWindows && isFirefox ? \\\"Calibri, \\\" : \\\"\\\"}sans-serif`,\\n        ],\\n        [\\n          \\\"monospace\\\",\\n          `${isWindows && isFirefox ? \\\"Lucida Console, \\\" : \\\"\\\"}monospace`,\\n        ],\\n      ])\\n    );\\n  }\\n\\n  \u002F**\\n   * Render the textLayer.\\n   * @returns {Promise}\\n   *\u002F\\n  render() {\\n    const pump = () => {\\n      this.#reader.read().then(({ value, done }) => {\\n        if (done) {\\n          this.#capability.resolve();\\n          return;\\n        }\\n        this.#lang ??= value.lang;\\n        Object.assign(this.#styleCache, value.styles);\\n        this.#processItems(value.items);\\n        pump();\\n      }, this.#capability.reject);\\n    };\\n    this.#reader = this.#textContentSource.getReader();\\n    TextLayer.#pendingTextLayers.add(this);\\n    pump();\\n\\n    return this.#capability.promise;\\n  }\\n\\n  \u002F**\\n   * Update a previously rendered textLayer, if necessary.\\n   * @param {TextLayerUpdateParameters} options\\n   * @returns {undefined}\\n   *\u002F\\n  update({ viewport, onBefore = null }) {\\n    const scale = viewport.scale * OutputScale.pixelRatio;\\n    const rotation = viewport.rotation;\\n\\n    if (rotation !== this.#rotation) {\\n      onBefore?.();\\n      this.#rotation = rotation;\\n      setLayerDimensions(this.#rootContainer, { rotation });\\n    }\\n\\n    if (scale !== this.#scale) {\\n      onBefore?.();\\n      this.#scale = scale;\\n      const params = {\\n        div: null,\\n        properties: null,\\n        ctx: TextLayer.#getCtx(this.#lang),\\n      };\\n      for (const div of this.#textDivs) {\\n        params.properties = this.#textDivProperties.get(div);\\n        params.div = div;\\n        this.#layout(params);\\n      }\\n    }\\n  }\\n\\n  \u002F**\\n   * Cancel rendering of the textLayer.\\n   * @returns {undefined}\\n   *\u002F\\n  cancel() {\\n    const abortEx = new AbortException(\\\"TextLayer task cancelled.\\\");\\n\\n    this.#reader?.cancel(abortEx).catch(() => {\\n      \u002F\u002F Avoid \\\"Uncaught promise\\\" messages in the console.\\n    });\\n    this.#reader = null;\\n\\n    this.#capability.reject(abortEx);\\n  }\\n\\n  \u002F**\\n   * @type {Array\u003CHTMLElement>} HTML elements that correspond to the text items\\n   *   of the textContent input.\\n   *   This is output and will initially be set to an empty array.\\n   *\u002F\\n  get textDivs() {\\n    return this.#textDivs;\\n  }\\n\\n  \u002F**\\n   * @type {Array\u003Cstring>} Strings that correspond to the `str` property of\\n   *   the text items of the textContent input.\\n   *   This is output and will initially be set to an empty array\\n   *\u002F\\n  get textContentItemsStr() {\\n    return this.#textContentItemsStr;\\n  }\\n\\n  #processItems(items) {\\n    if (this.#disableProcessItems) {\\n      return;\\n    }\\n    this.#layoutTextParams.ctx ??= TextLayer.#getCtx(this.#lang);\\n\\n    const textDivs = this.#textDivs,\\n      textContentItemsStr = this.#textContentItemsStr;\\n\\n    for (const item of items) {\\n      \u002F\u002F No point in rendering many divs as it would make the browser\\n      \u002F\u002F unusable even after the divs are rendered.\\n      if (textDivs.length > MAX_TEXT_DIVS_TO_RENDER) {\\n        warn(\\\"Ignoring additional textDivs for performance reasons.\\\");\\n\\n        this.#disableProcessItems = true; \u002F\u002F Avoid multiple warnings for one page.\\n        return;\\n      }\\n\\n      if (item.str === undefined) {\\n        if (\\n          item.type === \\\"beginMarkedContentProps\\\" ||\\n          item.type === \\\"beginMarkedContent\\\"\\n        ) {\\n          const parent = this.#container;\\n          this.#container = document.createElement(\\\"span\\\");\\n          this.#container.classList.add(\\\"markedContent\\\");\\n          if (item.id !== null) {\\n            this.#container.setAttribute(\\\"id\\\", `${item.id}`);\\n          }\\n          parent.append(this.#container);\\n        } else if (item.type === \\\"endMarkedContent\\\") {\\n          this.#container = this.#container.parentNode;\\n        }\\n        continue;\\n      }\\n      textContentItemsStr.push(item.str);\\n      this.#appendText(item);\\n    }\\n  }\\n\\n  #appendText(geom) {\\n    \u002F\u002F Initialize all used properties to keep the caches monomorphic.\\n    const textDiv = document.createElement(\\\"span\\\");\\n    const textDivProperties = {\\n      angle: 0,\\n      canvasWidth: 0,\\n      hasText: geom.str !== \\\"\\\",\\n      hasEOL: geom.hasEOL,\\n      fontSize: 0,\\n    };\\n    this.#textDivs.push(textDiv);\\n\\n    const tx = Util.transform(this.#transform, geom.transform);\\n    let angle = Math.atan2(tx[1], tx[0]);\\n    const style = this.#styleCache[geom.fontName];\\n    if (style.vertical) {\\n      angle += Math.PI \u002F 2;\\n    }\\n\\n    let fontFamily =\\n      (this.#fontInspectorEnabled && style.fontSubstitution) ||\\n      style.fontFamily;\\n\\n    \u002F\u002F Workaround for bug 1922063.\\n    fontFamily = TextLayer.fontFamilyMap.get(fontFamily) || fontFamily;\\n    const fontHeight = Math.hypot(tx[2], tx[3]);\\n    const fontAscent =\\n      fontHeight * TextLayer.#getAscent(fontFamily, style, this.#lang);\\n\\n    let left, top;\\n    if (angle === 0) {\\n      left = tx[4];\\n      top = tx[5] - fontAscent;\\n    } else {\\n      left = tx[4] + fontAscent * Math.sin(angle);\\n      top = tx[5] - fontAscent * Math.cos(angle);\\n    }\\n\\n    const scaleFactorStr = \\\"calc(var(--total-scale-factor) *\\\";\\n    const divStyle = textDiv.style;\\n    \u002F\u002F Setting the style properties individually, rather than all at once,\\n    \u002F\u002F should be OK since the `textDiv` isn't appended to the document yet.\\n    if (this.#container === this.#rootContainer) {\\n      divStyle.left = `${((100 * left) \u002F this.#pageWidth).toFixed(2)}%`;\\n      divStyle.top = `${((100 * top) \u002F this.#pageHeight).toFixed(2)}%`;\\n    } else {\\n      \u002F\u002F We're in a marked content span, hence we can't use percents.\\n      divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`;\\n      divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`;\\n    }\\n    \u002F\u002F We multiply the font size by #minFontSize, and then #layout will\\n    \u002F\u002F scale the element by 1\u002F#minFontSize. This allows us to effectively\\n    \u002F\u002F ignore the minimum font size enforced by the browser, so that the text\\n    \u002F\u002F layer \u003Cspan>s can always match the size of the text in the canvas.\\n    divStyle.fontSize = `${scaleFactorStr}${(TextLayer.#minFontSize * fontHeight).toFixed(2)}px)`;\\n    divStyle.fontFamily = fontFamily;\\n\\n    textDivProperties.fontSize = fontHeight;\\n\\n    \u002F\u002F Keeps screen readers from pausing on every new text span.\\n    textDiv.setAttribute(\\\"role\\\", \\\"presentation\\\");\\n\\n    textDiv.textContent = geom.str;\\n    \u002F\u002F geom.dir may be 'ttb' for vertical texts.\\n    textDiv.dir = geom.dir;\\n\\n    \u002F\u002F `fontName` is only used by the FontInspector, and we only use `dataset`\\n    \u002F\u002F here to make the font name available in the debugger.\\n    if (this.#fontInspectorEnabled) {\\n      textDiv.dataset.fontName =\\n        style.fontSubstitutionLoadedName || geom.fontName;\\n    }\\n    if (angle !== 0) {\\n      textDivProperties.angle = angle * (180 \u002F Math.PI);\\n    }\\n    \u002F\u002F We don't bother scaling single-char text divs, because it has very\\n    \u002F\u002F little effect on text highlighting. This makes scrolling on docs with\\n    \u002F\u002F lots of such divs a lot faster.\\n    let shouldScaleText = false;\\n    if (geom.str.length > 1) {\\n      shouldScaleText = true;\\n    } else if (geom.str !== \\\" \\\" && geom.transform[0] !== geom.transform[3]) {\\n      const absScaleX = Math.abs(geom.transform[0]),\\n        absScaleY = Math.abs(geom.transform[3]);\\n      \u002F\u002F When the horizontal\u002Fvertical scaling differs significantly, also scale\\n      \u002F\u002F even single-char text to improve highlighting (fixes issue11713.pdf).\\n      if (\\n        absScaleX !== absScaleY &&\\n        Math.max(absScaleX, absScaleY) \u002F Math.min(absScaleX, absScaleY) > 1.5\\n      ) {\\n        shouldScaleText = true;\\n      }\\n    }\\n    if (shouldScaleText) {\\n      textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\\n    }\\n    this.#textDivProperties.set(textDiv, textDivProperties);\\n\\n    \u002F\u002F Finally, layout and append the text to the DOM.\\n    this.#layoutTextParams.div = textDiv;\\n    this.#layoutTextParams.properties = textDivProperties;\\n    this.#layout(this.#layoutTextParams);\\n\\n    if (textDivProperties.hasText) {\\n      this.#container.append(textDiv);\\n    }\\n    if (textDivProperties.hasEOL) {\\n      const br = document.createElement(\\\"br\\\");\\n      br.setAttribute(\\\"role\\\", \\\"presentation\\\");\\n      this.#container.append(br);\\n    }\\n  }\\n\\n  #layout(params) {\\n    const { div, properties, ctx } = params;\\n    const { style } = div;\\n\\n    let transform = \\\"\\\";\\n    if (TextLayer.#minFontSize > 1) {\\n      transform = `scale(${1 \u002F TextLayer.#minFontSize})`;\\n    }\\n\\n    if (properties.canvasWidth !== 0 && properties.hasText) {\\n      const { fontFamily } = style;\\n      const { canvasWidth, fontSize } = properties;\\n\\n      TextLayer.#ensureCtxFont(ctx, fontSize * this.#scale, fontFamily);\\n      \u002F\u002F Only measure the width for multi-char text divs, see `appendText`.\\n      const { width } = ctx.measureText(div.textContent);\\n\\n      if (width > 0) {\\n        transform = `scaleX(${(canvasWidth * this.#scale) \u002F width}) ${transform}`;\\n      }\\n    }\\n    if (properties.angle !== 0) {\\n      transform = `rotate(${properties.angle}deg) ${transform}`;\\n    }\\n    if (transform.length > 0) {\\n      style.transform = transform;\\n    }\\n  }\\n\\n  \u002F**\\n   * Clean-up global textLayer data.\\n   * @returns {undefined}\\n   *\u002F\\n  static cleanup() {\\n    if (this.#pendingTextLayers.size > 0) {\\n      return;\\n    }\\n    this.#ascentCache.clear();\\n\\n    for (const { canvas } of this.#canvasContexts.values()) {\\n      canvas.remove();\\n    }\\n    this.#canvasContexts.clear();\\n  }\\n\\n  static #getCtx(lang = null) {\\n    let ctx = this.#canvasContexts.get((lang ||= \\\"\\\"));\\n    if (!ctx) {\\n      \u002F\u002F We don't use an OffscreenCanvas here because we use serif\u002Fsans serif\\n      \u002F\u002F fonts with it and they depends on the locale.\\n      \u002F\u002F In Firefox, the \u003Chtml> element get a lang attribute that depends on\\n      \u002F\u002F what Fluent returns for the locale and the OffscreenCanvas uses\\n      \u002F\u002F the OS locale.\\n      \u002F\u002F Those two locales can be different and consequently the used fonts will\\n      \u002F\u002F be different (see bug 1869001).\\n      \u002F\u002F Ideally, we should use in the text layer the fonts we've in the pdf (or\\n      \u002F\u002F their replacements when they aren't embedded) and then we can use an\\n      \u002F\u002F OffscreenCanvas.\\n      const canvas = document.createElement(\\\"canvas\\\");\\n      canvas.className = \\\"hiddenCanvasElement\\\";\\n      canvas.lang = lang;\\n      document.body.append(canvas);\\n      ctx = canvas.getContext(\\\"2d\\\", {\\n        alpha: false,\\n        willReadFrequently: true,\\n      });\\n      this.#canvasContexts.set(lang, ctx);\\n\\n      \u002F\u002F Also, initialize state for the `#ensureCtxFont` method.\\n      this.#canvasCtxFonts.set(ctx, { size: 0, family: \\\"\\\" });\\n    }\\n    return ctx;\\n  }\\n\\n  static #ensureCtxFont(ctx, size, family) {\\n    const cached = this.#canvasCtxFonts.get(ctx);\\n    if (size === cached.size && family === cached.family) {\\n      return; \u002F\u002F The font is already set.\\n    }\\n    ctx.font = `${size}px ${family}`;\\n    cached.size = size;\\n    cached.family = family;\\n  }\\n\\n  \u002F**\\n   * Compute the minimum font size enforced by the browser.\\n   *\u002F\\n  static #ensureMinFontSizeComputed() {\\n    if (this.#minFontSize !== null) {\\n      return;\\n    }\\n    const div = document.createElement(\\\"div\\\");\\n    div.style.opacity = 0;\\n    div.style.lineHeight = 1;\\n    div.style.fontSize = \\\"1px\\\";\\n    div.style.position = \\\"absolute\\\";\\n    div.textContent = \\\"X\\\";\\n    document.body.append(div);\\n    \u002F\u002F In `display:block` elements contain a single line of text,\\n    \u002F\u002F the height matches the line height (which, when set to 1,\\n    \u002F\u002F matches the actual font size).\\n    this.#minFontSize = div.getBoundingClientRect().height;\\n    div.remove();\\n  }\\n\\n  static #getAscent(fontFamily, style, lang) {\\n    const cachedAscent = this.#ascentCache.get(fontFamily);\\n    if (cachedAscent) {\\n      return cachedAscent;\\n    }\\n    const ctx = this.#getCtx(lang);\\n\\n    ctx.canvas.width = ctx.canvas.height = DEFAULT_FONT_SIZE;\\n    this.#ensureCtxFont(ctx, DEFAULT_FONT_SIZE, fontFamily);\\n    const metrics = ctx.measureText(\\\"\\\");\\n\\n    const ascent = metrics.fontBoundingBoxAscent;\\n    const descent = Math.abs(metrics.fontBoundingBoxDescent);\\n\\n    ctx.canvas.width = ctx.canvas.height = 0;\\n    let ratio = 0.8; \u002F\u002F DEFAULT_FONT_ASCENT\\n\\n    if (ascent) {\\n      ratio = ascent \u002F (ascent + descent);\\n    } else {\\n      if (\\n        (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) ||\\n        FeatureTest.platform.isFirefox\\n      ) {\\n        warn(\\n          \\\"Enable the `dom.textMetrics.fontBoundingBox.enabled` preference \\\" +\\n            \\\"in `about:config` to improve TextLayer rendering.\\\"\\n        );\\n      }\\n      if (style.ascent) {\\n        ratio = style.ascent;\\n      } else if (style.descent) {\\n        ratio = 1 + style.descent;\\n      }\\n    }\\n\\n    this.#ascentCache.set(fontFamily, ratio);\\n    return ratio;\\n  }\\n}\\n\\nexport { TextLayer };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fapi\\\").TextContent} TextContent *\u002F\\n\\nclass XfaText {\\n  \u002F**\\n   * Walk an XFA tree and create an array of text nodes that is compatible\\n   * with a regular PDFs TextContent. Currently, only TextItem.str is supported,\\n   * all other fields and styles haven't been implemented.\\n   *\\n   * @param {Object} xfa - An XFA fake DOM object.\\n   *\\n   * @returns {TextContent}\\n   *\u002F\\n  static textContent(xfa) {\\n    const items = [];\\n    const output = {\\n      items,\\n      styles: Object.create(null),\\n    };\\n    function walk(node) {\\n      if (!node) {\\n        return;\\n      }\\n      let str = null;\\n      const name = node.name;\\n      if (name === \\\"#text\\\") {\\n        str = node.value;\\n      } else if (!XfaText.shouldBuildText(name)) {\\n        return;\\n      } else if (node?.attributes?.textContent) {\\n        str = node.attributes.textContent;\\n      } else if (node.value) {\\n        str = node.value;\\n      }\\n      if (str !== null) {\\n        items.push({\\n          str,\\n        });\\n      }\\n      if (!node.children) {\\n        return;\\n      }\\n      for (const child of node.children) {\\n        walk(child);\\n      }\\n    }\\n    walk(xfa);\\n    return output;\\n  }\\n\\n  \u002F**\\n   * @param {string} name - DOM node name. (lower case)\\n   *\\n   * @returns {boolean} true if the DOM node should have a corresponding text\\n   * node.\\n   *\u002F\\n  static shouldBuildText(name) {\\n    return !(\\n      name === \\\"textarea\\\" ||\\n      name === \\\"input\\\" ||\\n      name === \\\"option\\\" ||\\n      name === \\\"select\\\"\\n    );\\n  }\\n}\\n\\nexport { XfaText };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F**\\n * @module pdfjsLib\\n *\u002F\\n\\nimport {\\n  AbortException,\\n  AnnotationMode,\\n  assert,\\n  FeatureTest,\\n  getVerbosityLevel,\\n  info,\\n  isNodeJS,\\n  RenderingIntentFlag,\\n  setVerbosityLevel,\\n  shadow,\\n  unreachable,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  AnnotationStorage,\\n  PrintAnnotationStorage,\\n  SerializableEmpty,\\n} from \\\".\u002Fannotation_storage.js\\\";\\nimport {\\n  deprecated,\\n  isDataScheme,\\n  isValidFetchUrl,\\n  PageViewport,\\n  RenderingCancelledException,\\n  StatTimer,\\n} from \\\".\u002Fdisplay_utils.js\\\";\\nimport { FontFaceObject, FontLoader } from \\\".\u002Ffont_loader.js\\\";\\nimport {\\n  getDataProp,\\n  getFactoryUrlProp,\\n  getUrlProp,\\n  isRefProxy,\\n  LoopbackPort,\\n} from \\\".\u002Fapi_utils.js\\\";\\nimport { MessageHandler, wrapReason } from \\\"..\u002Fshared\u002Fmessage_handler.js\\\";\\nimport {\\n  NodeCanvasFactory,\\n  NodeCMapReaderFactory,\\n  NodeFilterFactory,\\n  NodeStandardFontDataFactory,\\n  NodeWasmFactory,\\n} from \\\"display-node_utils\\\";\\nimport { CanvasGraphics } from \\\".\u002Fcanvas.js\\\";\\nimport { DOMCanvasFactory } from \\\".\u002Fcanvas_factory.js\\\";\\nimport { DOMCMapReaderFactory } from \\\"display-cmap_reader_factory\\\";\\nimport { DOMFilterFactory } from \\\".\u002Ffilter_factory.js\\\";\\nimport { DOMStandardFontDataFactory } from \\\"display-standard_fontdata_factory\\\";\\nimport { DOMWasmFactory } from \\\"display-wasm_factory\\\";\\nimport { GlobalWorkerOptions } from \\\".\u002Fworker_options.js\\\";\\nimport { Metadata } from \\\".\u002Fmetadata.js\\\";\\nimport { OptionalContentConfig } from \\\".\u002Foptional_content_config.js\\\";\\nimport { PDFDataTransportStream } from \\\".\u002Ftransport_stream.js\\\";\\nimport { PDFFetchStream } from \\\"display-fetch_stream\\\";\\nimport { PDFNetworkStream } from \\\"display-network\\\";\\nimport { PDFNodeStream } from \\\"display-node_stream\\\";\\nimport { PDFObjects } from \\\".\u002Fpdf_objects.js\\\";\\nimport { TextLayer } from \\\".\u002Ftext_layer.js\\\";\\nimport { XfaText } from \\\".\u002Fxfa_text.js\\\";\\n\\nconst RENDERING_CANCELLED_TIMEOUT = 100; \u002F\u002F ms\\n\\n\u002F**\\n * @typedef { Int8Array | Uint8Array | Uint8ClampedArray |\\n *            Int16Array | Uint16Array |\\n *            Int32Array | Uint32Array | Float32Array |\\n *            Float64Array\\n * } TypedArray\\n *\u002F\\n\\n\u002F**\\n * @typedef {Object} RefProxy\\n * @property {number} num\\n * @property {number} gen\\n *\u002F\\n\\n\u002F**\\n * Document initialization \u002F loading parameters object.\\n *\\n * @typedef {Object} DocumentInitParameters\\n * @property {string | URL} [url] - The URL of the PDF.\\n * @property {TypedArray | ArrayBuffer | Array\u003Cnumber> | string} [data] -\\n *   Binary PDF data.\\n *   Use TypedArrays (Uint8Array) to improve the memory usage. If PDF data is\\n *   BASE64-encoded, use `atob()` to convert it to a binary string first.\\n *\\n *   NOTE: If TypedArrays are used they will generally be transferred to the\\n *   worker-thread. This will help reduce main-thread memory usage, however\\n *   it will take ownership of the TypedArrays.\\n * @property {Object} [httpHeaders] - Basic authentication headers.\\n * @property {boolean} [withCredentials] - Indicates whether or not\\n *   cross-site Access-Control requests should be made using credentials such\\n *   as cookies or authorization headers. The default is `false`.\\n * @property {string} [password] - For decrypting password-protected PDFs.\\n * @property {number} [length] - The PDF file length. It's used for progress\\n *   reports and range requests operations.\\n * @property {PDFDataRangeTransport} [range] - Allows for using a custom range\\n *   transport implementation.\\n * @property {number} [rangeChunkSize] - Specify maximum number of bytes fetched\\n *   per range request. The default value is 65536 (= 2^16).\\n * @property {PDFWorker} [worker] - The worker that will be used for loading and\\n *   parsing the PDF data.\\n * @property {number} [verbosity] - Controls the logging level; the constants\\n *   from {@link VerbosityLevel} should be used.\\n * @property {string} [docBaseUrl] - The base URL of the document, used when\\n *   attempting to recover valid absolute URLs for annotations, and outline\\n *   items, that (incorrectly) only specify relative URLs.\\n * @property {string} [cMapUrl] - The URL where the predefined Adobe CMaps are\\n *   located. Include the trailing slash.\\n * @property {boolean} [cMapPacked] - Specifies if the Adobe CMaps are binary\\n *   packed or not. The default value is `true`.\\n * @property {Object} [CMapReaderFactory] - The factory that will be used when\\n *   reading built-in CMap files.\\n *   The default value is {DOMCMapReaderFactory}.\\n * @property {string} [iccUrl] - The URL where the predefined ICC profiles are\\n *   located. Include the trailing slash.\\n * @property {boolean} [useSystemFonts] - When `true`, fonts that aren't\\n *   embedded in the PDF document will fallback to a system font.\\n *   The default value is `true` in web environments and `false` in Node.js;\\n *   unless `disableFontFace === true` in which case this defaults to `false`\\n *   regardless of the environment (to prevent completely broken fonts).\\n * @property {string} [standardFontDataUrl] - The URL where the standard font\\n *   files are located. Include the trailing slash.\\n * @property {Object} [StandardFontDataFactory] - The factory that will be used\\n *   when reading the standard font files.\\n *   The default value is {DOMStandardFontDataFactory}.\\n * @property {string} [wasmUrl] - The URL where the wasm files are located.\\n *   Include the trailing slash.\\n * @property {Object} [WasmFactory] - The factory that will be used\\n *   when reading the wasm files.\\n *   The default value is {DOMWasmFactory}.\\n * @property {boolean} [useWorkerFetch] - Enable using the Fetch API in the\\n *   worker-thread when reading CMap and standard font files. When `true`,\\n *   the `CMapReaderFactory`, `StandardFontDataFactory`, and `WasmFactory`\\n *   options are ignored.\\n *   The default value is `true` in web environments and `false` in Node.js.\\n * @property {boolean} [useWasm] - Attempt to use WebAssembly in order to\\n *    improve e.g. image decoding performance.\\n *    The default value is `true`.\\n * @property {boolean} [stopAtErrors] - Reject certain promises, e.g.\\n *   `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\\n *   PDF data cannot be successfully parsed, instead of attempting to recover\\n *   whatever possible of the data. The default value is `false`.\\n * @property {number} [maxImageSize] - The maximum allowed image size in total\\n *   pixels, i.e. width * height. Images above this value will not be rendered.\\n *   Use -1 for no limit, which is also the default value.\\n * @property {boolean} [isEvalSupported] - Determines if we can evaluate strings\\n *   as JavaScript. Primarily used to improve performance of PDF functions.\\n *   The default value is `true`.\\n * @property {boolean} [isOffscreenCanvasSupported] - Determines if we can use\\n *   `OffscreenCanvas` in the worker. Primarily used to improve performance of\\n *   image conversion\u002Frendering.\\n *   The default value is `true` in web environments and `false` in Node.js.\\n * @property {boolean} [isImageDecoderSupported] - Determines if we can use\\n *   `ImageDecoder` in the worker. Primarily used to improve performance of\\n *   image conversion\u002Frendering.\\n *   The default value is `true` in web environments and `false` in Node.js.\\n *\\n *   NOTE: Also temporarily disabled in Chromium browsers, until we no longer\\n *   support the affected browser versions, because of various bugs:\\n *\\n *    - Crashes when using the BMP decoder with huge images, e.g. issue6741.pdf;\\n *      see https:\u002F\u002Fissues.chromium.org\u002Fissues\u002F374807001\\n *\\n *    - Broken images when using the JPEG decoder with images that have custom\\n *      colour profiles, e.g. GitHub discussion 19030;\\n *      see https:\u002F\u002Fissues.chromium.org\u002Fissues\u002F378869810\\n *\\n * @property {number} [canvasMaxAreaInBytes] - The integer value is used to\\n *   know when an image must be resized (uses `OffscreenCanvas` in the worker).\\n *   If it's -1 then a possibly slow algorithm is used to guess the max value.\\n * @property {boolean} [disableFontFace] - By default fonts are converted to\\n *   OpenType fonts and loaded via the Font Loading API or `@font-face` rules.\\n *   If disabled, fonts will be rendered using a built-in font renderer that\\n *   constructs the glyphs with primitive path commands.\\n *   The default value is `false` in web environments and `true` in Node.js.\\n * @property {boolean} [fontExtraProperties] - Include additional properties,\\n *   which are unused during rendering of PDF documents, when exporting the\\n *   parsed font data from the worker-thread. This may be useful for debugging\\n *   purposes (and backwards compatibility), but note that it will lead to\\n *   increased memory usage. The default value is `false`.\\n * @property {boolean} [enableXfa] - Render Xfa forms if any.\\n *   The default value is `false`.\\n * @property {HTMLDocument} [ownerDocument] - Specify an explicit document\\n *   context to create elements with and to load resources, such as fonts,\\n *   into. Defaults to the current document.\\n * @property {boolean} [disableRange] - Disable range request loading of PDF\\n *   files. When enabled, and if the server supports partial content requests,\\n *   then the PDF will be fetched in chunks. The default value is `false`.\\n * @property {boolean} [disableStream] - Disable streaming of PDF file data.\\n *   By default PDF.js attempts to load PDF files in chunks. The default value\\n *   is `false`.\\n * @property {boolean} [disableAutoFetch] - Disable pre-fetching of PDF file\\n *   data. When range requests are enabled PDF.js will automatically keep\\n *   fetching more data even if it isn't needed to display the current page.\\n *   The default value is `false`.\\n *\\n *   NOTE: It is also necessary to disable streaming, see above, in order for\\n *   disabling of pre-fetching to work correctly.\\n * @property {boolean} [pdfBug] - Enables special hooks for debugging PDF.js\\n *   (see `web\u002Fdebugger.js`). The default value is `false`.\\n * @property {Object} [CanvasFactory] - The factory that will be used when\\n *    creating canvases. The default value is {DOMCanvasFactory}.\\n * @property {Object} [FilterFactory] - The factory that will be used to\\n *    create SVG filters when rendering some images on the main canvas.\\n *    The default value is {DOMFilterFactory}.\\n * @property {boolean} [enableHWA] - Enables hardware acceleration for\\n *   rendering. The default value is `false`.\\n *\u002F\\n\\n\u002F**\\n * This is the main entry point for loading a PDF and interacting with it.\\n *\\n * NOTE: If a URL is used to fetch the PDF data a standard Fetch API call (or\\n * XHR as fallback) is used, which means it must follow same origin rules,\\n * e.g. no cross-domain requests without CORS.\\n *\\n * @param {string | URL | TypedArray | ArrayBuffer | DocumentInitParameters}\\n *   src - Can be a URL where a PDF file is located, a typed array (Uint8Array)\\n *         already populated with data, or a parameter object.\\n * @returns {PDFDocumentLoadingTask}\\n *\u002F\\nfunction getDocument(src = {}) {\\n  if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n    if (typeof src === \\\"string\\\" || src instanceof URL) {\\n      src = { url: src };\\n    } else if (src instanceof ArrayBuffer || ArrayBuffer.isView(src)) {\\n      src = { data: src };\\n    }\\n  }\\n  const task = new PDFDocumentLoadingTask();\\n  const { docId } = task;\\n\\n  const url = src.url ? getUrlProp(src.url) : null;\\n  const data = src.data ? getDataProp(src.data) : null;\\n  const httpHeaders = src.httpHeaders || null;\\n  const withCredentials = src.withCredentials === true;\\n  const password = src.password ?? null;\\n  const rangeTransport =\\n    src.range instanceof PDFDataRangeTransport ? src.range : null;\\n  const rangeChunkSize =\\n    Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0\\n      ? src.rangeChunkSize\\n      : 2 ** 16;\\n  let worker = src.worker instanceof PDFWorker ? src.worker : null;\\n  const verbosity = src.verbosity;\\n  \u002F\u002F Ignore \\\"data:\\\"-URLs, since they can't be used to recover valid absolute\\n  \u002F\u002F URLs anyway. We want to avoid sending them to the worker-thread, since\\n  \u002F\u002F they contain the *entire* PDF document and can thus be arbitrarily long.\\n  const docBaseUrl =\\n    typeof src.docBaseUrl === \\\"string\\\" && !isDataScheme(src.docBaseUrl)\\n      ? src.docBaseUrl\\n      : null;\\n  const cMapUrl = getFactoryUrlProp(src.cMapUrl);\\n  const cMapPacked = src.cMapPacked !== false;\\n  const CMapReaderFactory =\\n    src.CMapReaderFactory ||\\n    (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"GENERIC\\\") && isNodeJS\\n      ? NodeCMapReaderFactory\\n      : DOMCMapReaderFactory);\\n  const iccUrl = getFactoryUrlProp(src.iccUrl);\\n  const standardFontDataUrl = getFactoryUrlProp(src.standardFontDataUrl);\\n  const StandardFontDataFactory =\\n    src.StandardFontDataFactory ||\\n    (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"GENERIC\\\") && isNodeJS\\n      ? NodeStandardFontDataFactory\\n      : DOMStandardFontDataFactory);\\n  const wasmUrl = getFactoryUrlProp(src.wasmUrl);\\n  const WasmFactory =\\n    src.WasmFactory ||\\n    (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"GENERIC\\\") && isNodeJS\\n      ? NodeWasmFactory\\n      : DOMWasmFactory);\\n  const ignoreErrors = src.stopAtErrors !== true;\\n  const maxImageSize =\\n    Number.isInteger(src.maxImageSize) && src.maxImageSize > -1\\n      ? src.maxImageSize\\n      : -1;\\n  const isEvalSupported = src.isEvalSupported !== false;\\n  const isOffscreenCanvasSupported =\\n    typeof src.isOffscreenCanvasSupported === \\\"boolean\\\"\\n      ? src.isOffscreenCanvasSupported\\n      : !isNodeJS;\\n  const isImageDecoderSupported =\\n    \u002F\u002F eslint-disable-next-line no-nested-ternary\\n    typeof src.isImageDecoderSupported === \\\"boolean\\\"\\n      ? src.isImageDecoderSupported\\n      : \u002F\u002F eslint-disable-next-line no-nested-ternary\\n        typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")\\n        ? true\\n        : typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"CHROME\\\")\\n          ? false\\n          : !isNodeJS && (FeatureTest.platform.isFirefox || !globalThis.chrome);\\n  const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes)\\n    ? src.canvasMaxAreaInBytes\\n    : -1;\\n  const disableFontFace =\\n    typeof src.disableFontFace === \\\"boolean\\\" ? src.disableFontFace : isNodeJS;\\n  const fontExtraProperties = src.fontExtraProperties === true;\\n  const enableXfa = src.enableXfa === true;\\n  const ownerDocument = src.ownerDocument || globalThis.document;\\n  const disableRange = src.disableRange === true;\\n  const disableStream = src.disableStream === true;\\n  const disableAutoFetch = src.disableAutoFetch === true;\\n  const pdfBug = src.pdfBug === true;\\n  const CanvasFactory =\\n    src.CanvasFactory ||\\n    (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"GENERIC\\\") && isNodeJS\\n      ? NodeCanvasFactory\\n      : DOMCanvasFactory);\\n  const FilterFactory =\\n    src.FilterFactory ||\\n    (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"GENERIC\\\") && isNodeJS\\n      ? NodeFilterFactory\\n      : DOMFilterFactory);\\n  const enableHWA = src.enableHWA === true;\\n  const useWasm = src.useWasm !== false;\\n\\n  \u002F\u002F Parameters whose default values depend on other parameters.\\n  const length = rangeTransport ? rangeTransport.length : (src.length ?? NaN);\\n  const useSystemFonts =\\n    typeof src.useSystemFonts === \\\"boolean\\\"\\n      ? src.useSystemFonts\\n      : !isNodeJS && !disableFontFace;\\n  const useWorkerFetch =\\n    typeof src.useWorkerFetch === \\\"boolean\\\"\\n      ? src.useWorkerFetch\\n      : (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) ||\\n        !!(\\n          CMapReaderFactory === DOMCMapReaderFactory &&\\n          StandardFontDataFactory === DOMStandardFontDataFactory &&\\n          WasmFactory === DOMWasmFactory &&\\n          cMapUrl &&\\n          standardFontDataUrl &&\\n          wasmUrl &&\\n          isValidFetchUrl(cMapUrl, document.baseURI) &&\\n          isValidFetchUrl(standardFontDataUrl, document.baseURI) &&\\n          isValidFetchUrl(wasmUrl, document.baseURI)\\n        );\\n\\n  \u002F\u002F Parameters only intended for development\u002Ftesting purposes.\\n  const styleElement =\\n    typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")\\n      ? src.styleElement\\n      : null;\\n\\n  \u002F\u002F Set the main-thread verbosity level.\\n  setVerbosityLevel(verbosity);\\n\\n  \u002F\u002F Ensure that the various factories can be initialized, when necessary,\\n  \u002F\u002F since the user may provide *custom* ones.\\n  const transportFactory = {\\n    canvasFactory: new CanvasFactory({ ownerDocument, enableHWA }),\\n    filterFactory: new FilterFactory({ docId, ownerDocument }),\\n    cMapReaderFactory:\\n      (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) ||\\n      useWorkerFetch\\n        ? null\\n        : new CMapReaderFactory({ baseUrl: cMapUrl, isCompressed: cMapPacked }),\\n    standardFontDataFactory:\\n      (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) ||\\n      useWorkerFetch\\n        ? null\\n        : new StandardFontDataFactory({ baseUrl: standardFontDataUrl }),\\n    wasmFactory:\\n      (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) ||\\n      useWorkerFetch\\n        ? null\\n        : new WasmFactory({ baseUrl: wasmUrl }),\\n  };\\n\\n  if (!worker) {\\n    \u002F\u002F Worker was not provided -- creating and owning our own. If message port\\n    \u002F\u002F is specified in global worker options, using it.\\n    worker = PDFWorker.create({\\n      verbosity,\\n      port: GlobalWorkerOptions.workerPort,\\n    });\\n    task._worker = worker;\\n  }\\n\\n  const docParams = {\\n    docId,\\n    apiVersion:\\n      typeof PDFJSDev !== \\\"undefined\\\" && !PDFJSDev.test(\\\"TESTING\\\")\\n        ? PDFJSDev.eval(\\\"BUNDLE_VERSION\\\")\\n        : null,\\n    data,\\n    password,\\n    disableAutoFetch,\\n    rangeChunkSize,\\n    length,\\n    docBaseUrl,\\n    enableXfa,\\n    evaluatorOptions: {\\n      maxImageSize,\\n      disableFontFace,\\n      ignoreErrors,\\n      isEvalSupported,\\n      isOffscreenCanvasSupported,\\n      isImageDecoderSupported,\\n      canvasMaxAreaInBytes,\\n      fontExtraProperties,\\n      useSystemFonts,\\n      useWasm,\\n      useWorkerFetch,\\n      cMapUrl,\\n      iccUrl,\\n      standardFontDataUrl,\\n      wasmUrl,\\n    },\\n  };\\n  const transportParams = {\\n    ownerDocument,\\n    pdfBug,\\n    styleElement,\\n    loadingParams: {\\n      disableAutoFetch,\\n      enableXfa,\\n    },\\n  };\\n\\n  worker.promise\\n    .then(function () {\\n      if (task.destroyed) {\\n        throw new Error(\\\"Loading aborted\\\");\\n      }\\n      if (worker.destroyed) {\\n        throw new Error(\\\"Worker was destroyed\\\");\\n      }\\n\\n      const workerIdPromise = worker.messageHandler.sendWithPromise(\\n        \\\"GetDocRequest\\\",\\n        docParams,\\n        data ? [data.buffer] : null\\n      );\\n\\n      let networkStream;\\n      if (rangeTransport) {\\n        networkStream = new PDFDataTransportStream(rangeTransport, {\\n          disableRange,\\n          disableStream,\\n        });\\n      } else if (!data) {\\n        if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n          throw new Error(\\\"Not implemented: NetworkStream\\\");\\n        }\\n        if (!url) {\\n          throw new Error(\\\"getDocument - no `url` parameter provided.\\\");\\n        }\\n        \u002F\u002F eslint-disable-next-line no-nested-ternary\\n        const NetworkStream = isValidFetchUrl(url)\\n          ? PDFFetchStream\\n          : typeof PDFJSDev !== \\\"undefined\\\" &&\\n              PDFJSDev.test(\\\"GENERIC\\\") &&\\n              isNodeJS\\n            ? PDFNodeStream\\n            : PDFNetworkStream;\\n\\n        networkStream = new NetworkStream({\\n          url,\\n          length,\\n          httpHeaders,\\n          withCredentials,\\n          rangeChunkSize,\\n          disableRange,\\n          disableStream,\\n        });\\n      }\\n\\n      return workerIdPromise.then(workerId => {\\n        if (task.destroyed) {\\n          throw new Error(\\\"Loading aborted\\\");\\n        }\\n        if (worker.destroyed) {\\n          throw new Error(\\\"Worker was destroyed\\\");\\n        }\\n\\n        const messageHandler = new MessageHandler(docId, workerId, worker.port);\\n        const transport = new WorkerTransport(\\n          messageHandler,\\n          task,\\n          networkStream,\\n          transportParams,\\n          transportFactory\\n        );\\n        task._transport = transport;\\n        messageHandler.send(\\\"Ready\\\", null);\\n      });\\n    })\\n    .catch(task._capability.reject);\\n\\n  return task;\\n}\\n\\n\u002F**\\n * @typedef {Object} OnProgressParameters\\n * @property {number} loaded - Currently loaded number of bytes.\\n * @property {number} total - Total number of bytes in the PDF file.\\n *\u002F\\n\\n\u002F**\\n * The loading task controls the operations required to load a PDF document\\n * (such as network requests) and provides a way to listen for completion,\\n * after which individual pages can be rendered.\\n *\u002F\\nclass PDFDocumentLoadingTask {\\n  static #docId = 0;\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _capability = Promise.withResolvers();\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _transport = null;\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _worker = null;\\n\\n  \u002F**\\n   * Unique identifier for the document loading task.\\n   * @type {string}\\n   *\u002F\\n  docId = `d${PDFDocumentLoadingTask.#docId++}`;\\n\\n  \u002F**\\n   * Whether the loading task is destroyed or not.\\n   * @type {boolean}\\n   *\u002F\\n  destroyed = false;\\n\\n  \u002F**\\n   * Callback to request a password if a wrong or no password was provided.\\n   * The callback receives two parameters: a function that should be called\\n   * with the new password, and a reason (see {@link PasswordResponses}).\\n   * @type {function}\\n   *\u002F\\n  onPassword = null;\\n\\n  \u002F**\\n   * Callback to be able to monitor the loading progress of the PDF file\\n   * (necessary to implement e.g. a loading bar).\\n   * The callback receives an {@link OnProgressParameters} argument.\\n   * @type {function}\\n   *\u002F\\n  onProgress = null;\\n\\n  \u002F**\\n   * Promise for document loading task completion.\\n   * @type {Promise\u003CPDFDocumentProxy>}\\n   *\u002F\\n  get promise() {\\n    return this._capability.promise;\\n  }\\n\\n  \u002F**\\n   * Abort all network requests and destroy the worker.\\n   * @returns {Promise\u003Cvoid>} A promise that is resolved when destruction is\\n   *   completed.\\n   *\u002F\\n  async destroy() {\\n    this.destroyed = true;\\n\\n    try {\\n      if (this._worker?.port) {\\n        this._worker._pendingDestroy = true;\\n      }\\n      await this._transport?.destroy();\\n    } catch (ex) {\\n      if (this._worker?.port) {\\n        delete this._worker._pendingDestroy;\\n      }\\n      throw ex;\\n    }\\n    this._transport = null;\\n\\n    this._worker?.destroy();\\n    this._worker = null;\\n  }\\n\\n  \u002F**\\n   * Attempt to fetch the raw data of the PDF document, when e.g.\\n   *  - An exception was thrown during document initialization.\\n   *  - An `onPassword` callback is delaying initialization.\\n   * @returns {Promise\u003CUint8Array>}\\n   *\u002F\\n  async getData() {\\n    return this._transport.getData();\\n  }\\n}\\n\\n\u002F**\\n * Abstract class to support range requests file loading.\\n *\\n * NOTE: The TypedArrays passed to the constructor and relevant methods below\\n * will generally be transferred to the worker-thread. This will help reduce\\n * main-thread memory usage, however it will take ownership of the TypedArrays.\\n *\u002F\\nclass PDFDataRangeTransport {\\n  #capability = Promise.withResolvers();\\n\\n  #progressiveDoneListeners = [];\\n\\n  #progressiveReadListeners = [];\\n\\n  #progressListeners = [];\\n\\n  #rangeListeners = [];\\n\\n  \u002F**\\n   * @param {number} length\\n   * @param {Uint8Array|null} initialData\\n   * @param {boolean} [progressiveDone]\\n   * @param {string} [contentDispositionFilename]\\n   *\u002F\\n  constructor(\\n    length,\\n    initialData,\\n    progressiveDone = false,\\n    contentDispositionFilename = null\\n  ) {\\n    this.length = length;\\n    this.initialData = initialData;\\n    this.progressiveDone = progressiveDone;\\n    this.contentDispositionFilename = contentDispositionFilename;\\n  }\\n\\n  \u002F**\\n   * @param {function} listener\\n   *\u002F\\n  addRangeListener(listener) {\\n    this.#rangeListeners.push(listener);\\n  }\\n\\n  \u002F**\\n   * @param {function} listener\\n   *\u002F\\n  addProgressListener(listener) {\\n    this.#progressListeners.push(listener);\\n  }\\n\\n  \u002F**\\n   * @param {function} listener\\n   *\u002F\\n  addProgressiveReadListener(listener) {\\n    this.#progressiveReadListeners.push(listener);\\n  }\\n\\n  \u002F**\\n   * @param {function} listener\\n   *\u002F\\n  addProgressiveDoneListener(listener) {\\n    this.#progressiveDoneListeners.push(listener);\\n  }\\n\\n  \u002F**\\n   * @param {number} begin\\n   * @param {Uint8Array|null} chunk\\n   *\u002F\\n  onDataRange(begin, chunk) {\\n    for (const listener of this.#rangeListeners) {\\n      listener(begin, chunk);\\n    }\\n  }\\n\\n  \u002F**\\n   * @param {number} loaded\\n   * @param {number|undefined} total\\n   *\u002F\\n  onDataProgress(loaded, total) {\\n    this.#capability.promise.then(() => {\\n      for (const listener of this.#progressListeners) {\\n        listener(loaded, total);\\n      }\\n    });\\n  }\\n\\n  \u002F**\\n   * @param {Uint8Array|null} chunk\\n   *\u002F\\n  onDataProgressiveRead(chunk) {\\n    this.#capability.promise.then(() => {\\n      for (const listener of this.#progressiveReadListeners) {\\n        listener(chunk);\\n      }\\n    });\\n  }\\n\\n  onDataProgressiveDone() {\\n    this.#capability.promise.then(() => {\\n      for (const listener of this.#progressiveDoneListeners) {\\n        listener();\\n      }\\n    });\\n  }\\n\\n  transportReady() {\\n    this.#capability.resolve();\\n  }\\n\\n  \u002F**\\n   * @param {number} begin\\n   * @param {number} end\\n   *\u002F\\n  requestDataRange(begin, end) {\\n    unreachable(\\\"Abstract method PDFDataRangeTransport.requestDataRange\\\");\\n  }\\n\\n  abort() {}\\n}\\n\\n\u002F**\\n * Proxy to a `PDFDocument` in the worker thread.\\n *\u002F\\nclass PDFDocumentProxy {\\n  constructor(pdfInfo, transport) {\\n    this._pdfInfo = pdfInfo;\\n    this._transport = transport;\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      \u002F\u002F For testing purposes.\\n      Object.defineProperty(this, \\\"getNetworkStreamName\\\", {\\n        value: () => this._transport.getNetworkStreamName(),\\n      });\\n      Object.defineProperty(this, \\\"getXFADatasets\\\", {\\n        value: () => this._transport.getXFADatasets(),\\n      });\\n      Object.defineProperty(this, \\\"getXRefPrevValue\\\", {\\n        value: () => this._transport.getXRefPrevValue(),\\n      });\\n      Object.defineProperty(this, \\\"getStartXRefPos\\\", {\\n        value: () => this._transport.getStartXRefPos(),\\n      });\\n      Object.defineProperty(this, \\\"getAnnotArray\\\", {\\n        value: pageIndex => this._transport.getAnnotArray(pageIndex),\\n      });\\n    }\\n  }\\n\\n  \u002F**\\n   * @type {AnnotationStorage} Storage for annotation data in forms.\\n   *\u002F\\n  get annotationStorage() {\\n    return this._transport.annotationStorage;\\n  }\\n\\n  \u002F**\\n   * @type {Object} The canvas factory instance.\\n   *\u002F\\n  get canvasFactory() {\\n    return this._transport.canvasFactory;\\n  }\\n\\n  \u002F**\\n   * @type {Object} The filter factory instance.\\n   *\u002F\\n  get filterFactory() {\\n    return this._transport.filterFactory;\\n  }\\n\\n  \u002F**\\n   * @type {number} Total number of pages in the PDF file.\\n   *\u002F\\n  get numPages() {\\n    return this._pdfInfo.numPages;\\n  }\\n\\n  \u002F**\\n   * @type {Array\u003Cstring | null>} A (not guaranteed to be) unique ID to identify\\n   *   the PDF document.\\n   *   NOTE: The first element will always be defined for all PDF documents,\\n   *   whereas the second element is only defined for *modified* PDF documents.\\n   *\u002F\\n  get fingerprints() {\\n    return this._pdfInfo.fingerprints;\\n  }\\n\\n  \u002F**\\n   * @type {boolean} True if only XFA form.\\n   *\u002F\\n  get isPureXfa() {\\n    return shadow(this, \\\"isPureXfa\\\", !!this._transport._htmlForXfa);\\n  }\\n\\n  \u002F**\\n   * NOTE: This is (mostly) intended to support printing of XFA forms.\\n   *\\n   * @type {Object | null} An object representing a HTML tree structure\\n   *   to render the XFA, or `null` when no XFA form exists.\\n   *\u002F\\n  get allXfaHtml() {\\n    return this._transport._htmlForXfa;\\n  }\\n\\n  \u002F**\\n   * @param {number} pageNumber - The page number to get. The first page is 1.\\n   * @returns {Promise\u003CPDFPageProxy>} A promise that is resolved with\\n   *   a {@link PDFPageProxy} object.\\n   *\u002F\\n  getPage(pageNumber) {\\n    return this._transport.getPage(pageNumber);\\n  }\\n\\n  \u002F**\\n   * @param {RefProxy} ref - The page reference.\\n   * @returns {Promise\u003Cnumber>} A promise that is resolved with the page index,\\n   *   starting from zero, that is associated with the reference.\\n   *\u002F\\n  getPageIndex(ref) {\\n    return this._transport.getPageIndex(ref);\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003CObject\u003Cstring, Array\u003Cany>>>} A promise that is resolved\\n   *   with a mapping from named destinations to references.\\n   *\\n   * This can be slow for large documents. Use `getDestination` instead.\\n   *\u002F\\n  getDestinations() {\\n    return this._transport.getDestinations();\\n  }\\n\\n  \u002F**\\n   * @param {string} id - The named destination to get.\\n   * @returns {Promise\u003CArray\u003Cany> | null>} A promise that is resolved with all\\n   *   information of the given named destination, or `null` when the named\\n   *   destination is not present in the PDF file.\\n   *\u002F\\n  getDestination(id) {\\n    return this._transport.getDestination(id);\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003CArray\u003Cstring> | null>} A promise that is resolved with\\n   *   an {Array} containing the page labels that correspond to the page\\n   *   indexes, or `null` when no page labels are present in the PDF file.\\n   *\u002F\\n  getPageLabels() {\\n    return this._transport.getPageLabels();\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003Cstring>} A promise that is resolved with a {string}\\n   *   containing the page layout name.\\n   *\u002F\\n  getPageLayout() {\\n    return this._transport.getPageLayout();\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003Cstring>} A promise that is resolved with a {string}\\n   *   containing the page mode name.\\n   *\u002F\\n  getPageMode() {\\n    return this._transport.getPageMode();\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003CObject | null>} A promise that is resolved with an\\n   *   {Object} containing the viewer preferences, or `null` when no viewer\\n   *   preferences are present in the PDF file.\\n   *\u002F\\n  getViewerPreferences() {\\n    return this._transport.getViewerPreferences();\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003Cany | null>} A promise that is resolved with an {Array}\\n   *   containing the destination, or `null` when no open action is present\\n   *   in the PDF.\\n   *\u002F\\n  getOpenAction() {\\n    return this._transport.getOpenAction();\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003Cany>} A promise that is resolved with a lookup table\\n   *   for mapping named attachments to their content.\\n   *\u002F\\n  getAttachments() {\\n    return this._transport.getAttachments();\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003CObject | null>} A promise that is resolved with\\n   *   an {Object} with the JavaScript actions:\\n   *     - from the name tree.\\n   *     - from A or AA entries in the catalog dictionary.\\n   *   , or `null` if no JavaScript exists.\\n   *\u002F\\n  getJSActions() {\\n    return this._transport.getDocJSActions();\\n  }\\n\\n  \u002F**\\n   * @typedef {Object} OutlineNode\\n   * @property {string} title\\n   * @property {boolean} bold\\n   * @property {boolean} italic\\n   * @property {Uint8ClampedArray} color - The color in RGB format to use for\\n   *   display purposes.\\n   * @property {string | Array\u003Cany> | null} dest\\n   * @property {string | null} url\\n   * @property {string | undefined} unsafeUrl\\n   * @property {boolean | undefined} newWindow\\n   * @property {number | undefined} count\\n   * @property {Array\u003COutlineNode>} items\\n   *\u002F\\n\\n  \u002F**\\n   * @returns {Promise\u003CArray\u003COutlineNode>>} A promise that is resolved with an\\n   *   {Array} that is a tree outline (if it has one) of the PDF file.\\n   *\u002F\\n  getOutline() {\\n    return this._transport.getOutline();\\n  }\\n\\n  \u002F**\\n   * @typedef {Object} GetOptionalContentConfigParameters\\n   * @property {string} [intent] - Determines the optional content groups that\\n   *   are visible by default; valid values are:\\n   *    - 'display' (viewable groups).\\n   *    - 'print' (printable groups).\\n   *    - 'any' (all groups).\\n   *   The default value is 'display'.\\n   *\u002F\\n\\n  \u002F**\\n   * @param {GetOptionalContentConfigParameters} [params] - Optional content\\n   *   config parameters.\\n   * @returns {Promise\u003COptionalContentConfig>} A promise that is resolved with\\n   *   an {@link OptionalContentConfig} that contains all the optional content\\n   *   groups (assuming that the document has any).\\n   *\u002F\\n  getOptionalContentConfig({ intent = \\\"display\\\" } = {}) {\\n    const { renderingIntent } = this._transport.getRenderingIntent(intent);\\n\\n    return this._transport.getOptionalContentConfig(renderingIntent);\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003CArray\u003Cnumber> | null>} A promise that is resolved with\\n   *   an {Array} that contains the permission flags for the PDF document, or\\n   *   `null` when no permissions are present in the PDF file.\\n   *\u002F\\n  getPermissions() {\\n    return this._transport.getPermissions();\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003C{ info: Object, metadata: Metadata }>} A promise that is\\n   *   resolved with an {Object} that has `info` and `metadata` properties.\\n   *   `info` is an {Object} filled with anything available in the information\\n   *   dictionary and similarly `metadata` is a {Metadata} object with\\n   *   information from the metadata section of the PDF.\\n   *\u002F\\n  getMetadata() {\\n    return this._transport.getMetadata();\\n  }\\n\\n  \u002F**\\n   * @typedef {Object} MarkInfo\\n   * Properties correspond to Table 321 of the PDF 32000-1:2008 spec.\\n   * @property {boolean} Marked\\n   * @property {boolean} UserProperties\\n   * @property {boolean} Suspects\\n   *\u002F\\n\\n  \u002F**\\n   * @returns {Promise\u003CMarkInfo | null>} A promise that is resolved with\\n   *   a {MarkInfo} object that contains the MarkInfo flags for the PDF\\n   *   document, or `null` when no MarkInfo values are present in the PDF file.\\n   *\u002F\\n  getMarkInfo() {\\n    return this._transport.getMarkInfo();\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003CUint8Array>} A promise that is resolved with a\\n   *   {Uint8Array} containing the raw data of the PDF document.\\n   *\u002F\\n  getData() {\\n    return this._transport.getData();\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003CUint8Array>} A promise that is resolved with a\\n   *   {Uint8Array} containing the full data of the saved document.\\n   *\u002F\\n  saveDocument() {\\n    return this._transport.saveDocument();\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003C{ length: number }>} A promise that is resolved when the\\n   *   document's data is loaded. It is resolved with an {Object} that contains\\n   *   the `length` property that indicates size of the PDF data in bytes.\\n   *\u002F\\n  getDownloadInfo() {\\n    return this._transport.downloadInfoCapability.promise;\\n  }\\n\\n  \u002F**\\n   * Cleans up resources allocated by the document on both the main and worker\\n   * threads.\\n   *\\n   * NOTE: Do not, under any circumstances, call this method when rendering is\\n   * currently ongoing since that may lead to rendering errors.\\n   *\\n   * @param {boolean} [keepLoadedFonts] - Let fonts remain attached to the DOM.\\n   *   NOTE: This will increase persistent memory usage, hence don't use this\\n   *   option unless absolutely necessary. The default value is `false`.\\n   * @returns {Promise} A promise that is resolved when clean-up has finished.\\n   *\u002F\\n  cleanup(keepLoadedFonts = false) {\\n    return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\\n  }\\n\\n  \u002F**\\n   * Destroys the current document instance and terminates the worker.\\n   *\u002F\\n  destroy() {\\n    return this.loadingTask.destroy();\\n  }\\n\\n  \u002F**\\n   * @param {RefProxy} ref - The page reference.\\n   * @returns {number | null} The page number, if it's cached.\\n   *\u002F\\n  cachedPageNumber(ref) {\\n    return this._transport.cachedPageNumber(ref);\\n  }\\n\\n  \u002F**\\n   * @type {DocumentInitParameters} A subset of the current\\n   *   {DocumentInitParameters}, which are needed in the viewer.\\n   *\u002F\\n  get loadingParams() {\\n    return this._transport.loadingParams;\\n  }\\n\\n  \u002F**\\n   * @type {PDFDocumentLoadingTask} The loadingTask for the current document.\\n   *\u002F\\n  get loadingTask() {\\n    return this._transport.loadingTask;\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003CObject\u003Cstring, Array\u003CObject>> | null>} A promise that is\\n   *   resolved with an {Object} containing \u002FAcroForm field data for the JS\\n   *   sandbox, or `null` when no field data is present in the PDF file.\\n   *\u002F\\n  getFieldObjects() {\\n    return this._transport.getFieldObjects();\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003Cboolean>} A promise that is resolved with `true`\\n   *   if some \u002FAcroForm fields have JavaScript actions.\\n   *\u002F\\n  hasJSActions() {\\n    return this._transport.hasJSActions();\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003CArray\u003Cstring> | null>} A promise that is resolved with an\\n   *   {Array\u003Cstring>} containing IDs of annotations that have a calculation\\n   *   action, or `null` when no such annotations are present in the PDF file.\\n   *\u002F\\n  getCalculationOrderIds() {\\n    return this._transport.getCalculationOrderIds();\\n  }\\n}\\n\\n\u002F**\\n * Page getViewport parameters.\\n *\\n * @typedef {Object} GetViewportParameters\\n * @property {number} scale - The desired scale of the viewport.\\n * @property {number} [rotation] - The desired rotation, in degrees, of\\n *   the viewport. If omitted it defaults to the page rotation.\\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\\n *   The default value is `0`.\\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\\n *   The default value is `0`.\\n * @property {boolean} [dontFlip] - If true, the y-axis will not be\\n *   flipped. The default value is `false`.\\n *\u002F\\n\\n\u002F**\\n * Page getTextContent parameters.\\n *\\n * @typedef {Object} getTextContentParameters\\n * @property {boolean} [includeMarkedContent] - When true include marked\\n *   content items in the items array of TextContent. The default is `false`.\\n * @property {boolean} [disableNormalization] - When true the text is *not*\\n *   normalized in the worker-thread. The default is `false`.\\n *\u002F\\n\\n\u002F**\\n * Page text content.\\n *\\n * @typedef {Object} TextContent\\n * @property {Array\u003CTextItem | TextMarkedContent>} items - Array of\\n *   {@link TextItem} and {@link TextMarkedContent} objects. TextMarkedContent\\n *   items are included when includeMarkedContent is true.\\n * @property {Object\u003Cstring, TextStyle>} styles - {@link TextStyle} objects,\\n *   indexed by font name.\\n * @property {string | null} lang - The document \u002FLang attribute.\\n *\u002F\\n\\n\u002F**\\n * Page text content part.\\n *\\n * @typedef {Object} TextItem\\n * @property {string} str - Text content.\\n * @property {string} dir - Text direction: 'ttb', 'ltr' or 'rtl'.\\n * @property {Array\u003Cany>} transform - Transformation matrix.\\n * @property {number} width - Width in device space.\\n * @property {number} height - Height in device space.\\n * @property {string} fontName - Font name used by PDF.js for converted font.\\n * @property {boolean} hasEOL - Indicating if the text content is followed by a\\n *   line-break.\\n *\u002F\\n\\n\u002F**\\n * Page text marked content part.\\n *\\n * @typedef {Object} TextMarkedContent\\n * @property {string} type - Either 'beginMarkedContent',\\n *   'beginMarkedContentProps', or 'endMarkedContent'.\\n * @property {string} id - The marked content identifier. Only used for type\\n *   'beginMarkedContentProps'.\\n *\u002F\\n\\n\u002F**\\n * Text style.\\n *\\n * @typedef {Object} TextStyle\\n * @property {number} ascent - Font ascent.\\n * @property {number} descent - Font descent.\\n * @property {boolean} vertical - Whether or not the text is in vertical mode.\\n * @property {string} fontFamily - The possible font family.\\n *\u002F\\n\\n\u002F**\\n * Page annotation parameters.\\n *\\n * @typedef {Object} GetAnnotationsParameters\\n * @property {string} [intent] - Determines the annotations that are fetched,\\n *   can be 'display' (viewable annotations), 'print' (printable annotations),\\n *   or 'any' (all annotations). The default value is 'display'.\\n *\u002F\\n\\n\u002F**\\n * Page render parameters.\\n *\\n * @typedef {Object} RenderParameters\\n * @property {CanvasRenderingContext2D} canvasContext - A 2D context of a DOM\\n *   Canvas object.\\n * @property {PageViewport} viewport - Rendering viewport obtained by calling\\n *   the `PDFPageProxy.getViewport` method.\\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\\n *   or 'any'. The default value is 'display'.\\n * @property {number} [annotationMode] Controls which annotations are rendered\\n *   onto the canvas, for annotations with appearance-data; the values from\\n *   {@link AnnotationMode} should be used. The following values are supported:\\n *    - `AnnotationMode.DISABLE`, which disables all annotations.\\n *    - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\\n *      it also depends on the `intent`-option, see above).\\n *    - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\\n *      interactive form elements (those will be rendered in the display layer).\\n *    - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\\n *      (as above) but where interactive form elements are updated with data\\n *      from the {@link AnnotationStorage}-instance; useful e.g. for printing.\\n *   The default value is `AnnotationMode.ENABLE`.\\n * @property {Array\u003Cany>} [transform] - Additional transform, applied just\\n *   before viewport transform.\\n * @property {CanvasGradient | CanvasPattern | string} [background] - Background\\n *   to use for the canvas.\\n *   Any valid `canvas.fillStyle` can be used: a `DOMString` parsed as CSS\\n *   \u003Ccolor> value, a `CanvasGradient` object (a linear or radial gradient) or\\n *   a `CanvasPattern` object (a repetitive image). The default value is\\n *   'rgb(255,255,255)'.\\n *\\n *   NOTE: This option may be partially, or completely, ignored when the\\n *   `pageColors`-option is used.\\n * @property {Object} [pageColors] - Overwrites background and foreground colors\\n *   with user defined ones in order to improve readability in high contrast\\n *   mode.\\n * @property {Promise\u003COptionalContentConfig>} [optionalContentConfigPromise] -\\n *   A promise that should resolve with an {@link OptionalContentConfig}\\n *   created from `PDFDocumentProxy.getOptionalContentConfig`. If `null`,\\n *   the configuration will be fetched automatically with the default visibility\\n *   states set.\\n * @property {Map\u003Cstring, HTMLCanvasElement>} [annotationCanvasMap] - Map some\\n *   annotation ids with canvases used to render them.\\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\\n * @property {boolean} [isEditing] - Render the page in editing mode.\\n *\u002F\\n\\n\u002F**\\n * Page getOperatorList parameters.\\n *\\n * @typedef {Object} GetOperatorListParameters\\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\\n *   or 'any'. The default value is 'display'.\\n * @property {number} [annotationMode] Controls which annotations are included\\n *   in the operatorList, for annotations with appearance-data; the values from\\n *   {@link AnnotationMode} should be used. The following values are supported:\\n *    - `AnnotationMode.DISABLE`, which disables all annotations.\\n *    - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\\n *      it also depends on the `intent`-option, see above).\\n *    - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\\n *      interactive form elements (those will be rendered in the display layer).\\n *    - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\\n *      (as above) but where interactive form elements are updated with data\\n *      from the {@link AnnotationStorage}-instance; useful e.g. for printing.\\n *   The default value is `AnnotationMode.ENABLE`.\\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\\n * @property {boolean} [isEditing] - Render the page in editing mode.\\n *\u002F\\n\\n\u002F**\\n * Structure tree node. The root node will have a role \\\"Root\\\".\\n *\\n * @typedef {Object} StructTreeNode\\n * @property {Array\u003CStructTreeNode | StructTreeContent>} children - Array of\\n *   {@link StructTreeNode} and {@link StructTreeContent} objects.\\n * @property {string} role - element's role, already mapped if a role map exists\\n * in the PDF.\\n *\u002F\\n\\n\u002F**\\n * Structure tree content.\\n *\\n * @typedef {Object} StructTreeContent\\n * @property {string} type - either \\\"content\\\" for page and stream structure\\n *   elements or \\\"object\\\" for object references.\\n * @property {string} id - unique id that will map to the text layer.\\n *\u002F\\n\\n\u002F**\\n * PDF page operator list.\\n *\\n * @typedef {Object} PDFOperatorList\\n * @property {Array\u003Cnumber>} fnArray - Array containing the operator functions.\\n * @property {Array\u003Cany>} argsArray - Array containing the arguments of the\\n *   functions.\\n *\u002F\\n\\n\u002F**\\n * Proxy to a `PDFPage` in the worker thread.\\n *\u002F\\nclass PDFPageProxy {\\n  #pendingCleanup = false;\\n\\n  constructor(pageIndex, pageInfo, transport, pdfBug = false) {\\n    this._pageIndex = pageIndex;\\n    this._pageInfo = pageInfo;\\n    this._transport = transport;\\n    this._stats = pdfBug ? new StatTimer() : null;\\n    this._pdfBug = pdfBug;\\n    \u002F** @type {PDFObjects} *\u002F\\n    this.commonObjs = transport.commonObjs;\\n    this.objs = new PDFObjects();\\n\\n    this._intentStates = new Map();\\n    this.destroyed = false;\\n  }\\n\\n  \u002F**\\n   * @type {number} Page number of the page. First page is 1.\\n   *\u002F\\n  get pageNumber() {\\n    return this._pageIndex + 1;\\n  }\\n\\n  \u002F**\\n   * @type {number} The number of degrees the page is rotated clockwise.\\n   *\u002F\\n  get rotate() {\\n    return this._pageInfo.rotate;\\n  }\\n\\n  \u002F**\\n   * @type {RefProxy | null} The reference that points to this page.\\n   *\u002F\\n  get ref() {\\n    return this._pageInfo.ref;\\n  }\\n\\n  \u002F**\\n   * @type {number} The default size of units in 1\u002F72nds of an inch.\\n   *\u002F\\n  get userUnit() {\\n    return this._pageInfo.userUnit;\\n  }\\n\\n  \u002F**\\n   * @type {Array\u003Cnumber>} An array of the visible portion of the PDF page in\\n   *   user space units [x1, y1, x2, y2].\\n   *\u002F\\n  get view() {\\n    return this._pageInfo.view;\\n  }\\n\\n  \u002F**\\n   * @param {GetViewportParameters} params - Viewport parameters.\\n   * @returns {PageViewport} Contains 'width' and 'height' properties\\n   *   along with transforms required for rendering.\\n   *\u002F\\n  getViewport({\\n    scale,\\n    rotation = this.rotate,\\n    offsetX = 0,\\n    offsetY = 0,\\n    dontFlip = false,\\n  } = {}) {\\n    return new PageViewport({\\n      viewBox: this.view,\\n      userUnit: this.userUnit,\\n      scale,\\n      rotation,\\n      offsetX,\\n      offsetY,\\n      dontFlip,\\n    });\\n  }\\n\\n  \u002F**\\n   * @param {GetAnnotationsParameters} [params] - Annotation parameters.\\n   * @returns {Promise\u003CArray\u003Cany>>} A promise that is resolved with an\\n   *   {Array} of the annotation objects.\\n   *\u002F\\n  getAnnotations({ intent = \\\"display\\\" } = {}) {\\n    const { renderingIntent } = this._transport.getRenderingIntent(intent);\\n\\n    return this._transport.getAnnotations(this._pageIndex, renderingIntent);\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003CObject>} A promise that is resolved with an\\n   *   {Object} with JS actions.\\n   *\u002F\\n  getJSActions() {\\n    return this._transport.getPageJSActions(this._pageIndex);\\n  }\\n\\n  \u002F**\\n   * @type {Object} The filter factory instance.\\n   *\u002F\\n  get filterFactory() {\\n    return this._transport.filterFactory;\\n  }\\n\\n  \u002F**\\n   * @type {boolean} True if only XFA form.\\n   *\u002F\\n  get isPureXfa() {\\n    return shadow(this, \\\"isPureXfa\\\", !!this._transport._htmlForXfa);\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003CObject | null>} A promise that is resolved with\\n   *   an {Object} with a fake DOM object (a tree structure where elements\\n   *   are {Object} with a name, attributes (class, style, ...), value and\\n   *   children, very similar to a HTML DOM tree), or `null` if no XFA exists.\\n   *\u002F\\n  async getXfa() {\\n    return this._transport._htmlForXfa?.children[this._pageIndex] || null;\\n  }\\n\\n  \u002F**\\n   * Begins the process of rendering a page to the desired context.\\n   *\\n   * @param {RenderParameters} params - Page render parameters.\\n   * @returns {RenderTask} An object that contains a promise that is\\n   *   resolved when the page finishes rendering.\\n   *\u002F\\n  render({\\n    canvasContext,\\n    viewport,\\n    intent = \\\"display\\\",\\n    annotationMode = AnnotationMode.ENABLE,\\n    transform = null,\\n    background = null,\\n    optionalContentConfigPromise = null,\\n    annotationCanvasMap = null,\\n    pageColors = null,\\n    printAnnotationStorage = null,\\n    isEditing = false,\\n  }) {\\n    this._stats?.time(\\\"Overall\\\");\\n\\n    const intentArgs = this._transport.getRenderingIntent(\\n      intent,\\n      annotationMode,\\n      printAnnotationStorage,\\n      isEditing\\n    );\\n    const { renderingIntent, cacheKey } = intentArgs;\\n    \u002F\u002F If there was a pending destroy, cancel it so no cleanup happens during\\n    \u002F\u002F this call to render.\\n    this.#pendingCleanup = false;\\n\\n    optionalContentConfigPromise ||=\\n      this._transport.getOptionalContentConfig(renderingIntent);\\n\\n    let intentState = this._intentStates.get(cacheKey);\\n    if (!intentState) {\\n      intentState = Object.create(null);\\n      this._intentStates.set(cacheKey, intentState);\\n    }\\n\\n    \u002F\u002F Ensure that a pending `streamReader` cancel timeout is always aborted.\\n    if (intentState.streamReaderCancelTimeout) {\\n      clearTimeout(intentState.streamReaderCancelTimeout);\\n      intentState.streamReaderCancelTimeout = null;\\n    }\\n\\n    const intentPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\\n\\n    \u002F\u002F If there's no displayReadyCapability yet, then the operatorList\\n    \u002F\u002F was never requested before. Make the request and create the promise.\\n    if (!intentState.displayReadyCapability) {\\n      intentState.displayReadyCapability = Promise.withResolvers();\\n      intentState.operatorList = {\\n        fnArray: [],\\n        argsArray: [],\\n        lastChunk: false,\\n        separateAnnots: null,\\n      };\\n\\n      this._stats?.time(\\\"Page Request\\\");\\n      this._pumpOperatorList(intentArgs);\\n    }\\n\\n    const complete = error => {\\n      intentState.renderTasks.delete(internalRenderTask);\\n\\n      \u002F\u002F Attempt to reduce memory usage during *printing*, by always running\\n      \u002F\u002F cleanup immediately once rendering has finished.\\n      if (intentPrint) {\\n        this.#pendingCleanup = true;\\n      }\\n      this.#tryCleanup();\\n\\n      if (error) {\\n        internalRenderTask.capability.reject(error);\\n\\n        this._abortOperatorList({\\n          intentState,\\n          reason: error instanceof Error ? error : new Error(error),\\n        });\\n      } else {\\n        internalRenderTask.capability.resolve();\\n      }\\n\\n      if (this._stats) {\\n        this._stats.timeEnd(\\\"Rendering\\\");\\n        this._stats.timeEnd(\\\"Overall\\\");\\n\\n        if (globalThis.Stats?.enabled) {\\n          globalThis.Stats.add(this.pageNumber, this._stats);\\n        }\\n      }\\n    };\\n\\n    const internalRenderTask = new InternalRenderTask({\\n      callback: complete,\\n      \u002F\u002F Only include the required properties, and *not* the entire object.\\n      params: {\\n        canvasContext,\\n        viewport,\\n        transform,\\n        background,\\n      },\\n      objs: this.objs,\\n      commonObjs: this.commonObjs,\\n      annotationCanvasMap,\\n      operatorList: intentState.operatorList,\\n      pageIndex: this._pageIndex,\\n      canvasFactory: this._transport.canvasFactory,\\n      filterFactory: this._transport.filterFactory,\\n      useRequestAnimationFrame: !intentPrint,\\n      pdfBug: this._pdfBug,\\n      pageColors,\\n    });\\n\\n    (intentState.renderTasks ||= new Set()).add(internalRenderTask);\\n    const renderTask = internalRenderTask.task;\\n\\n    Promise.all([\\n      intentState.displayReadyCapability.promise,\\n      optionalContentConfigPromise,\\n    ])\\n      .then(([transparency, optionalContentConfig]) => {\\n        if (this.destroyed) {\\n          complete();\\n          return;\\n        }\\n        this._stats?.time(\\\"Rendering\\\");\\n\\n        if (!(optionalContentConfig.renderingIntent & renderingIntent)) {\\n          throw new Error(\\n            \\\"Must use the same `intent`-argument when calling the `PDFPageProxy.render` \\\" +\\n              \\\"and `PDFDocumentProxy.getOptionalContentConfig` methods.\\\"\\n          );\\n        }\\n        internalRenderTask.initializeGraphics({\\n          transparency,\\n          optionalContentConfig,\\n        });\\n        internalRenderTask.operatorListChanged();\\n      })\\n      .catch(complete);\\n\\n    return renderTask;\\n  }\\n\\n  \u002F**\\n   * @param {GetOperatorListParameters} params - Page getOperatorList\\n   *   parameters.\\n   * @returns {Promise\u003CPDFOperatorList>} A promise resolved with an\\n   *   {@link PDFOperatorList} object that represents the page's operator list.\\n   *\u002F\\n  getOperatorList({\\n    intent = \\\"display\\\",\\n    annotationMode = AnnotationMode.ENABLE,\\n    printAnnotationStorage = null,\\n    isEditing = false,\\n  } = {}) {\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && !PDFJSDev.test(\\\"GENERIC\\\")) {\\n      throw new Error(\\\"Not implemented: getOperatorList\\\");\\n    }\\n    function operatorListChanged() {\\n      if (intentState.operatorList.lastChunk) {\\n        intentState.opListReadCapability.resolve(intentState.operatorList);\\n\\n        intentState.renderTasks.delete(opListTask);\\n      }\\n    }\\n\\n    const intentArgs = this._transport.getRenderingIntent(\\n      intent,\\n      annotationMode,\\n      printAnnotationStorage,\\n      isEditing,\\n      \u002F* isOpList = *\u002F true\\n    );\\n    let intentState = this._intentStates.get(intentArgs.cacheKey);\\n    if (!intentState) {\\n      intentState = Object.create(null);\\n      this._intentStates.set(intentArgs.cacheKey, intentState);\\n    }\\n    let opListTask;\\n\\n    if (!intentState.opListReadCapability) {\\n      opListTask = Object.create(null);\\n      opListTask.operatorListChanged = operatorListChanged;\\n      intentState.opListReadCapability = Promise.withResolvers();\\n      (intentState.renderTasks ||= new Set()).add(opListTask);\\n      intentState.operatorList = {\\n        fnArray: [],\\n        argsArray: [],\\n        lastChunk: false,\\n        separateAnnots: null,\\n      };\\n\\n      this._stats?.time(\\\"Page Request\\\");\\n      this._pumpOperatorList(intentArgs);\\n    }\\n    return intentState.opListReadCapability.promise;\\n  }\\n\\n  \u002F**\\n   * NOTE: All occurrences of whitespace will be replaced by\\n   * standard spaces (0x20).\\n   *\\n   * @param {getTextContentParameters} params - getTextContent parameters.\\n   * @returns {ReadableStream} Stream for reading text content chunks.\\n   *\u002F\\n  streamTextContent({\\n    includeMarkedContent = false,\\n    disableNormalization = false,\\n  } = {}) {\\n    const TEXT_CONTENT_CHUNK_SIZE = 100;\\n\\n    return this._transport.messageHandler.sendWithStream(\\n      \\\"GetTextContent\\\",\\n      {\\n        pageIndex: this._pageIndex,\\n        includeMarkedContent: includeMarkedContent === true,\\n        disableNormalization: disableNormalization === true,\\n      },\\n      {\\n        highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\\n        size(textContent) {\\n          return textContent.items.length;\\n        },\\n      }\\n    );\\n  }\\n\\n  \u002F**\\n   * NOTE: All occurrences of whitespace will be replaced by\\n   * standard spaces (0x20).\\n   *\\n   * @param {getTextContentParameters} params - getTextContent parameters.\\n   * @returns {Promise\u003CTextContent>} A promise that is resolved with a\\n   *   {@link TextContent} object that represents the page's text content.\\n   *\u002F\\n  getTextContent(params = {}) {\\n    if (this._transport._htmlForXfa) {\\n      \u002F\u002F TODO: We need to revisit this once the XFA foreground patch lands and\\n      \u002F\u002F only do this for non-foreground XFA.\\n      return this.getXfa().then(xfa => XfaText.textContent(xfa));\\n    }\\n    const readableStream = this.streamTextContent(params);\\n\\n    return new Promise(function (resolve, reject) {\\n      function pump() {\\n        reader.read().then(function ({ value, done }) {\\n          if (done) {\\n            resolve(textContent);\\n            return;\\n          }\\n          textContent.lang ??= value.lang;\\n          Object.assign(textContent.styles, value.styles);\\n          textContent.items.push(...value.items);\\n          pump();\\n        }, reject);\\n      }\\n\\n      const reader = readableStream.getReader();\\n      const textContent = {\\n        items: [],\\n        styles: Object.create(null),\\n        lang: null,\\n      };\\n      pump();\\n    });\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003CStructTreeNode>} A promise that is resolved with a\\n   *   {@link StructTreeNode} object that represents the page's structure tree,\\n   *   or `null` when no structure tree is present for the current page.\\n   *\u002F\\n  getStructTree() {\\n    return this._transport.getStructTree(this._pageIndex);\\n  }\\n\\n  \u002F**\\n   * Destroys the page object.\\n   * @private\\n   *\u002F\\n  _destroy() {\\n    this.destroyed = true;\\n\\n    const waitOn = [];\\n    for (const intentState of this._intentStates.values()) {\\n      this._abortOperatorList({\\n        intentState,\\n        reason: new Error(\\\"Page was destroyed.\\\"),\\n        force: true,\\n      });\\n\\n      if (intentState.opListReadCapability) {\\n        \u002F\u002F Avoid errors below, since the renderTasks are just stubs.\\n        continue;\\n      }\\n      for (const internalRenderTask of intentState.renderTasks) {\\n        waitOn.push(internalRenderTask.completed);\\n        internalRenderTask.cancel();\\n      }\\n    }\\n    this.objs.clear();\\n    this.#pendingCleanup = false;\\n\\n    return Promise.all(waitOn);\\n  }\\n\\n  \u002F**\\n   * Cleans up resources allocated by the page.\\n   *\\n   * @param {boolean} [resetStats] - Reset page stats, if enabled.\\n   *   The default value is `false`.\\n   * @returns {boolean} Indicates if clean-up was successfully run.\\n   *\u002F\\n  cleanup(resetStats = false) {\\n    this.#pendingCleanup = true;\\n    const success = this.#tryCleanup();\\n\\n    if (resetStats && success) {\\n      this._stats &&= new StatTimer();\\n    }\\n    return success;\\n  }\\n\\n  \u002F**\\n   * Attempts to clean up if rendering is in a state where that's possible.\\n   * @returns {boolean} Indicates if clean-up was successfully run.\\n   *\u002F\\n  #tryCleanup() {\\n    if (!this.#pendingCleanup || this.destroyed) {\\n      return false;\\n    }\\n    for (const { renderTasks, operatorList } of this._intentStates.values()) {\\n      if (renderTasks.size > 0 || !operatorList.lastChunk) {\\n        return false;\\n      }\\n    }\\n    this._intentStates.clear();\\n    this.objs.clear();\\n    this.#pendingCleanup = false;\\n    return true;\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _startRenderPage(transparency, cacheKey) {\\n    const intentState = this._intentStates.get(cacheKey);\\n    if (!intentState) {\\n      return; \u002F\u002F Rendering was cancelled.\\n    }\\n    this._stats?.timeEnd(\\\"Page Request\\\");\\n\\n    \u002F\u002F TODO Refactor RenderPageRequest to separate rendering\\n    \u002F\u002F and operator list logic\\n    intentState.displayReadyCapability?.resolve(transparency);\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _renderPageChunk(operatorListChunk, intentState) {\\n    \u002F\u002F Add the new chunk to the current operator list.\\n    for (let i = 0, ii = operatorListChunk.length; i \u003C ii; i++) {\\n      intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\\n      intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\\n    }\\n    intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\\n    intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\\n\\n    \u002F\u002F Notify all the rendering tasks there are more operators to be consumed.\\n    for (const internalRenderTask of intentState.renderTasks) {\\n      internalRenderTask.operatorListChanged();\\n    }\\n\\n    if (operatorListChunk.lastChunk) {\\n      this.#tryCleanup();\\n    }\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _pumpOperatorList({\\n    renderingIntent,\\n    cacheKey,\\n    annotationStorageSerializable,\\n    modifiedIds,\\n  }) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        Number.isInteger(renderingIntent) && renderingIntent > 0,\\n        '_pumpOperatorList: Expected valid \\\"renderingIntent\\\" argument.'\\n      );\\n    }\\n    const { map, transfer } = annotationStorageSerializable;\\n\\n    const readableStream = this._transport.messageHandler.sendWithStream(\\n      \\\"GetOperatorList\\\",\\n      {\\n        pageIndex: this._pageIndex,\\n        intent: renderingIntent,\\n        cacheKey,\\n        annotationStorage: map,\\n        modifiedIds,\\n      },\\n      transfer\\n    );\\n    const reader = readableStream.getReader();\\n\\n    const intentState = this._intentStates.get(cacheKey);\\n    intentState.streamReader = reader;\\n\\n    const pump = () => {\\n      reader.read().then(\\n        ({ value, done }) => {\\n          if (done) {\\n            intentState.streamReader = null;\\n            return;\\n          }\\n          if (this._transport.destroyed) {\\n            return; \u002F\u002F Ignore any pending requests if the worker was terminated.\\n          }\\n          this._renderPageChunk(value, intentState);\\n          pump();\\n        },\\n        reason => {\\n          intentState.streamReader = null;\\n\\n          if (this._transport.destroyed) {\\n            return; \u002F\u002F Ignore any pending requests if the worker was terminated.\\n          }\\n          if (intentState.operatorList) {\\n            \u002F\u002F Mark operator list as complete.\\n            intentState.operatorList.lastChunk = true;\\n\\n            for (const internalRenderTask of intentState.renderTasks) {\\n              internalRenderTask.operatorListChanged();\\n            }\\n            this.#tryCleanup();\\n          }\\n\\n          if (intentState.displayReadyCapability) {\\n            intentState.displayReadyCapability.reject(reason);\\n          } else if (intentState.opListReadCapability) {\\n            intentState.opListReadCapability.reject(reason);\\n          } else {\\n            throw reason;\\n          }\\n        }\\n      );\\n    };\\n    pump();\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _abortOperatorList({ intentState, reason, force = false }) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        reason instanceof Error,\\n        '_abortOperatorList: Expected valid \\\"reason\\\" argument.'\\n      );\\n    }\\n\\n    if (!intentState.streamReader) {\\n      return;\\n    }\\n    \u002F\u002F Ensure that a pending `streamReader` cancel timeout is always aborted.\\n    if (intentState.streamReaderCancelTimeout) {\\n      clearTimeout(intentState.streamReaderCancelTimeout);\\n      intentState.streamReaderCancelTimeout = null;\\n    }\\n\\n    if (!force) {\\n      \u002F\u002F Ensure that an Error occurring in *only* one `InternalRenderTask`, e.g.\\n      \u002F\u002F multiple render() calls on the same canvas, won't break all rendering.\\n      if (intentState.renderTasks.size > 0) {\\n        return;\\n      }\\n      \u002F\u002F Don't immediately abort parsing on the worker-thread when rendering is\\n      \u002F\u002F cancelled, since that will unnecessarily delay re-rendering when (for\\n      \u002F\u002F partially parsed pages) e.g. zooming\u002Frotation occurs in the viewer.\\n      if (reason instanceof RenderingCancelledException) {\\n        let delay = RENDERING_CANCELLED_TIMEOUT;\\n        if (reason.extraDelay > 0 && reason.extraDelay \u003C \u002F* ms = *\u002F 1000) {\\n          \u002F\u002F Above, we prevent the total delay from becoming arbitrarily large.\\n          delay += reason.extraDelay;\\n        }\\n\\n        intentState.streamReaderCancelTimeout = setTimeout(() => {\\n          intentState.streamReaderCancelTimeout = null;\\n          this._abortOperatorList({ intentState, reason, force: true });\\n        }, delay);\\n        return;\\n      }\\n    }\\n    intentState.streamReader\\n      .cancel(new AbortException(reason.message))\\n      .catch(() => {\\n        \u002F\u002F Avoid \\\"Uncaught promise\\\" messages in the console.\\n      });\\n    intentState.streamReader = null;\\n\\n    if (this._transport.destroyed) {\\n      return; \u002F\u002F Ignore any pending requests if the worker was terminated.\\n    }\\n    \u002F\u002F Remove the current `intentState`, since a cancelled `getOperatorList`\\n    \u002F\u002F call on the worker-thread cannot be re-started...\\n    for (const [curCacheKey, curIntentState] of this._intentStates) {\\n      if (curIntentState === intentState) {\\n        this._intentStates.delete(curCacheKey);\\n        break;\\n      }\\n    }\\n    \u002F\u002F ... and force clean-up to ensure that any old state is always removed.\\n    this.cleanup();\\n  }\\n\\n  \u002F**\\n   * @type {StatTimer | null} Returns page stats, if enabled; returns `null`\\n   *   otherwise.\\n   *\u002F\\n  get stats() {\\n    return this._stats;\\n  }\\n}\\n\\n\u002F**\\n * @typedef {Object} PDFWorkerParameters\\n * @property {string} [name] - The name of the worker.\\n * @property {Worker} [port] - The `workerPort` object.\\n * @property {number} [verbosity] - Controls the logging level;\\n *   the constants from {@link VerbosityLevel} should be used.\\n *\u002F\\n\\n\u002F**\\n * PDF.js web worker abstraction that controls the instantiation of PDF\\n * documents. Message handlers are used to pass information from the main\\n * thread to the worker thread and vice versa. If the creation of a web\\n * worker is not possible, a \\\"fake\\\" worker will be used instead.\\n *\\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\\n *\u002F\\nclass PDFWorker {\\n  #capability = Promise.withResolvers();\\n\\n  #messageHandler = null;\\n\\n  #port = null;\\n\\n  #webWorker = null;\\n\\n  static #fakeWorkerId = 0;\\n\\n  static #isWorkerDisabled = false;\\n\\n  static #workerPorts = new WeakMap();\\n\\n  static {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      if (isNodeJS) {\\n        \u002F\u002F Workers aren't supported in Node.js, force-disabling them there.\\n        this.#isWorkerDisabled = true;\\n\\n        GlobalWorkerOptions.workerSrc ||= PDFJSDev.test(\\\"LIB\\\")\\n          ? \\\"..\u002Fpdf.worker.js\\\"\\n          : \\\".\u002Fpdf.worker.js\\\";\\n      }\\n\\n      \u002F\u002F Check if URLs have the same origin. For non-HTTP based URLs, returns\\n      \u002F\u002F false.\\n      this._isSameOrigin = (baseUrl, otherUrl) => {\\n        const base = URL.parse(baseUrl);\\n        if (!base?.origin || base.origin === \\\"null\\\") {\\n          return false; \u002F\u002F non-HTTP url\\n        }\\n        const other = new URL(otherUrl, base);\\n        return base.origin === other.origin;\\n      };\\n\\n      this._createCDNWrapper = url => {\\n        \u002F\u002F We will rely on blob URL's property to specify origin.\\n        \u002F\u002F We want this function to fail in case if createObjectURL or Blob do\\n        \u002F\u002F not exist or fail for some reason -- our Worker creation will fail\\n        \u002F\u002F anyway.\\n        const wrapper = `await import(\\\"${url}\\\");`;\\n        return URL.createObjectURL(\\n          new Blob([wrapper], { type: \\\"text\u002Fjavascript\\\" })\\n        );\\n      };\\n\\n      this.fromPort = params => {\\n        deprecated(\\n          \\\"`PDFWorker.fromPort` - please use `PDFWorker.create` instead.\\\"\\n        );\\n        if (!params?.port) {\\n          throw new Error(\\\"PDFWorker.fromPort - invalid method signature.\\\");\\n        }\\n        return this.create(params);\\n      };\\n    }\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      this._resetGlobalState = () => {\\n        this.#isWorkerDisabled = false;\\n        delete globalThis.pdfjsWorker;\\n      };\\n    }\\n  }\\n\\n  constructor({\\n    name = null,\\n    port = null,\\n    verbosity = getVerbosityLevel(),\\n  } = {}) {\\n    this.name = name;\\n    this.destroyed = false;\\n    this.verbosity = verbosity;\\n\\n    if (port) {\\n      if (PDFWorker.#workerPorts.has(port)) {\\n        throw new Error(\\\"Cannot use more than one PDFWorker per port.\\\");\\n      }\\n      PDFWorker.#workerPorts.set(port, this);\\n      this.#initializeFromPort(port);\\n    } else {\\n      this.#initialize();\\n    }\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      \u002F\u002F For testing purposes.\\n      Object.defineProperty(this, \\\"_webWorker\\\", {\\n        get() {\\n          return this.#webWorker;\\n        },\\n      });\\n    }\\n  }\\n\\n  \u002F**\\n   * Promise for worker initialization completion.\\n   * @type {Promise\u003Cvoid>}\\n   *\u002F\\n  get promise() {\\n    return this.#capability.promise;\\n  }\\n\\n  #resolve() {\\n    this.#capability.resolve();\\n    \u002F\u002F Send global setting, e.g. verbosity level.\\n    this.#messageHandler.send(\\\"configure\\\", {\\n      verbosity: this.verbosity,\\n    });\\n  }\\n\\n  \u002F**\\n   * The current `workerPort`, when it exists.\\n   * @type {Worker}\\n   *\u002F\\n  get port() {\\n    return this.#port;\\n  }\\n\\n  \u002F**\\n   * The current MessageHandler-instance.\\n   * @type {MessageHandler}\\n   *\u002F\\n  get messageHandler() {\\n    return this.#messageHandler;\\n  }\\n\\n  #initializeFromPort(port) {\\n    this.#port = port;\\n    this.#messageHandler = new MessageHandler(\\\"main\\\", \\\"worker\\\", port);\\n    this.#messageHandler.on(\\\"ready\\\", () => {\\n      \u002F\u002F Ignoring \\\"ready\\\" event -- MessageHandler should already be initialized\\n      \u002F\u002F and ready to accept messages.\\n    });\\n    this.#resolve();\\n  }\\n\\n  #initialize() {\\n    \u002F\u002F If worker support isn't disabled explicit and the browser has worker\\n    \u002F\u002F support, create a new web worker and test if it\u002Fthe browser fulfills\\n    \u002F\u002F all requirements to run parts of pdf.js in a web worker.\\n    \u002F\u002F Right now, the requirement is, that an Uint8Array is still an\\n    \u002F\u002F Uint8Array as it arrives on the worker.\\n    if (\\n      PDFWorker.#isWorkerDisabled ||\\n      PDFWorker.#mainThreadWorkerMessageHandler\\n    ) {\\n      this.#setupFakeWorker();\\n      return;\\n    }\\n    let { workerSrc } = PDFWorker;\\n\\n    try {\\n      \u002F\u002F Wraps workerSrc path into blob URL, if the former does not belong\\n      \u002F\u002F to the same origin.\\n      if (\\n        typeof PDFJSDev !== \\\"undefined\\\" &&\\n        PDFJSDev.test(\\\"GENERIC\\\") &&\\n        !PDFWorker._isSameOrigin(window.location, workerSrc)\\n      ) {\\n        workerSrc = PDFWorker._createCDNWrapper(\\n          new URL(workerSrc, window.location).href\\n        );\\n      }\\n\\n      const worker = new Worker(workerSrc, { type: \\\"module\\\" });\\n      const messageHandler = new MessageHandler(\\\"main\\\", \\\"worker\\\", worker);\\n      const terminateEarly = () => {\\n        ac.abort();\\n        messageHandler.destroy();\\n        worker.terminate();\\n        if (this.destroyed) {\\n          this.#capability.reject(new Error(\\\"Worker was destroyed\\\"));\\n        } else {\\n          \u002F\u002F Fall back to fake worker if the termination is caused by an\\n          \u002F\u002F error (e.g. NetworkError \u002F SecurityError).\\n          this.#setupFakeWorker();\\n        }\\n      };\\n\\n      const ac = new AbortController();\\n      worker.addEventListener(\\n        \\\"error\\\",\\n        () => {\\n          if (!this.#webWorker) {\\n            \u002F\u002F Worker failed to initialize due to an error. Clean up and fall\\n            \u002F\u002F back to the fake worker.\\n            terminateEarly();\\n          }\\n        },\\n        { signal: ac.signal }\\n      );\\n\\n      messageHandler.on(\\\"test\\\", data => {\\n        ac.abort();\\n        if (this.destroyed || !data) {\\n          terminateEarly();\\n          return;\\n        }\\n        this.#messageHandler = messageHandler;\\n        this.#port = worker;\\n        this.#webWorker = worker;\\n\\n        this.#resolve();\\n      });\\n\\n      messageHandler.on(\\\"ready\\\", data => {\\n        ac.abort();\\n        if (this.destroyed) {\\n          terminateEarly();\\n          return;\\n        }\\n        try {\\n          sendTest();\\n        } catch {\\n          \u002F\u002F We need fallback to a faked worker.\\n          this.#setupFakeWorker();\\n        }\\n      });\\n\\n      const sendTest = () => {\\n        const testObj = new Uint8Array();\\n        \u002F\u002F Ensure that we can use `postMessage` transfers.\\n        messageHandler.send(\\\"test\\\", testObj, [testObj.buffer]);\\n      };\\n\\n      \u002F\u002F It might take time for the worker to initialize. We will try to send\\n      \u002F\u002F the \\\"test\\\" message immediately, and once the \\\"ready\\\" message arrives.\\n      \u002F\u002F The worker shall process only the first received \\\"test\\\" message.\\n      sendTest();\\n      return;\\n    } catch {\\n      info(\\\"The worker has been disabled.\\\");\\n    }\\n    \u002F\u002F Either workers are not supported or have thrown an exception.\\n    \u002F\u002F Thus, we fallback to a faked worker.\\n    this.#setupFakeWorker();\\n  }\\n\\n  #setupFakeWorker() {\\n    if (!PDFWorker.#isWorkerDisabled) {\\n      warn(\\\"Setting up fake worker.\\\");\\n      PDFWorker.#isWorkerDisabled = true;\\n    }\\n\\n    PDFWorker._setupFakeWorkerGlobal\\n      .then(WorkerMessageHandler => {\\n        if (this.destroyed) {\\n          this.#capability.reject(new Error(\\\"Worker was destroyed\\\"));\\n          return;\\n        }\\n        const port = new LoopbackPort();\\n        this.#port = port;\\n\\n        \u002F\u002F All fake workers use the same port, making id unique.\\n        const id = `fake${PDFWorker.#fakeWorkerId++}`;\\n\\n        \u002F\u002F If the main thread is our worker, setup the handling for the\\n        \u002F\u002F messages -- the main thread sends to it self.\\n        const workerHandler = new MessageHandler(id + \\\"_worker\\\", id, port);\\n        WorkerMessageHandler.setup(workerHandler, port);\\n\\n        this.#messageHandler = new MessageHandler(id, id + \\\"_worker\\\", port);\\n        this.#resolve();\\n      })\\n      .catch(reason => {\\n        this.#capability.reject(\\n          new Error(`Setting up fake worker failed: \\\"${reason.message}\\\".`)\\n        );\\n      });\\n  }\\n\\n  \u002F**\\n   * Destroys the worker instance.\\n   *\u002F\\n  destroy() {\\n    this.destroyed = true;\\n\\n    \u002F\u002F We need to terminate only web worker created resource.\\n    this.#webWorker?.terminate();\\n    this.#webWorker = null;\\n\\n    PDFWorker.#workerPorts.delete(this.#port);\\n    this.#port = null;\\n\\n    this.#messageHandler?.destroy();\\n    this.#messageHandler = null;\\n  }\\n\\n  \u002F**\\n   * @param {PDFWorkerParameters} params - The worker initialization parameters.\\n   * @returns {PDFWorker}\\n   *\u002F\\n  static create(params) {\\n    const cachedPort = this.#workerPorts.get(params?.port);\\n    if (cachedPort) {\\n      if (cachedPort._pendingDestroy) {\\n        throw new Error(\\n          \\\"PDFWorker.create - the worker is being destroyed.\\\\n\\\" +\\n            \\\"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\\\"\\n        );\\n      }\\n      return cachedPort;\\n    }\\n    return new PDFWorker(params);\\n  }\\n\\n  \u002F**\\n   * The current `workerSrc`, when it exists.\\n   * @type {string}\\n   *\u002F\\n  static get workerSrc() {\\n    if (GlobalWorkerOptions.workerSrc) {\\n      return GlobalWorkerOptions.workerSrc;\\n    }\\n    throw new Error('No \\\"GlobalWorkerOptions.workerSrc\\\" specified.');\\n  }\\n\\n  static get #mainThreadWorkerMessageHandler() {\\n    try {\\n      return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\\n    } catch {\\n      return null;\\n    }\\n  }\\n\\n  \u002F\u002F Loads worker code into the main-thread.\\n  static get _setupFakeWorkerGlobal() {\\n    const loader = async () => {\\n      if (this.#mainThreadWorkerMessageHandler) {\\n        \u002F\u002F The worker was already loaded using e.g. a `\u003Cscript>` tag.\\n        return this.#mainThreadWorkerMessageHandler;\\n      }\\n      const worker =\\n        typeof PDFJSDev === \\\"undefined\\\"\\n          ? await import(\\\"pdfjs\u002Fpdf.worker.js\\\")\\n          : await __raw_import__(this.workerSrc);\\n      return worker.WorkerMessageHandler;\\n    };\\n\\n    return shadow(this, \\\"_setupFakeWorkerGlobal\\\", loader());\\n  }\\n}\\n\\n\u002F**\\n * For internal use only.\\n * @ignore\\n *\u002F\\nclass WorkerTransport {\\n  #methodPromises = new Map();\\n\\n  #pageCache = new Map();\\n\\n  #pagePromises = new Map();\\n\\n  #pageRefCache = new Map();\\n\\n  #passwordCapability = null;\\n\\n  constructor(messageHandler, loadingTask, networkStream, params, factory) {\\n    this.messageHandler = messageHandler;\\n    this.loadingTask = loadingTask;\\n    this.commonObjs = new PDFObjects();\\n    this.fontLoader = new FontLoader({\\n      ownerDocument: params.ownerDocument,\\n      styleElement: params.styleElement,\\n    });\\n    this.loadingParams = params.loadingParams;\\n    this._params = params;\\n\\n    this.canvasFactory = factory.canvasFactory;\\n    this.filterFactory = factory.filterFactory;\\n    this.cMapReaderFactory = factory.cMapReaderFactory;\\n    this.standardFontDataFactory = factory.standardFontDataFactory;\\n    this.wasmFactory = factory.wasmFactory;\\n\\n    this.destroyed = false;\\n    this.destroyCapability = null;\\n\\n    this._networkStream = networkStream;\\n    this._fullReader = null;\\n    this._lastProgress = null;\\n    this.downloadInfoCapability = Promise.withResolvers();\\n\\n    this.setupMessageHandler();\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      \u002F\u002F For testing purposes.\\n      Object.defineProperty(this, \\\"getNetworkStreamName\\\", {\\n        value: () => networkStream?.constructor?.name || null,\\n      });\\n      Object.defineProperty(this, \\\"getXFADatasets\\\", {\\n        value: () =>\\n          this.messageHandler.sendWithPromise(\\\"GetXFADatasets\\\", null),\\n      });\\n      Object.defineProperty(this, \\\"getXRefPrevValue\\\", {\\n        value: () =>\\n          this.messageHandler.sendWithPromise(\\\"GetXRefPrevValue\\\", null),\\n      });\\n      Object.defineProperty(this, \\\"getStartXRefPos\\\", {\\n        value: () =>\\n          this.messageHandler.sendWithPromise(\\\"GetStartXRefPos\\\", null),\\n      });\\n      Object.defineProperty(this, \\\"getAnnotArray\\\", {\\n        value: pageIndex =>\\n          this.messageHandler.sendWithPromise(\\\"GetAnnotArray\\\", { pageIndex }),\\n      });\\n    }\\n  }\\n\\n  #cacheSimpleMethod(name, data = null) {\\n    const cachedPromise = this.#methodPromises.get(name);\\n    if (cachedPromise) {\\n      return cachedPromise;\\n    }\\n    const promise = this.messageHandler.sendWithPromise(name, data);\\n\\n    this.#methodPromises.set(name, promise);\\n    return promise;\\n  }\\n\\n  get annotationStorage() {\\n    return shadow(this, \\\"annotationStorage\\\", new AnnotationStorage());\\n  }\\n\\n  getRenderingIntent(\\n    intent,\\n    annotationMode = AnnotationMode.ENABLE,\\n    printAnnotationStorage = null,\\n    isEditing = false,\\n    isOpList = false\\n  ) {\\n    let renderingIntent = RenderingIntentFlag.DISPLAY; \u002F\u002F Default value.\\n    let annotationStorageSerializable = SerializableEmpty;\\n\\n    switch (intent) {\\n      case \\\"any\\\":\\n        renderingIntent = RenderingIntentFlag.ANY;\\n        break;\\n      case \\\"display\\\":\\n        break;\\n      case \\\"print\\\":\\n        renderingIntent = RenderingIntentFlag.PRINT;\\n        break;\\n      default:\\n        warn(`getRenderingIntent - invalid intent: ${intent}`);\\n    }\\n\\n    const annotationStorage =\\n      renderingIntent & RenderingIntentFlag.PRINT &&\\n      printAnnotationStorage instanceof PrintAnnotationStorage\\n        ? printAnnotationStorage\\n        : this.annotationStorage;\\n\\n    switch (annotationMode) {\\n      case AnnotationMode.DISABLE:\\n        renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\\n        break;\\n      case AnnotationMode.ENABLE:\\n        break;\\n      case AnnotationMode.ENABLE_FORMS:\\n        renderingIntent += RenderingIntentFlag.ANNOTATIONS_FORMS;\\n        break;\\n      case AnnotationMode.ENABLE_STORAGE:\\n        renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\\n\\n        annotationStorageSerializable = annotationStorage.serializable;\\n        break;\\n      default:\\n        warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\\n    }\\n\\n    if (isEditing) {\\n      renderingIntent += RenderingIntentFlag.IS_EDITING;\\n    }\\n    if (isOpList) {\\n      renderingIntent += RenderingIntentFlag.OPLIST;\\n    }\\n\\n    const { ids: modifiedIds, hash: modifiedIdsHash } =\\n      annotationStorage.modifiedIds;\\n\\n    const cacheKeyBuf = [\\n      renderingIntent,\\n      annotationStorageSerializable.hash,\\n      modifiedIdsHash,\\n    ];\\n\\n    return {\\n      renderingIntent,\\n      cacheKey: cacheKeyBuf.join(\\\"_\\\"),\\n      annotationStorageSerializable,\\n      modifiedIds,\\n    };\\n  }\\n\\n  destroy() {\\n    if (this.destroyCapability) {\\n      return this.destroyCapability.promise;\\n    }\\n\\n    this.destroyed = true;\\n    this.destroyCapability = Promise.withResolvers();\\n\\n    this.#passwordCapability?.reject(\\n      new Error(\\\"Worker was destroyed during onPassword callback\\\")\\n    );\\n\\n    const waitOn = [];\\n    \u002F\u002F We need to wait for all renderings to be completed, e.g.\\n    \u002F\u002F timeout\u002FrAF can take a long time.\\n    for (const page of this.#pageCache.values()) {\\n      waitOn.push(page._destroy());\\n    }\\n    this.#pageCache.clear();\\n    this.#pagePromises.clear();\\n    this.#pageRefCache.clear();\\n    \u002F\u002F Allow `AnnotationStorage`-related clean-up when destroying the document.\\n    if (this.hasOwnProperty(\\\"annotationStorage\\\")) {\\n      this.annotationStorage.resetModified();\\n    }\\n    \u002F\u002F We also need to wait for the worker to finish its long running tasks.\\n    const terminated = this.messageHandler.sendWithPromise(\\\"Terminate\\\", null);\\n    waitOn.push(terminated);\\n\\n    Promise.all(waitOn).then(() => {\\n      this.commonObjs.clear();\\n      this.fontLoader.clear();\\n      this.#methodPromises.clear();\\n      this.filterFactory.destroy();\\n      TextLayer.cleanup();\\n\\n      this._networkStream?.cancelAllRequests(\\n        new AbortException(\\\"Worker was terminated.\\\")\\n      );\\n\\n      this.messageHandler?.destroy();\\n      this.messageHandler = null;\\n\\n      this.destroyCapability.resolve();\\n    }, this.destroyCapability.reject);\\n    return this.destroyCapability.promise;\\n  }\\n\\n  setupMessageHandler() {\\n    const { messageHandler, loadingTask } = this;\\n\\n    messageHandler.on(\\\"GetReader\\\", (data, sink) => {\\n      assert(\\n        this._networkStream,\\n        \\\"GetReader - no `IPDFStream` instance available.\\\"\\n      );\\n      this._fullReader = this._networkStream.getFullReader();\\n      this._fullReader.onProgress = evt => {\\n        this._lastProgress = {\\n          loaded: evt.loaded,\\n          total: evt.total,\\n        };\\n      };\\n      sink.onPull = () => {\\n        this._fullReader\\n          .read()\\n          .then(function ({ value, done }) {\\n            if (done) {\\n              sink.close();\\n              return;\\n            }\\n            assert(\\n              value instanceof ArrayBuffer,\\n              \\\"GetReader - expected an ArrayBuffer.\\\"\\n            );\\n            \u002F\u002F Enqueue data chunk into sink, and transfer it\\n            \u002F\u002F to other side as `Transferable` object.\\n            sink.enqueue(new Uint8Array(value), 1, [value]);\\n          })\\n          .catch(reason => {\\n            sink.error(reason);\\n          });\\n      };\\n\\n      sink.onCancel = reason => {\\n        this._fullReader.cancel(reason);\\n\\n        sink.ready.catch(readyReason => {\\n          if (this.destroyed) {\\n            return; \u002F\u002F Ignore any pending requests if the worker was terminated.\\n          }\\n          throw readyReason;\\n        });\\n      };\\n    });\\n\\n    messageHandler.on(\\\"ReaderHeadersReady\\\", async data => {\\n      await this._fullReader.headersReady;\\n\\n      const { isStreamingSupported, isRangeSupported, contentLength } =\\n        this._fullReader;\\n\\n      \u002F\u002F If stream or range are disabled, it's our only way to report\\n      \u002F\u002F loading progress.\\n      if (!isStreamingSupported || !isRangeSupported) {\\n        if (this._lastProgress) {\\n          loadingTask.onProgress?.(this._lastProgress);\\n        }\\n        this._fullReader.onProgress = evt => {\\n          loadingTask.onProgress?.({\\n            loaded: evt.loaded,\\n            total: evt.total,\\n          });\\n        };\\n      }\\n\\n      return { isStreamingSupported, isRangeSupported, contentLength };\\n    });\\n\\n    messageHandler.on(\\\"GetRangeReader\\\", (data, sink) => {\\n      assert(\\n        this._networkStream,\\n        \\\"GetRangeReader - no `IPDFStream` instance available.\\\"\\n      );\\n      const rangeReader = this._networkStream.getRangeReader(\\n        data.begin,\\n        data.end\\n      );\\n\\n      \u002F\u002F When streaming is enabled, it's possible that the data requested here\\n      \u002F\u002F has already been fetched via the `_fullRequestReader` implementation.\\n      \u002F\u002F However, given that the PDF data is loaded asynchronously on the\\n      \u002F\u002F main-thread and then sent via `postMessage` to the worker-thread,\\n      \u002F\u002F it may not have been available during parsing (hence the attempt to\\n      \u002F\u002F use range requests here).\\n      \u002F\u002F\\n      \u002F\u002F To avoid wasting time and resources here, we'll thus *not* dispatch\\n      \u002F\u002F range requests if the data was already loaded but has not been sent to\\n      \u002F\u002F the worker-thread yet (which will happen via the `_fullRequestReader`).\\n      if (!rangeReader) {\\n        sink.close();\\n        return;\\n      }\\n\\n      sink.onPull = () => {\\n        rangeReader\\n          .read()\\n          .then(function ({ value, done }) {\\n            if (done) {\\n              sink.close();\\n              return;\\n            }\\n            assert(\\n              value instanceof ArrayBuffer,\\n              \\\"GetRangeReader - expected an ArrayBuffer.\\\"\\n            );\\n            sink.enqueue(new Uint8Array(value), 1, [value]);\\n          })\\n          .catch(reason => {\\n            sink.error(reason);\\n          });\\n      };\\n\\n      sink.onCancel = reason => {\\n        rangeReader.cancel(reason);\\n\\n        sink.ready.catch(readyReason => {\\n          if (this.destroyed) {\\n            return; \u002F\u002F Ignore any pending requests if the worker was terminated.\\n          }\\n          throw readyReason;\\n        });\\n      };\\n    });\\n\\n    messageHandler.on(\\\"GetDoc\\\", ({ pdfInfo }) => {\\n      this._numPages = pdfInfo.numPages;\\n      this._htmlForXfa = pdfInfo.htmlForXfa;\\n      delete pdfInfo.htmlForXfa;\\n      loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\\n    });\\n\\n    messageHandler.on(\\\"DocException\\\", ex => {\\n      loadingTask._capability.reject(wrapReason(ex));\\n    });\\n\\n    messageHandler.on(\\\"PasswordRequest\\\", ex => {\\n      this.#passwordCapability = Promise.withResolvers();\\n\\n      try {\\n        if (!loadingTask.onPassword) {\\n          throw wrapReason(ex);\\n        }\\n\\n        const updatePassword = password => {\\n          if (password instanceof Error) {\\n            this.#passwordCapability.reject(password);\\n          } else {\\n            this.#passwordCapability.resolve({ password });\\n          }\\n        };\\n        loadingTask.onPassword(updatePassword, ex.code);\\n      } catch (err) {\\n        this.#passwordCapability.reject(err);\\n      }\\n      return this.#passwordCapability.promise;\\n    });\\n\\n    messageHandler.on(\\\"DataLoaded\\\", data => {\\n      \u002F\u002F For consistency: Ensure that progress is always reported when the\\n      \u002F\u002F entire PDF file has been loaded, regardless of how it was fetched.\\n      loadingTask.onProgress?.({\\n        loaded: data.length,\\n        total: data.length,\\n      });\\n\\n      this.downloadInfoCapability.resolve(data);\\n    });\\n\\n    messageHandler.on(\\\"StartRenderPage\\\", data => {\\n      if (this.destroyed) {\\n        return; \u002F\u002F Ignore any pending requests if the worker was terminated.\\n      }\\n\\n      const page = this.#pageCache.get(data.pageIndex);\\n      page._startRenderPage(data.transparency, data.cacheKey);\\n    });\\n\\n    messageHandler.on(\\\"commonobj\\\", ([id, type, exportedData]) => {\\n      if (this.destroyed) {\\n        return null; \u002F\u002F Ignore any pending requests if the worker was terminated.\\n      }\\n\\n      if (this.commonObjs.has(id)) {\\n        return null;\\n      }\\n\\n      switch (type) {\\n        case \\\"Font\\\":\\n          if (\\\"error\\\" in exportedData) {\\n            const exportedError = exportedData.error;\\n            warn(`Error during font loading: ${exportedError}`);\\n            this.commonObjs.resolve(id, exportedError);\\n            break;\\n          }\\n\\n          const inspectFont =\\n            this._params.pdfBug && globalThis.FontInspector?.enabled\\n              ? (font, url) => globalThis.FontInspector.fontAdded(font, url)\\n              : null;\\n          const font = new FontFaceObject(exportedData, inspectFont);\\n\\n          this.fontLoader\\n            .bind(font)\\n            .catch(() => messageHandler.sendWithPromise(\\\"FontFallback\\\", { id }))\\n            .finally(() => {\\n              if (!font.fontExtraProperties && font.data) {\\n                \u002F\u002F Immediately release the `font.data` property once the font\\n                \u002F\u002F has been attached to the DOM, since it's no longer needed,\\n                \u002F\u002F rather than waiting for a `PDFDocumentProxy.cleanup` call.\\n                \u002F\u002F Since `font.data` could be very large, e.g. in some cases\\n                \u002F\u002F multiple megabytes, this will help reduce memory usage.\\n                font.data = null;\\n              }\\n              this.commonObjs.resolve(id, font);\\n            });\\n          break;\\n        case \\\"CopyLocalImage\\\":\\n          const { imageRef } = exportedData;\\n          assert(imageRef, \\\"The imageRef must be defined.\\\");\\n\\n          for (const pageProxy of this.#pageCache.values()) {\\n            for (const [, data] of pageProxy.objs) {\\n              if (data?.ref !== imageRef) {\\n                continue;\\n              }\\n              if (!data.dataLen) {\\n                return null;\\n              }\\n              this.commonObjs.resolve(id, structuredClone(data));\\n              return data.dataLen;\\n            }\\n          }\\n          break;\\n        case \\\"FontPath\\\":\\n        case \\\"Image\\\":\\n        case \\\"Pattern\\\":\\n          this.commonObjs.resolve(id, exportedData);\\n          break;\\n        default:\\n          throw new Error(`Got unknown common object type ${type}`);\\n      }\\n\\n      return null;\\n    });\\n\\n    messageHandler.on(\\\"obj\\\", ([id, pageIndex, type, imageData]) => {\\n      if (this.destroyed) {\\n        \u002F\u002F Ignore any pending requests if the worker was terminated.\\n        return;\\n      }\\n\\n      const pageProxy = this.#pageCache.get(pageIndex);\\n      if (pageProxy.objs.has(id)) {\\n        return;\\n      }\\n      \u002F\u002F Don't store data *after* cleanup has successfully run, see bug 1854145.\\n      if (pageProxy._intentStates.size === 0) {\\n        imageData?.bitmap?.close(); \u002F\u002F Release any `ImageBitmap` data.\\n        return;\\n      }\\n\\n      switch (type) {\\n        case \\\"Image\\\":\\n        case \\\"Pattern\\\":\\n          pageProxy.objs.resolve(id, imageData);\\n          break;\\n        default:\\n          throw new Error(`Got unknown object type ${type}`);\\n      }\\n    });\\n\\n    messageHandler.on(\\\"DocProgress\\\", data => {\\n      if (this.destroyed) {\\n        return; \u002F\u002F Ignore any pending requests if the worker was terminated.\\n      }\\n      loadingTask.onProgress?.({\\n        loaded: data.loaded,\\n        total: data.total,\\n      });\\n    });\\n\\n    messageHandler.on(\\\"FetchBinaryData\\\", async data => {\\n      if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n        throw new Error(\\\"Not implemented: FetchBinaryData\\\");\\n      }\\n      if (this.destroyed) {\\n        throw new Error(\\\"Worker was destroyed.\\\");\\n      }\\n      const factory = this[data.type];\\n\\n      if (!factory) {\\n        throw new Error(\\n          `${data.type} not initialized, see the \\\\`useWorkerFetch\\\\` parameter.`\\n        );\\n      }\\n      return factory.fetch(data);\\n    });\\n  }\\n\\n  getData() {\\n    return this.messageHandler.sendWithPromise(\\\"GetData\\\", null);\\n  }\\n\\n  saveDocument() {\\n    if (this.annotationStorage.size \u003C= 0) {\\n      warn(\\n        \\\"saveDocument called while `annotationStorage` is empty, \\\" +\\n          \\\"please use the getData-method instead.\\\"\\n      );\\n    }\\n    const { map, transfer } = this.annotationStorage.serializable;\\n\\n    return this.messageHandler\\n      .sendWithPromise(\\n        \\\"SaveDocument\\\",\\n        {\\n          isPureXfa: !!this._htmlForXfa,\\n          numPages: this._numPages,\\n          annotationStorage: map,\\n          filename: this._fullReader?.filename ?? null,\\n        },\\n        transfer\\n      )\\n      .finally(() => {\\n        this.annotationStorage.resetModified();\\n      });\\n  }\\n\\n  getPage(pageNumber) {\\n    if (\\n      !Number.isInteger(pageNumber) ||\\n      pageNumber \u003C= 0 ||\\n      pageNumber > this._numPages\\n    ) {\\n      return Promise.reject(new Error(\\\"Invalid page request.\\\"));\\n    }\\n\\n    const pageIndex = pageNumber - 1,\\n      cachedPromise = this.#pagePromises.get(pageIndex);\\n    if (cachedPromise) {\\n      return cachedPromise;\\n    }\\n    const promise = this.messageHandler\\n      .sendWithPromise(\\\"GetPage\\\", {\\n        pageIndex,\\n      })\\n      .then(pageInfo => {\\n        if (this.destroyed) {\\n          throw new Error(\\\"Transport destroyed\\\");\\n        }\\n        if (pageInfo.refStr) {\\n          this.#pageRefCache.set(pageInfo.refStr, pageNumber);\\n        }\\n\\n        const page = new PDFPageProxy(\\n          pageIndex,\\n          pageInfo,\\n          this,\\n          this._params.pdfBug\\n        );\\n        this.#pageCache.set(pageIndex, page);\\n        return page;\\n      });\\n    this.#pagePromises.set(pageIndex, promise);\\n    return promise;\\n  }\\n\\n  getPageIndex(ref) {\\n    if (!isRefProxy(ref)) {\\n      return Promise.reject(new Error(\\\"Invalid pageIndex request.\\\"));\\n    }\\n    return this.messageHandler.sendWithPromise(\\\"GetPageIndex\\\", {\\n      num: ref.num,\\n      gen: ref.gen,\\n    });\\n  }\\n\\n  getAnnotations(pageIndex, intent) {\\n    return this.messageHandler.sendWithPromise(\\\"GetAnnotations\\\", {\\n      pageIndex,\\n      intent,\\n    });\\n  }\\n\\n  getFieldObjects() {\\n    return this.#cacheSimpleMethod(\\\"GetFieldObjects\\\");\\n  }\\n\\n  hasJSActions() {\\n    return this.#cacheSimpleMethod(\\\"HasJSActions\\\");\\n  }\\n\\n  getCalculationOrderIds() {\\n    return this.messageHandler.sendWithPromise(\\\"GetCalculationOrderIds\\\", null);\\n  }\\n\\n  getDestinations() {\\n    return this.messageHandler.sendWithPromise(\\\"GetDestinations\\\", null);\\n  }\\n\\n  getDestination(id) {\\n    if (typeof id !== \\\"string\\\") {\\n      return Promise.reject(new Error(\\\"Invalid destination request.\\\"));\\n    }\\n    return this.messageHandler.sendWithPromise(\\\"GetDestination\\\", {\\n      id,\\n    });\\n  }\\n\\n  getPageLabels() {\\n    return this.messageHandler.sendWithPromise(\\\"GetPageLabels\\\", null);\\n  }\\n\\n  getPageLayout() {\\n    return this.messageHandler.sendWithPromise(\\\"GetPageLayout\\\", null);\\n  }\\n\\n  getPageMode() {\\n    return this.messageHandler.sendWithPromise(\\\"GetPageMode\\\", null);\\n  }\\n\\n  getViewerPreferences() {\\n    return this.messageHandler.sendWithPromise(\\\"GetViewerPreferences\\\", null);\\n  }\\n\\n  getOpenAction() {\\n    return this.messageHandler.sendWithPromise(\\\"GetOpenAction\\\", null);\\n  }\\n\\n  getAttachments() {\\n    return this.messageHandler.sendWithPromise(\\\"GetAttachments\\\", null);\\n  }\\n\\n  getDocJSActions() {\\n    return this.#cacheSimpleMethod(\\\"GetDocJSActions\\\");\\n  }\\n\\n  getPageJSActions(pageIndex) {\\n    return this.messageHandler.sendWithPromise(\\\"GetPageJSActions\\\", {\\n      pageIndex,\\n    });\\n  }\\n\\n  getStructTree(pageIndex) {\\n    return this.messageHandler.sendWithPromise(\\\"GetStructTree\\\", {\\n      pageIndex,\\n    });\\n  }\\n\\n  getOutline() {\\n    return this.messageHandler.sendWithPromise(\\\"GetOutline\\\", null);\\n  }\\n\\n  getOptionalContentConfig(renderingIntent) {\\n    return this.#cacheSimpleMethod(\\\"GetOptionalContentConfig\\\").then(\\n      data => new OptionalContentConfig(data, renderingIntent)\\n    );\\n  }\\n\\n  getPermissions() {\\n    return this.messageHandler.sendWithPromise(\\\"GetPermissions\\\", null);\\n  }\\n\\n  getMetadata() {\\n    const name = \\\"GetMetadata\\\",\\n      cachedPromise = this.#methodPromises.get(name);\\n    if (cachedPromise) {\\n      return cachedPromise;\\n    }\\n    const promise = this.messageHandler\\n      .sendWithPromise(name, null)\\n      .then(results => ({\\n        info: results[0],\\n        metadata: results[1] ? new Metadata(results[1]) : null,\\n        contentDispositionFilename: this._fullReader?.filename ?? null,\\n        contentLength: this._fullReader?.contentLength ?? null,\\n      }));\\n    this.#methodPromises.set(name, promise);\\n    return promise;\\n  }\\n\\n  getMarkInfo() {\\n    return this.messageHandler.sendWithPromise(\\\"GetMarkInfo\\\", null);\\n  }\\n\\n  async startCleanup(keepLoadedFonts = false) {\\n    if (this.destroyed) {\\n      return; \u002F\u002F No need to manually clean-up when destruction has started.\\n    }\\n    await this.messageHandler.sendWithPromise(\\\"Cleanup\\\", null);\\n\\n    for (const page of this.#pageCache.values()) {\\n      const cleanupSuccessful = page.cleanup();\\n\\n      if (!cleanupSuccessful) {\\n        throw new Error(\\n          `startCleanup: Page ${page.pageNumber} is currently rendering.`\\n        );\\n      }\\n    }\\n    this.commonObjs.clear();\\n    if (!keepLoadedFonts) {\\n      this.fontLoader.clear();\\n    }\\n    this.#methodPromises.clear();\\n    this.filterFactory.destroy(\u002F* keepHCM = *\u002F true);\\n    TextLayer.cleanup();\\n  }\\n\\n  cachedPageNumber(ref) {\\n    if (!isRefProxy(ref)) {\\n      return null;\\n    }\\n    const refStr = ref.gen === 0 ? `${ref.num}R` : `${ref.num}R${ref.gen}`;\\n    return this.#pageRefCache.get(refStr) ?? null;\\n  }\\n}\\n\\n\u002F**\\n * Allows controlling of the rendering tasks.\\n *\u002F\\nclass RenderTask {\\n  #internalRenderTask = null;\\n\\n  \u002F**\\n   * Callback for incremental rendering -- a function that will be called\\n   * each time the rendering is paused.  To continue rendering call the\\n   * function that is the first argument to the callback.\\n   * @type {function}\\n   *\u002F\\n  onContinue = null;\\n\\n  \u002F**\\n   * A function that will be synchronously called when the rendering tasks\\n   * finishes with an error (either because of an actual error, or because the\\n   * rendering is cancelled).\\n   *\\n   * @type {function}\\n   * @param {Error} error\\n   *\u002F\\n  onError = null;\\n\\n  constructor(internalRenderTask) {\\n    this.#internalRenderTask = internalRenderTask;\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      \u002F\u002F For testing purposes.\\n      Object.defineProperty(this, \\\"getOperatorList\\\", {\\n        value: () => this.#internalRenderTask.operatorList,\\n      });\\n    }\\n  }\\n\\n  \u002F**\\n   * Promise for rendering task completion.\\n   * @type {Promise\u003Cvoid>}\\n   *\u002F\\n  get promise() {\\n    return this.#internalRenderTask.capability.promise;\\n  }\\n\\n  \u002F**\\n   * Cancels the rendering task. If the task is currently rendering it will\\n   * not be cancelled until graphics pauses with a timeout. The promise that\\n   * this object extends will be rejected when cancelled.\\n   *\\n   * @param {number} [extraDelay]\\n   *\u002F\\n  cancel(extraDelay = 0) {\\n    this.#internalRenderTask.cancel(\u002F* error = *\u002F null, extraDelay);\\n  }\\n\\n  \u002F**\\n   * Whether form fields are rendered separately from the main operatorList.\\n   * @type {boolean}\\n   *\u002F\\n  get separateAnnots() {\\n    const { separateAnnots } = this.#internalRenderTask.operatorList;\\n    if (!separateAnnots) {\\n      return false;\\n    }\\n    const { annotationCanvasMap } = this.#internalRenderTask;\\n    return (\\n      separateAnnots.form ||\\n      (separateAnnots.canvas && annotationCanvasMap?.size > 0)\\n    );\\n  }\\n}\\n\\n\u002F**\\n * For internal use only.\\n * @ignore\\n *\u002F\\nclass InternalRenderTask {\\n  #rAF = null;\\n\\n  static #canvasInUse = new WeakSet();\\n\\n  constructor({\\n    callback,\\n    params,\\n    objs,\\n    commonObjs,\\n    annotationCanvasMap,\\n    operatorList,\\n    pageIndex,\\n    canvasFactory,\\n    filterFactory,\\n    useRequestAnimationFrame = false,\\n    pdfBug = false,\\n    pageColors = null,\\n  }) {\\n    this.callback = callback;\\n    this.params = params;\\n    this.objs = objs;\\n    this.commonObjs = commonObjs;\\n    this.annotationCanvasMap = annotationCanvasMap;\\n    this.operatorListIdx = null;\\n    this.operatorList = operatorList;\\n    this._pageIndex = pageIndex;\\n    this.canvasFactory = canvasFactory;\\n    this.filterFactory = filterFactory;\\n    this._pdfBug = pdfBug;\\n    this.pageColors = pageColors;\\n\\n    this.running = false;\\n    this.graphicsReadyCallback = null;\\n    this.graphicsReady = false;\\n    this._useRequestAnimationFrame =\\n      useRequestAnimationFrame === true && typeof window !== \\\"undefined\\\";\\n    this.cancelled = false;\\n    this.capability = Promise.withResolvers();\\n    this.task = new RenderTask(this);\\n    \u002F\u002F caching this-bound methods\\n    this._cancelBound = this.cancel.bind(this);\\n    this._continueBound = this._continue.bind(this);\\n    this._scheduleNextBound = this._scheduleNext.bind(this);\\n    this._nextBound = this._next.bind(this);\\n    this._canvas = params.canvasContext.canvas;\\n  }\\n\\n  get completed() {\\n    return this.capability.promise.catch(function () {\\n      \u002F\u002F Ignoring errors, since we only want to know when rendering is\\n      \u002F\u002F no longer pending.\\n    });\\n  }\\n\\n  initializeGraphics({ transparency = false, optionalContentConfig }) {\\n    if (this.cancelled) {\\n      return;\\n    }\\n    if (this._canvas) {\\n      if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\\n        throw new Error(\\n          \\\"Cannot use the same canvas during multiple render() operations. \\\" +\\n            \\\"Use different canvas or ensure previous operations were \\\" +\\n            \\\"cancelled or completed.\\\"\\n        );\\n      }\\n      InternalRenderTask.#canvasInUse.add(this._canvas);\\n    }\\n\\n    if (this._pdfBug && globalThis.StepperManager?.enabled) {\\n      this.stepper = globalThis.StepperManager.create(this._pageIndex);\\n      this.stepper.init(this.operatorList);\\n      this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\\n    }\\n    const { canvasContext, viewport, transform, background } = this.params;\\n\\n    this.gfx = new CanvasGraphics(\\n      canvasContext,\\n      this.commonObjs,\\n      this.objs,\\n      this.canvasFactory,\\n      this.filterFactory,\\n      { optionalContentConfig },\\n      this.annotationCanvasMap,\\n      this.pageColors\\n    );\\n    this.gfx.beginDrawing({\\n      transform,\\n      viewport,\\n      transparency,\\n      background,\\n    });\\n    this.operatorListIdx = 0;\\n    this.graphicsReady = true;\\n    this.graphicsReadyCallback?.();\\n  }\\n\\n  cancel(error = null, extraDelay = 0) {\\n    this.running = false;\\n    this.cancelled = true;\\n    this.gfx?.endDrawing();\\n    if (this.#rAF) {\\n      window.cancelAnimationFrame(this.#rAF);\\n      this.#rAF = null;\\n    }\\n    InternalRenderTask.#canvasInUse.delete(this._canvas);\\n\\n    error ||= new RenderingCancelledException(\\n      `Rendering cancelled, page ${this._pageIndex + 1}`,\\n      extraDelay\\n    );\\n    this.callback(error);\\n\\n    this.task.onError?.(error);\\n  }\\n\\n  operatorListChanged() {\\n    if (!this.graphicsReady) {\\n      this.graphicsReadyCallback ||= this._continueBound;\\n      return;\\n    }\\n    this.stepper?.updateOperatorList(this.operatorList);\\n\\n    if (this.running) {\\n      return;\\n    }\\n    this._continue();\\n  }\\n\\n  _continue() {\\n    this.running = true;\\n    if (this.cancelled) {\\n      return;\\n    }\\n    if (this.task.onContinue) {\\n      this.task.onContinue(this._scheduleNextBound);\\n    } else {\\n      this._scheduleNext();\\n    }\\n  }\\n\\n  _scheduleNext() {\\n    if (this._useRequestAnimationFrame) {\\n      this.#rAF = window.requestAnimationFrame(() => {\\n        this.#rAF = null;\\n        this._nextBound().catch(this._cancelBound);\\n      });\\n    } else {\\n      Promise.resolve().then(this._nextBound).catch(this._cancelBound);\\n    }\\n  }\\n\\n  async _next() {\\n    if (this.cancelled) {\\n      return;\\n    }\\n    this.operatorListIdx = this.gfx.executeOperatorList(\\n      this.operatorList,\\n      this.operatorListIdx,\\n      this._continueBound,\\n      this.stepper\\n    );\\n    if (this.operatorListIdx === this.operatorList.argsArray.length) {\\n      this.running = false;\\n      if (this.operatorList.lastChunk) {\\n        this.gfx.endDrawing();\\n        InternalRenderTask.#canvasInUse.delete(this._canvas);\\n\\n        this.callback();\\n      }\\n    }\\n  }\\n}\\n\\n\u002F** @type {string} *\u002F\\nconst version =\\n  typeof PDFJSDev !== \\\"undefined\\\" ? PDFJSDev.eval(\\\"BUNDLE_VERSION\\\") : null;\\n\u002F** @type {string} *\u002F\\nconst build =\\n  typeof PDFJSDev !== \\\"undefined\\\" ? PDFJSDev.eval(\\\"BUNDLE_BUILD\\\") : null;\\n\\nexport {\\n  build,\\n  getDocument,\\n  PDFDataRangeTransport,\\n  PDFDocumentLoadingTask,\\n  PDFDocumentProxy,\\n  PDFPageProxy,\\n  PDFWorker,\\n  RenderTask,\\n  version,\\n};\\n\",\"\u002F* Copyright 2020 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F**\\n * PLEASE NOTE: This file is currently imported in both the `..\u002Fdisplay\u002F` and\\n *              `..\u002Fscripting_api\u002F` folders, hence be EXTREMELY careful about\\n *              introducing any dependencies here since that can lead to an\\n *              unexpected\u002Funnecessary size increase of the *built* files.\\n *\u002F\\n\\nfunction makeColorComp(n) {\\n  return Math.floor(Math.max(0, Math.min(1, n)) * 255)\\n    .toString(16)\\n    .padStart(2, \\\"0\\\");\\n}\\n\\nfunction scaleAndClamp(x) {\\n  return Math.max(0, Math.min(255, 255 * x));\\n}\\n\\n\u002F\u002F PDF specifications section 10.3\\nclass ColorConverters {\\n  static CMYK_G([c, y, m, k]) {\\n    return [\\\"G\\\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\\n  }\\n\\n  static G_CMYK([g]) {\\n    return [\\\"CMYK\\\", 0, 0, 0, 1 - g];\\n  }\\n\\n  static G_RGB([g]) {\\n    return [\\\"RGB\\\", g, g, g];\\n  }\\n\\n  static G_rgb([g]) {\\n    g = scaleAndClamp(g);\\n    return [g, g, g];\\n  }\\n\\n  static G_HTML([g]) {\\n    const G = makeColorComp(g);\\n    return `#${G}${G}${G}`;\\n  }\\n\\n  static RGB_G([r, g, b]) {\\n    return [\\\"G\\\", 0.3 * r + 0.59 * g + 0.11 * b];\\n  }\\n\\n  static RGB_rgb(color) {\\n    return color.map(scaleAndClamp);\\n  }\\n\\n  static RGB_HTML(color) {\\n    return `#${color.map(makeColorComp).join(\\\"\\\")}`;\\n  }\\n\\n  static T_HTML() {\\n    return \\\"#00000000\\\";\\n  }\\n\\n  static T_rgb() {\\n    return [null];\\n  }\\n\\n  static CMYK_RGB([c, y, m, k]) {\\n    return [\\n      \\\"RGB\\\",\\n      1 - Math.min(1, c + k),\\n      1 - Math.min(1, m + k),\\n      1 - Math.min(1, y + k),\\n    ];\\n  }\\n\\n  static CMYK_rgb([c, y, m, k]) {\\n    return [\\n      scaleAndClamp(1 - Math.min(1, c + k)),\\n      scaleAndClamp(1 - Math.min(1, m + k)),\\n      scaleAndClamp(1 - Math.min(1, y + k)),\\n    ];\\n  }\\n\\n  static CMYK_HTML(components) {\\n    const rgb = this.CMYK_RGB(components).slice(1);\\n    return this.RGB_HTML(rgb);\\n  }\\n\\n  static RGB_CMYK([r, g, b]) {\\n    const c = 1 - r;\\n    const m = 1 - g;\\n    const y = 1 - b;\\n    const k = Math.min(c, m, y);\\n    return [\\\"CMYK\\\", c, m, y, k];\\n  }\\n}\\n\\nexport { ColorConverters };\\n\",\"\u002F* Copyright 2015 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { SVG_NS } from \\\".\u002Fdisplay_utils.js\\\";\\nimport { unreachable } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nclass BaseSVGFactory {\\n  constructor() {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      this.constructor === BaseSVGFactory\\n    ) {\\n      unreachable(\\\"Cannot initialize BaseSVGFactory.\\\");\\n    }\\n  }\\n\\n  create(width, height, skipDimensions = false) {\\n    if (width \u003C= 0 || height \u003C= 0) {\\n      throw new Error(\\\"Invalid SVG dimensions\\\");\\n    }\\n    const svg = this._createSVG(\\\"svg:svg\\\");\\n    svg.setAttribute(\\\"version\\\", \\\"1.1\\\");\\n\\n    if (!skipDimensions) {\\n      svg.setAttribute(\\\"width\\\", `${width}px`);\\n      svg.setAttribute(\\\"height\\\", `${height}px`);\\n    }\\n\\n    svg.setAttribute(\\\"preserveAspectRatio\\\", \\\"none\\\");\\n    svg.setAttribute(\\\"viewBox\\\", `0 0 ${width} ${height}`);\\n\\n    return svg;\\n  }\\n\\n  createElement(type) {\\n    if (typeof type !== \\\"string\\\") {\\n      throw new Error(\\\"Invalid SVG element type\\\");\\n    }\\n    return this._createSVG(type);\\n  }\\n\\n  \u002F**\\n   * @ignore\\n   *\u002F\\n  _createSVG(type) {\\n    unreachable(\\\"Abstract method `_createSVG` called.\\\");\\n  }\\n}\\n\\nclass DOMSVGFactory extends BaseSVGFactory {\\n  \u002F**\\n   * @ignore\\n   *\u002F\\n  _createSVG(type) {\\n    return document.createElementNS(SVG_NS, type);\\n  }\\n}\\n\\nexport { BaseSVGFactory, DOMSVGFactory };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fannotation_storage\\\").AnnotationStorage} AnnotationStorage *\u002F\\n\u002F** @typedef {import(\\\".\u002Fdisplay_utils\\\").PageViewport} PageViewport *\u002F\\n\u002F** @typedef {import(\\\"..\u002F..\u002Fweb\u002Finterfaces\\\").IPDFLinkService} IPDFLinkService *\u002F\\n\\nimport { XfaText } from \\\".\u002Fxfa_text.js\\\";\\n\\n\u002F**\\n * @typedef {Object} XfaLayerParameters\\n * @property {PageViewport} viewport\\n * @property {HTMLDivElement} div\\n * @property {Object} xfaHtml\\n * @property {AnnotationStorage} [annotationStorage]\\n * @property {IPDFLinkService} linkService\\n * @property {string} [intent] - (default value is 'display').\\n *\u002F\\n\\nclass XfaLayer {\\n  static setupStorage(html, id, element, storage, intent) {\\n    const storedData = storage.getValue(id, { value: null });\\n    switch (element.name) {\\n      case \\\"textarea\\\":\\n        if (storedData.value !== null) {\\n          html.textContent = storedData.value;\\n        }\\n        if (intent === \\\"print\\\") {\\n          break;\\n        }\\n        html.addEventListener(\\\"input\\\", event => {\\n          storage.setValue(id, { value: event.target.value });\\n        });\\n        break;\\n      case \\\"input\\\":\\n        if (\\n          element.attributes.type === \\\"radio\\\" ||\\n          element.attributes.type === \\\"checkbox\\\"\\n        ) {\\n          if (storedData.value === element.attributes.xfaOn) {\\n            html.setAttribute(\\\"checked\\\", true);\\n          } else if (storedData.value === element.attributes.xfaOff) {\\n            \u002F\u002F The checked attribute may have been set when opening the file,\\n            \u002F\u002F unset through the UI and we're here because of printing.\\n            html.removeAttribute(\\\"checked\\\");\\n          }\\n          if (intent === \\\"print\\\") {\\n            break;\\n          }\\n          html.addEventListener(\\\"change\\\", event => {\\n            storage.setValue(id, {\\n              value: event.target.checked\\n                ? event.target.getAttribute(\\\"xfaOn\\\")\\n                : event.target.getAttribute(\\\"xfaOff\\\"),\\n            });\\n          });\\n        } else {\\n          if (storedData.value !== null) {\\n            html.setAttribute(\\\"value\\\", storedData.value);\\n          }\\n          if (intent === \\\"print\\\") {\\n            break;\\n          }\\n          html.addEventListener(\\\"input\\\", event => {\\n            storage.setValue(id, { value: event.target.value });\\n          });\\n        }\\n        break;\\n      case \\\"select\\\":\\n        if (storedData.value !== null) {\\n          html.setAttribute(\\\"value\\\", storedData.value);\\n          for (const option of element.children) {\\n            if (option.attributes.value === storedData.value) {\\n              option.attributes.selected = true;\\n            } else if (option.attributes.hasOwnProperty(\\\"selected\\\")) {\\n              delete option.attributes.selected;\\n            }\\n          }\\n        }\\n        html.addEventListener(\\\"input\\\", event => {\\n          const options = event.target.options;\\n          const value =\\n            options.selectedIndex === -1\\n              ? \\\"\\\"\\n              : options[options.selectedIndex].value;\\n          storage.setValue(id, { value });\\n        });\\n        break;\\n    }\\n  }\\n\\n  static setAttributes({ html, element, storage = null, intent, linkService }) {\\n    const { attributes } = element;\\n    const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\\n\\n    if (attributes.type === \\\"radio\\\") {\\n      \u002F\u002F Avoid to have a radio group when printing with the same as one\\n      \u002F\u002F already displayed.\\n      attributes.name = `${attributes.name}-${intent}`;\\n    }\\n    for (const [key, value] of Object.entries(attributes)) {\\n      if (value === null || value === undefined) {\\n        continue;\\n      }\\n\\n      switch (key) {\\n        case \\\"class\\\":\\n          if (value.length) {\\n            html.setAttribute(key, value.join(\\\" \\\"));\\n          }\\n          break;\\n        case \\\"dataId\\\":\\n          \u002F\u002F We don't need to add dataId in the html object but it can\\n          \u002F\u002F be useful to know its value when writing printing tests:\\n          \u002F\u002F in this case, don't skip dataId to have its value.\\n          break;\\n        case \\\"id\\\":\\n          html.setAttribute(\\\"data-element-id\\\", value);\\n          break;\\n        case \\\"style\\\":\\n          Object.assign(html.style, value);\\n          break;\\n        case \\\"textContent\\\":\\n          html.textContent = value;\\n          break;\\n        default:\\n          if (!isHTMLAnchorElement || (key !== \\\"href\\\" && key !== \\\"newWindow\\\")) {\\n            html.setAttribute(key, value);\\n          }\\n      }\\n    }\\n\\n    if (isHTMLAnchorElement) {\\n      linkService.addLinkAttributes(\\n        html,\\n        attributes.href,\\n        attributes.newWindow\\n      );\\n    }\\n\\n    \u002F\u002F Set the value after the others to be sure to overwrite any other values.\\n    if (storage && attributes.dataId) {\\n      this.setupStorage(html, attributes.dataId, element, storage);\\n    }\\n  }\\n\\n  \u002F**\\n   * Render the XFA layer.\\n   *\\n   * @param {XfaLayerParameters} parameters\\n   *\u002F\\n  static render(parameters) {\\n    const storage = parameters.annotationStorage;\\n    const linkService = parameters.linkService;\\n    const root = parameters.xfaHtml;\\n    const intent = parameters.intent || \\\"display\\\";\\n    const rootHtml = document.createElement(root.name);\\n    if (root.attributes) {\\n      this.setAttributes({\\n        html: rootHtml,\\n        element: root,\\n        intent,\\n        linkService,\\n      });\\n    }\\n\\n    const isNotForRichText = intent !== \\\"richText\\\";\\n    const rootDiv = parameters.div;\\n    rootDiv.append(rootHtml);\\n\\n    if (parameters.viewport) {\\n      const transform = `matrix(${parameters.viewport.transform.join(\\\",\\\")})`;\\n      rootDiv.style.transform = transform;\\n    }\\n\\n    \u002F\u002F Set defaults.\\n    if (isNotForRichText) {\\n      rootDiv.setAttribute(\\\"class\\\", \\\"xfaLayer xfaFont\\\");\\n    }\\n\\n    \u002F\u002F Text nodes used for the text highlighter.\\n    const textDivs = [];\\n\\n    \u002F\u002F In the rich text context, it's possible to just have a text node without\\n    \u002F\u002F a root element, so we handle this case here (see issue 17215).\\n    if (root.children.length === 0) {\\n      if (root.value) {\\n        const node = document.createTextNode(root.value);\\n        rootHtml.append(node);\\n        if (isNotForRichText && XfaText.shouldBuildText(root.name)) {\\n          textDivs.push(node);\\n        }\\n      }\\n      return { textDivs };\\n    }\\n\\n    const stack = [[root, -1, rootHtml]];\\n\\n    while (stack.length > 0) {\\n      const [parent, i, html] = stack.at(-1);\\n      if (i + 1 === parent.children.length) {\\n        stack.pop();\\n        continue;\\n      }\\n\\n      const child = parent.children[++stack.at(-1)[1]];\\n      if (child === null) {\\n        continue;\\n      }\\n\\n      const { name } = child;\\n      if (name === \\\"#text\\\") {\\n        const node = document.createTextNode(child.value);\\n        textDivs.push(node);\\n        html.append(node);\\n        continue;\\n      }\\n\\n      const childHtml = child?.attributes?.xmlns\\n        ? document.createElementNS(child.attributes.xmlns, name)\\n        : document.createElement(name);\\n\\n      html.append(childHtml);\\n      if (child.attributes) {\\n        this.setAttributes({\\n          html: childHtml,\\n          element: child,\\n          storage,\\n          intent,\\n          linkService,\\n        });\\n      }\\n\\n      if (child.children?.length > 0) {\\n        stack.push([child, -1, childHtml]);\\n      } else if (child.value) {\\n        const node = document.createTextNode(child.value);\\n        if (isNotForRichText && XfaText.shouldBuildText(name)) {\\n          textDivs.push(node);\\n        }\\n        childHtml.append(node);\\n      }\\n    }\\n\\n    \u002F**\\n     * TODO: re-enable that stuff once we've JS implementation.\\n     * See https:\u002F\u002Fbugzilla.mozilla.org\u002Fshow_bug.cgi?id=1719465.\\n     *\\n     * for (const el of rootDiv.querySelectorAll(\\n     * \\\".xfaDisabled input, .xfaDisabled textarea\\\"\\n     * )) {\\n     * el.setAttribute(\\\"disabled\\\", true);\\n     * }\\n     * for (const el of rootDiv.querySelectorAll(\\n     * \\\".xfaReadOnly input, .xfaReadOnly textarea\\\"\\n     * )) {\\n     * el.setAttribute(\\\"readOnly\\\", true);\\n     * }\\n     *\u002F\\n\\n    for (const el of rootDiv.querySelectorAll(\\n      \\\".xfaNonInteractive input, .xfaNonInteractive textarea\\\"\\n    )) {\\n      el.setAttribute(\\\"readOnly\\\", true);\\n    }\\n\\n    return {\\n      textDivs,\\n    };\\n  }\\n\\n  \u002F**\\n   * Update the XFA layer.\\n   *\\n   * @param {XfaLayerParameters} parameters\\n   *\u002F\\n  static update(parameters) {\\n    const transform = `matrix(${parameters.viewport.transform.join(\\\",\\\")})`;\\n    parameters.div.style.transform = transform;\\n    parameters.div.hidden = false;\\n  }\\n}\\n\\nexport { XfaLayer };\\n\",\"\u002F* Copyright 2014 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fapi\\\").PDFPageProxy} PDFPageProxy *\u002F\\n\u002F** @typedef {import(\\\".\u002Fdisplay_utils\\\").PageViewport} PageViewport *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002F..\u002Fweb\u002Ftext_accessibility.js\\\").TextAccessibilityManager} TextAccessibilityManager *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002F..\u002Fweb\u002Finterfaces\\\").IDownloadManager} IDownloadManager *\u002F\\n\u002F** @typedef {import(\\\"..\u002F..\u002Fweb\u002Finterfaces\\\").IPDFLinkService} IPDFLinkService *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Feditor\u002Ftools.js\\\").AnnotationEditorUIManager} AnnotationEditorUIManager *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002F..\u002Fweb\u002Fstruct_tree_layer_builder.js\\\").StructTreeLayerBuilder} StructTreeLayerBuilder *\u002F\\n\\nimport {\\n  AnnotationBorderStyleType,\\n  AnnotationEditorType,\\n  AnnotationPrefix,\\n  AnnotationType,\\n  FeatureTest,\\n  LINE_FACTOR,\\n  shadow,\\n  unreachable,\\n  Util,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { PDFDateString, setLayerDimensions } from \\\".\u002Fdisplay_utils.js\\\";\\nimport { AnnotationStorage } from \\\".\u002Fannotation_storage.js\\\";\\nimport { ColorConverters } from \\\"..\u002Fshared\u002Fscripting_utils.js\\\";\\nimport { DOMSVGFactory } from \\\".\u002Fsvg_factory.js\\\";\\nimport { XfaLayer } from \\\".\u002Fxfa_layer.js\\\";\\n\\nconst DEFAULT_TAB_INDEX = 1000;\\nconst DEFAULT_FONT_SIZE = 9;\\nconst GetElementsByNameSet = new WeakSet();\\n\\n\u002F**\\n * @typedef {Object} AnnotationElementParameters\\n * @property {Object} data\\n * @property {HTMLDivElement} layer\\n * @property {IPDFLinkService} linkService\\n * @property {IDownloadManager} [downloadManager]\\n * @property {AnnotationStorage} [annotationStorage]\\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\\n *   for annotation icons. Include trailing slash.\\n * @property {boolean} renderForms\\n * @property {Object} svgFactory\\n * @property {boolean} [enableScripting]\\n * @property {boolean} [hasJSActions]\\n * @property {Object} [fieldObjects]\\n *\u002F\\n\\nclass AnnotationElementFactory {\\n  \u002F**\\n   * @param {AnnotationElementParameters} parameters\\n   * @returns {AnnotationElement}\\n   *\u002F\\n  static create(parameters) {\\n    const subtype = parameters.data.annotationType;\\n\\n    switch (subtype) {\\n      case AnnotationType.LINK:\\n        return new LinkAnnotationElement(parameters);\\n\\n      case AnnotationType.TEXT:\\n        return new TextAnnotationElement(parameters);\\n\\n      case AnnotationType.WIDGET:\\n        const fieldType = parameters.data.fieldType;\\n\\n        switch (fieldType) {\\n          case \\\"Tx\\\":\\n            return new TextWidgetAnnotationElement(parameters);\\n          case \\\"Btn\\\":\\n            if (parameters.data.radioButton) {\\n              return new RadioButtonWidgetAnnotationElement(parameters);\\n            } else if (parameters.data.checkBox) {\\n              return new CheckboxWidgetAnnotationElement(parameters);\\n            }\\n            return new PushButtonWidgetAnnotationElement(parameters);\\n          case \\\"Ch\\\":\\n            return new ChoiceWidgetAnnotationElement(parameters);\\n          case \\\"Sig\\\":\\n            return new SignatureWidgetAnnotationElement(parameters);\\n        }\\n        return new WidgetAnnotationElement(parameters);\\n\\n      case AnnotationType.POPUP:\\n        return new PopupAnnotationElement(parameters);\\n\\n      case AnnotationType.FREETEXT:\\n        return new FreeTextAnnotationElement(parameters);\\n\\n      case AnnotationType.LINE:\\n        return new LineAnnotationElement(parameters);\\n\\n      case AnnotationType.SQUARE:\\n        return new SquareAnnotationElement(parameters);\\n\\n      case AnnotationType.CIRCLE:\\n        return new CircleAnnotationElement(parameters);\\n\\n      case AnnotationType.POLYLINE:\\n        return new PolylineAnnotationElement(parameters);\\n\\n      case AnnotationType.CARET:\\n        return new CaretAnnotationElement(parameters);\\n\\n      case AnnotationType.INK:\\n        return new InkAnnotationElement(parameters);\\n\\n      case AnnotationType.POLYGON:\\n        return new PolygonAnnotationElement(parameters);\\n\\n      case AnnotationType.HIGHLIGHT:\\n        return new HighlightAnnotationElement(parameters);\\n\\n      case AnnotationType.UNDERLINE:\\n        return new UnderlineAnnotationElement(parameters);\\n\\n      case AnnotationType.SQUIGGLY:\\n        return new SquigglyAnnotationElement(parameters);\\n\\n      case AnnotationType.STRIKEOUT:\\n        return new StrikeOutAnnotationElement(parameters);\\n\\n      case AnnotationType.STAMP:\\n        return new StampAnnotationElement(parameters);\\n\\n      case AnnotationType.FILEATTACHMENT:\\n        return new FileAttachmentAnnotationElement(parameters);\\n\\n      default:\\n        return new AnnotationElement(parameters);\\n    }\\n  }\\n}\\n\\nclass AnnotationElement {\\n  #updates = null;\\n\\n  #hasBorder = false;\\n\\n  #popupElement = null;\\n\\n  constructor(\\n    parameters,\\n    {\\n      isRenderable = false,\\n      ignoreBorder = false,\\n      createQuadrilaterals = false,\\n    } = {}\\n  ) {\\n    this.isRenderable = isRenderable;\\n    this.data = parameters.data;\\n    this.layer = parameters.layer;\\n    this.linkService = parameters.linkService;\\n    this.downloadManager = parameters.downloadManager;\\n    this.imageResourcesPath = parameters.imageResourcesPath;\\n    this.renderForms = parameters.renderForms;\\n    this.svgFactory = parameters.svgFactory;\\n    this.annotationStorage = parameters.annotationStorage;\\n    this.enableScripting = parameters.enableScripting;\\n    this.hasJSActions = parameters.hasJSActions;\\n    this._fieldObjects = parameters.fieldObjects;\\n    this.parent = parameters.parent;\\n\\n    if (isRenderable) {\\n      this.container = this._createContainer(ignoreBorder);\\n    }\\n    if (createQuadrilaterals) {\\n      this._createQuadrilaterals();\\n    }\\n  }\\n\\n  static _hasPopupData({ titleObj, contentsObj, richText }) {\\n    return !!(titleObj?.str || contentsObj?.str || richText?.str);\\n  }\\n\\n  get _isEditable() {\\n    return this.data.isEditable;\\n  }\\n\\n  get hasPopupData() {\\n    return AnnotationElement._hasPopupData(this.data);\\n  }\\n\\n  updateEdited(params) {\\n    if (!this.container) {\\n      return;\\n    }\\n\\n    this.#updates ||= {\\n      rect: this.data.rect.slice(0),\\n    };\\n\\n    const { rect } = params;\\n\\n    if (rect) {\\n      this.#setRectEdited(rect);\\n    }\\n\\n    this.#popupElement?.popup.updateEdited(params);\\n  }\\n\\n  resetEdited() {\\n    if (!this.#updates) {\\n      return;\\n    }\\n    this.#setRectEdited(this.#updates.rect);\\n    this.#popupElement?.popup.resetEdited();\\n    this.#updates = null;\\n  }\\n\\n  #setRectEdited(rect) {\\n    const {\\n      container: { style },\\n      data: { rect: currentRect, rotation },\\n      parent: {\\n        viewport: {\\n          rawDims: { pageWidth, pageHeight, pageX, pageY },\\n        },\\n      },\\n    } = this;\\n    currentRect?.splice(0, 4, ...rect);\\n    style.left = `${(100 * (rect[0] - pageX)) \u002F pageWidth}%`;\\n    style.top = `${(100 * (pageHeight - rect[3] + pageY)) \u002F pageHeight}%`;\\n    if (rotation === 0) {\\n      style.width = `${(100 * \u002F* width = *\u002F (rect[2] - rect[0])) \u002F pageWidth}%`;\\n      style.height = `${(100 * \u002F* height = *\u002F (rect[3] - rect[1])) \u002F pageHeight}%`;\\n    } else {\\n      this.setRotation(rotation);\\n    }\\n  }\\n\\n  \u002F**\\n   * Create an empty container for the annotation's HTML element.\\n   *\\n   * @private\\n   * @param {boolean} ignoreBorder\\n   * @memberof AnnotationElement\\n   * @returns {HTMLElement} A section element.\\n   *\u002F\\n  _createContainer(ignoreBorder) {\\n    const {\\n      data,\\n      parent: { page, viewport },\\n    } = this;\\n\\n    const container = document.createElement(\\\"section\\\");\\n    container.setAttribute(\\\"data-annotation-id\\\", data.id);\\n    if (!(this instanceof WidgetAnnotationElement)) {\\n      container.tabIndex = DEFAULT_TAB_INDEX;\\n    }\\n    const { style } = container;\\n\\n    \u002F\u002F The accessibility manager will move the annotation in the DOM in\\n    \u002F\u002F order to match the visual ordering.\\n    \u002F\u002F But if an annotation is above an other one, then we must draw it\\n    \u002F\u002F after the other one whatever the order is in the DOM, hence the\\n    \u002F\u002F use of the z-index.\\n    style.zIndex = this.parent.zIndex++;\\n\\n    if (data.alternativeText) {\\n      container.title = data.alternativeText;\\n    }\\n\\n    if (data.noRotate) {\\n      container.classList.add(\\\"norotate\\\");\\n    }\\n\\n    if (!data.rect || this instanceof PopupAnnotationElement) {\\n      const { rotation } = data;\\n      if (!data.hasOwnCanvas && rotation !== 0) {\\n        this.setRotation(rotation, container);\\n      }\\n      return container;\\n    }\\n    const { width, height } = this;\\n\\n    if (!ignoreBorder && data.borderStyle.width > 0) {\\n      style.borderWidth = `${data.borderStyle.width}px`;\\n\\n      const horizontalRadius = data.borderStyle.horizontalCornerRadius;\\n      const verticalRadius = data.borderStyle.verticalCornerRadius;\\n      if (horizontalRadius > 0 || verticalRadius > 0) {\\n        const radius = `calc(${horizontalRadius}px * var(--total-scale-factor)) \u002F calc(${verticalRadius}px * var(--total-scale-factor))`;\\n        style.borderRadius = radius;\\n      } else if (this instanceof RadioButtonWidgetAnnotationElement) {\\n        const radius = `calc(${width}px * var(--total-scale-factor)) \u002F calc(${height}px * var(--total-scale-factor))`;\\n        style.borderRadius = radius;\\n      }\\n\\n      switch (data.borderStyle.style) {\\n        case AnnotationBorderStyleType.SOLID:\\n          style.borderStyle = \\\"solid\\\";\\n          break;\\n\\n        case AnnotationBorderStyleType.DASHED:\\n          style.borderStyle = \\\"dashed\\\";\\n          break;\\n\\n        case AnnotationBorderStyleType.BEVELED:\\n          warn(\\\"Unimplemented border style: beveled\\\");\\n          break;\\n\\n        case AnnotationBorderStyleType.INSET:\\n          warn(\\\"Unimplemented border style: inset\\\");\\n          break;\\n\\n        case AnnotationBorderStyleType.UNDERLINE:\\n          style.borderBottomStyle = \\\"solid\\\";\\n          break;\\n\\n        default:\\n          break;\\n      }\\n\\n      const borderColor = data.borderColor || null;\\n      if (borderColor) {\\n        this.#hasBorder = true;\\n        style.borderColor = Util.makeHexColor(\\n          borderColor[0] | 0,\\n          borderColor[1] | 0,\\n          borderColor[2] | 0\\n        );\\n      } else {\\n        \u002F\u002F Transparent (invisible) border, so do not draw it at all.\\n        style.borderWidth = 0;\\n      }\\n    }\\n\\n    \u002F\u002F Do *not* modify `data.rect`, since that will corrupt the annotation\\n    \u002F\u002F position on subsequent calls to `_createContainer` (see issue 6804).\\n    const rect = Util.normalizeRect([\\n      data.rect[0],\\n      page.view[3] - data.rect[1] + page.view[1],\\n      data.rect[2],\\n      page.view[3] - data.rect[3] + page.view[1],\\n    ]);\\n    const { pageWidth, pageHeight, pageX, pageY } = viewport.rawDims;\\n\\n    style.left = `${(100 * (rect[0] - pageX)) \u002F pageWidth}%`;\\n    style.top = `${(100 * (rect[1] - pageY)) \u002F pageHeight}%`;\\n\\n    const { rotation } = data;\\n    if (data.hasOwnCanvas || rotation === 0) {\\n      style.width = `${(100 * width) \u002F pageWidth}%`;\\n      style.height = `${(100 * height) \u002F pageHeight}%`;\\n    } else {\\n      this.setRotation(rotation, container);\\n    }\\n\\n    return container;\\n  }\\n\\n  setRotation(angle, container = this.container) {\\n    if (!this.data.rect) {\\n      return;\\n    }\\n    const { pageWidth, pageHeight } = this.parent.viewport.rawDims;\\n    let { width, height } = this;\\n\\n    if (angle % 180 !== 0) {\\n      [width, height] = [height, width];\\n    }\\n    container.style.width = `${(100 * width) \u002F pageWidth}%`;\\n    container.style.height = `${(100 * height) \u002F pageHeight}%`;\\n\\n    container.setAttribute(\\\"data-main-rotation\\\", (360 - angle) % 360);\\n  }\\n\\n  get _commonActions() {\\n    const setColor = (jsName, styleName, event) => {\\n      const color = event.detail[jsName];\\n      const colorType = color[0];\\n      const colorArray = color.slice(1);\\n      event.target.style[styleName] =\\n        ColorConverters[`${colorType}_HTML`](colorArray);\\n      this.annotationStorage.setValue(this.data.id, {\\n        [styleName]: ColorConverters[`${colorType}_rgb`](colorArray),\\n      });\\n    };\\n\\n    return shadow(this, \\\"_commonActions\\\", {\\n      display: event => {\\n        const { display } = event.detail;\\n        \u002F\u002F See scripting\u002Fconstants.js for the values of `Display`.\\n        \u002F\u002F 0 = visible, 1 = hidden, 2 = noPrint and 3 = noView.\\n        const hidden = display % 2 === 1;\\n        this.container.style.visibility = hidden ? \\\"hidden\\\" : \\\"visible\\\";\\n        this.annotationStorage.setValue(this.data.id, {\\n          noView: hidden,\\n          noPrint: display === 1 || display === 2,\\n        });\\n      },\\n      print: event => {\\n        this.annotationStorage.setValue(this.data.id, {\\n          noPrint: !event.detail.print,\\n        });\\n      },\\n      hidden: event => {\\n        const { hidden } = event.detail;\\n        this.container.style.visibility = hidden ? \\\"hidden\\\" : \\\"visible\\\";\\n        this.annotationStorage.setValue(this.data.id, {\\n          noPrint: hidden,\\n          noView: hidden,\\n        });\\n      },\\n      focus: event => {\\n        setTimeout(() => event.target.focus({ preventScroll: false }), 0);\\n      },\\n      userName: event => {\\n        \u002F\u002F tooltip\\n        event.target.title = event.detail.userName;\\n      },\\n      readonly: event => {\\n        event.target.disabled = event.detail.readonly;\\n      },\\n      required: event => {\\n        this._setRequired(event.target, event.detail.required);\\n      },\\n      bgColor: event => {\\n        setColor(\\\"bgColor\\\", \\\"backgroundColor\\\", event);\\n      },\\n      fillColor: event => {\\n        setColor(\\\"fillColor\\\", \\\"backgroundColor\\\", event);\\n      },\\n      fgColor: event => {\\n        setColor(\\\"fgColor\\\", \\\"color\\\", event);\\n      },\\n      textColor: event => {\\n        setColor(\\\"textColor\\\", \\\"color\\\", event);\\n      },\\n      borderColor: event => {\\n        setColor(\\\"borderColor\\\", \\\"borderColor\\\", event);\\n      },\\n      strokeColor: event => {\\n        setColor(\\\"strokeColor\\\", \\\"borderColor\\\", event);\\n      },\\n      rotation: event => {\\n        const angle = event.detail.rotation;\\n        this.setRotation(angle);\\n        this.annotationStorage.setValue(this.data.id, {\\n          rotation: angle,\\n        });\\n      },\\n    });\\n  }\\n\\n  _dispatchEventFromSandbox(actions, jsEvent) {\\n    const commonActions = this._commonActions;\\n    for (const name of Object.keys(jsEvent.detail)) {\\n      const action = actions[name] || commonActions[name];\\n      action?.(jsEvent);\\n    }\\n  }\\n\\n  _setDefaultPropertiesFromJS(element) {\\n    if (!this.enableScripting) {\\n      return;\\n    }\\n\\n    \u002F\u002F Some properties may have been updated thanks to JS.\\n    const storedData = this.annotationStorage.getRawValue(this.data.id);\\n    if (!storedData) {\\n      return;\\n    }\\n\\n    const commonActions = this._commonActions;\\n    for (const [actionName, detail] of Object.entries(storedData)) {\\n      const action = commonActions[actionName];\\n      if (action) {\\n        const eventProxy = {\\n          detail: {\\n            [actionName]: detail,\\n          },\\n          target: element,\\n        };\\n        action(eventProxy);\\n        \u002F\u002F The action has been consumed: no need to keep it.\\n        delete storedData[actionName];\\n      }\\n    }\\n  }\\n\\n  \u002F**\\n   * Create quadrilaterals from the annotation's quadpoints.\\n   *\\n   * @private\\n   * @memberof AnnotationElement\\n   *\u002F\\n  _createQuadrilaterals() {\\n    if (!this.container) {\\n      return;\\n    }\\n    const { quadPoints } = this.data;\\n    if (!quadPoints) {\\n      return;\\n    }\\n\\n    const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect.map(x =>\\n      Math.fround(x)\\n    );\\n\\n    if (quadPoints.length === 8) {\\n      const [trX, trY, blX, blY] = quadPoints.subarray(2, 6);\\n      if (\\n        rectTrX === trX &&\\n        rectTrY === trY &&\\n        rectBlX === blX &&\\n        rectBlY === blY\\n      ) {\\n        \u002F\u002F The quadpoints cover the whole annotation rectangle, so no need to\\n        \u002F\u002F create a quadrilateral.\\n        return;\\n      }\\n    }\\n\\n    const { style } = this.container;\\n    let svgBuffer;\\n    if (this.#hasBorder) {\\n      const { borderColor, borderWidth } = style;\\n      style.borderWidth = 0;\\n      svgBuffer = [\\n        \\\"url('data:image\u002Fsvg+xml;utf8,\\\",\\n        `\u003Csvg xmlns=\\\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\\\"`,\\n        ` preserveAspectRatio=\\\"none\\\" viewBox=\\\"0 0 1 1\\\">`,\\n        `\u003Cg fill=\\\"transparent\\\" stroke=\\\"${borderColor}\\\" stroke-width=\\\"${borderWidth}\\\">`,\\n      ];\\n      this.container.classList.add(\\\"hasBorder\\\");\\n    }\\n\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING\\\")) {\\n      this.container.classList.add(\\\"hasClipPath\\\");\\n    }\\n\\n    const width = rectTrX - rectBlX;\\n    const height = rectTrY - rectBlY;\\n\\n    const { svgFactory } = this;\\n    const svg = svgFactory.createElement(\\\"svg\\\");\\n    svg.classList.add(\\\"quadrilateralsContainer\\\");\\n    svg.setAttribute(\\\"width\\\", 0);\\n    svg.setAttribute(\\\"height\\\", 0);\\n    const defs = svgFactory.createElement(\\\"defs\\\");\\n    svg.append(defs);\\n    const clipPath = svgFactory.createElement(\\\"clipPath\\\");\\n    const id = `clippath_${this.data.id}`;\\n    clipPath.setAttribute(\\\"id\\\", id);\\n    clipPath.setAttribute(\\\"clipPathUnits\\\", \\\"objectBoundingBox\\\");\\n    defs.append(clipPath);\\n\\n    for (let i = 2, ii = quadPoints.length; i \u003C ii; i += 8) {\\n      const trX = quadPoints[i];\\n      const trY = quadPoints[i + 1];\\n      const blX = quadPoints[i + 2];\\n      const blY = quadPoints[i + 3];\\n      const rect = svgFactory.createElement(\\\"rect\\\");\\n      const x = (blX - rectBlX) \u002F width;\\n      const y = (rectTrY - trY) \u002F height;\\n      const rectWidth = (trX - blX) \u002F width;\\n      const rectHeight = (trY - blY) \u002F height;\\n      rect.setAttribute(\\\"x\\\", x);\\n      rect.setAttribute(\\\"y\\\", y);\\n      rect.setAttribute(\\\"width\\\", rectWidth);\\n      rect.setAttribute(\\\"height\\\", rectHeight);\\n      clipPath.append(rect);\\n      svgBuffer?.push(\\n        `\u003Crect vector-effect=\\\"non-scaling-stroke\\\" x=\\\"${x}\\\" y=\\\"${y}\\\" width=\\\"${rectWidth}\\\" height=\\\"${rectHeight}\\\"\u002F>`\\n      );\\n    }\\n\\n    if (this.#hasBorder) {\\n      svgBuffer.push(`\u003C\u002Fg>\u003C\u002Fsvg>')`);\\n      style.backgroundImage = svgBuffer.join(\\\"\\\");\\n    }\\n\\n    this.container.append(svg);\\n    this.container.style.clipPath = `url(#${id})`;\\n  }\\n\\n  \u002F**\\n   * Create a popup for the annotation's HTML element. This is used for\\n   * annotations that do not have a Popup entry in the dictionary, but\\n   * are of a type that works with popups (such as Highlight annotations).\\n   *\\n   * @private\\n   * @memberof AnnotationElement\\n   *\u002F\\n  _createPopup() {\\n    const { data } = this;\\n\\n    const popup = (this.#popupElement = new PopupAnnotationElement({\\n      data: {\\n        color: data.color,\\n        titleObj: data.titleObj,\\n        modificationDate: data.modificationDate,\\n        contentsObj: data.contentsObj,\\n        richText: data.richText,\\n        parentRect: data.rect,\\n        borderStyle: 0,\\n        id: `popup_${data.id}`,\\n        rotation: data.rotation,\\n      },\\n      parent: this.parent,\\n      elements: [this],\\n    }));\\n    this.parent.div.append(popup.render());\\n  }\\n\\n  \u002F**\\n   * Render the annotation's HTML element(s).\\n   *\\n   * @public\\n   * @memberof AnnotationElement\\n   *\u002F\\n  render() {\\n    unreachable(\\\"Abstract method `AnnotationElement.render` called\\\");\\n  }\\n\\n  \u002F**\\n   * @private\\n   * @returns {Array}\\n   *\u002F\\n  _getElementsByName(name, skipId = null) {\\n    const fields = [];\\n\\n    if (this._fieldObjects) {\\n      const fieldObj = this._fieldObjects[name];\\n      if (fieldObj) {\\n        for (const { page, id, exportValues } of fieldObj) {\\n          if (page === -1) {\\n            continue;\\n          }\\n          if (id === skipId) {\\n            continue;\\n          }\\n          const exportValue =\\n            typeof exportValues === \\\"string\\\" ? exportValues : null;\\n\\n          const domElement = document.querySelector(\\n            `[data-element-id=\\\"${id}\\\"]`\\n          );\\n          if (domElement && !GetElementsByNameSet.has(domElement)) {\\n            warn(`_getElementsByName - element not allowed: ${id}`);\\n            continue;\\n          }\\n          fields.push({ id, exportValue, domElement });\\n        }\\n      }\\n      return fields;\\n    }\\n    \u002F\u002F Fallback to a regular DOM lookup, to ensure that the standalone\\n    \u002F\u002F viewer components won't break.\\n    for (const domElement of document.getElementsByName(name)) {\\n      const { exportValue } = domElement;\\n      const id = domElement.getAttribute(\\\"data-element-id\\\");\\n      if (id === skipId) {\\n        continue;\\n      }\\n      if (!GetElementsByNameSet.has(domElement)) {\\n        continue;\\n      }\\n      fields.push({ id, exportValue, domElement });\\n    }\\n    return fields;\\n  }\\n\\n  show() {\\n    if (this.container) {\\n      this.container.hidden = false;\\n    }\\n    this.popup?.maybeShow();\\n  }\\n\\n  hide() {\\n    if (this.container) {\\n      this.container.hidden = true;\\n    }\\n    this.popup?.forceHide();\\n  }\\n\\n  \u002F**\\n   * Get the HTML element(s) which can trigger a popup when clicked or hovered.\\n   *\\n   * @public\\n   * @memberof AnnotationElement\\n   * @returns {Array\u003CHTMLElement>|HTMLElement} An array of elements or an\\n   *          element.\\n   *\u002F\\n  getElementsToTriggerPopup() {\\n    return this.container;\\n  }\\n\\n  addHighlightArea() {\\n    const triggers = this.getElementsToTriggerPopup();\\n    if (Array.isArray(triggers)) {\\n      for (const element of triggers) {\\n        element.classList.add(\\\"highlightArea\\\");\\n      }\\n    } else {\\n      triggers.classList.add(\\\"highlightArea\\\");\\n    }\\n  }\\n\\n  _editOnDoubleClick() {\\n    if (!this._isEditable) {\\n      return;\\n    }\\n    const {\\n      annotationEditorType: mode,\\n      data: { id: editId },\\n    } = this;\\n    this.container.addEventListener(\\\"dblclick\\\", () => {\\n      this.linkService.eventBus?.dispatch(\\\"switchannotationeditormode\\\", {\\n        source: this,\\n        mode,\\n        editId,\\n      });\\n    });\\n  }\\n\\n  get width() {\\n    return this.data.rect[2] - this.data.rect[0];\\n  }\\n\\n  get height() {\\n    return this.data.rect[3] - this.data.rect[1];\\n  }\\n}\\n\\nclass LinkAnnotationElement extends AnnotationElement {\\n  constructor(parameters, options = null) {\\n    super(parameters, {\\n      isRenderable: true,\\n      ignoreBorder: !!options?.ignoreBorder,\\n      createQuadrilaterals: true,\\n    });\\n    this.isTooltipOnly = parameters.data.isTooltipOnly;\\n  }\\n\\n  render() {\\n    const { data, linkService } = this;\\n    const link = document.createElement(\\\"a\\\");\\n    link.setAttribute(\\\"data-element-id\\\", data.id);\\n    let isBound = false;\\n\\n    if (data.url) {\\n      linkService.addLinkAttributes(link, data.url, data.newWindow);\\n      isBound = true;\\n    } else if (data.action) {\\n      this._bindNamedAction(link, data.action);\\n      isBound = true;\\n    } else if (data.attachment) {\\n      this.#bindAttachment(link, data.attachment, data.attachmentDest);\\n      isBound = true;\\n    } else if (data.setOCGState) {\\n      this.#bindSetOCGState(link, data.setOCGState);\\n      isBound = true;\\n    } else if (data.dest) {\\n      this._bindLink(link, data.dest);\\n      isBound = true;\\n    } else {\\n      if (\\n        data.actions &&\\n        (data.actions.Action ||\\n          data.actions[\\\"Mouse Up\\\"] ||\\n          data.actions[\\\"Mouse Down\\\"]) &&\\n        this.enableScripting &&\\n        this.hasJSActions\\n      ) {\\n        this._bindJSAction(link, data);\\n        isBound = true;\\n      }\\n\\n      if (data.resetForm) {\\n        this._bindResetFormAction(link, data.resetForm);\\n        isBound = true;\\n      } else if (this.isTooltipOnly && !isBound) {\\n        this._bindLink(link, \\\"\\\");\\n        isBound = true;\\n      }\\n    }\\n\\n    this.container.classList.add(\\\"linkAnnotation\\\");\\n    if (isBound) {\\n      this.container.append(link);\\n    }\\n\\n    return this.container;\\n  }\\n\\n  #setInternalLink() {\\n    this.container.setAttribute(\\\"data-internal-link\\\", \\\"\\\");\\n  }\\n\\n  \u002F**\\n   * Bind internal links to the link element.\\n   *\\n   * @private\\n   * @param {Object} link\\n   * @param {Object} destination\\n   * @memberof LinkAnnotationElement\\n   *\u002F\\n  _bindLink(link, destination) {\\n    link.href = this.linkService.getDestinationHash(destination);\\n    link.onclick = () => {\\n      if (destination) {\\n        this.linkService.goToDestination(destination);\\n      }\\n      return false;\\n    };\\n    if (destination || destination === \u002F* isTooltipOnly = *\u002F \\\"\\\") {\\n      this.#setInternalLink();\\n    }\\n  }\\n\\n  \u002F**\\n   * Bind named actions to the link element.\\n   *\\n   * @private\\n   * @param {Object} link\\n   * @param {Object} action\\n   * @memberof LinkAnnotationElement\\n   *\u002F\\n  _bindNamedAction(link, action) {\\n    link.href = this.linkService.getAnchorUrl(\\\"\\\");\\n    link.onclick = () => {\\n      this.linkService.executeNamedAction(action);\\n      return false;\\n    };\\n    this.#setInternalLink();\\n  }\\n\\n  \u002F**\\n   * Bind attachments to the link element.\\n   * @param {Object} link\\n   * @param {Object} attachment\\n   * @param {str} [dest]\\n   *\u002F\\n  #bindAttachment(link, attachment, dest = null) {\\n    link.href = this.linkService.getAnchorUrl(\\\"\\\");\\n    if (attachment.description) {\\n      link.title = attachment.description;\\n    }\\n    link.onclick = () => {\\n      this.downloadManager?.openOrDownloadData(\\n        attachment.content,\\n        attachment.filename,\\n        dest\\n      );\\n      return false;\\n    };\\n    this.#setInternalLink();\\n  }\\n\\n  \u002F**\\n   * Bind SetOCGState actions to the link element.\\n   * @param {Object} link\\n   * @param {Object} action\\n   *\u002F\\n  #bindSetOCGState(link, action) {\\n    link.href = this.linkService.getAnchorUrl(\\\"\\\");\\n    link.onclick = () => {\\n      this.linkService.executeSetOCGState(action);\\n      return false;\\n    };\\n    this.#setInternalLink();\\n  }\\n\\n  \u002F**\\n   * Bind JS actions to the link element.\\n   *\\n   * @private\\n   * @param {Object} link\\n   * @param {Object} data\\n   * @memberof LinkAnnotationElement\\n   *\u002F\\n  _bindJSAction(link, data) {\\n    link.href = this.linkService.getAnchorUrl(\\\"\\\");\\n    const map = new Map([\\n      [\\\"Action\\\", \\\"onclick\\\"],\\n      [\\\"Mouse Up\\\", \\\"onmouseup\\\"],\\n      [\\\"Mouse Down\\\", \\\"onmousedown\\\"],\\n    ]);\\n    for (const name of Object.keys(data.actions)) {\\n      const jsName = map.get(name);\\n      if (!jsName) {\\n        continue;\\n      }\\n      link[jsName] = () => {\\n        this.linkService.eventBus?.dispatch(\\\"dispatcheventinsandbox\\\", {\\n          source: this,\\n          detail: {\\n            id: data.id,\\n            name,\\n          },\\n        });\\n        return false;\\n      };\\n    }\\n\\n    if (!link.onclick) {\\n      link.onclick = () => false;\\n    }\\n    this.#setInternalLink();\\n  }\\n\\n  _bindResetFormAction(link, resetForm) {\\n    const otherClickAction = link.onclick;\\n    if (!otherClickAction) {\\n      link.href = this.linkService.getAnchorUrl(\\\"\\\");\\n    }\\n    this.#setInternalLink();\\n\\n    if (!this._fieldObjects) {\\n      warn(\\n        `_bindResetFormAction - \\\"resetForm\\\" action not supported, ` +\\n          \\\"ensure that the `fieldObjects` parameter is provided.\\\"\\n      );\\n      if (!otherClickAction) {\\n        link.onclick = () => false;\\n      }\\n      return;\\n    }\\n\\n    link.onclick = () => {\\n      otherClickAction?.();\\n\\n      const {\\n        fields: resetFormFields,\\n        refs: resetFormRefs,\\n        include,\\n      } = resetForm;\\n\\n      const allFields = [];\\n      if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\\n        const fieldIds = new Set(resetFormRefs);\\n        for (const fieldName of resetFormFields) {\\n          const fields = this._fieldObjects[fieldName] || [];\\n          for (const { id } of fields) {\\n            fieldIds.add(id);\\n          }\\n        }\\n        for (const fields of Object.values(this._fieldObjects)) {\\n          for (const field of fields) {\\n            if (fieldIds.has(field.id) === include) {\\n              allFields.push(field);\\n            }\\n          }\\n        }\\n      } else {\\n        for (const fields of Object.values(this._fieldObjects)) {\\n          allFields.push(...fields);\\n        }\\n      }\\n\\n      const storage = this.annotationStorage;\\n      const allIds = [];\\n      for (const field of allFields) {\\n        const { id } = field;\\n        allIds.push(id);\\n        switch (field.type) {\\n          case \\\"text\\\": {\\n            const value = field.defaultValue || \\\"\\\";\\n            storage.setValue(id, { value });\\n            break;\\n          }\\n          case \\\"checkbox\\\":\\n          case \\\"radiobutton\\\": {\\n            const value = field.defaultValue === field.exportValues;\\n            storage.setValue(id, { value });\\n            break;\\n          }\\n          case \\\"combobox\\\":\\n          case \\\"listbox\\\": {\\n            const value = field.defaultValue || \\\"\\\";\\n            storage.setValue(id, { value });\\n            break;\\n          }\\n          default:\\n            continue;\\n        }\\n\\n        const domElement = document.querySelector(`[data-element-id=\\\"${id}\\\"]`);\\n        if (!domElement) {\\n          continue;\\n        } else if (!GetElementsByNameSet.has(domElement)) {\\n          warn(`_bindResetFormAction - element not allowed: ${id}`);\\n          continue;\\n        }\\n        domElement.dispatchEvent(new Event(\\\"resetform\\\"));\\n      }\\n\\n      if (this.enableScripting) {\\n        \u002F\u002F Update the values in the sandbox.\\n        this.linkService.eventBus?.dispatch(\\\"dispatcheventinsandbox\\\", {\\n          source: this,\\n          detail: {\\n            id: \\\"app\\\",\\n            ids: allIds,\\n            name: \\\"ResetForm\\\",\\n          },\\n        });\\n      }\\n\\n      return false;\\n    };\\n  }\\n}\\n\\nclass TextAnnotationElement extends AnnotationElement {\\n  constructor(parameters) {\\n    super(parameters, { isRenderable: true });\\n  }\\n\\n  render() {\\n    this.container.classList.add(\\\"textAnnotation\\\");\\n\\n    const image = document.createElement(\\\"img\\\");\\n    image.src =\\n      this.imageResourcesPath +\\n      \\\"annotation-\\\" +\\n      this.data.name.toLowerCase() +\\n      \\\".svg\\\";\\n    image.setAttribute(\\\"data-l10n-id\\\", \\\"pdfjs-text-annotation-type\\\");\\n    image.setAttribute(\\n      \\\"data-l10n-args\\\",\\n      JSON.stringify({ type: this.data.name })\\n    );\\n\\n    if (!this.data.popupRef && this.hasPopupData) {\\n      this._createPopup();\\n    }\\n\\n    this.container.append(image);\\n    return this.container;\\n  }\\n}\\n\\nclass WidgetAnnotationElement extends AnnotationElement {\\n  render() {\\n    \u002F\u002F Show only the container for unsupported field types.\\n    return this.container;\\n  }\\n\\n  showElementAndHideCanvas(element) {\\n    if (this.data.hasOwnCanvas) {\\n      if (element.previousSibling?.nodeName === \\\"CANVAS\\\") {\\n        element.previousSibling.hidden = true;\\n      }\\n      element.hidden = false;\\n    }\\n  }\\n\\n  _getKeyModifier(event) {\\n    return FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\\n  }\\n\\n  _setEventListener(element, elementData, baseName, eventName, valueGetter) {\\n    if (baseName.includes(\\\"mouse\\\")) {\\n      \u002F\u002F Mouse events\\n      element.addEventListener(baseName, event => {\\n        this.linkService.eventBus?.dispatch(\\\"dispatcheventinsandbox\\\", {\\n          source: this,\\n          detail: {\\n            id: this.data.id,\\n            name: eventName,\\n            value: valueGetter(event),\\n            shift: event.shiftKey,\\n            modifier: this._getKeyModifier(event),\\n          },\\n        });\\n      });\\n    } else {\\n      \u002F\u002F Non-mouse events\\n      element.addEventListener(baseName, event => {\\n        if (baseName === \\\"blur\\\") {\\n          if (!elementData.focused || !event.relatedTarget) {\\n            return;\\n          }\\n          elementData.focused = false;\\n        } else if (baseName === \\\"focus\\\") {\\n          if (elementData.focused) {\\n            return;\\n          }\\n          elementData.focused = true;\\n        }\\n\\n        if (!valueGetter) {\\n          return;\\n        }\\n\\n        this.linkService.eventBus?.dispatch(\\\"dispatcheventinsandbox\\\", {\\n          source: this,\\n          detail: {\\n            id: this.data.id,\\n            name: eventName,\\n            value: valueGetter(event),\\n          },\\n        });\\n      });\\n    }\\n  }\\n\\n  _setEventListeners(element, elementData, names, getter) {\\n    for (const [baseName, eventName] of names) {\\n      if (eventName === \\\"Action\\\" || this.data.actions?.[eventName]) {\\n        if (eventName === \\\"Focus\\\" || eventName === \\\"Blur\\\") {\\n          elementData ||= { focused: false };\\n        }\\n        this._setEventListener(\\n          element,\\n          elementData,\\n          baseName,\\n          eventName,\\n          getter\\n        );\\n        if (eventName === \\\"Focus\\\" && !this.data.actions?.Blur) {\\n          \u002F\u002F Ensure that elementData will have the correct value.\\n          this._setEventListener(element, elementData, \\\"blur\\\", \\\"Blur\\\", null);\\n        } else if (eventName === \\\"Blur\\\" && !this.data.actions?.Focus) {\\n          this._setEventListener(element, elementData, \\\"focus\\\", \\\"Focus\\\", null);\\n        }\\n      }\\n    }\\n  }\\n\\n  _setBackgroundColor(element) {\\n    const color = this.data.backgroundColor || null;\\n    element.style.backgroundColor =\\n      color === null\\n        ? \\\"transparent\\\"\\n        : Util.makeHexColor(color[0], color[1], color[2]);\\n  }\\n\\n  \u002F**\\n   * Apply text styles to the text in the element.\\n   *\\n   * @private\\n   * @param {HTMLDivElement} element\\n   * @memberof TextWidgetAnnotationElement\\n   *\u002F\\n  _setTextStyle(element) {\\n    const TEXT_ALIGNMENT = [\\\"left\\\", \\\"center\\\", \\\"right\\\"];\\n    const { fontColor } = this.data.defaultAppearanceData;\\n    const fontSize =\\n      this.data.defaultAppearanceData.fontSize || DEFAULT_FONT_SIZE;\\n\\n    const style = element.style;\\n\\n    \u002F\u002F TODO: If the font-size is zero, calculate it based on the height and\\n    \u002F\u002F       width of the element.\\n    \u002F\u002F Not setting `style.fontSize` will use the default font-size for now.\\n\\n    \u002F\u002F We don't use the font, as specified in the PDF document, for the \u003Cinput>\\n    \u002F\u002F element. Hence using the original `fontSize` could look bad, which is why\\n    \u002F\u002F it's instead based on the field height.\\n    \u002F\u002F If the height is \\\"big\\\" then it could lead to a too big font size\\n    \u002F\u002F so in this case use the one we've in the pdf (hence the min).\\n    let computedFontSize;\\n    const BORDER_SIZE = 2;\\n    const roundToOneDecimal = x => Math.round(10 * x) \u002F 10;\\n    if (this.data.multiLine) {\\n      const height = Math.abs(\\n        this.data.rect[3] - this.data.rect[1] - BORDER_SIZE\\n      );\\n      const numberOfLines = Math.round(height \u002F (LINE_FACTOR * fontSize)) || 1;\\n      const lineHeight = height \u002F numberOfLines;\\n      computedFontSize = Math.min(\\n        fontSize,\\n        roundToOneDecimal(lineHeight \u002F LINE_FACTOR)\\n      );\\n    } else {\\n      const height = Math.abs(\\n        this.data.rect[3] - this.data.rect[1] - BORDER_SIZE\\n      );\\n      computedFontSize = Math.min(\\n        fontSize,\\n        roundToOneDecimal(height \u002F LINE_FACTOR)\\n      );\\n    }\\n    style.fontSize = `calc(${computedFontSize}px * var(--total-scale-factor))`;\\n\\n    style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\\n\\n    if (this.data.textAlignment !== null) {\\n      style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\\n    }\\n  }\\n\\n  _setRequired(element, isRequired) {\\n    if (isRequired) {\\n      element.setAttribute(\\\"required\\\", true);\\n    } else {\\n      element.removeAttribute(\\\"required\\\");\\n    }\\n    element.setAttribute(\\\"aria-required\\\", isRequired);\\n  }\\n}\\n\\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\\n  constructor(parameters) {\\n    const isRenderable =\\n      parameters.renderForms ||\\n      parameters.data.hasOwnCanvas ||\\n      (!parameters.data.hasAppearance && !!parameters.data.fieldValue);\\n    super(parameters, { isRenderable });\\n  }\\n\\n  setPropertyOnSiblings(base, key, value, keyInStorage) {\\n    const storage = this.annotationStorage;\\n    for (const element of this._getElementsByName(\\n      base.name,\\n      \u002F* skipId = *\u002F base.id\\n    )) {\\n      if (element.domElement) {\\n        element.domElement[key] = value;\\n      }\\n      storage.setValue(element.id, { [keyInStorage]: value });\\n    }\\n  }\\n\\n  render() {\\n    const storage = this.annotationStorage;\\n    const id = this.data.id;\\n\\n    this.container.classList.add(\\\"textWidgetAnnotation\\\");\\n\\n    let element = null;\\n    if (this.renderForms) {\\n      \u002F\u002F NOTE: We cannot set the values using `element.value` below, since it\\n      \u002F\u002F       prevents the AnnotationLayer rasterizer in `test\u002Fdriver.js`\\n      \u002F\u002F       from parsing the elements correctly for the reference tests.\\n      const storedData = storage.getValue(id, {\\n        value: this.data.fieldValue,\\n      });\\n      let textContent = storedData.value || \\\"\\\";\\n      const maxLen = storage.getValue(id, {\\n        charLimit: this.data.maxLen,\\n      }).charLimit;\\n      if (maxLen && textContent.length > maxLen) {\\n        textContent = textContent.slice(0, maxLen);\\n      }\\n\\n      let fieldFormattedValues =\\n        storedData.formattedValue || this.data.textContent?.join(\\\"\\\\n\\\") || null;\\n      if (fieldFormattedValues && this.data.comb) {\\n        fieldFormattedValues = fieldFormattedValues.replaceAll(\u002F\\\\s+\u002Fg, \\\"\\\");\\n      }\\n\\n      const elementData = {\\n        userValue: textContent,\\n        formattedValue: fieldFormattedValues,\\n        lastCommittedValue: null,\\n        commitKey: 1,\\n        focused: false,\\n      };\\n\\n      if (this.data.multiLine) {\\n        element = document.createElement(\\\"textarea\\\");\\n        element.textContent = fieldFormattedValues ?? textContent;\\n        if (this.data.doNotScroll) {\\n          element.style.overflowY = \\\"hidden\\\";\\n        }\\n      } else {\\n        element = document.createElement(\\\"input\\\");\\n        element.type = this.data.password ? \\\"password\\\" : \\\"text\\\";\\n        element.setAttribute(\\\"value\\\", fieldFormattedValues ?? textContent);\\n        if (this.data.doNotScroll) {\\n          element.style.overflowX = \\\"hidden\\\";\\n        }\\n      }\\n      if (this.data.hasOwnCanvas) {\\n        element.hidden = true;\\n      }\\n      GetElementsByNameSet.add(element);\\n      element.setAttribute(\\\"data-element-id\\\", id);\\n\\n      element.disabled = this.data.readOnly;\\n      element.name = this.data.fieldName;\\n      element.tabIndex = DEFAULT_TAB_INDEX;\\n\\n      this._setRequired(element, this.data.required);\\n\\n      if (maxLen) {\\n        element.maxLength = maxLen;\\n      }\\n\\n      element.addEventListener(\\\"input\\\", event => {\\n        storage.setValue(id, { value: event.target.value });\\n        this.setPropertyOnSiblings(\\n          element,\\n          \\\"value\\\",\\n          event.target.value,\\n          \\\"value\\\"\\n        );\\n        elementData.formattedValue = null;\\n      });\\n\\n      element.addEventListener(\\\"resetform\\\", event => {\\n        const defaultValue = this.data.defaultFieldValue ?? \\\"\\\";\\n        element.value = elementData.userValue = defaultValue;\\n        elementData.formattedValue = null;\\n      });\\n\\n      let blurListener = event => {\\n        const { formattedValue } = elementData;\\n        if (formattedValue !== null && formattedValue !== undefined) {\\n          event.target.value = formattedValue;\\n        }\\n        \u002F\u002F Reset the cursor position to the start of the field (issue 12359).\\n        event.target.scrollLeft = 0;\\n      };\\n\\n      if (this.enableScripting && this.hasJSActions) {\\n        element.addEventListener(\\\"focus\\\", event => {\\n          if (elementData.focused) {\\n            return;\\n          }\\n          const { target } = event;\\n          if (elementData.userValue) {\\n            target.value = elementData.userValue;\\n          }\\n          elementData.lastCommittedValue = target.value;\\n          elementData.commitKey = 1;\\n          if (!this.data.actions?.Focus) {\\n            elementData.focused = true;\\n          }\\n        });\\n\\n        element.addEventListener(\\\"updatefromsandbox\\\", jsEvent => {\\n          this.showElementAndHideCanvas(jsEvent.target);\\n          const actions = {\\n            value(event) {\\n              elementData.userValue = event.detail.value ?? \\\"\\\";\\n              storage.setValue(id, { value: elementData.userValue.toString() });\\n              event.target.value = elementData.userValue;\\n            },\\n            formattedValue(event) {\\n              const { formattedValue } = event.detail;\\n              elementData.formattedValue = formattedValue;\\n              if (\\n                formattedValue !== null &&\\n                formattedValue !== undefined &&\\n                event.target !== document.activeElement\\n              ) {\\n                \u002F\u002F Input hasn't the focus so display formatted string\\n                event.target.value = formattedValue;\\n              }\\n              storage.setValue(id, {\\n                formattedValue,\\n              });\\n            },\\n            selRange(event) {\\n              event.target.setSelectionRange(...event.detail.selRange);\\n            },\\n            charLimit: event => {\\n              const { charLimit } = event.detail;\\n              const { target } = event;\\n              if (charLimit === 0) {\\n                target.removeAttribute(\\\"maxLength\\\");\\n                return;\\n              }\\n\\n              target.setAttribute(\\\"maxLength\\\", charLimit);\\n              let value = elementData.userValue;\\n              if (!value || value.length \u003C= charLimit) {\\n                return;\\n              }\\n              value = value.slice(0, charLimit);\\n              target.value = elementData.userValue = value;\\n              storage.setValue(id, { value });\\n\\n              this.linkService.eventBus?.dispatch(\\\"dispatcheventinsandbox\\\", {\\n                source: this,\\n                detail: {\\n                  id,\\n                  name: \\\"Keystroke\\\",\\n                  value,\\n                  willCommit: true,\\n                  commitKey: 1,\\n                  selStart: target.selectionStart,\\n                  selEnd: target.selectionEnd,\\n                },\\n              });\\n            },\\n          };\\n          this._dispatchEventFromSandbox(actions, jsEvent);\\n        });\\n\\n        \u002F\u002F Even if the field hasn't any actions\\n        \u002F\u002F leaving it can still trigger some actions with Calculate\\n        element.addEventListener(\\\"keydown\\\", event => {\\n          elementData.commitKey = 1;\\n          \u002F\u002F If the key is one of Escape, Enter then the data are committed.\\n          \u002F\u002F If we've a Tab then data will be committed on blur.\\n          let commitKey = -1;\\n          if (event.key === \\\"Escape\\\") {\\n            commitKey = 0;\\n          } else if (event.key === \\\"Enter\\\" && !this.data.multiLine) {\\n            \u002F\u002F When we've a multiline field, \\\"Enter\\\" key is a key as the other\\n            \u002F\u002F hence we don't commit the data (Acrobat behaves the same way)\\n            \u002F\u002F (see issue #15627).\\n            commitKey = 2;\\n          } else if (event.key === \\\"Tab\\\") {\\n            elementData.commitKey = 3;\\n          }\\n          if (commitKey === -1) {\\n            return;\\n          }\\n          const { value } = event.target;\\n          if (elementData.lastCommittedValue === value) {\\n            return;\\n          }\\n          elementData.lastCommittedValue = value;\\n          \u002F\u002F Save the entered value\\n          elementData.userValue = value;\\n          this.linkService.eventBus?.dispatch(\\\"dispatcheventinsandbox\\\", {\\n            source: this,\\n            detail: {\\n              id,\\n              name: \\\"Keystroke\\\",\\n              value,\\n              willCommit: true,\\n              commitKey,\\n              selStart: event.target.selectionStart,\\n              selEnd: event.target.selectionEnd,\\n            },\\n          });\\n        });\\n        const _blurListener = blurListener;\\n        blurListener = null;\\n        element.addEventListener(\\\"blur\\\", event => {\\n          if (!elementData.focused || !event.relatedTarget) {\\n            return;\\n          }\\n          if (!this.data.actions?.Blur) {\\n            elementData.focused = false;\\n          }\\n          const { value } = event.target;\\n          elementData.userValue = value;\\n          if (elementData.lastCommittedValue !== value) {\\n            this.linkService.eventBus?.dispatch(\\\"dispatcheventinsandbox\\\", {\\n              source: this,\\n              detail: {\\n                id,\\n                name: \\\"Keystroke\\\",\\n                value,\\n                willCommit: true,\\n                commitKey: elementData.commitKey,\\n                selStart: event.target.selectionStart,\\n                selEnd: event.target.selectionEnd,\\n              },\\n            });\\n          }\\n          _blurListener(event);\\n        });\\n\\n        if (this.data.actions?.Keystroke) {\\n          element.addEventListener(\\\"beforeinput\\\", event => {\\n            elementData.lastCommittedValue = null;\\n            const { data, target } = event;\\n            const { value, selectionStart, selectionEnd } = target;\\n\\n            let selStart = selectionStart,\\n              selEnd = selectionEnd;\\n\\n            switch (event.inputType) {\\n              \u002F\u002F https:\u002F\u002Frawgit.com\u002Fw3c\u002Finput-events\u002Fv1\u002Findex.html#interface-InputEvent-Attributes\\n              case \\\"deleteWordBackward\\\": {\\n                const match = value\\n                  .substring(0, selectionStart)\\n                  .match(\u002F\\\\w*[^\\\\w]*$\u002F);\\n                if (match) {\\n                  selStart -= match[0].length;\\n                }\\n                break;\\n              }\\n              case \\\"deleteWordForward\\\": {\\n                const match = value\\n                  .substring(selectionStart)\\n                  .match(\u002F^[^\\\\w]*\\\\w*\u002F);\\n                if (match) {\\n                  selEnd += match[0].length;\\n                }\\n                break;\\n              }\\n              case \\\"deleteContentBackward\\\":\\n                if (selectionStart === selectionEnd) {\\n                  selStart -= 1;\\n                }\\n                break;\\n              case \\\"deleteContentForward\\\":\\n                if (selectionStart === selectionEnd) {\\n                  selEnd += 1;\\n                }\\n                break;\\n            }\\n\\n            \u002F\u002F We handle the event ourselves.\\n            event.preventDefault();\\n            this.linkService.eventBus?.dispatch(\\\"dispatcheventinsandbox\\\", {\\n              source: this,\\n              detail: {\\n                id,\\n                name: \\\"Keystroke\\\",\\n                value,\\n                change: data || \\\"\\\",\\n                willCommit: false,\\n                selStart,\\n                selEnd,\\n              },\\n            });\\n          });\\n        }\\n\\n        this._setEventListeners(\\n          element,\\n          elementData,\\n          [\\n            [\\\"focus\\\", \\\"Focus\\\"],\\n            [\\\"blur\\\", \\\"Blur\\\"],\\n            [\\\"mousedown\\\", \\\"Mouse Down\\\"],\\n            [\\\"mouseenter\\\", \\\"Mouse Enter\\\"],\\n            [\\\"mouseleave\\\", \\\"Mouse Exit\\\"],\\n            [\\\"mouseup\\\", \\\"Mouse Up\\\"],\\n          ],\\n          event => event.target.value\\n        );\\n      }\\n\\n      if (blurListener) {\\n        element.addEventListener(\\\"blur\\\", blurListener);\\n      }\\n\\n      if (this.data.comb) {\\n        const fieldWidth = this.data.rect[2] - this.data.rect[0];\\n        const combWidth = fieldWidth \u002F maxLen;\\n\\n        element.classList.add(\\\"comb\\\");\\n        element.style.letterSpacing = `calc(${combWidth}px * var(--total-scale-factor) - 1ch)`;\\n      }\\n    } else {\\n      element = document.createElement(\\\"div\\\");\\n      element.textContent = this.data.fieldValue;\\n      element.style.verticalAlign = \\\"middle\\\";\\n      element.style.display = \\\"table-cell\\\";\\n\\n      if (this.data.hasOwnCanvas) {\\n        element.hidden = true;\\n      }\\n    }\\n\\n    this._setTextStyle(element);\\n    this._setBackgroundColor(element);\\n    this._setDefaultPropertiesFromJS(element);\\n\\n    this.container.append(element);\\n    return this.container;\\n  }\\n}\\n\\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\\n  constructor(parameters) {\\n    super(parameters, { isRenderable: !!parameters.data.hasOwnCanvas });\\n  }\\n}\\n\\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\\n  constructor(parameters) {\\n    super(parameters, { isRenderable: parameters.renderForms });\\n  }\\n\\n  render() {\\n    const storage = this.annotationStorage;\\n    const data = this.data;\\n    const id = data.id;\\n    let value = storage.getValue(id, {\\n      value: data.exportValue === data.fieldValue,\\n    }).value;\\n    if (typeof value === \\\"string\\\") {\\n      \u002F\u002F The value has been changed through js and set in annotationStorage.\\n      value = value !== \\\"Off\\\";\\n      storage.setValue(id, { value });\\n    }\\n\\n    this.container.classList.add(\\\"buttonWidgetAnnotation\\\", \\\"checkBox\\\");\\n\\n    const element = document.createElement(\\\"input\\\");\\n    GetElementsByNameSet.add(element);\\n    element.setAttribute(\\\"data-element-id\\\", id);\\n\\n    element.disabled = data.readOnly;\\n    this._setRequired(element, this.data.required);\\n    element.type = \\\"checkbox\\\";\\n    element.name = data.fieldName;\\n    if (value) {\\n      element.setAttribute(\\\"checked\\\", true);\\n    }\\n    element.setAttribute(\\\"exportValue\\\", data.exportValue);\\n    element.tabIndex = DEFAULT_TAB_INDEX;\\n\\n    element.addEventListener(\\\"change\\\", event => {\\n      const { name, checked } = event.target;\\n      for (const checkbox of this._getElementsByName(name, \u002F* skipId = *\u002F id)) {\\n        const curChecked = checked && checkbox.exportValue === data.exportValue;\\n        if (checkbox.domElement) {\\n          checkbox.domElement.checked = curChecked;\\n        }\\n        storage.setValue(checkbox.id, { value: curChecked });\\n      }\\n      storage.setValue(id, { value: checked });\\n    });\\n\\n    element.addEventListener(\\\"resetform\\\", event => {\\n      const defaultValue = data.defaultFieldValue || \\\"Off\\\";\\n      event.target.checked = defaultValue === data.exportValue;\\n    });\\n\\n    if (this.enableScripting && this.hasJSActions) {\\n      element.addEventListener(\\\"updatefromsandbox\\\", jsEvent => {\\n        const actions = {\\n          value(event) {\\n            event.target.checked = event.detail.value !== \\\"Off\\\";\\n            storage.setValue(id, { value: event.target.checked });\\n          },\\n        };\\n        this._dispatchEventFromSandbox(actions, jsEvent);\\n      });\\n\\n      this._setEventListeners(\\n        element,\\n        null,\\n        [\\n          [\\\"change\\\", \\\"Validate\\\"],\\n          [\\\"change\\\", \\\"Action\\\"],\\n          [\\\"focus\\\", \\\"Focus\\\"],\\n          [\\\"blur\\\", \\\"Blur\\\"],\\n          [\\\"mousedown\\\", \\\"Mouse Down\\\"],\\n          [\\\"mouseenter\\\", \\\"Mouse Enter\\\"],\\n          [\\\"mouseleave\\\", \\\"Mouse Exit\\\"],\\n          [\\\"mouseup\\\", \\\"Mouse Up\\\"],\\n        ],\\n        event => event.target.checked\\n      );\\n    }\\n\\n    this._setBackgroundColor(element);\\n    this._setDefaultPropertiesFromJS(element);\\n\\n    this.container.append(element);\\n    return this.container;\\n  }\\n}\\n\\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\\n  constructor(parameters) {\\n    super(parameters, { isRenderable: parameters.renderForms });\\n  }\\n\\n  render() {\\n    this.container.classList.add(\\\"buttonWidgetAnnotation\\\", \\\"radioButton\\\");\\n    const storage = this.annotationStorage;\\n    const data = this.data;\\n    const id = data.id;\\n    let value = storage.getValue(id, {\\n      value: data.fieldValue === data.buttonValue,\\n    }).value;\\n    if (typeof value === \\\"string\\\") {\\n      \u002F\u002F The value has been changed through js and set in annotationStorage.\\n      value = value !== data.buttonValue;\\n      storage.setValue(id, { value });\\n    }\\n\\n    if (value) {\\n      \u002F\u002F It's possible that multiple radio buttons are checked.\\n      \u002F\u002F So if this one is checked we just reset the other ones.\\n      \u002F\u002F (see bug 1864136). Then when the other ones will be rendered they will\\n      \u002F\u002F unchecked (because of their value in the storage).\\n      \u002F\u002F Consequently, the first checked radio button will be the only checked\\n      \u002F\u002F one.\\n      for (const radio of this._getElementsByName(\\n        data.fieldName,\\n        \u002F* skipId = *\u002F id\\n      )) {\\n        storage.setValue(radio.id, { value: false });\\n      }\\n    }\\n\\n    const element = document.createElement(\\\"input\\\");\\n    GetElementsByNameSet.add(element);\\n    element.setAttribute(\\\"data-element-id\\\", id);\\n\\n    element.disabled = data.readOnly;\\n    this._setRequired(element, this.data.required);\\n    element.type = \\\"radio\\\";\\n    element.name = data.fieldName;\\n    if (value) {\\n      element.setAttribute(\\\"checked\\\", true);\\n    }\\n    element.tabIndex = DEFAULT_TAB_INDEX;\\n\\n    element.addEventListener(\\\"change\\\", event => {\\n      const { name, checked } = event.target;\\n      for (const radio of this._getElementsByName(name, \u002F* skipId = *\u002F id)) {\\n        storage.setValue(radio.id, { value: false });\\n      }\\n      storage.setValue(id, { value: checked });\\n    });\\n\\n    element.addEventListener(\\\"resetform\\\", event => {\\n      const defaultValue = data.defaultFieldValue;\\n      event.target.checked =\\n        defaultValue !== null &&\\n        defaultValue !== undefined &&\\n        defaultValue === data.buttonValue;\\n    });\\n\\n    if (this.enableScripting && this.hasJSActions) {\\n      const pdfButtonValue = data.buttonValue;\\n      element.addEventListener(\\\"updatefromsandbox\\\", jsEvent => {\\n        const actions = {\\n          value: event => {\\n            const checked = pdfButtonValue === event.detail.value;\\n            for (const radio of this._getElementsByName(event.target.name)) {\\n              const curChecked = checked && radio.id === id;\\n              if (radio.domElement) {\\n                radio.domElement.checked = curChecked;\\n              }\\n              storage.setValue(radio.id, { value: curChecked });\\n            }\\n          },\\n        };\\n        this._dispatchEventFromSandbox(actions, jsEvent);\\n      });\\n\\n      this._setEventListeners(\\n        element,\\n        null,\\n        [\\n          [\\\"change\\\", \\\"Validate\\\"],\\n          [\\\"change\\\", \\\"Action\\\"],\\n          [\\\"focus\\\", \\\"Focus\\\"],\\n          [\\\"blur\\\", \\\"Blur\\\"],\\n          [\\\"mousedown\\\", \\\"Mouse Down\\\"],\\n          [\\\"mouseenter\\\", \\\"Mouse Enter\\\"],\\n          [\\\"mouseleave\\\", \\\"Mouse Exit\\\"],\\n          [\\\"mouseup\\\", \\\"Mouse Up\\\"],\\n        ],\\n        event => event.target.checked\\n      );\\n    }\\n\\n    this._setBackgroundColor(element);\\n    this._setDefaultPropertiesFromJS(element);\\n\\n    this.container.append(element);\\n    return this.container;\\n  }\\n}\\n\\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\\n  constructor(parameters) {\\n    super(parameters, { ignoreBorder: parameters.data.hasAppearance });\\n  }\\n\\n  render() {\\n    \u002F\u002F The rendering and functionality of a push button widget annotation is\\n    \u002F\u002F equal to that of a link annotation, but may have more functionality, such\\n    \u002F\u002F as performing actions on form fields (resetting, submitting, et cetera).\\n    const container = super.render();\\n    container.classList.add(\\\"buttonWidgetAnnotation\\\", \\\"pushButton\\\");\\n\\n    const linkElement = container.lastChild;\\n    if (this.enableScripting && this.hasJSActions && linkElement) {\\n      this._setDefaultPropertiesFromJS(linkElement);\\n\\n      linkElement.addEventListener(\\\"updatefromsandbox\\\", jsEvent => {\\n        this._dispatchEventFromSandbox({}, jsEvent);\\n      });\\n    }\\n\\n    return container;\\n  }\\n}\\n\\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\\n  constructor(parameters) {\\n    super(parameters, { isRenderable: parameters.renderForms });\\n  }\\n\\n  render() {\\n    this.container.classList.add(\\\"choiceWidgetAnnotation\\\");\\n    const storage = this.annotationStorage;\\n    const id = this.data.id;\\n\\n    const storedData = storage.getValue(id, {\\n      value: this.data.fieldValue,\\n    });\\n\\n    const selectElement = document.createElement(\\\"select\\\");\\n    GetElementsByNameSet.add(selectElement);\\n    selectElement.setAttribute(\\\"data-element-id\\\", id);\\n\\n    selectElement.disabled = this.data.readOnly;\\n    this._setRequired(selectElement, this.data.required);\\n    selectElement.name = this.data.fieldName;\\n    selectElement.tabIndex = DEFAULT_TAB_INDEX;\\n\\n    let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\\n\\n    if (!this.data.combo) {\\n      \u002F\u002F List boxes have a size and (optionally) multiple selection.\\n      selectElement.size = this.data.options.length;\\n      if (this.data.multiSelect) {\\n        selectElement.multiple = true;\\n      }\\n    }\\n\\n    selectElement.addEventListener(\\\"resetform\\\", event => {\\n      const defaultValue = this.data.defaultFieldValue;\\n      for (const option of selectElement.options) {\\n        option.selected = option.value === defaultValue;\\n      }\\n    });\\n\\n    \u002F\u002F Insert the options into the choice field.\\n    for (const option of this.data.options) {\\n      const optionElement = document.createElement(\\\"option\\\");\\n      optionElement.textContent = option.displayValue;\\n      optionElement.value = option.exportValue;\\n      if (storedData.value.includes(option.exportValue)) {\\n        optionElement.setAttribute(\\\"selected\\\", true);\\n        addAnEmptyEntry = false;\\n      }\\n      selectElement.append(optionElement);\\n    }\\n\\n    let removeEmptyEntry = null;\\n    if (addAnEmptyEntry) {\\n      const noneOptionElement = document.createElement(\\\"option\\\");\\n      noneOptionElement.value = \\\" \\\";\\n      noneOptionElement.setAttribute(\\\"hidden\\\", true);\\n      noneOptionElement.setAttribute(\\\"selected\\\", true);\\n      selectElement.prepend(noneOptionElement);\\n\\n      removeEmptyEntry = () => {\\n        noneOptionElement.remove();\\n        selectElement.removeEventListener(\\\"input\\\", removeEmptyEntry);\\n        removeEmptyEntry = null;\\n      };\\n      selectElement.addEventListener(\\\"input\\\", removeEmptyEntry);\\n    }\\n\\n    const getValue = isExport => {\\n      const name = isExport ? \\\"value\\\" : \\\"textContent\\\";\\n      const { options, multiple } = selectElement;\\n      if (!multiple) {\\n        return options.selectedIndex === -1\\n          ? null\\n          : options[options.selectedIndex][name];\\n      }\\n      return Array.prototype.filter\\n        .call(options, option => option.selected)\\n        .map(option => option[name]);\\n    };\\n\\n    let selectedValues = getValue(\u002F* isExport *\u002F false);\\n\\n    const getItems = event => {\\n      const options = event.target.options;\\n      return Array.prototype.map.call(options, option => ({\\n        displayValue: option.textContent,\\n        exportValue: option.value,\\n      }));\\n    };\\n\\n    if (this.enableScripting && this.hasJSActions) {\\n      selectElement.addEventListener(\\\"updatefromsandbox\\\", jsEvent => {\\n        const actions = {\\n          value(event) {\\n            removeEmptyEntry?.();\\n            const value = event.detail.value;\\n            const values = new Set(Array.isArray(value) ? value : [value]);\\n            for (const option of selectElement.options) {\\n              option.selected = values.has(option.value);\\n            }\\n            storage.setValue(id, {\\n              value: getValue(\u002F* isExport *\u002F true),\\n            });\\n            selectedValues = getValue(\u002F* isExport *\u002F false);\\n          },\\n          multipleSelection(event) {\\n            selectElement.multiple = true;\\n          },\\n          remove(event) {\\n            const options = selectElement.options;\\n            const index = event.detail.remove;\\n            options[index].selected = false;\\n            selectElement.remove(index);\\n            if (options.length > 0) {\\n              const i = Array.prototype.findIndex.call(\\n                options,\\n                option => option.selected\\n              );\\n              if (i === -1) {\\n                options[0].selected = true;\\n              }\\n            }\\n            storage.setValue(id, {\\n              value: getValue(\u002F* isExport *\u002F true),\\n              items: getItems(event),\\n            });\\n            selectedValues = getValue(\u002F* isExport *\u002F false);\\n          },\\n          clear(event) {\\n            while (selectElement.length !== 0) {\\n              selectElement.remove(0);\\n            }\\n            storage.setValue(id, { value: null, items: [] });\\n            selectedValues = getValue(\u002F* isExport *\u002F false);\\n          },\\n          insert(event) {\\n            const { index, displayValue, exportValue } = event.detail.insert;\\n            const selectChild = selectElement.children[index];\\n            const optionElement = document.createElement(\\\"option\\\");\\n            optionElement.textContent = displayValue;\\n            optionElement.value = exportValue;\\n\\n            if (selectChild) {\\n              selectChild.before(optionElement);\\n            } else {\\n              selectElement.append(optionElement);\\n            }\\n            storage.setValue(id, {\\n              value: getValue(\u002F* isExport *\u002F true),\\n              items: getItems(event),\\n            });\\n            selectedValues = getValue(\u002F* isExport *\u002F false);\\n          },\\n          items(event) {\\n            const { items } = event.detail;\\n            while (selectElement.length !== 0) {\\n              selectElement.remove(0);\\n            }\\n            for (const item of items) {\\n              const { displayValue, exportValue } = item;\\n              const optionElement = document.createElement(\\\"option\\\");\\n              optionElement.textContent = displayValue;\\n              optionElement.value = exportValue;\\n              selectElement.append(optionElement);\\n            }\\n            if (selectElement.options.length > 0) {\\n              selectElement.options[0].selected = true;\\n            }\\n            storage.setValue(id, {\\n              value: getValue(\u002F* isExport *\u002F true),\\n              items: getItems(event),\\n            });\\n            selectedValues = getValue(\u002F* isExport *\u002F false);\\n          },\\n          indices(event) {\\n            const indices = new Set(event.detail.indices);\\n            for (const option of event.target.options) {\\n              option.selected = indices.has(option.index);\\n            }\\n            storage.setValue(id, {\\n              value: getValue(\u002F* isExport *\u002F true),\\n            });\\n            selectedValues = getValue(\u002F* isExport *\u002F false);\\n          },\\n          editable(event) {\\n            event.target.disabled = !event.detail.editable;\\n          },\\n        };\\n        this._dispatchEventFromSandbox(actions, jsEvent);\\n      });\\n\\n      selectElement.addEventListener(\\\"input\\\", event => {\\n        const exportValue = getValue(\u002F* isExport *\u002F true);\\n        const change = getValue(\u002F* isExport *\u002F false);\\n        storage.setValue(id, { value: exportValue });\\n\\n        event.preventDefault();\\n\\n        this.linkService.eventBus?.dispatch(\\\"dispatcheventinsandbox\\\", {\\n          source: this,\\n          detail: {\\n            id,\\n            name: \\\"Keystroke\\\",\\n            value: selectedValues,\\n            change,\\n            changeEx: exportValue,\\n            willCommit: false,\\n            commitKey: 1,\\n            keyDown: false,\\n          },\\n        });\\n      });\\n\\n      this._setEventListeners(\\n        selectElement,\\n        null,\\n        [\\n          [\\\"focus\\\", \\\"Focus\\\"],\\n          [\\\"blur\\\", \\\"Blur\\\"],\\n          [\\\"mousedown\\\", \\\"Mouse Down\\\"],\\n          [\\\"mouseenter\\\", \\\"Mouse Enter\\\"],\\n          [\\\"mouseleave\\\", \\\"Mouse Exit\\\"],\\n          [\\\"mouseup\\\", \\\"Mouse Up\\\"],\\n          [\\\"input\\\", \\\"Action\\\"],\\n          [\\\"input\\\", \\\"Validate\\\"],\\n        ],\\n        event => event.target.value\\n      );\\n    } else {\\n      selectElement.addEventListener(\\\"input\\\", function (event) {\\n        storage.setValue(id, { value: getValue(\u002F* isExport *\u002F true) });\\n      });\\n    }\\n\\n    if (this.data.combo) {\\n      this._setTextStyle(selectElement);\\n    } else {\\n      \u002F\u002F Just use the default font size...\\n      \u002F\u002F it's a bit hard to guess what is a good size.\\n    }\\n    this._setBackgroundColor(selectElement);\\n    this._setDefaultPropertiesFromJS(selectElement);\\n\\n    this.container.append(selectElement);\\n    return this.container;\\n  }\\n}\\n\\nclass PopupAnnotationElement extends AnnotationElement {\\n  constructor(parameters) {\\n    const { data, elements } = parameters;\\n    super(parameters, { isRenderable: AnnotationElement._hasPopupData(data) });\\n    this.elements = elements;\\n    this.popup = null;\\n  }\\n\\n  render() {\\n    this.container.classList.add(\\\"popupAnnotation\\\");\\n\\n    const popup = (this.popup = new PopupElement({\\n      container: this.container,\\n      color: this.data.color,\\n      titleObj: this.data.titleObj,\\n      modificationDate: this.data.modificationDate,\\n      contentsObj: this.data.contentsObj,\\n      richText: this.data.richText,\\n      rect: this.data.rect,\\n      parentRect: this.data.parentRect || null,\\n      parent: this.parent,\\n      elements: this.elements,\\n      open: this.data.open,\\n    }));\\n\\n    const elementIds = [];\\n    for (const element of this.elements) {\\n      element.popup = popup;\\n      element.container.ariaHasPopup = \\\"dialog\\\";\\n      elementIds.push(element.data.id);\\n      element.addHighlightArea();\\n    }\\n\\n    this.container.setAttribute(\\n      \\\"aria-controls\\\",\\n      elementIds.map(id => `${AnnotationPrefix}${id}`).join(\\\",\\\")\\n    );\\n\\n    return this.container;\\n  }\\n}\\n\\nclass PopupElement {\\n  #boundKeyDown = this.#keyDown.bind(this);\\n\\n  #boundHide = this.#hide.bind(this);\\n\\n  #boundShow = this.#show.bind(this);\\n\\n  #boundToggle = this.#toggle.bind(this);\\n\\n  #color = null;\\n\\n  #container = null;\\n\\n  #contentsObj = null;\\n\\n  #dateObj = null;\\n\\n  #elements = null;\\n\\n  #parent = null;\\n\\n  #parentRect = null;\\n\\n  #pinned = false;\\n\\n  #popup = null;\\n\\n  #position = null;\\n\\n  #rect = null;\\n\\n  #richText = null;\\n\\n  #titleObj = null;\\n\\n  #updates = null;\\n\\n  #wasVisible = false;\\n\\n  constructor({\\n    container,\\n    color,\\n    elements,\\n    titleObj,\\n    modificationDate,\\n    contentsObj,\\n    richText,\\n    parent,\\n    rect,\\n    parentRect,\\n    open,\\n  }) {\\n    this.#container = container;\\n    this.#titleObj = titleObj;\\n    this.#contentsObj = contentsObj;\\n    this.#richText = richText;\\n    this.#parent = parent;\\n    this.#color = color;\\n    this.#rect = rect;\\n    this.#parentRect = parentRect;\\n    this.#elements = elements;\\n\\n    \u002F\u002F The modification date is shown in the popup instead of the creation\\n    \u002F\u002F date if it is available and can be parsed correctly, which is\\n    \u002F\u002F consistent with other viewers such as Adobe Acrobat.\\n    this.#dateObj = PDFDateString.toDateObject(modificationDate);\\n\\n    this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\\n    \u002F\u002F Attach the event listeners to the trigger element.\\n    for (const element of this.trigger) {\\n      element.addEventListener(\\\"click\\\", this.#boundToggle);\\n      element.addEventListener(\\\"mouseenter\\\", this.#boundShow);\\n      element.addEventListener(\\\"mouseleave\\\", this.#boundHide);\\n      element.classList.add(\\\"popupTriggerArea\\\");\\n    }\\n\\n    \u002F\u002F Attach the event listener to toggle the popup with the keyboard.\\n    for (const element of elements) {\\n      element.container?.addEventListener(\\\"keydown\\\", this.#boundKeyDown);\\n    }\\n\\n    this.#container.hidden = true;\\n    if (open) {\\n      this.#toggle();\\n    }\\n\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING\\\")) {\\n      \u002F\u002F Since the popup is lazily created, we need to ensure that it'll be\\n      \u002F\u002F created and displayed during reference tests.\\n      this.#parent.popupShow.push(async () => {\\n        if (this.#container.hidden) {\\n          this.#show();\\n        }\\n      });\\n    }\\n  }\\n\\n  render() {\\n    if (this.#popup) {\\n      return;\\n    }\\n\\n    const popup = (this.#popup = document.createElement(\\\"div\\\"));\\n    popup.className = \\\"popup\\\";\\n\\n    if (this.#color) {\\n      const baseColor = (popup.style.outlineColor = Util.makeHexColor(\\n        ...this.#color\\n      ));\\n      popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\\n    }\\n\\n    const header = document.createElement(\\\"span\\\");\\n    header.className = \\\"header\\\";\\n    const title = document.createElement(\\\"h1\\\");\\n    header.append(title);\\n    ({ dir: title.dir, str: title.textContent } = this.#titleObj);\\n    popup.append(header);\\n\\n    if (this.#dateObj) {\\n      const modificationDate = document.createElement(\\\"span\\\");\\n      modificationDate.classList.add(\\\"popupDate\\\");\\n      modificationDate.setAttribute(\\n        \\\"data-l10n-id\\\",\\n        \\\"pdfjs-annotation-date-time-string\\\"\\n      );\\n      modificationDate.setAttribute(\\n        \\\"data-l10n-args\\\",\\n        JSON.stringify({ dateObj: this.#dateObj.valueOf() })\\n      );\\n      header.append(modificationDate);\\n    }\\n\\n    const html = this.#html;\\n    if (html) {\\n      XfaLayer.render({\\n        xfaHtml: html,\\n        intent: \\\"richText\\\",\\n        div: popup,\\n      });\\n      popup.lastChild.classList.add(\\\"richText\\\", \\\"popupContent\\\");\\n    } else {\\n      const contents = this._formatContents(this.#contentsObj);\\n      popup.append(contents);\\n    }\\n    this.#container.append(popup);\\n  }\\n\\n  get #html() {\\n    const richText = this.#richText;\\n    const contentsObj = this.#contentsObj;\\n    if (\\n      richText?.str &&\\n      (!contentsObj?.str || contentsObj.str === richText.str)\\n    ) {\\n      return this.#richText.html || null;\\n    }\\n    return null;\\n  }\\n\\n  get #fontSize() {\\n    return this.#html?.attributes?.style?.fontSize || 0;\\n  }\\n\\n  get #fontColor() {\\n    return this.#html?.attributes?.style?.color || null;\\n  }\\n\\n  #makePopupContent(text) {\\n    const popupLines = [];\\n    const popupContent = {\\n      str: text,\\n      html: {\\n        name: \\\"div\\\",\\n        attributes: {\\n          dir: \\\"auto\\\",\\n        },\\n        children: [\\n          {\\n            name: \\\"p\\\",\\n            children: popupLines,\\n          },\\n        ],\\n      },\\n    };\\n    const lineAttributes = {\\n      style: {\\n        color: this.#fontColor,\\n        fontSize: this.#fontSize\\n          ? `calc(${this.#fontSize}px * var(--total-scale-factor))`\\n          : \\\"\\\",\\n      },\\n    };\\n    for (const line of text.split(\\\"\\\\n\\\")) {\\n      popupLines.push({\\n        name: \\\"span\\\",\\n        value: line,\\n        attributes: lineAttributes,\\n      });\\n    }\\n    return popupContent;\\n  }\\n\\n  \u002F**\\n   * Format the contents of the popup by adding newlines where necessary.\\n   *\\n   * @private\\n   * @param {Object\u003Cstring, string>} contentsObj\\n   * @memberof PopupElement\\n   * @returns {HTMLParagraphElement}\\n   *\u002F\\n  _formatContents({ str, dir }) {\\n    const p = document.createElement(\\\"p\\\");\\n    p.classList.add(\\\"popupContent\\\");\\n    p.dir = dir;\\n    const lines = str.split(\u002F(?:\\\\r\\\\n?|\\\\n)\u002F);\\n    for (let i = 0, ii = lines.length; i \u003C ii; ++i) {\\n      const line = lines[i];\\n      p.append(document.createTextNode(line));\\n      if (i \u003C ii - 1) {\\n        p.append(document.createElement(\\\"br\\\"));\\n      }\\n    }\\n    return p;\\n  }\\n\\n  #keyDown(event) {\\n    if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\\n      return;\\n    }\\n\\n    if (event.key === \\\"Enter\\\" || (event.key === \\\"Escape\\\" && this.#pinned)) {\\n      this.#toggle();\\n    }\\n  }\\n\\n  updateEdited({ rect, popupContent }) {\\n    this.#updates ||= {\\n      contentsObj: this.#contentsObj,\\n      richText: this.#richText,\\n    };\\n    if (rect) {\\n      this.#position = null;\\n    }\\n    if (popupContent) {\\n      this.#richText = this.#makePopupContent(popupContent);\\n      this.#contentsObj = null;\\n    }\\n    this.#popup?.remove();\\n    this.#popup = null;\\n  }\\n\\n  resetEdited() {\\n    if (!this.#updates) {\\n      return;\\n    }\\n    ({ contentsObj: this.#contentsObj, richText: this.#richText } =\\n      this.#updates);\\n    this.#updates = null;\\n    this.#popup?.remove();\\n    this.#popup = null;\\n    this.#position = null;\\n  }\\n\\n  #setPosition() {\\n    if (this.#position !== null) {\\n      return;\\n    }\\n    const {\\n      page: { view },\\n      viewport: {\\n        rawDims: { pageWidth, pageHeight, pageX, pageY },\\n      },\\n    } = this.#parent;\\n\\n    let useParentRect = !!this.#parentRect;\\n    let rect = useParentRect ? this.#parentRect : this.#rect;\\n    for (const element of this.#elements) {\\n      if (!rect || Util.intersect(element.data.rect, rect) !== null) {\\n        rect = element.data.rect;\\n        useParentRect = true;\\n        break;\\n      }\\n    }\\n\\n    const normalizedRect = Util.normalizeRect([\\n      rect[0],\\n      view[3] - rect[1] + view[1],\\n      rect[2],\\n      view[3] - rect[3] + view[1],\\n    ]);\\n\\n    const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\\n    const parentWidth = useParentRect\\n      ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION\\n      : 0;\\n    const popupLeft = normalizedRect[0] + parentWidth;\\n    const popupTop = normalizedRect[1];\\n    this.#position = [\\n      (100 * (popupLeft - pageX)) \u002F pageWidth,\\n      (100 * (popupTop - pageY)) \u002F pageHeight,\\n    ];\\n\\n    const { style } = this.#container;\\n    style.left = `${this.#position[0]}%`;\\n    style.top = `${this.#position[1]}%`;\\n  }\\n\\n  \u002F**\\n   * Toggle the visibility of the popup.\\n   *\u002F\\n  #toggle() {\\n    this.#pinned = !this.#pinned;\\n    if (this.#pinned) {\\n      this.#show();\\n      this.#container.addEventListener(\\\"click\\\", this.#boundToggle);\\n      this.#container.addEventListener(\\\"keydown\\\", this.#boundKeyDown);\\n    } else {\\n      this.#hide();\\n      this.#container.removeEventListener(\\\"click\\\", this.#boundToggle);\\n      this.#container.removeEventListener(\\\"keydown\\\", this.#boundKeyDown);\\n    }\\n  }\\n\\n  \u002F**\\n   * Show the popup.\\n   *\u002F\\n  #show() {\\n    if (!this.#popup) {\\n      this.render();\\n    }\\n    if (!this.isVisible) {\\n      this.#setPosition();\\n      this.#container.hidden = false;\\n      this.#container.style.zIndex =\\n        parseInt(this.#container.style.zIndex) + 1000;\\n    } else if (this.#pinned) {\\n      this.#container.classList.add(\\\"focused\\\");\\n    }\\n  }\\n\\n  \u002F**\\n   * Hide the popup.\\n   *\u002F\\n  #hide() {\\n    this.#container.classList.remove(\\\"focused\\\");\\n    if (this.#pinned || !this.isVisible) {\\n      return;\\n    }\\n    this.#container.hidden = true;\\n    this.#container.style.zIndex =\\n      parseInt(this.#container.style.zIndex) - 1000;\\n  }\\n\\n  forceHide() {\\n    this.#wasVisible = this.isVisible;\\n    if (!this.#wasVisible) {\\n      return;\\n    }\\n    this.#container.hidden = true;\\n  }\\n\\n  maybeShow() {\\n    if (!this.#wasVisible) {\\n      return;\\n    }\\n    if (!this.#popup) {\\n      this.#show();\\n    }\\n    this.#wasVisible = false;\\n    this.#container.hidden = false;\\n  }\\n\\n  get isVisible() {\\n    return this.#container.hidden === false;\\n  }\\n}\\n\\nclass FreeTextAnnotationElement extends AnnotationElement {\\n  constructor(parameters) {\\n    super(parameters, { isRenderable: true, ignoreBorder: true });\\n    this.textContent = parameters.data.textContent;\\n    this.textPosition = parameters.data.textPosition;\\n    this.annotationEditorType = AnnotationEditorType.FREETEXT;\\n  }\\n\\n  render() {\\n    this.container.classList.add(\\\"freeTextAnnotation\\\");\\n\\n    if (this.textContent) {\\n      const content = document.createElement(\\\"div\\\");\\n      content.classList.add(\\\"annotationTextContent\\\");\\n      content.setAttribute(\\\"role\\\", \\\"comment\\\");\\n      for (const line of this.textContent) {\\n        const lineSpan = document.createElement(\\\"span\\\");\\n        lineSpan.textContent = line;\\n        content.append(lineSpan);\\n      }\\n      this.container.append(content);\\n    }\\n\\n    if (!this.data.popupRef && this.hasPopupData) {\\n      this._createPopup();\\n    }\\n\\n    this._editOnDoubleClick();\\n\\n    return this.container;\\n  }\\n}\\n\\nclass LineAnnotationElement extends AnnotationElement {\\n  #line = null;\\n\\n  constructor(parameters) {\\n    super(parameters, { isRenderable: true, ignoreBorder: true });\\n  }\\n\\n  render() {\\n    this.container.classList.add(\\\"lineAnnotation\\\");\\n\\n    \u002F\u002F Create an invisible line with the same starting and ending coordinates\\n    \u002F\u002F that acts as the trigger for the popup. Only the line itself should\\n    \u002F\u002F trigger the popup, not the entire container.\\n    const { data, width, height } = this;\\n    const svg = this.svgFactory.create(\\n      width,\\n      height,\\n      \u002F* skipDimensions = *\u002F true\\n    );\\n\\n    \u002F\u002F PDF coordinates are calculated from a bottom left origin, so transform\\n    \u002F\u002F the line coordinates to a top left origin for the SVG element.\\n    const line = (this.#line = this.svgFactory.createElement(\\\"svg:line\\\"));\\n    line.setAttribute(\\\"x1\\\", data.rect[2] - data.lineCoordinates[0]);\\n    line.setAttribute(\\\"y1\\\", data.rect[3] - data.lineCoordinates[1]);\\n    line.setAttribute(\\\"x2\\\", data.rect[2] - data.lineCoordinates[2]);\\n    line.setAttribute(\\\"y2\\\", data.rect[3] - data.lineCoordinates[3]);\\n    \u002F\u002F Ensure that the 'stroke-width' is always non-zero, since otherwise it\\n    \u002F\u002F won't be possible to open\u002Fclose the popup (note e.g. issue 11122).\\n    line.setAttribute(\\\"stroke-width\\\", data.borderStyle.width || 1);\\n    line.setAttribute(\\\"stroke\\\", \\\"transparent\\\");\\n    line.setAttribute(\\\"fill\\\", \\\"transparent\\\");\\n\\n    svg.append(line);\\n    this.container.append(svg);\\n\\n    \u002F\u002F Create the popup ourselves so that we can bind it to the line instead\\n    \u002F\u002F of to the entire container (which is the default).\\n    if (!data.popupRef && this.hasPopupData) {\\n      this._createPopup();\\n    }\\n\\n    return this.container;\\n  }\\n\\n  getElementsToTriggerPopup() {\\n    return this.#line;\\n  }\\n\\n  addHighlightArea() {\\n    this.container.classList.add(\\\"highlightArea\\\");\\n  }\\n}\\n\\nclass SquareAnnotationElement extends AnnotationElement {\\n  #square = null;\\n\\n  constructor(parameters) {\\n    super(parameters, { isRenderable: true, ignoreBorder: true });\\n  }\\n\\n  render() {\\n    this.container.classList.add(\\\"squareAnnotation\\\");\\n\\n    \u002F\u002F Create an invisible square with the same rectangle that acts as the\\n    \u002F\u002F trigger for the popup. Only the square itself should trigger the\\n    \u002F\u002F popup, not the entire container.\\n    const { data, width, height } = this;\\n    const svg = this.svgFactory.create(\\n      width,\\n      height,\\n      \u002F* skipDimensions = *\u002F true\\n    );\\n\\n    \u002F\u002F The browser draws half of the borders inside the square and half of\\n    \u002F\u002F the borders outside the square by default. This behavior cannot be\\n    \u002F\u002F changed programmatically, so correct for that here.\\n    const borderWidth = data.borderStyle.width;\\n    const square = (this.#square = this.svgFactory.createElement(\\\"svg:rect\\\"));\\n    square.setAttribute(\\\"x\\\", borderWidth \u002F 2);\\n    square.setAttribute(\\\"y\\\", borderWidth \u002F 2);\\n    square.setAttribute(\\\"width\\\", width - borderWidth);\\n    square.setAttribute(\\\"height\\\", height - borderWidth);\\n    \u002F\u002F Ensure that the 'stroke-width' is always non-zero, since otherwise it\\n    \u002F\u002F won't be possible to open\u002Fclose the popup (note e.g. issue 11122).\\n    square.setAttribute(\\\"stroke-width\\\", borderWidth || 1);\\n    square.setAttribute(\\\"stroke\\\", \\\"transparent\\\");\\n    square.setAttribute(\\\"fill\\\", \\\"transparent\\\");\\n\\n    svg.append(square);\\n    this.container.append(svg);\\n\\n    \u002F\u002F Create the popup ourselves so that we can bind it to the square instead\\n    \u002F\u002F of to the entire container (which is the default).\\n    if (!data.popupRef && this.hasPopupData) {\\n      this._createPopup();\\n    }\\n\\n    return this.container;\\n  }\\n\\n  getElementsToTriggerPopup() {\\n    return this.#square;\\n  }\\n\\n  addHighlightArea() {\\n    this.container.classList.add(\\\"highlightArea\\\");\\n  }\\n}\\n\\nclass CircleAnnotationElement extends AnnotationElement {\\n  #circle = null;\\n\\n  constructor(parameters) {\\n    super(parameters, { isRenderable: true, ignoreBorder: true });\\n  }\\n\\n  render() {\\n    this.container.classList.add(\\\"circleAnnotation\\\");\\n\\n    \u002F\u002F Create an invisible circle with the same ellipse that acts as the\\n    \u002F\u002F trigger for the popup. Only the circle itself should trigger the\\n    \u002F\u002F popup, not the entire container.\\n    const { data, width, height } = this;\\n    const svg = this.svgFactory.create(\\n      width,\\n      height,\\n      \u002F* skipDimensions = *\u002F true\\n    );\\n\\n    \u002F\u002F The browser draws half of the borders inside the circle and half of\\n    \u002F\u002F the borders outside the circle by default. This behavior cannot be\\n    \u002F\u002F changed programmatically, so correct for that here.\\n    const borderWidth = data.borderStyle.width;\\n    const circle = (this.#circle =\\n      this.svgFactory.createElement(\\\"svg:ellipse\\\"));\\n    circle.setAttribute(\\\"cx\\\", width \u002F 2);\\n    circle.setAttribute(\\\"cy\\\", height \u002F 2);\\n    circle.setAttribute(\\\"rx\\\", width \u002F 2 - borderWidth \u002F 2);\\n    circle.setAttribute(\\\"ry\\\", height \u002F 2 - borderWidth \u002F 2);\\n    \u002F\u002F Ensure that the 'stroke-width' is always non-zero, since otherwise it\\n    \u002F\u002F won't be possible to open\u002Fclose the popup (note e.g. issue 11122).\\n    circle.setAttribute(\\\"stroke-width\\\", borderWidth || 1);\\n    circle.setAttribute(\\\"stroke\\\", \\\"transparent\\\");\\n    circle.setAttribute(\\\"fill\\\", \\\"transparent\\\");\\n\\n    svg.append(circle);\\n    this.container.append(svg);\\n\\n    \u002F\u002F Create the popup ourselves so that we can bind it to the circle instead\\n    \u002F\u002F of to the entire container (which is the default).\\n    if (!data.popupRef && this.hasPopupData) {\\n      this._createPopup();\\n    }\\n\\n    return this.container;\\n  }\\n\\n  getElementsToTriggerPopup() {\\n    return this.#circle;\\n  }\\n\\n  addHighlightArea() {\\n    this.container.classList.add(\\\"highlightArea\\\");\\n  }\\n}\\n\\nclass PolylineAnnotationElement extends AnnotationElement {\\n  #polyline = null;\\n\\n  constructor(parameters) {\\n    super(parameters, { isRenderable: true, ignoreBorder: true });\\n\\n    this.containerClassName = \\\"polylineAnnotation\\\";\\n    this.svgElementName = \\\"svg:polyline\\\";\\n  }\\n\\n  render() {\\n    this.container.classList.add(this.containerClassName);\\n\\n    \u002F\u002F Create an invisible polyline with the same points that acts as the\\n    \u002F\u002F trigger for the popup. Only the polyline itself should trigger the\\n    \u002F\u002F popup, not the entire container.\\n    const {\\n      data: { rect, vertices, borderStyle, popupRef },\\n      width,\\n      height,\\n    } = this;\\n    if (!vertices) {\\n      return this.container;\\n    }\\n    const svg = this.svgFactory.create(\\n      width,\\n      height,\\n      \u002F* skipDimensions = *\u002F true\\n    );\\n\\n    \u002F\u002F Convert the vertices array to a single points string that the SVG\\n    \u002F\u002F polyline element expects (\\\"x1,y1 x2,y2 ...\\\"). PDF coordinates are\\n    \u002F\u002F calculated from a bottom left origin, so transform the polyline\\n    \u002F\u002F coordinates to a top left origin for the SVG element.\\n    let points = [];\\n    for (let i = 0, ii = vertices.length; i \u003C ii; i += 2) {\\n      const x = vertices[i] - rect[0];\\n      const y = rect[3] - vertices[i + 1];\\n      points.push(`${x},${y}`);\\n    }\\n    points = points.join(\\\" \\\");\\n\\n    const polyline = (this.#polyline = this.svgFactory.createElement(\\n      this.svgElementName\\n    ));\\n    polyline.setAttribute(\\\"points\\\", points);\\n    \u002F\u002F Ensure that the 'stroke-width' is always non-zero, since otherwise it\\n    \u002F\u002F won't be possible to open\u002Fclose the popup (note e.g. issue 11122).\\n    polyline.setAttribute(\\\"stroke-width\\\", borderStyle.width || 1);\\n    polyline.setAttribute(\\\"stroke\\\", \\\"transparent\\\");\\n    polyline.setAttribute(\\\"fill\\\", \\\"transparent\\\");\\n\\n    svg.append(polyline);\\n    this.container.append(svg);\\n\\n    \u002F\u002F Create the popup ourselves so that we can bind it to the polyline\\n    \u002F\u002F instead of to the entire container (which is the default).\\n    if (!popupRef && this.hasPopupData) {\\n      this._createPopup();\\n    }\\n\\n    return this.container;\\n  }\\n\\n  getElementsToTriggerPopup() {\\n    return this.#polyline;\\n  }\\n\\n  addHighlightArea() {\\n    this.container.classList.add(\\\"highlightArea\\\");\\n  }\\n}\\n\\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\\n  constructor(parameters) {\\n    \u002F\u002F Polygons are specific forms of polylines, so reuse their logic.\\n    super(parameters);\\n\\n    this.containerClassName = \\\"polygonAnnotation\\\";\\n    this.svgElementName = \\\"svg:polygon\\\";\\n  }\\n}\\n\\nclass CaretAnnotationElement extends AnnotationElement {\\n  constructor(parameters) {\\n    super(parameters, { isRenderable: true, ignoreBorder: true });\\n  }\\n\\n  render() {\\n    this.container.classList.add(\\\"caretAnnotation\\\");\\n\\n    if (!this.data.popupRef && this.hasPopupData) {\\n      this._createPopup();\\n    }\\n    return this.container;\\n  }\\n}\\n\\nclass InkAnnotationElement extends AnnotationElement {\\n  #polylinesGroupElement = null;\\n\\n  #polylines = [];\\n\\n  constructor(parameters) {\\n    super(parameters, { isRenderable: true, ignoreBorder: true });\\n\\n    this.containerClassName = \\\"inkAnnotation\\\";\\n\\n    \u002F\u002F Use the polyline SVG element since it allows us to use coordinates\\n    \u002F\u002F directly and to draw both straight lines and curves.\\n    this.svgElementName = \\\"svg:polyline\\\";\\n\\n    this.annotationEditorType =\\n      this.data.it === \\\"InkHighlight\\\"\\n        ? AnnotationEditorType.HIGHLIGHT\\n        : AnnotationEditorType.INK;\\n  }\\n\\n  #getTransform(rotation, rect) {\\n    \u002F\u002F PDF coordinates are calculated from a bottom left origin, so\\n    \u002F\u002F transform the polyline coordinates to a top left origin for the\\n    \u002F\u002F SVG element.\\n    switch (rotation) {\\n      case 90:\\n        return {\\n          transform: `rotate(90) translate(${-rect[0]},${rect[1]}) scale(1,-1)`,\\n          width: rect[3] - rect[1],\\n          height: rect[2] - rect[0],\\n        };\\n      case 180:\\n        return {\\n          transform: `rotate(180) translate(${-rect[2]},${rect[1]}) scale(1,-1)`,\\n          width: rect[2] - rect[0],\\n          height: rect[3] - rect[1],\\n        };\\n      case 270:\\n        return {\\n          transform: `rotate(270) translate(${-rect[2]},${rect[3]}) scale(1,-1)`,\\n          width: rect[3] - rect[1],\\n          height: rect[2] - rect[0],\\n        };\\n      default:\\n        return {\\n          transform: `translate(${-rect[0]},${rect[3]}) scale(1,-1)`,\\n          width: rect[2] - rect[0],\\n          height: rect[3] - rect[1],\\n        };\\n    }\\n  }\\n\\n  render() {\\n    this.container.classList.add(this.containerClassName);\\n\\n    \u002F\u002F Create an invisible polyline with the same points that acts as the\\n    \u002F\u002F trigger for the popup.\\n    const {\\n      data: { rect, rotation, inkLists, borderStyle, popupRef },\\n    } = this;\\n    const { transform, width, height } = this.#getTransform(rotation, rect);\\n\\n    const svg = this.svgFactory.create(\\n      width,\\n      height,\\n      \u002F* skipDimensions = *\u002F true\\n    );\\n    const g = (this.#polylinesGroupElement =\\n      this.svgFactory.createElement(\\\"svg:g\\\"));\\n    svg.append(g);\\n    \u002F\u002F Ensure that the 'stroke-width' is always non-zero, since otherwise it\\n    \u002F\u002F won't be possible to open\u002Fclose the popup (note e.g. issue 11122).\\n    g.setAttribute(\\\"stroke-width\\\", borderStyle.width || 1);\\n    g.setAttribute(\\\"stroke-linecap\\\", \\\"round\\\");\\n    g.setAttribute(\\\"stroke-linejoin\\\", \\\"round\\\");\\n    g.setAttribute(\\\"stroke-miterlimit\\\", 10);\\n    g.setAttribute(\\\"stroke\\\", \\\"transparent\\\");\\n    g.setAttribute(\\\"fill\\\", \\\"transparent\\\");\\n    g.setAttribute(\\\"transform\\\", transform);\\n\\n    for (let i = 0, ii = inkLists.length; i \u003C ii; i++) {\\n      const polyline = this.svgFactory.createElement(this.svgElementName);\\n      this.#polylines.push(polyline);\\n      polyline.setAttribute(\\\"points\\\", inkLists[i].join(\\\",\\\"));\\n      g.append(polyline);\\n    }\\n\\n    if (!popupRef && this.hasPopupData) {\\n      this._createPopup();\\n    }\\n\\n    this.container.append(svg);\\n    this._editOnDoubleClick();\\n\\n    return this.container;\\n  }\\n\\n  updateEdited(params) {\\n    super.updateEdited(params);\\n    const { thickness, points, rect } = params;\\n    const g = this.#polylinesGroupElement;\\n    if (thickness >= 0) {\\n      g.setAttribute(\\\"stroke-width\\\", thickness || 1);\\n    }\\n    if (points) {\\n      for (let i = 0, ii = this.#polylines.length; i \u003C ii; i++) {\\n        this.#polylines[i].setAttribute(\\\"points\\\", points[i].join(\\\",\\\"));\\n      }\\n    }\\n    if (rect) {\\n      const { transform, width, height } = this.#getTransform(\\n        this.data.rotation,\\n        rect\\n      );\\n      const root = g.parentElement;\\n      root.setAttribute(\\\"viewBox\\\", `0 0 ${width} ${height}`);\\n      g.setAttribute(\\\"transform\\\", transform);\\n    }\\n  }\\n\\n  getElementsToTriggerPopup() {\\n    return this.#polylines;\\n  }\\n\\n  addHighlightArea() {\\n    this.container.classList.add(\\\"highlightArea\\\");\\n  }\\n}\\n\\nclass HighlightAnnotationElement extends AnnotationElement {\\n  constructor(parameters) {\\n    super(parameters, {\\n      isRenderable: true,\\n      ignoreBorder: true,\\n      createQuadrilaterals: true,\\n    });\\n    this.annotationEditorType = AnnotationEditorType.HIGHLIGHT;\\n  }\\n\\n  render() {\\n    if (!this.data.popupRef && this.hasPopupData) {\\n      this._createPopup();\\n    }\\n\\n    this.container.classList.add(\\\"highlightAnnotation\\\");\\n    this._editOnDoubleClick();\\n\\n    return this.container;\\n  }\\n}\\n\\nclass UnderlineAnnotationElement extends AnnotationElement {\\n  constructor(parameters) {\\n    super(parameters, {\\n      isRenderable: true,\\n      ignoreBorder: true,\\n      createQuadrilaterals: true,\\n    });\\n  }\\n\\n  render() {\\n    if (!this.data.popupRef && this.hasPopupData) {\\n      this._createPopup();\\n    }\\n\\n    this.container.classList.add(\\\"underlineAnnotation\\\");\\n    return this.container;\\n  }\\n}\\n\\nclass SquigglyAnnotationElement extends AnnotationElement {\\n  constructor(parameters) {\\n    super(parameters, {\\n      isRenderable: true,\\n      ignoreBorder: true,\\n      createQuadrilaterals: true,\\n    });\\n  }\\n\\n  render() {\\n    if (!this.data.popupRef && this.hasPopupData) {\\n      this._createPopup();\\n    }\\n\\n    this.container.classList.add(\\\"squigglyAnnotation\\\");\\n    return this.container;\\n  }\\n}\\n\\nclass StrikeOutAnnotationElement extends AnnotationElement {\\n  constructor(parameters) {\\n    super(parameters, {\\n      isRenderable: true,\\n      ignoreBorder: true,\\n      createQuadrilaterals: true,\\n    });\\n  }\\n\\n  render() {\\n    if (!this.data.popupRef && this.hasPopupData) {\\n      this._createPopup();\\n    }\\n\\n    this.container.classList.add(\\\"strikeoutAnnotation\\\");\\n    return this.container;\\n  }\\n}\\n\\nclass StampAnnotationElement extends AnnotationElement {\\n  constructor(parameters) {\\n    super(parameters, { isRenderable: true, ignoreBorder: true });\\n    this.annotationEditorType = AnnotationEditorType.STAMP;\\n  }\\n\\n  render() {\\n    this.container.classList.add(\\\"stampAnnotation\\\");\\n    this.container.setAttribute(\\\"role\\\", \\\"img\\\");\\n\\n    if (!this.data.popupRef && this.hasPopupData) {\\n      this._createPopup();\\n    }\\n    this._editOnDoubleClick();\\n\\n    return this.container;\\n  }\\n}\\n\\nclass FileAttachmentAnnotationElement extends AnnotationElement {\\n  #trigger = null;\\n\\n  constructor(parameters) {\\n    super(parameters, { isRenderable: true });\\n\\n    const { file } = this.data;\\n    this.filename = file.filename;\\n    this.content = file.content;\\n\\n    this.linkService.eventBus?.dispatch(\\\"fileattachmentannotation\\\", {\\n      source: this,\\n      ...file,\\n    });\\n  }\\n\\n  render() {\\n    this.container.classList.add(\\\"fileAttachmentAnnotation\\\");\\n\\n    const { container, data } = this;\\n    let trigger;\\n    if (data.hasAppearance || data.fillAlpha === 0) {\\n      trigger = document.createElement(\\\"div\\\");\\n    } else {\\n      \u002F\u002F Unfortunately it seems that it's not clearly specified exactly what\\n      \u002F\u002F names are actually valid, since Table 184 contains:\\n      \u002F\u002F   Conforming readers shall provide predefined icon appearances for at\\n      \u002F\u002F   least the following standard names: GraphPushPin, PaperclipTag.\\n      \u002F\u002F   Additional names may be supported as well. Default value: PushPin.\\n      trigger = document.createElement(\\\"img\\\");\\n      trigger.src = `${this.imageResourcesPath}annotation-${\\n        \u002Fpaperclip\u002Fi.test(data.name) ? \\\"paperclip\\\" : \\\"pushpin\\\"\\n      }.svg`;\\n\\n      if (data.fillAlpha && data.fillAlpha \u003C 1) {\\n        trigger.style = `filter: opacity(${Math.round(\\n          data.fillAlpha * 100\\n        )}%);`;\\n\\n        if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING\\\")) {\\n          this.container.classList.add(\\\"hasFillAlpha\\\");\\n        }\\n      }\\n    }\\n    trigger.addEventListener(\\\"dblclick\\\", this.#download.bind(this));\\n    this.#trigger = trigger;\\n\\n    const { isMac } = FeatureTest.platform;\\n    container.addEventListener(\\\"keydown\\\", evt => {\\n      if (evt.key === \\\"Enter\\\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\\n        this.#download();\\n      }\\n    });\\n\\n    if (!data.popupRef && this.hasPopupData) {\\n      this._createPopup();\\n    } else {\\n      trigger.classList.add(\\\"popupTriggerArea\\\");\\n    }\\n\\n    container.append(trigger);\\n    return container;\\n  }\\n\\n  getElementsToTriggerPopup() {\\n    return this.#trigger;\\n  }\\n\\n  addHighlightArea() {\\n    this.container.classList.add(\\\"highlightArea\\\");\\n  }\\n\\n  \u002F**\\n   * Download the file attachment associated with this annotation.\\n   *\u002F\\n  #download() {\\n    this.downloadManager?.openOrDownloadData(this.content, this.filename);\\n  }\\n}\\n\\n\u002F**\\n * @typedef {Object} AnnotationLayerParameters\\n * @property {PageViewport} viewport\\n * @property {HTMLDivElement} div\\n * @property {Array} annotations\\n * @property {PDFPageProxy} page\\n * @property {IPDFLinkService} linkService\\n * @property {IDownloadManager} [downloadManager]\\n * @property {AnnotationStorage} [annotationStorage]\\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\\n *   for annotation icons. Include trailing slash.\\n * @property {boolean} renderForms\\n * @property {boolean} [enableScripting] - Enable embedded script execution.\\n * @property {boolean} [hasJSActions] - Some fields have JS actions.\\n *   The default value is `false`.\\n * @property {Object\u003Cstring, Array\u003CObject>> | null} [fieldObjects]\\n * @property {Map\u003Cstring, HTMLCanvasElement>} [annotationCanvasMap]\\n * @property {TextAccessibilityManager} [accessibilityManager]\\n * @property {AnnotationEditorUIManager} [annotationEditorUIManager]\\n * @property {StructTreeLayerBuilder} [structTreeLayer]\\n *\u002F\\n\\n\u002F**\\n * Manage the layer containing all the annotations.\\n *\u002F\\nclass AnnotationLayer {\\n  #accessibilityManager = null;\\n\\n  #annotationCanvasMap = null;\\n\\n  #editableAnnotations = new Map();\\n\\n  #structTreeLayer = null;\\n\\n  constructor({\\n    div,\\n    accessibilityManager,\\n    annotationCanvasMap,\\n    annotationEditorUIManager,\\n    page,\\n    viewport,\\n    structTreeLayer,\\n  }) {\\n    this.div = div;\\n    this.#accessibilityManager = accessibilityManager;\\n    this.#annotationCanvasMap = annotationCanvasMap;\\n    this.#structTreeLayer = structTreeLayer || null;\\n    this.page = page;\\n    this.viewport = viewport;\\n    this.zIndex = 0;\\n    this._annotationEditorUIManager = annotationEditorUIManager;\\n\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING\\\")) {\\n      \u002F\u002F For testing purposes.\\n      Object.defineProperty(this, \\\"showPopups\\\", {\\n        value: async () => {\\n          for (const show of this.popupShow) {\\n            await show();\\n          }\\n        },\\n      });\\n      this.popupShow = [];\\n    }\\n  }\\n\\n  hasEditableAnnotations() {\\n    return this.#editableAnnotations.size > 0;\\n  }\\n\\n  async #appendElement(element, id) {\\n    const contentElement = element.firstChild || element;\\n    const annotationId = (contentElement.id = `${AnnotationPrefix}${id}`);\\n    const ariaAttributes =\\n      await this.#structTreeLayer?.getAriaAttributes(annotationId);\\n    if (ariaAttributes) {\\n      for (const [key, value] of ariaAttributes) {\\n        contentElement.setAttribute(key, value);\\n      }\\n    }\\n\\n    this.div.append(element);\\n    this.#accessibilityManager?.moveElementInDOM(\\n      this.div,\\n      element,\\n      contentElement,\\n      \u002F* isRemovable = *\u002F false\\n    );\\n  }\\n\\n  \u002F**\\n   * Render a new annotation layer with all annotation elements.\\n   *\\n   * @param {AnnotationLayerParameters} params\\n   * @memberof AnnotationLayer\\n   *\u002F\\n  async render(params) {\\n    const { annotations } = params;\\n    const layer = this.div;\\n    setLayerDimensions(layer, this.viewport);\\n\\n    const popupToElements = new Map();\\n    const elementParams = {\\n      data: null,\\n      layer,\\n      linkService: params.linkService,\\n      downloadManager: params.downloadManager,\\n      imageResourcesPath: params.imageResourcesPath || \\\"\\\",\\n      renderForms: params.renderForms !== false,\\n      svgFactory: new DOMSVGFactory(),\\n      annotationStorage: params.annotationStorage || new AnnotationStorage(),\\n      enableScripting: params.enableScripting === true,\\n      hasJSActions: params.hasJSActions,\\n      fieldObjects: params.fieldObjects,\\n      parent: this,\\n      elements: null,\\n    };\\n\\n    for (const data of annotations) {\\n      if (data.noHTML) {\\n        continue;\\n      }\\n      const isPopupAnnotation = data.annotationType === AnnotationType.POPUP;\\n      if (!isPopupAnnotation) {\\n        if (data.rect[2] === data.rect[0] || data.rect[3] === data.rect[1]) {\\n          continue; \u002F\u002F Ignore empty annotations.\\n        }\\n      } else {\\n        const elements = popupToElements.get(data.id);\\n        if (!elements) {\\n          \u002F\u002F Ignore popup annotations without a corresponding annotation.\\n          continue;\\n        }\\n        elementParams.elements = elements;\\n      }\\n      elementParams.data = data;\\n      const element = AnnotationElementFactory.create(elementParams);\\n\\n      if (!element.isRenderable) {\\n        continue;\\n      }\\n\\n      if (!isPopupAnnotation && data.popupRef) {\\n        const elements = popupToElements.get(data.popupRef);\\n        if (!elements) {\\n          popupToElements.set(data.popupRef, [element]);\\n        } else {\\n          elements.push(element);\\n        }\\n      }\\n\\n      const rendered = element.render();\\n      if (data.hidden) {\\n        rendered.style.visibility = \\\"hidden\\\";\\n      }\\n      await this.#appendElement(rendered, data.id);\\n\\n      if (element._isEditable) {\\n        this.#editableAnnotations.set(element.data.id, element);\\n        this._annotationEditorUIManager?.renderAnnotationElement(element);\\n      }\\n    }\\n\\n    this.#setAnnotationCanvasMap();\\n  }\\n\\n  \u002F**\\n   * Add link annotations to the annotation layer.\\n   *\\n   * @param {Array\u003CObject>} annotations\\n   * @param {IPDFLinkService} linkService\\n   * @memberof AnnotationLayer\\n   *\u002F\\n  async addLinkAnnotations(annotations, linkService) {\\n    const elementParams = {\\n      data: null,\\n      layer: this.div,\\n      linkService,\\n      svgFactory: new DOMSVGFactory(),\\n      parent: this,\\n    };\\n    for (const data of annotations) {\\n      data.borderStyle ||= AnnotationLayer._defaultBorderStyle;\\n\\n      elementParams.data = data;\\n      const element = AnnotationElementFactory.create(elementParams);\\n\\n      if (!element.isRenderable) {\\n        continue;\\n      }\\n      const rendered = element.render();\\n      await this.#appendElement(rendered, data.id);\\n    }\\n  }\\n\\n  \u002F**\\n   * Update the annotation elements on existing annotation layer.\\n   *\\n   * @param {AnnotationLayerParameters} viewport\\n   * @memberof AnnotationLayer\\n   *\u002F\\n  update({ viewport }) {\\n    const layer = this.div;\\n    this.viewport = viewport;\\n    setLayerDimensions(layer, { rotation: viewport.rotation });\\n\\n    this.#setAnnotationCanvasMap();\\n    layer.hidden = false;\\n  }\\n\\n  #setAnnotationCanvasMap() {\\n    if (!this.#annotationCanvasMap) {\\n      return;\\n    }\\n    const layer = this.div;\\n    for (const [id, canvas] of this.#annotationCanvasMap) {\\n      const element = layer.querySelector(`[data-annotation-id=\\\"${id}\\\"]`);\\n      if (!element) {\\n        continue;\\n      }\\n\\n      canvas.className = \\\"annotationContent\\\";\\n      const { firstChild } = element;\\n      if (!firstChild) {\\n        element.append(canvas);\\n      } else if (firstChild.nodeName === \\\"CANVAS\\\") {\\n        firstChild.replaceWith(canvas);\\n      } else if (!firstChild.classList.contains(\\\"annotationContent\\\")) {\\n        firstChild.before(canvas);\\n      } else {\\n        firstChild.after(canvas);\\n      }\\n\\n      const editableAnnotation = this.#editableAnnotations.get(id);\\n      if (!editableAnnotation) {\\n        continue;\\n      }\\n      if (editableAnnotation._hasNoCanvas) {\\n        \u002F\u002F The canvas wasn't available when the annotation was created.\\n        this._annotationEditorUIManager?.setMissingCanvas(\\n          id,\\n          element.id,\\n          canvas\\n        );\\n        editableAnnotation._hasNoCanvas = false;\\n      } else {\\n        editableAnnotation.canvas = canvas;\\n      }\\n    }\\n    this.#annotationCanvasMap.clear();\\n  }\\n\\n  getEditableAnnotations() {\\n    return Array.from(this.#editableAnnotations.values());\\n  }\\n\\n  getEditableAnnotation(id) {\\n    return this.#editableAnnotations.get(id);\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  static get _defaultBorderStyle() {\\n    return shadow(\\n      this,\\n      \\\"_defaultBorderStyle\\\",\\n      Object.freeze({\\n        width: 1,\\n        rawWidth: 1,\\n        style: AnnotationBorderStyleType.SOLID,\\n        dashArray: [3],\\n        horizontalCornerRadius: 0,\\n        verticalCornerRadius: 0,\\n      })\\n    );\\n  }\\n}\\n\\nexport {\\n  AnnotationLayer,\\n  FreeTextAnnotationElement,\\n  HighlightAnnotationElement,\\n  InkAnnotationElement,\\n  StampAnnotationElement,\\n};\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fannotation_editor_layer.js\\\").AnnotationEditorLayer} AnnotationEditorLayer *\u002F\\n\\nimport {\\n  AnnotationEditorParamsType,\\n  AnnotationEditorType,\\n  assert,\\n  LINE_FACTOR,\\n  shadow,\\n  Util,\\n} from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport { AnnotationEditorUIManager, KeyboardManager } from \\\".\u002Ftools.js\\\";\\nimport { AnnotationEditor } from \\\".\u002Feditor.js\\\";\\nimport { FreeTextAnnotationElement } from \\\"..\u002Fannotation_layer.js\\\";\\n\\nconst EOL_PATTERN = \u002F\\\\r\\\\n?|\\\\n\u002Fg;\\n\\n\u002F**\\n * Basic text editor in order to create a FreeTex annotation.\\n *\u002F\\nclass FreeTextEditor extends AnnotationEditor {\\n  #color;\\n\\n  #content = \\\"\\\";\\n\\n  #editorDivId = `${this.id}-editor`;\\n\\n  #editModeAC = null;\\n\\n  #fontSize;\\n\\n  static _freeTextDefaultContent = \\\"\\\";\\n\\n  static _internalPadding = 0;\\n\\n  static _defaultColor = null;\\n\\n  static _defaultFontSize = 10;\\n\\n  static get _keyboardManager() {\\n    const proto = FreeTextEditor.prototype;\\n\\n    const arrowChecker = self => self.isEmpty();\\n\\n    const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\\n    const big = AnnotationEditorUIManager.TRANSLATE_BIG;\\n\\n    return shadow(\\n      this,\\n      \\\"_keyboardManager\\\",\\n      new KeyboardManager([\\n        [\\n          \u002F\u002F Commit the text in case the user use ctrl+s to save the document.\\n          \u002F\u002F The event must bubble in order to be caught by the viewer.\\n          \u002F\u002F See bug 1831574.\\n          [\\\"ctrl+s\\\", \\\"mac+meta+s\\\", \\\"ctrl+p\\\", \\\"mac+meta+p\\\"],\\n          proto.commitOrRemove,\\n          { bubbles: true },\\n        ],\\n        [\\n          [\\\"ctrl+Enter\\\", \\\"mac+meta+Enter\\\", \\\"Escape\\\", \\\"mac+Escape\\\"],\\n          proto.commitOrRemove,\\n        ],\\n        [\\n          [\\\"ArrowLeft\\\", \\\"mac+ArrowLeft\\\"],\\n          proto._translateEmpty,\\n          { args: [-small, 0], checker: arrowChecker },\\n        ],\\n        [\\n          [\\\"ctrl+ArrowLeft\\\", \\\"mac+shift+ArrowLeft\\\"],\\n          proto._translateEmpty,\\n          { args: [-big, 0], checker: arrowChecker },\\n        ],\\n        [\\n          [\\\"ArrowRight\\\", \\\"mac+ArrowRight\\\"],\\n          proto._translateEmpty,\\n          { args: [small, 0], checker: arrowChecker },\\n        ],\\n        [\\n          [\\\"ctrl+ArrowRight\\\", \\\"mac+shift+ArrowRight\\\"],\\n          proto._translateEmpty,\\n          { args: [big, 0], checker: arrowChecker },\\n        ],\\n        [\\n          [\\\"ArrowUp\\\", \\\"mac+ArrowUp\\\"],\\n          proto._translateEmpty,\\n          { args: [0, -small], checker: arrowChecker },\\n        ],\\n        [\\n          [\\\"ctrl+ArrowUp\\\", \\\"mac+shift+ArrowUp\\\"],\\n          proto._translateEmpty,\\n          { args: [0, -big], checker: arrowChecker },\\n        ],\\n        [\\n          [\\\"ArrowDown\\\", \\\"mac+ArrowDown\\\"],\\n          proto._translateEmpty,\\n          { args: [0, small], checker: arrowChecker },\\n        ],\\n        [\\n          [\\\"ctrl+ArrowDown\\\", \\\"mac+shift+ArrowDown\\\"],\\n          proto._translateEmpty,\\n          { args: [0, big], checker: arrowChecker },\\n        ],\\n      ])\\n    );\\n  }\\n\\n  static _type = \\\"freetext\\\";\\n\\n  static _editorType = AnnotationEditorType.FREETEXT;\\n\\n  constructor(params) {\\n    super({ ...params, name: \\\"freeTextEditor\\\" });\\n    this.#color =\\n      params.color ||\\n      FreeTextEditor._defaultColor ||\\n      AnnotationEditor._defaultLineColor;\\n    this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static initialize(l10n, uiManager) {\\n    AnnotationEditor.initialize(l10n, uiManager);\\n    const style = getComputedStyle(document.documentElement);\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      const lineHeight = parseFloat(\\n        style.getPropertyValue(\\\"--freetext-line-height\\\")\\n      );\\n      assert(\\n        lineHeight === LINE_FACTOR,\\n        \\\"Update the CSS variable to agree with the constant.\\\"\\n      );\\n    }\\n\\n    this._internalPadding = parseFloat(\\n      style.getPropertyValue(\\\"--freetext-padding\\\")\\n    );\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static updateDefaultParams(type, value) {\\n    switch (type) {\\n      case AnnotationEditorParamsType.FREETEXT_SIZE:\\n        FreeTextEditor._defaultFontSize = value;\\n        break;\\n      case AnnotationEditorParamsType.FREETEXT_COLOR:\\n        FreeTextEditor._defaultColor = value;\\n        break;\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  updateParams(type, value) {\\n    switch (type) {\\n      case AnnotationEditorParamsType.FREETEXT_SIZE:\\n        this.#updateFontSize(value);\\n        break;\\n      case AnnotationEditorParamsType.FREETEXT_COLOR:\\n        this.#updateColor(value);\\n        break;\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static get defaultPropertiesToUpdate() {\\n    return [\\n      [\\n        AnnotationEditorParamsType.FREETEXT_SIZE,\\n        FreeTextEditor._defaultFontSize,\\n      ],\\n      [\\n        AnnotationEditorParamsType.FREETEXT_COLOR,\\n        FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor,\\n      ],\\n    ];\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  get propertiesToUpdate() {\\n    return [\\n      [AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize],\\n      [AnnotationEditorParamsType.FREETEXT_COLOR, this.#color],\\n    ];\\n  }\\n\\n  \u002F**\\n   * Update the font size and make this action as undoable.\\n   * @param {number} fontSize\\n   *\u002F\\n  #updateFontSize(fontSize) {\\n    const setFontsize = size => {\\n      this.editorDiv.style.fontSize = `calc(${size}px * var(--total-scale-factor))`;\\n      this.translate(0, -(size - this.#fontSize) * this.parentScale);\\n      this.#fontSize = size;\\n      this.#setEditorDimensions();\\n    };\\n    const savedFontsize = this.#fontSize;\\n    this.addCommands({\\n      cmd: setFontsize.bind(this, fontSize),\\n      undo: setFontsize.bind(this, savedFontsize),\\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\\n      mustExec: true,\\n      type: AnnotationEditorParamsType.FREETEXT_SIZE,\\n      overwriteIfSameType: true,\\n      keepUndo: true,\\n    });\\n  }\\n\\n  \u002F**\\n   * Update the color and make this action undoable.\\n   * @param {string} color\\n   *\u002F\\n  #updateColor(color) {\\n    const setColor = col => {\\n      this.#color = this.editorDiv.style.color = col;\\n    };\\n    const savedColor = this.#color;\\n    this.addCommands({\\n      cmd: setColor.bind(this, color),\\n      undo: setColor.bind(this, savedColor),\\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\\n      mustExec: true,\\n      type: AnnotationEditorParamsType.FREETEXT_COLOR,\\n      overwriteIfSameType: true,\\n      keepUndo: true,\\n    });\\n  }\\n\\n  \u002F**\\n   * Helper to translate the editor with the keyboard when it's empty.\\n   * @param {number} x in page units.\\n   * @param {number} y in page units.\\n   *\u002F\\n  _translateEmpty(x, y) {\\n    this._uiManager.translateSelectedEditors(x, y, \u002F* noCommit = *\u002F true);\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  getInitialTranslation() {\\n    \u002F\u002F The start of the base line is where the user clicked.\\n    const scale = this.parentScale;\\n    return [\\n      -FreeTextEditor._internalPadding * scale,\\n      -(FreeTextEditor._internalPadding + this.#fontSize) * scale,\\n    ];\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  rebuild() {\\n    if (!this.parent) {\\n      return;\\n    }\\n    super.rebuild();\\n    if (this.div === null) {\\n      return;\\n    }\\n\\n    if (!this.isAttachedToDOM) {\\n      \u002F\u002F At some point this editor was removed and we're rebuilting it,\\n      \u002F\u002F hence we must add it to its parent.\\n      this.parent.add(this);\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  enableEditMode() {\\n    if (!super.enableEditMode()) {\\n      return false;\\n    }\\n\\n    this.overlayDiv.classList.remove(\\\"enabled\\\");\\n    this.editorDiv.contentEditable = true;\\n    this._isDraggable = false;\\n    this.div.removeAttribute(\\\"aria-activedescendant\\\");\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        !this.#editModeAC,\\n        \\\"No `this.#editModeAC` AbortController should exist.\\\"\\n      );\\n    }\\n    this.#editModeAC = new AbortController();\\n    const signal = this._uiManager.combinedSignal(this.#editModeAC);\\n\\n    this.editorDiv.addEventListener(\\n      \\\"keydown\\\",\\n      this.editorDivKeydown.bind(this),\\n      { signal }\\n    );\\n    this.editorDiv.addEventListener(\\\"focus\\\", this.editorDivFocus.bind(this), {\\n      signal,\\n    });\\n    this.editorDiv.addEventListener(\\\"blur\\\", this.editorDivBlur.bind(this), {\\n      signal,\\n    });\\n    this.editorDiv.addEventListener(\\\"input\\\", this.editorDivInput.bind(this), {\\n      signal,\\n    });\\n    this.editorDiv.addEventListener(\\\"paste\\\", this.editorDivPaste.bind(this), {\\n      signal,\\n    });\\n\\n    return true;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  disableEditMode() {\\n    if (!super.disableEditMode()) {\\n      return false;\\n    }\\n\\n    this.overlayDiv.classList.add(\\\"enabled\\\");\\n    this.editorDiv.contentEditable = false;\\n    this.div.setAttribute(\\\"aria-activedescendant\\\", this.#editorDivId);\\n    this._isDraggable = true;\\n\\n    this.#editModeAC?.abort();\\n    this.#editModeAC = null;\\n\\n    \u002F\u002F On Chrome, the focus is given to \u003Cbody> when contentEditable is set to\\n    \u002F\u002F false, hence we focus the div.\\n    this.div.focus({\\n      preventScroll: true \u002F* See issue #15744 *\u002F,\\n    });\\n\\n    \u002F\u002F In case the blur callback hasn't been called.\\n    this.isEditing = false;\\n    this.parent.div.classList.add(\\\"freetextEditing\\\");\\n\\n    return true;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  focusin(event) {\\n    if (!this._focusEventsAllowed) {\\n      return;\\n    }\\n    super.focusin(event);\\n    if (event.target !== this.editorDiv) {\\n      this.editorDiv.focus();\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  onceAdded(focus) {\\n    if (this.width) {\\n      \u002F\u002F The editor was created in using ctrl+c.\\n      return;\\n    }\\n    this.enableEditMode();\\n    if (focus) {\\n      this.editorDiv.focus();\\n    }\\n    if (this._initialOptions?.isCentered) {\\n      this.center();\\n    }\\n    this._initialOptions = null;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  isEmpty() {\\n    return !this.editorDiv || this.editorDiv.innerText.trim() === \\\"\\\";\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  remove() {\\n    this.isEditing = false;\\n    if (this.parent) {\\n      this.parent.setEditingState(true);\\n      this.parent.div.classList.add(\\\"freetextEditing\\\");\\n    }\\n    super.remove();\\n  }\\n\\n  \u002F**\\n   * Extract the text from this editor.\\n   * @returns {string}\\n   *\u002F\\n  #extractText() {\\n    \u002F\u002F We don't use innerText because there are some bugs with line breaks.\\n    const buffer = [];\\n    this.editorDiv.normalize();\\n    let prevChild = null;\\n    for (const child of this.editorDiv.childNodes) {\\n      if (prevChild?.nodeType === Node.TEXT_NODE && child.nodeName === \\\"BR\\\") {\\n        \u002F\u002F It can happen if the user uses shift+enter to add a new line.\\n        \u002F\u002F If we don't skip it, we'll end up with an extra line (one for the\\n        \u002F\u002F text and one for the br element).\\n        continue;\\n      }\\n      buffer.push(FreeTextEditor.#getNodeContent(child));\\n      prevChild = child;\\n    }\\n    return buffer.join(\\\"\\\\n\\\");\\n  }\\n\\n  #setEditorDimensions() {\\n    const [parentWidth, parentHeight] = this.parentDimensions;\\n\\n    let rect;\\n    if (this.isAttachedToDOM) {\\n      rect = this.div.getBoundingClientRect();\\n    } else {\\n      \u002F\u002F This editor isn't on screen but we need to get its dimensions, so\\n      \u002F\u002F we just insert it in the DOM, get its bounding box and then remove it.\\n      const { currentLayer, div } = this;\\n      const savedDisplay = div.style.display;\\n      const savedVisibility = div.classList.contains(\\\"hidden\\\");\\n      div.classList.remove(\\\"hidden\\\");\\n      div.style.display = \\\"hidden\\\";\\n      currentLayer.div.append(this.div);\\n      rect = div.getBoundingClientRect();\\n      div.remove();\\n      div.style.display = savedDisplay;\\n      div.classList.toggle(\\\"hidden\\\", savedVisibility);\\n    }\\n\\n    \u002F\u002F The dimensions are relative to the rotation of the page, hence we need to\\n    \u002F\u002F take that into account (see issue #16636).\\n    if (this.rotation % 180 === this.parentRotation % 180) {\\n      this.width = rect.width \u002F parentWidth;\\n      this.height = rect.height \u002F parentHeight;\\n    } else {\\n      this.width = rect.height \u002F parentWidth;\\n      this.height = rect.width \u002F parentHeight;\\n    }\\n    this.fixAndSetPosition();\\n  }\\n\\n  \u002F**\\n   * Commit the content we have in this editor.\\n   * @returns {undefined}\\n   *\u002F\\n  commit() {\\n    if (!this.isInEditMode()) {\\n      return;\\n    }\\n\\n    super.commit();\\n    this.disableEditMode();\\n    const savedText = this.#content;\\n    const newText = (this.#content = this.#extractText().trimEnd());\\n    if (savedText === newText) {\\n      return;\\n    }\\n\\n    const setText = text => {\\n      this.#content = text;\\n      if (!text) {\\n        this.remove();\\n        return;\\n      }\\n      this.#setContent();\\n      this._uiManager.rebuild(this);\\n      this.#setEditorDimensions();\\n    };\\n    this.addCommands({\\n      cmd: () => {\\n        setText(newText);\\n      },\\n      undo: () => {\\n        setText(savedText);\\n      },\\n      mustExec: false,\\n    });\\n    this.#setEditorDimensions();\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  shouldGetKeyboardEvents() {\\n    return this.isInEditMode();\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  enterInEditMode() {\\n    this.enableEditMode();\\n    this.editorDiv.focus();\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  keydown(event) {\\n    if (event.target === this.div && event.key === \\\"Enter\\\") {\\n      this.enterInEditMode();\\n      \u002F\u002F Avoid to add an unwanted new line.\\n      event.preventDefault();\\n    }\\n  }\\n\\n  editorDivKeydown(event) {\\n    FreeTextEditor._keyboardManager.exec(this, event);\\n  }\\n\\n  editorDivFocus(event) {\\n    this.isEditing = true;\\n  }\\n\\n  editorDivBlur(event) {\\n    this.isEditing = false;\\n  }\\n\\n  editorDivInput(event) {\\n    this.parent.div.classList.toggle(\\\"freetextEditing\\\", this.isEmpty());\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  disableEditing() {\\n    this.editorDiv.setAttribute(\\\"role\\\", \\\"comment\\\");\\n    this.editorDiv.removeAttribute(\\\"aria-multiline\\\");\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  enableEditing() {\\n    this.editorDiv.setAttribute(\\\"role\\\", \\\"textbox\\\");\\n    this.editorDiv.setAttribute(\\\"aria-multiline\\\", true);\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  get canChangeContent() {\\n    return true;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  render() {\\n    if (this.div) {\\n      return this.div;\\n    }\\n\\n    let baseX, baseY;\\n    if (this._isCopy || this.annotationElementId) {\\n      baseX = this.x;\\n      baseY = this.y;\\n    }\\n\\n    super.render();\\n    this.editorDiv = document.createElement(\\\"div\\\");\\n    this.editorDiv.className = \\\"internal\\\";\\n\\n    this.editorDiv.setAttribute(\\\"id\\\", this.#editorDivId);\\n    this.editorDiv.setAttribute(\\\"data-l10n-id\\\", \\\"pdfjs-free-text2\\\");\\n    this.editorDiv.setAttribute(\\\"data-l10n-attrs\\\", \\\"default-content\\\");\\n    this.enableEditing();\\n\\n    this.editorDiv.contentEditable = true;\\n\\n    const { style } = this.editorDiv;\\n    style.fontSize = `calc(${this.#fontSize}px * var(--total-scale-factor))`;\\n    style.color = this.#color;\\n\\n    this.div.append(this.editorDiv);\\n\\n    this.overlayDiv = document.createElement(\\\"div\\\");\\n    this.overlayDiv.classList.add(\\\"overlay\\\", \\\"enabled\\\");\\n    this.div.append(this.overlayDiv);\\n\\n    if (this._isCopy || this.annotationElementId) {\\n      \u002F\u002F This editor was created in using copy (ctrl+c).\\n      const [parentWidth, parentHeight] = this.parentDimensions;\\n      if (this.annotationElementId) {\\n        \u002F\u002F This stuff is hard to test: if something is changed here, please\\n        \u002F\u002F test with the following PDF file:\\n        \u002F\u002F  - freetexts.pdf\\n        \u002F\u002F  - rotated_freetexts.pdf\\n        \u002F\u002F Only small variations between the original annotation and its editor\\n        \u002F\u002F are allowed.\\n\\n        \u002F\u002F position is the position of the first glyph in the annotation\\n        \u002F\u002F and it's relative to its container.\\n        const { position } = this._initialData;\\n        let [tx, ty] = this.getInitialTranslation();\\n        [tx, ty] = this.pageTranslationToScreen(tx, ty);\\n        const [pageWidth, pageHeight] = this.pageDimensions;\\n        const [pageX, pageY] = this.pageTranslation;\\n        let posX, posY;\\n        switch (this.rotation) {\\n          case 0:\\n            posX = baseX + (position[0] - pageX) \u002F pageWidth;\\n            posY = baseY + this.height - (position[1] - pageY) \u002F pageHeight;\\n            break;\\n          case 90:\\n            posX = baseX + (position[0] - pageX) \u002F pageWidth;\\n            posY = baseY - (position[1] - pageY) \u002F pageHeight;\\n            [tx, ty] = [ty, -tx];\\n            break;\\n          case 180:\\n            posX = baseX - this.width + (position[0] - pageX) \u002F pageWidth;\\n            posY = baseY - (position[1] - pageY) \u002F pageHeight;\\n            [tx, ty] = [-tx, -ty];\\n            break;\\n          case 270:\\n            posX =\\n              baseX +\\n              (position[0] - pageX - this.height * pageHeight) \u002F pageWidth;\\n            posY =\\n              baseY +\\n              (position[1] - pageY - this.width * pageWidth) \u002F pageHeight;\\n            [tx, ty] = [-ty, tx];\\n            break;\\n        }\\n        this.setAt(posX * parentWidth, posY * parentHeight, tx, ty);\\n      } else {\\n        this._moveAfterPaste(baseX, baseY);\\n      }\\n\\n      this.#setContent();\\n      this._isDraggable = true;\\n      this.editorDiv.contentEditable = false;\\n    } else {\\n      this._isDraggable = false;\\n      this.editorDiv.contentEditable = true;\\n    }\\n\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING\\\")) {\\n      this.div.setAttribute(\\\"annotation-id\\\", this.annotationElementId);\\n    }\\n\\n    return this.div;\\n  }\\n\\n  static #getNodeContent(node) {\\n    return (\\n      node.nodeType === Node.TEXT_NODE ? node.nodeValue : node.innerText\\n    ).replaceAll(EOL_PATTERN, \\\"\\\");\\n  }\\n\\n  editorDivPaste(event) {\\n    const clipboardData = event.clipboardData || window.clipboardData;\\n    const { types } = clipboardData;\\n    if (types.length === 1 && types[0] === \\\"text\u002Fplain\\\") {\\n      return;\\n    }\\n\\n    event.preventDefault();\\n    const paste = FreeTextEditor.#deserializeContent(\\n      clipboardData.getData(\\\"text\\\") || \\\"\\\"\\n    ).replaceAll(EOL_PATTERN, \\\"\\\\n\\\");\\n    if (!paste) {\\n      return;\\n    }\\n    const selection = window.getSelection();\\n    if (!selection.rangeCount) {\\n      return;\\n    }\\n    this.editorDiv.normalize();\\n    selection.deleteFromDocument();\\n    const range = selection.getRangeAt(0);\\n    if (!paste.includes(\\\"\\\\n\\\")) {\\n      range.insertNode(document.createTextNode(paste));\\n      this.editorDiv.normalize();\\n      selection.collapseToStart();\\n      return;\\n    }\\n\\n    \u002F\u002F Collect the text before and after the caret.\\n    const { startContainer, startOffset } = range;\\n    const bufferBefore = [];\\n    const bufferAfter = [];\\n    if (startContainer.nodeType === Node.TEXT_NODE) {\\n      const parent = startContainer.parentElement;\\n      bufferAfter.push(\\n        startContainer.nodeValue.slice(startOffset).replaceAll(EOL_PATTERN, \\\"\\\")\\n      );\\n      if (parent !== this.editorDiv) {\\n        let buffer = bufferBefore;\\n        for (const child of this.editorDiv.childNodes) {\\n          if (child === parent) {\\n            buffer = bufferAfter;\\n            continue;\\n          }\\n          buffer.push(FreeTextEditor.#getNodeContent(child));\\n        }\\n      }\\n      bufferBefore.push(\\n        startContainer.nodeValue\\n          .slice(0, startOffset)\\n          .replaceAll(EOL_PATTERN, \\\"\\\")\\n      );\\n    } else if (startContainer === this.editorDiv) {\\n      let buffer = bufferBefore;\\n      let i = 0;\\n      for (const child of this.editorDiv.childNodes) {\\n        if (i++ === startOffset) {\\n          buffer = bufferAfter;\\n        }\\n        buffer.push(FreeTextEditor.#getNodeContent(child));\\n      }\\n    }\\n    this.#content = `${bufferBefore.join(\\\"\\\\n\\\")}${paste}${bufferAfter.join(\\\"\\\\n\\\")}`;\\n    this.#setContent();\\n\\n    \u002F\u002F Set the caret at the right position.\\n    const newRange = new Range();\\n    let beforeLength = Math.sumPrecise(bufferBefore.map(line => line.length));\\n    for (const { firstChild } of this.editorDiv.childNodes) {\\n      \u002F\u002F Each child is either a div with a text node or a br element.\\n      if (firstChild.nodeType === Node.TEXT_NODE) {\\n        const length = firstChild.nodeValue.length;\\n        if (beforeLength \u003C= length) {\\n          newRange.setStart(firstChild, beforeLength);\\n          newRange.setEnd(firstChild, beforeLength);\\n          break;\\n        }\\n        beforeLength -= length;\\n      }\\n    }\\n    selection.removeAllRanges();\\n    selection.addRange(newRange);\\n  }\\n\\n  #setContent() {\\n    this.editorDiv.replaceChildren();\\n    if (!this.#content) {\\n      return;\\n    }\\n    for (const line of this.#content.split(\\\"\\\\n\\\")) {\\n      const div = document.createElement(\\\"div\\\");\\n      div.append(\\n        line ? document.createTextNode(line) : document.createElement(\\\"br\\\")\\n      );\\n      this.editorDiv.append(div);\\n    }\\n  }\\n\\n  #serializeContent() {\\n    return this.#content.replaceAll(\\\"\\\\xa0\\\", \\\" \\\");\\n  }\\n\\n  static #deserializeContent(content) {\\n    return content.replaceAll(\\\" \\\", \\\"\\\\xa0\\\");\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  get contentDiv() {\\n    return this.editorDiv;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static async deserialize(data, parent, uiManager) {\\n    let initialData = null;\\n    if (data instanceof FreeTextAnnotationElement) {\\n      const {\\n        data: {\\n          defaultAppearanceData: { fontSize, fontColor },\\n          rect,\\n          rotation,\\n          id,\\n          popupRef,\\n        },\\n        textContent,\\n        textPosition,\\n        parent: {\\n          page: { pageNumber },\\n        },\\n      } = data;\\n      \u002F\u002F textContent is supposed to be an array of strings containing each line\\n      \u002F\u002F of text. However, it can be null or empty.\\n      if (!textContent || textContent.length === 0) {\\n        \u002F\u002F Empty annotation.\\n        return null;\\n      }\\n      initialData = data = {\\n        annotationType: AnnotationEditorType.FREETEXT,\\n        color: Array.from(fontColor),\\n        fontSize,\\n        value: textContent.join(\\\"\\\\n\\\"),\\n        position: textPosition,\\n        pageIndex: pageNumber - 1,\\n        rect: rect.slice(0),\\n        rotation,\\n        id,\\n        deleted: false,\\n        popupRef,\\n      };\\n    }\\n    const editor = await super.deserialize(data, parent, uiManager);\\n    editor.#fontSize = data.fontSize;\\n    editor.#color = Util.makeHexColor(...data.color);\\n    editor.#content = FreeTextEditor.#deserializeContent(data.value);\\n    editor.annotationElementId = data.id || null;\\n    editor._initialData = initialData;\\n\\n    return editor;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  serialize(isForCopying = false) {\\n    if (this.isEmpty()) {\\n      return null;\\n    }\\n\\n    if (this.deleted) {\\n      return this.serializeDeleted();\\n    }\\n\\n    const padding = FreeTextEditor._internalPadding * this.parentScale;\\n    const rect = this.getRect(padding, padding);\\n    const color = AnnotationEditor._colorManager.convert(\\n      this.isAttachedToDOM\\n        ? getComputedStyle(this.editorDiv).color\\n        : this.#color\\n    );\\n\\n    const serialized = {\\n      annotationType: AnnotationEditorType.FREETEXT,\\n      color,\\n      fontSize: this.#fontSize,\\n      value: this.#serializeContent(),\\n      pageIndex: this.pageIndex,\\n      rect,\\n      rotation: this.rotation,\\n      structTreeParentId: this._structTreeParentId,\\n    };\\n\\n    if (isForCopying) {\\n      \u002F\u002F Don't add the id when copying because the pasted editor mustn't be\\n      \u002F\u002F linked to an existing annotation.\\n      serialized.isCopy = true;\\n      return serialized;\\n    }\\n\\n    if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\\n      return null;\\n    }\\n\\n    serialized.id = this.annotationElementId;\\n\\n    return serialized;\\n  }\\n\\n  #hasElementChanged(serialized) {\\n    const { value, fontSize, color, pageIndex } = this._initialData;\\n\\n    return (\\n      this._hasBeenMoved ||\\n      serialized.value !== value ||\\n      serialized.fontSize !== fontSize ||\\n      serialized.color.some((c, i) => c !== color[i]) ||\\n      serialized.pageIndex !== pageIndex\\n    );\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  renderAnnotationElement(annotation) {\\n    const content = super.renderAnnotationElement(annotation);\\n    if (this.deleted) {\\n      return content;\\n    }\\n    const { style } = content;\\n    style.fontSize = `calc(${this.#fontSize}px * var(--total-scale-factor))`;\\n    style.color = this.#color;\\n\\n    content.replaceChildren();\\n    for (const line of this.#content.split(\\\"\\\\n\\\")) {\\n      const div = document.createElement(\\\"div\\\");\\n      div.append(\\n        line ? document.createTextNode(line) : document.createElement(\\\"br\\\")\\n      );\\n      content.append(div);\\n    }\\n\\n    const padding = FreeTextEditor._internalPadding * this.parentScale;\\n    annotation.updateEdited({\\n      rect: this.getRect(padding, padding),\\n      popupContent: this.#content,\\n    });\\n\\n    return content;\\n  }\\n\\n  resetAnnotationElement(annotation) {\\n    super.resetAnnotationElement(annotation);\\n    annotation.resetEdited();\\n  }\\n}\\n\\nexport { FreeTextEditor };\\n\",\"\u002F* Copyright 2023 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { unreachable } from \\\"..\u002F..\u002F..\u002Fshared\u002Futil.js\\\";\\n\\nclass Outline {\\n  static PRECISION = 1e-4;\\n\\n  \u002F**\\n   * @returns {string} The SVG path of the outline.\\n   *\u002F\\n  toSVGPath() {\\n    unreachable(\\\"Abstract method `toSVGPath` must be implemented.\\\");\\n  }\\n\\n  \u002F**\\n   * @type {Object|null} The bounding box of the outline.\\n   *\u002F\\n  \u002F\u002F eslint-disable-next-line getter-return\\n  get box() {\\n    unreachable(\\\"Abstract getter `box` must be implemented.\\\");\\n  }\\n\\n  serialize(_bbox, _rotation) {\\n    unreachable(\\\"Abstract method `serialize` must be implemented.\\\");\\n  }\\n\\n  static _rescale(src, tx, ty, sx, sy, dest) {\\n    dest ||= new Float32Array(src.length);\\n    for (let i = 0, ii = src.length; i \u003C ii; i += 2) {\\n      dest[i] = tx + src[i] * sx;\\n      dest[i + 1] = ty + src[i + 1] * sy;\\n    }\\n    return dest;\\n  }\\n\\n  static _rescaleAndSwap(src, tx, ty, sx, sy, dest) {\\n    dest ||= new Float32Array(src.length);\\n    for (let i = 0, ii = src.length; i \u003C ii; i += 2) {\\n      dest[i] = tx + src[i + 1] * sx;\\n      dest[i + 1] = ty + src[i] * sy;\\n    }\\n    return dest;\\n  }\\n\\n  static _translate(src, tx, ty, dest) {\\n    dest ||= new Float32Array(src.length);\\n    for (let i = 0, ii = src.length; i \u003C ii; i += 2) {\\n      dest[i] = tx + src[i];\\n      dest[i + 1] = ty + src[i + 1];\\n    }\\n    return dest;\\n  }\\n\\n  static svgRound(x) {\\n    \u002F\u002F 0.1234 will be 1234 and this way we economize 2 bytes per number.\\n    \u002F\u002F Of course, it makes sense only when the viewBox is [0 0 10000 10000].\\n    \u002F\u002F And it helps to avoid bugs like:\\n    \u002F\u002F  https:\u002F\u002Fbugzilla.mozilla.org\u002Fshow_bug.cgi?id=1929340\\n    return Math.round(x * 10000);\\n  }\\n\\n  static _normalizePoint(x, y, parentWidth, parentHeight, rotation) {\\n    switch (rotation) {\\n      case 90:\\n        return [1 - y \u002F parentWidth, x \u002F parentHeight];\\n      case 180:\\n        return [1 - x \u002F parentWidth, 1 - y \u002F parentHeight];\\n      case 270:\\n        return [y \u002F parentWidth, 1 - x \u002F parentHeight];\\n      default:\\n        return [x \u002F parentWidth, y \u002F parentHeight];\\n    }\\n  }\\n\\n  static _normalizePagePoint(x, y, rotation) {\\n    switch (rotation) {\\n      case 90:\\n        return [1 - y, x];\\n      case 180:\\n        return [1 - x, 1 - y];\\n      case 270:\\n        return [y, 1 - x];\\n      default:\\n        return [x, y];\\n    }\\n  }\\n\\n  static createBezierPoints(x1, y1, x2, y2, x3, y3) {\\n    return [\\n      (x1 + 5 * x2) \u002F 6,\\n      (y1 + 5 * y2) \u002F 6,\\n      (5 * x2 + x3) \u002F 6,\\n      (5 * y2 + y3) \u002F 6,\\n      (x2 + x3) \u002F 2,\\n      (y2 + y3) \u002F 2,\\n    ];\\n  }\\n}\\n\\nexport { Outline };\\n\",\"\u002F* Copyright 2024 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { Outline } from \\\".\u002Foutline.js\\\";\\nimport { Util } from \\\"..\u002F..\u002F..\u002Fshared\u002Futil.js\\\";\\n\\nclass FreeDrawOutliner {\\n  #box;\\n\\n  #bottom = [];\\n\\n  #innerMargin;\\n\\n  #isLTR;\\n\\n  #top = [];\\n\\n  \u002F\u002F The first 6 elements are the last 3 points of the top part of the outline.\\n  \u002F\u002F The next 6 elements are the last 3 points of the line.\\n  \u002F\u002F The next 6 elements are the last 3 points of the bottom part of the\\n  \u002F\u002F outline.\\n  \u002F\u002F We track the last 3 points in order to be able to:\\n  \u002F\u002F  - compute the normal of the line,\\n  \u002F\u002F  - compute the control points of the quadratic Bézier curve.\\n  #last = new Float32Array(18);\\n\\n  #lastX;\\n\\n  #lastY;\\n\\n  #min;\\n\\n  #min_dist;\\n\\n  #scaleFactor;\\n\\n  #thickness;\\n\\n  #points = [];\\n\\n  static #MIN_DIST = 8;\\n\\n  static #MIN_DIFF = 2;\\n\\n  static #MIN = FreeDrawOutliner.#MIN_DIST + FreeDrawOutliner.#MIN_DIFF;\\n\\n  constructor({ x, y }, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\\n    this.#box = box;\\n    this.#thickness = thickness * scaleFactor;\\n    this.#isLTR = isLTR;\\n    this.#last.set([NaN, NaN, NaN, NaN, x, y], 6);\\n    this.#innerMargin = innerMargin;\\n    this.#min_dist = FreeDrawOutliner.#MIN_DIST * scaleFactor;\\n    this.#min = FreeDrawOutliner.#MIN * scaleFactor;\\n    this.#scaleFactor = scaleFactor;\\n    this.#points.push(x, y);\\n  }\\n\\n  isEmpty() {\\n    \u002F\u002F When we add a second point then this.#last.slice(6) will be something\\n    \u002F\u002F like [NaN, NaN, firstX, firstY, secondX, secondY,...] so having a NaN\\n    \u002F\u002F at index 8 means that we've only one point.\\n    return isNaN(this.#last[8]);\\n  }\\n\\n  #getLastCoords() {\\n    const lastTop = this.#last.subarray(4, 6);\\n    const lastBottom = this.#last.subarray(16, 18);\\n    const [x, y, width, height] = this.#box;\\n\\n    return [\\n      (this.#lastX + (lastTop[0] - lastBottom[0]) \u002F 2 - x) \u002F width,\\n      (this.#lastY + (lastTop[1] - lastBottom[1]) \u002F 2 - y) \u002F height,\\n      (this.#lastX + (lastBottom[0] - lastTop[0]) \u002F 2 - x) \u002F width,\\n      (this.#lastY + (lastBottom[1] - lastTop[1]) \u002F 2 - y) \u002F height,\\n    ];\\n  }\\n\\n  add({ x, y }) {\\n    this.#lastX = x;\\n    this.#lastY = y;\\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\\n    let [x1, y1, x2, y2] = this.#last.subarray(8, 12);\\n    const diffX = x - x2;\\n    const diffY = y - y2;\\n    const d = Math.hypot(diffX, diffY);\\n    if (d \u003C this.#min) {\\n      \u002F\u002F The idea is to avoid garbage points around the last point.\\n      \u002F\u002F When the points are too close, it just leads to bad normal vectors and\\n      \u002F\u002F control points.\\n      return false;\\n    }\\n    const diffD = d - this.#min_dist;\\n    const K = diffD \u002F d;\\n    const shiftX = K * diffX;\\n    const shiftY = K * diffY;\\n\\n    \u002F\u002F We update the last 3 points of the line.\\n    let x0 = x1;\\n    let y0 = y1;\\n    x1 = x2;\\n    y1 = y2;\\n    x2 += shiftX;\\n    y2 += shiftY;\\n\\n    \u002F\u002F We keep track of the points in order to be able to compute the focus\\n    \u002F\u002F outline.\\n    this.#points?.push(x, y);\\n\\n    \u002F\u002F Create the normal unit vector.\\n    \u002F\u002F |(shiftX, shiftY)| = |K| * |(diffX, diffY)| = |K| * d = diffD.\\n    const nX = -shiftY \u002F diffD;\\n    const nY = shiftX \u002F diffD;\\n    const thX = nX * this.#thickness;\\n    const thY = nY * this.#thickness;\\n    this.#last.set(this.#last.subarray(2, 8), 0);\\n    this.#last.set([x2 + thX, y2 + thY], 4);\\n    this.#last.set(this.#last.subarray(14, 18), 12);\\n    this.#last.set([x2 - thX, y2 - thY], 16);\\n\\n    if (isNaN(this.#last[6])) {\\n      if (this.#top.length === 0) {\\n        this.#last.set([x1 + thX, y1 + thY], 2);\\n        this.#top.push(\\n          NaN,\\n          NaN,\\n          NaN,\\n          NaN,\\n          (x1 + thX - layerX) \u002F layerWidth,\\n          (y1 + thY - layerY) \u002F layerHeight\\n        );\\n        this.#last.set([x1 - thX, y1 - thY], 14);\\n        this.#bottom.push(\\n          NaN,\\n          NaN,\\n          NaN,\\n          NaN,\\n          (x1 - thX - layerX) \u002F layerWidth,\\n          (y1 - thY - layerY) \u002F layerHeight\\n        );\\n      }\\n      this.#last.set([x0, y0, x1, y1, x2, y2], 6);\\n      return !this.isEmpty();\\n    }\\n\\n    this.#last.set([x0, y0, x1, y1, x2, y2], 6);\\n\\n    const angle = Math.abs(\\n      Math.atan2(y0 - y1, x0 - x1) - Math.atan2(shiftY, shiftX)\\n    );\\n    if (angle \u003C Math.PI \u002F 2) {\\n      \u002F\u002F In order to avoid some possible artifacts, we're going to use the a\\n      \u002F\u002F straight line instead of a quadratic Bézier curve.\\n      [x1, y1, x2, y2] = this.#last.subarray(2, 6);\\n      this.#top.push(\\n        NaN,\\n        NaN,\\n        NaN,\\n        NaN,\\n        ((x1 + x2) \u002F 2 - layerX) \u002F layerWidth,\\n        ((y1 + y2) \u002F 2 - layerY) \u002F layerHeight\\n      );\\n      [x1, y1, x0, y0] = this.#last.subarray(14, 18);\\n      this.#bottom.push(\\n        NaN,\\n        NaN,\\n        NaN,\\n        NaN,\\n        ((x0 + x1) \u002F 2 - layerX) \u002F layerWidth,\\n        ((y0 + y1) \u002F 2 - layerY) \u002F layerHeight\\n      );\\n      return true;\\n    }\\n\\n    \u002F\u002F Control points and the final point for the quadratic Bézier curve.\\n    [x0, y0, x1, y1, x2, y2] = this.#last.subarray(0, 6);\\n    this.#top.push(\\n      ((x0 + 5 * x1) \u002F 6 - layerX) \u002F layerWidth,\\n      ((y0 + 5 * y1) \u002F 6 - layerY) \u002F layerHeight,\\n      ((5 * x1 + x2) \u002F 6 - layerX) \u002F layerWidth,\\n      ((5 * y1 + y2) \u002F 6 - layerY) \u002F layerHeight,\\n      ((x1 + x2) \u002F 2 - layerX) \u002F layerWidth,\\n      ((y1 + y2) \u002F 2 - layerY) \u002F layerHeight\\n    );\\n    [x2, y2, x1, y1, x0, y0] = this.#last.subarray(12, 18);\\n    this.#bottom.push(\\n      ((x0 + 5 * x1) \u002F 6 - layerX) \u002F layerWidth,\\n      ((y0 + 5 * y1) \u002F 6 - layerY) \u002F layerHeight,\\n      ((5 * x1 + x2) \u002F 6 - layerX) \u002F layerWidth,\\n      ((5 * y1 + y2) \u002F 6 - layerY) \u002F layerHeight,\\n      ((x1 + x2) \u002F 2 - layerX) \u002F layerWidth,\\n      ((y1 + y2) \u002F 2 - layerY) \u002F layerHeight\\n    );\\n    return true;\\n  }\\n\\n  toSVGPath() {\\n    if (this.isEmpty()) {\\n      \u002F\u002F We've only one point.\\n      return \\\"\\\";\\n    }\\n    const top = this.#top;\\n    const bottom = this.#bottom;\\n\\n    if (isNaN(this.#last[6]) && !this.isEmpty()) {\\n      \u002F\u002F We've only two points.\\n      return this.#toSVGPathTwoPoints();\\n    }\\n\\n    const buffer = [];\\n    buffer.push(`M${top[4]} ${top[5]}`);\\n    for (let i = 6; i \u003C top.length; i += 6) {\\n      if (isNaN(top[i])) {\\n        buffer.push(`L${top[i + 4]} ${top[i + 5]}`);\\n      } else {\\n        buffer.push(\\n          `C${top[i]} ${top[i + 1]} ${top[i + 2]} ${top[i + 3]} ${top[i + 4]} ${\\n            top[i + 5]\\n          }`\\n        );\\n      }\\n    }\\n\\n    this.#toSVGPathEnd(buffer);\\n\\n    for (let i = bottom.length - 6; i >= 6; i -= 6) {\\n      if (isNaN(bottom[i])) {\\n        buffer.push(`L${bottom[i + 4]} ${bottom[i + 5]}`);\\n      } else {\\n        buffer.push(\\n          `C${bottom[i]} ${bottom[i + 1]} ${bottom[i + 2]} ${bottom[i + 3]} ${\\n            bottom[i + 4]\\n          } ${bottom[i + 5]}`\\n        );\\n      }\\n    }\\n\\n    this.#toSVGPathStart(buffer);\\n\\n    return buffer.join(\\\" \\\");\\n  }\\n\\n  #toSVGPathTwoPoints() {\\n    const [x, y, width, height] = this.#box;\\n    const [lastTopX, lastTopY, lastBottomX, lastBottomY] =\\n      this.#getLastCoords();\\n\\n    return `M${(this.#last[2] - x) \u002F width} ${\\n      (this.#last[3] - y) \u002F height\\n    } L${(this.#last[4] - x) \u002F width} ${(this.#last[5] - y) \u002F height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${\\n      (this.#last[16] - x) \u002F width\\n    } ${(this.#last[17] - y) \u002F height} L${(this.#last[14] - x) \u002F width} ${\\n      (this.#last[15] - y) \u002F height\\n    } Z`;\\n  }\\n\\n  #toSVGPathStart(buffer) {\\n    const bottom = this.#bottom;\\n    buffer.push(`L${bottom[4]} ${bottom[5]} Z`);\\n  }\\n\\n  #toSVGPathEnd(buffer) {\\n    const [x, y, width, height] = this.#box;\\n    const lastTop = this.#last.subarray(4, 6);\\n    const lastBottom = this.#last.subarray(16, 18);\\n    const [lastTopX, lastTopY, lastBottomX, lastBottomY] =\\n      this.#getLastCoords();\\n\\n    buffer.push(\\n      `L${(lastTop[0] - x) \u002F width} ${(lastTop[1] - y) \u002F height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${\\n        (lastBottom[0] - x) \u002F width\\n      } ${(lastBottom[1] - y) \u002F height}`\\n    );\\n  }\\n\\n  newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\\n    return new FreeDrawOutline(\\n      outline,\\n      points,\\n      box,\\n      scaleFactor,\\n      innerMargin,\\n      isLTR\\n    );\\n  }\\n\\n  getOutlines() {\\n    const top = this.#top;\\n    const bottom = this.#bottom;\\n    const last = this.#last;\\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\\n\\n    const points = new Float32Array((this.#points?.length ?? 0) + 2);\\n    for (let i = 0, ii = points.length - 2; i \u003C ii; i += 2) {\\n      points[i] = (this.#points[i] - layerX) \u002F layerWidth;\\n      points[i + 1] = (this.#points[i + 1] - layerY) \u002F layerHeight;\\n    }\\n    points[points.length - 2] = (this.#lastX - layerX) \u002F layerWidth;\\n    points[points.length - 1] = (this.#lastY - layerY) \u002F layerHeight;\\n\\n    if (isNaN(last[6]) && !this.isEmpty()) {\\n      \u002F\u002F We've only two points.\\n      return this.#getOutlineTwoPoints(points);\\n    }\\n\\n    const outline = new Float32Array(\\n      this.#top.length + 24 + this.#bottom.length\\n    );\\n    let N = top.length;\\n    for (let i = 0; i \u003C N; i += 2) {\\n      if (isNaN(top[i])) {\\n        outline[i] = outline[i + 1] = NaN;\\n        continue;\\n      }\\n      outline[i] = top[i];\\n      outline[i + 1] = top[i + 1];\\n    }\\n\\n    N = this.#getOutlineEnd(outline, N);\\n\\n    for (let i = bottom.length - 6; i >= 6; i -= 6) {\\n      for (let j = 0; j \u003C 6; j += 2) {\\n        if (isNaN(bottom[i + j])) {\\n          outline[N] = outline[N + 1] = NaN;\\n          N += 2;\\n          continue;\\n        }\\n        outline[N] = bottom[i + j];\\n        outline[N + 1] = bottom[i + j + 1];\\n        N += 2;\\n      }\\n    }\\n\\n    this.#getOutlineStart(outline, N);\\n\\n    return this.newFreeDrawOutline(\\n      outline,\\n      points,\\n      this.#box,\\n      this.#scaleFactor,\\n      this.#innerMargin,\\n      this.#isLTR\\n    );\\n  }\\n\\n  #getOutlineTwoPoints(points) {\\n    const last = this.#last;\\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\\n    const [lastTopX, lastTopY, lastBottomX, lastBottomY] =\\n      this.#getLastCoords();\\n    const outline = new Float32Array(36);\\n    outline.set(\\n      [\\n        NaN,\\n        NaN,\\n        NaN,\\n        NaN,\\n        (last[2] - layerX) \u002F layerWidth,\\n        (last[3] - layerY) \u002F layerHeight,\\n        NaN,\\n        NaN,\\n        NaN,\\n        NaN,\\n        (last[4] - layerX) \u002F layerWidth,\\n        (last[5] - layerY) \u002F layerHeight,\\n        NaN,\\n        NaN,\\n        NaN,\\n        NaN,\\n        lastTopX,\\n        lastTopY,\\n        NaN,\\n        NaN,\\n        NaN,\\n        NaN,\\n        lastBottomX,\\n        lastBottomY,\\n        NaN,\\n        NaN,\\n        NaN,\\n        NaN,\\n        (last[16] - layerX) \u002F layerWidth,\\n        (last[17] - layerY) \u002F layerHeight,\\n        NaN,\\n        NaN,\\n        NaN,\\n        NaN,\\n        (last[14] - layerX) \u002F layerWidth,\\n        (last[15] - layerY) \u002F layerHeight,\\n      ],\\n      0\\n    );\\n    return this.newFreeDrawOutline(\\n      outline,\\n      points,\\n      this.#box,\\n      this.#scaleFactor,\\n      this.#innerMargin,\\n      this.#isLTR\\n    );\\n  }\\n\\n  #getOutlineStart(outline, pos) {\\n    const bottom = this.#bottom;\\n    outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], pos);\\n    return (pos += 6);\\n  }\\n\\n  #getOutlineEnd(outline, pos) {\\n    const lastTop = this.#last.subarray(4, 6);\\n    const lastBottom = this.#last.subarray(16, 18);\\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\\n    const [lastTopX, lastTopY, lastBottomX, lastBottomY] =\\n      this.#getLastCoords();\\n    outline.set(\\n      [\\n        NaN,\\n        NaN,\\n        NaN,\\n        NaN,\\n        (lastTop[0] - layerX) \u002F layerWidth,\\n        (lastTop[1] - layerY) \u002F layerHeight,\\n        NaN,\\n        NaN,\\n        NaN,\\n        NaN,\\n        lastTopX,\\n        lastTopY,\\n        NaN,\\n        NaN,\\n        NaN,\\n        NaN,\\n        lastBottomX,\\n        lastBottomY,\\n        NaN,\\n        NaN,\\n        NaN,\\n        NaN,\\n        (lastBottom[0] - layerX) \u002F layerWidth,\\n        (lastBottom[1] - layerY) \u002F layerHeight,\\n      ],\\n      pos\\n    );\\n    return (pos += 24);\\n  }\\n}\\n\\nclass FreeDrawOutline extends Outline {\\n  #box;\\n\\n  #bbox = new Float32Array(4);\\n\\n  #innerMargin;\\n\\n  #isLTR;\\n\\n  #points;\\n\\n  #scaleFactor;\\n\\n  #outline;\\n\\n  constructor(outline, points, box, scaleFactor, innerMargin, isLTR) {\\n    super();\\n    this.#outline = outline;\\n    this.#points = points;\\n    this.#box = box;\\n    this.#scaleFactor = scaleFactor;\\n    this.#innerMargin = innerMargin;\\n    this.#isLTR = isLTR;\\n    this.lastPoint = [NaN, NaN];\\n    this.#computeMinMax(isLTR);\\n\\n    const [x, y, width, height] = this.#bbox;\\n    for (let i = 0, ii = outline.length; i \u003C ii; i += 2) {\\n      outline[i] = (outline[i] - x) \u002F width;\\n      outline[i + 1] = (outline[i + 1] - y) \u002F height;\\n    }\\n    for (let i = 0, ii = points.length; i \u003C ii; i += 2) {\\n      points[i] = (points[i] - x) \u002F width;\\n      points[i + 1] = (points[i + 1] - y) \u002F height;\\n    }\\n  }\\n\\n  toSVGPath() {\\n    const buffer = [`M${this.#outline[4]} ${this.#outline[5]}`];\\n    for (let i = 6, ii = this.#outline.length; i \u003C ii; i += 6) {\\n      if (isNaN(this.#outline[i])) {\\n        buffer.push(`L${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\\n        continue;\\n      }\\n      buffer.push(\\n        `C${this.#outline[i]} ${this.#outline[i + 1]} ${this.#outline[i + 2]} ${\\n          this.#outline[i + 3]\\n        } ${this.#outline[i + 4]} ${this.#outline[i + 5]}`\\n      );\\n    }\\n    buffer.push(\\\"Z\\\");\\n    return buffer.join(\\\" \\\");\\n  }\\n\\n  serialize([blX, blY, trX, trY], rotation) {\\n    const width = trX - blX;\\n    const height = trY - blY;\\n    let outline;\\n    let points;\\n    switch (rotation) {\\n      case 0:\\n        outline = Outline._rescale(this.#outline, blX, trY, width, -height);\\n        points = Outline._rescale(this.#points, blX, trY, width, -height);\\n        break;\\n      case 90:\\n        outline = Outline._rescaleAndSwap(\\n          this.#outline,\\n          blX,\\n          blY,\\n          width,\\n          height\\n        );\\n        points = Outline._rescaleAndSwap(this.#points, blX, blY, width, height);\\n        break;\\n      case 180:\\n        outline = Outline._rescale(this.#outline, trX, blY, -width, height);\\n        points = Outline._rescale(this.#points, trX, blY, -width, height);\\n        break;\\n      case 270:\\n        outline = Outline._rescaleAndSwap(\\n          this.#outline,\\n          trX,\\n          trY,\\n          -width,\\n          -height\\n        );\\n        points = Outline._rescaleAndSwap(\\n          this.#points,\\n          trX,\\n          trY,\\n          -width,\\n          -height\\n        );\\n        break;\\n    }\\n    return { outline: Array.from(outline), points: [Array.from(points)] };\\n  }\\n\\n  #computeMinMax(isLTR) {\\n    const outline = this.#outline;\\n    let lastX = outline[4];\\n    let lastY = outline[5];\\n    const minMax = [lastX, lastY, lastX, lastY];\\n    let lastPointX = lastX;\\n    let lastPointY = lastY;\\n    const ltrCallback = isLTR ? Math.max : Math.min;\\n\\n    for (let i = 6, ii = outline.length; i \u003C ii; i += 6) {\\n      const x = outline[i + 4],\\n        y = outline[i + 5];\\n\\n      if (isNaN(outline[i])) {\\n        Util.pointBoundingBox(x, y, minMax);\\n\\n        if (lastPointY \u003C y) {\\n          lastPointX = x;\\n          lastPointY = y;\\n        } else if (lastPointY === y) {\\n          lastPointX = ltrCallback(lastPointX, x);\\n        }\\n      } else {\\n        const bbox = [Infinity, Infinity, -Infinity, -Infinity];\\n        Util.bezierBoundingBox(lastX, lastY, ...outline.slice(i, i + 6), bbox);\\n\\n        Util.rectBoundingBox(...bbox, minMax);\\n\\n        if (lastPointY \u003C bbox[3]) {\\n          lastPointX = bbox[2];\\n          lastPointY = bbox[3];\\n        } else if (lastPointY === bbox[3]) {\\n          lastPointX = ltrCallback(lastPointX, bbox[2]);\\n        }\\n      }\\n      lastX = x;\\n      lastY = y;\\n    }\\n\\n    const bbox = this.#bbox;\\n    bbox[0] = minMax[0] - this.#innerMargin;\\n    bbox[1] = minMax[1] - this.#innerMargin;\\n    bbox[2] = minMax[2] - minMax[0] + 2 * this.#innerMargin;\\n    bbox[3] = minMax[3] - minMax[1] + 2 * this.#innerMargin;\\n    this.lastPoint = [lastPointX, lastPointY];\\n  }\\n\\n  get box() {\\n    return this.#bbox;\\n  }\\n\\n  newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\\n    return new FreeDrawOutliner(\\n      point,\\n      box,\\n      scaleFactor,\\n      thickness,\\n      isLTR,\\n      innerMargin\\n    );\\n  }\\n\\n  getNewOutline(thickness, innerMargin) {\\n    \u002F\u002F Build the outline of the highlight to use as the focus outline.\\n    const [x, y, width, height] = this.#bbox;\\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\\n    const sx = width * layerWidth;\\n    const sy = height * layerHeight;\\n    const tx = x * layerWidth + layerX;\\n    const ty = y * layerHeight + layerY;\\n    const outliner = this.newOutliner(\\n      {\\n        x: this.#points[0] * sx + tx,\\n        y: this.#points[1] * sy + ty,\\n      },\\n      this.#box,\\n      this.#scaleFactor,\\n      thickness,\\n      this.#isLTR,\\n      innerMargin ?? this.#innerMargin\\n    );\\n    for (let i = 2; i \u003C this.#points.length; i += 2) {\\n      outliner.add({\\n        x: this.#points[i] * sx + tx,\\n        y: this.#points[i + 1] * sy + ty,\\n      });\\n    }\\n    return outliner.getOutlines();\\n  }\\n}\\n\\nexport { FreeDrawOutline, FreeDrawOutliner };\\n\",\"\u002F* Copyright 2023 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { FreeDrawOutline, FreeDrawOutliner } from \\\".\u002Ffreedraw.js\\\";\\nimport { Outline } from \\\".\u002Foutline.js\\\";\\nimport { Util } from \\\"..\u002F..\u002F..\u002Fshared\u002Futil.js\\\";\\n\\nclass HighlightOutliner {\\n  #box;\\n\\n  #lastPoint;\\n\\n  #verticalEdges = [];\\n\\n  #intervals = [];\\n\\n  \u002F**\\n   * Construct an outliner.\\n   * @param {Array\u003CObject>} boxes - An array of axis-aligned rectangles.\\n   * @param {number} borderWidth - The width of the border of the boxes, it\\n   *   allows to make the boxes bigger (or smaller).\\n   * @param {number} innerMargin - The margin between the boxes and the\\n   *   outlines. It's important to not have a null innerMargin when we want to\\n   *   draw the outline else the stroked outline could be clipped because of its\\n   *   width.\\n   * @param {boolean} isLTR - true if we're in LTR mode. It's used to determine\\n   *   the last point of the boxes.\\n   *\u002F\\n  constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\\n    const minMax = [Infinity, Infinity, -Infinity, -Infinity];\\n\\n    \u002F\u002F We round the coordinates to slightly reduce the number of edges in the\\n    \u002F\u002F final outlines.\\n    const NUMBER_OF_DIGITS = 4;\\n    const EPSILON = 10 ** -NUMBER_OF_DIGITS;\\n\\n    \u002F\u002F The coordinates of the boxes are in the page coordinate system.\\n    for (const { x, y, width, height } of boxes) {\\n      const x1 = Math.floor((x - borderWidth) \u002F EPSILON) * EPSILON;\\n      const x2 = Math.ceil((x + width + borderWidth) \u002F EPSILON) * EPSILON;\\n      const y1 = Math.floor((y - borderWidth) \u002F EPSILON) * EPSILON;\\n      const y2 = Math.ceil((y + height + borderWidth) \u002F EPSILON) * EPSILON;\\n      const left = [x1, y1, y2, true];\\n      const right = [x2, y1, y2, false];\\n      this.#verticalEdges.push(left, right);\\n\\n      Util.rectBoundingBox(x1, y1, x2, y2, minMax);\\n    }\\n\\n    const bboxWidth = minMax[2] - minMax[0] + 2 * innerMargin;\\n    const bboxHeight = minMax[3] - minMax[1] + 2 * innerMargin;\\n    const shiftedMinX = minMax[0] - innerMargin;\\n    const shiftedMinY = minMax[1] - innerMargin;\\n    const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2);\\n    const lastPoint = [lastEdge[0], lastEdge[2]];\\n\\n    \u002F\u002F Convert the coordinates of the edges into box coordinates.\\n    for (const edge of this.#verticalEdges) {\\n      const [x, y1, y2] = edge;\\n      edge[0] = (x - shiftedMinX) \u002F bboxWidth;\\n      edge[1] = (y1 - shiftedMinY) \u002F bboxHeight;\\n      edge[2] = (y2 - shiftedMinY) \u002F bboxHeight;\\n    }\\n\\n    this.#box = new Float32Array([\\n      shiftedMinX,\\n      shiftedMinY,\\n      bboxWidth,\\n      bboxHeight,\\n    ]);\\n    this.#lastPoint = lastPoint;\\n  }\\n\\n  getOutlines() {\\n    \u002F\u002F We begin to sort lexicographically the vertical edges by their abscissa,\\n    \u002F\u002F and then by their ordinate.\\n    this.#verticalEdges.sort(\\n      (a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]\\n    );\\n\\n    \u002F\u002F We're now using a sweep line algorithm to find the outlines.\\n    \u002F\u002F We start with the leftmost vertical edge, and we're going to iterate\\n    \u002F\u002F over all the vertical edges from left to right.\\n    \u002F\u002F Each time we encounter a left edge, we're going to insert the interval\\n    \u002F\u002F [y1, y2] in the set of intervals.\\n    \u002F\u002F This set of intervals is used to break the vertical edges into chunks:\\n    \u002F\u002F we only take the part of the vertical edge that isn't in the union of\\n    \u002F\u002F the intervals.\\n    const outlineVerticalEdges = [];\\n    for (const edge of this.#verticalEdges) {\\n      if (edge[3]) {\\n        \u002F\u002F Left edge.\\n        outlineVerticalEdges.push(...this.#breakEdge(edge));\\n        this.#insert(edge);\\n      } else {\\n        \u002F\u002F Right edge.\\n        this.#remove(edge);\\n        outlineVerticalEdges.push(...this.#breakEdge(edge));\\n      }\\n    }\\n    return this.#getOutlines(outlineVerticalEdges);\\n  }\\n\\n  #getOutlines(outlineVerticalEdges) {\\n    const edges = [];\\n    const allEdges = new Set();\\n\\n    for (const edge of outlineVerticalEdges) {\\n      const [x, y1, y2] = edge;\\n      edges.push([x, y1, edge], [x, y2, edge]);\\n    }\\n\\n    \u002F\u002F We sort lexicographically the vertices of each edge by their ordinate and\\n    \u002F\u002F by their abscissa.\\n    \u002F\u002F Every pair (v_2i, v_{2i + 1}) of vertices defines a horizontal edge.\\n    \u002F\u002F So for every vertical edge, we're going to add the two vertical edges\\n    \u002F\u002F which are connected to it through a horizontal edge.\\n    edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]);\\n    for (let i = 0, ii = edges.length; i \u003C ii; i += 2) {\\n      const edge1 = edges[i][2];\\n      const edge2 = edges[i + 1][2];\\n      edge1.push(edge2);\\n      edge2.push(edge1);\\n      allEdges.add(edge1);\\n      allEdges.add(edge2);\\n    }\\n    const outlines = [];\\n    let outline;\\n\\n    while (allEdges.size > 0) {\\n      const edge = allEdges.values().next().value;\\n      let [x, y1, y2, edge1, edge2] = edge;\\n      allEdges.delete(edge);\\n      let lastPointX = x;\\n      let lastPointY = y1;\\n\\n      outline = [x, y2];\\n      outlines.push(outline);\\n\\n      while (true) {\\n        let e;\\n        if (allEdges.has(edge1)) {\\n          e = edge1;\\n        } else if (allEdges.has(edge2)) {\\n          e = edge2;\\n        } else {\\n          break;\\n        }\\n\\n        allEdges.delete(e);\\n        [x, y1, y2, edge1, edge2] = e;\\n\\n        if (lastPointX !== x) {\\n          outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2);\\n          lastPointX = x;\\n        }\\n        lastPointY = lastPointY === y1 ? y2 : y1;\\n      }\\n      outline.push(lastPointX, lastPointY);\\n    }\\n    return new HighlightOutline(outlines, this.#box, this.#lastPoint);\\n  }\\n\\n  #binarySearch(y) {\\n    const array = this.#intervals;\\n    let start = 0;\\n    let end = array.length - 1;\\n\\n    while (start \u003C= end) {\\n      const middle = (start + end) >> 1;\\n      const y1 = array[middle][0];\\n      if (y1 === y) {\\n        return middle;\\n      }\\n      if (y1 \u003C y) {\\n        start = middle + 1;\\n      } else {\\n        end = middle - 1;\\n      }\\n    }\\n    return end + 1;\\n  }\\n\\n  #insert([, y1, y2]) {\\n    const index = this.#binarySearch(y1);\\n    this.#intervals.splice(index, 0, [y1, y2]);\\n  }\\n\\n  #remove([, y1, y2]) {\\n    const index = this.#binarySearch(y1);\\n    for (let i = index; i \u003C this.#intervals.length; i++) {\\n      const [start, end] = this.#intervals[i];\\n      if (start !== y1) {\\n        break;\\n      }\\n      if (start === y1 && end === y2) {\\n        this.#intervals.splice(i, 1);\\n        return;\\n      }\\n    }\\n    for (let i = index - 1; i >= 0; i--) {\\n      const [start, end] = this.#intervals[i];\\n      if (start !== y1) {\\n        break;\\n      }\\n      if (start === y1 && end === y2) {\\n        this.#intervals.splice(i, 1);\\n        return;\\n      }\\n    }\\n  }\\n\\n  #breakEdge(edge) {\\n    const [x, y1, y2] = edge;\\n    const results = [[x, y1, y2]];\\n    const index = this.#binarySearch(y2);\\n    for (let i = 0; i \u003C index; i++) {\\n      const [start, end] = this.#intervals[i];\\n      for (let j = 0, jj = results.length; j \u003C jj; j++) {\\n        const [, y3, y4] = results[j];\\n        if (end \u003C= y3 || y4 \u003C= start) {\\n          \u002F\u002F There is no intersection between the interval and the edge, hence\\n          \u002F\u002F we keep it as is.\\n          continue;\\n        }\\n        if (y3 >= start) {\\n          if (y4 > end) {\\n            results[j][1] = end;\\n          } else {\\n            if (jj === 1) {\\n              return [];\\n            }\\n            \u002F\u002F The edge is included in the interval, hence we remove it.\\n            results.splice(j, 1);\\n            j--;\\n            jj--;\\n          }\\n          continue;\\n        }\\n        results[j][2] = start;\\n        if (y4 > end) {\\n          results.push([x, end, y4]);\\n        }\\n      }\\n    }\\n    return results;\\n  }\\n}\\n\\nclass HighlightOutline extends Outline {\\n  #box;\\n\\n  #outlines;\\n\\n  constructor(outlines, box, lastPoint) {\\n    super();\\n    this.#outlines = outlines;\\n    this.#box = box;\\n    this.lastPoint = lastPoint;\\n  }\\n\\n  toSVGPath() {\\n    const buffer = [];\\n    for (const polygon of this.#outlines) {\\n      let [prevX, prevY] = polygon;\\n      buffer.push(`M${prevX} ${prevY}`);\\n      for (let i = 2; i \u003C polygon.length; i += 2) {\\n        const x = polygon[i];\\n        const y = polygon[i + 1];\\n        if (x === prevX) {\\n          buffer.push(`V${y}`);\\n          prevY = y;\\n        } else if (y === prevY) {\\n          buffer.push(`H${x}`);\\n          prevX = x;\\n        }\\n      }\\n      buffer.push(\\\"Z\\\");\\n    }\\n    return buffer.join(\\\" \\\");\\n  }\\n\\n  \u002F**\\n   * Serialize the outlines into the PDF page coordinate system.\\n   * @param {Array\u003Cnumber>} _bbox - the bounding box of the annotation.\\n   * @param {number} _rotation - the rotation of the annotation.\\n   * @returns {Array\u003CArray\u003Cnumber>>}\\n   *\u002F\\n  serialize([blX, blY, trX, trY], _rotation) {\\n    const outlines = [];\\n    const width = trX - blX;\\n    const height = trY - blY;\\n    for (const outline of this.#outlines) {\\n      const points = new Array(outline.length);\\n      for (let i = 0; i \u003C outline.length; i += 2) {\\n        points[i] = blX + outline[i] * width;\\n        points[i + 1] = trY - outline[i + 1] * height;\\n      }\\n      outlines.push(points);\\n    }\\n    return outlines;\\n  }\\n\\n  get box() {\\n    return this.#box;\\n  }\\n\\n  get classNamesForOutlining() {\\n    return [\\\"highlightOutline\\\"];\\n  }\\n}\\n\\nclass FreeHighlightOutliner extends FreeDrawOutliner {\\n  newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\\n    return new FreeHighlightOutline(\\n      outline,\\n      points,\\n      box,\\n      scaleFactor,\\n      innerMargin,\\n      isLTR\\n    );\\n  }\\n}\\n\\nclass FreeHighlightOutline extends FreeDrawOutline {\\n  newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\\n    return new FreeHighlightOutliner(\\n      point,\\n      box,\\n      scaleFactor,\\n      thickness,\\n      isLTR,\\n      innerMargin\\n    );\\n  }\\n}\\n\\nexport { FreeHighlightOutliner, HighlightOutliner };\\n\",\"\u002F* Copyright 2023 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { AnnotationEditorParamsType, shadow } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport { KeyboardManager } from \\\".\u002Ftools.js\\\";\\nimport { noContextMenu } from \\\"..\u002Fdisplay_utils.js\\\";\\n\\nclass ColorPicker {\\n  #button = null;\\n\\n  #buttonSwatch = null;\\n\\n  #defaultColor;\\n\\n  #dropdown = null;\\n\\n  #dropdownWasFromKeyboard = false;\\n\\n  #isMainColorPicker = false;\\n\\n  #editor = null;\\n\\n  #eventBus;\\n\\n  #openDropdownAC = null;\\n\\n  #uiManager = null;\\n\\n  #type;\\n\\n  static #l10nColor = null;\\n\\n  static get _keyboardManager() {\\n    return shadow(\\n      this,\\n      \\\"_keyboardManager\\\",\\n      new KeyboardManager([\\n        [\\n          [\\\"Escape\\\", \\\"mac+Escape\\\"],\\n          ColorPicker.prototype._hideDropdownFromKeyboard,\\n        ],\\n        [[\\\" \\\", \\\"mac+ \\\"], ColorPicker.prototype._colorSelectFromKeyboard],\\n        [\\n          [\\\"ArrowDown\\\", \\\"ArrowRight\\\", \\\"mac+ArrowDown\\\", \\\"mac+ArrowRight\\\"],\\n          ColorPicker.prototype._moveToNext,\\n        ],\\n        [\\n          [\\\"ArrowUp\\\", \\\"ArrowLeft\\\", \\\"mac+ArrowUp\\\", \\\"mac+ArrowLeft\\\"],\\n          ColorPicker.prototype._moveToPrevious,\\n        ],\\n        [[\\\"Home\\\", \\\"mac+Home\\\"], ColorPicker.prototype._moveToBeginning],\\n        [[\\\"End\\\", \\\"mac+End\\\"], ColorPicker.prototype._moveToEnd],\\n      ])\\n    );\\n  }\\n\\n  constructor({ editor = null, uiManager = null }) {\\n    if (editor) {\\n      this.#isMainColorPicker = false;\\n      this.#type = AnnotationEditorParamsType.HIGHLIGHT_COLOR;\\n      this.#editor = editor;\\n    } else {\\n      this.#isMainColorPicker = true;\\n      this.#type = AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR;\\n    }\\n    this.#uiManager = editor?._uiManager || uiManager;\\n    this.#eventBus = this.#uiManager._eventBus;\\n    this.#defaultColor =\\n      editor?.color ||\\n      this.#uiManager?.highlightColors.values().next().value ||\\n      \\\"#FFFF98\\\";\\n\\n    ColorPicker.#l10nColor ||= Object.freeze({\\n      blue: \\\"pdfjs-editor-colorpicker-blue\\\",\\n      green: \\\"pdfjs-editor-colorpicker-green\\\",\\n      pink: \\\"pdfjs-editor-colorpicker-pink\\\",\\n      red: \\\"pdfjs-editor-colorpicker-red\\\",\\n      yellow: \\\"pdfjs-editor-colorpicker-yellow\\\",\\n    });\\n  }\\n\\n  renderButton() {\\n    const button = (this.#button = document.createElement(\\\"button\\\"));\\n    button.className = \\\"colorPicker\\\";\\n    button.tabIndex = \\\"0\\\";\\n    button.setAttribute(\\\"data-l10n-id\\\", \\\"pdfjs-editor-colorpicker-button\\\");\\n    button.setAttribute(\\\"aria-haspopup\\\", true);\\n    const signal = this.#uiManager._signal;\\n    button.addEventListener(\\\"click\\\", this.#openDropdown.bind(this), { signal });\\n    button.addEventListener(\\\"keydown\\\", this.#keyDown.bind(this), { signal });\\n    const swatch = (this.#buttonSwatch = document.createElement(\\\"span\\\"));\\n    swatch.className = \\\"swatch\\\";\\n    swatch.setAttribute(\\\"aria-hidden\\\", true);\\n    swatch.style.backgroundColor = this.#defaultColor;\\n    button.append(swatch);\\n    return button;\\n  }\\n\\n  renderMainDropdown() {\\n    const dropdown = (this.#dropdown = this.#getDropdownRoot());\\n    dropdown.setAttribute(\\\"aria-orientation\\\", \\\"horizontal\\\");\\n    dropdown.setAttribute(\\\"aria-labelledby\\\", \\\"highlightColorPickerLabel\\\");\\n\\n    return dropdown;\\n  }\\n\\n  #getDropdownRoot() {\\n    const div = document.createElement(\\\"div\\\");\\n    const signal = this.#uiManager._signal;\\n    div.addEventListener(\\\"contextmenu\\\", noContextMenu, { signal });\\n    div.className = \\\"dropdown\\\";\\n    div.role = \\\"listbox\\\";\\n    div.setAttribute(\\\"aria-multiselectable\\\", false);\\n    div.setAttribute(\\\"aria-orientation\\\", \\\"vertical\\\");\\n    div.setAttribute(\\\"data-l10n-id\\\", \\\"pdfjs-editor-colorpicker-dropdown\\\");\\n    for (const [name, color] of this.#uiManager.highlightColors) {\\n      const button = document.createElement(\\\"button\\\");\\n      button.tabIndex = \\\"0\\\";\\n      button.role = \\\"option\\\";\\n      button.setAttribute(\\\"data-color\\\", color);\\n      button.title = name;\\n      button.setAttribute(\\\"data-l10n-id\\\", ColorPicker.#l10nColor[name]);\\n      const swatch = document.createElement(\\\"span\\\");\\n      button.append(swatch);\\n      swatch.className = \\\"swatch\\\";\\n      swatch.style.backgroundColor = color;\\n      button.setAttribute(\\\"aria-selected\\\", color === this.#defaultColor);\\n      button.addEventListener(\\\"click\\\", this.#colorSelect.bind(this, color), {\\n        signal,\\n      });\\n      div.append(button);\\n    }\\n\\n    div.addEventListener(\\\"keydown\\\", this.#keyDown.bind(this), { signal });\\n\\n    return div;\\n  }\\n\\n  #colorSelect(color, event) {\\n    event.stopPropagation();\\n    this.#eventBus.dispatch(\\\"switchannotationeditorparams\\\", {\\n      source: this,\\n      type: this.#type,\\n      value: color,\\n    });\\n  }\\n\\n  _colorSelectFromKeyboard(event) {\\n    if (event.target === this.#button) {\\n      this.#openDropdown(event);\\n      return;\\n    }\\n    const color = event.target.getAttribute(\\\"data-color\\\");\\n    if (!color) {\\n      return;\\n    }\\n    this.#colorSelect(color, event);\\n  }\\n\\n  _moveToNext(event) {\\n    if (!this.#isDropdownVisible) {\\n      this.#openDropdown(event);\\n      return;\\n    }\\n    if (event.target === this.#button) {\\n      this.#dropdown.firstChild?.focus();\\n      return;\\n    }\\n    event.target.nextSibling?.focus();\\n  }\\n\\n  _moveToPrevious(event) {\\n    if (\\n      event.target === this.#dropdown?.firstChild ||\\n      event.target === this.#button\\n    ) {\\n      if (this.#isDropdownVisible) {\\n        this._hideDropdownFromKeyboard();\\n      }\\n      return;\\n    }\\n    if (!this.#isDropdownVisible) {\\n      this.#openDropdown(event);\\n    }\\n    event.target.previousSibling?.focus();\\n  }\\n\\n  _moveToBeginning(event) {\\n    if (!this.#isDropdownVisible) {\\n      this.#openDropdown(event);\\n      return;\\n    }\\n    this.#dropdown.firstChild?.focus();\\n  }\\n\\n  _moveToEnd(event) {\\n    if (!this.#isDropdownVisible) {\\n      this.#openDropdown(event);\\n      return;\\n    }\\n    this.#dropdown.lastChild?.focus();\\n  }\\n\\n  #keyDown(event) {\\n    ColorPicker._keyboardManager.exec(this, event);\\n  }\\n\\n  #openDropdown(event) {\\n    if (this.#isDropdownVisible) {\\n      this.hideDropdown();\\n      return;\\n    }\\n    this.#dropdownWasFromKeyboard = event.detail === 0;\\n\\n    if (!this.#openDropdownAC) {\\n      this.#openDropdownAC = new AbortController();\\n\\n      window.addEventListener(\\\"pointerdown\\\", this.#pointerDown.bind(this), {\\n        signal: this.#uiManager.combinedSignal(this.#openDropdownAC),\\n      });\\n    }\\n    if (this.#dropdown) {\\n      this.#dropdown.classList.remove(\\\"hidden\\\");\\n      return;\\n    }\\n    const root = (this.#dropdown = this.#getDropdownRoot());\\n    this.#button.append(root);\\n  }\\n\\n  #pointerDown(event) {\\n    if (this.#dropdown?.contains(event.target)) {\\n      return;\\n    }\\n    this.hideDropdown();\\n  }\\n\\n  hideDropdown() {\\n    this.#dropdown?.classList.add(\\\"hidden\\\");\\n    this.#openDropdownAC?.abort();\\n    this.#openDropdownAC = null;\\n  }\\n\\n  get #isDropdownVisible() {\\n    return this.#dropdown && !this.#dropdown.classList.contains(\\\"hidden\\\");\\n  }\\n\\n  _hideDropdownFromKeyboard() {\\n    if (this.#isMainColorPicker) {\\n      return;\\n    }\\n    if (!this.#isDropdownVisible) {\\n      \u002F\u002F The user pressed Escape with no dropdown visible, so we must\\n      \u002F\u002F unselect it.\\n      this.#editor?.unselect();\\n      return;\\n    }\\n    this.hideDropdown();\\n    this.#button.focus({\\n      preventScroll: true,\\n      focusVisible: this.#dropdownWasFromKeyboard,\\n    });\\n  }\\n\\n  updateColor(color) {\\n    if (this.#buttonSwatch) {\\n      this.#buttonSwatch.style.backgroundColor = color;\\n    }\\n    if (!this.#dropdown) {\\n      return;\\n    }\\n\\n    const i = this.#uiManager.highlightColors.values();\\n    for (const child of this.#dropdown.children) {\\n      child.setAttribute(\\\"aria-selected\\\", i.next().value === color);\\n    }\\n  }\\n\\n  destroy() {\\n    this.#button?.remove();\\n    this.#button = null;\\n    this.#buttonSwatch = null;\\n    this.#dropdown?.remove();\\n    this.#dropdown = null;\\n  }\\n}\\n\\nexport { ColorPicker };\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  AnnotationEditorParamsType,\\n  AnnotationEditorType,\\n  shadow,\\n  Util,\\n} from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport { bindEvents, KeyboardManager } from \\\".\u002Ftools.js\\\";\\nimport {\\n  FreeHighlightOutliner,\\n  HighlightOutliner,\\n} from \\\".\u002Fdrawers\u002Fhighlight.js\\\";\\nimport {\\n  HighlightAnnotationElement,\\n  InkAnnotationElement,\\n} from \\\"..\u002Fannotation_layer.js\\\";\\nimport { noContextMenu, stopEvent } from \\\"..\u002Fdisplay_utils.js\\\";\\nimport { AnnotationEditor } from \\\".\u002Feditor.js\\\";\\nimport { ColorPicker } from \\\".\u002Fcolor_picker.js\\\";\\n\\n\u002F**\\n * Basic draw editor in order to generate an Highlight annotation.\\n *\u002F\\nclass HighlightEditor extends AnnotationEditor {\\n  #anchorNode = null;\\n\\n  #anchorOffset = 0;\\n\\n  #boxes;\\n\\n  #clipPathId = null;\\n\\n  #colorPicker = null;\\n\\n  #focusOutlines = null;\\n\\n  #focusNode = null;\\n\\n  #focusOffset = 0;\\n\\n  #highlightDiv = null;\\n\\n  #highlightOutlines = null;\\n\\n  #id = null;\\n\\n  #isFreeHighlight = false;\\n\\n  #lastPoint = null;\\n\\n  #opacity;\\n\\n  #outlineId = null;\\n\\n  #text = \\\"\\\";\\n\\n  #thickness;\\n\\n  #methodOfCreation = \\\"\\\";\\n\\n  static _defaultColor = null;\\n\\n  static _defaultOpacity = 1;\\n\\n  static _defaultThickness = 12;\\n\\n  static _type = \\\"highlight\\\";\\n\\n  static _editorType = AnnotationEditorType.HIGHLIGHT;\\n\\n  static _freeHighlightId = -1;\\n\\n  static _freeHighlight = null;\\n\\n  static _freeHighlightClipId = \\\"\\\";\\n\\n  static get _keyboardManager() {\\n    const proto = HighlightEditor.prototype;\\n    return shadow(\\n      this,\\n      \\\"_keyboardManager\\\",\\n      new KeyboardManager([\\n        [[\\\"ArrowLeft\\\", \\\"mac+ArrowLeft\\\"], proto._moveCaret, { args: [0] }],\\n        [[\\\"ArrowRight\\\", \\\"mac+ArrowRight\\\"], proto._moveCaret, { args: [1] }],\\n        [[\\\"ArrowUp\\\", \\\"mac+ArrowUp\\\"], proto._moveCaret, { args: [2] }],\\n        [[\\\"ArrowDown\\\", \\\"mac+ArrowDown\\\"], proto._moveCaret, { args: [3] }],\\n      ])\\n    );\\n  }\\n\\n  constructor(params) {\\n    super({ ...params, name: \\\"highlightEditor\\\" });\\n    this.color = params.color || HighlightEditor._defaultColor;\\n    this.#thickness = params.thickness || HighlightEditor._defaultThickness;\\n    this.#opacity = params.opacity || HighlightEditor._defaultOpacity;\\n    this.#boxes = params.boxes || null;\\n    this.#methodOfCreation = params.methodOfCreation || \\\"\\\";\\n    this.#text = params.text || \\\"\\\";\\n    this._isDraggable = false;\\n    this.defaultL10nId = \\\"pdfjs-editor-highlight-editor\\\";\\n\\n    if (params.highlightId > -1) {\\n      this.#isFreeHighlight = true;\\n      this.#createFreeOutlines(params);\\n      this.#addToDrawLayer();\\n    } else if (this.#boxes) {\\n      this.#anchorNode = params.anchorNode;\\n      this.#anchorOffset = params.anchorOffset;\\n      this.#focusNode = params.focusNode;\\n      this.#focusOffset = params.focusOffset;\\n      this.#createOutlines();\\n      this.#addToDrawLayer();\\n      this.rotate(this.rotation);\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  get telemetryInitialData() {\\n    return {\\n      action: \\\"added\\\",\\n      type: this.#isFreeHighlight ? \\\"free_highlight\\\" : \\\"highlight\\\",\\n      color: this._uiManager.highlightColorNames.get(this.color),\\n      thickness: this.#thickness,\\n      methodOfCreation: this.#methodOfCreation,\\n    };\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  get telemetryFinalData() {\\n    return {\\n      type: \\\"highlight\\\",\\n      color: this._uiManager.highlightColorNames.get(this.color),\\n    };\\n  }\\n\\n  static computeTelemetryFinalData(data) {\\n    \u002F\u002F We want to know how many colors have been used.\\n    return { numberOfColors: data.get(\\\"color\\\").size };\\n  }\\n\\n  #createOutlines() {\\n    const outliner = new HighlightOutliner(\\n      this.#boxes,\\n      \u002F* borderWidth = *\u002F 0.001\\n    );\\n    this.#highlightOutlines = outliner.getOutlines();\\n    [this.x, this.y, this.width, this.height] = this.#highlightOutlines.box;\\n\\n    const outlinerForOutline = new HighlightOutliner(\\n      this.#boxes,\\n      \u002F* borderWidth = *\u002F 0.0025,\\n      \u002F* innerMargin = *\u002F 0.001,\\n      this._uiManager.direction === \\\"ltr\\\"\\n    );\\n    this.#focusOutlines = outlinerForOutline.getOutlines();\\n\\n    \u002F\u002F The last point is in the pages coordinate system.\\n    const { lastPoint } = this.#focusOutlines;\\n    this.#lastPoint = [\\n      (lastPoint[0] - this.x) \u002F this.width,\\n      (lastPoint[1] - this.y) \u002F this.height,\\n    ];\\n  }\\n\\n  #createFreeOutlines({ highlightOutlines, highlightId, clipPathId }) {\\n    this.#highlightOutlines = highlightOutlines;\\n    const extraThickness = 1.5;\\n    this.#focusOutlines = highlightOutlines.getNewOutline(\\n      \u002F* Slightly bigger than the highlight in order to have a little\\n         space between the highlight and the outline. *\u002F\\n      this.#thickness \u002F 2 + extraThickness,\\n      \u002F* innerMargin = *\u002F 0.0025\\n    );\\n\\n    if (highlightId >= 0) {\\n      this.#id = highlightId;\\n      this.#clipPathId = clipPathId;\\n      \u002F\u002F We need to redraw the highlight because we change the coordinates to be\\n      \u002F\u002F in the box coordinate system.\\n      this.parent.drawLayer.finalizeDraw(highlightId, {\\n        bbox: highlightOutlines.box,\\n        path: {\\n          d: highlightOutlines.toSVGPath(),\\n        },\\n      });\\n      this.#outlineId = this.parent.drawLayer.drawOutline(\\n        {\\n          rootClass: {\\n            highlightOutline: true,\\n            free: true,\\n          },\\n          bbox: this.#focusOutlines.box,\\n          path: {\\n            d: this.#focusOutlines.toSVGPath(),\\n          },\\n        },\\n        \u002F* mustRemoveSelfIntersections = *\u002F true\\n      );\\n    } else if (this.parent) {\\n      const angle = this.parent.viewport.rotation;\\n      this.parent.drawLayer.updateProperties(this.#id, {\\n        bbox: HighlightEditor.#rotateBbox(\\n          this.#highlightOutlines.box,\\n          (angle - this.rotation + 360) % 360\\n        ),\\n        path: {\\n          d: highlightOutlines.toSVGPath(),\\n        },\\n      });\\n      this.parent.drawLayer.updateProperties(this.#outlineId, {\\n        bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\\n        path: {\\n          d: this.#focusOutlines.toSVGPath(),\\n        },\\n      });\\n    }\\n    const [x, y, width, height] = highlightOutlines.box;\\n    switch (this.rotation) {\\n      case 0:\\n        this.x = x;\\n        this.y = y;\\n        this.width = width;\\n        this.height = height;\\n        break;\\n      case 90: {\\n        const [pageWidth, pageHeight] = this.parentDimensions;\\n        this.x = y;\\n        this.y = 1 - x;\\n        this.width = (width * pageHeight) \u002F pageWidth;\\n        this.height = (height * pageWidth) \u002F pageHeight;\\n        break;\\n      }\\n      case 180:\\n        this.x = 1 - x;\\n        this.y = 1 - y;\\n        this.width = width;\\n        this.height = height;\\n        break;\\n      case 270: {\\n        const [pageWidth, pageHeight] = this.parentDimensions;\\n        this.x = 1 - y;\\n        this.y = x;\\n        this.width = (width * pageHeight) \u002F pageWidth;\\n        this.height = (height * pageWidth) \u002F pageHeight;\\n        break;\\n      }\\n    }\\n\\n    const { lastPoint } = this.#focusOutlines;\\n    this.#lastPoint = [(lastPoint[0] - x) \u002F width, (lastPoint[1] - y) \u002F height];\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static initialize(l10n, uiManager) {\\n    AnnotationEditor.initialize(l10n, uiManager);\\n    HighlightEditor._defaultColor ||=\\n      uiManager.highlightColors?.values().next().value || \\\"#fff066\\\";\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static updateDefaultParams(type, value) {\\n    switch (type) {\\n      case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\\n        HighlightEditor._defaultColor = value;\\n        break;\\n      case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\\n        HighlightEditor._defaultThickness = value;\\n        break;\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  translateInPage(x, y) {}\\n\\n  \u002F** @inheritdoc *\u002F\\n  get toolbarPosition() {\\n    return this.#lastPoint;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  updateParams(type, value) {\\n    switch (type) {\\n      case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\\n        this.#updateColor(value);\\n        break;\\n      case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\\n        this.#updateThickness(value);\\n        break;\\n    }\\n  }\\n\\n  static get defaultPropertiesToUpdate() {\\n    return [\\n      [\\n        AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR,\\n        HighlightEditor._defaultColor,\\n      ],\\n      [\\n        AnnotationEditorParamsType.HIGHLIGHT_THICKNESS,\\n        HighlightEditor._defaultThickness,\\n      ],\\n    ];\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  get propertiesToUpdate() {\\n    return [\\n      [\\n        AnnotationEditorParamsType.HIGHLIGHT_COLOR,\\n        this.color || HighlightEditor._defaultColor,\\n      ],\\n      [\\n        AnnotationEditorParamsType.HIGHLIGHT_THICKNESS,\\n        this.#thickness || HighlightEditor._defaultThickness,\\n      ],\\n      [AnnotationEditorParamsType.HIGHLIGHT_FREE, this.#isFreeHighlight],\\n    ];\\n  }\\n\\n  \u002F**\\n   * Update the color and make this action undoable.\\n   * @param {string} color\\n   *\u002F\\n  #updateColor(color) {\\n    const setColorAndOpacity = (col, opa) => {\\n      this.color = col;\\n      this.#opacity = opa;\\n      this.parent?.drawLayer.updateProperties(this.#id, {\\n        root: {\\n          fill: col,\\n          \\\"fill-opacity\\\": opa,\\n        },\\n      });\\n      this.#colorPicker?.updateColor(col);\\n    };\\n    const savedColor = this.color;\\n    const savedOpacity = this.#opacity;\\n    this.addCommands({\\n      cmd: setColorAndOpacity.bind(\\n        this,\\n        color,\\n        HighlightEditor._defaultOpacity\\n      ),\\n      undo: setColorAndOpacity.bind(this, savedColor, savedOpacity),\\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\\n      mustExec: true,\\n      type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\\n      overwriteIfSameType: true,\\n      keepUndo: true,\\n    });\\n\\n    this._reportTelemetry(\\n      {\\n        action: \\\"color_changed\\\",\\n        color: this._uiManager.highlightColorNames.get(color),\\n      },\\n      \u002F* mustWait = *\u002F true\\n    );\\n  }\\n\\n  \u002F**\\n   * Update the thickness and make this action undoable.\\n   * @param {number} thickness\\n   *\u002F\\n  #updateThickness(thickness) {\\n    const savedThickness = this.#thickness;\\n    const setThickness = th => {\\n      this.#thickness = th;\\n      this.#changeThickness(th);\\n    };\\n    this.addCommands({\\n      cmd: setThickness.bind(this, thickness),\\n      undo: setThickness.bind(this, savedThickness),\\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\\n      mustExec: true,\\n      type: AnnotationEditorParamsType.INK_THICKNESS,\\n      overwriteIfSameType: true,\\n      keepUndo: true,\\n    });\\n    this._reportTelemetry(\\n      { action: \\\"thickness_changed\\\", thickness },\\n      \u002F* mustWait = *\u002F true\\n    );\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  async addEditToolbar() {\\n    const toolbar = await super.addEditToolbar();\\n    if (!toolbar) {\\n      return null;\\n    }\\n    if (this._uiManager.highlightColors) {\\n      this.#colorPicker = new ColorPicker({ editor: this });\\n      toolbar.addColorPicker(this.#colorPicker);\\n    }\\n    return toolbar;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  disableEditing() {\\n    super.disableEditing();\\n    this.div.classList.toggle(\\\"disabled\\\", true);\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  enableEditing() {\\n    super.enableEditing();\\n    this.div.classList.toggle(\\\"disabled\\\", false);\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  fixAndSetPosition() {\\n    return super.fixAndSetPosition(this.#getRotation());\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  getBaseTranslation() {\\n    \u002F\u002F The editor itself doesn't have any CSS border (we're drawing one\\n    \u002F\u002F ourselves in using SVG).\\n    return [0, 0];\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  getRect(tx, ty) {\\n    return super.getRect(tx, ty, this.#getRotation());\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  onceAdded(focus) {\\n    if (!this.annotationElementId) {\\n      this.parent.addUndoableEditor(this);\\n    }\\n    if (focus) {\\n      this.div.focus();\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  remove() {\\n    this.#cleanDrawLayer();\\n    this._reportTelemetry({\\n      action: \\\"deleted\\\",\\n    });\\n    super.remove();\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  rebuild() {\\n    if (!this.parent) {\\n      return;\\n    }\\n    super.rebuild();\\n    if (this.div === null) {\\n      return;\\n    }\\n\\n    this.#addToDrawLayer();\\n\\n    if (!this.isAttachedToDOM) {\\n      \u002F\u002F At some point this editor was removed and we're rebuilding it,\\n      \u002F\u002F hence we must add it to its parent.\\n      this.parent.add(this);\\n    }\\n  }\\n\\n  setParent(parent) {\\n    let mustBeSelected = false;\\n    if (this.parent && !parent) {\\n      this.#cleanDrawLayer();\\n    } else if (parent) {\\n      this.#addToDrawLayer(parent);\\n      \u002F\u002F If mustBeSelected is true it means that this editor was selected\\n      \u002F\u002F when its parent has been destroyed, hence we must select it again.\\n      mustBeSelected =\\n        !this.parent && this.div?.classList.contains(\\\"selectedEditor\\\");\\n    }\\n    super.setParent(parent);\\n    this.show(this._isVisible);\\n    if (mustBeSelected) {\\n      \u002F\u002F We select it after the parent has been set.\\n      this.select();\\n    }\\n  }\\n\\n  #changeThickness(thickness) {\\n    if (!this.#isFreeHighlight) {\\n      return;\\n    }\\n    this.#createFreeOutlines({\\n      highlightOutlines: this.#highlightOutlines.getNewOutline(thickness \u002F 2),\\n    });\\n    this.fixAndSetPosition();\\n    const [parentWidth, parentHeight] = this.parentDimensions;\\n    this.setDims(this.width * parentWidth, this.height * parentHeight);\\n  }\\n\\n  #cleanDrawLayer() {\\n    if (this.#id === null || !this.parent) {\\n      return;\\n    }\\n    this.parent.drawLayer.remove(this.#id);\\n    this.#id = null;\\n    this.parent.drawLayer.remove(this.#outlineId);\\n    this.#outlineId = null;\\n  }\\n\\n  #addToDrawLayer(parent = this.parent) {\\n    if (this.#id !== null) {\\n      return;\\n    }\\n    ({ id: this.#id, clipPathId: this.#clipPathId } = parent.drawLayer.draw(\\n      {\\n        bbox: this.#highlightOutlines.box,\\n        root: {\\n          viewBox: \\\"0 0 1 1\\\",\\n          fill: this.color,\\n          \\\"fill-opacity\\\": this.#opacity,\\n        },\\n        rootClass: {\\n          highlight: true,\\n          free: this.#isFreeHighlight,\\n        },\\n        path: {\\n          d: this.#highlightOutlines.toSVGPath(),\\n        },\\n      },\\n      \u002F* isPathUpdatable = *\u002F false,\\n      \u002F* hasClip = *\u002F true\\n    ));\\n    this.#outlineId = parent.drawLayer.drawOutline(\\n      {\\n        rootClass: {\\n          highlightOutline: true,\\n          free: this.#isFreeHighlight,\\n        },\\n        bbox: this.#focusOutlines.box,\\n        path: {\\n          d: this.#focusOutlines.toSVGPath(),\\n        },\\n      },\\n      \u002F* mustRemoveSelfIntersections = *\u002F this.#isFreeHighlight\\n    );\\n\\n    if (this.#highlightDiv) {\\n      this.#highlightDiv.style.clipPath = this.#clipPathId;\\n    }\\n  }\\n\\n  static #rotateBbox([x, y, width, height], angle) {\\n    switch (angle) {\\n      case 90:\\n        return [1 - y - height, x, height, width];\\n      case 180:\\n        return [1 - x - width, 1 - y - height, width, height];\\n      case 270:\\n        return [y, 1 - x - width, height, width];\\n    }\\n    return [x, y, width, height];\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  rotate(angle) {\\n    \u002F\u002F We need to rotate the svgs because of the coordinates system.\\n    const { drawLayer } = this.parent;\\n    let box;\\n    if (this.#isFreeHighlight) {\\n      angle = (angle - this.rotation + 360) % 360;\\n      box = HighlightEditor.#rotateBbox(this.#highlightOutlines.box, angle);\\n    } else {\\n      \u002F\u002F An highlight annotation is always drawn horizontally.\\n      box = HighlightEditor.#rotateBbox(\\n        [this.x, this.y, this.width, this.height],\\n        angle\\n      );\\n    }\\n    drawLayer.updateProperties(this.#id, {\\n      bbox: box,\\n      root: {\\n        \\\"data-main-rotation\\\": angle,\\n      },\\n    });\\n    drawLayer.updateProperties(this.#outlineId, {\\n      bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\\n      root: {\\n        \\\"data-main-rotation\\\": angle,\\n      },\\n    });\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  render() {\\n    if (this.div) {\\n      return this.div;\\n    }\\n\\n    const div = super.render();\\n    if (this.#text) {\\n      div.setAttribute(\\\"aria-label\\\", this.#text);\\n      div.setAttribute(\\\"role\\\", \\\"mark\\\");\\n    }\\n    if (this.#isFreeHighlight) {\\n      div.classList.add(\\\"free\\\");\\n    } else {\\n      this.div.addEventListener(\\\"keydown\\\", this.#keydown.bind(this), {\\n        signal: this._uiManager._signal,\\n      });\\n    }\\n    const highlightDiv = (this.#highlightDiv = document.createElement(\\\"div\\\"));\\n    div.append(highlightDiv);\\n    highlightDiv.setAttribute(\\\"aria-hidden\\\", \\\"true\\\");\\n    highlightDiv.className = \\\"internal\\\";\\n    highlightDiv.style.clipPath = this.#clipPathId;\\n    const [parentWidth, parentHeight] = this.parentDimensions;\\n    this.setDims(this.width * parentWidth, this.height * parentHeight);\\n\\n    bindEvents(this, this.#highlightDiv, [\\\"pointerover\\\", \\\"pointerleave\\\"]);\\n    this.enableEditing();\\n\\n    return div;\\n  }\\n\\n  pointerover() {\\n    if (!this.isSelected) {\\n      this.parent?.drawLayer.updateProperties(this.#outlineId, {\\n        rootClass: {\\n          hovered: true,\\n        },\\n      });\\n    }\\n  }\\n\\n  pointerleave() {\\n    if (!this.isSelected) {\\n      this.parent?.drawLayer.updateProperties(this.#outlineId, {\\n        rootClass: {\\n          hovered: false,\\n        },\\n      });\\n    }\\n  }\\n\\n  #keydown(event) {\\n    HighlightEditor._keyboardManager.exec(this, event);\\n  }\\n\\n  _moveCaret(direction) {\\n    this.parent.unselect(this);\\n    switch (direction) {\\n      case 0 \u002F* left *\u002F:\\n      case 2 \u002F* up *\u002F:\\n        this.#setCaret(\u002F* start = *\u002F true);\\n        break;\\n      case 1 \u002F* right *\u002F:\\n      case 3 \u002F* down *\u002F:\\n        this.#setCaret(\u002F* start = *\u002F false);\\n        break;\\n    }\\n  }\\n\\n  #setCaret(start) {\\n    if (!this.#anchorNode) {\\n      return;\\n    }\\n    const selection = window.getSelection();\\n    if (start) {\\n      selection.setPosition(this.#anchorNode, this.#anchorOffset);\\n    } else {\\n      selection.setPosition(this.#focusNode, this.#focusOffset);\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  select() {\\n    super.select();\\n    if (!this.#outlineId) {\\n      return;\\n    }\\n    this.parent?.drawLayer.updateProperties(this.#outlineId, {\\n      rootClass: {\\n        hovered: false,\\n        selected: true,\\n      },\\n    });\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  unselect() {\\n    super.unselect();\\n    if (!this.#outlineId) {\\n      return;\\n    }\\n    this.parent?.drawLayer.updateProperties(this.#outlineId, {\\n      rootClass: {\\n        selected: false,\\n      },\\n    });\\n    if (!this.#isFreeHighlight) {\\n      this.#setCaret(\u002F* start = *\u002F false);\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  get _mustFixPosition() {\\n    return !this.#isFreeHighlight;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  show(visible = this._isVisible) {\\n    super.show(visible);\\n    if (this.parent) {\\n      this.parent.drawLayer.updateProperties(this.#id, {\\n        rootClass: {\\n          hidden: !visible,\\n        },\\n      });\\n      this.parent.drawLayer.updateProperties(this.#outlineId, {\\n        rootClass: {\\n          hidden: !visible,\\n        },\\n      });\\n    }\\n  }\\n\\n  #getRotation() {\\n    \u002F\u002F Highlight annotations are always drawn horizontally but if\\n    \u002F\u002F a free highlight annotation can be rotated.\\n    return this.#isFreeHighlight ? this.rotation : 0;\\n  }\\n\\n  #serializeBoxes() {\\n    if (this.#isFreeHighlight) {\\n      return null;\\n    }\\n    const [pageWidth, pageHeight] = this.pageDimensions;\\n    const [pageX, pageY] = this.pageTranslation;\\n    const boxes = this.#boxes;\\n    const quadPoints = new Float32Array(boxes.length * 8);\\n    let i = 0;\\n    for (const { x, y, width, height } of boxes) {\\n      const sx = x * pageWidth + pageX;\\n      const sy = (1 - y) * pageHeight + pageY;\\n      \u002F\u002F Serializes the rectangle in the Adobe Acrobat format.\\n      \u002F\u002F The rectangle's coordinates (b = bottom, t = top, L = left, R = right)\\n      \u002F\u002F are ordered as follows: tL, tR, bL, bR (bL origin).\\n      quadPoints[i] = quadPoints[i + 4] = sx;\\n      quadPoints[i + 1] = quadPoints[i + 3] = sy;\\n      quadPoints[i + 2] = quadPoints[i + 6] = sx + width * pageWidth;\\n      quadPoints[i + 5] = quadPoints[i + 7] = sy - height * pageHeight;\\n      i += 8;\\n    }\\n    return quadPoints;\\n  }\\n\\n  #serializeOutlines(rect) {\\n    return this.#highlightOutlines.serialize(rect, this.#getRotation());\\n  }\\n\\n  static startHighlighting(parent, isLTR, { target: textLayer, x, y }) {\\n    const {\\n      x: layerX,\\n      y: layerY,\\n      width: parentWidth,\\n      height: parentHeight,\\n    } = textLayer.getBoundingClientRect();\\n\\n    const ac = new AbortController();\\n    const signal = parent.combinedSignal(ac);\\n\\n    const pointerUpCallback = e => {\\n      ac.abort();\\n      this.#endHighlight(parent, e);\\n    };\\n    window.addEventListener(\\\"blur\\\", pointerUpCallback, { signal });\\n    window.addEventListener(\\\"pointerup\\\", pointerUpCallback, { signal });\\n    window.addEventListener(\\n      \\\"pointerdown\\\",\\n      stopEvent \u002F* Avoid to have undesired clicks during the drawing. *\u002F,\\n      {\\n        capture: true,\\n        passive: false,\\n        signal,\\n      }\\n    );\\n    window.addEventListener(\\\"contextmenu\\\", noContextMenu, { signal });\\n\\n    textLayer.addEventListener(\\n      \\\"pointermove\\\",\\n      this.#highlightMove.bind(this, parent),\\n      { signal }\\n    );\\n    this._freeHighlight = new FreeHighlightOutliner(\\n      { x, y },\\n      [layerX, layerY, parentWidth, parentHeight],\\n      parent.scale,\\n      this._defaultThickness \u002F 2,\\n      isLTR,\\n      \u002F* innerMargin = *\u002F 0.001\\n    );\\n    ({ id: this._freeHighlightId, clipPathId: this._freeHighlightClipId } =\\n      parent.drawLayer.draw(\\n        {\\n          bbox: [0, 0, 1, 1],\\n          root: {\\n            viewBox: \\\"0 0 1 1\\\",\\n            fill: this._defaultColor,\\n            \\\"fill-opacity\\\": this._defaultOpacity,\\n          },\\n          rootClass: {\\n            highlight: true,\\n            free: true,\\n          },\\n          path: {\\n            d: this._freeHighlight.toSVGPath(),\\n          },\\n        },\\n        \u002F* isPathUpdatable = *\u002F true,\\n        \u002F* hasClip = *\u002F true\\n      ));\\n  }\\n\\n  static #highlightMove(parent, event) {\\n    if (this._freeHighlight.add(event)) {\\n      \u002F\u002F Redraw only if the point has been added.\\n      parent.drawLayer.updateProperties(this._freeHighlightId, {\\n        path: {\\n          d: this._freeHighlight.toSVGPath(),\\n        },\\n      });\\n    }\\n  }\\n\\n  static #endHighlight(parent, event) {\\n    if (!this._freeHighlight.isEmpty()) {\\n      parent.createAndAddNewEditor(event, false, {\\n        highlightId: this._freeHighlightId,\\n        highlightOutlines: this._freeHighlight.getOutlines(),\\n        clipPathId: this._freeHighlightClipId,\\n        methodOfCreation: \\\"main_toolbar\\\",\\n      });\\n    } else {\\n      parent.drawLayer.remove(this._freeHighlightId);\\n    }\\n    this._freeHighlightId = -1;\\n    this._freeHighlight = null;\\n    this._freeHighlightClipId = \\\"\\\";\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static async deserialize(data, parent, uiManager) {\\n    let initialData = null;\\n    if (data instanceof HighlightAnnotationElement) {\\n      const {\\n        data: { quadPoints, rect, rotation, id, color, opacity, popupRef },\\n        parent: {\\n          page: { pageNumber },\\n        },\\n      } = data;\\n      initialData = data = {\\n        annotationType: AnnotationEditorType.HIGHLIGHT,\\n        color: Array.from(color),\\n        opacity,\\n        quadPoints,\\n        boxes: null,\\n        pageIndex: pageNumber - 1,\\n        rect: rect.slice(0),\\n        rotation,\\n        id,\\n        deleted: false,\\n        popupRef,\\n      };\\n    } else if (data instanceof InkAnnotationElement) {\\n      const {\\n        data: {\\n          inkLists,\\n          rect,\\n          rotation,\\n          id,\\n          color,\\n          borderStyle: { rawWidth: thickness },\\n          popupRef,\\n        },\\n        parent: {\\n          page: { pageNumber },\\n        },\\n      } = data;\\n      initialData = data = {\\n        annotationType: AnnotationEditorType.HIGHLIGHT,\\n        color: Array.from(color),\\n        thickness,\\n        inkLists,\\n        boxes: null,\\n        pageIndex: pageNumber - 1,\\n        rect: rect.slice(0),\\n        rotation,\\n        id,\\n        deleted: false,\\n        popupRef,\\n      };\\n    }\\n\\n    const { color, quadPoints, inkLists, opacity } = data;\\n    const editor = await super.deserialize(data, parent, uiManager);\\n\\n    editor.color = Util.makeHexColor(...color);\\n    editor.#opacity = opacity || 1;\\n    if (inkLists) {\\n      editor.#thickness = data.thickness;\\n    }\\n    editor.annotationElementId = data.id || null;\\n    editor._initialData = initialData;\\n\\n    const [pageWidth, pageHeight] = editor.pageDimensions;\\n    const [pageX, pageY] = editor.pageTranslation;\\n\\n    if (quadPoints) {\\n      const boxes = (editor.#boxes = []);\\n      for (let i = 0; i \u003C quadPoints.length; i += 8) {\\n        boxes.push({\\n          x: (quadPoints[i] - pageX) \u002F pageWidth,\\n          y: 1 - (quadPoints[i + 1] - pageY) \u002F pageHeight,\\n          width: (quadPoints[i + 2] - quadPoints[i]) \u002F pageWidth,\\n          height: (quadPoints[i + 1] - quadPoints[i + 5]) \u002F pageHeight,\\n        });\\n      }\\n      editor.#createOutlines();\\n      editor.#addToDrawLayer();\\n      editor.rotate(editor.rotation);\\n    } else if (inkLists) {\\n      editor.#isFreeHighlight = true;\\n      const points = inkLists[0];\\n      const point = {\\n        x: points[0] - pageX,\\n        y: pageHeight - (points[1] - pageY),\\n      };\\n      const outliner = new FreeHighlightOutliner(\\n        point,\\n        [0, 0, pageWidth, pageHeight],\\n        1,\\n        editor.#thickness \u002F 2,\\n        true,\\n        0.001\\n      );\\n      for (let i = 0, ii = points.length; i \u003C ii; i += 2) {\\n        point.x = points[i] - pageX;\\n        point.y = pageHeight - (points[i + 1] - pageY);\\n        outliner.add(point);\\n      }\\n      const { id, clipPathId } = parent.drawLayer.draw(\\n        {\\n          bbox: [0, 0, 1, 1],\\n          root: {\\n            viewBox: \\\"0 0 1 1\\\",\\n            fill: editor.color,\\n            \\\"fill-opacity\\\": editor._defaultOpacity,\\n          },\\n          rootClass: {\\n            highlight: true,\\n            free: true,\\n          },\\n          path: {\\n            d: outliner.toSVGPath(),\\n          },\\n        },\\n        \u002F* isPathUpdatable = *\u002F true,\\n        \u002F* hasClip = *\u002F true\\n      );\\n      editor.#createFreeOutlines({\\n        highlightOutlines: outliner.getOutlines(),\\n        highlightId: id,\\n        clipPathId,\\n      });\\n      editor.#addToDrawLayer();\\n      editor.rotate(editor.parentRotation);\\n    }\\n\\n    return editor;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  serialize(isForCopying = false) {\\n    \u002F\u002F It doesn't make sense to copy\u002Fpaste a highlight annotation.\\n    if (this.isEmpty() || isForCopying) {\\n      return null;\\n    }\\n\\n    if (this.deleted) {\\n      return this.serializeDeleted();\\n    }\\n\\n    const rect = this.getRect(0, 0);\\n    const color = AnnotationEditor._colorManager.convert(this.color);\\n\\n    const serialized = {\\n      annotationType: AnnotationEditorType.HIGHLIGHT,\\n      color,\\n      opacity: this.#opacity,\\n      thickness: this.#thickness,\\n      quadPoints: this.#serializeBoxes(),\\n      outlines: this.#serializeOutlines(rect),\\n      pageIndex: this.pageIndex,\\n      rect,\\n      rotation: this.#getRotation(),\\n      structTreeParentId: this._structTreeParentId,\\n    };\\n\\n    if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\\n      return null;\\n    }\\n\\n    serialized.id = this.annotationElementId;\\n    return serialized;\\n  }\\n\\n  #hasElementChanged(serialized) {\\n    const { color } = this._initialData;\\n    return serialized.color.some((c, i) => c !== color[i]);\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  renderAnnotationElement(annotation) {\\n    annotation.updateEdited({\\n      rect: this.getRect(0, 0),\\n    });\\n\\n    return null;\\n  }\\n\\n  static canCreateNewEmptyEditor() {\\n    return false;\\n  }\\n}\\n\\nexport { HighlightEditor };\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { AnnotationEditorParamsType, unreachable } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport { noContextMenu, stopEvent } from \\\"..\u002Fdisplay_utils.js\\\";\\nimport { AnnotationEditor } from \\\".\u002Feditor.js\\\";\\n\\nclass DrawingOptions {\\n  #svgProperties = Object.create(null);\\n\\n  updateProperty(name, value) {\\n    this[name] = value;\\n    this.updateSVGProperty(name, value);\\n  }\\n\\n  updateProperties(properties) {\\n    if (!properties) {\\n      return;\\n    }\\n    for (const [name, value] of Object.entries(properties)) {\\n      if (!name.startsWith(\\\"_\\\")) {\\n        this.updateProperty(name, value);\\n      }\\n    }\\n  }\\n\\n  updateSVGProperty(name, value) {\\n    this.#svgProperties[name] = value;\\n  }\\n\\n  toSVGProperties() {\\n    const root = this.#svgProperties;\\n    this.#svgProperties = Object.create(null);\\n    return { root };\\n  }\\n\\n  reset() {\\n    this.#svgProperties = Object.create(null);\\n  }\\n\\n  updateAll(options = this) {\\n    this.updateProperties(options);\\n  }\\n\\n  clone() {\\n    unreachable(\\\"Not implemented\\\");\\n  }\\n}\\n\\n\u002F**\\n * Basic draw editor.\\n *\u002F\\nclass DrawingEditor extends AnnotationEditor {\\n  #drawOutlines = null;\\n\\n  #mustBeCommitted;\\n\\n  _drawId = null;\\n\\n  static _currentDrawId = -1;\\n\\n  static _currentParent = null;\\n\\n  static #currentDraw = null;\\n\\n  static #currentDrawingAC = null;\\n\\n  static #currentDrawingOptions = null;\\n\\n  static #currentPointerId = NaN;\\n\\n  static #currentPointerType = null;\\n\\n  static #currentPointerIds = null;\\n\\n  static #currentMoveTimestamp = NaN;\\n\\n  static _INNER_MARGIN = 3;\\n\\n  constructor(params) {\\n    super(params);\\n    this.#mustBeCommitted = params.mustBeCommitted || false;\\n\\n    this._addOutlines(params);\\n  }\\n\\n  _addOutlines(params) {\\n    if (params.drawOutlines) {\\n      this.#createDrawOutlines(params);\\n      this.#addToDrawLayer();\\n    }\\n  }\\n\\n  #createDrawOutlines({ drawOutlines, drawId, drawingOptions }) {\\n    this.#drawOutlines = drawOutlines;\\n    this._drawingOptions ||= drawingOptions;\\n\\n    if (drawId >= 0) {\\n      this._drawId = drawId;\\n      \u002F\u002F We need to redraw the drawing because we changed the coordinates to be\\n      \u002F\u002F in the box coordinate system.\\n      this.parent.drawLayer.finalizeDraw(\\n        drawId,\\n        drawOutlines.defaultProperties\\n      );\\n    } else {\\n      \u002F\u002F We create a new drawing.\\n      this._drawId = this.#createDrawing(drawOutlines, this.parent);\\n    }\\n\\n    this.#updateBbox(drawOutlines.box);\\n  }\\n\\n  #createDrawing(drawOutlines, parent) {\\n    const { id } = parent.drawLayer.draw(\\n      DrawingEditor._mergeSVGProperties(\\n        this._drawingOptions.toSVGProperties(),\\n        drawOutlines.defaultSVGProperties\\n      ),\\n      \u002F* isPathUpdatable = *\u002F false,\\n      \u002F* hasClip = *\u002F false\\n    );\\n    return id;\\n  }\\n\\n  static _mergeSVGProperties(p1, p2) {\\n    const p1Keys = new Set(Object.keys(p1));\\n\\n    for (const [key, value] of Object.entries(p2)) {\\n      if (p1Keys.has(key)) {\\n        Object.assign(p1[key], value);\\n      } else {\\n        p1[key] = value;\\n      }\\n    }\\n    return p1;\\n  }\\n\\n  \u002F**\\n   * @param {Object} options\\n   * @return {DrawingOptions} the default options to use for a new editor.\\n   *\u002F\\n  static getDefaultDrawingOptions(_options) {\\n    unreachable(\\\"Not implemented\\\");\\n  }\\n\\n  \u002F**\\n   * @return {Map\u003CAnnotationEditorParamsType, string>} a map between the\\n   *   parameter types and the name of the options.\\n   *\u002F\\n  \u002F\u002F eslint-disable-next-line getter-return\\n  static get typesMap() {\\n    unreachable(\\\"Not implemented\\\");\\n  }\\n\\n  static get isDrawer() {\\n    return true;\\n  }\\n\\n  \u002F**\\n   * @returns {boolean} `true` if several drawings can be added to the\\n   * annotation.\\n   *\u002F\\n  static get supportMultipleDrawings() {\\n    return false;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static updateDefaultParams(type, value) {\\n    const propertyName = this.typesMap.get(type);\\n    if (propertyName) {\\n      this._defaultDrawingOptions.updateProperty(propertyName, value);\\n    }\\n    if (this._currentParent) {\\n      DrawingEditor.#currentDraw.updateProperty(propertyName, value);\\n      this._currentParent.drawLayer.updateProperties(\\n        this._currentDrawId,\\n        this._defaultDrawingOptions.toSVGProperties()\\n      );\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  updateParams(type, value) {\\n    const propertyName = this.constructor.typesMap.get(type);\\n    if (propertyName) {\\n      this._updateProperty(type, propertyName, value);\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static get defaultPropertiesToUpdate() {\\n    const properties = [];\\n    const options = this._defaultDrawingOptions;\\n    for (const [type, name] of this.typesMap) {\\n      properties.push([type, options[name]]);\\n    }\\n    return properties;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  get propertiesToUpdate() {\\n    const properties = [];\\n    const { _drawingOptions } = this;\\n    for (const [type, name] of this.constructor.typesMap) {\\n      properties.push([type, _drawingOptions[name]]);\\n    }\\n    return properties;\\n  }\\n\\n  \u002F**\\n   * Update a property and make this action undoable.\\n   * @param {string} color\\n   *\u002F\\n  _updateProperty(type, name, value) {\\n    const options = this._drawingOptions;\\n    const savedValue = options[name];\\n    const setter = val => {\\n      options.updateProperty(name, val);\\n      const bbox = this.#drawOutlines.updateProperty(name, val);\\n      if (bbox) {\\n        this.#updateBbox(bbox);\\n      }\\n      this.parent?.drawLayer.updateProperties(\\n        this._drawId,\\n        options.toSVGProperties()\\n      );\\n    };\\n    this.addCommands({\\n      cmd: setter.bind(this, value),\\n      undo: setter.bind(this, savedValue),\\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\\n      mustExec: true,\\n      type,\\n      overwriteIfSameType: true,\\n      keepUndo: true,\\n    });\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  _onResizing() {\\n    this.parent?.drawLayer.updateProperties(\\n      this._drawId,\\n      DrawingEditor._mergeSVGProperties(\\n        this.#drawOutlines.getPathResizingSVGProperties(\\n          this.#convertToDrawSpace()\\n        ),\\n        {\\n          bbox: this.#rotateBox(),\\n        }\\n      )\\n    );\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  _onResized() {\\n    this.parent?.drawLayer.updateProperties(\\n      this._drawId,\\n      DrawingEditor._mergeSVGProperties(\\n        this.#drawOutlines.getPathResizedSVGProperties(\\n          this.#convertToDrawSpace()\\n        ),\\n        {\\n          bbox: this.#rotateBox(),\\n        }\\n      )\\n    );\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  _onTranslating(_x, _y) {\\n    this.parent?.drawLayer.updateProperties(this._drawId, {\\n      bbox: this.#rotateBox(),\\n    });\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  _onTranslated() {\\n    this.parent?.drawLayer.updateProperties(\\n      this._drawId,\\n      DrawingEditor._mergeSVGProperties(\\n        this.#drawOutlines.getPathTranslatedSVGProperties(\\n          this.#convertToDrawSpace(),\\n          this.parentDimensions\\n        ),\\n        {\\n          bbox: this.#rotateBox(),\\n        }\\n      )\\n    );\\n  }\\n\\n  _onStartDragging() {\\n    this.parent?.drawLayer.updateProperties(this._drawId, {\\n      rootClass: {\\n        moving: true,\\n      },\\n    });\\n  }\\n\\n  _onStopDragging() {\\n    this.parent?.drawLayer.updateProperties(this._drawId, {\\n      rootClass: {\\n        moving: false,\\n      },\\n    });\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  commit() {\\n    super.commit();\\n\\n    this.disableEditMode();\\n    this.disableEditing();\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  disableEditing() {\\n    super.disableEditing();\\n    this.div.classList.toggle(\\\"disabled\\\", true);\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  enableEditing() {\\n    super.enableEditing();\\n    this.div.classList.toggle(\\\"disabled\\\", false);\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  getBaseTranslation() {\\n    \u002F\u002F The editor itself doesn't have any CSS border (we're drawing one\\n    \u002F\u002F ourselves in using SVG).\\n    return [0, 0];\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  get isResizable() {\\n    return true;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  onceAdded(focus) {\\n    if (!this.annotationElementId) {\\n      this.parent.addUndoableEditor(this);\\n    }\\n    this._isDraggable = true;\\n    if (this.#mustBeCommitted) {\\n      this.#mustBeCommitted = false;\\n      this.commit();\\n      this.parent.setSelected(this);\\n      if (focus && this.isOnScreen) {\\n        this.div.focus();\\n      }\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  remove() {\\n    this.#cleanDrawLayer();\\n    super.remove();\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  rebuild() {\\n    if (!this.parent) {\\n      return;\\n    }\\n    super.rebuild();\\n    if (this.div === null) {\\n      return;\\n    }\\n\\n    this.#addToDrawLayer();\\n    this.#updateBbox(this.#drawOutlines.box);\\n\\n    if (!this.isAttachedToDOM) {\\n      \u002F\u002F At some point this editor was removed and we're rebuilding it,\\n      \u002F\u002F hence we must add it to its parent.\\n      this.parent.add(this);\\n    }\\n  }\\n\\n  setParent(parent) {\\n    let mustBeSelected = false;\\n    if (this.parent && !parent) {\\n      this._uiManager.removeShouldRescale(this);\\n      this.#cleanDrawLayer();\\n    } else if (parent) {\\n      this._uiManager.addShouldRescale(this);\\n      this.#addToDrawLayer(parent);\\n      \u002F\u002F If mustBeSelected is true it means that this editor was selected\\n      \u002F\u002F when its parent has been destroyed, hence we must select it again.\\n      mustBeSelected =\\n        !this.parent && this.div?.classList.contains(\\\"selectedEditor\\\");\\n    }\\n    super.setParent(parent);\\n    if (mustBeSelected) {\\n      \u002F\u002F We select it after the parent has been set.\\n      this.select();\\n    }\\n  }\\n\\n  #cleanDrawLayer() {\\n    if (this._drawId === null || !this.parent) {\\n      return;\\n    }\\n    this.parent.drawLayer.remove(this._drawId);\\n    this._drawId = null;\\n\\n    \u002F\u002F All the SVG properties must be reset in order to make it possible to\\n    \u002F\u002F undo.\\n    this._drawingOptions.reset();\\n  }\\n\\n  #addToDrawLayer(parent = this.parent) {\\n    if (this._drawId !== null && this.parent === parent) {\\n      return;\\n    }\\n    if (this._drawId !== null) {\\n      \u002F\u002F The parent has changed, we need to move the drawing to the new parent.\\n      this.parent.drawLayer.updateParent(this._drawId, parent.drawLayer);\\n      return;\\n    }\\n    this._drawingOptions.updateAll();\\n    this._drawId = this.#createDrawing(this.#drawOutlines, parent);\\n  }\\n\\n  #convertToParentSpace([x, y, width, height]) {\\n    const {\\n      parentDimensions: [pW, pH],\\n      rotation,\\n    } = this;\\n    switch (rotation) {\\n      case 90:\\n        return [y, 1 - x, width * (pH \u002F pW), height * (pW \u002F pH)];\\n      case 180:\\n        return [1 - x, 1 - y, width, height];\\n      case 270:\\n        return [1 - y, x, width * (pH \u002F pW), height * (pW \u002F pH)];\\n      default:\\n        return [x, y, width, height];\\n    }\\n  }\\n\\n  #convertToDrawSpace() {\\n    const {\\n      x,\\n      y,\\n      width,\\n      height,\\n      parentDimensions: [pW, pH],\\n      rotation,\\n    } = this;\\n    switch (rotation) {\\n      case 90:\\n        return [1 - y, x, width * (pW \u002F pH), height * (pH \u002F pW)];\\n      case 180:\\n        return [1 - x, 1 - y, width, height];\\n      case 270:\\n        return [y, 1 - x, width * (pW \u002F pH), height * (pH \u002F pW)];\\n      default:\\n        return [x, y, width, height];\\n    }\\n  }\\n\\n  #updateBbox(bbox) {\\n    [this.x, this.y, this.width, this.height] =\\n      this.#convertToParentSpace(bbox);\\n    if (this.div) {\\n      this.fixAndSetPosition();\\n      const [parentWidth, parentHeight] = this.parentDimensions;\\n      this.setDims(this.width * parentWidth, this.height * parentHeight);\\n    }\\n    this._onResized();\\n  }\\n\\n  #rotateBox() {\\n    \u002F\u002F We've to deal with two rotations: the rotation of the annotation and the\\n    \u002F\u002F rotation of the parent page.\\n    \u002F\u002F When the page is rotated, all the layers are just rotated thanks to CSS\\n    \u002F\u002F but there is a notable exception: the canvas wrapper.\\n    \u002F\u002F The canvas wrapper is not rotated but the dimensions are (or not) swapped\\n    \u002F\u002F and the page is redrawn with the rotation applied to the canvas.\\n    \u002F\u002F The drawn layer is under the canvas wrapper and is not rotated so we have\\n    \u002F\u002F to \\\"manually\\\" rotate the coordinates.\\n    \u002F\u002F\\n    \u002F\u002F The coordinates (this.x, this.y) correspond to the top-left corner of\\n    \u002F\u002F the editor after it has been rotated in the page coordinate system.\\n\\n    const {\\n      x,\\n      y,\\n      width,\\n      height,\\n      rotation,\\n      parentRotation,\\n      parentDimensions: [pW, pH],\\n    } = this;\\n    switch ((rotation * 4 + parentRotation) \u002F 90) {\\n      case 1:\\n        \u002F\u002F 0 -> 90\\n        return [1 - y - height, x, height, width];\\n      case 2:\\n        \u002F\u002F 0 -> 180\\n        return [1 - x - width, 1 - y - height, width, height];\\n      case 3:\\n        \u002F\u002F 0 -> 270\\n        return [y, 1 - x - width, height, width];\\n      case 4:\\n        \u002F\u002F 90 -> 0\\n        return [\\n          x,\\n          y - width * (pW \u002F pH),\\n          height * (pH \u002F pW),\\n          width * (pW \u002F pH),\\n        ];\\n      case 5:\\n        \u002F\u002F 90 -> 90\\n        return [1 - y, x, width * (pW \u002F pH), height * (pH \u002F pW)];\\n      case 6:\\n        \u002F\u002F 90 -> 180\\n        return [\\n          1 - x - height * (pH \u002F pW),\\n          1 - y,\\n          height * (pH \u002F pW),\\n          width * (pW \u002F pH),\\n        ];\\n      case 7:\\n        \u002F\u002F 90 -> 270\\n        return [\\n          y - width * (pW \u002F pH),\\n          1 - x - height * (pH \u002F pW),\\n          width * (pW \u002F pH),\\n          height * (pH \u002F pW),\\n        ];\\n      case 8:\\n        \u002F\u002F 180 -> 0\\n        return [x - width, y - height, width, height];\\n      case 9:\\n        \u002F\u002F 180 -> 90\\n        return [1 - y, x - width, height, width];\\n      case 10:\\n        \u002F\u002F 180 -> 180\\n        return [1 - x, 1 - y, width, height];\\n      case 11:\\n        \u002F\u002F 180 -> 270\\n        return [y - height, 1 - x, height, width];\\n      case 12:\\n        \u002F\u002F 270 -> 0\\n        return [\\n          x - height * (pH \u002F pW),\\n          y,\\n          height * (pH \u002F pW),\\n          width * (pW \u002F pH),\\n        ];\\n      case 13:\\n        \u002F\u002F 270 -> 90\\n        return [\\n          1 - y - width * (pW \u002F pH),\\n          x - height * (pH \u002F pW),\\n          width * (pW \u002F pH),\\n          height * (pH \u002F pW),\\n        ];\\n      case 14:\\n        \u002F\u002F 270 -> 180\\n        return [\\n          1 - x,\\n          1 - y - width * (pW \u002F pH),\\n          height * (pH \u002F pW),\\n          width * (pW \u002F pH),\\n        ];\\n      case 15:\\n        \u002F\u002F 270 -> 270\\n        return [y, 1 - x, width * (pW \u002F pH), height * (pH \u002F pW)];\\n      default:\\n        \u002F\u002F 0 -> 0\\n        return [x, y, width, height];\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  rotate() {\\n    if (!this.parent) {\\n      return;\\n    }\\n    this.parent.drawLayer.updateProperties(\\n      this._drawId,\\n      DrawingEditor._mergeSVGProperties(\\n        {\\n          bbox: this.#rotateBox(),\\n        },\\n        this.#drawOutlines.updateRotation(\\n          (this.parentRotation - this.rotation + 360) % 360\\n        )\\n      )\\n    );\\n  }\\n\\n  onScaleChanging() {\\n    if (!this.parent) {\\n      return;\\n    }\\n    this.#updateBbox(\\n      this.#drawOutlines.updateParentDimensions(\\n        this.parentDimensions,\\n        this.parent.scale\\n      )\\n    );\\n  }\\n\\n  static onScaleChangingWhenDrawing() {}\\n\\n  \u002F** @inheritdoc *\u002F\\n  render() {\\n    if (this.div) {\\n      return this.div;\\n    }\\n\\n    let baseX, baseY;\\n    if (this._isCopy) {\\n      baseX = this.x;\\n      baseY = this.y;\\n    }\\n\\n    const div = super.render();\\n    div.classList.add(\\\"draw\\\");\\n\\n    const drawDiv = document.createElement(\\\"div\\\");\\n    div.append(drawDiv);\\n    drawDiv.setAttribute(\\\"aria-hidden\\\", \\\"true\\\");\\n    drawDiv.className = \\\"internal\\\";\\n    const [parentWidth, parentHeight] = this.parentDimensions;\\n    this.setDims(this.width * parentWidth, this.height * parentHeight);\\n    this._uiManager.addShouldRescale(this);\\n    this.disableEditing();\\n\\n    if (this._isCopy) {\\n      this._moveAfterPaste(baseX, baseY);\\n    }\\n\\n    return div;\\n  }\\n\\n  \u002F**\\n   * Create a new drawer instance.\\n   * @param {number} x - The x coordinate of the event.\\n   * @param {number} y - The y coordinate of the event.\\n   * @param {number} parentWidth - The parent width.\\n   * @param {number} parentHeight - The parent height.\\n   * @param {number} rotation - The parent rotation.\\n   *\u002F\\n  static createDrawerInstance(_x, _y, _parentWidth, _parentHeight, _rotation) {\\n    unreachable(\\\"Not implemented\\\");\\n  }\\n\\n  static startDrawing(parent, uiManager, _isLTR, event) {\\n    \u002F\u002F The _currentPointerType is set when the user starts an empty drawing\\n    \u002F\u002F session. If, in the same drawing session, the user starts using a\\n    \u002F\u002F different type of pointer (e.g. a pen and then a finger), we just return.\\n    \u002F\u002F\\n    \u002F\u002F The _currentPointerId  and _currentPointerIds are used to keep track of\\n    \u002F\u002F the pointers with a same type (e.g. two fingers). If the user starts to\\n    \u002F\u002F draw with a finger and then uses a second finger, we just stop the\\n    \u002F\u002F current drawing and let the user zoom the document.\\n\\n    const { target, offsetX: x, offsetY: y, pointerId, pointerType } = event;\\n    if (\\n      DrawingEditor.#currentPointerType &&\\n      DrawingEditor.#currentPointerType !== pointerType\\n    ) {\\n      return;\\n    }\\n\\n    const {\\n      viewport: { rotation },\\n    } = parent;\\n    const { width: parentWidth, height: parentHeight } =\\n      target.getBoundingClientRect();\\n\\n    const ac = (DrawingEditor.#currentDrawingAC = new AbortController());\\n    const signal = parent.combinedSignal(ac);\\n\\n    DrawingEditor.#currentPointerId ||= pointerId;\\n    DrawingEditor.#currentPointerType ??= pointerType;\\n\\n    window.addEventListener(\\n      \\\"pointerup\\\",\\n      e => {\\n        if (DrawingEditor.#currentPointerId === e.pointerId) {\\n          this._endDraw(e);\\n        } else {\\n          DrawingEditor.#currentPointerIds?.delete(e.pointerId);\\n        }\\n      },\\n      { signal }\\n    );\\n    window.addEventListener(\\n      \\\"pointercancel\\\",\\n      e => {\\n        if (DrawingEditor.#currentPointerId === e.pointerId) {\\n          this._currentParent.endDrawingSession();\\n        } else {\\n          DrawingEditor.#currentPointerIds?.delete(e.pointerId);\\n        }\\n      },\\n      { signal }\\n    );\\n    window.addEventListener(\\n      \\\"pointerdown\\\",\\n      e => {\\n        if (DrawingEditor.#currentPointerType !== e.pointerType) {\\n          \u002F\u002F For example, we started with a pen and the user\\n          \u002F\u002F is now using a finger.\\n          return;\\n        }\\n\\n        \u002F\u002F For example, the user is using a second finger.\\n        (DrawingEditor.#currentPointerIds ||= new Set()).add(e.pointerId);\\n\\n        \u002F\u002F The first finger created a first point and a second finger just\\n        \u002F\u002F started, so we stop the drawing and remove this only point.\\n        if (DrawingEditor.#currentDraw.isCancellable()) {\\n          DrawingEditor.#currentDraw.removeLastElement();\\n          if (DrawingEditor.#currentDraw.isEmpty()) {\\n            this._currentParent.endDrawingSession(\u002F* isAborted = *\u002F true);\\n          } else {\\n            this._endDraw(null);\\n          }\\n        }\\n      },\\n      {\\n        capture: true,\\n        passive: false,\\n        signal,\\n      }\\n    );\\n    window.addEventListener(\\\"contextmenu\\\", noContextMenu, { signal });\\n    target.addEventListener(\\\"pointermove\\\", this._drawMove.bind(this), {\\n      signal,\\n    });\\n    target.addEventListener(\\n      \\\"touchmove\\\",\\n      e => {\\n        if (e.timeStamp === DrawingEditor.#currentMoveTimestamp) {\\n          \u002F\u002F This move event is used to draw so we don't want to scroll.\\n          stopEvent(e);\\n        }\\n      },\\n      { signal }\\n    );\\n    parent.toggleDrawing();\\n    uiManager._editorUndoBar?.hide();\\n\\n    if (DrawingEditor.#currentDraw) {\\n      parent.drawLayer.updateProperties(\\n        this._currentDrawId,\\n        DrawingEditor.#currentDraw.startNew(\\n          x,\\n          y,\\n          parentWidth,\\n          parentHeight,\\n          rotation\\n        )\\n      );\\n      return;\\n    }\\n\\n    uiManager.updateUIForDefaultProperties(this);\\n\\n    DrawingEditor.#currentDraw = this.createDrawerInstance(\\n      x,\\n      y,\\n      parentWidth,\\n      parentHeight,\\n      rotation\\n    );\\n    DrawingEditor.#currentDrawingOptions = this.getDefaultDrawingOptions();\\n    this._currentParent = parent;\\n\\n    ({ id: this._currentDrawId } = parent.drawLayer.draw(\\n      this._mergeSVGProperties(\\n        DrawingEditor.#currentDrawingOptions.toSVGProperties(),\\n        DrawingEditor.#currentDraw.defaultSVGProperties\\n      ),\\n      \u002F* isPathUpdatable = *\u002F true,\\n      \u002F* hasClip = *\u002F false\\n    ));\\n  }\\n\\n  static _drawMove(event) {\\n    DrawingEditor.#currentMoveTimestamp = -1;\\n    if (!DrawingEditor.#currentDraw) {\\n      return;\\n    }\\n    const { offsetX, offsetY, pointerId } = event;\\n\\n    if (DrawingEditor.#currentPointerId !== pointerId) {\\n      return;\\n    }\\n    if (DrawingEditor.#currentPointerIds?.size >= 1) {\\n      \u002F\u002F The user is using multiple fingers and the first one is moving.\\n      this._endDraw(event);\\n      return;\\n    }\\n    this._currentParent.drawLayer.updateProperties(\\n      this._currentDrawId,\\n      DrawingEditor.#currentDraw.add(offsetX, offsetY)\\n    );\\n    \u002F\u002F We track the timestamp to know if the touchmove event is used to draw.\\n    DrawingEditor.#currentMoveTimestamp = event.timeStamp;\\n    stopEvent(event);\\n  }\\n\\n  static _cleanup(all) {\\n    if (all) {\\n      this._currentDrawId = -1;\\n      this._currentParent = null;\\n      DrawingEditor.#currentDraw = null;\\n      DrawingEditor.#currentDrawingOptions = null;\\n      DrawingEditor.#currentPointerType = null;\\n      DrawingEditor.#currentMoveTimestamp = NaN;\\n    }\\n\\n    if (DrawingEditor.#currentDrawingAC) {\\n      DrawingEditor.#currentDrawingAC.abort();\\n      DrawingEditor.#currentDrawingAC = null;\\n      DrawingEditor.#currentPointerId = NaN;\\n      DrawingEditor.#currentPointerIds = null;\\n    }\\n  }\\n\\n  static _endDraw(event) {\\n    const parent = this._currentParent;\\n    if (!parent) {\\n      return;\\n    }\\n\\n    parent.toggleDrawing(true);\\n    this._cleanup(false);\\n\\n    if (event?.target === parent.div) {\\n      parent.drawLayer.updateProperties(\\n        this._currentDrawId,\\n        DrawingEditor.#currentDraw.end(event.offsetX, event.offsetY)\\n      );\\n    }\\n    if (this.supportMultipleDrawings) {\\n      const draw = DrawingEditor.#currentDraw;\\n      const drawId = this._currentDrawId;\\n      const lastElement = draw.getLastElement();\\n      parent.addCommands({\\n        cmd: () => {\\n          parent.drawLayer.updateProperties(\\n            drawId,\\n            draw.setLastElement(lastElement)\\n          );\\n        },\\n        undo: () => {\\n          parent.drawLayer.updateProperties(drawId, draw.removeLastElement());\\n        },\\n        mustExec: false,\\n        type: AnnotationEditorParamsType.DRAW_STEP,\\n      });\\n\\n      return;\\n    }\\n\\n    this.endDrawing(\u002F* isAborted = *\u002F false);\\n  }\\n\\n  static endDrawing(isAborted) {\\n    const parent = this._currentParent;\\n    if (!parent) {\\n      return null;\\n    }\\n    parent.toggleDrawing(true);\\n    parent.cleanUndoStack(AnnotationEditorParamsType.DRAW_STEP);\\n\\n    if (!DrawingEditor.#currentDraw.isEmpty()) {\\n      const {\\n        pageDimensions: [pageWidth, pageHeight],\\n        scale,\\n      } = parent;\\n\\n      const editor = parent.createAndAddNewEditor(\\n        { offsetX: 0, offsetY: 0 },\\n        false,\\n        {\\n          drawId: this._currentDrawId,\\n          drawOutlines: DrawingEditor.#currentDraw.getOutlines(\\n            pageWidth * scale,\\n            pageHeight * scale,\\n            scale,\\n            this._INNER_MARGIN\\n          ),\\n          drawingOptions: DrawingEditor.#currentDrawingOptions,\\n          mustBeCommitted: !isAborted,\\n        }\\n      );\\n      this._cleanup(true);\\n      return editor;\\n    }\\n\\n    parent.drawLayer.remove(this._currentDrawId);\\n    this._cleanup(true);\\n    return null;\\n  }\\n\\n  \u002F**\\n   * Create the drawing options.\\n   * @param {Object} _data\\n   *\u002F\\n  createDrawingOptions(_data) {}\\n\\n  \u002F**\\n   * Deserialize the drawing outlines.\\n   * @param {number} pageX - The x coordinate of the page.\\n   * @param {number} pageY - The y coordinate of the page.\\n   * @param {number} pageWidth - The width of the page.\\n   * @param {number} pageHeight - The height of the page.\\n   * @param {number} innerWidth - The inner width.\\n   * @param {Object} data - The data to deserialize.\\n   * @returns {Object} The deserialized outlines.\\n   *\u002F\\n  static deserializeDraw(\\n    _pageX,\\n    _pageY,\\n    _pageWidth,\\n    _pageHeight,\\n    _innerWidth,\\n    _data\\n  ) {\\n    unreachable(\\\"Not implemented\\\");\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static async deserialize(data, parent, uiManager) {\\n    const {\\n      rawDims: { pageWidth, pageHeight, pageX, pageY },\\n    } = parent.viewport;\\n    const drawOutlines = this.deserializeDraw(\\n      pageX,\\n      pageY,\\n      pageWidth,\\n      pageHeight,\\n      this._INNER_MARGIN,\\n      data\\n    );\\n    const editor = await super.deserialize(data, parent, uiManager);\\n    editor.createDrawingOptions(data);\\n    editor.#createDrawOutlines({ drawOutlines });\\n    editor.#addToDrawLayer();\\n    editor.onScaleChanging();\\n    editor.rotate();\\n\\n    return editor;\\n  }\\n\\n  serializeDraw(isForCopying) {\\n    const [pageX, pageY] = this.pageTranslation;\\n    const [pageWidth, pageHeight] = this.pageDimensions;\\n    return this.#drawOutlines.serialize(\\n      [pageX, pageY, pageWidth, pageHeight],\\n      isForCopying\\n    );\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  renderAnnotationElement(annotation) {\\n    annotation.updateEdited({\\n      rect: this.getRect(0, 0),\\n    });\\n\\n    return null;\\n  }\\n\\n  static canCreateNewEmptyEditor() {\\n    return false;\\n  }\\n}\\n\\nexport { DrawingEditor, DrawingOptions };\\n\",\"\u002F* Copyright 2024 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { MathClamp, Util } from \\\"..\u002F..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport { Outline } from \\\".\u002Foutline.js\\\";\\n\\nclass InkDrawOutliner {\\n  \u002F\u002F The last 3 points of the line.\\n  #last = new Float64Array(6);\\n\\n  #line;\\n\\n  #lines;\\n\\n  #rotation;\\n\\n  #thickness;\\n\\n  #points;\\n\\n  #lastSVGPath = \\\"\\\";\\n\\n  #lastIndex = 0;\\n\\n  #outlines = new InkDrawOutline();\\n\\n  #parentWidth;\\n\\n  #parentHeight;\\n\\n  constructor(x, y, parentWidth, parentHeight, rotation, thickness) {\\n    this.#parentWidth = parentWidth;\\n    this.#parentHeight = parentHeight;\\n    this.#rotation = rotation;\\n    this.#thickness = thickness;\\n\\n    [x, y] = this.#normalizePoint(x, y);\\n\\n    const line = (this.#line = [NaN, NaN, NaN, NaN, x, y]);\\n    this.#points = [x, y];\\n    this.#lines = [{ line, points: this.#points }];\\n    this.#last.set(line, 0);\\n  }\\n\\n  updateProperty(name, value) {\\n    if (name === \\\"stroke-width\\\") {\\n      this.#thickness = value;\\n    }\\n  }\\n\\n  #normalizePoint(x, y) {\\n    return Outline._normalizePoint(\\n      x,\\n      y,\\n      this.#parentWidth,\\n      this.#parentHeight,\\n      this.#rotation\\n    );\\n  }\\n\\n  isEmpty() {\\n    return !this.#lines || this.#lines.length === 0;\\n  }\\n\\n  isCancellable() {\\n    \u002F\u002F The user a second finger after drawing 5 points: it's small enough\\n    \u002F\u002F to not be a real drawing.\\n    return this.#points.length \u003C= 10;\\n  }\\n\\n  add(x, y) {\\n    \u002F\u002F The point is in canvas coordinates which means that there is no rotation.\\n    \u002F\u002F It's the same as parent coordinates.\\n    [x, y] = this.#normalizePoint(x, y);\\n    const [x1, y1, x2, y2] = this.#last.subarray(2, 6);\\n    const diffX = x - x2;\\n    const diffY = y - y2;\\n    const d = Math.hypot(this.#parentWidth * diffX, this.#parentHeight * diffY);\\n    if (d \u003C= 2) {\\n      \u002F\u002F The idea is to avoid garbage points around the last point.\\n      \u002F\u002F When the points are too close, it just leads to bad normal vectors and\\n      \u002F\u002F control points.\\n      return null;\\n    }\\n\\n    this.#points.push(x, y);\\n\\n    if (isNaN(x1)) {\\n      \u002F\u002F We've only one point.\\n      this.#last.set([x2, y2, x, y], 2);\\n      this.#line.push(NaN, NaN, NaN, NaN, x, y);\\n      return {\\n        path: {\\n          d: this.toSVGPath(),\\n        },\\n      };\\n    }\\n\\n    if (isNaN(this.#last[0])) {\\n      \u002F\u002F We've only two points.\\n      this.#line.splice(6, 6);\\n    }\\n\\n    this.#last.set([x1, y1, x2, y2, x, y], 0);\\n    this.#line.push(...Outline.createBezierPoints(x1, y1, x2, y2, x, y));\\n\\n    return {\\n      path: {\\n        d: this.toSVGPath(),\\n      },\\n    };\\n  }\\n\\n  end(x, y) {\\n    const change = this.add(x, y);\\n    if (change) {\\n      return change;\\n    }\\n    if (this.#points.length === 2) {\\n      \u002F\u002F We've only one point.\\n      return {\\n        path: {\\n          d: this.toSVGPath(),\\n        },\\n      };\\n    }\\n    return null;\\n  }\\n\\n  startNew(x, y, parentWidth, parentHeight, rotation) {\\n    this.#parentWidth = parentWidth;\\n    this.#parentHeight = parentHeight;\\n    this.#rotation = rotation;\\n\\n    [x, y] = this.#normalizePoint(x, y);\\n\\n    const line = (this.#line = [NaN, NaN, NaN, NaN, x, y]);\\n    this.#points = [x, y];\\n    const last = this.#lines.at(-1);\\n    if (last) {\\n      last.line = new Float32Array(last.line);\\n      last.points = new Float32Array(last.points);\\n    }\\n    this.#lines.push({ line, points: this.#points });\\n    this.#last.set(line, 0);\\n    this.#lastIndex = 0;\\n    this.toSVGPath();\\n\\n    return null;\\n  }\\n\\n  getLastElement() {\\n    return this.#lines.at(-1);\\n  }\\n\\n  setLastElement(element) {\\n    if (!this.#lines) {\\n      return this.#outlines.setLastElement(element);\\n    }\\n    this.#lines.push(element);\\n    this.#line = element.line;\\n    this.#points = element.points;\\n    this.#lastIndex = 0;\\n    return {\\n      path: {\\n        d: this.toSVGPath(),\\n      },\\n    };\\n  }\\n\\n  removeLastElement() {\\n    if (!this.#lines) {\\n      return this.#outlines.removeLastElement();\\n    }\\n    this.#lines.pop();\\n    this.#lastSVGPath = \\\"\\\";\\n    for (let i = 0, ii = this.#lines.length; i \u003C ii; i++) {\\n      const { line, points } = this.#lines[i];\\n      this.#line = line;\\n      this.#points = points;\\n      this.#lastIndex = 0;\\n      this.toSVGPath();\\n    }\\n\\n    return {\\n      path: {\\n        d: this.#lastSVGPath,\\n      },\\n    };\\n  }\\n\\n  toSVGPath() {\\n    const firstX = Outline.svgRound(this.#line[4]);\\n    const firstY = Outline.svgRound(this.#line[5]);\\n    if (this.#points.length === 2) {\\n      this.#lastSVGPath = `${this.#lastSVGPath} M ${firstX} ${firstY} Z`;\\n      return this.#lastSVGPath;\\n    }\\n\\n    if (this.#points.length \u003C= 6) {\\n      \u002F\u002F We've 2 or 3 points.\\n      const i = this.#lastSVGPath.lastIndexOf(\\\"M\\\");\\n      this.#lastSVGPath = `${this.#lastSVGPath.slice(0, i)} M ${firstX} ${firstY}`;\\n      this.#lastIndex = 6;\\n    }\\n\\n    if (this.#points.length === 4) {\\n      const secondX = Outline.svgRound(this.#line[10]);\\n      const secondY = Outline.svgRound(this.#line[11]);\\n      this.#lastSVGPath = `${this.#lastSVGPath} L ${secondX} ${secondY}`;\\n      this.#lastIndex = 12;\\n      return this.#lastSVGPath;\\n    }\\n\\n    const buffer = [];\\n    if (this.#lastIndex === 0) {\\n      buffer.push(`M ${firstX} ${firstY}`);\\n      this.#lastIndex = 6;\\n    }\\n\\n    for (let i = this.#lastIndex, ii = this.#line.length; i \u003C ii; i += 6) {\\n      const [c1x, c1y, c2x, c2y, x, y] = this.#line\\n        .slice(i, i + 6)\\n        .map(Outline.svgRound);\\n      buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\\n    }\\n    this.#lastSVGPath += buffer.join(\\\" \\\");\\n    this.#lastIndex = this.#line.length;\\n\\n    return this.#lastSVGPath;\\n  }\\n\\n  getOutlines(parentWidth, parentHeight, scale, innerMargin) {\\n    const last = this.#lines.at(-1);\\n    last.line = new Float32Array(last.line);\\n    last.points = new Float32Array(last.points);\\n\\n    this.#outlines.build(\\n      this.#lines,\\n      parentWidth,\\n      parentHeight,\\n      scale,\\n      this.#rotation,\\n      this.#thickness,\\n      innerMargin\\n    );\\n\\n    \u002F\u002F We reset everything: the drawing is done.\\n    this.#last = null;\\n    this.#line = null;\\n    this.#lines = null;\\n    this.#lastSVGPath = null;\\n\\n    return this.#outlines;\\n  }\\n\\n  get defaultSVGProperties() {\\n    return {\\n      root: {\\n        viewBox: \\\"0 0 10000 10000\\\",\\n      },\\n      rootClass: {\\n        draw: true,\\n      },\\n      bbox: [0, 0, 1, 1],\\n    };\\n  }\\n}\\n\\nclass InkDrawOutline extends Outline {\\n  #bbox;\\n\\n  #currentRotation = 0;\\n\\n  #innerMargin;\\n\\n  #lines;\\n\\n  #parentWidth;\\n\\n  #parentHeight;\\n\\n  #parentScale;\\n\\n  #rotation;\\n\\n  #thickness;\\n\\n  build(\\n    lines,\\n    parentWidth,\\n    parentHeight,\\n    parentScale,\\n    rotation,\\n    thickness,\\n    innerMargin\\n  ) {\\n    this.#parentWidth = parentWidth;\\n    this.#parentHeight = parentHeight;\\n    this.#parentScale = parentScale;\\n    this.#rotation = rotation;\\n    this.#thickness = thickness;\\n    this.#innerMargin = innerMargin ?? 0;\\n    this.#lines = lines;\\n\\n    this.#computeBbox();\\n  }\\n\\n  get thickness() {\\n    return this.#thickness;\\n  }\\n\\n  setLastElement(element) {\\n    this.#lines.push(element);\\n    return {\\n      path: {\\n        d: this.toSVGPath(),\\n      },\\n    };\\n  }\\n\\n  removeLastElement() {\\n    this.#lines.pop();\\n    return {\\n      path: {\\n        d: this.toSVGPath(),\\n      },\\n    };\\n  }\\n\\n  toSVGPath() {\\n    const buffer = [];\\n    for (const { line } of this.#lines) {\\n      buffer.push(`M${Outline.svgRound(line[4])} ${Outline.svgRound(line[5])}`);\\n      if (line.length === 6) {\\n        buffer.push(\\\"Z\\\");\\n        continue;\\n      }\\n      if (line.length === 12 && isNaN(line[6])) {\\n        buffer.push(\\n          `L${Outline.svgRound(line[10])} ${Outline.svgRound(line[11])}`\\n        );\\n        continue;\\n      }\\n      for (let i = 6, ii = line.length; i \u003C ii; i += 6) {\\n        const [c1x, c1y, c2x, c2y, x, y] = line\\n          .subarray(i, i + 6)\\n          .map(Outline.svgRound);\\n        buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\\n      }\\n    }\\n    return buffer.join(\\\"\\\");\\n  }\\n\\n  serialize([pageX, pageY, pageWidth, pageHeight], isForCopying) {\\n    const serializedLines = [];\\n    const serializedPoints = [];\\n    const [x, y, width, height] = this.#getBBoxWithNoMargin();\\n    let tx, ty, sx, sy, x1, y1, x2, y2, rescaleFn;\\n\\n    switch (this.#rotation) {\\n      case 0:\\n        rescaleFn = Outline._rescale;\\n        tx = pageX;\\n        ty = pageY + pageHeight;\\n        sx = pageWidth;\\n        sy = -pageHeight;\\n        x1 = pageX + x * pageWidth;\\n        y1 = pageY + (1 - y - height) * pageHeight;\\n        x2 = pageX + (x + width) * pageWidth;\\n        y2 = pageY + (1 - y) * pageHeight;\\n        break;\\n      case 90:\\n        rescaleFn = Outline._rescaleAndSwap;\\n        tx = pageX;\\n        ty = pageY;\\n        sx = pageWidth;\\n        sy = pageHeight;\\n        x1 = pageX + y * pageWidth;\\n        y1 = pageY + x * pageHeight;\\n        x2 = pageX + (y + height) * pageWidth;\\n        y2 = pageY + (x + width) * pageHeight;\\n        break;\\n      case 180:\\n        rescaleFn = Outline._rescale;\\n        tx = pageX + pageWidth;\\n        ty = pageY;\\n        sx = -pageWidth;\\n        sy = pageHeight;\\n        x1 = pageX + (1 - x - width) * pageWidth;\\n        y1 = pageY + y * pageHeight;\\n        x2 = pageX + (1 - x) * pageWidth;\\n        y2 = pageY + (y + height) * pageHeight;\\n        break;\\n      case 270:\\n        rescaleFn = Outline._rescaleAndSwap;\\n        tx = pageX + pageWidth;\\n        ty = pageY + pageHeight;\\n        sx = -pageWidth;\\n        sy = -pageHeight;\\n        x1 = pageX + (1 - y - height) * pageWidth;\\n        y1 = pageY + (1 - x - width) * pageHeight;\\n        x2 = pageX + (1 - y) * pageWidth;\\n        y2 = pageY + (1 - x) * pageHeight;\\n        break;\\n    }\\n\\n    for (const { line, points } of this.#lines) {\\n      serializedLines.push(\\n        rescaleFn(\\n          line,\\n          tx,\\n          ty,\\n          sx,\\n          sy,\\n          isForCopying ? new Array(line.length) : null\\n        )\\n      );\\n      serializedPoints.push(\\n        rescaleFn(\\n          points,\\n          tx,\\n          ty,\\n          sx,\\n          sy,\\n          isForCopying ? new Array(points.length) : null\\n        )\\n      );\\n    }\\n\\n    return {\\n      lines: serializedLines,\\n      points: serializedPoints,\\n      rect: [x1, y1, x2, y2],\\n    };\\n  }\\n\\n  static deserialize(\\n    pageX,\\n    pageY,\\n    pageWidth,\\n    pageHeight,\\n    innerMargin,\\n    { paths: { lines, points }, rotation, thickness }\\n  ) {\\n    const newLines = [];\\n    let tx, ty, sx, sy, rescaleFn;\\n    switch (rotation) {\\n      case 0:\\n        rescaleFn = Outline._rescale;\\n        tx = -pageX \u002F pageWidth;\\n        ty = pageY \u002F pageHeight + 1;\\n        sx = 1 \u002F pageWidth;\\n        sy = -1 \u002F pageHeight;\\n        break;\\n      case 90:\\n        rescaleFn = Outline._rescaleAndSwap;\\n        tx = -pageY \u002F pageHeight;\\n        ty = -pageX \u002F pageWidth;\\n        sx = 1 \u002F pageHeight;\\n        sy = 1 \u002F pageWidth;\\n        break;\\n      case 180:\\n        rescaleFn = Outline._rescale;\\n        tx = pageX \u002F pageWidth + 1;\\n        ty = -pageY \u002F pageHeight;\\n        sx = -1 \u002F pageWidth;\\n        sy = 1 \u002F pageHeight;\\n        break;\\n      case 270:\\n        rescaleFn = Outline._rescaleAndSwap;\\n        tx = pageY \u002F pageHeight + 1;\\n        ty = pageX \u002F pageWidth + 1;\\n        sx = -1 \u002F pageHeight;\\n        sy = -1 \u002F pageWidth;\\n        break;\\n    }\\n\\n    if (!lines) {\\n      lines = [];\\n      for (const point of points) {\\n        const len = point.length;\\n        if (len === 2) {\\n          lines.push(\\n            new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1]])\\n          );\\n          continue;\\n        }\\n        if (len === 4) {\\n          lines.push(\\n            new Float32Array([\\n              NaN,\\n              NaN,\\n              NaN,\\n              NaN,\\n              point[0],\\n              point[1],\\n              NaN,\\n              NaN,\\n              NaN,\\n              NaN,\\n              point[2],\\n              point[3],\\n            ])\\n          );\\n          continue;\\n        }\\n        const line = new Float32Array(3 * (len - 2));\\n        lines.push(line);\\n        let [x1, y1, x2, y2] = point.subarray(0, 4);\\n        line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\\n        for (let i = 4; i \u003C len; i += 2) {\\n          const x = point[i];\\n          const y = point[i + 1];\\n          line.set(\\n            Outline.createBezierPoints(x1, y1, x2, y2, x, y),\\n            (i - 2) * 3\\n          );\\n          [x1, y1, x2, y2] = [x2, y2, x, y];\\n        }\\n      }\\n    }\\n\\n    for (let i = 0, ii = lines.length; i \u003C ii; i++) {\\n      newLines.push({\\n        line: rescaleFn(\\n          lines[i].map(x => x ?? NaN),\\n          tx,\\n          ty,\\n          sx,\\n          sy\\n        ),\\n        points: rescaleFn(\\n          points[i].map(x => x ?? NaN),\\n          tx,\\n          ty,\\n          sx,\\n          sy\\n        ),\\n      });\\n    }\\n\\n    const outlines = new this.prototype.constructor();\\n    outlines.build(\\n      newLines,\\n      pageWidth,\\n      pageHeight,\\n      1,\\n      rotation,\\n      thickness,\\n      innerMargin\\n    );\\n\\n    return outlines;\\n  }\\n\\n  #getMarginComponents(thickness = this.#thickness) {\\n    const margin = this.#innerMargin + (thickness \u002F 2) * this.#parentScale;\\n    return this.#rotation % 180 === 0\\n      ? [margin \u002F this.#parentWidth, margin \u002F this.#parentHeight]\\n      : [margin \u002F this.#parentHeight, margin \u002F this.#parentWidth];\\n  }\\n\\n  #getBBoxWithNoMargin() {\\n    const [x, y, width, height] = this.#bbox;\\n    const [marginX, marginY] = this.#getMarginComponents(0);\\n\\n    return [\\n      x + marginX,\\n      y + marginY,\\n      width - 2 * marginX,\\n      height - 2 * marginY,\\n    ];\\n  }\\n\\n  #computeBbox() {\\n    const bbox = (this.#bbox = new Float32Array([\\n      Infinity,\\n      Infinity,\\n      -Infinity,\\n      -Infinity,\\n    ]));\\n\\n    for (const { line } of this.#lines) {\\n      if (line.length \u003C= 12) {\\n        \u002F\u002F We've only one or two points => no bezier curve.\\n        for (let i = 4, ii = line.length; i \u003C ii; i += 6) {\\n          Util.pointBoundingBox(line[i], line[i + 1], bbox);\\n        }\\n        continue;\\n      }\\n      let lastX = line[4],\\n        lastY = line[5];\\n      for (let i = 6, ii = line.length; i \u003C ii; i += 6) {\\n        const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6);\\n        Util.bezierBoundingBox(lastX, lastY, c1x, c1y, c2x, c2y, x, y, bbox);\\n        lastX = x;\\n        lastY = y;\\n      }\\n    }\\n\\n    const [marginX, marginY] = this.#getMarginComponents();\\n    bbox[0] = MathClamp(bbox[0] - marginX, 0, 1);\\n    bbox[1] = MathClamp(bbox[1] - marginY, 0, 1);\\n    bbox[2] = MathClamp(bbox[2] + marginX, 0, 1);\\n    bbox[3] = MathClamp(bbox[3] + marginY, 0, 1);\\n\\n    bbox[2] -= bbox[0];\\n    bbox[3] -= bbox[1];\\n  }\\n\\n  get box() {\\n    return this.#bbox;\\n  }\\n\\n  updateProperty(name, value) {\\n    if (name === \\\"stroke-width\\\") {\\n      return this.#updateThickness(value);\\n    }\\n    return null;\\n  }\\n\\n  #updateThickness(thickness) {\\n    const [oldMarginX, oldMarginY] = this.#getMarginComponents();\\n    this.#thickness = thickness;\\n    const [newMarginX, newMarginY] = this.#getMarginComponents();\\n    const [diffMarginX, diffMarginY] = [\\n      newMarginX - oldMarginX,\\n      newMarginY - oldMarginY,\\n    ];\\n    const bbox = this.#bbox;\\n    bbox[0] -= diffMarginX;\\n    bbox[1] -= diffMarginY;\\n    bbox[2] += 2 * diffMarginX;\\n    bbox[3] += 2 * diffMarginY;\\n\\n    return bbox;\\n  }\\n\\n  updateParentDimensions([width, height], scale) {\\n    const [oldMarginX, oldMarginY] = this.#getMarginComponents();\\n    this.#parentWidth = width;\\n    this.#parentHeight = height;\\n    this.#parentScale = scale;\\n    const [newMarginX, newMarginY] = this.#getMarginComponents();\\n    const diffMarginX = newMarginX - oldMarginX;\\n    const diffMarginY = newMarginY - oldMarginY;\\n\\n    const bbox = this.#bbox;\\n    bbox[0] -= diffMarginX;\\n    bbox[1] -= diffMarginY;\\n    bbox[2] += 2 * diffMarginX;\\n    bbox[3] += 2 * diffMarginY;\\n\\n    return bbox;\\n  }\\n\\n  updateRotation(rotation) {\\n    this.#currentRotation = rotation;\\n    return {\\n      path: {\\n        transform: this.rotationTransform,\\n      },\\n    };\\n  }\\n\\n  get viewBox() {\\n    return this.#bbox.map(Outline.svgRound).join(\\\" \\\");\\n  }\\n\\n  get defaultProperties() {\\n    const [x, y] = this.#bbox;\\n    return {\\n      root: {\\n        viewBox: this.viewBox,\\n      },\\n      path: {\\n        \\\"transform-origin\\\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`,\\n      },\\n    };\\n  }\\n\\n  get rotationTransform() {\\n    const [, , width, height] = this.#bbox;\\n    let a = 0,\\n      b = 0,\\n      c = 0,\\n      d = 0,\\n      e = 0,\\n      f = 0;\\n    switch (this.#currentRotation) {\\n      case 90:\\n        b = height \u002F width;\\n        c = -width \u002F height;\\n        e = width;\\n        break;\\n      case 180:\\n        a = -1;\\n        d = -1;\\n        e = width;\\n        f = height;\\n        break;\\n      case 270:\\n        b = -height \u002F width;\\n        c = width \u002F height;\\n        f = height;\\n        break;\\n      default:\\n        return \\\"\\\";\\n    }\\n    return `matrix(${a} ${b} ${c} ${d} ${Outline.svgRound(e)} ${Outline.svgRound(f)})`;\\n  }\\n\\n  getPathResizingSVGProperties([newX, newY, newWidth, newHeight]) {\\n    const [marginX, marginY] = this.#getMarginComponents();\\n    const [x, y, width, height] = this.#bbox;\\n\\n    if (\\n      Math.abs(width - marginX) \u003C= Outline.PRECISION ||\\n      Math.abs(height - marginY) \u003C= Outline.PRECISION\\n    ) {\\n      \u002F\u002F Center the path in the new bounding box.\\n      const tx = newX + newWidth \u002F 2 - (x + width \u002F 2);\\n      const ty = newY + newHeight \u002F 2 - (y + height \u002F 2);\\n      return {\\n        path: {\\n          \\\"transform-origin\\\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\\n          transform: `${this.rotationTransform} translate(${tx} ${ty})`,\\n        },\\n      };\\n    }\\n\\n    \u002F\u002F We compute the following transform:\\n    \u002F\u002F  1. Translate the path to the origin (-marginX, -marginY).\\n    \u002F\u002F  2. Scale the path to the new size:\\n    \u002F\u002F   ((newWidth - 2*marginX) \u002F (bbox.width - 2*marginX),\\n    \u002F\u002F   (newHeight - 2*marginY) \u002F (bbox.height - 2*marginY)).\\n    \u002F\u002F  3. Translate the path back to its original position\\n    \u002F\u002F   (marginX, marginY).\\n    \u002F\u002F  4. Scale the inverse of bbox scaling:\\n    \u002F\u002F   (bbox.width \u002F newWidth, bbox.height \u002F newHeight).\\n\\n    const s1x = (newWidth - 2 * marginX) \u002F (width - 2 * marginX);\\n    const s1y = (newHeight - 2 * marginY) \u002F (height - 2 * marginY);\\n    const s2x = width \u002F newWidth;\\n    const s2y = height \u002F newHeight;\\n\\n    return {\\n      path: {\\n        \\\"transform-origin\\\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`,\\n        transform:\\n          `${this.rotationTransform} scale(${s2x} ${s2y}) ` +\\n          `translate(${Outline.svgRound(marginX)} ${Outline.svgRound(marginY)}) scale(${s1x} ${s1y}) ` +\\n          `translate(${Outline.svgRound(-marginX)} ${Outline.svgRound(-marginY)})`,\\n      },\\n    };\\n  }\\n\\n  getPathResizedSVGProperties([newX, newY, newWidth, newHeight]) {\\n    const [marginX, marginY] = this.#getMarginComponents();\\n    const bbox = this.#bbox;\\n    const [x, y, width, height] = bbox;\\n\\n    bbox[0] = newX;\\n    bbox[1] = newY;\\n    bbox[2] = newWidth;\\n    bbox[3] = newHeight;\\n\\n    if (\\n      Math.abs(width - marginX) \u003C= Outline.PRECISION ||\\n      Math.abs(height - marginY) \u003C= Outline.PRECISION\\n    ) {\\n      \u002F\u002F Center the path in the new bounding box.\\n      const tx = newX + newWidth \u002F 2 - (x + width \u002F 2);\\n      const ty = newY + newHeight \u002F 2 - (y + height \u002F 2);\\n      for (const { line, points } of this.#lines) {\\n        Outline._translate(line, tx, ty, line);\\n        Outline._translate(points, tx, ty, points);\\n      }\\n      return {\\n        root: {\\n          viewBox: this.viewBox,\\n        },\\n        path: {\\n          \\\"transform-origin\\\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\\n          transform: this.rotationTransform || null,\\n          d: this.toSVGPath(),\\n        },\\n      };\\n    }\\n\\n    \u002F\u002F We compute the following transform:\\n    \u002F\u002F  1. Translate the path to the origin (-(x + marginX), -(y + marginY)).\\n    \u002F\u002F  2. Scale the path to the new size:\\n    \u002F\u002F   ((newWidth - 2*marginX) \u002F (bbox.width - 2*marginX),\\n    \u002F\u002F   (newHeight - 2*marginY) \u002F (bbox.height - 2*marginY)).\\n    \u002F\u002F  3. Translate the path back to its new position\\n    \u002F\u002F     (newX + marginX,y newY + marginY).\\n\\n    const s1x = (newWidth - 2 * marginX) \u002F (width - 2 * marginX);\\n    const s1y = (newHeight - 2 * marginY) \u002F (height - 2 * marginY);\\n    const tx = -s1x * (x + marginX) + newX + marginX;\\n    const ty = -s1y * (y + marginY) + newY + marginY;\\n\\n    if (s1x !== 1 || s1y !== 1 || tx !== 0 || ty !== 0) {\\n      for (const { line, points } of this.#lines) {\\n        Outline._rescale(line, tx, ty, s1x, s1y, line);\\n        Outline._rescale(points, tx, ty, s1x, s1y, points);\\n      }\\n    }\\n\\n    return {\\n      root: {\\n        viewBox: this.viewBox,\\n      },\\n      path: {\\n        \\\"transform-origin\\\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\\n        transform: this.rotationTransform || null,\\n        d: this.toSVGPath(),\\n      },\\n    };\\n  }\\n\\n  getPathTranslatedSVGProperties([newX, newY], parentDimensions) {\\n    const [newParentWidth, newParentHeight] = parentDimensions;\\n    const bbox = this.#bbox;\\n    const tx = newX - bbox[0];\\n    const ty = newY - bbox[1];\\n\\n    if (\\n      this.#parentWidth === newParentWidth &&\\n      this.#parentHeight === newParentHeight\\n    ) {\\n      \u002F\u002F We don't change the parent dimensions so it's a simple translation.\\n      for (const { line, points } of this.#lines) {\\n        Outline._translate(line, tx, ty, line);\\n        Outline._translate(points, tx, ty, points);\\n      }\\n    } else {\\n      const sx = this.#parentWidth \u002F newParentWidth;\\n      const sy = this.#parentHeight \u002F newParentHeight;\\n      this.#parentWidth = newParentWidth;\\n      this.#parentHeight = newParentHeight;\\n\\n      for (const { line, points } of this.#lines) {\\n        Outline._rescale(line, tx, ty, sx, sy, line);\\n        Outline._rescale(points, tx, ty, sx, sy, points);\\n      }\\n      bbox[2] *= sx;\\n      bbox[3] *= sy;\\n    }\\n    bbox[0] = newX;\\n    bbox[1] = newY;\\n\\n    return {\\n      root: {\\n        viewBox: this.viewBox,\\n      },\\n      path: {\\n        d: this.toSVGPath(),\\n        \\\"transform-origin\\\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\\n      },\\n    };\\n  }\\n\\n  get defaultSVGProperties() {\\n    const bbox = this.#bbox;\\n    return {\\n      root: {\\n        viewBox: this.viewBox,\\n      },\\n      rootClass: {\\n        draw: true,\\n      },\\n      path: {\\n        d: this.toSVGPath(),\\n        \\\"transform-origin\\\": `${Outline.svgRound(bbox[0])} ${Outline.svgRound(bbox[1])}`,\\n        transform: this.rotationTransform || null,\\n      },\\n      bbox,\\n    };\\n  }\\n}\\n\\nexport { InkDrawOutline, InkDrawOutliner };\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  AnnotationEditorParamsType,\\n  AnnotationEditorType,\\n  shadow,\\n  Util,\\n} from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport { DrawingEditor, DrawingOptions } from \\\".\u002Fdraw.js\\\";\\nimport { InkDrawOutline, InkDrawOutliner } from \\\".\u002Fdrawers\u002Finkdraw.js\\\";\\nimport { AnnotationEditor } from \\\".\u002Feditor.js\\\";\\nimport { InkAnnotationElement } from \\\"..\u002Fannotation_layer.js\\\";\\n\\nclass InkDrawingOptions extends DrawingOptions {\\n  constructor(viewerParameters) {\\n    super();\\n    this._viewParameters = viewerParameters;\\n\\n    super.updateProperties({\\n      fill: \\\"none\\\",\\n      stroke: AnnotationEditor._defaultLineColor,\\n      \\\"stroke-opacity\\\": 1,\\n      \\\"stroke-width\\\": 1,\\n      \\\"stroke-linecap\\\": \\\"round\\\",\\n      \\\"stroke-linejoin\\\": \\\"round\\\",\\n      \\\"stroke-miterlimit\\\": 10,\\n    });\\n  }\\n\\n  updateSVGProperty(name, value) {\\n    if (name === \\\"stroke-width\\\") {\\n      value ??= this[\\\"stroke-width\\\"];\\n      value *= this._viewParameters.realScale;\\n    }\\n    super.updateSVGProperty(name, value);\\n  }\\n\\n  clone() {\\n    const clone = new InkDrawingOptions(this._viewParameters);\\n    clone.updateAll(this);\\n    return clone;\\n  }\\n}\\n\\n\u002F**\\n * Basic draw editor in order to generate an Ink annotation.\\n *\u002F\\nclass InkEditor extends DrawingEditor {\\n  static _type = \\\"ink\\\";\\n\\n  static _editorType = AnnotationEditorType.INK;\\n\\n  static _defaultDrawingOptions = null;\\n\\n  constructor(params) {\\n    super({ ...params, name: \\\"inkEditor\\\" });\\n    this._willKeepAspectRatio = true;\\n    this.defaultL10nId = \\\"pdfjs-editor-ink-editor\\\";\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static initialize(l10n, uiManager) {\\n    AnnotationEditor.initialize(l10n, uiManager);\\n    this._defaultDrawingOptions = new InkDrawingOptions(\\n      uiManager.viewParameters\\n    );\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static getDefaultDrawingOptions(options) {\\n    const clone = this._defaultDrawingOptions.clone();\\n    clone.updateProperties(options);\\n    return clone;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static get supportMultipleDrawings() {\\n    return true;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static get typesMap() {\\n    return shadow(\\n      this,\\n      \\\"typesMap\\\",\\n      new Map([\\n        [AnnotationEditorParamsType.INK_THICKNESS, \\\"stroke-width\\\"],\\n        [AnnotationEditorParamsType.INK_COLOR, \\\"stroke\\\"],\\n        [AnnotationEditorParamsType.INK_OPACITY, \\\"stroke-opacity\\\"],\\n      ])\\n    );\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static createDrawerInstance(x, y, parentWidth, parentHeight, rotation) {\\n    return new InkDrawOutliner(\\n      x,\\n      y,\\n      parentWidth,\\n      parentHeight,\\n      rotation,\\n      this._defaultDrawingOptions[\\\"stroke-width\\\"]\\n    );\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static deserializeDraw(\\n    pageX,\\n    pageY,\\n    pageWidth,\\n    pageHeight,\\n    innerMargin,\\n    data\\n  ) {\\n    return InkDrawOutline.deserialize(\\n      pageX,\\n      pageY,\\n      pageWidth,\\n      pageHeight,\\n      innerMargin,\\n      data\\n    );\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static async deserialize(data, parent, uiManager) {\\n    let initialData = null;\\n    if (data instanceof InkAnnotationElement) {\\n      const {\\n        data: {\\n          inkLists,\\n          rect,\\n          rotation,\\n          id,\\n          color,\\n          opacity,\\n          borderStyle: { rawWidth: thickness },\\n          popupRef,\\n        },\\n        parent: {\\n          page: { pageNumber },\\n        },\\n      } = data;\\n      initialData = data = {\\n        annotationType: AnnotationEditorType.INK,\\n        color: Array.from(color),\\n        thickness,\\n        opacity,\\n        paths: { points: inkLists },\\n        boxes: null,\\n        pageIndex: pageNumber - 1,\\n        rect: rect.slice(0),\\n        rotation,\\n        id,\\n        deleted: false,\\n        popupRef,\\n      };\\n    }\\n\\n    const editor = await super.deserialize(data, parent, uiManager);\\n    editor.annotationElementId = data.id || null;\\n    editor._initialData = initialData;\\n\\n    return editor;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  onScaleChanging() {\\n    if (!this.parent) {\\n      return;\\n    }\\n    super.onScaleChanging();\\n    const { _drawId, _drawingOptions, parent } = this;\\n    _drawingOptions.updateSVGProperty(\\\"stroke-width\\\");\\n    parent.drawLayer.updateProperties(\\n      _drawId,\\n      _drawingOptions.toSVGProperties()\\n    );\\n  }\\n\\n  static onScaleChangingWhenDrawing() {\\n    const parent = this._currentParent;\\n    if (!parent) {\\n      return;\\n    }\\n    super.onScaleChangingWhenDrawing();\\n    this._defaultDrawingOptions.updateSVGProperty(\\\"stroke-width\\\");\\n    parent.drawLayer.updateProperties(\\n      this._currentDrawId,\\n      this._defaultDrawingOptions.toSVGProperties()\\n    );\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  createDrawingOptions({ color, thickness, opacity }) {\\n    this._drawingOptions = InkEditor.getDefaultDrawingOptions({\\n      stroke: Util.makeHexColor(...color),\\n      \\\"stroke-width\\\": thickness,\\n      \\\"stroke-opacity\\\": opacity,\\n    });\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  serialize(isForCopying = false) {\\n    if (this.isEmpty()) {\\n      return null;\\n    }\\n\\n    if (this.deleted) {\\n      return this.serializeDeleted();\\n    }\\n\\n    const { lines, points, rect } = this.serializeDraw(isForCopying);\\n    const {\\n      _drawingOptions: {\\n        stroke,\\n        \\\"stroke-opacity\\\": opacity,\\n        \\\"stroke-width\\\": thickness,\\n      },\\n    } = this;\\n    const serialized = {\\n      annotationType: AnnotationEditorType.INK,\\n      color: AnnotationEditor._colorManager.convert(stroke),\\n      opacity,\\n      thickness,\\n      paths: {\\n        lines,\\n        points,\\n      },\\n      pageIndex: this.pageIndex,\\n      rect,\\n      rotation: this.rotation,\\n      structTreeParentId: this._structTreeParentId,\\n    };\\n\\n    if (isForCopying) {\\n      serialized.isCopy = true;\\n      return serialized;\\n    }\\n\\n    if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\\n      return null;\\n    }\\n\\n    serialized.id = this.annotationElementId;\\n    return serialized;\\n  }\\n\\n  #hasElementChanged(serialized) {\\n    const { color, thickness, opacity, pageIndex } = this._initialData;\\n    return (\\n      this._hasBeenMoved ||\\n      this._hasBeenResized ||\\n      serialized.color.some((c, i) => c !== color[i]) ||\\n      serialized.thickness !== thickness ||\\n      serialized.opacity !== opacity ||\\n      serialized.pageIndex !== pageIndex\\n    );\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  renderAnnotationElement(annotation) {\\n    const { points, rect } = this.serializeDraw(\u002F* isForCopying = *\u002F false);\\n    annotation.updateEdited({\\n      rect,\\n      thickness: this._drawingOptions[\\\"stroke-width\\\"],\\n      points,\\n    });\\n\\n    return null;\\n  }\\n}\\n\\nexport { InkDrawingOptions, InkEditor };\\n\",\"\u002F* Copyright 2024 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { InkDrawOutline } from \\\".\u002Finkdraw.js\\\";\\n\\nclass ContourDrawOutline extends InkDrawOutline {\\n  toSVGPath() {\\n    let path = super.toSVGPath();\\n    if (!path.endsWith(\\\"Z\\\")) {\\n      path += \\\"Z\\\";\\n    }\\n    return path;\\n  }\\n}\\n\\nexport { ContourDrawOutline };\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { fromBase64Util, toBase64Util, warn } from \\\"..\u002F..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport { ContourDrawOutline } from \\\".\u002Fcontour.js\\\";\\nimport { InkDrawOutline } from \\\".\u002Finkdraw.js\\\";\\nimport { Outline } from \\\".\u002Foutline.js\\\";\\n\\nconst BASE_HEADER_LENGTH = 8;\\nconst POINTS_PROPERTIES_NUMBER = 3;\\n\\n\u002F**\\n * Basic text editor in order to create a Signature annotation.\\n *\u002F\\nclass SignatureExtractor {\\n  static #PARAMETERS = {\\n    maxDim: 512,\\n    sigmaSFactor: 0.02,\\n    sigmaR: 25,\\n    kernelSize: 16,\\n  };\\n\\n  static #neighborIndexToId(i0, j0, i, j) {\\n    \u002F*\\n      The idea is to map the neighbors of a pixel into a unique id.\\n        3 2 1\\n        4 X 0\\n        5 6 7\\n    *\u002F\\n\\n    i -= i0;\\n    j -= j0;\\n\\n    if (i === 0) {\\n      return j > 0 ? 0 : 4;\\n    }\\n\\n    if (i === 1) {\\n      return j + 6;\\n    }\\n\\n    return 2 - j;\\n  }\\n\\n  static #neighborIdToIndex = new Int32Array([\\n    0, 1, -1, 1, -1, 0, -1, -1, 0, -1, 1, -1, 1, 0, 1, 1,\\n  ]);\\n\\n  static #clockwiseNonZero(buf, width, i0, j0, i, j, offset) {\\n    const id = this.#neighborIndexToId(i0, j0, i, j);\\n    for (let k = 0; k \u003C 8; k++) {\\n      const kk = (-k + id - offset + 16) % 8;\\n      const shiftI = this.#neighborIdToIndex[2 * kk];\\n      const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\\n      if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\\n        return kk;\\n      }\\n    }\\n    return -1;\\n  }\\n\\n  static #counterClockwiseNonZero(buf, width, i0, j0, i, j, offset) {\\n    const id = this.#neighborIndexToId(i0, j0, i, j);\\n    for (let k = 0; k \u003C 8; k++) {\\n      const kk = (k + id + offset + 16) % 8;\\n      const shiftI = this.#neighborIdToIndex[2 * kk];\\n      const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\\n      if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\\n        return kk;\\n      }\\n    }\\n    return -1;\\n  }\\n\\n  static #findContours(buf, width, height, threshold) {\\n    \u002F\u002F Based on the Suzuki's algorithm:\\n    \u002F\u002F  https:\u002F\u002Fweb.archive.org\u002Fweb\u002F20231213161741\u002Fhttps:\u002F\u002Fwww.nevis.columbia.edu\u002F~vgenty\u002Fpublic\u002Fsuzuki_et_al.pdf\\n\\n    const N = buf.length;\\n    const types = new Int32Array(N);\\n    for (let i = 0; i \u003C N; i++) {\\n      types[i] = buf[i] \u003C= threshold ? 1 : 0;\\n    }\\n\\n    for (let i = 1; i \u003C height - 1; i++) {\\n      types[i * width] = types[i * width + width - 1] = 0;\\n    }\\n    for (let i = 0; i \u003C width; i++) {\\n      types[i] = types[width * height - 1 - i] = 0;\\n    }\\n\\n    let nbd = 1;\\n    let lnbd;\\n    const contours = [];\\n\\n    for (let i = 1; i \u003C height - 1; i++) {\\n      lnbd = 1;\\n      for (let j = 1; j \u003C width - 1; j++) {\\n        const ij = i * width + j;\\n        const pix = types[ij];\\n        if (pix === 0) {\\n          continue;\\n        }\\n\\n        let i2 = i;\\n        let j2 = j;\\n\\n        if (pix === 1 && types[ij - 1] === 0) {\\n          \u002F\u002F Outer border.\\n          nbd += 1;\\n          j2 -= 1;\\n        } else if (pix >= 1 && types[ij + 1] === 0) {\\n          \u002F\u002F Hole border.\\n          nbd += 1;\\n          j2 += 1;\\n          if (pix > 1) {\\n            lnbd = pix;\\n          }\\n        } else {\\n          if (pix !== 1) {\\n            lnbd = Math.abs(pix);\\n          }\\n          continue;\\n        }\\n\\n        const points = [j, i];\\n        const isHole = j2 === j + 1;\\n        const contour = {\\n          isHole,\\n          points,\\n          id: nbd,\\n          parent: 0,\\n        };\\n        contours.push(contour);\\n\\n        let contour0;\\n        for (const c of contours) {\\n          if (c.id === lnbd) {\\n            contour0 = c;\\n            break;\\n          }\\n        }\\n\\n        if (!contour0) {\\n          contour.parent = isHole ? lnbd : 0;\\n        } else if (contour0.isHole) {\\n          contour.parent = isHole ? contour0.parent : lnbd;\\n        } else {\\n          contour.parent = isHole ? lnbd : contour0.parent;\\n        }\\n\\n        const k = this.#clockwiseNonZero(types, width, i, j, i2, j2, 0);\\n        if (k === -1) {\\n          types[ij] = -nbd;\\n          if (types[ij] !== 1) {\\n            lnbd = Math.abs(types[ij]);\\n          }\\n          continue;\\n        }\\n\\n        let shiftI = this.#neighborIdToIndex[2 * k];\\n        let shiftJ = this.#neighborIdToIndex[2 * k + 1];\\n        const i1 = i + shiftI;\\n        const j1 = j + shiftJ;\\n        i2 = i1;\\n        j2 = j1;\\n        let i3 = i;\\n        let j3 = j;\\n\\n        while (true) {\\n          const kk = this.#counterClockwiseNonZero(\\n            types,\\n            width,\\n            i3,\\n            j3,\\n            i2,\\n            j2,\\n            1\\n          );\\n          shiftI = this.#neighborIdToIndex[2 * kk];\\n          shiftJ = this.#neighborIdToIndex[2 * kk + 1];\\n          const i4 = i3 + shiftI;\\n          const j4 = j3 + shiftJ;\\n          points.push(j4, i4);\\n          const ij3 = i3 * width + j3;\\n          if (types[ij3 + 1] === 0) {\\n            types[ij3] = -nbd;\\n          } else if (types[ij3] === 1) {\\n            types[ij3] = nbd;\\n          }\\n\\n          if (i4 === i && j4 === j && i3 === i1 && j3 === j1) {\\n            if (types[ij] !== 1) {\\n              lnbd = Math.abs(types[ij]);\\n            }\\n            break;\\n          } else {\\n            i2 = i3;\\n            j2 = j3;\\n            i3 = i4;\\n            j3 = j4;\\n          }\\n        }\\n      }\\n    }\\n    return contours;\\n  }\\n\\n  static #douglasPeuckerHelper(points, start, end, output) {\\n    \u002F\u002F Based on the Douglas-Peucker algorithm:\\n    \u002F\u002F  https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FRamer%E2%80%93Douglas%E2%80%93Peucker_algorithm\\n    if (end - start \u003C= 4) {\\n      for (let i = start; i \u003C end - 2; i += 2) {\\n        output.push(points[i], points[i + 1]);\\n      }\\n      return;\\n    }\\n\\n    const ax = points[start];\\n    const ay = points[start + 1];\\n    const abx = points[end - 4] - ax;\\n    const aby = points[end - 3] - ay;\\n    const dist = Math.hypot(abx, aby);\\n    const nabx = abx \u002F dist;\\n    const naby = aby \u002F dist;\\n    const aa = nabx * ay - naby * ax;\\n\\n    \u002F\u002F Guessing the epsilon value.\\n    \u002F\u002F See \\\"A novel framework for making dominant point detection methods\\n    \u002F\u002F non-parametric\\\".\\n    const m = aby \u002F abx;\\n    const invS = 1 \u002F dist;\\n    const phi = Math.atan(m);\\n    const cosPhi = Math.cos(phi);\\n    const sinPhi = Math.sin(phi);\\n    const tmax = invS * (Math.abs(cosPhi) + Math.abs(sinPhi));\\n    const poly = invS * (1 - tmax + tmax ** 2);\\n    const partialPhi = Math.max(\\n      Math.atan(Math.abs(sinPhi + cosPhi) * poly),\\n      Math.atan(Math.abs(sinPhi - cosPhi) * poly)\\n    );\\n\\n    let dmax = 0;\\n    let index = start;\\n    for (let i = start + 2; i \u003C end - 2; i += 2) {\\n      const d = Math.abs(aa - nabx * points[i + 1] + naby * points[i]);\\n      if (d > dmax) {\\n        index = i;\\n        dmax = d;\\n      }\\n    }\\n\\n    if (dmax > (dist * partialPhi) ** 2) {\\n      this.#douglasPeuckerHelper(points, start, index + 2, output);\\n      this.#douglasPeuckerHelper(points, index, end, output);\\n    } else {\\n      output.push(ax, ay);\\n    }\\n  }\\n\\n  static #douglasPeucker(points) {\\n    const output = [];\\n    const len = points.length;\\n    this.#douglasPeuckerHelper(points, 0, len, output);\\n    output.push(points[len - 2], points[len - 1]);\\n    return output.length \u003C= 4 ? null : output;\\n  }\\n\\n  static #bilateralFilter(buf, width, height, sigmaS, sigmaR, kernelSize) {\\n    \u002F\u002F The bilateral filter is a nonlinear filter that does spatial averaging.\\n    \u002F\u002F Its main interest is to preserve edges while removing noise.\\n    \u002F\u002F See https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FBilateral_filter for more details.\\n    \u002F\u002F sigmaS is the standard deviation of the spatial gaussian.\\n    \u002F\u002F sigmaR is the standard deviation of the range (in term of pixel\\n    \u002F\u002F intensity) gaussian.\\n\\n    \u002F\u002F Create a gaussian kernel\\n    const kernel = new Float32Array(kernelSize ** 2);\\n    const sigmaS2 = -2 * sigmaS ** 2;\\n    const halfSize = kernelSize >> 1;\\n\\n    for (let i = 0; i \u003C kernelSize; i++) {\\n      const x = (i - halfSize) ** 2;\\n      for (let j = 0; j \u003C kernelSize; j++) {\\n        kernel[i * kernelSize + j] = Math.exp(\\n          (x + (j - halfSize) ** 2) \u002F sigmaS2\\n        );\\n      }\\n    }\\n\\n    \u002F\u002F Create the range values to be used with the distance between pixels.\\n    \u002F\u002F It's a way faster with a lookup table than computing the exponential.\\n    const rangeValues = new Float32Array(256);\\n    const sigmaR2 = -2 * sigmaR ** 2;\\n    for (let i = 0; i \u003C 256; i++) {\\n      rangeValues[i] = Math.exp(i ** 2 \u002F sigmaR2);\\n    }\\n\\n    const N = buf.length;\\n    const out = new Uint8Array(N);\\n\\n    \u002F\u002F We compute the histogram here instead of doing it later: it's slightly\\n    \u002F\u002F faster.\\n    const histogram = new Uint32Array(256);\\n    for (let i = 0; i \u003C height; i++) {\\n      for (let j = 0; j \u003C width; j++) {\\n        const ij = i * width + j;\\n        const center = buf[ij];\\n        let sum = 0;\\n        let norm = 0;\\n\\n        for (let k = 0; k \u003C kernelSize; k++) {\\n          const y = i + k - halfSize;\\n          if (y \u003C 0 || y >= height) {\\n            continue;\\n          }\\n          for (let l = 0; l \u003C kernelSize; l++) {\\n            const x = j + l - halfSize;\\n            if (x \u003C 0 || x >= width) {\\n              continue;\\n            }\\n            const neighbour = buf[y * width + x];\\n            const w =\\n              kernel[k * kernelSize + l] *\\n              rangeValues[Math.abs(neighbour - center)];\\n            sum += neighbour * w;\\n            norm += w;\\n          }\\n        }\\n\\n        const pix = (out[ij] = Math.round(sum \u002F norm));\\n        histogram[pix]++;\\n      }\\n    }\\n\\n    return [out, histogram];\\n  }\\n\\n  static #getHistogram(buf) {\\n    const histogram = new Uint32Array(256);\\n    for (const g of buf) {\\n      histogram[g]++;\\n    }\\n    return histogram;\\n  }\\n\\n  static #toUint8(buf) {\\n    \u002F\u002F We have a RGBA buffer, containing a grayscale image.\\n    \u002F\u002F We want to convert it into a basic G buffer.\\n    \u002F\u002F Also, we want to normalize the values between 0 and 255 in order to\\n    \u002F\u002F increase the contrast.\\n    const N = buf.length;\\n    const out = new Uint8ClampedArray(N >> 2);\\n    let max = -Infinity;\\n    let min = Infinity;\\n    for (let i = 0, ii = out.length; i \u003C ii; i++) {\\n      const A = buf[(i \u003C\u003C 2) + 3];\\n      if (A === 0) {\\n        max = out[i] = 0xff;\\n        continue;\\n      }\\n      const pix = (out[i] = buf[i \u003C\u003C 2]);\\n      if (pix > max) {\\n        max = pix;\\n      }\\n      if (pix \u003C min) {\\n        min = pix;\\n      }\\n    }\\n    const ratio = 255 \u002F (max - min);\\n    for (let i = 0; i \u003C N; i++) {\\n      out[i] = (out[i] - min) * ratio;\\n    }\\n\\n    return out;\\n  }\\n\\n  static #guessThreshold(histogram) {\\n    \u002F\u002F We want to find the threshold that will separate the background from the\\n    \u002F\u002F foreground.\\n    \u002F\u002F We could have used Otsu's method, but unfortunately it doesn't work well\\n    \u002F\u002F when the background has too much shade of greys.\\n    \u002F\u002F So the idea is to find a maximum in the black part of the histogram and\\n    \u002F\u002F figure out the value which will be the first one of the white part.\\n\\n    let i;\\n    let M = -Infinity;\\n    let L = -Infinity;\\n    const min = histogram.findIndex(v => v !== 0);\\n    let pos = min;\\n    let spos = min;\\n    for (i = min; i \u003C 256; i++) {\\n      const v = histogram[i];\\n      if (v > M) {\\n        if (i - pos > L) {\\n          L = i - pos;\\n          spos = i - 1;\\n        }\\n        M = v;\\n        pos = i;\\n      }\\n    }\\n    for (i = spos - 1; i >= 0; i--) {\\n      if (histogram[i] > histogram[i + 1]) {\\n        break;\\n      }\\n    }\\n\\n    return i;\\n  }\\n\\n  static #getGrayPixels(bitmap) {\\n    const originalBitmap = bitmap;\\n    const { width, height } = bitmap;\\n    const { maxDim } = this.#PARAMETERS;\\n    let newWidth = width;\\n    let newHeight = height;\\n\\n    if (width > maxDim || height > maxDim) {\\n      let prevWidth = width;\\n      let prevHeight = height;\\n\\n      let steps = Math.log2(Math.max(width, height) \u002F maxDim);\\n      const isteps = Math.floor(steps);\\n      steps = steps === isteps ? isteps - 1 : isteps;\\n      for (let i = 0; i \u003C steps; i++) {\\n        newWidth = Math.ceil(prevWidth \u002F 2);\\n        newHeight = Math.ceil(prevHeight \u002F 2);\\n\\n        const offscreen = new OffscreenCanvas(newWidth, newHeight);\\n        const ctx = offscreen.getContext(\\\"2d\\\");\\n        ctx.drawImage(\\n          bitmap,\\n          0,\\n          0,\\n          prevWidth,\\n          prevHeight,\\n          0,\\n          0,\\n          newWidth,\\n          newHeight\\n        );\\n        prevWidth = newWidth;\\n        prevHeight = newHeight;\\n\\n        \u002F\u002F Release the resources associated with the bitmap.\\n        if (bitmap !== originalBitmap) {\\n          bitmap.close();\\n        }\\n        bitmap = offscreen.transferToImageBitmap();\\n      }\\n\\n      const ratio = Math.min(maxDim \u002F newWidth, maxDim \u002F newHeight);\\n      newWidth = Math.round(newWidth * ratio);\\n      newHeight = Math.round(newHeight * ratio);\\n    }\\n    const offscreen = new OffscreenCanvas(newWidth, newHeight);\\n    const ctx = offscreen.getContext(\\\"2d\\\", { willReadFrequently: true });\\n    ctx.filter = \\\"grayscale(1)\\\";\\n    ctx.drawImage(\\n      bitmap,\\n      0,\\n      0,\\n      bitmap.width,\\n      bitmap.height,\\n      0,\\n      0,\\n      newWidth,\\n      newHeight\\n    );\\n    const grayImage = ctx.getImageData(0, 0, newWidth, newHeight).data;\\n    const uint8Buf = this.#toUint8(grayImage);\\n\\n    return [uint8Buf, newWidth, newHeight];\\n  }\\n\\n  static extractContoursFromText(\\n    text,\\n    { fontFamily, fontStyle, fontWeight },\\n    pageWidth,\\n    pageHeight,\\n    rotation,\\n    innerMargin\\n  ) {\\n    let canvas = new OffscreenCanvas(1, 1);\\n    let ctx = canvas.getContext(\\\"2d\\\", { alpha: false });\\n    const fontSize = 200;\\n    const font =\\n      (ctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`);\\n    const {\\n      actualBoundingBoxLeft,\\n      actualBoundingBoxRight,\\n      actualBoundingBoxAscent,\\n      actualBoundingBoxDescent,\\n      fontBoundingBoxAscent,\\n      fontBoundingBoxDescent,\\n      width,\\n    } = ctx.measureText(text);\\n\\n    \u002F\u002F We rescale the canvas to make \\\"sure\\\" the text fits.\\n    const SCALE = 1.5;\\n    const canvasWidth = Math.ceil(\\n      Math.max(\\n        Math.abs(actualBoundingBoxLeft) + Math.abs(actualBoundingBoxRight) || 0,\\n        width\\n      ) * SCALE\\n    );\\n    const canvasHeight = Math.ceil(\\n      Math.max(\\n        Math.abs(actualBoundingBoxAscent) +\\n          Math.abs(actualBoundingBoxDescent) || fontSize,\\n        Math.abs(fontBoundingBoxAscent) + Math.abs(fontBoundingBoxDescent) ||\\n          fontSize\\n      ) * SCALE\\n    );\\n    canvas = new OffscreenCanvas(canvasWidth, canvasHeight);\\n    ctx = canvas.getContext(\\\"2d\\\", { alpha: true, willReadFrequently: true });\\n    ctx.font = font;\\n    ctx.filter = \\\"grayscale(1)\\\";\\n    ctx.fillStyle = \\\"white\\\";\\n    ctx.fillRect(0, 0, canvasWidth, canvasHeight);\\n    ctx.fillStyle = \\\"black\\\";\\n    ctx.fillText(\\n      text,\\n      (canvasWidth * (SCALE - 1)) \u002F 2,\\n      (canvasHeight * (3 - SCALE)) \u002F 2\\n    );\\n\\n    const uint8Buf = this.#toUint8(\\n      ctx.getImageData(0, 0, canvasWidth, canvasHeight).data\\n    );\\n    const histogram = this.#getHistogram(uint8Buf);\\n    const threshold = this.#guessThreshold(histogram);\\n\\n    const contourList = this.#findContours(\\n      uint8Buf,\\n      canvasWidth,\\n      canvasHeight,\\n      threshold\\n    );\\n\\n    return this.processDrawnLines({\\n      lines: { curves: contourList, width: canvasWidth, height: canvasHeight },\\n      pageWidth,\\n      pageHeight,\\n      rotation,\\n      innerMargin,\\n      mustSmooth: true,\\n      areContours: true,\\n    });\\n  }\\n\\n  static process(bitmap, pageWidth, pageHeight, rotation, innerMargin) {\\n    const [uint8Buf, width, height] = this.#getGrayPixels(bitmap);\\n    const [buffer, histogram] = this.#bilateralFilter(\\n      uint8Buf,\\n      width,\\n      height,\\n      Math.hypot(width, height) * this.#PARAMETERS.sigmaSFactor,\\n      this.#PARAMETERS.sigmaR,\\n      this.#PARAMETERS.kernelSize\\n    );\\n\\n    const threshold = this.#guessThreshold(histogram);\\n    const contourList = this.#findContours(buffer, width, height, threshold);\\n\\n    return this.processDrawnLines({\\n      lines: { curves: contourList, width, height },\\n      pageWidth,\\n      pageHeight,\\n      rotation,\\n      innerMargin,\\n      mustSmooth: true,\\n      areContours: true,\\n    });\\n  }\\n\\n  static processDrawnLines({\\n    lines,\\n    pageWidth,\\n    pageHeight,\\n    rotation,\\n    innerMargin,\\n    mustSmooth,\\n    areContours,\\n  }) {\\n    if (rotation % 180 !== 0) {\\n      [pageWidth, pageHeight] = [pageHeight, pageWidth];\\n    }\\n\\n    const { curves, width, height } = lines;\\n    const thickness = lines.thickness ?? 0;\\n    const linesAndPoints = [];\\n    const ratio = Math.min(pageWidth \u002F width, pageHeight \u002F height);\\n    const xScale = ratio \u002F pageWidth;\\n    const yScale = ratio \u002F pageHeight;\\n    const newCurves = [];\\n\\n    for (const { points } of curves) {\\n      const reducedPoints = mustSmooth ? this.#douglasPeucker(points) : points;\\n      if (!reducedPoints) {\\n        continue;\\n      }\\n      newCurves.push(reducedPoints);\\n\\n      const len = reducedPoints.length;\\n      const newPoints = new Float32Array(len);\\n      const line = new Float32Array(3 * (len === 2 ? 2 : len - 2));\\n      linesAndPoints.push({ line, points: newPoints });\\n\\n      if (len === 2) {\\n        newPoints[0] = reducedPoints[0] * xScale;\\n        newPoints[1] = reducedPoints[1] * yScale;\\n        line.set([NaN, NaN, NaN, NaN, newPoints[0], newPoints[1]], 0);\\n        continue;\\n      }\\n\\n      let [x1, y1, x2, y2] = reducedPoints;\\n      x1 *= xScale;\\n      y1 *= yScale;\\n      x2 *= xScale;\\n      y2 *= yScale;\\n      newPoints.set([x1, y1, x2, y2], 0);\\n\\n      line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\\n      for (let i = 4; i \u003C len; i += 2) {\\n        const x = (newPoints[i] = reducedPoints[i] * xScale);\\n        const y = (newPoints[i + 1] = reducedPoints[i + 1] * yScale);\\n        line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\\n        [x1, y1, x2, y2] = [x2, y2, x, y];\\n      }\\n    }\\n\\n    if (linesAndPoints.length === 0) {\\n      return null;\\n    }\\n\\n    const outline = areContours\\n      ? new ContourDrawOutline()\\n      : new InkDrawOutline();\\n\\n    outline.build(\\n      linesAndPoints,\\n      pageWidth,\\n      pageHeight,\\n      1,\\n      rotation,\\n      areContours ? 0 : thickness,\\n      innerMargin\\n    );\\n\\n    return { outline, newCurves, areContours, thickness, width, height };\\n  }\\n\\n  static async compressSignature({\\n    outlines,\\n    areContours,\\n    thickness,\\n    width,\\n    height,\\n  }) {\\n    \u002F\u002F We create a single array containing all the outlines.\\n    \u002F\u002F The format is the following:\\n    \u002F\u002F - 4 bytes: data length.\\n    \u002F\u002F - 4 bytes: version.\\n    \u002F\u002F - 4 bytes: width.\\n    \u002F\u002F - 4 bytes: height.\\n    \u002F\u002F - 4 bytes: 0 if it's a contour, 1 if it's an ink.\\n    \u002F\u002F - 4 bytes: thickness.\\n    \u002F\u002F - 4 bytes: number of drawings.\\n    \u002F\u002F - 4 bytes: size of the buffer containing the diff of the coordinates.\\n    \u002F\u002F - 4 bytes: number of points in the first drawing.\\n    \u002F\u002F - 4 bytes: x coordinate of the first point.\\n    \u002F\u002F - 4 bytes: y coordinate of the first point.\\n    \u002F\u002F - 4 bytes: number of points in the second drawing.\\n    \u002F\u002F - 4 bytes: x coordinate of the first point.\\n    \u002F\u002F - 4 bytes: y coordinate of the first point.\\n    \u002F\u002F - ...\\n    \u002F\u002F - The buffer containing the diff of the coordinates.\\n\\n    \u002F\u002F The coordinates are supposed to be positive integers.\\n\\n    \u002F\u002F We also compute the min and max difference between two points.\\n    \u002F\u002F This will help us to determine the type of the buffer (Int8, Int16 or\\n    \u002F\u002F Int32) in order to minimize the amount of data we have.\\n    let minDiff = Infinity;\\n    let maxDiff = -Infinity;\\n    let outlinesLength = 0;\\n    for (const points of outlines) {\\n      outlinesLength += points.length;\\n      for (let i = 2, ii = points.length; i \u003C ii; i++) {\\n        const dx = points[i] - points[i - 2];\\n        minDiff = Math.min(minDiff, dx);\\n        maxDiff = Math.max(maxDiff, dx);\\n      }\\n    }\\n\\n    let bufferType;\\n    if (minDiff >= -128 && maxDiff \u003C= 127) {\\n      bufferType = Int8Array;\\n    } else if (minDiff >= -32768 && maxDiff \u003C= 32767) {\\n      bufferType = Int16Array;\\n    } else {\\n      bufferType = Int32Array;\\n    }\\n\\n    const len = outlines.length;\\n    const headerLength = BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * len;\\n    const header = new Uint32Array(headerLength);\\n\\n    let offset = 0;\\n    header[offset++] =\\n      headerLength * Uint32Array.BYTES_PER_ELEMENT +\\n      (outlinesLength - 2 * len) * bufferType.BYTES_PER_ELEMENT;\\n    header[offset++] = 0; \u002F\u002F Version.\\n    header[offset++] = width;\\n    header[offset++] = height;\\n    header[offset++] = areContours ? 0 : 1;\\n    header[offset++] = Math.max(0, Math.floor(thickness ?? 0));\\n    header[offset++] = len;\\n    header[offset++] = bufferType.BYTES_PER_ELEMENT;\\n    for (const points of outlines) {\\n      header[offset++] = points.length - 2;\\n      header[offset++] = points[0];\\n      header[offset++] = points[1];\\n    }\\n\\n    const cs = new CompressionStream(\\\"deflate-raw\\\");\\n    const writer = cs.writable.getWriter();\\n    await writer.ready;\\n\\n    writer.write(header);\\n    const BufferCtor = bufferType.prototype.constructor;\\n    for (const points of outlines) {\\n      const diffs = new BufferCtor(points.length - 2);\\n      for (let i = 2, ii = points.length; i \u003C ii; i++) {\\n        diffs[i - 2] = points[i] - points[i - 2];\\n      }\\n      writer.write(diffs);\\n    }\\n\\n    writer.close();\\n\\n    const buf = await new Response(cs.readable).arrayBuffer();\\n    const bytes = new Uint8Array(buf);\\n\\n    return toBase64Util(bytes);\\n  }\\n\\n  static async decompressSignature(signatureData) {\\n    try {\\n      const bytes = fromBase64Util(signatureData);\\n      const { readable, writable } = new DecompressionStream(\\\"deflate-raw\\\");\\n      const writer = writable.getWriter();\\n      await writer.ready;\\n\\n      \u002F\u002F We can't await writer.write() because it'll block until the reader\\n      \u002F\u002F starts which happens few lines below.\\n      writer\\n        .write(bytes)\\n        .then(async () => {\\n          await writer.ready;\\n          await writer.close();\\n        })\\n        .catch(() => {});\\n\\n      let data = null;\\n      let offset = 0;\\n      for await (const chunk of readable) {\\n        data ||= new Uint8Array(new Uint32Array(chunk.buffer, 0, 4)[0]);\\n        data.set(chunk, offset);\\n        offset += chunk.length;\\n      }\\n\\n      \u002F\u002F We take a bit too much data for the header but it's fine.\\n      const header = new Uint32Array(data.buffer, 0, data.length >> 2);\\n      const version = header[1];\\n      if (version !== 0) {\\n        throw new Error(`Invalid version: ${version}`);\\n      }\\n      const width = header[2];\\n      const height = header[3];\\n      const areContours = header[4] === 0;\\n      const thickness = header[5];\\n      const numberOfDrawings = header[6];\\n      const bufferType = header[7];\\n      const outlines = [];\\n      const diffsOffset =\\n        (BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * numberOfDrawings) *\\n        Uint32Array.BYTES_PER_ELEMENT;\\n      let diffs;\\n\\n      switch (bufferType) {\\n        case Int8Array.BYTES_PER_ELEMENT:\\n          diffs = new Int8Array(data.buffer, diffsOffset);\\n          break;\\n        case Int16Array.BYTES_PER_ELEMENT:\\n          diffs = new Int16Array(data.buffer, diffsOffset);\\n          break;\\n        case Int32Array.BYTES_PER_ELEMENT:\\n          diffs = new Int32Array(data.buffer, diffsOffset);\\n          break;\\n      }\\n\\n      offset = 0;\\n      for (let i = 0; i \u003C numberOfDrawings; i++) {\\n        const len = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH];\\n        const points = new Float32Array(len + 2);\\n        outlines.push(points);\\n\\n        for (let j = 0; j \u003C POINTS_PROPERTIES_NUMBER - 1; j++) {\\n          points[j] =\\n            header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH + j + 1];\\n        }\\n        for (let j = 0; j \u003C len; j++) {\\n          points[j + 2] = points[j] + diffs[offset++];\\n        }\\n      }\\n\\n      return {\\n        areContours,\\n        thickness,\\n        outlines,\\n        width,\\n        height,\\n      };\\n    } catch (e) {\\n      warn(`decompressSignature: ${e}`);\\n      return null;\\n    }\\n  }\\n}\\n\\nexport { SignatureExtractor };\\n\",\"\u002F* Copyright 2025 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { AnnotationEditorType, shadow } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport { DrawingEditor, DrawingOptions } from \\\".\u002Fdraw.js\\\";\\nimport { AnnotationEditor } from \\\".\u002Feditor.js\\\";\\nimport { ContourDrawOutline } from \\\".\u002Fdrawers\u002Fcontour.js\\\";\\nimport { InkDrawingOptions } from \\\".\u002Fink.js\\\";\\nimport { InkDrawOutline } from \\\".\u002Fdrawers\u002Finkdraw.js\\\";\\nimport { SignatureExtractor } from \\\".\u002Fdrawers\u002Fsignaturedraw.js\\\";\\n\\nclass SignatureOptions extends DrawingOptions {\\n  constructor() {\\n    super();\\n\\n    super.updateProperties({\\n      fill: AnnotationEditor._defaultLineColor,\\n      \\\"stroke-width\\\": 0,\\n    });\\n  }\\n\\n  clone() {\\n    const clone = new SignatureOptions();\\n    clone.updateAll(this);\\n    return clone;\\n  }\\n}\\n\\nclass DrawnSignatureOptions extends InkDrawingOptions {\\n  constructor(viewerParameters) {\\n    super(viewerParameters);\\n\\n    super.updateProperties({\\n      stroke: AnnotationEditor._defaultLineColor,\\n      \\\"stroke-width\\\": 1,\\n    });\\n  }\\n\\n  clone() {\\n    const clone = new DrawnSignatureOptions(this._viewParameters);\\n    clone.updateAll(this);\\n    return clone;\\n  }\\n}\\n\\n\u002F**\\n * Basic editor in order to generate an Stamp annotation annotation containing\\n * a signature drawing.\\n *\u002F\\nclass SignatureEditor extends DrawingEditor {\\n  #isExtracted = false;\\n\\n  #description = null;\\n\\n  #signatureData = null;\\n\\n  #signatureUUID = null;\\n\\n  static _type = \\\"signature\\\";\\n\\n  static _editorType = AnnotationEditorType.SIGNATURE;\\n\\n  static _defaultDrawingOptions = null;\\n\\n  constructor(params) {\\n    super({ ...params, mustBeCommitted: true, name: \\\"signatureEditor\\\" });\\n    this._willKeepAspectRatio = true;\\n    this.#signatureData = params.signatureData || null;\\n    this.#description = null;\\n    this.defaultL10nId = \\\"pdfjs-editor-signature-editor1\\\";\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static initialize(l10n, uiManager) {\\n    AnnotationEditor.initialize(l10n, uiManager);\\n\\n    this._defaultDrawingOptions = new SignatureOptions();\\n    this._defaultDrawnSignatureOptions = new DrawnSignatureOptions(\\n      uiManager.viewParameters\\n    );\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static getDefaultDrawingOptions(options) {\\n    const clone = this._defaultDrawingOptions.clone();\\n    clone.updateProperties(options);\\n    return clone;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static get supportMultipleDrawings() {\\n    return false;\\n  }\\n\\n  static get typesMap() {\\n    return shadow(this, \\\"typesMap\\\", new Map());\\n  }\\n\\n  static get isDrawer() {\\n    return false;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  get telemetryFinalData() {\\n    return {\\n      type: \\\"signature\\\",\\n      hasDescription: !!this.#description,\\n    };\\n  }\\n\\n  static computeTelemetryFinalData(data) {\\n    const hasDescriptionStats = data.get(\\\"hasDescription\\\");\\n    return {\\n      hasAltText: hasDescriptionStats.get(true) ?? 0,\\n      hasNoAltText: hasDescriptionStats.get(false) ?? 0,\\n    };\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  get isResizable() {\\n    return true;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  onScaleChanging() {\\n    if (this._drawId === null) {\\n      return;\\n    }\\n    super.onScaleChanging();\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  render() {\\n    if (this.div) {\\n      return this.div;\\n    }\\n\\n    let baseX, baseY;\\n    const { _isCopy } = this;\\n    if (_isCopy) {\\n      \u002F\u002F No need to adjust the position when rendering in DrawingEditor.\\n      this._isCopy = false;\\n      baseX = this.x;\\n      baseY = this.y;\\n    }\\n\\n    super.render();\\n\\n    if (this._drawId === null) {\\n      if (this.#signatureData) {\\n        const {\\n          lines,\\n          mustSmooth,\\n          areContours,\\n          description,\\n          uuid,\\n          heightInPage,\\n        } = this.#signatureData;\\n        const {\\n          rawDims: { pageWidth, pageHeight },\\n          rotation,\\n        } = this.parent.viewport;\\n        const outline = SignatureExtractor.processDrawnLines({\\n          lines,\\n          pageWidth,\\n          pageHeight,\\n          rotation,\\n          innerMargin: SignatureEditor._INNER_MARGIN,\\n          mustSmooth,\\n          areContours,\\n        });\\n        this.addSignature(outline, heightInPage, description, uuid);\\n      } else {\\n        \u002F\u002F Avoid Firefox crashing (with a local build) because the description\\n        \u002F\u002F parameter is missing.\\n        this.div.setAttribute(\\n          \\\"data-l10n-args\\\",\\n          JSON.stringify({ description: \\\"\\\" })\\n        );\\n        this.div.hidden = true;\\n        this._uiManager.getSignature(this);\\n      }\\n    }\\n\\n    if (_isCopy) {\\n      this._isCopy = true;\\n      this._moveAfterPaste(baseX, baseY);\\n    }\\n\\n    return this.div;\\n  }\\n\\n  setUuid(uuid) {\\n    this.#signatureUUID = uuid;\\n    this.addEditToolbar();\\n  }\\n\\n  getUuid() {\\n    return this.#signatureUUID;\\n  }\\n\\n  get description() {\\n    return this.#description;\\n  }\\n\\n  set description(description) {\\n    this.#description = description;\\n    super.addEditToolbar().then(toolbar => {\\n      toolbar?.updateEditSignatureButton(description);\\n    });\\n  }\\n\\n  getSignaturePreview() {\\n    const { newCurves, areContours, thickness, width, height } =\\n      this.#signatureData;\\n    const maxDim = Math.max(width, height);\\n    const outlineData = SignatureExtractor.processDrawnLines({\\n      lines: {\\n        curves: newCurves.map(points => ({ points })),\\n        thickness,\\n        width,\\n        height,\\n      },\\n      pageWidth: maxDim,\\n      pageHeight: maxDim,\\n      rotation: 0,\\n      innerMargin: 0,\\n      mustSmooth: false,\\n      areContours,\\n    });\\n    return { areContours, outline: outlineData.outline };\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  async addEditToolbar() {\\n    const toolbar = await super.addEditToolbar();\\n    if (!toolbar) {\\n      return null;\\n    }\\n    if (this._uiManager.signatureManager && this.#description !== null) {\\n      await toolbar.addEditSignatureButton(\\n        this._uiManager.signatureManager,\\n        this.#signatureUUID,\\n        this.#description\\n      );\\n      toolbar.show();\\n    }\\n    return toolbar;\\n  }\\n\\n  addSignature(data, heightInPage, description, uuid) {\\n    const { x: savedX, y: savedY } = this;\\n    const { outline } = (this.#signatureData = data);\\n    this.#isExtracted = outline instanceof ContourDrawOutline;\\n    this.#description = description;\\n    this.div.setAttribute(\\\"data-l10n-args\\\", JSON.stringify({ description }));\\n    let drawingOptions;\\n    if (this.#isExtracted) {\\n      drawingOptions = SignatureEditor.getDefaultDrawingOptions();\\n    } else {\\n      drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\\n      drawingOptions.updateProperties({ \\\"stroke-width\\\": outline.thickness });\\n    }\\n    this._addOutlines({\\n      drawOutlines: outline,\\n      drawingOptions,\\n    });\\n    const [parentWidth, parentHeight] = this.parentDimensions;\\n    const [, pageHeight] = this.pageDimensions;\\n    let newHeight = heightInPage \u002F pageHeight;\\n    \u002F\u002F Ensure the signature doesn't exceed the page height.\\n    \u002F\u002F If the signature is too big, we scale it down to 50% of the page height.\\n    newHeight = newHeight >= 1 ? 0.5 : newHeight;\\n\\n    this.width *= newHeight \u002F this.height;\\n    if (this.width >= 1) {\\n      newHeight *= 0.9 \u002F this.width;\\n      this.width = 0.9;\\n    }\\n\\n    this.height = newHeight;\\n    this.setDims(parentWidth * this.width, parentHeight * this.height);\\n    this.x = savedX;\\n    this.y = savedY;\\n    this.center();\\n\\n    this._onResized();\\n    this.onScaleChanging();\\n    this.rotate();\\n    this._uiManager.addToAnnotationStorage(this);\\n    this.setUuid(uuid);\\n\\n    this._reportTelemetry({\\n      action: \\\"pdfjs.signature.inserted\\\",\\n      data: {\\n        hasBeenSaved: !!uuid,\\n        hasDescription: !!description,\\n      },\\n    });\\n\\n    this.div.hidden = false;\\n  }\\n\\n  getFromImage(bitmap) {\\n    const {\\n      rawDims: { pageWidth, pageHeight },\\n      rotation,\\n    } = this.parent.viewport;\\n    return SignatureExtractor.process(\\n      bitmap,\\n      pageWidth,\\n      pageHeight,\\n      rotation,\\n      SignatureEditor._INNER_MARGIN\\n    );\\n  }\\n\\n  getFromText(text, fontInfo) {\\n    const {\\n      rawDims: { pageWidth, pageHeight },\\n      rotation,\\n    } = this.parent.viewport;\\n    return SignatureExtractor.extractContoursFromText(\\n      text,\\n      fontInfo,\\n      pageWidth,\\n      pageHeight,\\n      rotation,\\n      SignatureEditor._INNER_MARGIN\\n    );\\n  }\\n\\n  getDrawnSignature(curves) {\\n    const {\\n      rawDims: { pageWidth, pageHeight },\\n      rotation,\\n    } = this.parent.viewport;\\n    return SignatureExtractor.processDrawnLines({\\n      lines: curves,\\n      pageWidth,\\n      pageHeight,\\n      rotation,\\n      innerMargin: SignatureEditor._INNER_MARGIN,\\n      mustSmooth: false,\\n      areContours: false,\\n    });\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  createDrawingOptions({ areContours, thickness }) {\\n    if (areContours) {\\n      this._drawingOptions = SignatureEditor.getDefaultDrawingOptions();\\n    } else {\\n      this._drawingOptions =\\n        SignatureEditor._defaultDrawnSignatureOptions.clone();\\n      this._drawingOptions.updateProperties({ \\\"stroke-width\\\": thickness });\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  serialize(isForCopying = false) {\\n    if (this.isEmpty()) {\\n      return null;\\n    }\\n\\n    const { lines, points, rect } = this.serializeDraw(isForCopying);\\n    const {\\n      _drawingOptions: { \\\"stroke-width\\\": thickness },\\n    } = this;\\n    const serialized = {\\n      annotationType: AnnotationEditorType.SIGNATURE,\\n      isSignature: true,\\n      areContours: this.#isExtracted,\\n      color: [0, 0, 0],\\n      thickness: this.#isExtracted ? 0 : thickness,\\n      pageIndex: this.pageIndex,\\n      rect,\\n      rotation: this.rotation,\\n      structTreeParentId: this._structTreeParentId,\\n    };\\n    if (isForCopying) {\\n      serialized.paths = { lines, points };\\n      serialized.uuid = this.#signatureUUID;\\n      serialized.isCopy = true;\\n    } else {\\n      serialized.lines = lines;\\n    }\\n    if (this.#description) {\\n      serialized.accessibilityData = { type: \\\"Figure\\\", alt: this.#description };\\n    }\\n    return serialized;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static deserializeDraw(\\n    pageX,\\n    pageY,\\n    pageWidth,\\n    pageHeight,\\n    innerMargin,\\n    data\\n  ) {\\n    if (data.areContours) {\\n      return ContourDrawOutline.deserialize(\\n        pageX,\\n        pageY,\\n        pageWidth,\\n        pageHeight,\\n        innerMargin,\\n        data\\n      );\\n    }\\n\\n    return InkDrawOutline.deserialize(\\n      pageX,\\n      pageY,\\n      pageWidth,\\n      pageHeight,\\n      innerMargin,\\n      data\\n    );\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static async deserialize(data, parent, uiManager) {\\n    const editor = await super.deserialize(data, parent, uiManager);\\n    editor.#isExtracted = data.areContours;\\n    editor.#description = data.accessibilityData?.alt || \\\"\\\";\\n    editor.#signatureUUID = data.uuid;\\n    return editor;\\n  }\\n}\\n\\nexport { SignatureEditor };\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { AnnotationEditorType, AnnotationPrefix } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  OutputScale,\\n  PixelsPerInch,\\n  SupportedImageMimeTypes,\\n} from \\\"..\u002Fdisplay_utils.js\\\";\\nimport { AnnotationEditor } from \\\".\u002Feditor.js\\\";\\nimport { StampAnnotationElement } from \\\"..\u002Fannotation_layer.js\\\";\\n\\n\u002F**\\n * Basic text editor in order to create a FreeTex annotation.\\n *\u002F\\nclass StampEditor extends AnnotationEditor {\\n  #bitmap = null;\\n\\n  #bitmapId = null;\\n\\n  #bitmapPromise = null;\\n\\n  #bitmapUrl = null;\\n\\n  #bitmapFile = null;\\n\\n  #bitmapFileName = \\\"\\\";\\n\\n  #canvas = null;\\n\\n  #missingCanvas = false;\\n\\n  #resizeTimeoutId = null;\\n\\n  #isSvg = false;\\n\\n  #hasBeenAddedInUndoStack = false;\\n\\n  static _type = \\\"stamp\\\";\\n\\n  static _editorType = AnnotationEditorType.STAMP;\\n\\n  constructor(params) {\\n    super({ ...params, name: \\\"stampEditor\\\" });\\n    this.#bitmapUrl = params.bitmapUrl;\\n    this.#bitmapFile = params.bitmapFile;\\n    this.defaultL10nId = \\\"pdfjs-editor-stamp-editor\\\";\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static initialize(l10n, uiManager) {\\n    AnnotationEditor.initialize(l10n, uiManager);\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static isHandlingMimeForPasting(mime) {\\n    return SupportedImageMimeTypes.includes(mime);\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static paste(item, parent) {\\n    parent.pasteEditor(\\n      { mode: AnnotationEditorType.STAMP },\\n      { bitmapFile: item.getAsFile() }\\n    );\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  altTextFinish() {\\n    if (this._uiManager.useNewAltTextFlow) {\\n      this.div.hidden = false;\\n    }\\n    super.altTextFinish();\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  get telemetryFinalData() {\\n    return {\\n      type: \\\"stamp\\\",\\n      hasAltText: !!this.altTextData?.altText,\\n    };\\n  }\\n\\n  static computeTelemetryFinalData(data) {\\n    const hasAltTextStats = data.get(\\\"hasAltText\\\");\\n    return {\\n      hasAltText: hasAltTextStats.get(true) ?? 0,\\n      hasNoAltText: hasAltTextStats.get(false) ?? 0,\\n    };\\n  }\\n\\n  #getBitmapFetched(data, fromId = false) {\\n    if (!data) {\\n      this.remove();\\n      return;\\n    }\\n    this.#bitmap = data.bitmap;\\n    if (!fromId) {\\n      this.#bitmapId = data.id;\\n      this.#isSvg = data.isSvg;\\n    }\\n    if (data.file) {\\n      this.#bitmapFileName = data.file.name;\\n    }\\n    this.#createCanvas();\\n  }\\n\\n  #getBitmapDone() {\\n    this.#bitmapPromise = null;\\n    this._uiManager.enableWaiting(false);\\n    if (!this.#canvas) {\\n      return;\\n    }\\n    if (\\n      this._uiManager.useNewAltTextWhenAddingImage &&\\n      this._uiManager.useNewAltTextFlow &&\\n      this.#bitmap\\n    ) {\\n      this._editToolbar.hide();\\n      this._uiManager.editAltText(this, \u002F* firstTime = *\u002F true);\\n      return;\\n    }\\n\\n    if (\\n      !this._uiManager.useNewAltTextWhenAddingImage &&\\n      this._uiManager.useNewAltTextFlow &&\\n      this.#bitmap\\n    ) {\\n      this._reportTelemetry({\\n        action: \\\"pdfjs.image.image_added\\\",\\n        data: { alt_text_modal: false, alt_text_type: \\\"empty\\\" },\\n      });\\n      try {\\n        \u002F\u002F The alt-text dialog isn't opened but we still want to guess the alt\\n        \u002F\u002F text.\\n        this.mlGuessAltText();\\n      } catch {}\\n    }\\n\\n    this.div.focus();\\n  }\\n\\n  async mlGuessAltText(imageData = null, updateAltTextData = true) {\\n    if (this.hasAltTextData()) {\\n      return null;\\n    }\\n\\n    const { mlManager } = this._uiManager;\\n    if (!mlManager) {\\n      throw new Error(\\\"No ML.\\\");\\n    }\\n    if (!(await mlManager.isEnabledFor(\\\"altText\\\"))) {\\n      throw new Error(\\\"ML isn't enabled for alt text.\\\");\\n    }\\n    const { data, width, height } =\\n      imageData ||\\n      this.copyCanvas(null, null, \u002F* createImageData = *\u002F true).imageData;\\n    const response = await mlManager.guess({\\n      name: \\\"altText\\\",\\n      request: {\\n        data,\\n        width,\\n        height,\\n        channels: data.length \u002F (width * height),\\n      },\\n    });\\n    if (!response) {\\n      throw new Error(\\\"No response from the AI service.\\\");\\n    }\\n    if (response.error) {\\n      throw new Error(\\\"Error from the AI service.\\\");\\n    }\\n    if (response.cancel) {\\n      return null;\\n    }\\n    if (!response.output) {\\n      throw new Error(\\\"No valid response from the AI service.\\\");\\n    }\\n    const altText = response.output;\\n    await this.setGuessedAltText(altText);\\n    if (updateAltTextData && !this.hasAltTextData()) {\\n      this.altTextData = { alt: altText, decorative: false };\\n    }\\n    return altText;\\n  }\\n\\n  #getBitmap() {\\n    if (this.#bitmapId) {\\n      this._uiManager.enableWaiting(true);\\n      this._uiManager.imageManager\\n        .getFromId(this.#bitmapId)\\n        .then(data => this.#getBitmapFetched(data, \u002F* fromId = *\u002F true))\\n        .finally(() => this.#getBitmapDone());\\n      return;\\n    }\\n\\n    if (this.#bitmapUrl) {\\n      const url = this.#bitmapUrl;\\n      this.#bitmapUrl = null;\\n      this._uiManager.enableWaiting(true);\\n      this.#bitmapPromise = this._uiManager.imageManager\\n        .getFromUrl(url)\\n        .then(data => this.#getBitmapFetched(data))\\n        .finally(() => this.#getBitmapDone());\\n      return;\\n    }\\n\\n    if (this.#bitmapFile) {\\n      const file = this.#bitmapFile;\\n      this.#bitmapFile = null;\\n      this._uiManager.enableWaiting(true);\\n      this.#bitmapPromise = this._uiManager.imageManager\\n        .getFromFile(file)\\n        .then(data => this.#getBitmapFetched(data))\\n        .finally(() => this.#getBitmapDone());\\n      return;\\n    }\\n\\n    const input = document.createElement(\\\"input\\\");\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING\\\")) {\\n      input.hidden = true;\\n      input.id = \\\"stampEditorFileInput\\\";\\n      document.body.append(input);\\n    }\\n    input.type = \\\"file\\\";\\n    input.accept = SupportedImageMimeTypes.join(\\\",\\\");\\n    const signal = this._uiManager._signal;\\n    this.#bitmapPromise = new Promise(resolve => {\\n      input.addEventListener(\\n        \\\"change\\\",\\n        async () => {\\n          if (!input.files || input.files.length === 0) {\\n            this.remove();\\n          } else {\\n            this._uiManager.enableWaiting(true);\\n            const data = await this._uiManager.imageManager.getFromFile(\\n              input.files[0]\\n            );\\n            this._reportTelemetry({\\n              action: \\\"pdfjs.image.image_selected\\\",\\n              data: { alt_text_modal: this._uiManager.useNewAltTextFlow },\\n            });\\n            this.#getBitmapFetched(data);\\n          }\\n          if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING\\\")) {\\n            input.remove();\\n          }\\n          resolve();\\n        },\\n        { signal }\\n      );\\n      input.addEventListener(\\n        \\\"cancel\\\",\\n        () => {\\n          this.remove();\\n          resolve();\\n        },\\n        { signal }\\n      );\\n    }).finally(() => this.#getBitmapDone());\\n    if (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"TESTING\\\")) {\\n      input.click();\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  remove() {\\n    if (this.#bitmapId) {\\n      this.#bitmap = null;\\n      this._uiManager.imageManager.deleteId(this.#bitmapId);\\n      this.#canvas?.remove();\\n      this.#canvas = null;\\n      if (this.#resizeTimeoutId) {\\n        clearTimeout(this.#resizeTimeoutId);\\n        this.#resizeTimeoutId = null;\\n      }\\n    }\\n    super.remove();\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  rebuild() {\\n    if (!this.parent) {\\n      \u002F\u002F It's possible to have to rebuild an editor which is not on a visible\\n      \u002F\u002F page.\\n      if (this.#bitmapId) {\\n        this.#getBitmap();\\n      }\\n      return;\\n    }\\n    super.rebuild();\\n    if (this.div === null) {\\n      return;\\n    }\\n\\n    if (this.#bitmapId && this.#canvas === null) {\\n      this.#getBitmap();\\n    }\\n\\n    if (!this.isAttachedToDOM) {\\n      \u002F\u002F At some point this editor was removed and we're rebuilting it,\\n      \u002F\u002F hence we must add it to its parent.\\n      this.parent.add(this);\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  onceAdded(focus) {\\n    this._isDraggable = true;\\n    if (focus) {\\n      this.div.focus();\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  isEmpty() {\\n    return !(\\n      this.#bitmapPromise ||\\n      this.#bitmap ||\\n      this.#bitmapUrl ||\\n      this.#bitmapFile ||\\n      this.#bitmapId ||\\n      this.#missingCanvas\\n    );\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  get isResizable() {\\n    return true;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  render() {\\n    if (this.div) {\\n      return this.div;\\n    }\\n\\n    let baseX, baseY;\\n    if (this._isCopy) {\\n      baseX = this.x;\\n      baseY = this.y;\\n    }\\n\\n    super.render();\\n    this.div.hidden = true;\\n\\n    this.addAltTextButton();\\n\\n    if (!this.#missingCanvas) {\\n      if (this.#bitmap) {\\n        this.#createCanvas();\\n      } else {\\n        this.#getBitmap();\\n      }\\n    }\\n\\n    if (this._isCopy) {\\n      this._moveAfterPaste(baseX, baseY);\\n    }\\n\\n    this._uiManager.addShouldRescale(this);\\n\\n    return this.div;\\n  }\\n\\n  setCanvas(annotationElementId, canvas) {\\n    const { id: bitmapId, bitmap } = this._uiManager.imageManager.getFromCanvas(\\n      annotationElementId,\\n      canvas\\n    );\\n    canvas.remove();\\n    if (bitmapId && this._uiManager.imageManager.isValidId(bitmapId)) {\\n      this.#bitmapId = bitmapId;\\n      if (bitmap) {\\n        this.#bitmap = bitmap;\\n      }\\n      this.#missingCanvas = false;\\n      this.#createCanvas();\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  _onResized() {\\n    \u002F\u002F We used a CSS-zoom during the resizing, but now it's resized we can\\n    \u002F\u002F rescale correctly the bitmap to fit the new dimensions.\\n    this.onScaleChanging();\\n  }\\n\\n  onScaleChanging() {\\n    if (!this.parent) {\\n      return;\\n    }\\n    if (this.#resizeTimeoutId !== null) {\\n      clearTimeout(this.#resizeTimeoutId);\\n    }\\n    \u002F\u002F The user's zooming the page, there is no need to redraw the bitmap at\\n    \u002F\u002F each step, hence we wait a bit before redrawing it.\\n    const TIME_TO_WAIT = 200;\\n    this.#resizeTimeoutId = setTimeout(() => {\\n      this.#resizeTimeoutId = null;\\n      this.#drawBitmap();\\n    }, TIME_TO_WAIT);\\n  }\\n\\n  #createCanvas() {\\n    const { div } = this;\\n    let { width, height } = this.#bitmap;\\n    const [pageWidth, pageHeight] = this.pageDimensions;\\n    const MAX_RATIO = 0.75;\\n    if (this.width) {\\n      width = this.width * pageWidth;\\n      height = this.height * pageHeight;\\n    } else if (\\n      width > MAX_RATIO * pageWidth ||\\n      height > MAX_RATIO * pageHeight\\n    ) {\\n      \u002F\u002F If the image is too big compared to the page dimensions\\n      \u002F\u002F (more than MAX_RATIO) then we scale it down.\\n      const factor = Math.min(\\n        (MAX_RATIO * pageWidth) \u002F width,\\n        (MAX_RATIO * pageHeight) \u002F height\\n      );\\n      width *= factor;\\n      height *= factor;\\n    }\\n    const [parentWidth, parentHeight] = this.parentDimensions;\\n    this.setDims(\\n      (width * parentWidth) \u002F pageWidth,\\n      (height * parentHeight) \u002F pageHeight\\n    );\\n\\n    this._uiManager.enableWaiting(false);\\n    const canvas = (this.#canvas = document.createElement(\\\"canvas\\\"));\\n    canvas.setAttribute(\\\"role\\\", \\\"img\\\");\\n    this.addContainer(canvas);\\n\\n    this.width = width \u002F pageWidth;\\n    this.height = height \u002F pageHeight;\\n    if (this._initialOptions?.isCentered) {\\n      this.center();\\n    } else {\\n      this.fixAndSetPosition();\\n    }\\n    this._initialOptions = null;\\n\\n    if (\\n      !this._uiManager.useNewAltTextWhenAddingImage ||\\n      !this._uiManager.useNewAltTextFlow ||\\n      this.annotationElementId\\n    ) {\\n      div.hidden = false;\\n    }\\n    this.#drawBitmap();\\n    if (!this.#hasBeenAddedInUndoStack) {\\n      this.parent.addUndoableEditor(this);\\n      this.#hasBeenAddedInUndoStack = true;\\n    }\\n\\n    \u002F\u002F There are multiple ways to add an image to the page, so here we just\\n    \u002F\u002F count the number of times an image is added to the page whatever the way\\n    \u002F\u002F is.\\n    this._reportTelemetry({\\n      action: \\\"inserted_image\\\",\\n    });\\n    if (this.#bitmapFileName) {\\n      this.div.setAttribute(\\\"aria-description\\\", this.#bitmapFileName);\\n    }\\n  }\\n\\n  copyCanvas(maxDataDimension, maxPreviewDimension, createImageData = false) {\\n    if (!maxDataDimension) {\\n      \u002F\u002F TODO: get this value from Firefox\\n      \u002F\u002F   (https:\u002F\u002Fbugzilla.mozilla.org\u002Fshow_bug.cgi?id=1908184)\\n      \u002F\u002F It's the maximum dimension that the AI can handle.\\n      maxDataDimension = 224;\\n    }\\n\\n    const { width: bitmapWidth, height: bitmapHeight } = this.#bitmap;\\n    const outputScale = new OutputScale();\\n\\n    let bitmap = this.#bitmap;\\n    let width = bitmapWidth,\\n      height = bitmapHeight;\\n    let canvas = null;\\n\\n    if (maxPreviewDimension) {\\n      if (\\n        bitmapWidth > maxPreviewDimension ||\\n        bitmapHeight > maxPreviewDimension\\n      ) {\\n        const ratio = Math.min(\\n          maxPreviewDimension \u002F bitmapWidth,\\n          maxPreviewDimension \u002F bitmapHeight\\n        );\\n        width = Math.floor(bitmapWidth * ratio);\\n        height = Math.floor(bitmapHeight * ratio);\\n      }\\n\\n      canvas = document.createElement(\\\"canvas\\\");\\n      const scaledWidth = (canvas.width = Math.ceil(width * outputScale.sx));\\n      const scaledHeight = (canvas.height = Math.ceil(height * outputScale.sy));\\n\\n      if (!this.#isSvg) {\\n        bitmap = this.#scaleBitmap(scaledWidth, scaledHeight);\\n      }\\n\\n      const ctx = canvas.getContext(\\\"2d\\\");\\n      ctx.filter = this._uiManager.hcmFilter;\\n\\n      \u002F\u002F Add a checkerboard pattern as a background in case the image has some\\n      \u002F\u002F transparency.\\n      let white = \\\"white\\\",\\n        black = \\\"#cfcfd8\\\";\\n      if (this._uiManager.hcmFilter !== \\\"none\\\") {\\n        black = \\\"black\\\";\\n      } else if (window.matchMedia?.(\\\"(prefers-color-scheme: dark)\\\").matches) {\\n        white = \\\"#8f8f9d\\\";\\n        black = \\\"#42414d\\\";\\n      }\\n      const boxDim = 15;\\n      const boxDimWidth = boxDim * outputScale.sx;\\n      const boxDimHeight = boxDim * outputScale.sy;\\n      const pattern = new OffscreenCanvas(boxDimWidth * 2, boxDimHeight * 2);\\n      const patternCtx = pattern.getContext(\\\"2d\\\");\\n      patternCtx.fillStyle = white;\\n      patternCtx.fillRect(0, 0, boxDimWidth * 2, boxDimHeight * 2);\\n      patternCtx.fillStyle = black;\\n      patternCtx.fillRect(0, 0, boxDimWidth, boxDimHeight);\\n      patternCtx.fillRect(boxDimWidth, boxDimHeight, boxDimWidth, boxDimHeight);\\n      ctx.fillStyle = ctx.createPattern(pattern, \\\"repeat\\\");\\n      ctx.fillRect(0, 0, scaledWidth, scaledHeight);\\n      ctx.drawImage(\\n        bitmap,\\n        0,\\n        0,\\n        bitmap.width,\\n        bitmap.height,\\n        0,\\n        0,\\n        scaledWidth,\\n        scaledHeight\\n      );\\n    }\\n\\n    let imageData = null;\\n    if (createImageData) {\\n      let dataWidth, dataHeight;\\n      if (\\n        outputScale.symmetric &&\\n        bitmap.width \u003C maxDataDimension &&\\n        bitmap.height \u003C maxDataDimension\\n      ) {\\n        dataWidth = bitmap.width;\\n        dataHeight = bitmap.height;\\n      } else {\\n        bitmap = this.#bitmap;\\n        if (bitmapWidth > maxDataDimension || bitmapHeight > maxDataDimension) {\\n          const ratio = Math.min(\\n            maxDataDimension \u002F bitmapWidth,\\n            maxDataDimension \u002F bitmapHeight\\n          );\\n          dataWidth = Math.floor(bitmapWidth * ratio);\\n          dataHeight = Math.floor(bitmapHeight * ratio);\\n\\n          if (!this.#isSvg) {\\n            bitmap = this.#scaleBitmap(dataWidth, dataHeight);\\n          }\\n        }\\n      }\\n\\n      const offscreen = new OffscreenCanvas(dataWidth, dataHeight);\\n      const offscreenCtx = offscreen.getContext(\\\"2d\\\", {\\n        willReadFrequently: true,\\n      });\\n      offscreenCtx.drawImage(\\n        bitmap,\\n        0,\\n        0,\\n        bitmap.width,\\n        bitmap.height,\\n        0,\\n        0,\\n        dataWidth,\\n        dataHeight\\n      );\\n      imageData = {\\n        width: dataWidth,\\n        height: dataHeight,\\n        data: offscreenCtx.getImageData(0, 0, dataWidth, dataHeight).data,\\n      };\\n    }\\n\\n    return { canvas, width, height, imageData };\\n  }\\n\\n  #scaleBitmap(width, height) {\\n    const { width: bitmapWidth, height: bitmapHeight } = this.#bitmap;\\n\\n    let newWidth = bitmapWidth;\\n    let newHeight = bitmapHeight;\\n    let bitmap = this.#bitmap;\\n    while (newWidth > 2 * width || newHeight > 2 * height) {\\n      const prevWidth = newWidth;\\n      const prevHeight = newHeight;\\n\\n      if (newWidth > 2 * width) {\\n        \u002F\u002F See bug 1820511 (Windows specific bug).\\n        \u002F\u002F TODO: once the above bug is fixed we could revert to:\\n        \u002F\u002F newWidth = Math.ceil(newWidth \u002F 2);\\n        newWidth =\\n          newWidth >= 16384\\n            ? Math.floor(newWidth \u002F 2) - 1\\n            : Math.ceil(newWidth \u002F 2);\\n      }\\n      if (newHeight > 2 * height) {\\n        newHeight =\\n          newHeight >= 16384\\n            ? Math.floor(newHeight \u002F 2) - 1\\n            : Math.ceil(newHeight \u002F 2);\\n      }\\n\\n      const offscreen = new OffscreenCanvas(newWidth, newHeight);\\n      const ctx = offscreen.getContext(\\\"2d\\\");\\n      ctx.drawImage(\\n        bitmap,\\n        0,\\n        0,\\n        prevWidth,\\n        prevHeight,\\n        0,\\n        0,\\n        newWidth,\\n        newHeight\\n      );\\n      bitmap = offscreen.transferToImageBitmap();\\n    }\\n\\n    return bitmap;\\n  }\\n\\n  #drawBitmap() {\\n    const [parentWidth, parentHeight] = this.parentDimensions;\\n    const { width, height } = this;\\n    const outputScale = new OutputScale();\\n    const scaledWidth = Math.ceil(width * parentWidth * outputScale.sx);\\n    const scaledHeight = Math.ceil(height * parentHeight * outputScale.sy);\\n    const canvas = this.#canvas;\\n\\n    if (\\n      !canvas ||\\n      (canvas.width === scaledWidth && canvas.height === scaledHeight)\\n    ) {\\n      return;\\n    }\\n\\n    canvas.width = scaledWidth;\\n    canvas.height = scaledHeight;\\n\\n    const bitmap = this.#isSvg\\n      ? this.#bitmap\\n      : this.#scaleBitmap(scaledWidth, scaledHeight);\\n\\n    const ctx = canvas.getContext(\\\"2d\\\");\\n    ctx.filter = this._uiManager.hcmFilter;\\n    ctx.drawImage(\\n      bitmap,\\n      0,\\n      0,\\n      bitmap.width,\\n      bitmap.height,\\n      0,\\n      0,\\n      scaledWidth,\\n      scaledHeight\\n    );\\n  }\\n\\n  #serializeBitmap(toUrl) {\\n    if (toUrl) {\\n      if (this.#isSvg) {\\n        const url = this._uiManager.imageManager.getSvgUrl(this.#bitmapId);\\n        if (url) {\\n          return url;\\n        }\\n      }\\n      \u002F\u002F We convert to a data url because it's sync and the url can live in the\\n      \u002F\u002F clipboard.\\n      const canvas = document.createElement(\\\"canvas\\\");\\n      ({ width: canvas.width, height: canvas.height } = this.#bitmap);\\n      const ctx = canvas.getContext(\\\"2d\\\");\\n      ctx.drawImage(this.#bitmap, 0, 0);\\n\\n      return canvas.toDataURL();\\n    }\\n\\n    if (this.#isSvg) {\\n      const [pageWidth, pageHeight] = this.pageDimensions;\\n      \u002F\u002F Multiply by PixelsPerInch.PDF_TO_CSS_UNITS in order to increase the\\n      \u002F\u002F image resolution when rasterizing it.\\n      const width = Math.round(\\n        this.width * pageWidth * PixelsPerInch.PDF_TO_CSS_UNITS\\n      );\\n      const height = Math.round(\\n        this.height * pageHeight * PixelsPerInch.PDF_TO_CSS_UNITS\\n      );\\n      const offscreen = new OffscreenCanvas(width, height);\\n      const ctx = offscreen.getContext(\\\"2d\\\");\\n      ctx.drawImage(\\n        this.#bitmap,\\n        0,\\n        0,\\n        this.#bitmap.width,\\n        this.#bitmap.height,\\n        0,\\n        0,\\n        width,\\n        height\\n      );\\n      return offscreen.transferToImageBitmap();\\n    }\\n\\n    return structuredClone(this.#bitmap);\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  static async deserialize(data, parent, uiManager) {\\n    let initialData = null;\\n    let missingCanvas = false;\\n    if (data instanceof StampAnnotationElement) {\\n      const {\\n        data: { rect, rotation, id, structParent, popupRef },\\n        container,\\n        parent: {\\n          page: { pageNumber },\\n        },\\n        canvas,\\n      } = data;\\n      let bitmapId, bitmap;\\n      if (canvas) {\\n        delete data.canvas;\\n        ({ id: bitmapId, bitmap } = uiManager.imageManager.getFromCanvas(\\n          container.id,\\n          canvas\\n        ));\\n        canvas.remove();\\n      } else {\\n        missingCanvas = true;\\n        data._hasNoCanvas = true;\\n      }\\n\\n      \u002F\u002F When switching to edit mode, we wait for the structure tree to be\\n      \u002F\u002F ready (see pdf_viewer.js), so it's fine to use getAriaAttributesSync.\\n      const altText =\\n        (\\n          await parent._structTree.getAriaAttributes(`${AnnotationPrefix}${id}`)\\n        )?.get(\\\"aria-label\\\") || \\\"\\\";\\n\\n      initialData = data = {\\n        annotationType: AnnotationEditorType.STAMP,\\n        bitmapId,\\n        bitmap,\\n        pageIndex: pageNumber - 1,\\n        rect: rect.slice(0),\\n        rotation,\\n        id,\\n        deleted: false,\\n        accessibilityData: {\\n          decorative: false,\\n          altText,\\n        },\\n        isSvg: false,\\n        structParent,\\n        popupRef,\\n      };\\n    }\\n    const editor = await super.deserialize(data, parent, uiManager);\\n    const { rect, bitmap, bitmapUrl, bitmapId, isSvg, accessibilityData } =\\n      data;\\n    if (missingCanvas) {\\n      uiManager.addMissingCanvas(data.id, editor);\\n      editor.#missingCanvas = true;\\n    } else if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\\n      editor.#bitmapId = bitmapId;\\n      if (bitmap) {\\n        editor.#bitmap = bitmap;\\n      }\\n    } else {\\n      editor.#bitmapUrl = bitmapUrl;\\n    }\\n    editor.#isSvg = isSvg;\\n\\n    const [parentWidth, parentHeight] = editor.pageDimensions;\\n    editor.width = (rect[2] - rect[0]) \u002F parentWidth;\\n    editor.height = (rect[3] - rect[1]) \u002F parentHeight;\\n\\n    editor.annotationElementId = data.id || null;\\n    if (accessibilityData) {\\n      editor.altTextData = accessibilityData;\\n    }\\n    editor._initialData = initialData;\\n    \u002F\u002F No need to be add in the undo stack if the editor is created from an\\n    \u002F\u002F existing one.\\n    editor.#hasBeenAddedInUndoStack = !!initialData;\\n\\n    return editor;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  serialize(isForCopying = false, context = null) {\\n    if (this.isEmpty()) {\\n      return null;\\n    }\\n\\n    if (this.deleted) {\\n      return this.serializeDeleted();\\n    }\\n\\n    const serialized = {\\n      annotationType: AnnotationEditorType.STAMP,\\n      bitmapId: this.#bitmapId,\\n      pageIndex: this.pageIndex,\\n      rect: this.getRect(0, 0),\\n      rotation: this.rotation,\\n      isSvg: this.#isSvg,\\n      structTreeParentId: this._structTreeParentId,\\n    };\\n\\n    if (isForCopying) {\\n      \u002F\u002F We don't know what's the final destination (this pdf or another one)\\n      \u002F\u002F of this annotation and the clipboard doesn't support ImageBitmaps,\\n      \u002F\u002F hence we serialize the bitmap to a data url.\\n      serialized.bitmapUrl = this.#serializeBitmap(\u002F* toUrl = *\u002F true);\\n      serialized.accessibilityData = this.serializeAltText(true);\\n      serialized.isCopy = true;\\n      return serialized;\\n    }\\n\\n    const { decorative, altText } = this.serializeAltText(false);\\n    if (!decorative && altText) {\\n      serialized.accessibilityData = { type: \\\"Figure\\\", alt: altText };\\n    }\\n    if (this.annotationElementId) {\\n      const changes = this.#hasElementChanged(serialized);\\n      if (changes.isSame) {\\n        \u002F\u002F Nothing has been changed.\\n        return null;\\n      }\\n      if (changes.isSameAltText) {\\n        delete serialized.accessibilityData;\\n      } else {\\n        serialized.accessibilityData.structParent =\\n          this._initialData.structParent ?? -1;\\n      }\\n    }\\n    serialized.id = this.annotationElementId;\\n\\n    if (context === null) {\\n      return serialized;\\n    }\\n\\n    context.stamps ||= new Map();\\n    const area = this.#isSvg\\n      ? (serialized.rect[2] - serialized.rect[0]) *\\n        (serialized.rect[3] - serialized.rect[1])\\n      : null;\\n    if (!context.stamps.has(this.#bitmapId)) {\\n      \u002F\u002F We don't want to have multiple copies of the same bitmap in the\\n      \u002F\u002F annotationMap, hence we only add the bitmap the first time we meet it.\\n      context.stamps.set(this.#bitmapId, { area, serialized });\\n      serialized.bitmap = this.#serializeBitmap(\u002F* toUrl = *\u002F false);\\n    } else if (this.#isSvg) {\\n      \u002F\u002F If we have multiple copies of the same svg but with different sizes,\\n      \u002F\u002F then we want to keep the biggest one.\\n      const prevData = context.stamps.get(this.#bitmapId);\\n      if (area > prevData.area) {\\n        prevData.area = area;\\n        prevData.serialized.bitmap.close();\\n        prevData.serialized.bitmap = this.#serializeBitmap(\u002F* toUrl = *\u002F false);\\n      }\\n    }\\n    return serialized;\\n  }\\n\\n  #hasElementChanged(serialized) {\\n    const {\\n      pageIndex,\\n      accessibilityData: { altText },\\n    } = this._initialData;\\n\\n    const isSamePageIndex = serialized.pageIndex === pageIndex;\\n    const isSameAltText = (serialized.accessibilityData?.alt || \\\"\\\") === altText;\\n\\n    return {\\n      isSame:\\n        !this._hasBeenMoved &&\\n        !this._hasBeenResized &&\\n        isSamePageIndex &&\\n        isSameAltText,\\n      isSameAltText,\\n    };\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  renderAnnotationElement(annotation) {\\n    annotation.updateEdited({\\n      rect: this.getRect(0, 0),\\n    });\\n\\n    return null;\\n  }\\n}\\n\\nexport { StampEditor };\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Ftools.js\\\").AnnotationEditorUIManager} AnnotationEditorUIManager *\u002F\\n\u002F** @typedef {import(\\\"..\u002Fdisplay_utils.js\\\").PageViewport} PageViewport *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002F..\u002F..\u002Fweb\u002Ftext_accessibility.js\\\").TextAccessibilityManager} TextAccessibilityManager *\u002F\\n\u002F** @typedef {import(\\\"..\u002F..\u002F..\u002Fweb\u002Finterfaces\\\").IL10n} IL10n *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fannotation_layer.js\\\").AnnotationLayer} AnnotationLayer *\u002F\\n\u002F** @typedef {import(\\\"..\u002Fdraw_layer.js\\\").DrawLayer} DrawLayer *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fstruct_tree_layer_builder.js\\\").StructTreeLayerBuilder} StructTreeLayerBuilder *\u002F\\n\\nimport { AnnotationEditorType, FeatureTest } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport { AnnotationEditor } from \\\".\u002Feditor.js\\\";\\nimport { FreeTextEditor } from \\\".\u002Ffreetext.js\\\";\\nimport { HighlightEditor } from \\\".\u002Fhighlight.js\\\";\\nimport { InkEditor } from \\\".\u002Fink.js\\\";\\nimport { setLayerDimensions } from \\\"..\u002Fdisplay_utils.js\\\";\\nimport { SignatureEditor } from \\\".\u002Fsignature.js\\\";\\nimport { StampEditor } from \\\".\u002Fstamp.js\\\";\\n\\n\u002F**\\n * @typedef {Object} AnnotationEditorLayerOptions\\n * @property {Object} mode\\n * @property {HTMLDivElement} div\\n * @property {StructTreeLayerBuilder} structTreeLayer\\n * @property {AnnotationEditorUIManager} uiManager\\n * @property {boolean} enabled\\n * @property {TextAccessibilityManager} [accessibilityManager]\\n * @property {number} pageIndex\\n * @property {IL10n} l10n\\n * @property {AnnotationLayer} [annotationLayer]\\n * @property {HTMLDivElement} [textLayer]\\n * @property {DrawLayer} drawLayer\\n * @property {PageViewport} viewport\\n *\u002F\\n\\n\u002F**\\n * @typedef {Object} RenderEditorLayerOptions\\n * @property {PageViewport} viewport\\n *\u002F\\n\\n\u002F**\\n * Manage all the different editors on a page.\\n *\u002F\\nclass AnnotationEditorLayer {\\n  #accessibilityManager;\\n\\n  #allowClick = false;\\n\\n  #annotationLayer = null;\\n\\n  #clickAC = null;\\n\\n  #editorFocusTimeoutId = null;\\n\\n  #editors = new Map();\\n\\n  #hadPointerDown = false;\\n\\n  #isDisabling = false;\\n\\n  #isEnabling = false;\\n\\n  #drawingAC = null;\\n\\n  #focusedElement = null;\\n\\n  #textLayer = null;\\n\\n  #textSelectionAC = null;\\n\\n  #uiManager;\\n\\n  static _initialized = false;\\n\\n  static #editorTypes = new Map(\\n    [\\n      FreeTextEditor,\\n      InkEditor,\\n      StampEditor,\\n      HighlightEditor,\\n      SignatureEditor,\\n    ].map(type => [type._editorType, type])\\n  );\\n\\n  \u002F**\\n   * @param {AnnotationEditorLayerOptions} options\\n   *\u002F\\n  constructor({\\n    uiManager,\\n    pageIndex,\\n    div,\\n    structTreeLayer,\\n    accessibilityManager,\\n    annotationLayer,\\n    drawLayer,\\n    textLayer,\\n    viewport,\\n    l10n,\\n  }) {\\n    const editorTypes = [...AnnotationEditorLayer.#editorTypes.values()];\\n    if (!AnnotationEditorLayer._initialized) {\\n      AnnotationEditorLayer._initialized = true;\\n      for (const editorType of editorTypes) {\\n        editorType.initialize(l10n, uiManager);\\n      }\\n    }\\n    uiManager.registerEditorTypes(editorTypes);\\n\\n    this.#uiManager = uiManager;\\n    this.pageIndex = pageIndex;\\n    this.div = div;\\n    this.#accessibilityManager = accessibilityManager;\\n    this.#annotationLayer = annotationLayer;\\n    this.viewport = viewport;\\n    this.#textLayer = textLayer;\\n    this.drawLayer = drawLayer;\\n    this._structTree = structTreeLayer;\\n\\n    this.#uiManager.addLayer(this);\\n  }\\n\\n  get isEmpty() {\\n    return this.#editors.size === 0;\\n  }\\n\\n  get isInvisible() {\\n    return (\\n      this.isEmpty && this.#uiManager.getMode() === AnnotationEditorType.NONE\\n    );\\n  }\\n\\n  \u002F**\\n   * Update the toolbar if it's required to reflect the tool currently used.\\n   * @param {Object} options\\n   *\u002F\\n  updateToolbar(options) {\\n    this.#uiManager.updateToolbar(options);\\n  }\\n\\n  \u002F**\\n   * The mode has changed: it must be updated.\\n   * @param {number} mode\\n   *\u002F\\n  updateMode(mode = this.#uiManager.getMode()) {\\n    this.#cleanup();\\n    switch (mode) {\\n      case AnnotationEditorType.NONE:\\n        this.disableTextSelection();\\n        this.togglePointerEvents(false);\\n        this.toggleAnnotationLayerPointerEvents(true);\\n        this.disableClick();\\n        return;\\n      case AnnotationEditorType.INK:\\n        this.disableTextSelection();\\n        this.togglePointerEvents(true);\\n        this.enableClick();\\n        break;\\n      case AnnotationEditorType.HIGHLIGHT:\\n        this.enableTextSelection();\\n        this.togglePointerEvents(false);\\n        this.disableClick();\\n        break;\\n      default:\\n        this.disableTextSelection();\\n        this.togglePointerEvents(true);\\n        this.enableClick();\\n    }\\n\\n    this.toggleAnnotationLayerPointerEvents(false);\\n    const { classList } = this.div;\\n    for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\\n      classList.toggle(\\n        `${editorType._type}Editing`,\\n        mode === editorType._editorType\\n      );\\n    }\\n    this.div.hidden = false;\\n  }\\n\\n  hasTextLayer(textLayer) {\\n    return textLayer === this.#textLayer?.div;\\n  }\\n\\n  \u002F**\\n   * Set the editing state.\\n   * @param {boolean} isEditing\\n   *\u002F\\n  setEditingState(isEditing) {\\n    this.#uiManager.setEditingState(isEditing);\\n  }\\n\\n  \u002F**\\n   * Add some commands into the CommandManager (undo\u002Fredo stuff).\\n   * @param {Object} params\\n   *\u002F\\n  addCommands(params) {\\n    this.#uiManager.addCommands(params);\\n  }\\n\\n  cleanUndoStack(type) {\\n    this.#uiManager.cleanUndoStack(type);\\n  }\\n\\n  toggleDrawing(enabled = false) {\\n    this.div.classList.toggle(\\\"drawing\\\", !enabled);\\n  }\\n\\n  togglePointerEvents(enabled = false) {\\n    this.div.classList.toggle(\\\"disabled\\\", !enabled);\\n  }\\n\\n  toggleAnnotationLayerPointerEvents(enabled = false) {\\n    this.#annotationLayer?.div.classList.toggle(\\\"disabled\\\", !enabled);\\n  }\\n\\n  \u002F**\\n   * Enable pointer events on the main div in order to enable\\n   * editor creation.\\n   *\u002F\\n  async enable() {\\n    this.#isEnabling = true;\\n    this.div.tabIndex = 0;\\n    this.togglePointerEvents(true);\\n    const annotationElementIds = new Set();\\n    for (const editor of this.#editors.values()) {\\n      editor.enableEditing();\\n      editor.show(true);\\n      if (editor.annotationElementId) {\\n        this.#uiManager.removeChangedExistingAnnotation(editor);\\n        annotationElementIds.add(editor.annotationElementId);\\n      }\\n    }\\n\\n    if (!this.#annotationLayer) {\\n      this.#isEnabling = false;\\n      return;\\n    }\\n\\n    const editables = this.#annotationLayer.getEditableAnnotations();\\n    for (const editable of editables) {\\n      \u002F\u002F The element must be hidden whatever its state is.\\n      editable.hide();\\n      if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) {\\n        continue;\\n      }\\n      if (annotationElementIds.has(editable.data.id)) {\\n        continue;\\n      }\\n      const editor = await this.deserialize(editable);\\n      if (!editor) {\\n        continue;\\n      }\\n      this.addOrRebuild(editor);\\n      editor.enableEditing();\\n    }\\n    this.#isEnabling = false;\\n  }\\n\\n  \u002F**\\n   * Disable editor creation.\\n   *\u002F\\n  disable() {\\n    this.#isDisabling = true;\\n    this.div.tabIndex = -1;\\n    this.togglePointerEvents(false);\\n    const changedAnnotations = new Map();\\n    const resetAnnotations = new Map();\\n    for (const editor of this.#editors.values()) {\\n      editor.disableEditing();\\n      if (!editor.annotationElementId) {\\n        continue;\\n      }\\n      if (editor.serialize() !== null) {\\n        changedAnnotations.set(editor.annotationElementId, editor);\\n        continue;\\n      } else {\\n        resetAnnotations.set(editor.annotationElementId, editor);\\n      }\\n      this.getEditableAnnotation(editor.annotationElementId)?.show();\\n      editor.remove();\\n    }\\n\\n    if (this.#annotationLayer) {\\n      \u002F\u002F Show the annotations that were hidden in enable().\\n      const editables = this.#annotationLayer.getEditableAnnotations();\\n      for (const editable of editables) {\\n        const { id } = editable.data;\\n        if (this.#uiManager.isDeletedAnnotationElement(id)) {\\n          continue;\\n        }\\n        let editor = resetAnnotations.get(id);\\n        if (editor) {\\n          editor.resetAnnotationElement(editable);\\n          editor.show(false);\\n          editable.show();\\n          continue;\\n        }\\n\\n        editor = changedAnnotations.get(id);\\n        if (editor) {\\n          this.#uiManager.addChangedExistingAnnotation(editor);\\n          if (editor.renderAnnotationElement(editable)) {\\n            \u002F\u002F Content has changed, so we need to hide the editor.\\n            editor.show(false);\\n          }\\n        }\\n        editable.show();\\n      }\\n    }\\n\\n    this.#cleanup();\\n    if (this.isEmpty) {\\n      this.div.hidden = true;\\n    }\\n    const { classList } = this.div;\\n    for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\\n      classList.remove(`${editorType._type}Editing`);\\n    }\\n    this.disableTextSelection();\\n    this.toggleAnnotationLayerPointerEvents(true);\\n\\n    this.#isDisabling = false;\\n  }\\n\\n  getEditableAnnotation(id) {\\n    return this.#annotationLayer?.getEditableAnnotation(id) || null;\\n  }\\n\\n  \u002F**\\n   * Set the current editor.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  setActiveEditor(editor) {\\n    const currentActive = this.#uiManager.getActive();\\n    if (currentActive === editor) {\\n      return;\\n    }\\n\\n    this.#uiManager.setActiveEditor(editor);\\n  }\\n\\n  enableTextSelection() {\\n    this.div.tabIndex = -1;\\n    if (this.#textLayer?.div && !this.#textSelectionAC) {\\n      this.#textSelectionAC = new AbortController();\\n      const signal = this.#uiManager.combinedSignal(this.#textSelectionAC);\\n\\n      this.#textLayer.div.addEventListener(\\n        \\\"pointerdown\\\",\\n        this.#textLayerPointerDown.bind(this),\\n        { signal }\\n      );\\n      this.#textLayer.div.classList.add(\\\"highlighting\\\");\\n    }\\n  }\\n\\n  disableTextSelection() {\\n    this.div.tabIndex = 0;\\n    if (this.#textLayer?.div && this.#textSelectionAC) {\\n      this.#textSelectionAC.abort();\\n      this.#textSelectionAC = null;\\n\\n      this.#textLayer.div.classList.remove(\\\"highlighting\\\");\\n    }\\n  }\\n\\n  #textLayerPointerDown(event) {\\n    \u002F\u002F Unselect all the editors in order to let the user select some text\\n    \u002F\u002F without being annoyed by an editor toolbar.\\n    this.#uiManager.unselectAll();\\n    const { target } = event;\\n    if (\\n      target === this.#textLayer.div ||\\n      ((target.getAttribute(\\\"role\\\") === \\\"img\\\" ||\\n        target.classList.contains(\\\"endOfContent\\\")) &&\\n        this.#textLayer.div.contains(target))\\n    ) {\\n      const { isMac } = FeatureTest.platform;\\n      if (event.button !== 0 || (event.ctrlKey && isMac)) {\\n        \u002F\u002F Do nothing on right click.\\n        return;\\n      }\\n      this.#uiManager.showAllEditors(\\n        \\\"highlight\\\",\\n        true,\\n        \u002F* updateButton = *\u002F true\\n      );\\n      this.#textLayer.div.classList.add(\\\"free\\\");\\n      this.toggleDrawing();\\n      HighlightEditor.startHighlighting(\\n        this,\\n        this.#uiManager.direction === \\\"ltr\\\",\\n        { target: this.#textLayer.div, x: event.x, y: event.y }\\n      );\\n      this.#textLayer.div.addEventListener(\\n        \\\"pointerup\\\",\\n        () => {\\n          this.#textLayer.div.classList.remove(\\\"free\\\");\\n          this.toggleDrawing(true);\\n        },\\n        { once: true, signal: this.#uiManager._signal }\\n      );\\n      event.preventDefault();\\n    }\\n  }\\n\\n  enableClick() {\\n    if (this.#clickAC) {\\n      return;\\n    }\\n    this.#clickAC = new AbortController();\\n    const signal = this.#uiManager.combinedSignal(this.#clickAC);\\n\\n    this.div.addEventListener(\\\"pointerdown\\\", this.pointerdown.bind(this), {\\n      signal,\\n    });\\n    const pointerup = this.pointerup.bind(this);\\n    this.div.addEventListener(\\\"pointerup\\\", pointerup, { signal });\\n    this.div.addEventListener(\\\"pointercancel\\\", pointerup, { signal });\\n  }\\n\\n  disableClick() {\\n    this.#clickAC?.abort();\\n    this.#clickAC = null;\\n  }\\n\\n  attach(editor) {\\n    this.#editors.set(editor.id, editor);\\n    const { annotationElementId } = editor;\\n    if (\\n      annotationElementId &&\\n      this.#uiManager.isDeletedAnnotationElement(annotationElementId)\\n    ) {\\n      this.#uiManager.removeDeletedAnnotationElement(editor);\\n    }\\n  }\\n\\n  detach(editor) {\\n    this.#editors.delete(editor.id);\\n    this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\\n\\n    if (!this.#isDisabling && editor.annotationElementId) {\\n      this.#uiManager.addDeletedAnnotationElement(editor);\\n    }\\n  }\\n\\n  \u002F**\\n   * Remove an editor.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  remove(editor) {\\n    this.detach(editor);\\n    this.#uiManager.removeEditor(editor);\\n    editor.div.remove();\\n    editor.isAttachedToDOM = false;\\n  }\\n\\n  \u002F**\\n   * An editor can have a different parent, for example after having\\n   * being dragged and droped from a page to another.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  changeParent(editor) {\\n    if (editor.parent === this) {\\n      return;\\n    }\\n\\n    if (editor.parent && editor.annotationElementId) {\\n      this.#uiManager.addDeletedAnnotationElement(editor.annotationElementId);\\n      AnnotationEditor.deleteAnnotationElement(editor);\\n      editor.annotationElementId = null;\\n    }\\n\\n    this.attach(editor);\\n    editor.parent?.detach(editor);\\n    editor.setParent(this);\\n    if (editor.div && editor.isAttachedToDOM) {\\n      editor.div.remove();\\n      this.div.append(editor.div);\\n    }\\n  }\\n\\n  \u002F**\\n   * Add a new editor in the current view.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  add(editor) {\\n    if (editor.parent === this && editor.isAttachedToDOM) {\\n      return;\\n    }\\n    this.changeParent(editor);\\n    this.#uiManager.addEditor(editor);\\n    this.attach(editor);\\n\\n    if (!editor.isAttachedToDOM) {\\n      const div = editor.render();\\n      this.div.append(div);\\n      editor.isAttachedToDOM = true;\\n    }\\n\\n    \u002F\u002F The editor will be correctly moved into the DOM (see fixAndSetPosition).\\n    editor.fixAndSetPosition();\\n    editor.onceAdded(\u002F* focus = *\u002F !this.#isEnabling);\\n    this.#uiManager.addToAnnotationStorage(editor);\\n    editor._reportTelemetry(editor.telemetryInitialData);\\n  }\\n\\n  moveEditorInDOM(editor) {\\n    if (!editor.isAttachedToDOM) {\\n      return;\\n    }\\n\\n    const { activeElement } = document;\\n    if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) {\\n      \u002F\u002F When the div is moved in the DOM the focus can move somewhere else,\\n      \u002F\u002F so we want to be sure that the focus will stay on the editor but we\\n      \u002F\u002F don't want to call any focus callbacks, hence we disable them and only\\n      \u002F\u002F re-enable them when the editor has the focus.\\n      editor._focusEventsAllowed = false;\\n      this.#editorFocusTimeoutId = setTimeout(() => {\\n        this.#editorFocusTimeoutId = null;\\n        if (!editor.div.contains(document.activeElement)) {\\n          editor.div.addEventListener(\\n            \\\"focusin\\\",\\n            () => {\\n              editor._focusEventsAllowed = true;\\n            },\\n            { once: true, signal: this.#uiManager._signal }\\n          );\\n          activeElement.focus();\\n        } else {\\n          editor._focusEventsAllowed = true;\\n        }\\n      }, 0);\\n    }\\n\\n    editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(\\n      this.div,\\n      editor.div,\\n      editor.contentDiv,\\n      \u002F* isRemovable = *\u002F true\\n    );\\n  }\\n\\n  \u002F**\\n   * Add or rebuild depending if it has been removed or not.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  addOrRebuild(editor) {\\n    if (editor.needsToBeRebuilt()) {\\n      editor.parent ||= this;\\n      editor.rebuild();\\n      editor.show();\\n    } else {\\n      this.add(editor);\\n    }\\n  }\\n\\n  \u002F**\\n   * Add a new editor and make this addition undoable.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  addUndoableEditor(editor) {\\n    const cmd = () => editor._uiManager.rebuild(editor);\\n    const undo = () => {\\n      editor.remove();\\n    };\\n\\n    this.addCommands({ cmd, undo, mustExec: false });\\n  }\\n\\n  \u002F**\\n   * Get an id for an editor.\\n   * @returns {string}\\n   *\u002F\\n  getNextId() {\\n    return this.#uiManager.getId();\\n  }\\n\\n  get #currentEditorType() {\\n    return AnnotationEditorLayer.#editorTypes.get(this.#uiManager.getMode());\\n  }\\n\\n  combinedSignal(ac) {\\n    return this.#uiManager.combinedSignal(ac);\\n  }\\n\\n  \u002F**\\n   * Create a new editor\\n   * @param {Object} params\\n   * @returns {AnnotationEditor}\\n   *\u002F\\n  #createNewEditor(params) {\\n    const editorType = this.#currentEditorType;\\n    return editorType ? new editorType.prototype.constructor(params) : null;\\n  }\\n\\n  canCreateNewEmptyEditor() {\\n    return this.#currentEditorType?.canCreateNewEmptyEditor();\\n  }\\n\\n  \u002F**\\n   * Paste some content into a new editor.\\n   * @param {Object} options\\n   * @param {Object} params\\n   *\u002F\\n  async pasteEditor(options, params) {\\n    this.updateToolbar(options);\\n    await this.#uiManager.updateMode(options.mode);\\n\\n    const { offsetX, offsetY } = this.#getCenterPoint();\\n    const id = this.getNextId();\\n    const editor = this.#createNewEditor({\\n      parent: this,\\n      id,\\n      x: offsetX,\\n      y: offsetY,\\n      uiManager: this.#uiManager,\\n      isCentered: true,\\n      ...params,\\n    });\\n    if (editor) {\\n      this.add(editor);\\n    }\\n  }\\n\\n  \u002F**\\n   * Create a new editor\\n   * @param {Object} data\\n   * @returns {AnnotationEditor | null}\\n   *\u002F\\n  async deserialize(data) {\\n    return (\\n      (await AnnotationEditorLayer.#editorTypes\\n        .get(data.annotationType ?? data.annotationEditorType)\\n        ?.deserialize(data, this, this.#uiManager)) || null\\n    );\\n  }\\n\\n  \u002F**\\n   * Create and add a new editor.\\n   * @param {PointerEvent} event\\n   * @param {boolean} isCentered\\n   * @param [Object] data\\n   * @returns {AnnotationEditor}\\n   *\u002F\\n  createAndAddNewEditor(event, isCentered, data = {}) {\\n    const id = this.getNextId();\\n    const editor = this.#createNewEditor({\\n      parent: this,\\n      id,\\n      x: event.offsetX,\\n      y: event.offsetY,\\n      uiManager: this.#uiManager,\\n      isCentered,\\n      ...data,\\n    });\\n    if (editor) {\\n      this.add(editor);\\n    }\\n\\n    return editor;\\n  }\\n\\n  #getCenterPoint() {\\n    const { x, y, width, height } = this.div.getBoundingClientRect();\\n    const tlX = Math.max(0, x);\\n    const tlY = Math.max(0, y);\\n    const brX = Math.min(window.innerWidth, x + width);\\n    const brY = Math.min(window.innerHeight, y + height);\\n    const centerX = (tlX + brX) \u002F 2 - x;\\n    const centerY = (tlY + brY) \u002F 2 - y;\\n    const [offsetX, offsetY] =\\n      this.viewport.rotation % 180 === 0\\n        ? [centerX, centerY]\\n        : [centerY, centerX];\\n\\n    return { offsetX, offsetY };\\n  }\\n\\n  \u002F**\\n   * Create and add a new editor.\\n   *\u002F\\n  addNewEditor(data = {}) {\\n    this.createAndAddNewEditor(\\n      this.#getCenterPoint(),\\n      \u002F* isCentered = *\u002F true,\\n      data\\n    );\\n  }\\n\\n  \u002F**\\n   * Set the last selected editor.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  setSelected(editor) {\\n    this.#uiManager.setSelected(editor);\\n  }\\n\\n  \u002F**\\n   * Add or remove an editor the current selection.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  toggleSelected(editor) {\\n    this.#uiManager.toggleSelected(editor);\\n  }\\n\\n  \u002F**\\n   * Unselect an editor.\\n   * @param {AnnotationEditor} editor\\n   *\u002F\\n  unselect(editor) {\\n    this.#uiManager.unselect(editor);\\n  }\\n\\n  \u002F**\\n   * Pointerup callback.\\n   * @param {PointerEvent} event\\n   *\u002F\\n  pointerup(event) {\\n    const { isMac } = FeatureTest.platform;\\n    if (event.button !== 0 || (event.ctrlKey && isMac)) {\\n      \u002F\u002F Don't create an editor on right click.\\n      return;\\n    }\\n\\n    if (event.target !== this.div) {\\n      return;\\n    }\\n\\n    if (!this.#hadPointerDown) {\\n      \u002F\u002F It can happen when the user starts a drag inside a text editor\\n      \u002F\u002F and then releases the mouse button outside of it. In such a case\\n      \u002F\u002F we don't want to create a new editor, hence we check that a pointerdown\\n      \u002F\u002F occurred on this div previously.\\n      return;\\n    }\\n    this.#hadPointerDown = false;\\n\\n    if (\\n      this.#currentEditorType?.isDrawer &&\\n      this.#currentEditorType.supportMultipleDrawings\\n    ) {\\n      return;\\n    }\\n\\n    if (!this.#allowClick) {\\n      this.#allowClick = true;\\n      return;\\n    }\\n\\n    const currentMode = this.#uiManager.getMode();\\n    if (\\n      currentMode === AnnotationEditorType.STAMP ||\\n      currentMode === AnnotationEditorType.SIGNATURE\\n    ) {\\n      this.#uiManager.unselectAll();\\n      return;\\n    }\\n\\n    this.createAndAddNewEditor(event, \u002F* isCentered = *\u002F false);\\n  }\\n\\n  \u002F**\\n   * Pointerdown callback.\\n   * @param {PointerEvent} event\\n   *\u002F\\n  pointerdown(event) {\\n    if (this.#uiManager.getMode() === AnnotationEditorType.HIGHLIGHT) {\\n      this.enableTextSelection();\\n    }\\n    if (this.#hadPointerDown) {\\n      \u002F\u002F It's possible to have a second pointerdown event before a pointerup one\\n      \u002F\u002F when the user puts a finger on a touchscreen and then add a second one\\n      \u002F\u002F to start a pinch-to-zoom gesture.\\n      \u002F\u002F That said, in case it's possible to have two pointerdown events with\\n      \u002F\u002F a mouse, we don't want to create a new editor in such a case either.\\n      this.#hadPointerDown = false;\\n      return;\\n    }\\n    const { isMac } = FeatureTest.platform;\\n    if (event.button !== 0 || (event.ctrlKey && isMac)) {\\n      \u002F\u002F Do nothing on right click.\\n      return;\\n    }\\n\\n    if (event.target !== this.div) {\\n      return;\\n    }\\n\\n    this.#hadPointerDown = true;\\n\\n    if (this.#currentEditorType?.isDrawer) {\\n      this.startDrawingSession(event);\\n      return;\\n    }\\n\\n    const editor = this.#uiManager.getActive();\\n    this.#allowClick = !editor || editor.isEmpty();\\n  }\\n\\n  startDrawingSession(event) {\\n    this.div.focus({\\n      preventScroll: true,\\n    });\\n    if (this.#drawingAC) {\\n      this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\\n      return;\\n    }\\n\\n    this.#uiManager.setCurrentDrawingSession(this);\\n    this.#drawingAC = new AbortController();\\n    const signal = this.#uiManager.combinedSignal(this.#drawingAC);\\n    this.div.addEventListener(\\n      \\\"blur\\\",\\n      ({ relatedTarget }) => {\\n        if (relatedTarget && !this.div.contains(relatedTarget)) {\\n          this.#focusedElement = null;\\n          this.commitOrRemove();\\n        }\\n      },\\n      { signal }\\n    );\\n    this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\\n  }\\n\\n  pause(on) {\\n    if (on) {\\n      const { activeElement } = document;\\n      if (this.div.contains(activeElement)) {\\n        this.#focusedElement = activeElement;\\n      }\\n      return;\\n    }\\n    if (this.#focusedElement) {\\n      setTimeout(() => {\\n        this.#focusedElement?.focus();\\n        this.#focusedElement = null;\\n      }, 0);\\n    }\\n  }\\n\\n  endDrawingSession(isAborted = false) {\\n    if (!this.#drawingAC) {\\n      return null;\\n    }\\n    this.#uiManager.setCurrentDrawingSession(null);\\n    this.#drawingAC.abort();\\n    this.#drawingAC = null;\\n    this.#focusedElement = null;\\n    return this.#currentEditorType.endDrawing(isAborted);\\n  }\\n\\n  \u002F**\\n   *\\n   * @param {AnnotationEditor} editor\\n   * @param {number} x\\n   * @param {number} y\\n   * @returns\\n   *\u002F\\n  findNewParent(editor, x, y) {\\n    const layer = this.#uiManager.findParent(x, y);\\n    if (layer === null || layer === this) {\\n      return false;\\n    }\\n    layer.changeParent(editor);\\n    return true;\\n  }\\n\\n  commitOrRemove() {\\n    if (this.#drawingAC) {\\n      this.endDrawingSession();\\n      return true;\\n    }\\n    return false;\\n  }\\n\\n  onScaleChanging() {\\n    if (!this.#drawingAC) {\\n      return;\\n    }\\n    this.#currentEditorType.onScaleChangingWhenDrawing(this);\\n  }\\n\\n  \u002F**\\n   * Destroy the main editor.\\n   *\u002F\\n  destroy() {\\n    this.commitOrRemove();\\n    if (this.#uiManager.getActive()?.parent === this) {\\n      \u002F\u002F We need to commit the current editor before destroying the layer.\\n      this.#uiManager.commitOrRemove();\\n      this.#uiManager.setActiveEditor(null);\\n    }\\n\\n    if (this.#editorFocusTimeoutId) {\\n      clearTimeout(this.#editorFocusTimeoutId);\\n      this.#editorFocusTimeoutId = null;\\n    }\\n\\n    for (const editor of this.#editors.values()) {\\n      this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\\n      editor.setParent(null);\\n      editor.isAttachedToDOM = false;\\n      editor.div.remove();\\n    }\\n    this.div = null;\\n    this.#editors.clear();\\n    this.#uiManager.removeLayer(this);\\n  }\\n\\n  #cleanup() {\\n    \u002F\u002F When we're cleaning up, some editors are removed but we don't want\\n    \u002F\u002F to add a new one which will induce an addition in this.#editors, hence\\n    \u002F\u002F an infinite loop.\\n    for (const editor of this.#editors.values()) {\\n      if (editor.isEmpty()) {\\n        editor.remove();\\n      }\\n    }\\n  }\\n\\n  \u002F**\\n   * Render the main editor.\\n   * @param {RenderEditorLayerOptions} parameters\\n   *\u002F\\n  render({ viewport }) {\\n    this.viewport = viewport;\\n    setLayerDimensions(this.div, viewport);\\n    for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\\n      this.add(editor);\\n      editor.rebuild();\\n    }\\n    \u002F\u002F We're maybe rendering a layer which was invisible when we started to edit\\n    \u002F\u002F so we must set the different callbacks for it.\\n    this.updateMode();\\n  }\\n\\n  \u002F**\\n   * Update the main editor.\\n   * @param {RenderEditorLayerOptions} parameters\\n   *\u002F\\n  update({ viewport }) {\\n    \u002F\u002F Editors have their dimensions\u002Fpositions in percent so to avoid any\\n    \u002F\u002F issues (see #15582), we must commit the current one before changing\\n    \u002F\u002F the viewport.\\n    this.#uiManager.commitOrRemove();\\n    this.#cleanup();\\n\\n    const oldRotation = this.viewport.rotation;\\n    const rotation = viewport.rotation;\\n\\n    this.viewport = viewport;\\n    setLayerDimensions(this.div, { rotation });\\n    if (oldRotation !== rotation) {\\n      for (const editor of this.#editors.values()) {\\n        editor.rotate(rotation);\\n      }\\n    }\\n  }\\n\\n  \u002F**\\n   * Get page dimensions.\\n   * @returns {Object} dimensions.\\n   *\u002F\\n  get pageDimensions() {\\n    const { pageWidth, pageHeight } = this.viewport.rawDims;\\n    return [pageWidth, pageHeight];\\n  }\\n\\n  get scale() {\\n    return this.#uiManager.viewParameters.realScale;\\n  }\\n}\\n\\nexport { AnnotationEditorLayer };\\n\",\"\u002F* Copyright 2023 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { DOMSVGFactory } from \\\".\u002Fsvg_factory.js\\\";\\nimport { shadow } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\n\u002F**\\n * Manage the SVGs drawn on top of the page canvas.\\n * It's important to have them directly on top of the canvas because we want to\\n * be able to use mix-blend-mode for some of them.\\n *\u002F\\nclass DrawLayer {\\n  #parent = null;\\n\\n  #mapping = new Map();\\n\\n  #toUpdate = new Map();\\n\\n  static #id = 0;\\n\\n  constructor({ pageIndex }) {\\n    this.pageIndex = pageIndex;\\n  }\\n\\n  setParent(parent) {\\n    if (!this.#parent) {\\n      this.#parent = parent;\\n      return;\\n    }\\n\\n    if (this.#parent !== parent) {\\n      if (this.#mapping.size > 0) {\\n        for (const root of this.#mapping.values()) {\\n          root.remove();\\n          parent.append(root);\\n        }\\n      }\\n      this.#parent = parent;\\n    }\\n  }\\n\\n  static get _svgFactory() {\\n    return shadow(this, \\\"_svgFactory\\\", new DOMSVGFactory());\\n  }\\n\\n  static #setBox(element, [x, y, width, height]) {\\n    const { style } = element;\\n    style.top = `${100 * y}%`;\\n    style.left = `${100 * x}%`;\\n    style.width = `${100 * width}%`;\\n    style.height = `${100 * height}%`;\\n  }\\n\\n  #createSVG() {\\n    const svg = DrawLayer._svgFactory.create(1, 1, \u002F* skipDimensions = *\u002F true);\\n    this.#parent.append(svg);\\n    svg.setAttribute(\\\"aria-hidden\\\", true);\\n\\n    return svg;\\n  }\\n\\n  #createClipPath(defs, pathId) {\\n    const clipPath = DrawLayer._svgFactory.createElement(\\\"clipPath\\\");\\n    defs.append(clipPath);\\n    const clipPathId = `clip_${pathId}`;\\n    clipPath.setAttribute(\\\"id\\\", clipPathId);\\n    clipPath.setAttribute(\\\"clipPathUnits\\\", \\\"objectBoundingBox\\\");\\n    const clipPathUse = DrawLayer._svgFactory.createElement(\\\"use\\\");\\n    clipPath.append(clipPathUse);\\n    clipPathUse.setAttribute(\\\"href\\\", `#${pathId}`);\\n    clipPathUse.classList.add(\\\"clip\\\");\\n\\n    return clipPathId;\\n  }\\n\\n  #updateProperties(element, properties) {\\n    for (const [key, value] of Object.entries(properties)) {\\n      if (value === null) {\\n        element.removeAttribute(key);\\n      } else {\\n        element.setAttribute(key, value);\\n      }\\n    }\\n  }\\n\\n  draw(properties, isPathUpdatable = false, hasClip = false) {\\n    const id = DrawLayer.#id++;\\n    const root = this.#createSVG();\\n\\n    const defs = DrawLayer._svgFactory.createElement(\\\"defs\\\");\\n    root.append(defs);\\n    const path = DrawLayer._svgFactory.createElement(\\\"path\\\");\\n    defs.append(path);\\n    const pathId = `path_p${this.pageIndex}_${id}`;\\n    path.setAttribute(\\\"id\\\", pathId);\\n    path.setAttribute(\\\"vector-effect\\\", \\\"non-scaling-stroke\\\");\\n\\n    if (isPathUpdatable) {\\n      this.#toUpdate.set(id, path);\\n    }\\n\\n    \u002F\u002F Create the clipping path for the editor div.\\n    const clipPathId = hasClip ? this.#createClipPath(defs, pathId) : null;\\n\\n    const use = DrawLayer._svgFactory.createElement(\\\"use\\\");\\n    root.append(use);\\n    use.setAttribute(\\\"href\\\", `#${pathId}`);\\n    this.updateProperties(root, properties);\\n\\n    this.#mapping.set(id, root);\\n\\n    return { id, clipPathId: `url(#${clipPathId})` };\\n  }\\n\\n  drawOutline(properties, mustRemoveSelfIntersections) {\\n    \u002F\u002F We cannot draw the outline directly in the SVG for highlights because\\n    \u002F\u002F it composes with its parent with mix-blend-mode: multiply.\\n    \u002F\u002F But the outline has a different mix-blend-mode, so we need to draw it in\\n    \u002F\u002F its own SVG.\\n    const id = DrawLayer.#id++;\\n    const root = this.#createSVG();\\n    const defs = DrawLayer._svgFactory.createElement(\\\"defs\\\");\\n    root.append(defs);\\n    const path = DrawLayer._svgFactory.createElement(\\\"path\\\");\\n    defs.append(path);\\n    const pathId = `path_p${this.pageIndex}_${id}`;\\n    path.setAttribute(\\\"id\\\", pathId);\\n    path.setAttribute(\\\"vector-effect\\\", \\\"non-scaling-stroke\\\");\\n\\n    let maskId;\\n    if (mustRemoveSelfIntersections) {\\n      const mask = DrawLayer._svgFactory.createElement(\\\"mask\\\");\\n      defs.append(mask);\\n      maskId = `mask_p${this.pageIndex}_${id}`;\\n      mask.setAttribute(\\\"id\\\", maskId);\\n      mask.setAttribute(\\\"maskUnits\\\", \\\"objectBoundingBox\\\");\\n      const rect = DrawLayer._svgFactory.createElement(\\\"rect\\\");\\n      mask.append(rect);\\n      rect.setAttribute(\\\"width\\\", \\\"1\\\");\\n      rect.setAttribute(\\\"height\\\", \\\"1\\\");\\n      rect.setAttribute(\\\"fill\\\", \\\"white\\\");\\n      const use = DrawLayer._svgFactory.createElement(\\\"use\\\");\\n      mask.append(use);\\n      use.setAttribute(\\\"href\\\", `#${pathId}`);\\n      use.setAttribute(\\\"stroke\\\", \\\"none\\\");\\n      use.setAttribute(\\\"fill\\\", \\\"black\\\");\\n      use.setAttribute(\\\"fill-rule\\\", \\\"nonzero\\\");\\n      use.classList.add(\\\"mask\\\");\\n    }\\n\\n    const use1 = DrawLayer._svgFactory.createElement(\\\"use\\\");\\n    root.append(use1);\\n    use1.setAttribute(\\\"href\\\", `#${pathId}`);\\n    if (maskId) {\\n      use1.setAttribute(\\\"mask\\\", `url(#${maskId})`);\\n    }\\n    const use2 = use1.cloneNode();\\n    root.append(use2);\\n    use1.classList.add(\\\"mainOutline\\\");\\n    use2.classList.add(\\\"secondaryOutline\\\");\\n\\n    this.updateProperties(root, properties);\\n\\n    this.#mapping.set(id, root);\\n\\n    return id;\\n  }\\n\\n  finalizeDraw(id, properties) {\\n    this.#toUpdate.delete(id);\\n    this.updateProperties(id, properties);\\n  }\\n\\n  updateProperties(elementOrId, properties) {\\n    if (!properties) {\\n      return;\\n    }\\n    const { root, bbox, rootClass, path } = properties;\\n    const element =\\n      typeof elementOrId === \\\"number\\\"\\n        ? this.#mapping.get(elementOrId)\\n        : elementOrId;\\n    if (!element) {\\n      return;\\n    }\\n    if (root) {\\n      this.#updateProperties(element, root);\\n    }\\n    if (bbox) {\\n      DrawLayer.#setBox(element, bbox);\\n    }\\n    if (rootClass) {\\n      const { classList } = element;\\n      for (const [className, value] of Object.entries(rootClass)) {\\n        classList.toggle(className, value);\\n      }\\n    }\\n    if (path) {\\n      const defs = element.firstChild;\\n      const pathElement = defs.firstChild;\\n      this.#updateProperties(pathElement, path);\\n    }\\n  }\\n\\n  updateParent(id, layer) {\\n    if (layer === this) {\\n      return;\\n    }\\n    const root = this.#mapping.get(id);\\n    if (!root) {\\n      return;\\n    }\\n    layer.#parent.append(root);\\n    this.#mapping.delete(id);\\n    layer.#mapping.set(id, root);\\n  }\\n\\n  remove(id) {\\n    this.#toUpdate.delete(id);\\n    if (this.#parent === null) {\\n      return;\\n    }\\n    this.#mapping.get(id).remove();\\n    this.#mapping.delete(id);\\n  }\\n\\n  destroy() {\\n    this.#parent = null;\\n    for (const root of this.#mapping.values()) {\\n      root.remove();\\n    }\\n    this.#mapping.clear();\\n    this.#toUpdate.clear();\\n  }\\n}\\n\\nexport { DrawLayer };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fdisplay\u002Fapi\\\").OnProgressParameters} OnProgressParameters *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fdisplay\u002Fapi\\\").PDFDocumentLoadingTask} PDFDocumentLoadingTask *\u002F\\n\u002F** @typedef {import(\\\".\u002Fdisplay\u002Fapi\\\").PDFDocumentProxy} PDFDocumentProxy *\u002F\\n\u002F** @typedef {import(\\\".\u002Fdisplay\u002Fapi\\\").PDFPageProxy} PDFPageProxy *\u002F\\n\u002F** @typedef {import(\\\".\u002Fdisplay\u002Fapi\\\").RenderTask} RenderTask *\u002F\\n\u002F** @typedef {import(\\\".\u002Fdisplay\u002Fdisplay_utils\\\").PageViewport} PageViewport *\u002F\\n\\nimport {\\n  AbortException,\\n  AnnotationEditorParamsType,\\n  AnnotationEditorType,\\n  AnnotationMode,\\n  AnnotationType,\\n  createValidAbsoluteUrl,\\n  FeatureTest,\\n  getUuid,\\n  ImageKind,\\n  InvalidPDFException,\\n  MathClamp,\\n  normalizeUnicode,\\n  OPS,\\n  PasswordResponses,\\n  PermissionFlag,\\n  ResponseException,\\n  shadow,\\n  updateUrlHash,\\n  Util,\\n  VerbosityLevel,\\n} from \\\".\u002Fshared\u002Futil.js\\\";\\nimport {\\n  build,\\n  getDocument,\\n  PDFDataRangeTransport,\\n  PDFWorker,\\n  version,\\n} from \\\".\u002Fdisplay\u002Fapi.js\\\";\\nimport {\\n  fetchData,\\n  getFilenameFromUrl,\\n  getPdfFilenameFromUrl,\\n  getXfaPageViewport,\\n  isDataScheme,\\n  isPdfFile,\\n  noContextMenu,\\n  OutputScale,\\n  PDFDateString,\\n  PixelsPerInch,\\n  RenderingCancelledException,\\n  setLayerDimensions,\\n  stopEvent,\\n  SupportedImageMimeTypes,\\n} from \\\".\u002Fdisplay\u002Fdisplay_utils.js\\\";\\nimport { AnnotationEditorLayer } from \\\".\u002Fdisplay\u002Feditor\u002Fannotation_editor_layer.js\\\";\\nimport { AnnotationEditorUIManager } from \\\".\u002Fdisplay\u002Feditor\u002Ftools.js\\\";\\nimport { AnnotationLayer } from \\\".\u002Fdisplay\u002Fannotation_layer.js\\\";\\nimport { ColorPicker } from \\\".\u002Fdisplay\u002Feditor\u002Fcolor_picker.js\\\";\\nimport { DOMSVGFactory } from \\\".\u002Fdisplay\u002Fsvg_factory.js\\\";\\nimport { DrawLayer } from \\\".\u002Fdisplay\u002Fdraw_layer.js\\\";\\nimport { GlobalWorkerOptions } from \\\".\u002Fdisplay\u002Fworker_options.js\\\";\\nimport { HighlightOutliner } from \\\".\u002Fdisplay\u002Feditor\u002Fdrawers\u002Fhighlight.js\\\";\\nimport { isValidExplicitDest } from \\\".\u002Fdisplay\u002Fapi_utils.js\\\";\\nimport { SignatureExtractor } from \\\".\u002Fdisplay\u002Feditor\u002Fdrawers\u002Fsignaturedraw.js\\\";\\nimport { TextLayer } from \\\".\u002Fdisplay\u002Ftext_layer.js\\\";\\nimport { TouchManager } from \\\".\u002Fdisplay\u002Ftouch_manager.js\\\";\\nimport { XfaLayer } from \\\".\u002Fdisplay\u002Fxfa_layer.js\\\";\\n\\nif (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING || GENERIC\\\")) {\\n  globalThis._pdfjsTestingUtils = {\\n    HighlightOutliner,\\n  };\\n}\\n\\nglobalThis.pdfjsLib = {\\n  AbortException,\\n  AnnotationEditorLayer,\\n  AnnotationEditorParamsType,\\n  AnnotationEditorType,\\n  AnnotationEditorUIManager,\\n  AnnotationLayer,\\n  AnnotationMode,\\n  AnnotationType,\\n  build,\\n  ColorPicker,\\n  createValidAbsoluteUrl,\\n  DOMSVGFactory,\\n  DrawLayer,\\n  FeatureTest,\\n  fetchData,\\n  getDocument,\\n  getFilenameFromUrl,\\n  getPdfFilenameFromUrl,\\n  getUuid,\\n  getXfaPageViewport,\\n  GlobalWorkerOptions,\\n  ImageKind,\\n  InvalidPDFException,\\n  isDataScheme,\\n  isPdfFile,\\n  isValidExplicitDest,\\n  MathClamp,\\n  noContextMenu,\\n  normalizeUnicode,\\n  OPS,\\n  OutputScale,\\n  PasswordResponses,\\n  PDFDataRangeTransport,\\n  PDFDateString,\\n  PDFWorker,\\n  PermissionFlag,\\n  PixelsPerInch,\\n  RenderingCancelledException,\\n  ResponseException,\\n  setLayerDimensions,\\n  shadow,\\n  SignatureExtractor,\\n  stopEvent,\\n  SupportedImageMimeTypes,\\n  TextLayer,\\n  TouchManager,\\n  updateUrlHash,\\n  Util,\\n  VerbosityLevel,\\n  version,\\n  XfaLayer,\\n};\\n\\nexport {\\n  AbortException,\\n  AnnotationEditorLayer,\\n  AnnotationEditorParamsType,\\n  AnnotationEditorType,\\n  AnnotationEditorUIManager,\\n  AnnotationLayer,\\n  AnnotationMode,\\n  AnnotationType,\\n  build,\\n  ColorPicker,\\n  createValidAbsoluteUrl,\\n  DOMSVGFactory,\\n  DrawLayer,\\n  FeatureTest,\\n  fetchData,\\n  getDocument,\\n  getFilenameFromUrl,\\n  getPdfFilenameFromUrl,\\n  getUuid,\\n  getXfaPageViewport,\\n  GlobalWorkerOptions,\\n  ImageKind,\\n  InvalidPDFException,\\n  isDataScheme,\\n  isPdfFile,\\n  isValidExplicitDest,\\n  MathClamp,\\n  noContextMenu,\\n  normalizeUnicode,\\n  OPS,\\n  OutputScale,\\n  PasswordResponses,\\n  PDFDataRangeTransport,\\n  PDFDateString,\\n  PDFWorker,\\n  PermissionFlag,\\n  PixelsPerInch,\\n  RenderingCancelledException,\\n  ResponseException,\\n  setLayerDimensions,\\n  shadow,\\n  SignatureExtractor,\\n  stopEvent,\\n  SupportedImageMimeTypes,\\n  TextLayer,\\n  TouchManager,\\n  updateUrlHash,\\n  Util,\\n  VerbosityLevel,\\n  version,\\n  XfaLayer,\\n};\\n\"],\"names\":[\"isNodeJS\",\"process\",\"versions\",\"nw\",\"electron\",\"type\",\"FONT_IDENTITY_MATRIX\",\"LINE_FACTOR\",\"LINE_DESCENT_FACTOR\",\"BASELINE_FACTOR\",\"RenderingIntentFlag\",\"ANY\",\"DISPLAY\",\"PRINT\",\"SAVE\",\"ANNOTATIONS_FORMS\",\"ANNOTATIONS_STORAGE\",\"ANNOTATIONS_DISABLE\",\"IS_EDITING\",\"OPLIST\",\"AnnotationMode\",\"DISABLE\",\"ENABLE\",\"ENABLE_FORMS\",\"ENABLE_STORAGE\",\"AnnotationEditorPrefix\",\"AnnotationEditorType\",\"NONE\",\"FREETEXT\",\"HIGHLIGHT\",\"STAMP\",\"INK\",\"SIGNATURE\",\"AnnotationEditorParamsType\",\"RESIZE\",\"CREATE\",\"FREETEXT_SIZE\",\"FREETEXT_COLOR\",\"FREETEXT_OPACITY\",\"INK_COLOR\",\"INK_THICKNESS\",\"INK_OPACITY\",\"HIGHLIGHT_COLOR\",\"HIGHLIGHT_DEFAULT_COLOR\",\"HIGHLIGHT_THICKNESS\",\"HIGHLIGHT_FREE\",\"HIGHLIGHT_SHOW_ALL\",\"DRAW_STEP\",\"PermissionFlag\",\"MODIFY_CONTENTS\",\"COPY\",\"MODIFY_ANNOTATIONS\",\"FILL_INTERACTIVE_FORMS\",\"COPY_FOR_ACCESSIBILITY\",\"ASSEMBLE\",\"PRINT_HIGH_QUALITY\",\"TextRenderingMode\",\"FILL\",\"STROKE\",\"FILL_STROKE\",\"INVISIBLE\",\"FILL_ADD_TO_PATH\",\"STROKE_ADD_TO_PATH\",\"FILL_STROKE_ADD_TO_PATH\",\"ADD_TO_PATH\",\"FILL_STROKE_MASK\",\"ADD_TO_PATH_FLAG\",\"ImageKind\",\"GRAYSCALE_1BPP\",\"RGB_24BPP\",\"RGBA_32BPP\",\"AnnotationType\",\"TEXT\",\"LINK\",\"LINE\",\"SQUARE\",\"CIRCLE\",\"POLYGON\",\"POLYLINE\",\"UNDERLINE\",\"SQUIGGLY\",\"STRIKEOUT\",\"CARET\",\"POPUP\",\"FILEATTACHMENT\",\"SOUND\",\"MOVIE\",\"WIDGET\",\"SCREEN\",\"PRINTERMARK\",\"TRAPNET\",\"WATERMARK\",\"THREED\",\"REDACT\",\"AnnotationReplyType\",\"GROUP\",\"REPLY\",\"AnnotationFlag\",\"HIDDEN\",\"NOZOOM\",\"NOROTATE\",\"NOVIEW\",\"READONLY\",\"LOCKED\",\"TOGGLENOVIEW\",\"LOCKEDCONTENTS\",\"AnnotationFieldFlag\",\"REQUIRED\",\"NOEXPORT\",\"MULTILINE\",\"PASSWORD\",\"NOTOGGLETOOFF\",\"RADIO\",\"PUSHBUTTON\",\"COMBO\",\"EDIT\",\"SORT\",\"FILESELECT\",\"MULTISELECT\",\"DONOTSPELLCHECK\",\"DONOTSCROLL\",\"COMB\",\"RICHTEXT\",\"RADIOSINUNISON\",\"COMMITONSELCHANGE\",\"AnnotationBorderStyleType\",\"SOLID\",\"DASHED\",\"BEVELED\",\"INSET\",\"AnnotationActionEventType\",\"E\",\"X\",\"D\",\"U\",\"Fo\",\"Bl\",\"PO\",\"PC\",\"PV\",\"PI\",\"K\",\"F\",\"V\",\"C\",\"DocumentActionEventType\",\"WC\",\"WS\",\"DS\",\"WP\",\"DP\",\"PageActionEventType\",\"O\",\"VerbosityLevel\",\"ERRORS\",\"WARNINGS\",\"INFOS\",\"OPS\",\"dependency\",\"setLineWidth\",\"setLineCap\",\"setLineJoin\",\"setMiterLimit\",\"setDash\",\"setRenderingIntent\",\"setFlatness\",\"setGState\",\"save\",\"restore\",\"transform\",\"moveTo\",\"lineTo\",\"curveTo\",\"curveTo2\",\"curveTo3\",\"closePath\",\"rectangle\",\"stroke\",\"closeStroke\",\"fill\",\"eoFill\",\"fillStroke\",\"eoFillStroke\",\"closeFillStroke\",\"closeEOFillStroke\",\"endPath\",\"clip\",\"eoClip\",\"beginText\",\"endText\",\"setCharSpacing\",\"setWordSpacing\",\"setHScale\",\"setLeading\",\"setFont\",\"setTextRenderingMode\",\"setTextRise\",\"moveText\",\"setLeadingMoveText\",\"setTextMatrix\",\"nextLine\",\"showText\",\"showSpacedText\",\"nextLineShowText\",\"nextLineSetSpacingShowText\",\"setCharWidth\",\"setCharWidthAndBounds\",\"setStrokeColorSpace\",\"setFillColorSpace\",\"setStrokeColor\",\"setStrokeColorN\",\"setFillColor\",\"setFillColorN\",\"setStrokeGray\",\"setFillGray\",\"setStrokeRGBColor\",\"setFillRGBColor\",\"setStrokeCMYKColor\",\"setFillCMYKColor\",\"shadingFill\",\"beginInlineImage\",\"beginImageData\",\"endInlineImage\",\"paintXObject\",\"markPoint\",\"markPointProps\",\"beginMarkedContent\",\"beginMarkedContentProps\",\"endMarkedContent\",\"beginCompat\",\"endCompat\",\"paintFormXObjectBegin\",\"paintFormXObjectEnd\",\"beginGroup\",\"endGroup\",\"beginAnnotation\",\"endAnnotation\",\"paintImageMaskXObject\",\"paintImageMaskXObjectGroup\",\"paintImageXObject\",\"paintInlineImageXObject\",\"paintInlineImageXObjectGroup\",\"paintImageXObjectRepeat\",\"paintImageMaskXObjectRepeat\",\"paintSolidColorImageMask\",\"constructPath\",\"setStrokeTransparent\",\"setFillTransparent\",\"rawFillPath\",\"DrawOPS\",\"PasswordResponses\",\"NEED_PASSWORD\",\"INCORRECT_PASSWORD\",\"verbosity\",\"setVerbosityLevel\",\"level\",\"Number\",\"isInteger\",\"getVerbosityLevel\",\"info\",\"msg\",\"console\",\"log\",\"warn\",\"unreachable\",\"Error\",\"assert\",\"cond\",\"_isValidProtocol\",\"url\",\"protocol\",\"createValidAbsoluteUrl\",\"baseUrl\",\"options\",\"addDefaultProtocol\",\"startsWith\",\"dots\",\"match\",\"length\",\"tryConvertEncoding\",\"stringToUTF8String\",\"absoluteUrl\",\"URL\",\"parse\",\"updateUrlHash\",\"hash\",\"allowRel\",\"res\",\"href\",\"split\",\"shadow\",\"obj\",\"prop\",\"value\",\"nonSerializable\",\"Object\",\"defineProperty\",\"enumerable\",\"configurable\",\"writable\",\"BaseException\",\"BaseExceptionClosure\",\"message\",\"name\",\"prototype\",\"constructor\",\"PasswordException\",\"code\",\"UnknownErrorException\",\"details\",\"InvalidPDFException\",\"ResponseException\",\"status\",\"missing\",\"FormatError\",\"AbortException\",\"bytesToString\",\"bytes\",\"undefined\",\"MAX_ARGUMENT_COUNT\",\"String\",\"fromCharCode\",\"apply\",\"strBuf\",\"i\",\"chunkEnd\",\"Math\",\"min\",\"chunk\",\"subarray\",\"push\",\"join\",\"stringToBytes\",\"str\",\"Uint8Array\",\"charCodeAt\",\"string32\",\"objectSize\",\"keys\",\"isLittleEndian\",\"buffer8\",\"view32\",\"Uint32Array\",\"buffer\",\"isEvalSupported\",\"Function\",\"FeatureTest\",\"isOffscreenCanvasSupported\",\"OffscreenCanvas\",\"isImageDecoderSupported\",\"ImageDecoder\",\"platform\",\"userAgent\",\"navigator\",\"isAndroid\",\"includes\",\"isLinux\",\"isMac\",\"isWindows\",\"isFirefox\",\"isCSSRoundSupported\",\"globalThis\",\"CSS\",\"supports\",\"hexNumbers\",\"Array\",\"from\",\"n\",\"toString\",\"padStart\",\"Util\",\"makeHexColor\",\"r\",\"g\",\"b\",\"scaleMinMax\",\"minMax\",\"temp\",\"m1\",\"m2\",\"applyTransform\",\"p\",\"m\",\"pos\",\"p0\",\"p1\",\"applyTransformToBezier\",\"m0\",\"m3\",\"m4\",\"m5\",\"pI\",\"pI1\",\"applyInverseTransform\",\"d\",\"axialAlignedBoundingBox\",\"rect\",\"output\",\"r0\",\"r1\",\"r2\",\"r3\",\"a0\",\"a2\",\"a1\",\"a3\",\"b0\",\"b2\",\"b1\",\"b3\",\"m1r0\",\"m1r2\",\"m2r1\",\"m2r3\",\"max\",\"inverseTransform\",\"singularValueDecompose2dScale\",\"matrix\",\"a\",\"c\",\"first\",\"second\",\"sqrt\",\"normalizeRect\",\"slice\",\"intersect\",\"rect1\",\"rect2\",\"xLow\",\"xHigh\",\"yLow\",\"yHigh\",\"pointBoundingBox\",\"x\",\"y\",\"rectBoundingBox\",\"x0\",\"y0\",\"x1\",\"y1\",\"getExtremumOnCurve\",\"#getExtremumOnCurve\",\"x2\",\"x3\",\"y2\",\"y3\",\"t\",\"mt\",\"tt\",\"ttt\",\"getExtremum\",\"#getExtremum\",\"abs\",\"delta\",\"sqrtDelta\",\"bezierBoundingBox\",\"PDFStringTranslateTable\",\"stringToPDFString\",\"keepEscapeSequence\",\"encoding\",\"decoder\",\"TextDecoder\",\"fatal\",\"decoded\",\"decode\",\"replaceAll\",\"ex\",\"ii\",\"charCode\",\"charAt\",\"decodeURIComponent\",\"escape\",\"utf8StringToString\",\"unescape\",\"encodeURIComponent\",\"isArrayEqual\",\"arr1\",\"arr2\",\"getModificationDate\",\"date\",\"Date\",\"getUTCFullYear\",\"getUTCMonth\",\"getUTCDate\",\"getUTCHours\",\"getUTCMinutes\",\"getUTCSeconds\",\"NormalizeRegex\",\"NormalizationMap\",\"normalizeUnicode\",\"Map\",\"_\",\"p2\",\"normalize\",\"get\",\"getUuid\",\"crypto\",\"randomUUID\",\"buf\",\"getRandomValues\",\"AnnotationPrefix\",\"_isValidExplicitDest\",\"validRef\",\"validName\",\"dest\",\"isArray\",\"page\",\"zoom\",\"args\",\"argsLen\",\"allowNull\",\"arg\",\"MathClamp\",\"v\",\"toHexUtil\",\"arr\",\"toHex\",\"num\",\"toBase64Util\",\"toBase64\",\"btoa\",\"fromBase64Util\",\"fromBase64\",\"atob\",\"sumPrecise\",\"numbers\",\"reduce\",\"AbortSignal\",\"any\",\"iterable\",\"ac\",\"AbortController\",\"signal\",\"s\",\"aborted\",\"abort\",\"reason\",\"addEventListener\",\"SVG_NS\",\"PixelsPerInch\",\"PDF\",\"PDF_TO_CSS_UNITS\",\"fetchData\",\"isValidFetchUrl\",\"document\",\"baseURI\",\"response\",\"fetch\",\"ok\",\"statusText\",\"arrayBuffer\",\"blob\",\"json\",\"text\",\"Promise\",\"resolve\",\"reject\",\"request\",\"XMLHttpRequest\",\"open\",\"responseType\",\"onreadystatechange\",\"readyState\",\"DONE\",\"responseText\",\"send\",\"PageViewport\",\"viewBox\",\"userUnit\",\"scale\",\"rotation\",\"offsetX\",\"offsetY\",\"dontFlip\",\"centerX\",\"centerY\",\"rotateA\",\"rotateB\",\"rotateC\",\"rotateD\",\"offsetCanvasX\",\"offsetCanvasY\",\"width\",\"height\",\"rawDims\",\"dims\",\"pageWidth\",\"pageHeight\",\"pageX\",\"pageY\",\"clone\",\"convertToViewportPoint\",\"convertToViewportRectangle\",\"topLeft\",\"bottomRight\",\"convertToPdfPoint\",\"RenderingCancelledException\",\"extraDelay\",\"isDataScheme\",\"trim\",\"substring\",\"toLowerCase\",\"isPdfFile\",\"filename\",\"test\",\"getFilenameFromUrl\",\"lastIndexOf\",\"getPdfFilenameFromUrl\",\"defaultFilename\",\"reURI\",\"reFilename\",\"splitURI\",\"exec\",\"suggestedFilename\",\"StatTimer\",\"started\",\"create\",\"times\",\"time\",\"now\",\"timeEnd\",\"start\",\"end\",\"outBuf\",\"longest\",\"padEnd\",\"noContextMenu\",\"e\",\"preventDefault\",\"stopEvent\",\"stopPropagation\",\"deprecated\",\"PDFDateString\",\"regex\",\"toDateObject\",\"input\",\"RegExp\",\"matches\",\"year\",\"parseInt\",\"month\",\"day\",\"hour\",\"minute\",\"universalTimeRelation\",\"offsetHour\",\"offsetMinute\",\"UTC\",\"getXfaPageViewport\",\"xfaPage\",\"attributes\",\"style\",\"getRGB\",\"color\",\"colorRGB\",\"map\",\"getColorValues\",\"colors\",\"span\",\"createElement\",\"visibility\",\"colorScheme\",\"body\",\"append\",\"computedColor\",\"window\",\"getComputedStyle\",\"set\",\"remove\",\"getCurrentTransform\",\"ctx\",\"f\",\"getTransform\",\"getCurrentTransformInverse\",\"invertSelf\",\"setLayerDimensions\",\"div\",\"viewport\",\"mustFlip\",\"mustRotate\",\"useRound\",\"w\",\"h\",\"widthStr\",\"heightStr\",\"setAttribute\",\"OutputScale\",\"pixelRatio\",\"sx\",\"sy\",\"scaled\",\"symmetric\",\"limitCanvas\",\"maxPixels\",\"maxDim\",\"capAreaFactor\",\"maxAreaScale\",\"Infinity\",\"maxWidthScale\",\"maxHeightScale\",\"capPixels\",\"maxScale\",\"devicePixelRatio\",\"winPixels\",\"ceil\",\"screen\",\"availWidth\",\"availHeight\",\"SupportedImageMimeTypes\",\"EditorToolbar\",\"toolbar\",\"colorPicker\",\"editor\",\"buttons\",\"altText\",\"signatureDescriptionButton\",\"l10nRemove\",\"freeze\",\"freetext\",\"highlight\",\"ink\",\"stamp\",\"signature\",\"render\",\"editToolbar\",\"classList\",\"add\",\"_uiManager\",\"_signal\",\"pointerDown\",\"className\",\"position\",\"toolbarPosition\",\"direction\",\"insetInlineEnd\",\"top\",\"addDeleteButton\",\"#pointerDown\",\"focusIn\",\"#focusIn\",\"_focusEventsAllowed\",\"focusOut\",\"#focusOut\",\"addListenersToElement\",\"#addListenersToElement\",\"element\",\"bind\",\"capture\",\"hide\",\"hideDropdown\",\"show\",\"shown\",\"#addDeleteButton\",\"editorType\",\"button\",\"tabIndex\",\"delete\",\"divider\",\"#divider\",\"addAltText\",\"prepend\",\"addColorPicker\",\"renderButton\",\"addEditSignatureButton\",\"signatureManager\",\"renderEditButton\",\"updateEditSignatureButton\",\"description\",\"title\",\"destroy\",\"HighlightToolbar\",\"uiManager\",\"#render\",\"addHighlightButton\",\"getLastPoint\",\"#getLastPoint\",\"boxes\",\"isLTR\",\"lastY\",\"lastX\",\"box\",\"parent\",\"#addHighlightButton\",\"highlightSelection\",\"bindEvents\",\"names\",\"IdManager\",\"id\",\"ImageManager\",\"baseId\",\"cache\",\"_isSVGFittingCanvas\",\"svg\",\"canvas\",\"getContext\",\"willReadFrequently\",\"image\",\"Image\",\"src\",\"promise\",\"then\",\"drawImage\",\"getImageData\",\"data\",\"#get\",\"key\",\"rawData\",\"bitmap\",\"refCounter\",\"isSvg\",\"File\",\"file\",\"Blob\",\"mustRemoveAspectRatioPromise\",\"fileReader\",\"FileReader\",\"imageElement\",\"imagePromise\",\"onload\",\"svgUrl\",\"result\",\"onerror\",\"readAsDataURL\",\"createImageBitmap\",\"getFromFile\",\"lastModified\",\"size\",\"getFromUrl\",\"getFromBlob\",\"blobPromise\",\"getFromId\",\"getFromCanvas\",\"offscreen\",\"transferToImageBitmap\",\"getSvgUrl\",\"deleteId\",\"transferFromImageBitmap\",\"convertToBlob\",\"close\",\"isValidId\",\"CommandManager\",\"commands\",\"locked\",\"maxSize\",\"cmd\",\"undo\",\"post\",\"mustExec\",\"NaN\",\"overwriteIfSameType\",\"keepUndo\",\"next\",\"splice\",\"redo\",\"hasSomethingToUndo\",\"hasSomethingToRedo\",\"cleanType\",\"KeyboardManager\",\"callbacks\",\"allKeys\",\"Set\",\"callback\",\"isMacKey\",\"at\",\"serialize\",\"#serialize\",\"event\",\"altKey\",\"ctrlKey\",\"metaKey\",\"shiftKey\",\"self\",\"has\",\"bubbles\",\"checker\",\"ColorManager\",\"_colorsMapping\",\"_colors\",\"convert\",\"rgb\",\"matchMedia\",\"RGB\",\"every\",\"getHexCode\",\"AnnotationEditorUIManager\",\"abortController\",\"activeEditor\",\"allEditors\",\"allLayers\",\"altTextManager\",\"annotationStorage\",\"changedExistingAnnotations\",\"commandManager\",\"copyPasteAC\",\"currentDrawingSession\",\"currentPageIndex\",\"deletedAnnotationsElementIds\",\"draggingEditors\",\"editorTypes\",\"editorsToRescale\",\"_editorUndoBar\",\"enableHighlightFloatingButton\",\"enableUpdatedAddImage\",\"enableNewAltTextWhenAddingImage\",\"filterFactory\",\"focusMainContainerTimeoutId\",\"focusManagerAC\",\"highlightColors\",\"highlightWhenShiftUp\",\"highlightToolbar\",\"idManager\",\"isEnabled\",\"isWaiting\",\"keyboardManagerAC\",\"lastActiveElement\",\"mainHighlightColorPicker\",\"missingCanvases\",\"mlManager\",\"mode\",\"selectedEditors\",\"selectedTextNode\",\"pageColors\",\"showAllStates\",\"previousStates\",\"isEditing\",\"isEmpty\",\"hasSelectedEditor\",\"hasSelectedText\",\"translation\",\"translationTimeoutId\",\"container\",\"viewer\",\"updateModeCapability\",\"TRANSLATE_SMALL\",\"TRANSLATE_BIG\",\"_keyboardManager\",\"proto\",\"arrowChecker\",\"contains\",\"activeElement\",\"tagName\",\"hasSomethingToControl\",\"textInputChecker\",\"_self\",\"target\",\"el\",\"HTMLInputElement\",\"small\",\"big\",\"selectAll\",\"addNewEditorFromKeyboard\",\"HTMLButtonElement\",\"isEnterHandled\",\"unselectAll\",\"translateSelectedEditors\",\"eventBus\",\"pdfDocument\",\"editorUndoBar\",\"supportsPinchToZoom\",\"_eventBus\",\"_on\",\"onEditingAction\",\"onPageChanging\",\"onScaleChanging\",\"onRotationChanging\",\"onSetPreference\",\"evt\",\"updateParams\",\"addSelectionListener\",\"addDragAndDropListeners\",\"addKeyboardManager\",\"viewParameters\",\"realScale\",\"isShiftKeyDown\",\"_supportsPinchToZoom\",\"layer\",\"values\",\"clear\",\"clearTimeout\",\"combinedSignal\",\"useNewAltTextFlow\",\"useNewAltTextWhenAddingImage\",\"hcmFilter\",\"addHCMFilter\",\"foreground\",\"background\",\"pair\",\"highlightColorNames\",\"reverse\",\"setCurrentDrawingSession\",\"disableUserSelect\",\"setMainHighlightColorPicker\",\"editAltText\",\"firstTime\",\"getSignature\",\"switchToMode\",\"on\",\"once\",\"dispatch\",\"source\",\"setPreference\",\"pageNumber\",\"focusMainContainer\",\"focus\",\"findParent\",\"layerX\",\"layerY\",\"getBoundingClientRect\",\"toggle\",\"addShouldRescale\",\"removeShouldRescale\",\"commitOrRemove\",\"pagesRotation\",\"getAnchorElementForSelection\",\"#getAnchorElementForSelection\",\"anchorNode\",\"nodeType\",\"Node\",\"TEXT_NODE\",\"parentElement\",\"getLayerForTextLayer\",\"#getLayerForTextLayer\",\"textLayer\",\"currentLayer\",\"hasTextLayer\",\"methodOfCreation\",\"selection\",\"getSelection\",\"isCollapsed\",\"anchorOffset\",\"focusNode\",\"focusOffset\",\"anchorElement\",\"closest\",\"getSelectionBoxes\",\"empty\",\"isNoneMode\",\"createAndAddNewEditor\",\"showAllEditors\",\"displayHighlightToolbar\",\"#displayHighlightToolbar\",\"addToAnnotationStorage\",\"setValue\",\"selectionChange\",\"#selectionChange\",\"dispatchUpdateStates\",\"activeLayer\",\"toggleDrawing\",\"pointerup\",\"onSelectEnd\",\"#onSelectEnd\",\"#addSelectionListener\",\"addFocusManager\",\"#addFocusManager\",\"blur\",\"removeFocusManager\",\"#removeFocusManager\",\"hasSelection\",\"lastEditor\",\"#addKeyboardManager\",\"keydown\",\"keyup\",\"removeKeyboardManager\",\"#removeKeyboardManager\",\"addCopyPasteListeners\",\"#addCopyPasteListeners\",\"copy\",\"cut\",\"paste\",\"removeCopyPasteListeners\",\"#removeCopyPasteListeners\",\"#addDragAndDropListeners\",\"dragOver\",\"drop\",\"addEditListeners\",\"removeEditListeners\",\"dataTransfer\",\"items\",\"isHandlingMimeForPasting\",\"dropEffect\",\"item\",\"editors\",\"serialized\",\"clipboardData\",\"setData\",\"JSON\",\"stringify\",\"getData\",\"newEditors\",\"deserializedEditor\",\"deserialize\",\"addEditorToLayer\",\"selectEditors\",\"addCommands\",\"isEditorHandlingKeyboard\",\"#dispatchUpdateStates\",\"hasChanged\",\"entries\",\"some\",\"assign\",\"dispatchUpdateUI\",\"#dispatchUpdateUI\",\"setEditingState\",\"registerEditorTypes\",\"types\",\"defaultPropertiesToUpdate\",\"getId\",\"getLayer\",\"pageIndex\",\"addLayer\",\"enable\",\"disable\",\"removeLayer\",\"updateMode\",\"editId\",\"isFromKeyboard\",\"withResolvers\",\"disableAll\",\"loadSignatures\",\"enableAll\",\"annotationElementId\",\"setSelected\",\"enterInEditMode\",\"unselect\",\"canCreateNewEmptyEditor\",\"addNewEditor\",\"updateToolbar\",\"updateColor\",\"action\",\"updateDefaultParams\",\"visible\",\"updateButton\",\"state\",\"enableWaiting\",\"mustWait\",\"disableClick\",\"enableClick\",\"#enableAll\",\"promises\",\"all\",\"#disableAll\",\"getEditors\",\"getEditor\",\"addEditor\",\"removeEditor\",\"setTimeout\",\"addDeletedAnnotationElement\",\"addChangedExistingAnnotation\",\"deleted\",\"isDeletedAnnotationElement\",\"removeDeletedAnnotationElement\",\"removeChangedExistingAnnotation\",\"#addEditorToLayer\",\"addOrRebuild\",\"setActiveEditor\",\"propertiesToUpdate\",\"lastSelectedEditor\",\"#lastSelectedEditor\",\"ed\",\"updateUI\",\"updateUIForDefaultProperties\",\"toggleSelected\",\"select\",\"isSelected\",\"firstSelectedEditor\",\"params\",\"cleanUndoStack\",\"#isEmpty\",\"drawingEditor\",\"endDrawingSession\",\"#selectEditors\",\"commit\",\"noCommit\",\"totalX\",\"totalY\",\"TIME_TO_WAIT\",\"translateInPage\",\"translationDone\",\"setUpDragSession\",\"savedX\",\"savedY\",\"savedPageIndex\",\"newX\",\"newY\",\"newPageIndex\",\"endDragSession\",\"mustBeAddedInUndoStack\",\"move\",\"_setParentAndPosition\",\"dragSelectedEditors\",\"tx\",\"ty\",\"drag\",\"rebuild\",\"changeParent\",\"getActive\",\"shouldGetKeyboardEvents\",\"isActive\",\"getMode\",\"imageManager\",\"rangeCount\",\"getRangeAt\",\"commonAncestorContainer\",\"parentWidth\",\"parentHeight\",\"rotator\",\"getAttribute\",\"range\",\"collapsed\",\"getClientRects\",\"renderAnnotationElement\",\"annotation\",\"editorId\",\"getRawValue\",\"hasBeenModified\",\"setMissingCanvas\",\"annotationId\",\"setCanvas\",\"addMissingCanvas\",\"AltText\",\"altTextDecorative\",\"altTextButton\",\"altTextButtonLabel\",\"altTextTooltip\",\"altTextTooltipTimeout\",\"altTextWasFromKeyBoard\",\"badge\",\"guessedText\",\"textWithDisclaimer\",\"l10nNewButton\",\"_l10n\",\"added\",\"review\",\"initialize\",\"l10n\",\"label\",\"onClick\",\"_reportTelemetry\",\"setState\",\"#label\",\"finish\",\"focusVisible\",\"hasData\",\"setGuessedText\",\"generatedAltText\",\"toggleAltTextBadge\",\"isForCopying\",\"decorative\",\"cancel\",\"enabled\",\"disabled\",\"#setState\",\"tooltip\",\"DELAY_TO_SHOW_TOOLTIP\",\"removeAttribute\",\"textContent\",\"parentNode\",\"getElementForAltText\",\"TouchManager\",\"isPinching\",\"isPinchingStopped\",\"isPinchingDisabled\",\"onPinchStart\",\"onPinching\",\"onPinchEnd\",\"pointerDownAC\",\"touchInfo\",\"touchManagerAC\",\"touchMoveAC\",\"onTouchStart\",\"passive\",\"MIN_TOUCH_DISTANCE_TO_PINCH\",\"#onTouchStart\",\"touches\",\"opts\",\"cancelPointerDown\",\"pointerType\",\"opt\",\"onTouchMove\",\"onTouchEnd\",\"touch0\",\"touch1\",\"identifier\",\"touch0X\",\"screenX\",\"touch0Y\",\"screenY\",\"touch1X\",\"touch1Y\",\"#onTouchMove\",\"screen0X\",\"screen0Y\",\"screen1X\",\"screen1Y\",\"pTouch0X\",\"pTouch0Y\",\"pTouch1X\",\"pTouch1Y\",\"prevGapX\",\"prevGapY\",\"currGapX\",\"currGapY\",\"distance\",\"hypot\",\"pDistance\",\"origin\",\"#onTouchEnd\",\"AnnotationEditor\",\"accessibilityData\",\"allResizerDivs\",\"dragPointerId\",\"dragPointerType\",\"keepAspectRatio\",\"resizersDiv\",\"lastPointerCoords\",\"savedDimensions\",\"focusAC\",\"focusedResizerName\",\"hasBeenClicked\",\"initialRect\",\"isInEditMode\",\"isResizerEnabledForKeyboard\",\"moveInDOMTimeout\",\"prevDragX\",\"prevDragY\",\"telemetryTimeouts\",\"touchManager\",\"_isCopy\",\"_editToolbar\",\"_initialOptions\",\"_initialData\",\"_isVisible\",\"_l10nResizer\",\"isDraggable\",\"zIndex\",\"_zIndex\",\"_borderLineWidth\",\"_colorManager\",\"_telemetryTimeout\",\"_resizerKeyboardManager\",\"resize\",\"_resizeWithKeyboard\",\"_stopResizingWithKeyboard\",\"parameters\",\"_willKeepAspectRatio\",\"isCentered\",\"_structTreeParentId\",\"pageRotation\",\"pageDimensions\",\"pageTranslation\",\"parentDimensions\",\"isAttachedToDOM\",\"getPrototypeOf\",\"_type\",\"isDrawer\",\"_defaultLineColor\",\"deleteAnnotationElement\",\"fakeEditor\",\"FakeEditor\",\"getNextId\",\"topMiddle\",\"topRight\",\"middleRight\",\"bottomMiddle\",\"bottomLeft\",\"middleLeft\",\"documentElement\",\"parseFloat\",\"getPropertyValue\",\"_value\",\"mime\",\"_isDraggable\",\"center\",\"parentRotation\",\"fixAndSetPosition\",\"setInBackground\",\"setInForeground\",\"setParent\",\"stopResizing\",\"focusin\",\"focusout\",\"relatedTarget\",\"isMultipleSelection\",\"setAt\",\"screenToPageTranslation\",\"_moveAfterPaste\",\"baseX\",\"baseY\",\"_onTranslated\",\"translate\",\"#translate\",\"_onTranslating\",\"scrollIntoView\",\"block\",\"findNewParent\",\"floor\",\"bx\",\"by\",\"getBaseTranslation\",\"left\",\"toFixed\",\"_hasBeenMoved\",\"_hasBeenResized\",\"_mustFixPosition\",\"moveInDOM\",\"rotatePoint\",\"#rotatePoint\",\"angle\",\"pageTranslationToScreen\",\"getRotationMatrix\",\"#getRotationMatrix\",\"parentScale\",\"setDims\",\"fixDims\",\"widthPercent\",\"endsWith\",\"heightPercent\",\"getInitialTranslation\",\"createResizers\",\"#createResizers\",\"classes\",\"resizerPointerdown\",\"#resizerPointerdown\",\"savedDraggable\",\"togglePointerEvents\",\"resizerPointermove\",\"savedWidth\",\"savedHeight\",\"savedParentCursor\",\"cursor\",\"savedCursor\",\"pointerUpCallback\",\"addResizeToUndoStack\",\"#resize\",\"_onResized\",\"#addResizeToUndoStack\",\"newWidth\",\"newHeight\",\"_round\",\"round\",\"#resizerPointermove\",\"minWidth\",\"MIN_SIZE\",\"minHeight\",\"rotationMatrix\",\"transf\",\"invRotationMatrix\",\"invTransf\",\"getPoint\",\"getOpposite\",\"isDiagonal\",\"isHorizontal\",\"point\",\"oppositePoint\",\"transfOppositePoint\",\"oppositeX\",\"oppositeY\",\"ratioX\",\"ratioY\",\"deltaX\",\"deltaY\",\"fromKeyboard\",\"lastScreenX\",\"lastScreenY\",\"oldDiag\",\"_onResizing\",\"altTextFinish\",\"addEditToolbar\",\"removeEditToolbar\",\"addContainer\",\"editToolbarDiv\",\"before\",\"getClientDimensions\",\"addAltTextButton\",\"altTextData\",\"guessedAltText\",\"setGuessedAltText\",\"serializeAltText\",\"hasAltText\",\"hasAltTextData\",\"defaultL10nId\",\"addFocusListeners\",\"maxWidth\",\"maxHeight\",\"isResizable\",\"touchPinchStartCallback\",\"touchPinchCallback\",\"touchPinchEndCallback\",\"#touchPinchStartCallback\",\"#touchPinchCallback\",\"_origin\",\"prevDistance\",\"slowDownFactor\",\"factor\",\"transfCenterPoint\",\"newTransfCenterPoint\",\"#touchPinchEndCallback\",\"pointerdown\",\"selectOnPointerEvent\",\"#selectOnPointerEvent\",\"#setUpDragSession\",\"hasDraggingStarted\",\"cancelDrag\",\"_onStopDragging\",\"clientX\",\"clientY\",\"pointerId\",\"_onStartDragging\",\"isPrimary\",\"moveEditorInDOM\",\"getRect\",\"shiftX\",\"shiftY\",\"getRectInCurrentCoords\",\"onceAdded\",\"enableEditMode\",\"disableEditMode\",\"needsToBeRebuilt\",\"isOnScreen\",\"bottom\",\"right\",\"innerHeight\",\"innerWidth\",\"#addFocusListeners\",\"rotate\",\"_angle\",\"serializeDeleted\",\"popupRef\",\"context\",\"isCopy\",\"timeout\",\"makeResizable\",\"children\",\"boundResizerKeydown\",\"resizerKeydown\",\"boundResizerBlur\",\"resizerBlur\",\"resizerFocus\",\"firstPosition\",\"nextFirstPosition\",\"firstChild\",\"lastChild\",\"child\",\"setResizerTabIndex\",\"stopImmediatePropagation\",\"#resizerKeydown\",\"#resizerBlur\",\"#resizerFocus\",\"#setResizerTabIndex\",\"#stopResizing\",\"preventScroll\",\"disableEditing\",\"enableEditing\",\"canChangeContent\",\"dblclick\",\"_editorType\",\"contentDiv\",\"setAspectRatio\",\"aspectRatio\",\"telemetryInitialData\",\"telemetryFinalData\",\"content\",\"querySelector\",\"nodeName\",\"resetAnnotationElement\",\"SEED\",\"MASK_HIGH\",\"MASK_LOW\",\"MurmurHash3_64\",\"seed\",\"h1\",\"h2\",\"update\",\"ArrayBuffer\",\"isView\",\"byteLength\",\"blockCounts\",\"tailLength\",\"dataUint32\",\"k1\",\"k2\",\"C1\",\"C2\",\"C1_LOW\",\"C2_LOW\",\"hexdigest\",\"SerializableEmpty\",\"transfer\",\"AnnotationStorage\",\"modified\",\"modifiedIds\",\"storage\",\"onSetModified\",\"onResetModified\",\"onAnnotationEditor\",\"getValue\",\"defaultValue\",\"resetModified\",\"entry\",\"val\",\"setModified\",\"#setModified\",\"print\",\"PrintAnnotationStorage\",\"serializable\",\"hasBitmap\",\"editorStats\",\"stats\",\"typeToEditor\",\"counters\",\"count\",\"computeTelemetryFinalData\",\"resetModifiedIds\",\"ids\",\"Symbol\",\"iterator\",\"structuredClone\",\"FontLoader\",\"systemFonts\",\"ownerDocument\",\"styleElement\",\"_document\",\"nativeFontFaces\",\"loadingRequests\",\"loadTestFontId\",\"addNativeFontFace\",\"nativeFontFace\",\"fonts\",\"removeNativeFontFace\",\"insertRule\",\"rule\",\"getElementsByTagName\",\"styleSheet\",\"sheet\",\"cssRules\",\"loadSystemFont\",\"systemFontInfo\",\"disableFontFace\",\"_inspectFont\",\"loadedName\",\"isFontLoadingAPISupported\",\"fontFace\",\"FontFace\",\"load\",\"baseFontName\",\"font\",\"attached\",\"missingFile\",\"createNativeFontFace\",\"loaded\",\"family\",\"createFontFaceRule\",\"isSyncFontLoadingSupported\",\"_queueLoadingCallback\",\"_prepareFontLoadEvent\",\"hasFonts\",\"completeRequest\",\"done\",\"otherRequest\",\"shift\",\"complete\",\"_loadTestFont\",\"testFont\",\"int32\",\"offset\",\"spliceString\",\"insert\",\"chunk1\",\"chunk2\",\"called\",\"isFontReady\",\"fillText\",\"imageData\",\"COMMENT_OFFSET\",\"CFF_CHECKSUM_OFFSET\",\"XXXX_VALUE\",\"checksum\",\"fontFamily\",\"FontFaceObject\",\"translatedData\",\"inspectFont\",\"compiledGlyphs\",\"cssFontInfo\",\"css\",\"weight\",\"fontWeight\",\"italicAngle\",\"mimetype\",\"getPathGenerator\",\"objs\",\"character\",\"objId\",\"cmds\",\"path\",\"Path2D\",\"fontExtraProperties\",\"getUrlProp\",\"location\",\"getDataProp\",\"Buffer\",\"isNaN\",\"getFactoryUrlProp\",\"isRefProxy\",\"gen\",\"isNameProxy\",\"isValidExplicitDest\",\"LoopbackPort\",\"listeners\",\"deferred\",\"postMessage\",\"listener\",\"call\",\"rmAbort\",\"onAbort\",\"removeEventListener\",\"terminate\",\"CallbackKind\",\"DATA\",\"ERROR\",\"StreamKind\",\"CANCEL\",\"CANCEL_COMPLETE\",\"CLOSE\",\"ENQUEUE\",\"PULL\",\"PULL_COMPLETE\",\"START_COMPLETE\",\"onFn\",\"wrapReason\",\"MessageHandler\",\"messageAC\",\"sourceName\",\"targetName\",\"comObj\",\"callbackId\",\"streamId\",\"streamSinks\",\"streamControllers\",\"callbackCapabilities\",\"actionHandler\",\"onMessage\",\"#onMessage\",\"stream\",\"processStreamMessage\",\"capability\",\"try\",\"createStreamSink\",\"actionName\",\"handler\",\"ah\",\"transfers\",\"sendWithPromise\",\"sendWithStream\",\"queueingStrategy\",\"ReadableStream\",\"controller\",\"startCapability\",\"startCall\",\"pullCall\",\"cancelCall\",\"isClosed\",\"desiredSize\",\"pull\",\"pullCapability\",\"cancelCapability\",\"#createStreamSink\",\"streamSink\",\"enqueue\",\"isCancelled\",\"lastDesiredSize\",\"sinkCapability\",\"ready\",\"error\",\"onPull\",\"onCancel\",\"success\",\"#processStreamMessage\",\"streamController\",\"deleteStreamController\",\"dataReason\",\"#deleteStreamController\",\"allSettled\",\"BaseCanvasFactory\",\"enableHWA\",\"_createCanvas\",\"reset\",\"canvasAndContext\",\"DOMCanvasFactory\",\"BaseCMapReaderFactory\",\"isCompressed\",\"_fetch\",\"cMapData\",\"catch\",\"DOMCMapReaderFactory\",\"BaseFilterFactory\",\"addFilter\",\"maps\",\"fgColor\",\"bgColor\",\"addAlphaFilter\",\"addLuminosityFilter\",\"addHighlightHCMFilter\",\"filterName\",\"newFgColor\",\"newBgColor\",\"keepHCM\",\"DOMFilterFactory\",\"_cache\",\"_defs\",\"docId\",\"_hcmCache\",\"#cache\",\"hcmCache\",\"#hcmCache\",\"defs\",\"#defs\",\"contain\",\"createElementNS\",\"createTables\",\"#createTables\",\"mapR\",\"table\",\"mapG\",\"mapB\",\"bufferR\",\"bufferG\",\"bufferB\",\"createUrl\",\"#createUrl\",\"tableR\",\"tableG\",\"tableB\",\"filter\",\"createFilter\",\"addTransferMapConversion\",\"fgRGB\",\"bgRGB\",\"addGrayConversion\",\"getSteps\",\"tableA\",\"addTransferMapAlphaConversion\",\"addLuminosityConversion\",\"fgGray\",\"bgGray\",\"newFgRGB\",\"newBgRGB\",\"fg\",\"bg\",\"step\",\"newStart\",\"newStep\",\"prev\",\"k\",\"j\",\"#addLuminosityConversion\",\"feColorMatrix\",\"#addGrayConversion\",\"#createFilter\",\"appendFeFunc\",\"#appendFeFunc\",\"feComponentTransfer\",\"func\",\"feFunc\",\"#addTransferMapConversion\",\"rTable\",\"gTable\",\"bTable\",\"#addTransferMapAlphaConversion\",\"aTable\",\"#getRGB\",\"BaseStandardFontDataFactory\",\"DOMStandardFontDataFactory\",\"BaseWasmFactory\",\"DOMWasmFactory\",\"require\",\"getBuiltinModule\",\"createRequire\",\"import\",\"meta\",\"DOMMatrix\",\"ImageData\",\"language\",\"fs\",\"readFile\",\"NodeFilterFactory\",\"NodeCanvasFactory\",\"createCanvas\",\"NodeCMapReaderFactory\",\"NodeStandardFontDataFactory\",\"NodeWasmFactory\",\"PathType\",\"SHADING\",\"applyBoundingBox\",\"bbox\",\"region\",\"BaseShadingPattern\",\"isModifyingCurrentTransform\",\"getPattern\",\"RadialAxialShadingPattern\",\"IR\",\"_bbox\",\"_colorStops\",\"_p0\",\"_p1\",\"_r0\",\"_r1\",\"_createGradient\",\"grad\",\"createLinearGradient\",\"createRadialGradient\",\"colorStop\",\"addColorStop\",\"owner\",\"inverse\",\"pathType\",\"pattern\",\"ownerBBox\",\"current\",\"getClippedPathBoundingBox\",\"tmpCanvas\",\"cachedCanvases\",\"getCanvas\",\"tmpCtx\",\"clearRect\",\"beginPath\",\"baseTransform\",\"fillStyle\",\"createPattern\",\"domMatrix\",\"setTransform\",\"drawTriangle\",\"p3\",\"c1\",\"c2\",\"c3\",\"coords\",\"rowSize\",\"tmp\",\"scaleX\",\"scaleY\",\"c1r\",\"c1g\",\"c1b\",\"c2r\",\"c2g\",\"c2b\",\"c3r\",\"c3g\",\"c3b\",\"minY\",\"maxY\",\"xa\",\"car\",\"cag\",\"cab\",\"xb\",\"cbr\",\"cbg\",\"cbb\",\"x1_\",\"x2_\",\"drawFigure\",\"figure\",\"ps\",\"cs\",\"verticesPerRow\",\"rows\",\"cols\",\"q\",\"MeshShadingPattern\",\"_coords\",\"_figures\",\"_bounds\",\"_background\",\"_createMeshCanvas\",\"combinedScale\",\"backgroundColor\",\"EXPECTED_SCALE\",\"MAX_PATTERN_SIZE\",\"BORDER_SIZE\",\"boundsWidth\",\"boundsHeight\",\"paddedWidth\",\"paddedHeight\",\"createImageData\",\"putImageData\",\"Float32Array\",\"matrixScaleX\",\"matrixScaleY\",\"temporaryPatternCanvas\",\"DummyShadingPattern\",\"getShadingPattern\",\"PaintType\",\"COLORED\",\"UNCOLORED\",\"TilingPattern\",\"canvasGraphicsFactory\",\"operatorList\",\"xstep\",\"ystep\",\"paintType\",\"tilingType\",\"createPatternCanvas\",\"combinedScaleX\",\"combinedScaleY\",\"canvasWidth\",\"canvasHeight\",\"redrawHorizontally\",\"redrawVertically\",\"xScaledStep\",\"yScaledStep\",\"xScaledWidth\",\"yScaledHeight\",\"dimx\",\"getSizeAndScale\",\"dimy\",\"graphics\",\"createCanvasGraphics\",\"groupLevel\",\"setFillAndStrokeStyleToContext\",\"clipBbox\",\"executeOperatorList\",\"endDrawing\",\"dimx2\",\"dimy2\",\"xSize\",\"ySize\",\"tmpCanvas2\",\"tmpCtx2\",\"jj\",\"realOutputSize\",\"bboxWidth\",\"bboxHeight\",\"strokeStyle\",\"fillColor\",\"strokeColor\",\"convertToRGBA\",\"kind\",\"convertBlackAndWhiteToRGBA\",\"convertRGBToRGBA\",\"srcPos\",\"nonBlackColor\",\"inverseDecode\",\"black\",\"zeroMapping\",\"oneMapping\",\"widthInSource\",\"widthRemainder\",\"srcLength\",\"destPos\",\"elem\",\"len\",\"len32\",\"src32\",\"s1\",\"s2\",\"s3\",\"grayToRGBA\",\"MIN_FONT_SIZE\",\"MAX_FONT_SIZE\",\"EXECUTION_TIME\",\"EXECUTION_STEPS\",\"FULL_CHUNK_HEIGHT\",\"SCALE_MATRIX\",\"XY\",\"MIN_MAX_INIT\",\"mirrorContextOperations\",\"destCtx\",\"_removeMirroring\",\"__originalSave\",\"__originalRestore\",\"__originalRotate\",\"__originalScale\",\"__originalTranslate\",\"__originalTransform\",\"__originalSetTransform\",\"__originalResetTransform\",\"resetTransform\",\"__originalClip\",\"__originalMoveTo\",\"__originalLineTo\",\"__originalBezierCurveTo\",\"bezierCurveTo\",\"__originalRect\",\"__originalClosePath\",\"__originalBeginPath\",\"cp1x\",\"cp1y\",\"cp2x\",\"cp2y\",\"CachedCanvases\",\"canvasFactory\",\"canvasEntry\",\"drawImageAtIntegerCoords\",\"srcImg\",\"srcX\",\"srcY\",\"srcW\",\"srcH\",\"destX\",\"destY\",\"destW\",\"destH\",\"tlX\",\"rTlX\",\"tlY\",\"rTlY\",\"brX\",\"rWidth\",\"brY\",\"rHeight\",\"sign\",\"CanvasExtraState\",\"alphaIsShape\",\"fontSize\",\"fontSizeScale\",\"textMatrix\",\"textMatrixScale\",\"fontMatrix\",\"leading\",\"lineX\",\"lineY\",\"charSpacing\",\"wordSpacing\",\"textHScale\",\"textRenderingMode\",\"textRise\",\"patternFill\",\"patternStroke\",\"fillAlpha\",\"strokeAlpha\",\"lineWidth\",\"activeSMask\",\"transferMaps\",\"clipBox\",\"getPathBoundingBox\",\"xStrokePad\",\"yStrokePad\",\"updateClipFromPath\",\"startNewPathAndClipBox\",\"isEmptyClip\",\"putBinaryImageData\",\"imgData\",\"partialChunkHeight\",\"fullChunks\",\"totalChunks\",\"chunkImgData\",\"thisChunkHeight\",\"elemsInThisChunk\",\"dest32\",\"dest32DataLength\",\"fullSrcDiff\",\"white\",\"srcDiff\",\"kEnd\",\"kEndUnrolled\",\"mask\",\"srcByte\",\"putBinaryImageMask\",\"copyCtxState\",\"sourceCtx\",\"properties\",\"property\",\"setLineDash\",\"getLineDash\",\"lineDashOffset\",\"resetCtxToDefault\",\"fillRule\",\"globalAlpha\",\"lineCap\",\"lineJoin\",\"miterLimit\",\"globalCompositeOperation\",\"getImageSmoothingEnabled\",\"interpolate\",\"actualScale\",\"fround\",\"LINE_CAP_STYLES\",\"LINE_JOIN_STYLES\",\"NORMAL_CLIP\",\"EO_CLIP\",\"CanvasGraphics\",\"canvasCtx\",\"commonObjs\",\"optionalContentConfig\",\"markedContentStack\",\"annotationCanvasMap\",\"stateStack\",\"pendingClip\",\"pendingEOFill\",\"xobjs\",\"groupStack\",\"baseTransformStack\",\"smaskStack\",\"smaskCounter\",\"tempSMask\",\"suspendedCtx\",\"contentVisible\",\"cachedPatterns\",\"viewportScale\",\"outputScaleX\",\"outputScaleY\",\"_cachedScaleForStroking\",\"_cachedGetSinglePixelWidth\",\"_cachedBitmapsMap\",\"getObject\",\"fallback\",\"beginDrawing\",\"transparency\",\"savedFillStyle\",\"fillRect\",\"transparentCanvas\",\"compositeCtx\",\"executionStartIdx\",\"continueCallback\",\"stepper\",\"argsArray\",\"fnArray\",\"argsArrayLen\",\"chunkOperations\",\"endTime\",\"steps\",\"fnId\",\"nextBreakPoint\",\"breakIt\",\"depObjId\",\"objsPool\",\"restoreInitialState\",\"#restoreInitialState\",\"inSMaskMode\",\"HTMLCanvasElement\",\"drawFilter\",\"#drawFilter\",\"hcmFilterId\",\"savedFilter\",\"_scaleImage\",\"img\",\"displayWidth\",\"displayHeight\",\"widthScale\",\"heightScale\",\"paintWidth\",\"paintHeight\",\"tmpCanvasId\",\"_createMaskCanvas\",\"isPatternFill\",\"currentTransform\",\"cacheKey\",\"maskCanvas\",\"mainKey\",\"cachedImage\",\"maskToCanvas\",\"minX\",\"maxX\",\"drawnWidth\",\"drawnHeight\",\"fillCanvas\",\"fillCtx\",\"imageSmoothingEnabled\",\"limit\",\"dashArray\",\"dashPhase\",\"intent\",\"flatness\",\"states\",\"checkSMaskState\",\"beginSMaskMode\",\"endSMaskMode\",\"cacheId\",\"scratchCanvas\",\"compose\",\"dirtyBox\",\"smask\",\"composeSMask\",\"layerCtx\",\"layerBox\",\"layerOffsetX\",\"layerOffsetY\",\"layerWidth\",\"layerHeight\",\"genericComposeSMask\",\"subtype\",\"backdrop\",\"transferMap\",\"maskCtx\",\"maskOffsetX\",\"maskOffsetY\",\"maskX\",\"maskY\",\"old\",\"pop\",\"op\",\"path2d\",\"consumePath\",\"newPath\",\"addPath\",\"multiplySelf\",\"rescaleAndStroke\",\"needRestore\",\"paths\",\"pendingTextPaths\",\"preMultiplySelf\",\"spacing\",\"fontRefName\",\"fontObj\",\"fontDirection\",\"isType3Font\",\"typeface\",\"fallbackName\",\"bold\",\"italic\",\"browserFontSize\",\"rise\",\"getScaledPath\",\"#getScaledPath\",\"paintChar\",\"patternFillTransform\",\"patternStrokeTransform\",\"fillStrokeMode\",\"isAddToPathSet\",\"invPatternTransform\",\"strokeText\",\"isFontSubpixelAAEnabled\",\"glyphs\",\"showType3Text\",\"glyphsLength\",\"vertical\",\"spacingDir\",\"defaultVMetrics\",\"widthAdvanceScale\",\"simpleFillText\",\"getSinglePixelWidth\",\"isInvalidPDFjsFont\",\"chars\",\"glyph\",\"unicode\",\"restoreNeeded\",\"isSpace\",\"fontChar\",\"accent\",\"scaledX\",\"scaledY\",\"vmetric\",\"vx\",\"vy\",\"remeasure\",\"measuredWidth\",\"measureText\",\"characterScaleX\",\"isInFont\",\"scaledAccentX\",\"scaledAccentY\",\"charWidth\",\"isTextInvisible\",\"spacingLength\",\"charProcOperatorList\",\"operatorListId\",\"xWidth\",\"yWidth\",\"llx\",\"lly\",\"urx\",\"ury\",\"getColorN_Pattern\",\"_getPattern\",\"arguments\",\"inv\",\"group\",\"currentCtx\",\"isolated\",\"knockout\",\"bounds\",\"canvasBounds\",\"groupCtx\",\"startTransformInverse\",\"currentMtx\",\"hasOwnCanvas\",\"annotationCanvas\",\"savedCtx\",\"skewX\",\"skewY\",\"positions\",\"trans\",\"images\",\"applyTransferMapsToCanvas\",\"applyTransferMapsToBitmap\",\"imgToPaint\",\"HTMLElement\",\"tag\",\"isVisible\",\"isContentVisible\",\"absDet\",\"normX\",\"normY\",\"getScaleForStroking\",\"scaledLineWidth\",\"scaledXLineWidth\",\"scaledYLineWidth\",\"baseArea\",\"saveRestore\",\"dashes\",\"GlobalWorkerOptions\",\"port\",\"workerPort\",\"Worker\",\"workerSrc\",\"Metadata\",\"parsedData\",\"getRaw\",\"INTERNAL\",\"OptionalContentGroup\",\"isDisplay\",\"isPrint\",\"userSet\",\"renderingIntent\",\"usage\",\"rbGroups\",\"view\",\"viewState\",\"printState\",\"_setVisible\",\"internal\",\"OptionalContentConfig\",\"cachedGetHash\",\"groups\",\"initialHash\",\"order\",\"creator\",\"baseState\",\"off\",\"getHash\",\"evaluateVisibilityExpression\",\"#evaluateVisibilityExpression\",\"array\",\"operator\",\"expression\",\"policy\",\"setVisibility\",\"preserveRB\",\"rbGroup\",\"otherId\",\"setOCGState\",\"hasInitialVisibility\",\"getOrder\",\"getGroup\",\"PDFDataTransportStream\",\"pdfDataRangeTransport\",\"disableRange\",\"disableStream\",\"initialData\",\"progressiveDone\",\"contentDispositionFilename\",\"_queuedChunks\",\"_progressiveDone\",\"_contentDispositionFilename\",\"_pdfDataRangeTransport\",\"_isStreamingSupported\",\"_isRangeSupported\",\"_contentLength\",\"_fullRequestReader\",\"_rangeReaders\",\"addRangeListener\",\"begin\",\"_onReceiveData\",\"addProgressListener\",\"total\",\"_onProgress\",\"addProgressiveReadListener\",\"addProgressiveDoneListener\",\"_onProgressiveDone\",\"transportReady\",\"_enqueue\",\"found\",\"rangeReader\",\"_begin\",\"_progressiveDataLength\",\"_loaded\",\"onProgress\",\"_removeRangeReader\",\"reader\",\"indexOf\",\"getFullReader\",\"queuedChunks\",\"PDFDataTransportStreamReader\",\"getRangeReader\",\"PDFDataTransportStreamRangeReader\",\"requestDataRange\",\"cancelAllRequests\",\"_stream\",\"_done\",\"_filename\",\"_requests\",\"_headersReady\",\"requestCapability\",\"headersReady\",\"isRangeSupported\",\"isStreamingSupported\",\"contentLength\",\"read\",\"_end\",\"_queuedChunk\",\"requestsCapability\",\"getFilenameFromContentDispositionHeader\",\"contentDisposition\",\"needsEncodingFixup\",\"toParamRegExp\",\"rfc2616unquote\",\"rfc5987decode\",\"rfc2047decode\",\"fixupEncoding\",\"rfc2231getparam\",\"attributePattern\",\"flags\",\"textdecode\",\"contentDispositionStr\",\"iter\",\"quot\",\"part\",\"parts\",\"quotindex\",\"extvalue\",\"encodingend\",\"langvalue\",\"replace\",\"charset\",\"hex\",\"createHeaders\",\"isHttp\",\"httpHeaders\",\"headers\",\"Headers\",\"getResponseOrigin\",\"validateRangeRequestCapabilities\",\"responseHeaders\",\"rangeChunkSize\",\"returnValues\",\"allowRangeRequests\",\"suggestedLength\",\"contentEncoding\",\"extractFilenameFromHeader\",\"createResponseError\",\"validateResponseStatus\",\"createFetchOptions\",\"withCredentials\",\"method\",\"credentials\",\"redirect\",\"getArrayBuffer\",\"PDFFetchStream\",\"_responseOrigin\",\"_rangeRequestReaders\",\"PDFFetchStreamReader\",\"PDFFetchStreamRangeReader\",\"_reader\",\"_withCredentials\",\"_headersCapability\",\"_disableRange\",\"_rangeChunkSize\",\"_abortController\",\"getReader\",\"_readCapability\",\"responseOrigin\",\"OK_RESPONSE\",\"PARTIAL_CONTENT_RESPONSE\",\"xhr\",\"NetworkManager\",\"currXhrId\",\"pendingRequests\",\"xhrId\",\"pendingRequest\",\"setRequestHeader\",\"expectedStatus\",\"onError\",\"onStateChange\",\"onprogress\",\"onHeadersReceived\",\"onDone\",\"xhrStatus\",\"ok_response_on_range_request\",\"rangeHeader\",\"getResponseHeader\",\"getRequestXhr\",\"isPendingRequest\",\"abortRequest\",\"PDFNetworkStream\",\"_source\",\"_manager\",\"_onRangeRequestReaderClosed\",\"PDFNetworkStreamFullRequestReader\",\"PDFNetworkStreamRangeRequestReader\",\"onClosed\",\"manager\",\"_url\",\"_fullRequestId\",\"_onHeadersReceived\",\"_onDone\",\"_onError\",\"_cachedChunks\",\"_storedError\",\"fullRequestXhrId\",\"fullRequestXhr\",\"responseURL\",\"rawResponseHeaders\",\"getAllResponseHeaders\",\"trimStart\",\"lengthComputable\",\"_requestId\",\"_close\",\"urlRegex\",\"parseUrlOrPath\",\"sourceUrl\",\"pathToFileURL\",\"PDFNodeStream\",\"PDFNodeStreamFsFullReader\",\"PDFNodeStreamFsRangeReader\",\"_readableStream\",\"lstat\",\"stat\",\"_setReadableStream\",\"createReadStream\",\"_error\",\"readableStream\",\"INITIAL_DATA\",\"PDFObjects\",\"ensureObj\",\"#ensureObj\",\"MAX_TEXT_DIVS_TO_RENDER\",\"DEFAULT_FONT_SIZE\",\"TextLayer\",\"disableProcessItems\",\"fontInspectorEnabled\",\"FontInspector\",\"lang\",\"layoutTextParams\",\"rootContainer\",\"styleCache\",\"textContentItemsStr\",\"textContentSource\",\"textDivs\",\"textDivProperties\",\"WeakMap\",\"ascentCache\",\"canvasContexts\",\"canvasCtxFonts\",\"minFontSize\",\"pendingTextLayers\",\"ensureMinFontSizeComputed\",\"finally\",\"fontFamilyMap\",\"pump\",\"styles\",\"processItems\",\"onBefore\",\"getCtx\",\"layout\",\"abortEx\",\"#processItems\",\"appendText\",\"#appendText\",\"geom\",\"textDiv\",\"hasText\",\"hasEOL\",\"atan2\",\"fontName\",\"fontSubstitution\",\"fontHeight\",\"fontAscent\",\"getAscent\",\"sin\",\"cos\",\"scaleFactorStr\",\"divStyle\",\"dir\",\"dataset\",\"fontSubstitutionLoadedName\",\"shouldScaleText\",\"absScaleX\",\"absScaleY\",\"br\",\"#layout\",\"ensureCtxFont\",\"cleanup\",\"#getCtx\",\"alpha\",\"#ensureCtxFont\",\"cached\",\"#ensureMinFontSizeComputed\",\"opacity\",\"lineHeight\",\"#getAscent\",\"cachedAscent\",\"metrics\",\"ascent\",\"fontBoundingBoxAscent\",\"descent\",\"fontBoundingBoxDescent\",\"ratio\",\"XfaText\",\"xfa\",\"walk\",\"node\",\"shouldBuildText\",\"RENDERING_CANCELLED_TIMEOUT\",\"getDocument\",\"task\",\"PDFDocumentLoadingTask\",\"password\",\"rangeTransport\",\"PDFDataRangeTransport\",\"worker\",\"PDFWorker\",\"docBaseUrl\",\"cMapUrl\",\"cMapPacked\",\"CMapReaderFactory\",\"iccUrl\",\"standardFontDataUrl\",\"StandardFontDataFactory\",\"wasmUrl\",\"WasmFactory\",\"ignoreErrors\",\"stopAtErrors\",\"maxImageSize\",\"chrome\",\"canvasMaxAreaInBytes\",\"enableXfa\",\"disableAutoFetch\",\"pdfBug\",\"CanvasFactory\",\"FilterFactory\",\"useWasm\",\"useSystemFonts\",\"useWorkerFetch\",\"transportFactory\",\"cMapReaderFactory\",\"standardFontDataFactory\",\"wasmFactory\",\"_worker\",\"docParams\",\"apiVersion\",\"evaluatorOptions\",\"transportParams\",\"loadingParams\",\"destroyed\",\"workerIdPromise\",\"messageHandler\",\"networkStream\",\"NetworkStream\",\"workerId\",\"transport\",\"WorkerTransport\",\"_transport\",\"_capability\",\"onPassword\",\"_pendingDestroy\",\"progressiveDoneListeners\",\"progressiveReadListeners\",\"progressListeners\",\"rangeListeners\",\"onDataRange\",\"onDataProgress\",\"onDataProgressiveRead\",\"onDataProgressiveDone\",\"PDFDocumentProxy\",\"pdfInfo\",\"_pdfInfo\",\"numPages\",\"fingerprints\",\"isPureXfa\",\"_htmlForXfa\",\"allXfaHtml\",\"getPage\",\"getPageIndex\",\"ref\",\"getDestinations\",\"getDestination\",\"getPageLabels\",\"getPageLayout\",\"getPageMode\",\"getViewerPreferences\",\"getOpenAction\",\"getAttachments\",\"getJSActions\",\"getDocJSActions\",\"getOutline\",\"getOptionalContentConfig\",\"getRenderingIntent\",\"getPermissions\",\"getMetadata\",\"getMarkInfo\",\"saveDocument\",\"getDownloadInfo\",\"downloadInfoCapability\",\"keepLoadedFonts\",\"startCleanup\",\"loadingTask\",\"cachedPageNumber\",\"getFieldObjects\",\"hasJSActions\",\"getCalculationOrderIds\",\"PDFPageProxy\",\"pendingCleanup\",\"pageInfo\",\"_pageIndex\",\"_pageInfo\",\"_stats\",\"_pdfBug\",\"_intentStates\",\"getViewport\",\"getAnnotations\",\"getPageJSActions\",\"getXfa\",\"canvasContext\",\"annotationMode\",\"optionalContentConfigPromise\",\"printAnnotationStorage\",\"intentArgs\",\"intentState\",\"streamReaderCancelTimeout\",\"intentPrint\",\"displayReadyCapability\",\"lastChunk\",\"separateAnnots\",\"_pumpOperatorList\",\"renderTasks\",\"internalRenderTask\",\"tryCleanup\",\"_abortOperatorList\",\"Stats\",\"InternalRenderTask\",\"useRequestAnimationFrame\",\"renderTask\",\"initializeGraphics\",\"operatorListChanged\",\"getOperatorList\",\"opListReadCapability\",\"opListTask\",\"streamTextContent\",\"includeMarkedContent\",\"disableNormalization\",\"TEXT_CONTENT_CHUNK_SIZE\",\"highWaterMark\",\"getTextContent\",\"getStructTree\",\"_destroy\",\"waitOn\",\"force\",\"completed\",\"resetStats\",\"#tryCleanup\",\"_startRenderPage\",\"_renderPageChunk\",\"operatorListChunk\",\"annotationStorageSerializable\",\"streamReader\",\"delay\",\"curCacheKey\",\"curIntentState\",\"webWorker\",\"fakeWorkerId\",\"isWorkerDisabled\",\"workerPorts\",\"_isSameOrigin\",\"otherUrl\",\"base\",\"other\",\"_createCDNWrapper\",\"wrapper\",\"createObjectURL\",\"fromPort\",\"initializeFromPort\",\"#resolve\",\"#initializeFromPort\",\"#initialize\",\"mainThreadWorkerMessageHandler\",\"setupFakeWorker\",\"terminateEarly\",\"sendTest\",\"testObj\",\"#setupFakeWorker\",\"_setupFakeWorkerGlobal\",\"WorkerMessageHandler\",\"workerHandler\",\"setup\",\"cachedPort\",\"#mainThreadWorkerMessageHandler\",\"pdfjsWorker\",\"loader\",\"methodPromises\",\"pageCache\",\"pagePromises\",\"pageRefCache\",\"passwordCapability\",\"factory\",\"fontLoader\",\"_params\",\"destroyCapability\",\"_networkStream\",\"_fullReader\",\"_lastProgress\",\"setupMessageHandler\",\"cacheSimpleMethod\",\"#cacheSimpleMethod\",\"cachedPromise\",\"isOpList\",\"modifiedIdsHash\",\"cacheKeyBuf\",\"hasOwnProperty\",\"terminated\",\"sink\",\"readyReason\",\"_numPages\",\"htmlForXfa\",\"updatePassword\",\"err\",\"exportedData\",\"exportedError\",\"fontAdded\",\"imageRef\",\"pageProxy\",\"dataLen\",\"refStr\",\"results\",\"metadata\",\"cleanupSuccessful\",\"RenderTask\",\"onContinue\",\"form\",\"rAF\",\"canvasInUse\",\"WeakSet\",\"operatorListIdx\",\"running\",\"graphicsReadyCallback\",\"graphicsReady\",\"_useRequestAnimationFrame\",\"cancelled\",\"_cancelBound\",\"_continueBound\",\"_continue\",\"_scheduleNextBound\",\"_scheduleNext\",\"_nextBound\",\"_next\",\"_canvas\",\"StepperManager\",\"init\",\"getNextBreakPoint\",\"gfx\",\"cancelAnimationFrame\",\"updateOperatorList\",\"requestAnimationFrame\",\"version\",\"build\",\"makeColorComp\",\"scaleAndClamp\",\"ColorConverters\",\"CMYK_G\",\"G_CMYK\",\"G_RGB\",\"G_rgb\",\"G_HTML\",\"G\",\"RGB_G\",\"RGB_rgb\",\"RGB_HTML\",\"T_HTML\",\"T_rgb\",\"CMYK_RGB\",\"CMYK_rgb\",\"CMYK_HTML\",\"components\",\"RGB_CMYK\",\"BaseSVGFactory\",\"skipDimensions\",\"_createSVG\",\"DOMSVGFactory\",\"XfaLayer\",\"setupStorage\",\"html\",\"storedData\",\"xfaOn\",\"xfaOff\",\"checked\",\"option\",\"selected\",\"selectedIndex\",\"setAttributes\",\"linkService\",\"isHTMLAnchorElement\",\"HTMLAnchorElement\",\"addLinkAttributes\",\"newWindow\",\"dataId\",\"root\",\"xfaHtml\",\"rootHtml\",\"isNotForRichText\",\"rootDiv\",\"createTextNode\",\"stack\",\"childHtml\",\"xmlns\",\"querySelectorAll\",\"hidden\",\"DEFAULT_TAB_INDEX\",\"GetElementsByNameSet\",\"AnnotationElementFactory\",\"annotationType\",\"LinkAnnotationElement\",\"TextAnnotationElement\",\"fieldType\",\"TextWidgetAnnotationElement\",\"radioButton\",\"RadioButtonWidgetAnnotationElement\",\"checkBox\",\"CheckboxWidgetAnnotationElement\",\"PushButtonWidgetAnnotationElement\",\"ChoiceWidgetAnnotationElement\",\"SignatureWidgetAnnotationElement\",\"WidgetAnnotationElement\",\"PopupAnnotationElement\",\"FreeTextAnnotationElement\",\"LineAnnotationElement\",\"SquareAnnotationElement\",\"CircleAnnotationElement\",\"PolylineAnnotationElement\",\"CaretAnnotationElement\",\"InkAnnotationElement\",\"PolygonAnnotationElement\",\"HighlightAnnotationElement\",\"UnderlineAnnotationElement\",\"SquigglyAnnotationElement\",\"StrikeOutAnnotationElement\",\"StampAnnotationElement\",\"FileAttachmentAnnotationElement\",\"AnnotationElement\",\"updates\",\"hasBorder\",\"popupElement\",\"isRenderable\",\"ignoreBorder\",\"createQuadrilaterals\",\"downloadManager\",\"imageResourcesPath\",\"renderForms\",\"svgFactory\",\"enableScripting\",\"_fieldObjects\",\"fieldObjects\",\"_createContainer\",\"_createQuadrilaterals\",\"_hasPopupData\",\"titleObj\",\"contentsObj\",\"richText\",\"_isEditable\",\"isEditable\",\"hasPopupData\",\"updateEdited\",\"setRectEdited\",\"popup\",\"resetEdited\",\"#setRectEdited\",\"currentRect\",\"setRotation\",\"alternativeText\",\"noRotate\",\"borderStyle\",\"borderWidth\",\"horizontalRadius\",\"horizontalCornerRadius\",\"verticalRadius\",\"verticalCornerRadius\",\"radius\",\"borderRadius\",\"borderBottomStyle\",\"borderColor\",\"_commonActions\",\"setColor\",\"jsName\",\"styleName\",\"detail\",\"colorType\",\"colorArray\",\"display\",\"noView\",\"noPrint\",\"userName\",\"readonly\",\"required\",\"_setRequired\",\"textColor\",\"_dispatchEventFromSandbox\",\"actions\",\"jsEvent\",\"commonActions\",\"_setDefaultPropertiesFromJS\",\"eventProxy\",\"quadPoints\",\"rectBlX\",\"rectBlY\",\"rectTrX\",\"rectTrY\",\"trX\",\"trY\",\"blX\",\"blY\",\"svgBuffer\",\"clipPath\",\"rectWidth\",\"rectHeight\",\"backgroundImage\",\"_createPopup\",\"modificationDate\",\"parentRect\",\"elements\",\"_getElementsByName\",\"skipId\",\"fields\",\"fieldObj\",\"exportValues\",\"exportValue\",\"domElement\",\"getElementsByName\",\"maybeShow\",\"forceHide\",\"getElementsToTriggerPopup\",\"addHighlightArea\",\"triggers\",\"_editOnDoubleClick\",\"annotationEditorType\",\"isTooltipOnly\",\"link\",\"isBound\",\"_bindNamedAction\",\"attachment\",\"bindAttachment\",\"attachmentDest\",\"bindSetOCGState\",\"_bindLink\",\"Action\",\"_bindJSAction\",\"resetForm\",\"_bindResetFormAction\",\"setInternalLink\",\"#setInternalLink\",\"destination\",\"getDestinationHash\",\"onclick\",\"goToDestination\",\"getAnchorUrl\",\"executeNamedAction\",\"#bindAttachment\",\"openOrDownloadData\",\"#bindSetOCGState\",\"executeSetOCGState\",\"otherClickAction\",\"resetFormFields\",\"refs\",\"resetFormRefs\",\"include\",\"allFields\",\"fieldIds\",\"fieldName\",\"field\",\"allIds\",\"dispatchEvent\",\"Event\",\"showElementAndHideCanvas\",\"previousSibling\",\"_getKeyModifier\",\"_setEventListener\",\"elementData\",\"baseName\",\"eventName\",\"valueGetter\",\"modifier\",\"focused\",\"_setEventListeners\",\"getter\",\"Blur\",\"Focus\",\"_setBackgroundColor\",\"_setTextStyle\",\"TEXT_ALIGNMENT\",\"fontColor\",\"defaultAppearanceData\",\"computedFontSize\",\"roundToOneDecimal\",\"multiLine\",\"numberOfLines\",\"textAlignment\",\"textAlign\",\"isRequired\",\"hasAppearance\",\"fieldValue\",\"setPropertyOnSiblings\",\"keyInStorage\",\"maxLen\",\"charLimit\",\"fieldFormattedValues\",\"formattedValue\",\"comb\",\"userValue\",\"lastCommittedValue\",\"commitKey\",\"doNotScroll\",\"overflowY\",\"overflowX\",\"readOnly\",\"maxLength\",\"defaultFieldValue\",\"blurListener\",\"scrollLeft\",\"selRange\",\"setSelectionRange\",\"willCommit\",\"selStart\",\"selectionStart\",\"selEnd\",\"selectionEnd\",\"_blurListener\",\"Keystroke\",\"inputType\",\"change\",\"fieldWidth\",\"combWidth\",\"letterSpacing\",\"verticalAlign\",\"checkbox\",\"curChecked\",\"buttonValue\",\"radio\",\"pdfButtonValue\",\"linkElement\",\"selectElement\",\"addAnEmptyEntry\",\"combo\",\"multiSelect\",\"multiple\",\"optionElement\",\"displayValue\",\"removeEmptyEntry\",\"noneOptionElement\",\"isExport\",\"selectedValues\",\"getItems\",\"multipleSelection\",\"index\",\"findIndex\",\"selectChild\",\"indices\",\"editable\",\"changeEx\",\"keyDown\",\"PopupElement\",\"elementIds\",\"ariaHasPopup\",\"boundKeyDown\",\"boundHide\",\"boundShow\",\"boundToggle\",\"dateObj\",\"pinned\",\"wasVisible\",\"trigger\",\"flatMap\",\"baseColor\",\"outlineColor\",\"header\",\"valueOf\",\"contents\",\"_formatContents\",\"#html\",\"#fontSize\",\"#fontColor\",\"makePopupContent\",\"#makePopupContent\",\"popupLines\",\"popupContent\",\"lineAttributes\",\"line\",\"lines\",\"#keyDown\",\"setPosition\",\"#setPosition\",\"useParentRect\",\"normalizedRect\",\"HORIZONTAL_SPACE_AFTER_ANNOTATION\",\"popupLeft\",\"popupTop\",\"#toggle\",\"#show\",\"#hide\",\"textPosition\",\"lineSpan\",\"lineCoordinates\",\"square\",\"circle\",\"polyline\",\"containerClassName\",\"svgElementName\",\"vertices\",\"points\",\"polylinesGroupElement\",\"polylines\",\"it\",\"#getTransform\",\"inkLists\",\"thickness\",\"download\",\"#download\",\"AnnotationLayer\",\"accessibilityManager\",\"editableAnnotations\",\"structTreeLayer\",\"annotationEditorUIManager\",\"_annotationEditorUIManager\",\"hasEditableAnnotations\",\"appendElement\",\"#appendElement\",\"contentElement\",\"ariaAttributes\",\"getAriaAttributes\",\"moveElementInDOM\",\"annotations\",\"popupToElements\",\"elementParams\",\"noHTML\",\"isPopupAnnotation\",\"rendered\",\"setAnnotationCanvasMap\",\"addLinkAnnotations\",\"_defaultBorderStyle\",\"#setAnnotationCanvasMap\",\"replaceWith\",\"after\",\"editableAnnotation\",\"_hasNoCanvas\",\"getEditableAnnotations\",\"getEditableAnnotation\",\"rawWidth\",\"EOL_PATTERN\",\"FreeTextEditor\",\"editorDivId\",\"editModeAC\",\"_freeTextDefaultContent\",\"_internalPadding\",\"_defaultColor\",\"_defaultFontSize\",\"_translateEmpty\",\"updateFontSize\",\"#updateFontSize\",\"setFontsize\",\"editorDiv\",\"setEditorDimensions\",\"savedFontsize\",\"#updateColor\",\"col\",\"savedColor\",\"overlayDiv\",\"contentEditable\",\"editorDivKeydown\",\"editorDivFocus\",\"editorDivBlur\",\"editorDivInput\",\"editorDivPaste\",\"innerText\",\"extractText\",\"#extractText\",\"prevChild\",\"childNodes\",\"getNodeContent\",\"#setEditorDimensions\",\"savedDisplay\",\"savedVisibility\",\"savedText\",\"newText\",\"trimEnd\",\"setText\",\"setContent\",\"posX\",\"posY\",\"#getNodeContent\",\"nodeValue\",\"deserializeContent\",\"deleteFromDocument\",\"insertNode\",\"collapseToStart\",\"startContainer\",\"startOffset\",\"bufferBefore\",\"bufferAfter\",\"newRange\",\"Range\",\"beforeLength\",\"setStart\",\"setEnd\",\"removeAllRanges\",\"addRange\",\"#setContent\",\"replaceChildren\",\"serializeContent\",\"#serializeContent\",\"#deserializeContent\",\"padding\",\"structTreeParentId\",\"hasElementChanged\",\"#hasElementChanged\",\"Outline\",\"PRECISION\",\"toSVGPath\",\"_rotation\",\"_rescale\",\"_rescaleAndSwap\",\"_translate\",\"svgRound\",\"_normalizePoint\",\"_normalizePagePoint\",\"createBezierPoints\",\"FreeDrawOutliner\",\"innerMargin\",\"last\",\"min_dist\",\"scaleFactor\",\"MIN_DIST\",\"MIN_DIFF\",\"MIN\",\"getLastCoords\",\"#getLastCoords\",\"lastTop\",\"lastBottom\",\"diffX\",\"diffY\",\"diffD\",\"nX\",\"nY\",\"thX\",\"thY\",\"toSVGPathTwoPoints\",\"toSVGPathEnd\",\"toSVGPathStart\",\"#toSVGPathTwoPoints\",\"lastTopX\",\"lastTopY\",\"lastBottomX\",\"lastBottomY\",\"#toSVGPathStart\",\"#toSVGPathEnd\",\"newFreeDrawOutline\",\"outline\",\"FreeDrawOutline\",\"getOutlines\",\"getOutlineTwoPoints\",\"N\",\"getOutlineEnd\",\"getOutlineStart\",\"#getOutlineTwoPoints\",\"#getOutlineStart\",\"#getOutlineEnd\",\"lastPoint\",\"computeMinMax\",\"#computeMinMax\",\"lastPointX\",\"lastPointY\",\"ltrCallback\",\"newOutliner\",\"getNewOutline\",\"outliner\",\"HighlightOutliner\",\"verticalEdges\",\"intervals\",\"NUMBER_OF_DIGITS\",\"EPSILON\",\"shiftedMinX\",\"shiftedMinY\",\"lastEdge\",\"edge\",\"sort\",\"outlineVerticalEdges\",\"breakEdge\",\"#getOutlines\",\"edges\",\"allEdges\",\"edge1\",\"edge2\",\"outlines\",\"HighlightOutline\",\"binarySearch\",\"#binarySearch\",\"middle\",\"#insert\",\"#remove\",\"#breakEdge\",\"y4\",\"polygon\",\"prevX\",\"prevY\",\"classNamesForOutlining\",\"FreeHighlightOutliner\",\"FreeHighlightOutline\",\"ColorPicker\",\"buttonSwatch\",\"defaultColor\",\"dropdown\",\"dropdownWasFromKeyboard\",\"isMainColorPicker\",\"openDropdownAC\",\"l10nColor\",\"_hideDropdownFromKeyboard\",\"_colorSelectFromKeyboard\",\"_moveToNext\",\"_moveToPrevious\",\"_moveToBeginning\",\"_moveToEnd\",\"blue\",\"green\",\"pink\",\"red\",\"yellow\",\"openDropdown\",\"swatch\",\"renderMainDropdown\",\"getDropdownRoot\",\"#getDropdownRoot\",\"role\",\"colorSelect\",\"#colorSelect\",\"isDropdownVisible\",\"nextSibling\",\"#openDropdown\",\"#isDropdownVisible\",\"HighlightEditor\",\"clipPathId\",\"focusOutlines\",\"highlightDiv\",\"highlightOutlines\",\"isFreeHighlight\",\"outlineId\",\"_defaultOpacity\",\"_defaultThickness\",\"_freeHighlightId\",\"_freeHighlight\",\"_freeHighlightClipId\",\"_moveCaret\",\"highlightId\",\"createFreeOutlines\",\"addToDrawLayer\",\"createOutlines\",\"numberOfColors\",\"#createOutlines\",\"outlinerForOutline\",\"#createFreeOutlines\",\"extraThickness\",\"drawLayer\",\"finalizeDraw\",\"drawOutline\",\"rootClass\",\"highlightOutline\",\"free\",\"updateProperties\",\"rotateBbox\",\"updateThickness\",\"setColorAndOpacity\",\"opa\",\"savedOpacity\",\"#updateThickness\",\"savedThickness\",\"setThickness\",\"th\",\"changeThickness\",\"getRotation\",\"addUndoableEditor\",\"cleanDrawLayer\",\"mustBeSelected\",\"#changeThickness\",\"#cleanDrawLayer\",\"#addToDrawLayer\",\"draw\",\"#rotateBbox\",\"pointerover\",\"hovered\",\"pointerleave\",\"#keydown\",\"setCaret\",\"#setCaret\",\"#getRotation\",\"serializeBoxes\",\"#serializeBoxes\",\"serializeOutlines\",\"#serializeOutlines\",\"startHighlighting\",\"endHighlight\",\"highlightMove\",\"#highlightMove\",\"#endHighlight\",\"DrawingOptions\",\"svgProperties\",\"updateProperty\",\"updateSVGProperty\",\"toSVGProperties\",\"updateAll\",\"DrawingEditor\",\"drawOutlines\",\"mustBeCommitted\",\"_drawId\",\"_currentDrawId\",\"_currentParent\",\"currentDraw\",\"currentDrawingAC\",\"currentDrawingOptions\",\"currentPointerId\",\"currentPointerType\",\"currentPointerIds\",\"currentMoveTimestamp\",\"_INNER_MARGIN\",\"_addOutlines\",\"createDrawOutlines\",\"#createDrawOutlines\",\"drawId\",\"drawingOptions\",\"_drawingOptions\",\"defaultProperties\",\"createDrawing\",\"updateBbox\",\"#createDrawing\",\"_mergeSVGProperties\",\"defaultSVGProperties\",\"p1Keys\",\"getDefaultDrawingOptions\",\"_options\",\"typesMap\",\"supportMultipleDrawings\",\"propertyName\",\"_defaultDrawingOptions\",\"_updateProperty\",\"savedValue\",\"setter\",\"getPathResizingSVGProperties\",\"convertToDrawSpace\",\"rotateBox\",\"getPathResizedSVGProperties\",\"_x\",\"_y\",\"getPathTranslatedSVGProperties\",\"moving\",\"updateParent\",\"convertToParentSpace\",\"#convertToParentSpace\",\"pW\",\"pH\",\"#convertToDrawSpace\",\"#updateBbox\",\"#rotateBox\",\"updateRotation\",\"updateParentDimensions\",\"onScaleChangingWhenDrawing\",\"drawDiv\",\"createDrawerInstance\",\"_parentWidth\",\"_parentHeight\",\"startDrawing\",\"_isLTR\",\"_endDraw\",\"isCancellable\",\"removeLastElement\",\"_drawMove\",\"timeStamp\",\"startNew\",\"_cleanup\",\"lastElement\",\"getLastElement\",\"setLastElement\",\"isAborted\",\"createDrawingOptions\",\"_data\",\"deserializeDraw\",\"_pageX\",\"_pageY\",\"_pageWidth\",\"_pageHeight\",\"_innerWidth\",\"serializeDraw\",\"InkDrawOutliner\",\"Float64Array\",\"lastSVGPath\",\"lastIndex\",\"InkDrawOutline\",\"normalizePoint\",\"#normalizePoint\",\"firstX\",\"firstY\",\"secondX\",\"secondY\",\"c1x\",\"c1y\",\"c2x\",\"c2y\",\"currentRotation\",\"computeBbox\",\"serializedLines\",\"serializedPoints\",\"getBBoxWithNoMargin\",\"rescaleFn\",\"newLines\",\"getMarginComponents\",\"#getMarginComponents\",\"margin\",\"#getBBoxWithNoMargin\",\"marginX\",\"marginY\",\"#computeBbox\",\"oldMarginX\",\"oldMarginY\",\"newMarginX\",\"newMarginY\",\"diffMarginX\",\"diffMarginY\",\"rotationTransform\",\"s1x\",\"s1y\",\"s2x\",\"s2y\",\"newParentWidth\",\"newParentHeight\",\"InkDrawingOptions\",\"viewerParameters\",\"_viewParameters\",\"InkEditor\",\"ContourDrawOutline\",\"BASE_HEADER_LENGTH\",\"POINTS_PROPERTIES_NUMBER\",\"SignatureExtractor\",\"PARAMETERS\",\"sigmaSFactor\",\"sigmaR\",\"kernelSize\",\"neighborIndexToId\",\"#neighborIndexToId\",\"i0\",\"j0\",\"neighborIdToIndex\",\"Int32Array\",\"clockwiseNonZero\",\"#clockwiseNonZero\",\"kk\",\"shiftI\",\"shiftJ\",\"counterClockwiseNonZero\",\"#counterClockwiseNonZero\",\"findContours\",\"#findContours\",\"threshold\",\"nbd\",\"lnbd\",\"contours\",\"ij\",\"pix\",\"i2\",\"j2\",\"isHole\",\"contour\",\"contour0\",\"i1\",\"j1\",\"i3\",\"j3\",\"i4\",\"j4\",\"ij3\",\"douglasPeuckerHelper\",\"#douglasPeuckerHelper\",\"ax\",\"ay\",\"abx\",\"aby\",\"dist\",\"nabx\",\"naby\",\"aa\",\"invS\",\"phi\",\"atan\",\"cosPhi\",\"sinPhi\",\"tmax\",\"poly\",\"partialPhi\",\"dmax\",\"douglasPeucker\",\"#douglasPeucker\",\"bilateralFilter\",\"#bilateralFilter\",\"sigmaS\",\"kernel\",\"sigmaS2\",\"halfSize\",\"exp\",\"rangeValues\",\"sigmaR2\",\"out\",\"histogram\",\"sum\",\"norm\",\"l\",\"neighbour\",\"getHistogram\",\"#getHistogram\",\"toUint8\",\"#toUint8\",\"Uint8ClampedArray\",\"A\",\"guessThreshold\",\"#guessThreshold\",\"M\",\"L\",\"spos\",\"getGrayPixels\",\"#getGrayPixels\",\"originalBitmap\",\"prevWidth\",\"prevHeight\",\"log2\",\"isteps\",\"grayImage\",\"uint8Buf\",\"extractContoursFromText\",\"fontStyle\",\"actualBoundingBoxLeft\",\"actualBoundingBoxRight\",\"actualBoundingBoxAscent\",\"actualBoundingBoxDescent\",\"SCALE\",\"contourList\",\"processDrawnLines\",\"curves\",\"mustSmooth\",\"areContours\",\"linesAndPoints\",\"xScale\",\"yScale\",\"newCurves\",\"reducedPoints\",\"newPoints\",\"compressSignature\",\"minDiff\",\"maxDiff\",\"outlinesLength\",\"dx\",\"bufferType\",\"Int8Array\",\"Int16Array\",\"headerLength\",\"BYTES_PER_ELEMENT\",\"CompressionStream\",\"writer\",\"getWriter\",\"write\",\"BufferCtor\",\"diffs\",\"Response\",\"readable\",\"decompressSignature\",\"signatureData\",\"DecompressionStream\",\"numberOfDrawings\",\"diffsOffset\",\"SignatureOptions\",\"DrawnSignatureOptions\",\"SignatureEditor\",\"isExtracted\",\"signatureUUID\",\"_defaultDrawnSignatureOptions\",\"hasDescription\",\"hasDescriptionStats\",\"hasNoAltText\",\"uuid\",\"heightInPage\",\"addSignature\",\"setUuid\",\"getSignaturePreview\",\"outlineData\",\"hasBeenSaved\",\"getFromImage\",\"getFromText\",\"fontInfo\",\"getDrawnSignature\",\"isSignature\",\"alt\",\"StampEditor\",\"bitmapId\",\"bitmapPromise\",\"bitmapUrl\",\"bitmapFile\",\"bitmapFileName\",\"missingCanvas\",\"resizeTimeoutId\",\"hasBeenAddedInUndoStack\",\"pasteEditor\",\"getAsFile\",\"hasAltTextStats\",\"getBitmapFetched\",\"#getBitmapFetched\",\"fromId\",\"getBitmapDone\",\"#getBitmapDone\",\"alt_text_modal\",\"alt_text_type\",\"mlGuessAltText\",\"updateAltTextData\",\"isEnabledFor\",\"copyCanvas\",\"guess\",\"channels\",\"getBitmap\",\"#getBitmap\",\"accept\",\"files\",\"click\",\"drawBitmap\",\"#createCanvas\",\"MAX_RATIO\",\"maxDataDimension\",\"maxPreviewDimension\",\"bitmapWidth\",\"bitmapHeight\",\"outputScale\",\"scaledWidth\",\"scaledHeight\",\"scaleBitmap\",\"boxDim\",\"boxDimWidth\",\"boxDimHeight\",\"patternCtx\",\"dataWidth\",\"dataHeight\",\"offscreenCtx\",\"#scaleBitmap\",\"#drawBitmap\",\"serializeBitmap\",\"#serializeBitmap\",\"toUrl\",\"toDataURL\",\"structParent\",\"_structTree\",\"changes\",\"isSame\",\"isSameAltText\",\"stamps\",\"area\",\"prevData\",\"isSamePageIndex\",\"AnnotationEditorLayer\",\"allowClick\",\"annotationLayer\",\"clickAC\",\"editorFocusTimeoutId\",\"hadPointerDown\",\"isDisabling\",\"isEnabling\",\"drawingAC\",\"focusedElement\",\"textSelectionAC\",\"_initialized\",\"isInvisible\",\"disableTextSelection\",\"toggleAnnotationLayerPointerEvents\",\"enableTextSelection\",\"annotationElementIds\",\"editables\",\"changedAnnotations\",\"resetAnnotations\",\"currentActive\",\"textLayerPointerDown\",\"#textLayerPointerDown\",\"attach\",\"detach\",\"removePointerInTextLayer\",\"currentEditorType\",\"#currentEditorType\",\"createNewEditor\",\"#createNewEditor\",\"getCenterPoint\",\"#getCenterPoint\",\"currentMode\",\"startDrawingSession\",\"pause\",\"#cleanup\",\"oldRotation\",\"DrawLayer\",\"mapping\",\"toUpdate\",\"_svgFactory\",\"setBox\",\"#setBox\",\"createSVG\",\"#createSVG\",\"createClipPath\",\"#createClipPath\",\"pathId\",\"clipPathUse\",\"#updateProperties\",\"isPathUpdatable\",\"hasClip\",\"use\",\"mustRemoveSelfIntersections\",\"maskId\",\"use1\",\"use2\",\"cloneNode\",\"elementOrId\",\"pathElement\",\"_pdfjsTestingUtils\",\"pdfjsLib\"],\"sourceRoot\":\"\"}\n\\ No newline at end of file\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fbuild\u002Fpdf.sandbox.js \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fbuild\u002Fpdf.sandbox.js\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fbuild\u002Fpdf.sandbox.js\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fbuild\u002Fpdf.sandbox.js\t2026-02-24 09:27:28.000000000 +0000\n@@ -2,7 +2,7 @@\n  * @licstart The following is the entire license notice for the\n  * JavaScript code in this page\n  *\n- * Copyright 2023 Mozilla Foundation\n+ * Copyright 2024 Mozilla Foundation\n  *\n  * Licensed under the Apache License, Version 2.0 (the \"License\");\n  * you may not use this file except in compliance with the License.\n@@ -20,38 +20,3705 @@\n  * JavaScript code in this page\n  *\u002F\n \n-\u002F******\u002F \u002F\u002F The require scope\n-\u002F******\u002F var __webpack_require__ = {};\n-\u002F******\u002F \n+\u002F**\n+ * pdfjsVersion = 5.3.31\n+ * pdfjsBuild = 47ad820d9\n+ *\u002F\n+\u002F******\u002F var __webpack_modules__ = ({\n+\n+\u002F***\u002F 34:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isCallable = __webpack_require__(4901);\n+\n+module.exports = function (it) {\n+  return typeof it == 'object' ? it !== null : isCallable(it);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 81:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var call = __webpack_require__(9565);\n+var aCallable = __webpack_require__(9306);\n+var anObject = __webpack_require__(8551);\n+var tryToString = __webpack_require__(6823);\n+var getIteratorMethod = __webpack_require__(851);\n+\n+var $TypeError = TypeError;\n+\n+module.exports = function (argument, usingIterator) {\n+  var iteratorMethod = arguments.length \u003C 2 ? getIteratorMethod(argument) : usingIterator;\n+  if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n+  throw new $TypeError(tryToString(argument) + ' is not iterable');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 283:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+var fails = __webpack_require__(9039);\n+var isCallable = __webpack_require__(4901);\n+var hasOwn = __webpack_require__(9297);\n+var DESCRIPTORS = __webpack_require__(3724);\n+var CONFIGURABLE_FUNCTION_NAME = (__webpack_require__(350).CONFIGURABLE);\n+var inspectSource = __webpack_require__(3706);\n+var InternalStateModule = __webpack_require__(1181);\n+\n+var enforceInternalState = InternalStateModule.enforce;\n+var getInternalState = InternalStateModule.get;\n+var $String = String;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\n+var defineProperty = Object.defineProperty;\n+var stringSlice = uncurryThis(''.slice);\n+var replace = uncurryThis(''.replace);\n+var join = uncurryThis([].join);\n+\n+var CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n+  return defineProperty(function () { \u002F* empty *\u002F }, 'length', { value: 8 }).length !== 8;\n+});\n+\n+var TEMPLATE = String(String).split('String');\n+\n+var makeBuiltIn = module.exports = function (value, name, options) {\n+  if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n+    name = '[' + replace($String(name), \u002F^Symbol\\(([^)]*)\\).*$\u002F, '$1') + ']';\n+  }\n+  if (options && options.getter) name = 'get ' + name;\n+  if (options && options.setter) name = 'set ' + name;\n+  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n+    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n+    else value.name = name;\n+  }\n+  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n+    defineProperty(value, 'length', { value: options.arity });\n+  }\n+  try {\n+    if (options && hasOwn(options, 'constructor') && options.constructor) {\n+      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n+    \u002F\u002F in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n+    } else if (value.prototype) value.prototype = undefined;\n+  } catch (error) { \u002F* empty *\u002F }\n+  var state = enforceInternalState(value);\n+  if (!hasOwn(state, 'source')) {\n+    state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n+  } return value;\n+};\n+\n+\u002F\u002F add fake Function#toString for correct work wrapped methods \u002F constructors with methods like LoDash isNative\n+\u002F\u002F eslint-disable-next-line no-extend-native -- required\n+Function.prototype.toString = makeBuiltIn(function toString() {\n+  return isCallable(this) && getInternalState(this).source || inspectSource(this);\n+}, 'toString');\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 350:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var hasOwn = __webpack_require__(9297);\n+\n+var FunctionPrototype = Function.prototype;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n+\n+var EXISTS = hasOwn(FunctionPrototype, 'name');\n+\u002F\u002F additional protection from minified \u002F mangled \u002F dropped function names\n+var PROPER = EXISTS && (function something() { \u002F* empty *\u002F }).name === 'something';\n+var CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n+\n+module.exports = {\n+  EXISTS: EXISTS,\n+  PROPER: PROPER,\n+  CONFIGURABLE: CONFIGURABLE\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 397:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var getBuiltIn = __webpack_require__(7751);\n+\n+module.exports = getBuiltIn('document', 'documentElement');\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 421:\n+\u002F***\u002F ((module) => {\n+\n+\n+module.exports = {};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 616:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var fails = __webpack_require__(9039);\n+\n+module.exports = !fails(function () {\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind -- safe\n+  var test = (function () { \u002F* empty *\u002F }).bind();\n+  \u002F\u002F eslint-disable-next-line no-prototype-builtins -- safe\n+  return typeof test != 'function' || test.hasOwnProperty('prototype');\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 655:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var classof = __webpack_require__(6955);\n+\n+var $String = String;\n+\n+module.exports = function (argument) {\n+  if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n+  return $String(argument);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 679:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isPrototypeOf = __webpack_require__(1625);\n+\n+var $TypeError = TypeError;\n+\n+module.exports = function (it, Prototype) {\n+  if (isPrototypeOf(Prototype, it)) return it;\n+  throw new $TypeError('Incorrect invocation');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 741:\n+\u002F***\u002F ((module) => {\n+\n+\n+var ceil = Math.ceil;\n+var floor = Math.floor;\n+\n+\u002F\u002F `Math.trunc` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-math.trunc\n+\u002F\u002F eslint-disable-next-line es\u002Fno-math-trunc -- safe\n+module.exports = Math.trunc || function trunc(x) {\n+  var n = +x;\n+  return (n > 0 ? floor : ceil)(n);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 757:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var getBuiltIn = __webpack_require__(7751);\n+var isCallable = __webpack_require__(4901);\n+var isPrototypeOf = __webpack_require__(1625);\n+var USE_SYMBOL_AS_UID = __webpack_require__(7040);\n+\n+var $Object = Object;\n+\n+module.exports = USE_SYMBOL_AS_UID ? function (it) {\n+  return typeof it == 'symbol';\n+} : function (it) {\n+  var $Symbol = getBuiltIn('Symbol');\n+  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 851:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var classof = __webpack_require__(6955);\n+var getMethod = __webpack_require__(5966);\n+var isNullOrUndefined = __webpack_require__(4117);\n+var Iterators = __webpack_require__(6269);\n+var wellKnownSymbol = __webpack_require__(8227);\n+\n+var ITERATOR = wellKnownSymbol('iterator');\n+\n+module.exports = function (it) {\n+  if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n+    || getMethod(it, '@@iterator')\n+    || Iterators[classof(it)];\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 944:\n+\u002F***\u002F ((module) => {\n+\n+\n+var $TypeError = TypeError;\n+\n+module.exports = function (options) {\n+  var alphabet = options && options.alphabet;\n+  if (alphabet === undefined || alphabet === 'base64' || alphabet === 'base64url') return alphabet || 'base64';\n+  throw new $TypeError('Incorrect `alphabet` option');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1072:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var internalObjectKeys = __webpack_require__(1828);\n+var enumBugKeys = __webpack_require__(8727);\n+\n+\u002F\u002F `Object.keys` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.keys\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-keys -- safe\n+module.exports = Object.keys || function keys(O) {\n+  return internalObjectKeys(O, enumBugKeys);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1148:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var call = __webpack_require__(9565);\n+var iterate = __webpack_require__(2652);\n+var aCallable = __webpack_require__(9306);\n+var anObject = __webpack_require__(8551);\n+var getIteratorDirect = __webpack_require__(1767);\n+var iteratorClose = __webpack_require__(9539);\n+var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n+\n+var everyWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('every', TypeError);\n+\n+\u002F\u002F `Iterator.prototype.every` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.every\n+$({ target: 'Iterator', proto: true, real: true, forced: everyWithoutClosingOnEarlyError }, {\n+  every: function every(predicate) {\n+    anObject(this);\n+    try {\n+      aCallable(predicate);\n+    } catch (error) {\n+      iteratorClose(this, 'throw', error);\n+    }\n+\n+    if (everyWithoutClosingOnEarlyError) return call(everyWithoutClosingOnEarlyError, this, predicate);\n+\n+    var record = getIteratorDirect(this);\n+    var counter = 0;\n+    return !iterate(record, function (value, stop) {\n+      if (!predicate(value, counter++)) return stop();\n+    }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1181:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var NATIVE_WEAK_MAP = __webpack_require__(8622);\n+var globalThis = __webpack_require__(4576);\n+var isObject = __webpack_require__(34);\n+var createNonEnumerableProperty = __webpack_require__(6699);\n+var hasOwn = __webpack_require__(9297);\n+var shared = __webpack_require__(7629);\n+var sharedKey = __webpack_require__(6119);\n+var hiddenKeys = __webpack_require__(421);\n+\n+var OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\n+var TypeError = globalThis.TypeError;\n+var WeakMap = globalThis.WeakMap;\n+var set, get, has;\n+\n+var enforce = function (it) {\n+  return has(it) ? get(it) : set(it, {});\n+};\n+\n+var getterFor = function (TYPE) {\n+  return function (it) {\n+    var state;\n+    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n+      throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n+    } return state;\n+  };\n+};\n+\n+if (NATIVE_WEAK_MAP || shared.state) {\n+  var store = shared.state || (shared.state = new WeakMap());\n+  \u002F* eslint-disable no-self-assign -- prototype methods protection *\u002F\n+  store.get = store.get;\n+  store.has = store.has;\n+  store.set = store.set;\n+  \u002F* eslint-enable no-self-assign -- prototype methods protection *\u002F\n+  set = function (it, metadata) {\n+    if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n+    metadata.facade = it;\n+    store.set(it, metadata);\n+    return metadata;\n+  };\n+  get = function (it) {\n+    return store.get(it) || {};\n+  };\n+  has = function (it) {\n+    return store.has(it);\n+  };\n+} else {\n+  var STATE = sharedKey('state');\n+  hiddenKeys[STATE] = true;\n+  set = function (it, metadata) {\n+    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n+    metadata.facade = it;\n+    createNonEnumerableProperty(it, STATE, metadata);\n+    return metadata;\n+  };\n+  get = function (it) {\n+    return hasOwn(it, STATE) ? it[STATE] : {};\n+  };\n+  has = function (it) {\n+    return hasOwn(it, STATE);\n+  };\n+}\n+\n+module.exports = {\n+  set: set,\n+  get: get,\n+  has: has,\n+  enforce: enforce,\n+  getterFor: getterFor\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1291:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var trunc = __webpack_require__(741);\n+\n+\u002F\u002F `ToIntegerOrInfinity` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-tointegerorinfinity\n+module.exports = function (argument) {\n+  var number = +argument;\n+  \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\n+  return number !== number || number === 0 ? 0 : trunc(number);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1548:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var fails = __webpack_require__(9039);\n+var V8 = __webpack_require__(9519);\n+var ENVIRONMENT = __webpack_require__(4215);\n+\n+var structuredClone = globalThis.structuredClone;\n+\n+module.exports = !!structuredClone && !fails(function () {\n+  \u002F\u002F prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation\n+  \u002F\u002F https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F679\n+  if ((ENVIRONMENT === 'DENO' && V8 > 92) || (ENVIRONMENT === 'NODE' && V8 > 94) || (ENVIRONMENT === 'BROWSER' && V8 > 97)) return false;\n+  var buffer = new ArrayBuffer(8);\n+  var clone = structuredClone(buffer, { transfer: [buffer] });\n+  return buffer.byteLength !== 0 || clone.byteLength !== 8;\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1549:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var globalThis = __webpack_require__(4576);\n+var $fromBase64 = __webpack_require__(9143);\n+var anUint8Array = __webpack_require__(4154);\n+\n+var Uint8Array = globalThis.Uint8Array;\n+\n+var INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS = !Uint8Array || !Uint8Array.prototype.setFromBase64 || !(function () {\n+  var target = new Uint8Array([255, 255, 255, 255, 255]);\n+  try {\n+    target.setFromBase64('MjYyZg===');\n+  } catch (error) {\n+    return target[0] === 50 && target[1] === 54 && target[2] === 50 && target[3] === 255 && target[4] === 255;\n+  }\n+})();\n+\n+\u002F\u002F `Uint8Array.prototype.setFromBase64` method\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-arraybuffer-base64\n+if (Uint8Array) $({ target: 'Uint8Array', proto: true, forced: INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS }, {\n+  setFromBase64: function setFromBase64(string \u002F* , options *\u002F) {\n+    anUint8Array(this);\n+\n+    var result = $fromBase64(string, arguments.length > 1 ? arguments[1] : undefined, this, this.length);\n+\n+    return { read: result.read, written: result.written };\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1625:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+\n+module.exports = uncurryThis({}.isPrototypeOf);\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1767:\n+\u002F***\u002F ((module) => {\n+\n+\n+\u002F\u002F `GetIteratorDirect(obj)` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-iterator-helpers\u002F#sec-getiteratordirect\n+module.exports = function (obj) {\n+  return {\n+    iterator: obj,\n+    next: obj.next,\n+    done: false\n+  };\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1828:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+var hasOwn = __webpack_require__(9297);\n+var toIndexedObject = __webpack_require__(5397);\n+var indexOf = (__webpack_require__(9617).indexOf);\n+var hiddenKeys = __webpack_require__(421);\n+\n+var push = uncurryThis([].push);\n+\n+module.exports = function (object, names) {\n+  var O = toIndexedObject(object);\n+  var i = 0;\n+  var result = [];\n+  var key;\n+  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n+  \u002F\u002F Don't enum bug & hidden keys\n+  while (names.length > i) if (hasOwn(O, key = names[i++])) {\n+    ~indexOf(result, key) || push(result, key);\n+  }\n+  return result;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2106:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var makeBuiltIn = __webpack_require__(283);\n+var defineProperty = __webpack_require__(4913);\n+\n+module.exports = function (target, name, descriptor) {\n+  if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n+  if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n+  return defineProperty.f(target, name, descriptor);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2140:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var wellKnownSymbol = __webpack_require__(8227);\n+\n+var TO_STRING_TAG = wellKnownSymbol('toStringTag');\n+var test = {};\n+\n+test[TO_STRING_TAG] = 'z';\n+\n+module.exports = String(test) === '[object z]';\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2195:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+\n+var toString = uncurryThis({}.toString);\n+var stringSlice = uncurryThis(''.slice);\n+\n+module.exports = function (it) {\n+  return stringSlice(toString(it), 8, -1);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2211:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var fails = __webpack_require__(9039);\n+\n+module.exports = !fails(function () {\n+  function F() { \u002F* empty *\u002F }\n+  F.prototype.constructor = null;\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-object-getprototypeof -- required for testing\n+  return Object.getPrototypeOf(new F()) !== F.prototype;\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2303:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var uncurryThis = __webpack_require__(9504);\n+\n+var Uint8Array = globalThis.Uint8Array;\n+var SyntaxError = globalThis.SyntaxError;\n+var parseInt = globalThis.parseInt;\n+var min = Math.min;\n+var NOT_HEX = \u002F[^\\da-f]\u002Fi;\n+var exec = uncurryThis(NOT_HEX.exec);\n+var stringSlice = uncurryThis(''.slice);\n+\n+module.exports = function (string, into) {\n+  var stringLength = string.length;\n+  if (stringLength % 2 !== 0) throw new SyntaxError('String should be an even number of characters');\n+  var maxLength = into ? min(into.length, stringLength \u002F 2) : stringLength \u002F 2;\n+  var bytes = into || new Uint8Array(maxLength);\n+  var read = 0;\n+  var written = 0;\n+  while (written \u003C maxLength) {\n+    var hexits = stringSlice(string, read, read += 2);\n+    if (exec(NOT_HEX, hexits)) throw new SyntaxError('String should only contain hex characters');\n+    bytes[written++] = parseInt(hexits, 16);\n+  }\n+  return { bytes: bytes, read: read };\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2360:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+\u002F* global ActiveXObject -- old IE, WSH *\u002F\n+var anObject = __webpack_require__(8551);\n+var definePropertiesModule = __webpack_require__(6801);\n+var enumBugKeys = __webpack_require__(8727);\n+var hiddenKeys = __webpack_require__(421);\n+var html = __webpack_require__(397);\n+var documentCreateElement = __webpack_require__(4055);\n+var sharedKey = __webpack_require__(6119);\n+\n+var GT = '>';\n+var LT = '\u003C';\n+var PROTOTYPE = 'prototype';\n+var SCRIPT = 'script';\n+var IE_PROTO = sharedKey('IE_PROTO');\n+\n+var EmptyConstructor = function () { \u002F* empty *\u002F };\n+\n+var scriptTag = function (content) {\n+  return LT + SCRIPT + GT + content + LT + '\u002F' + SCRIPT + GT;\n+};\n+\n+\u002F\u002F Create object with fake `null` prototype: use ActiveX Object with cleared prototype\n+var NullProtoObjectViaActiveX = function (activeXDocument) {\n+  activeXDocument.write(scriptTag(''));\n+  activeXDocument.close();\n+  var temp = activeXDocument.parentWindow.Object;\n+  \u002F\u002F eslint-disable-next-line no-useless-assignment -- avoid memory leak\n+  activeXDocument = null;\n+  return temp;\n+};\n+\n+\u002F\u002F Create object with fake `null` prototype: use iframe Object with cleared prototype\n+var NullProtoObjectViaIFrame = function () {\n+  \u002F\u002F Thrash, waste and sodomy: IE GC bug\n+  var iframe = documentCreateElement('iframe');\n+  var JS = 'java' + SCRIPT + ':';\n+  var iframeDocument;\n+  iframe.style.display = 'none';\n+  html.appendChild(iframe);\n+  \u002F\u002F https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F475\n+  iframe.src = String(JS);\n+  iframeDocument = iframe.contentWindow.document;\n+  iframeDocument.open();\n+  iframeDocument.write(scriptTag('document.F=Object'));\n+  iframeDocument.close();\n+  return iframeDocument.F;\n+};\n+\n+\u002F\u002F Check for document.domain and active x support\n+\u002F\u002F No need to use active x approach when document.domain is not set\n+\u002F\u002F see https:\u002F\u002Fgithub.com\u002Fes-shims\u002Fes5-shim\u002Fissues\u002F150\n+\u002F\u002F variation of https:\u002F\u002Fgithub.com\u002Fkitcambridge\u002Fes5-shim\u002Fcommit\u002F4f738ac066346\n+\u002F\u002F avoid IE GC bug\n+var activeXDocument;\n+var NullProtoObject = function () {\n+  try {\n+    activeXDocument = new ActiveXObject('htmlfile');\n+  } catch (error) { \u002F* ignore *\u002F }\n+  NullProtoObject = typeof document != 'undefined'\n+    ? document.domain && activeXDocument\n+      ? NullProtoObjectViaActiveX(activeXDocument) \u002F\u002F old IE\n+      : NullProtoObjectViaIFrame()\n+    : NullProtoObjectViaActiveX(activeXDocument); \u002F\u002F WSH\n+  var length = enumBugKeys.length;\n+  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n+  return NullProtoObject();\n+};\n+\n+hiddenKeys[IE_PROTO] = true;\n+\n+\u002F\u002F `Object.create` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.create\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-create -- safe\n+module.exports = Object.create || function create(O, Properties) {\n+  var result;\n+  if (O !== null) {\n+    EmptyConstructor[PROTOTYPE] = anObject(O);\n+    result = new EmptyConstructor();\n+    EmptyConstructor[PROTOTYPE] = null;\n+    \u002F\u002F add \"__proto__\" for Object.getPrototypeOf polyfill\n+    result[IE_PROTO] = O;\n+  } else result = NullProtoObject();\n+  return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2603:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var toString = __webpack_require__(655);\n+\n+module.exports = function (argument, $default) {\n+  return argument === undefined ? arguments.length \u003C 2 ? '' : $default : toString(argument);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2652:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var bind = __webpack_require__(6080);\n+var call = __webpack_require__(9565);\n+var anObject = __webpack_require__(8551);\n+var tryToString = __webpack_require__(6823);\n+var isArrayIteratorMethod = __webpack_require__(4209);\n+var lengthOfArrayLike = __webpack_require__(6198);\n+var isPrototypeOf = __webpack_require__(1625);\n+var getIterator = __webpack_require__(81);\n+var getIteratorMethod = __webpack_require__(851);\n+var iteratorClose = __webpack_require__(9539);\n+\n+var $TypeError = TypeError;\n+\n+var Result = function (stopped, result) {\n+  this.stopped = stopped;\n+  this.result = result;\n+};\n+\n+var ResultPrototype = Result.prototype;\n+\n+module.exports = function (iterable, unboundFunction, options) {\n+  var that = options && options.that;\n+  var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n+  var IS_RECORD = !!(options && options.IS_RECORD);\n+  var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n+  var INTERRUPTED = !!(options && options.INTERRUPTED);\n+  var fn = bind(unboundFunction, that);\n+  var iterator, iterFn, index, length, result, next, step;\n+\n+  var stop = function (condition) {\n+    if (iterator) iteratorClose(iterator, 'normal', condition);\n+    return new Result(true, condition);\n+  };\n+\n+  var callFn = function (value) {\n+    if (AS_ENTRIES) {\n+      anObject(value);\n+      return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n+    } return INTERRUPTED ? fn(value, stop) : fn(value);\n+  };\n+\n+  if (IS_RECORD) {\n+    iterator = iterable.iterator;\n+  } else if (IS_ITERATOR) {\n+    iterator = iterable;\n+  } else {\n+    iterFn = getIteratorMethod(iterable);\n+    if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');\n+    \u002F\u002F optimisation for array iterators\n+    if (isArrayIteratorMethod(iterFn)) {\n+      for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n+        result = callFn(iterable[index]);\n+        if (result && isPrototypeOf(ResultPrototype, result)) return result;\n+      } return new Result(false);\n+    }\n+    iterator = getIterator(iterable, iterFn);\n+  }\n+\n+  next = IS_RECORD ? iterable.next : iterator.next;\n+  while (!(step = call(next, iterator)).done) {\n+    try {\n+      result = callFn(step.value);\n+    } catch (error) {\n+      iteratorClose(iterator, 'throw', error);\n+    }\n+    if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n+  } return new Result(false);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2777:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var call = __webpack_require__(9565);\n+var isObject = __webpack_require__(34);\n+var isSymbol = __webpack_require__(757);\n+var getMethod = __webpack_require__(5966);\n+var ordinaryToPrimitive = __webpack_require__(4270);\n+var wellKnownSymbol = __webpack_require__(8227);\n+\n+var $TypeError = TypeError;\n+var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n+\n+\u002F\u002F `ToPrimitive` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-toprimitive\n+module.exports = function (input, pref) {\n+  if (!isObject(input) || isSymbol(input)) return input;\n+  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n+  var result;\n+  if (exoticToPrim) {\n+    if (pref === undefined) pref = 'default';\n+    result = call(exoticToPrim, input, pref);\n+    if (!isObject(result) || isSymbol(result)) return result;\n+    throw new $TypeError(\"Can't convert object to primitive value\");\n+  }\n+  if (pref === undefined) pref = 'number';\n+  return ordinaryToPrimitive(input, pref);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2787:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var hasOwn = __webpack_require__(9297);\n+var isCallable = __webpack_require__(4901);\n+var toObject = __webpack_require__(8981);\n+var sharedKey = __webpack_require__(6119);\n+var CORRECT_PROTOTYPE_GETTER = __webpack_require__(2211);\n+\n+var IE_PROTO = sharedKey('IE_PROTO');\n+var $Object = Object;\n+var ObjectPrototype = $Object.prototype;\n+\n+\u002F\u002F `Object.getPrototypeOf` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.getprototypeof\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getprototypeof -- safe\n+module.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n+  var object = toObject(O);\n+  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n+  var constructor = object.constructor;\n+  if (isCallable(constructor) && object instanceof constructor) {\n+    return constructor.prototype;\n+  } return object instanceof $Object ? ObjectPrototype : null;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2796:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var fails = __webpack_require__(9039);\n+var isCallable = __webpack_require__(4901);\n+\n+var replacement = \u002F#|\\.prototype\\.\u002F;\n+\n+var isForced = function (feature, detection) {\n+  var value = data[normalize(feature)];\n+  return value === POLYFILL ? true\n+    : value === NATIVE ? false\n+    : isCallable(detection) ? fails(detection)\n+    : !!detection;\n+};\n+\n+var normalize = isForced.normalize = function (string) {\n+  return String(string).replace(replacement, '.').toLowerCase();\n+};\n+\n+var data = isForced.data = {};\n+var NATIVE = isForced.NATIVE = 'N';\n+var POLYFILL = isForced.POLYFILL = 'P';\n+\n+module.exports = isForced;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2804:\n+\u002F***\u002F ((module) => {\n+\n+\n+var commonAlphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n+var base64Alphabet = commonAlphabet + '+\u002F';\n+var base64UrlAlphabet = commonAlphabet + '-_';\n+\n+var inverse = function (characters) {\n+  \u002F\u002F TODO: use `Object.create(null)` in `core-js@4`\n+  var result = {};\n+  var index = 0;\n+  for (; index \u003C 64; index++) result[characters.charAt(index)] = index;\n+  return result;\n+};\n+\n+module.exports = {\n+  i2c: base64Alphabet,\n+  c2i: inverse(base64Alphabet),\n+  i2cUrl: base64UrlAlphabet,\n+  c2iUrl: inverse(base64UrlAlphabet)\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2839:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+\n+var navigator = globalThis.navigator;\n+var userAgent = navigator && navigator.userAgent;\n+\n+module.exports = userAgent ? String(userAgent) : '';\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2967:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+\u002F* eslint-disable no-proto -- safe *\u002F\n+var uncurryThisAccessor = __webpack_require__(6706);\n+var isObject = __webpack_require__(34);\n+var requireObjectCoercible = __webpack_require__(7750);\n+var aPossiblePrototype = __webpack_require__(3506);\n+\n+\u002F\u002F `Object.setPrototypeOf` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.setprototypeof\n+\u002F\u002F Works with __proto__ only. Old v8 can't work with null proto objects.\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-setprototypeof -- safe\n+module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n+  var CORRECT_SETTER = false;\n+  var test = {};\n+  var setter;\n+  try {\n+    setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n+    setter(test, []);\n+    CORRECT_SETTER = test instanceof Array;\n+  } catch (error) { \u002F* empty *\u002F }\n+  return function setPrototypeOf(O, proto) {\n+    requireObjectCoercible(O);\n+    aPossiblePrototype(proto);\n+    if (!isObject(O)) return O;\n+    if (CORRECT_SETTER) setter(O, proto);\n+    else O.__proto__ = proto;\n+    return O;\n+  };\n+}() : undefined);\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3167:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isCallable = __webpack_require__(4901);\n+var isObject = __webpack_require__(34);\n+var setPrototypeOf = __webpack_require__(2967);\n+\n+\u002F\u002F makes subclassing work correct for wrapped built-ins\n+module.exports = function ($this, dummy, Wrapper) {\n+  var NewTarget, NewTargetPrototype;\n+  if (\n+    \u002F\u002F it can work only with native `setPrototypeOf`\n+    setPrototypeOf &&\n+    \u002F\u002F we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n+    isCallable(NewTarget = dummy.constructor) &&\n+    NewTarget !== Wrapper &&\n+    isObject(NewTargetPrototype = NewTarget.prototype) &&\n+    NewTargetPrototype !== Wrapper.prototype\n+  ) setPrototypeOf($this, NewTargetPrototype);\n+  return $this;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3238:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var NATIVE_ARRAY_BUFFER = __webpack_require__(7811);\n+var arrayBufferByteLength = __webpack_require__(7394);\n+\n+var DataView = globalThis.DataView;\n+\n+module.exports = function (O) {\n+  if (!NATIVE_ARRAY_BUFFER || arrayBufferByteLength(O) !== 0) return false;\n+  try {\n+    \u002F\u002F eslint-disable-next-line no-new -- thrower\n+    new DataView(O);\n+    return false;\n+  } catch (error) {\n+    return true;\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3392:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+\n+var id = 0;\n+var postfix = Math.random();\n+var toString = uncurryThis(1.0.toString);\n+\n+module.exports = function (key) {\n+  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3463:\n+\u002F***\u002F ((module) => {\n+\n+\n+var $TypeError = TypeError;\n+\n+module.exports = function (argument) {\n+  if (typeof argument == 'string') return argument;\n+  throw new $TypeError('Argument is not a string');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3506:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isPossiblePrototype = __webpack_require__(3925);\n+\n+var $String = String;\n+var $TypeError = TypeError;\n+\n+module.exports = function (argument) {\n+  if (isPossiblePrototype(argument)) return argument;\n+  throw new $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3706:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+var isCallable = __webpack_require__(4901);\n+var store = __webpack_require__(7629);\n+\n+var functionToString = uncurryThis(Function.toString);\n+\n+\u002F\u002F this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\n+if (!isCallable(store.inspectSource)) {\n+  store.inspectSource = function (it) {\n+    return functionToString(it);\n+  };\n+}\n+\n+module.exports = store.inspectSource;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3717:\n+\u002F***\u002F ((__unused_webpack_module, exports) => {\n+\n+\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertysymbols -- safe\n+exports.f = Object.getOwnPropertySymbols;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3724:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var fails = __webpack_require__(9039);\n+\n+\u002F\u002F Detect IE8's incomplete defineProperty implementation\n+module.exports = !fails(function () {\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- required for testing\n+  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3925:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isObject = __webpack_require__(34);\n+\n+module.exports = function (argument) {\n+  return isObject(argument) || argument === null;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3972:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isObject = __webpack_require__(34);\n+\n+var $String = String;\n+var $TypeError = TypeError;\n+\n+module.exports = function (argument) {\n+  if (argument === undefined || isObject(argument)) return argument;\n+  throw new $TypeError($String(argument) + ' is not an object or undefined');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4055:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var isObject = __webpack_require__(34);\n+\n+var document = globalThis.document;\n+\u002F\u002F typeof document.createElement is 'object' in old IE\n+var EXISTS = isObject(document) && isObject(document.createElement);\n+\n+module.exports = function (it) {\n+  return EXISTS ? document.createElement(it) : {};\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4114:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var toObject = __webpack_require__(8981);\n+var lengthOfArrayLike = __webpack_require__(6198);\n+var setArrayLength = __webpack_require__(4527);\n+var doesNotExceedSafeInteger = __webpack_require__(6837);\n+var fails = __webpack_require__(9039);\n+\n+var INCORRECT_TO_LENGTH = fails(function () {\n+  return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n+});\n+\n+\u002F\u002F V8 \u003C= 121 and Safari \u003C= 15.4; FF \u003C 23 throws InternalError\n+\u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=12681\n+var properErrorOnNonWritableLength = function () {\n+  try {\n+    \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\n+    Object.defineProperty([], 'length', { writable: false }).push();\n+  } catch (error) {\n+    return error instanceof TypeError;\n+  }\n+};\n+\n+var FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n+\n+\u002F\u002F `Array.prototype.push` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-array.prototype.push\n+$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n+  \u002F\u002F eslint-disable-next-line no-unused-vars -- required for `.length`\n+  push: function push(item) {\n+    var O = toObject(this);\n+    var len = lengthOfArrayLike(O);\n+    var argCount = arguments.length;\n+    doesNotExceedSafeInteger(len + argCount);\n+    for (var i = 0; i \u003C argCount; i++) {\n+      O[len] = arguments[i];\n+      len++;\n+    }\n+    setArrayLength(O, len);\n+    return len;\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4117:\n+\u002F***\u002F ((module) => {\n+\n+\n+\u002F\u002F we can't use just `it == null` since of `document.all` special case\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-IsHTMLDDA-internal-slot-aec\n+module.exports = function (it) {\n+  return it === null || it === undefined;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4154:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var classof = __webpack_require__(6955);\n+\n+var $TypeError = TypeError;\n+\n+\u002F\u002F Perform ? RequireInternalSlot(argument, [[TypedArrayName]])\n+\u002F\u002F If argument.[[TypedArrayName]] is not \"Uint8Array\", throw a TypeError exception\n+module.exports = function (argument) {\n+  if (classof(argument) === 'Uint8Array') return argument;\n+  throw new $TypeError('Argument is not an Uint8Array');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4209:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var wellKnownSymbol = __webpack_require__(8227);\n+var Iterators = __webpack_require__(6269);\n+\n+var ITERATOR = wellKnownSymbol('iterator');\n+var ArrayPrototype = Array.prototype;\n+\n+\u002F\u002F check on default Array iterator\n+module.exports = function (it) {\n+  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4215:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+\u002F* global Bun, Deno -- detection *\u002F\n+var globalThis = __webpack_require__(4576);\n+var userAgent = __webpack_require__(2839);\n+var classof = __webpack_require__(2195);\n+\n+var userAgentStartsWith = function (string) {\n+  return userAgent.slice(0, string.length) === string;\n+};\n+\n+module.exports = (function () {\n+  if (userAgentStartsWith('Bun\u002F')) return 'BUN';\n+  if (userAgentStartsWith('Cloudflare-Workers')) return 'CLOUDFLARE';\n+  if (userAgentStartsWith('Deno\u002F')) return 'DENO';\n+  if (userAgentStartsWith('Node.js\u002F')) return 'NODE';\n+  if (globalThis.Bun && typeof Bun.version == 'string') return 'BUN';\n+  if (globalThis.Deno && typeof Deno.version == 'object') return 'DENO';\n+  if (classof(globalThis.process) === 'process') return 'NODE';\n+  if (globalThis.window && globalThis.document) return 'BROWSER';\n+  return 'REST';\n+})();\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4270:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var call = __webpack_require__(9565);\n+var isCallable = __webpack_require__(4901);\n+var isObject = __webpack_require__(34);\n+\n+var $TypeError = TypeError;\n+\n+\u002F\u002F `OrdinaryToPrimitive` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-ordinarytoprimitive\n+module.exports = function (input, pref) {\n+  var fn, val;\n+  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n+  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n+  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n+  throw new $TypeError(\"Can't convert object to primitive value\");\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4376:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var classof = __webpack_require__(2195);\n+\n+\u002F\u002F `IsArray` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-isarray\n+\u002F\u002F eslint-disable-next-line es\u002Fno-array-isarray -- safe\n+module.exports = Array.isArray || function isArray(argument) {\n+  return classof(argument) === 'Array';\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4483:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var getBuiltInNodeModule = __webpack_require__(9429);\n+var PROPER_STRUCTURED_CLONE_TRANSFER = __webpack_require__(1548);\n+\n+var structuredClone = globalThis.structuredClone;\n+var $ArrayBuffer = globalThis.ArrayBuffer;\n+var $MessageChannel = globalThis.MessageChannel;\n+var detach = false;\n+var WorkerThreads, channel, buffer, $detach;\n+\n+if (PROPER_STRUCTURED_CLONE_TRANSFER) {\n+  detach = function (transferable) {\n+    structuredClone(transferable, { transfer: [transferable] });\n+  };\n+} else if ($ArrayBuffer) try {\n+  if (!$MessageChannel) {\n+    WorkerThreads = getBuiltInNodeModule('worker_threads');\n+    if (WorkerThreads) $MessageChannel = WorkerThreads.MessageChannel;\n+  }\n+\n+  if ($MessageChannel) {\n+    channel = new $MessageChannel();\n+    buffer = new $ArrayBuffer(2);\n+\n+    $detach = function (transferable) {\n+      channel.port1.postMessage(null, [transferable]);\n+    };\n+\n+    if (buffer.byteLength === 2) {\n+      $detach(buffer);\n+      if (buffer.byteLength === 0) detach = $detach;\n+    }\n+  }\n+} catch (error) { \u002F* empty *\u002F }\n+\n+module.exports = detach;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4495:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+\u002F* eslint-disable es\u002Fno-symbol -- required for testing *\u002F\n+var V8_VERSION = __webpack_require__(9519);\n+var fails = __webpack_require__(9039);\n+var globalThis = __webpack_require__(4576);\n+\n+var $String = globalThis.String;\n+\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertysymbols -- required for testing\n+module.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n+  var symbol = Symbol('symbol detection');\n+  \u002F\u002F Chrome 38 Symbol has incorrect toString conversion\n+  \u002F\u002F `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n+  \u002F\u002F nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n+  \u002F\u002F of course, fail.\n+  return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n+    \u002F\u002F Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n+    !Symbol.sham && V8_VERSION && V8_VERSION \u003C 41;\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4527:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var isArray = __webpack_require__(4376);\n+\n+var $TypeError = TypeError;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n+\n+\u002F\u002F Safari \u003C 13 does not throw an error in this case\n+var SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n+  \u002F\u002F makes no sense without proper strict mode support\n+  if (this !== undefined) return true;\n+  try {\n+    \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\n+    Object.defineProperty([], 'length', { writable: false }).length = 1;\n+  } catch (error) {\n+    return error instanceof TypeError;\n+  }\n+}();\n+\n+module.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n+  if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n+    throw new $TypeError('Cannot set read only .length');\n+  } return O.length = length;\n+} : function (O, length) {\n+  return O.length = length;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4549:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fecma262\u002Fpull\u002F3467\n+module.exports = function (METHOD_NAME, ExpectedError) {\n+  var Iterator = globalThis.Iterator;\n+  var IteratorPrototype = Iterator && Iterator.prototype;\n+  var method = IteratorPrototype && IteratorPrototype[METHOD_NAME];\n+\n+  var CLOSED = false;\n+\n+  if (method) try {\n+    method.call({\n+      next: function () { return { done: true }; },\n+      'return': function () { CLOSED = true; }\n+    }, -1);\n+  } catch (error) {\n+    \u002F\u002F https:\u002F\u002Fbugs.webkit.org\u002Fshow_bug.cgi?id=291195\n+    if (!(error instanceof ExpectedError)) CLOSED = false;\n+  }\n+\n+  if (!CLOSED) return method;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4576:\n+\u002F***\u002F (function(module) {\n+\n+\n+var check = function (it) {\n+  return it && it.Math === Math && it;\n+};\n+\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F86#issuecomment-115759028\n+module.exports =\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-global-this -- safe\n+  check(typeof globalThis == 'object' && globalThis) ||\n+  check(typeof window == 'object' && window) ||\n+  \u002F\u002F eslint-disable-next-line no-restricted-globals -- safe\n+  check(typeof self == 'object' && self) ||\n+  check(typeof global == 'object' && global) ||\n+  check(typeof this == 'object' && this) ||\n+  \u002F\u002F eslint-disable-next-line no-new-func -- fallback\n+  (function () { return this; })() || Function('return this')();\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4659:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var definePropertyModule = __webpack_require__(4913);\n+var createPropertyDescriptor = __webpack_require__(6980);\n+\n+module.exports = function (object, key, value) {\n+  if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));\n+  else object[key] = value;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4901:\n+\u002F***\u002F ((module) => {\n+\n+\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-IsHTMLDDA-internal-slot\n+var documentAll = typeof document == 'object' && document.all;\n+\n+\u002F\u002F `IsCallable` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iscallable\n+\u002F\u002F eslint-disable-next-line unicorn\u002Fno-typeof-undefined -- required for testing\n+module.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n+  return typeof argument == 'function' || argument === documentAll;\n+} : function (argument) {\n+  return typeof argument == 'function';\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4913:\n+\u002F***\u002F ((__unused_webpack_module, exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var IE8_DOM_DEFINE = __webpack_require__(5917);\n+var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(8686);\n+var anObject = __webpack_require__(8551);\n+var toPropertyKey = __webpack_require__(6969);\n+\n+var $TypeError = TypeError;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\n+var $defineProperty = Object.defineProperty;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n+var ENUMERABLE = 'enumerable';\n+var CONFIGURABLE = 'configurable';\n+var WRITABLE = 'writable';\n+\n+\u002F\u002F `Object.defineProperty` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.defineproperty\n+exports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n+  anObject(O);\n+  P = toPropertyKey(P);\n+  anObject(Attributes);\n+  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n+    var current = $getOwnPropertyDescriptor(O, P);\n+    if (current && current[WRITABLE]) {\n+      O[P] = Attributes.value;\n+      Attributes = {\n+        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n+        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n+        writable: false\n+      };\n+    }\n+  } return $defineProperty(O, P, Attributes);\n+} : $defineProperty : function defineProperty(O, P, Attributes) {\n+  anObject(O);\n+  P = toPropertyKey(P);\n+  anObject(Attributes);\n+  if (IE8_DOM_DEFINE) try {\n+    return $defineProperty(O, P, Attributes);\n+  } catch (error) { \u002F* empty *\u002F }\n+  if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n+  if ('value' in Attributes) O[P] = Attributes.value;\n+  return O;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4979:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var globalThis = __webpack_require__(4576);\n+var getBuiltIn = __webpack_require__(7751);\n+var createPropertyDescriptor = __webpack_require__(6980);\n+var defineProperty = (__webpack_require__(4913).f);\n+var hasOwn = __webpack_require__(9297);\n+var anInstance = __webpack_require__(679);\n+var inheritIfRequired = __webpack_require__(3167);\n+var normalizeStringArgument = __webpack_require__(2603);\n+var DOMExceptionConstants = __webpack_require__(5002);\n+var clearErrorStack = __webpack_require__(8574);\n+var DESCRIPTORS = __webpack_require__(3724);\n+var IS_PURE = __webpack_require__(6395);\n+\n+var DOM_EXCEPTION = 'DOMException';\n+var Error = getBuiltIn('Error');\n+var NativeDOMException = getBuiltIn(DOM_EXCEPTION);\n+\n+var $DOMException = function DOMException() {\n+  anInstance(this, DOMExceptionPrototype);\n+  var argumentsLength = arguments.length;\n+  var message = normalizeStringArgument(argumentsLength \u003C 1 ? undefined : arguments[0]);\n+  var name = normalizeStringArgument(argumentsLength \u003C 2 ? undefined : arguments[1], 'Error');\n+  var that = new NativeDOMException(message, name);\n+  var error = new Error(message);\n+  error.name = DOM_EXCEPTION;\n+  defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\n+  inheritIfRequired(that, this, $DOMException);\n+  return that;\n+};\n+\n+var DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;\n+\n+var ERROR_HAS_STACK = 'stack' in new Error(DOM_EXCEPTION);\n+var DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);\n+\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+var descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(globalThis, DOM_EXCEPTION);\n+\n+\u002F\u002F Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002FJarred-Sumner\u002Fbun\u002Fissues\u002F399\n+var BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);\n+\n+var FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;\n+\n+\u002F\u002F `DOMException` constructor patch for `.stack` where it's required\n+\u002F\u002F https:\u002F\u002Fwebidl.spec.whatwg.org\u002F#es-DOMException-specialness\n+$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { \u002F\u002F TODO: fix export logic\n+  DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\n+});\n+\n+var PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\n+var PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\n+\n+if (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {\n+  if (!IS_PURE) {\n+    defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException));\n+  }\n+\n+  for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\n+    var constant = DOMExceptionConstants[key];\n+    var constantName = constant.s;\n+    if (!hasOwn(PolyfilledDOMException, constantName)) {\n+      defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));\n+    }\n+  }\n+}\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5002:\n+\u002F***\u002F ((module) => {\n+\n+\n+module.exports = {\n+  IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },\n+  DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },\n+  HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },\n+  WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 },\n+  InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 },\n+  NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 },\n+  NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 },\n+  NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 },\n+  NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 },\n+  InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 },\n+  InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 },\n+  SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 },\n+  InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 },\n+  NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 },\n+  InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 },\n+  ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 },\n+  TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 },\n+  SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 },\n+  NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 },\n+  AbortError: { s: 'ABORT_ERR', c: 20, m: 1 },\n+  URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 },\n+  QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 },\n+  TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 },\n+  InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 },\n+  DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5031:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var getBuiltIn = __webpack_require__(7751);\n+var uncurryThis = __webpack_require__(9504);\n+var getOwnPropertyNamesModule = __webpack_require__(8480);\n+var getOwnPropertySymbolsModule = __webpack_require__(3717);\n+var anObject = __webpack_require__(8551);\n+\n+var concat = uncurryThis([].concat);\n+\n+\u002F\u002F all object keys, includes non-enumerable and symbols\n+module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n+  var keys = getOwnPropertyNamesModule.f(anObject(it));\n+  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n+  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5169:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isDetached = __webpack_require__(3238);\n+\n+var $TypeError = TypeError;\n+\n+module.exports = function (it) {\n+  if (isDetached(it)) throw new $TypeError('ArrayBuffer is detached');\n+  return it;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5397:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+\u002F\u002F toObject with fallback for non-array-like ES3 strings\n+var IndexedObject = __webpack_require__(7055);\n+var requireObjectCoercible = __webpack_require__(7750);\n+\n+module.exports = function (it) {\n+  return IndexedObject(requireObjectCoercible(it));\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5610:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var toIntegerOrInfinity = __webpack_require__(1291);\n+\n+var max = Math.max;\n+var min = Math.min;\n+\n+\u002F\u002F Helper for a popular repeating case of the spec:\n+\u002F\u002F Let integer be ? ToInteger(index).\n+\u002F\u002F If integer \u003C 0, let result be max((length + integer), 0); else let result be min(integer, length).\n+module.exports = function (index, length) {\n+  var integer = toIntegerOrInfinity(index);\n+  return integer \u003C 0 ? max(integer + length, 0) : min(integer, length);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5623:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var globalThis = __webpack_require__(4576);\n+var uncurryThis = __webpack_require__(9504);\n+var anUint8Array = __webpack_require__(4154);\n+var notDetached = __webpack_require__(5169);\n+\n+var numberToString = uncurryThis(1.0.toString);\n+\n+\u002F\u002F `Uint8Array.prototype.toHex` method\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-arraybuffer-base64\n+if (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {\n+  toHex: function toHex() {\n+    anUint8Array(this);\n+    notDetached(this.buffer);\n+    var result = '';\n+    for (var i = 0, length = this.length; i \u003C length; i++) {\n+      var hex = numberToString(this[i], 16);\n+      result += hex.length === 1 ? '0' + hex : hex;\n+    }\n+    return result;\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5636:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var uncurryThis = __webpack_require__(9504);\n+var uncurryThisAccessor = __webpack_require__(6706);\n+var toIndex = __webpack_require__(7696);\n+var notDetached = __webpack_require__(5169);\n+var arrayBufferByteLength = __webpack_require__(7394);\n+var detachTransferable = __webpack_require__(4483);\n+var PROPER_STRUCTURED_CLONE_TRANSFER = __webpack_require__(1548);\n+\n+var structuredClone = globalThis.structuredClone;\n+var ArrayBuffer = globalThis.ArrayBuffer;\n+var DataView = globalThis.DataView;\n+var min = Math.min;\n+var ArrayBufferPrototype = ArrayBuffer.prototype;\n+var DataViewPrototype = DataView.prototype;\n+var slice = uncurryThis(ArrayBufferPrototype.slice);\n+var isResizable = uncurryThisAccessor(ArrayBufferPrototype, 'resizable', 'get');\n+var maxByteLength = uncurryThisAccessor(ArrayBufferPrototype, 'maxByteLength', 'get');\n+var getInt8 = uncurryThis(DataViewPrototype.getInt8);\n+var setInt8 = uncurryThis(DataViewPrototype.setInt8);\n+\n+module.exports = (PROPER_STRUCTURED_CLONE_TRANSFER || detachTransferable) && function (arrayBuffer, newLength, preserveResizability) {\n+  var byteLength = arrayBufferByteLength(arrayBuffer);\n+  var newByteLength = newLength === undefined ? byteLength : toIndex(newLength);\n+  var fixedLength = !isResizable || !isResizable(arrayBuffer);\n+  var newBuffer;\n+  notDetached(arrayBuffer);\n+  if (PROPER_STRUCTURED_CLONE_TRANSFER) {\n+    arrayBuffer = structuredClone(arrayBuffer, { transfer: [arrayBuffer] });\n+    if (byteLength === newByteLength && (preserveResizability || fixedLength)) return arrayBuffer;\n+  }\n+  if (byteLength >= newByteLength && (!preserveResizability || fixedLength)) {\n+    newBuffer = slice(arrayBuffer, 0, newByteLength);\n+  } else {\n+    var options = preserveResizability && !fixedLength && maxByteLength ? { maxByteLength: maxByteLength(arrayBuffer) } : undefined;\n+    newBuffer = new ArrayBuffer(newByteLength, options);\n+    var a = new DataView(arrayBuffer);\n+    var b = new DataView(newBuffer);\n+    var copyLength = min(newByteLength, byteLength);\n+    for (var i = 0; i \u003C copyLength; i++) setInt8(b, i, getInt8(a, i));\n+  }\n+  if (!PROPER_STRUCTURED_CLONE_TRANSFER) detachTransferable(arrayBuffer);\n+  return newBuffer;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5745:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var store = __webpack_require__(7629);\n+\n+module.exports = function (key, value) {\n+  return store[key] || (store[key] = value || {});\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5917:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var fails = __webpack_require__(9039);\n+var createElement = __webpack_require__(4055);\n+\n+\u002F\u002F Thanks to IE8 for its funny defineProperty\n+module.exports = !DESCRIPTORS && !fails(function () {\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- required for testing\n+  return Object.defineProperty(createElement('div'), 'a', {\n+    get: function () { return 7; }\n+  }).a !== 7;\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5966:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aCallable = __webpack_require__(9306);\n+var isNullOrUndefined = __webpack_require__(4117);\n+\n+\u002F\u002F `GetMethod` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-getmethod\n+module.exports = function (V, P) {\n+  var func = V[P];\n+  return isNullOrUndefined(func) ? undefined : aCallable(func);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6080:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(7476);\n+var aCallable = __webpack_require__(9306);\n+var NATIVE_BIND = __webpack_require__(616);\n+\n+var bind = uncurryThis(uncurryThis.bind);\n+\n+\u002F\u002F optional \u002F simple context binding\n+module.exports = function (fn, that) {\n+  aCallable(fn);\n+  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (\u002F* ...args *\u002F) {\n+    return fn.apply(that, arguments);\n+  };\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6119:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var shared = __webpack_require__(5745);\n+var uid = __webpack_require__(3392);\n+\n+var keys = shared('keys');\n+\n+module.exports = function (key) {\n+  return keys[key] || (keys[key] = uid(key));\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6193:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var ENVIRONMENT = __webpack_require__(4215);\n+\n+module.exports = ENVIRONMENT === 'NODE';\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6198:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var toLength = __webpack_require__(8014);\n+\n+\u002F\u002F `LengthOfArrayLike` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-lengthofarraylike\n+module.exports = function (obj) {\n+  return toLength(obj.length);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6269:\n+\u002F***\u002F ((module) => {\n+\n+\n+module.exports = {};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6395:\n+\u002F***\u002F ((module) => {\n+\n+\n+module.exports = false;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6518:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var getOwnPropertyDescriptor = (__webpack_require__(7347).f);\n+var createNonEnumerableProperty = __webpack_require__(6699);\n+var defineBuiltIn = __webpack_require__(6840);\n+var defineGlobalProperty = __webpack_require__(9433);\n+var copyConstructorProperties = __webpack_require__(7740);\n+var isForced = __webpack_require__(2796);\n+\n+\u002F*\n+  options.target         - name of the target object\n+  options.global         - target is the global object\n+  options.stat           - export as static methods of target\n+  options.proto          - export as prototype methods of target\n+  options.real           - real prototype method for the `pure` version\n+  options.forced         - export even if the native feature is available\n+  options.bind           - bind methods to the target, required for the `pure` version\n+  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version\n+  options.unsafe         - use the simple assignment of property instead of delete + defineProperty\n+  options.sham           - add a flag to not completely full polyfills\n+  options.enumerable     - export as enumerable property\n+  options.dontCallGetSet - prevent calling a getter on target\n+  options.name           - the .name of the function if it does not match the key\n+*\u002F\n+module.exports = function (options, source) {\n+  var TARGET = options.target;\n+  var GLOBAL = options.global;\n+  var STATIC = options.stat;\n+  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n+  if (GLOBAL) {\n+    target = globalThis;\n+  } else if (STATIC) {\n+    target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\n+  } else {\n+    target = globalThis[TARGET] && globalThis[TARGET].prototype;\n+  }\n+  if (target) for (key in source) {\n+    sourceProperty = source[key];\n+    if (options.dontCallGetSet) {\n+      descriptor = getOwnPropertyDescriptor(target, key);\n+      targetProperty = descriptor && descriptor.value;\n+    } else targetProperty = target[key];\n+    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n+    \u002F\u002F contained in target\n+    if (!FORCED && targetProperty !== undefined) {\n+      if (typeof sourceProperty == typeof targetProperty) continue;\n+      copyConstructorProperties(sourceProperty, targetProperty);\n+    }\n+    \u002F\u002F add a flag to not completely full polyfills\n+    if (options.sham || (targetProperty && targetProperty.sham)) {\n+      createNonEnumerableProperty(sourceProperty, 'sham', true);\n+    }\n+    defineBuiltIn(target, key, sourceProperty, options);\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6573:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var defineBuiltInAccessor = __webpack_require__(2106);\n+var isDetached = __webpack_require__(3238);\n+\n+var ArrayBufferPrototype = ArrayBuffer.prototype;\n+\n+\u002F\u002F `ArrayBuffer.prototype.detached` getter\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-get-arraybuffer.prototype.detached\n+if (DESCRIPTORS && !('detached' in ArrayBufferPrototype)) {\n+  defineBuiltInAccessor(ArrayBufferPrototype, 'detached', {\n+    configurable: true,\n+    get: function detached() {\n+      return isDetached(this);\n+    }\n+  });\n+}\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6699:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var definePropertyModule = __webpack_require__(4913);\n+var createPropertyDescriptor = __webpack_require__(6980);\n+\n+module.exports = DESCRIPTORS ? function (object, key, value) {\n+  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n+} : function (object, key, value) {\n+  object[key] = value;\n+  return object;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6706:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+var aCallable = __webpack_require__(9306);\n+\n+module.exports = function (object, key, method) {\n+  try {\n+    \u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+    return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n+  } catch (error) { \u002F* empty *\u002F }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6801:\n+\u002F***\u002F ((__unused_webpack_module, exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(8686);\n+var definePropertyModule = __webpack_require__(4913);\n+var anObject = __webpack_require__(8551);\n+var toIndexedObject = __webpack_require__(5397);\n+var objectKeys = __webpack_require__(1072);\n+\n+\u002F\u002F `Object.defineProperties` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.defineproperties\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperties -- safe\n+exports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n+  anObject(O);\n+  var props = toIndexedObject(Properties);\n+  var keys = objectKeys(Properties);\n+  var length = keys.length;\n+  var index = 0;\n+  var key;\n+  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n+  return O;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6823:\n+\u002F***\u002F ((module) => {\n+\n+\n+var $String = String;\n+\n+module.exports = function (argument) {\n+  try {\n+    return $String(argument);\n+  } catch (error) {\n+    return 'Object';\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6837:\n+\u002F***\u002F ((module) => {\n+\n+\n+var $TypeError = TypeError;\n+var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; \u002F\u002F 2 ** 53 - 1 == 9007199254740991\n+\n+module.exports = function (it) {\n+  if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n+  return it;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6840:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isCallable = __webpack_require__(4901);\n+var definePropertyModule = __webpack_require__(4913);\n+var makeBuiltIn = __webpack_require__(283);\n+var defineGlobalProperty = __webpack_require__(9433);\n+\n+module.exports = function (O, key, value, options) {\n+  if (!options) options = {};\n+  var simple = options.enumerable;\n+  var name = options.name !== undefined ? options.name : key;\n+  if (isCallable(value)) makeBuiltIn(value, name, options);\n+  if (options.global) {\n+    if (simple) O[key] = value;\n+    else defineGlobalProperty(key, value);\n+  } else {\n+    try {\n+      if (!options.unsafe) delete O[key];\n+      else if (O[key]) simple = true;\n+    } catch (error) { \u002F* empty *\u002F }\n+    if (simple) O[key] = value;\n+    else definePropertyModule.f(O, key, {\n+      value: value,\n+      enumerable: false,\n+      configurable: !options.nonConfigurable,\n+      writable: !options.nonWritable\n+    });\n+  } return O;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6955:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var TO_STRING_TAG_SUPPORT = __webpack_require__(2140);\n+var isCallable = __webpack_require__(4901);\n+var classofRaw = __webpack_require__(2195);\n+var wellKnownSymbol = __webpack_require__(8227);\n+\n+var TO_STRING_TAG = wellKnownSymbol('toStringTag');\n+var $Object = Object;\n+\n+\u002F\u002F ES3 wrong here\n+var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n+\n+\u002F\u002F fallback for IE11 Script Access Denied error\n+var tryGet = function (it, key) {\n+  try {\n+    return it[key];\n+  } catch (error) { \u002F* empty *\u002F }\n+};\n+\n+\u002F\u002F getting tag from ES6+ `Object.prototype.toString`\n+module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n+  var O, tag, result;\n+  return it === undefined ? 'Undefined' : it === null ? 'Null'\n+    \u002F\u002F @@toStringTag case\n+    : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n+    \u002F\u002F builtinTag case\n+    : CORRECT_ARGUMENTS ? classofRaw(O)\n+    \u002F\u002F ES3 arguments fallback\n+    : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6969:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var toPrimitive = __webpack_require__(2777);\n+var isSymbol = __webpack_require__(757);\n+\n+\u002F\u002F `ToPropertyKey` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-topropertykey\n+module.exports = function (argument) {\n+  var key = toPrimitive(argument, 'string');\n+  return isSymbol(key) ? key : key + '';\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6980:\n+\u002F***\u002F ((module) => {\n+\n+\n+module.exports = function (bitmap, value) {\n+  return {\n+    enumerable: !(bitmap & 1),\n+    configurable: !(bitmap & 2),\n+    writable: !(bitmap & 4),\n+    value: value\n+  };\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7040:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+\u002F* eslint-disable es\u002Fno-symbol -- required for testing *\u002F\n+var NATIVE_SYMBOL = __webpack_require__(4495);\n+\n+module.exports = NATIVE_SYMBOL &&\n+  !Symbol.sham &&\n+  typeof Symbol.iterator == 'symbol';\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7055:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+var fails = __webpack_require__(9039);\n+var classof = __webpack_require__(2195);\n+\n+var $Object = Object;\n+var split = uncurryThis(''.split);\n+\n+\u002F\u002F fallback for non-array-like ES3 and non-enumerable old V8 strings\n+module.exports = fails(function () {\n+  \u002F\u002F throws an error in rhino, see https:\u002F\u002Fgithub.com\u002Fmozilla\u002Frhino\u002Fissues\u002F346\n+  \u002F\u002F eslint-disable-next-line no-prototype-builtins -- safe\n+  return !$Object('z').propertyIsEnumerable(0);\n+}) ? function (it) {\n+  return classof(it) === 'String' ? split(it, '') : $Object(it);\n+} : $Object;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7347:\n+\u002F***\u002F ((__unused_webpack_module, exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var call = __webpack_require__(9565);\n+var propertyIsEnumerableModule = __webpack_require__(8773);\n+var createPropertyDescriptor = __webpack_require__(6980);\n+var toIndexedObject = __webpack_require__(5397);\n+var toPropertyKey = __webpack_require__(6969);\n+var hasOwn = __webpack_require__(9297);\n+var IE8_DOM_DEFINE = __webpack_require__(5917);\n+\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n+\n+\u002F\u002F `Object.getOwnPropertyDescriptor` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.getownpropertydescriptor\n+exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n+  O = toIndexedObject(O);\n+  P = toPropertyKey(P);\n+  if (IE8_DOM_DEFINE) try {\n+    return $getOwnPropertyDescriptor(O, P);\n+  } catch (error) { \u002F* empty *\u002F }\n+  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7394:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var uncurryThisAccessor = __webpack_require__(6706);\n+var classof = __webpack_require__(2195);\n+\n+var ArrayBuffer = globalThis.ArrayBuffer;\n+var TypeError = globalThis.TypeError;\n+\n+\u002F\u002F Includes\n+\u002F\u002F - Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).\n+\u002F\u002F - If IsSharedArrayBuffer(O) is true, throw a TypeError exception.\n+module.exports = ArrayBuffer && uncurryThisAccessor(ArrayBuffer.prototype, 'byteLength', 'get') || function (O) {\n+  if (classof(O) !== 'ArrayBuffer') throw new TypeError('ArrayBuffer expected');\n+  return O.byteLength;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7476:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var classofRaw = __webpack_require__(2195);\n+var uncurryThis = __webpack_require__(9504);\n+\n+module.exports = function (fn) {\n+  \u002F\u002F Nashorn bug:\n+  \u002F\u002F   https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F1128\n+  \u002F\u002F   https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F1130\n+  if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7629:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var IS_PURE = __webpack_require__(6395);\n+var globalThis = __webpack_require__(4576);\n+var defineGlobalProperty = __webpack_require__(9433);\n+\n+var SHARED = '__core-js_shared__';\n+var store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n+\n+(store.versions || (store.versions = [])).push({\n+  version: '3.42.0',\n+  mode: IS_PURE ? 'pure' : 'global',\n+  copyright: '© 2014-2025 Denis Pushkarev (zloirock.ru)',\n+  license: 'https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fv3.42.0\u002FLICENSE',\n+  source: 'https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js'\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7657:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var fails = __webpack_require__(9039);\n+var isCallable = __webpack_require__(4901);\n+var isObject = __webpack_require__(34);\n+var create = __webpack_require__(2360);\n+var getPrototypeOf = __webpack_require__(2787);\n+var defineBuiltIn = __webpack_require__(6840);\n+var wellKnownSymbol = __webpack_require__(8227);\n+var IS_PURE = __webpack_require__(6395);\n+\n+var ITERATOR = wellKnownSymbol('iterator');\n+var BUGGY_SAFARI_ITERATORS = false;\n+\n+\u002F\u002F `%IteratorPrototype%` object\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-%iteratorprototype%-object\n+var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n+\n+\u002F* eslint-disable es\u002Fno-array-prototype-keys -- safe *\u002F\n+if ([].keys) {\n+  arrayIterator = [].keys();\n+  \u002F\u002F Safari 8 has buggy iterators w\u002Fo `next`\n+  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n+  else {\n+    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n+    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n+  }\n+}\n+\n+var NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n+  var test = {};\n+  \u002F\u002F FF44- legacy iterators case\n+  return IteratorPrototype[ITERATOR].call(test) !== test;\n+});\n+\n+if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\n+else if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n+\n+\u002F\u002F `%IteratorPrototype%[@@iterator]()` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-%iteratorprototype%-@@iterator\n+if (!isCallable(IteratorPrototype[ITERATOR])) {\n+  defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n+    return this;\n+  });\n+}\n+\n+module.exports = {\n+  IteratorPrototype: IteratorPrototype,\n+  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7696:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var toIntegerOrInfinity = __webpack_require__(1291);\n+var toLength = __webpack_require__(8014);\n+\n+var $RangeError = RangeError;\n+\n+\u002F\u002F `ToIndex` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-toindex\n+module.exports = function (it) {\n+  if (it === undefined) return 0;\n+  var number = toIntegerOrInfinity(it);\n+  var length = toLength(number);\n+  if (number !== length) throw new $RangeError('Wrong length or index');\n+  return length;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7740:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var hasOwn = __webpack_require__(9297);\n+var ownKeys = __webpack_require__(5031);\n+var getOwnPropertyDescriptorModule = __webpack_require__(7347);\n+var definePropertyModule = __webpack_require__(4913);\n+\n+module.exports = function (target, source, exceptions) {\n+  var keys = ownKeys(source);\n+  var defineProperty = definePropertyModule.f;\n+  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n+  for (var i = 0; i \u003C keys.length; i++) {\n+    var key = keys[i];\n+    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n+      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n+    }\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7750:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isNullOrUndefined = __webpack_require__(4117);\n+\n+var $TypeError = TypeError;\n+\n+\u002F\u002F `RequireObjectCoercible` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-requireobjectcoercible\n+module.exports = function (it) {\n+  if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n+  return it;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7751:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var isCallable = __webpack_require__(4901);\n+\n+var aFunction = function (argument) {\n+  return isCallable(argument) ? argument : undefined;\n+};\n+\n+module.exports = function (namespace, method) {\n+  return arguments.length \u003C 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7811:\n+\u002F***\u002F ((module) => {\n+\n+\n+\u002F\u002F eslint-disable-next-line es\u002Fno-typed-arrays -- safe\n+module.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7936:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var $transfer = __webpack_require__(5636);\n+\n+\u002F\u002F `ArrayBuffer.prototype.transferToFixedLength` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-arraybuffer-transfer\u002F#sec-arraybuffer.prototype.transfertofixedlength\n+if ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n+  transferToFixedLength: function transferToFixedLength() {\n+    return $transfer(this, arguments.length ? arguments[0] : undefined, false);\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8014:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var toIntegerOrInfinity = __webpack_require__(1291);\n+\n+var min = Math.min;\n+\n+\u002F\u002F `ToLength` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-tolength\n+module.exports = function (argument) {\n+  var len = toIntegerOrInfinity(argument);\n+  return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; \u002F\u002F 2 ** 53 - 1 == 9007199254740991\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8100:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var $transfer = __webpack_require__(5636);\n+\n+\u002F\u002F `ArrayBuffer.prototype.transfer` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-arraybuffer-transfer\u002F#sec-arraybuffer.prototype.transfer\n+if ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n+  transfer: function transfer() {\n+    return $transfer(this, arguments.length ? arguments[0] : undefined, true);\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8111:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var globalThis = __webpack_require__(4576);\n+var anInstance = __webpack_require__(679);\n+var anObject = __webpack_require__(8551);\n+var isCallable = __webpack_require__(4901);\n+var getPrototypeOf = __webpack_require__(2787);\n+var defineBuiltInAccessor = __webpack_require__(2106);\n+var createProperty = __webpack_require__(4659);\n+var fails = __webpack_require__(9039);\n+var hasOwn = __webpack_require__(9297);\n+var wellKnownSymbol = __webpack_require__(8227);\n+var IteratorPrototype = (__webpack_require__(7657).IteratorPrototype);\n+var DESCRIPTORS = __webpack_require__(3724);\n+var IS_PURE = __webpack_require__(6395);\n+\n+var CONSTRUCTOR = 'constructor';\n+var ITERATOR = 'Iterator';\n+var TO_STRING_TAG = wellKnownSymbol('toStringTag');\n+\n+var $TypeError = TypeError;\n+var NativeIterator = globalThis[ITERATOR];\n+\n+\u002F\u002F FF56- have non-standard global helper `Iterator`\n+var FORCED = IS_PURE\n+  || !isCallable(NativeIterator)\n+  || NativeIterator.prototype !== IteratorPrototype\n+  \u002F\u002F FF44- non-standard `Iterator` passes previous tests\n+  || !fails(function () { NativeIterator({}); });\n+\n+var IteratorConstructor = function Iterator() {\n+  anInstance(this, IteratorPrototype);\n+  if (getPrototypeOf(this) === IteratorPrototype) throw new $TypeError('Abstract class Iterator not directly constructable');\n+};\n+\n+var defineIteratorPrototypeAccessor = function (key, value) {\n+  if (DESCRIPTORS) {\n+    defineBuiltInAccessor(IteratorPrototype, key, {\n+      configurable: true,\n+      get: function () {\n+        return value;\n+      },\n+      set: function (replacement) {\n+        anObject(this);\n+        if (this === IteratorPrototype) throw new $TypeError(\"You can't redefine this property\");\n+        if (hasOwn(this, key)) this[key] = replacement;\n+        else createProperty(this, key, replacement);\n+      }\n+    });\n+  } else IteratorPrototype[key] = value;\n+};\n+\n+if (!hasOwn(IteratorPrototype, TO_STRING_TAG)) defineIteratorPrototypeAccessor(TO_STRING_TAG, ITERATOR);\n+\n+if (FORCED || !hasOwn(IteratorPrototype, CONSTRUCTOR) || IteratorPrototype[CONSTRUCTOR] === Object) {\n+  defineIteratorPrototypeAccessor(CONSTRUCTOR, IteratorConstructor);\n+}\n+\n+IteratorConstructor.prototype = IteratorPrototype;\n+\n+\u002F\u002F `Iterator` constructor\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator\n+$({ global: true, constructor: true, forced: FORCED }, {\n+  Iterator: IteratorConstructor\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8227:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var shared = __webpack_require__(5745);\n+var hasOwn = __webpack_require__(9297);\n+var uid = __webpack_require__(3392);\n+var NATIVE_SYMBOL = __webpack_require__(4495);\n+var USE_SYMBOL_AS_UID = __webpack_require__(7040);\n+\n+var Symbol = globalThis.Symbol;\n+var WellKnownSymbolsStore = shared('wks');\n+var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n+\n+module.exports = function (name) {\n+  if (!hasOwn(WellKnownSymbolsStore, name)) {\n+    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n+      ? Symbol[name]\n+      : createWellKnownSymbol('Symbol.' + name);\n+  } return WellKnownSymbolsStore[name];\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8235:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+var hasOwn = __webpack_require__(9297);\n+\n+var $SyntaxError = SyntaxError;\n+var $parseInt = parseInt;\n+var fromCharCode = String.fromCharCode;\n+var at = uncurryThis(''.charAt);\n+var slice = uncurryThis(''.slice);\n+var exec = uncurryThis(\u002F.\u002F.exec);\n+\n+var codePoints = {\n+  '\\\\\"': '\"',\n+  '\\\\\\\\': '\\\\',\n+  '\\\\\u002F': '\u002F',\n+  '\\\\b': '\\b',\n+  '\\\\f': '\\f',\n+  '\\\\n': '\\n',\n+  '\\\\r': '\\r',\n+  '\\\\t': '\\t'\n+};\n+\n+var IS_4_HEX_DIGITS = \u002F^[\\da-f]{4}$\u002Fi;\n+\u002F\u002F eslint-disable-next-line regexp\u002Fno-control-character -- safe\n+var IS_C0_CONTROL_CODE = \u002F^[\\u0000-\\u001F]$\u002F;\n+\n+module.exports = function (source, i) {\n+  var unterminated = true;\n+  var value = '';\n+  while (i \u003C source.length) {\n+    var chr = at(source, i);\n+    if (chr === '\\\\') {\n+      var twoChars = slice(source, i, i + 2);\n+      if (hasOwn(codePoints, twoChars)) {\n+        value += codePoints[twoChars];\n+        i += 2;\n+      } else if (twoChars === '\\\\u') {\n+        i += 2;\n+        var fourHexDigits = slice(source, i, i + 4);\n+        if (!exec(IS_4_HEX_DIGITS, fourHexDigits)) throw new $SyntaxError('Bad Unicode escape at: ' + i);\n+        value += fromCharCode($parseInt(fourHexDigits, 16));\n+        i += 4;\n+      } else throw new $SyntaxError('Unknown escape sequence: \"' + twoChars + '\"');\n+    } else if (chr === '\"') {\n+      unterminated = false;\n+      i++;\n+      break;\n+    } else {\n+      if (exec(IS_C0_CONTROL_CODE, chr)) throw new $SyntaxError('Bad control character in string literal at: ' + i);\n+      value += chr;\n+      i++;\n+    }\n+  }\n+  if (unterminated) throw new $SyntaxError('Unterminated string at: ' + i);\n+  return { value: value, end: i };\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8335:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var DESCRIPTORS = __webpack_require__(3724);\n+var globalThis = __webpack_require__(4576);\n+var getBuiltIn = __webpack_require__(7751);\n+var uncurryThis = __webpack_require__(9504);\n+var call = __webpack_require__(9565);\n+var isCallable = __webpack_require__(4901);\n+var isObject = __webpack_require__(34);\n+var isArray = __webpack_require__(4376);\n+var hasOwn = __webpack_require__(9297);\n+var toString = __webpack_require__(655);\n+var lengthOfArrayLike = __webpack_require__(6198);\n+var createProperty = __webpack_require__(4659);\n+var fails = __webpack_require__(9039);\n+var parseJSONString = __webpack_require__(8235);\n+var NATIVE_SYMBOL = __webpack_require__(4495);\n+\n+var JSON = globalThis.JSON;\n+var Number = globalThis.Number;\n+var SyntaxError = globalThis.SyntaxError;\n+var nativeParse = JSON && JSON.parse;\n+var enumerableOwnProperties = getBuiltIn('Object', 'keys');\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n+var at = uncurryThis(''.charAt);\n+var slice = uncurryThis(''.slice);\n+var exec = uncurryThis(\u002F.\u002F.exec);\n+var push = uncurryThis([].push);\n+\n+var IS_DIGIT = \u002F^\\d$\u002F;\n+var IS_NON_ZERO_DIGIT = \u002F^[1-9]$\u002F;\n+var IS_NUMBER_START = \u002F^[\\d-]$\u002F;\n+var IS_WHITESPACE = \u002F^[\\t\\n\\r ]$\u002F;\n+\n+var PRIMITIVE = 0;\n+var OBJECT = 1;\n+\n+var $parse = function (source, reviver) {\n+  source = toString(source);\n+  var context = new Context(source, 0, '');\n+  var root = context.parse();\n+  var value = root.value;\n+  var endIndex = context.skip(IS_WHITESPACE, root.end);\n+  if (endIndex \u003C source.length) {\n+    throw new SyntaxError('Unexpected extra character: \"' + at(source, endIndex) + '\" after the parsed data at: ' + endIndex);\n+  }\n+  return isCallable(reviver) ? internalize({ '': value }, '', reviver, root) : value;\n+};\n+\n+var internalize = function (holder, name, reviver, node) {\n+  var val = holder[name];\n+  var unmodified = node && val === node.value;\n+  var context = unmodified && typeof node.source == 'string' ? { source: node.source } : {};\n+  var elementRecordsLen, keys, len, i, P;\n+  if (isObject(val)) {\n+    var nodeIsArray = isArray(val);\n+    var nodes = unmodified ? node.nodes : nodeIsArray ? [] : {};\n+    if (nodeIsArray) {\n+      elementRecordsLen = nodes.length;\n+      len = lengthOfArrayLike(val);\n+      for (i = 0; i \u003C len; i++) {\n+        internalizeProperty(val, i, internalize(val, '' + i, reviver, i \u003C elementRecordsLen ? nodes[i] : undefined));\n+      }\n+    } else {\n+      keys = enumerableOwnProperties(val);\n+      len = lengthOfArrayLike(keys);\n+      for (i = 0; i \u003C len; i++) {\n+        P = keys[i];\n+        internalizeProperty(val, P, internalize(val, P, reviver, hasOwn(nodes, P) ? nodes[P] : undefined));\n+      }\n+    }\n+  }\n+  return call(reviver, holder, name, val, context);\n+};\n+\n+var internalizeProperty = function (object, key, value) {\n+  if (DESCRIPTORS) {\n+    var descriptor = getOwnPropertyDescriptor(object, key);\n+    if (descriptor && !descriptor.configurable) return;\n+  }\n+  if (value === undefined) delete object[key];\n+  else createProperty(object, key, value);\n+};\n+\n+var Node = function (value, end, source, nodes) {\n+  this.value = value;\n+  this.end = end;\n+  this.source = source;\n+  this.nodes = nodes;\n+};\n+\n+var Context = function (source, index) {\n+  this.source = source;\n+  this.index = index;\n+};\n+\n+\u002F\u002F https:\u002F\u002Fwww.json.org\u002Fjson-en.html\n+Context.prototype = {\n+  fork: function (nextIndex) {\n+    return new Context(this.source, nextIndex);\n+  },\n+  parse: function () {\n+    var source = this.source;\n+    var i = this.skip(IS_WHITESPACE, this.index);\n+    var fork = this.fork(i);\n+    var chr = at(source, i);\n+    if (exec(IS_NUMBER_START, chr)) return fork.number();\n+    switch (chr) {\n+      case '{':\n+        return fork.object();\n+      case '[':\n+        return fork.array();\n+      case '\"':\n+        return fork.string();\n+      case 't':\n+        return fork.keyword(true);\n+      case 'f':\n+        return fork.keyword(false);\n+      case 'n':\n+        return fork.keyword(null);\n+    } throw new SyntaxError('Unexpected character: \"' + chr + '\" at: ' + i);\n+  },\n+  node: function (type, value, start, end, nodes) {\n+    return new Node(value, end, type ? null : slice(this.source, start, end), nodes);\n+  },\n+  object: function () {\n+    var source = this.source;\n+    var i = this.index + 1;\n+    var expectKeypair = false;\n+    var object = {};\n+    var nodes = {};\n+    while (i \u003C source.length) {\n+      i = this.until(['\"', '}'], i);\n+      if (at(source, i) === '}' && !expectKeypair) {\n+        i++;\n+        break;\n+      }\n+      \u002F\u002F Parsing the key\n+      var result = this.fork(i).string();\n+      var key = result.value;\n+      i = result.end;\n+      i = this.until([':'], i) + 1;\n+      \u002F\u002F Parsing value\n+      i = this.skip(IS_WHITESPACE, i);\n+      result = this.fork(i).parse();\n+      createProperty(nodes, key, result);\n+      createProperty(object, key, result.value);\n+      i = this.until([',', '}'], result.end);\n+      var chr = at(source, i);\n+      if (chr === ',') {\n+        expectKeypair = true;\n+        i++;\n+      } else if (chr === '}') {\n+        i++;\n+        break;\n+      }\n+    }\n+    return this.node(OBJECT, object, this.index, i, nodes);\n+  },\n+  array: function () {\n+    var source = this.source;\n+    var i = this.index + 1;\n+    var expectElement = false;\n+    var array = [];\n+    var nodes = [];\n+    while (i \u003C source.length) {\n+      i = this.skip(IS_WHITESPACE, i);\n+      if (at(source, i) === ']' && !expectElement) {\n+        i++;\n+        break;\n+      }\n+      var result = this.fork(i).parse();\n+      push(nodes, result);\n+      push(array, result.value);\n+      i = this.until([',', ']'], result.end);\n+      if (at(source, i) === ',') {\n+        expectElement = true;\n+        i++;\n+      } else if (at(source, i) === ']') {\n+        i++;\n+        break;\n+      }\n+    }\n+    return this.node(OBJECT, array, this.index, i, nodes);\n+  },\n+  string: function () {\n+    var index = this.index;\n+    var parsed = parseJSONString(this.source, this.index + 1);\n+    return this.node(PRIMITIVE, parsed.value, index, parsed.end);\n+  },\n+  number: function () {\n+    var source = this.source;\n+    var startIndex = this.index;\n+    var i = startIndex;\n+    if (at(source, i) === '-') i++;\n+    if (at(source, i) === '0') i++;\n+    else if (exec(IS_NON_ZERO_DIGIT, at(source, i))) i = this.skip(IS_DIGIT, i + 1);\n+    else throw new SyntaxError('Failed to parse number at: ' + i);\n+    if (at(source, i) === '.') i = this.skip(IS_DIGIT, i + 1);\n+    if (at(source, i) === 'e' || at(source, i) === 'E') {\n+      i++;\n+      if (at(source, i) === '+' || at(source, i) === '-') i++;\n+      var exponentStartIndex = i;\n+      i = this.skip(IS_DIGIT, i);\n+      if (exponentStartIndex === i) throw new SyntaxError(\"Failed to parse number's exponent value at: \" + i);\n+    }\n+    return this.node(PRIMITIVE, Number(slice(source, startIndex, i)), startIndex, i);\n+  },\n+  keyword: function (value) {\n+    var keyword = '' + value;\n+    var index = this.index;\n+    var endIndex = index + keyword.length;\n+    if (slice(this.source, index, endIndex) !== keyword) throw new SyntaxError('Failed to parse value at: ' + index);\n+    return this.node(PRIMITIVE, value, index, endIndex);\n+  },\n+  skip: function (regex, i) {\n+    var source = this.source;\n+    for (; i \u003C source.length; i++) if (!exec(regex, at(source, i))) break;\n+    return i;\n+  },\n+  until: function (array, i) {\n+    i = this.skip(IS_WHITESPACE, i);\n+    var chr = at(this.source, i);\n+    for (var j = 0; j \u003C array.length; j++) if (array[j] === chr) return i;\n+    throw new SyntaxError('Unexpected character: \"' + chr + '\" at: ' + i);\n+  }\n+};\n+\n+var NO_SOURCE_SUPPORT = fails(function () {\n+  var unsafeInt = '9007199254740993';\n+  var source;\n+  nativeParse(unsafeInt, function (key, value, context) {\n+    source = context.source;\n+  });\n+  return source !== unsafeInt;\n+});\n+\n+var PROPER_BASE_PARSE = NATIVE_SYMBOL && !fails(function () {\n+  \u002F\u002F Safari 9 bug\n+  return 1 \u002F nativeParse('-0 \\t') !== -Infinity;\n+});\n+\n+\u002F\u002F `JSON.parse` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-json.parse\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-json-parse-with-source\n+$({ target: 'JSON', stat: true, forced: NO_SOURCE_SUPPORT }, {\n+  parse: function parse(text, reviver) {\n+    return PROPER_BASE_PARSE && !isCallable(reviver) ? nativeParse(text) : $parse(text, reviver);\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8480:\n+\u002F***\u002F ((__unused_webpack_module, exports, __webpack_require__) => {\n+\n+\n+var internalObjectKeys = __webpack_require__(1828);\n+var enumBugKeys = __webpack_require__(8727);\n+\n+var hiddenKeys = enumBugKeys.concat('length', 'prototype');\n+\n+\u002F\u002F `Object.getOwnPropertyNames` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.getownpropertynames\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertynames -- safe\n+exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n+  return internalObjectKeys(O, hiddenKeys);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8551:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isObject = __webpack_require__(34);\n+\n+var $String = String;\n+var $TypeError = TypeError;\n+\n+\u002F\u002F `Assert: Type(argument) is Object`\n+module.exports = function (argument) {\n+  if (isObject(argument)) return argument;\n+  throw new $TypeError($String(argument) + ' is not an object');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8574:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+\n+var $Error = Error;\n+var replace = uncurryThis(''.replace);\n+\n+var TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd');\n+\u002F\u002F eslint-disable-next-line redos\u002Fno-vulnerable, sonarjs\u002Fslow-regex -- safe\n+var V8_OR_CHAKRA_STACK_ENTRY = \u002F\\n\\s*at [^:]*:[^\\n]*\u002F;\n+var IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n+\n+module.exports = function (stack, dropEntries) {\n+  if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n+    while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n+  } return stack;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8622:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var isCallable = __webpack_require__(4901);\n+\n+var WeakMap = globalThis.WeakMap;\n+\n+module.exports = isCallable(WeakMap) && \u002Fnative code\u002F.test(String(WeakMap));\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8686:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var fails = __webpack_require__(9039);\n+\n+\u002F\u002F V8 ~ Chrome 36-\n+\u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=3334\n+module.exports = DESCRIPTORS && fails(function () {\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- required for testing\n+  return Object.defineProperty(function () { \u002F* empty *\u002F }, 'prototype', {\n+    value: 42,\n+    writable: false\n+  }).prototype !== 42;\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8727:\n+\u002F***\u002F ((module) => {\n+\n+\n+\u002F\u002F IE8- don't enum bug keys\n+module.exports = [\n+  'constructor',\n+  'hasOwnProperty',\n+  'isPrototypeOf',\n+  'propertyIsEnumerable',\n+  'toLocaleString',\n+  'toString',\n+  'valueOf'\n+];\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8773:\n+\u002F***\u002F ((__unused_webpack_module, exports) => {\n+\n+\n+var $propertyIsEnumerable = {}.propertyIsEnumerable;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n+\n+\u002F\u002F Nashorn ~ JDK8 bug\n+var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n+\n+\u002F\u002F `Object.prototype.propertyIsEnumerable` method implementation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.prototype.propertyisenumerable\n+exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n+  var descriptor = getOwnPropertyDescriptor(this, V);\n+  return !!descriptor && descriptor.enumerable;\n+} : $propertyIsEnumerable;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8981:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var requireObjectCoercible = __webpack_require__(7750);\n+\n+var $Object = Object;\n+\n+\u002F\u002F `ToObject` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-toobject\n+module.exports = function (argument) {\n+  return $Object(requireObjectCoercible(argument));\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9039:\n+\u002F***\u002F ((module) => {\n+\n+\n+module.exports = function (exec) {\n+  try {\n+    return !!exec();\n+  } catch (error) {\n+    return true;\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9143:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var uncurryThis = __webpack_require__(9504);\n+var anObjectOrUndefined = __webpack_require__(3972);\n+var aString = __webpack_require__(3463);\n+var hasOwn = __webpack_require__(9297);\n+var base64Map = __webpack_require__(2804);\n+var getAlphabetOption = __webpack_require__(944);\n+var notDetached = __webpack_require__(5169);\n+\n+var base64Alphabet = base64Map.c2i;\n+var base64UrlAlphabet = base64Map.c2iUrl;\n+\n+var SyntaxError = globalThis.SyntaxError;\n+var TypeError = globalThis.TypeError;\n+var at = uncurryThis(''.charAt);\n+\n+var skipAsciiWhitespace = function (string, index) {\n+  var length = string.length;\n+  for (;index \u003C length; index++) {\n+    var chr = at(string, index);\n+    if (chr !== ' ' && chr !== '\\t' && chr !== '\\n' && chr !== '\\f' && chr !== '\\r') break;\n+  } return index;\n+};\n+\n+var decodeBase64Chunk = function (chunk, alphabet, throwOnExtraBits) {\n+  var chunkLength = chunk.length;\n+\n+  if (chunkLength \u003C 4) {\n+    chunk += chunkLength === 2 ? 'AA' : 'A';\n+  }\n+\n+  var triplet = (alphabet[at(chunk, 0)] \u003C\u003C 18)\n+    + (alphabet[at(chunk, 1)] \u003C\u003C 12)\n+    + (alphabet[at(chunk, 2)] \u003C\u003C 6)\n+    + alphabet[at(chunk, 3)];\n+\n+  var chunkBytes = [\n+    (triplet >> 16) & 255,\n+    (triplet >> 8) & 255,\n+    triplet & 255\n+  ];\n+\n+  if (chunkLength === 2) {\n+    if (throwOnExtraBits && chunkBytes[1] !== 0) {\n+      throw new SyntaxError('Extra bits');\n+    }\n+    return [chunkBytes[0]];\n+  }\n+\n+  if (chunkLength === 3) {\n+    if (throwOnExtraBits && chunkBytes[2] !== 0) {\n+      throw new SyntaxError('Extra bits');\n+    }\n+    return [chunkBytes[0], chunkBytes[1]];\n+  }\n+\n+  return chunkBytes;\n+};\n+\n+var writeBytes = function (bytes, elements, written) {\n+  var elementsLength = elements.length;\n+  for (var index = 0; index \u003C elementsLength; index++) {\n+    bytes[written + index] = elements[index];\n+  }\n+  return written + elementsLength;\n+};\n+\n+\u002F* eslint-disable max-statements, max-depth -- TODO *\u002F\n+module.exports = function (string, options, into, maxLength) {\n+  aString(string);\n+  anObjectOrUndefined(options);\n+  var alphabet = getAlphabetOption(options) === 'base64' ? base64Alphabet : base64UrlAlphabet;\n+  var lastChunkHandling = options ? options.lastChunkHandling : undefined;\n+\n+  if (lastChunkHandling === undefined) lastChunkHandling = 'loose';\n+\n+  if (lastChunkHandling !== 'loose' && lastChunkHandling !== 'strict' && lastChunkHandling !== 'stop-before-partial') {\n+    throw new TypeError('Incorrect `lastChunkHandling` option');\n+  }\n+\n+  if (into) notDetached(into.buffer);\n+\n+  var bytes = into || [];\n+  var written = 0;\n+  var read = 0;\n+  var chunk = '';\n+  var index = 0;\n+\n+  if (maxLength) while (true) {\n+    index = skipAsciiWhitespace(string, index);\n+    if (index === string.length) {\n+      if (chunk.length > 0) {\n+        if (lastChunkHandling === 'stop-before-partial') {\n+          break;\n+        }\n+        if (lastChunkHandling === 'loose') {\n+          if (chunk.length === 1) {\n+            throw new SyntaxError('Malformed padding: exactly one additional character');\n+          }\n+          written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, false), written);\n+        } else {\n+          throw new SyntaxError('Missing padding');\n+        }\n+      }\n+      read = string.length;\n+      break;\n+    }\n+    var chr = at(string, index);\n+    ++index;\n+    if (chr === '=') {\n+      if (chunk.length \u003C 2) {\n+        throw new SyntaxError('Padding is too early');\n+      }\n+      index = skipAsciiWhitespace(string, index);\n+      if (chunk.length === 2) {\n+        if (index === string.length) {\n+          if (lastChunkHandling === 'stop-before-partial') {\n+            break;\n+          }\n+          throw new SyntaxError('Malformed padding: only one =');\n+        }\n+        if (at(string, index) === '=') {\n+          ++index;\n+          index = skipAsciiWhitespace(string, index);\n+        }\n+      }\n+      if (index \u003C string.length) {\n+        throw new SyntaxError('Unexpected character after padding');\n+      }\n+      written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, lastChunkHandling === 'strict'), written);\n+      read = string.length;\n+      break;\n+    }\n+    if (!hasOwn(alphabet, chr)) {\n+      throw new SyntaxError('Unexpected character');\n+    }\n+    var remainingBytes = maxLength - written;\n+    if (remainingBytes === 1 && chunk.length === 2 || remainingBytes === 2 && chunk.length === 3) {\n+      \u002F\u002F special case: we can fit exactly the number of bytes currently represented by chunk, so we were just checking for `=`\n+      break;\n+    }\n+\n+    chunk += chr;\n+    if (chunk.length === 4) {\n+      written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, false), written);\n+      chunk = '';\n+      read = index;\n+      if (written === maxLength) {\n+        break;\n+      }\n+    }\n+  }\n+\n+  return { bytes: bytes, read: read, written: written };\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9297:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+var toObject = __webpack_require__(8981);\n+\n+var hasOwnProperty = uncurryThis({}.hasOwnProperty);\n+\n+\u002F\u002F `HasOwnProperty` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-hasownproperty\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-hasown -- safe\n+module.exports = Object.hasOwn || function hasOwn(it, key) {\n+  return hasOwnProperty(toObject(it), key);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9306:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isCallable = __webpack_require__(4901);\n+var tryToString = __webpack_require__(6823);\n+\n+var $TypeError = TypeError;\n+\n+\u002F\u002F `Assert: IsCallable(argument) is true`\n+module.exports = function (argument) {\n+  if (isCallable(argument)) return argument;\n+  throw new $TypeError(tryToString(argument) + ' is not a function');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9429:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var IS_NODE = __webpack_require__(6193);\n+\n+module.exports = function (name) {\n+  if (IS_NODE) {\n+    try {\n+      return globalThis.process.getBuiltinModule(name);\n+    } catch (error) { \u002F* empty *\u002F }\n+    try {\n+      \u002F\u002F eslint-disable-next-line no-new-func -- safe\n+      return Function('return require(\"' + name + '\")')();\n+    } catch (error) { \u002F* empty *\u002F }\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9433:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\n+var defineProperty = Object.defineProperty;\n+\n+module.exports = function (key, value) {\n+  try {\n+    defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\n+  } catch (error) {\n+    globalThis[key] = value;\n+  } return value;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9504:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var NATIVE_BIND = __webpack_require__(616);\n+\n+var FunctionPrototype = Function.prototype;\n+var call = FunctionPrototype.call;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind -- safe\n+var uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n+\n+module.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n+  return function () {\n+    return call.apply(fn, arguments);\n+  };\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9519:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var userAgent = __webpack_require__(2839);\n+\n+var process = globalThis.process;\n+var Deno = globalThis.Deno;\n+var versions = process && process.versions || Deno && Deno.version;\n+var v8 = versions && versions.v8;\n+var match, version;\n+\n+if (v8) {\n+  match = v8.split('.');\n+  \u002F\u002F in old Chrome, versions of V8 isn't V8 = Chrome \u002F 10\n+  \u002F\u002F but their correct versions are not interesting for us\n+  version = match[0] > 0 && match[0] \u003C 4 ? 1 : +(match[0] + match[1]);\n+}\n+\n+\u002F\u002F BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n+\u002F\u002F so check `userAgent` even if `.v8` exists, but 0\n+if (!version && userAgent) {\n+  match = userAgent.match(\u002FEdge\\\u002F(\\d+)\u002F);\n+  if (!match || match[1] >= 74) {\n+    match = userAgent.match(\u002FChrome\\\u002F(\\d+)\u002F);\n+    if (match) version = +match[1];\n+  }\n+}\n+\n+module.exports = version;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9539:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var call = __webpack_require__(9565);\n+var anObject = __webpack_require__(8551);\n+var getMethod = __webpack_require__(5966);\n+\n+module.exports = function (iterator, kind, value) {\n+  var innerResult, innerError;\n+  anObject(iterator);\n+  try {\n+    innerResult = getMethod(iterator, 'return');\n+    if (!innerResult) {\n+      if (kind === 'throw') throw value;\n+      return value;\n+    }\n+    innerResult = call(innerResult, iterator);\n+  } catch (error) {\n+    innerError = true;\n+    innerResult = error;\n+  }\n+  if (kind === 'throw') throw value;\n+  if (innerError) throw innerResult;\n+  anObject(innerResult);\n+  return value;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9565:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var NATIVE_BIND = __webpack_require__(616);\n+\n+var call = Function.prototype.call;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind -- safe\n+module.exports = NATIVE_BIND ? call.bind(call) : function () {\n+  return call.apply(call, arguments);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9617:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var toIndexedObject = __webpack_require__(5397);\n+var toAbsoluteIndex = __webpack_require__(5610);\n+var lengthOfArrayLike = __webpack_require__(6198);\n+\n+\u002F\u002F `Array.prototype.{ indexOf, includes }` methods implementation\n+var createMethod = function (IS_INCLUDES) {\n+  return function ($this, el, fromIndex) {\n+    var O = toIndexedObject($this);\n+    var length = lengthOfArrayLike(O);\n+    if (length === 0) return !IS_INCLUDES && -1;\n+    var index = toAbsoluteIndex(fromIndex, length);\n+    var value;\n+    \u002F\u002F Array#includes uses SameValueZero equality algorithm\n+    \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\n+    if (IS_INCLUDES && el !== el) while (length > index) {\n+      value = O[index++];\n+      \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\n+      if (value !== value) return true;\n+    \u002F\u002F Array#indexOf ignores holes, Array#includes - not\n+    } else for (;length > index; index++) {\n+      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n+    } return !IS_INCLUDES && -1;\n+  };\n+};\n+\n+module.exports = {\n+  \u002F\u002F `Array.prototype.includes` method\n+  \u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-array.prototype.includes\n+  includes: createMethod(true),\n+  \u002F\u002F `Array.prototype.indexOf` method\n+  \u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-array.prototype.indexof\n+  indexOf: createMethod(false)\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9631:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var globalThis = __webpack_require__(4576);\n+var uncurryThis = __webpack_require__(9504);\n+var anObjectOrUndefined = __webpack_require__(3972);\n+var anUint8Array = __webpack_require__(4154);\n+var notDetached = __webpack_require__(5169);\n+var base64Map = __webpack_require__(2804);\n+var getAlphabetOption = __webpack_require__(944);\n+\n+var base64Alphabet = base64Map.i2c;\n+var base64UrlAlphabet = base64Map.i2cUrl;\n+\n+var charAt = uncurryThis(''.charAt);\n+\n+\u002F\u002F `Uint8Array.prototype.toBase64` method\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-arraybuffer-base64\n+if (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {\n+  toBase64: function toBase64(\u002F* options *\u002F) {\n+    var array = anUint8Array(this);\n+    var options = arguments.length ? anObjectOrUndefined(arguments[0]) : undefined;\n+    var alphabet = getAlphabetOption(options) === 'base64' ? base64Alphabet : base64UrlAlphabet;\n+    var omitPadding = !!options && !!options.omitPadding;\n+    notDetached(this.buffer);\n+\n+    var result = '';\n+    var i = 0;\n+    var length = array.length;\n+    var triplet;\n+\n+    var at = function (shift) {\n+      return charAt(alphabet, (triplet >> (6 * shift)) & 63);\n+    };\n+\n+    for (; i + 2 \u003C length; i += 3) {\n+      triplet = (array[i] \u003C\u003C 16) + (array[i + 1] \u003C\u003C 8) + array[i + 2];\n+      result += at(3) + at(2) + at(1) + at(0);\n+    }\n+    if (i + 2 === length) {\n+      triplet = (array[i] \u003C\u003C 16) + (array[i + 1] \u003C\u003C 8);\n+      result += at(3) + at(2) + at(1) + (omitPadding ? '' : '=');\n+    } else if (i + 1 === length) {\n+      triplet = array[i] \u003C\u003C 16;\n+      result += at(3) + at(2) + (omitPadding ? '' : '==');\n+    }\n+\n+    return result;\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9797:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var globalThis = __webpack_require__(4576);\n+var aString = __webpack_require__(3463);\n+var anUint8Array = __webpack_require__(4154);\n+var notDetached = __webpack_require__(5169);\n+var $fromHex = __webpack_require__(2303);\n+\n+\u002F\u002F `Uint8Array.prototype.setFromHex` method\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-arraybuffer-base64\n+if (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {\n+  setFromHex: function setFromHex(string) {\n+    anUint8Array(this);\n+    aString(string);\n+    notDetached(this.buffer);\n+    var read = $fromHex(string, this).read;\n+    return { read: read, written: read \u002F 2 };\n+  }\n+});\n+\n+\n+\u002F***\u002F })\n+\n+\u002F******\u002F });\n \u002F************************************************************************\u002F\n-\u002F******\u002F \u002F* webpack\u002Fruntime\u002Fdefine property getters *\u002F\n-\u002F******\u002F (() => {\n-\u002F******\u002F \t\u002F\u002F define getter functions for harmony exports\n-\u002F******\u002F \t__webpack_require__.d = (exports, definition) => {\n-\u002F******\u002F \t\tfor(var key in definition) {\n-\u002F******\u002F \t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n-\u002F******\u002F \t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n-\u002F******\u002F \t\t\t}\n-\u002F******\u002F \t\t}\n+\u002F******\u002F \u002F\u002F The module cache\n+\u002F******\u002F var __webpack_module_cache__ = {};\n+\u002F******\u002F \n+\u002F******\u002F \u002F\u002F The require function\n+\u002F******\u002F function __webpack_require__(moduleId) {\n+\u002F******\u002F \t\u002F\u002F Check if module is in cache\n+\u002F******\u002F \tvar cachedModule = __webpack_module_cache__[moduleId];\n+\u002F******\u002F \tif (cachedModule !== undefined) {\n+\u002F******\u002F \t\treturn cachedModule.exports;\n+\u002F******\u002F \t}\n+\u002F******\u002F \t\u002F\u002F Create a new module (and put it into the cache)\n+\u002F******\u002F \tvar module = __webpack_module_cache__[moduleId] = {\n+\u002F******\u002F \t\t\u002F\u002F no module.id needed\n+\u002F******\u002F \t\t\u002F\u002F no module.loaded needed\n+\u002F******\u002F \t\texports: {}\n \u002F******\u002F \t};\n-\u002F******\u002F })();\n \u002F******\u002F \n-\u002F******\u002F \u002F* webpack\u002Fruntime\u002FhasOwnProperty shorthand *\u002F\n-\u002F******\u002F (() => {\n-\u002F******\u002F \t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n-\u002F******\u002F })();\n+\u002F******\u002F \t\u002F\u002F Execute the module function\n+\u002F******\u002F \t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n+\u002F******\u002F \n+\u002F******\u002F \t\u002F\u002F Return the exports of the module\n+\u002F******\u002F \treturn module.exports;\n+\u002F******\u002F }\n \u002F******\u002F \n \u002F************************************************************************\u002F\n-var __webpack_exports__ = globalThis.pdfjsSandbox = {};\n+var __webpack_exports__ = {};\n \n-\u002F\u002F EXPORTS\n-__webpack_require__.d(__webpack_exports__, {\n-  QuickJSSandbox: () => (\u002F* binding *\u002F QuickJSSandbox)\n-});\n-\n-;\u002F\u002F CONCATENATED MODULE: .\u002Fexternal\u002Fquickjs\u002Fquickjs-eval.js\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array.push.js\n+var es_array_push = __webpack_require__(4114);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array-buffer.detached.js\n+var es_array_buffer_detached = __webpack_require__(6573);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array-buffer.transfer.js\n+var es_array_buffer_transfer = __webpack_require__(8100);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array-buffer.transfer-to-fixed-length.js\n+var es_array_buffer_transfer_to_fixed_length = __webpack_require__(7936);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.constructor.js\n+var es_iterator_constructor = __webpack_require__(8111);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.every.js\n+var es_iterator_every = __webpack_require__(1148);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.json.parse.js\n+var esnext_json_parse = __webpack_require__(8335);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.uint8-array.set-from-base64.js\n+var esnext_uint8_array_set_from_base64 = __webpack_require__(1549);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.uint8-array.set-from-hex.js\n+var esnext_uint8_array_set_from_hex = __webpack_require__(9797);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.uint8-array.to-base64.js\n+var esnext_uint8_array_to_base64 = __webpack_require__(9631);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.uint8-array.to-hex.js\n+var esnext_uint8_array_to_hex = __webpack_require__(5623);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.dom-exception.stack.js\n+var web_dom_exception_stack = __webpack_require__(4979);\n+;\u002F\u002F .\u002Fexternal\u002Fquickjs\u002Fquickjs-eval.js\n var Module=(()=>{var _scriptDir=typeof document!=='undefined'&&document.currentScript?document.currentScript.src:undefined;return function(moduleArg={}){var d=moduleArg,k,n;d.ready=new Promise((a,b)=>{k=a;n=b;});var p=Object.assign({},d),q=\"\";\"undefined\"!=typeof document&&document.currentScript&&(q=document.currentScript.src);_scriptDir&&(q=_scriptDir);q.startsWith(\"blob:\")?q=\"\":q=q.substr(0,q.replace(\u002F[?#].*\u002F,\"\").lastIndexOf(\"\u002F\")+1);var aa=d.print||console.log.bind(console),u=d.printErr||console.error.bind(console);Object.assign(d,p);p=null;var v;d.wasmBinary&&(v=d.wasmBinary);\"object\"!=typeof WebAssembly&&w(\"no native wasm support detected\");var x,y=!1,z,A,B,C;function D(){var a=x.buffer;d.HEAP8=z=new Int8Array(a);d.HEAP16=new Int16Array(a);d.HEAPU8=A=new Uint8Array(a);d.HEAPU16=new Uint16Array(a);d.HEAP32=B=new Int32Array(a);d.HEAPU32=C=new Uint32Array(a);d.HEAPF32=new Float32Array(a);d.HEAPF64=new Float64Array(a);}var E=[],F=[],G=[];function ba(){var a=d.preRun.shift();E.unshift(a);}var H=0,I=null,J=null;function w(a){d.onAbort?.(a);a=\"Aborted(\"+a+\")\";u(a);y=!0;a=new WebAssembly.RuntimeError(a+\". Build with -sASSERTIONS for more info.\");n(a);throw a;}var K=a=>a.startsWith(\"data:application\u002Foctet-stream;base64,\"),L;L=\"data:application\u002Foctet-stream;base64,AGFzbQEAAAABzgZtYAJ\u002FfwBgA39\u002FfwF\u002FYAR\u002Ffn9\u002FAX5gAn9\u002FAX9gBX9+f39\u002FAX5gAX8Bf2ADf39\u002FAGAEf39\u002FfwF\u002FYAJ\u002FfgF+YAF\u002FAGABfAF8YAV\u002Ff39\u002FfwF\u002FYAJ\u002FfgBgAn9+AX9gAn9\u002FAX5gA39\u002FfgF\u002FYAN\u002Ffn8BfmAGf35\u002Ff39\u002FAX5gA39+fwBgA39+fwF\u002FYAZ\u002Ff39\u002Ff38Bf2AEf39\u002FfwBgBn9+fn9\u002FfwF+YAR\u002Ff35\u002FAX9gA39+fgF+YAN\u002Ff38BfmADf35+AX9gBH9\u002Ff38BfmAFf35+fn4AYAJ8fAF8YAF\u002FAX5gBH9\u002Ff34Bf2AFf35+f38BfmAFf39\u002Ff38AYAd\u002Ffn9+fn5\u002FAX9gBX9\u002Ff35+AX9gB39\u002Ff39\u002Ff38Bf2AAAGAFf35\u002Ffn8Bf2AEf35+fwBgBH9+fn8BfmAFf35+fn8Bf2AFf39\u002Ff38BfmAEf39+fgF\u002FYAF+AX9gBH9+f34BfmAEf35\u002FfwBgBH9+fn8Bf2AJf39\u002Ff39\u002Ff39\u002FAX9gCH9\u002Ff39\u002Ff39\u002FAX9gA39+fgBgBH9+f38Bf2AGf35\u002Ffn5\u002FAX9gBX9+fn9\u002FAGABfgF+YAd\u002Ffn9\u002Ff39\u002FAX5gAX8BfGADf39+AGAEf35\u002FfgF\u002FYAV\u002Ff35\u002FfwF\u002FYAR\u002Ffn5+AX9gBn9\u002Ff39\u002FfwF+YAN+f38Bf2AHf39\u002Ff39\u002FfwBgAnx\u002FAXxgA39\u002FfgF+YAJ+fwF\u002FYAN8fH8BfGAEf39+fwBgBH9+fn4BfmAAAX9gBn98f39\u002FfwF\u002FYAABfGAFf35\u002Ffn8BfmAGf39+fn5+AX9gAn5\u002FAGACf3wAYAV\u002Ff39\u002FfgF+YAR\u002Ff35\u002FAX5gBH9+f34AYAd\u002Ffn5+f39\u002FAX5gBH5+fn4Bf2AKf39\u002Ff39\u002Ff39\u002FfwF\u002FYAd\u002Ff39\u002Ff39+AX5gBX9+f39\u002FAGAHfH9\u002Ff39\u002FfwBgBX98f39\u002FAX5gAXwBf2AFf39+f38AYAZ\u002Ffn5+fn8Bf2AGf35\u002Ff39\u002FAX9gBH98f38Bf2AGf39\u002Ff39\u002FAGAEf39\u002FfgF+YAV\u002Ffn9\u002FfwF\u002FYAV\u002Ffn5+fgF\u002FYAJ\u002FfwF8YAV\u002Ffn5\u002FfwF\u002FYAV\u002Ff35+fgF+YAV\u002Ff35+fwF\u002FYAJ8fwF\u002FYAJ8fAF\u002FYAh\u002Ffn5+fn9+fgF+YAN\u002FfnwBfmAAAX5gB39\u002Ff35+fn8Bf2ACfn4BfGADfn5+AX9gA39\u002FfAACSQwBYQFhABUBYQFiACUBYQFjAAcBYQFkAAYBYQFlAEgBYQFmAAABYQFnAAEBYQFoADgBYQFpAAYBYQFqAAUBYQFrAAkBYQFsABUDkwmRCQwAAAUASQYGACYDAAEJAAAgOQEuCAwJAQMIAA0DDgkcAQUGDw0ADR4IDSAeADoGHgMFAQYLCA8HBgMAEAcDCAcBGhgFAwEOBS8NOwYABhMGAyEQCQ4cJwELCEo8AQEiExgPExwJAQEDBQ8FBwADOzwBCxcAAAE9Aw09DgMLCQ0FBQ0bPhMoECYpDwgNDEsGCQEHADABDwUCDwEQBw1MBgZNAzEFFANODy8GAwELAQEAAzImTxM\u002FFAkLGAMAKQUPEA0zACk0AFABCUADIT8DCQMJJAQPBQEeDw0ABgEIARlRFAYLAyEHAwY1AAEDBQsGUlMYBQ0qAEEAFRo6EA0vBgEAJwAFBUIBCgUGAQMGAQEBDQYIGAMGBQEFCw8EADMICQMPDzYADgIEVAEYDglVVhADAxcIAAsIBgEBAwEVB1dDHQoKAwUDAAUDCQYLWAUDAQsDAAYCGQgLBgcBGwUFAQUBAwcBA0QPWRANDgkVKBgADRkgFFoGEAUBAQYgBFsADQAHAwNCAxkDDgUsAS4HFwAZAQkDCgoFHQUHAQUDBRVcISQBCwcUXRQHAwcHAxgNCAsBAAIBAQMJAwMLDQEHAwcHAwABBwMwAyxeOQATLBcRAwYVCwMSAF8YKBkAExUUYGEECCtiAkUbAx4NAQIDDTIJDxYHAgc+AAEPF2MICA0IABAVAwADHAYLCQMBBR0KZAoDBRYLBgcFAwUxBTElFAAyAQUBAQABARQVBxQDBQcLBwcEAAIJAQFlAgIQEAACAQENBQgFAQICZgIIAgQmGg0IFAQDAQABDAEAAwUBAwEJAwULCQsAAQMUMDY2BGdEDjMACAAGBAQBDy0ACA4JAgAlAQABABYaBiwUBwwAFQEDCQkSCAMAEA4FBQUEaAIPAAAnBAcDABs3CwcDIBEBAwEABgEDCSkEBA4aEwAQCBdFAA4aAwUPDw8GAwcDAQ0QDw9pFw4JGhpGIQEJGQEZAQMDAwEuEgcAahxrAAADAwUVBSRAQzgeHCccBQMAbAYJAQoJHQUCAwMDFBUFAQkFBwUHAQMBBQEDJCQDBAcHBwECCwsCCwIGBgYGBgYGBhYGBgIEBAICAQ4BDgEOAQ4BDgIBDgEOAQ4BDgEOAgQEAgECAgIEAgIIBAIQAgIIAgQQEQICCAICAgICAgICAgICAgIKAgIKCgQRBAQCAgIEBAQCAgICAgIEBAQCAgICAgIEAgICJQICAgICAgIEAgICAgICAgQEAgICAgIEAgIEAgEEAgICBAICBAIEBAICAggIAgICAgQEGAgCAgQCAgICAgIEAgICBAQCAgIEAgIEAgIEAgIAAgI3AwICAgICBAICAhEEEQQCAgIRBBEREQICEgwSDAwMEgwEEQQEEAQEBAIRAjQtEyITHxcSDAICBBEIAgICAgACAgICEAgIAiITFwEAERkTHSIAARsbGwEAEgwSDAwMEgwSDAwMEgwSDBIMEgwMEgwSDAYZERERFhYZFhYIKh8jAUEDBQlGAQBHCgoKAhABCAoKCgoqARAfCgoKIwoKCgodKwoKCgoKARYWFgIABAcBcAGnA6cDBQcBAYACgIACBggBfwFBwOIICwdADQFtAgABbgCpBAFvAJwJAXAAjAUBcQDyBwFyAO4HAXMAngcBdACPAgF1ANQBAXYBAAF3APUIAXgA9AgBeQDzCAnTBgEAQQELpgOVA8ME8gjxCO8I7gjtCOwI6wjqCOgI5wjCCLwIrwiaCPEH8AfvB+cH1Qe7B+AClAeMB8oE+AbWBssGuQO8BrkGwAS+BLAGrgarBqYGmwmaCZkJnwSYCZAGkQmLCYcJhAn\u002FCPwI4wjpCMIF5gjwCMME5Qi4BeQIvgjiCMMIvQjbA7sIigWbCIcIhgiFCIMI\u002Fgf8B7oH2gbhCOAI3wjeCN0IngXcCNsI2gjZCNgI1wjWCNUI1AjTCNII0QjQCM8IzgjhA80I4QPMCMsIygjJCMEIugi5CLgIvwibBcgIxwiVA6UIpAijCKIIoQigCJ8IngidCJEIkAiPCOEDjgieBY0IjAiLCIoIxgjFCMQItwi2CLUItAizCLIIsQiwCK4IrQisCKsIqgipCKcIpgicCIIFgQWZCJgIlwiWCJUIlAiTCJII+AOJCIgI3gGECIIIgQiACP8H\u002FQf7B6cF+gf5B\u002FgH9wf4BPYH9Qf0B6kF8wftB+wH6wfqB+kH6AfmB+UH5AfjB+IHqAjhB+AH2ATfB94H3QfeBNwH2wfaB9kH1wTYB9cH1gfUB9MH0gfRB9AHzwfOB4gDzQfMB8sHygfJB8gHxwfGB8UHxAfDB8IHwQfAB\u002FEDvwe+B64F7QO9B7wH1QS5B7gHtwe2B7UHtAezB7IHsQewB9ME0gSvB64HrQesB6sHqgepB6gHpwemB6UHpAejB6IHoQegB58HnQecB5sHmgeZB5gHlweWB5UHkweSB5EHkAePB44HjQeLB4oHiQeIB4cHhgeFB4QHgweCB4EHiQmICY0JgAeACZUJkwmcBJAJjAmaBM4CwAiCCfsI+Qj\u002FBooJgQn6CJQJkgmPCZMCoQOWCYMJjgn+Bv0G\u002FAb7BvoG+Qb3BvYG9Qb0BvMG8gbxBvAG7wbuBu0G7AbrBuoG6QboBucG5gblBsgE5AbHBOMG4gbhBuAG3wbeBsYE3QbcBtsGxQTZBtgG1wbABr8Gvga9BtMG1QbRBs8GzQbKBsgGxgbEBsIG0gbUBtAGzgbMBskGxwbFBsMGwQbCBLsGuga4BrcGtga1BrQGswayBrEGrAavBq0GqgarBKkGqAanBvcDwgSXCYYJiwaFCZUDlQP+CP0I+Aj3CPYICtbbFpEJNQEBfwJAIAFCIIinQXVJDQAgAaciAiACKAIAIgJBAWs2AgAgAkEBSg0AIAAoAhAgARCXBQsLTQECfyAAKAJAIgJBgAJqIQMgAigCnAIgACgCBEcEQCADQcYBEA4gAyAAKAIEEBsgAiAAKAIENgKcAgsgAiACKAKEAjYCmAIgAyABEA4LJwEBfyMAQRBrIgIkACACIAE6AA8gACACQQ9qQQEQchogAkEQaiQAC\u002F0UAgd\u002FAn4jAEEQayICJAAgACAAQRBqIgMQgQIgACAAKAI4IgE2AjQgAiABNgIMIABBADYCMCAAIAAoAhQ2AgQDQCAAIAE2AhggACAAKAIIIgU2AhQCQAJAAn8CQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEsAAAiBkH\u002FAXEiBA59ABcXFxcXFxcXBAMEBAIXFxcXFxcXFxcXFxcXFxcXFxcEEhgIBwwTGBcXCw0XDgkFChsbGxsbGxsbGxcXDxEQFhcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBxcGFxQHAQcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHFxUXC0EAIQQgASAAKAI8SQ0dIANBqn82AgAMHgsgACABQQFqEM0DDRsgAiAAKAI4NgIMDB0LIAFBAWogASABLQABQQpGGyEBCyACIAFBAWo2AgwMHQsgAiABQQFqNgIMDB0LAkACQCABLQABIgRBKkcEQCAEQS9GDQEgBEE9Rw0CIAIgAUECajYCDCADQYZ\u002FNgIADBwLIAFBAmohAQNAIAIgATYCDAJAA0ACQAJAAkACQCABLQAAIgRBCmsOBAEDAwIACyAEQSpHBEAgBA0DIAEgACgCPEkNBSAAQegaQQAQEwwgCyABLQABQS9HDQQgAiABQQJqNgIMDCQLIABBATYCMCAAIAAoAghBAWo2AgggAUEBaiEBDAQLIABBATYCMCABQQFqIQEMAwsgBMBBAE4NASABQQYgAkEMahBRIgRBfnFBqMAARgRAIABBATYCMCACKAIMIQEMAQsgAigCDCEBIARBf0cNAAsgAUEBaiEBDAELIAFBAWohAQwACwALIAFBAmohAUEADBULIAIgAUEBajYCDCADQS82AgAMGQtB3AAhBCABLQABQfUARw0XIAIgAUEBajYCBAJAIAJBBGpBARCXAiIBQQBOBEAgARCDAw0BCyACKAIMIQEMGAsgAiACKAIENgIMIAJBATYCCAwVCyACQQA2AgggAiABQQFqNgIMIAQhAQwUCyACIAFBAWoiBjYCDCACIAFBAmo2AgRB3AAhBQJAIAEtAAEiBEHcAEYEQCABLQACQfUARw0BIAJBBGpBARCXAiEFDAELIAQiBcBBAE4NACAGQQYgAkEEahBRIQULIAUQgwNFBEAgAEGT1gBBABATDBULIAIgAigCBDYCDCAAIAJBDGogAkEIaiAFQQEQ8AQiAUUNFCAAQal\u002FNgIQIAAgATYCIAwWC0EuIQQgAS0AASIFQS5GBEAgAS0AAkEuRw0VIAIgAUEDajYCDCADQaV\u002FNgIADBYLIAVBMGtB\u002FwFxQQpPDRQMEQsgAS0AAUE6a0F2SQ0QIAAoAkAtAG5BAXFFDRAgAEH52wBBABATDBILQSohBCABLQABIgVBKkcEQCAFQT1HDRMgAiABQQJqNgIMIANBhX82AgAMFAsgAS0AAkE9RgRAIAIgAUEDajYCDCADQZB\u002FNgIADBQLIAIgAUECajYCDCADQaN\u002FNgIADBMLQSUhBCABLQABQT1HDREgAiABQQJqNgIMIANBh382AgAMEgtBKyEEIAEtAAEiBUErRwRAIAVBPUcNESACIAFBAmo2AgwgA0GIfzYCAAwSCyACIAFBAmo2AgwgA0GVfzYCAAwRCyABLQABIgZBLUcEQCAGQT1HDRAgAiABQQJqNgIMIANBiX82AgAMEQsCQCAAKAJIRQ0AIAEtAAJBPkcNACAAKAIEIAVHDQsLIAIgAUECajYCDCADQZR\u002FNgIADBALAkACQAJAIAEtAAEiBUE8aw4CAQACCyACIAFBAmo2AgwgA0GafzYCAAwRCyABLQACQT1GBEAgAiABQQNqNgIMIANBin82AgAMEQsgAiABQQJqNgIMIANBln82AgAMEAsgBUEhRw0OIAAoAkhFDQ4gAS0AAkEtRw0OIAEtAANBLUYNCQwOC0E+IQQCQAJAIAEtAAFBPWsOAgABDwsgAiABQQJqNgIMIANBnH82AgAMDwsCQAJAAkAgAS0AAkE9aw4CAQACCyABLQADQT1GBEAgAiABQQRqNgIMIANBjH82AgAMEQsgAiABQQNqNgIMIANBmH82AgAMEAsgAiABQQNqNgIMIANBi382AgAMDwsgAiABQQJqNgIMIANBl382AgAMDgtBPSEEAkACQCABLQABQT1rDgIAAQ4LIAEtAAJBPUYEQCACIAFBA2o2AgwgA0GefzYCAAwPCyACIAFBAmo2AgwgA0GdfzYCAAwOCyACIAFBAmo2AgwgA0GkfzYCAAwNC0EhIQQgAS0AAUE9Rw0LIAEtAAJBPUYEQCACIAFBA2o2AgwgA0GgfzYCAAwNCyACIAFBAmo2AgwgA0GffzYCAAwMC0EmIQQgAS0AASIFQSZHBEAgBUE9Rw0LIAIgAUECajYCDCADQY1\u002FNgIADAwLIAEtAAJBPUYEQCACIAFBA2o2AgwgA0GRfzYCAAwMCyACIAFBAmo2AgwgA0GhfzYCAAwLC0HeACEEIAEtAAFBPUcNCSACIAFBAmo2AgwgA0GOfzYCAAwKC0H8ACEEIAEtAAEiBUH8AEcEQCAFQT1HDQkgAiABQQJqNgIMIANBj382AgAMCgsgAS0AAkE9RgRAIAIgAUEDajYCDCADQZJ\u002FNgIADAoLIAIgAUECajYCDCADQaJ\u002FNgIADAkLQT8hBCABLQABIgVBLkcEQCAFQT9HDQggAS0AAkE9RgRAIAIgAUEDajYCDCADQZN\u002FNgIADAoLIAIgAUECajYCDCADQaZ\u002FNgIADAkLIAEtAAJBMGtB\u002FwFxQQpJDQcgAiABQQJqNgIMIANBp382AgAMCAsgBkEATg0GIAFBBiACQQxqEFEiAUF+cUGowABGBEAgACgCCCEFDAoLIAEQqQMNCiABEIMDBEAgAkEANgIIDAULIABBzDFBABATDAULIAAgBEEBIAFBAWogAyACQQxqEP8CRQ0GDAQLQQELIQUDQAJ\u002FAkACQAJAAkAgBUUEQCACIAE2AgwMAQsgAS0AACIERQ0CAkAgBEEKaw4EDgAADgALIATAQQBODQMgAUEGIAJBDGoQUSIEQX5xQajAAEYNDSACKAIMIQEgBEF\u002FRg0BC0EBIQUMBAsgAUEBagwCCyABIAAoAjxPDQoLIAFBAWoLIQFBACEFDAALAAsCQCAAKAIAIAEgAkEMakEAQfQAEIACIghCgICAgHCDIglCgICAgMB+UgRAIAlCgICAgOAAUQ0DIAIoAgxBBiACQQhqEFEQyQFFDQELIAAoAgAgCBAMIABB8MMAQQAQEwwCCyAAIAg3AyAgAEGAfzYCEAwDCyAAIAJBDGogAkEIaiABQQAQ8AQiAUUNACAAIAE2AiAgAigCCCEBIABBADYCKCAAIAE2AiQgAEGDfzYCECAAEO8EDAILIANBqH82AgBBfwwCCyADIAQ2AgAgAiABQQFqNgIMCyAAIAIoAgw2AjhBAAshByACQRBqJAAgBw8LIABBATYCMCAAIAVBAWo2AggLIAIoAgwhAQwACwALFQAgAUHYAU4EQCAAKAIQIAEQhgULC7sHAgZ\u002FAX4jAEEgayIHJABCgICAgOAAIQsCQAJAAkACQAJAAkACQAJAAkACQCABQiCIpyIGQQFqDggDBQUAAQUFCQILIAAgAkGiwgAQtQEMBgsgACACQczoABC1AQwFCyAGQXlGDQEMAgsgAachBgwCCyABpyEGIAACfwJAIAJBAEgEQCACQf\u002F\u002F\u002F\u002F8HcSIFIAYpAgQiC6dB\u002F\u002F\u002F\u002F\u002FwdxTw0DIAZBEGohAiALQoCAgIAIg1ANASACIAVBAXRqLwEADAILIAJBMEcNAiAGKQIEQv\u002F\u002F\u002F\u002F8HgyELDAYLIAIgBWotAAALQf\u002F\u002FA3EQlAMhCwwECyAAIAEQiwSnIgZFDQILIAJB\u002F\u002F\u002F\u002F\u002FwdxIQkDQCAGKAIQIgVBMGohCiAFIAUoAhggAnFBf3NBAnRqKAIAIQUCQANAIAVFDQEgAiAKIAVBAWtBA3QiBWoiCCgCBEcEQCAIKAIAQf\u002F\u002F\u002Fx9xIQUMAQsLIAYoAhQgBWohBQJAAkACQAJAIAgoAgBBHnZBAWsOAwABAgMLIAUoAgAiAkUNBiACIAIoAgBBAWo2AgAgACACrUKAgICAcIQgA0EAQQAQNiELDAcLIAUoAgAoAhApAwAiC0KAgICAcINCgICAgMAAUQRAIAAgAhDRAQwFCyALQiCIp0F1SQ0GIAunIgAgACgCAEEBajYCAAwGCyAAIAYgAiAFIAgQwQJFDQIMAwsgBSkDACILQiCIp0F1SQ0EIAunIgAgACgCAEEBajYCAAwECwJAIAYtAAUiBUEEcUUNACAFQQhxBEAgAkEASARAIAYoAiggCUsEQCAAIAatQoCAgIBwhCAJEKYBIQsMBwsgBi8BBkEga0H\u002F\u002FwNxQfX\u002FA08NBQwCCyAGLwEGQRVrQf\u002F\u002FA3FBCksNASAAIAIQkwMiBUUNAUKAgICA4ABCgICAgDAgBUEASBshCwwFCyAAKAIQKAJEIAYvAQZBGGxqKAIUIgVFDQAgBSgCFCIIBEAgBiAGKAIAQQFqNgIAIAAgBq1CgICAgHCEIgEgAiADIAgRLQAhCyAAIAEQDAwFCyAFKAIAIgVFDQAgBiAGKAIAQQFqNgIAIAAgByAGrUKAgICAcIQiASACIAURFwAhBSAAIAEQDCAFQQBIDQIgBUUNACAHLQAAQRBxBEAgACAHKQMYEAwgACAHKQMQIANBAEEAEDYhCwwFCyAHKQMIIQsMBAsgBigCECgCLCIGDQALQoCAgIAwIQsgBEUNAiAAIAIQwAILQoCAgIDgACELDAELQoCAgIAwIQsLIAdBIGokACALCw0AIAAgASACQQQQyAILXwECfyMAQRBrIgQkACAAKAIAIQMgBCACNgIMIANBAyABIAJBABDkBSADIAMoAhApA4ABIAAoAgwgACgCCCAAKAJAIgAEfyAAKAJoQQBHQQF0BUEACxC0AiAEQRBqJAALDwAgACgCQEGAAmogARAmCysBAX8gACABIAIgA0KAgICAMEKAgICAMCAEQYDOAHIQaiEFIAAgAxAMIAULKwAgAUHYAU4EQCAAKAIQKAI4IAFBAnRqKAIAIgAgACgCAEEBajYCAAsgAQsPACAAIAAoAgAgARAWEDgLSgAgABDoAkUEQEF\u002FDwsgAkEASARAIAAQLSECCyAAIAFB\u002FwFxEA0gACACEDggACgCQCgCpAIgAkEUbGoiACAAKAIAQQFqNgIAIAILLQEBfwJAIAAoAgAiAUUNACAAKAIQIgBFDQAgASgCACAAQQAgASgCBBEBABoLCzEAIAFBAE4EQCAAQbYBEA0gACABEDggACgCQCIAKAKkAiABQRRsaiAAKAKEAjYCBAsLJwEBfyMAQRBrIgIkACACIAE2AgwgACACQQxqQQQQchogAkEQaiQACxcAIAAgASACQoCAgIAwIAMgBEECENIBCxgBAX4gASkDACEDIAEgAjcDACAAIAMQDAszAQF\u002FIAIEQCAAIQMDQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQQFrIgINAAsLIAALwQUCAn4GfyMAQeAAayIJJAAgA0EAIANBAEobIQsDQCAKIAtHBEAgACACIApBBHRqIgMoAgAQsAUhBiADLQAEIQdCgICAgDAhBAJAAkACQAJAAkACQAJAAkACQAJAIAMtAAUOCgECAgUHAwQIBQAGCyAAIAMoAggQsAUhCAJ+AkACQAJAIAMoAgxBAWoOAwIAAQkLIAAgACkDwAEiBCAIIARBABARDAILIAAgACgCKCkDECIEIAggBEEAEBEMAQsgACABIAggAUEAEBELIQQgACAIEBAgBkHLAUYEQEEBIQcMCAsgBkHUAUcNB0EAIQcMBwsCQCAGQcsBRgRAQQEhBwwBCyAGQdQBRw0AQQAhBwsgACABIAZBAiADIAcQgAMaDAcLIAAgASAGQoCAgIAwIAMoAggEfiAJIAMoAgA2AhAgCUEgaiIIQcAAQeEqIAlBEGoQSBogACADKAIIIAhBAEEKQQggAy0ABUECRhsgAy4BBhCCAQVCgICAgDALIgQgAygCDAR+IAkgAygCADYCACAJQSBqIghBwABB2iogCRBIGiAAIAMoAgwgCEEBQQtBCSADLQAFQQJGGyADLgEGEIIBBUKAgICAMAsiBSAHQYA6chBqGiAAIAQQDCAAIAUQDAwGCyADKQMIIgRCgICAgAh8Qv\u002F\u002F\u002F\u002F8PWARAIARC\u002F\u002F\u002F\u002F\u002Fw+DIQQMBQtCgICAgMB+IAS5vSIEQoCAgIDAgYD8\u002FwB9IARC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbIQQMBAtCgICAgMB+IAMpAwgiBEKAgICAwIGA\u002FP8AfSAEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGyEEDAMLIAAgASAGQQIgAyAHEIADGgwDCxABAAsgAzUCCCEECyAAIAEgBiAEIAcQFRoLIAAgBhAQIApBAWohCgwBCwsgCUHgAGokAAuMAgICfgF\u002FAkACQAJAAkACQAJAAkACQAJAQQcgAUIgiKciBCAEQQdrQW5JG0EKag4SAgAGBAAAAAAAAQMFAAAAAAEDAAsgAEGbHkEAEBJCgICAgOAADwsgBEF1SQ0GIAGnIgAgACgCAEEBajYCAAwGCyAAQSEQhgEhAgwECyAAQQQQhgEhAgwDCyAAIABBBRCGASICQTAgAacpAgRC\u002F\u002F\u002F\u002F\u002FweDQQAQFRoMAgsgAEEGEIYBIQIMAQsgAEEHEIYBIQILQoCAgIDgACEDIAJCgICAgHCDQoCAgIDgAFIEfiAEQXVPBEAgAaciBCAEKAIAQQFqNgIACyAAIAIgARC9ASACBUKAgICA4AALDwsgAQsyAQF\u002FAkAgAUIgiKdBdUkNACABpyICIAIoAgAiAkEBazYCACACQQFKDQAgACABEJcFCwsLACAAQeweQQAQEgujBAELfyAAKAIAIQUjAEEQayIIIAI2AgxBfyEJAkADQAJAIAggAiIDQQRqIgI2AgwgAygCACIHQX9GDQAgACgCBCEKA0AgASIEIApODQMgBCAEIAVqIgwtAAAiBkECdEHgrgFqIg0tAABqIgEgCkoNAyAGQcYBRgRAIAwoAAEhCQwBCwsgBiAHRwRAIAdBGHYgBkYgBiAHQRB2Qf8BcUZyIAYgB0H\u002FAXFGckUgBiAHQQh2Qf8BcUdxIAZFIAdBgAJJcnINAyAAIAY2AhALIARBAWohBAJAAkACQAJAAkACQAJAAkAgDS0AA0EFaw4YAAkACQkBCQkBCQkBAQECAgICBAUGBwkDCQsgBCAFai0AACEEIAggA0EIaiICNgIMIAMoAgQiA0F\u002FRgRAIAAgBDYCFAwJCyADIARGDQgMCQsgBCAFai8AACEEIAggA0EIaiICNgIMIAMoAgQiA0F\u002FRgRAIAAgBDYCFAwICyADIARGDQcMCAsgACAEIAVqKAAANgIYDAYLIAAgBCAFaiIDKAAANgIYIAAgAy8ABDYCHAwFCyAAIAQgBWooAAA2AiAMBAsgACAEIAVqIgMoAAA2AiAgACADLQAENgIcDAMLIAAgBCAFaiIDKAAANgIgIAAgAy8ABDYCHAwCCyAAIAQgBWoiAygAADYCICAAIAMoAAQ2AhggACADLQAINgIcDAELCyAAIAk2AgwgACABNgIIQQEhCwsgCwskAQF\u002FIAAoAhAiAkEQaiABIAIoAgARAwAiAUUEQCAAEHALIAELCwAgACABQQAQjQQLJwEBfyMAQRBrIgIkACACIAE7AQ4gACACQQ5qQQIQchogAkEQaiQAC9QBAgR\u002FAn5BfyECAkACQAJAAkACQAJAAkAgAUIgiKciA0EKag4RAwUFAgUFBQUFBAABAQEFBQYFCyABp0EARw8LIAGnDwsgAacpAgQhByAAIAEQDCAHQv\u002F\u002F\u002F\u002F8Hg0IAUg8LIAGnKAIMIQQgACABEAwgBEH\u002F\u002F\u002F\u002F\u002FB2pBfkkPCyABpywABSEFIAAgARAMIAVBAE4PCyADQQdrQW1NBEAgAUKAgICAwIGA\u002FP8AfEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0IBfUKAgICAgICA+P8AVA8LIAAgARAMQQEhAgsgAgs\u002FAQJ\u002FIwBBEGsiAiQAAn8gASAAKAIQRwRAIAIgATYCACAAQcyQASACEBNBfwwBCyAAEA8LIQMgAkEQaiQAIAMLCwAgACABQQEQ6QULGQAgAEEAEFAaIABCgICAgPD\u002F\u002F\u002F\u002F\u002FADcCBAvDCgIFfxF+IwBB4ABrIgUkACAEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002Fz+DIQwgAiAEhUKAgICAgICAgIB\u002FgyEKIAJC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP4MiDUIgiCEOIARCMIinQf\u002F\u002FAXEhBwJAAkAgAkIwiKdB\u002F\u002F8BcSIJQf\u002F\u002FAWtBgoB+TwRAIAdB\u002F\u002F8Ba0GBgH5LDQELIAFQIAJC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAIMiC0KAgICAgIDA\u002F\u002F8AVCALQoCAgICAgMD\u002F\u002FwBRG0UEQCACQoCAgICAgCCEIQoMAgsgA1AgBEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8AgyICQoCAgICAgMD\u002F\u002FwBUIAJCgICAgICAwP\u002F\u002FAFEbRQRAIARCgICAgICAIIQhCiADIQEMAgsgASALQoCAgICAgMD\u002F\u002FwCFhFAEQCACIAOEUARAQoCAgICAgOD\u002F\u002FwAhCkIAIQEMAwsgCkKAgICAgIDA\u002F\u002F8AhCEKQgAhAQwCCyADIAJCgICAgICAwP\u002F\u002FAIWEUARAIAEgC4QhGUIAIQEgGVAEQEKAgICAgIDg\u002F\u002F8AIQoMAwsgCkKAgICAgIDA\u002F\u002F8AhCEKDAILIAEgC4RQBEBCACEBDAILIAIgA4RQBEBCACEBDAILIAtC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP1gEQCAFQdAAaiABIA0gASANIA1QIgYbeSAGQQZ0rXynIgZBD2sQYkEQIAZrIQYgBSkDWCINQiCIIQ4gBSkDUCEBCyACQv\u002F\u002F\u002F\u002F\u002F\u002F\u002Fz9WDQAgBUFAayADIAwgAyAMIAxQIggbeSAIQQZ0rXynIghBD2sQYiAGIAhrQRBqIQYgBSkDSCEMIAUpA0AhAwsgA0IPhiILQoCA\u002Fv8PgyICIAFCIIgiBH4iECALQiCIIhMgAUL\u002F\u002F\u002F\u002F\u002FD4MiAX58Ig9CIIYiESABIAJ+fCILIBFUrSACIA1C\u002F\u002F\u002F\u002F\u002Fw+DIg1+IhUgBCATfnwiESAMQg+GIhIgA0IxiIRC\u002F\u002F\u002F\u002F\u002Fw+DIgMgAX58IhQgDyAQVK1CIIYgD0IgiIR8Ig8gAiAOQoCABIQiDH4iFiANIBN+fCIOIBJCIIhCgICAgAiEIgIgAX58IhAgAyAEfnwiEkIghnwiF3whASAHIAlqIAZqQf\u002F\u002FAGshBgJAIAIgBH4iGCAMIBN+fCIEIBhUrSAEIAQgAyANfnwiBFatfCACIAx+fCAEIAQgESAVVK0gESAUVq18fCIEVq18IAMgDH4iAyACIA1+fCICIANUrUIghiACQiCIhHwgBCACQiCGfCICIARUrXwgAiACIBAgElatIA4gFlStIA4gEFatfHxCIIYgEkIgiIR8IgJWrXwgAiACIA8gFFStIA8gF1atfHwiAlatfCIEQoCAgICAgMAAg1BFBEAgBkEBaiEGDAELIAtCP4ghGiAEQgGGIAJCP4iEIQQgAkIBhiABQj+IhCECIAtCAYYhCyAaIAFCAYaEIQELIAZB\u002F\u002F8BTgRAIApCgICAgICAwP\u002F\u002FAIQhCkIAIQEMAQsCfiAGQQBMBEBBASAGayIHQf8ATQRAIAVBMGogCyABIAZB\u002FwBqIgYQYiAFQSBqIAIgBCAGEGIgBUEQaiALIAEgBxCNAiAFIAIgBCAHEI0CIAUpAzAgBSkDOIRCAFKtIAUpAyAgBSkDEISEIQsgBSkDKCAFKQMYhCEBIAUpAwAhAiAFKQMIDAILQgAhAQwCCyAEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002Fz+DIAatQjCGhAsgCoQhCiALUCABQgBZIAFCgICAgICAgICAf1EbRQRAIAogAkIBfCIBUK18IQoMAQsgCyABQoCAgICAgICAgH+FhFBFBEAgAiEBDAELIAogAiACQgGDfCIBIAJUrXwhCgsgACABNwMAIAAgCjcDCCAFQeAAaiQACykBAX8gAgRAIAAhAwNAIAMgAToAACADQQFqIQMgAkEBayICDQALCyAACwwAIAAoAkBBfxDRAwtqAQJ\u002FAkAgACgC2AIiA0UNACAAKALgAiIEIAAoAtwCTg0AIAAoAugCIAFLDQAgACgC5AIgAkYNACADIARBA3RqIgMgAjYCBCADIAE2AgAgACABNgLoAiAAIARBAWo2AuACIAAgAjYC5AILCzUAIAAgAkEwIAJBABARIgJCgICAgHCDQoCAgIDgAFEEQCABQgA3AwBBfw8LIAAgASACEKEBC3kCAn8BfiABQiCIpyIDIAGnIgJBAEhyRQRAIAJBgICAgHhyDwsgA0F4RgRAIAAgACgCECACEMYCEBYPCyAAIAEQiQQiAUKAgICAcIMiBEKAgICA4ABRBEBBAA8LIARCgICAgIB\u002FUQRAIAAgARCIAg8LIAAgAacQkQQLGQAgAQRAIAAgAUEQa61CgICAgJB\u002FhBAMCwupAQEEfyAAQQA2AgQgAVAEQCAAQYCAgIB4NgIIIABBABBQGkEADwsCQCABQv\u002F\u002F\u002F\u002F8PWARAIABBARBQDQEgACgCECABIAGnZyICrYY+AgAgAEEgIAJrNgIIQQAPCyAAQQIQUA0AIAAoAhAiAyABpyIEIAFCIIinIgVnIgJ0NgIAIAMgBSACdCAEQQF2IAJBf3N2cjYCBCAAQcAAIAJrNgIIQQAPCyAAECpBIAsQACAAIAAoAigpAwhBARBHCxQBAn4gACABECUhAyAAIAEQDCADC0sBAn8gAUKAgICAcFoEfyABpyIDLwEGIgJBDUYEQEEBDwsgAkEsRgRAIAMoAiAtABAPCyAAKAIQKAJEIAJBGGxqKAIQQQBHBUEACwsjAQF+IAAgASACQoCAgIAwIAMgBEECENIBIQUgACABEAwgBQuDAgIDfwF+QoCAgIDgACEEIAAoAhQEfkKAgICA4AAFIAAoAgQhASAAKAIIIgJFBEAgACgCACgCECICQRBqIAEgAigCBBEAACAAQQA2AgQgACgCAEEvECkPCyAAKAIMIAJKBEAgACgCACgCECIDQRBqIAEgAiAAKAIQIgF0IAFrQRFqIAMoAggRAQAiAUUEQCAAKAIEIQELIAAgATYCBAsgASAAKAIQIgIEfyACBSABIAAoAghqQQA6ABAgACgCEAtBH3StIAEpAgRC\u002F\u002F\u002F\u002F\u002F3eDhCIENwIEIAEgBEKAgICAeIMgADUCCEL\u002F\u002F\u002F\u002F\u002FB4OENwIEIABBADYCBCABrUKAgICAkH+ECwsPACAAKAJAQYACaiABEBsLEwAgACABIAIgAyABQYCAARDQAQsNACAAIAEgAkEGEMgCCx8BAX8gACgCJCIBIAEoAgBBAWo2AgAgACABQQIQ5wULZwECfwJ\u002FIAAoAggiAiAAKAIMTgRAQX8gACACQQFqIAEQxAINARoLIAAgACgCCCIDQQFqNgIIIAAoAgRBEGohAgJAIAAoAhAEQCACIANBAXRqIAE7AQAMAQsgAiADaiABOgAAC0EACwt6AQN\u002FAkACQCAAIgFBA3FFDQAgAS0AAEUEQEEADwsDQCABQQFqIgFBA3FFDQEgAS0AAA0ACwwBCwNAIAEiAkEEaiEBIAIoAgAiA0F\u002FcyADQYGChAhrcUGAgYKEeHFFDQALA0AgAiIBQQFqIQIgAS0AAA0ACwsgASAAawsNACAAIAEgAkEAEJkDCywBAX8jAEEQayIDJAAgAyACNgIMIABB3ABqQYABIAEgAhDJAhogA0EQaiQAC+gDAQl\u002FIwBBIGsiBSQAIAEgAiABKAIMIAIoAgxJIgYbIgcoAgQgAiABIAYbIggoAgRzIQoCQAJAIAcoAgwiAkUEQAJAIAgoAggiAUH\u002F\u002F\u002F\u002F\u002FB0cEQCAHKAIIIgJB\u002F\u002F\u002F\u002F\u002FwdHDQELIAAQKkEAIQIMAwsgAUH+\u002F\u002F\u002F\u002FB0cgAkH+\u002F\u002F\u002F\u002FB0dxRQRAAkAgAUH+\u002F\u002F\u002F\u002FB0YEQCACQYCAgIB4Rg0BDAQLIAFBgICAgHhHIAJB\u002Fv\u002F\u002F\u002FwdHcg0DCyAAECpBASECDAMLIAAgChCAAUEAIQIMAgsgCCgCDCILIQkgAiEGIARBB3FBBkYEQCACIANBIWpBBXYiASABIAJKGyEGIAsgASABIAtKGyEJCwJ\u002FAkAgACAIRg0AIAAgB0YNACAADAELIAAoAgAhASAFQgA3AhggBUKAgICAgICAgIB\u002FNwIQIAUgATYCDCAAIQwgBUEMagshASAHKAIQIQAgCCgCECENAn8gASAGIAlqEFAEQCABECpBIAwBCyABKAIQIA0gC0ECdGogCUECdGsgCSAAIAJBAnRqIAZBAnRrIAYQ8AEgASAKNgIEIAEgBygCCCAIKAIIajYCCCABIAMgBBCbAgshAiABIAVBDGoiAEcNASAMIAAQvwQMAQsgACAKEH9BACECCyAFQSBqJAAgAgsKACAAIAFBARBHCygBAX8gAkIgiKdBdU8EQCACpyIDIAMoAgBBAWo2AgALIAAgASACEG0LlQUCA38BfgJAAkACQAJAAkACQANAIAIoAhAiBEEwaiEFIAQgBCgCGCADcUF\u002Fc0ECdGooAgAhBANAIARFDQQgAyAFIARBAWtBA3QiBmoiBCgCBEcEQCAEKAIAQf\u002F\u002F\u002Fx9xIQQMAQsLIAIoAhQgBmohBSAEKAIAIQYgAUUNASABQoCAgIAwNwMYIAFCgICAgDA3AxAgAUKAgICAMDcDCCABIAZBGnZBB3EiBjYCAAJAAkACQAJAIAQoAgBBHnZBAWsOAwABAgMLIAEgBkEQcjYCACAFKAIAIgAEQCAAIAAoAgBBAWo2AgAgASAArUKAgICAcIQ3AxALIAUoAgQiAEUNCSAAIAAoAgBBAWo2AgAgASAArUKAgICAcIQ3AxhBAQ8LIAUoAgAoAhApAwAiB0KAgICAcINCgICAgMAAUQ0EIAdCIIinQXVPBEAgB6ciACAAKAIAQQFqNgIACyABIAc3AwgMCAsgACACIAMgBSAEEMECRQ0BDAYLCyAFKQMAIgdCIIinQXVPBEAgB6ciACAAKAIAQQFqNgIACyABIAc3AwgMBQtBASEEIAZBgICAgHxxQYCAgIB4Rw0CIAUoAgAoAhA1AgRCIIZCgICAgMAAUg0CCyAAIAMQ0QEMAgtBACEEIAItAAUiBUEEcUUNACAFQQhxBEAgA0EATg0BIANB\u002F\u002F\u002F\u002F\u002FwdxIgMgAigCKCIFSSEEIAFFIAMgBU9yDQEgAUKAgICAMDcDGCABQoCAgIAwNwMQIAFBBzYCACABIAAgAq1CgICAgHCEIAMQpgE3AwgMAwsgACgCECgCRCACLwEGQRhsaigCFCIFRQ0AIAUoAgAiBUUNACAAIAEgAq1CgICAgHCEIAMgBREXACEECyAEDwtBfw8LQQELDQAgACABIAJBARDIAgsmAQF\u002FAkAgACgCEEGDf0cNACAAKAIgIAFHDQAgACgCJEUhAgsgAgsdACAAIAEpAxAQDCAAIAEpAxgQDCAAIAEpAwgQDAumAQEDfyAAKAIQIgMoAuABIAGnQQAgAUL\u002F\u002F\u002F\u002F\u002Fb1YbIgRBgYDc8XlsQf\u002F\u002Fo44GayIFQSAgAygC1AFrdkECdGohAwJAAkADQCADKAIAIgMEQAJAIAMoAhQgBUcNACADKAIsIARHDQAgAygCIEUNAwsgA0EoaiEDDAELCyAAIARBAhDyBCIDDQFCgICAgOAADwsgAyADKAIAQQFqNgIACyAAIAMgAhDnBQsqAQJ\u002FIwBBEGsiBCQAIAQgAzYCDCAAIAEgAiADEMkCIQUgBEEQaiQAIAULSAAgACABRwRAIAAgASgCDBBQBEAgABAqQSAPCyAAIAEoAgQ2AgQgACABKAIINgIIIAAoAhAgASgCECABKAIMQQJ0EB4aC0EACywAIAFCgICAgGCDQoCAgIAgUQRAIABB6z9BABASQoCAgIDgAA8LIAAgARAlC6sCAQR\u002FAkAgAiADTw0AIAMgAmshBSABQRBqIQQgAS0AB0GAAXEEQEEAIQMgBUEAIAVBAEobIQYgBCACQQF0aiEBQQAhAgNAIAIgBkZFBEAgAyABIAJBAXRqLwEAciEDIAJBAWohAgwBCwsCQCAAKAIIIAVqIgIgACgCDCIHSgRAQX8hBCAAIAIgAxDEAkUNAQwDCyAAKAIQIANBgAJIcg0AQX8hBCAAIAcQ4AMNAgsCQCAAKAIQRQRAQQAhAgNAIAIgBkYNAiAAKAIEIAAoAgggAmpqIAEgAkEBdGotAAA6ABAgAkEBaiECDAALAAsgACgCBCAAKAIIQQF0akEQaiABIAVBAXQQHhoLIAAgACgCCCAFajYCCEEADwsgACACIARqIAUQiwIhBAsgBAuJAQECfyABKAJ8IgRB\u002F\u002F8DTgRAIABBlyhBABA6QX8PC0F\u002FIQMgACABQfQAakEQIAFB+ABqIARBAWoQZAR\u002FQX8FIAEgASgCfCIDQQFqNgJ8IAEoAnQgA0EEdGoiA0IANwIAIANCADcCCCADIAAgAhAWNgIAIAMgAygCDEGAfnI2AgwgASgCfEEBawsLRwEBfyABQiCIp0F1TwRAIAGnIgMgAygCAEEBajYCAAsgAkIgiKdBdU8EQCACpyIDIAMoAgBBAWo2AgALIAAgASACQQEQtAEL+wQBAn8CQAJAIAFCgICAgHBUIAJC\u002F\u002F\u002F\u002F\u002Fw9Wcg0AIAKnIQMCQAJAAkACQAJAAkACQAJAAkACQAJAIAGnIgQvAQZBAmsOHgALCwsLCwALCwsLCwsLCwsLCwsCAQIDBAUGBwgJCgsLIAQoAiggA00NCiAEKAIkIANBA3RqKQMAIgFCIIinQXVJDQsgAaciACAAKAIAQQFqNgIAIAEPCyAEKAIoIANNDQkgBCgCJCADajAAAEL\u002F\u002F\u002F\u002F\u002FD4MPCyAEKAIoIANNDQggBCgCJCADajEAAA8LIAQoAiggA00NByAEKAIkIANBAXRqMgEAQv\u002F\u002F\u002F\u002F8Pgw8LIAQoAiggA00NBiAEKAIkIANBAXRqMwEADwsgBCgCKCADTQ0FIAQoAiQgA0ECdGo1AgAPCyAEKAIoIANNDQQgBCgCJCADQQJ0aigCACIAQQBOBEAgAK0PC0KAgICAwH4gALi9IgFCgICAgMCBgPz\u002FAH0gAUKAgICAgICA+P8AVhsPCyAEKAIoIANNDQMgACAEKAIkIANBA3RqKQMAEL8CDwsgBCgCKCADTQ0CIAAgBCgCJCADQQN0aikDABCIBA8LIAQoAiggA00NAUKAgICAwH4gBCgCJCADQQJ0aioCALu9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsPCyAEKAIoIANNDQBCgICAgMB+IAQoAiQgA0EDdGopAwAiAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGw8LIAAgAhAwIQMgACACEAwgA0UEQEKAgICA4AAPCyAAIAEgAyABQQAQESEBIAAgAxAQCyABC4IDAgR\u002FAn4CQCAAKQNwIgVQRSAFIAApA3ggACgCBCIBIAAoAiwiAmusfCIGV3FFBEAjAEEQayICJABBfyEBAkACfyAAIAAoAkgiA0EBayADcjYCSCAAKAIUIAAoAhxHBEAgAEEAQQAgACgCJBEBABoLIABBADYCHCAAQgA3AxAgACgCACIDQQRxBEAgACADQSByNgIAQX8MAQsgACAAKAIsIAAoAjBqIgQ2AgggACAENgIEIANBG3RBH3ULDQAgACACQQ9qQQEgACgCIBEBAEEBRw0AIAItAA8hAQsgAkEQaiQAIAEiA0EATg0BIAAoAgQhASAAKAIsIQILIABCfzcDcCAAIAE2AmggACAGIAIgAWusfDcDeEF\u002FDwsgBkIBfCEGIAAoAgQhASAAKAIIIQICQCAAKQNwIgVQDQAgBSAGfSIFIAIgAWusWQ0AIAEgBadqIQILIAAgAjYCaCAAIAYgACgCLCIAIAFrrHw3A3ggACABTwRAIAFBAWsgAzoAAAsgAwtPAQF\u002FAn9BACAAKAIMIAFGDQAaIAAoAgAiAigCACAAKAIQIAFBAnQgAigCBBEBACECIAEEQEF\u002FIAJFDQEaCyAAIAE2AgwgACACNgIQQQALC9EBAQZ\u002FIABBAWohBQJAAkAgAC0AACIDwCIHQQBOBEAgBSEBDAELQX8hBCAHQUBrQf8BcSIDQT1LDQEgA0ECdEGU9gFqKAIAIgYgAU4NASAGQQFrIQggACAGakEBaiEBIAcgBkHz9QFqLQAAcSEDQQAhAANAIAAgBkcEQCAFLAAAIgRBv39KBEBBfw8FIARBP3EgA0EGdHIhAyAAQQFqIQAgBUEBaiEFDAILAAsLQX8hBCADIAhBAnRBgPYBaigCAEkNAQsgAiABNgIAIAMhBAsgBAsLACAAIAFBABDpBQsJACAAQQEQrQELugEBAn8CQAJAIAJC\u002F\u002F\u002F\u002F\u002FwdYBEAgACABIAKnQYCAgIB4chBuIgRBAEwNASAAIAEgAhBOIgJCgICAgHCDQoCAgIDgAFINAkF\u002FIQQMAgsgACACEIsDIgVFBEBBfyEEDAELAkAgACABIAUQbiIEQQBMBEBCgICAgDAhAgwBCyAAIAEgBSABQQAQESICQoCAgIBwg0KAgICA4ABSDQBBfyEECyAAIAUQEAwBC0KAgICAMCECCyADIAI3AwAgBAsbAQF\u002FIAAgARA1BH9BAAUgAEH7OUEAEBJBfwsLYwEBfyACQiCIp0F1TwRAIAKnIgUgBSgCAEEBajYCAAsCQCAAIAEgAhDTBSIFDQACQCABKAIAIgBBAEgEQCAAIARqIgBBACAAQQBKGyEDDAELIAAgA0wNAQsgASADNgIACyAFCxgAIAAtAABBIHFFBEAgASACIAAQlwQaCwsPACAAKAJAQYACaiABEA4LrgIAAkACQAJAAkAgAkEDTARAAkACQAJAAkACQAJAAkACQAJAIAFB2ABrDgkAAQIDBAUGBwgKCyAAIAJBO2tB\u002FwFxEA4PCyAAIAJBN2tB\u002FwFxEA4PCyAAIAJBM2tB\u002FwFxEA4PCyAAIAJBL2tB\u002FwFxEA4PCyAAIAJBK2tB\u002FwFxEA4PCyAAIAJBJ2tB\u002FwFxEA4PCyAAIAJBI2tB\u002FwFxEA4PCyAAIAJBH2tB\u002FwFxEA4PCyAAIAJBG2tB\u002FwFxEA4PCyACQf8BSw0BAkACQAJAIAFB2ABrDgMAAQIECyAAQcIBEA4MBQsgAEHDARAODAQLIABBxAEQDgwDCyABQSJGDQELIAAgAUH\u002FAXEQDiAAIAJB\u002F\u002F8DcRAmDwsgACACQRJrQf8BcRAODwsgACACQf8BcRAOCzgBAX8CQAJAIAFCgICAgHBUDQAgAaciAy8BBiACRw0AIAMoAiAiAw0BCyAAIAIQigNBACEDCyADC0EBAX8gAQRAA0AgAiADRkUEQCAAIAEgA0EDdGooAgQQECADQQFqIQMMAQsLIAAoAhAiAEEQaiABIAAoAgQRAAALCywBAX8gACgCECICQRBqIAEgAigCABEDACICBEAgAkEAIAEQLA8LIAAQcCACC20BAX8jAEGAAmsiBSQAIARBgMAEcSACIANMckUEQCAFIAFB\u002FwFxIAIgA2siA0GAAiADQYACSSIBGxAsGiABRQRAA0AgACAFQYACEFcgA0GAAmsiA0H\u002FAUsNAAsLIAAgBSADEFcLIAVBgAJqJAALvgECAn4BfwJAAkAgAUKAgICAcINCgICAgDBRBEAgACgCKCACQQN0aikDACIDQiCIp0F0Sw0BDAILIAAgAUE8IAFBABARIgNCgICAgHCDQoCAgIDgAFEEQCADDwsgA0L\u002F\u002F\u002F\u002F\u002Fb1YNASAAIAMQDCAAIAEQ\u002FAIiBUUEQEKAgICA4AAPCyAFKAIoIAJBA3RqKQMAIgNCIIinQXVJDQELIAOnIgUgBSgCAEEBajYCAAsgACADIAIQRyEEIAAgAxAMIAQLDAAgAEHZ6gBBABASCw0AIAAgASABED0Q6gELdQEBfiAAIAEgBH4gAiADfnwgA0IgiCICIAFCIIgiBH58IANC\u002F\u002F\u002F\u002F\u002Fw+DIgMgAUL\u002F\u002F\u002F\u002F\u002FD4MiAX4iBUIgiCADIAR+fCIDQiCIfCABIAJ+IANC\u002F\u002F\u002F\u002F\u002Fw+DfCIBQiCIfDcDCCAAIAVC\u002F\u002F\u002F\u002F\u002Fw+DIAFCIIaENwMAC1ABAX4CQCADQcAAcQRAIAEgA0FAaq2GIQJCACEBDAELIANFDQAgAiADrSIEhiABQcAAIANrrYiEIQIgASAEhiEBCyAAIAE3AwAgACACNwMIC2QAAkACQCABQQBIDQAgACgCrAIgAUwNACAAKAKkAiABQRRsaiIAIAAoAgAgAmoiADYCACAAQQBIDQEgAA8LQdwXQajsAEHzpwFBr8MAEAAAC0HphQFBqOwAQfanAUGvwwAQAAALcAECfyAEIAMoAgBKBH8jAEEQayIFJAAgACABKAIAIAQgAygCAEEDbEECbSIAIAAgBEgbIgAgAmwgBUEMahCnASIEBH8gAyAFKAIMIAJuIABqNgIAIAEgBDYCAEEABUF\u002FCyEGIAVBEGokACAGBUEACwsLACAAIAFBARDaBQtjAQF\u002FIAJCIIinQXVPBEAgAqciBiAGKAIAQQFqNgIACwJAIAAgASACENIFIgANACABKQMAIgJCAFMEQCABIAIgBXwiAjcDAAsgAiADWQRAIAQiAyACWQ0BCyABIAM3AwALIAALYAAgACABIAJCgICAgAh8Qv\u002F\u002F\u002F\u002F8PWAR+IAJC\u002F\u002F\u002F\u002F\u002Fw+DBUKAgICAwH4gArm9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLIANBh4ABEJQBC0MBA38CQCACRQ0AA0AgAC0AACIEIAEtAAAiBUYEQCABQQFqIQEgAEEBaiEAIAJBAWsiAg0BDAILCyAEIAVrIQMLIAMLaQECfwJ\u002FIAAoAgAiA0ECaiIEIAAoAgRKBEBBfyAAIAQQ0QINARogACgCACEDCyAAIANBAWo2AgAgACgCCCIEIANBAnRqIAE2AgAgACAAKAIAIgBBAWo2AgAgBCAAQQJ0aiACNgIAQQALC60QAgx\u002FAX4jAEEQayIKJAACQAJAIAFC\u002F\u002F\u002F\u002F\u002F29YBEAgABAiDAELIAZBgDBxIg5FIAYgBkEIdiIQcSAQQX9zckEHcSIRQQdGcSESIAZBgMAAcSEMIAJB\u002F\u002F\u002F\u002F\u002FwdxIQ0gAachCQJAAkACQAJAAkADQCAJKAIQIgdBMGohCCAHIAcoAhggAnFBf3NBAnRqKAIAIQcCQANAIAdFDQEgAiAIIAdBAWtBA3QiC2oiBygCBEcEQCAHKAIAQf\u002F\u002F\u002Fx9xIQcMAQsLIAkoAhQgC2ohCCAKIAc2AgwgDEUgBygCACILQYCAgIACcUVyRQRAIANCIIinQXVPBEAgA6ciByAHKAIAQQFqNgIACyAAIApBCGogA0EAEL4CDQgCfiAKKAIIIgdBAE4EQCAHrQwBC0KAgICAwH4gB7i9IgNCgICAgMCBgPz\u002FAH0gA0KAgICAgICA+P8AVhsLIQMgCSgCECIHQTBqIQggByAHKAIYIAJxQX9zQQJ0aigCACEHAkADQCAHBEAgCCAHQQFrQQN0IgtqIgcoAgQgAkYNAiAHKAIAQf\u002F\u002F\u002Fx9xIQcMAQsLQdj1AEGo7ABB58YAQasLEAAACyAJKAIUIAtqIQggCiAHNgIMIAcoAgAhCwsgC0EadiIPIAYQjwNFDQYgD0EwcSIPQTBGBEAgACAJIAIgCCAHEMECRQ0CDAgLIAZBgPQAcUUNBSAOBEAgBKciDUEAIAAgBBA1GyECIAWnIg5BACAAIAUQNRshDAJAIAtBgICAgHxxQYCAgIAERwRAQX8hByAAIAkgCkEMahDTAQ0LAkAgCigCDCgCAEGAgICAfHFBgICAgHhGBEAgACgCECAIKAIAEOUBDAELIAAgCCkDABAMCyAKKAIMIgcgBygCAEH\u002F\u002F\u002F+\u002FAXFBgICAgARyNgIAIAhCADcDAAwBCyALQYCAgCBxDQAgBkGAEHEEQCACIAgoAgBHDQkLIAZBgCBxRQ0AIAwgCCgCBEcNCAsgBkGAEHEEQCAIKAIAIgcEQCAAIAetQoCAgIBwhBAMCyACRSAEQiCIp0F1SXJFBEAgDSANKAIAQQFqNgIACyAIIAI2AgALIAZBgCBxRQ0GIAgoAgQiAgRAIAAgAq1CgICAgHCEEAwLIAxFIAVCIIinQXVJckUEQCAOIA4oAgBBAWo2AgALIAggDDYCBAwGCyAPQSBGDQQgD0EQRgRAQX8hByAAIAkgCkEMahDTAQ0JIAgoAgAiAgRAIAAgAq1CgICAgHCEEAwLIAgoAgQiAgRAIAAgAq1CgICAgHCEEAwLIAooAgwiAiACKAIAQf\u002F\u002F\u002F78DcTYCACAIQoCAgIAwNwMAIAooAgwoAgAhCwwFCyAMRSALQYCAgOAAcXINBEEBIQcgACADIAgpAwAQTUUNBgwICyAKQQA2AgwgCS0ABUEIcUUNAiAJLwEGIgdBAkcNASACQQBODQIgDSAJKAIoTw0CIBJFBEAgACAJEI4DRQ0BDAcLC0EBIQcgDEUNBiAJKAIkIA1BA3RqIQIgA0IgiKdBdU8EQCADpyIGIAYoAgBBAWo2AgALIAAgAiADEB0MBgsgB0EVa0H\u002F\u002FwNxQQpLDQACQAJAIAJBAE4EQCAAIAIQ3wUiAUKAgICAcIMiE0KAgICAMFENA0F\u002FIQcgE0KAgICA4ABRDQggACABENkFIgJBAEgEQCAAIAEQDAwJCyACRQRAIAAgARAMIAAgBkGaDRB8IQcMCQtBACEHAkBBByABQiCIpyICIAJBB2tBbkkbIgJBdkcEQCACQQdHBEAgAg0CIAFCgICAgAiDQh+IpyEHDAILIAFCgICAgMCBgPz\u002FAHxCP4inIQcMAQsgAaciAigCCEUNACACKAIMQYCAgIB4RyEHCyAAIAEQDCAHRQ0BIAAgBkG7DRB8IQcMCAsgDSAJKAIoSQ0BCyAAIAZB2Q0QfCEHDAYLIA5FIBFBB0ZxRQRAIAAgBkHBJhB8IQcMBgtBASEHIAxFDQUgA0IgiKdBdU8EQCADpyICIAIoAgBBAWo2AgALIAAgASANrSADIAYQzwEhBwwFCyAAIAkgAiADIAQgBSAGEN0FIQcMBAsgC0GAgICAfHFBgICAgHhGBEACQCAMRQ0AIAgoAgAoAhAhAiAJLwEGQQtGBEAgACADIAIpAwAQTUUNBAwBCyADQiCIp0F1TwRAIAOnIgcgBygCAEEBajYCAAsgACACIAMQHQsgBkGCBHFBgARHDQEgCS8BBkELRgRAIAAgBkGc0QAQfCEHDAULQX8hByAAIAkgCkEMahDTAQ0EIAgoAgAiBygCECkDACIBQiCIp0F1TwRAIAGnIgIgAigCAEEBajYCACAIKAIAIQcLIAAoAhAgBxDlASAIIAE3AwAgCigCDCICIAIoAgBB\u002F\u002F\u002F\u002FvwNxNgIADAELIAtBgICAgAJxBEBBASECIAwEQCADQiCIp0F1TwRAIAOnIgIgAigCAEEBajYCAAsgACAJIAMgBhDeBSECCyAGQYIEcUGABEYEQCAKIAkoAhAiBkEwajYCDEF\u002FIQcgACAJIApBDGogBigCMEEadkE9cRCNAw0FCyACIQcMBAsgDARAIAAgCCkDABAMIANCIIinQXVPBEAgA6ciAiACKAIAQQFqNgIACyAIIAM3AwALIAZBgARxRQ0AQX8hByAAIAkgCkEMaiAKKAIMKAIAQRp2QT1xIAZBAnFyEI0DDQMLQX9BASAAIAkgCkEMaiAQQQVxIgBBf3MgCigCDCgCAEEadnEgACAGcXIQjQMbIQcMAgsgACAGQe\u002FYABB8IQcMAQtBfyEHCyAKQRBqJAAgBwtpAQN\u002FIwBBEGsiAyQAAkACQCABQoCAgIBwVA0AIAGnIgQvAQYhBSACBEAgBUEgRw0BDAILIAVBFWtB\u002F\u002F8DcUELSQ0BCyADQbgRQa4OIAIbNgIAIABB8iogAxASQQAhBAsgA0EQaiQAIAQLRgIBfwF+IAJC\u002F\u002F\u002F\u002F\u002FwdYBEAgACABIAIQTg8LIAAgAhCLAyIDRQRAQoCAgIDgAA8LIAAgASADIAFBABARIQQgACADEBAgBAv8AQICfwF8IwBBEGsiBCQAAkAgAkIgiKciA0ECTQRAIAEgAqe3OQMAQQAhAwwBCyADQQdrQW1NBEAgASACQoCAgIDAgYD8\u002FwB8NwMAQQAhAwwBCwJ\u002FIAAgAhCWASICQoCAgIBwg0KAgICA4ABRBEBEAAAAAAAA+H8hBUF\u002FDAELAnwCQAJAQQcgAkIgiKciAyADQQdrQW5JGyIDQXZHBEAgA0EHRg0CIAMNASACp7cMAwsgAqdBBGogBEEIahCxBCAAIAIQDCAEKwMIIQVBAAwDCxABAAsgAkKAgICAwIGA\u002FP8AfL8LIQVBAAshAyABIAU5AwALIARBEGokACADC90BAQN\u002FAkAgAUKAgICAcFoEQCABpyEDA0ACQCADLQAFQQRxRQ0AIAAoAhAoAkQgAy8BBkEYbGooAhQiBEUNACAEKAIQIgRFDQAgAyADKAIAQQFqNgIAIAAgA61CgICAgHCEIgEgAiAEERMAIQUgACABEAwgBQ8LIAMgAygCAEEBajYCACAAQQAgAyACEEMhBCAAIAOtQoCAgIBwhBAMIAQNAgJAIAMvAQZBFWtB\u002F\u002F8DcUEKSw0AIAAgAhCTAyIERQ0AIARBH3UPCyADKAIQKAIsIgMNAAsLQQAhBAsgBAvNCQIEfwV+IwBB8ABrIgYkACAEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDIQkCQAJAIAFQIgUgAkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8AgyIKQoCAgICAgMD\u002F\u002FwB9QoCAgICAgMCAgH9UIApQG0UEQCADQgBSIAlCgICAgICAwP\u002F\u002FAH0iC0KAgICAgIDAgIB\u002FViALQoCAgICAgMCAgH9RGw0BCyAFIApCgICAgICAwP\u002F\u002FAFQgCkKAgICAgIDA\u002F\u002F8AURtFBEAgAkKAgICAgIAghCEEIAEhAwwCCyADUCAJQoCAgICAgMD\u002F\u002FwBUIAlCgICAgICAwP\u002F\u002FAFEbRQRAIARCgICAgICAIIQhBAwCCyABIApCgICAgICAwP\u002F\u002FAIWEUARAQoCAgICAgOD\u002F\u002FwAgAiABIAOFIAIgBIVCgICAgICAgICAf4WEUCIFGyEEQgAgASAFGyEDDAILIAMgCUKAgICAgIDA\u002F\u002F8AhYRQDQEgASAKhFAEQCADIAmEQgBSDQIgASADgyEDIAIgBIMhBAwCCyADIAmEUEUNACABIQMgAiEEDAELIAMgASABIANUIAkgClYgCSAKURsiCBshCiAEIAIgCBsiDEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F8\u002FgyEJIAIgBCAIGyILQjCIp0H\u002F\u002FwFxIQcgDEIwiKdB\u002F\u002F8BcSIFRQRAIAZB4ABqIAogCSAKIAkgCVAiBRt5IAVBBnStfKciBUEPaxBiIAYpA2ghCSAGKQNgIQpBECAFayEFCyABIAMgCBshAyALQv\u002F\u002F\u002F\u002F\u002F\u002F\u002Fz+DIQEgBwR+IAEFIAZB0ABqIAMgASADIAEgAVAiBxt5IAdBBnStfKciB0EPaxBiQRAgB2shByAGKQNQIQMgBikDWAtCA4YgA0I9iIRCgICAgICAgASEIQEgCUIDhiAKQj2IhCENIAIgBIUhBAJ+IANCA4YiAiAFIAdGDQAaIAUgB2siB0H\u002FAEsEQEIAIQFCAQwBCyAGQUBrIAIgAUGAASAHaxBiIAZBMGogAiABIAcQjQIgBikDOCEBIAYpAzAgBikDQCAGKQNIhEIAUq2ECyEJIA1CgICAgICAgASEIQsgCkIDhiEKAkAgBEIAUwRAQgAhA0IAIQQgCSAKhSABIAuFhFANAiAKIAl9IQIgCyABfSAJIApWrX0iBEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FA1YNASAGQSBqIAIgBCACIAQgBFAiBxt5IAdBBnStfKdBDGsiBxBiIAUgB2shBSAGKQMoIQQgBikDICECDAELIAkgCnwiAiAJVK0gASALfHwiBEKAgICAgICACINQDQAgCUIBgyAEQj+GIAJCAYiEhCECIAVBAWohBSAEQgGIIQQLIAxCgICAgICAgICAf4MhAyAFQf\u002F\u002FAU4EQCADQoCAgICAgMD\u002F\u002FwCEIQRCACEDDAELQQAhBwJAIAVBAEoEQCAFIQcMAQsgBkEQaiACIAQgBUH\u002FAGoQYiAGIAIgBEEBIAVrEI0CIAYpAwAgBikDECAGKQMYhEIAUq2EIQIgBikDCCEECyAEQj2GIAJCA4iEIQEgBEIDiEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F8\u002FgyAHrUIwhoQgA4QhBAJAAkAgAqdBB3EiBUEERwRAIAQgASABIAVBBEutfCIDVq18IQQMAQsgBCABIAEgAUIBg3wiA1atfCEEDAELIAVFDQELCyAAIAM3AwAgACAENwMIIAZB8ABqJAALLAEBfyAAKAIQIgEtAIgBRQRAIAFBAToAiAEgAEHaC0EAEDogAUEAOgCIAQsLVQEDfyABIAJBBXUiBEsEQCAAIARBAnRqKAIAIQMLIAJBH3EiAgR\u002FIAEgBEEBaiIESwR\u002FIAAgBEECdGooAgAFQQALQQF0IAJBH3N0IAMgAnZyBSADCwtMAQJ\u002FAn8gACgCBCIDIAJqIgQgACgCCEsEf0F\u002FIAAgBBC8AQ0BGiAAKAIEBSADCyAAKAIAaiABIAIQHhogACAAKAIEIAJqNgIEQQALC5AFAQV\u002FIwBBEGsiBCQAIAQgACgCODYCDAJ\u002FIAEhAyAEKAIMIQACQANAIAAiAUEBaiEAAkAgAS0AACICQQlrIgVBF0sNAEEBIAV0IgVBjYCABHENASAFQRJxRQ0AIANFDQEMAgsCQCACQS9HBEAgAkE9Rw0BQaR\u002FQT0gAC0AAEE+RhsMBAsgAC0AACIBQSpHBEBBLyABQS9HDQQaQS8hASADDQMDQAJAAkAgAUEKaw4EBQEBBQALIAFFDQQLIAAtAAEhASAAQQFqIQAMAAsACwNAIAAiAUEBaiEAIAEtAAEiAkENRgRAIAMNBAwBCyACRQ0CIANBACACQQpGGw0DIAJBKkcNACABLQACQS9HDQALIAFBA2ohAAwBCwsgAhCDAwR\u002FAkACQAJAAkACQCACQeUAaw4FAQIEBAADCyAALQAAIgNB7gBGBH9Bt38gAS0AAhDJAUUNBxogAC0AAAUgAwtB7QBHDQMgAS0AAkHwAEcNAyABLQADQe8ARw0DIAEtAARB8gBHDQMgAS0ABUH0AEcNAyABLQAGEMkBDQMgBCABQQZqNgIMQU0MBgsgAC0AAEH4AEcNAiABLQACQfAARw0CIAEtAANB7wBHDQIgAS0ABEHyAEcNAiABLQAFQfQARw0CIAEtAAYQyQENAiAEIAFBBmo2AgxBSwwFCyAALQAAQfUARw0BIAEtAAJB7gBHDQEgAS0AA0HjAEcNASABLQAEQfQARw0BIAEtAAVB6QBHDQEgAS0ABkHvAEcNASABLQAHQe4ARw0BIAEtAAgQyQENAUFFDAQLIAJB7wBHDQAgAC0AAEHmAEcNACABLQACEMkBDQBBWQwDC0GDfwUgAgsMAQtBCgshBiAEQRBqJAAgBgusAgEHfyMAQRBrIgUkAAJAIAAoAkAiAUUEQAwBCwJAIAECfyABKALIASIEIAEoAsQBIgJIBEAgASgCzAEhAyAEDAELIARBAWoiAyACQQNsQQJtIgIgAiADSBsiBkEDdCECIAAoAgAhAwJAIAEoAswBIgcgAUHQAWpGBEAgA0EAIAIgBUEMahCnASIDRQ0DIAMgASgCzAEgASgCyAFBA3QQHhoMAQsgAyAHIAIgBUEMahCnASIDRQ0CCyAFKAIMIQIgASADNgLMASABIAJBA3YgBmo2AsQBIAEoAsgBC0EBajYCyAEgAyAEQQN0aiICIAEoArwBNgIAIAIgASgCwAE2AgQgAEG0ARANIAAgBEH\u002F\u002FwNxEBQgASAENgK8AQwBC0F\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\u002F\u002F\u002F\u002F\u002FB1gEQCAAIAEgAiADQYCAARDPAQ8LIAAgAhCLAyIERQRAIAAgAxAMQX8PCyAAIAEgBCADEDkhBiAAIAQQECAGC10BAn8jAEEQayIDJAACQCABQYCAAXFFBEAgAUGAgAJxRQ0BIAAoAhAoAowBIgFFDQEgAS0AKEEBcUUNAQsgA0EANgIMIABBBCACQQAQjgRBfyEECyADQRBqJAAgBAvfCgIUfwF+IwBBMGsiByQAIAFBADYCACACQQA2AgAgB0EANgIsIAdBADYCKCAEQTBxIQ8gBEEQcSERIAMoAhAiCkEwaiEFAkACQAJAAkADQCAKKAIgIAhKBEACQCAFKAIEIg5FDQBBACARIAUoAgBBgICAgAFxGyAEIAAgDhCRAyIJdkEBcUVyDQACQCAPRSAFKAIAQYCAgIB8cUGAgICAeEdyDQAgAygCFCAIQQN0aigCACgCEDUCBEIghkKAgICAwABSDQAgACAFKAIEENEBQX8hCAwECyAAIAdBJGogDhClAQRAIAxBAWohDAwBCyAJRQRAIAtBAWohCwwBCyANQQFqIQ0LIAVBCGohBSAIQQFqIQgMAQsLQQAhBQJAIAMtAAUiBkEEcUUNACAGQQhxBEAgBEEBcUUNASADKAIoIAxqIQwMAQsgAy8BBiIGQQVGBEAgBEEBcUUNAUEAIQggAykDICIZQoCAgIBwg0KAgICAkH9RBH8gGacoAgRB\u002F\u002F\u002F\u002F\u002FwdxBUEACyAMaiEMDAELIAAoAhAoAkQgBkEYbGooAhQiBkUNACAGKAIEIgZFDQBBfyEIIAAgB0EsaiAHQShqIAOtQoCAgIBwhCAGER8ADQFBACEJA0AgCSAHKAIoTw0BAkAgBCAAIAlBA3QiCiAHKAIsaigCBCIGEJEDdkEBcQRAAkAgD0UEQEEAIQ4MAQsgACAHIAMgBhBDIgZBAEgNAiAGBH8gBygCACEXIAAgBxBGIBdBAnZBAXEFQQALIQ4gBygCLCAKaiAONgIACyAFIBFFIA5BAEdyaiEFCyAJQQFqIQkMAQsLIAAgBygCLCAHKAIoEFsMAQsgAEEBIAsgDGoiDyANaiAFaiISIBJBAUwbQQN0ECQiEEUEQCAAIAcoAiwgBygCKBBbQX8hCAwBCyADKAIQIhVBMGohBUEAIQogDCEGIA8hC0EBIRRBACEIA0AgCCAVKAIgTkUEQAJAIAUoAgQiE0UNAEEAIBEgBSgCAEGAgICAAXEiDRsgBCAAIBMQkQMiCXZBAXFFcg0AIA1BHHYhFgJ\u002FIAAgB0EkaiATEKUBBEAgCkEBaiEOQQAhFCALIQ0gBgwBCyAJRQRAIAohDiALIQ0gBiEKIAZBAWoMAQsgC0EBaiENIAohDiALIQogBgshGCAAIBMQFiELIBAgCkEDdGoiBiAWNgIAIAYgCzYCBCAOIQogGCEGIA0hCwsgBUEIaiEFIAhBAWohCAwBCwsCQCADLQAFIglBBHFFDQACfyAJQQhxBEAgBEEBcUUNAiADKAIoDAELIAMvAQZBBUcEQEEAIQUDQCAHKAIsIQkgBSAHKAIoT0UEQAJAQQAgESAJIAVBA3RqIgMoAgAiDRsgBCAAIAMoAgQiCRCRA3ZBAXFFckUEQCAQIAtBA3RqIgMgDTYCACADIAk2AgQgC0EBaiELDAELIAAgCRAQCyAFQQFqIQUMAQsLIAAoAhAiA0EQaiAJIAMoAgQRAAAMAgsgBEEBcUUNAUEAIAMpAyAiGUKAgICAcINCgICAgJB\u002FUg0AGiAZpygCBEH\u002F\u002F\u002F\u002F\u002FB3ELIQhBACEFIAhBACAIQQBKGyEEA0AgBCAFRg0BIBAgCkEDdGoiA0EBNgIAIAMgBUGAgICAeHI2AgQgBUEBaiEFIApBAWohCgwACwALIAogDEcNASAGIA9HDQIgCyASRw0DIAxFIBRyRQRAIBAgDEEIQTcgABDXAQsgASAQNgIAIAIgEjYCAEEAIQgLIAdBMGokACAIDwtBqBdBqOwAQfU7QfvEABAAAAtB+xZBqOwAQfY7QfvEABAAAAtBxBdBqOwAQfc7QfvEABAAAAtfAgJ\u002FAX4gAqcoAiAiBC0AEQRAIAAQuAJBAA8LIAAgBCkDCCICIAMgAkEAEBEiBkKAgICAcIMiAkKAgICA4ABSBH8gAUKAgICAMCAGIAJCgICAgCBRGzcDACAEBUEACwsbACAAQQAQUBogACABNgIEIABB\u002Fv\u002F\u002F\u002Fwc2AggLGwAgAEEAEFAaIAAgATYCBCAAQYCAgIB4NgIICw4AIAAoAhAgASACEOUFCxYAIAAgASACIAMgBCAFIAApAzAQ\u002FAELDQAgACABIAEQPRCLAgt2AQJ\u002FIAAoAhQEQCAAKAIAIAEQDEF\u002FDwsCQCABQoCAgIBwg0KAgICAkH9RDQAgACgCACABEDQiAUKAgICAcINCgICAgOAAUg0AIAAQ9wJBfw8LIAAgAaciAkEAIAIoAgRB\u002F\u002F\u002F\u002F\u002FwdxEEshAyAAKAIAIAEQDCADC+QBAgN\u002FAn4CQCAAIAApAzBBDxBHIglCgICAgHCDQoCAgIDgAFENACAAIARBA3RBCGoQJCIGRQRAIAAgCRAMDAELIAYgAzsBBiAGIAQ6AAUgBiACOgAEIAYgATYCAEEAIQMgBEEAIARBAEobIQEgBkEIaiEEA0AgASADRwRAIAUgA0EDdCIHaikDACIKQiCIp0F1TwRAIAqnIgggCCgCAEEBajYCAAsgBCAHaiAKNwMAIANBAWohAwwBCwsgCUKAgICAcFoEQCAJpyAGNgIgCyAAIAlBLyACEJgDIAkPC0KAgICA4AALFgAgACAAKAIoIAFBA3RqKQMAIAEQRwuEAgEBfwJAIAAoAggiAiAAKAIMTg0AIAAoAhAEQCAAIAJBAWo2AgggACgCBCACQQF0aiABOwEQQQAPCyABQf8BSw0AIAAgAkEBajYCCCAAKAIEIAJqIAE6ABBBAA8LAn8gACgCCCICIAAoAgxOBEBBfyAAIAJBAWogARDEAg0BGgsCQCAAKAIQBEAgACAAKAIIIgJBAWo2AgggACgCBCACQQF0aiABOwEQDAELIAFB\u002FwFNBEAgACAAKAIIIgJBAWo2AgggAiAAKAIEaiABOgAQDAELQX8gACAAKAIMEOADDQEaIAAgACgCCCICQQFqNgIIIAAoAgQgAkEBdGogATsBEAtBAAsLEgAgACABIAIgAyAEQZIDELEDCzUBAX8gACgCACIBBEAgACgCFCABQQAgACgCEBEBABoLIABCADcCACAAQgA3AhAgAEIANwIICzUBAn9BfyEDIAAgAUEAEGsiAgR\u002FIAIoAiAoAgwoAiAtAAQEQCAAEF9Bfw8LIAIoAigFQX8LCwkAIABBARDsBAsNACAAQRpBJEEZEPEFC4gBAQJ\u002FQX8hAiAAKAIUBH9BfwUgAUKAgICAcINCgICAgJB\u002FUgRAIAAoAgAgARAlIgFCgICAgHCDQoCAgIDgAFEEQCAAEPcCQX8PCyAAIAGnIgJBACACKAIEQf\u002F\u002F\u002F\u002F8HcRBLIQMgACgCACABEAwgAw8LIAAgAaciAEEAIAAoAgRB\u002F\u002F\u002F\u002F\u002FwdxEEsLC54CAgN\u002FAX4gAiABKQIEIgenQf\u002F\u002F\u002F\u002F8HcSADR3JFBEAgASABKAIAQQFqNgIAIAGtQoCAgICQf4QPCyABQRBqIQUgB0KAgICACINQIAMgAmsiBEEATHJFBEAgAyACIAIgA0gbIQZBACEDIAIhAQNAIAEgBkZFBEAgBSABQQF0ai8BACADciEDIAFBAWohAQwBCwsgA0H\u002F\u002FwNxQYACTwRAIAAgBSACQQF0aiAEEJIDDwtBACEBIAAgBEEAEOkBIgBFBEBCgICAgOAADwsgAEEQaiEDA0AgASAERkUEQCABIANqIAUgASACakEBdGotAAA6AAAgAUEBaiEBDAELCyADIARqQQA6AAAgAK1CgICAgJB\u002FhA8LIAAgAiAFaiAEEJwDC0QBAn8CQCAAQoCAgIBwVA0AIACnIgMvAQZBAkcNACADLQAFQQhxRQ0AIAIgAygCKDYCACABIAMoAiQ2AgBBASEECyAEC9UBAgJ\u002FA34CfyACRQRAQoCAgIAwIQVBAAwBCyAAKAIQIgMpA4ABIQUgA0KAgICAIDcDgAFBfwshAwJAIAAgAUEGIAFBABARIgdCgICAgHCDIgZCgICAgCBRIAZCgICAgDBRckUEQEF\u002FIQQgBkKAgICA4ABRDQEgACAHIAFBAEEAEDYhAQJ\u002FIAMgAg0AGkF\u002FIAFCgICAgHCDQoCAgIDgAFENABogAyABQv\u002F\u002F\u002F\u002F9vVg0AGiAAECJBfwshBCAAIAEQDAwBCyADIQQLIAIEQCAAIAUQmAELIAQLxQECAX4CfyMAQRBrIgUkAEKAgICA4AAhBAJAAkAgACABIAJBAEEAIAVBDGoQkQUiAUKAgICAcINCgICAgOAAUQ0AIAUoAgwiBkECRwRAIAMgBjYCACABIQQMAgsgACABQeoAIAFBABARIgJCgICAgHCDQoCAgIDgAFENACADIAAgAhAnIgM2AgBCgICAgDAhBCADRQRAIAAgAUHBACABQQAQESEECyAAIAEQDAwBCyAAIAEQDCADQQA2AgALIAVBEGokACAEC4gDAgJ+An8jAEEQayIGJAACQCABQoCAgIBwVARAIAEhAwwBCyACQW9xIQUCQAJAAkAgAkEQcQ0AIAAgAUHLASABQQAQESIEQoCAgIBwgyIDQoCAgIAgUSADQoCAgIAwUXINACADQoCAgIDgAFENASAGIABBxwBBFiAFQQFGG0HJACAFGxApNwMIIAAgBCABQQEgBkEIahA2IQMgACAGKQMIEAwgA0KAgICAcINCgICAgOAAUQ0BIAAgARAMIANCgICAgHBUDQMgACADEAwgAEGLzwBBABASDAILIAVBAEchBUEAIQIDQCACQQJHBEAgACABQThBOiACIAVGGyABQQAQESIDQoCAgIBwg0KAgICA4ABRDQICQCAAIAMQNUUNACAAIAMgAUEAQQAQNiIDQoCAgIBwg0KAgICA4ABRDQMgA0L\u002F\u002F\u002F\u002F\u002Fb1YNACAAIAEQDAwFCyAAIAMQDCACQQFqIQIMAQsLIABBi88AQQAQEgsgACABEAwLQoCAgIDgACEDCyAGQRBqJAAgAwtBACAAIAEgAkEATgR+IAKtBUKAgICAwH4gAri9IgFCgICAgMCBgPz\u002FAH0gAUKAgICAgICA+P8AVhsLIAMgBBCUAQs3AQJ\u002FIAAgAhAwIQUgACACEAwgBUUEQCAAIAMQDEF\u002FDwsgACABIAUgAyAEEBUhBiAAIAUQECAGC\u002FEBAgJ\u002FAXwCfwNAAkACQAJ\u002FAkACQEEHIAJCIIinIgMgA0EHa0FuSRsOCAAAAAAEBAQBBAsgAqcMAQsgAkKAgICAwIGA\u002FP8AfCICQjSIp0H\u002FD3EiAEGdCEsNASACvyIFmUQAAAAAAADgQWMEQCAFqgwBC0GAgICAeAshA0EADAMLQQAhA0EAIABB0ghLDQIaQQAgAkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FB4NCgICAgICAgAiEIABBkwhrrYZCIIinIgNrIAMgAkIAUxshA0EADAILIAAgAhCWASICQoCAgIBwg0KAgICA4ABSDQALQQAhA0F\u002FCyEEIAEgAzYCACAECwsAIAAgAUEAENoFC80BAQN\u002FIwBBEGsiBCQAAkAgAUKAgICAcFQEQAwBCyABpyICLwEGQSxGBEACQCAAIARBCGogAUHiABB+IgNFDQAgBCkDCCIBQoCAgIBwg0KAgICAMFEEQCAAIAMpAwAQlwEhAgwDCyAAIAEgAykDCEEBIAMQNiIBQoCAgIBwg0KAgICA4ABRDQAgACABECchAiAAIAMpAwAQlwEiA0EASA0AIAIgA0YNAiAAQZ7YAEEAEBILQX8hAgwBCyACLQAFQQFxIQILIARBEGokACACCxkAIAAgACgCECIAKQOAARAMIAAgATcDgAELHgAgAEKAgICAcINCgICAgJB\u002FUQRAIACnIAEQjAQLCyQBAX8jAEEQayIDJAAgAyACNgIMIAAgASACEJMEIANBEGokAAsXACAAKAIMIAAoAghBACAAKAIQEQEAGgu0BQEHfyMAQZACayIFJAAgBUEAOgAQIAUgACgCBDYCACAFIAAoAhQ2AgQgBSAAKAIYNgIMIAUgACgCMDYCCCAAQRBqIQlBASEEAkACQANAQX4hCAJ\u002FAkACQAJAAkACQAJAAkACQAJAAkAgCSgCACIDQf4Aag4FAQkJCQcACwJAAkACQAJAAkAgA0Eoaw4CAQIACwJAIANBO2sOAwcNCQALAkAgA0HbAGsOAwENAwALAkAgA0H7AGsOAwENBAALIANBpX9GDQcgA0EvRg0JIANBqn9HDQwMEAsgBEH\u002FAU0NBAwOCyAEQQFrIgQgBUEQamotAABBKEcNDQwJCyAEQQFrIgQgBUEQamotAABB2wBHDQwMCAtB\u002FQAgBEEBayIEIAVBEGpqLQAAIghB+wBGDQkaQap\u002FIQMgCEHgAEcNDCAAIAkQgQIgAEEANgIwIAAgACgCFDYCBCAAIAAoAjgQzQMNDAsgACgCKEHgAEYNBkHgACEDIARB\u002FwFLDQoLIAVBEGogBGogAzoAACAEQQFqIQQMBQsgBiAEQQJGciEGQTsMBgsgBkECciAGIARBAkYbIQZBpX8MBQsgBkEEciEGQT0MBAtBfyEICyAHQYABaiIDQRVNQQBBASADdEGbgMABcRsNACAHQSlGIAdB3QBGciAHQdUAaiIDQQdNQQBBASADdEGHAXEbciAHQf0ARnINACAAIAAoAjggCGo2AjggABDnBA0ECyAJKAIAIQMLIAMgA0GDf0cNABpBWSAAQcQAEEUNABpBWUGDfyAAQS0QRRsLIQcgABAPDQEgBEEBSw0AC0FZIAAoAhAgAEHEABBFGyEDIAJFDQFBCiADIAAoAgQgACgCFEcbIQMMAQtBqn8hAwsgAQRAIAEgBjYCAAsgACAFEO0CIQAgBUGQAmokAEF\u002FIAMgABsLgQYBBX8gACgCACEFAkACQAJAAkACQAJAAkACQAJAAkAgA0EBaw4GAQEBAQIDAAsgBSABIAJBABDlAg8LIAEgAiABKALAAUEBEMkDIgRBAEgNAgJAIARB\u002F\u002F\u002F\u002F\u002FwNNBEAgASgCdCAEQQR0aiIEKAIEIgYgASgCvAEiB0YEQCADQQNHDQIgAS0AbkEBcQ0CIAQoAgxB8AFxQRBHDQIMBgsgBCgCDEHwAXFBMEcNBCAGQQJqIAdGDQEMBAsgASgCvAEgASgC8AFHDQMLIABBizJBABATDAQLIAUgASACQQMQ5QIPCwJAIAEgAiABKALAAUEAEMkDQQBODQAgASgCKARAAkAgASACEKACIgNFDQAgAy0ABEECcUUNACADKAIIIAEoArwBRw0AIAEoAiRBAUYNAgtBgICAgARBfyAFIAEgAhDmAhsPCyABIAIQ9wEiBEEATg0GIAUgASACEEwiBEEASA0GAkAgAkHOAEcNACABKAJIRQ0AIAEgBDYCmAELIAEoAnQgBEEEdGogASgCvAE2AggMBgsgAEGLMkEAEBMMAgsgASgCvAEhBiADQQJLDQAgBiABKALwAUcNACABIAIQ6QRBAEgNACAAQZrVAEEAEBMMAQtBACEEIAEoAnwiB0EAIAdBAEobIQgCQANAIAQgCEYNAQJAAkAgASgCdCAEQQR0aiIHKAIAIAJHDQAgBygCBA0AIAEgBygCCCAGEOgEDQELIARBAWohBAwBCwsgAEHv2QBBABATDAELAkAgASgCKEUNACABIAIQoAIiBEUNACABIAQoAgggBhDoBEUNACAAQd4yQQAQEwwBCyABKAIgRQ0CIAEoAiRBAUsNAiAGIAEoAvABRw0CIAUgASACEOYCIgANAQtBfw8LIAAgAC0ABEH5AXFBBkECIANBAkYbcjoABEGAgICABA8LIAUgASACQQEgA0EERkEBdCADQQNGGxDlAiIEQQBIDQAgASgCdCAEQQR0aiIAIAAoAgxBfHEgA0ECRnJBAnI2AgwgBA8LIAQLsgEBBX8CQAJAIAAoAkAiAigCmAIiA0EASA0AIAIoAoACIgQgA2oiBS0AACIGQcUBRwRAIAZBzQBHDQEgAkF\u002FNgKYAiACIAM2AoQCIABBzQAQDSAAIAEQFw8LIAQgAyAFKAABa0EBaiIDaiIELQAAQdYARw0BIAAoAgAgBCgAARAQIAIoAoACIANqIAAoAgAgARAWNgABIAJBfzYCmAILDwtBviJBqOwAQYewAUGc1AAQAAALGQAgACABIAJBASADIAQgBSAGIAcgCBD7AQukAQIBfwF+IAApAgQiBKdB\u002F\u002F\u002F\u002F\u002FwdxIQMCQAJAIARCgICAgAiDUEUEQCACIAMgAiADShshAyAAQRBqIQADQCACIANGDQIgACACQQF0ai8BACABRg0DIAJBAWohAgwACwALIAFB\u002FwFLDQAgAiADIAIgA0obIQMgAEEQaiEAA0AgAiADRg0BIAAgAmotAAAgAUYNAiACQQFqIQIMAAsAC0F\u002FIQILIAILIwEBfyAAIAEgAkIAQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8PQgAQZiEDIAAgAhAMIAMLigkCCn8BfiMAQZABayICJAAgACAAQRBqIgYQgQIgACAAKAI4IgE2AjQgAiABNgIEIAAgACgCFDYCBAJ\u002FAkADQAJAIAAgATYCGCAAIAAoAggiBzYCFCABLAAAIgVB\u002FwFxIgQhAwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBA57AAkJCQkJCQkJBgQFBQMJCQkJCQkJCQkJCQkJCQkJCQkGCQIJDgkJAQkJCQsJCgkHCAwMDAwMDAwMDAkJCQkJCQkODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODgkJCQkOCQ4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4OCQsgASAAKAI8SQ0MIAZBqn82AgAMDgtBJyEDIAAoAkxFDQsLIAAgA0EBIAFBAWogBiACQQRqEP8CRQ0MDBALIAFBAWogASABLQABQQpGGyEBCyACIAFBAWoiATYCBCAAIAdBAWo2AggMDQsgACgCTEUNBwsgAiABQQFqIgE2AgQMCwsgACgCTEUNBSABLQABIgNBL0YNCCADQSpHDQUgAUECaiEBA0AgAiABNgIEA0ACQAJAAkACQCABLQAAIgNBCmsOBAECAgMACyADQSpHBEAgAw0CIAEgACgCPEkNA0HoGiEBDA8LIAEtAAFBL0cNAiACIAFBAmoiATYCBAwPCyAAIAAoAghBAWo2AggMAQsgA8BBAE4NACABQQYgAkEEahBRIQkgAigCBCEBIAlBf0cNAQsLIAFBAWohAQwACwALIAEtAAFBOmtBdkkNAwwECyAFQQBODQNBzDEhAQwHCyABLQABQTprQXZJDQIMAQsgACgCTEUNASABLQABQTprQXZJDQELIAAoAgAgASACQQRqQQBBCiAAKAJMIgEbIAFBAEdBAnQQgAIiC0KAgICAcINCgICAgOAAUQ0GIAAgCzcDICAAQYB\u002FNgIQDAILIAYgBDYCACACIAFBAWo2AgQMAQsgAiABQQFqIgQ2AgQgAkGAATYCCCACIAJBEGoiAzYCDEEAIQECfwNAIAIoAghBBmshCAJAA0AgASADaiAFOgAAIAFBAWohASAELQAAIgfAIgVBAEgNASAHQQN2QRxxQbD\u002FAWooAgAgB3ZBAXFFDQEgBEEBaiEEIAEgCEkNAAtBACAAKAIAIAJBDGogAkEIaiACQRBqEK8FDQIaIAIoAgwhAwwBCwsgACgCACADIAEQnQMLIQEgAigCDCIDIAJBEGpHBEAgACgCACgCECIFQRBqIAMgBSgCBBEAAAsgAiAENgIEIAFFDQQgAEIANwIkIAAgATYCICAAQYN\u002FNgIQCyAAIAIoAgQ2AjhBAAwECyABQQJqIQEDQCACIAE2AgQDQAJAAkAgAS0AACIDBEAgA0EKaw4EBgEBBgELIAEgACgCPE8NBQwBCyADwEEATg0AIAFBBiACQQRqEFEhAyACKAIEIQEgA0F+cUGowABGDQQgA0F\u002FRw0BCwsgAUEBaiEBDAALAAsLIAAgAUEAEBMLIAZBqH82AgBBfwshCiACQZABaiQAIAoLEQAgACABIAEgAiADQQIQ\u002FgMLWQECfyMAQRBrIgMkAEF\u002FIQQgACADQQhqIAIQ4wFFBEBBACEEIAEgAykDCCICQoCAgICAgIAQWgR+IABBig9BABBEQX8hBEIABSACCzcDAAsgA0EQaiQAIAQLtgEBAX8jAEEQayIDJAACQAJAIAJBAEgEQCABIAJB\u002F\u002F\u002F\u002F\u002FwdxNgIAQQEhAgwBCyAAKAIQIgAoAiwgAk0NAQJ\u002FAkAgACgCOCACQQJ0aigCACIAKQIEQoCAgICAgICAQINCgICAgICAgIDAAFINACADQQxqIAAQ7QVFDQBBASADKAIMIgBBf0cNARoLQQAhAEEACyECIAEgADYCAAsgA0EQaiQAIAIPC0GmzgBBqOwAQcYYQZ4PEAAACzwAIAAgASACQQBOBH4gAq0FQoCAgIDAfiACuL0iAUKAgICAwIGA\u002FP8AfSABQoCAgICAgID4\u002FwBWGwsQTgtTAQF\u002FIAAoAhAiBEEQaiABIAIgBCgCCBEBACIBIAJFckUEQCAAEHAgAQ8LIAMEQCADIAEgACgCECgCDBEFACIAIAJrIgJBACAAIAJPGzYCAAsgAQsNACAAQQAgAUEAEJoDC\u002FkBAgN+An8jAEEQayIFJAACfiABvSIEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDIgJCgICAgICAgAh9Qv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002Fv\u002FwBYBEAgAkI8hiEDIAJCBIhCgICAgICAgIA8fAwBCyACQoCAgICAgID4\u002FwBaBEAgBEI8hiEDIARCBIhCgICAgICAwP\u002F\u002FAIQMAQsgAlAEQEIADAELIAUgAkIAIAKnZ0EgaiACQiCIp2cgAkKAgICAEFQbIgZBMWoQYiAFKQMAIQMgBSkDCEKAgICAgIDAAIVBjPgAIAZrrUIwhoQLIQIgACADNwMAIAAgAiAEQoCAgICAgICAgH+DhDcDCCAFQRBqJAALKgEBfyMAQRBrIgMkACADIAI2AgwgACABIAJBpANBABCUBBogA0EQaiQAC0cAIAAgAUkEQCAAIAEgAhAeGg8LIAIEQCAAIAJqIQAgASACaiEBA0AgAEEBayIAIAFBAWsiAS0AADoAACACQQFrIgINAAsLCyABAX4gACAAIAIgASADQQRBABCCASIFIAEgBBC\u002FASAFC4sMAQZ\u002FIwBBIGsiAyQAAkACQAJAAkACQAJ\u002FIAAoAhAiAkGDf0cEQEEAIAJBV0cNARogACgCQCIELQBsQQFxRQRAIABBl+AAQQAQEwwDCyAEKAJkRQRAIABB6jtBABATDAMLQX8hBSAAEA8NBQJAAkACQAJAIAAoAhAiBEEpaw4EAgEBAgALIARB3QBGIARBOmtBAklyIARB\u002FQBGcg0BCyAAKAIwDQBBACECIARBKkYEQCAAEA8NCEEBIQILIAAgARCtAUUNAQwHCyAAQQYQDUEAIQILIAAoAkAtAGwhASACBEAgABAtIQUgABAtIQIgAEGAAUH\u002FACABQQNGGxANIABBDhANIABBBhANIABBBhANIAAgBRAaIABBhgEQDSABQQNHIgdFBEAgAEGMARANCyAAQYMBEA0gAEHCABANIABB6gAQFyAAQesAQX8QGCEGIAAgAhAaQYoBIQQgACAHBH9BigEFIABBwQAQDSAAQcEAEBdBiwELEA0gAEEREA0gAEHrAEF\u002FEBghBCAAQQ4QDSAAQewAIAUQGBogACAEEBogAEEBEA0gAEECEDggAEGsARANIABB6wBBfxAYIQQgAUEDRyIFRQRAIABBjAEQDQsgAEGHARANIABBABBYIABB6wBBfxAYIQcgBUUEQCAAQYwBEA0LIABBgwEQDSAAQcIAEA0gAEHqABAXIABB6gAgAhAYGiAAQcEAEA0gAEHBABAXIAAgBxAaIABBDxANIABBDxANIABBDxANIABBARCwAiAAIAQQGiAAQYcBEA0gAEEBEFggAEHrAEF\u002FEBghBCABQQNHIgFFBEAgAEGMARANCyAAQYMBEA0gAEHCABANIABB6gAQFyAAQeoAIAIQGBogAEHsACAGEBgaIAAgBBAaIABBhwEQDSAAQQIQWCAAQesAQX8QGCEEIAFFBEAgAEGMARANCyAAIAQQGiAAQTAQDUEAIQUgAEEAEBcgAEEEEFggACAGEBogAEHBABANIABBwQAQFyAAQQ8QDSAAQQ8QDSAAQQ8QDQwGCyABQQNGBEAgAEGMARANCyAAQYkBEA0gAEHqAEF\u002FEBghASAAQQEQsAIMBAsgACgCIAshBEF\u002FIQUgAEGifyABQQRyEMADDQMgACgCECICQaZ\u002FRgRAIAFBe3EhBiAAEC0hAgNAIAAQDw0FIABBERANIABBsQEQDSAAQeoAIAIQGBogAEEOEA0gAEEIIAYQ9gENBSAAKAIQQaZ\u002FRg0ACyAAIAIQGiAAKAIQIQILIAJBP0YEQCAAEA8NBCAAQeoAQX8QGCECIAAQUw0EIABBOhAoDQQgAEHsAEF\u002FEBghBiAAIAIQGiAAIAFBAXEQrQENBCAAIAYQGiAAKAIQIQILIAJBPUciBiACQfsAaiIFQQtLcUUEQCAAEA8NASAAIANBHGogA0EYaiADQRRqIANBEGpBACAGIAIQrgFBAEgNASAAIAEQrQEEQCAAKAIAIAMoAhQQEAwCCwJAIAJBPUYEQEE8IQEgAygCFCECIAMoAhwiBUE8RwRAIAIhBCAFIQEMAgsgAiAERwRAIAIhBAwCCyAAIAQQngEMAQsgACAFQbDJAWotAAAQDSADKAIUIQQgAygCHCEBC0EAIQUgACABIAMoAhggBCADKAIQQQJBABDBAQwEC0EAIQUgAkHvAGpBAksNAyAAEA8NACAAIANBHGogA0EYaiADQRRqIANBEGogA0EMakEBIAIQrgFBAEgNACAAQREQDSACQZN\u002FRgRAIABBsQEQDQsgAEHrAEHqACACQZJ\u002FRhtBfxAYIQIgAEEOEA0gACABEK0BRQ0BIAAoAgAgAygCFBAQC0F\u002FIQUMAgsCQCADKAIcIgFBPEcNACADKAIUIARHDQAgACAEEJ4BCyADKAIMQQFrIgRBA08NAiAAIARBFWpB\u002FwFxEA0gACABIAMoAhggAygCFCADKAIQQQFBABDBASAAQewAQX8QGCEBIAAgAhAaIAMoAgwhBQNAIAUEQCAAQQ8QDSADIAMoAgxBAWsiBTYCDAwBCwsLIAAgARAaQQAhBQsgA0EgaiQAIAUPCxABAAuSBQEHfwJAAkACQCAAKAJAIgsoApgCIg5BAEgNAEECIQ0CQAJAIAsoAoACIA5qIgwtAAAiCEHHAGsOBAQCAgEACyAIQcEARg0CIAhBvwFHBEAgCEG4AUcNAiAMKAABIglBCEYNAiAMLwAFIQogCUE7RwRAIAlB8gBGDQMgCUHOAEcNBQsgCy0AbkEBcUUNBCAAQdDaAEEAEBNBfw8LIAwvAAUhCiAMKAABIQlBASENDAMLQQMhDQwCCyAHQbt\u002FRgRAIABBkd4AQQAQE0F\u002FDwsgB0F+cUGUf0YEQCAAQdjiAEEAEBNBfw8LIAdBX3FB2wBGBEAgAEGLHUEAEBNBfw8LIABBst4AQQAQE0F\u002FDwsgDCgAASEJQQEhDQtBfyEHIAtBfzYCmAIgCyAONgKEAgJAAkAgBgRAAkACQAJAAkAgCEHHAGsOBAEDAwIACwJAIAhBwQBHBEAgCEG\u002FAUYNASAIQbgBRw0EIAAQLSEHIABBuwEQDSAAIAkQFyAAIAcQOCAAIAoQFCALIAdBARBjGkE8IQggAEE8EA0MBwsgAEHCABANIAAgCRAXQcEAIQgMBgsgAEHAARANIAAgCRAXIAAgChAUQb8BIQgMBQsgAEHzABANIABBExANQccAIQgMAwsgAEHyABANIABBFBANQcoAIQgMAgsQAQALAkACQAJAIAhBxwBrDgQBBAQCAAsgCEG4AUcNAyAAEC0hByAAQbsBEA0gACAJEBcgACAHEDggACAKEBQgCyAHQQEQYxpBPCEIDAMLIABB8wAQDUHHACEIDAILIABB8gAQDUHKACEIDAELIAAgCBANCyABIAg2AgAgAiAKNgIAIAMgCTYCACAEIAc2AgAgBQRAIAUgDTYCAAtBAAtaAQN\u002FIwBBEGsiASQAAkAgACgCECIDQap\u002FRg0AIANBO0cEQCADQf0ARg0BIAAoAjANASABQTs2AgAgAEHMkAEgARATQX8hAgwBCyAAEA8hAgsgAUEQaiQAIAIL2QIBA38jAEFAaiIGJAACfyACIAEoAgBPBEAgBiACNgI0IAYgAzYCMCAAQdmKASAGQTBqEDpBfwwBCwJAIAEoAgQgBE4NACABIAQ2AgQgBEH\u002F\u002FwNIDQAgBiACNgIEIAYgAzYCACAAQYGLASAGEDpBfwwBCyABKAIIIAJBAXRqIgcvAQAiA0H\u002F\u002FwNHBEAgAyAERwRAIAYgAjYCKCAGIAQ2AiQgBiADNgIgIABBsooBIAZBIGoQOkF\u002FDAILQQAgASgCDCACQQJ0aigCACIBIAVGDQEaIAYgAjYCGCAGIAU2AhQgBiABNgIQIABBh4oBIAZBEGoQOkF\u002FDAELIAcgBDsBACABKAIMIAJBAnRqIAU2AgBBfyAAIAFBEGpBBCABQRhqIAEoAhRBAWoQZA0AGiABIAEoAhQiAEEBajYCFCABKAIQIABBAnRqIAI2AgBBAAshCCAGQUBrJAAgCAs7AAJ\u002FIAAgAUGAgARPBH9BfyAAIAFBgIAEa0EKdkGAsANqEIcBDQEaIAFB\u002FwdxQYC4A3IFIAELEIcBCwvBAQIGfwF+IwBBIGsiBSQAAn4CQCACQoCAgIBwg0KAgICAkH9SBEAgACACEDQiAkKAgICAcINCgICAgOAAUQ0BCyAAIAVBCGoiBCABED0iByADED0iCGogAqciBigCBCIJQf\u002F\u002F\u002F\u002F8HcWogCUEfdhCZAw0AIAQgASAHEIsCGiAEIAZBACAGKAIEQf\u002F\u002F\u002F\u002F8HcRBLGiAEIAMgCBCLAhogACACEAwgBBA3DAELIAAgAhAMQoCAgIDgAAshCiAFQSBqJAAgCgspAQF\u002FIAJCIIinQXVPBEAgAqciAyADKAIAQQFqNgIACyAAIAEgAhDTBQufBAMEfwJ8AX4jAEEwayIHJABBByACQiCIpyIEIARBB2tBbkkbIQVBACEEAkACQAJAAnwCQAJAAkACQAJAAkACQEEHIAFCIIinIgYgBkEHa0FuSRsiBkEKag4SCAkDAgkJCQkJBAUAAQEJCQkGCQsgBUEBRw0IIAGnIAKnRiEEDAkLIAUgBkYhBAwHCyAFQXlHDQYgAacgAqcQvAJFIQQMBgsgAacgAqdGIAVBeEZxIQQMBQsgBUF\u002FRw0EIAGnIAKnRiEEDAQLIAGntyEIIAVBB0cEQCAFDQQgAqe3DAILIAJCgICAgMCBgPz\u002FAHy\u002FDAELIAFCgICAgMCBgPz\u002FAHy\u002FIQggBQRAIAVBB0cNAyACQoCAgIDAgYD8\u002FwB8vwwBCyACp7cLIQkCQCADBEACQAJAIAi9IgFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAIMiAkKBgICAgICA+P8AWgRAIAm9Qv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoGAgICAgID4\u002FwBUIQQMAQsgCb0iCkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KBgICAgICA+P8AVA0BCyAEIAJCgICAgICAgPj\u002FAFZzIQQMBQsgA0ECRw0BCyAIIAlhIQQMAwsgASAKUSEEDAILIAVBdkcNACAAIAdBHGoiBiABEK0CIgMgACAHQQhqIAIQrQIiBRC9AiEEIAMgBkYEQCAGEBkLIAUgB0EIaiIDRw0AIAMQGQsgACABEAwgACACEAwLIAdBMGokACAECy8BAX8jAEHQAGsiAyQAIAMgACADQRBqIAEQgQE2AgAgACACIAMQEiADQdAAaiQACw0AIAAgASABED0QnQMLHQEBfyAAIAFB\u002FwFxEA4gACgCBCEDIAAgAhAbIAMLEgAgACABIAIgAyAEQZQDELEDC1IBAX8gACgCDCIDRQRAQQAPCyAAIAAoAghB\u002F\u002F\u002F\u002F\u002FwNBgYCAgHwgASABQYGAgIB8TBsiASABQf\u002F\u002F\u002F\u002F8DThtqNgIIIABB\u002F\u002F\u002F\u002F\u002FwMgAiADQQAQ3AILHwEBfyAAKAIMIgNFBEBBAA8LIAAgASACIANBABDcAgsgACABQgA3AgwgAUKAgICAgICAgIB\u002FNwIEIAEgADYCAAtmAQF\u002FAn9BACAAKAIIIgIgAU8NABpBfyAAKAIMDQAaIAAoAhQgACgCACACQQNsQQF2IgIgASABIAJJGyIBIAAoAhARAQAiAkUEQCAAQQE2AgxBfw8LIAAgATYCCCAAIAI2AgBBAAsLZwECfwJAIAFCgICAgHBUDQAgAaciAy8BBkEEayIEQR1LQQEgBHRBz4CAgAJxRXINACAAIAMpAyAQDCADIAI3AyAPCyAAIAIQDCABQoCAgIBwg0KAgICA4ABSBEAgAEHu0gBBABASCwshAQF\u002FIAAgASAAIAIQtgEiAiADIAQQFSEFIAAgAhAQIAULRwIBfgF\u002FIAApA8ABIQQgAUIgiKdBdU8EQCABpyIFIAUoAgBBAWo2AgALIAAgBCACIAFBAxC+ARogACABIAMQrAQgACABEAwLhAEBAX8CQCACRSABQoCAgIBwg0KAgICAkH9SckUEQCABpyIDIAMoAgBBAWo2AgBBBCECIAAoAgAgAxCRBCIDQQBKDQELIAFCIIinQXVPBEAgAaciAiACKAIAQQFqNgIAC0ECIQIgACABEMcDIgNBAE4NAEF\u002FDwsgACACEA0gACADEDhBAAv8AgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAFBxwBrDgQBDQ0CAAsgAUE8RwRAIAFBvwFHBEAgAUG4AUYNByABQcEARw0OC0EVIQQCQCAFQQJrDgMFBAAGC0EbIQQMBAsgACgCACADEBAgACAEEBoLQbMBIQQCQAJAAkAgBUEBaw4EBgABAgULQRYhBAwEC0EZIQQMAwtBHSEEDAILQRchAQJAIAVBAmsOAwkIAAoLQR8hAQwIC0EYIQQLIAAgBBANCwJAIAFBxwBrDgQDCAgHAAsgAUE8Rg0DIAFBwQBGDQggAUG\u002FAUYNASABQbgBRw0HCyAFQQJPDQggAEG9AUG5ASAGGxANDAkLIABBwQEQDQwICyAAQckAEA0PCyAAQT0QDQ8LQRohAQsgACABEA0LIABBywAQDQ8LEAEACyAAQcMAEA0gACADEDgPC0He9gBBqOwAQZy5AUGXzwAQAAALIAAgAxA4IAAgAkH\u002F\u002FwNxEBQLixMBCn8jAEFAaiIGJAAgBEEASARAIAAgBkEoakEAEJwBGiAGKAIoQQJxIQQLIAAQLSEKIAAQLSELIAAoAkAoAoQCIQ0CQCADBEAgAEEREA0gAEEGEA0gAEGsARANIABB6wAgChAYGiAAIAsQGgwBCyAAQewAIAoQGBogACALEBogAEEREA0LIAAoAkAoAoQCIQ4CQAJAAkACQAJAIAAoAhAiB0HbAEcEQCAHQfsARgRAQX8hByAAEA8NBiAAQfEAEA0gBARAIABBCxANIABBGxANCyABQUlGIAFBUUZyIQwgAUGxf0chDwNAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIQIgdBpX9HBEAgB0H9AEYNCyAAIAZBOGpBAEEBQQAQxgMiB0EASA0SIAZBuAE2AjAgBkEANgI0IAAoAkAiCSgCvAEhCCAGQX82AjwgBiAINgIsIAZBADYCCCAHDQIgABAPRQ0BIAYoAjghBwwGCyAERQRAIAAoAgBBuD9BABA6DBILQX8hByAAEA8NEgJAIAEEQCAGIAAgAhDFAyIINgI0IAhFDRQgBkG4ATYCMCAAKAJAKAK8ASEHIAZBfzYCPCAGIAc2AiwgBkEANgIIDAELIAAQogINEyAAIAZBMGogBkEsaiAGQTRqIAZBPGogBkEIakEAQfsAEK4BDRMLIAAoAhBB\u002FQBGDQIgAEHjFUEAEBMMEAsCQCAAKAIQQSByQfsARw0AIAAgBkEoakEAEJwBIgdBLEYgB0H9AEZyRSAHQT1HcQ0AAkAgBigCOCIHRQRAIAQEQCAAQfIAEA0gAEEYEA0gAEEHEA0gAEHRABANIABBGBANCyAAQcgAEA0MAQsgBARAIABBGxANIABBBxANIABBzAAQDSAAIAcQFyAAQRsQDQsgAEHCABANIAAgBxA4C0F\u002FIQcgACABIAJBAUF\u002FQQEQwgFBAEgNEiAAKAIQQf0ARg0KIABBLBAoRQ0LDBILAkACfyAGKAI4IgdFBEAgAEHzABANIARFBEBBEiEIDAMLQRghCSAAQRgQDSAAQQcQDSAAQdEAEA1BEgwBCyAERQRAQREhCAwCC0EbIQkgAEEbEA0gAEEHEA0gAEHMABANIAAgBxAXQRELIQggACAJEA0LIAAgCBANIAEEQCAGIAAgAhDFAyIINgI0IAhFDQUgB0UNBAwGCyAAEKICDQQMAgsCQCACBH8gACAGKAI4IgcQ5gQNBSAAKAJABSAJCy0AbkEBcUUNACAGKAI4IgdBzgBHIAdBO0dxDQAgAEGLHUEAEBMMBAsgBARAIABBGxANIABBBxANIABBzAAQDSAAIAYoAjgQFyAAQRsQDQsgAUEAIA8bRQRAIABBERANIABBuAEQDSAAIAYoAjgiBxAXIAAgACgCQC8BvAEQFAwCCyAGIAAoAgAgBigCOBAWIgc2AjQgAEHCABANIAAgBxA4DAYLIABBCxANIABB0wAQDSAAIAYoAggiB0ECdEEEaiAHQQV0QUBrckH8AXEQWAwECyAAIAZBMGogBkEsaiAGQTRqIAZBPGogBkEIakEAQfsAEK4BDQEgBigCCCEIAkACQCAHRQRAQR4hBwJAIAhBAWsOAwMCAAQLQSAhByAAQSAQDQwCCyAIQQFrIghBA08NBCAAIAhBAXRBG2pB\u002FwFxEA0MBAtBHCEHCyAAIAcQDQsgAEHHABANDAILIAAoAgAgBxAQDAoLIABBwQAQDSAAIAcQOAsgAUUNASAGKAI0IQcLIAAgByABEKMCDQcgBiAAKAJAKAK8ATYCLAsCQCAAKAIQQT1HBEAgBigCMCEHDAELIABBERANIABBBhANIABBrAEQDSAAQeoAQX8QGCEIIAAQDw0HIABBDhANIAAQUw0HIAYoAjAiB0G4AUcgB0E8R3FFBEAgACAGKAI0EJ4BCyAAIAgQGgsgACAHIAYoAiwgBigCNCAGKAI8QQEgDBDBASAAKAIQQf0ARg0AQX8hByAAQSwQKEUNAQwICwsgAEEOEA0gBARAIABBDhANC0F\u002FIQcgABAPRQ0CDAYLIABB4A9BABATDAQLIAAQDw0DIAYgACgCQCIEKAKwAjYCCCAEIAZBCGo2ArACIAZBfzYCHCAGQv\u002F\u002F\u002F\u002F8vNwIUIAZCgICAgHA3AgwgBCgCvAEhBCAGQQE2AiQgBiAENgIgIABB\u002FwAQDSABQUlGIAFBUUZyIQwDQAJAIAAoAhAiB0HdAEYNACAHIgRBpX9HIglFBEAgABAPDQZB7YcBIQggACgCECIEQSxGIARB3QBGcg0ECwJAAkAgBEH7AEYgBEHbAEZyRQRAIARBLEcNASAAQYIBEA0gAEEAEFggAEEOEA0gAEEOEA0MAgsgACAGQShqQQAQnAEiBEEsRiAEQd0ARnJFIARBPUdxDQACQCAJRQRAIARBPUYEQEHBzwAhCAwICyAAQQAQ5QQMAQsgAEGCARANIABBABBYIABBDhANCyAAIAEgAkEBIAYoAihBAnFBARDCAUEASA0HDAELIAZBADYCOCAGQQA2AjQCQCABBEAgBiAAIAIQxQMiBDYCNCAERQ0HIAAgBCABEKMCDQcgBkG4ATYCMCAGIAAoAkAoArwBNgIsDAELIAAQogINByAAIAZBMGogBkEsaiAGQTRqIAZBPGogBkE4akEAQdsAEK4BDQcLAkAgCUUEQCAAIAYoAjgQ5QQMAQsgAEGCARANIAAgBi0AOBBYIABBDhANIAAoAhBBPUcNACAAQREQDSAAQQYQDSAAQawBEA0gAEHqAEF\u002FEBghBCAAEA8NBiAAQQ4QDSAAEFMNBiAGKAIwIghBuAFHIAhBPEdxRQRAIAAgBigCNBCeAQsgACAEEBoLIAAgBigCMCAGKAIsIAYoAjQgBigCPEEBIAwQwQELIAAoAhBB3QBGDQAgB0Glf0YEQEGQ0wAhCAwECyAAQSwQKEUNAQwFCwsgAEGFARANIAAoAkAiASABKAKwAigCADYCsAIgABAPDQMLAkAgBUUNACAAKAIQQT1HDQBBfyEHIABB7ABBfxAYIQEgABAPDQQgACAKEBogAwRAIABBDhANCyAAEFMNBCAAQewAIAsQGBogACABEBpBASEHDAQLIANFBEAgAEHDPUEAEBMMAwsgACgCQCgCgAIgDWpBswEgDiANaxAsGiAAKAJAKAKkAiAKQRRsaiIAIAAoAgBBAWs2AgBBACEHDAMLIAAgCEEAEBMMAQsgACgCACAGKAI0EBALQX8hBwsgBkFAayQAIAcLKwAgACgCQCgCpAFBAE4EQCAAQQYQDSAAQdkAEA0gACAAKAJALwGkARAUCwsTACAAIAEgAiADIARBAEEAEN0BC6YBAQF\u002FIwBBEGsiAyQAIAMgAjcDCAJAIAAgAUGHASABQQAQESICQoCAgIBwg0KAgICA4ABRDQAgACACEDUEQCAAIAIgAUEBIANBCGoQNiICQv\u002F\u002F\u002F\u002F9vViACQoCAgICwf4NCgICAgCBRcg0BIAAgAhAMIABBpcEAQQAQEkKAgICA4AAhAgwBCyAAIAIQDCAAIAEgACADQQhqEIoFIQILIANBEGokACACC6MBAgN\u002FAX4gAEEQaiECIAEoAgAiBEEBaiEDAkAgACkCBCIFQoCAgIAIg1BFBEAgAiAEQQF0ai8BACIAQYD4A3FBgLADRyADIAWnQf\u002F\u002F\u002F\u002F8HcU5yDQEgAiADQQF0ai8BACICQYD4A3FBgLgDRw0BIABBCnRBgPg\u002FcSACQf8HcXJBgIAEaiEAIARBAmohAwwBCyACIARqLQAAIQALIAEgAzYCACAACxIAIAFB2AFOBEAgACABEIYFCwthACAAIAEgAkKAgICACHxC\u002F\u002F\u002F\u002F\u002Fw9YBH4gAkL\u002F\u002F\u002F\u002F\u002FD4MFQoCAgIDAfiACub0iAkKAgICAwIGA\u002FP8AfSACQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwsgAyAEQQdyEJQBCzkAIABB\u002FwBNBEAgAEEDdkH8\u002F\u002F\u002F\u002FAXFBsP8BaigCACAAdkEBcQ8LIABBfnFBjMAARiAAEJYGQQBHcgs1ACAAIAJBMCACQQAQESICQoCAgIBwg0KAgICA4ABRBEAgAUEANgIAQX8PCyAAIAEgAhCVAQufAwIEfgF\u002FAkACQCACBEAgACABQdcBIAFBABARIgNCgICAgHCDIgRCgICAgCBSBEAgBEKAgICA4ABRDQMgBEKAgICAMFINAgsgACABQcwBIAFBABARIgNCgICAgHCDQoCAgIDgAFENAiAAIAEgAxDkAyEEIAAgAxAMIARCgICAgHCDQoCAgIDgAFEEQCAEDwtCgICAgOAAIQMCQCAAIARB6wAgBEEAEBEiBUKAgICAcINCgICAgOAAUQ0AIABBMxCGASIBQoCAgIBwg0KAgICA4ABRBEAgACAFEAwMAQsgAEEQEFwiAkUEQCAAIAEQDCAAIAUQDAwBCyAEQiCIp0F1TwRAIASnIgcgBygCAEEBajYCAAsgAiAFNwMIIAIgBDcDACABQoCAgIBwWgRAIAGnIAI2AiALIAEhAwsgACAEEAwgAw8LIAAgAUHMASABQQAQESIDQoCAgIBwg0KAgICA4ABRDQELIAAgAxA1RQRAIAAgAxAMIABBjNkAQQAQEkKAgICA4AAPCyAAIAEgAxDkAyEGIAAgAxAMIAYhAwsgAwtRAQN\u002FAkADQCABQoCAgIBwVA0BIAGnIgIvAQYiBEEsRgRAIAIoAiAiAkUNAiACLQARBEAgABC4AkF\u002FDwsgAikDACEBDAELCyAEQQJGIQMLIAMLewEBf0F\u002FIQQCQCAAIAEQICIBQoCAgIBwg0KAgICA4ABRDQAgACABpyACEIQEIQQgACABEAwgBA0AIANBgIABcUUEQEEAIQQgA0GAgAJxRQ0BIAAoAhAoAowBIgJFDQEgAi0AKEEBcUUNAQsgAEGICkEAEBJBfyEECyAEC3sBAn8gASABKAIAQQFrIgI2AgACQCACDQAgAC0AaEECRg0AIAEoAggiAiABKAIMIgM2AgQgAyACNgIAIAFBADYCDCAAKAJcIQIgACABQQhqIgM2AlwgASACNgIMIAEgAEHYAGo2AgggAiADNgIAIAAtAGgNACAAEOYFCwvKBQEEfyMAQSBrIgckAAJAAkACQAJAAkAgAUKAgICAcFQgAkL\u002F\u002F\u002F\u002F\u002FD1ZyDQAgAqchBgJAAkACQAJAAkACQAJAAkACQCABpyIFLwEGQQJrDh4ACQkJCQkICQkJCQkJCQkJCQkJBwYGBQUEBAMDAgEJCyAFKAIoIgggBksNCiAGIAhHDQggBS0ABUEJcUEJRw0IIAUoAhAhBgNAAkAgBigCLCIIBEAgCCgCECEGAkAgCC8BBkEBaw4CAAIMCyAGLQARRQ0CDAsLIAAgBSADIAQQhgQhBAwOCyAILQAFQQhxDQALDAgLQX8hBCAAIAdBGGogAxBtDQtBASEEIAUoAiggBk0NCyAFKAIkIAZBA3RqIAcrAxg5AwAMCwtBfyEEIAAgB0EYaiADEG0NCkEBIQQgBSgCKCAGTQ0KIAUoAiQgBkECdGogBysDGLY4AgAMCgsgACAHQQhqIAMQhQQNBiAFKAIoIAZNDQggBSgCJCAGQQN0aiAHKQMINwMADAgLQX8hBCAAIAdBFGogAxCVAQ0IQQEhBCAFKAIoIAZNDQggBSgCJCAGQQJ0aiAHKAIUNgIADAgLQX8hBCAAIAdBFGogAxCVAQ0HIAUoAiggBk0NBkEBIQQgBSgCJCAGQQF0aiAHKAIUOwEADAcLQX8hBCAAIAdBFGogAxCVAQ0GQQEhBCAFKAIoIAZNDQYgBSgCJCAGaiAHKAIUOgAADAYLQX8hBCAAIAdBFGogAxDcBQ0FQQEhBCAFKAIoIAZNDQUgBSgCJCAGaiAHKAIUOgAADAULIAUoAiggBk0NACAAIAUoAiQgBkEDdGogAxAdDAMLIAAgAhAwIQUgACACEAwgBUUEQCAAIAMQDAwBCyAAIAEgBSADIAEgBBDQASEEIAAgBRAQDAMLQX8hBAwCCyAAIAUoAiQgBkEDdGogAxAdC0EBIQQLIAdBIGokACAEC+QMAgd\u002FAX4jAEEwayIJJAACQAJAAkACQAJAAn8CQAJAIARCIIinIgdBf0cEQCABQoCAgIBwWgRAIAGnIQcMAgsCQAJAAkAgB0ECaw4CAAECCyAAIAMQDCAAIAJBgcIAELUBQX8hBgwKCyAAIAMQDCAAIAJBpugAELUBQX8hBgwJCyAAIAEQiwSnIQcMAQsgBKciCCABpyIHRw0BAkADQCAHKAIQIghBMGohCiAIIAgoAhggAnFBf3NBAnRqKAIAIQYDQCAGRQRAIAchCEEADAYLIAIgCiAGQQFrQQN0IghqIgYoAgRHBEAgBigCAEH\u002F\u002F\u002F8fcSEGDAELCyAHKAIUIAhqIQggBigCACIKQYCAgMB+cUGAgIDAAEYEQCAAIAggAxAdDAgLAkAgCkGAgICAAnEEQCAHLwEGQQJHDQEgAkEwRw0DIAAgByADIAUQ3gUhBgwLCyAKQRp2QTBxIgpBMEcEQCAKQSBHBEAgCkEQRw0IIAAgCCgCBCAEIAMgBRCHBCEGDAwLIAcvAQZBC0YNByAAIAgoAgAoAhAgAxAdDAkLIAAgByACIAggBhDBAkUNAQwJCwtB6vAAQajsAEH7wQBB5MQAEAAAC0HzxgBBqOwAQfzBAEHkxAAQAAALQQEMAQtBAgshBgNAAkACQAJAAkACQAJAIAYOAgABAgsCQCAHLQAFIgZBBHFFDQACQCAGQQhxBEAgAkEASARAIAJB\u002F\u002F\u002F\u002F\u002FwdxIgYgBygCKE8NAiAHIAhHDQYgACAEIAatIAMgBRDPASEGDA4LIAcvAQZBFWtB\u002F\u002F8DcUEKSw0CIAAgAhCTAyIGRQ0CIAZBAEgNDCAHLwEGIQYMCgsgACgCECgCRCAHLwEGQRhsaigCFCIGRQ0BIAYoAhgiCgRAIAcgBygCAEEBajYCACAAIAetQoCAgIBwhCIBIAIgAyAEIAUgChE0ACEGIAAgARAMDAYLIAYoAgAiBkUNASAHIAcoAgBBAWo2AgAgACAJQRBqIAetQoCAgIBwhCINIAIgBhEXACEGIAAgDRAMIAZBAEgNBSAGRQ0BIAktABBBEHEEQCAAIAkpAygiAadBACABQoCAgIBwg0KAgICAMFIbIAQgAyAFEIcEIQYgACAJKQMgEAwgACAJKQMoEAwMDQsgACAJKQMYEAwgCS0AEEECcUUNCCAHIAhHDQQgACAEIAIgA0KAgICAMEKAgICAMEGAwAAQaiEGDAULIAcvAQYiBkEVa0H\u002F\u002FwNxQQtJDQgLIAcoAhAoAiwhB0EBIQYMBQsgB0UNAUECIQYMBAsDQCAHKAIQIgZBMGohCyAGIAYoAhggAnFBf3NBAnRqKAIAIQYDQCAGRQ0EIAIgCyAGQQFrQQN0IgZqIgooAgRHBEAgCigCAEH\u002F\u002F\u002F8fcSEGDAELCyAHKAIUIAZqIQsCQCAKKAIAIgZBGnZBMHEiDEEwRwRAIAxBEEcNASAAIAsoAgQgBCADIAUQhwQhBgwLC0F\u002FIQYgACAHIAIgCyAKEMECRQ0BDAoLCyAGQYCAgMAAcQ0CDAQLIAVBgIAEcQRAIAAgAxAMIAAgAhDAAkF\u002FIQYMCAsgCEUEQCAAIAMQDCAAIAVB7B4QfCEGDAgLIAgtAAUiBkEBcUUEQCAAIAMQDCAAIAVBhdgAEHwhBgwICwJAIAGnIgcgCEYEQCAGQQRxBEAgBkEIcUUgAkEATnINAiAHLwEGQQJHDQIgBygCKCACQf\u002F\u002F\u002F\u002F8HcUcNAiAAIAcgAyAFEIYEIQYMCgsgACAHIAJBBxB3IgJFDQggAiADNwMADAcLIAAgCUEQaiAIIAIQQyIGQQBIDQEgBkUNACAJLQAQQRBxBEAgACAJKQMgEAwgACAJKQMoEAwgACADEAwgACAFQdc\u002FEHwhBgwJCyAAIAkpAxgQDCAJLQAQQQJxRQ0EIAgvAQZBC0YNBCAAIAQgAiADQoCAgIAwQoCAgIAwQYDAABBqIQYMAQsgACAIIAIgA0KAgICAMEKAgICAMCAFQYfOAHIQ3QUhBgsgACADEAwMBgtBACEGDAALAAsgACADEAwgACAFIAIQ5wEhBgwDCyAGQf7\u002FA3FBHEYEQEF\u002FIQYgACAJQQhqIAMQhQRFDQEMAwsgACAAIAMQlgEiARAMQX8hBiABQoCAgIBwg0KAgICA4ABRDQILQQEhBgwBCyAAIAMQDEF\u002FIQYLIAlBMGokACAGCzwBAX8jAEHQAGsiAiQAIAIgAQR\u002FIAAgAkEQaiABEIEBBUHe2QALNgIAIABBveQAIAIQwwIgAkHQAGokAAuuwwEDLn8HfgJ8IwBBoAFrIgghDiAIJAAgACgCECEWQoCAgIDgACE1AkAgABB2DQACfwJAAkACQAJAAkAgAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAGQQRxRQ0BIAGnIgcoAmQhCCAHKAJAIhkoAiQhEyAZKAIgIhIoAjAhCSASLwEqIQwgB0EANgJkIAcgFigCjAE2AjggBygCSCEVIAcoAlghBiAHKAJMIREgFiAHQThqIhQ2AowBIBEgDEEDdGohFyAVIRggBiEMIAcoAhxFDQQMBQsgAaciGS8BBiIHQQ1GDQIgFigCRCAHQRhsaigCECIIDQELIABB+zlBABASDAULIAAgASACIAQgBSAGIAgRFgAhNQwECyAZKAIgIhIvAS4hCSASLwEqIRcgEi8BKCEHIA4gEi0AEDYCWCAOIA5ByABqIhU2AkwgDiAVNgJIIA4gATcDOCAOIAQ2AlQgGSgCJCETIAggByAHQQAgBCAHSCIIGyAGQQJxQQF2GyIGIAkgF2pqQQN0QQ9qQfD\u002F\u002FwFxayIYJAAgBSEVIAYEQCAHIAQgByAIGyIIQQAgCEEAShsiCGsiCUEAIAcgCU8bIREDQAJAIAggCkYEQANAIAggEUYNAiAYIAhBA3RqQoCAgIAwNwMAIAhBAWohCAwACwALIAUgCkEDdCIJaikDACIBQiCIp0F1TwRAIAGnIhUgFSgCAEEBajYCAAsgCSAYaiABNwMAIBFBAWohESAKQQFqIQoMAQsLIA4gBzYCVCAYIRULIA4gFTYCQCAOIBggBkEDdGoiETYCREEAIQgDQCAIIBdHBEAgESAIQQN0akKAgICAMDcDACAIQQFqIQgMAQsLIBIoAhQhBiAOIBYoAowBNgIwIBYgDkEwaiIUNgKMASASKAIwIQkgESAXQQN0aiIIIRcLQQAMAQtBAQshBwNAAkACQAJAAkAgB0UEQCAEQQN0ISMgA0KAgICAcIMhOyARQQhqIRogEUEQaiEbIBFBGGohHCAVQQhqIR0gFUEQaiEeIBVBGGohHyAUQRhqISQgAkIgiKciIEF+cSElIANCIIinISYgBK0hOiADpyEhIA5BMGohJyAOQegAaiEiIAghBwJAA0ACQCAGQQFqIQxCgICAgDAhNQJ\u002FAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ\u002FAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBi0AACIKQQFrDvUBAAElCZMBCgsMDQ4PEBESExQVGBYXGRobHCEiIyQdIB4fKScnKiorLNwB\u002FQEtLi8w\u002FAExMjM0NTY3ODk5Ojo7oAGjAT08PpABkQGSAZQBlQGWAZ4BnwGiAaEBpAGXAZgBmQGaAZsBpQGmAacBnAGcAZ0BnQE\u002FQEFCQ0RsbW5yc3V2dG9wcXd+fXqBAYIBgwGMAcsBzAHNAc4BzgHOAc4BzgHOAXh4eHmEAYYBiAGFAYcBigGJAYsBjQGOAdgB2gHbAdsB2QGwAa8BsgGxAbMBswG1AbQBqQG2AY8ByAHJAcoBqwGsAa0BqAGqAa4BtwG5AbgBvQG+Ab8BwAHHAcUBwQHCAcMBxAG6AbwBuwHUAcYB9gECAgICAgICAgIDBAUGB0VGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqawiAAX98eyYmJibPAdAB0QHSAdYBCyAIIAY1AAE3AwAgBkEFaiEMIAhBCGohBwz1AQsgEigCNCAMKAAAQQN0aikDACIBQiCIp0F1TwRAIAGnIgcgBygCAEEBajYCAAsgCCABNwMAIAZBBWohDCAIQQhqIQcM9AELIAggCkG1AWutNwMAIAhBCGohBwzzAQsgCCAGMAABQv\u002F\u002F\u002F\u002F8PgzcDACAGQQJqIQwgCEEIaiEHDPIBCyAIIAYyAAFC\u002F\u002F\u002F\u002F\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\u002F\u002F\u002F\u002F\u002Fb1YNAEKBgICAECE1IAFCgICAgHCDQoCAgIAwUQ0AIABB6ecAQQAQEgzNAQsgCCA1NwMAIAhBCGohBwzIAQsgO0KAgICAMFINwQEgCUHPjAFBABASDMsBCyAJIAhBEGspAwAgCEEIaykDABDOBSIHQQBIDcoBIAcNwAEgCUG0HkEAEBIMygELIAhBCGsiDSkDACI1Qv\u002F\u002F\u002F\u002F9vWA3BASAIQRBrIgcpAwAhASA1pyILKAIQIgpBMGohDyAKIAooAhhBf3NBAnRB1HlyaigCACEKAkACQANAIAoEQCAPIApBAWtBA3QiCmoiECgCBEHKAUYNAiAQKAIAQf\u002F\u002F\u002Fx9xIQoMAQsLIAlB+AAQzQUiNUKAgICAcINCgICAgOAAUQ3LASAJIAtBygFBBxB3IgpFBEAgCSA1EAwMzAELIDVCIIinQXVPBEAgNaciCyALKAIAQQFqNgIACyAKIDU3AwAMAQsgCygCFCAKaikDACI1QiCIp0F1SQ0AIDWnIgogCigCAEEBajYCAAsgCSA1EIgCIQoCQCABQoCAgIBwWgRAIAGnIg8oAhAiC0EwaiEQIAsgCygCGCAKcUF\u002Fc0ECdGooAgAhCwJAA0AgC0UNASAKIBAgC0EDdGoiC0EEaygCAEcEQCALQQhrKAIAQf\u002F\u002F\u002Fx9xIQsMAQsLIAkgChAQIAlBoBpBABASDMwBCyAJIA8gCkEHEHchCyAJIAoQECALRQ3LASALQoCAgIAwNwMADAELIAkgChAQCyAJIAcpAwAQDCAJIA0pAwAQDAzFAQsgCSAIQQhrIggpAwAQmAEMyAELIAZBBmohDCAGKAABIQcCQAJAAkACQAJAAkAgBi0ABSIKDgUAAQIDBAULIAlBgIABIAcQ5wEaDMwBCyAJIAcQzAUMywELIAkgBxDRAQzKAQsgCUG8jwFBABDDAgzJAQsgCUHE4ABBABASDMgBCyAOIAo2AhAgCUHX6wAgDkEQahA6DMcBCyAGLwABIQogBi8AAyENIBQgBkEFaiIMNgIgQX8hBwJ+IAkgCCAKQQN0ayILQQhrIg8pAwAgCSkDuAEQTQRAIAlCgICAgDAgCgR+IAspAwAFQoCAgIAwC0ECIA1BAWsQhwMMAQsgCSAPKQMAQoCAgIAwQoCAgIAwIAogC0EAENIBCyIBQoCAgIBwg0KAgICA4ABRDcYBA0AgByAKRwRAIAkgCyAHQQN0aikDABAMIAdBAWohBwwBCwsgCCAKQX9zQQN0aiIGIAE3AwAgBkEIaiEHDMIBCyAGQQNqIQwgBi8AASENIAkgDkHgAGogCEEIayIHKQMAEP0DIgpFDcUBAn4gCSAIQRBrIgspAwAgCSkDuAEQTQRAIAlCgICAgDAgDigCYAR+IAopAwAFQoCAgIAwC0ECIA1BAWsQhwMMAQsgCSALKQMAQoCAgIAwIA4oAmAgChAcCyEBIAkgCiAOKAJgEIYDIAFCgICAgHCDQoCAgIDgAFENxQEgCSALKQMAEAwgCSAHKQMAEAwgCyABNwMADMEBCyAIQRBrIgYgCUKAgICAMCAGKQMAIAhBCGsiBykDABDLBTcDAAzAAQsgCSAIQQhrIgcpAwAQ6AEiAUKAgICAcINCgICAgOAAUQ3DASAJIAcpAwAQDCAHIAE3AwAMuQELIAhBCGsiBykDACE1IAkQ0AUiCgR+IAkgChBSBUKAgICAIAshASAJIAoQECABQoCAgIBwg0KAgICA4ABRDcIBIAkgDkGAAWoQtwIiNkKAgICAcINCgICAgOAAUQRAIAkgARAMDMMBCyAOIA4pA4ABNwNgIA4gNTcDeCAOIAE3A3AgDiAOKQOIATcDaCAJQTRBBCAOQeAAahD4AiAJIAEQDCAJIA4pA4ABEAwgCSAOKQOIARAMIAkgBykDABAMIAcgNjcDAAy4AQsgBkEFaiEMIAkoAsgBKAIQIgdBMGohDSAHIAYoAAEiCiAHKAIYcUF\u002Fc0ECdGooAgAhBwJAAkADQCAHRQ0BIA0gB0EDdGoiB0EIayELIAogB0EEaygCAEcEQCALKAIAQf\u002F\u002F\u002Fx9xIQcMAQsLQQEhByALDQELIAkgCSkDwAEgChBuIgdBAEgNwgELIAggB0EAR61CgICAgBCENwMAIAhBCGohBwy9AQsgCkE3ayELIAZBBWohDCAJKALIASINKAIQIgdBMGohDyAHIAYoAAEiCiAHKAIYcUF\u002Fc0ECdGooAgAhBwJAAkADQCAHRQ0BIAogDyAHQQFrQQN0IgdqIhAoAgRHBEAgECgCAEH\u002F\u002F\u002F8fcSEHDAELCyANKAIUIAdqKQMAIjVCgICAgHCDIgFCgICAgMAAUQRAIAkgChDRAQzDAQsgNUIgiKdBdUkNASA1pyIHIAcoAgBBAWo2AgAMAQsgCSAJKQPAASIBIAogASALEBEiNUKAgICAcIMhAQsgAUKAgICA4ABRDcABIAggNTcDACAIQQhqIQcMvAELIAZBBWohDCAJIAYoAAEgCEEIayIHKQMAIApBOWsQygVBAEgNpwEMuwELIAZBBWohDCAGKAABIQogCEEQayIHKAIARQRAIAkgChDAAgy\u002FAQsgCSAKIAhBCGspAwBBAhDKBSIGQQBODboBIAZBHnZBAnEMuwELIAZBBmohDCAJKALAASINKAIQIgpBMGohDyAKIAYoAAEiByAKKAIYcUF\u002Fc0ECdGooAgAhCiAGLAAFIQsCQANAIApFDQEgDyAKQQN0aiIQQQhrIQogByAQQQRrKAIARwRAIAooAgBB\u002F\u002F\u002F\u002FH3EhCgwBCwsgC0EASARAIApFDbQBIAotAANBBHENtAEMtgELIApFDbEBIAtBwABJDbMBIAooAgAiCkGAgIAgcQ2zASAKQYCAgIB8cUGAgICABEYNsgEgCkGAgIDAAXFBgICAwAFGDbMBDLIBCyALQQBODbABDLIBCyAGLAAFIgdBAXFBBnIgB0ECcUEFciAHQQBOIgcbIRAgCUHAAUHIASAHG2ooAgAiCygCECINIAYoAAEiDyANKAIYcUF\u002Fc0ECdGooAgAhCkKAgICAMEKAgICAwAAgBxshASAGQQZqIQwgDUEwaiENAkADQCAKRQ0BIA0gCkEDdGoiCkEIayEHIA8gCkEEaygCAEcEQCAHKAIAQf\u002F\u002F\u002Fx9xIQoMAQsLIAcNswELIAstAAVBAXFFDbIBIAkgCyAPIBAQdyIHRQ28ASAHIAE3AwAMsgELIAZBBmohDCAJKQPAASIBpygCECIHQTBqIQ0gByAGKAABIgsgBygCGHFBf3NBAnRqKAIAIQogBi0ABSEPIAkgASALIAhBCGsiBykDAEKAgICAMEKAgICAMAJ\u002FAkADQCAKRQ0BIA0gCkEDdGoiEEEIayEKIAsgEEEEaygCAEcEQCAKKAIAQf\u002F\u002F\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\u002F\u002F\u002F8fcSEHDAELCyALKAIUIA9qNQIEQiCGQoCAgIDAAFEEQCAJIAoQ0QEMhQELIActAANBCHFFDQMgNUIgiKdBdEsNAQwCCyAJIAkpA8ABIAoQbiIHQQBIDYMBIAdFBEBCgICAgDAhNQwCCyAJKQPAASI1QiCIp0F1SQ0BIDWnIQsLIAsgCygCAEEBajYCAAsgCCA1NwMAIAggCSAKEFI3AwggCEEQaiEHDH0LIAlBgIABIAoQ5wENgAEgCEEQaiEHDHwLIAwgDCgAAGohDCAIIQcgCRB2RQ17DH8LIAwgDC4AAGohDCAIIQcgCRB2RQ16DH4LIAwgDCwAAGohDCAIIQcgCRB2RQ15DH0LIAZBBWohCgJ\u002FIAhBCGsiBykDACIBQv\u002F\u002F\u002F\u002F8\u002FWARAIAGnDAELIAkgARAnCwR\u002FIAogDCgAAGpBBGsFIAoLIQwgCRB2RQ14DGQLIAZBBWohCgJ\u002FIAhBCGsiBykDACIBQv\u002F\u002F\u002F\u002F8\u002FWARAIAGnDAELIAkgARAnCwR\u002FIAoFIAogDCgAAGpBBGsLIQwgCRB2RQ13DGMLIAZBAmohCgJ\u002FIAhBCGsiBykDACIBQv\u002F\u002F\u002F\u002F8\u002FWARAIAGnDAELIAkgARAnCwR\u002FIAogDCwAAGpBAWsFIAoLIQwgCRB2RQ12DGILIAZBAmohCgJ\u002FIAhBCGsiBykDACIBQv\u002F\u002F\u002F\u002F8\u002FWARAIAGnDAELIAkgARAnCwR\u002FIAoFIAogDCwAAGpBAWsLIQwgCRB2RQ11DGELIAggDCAGKAABaiASKAIUa61CgICAgNAAhDcDACAGQQVqIQwgCEEIaiEHDHQLIAYoAAEhKiAIIAYgEigCFGtBBWqtNwMAIAhBCGohByAqIAxqIQwMcwsCQCAIQQhrIgcpAwAiAUL\u002F\u002F\u002F\u002F\u002FD1YNACABpyIKIBIoAhhPDQAgEigCFCAKaiEMDHMLIAlB6s8AQQAQOgx2CyAIQQhrIg8pAwAiNUIgiKciB0EBaiIKQQRNQQBBASAKdEEZcRtFBEAgCSA1EMkFITULAkACQCAJQRgQJCILRQ0AIAlCgICAgCBBERBHIgFCgICAgHCDQoCAgIDgAFEEQCAJKAIQIgdBEGogCyAHKAIEEQAADAELIAtBADYCFCALIDU3AwAgC0IANwMIIAtBADsBECABpyALNgIgIAdBfnFBAkYNaQJAIDWnIg0tAAVBCHFFDQBBACEHIA0oAhAiCigCICIQQQAgEEEAShshECAKQTBqIQoDQCAHIBBGDQMgCi0AA0EQcQ0BIApBCGohCiAHQQFqIQcMAAsACyAJIA5B4ABqIA5BgAFqIA1BIRB9RQ1aIAEhNQsgCSA1EAwgD0KAgICA4AA3AwAMdgsgC0EBOgARIA1BKGohBgxmC0KBgICAECE3QoCAgIAwIQECQCAIQQhrKQMAIjZCgICAgHBUDQAgNqciDS8BBkERRw0AIA0oAiAhBwJAA0AgBygCCCIKIAcoAgxPBEAgBykDACI1QoCAgIAQhEKAgICAcINCgICAgDBRDQMgByAJIActABAEfiA1BSANKAIgIgspAwAiNUIgiKdBdU8EQCA1pyIKIAooAgBBAWo2AgALAkADQCAJIDUQwgIiNUKAgICAcIMiOUKAgICAIFENBSA5QoCAgIDgAFENeyAJIA5B4ABqIgogDkGAAWoiDyA1p0EREH1FBEAgCSAOKAJgIA4oAoABIhAQWyAQBEAgCSA1EAwgCy0AEQRAIAkgCiAPIAsoAgBBIRB9DX4gC0EAOgARIAsgDigCYDYCFCALIA4oAoABNgIMC0EAIQoDQCAKIAsoAgxPDQQgCkEDdCEPIApBAWohCiAJIDYgDyALKAIUaigCBEKAgICAIEEEEBVBAE4NAAsMfQsgCRB2RQ0BCwsgCSA1EAwMegsgB0EBOgAQIAcpAwALEMICIjU3AwAgNUKAgICAcIMiNUKAgICAIFENAyA1QoCAgIDgAFENeCAJEHYNeCAJIA5BnAFqIA5BmAFqIAcoAgBBIRB9DXggCSAHKAIUIAcoAgwQWyAHIA4oApwBNgIUIA4oApgBIQogB0EANgIIIAcgCjYCDAwBCwJAIActABEEQCAHIApBAWo2AgggCkGAgICAeHIhCwwBCyAHKAIUIApBA3RqIgsoAgAhKyALKAIEIQsgByAKQQFqNgIIIActABAEQCAJQQAgDSALEEMiCkEASA15IAoNAiAJIDYgC0KAgICAIEEEEBVBAEgNeQsgK0UNAQsgCUEAIAcoAgAgCxBDIgpBAEgNdyAKRQ0AC0KAgICAECE3IAkgCxBSIQEMAQsgCSA1EAwLIAggNzcDCCAIIAE3AwAgCEEQaiEHDHALIAkgCEEAEIUDDXMgCEKAgICA0AA3AwggCEEQaiEHDG8LIAYtAAEhByAOQQE2AmAgBkECaiEMQoGAgIAQIQEgCEF9IAdrQQN0aiIHKQMAIjZCgICAgHCDQoCAgIAwUQ1iIAkgNiAHKQMIIA5B4ABqEJEBIjVCgICAgHCDQoCAgIDgAFEEQEF\u002FIQogDkF\u002FNgJgDGILIA4oAmAiCg1hQoCAgIAQIQEMYgsgCSAIQQEQhQMNcSAIQoCAgIDQADcDCCAIQRBqIQcMbQsgCEEIayIHKQMAIgFC\u002F\u002F\u002F\u002F\u002F29YBEAgCUH6HkEAEBIMcQsgCSABIA5B4ABqEMgFIjVCgICAgHCDQoCAgIDgAFENcCAJIAEQDCAHIDU3AwAgCCAOKAJgQQBHrUKAgICAEIQ3AwAgCEEIaiEHDGwLIAhBCGspAwBC\u002F\u002F\u002F\u002F\u002F29WDWUgCUH6HkEAEBIMbwsgCSAIQRBrIgopAwAQDCAIQRhrIgcpAwAiAUKAgICAcINCgICAgDBRDWogCSABQQAQkAEEQCAKIQgMbwsgCSAHKQMAEAwMagsgCEEIayIHKQMAIQEDQAJAIAcgF00NACAHQQhrIggpAwAiNUKAgICAcINCgICAgNAAUQ0AIAkgNRAMIAghBwwBCwsgByAXRgRAIAlBtcgAQQAQOiAJIAEQDCAXIQgMbgsgB0EIayABNwMADGkLIAkgCEEYaykDACAIQSBrKQMAQQEgCEEIayIHEBwiAUKAgICAcINCgICAgOAAUQ1sIAkgBykDABAMIAcgATcDAAxiCyAGQQJqIQwgCCAJIAhBIGsiBykDACIBQRdBBiAGLQABIgpBAXEbIAFBABARIgFCgICAgHCDIjVCgICAgCBRIDVCgICAgDBRcgR+QoGAgIAQBSA1QoCAgIDgAFENbCAHKQMAITUCfiAKQQJxBEAgCSABIDVBAEEAEDYMAQsgCSABIDVBASAIQQhrEDYLIgFCgICAgHCDQoCAgIDgAFENbCAJIAhBCGsiBikDABAMIAYgATcDAEKAgICAEAs3AwAgCEEIaiEHDGcLAn8gCEEIayIGKQMAIgFC\u002F\u002F\u002F\u002F\u002Fz9YBEAgAadBAEcMAQsgCSABECcLIQcgBiAHRa1CgICAgBCENwMADGALIAZBBWohDCAJIAhBCGsiBykDACIBIAYoAAEgAUEAEBEiAUKAgICAcINCgICAgOAAUQ1pIAkgBykDABAMIAcgATcDAAxfCyAGQQVqIQwgCSAIQQhrKQMAIgEgBigAASABQQAQESIBQoCAgIBwg0KAgICA4ABRDWggCCABNwMAIAhBCGohBwxkCyAJIAhBEGsiBykDACIBIAYoAAEgCEEIaykDACABQYCAAhDQASEsIAkgBykDABAMIAZBBWohDCAsQQBODWMMTwsgBkEFaiEMIAkgBigAARDNBSIBQoCAgIBwg0KAgICA4ABRDWYgCCABNwMAIAhBCGohBwxiCyAIQQhrIQcCQCAIQRBrIgopAwAiAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAJECJCgICAgOAAITUMAQsgBykDACI1QoCAgIBwg0KAgICAgH9SBEAgCRD8A0KAgICA4AAhNQwBCyAJIDUQiAIhCCABpyINKAIQIgtBMGohDyALIAggCygCGHFBf3NBAnRqKAIAIQsCQANAIAsEQCAPIAtBAWtBA3QiC2oiECgCBCAIRg0CIBAoAgBB\u002F\u002F\u002F\u002FH3EhCwwBCwsgCSAIEMcFQoCAgIDgACE1DAELIA0oAhQgC2opAwAiNUIgiKdBdUkNACA1pyIIIAgoAgBBAWo2AgALIAkgBykDABAMIAkgCikDABAMIAogNTcDACA1QoCAgIBwg0KAgICA4ABSDWEMTQsgCEEQaykDACEBIAhBCGshCgJAAkAgCEEYayIHKQMAIjVC\u002F\u002F\u002F\u002F\u002F29YBEAgCRAiDAELIAopAwAiNkKAgICAcINCgICAgIB\u002FUgRAIAkQ\u002FAMMAQsgCSA2EIgCIQggNaciDSgCECILQTBqIQ8gCyAIIAsoAhhxQX9zQQJ0aigCACELA0AgCwRAIA8gC0EBa0EDdCILaiIQKAIEIAhGDQMgECgCAEH\u002F\u002F\u002F8fcSELDAELCyAJIAgQxwULIAkgARAMIAkgBykDABAMIAkgCikDABAMDE0LIAkgDSgCFCALaiABEB0gCSAHKQMAEAwgCSAKKQMAEAwMYAsgCEEIaykDACEBIAhBEGshBwJAAkAgCEEYaykDACI1Qv\u002F\u002F\u002F\u002F9vWARAIAkQIgwBCyAHKQMAIjZCgICAgHCDQoCAgICAf1IEQCAJEPwDDAELIAkgNhCIAiEIIDWnIgsoAhAiCkEwaiENIAogCCAKKAIYcUF\u002Fc0ECdGooAgAhCgJAA0AgCkUNASAIIA0gCkEDdGoiCkEEaygCAEcEQCAKQQhrKAIAQf\u002F\u002F\u002Fx9xIQoMAQsLIAkgCEH7IBC1AQwBCyAJIAsgCEEHEHciCA0BCyAJIAEQDCAJIAcpAwAQDAxMCyAIIAE3AwAgCSAHKQMAEAwMXwsgBkEFaiEMIAkgCEEQaykDACAGKAABIAhBCGsiBykDAEGHgAEQFUEATg1eDEoLIAZBBWohDCAIIQcgCSAIQQhrKQMAIAYoAAEQxgVBAE4NXQxhCyAIIQcgCSAIQQhrKQMAIAhBEGspAwAQxQVBAE4NXAxgCyAIQQhrIgcpAwAiAUL\u002F\u002F\u002F\u002F\u002Fb1ggAUKAgICAcINCgICAgCBScUUEQCAJIAhBEGspAwAgAUEBEIkCQQBIDWALIAkgARAMDFsLIAkgCEEIaykDACAIQRBrKQMAEPsDDFQLIAgCfyAKQdUARgRAQX0gCSAIQRBrKQMAEDAiBw0BGgxfCyAGQQVqIQwgBigAASEHQX4LQQN0aiEtQoCAgIAwITZBg84BIQYgCEEIayINKQMAIgEhOEKAgICAMCE3AkACQAJAIAwtAAAiD0EDcQ4CAgABC0KAgICAMCE4QYGaASEGIAEhNwwBC0KAgICAMCE4QYGqASEGIAEhNgsgLSkDACE5QeKRASELIAkgBxDEBSE1AkAgBkGAEHFFBEBB3ZEBIQsgBkGAIHFFDQELIAkgCyA1QeyWARCyASE1CwJ\u002FQX8gNUKAgICAcINCgICAgOAAUQ0AGkF\u002FIAkgAUE3IDVBARAVQQBIDQAaIAkgASA5EPsDIAkgOSAHIDggNyA2IAYgD0EEcXIQagshBiAJIA0pAwAQDCAMQQFqIQwgCCAKQdUARgR\u002FIAkgBxAQIAkgCEEQaykDABAMQX4FQX8LQQN0aiEHIAZBAE4NWSAGQR52QQJxDFoLIAZBBmohDCAIQQhrIg0pAwAhNyAIQRBrIQsgBigAASEPAkACQCAGLQAFQQFxBEBCgICAgCAhOCALKQMAIjZCgICAgHCDQoCAgIAgUQRAIAkpAzAiNkIgiKdBdEsNAgwDC0KAgICAMCE5QfwrIQcgNkKAgICAcFQNSyA2py0ABUEQcUUNSyAJIDZBPCA2QQAQESI4QoCAgIBwgyIBQoCAgIAgUQ0CIAFCgICAgOAAUQ1NIDhCgICAgHBaDQJB1sEAIQcMTAsgCSgCKCkDCCI4QiCIp0F1TwRAIDinIgcgBygCAEEBajYCAAsgCSkDMCI2QiCIp0F1SQ0BCyA2pyIHIAcoAgBBAWo2AgALQoCAgIDgACE5IAkgOBBBIgFCgICAgHCDQoCAgIDgAFENSiA3pyIHLQARQTBxDUBCgICAgOAAITUgCSA2QQ0QRyI5QoCAgIBwg0KAgICA4ABRDUdCgICAgDAhNyAJIDkgByATIBQQwwUiNUKAgICAcINCgICAgOAAUQ1HIAkgNSABEPsDIDVCgICAgHBaBEAgNaciECAQLQAFQRByOgAFCyAJIDVBMCAHMwEsQQEQFRoCQCAKQdcARgRAIAkgNSAIQRhrKQMAEMUFQQBIDUkMAQsgCSA1IA8QxgVBAEgNSAsgNUIgiKdBdU8EQCA1pyIHIAcoAgBBAWo2AgALIAkgAUE9IDVBg4ABEBVBAEgNRyABQiCIp0F1TwRAIAGnIgcgBygCAEEBajYCAAsgCSA1QTwgAUGAgAEQFUEASA1HIAkgOBAMIAkgNhAMIAsgNTcDACANIAE3AwAMUgsgCSAIQRBrIgopAwAgCEEIayIHKQMAEE4hASAJIAopAwAQDCAKIAE3AwAgAUKAgICAcINCgICAgOAAUg1XDEMLIAhBCGsiByAJIAhBEGspAwAgBykDABBOIgE3AwAgCCEHIAFCgICAgHCDQoCAgIDgAFINVgxaCyAIQQhrKQMAIQEgCEEQaykDACI1QoCAgIBwg0KAgICAMFEEQCAJIAEQMCIHRQ1aIAkgBxDAAiAJIAcQEAxaCyABQiCIp0F1TwRAIAGnIgcgBygCAEEBajYCAAsgCSA1IAEQTiIBQoCAgIBwg0KAgICA4ABRDVkgCCABNwMAIAhBCGohBwxVCyAJIAhBCGsiDSkDABAwIgpFDVggCSAIQRBrIgcpAwAgCiAIQRhrIgspAwBBABARIQEgCSAKEBAgAUKAgICAcINCgICAgOAAUQ1YIAkgDSkDABAMIAkgBykDABAMIAkgCykDABAMIAsgATcDAAxUCyAJIAhBGGsiBykDACAIQRBrKQMAIAhBCGspAwBBgIACEM8BIS4gCSAHKQMAEAwgLkEATg1TDD8LIAkoAhAoAowBIQoCfwJAIAhBGGsiBykDACI1QoCAgIBwg0KAgICAMFEEQAJAIApFDQAgCi0AKEEBcUUNACAJIAhBEGspAwAQMCIHRQ1aIAkgBxDAAiAJIAcQEAxaCyAJKQPAASI1QiCIp0F1TwRAIDWnIgYgBigCAEEBajYCAAsgByA1NwMADAELIApFDQBBgIAGIAooAihBAXENARoLQYCAAgshBiAJIDUgCEEQaykDACAIQQhrKQMAIAYQzwEhBiAJIAcpAwAQDCAGQQBODVIgBkEedkECcQxTCyAIQRhrIgopAwBC\u002F\u002F\u002F\u002F\u002F29YDU0gCSAIQRBrIg0pAwAQMCILRQ1VIAkgCikDACALIAhBCGspAwAgCEEgayIHKQMAQYCAAhDQASEGIAkgCxAQIAkgBykDABAMIAkgCikDABAMIAkgDSkDABAMIAZBAE4NUSAGQR52QQJxDFILIAhBGGspAwAhNSAIQRBrKQMAIgFCIIinQXVPBEAgAaciByAHKAIAQQFqNgIACyAJIDUgASAIQQhrIgcpAwBBh4ABEJQBQQBODVAMPAsgCEEQayINKQMAIjZCgICAgBBaBEAgCUH04QBBABA6DFQLIAkgCEEIayIHKQMAIgFBzAEgAUEAEBEiAUKAgICAcINCgICAgOAAUQ1TIAFBNUEBEIIEIQsgCSABEAwgCSAHKQMAQQAQywEiAUKAgICAcINCgICAgOAAUQ1TIAkgAUHrACABQQAQESI1QoCAgIBwg0KAgICA4ABRBEAgCSABEAwMVAsgNqchCgJAAkAgC0UNACA1QTZBABCCBEUNACAHKQMAIjYgDkHgAGogDkGAAWoQjwFFDQAgCSAOQZwBaiA2EMoBDT8gDigCnAEgDigCgAFHDQAgCEEYayEPQQAhCwNAIAsgDigCgAFPDQIgDykDACE3IA4oAmAgC0EDdGopAwAiNkIgiKdBdU8EQCA2pyIQIBAoAgBBAWo2AgALIAkgNyAKIDZBBxCTASEvIAtBAWohCyAKQQFqIQogL0EATg0ACww\u002FCyAIQRhrIQsDQCAJIAEgNSAOQZwBahCRASI2QoCAgIBwg0KAgICA4ABRDT8gDigCnAENASAJIAspAwAgCiA2QQcQkwFBAEgNPyAKQQFqIQoMAAsACyANIAqtNwMAIAkgARAMIAkgNRAMIAkgBykDABAMDE8LIAZBAmohDCAIIQcgCSAIIAYtAAEiCkF\u002FcyILQQN0QWByaikDACAIIAtBAXRBQHJBeHFqKQMAIAggCkEFdkF\u002Fc0EDdGopAwBBABDBBUUNTgxSCwJAIAhBCGsiBykDACIBQiCIpyILIAhBEGsiCikDACI1QiCIpyINckUEQCABxCA1xHwiAUKAgICACHxCgICAgBBUDQEMPAsgDUEHa0FtSyALQQdrQW1Lcg07IApCgICAgMB+IDVCgICAgMCBgPz\u002FAHy\u002FIAFCgICAgMCBgPz\u002FAHy\u002FoL0iAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGzcDAAxOCyAKIAFC\u002F\u002F\u002F\u002F\u002Fw+DNwMADE0LIAZBAmohDAJAIAhBCGsiBykDACI1IBEgBi0AAUEDdGoiCCkDACIBhEL\u002F\u002F\u002F\u002F\u002FD1gEQCA1xCABxHwiNUKAgICACHxC\u002F\u002F\u002F\u002F\u002Fw9WDQEgCCA1Qv\u002F\u002F\u002F\u002F8PgzcDAAxOCyABQoCAgIBwg0KAgICAkH9SDQAgCSA1QQIQkgEiNUKAgICAcINCgICAgOAAUQ05IAgpAwAiAUIgiKdBdU8EQCABpyIKIAooAgBBAWo2AgALIAkgASA1ELYCIgFCgICAgHCDQoCAgIDgAFENOSAJIAggARAdDE0LIAFCIIinQXVPBEAgAaciCiAKKAIAQQFqNgIACyAOIAE3AyAgDiAHKQMANwMoIAkgJxC\u002FBQ04IAkgCCAOKQMgEB0MTAsgCEEIayIHKQMAIgFCIIinIg0gCEEQayILKQMAIjVCIIinIg9yRQRAIDXEIAHEfSIBQoCAgIAIfEKAgICAEFoNBCALIAFC\u002F\u002F\u002F\u002F\u002Fw+DNwMADEwLIA9BB2tBbUsgDUEHa0FtS3INAyALQoCAgIDAfiA1QoCAgIDAgYD8\u002FwB8vyABQoCAgIDAgYD8\u002FwB8v6G9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhs3AwAMSwsCQAJ8IAhBCGsiBykDACIBQiCIpyINIAhBEGsiCykDACI1QiCIpyIPckUEQCABxCA1xH4iNkKAgICACHxCgICAgBBaBEAgNrkMAgsgNlBFIAEgNYRCgICAgAiDUHINAkQAAAAAAAAAgAwBCyAPQQdrQW1LIA1BB2tBbUtyDQQgNUKAgICAwIGA\u002FP8AfL8gAUKAgICAwIGA\u002FP8AfL+iCyE8IAtCgICAgMB+IDy9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhs3AwAMSwsgCyA2Qv\u002F\u002F\u002F\u002F8PgzcDAAxKCyAIQQhrIgcpAwAiASAIQRBrIgspAwAiNYRC\u002F\u002F\u002F\u002F\u002Fw9WDQEgFC0AKEEEcQ0BIAsCfiA1p7cgAae3oyI8vSIBAn8gPJlEAAAAAAAA4EFjBEAgPKoMAQtBgICAgHgLIga3vVEEQCAGrQwBC0KAgICAwH4gAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGws3AwAMSQsgCEEIayIHKQMAIgEgCEEQayILKQMAIjWEQv\u002F\u002F\u002F\u002F8PVg0AIDWnIg1BAEgNACABpyIPQQBMDQAgCyANIA9wrTcDAAxIC0IAITYjAEEQayIHJAACfwJAAkACQAJ8AkACQAJAIAhBEGsiCykDACI1QiCIp0EHa0FtSyAIQQhrIg0pAwAiAUIgiKdBB2tBbUtyRQRAIAcgAUKAgICAwIGA\u002FP8AfDcDACAHIDVCgICAgMCBgPz\u002FAHw3AwgMAQsgCSA1EGUiNUKAgICAcINCgICAgOAAUQ0FIAkgARBlIgFCgICAgHCDQoCAgIDgAFEEQCA1IQEMBgtBByABQiCIpyIPIA9BB2tBbkkbIg9BByA1QiCIpyIQIBBBB2tBbkkbIhByRQRAIAGnIQ0gNachDyALAn4CQAJAAkACQAJAAkACQAJAIApBmwFrDgYAAQILBAMLCyABxCA1xH4iAUIAUg0EIA0gD3JBAE4NBSALQoCAgIDA\u002Fv8DNwMADA0LIAtCgICAgMB+IA+3IA23o70iAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGzcDAAwMCyANQQBKIA9BAE5xRQRAIAsCfiAPtyANtxCZBCI8vSIBAn8gPJlEAAAAAAAA4EFjBEAgPKoMAQtBgICAgHgLIgq3vVEEQCAKrQwBC0KAgICAwH4gAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGws3AwAMDAsgDyANcK0hAQwCCyAPtyE8IAsCfgJ8IA23Ij29QoCAgICAgID4\u002FwCDQoCAgICAgID4\u002FwBRBEBEAAAAAAAA+H8gPJlEAAAAAAAA8D9hDQEaCyA8ID0QowMLIjy9IgECfyA8mUQAAAAAAADgQWMEQCA8qgwBC0GAgICAeAsiCre9UQRAIAqtDAELQoCAgIDAfiABQoCAgIDAgYD8\u002FwB9IAFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbCzcDAAwKCyA1xCABxH0hAQsgAUKAgICACHxC\u002F\u002F\u002F\u002F\u002Fw9WDQEgASE2CyA2Qv\u002F\u002F\u002F\u002F8PgwwBC0KAgICAwH4gAbm9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLNwMADAULIBBBdkcgD0F2R3FFBEAgCSAKIAsgNSABIAkoAhAoAqwCESMADQcMBQsgCSAHQQhqIDUQbQ0FIAkgByABEG0NBgsCQAJAAkACQCAKQZsBaw4GAAECBAUDBAsgBysDCCAHKwMAogwFCyAHKwMIIAcrAwCjDAQLIAcrAwggBysDABCZBAwDCyAHKwMIITwgBysDACI9vUKAgICAgICA+P8Ag0KAgICAgICA+P8AUQRARAAAAAAAAPh\u002FIDyZRAAAAAAAAPA\u002FYQ0DGgsgPCA9EKMDDAILEAEACyAHKwMIIAcrAwChCyE8IAtCgICAgMB+IDy9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhs3AwALQQAMAgsgCSABEAwLIAtCgICAgDA3AwAgDUKAgICAMDcDAEF\u002FCyEwIAdBEGokACAwDUsgCEEIayEHDEcLIAhBBGsoAgAiB0UgB0EHa0FuSXINQCAIIQcgCSAIQY4BEOEBRQ1GDEoLAkACfCAIQQhrIgcpAwAiAUIgiKciCkUEQEQAAAAAAAAAgCABpyIGRQ0BGkQAAAAAAADgQSAGQYCAgIB4Rg0BGiAHQgAgAX1C\u002F\u002F\u002F\u002F\u002Fw+DNwMADEILIApBB2tBbUsNASABQoCAgIDA\u002Fv8Dfb8LITwgB0KAgICAwH4gPL0iAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGzcDAAxACyAIIQcgCSAIQY0BEOEBRQ1FDEkLIAhBCGsiBykDACIBQv\u002F\u002F\u002F\u002F8PViABQv\u002F\u002F\u002F\u002F8HUXJFBEAgByABQgF8Qv\u002F\u002F\u002F\u002F8PgzcDAAw\u002FCyAIIQcgCSAIQZABEOEBRQ1EDEgLIAhBCGsiBykDACIBQv\u002F\u002F\u002F\u002F8PViABQoCAgIAIUXJFBEAgByABQgF9Qv\u002F\u002F\u002F\u002F8PgzcDAAw+CyAIIQcgCSAIQY8BEOEBRQ1DDEcLIAkgCEEIayIHKQMAEGUiAUKAgICAcINCgICAgOAAUQRAIAdCgICAgDA3AwAMRwsgByABNwMAIAFCIIinQXVPBEAgAaciByAHKAIAQQFqNgIACyAIIAE3AwAgCSAIQQhqIgcgCkECaxDhAUUNQgxGCyAGQQJqIQwgESAGLQABQQN0aiIHKQMAIgFC\u002F\u002F\u002F\u002F\u002Fw9WIAFC\u002F\u002F\u002F\u002F\u002FwdRckUEQCAHIAFCAXxC\u002F\u002F\u002F\u002F\u002Fw+DNwMADDwLIAFCIIinQXVPBEAgAaciCiAKKAIAQQFqNgIACyAOIAE3A2AgCSAiQZABEOEBDUUgCSAHIA4pA2AQHQw7CyAGQQJqIQwgESAGLQABQQN0aiIHKQMAIgFC\u002F\u002F\u002F\u002F\u002Fw9WIAFCgICAgAhRckUEQCAHIAFCAX1C\u002F\u002F\u002F\u002F\u002Fw+DNwMADDsLIAFCIIinQXVPBEAgAaciCiAKKAIAQQFqNgIACyAOIAE3A2AgCSAiQY8BEOEBDUQgCSAHIA4pA2AQHQw6CyAIQQhrIgcpAwAiAUL\u002F\u002F\u002F\u002F\u002FD1gEQCAHIAFC\u002F\u002F\u002F\u002F\u002Fw+FNwMADDoLIAghByMAQRBrIgokAAJ\u002FAkACQCAJIAhBCGsiCykDABBlIgFCgICAgHCDIjVCgICAgOAAUQ0AIDVCgICAgOB+UQRAIAkgC0GWASABIAkoAhAoAqgCER8ADQEMAgsgCSAKQQxqIAEQlQENACALIAo1AgxC\u002F\u002F\u002F\u002F\u002Fw+FNwMADAELIAtCgICAgDA3AwBBfwwBC0EACyExIApBEGokACAxRQ0\u002FDEMLIAhBCGsiBykDACIBIAhBEGsiCikDACI1hEL\u002F\u002F\u002F\u002F\u002FD1gEQCAKIDWnIAGndK03AwAMPwsgCSAIQaEBELUCRQ0+DEILIAhBCGsiBykDACIBIAhBEGsiCikDACI1hEL\u002F\u002F\u002F\u002F\u002FD1gEQCAKAn4gNacgAad2IgZBAE4EQCAGrQwBC0KAgICAwH4gBri9IgFCgICAgMCBgPz\u002FAH0gAUKAgICAgICA+P8AVhsLNwMADD4LIwBBEGsiCiQAIAhBCGsiDSkDACEBAn8CQAJAIAkgCEEQayILKQMAEGUiNUKAgICAcIMiNkKAgICA4ABRDQAgCSABEGUiAUKAgICAcIMiN0KAgICA4ABRBEAgNSEBDAELIDZCgICAgOB+UiA3QoCAgIDgflJxDQEgCUGlgAFBABASIAkgNRAMCyAJIAEQDCALQoCAgIAwNwMAIA1CgICAgDA3AwBBfwwBCyAJIApBDGogNRCVARogCSAKQQhqIAEQlQEaIAsCfiAKKAIMIAooAgh2IgtBAE4EQCALrQwBC0KAgICAwH4gC7i9IgFCgICAgMCBgPz\u002FAH0gAUKAgICAgICA+P8AVhsLNwMAQQALITIgCkEQaiQAIDJFDT0MQQsgCEEIayIHKQMAIgEgCEEQayIKKQMAIjWEQv\u002F\u002F\u002F\u002F8PWARAIAogNacgAad1rTcDAAw9CyAJIAhBogEQtQJFDTwMQAsgCEEIayIHKQMAIgEgCEEQayIKKQMAIjWEQv\u002F\u002F\u002F\u002F8PWARAIAogASA1gzcDAAw8CyAJIAhBrgEQtQJFDTsMPwsgCEEIayIHKQMAIAhBEGsiCikDAIQiAUL\u002F\u002F\u002F\u002F\u002FD1gEQCAKIAE3AwAMOwsgCSAIQbABELUCRQ06DD4LIAhBCGsiBykDACIBIAhBEGsiCikDACI1hEL\u002F\u002F\u002F\u002F\u002FD1gEQCAKIAEgNYU3AwAMOgsgCSAIQa8BELUCRQ05DD0LIAhBCGsiBykDACIBIAhBEGsiCikDACI1hEL\u002F\u002F\u002F\u002F\u002FD1gEQCAKIDWnIAGnSK1CgICAgBCENwMADDkLIAkgCEGkARCEA0UNOAw8CyAIQQhrIgcpAwAiASAIQRBrIgopAwAiNYRC\u002F\u002F\u002F\u002F\u002Fw9YBEAgCiA1pyABp0ytQoCAgIAQhDcDAAw4CyAJIAhBpQEQhANFDTcMOwsgCEEIayIHKQMAIgEgCEEQayIKKQMAIjWEQv\u002F\u002F\u002F\u002F8PWARAIAogNacgAadKrUKAgICAEIQ3AwAMNwsgCSAIQaYBEIQDRQ02DDoLIAhBCGsiBykDACIBIAhBEGsiCikDACI1hEL\u002F\u002F\u002F\u002F\u002FD1gEQCAKIDWnIAGnTq1CgICAgBCENwMADDYLIAkgCEGnARCEA0UNNQw5CyAIQQhrIgcpAwAiASAIQRBrIgopAwAiNYRC\u002F\u002F\u002F\u002F\u002Fw9YBEAgCiA1pyABp0atQoCAgIAQhDcDAAw1CyAJIAhBABC+BUUNNAw4CyAIQQhrIgcpAwAiASAIQRBrIgopAwAiNYRC\u002F\u002F\u002F\u002F\u002Fw9YBEAgCiA1pyABp0etQoCAgIAQhDcDAAw0CyAJIAhBARC+BUUNMww3CyAIQQhrIgcpAwAiASAIQRBrIgYpAwAiNYRC\u002F\u002F\u002F\u002F\u002Fw9YBEAgBiA1pyABp0atQoCAgIAQhDcDAAwzCyAJIAhBABC9BQwyCyAIQQhrIgcpAwAiASAIQRBrIgYpAwAiNYRC\u002F\u002F\u002F\u002F\u002Fw9YBEAgBiA1pyABp0etQoCAgIAQhDcDAAwyCyAJIAhBARC9BQwxCyAIQQhrIgcpAwAiAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAJQZ\u002FjAEEAEBIMNQsgCSAIQRBrIg0pAwAiNRAwIgpFDTQgCSABIAoQbiELIAkgChAQIAtBAEgNNCAJIDUQDCAJIAEQDCANIAtBAEetQoCAgIAQhDcDAAwwCyAIQRBrIg0pAwAiAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAJQZ\u002FjAEEAEBIMNAsgCEEIayIHKQMAIjVCgICAgHBaBEAgCSABIDUQzgUiC0EASA00DBsLIAkgNRAwIgpFDTMgAacoAhAiBkEwaiELIAYgBigCGCAKcUF\u002Fc0ECdGooAgAhCANAIAhFBEBBACEIDBsLIAsgCEEDdGoiBkEIayEIIAZBBGsoAgAgCkYNGiAIKAIAQf\u002F\u002F\u002Fx9xIQgMAAsACyAJIAhBEGsiCikDACIBIAhBCGsiBykDACI1EOIFIgtBAEgNMiAJIAEQDCAJIDUQDCAKIAtBAEetQoCAgIAQhDcDAAwuCyAJIAhBCGsiBikDACIBEPoDIQcgCSABEAwgBiAJIAcQKTcDAAwnCyAIQRBrIg0pAwAhASAJIAhBCGsiBykDACI1EDAiCkUNMCAJIAEgCkGAgAIQzQEhCyAJIAoQECALQQBIDTAgCSABEAwgCSA1EAwgDSALQQBHrUKAgICAEIQ3AwAMLAsgBkEFaiEMIAkgCSkDwAEgBigAAUEAEM0BIgdBAEgNLyAIIAdBAEetQoCAgIAQhDcDACAIQQhqIQcMKwsgCEEIayIHKQMAIgFC\u002F\u002F\u002F\u002F\u002F29WDSQgCSABECAiAUKAgICAcINCgICAgOAAUQ0uIAkgBykDABAMIAcgATcDAAwkCyAIQQhrIgcpAwAiAUIgiKdBCGoiCkEITUEAQQEgCnRBgwJxGw0jIAkgARCJBCIBQoCAgIBwg0KAgICA4ABRDS0gCSAHKQMAEAwgByABNwMADCMLIAhBEGspAwBCgICAgBCEQoCAgIBwg0KAgICAMFEEQCAJQfIJQQAQEgwtCyAIQQhrIgcpAwAiAUIgiKdBCGoiCkEITUEAQQEgCnRBgwJxGw0iIAkgARCJBCIBQoCAgIBwg0KAgICA4ABRDSwgCSAHKQMAEAwgByABNwMADCILIAZBCmohDCAGLQAJIQsgBigABSEPIAkgCEEIayIHKQMAIgEgBigAASINEG4iEEEASA0rAkAgEEUNACALBEBBACELIAkgAUHWASABQQAQESI1QoCAgIBwg0KAgICA4ABRDS0gNUKAgICAcFoEQCAJIAkgNSANIDVBABARECchCwsgCSA1EAwgC0EASA0tIAsNAQsCQAJAAkACQAJAAkACQCAKQfQAaw4GAAECAwQFBgsgCSABIA0gAUEAEBEiAUKAgICAcINCgICAgOAAUQ0yIAkgByABEB0MBQsgCSABIA0gCEEQayIIKQMAIAFBgIACENABITMgCSAHKQMAEAwgM0EATg0EDDELIAkgASANQQAQzQEiCkEASA0wIAkgBykDABAMIAcgCkEAR61CgICAgBCENwMADAMLIAggCSANEFI3AwAgCEEIaiEIDAILIAkgASANIAFBABARIgFCgICAgHCDQoCAgIDgAFENLiAIIAE3AwAgCEEIaiEIDAELIAkgASANIAFBABARIgFCgICAgHCDQoCAgIDgAFENLSAJIAcpAwAQDCAHQoCAgIAwNwMAIAggATcDACAIQQhqIQgLIAwgD2pBBWshDAwiCyAJIAcpAwAQDAwnCyAIQQhrKQMAIjVCgICAgHCDQoCAgIAwUQ0PDAULIAhBCGspAwAiNUKAgICAcINCgICAgCBRDQ4MBAsgCSAIQQhrKQMAIjUQ+gNBxgBGDQEMAwsgCSAIQQhrKQMAIjUQ+gNBG0cNAgsgCSA1EAwMCwsgCEEIaykDACI1QoCAgIBgg0KAgICAIFENCgsgCSA1EAwgCEEIa0KAgICAEDcDAAwaCyASKAIUIQcgDiAKNgIEIA4gB0F\u002FcyAMajYCACAJQYUQIA4QOgwjCyAGQQNqIQwMGAtCAyE1DCMLQgAhNQwiC0IBITUMIQtCAiE1DCALIAhBCGsiCCkDACE1DCALIAsgDigCYDYCFCAOQYABaiEGDA0LQaj2AEGo7ABBgfsAQasiEAAACyAIQQhrQoGAgIAQNwMADBALIAkgChAQIAhBAEchCwsgCSABEAwgCSA1EAwgDSALQQBHrUKAgICAEIQ3AwAMFAsgByEIDBcLIAkgCBC\u002FBUUNEgwWCyAJIAFBARCQARogCSABEAwgCSA1EAwMFQsgASE5DAILQoCAgIAwITgLIAkgB0EAEBILIAkgNhAMIAkgOBAMIAkgNxAMIAkgORAMIAkgNRAMIAtCgICAgDA3AwAgDUKAgICAMDcDAAwRCyAJIAcpAwAQDCAHQoCAgIAwNwMAIApBAEgNECAJIDUQDEKAgICAMCE1CyAIIAE3AwggCCA1NwMAIAhBEGohBwwLCyALIAYoAgA2AgwLIA8gATcDAAwDCyANLQAFQQFxDQELIAkgB0GDjwEQtQEMCwsgCSgCyAEoAhAiCkEwaiELIAogCigCGCAHcUF\u002Fc0ECdGooAgAhCgNAIApFDQEgCyAKQQN0aiINQQhrIQogByANQQRrKAIARwRAIAooAgBB\u002F\u002F\u002F\u002FH3EhCgwBCwsgCg0BCyAIIQcMBQsgCSAHEMwFDAgLIAkQIgwHCyAJIAEQDAsgCEKAgICA4AA3AwAgCEEIaiEIDAULIAsgBDYCKCALIAo2AiQgCSkDqAEiNUIgiKdBdU8EQCA1pyIGIAYoAgBBAWo2AgALIAkgAUHMASA1QQMQFRogCSABQc8AQoCAgIAwIAkpA7ABIjUgNUGAMBBqGiAIIAE3AwAgCEEIaiEHC0EACyE0IAchCCAMIQYgNEUNAQsLIAchCAtBASEHDAULAkAgFikDgAEiNUKAgICAcFQNACA1pyIGLwEGQQNHDQAgBigCECIGQTBqIQcgBiAGKAIYQX9zQQJ0QaR+cmooAgAhBgJAA0AgBkUNASAHIAZBA3RqIgpBCGshBiAKQQRrKAIAQTZHBEAgBigCAEH\u002F\u002F\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\u002FAU0EQCAAQXhxQezeBGohAQJ\u002FQcTeBCgCACIEQQEgAEEDdnQiAHFFBEBBxN4EIAAgBHI2AgAgAQwBCyABKAIICyEAIAEgAzYCCCAAIAM2AgwgAyABNgIMIAMgADYCCA8LQR8hAiAAQf\u002F\u002F\u002FwdNBEAgAEEmIABBCHZnIgFrdkEBcSABQQF0a0E+aiECCyADIAI2AhwgA0IANwIQIAJBAnRB9OAEaiEHAn8CQAJ\u002FQcjeBCgCACIBQQEgAnQiBHFFBEBByN4EIAEgBHI2AgBBGCECIAchBEEIDAELIABBGSACQQF2a0EAIAJBH0cbdCECIAcoAgAhBANAIAQiASgCBEF4cSAARg0CIAJBHXYhBCACQQF0IQIgASAEQQRxakEQaiIHKAIAIgQNAAtBGCECIAEhBEEICyEAIAMiAQwBCyABKAIIIgQgAzYCDEEIIQIgAUEIaiEHQRghAEEACyEFIAcgAzYCACACIANqIAQ2AgAgAyABNgIMIAAgA2ogBTYCAEHk3gRB5N4EKAIAQQFrIgBBfyAAGzYCAAsLqAEAAkAgAUGACE4EQCAARAAAAAAAAOB\u002FoiEAIAFB\u002Fw9JBEAgAUH\u002FB2shAQwCCyAARAAAAAAAAOB\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\u002FIQMMAQtBACEDCyAEQRBqJAAgAwt6AQN\u002FIAAoAkAiAQRAIAEoArwBIQIgAEG1ARANIAAgAkH\u002F\u002FwNxEBQgASABKALMASIDIAJBA3RqKAIAIgA2ArwBA0ACQCAAQQBIBEBBfyEADAELIAMgAEEDdGoiAigCBCIAQQBODQAgAigCACEADAELCyABIAA2AsABCwvgKgERfyMAQZABayIEJAAgACgCACENAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAhAiAkGDf0cNACAAKAIoDQEgAEEAEHNBOkcEQCAAKAIQIQIMAQsgDSAAKAIgEBYhCSAAKAJAQbACaiEDAkADQCADKAIAIgNFDQEgAygCBCAJRw0ACyAAQf7VAEEAEBMMGAsgABAPDRcgAEE6ECgNFyAAKAIQIgJBxwBqQQNJDQAgABAtIQUgBCAAKAJAIgIoArACNgJQIAIgBEHQAGo2ArACIARBfzYCZCAEQv\u002F\u002F\u002F\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\u002F\u002F\u002F\u002F8fNwJcIAQgAjYCWCAEIAk2AlQgAygCvAEhAyAEQQA2AmwgBCADNgJoIABB+wAQKA0aQX8hBQNAIAFBAEghAwNAAkACQAJAIAAoAhAiB0HBAGoOAgABAgsgAwR\u002FQX8FIABB7ABBfxAYCyEDIAAgARAaA0AgABAPDR8gAEEREA0gABCLAQ0fIABBOhAoDR8gAEGsARANIAAoAhBBv39GBEAgAEHrACADEBghAwwBCwsgAEHqAEF\u002FEBghASAAIAMQGgwDCyAAEA8NHSAAQToQKA0dIAVBAE4EQEGrGyEDDBMLIAFBAEgEQCAAQewAQX8QGCEBCyAAQbYBEA0gAEEAEDggACgCQCgChAJBBGshBQwCCyAHQf0ARwRAIAMEQEGCGyEDDBMLIABBBxDbAUUNAQwdCwsLIABB\u002FQAQKA0aAkAgBUEATgRAIAAoAkAiAygCgAIgBWogATYAACADKAKkAiABQRRsaiAFQQRqNgIEDAELIAAgARAaCyAAIAIQGiAAQQ4QDSAAKAJAIgEgASgCsAIoAgA2ArACDBcLIAAQwwEgABAPDRkgABAtIQIgABAtIQEgABAtIQMgABAtIQUgAEHtACACEBgaIAQgACgCQCIHKAKwAjYCUCAHIARB0ABqNgKwAiAEQv\u002F\u002F\u002F\u002F8fNwJcIARCgICAgHA3AlQgBygCvAEhByAEQQA2AmwgBCAHNgJoIAQgAzYCZCAAEOkCDRkgACgCQCIHIAcoArACKAIANgKwAiAAEOgCBEAgAEEOEA0gAEEGEA0gAEHuACADEBgaIABBDhANIABB7AAgBRAYGgsCQAJAAkAgACgCEEE9ag4CABABCyAAEA8NGyAAEHQaIAAgAhAaIAAoAhBB+wBGBEAgAEEOEA0MDwsgAEEoECgNGyAAKAIQIgJB+wBGIAJB2wBGcg0BAkAgAkGDf0YEQCAAKAIoRQ0BCyAAQfblAEEAEBMMHAsgDSAAKAIgEBYhAgJAIAAQD0UEQCAAIAJBQxCjAkEATg0BCyANIAIQEAwcCyAAQbkBEA0gACACEDggACAAKAJALwG8ARAUDA0LIABBvAxBABATDBoLIABBUUEAQQFBf0EBEMIBQQBODQsMGQsgABAPRQ0ZDBgLIAAoAkAtAG5BAXEEQCAAQcnGAEEAEBMMGAsgABAPDRcgABD4AQ0XIAAQdBogACAAKAJAQdUAQQAQnQEiAUEASA0XIABB8QAQDSAAQdkAEA0gACABQf\u002F\u002FA3EQFCAAEMMBIAAQpAINFwwUCyABQQFxRQ0BIAFBBHENByAAQQAQc0EqRg0BDAcLIAAoAigEQCAAENwBDBYLQVEhAgJAIAAgARDKAw4CABQWCyAAQYYBEEVFDQQgAEEBEHNBRUcNBCABQQRxDQYLIABBhBJBABATDBQLIAFBBHFFBEAgAEHIEUEAEBMMFAtBfyEBQQAhAyAAQQBBABDsAkUNFQwWCyAAEA8NEiAAEK8BRQ0TDBILIAQgACgCACAEQdAAaiAAKAIgEIEBNgIQIABB+yogBEEQahATDBELIAAQiwENEAJAIAAoAkAoAqQBQQBOBEAgAEHZABANIAAgACgCQC8BpAEQFAwBCyAAQQ4QDQsgABCvAUUNEQwQCyAAQYvIAEEAEBMMDwtBACEDIABBAUEAIAAoAhggACgCFBDEAQ0ODBALIABBKRAoDQ0LIABB7QAgARAYGiAAEHQaIAQgACgCQCICKAKwAjYCUCACIARB0ABqNgKwAiAEQv\u002F\u002F\u002F\u002F8fNwJcIARCgICAgHA3AlQgAigCvAEhAiAEQQA2AmwgBCACNgJoIAQgAzYCZCAAEOkCDQwgACgCQCICIAIoArACKAIANgKwAiAAENoBIAAQ2gEgABDoAgRAIABBDhANIABBBhANIABB7gAgAxAYGiAAQQ4QDSAAQewAIAUQGBoLIAEhAgsgACACEBogAEHuACADEBgaIABBLxANIAAgAxAaIAAoAhBBREYEQCAAEA8NDCAEIAAoAkAiAigCsAI2AlAgAiAEQdAAajYCsAIgBEF\u002FNgJkIARC\u002F\u002F\u002F\u002F\u002Fy83AlwgBEKAgICAcDcCVCACKAK8ASEDQQAhASAEQQA2AmwgBCADNgJoIAIoAqQBQQBOBEAgACgCACACQdIAEEwiAUEASA0NIABB2AAQDSAAIAAoAkAvAaQBEBQgAEHZABANIAAgAUH\u002F\u002FwNxEBQgABDDAQsgABDpAg0MIAAoAkAiAygCpAFBAE4EQCAAQdgAEA0gACABQf\u002F\u002FA3EQFCAAQdkAEA0gACAAKAJALwGkARAUIAAoAkAhAwsgAyADKAKwAigCADYCsAILIABB7wAQDSAAIAUQGgwMCyAAIANBABATDAoLIABB7AAgAxAYGiAFRQ0AIAAQDw0JCyAAEK8BRQ0JDAgLIAEhAgsgABAPDQYgAEEAIAJBABDMAw0GCyAAIAAoAkAoArwBIAYQoQILIABBOxAoDQQgABAtIQUgABAtIQMgABAtIQEgABAtIQcgBCAAKAJAIgIoArACNgIcIAIgBEEcajYCsAIgBEKAgICAcDcCLCAEIAM2AiggBCAHNgIkIAQgCTYCICACKAK8ASECIARBADYCOCAEIAI2AjQgASECIAAoAhBBO0cEQCAAIAUQGiAAEIsBDQUgAEHqACAHEBgaIAUhAgsgAEE7ECgNBAJAIAAoAhBBKUYEQCAEIAI2AihBACEFIAIhAwwBCyAAQewAIAEQGBogACgCQCgChAIhBSAAIAMQGiAAEIsBDQUgAEEOEA0gASACRg0AIABB7AAgAhAYGgsgAEEpECgNBCAAKAJAKAKEAiEKIAAgARAaIAAQpAINBCAAIAAoAkAoArwBIAYQoQICQCABIAJGIAIgA0ZyRQRAIAAoAkAiAUGAAmoiBiABKAKEAiIIIAogBWsiAmoQvAEaIAYgASgCgAIgBWogAhByGiABKAKAAiAFakGzASACECwaIAAoAkAiAiABKAKEAkEFazYCmAIgAyACKAKsAiIBIAEgA0gbIQYgCCAFayEIA0AgAyAGRg0CIAIoAqQCIANBFGxqIgsoAgQiASAFSCABIApOckUEQCALIAEgCGo2AgQLIANBAWohAwwACwALIABB7AAgAxAYGgsgACAHEBogACgCQCIBIAEoArACKAIANgKwAgwBCyAAQewAIBAQGBogACgCQCgChAIhDCAAIA8QGgJAIAAoAhAiAkE9Rw0AAkAgABAPRQRAIABBABCtAUUNAQsgCCAGEBAMBQsgBkUNACAAQbkBEA0gACAGEBcgACALLwG8ARAUCyAIIAYQEAJAAkACQCAAQcQAEEUiBgRAIARBATYCbCAEIAQoAmBBAmo2AmBB+MsAIQggAkE9Rg0BDAMLIAAoAhBBt39HDQEgAUUEQCAAQfSPAUEAEBMMBwsgAkE9Rw0CQYI\u002FIQggBUGxf0cNACALLQBuQQFxRSADQX9zcQ0CCyAEIAg2AgAgAEH4LiAEEBMMBQsgAEGTPUEAEBMMBAsgABAPDQMCQCAGBEAgABBTRQ0BDAULIAAQiwENBAsgACAAKAJAKAK8ASAOEKECIABB\u002FwBBgH8gARtB\u002FgAgBhtB\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\u002FIQggB0F\u002FNgK8ASAAEHRBAEgNBwtBACEJAkADQCAAKAIQIghBKUYNASAIQaV\u002FRyIORQRAIApBADYCACAAEA8NByAAKAIQIQgLAkACQAJAAkAgCEGDf0cEQCAIQfsARyAIQdsAR3ENBCAKQQA2AgACQCAORQRAIABBDRANIAcoAogBIQgMAQsgCyAHQQAQyAMhCCAAQdsAEA0LIAAgCEH\u002F\u002FwNxEBQgAEFRQbF\u002FIAQoAgAbQQFBAUF\u002FQQEQwgEiCEEASA0LIAggCXIhEkEBIQkgEkUEQCAHIAcoAowBQQFqNgKMAUEAIQkLIA5FDQEMAwsgACgCKA0JIAAoAiAiCEEtRgRAIActAGxBAUYNCgsgBCgCAARAIAAgByAIQQEQnQFBAEgNCwsgCyAHIAgQyAMiEUEASA0KIAAQDw0KIA4NASAAQQ0QDSAAIBFB\u002F\u002F8DcSIJEBQgBCgCAARAIABBERANIABBvQEQDSAAIAgQFyAAIAcvAbwBEBQLIABB3AAQDSAAIAkQFCAKQQA2AgALIAAoAhBBKUYNBCAAQSkQKBoMCQsCQCAAKAIQQT1GBEAgCkEANgIAIAAQDw0KIAAQLSEJIABB2wAQDSAAIBFB\u002F\u002F8DcSIOEBQgAEEREA0gAEEGEA0gAEGsARANIABB6gAgCRAYGiAAQQ4QDSAAEFMNCiAAIAgQngEgAEEREA0gAEHcABANIAAgDhAUIAAgCRAaQQEhCQwBCyAJRQRAIAcgBygCjAFBAWo2AowBCyAEKAIARQ0BIABB2wAQDSAAIBFB\u002F\u002F8DcRAUCyAAQb0BEA0gACAIEBcgACAHLwG8ARAUCyAAKAIQQSlGDQIgAEEsEChFDQEMBwsLIABB1DBBABATDAULAkACQCABQQRrDgIBAAILIAcoAogBQQFGDQEMAwsgBygCiAENAgsgBCgCAEUNACAHKALMASAHKAK8AUEDdGpBBGohCANAAkAgCCgCACIEQQBIDQAgBygCdCIIIARBBHQiBGoiCigCBCAHKAK8AUcNACAHIAooAgAiChD3AUEASARAIAsgByAKEExBAEgNBiAHKAJ0IQggAEG4ARANIAAgBCAIaiIKKAIAEBcgACAHLwG8ARAUIABBuQEQDSAAIAooAgAQFyAAQQAQFAsgBCAIakEIaiEIDAELCyAAQbUBEA0gACAHLwG8ARAUIAdBADYCvAEgByAHKALMASgCBDYCwAELIAAQDw0CIAJBfXFBAUYEQCAAQYgBEA0LIAdBATYCZCAAEHQaIAcgBygCvAE2AvABAkACQCAAKAIQQaR\u002FRw0AIAAQDw0EIAAoAhBB+wBGDQAgACAHIAwQ6gQNBCAAEFMNBCAAQS5BKCACGxANIActAG5BAnENASAHIAAoAjQgA2siAjYCkAMgByALIAMgAhCXAyICNgKMAyACDQEMBAsgAUEHRwRAIABB+wAQKA0ECyAAEKUFDQMgACAHIAwQ6gQNAwNAIAAoAhBB\u002FQBHBEAgABCkBUUNAQwFCwsgBy0AbkECcUUEQCAHIAAoAjggA2siAjYCkAMgByALIAMgAhCXAyICNgKMAyACRQ0ECyAAEA8NAyAAEOgCRQ0AIABBABCwAgsgACAHKAIENgJAIAAoAhAiAkGDf0cgAkHVAGpBLUtxRQRAIABBADYCKCAAQYN\u002FNgIQIAAQ7wQLIAcoAnAhAiAHIABCgICAgCAQxwMiAzYCCCABQQJPBEBBACEIIAFBCmtBfUsNBSAAQQMQDSAAIAMQOCACDQUgAEHNABANIABBABA4DAULIAFBAUYEQCAAQQMQDSAAIAMQOCAPBEACQCAAKAJAIgEoAigEQCALIAEgAhDmAiIBRQ0GIAFBADYCCCABIAEtAARB\u002FgFxIAAoAkAtAG5BAXFyOgAEDAELIAEgAhD3AUEATg0AIAsgASACEExBAEgNBQsgAEEREA0gAEG5ARANIAAgAhAXIABBABAUC0EAIQggDUEATgRAIAAoAkAoAnQgDUEEdGoiASABLQAMIANBCHRyNgIMIABBDhANDAYLIABBvQEQDSAAIAIQFyAAIAAoAkAvAbwBEBQMBQsCQAJAIAAoAkAiASgCKEUEQCAAIAEgAkEGEJ0BIgFBAEgNBSADQQh0IQIgACgCQCEAIAFBgICAgAJxBEAgACgCgAEgAUEEdGoiAEEMaiAALQAMIAJyNgIADAILIAAoAnQgAUEEdGoiACAALQAMIAJyNgIMDAELIAsgASACQf0AIAIbIgEQ5gIiAkUNBCACIAM2AgAgBQ0BC0EAIQgMBQtBACEIIAAgACgCQCgClAMgAUEWIAEgBUEBRxtBABD5AQ0EDAILIABB\u002Fi9BABATDAELIAAQ3AELIAAgBygCBDYCQCALIAcQ+wJBfyEIIAZFDQEgBkEANgIADAELIAsgDBAQCyAQQRBqJAAgCAuoAgIBfgJ\u002FIwBBEGsiAiQAAkAgAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECJCgICAgOAAIQUMAQsCQCAEDQAgAykDACIFQoCAgIBwVA0AIAWnIgYvAQZBLUcNACAGKAIgRQ0AIAAgBUE9IAVBABARIgVCgICAgHCDQoCAgIDgAFENASAAIAUgARBNIQcgACAFEAwgB0UNACADKQMAIgVCIIinQXVJDQEgBaciACAAKAIAQQFqNgIADAELIAAgAiABEIICIgFCgICAgHCDQoCAgIDgAFIEQCAAIAIgBEEDdGopAwBCgICAgDBBASADEBwhBSAAIAIpAwAQDCAAIAIpAwgQDCAFQoCAgIBwg0KAgICA4ABRBEAgACABEAwMAgsgACAFEAwLIAEhBQsgAkEQaiQAIAULDQAgACABIAJBABCaAwstAQF\u002FQQEhAQJAAkACQCAAQQ1rDgQCAQECAAsgAEEwRg0BCyAAQTRGIQELIAELnQMDAn4BfAJ\u002FAkACfgJAAkACQAJAIAFBCGsiBikDACIEQiCIp0EHa0FuSQ0AQX8hAUKAgICAMCEDIAAgBBBlIgRCgICAgHCDQoCAgIDgAFENBSAEQiCIpyIHQXZHBEAgBw0BIATEIQMCQAJAAkAgAkGNAWsOBAACAQEFCyAEQiCGUARAQQAhAUKAgICAwP7\u002FAyEDDAkLQgAgA30hAwwBCyADIAJBAXRBnwJrrHwhAwsgA0L\u002F\u002F\u002F\u002F\u002FD4MgA0KAgICACHxC\u002F\u002F\u002F\u002F\u002Fw9YDQUaQoCAgIDAfiADub0iA0KAgICAwIGA\u002FP8AfSADQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwwFCyAAIAYgAiAEIAAoAhAoAqgCER8ADQVBAA8LIARCgICAgMCBgPz\u002FAHy\u002FIQUCQCACQY0Baw4EAAMCAgELIAWaIQUMAgsQAQALIAJBAXRBnwJrtyAFoCEFC0KAgICAwH4gBb0iA0KAgICAwIGA\u002FP8AfSADQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwshA0EAIQELIAYgAzcDACABCzgBAX8gAEEYECQiAUUEQEKAgICA4AAPCyABQQE2AgAgACgC2AEgAUEEahC7ASABrUKAgICA4H6ECykBAX8gAkIgiKdBdU8EQCACpyIDIAMoAgBBAWo2AgALIAAgASACENIFCyYBAX8gAUIgiKdBdU8EQCABpyICIAIoAgBBAWo2AgALIAAgARAnC7UBAQJ\u002FAkACQCABRQ0AIAEoAgAiAkEATA0BIAEgAkEBayICNgIAIAINAAJAIAEtAAVBAXEEQCAAIAEpAxgQIQwBCyABKAIYIgIgASgCHCIDNgIEIAMgAjYCACABQgA3AhggASgCICICRQ0AIAAgAhDOAQsgASgCCCICIAEoAgwiAzYCBCADIAI2AgAgAUIANwIIIABBEGogASAAKAIEEQAACw8LQfeEAUGo7ABB\u002FShBvcwAEAAACyEAIAEgAkYEQCABEBkPCyAAIAFBBGutQoCAgIDgfoQQDAtFAQF\u002FAkAgAUGAgAFxRQRAIAFBgIACcUUNASAAKAIQKAKMASIBRQ0BIAEtAChBAXFFDQELIAAgAkGqDBC1AUF\u002FIQMLIAML\u002FgICA38CfiMAQRBrIgMkAAJAAkAgAUKAgICAcFoEQCABpyICLwEGQSxGBEACQCAAIANBCGogAUHgABB+IgJFDQAgAykDCCIBQoCAgIBwg0KAgICAMFEEQCAAIAIpAwAQ6AEhAQwFCyAAIAEgAikDCEEBIAIQNiIFQoCAgIBwg0KAgICA4ABRDQMCQAJAIAVCIIinQQFqDgQAAQEAAQsgACACKQMAEJcBIgRBAEgEQCAAIAUQDAwCCyAEDQRCgICAgOAAIQEgACACKQMAEOgBIgZCgICAgHCDQoCAgIDgAFEEQCAAIAUQDAwGCyAAIAYQDCAGpyAFp0YNBAsgACAFEAwgAEGr0gBBABASC0KAgICA4AAhAQwDCyACKAIQKAIsIgBFBEBCgICAgCAhAQwDCyAAIAAoAgBBAWo2AgAgAK1CgICAgHCEIQEMAgsgACABEIsEIgFCIIinQXVJDQEgAaciACAAKAIAQQFqNgIADAELIAUhAQsgA0EQaiQAIAELGgAgACgCECABIAIQ6AUiAUUEQCAAEHALIAELnwMCBH8CfiMAQSBrIgQkACABIAJqIQUgASEDA0ACQCADIAVPDQAgAywAAEEASA0AIANBAWohAwwBCwsCfgJAIAMgAWsiBkGAgICABE8EQCAAQeTIAEEAEDoMAQsgAyAFRgRAIAAgASACEJwDDAILIAAgBEEEaiIAIAIQPkUEQCAAIAEgBhCLAhoDQCADIAVJBEAgAywAACIAQQBOBEAgBEEEaiAAQf8BcRA8GiADQQFqIQMMAgUCQCADIAUgA2sgBEEcahBRIgFB\u002F\u002F8DTQRAIAQoAhwhAwwBCyABQf\u002F\u002FwwBNBEAgBCgCHCEDIARBBGogAUGAgARrQQp2QYCwA2oQhwEaIAFB\u002FwdxQYC4A3IhAQwBCwNAQf3\u002FAyEBIAMgBU8NASADLAAAQUBIBEAgA0EBaiEDDAELCwNAIAUgA0EBaiIDTQRAIAUhAwwCCyADLAAAQUBIDQALCyAEQQRqIAEQhwEaDAILAAsLIARBBGoQNwwCCyAEKAIEKAIQIgBBEGogBCgCCCAAKAIEEQAAC0KAgICA4AALIQggBEEgaiQAIAgL2wECAX8CfkEBIQQCQCAAQgBSIAFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAIMiBUKAgICAgIDA\u002F\u002F8AViAFQoCAgICAgMD\u002F\u002FwBRGw0AIAJCAFIgA0L\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8AgyIGQoCAgICAgMD\u002F\u002FwBWIAZCgICAgICAwP\u002F\u002FAFEbDQAgACAChCAFIAaEhFAEQEEADwsgASADg0IAWQRAQX8hBCAAIAJUIAEgA1MgASADURsNASAAIAKFIAEgA4WEQgBSDwtBfyEEIAAgAlYgASADVSABIANRGw0AIAAgAoUgASADhYRCAFIhBAsgBAuhAgEFfwNAAkACQAJAAkACfyACIAdMIgkgBCAGTHJFBEAgASAHQQJ0aigCACIIIAMgBkECdGooAgAiCUkEQCAIDAILIAggCUcNAyAGQQFqIQYgB0EBaiEHIAghCQwECyAJDQEgASAHQQJ0aigCAAshCSAHQQFqIQcMAgsgBCAGTA0CIAMgBkECdGooAgAhCQsgBkEBaiEGCwJ\u002FAkACQAJAAkAgBQ4DAwABAgsgBiAHcUEBcQwDCyAGIAdzQQFxDAILEAEACyAGIAdyQQFxCyAAKAIAIghBAXFGDQEgACgCBCAITARAIAAgCEEBahDRAgRAQX8PCyAAKAIAIQgLIAAgCEEBajYCACAAKAIIIAhBAnRqIAk2AgAMAQsLIAAQmAZBAAvmAQAgAAJ\u002FIAEoAggiAEH+\u002F\u002F\u002F\u002FB04EQEEAIAJBAXENARpB\u002F\u002F\u002F\u002F\u002FwcgAEH+\u002F\u002F\u002F\u002FB0cNARogASgCBEH\u002F\u002F\u002F\u002F\u002FB2oMAQtBACAAQQBMDQAaIABBH00EQEEAIAEoAhAgASgCDEECdGpBBGsoAgBBICAAa3YiAGsgACABKAIEGwwBCyACQQFxRQRAQf\u002F\u002F\u002F\u002F8HIAEoAgRFDQEaQYCAgIB4IABBIEcNARogASgCECABKAIMQQJ0akEEaygCABpBgICAgHgMAQtBACABKAIQIAEoAgwiAiACQQV0IABrEHEiAGsgACABKAIEGws2AgALEgAgACABIAIgAyAEQZMDELEDCw4AIABBACABQRByELoBC58BAgR\u002FAn4gAzUCACEJA0AgAiAFRkUEQCAAIAVBAnQiB2ogBq0gASAHajUCACAJfnwiCj4CACAFQQFqIQUgCkIgiKchBgwBCwsgACACQQJ0IgdqIAY2AgBBASAEIARBAU0bIQRBASEFA0AgBCAFRkUEQCAAIAVBAnQiBmoiCCAHaiAIIAEgAiADIAZqKAIAEL0ENgIAIAVBAWohBQwBCwsLWgEFfyADQQAgA0EAShshBgNAIAUgBkcEQCAAIAVBAnQiA2ogASADaigCACIHIAIgA2ooAgAiA2siCCAEazYCACADIAdLIAQgCEtyIQQgBUEBaiEFDAELCyAEC6sBAQh\u002FIAAoAggiAyABKAIIIgJHBEBBf0EBIAIgA0obDwsgASgCDCIFIAAoAgwiBiAFIAUgBkgbIgJrIQggBiACayEJAn8DQEEAIAJBAWsiAkEASA0BGkEAIQNBACEEIAIgCWoiByAGSQRAIAAoAhAgB0ECdGooAgAhBAsgAiAIaiIHIAVJBEAgASgCECAHQQJ0aigCACEDCyADIARGDQALQX9BASADIARLGwsLigEBA38jAEGQAWsiAyQAIAMgAjYCjAECfyADQYABIAEgAhDJAiIEQf8ATQRAIAAgAyAEEHIMAQtBfyAAIAQgACgCBGpBAWoQvAENABogAyACNgKMASAAKAIEIgUgACgCAGogACgCCCAFayABIAIQyQIaIAAgACgCBCAEajYCBEEACxogA0GQAWokAAtWAQF\u002FIAJCIIinQXVPBEAgAqciBSAFKAIAQQFqNgIACyAAIAFBPCACIAMQFRogAUIgiKdBdU8EQCABpyIDIAMoAgBBAWo2AgALIAAgAkE9IAEgBBAVGgucAQEEfyMAQRBrIgIkACACQSU6AApBASEDIAFBgAJOBEAgAkH1ADoACyACIAFBCHZBD3FByvgAai0AADoADSACIAFBDHZBD3FByvgAai0AADoADEEEIQMLIAJBCmoiBCADaiIFIAFBD3FByvgAai0AADoAASAFIAFBBHZBD3FByvgAai0AADoAACAAIAQgA0ECchCLAhogAkEQaiQAC7wEAQV\u002FIAFFBEAgACACQQRxQQhyENkBDwsCQAJAIAJBAXFFIAAoAhBBqX9HIAFBBEdycg0AIABBABBzQbd\u002FRw0AIAAoAgAgACgCIBAWIQECQAJAIAAQDw0AIAAoAhBBt39HDQAgABAPDQAgAEEDIAJBe3EQ9gFFDQELIAAoAgAgARAQQX8PCyAAQcIBEA0gACABEBcgACAAKAJALwG8ARAUIAAoAgAgARAQDAELQX8hAwJAIAAgAUEBayIEIgUgAhD2AQ0AIAJBe3EhBiACQQFxIQcDQCAAKAIQIQECQAJAAkACQAJAAkACQAJAAkACQCAEQQFrDgcBAgMEBQYHAAsgAUElRwRAQZsBIQIgAUEqRg0JIAFBL0cNDEGcASECDAkLQZ0BIQIMCAtBngEhAkEAIQMCQCABQStrDgMICgAKC0GfASECDAcLIAFB6gBqIgFBA08NCSABQd8AayECDAYLQQAhAwJAAkACQAJAIAFB5gBqDgMBCwIACwJAIAFByQBqDgIIAwALQaQBIQICQCABQTxrDgMJCwALC0GmASECDAgLQaUBIQIMBwtBpwEhAgwGC0GoASECDAULIAFB4wBqIgFBBE8NB0Gq2a7teiABQQN0diECDAQLQa4BIQIgAUEmRw0GDAMLQa8BIQIgAUHeAEcNBQwCC0GwASECIAFB\u002FABHDQQMAQtBqQEhAiAHRQ0CC0F\u002FIQMgABAPDQEgACAFIAYQ9gENASAAIAJB\u002FwFxEA0MAAsACyADDwtBAAtHAQJ\u002FIAAoAnwhAgJAA0AgAkEASgRAIAAoAnQgAkEBayICQQR0aiIDKAIAIAFHDQEgAygCBA0BDAILCyAAIAEQ6QQhAgsgAgspAQF\u002FQX8hAQJAIABBKBAoDQAgABCLAQ0AQX9BACAAQSkQKBshAQsgAQvQAQECfyAAKAIAIQUjAEHQAGsiBiQAAkAgASADELoFBEACQCAABEAgBiAFIAZBEGogAxCBATYCACAAQeKNASAGEBMMAQsgBSADQeKNARCBAwtBACEADAELQQAhACAFIAFBHGpBFCABQSRqIAEoAiBBAWoQZA0AIAEgASgCICIAQQFqNgIgIAEoAhwgAEEUbGoiAEIANwIAIABBADYCECAAQgA3AgggACAFIAIQFjYCDCAFIAMQFiEBIAAgBDYCCCAAIAE2AhALIAZB0ABqJAAgAAsaACAAQd4AQdgAIAEbEA4gACACQf\u002F\u002FA3EQJgu2AQECfwJAIAIgASgCBCIKRgRAIAMhCwwBCyAAIAogAiADIAQgBSAGIAcgCCAJEPsBIgVBAE4NAEF\u002FDwtBACECIAEoAsACIgNBACADQQBKGyEDAkADQCACIANHBEACQCAFIAEoAsgCIAJBA3RqIgovAQJHDQAgCi0AACIKQQF2QQFxIARHDQAgCyAKQQFxRg0DCyACQQFqIQIMAQsLIAAgASALIAQgBSAGIAcgCCAJENIDIQILIAILjgEBAX8gACAGQQwQRyIGQoCAgIBwg0KAgICA4ABSBEAgACAAKAIAQQFqNgIAIAanIgcgBTsBKiAHIAQ6ACkgByADOgAoIAcgATYCJCAHIAA2AiAgByAHLQAFQe8BcSAEQQJrQQRJQQR0cjoABSAAIAYgACACQeyWASACGxC2ASIBIAMQmAMgACABEBALIAYLjgIBAX4CQAJAAkACQCABQv\u002F\u002F\u002F\u002F9vWA0AIAAgAUE9IAFBABARIgFCgICAgHCDIgNCgICAgOAAUQRAIAEPCyADQoCAgIAwUQRAIAJCIIinQXVJDQMMBAsgAUL\u002F\u002F\u002F\u002F\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\u002FAH0gEkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsMAwsgABBwQoCAgIDgACESDAMLEAEAC0KAgICAwH4gCiAMcg0AGiAAIAggAyAEQQAgACgCECgCpAIRKgALIRIgC0HBAEkNACAAKAIQIgBBEGogCCAAKAIEEQAACyACBEAgAiAJKAJMNgIACyAJQdAAaiQAIBILeQEBfwJAAkACQAJAAkAgASgCACICQYABag4FBAQEAgABCyAAKAIAIAEpAxAQDCAAKAIAIAEpAxgQDA8LIAJBqX9HDQELIAAoAgAgASgCEBAQDwsgAkHVAGpBLU0EQCAAKAIAIAEoAhAQEAsPCyAAKAIAIAEpAxAQDAv1AgIEfwJ+IwBBIGsiAyQAIANCgICAgDA3AxggA0KAgICAMDcDECADIABBO0ECQQBBAiADQRBqEIUBIgc3AwhCgICAgOAAIQggB0KAgICAcINCgICAgOAAUgRAAkAgAkKAgICAcINCgICAgDBRBEAgACACQQAgA0EIahCQBiECDAELIAAgAkEBIANBCGoQowEhAiADKQMIIQcLIAACfiAAIAJCgICAgHCDQoCAgIDgAFIEfgJ\u002FQQAgB0KAgICAcFQNABpBACAHpyIFLwEGQQ9HDQAaIAUoAiALQQhqIQYDQCAEQQJGBEBBACEEA0AgBEECRwRAIAYgBEEDdCIFaikDACIHQiCIp0F1TwRAIAenIgAgACgCAEEBajYCAAsgASAFaiAHNwMAIARBAWohBAwBCwsgAiEIIAMpAwgMAwsgBEEDdCEFIARBAWohBCAAIAUgBmopAwAQVUUNAAsgAykDCAUgBwsQDCACCxAMCyADQSBqJAAgCAsOACABIAAoAhBBOBCdAgtDACAAAn8CfyADBEAgASgCJCACQQN0akEEagwBC0EAIAEoAiAiA0UNARogAyABLwEoQQR0aiACQQR0agsoAgALENEBC00BA38gAkL\u002F\u002F\u002F\u002F\u002FB1gEQCAAIAEgAqdBgICAgHhyQYCAARDNAQ8LIAAgAhCLAyIDRQRAQX8PCyAAIAEgA0GAgAEQzQEhBSAAIAMQECAFC0MAIAAgASACQQBOBH4gAq0FQoCAgIDAfiACuL0iAUKAgICAwIGA\u002FP8AfSABQoCAgICAgID4\u002FwBWGwsgA0GAgAEQzwELIQEBfiAAIAEgACACELYBIgIgAUEAEBEhAyAAIAIQECADCw0AIAAoAhAgAacQxgILngQCBX8BfiMAQSBrIgYkAAJAAkACQAJAIAMEQCABQoCAgIBgg0KAgICAIFINAQwCCyABQoCAgIBwVA0BC0EBIQQCQAJAIAJCIIinIghBAWoOBAACAgECCyACpyEFCyABQv\u002F\u002F\u002F\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\u002FIQYgAEG\u002Ff0sNACAAQQtqIgBBeHEhBkHI3gQoAgAiB0UNAEEAIAZrIQMCQAJAAkACf0EAIAZBgAJJDQAaQR8gBkH\u002F\u002F\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\u002F\u002F\u002F8HTQRAIAJBJiACQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAAsgAyAANgIcIANCADcCECAAQQJ0QfTgBGohAQJAAkBByN4EKAIAIgVBASAAdCIEcUUEQEHI3gQgBCAFcjYCACABIAM2AgAMAQsgAkEZIABBAXZrQQAgAEEfRxt0IQAgASgCACEFA0AgBSIBKAIEQXhxIAJGDQIgAEEddiEFIABBAXQhACABIAVBBHFqIgQoAhAiBQ0ACyAEIAM2AhALIAMgATYCGEEIIQIgAyIBIQBBDAwBCyABKAIIIgAgAzYCDCABIAM2AgggAyAANgIIQQAhAEEYIQJBDAsgA2ogATYCACACIANqIAA2AgALQdDeBCgCACIAIAZNDQBB0N4EIAAgBmsiATYCAEHc3gRB3N4EKAIAIgAgBmoiAjYCACACIAFBAXI2AgQgACAGQQNyNgIEIABBCGohAAwEC0HE1ARBMDYCAEEAIQAMAwsgACACNgIAIAAgACgCBCAEajYCBCACQXggAmtBB3FqIgggBkEDcjYCBCABQXggAWtBB3FqIgQgBiAIaiIDayEHAkBB3N4EKAIAIARGBEBB3N4EIAM2AgBB0N4EQdDeBCgCACAHaiIANgIAIAMgAEEBcjYCBAwBC0HY3gQoAgAgBEYEQEHY3gQgAzYCAEHM3gRBzN4EKAIAIAdqIgA2AgAgAyAAQQFyNgIEIAAgA2ogADYCAAwBCyAEKAIEIgBBA3FBAUYEQCAAQXhxIQkgBCgCDCECAkAgAEH\u002FAU0EQCAEKAIIIgEgAkYEQEHE3gRBxN4EKAIAQX4gAEEDdndxNgIADAILIAEgAjYCDCACIAE2AggMAQsgBCgCGCEGAkAgAiAERwRAQdTeBCgCABogBCgCCCIAIAI2AgwgAiAANgIIDAELAkAgBCgCFCIABH8gBEEUagUgBCgCECIARQ0BIARBEGoLIQEDQCABIQUgACICQRRqIQEgACgCFCIADQAgAkEQaiEBIAIoAhAiAA0ACyAFQQA2AgAMAQtBACECCyAGRQ0AAkAgBCgCHCIAQQJ0QfTgBGoiASgCACAERgRAIAEgAjYCACACDQFByN4EQcjeBCgCAEF+IAB3cTYCAAwCCyAGQRBBFCAGKAIQIARGG2ogAjYCACACRQ0BCyACIAY2AhggBCgCECIABEAgAiAANgIQIAAgAjYCGAsgBCgCFCIARQ0AIAIgADYCFCAAIAI2AhgLIAcgCWohByAEIAlqIgQoAgQhAAsgBCAAQX5xNgIEIAMgB0EBcjYCBCADIAdqIAc2AgAgB0H\u002FAU0EQCAHQXhxQezeBGohAAJ\u002FQcTeBCgCACIBQQEgB0EDdnQiAnFFBEBBxN4EIAEgAnI2AgAgAAwBCyAAKAIICyEBIAAgAzYCCCABIAM2AgwgAyAANgIMIAMgATYCCAwBC0EfIQIgB0H\u002F\u002F\u002F8HTQRAIAdBJiAHQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAgsgAyACNgIcIANCADcCECACQQJ0QfTgBGohAAJAAkBByN4EKAIAIgFBASACdCIFcUUEQEHI3gQgASAFcjYCACAAIAM2AgAMAQsgB0EZIAJBAXZrQQAgAkEfRxt0IQIgACgCACEBA0AgASIAKAIEQXhxIAdGDQIgAkEddiEBIAJBAXQhAiAAIAFBBHFqIgUoAhAiAQ0ACyAFIAM2AhALIAMgADYCGCADIAM2AgwgAyADNgIIDAELIAAoAggiASADNgIMIAAgAzYCCCADQQA2AhggAyAANgIMIAMgATYCCAsgCEEIaiEADAILAkAgCEUNAAJAIAUoAhwiAUECdEH04ARqIgIoAgAgBUYEQCACIAA2AgAgAA0BQcjeBCAHQX4gAXdxIgc2AgAMAgsgCEEQQRQgCCgCECAFRhtqIAA2AgAgAEUNAQsgACAINgIYIAUoAhAiAQRAIAAgATYCECABIAA2AhgLIAUoAhQiAUUNACAAIAE2AhQgASAANgIYCwJAIANBD00EQCAFIAMgBmoiAEEDcjYCBCAAIAVqIgAgACgCBEEBcjYCBAwBCyAFIAZBA3I2AgQgBSAGaiIEIANBAXI2AgQgAyAEaiADNgIAIANB\u002FwFNBEAgA0F4cUHs3gRqIQACf0HE3gQoAgAiAUEBIANBA3Z0IgJxRQRAQcTeBCABIAJyNgIAIAAMAQsgACgCCAshASAAIAQ2AgggASAENgIMIAQgADYCDCAEIAE2AggMAQtBHyEAIANB\u002F\u002F\u002F\u002FB00EQCADQSYgA0EIdmciAGt2QQFxIABBAXRrQT5qIQALIAQgADYCHCAEQgA3AhAgAEECdEH04ARqIQECQAJAIAdBASAAdCICcUUEQEHI3gQgAiAHcjYCACABIAQ2AgAgBCABNgIYDAELIANBGSAAQQF2a0EAIABBH0cbdCEAIAEoAgAhAQNAIAEiAigCBEF4cSADRg0CIABBHXYhASAAQQF0IQAgAiABQQRxaiIHKAIQIgENAAsgByAENgIQIAQgAjYCGAsgBCAENgIMIAQgBDYCCAwBCyACKAIIIgAgBDYCDCACIAQ2AgggBEEANgIYIAQgAjYCDCAEIAA2AggLIAVBCGohAAwBCwJAIAlFDQACQCACKAIcIgFBAnRB9OAEaiIFKAIAIAJGBEAgBSAANgIAIAANAUHI3gQgC0F+IAF3cTYCAAwCCyAJQRBBFCAJKAIQIAJGG2ogADYCACAARQ0BCyAAIAk2AhggAigCECIBBEAgACABNgIQIAEgADYCGAsgAigCFCIBRQ0AIAAgATYCFCABIAA2AhgLAkAgA0EPTQRAIAIgAyAGaiIAQQNyNgIEIAAgAmoiACAAKAIEQQFyNgIEDAELIAIgBkEDcjYCBCACIAZqIgUgA0EBcjYCBCADIAVqIAM2AgAgCARAIAhBeHFB7N4EaiEAQdjeBCgCACEBAn9BASAIQQN2dCIHIARxRQRAQcTeBCAEIAdyNgIAIAAMAQsgACgCCAshBCAAIAE2AgggBCABNgIMIAEgADYCDCABIAQ2AggLQdjeBCAFNgIAQczeBCADNgIACyACQQhqIQALIApBEGokACAAC1IBAn9BpNQEKAIAIgEgAEEHakF4cSICaiEAAkAgAkEAIAAgAU0bRQRAIAA\u002FAEEQdE0NASAAEAkNAQtBxNQEQTA2AgBBfw8LQaTUBCAANgIAIAELgwECBX8BfgJAIABCgICAgBBUBEAgACEHDAELA0AgAUEBayIBIAAgAEIKgCIHQgp+fadBMHI6AAAgAEL\u002F\u002F\u002F\u002F\u002FnwFWIQUgByEAIAUNAAsLIAenIgIEQANAIAFBAWsiASACIAJBCm4iA0EKbGtBMHI6AAAgAkEJSyEGIAMhAiAGDQALCyABC94BAQJ\u002FIAJBAEchAwJAAkACQCAAQQNxRSACRXINACABQf8BcSEEA0AgAC0AACAERg0CIAJBAWsiAkEARyEDIABBAWoiAEEDcUUNASACDQALCyADRQ0BIAFB\u002FwFxIgMgAC0AAEYgAkEESXJFBEAgA0GBgoQIbCEDA0AgACgCACADcyIEQX9zIARBgYKECGtxQYCBgoR4cQ0CIABBBGohACACQQRrIgJBA0sNAAsLIAJFDQELIAFB\u002FwFxIQEDQCABIAAtAABGBEAgAA8LIABBAWohACACQQFrIgINAAsLQQAL5QUDBHwBfwF+AkACQAJAAnwCQCAAvSIGQiCIp0H\u002F\u002F\u002F\u002F\u002FB3EiBUH60I2CBE8EQCAAvUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVg0FIAZCAFMEQEQAAAAAAADwvw8LIABE7zn6\u002FkIuhkBkRQ0BIABEAAAAAAAA4H+iDwsgBUHD3Nj+A0kNAiAFQbHFwv8DSw0AIAZCAFkEQEEBIQVEdjx5Ne856j0hASAARAAA4P5CLua\u002FoAwCC0F\u002FIQVEdjx5Ne856r0hASAARAAA4P5CLuY\u002FoAwBCwJ\u002FIABE\u002FoIrZUcV9z+iRAAAAAAAAOA\u002FIACmoCIBmUQAAAAAAADgQWMEQCABqgwBC0GAgICAeAsiBbciAkR2PHk17znqPaIhASAAIAJEAADg\u002FkIu5r+ioAsiACAAIAGhIgChIAGhIQEMAQsgBUGAgMDkA0kNAUEAIQULIAAgAEQAAAAAAADgP6IiA6IiAiACIAIgAiACIAJELcMJbrf9ir6iRDlS5obKz9A+oKJEt9uqnhnOFL+gokSFVf4ZoAFaP6CiRPQQEREREaG\u002FoKJEAAAAAAAA8D+gIgREAAAAAAAACEAgBCADoqEiA6FEAAAAAAAAGEAgACADoqGjoiEDIAVFBEAgACAAIAOiIAKhoQ8LIAAgAyABoaIgAaEgAqEhAQJAAkACQCAFQQFqDgMAAgECCyAAIAGhRAAAAAAAAOA\u002FokQAAAAAAADgv6APCyAARAAAAAAAANC\u002FYwRAIAEgAEQAAAAAAADgP6ChRAAAAAAAAADAog8LIAAgAaEiACAAoEQAAAAAAADwP6APCyAFQf8Haq1CNIa\u002FIQIgBUE5TwRAIAAgAaFEAAAAAAAA8D+gIgAgAKBEAAAAAAAA4H+iIAAgAqIgBUGACEYbRAAAAAAAAPC\u002FoA8LRAAAAAAAAPA\u002FIAVB\u002FwdzrUI0hr8iA6EgACABoaAgACABIAOgoUQAAAAAAADwP6AgBUETTRsgAqIhAAsgAAtZAQN\u002FQX8hASAAIAAoAgAiAkECaiIDENECBH9BfwUgACgCCCIBQQRqIAEgAkECdCICEKsBIAAoAggiAUEANgIAIAEgAmpBfzYCBCAAIAM2AgAgABCYBkEACwsbACAAIAFB\u002FwFxEA4gACACIAAoAgRrQQRrEBsLRAEBf0F\u002FIQMgACAAKAIEIAJqELwBBH9BfwUgACgCACABaiIDIAJqIAMgACgCBCABaxCrASAAIAAoAgQgAmo2AgRBAAsL7AQBBn8gACgCACIGQQFqIQJBCCEDAkACQAJAIAYtAAAiB0EwayIFQQhPBEBBfiEEAkACQAJAAkACQAJAIAdB7gBrDgsBCQkJAgkDBQQJBQALAkAgB0HiAGsOBQgJCQkACQtBDCEDDAcLQQohAwwGC0ENIQMMBQtBCSEDDAQLQQshAwwDCwJAIAFFDQAgAi0AAEH7AEcNACAGQQJqIQIgBi0AAiEFQQAhAwNAIAIhAUF\u002FIQQgBRCnBCICQQBIDQUgAiADQQR0ciIDQf\u002F\u002FwwBLDQUgAUEBaiICLQAAIgVB\u002FQBHDQALIAFBAmohAgwDCyAGQQJBBCAHQfgARhsiB2pBAWohBUEAIQNBACEEA0AgBCAHRwRAIAItAAAQpwQiBkEASARAQX8PBSAEQQFqIQQgAkEBaiECIAYgA0EEdHIhAwwCCwALCyABQQJHIANBgHhxQYCwA0dyDQEgBS0AAEHcAEcNASAFLQABQfUARw0BIAVBAmohAUEAIQJBACEEA0ACQCACQQRGDQAgASACai0AABCnBCIGQQBIDQAgAkEBaiECIAYgBEEEdHIhBAwBCwsgAkEERyAEQYC4A0lyIARB\u002F78DS3INASADQQp0QYD4P3EgBEH\u002FB3FyQYCABGohAyAFQQZqIQIMAgsgAUECRgRAQX8hBCAFDQNBACEDIAItAABBOmtBdkkNAgwDCyACLQAAQTBrIgFBB0sEQCAFIQMMAgsgBkECaiECIAEgBUEDdHIiA0EfSw0BIAYtAAJBMGsiAUEHSw0BIAZBA2ohAiABIANBA3RyIQMMAQsgBSECCyAAIAI2AgAgAyEECyAEC6MBAQV\u002FIAAoAgBBCGohAyACIgZBB3EhB0EgIQUDQCADKAIUIgQgASAFaiICSQRAIAMoAgxFBEAgACgCACEEIANCADcCDCADQoCAgICAgICAgH83AgQgAyAENgIACyADIAIQqwQgAyACNgIUIAIhBAsgACADEEkaIABBADYCBCAAIAEgByAEELYDRQRAIAVBAXYgBWohBQwBCwsgACABIAYQugEaC1ABA38gAkEAIAJBAEobIQICQANAIAIgBEYNASAAIARBAnRqIgMgAygCACIDIAFrNgIAIARBAWohBCABIANLIQVBASEBIAUNAAtBACEBCyABCysBAn8gAkEFdSIDQQBIIAEgA01yBH9BAAUgACADQQJ0aigCACACdkEBcQsLwgEBB38gACgCDCIEIQMCQANAIAMEQCAAKAIQIgcgA0ECdGpBBGsiBSgCAA0CIANBAWshAwwBCwsgAEGAgICAeDYCCCAAQQAQUBpBAA8LIAAgACgCCCADIARrQQV0ajYCCCAFKAIAZyIFBEBBICAFayEIQQAhBANAIAMgBEZFBEAgByAEQQJ0aiIJIAYgCHYgCSgCACIGIAV0cjYCACAEQQFqIQQMAQsLIAAgACgCCCAFazYCCAsgACABIAIgA0EAENwCCycBAn8gAUIAUwRAIABCACABfRAyIQMgAEEBNgIEIAMPCyAAIAEQMgskACAAQgA3AgAgACABNgIUIABCADcCCCAAIAJBhwMgAhs2AhALYwEBfwJAIAFCIIinIgJFIAJBC2pBEUtyDQACQCABQoCAgIBwVA0AIAGnIgIvAQZBBEcNACACKQMgIgFCIIinIgJFIAJBC2pBEUtyDQELIABBqzVBABASQoCAgIDgACEBCyABC80CAQJ\u002FIwBBEGsiAyQAIAMgAjcDCAJAAkAgACABEMwBIgRBAEgNACAERQRAIABCgICAgDBBASADQQhqEOACIQEMAgsgACABQT0gAUEAEBEiAkKAgICAcINCgICAgOAAUQRAIAIhAQwCCwJAAkAgAkKAgICAcFoEQAJAIAKnLQAFQRBxRQ0AIAAgAhD8AiIERQRAIAAgAhAMDAULIAAgBEYNACAAIAIgBCkDQBBNRQ0AIAAgAhAMDAILIAAgAkHVASACQQAQESEBIAAgAhAMIAFCgICAgHCDIgJCgICAgOAAUQ0EQoCAgIAwIAEgAkKAgICAIFEbIQILIAJCgICAgHCDQoCAgIAwUg0BCyAAQoCAgIAwQQEgA0EIahDgAiEBDAILIAAgAkEBIANBCGoQowEhASAAIAIQDAwBC0KAgICA4AAhAQsgA0EQaiQAIAELRwEEfyAAKAL0ASIDQQAgA0EAShshAwNAIAIgA0YEQEEADwsgAkEEdCEFIAJBAWohAiAFIAAoAvwBaiIEKAIMIAFHDQALIAQLNgADQCABIAJMRQRAIABBtQEQDSAAIAFB\u002F\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\u002FIAJCgICAgMCBgPz\u002FAHwiBEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FB4MhAiAEQj+IpyEAAkACQCAEQjSIp0H\u002FD3EiAwRAIANB\u002Fw9HDQEgAlBFBEAgARAqQQAMBAsgASAAEH9BAAwDCyACUARAIAEgABCAAUEADAMLIAJCDIYiAiACeSIEhiECQQAgBKdrIQMMAQsgAkILhkKAgICAgICAgIB\u002FhCECCyABIANB\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\u002F\u002F\u002F8fcSEEDAELCyAEQf\u002F\u002F\u002F\u002F8DSw0AIAYoAhQgB2opAwAiEEKAgICAcINCgICAgJB\u002FUg0AIAAgEBCoASIERQ0AIARB8f8AIAQtAAAbIQIgBCEDCyAFIAI2AiAgBUHQAGpB6CogBUEgahDzASAAIAMQMQJAIAgoAggiAi8BBhDgAQRAIAIoAiAiBi8AESICQQt2QQFxIQogAkGACHFFDQFBfyEDAkAgBigCUCICRQ0AIAgoAiAgBigCFEF\u002Fc2ohDyACIAYoAkxqIQkgBigCRCEEQQAhDQNAIAQhAyACIAlPDQEgAkEBaiEHAn8gAi0AACICRQRAAkAgBUHoAGogByAJELsFIgtBAEgNACAFKAJoIQ5BACEEIwBBEGsiAiQAAkAgAkEMaiAHIAtqIgsgCRC7BSIHQQBIBEBBfyEHDAELIAIoAgwiBEEBdkEAIARBAXFrcyEECyAFIAQ2AmwgAkEQaiQAIAdBAEgNACAFKAJsIANqIQQgByALagwCCyAGKAJEIQMMAwsgAyACQQFrIgIgAkH\u002FAXFBBW4iDkEFbGtB\u002FwFxakEBayEEIAcLIQIgDSAOaiINIA9NDQALCyAFIAAgBigCQBCPBCICQZ6AASACGzYCECAFQdAAaiIEQdUqIAVBEGoQ8wEgACACEDEgA0F\u002FRwRAIAUgAzYCACAEQdPrACAFEPMBCyAFQdAAakEpEA4MAQtBACEKIAVB0ABqQbuJAUEAEPMBCyAFQdAAakEKEA4gCkUNAAsLIAVB0ABqQQAQDkKAgICAICEQIAUoAlxFBEAgACAFKAJQEGAhEAsgBUHQAGoQiQEgACABQTYgEEEDEBUaIAVB8ABqJAALjwMCA38EfiMAQRBrIgMkACABQQhrIgQpAwAhBgJ\u002FAkACQCAAIAFBEGsiASkDABBlIgdCgICAgHCDQoCAgIDgAFEEQCAAIAYQDAwBCyAAIAYQZSIGQoCAgIBwg0KAgICA4ABRBEAgACAHEAwMAQsgB0IgiCIIQvb\u002F\u002F\u002F8PUiAGQiCIIglC9v\u002F\u002F\u002Fw9ScUUEQCAIIAlSBEAgACAHEAwgACAGEAwgAEH2GUEAEBIMAgsgACACIAEgByAGIAAoAhAoAqwCESMADQEMAgsgACADQQxqIAcQlQEEQCAAIAYQDAwBCyAAIANBCGogBhCVAQ0AIAECfwJAAkACQAJAAkACQCACQa4Baw4DAQMCAAsCQCACQaEBaw4CBQAECyADKAIMIAMoAgh1DAULIAMoAgggAygCDHEMBAsgAygCCCADKAIMcgwDCyADKAIIIAMoAgxzDAILEAEACyADKAIMIAMoAgh0C603AwAMAQsgAUKAgICAMDcDACAEQoCAgIAwNwMAQX8MAQtBAAshBSADQRBqJAAgBQuGBQIHfwJ+AkAgAUKAgICAcINCgICAgJB\u002FUgRAQoCAgIDgACEKIAAgARA0IgFCgICAgHCDQoCAgIDgAFENAQsCQCACQoCAgIBwg0KAgICAkH9RDQBCgICAgOAAIQogACACEDQiAkKAgICAcINCgICAgOAAUg0AIAEhAgwBCwJAIAKnIgUpAgQiCkL\u002F\u002F\u002F\u002F\u002FB4NQDQAgAaciAykCBCELAkAgAygCAEEBRyAKIAuFQoCAgIAIg0IAUnINACADIAAoAhAoAgwRBQAgBSkCBCIKpyIEQf\u002F\u002F\u002F\u002F8HcSIHIAMpAgQiC6ciBkH\u002F\u002F\u002F\u002F\u002FB3EiCGogBEEfdnQgBkEfdiIJQRFzakkNACAFQRBqIQYgA0EQaiEEIAkEQCAEIAhBAXRqIAYgB0EBdBAeGiADIAMpAgQiCiAFKQIEfEL\u002F\u002F\u002F\u002F\u002FB4MgCkKAgICAeIOENwIEDAILIAQgCGogBiAHEB4aIAMgAykCBCIKIAUpAgR8Qv\u002F\u002F\u002F\u002F8HgyILIApCgICAgHiDhDcCBCAEIAunakEAOgAADAELAn4CQAJAIAunQf\u002F\u002F\u002F\u002F8HcSAKp0H\u002F\u002F\u002F\u002F\u002FB3FqIgdBgICAgARPBEAgAEHkyABBABA6DAELIAAgByAKIAuEpyIGQR92EOkBIggNAQtCgICAgOAADAELIAhBEGohBAJAIAZBAE4EQCAEIANBEGogAygCBEH\u002F\u002F\u002F\u002F\u002FB3EQHiIEIAMoAgRB\u002F\u002F\u002F\u002F\u002FwdxaiAFQRBqIAUoAgRB\u002F\u002F\u002F\u002F\u002FwdxEB4aIAQgB2pBADoAAAwBCyAEIAMgAygCBEH\u002F\u002F\u002F\u002F\u002FB3EQkwUgBCADKAIEQQF0aiAFIAUoAgRB\u002F\u002F\u002F\u002F\u002FwdxEJMFCyAIrUKAgICAkH+ECyEKIAAgARAMDAELIAEhCgsgACACEAwgCgsPACAAIAFCgICAgDAQggILCwAgAEGfCUEAEBILjgIBA38jAEEQayIFJAAgBSAAOQMIIAUgAUEBayIHNgIAIAZBgAFB9t8AIAUQSBogAyAGLQAAQS1GNgIAIAQgBi0AAToAACABQQJOBEAgBEEBaiAGQQNqIAcQHhoLIAEgBGpBADoAACACIQkgASAGaiABQQFKakECaiEBA0AgASICQQFqIQEgAiwAACIDEI8GDQALQQEhBAJAAkACQCADQf8BcUEraw4DAQIAAgtBACEECyABLAAAIQMgASECC0EAIQEgA0EwayIDQQlNBEADQCABQQpsIANrIQEgAiwAASEIIAJBAWohAiAIQTBrIgNBCkkNAAsLIAlBACABayABIAQbQQFqNgIAIAVBEGokAAuADAIHfwV+IwBBoANrIgUkAAJAIAG9IgxCgICAgICAgPj\u002FAINCgICAgICAgPj\u002FAFEEQCAMQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoGAgICAgID4\u002FwBaBEAgBUHOwrkCNgKgAgwCCyAFQaACaiICIQMgAUQAAAAAAAAAAGMEQCAFQS06AKACIAJBAXIhAwsgA0HZCy0AADoACCADQdELKQAANwAADAELAkACQAJAIARFBEACfiABmUQAAAAAAADgQ2MEQCABsAwBC0KAgICAgICAgIB\u002FCyINQoCAgICAgIAQfUKBgICAgICAYFQgDbkgAWJyDQEgBUEAOgDlASANIA1CP4ciDIUgDH0hDCACrSEOIAVB5QFqIQIDQCACIgNBAWsiAiAMIAwgDoAiDyAOfn2nIgRBMHIgBEHXAGogBEEKSRs6AAAgDCAOWiELIA8hDCALDQALIA1CAFMEQCADQQJrIgJBLToAAAsgBUGgAmogAhCHBgwEC0QAAAAAAAAAACABIAFEAAAAAAAAAABhGyEBIARBAkYEQEEAIQICQCAFQaACaiIEIAEgA0EBaiIHQQAQiQMgBWotAJ8CQTVHDQAgBCABIAdBgAgQiQMiBiAFQaABaiIIIAEgB0GAEBCJA0cNACAEIAggBhBoDQBBgAhBgBAgBS0AoAJBLUYbIQILIAVBoAJqIAEgAyACEIkDGgwECyAEQQNxQQFGDQELIAVBnwFqIQZBESEHQQEhAgNAIAIgB08EQEEAIQJBFSEDDAMLIAEgAiAHakEBdiIDIAVBHGogBUEgaiAFQaABakEAIAVBoAJqIggQuQIgCBCABiABYQRAQQEgAyADQQBKGyEHA0AgA0ECSA0CIAMgBmotAABBMEcEQCADIQcMAwUgA0EBayEDDAELAAsABSADQQFqIQIMAQsACwALQQAhAiABIANBAWoiByAFQRxqIgkgBUEYaiIKIAVBoAFqIgZBACAFQaACaiIIELkCAkAgAyAGai0AAEE1Rw0AIAEgByAJIAogBkGACCAIELkCIAEgByAFQRRqIAVBEGogBUEgaiIJQYAQIAgQuQIgBiAJIAcQaA0AIAUoAhwgBSgCFEcNAEGACEGAECAFKAIYGyECCyADIQcLIAEgByAFQRxqIAVBIGogBUGgAWogAiAFQaACaiICELkCIAUoAiAEQCAFQS06AKACIAJBAXIhAgsgBSgCHCEGAkAgBEEEcQ0AIAMgBkggBkEATHJFBEAgBiAHTgRAQQAhAyAGIAdrIgRBACAEQQBKGyEEIAIgBUGgAWogBxAeIAdqIQIDQCADIARHBEAgAkEwOgAAIANBAWohAyACQQFqIQIMAQsLIAJBADoAAAwDCyACIAVBoAFqIAYQHiAGaiICQS46AABBACEDIAcgBmsiBEEAIARBAEobIQQDQCACQQFqIQIgAyAERwRAIAIgBUGgAWogAyAGamotAAA6AAAgA0EBaiEDDAELCyACQQA6AAAMAgsgBkEFakEFSw0AIAJBsNwAOwAAQQAhA0EAIAZrIQQgAkECaiECA0AgAyAERwRAIAJBMDoAACADQQFqIQMgAkEBaiECDAELCyACIAVBoAFqIAcQHiAHakEAOgAADAELIAIgBS0AoAE6AAACQCAHQQJIBEAgAkEBaiECDAELIAJBLjoAASACQQJqIQJBASEDA0AgAyAHRg0BIAIgBUGgAWogA2otAAA6AAAgA0EBaiEDIAJBAWohAgwACwALIAJB5QA6AAAgBkEBayEDIAZBAEwEfyACQQFqBSACQSs6AAEgAkECagshAiAFIAM2AgAjAEEQayIEJAAgBCAFNgIMIwBBoAFrIgMkACADQQhqIgdBgNIEQZABEB4aIAMgAjYCNCADIAI2AhwgA0H\u002F\u002F\u002F\u002F\u002FB0F+IAJrIgYgBkH\u002F\u002F\u002F\u002F\u002FB0sbIgY2AjggAyACIAZqIgY2AiQgAyAGNgIYIAdB7usAIAUQkwQgAkF+RwRAIAMoAhwiAiACIAMoAhhGa0EAOgAACyADQaABaiQAIARBEGokAAsgACAFQaACahBgIRAgBUGgA2okACAQCykBAX8gAUIgiKdBdU8EQCABpyIDIAMoAgBBAWo2AgALIAAgASACEJIBC00BAX8CQCAAIAEgACgCBEH\u002F\u002F\u002F\u002F\u002FB3EiACABKAIEQf\u002F\u002F\u002F\u002F8HcSICIAAgAkgbEOoFIgENAEEAIQEgACACRg0AQX9BASAAIAJJGyEBCyABCwoAIAAgARC1A0ULiwMCA38BfCMAQSBrIgQkAAJAAkACQAJAAkAgAkIgiKciBUEDTwRAIAVBdkcNASAEQRxqIAKnQQRqIgNBARDtASAAKALYASAEQQhqIgUQuwEgBSAENQIcEDIaIAUgAxC9AiEGIAUQGSAAIAIQDCAGRQ0CDAQLIAKnIgNBAEgNASAEIAM2AhwMAwsgBUEHa0FtTQRAIAQCfyACQoCAgIDAgYD8\u002FwB8vyIHRAAAAAAAAPBBYyAHRAAAAAAAAAAAZnEEQCAHqwwBC0EACyIDNgIcIAcgA7hhDQMMAQsgAwRAQX8hAyAAIAIQlgEiAkKAgICAcINCgICAgOAAUQ0EIAAgBEEcaiACQQEQvgJFDQMMBAsgACAEQRxqIAIQdQRAIAAgAhAMDAILQX8hAyAAIAIQlgEiAkKAgICAcINCgICAgOAAUQ0DIAAgBEEEaiACQQAQvgINAyAEKAIEIAQoAhxGDQILIABBiscAQQAQRAtBfyEDDAELIAEgBCgCHDYCAEEAIQMLIARBIGokACADC0ABAX4gABDiASICQoCAgIBwg0KAgICA4ABSBEAgAqdBBGogARCcAkUEQCACDwsgACACEAwgABBwC0KAgICA4AALMgEBfyMAQdAAayICJAAgAiAAIAJBEGogARCBATYCACAAQbzpACACEMMCIAJB0ABqJAALoAECAX8BfiMAQRBrIgUkACAFIAQ2AgxBfyEEIAAgASAFQQxqENMBRQRAIAMoAgAiAEF8cSABIAIgAygCBCAAQQNxQQJ0QYS3AWooAgARGwAhBiADEOAFIAUoAgwiACAAKAIAQf\u002F\u002F\u002F\u002F8DcTYCACADQoCAgIAwIAYgBkKAgICAcINCgICAgOAAUSIAGzcDAEF\u002FQQAgABshBAsgBUEQaiQAIAQLFQECfiAAIAEQ6AEhAyAAIAEQDCADCw0AIAAgASACQQIQyAIL1QEBA38jAEEQayIFJABBfyEDAkAgACgCFA0AAkACQCABQYCAgIAETgRAIAAoAgBB5MgAQQAQOgwBCyABIAAoAgxBA2xBAm0iBCABIARKGyEBIAAoAhAiBCACQYACSHJFBEAgACABEOADIQMMAwsgACgCACAAKAIEIAEgBHQgBGtBEWogBUEMahCnASICDQELIAAQ9wIMAQsgBSgCDCEDIAAgAjYCBCAAQf\u002F\u002F\u002F\u002F8DIAMgACgCEHYgAWoiACAAQf\u002F\u002F\u002F\u002F8DThs2AgxBACEDCyAFQRBqJAAgAwsqAQF\u002FIAAoAhAiA0EQaiABIAIgAygCCBEBACIBIAJFckUEQCAAEHALIAELgQECAn8BfgJAIAEpAgQiBEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F79\u002FVgRAIAEoAgwhAAwBCyAAKAI0IARCIIinIAAoAiRBAWtxQQJ0aiECIAAoAjghAwNAIAMgAigCACIAQQJ0aigCACICIAFGDQEgAkEMaiECIAANAAtBxocBQajsAEH\u002FFEH4DhAAAAsgAAupBwIJfwF+AkACQAJAAn8gAkECTARAIAIgASkCBCIMQj6Ip0YEQCAAIAEQxgIiBEHXAUoNBSABIAEoAgBBAWs2AgAgBA8LIAAoAjQgACgCJEEBayABIAIQ6wVB\u002F\u002F\u002F\u002F\u002FwNxIgdxIgpBAnRqIQMgDKdB\u002F\u002F\u002F\u002F\u002FwdxIQUDQCACIAMoAgAiBEUNAhoCQCAAKAI4IARBAnRqKAIAIgMpAgQiDKdB\u002F\u002F\u002F\u002F\u002FwdxIAVHIAxCPoinIAJHciAMQiCIp0H\u002F\u002F\u002F\u002F\u002FA3EgB0dyDQAgAyABIAUQ6gUNACAEQdgBSA0EIAMgAygCAEEBajYCAAwECyADQQxqIQMMAAsACyACQQNHIQdBAwshBQJAIAAoAjwNAEEAIQQgAEEQaiILIAAoAjhB0wEgACgCLEEDbEECbSICIAJB0wFMGyICQQJ0IAAoAggRAQAiCEUNASAAKAIsIgkhAyAJRQRAIAtBECAAKAIAEQMAIgZFBEAgCyAIIAAoAgQRAAAMAwsgBkKAgICAgICAgEA3AgQgBkEBNgIAIAZBADYADCAIIAY2AgAgACAAKAIoQQFqNgIoQQEhAwsgACADNgI8IAAgCDYCOCAAIAI2AiwgCSACIAIgCUkbIQQgAkEBayEGA0AgAyAERg0BIAAoAjggA0ECdGpBASADQQFqIgJBAXRBAXIgAyAGRhs2AgAgAiEDDAALAAsCQCABBEAgASkCBCIMQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP1gEQCABIAwgBa1CPoaENwIEDAILIABBEGogDKciAkEfdSACQf\u002F\u002F\u002F\u002F8HcSACQR92dGpBEWogACgCABEDACICRQRAQQAhBAwECyACQQE2AgAgAiACKQIEQv\u002F\u002F\u002F\u002F93gyABKQIEQoCAgIAIg4QiDDcCBCACIAxCgICAgHiDIAEpAgRC\u002F\u002F\u002F\u002F\u002FweDhDcCBCACQRBqIAFBEGogASgCBCIDQf\u002F\u002F\u002F\u002F8HcSADQR92dCADQX9zQR92ahAeGiAAIAEQkAQgAiEBDAELIABBEGpBECAAKAIAEQMAIgFFBEBBAA8LIAFCgYCAgICAgICAfzcCAAsgACAAKAI4IAAoAjwiBEECdGoiAigCAEEBdjYCPCACIAE2AgAgASAENgIMIAEgATUCBCAHrUIghoQgBa1CPoaENwIEIAAgACgCKEEBajYCKCAFQQNGDQIgASAAKAI0IApBAnRqIgEoAgA2AgwgASAENgIAIAAoAiggACgCMEgNAiAAIAAoAiRBAXQQ1QUaDAILIAFFDQELIAAgARCQBCAEDwsgBAsmAQF\u002FIwBBEGsiBCQAIAQgAjYCDCAAIAMgASACEI4EIARBEGokAAunAQEDfyMAQaABayIEJAAgBCAAIARBngFqIAEbIgU2ApQBQX8hACAEIAFBAWsiBkEAIAEgBk8bNgKYASAEQQBBkAEQLCIEQX82AkwgBEGmAzYCJCAEQX82AlAgBCAEQZ8BajYCLCAEIARBlAFqNgJUAkAgAUEASARAQcTUBEE9NgIADAELIAVBADoAACAEIAIgA0GkA0GlAxCUBCEACyAEQaABaiQAIAALCQAgAL1CNIinC5kBAQN8IAAgAKIiAyADIAOioiADRHzVz1o62eU9okTrnCuK5uVavqCiIAMgA0R9\u002FrFX4x3HPqJE1WHBGaABKr+gokSm+BARERGBP6CgIQUgAyAAoiEEIAJFBEAgBCADIAWiRElVVVVVVcW\u002FoKIgAKAPCyAAIAMgAUQAAAAAAADgP6IgBSAEoqGiIAGhIARESVVVVVVVxT+ioKELkgEBA3xEAAAAAAAA8D8gACAAoiICRAAAAAAAAOA\u002FoiIDoSIERAAAAAAAAPA\u002FIAShIAOhIAIgAiACIAJEkBXLGaAB+j6iRHdRwRZswVa\u002FoKJETFVVVVVVpT+goiACIAKiIgMgA6IgAiACRNQ4iL7p+qi9okTEsbS9nu4hPqCiRK1SnIBPfpK+oKKgoiAAIAGioaCgC40BACAAIAAgACAAIABECff9DeE9Aj+iRIiyAXXg70k\u002FoKJEO49otSiCpL+gokRVRIgOVcHJP6CiRH1v6wMS1tS\u002FoKJEVVVVVVVVxT+gIACiIAAgACAAIABEgpIuscW4sz+iRFkBjRtsBua\u002FoKJEyIpZnOUqAECgokRLLYocJzoDwKCiRAAAAAAAAPA\u002FoKMLngMDAX4DfwN8AkACQAJAAkAgAL0iAUIAWQRAIAFCIIinIgJB\u002F\u002F8\u002FSw0BCyAAvUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag1AEQEQAAAAAAADwvyAAIACiow8LIAFCAFkNASAAIAChRAAAAAAAAAAAow8LIAJB\u002F\u002F+\u002F\u002FwdLDQJBgIDA\u002FwMhA0GBeCEEIAJBgIDA\u002FwNHBEAgAiEDDAILIAGnDQFEAAAAAAAAAAAPCyAARAAAAAAAAFBDor0iAUIgiKchA0HLdyEECyAEIANB4r4laiICQRR2arciBkQAAOD+Qi7mP6IgAUL\u002F\u002F\u002F\u002F\u002FD4MgAkH\u002F\u002Fz9xQZ7Bmv8Daq1CIIaEv0QAAAAAAADwv6AiACAAIABEAAAAAAAAAECgoyIFIAAgAEQAAAAAAADgP6KiIgcgBSAFoiIFIAWiIgAgACAARJ\u002FGeNAJmsM\u002FokSveI4dxXHMP6CiRAT6l5mZmdk\u002FoKIgBSAAIAAgAEREUj7fEvHCP6JE3gPLlmRGxz+gokRZkyKUJEnSP6CiRJNVVVVVVeU\u002FoKKgoKIgBkR2PHk17znqPaKgIAehoKAhAAsgAAvvAgEIfyMAQRBrIgQkACAEQfz7ADYCDCAEQvXXgICgjwU3AgQCQAJAIAFFDQADQCACQQNGBEAgAUEBcSIHRSABQQZxRXIhCQNAIAZB8gJGDQMCQAJAIAUgBkECdEGggAJqKAIAIgJBBHZBD3EiCHZBAXFFDQAgAkEPdiEBIAJBCHZB\u002FwBxIQMCQAJAAkAgCEEEaw4CAAECCyAJRQ0BIAEgB2ohCEEAIQIDQCACIANPDQMgAiAIaiEBIAJBAmohAiAAIAEgAUEBahBpRQ0ACwwDCyAJRQ0AIAFBAWohAyAHRQRAIAAgASADEGkNAwtBfyECIAAgAyABQQJqIgMQaQ0HIAdFDQEgACADIAFBA2oQaUUNAQwHCyAAIAEgASADahBpDQELIAZBAWohBgwBCwtBfyECDAMFIAEgAnZBAXEEQCAEQQRqIAJBAnRqKAIAIAVyIQULIAJBAWohAgwBCwALAAtBACECCyAEQRBqJAAgAguQAgEJfyMAQRBrIgQkAAJAIARBDGogAEHQzQNBHRCaBiIBQQBIDQAgAUGwzgNqIQIgBCgCDCEBA0AgASEGIAItAAAiB8AhCQJAIAdBP3EiAUEwSQRAIAJBAWohBQwBCwJ\u002FIAFBN00EQCACQQJqIQUgAUEIdCEBIAItAAEhCEGwoH8MAQsgAkEDaiEFIAItAAEgAUHI\u002F\u002F8HanJBCHQhCCACLQACIQFBsBALIQIgASACaiAIaiEBCyAFIAlBAE5qIQIgASAGakEBaiIBIABNDQALAkACQAJAIAdBBnYOAwABAwILIAJBAWstAAAhAwwCCyACQQFrLQAAIAAgBmtqIQMMAQtB5gEhAwsgBEEQaiQAIAMLUwEBfyABIAAoAgQiAkoEQCAAKAIMIAAoAgggASACQQNsQQJtIgIgASACShsiAUECdCAAKAIQEQEAIgJFBEBBfw8LIAAgATYCBCAAIAI2AggLQQALHwAgACABNgIMIABBADYCCCAAQgA3AgAgAEGaAzYCEAsqAQJ\u002FIwBBEGsiASQAIAFBBGogAEEBEJ0GGiABKAIEIQIgAUEQaiQAIAILawIBfgJ\u002FIAAoAgAhAwNAIAMtAAAiBEE6a0H\u002FAXFB9gFPBEAgAkIKfiAErUL\u002FAYN8QjB9IgJC\u002F\u002F\u002F\u002F\u002FwdUIgQgAXIEQCACQv\u002F\u002F\u002F\u002F8HIAQbIQIgA0EBaiEDDAIFQX8PCwALCyAAIAM2AgAgAqcLCwAgAEHaC0EAED8LFgAgACABQf8BcRAOIAAgAkH\u002FAXEQDgtfAQN\u002FIwBBIGsiBSQAIAAoAgAhBiAFQgA3AhggBUKAgICAgICAgIB\u002FNwIQIAUgBjYCDCAFQQxqIgYgAa0QMiEBIAAgBiACIAMgBBCvAyEHIAYQGSAFQSBqJAAgByABcgtXAQJ\u002FIwBBIGsiBSQAIAAoAgAhBiAFQgA3AhggBUKAgICAgICAgIB\u002FNwIQIAUgBjYCDCAFQQxqIgYgAhCcAhogACABIAYgAyAEEEAaIAYQGSAFQSBqJAALTAEEfyAAKAIMIQIDQAJAIAEgAkcEfyAAKAIQIAFBAnRqKAIAIgRFDQEgACgCCCAEaCABIAJrQQV0cmoFQQALDwsgAUEBaiEBDAALAAs5AQJ\u002FIAFBACABQQBKGyEBA0AgASACRgRAQQAPCyACQQJ0IQMgAkEBaiECIAAgA2ooAgBFDQALQQELPwECfwNAIAFFIAIgA01yRQRAIAAgA0ECdGoiBCABIAQoAgAiAWoiBDYCACABIARLIQEgA0EBaiEDDAELCyABC4AHAQx\u002FQQNBgICAgAJBAUEcIAJBBXZBP3EiBWt0IAVBP0YbIg5rIQ8CQAJAAkACQAJAAkACfyACQRBxBEBB\u002F\u002F\u002F\u002F\u002FwMgAUH\u002F\u002F\u002F\u002F\u002FA0YNARogACgCCCABagwBCyABIgYgAkEIcUUgACgCCCIFIA9Ocg0AGiAGQf\u002F\u002F\u002F\u002F8DRg0BIA5BA2sgBmogBWoLIQYgA0EFdCELIAJBB3EiDUEGRgRAIAAoAhAiCCADIAsgBkF\u002Fc2oQmgIhBwwDCyAAKAIQIQgCfyALQX8gBiAGQQBIG2tBAmsiDEEFdSIFQQBIBEBBAAwBC0EBIQlBASAIIAVBAnRqKAIAQX9BfiAMdEF\u002FcyAMQR9xQR9GG3ENABoDQCAFQQBKIQlBACAFQQBMDQEaIAggBUEBayIFQQJ0aigCAEUNAAtBAQsgCCADIAsgBkF\u002Fc2oQmgIiBXIhCgJAAkACQAJAAkAgDQ4HAAYBAQMCAwQLIAkgBUVyBEAgBUEARyEHDAYLIAggAyALIAZrEJoCIQcMBQsgCkEAIAAoAgQgDUECRkYbIQcMBAtBASEHIAoNBCAGQQBKDQYMBwsgBSEHIAoNAwwECxABAAtBtfgAQdjsAEGKBEGz4QAQAAALIApFDQELIARBEHIhBAsgBkEATARAIAdFDQIgAEEBEFAaIAAoAhBBgICAgHg2AgAgACAAKAIIIAZrQQFqNgIIIARBGHIPCyAHRQ0AIAsgBmsiBUEFdSIHIAMgAyAHSRshDUEBIQpBASAFdCEJIAchBQNAIAUgDUYEQCADIQUDQCAFQQFrIgUgB0hFBEAgCCAFQQJ0aiIJIApBH3QgCSgCACIKQQF2cjYCAAwBCwsgACAAKAIIQQFqNgIIDAILIAggBUECdGoiDCAMKAIAIgwgCWoiEDYCAEEBIQkgBUEBaiEFIAwgEEsNAAsLIA8gACgCCCIFSgRAIAJBCHFFDQEgBEEBdkEIcSAEciEECyAFIA5KBEAgACAAKAIEIAEgAhC3Aw8LQQAhBSALIAZrIgJBBXUiAUEATgRAIAJBH3EiAgRAIAggAUECdGoiBSAFKAIAQX9BICACa3RBf3MgAnRxNgIACyABIQULA0AgBSIBQQFqIQUgCCABQQJ0aiICKAIARQ0ACyABQQBKBEAgCCACIAMgAWsiA0ECdBCrAQsgACADEFAaIAQPCyAAIAAoAgQQgAEgBEEYcgukAgEBfwJ\u002FAn8gAUH\u002FAE0EQCAAIAE6AAAgAEEBagwBCwJAIAFB\u002Fw9NBEAgACABQQZ2QcABcjoAACAAIQIMAQsCfyABQf\u002F\u002FA00EQCAAIAFBDHZB4AFyOgAAIABBAWoMAQsCQCABQf\u002F\u002F\u002FwBNBEAgACABQRJ2QfABcjoAACAAIQIMAQsCfyABQf\u002F\u002F\u002Fx9NBEAgACABQRh2QfgBcjoAACAAQQFqDAELQQAgAUEASA0FGiAAIAFBHnZB\u002FAFyOgAAIAAgAUEYdkE\u002FcUGAAXI6AAEgAEECagsiAiABQRJ2QT9xQYABcjoAAAsgAiABQQx2QT9xQYABcjoAASACQQJqCyICIAFBBnZBP3FBgAFyOgAACyACIAFBP3FBgAFyOgABIAJBAmoLIABrCwsNACAAIAEgARA9EHIaC1IBAn8CfyAAKAIEIgMgAmoiBCAAKAIISwR\u002FQX8gACAEELwBDQEaIAAoAgQFIAMLIAAoAgAiA2ogASADaiACEB4aIAAgACgCBCACajYCBEEACxoLpAICBH8BfiMAQRBrIgUkAAJAIAAgAUECEF4iCEKAgICAcINCgICAgOAAUQ0AAkACQCACQQFHDQAgAykDACIBQiCIpyIEQQAgBEELakESSRsNACAAIAVBDGogAUEBEL4CDQEgACAIQTACfiAFKAIMIgJBAE4EQCACrQwBC0KAgICAwH4gAri9IgFCgICAgMCBgPz\u002FAH0gAUKAgICAgICA+P8AVhsLEDlBAEgNAQwCC0EAIQQgAkEAIAJBAEobIQIDQCACIARGDQIgAyAEQQN0aikDACIBQiCIp0F1TwRAIAGnIgYgBigCAEEBajYCAAsgACAIIAQgARCGAiEHIARBAWohBCAHQQBODQALCyAAIAgQDEKAgICA4AAhCAsgBUEQaiQAIAgLjwECA34BfyAAIAIpAwAiA0EAEGsiBkUEQEKAgICA4AAPCyAAIANCgICAgDAQ\u002FQEiA0KAgICAcIMiBEKAgICA4ABRBEAgAw8LIAJBCGohAiAEQoCAgIAwUQRAIABCgICAgDAgACACIAYvAQYQpgYPCyAAIANBASABIAFBAUwbQQFrIAIQvwMhBSAAIAMQDCAFC28CAX4CfyABQoCAgIAIWQRAIABBiscAQQAQREKAgICA4AAPCyAAEDsiAkKAgICAcINCgICAgOAAUSABQgBXckUEQCAAIAKnIgMgAaciBBDYBUEASARAIAAgAhAMQoCAgIDgAA8LIAMgBDYCKAsgAgs+ACAAKAIAIAEgAiADEOUCIgBBAE4EQCABKAJ0IABBBHRqIgEgBEEDdEEIcSABKAIMQXRxckEDcjYCDAsgAAtwAQJ\u002FIAEoAgBBAEgEQCABIAAQLTYCAAsgAEEREA0gAEGxARANIAJBACACQQBKGyECIABB6gBBfxAYIQQDQCACIANGRQRAIABBDhANIANBAWohAwwBCwsgAEEGEA0gAEHsACABKAIAEBgaIAAgBBAaC2gAIAAgASACEEwiAEEATgRAIAEoAnQgAEEEdGoiAiACKAIMQY9+cSADQQR0QfABcXI2AgwgAiABKAK8ASIDNgIEIAIgASgCwAE2AgggASgCzAEgA0EDdGogADYCBCABIAA2AsABCyAAC20BAX8gACABQfwBakEQIAFB+AFqIAEoAvQBQQFqEGRFBEAgASABKAL0ASIDQQFqNgL0ASABKAL8ASADQQR0aiIDQX82AgAgAyADLQAEQfgBcToABCADIAEoArwBNgIIIAMgACACEBY2AgwLIAMLEQAgACABIAIgA0EAQQAQggELYgECfwJAAkAgACgCQCIAKAKYAiIBQQBIDQAgACgCgAIgAWotAAAiAEEjayIBQQ1NQQBBASABdEHl8ABxGw0BAkAgAEHsAGsOBAIBAQIACyAAQewBa0ECSQ0BC0EBIQILIAILTgEBf0F\u002FIQECQCAAQfsAECgNACAAKAIQQf0ARwRAIAAQdBoDQCAAQQcQ2wENAiAAKAIQQf0ARw0ACyAAENoBC0F\u002FQQAgABAPGyEBCyABC5gBAQV\u002FIAEoAhQiBUEAIAVBAEobIQYgAUEQaiEEAkADQCADIAZHBEAgBCgCACADQQN0aigCACACRg0CIANBAWohAwwBCwtBfyEDIAAgBEEIIAFBGGogBUEBahBkDQAgASABKAIUIgRBAWo2AhQgASgCECEHIAAgAhAWIQEgByAEQQN0aiIAQQA2AgQgACABNgIAIAYhAwsgAwtlAQF\u002FIABB+wAQRUUEQCAAQbXmAEEAEBNBAA8LAkAgABAPDQAgACgCEEGBf0cEQCAAQaXmAEEAEBNBAA8LIAAoAgAgACkDIBAwIgFFDQAgABAPRQRAIAEPCyAAKAIAIAEQEAtBAAuKFQEafyMAQeAAayIEJAAgACgCACEIIAAoAkAhBiAEQQA2AkwgACgCGCEUIAYgBi0AbiIWQQFyOgBuAn8CQAJAIAAQDw0AAkACQCAAKAIQQYN\u002FRgRAIAAoAihFDQEgABDcAQwDCyABIAJBAkZyDQEgAEGV1wBBABATDAILIAggACgCIBAWIQkgABAPDQILIAFFBEAgCCAJQf0AIAkbEBYhCgsgABB0GgJ\u002FIAAoAhAiEkFMRgRAIAAQDw0DIAAQogINA0EBDAELIABBBhANQQALIQEgCQRAIAAgBiAJQQIQnQFBAEgNAgsgAEH7ABAoDQEgEkFMRiEXIAAQdBogAEECEA0gBigChAIhGCAAQQAQOCAAQdYAEA0gACAJQRZBLyAKGyAJGxAXIAAgARBYIAYoApgCIRkDQCADQQJGRQRAIARBEGogA0EUbGoiASADNgIQIAFBADYCCCABQgA3AgAgA0EBaiEDDAELCyAEQQA2AkRBCUEIIBJBTEYbIRUgEkFMRyEaAkACQANAAkACfwJAAn8CQCAAKAIQIgVBO0cEQCAFQf0ARg0FIAVBVkYhASABDQFBAAwCC0EAIQMgABAPRQ0FDAkLQQAhAyAAEA8NCAJAIAAoAhAiBUH7AEcEQCAFQTtrDgMDAQMBCyAAIARBEGogAUEUbGoiBSgCACIBBH8gAQUgACAFEMIDDQogBSgCAAs2AkAgAEEHQQAgACgCGCAAKAIUQQAgBEHQAGoQ3QFBAEgNCSAAEHQaIABBuAEQDSAAQQgQFyAAQQAQFCAAQRsQDSAAQSQQDSAAQQAQFCAAQQ4QDSAAENoBIAAgACgCQCgCBDYCQAwFCyAAQRsQDUEBCyENIAAoAhghEyAAIARBzABqQQFBAEEBEMYDIQsgBCgCTCIDIAtBAE4NARoMBwsgBEEsNgJMIAAoAhghE0EAIQ1BACEBQQAhC0EsCyIDQT1HIAFyQQEgC0Hv\u002F\u002F\u002F\u002FB3EiDxtFIANB+QBGciADQTxGIAFxcgRAIABB2dYAQQAQEwwGCyALQRBxIQ4CQAJAAkACQCALQe7\u002F\u002F\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\u002F\u002F\u002F\u002F\u002FB4MgAVcNACAEQoCAgIAIg0IAUg0BCyABQgF8DAELIAMgAT4CDCAAIANBDGoQxgEaIAM0AgwLIQUgA0EQaiQAIAULLgEBfwJAIAFCgICAgHBUDQAgAaciAi8BBkESRw0AIAJBIGoPCyAAQRIQigNBAAunBQIJfwJ+IwBBIGsiAyQAAkAgASkDQCILQoCAgIBwg0KAgICAMFEEQEKAgICA4AAhDCAAQQsQhgEiC0KAgICAcINCgICAgOAAUQ0BIANCADcDGCADQgA3AxAgA0IANwMIIAAgA0EIaiABQQAQlgUhBCAAKAIQIgJBEGogAygCCCACKAIEEQAAAkACQCAEBEAgAygCFCEGDAELIAunIQcgAygCHCIIQQAgCEEAShshCSADKAIUIQZBACEEAkADQCAEIAlHBEACQAJAAkAgBiAEQQxsaiICKAIIIgUEQCADIAE2AgAMAQsCQCAAIAMgA0EEaiABIAIoAgAQ3wMiBQ4EAAYGAgYLIAMoAgQhBQsgBSgCDEH+AEYEQCACQQI2AgQgAiADKAIAKAIQIAUoAgBBA3RqKAIENgIIDAILIAJBATYCBCAFKAIEIgoEQCACIAo2AggMAgsgAiADKAIAKAJIKAIkIAUoAgBBAnRqKAIANgIIDAELIAJBADYCBAsgBEEBaiEEDAELCyAGIAhBDEE+IAAQ1wFBACEEA0AgBCAJRg0DAkACQAJAIAYgBEEMbGoiAigCBEEBaw4CAAECCyACKAIIIQUgACAHIAIoAgBBJhB3IgJFDQQgBSAFKAIAQQFqNgIAIAIgBTYCAAwBCyAAIAsgAigCAEEBIAIoAghBBhCAA0EASA0DCyAEQQFqIQQMAAsACyAAIAUgASACKAIAEN4DCyAAKAIQIgFBEGogBiABKAIEEQAAIAAgCxAMDAILIAAoAhAiBEEQaiAGIAQoAgQRAAAgACALQdIBIABB\u002FwAQKUEAEBUaIAcgBy0ABUH+AXE6AAUgASALNwNACyALQiCIp0F1TwRAIAunIgAgACgCAEEBajYCAAsgCyEMCyADQSBqJAAgDAszAQF\u002FIAAoAgAoAhAiAUEQaiAAKAIEIAEoAgQRAAAgAEEANgIMIABCADcCBCAAQX82AhQLugECBH8BfiAAKAIQIQUgACACQQN0QRhqECQiBEUEQA8LIAQgAjYCECAEIAE2AgwgBCAANgIIQQAhACACQQAgAkEAShshASAEQRhqIQIDQCAAIAFHBEAgAyAAQQN0IgZqKQMAIghCIIinQXVPBEAgCKciByAHKAIAQQFqNgIACyACIAZqIAg3AwAgAEEBaiEADAELCyAFKAKgASIAIAQ2AgQgBCAFQaABajYCBCAEIAA2AgAgBSAENgKgAQvCAgICfgd\u002FAkACQCAAIAEgAxBeIgFCgICAgHCDQoCAgIDgAFENAAJAAkAgAqciBigCICIIKAIMKAIgIgktAARFBEAgAEKAgICAMCAGKAIoIgqtIgUgA0HKngFqMQAAhhD6AiIEQoCAgIBwg0KAgICA4ABRDQIgBigCICgCDCgCIC0ABEUNASAAIAQQDAsgABBfDAELAkAgBEKAgICAcFQNACAEpyILLwEGQRNHDQAgCygCICEHCyAAIAEgBEIAIAUQ4wMNACAGLwEGIANGDQJBACEDA0AgAyAKRg0CIAAgAiADEKYBIgRCgICAgHCDQoCAgIDgAFENASAAIAEgAyAEEIYCIQwgA0EBaiEDIAxBAE4NAAsLIAAgARAMQoCAgIDgACEBCyABDwsgBygCCCAJKAIIIAgoAhBqIAcoAgAQHhogAQsNACAAIAEgAkETEOUDC5sFAQN\u002FIAFBEGohAyABKAIUIQIDQCACIANGRQRAIAJBGGshBCACKAIEIQIgACAEEPsCDAELCyAAKAIQIAEoAoACIAEoAoQCIAEoAqACEJkFIAFBgAJqEIkBIAAoAhAiAkEQaiABKALMAiACKAIEEQAAIAAoAhAiAkEQaiABKAKkAiACKAIEEQAAIAAoAhAiAkEQaiABKALYAiACKAIEEQAAQQAhAgNAIAEoArQCIQMgAiABKAK4Ak5FBEAgACADIAJBA3RqKQMAEAwgAkEBaiECDAELCyAAKAIQIgJBEGogAyACKAIEEQAAIAAgASgCcBAQQQAhAgNAIAEoAnQhAyACIAEoAnxORQRAIAAgAyACQQR0aigCABAQIAJBAWohAgwBCwsgACgCECICQRBqIAMgAigCBBEAAEEAIQIDQCABKAKAASEDIAIgASgCiAFORQRAIAAgAyACQQR0aigCABAQIAJBAWohAgwBCwsgACgCECICQRBqIAMgAigCBBEAAEEAIQIDQCABKAL8ASEDIAIgASgC9AFORQRAIAAgAyACQQR0aigCDBAQIAJBAWohAgwBCwsgACgCECICQRBqIAMgAigCBBEAAEEAIQIDQCABKALIAiEDIAIgASgCwAJORQRAIAAgAyACQQN0aigCBBAQIAJBAWohAgwBCwsgACgCECICQRBqIAMgAigCBBEAACABKALMASICIAFB0AFqRwRAIAAoAhAiA0EQaiACIAMoAgQRAAALIAAgASgC7AIQECABQfQCahCJASAAKAIQIgJBEGogASgCjAMgAigCBBEAACABKAIEBEAgASgCGCICIAEoAhwiAzYCBCADIAI2AgAgAUIANwIYCyAAKAIQIgBBEGogASAAKAIEEQAAC4wBAQJ\u002FAkADQCABQoCAgIBwVA0BAkACQAJAAkACQAJAIAGnIgIvAQYiA0EMaw4FBQEDBwEACyADQSxGDQEgA0Ewaw4FAAYGBgAGCyACKAIgKAIwDwsgAigCICICRQ0EIAItABFFDQEgABC4AkEADwsgAigCICECCyACKQMAIQEMAQsLIAIoAiAhAAsgAAuLAQIEfgF\u002FIAAQOyIEQoCAgIBwg0KAgICA4ABSBEAgAUEAIAFBAEobrSEGA0AgAyAGUQRAIAQPCyACIAOnQQN0aikDACIFQiCIp0F1TwRAIAWnIgEgASgCAEEBajYCAAsgACAEIAMgBUEAEMgBIQcgA0IBfCEDIAdBAE4NAAsgACAEEAwLQoCAgIDgAAsRACAAIAEgAiADIARBAhD+AwuTBgEHfyMAQSBrIgckACAHIAM2AhwCfwJAIAAoAgAgB0EEakEgED4NACABQeAARyEKAkACQANAIAMgACgCPCILTw0BAkAgAy0AACIGQR9LDQAgACgCQEUEQEHTyQAhBiACDQQMBQsgCkUEQCAGQQ1HDQFBCiEGIANBAWogAyADLQABQQpGGyEDDAELIAZBCmsOBAIAAAIACyAHIANBAWoiCTYCHAJAAkACQAJAAkACQCAEIAEgBkcEfyAGQdwARg0BIAZBJEcNAkEkIQYgCg0FIAktAABB+wBHDQUgByADQQJqNgIcQSQFIAELNgIYIARBgX82AgAgBCAHQQRqEDc3AxAgBSAHKAIcNgIAQQAMCgtBASEGAkACQAJAAkAgCS0AACIIQQprDgQCAwMBAAsgCEHcAEYgCEEiRnIgCEEnRnINBCAIDQIgCSALTw0JIAcgA0ECajYCHEEAIQYMBgtBAkEBIAMtAAJBCkYbIQYLIAcgAyAGakEBaiIDNgIcIAFB4ABGDQYgACAAKAIIQQFqNgIIDAYLAkACQAJAIAhBMGtB\u002FwFxQQlNBEAgACgCQCIGRQ0CIAFB4ABHBEAgBi0AbkEBcUUNAgsCQCAIQTBHDQAgAy0AAkEwa0H\u002FAXFBCkkNACAHIANBAmo2AhxBACEGDAgLIAFB4ABGIAhBN0tyDQJBw9sAIQYgAg0LDAwLIAjAQQBODQAgCUEGIAcQUSIGQYCAxABPDQcgByAHKAIAIgM2AhwgBkH+\u002F\u002F8AcUGowABGDQgMBgsgB0EcakEBEJcCIgZBf0cNAQtBh8QAIQYgAg0IDAkLIAZBAE4NAyAHIAcoAhxBAWo2AhwMAgsgBsBBAE4NAiADQQYgBxBRIgZB\u002F\u002F\u002FDAEsNAyAHIAcoAgA2AhwMAgsgByADQQJqNgIcCyAIIQYLIAdBBGogBhCxAQ0EIAcoAhwhAwwBCwtBst8AIQYgAg0BDAILQa3JACEGIAJFDQELIAAgBkEAEBMLIAcoAgQoAhAiAEEQaiAHKAIIIAAoAgQRAABBfwshDCAHQSBqJAAgDAvMAQEDfwJAIAFCgICAgHBaBEAgAaciBygCECIGQTBqIQggBiAGKAIYIAJxQX9zQQJ0aigCACEGAkADQCAGRQ0BIAIgCCAGQQN0aiIGQQRrKAIARwRAIAZBCGsoAgBB\u002F\u002F\u002F\u002FH3EhBgwBCwsQAQALIAAgByACIAVBB3FBMHIQdyICRQRAQX8PC0EBIQYgACAAKAIAQQFqNgIAIAIgADYCACAAQQNxDQEgAiAENgIEIAIgACADcjYCAAsgBg8LQfiGAUGo7ABB8cgAQbwKEAAACzABAX8jAEHQAGsiAyQAIAMgACADQRBqIAEQgQE2AgAgACACIAMQigIgA0HQAGokAAtoAQF+AkACQCAAEDMiA0KAgICAcINCgICAgOAAUQRAIAEhAwwBCyAAIANBwQAgAUEHEBVBAEgNACAAIANB6gAgAkEAR61CgICAgBCEQQcQFUEATg0BCyAAIAMQDEKAgICA4AAhAwsgAwsrACAAQf8ATQRAIABBA3ZB\u002FP\u002F\u002F\u002FwFxQaD\u002FAWooAgAgAHZBAXEPCyAAEJ4EC7YFAwJ+A38CfCABQQhrIgcpAwAhAwJAAkAgACABQRBrIgYpAwBBARCSASIEQoCAgIBwg0KAgICA4ABRBEAgAyEEDAELIAAgA0EBEJIBIgNCgICAgHCDQoCAgIDgAFENAAJAQQcgBEIgiKciASABQQdrQW5JGyIBQXlHQQcgA0IgiKciBSAFQQdrQW5JGyIFQXlHckUEQCAEpyADpxC8AiEBAn8CQAJAAkACQCACQaQBaw4DAAECAwsgAUEfdgwDCyABQQBMDAILIAFBAEoMAQsgAUF\u002Fc0EfdgshAiAAIAQQDCAAIAMQDAwBCwJAQQEgAXRBhwFxRSABQQdLciAFQQdLckEBQQEgBXRBhwFxG0UNAAJAIAFBdkYgBUF5RnEgAUF5RiIBIAVBdkZxcgRAAkAgAQRAIAAgBBCqAiIEQoCAgIBwg0KAgICA4H5SDQELIAVBeUcNAiAAIAMQqgIiA0KAgICAcINCgICAgOB+UQ0CCyAAIAQQDCAAIAMQDEEAIQIMAwsgACAEEGUiBEKAgICAcINCgICAgOAAUQRAIAMhBAwECyAAIAMQZSIDQoCAgIBwg0KAgICA4ABRDQMLQQcgA0IgiKciASABQQdrQW5JGyIFQXZHBEBBByAEQiCIpyIBIAFBB2tBbkkbIgFBdkcNAQsgACACIAQgAyAAKAIQKAKwAhErACICQQBODQEMAwsgA0KAgICAwIGA\u002FP8AfL8gA6e3IAVBB0YbIQggBEKAgICAwIGA\u002FP8AfL8gBKe3IAFBB0YbIQkCQAJAAkACQCACQaQBaw4DAAECAwsgCCAJZCECDAMLIAggCWYhAgwCCyAIIAljIQIMAQsgCCAJZSECCyAGIAJBAEetQoCAgIAQhDcDAEEADwsgACAEEAwLIAZCgICAgDA3AwAgB0KAgICAMDcDAEF\u002FC20CAn4Cf0F\u002FIQUCQCAAIAFBCGsiBikDACIEIAIQywEiA0KAgICAcINCgICAgOAAUQ0AIAAgBBAMIAYgAzcDACAAIANB6wAgA0EAEBEiA0KAgICAcINCgICAgOAAUQ0AIAEgAzcDAEEAIQULIAULPAEBfwNAIAIgA0ZFBEAgACABIANBA3RqKQMAEAwgA0EBaiEDDAELCyAAKAIQIgBBEGogASAAKAIEEQAAC4UBAQJ\u002FIwBBEGsiBSQAAkAgAkKAgICAcINCgICAgJB\u002FUgRAIAJCIIinQXVJDQEgAqciACAAKAIAQQFqNgIADAELIAAgBUEMaiACEN8BIgZFBEBCgICAgOAAIQIMAQsgACABIAYgBSgCDEHJ\u002FwAgAyAEELMFIQIgACAGEDELIAVBEGokACACC7wBAgN+AX8jAEEQayICJABCgICAgOAAIQUCQCAAIAEQVQ0AIAMpAwAhBgJAAkAgAykDCCIHQiCIpyIDQQNHBEAgBEECRg0CIANBAkYNAQwCCyAEQQJGDQELIAAgASAGQQBBABAcIQUMAQsgACACQQxqIAcQ\u002FQMiA0UNACACKAIMIQgCfiAEQQFxBEAgACABIAYgCCADEP4CDAELIAAgASAGIAggAxAcCyEFIAAgAyAIEIYDCyACQRBqJAAgBQtLACMAQRBrIgMkACADIAE5AwggAyACNgIAIABBgAFB6M0AIAMQSCIAQYABTgRAQc7OAEGo7ABBqtkAQaqDARAAAAsgA0EQaiQAIAALHAAgACAAKAIQKAJEIAFBGGxqKAIEQePlABC1AQtzAQN\u002FIwBBMGsiAiQAAn8gAadBgICAgHhyIAFC\u002F\u002F\u002F\u002F\u002FwdYDQAaIAIgATcDACACQRBqIgNBGEHI4wAgAhBIGkEAIAAgAxBgIgFCgICAgHCDQoCAgIDgAFENABogACgCECABp0EBEMcCCyEEIAJBMGokACAECz0BAX8gASAAKALgASABKAIUQSAgACgC1AFrdkECdGoiAigCADYCKCACIAE2AgAgACAAKALcAUEBajYC3AELQwACf0EAIAIoAgAoAgBBGnYgA0YNABpBfyAAIAEgAhDTAQ0AGiACKAIAIgAgACgCAEH\u002F\u002F\u002F8fcSADQRp0cjYCAEEACwu8AQEEf0F\u002FIQICQCAAIAFBABDTAQ0AIAEoAigiBCABKAIQIgMoAiBqIgUgAygCHEsEQCAAIAFBEGogASAFENYFDQELIAEoAiQhA0EAIQIDQCACIARGRQRAIAAgASACQYCAgIB4ckEHEHcgAykDADcDACACQQFqIQIgA0EIaiEDDAELCyAAKAIQIgBBEGogASgCJCAAKAIEEQAAQQAhAiABQQA2AiggAUIANwMgIAEgAS0ABUH3AXE6AAULIAILeQEDfwJAAkAgAEEBcSICDQAgAUGBAnFBgQJGIAFBgAhxQQAgACABc0EEcRtyDQEgAiABQYD0AHFFcg0AIABBMHEiAkEQRiABQYAwcSIEQQBHcw0BIABBAnEgAUGCBHFBggRHciACQRBGcg0AIARFDQELQQEhAwsgAwuBAgEEfyAAQoCAgIBwg0KAgICA4ABRBH9BtNQEKAIAKAIQIgIpA4ABIQAgAkKAgICAIDcDgAFBtNQEKAIAIABBsNcAEOgDIQJBtNQEKAIAIQMCQCACRQRAIAMgABAMDAELIAMgAEHxxQAQ6AMhA0G01AQoAgAhBCADRQRAIAQgAhAxQbTUBCgCACAAEAwMAQsgBCAAQcjaABDoAyEEQbTUBCgCACEFIARFBEAgBSACEDFBtNQEKAIAIAMQMUG01AQoAgAgABAMDAELIAUgABAMIAIgBCADIAEQC0G01AQoAgAgAhAxQbTUBCgCACADEDFBtNQEKAIAIAQQMQtBAQVBAAsLYQIBfwF+AkAgAUEASA0AAkACQAJAIAAoAhAoAjggAUECdGooAgApAgQiA0I+iKdBAWsOAwMCAAELQQEhAgJAIANCIIinQf\u002F\u002F\u002F\u002F8DcQ4CAwABC0ECDwsQAQALQQEhAgsgAgszACAAIAJBARDpASIARQRAQoCAgIDgAA8LIABBEGogASACQQF0EB4aIACtQoCAgICQf4QLPQIBfwJ+IAAgARDfBSIDQoCAgIBwgyIEQoCAgIAwUgR\u002FIARCgICAgOAAUgRAIAAgAxAMQQEPC0F\u002FBUEACwtOAgF\u002FAn4jAEEQayICJAACfiABQf8BTQRAIAIgAToADyAAIAJBD2pBARCcAwwBCyACIAE7AQwgACACQQxqQQEQkgMLIQQgAkEQaiQAIAQLBABBAAspAQJ\u002FAkAgAEKAgICAcFQNACAApyICLwEGEOABRQ0AIAIoAiAhAQsgAQsiACAAIAJBAWoQJCIABEAgACABIAIQHiACakEAOgAACyAACyEAIAAgAUEwIAOtQQEQFRogACABQTcgACACEClBARAVGgtPAQF\u002FIAEgAjYCDCABIAA2AgAgAUEANgIUIAEgAzYCECABQQA2AgggASAAIAIgAxDpASIANgIEIAAEf0EABSABQX82AhQgAUEANgIMQX8LC8IEAgl\u002FAX4CQAJAAkACQAJAIAJCgICAgHCDQoCAgICQf1IEQCAAIAIQJSICQoCAgIBwg0KAgICA4ABRDQIgAqchBAwBCyACpyIEIAQoAgBBAWo2AgALIARBEGohByAEKQIEIg2nQf\u002F\u002F\u002F\u002F8HcSEGAkAgDUKAgICACINQBEBBACEEQQAhAwNAIAQgBkZFBEAgAyAEIAdqLQAAQQd2aiEDIARBAWohBAwBCwsgA0UEQCAHIQQgAQ0EDAYLIAAgAyAGakEAEOkBIghFDQIgCEEQaiEEQQAhAwNAIAMgBkYNAiADIAdqLAAAIgVBAE4EfyAEQQFqBSAEIAVBvwFxOgABIAVBwAFxQQZ2QUByIQUgBEECagshDCAEIAU6AAAgA0EBaiEDIAwhBAwACwALIAAgBkEDbEEAEOkBIghFDQEgCEEQaiEEA0AgBSIKIAZODQEgBUEBaiEFIAcgCkEBdGovAQAiCUH\u002FAE0EQCAEIAk6AAAgBEEBaiEEBQJAIAlBgPgDcUGAsANHIANyIAUgBk5yDQAgByAFQQF0ai8BACILQYD4A3FBgLgDRw0AIAlBCnRBgPg\u002FcSALQf8HcXJBgIAEaiEJIApBAmohBQsgBCAJEN0CIARqIQQLDAALAAsgBEEAOgAAIAggBCAIQRBqIgdrQf\u002F\u002F\u002F\u002F8Hca0gCCkCBEKAgICAeIOENwIEIAAgAhAMIAFFDQIgCCgCBEH\u002F\u002F\u002F\u002F\u002FB3EhBgwBC0EAIQZBACEHQQAhBCABRQ0CCyABIAY2AgALIAchBAsgBAuIAgIFfwF+IAEoAgwhAgJAAkACQCABKQIEIgdCgICAgICAgIBAWgRAIAAoAjghBAwBCwJAIAEgACgCOCIEIAAoAjQgB0IgiKcgACgCJEEBa3FBAnRqIgMoAgAiBUECdGooAgAiBkYEQCADIAI2AgAMAQsDQCAGIQMgBUUNAyAEIAMoAgwiBUECdGooAgAiBiABRw0ACyADIAI2AgwLIAUhAgsgBCACQQJ0aiAAKAI8QQF0QQFyNgIAIAAgAjYCPCAAQRBqIAEgACgCBBEAACAAIAAoAigiAEEBazYCKCAAQQBMDQEPC0HGhwFBqOwAQd8WQdIdEAAAC0HVhQFBqOwAQfMWQdIdEAAAC0YAIAJBAEwEQCAAQS8QKQ8LIAAgAkEAEOkBIgBFBEBCgICAgOAADwsgAEEQaiABIAIQHiACakEAOgAAIACtQoCAgICQf4QLnwICBH8BfgJAAkAgAgRAIAEsAABBOmtBdUsNAQsCfyAAKAIQIQQgASACQQEQ7gUiA0H\u002F\u002F\u002F\u002F\u002FA3EhBiAEKAI0IAQoAiRBAWsgA3FBAnRqIQMDQAJAAkAgAygCACIFRQ0AIAQoAjggBUECdGooAgAiAykCBCIHQoCAgIAIg0IAUiAHp0H\u002F\u002F\u002F\u002F\u002FB3EgAkdyIAdCIIinQf\u002F\u002F\u002F\u002F8DcSAGRyAHQoCAgICAgICAQINCgICAgICAgIDAAFJycg0BIANBEGogASACEGgNASAFQdgBSA0AIAMgAygCAEEBajYCAAsgBQwCCyADQQxqIQMMAAsACyIDDQELQQAhAyAAIAEgAhDqASIHQoCAgIBwg0KAgICA4ABRDQAgACAHpxCRBCEDCyADC5IDAQN\u002FIAAgACgCACIBQQFrIgI2AgACQCABQQFKDQAgAkUEQCAAKAIQIQJBACEBIABBABD2BSAAIAApA8ABEAwgACAAKQPIARAMIAAgACkDsAEQDCAAIAApA7gBEAwgACAAKQOoARAMIABB2ABqIQMDQCABQQhGBEBBACEBA0AgACgCKCEDIAEgAigCQE5FBEAgACADIAFBA3RqKQMAEAwgAUEBaiEBDAELCyACQRBqIAMgAigCBBEAACAAIAApA5gBEAwgACAAKQOgARAMIAAgACkDUBAMIAAgACkDQBAMIAAgACkDSBAMIAAgACkDOBAMIAAgACkDMBAMIAAoAiQiAQRAIAAoAhAgARCMAgsgACgCFCIBIAAoAhgiAjYCBCACIAE2AgAgAEIANwIUIAAoAggiASAAKAIMIgI2AgQgAiABNgIAIABCADcCCCAAKAIQIgFBEGogACABKAIEEQAADAMFIAAgAyABQQN0aikDABAMIAFBAWohAQwBCwALAAtBtoYBQajsAEHqEUGWFBAAAAsL8QEBA38CfwJAIAFB\u002FwFxIgIiAwRAIABBA3EEQANAIAAtAAAiBEUgAiAERnINAyAAQQFqIgBBA3ENAAsLAkAgACgCACICQX9zIAJBgYKECGtxQYCBgoR4cQ0AIANBgYKECGwhAwNAIAIgA3MiAkF\u002FcyACQYGChAhrcUGAgYKEeHENASAAKAIEIQIgAEEEaiEAIAJBgYKECGsgAkF\u002Fc3FBgIGChHhxRQ0ACwsgAUH\u002FAXEhAwNAIAAiAi0AACIEBEAgAEEBaiEAIAMgBEcNAQsLIAIMAgsgABA9IABqDAELIAALIgBBACAALQAAIAFB\u002FwFxRhsLrAEDAXwBfgF\u002FIAC9IgJCNIinQf8PcSIDQbIITQR8IANB\u002FQdNBEAgAEQAAAAAAAAAAKIPCwJ8IAAgAJogAkIAWRsiAEQAAAAAAAAwQ6BEAAAAAAAAMMOgIAChIgFEAAAAAAAA4D9kBEAgACABoEQAAAAAAADwv6AMAQsgACABoCIAIAFEAAAAAAAA4L9lRQ0AGiAARAAAAAAAAPA\u002FoAsiACAAmiACQgBZGwUgAAsL1AMDA38EfAF+IAC9IghCIIinIQECQAJ8AnwCQCABQfmE6v4DSyAIQgBZcUUEQCABQYCAwP97TwRARAAAAAAAAPD\u002FIABEAAAAAAAA8L9hDQQaIAAgAKFEAAAAAAAAAACjDwsgAUEBdEGAgIDKB0kNBCABQcX9yv57Tw0BRAAAAAAAAAAADAILIAFB\u002F\u002F+\u002F\u002FwdLDQMLIABEAAAAAAAA8D+gIgS9IghCIIinQeK+JWoiAUEUdkH\u002FB2shAyAAIAShRAAAAAAAAPA\u002FoCAAIAREAAAAAAAA8L+goSABQf\u002F\u002Fv4AESxsgBKNEAAAAAAAAAAAgAUH\u002F\u002F7+aBE0bIQYgCEL\u002F\u002F\u002F\u002F\u002FD4MgAUH\u002F\u002Fz9xQZ7Bmv8Daq1CIIaEv0QAAAAAAADwv6AhACADtwsiBEQAAOD+Qi7mP6IgACAAIABEAAAAAAAAAECgoyIFIAAgAEQAAAAAAADgP6KiIgcgBSAFoiIFIAWiIgAgACAARJ\u002FGeNAJmsM\u002FokSveI4dxXHMP6CiRAT6l5mZmdk\u002FoKIgBSAAIAAgAEREUj7fEvHCP6JE3gPLlmRGxz+gokRZkyKUJEnSP6CiRJNVVVVVVeU\u002FoKKgoKIgBER2PHk17znqPaIgBqCgIAehoKALDwsgAAvvAQEDfyAARQRAQaDUBCgCAARAQaDUBCgCABCiAyEBC0HY1AQoAgAEQEHY1AQoAgAQogMgAXIhAQtBmNUEKAIAIgAEQANAIAAoAkwaIAAoAhQgACgCHEcEQCAAEKIDIAFyIQELIAAoAjgiAA0ACwsgAQ8LIAAoAkxBAEghAgJAAkAgACgCFCAAKAIcRg0AIABBAEEAIAAoAiQRAQAaIAAoAhQNAEF\u002FIQEMAQsgACgCBCIBIAAoAggiA0cEQCAAIAEgA2usQQEgACgCKBEQABoLQQAhASAAQQA2AhwgAEIANwMQIABCADcCBCACDQALIAEL6w8DB3wIfwJ+RAAAAAAAAPA\u002FIQMCQAJAAkAgAb0iEUIgiKciD0H\u002F\u002F\u002F\u002F\u002FB3EiCSARpyIMckUNACAAvSISQiCIpyEKIBKnIhBFIApBgIDA\u002FwNGcQ0AIApB\u002F\u002F\u002F\u002F\u002FwdxIgtBgIDA\u002FwdLIAtBgIDA\u002FwdGIBBBAEdxciAJQYCAwP8HS3JFIAxFIAlBgIDA\u002FwdHcnFFBEAgACABoA8LAkACQAJAAkACQAJ\u002FQQAgEkIAWQ0AGkECIAlB\u002F\u002F\u002F\u002FmQRLDQAaQQAgCUGAgMD\u002FA0kNABogCUEUdiENIAlBgICAigRJDQFBACAMQbMIIA1rIg52Ig0gDnQgDEcNABpBAiANQQFxawshDiAMDQIgCUGAgMD\u002FB0cNASALQYCAwP8DayAQckUNBSALQYCAwP8DSQ0DIAFEAAAAAAAAAAAgEUIAWRsPCyAMDQEgCUGTCCANayIMdiINIAx0IAlHDQBBAiANQQFxayEOCyAJQYCAwP8DRgRAIBFCAFkEQCAADwtEAAAAAAAA8D8gAKMPCyAPQYCAgIAERgRAIAAgAKIPCyAPQYCAgP8DRyASQgBTcg0AIACfDwsgAJkhAiAQDQECQCAKQQBIBEAgCkGAgICAeEYgCkGAgMD\u002Fe0ZyIApBgIBARnINAQwDCyAKRSAKQYCAwP8HRnINACAKQYCAwP8DRw0CC0QAAAAAAADwPyACoyACIBFCAFMbIQMgEkIAWQ0CIA4gC0GAgMD\u002FA2tyRQRAIAMgA6EiACAAow8LIAOaIAMgDkEBRhsPC0QAAAAAAAAAACABmiARQgBZGw8LAkAgEkIAWQ0AAkACQCAODgIAAQILIAAgAKEiACAAow8LRAAAAAAAAPC\u002FIQMLAnwgCUGBgICPBE8EQCAJQYGAwJ8ETwRAIAtB\u002F\u002F+\u002F\u002FwNNBEBEAAAAAAAA8H9EAAAAAAAAAAAgEUIAUxsPC0QAAAAAAADwf0QAAAAAAAAAACAPQQBKGw8LIAtB\u002Fv+\u002F\u002FwNNBEAgA0ScdQCIPOQ3fqJEnHUAiDzkN36iIANEWfP4wh9upQGiRFnz+MIfbqUBoiARQgBTGw8LIAtBgYDA\u002FwNPBEAgA0ScdQCIPOQ3fqJEnHUAiDzkN36iIANEWfP4wh9upQGiRFnz+MIfbqUBoiAPQQBKGw8LIAJEAAAAAAAA8L+gIgBERN9d+AuuVD6iIAAgAKJEAAAAAAAA4D8gACAARAAAAAAAANC\u002FokRVVVVVVVXVP6CioaJE\u002FoIrZUcV97+ioCICIAIgAEQAAABgRxX3P6IiAqC9QoCAgIBwg78iACACoaEMAQsgAkQAAAAAAABAQ6IiACACIAtBgIDAAEkiCRshAiAAvUIgiKcgCyAJGyIMQf\u002F\u002FP3EiCkGAgMD\u002FA3IhCyAMQRR1Qcx3QYF4IAkbaiEMQQAhCQJAIApBj7EOSQ0AIApB+uwuSQRAQQEhCQwBCyAKQYCAgP8DciELIAxBAWohDAsgCUEDdCIKQaClBGorAwAgAr1C\u002F\u002F\u002F\u002F\u002Fw+DIAutQiCGhL8iBCAKQZClBGorAwAiBaEiBkQAAAAAAADwPyAFIASgoyIHoiICvUKAgICAcIO\u002FIgAgACAAoiIIRAAAAAAAAAhAoCAHIAYgACAJQRJ0IAtBAXZqQYCAoIACaq1CIIa\u002FIgaioSAAIAQgBiAFoaGioaIiBCACIACgoiACIAKiIgAgAKIgACAAIAAgACAARO9ORUoofso\u002FokRl28mTSobNP6CiRAFBHalgdNE\u002FoKJETSaPUVVV1T+gokT\u002Fq2\u002Fbtm3bP6CiRAMzMzMzM+M\u002FoKKgIgWgvUKAgICAcIO\u002FIgCiIgYgBCAAoiACIAUgAEQAAAAAAAAIwKAgCKGhoqAiAqC9QoCAgIBwg78iAET1AVsU4C8+vqIgAiAAIAahoUT9AzrcCcfuP6KgoCICIApBsKUEaisDACIEIAIgAEQAAADgCcfuP6IiAqCgIAy3IgWgvUKAgICAcIO\u002FIgAgBaEgBKEgAqGhCyECIAEgEUKAgICAcIO\u002FIgShIACiIAIgAaKgIgIgACAEoiIBoCIAvSIRpyEJAkAgEUIgiKciCkGAgMCEBE4EQCAKQYCAwIQEayAJcg0DIAJE\u002FoIrZUcVlzygIAAgAaFkRQ0BDAMLIApBgPj\u002F\u002FwdxQYCYw4QESQ0AIApBgOi8+wNqIAlyDQMgAiAAIAGhZUUNAAwDC0EAIQkgAwJ8IApB\u002F\u002F\u002F\u002F\u002FwdxIgtBgYCA\u002FwNPBH5BAEGAgMAAIAtBFHZB\u002FgdrdiAKaiIKQf\u002F\u002FP3FBgIDAAHJBkwggCkEUdkH\u002FD3EiC2t2IglrIAkgEUIAUxshCSACIAFBgIBAIAtB\u002FwdrdSAKca1CIIa\u002FoSIBoL0FIBELQoCAgIBwg78iAEQAAAAAQy7mP6IiAyACIAAgAaGhRO85+v5CLuY\u002FoiAARDlsqAxhXCC+oqAiAqAiACAAIAAgACAAoiIBIAEgASABIAFE0KS+cmk3Zj6iRPFr0sVBvbu+oKJELN4lr2pWET+gokSTvb4WbMFmv6CiRD5VVVVVVcU\u002FoKKhIgGiIAFEAAAAAAAAAMCgoyAAIAIgACADoaEiAKIgAKChoUQAAAAAAADwP6AiAL0iEUIgiKcgCUEUdGoiCkH\u002F\u002Fz9MBEAgACAJENUBDAELIBFC\u002F\u002F\u002F\u002F\u002Fw+DIAqtQiCGhL8LoiEDCyADDwsgA0ScdQCIPOQ3fqJEnHUAiDzkN36iDwsgA0RZ8\u002FjCH26lAaJEWfP4wh9upQGiCysAIABBgAFPBH8gAEHPAU0EQCAAQYAFag8LIABBAXRBosoDai8BAAUgAAsLiwIBA38jAEEQayIEJAACQCAEQQxqIAAgAiADEJoGIgJBAEgNACABIAJqIQMgBCgCDCEBA0AgA0EBaiECAkAgAy0AACIFQT9NBEAgBUEDdiABakEBaiIBIABLDQMgBCAFQQdxIAFqQQFqIgE2AgwgBkEBcyEGDAELIAXAQQBIBEAgBCABIAVqQf8AayIBNgIMDAELIAItAAAhAiAFQd8ATQRAIAQgBUEIdCACciABakH\u002F\u002FwBrIgE2AgwgA0ECaiECDAELIAQgAy0AAiAFQRB0IAJBCHRyciABakH\u002F\u002F\u002F8CayIBNgIMIANBA2ohAgsgACABSQ0BIAZBAXMhBiACIQMMAAsACyAEQRBqJAAgBgtMAQN\u002FIwBBEGsiAyQAAn8gAiABKAIAIgQtAABHBEAgAyACNgIAIABBzJABIAMQP0F\u002FDAELIAEgBEEBajYCAEEACyEFIANBEGokACAFCx4AIABBMGtBCkkgAEFfcUHBAGtBGklyIABB3wBGcguoAQECfyAAKAJAGgJAIAAoAgQhAyAAIAEQpQYNAANAIAAoAhgiAi0AAEH8AEcEQEEADwsgACACQQFqNgIYIAAoAgQhAiAAIANBBRCWAgRAIAAQ1QJBfw8LIAAoAgAgA2pBCToAACAAKAIAIANqIAIgA2tBBWo2AAEgAEEHQQAQtwEhAiAAIAEQpQYNASAAKAIAIAJqIAAoAgQgAmtBBGs2AAAMAAsAC0F\u002FC0gBA38CQANAIAFBCkYNASABQQJ0QfL+AWovAQAgAEoNASABQQF0IQMgAUEBaiEBIANBAXRB9P4Bai8BACAATQ0AC0EBDwtBAAvrAQECfyMAQSBrIgQkAAJ\u002FAkAgACABRwRAIAEoAgxFBEACQAJAAkAgASgCCEH+\u002F\u002F\u002F\u002FB2sOAgEAAgsgABAqQQAMBQsgASgCBA0DIABBABB\u002FQQAMBAsgAEEBEH9BAAwDCyABKAIEDQEgACgCACEFIARCADcCGCAEQoCAgICAgICAgH83AhAgBCAFNgIMIARBDGoiBUIBEDIaIAEgBRC9AgRAIABBABCAASAFEBlBAAwDCyAEQQxqEBkgACABIAIgA0GXA0EAEKoEDAILQentAEHY7ABBzSNBzsgAEAAACyAAECpBAAsaIARBIGokAAvxAgEEfyMAQUBqIgYkAAJAIAQgA2siCEEBRgRAAkAgA0UEQCABQgMQMhoMAQsgASADrRAyGiABQQE2AgQLIAIgA0EBdEEBcq0QMhogAiACKAIIQQJqNgIIIAAgARBJGgwBCyAAKAIAIQcgACABIAIgAyAIQQF2IANqIgNBARCrAyAGQgA3AjggBkKAgICAgICAgIB\u002FNwIwIAYgBzYCLCAGQgA3AiQgBkKAgICAgICAgIB\u002FNwIcIAYgBzYCGCAGQgA3AhAgBkKAgICAgICAgIB\u002FNwIIIAYgBzYCBCAGQSxqIgcgBkEYaiIIIAZBBGoiCSADIAQgBRCrAyAAIAAgCUH\u002F\u002F\u002F\u002F\u002FA0EBEEAaIAcgByABQf\u002F\u002F\u002F\u002F8DQQEQQBogACAAIAdB\u002F\u002F\u002F\u002F\u002FwNBARC4ARogBQRAIAEgASAIQf\u002F\u002F\u002F\u002F8DQQEQQBoLIAIgAiAGQQRqIgBB\u002F\u002F\u002F\u002F\u002FwNBARBAGiAGQSxqEBkgBkEYahAZIAAQGQsgBkFAayQAC60GAQ5\u002FIwBB8ABrIgckAAJAAkACfyACIAJBAWsiBXFFBEAgASgCDEEFdCABKAIIQSAgBWdrIglvIgVrIAlBACAFQQBKG2ohDSAJQSAgCUH\u002FAXFuIgxsIQ8gAQwBCyACEK4EIQogASgCACEFIAdCADcCGCAHQoCAgICAgICAgH83AhAgByAFNgIMIAdBDGogAyACQb7+AWotAAAiDGpBAWsgDG4iDRBQDQFBACEFIAcoAgwiBigCAEEAQQRBxAAgBygCGCIJQQFrZ0EBdGsgCUECSRsiC0EUbCAGKAIEEQEAIghFDQEDQCAFIAtGRQRAIAggBUEUbGoiD0IANwIMIA9CgICAgICAgICAfzcCBCAPIAY2AgAgBUEBaiEFDAELC0EAIQUgCCAHKAIcIAEgCUEAIAkgCkEgIApBAWtna0EAIApBAk8bEKgEIRIDQCAFIAtGRQRAIAggBUEUbGoQGSAFQQFqIQUMAQsLQQAhCSAGKAIAIAhBACAGKAIEEQEAGiASDQEgDCANbCADayEKQQEhDyAHQQxqCyEIQX8gCXRBf3MhEEEAIQsgAkEKRyERIAwhBQNAIAMgC00NAiAFIAxGBEAgDSAPayENAkAgCUUEQEEAIQUgDSAIKAIMSQRAIAgoAhAgDUECdGooAgAhBQsgDCEGIBFFBEADQCAGQQBMDQMgBkEBayIGIAdBIGpqIAUgBUEKbiIFQQpsa0EwcjoAAAwACwALA0AgBkEATA0CIAZBAWsiBiAHQSBqakEwQdcAIAUgBSACbiIFIAJsayIOQQpIGyAOajoAAAwACwALIAgoAhAgCCgCDCANEHEhBiAMIQUDQCAFQQBMDQEgBUEBayIFIAdBIGpqIAYgEHEiDkEwciAOQdcAaiAOQQpJGzoAACAGIAl2IQYMAAsACyAKIQVBACEKCwJAIAsgBCIGSQ0AIAMhBiAEIAtHDQAgAEEuEA4LIAAgB0EgaiAFaiAMIAVrIg4gBiALayIGIAYgDkobIgYQchogBiALaiELIAUgBmohBQwACwALIABBATYCDCAHQQxqIQgLIAEgCEcEQCAIEBkLIAdB8ABqJAAL9gEBBH8jAEEgayIHJAACQCACQQFGBEAgACABNQIAEDIhAwwBCyAEQQF0IANBAWoiCXZBAWpBAXYhCCAGIANBFGxqIgooAgxFBEAgCiAFIAhB\u002F\u002F\u002F\u002F\u002FwNBARDXAiIDDQELIAAgASAIQQJ0aiACIAhrIAkgBCAFIAYQrQMiAw0AIAAgACAKQf\u002F\u002F\u002F\u002F8DQQEQQCIDDQAgACgCACECIAdCADcCGCAHQoCAgICAgICAgH83AhAgByACNgIMIAdBDGoiAiABIAggCSAEIAUgBhCtAyIDRQRAIAAgACACQf\u002F\u002F\u002F\u002F8DQQEQuAEhAwsgB0EMahAZCyAHQSBqJAAgAwumAQEFf0F\u002FIQYCQCABKAIAIgRBAEgEQCAAKAIAIgUoAgAgACgCECAAKAIMIgNBAWoiByADQQNsQQF2IgMgAyAHSBsiA0ECdCAFKAIEEQEAIgVFDQEgACAFNgIQIAUgAyAAKAIMIgZrIgdBAnRqIAUgBkECdBCrASAAIAM2AgwgBCAHaiEECyAAKAIQIARBAnRqIAI2AgAgASAEQQFrNgIAQQAhBgsgBguEAQECfwJAIAAgAUcEQCACRQRAIABCARAyIQUMAgtBHiACZ2shBiAAIAEQSSEFA0AgBkEASA0CIAAgACAAIAMgBBBAIAVyIQUgAiAGdkEBcQRAIAAgACABIAMgBBBAIAVyIQULIAZBAWshBgwACwALQentAEHY7ABB7RFBlcYAEAAACyAFC\u002FgEAQt\u002FIwBBMGsiBSQAAkACQAJAIAAgAUYgACACRnJFBEAgASgCCEEASgRAIAEoAgQhBgsgAigCCEEASgRAIAIoAgQhCAsgBkUEQCABIQcMAgsgACgCACEEIAVCADcCFCAFQoCAgICAgICAgH83AgwgBSAENgIIIAVBCGoiBCEHIAQgAUIBQf\u002F\u002F\u002F\u002F8DQQEQekUNAUEAIQQMAgtBy4MBQdjsAEGwEkGlNxAAAAsCQCAIRQRAIAIhBAwBCyAAKAIAIQEgBUIANwIoIAVCgICAgICAgICAfzcCICAFIAE2AhwgBUEcaiIBIQQgASACQgFB\u002F\u002F\u002F\u002F\u002FwNBARB6DQELIABBAQJ\u002FIAYgCCADELMEIgIgA0ECR3JFBEAgBiAIckUEQCAHKAIIIgEgBCgCCCIJIAEgCUgbDAILIAZFBEAgBygCCAwCCyAEKAIIDAELIAcoAggiASAEKAIIIgkgASAJShsLIgEgAUEBTBtBH2oiCUEFdiIKEFANAEEAIQFBACACayELQQAgCGshCEEAIAZrIQYgBCgCDEEFdCAEKAIIayEMIAcoAgxBBXQgBygCCGshDQNAIAEgCkZFBEAgACgCECABQQJ0aiAHKAIQIAcoAgwgDSABQQV0Ig5qEHEgBnMgBCgCECAEKAIMIAwgDmoQcSAIcyADELMEIAtzNgIAIAFBAWohAQwBCwsgACACNgIEIAAgCUHg\u002F\u002F\u002F\u002FB3E2AgggAEH\u002F\u002F\u002F\u002F\u002FA0EBEJsCGkEAIQEgAkUNASAAIABCf0H\u002F\u002F\u002F\u002F\u002FA0EBEHpFDQELIAAQKkEgIQELIAVBCGoiACAHRgRAIAAQGQsgBUEcaiIAIARGBEAgABAZCyAFQTBqJAAgAQt9AQJ\u002FIwBBIGsiBiQAAkAgACABRyAAIAJHcUUEQCAAKAIAIQcgBkIANwIYIAZCgICAgICAgICAfzcCECAGIAc2AgwgBkEMaiIHIAEgAiADIAQgBRELACEBIAAgBxC\u002FBAwBCyAAIAEgAiADIAQgBRELACEBCyAGQSBqJAAgAQsgAQF+IAAgACACIAFBAUECQQAQggEiBCABIAMQvwEgBAvtCgIMfwN+IwBBEGsiDiQAIAQgBUEBayIGQQJ0aigCACEHAkACQCAFQQFGBEBBACEGIA5BADYCDAJAIANBAk0EQCAHrSESA0AgA0EATA0CIAEgA0EBayIDQQJ0IgBqIAAgAmo1AgAgBq1CIIaEIhMgEoAiFD4CACATIBIgFH59pyEGDAALAAsgB0F\u002Fc61CIIZC\u002F\u002F\u002F\u002F\u002Fw+EIAetgKchAANAIANBAWsiA0EASA0BIAEgA0ECdCIEaiAOQQxqIAYgAiAEaigCACAHIAAQuwQ2AgAgDigCDCEGDAALAAsgAiAGNgIADAELAkACQAJAAkAgAyAFayIIIAUgBSAIShtBMk4EQCAIBEAgACgCAEEAIAhBAWoiDSAIIAUgCEsbIglBAWoiC0ECdCAAKAIEEQEAIgpFIAAoAgBBACALQQN0IAAoAgQRAQAiB0VyDQUgBSAJSw0CIAkgBWshDEEAIQYDQCAGIAxGBEAgByAMQQJ0aiEMQQAhBgNAIAUgBkYNBiAMIAZBAnQiD2ogBCAPaigCADYCACAGQQFqIQYMAAsABSAHIAZBAnRqQQA2AgAgBkEBaiEGDAELAAsAC0HtgwFB2OwAQbULQaPaABAAAAsgCEEDTwRAIAdBf3OtQiCGQv\u002F\u002F\u002F\u002F8PhCAHrYCnIQsLIAIgCEECdGohAAJAAkACQANAIAZBAEgNASAGQQJ0IQMgBkEBayEGIAAgA2ooAgAiCSADIARqKAIAIgNGDQALIAEgCEECdGogAyAJTSIDNgIAIAMNAQwCCyABIAhBAnRqQQE2AgALIAAgACAEIAUQ8QEaCyACIAVBAnRqIQ8gB60hEkEAIQkDQCAIQQFrIghBAEgNBgJ\u002FQX8gByAPIAhBAnQiDGoiBigCACIATQ0AGiALBEAgDkEIaiAAIAZBBGsoAgAgByALELsEDAELIAZBBGs1AgAgAK1CIIaEIBKApwshACACIAxqIQ0gAK0hE0EAIQpBACEDA0AgAyAFRkUEQCANIANBAnQiEGoiESARNQIAIAqtIAQgEGo1AgAgE358fSIUPgIAQQAgFEIgiKdrIQogA0EBaiEDDAELCyAGIAYoAgAiAyAKazYCACADIApJBEADQCAAQQFrIQAgDSANIAQgBRC0A0UNACAGIAYoAgBBAWoiAzYCACADDQALCyABIAxqIAA2AgAMAAsACyAEIAUgCWtBAnRqIQxBACEGA0AgBiAJRkUEQCAHIAZBAnQiD2ogDCAPaigCADYCACAGQQFqIQYMAQsLIAdBASAJENsCRQ0AIApBACAJQQJ0IgYQLCAGakEBNgIADAELIAAgCiAHIAkQvAQNAQsgByAKIAsgAiADQQJ0aiAJQX9zQQJ0aiALEPABIAcgC0EDdGogCEF\u002Fc0ECdGohCEEAIQYDQCAGIA1GRQRAIAEgBkECdCIJaiAIIAlqKAIANgIAIAZBAWohBgwBCwsgACgCACAHQQAgACgCBBEBABogACgCACAKQQAgACgCBBEBABogACgCAEEAIANBAnRBBGogACgCBBEBACIDRQRAQX8hCQwDCyADIAEgDSAEIAUQ8AEgAiACIAMgBUEBahDxARogACgCACADQQAgACgCBBEBABogAiAFQQJ0aiEAA0AgBSEDAkAgACgCAA0AA0AgA0EATA0BIAIgA0EBayIDQQJ0IgZqKAIAIgggBCAGaigCACIGRg0ACyAGIAhLDQMLIAIgAiAEIAUQ8QEhAyAAIAAoAgAgA2s2AgAgAUEBIA0Q2wIaDAALAAsgCgRAIAAoAgAgCkEAIAAoAgQRAQAaC0F\u002FIQkgB0UNASAAKAIAIAdBACAAKAIEEQEAGgwBC0EAIQkLIA5BEGokACAJC04BBH8DQCADIAZHBEAgACAGQQJ0IgVqIAQgAiAFaigCACIHIAEgBWooAgBqIgVqIgQ2AgAgBSAHSSAEIAVJciEEIAZBAWohBgwBCwsgBAt0AQR\u002FQQIhAgJAIAAoAggiBEH\u002F\u002F\u002F\u002F\u002FB0YNACABKAIIIgVB\u002F\u002F\u002F\u002F\u002FwdGDQAgACgCBCIDIAEoAgRHBEAgBEGAgICAeEYEQEEAIQIgBUGAgICAeEYNAgtBASADQQF0aw8LQQAgACABEPIBIgBrIAAgAxshAgsgAguRAQEDfwJAIAAoAggiBEH9\u002F\u002F\u002F\u002FB0oNACACQQZGBEAgASADSA8LIARBgICAgHhGIAFBAmogA0pyDQAgACgCECIGIAAoAgwiBCABQX9zIgAgBEEFdGoiARCaAiACQXtxRXMhAiAAIANqIQADQCAARQ0BIABBAWshACAGIAQgAUEBayIBEJoCIAJGDQALQQEhBQsgBQviAQEDfwJAAkAgA0EDcUUgA0EHcSIEQQVGIAJB\u002F\u002F\u002F\u002F\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\u002FRhshBSACQXtxIQIgABAtIQQDQEF\u002FIQMgABAPDQEgAEEREA0gACAFIAQQGBogAEEOEA0CQCABQaF\u002FRgRAIABBCCACEPYBRQ0BDAMLIABBoX8gAhDAAw0CCyAAKAIQIgMgAUYNAAsgA0Gmf0YEQCAAQbcIQQAQE0F\u002FDwsgACAEEBpBACEDCyADC1cBBH8gACgCzAEgAkEDdGpBBGohAwNAAkBBfyEEIAMoAgAiBUF\u002FRg0AIAAoAnQgBUEEdGoiBigCBCACRw0AIAZBCGohAyAFIQQgBigCACABRw0BCwsgBAvcAQEBfyAAKAIAIAAoAkBBAEEAIAAoAgxBABDqAyICRQRAIAFBADYCAEF\u002FDwsgAkEANgJwIAJBADYCYCACQoCAgIAQNwJIIAJCATcCMCACQYAMOwFsIAJCATcCWCACQgE3AlAgASACNgIAIAAgAjYCQCAAIAEoAhAEfyACBSAAQQkQDSABIAEoAgAoApgCNgIMIABB6gBBfxAYIQEgAEG4ARANIABBCBAXIABBABAUIABBuAEQDSAAQfQAEBcgAEEAEBQgAEEtEA0gACABEBogACgCQAsoAgQ2AkBBAAuRAQEFfwJAAkAgACgCQCIBKAKYAiICQQBIDQAgASgCgAIiAyACaiIELQAAIgVBxQFHBEAgBUHNAEcNASABQX82ApgCIAEgAjYChAIgAEHOABANDwsgAiAEKAABayADaiIAQQFqLQAAQdYARw0BIABB1wA6AAEgAUF\u002FNgKYAgsPC0G+IkGo7ABBobABQeHkABAAAAugIwILfwF+IwBBIGsiBSQAIAFBAnEiB0EBdiEKQX4hAgJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIQIgRBgAFqDgcCAw8NAQEFAAsCQCAEQdUAag4MCQsMAQEBAQoBAQESAAsCQCAEQTtqDgoHAQEIAQEBARARAAsgBEEoRg0FIARBL0YNAyAEQdsARiAEQfsARnINDQsgACgCOCEBIAUgACgCGCICNgIEIAUgASACazYCACAAQYyNASAFEBMMFwsgACkDICINQv\u002F\u002F\u002F\u002F8PWARAIABBARANIAAgDacQOAwUCyAAIA1BABDAAUEATg0TDBYLQX8hAyAAIAApAyBBARDAAQ0WIAAQD0UNEwwWC0F\u002FIQILIAAgACgCOCACajYCOCAAKAIAKALoAUUEQCAAQaTlAEEAEBMMFAtBfyEDIAAQ5wQNFEEAIQIgACAAKQMgQQAQwAEaIAAoAgAiASAAKQMgIAApAyggASgC6AERGAAiDUKAgICAcINCgICAgOAAUQRAIAAoAkAiAQRAIAEoAmhBAEdBAXQhAgsgACgCACIBIAEoAhApA4ABIAAoAgwgACgCFCACELQCDBULIAAgDUEAEMABIQsgACgCACANEAwgCw0UIABBMxANIAAQD0UNEQwUCwJAIAFBBHFFDQBBACECIABBAEEBEJwBQaR\u002FRw0AQX8hAyAAQQNBACAAKAIYIAAoAhQQxAFFDRIMFAtBfyEDIAAQ+AFFDRAMEwtBfyEDQQAhAiAAQQJBACAAKAIYIAAoAhQQxAFFDRAMEgtBfyEDQQAhAiAAQQFBABDsAkUNDwwRC0F\u002FIQMgABAPDRAgAEEHEA0MDQtBfyEDIAAQDw0PIABBuAEQDSAAQQgQFwwKC0F\u002FIQMgABAPDQ4gAEEJEA0MCwtBfyEDIAAQDw0NIABBChANDAoLIAAoAigEQCAAENwBDAwLAkAgAUEEcSIHRQ0AIABBARBzQaR\u002FRw0AQX8hA0EAIQIgAEEDQQAgACgCGCAAKAIUEMQBRQ0LDA0LAkACQCAAQYYBEEVFDQAgAEEBEHNBCkYNACAAKAIUIQEgACgCGCEEQX8hAyAAEA8NDiAAKAIQIgZBRUYEQCAAQQJBAiAEIAEQxAFFDQwMDwtBhgEhAiAHRQ0BAkAgBkEoRgR\u002FIABBAEEBEJwBQaR\u002FRg0BIAAoAhAFIAYLQYN\u002FRw0CIAAoAigNAiAAQQEQc0Gkf0cNAgsgAEEDQQIgBCABEMQBRQ0LDA4LAkAgACgCICIBQc4ARw0AIAAoAkAoAlwNACAAQb0vQQAQEwwNCyAAKAIAIAEQFiECIAAQD0UNACAAKAIAIAIQEAwMCyAAQbgBEA0gACACEDggACAAKAJALwG8ARAUDAkLIAAgBUEYakEAEJwBQT1GBEAgAEEAQQBBACAFKAIYQQJxQQEQwgFBAE4NCQwLCyAAKAIQQfsARgRAQQAhASAFQQA2AhwgABAPDQYgAEELEA0CQANAIAAoAhAiAUH9AEYNAQJAAkAgAUGlf0YEQCAAEA8NECAAEFMNECAAQQcQDSAAQdMAEA0gAEEGEFggAEEOEA0gAEEOEA0MAQsgACgCFCEBIAAoAhghAyAAIAVBHGpBAUEBQQAQxgMiBEEASA0BAkACQCAEQQFGBEAgAEG4ARANIAAgBSgCHCIBEBcgACAAKAJALwG8ARAUDAELIAAoAhBBKEYEQAJ\u002FIARB\u002Fv\u002F\u002F\u002FwdxIgZBAkYEQCAEQQJqIQdBAAwBC0EGIQcgBEEDa0EAIARBBGtBA0kbCyECIAAgByACIAMgARDEAQ0EAkAgBSgCHCIBRQRAIABB1QAQDQwBCyAAQdQAEA0gACABEBcLIABBBCAEQQFrQQRyIAZBAkcbQf8BcRBYDAILIABBOhAoDQMgABBTDQMCQCAFKAIcIgFBxQBHBEAgAQ0BIAAQwwMgAEHRABANIABBDhANQQAhAQwDCyAJBEAgAEH41ABBABATQcUAIQEMDgsgAEHPABANQQEhCUHFACEBDAILIAAgARCeAQsgAEHMABANIAAgARAXCyAAKAIAIAEQEAsgBUEANgIcIAAoAhBBLEcNAiAAEA9FDQELCyAFKAIcIQEMBwtBACEBIABB\u002FQAQKEUNCQwGCyAAEA8NCkEAIQEDQCAAKAIQIgJB3QBGIAFBH0tyIAJBpX9GciACQSxGckUEQCAAEFMNDCABQQFqIQEgACgCECICQd0ARg0BIAJBLEcNBiAAEA9FDQEMDAsLIABBJhANIAAgAUH\u002F\u002FwNxEBRBACECA0AgACgCECEEAkACQAJAAkAgAUH\u002F\u002F\u002F\u002F\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\u002F\u002FA0YEQCAAQbYhQQAQEwwICyADQaV\u002FRwRAQX8hAyAAEFMNCSABQQFqIQEgACgCEEEpRg0CIABBLBAoRQ0BDAkLCyAFIAE2AhQgAEEmEA0gACABQf\u002F\u002FA3EQFCAAQQEQDSAAIAEQOANAAkACQCAAKAIQIgFBpX9HBEAgAUEpRg0CIAAQUw0KIABB0QAQDUGQASEBDAELQX8hAyAAEA8NCkHSACEBIAAQUw0KCyAAIAEQDSAAKAIQQSlGDQBBfyEDIABBLBAoRQ0BDAkLCyAAEA8NBiAAQQ4QDQJAAkACQAJAIAZBvAFrDgQBAwMBAAsgBkExRg0BIAZBxwBGDQAgBkHBAEcNAgsgAEEYEA0gAEEnEA0gACAHQQFGEBRBACECDAcLIABBMhANDAQLIAJFBEAgAEEnEA0gAEEBEBQMAwsgB0EBRgRAIABBGBANIABBJxANIABBARAUQQAhAgwGCyAAQQYQDSAAQRsQDSAAQScQDUEAIQIgAEEAEBQMBQsgBSABNgIUIAAQDw0FCwJAAkACQAJAIAZBvAFrDgQBAwMBAAsgBkExRg0BIAZBxwBGDQAgBkHBAEcNAgsgAEEkEA0gACAFLwEUEBRBACECDAULIABBMRANIAAgBS8BFBAUDAILAkACQAJAIAdBAWsOAgEAAgsgAEEhEA0gACAFLwEUEBQMAgsgAEEhEA0gACAFLwEUEBRBACECDAQLIABBIhANIAAgBS8BFBAUQQAhAgwDCyAAQREQDSAAQb0BEA0gAEEIEBdBACECIABBABAUIAAQ6wQMAgsgACAELwG8ARAUIARBATYCREEAIQIMAQtBACEBIAQoApgCIgNBAE4EQCAEKAKAAiADai0AACEBCyAHRQRAIAAgBUEcakEBEOQCC0F\u002FIQMgABAPDQIgABCLAQ0CIABB3QAQKA0CIAFBNEYEQCAAQcoAEA0FIABBxwAQDQsMAAsAC0F\u002FIQMLIAVBIGokACADC4EBAQF\u002FAkACQCAAKAIQQYN\u002FRw0AIAAoAigNACAAKAIgIQIgACgCQC0AbkEBcUUNASACQc4ARg0AIAJBO0cNAQsgAEGLHUEAEBNBAA8LIAAoAgAgAhAWIQICQAJAIAEEQCAAIAIQ5gQNAQsgABAPRQ0BCyAAKAIAIAIQEEEAIQILIAIL4gQBBH8CQAJAAkACfwJAAkACQAJAAkAgAkUNAAJAIABBwgAQRUUEQCAAQcMAEEVFDQELIAAoAgAgACgCIBAWIQUgABAPDQRBASEHAkACQCAAKAIQIghBKGsOBQQBAQEEAAsgCEE6RiAIQf0ARnINAwsgACgCACAFEBBBA0ECIAVBwwBGGyEGDAELIAAoAhBBKkYEQCAAEA8NCEEEIQYMAQsgAEGGARBFRQ0AIABBARBzQQpGDQAgACgCACAAKAIgEBYhBSAAEA8NA0EBIQcCQAJAIAAoAhAiCEEoaw4FAwEBAQMACyAIQTpGIAhB\u002FQBGcg0CCyAAKAIAIAUQEEEFIQYgACgCEEEqRw0AIAAQDw0HQQYhBgsgACgCECIFQYN\u002FRyAFQSdqQVJJcQ0BQQAhByAFQYN\u002FRgRAIAAoAihFIQcLIAAoAgAgACgCIBAWIQUgABAPDQILQQAgBiADRSAHRXJyDQMaIAAoAhAiAEE6RyACRSAAQShHcnEhBkEAIQQMBgsCQAJAAkAgBUGAAWoOAgEAAgsgACgCACAAKQMgEDAiBUUNBiAAEA8NAgwDCyAAKAIAIAApAyAQMCIFRQ0FIAAQD0UNAgwBCyAFQdsARwRAIARFIAVBqX9Hcg0EIAAoAgAgACgCIBAWIQUgABAPDQFBEAwDCyAAEA8NBCAAEIsBDQQgAEHdABAoDQRBACEFQQAMAgsgACgCACAFEBAMAwtBAAshBCAGQQJJDQIgACgCEEEoRg0CIAAoAgAgBRAQCyAAQeLUAEEAEBMLIAFBADYCAEF\u002FDwsgASAFNgIAIAQgBnILUwEBf0F\u002FIQIgACgCACAAKAJAIgBBtAJqQQggAEG8AmogACgCuAJBAWoQZEUEQCAAIAAoArgCIgJBAWo2ArgCIAAoArQCIAJBA3RqIAE3AwALIAILjgEBAn8gASgCiAEiBEH\u002F\u002FwNOBEAgAEGjIUEAEDpBfw8LQX8hAyAAIAFBgAFqQRAgAUGEAWogBEEBahBkBH9BfwUgASABKAKIASIDQQFqNgKIASABKAKAASADQQR0aiIDQgA3AgAgA0IANwIIIAMgACACEBY2AgAgAyADKAIMQYB+cjYCDCABKAKIAUEBawsLhgEBAn8CQANAIAJBAE4EQAJAIAAoAnQgAkEEdGoiBCgCACABRw0AIAQoAgwiBUECcQ0DIANFDQAgBUHwAXFBMEYNAwsgBCgCCCECDAELC0F\u002FIQIgACgCIEUNACAAKAIkDQAgACABEKACIgAEQEGAgICABCECIAAtAARBAnENAQtBfyECCyACC8ABAQR\u002FIwBBEGsiAiQAIABBJxBFBH8gAiAAKAIENgIAIAIgACgCFDYCBCACIAAoAhg2AgwgAiAAKAIwNgIIQX8Cf0F\u002FIAAQDw0AGgJAIAAoAhAiA0EvaiIEQQdNQQBBASAEdEHBAXEbIANB+wBGckUEQEEBIANB2wBGDQIaIANBg39HDQFBACAAKAIoDQIaCyABQQRxQQJ2IAAoAgQgACgCFEZyDAELQQALIAAgAhDtAhsFQQALIQUgAkEQaiQAIAULggIBB38CQAJAAkAgAkHOAEYgAkE7RnJFBEAgACgCACEFIAJBFkcNASAAKAJAIQYMAgsgAEGsywBBABATDAILIAAoAkAiBigCwAIiB0EAIAdBAEobIQcDQCAEIAdGDQEgBEEDdCEJIARBAWohBCAJIAYoAsgCaigCBCACRw0ACyAAQZPLAEEAEBMMAQsgBSAGIANB\u002FgBGQQAgASgCOCACQQFBAUEAENIDIgBBAEgNACAFIAFBNGpBDCABQTxqIAEoAjhBAWoQZA0AIAEgASgCOCICQQFqNgI4IAEoAjQhCiAFIAMQFiEDIAogAkEMbGoiASAANgIAIAEgAzYCBEEADwtBfwuqBAEIfyMAQRBrIgUkACAAKAJAIQcgACgCACEGIAJBsX9HIQlBvX9BvX9BuX8gAkFRRiIIGyACQUlGG0H\u002FAXEhCgJ\u002FAkACQANAAkACQCAAKAIQIgRBg39GBEAgACgCKARAIAAQ3AEMBgsgCEUgAkFJR3EgBiAAKAIgEBYiBEEnR3JFBEAgAEG2MkEAEBMMBQsgABAPDQQgACAEIAIQowINBCADBEAgACAAKAJAKAKUAyAEIARBABD5AUUNBQsCQCAAKAIQQT1GBEAgABAPDQYgCUUEQCAAQbgBEA0gACAEEBcgACAHLwG8ARAUIAAgBUEMaiAFQQhqIAUgBUEEakEAQQBBPRCuAUEASA0HIAAgARCtAQRAIAYgBSgCABAQDAgLIAAgBBCeASAAIAUoAgwgBSgCCCAFKAIAIAUoAgRBAEEAEMEBDAILIAAgARCtAQ0GIAAgBBCeASAAIAoQDSAAIAQQFyAAIAcvAbwBEBQMAQsgCEUEQCACQUlHDQEgAEG32QBBABATDAYLIABBBhANIABBvQEQDSAAIAQQFyAAIAcvAbwBEBQLIAYgBBAQDAELIARBIHJB+wBHDQEgACAFQQxqQQAQnAFBPUcNASAAQQYQDUF\u002FIAAgAkEAQQEgBSgCDEECcUEBEMIBQQBIDQUaC0EAIAAoAhBBLEcNBBogABAPRQ0BDAMLCyAAQeHmAEEAEBMMAQsgBiAEEBALQX8LIQsgBUEQaiQAIAsL\u002FQICBX8BfiMAQSBrIgIkAAJ\u002FAkAgACgCACACQQhqQSAQPg0AAkADQAJAIAEiBCAAKAI8Tw0AIAFBAWohAQJAAkACQAJAAkAgBC0AACIDQdwAaw4FAgMDAwEACyADQSRHDQJBJCEFIAEtAABB+wBHDQMgBEECaiEBCyAAIAM2AiggAEGCfzYCECACQQhqEDchByAAIAE2AjggACAHNwMgQQAMBwsgAkEIakHcABA8DQUgASAAKAI8Tw0CIARBAmohASAELQABIQMLAkACQAJAIANBCmsOBAECAgACCyABIAEtAABBCkZqIQELIAAgACgCCEEBajYCCEEKIQUMAQsgA0GAAUkEQCADIQUMAQsgAUEBa0EGIAJBBGoQUSIFQf\u002F\u002FwwBLDQMgAigCBCEBCyACQQhqIAUQsQFFDQEMAwsLIABBrckAQQAQEwwBCyAAQbLfAEEAEBMLIAIoAggoAhAiAEEQaiACKAIMIAAoAgQRAABBfwshBiACQSBqJAAgBgtpACABQQFqQQhNBEAgACABQcsAa0H\u002FAXEQDg8LIAFBgAFqQf8BTQRAIABBvQEQDiAAIAFB\u002FwFxEA4PCyABQYCAAmpB\u002F\u002F8DTQRAIABBvgEQDiAAIAFB\u002F\u002F8DcRAmDwsgAEEBEA4gACABEBsLaQEEfyAAKAIEIQYCQANAIAEgBk4NAQJAAkAgACgCACABaiIELQAAIgVBtgFHBEAgBUHGAUYNASAFQewARw0EIAQoAAEgAkcNBAwCCyAEKAABIAJGDQELIAFBBWohAQwBCwtBASEDCyADC\u002F8BAQZ\u002FIAAgAUF\u002FEGMaAkADQCAHQQpGBEBB7AAhBAwCCwJAIAFBAEgNACABIAAoAqwCTg0AIAAoAqQCIAFBFGxqKAIIIQUgACgCgAIhCANAAkACQCAFIAhqIgktAAAiBkG2AUYNACAGQcYBRwRAIAZBDkcNAgNAIAggBUEBaiIFai0AACIEQQ5GDQALIARBKUYNBiAGIQQMBgsgA0UNACADIAkoAAE2AgALIAUgBkECdEHgrgFqLQAAaiEFDAELCyAGIgRB7ABHDQIgB0EBaiEHIAkoAAEhAQwBCwtB3BdBqOwAQd\u002F4AUHpHBAAAAsgAiAENgIAIAAgAUEBEGMaIAELaAACQCABQQBODQBBfyEBIAAoAgAgAEGkAmpBFCAAQagCaiAAKAKsAkEBahBkDQAgACAAKAKsAiIBQQFqNgKsAiAAKAKkAiABQRRsaiIAQQA2AhAgAEJ\u002FNwIIIABCgICAgHA3AgALIAELpAEBAn8gASgCwAIiCkH\u002F\u002FwNOBEAgAEGwKEEAEDpBfw8LQX8hCSAAIAFByAJqQQggAUHEAmogCkEBahBkBH9BfwUgASABKALAAiIJQQFqNgLAAiABKALIAiAJQQN0aiIJIAQ7AQIgCSAHQQN0QQhxIAZBAnRBBHEgA0EBdEECcSACQQFxcnJyIAhBBHRyOgAAIAkgACAFEBY2AgQgASgCwAJBAWsLCzYAAkAgACABQQgQTCIAQQBIDQAgASgCYEUNACABKAJ0IABBBHRqIgEgASgCDEECcjYCDAsgAAt7AQN\u002FIwBBQGoiASQAIAEgAELoB383AzhBwN4ELQAAQQFxRQRAQcjUBEHM1ARB0NQEEANBwN4EQQE6AAALIAEpAzgiAKcgAEIgiKcgAUEMahAIIAFB1NQEQdDUBCABKAIsGygCADYCNCABKAIwIQMgAUFAayQAIANBRG0LqgQDBn4DfwF8IwBBEGsiDCQAQX8hCwJAIAAgDEEIaiABEKYCDQACfCAMKwMIIg69Qv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoGAgICAgID4\u002FwBaBEAgBARAQgAhAUQAAAAAAAAAAAwCC0EAIQsMAgsCfiAOmUQAAAAAAADgQ2MEQCAOsAwBC0KAgICAgICAgIB\u002FCyEBRAAAAAAAAAAAIANFDQAaQQAgARDUA2siAKxC4NQDfiABfCEBIAC3CyEOIAEgAUKAuJkpgSIBQj+HQoC4mSmDIAF8IgV9QoC4mSl\u002FIgdCkM4AfiIBIAFCyfbeAYEiAX0gAUI\u002Fh0K3iaF+g3xCyfbeAX9Csg98IQEgBaciAEHg1ANtIQQgAEHoB20hAyAHQgR8QgeBIghCP4dCB4MhCQNAAkAgByABEPcEfSIGQgBTBEBCfyEFDAELQgEhBSAGIAEQ9gQiCloNACAKQu0CfSEHIAggCXwhCCAAQYDd2wFtIQsgA0E8byENIATBQTxvIQQgACADQegHbGshAEIAIQUDQAJAIAVCC1ENACAGIAWnQQJ0QdDIAWo0AgAgB0IAIAVCAVEbfCIJUw0AIAVCAXwhBSAGIAl9IQYMAQsLIAIgDjkDQCACIAi5OQM4IAIgALc5AzAgAiANtzkDKCACIAS3OQMgIAIgC7c5AxggAiAFuTkDCCACIAG5OQMAIAIgBkIBfLk5AxBBASELDAILIAEgBXwhAQwACwALIAxBEGokACALCw0AIAAgASACQQEQ+gQLKAAgASgCBEEFRwRAIAFBBTYCBCAAKAIQIAEoAggQzgEgAUEANgIICwtmAgJ\u002FAX4jAEEQayIDJABBfyEEAkAgACABQgAQTiIFQoCAgIBwg0KAgICA4ABRDQAgACADQQxqIAUQlQENACAAIAFBACADKAIMIAJqIgCtEIYCQQBIDQAgAEUhBAsgA0EQaiQAIAQLtwEBAn8CQAJ8AkACQAJAAkACQEEHIABCIIinIgIgAkEHa0FuSRsiAkEIag4KAgEGBgYGBgIDAAQLIACnIQEMBQsgAKdBABDrBSEBDAQLIACnQdsYbCEBDAMLIACnQdsYbLcMAQsgAkEHRw0BRAAAAAAAAPh\u002FIABCgICAgMCBgPz\u002FAHwiAL8gAEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLvSIAQiCIIACFp0HbGGwhAQsgASACcwvzBwETfyMAQRBrIgwkAAJAIAAgAhAlIgJCgICAgHCDQoCAgIDgAFEEQEF\u002FIRQMAQtBfyEUQX8hBQJAIABBASACpyIEKAIEQf\u002F\u002F\u002F\u002F8HcSIKIApBAU0bQQJ0ECQiD0UNACAMQQA2AgxBACEFA0AgCCAKTg0BIA8gBUECdGogBCAMQQxqEMYBNgIAIAVBAWohBSAMKAIMIQgMAAsACyAAIAIQDCAFQQBIDQAgAyEKIAAoAhAhA0EAIQQjAEEgayIHJAAgByADQTgQnQJBfyEIAkAgByAFIgNBAnQiEBC8AQ0AAkAgCkUEQCADQQAgA0EAShshBgNAIAQgBkYNAiAEQQJ0IRUgBEEBaiEEIBUgD2ooAgBB\u002FwFNDQALCyAHIA8gAyAKQQF2EJUGIAcoAgwNASAHKAIAIglBBGohCyAHKAIEIg1BAnYiCEEBayERQQAhAwNAAkAgAyAISARAIAkgAyIEQQJ0aigCABDQAkUNAQNAIAQgEUYEQCAIIQMMAwsgCSAEQQFqIgVBAnRqKAIAIhIQ0AIiEwRAA0ACQCADIARKDQAgCSAEQQJ0aiIQKAIAIgYQ0AIgE0wNACAQIAY2AgQgBEEBayEEDAELCyALIARBAnRqIBI2AgAgBSEEDAEFIAUhAwwDCwALAAsgCkEBcSANQQhJcg0DQQEhDUEBIQMDQCAIIA1GBEAgAyEIDAUFIAkgDUECdGooAgAiCxDQAiEGIAMhBAJAAkADQCAEQQBMDQEgCSAEQQFrIgRBAnRqIhAoAgAiDhDQAiIFBEAgBSAGSCEWQYACIQYgFg0BDAILCwJAIAtB4SJrQRRLIA5BgCJrQRJLckUEQCALQRxsIA5BzARsakGcjaEBayEGDAELAkAgDkGA2AJrIgRBo9cASw0AIARB\u002F\u002F8DcUEccCALQacjayIEQRtLcg0AIAQgDmohBgwBC0GwByEEQQAhEQNAIAQgEUgNAiAHQRhqIAQgEWpBAm0iEkEBdEHA1QNqLwEAIgZBBnYiCkECdEHQ4wJqKAIAIhNBDnYiBSAGQT9xaiIGIAogBSATQQd2Qf8AcSATQQF2QT9xEJQGGiALIAcoAhxrIA4gBygCGCIFayAFIA5GGyIFQQBIBEAgEkEBayEEDAELIAUEQCASQQFqIREMAQsLIAZFDQELIBAgBjYCAAwBCyAJIANBAnRqIAs2AgAgA0EBaiEDCyANQQFqIQ0MAQsACwALIANBAWohAwwACwALIAcoAgAiCSAPIBAQHhogAyEICyAMIAk2AgggB0EgaiQAIAAoAhAiAEEQaiAPIAAoAgQRAAAgCEEASA0AIAEgDCgCCDYCACAIIRQLIAxBEGokACAUC6YDACMAQRBrIgQkACAFKAIAIQIgBCADKQMAIgE3AwgCQAJAAkACQAJAAkACQCACKAJUIgVBGHZBBGsOAgIAAQsgAi0AoAENAkH+OEGo7ABBzt8BQYbnABAAAAtBlf8AQajsAEHS3wFBhucAEAAACyACLQCgAQ0BIAIoAnRFDQIgAkEBOgCgASABQiCIp0F1TwRAIAGnIgMgAygCAEEBajYCACACKAJUIQULIAIgATcDqAEgAiAFQf\u002F\u002F\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\u002F\u002F\u002F\u002F\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\u002F\u002F\u002F\u002F8PWAR+IAZC\u002F\u002F\u002F\u002F\u002Fw+DBUKAgICAwH4gBrm9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLEDlBAEgNACAAIAUQDCAGQv\u002F\u002F\u002F\u002F8PgyAIQv\u002F\u002F\u002F\u002F8PWA0BGkKAgICAwH4gBrm9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsMAQsgACAFEAxCgICAgOAACyELIAxBEGokACALCxUBAn4gACABEIcFIQMgACABEAwgAwv5DgIKfgR\u002FIwBBEGsiECQAIBAgAjcDCAJAAkACfgJAAkACQAJAAkACQAJAAkACQAJAQQcgAkIgiKciDiAOQQdrQW5JGyIOQQdqDg8EAwMDAwMABQUFAwMDAwECCwJAAkACQAJAIAKnIg4vAQYiD0EEaw4DAQACAwtCgICAgDAhByAAIAIQNCICQoCAgIBwg0KAgICA4ABRDQsgACACEO4DIgJCgICAgHCDQoCAgIDgAFENCyABKAIoIAIQhAEhDgwOC0KAgICAMCEHIAAgAhCWASICQoCAgIBwg0KAgICA4ABRDQogASgCKCACEIQBIQ4MDQsgASgCKCAOKQMgEI0BIQ4gACACEAwMDAsgD0EhRg0HQoCAgIAwIQYgACABKQMIQQEgEEEIahDxAyIEQoCAgIDwAINCgICAgOAAUQ0GIAAgBBAnBEAgAEHJ3wBBABASDAcLIANCIIinQXVPBEAgA6ciDiAOKAIAQQFqNgIACyABKQMYIgRCIIinQXVPBEAgBKciDiAOKAIAQQFqNgIACwJAAkACQAJAIAAgAyAEELYCIghCgICAgHCDQoCAgIDgAFEEQEKAgICAMCEHDAELIAEpAxgiBEKAgICAcINCgICAgJB\u002FUQRAIASnKAIEQf\u002F\u002F\u002F\u002F8HcUUNAwsgCEIgiKdBdU8EQCAIpyIOIA4oAgBBAWo2AgALIABB65YBIAhB7JYBELIBIgdCgICAgHCDQoCAgIDgAFINAQtCgICAgDAhCQwICyAAQbCSARBgIglCgICAgHCDQoCAgIDgAFINAQwHCyABKQMgIgdCIIinQXVPBEAgB6ciDiAOKAIAQQJqNgIACyAHIQkLIAAgACABKQMIQQEgEEEIakEAEO0DEP8BDQUgACACEMwBIg5BAEgNBQJAAkAgDgRAIAAgECACEC8NCCABKAIoQdsAEDwaIBApAwAiCkIAIApCAFUbIQwgAUEoaiEOAkADQCAFIAxRDQEgBVBFBEAgASgCKEEsEDwaCyABKAIoIAcQjQEaIAAgAiAFEGwiC0KAgICAcINCgICAgOAAUQ0KIAAgBSIEQoCAgIAIWgR+QoCAgIDAfiAEub0iBEKAgICAwIGA\u002FP8AfSAEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwUgBAsQNCIEQoCAgIBwg0KAgICA4ABRDQ8gACABIAIgCyAEEPADIQsgACAEEAwgC0KAgICAcIMiDUKAgICA4ABRDQogBUIBfCEFQoCAgIAwIQQgACABQoCAgIAgIAsgDUKAgICAMFEbIAgQ7wNFDQALDA4LIApCAFcEQEHdACEPQoCAgIAwIQQMAwsgASkDGCIFQoCAgIBwg0KAgICAkH9SBEBB3QAhD0KAgICAMCEEDAILQd0AIQ9CgICAgDAhBCAFpygCBEH\u002F\u002F\u002F\u002F\u002FB3ENAQwCCwJAIAEpAxAiBkKAgICAcIMiBUKAgICAMFIEQCAGQiCIp0F1SQ0BIAanIg4gDigCAEEBajYCAAwBCyAAIAJBEUEAELICIgZCgICAgHCDIQULQoCAgIAwIQQgBUKAgICA4ABRDQwgACAQIAYQLw0MIAEoAihB+wAQPBpCACEFIBApAwAiBEIAIARCAFUbIQsgAUEoaiEOQQAhD0KAgICAMCEEA0AgBSALUgRAIAAgBBAMIAAgBiAFEGwiBEKAgICAcINCgICAgOAAUQ0OIARCIIinQXVPBEAgBKciESARKAIAQQFqNgIACyAAIAIgBBBOIgpCgICAgHCDQoCAgIDgAFENDiAAIAEgAiAKIAQQ8AMiCkKAgICAcIMiDEKAgICAMFIEQCAMQoCAgIDgAFENDyAPBEAgASgCKEEsEDwaCyAAIAQQ7gMiBEKAgICAcINCgICAgOAAUQRAIAAgChAMDBALIAEoAiggBxCNARogASgCKCAEEI0BGiABKAIoQToQPBogASgCKCAJEI0BGkEBIQ8gACABIAogCBDvAw0PCyAFQgF8IQUMAQsLIA9FBEBB\u002FQAhDwwCC0H9ACEPIAEoAhgoAgRB\u002F\u002F\u002F\u002F\u002FwdxRQ0BCyAOKAIAQQoQPBogDigCACADEI0BGgsgASgCKCAPEDwaQQAhDiAAIAAgASkDCCAQIBBBABCuBRD\u002FAQ0KIAAgAhAMIAAgBhAMIAAgBxAMIAAgCRAMIAAgCBAMIAAgBBAMDAsLQoCAgIAgIAIgAkKAgICAwIGA\u002FP8AfEKAgICAgICA+P8Ag0KAgICAgICA+P8AURshAgwDCyAOQXZGDQULIAAgAhAMQQAhDgwIC0KAgICAMCEHQoCAgIAwIQlCgICAgDAhBkKAgICAMCEEQoCAgIAwIQggACACEO4DIgJCgICAgHCDQoCAgIDgAFINAAwGCyABKAIoIAIQhAEhDgwGC0KAgICAMCEEDAQLQoCAgIAwIQdCgICAgDAMAgsgAEHeDEEAEBJCgICAgDAhBwtCgICAgDAhBkKAgICAMAshCUKAgICAMCEEQoCAgIAwIQgLIAAgAhAMIAAgBhAMIAAgBxAMIAAgCRAMIAAgCBAMIAAgBBAMQX8hDgsgEEEQaiQAIA4L\u002FAICAX8BfiMAQSBrIgUkACAFIAQ3AxgCQAJAAkAgA0KAgICAcINCgICAgOB+UiADQv\u002F\u002F\u002F\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\u002F\u002F\u002F\u002F\u002FB3EiBSAFQQpPGxCOASICNwMwDAELIAtCIIinQXVPBEAgC6ciBSAFKAIAQQFqNgIACyAEIAs3AzAgCyECCyAAIAMQDEKAgICA4AAhCiACQoCAgIBwg0KAgICA4ABRDQIgABAzIgxCgICAgHCDQoCAgIDgAFEEQEKAgICA4AAhDAwDCyABQiCIpyIFQXVPBEAgAaciByAHKAIAQQFqNgIACyAAIAxBLyABQQcQFUEASA0CIAVBdU8EQCABpyIFIAUoAgBBAWo2AgALQoCAgIAwIQogACAEQRhqIAwgASALEPADIgJCgICAgHCDIgFCgICAgDBRDQJCgICAgOAAIQogAUKAgICA4ABRBEAgASEKDAMLIAAgBEEYaiACIAsQ7wMhCCAEKAJAIQYgCA0CIAYQNyEKDAMLIAAgAxAMDAELQoCAgIDgACEKCyAGKAIAKAIQIgVBEGogBigCBCAFKAIEEQAAIAZBADYCBAsgACAMEAwgACAEKQM4EAwgACAEKQMwEAwgACAEKQMoEAwgACAEKQMgEAwgBEHgAGokACAKC7YBAgF\u002FAX4jAEHQAGsiBCQAIARBAEHQABAsIgQgAzYCDCAEIAA2AgAgBEKggICAEDcDECAEIAE2AjggBCABIAJqNgI8IARBATYCCCAEQQA2AkxCgICAgDAhBQJAAkAgBBCiAQ0AIAQQ9QMiBUKAgICAcINCgICAgOAAUQ0AIAQoAhBBqn9GDQEgBEGu4gBBABATCyAAIAUQDCAEIARBEGoQgQJCgICAgOAAIQULIARB0ABqJAAgBQtAAQJ\u002FIwBBEGsiAiQAAn8gASAAKAIQRwRAIAIgATYCACAAQcyQASACEBNBfwwBCyAAEKIBCyEDIAJBEGokACADC9AFAgJ+BX8jAEEQayIGJAAgACgCACEFAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIQIgRBgAFqDgQCAQUDAAsgBEGqf0YNAyAEQdsARwRAIARB+wBHDQVCgICAgCAhASAAEKIBDQlCgICAgOAAIQEgBRAzIgJCgICAgHCDQoCAgIDgAFENCQJAIAAoAhAiA0H9AEYNAANAAkAgA0GBf0YEQCAFIAApAyAQMCIDDQEMDAsgA0GDf0cNCiAAKAJMRQ0KIAUgACgCIBAWIQMLAkACQCAAEKIBDQAgAEE6EPQDDQAgABD1AyIBQoCAgIBwg0KAgICA4ABSDQELIAUgAxAQDAsLIAUgAiADIAFBBxAVIQcgBSADEBAgB0EASA0KIAAoAhBBLEcNASAAEKIBDQogACgCTEUgACgCECIDQf0AR3INAAsLIAIhASAAQf0AEPQDDQkMCgtCgICAgCAhASAAEKIBDQhCgICAgOAAIQEgBRA7IgJCgICAgHCDQoCAgIDgAFENCAJAIAAoAhBB3QBGDQADQCAAEPUDIgFCgICAgHCDQoCAgIDgAFENCSAFIAIgAyABQQcQkwFBAEgNCSAAKAIQQSxHDQEgABCiAQ0JIANBAWohAyAAKAJMRQ0AIAAoAhBB3QBHDQALCyACIQEgAEHdABD0Aw0IDAkLIAApAyAiAUIgiKdBdU8EQCABpyIEIAQoAgBBAWo2AgALIAEhAiAAEKIBDQcMCAsgACkDICIBIQIgABCiAQ0GDAcLIAAoAiBBAWsiBEECSw0BIARBA3RB4PQBaikDACIBIQIgABCiAQ0FDAYLIABB9RRBABATDAELIAAoAjghAyAGIAAoAhgiBDYCBCAGIAMgBGs2AgAgAEGzjQEgBhATC0KAgICAICEBDAILIABBrNQAQQAQEwsgAiEBCyAFIAEQDEKAgICA4AAhAgsgBkEQaiQAIAILVgECfgJ\u002FQQAgAUKAgICAcFQNABogACABQc0BIAFBABARIgJCgICAgHCDIgNCgICAgDBSBEBBfyADQoCAgIDgAFENARogACACECcPCyABpy8BBkESRgsLGAAgACgCECIAQRBqIAEgAiAAKAIIEQEAC7gBAgJ+A38jAEEQayIGJAACQAJAIAAgAUEtEFoEQCAAIAFCgICAgDAQ\u002FQEiBEKAgICAcINCgICAgOAAUQ0CIAAgBiAEEIICIQUgACAEEAwgBUKAgICAcINCgICAgOAAUQ0BIAAgASADIAYQqQIhCANAIAdBAkZFBEAgACAGIAdBA3RqKQMAEAwgB0EBaiEHDAELCyAIRQ0BIAAgBRAMC0KAgICA4AAhBAwBCyAFIQQLIAZBEGokACAEC6gBAQZ\u002FAkAgASgCVCICQYD+A3ENACABIAJBgAJyNgJUA0AgASgCFCADTARAQQAPCyABKAIQIANBA3RqIgcoAgAhBEF\u002FIQYgACABKAIEEI8EIgJFDQECQCAAIAQQjwQiBEUEQEEAIQUMAQsgACACIAQQuQUhBSAAIAIQMSAEIQILIAAgAhAxIAVFDQEgByAFNgIEIANBAWohAyAAIAUQ+QNBAE4NAAsLIAYLiAEBAn9BjQEhAgJAAkACQAJAAkACQAJAAkACQAJAQQcgAUIgiKciAyADQQdrQW5JG0EKag4SCQgHAggICAgIAwABBgQICAgACAtBxwAPC0HIAA8LQckADwsgAacsAAVBAE4NAQtBxgAPC0EbIQIgACABEDUNAwtBygAPC0HLAA8LQc0AIQILIAILbQECfwJAIAFCgICAgHBUDQAgAaciAy8BBhDgAUUNACADKAIgLQARQQhxRQ0AIAMoAigiBARAIAAgBK1CgICAgHCEEAwLQQAhACACQoCAgIBwWgRAIAKnIgAgACgCAEEBajYCAAsgAyAANgIoCwsMACAAQZHBAEEAEBILzAICBn8BfiMAQRBrIgYkAAJAIAJC\u002F\u002F\u002F\u002F\u002F29YBEAgAEGrH0EAEBIMAQsgACAGQQxqIAIQygENACAGKAIMIgRBgIAETwRAIABBoyFBABA6DAELIABBASAEIARBAU0bQQN0EFwiBUUNAAJAAkAgAqciBy8BBiIDQQhHIANBAkdxDQAgBy0ABUEIcUUNACAEIAcoAihHDQBBACEDA0AgAyAERg0CIANBA3QiCCAHKAIkaikDACICQiCIp0F1TwRAIAKnIgAgACgCAEEBajYCAAsgBSAIaiACNwMAIANBAWohAwwACwALQQAhAwNAIAMgBEYNASAAIAIgAxCmASIJQoCAgIBwg0KAgICA4ABRBEAgACAFIAMQhgNBACEDDAMFIAUgA0EDdGogCTcDACADQQFqIQMMAQsACwALIAEgBDYCACAFIQMLIAZBEGokACADC5wCAgJ\u002FAX4CfkKAgICA4AAgABB2DQAaAkACQCABQoCAgIBwWgRAIAGnIgctAAVBEHFFBEAgAEGdLEEAEBJCgICAgOAADwsgBUEBciEGIAcvAQYiBUENRg0CIAAoAhAoAkQgBUEYbGooAhAiBQ0BCyAAQfs5QQAQEkKAgICA4AAPCyAAIAEgAiADIAQgBiAFERYADwsgBygCIC0AEUEEcQRAIAAgAUKAgICAMCACIAMgBCAGENIBDwtCgICAgOAAIAAgAkEBEF4iCEKAgICAcINCgICAgOAAUQ0AGiAAIAEgCCACIAMgBCAGENIBIgFC\u002F\u002F\u002F\u002F\u002F29YIAFCgICAgHCDQoCAgIDgAFJxRQRAIAAgCBAMIAEPCyAAIAEQDCAICwvPAgEEfyABQRxqIQQgAUEYaiEGA0AgBiAEKAIAIgRHBEACQCAEQRJrLwEAIAJHDQAgBEETay0AAEEBdkEBcSADRw0AIARBGGsiACAAKAIAQQFqNgIAIAAPCyAEQQRqIQQMAQsLIABBKBAkIgRFBEBBAA8LIARBATYCACAAKAIQIQAgBEEDOgAEIAAoAlAiBSAEQQhqIgc2AgQgBCAAQdAAajYCDCAEIAU2AgggACAHNgJQIAQgAjsBBiAEIAQtAAVB\u002FAFxIANBAXRBAnFyOgAFIAEoAhgiACAEQRhqIgU2AgQgBCAGNgIcIAQgADYCGCABIAU2AhgCQCABLQAoQQhxBEAgBCABQThrIgA2AiAgACAAKAIAQQFqNgIADAELIARBADYCIAsgAwRAIAQgASgCECACQQN0ajYCECAEDwsgBCABKAIUIAJBA3RqNgIQIAQLjAICAX8BfgJAAkAgACABpyIELwARQQN2QQZxQZC3AWovAQAQhgEiBUKAgICAcINCgICAgOAAUQRADAELAkAgACAFIAQgAiADEMMFIgFCgICAgHCDQoCAgIDgAFENACAAIAEgBCgCHCICQS8gAhsgBC8BLBCYAyAELwARIgJBEHEEQCAAIAAoAihBqANB2AIgAkEwcUEwRhtqKQMAEEEiBUKAgICAcINCgICAgOAAUQ0BIAAgAUE8IAVBAhAVGiABDwsgAkEBcUUNAiABQoCAgIBwWgRAIAGnIgIgAi0ABUEQcjoABQsgACABQTxBAEEAQQIQgAMaIAEPCwsgACABEAxCgICAgOAAIQELIAELiAQBDX8jAEEgayIFJAAgA0EAIANBAEobIQ5BACEDA0ACQCADIA5GBEBBACEKDAELIAVBADYCGCAFQgA3AxAgBUIANwMIIAUgASADQQxsaiIEKAIENgIMIAUgBCgCCDYCECACIANqIQZBfyEKIANBAWohAyAEKAIAIQlBfyELAkAgBkH\u002F\u002FwNLDQACQCAGIAAoAkAiBEkEQCAAKAJEIgQgBkEYbGooAgBFDQEMAgtBNiAGQQFqIgcgBEEDbEEBdiIEIAQgB0gbIgQgBEE2TBsiB0EDdCEPIABBEGohDCAAQcwAaiEEIABByABqIRADQCAQIAQoAgAiCEcEQCAMIAgoAhQgDyAAKAIIEQEAIg1FDQMgACgCQCEEA0AgBCAHSARAIA0gBEEDdGpCgICAgCA3AwAgBEEBaiEEDAELCyAIIA02AhQgCEEEaiEEDAELCyAMIAAoAkQgB0EYbCAAKAIIEQEAIgRFDQEgBCAAKAJAIghBGGxqQQAgByAIa0EYbBAsGiAAIAc2AkAgACAENgJECyAEIAZBGGxqIgQgBjYCACAJQdgBTgRAIAAoAjggCUECdGooAgAiBiAGKAIAQQFqNgIACyAEIAk2AgQgBCAFKAIMNgIIIAQgBSgCEDYCDCAEIAUoAhQ2AhAgBCAFKAIYNgIUQQAhCwsgC0EATg0BCwsgBUEgaiQAIAoLNQECfwJAIABCgICAgHBUDQAgAKciBC8BBkEMRw0AIAQoAiQgAUcNACAELgEqIAJGIQMLIAMLUAEDfyAAKALgASABKAIUQSAgACgC1AFrdkECdGohAgNAIAIiAygCACIEQShqIQIgASAERw0ACyADIAEoAig2AgAgACAAKALcAUEBazYC3AELgAkBC38jAEEQayIIJAACQAJAAkACQAJAAkADQCABKAIQIgNBMGohBiADIAMoAhggAnFBf3MiCUECdGooAgAhBEEAIQMDQCAEBEAgCCAGIARBAWsiCkEDdGoiBTYCDCAFKAIAIQcgAiAFKAIERgRAQQAhBCAHQYCAgCBxRQ0JQX8hBCAAIAEgCEEMahDTAQ0JIAEoAhAhAgJAIAMEQCACIAMgBmtqIgNBMGogAygCMEGAgIBgcSAIKAIMKAIAQf\u002F\u002F\u002Fx9xcjYCACAIKAIMIQkMAQsgAiAJQQJ0aiAIKAIMIgkoAgBB\u002F\u002F\u002F\u002FH3E2AgALQQEhBCACIAIoAiRBAWo2AiQgACgCECABKAIUIApBA3RqIgMgCSgCAEEadhDUBSAAIAgoAgwoAgQQECAIKAIMIgUgBSgCAEH\u002F\u002F\u002F8fcTYCACAIKAIMQQA2AgQgA0KAgICAMDcDACACKAIkIgNBCEgNCSADIAIoAiBBAXZJDQkgASgCECIHLQAQDQVBAiAHKAIgIAcoAiRrIgIgAkECTBsiCiAHKAIcSw0GIAcoAhhBAWohBANAIAQiAkEBdiIEIApPDQALIAAgCkEDdCINIAJBAnQiBWpBMGoQJCIERQ0IIAJBAWshCyAHKAIIIgIgBygCDCIDNgIEIAMgAjYCACAHQgA3AgggBCAFaiAHQTAQHiEGIAAoAhAiAigCUCIDIAZBCGoiCTYCBCAGIAJB0ABqNgIMIAYgAzYCCCACIAk2AlBBACEDIARBACAFECwaIAdBMGohBCAGQTBqIQIgASgCFCEMQQAhCQNAIAkgBigCICIFT0UEQCAEKAIEIgUEQCACIAU2AgQgAiAEKAIAQYCAgGBxIgUgAigCAEH\u002F\u002F\u002F8fcXI2AgAgAiAFIAYgBCgCBCALcUF\u002Fc0ECdGoiBSgCAEH\u002F\u002F\u002F8fcXI2AgAgBSADQQFqIgU2AgAgDCADQQN0aiAMIAlBA3RqKQMANwMAIAUhAyACQQhqIQILIAlBAWohCSAEQQhqIQQMAQsLIAMgBSAGKAIka0cNByAGQQA2AiQgBiAKNgIcIAYgCzYCGCAGIAM2AiAgASAGNgIQIAAoAhAiAkEQaiAHIAcoAhhBf3NBAnRqIAIoAgQRAABBASEEIAAgASgCFCANEMUCIgBFDQkgASAANgIUDAkFIAdB\u002F\u002F\u002F\u002FH3EhBCAFIQMMAgsACwtBASEEIAEtAAUiA0EEcUUNBiADQQhxRQ0BIAAgCEEIaiACEKUBRQ0GIAgoAggiAyABKAIoIgVPDQYgAS8BBiIEQQhGIARBAkZyRQRAQQAhBAwHCyAFQQFrIANGBEAgACABKAIkIANBA3RqKQMAEAwgASADNgIoDAYLIAAgARCOA0UNAAtBfyEEDAULIAAoAhAoAkQgAS8BBkEYbGooAhQiA0UNBCADKAIIIgNFDQQgACABrUKAgICAcIQgAiADERMAIQQMBAtByuoAQajsAEG4I0HLKBAAAAtB9s0AQajsAEG8I0HLKBAAAAtB14gBQajsAEHhI0HLKBAAAAtBASEECyAIQRBqJAAgBAtQAQN\u002FIwBBIGsiAyQAAn8gACADQQxqIAIQ2wUiBEUEQCABQgA3AwBBfwwBCyABIARBARCwBBogACAEIANBDGoQ5gFBAAshBSADQSBqJAAgBQuQAQIDfwF+IAEoAhQiBSkDACIHQv\u002F\u002F\u002F\u002F8PViABKAIoIgZBAWoiBCAHp01yRQRAIAEoAhAtADNBCHFFBEAgACACEAwgACADQTAQ5wEPCyAFIAStNwMACwJAIAQgASgCIE0NACAAIAEgBBDYBUUNACAAIAIQDEF\u002FDwsgASgCJCAGQQN0aiACNwMAIAEgBDYCKEEBC7wBAQF\u002FIwBBEGsiBSQAIAUgAzcDCAJAIAEEQCABIAEoAgBBAWo2AgAgACABrUKAgICAcIQgAkEBIAVBCGoQNiECIAAgBSkDCBAMQX8hASACQoCAgIBwg0KAgICA4ABRDQEgACACEAxBASEBDAELIAAgAxAMIARBgIABcUUEQEEAIQEgBEGAgAJxRQ0BIAAoAhAoAowBIgRFDQEgBC0AKEEBcUUNAQsgAEHbCUEAEBJBfyEBCyAFQRBqJAAgAQs\u002FAQF+IAAQ4gEiAkKAgICAcINCgICAgOAAUgRAIAKnQQRqIAEQMkUEQCACDwsgACACEAwgABBwC0KAgICA4AALCwAgACABQQEQjQQL2wEBA38jAEEQayIEJAACQAJAIAFCgICAgHBUDQAgAaciAi8BBkEsRgRAAkAgACAEQQhqIAFB4wAQfiIDRQ0AIAQpAwgiAUKAgICAcINCgICAgDBRBEAgACADKQMAEIoEIQIMBAsgACABIAMpAwhBASADEDYiAUKAgICAcINCgICAgOAAUQ0AIAAgARAnIgJFDQIgACADKQMAEJcBIgNBAEgNACADRQ0DIABBnSVBABASC0F\u002FIQIMAgsgAiACLQAFQf4BcToABUEBIQIMAQtBACECCyAEQRBqJAAgAgt7AgJ\u002FAX5BiAIhAkKAgICAICEEAkACQAJAAkACQAJAAkBBByABQiCIpyIDIANBB2tBbkkbIgNBCmoODAUGBAMGBgYGBgYBAgALIANBB0cNBQtBICECDAMLQTAhAgwCC0EoIQIMAQtBOCECCyAAKAIoIAJqKQMAIQQLIAQLYAEBfCAAKQIEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP1gEQCABIAErAwhEAAAAAAAA8D8gACgCALciAqOgOQMIIAEgASsDECAAKAIEIgBBH3UgAEH\u002F\u002F\u002F\u002F\u002FB3EgAEEfdnRqQRFquCACo6A5AxALC\u002FgCAgF+A38jAEEwayIEJABB9e8AIQVCgICAgOAAIQMCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQEEHIAFCIIinIgYgBkEHa0FuSRtBCmoOEggJBgAJCQkJCgUBAgMECQkMBwkLIAZBdUkNCiABpyIAIAAoAgBBAWo2AgAMCgsgBCABPgIAIARBEGoiBUEgQe7rACAEEEgaDAgLIABBA0ECIAGnGxApIQMMCQsgAEEBECkhAwwICyAAQcYAECkhAwwHCyAAIAFBABC7AiIBQoCAgIBwg0KAgICA4ABRBEAgASEDDAcLIAAgASACEI0EIQMgACABEAwMBgsgAgRAIAZBdUkNBSABpyIAIAAoAgBBAWo2AgAMBQsgAEGNyQBBABASDAULIAAgAUKAgICAwIGA\u002FP8AfL9BCkEAQQAQugIhAwwECyAAIAEgACgCECgCoAIRCAAhAwwDC0Hi7wAhBQsgACAFEGAhAwwBCyABIQMLIARBMGokACADCzcAIAAgASACIAMCf0EAIAAoAhAiAC0AiAENABpBASAAKAKMASIARQ0AGiAAKQMIEJYDRQsQ5AULMQIBfwF+IAAgARApIgNCgICAgHCDQoCAgIDgAFIEQCAAIAMQqAEhAiAAIAMQDAsgAgtGAQF\u002FIAEgASgCACICQQFrNgIAIAJBAUwEQCABKQIEQoCAgICAgICAwABaBEAgACABEJsDDwsgAEEQaiABIAAoAgQRAAALC1kBA38jAEEQayICJAAgACgCECEAAn8CQCACQQxqIAEQ7QVFDQAgAigCDCIDQQBIDQAgACABEJAEIANBgICAgHhyDAELIAAgAUEBEMcCCyEEIAJBEGokACAEC0QBAX8jAEEQayIFJAAgBSABIAIgAyAEQoCAgICAgICAgH+FEG8gBSkDACEBIAAgBSkDCDcDCCAAIAE3AwAgBUEQaiQACxAAIAAgASACQQBBABCUBBoLxgIBBX8jAEHQAWsiBSQAIAUgAjYCzAEgBUGgAWoiAkEAQSgQLBogBSAFKALMATYCyAECQEEAIAEgBUHIAWogBUHQAGogAiADIAQQ\u002FQVBAEgEQEF\u002FIQQMAQsgACgCTEEASCEJIAAgACgCACIIQV9xNgIAAn8CQAJAIAAoAjBFBEAgAEHQADYCMCAAQQA2AhwgAEIANwMQIAAoAiwhBiAAIAU2AiwMAQsgACgCEA0BC0F\u002FIAAQmAQNARoLIAAgASAFQcgBaiAFQdAAaiAFQaABaiADIAQQ\u002FQULIQIgBgRAIABBAEEAIAAoAiQRAQAaIABBADYCMCAAIAY2AiwgAEEANgIcIAAoAhQhASAAQgA3AxAgAkF\u002FIAEbIQILIAAgACgCACIAIAhBIHFyNgIAQX8gAiAAQSBxGyEEIAkNAAsgBUHQAWokACAECzwBAX8gAEIANwNwIAAgACgCLCAAKAIEIgFrrDcDeCAAIAAoAggiACABa6xCAFdBAXIEfyAABSABCzYCaAtKAQJ\u002FAkAgAC0AACICRSACIAEtAAAiA0dyDQADQCABLQABIQMgAC0AASICRQ0BIAFBAWohASAAQQFqIQAgAiADRg0ACwsgAiADawvCAQEDfwJAIAEgAigCECIDBH8gAwUgAhCYBA0BIAIoAhALIAIoAhQiBGtLBEAgAiAAIAEgAigCJBEBAA8LAkACQCABRSACKAJQQQBIcg0AIAEhAwNAIAAgA2oiBUEBay0AAEEKRwRAIANBAWsiAw0BDAILCyACIAAgAyACKAIkEQEAIgQgA0kNAiABIANrIQEgAigCFCEEDAELIAAhBUEAIQMLIAQgBSABEB4aIAIgAigCFCABajYCFCABIANqIQQLIAQLWQEBfyAAIAAoAkgiAUEBayABcjYCSCAAKAIAIgFBCHEEQCAAIAFBIHI2AgBBfw8LIABCADcCBCAAIAAoAiwiATYCHCAAIAE2AhQgACABIAAoAjBqNgIQQQALiQQCBX4DfwJAAkAgAb0iBEIBhiIDUA0AIAG9IQYgAL0iBUI0iKdB\u002Fw9xIgdB\u002Fw9GDQAgBkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KBgICAgICA+P8AVA0BCyAAIAGiIgAgAKMPCyADIAVCAYYiAloEQCAARAAAAAAAAAAAoiAAIAIgA1EbDwsgBEI0iKdB\u002Fw9xIQgCfiAHRQRAQQAhByAFQgyGIgJCAFkEQANAIAdBAWshByACQgGGIgJCAFkNAAsLIAVBASAHa62GDAELIAVC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FweDQoCAgICAgIAIhAshAgJ+IAhFBEBBACEIIARCDIYiA0IAWQRAA0AgCEEBayEIIANCAYYiA0IAWQ0ACwsgBEEBIAhrrYYMAQsgBEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FB4NCgICAgICAgAiECyEEIAcgCEoEQANAAkAgAiAEfSIDQgBTDQAgAyICQgBSDQAgAEQAAAAAAAAAAKIPCyACQgGGIQIgB0EBayIHIAhKDQALIAghBwsCQCACIAR9IgNCAFMNACADIgJCAFINACAARAAAAAAAAAAAog8LAkAgAkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FB1YEQCACIQMMAQsDQCAHQQFrIQcgAkKAgICAgICABFQhCSACQgGGIgMhAiAJDQALCyAFQoCAgICAgICAgH+DIANCgICAgICAgAh9IAetQjSGhCADQQEgB2utiCAHQQBKG4S\u002FC8YEAwN8A38CfgJ8AkAgABDKAkH\u002FD3EiBUQAAAAAAACQPBDKAiIEa0QAAAAAAACAQBDKAiAEa0kEQCAFIQQMAQsgBCAFSwRAIABEAAAAAAAA8D+gDwtBACEERAAAAAAAAJBAEMoCIAVLDQBEAAAAAAAAAAAgAL0iB0KAgICAgICAeFENARpEAAAAAAAA8H8QygIgBU0EQCAARAAAAAAAAPA\u002FoA8LIAdCAFMEQEQAAAAAAAAAEBCMBg8LRAAAAAAAAABwEIwGDwtB4LwEKwMAIACiQei8BCsDACIBoCICIAGhIgFB+LwEKwMAoiABQfC8BCsDAKIgAKCgIgEgAaIiACAAoiABQZi9BCsDAKJBkL0EKwMAoKIgACABQYi9BCsDAKJBgL0EKwMAoKIgAr0iB6dBBHRB8A9xIgVB0L0EaisDACABoKCgIQEgBUHYvQRqKQMAIAdCLYZ8IQggBEUEQAJ8IAdCgICAgAiDUARAIAhCgICAgICAgIg\u002Ffb8iACABoiAAoEQAAAAAAAAAf6IMAQsgCEKAgICAgICA8D98vyICIAGiIgEgAqAiA0QAAAAAAADwP2MEfCMAQRBrIgQhBiAEQoCAgICAgIAINwMIIAYgBCsDCEQAAAAAAAAQAKI5AwhEAAAAAAAAAAAgA0QAAAAAAADwP6AiACABIAIgA6GgIANEAAAAAAAA8D8gAKGgoKBEAAAAAAAA8L+gIgAgAEQAAAAAAAAAAGEbBSADC0QAAAAAAAAQAKILDwsgCL8iACABoiAAoAsLuxgDGX8EfAF+IwBBMGsiCCQAAkACQAJAIAC9Ih9CIIinIgNB\u002F\u002F\u002F\u002F\u002FwdxIgZB+tS9gARNBEAgA0H\u002F\u002Fz9xQfvDJEYNASAGQfyyi4AETQRAIB9CAFkEQCABIABEAABAVPsh+b+gIgBEMWNiGmG00L2gIhs5AwAgASAAIBuhRDFjYhphtNC9oDkDCEEBIQMMBQsgASAARAAAQFT7Ifk\u002FoCIARDFjYhphtNA9oCIbOQMAIAEgACAboUQxY2IaYbTQPaA5AwhBfyEDDAQLIB9CAFkEQCABIABEAABAVPshCcCgIgBEMWNiGmG04L2gIhs5AwAgASAAIBuhRDFjYhphtOC9oDkDCEECIQMMBAsgASAARAAAQFT7IQlAoCIARDFjYhphtOA9oCIbOQMAIAEgACAboUQxY2IaYbTgPaA5AwhBfiEDDAMLIAZBu4zxgARNBEAgBkG8+9eABE0EQCAGQfyyy4AERg0CIB9CAFkEQCABIABEAAAwf3zZEsCgIgBEypSTp5EO6b2gIhs5AwAgASAAIBuhRMqUk6eRDum9oDkDCEEDIQMMBQsgASAARAAAMH982RJAoCIARMqUk6eRDuk9oCIbOQMAIAEgACAboUTKlJOnkQ7pPaA5AwhBfSEDDAQLIAZB+8PkgARGDQEgH0IAWQRAIAEgAEQAAEBU+yEZwKAiAEQxY2IaYbTwvaAiGzkDACABIAAgG6FEMWNiGmG08L2gOQMIQQQhAwwECyABIABEAABAVPshGUCgIgBEMWNiGmG08D2gIhs5AwAgASAAIBuhRDFjYhphtPA9oDkDCEF8IQMMAwsgBkH6w+SJBEsNAQsgACAARIPIyW0wX+Q\u002FokQAAAAAAAA4Q6BEAAAAAAAAOMOgIhxEAABAVPsh+b+ioCIbIBxEMWNiGmG00D2iIh2hIh5EGC1EVPsh6b9jIQICfyAcmUQAAAAAAADgQWMEQCAcqgwBC0GAgICAeAshAwJAIAIEQCADQQFrIQMgHEQAAAAAAADwv6AiHEQxY2IaYbTQPaIhHSAAIBxEAABAVPsh+b+ioCEbDAELIB5EGC1EVPsh6T9kRQ0AIANBAWohAyAcRAAAAAAAAPA\u002FoCIcRDFjYhphtNA9oiEdIAAgHEQAAEBU+yH5v6KgIRsLIAEgGyAdoSIAOQMAAkAgBkEUdiICIAC9QjSIp0H\u002FD3FrQRFIDQAgASAbIBxEAABgGmG00D2iIgChIh4gHERzcAMuihmjO6IgGyAeoSAAoaEiHaEiADkDACACIAC9QjSIp0H\u002FD3FrQTJIBEAgHiEbDAELIAEgHiAcRAAAAC6KGaM7oiIAoSIbIBxEwUkgJZqDezmiIB4gG6EgAKGhIh2hIgA5AwALIAEgGyAAoSAdoTkDCAwBCyAGQYCAwP8HTwRAIAEgACAAoSIAOQMAIAEgADkDCEEAIQMMAQsgH0L\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FB4NCgICAgICAgLDBAIS\u002FIQBBACEDQQEhAgNAIAhBEGogA0EDdGoCfyAAmUQAAAAAAADgQWMEQCAAqgwBC0GAgICAeAu3Ihs5AwAgACAboUQAAAAAAABwQaIhAEEBIQMgAiEWQQAhAiAWDQALIAggADkDIEECIQMDQCADIgJBAWshAyAIQRBqIg4gAkEDdGorAwBEAAAAAAAAAABhDQALQQAhBCMAQbAEayIFJAAgBkEUdkGWCGsiA0EDa0EYbSIGQQAgBkEAShsiEEFobCADaiEGQcSmBCgCACIJIAJBAWoiDEEBayIHakEATgRAIAkgDGohAyAQIAdrIQIDQCAFQcACaiAEQQN0aiACQQBIBHxEAAAAAAAAAAAFIAJBAnRB0KYEaigCALcLOQMAIAJBAWohAiAEQQFqIgQgA0cNAAsLIAZBGGshCkEAIQMgCUEAIAlBAEobIQQgDEEATCELA0ACQCALBEBEAAAAAAAAAAAhAAwBCyADIAdqIQ9BACECRAAAAAAAAAAAIQADQCAOIAJBA3RqKwMAIAVBwAJqIA8gAmtBA3RqKwMAoiAAoCEAIAJBAWoiAiAMRw0ACwsgBSADQQN0aiAAOQMAIAMgBEYhFyADQQFqIQMgF0UNAAtBLyAGayESQTAgBmshDyAGQRlrIRMgCSEDAkADQCAFIANBA3RqKwMAIQBBACECIAMhBCADQQBMIg1FBEADQCAFQeADaiACQQJ0agJ\u002FAn8gAEQAAAAAAABwPqIiG5lEAAAAAAAA4EFjBEAgG6oMAQtBgICAgHgLtyIbRAAAAAAAAHDBoiAAoCIAmUQAAAAAAADgQWMEQCAAqgwBC0GAgICAeAs2AgAgBSAEQQFrIgRBA3RqKwMAIBugIQAgAkEBaiICIANHDQALCwJ\u002FIAAgChDVASIAIABEAAAAAAAAwD+inEQAAAAAAAAgwKKgIgCZRAAAAAAAAOBBYwRAIACqDAELQYCAgIB4CyEHIAAgB7ehIQACQAJAAkACfyAKQQBMIhRFBEAgA0ECdCAFaiICIAIoAtwDIgIgAiAPdSICIA90ayIENgLcAyACIAdqIQcgBCASdQwBCyAKDQEgA0ECdCAFaigC3ANBF3ULIgtBAEwNAgwBC0ECIQsgAEQAAAAAAADgP2YNAEEAIQsMAQtBACECQQAhBCANRQRAA0AgBUHgA2ogAkECdGoiFSgCACENQf\u002F\u002F\u002FwchEQJ\u002FAkAgBA0AQYCAgAghESANDQBBAAwBCyAVIBEgDWs2AgBBAQshBCACQQFqIgIgA0cNAAsLAkAgFA0AQf\u002F\u002F\u002FwMhAgJAAkAgEw4CAQACC0H\u002F\u002F\u002F8BIQILIANBAnQgBWoiDSANKALcAyACcTYC3AMLIAdBAWohByALQQJHDQBEAAAAAAAA8D8gAKEhAEECIQsgBEUNACAARAAAAAAAAPA\u002FIAoQ1QGhIQALIABEAAAAAAAAAABhBEBBACEEIAMhAgJAIAMgCUwNAANAIAVB4ANqIAJBAWsiAkECdGooAgAgBHIhBCACIAlKDQALIARFDQAgCiEGA0AgBkEYayEGIAVB4ANqIANBAWsiA0ECdGooAgBFDQALDAMLQQEhAgNAIAIiBEEBaiECIAVB4ANqIAkgBGtBAnRqKAIARQ0ACyADIARqIQQDQCAFQcACaiADIAxqIgdBA3RqIANBAWoiAyAQakECdEHQpgRqKAIAtzkDAEEAIQJEAAAAAAAAAAAhACAMQQBKBEADQCAOIAJBA3RqKwMAIAVBwAJqIAcgAmtBA3RqKwMAoiAAoCEAIAJBAWoiAiAMRw0ACwsgBSADQQN0aiAAOQMAIAMgBEgNAAsgBCEDDAELCwJAIABBGCAGaxDVASIARAAAAAAAAHBBZgRAIAVB4ANqIANBAnRqAn8CfyAARAAAAAAAAHA+oiIbmUQAAAAAAADgQWMEQCAbqgwBC0GAgICAeAsiArdEAAAAAAAAcMGiIACgIgCZRAAAAAAAAOBBYwRAIACqDAELQYCAgIB4CzYCACADQQFqIQMMAQsCfyAAmUQAAAAAAADgQWMEQCAAqgwBC0GAgICAeAshAiAKIQYLIAVB4ANqIANBAnRqIAI2AgALRAAAAAAAAPA\u002FIAYQ1QEhAAJAIANBAEgNACADIQIDQCAFIAIiBEEDdGogACAFQeADaiACQQJ0aigCALeiOQMAIAJBAWshAiAARAAAAAAAAHA+oiEAIAQNAAsgA0EASA0AIAMhBANARAAAAAAAAAAAIQBBACECIAkgAyAEayIGIAYgCUobIgpBAE4EQANAIAJBA3RBoLwEaisDACAFIAIgBGpBA3RqKwMAoiAAoCEAIAIgCkchGCACQQFqIQIgGA0ACwsgBUGgAWogBkEDdGogADkDACAEQQBKIRkgBEEBayEEIBkNAAsLRAAAAAAAAAAAIQAgA0EATgRAIAMhAgNAIAIiBEEBayECIAAgBUGgAWogBEEDdGorAwCgIQAgBA0ACwsgCCAAmiAAIAsbOQMAIAUrA6ABIAChIQBBASECIANBAEoEQANAIAAgBUGgAWogAkEDdGorAwCgIQAgAiADRyEaIAJBAWohAiAaDQALCyAIIACaIAAgCxs5AwggBUGwBGokACAHQQdxIQMgCCsDACEAIB9CAFMEQCABIACaOQMAIAEgCCsDCJo5AwhBACADayEDDAELIAEgADkDACABIAgrAwg5AwgLIAhBMGokACADC\u002F4DAwN8A38BfiAAvSIHQiCIp0H\u002F\u002F\u002F\u002F\u002FB3EiBEGAgMCgBE8EQCAARBgtRFT7Ifk\u002FIACmIAC9Qv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGw8LAkACfyAEQf\u002F\u002F7\u002F4DTQRAQX8gBEGAgIDyA08NARoMAgsgAJkhACAEQf\u002F\u002Fy\u002F8DTQRAIARB\u002F\u002F+X\u002FwNNBEAgACAAoEQAAAAAAADwv6AgAEQAAAAAAAAAQKCjIQBBAAwCCyAARAAAAAAAAPC\u002FoCAARAAAAAAAAPA\u002FoKMhAEEBDAELIARB\u002F\u002F+NgARNBEAgAEQAAAAAAAD4v6AgAEQAAAAAAAD4P6JEAAAAAAAA8D+goyEAQQIMAQtEAAAAAAAA8L8gAKMhAEEDCyEGIAAgAKIiAiACoiIBIAEgASABIAFEL2xqLES0or+iRJr93lIt3q2\u002FoKJEbZp0r\u002FKws7+gokRxFiP+xnG8v6CiRMTrmJmZmcm\u002FoKIhAyACIAEgASABIAEgAUQR2iLjOq2QP6JE6w12JEt7qT+gokRRPdCgZg2xP6CiRG4gTMXNRbc\u002FoKJE\u002F4MAkiRJwj+gokQNVVVVVVXVP6CiIQEgBEH\u002F\u002F+\u002F+A00EQCAAIAAgAyABoKKhDwsgBkEDdCIEQcClBGorAwAgACADIAGgoiAEQeClBGorAwChIAChoSIAmiAAIAdCAFMbIQALIAALaQEEfyABED0hAwNAAkAgAC0AAEUEQEF\u002FIQIMAQsDQAJ\u002FIABBLBCfAyIERQRAIAAQPQwBCyAEIABrCyIFIANGBEAgACABIAMQaEUNAgsgACAFakEBaiEAIAQNAAsgAkEBaiECDAELCyACCxEAIABBoJQCQfCcAkEjEKUDC1sAIAAgASACIAMgBBDsAyIDRQRAQoCAgIDgAA8LQoCAgIDgACECIAAgA0EoahC3AiIBQoCAgIBwg0KAgICA4ABSBEAgACADEKwFIAEhAgsgACgCECADEM4BIAILkwUBBH8gBEEIdEGAHnEiByADQdDfAmotAAAiBnIhAyAEQQ92IQUCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQCAEQQR2IghBD3EiBA4NAAAAAAECAwQFBgYIBwkLIAJBAkcgBEECSXIgAiAIQQFxR3ENCiABIAVrIANBAnRBoIACaigCAEEPdmohAQwKCyABIAVrIgNBAXEgAkEAR0YNCSADQQFzIAVqIQEMCQsgASAFayIDQQFGBEBBAUF\u002FIAIbIAFqIQEMCQsgAyACRUEBdEcNCEECQX4gAhsgAWohAQwICyABIAVrIQEgAg0GIABBmQc2AgQgACABIANBBXZB\u002FgBxQdDiAmovAQBqNgIAQQIPCyACQQFGDQYgAyACQQJGQQV0aiEBDAYLIAJBAUYNBSADQQF0QdDiAmovAQAgAkECRmohAQwFCyAEQQlrIAJBAEdHDQQgA0EBdEHQ4gJqLwEAIQEMBAsgAkUNAyAAIAZBP3FBAXRB0OICai8BADYCBCAAIANBBXZB\u002FgBxQdDiAmovAQAgASAFa2o2AgBBAg8LIAJBAUYNAiAAIAZBP3FBAXRB0OICai8BACIGNgIEIAAgA0EFdkH+AHFB0OICai8BACABIAVraiIBNgIAQQIgAkECRw0DGiAAIAEQ0wI2AgAgACAGENMCNgIEQQIPCyACQQFGDQEgACAHQQd2QdDiAmovAQAiATYCACAAIAZBD3FBAXRB0OICai8BACIDNgIIIAAgBkEDdkEecUHQ4gJqLwEAIgU2AgRBAyACQQJHDQIaIAAgARDTAjYCACAAIAUQ0wI2AgQgACADENMCNgIIQQMPCyABIAZBP3FBAXRB0OICai8BAGohAQsgACABNgIAQQELCxcAIAAgAUH\u002FAXEQDiAAIAJB\u002F\u002F8DcRAmC64ZARJ\u002FIwBBkAFrIggkACAIIAIoAgAiBDYCDAJAAkACQAJAAkACQAJAAkACQAJAIAQtAAAiCQRAIAlB3ABHDQUgBEEBaiIGIAAoAhxPDQEgCCAEQQJqIgU2AgwCQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBC0AASIJQdMAaw4FBAEBAQYACwJAIAlB4wBrDgIIBwALAkAgCUHzAGsOBQMBAQEFAAsgCUHEAEYNASAJQdAARiAJQfAARnINCAsgACgCKCEBDA4LQQEhBwwEC0ECIQcMAwtBAyEHDAILQQQhBwwBC0EFIQcLIAdBAXRBDHFBwP8BaigCACIFLwEAIRQgASAAKAJAENICIAdBAXEhBiAFQQJqIQUgFEEBdCEDQQAhCQNAIAMgCUcEQCAFIAlBAXRqLwEAIQAgASgCACIEIAEoAgROBEAgASAEQQFqENECDQUgASgCACEECyABIARBAWo2AgAgASgCCCAEQQJ0aiAANgIAIAlBAWohCQwBCwtBgICAgAQhCSAGRQ0LIAEQlAINAgwLCwJAIAUtAAAiBUHfAXFBwQBrQf8BcUEaTwRAIAAoAighASADRSAFQd8ARiAFQTBrQf8BcUEKSXJFcg0BIAENDQsgCCAEQQNqNgIMIAVBH3EhCQwLCyABDQsgCCAGNgIMQdwAIQkMCgsgACgCKEUEQEEAIQEMBwsgBS0AAEH7AEcNBCAIQdAAaiEEAkACQANAAkAgBUEBaiEDIAUtAAEiBxCnA0UNACAEIAhB0ABqa0E+Sw0CIAQgBzoAACAEQQFqIQQgAyEFDAELCyAEQQA6AAAgCEEQaiEEAkAgB0E9Rw0AIAVBAmohAwNAIAMtAAAiBxCnA0UNASAEIAhBEGprQT9PBEAgAEGizwBBABA\u002FDBAFIAQgBzoAACAEQQFqIQQgA0EBaiEDDAELAAsACyAEQQA6AAAgB0H9AEcEQCAAQcGMAUEAED8MDgtBACEEAkACQCAIQdAAaiIFQdsWQQcQaEUNACAFQfHrAEEDEGhFDQBBASEEIAVBwyVBEhBoRQ0AIAgoAlBB88bhA0cNAQsgASAAKAJAENICQQAhBiMAQTBrIgskAAJ\u002FQX5BwKMCIAhBEGoQnQQiDkEASA0AGiABIQwgBARAIAEoAhAhByALIAEoAgwiBTYCKCALQQA2AiQgC0IANwIcIAsgBTYCFCALQQA2AhAgC0IANwIIIAsgB0GbAyAHGyIFNgIsIAsgBTYCGCALQRxqIQwLIA5BAWohEQJAAkADQCAGQZ8VTARAIAohByAGQZC2AmotAAAiCsAhFQJ\u002FIAZBAWoiBSAKQf8AcSIKQeAASQ0AGiAFQZC2AmotAAAhBSAKQe8ATQRAIApBCHQgBXJBoL8BayEKIAZBAmoMAQsgBkGStgJqLQAAIApBEHRyIAVBCHRyQaDfvwNrIQogBkEDagshBSAVQQBOBEAgByAKakEBaiEKIAUhBgwCCyAFQQFqIQYgByAKakEBaiEKIBEgBUGQtgJqLQAARw0BIAwgByAKEGlFDQEMAgsLQQAiByAERQ0CGiAOQTdGIRIgDkEYRyETQQAhBgNAIAZBuwZMBEAgByEFIAZBsMsCaiwAACINQf8BcSEKAn8gBkEBaiIHIA1BAE4NABogB0GwywJqLQAAIQcgDUG\u002Ff00EQCAKQQh0IAdyQYD\u002FAWshCiAGQQJqDAELIAZBsssCai0AACAKQRB0ciAHQQh0ckGA\u002F\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\u002FDAcLIABB4TdBABA\u002FDAYLIAAQ1QIMBQsgCCAGNgIMIAhBDGogAUEBdBCXAiIDQQBOBEAgAyEJDAMLAkAgA0F+Rw0AIAgoAgwiBC0AACIDRQ0AQdeHASADQRAQkgIgAUVyDQEMBAsgAQ0DIAgoAgwhBAsgCcBBAE4NACAEQQYgCEEMahBRIglBgIAESQ0BIAAoAigNASAAQcM1QQAQPwwDCyAIIARBAWo2AgwLIAIgCCgCDDYCAAwCCyAAQeU8QQAQPwtBfyEJCyAIQZABaiQAIAkLHwEBfyAAKAI8IgFBAEgEfyAAEKAGGiAAKAI8BSABCwu7AwEFfyMAQRBrIgMkACADIAEoAgAiBTYCDCAAIQQCfwNAAkACQAJAAkACQAJAIAUtAAAiAkHcAEcEQCACQT5HDQEgACAERg0GIARBADoAACABIAMoAgxBAWo2AgBBAAwICyADIAVBAWo2AgwgBS0AAUH1AEYNAQwFCyACwEEATg0CIAVBBiADQQxqEFEiAkGAeHFBgLADRw0BIAMoAgxBBiADQQhqEFEiBUGAeHFBgLgDRw0DIAMgAygCCDYCDCACQQp0IAVqQYC4\u002FxprIQIMAwsgA0EMakECEJcCIQILIAJB\u002F\u002F\u002FDAEsNAgwBCyADIAVBAWo2AgwLAkAgACAERgRAAn8gAkH\u002FAE0EQCACQQN2Qfz\u002F\u002F\u002F8BcUGg\u002FwFqKAIAIAJ2QQFxDAELIAIQngQLRQ0CDAELAn8gAkH\u002FAE0EQCACQQN2Qfz\u002F\u002F\u002F8BcUGw\u002FwFqKAIAIAJ2QQFxDAELIAJBfnFBjMAARiACEJYGQQBHcgtFDQELIAQgAGtB+QBKDQACfyACQf8ATQRAIAQgAjoAACAEQQFqDAELIAQgAhDdAiAEagshBCADKAIMIQUMAQsLQX8LIQYgA0EQaiQAIAYLMQEBf0EBIQECQAJAAkAgAEEKaw4EAgEBAgALIABBqMAARg0BCyAAQanAAEYhAQsgAQuoAgEDfwJAAkAgACgCMCIJQQFqIgogACgCLCIITQRAIAAoAighCAwBCyAAKAIgIAAoAihBCCAIQQNsQQF2IgggCEEITRsiCSAAKAIkbBD3AyIIRQRAQX8hCAwCCyAAIAg2AiggACAJNgIsIAAoAjAiCUEBaiEKCyAAIAo2AjAgCCAAKAIkIAlsaiIIIAc2AgQgCCAGOgAAIAggBDYCDCAIIAU2AgggCCADOgABIAhBEGohBCAAKAIMQQF0IQVBACEAA0AgACAFRkUEQCAEIABBAnQiBmogASAGaigCADYCACAAQQFqIQAMAQsLIAQgBUECdGohAUEAIQhBACEAA0AgACADRg0BIAEgAEECdCIEaiACIARqKAIANgIAIABBAWohAAwACwALIAgLDQAgAEEGQX9BBRDxBQvLBQIIfwN+IwBBMGsiCCQAAn8CQAJAAkACQAJAIAMOAwABAgMLQf2DAUHY7ABByxpBkOwAEAAACyABIAIoAhAgAigCDCIAIABBBXQgAigCCGsQcTYCAAwCCyACKAIQIgMgAigCDCIAIABBBXQgAigCCGsiAkEgahBxrUIghiADIAAgAhBxrYQhECAGQYCU69wDRgRAIAEgEEKAlOvcA4AiET4CBCABIBAgEUKAlOvcA359PgIADAILIAEgECAGrSIRgCISPgIEIAEgECARIBJ+fT4CAAwBCyACKAIAIQogCEIANwIoIAhCgICAgICAgICAfzcCICAIIAo2AhwgCEIANwIUIAhCgICAgICAgICAfzcCDCAIIAo2AgggAyAFQQF0IARBAWoiC3ZBAWpBAXYiCmshDCAAIARBAXRBAXJBFGxqIQ1BACEDIAAgBEEobGoiBCgCDEUEQCAEIAYgCkH\u002F\u002F\u002F\u002F\u002FA0EBENcCIAhBCGoiCUIBEDJyIA0gCSAEIApBAWogB2xBAmpBABCIAXIhCQsCQAJAIAhBHGoiDiACIA0gByAMbEEAEEAgCXIgDkEBEO8BciAIQQhqIgkgDiAEQf\u002F\u002F\u002F\u002F8DQQEQQHIgCSACIAlB\u002F\u002F\u002F\u002F\u002FwNBARDuAXJBIHENAANAAkAgCCgCDEUNACAIKAIURQ0AIAhBCGoiAiACIARB\u002F\u002F\u002F\u002F\u002FwNBARC4AQ0CIANBAWshAwwBCwsDQCAIQQhqIgIgBBDyAUEATgRAIAIgAiAEQf\u002F\u002F\u002F\u002F8DQQEQ7gENAiADQQFqIQMMAQsLIAMEQCAIQRxqIgIgAiADrEH\u002F\u002F\u002F\u002F\u002FA0EBEHoNAQsgACABIApBAnRqIAhBHGogDCALIAUgBiAHEKgEDQAgACABIAhBCGogCiALIAUgBiAHEKgERQ0BCyAIQRxqEBkgCEEIahAZQX8MAgsgCEEcahAZIAhBCGoQGQtBAAshDyAIQTBqJAAgDwsWAEH81QRB\u002FNQENgIAQbTVBEEqNgIAC4gBAQR\u002FAkACfwJAIANBB3EiCEEGRwRAQSAhBwNAIAAgASACIAdqIgkgBSAEEQcAIgZBLHENBCAGQRBxRQ0CIAdBAXQhByAAIAIgCCAJELYDRQ0AC0EQDAILIAAgASACIAUgBBEHABoLQQALIQYgACgCDCIBRQ0AIAAgAiADIAEgBhDcAiEGCyAGC48BAQN\u002FIwBBMGsiAiQAIAAoAgAhAyACQgA3AiggAkKAgICAgICAgIB\u002FNwIgIAIgAzYCHCACQgA3AhQgAkKAgICAgICAgIB\u002FNwIMIAIgAzYCCCAAIAJBHGoiBCACQQhqIgNBACABQQ9qQQNuQQFqQQAQqwMgACAAIAMgAUEAEIgBGiAEEBkgAxAZIAJBMGokAAsPACAAIAEgAkEAQQMQ9AELvQECBH8BfiAAIABBH3UiA3MgA2shAyAAQR92RSEFQQACfyABIAFBAWsiBHFFBEBBICAEZyIGayEEIAIEQEEfIAZrQQAgBRsgA2ogBG4MAgsgBEEAIAFBAk8bIANsDAELIAFBAmshASAFAn4gAgRAIAOtIgcgAUEDdCIBQZT4AWo1AgB+QiCIIAFBkPgBajUCACAHfnxCH4gMAQsgAUECdEGw+gFqNQIAIAOtfkIdiAunagsiAWsgASAAQQBIGwtAAQN\u002FQQEgAEG+\u002FgFqLQAAIgEgAUEBTRshA0EBIQIgACEBA0AgAiADRkUEQCACQQFqIQIgACABbCEBDAELCyABC1ABAn8DQCABLAAAIgQEQCAEIAAsAAAiA0EgciADIANBwQBrQRpJG0cEQEEADwUgAUEBaiEBIABBAWohAAwCCwALCyACBEAgAiAANgIAC0EBC4cDAgN+BH8CQCABKAIIIgZB\u002Fv\u002F\u002F\u002FwdOBEBBASEHIAJBAXENAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8AIQMgBkH+\u002F\u002F\u002F\u002FB0cNASABNAIEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwB8IQMMAQsgBkEATARADAELIAZBP00EQCABKAIQIAEoAgwiCEECdGoiCUEEaygCACECQgAgBkEgTQR+IAJBICAGa3atBSAIQQJPBH4gCUEIazUCAAVCAAsgAq1CIIaEQcAAIAZrrYgLIgN9IAMgASgCBBshAwwBCyACQQFxRQRAIAEoAgRFBEBC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FACEDQQEhBwwCC0KAgICAgICAgIB\u002FIQNBASEHIAZBwABHDQEgASgCECABKAIMIgFBAnRqIgJBBGs1AgBCIIYhBCABQQJPBH4gAkEIazUCAAVCAAsgBIRCgICAgICAgICAf1IhBwwBC0IAIAEoAhAiCCABKAIMIgIgAkEFdCAGayIGEHGtIAggAiAGQSBqEHGtQiCGhCIDfSADIAEoAgQbIQMLIAAgAzcDACAHC60CAgJ\u002FAn4jAEEgayICJAACQCAAKAIIQf\u002F\u002F\u002F\u002F8HRgRAQoCAgICAgID8\u002FwAhBAwBCyAAKAIAIQMgAkIANwIYIAJCgICAgICAgICAfzcCECACIAM2AgwgAkEMaiIDIAAQSRoCfiACKAIUIgBB\u002Ff\u002F\u002F\u002FwdMBEAgA0E1QcgEELoBGiACKAIUIQALQoCAgICAgID4\u002FwAgAEH+\u002F\u002F\u002F\u002FB0YNABpCACAAQYCAgIB4Rg0AGiACKAIcIQMCfiACKAIYQQJGBEAgAykCAAwBCyADNQIAQiCGCyEEIABBgnhMBEAgBEGOeCAAa62IIQRCAAwBCyAEQguIQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8HgyEEIABB\u002FgdqrUI0hgshBSAEIAWEIAI1AhBCP4aEIQQgAkEMahAZCyABIAQ3AwAgAkEgaiQACw0AIAAgASACQQIQsAMLIwACQAJAAkAgAg4CAAECCyAAIAFyDwsgACABcw8LIAAgAXEL4QgBEX8gAigCBCAFcyIFIAEoAgQiBnMhDQJAIAEgAhDyASIIIA1Fcg0AIAEoAghB\u002Ff\u002F\u002F\u002FwdKDQAgACAEQQdxQQJGEIABQQAPCyAFIAYgCEEASCIGGyEFIAEgAiAGGyEKAkACQAJAIAIgASAGGyIIKAIMIgcEQCAKKAIMIgsNAQsgCCgCCCIBQf7\u002F\u002F\u002F8HTgRAIAFB\u002F\u002F\u002F\u002F\u002FwdGBEAgABAqQQAPCyANRSAKKAIIQf7\u002F\u002F\u002F8HR3JFBEAgABAqQQEPCyAAIAUQf0EADwsgACAIEEkaIAAgBTYCBAwBCyAAIAU2AgQgACAIKAIIIgI2AgggAiAKKAIIIgZrIQ4CQCANRQRAQQAhBQwBC0EBIQUgDkEBSg0AIAdBBXRBAWshASALIAdrQQV0IAJqIAZrQR9rIQkgCigCECEPQQAhBQNAQQAhAiABQQV1IgYgB0kEQCAIKAIQIAZBAnRqKAIAIQILIA8gCyABIAlqEHEiBiACRgRAIAFBIGshASAFQSBqIQUMAQsLIAIgBnMiEWciDEEBaiEQAkAgEUECSQRAIAUgEGohBQwBCyAFIAJBf0EfIAxrdEF\u002FcyIFcWciAiAFIAZBf3NxZyIFIAIgBUgbIgJqIQUgAiAQayAMc0EfRw0BCwNAIAUhBkEAIQIgAUEgayIBQQV1IgUgB0kEQCAIKAIQIAVBAnRqKAIAIQILIA8gCyABIAlqEHEhDCACRQRAIAZBIGohBSAMQX9GDQELCyACZyIBIAxBf3NnIgIgASACSBsgBmohBQsgACADIAVqQSFqQQV2IgIgByAOQR9qQSBtIAtqIgEgASAHSBsiASABIAJKGyIGEFANAUEAIAgoAgwiFCAGayIPayICQR91IAJxIRUgBiABayEBQQAgDWshDCAKKAIMIhBBBXQhEUEAIBAgBmsiEkEFdCAOamtBBXUhEyANIQJBACELA0AgAUEATgRAAkBBACEBA0AgASAGRg0BQQAhBSAAKAIQIAFBAnRqIAIgASAPaiIHIAgoAgxJBH8gCCgCECAHQQJ0aigCAAVBAAsgCigCECAKKAIMIAEgEmpBBXQgDmoQcSAMcyIFaiICaiIHNgIAIAIgBUkgAiAHS3IhAiABQQFqIQEMAAsACwUgASASakEFdCAOaiEHAkACfwJAIAEgD2oiCUEATiAJIBRJcUUEQCAHQWFIIhZFBEBBACEFIAcgEUgNAgsgCUEfdSAVcSIBIBMgASATSBsgASAWGyEBQQAhBUEAIQkMAwsgCCgCECAJQQJ0aigCACEFQQAgB0FhSCAHIBFOcg0BGgsgCigCECAQIAcQcQshCSABQQFqIQELIAkgDHMiByAFaiIFIAdJIAUgAiAFaiIFS3IhAiAFIAtyIQsMAQsLIAAoAhAiASABKAIAIAtBAEdyNgIAIA0gAkVyDQAgACAGQQFqEFANASAAKAIQIAZBAnRqQQE2AgAgACAAKAIIQSBqNgIICyAAIAMgBBCbAg8LIAAQKkEgC6QEAQl\u002FIAAgAUcEQAJAAkAgASgCDEUEQAJAAkACQCABKAIIQf7\u002F\u002F\u002F8Haw4CAQACCyAAECoPCyABKAIEDQILIAAgARBJGg8LIAEoAgRFDQELIAAQKg8LIAEoAgAhBAJAAkAgACACQQF0QcMAakEGdiIGEFANACAEKAIAQQAgBkEDdCIHIAQoAgQRAQAiBUUNAEEBIQogByAFQQAgBkEBdCIIIAggASgCDCIFIAUgCEobIgtrQQJ0ECwiBWogC0ECdCIHayABKAIQIAEoAgxBAnRqIAdrIAcQHhogAS0ACEEBcQRAIAUgBSAIQQAQtgRFIQoLIAAoAhAhCSMAQSBrIgckACAHIQgCQAJAIAZBEEkNACAEKAIAQQAgBkEBdEF8cUEEaiAEKAIEEQEAIggNAEF\u002FIQkMAQsgBCAJIAUgBiAIIAUgBkECdGoQtwQhCSAHIAhGDQAgBCgCACAIQQAgBCgCBBEBABoLIAdBIGokACAJRQ0BIAQoAgAgBUEAIAQoAgQRAQAaCyAAECoPCwJAAkAgCgRAIAUgBkEBahDaAiEMIAQoAgAgBUEAIAQoAgQRAQAaIAwNASABKAIQIAEoAgwgC2sQ2gINAQwCCyAEKAIAIAVBACAEKAIEEQEAGgsgACgCECIGIAYoAgBBAXI2AgALIABBADYCBCAAIAEoAghBAWpBAXU2AgggACACIAMQugEaDwtB6e0AQdjsAEHmEEGfFhAAAAs8AQF\u002FA0AgAkEATEUEQCAAIAJBAWsiAkECdCIEaiADQR90IAEgBGooAgAiA0EBdnI2AgAMAQsLIANBAXELmAQCC38CfiMAQRBrIggkAAJAAkAgA0EBRgRAIAIoAgAhACAIQQxqIAIoAgQQuAQhAyAAQf\u002F\u002FA3GtIABBEHatIAg1AgxCEIaEIhEgESADQQF0rSISgCIRIBJ+fUIQhoQhEiADQRB0IQ8gEaciA0GAgARPBH4gEkKAgICAEH0FIBIgESARfkL\u002F\u002F\u002F\u002F\u002FD4N9CyERIA8gA2ohBiARQgBTBEAgESAGQQFrIgatQgGGfEIBfCERCyABIAY2AgAgAiARPgIAIBFCIIinIQYMAQtBfyEGIAAgASADQQF2IgdBAnRqIgogAiADQX5xIg5BAnRqIgwgAyAHayILIAQgCEEIahC3BA0BIAgoAggiCQRAIAwgDCAKIAsQ8QEaCyAAIAQgAiAHQQJ0Ig1qIgAgAyAKIAsQswMNASAEIA1qKAIAIAlqIQlBACEGA0AgBiAHRkUEQCABIAZBAnQiDWogBCANaigCADYCACAGQQFqIQYMAQsLIAlBAXYhBiABIAEgByAJQQFxELYEBH8gACAAIAogCxC0AwVBAAshECAKIAYgCxDbAhogECAMIAlBAU0EfyACIANBAnRqIgQgASAHIAEgBxDwASACIAIgBCAOEPEBBSAGCyADQQFxEJkCayIGQQBODQAgAUEBIAMQmQIaIAIgASADQQIQvQQgBmogAkEBIAMQ2wJqIQYLIAUgBjYCAEEAIQYLIAhBEGokACAGC5gBAQJ\u002FIAAgAUH\u002FAXEgAUEIdkH\u002FAXEgAUEXdkH+A3FBwPoBai8BACIAQQF0IgJBf3NBACABQRB2IAAgAGxrIgEgAksiAhsgAWpBCHRyIgEgACACaiICQQF0IgNuIgAgAGxrIAEgACADbGtBCHRqIgFBH3UgAkEIdCAAaiIAQQFrIgJBAXRBAXJxIAFqNgIAIAIgACABQQBIGws5AQJ\u002FIwBBEGsiASQAIAAEfyABQQxqIAAgAGciAEEecXQQuAQgAEEBdnYFQQALIQIgAUEQaiQAIAILsgQBBn8jAEEwayIEJAACQAJAIAAgAkYgACADRnJFBEAgASACRiABIANGcg0BIAAgAUYNAgJAAkAgAigCDCIFBEAgAygCDCIGDQELQQAhBSAAQQAQgAECQCACKAIIIgBB\u002F\u002F\u002F\u002F\u002FwdHBEAgAygCCCIDQf\u002F\u002F\u002F\u002F8HRw0BCyABECoMAgsgAEH+\u002F\u002F\u002F\u002FB0cgA0GAgICAeEdxRQRAIAEQKkEBIQUMAgsgASACEEkaIAFB\u002F\u002F\u002F\u002F\u002FwNBARC6ASEFDAELIAIoAgQgAygCBHMhByAEIAIoAggiCDYCJCACKAIQIQkgBCAFNgIoIAQgCTYCLCAEQQA2AiAgBCADKAIIIgU2AhAgAygCECEDIAQgBjYCFCAEIAM2AhggBEEANgIMAkAgBEEcaiIDIARBCGoQ8gFBAEgEQCAAQgAQMhogASADEEkaDAELIAAgBEEcaiIDIARBCGoiBkEBIAggBWsiBSAFQQFMG0EBakEBEIgBGiAAQQEQ7wEaIAEgACAGQf\u002F\u002F\u002F\u002F8DQQEQQBogASADIAFB\u002F\u002F\u002F\u002F\u002FwNBARDuARoLAkAgACgCCEH\u002F\u002F\u002F\u002F\u002FB0YNACABKAIIQf\u002F\u002F\u002F\u002F8HRg0AAkAgASgCDEUNAAsgASABKAIEIAIoAgRzNgIEIAAgBzYCBCABQf\u002F\u002F\u002F\u002F8DQQEQugEhBQwBCyAAECogARAqQSAhBQsgBEEwaiQAIAUPC0HU7QBB2OwAQd8NQe\u002FAABAAAAtBw+0AQdjsAEHgDUHvwAAQAAALQaY2QdjsAEHhDUHvwAAQAAALVQEBfiAAIAOtIAStIAEgAkEfdSIAa61+IAAgA3EgAmqtfEIgiKcgAWoiAK1Cf4V+IAKtIAGtQiCGhHwiBUIgiKciASADcSAFp2o2AgAgACABakEBaguyBQEMfwJAAkACQAJAAkACQCADQQJNBEAgACgCAEEAIANBAXQiB0EBciIIQQJ0IAAoAgQRAQAhBiAAKAIAQQAgA0ECdEEIaiAAKAIEEQEAIgVFIAZFcg0CA0AgBCAHRkUEQCAGIARBAnRqQQA2AgAgBEEBaiEEDAELCyAGIAdBAnRqQQE2AgAgACAFIAYgCCACIAMQswMNAiADQQFqIQJBACEEA0AgAiAERkUEQCABIARBAnQiB2ogBSAHaigCADYCACAEQQFqIQQMAQsLIAYgAxDaAg0BIAFBASACEJkCGgwBCyAAKAIAQQAgAyADQQFrQQF2IgdrIgggA2oiBEEBaiIMQQJ0IAAoAgQRAQAiBUUgACgCAEEAIAhBDGxBCGogACgCBBEBACIGRXINASAAIAEgB0ECdCIJaiIKIAIgCWogCBC8BA0CIAhBAXQhDiAFIAIgAyAKIAhBAWoiCRDwASAFIANBAnRqIQsgBSAEQQJ0aiENA0AgDSgCAARAIApBASAJEJkCGiALIAUgBSACIAMQ8QEgCRCZAhoMAQsLIAxBACAMQQBKGyEDQQAhAkEAIQQDQCADIARGRQRAIAUgBEECdGoiC0EAIAsoAgAiC2siDyACazYCACALQQBHIAIgD0tyIQIgBEEBaiEEDAELCyANIA0oAgBBAWo2AgAgBiAFIAdBAnRqIAwgB2sgCiAJEPABIAYgDiAHa0ECdGohAkEAIQQDQCAEIAdGRQRAIAEgBEECdCIDaiACIANqKAIANgIAIARBAWohBAwBCwsgCiAKIAYgDkECdGogCBC0AxoLQQAhBCAAKAIAIAVBACAAKAIEEQEAGgwDCyAFRQ0BCyAAKAIAIAVBACAAKAIEEQEAGgtBfyEEIAZFDQELIAAoAgAgBkEAIAAoAgQRAQAaCyAEC1QCA38CfiADrSEHQQAhAwNAIAIgA0ZFBEAgACADQQJ0IgVqIgYgBjUCACAErSABIAVqNQIAIAd+fHwiCD4CACAIQiCIpyEEIANBAWohAwwBCwsgBAuDBgIDfwd+IwBBIGsiBSQAQoCAgIDgACENAkAgACABIARBImoQXiIBQoCAgIBwg0KAgICA4ABRDQBCgICAgDAhCgJAAkACQAJAIABBHBBcIgZFDQAgBiAEQQF2QQFxNgIAIAYgBkEEaiIHNgIIIAYgBzYCBCABQoCAgIBwWgRAIAGnIAY2AiALIAZBATYCFCAGIABBCBAkIgc2AhBCgICAgDAhC0KAgICAMCEIIAdFDQIgByAHNgIEIAcgBzYCACAGQQQ2AhggAkEATA0DIAMpAwAiCEKAgICAEIRCgICAgHCDQoCAgIAwUQ0DIAAgAUHpAEHDACAEQQFxIgIbIAFBABARIgpCgICAgHCDQoCAgIDgAFENACAAIAoQNQ0BIABB8DlBABASC0KAgICAMCELQoCAgIAwIQgMAQsgACAIQQAQywEiCEKAgICAcINCgICAgOAAUQRADAELAkAgACAIQesAIAhBABARIgtCgICAgHCDQoCAgIDgAFENAAJAA0AgBSAAIAggCyAFQRRqEJEBIgk3AxggCUKAgICAcINCgICAgOAAUQ0CIAUoAhRFBEACQCACBEAgACAKIAFBASAFQRhqEBwiDkKAgICAcINCgICAgOAAUg0BIAAgBSkDGBAMDAULAkACQCAJQv\u002F\u002F\u002F\u002F9vWARAIAAQIkKAgICAMCEJDAELIAAgCUIAEE4iCUKAgICAcINCgICAgOAAUg0BC0KAgICAMCEMDAQLIAAgBSkDGEIBEE4iDEKAgICAcINCgICAgOAAUQ0DIAUgDDcDCCAFIAk3AwAgACAKIAFBAiAFEBwiDkKAgICAcINCgICAgOAAUQ0DIAAgCRAMIAAgDBAMCyAAIA4QDCAAIAUpAxgQDAwBCwsgACAJEAwgACALEAwgACAIEAwgACAKEAwMAwsgACAFKQMYEAwgACAJEAwgACAMEAwLIAhCgICAgHBUDQAgACAIQQEQkAEaCyAAIAsQDCAAIAgQDCAAIAoQDCAAIAEQDAwBCyABIQ0LIAVBIGokACANC0sBAn8gACABRwRAIAAoAhAiAgRAIAAoAgAiAygCACACQQAgAygCBBEBABoLIAAgASkCADcCACAAIAEoAhA2AhAgACABKQIINwIICwv0AQIDfgF\u002FAkAgAykDACIEQoCAgIBwWgRAIAMpAwgiBUL\u002F\u002F\u002F\u002F\u002Fb1YNAQsgABAiQoCAgIDgAA8LQoCAgIDgACEGIABCgICAgCBBLBBHIgFCgICAgHCDQoCAgIDgAFIEfiAAQRgQJCICRQRAIAAgARAMQoCAgIDgAA8LIASnIgMgAygCAEEBajYCACACIAQ3AwAgBaciByAHKAIAQQFqNgIAIAIgBTcDCCAAIAQQNSEAIAJBADoAESACIAA6ABAgAUKAgICAcFoEQCABpyIAIAI2AiAgACAALQAFQe8BcSADLQAFQRBxcjoABQsgAQVCgICAgOAACwsbACAAEBkgAEIANwIQIABCADcCCCAAQgA3AgALCQAgASACEPgFCxMAIABBEGogASACIAAoAggRAQALqAECAX8CfiAAvSIEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoGAgICAgID4\u002FwBaBEAgAb1C\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgYCAgICAgPj\u002FAFQPC0F\u002FIQICQCAAIAFjDQAgAb0iA0L\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVg0AQQEhAiAAIAFkDQBBACECIABEAAAAAAAAAABiDQAgBEIAUwRAIANCP4enQX9zDwsgA0I\u002FiKchAgsgAgvKBQIFfwN+IwBBMGsiAiQAIAIgATcDECACQQA2AgwgAiAANgIIIAIgAykDACIKNwMYAkACQCAKQoCAgIBwgyILQoCAgIAwUgRAQoCAgIDgACEJIAAgChBVDQELQoCAgIDgACEJIAAgARCKASIFQQBIDQACQCAFQQJJDQAgAaciAy8BBkEVayIEQf\u002F\u002FA3FBC08NAiACIARBAnRB\u002FP8PcSIEQZz1AWooAgA2AiBBASADLwEGQcqeAWotAAAiBnQhCCADKAIkIQcgC0KAgICAMFIEQCAAIAVBAnQQJCIERQ0CQQAhAwNAIAMgBUZFBEAgBCADQQJ0aiADNgIAIANBAWohAwwBCwsgAiAINgIoIAIgBzYCJCAEIAVBBEHLACACQQhqENcBAkACQAJAAkAgAigCDA4CAAEDCyAAIAUgBnQiAxAkIgYNAQsgACgCECIAQRBqIAQgACgCBBEAAAwECyAGIAcgAxAeIQZBACEDAkACQAJAAkACQCAIQQFrDggAAQkCCQkJAwkLA0AgAyAFRg0EIAMgB2ogBiAEIANBAnRqKAIAai0AADoAACADQQFqIQMMAAsACwNAIAMgBUYNAyAHIANBAXRqIAYgBCADQQJ0aigCAEEBdGovAQA7AQAgA0EBaiEDDAALAAsDQCADIAVGDQIgByADQQJ0IghqIAYgBCAIaigCAEECdGooAgA2AgAgA0EBaiEDDAALAAsDQCADIAVGDQEgByADQQN0aiAGIAQgA0ECdGooAgBBA3RqKQMANwMAIANBAWohAwwACwALIAAoAhAiA0EQaiAGIAMoAgQRAAALIAAoAhAiAEEQaiAEIAAoAgQRAAAMAQsgByAFIAggBEHI9QFqKAIAIAJBCGoQ1wEgAigCDA0BCyABQiCIp0F1TwRAIAGnIgAgACgCAEEBajYCAAsgASEJCyACQTBqJAAgCQ8LEAEAC+cCAQF+IAAgARCKASICQQBIBEBCgICAgOAADwsCQCACRQ0AAkACQAJAAkACQCABpyIALwEGQcqeAWotAAAOBAABAgMECyAAKAIkIgAgAmohAgNAIAAgAkEBayICTw0FIAAtAAAhAyAAIAItAAA6AAAgAiADOgAAIABBAWohAAwACwALIAAoAiQiACACQQF0aiECA0AgACACQQJrIgJPDQQgAC8BACEDIAAgAi8BADsBACACIAM7AQAgAEECaiEADAALAAsgACgCJCIAIAJBAnRqIQIDQCAAIAJBBGsiAk8NAyAAKAIAIQMgACACKAIANgIAIAIgAzYCACAAQQRqIQAMAAsACyAAKAIkIgAgAkEDdGohAgNAIAAgAkEIayICTw0CIAApAwAhBCAAIAIpAwA3AwAgAiAENwMAIABBCGohAAwACwALEAEACyABQiCIp0F1TwRAIAGnIgAgACgCAEEBajYCAAsgAQtRAgF\u002FAX5CgICAgOAAIQQgACABIAIQayIDBH4gAygCICIDKAIMKAIgLQAEBEAgAkUEQEIADwsgABBfQoCAgIDgAA8LIAM1AhAFQoCAgIDgAAsLNwAgACABIAIQayIARQRAQoCAgIDgAA8LIAAoAiAoAgwiACAAKAIAQQFqNgIAIACtQoCAgIBwhAsMACAAKAIQIAEQ5wML2gEBAn4CQAJAIAJFBEAgAUKAgICAcIMhBSAAQS8QKSEEDAELAn4gAUKAgICAcIMiBUKAgICAMFIgAykDACIEQoCAgIBwg0KAgICAgH9SckUEQCAAQbmMASAAIAAoAhAgBKcQxgIQKUGrjAEQsgEMAQsgACAEECULIgRCgICAgHCDQoCAgIDgAFENAQsgBUKAgICAMFENACAAIAFBBRBeIgFCgICAgHCDQoCAgIDgAFIEQCAAIAEgBBC9ASAAIAFBMCAEpykCBEL\u002F\u002F\u002F\u002F\u002FB4NBABAVGgsgASEECyAEC0YBAX8CQCAAKAIIIAJqIgMgACgCDEoEQCAAIAMgARDEAg0BCwNAIAJBAEwEQEEADwsgAkEBayECIAAgARCHAUUNAAsLQX8LlQECBX8BfiABKQIEIginQf\u002F\u002F\u002F\u002F8HcSIDRQRAIAIPCyAAKAIEQf\u002F\u002F\u002F\u002F8HcSEHAn8gCEKAgICACINQRQRAIAEvARAMAQsgAS0AEAshBSADQQFrIQYgByADayEEAkADQCACIARKDQEgACAFIAIQoAEiA0EASCADIARKcg0BIAAgASADQQFqIgJBASAGELwDDQALIAMPC0F\u002FC6cBAgN\u002FAX4CQAJAIAAgARD2AyIDQQBIDQAgA0UNAUGbHiECIAAgACABQe4AIAFBABARIgVCgICAgHCDIgFCgICAgCBRIAFCgICAgDBRcgR\u002FQZseBSABQoCAgIDgAFENASAAIAUQNCIBQoCAgIBwg0KAgICA4ABRDQFBACECIAGnQecAQQAQoAEhBCAAIAEQDCAEQQBODQJB2ssAC0EAEBILQX8hAgsgAguhAQIDfwF+AkACQCAAKQIEIgRCgICAgAiDUA0AIABBEGohAiAEp0H\u002F\u002F\u002F\u002F\u002FB3EhA0EAIQADQCAAIANODQECQCACIABBAXRqLwEAIgFBgPADcUGAsANHBEAgACEBDAELIAFB\u002F7cDSw0DIABBAWoiASADTg0DIAIgAUEBdGovAQBBgEBrQf\u002F\u002FA3FBgPgDSQ0DCyABQQFqIQAMAAsAC0F\u002FIQALIAALVQEBfwJAAkACQCABQiCIp0EBag4DAAECAQsgAaciAi8BBkEGRw0AIAIpAyAiAUKAgICAcINCgICAgBBRDQELIABBlMAAQQAQEkKAgICA4AAhAQsgAQsQAEHOkQEgAEELEJICQQBHC4kBAgN\u002FAX5BwZEBIQMCQAJAIAEpAgQiBqdB\u002F\u002F\u002F\u002F\u002FwdxIgUgAkwNACABQRBqIQQCfyAGQoCAgIAIg1BFBEAgBCACQQF0ai8BAAwBCyACIARqLQAAC0ElRw0AQcMbIQMgAkECaiAFTg0AIAEgAkEBakECEL0DIgJBAE4NAQsgACADEL4DQX8hAgsgAgtWAQF+IwBBEGsiAiQAIAAgAkEIaiADKQMAEEIEfkKAgICA4AAFIAIpAwhCgICAgICAgPj\u002FAINCgICAgICAgPj\u002FAFKtQoCAgIAQhAshBCACQRBqJAAgBAtWAQF+IwBBEGsiAiQAIAAgAkEIaiADKQMAEEIEfkKAgICA4AAFIAIpAwhC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFatQoCAgIAQhAshBCACQRBqJAAgBAvBAwIDfwR+IwBBMGsiCCQAIANCACADQgBVGyENIAVBAWshCiAGQoCAgIBwgyEOIAVBAEwhBUIAIQMDQAJAIAMgDVEEQCAEIQwMAQtCfyEMIAAgAiADIAhBKGoQVCIJQQBIDQACQCAJRQ0AIA5CgICAgDBSBEAgCCAIKQMoNwMAIAMhCyAIIAI3AxAgCCADQoCAgIAIWgR+QoCAgIDAfiADub0iC0KAgICAwIGA\u002FP8AfSALQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwUgCws3AwggCCAAIAYgB0EDIAgQHCILNwMoIAAgCCkDABAMIAAgCCkDCBAMIAtCgICAgHCDQoCAgIDgAFENAgsCQAJAAkAgBQ0AIAAgCCkDKCILEMwBIglBAEgNASAJRQ0AIAAgCEEgaiALEC9BAEgNASAAIAEgCyAIKQMgIAQgCkKAgICAMEKAgICAMBDUBCIEQgBTDQEgACALEAwMAwsgBEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FD1MNASAAQdXIAEEAEBIgCCkDKCELCyAAIAsQDAwCCyAAIAEgBCAIKQMoEGdBAEgNASAEQgF8IQQLIANCAXwhAwwBCwsgCEEwaiQAIAwLtQUCBH4GfyMAQTBrIggkACAIQgA3AhwgCCAANgIYIAggAykDACIENwMoQoCAgIAwIQYCQAJAAn8gBEKAgICAcINCgICAgDBSBEBBACECQQAgACAEEFUNARogCEEBNgIgC0EAIQICQCAAIAhBEGogACABECAiBhAvBEAMAQtCACEEA0AgCCkDECAFVQRAIAkgCk8EQCAAIAIgCiAKQQF2akEfakFwcSIKQRhsIAhBDGoQpwEiA0UNAyAIKAIMQRhuIApqIQogAyECC0EAIAAgBiAFIAIgCUEYbGoiCxBUIgNBAEgNAxoCQCADRQ0AIAs1AgRCIIZCgICAgDBRBEAgBEIBfCEEDAELIAsgBTcDECALQQA2AgggCUEBaiEJCyAFQgF8IQUMAQsLIAIgCUEYQcoAIAhBGGoQ1wFBACAIKAIcDQEaIAQgBEI\u002Fh0J\u002FhYMhBCAJrSEBQgAhBQNAAkAgASAFUgRAIAIgBaciCkEYbGoiAygCCCILBEAgACALrUKAgICAkH+EEAwLIAMpAwAhByAFIAMpAxBRBEAgACAHEAwMAgsgACAGIAUgBxB7QQBODQEgCkEBagwECyAAKAIQIgNBEGogAiADKAIEEQAAA0AgASAEUQRAIAgpAxAhAQNAIAEgBFcNCCAAIAYgBBCFAiEMIARCAXwhBCAMQQBODQALDAYLIAAgBiABQoCAgIAwEHshDSABQgF8IQEgDUEATg0ACwwECyAEQgF8IQQgBUIBfCEFDAALAAtBAAshAyAJIAMgAyAJSRshCQNAIAMgCUcEQCAAIAIgA0EYbGoiCikDABAMIAooAggiCgRAIAAgCq1CgICAgJB\u002FhBAMCyADQQFqIQMMAQsLIAAoAhAiA0EQaiACIAMoAgQRAAALIAAgBhAMQoCAgIDgACEGCyAIQTBqJAAgBgswACABQoCAgIAQhEKAgICAcINCgICAgDBRBEAgACABEDQPCyAAIAFBOUEAQQAQpwILmQIBAX4CQAJAAkAgAUKAgICAcIMiBEKAgICAMFIEQCAEQoCAgIAgUg0BIABBxMIAEGAhBAwCCyAAQYvpABBgIQQMAQsgACABECAiAUKAgICAcINCgICAgOAAUQ0BIAAgARDMASIDQQBIBEAgACABEAxCgICAgOAADwsCf0GTASADDQAaQZ0BIAAgARA1DQAaQZIBIAGnLwEGIgNBEktBASADdEH4jhBxRXINABogACgCECgCRCADQRhsaigCBAshAiAAIAFB0gEgAUEAEBEhBCAAIAEQDCAEQoCAgIBwgyIBQoCAgICQf1ENACABQoCAgIDgAFENASAAIAQQDCAAIAIQKSEECyAAQeeRASAEQa3wABCyASEBCyABC48EAQJ+IwBBIGsiAiQAIAMpAwAhBQJAAkACQCAEBEAgBUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECIMAwsgBaciBCAEKAIAQQFqNgIADAELIAAgBRAgIgUhASAFQoCAgIBwg0KAgICA4ABRDQILAkAgACADKQMIEDAiA0UNAEKAgICAMCEBAkACQCAFQoCAgIBwVA0AIAAgAiAFpyADEEMiBEEASA0CIARFDQAgABAzIgFCgICAgHCDQoCAgIDgAFENAQJAIAItAABBEHEEQCACKQMQIgZCIIinQXVPBEAgBqciBCAEKAIAQQFqNgIACyAAIAFBwgAgBkGHgAEQFUEASA0DIAIpAxgiBkIgiKdBdU8EQCAGpyIEIAQoAgBBAWo2AgALIAAgAUHDACAGQYeAARAVQQBODQEMAwsgAikDCCIGQiCIp0F1TwRAIAanIgQgBCgCAEEBajYCAAsgACABQcEAIAZBh4ABEBVBAEgNAiAAIAFBPyACNQIAQgGIQgGDQoCAgIAQhEGHgAEQFUEASA0CCyAAIAFBwAAgAjUCAEICiEIBg0KAgICAEIRBh4ABEBVBAEgNASAAIAFBPiACNQIAQgGDQoCAgIAQhEGHgAEQFUEASA0BIAAgAhBGCyAAIAMQECAAIAUQDAwDCyAAIAIQRiAAIAEQDAsgACADEBAgACAFEAwLQoCAgIDgACEBCyACQSBqJAAgAQtVAQF\u002FIwBBIGsiBSQAAkAgACAFIAMQhAVBAEgEQEF\u002FIQQMAQsgACABIAIgBSkDCCAFKQMQIAUpAxggBSgCACAEchBqIQQgACAFEEYLIAVBIGokACAEC4MCAgZ\u002FAX4jAEEQayIEJAACQCABQv\u002F\u002F\u002F\u002F9vWARAIAAQIkF\u002FIQMMAQtBfyEDIAAgAhAgIglCgICAgHCDQoCAgIDgAFENACAAIARBDGogBEEIaiAJp0ETEH0hA0KAgICAMCECIAQoAgghBiAEKAIMIQcCQAJAIANBAEgNAANAIAUgBkYEQEEAIQMMAwsgACACEAwgACAJIAcgBUEDdGoiCCgCBCAJQQAQESICQoCAgIBwg0KAgICA4ABRDQFBfyEDIAVBAWohBSAAIAEgCCgCBCACQYCAARDZBEEATg0ACwwBC0F\u002FIQMLIAAgByAGEFsgACAJEAwgACACEAwLIARBEGokACADC0gBAn8jAEEQayICJABBfyEDAkAgACACQQxqIAEQswENACACKAIMIgNBJWtBXEsNACAAQYSBAUEAEERBfyEDCyACQRBqJAAgAwt1AQF\u002FAkAgAUKAgICAcINCgICAgOB+UQRADAELAkAgAUKAgICAcFQNACABpyICLwEGQSFHDQAgAikDICIBQoCAgIBwg0KAgICA4H5SDQAMAQsgAEGTGkEAEBJCgICAgOAADwsgAaciACAAKAIAQQFqNgIAIAELvwEBAX8gASADai0AAEE8RgRAIAAgBEH\u002FAXEQDiAAIAVB\u002F\u002F8DcRAmIANBAWohAwsgASACKAIEIgBBBWsiAmoiBi0AAEG2AUYEQCAAIAFqLQAAQRZGBEAgBkEROgAAIABBBGshAgsgAEECaiEAIAEgAmoiBiAFOwABIAYgBEEBajoAACACQQNqIQIDQCAAIAJMRQRAIAEgAmpBswE6AAAgAkEBaiECDAELCyADDwtBvMMAQajsAEGz6gFBiM0AEAAAC84CAgd\u002FAX4jAEEwayICJAACQAJAIAMpAwAiAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCABQiCIp0F1SQ0BIAGnIgAgACgCAEEBajYCAAwBC0KAgICA4AAhDCAAIAEQigQiA0EASA0BIANFBEAgAEHt0ABBABASDAILIAAgAkEsaiACQShqIAGnIgZBAxB9DQEgAigCLCEHIAIoAighCEEAIQMCQANAIAMgCEcEQCAHIANBA3RqKAIEIQlBgIIBIQUCQCAERQ0AIAAgAkEIaiIKIAYgCRBDIgtBAEgNAyALRQ0AIAIoAgghBSAAIAoQRkGAhgFBgIIBIAVBAnEbIQULIAAgASAJQoCAgIAwQoCAgIAwQoCAgIAwIAUQakEASA0CIANBAWohAwwBCwsgACAHIAgQWyAGIAYoAgBBAWo2AgAMAQsgACAHIAgQWwwBCyABIQwLIAJBMGokACAMC0IBAX8CQCAAIAFqIgAtAAFBPUcNAEEBIQICQAJAIAAtAAAiAEEWaw4EAgEBAgALIABBswFGDQELIABBHUYhAgsgAguzAQEBf0F\u002FIQMCQCABKAJMRQ0AAkACQAJAAkAgAkHyAGsOAwIBAAMLIAEoArQBIgNBAE4NAyABIAAgAUH0ABBMIgA2ArQBIAAPCyABKAKwASIDQQBODQIgASAAIAFB8wAQTCIANgKwASAADwsgASgCrAEiA0EATg0BIAEgACABQfIAEEwiADYCrAEgAA8LIAJBCEcNACABKAKoASIDQQBODQAgASAAIAEQ0wMiAzYCqAELIAMLSwEBfyAAIAEoAgA2AkAgAEEpEA0gACAAKAJAKAIENgJAIABCgICAgCAQxwMhAiABKAIAIAI2AgggAEEDEA0gACACEDggAEHQABANC8gBAgN\u002FAX4jAEEQayIDJAAgACABECkiBkKAgICAcINCgICAgOAAUgRAAkACQCAAIANBDGogBhDfASIBRQ0AIAAgAhA9IgQgAygCDGpBAWoQJCIFRQ0AIAUgASADKAIMEB4iBSADKAIMaiACIAQQHhogBSADKAIMaiAEakEAOgAAIAAgBSADKAIMIARqEJ0DIQQgACgCECICQRBqIAUgAigCBBEAACAAIAEQMQwBCyAAIAEQMUEAIQQLIAAgBhAMCyADQRBqJAAgBAunAQEFfyMAQRBrIgMkACABpyIEKAIQIgJBMGohBSACIAIoAhhBf3NBAnRBvH5yaigCACECAkACQANAIAJFDQEgBSACQQN0aiIGQQhrIQIgBkEEaygCAEEwRwRAIAIoAgBB\u002F\u002F\u002F\u002FH3EhAgwBCwsgAyACNgIMIAJFDQAgACAEIANBDGogAigCAEEadkE8cRCNAw0BCyAEIAQtAAVB\u002FgFxOgAFCyADQRBqJAALsAUCCX8DfiMAQTBrIgQkACAAKAIAIQVCgICAgDAhDkKAgICAMCENAkAgAQRAQX8hAyAFEDsiDUKAgICAcINCgICAgOAAUQ0BIAAgDUEAEMABIQkgBSANEAwgCQ0BIAUQOyIOQoCAgIBwg0KAgICA4ABRDQEgBSANQfEAIA5BgIABEBVBAEgNAQsgAEEQaiEGQQAhAwJAAkADQCAGKAIAQYJ\u002FRgRAIAAoAhghCiAEIAYpAxg3AyggBCAGKQMQNwMgIAQgBikDCDcDGCAEIAYpAwA3AxAgCkEBaiEHIAApAyAhDAJAAkACQCABBEAgDEIgiKdBdU8EQCAMpyIIIAgoAgBBAWo2AgALIAUgDiADIAxBhIABEJMBQQBIDQIgBSANIAMCfiAAQeAAQQAgByAEQRBqIARBDGoQ\u002FwJFBEAgBCkDIAwBCyAEQoCAgIAwNwMgQoCAgIAwC0GEgAEQkwFBAEgNAiAAKAIoQeAARw0BIAUgDhDjBCAFIA0Q4wQgAiADQQFqNgIADAcLIAUgDBAMIABCgICAgDA3AyAgAEHgAEEBIAcgBEEQaiAEQQxqEP8CDQECQCAEKQMgIgynKAIEQf\u002F\u002F\u002F\u002F8HcUEBIAMbBEAgACAMQQEQwAEhCyAAKAIAIAwQDCALDQMgA0UEQCAAKAIoQeAARg0JIABBwgAQDSAAQd0AEBcLIANBAWohAwwBCyAAKAIAIAwQDAsgACgCKEHgAEYNBQsgABAPDQAgABCLAQ0AIAYoAgBB\u002FQBHBEAgAEHsPUEAEBMMAQsgACAGEIECIABBADYCMCAAIAAoAhQ2AgQgACAAKAI4EM0DRQ0BC0F\u002FIQMMBQsgA0EBaiEDDAELCyAAQYJ\u002FECghAwwCCyAAQSQQDSAAIANBAWtB\u002F\u002F8DcRAUCyAAEA8hAwsgBEEwaiQAIAMLbwEBfyAAQSYQDSAAQQAQFCAAQQEQDSAAQQAQOCAAIAAQLSICEBogAEGCARANIAAgAUECakH\u002FAXEQWCAAQesAQX8QGCEBIABB0QAQDSAAQZABEA0gAEHsACACEBgaIAAgARAaIABBDhANIABBDhANC50BAQd\u002FIAAoAkAiBCgCiAEiA0EAIANBAEobIQMCQANAAkAgAiADRgRAQQAhAyAEKAJ8IgJBACACQQBKGyEFQQAhAgNAIAIgBUYNBCACQQR0IQcgAkEBaiECIAcgBCgCdGooAgAgAUcNAAsMAQsgAkEEdCEIIAJBAWohAiAIIAQoAoABaigCACABRw0BCwsgAEG2E0EAEBNBfyEDCyADC4oFAgh\u002FAX4jAEFAaiIBJAAgACgCOCECQX8hCAJAIAAoAgAgAUEoakEgED4NAAJAIAAoAgAgAUEQakEBED4NACACQQFqIQNBACECAkADQCADIgUgACgCPE8NASACIQZBASECIANBAWohAwJAAkACQAJAAkACQAJAAkAgBS0AACIEQdsAaw4DBgMBAAsgBEEvRwRAIARBCmsOBAcCAgcCC0EvIQQgBg0FA0AgASADQQFqNgIMAkAgAywAACICQQBOBEAgAkH\u002FAXEhAgwBCyADQQYgAUEMahBRIgJBgIDEAE8NBgsgAhDJAQRAIAFBEGogAhCxAQ0LIAEoAgwhAwwBCwsgAEGEfzYCECAAIAFBKGoQNzcDICABQRBqEDchCSAAIAM2AjggACAJNwMoQQAhCAwKC0HdACEEQQAhAgwECyAEwEEATg0BIAVBBiABQQhqEFEiBEGAgMQATw0CIARB\u002Fv\u002F\u002FAHFBqMAARg0EIAEoAgghAwwBCyABQShqQdwAEDwNBiAFQQJqIQcCQCAFLQABIgQEQCAEQQprDgQFAQEFAQtBACEEIAYhAiAHIgMgACgCPE8NBgwDCyAEwEEATgRAIAYhAiAHIQMMAwtBB0EGQQAgA0EGIAFBDGoQUSIEQf7\u002F\u002FwBxQajAAEYbIARB\u002F\u002F\u002FDAEsiAhsiA0UEQCAHIAEoAgwgAhshAwwBCyADQQZrDgIDAQcLIAYhAgwBCyAAQbLfAEEAEBMMBAsgAUEoaiAEELEBRQ0BDAMLCyAAQa02QQAQEwwBCyAAQdI2QQAQEwsgASgCKCgCECIAQRBqIAEoAiwgACgCBBEAACABKAIQKAIQIgBBEGogASgCFCAAKAIEEQAACyABQUBrJAAgCAszAQF\u002FA0ACQCABQQBOBH8gASACRw0BQQEFQQALDwsgACgCzAEgAUEDdGooAgAhAQwACwALQwECfyAAKAKIASECQX8hAwJAA0AgAkEATA0BIAAoAoABIAJBAWsiAkEEdGooAgAgAUcNAAsgAkGAgICAAnIhAwsgAwuDAwEGfyABKAI4IQMCQAJAAkAgAS0AbkEBcQRAIANFBEBB7TAhAyABKAJADQMLQYDdACEDIAJBO0YgAkHOAEZyDQJBACECIAEoAogBIgNBACADQQBKGyEEA0AgAiAERg0CQdvcACEDIAEoAoABIAJBBHRqKAIAIgZBO0YgBkHOAEZyDQMgAkEBaiECDAALAAsgA0UNACABLwFsIgJBggxGDQAgAkEIdkEDaw4EAAICAAILQQAhBCABKAKIASICQQAgAkEAShshCEEAIQMDQCADIAhGDQJBACECAkAgASgCgAEiBSADQQR0aigCACIGRQ0AA0ACQCACIANGBEBBACECIAEoAnwiBUEAIAVBAEobIQUDQCACIAVGDQQgBiABKAJ0IAJBBHRqIgcoAgBGBEAgBygCBEUNAwsgAkEBaiECDAALAAsgAkEEdCEHIAJBAWohAiAFIAdqKAIAIAZHDQELC0GBEyEDDAILIANBAWohAwwACwALIAAgA0EAEBNBfyEECyAEC2EBAX8gAEG4ARANIABB9wAQFyAAIAAoAkAvAbwBEBQgAEEREA0gAEHqAEF\u002FEBghASAAQbgBEA0gAEEIEBcgAEEAEBQgAEEbEA0gAEEkEA0gAEEAEBQgACABEBogAEEOEA0LUQECf0F\u002FIQJBASEDA0ACQCAAIAEQrQENACADRQRAIAAoAkBBfzYCmAILIAAoAhBBLEcEQEEAIQIMAQsgABAPDQAgAEEOEA1BACEDDAELCyACC5sdAgR+BX8CfwJAIABBEGoiB0H4ASAAKAIAEQMAIgVFDQAgBUEFakEAQfMBECwaIAVBBToABCAFQQE2AgAgACgCUCIIIAVBCGoiCTYCBCAFIABB0ABqNgIMIAUgCDYCCCAAIAk2AlAgBSAHIAAoAkBBA3QgACgCABEDACIINgIoIAhFBEAgByAFIAAoAgQRAAAMAQsgBSAANgIQIAAoAkgiByAFQRRqIgk2AgQgBSAAQcgAajYCGCAFIAc2AhQgACAJNgJIIAUgAEHkAWo2AtgBIAAoAkAiAEEAIABBAEobIQADQCAAIAZHBEAgCCAGQQN0akKAgICAIDcDACAGQQFqIQYMAQsLIAVCgICAgCA3A1AgBUKAgICAIDcDSCAFQoCAgIAgNwNAIAUgBUHgAWoiADYC5AEgBSAANgLgASAFQoCAgIAgEEEhASAFKAIoIAE3AwhBACEGIAUgBUEQQeyWAUEAQQBBACABEPwBIgE3AzAgAUIgiKdBdU8EQCABpyIAIAAoAgBBAWo2AgALIAUoAiggATcDaCAFEDMhASAFKAIoIAE3AxggBSABQZDKAUEDEB8gBUHYAGohBwNAIAUoAighACAGQQhHBEAgBkECdEHAnQFqKAIAIQggBSAFIAApAxgQQSIBQTcgBSAIEPsEQQMQFRogBSABQTMgBUEvEClBAxAVGiAHIAZBA3RqIAE3AwAgBkEBaiEGDAELCyAFIAApAwhBAhBHIQEgBSgCKCABNwMQIAUgBSABp0EAIAFC\u002F\u002F\u002F\u002F\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\u002FASAAIARB\u002F\u002FEAIANBABC+ARogBkEBaiEGDAELCyAAIAEQDCAAIAIQDCAAEDMhASAAKAIoIAE3A4ACIAAgAUHg8QFBGBAfIABBuBFBJyAAKAIoKQOAAhCyAxogB0FAayQAAkAgACgCECIAKAJAQS5PBEAgACgCRCgCuAgNAQsgAEHQnAFBLUEJEIEEGiAAKAJEIgBBKDYC8AkgAEEpNgLACSAAQSk2AqgJIABBKjYCkAkgAEErNgL4CCAAQSs2AuAICyAFEDMhASAFKAIoIAE3A+gCIAUgAUGwvwFBBBAfIAVBLEHO0QBBAUECQQAQggEiAUIgiKdBdU8EQCABpyIAIAAoAgBBAWo2AgALIAUgATcDUCAFIAFB8L8BQQgQHyAFIAFBztEAIAUoAigpA+gCEL8BIAUgBSkDMBBBIQEgBSgCKCABNwOAAyAFQRVBzzpBAUEFQQIgBSkDOBD8ASEBIAUgBSgCKCkDgANB8MABQQEQHyAFIAEgBSgCKCkDgANBAEEBEPQBIAUgARAMIAUgBRAzIgE3A6ABIAUgAUGAwQFBARAfIAUgBSkDoAEQQSEBIAUoAiggATcDmAMgBSABQZDBAUEDEB8gBSAFKQOgARBBIQEgBSgCKCABNwOoAyAFIAFBwMEBQQQQHyAFIAUpAzAQQSEBIAUoAiggATcDoAMgBUEVQaM6QQFBBUEDIAUpAzgQ\u002FAEhASAFIAUoAigpA6ADQYDCAUEBEB8gBSAFKAIoIgApA6ADIAApA6gDQQFBARD0ASAFIAEgBSgCKCkDoANBAEEBEPQBIAUgARAMIAUoAhAiAEEtNgKwAiAAQS42AqwCIABBLzYCqAIgAEEwNgKkAiAAQTE2AqACIAUQMyEBIAUoAiggATcDiAIgBSABQcDJAUEDEB8gBSAFQZsbQTJBASAFKAIoKQOIAhCsAUHwyQFBAhAfCyAFC5YCAQR\u002FIAAoAhAhBiABKAIAIgUtABAEfyAGIAUQgwQgBSgCFCADakGBgNzxeWwgBGpBgYDc8XlsBUEACyEHAn8gBSgCICIIIAUoAhxOBEAgACABIAIgCEEBahDWBQRAQX8gBS0AEEUNAhogBiAFEIwDQX8PCyABKAIAIQULIAUtABAEQCAFIAc2AhQgBiAFEIwDCyAFIAUoAiAiAUEBajYCICAFIAFBA3RqIgEgACADEBYiADYCNCABIAEoAjBB\u002F\u002F\u002F\u002FH3EgBEEadHI2AjAgBSAFLQARIABBH3ZyOgARIAEgASgCMEGAgIBgcSAFIAAgBSgCGHFBf3NBAnRqIgAoAgBB\u002F\u002F\u002F\u002FH3FyNgIwIAAgBSgCIDYCAEEACwvoAQEDfwJAAkAgACgCICICQSVJDQAgAkEtTQRAIAAoAkAiAS0AbkEBcQ0BIAJBLUcNAiABLwFsIgNBAXENASADQYD+A3FBgAZHDQIgASgCZA0CIAEoAgQiAUUNAiABLQBsQQFxDQEMAgsgAkEuRw0BIAAoAkQNACAAKAJAIgEvAWwiA0ECcQ0AAkAgA0EIdkEDaw4FAAICAgECCyABKAJkDQEgASgCBCIBRQ0BIAEvAWwiAUECcQ0AIAFBgP4DcUGADkcNAQsgAAJ\u002FIAAoAiQEQCAAQQE2AihBg38MAQsgAkHWAGsLNgIQCwvkAgEFfyMAQaABayIFJAAgASgCACEHIAVBgAE2AgggBSAFQRBqNgIMIAQEfyAFQSM6ABBBAQVBAAshBAJ\u002FAkADQCAFIAc2ApwBAn8gA0H\u002FAEwEQCAFKAIMIgYgBGogAzoAACAEQQFqDAELIAUoAgwiBiAEaiADEN0CIARqCyEEIAUgBSgCnAEiAyIIQQFqNgKcAQJAIAMtAAAiA0HcAEYEQEHcACEDIAgtAAFB9QBHDQEgBUGcAWpBARCXAiEDIAJBATYCAAwBCyADwEEATg0AIAdBBiAFQZwBahBRIQMLIAMQyQFFDQEgBSgCnAEhByAEIAUoAghBBmtJDQAgACgCACAFQQxqIAVBCGogBUEQahCvBUUNAAsgBSgCDCEGQQAMAQsgACgCACAGIAQQnQMLIQkgBUEQaiAGRwRAIAAoAgAoAhAiAEEQaiAGIAAoAgQRAAALIAEgBzYCACAFQaABaiQAIAkLRQAgACgCzAEgAUEDdGpBBGohAQNAIAEoAgAiAUEASEUEQCAAKAJ0IAFBBHRqIgEgASgCDEEEcjYCDCABQQhqIQEMAQsLC6kDAQx\u002FAkAgACgCECIEKALcAUEBdEECaiAEKALYAUwNACAEQRBqIglBBCAEKALUASIDQQFqIgh0IgUgBCgCABEDACIHRQ0AQQEgCHQhCiAHQQAgBRAsIQcgBCgC2AEiBUEAIAVBAEobIQtBHyADayEMA0AgBCgC4AEhAyAGIAtGRQRAIAMgBkECdGooAgAhAwNAIAMEQCADKAIoIQ4gAyAHIAMoAhQgDHZBAnRqIg0oAgA2AiggDSADNgIAIA4hAwwBCwsgBkEBaiEGDAELCyAJIAMgBCgCBBEAACAEIAc2AuABIAQgCjYC2AEgBCAINgLUAQsgACACQQN0QUBrECQiA0UEQEEADwsgA0ECOgAUIANBATYCECAEKAJQIgUgA0EYaiIGNgIEIAMgBEHQAGo2AhwgAyAFNgIYIAQgBjYCUCABBEAgASABKAIAQQFqNgIACyADQgA3AgAgAyABNgI8IANCADcCMCADIAI2AiwgA0EDNgIoIANBATsBICADQgA3AgggAyABQYGA3PF5bEH\u002F\u002F6OOBms2AiQgACgCECADQRBqIgAQjAMgAAsNACAAIAFB6\u002F8AEOIEC+8CAQZ\u002FQQEhCSADIQcCQANAIAcoAswBIAVBA3RqQQRqIQYCQAJAA0AgBigCACIFQQBIDQEgBygCdCIIIAVBBHQiCmoiC0EIaiEGIAsoAgAgBEcNAAsgCCAKaigCDEEEdkEPcSEIQQEhBiAJBEBBACEGDAILIAAgAyAHQQAgBSAEQQFBAUEAEJ8BIgVBAE4NAQwDCyAHKAIEIgZFBEACQCAHKAIgRQ0AQQAhBSAHKALAAiIGQQAgBkEAShshBgNAIAUgBkYNASAEIAcoAsgCIAVBA3RqIggoAgRGBEAgCC0AACIJQQR2IQggAyAHRgRAQQEhBgwFC0EBIQYgACADIAdBACAJQQF2QQFxIAUgBCAJQQJ2QQFxIAlBA3ZBAXEgCBD7ASIFQQBIDQYMBAUgBUEBaiEFDAELAAsACyAAIARBn48BEIEDDAMLIAcoAgwhBUEAIQkgBiEHDAELCyABIAY2AgAgAiAINgIAIAUPC0F\u002FC4gYAQh\u002FIwBBEGsiDCQAIAxBfzYCDCACQQhGIgkgAkHyAGtBA0kiC3IhDSABKALMASADQQN0akEEaiEDAkACQAJAAkACQAJAA0AgAygCACIDQQBOBEAgAiABKAJ0IANBBHRqIgooAgAiDkYEQCAEQX1xQbkBRwRAIAMhCQwECyADIQkgCi0ADEEBcUUNAyAFQTAQDiAFIAAgAhAWEBsgBUEAEA4MBwsgCSAOQdUARyALcnJFBEAgBUHYABAOIAUgA0H\u002F\u002FwNxECYgACABIAIgBCAFIAxBDGpBARDYAQsgCkEIaiEDDAELC0F\u002FIQkgA0F+RwRAIAEgAhD3ASEJCyANRSAJQQBOckUEQCAAIAEgAhDgBCEJCwJAIAJBzgBHIAlBAE5yRQRAIAEoAkhFDQEgACABEPACIQkLIAlBAE4NAQsCQCABKAIsBEAgASgCcCACRg0BCyADQX5HDQMMBAsgACABIAIQ7wIiCUEASA0BCwJAAkACQAJAIARBtwFrDggCAgADAAECAgcLAkAgCUGAgICAAnEiAw0AIAEoAnQgCUEEdGotAAxBAXFFDQAgBUEwEA4gBSAAIAIQFhAbIAVBABAODAcLAkAgBEG5AWsOAwIDAAcLAkAgAw0AIAEoAnQgCUEEdGooAgxB8AFxQcAARw0AIAVBCxAOIAVB2AAQDiAFIAlB\u002F\u002F8DcRAmIAVBzAAQDiAFIAAgAhAWIgIQGyAFQQQQDiAFIAAgAhAWEBsMBwsCQCAMKAIMQX9HDQAgBiAHKAIEEN8ERQ0AIAUgBiAHIAgCfyADBEAgCUGAgICAAmshCUHbAAwBC0HiAEHYACABKAJ0IAlBBHRqLQAMQQJxGwsgCRDdBCEIDAcLIAMEQCAFQfsAEA4gBSAAIAIQFhAbIAUgCUH\u002F\u002FwNxECYMBwsgBUH6ABAOIAUgACACEBYQGyAFIAlB\u002F\u002F8DcRAmDAYLIAVBBhAOCyAJQYCAgIACcQRAIAVB3ABB3ABB2wAgBEG9AUYbIARBuQFGGxAOIAUgCUH\u002F\u002FwNxECYMBQsgBQJ\u002FAkACQCAEQbkBaw4FAAEBAQABC0HZACABKAJ0IAlBBHRqLQAMQQJxRQ0BGkHjAEHkAEHZACACQQhGGyAEQb0BRxsMAQtB2AAgASgCdCAJQQR0ai0ADEECcUUNABpB5QBB4gAgBEG+AUYbCxAOIAUgCUH\u002F\u002FwNxECYMBAsgBUEJEA4MAwsgA0F+Rg0BCyABKAKQAUEASCACQfIAa0EDSXIgAkEIRnINACAFQdgAEA4gBSABLwGQARAmIAAgASACIAQgBSAMQQxqQQAQ2AELIAEoApQBQQBIIAJB8gBrQQNJciACQQhGckUEQCAFQdgAEA4gBSABLwGUARAmIAAgASACIAQgBSAMQQxqQQAQ2AELIAJB8gBrQQNJIQsgAkEIRiEOIAJBzgBHIQ8gASEKAkACQAJAAkADQCAKIgMoAgQiCkUEQCADIQoMAgsgCigCzAEgAygCDEEDdGpBBGohAwNAIAMoAgAiA0EATgRAIAIgCigCdCADQQR0aiINKAIAIhBGBEAgBEF9cUG5AUcEQCADIQkMBgsgAyEJIA0tAAxBAXFFDQUgBUEwEA4gBSAAIAIQFhAbIAVBABAODAgFAkAgDiAQQdUARyALcnINACANIA0oAgxBBHI2AgwgACABIApBACADQdUAQQBBAEEAEJ8BIgNBAEgNACAFQd4AEA4gBSADQf\u002F\u002FA3EQJiAAIAEgAiAEIAUgDEEMakEBENgBCyANQQhqIQMMAgsACwsgCUEATg0CIANBfkYiA0UEQCAKIAIQ9wEiCUEATg0DCyALRSACQQhHcUUEQCAAIAogAhDgBCIJQQBODQMLAkACQCAPDQAgCigCSEUNACAAIAoQ8AIhCQwBCwJAIAooAixFDQAgCigCcCACRw0AIAAgCiACEO8CIQkMAQsCQCADDQAgDiAKKAKQASIDQQBIIAtycg0AIAooAnQgA0EEdGoiAyADKAIMQQRyNgIMIAAgASAKQQAgCigCkAEgAygCAEEAQQBBABCfASEDIAVB3gAQDiAFIANB\u002F\u002F8DcRAmIAAgASACIAQgBSAMQQxqQQAQ2AELIA4gCigClAEiA0EASCALcnJFBEAgCigCdCADQQR0aiIDIAMoAgxBBHI2AgwgACABIApBACAKKAKUASADKAIAQQBBAEEAEJ8BIQMgBUHeABAOIAUgA0H\u002F\u002FwNxECYgACABIAIgBCAFIAxBDGpBABDYAQsgCigCIEUNAQwCCwsgCUEATg0BCyAKKAIgRQ0CIAJB8gBrQQNJIQ4gAkEIRiEQQQAhAwNAAkACQCAKKALAAiADSgRAIAIgCigCyAIgA0EDdGoiDygCBCINRgRAIAEgCkYNBiAAIAEgCkEAIA8tAAAiCUEBdkEBcSADIAIgCUECdkEBcSAJQQN2QQFxIAlBBHYQ+wEhAwwGCyANQdMAa0ECTwRAIA1B1QBHIA5yDQMMAgsgDkUNAQwCCyAJQQBIDQUMAwsgEA0AIAMhCyABIApHBEAgACABIApBACAPLQAAQQF2QQFxIAMgDUEAQQBBABD7ASELCyAFQd4AEA4gBSALQf\u002F\u002FA3EQJiAAIAEgAiAEIAUgDEEMaiANQdUARhDYAQsgA0EBaiEDDAALAAsCfyAJQYCAgIACcQRAIAooAoABIAlBgICAgAJrIgNBBHRqIgkgCSgCDEEEcjYCDCAAIAEgCkEBIAMgAkEAQQBBABCfAQwBCyAJQQR0IgMgCigCdGoiCyALKAIMQQRyNgIMIAAgASAKQQAgCSACIAooAnQgA2ooAgwiA0EBcSADQQF2QQFxIANBBHZBD3EQnwELIgNBAEgNAQsCQCAFAn8CQAJAAkACQAJAIARBtwFrDgcBAQAGAAMBCAsgASgCyAIgA0EDdGotAAAiCUEEcQRAIAVBMBAOIAUgACACEBYQGyAFQQAQDgwIC0EAIQoCQCAEQbkBaw4DAgYACAsgCUHwAXFBwABGBEAgBUELEA4gBUHeABAOIAUgA0H\u002F\u002FwNxECYgBUHMABAOIAUgACACEBYiAhAbIAVBBBAOIAUgACACEBYQGwwICwJAIAwoAgxBf0cNACAGIAcoAgQQ3wRFDQAgBSAGIAcgCEHmAEHeACAJQQhxGyADEN0EIQgMCAsgBUH8ABAOIAUgACACEBYQGyAFIANB\u002F\u002F8DcRAmDAcLIARBvQFGIQogBEG5AWsOBQACAgIAAgtB3wAgASgCyAIgA0EDdGotAABBCHFFDQIaQegAQd8AIAJBCEYbQecAIAobDAILIAVBBhAOC0HmAEHeACABKALIAiADQQN0ai0AAEEIcRsLEA4gBSADQf\u002F\u002FA3EQJgwCCyAFQQkQDgwBCwJAAkACQAJAAkAgBEG3AWsOBwICAgQAAQMFCwJAIAwoAgxBf0cNACAGIAcoAgRqIgMtAAFBPUcNAAJAAkAgAy0AACIDQRlrDgUBAgICAQALIANBswFGDQAgA0EWRw0BCyABLQBuQQFxIgkEQCAFQTYQDiAFIAAgAhAWEBsLIAYgCGotAABBPEYEQCAFQTgQDiAFIAAgAhAWEBsgCEEBaiEICyAGIAcoAgQiB0EFayIDaiILLQAAQbYBRw0GIAYgB2otAAAhBAJAAkAgCQRAQTshCgJAAkACQAJAIARBGWsOBQIBAQEDAAtBFSEJIARBFkYNBCAEQbMBRg0FCxABAAtBGCEJDAILQRshCQwBC0E5IQpBESEJIARBFkcNAQsgCyAJOgAAIAdBBGshAwsgB0ECaiEEIAMgBmoiByAKOgAAIAcgACACEBY2AAEgA0EFaiEDA0AgAyAETg0GIAMgBmpBswE6AAAgA0EBaiEDDAALAAsgBUH9ABAOIAUgACACEBYQGwwECyAFQQYQDiAFQTgQDiAFIAAgAhAWEBsMAwsgBSAEQYABc0H\u002FAXEQDiAFIAAgAhAWEBsMAgsgBUE6EA4gBSAAIAIQFhAbDAELIAVBmgEQDiAFIAAgAhAWEBsLIAwoAgwiAEEATgRAIAVBtgEQDiAFIAAQGyABKAKkAiAAQRRsaiAFKAIENgIICyAMQRBqJAAgCA8LQbzDAEGo7ABB5OoBQcrMABAAAAshACAAQpADgVCtQu4CQu0CIABCA4NQGyAAQuQAgVCtfXwLWQEBfiAAQu0CfiAAQrEPfUICh3wgAELtDn0iASABQuQAgSIBfSABQj+HQpx\u002Fg3xCnH9\u002FfCAAQsEMfSIAIABCkAOBIgB9IABCP4dC8HyDfEKQA398QsrxK30LiwIDBX8BfAF+IwBB4ABrIgUkAEKAgICA4AAhCwJAIAAgASAFQRBqIARBD3EiCCAEQQh2QQ9xIgdFENUDIgZBAEgNACACIARBBHZBD3EgB2siBCACIARIGyIEQQAgBEEAShshCUEAIQQDQCAEIAlHBEAgACAFQQhqIAMgBEEDdGopAwAQQg0CIAVBEGogBCAHakEDdGogBSsDCCIKnTkDACAGQQAgCr1CgICAgICAgPj\u002FAINCgICAgICAgPj\u002FAFIbIQYgBEEBaiEEDAELC0QAAAAAAAD4fyEKIAAgASAGRSACQQBMcgR8RAAAAAAAAPh\u002FBSAFQRBqIAgQ6wMLEPkEIQsLIAVB4ABqJAAgCwvHAQEBfwJAAkAgAUKAgICAcFQNACABpyIDLwEGQQpHDQAgACADKQMgEAwgAwJ+IAK9IgECfyACmUQAAAAAAADgQWMEQCACqgwBC0GAgICAeAsiALe9UQRAIACtDAELQoCAgIDAfiABQoCAgIDAgYD8\u002FwB9IAFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\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\u002FAHxC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINQGxDyAiIARQRAQoCAgIAwDwsgACkDKCIBQiCIp0F1TwRAIAGnIgAgACgCAEEBajYCAAsgAQu7BQIDfgd\u002FIwBBEGsiCyQAQoCAgIDgACEHAkAgACABIARBImoQWiICRQ0AIAIoAgBFIAMpAwAiBUIAIAVCIIinQQdrQW5PGyAFIAVCgICAgMCBgPz\u002FAHxC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINQGyIFQv\u002F\u002F\u002F\u002F9vVnJFBEAgABAiDAELQoCAgIAwIQYgBEEBcUUEQCADKQMIIQYLAkAgACACIAUQ8gIiAwRAIAAgAykDKBAMDAELIABBMBAkIgNFDQEgAyACNgIIIANCATcDAAJAIAIoAgAEQCADIAWnIgQoAhg2AgwgBCADNgIYDAELIAVCIIinQXVJDQAgBaciBCAEKAIAQQFqNgIACyADIAU3AyAgAigCECIJIAIoAhQiBEEBayAFENkDcUEDdGoiCCgCACIKIANBGGoiDDYCBCADIAg2AhwgAyAKNgIYIAggDDYCACACKAIEIgggA0EQaiIKNgIEIAMgAkEEaiIMNgIUIAMgCDYCECACIAo2AgQgAiACKAIMQQFqIgg2AgwgCCACKAIYSQ0AIAAgCUEEIARBAXQgBEEBRhsiAEEDdCALQQxqEKcBIghFDQAgCygCDEEDdiAAaiEEQQAhAANAIAAgBEZFBEAgCCAAQQN0aiIJIAk2AgQgCSAJNgIAIABBAWohAAwBCwsgBEEBayEKIAJBCGohAANAIAwgACgCACIARwRAIABBDGsoAgBFBEAgCCAAKQMQENkDIApxQQN0aiIJKAIAIg0gAEEIaiIONgIEIAAgCTYCDCAAIA02AgggCSAONgIACyAAQQRqIQAMAQsLIAIgBDYCFCACIAg2AhAgAiAEQQF0NgIYCyAGQiCIp0F1TwRAIAanIgAgACgCAEEBajYCAAsgAyAGNwMoIAFCIIinQXVPBEAgAaciACAAKAIAQQFqNgIACyABIQcLIAtBEGokACAHCz8BAX8gAUEAIAFBAEobIQEDQAJAIAEgA0YEQEF\u002FIQMMAQsgACADQQN0aigCBCACRg0AIANBAWohAwwBCwsgAwv\u002FBAICfwR+AkAgAkL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECIMAQsCQCAAIAJBPhBuBH9CgICAgDAhBUKAgICAMCEGQoCAgIAwIQggACACQT4gAkEAEBEiB0KAgICAcINCgICAgOAAUQ0BQYECQYACIAAgBxAnGwVBAAshAyAAIAJBPxBuBEBCgICAgDAhBUKAgICAMCEGQoCAgIAwIQggACACQT8gAkEAEBEiB0KAgICAcINCgICAgOAAUQ0BQYIEQYAEIAAgBxAnGyADciEDCyAAIAJBwAAQbgRAQoCAgIAwIQVCgICAgDAhBkKAgICAMCEIIAAgAkHAACACQQAQESIHQoCAgIBwg0KAgICA4ABRDQFBhAhBgAggACAHECcbIANyIQMLQoCAgIAwIQYCQCAAIAJBwQAQbkUEQEKAgICAMCEIDAELQoCAgIAwIQUgACACQcEAIAJBABARIghCgICAgHCDQoCAgIDgAFEEQAwCCyADQYDAAHIhAwsCQAJAIAAgAkHCABBuRQ0AQoCAgIAwIQUgA0GAEHIhAyAAIAJBwgAgAkEAEBEiBkKAgICAcIMiB0KAgICAMFENAEG+MCEEIAdCgICAgOAAUQ0BIAAgBhA1RQ0BCwJAIAAgAkHDABBuRQRAQoCAgIAwIQUMAQsgA0GAIHIhAyAAIAJBwwAgAkEAEBEiBUKAgICAcIMiAkKAgICAMFENAEGvMCEEIAJCgICAgOAAUQ0BIAAgBRA1RQ0BCyADQYAwcQRAQb\u002FYACEEIANBgMQAcQ0BCyABIAU3AxggASAGNwMQIAEgCDcDCCABIAM2AgBBAA8LIAAgBEEAEBILIAAgCBAMIAAgBhAMIAAgBRAMC0F\u002FC7kDAgl\u002FA34jAEEgayIEJAAgBEEANgIMIARBADYCCAJAIAAgASACIAFBABARIg1CgICAgHCDQoCAgIDgAFEEQCANIQEMAQsCQAJAIA1CgICAgHBUDQAgACANEMwBIglBAEgNAQJAIAkEQCAAIARBDGogDRDKAUUNAQwDCyAAIARBCGogBEEMaiANp0EREH0hCyAEKAIIIQYgC0EASA0CCyAEKAIMIQgDQCAHIAhGDQECQCAJBEAgACAHEOwFIgVFDQQMAQsgACAGIAdBA3RqKAIEEBYhBQsCfwJAIAAgDSAFIAMQhQUiDkKAgICAcIMiD0KAgICAMFIEQCAPQoCAgIDgAFINASAAIAUQEAwFCyAAIA0gBUEAEM0BDAELIAAgDSAFIA5BBxAVCyEMIAAgBRAQIAdBAWohByAMQQBODQALDAELIAAgBiAIEFtBACEGIAAgAhBSIg5CgICAgHCDQoCAgIDgAFENACAEIA03AxggBCAONwMQIAAgAyABQQIgBEEQahAcIQEgACAOEAwgACANEAwMAQsgACAGIAQoAgwQWyAAIA0QDEKAgICA4AAhAQsgBEEgaiQAIAELMAEBfyAAKAI4IAFBAnRqKAIAIgEgASgCACICQQFrNgIAIAJBAUwEQCAAIAEQmwMLC44DAQR\u002FIwBBQGoiAyQAAkAgACABEEoiAUKAgICAcINCgICAgOAAUQ0AAkAgACADQSRqIgIgAaciBCgCBEH\u002F\u002F\u002F\u002F\u002FB3FBAmoQPg0AIAJBIhA8DQBBACECIANBADYCPANAIAQoAgRB\u002F\u002F\u002F\u002F\u002FwdxIAJKBEACQAJAAkACQAJAAkACQAJAAkACQCAEIANBPGoQxgEiAkEIaw4GBQIEAQYDAAsgAkEiRiACQdwARnINBgsgAkGA8P8AcUGAsANHIAJBIE9xDQYgAyACNgIAIANBEGoiAkEQQf4PIAMQSBogA0EkaiACEIMBDQoMBwtB9AAhAgwEC0HyACECDAMLQe4AIQIMAgtB4gAhAgwBC0HmACECCyADQSRqIgVB3AAQPA0EIAUgAhA8RQ0BDAQLIANBJGogAhCxAQ0DCyADKAI8IQIMAQsLIANBJGoiAkEiEDwNACAAIAEQDCACEDchAQwBCyAAIAEQDCADKAIkKAIQIgBBEGogAygCKCAAKAIEEQAAQoCAgIDgACEBCyADQUBrJAAgAQvdBgIMfwd+IwBBMGsiAiQAAn4CQAJAIAEpAygiDkKAgICAcINCgICAgJB\u002FUQRAIAEpAwgiEEKAgICAcINCgICAgJB\u002FUQ0BCyAAQcbJAEEAEBIMAQsgASkDICESIAEpAxghDyABKQMAIRMgACACQQxqQQAQPhogAkEANgIkAkAgD0KAgICAcINCgICAgDBSBEAgACACQSRqIA8QygENAQsgACACQShqIBMQygENACAAIAJBLGogASkDEBB1QQBIDQAgEKchCCASQoCAgIBwgyEQIAIoAiwiDCACKAIoaiENIA6nIgRBEGohByAEKAIEQf\u002F\u002F\u002F\u002F8HcSEKIAIoAiQhC0EAIQEDQAJAAkACQCAEQSQgARCgASIGQQBIDQAgBkEBaiIDIApPDQAgAkEMaiAEIAEgBhBLGiAGQQJqIQECQAJAAkACQAJ\u002FIAQpAgRCgICAgAiDUCIJRQRAIAcgA0EBdGovAQAMAQsgAyAHai0AAAsiA0Ekaw4EAAMFAQILIAJBDGpBJBA8GgwGCyACQQxqIAggDSAIKAIEQf\u002F\u002F\u002F\u002F8HcRBLGgwFCyADQeAARg0DCwJAIANBMGsiBUEJTQRAAkAgASAKTw0AAn8gCUUEQCAHIAFBAXRqLwEADAELIAEgB2otAAALIgNBMGtBCUsNACAGQQNqIAEgAyAFQQpsaiIBQTBLIAFBMGsiAyALSXEiCRshASADIAUgCRshBQsgBUUgBSALT3INASAAIA8gBa0QbCIOQoCAgIBwgyIRQoCAgIAwUQ0FIBFCgICAgOAAUQ0GIAJBDGogDhCEAUUNBQwGCyADQTxHIBBCgICAgDBRcg0AIARBPiABEKABIgNBAEgNACAAIAQgASADEI4BIg5CgICAgHCDQoCAgIDgAFENBSAAIBIgDhBOIg5CgICAgHCDIhFCgICAgDBSBEAgEUKAgICA4ABRDQYgAkEMaiAOEIQBDQYLIANBAWohAQwECyACQQxqIAQgBiABEEsaDAMLIAJBDGoiACAEIAEgBCgCBEH\u002F\u002F\u002F\u002F\u002FB3EQSxogABA3DAULIAJBDGogExCNAUUNAQwCCyACQQxqIAhBACAMEEsaDAALAAsgAigCDCgCECIAQRBqIAIoAhAgACgCBBEAAAtCgICAgOAACyEUIAJBMGokACAUC28BA38DQCAAKAIoIgFBAExFBEAgACABQQFrIgE2AiggACgCACAAKAIEIAFBA3RqKQMAEAwMAQsLIAAoAgQiASAAQQhqIgJHBEAgACgCACgCECIDQRBqIAEgAygCBBEAAAsgAEEENgIsIAAgAjYCBAu8CwIHfg1\u002FIwBBEGsiECQAAkAgACABEPUCIgJFBEBCgICAgOAAIQQMAQtCgICAgOAAIQQgACADKQMAECUiCEKAgICAcINCgICAgOAAUQ0AQQAhA0KAgICAICEFQoCAgIAwIQcCQAJAIAAgAUHWACABQQAQESIEQoCAgIBwg0KAgICA4ABRDQAgACAQQQhqIAQQoQENACACKAIEQRBqIgstAAAiDkEhcSIRRQRAIBBCADcDCAsCQCALLQABIgxBAE0NACAAIAxBA3QQJCIDDQBBACEDDAELAkACQCAQKQMIIgkgCKciFCkCBCIEQv\u002F\u002F\u002F\u002F8Hg1UNACADIAsgFEEQaiISIAmnIASnIgJB\u002F\u002F\u002F\u002F\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\u002F\u002F\u002F\u002F\u002F29WDQEgACABEAwgAEH6HkEAEBILIAVBADYCAAwBCyAFQQI2AgAgASEICyAGQRBqJAAgCAsNACAAIAEgAkEAELQBC18BAX8gAUEQaiEDAkAgAS0AB0GAAXEEQCAAIAMgAkEBdBAeGgwBC0EAIQEgAkEAIAJBAEobIQIDQCABIAJGDQEgACABQQF0aiABIANqLQAAOwEAIAFBAWohAQwACwALC6gBAQV\u002FIACnIgMoAhAiAUEwaiEEIAEgASgCGEF\u002Fc0ECdEGgfnJqKAIAIQEDQCABRQRAQQAPCyAEIAFBAWsiBUEDdGoiASgCACECIAEoAgRBN0cEQCACQf\u002F\u002F\u002Fx9xIQEMAQsLQQEhAQJAIAJB\u002F\u002F\u002F\u002F\u002FwNLDQAgAygCFCAFQQN0aikDACIAQoCAgIBwg0KAgICAkH9SDQAgAKcoAgRB\u002F\u002F\u002F\u002F\u002FwdxQQBHIQELIAEL1wMBBn8jAEEQayIHJAAgBUEEaiEJAkACQANAQQAhBiABQQA2AgAgAkEANgIAIAUoAggiCEEAIAhBAEobIQoDQCAGIApHBEACQCAFKAIAIAZBA3RqIgsoAgAgA0cNACALKAIEIARHDQBBAiEGDAULIAZBAWohBgwBCwsgACAFQQggCSAIQQFqEGQEQEF\u002FIQYMAwsgBSAFKAIIIgZBAWo2AgggBSgCACAGQQN0aiIGIAM2AgAgBiAAIAQQFiIINgIEIAMgCBC6BSIGBEAgBigCCEUNAiAGKAIMIgRB\u002FgBGDQIgAygCECAGKAIAQQN0aigCBCEDDAELCyAIQRZHBEBBACEEA0AgAygCLCAESgRAAkACQCAAIAdBDGogB0EIaiADKAIQIAMoAiggBEECdGooAgBBA3RqKAIEIAggBRCVBSIGQQFqDgUGAAEBBgELIAIoAgAiBgRAIAEoAgAgBygCDEYEQCAHKAIIKAIMIAYoAgxGDQILIAFBADYCACACQQA2AgBBAyEGDAYLIAEgBygCDDYCACACIAcoAgg2AgALIARBAWohBAwBCwtBACEGIAIoAgANAgtBASEGDAELIAEgAzYCACACIAY2AgBBACEGCyAHQRBqJAAgBguwAwELfyABKAIIIgVBACAFQQBKGyEGAkACQANAIAQgBkcEQCAEQQJ0IQ4gBEEBaiEEIA4gASgCAGooAgAgAkcNAQwCCwtBfyEHIAAgAUEEIAFBBGogBUEBahBkDQEgASABKAIIIgRBAWo2AgggASgCACAEQQJ0aiACNgIAIAFBEGohCiABQQxqIQhBACEFA0AgAigCICAFTARAQQAhBANAIAQgAigCLE4NAyAEQQJ0IQMgBEEBaiEEIAAgASACKAIQIAMgAigCKGooAgBBA3RqKAIEQQEQlgVFDQALDAMLAkAgA0EAIAIoAhwgBUEUbGoiBigCECILQRZGGw0AQQAhBCABKAIUIglBACAJQQBKGyEMAkADQCAEIAxHBEAgCCgCACAEQQxsaiINKAIAIAtGDQIgBEEBaiEEDAELCyAAIAhBDCAKIAlBAWoQZA0EIAEgASgCFCIEQQFqNgIUIAEoAgwgBEEMbGoiBCAGKAIQNgIAAkAgA0UEQCAGKAIIRQ0BCyAEQQA2AggMAgsgBCAGNgIIDAELIA1BADYCCAsgBUEBaiEFDAALAAtBACEHCyAHC6sCAQR\u002FIwBBEGsiAyQAAkACQAJAAkACQAJAAkACQCABQiCIpyICQQpqDgoCBAMABAQEBQEBBAsgAaciAikCBEKAgICAgICAgMAAVA0FIAAgAhCbAwwGCyAALQBoQQJGDQUgAaciAigCCCIEIAIoAgwiBTYCBCAFIAQ2AgAgAkEANgIMIAAoAlwhBCAAIAJBCGoiBTYCXCACIAQ2AgwgAiAAQdgAajYCCCAEIAU2AgAgAC0AaA0FIAAQ5gUMBQsgAaciAkEEahAZIABBEGogAiAAKAIEEQAADAQLIAAgAacQmwMMAwsgAyACNgIAIwBBEGsiACQAIAAgAzYCDEGQ0wRBv5MBIAMQkwQgAEEQaiQACxABAAsgAEEQaiACIAAoAgQRAAALIANBEGokAAt\u002FAQJ\u002FAkAgASgCSCICBEAgASgCZCIDRQ0BA0AgAiADT0UEQCAAIAIpAwAQISACQQhqIQIgASgCZCEDDAELCyAAQRBqIAEoAkggACgCBBEAACABQQA2AkgLIAAgASkDQBAhIAAgASkDEBAhDwtB5PUAQajsAEHwkgFBhtQAEAAAC2UBBH8DQCACIAVKBEAgASAFaiIGLQAAIgRBE2ogBCAEQbMBSxsgBCADG0ECdCIEQeCuAWotAAAhByAEQeOuAWotAABBF2tB\u002FwFxQQRNBEAgACAGKAABEMcBCyAFIAdqIQUMAQsLC0gBA38gAkEAIAJBAEobIQIDQCACIANGBEBBAA8LIAEgA2ohBCADQQF0IQUgA0EBaiEDIAAgBWovAQAgBC0AAGsiBEUNAAsgBAtYAQJ\u002FIAEEQAJAIAAoAgggACgCBCIDIAFqSQ0AIAEQjwIiAUUNACAAIANBCGo2AgQgACAAKAIAQQFqNgIAIAEhAgsgAg8LQc2HAUGo7ABBtQ1B9OsAEAAAC0wBA38gACgCIEEYaiEBAkADQCABIgMoAgAiAkUNASACQQxqIQEgACACRw0ACyADIAAoAgw2AgAPC0GC9gBBqOwAQbPvAkH4zAAQAAAL4wQBCX8gACAAQeAAaiIENgJkIAAgBDYCYCAAQdQAaiECIABB0ABqIQcgAEHkAGohBSAAKAJUIQMDQCAHIAMiAUYEQAJAAkADQAJAIAcgAigCACIBRgRAIAUhAQNAIAEoAgAiASAERg0CIAAgAUEIa0ENEN0DIAFBBGohAQwACwALIAFBCGsiAygCAEEATA0CIAFBBGsiAiACLQAAQQ9xOgAAIAAgA0EOEN0DIAFBBGohAgwBCwsgAEECOgBoIABB2ABqIQMDQCAEIAUoAgAiAUcEQCABQQRrLQAAQQ9xIgJBBEtBASACdEETcUVyBEAgASgCACICIAEoAgQiBzYCBCAHIAI2AgAgAUEANgIAIAMoAgAiAiABNgIEIAEgAzYCBCABIAI2AgAgAyABNgIADAIFIAAgAUEIaxCLBQwCCwALCyAAQQA6AGggAEEQaiEEIAAoAlwhAQNAIAEgA0cEQCABQQRrLQAAQQ9xIgVBBEtBASAFdEETcUVyDQMgASgCBCEJIAQgAUEIayAAKAIEEQAAIAkhAQwBCwsgACADNgJcIAAgAEHYAGo2AlgPC0HmhAFBqOwAQY0tQarAABAAAAtBzvMAQajsAEHFLUHjJxAAAAsgAUEEayIGLQAAQRBJBEAgASgCBCEDIAAgAUEIayIIQQ8Q3QMgBiAGLQAAQQ9xQRByOgAAIAgoAgANASABKAIAIgYgASgCBCIINgIEIAggBjYCACABQQA2AgAgBCgCACIGIAE2AgQgASAENgIEIAEgBjYCACAEIAE2AgAMAQsLQeuGAUGo7ABB6ixBs8wAEAAACxgBAX8gAacoAiAiAwRAIAAgAyACEQAACwsyACAAIAEQqgIiAUKAgICAcINCgICAgMB+UQR+IABB2cMAQQAQigJCgICAgOAABSABCwsMACAAIAEQtQNBAEwLSAEBfyMAQRBrIgIkAAJAIAFBIHEEQCAAEHAMAQsgAkH+N0GmO0H5ECABQQFxGyABQQJxGzYCACAAQZArIAIQRAsgAkEQaiQAC8oIAhN\u002FAX4jAEEgayILJABCgICAgOAAIRYCQCAAIAtBDGogARCuAiIHRQ0AIAcoAgQhECAHKAIIQYCAgIB4RgRAIAdBADYCBAsjAEGAAWsiAyQAIANB6ABqIgYgBygCACIMQZUDEJ0CAn8CQAJAIAcoAggiBUH\u002F\u002F\u002F\u002F\u002FB0YEQCAGQbvzABDeAgwBCyAHKAIEBEAgA0HoAGpBLRAOIAcoAgghBQsgBUH+\u002F\u002F\u002F\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\u002FcSACQcAAciAEKAIAQQBIGwtB\u002FwFxEA4LIAhBAWohCAwBCwshBgNAAkACQAJAAkACQAJAAkACQAJAAkACQCAPIAoiAkoEQCACIAIgDGoiCS0AACIEQQJ0QeCuAWotAAAiEGohCgJAAkACQAJAAkACQAJAAkACQAJAIARBswFrDhQWBQ8EAQEBAQIBAQEDAwMDDQwWCwALIARBEWsiAkEfSw0QQQEgAnRBgIDQjHxxDREgAkUNDSACQQVHDRAgA0F\u002FNgIYIANCyfqAgOABNwMQIANBnAZqIAogA0EQahAjRQ0TIANBwAZqIgQgAy0ArAYQDiADKAKkBiEKIAMoAqgGIgJBf0YgAiAGRnINFSABIAEoAtwCQQFqNgLcAiAEQcYBEA4gBCACEBsgAiEGDBULIAAgASAJKAABIgIgCS8ABSAEIANBwAZqQQBBACAKEPUEIQogACACEBAMFAsgCS8ACSEFIAkoAAEhAiABKAKkAiAJKAAFQRRsaiIEIAQoAgBBAWs2AgAgACABIAIgBUG7ASADQcAGaiAMIAQgChD1BCEKIAAgAhAQDBMLIAAgA0HYBmogA0HcBmogASAJKAABIgcgCS8ABSIJEPQEIgVBAEgNBSADKALcBiIIRQ0EAkACQAJAAkACQAJAIARBvwFrDgQAAAECAwsCQAJAAkAgCEEFaw4FAAECBgIFCyAEQcABRgRAIANBwAZqQREQDgsgA0HABmoiAiADKALYBiAFEPoBIAJBxAAQDgwGCyADQcAGaiICIAMoAtgGIAUQ+gEgAkEsEA4gBEHAAUYNBSACQQ8QDgwFCyAEQcABRgRAIANBwAZqQREQDgsgA0HABmoiAiADKALYBiAFEPoBIAJBLBAOIAJBJBAOIAJBABAmDAQLAkACQAJAIAhBBWsOBQABAQICBAsgA0HABmoiAiADKALYBiAFEPoBIAJBxQAQDgwFCyADQcAGaiICQTAQDiACIAAgBxAWEBsgAkEAEA4MBAsgACAHEPMEIgRFDQkgACADQdgGaiADQdwGaiABIAQgCRD0BCEFIAAgBBAQIAVBAEgNCSADKALcBkEIRw0HIANBwAZqIgIgAygC2AYgBRD6ASACQRsQDiACQR4QDiACQSwQDiACQR0QDiACQSQQDiACQQEQJiACQQ4QDgwDCyADQcAGaiICIAMoAtgGIAUQ+gEgAkGyARAODAILEAEACyADQcAGaiICQTAQDiACIAAgBxAWEBsgAkEAEA4LIAAgBxAQDBILIAkoAAEiAkEASA0BIAIgASgCrAJODQEgASgCpAIgAkEUbGogAygCxAYgEGo2AggMDwtBACEFQQAhAiAJLwABIhAgASgC8AFHDQoDQCABKAKIASACSgRAIAEoAoABIAJBBHRqIgcoAgxBAE4EQCADQcAGaiIEQQMQDiAEIAcoAgxBCHUQGyAEQdwAEA4gBCACQf\u002F\u002FA3EQJgsgAkEBaiECDAELCwNAIAEoAnwgBUoEQAJAIAEoAnQgBUEEdGoiBCgCBA0AIAQoAgxBAEgNACADQcAGaiICQQMQDiACIAQoAgxBCHUQGyACQdkAEA4gAiAFQf\u002F\u002FA3EQJgsgBUEBaiEFDAELCwJAIAEoApQDRQRAQX8hCQwBCyABQX8Q0QMhCSADQcAGaiICQQgQDiACQeoAEA4gAiAJEBsgASAJQQEQYxogASABKALQAkEBajYC0AILQQAhCANAAkACQCABKAL0ASAISgRAQQAhAiABKALAAiIEQQAgBEEAShshByABKAL8ASAIQQR0aiIELQAEIgVBAXEhCwJ\u002FA0AgAiAHRwRAIAEoAsgCIAJBA3RqKAIEIg4gBCgCDEYEQEEAIQsgAiEHQQIMAwsgDkHTAGtBAU0EQCADQcAGaiIFQd4AEA4gBSACQf\u002F\u002FA3EQJkEBIQsgAiEHQQEMAwUgAkEBaiECDAILAAsLIAEoAiRBAEchDiAFQQJxIhFFIAQoAgBBAE5xDQIgA0HABmoiAkE+EA4gAiAAIAQoAgwQFhAbIAJBgH9Bgn8gBUEEcRtBACARGyAOckGDAXEQDkEACyEFIAtFIAQoAgAiAkEASHENAgJAIAJBAE4EQCADQcAGaiICQQMQDiACIAQoAgAQGyAEKAIMQf0ARw0BIAJBzQAQDiACQRYQGwwBCyADQcAGakEGEA4LAkACQAJAIAVBAWsOAgEAAgsgA0HABmoiAkHfABAOIAIgB0H\u002F\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\u002FRgRAIAAgAiADKALEBkEEa0EEEO4CRQ0dCyADQcAGaiAHEA4gBCECDB0LIANCqYCAgHA3A3AgA0GcBmogBCADQfAAahAjRQ0TIAQhAiADKAKoBiIEQQBIDRwgAyAENgLYBgwcCyADQqyBgIBwNwOgASADQZwGaiAEIANBoAFqECMEQAJAIAMoAqgGIgJBAEgEQCADKALYBiECDAELIAMgAjYC2AYLIAEgAygCxAYgAhAuIANBwAZqQfMBEA4MGAsgA0F\u002FNgKYASADQq2BgICg7Ro3A5ABIANBnAZqIAQgA0GQAWoQI0UNAAJAIAMoAqgGIgVBAEgEQCADKALYBiEFDAELIAMgBTYC2AYLIAEgAygCxAYgBRAuIANBwAZqQfMBEA4gAygCrAZBAXMhBQwYCyADQurWgYBwNwOAASADQZwGaiAEIANBgAFqECNFDREgBUEKRiEJDA0LAkAgBigAASIGQYCAgIB4ckGAgICAeEYNACADQo2BgIBwNwPgASADQZwGaiAEIANB4AFqECNFDQAgAygCqAYiAkEATgRAIAMgAjYC2AYLIANCjoCAgHA3A9ABIANBnAZqIAMoAqQGIANB0AFqECMEQCADKAKoBiICQQBIDRcgAyACNgLYBgwXCyABIAMoAsQGIAMoAtgGEC4gA0HABmpBACAGaxDOAwwWCyADQo6AgIBwNwPAASADQZwGaiAEIANBwAFqECMEQCADKAKoBiICQQBIDRYgAyACNgLYBgwWCyADQurWgYBwNwOwASADQZwGaiAEIANBsAFqECMEQCAGQQBHIQkMDQsgASADKALEBiADKALYBhAuIANBwAZqIAYQzgMgBCECDBkLIAYoAAEiAkH\u002FAUoNDyABIAMoAsQGIAMoAtgGEC4gA0HABmoiBiAFQcMAa0H\u002FAXEQDiAGIAJB\u002FwFxEA4gBCECDBgLIAYoAAEhAiADQo6AgIBwNwPwASADQZwGaiAEIANB8AFqECMEQCAAIAIQECADKAKoBiICQQBIDRQgAyACNgLYBgwUCyACQS9HDQ4gASADKALEBiADKALYBhAuIANBwAZqQcEBEA4gBCECDBcLIANCyYCAgHA3A6gCIANC2Lb5gnA3A6ACIANBnAZqIgUgBCICIANBoAJqECMNFiADQX82ApgCIANCgYSQgJAJNwOQAiAFIAIgA0GQAmoQIw0WIANBfzYCiAIgA0KGjqjIkAk3A4ACIAUgAiADQYACahAjDRYMDQsgA0KOgICAcDcD8AIgA0GcBmogBCADQfACahAjBEAgAygCqAYiAkEASA0SIAMgAjYC2AYMEgsgA0KogICAcDcD4AIgA0GcBmogBCADQeACahAjBEACQCADKAKoBiICQQBIBEAgAygC2AYhAgwBCyADIAI2AtgGCyABIAMoAsQGIAIQLiADQcAGakEpEA4MEgsgA0Lq1oGAcDcD0AJBACEJIANBnAZqIgUgBCADQdACahAjDQggA0KsgYCAcDcDwAIgBSAEIANBwAJqECMEQAJAIAMoAqgGIgJBAEgEQCADKALYBiECDAELIAMgAjYC2AYLIAEgAygCxAYgAhAuIANBwAZqQfIBEA4MEgsgA0F\u002FNgK4AiADQq2BgICg7Ro3A7ACIANBnAZqIAQgA0GwAmoQI0UNDAJAIAMoAqgGIgVBAEgEQCADKALYBiEFDAELIAMgBTYC2AYLIAEgAygCxAYgBRAuIANBwAZqQfIBEA4gAygCrAZBAXMhBQwSCyADQX82AogDIANCw\u002FaAgOABNwOAAyADQZwGaiAEIANBgANqECNFDQsCQCADKAKoBiICQQBIBEAgAygC2AYhAgwBCyADIAI2AtgGCyABIAMoAsQGIAIQLiADQcAGaiICIAMtAKwGEA4gAiADKAK8BhAbDBALIANBfzYCuAMgA0LZuP2CcDcDsAMgA0GcBmogBCADQbADahAjRQ0KIAMoAqgGIgJBAE4EQCADIAI2AtgGCyADQo6AgIBwNwOgAyADKAKsBiIFQQFqIQYCQCADQZwGaiADKAKkBiICIANBoANqECMEfyADKAKoBiICQQBOBEAgAyACNgLYBgsgAyADKAKwBjYClANBfyEEIANBfzYCmAMgAyAFQQFrNgKQAyADQZwGaiADKAKkBiICIANBkANqECNFDQEgAygCpAYhAiADKAKoBgVBfwshBCAGIQULIAEgAygCxAYgAygC2AYQLiADQcAGaiAFIAMoArAGEFkgBEEASA0TIAMgBDYC2AYMEwsgBi8AASICQf8BSw0JIANCjoCAgHA3AswEIAMgAjYCyAQgA0KRpYKAkAs3A8AEAkAgA0GcBmoiBiAEIANBwARqECNFBEAgA0KOgICAcDcDsAQgAyACNgKsBCADQdkANgKoBCADQo+hgoCQAjcDoAQgBiAEIANBoARqECNFDQELAkAgAygCqAYiBUEASARAIAMoAtgGIQUMAQsgAyAFNgLYBgsgASADKALEBiAFEC4gA0HABmoiBEGUAUGTASADKAKsBkF9cUGQAUYbEA4gBCACQf8BcRAODA8LIANCjoCAgHA3ApQEIAMgAjYCkAQgA0KRgICAkAs3A4gEIANChICAgOATNwOABCADQZwGaiAEIANBgARqECMEQAJAIAMoAqgGIgVBAEgEQCADKALYBiEFDAELIAMgBTYC2AYLIAEgAygCxAYgBRAuAkAgAygCvAZBL0YEQCADQcAGakHBARAODAELIANBwAZqIgRBBBAOIAQgAygCvAYQGwsgA0HABmoiBEGVARAOIAQgAkH\u002FAXEQDgwPCyADQo6AgIBwNwL0AyADIAI2AvADIANCkYCAgJALNwPoAyADQoGAgIDgEzcD4AMgA0GcBmogBCADQeADahAjBEACQCADKAKoBiIFQQBIBEAgAygC2AYhBQwBCyADIAU2AtgGCyABIAMoAsQGIAUQLiADQcAGaiIEIAMoArQGEM4DIARBlQEQDiAEIAJB\u002FwFxEA4MDwsgA0KOgICAcDcD2AMgAyACNgLUAyADQdkANgLQAyADQp6BgICQAjcDyAMgA0LYtvmCcDcDwAMgA0GcBmogBCADQcADahAjBEACQCADKAKoBiIFQQBIBEAgAygC2AYhBQwBCyADIAU2AtgGCyABIAMoAsQGIAUQLiADQcAGaiIEIAMoAqwGIAMoArAGEFkgBEGVARAOIAQgAkH\u002FAXEQDgwPCyABIAMoAsQGIAMoAtgGEC4gA0HABmpB2AAgAhBZIAQhAgwSCyAGLwABIQIgASADKALEBiADKALYBhAuIANBwAZqIAUgAhBZIAQhAgwRCyADIAYvAAEiAjYC5AQgA0F\u002FNgLoBCADIAVBAWs2AuAEIANBnAZqIAQgA0HgBGoQIwRAAkAgAygCqAYiBEEASARAIAMoAtgGIQQMAQsgAyAENgLYBgsgASADKALEBiAEEC4gA0HABmogBUEBaiACEFkMDQsgASADKALEBiADKALYBhAuIANBwAZqIAUgAhBZIAQhAgwQCyABIAogCCAEIANB2AZqEKUCIQQMBgsgASgC1AIhCyABKALMAiEGQQAhCUEAIQgDQAJAIAkgC0gEQEEDIQogBigCACICQeoAa0EDTwRAIAJB7QFHDQJBASEKCwJAIAEoAqQCIAYoAgxBFGxqKAIMIAYoAggiBWsiBEGAf0ggBCAKQf8AakpyRQRAIAZBATYCBCACQe0BRgRAQewBIQIgBkHsATYCAAwCCyAGIAJBgAFqIgI2AgAMAQsgAkHsAEcgBEGAgAJqQf\u002F\u002FA0tyDQIgBkLtgYCAIDcCAEECIQpB7QEhAgsgAygCwAYgBWpBAWsgAjoAACAGKAIEIgIgAygCwAYgBWpqIgQgBCAKaiADKALEBiAFIApqIAJqaxCrASADIAMoAsQGIAprNgLEBkEAIQQgASgCrAIiAkEAIAJBAEobIQcgASgCpAIhAgNAIAQgB0YEQCABKALUAiELIAYhByAJIQQDQAJAIAsgBEEBaiIETARAQQAhAiABKALgAiIEQQAgBEEAShshBANAIAIgBEYNAiAFIAEoAtgCIAJBA3RqIgcoAgAiDEkEQCAHIAwgCms2AgALIAJBAWohAgwACwALIAciAkEQaiEHIAIoAhgiDCAFTA0BIAIgDCAKazYCGAwBCwsgCEEBaiEIDAMLIAUgAigCDCILSARAIAIgCyAKazYCDAsgAkEUaiECIARBAWohBAwACwALIAEoAswCIQIgCARAQQAhBQNAIAUgC0gEQCABKAKkAiACKAIMQRRsaigCDCACKAIIIgRrIQYCQAJAAkACQCACKAIEQQFrDgQAAQMCAwsgAygCwAYgBGogBjoAACABKALUAiELDAILIAMoAsAGIARqIAY7AAAMAQsgAygCwAYgBGogBjYAAAsgAkEQaiECIAVBAWohBQwBCwsgASgCzAIhAgsgACgCECIEQRBqIAIgBCgCBBEAACABQQA2AswCIAAoAhAiAkEQaiABKAKkAiACKAIEEQAAIAFBADYCpAIgASgC2AIhAgJAIAEtAG5BAnEEQCACIQUMAQtBACEFIAJFDQAgASgC8AIhByABKAIAIAFB9AJqIggQgwJBACECQQAhCgNAIAEoAtgCIQUgAiABKALgAk4NAQJAIAUgAkEDdGoiBigCBCIEQQBIIAQgB0ZyDQAgBigCACIGIAprIgVBAEgNAAJAIAQgB2siB0EBaiIKQQRLIAVBMktyRQRAIAggCiAFQQVsakEBakH\u002FAXEQDgwBCyAIQQAQDiAIIAUQsQUgCCAHQQF0IAdBH3VzELEFCyAGIQogBCEHCyACQQFqIQIMAAsACyAAKAIQIgJBEGogBSACKAIEEQAAIAFBADYC2AIgDRCJASANIAMpAtAGNwIQIA0gAykCyAY3AgggDSADKQLABjcCACABQQE2AqACIAEoAowCBEAgABBwDCALIAEoAoACIQcgAyABKAKEAiIENgKcBiADIAAgBEEBdBAkIgY2AqQGIAZFDR9BACECIARBACAEQQBKGyEFA0AgAiAFRwRAIAYgAkEBdGpB\u002F\u002F8DOwEAIAJBAWohAgwBCwsgA0EANgKsBiADIAAgBEECdBAkIgI2AqgGAkAgAkUNACADQgA3ArAGIANBADYCoAYgACADQZwGakEAQQBBAEF\u002FELABDQADQCADKAKsBiECAkACQAJAIAMoArAGIgRBAEoEQCADIARBAWsiBDYCsAYgByACIARBAnRqKAIAIgJqIgUtAAAiBkEKakH\u002FAXFBCk0EQCADIAI2AtQFIAMgBjYC0AUgAEG+iwEgA0HQBWoQOgwGCyACIAZBE2ogBiAGQbMBSxtBAnRB4K4BaiIKLQAAaiIJIAMoApwGSgRAIAMgAjYC5AUgAyAGNgLgBSAAQdmKASADQeAFahA6DAYLIAMoAqQGIgsgAkEBdGovAQAhDSAKLQABIQQCQAJAAkAgCi0AA0ENaw4DAAEAAgsgBS8AASAEaiEEDAELIAQgBmpB7gFrIQQLIAQgDUoEQCADIAI2AvQFIAMgBjYC8AUgAEGfiwEgA0HwBWoQOgwGCyADKAKoBiIMIAJBAnRqKAIAIQgCQCAKLQACIARrIA1qIgQgAygCoAZMDQAgAyAENgKgBiAEQf\u002F\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\u002F31xIAEvAVhBCHRBgAJxciIEOwARIAIgBEH\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\u002F\u002F8BSnINASAEQu2BgIAgNwIAIANBwAZqIgJB7QEQDiACQQAQJiAGIQIgACAHIAMoAsQGQQJrQQIQ7gINAwwCCyAFQeoAa0ECSyAPIAxBf3NqIgJBgAFqQf8BS3JFBEAgBEEBNgIEIAQgBUGAAWoiBDYCACADQcAGaiIFIARB\u002FwFxEA4gBSACQf8BcRAOIAYhAgwDCyAJIAJBgIACakH\u002F\u002FwNLcg0AIARC7YGAgCA3AgAgA0HABmoiBEHtARAOIAQgAkH\u002F\u002FwNxECYgBiECDAILIANBwAZqIgIgBUH\u002FAXEQDiACIAcoAgwgAygCxAZrEBsgBiECIAcoAgxBf0cNASAAIAcgAygCxAZBBGtBBBDuAg0BCwsgA0HABmoQiQEMDgtB3BdBqOwAQcX7AUGeJhAAAAsgCSgAASEGIAEgASgC3AJBAWo2AtwCDAgLIANBwAZqQccAEA4MCQsgCSgAASECIANBwAZqIgRBwQAQDiAEIAIQGwwICyADQX82AkggA0Lq1oGA4AE3A0AgA0GcBmogCiADQUBrECNFDQUCQCADKAK0BiIHQQBIDQAgByABKAKsAk4NACADKAKoBiEEIAMoAqQGIRggAygCrAYhDiAHIQUDQCABKAKAAiERIAEoAqQCIRJBACELA0ACQCALQRRGDQAgEiAFQRRsaigCBCECA0AgAiARaiITLQAAIgVBtgFGIAVBxgFGcgRAIAJBBWohAgwBBSAFQewARw0CIAtBAWohCyATKAABIQUMAwsACwALCyADQo6AgIBwNwM4IAMgDjYCNCADQRE2AjAgA0GcBmogAiADQTBqECMEQCADKAK0BiEFDAELCyADQX82AiQgAyAONgIgIANBnAZqIAIgA0EgahAjRQ0GIAEgASgC0AJBAWo2AtACIAEgB0F\u002FEGMaIAEgAygCtAYiBUEBEGMaIANBwAZqIgIgDkH\u002FAXEQDiACIAUQGyAYIQogBEF\u002FRiAEIAZGcg0IIAEgASgC3AJBAWo2AtwCIAJBxgEQDiACIAQQGyAEIQYMCAtBgRhBqOwAQbL3AUGFKBAAAAsgASgCzAEgCS8AASIFQQN0akEEaiECA0AgAigCACICQQBIDQcgASgCdCACQQR0aiIEKAIEIAVHDQcgBC0ADEEEcQRAIANBwAZqIgdB6QAQDiAHIAJB\u002F\u002F8DcRAmCyAEQQhqIQIMAAsACyABKALMASAQQQN0akEEaiECA0AgAigCACICQQBIDQYgASgCdCACQQR0aiIEKAIEIBBHDQYgASgCnAEgAkcEQCADQcAGaiIHIgUgBCgCDEEEdkEPcUEBa0EBTQR\u002FIAdBAxAOIAcgBCgCDEEIdRAbQdkABUHhAAsQDiAFIAJB\u002F\u002F8DcRAmCyAEQQhqIQIMAAsACwJAAkACQCAEQeoAaw4GBAQCBAEDAAsgBEExRgRAIAkvAAEhBCABIAkvAAMiBRDxBCADQcAGaiICQTEQDiACIAQQJiACIAEoAswBIAVBA3RqLwEEQQFqQf\u002F\u002FA3EQJgwHCyAEQTJHBEAgBEHNAEcNBSAJKAABRQ0HDAULIAEgCS8AASICEPEEIANBwAZqIgRBMhAOIAQgASgCzAEgAkEDdGovAQRBAWpB\u002F\u002F8DcRAmDAYLIAEgASgC0AJBAWo2AtACIAkoAAEiAkEASA0EIAIgASgCrAJODQQgASgCpAIgAkEUbGoiAigCBCEEIANC74CAgHA3AwAgA0GcBmogBCADECNFDQMgAiACKAIAQQFrNgIADAULIAEgASgC0AJBAWo2AtACCyADQX82AtwGIANBwAZqIgQgCSAQEHIaIAEgDCAPIAogA0HcBmoQpQIiCiAPTg0DIAMoAtwGIgJBAEggAiAGRnINAyABIAEoAtwCQQFqNgLcAiAEQcYBEA4gBCACEBsgAiEGDAMLIAEgASgC0AJBAWo2AtACCyADQcAGaiAJIBAQchoMAQsLQdwXQajsAEGR9gFBhSgQAAALQcaFAUGo7ABBo4MCQd05EAAACyAAIAEQ+wJCgICAgOAACyEaIANB4AZqJAAgGgvIDQEIfwJAAkACQAJAAkACQCAAKAIQIgZBRUcEQCAAKAJAIQEgAEGGARBFRQ0CIABBARBzQUVHDQELQX8hBiAAQQBBACAAKAIYIAAoAhQQxAFFDQIMAwsgACgCECEGCwJAAkACQAJAAkACQCAGQTVqDgMAAgECCyABKAKUA0UNASAAKAIAIQEgACgCQCgClAMhA0F\u002FIQYgABAPDQYCQAJAAkACQCAAKAIQIgJBO2oOBAIBAQABCyAAQQBBARDsAiEADAcLIABBhgEQRUUNASAAQQEQc0FFRw0BCyAAQQBBACAAKAIYIAAoAhRBAUEAEN0BIQAMBQsgABAPDQYCQAJAIAJBsX9GDQACQCACQUBHBEAgAkFJRiACQVFGcg0CIAJBKkcEQCACQfsARw0EIAMoAiAhBANAAkAgACgCECICQf0ARg0AIAJBg39GIAJBJ2pBUUtyRQRADA8LQQAhAiABIAAoAiAQFiEFAkACQAJAIAAQDw0AIABB+gAQRUUNASAAEA8NACAAKAIQIgJBg39GIAJBJ2pBUUtyRQRAQQAhAiAAQfblAEEAEBMMAQsgASAAKAIgEBYhAiAAEA9FDQILIAEgBRAQDAwLIAEgBRAWIQILIAAgAyAFIAJBABD5ASEIIAEgBRAQIAEgAhAQIAhFDQ0gACgCEEEsRw0AIAAQD0UNAQwNCwsgAEH9ABAoDQsgAEH7ABBFRQ0CIAAQ6wIiAkUNCyABIAMgAhDqAiEFIAEgAhAQIAVBAEgNCwNAIAQgAygCIE4NAyADKAIcIARBFGxqIgEgBTYCACABQQE2AgggBEEBaiEEDAALAAsgAEH6ABBFBEAgABAPDQsgACgCECICQYN\u002FRiACQSdqQVFLckUEQAwNCyABIAAoAiAQFiECIAAQDw0IIAAQ6wIiBEUNCCABIAMgBBDqAiEFIAEgBBAQIAVBAEgNCCAAIANB\u002FgAgAkEBEPkBIQMgASACEBAgA0UNCyADIAU2AgAMAgsgABDrAiICRQ0KIAEgAyACEOoCIQQgASACEBAgBEEASA0KIAEgA0EoakEEIANBMGogAygCLEEBahBkDQogAyADKAIsIgFBAWo2AiwgAygCKCABQQJ0aiAENgIADAELAkACQAJAAkAgACgCEEE7ag4EAgEBAAELIABBAEECEOwCIQAMCgsgAEGGARBFRQ0BIABBARBzQUVHDQELIABBAEEAIAAoAhggACgCFEECQQAQ3QEhAAwICyAAEFMNCSAAQRYQngEgACAAKAJAQf0AQQEQnQFBAEgNCSAAQb0BEA0gAEH9ABAXIABBABAUIAAgA0H9AEEWQQAQ+QFFDQkLIAAQrwEhAAwGCyAAQQEgAkEBEMwDIQAMBQsgAEHKD0EAEBMMCAsgASgClANFDQAgAEEAEHMiAUEoRiABQS5Gcg0AIAAoAgAhAyAAKAJAKAKUAyEEQX8hBiAAEA8NBSAEKAI4IQUCQAJAAkACQAJAIAAoAhAiAUH\u002FAGoOAwACAQILIAMgACkDIBAwIgJFDQkgABAPRQ0DIAMgAhAQDAsLIAAoAigEQCAAENwBDAsLQRYhAiADIAAoAiAQFiEBIAAQDw0EIAAgBCABQRYQywMNBCADIAEQECAAKAIQQSxHDQEgABAPDQggACgCECEBCyABQfsARwRAIAFBKkcNASAAEA8NCCAAQfoAEEVFBEAgAEH9jAFBABATDAsLIAAQDw0IIAAoAhAiAUGDf0YgAUEnakFRS3JFBEAMCgtB\u002FgAhAiADIAAoAiAQFiEBIAAQDw0EIAAgBCABQf4AEMsDDQQgAyABEBAMAQsgABAPDQcDQAJAIAAoAhAiAUH9AEYNACABQYN\u002FRiABQSdqQVFLckUEQAwLC0EAIQEgAyAAKAIgEBYhAiAAEA8NBQJAIABB+gAQRQRAIAAQDw0HIAAoAhAiAUGDf0YgAUEnakFRS3JFBEBBACEBIABB9uUAQQAQEwwICyADIAAoAiAQFiEBIAAQD0UNAQwHCyADIAIQFiEBCyAAIAQgASACEMsDDQUgAyABEBAgAyACEBAgACgCEEEsRw0AIAAQD0UNAQwJCwsgAEH9ABAoDQcLIAAQ6wIiAkUNBgsgAyAEIAIQ6gIhASADIAIQECABQQBIDQUgBSAEKAI4IgMgAyAFSBshAwNAIAMgBUZFBEAgBCgCNCAFQQxsaiABNgIIIAVBAWohBQwBCwsgABCvAUUNBAwFC0F\u002FIQYgAEEHENsBDQQMAwsgAyABEBAgAyACEBAMBQsgASACEBAMBAsgAA0BC0EAIQYLIAYPCyAAQfblAEEAEBMLQX8LigMBA38jAEFAaiIBJAACQCAAKAIQQYF\u002FRw0AIAEgACgCBDYCECABIAAoAhQ2AhQgASAAKAIYNgIcIAEgACgCMDYCGEGBfyECA0ACQCACQYF\u002FRw0AIAAoAjghAiABIAAoAhgiA0EBajYCBCABIAIgA2tBAms2AgAgAUEgakEUQdAqIAEQSBpBfyECIAAQDw0CAkACQAJAIAAoAhAiA0GAAWoOVwEBAQEBAwMDAwMDAwMDAwMDAwMDAQEDAwMDAwMDAwMDAwMDAwMDAwMDAwIBAQEBAwEBAQEDAQEDAwEBAQMDAQMDAQEDAwEBAQEBAQEDAQEDAQEBAQEBAQALIANB\u002FQBGDQEgA0E7Rw0CIAAQD0UNAQwECyAAKAIwRQ0BCwJAAn8gAUEgakHkHUELEGhFBEAgACgCQCICQQE2AkBBAQwBCyABQSBqQcM3QQoQaA0BIAAoAkAhAkECCyEDIAIgAi0AbiADcjoAbgsgACgCECECDAELCyAAIAFBEGoQ7QIhAgsgAUFAayQAIAILNgECf0EBIQIgACgCACIBQfIAa0EDSSABQQhGciABQdQARnIEf0EBBSAAKAIMQfABcUHAAEYLC+0JAwF8C38BfiMAQdACayICJABCgICAgOAAIRECQCAAIAEgAkHAAWogBEEEdiIDQQFxQQAQ1QMiBkEASA0AIANBD3EhDSAGRQRAIA1BAkYEQCAAQa3zAEEAEEQMAgsgAEHS0AAQYCERDAELAn8gAisDgAIiBZlEAAAAAAAA4EFjBEAgBaoMAQtBgICAgHgLIQ4CfyACKwP4ASIFmUQAAAAAAADgQWMEQCAFqgwBC0GAgICAeAshDwJ\u002FIAIrA\u002FABIgWZRAAAAAAAAOBBYwRAIAWqDAELQYCAgIB4CyEQAn8gAisD6AEiBZlEAAAAAAAA4EFjBEAgBaoMAQtBgICAgHgLIQkCfyACKwPgASIFmUQAAAAAAADgQWMEQCAFqgwBC0GAgICAeAshCgJ\u002FIAIrA9gBIgWZRAAAAAAAAOBBYwRAIAWqDAELQYCAgIB4CyEHAn8gAisD0AEiBZlEAAAAAAAA4EFjBEAgBaoMAQtBgICAgHgLIQsCfyACKwPIASIFmUQAAAAAAADgQWMEQCAFqgwBC0GAgICAeAshDCAEQQFxIQgCfyACKwPAASIFmUQAAAAAAADgQWMEQCAFqgwBC0GAgICAeAshBkEAIQMCQCAIRQ0AIARBD3EhCAJAAkACQAJAIA0OBAABAgMECyACIAY2AmAgAiALNgJUIAIgBkEfdkEEcjYCXCACIAxBA2xBoMgBajYCWCACIA9BA2xBgMgBajYCUCACQZACakHAAEGHkgEgAkHQAGoQSCEDDAMLIAIgBjYCgAEgAiALNgJ4IAIgBkEfdkEEcjYCfCACIAxBA2xBoMgBajYCdCACIA9BA2xBgMgBajYCcCACQZACaiIGQcAAQbbrACACQfAAahBIIQMgCEEDRw0CIAMgBmpBIDoAACADQQFqIQMMAgsgAiAGNgKgASACQZACaiIIQcAAQY7rAEGI6wAgBkGQzgBJGyACQaABahBIIQMgAiALNgKUASACIAxBAWo2ApABIAMgCGpBwAAgA2tBpvEAIAJBkAFqEEggA2ohAwwBCyACIAs2ArQBIAIgDEEBajYCsAEgAiAGNgK8ASACIAZBH3ZBBHI2ArgBIAJBkAJqIgZBwABBp+sAIAJBsAFqEEghAyAIQQNHDQAgAyAGakGswAA7AAAgA0ECaiEDCwJAIARBAnFFDQACQAJAAkACQCANDgQAAQIDBAsgAiAJNgIIIAIgCjYCBCACIAc2AgAgAkGQAmogA2pBwAAgA2tBkfIAIAIQSCADaiEDDAMLIAIgCTYCKCACIAo2AiQgAiAHNgIgIAJBkAJqIgcgA2pBwAAgA2tBkfIAIAJBIGoQSCADaiIDIAdqQS1BKyAOQQBIGzoAACACIA4gDkEfdSIEcyAEayIEQTxuIgY2AhAgAiAEIAZBPGxrNgIUIAcgA0EBaiIEakE\u002FIANrQZPrACACQRBqEEggBGohAwwCCyACIBA2AjwgAiAJNgI4IAIgCjYCNCACIAc2AjAgAkGQAmogA2pBwAAgA2tBsfAAIAJBMGoQSCADaiEDDAELIAIgCTYCSCACIAo2AkQgAkHBAEHQACAHQQxIGzYCTCACIAdBC2pBDG9BAWo2AkAgAkGQAmogA2pBwAAgA2tB5vQAIAJBQGsQSCADaiEDCyAAIAJBkAJqIAMQ6gEhEQsgAkHQAmokACARCzcCA38BfiMAQRBrIgAkACAAEI0GIAApAwAhAyAAKAIIIQIgAEEQaiQAIAJB6AdtrCADQugHfnwLhwEBAXwgACADKQMAEKgBIgJFBEBCgICAgOAADwsgAhAHIQQgACACEDEgBL0iAQJ\u002FIASZRAAAAAAAAOBBYwRAIASqDAELQYCAgIB4CyIAt71RBEAgAK0PC0KAgICAwH4gAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwvxAQIGfwF+IABBCBAkIgRFBEBBfw8LIARCATcCACACpyEGIAJCIIinQXVJIQgDQAJAAkAgA0ECRg0AIAAgACkDMCADQS5yEEciCUKAgICAcINCgICAgOAAUgRAIABBEBAkIgUNAiAAIAkQDAtBfyEHIANFDQAgACABKQMAEAwLIAAoAhAgBBD\u002FBCAHDwsgBCAEKAIAQQFqNgIAIAUgBDYCCCAIRQRAIAYgBigCAEEBajYCAAsgBSACNwMAIAlCgICAgHBaBEAgCacgBTYCIAsgACAJQS9BARCYAyABIANBA3RqIAk3AwAgA0EBaiEDDAALAAt\u002FAQV\u002FIABBEGohBCABQQxqIQUgASgCECECA0AgAiAFRkUEQCACKAIEIQYgACACKQMQECEgACACKQMYECEgACACKQMgECEgACACKQMoECEgBCACIAAoAgQRAAAgBiECDAELCyABKAIIIgMEQCAAIAMQzgELIAQgASAAKAIEEQAAC+EDAgR\u002FAn4jAEFAaiICJAAgAiAAIAEQsQIiBjcDOAJAAkAgASgCIARAIAZCgICAgHCDQoCAgIDgAFENASAAIAEpAyhCgICAgDBBASACQThqEBwhBiAAIAIpAzgQDCAAIAYQDAwCCyACIAEoAmRBCGsiAykDADcDKCADQoCAgIAwNwMAIAAgBhAMQQAhAyAAIAApA1AgACACQShqQQAQ3gEhBiAAIAIpAygQDCAGQoCAgIBwg0KAgICA4ABRDQADQAJAIANBAkcEQCACQRBqIANBA3RqIAAgACkDMCADQTFqEEciBzcDACAHQoCAgIBwg0KAgICA4ABSDQEgA0EBRgRAIAAgAikDEBAMCyAAIAYQDAwDCyACQoCAgIAwNwMIIAJCgICAgDA3AwAgACAGIAJBEGogAhCpAiEFIAAgBhAMQQAhAwNAIANBAkZFBEAgACACQRBqIANBA3RqKQMAEAwgA0EBaiEDDAELCyAFDQIMAwsgASABKAIAQQFqNgIAIAenIAE2AiAgA0EBaiEDDAALAAsgACgCECIDKQOAASEGIANCgICAgCA3A4ABIAIgBjcDMCAAIAEpAzBCgICAgDBBASACQTBqEBwhBiAAIAIpAzAQDCAAIAYQDAsgAkFAayQAC5UDAgh\u002FAX4jAEEwayIGJAACQCABQoCAgIBwVA0AIAGnIgQvAQZBLUcNACAEKAIgIgRFDQAgBCgCAA0AIAJCIIinQXVPBEAgAqciBSAFKAIAQQFqNgIACyAAIARBGGogAhAdIAQgA0EBaiIFNgIAAkAgBUECRw0AIAQoAhQNACAAKAIQIgUoApgBIgdFDQAgACABIAJBACAFKAKcASAHETUACyAEQQRqIgcgA0EDdGoiCCgCBCEEIANBAEetQoCAgIAQhCEBA0AgBCAIRkUEQCAEKAIEIQsgBiAEKQMINwMAIAYgBCkDEDcDCCAEKQMYIQwgBiACNwMgIAYgATcDGCAGIAw3AxAgAEE8QQUgBhD4AiAEKAIAIgkgBCgCBCIKNgIEIAogCTYCACAEQgA3AgAgACgCECAEEKgCIAshBAwBCwsgB0EBIANrQQN0aiIFKAIEIQQDQCAEIAVGDQEgBCgCACIHIAQoAgQiAzYCBCADIAc2AgAgBEIANwIAIAAoAhAgBBCoAiADIQQMAAsACyAGQTBqJAALigMCA34CfyMAQRBrIgIkAEKAgICAMCEGAkACQCAAIAJBCGogACABECAiARAvDQACQCACKQMIIgdCAFcEQAwBCyAHQgF9IQUCQAJAAkACQCABIAJBBGogAhCPAUUNACAHIAIoAgAiCK1SDQAgAachCSACKAIEIQMgBEUNASADKQMAIQYgAyADQQhqIAhBA3RBCGsQqwEMAgsCQCAEBEAgACABQgAQTiIGQoCAgIBwg0KAgICA4ABRDQYgACABQgBCASAFQQEQ8wJFDQEMBgsgACABIAUQbCIGQoCAgIBwg0KAgICA4ABRDQULIAAgASAFEIUCQQBODQIMBAsgAyAIQQN0akEIaykDACEGCyAJIAkoAihBAWs2AigLIAdCgYCAgAhUDQBCgICAgMB+IAW5vSIFQoCAgIDAgYD8\u002FwB9IAVC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbIQULIAAgAUEwIAUQOUEATg0BCyAAIAYQDEKAgICA4AAhBgsgACABEAwgAkEQaiQAIAYLbgEEf0F\u002FIQZBfyACKAIAIgRBAXYgBGogBEGp1arVeksbIQUCQAJAIAMgASgCACIHRgRAIAAgBRAkIgBFDQIgACADIAQQHhoMAQsgACAHIAUQxQIiAEUNAQsgASAANgIAIAIgBTYCAEEAIQYLIAYLfwEEfyABLQAAQdsARgRAIAFBAWoiAxA9QQFrIQIgACgCECgCOCEEQcsBIQEDQCABQdgBRwRAAkAgBCABQQJ0aigCACIFKAIEQf\u002F\u002F\u002F\u002F8HcSACRw0AIAVBEGogAyACEGgNACAAIAEQFg8LIAFBAWohAQwBCwsQAQALIAAgARC2AQswAANAIAFBgAFJRQRAIAAgAUGAAXJB\u002FwFxEA4gAUEHdiEBDAELCyAAIAFB\u002FwFxEA4LFwAgACAAKQPAASABIAIgA0EAQX8QswULNQEBfyAAKALsASIHRQRAIABBjuUAQQAQEkKAgICA4AAPCyAAIAEgAiADIAQgBSAGIAcRNwALogYCBH8CfkKAgICAMCEJAkACQAJAAkACQCABKAJUIgVBGHZBAmsOBAIDAAABCyABLQCgAUUNAkF\u002FIQIgASkDqAEiCUIgiKdBdUkNAiAJpyIAIAAoAgBBAWo2AgAMAgtBlv4AQajsAEH74AFB3ToQAAALIAFBADYCcCABIAI2AlwgASACNgJYIAEgBUGAgIAYcjYCVCABIAMoAgA2AmAgAyABNgIAIAJBAWohAgNAAkACQAJAAkACQAJAIAEoAhQgB0oEQCAAIAEoAhAgB0EDdGooAgQiBSACIAMgBBC0BSICQQBIDQkgBSgCVCIGQRh2QQNrQQNPDQEgBkGAgIB4cUGAgIAYRgRAIAEgASgCXCIGIAUoAlwiCCAGIAhIGzYCXAwHCyAFKAKAASIFKAJUQYCAgHBxQYCAgCBHDQIgBS0AoAFFDQZBfyECIAUpA6gBIglCIIinQXVJDQggCaciACAAKAIAQQFqNgIADAgLAkAgASgCcEEASgRAIAEoAnQNBCABQQE2AnQgACgCECIAIAApA7gBIgpCAXw3A7gBIAEgCjcDeAwBCyABLQBUBEAgASgCdA0FIAFBATYCdCAAKAIQIgUgBSkDuAEiCkIBfDcDuAEgASAKNwN4IAAgARCQBQwBCyAAIAEgBBCPBUEASA0JCyABKAJcIgAgASgCWCIFSg0EIAAgBUcNBwNAIAMgAygCACIAKAJgNgIAIAAgATYCgAEgAEEEQQUgACgCdBs6AFcgACABRw0ACwwHC0He+wBBqOwAQY7hAUHdOhAAAAtBuv0AQajsAEGV4QFB3ToQAAALQfg6QajsAEGm4QFB3ToQAAALQfg6QajsAEGr4QFB3ToQAAALQdIOQajsAEG14QFB3ToQAAALIAUoAnQEQCABIAEoAnBBAWo2AnAgACAFQeQAakEEIAVB7ABqIAUoAmhBAWoQZARAIAAoAhAiACkDgAEhCSAAQoCAgIAgNwOAAUF\u002FIQIMAwsgBSAFKAJoIgZBAWo2AmggBSgCZCAGQQJ0aiABNgIACyAHQQFqIQcMAAsACyAEIAk3AwAgAg8LQX8L2AcCB38BfiMAQRBrIgYkAAJAIAEoAlQiCEEYdiIEQQVNQQBBASAEdEE2cRsNAAJAAkACQCAIQYCAgAhJBEAgASADNgJcIAEgAzYCWCABIAhBgICACHI2AlQgASACKAIANgJgIAIgATYCACADQQFqIQhBACEDA0ACQCABKAIUIANMBEBBACEDDAELIAAgASgCECADQQN0aigCBCIEIAIgCBC1BSIIQQBIDQUgBCgCVCIFQRh2IglBBUtBASAJdEE2cUVyDQMgBUGAgIB4cUGAgIAIRgRAIAEgASgCXCIFIAQoAlwiBCAEIAVKGzYCXAsgA0EBaiEDDAELCwJAA0AgAyABKAIgTg0BAkACQCABKAIcIANBFGxqIgQoAghBAUcNACAEKAIMIgVB\u002FgBGDQAgACAGQQhqIAZBDGogASgCECAEKAIAQQN0aigCBCAFEN8DIgUNAQsgA0EBaiEDDAELCyAAIAUgASAEKAIQEN4DDAQLIAEoAlBFBEAgASgCSCgCJCEKQQAhA0EAIQUDQAJAIAEoAjggBUwEQANAIAMgASgCIE4NAiABKAIcIANBFGxqIgQoAghFBEAgCiAEKAIAQQJ0aigCACIFIAUoAgBBAWo2AgAgBCAFNgIECyADQQFqIQMMAAsACyABKAIQIAEoAjQgBUEMbGoiCSgCCEEDdGooAgQhBAJAIAkoAgQiB0H+AEYEQCAAIAQQ9gIiC0KAgICAcINCgICAgOAAUQ0IIAAgCiAJKAIAQQJ0aigCAEEYaiALEB0MAQsgACAGQQhqIAZBDGogBCAHEN8DIgcEQCAAIAcgBCAJKAIEEN4DDAgLAkAgBigCDCIHKAIMQf4ARgRAIAAgBigCCCgCECAHKAIAQQN0aigCBBD2AiILQoCAgIBwg0KAgICA4ABRDQkgAEEBENwDIgRFBEAgACALEAwMCgsgACAEQRhqIAsQHQwBCyAHKAIEIgRFBEAgBigCCCgCSCgCJCAHKAIAQQJ0aigCACEECyAEIAQoAgBBAWo2AgALIAogCSgCAEECdGogBDYCAAsgBUEBaiEFDAELC0F\u002FIQMgACABKQNIQoGAgIAQQQBBABAcIgtCgICAgHCDQoCAgIDgAFENBSAAIAsQDAsgASgCXCIAIAEoAlgiA0oNAiAAIANGBEADQCACIAIoAgAiACgCYDYCACAAQQI6AFcgACABRw0ACwsgCCEDDAQLQbv+AEGo7ABBsNsBQfvKABAAAAtB5\u002FwAQajsAEHC2wFB+8oAEAAAC0HSDkGo7ABBxNwBQfvKABAAAAtBfyEDCyAGQRBqJAAgAwv3AgIEfwJ+AkAgAS0AVg0AAkAgASgCUARAA0AgAiABKAIgTg0CIAEoAhwgAkEUbGoiAygCCEUEQCAAQQAQ3AMiBEUEQEF\u002FDwsgAyAENgIECyACQQFqIQIMAAsACyABKQNIIQdBfyEDIAAgACkDMEENEEciBkKAgICAcINCgICAgOAAUQ0BIAanIgIgB6ciAzYCICADIAMoAgBBAWo2AgAgAkIANwIkAkAgAygCPCIERQ0AAkAgACAEQQJ0EFwiBEUNACACIAQ2AiRBACECA0AgAiADKAI8Tg0CIAMoAiQgAkEDdGotAAAiBUEBcQRAIAAgBUEDdkEBcRDcAyIFRQ0CIAQgAkECdGogBTYCAAsgAkEBaiECDAALAAsgACAGEAxBfw8LIAEgBjcDSCAAIAcQDAsgAUEBOgBWQQAhAgNAIAEoAhQgAkwEQEEADwsgAkEDdCEEQX8hAyACQQFqIQIgACAEIAEoAhBqKAIEELYFQQBODQALCyADC64IAQR\u002FIwBBIGsiBSQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAUIgiKdBA2oOAgEAAgsgACAAIAEgAyAEEIAEIAJBAEEAEDYhAgwCCyAAIAEQDEKAgICA4AAhAiAAIAGnIgMQtgVBAEgNASADKAJUIgRBgICACE8EQCAEQRh2IgRBBUtBASAEdEE0cUVyDQMLIAVBADYCECAAIAMgBUEQaiIEQQAQtQVBAEgEQCAEIQADQCAAKAIAIgBFDQMgACgCVCIDQYCAgHhxQYCAgAhHDQUgACADQf\u002F\u002F\u002FwdxNgJUIABB4ABqIQAMAAsACyAFKAIQDQQgAygCVCIGQRh2IgRBBUtBASAEdEE0cUUiB3INBSAEQQVLIAdyDQYgBkGAgIBwcUGAgIAgRgRAIAMoAoABIQMLAkACQCADKQOIASIBQoCAgIBwg0KAgICAMFIEQCABQiCIp0F0Sw0BDAILIAMgACADQZABahC3AiICNwOIAUKAgICA4AAhASACQoCAgIBwg0KAgICA4ABRDQEgBUEANgIcAkAgACADQQAgBUEcaiIEIAVBEGoQtAVBAEgEQCAFKQMQIgGnIQYgAUIgiKdBdUkhBwNAIAQoAgAiBARAIAQoAlQiCEGAgIB4cUGAgIAYRw0NIARBAToAoAEgBCAIQf\u002F\u002F\u002FwdxQYCAgChyNgJUIAdFBEAgBiAGKAIAQQFqNgIACyAEIAM2AoABIAQgATcDqAEgBEHgAGohBAwBCwsgACABEAwgAy0AV0EYdEGAgIAoRw0MIAMtAKABRQ0NIAAgACADKQOYAUKAgICAMEEBIANBqAFqEBwQDAwBCyADKAJUIgRBgICAcHFBgICAIEcNDSADLQCgAQ0OIAMoAnRFBEAgBEGAgIAocUGAgIAoRw0QIAVCgICAgDA3AwggACAAIAMpA5ABQoCAgIAwQQEgBUEIahAcEAwLIAUoAhwNEAsgAykDiAEiAUIgiKdBdUkNAQsgAaciACAAKAIAQQFqNgIAC0KAgICA4AAgASABQoCAgIBwg0KAgICA4ABRGyECDAELIAAgARAMIABBiuYAQQAQEkKAgICA4AAhAgsgBUEgaiQAIAIPC0Gy+gBBqOwAQefcAUG+1wAQAAALQfr3AEGo7ABB7NwBQb7XABAAAAtB+fQAQajsAEHy3AFBvtcAEAAAC0Hc+gBBqOwAQfXcAUG+1wAQAAALQdz6AEGo7ABB0+EBQc3XABAAAAtB0PcAQajsAEHj4QFBzdcAEAAAC0G2+wBBqOwAQevhAUHN1wAQAAALQec4QajsAEHs4QFBzdcAEAAAC0GE+wBBqOwAQfLhAUHN1wAQAAALQeY4QajsAEHz4QFBzdcAEAAAC0G2+wBBqOwAQfbhAUHN1wAQAAALQfn0AEGo7ABB\u002FOEBQc3XABAAAAtTACMAQRBrIgQkAEKAgICAMCEBIAQgAkEASgR+IAMpAwAFQoCAgIAwCzcDCCAAIAAgBSkDCEKAgICAMEEBIARBCGoQHBAMIARBEGokAEKAgICAMAvuAwEFfyMAQRBrIgYkAAJAAkACQAJ\u002FIAAoAhAiBCgCqAEiA0UEQCACLQAAQS5HBEAgACACIAIQPRCXAwwCCyABEIUGIQVBACEDIAAgAhA9IAUgAWtBACAFGyIFakECahAkIgdFDQQgByABIAUQHiIBIAVqQQA6AAACQANAAkAgAi0AAEEuRw0AQQIhAwJAAkAgAi0AAUEuaw4CAAECCyACLQACQS9HDQEgAS0AAEUNAyABEIUGIgNBAWogASADGyIDQYaIARCWBEUNASADQYWIARCWBEUNASADIAEgA0lrQQA6AABBAyEDCyACIANqIQIMAQsLIAEtAABFDQAgARA9IAFqQS87AAALIAEQPSABaiACEIcGIAEhAgwCCyAAIAEgAiAEKAKwASADEQcACyICRQ0BCyAAIAIQtgEiAUUEQCAAKAIQIgBBEGogAiAAKAIEEQAADAELIAAgARDPBSIDBEAgACgCECIEQRBqIAIgBCgCBBEAACAAIAEQEAwCCyAAIAEQECAEKAKsASIBRQRAIAYgAjYCACAAQeiOASAGEMMCIAAoAhAiAEEQaiACIAAoAgQRAAAMAQsgACACIAQoArABIAERAQAhAyAAKAIQIgBBEGogAiAAKAIEEQAADAELQQAhAwsgBkEQaiQAIAMLRQEEfyAAKAIgIgNBACADQQBKGyEDA0AgAiADRgRAQQAPCyACQRRsIQUgAkEBaiECIAUgACgCHGoiBCgCECABRw0ACyAEC1wBBH8gASEDAkADQCACIANNIARBBEtyDQEgAywAACIGQf8AcSAEQQdsdCAFciEFIARBAWohBCADQQFqIQMgBkEASA0ACyAAIAU2AgAgAyABaw8LIABBADYCAEF\u002FC78BAgZ\u002FAX4gAUEYaiEFIAEoAhwhAgNAIAIgBUcEQCACKAIEIQcgAigCCCIDBEAgACADEM4BCyACQRJrLwEAIQMCQAJAIAJBE2siBC0AAEECcQRAIAEoAhAgA0EDdGopAwAiCEIgiKdBdEsNAQwCCyABKAIUIANBA3RqKQMAIghCIIinQXVJDQELIAinIgMgAygCAEEBajYCAAsgAiAINwMAIAJBCGsgAjYCACAEIAQtAABBAXI6AAAgByECDAELCwsrAQF\u002FIAFBEGsiAyAAIAMpAwAgAUEIaykDABCSBSACR61CgICAgBCENwMAC9YHAwR+Bn8CfCABQQhrIgspAwAhAyABQRBrIgopAwAhBQJAAkACQAJAAkACQAJAA0AgBUL\u002F\u002F\u002F\u002F\u002FD4MhBkEHIANCIIinIgkgCUEHa0FuSRsiB0F2RiEMAkACQAJAAkACQANAAkBBByAFIgRCIIinIgEgAUEHa0FuSRsiAUEKaiIIQRFLQQEgCHRBgYgIcUVyDQAgDEUEQCAHQQdGBEAgByEJDA4LIAcNAQsgASAHcg0MIASnIAOnRiEIDA4LIAEgB0YEQCAAIAQgA0EAELQBIQgMDgtBASEIIAFBAkYgB0EDRnEgB0ECRiABQQNGcXINDQJAAkACQAJAAkACQAJAIAFBeUYEQAJAIAcOAgYKAAtBeSEIIAchCSAHQQpqDgQBCwsPBAsgB0F5Rw0GQQAhCCAGIQUgAUEBag4JCwQHDw8PDw8EAQsgAUF5Rw0EIAAgBBCqAiIEQoCAgIBwg0KAgICA4H5SDQEMBAsgAUF2Rw0NIAAgAxCqAiIDQoCAgIBwg0KAgICA4H5RDQMLIAAgBBAMIAAgAxAMQQAhCAwRCyAHQQdHDQYLIAAgBBBlIgRCgICAgHCDQoCAgIDgAFENCyAEIQUgACADEGUiA0KAgICAcINCgICAgOAAUQ0MCyAAIAQgAxCSBSEIDA4LIAYhBSABQQFGDQALIAdBAUcNAQsgA0L\u002F\u002F\u002F\u002F\u002FD4MhAyAEIQUMBAsgASIIQX9HDQAgB0EKaiIBQRFNQQBBASABdEGBiAhxGw0BQX8hCCAHQX5xQXhGDQELIAdBf0cNASAIQX5xQXhGIAhBCmoiAUERTUEAQQEgAXRBgYgIcRtyDQBBfyEHDAELIAAgBEECEJIBIgVCgICAgHCDQoCAgIDgAFENBCAAIANBAhCSASIDQoCAgIBwg0KAgICA4ABSDQEMBQsLIAghCQsgB0F+cUECRiEIIAkhAQsCfyAEQoCAgIBwWgRAQQEgBKcsAAVBAEggCHENARoLQQAhByADQoCAgIBwWgR\u002FIAOnLAAFQQBIBUEACyABQX5xQQJGcQshCCAAIAQQDCAAIAMQDAwECyADIQULIAAgBRAMDAELAkACfAJ8IAFBB0YEQCAJQQAgCUEHRxsNAyAEQoCAgIDAgYD8\u002FwB8vyINIAlBB0YNARogA6e3DAILIAlBB0cgAXINAiAEp7cLIQ0gA0KAgICAwIGA\u002FP8AfL8LIQ4gDSAOYSEIDAILIABBqgEgBCADIAAoAhAoArACESsAIghBAE4NAQsgCkKAgICAMDcDACALQoCAgIAwNwMAQX8PCyAKIAIgCEetQoCAgIAQhDcDAEEAC\u002FQFAgJ+BH8jAEEQayIGJAACQAJAAkACQEEHIAFBEGsiBSkDACICQiCIpyIEIARBB2tBbkkbIgRBB0dBByABQQhrIgcpAwAiA0IgiKciASABQQdrQW5JGyIBQQdHckUEQCAFQoCAgIDAfiACQoCAgIDAgYD8\u002FwB8vyADQoCAgIDAgYD8\u002FwB8v6C9IgJCgICAgMCBgPz\u002FAH0gAkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhs3AwAMAQsgBEF\u002FRyABQX9HcUUEQCAAIAJBAhCSASICQoCAgIBwg0KAgICA4ABRDQIgACADQQIQkgEiA0KAgICAcINCgICAgOAAUQRAIAAgAhAMDAQLQQcgAkIgiKciBCAEQQdrQW5JGyEEQQcgA0IgiKciASABQQdrQW5JGyEBCyAEQXlHIAFBeUdxRQRAIAUgACACIAMQtgIiAjcDAEEAIQEgAkKAgICAcINCgICAgOAAUQ0DDAQLIAAgAhBlIgJCgICAgHCDQoCAgIDgAFENASAAIAMQZSIDQoCAgIBwg0KAgICA4ABRBEAgACACEAwMAwtBByADQiCIpyIBIAFBB2tBbkkbIgFBByACQiCIpyIEIARBB2tBbkkbIgRyRQRAIAUCfiADxCACxHwiAkKAgICACHxC\u002F\u002F\u002F\u002F\u002Fw9YBEAgAkL\u002F\u002F\u002F\u002F\u002FD4MMAQtCgICAgMB+IAK5vSICQoCAgIDAgYD8\u002FwB9IAJC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbCzcDAAwBCyAEQXZHIAFBdkdxRQRAIABBngEgBSACIAMgACgCECgCrAIRIwANAwwBCyAAIAZBCGogAhBtBEAgACADEAwMAwsgACAGIAMQbQ0CIAVCgICAgMB+IAYrAwggBisDAKC9IgJCgICAgMCBgPz\u002FAH0gAkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhs3AwALQQAhAQwCCyAAIAMQDAsgBUKAgICAMDcDACAHQoCAgIAwNwMAQX8hAQsgBkEQaiQAIAELtAMBCH8jAEEQayIEJAAgACAAKQOAARAhIABBEGohAyAAQaABaiEFIAAoAqQBIQEDQCABIAVHBEAgASgCBCEIIAFBGGohB0EAIQIDQCABKAIQIAJKBEAgACAHIAJBA3RqKQMAECEgAkEBaiECDAELCyADIAEgACgCBBEAACAIIQEMAQsLIAAgBTYCpAEgACAAQaABajYCoAEgABCdBSAAKAJUIABB0ABqRgRAQQAhAgNAAkAgACgCRCEBIAIgACgCQE4NACABIAJBGGxqIgEoAgAEQCAAIAEoAgQQxwELIAJBAWohAgwBCwsgAyABIAAoAgQRAAAgAEHkAWoiAUEIahDBBCABQSBqEMEEQQAhAgNAAkAgACgCOCEBIAIgACgCLE4NACABIAJBAnRqKAIAIgFBAXFFBEAgAyABIAAoAgQRAAALIAJBAWohAgwBCwsgAyABIAAoAgQRAAAgAyAAKAI0IAAoAgQRAAAgAyAAKALgASAAKAIEEQAAIAQgAykCCDcDCCAEIAMpAgA3AwAgBCAAIAAoAgQRAAAgBEEQaiQADwtBuogBQajsAEHHD0Hd0wAQAAALjgMBC38jAEEwayIHJAACQCACQoCAgIBwVA0AQRMhBQJAIAKnIgotAAVBBHFFDQAgACgCECgCRCAKLwEGQRhsaigCFCIIRQ0AQQNBEyAIKAIEGyEFC0F\u002FIQkgACAHQSxqIAdBKGogCiAFEH0NACADp0EAIANC\u002F\u002F\u002F\u002F\u002F29WGyEMIAcoAiwhCCAHKAIoIQsgBUEPSyENQQAhBQJAA0AgBSALRwRAAkACQCAMRQ0AIABBACAMIAggBUEDdGooAgQQQyIGRQ0AIAZBAE4NAQwECyANRQRAIAAgB0EIaiIOIAogCCAFQQN0aigCBBBDIgZBAEgNBCAGRQ0BIAcoAgghDyAAIA4QRiAPQQRxRQ0BCyAAIAIgCCAFQQN0aiIGKAIEIAJBABARIgNCgICAgHCDQoCAgIDgAFENAyAGKAIEIQYCfyAEBEAgACABIAYgAxA5DAELIAAgASAGIANBBxAVC0EASA0DCyAFQQFqIQUMAQsLIAAgCCALEFtBACEJDAELIAAgCCALEFsLIAdBMGokACAJC6YBAQF+AkACQAJ+IARBBHEEQEEpIQIgACABEEoMAQtBKCECIAAgARAgCyIBQoCAgIBwg0KAgICA4ABRDQAgACACEIYBIgVCgICAgHCDQoCAgIDgAFENACAAQRAQJCICBEAgAkEANgIMIAIgBEEDcTYCCCACIAE3AwAgBUKAgICAcFQNAiAFpyACNgIgDAILIAAgBRAMCyAAIAEQDEKAgICA4AAPCyAFC8QBAQR\u002FIAGnIgUgAjYCICAFQgA3AiQCQCACKAI8IgZFDQACQCAAIAZBAnQQXCIIRQ0AIAUgCDYCJEEAIQUDQCAFIAIoAjxODQIgAigCJCAFQQN0aiIHLwECIQYCQCAHLQAAIgdBAXEEQCAAIAQgBiAHQQF2QQFxEP8DIgYNAQwDCyADIAZBAnRqKAIAIgYgBigCAEEBajYCAAsgCCAFQQJ0aiAGNgIAIAVBAWohBQwACwALIAAgARAMQoCAgIDgACEBCyABC4IBAQJ+IAAgARApIQICQCABQQBIDQAgACgCECgCOCABQQJ0aigCACkCBCIDp0GAgICAeEYgA0KAgICA8P\u002F\u002F\u002Fz+DUCADQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002Fv39WcSADQoCAgICAgICAQINCgICAgICAgICAf1FyRXINACAAQa\u002FwACACQa3wABCyASECCyACC2QBAn8CQAJAIAFCgICAgHBUDQAgARCUBQ0AQX8hAyAAIAIQMCIERQ0BIAAgBBDEBSECIAAgBBAQIAJCgICAgHCDQoCAgIDgAFENASAAIAFBNyACQQEQFUEASA0BC0EAIQMLIAMLNQACQCACRSABQoCAgIBwVHINACABEJQFDQAgACABQTcgACACEClBARAVQQBODQBBfw8LQQALDAAgACABQbYVELUBC2gCAX8BfgJAIAAgAUHqACABQQAQESIEQoCAgIBwg0KAgICA4ABSBEAgACAEECchAyAAIAFBwQAgAUEAEBEiAUKAgICAcINCgICAgOAAUg0BC0EAIQNCgICAgOAAIQELIAIgAzYCACABCxQBAn4gACABECAhAyAAIAEQDCADC\u002FsBAgR\u002FAX4gACgCyAEiBSgCECIEQTBqIQYgBCAEKAIYIAFxQX9zQQJ0aigCACEEAkADQCAERQ0BIAEgBiAEQQFrIgdBA3RqIgQoAgRHBEAgBCgCAEH\u002F\u002F\u002F8fcSEEDAELCyAFKAIUIAdBA3RqIQUCQCADQQFGDQAgBTUCBEIghkKAgICAwABRBEAgACACEAwgACAEKAIEENEBQX8PCyAELQADQQhxDQAgACACEAwgAEGAgAEgARDnAQ8LIAAgBSACEB1BAA8LIAAgACkDwAEiCCABIAIgCAJ\u002FIAAoAhAoAowBIgMEQEGAgAYgAygCKEEBcQ0BGgtBgIACCxDQAQuKAQEBfwJAIAJCgICAgHCDQoCAgICQf1EgA0KAgICAcINCgICAgJB\u002FUXFFBEAgAEGl5gBBABASDAELIAAgAUESEF4iAUKAgICAcINCgICAgOAAUQ0AIAGnIgQgAz4CJCAEIAI+AiAgACABQdYAQgBBAhAVGiABDwsgACADEAwgACACEAxCgICAgOAACw0AIAAgAUHMjQEQgQMLZwEBfwJAIAFBAE4EQCAAKAIQIgIoAiwgAU0NASACKAI4IAFBAnRqKAIAIgEgASgCAEEBajYCACAAIAFBBBDmAw8LQYaJAUGo7ABB1RdBycAAEAAAC0GQzgBBqOwAQdYXQcnAABAAAAuxAgEEfwJAAkACQAJAIAJCgICAgHBUDQAgAqciAy8BBhDgAUUNACADKAIoIgRFDQAgBCgCECIDQTBqIQUgAyADKAIYQX9zQQJ0QdR5cmooAgAhAwNAIANFDQMgBSADQQFrIgNBA3RqIgYoAgRBygFHBEAgBigCAEH\u002F\u002F\u002F8fcSEDDAELCyABQoCAgIBwVA0AIAQoAhQgA0EDdGopAwAiAkKAgICAcINCgICAgIB\u002FUQ0BCyAAECIMAgsgACACEIgCIQMgAacoAhAiAEEwaiEEIAAgAyAAKAIYcUF\u002Fc0ECdGooAgAhAANAIABFBEBBAA8LIAQgAEEDdGoiBUEIayEAIAMgBUEEaygCAEYEQCAAQQBHDwUgACgCAEH\u002F\u002F\u002F8fcSEADAELAAsACyAAQZ3kAEEAEBILQX8LRAEBfyAAQeQBaiECIABB4AFqIQADfyAAIAIoAgAiAkYEQEEADwsgASACQQRrKAIARgR\u002FIAJBCGsFIAJBBGohAgwBCwsLiQECA38BfgJAIAAoAhAoAowBIgJFDQADQCABQQBMBEADQCACKQMIIgRCgICAgHBUDQMgBKciAS8BBhDgAUUNAyABKAIgIgEvABEiA0GAwABxRQRAIANBgAhxRQ0EIAAgASgCQBAWDwsgAigCACICDQAMAwsACyABQQFrIQEgAigCACICDQALC0EACykBAX8gAkIgiKdBdU8EQCACpyIDIAMoAgBBAWo2AgALIAAgASACEIUEC\u002FQBAwF+An8BfANAAkBBfyEEAkACQAJAQQcgAkIgiKciBSAFQQdrQW5JGw4IAAAAAAICAwECCyACxCEDQQAhBAwCC0EAIQQgAkKAgICAwIGA\u002FP8AfCICQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWDQFCgICAgICAgICAfyEDIAK\u002FIgZEAAAAAAAA4MNjDQFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FACEDIAZEAAAAAAAA4ENkDQEgBplEAAAAAAAA4ENjBEAgBrAhAwwCC0KAgICAgICAgIB\u002FIQMMAQsgACACEJYBIgJCgICAgHCDQoCAgIDgAFINAQsLIAEgAzcDACAEC+YBAgN\u002FAXwDQAJAQX8hBAJAAkACQEEHIAJCIIinIgUgBUEHa0FuSRsOCAAAAAACAgMBAgsgAqchA0EAIQQMAgtBACEEIAJCgICAgMCBgPz\u002FAHwiAkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVgRADAILQYCAgIB4IQMgAr8iBkQAAAAAAADgwWMNAUH\u002F\u002F\u002F\u002F\u002FByEDIAZEAADA\u002F\u002F\u002F\u002F30FkDQEgBplEAAAAAAAA4EFjBEAgBqohAwwCC0GAgICAeCEDDAELIAAgAhCWASICQoCAgIBwg0KAgICA4ABSDQELCyABIAM2AgAgBAttAAJAAkACQAJAAkAgAkEEdkEDcUEBaw4DAAECAwsgASgCACICBEAgACACrUKAgICAcIQQIQsgASgCBCIBRQ0DIAAgAa1CgICAgHCEECEPCyAAIAEoAgAQ5QEPCyABEOAFDwsgACABKQMAECELC\u002FUBAQl\u002FQX8hAiABIAFBAWtxRQRAIABBEGoiCCABQQJ0IgMgACgCABEDACIFBH8gBUEAIAMQLCEGIAFB\u002F\u002F\u002F\u002F\u002FwNqQf\u002F\u002F\u002F\u002F8DcSEJIAAoAjQhBwNAIAQgACgCJE9FBEAgByAEQQJ0aigCACECA0AgAgRAIAAoAjggAkECdGooAgAiAygCDCEKIAMgBiAJIAMoAghxQQJ0aiIDKAIANgIMIAMgAjYCACAKIQIMAQsLIARBAWohBAwBCwsgCCAHIAAoAgQRAAAgACABQQF0NgIwIAAgATYCJCAAIAY2AjRBAAVBfwsPC0GbhwFBqOwAQYcUQe3HABAAAAu0AwEHfyADIAEoAgAiBSgCHEEDbEECbSIEIAMgBEobIQcCQCACBEAgACACKAIUIAdBA3QQxQIiA0UNASACIAM2AhQLIAUoAhhBAWohAwNAIAMiAkEBdCEDIAIgB0kNAAsgACACQQJ0IgYgB0EDdGpBMGoQJCIIRQ0AIAUoAggiAyAFKAIMIgQ2AgQgBCADNgIAIAVCADcCCCAGIAhqIAUgBSgCIEEDdEEwahAeIQQgACgCECIDKAJQIgkgBEEIaiIKNgIEIAQgA0HQAGo2AgwgBCAJNgIIIAMgCjYCUAJAIAQoAhhBAWogAkcEQCAEIAJBAWsiCTYCGEEAIQMgCEEAIAYQLBogBEEwaiECA0AgAyAEKAIgTw0CAkAgAigCBCIGRQRAIANBAWohAwwBCyACIAIoAgBBgICAYHEgBCAGIAlxQX9zQQJ0aiIGKAIAQf\u002F\u002F\u002Fx9xcjYCACAGIANBAWoiAzYCAAsgAkEIaiECDAALAAsgCCAFIAJBAnRrIAYQHhoLIAAoAhAiAEEQaiAFIAUoAhhBf3NBAnRqIAAoAgQRAAAgASAENgIAIAQgBzYCHEEADwtBfwvbAQEDfwJAIAAgASgCGEEBakECdCICIAEoAhxBA3RqQTBqIgMQJCIERQRAQQAhAgwBCyAEIAEgASgCGEF\u002Fc0ECdGogAxAeIAJqIgJBATYCACAAKAIQIQEgAkECOgAEIAEoAlAiAyACQQhqIgQ2AgQgAiABQdAAajYCDCACIAM2AgggASAENgJQQQAhASACQQA6ABAgAigCLCIDBEAgAyADKAIAQQFqNgIACyACQTBqIQMDQCABIAIoAiBPDQEgACADKAIEEBYaIANBCGohAyABQQFqIQEMAAsACyACC2YBA38jAEEQayIDJAAgACABKAIkIAIgASgCIEEDbEEBdiIAIAAgAkgbIgBBA3QgA0EMahCnASICBH8gAygCDCEEIAEgAjYCJCABIARBA3YgAGo2AiBBAAVBfwshBSADQRBqJAAgBQtsAgN\u002FAXwjAEEQayICJAACfyABQiCIpyIDBEBBACADQQtqQRJJDQEaC0F\u002FIAAgAkEIaiABEEINABogAisDCCIFvUKAgICAgICA+P8Ag0KAgICAgICA+P8AUiAFnCAFYXELIQQgAkEQaiQAIAQL9QICA38BfiMAQRBrIgMkAAJAAkACQAJAAkADQAJAQoCAgIDAfiEGAkACQAJAQQcgAUIgiKciBCAEQQdrQW5JG0EKag4SAAYFAwYGBgYGAgcBAQkGBgcHBgsgAkEBRg0GIAAgARAMIABB6zRBABASDAcLIAFC\u002F\u002F\u002F\u002F\u002Fw+DIQYMBwtCgICAgOAAIQYgACABQQEQkgEiAUKAgICAcINCgICAgOAAUg0BDAYLCyAAIANBCGogARDfASECIAAgARAMIAJFDQMgAyACIAIQ\u002FgEiBGoiBTYCDEIAIQYCQCAEIAMoAghGDQAgACAFIANBDGpBAEEEEIACIgZCgICAgHCDQoCAgIDgAFENACADIAMoAgwQ\u002FgEgAygCDGoiBDYCDCADKAIIIAQgAmtGDQAgACAGEAxCgICAgMB+IQYLIAAgAhAxDAQLIAAgARAMIABBizVBABASDAILIAAgARAMDAILIAEhBgwBC0KAgICA4AAhBgsgA0EQaiQAIAYLsgEBAX8CQANAAkACQAJAAkACQEEHIAJCIIinIgMgA0EHa0FuSRsiA0EKag4EAQQEAgALAkAgA0EBag4DAwQABAsgACgC2AEgARC7ASABIALEEJwCGiABDwsgAqdBBGoPCyAAIAIQnwUiAkKAgICAcINCgICAgOAAUg0CDAMLIAAgAkEBEJIBIgJCgICAgHCDQoCAgIDgAFINAQwCCwsgACACEAwgAEHdGUEAEBJBAA8LQQAL7gEBAXwgAQJ\u002FAkADQAJAAkACQEEHIAJCIIinIgEgAUEHa0FuSRsOCAAAAAACAgIBAgtBACEAQf8BIAKnIgEgAUH\u002FAU4bIgFBACABQQBKGwwEC0EAIQAgAkKAgICAwIGA\u002FP8AfCICQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWDQIgAr8iA0QAAAAAAAAAAGMNAkH\u002FASADRAAAAAAA4G9AZA0DGgJ\u002FIAOeIgOZRAAAAAAAAOBBYwRAIAOqDAELQYCAgIB4CwwDCyAAIAIQlgEiAkKAgICAcINCgICAgOAAUg0AC0F\u002FIQALQQALNgIAIAALiQYCA38BfiMAQRBrIggkAAJAAkACQAJAAkAgAS0ABSIHQQRxRQ0AIAEvAQYiCUECRgRAAkAgB0EIcQRAAkAgAkEASARAIAggAkH\u002F\u002F\u002F\u002F\u002FB3EiCTYCDCAJIAEoAihHDQEgB0EBcUUNBiAGQYAwcSAGIAZBCHZxQQdxQQdHcg0BIANCIIinQXVPBEAgA6ciAiACKAIAQQFqNgIACyAAIAEgAyAGEIYEIQcMCQsgACAIQQxqIAIQpQFFDQQLQX8hByAAIAEQjgNFDQEMBwsgACAIQQxqIAIQpQFFDQILIAAgCEEIaiABKAIUIgkpAwAQdRogCCgCDEEBaiIHIAgoAghNDQEgASgCEC0AM0EIcUUEQCAAIAZBMBDnASEHDAYLIAggBzYCCCAAIAkgB0EATgR+IAetBUKAgICAwH4gB7i9IgpCgICAgMCBgPz\u002FAH0gCkKAgICAgICA+P8AVhsLEB0MAQsgCUEVa0H\u002F\u002FwNxQQpNBEAgACACEJMDIgdFDQEgB0EASA0EIAAgBkH7DRB8IQcMBQsgBkGAgAhxDQAgACgCECgCRCAJQRhsaigCFCIHRQ0AIAGtQoCAgIBwhCEKIAcoAgwiBwRAIAAgCiACIAMgBCAFIAYgBxEiACEHDAULIAAgChCXASIHQQBIDQMgB0UNAQsgAS0ABUEBcQ0BCyAAIAZBhdgAEHwhBwwCCyAAIAEgAiAGQQVxQRByIAZBB3EgBkGAMHEiAhsQdyIBRQ0AIAIEQCABQQA2AgACQCAGQYAQcUUNACAAIAQQNUUNACAEpyECIARCIIinQXVPBEAgAiACKAIAQQFqNgIACyABIAI2AgALIAFBADYCBEEBIQcgBkGAIHFFDQIgACAFEDVFDQIgBachACAFQiCIp0F1TwRAIAAgACgCAEEBajYCAAsgASAANgIEDAILAkAgBkGAwABxBEAgA0IgiKdBdU8EQCADpyIAIAAoAgBBAWo2AgALIAEgAzcDAAwBCyABQoCAgIAwNwMAC0EBIQcMAQtBfyEHCyAIQRBqJAAgBwu2BQEKfyMAQRBrIgUkAAJ\u002FQX8gACAFQQxqIAJBABC+Ag0AGiABKAIQLQAzQQhxRQRAIAAgA0EwEOcBDAELIAEtAAVBCHEEQCAFKAIMIgMgASgCKCIHSQRAIAMhBANAIAQgB0ZFBEAgACABKAIkIARBA3RqKQMAEAwgBEEBaiEEDAELCyABIAM2AigLIAEoAhQgA0EATgR+IAOtBUKAgICAwH4gA7i9IgJCgICAgMCBgPz\u002FAH0gAkKAgICAgICA+P8AVhsLNwMAQQEMAQsgACAFQQRqIAEoAhQpAwAQdRoCQAJAAkACQCAFKAIEIgYgBSgCDCIHSwRAIAEoAhAiCigCICIEIAYgB2tPBEAgBSgCBCEEA0AgBiAHTQ0FIAAgASAAIAZBAWsQ7AUiBhCEBCEMIAAgBhAQIAxFDQMgBEEBayIEIQYMAAsACyAFIAc2AgQgByEJIApBMGoiBiEIA0AgBCALTARAIAUgCTYCBEEAIQgDQCAEIAhMDQUCQCAGKAIEIgRFDQAgACAFQQhqIAQQpQFFDQAgBSgCCCAJSQ0AIAAgASAGKAIEEIQEGiABKAIQIgogCEEDdGpBMGohBgsgBkEIaiEGIAhBAWohCCAKKAIgIQQMAAsABQJAIAgoAgQiBEUNACAAIAVBCGogBBClAUUNACAFKAIIIgQgCUkNACAJIARBAWogCC0AA0EEcRshCQsgCEEIaiEIIAtBAWohCyAKKAIgIQQMAQsACwALIAUgBzYCBCAHIQYMAwsgBSAENgIECyAFKAIEIQYMAQsgBSAENgIECyAAIAEoAhQgBkEATgR+IAatBUKAgICAwH4gBri9IgJCgICAgMCBgPz\u002FAH0gAkKAgICAgICA+P8AVhsLEB1BASAFKAIEIAdNDQAaIAAgA0H72AAQfAshDSAFQRBqJAAgDQu5BAIFfwJ+IwBBEGsiBSQAAkAgAUEASARAIAFB\u002F\u002F\u002F\u002F\u002FwdxrSEHDAELAkAgASAAKAIQIgIoAixJBEACQCACKAI4IAFBAnRqKAIAIgEpAgQiB0KAgICAgICAgECDQoCAgICAgICAwABSDQAgB6dB\u002F\u002F\u002F\u002F\u002FwdxIQQCQCAHQoCAgIAIg1BFBEAgBEUNAgJAIAEvARAiAkEtRwRAIAFBEGohAwwBCyABQRJqIQMgAS8BEiECIARBAkcNAEKAgICAwP7\u002FAyEHIAJBMEYNBgsgAkE6a0F1Sw0BIAVB+QA7AQ4gBUHpgNADNgEKIAVC7oCYg5CNgDc3AQIgAkHJAEcgASAEQQF0akEQaiADa0EQR3INAiADQQJqIAVBAmpBDhBoRQ0BDAILIARFDQECQCABLQAQIgJBLUcEQCABQRBqIQMMAQsgAUERaiEDIAEtABEhAiAEQQJHDQBCgICAgMD+\u002FwMhByACQf8BcUEwRg0FCyACQf8BcSICQTprQXVLDQAgAkHJAEcgASAEakEQaiADa0EIR3INASADQQFqQdILQQcQaA0BCyABIAEoAgBBAWo2AgAgACABrUKAgICAkH+EEJYBIghCgICAgHCDQoCAgIDgAFENAiAAIAgQJSIHQoCAgIBwg0KAgICA4ABRBEAgACAIEAwMBAsgASAHpxC8AiEGIAAgBxAMIAZFDQIgACAIEAwLQoCAgIAwIQcMAgtBps4AQajsAEHgGEGTgwEQAAALIAghBwsgBUEQaiQAIAcLDQAgACgCAEF8cRCeAwufAgIEfwF+AkAgACACEDVFDQAgAqciBS8BBkEORgRAIAAgASAFKAIgKQMAEOIFDwsgAUKAgICAcFQNAAJAIAAgAkE8IAJBABARIgdC\u002F\u002F\u002F\u002F\u002F29YBEBBfyEEIAdCgICAgHCDQoCAgIDgAFENASAAQcweQQAQEgwBCyABpyEDIAenIQYDQAJAIAMoAhAoAiwiBUUEQCADLwEGQSxHDQMgAyADKAIAQQFqNgIAIAOtQoCAgIBwhCEBAkADQCAAIAEQwgIiAUKAgICAcIMiAkKAgICAIFENBSACQoCAgIDgAFENASABpyAGRgRAIAAgARAMDAQLIAAQdkUNAAsgACABEAwLQX8hBAwDCyAFIgMgBkcNAQsLQQEhBAsgACAHEAwLIAQLowECAn8CfiMAQRBrIgMkACADIAE3AwgCfwJAIAJCgICAgHBaBEAgACACQdQBIAJBABARIgZCgICAgHCDIgVCgICAgCBRIAVCgICAgDBRckUEQEF\u002FIAVCgICAgOAAUQ0DGiAAIAAgBiACQQEgA0EIahA2ECcMAwsgACACEDUNAQsgAEH84gBBABASQX8MAQsgACABIAIQ4QULIQQgA0EQaiQAIAQLmgUBCX8jAEEQayICJAAgAkEANgIMIAJCADcDACACQX82AggCQAJAIAJBwAJByJsBKAIAEQMAIgQEQCAEQQBBwAIQLCIAQdCbASkCADcCCCAAQcibASkCADcCACAAKAIMRQRAIABBATYCDAsgACACKQMANwMQIAAgAikDCDcDGCAAQYCAEDYCbCAAQeQBaiIBQQhqQQBBNBAsGiABIAA2AgAgAUECNgIEIABBAzYCuAIgAEEENgK0AiAAQQU2AqwCIABBBjYCqAIgAEEHNgKkAiAAQQg2AqACIAAgAEGgAWoiATYCpAEgACABNgKgASAAQQA6AGggACAAQdgAaiIBNgJcIAAgATYCWCAAIABB0ABqIgE2AlQgACABNgJQIAAgAEHIAGoiATYCTCAAIAE2AkggAEEANgI0IABBADYCJCAAQQA2AjwgAEIANwMoAkAgAEGAAhDVBQ0AIABBEGohCEHwngEhA0EBIQEDQCABQdgBRwRAIAAgAxA9IgVBABDoBSIGBH8gBkEQaiADIAUQHiAFakEAOgAAIAAgBkEEQQNBASABQcoBSxsgAUHKAUYbEMcCBUEAC0UNAiABQQFqIQEgAyAFakEBaiEDDAELCyAAQfCWAUEBQSsQgQRBAEgNACAAKAJEIgFBCTYC+AIgAUEKNgKwAiABQaybATYCnAIgAUGQmwE2AowBIAFB9JoBNgLUASABQQs2ApADIAFBDDYC4AIgAEEANgLcASAAQoSAgICAAjcC1AEgCEHAACAAKAIAEQMAIgENAiAAQQA2AuABCyAAEMAFC0EAIQQMAQsgAUEAQcAAECwhASAAQoCAgIAgNwOAASAAQYCAcDYCeCAAQoCAEDcDcCAAIAE2AuABCyACQRBqJAAgBAuBAQIBfgF\u002FIwBBgAJrIgYkACAGQYACIAIgAxDJAhoCQCAAIAAgAUEDdGopA1hBAxBHIgVCgICAgHCDQoCAgIDgAFEEQEKAgICAICEFDAELIAAgBUEzIAAgBhBgQQMQFRoLIAQEQCAAIAVBAEEAQQAQtAILIAAgBRCYASAGQYACaiQAC54DAgR\u002FAX4jAEEQayIGJAACQAJAAkACQCACQQBIBEAgBiACQf\u002F\u002F\u002F\u002F8HcTYCACABQcAAQcURIAYQSBoMAQsgACgCLCACTQ0CIAJFBEAgAUGhgAEoAAA2AAMgAUGegAEoAAA2AAAMAQsgACgCOCACQQJ0aigCACIEQQFxDQMgASECAkAgBEUNACAEKQIEIgdCgICAgAiDUARAIARBEGohAyAHpyEFQQAhAkEAIQADQCACIAVGRQRAIAAgAiADai0AAHIhACACQQFqIQIMAQsLIABBgAFIDQMLIARBEGohBUEAIQAgASECA0AgACAHp0H\u002F\u002F\u002F\u002F\u002FB3FPDQECfyAHQoCAgIAIg1BFBEAgBSAAQQF0ai8BAAwBCyAAIAVqLQAACyEDIAIgAWtBOUoNAQJ\u002FIANB\u002FwBNBEAgAiADOgAAIAJBAWoMAQsgAiADEN0CIAJqCyECIABBAWohACAEKQIEIQcMAAsACyACQQA6AAALIAEhAwsgBkEQaiQAIAMPC0GmzgBBqOwAQeYXQbLxABAAAAtBo4kBQajsAEHwF0Gy8QAQAAALVAECfyAAQQE6AGggAEHYAGohAgJAA0AgAiAAKAJcIgFHBEAgAUEIayIBKAIADQIgACABEIsFDAELCyAAQQA6AGgPC0GkhgFBqOwAQfEqQegWEAAAC8QDAQJ\u002FIAAoAhAiAygCFEEwaiADKAJsSwRAIAMQnQUgAyADKAIUIgNBAXYgA2o2AmwLAkAgAEEwECQiAwRAIANBADYCICADQQA2AhggA0EBOgAFIAMgAjsBBiADIAE2AhAgAyAAIAEoAhxBA3QQJCIENgIUIAQNASAAKAIQIgJBEGogAyACKAIEEQAACyAAKAIQIAEQjAJCgICAgOAADwsCQAJAAkACQAJAAkACQAJAIAJBAWsOIQcABgQEBAQCBgQGAQYGBgYGBQYGAgICAgICAgICAgIDBAYLIANBADYCKCADQgA3AyAgAyADLQAFQQxyOgAFIAEgACgCJEcEfyAAIANBMEEKEHcFIAQLQgA3AwAMBgsgBEKAgICAMDcDAAwFCyADQgA3AiQgAyADLQAFQQxyOgAFDAQLIANCADcCJAwDCyADQoCAgIAwNwMgDAELIANCADcDIAsgACgCECgCRCACQRhsaigCFEUNACADIAMtAAVBBHI6AAULIANBATYCACAAKAIQIQAgA0EAOgAEIAAoAlAiASADQQhqIgI2AgQgAyAAQdAAajYCDCADIAE2AgggACACNgJQIAOtQoCAgIBwhAtEACAAQRBqIAEgAnQgAmtBEWogACgCABEDACIABEAgAEEANgIMIABBATYCACAAIAFB\u002F\u002F\u002F\u002F\u002FwdxIAJBH3RyrTcCBAsgAAv1AQIBfwJ+IwBB0ABrIgMkAAJAAn4gAUEASARAIAMgAUH\u002F\u002F\u002F\u002F\u002FB3E2AgAgA0EQaiIBQcAAQcURIAMQSBogACABEGAMAQsgACgCECIAKAIsIAFNDQECQAJAIAAoAjgiACABQQJ0aigCACIBKQIEIgRCgICAgICAgIBAg0KAgICAgICAgMAAUQ0AIAJFDQEgBKdBgICAgHhHDQAgACgCvAEhAQsgASABKAIAQQFqNgIAIAGtQoCAgICQf4QMAQsgASABKAIAQQFqNgIAIAGtQoCAgICAf4QLIQUgA0HQAGokACAFDwtBps4AQajsAEGfGEH8zwAQAAALqwECAX4CfyABKQIEQoCAgIAIgyEDIAAtAAdBgAFxRQRAIANQBEAgAEEQaiABQRBqIAIQaA8LQQAgAUEQaiAAQRBqIAIQmgVrDwsgAUEQaiEEIABBEGohACADUARAIAAgBCACEJoFDwsgAkEAIAJBAEobIQVBACEBA0AgASAFRgRAQQAPCyABQQF0IQIgAUEBaiEBIAAgAmovAQAgAiAEai8BAGsiAkUNAAsgAgtsAgJ\u002FAX4gAEEQaiECIAApAgQiBKchAAJAIARCgICAgAiDUEUEQCAAQf\u002F\u002F\u002F\u002F8HcSEDQQAhAANAIAAgA0YNAiACIABBAXRqLwEAIAFBhwJsaiEBIABBAWohAAwACwALIAIgACABEO4FIQELIAELcAICfwF+IwBBEGsiAiQAAkAgAUEATgRAIAFBgICAgHhyIQMMAQsgAiABNgIAIAJBBWoiAUELQcURIAIQSBogACABEGAiBEKAgICAcINCgICAgOAAUQ0AIAAoAhAgBKdBARDHAiEDCyACQRBqJAAgAwvTAQIFfwF+AkAgASkCBCIHp0H\u002F\u002F\u002F\u002F\u002FB3EiBEELa0F2SQ0AAn8gB0KAgICACINQIgZFBEAgAS8BEAwBCyABLQAQCyIDQTBrIgJBCUsNAAJ\u002FAkAgA0EwRwRAIAFBEGohBUEBIQEDQCABIARGDQICfyAGRQRAIAUgAUEBdGovAQAMAQsgASAFai0AAAtBMGsiA0EJSw0EIAFBAWohASADrSACrUIKfnwiB6chAiAHQoCAgIAQVA0ACwwDC0EAIgIgBEEBRw0BGgsgACACNgIAQQELDwtBAAssAQF\u002FA0AgASADRkUEQCAAIANqLQAAIAJBhwJsaiECIANBAWohAwwBCwsgAgteAQF\u002FAkAgAUKAgICAcFQNACABpyIELwEGIANHDQAgBCgCICIERQ0AIAQpAwAiAUKAgICAYFoEQCAAIAGnIAIRAAALIAQpAwgiAUKAgICAYFQNACAAIAGnIAIRAAALC0oBAX8CQCABQoCAgIBwVA0AIAGnIgMvAQYgAkcNACADKAIgIgNFDQAgACADKQMAECEgACADKQMIECEgAEEQaiADIAAoAgQRAAALCzgBAX8gAEEwayIEQQpPBH8gAEHBAGsgA00EQCAAQTdrDwsgAiAAQdcAayAAQeEAayABTxsFIAQLC6IDAQJ\u002FIAAgASgCBBAQA0AgASgCECEDIAIgASgCFE5FBEAgACADIAJBA3RqKAIAEBAgAkEBaiECDAELCyAAKAIQIgJBEGogAyACKAIEEQAAQQAhAgNAAkAgASgCHCEDIAIgASgCIE4NACADIAJBFGxqIgMoAghFBEAgACgCECADKAIEEOUBCyAAIAMoAhAQECAAIAMoAgwQECACQQFqIQIMAQsLIAAoAhAiAkEQaiADIAIoAgQRAAAgACgCECICQRBqIAEoAiggAigCBBEAAEEAIQIDQCABKAI0IQMgAiABKAI4TkUEQCAAIAMgAkEMbGooAgQQECACQQFqIQIMAQsLIAAoAhAiAkEQaiADIAIoAgQRAAAgACgCECICQRBqIAEoAmQgAigCBBEAACAAIAEpA0AQDCAAIAEpA0gQDCAAIAEpA6gBEAwgACABKQOwARAMIAAgASkDiAEQDCAAIAEpA5ABEAwgACABKQOYARAMIAEoAggiAiABKAIMIgM2AgQgAyACNgIAIAFCADcCCCAAKAIQIgBBEGogASAAKAIEEQAAC9IDAgJ+An8jAEEgayIEJAACQCABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDIgNCgICAgICAwIA8fSADQoCAgICAgMD\u002FwwB9VARAIAFCBIYgAEI8iIQhAyAAQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FD4MiAEKBgICAgICAgAhaBEAgA0KBgICAgICAgMAAfCECDAILIANCgICAgICAgIBAfSECIABCgICAgICAgIAIUg0BIAIgA0IBg3whAgwBCyAAUCADQoCAgICAgMD\u002F\u002FwBUIANCgICAgICAwP\u002F\u002FAFEbRQRAIAFCBIYgAEI8iIRC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwODQoCAgICAgID8\u002FwCEIQIMAQtCgICAgICAgPj\u002FACECIANC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002Fv\u002F\u002FDAFYNAEIAIQIgA0IwiKciBUGR9wBJDQAgBEEQaiAAIAFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP4NCgICAgICAwACEIgIgBUGB9wBrEGIgBCAAIAJBgfgAIAVrEI0CIAQpAwhCBIYgBCkDACIAQjyIhCECIAQpAxAgBCkDGIRCAFKtIABC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Pg4QiAEKBgICAgICAgAhaBEAgAkIBfCECDAELIABCgICAgICAgIAIUg0AIAJCAYMgAnwhAgsgBEEgaiQAIAIgAUKAgICAgICAgIB\u002Fg4S\u002FC6oPAgV\u002FD34jAEHQAmsiBSQAIARC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP4MhCiACQv\u002F\u002F\u002F\u002F\u002F\u002F\u002Fz+DIQsgAiAEhUKAgICAgICAgIB\u002FgyEMIARCMIinQf\u002F\u002FAXEhCAJAAkAgAkIwiKdB\u002F\u002F8BcSIJQf\u002F\u002FAWtBgoB+TwRAIAhB\u002F\u002F8Ba0GBgH5LDQELIAFQIAJC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAIMiDUKAgICAgIDA\u002F\u002F8AVCANQoCAgICAgMD\u002F\u002FwBRG0UEQCACQoCAgICAgCCEIQwMAgsgA1AgBEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8AgyICQoCAgICAgMD\u002F\u002FwBUIAJCgICAgICAwP\u002F\u002FAFEbRQRAIARCgICAgICAIIQhDCADIQEMAgsgASANQoCAgICAgMD\u002F\u002FwCFhFAEQCADIAJCgICAgICAwP\u002F\u002FAIWEUARAQgAhAUKAgICAgIDg\u002F\u002F8AIQwMAwsgDEKAgICAgIDA\u002F\u002F8AhCEMQgAhAQwCCyADIAJCgICAgICAwP\u002F\u002FAIWEUARAQgAhAQwCCyABIA2EUARAQoCAgICAgOD\u002F\u002FwAgDCACIAOEUBshDEIAIQEMAgsgAiADhFAEQCAMQoCAgICAgMD\u002F\u002FwCEIQxCACEBDAILIA1C\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP1gEQCAFQcACaiABIAsgASALIAtQIgYbeSAGQQZ0rXynIgZBD2sQYkEQIAZrIQYgBSkDyAIhCyAFKQPAAiEBCyACQv\u002F\u002F\u002F\u002F\u002F\u002F\u002Fz9WDQAgBUGwAmogAyAKIAMgCiAKUCIHG3kgB0EGdK18pyIHQQ9rEGIgBiAHakEQayEGIAUpA7gCIQogBSkDsAIhAwsgBUGgAmogCkKAgICAgIDAAIQiEkIPhiADQjGIhCICQgBCgICAgLDmvIL1ACACfSIEQgAQYSAFQZACakIAIAUpA6gCfUIAIARCABBhIAVBgAJqIAUpA5gCQgGGIAUpA5ACQj+IhCIEQgAgAkIAEGEgBUHwAWogBEIAQgAgBSkDiAJ9QgAQYSAFQeABaiAFKQP4AUIBhiAFKQPwAUI\u002FiIQiBEIAIAJCABBhIAVB0AFqIARCAEIAIAUpA+gBfUIAEGEgBUHAAWogBSkD2AFCAYYgBSkD0AFCP4iEIgRCACACQgAQYSAFQbABaiAEQgBCACAFKQPIAX1CABBhIAVBoAFqIAJCACAFKQO4AUIBhiAFKQOwAUI\u002FiIRCAX0iAkIAEGEgBUGQAWogA0IPhkIAIAJCABBhIAVB8ABqIAJCAEIAIAUpA6gBIAUpA6ABIg0gBSkDmAF8IgQgDVStfCAEQgFWrXx9QgAQYSAFQYABakIBIAR9QgAgAkIAEGEgBiAJIAhraiEGAn8gBSkDcCITQgGGIg4gBSkDiAEiD0IBhiAFKQOAAUI\u002FiIR8IhBC5+wAfSIUQiCIIgIgC0KAgICAgIDAAIQiFUIBhiIWQiCIIgR+IhEgAUIBhiINQiCIIgogECAUVq0gDiAQVq0gBSkDeEIBhiATQj+IhCAPQj+IfHx8QgF9IhNCIIgiEH58Ig4gEVStIA4gDiATQv\u002F\u002F\u002F\u002F8PgyITIAFCP4giFyALQgGGhEL\u002F\u002F\u002F\u002F\u002FD4MiC358Ig5WrXwgBCAQfnwgBCATfiIRIAsgEH58Ig8gEVStQiCGIA9CIIiEfCAOIA4gD0IghnwiDlatfCAOIA4gFEL\u002F\u002F\u002F\u002F\u002FD4MiFCALfiIRIAIgCn58Ig8gEVStIA8gDyATIA1C\u002Fv\u002F\u002F\u002Fw+DIhF+fCIPVq18fCIOVq18IA4gBCAUfiIYIBAgEX58IgQgAiALfnwiCyAKIBN+fCIQQiCIIAsgEFatIAQgGFStIAQgC1atfHxCIIaEfCIEIA5UrXwgBCAPIAIgEX4iAiAKIBR+fCIKQiCIIAIgClatQiCGhHwiAiAPVK0gAiAQQiCGfCACVK18fCICIARUrXwiBEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAFgEQCAWIBeEIRUgBUHQAGogAiAEIAMgEhBhIAFCMYYgBSkDWH0gBSkDUCIBQgBSrX0hCkIAIAF9IQsgBkH+\u002FwBqDAELIAVB4ABqIARCP4YgAkIBiIQiAiAEQgGIIgQgAyASEGEgAUIwhiAFKQNofSAFKQNgIg1CAFKtfSEKQgAgDX0hCyABIQ0gBkH\u002F\u002FwBqCyIGQf\u002F\u002FAU4EQCAMQoCAgICAgMD\u002F\u002FwCEIQxCACEBDAELAn4gBkEASgRAIApCAYYgC0I\u002FiIQhASAEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002Fz+DIAatQjCGhCEKIAtCAYYMAQsgBkGPf0wEQEIAIQEMAgsgBUFAayACIARBASAGaxCNAiAFQTBqIA0gFSAGQfAAahBiIAVBIGogAyASIAUpA0AiAiAFKQNIIgoQYSAFKQM4IAUpAyhCAYYgBSkDICIBQj+IhH0gBSkDMCIEIAFCAYYiDVStfSEBIAQgDX0LIQQgBUEQaiADIBJCA0IAEGEgBSADIBJCBUIAEGEgCiACIAIgAyAEIAJCAYMiBHwiA1QgASADIARUrXwiASASViABIBJRG618IgJWrXwiBCACIAIgBEKAgICAgIDA\u002F\u002F8AVCADIAUpAxBWIAEgBSkDGCIEViABIARRG3GtfCICVq18IgQgAiAEQoCAgICAgMD\u002F\u002FwBUIAMgBSkDAFYgASAFKQMIIgNWIAEgA1Ebca18IgEgAlStfCAMhCEMCyAAIAE3AwAgACAMNwMIIAVB0AJqJAALwAECAX8CfkF\u002FIQMCQCAAQgBSIAFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAIMiBEKAgICAgIDA\u002F\u002F8AViAEQoCAgICAgMD\u002F\u002FwBRGw0AIAJC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAIMiBUKAgICAgIDA\u002F\u002F8AViAFQoCAgICAgMD\u002F\u002FwBScQ0AIAAgBCAFhIRQBEBBAA8LIAEgAoNCAFkEQCABIAJSIAEgAlNxDQEgACABIAKFhEIAUg8LIABCAFIgASACVSABIAJRGw0AIAAgASAChYRCAFIhAwsgAwtAAQN\u002FIABB4AFqIQQgACgC5AEhAwNAIAQgAyICRwRAIAIoAgQhAyABBEAgAi0ATQ0CCyAAIAJBCGsQ8gUMAQsLC7QLAQZ\u002FIAAgAWohBQJAAkAgACgCBCICQQFxDQAgAkECcUUNASAAKAIAIgIgAWohAQJAAkACQCAAIAJrIgBB2N4EKAIARwRAIAAoAgwhAyACQf8BTQRAIAJBA3YhAiAAKAIIIgQgA0cNAkHE3gRBxN4EKAIAQX4gAndxNgIADAULIAAoAhghBiAAIANHBEBB1N4EKAIAGiAAKAIIIgIgAzYCDCADIAI2AggMBAsgACgCFCIEBH8gAEEUagUgACgCECIERQ0DIABBEGoLIQIDQCACIQcgBCIDQRRqIQIgAygCFCIEDQAgA0EQaiECIAMoAhAiBA0ACyAHQQA2AgAMAwsgBSgCBCICQQNxQQNHDQNBzN4EIAE2AgAgBSACQX5xNgIEIAAgAUEBcjYCBCAFIAE2AgAPCyAEIAM2AgwgAyAENgIIDAILQQAhAwsgBkUNAAJAIAAoAhwiAkECdEH04ARqIgQoAgAgAEYEQCAEIAM2AgAgAw0BQcjeBEHI3gQoAgBBfiACd3E2AgAMAgsgBkEQQRQgBigCECAARhtqIAM2AgAgA0UNAQsgAyAGNgIYIAAoAhAiAgRAIAMgAjYCECACIAM2AhgLIAAoAhQiAkUNACADIAI2AhQgAiADNgIYCwJAAkACQAJAIAUoAgQiAkECcUUEQEHc3gQoAgAgBUYEQEHc3gQgADYCAEHQ3gRB0N4EKAIAIAFqIgE2AgAgACABQQFyNgIEIABB2N4EKAIARw0GQczeBEEANgIAQdjeBEEANgIADwtB2N4EKAIAIAVGBEBB2N4EIAA2AgBBzN4EQczeBCgCACABaiIBNgIAIAAgAUEBcjYCBCAAIAFqIAE2AgAPCyACQXhxIAFqIQEgBSgCDCEDIAJB\u002FwFNBEAgAkEDdiECIAUoAggiBCADRgRAQcTeBEHE3gQoAgBBfiACd3E2AgAMBQsgBCADNgIMIAMgBDYCCAwECyAFKAIYIQYgAyAFRwRAQdTeBCgCABogBSgCCCICIAM2AgwgAyACNgIIDAMLIAUoAhQiBAR\u002FIAVBFGoFIAUoAhAiBEUNAiAFQRBqCyECA0AgAiEHIAQiA0EUaiECIAMoAhQiBA0AIANBEGohAiADKAIQIgQNAAsgB0EANgIADAILIAUgAkF+cTYCBCAAIAFBAXI2AgQgACABaiABNgIADAMLQQAhAwsgBkUNAAJAIAUoAhwiAkECdEH04ARqIgQoAgAgBUYEQCAEIAM2AgAgAw0BQcjeBEHI3gQoAgBBfiACd3E2AgAMAgsgBkEQQRQgBigCECAFRhtqIAM2AgAgA0UNAQsgAyAGNgIYIAUoAhAiAgRAIAMgAjYCECACIAM2AhgLIAUoAhQiAkUNACADIAI2AhQgAiADNgIYCyAAIAFBAXI2AgQgACABaiABNgIAIABB2N4EKAIARw0AQczeBCABNgIADwsgAUH\u002FAU0EQCABQXhxQezeBGohAgJ\u002FQcTeBCgCACIDQQEgAUEDdnQiAXFFBEBBxN4EIAEgA3I2AgAgAgwBCyACKAIICyEBIAIgADYCCCABIAA2AgwgACACNgIMIAAgATYCCA8LQR8hAyABQf\u002F\u002F\u002FwdNBEAgAUEmIAFBCHZnIgJrdkEBcSACQQF0a0E+aiEDCyAAIAM2AhwgAEIANwIQIANBAnRB9OAEaiECAkACQEHI3gQoAgAiBEEBIAN0IgdxRQRAQcjeBCAEIAdyNgIAIAIgADYCACAAIAI2AhgMAQsgAUEZIANBAXZrQQAgA0EfRxt0IQMgAigCACECA0AgAiIEKAIEQXhxIAFGDQIgA0EddiECIANBAXQhAyAEIAJBBHFqIgdBEGooAgAiAg0ACyAHIAA2AhAgACAENgIYCyAAIAA2AgwgACAANgIIDwsgBCgCCCIBIAA2AgwgBCAANgIIIABBADYCGCAAIAQ2AgwgACABNgIICwuQCAELfyAARQRAIAEQjwIPCyABQUBPBEBBxNQEQTA2AgBBAA8LAn9BECABQQtqQXhxIAFBC0kbIQUgAEEIayIEKAIEIglBeHEhCAJAIAlBA3FFBEBBACAFQYACSQ0CGiAFQQRqIAhNBEAgBCECIAggBWtBpOIEKAIAQQF0TQ0CC0EADAILIAQgCGohBgJAIAUgCE0EQCAIIAVrIgNBEEkNASAEIAlBAXEgBXJBAnI2AgQgBCAFaiICIANBA3I2AgQgBiAGKAIEQQFyNgIEIAIgAxD3BQwBC0Hc3gQoAgAgBkYEQEHQ3gQoAgAgCGoiCCAFTQ0CIAQgCUEBcSAFckECcjYCBCAEIAVqIgMgCCAFayICQQFyNgIEQdDeBCACNgIAQdzeBCADNgIADAELQdjeBCgCACAGRgRAQczeBCgCACAIaiIDIAVJDQICQCADIAVrIgJBEE8EQCAEIAlBAXEgBXJBAnI2AgQgBCAFaiIIIAJBAXI2AgQgAyAEaiIDIAI2AgAgAyADKAIEQX5xNgIEDAELIAQgCUEBcSADckECcjYCBCADIARqIgIgAigCBEEBcjYCBEEAIQJBACEIC0HY3gQgCDYCAEHM3gQgAjYCAAwBCyAGKAIEIgNBAnENASADQXhxIAhqIgogBUkNASAKIAVrIQwgBigCDCEHAkAgA0H\u002FAU0EQCAGKAIIIgIgB0YEQEHE3gRBxN4EKAIAQX4gA0EDdndxNgIADAILIAIgBzYCDCAHIAI2AggMAQsgBigCGCELAkAgBiAHRwRAQdTeBCgCABogBigCCCICIAc2AgwgByACNgIIDAELAkAgBigCFCICBH8gBkEUagUgBigCECICRQ0BIAZBEGoLIQgDQCAIIQMgAiIHQRRqIQggAigCFCICDQAgB0EQaiEIIAcoAhAiAg0ACyADQQA2AgAMAQtBACEHCyALRQ0AAkAgBigCHCIDQQJ0QfTgBGoiAigCACAGRgRAIAIgBzYCACAHDQFByN4EQcjeBCgCAEF+IAN3cTYCAAwCCyALQRBBFCALKAIQIAZGG2ogBzYCACAHRQ0BCyAHIAs2AhggBigCECICBEAgByACNgIQIAIgBzYCGAsgBigCFCICRQ0AIAcgAjYCFCACIAc2AhgLIAxBD00EQCAEIAlBAXEgCnJBAnI2AgQgBCAKaiICIAIoAgRBAXI2AgQMAQsgBCAJQQFxIAVyQQJyNgIEIAQgBWoiAyAMQQNyNgIEIAQgCmoiAiACKAIEQQFyNgIEIAMgDBD3BQsgBCECCyACCyICBEAgAkEIag8LIAEQjwIiBEUEQEEADwsgBCAAQXxBeCAAQQRrKAIAIgJBA3EbIAJBeHFqIgIgASABIAJLGxAeGiAAENQBIAQLmQIAIABFBEBBAA8LAn8CQCAABH8gAUH\u002FAE0NAQJAQfzVBCgCACgCAEUEQCABQYB\u002FcUGAvwNGDQMMAQsgAUH\u002FD00EQCAAIAFBP3FBgAFyOgABIAAgAUEGdkHAAXI6AABBAgwECyABQYBAcUGAwANHIAFBgLADT3FFBEAgACABQT9xQYABcjoAAiAAIAFBDHZB4AFyOgAAIAAgAUEGdkE\u002FcUGAAXI6AAFBAwwECyABQYCABGtB\u002F\u002F8\u002FTQRAIAAgAUE\u002FcUGAAXI6AAMgACABQRJ2QfABcjoAACAAIAFBBnZBP3FBgAFyOgACIAAgAUEMdkE\u002FcUGAAXI6AAFBBAwECwtBxNQEQRk2AgBBfwVBAQsMAQsgACABOgAAQQELCxYAIABFBEBBAA8LQcTUBCAANgIAQX8LvAIAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACAkKCAkBAgMECgkKCggJBQYHCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCyACIAIoAgAiAUEEajYCACAAIAEyAQA3AwAPCyACIAIoAgAiAUEEajYCACAAIAEzAQA3AwAPCyACIAIoAgAiAUEEajYCACAAIAEwAAA3AwAPCyACIAIoAgAiAUEEajYCACAAIAExAAA3AwAPCyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAErAwA5AwAPCyAAIAIgAxEAAAsPCyACIAIoAgAiAUEEajYCACAAIAE0AgA3AwAPCyACIAIoAgAiAUEEajYCACAAIAE1AgA3AwAPCyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAEpAwA3AwALcwEGfyAAKAIAIgMsAABBMGsiAUEJSwRAQQAPCwNAQX8hBCACQcyZs+YATQRAQX8gASACQQpsIgVqIAEgBUH\u002F\u002F\u002F\u002F\u002FB3NLGyEECyAAIANBAWoiBTYCACADLAABIQYgBCECIAUhAyAGQTBrIgFBCkkNAAsgAgvfEgIVfwF+IwBB0ABrIggkACAIIAE2AkwgCEE3aiEWIAhBOGohEQJAAkACQAJAA0BBACEHA0AgASENIAcgDkH\u002F\u002F\u002F\u002F\u002FB3NKDQIgByAOaiEOAkACQAJAIAEiBy0AACILBEADQAJAAkAgC0H\u002FAXEiAUUEQCAHIQEMAQsgAUElRw0BIAchCwNAIAstAAFBJUcEQCALIQEMAgsgB0EBaiEHIAstAAIhGSALQQJqIgEhCyAZQSVGDQALCyAHIA1rIgcgDkH\u002F\u002F\u002F\u002F\u002FB3MiF0oNCCAABEAgACANIAcQVwsgBw0GIAggATYCTCABQQFqIQdBfyEQAkAgASwAAUEwayIKQQlLDQAgAS0AAkEkRw0AIAFBA2ohB0EBIRIgCiEQCyAIIAc2AkxBACEMAkAgBywAACILQSBrIgFBH0sEQCAHIQoMAQsgByEKQQEgAXQiAUGJ0QRxRQ0AA0AgCCAHQQFqIgo2AkwgASAMciEMIAcsAAEiC0EgayIBQSBPDQEgCiEHQQEgAXQiAUGJ0QRxDQALCwJAIAtBKkYEQAJ\u002FAkAgCiwAAUEwayIBQQlLDQAgCi0AAkEkRw0AAn8gAEUEQCAEIAFBAnRqQQo2AgBBAAwBCyADIAFBA3RqKAIACyEPIApBA2ohAUEBDAELIBINBiAKQQFqIQEgAEUEQCAIIAE2AkxBACESQQAhDwwDCyACIAIoAgAiB0EEajYCACAHKAIAIQ9BAAshEiAIIAE2AkwgD0EATg0BQQAgD2shDyAMQYDAAHIhDAwBCyAIQcwAahD8BSIPQQBIDQkgCCgCTCEBC0EAIQdBfyEJAn9BACABLQAAQS5HDQAaIAEtAAFBKkYEQAJ\u002FAkAgASwAAkEwayIKQQlLDQAgAS0AA0EkRw0AIAFBBGohAQJ\u002FIABFBEAgBCAKQQJ0akEKNgIAQQAMAQsgAyAKQQN0aigCAAsMAQsgEg0GIAFBAmohAUEAIABFDQAaIAIgAigCACIKQQRqNgIAIAooAgALIQkgCCABNgJMIAlBAE4MAQsgCCABQQFqNgJMIAhBzABqEPwFIQkgCCgCTCEBQQELIRMDQCAHIRRBHCEKIAEiGCwAACIHQfsAa0FGSQ0KIAFBAWohASAHIBRBOmxqQd\u002FNBGotAAAiB0EBa0EISQ0ACyAIIAE2AkwCQCAHQRtHBEAgB0UNCyAQQQBOBEAgAEUEQCAEIBBBAnRqIAc2AgAMCwsgCCADIBBBA3RqKQMANwNADAILIABFDQcgCEFAayAHIAIgBhD7BQwBCyAQQQBODQpBACEHIABFDQcLIAAtAABBIHENCiAMQf\u002F\u002Fe3EiCyAMIAxBgMAAcRshDEEAIRBBqRAhFSARIQoCQAJAAkACfwJAAkACQAJAAn8CQAJAAkACQAJAAkACQCAYLAAAIgdBU3EgByAHQQ9xQQNGGyAHIBQbIgdB2ABrDiEEFBQUFBQUFBQOFA8GDg4OFAYUFBQUAgUDFBQJFAEUFAQACwJAIAdBwQBrDgcOFAsUDg4OAAsgB0HTAEYNCQwTCyAIKQNAIRxBqRAMBQtBACEHAkACQAJAAkACQAJAAkAgFEH\u002FAXEOCAABAgMEGgUGGgsgCCgCQCAONgIADBkLIAgoAkAgDjYCAAwYCyAIKAJAIA6sNwMADBcLIAgoAkAgDjsBAAwWCyAIKAJAIA46AAAMFQsgCCgCQCAONgIADBQLIAgoAkAgDqw3AwAMEwtBCCAJIAlBCE0bIQkgDEEIciEMQfgAIQcLIBEhASAHQSBxIQsgCCkDQCIcUEUEQANAIAFBAWsiASAcp0EPcUHw0QRqLQAAIAtyOgAAIBxCD1YhGiAcQgSIIRwgGg0ACwsgASENIAxBCHFFIAgpA0BQcg0DIAdBBHZBqRBqIRVBAiEQDAMLIBEhASAIKQNAIhxQRQRAA0AgAUEBayIBIBynQQdxQTByOgAAIBxCB1YhGyAcQgOIIRwgGw0ACwsgASENIAxBCHFFDQIgCSARIAFrIgFBAWogASAJSBshCQwCCyAIKQNAIhxCAFMEQCAIQgAgHH0iHDcDQEEBIRBBqRAMAQsgDEGAEHEEQEEBIRBBqhAMAQtBqxBBqRAgDEEBcSIQGwshFSAcIBEQkQIhDQsgEyAJQQBIcQ0PIAxB\u002F\u002F97cSAMIBMbIQwgCCkDQCIcQgBSIAlyRQRAIBEhDUEAIQkMDAsgCSAcUCARIA1raiIBIAEgCUgbIQkMCwsgCCgCQCIBQbSJASABGyINQf\u002F\u002F\u002F\u002F8HIAkgCUH\u002F\u002F\u002F\u002F\u002FB08bEIYGIgEgDWohCiAJQQBOBEAgCyEMIAEhCQwLCyALIQwgASEJIAotAAANDgwKCyAJBEAgCCgCQAwCC0EAIQcgAEEgIA9BACAMEF0MAgsgCEEANgIMIAggCCkDQD4CCCAIIAhBCGoiBzYCQEF\u002FIQkgBwshC0EAIQcDQAJAIAsoAgAiDUUNACAIQQRqIA0Q+QUiDUEASA0PIA0gCSAHa0sNACALQQRqIQsgByANaiIHIAlJDQELC0E9IQogB0EASA0MIABBICAPIAcgDBBdIAdFBEBBACEHDAELQQAhCiAIKAJAIQsDQCALKAIAIg1FDQEgCEEEaiIJIA0Q+QUiDSAKaiIKIAdLDQEgACAJIA0QVyALQQRqIQsgByAKSw0ACwsgAEEgIA8gByAMQYDAAHMQXSAPIAcgByAPSBshBwwICyATIAlBAEhxDQlBPSEKIAAgCCsDQCAPIAkgDCAHIAURRwAiB0EATg0HDAoLIAggCCkDQDwAN0EBIQkgFiENIAshDAwECyAHLQABIQsgB0EBaiEHDAALAAsgAA0IIBJFDQJBASEHA0AgBCAHQQJ0aigCACIABEAgAyAHQQN0aiAAIAIgBhD7BUEBIQ4gB0EBaiIHQQpHDQEMCgsLQQEhDiAHQQpPDQgDQCAEIAdBAnRqKAIADQEgB0EBaiIHQQpHDQALDAgLQRwhCgwFCyAJIAogDWsiCyAJIAtKGyIBIBBB\u002F\u002F\u002F\u002F\u002FwdzSg0DQT0hCiAPIAEgEGoiCSAJIA9IGyIHIBdKDQQgAEEgIAcgCSAMEF0gACAVIBAQVyAAQTAgByAJIAxBgIAEcxBdIABBMCABIAtBABBdIAAgDSALEFcgAEEgIAcgCSAMQYDAAHMQXSAIKAJMIQEMAQsLC0EAIQ4MAwtBPSEKC0HE1AQgCjYCAAtBfyEOCyAIQdAAaiQAIA4LfwIBfwF+IAC9IgNCNIinQf8PcSICQf8PRwR8IAJFBEAgASAARAAAAAAAAAAAYQR\u002FQQAFIABEAAAAAAAA8EOiIAEQ\u002FgUhACABKAIAQUBqCzYCACAADwsgASACQf4HazYCACADQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F+HgH+DQoCAgICAgIDwP4S\u002FBSAACwukAwMCfAJ\u002FAX4gAL0iB0KAgICAgP\u002F\u002F\u002F\u002F8Ag0KBgICA8ITl8j9UIgZFBEBEGC1EVPsh6T8gACAAmiAHQgBZIgUboUQHXBQzJqaBPCABIAGaIAUboaAhAEQAAAAAAAAAACEBCyAAIAAgACAAoiIEoiIDRGNVVVVVVdU\u002FoiAEIAMgBCAEoiIDIAMgAyADIANEc1Ng28t1876iRKaSN6CIfhQ\u002FoKJEAWXy8thEQz+gokQoA1bJIm1tP6CiRDfWBoT0ZJY\u002FoKJEev4QERERwT+gIAQgAyADIAMgAyADRNR6v3RwKvs+okTpp\u002FAyD7gSP6CiRGgQjRr3JjA\u002FoKJEFYPg\u002FsjbVz+gokSThG7p4yaCP6CiRP5Bsxu6oas\u002FoKKgoiABoKIgAaCgIgOgIQEgBkUEQEEBIAJBAXRrtyIEIAAgAyABIAGiIAEgBKCjoaAiACAAoKEiACAAmiAFGw8LIAIEfEQAAAAAAADwvyABoyIEIAS9QoCAgIBwg78iBCADIAG9QoCAgIBwg78iASAAoaGiIAQgAaJEAAAAAAAA8D+goKIgBKAFIAELC7cyAxZ\u002FB34CfCMAQRBrIhAkACMAQaABayIDJAAgAyAANgI8IAMgADYCFCADQX82AhggA0EQaiIAEJUEIAMhESMAQTBrIgskAEGQzgQoAgAhD0GEzgQoAgAhDQNAAn8gACgCBCIDIAAoAmhHBEAgACADQQFqNgIEIAMtAAAMAQsgABBPCyIFEI8GDQALQQEhAwJAAkAgBUEraw4DAAEAAQtBf0EBIAVBLUYbIQMgACgCBCICIAAoAmhHBEAgACACQQFqNgIEIAItAAAhBQwBCyAAEE8hBQsCQAJAAkAgBUFfcUHJAEYEQANAIARBB0YNAgJ\u002FIAAoAgQiAiAAKAJoRwRAIAAgAkEBajYCBCACLQAADAELIAAQTwshBSAEQckLaiEVIARBAWohBCAVLAAAIAVBIHJGDQALCyAEQQNHBEAgBEEIRiICDQEgBEEESQ0CIAINAQsgACkDcCIXQgBZBEAgACAAKAIEQQFrNgIECyAEQQRJDQAgF0IAUyECA0AgAkUEQCAAIAAoAgRBAWs2AgQLIARBAWsiBEEDSw0ACwtCACEXIwBBEGsiBCQAAn4gA7JDAACAf5S8IgNB\u002F\u002F\u002F\u002F\u002FwdxIgBBgICABGtB\u002F\u002F\u002F\u002F9wdNBEAgAK1CGYZCgICAgICAgMA\u002FfAwBCyADrUIZhkKAgICAgIDA\u002F\u002F8AhCAAQYCAgPwHTw0AGkIAIABFDQAaIAQgAK1CACAAZyIAQdEAahBiIAQpAwAhFyAEKQMIQoCAgICAgMAAhUGJ\u002FwAgAGutQjCGhAshGCALIBc3AwAgCyAYIANBgICAgHhxrUIghoQ3AwggBEEQaiQAIAspAwghFyALKQMAIRgMAQsCQAJAAkACQCAEDQBBACEEIAVBX3FBzgBHDQADQCAEQQJGDQICfyAAKAIEIgIgACgCaEcEQCAAIAJBAWo2AgQgAi0AAAwBCyAAEE8LIQUgBEGRwABqIRYgBEEBaiEEIBYsAAAgBUEgckYNAAsLIAQOBAIBAQABCwJAAn8gACgCBCIDIAAoAmhHBEAgACADQQFqNgIEIAMtAAAMAQsgABBPC0EoRgRAQQEhBAwBC0KAgICAgIDg\u002F\u002F8AIRcgACkDcEIAUw0DIAAgACgCBEEBazYCBAwDCwNAAn8gACgCBCIDIAAoAmhHBEAgACADQQFqNgIEIAMtAAAMAQsgABBPCyIDQTBrQQpJIANBwQBrQRpJciADQd8ARnJFIANB4QBrQRpPcUUEQCAEQQFqIQQMAQsLQoCAgICAgOD\u002F\u002FwAhFyADQSlGDQIgACkDcCIaQgBZBEAgACAAKAIEQQFrNgIECyAERQ0CA0AgGkIAWQRAIAAgACgCBEEBazYCBAsgBEEBayIEDQALDAILIAApA3BCAFkEQCAAIAAoAgRBAWs2AgQLQcTUBEEcNgIAIAAQlQQMAQsCQCAFQTBHDQACfyAAKAIEIgQgACgCaEcEQCAAIARBAWo2AgQgBC0AAAwBCyAAEE8LQV9xQdgARgRAIAMhBCMAQbADayICJAACfyAAKAIEIgMgACgCaEcEQCAAIANBAWo2AgQgAy0AAAwBCyAAEE8LIQMCQAJ\u002FA0AgA0EwRwRAAkAgA0EuRw0EIAAoAgQiAyAAKAJoRg0AIAAgA0EBajYCBCADLQAADAMLBSAAKAIEIgMgACgCaEcEf0EBIQkgACADQQFqNgIEIAMtAAAFQQEhCSAAEE8LIQMMAQsLIAAQTwshA0EBIQEgA0EwRw0AA0AgGkIBfSEaAn8gACgCBCIDIAAoAmhHBEAgACADQQFqNgIEIAMtAAAMAQsgABBPCyIDQTBGDQALQQEhCQtCgICAgICAwP8\u002FIRgDQAJAIAMhBgJAAkAgA0EwayIFQQpJDQAgA0EuRyIKIANBIHIiBkHhAGtBBUtxDQIgCg0AIAENAkEBIQEgFyEaDAELIAZB1wBrIAUgA0E5ShshAwJAIBdCB1cEQCADIAdBBHRqIQcMAQsgF0IcWARAIAJBMGogAxB4IAJBIGogHCAYQgBCgICAgICAwP0\u002FECsgAkEQaiACKQMwIAIpAzggAikDICIcIAIpAygiGBArIAIgAikDECACKQMYIBkgGxBvIAIpAwghGyACKQMAIRkMAQsgA0UgCHINACACQdAAaiAcIBhCAEKAgICAgICA\u002Fz8QKyACQUBrIAIpA1AgAikDWCAZIBsQbyACKQNIIRtBASEIIAIpA0AhGQsgF0IBfCEXQQEhCQsgACgCBCIDIAAoAmhHBH8gACADQQFqNgIEIAMtAAAFIAAQTwshAwwBCwsCfiAJRQRAIAApA3BCAFkEQAJAIAAgACgCBCIDQQFrNgIEIAAgA0ECazYCBCABRQ0AIAAgA0EDazYCBAsLIAJB4ABqIAS3RAAAAAAAAAAAohCpASACKQNgIRkgAikDaAwBCyAXQgdXBEAgFyEYA0AgB0EEdCEHIBhCAXwiGEIIUg0ACwsCQAJAAkAgA0FfcUHQAEYEQCAAEIEGIhhCgICAgICAgICAf1INAyAAKQNwQgBZDQEMAgtCACEYIAApA3BCAFMNAgsgACAAKAIEQQFrNgIEC0IAIRgLIAdFBEAgAkHwAGogBLdEAAAAAAAAAACiEKkBIAIpA3AhGSACKQN4DAELIBogFyABG0IChiAYfEIgfSIXQQAgD2utVQRAQcTUBEHEADYCACACQaABaiAEEHggAkGQAWogAikDoAEgAikDqAFCf0L\u002F\u002F\u002F\u002F\u002F\u002F\u002F+\u002F\u002F\u002F8AECsgAkGAAWogAikDkAEgAikDmAFCf0L\u002F\u002F\u002F\u002F\u002F\u002F\u002F+\u002F\u002F\u002F8AECsgAikDgAEhGSACKQOIAQwBCyAPQeIBa6wgF1cEQCAHQQBOBEADQCACQaADaiAZIBtCAEKAgICAgIDA\u002F79\u002FEG8gGSAbQoCAgICAgID\u002FPxD1BSEAIAJBkANqIBkgGyACKQOgAyAZIABBAE4iABsgAikDqAMgGyAAGxBvIBdCAX0hFyACKQOYAyEbIAIpA5ADIRkgB0EBdCAAciIHQQBODQALCwJ+IBcgD6x9QiB8IhinIgBBACAAQQBKGyANIBggDa1TGyIAQfEATgRAIAJBgANqIAQQeCACKQOIAyEaIAIpA4ADIRxCAAwBCyACQeACakQAAAAAAADwP0GQASAAaxDVARCpASACQdACaiAEEHggAkHwAmogAikD4AIgAikD6AIgAikD0AIiHCACKQPYAiIaEIQGIAIpA\u002FgCIR0gAikD8AILIRggAkHAAmogByAHQQFxRSAZIBtCAEIAEOsBQQBHIABBIEhxcSIAchCOAiACQbACaiAcIBogAikDwAIgAikDyAIQKyACQZACaiACKQOwAiACKQO4AiAYIB0QbyACQaACaiAcIBpCACAZIAAbQgAgGyAAGxArIAJBgAJqIAIpA6ACIAIpA6gCIAIpA5ACIAIpA5gCEG8gAkHwAWogAikDgAIgAikDiAIgGCAdEJIEIAIpA\u002FABIhggAikD+AEiGkIAQgAQ6wFFBEBBxNQEQcQANgIACyACQeABaiAYIBogF6cQgwYgAikD4AEhGSACKQPoAQwBC0HE1ARBxAA2AgAgAkHQAWogBBB4IAJBwAFqIAIpA9ABIAIpA9gBQgBCgICAgICAwAAQKyACQbABaiACKQPAASACKQPIAUIAQoCAgICAgMAAECsgAikDsAEhGSACKQO4AQshFyALIBk3AxAgCyAXNwMYIAJBsANqJAAgCykDGCEXIAspAxAhGAwCCyAAKQNwQgBTDQAgACAAKAIEQQFrNgIECyAAIQIgAyEJQQAhBCMAQZDGAGsiASQAQQAgD2siDCANayEUAkACfwNAIAVBMEcEQAJAIAVBLkcNBCACKAIEIgAgAigCaEYNACACIABBAWo2AgQgAC0AAAwDCwUgAigCBCIAIAIoAmhHBH8gAiAAQQFqNgIEIAAtAAAFIAIQTwshBUEBIQQMAQsLIAIQTwshBUEBIQYgBUEwRw0AA0AgF0IBfSEXAn8gAigCBCIAIAIoAmhHBEAgAiAAQQFqNgIEIAAtAAAMAQsgAhBPCyIFQTBGDQALQQEhBAsgAUEANgKQBgJ+AkACQAJAIAVBLkYiACAFQTBrIgNBCU1yBEADQAJAIABBAXEEQCAGRQRAIBghF0EBIQYMAgsgBEUhAAwECyAYQgF8IRggB0H8D0wEQCAKIBinIAVBMEYbIQogAUGQBmogB0ECdGoiACAIBH8gBSAAKAIAQQpsakEwawUgAws2AgBBASEEQQAgCEEBaiIAIABBCUYiABshCCAAIAdqIQcMAQsgBUEwRg0AIAEgASgCgEZBAXI2AoBGQdyPASEKCwJ\u002FIAIoAgQiACACKAJoRwRAIAIgAEEBajYCBCAALQAADAELIAIQTwsiBUEuRiIAIAVBMGsiA0EKSXINAAsLIBcgGCAGGyEXIARFIAVBX3FBxQBHckUEQAJAIAIQgQYiGUKAgICAgICAgIB\u002FUg0AQgAhGSACKQNwQgBTDQAgAiACKAIEQQFrNgIECyAXIBl8IRcMAwsgBEUhACAFQQBIDQELIAIpA3BCAFMNACACIAIoAgRBAWs2AgQLIABFDQBBxNQEQRw2AgAgAhCVBEIAIRdCAAwBCyABKAKQBiIARQRAIAEgCbdEAAAAAAAAAACiEKkBIAEpAwghFyABKQMADAELIBcgGFIgGEIJVXIgDUEeTEEAIAAgDXYbckUEQCABQTBqIAkQeCABQSBqIAAQjgIgAUEQaiABKQMwIAEpAzggASkDICABKQMoECsgASkDGCEXIAEpAxAMAQsgDEEBdq0gF1MEQEHE1ARBxAA2AgAgAUHgAGogCRB4IAFB0ABqIAEpA2AgASkDaEJ\u002FQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F7\u002F\u002F\u002FwAQKyABQUBrIAEpA1AgASkDWEJ\u002FQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F7\u002F\u002F\u002FwAQKyABKQNIIRcgASkDQAwBCyAPQeIBa6wgF1UEQEHE1ARBxAA2AgAgAUGQAWogCRB4IAFBgAFqIAEpA5ABIAEpA5gBQgBCgICAgICAwAAQKyABQfAAaiABKQOAASABKQOIAUIAQoCAgICAgMAAECsgASkDeCEXIAEpA3AMAQsgCARAIAhBCEwEQCABQZAGaiAHQQJ0aiIAKAIAIQYDQCAGQQpsIQYgCEEBaiIIQQlHDQALIAAgBjYCAAsgB0EBaiEHCwJAIBenIgggCkggCkEJTnIgCEERSnINACAIQQlGBEAgAUHAAWogCRB4IAFBsAFqIAEoApAGEI4CIAFBoAFqIAEpA8ABIAEpA8gBIAEpA7ABIAEpA7gBECsgASkDqAEhFyABKQOgAQwCCyAIQQhMBEAgAUGQAmogCRB4IAFBgAJqIAEoApAGEI4CIAFB8AFqIAEpA5ACIAEpA5gCIAEpA4ACIAEpA4gCECsgAUHgAWpBACAIa0ECdEGAzgRqKAIAEHggAUHQAWogASkD8AEgASkD+AEgASkD4AEgASkD6AEQ9AUgASkD2AEhFyABKQPQAQwCCyANIAhBfWxqQRtqIgBBHkxBACABKAKQBiIDIAB2Gw0AIAFB4AJqIAkQeCABQdACaiADEI4CIAFBwAJqIAEpA+ACIAEpA+gCIAEpA9ACIAEpA9gCECsgAUGwAmogCEECdEG4zQRqKAIAEHggAUGgAmogASkDwAIgASkDyAIgASkDsAIgASkDuAIQKyABKQOoAiEXIAEpA6ACDAELA0AgAUGQBmogByIAQQFrIgdBAnRqKAIARQ0AC0EAIQoCQCAIQQlvIgRFBEBBACEDDAELQQAhAyAEQQlqIAQgCEEASBshBAJAIABFBEBBACEADAELQYCU69wDQQAgBGtBAnRBgM4EaigCACICbSEHQQAhBUEAIQYDQCABQZAGaiIMIAZBAnRqIg4gBSAOKAIAIg4gAm4iEmoiBTYCACADQQFqQf8PcSADIAVFIAMgBkZxIgUbIQMgCEEJayAIIAUbIQggByAOIAIgEmxrbCEFIAZBAWoiBiAARw0ACyAFRQ0AIABBAnQgDGogBTYCACAAQQFqIQALIAggBGtBCWohCAsDQCABQZAGaiADQQJ0aiEMIAhBJEghDgJAA0AgDkUEQCAIQSRHDQIgDCgCAEHR6fkETw0CCyAAQf8PaiEHQQAhBANAIAAhAiAErSABQZAGaiAHQf8PcSIFQQJ0aiIANQIAQh2GfCIXQoGU69wDVAR\u002FQQAFIBcgF0KAlOvcA4AiGEKAlOvcA359IRcgGKcLIQQgACAXpyIANgIAIAIgAiACIAUgABsgAyAFRhsgBSACQQFrQf8PcSIGRxshACAFQQFrIQcgAyAFRw0ACyAKQR1rIQogAiEAIARFDQALIANBAWtB\u002Fw9xIgMgAEYEQCABQZAGaiICIABB\u002Fg9qQf8PcUECdGoiACAAKAIAIAZBAnQgAmooAgByNgIAIAYhAAsgCEEJaiEIIAFBkAZqIANBAnRqIAQ2AgAMAQsLAkADQCAAQQFqQf8PcSECIAFBkAZqIABBAWtB\u002Fw9xQQJ0aiEFA0BBCUEBIAhBLUobIQcCQANAIAMhBEEAIQYCQANAAkAgBCAGakH\u002FD3EiAyAARg0AIAFBkAZqIANBAnRqKAIAIgMgBkECdEHQzQRqKAIAIgxJDQAgAyAMSw0CIAZBAWoiBkEERw0BCwsgCEEkRw0AQgAhF0EAIQZCACEYA0AgACAEIAZqQf8PcSIDRgRAIABBAWpB\u002Fw9xIgBBAnQgAWpBADYCjAYLIAFBgAZqIAFBkAZqIANBAnRqKAIAEI4CIAFB8AVqIBcgGEIAQoCAgIDlmreOwAAQKyABQeAFaiABKQPwBSABKQP4BSABKQOABiABKQOIBhBvIAEpA+gFIRggASkD4AUhFyAGQQFqIgZBBEcNAAsgAUHQBWogCRB4IAFBwAVqIBcgGCABKQPQBSABKQPYBRArIAEpA8gFIRhCACEXIAEpA8AFIRkgCkHxAGoiByAPayICQQAgAkEAShsgDSACIA1IIgUbIgNB8ABMDQIMBQsgByAKaiEKIAQgACIDRg0AC0GAlOvcAyAHdiEMQX8gB3RBf3MhDkEAIQYgBCEDA0AgAUGQBmoiEiAEQQJ0aiITIAYgEygCACITIAd2aiIGNgIAIANBAWpB\u002Fw9xIAMgBkUgAyAERnEiBhshAyAIQQlrIAggBhshCCAOIBNxIAxsIQYgBEEBakH\u002FD3EiBCAARw0ACyAGRQ0BIAIgA0cEQCAAQQJ0IBJqIAY2AgAgAiEADAMLIAUgBSgCAEEBcjYCAAwBCwsLIAFBkAVqRAAAAAAAAPA\u002FQeEBIANrENUBEKkBIAFBsAVqIAEpA5AFIAEpA5gFIBkgGBCEBiABKQO4BSEbIAEpA7AFIRwgAUGABWpEAAAAAAAA8D9B8QAgA2sQ1QEQqQEgAUGgBWogGSAYIAEpA4AFIAEpA4gFEIIGIAFB8ARqIBkgGCABKQOgBSIXIAEpA6gFIhoQkgQgAUHgBGogHCAbIAEpA\u002FAEIAEpA\u002FgEEG8gASkD6AQhGCABKQPgBCEZCwJAIARBBGpB\u002Fw9xIgYgAEYNAAJAIAFBkAZqIAZBAnRqKAIAIgZB\u002F8m17gFNBEAgBkUgBEEFakH\u002FD3EgAEZxDQEgAUHwA2ogCbdEAAAAAAAA0D+iEKkBIAFB4ANqIBcgGiABKQPwAyABKQP4AxBvIAEpA+gDIRogASkD4AMhFwwBCyAGQYDKte4BRwRAIAFB0ARqIAm3RAAAAAAAAOg\u002FohCpASABQcAEaiAXIBogASkD0AQgASkD2AQQbyABKQPIBCEaIAEpA8AEIRcMAQsgCbchHiAAIARBBWpB\u002Fw9xRgRAIAFBkARqIB5EAAAAAAAA4D+iEKkBIAFBgARqIBcgGiABKQOQBCABKQOYBBBvIAEpA4gEIRogASkDgAQhFwwBCyABQbAEaiAeRAAAAAAAAOg\u002FohCpASABQaAEaiAXIBogASkDsAQgASkDuAQQbyABKQOoBCEaIAEpA6AEIRcLIANB7wBKDQAgAUHQA2ogFyAaQgBCgICAgICAwP8\u002FEIIGIAEpA9ADIAEpA9gDQgBCABDrAQ0AIAFBwANqIBcgGkIAQoCAgICAgMD\u002FPxBvIAEpA8gDIRogASkDwAMhFwsgAUGwA2ogGSAYIBcgGhBvIAFBoANqIAEpA7ADIAEpA7gDIBwgGxCSBCABKQOoAyEYIAEpA6ADIRkCQCAUQQJrIAdB\u002F\u002F\u002F\u002F\u002FwdxTg0AIAEgGEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8AgzcDmAMgASAZNwOQAyABQYADaiAZIBhCAEKAgICAgICA\u002Fz8QKyABKQOQAyABKQOYA0KAgICAgICAuMAAEPUFIQAgASkDiAMgGCAAQQBOIgQbIRggASkDgAMgGSAEGyEZIAUgAiADRyAAQQBIcnEgFyAaQgBCABDrAUEAR3FFIBQgBCAKaiIKQe4Aak5xDQBBxNQEQcQANgIACyABQfACaiAZIBggChCDBiABKQP4AiEXIAEpA\u002FACCyEYIAsgFzcDKCALIBg3AyAgAUGQxgBqJAAgCykDKCEXIAspAyAhGAsgESAYNwMAIBEgFzcDCCALQTBqJAAgESkDACEXIBAgESkDCDcDCCAQIBc3AwAgEUGgAWokACAQKQMAIBApAwgQ8wUhHyAQQRBqJAAgHwv9AwIEfwF+AkACQAJ\u002FAkACQAJ\u002FIAAoAgQiASAAKAJoRwRAIAAgAUEBajYCBCABLQAADAELIAAQTwsiAUEraw4DAAEAAQsgAUEtRgJ\u002FIAAoAgQiASAAKAJoRwRAIAAgAUEBajYCBCABLQAADAELIAAQTwsiAUE6ayICQXVLDQEaIAApA3BCAFMNAiAAIAAoAgRBAWs2AgQMAgsgAUE6ayECQQALIQMgAkF2SQ0AAkAgAUEwa0EKTw0AQQAhAgNAIAEgAkEKbGpBMGsiAkHMmbPmAEgCfyAAKAIEIgEgACgCaEcEQCAAIAFBAWo2AgQgAS0AAAwBCyAAEE8LIgFBMGsiBEEJTXENAAsgAqwhBSAEQQpPDQADQCABrSAFQgp+fCEFAn8gACgCBCIBIAAoAmhHBEAgACABQQFqNgIEIAEtAAAMAQsgABBPCyIBQTBrIgJBCU0gBUIwfSIFQq6PhdfHwuujAVNxDQALIAJBCk8NAANAAn8gACgCBCIBIAAoAmhHBEAgACABQQFqNgIEIAEtAAAMAQsgABBPC0Ewa0EKSQ0ACwsgACkDcEIAWQRAIAAgACgCBEEBazYCBAtCACAFfSAFIAMbIQUMAQtCgICAgICAgICAfyEFIAApA3BCAFMNACAAIAAoAgRBAWs2AgRCgICAgICAgICAfw8LIAULygYCBX8EfiMAQYABayIFJAACQAJAAkAgAyAEQgBCABDrAUUNAAJ\u002FIARC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP4MhCwJ\u002FIARCMIinQf\u002F\u002FAXEiBkH\u002F\u002FwFHBEBBBCAGDQEaQQJBAyADIAuEUBsMAgsgAyALhFALCyEJIAJCMIinIghB\u002F\u002F8BcSIHQf\u002F\u002FAUYNACAJDQELIAVBEGogASACIAMgBBArIAUgBSkDECICIAUpAxgiASACIAEQ9AUgBSkDCCECIAUpAwAhBAwBCyABIAJC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAIMiCyADIARC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAIMiChDrAUEATARAIAEgCyADIAoQ6wEEQCABIQQMAgsgBUHwAGogASACQgBCABArIAUpA3ghAiAFKQNwIQQMAQsgBEIwiKdB\u002F\u002F8BcSEGIAcEfiABBSAFQeAAaiABIAtCAEKAgICAgIDAu8AAECsgBSkDaCILQjCIp0H4AGshByAFKQNgCyEEIAZFBEAgBUHQAGogAyAKQgBCgICAgICAwLvAABArIAUpA1giCkIwiKdB+ABrIQYgBSkDUCEDCyAKQv\u002F\u002F\u002F\u002F\u002F\u002F\u002Fz+DQoCAgICAgMAAhCEMIAtC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP4NCgICAgICAwACEIQsgBiAHSARAA0ACfiALIAx9IAMgBFatfSIKQgBZBEAgCiAEIAN9IgSEUARAIAVBIGogASACQgBCABArIAUpAyghAiAFKQMgIQQMBQsgCkIBhiAEQj+IhAwBCyALQgGGIARCP4iECyELIARCAYYhBCAHQQFrIgcgBkoNAAsgBiEHCwJAIAsgDH0gAyAEVq19IgpCAFMEQCALIQoMAQsgCiAEIAN9IgSEQgBSDQAgBUEwaiABIAJCAEIAECsgBSkDOCECIAUpAzAhBAwBCyAKQv\u002F\u002F\u002F\u002F\u002F\u002F\u002Fz9YBEADQCAEQj+IIQ0gB0EBayEHIARCAYYhBCANIApCAYaEIgpCgICAgICAwABUDQALCyAIQYCAAnEhBiAHQQBMBEAgBUFAayAEIApC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP4MgB0H4AGogBnKtQjCGhEIAQoCAgICAgMDDPxArIAUpA0ghAiAFKQNAIQQMAQsgCkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F8\u002FgyAGIAdyrUIwhoQhAgsgACAENwMAIAAgAjcDCCAFQYABaiQAC78CAQF\u002FIwBB0ABrIgQkAAJAIANBgIABTgRAIARBIGogASACQgBCgICAgICAgP\u002F\u002FABArIAQpAyghAiAEKQMgIQEgA0H\u002F\u002FwFJBEAgA0H\u002F\u002FwBrIQMMAgsgBEEQaiABIAJCAEKAgICAgICA\u002F\u002F8AECtB\u002Ff8CIAMgA0H9\u002FwJOG0H+\u002FwFrIQMgBCkDGCECIAQpAxAhAQwBCyADQYGAf0oNACAEQUBrIAEgAkIAQoCAgICAgIA5ECsgBCkDSCECIAQpA0AhASADQfSAfksEQCADQY3\u002FAGohAwwBCyAEQTBqIAEgAkIAQoCAgICAgIA5ECtB6IF9IAMgA0HogX1MG0Ga\u002FgFqIQMgBCkDOCECIAQpAzAhAQsgBCABIAJCACADQf\u002F\u002FAGqtQjCGECsgACAEKQMINwMIIAAgBCkDADcDACAEQdAAaiQACzwAIAAgATcDACAAIAJC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP4MgAkKAgICAgIDA\u002F\u002F8Ag0IwiKcgBEIwiKdBgIACcXKtQjCGhDcDCAsxAQJ\u002FAn8gABA9QQFqIQEDQEEAIAFFDQEaIAAgAUEBayIBaiICLQAAQS9HDQALIAILCxcBAX8gAEEAIAEQkgIiAiAAayABIAIbC9EBAQF\u002FAkACQCAAIAFzQQNxBEAgAS0AACECDAELIAFBA3EEQANAIAAgAS0AACICOgAAIAJFDQMgAEEBaiEAIAFBAWoiAUEDcQ0ACwsgASgCACICQX9zIAJBgYKECGtxQYCBgoR4cQ0AA0AgACACNgIAIAEoAgQhAiAAQQRqIQAgAUEEaiEBIAJBgYKECGsgAkF\u002Fc3FBgIGChHhxRQ0ACwsgACACOgAAIAJB\u002FwFxRQ0AA0AgACABLQABIgI6AAEgAEEBaiEAIAFBAWohASACDQALCwtFAQJ8IAAgAiACoiIEOQMAIAEgAiACRAAAAAIAAKBBoiIDIAIgA6GgIgKhIgMgA6IgAiACoCADoiACIAKiIAShoKA5AwALMwAgAQJ\u002FIAIoAkxBAEgEQCAAIAEgAhCXBAwBCyAAIAEgAhCXBAsiAEYEQA8LIAAgAW4aC30BAn8jAEEQayIBJAAgAUEKOgAPAkACQCAAKAIQIgIEfyACBSAAEJgEDQIgACgCEAsgACgCFCICRg0AIAAoAlBBCkYNACAAIAJBAWo2AhQgAkEKOgAADAELIAAgAUEPakEBIAAoAiQRAQBBAUcNACABLQAPGgsgAUEQaiQAC9sBAQR\u002FIAAoAlQhAwJAIAAoAhQiBiAAKAIcIgVHBEAgACAFNgIUIAAgBSAGIAVrIgUQiwYgBUkNAQsCQCADKAIQQeEARwRAIAMoAgAhBAwBCyADIAMoAgQiBDYCAAsgAygCDCAEaiABIAMoAgggBGsiASACIAEgAkkbIgQQHhogAyADKAIAIARqIgE2AgAgASADKAIETQ0AIAMgATYCBAJ\u002FIAMoAggiAiABSwRAIAMoAgwgAWoMAQsgAkUNASAAKAIAQQRxRQ0BIAMoAgwgAmpBAWsLQQA6AAALIAQLGAEBfyMAQRBrIgEgADkDCCABKwMIIACiC3UCAnwBfiAAAn4QBCIBRAAAAAAAQI9AoyICmUQAAAAAAADgQ2MEQCACsAwBC0KAgICAgICAgIB\u002FCyIDNwMAIAACfyABIANC6Ad+uaFEAAAAAABAj0CiIgGZRAAAAAAAAOBBYwRAIAGqDAELQYCAgIB4CzYCCAsoACABRAAAAAAAAMB\u002FoiAARIvdGhVmIJbAoBCaBKJEAAAAAAAAwH+iCxAAIABBIEYgAEEJa0EFSXILjAMCAn4DfyMAQSBrIgIkAEKAgICA4AAhBAJAIAAgAykDACIFEFUNACAAIAFBLRBeIgFCgICAgHCDQoCAgIDgAFENACAAAn4CQCAAQSAQXCIGRQ0AQQAhAyAGQQA2AhQgBkEANgIAIAZBBGohCANAIANBAkZFBEAgCCADQQN0aiIHIAc2AgQgByAHNgIAIANBAWohAwwBCwsgBkKAgICAMDcDGCABQoCAgIBwWgRAIAGnIAY2AiALIAAgAkEQaiIDIAEQqgUNAAJAIAAgBUKAgICAMEECIAMQHCIFQoCAgIBwg0KAgICA4ABRBEAgACgCECIDKQOAASEEIANCgICAgCA3A4ABIAIgBDcDCCAAIAIpAxhCgICAgDBBASACQQhqEBwhBCAAIAIpAwgQDCAEQoCAgIBwg0KAgICA4ABRDQEgACAEEAwLIAAgBRAMIAAgAikDEBAMIAEhBCACKQMYDAILIAAgAikDEBAMIAAgAikDGBAMQoCAgIDgACEECyABCxAMCyACQSBqJAAgBAuLAgEHfyABQQJ0QaCDBGooAgAiAiABQQF0QfCEBGovAQBqIQhBACEBAkADQCACIAhPDQEgAkEBaiEGAkACQCACLQAAIgRBP00EQCADIARBA3ZqQQFqIQIgAQRAIAAgAyACEGkNAwsgAUEBcyEBIARBB3EgAmpBAWohBQwBCwJ\u002FIAMgBGpB\u002FwBrIATAQQBIDQAaIAYtAAAhBSAEQd8ATQRAIAJBAmohBiADIARBCHRqIAVqQf\u002F\u002FAGsMAQsgAkEDaiEGIAItAAIgAyAEQRB0aiAFQQh0ampB\u002F\u002F\u002F\u002FAmsLIQUgAyECCyABBEAgACACIAUQaQ0BCyABQQFzIQEgBiECIAUhAwwBCwtBfyEHCyAHC7UCAQp\u002FIAFBBnEhByABQQJ2QQFxIQoCQANAIANB6x5KDQEgAiEEIANBsOQDai0AACIFQR9xIQkCfyADQQFqIAVBBXYiAkEHRw0AGiADQQJqIQUgA0Gx5ANqLAAAIgJB\u002FwFxIQYgAkEATgRAIAZBB2ohAiAFDAELIAVBsOQDai0AACEFIAJBv39NBEAgBkEIdCAFckH5\u002FgFrIQIgA0EDagwBCyADQbPkA2otAAAgBkEQdHIgBUEIdHJB+f7+BWshAiADQQRqCyEDIAIgBGpBAWohAgJAAkAgCUEfRgRAIAdFDQMgB0EGRg0BIAQgCmohBANAIAIgBE0NBCAAIAQgBEEBahBpIQsgBEECaiEEIAtFDQALDAILIAEgCXZBAXFFDQILIAAgBCACEGlFDQELC0F\u002FIQgLIAgLOABB8NECIAEQnQQiAUEASARAQX4PCyAAIAFBHU0Ef0IBIAGthqcFIAFBAnRBmNYCaigCAAsQkgYLmgYBBH9BASEJIAJBAXRBwPkCai8BACECIAVFBEAgACACNgIAQQEPCyACQcCEA2ohBkESIQcCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAFQQFrDiIAAAAAAAAAAQECAgICAgQDAwMDAwMFBQUFBQUFBQYHCAkJCwsgBiABIANrIAVsQQF0aiEBQQAhAgNAIAIgBUYEQCAFDwsgACACQQJ0aiABIAJBAXRqLwAAIgM2AgAgAkEBaiECIAMNAAsMCwsgBUEHayIIIAEgA2tsIQcgBiAEIAhsQQF0aiEBQQAhAgNAIAIgCEYNCiAGIAdBAXQiA2ovAAAgASAHQQJ2ai0AACADQQZxdkEQdEGAgAxxciIDRQ0LIAAgAkECdGogAzYCACACQQFqIQIgB0EBaiEHDAALAAsgBiAFQQlrIgggASADa2xqIQFBACECA0AgAiAIRg0JIAAgAkECdGogASACai0AABCkAyIDNgIAIAJBAWohAiADDQALDAkLIAVBAXEgBUEQayICQQFLaiEIIAJBAXZBAmohCQsgASADayEBQQAhAgNAIAIgCUYEQCAJDwUgACACQQJ0aiAGIAJBAXRqLwAAIAFBACACIAhGG2o2AgAgAkEBaiECDAELAAsACyAFQRVrIQcLIAYgByABIANrbGpBAmohASAGLwAAIQNBACECA0AgAiAHRgRAIAcPBSAAIAJBAnRqQSAgAyABIAJqLQAAIgRqIARB\u002FwFGGzYCACACQQFqIQIMAQsACwALIAAgBiABIANrQQNsaiIBLwAAIgI2AgAgAkUNAyAAIAEtAAIQpAM2AgQMAgsgACAGLwACNgIIIAAgBi8AADYCACAAIAYgASADa0EBdGovAAQ2AgRBAw8LIAEgA2shAQJ\u002FIAVBIUYEQCAGIAFBfnFqIgJBAWohAyACLQAAEKQDDAELIAYgAUEBdkEDbGoiAkECaiEDIAIvAAALIQIgAEEgQSBBASACQZAIa0EgSRsgAkGAAkkbIAJqIAIgAUEBcRs2AgAgACADLQAAEKQDNgIEC0ECIQgLIAgPC0EAC7QCAQh\u002FIwBB0ABrIgckACACQQAgAkEAShshCwNAAkACQCAGIAtHBEAgASAGQQJ0aigCACIFQYDYAmsiAkGj1wBNDQFBugUhAkEAIQQCQANAIAIgBEgNASAFIAIgBGpBAm0iCEECdEHQ4wJqKAIAIglBDnYiCkkEQCAIQQFrIQIMAQsgBSAJQQd2Qf8AcSIEIApqTwRAIAhBAWohBAwBCwsgCUEBcSADSw0AIAcgBSAIIAogBCAJQQF2QT9xEJQGIgJFDQAgACAHIAIgAxCVBgwDCyAAIAUQGwwCCyAHQdAAaiQADwsgACACQf\u002F\u002FA3EiBUHMBG4iBEGAInIQGyAAIAIgBEHMBGxrQf\u002F\u002FA3FBHG5B4SJqEBsgBUEccCICRQ0AIAAgAkGnI2oQGwsgBkEBaiEGDAALAAsiAQF\u002FQQEhASAAEJ4EBH9BAQUgAEHgnQJBgKMCQRUQpQMLC00BBX8gACgCCCEDIABBADYCCCAAKAIAIQQgAEIANwIAIAAoAhAhBSAAKAIMIQcgACADIAQgASACQQAQ7AEhACAHIANBACAFEQEAGiAAC7EBAQd\u002FIAAoAggiA0EEaiEFIAAoAgAhBgNAIAFBAWoiAiAGTkUEQAJAIAMgAUECdGooAgAiByADIAJBAnRqKAIARgRAIAEhAgwBCwNAIAYgASICQQNqSgRAIAUgAUECdGooAgAgAyABQQJqIgFBAnRqKAIARg0BCwsgAyAEQQJ0aiIBIAc2AgAgASAFIAJBAnRqKAIANgIEIARBAmohBAsgAkECaiEBDAELCyAAIAQ2AgALEQAgAEHgjQJB0JMCQRcQpQMLzwEBA38gASACLwAAIAItAAJBEHRBgID8AHFySQRAIABBADYCAEEADwtBfyEFIAEgAiADQQFrIgRBA2xqIgMvAAAgAy0AAkEQdHJJBH9BACEDA0AgBCADa0ECSEUEQCADIARqQQJtIgUgBCACIAVBA2xqIgQvAAAgBC0AAkEQdEGAgPwAcXIgAUsiBhshBCADIAUgBhshAwwBCwsgACACIANBA2xqIgAvAAAgAC0AAiIAQRB0QYCA\u002FABxcjYCACADQQV0IABBBXZyQSBqBUF\u002FCwtuAQV\u002FQfECIQEDQCABIAJOBEAgACABIAJqQQF2IgNBAnRBoIACaigCACIEQQ92IgVJBEAgA0EBayEBDAILIAAgBEEIdkH\u002FAHEgBWpJBEBBAQ8FIANBAWohAgwCCwALCyAAQfCLAkHAjQJBBxClAwupAQECfyMAQRBrIgQkAAJ\u002FIAMEQCAEQQRqIABBAiABIAIQoARBAUYEQCAEKAIEDAILQYX2AyAAQYb2A0YNARpBkAcgAEHTP0YNARpBsAcgACAAQeM\u002FRhsMAQsgAEEgayAAIABB4QBrQRpJGyAAQf8ATQ0AGiAEQQRqIABBACABIAIQoAQhASAEKAIEIgIgACACQf8ASxsgACABQQFGGwshBSAEQRBqJAAgBQupAQEFfwJAIAFB\u002FwBLBEBB8QIhAwNAIAMgBEgNAiABIAMgBGpBAXYiBUECdEGggAJqKAIAIgZBD3YiB0kEQCAFQQFrIQMMAQsgASAGQQh2Qf8AcSAHak8EQCAFQQFqIQQMAQsLIAAgASACIAUgBhCgBA8LIAIEQCABQSByIAEgAUHBAGtBGkkbIQEMAQsgAUEgayABIAFB4QBrQRpJGyEBCyAAIAE2AgBBAQuRAgEDfyABKAIAIgJB\u002Fv8HTwRAIABBkClBABA\u002FQX8PCwJAIAJBAU0EQCAAQQJBfxC3ARoMAQsgASgCCCACQQJ0aiIEQQRrKAIAIgNBf0YEQCAEQQhrKAIAIQMLIAJBAXYhAiADQf\u002F\u002FA00EQCAAQRUgAhChBEEAIQIDQCACIAEoAgBODQIgACACQQJ0IgMgASgCCGovAQAQJiAAQX8gASgCCCADaigCBEEBayIDIANBfkYbQf\u002F\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\u002FwdxIAtB\u002FwdxQQp0ckGAgARqIQkMAgsgBUEBayIFLQAAIQsgCkEBayIKLQAAIQkMAgsgByEKCwJAIAVBAmsiBy8BACILQYD4A3FBgLgDRyAHIA5NciAMQQJHcg0AIAVBBGsiBS8BACIOQYD4A3FBgLADRw0AIAtB\u002FwdxIA5B\u002FwdxQQp0ckGAgARqIQsMAQsgByEFCyAAKAIYBH8gCSAAKAIcENYBIQkgCyAAKAIcENYBBSALCyAJRg0ACwwMC0G7GEG\u002F7ABBjhFB98UAEAAAC0GkGEG\u002F7ABBhRFB98UAEAAACyAEQQVqIgggCCAEKAABaiIKIAlBCUYiCxshBEF\u002FIQkgACABIAIgAyAKIAggCxsgB0EAQQAQpgRBAE4NDgwLCxABAAsgBEERaiIQIAQoAAFqIRIgBCgABSEOQQAhCiAEKAAJIgRB\u002F\u002F\u002F\u002F\u002FwdGIREDQAJAAkAgACABIAIgAyAQIAVBARCjBiIJQQFqDgIMAQALIAkhBSAEIApBAWoiCksgEXINAQsLIAogDkkNByASIQQgCiAOTQ0MIAAgASACIAMgCCAFQQMgCiAOaxCmBEEATg0MDAYLIAcgACgCACIJRg0GIAxFBEAgB0EBayEFIAghBAwMCyAHQQJrIQUgCCEEIAxBAkcNCyAFLwEAQYD4A3FBgLgDRyAFIAlNcg0LIAdBBGsiByAFIAcvAQBBgPgDcUGAsANGGyEFDAsLIAcgDU8NBQJAIAxFBEAgB0EBaiEFIActAAAhCAwBCyAHLwEAIghBgPgDcUGAsANHIAxBAkdyIA0gB0ECaiIFTXINACAFLwEAIglBgPgDcUGAuANHDQAgCEEKdEGA+D9xIAlB\u002FwdxckGAgARqIQggB0EEaiEFCyAELwABIQogACgCGARAIAggACgCHBDWASEICyAIIARBA2oiBygAAEkNBUEAIQkgCCAHIApBAWsiBEEDdGooAARLDQUDQCAEIAlJDQYgByAEIAlqQQF2IgtBA3RqIg4oAAAgCEsEQCALQQFrIQQMAQsgDigABCAISQRAIAtBAWohCQwBCwsgByAKQQN0aiEEDAoLIAcgDU8NBAJAIAxFBEAgB0EBaiEFIActAAAhCAwBCyAHLwEAIghBgPgDcUGAsANHIAxBAkdyIA0gB0ECaiIFTXINACAFLwEAIglBgPgDcUGAuANHDQAgCEEKdEGA+D9xIAlB\u002FwdxckGAgARqIQggB0EEaiEFCyAELwABIQogACgCGARAIAggACgCHBDWASEICyAIIARBA2oiBy8AAEkNBAJAIAcgCkEBayIEQQJ0ai8AAiIJQf\u002F\u002FA0YgCEH\u002F\u002FwNPcQ0AIAggCUsNBUEAIQkDQCAEIAlJDQYgByAEIAlqQQF2IgtBAnRqIg4vAAAgCEsEQCALQQFrIQQMAQsgDi8AAiAIQf\u002F\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\u002F\u002FA0wEQCAAQQEgBhChBAwBCyAAQQIgBhC3ARoLIAFFDQQgAEEbEA4MBAsgAEEEQQMgACgCMBsQDgsgECECDAILIAQgAkEBaiIHNgIcIABBBRAODAULIAIgCWohBUF\u002FIQICQCAIDQAgACgCKA0AIAAoAjQhDSAQIQILIABBGEEXIAZBIUYbQQAQtwEhBiAAIAU2AhggACADEKgDDQggBCAAKAIYNgIcIAAgBEEcakEpEKYDDQggAEEKEA4gACgCDA0IIAAoAgAgBmogACgCBCAGa0EEazYAAAsgBCgCHCEHIAJBAEgNAwJAAkACQAJAAkAgBy0AACIDQSprDgIBAgALIANBP0YNAiADQfsARw0HIActAAFBOmtBdUsNAyAAKAIoRQ0HDAgLIAdBAWohB0EAIQtB\u002F\u002F\u002F\u002F\u002FwchCgwFC0EBIQsgBCAHQQFqIgc2AhxB\u002F\u002F\u002F\u002F\u002FwchCgwEC0EBIQogBCAHQQFqIgc2AhxBACELDAMLIAQgB0EBajYCHCAEQRxqQQEQ1AIiCyEKAkAgBCgCHCIDLQAAIgVBLEcNACAEIANBAWo2AhxB\u002F\u002F\u002F\u002F\u002FwchCiADLQABIgVBOmtBdkkNACAEQRxqQQEQ1AIiCiALSA0FIAQoAhwtAAAhBQsgBUH\u002FAXFB\u002FQBGDQEgACgCKA0BCyAEIAc2AhwMAgsgACAEQRxqQf0AEKYDDQUgBCgCHCEHCwJAAkAgBy0AAEE\u002FRgRAIAQgB0EBaiIHNgIcIAAoAgQgAmshCUEAIQxBACEDDAELIAAoAgwhCAJAIApBAEwNACAIDQIgACgCBCACayEMIAAoAgAgAmohDkEAIQVBACEJA0AgBSAMSARAIAUgDmoiES0AACISQYCAAmotAAAhBkECIQMCQAJAAkACQCASQQFrDhYCAgICAwMGBgYGBgYGBgYGAwMGBgEABgtBAyEDCyARLwABIAN0IAZqIQYLIAlBAWohCQsgBSAGaiEFDAELCyAJQQBMDQAgAEEKEA4gACACQREQlgINAiAAKAIAIAJqQRw6AAAgACgCBCEGIAAoAgAgAmoiAyAJNgANIAMgCjYACSADIAs2AAUgAyAGIAJrQRFrNgABDAMLIAgNASAAKAIEIAJrIQkgACgCACACaiERQQAhBUEBIQgDQCAFIAlOBEBBASEMIAghAwwCCyAFIBFqIg4tAAAiEkGAgAJqLQAAIQZBASEMQQEhAwJAAkACQAJAIBJBAWsOGwICAgIDAwUFBQUDAwMFAwMDAwMDAAEFBQMFAwULIA4vAAFBAnQgBmohBgwBCyAOLwABQQN0IAZqIQYLQQAhCAsgBSAGaiEFDAALAAsgC0UEQCAAKAI0IA1HBEAgACACQQMQlgINAiAAKAIAIAJqQQ06AAAgACgCACACaiANOgABIAAoAgAgAmogAC0ANEEBazoAAiACQQNqIQILIApFBEAgACACNgIEDAMLIApB\u002F\u002F\u002F\u002F\u002FwdGIgZFIApBAUdxRQRAIAAgAiADQQVqEJYCDQIgACgCACACaiAMQQhyOgAAIAAoAgAgAmoiCCADQQF0QQVBACAGG2ogCWo2AAEgAwRAIAhBGToABSAAQRoQDgsgCkH\u002F\u002F\u002F\u002F\u002FB0cNAyAAQQcgAhCVAgwDCyAAIAIgA0EKahCWAg0BIAAoAgAgAmpBDzoAACAAKAIAIAJqIgYgDEEIcjoABSAGIAo2AAEgACgCACACaiIGIANBAXQgCWpBBWo2AAYgAwRAIAZBGToACiAAQRoQDgsgAEEOIAJBBWoQlQIgAEEQEA4MAgsgAyALQQFHIApB\u002F\u002F\u002F\u002F\u002FwdHcnJFBEAgACAMQQlzIAIQlQIMAgsgC0EBRwRAIAAgAkEFEJYCDQEgACgCACACakEPOgAAIAAoAgAgAmogCzYAASAAQQ4gAkEFaiICEJUCIABBEBAOCyAKQf\u002F\u002F\u002F\u002F8HRgRAIAAoAgQhBiAAIAxBCHIgA0EBdCAJakEFahC3ARoCQCADBEAgAEEZEA4gACACIAkQ3wIgAEEaEA4MAQsgACACIAkQ3wILIABBByAGEJUCDAILIAogC0wNASAAQQ8gCiALaxC3ARogACgCBCEGIAAgDEEIciADQQF0IAlqQQVqELcBGgJAIAMEQCAAQRkQDiAAIAIgCRDfAiAAQRoQDgwBCyAAIAIgCRDfAgsgAEEOIAYQlQIgAEEQEA4MAQsgABDVAgwECyAAIAc2AhggAUUNASAAIAAoAgQiAiAQayIQIAJqELwBDQMgACgCACATaiIDIBBqIAMgAiATaxCrASAAKAIAIgMgE2ogAiADaiAQEB4aDAELCyAAQegYQQAQPwwBCyAAQdEfQQAQPwtBfyEdCyAEQdAAaiQAIB0LoggCCH4EfyMAQRBrIg0kACAEQcqeAWotAAAiD60hCgJAAkAgAykDACIGQv\u002F\u002F\u002F\u002F9vWARAQoCAgIDgACEFIAAgDUEIaiAGEKQBDQJCACEGIABCgICAgDAgDSkDCCIIIAqGEPoCIgdCgICAgHCDQoCAgIDgAFENAgwBCwJAAkAgBqciDi8BBiICQRNrQf\u002F\u002FA3FBAU0EQCAOKAIgIQ5CgICAgOAAIQUgACANIAMpAwgQpAENBCAOLQAEDQICQCANKQMAIgZBfyAPdEF\u002FcyIPrYNQBEAgDigCACICrCIHIAZaDQELIABB\u002FhtBABBEDAULAkAgAykDECIIQoCAgIBwg0KAgICAMFEEQCACIA9xDQEgByAGfSAKiCEIDAMLIAAgDUEIaiAIEKQBDQUgDi0ABA0DIA40AgAgDSkDCCIIIAqGIAZ8Wg0CCyAAQbvHAEEAEEQMBAsgAkEVa0H\u002F\u002FwNxQQpNBEAgACABIAYgBBD5AiEFDAQLQoCAgIDgACEFIAAgASAEEF4iCEKAgICAcINCgICAgOAAUQ0DQoCAgIAwIQECfgJAAkAgACAGQcwBIAZBABARIgxCgICAgHCDIgVCgICAgCBRIAVCgICAgDBRckUEQCAFQoCAgIDgAFENAkIAIQUCQCAAEDsiB0KAgICAcINCgICAgOAAUQRAQoCAgIDgACEBDAELQoCAgIDgACEBQoCAgIAwIQsCQCAAIAYgDBDkAyIJQoCAgIBwg0KAgICA4ABRDQBBACEEIAAgCUHrACAJQQAQESILQoCAgIBwg0KAgICA4ABRDQADQCAAIAkgCyANQQhqEJEBIgZCgICAgHCDQoCAgIDgAFENASANKAIIBEAgACAGEAwgACALEAwgACAJEAwgBK0hBSAHIQEMAwsgACAHIAStIAZBgIABEMgBQQBIDQEgBEEBaiEEDAALAAsgACALEAwgACAJEAwgACAHEAwLIAAgDBAMIAFCgICAgHCDQoCAgIDgAFINAQwCCyAAIA1BCGogBhAvDQEgDiAOKAIAQQFqNgIAIA0pAwghBSAGIQELIABCgICAgDAgBSAKhhD6AiIHQoCAgIBwg0KAgICA4ABRDQAgACAIIAdCACAFEOMDDQBBACEEA0AgCCAErSAFWQ0CGiAAIAEgBBCmASIHQoCAgIBwg0KAgICA4ABRDQEgACAIIAQgBxCGAiEQIARBAWohBCAQQQBODQALCyAAIAEQDCAIIQFCgICAgOAACyEFIAAgARAMDAMLIAMpAwAiB0IgiKdBdUkNASAHpyICIAIoAgBBAWo2AgAMAQsgABBfDAELIAAgASAEEF4iAUKAgICAcINCgICAgOAAUQRAIAAgBxAMDAELIAAgASAHIAYgCBDjA0UEQCABIQUMAQsgACABEAwLIA1BEGokACAFC9IEAgZ\u002FAX4jAEEgayIFJAAgACgCACEEIAVCADcCGCAFQoCAgICAgICAgH83AhAgBSAENgIMIAVBDGoiBCABIAJBIGoiAUHmDxCqAyAEIAQgAyABQeYPEEAaAkAgBSgCFEH\u002F\u002F\u002F\u002F\u002FB0YEQCAAECoMAQsjAEEwayICJAACQCAFQQxqIgMgAEcEQCAAKAIAIQcgAkIANwIoIAJCgICAgICAgICAfzcCICACIAc2AhwCfyADKAIIIgZBAEgEQEF\u002FQQAgAygCBBsMAQsgAkEcaiIEQSBBARCYAiAEIAMgBEEgQQIQiAEaIAJBGGogBEEAEO0BIAMoAgghBiACKAIYCyEIIAJBHGoiBCABIAZBACAGQQBKG2ogAUEBayABQQFqQQF2ELkEIgZuQQFqIgkgBmpBAXRqQRpqIgFBBhCYAiAEIAQgCKwgAUEAENgCIAQgAyAEIAFBABDuARogBEEAIAZrQQEQuQEaIAJCADcCECACQoCAgICAgICAgH83AgggAiAHNgIEIABCARAyGiAJrSEKA0AgCqdBAEoEQCACQQRqIgMgChAyGiADIAJBHGogAyABQQAQiAEaIAAgACADIAFBABBAGiAAIABCASABQQAQehogCkIBfSEKDAELC0EAIQMgBkEAIAZBAEobIQQgAkEEahAZIAJBHGoQGQNAIAMgBEcEQCAAIAAgACABQeAPEEAaIANBAWohAwwBCwsgACAIQeEPELkBGiACQTBqJAAMAQtB6e0AQdjsAEHUIUGzxAAQAAALCyAFQQxqEBkgBUEgaiQAQRALrwEBAn8jAEEgayIEJAAgACgCACEFIARBCGogA0EAEO0BIAAgASAEKAIIIgEgAUEfdSIBcyABayIBIAJBwAAgAUEBa2dBAXRrQQAgAUECTxtqQQhqIgJB4A8QrwMhASADKAIEBEAgBEIANwIYIARCgICAgICAgICAfzcCECAEIAU2AgwgBEEMaiIDQgEQMhogACADIAAgAkHgDxCIASABciEBIAMQGQsgBEEgaiQAIAELkAYCCH8BfiMAQfAAayIDJAAgACABRwRAIAAoAgAhBCADQgA3AmggA0KAgICAgICAgIB\u002FNwJgIAMgBDYCXCADQdwAaiIFIAEQSRogA0IANwJUIANCgICAgICAgICAfzcCTCADIAQ2AkggAygCZCEGIANBADYCZCADQcgAaiIBQqrVqtUKEDIaIANBADYCUCAFIAEQrAIEQCADIAMoAmRBAWo2AmQgBkEBayEGCyADQcgAahAZIAJBAWpBAXYQuQQhBSADQgA3AlQgA0KAgICAgICAgIB\u002FNwJMIAMgBDYCSCADQgA3AkAgA0KAgICAgICAgIB\u002FNwI4IAMgBDYCNCADQdwAaiIBIAFCf0H\u002F\u002F\u002F\u002F\u002FA0EAEHoaIAVBACAFQQBKGyEJIAIgBWogAiAFQQF0bkEBaiIKQQF0akEgaiECQQAhAQNAIAEgCUZFBEAgA0HIAGoiByADQdwAaiIIQgEgAkEAEHoaIANBNGoiCyAHIAJBBhC1BCAHIAtCASACQQAQehogCCAIIAcgAkEAEIgBGiABQQFqIQEMAQsLIANCADcCLCADQoCAgICAgICAgH83AiQgAyAENgIgIANCADcCGCADQoCAgICAgICAgH83AhAgAyAENgIMIANBIGoiASADQdwAaiIEQgIgAkEAEHoaIAEgBCABIAJBABCIARogA0EMaiABIAEgAkEAEEAaIABCABAyGiAKrSEMA0AgDKdBAExFBEAgA0HIAGoiAUIBEDIaIANBNGoiBCAMQgGGQv7\u002F\u002F\u002F8Pg0IBhBAyGiABIAEgBCACQQAQiAEaIAAgACABIAJBABC4ARogACAAIANBDGogAkEAEEAaIAxCAX0hDAwBCwsgACAAQgEgAkEAEHoaIAAgACADQSBqIgEgAkEAEEAaIAEQGSADQQxqEBkgA0E0ahAZIANByABqEBkgACAFQQFqQQEQuQEaIANB3ABqIgEgAkEGEJgCIAEgASAGrCACQQAQ2AIgACAAIAEgAkEAELgBGiABEBkgA0HwAGokAEEQDwtB6e0AQdjsAEHtIkHDxAAQAAALEwAgACgCACABIAIgACgCBBEBAAsTACAAQbDqAEEAEBJCgICAgOAAC9YDAQd\u002FIAIoAgQgASgCBHMhBwJAAkACQAJAAkACQAJAIAEoAggiBkH9\u002F\u002F\u002F\u002FB0wEQCACKAIIIgVB\u002Ff\u002F\u002F\u002FwdKDQEgBkGAgICAeEcNBiAFQYCAgIB4Rg0EDAcLIAZB\u002F\u002F\u002F\u002F\u002FwdGDQEgAigCCCEFCyAFQf\u002F\u002F\u002F\u002F8HRw0BCyAAECpBAA8LIAZB\u002Fv\u002F\u002F\u002FwdHIgEgBUH+\u002F\u002F\u002F\u002FB0dyDQELIAAQKkEBDwsgAQ0BIAAgBxB\u002FQQAPCyAFQYCAgIB4RgRAIAAgBxB\u002FQQIPCwJAIAAoAgAiBSgCAEEAIAEoAgwiBiADQSFqQQV2IgggBiAIShsiCiACKAIMIghqIglBAnRBBGogBSgCBBEBACIGBEAgBkEAIAkgASgCDGtBAnQiCxAsIgYgC2ogASgCECABKAIMQQJ0EB4aIAAgCkEBahBQRQRAIAUgACgCECAGIAkgAigCECAIELMDRQ0CCyAFKAIAIAZBACAFKAIEEQEAGgsgABAqQSAPCyAGIAgQ2gIEQCAAKAIQIgUgBSgCAEEBcjYCAAsgACgCACIFKAIAIAZBACAFKAIEEQEAGiACKAIIIQIgASgCCCEBIAAgBzYCBCAAIAEgAmtBIGo2AgggACADIAQQmwIPCyAAIAcQgAFBAAsRACAAIAEgAiADIARBABC0BAtCAQF+IwBBEGsiAiQAQoCAgIDgACEEIAAgAkEIaiADKQMAEKQBRQRAIAAgASACKQMIQRQQ5QMhBAsgAkEQaiQAIAQLEQAgACABIAIgAyAEQQEQtAQLQAEBfiMAQRBrIgIkAEKAgICA4AAhBCAAIAJBCGogAykDABCkAUUEQCAAIAEgAikDCBD6AiEECyACQRBqJAAgBAs7AQF\u002FA0AgAgRAIAAtAAAhAyAAIAEtAAA6AAAgASADOgAAIAFBAWohASAAQQFqIQAgAkEBayECDAELCwsaACAALQAAIQIgACABLQAAOgAAIAEgAjoAAAtCAQF\u002FIAJBAXYhAgNAIAIEQCAALwEAIQMgACABLwEAOwEAIAEgAzsBACABQQJqIQEgAEECaiEAIAJBAWshAgwBCwsLGgAgAC8BACECIAAgAS8BADsBACABIAI7AQALQgEBfyACQQJ2IQIDQCACBEAgACgCACEDIAAgASgCADYCACABIAM2AgAgAUEEaiEBIABBBGohACACQQFrIQIMAQsLCxoAIAAoAgAhAiAAIAEoAgA2AgAgASACNgIAC0IBAX4gAkEDdiECA0AgAgRAIAApAwAhAyAAIAEpAwA3AwAgASADNwMAIAFBCGohASAAQQhqIQAgAkEBayECDAELCwscAQF+IAApAwAhAyAAIAEpAwA3AwAgASADNwMAC9QDAgF\u002FA34jAEEgayIGJAACQAJAAkAgBUEBcQRAQoCAgIDgACEHIAAgBkEYaiABQd8AEH4iBUUNAwJAIAUpAwAiAUKAgICAcFoEQCABpy0ABUEQcQ0BCyAAQZ0sQQAQEgwECyAGKQMYIghCgICAgHCDQoCAgIAwUQRAIAAgASACIAMgBBD+AiEHDAQLIAAgAyAEEP0CIglCgICAgHCDQoCAgIDgAFENAiAFKQMAIQEgBiACNwMQIAYgCTcDCCAGIAE3AwAgACAIIAUpAwhBAyAGEBwiAUL\u002F\u002F\u002F\u002F\u002Fb1YNASABQoCAgIBwg0KAgICA4ABRDQEgACABEAwgABAiDAILQoCAgIDgACEHIAAgBkEYaiABQdsAEH4iBUUNAiAGKQMYIQEgBS0AEEUEQCAAIAEQDCAAQfs5QQAQEgwDCyABQoCAgIBwg0KAgICAMFEEQCAAIAUpAwAgAiADIAQQHCEHDAMLIAAgAyAEEP0CIghCgICAgHCDQoCAgIDgAFIEQCAFKQMAIQcgBiAINwMQIAYgAjcDCCAGIAc3AwAgACABIAUpAwhBAyAGEBwhBwsgACABEAwgACAIEAwMAgsgASEHCyAAIAgQDCAAIAkQDAsgBkEgaiQAIAcLWgECfiACQQR2IQIDQCACBEAgACkDACEDIAAgASkDADcDACAAKQMIIQQgACABKQMINwMIIAEgBDcDCCABIAM3AwAgAUEQaiEBIABBEGohACACQQFrIQIMAQsLCzQBAn4gACkDACEDIAAgASkDADcDACAAKQMIIQQgACABKQMINwMIIAEgBDcDCCABIAM3AwALhAUCBH4BfyADKQMIIQYCQCAAIAMpAwAiBBD2AyICQQBOBEACQCABQoCAgIBwg0KAgICAMFINACAAKAIQKAKMASkDCCEBIAJFIAZCgICAgHCDQoCAgIAwUnINACAAIARBPSAEQQAQESIFQoCAgIBwg0KAgICA4ABRBEAgBQ8LIAAgBSABEE0hCCAAIAUQDCAIRQ0AIARCIIinQXVJDQIgBKciACAAKAIAQQFqNgIADAILAkACQAJAAkACQCAEQoCAgIBwVA0AIASnIgMvAQZBEkcNACADKAIgIgIgAigCAEEBajYCACACrUKAgICAkH+EIQUgBkKAgICAcINCgICAgDBSDQEgAygCJCICIAIoAgBBAWo2AgAgAq1CgICAgJB\u002FhCEEDAMLAkACQAJAIAIEQCAAIARB7QAgBEEAEBEiBUKAgICAcINCgICAgOAAUQRAQoCAgIAwIQYMCAsgBkKAgICAcINCgICAgDBRBEAgACAEQe4AIARBABARIgZCgICAgHCDQoCAgIDgAFINBAwICyAFIQQgBkIgiKdBdEsNAQwDCyAEQiCIp0F1TwRAIASnIgIgAigCAEEBajYCAAsgBkIgiKdBdUkNAQsgBqciAiACKAIAQQFqNgIACyAEIQULIAVCgICAgHCDQoCAgIAwUQRAIABBLxApIQUMAgsgACAFECUhByAAIAUQDCAHIgVCgICAgHCDQoCAgIDgAFENAwwBCyAAIAYQJSIGQoCAgIBwg0KAgICA4ABRDQILIAAgBSAGELkDIgRCgICAgHCDQoCAgIDgAFENASAAIAYQDAsgACABIAUgBBDLBQ8LIAAgBRAMIAAgBhAMC0KAgICA4AAPCyAEC68EAgR\u002FAX4jAEEgayIFJABCgICAgOAAIQkCQCAAIAFBIBBaIgdFDQAgBEHKngFqLQAAIQggACAFQQhqIAMpAwAQpAENACADKQMIIQEgBUIANwMYIAVBADYCFAJAIARBG0wEQCAAIAVBFGogARB1RQ0BDAILIARBHU0EQCAAIAVBGGogARDRBUUNAQwCCyAAIAUgARBCDQEgBEEeRgRAIAUgBSsDALY4AhQMAQsgBSAFKQMANwMYCyACQQNOBEAgACADKQMQEOQBQQFGIQYLIAcoAgwoAiAiAi0ABARAIAAQXwwBCyAHNQIUIAUpAwgiAUEBIAh0rHxUBEAgAEHd4QBBABBEDAELIAGnIAIoAgggBygCEGpqIQACQAJAAkACQAJAIARBFmsOCgAAAQECAgMDAgMECyAAIAUoAhQ6AABCgICAgDAhCQwECyAFKAIUIQQgACAEIARBCHQgBEGA\u002FgNxQQh2ckH\u002F\u002FwNxIAYbOwAAQoCAgIAwIQkMAwsgACAFKAIUIgAgAEEYdCAAQYD+A3FBCHRyIABBCHZBgP4DcSAAQRh2cnIgBhs2AABCgICAgDAhCQwCCyAAIAUpAxgiASABQjiGIAFCgP4Dg0IohoQgAUKAgPwHg0IYhiABQoCAgPgPg0IIhoSEIAFCCIhCgICA+A+DIAFCGIhCgID8B4OEIAFCKIhCgP4DgyABQjiIhISEIAYbNwAAQoCAgIAwIQkMAQsQAQALIAVBIGokACAJC5IHAgF+BH8jAEEQayIHJABCgICAgOAAIQUCQCAAIAFBIBBaIghFDQAgBEHKngFqLQAAIQkgACAHQQhqIAMpAwAQpAENACACQQJOBEAgACADKQMIEOQBQQFGIQYLIAgoAgwoAiAiAi0ABARAIAAQXwwBCyAINQIUIAcpAwgiAUEBIAl0rHxUBEAgAEHd4QBBABBEDAELIAGnIAIoAgggCCgCEGpqIQICQAJAAkACQAJAAkACQAJAAkACQAJAIARBFmsOCgoAAQIDBAUGBwgJCyACMQAAIQUMCgsgAi8AACIAIABBCHQgAEEIdnIgBhutw0L\u002F\u002F\u002F\u002F\u002FD4MhBQwJCyACLwAAIgAgAEEIdCAAQQh2ciAGG61C\u002F\u002F8DgyEFDAgLIAIoAAAiACAAQRh0IABBgP4DcUEIdHIgAEEIdkGA\u002FgNxIABBGHZyciAGG60hBQwHCyACKAAAIgAgAEEYdCAAQYD+A3FBCHRyIABBCHZBgP4DcSAAQRh2cnIgBhsiAEEATgRAIACtIQUMBwtCgICAgMB+IAC4vSIBQoCAgIDAgYD8\u002FwB9IAFCgICAgICAgPj\u002FAFYbIQUMBgsgACACKQAAIgEgAUI4hiABQoD+A4NCKIaEIAFCgID8B4NCGIYgAUKAgID4D4NCCIaEhCABQgiIQoCAgPgPgyABQhiIQoCA\u002FAeDhCABQiiIQoD+A4MgAUI4iISEhCAGGxC\u002FAiEFDAULIAAgAikAACIBIAFCOIYgAUKA\u002FgODQiiGhCABQoCA\u002FAeDQhiGIAFCgICA+A+DQgiGhIQgAUIIiEKAgID4D4MgAUIYiEKAgPwHg4QgAUIoiEKA\u002FgODIAFCOIiEhIQgBhsQiAQhBQwEC0KAgICAwH4gAigAACIAIABBGHQgAEGA\u002FgNxQQh0ciAAQQh2QYD+A3EgAEEYdnJyIAYbvru9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhshBQwDC0KAgICAwH4gAikAACIBIAFCOIYgAUKA\u002FgODQiiGhCABQoCA\u002FAeDQhiGIAFCgICA+A+DQgiGhIQgAUIIiEKAgID4D4MgAUIYiEKAgPwHg4QgAUIoiEKA\u002FgODIAFCOIiEhIQgBhsiAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGyEFDAILEAEACyACMAAAQv\u002F\u002F\u002F\u002F8PgyEFCyAHQRBqJAAgBQurAQIEfwF+IwBBEGsiBSQAIAUgAq03AwgCQCAAIAFBASAFQQhqEL8DIgFCgICAgHCDQoCAgIDgAFENACACQQAgAkEAShshAgNAIAIgBEYNASADIARBA3RqKQMAIghCIIinQXVPBEAgCKciBiAGKAIAQQFqNgIACyAAIAEgBCAIEIYCIQcgBEEBaiEEIAdBAE4NAAsgACABEAxCgICAgOAAIQELIAVBEGokACABC4EHAgl+BX8jAEEwayINJAAgAykDACEEIA1CgICAgDA3AxhBASEOAkACQAJ+IAJBAkgEQEKAgICAMCEKQoCAgIAwDAELQoCAgIAwIAMpAwgiCkKAgICAcINCgICAgDBRDQAaQoCAgIAwIQlCgICAgDAhBkKAgICAMCEHQoCAgIAwIQUgACAKEFUNAUEAIQ5CgICAgDAgAkECRg0AGiADKQMQCyELAkACQCAAIARBzAEgBEEAEBEiBkKAgICAcIMiBUKAgICAMFIEQCAFQoCAgIDgAFEEQEKAgICAMCEJQoCAgIAwIQZCgICAgDAhBwwDCyAAIAYQDCAAEDsiB0KAgICAcINCgICAgOAAUQRAQoCAgIAwIQlCgICAgDAhBkKAgICA4AAhBwwDCyAEQiCIp0F1TwRAIASnIgIgAigCAEEBajYCAAsgDSAENwMQIAAgDUEQakEIckEAEIUDIQ8gDSkDGCEJIA0pAxAhBiAPDQJCACEFA0AgACAGIAkgDUEEahCRASIEQoCAgIBwg0KAgICA4ABSBEAgDSgCBA0DIAAgByAFIAQQZyEQIAVCAXwhBSAQQQBODQELC0KAgICAMCEFIAZCgICAgHCDQoCAgIAwUQ0DIAAgBkEBEJABGgwDC0KAgICAMCEJQoCAgIAwIQZCgICAgDAhBSAAIAQQICIHQoCAgIBwg0KAgICA4ABRDQILIAAgDUEIaiAHEC9BAEgNACANAn4gDSkDCCIEQoCAgIAIfEL\u002F\u002F\u002F\u002F\u002FD1gEQCAEQv\u002F\u002F\u002F\u002F8PgwwBC0KAgICAwH4gBLm9IgVCgICAgMCBgPz\u002FAH0gBUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLIgg3AyAgACABQQEgDUEgahC\u002FAyEFIAAgCBAMAkAgBUKAgICAcINCgICAgOAAUQ0AQgAhCCAEQgAgBEIAVRshDANAIAggDFENBCAAIAcgCBBsIgRCgICAgHCDQoCAgIDgAFENAQJAIA4EQCAEIQEMAQsgDSAENwMgIA0gCEL\u002F\u002F\u002F\u002F\u002FD4M3AyggACAKIAtBAiANQSBqEBwhASAAIAQQDCABQoCAgIBwg0KAgICA4ABRDQILIAAgBSAIIAEQeyERIAhCAXwhCCARQQBODQALCwwBC0KAgICAMCEFCyAAIAUQDEKAgICA4AAhBQsgACAHEAwgACAGEAwgACAJEAwgDUEwaiQAIAULDwAgACsDACABKwMAEMQECzkBAX5CgICAgMB+IAEpAwAiAkKAgICAwIGA\u002FP8AfSACQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwsRACAAKgIAuyABKgIAuxDEBAs7AQF+QoCAgIDAfiABKgIAu70iAkKAgICAwIGA\u002FP8AfSACQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwsZAQJ+IAEpAwAiAyAAKQMAIgRUIAMgBFZrCwwAIAAgASkDABCIBAsZAQJ+IAEpAwAiAyAAKQMAIgRTIAMgBFVrCwwAIAAgASkDABC\u002FAgsXACABKAIAIgEgACgCACIASSAAIAFJaws9AQF+IAEoAgAiAEEATgRAIACtDwtCgICAgMB+IAC4vSICQoCAgIDAgYD8\u002FwB9IAJCgICAgICAgPj\u002FAFYbC9sFAwV\u002FA34BfCMAQUBqIgUkAAJAAnwCQAJAAkACQAJAIAJBACABQoCAgIBwgyILQoCAgIAwUhsiAg4CAgABCwJAIAMpAwAiCUKAgICAcFQNACAJpyIELwEGQQpHDQAgBCkDICIKQiCIpyIEQQAgBEELakESSRsNACAAIAUgChBCDQMMBAsgBSAAIAlBAhC7AiIJNwM4IAlCgICAgHCDQoCAgICQf1EEQCAAIAEgBCAFQThqEKkFIQogACAJEAwgCkKAgICAcINCgICAgOAAUQ0DIAAgBSAKEG1FDQQMAwsgACAFIAkQbUUNAwwCCyAFQQBBOBAsIgZCgICAgICAgPg\u002FNwMQQQcgAiACQQdOGyIHQQAgB0EAShshAgNAAkAgAiAERwRAIAAgBkE4aiADIARBA3QiCGopAwAQQg0EIAYrAzgiDL1CgICAgICAgPj\u002FAINCgICAgICAgPj\u002FAFINASAEIQILRAAAAAAAAPh\u002FIAIgB0cNBRogBkEBEOsDDAULIAYgCGogDJ05AwACQCAEDQAgBisDACIMRAAAAAAAAAAAZkUgDEQAAAAAAABZQGNFcg0AIAYgDEQAAAAAALCdQKA5AwALIARBAWohBAwACwALEKgFuQwCC0KAgICA4AAhAQwCCyAFKwMAIgydRAAAAAAAAAAAoEQAAAAAAAD4fyAMRAAA3MIIsj5DZRtEAAAAAAAA+H8gDEQAANzCCLI+w2YbCyEMAkAgACABQQoQXiIJQoCAgIBwg0KAgICA4ABRDQAgACAJAn4gDL0iAQJ\u002FIAyZRAAAAAAAAOBBYwRAIAyqDAELQYCAgIB4CyIEt71RBEAgBK0MAQtCgICAgMB+IAFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLEL0BIAtCgICAgDBSDQAgACAJIAQgBEETEKcFIQEgACAJEAwMAQsgCSEBCyAFQUBrJAAgAQsXACABKAIAIgEgACgCACIASCAAIAFIawsHACABNQIACw0AIAAvAQAgAS8BAGsLBwAgATMBAAsNACAALgEAIAEuAQBrCw4AIAEyAQBC\u002F\u002F\u002F\u002F\u002Fw+DCw0AIAAtAAAgAS0AAGsLBwAgATEAAAsNACAALAAAIAEsAABrCw4AIAEwAABC\u002F\u002F\u002F\u002F\u002Fw+DCxYAIAAgACkDwAEgAykDAEEDQX8QhwMLzQwEB38BfAF+AX0jAEEgayIGJABCgICAgOAAIQ0CQCAAIAEQigEiCUEASA0AQX8hBQJAAkACQCAJRQ0AQQEhCAJAAkAgBEEBRgRAQX8hCCAGIAlBAWsiBTYCHCACQQJIDQEgACAGQQhqIAMpAwgQQg0GIAYrAwgiDL1C\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgYCAgICAgPj\u002FAFoEQCAGQQA2AhwMAgsgDEQAAAAAAAAAAGYEQCAMIAW3Y0UNAiAGAn8gDJlEAAAAAAAA4EFjBEAgDKoMAQtBgICAgHgLNgIcDAILQX8hBSAMIAm3oCIMRAAAAAAAAAAAYw0EIAYCfyAMmUQAAAAAAADgQWMEQCAMqgwBC0GAgICAeAs2AhwMAQsgBkEANgIcIAJBAkgEQCAJIQIMAgsgACAGQRxqIAMpAwggCSICIAIQVg0FDAELQX8hAgsgAaciACgCICgCDCgCIC0ABARAQX8hBSAEQX9HDQJBf0EAIAM1AgRCIIZCgICAgDBSGyEFDAMLIAZCADcDEAJ\u002FQQcgAykDACIBQiCIpyIDIANBB2tBbkkbIgNBdkcEQCADQQdHBEBBfyEFIAMNAyAGIAHEIgE3AxAgAbkhDEEBIQdBAQwCCyAGAn4gAUKAgICAwIGA\u002FP8AfL8iDJlEAAAAAAAA4ENjBEAgDLAMAQtCgICAgICAgICAfwsiATcDEEEBIQcgDCABuWEMAQsgAachA0F\u002FIQUCfwJAAkAgAC8BBkEcaw4CAAEEC0EAIAZBEGogA0EEakEAELAERQ0BGgwDC0EBIQpCfyEBAkAgAygCDCIHQf\u002F\u002F\u002F\u002F8HRg0AAn5CACAHQQBMDQAaIAMoAggEQEIAIQEMAgsgB0HAAEsNASADKAIUIAMoAhAiA0ECdGoiCkEEaygCACILQSAgB2t2rSAHQSBNDQAaIANBAk8EfiAKQQhrNQIABUIACyALrUIghoRBwAAgB2utiAshAUEAIQoLIAYgATcDECAKDQJBAAshB0QAAAAAAAAAACEMQQALIQNBfyEFAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAC8BBkEVaw4LAQABAwQGBwsLCQoNCyADRQ0MIAYpAxAiDUKAAXxCgAJaDQwMAQsgA0UNCyAGKQMQIg1C\u002FwFWDQsLIAAoAiQhACAEQQFGBEAgDadB\u002F\u002F8DcSEDIAYoAhwhBQNAIAIgBUYNCyADIAAgBWotAABGDQwgBSAIaiEFDAALAAsgACAGKAIcIgJqIA2nQf\u002F\u002FA3EgCSACaxCSAiICRQ0KIAIgAGshBQwKCyADRQ0JIAYpAxAiDUKAgAJ8QoCABFoNCQwBCyADRQ0IIAYpAxAiDUL\u002F\u002FwNWDQgLIAAoAiQhACAGKAIcIQUgDadB\u002F\u002F8DcSEDA0AgAiAFRg0HIAAgBUEBdGovAQAgA0YNCCAFIAhqIQUMAAsACyADRQ0GIAYpAxAiDUKAgICACHxCgICAgBBaDQYMAQsgA0UNBSAGKQMQIg1C\u002F\u002F\u002F\u002F\u002Fw9WDQULIA2nIQMgACgCJCEAIAYoAhwhBQNAIAIgBUYNBCAAIAVBAnRqKAIAIANGDQUgBSAIaiEFDAALAAsgB0UNAyAMvUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KBgICAgICA+P8AWgRAIARBf0cNBSAAKAIkIQAgBigCHCEFA0AgAiAFRg0EIAAgBUECdGooAgBB\u002F\u002F\u002F\u002F\u002FwdxQYCAgPwHSw0FIAUgCGohBQwACwALIAwgDLYiDrtiDQMgACgCJCEAIAYoAhwhBQNAIAIgBUYNAyAAIAVBAnRqKgIAIA5bDQQgBSAIaiEFDAALAAsgB0UNAiAAKAIkIQAgDL1C\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgYCAgICAgPj\u002FAFoEQCAEQX9HDQQgBigCHCEFA0AgAiAFRg0DIAAgBUEDdGopAwBC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYNBCAFIAhqIQUMAAsACyAGKAIcIQUDQCACIAVGDQIgACAFQQN0aisDACAMYQ0DIAUgCGohBQwACwALIAcNASAAKAIkIQAgBigCHCEFIAYpAxAhAQNAIAIgBUYNASAAIAVBA3RqKQMAIAFRDQIgBSAIaiEFDAALAAtBfyEFCyAEQX9GDQELIAWtIQ0MAQsgBUEATq1CgICAgBCEIQ0LIAZBIGokACANC4MDAgR\u002FBH4jAEEgayIFJAACfiAAIAEQigEiCEEATgRAQSwhBwJAIAJBAEwgBHJFBEBCgICAgDAhCSADKQMAIgpCgICAgHCDQoCAgIAwUQ0BQoCAgIDgACAAIAoQJSIJQoCAgIBwg0KAgICA4ABRDQMaQX8hByAJpyIGKAIEQQFHDQEgBi0AECEHDAELQoCAgIAwIQkLIAAgBUEIakEAED4aQQAhAgJAA0AgAiAIRwRAAkAgAkUNACAHQQBOBEAgBUEIaiAHEDxFDQEMBAsgBUEIaiAGQQAgBigCBEH\u002F\u002F\u002F\u002F\u002FB3EQSw0DCyAAIAEgAhCmASILQoCAgIBwgyIKQoCAgIAgUSAKQoCAgIAwUXJFBEAgCkKAgICA4ABRDQMgBUEIaiAEBH4gACALENYEBSALCxCEAQ0DCyACQQFqIQIMAQsLIAAgCRAMIAVBCGoQNwwCCyAFKAIIKAIQIgJBEGogBSgCDCACKAIEEQAAIAAgCRAMC0KAgICA4AALIQwgBUEgaiQAIAwLXgEBfiAAIAFBABBrIgJFBEBCgICAgOAADwtCgICAgOAAIQQgAEKAgICAMCABIAIvAQYQ+QIiAUKAgICAcINCgICAgOAAUgRAIAAgASAAIAMQxQQhBCAAIAEQDAsgBAu9AgMDfwF+AXwjAEEgayIDJAAgAigCBEUEQCABKAIAIQUgAyACKAIAIgEgAigCHCAAKAIAIgAgAigCIGxqIAIoAhgRDgA3AxAgAyABIAIoAhwgBSACKAIgbGogAigCGBEOADcDGAJAIAEgAikDEEKAgICAMEECIANBEGoQHCIGQoCAgIBwg0KAgICA4ABRBEAgAkEBNgIEDAELAkACfyAGQv\u002F\u002F\u002F\u002F8PWARAIAanIgRBH3UgBEEAR3IMAQsgASADQQhqIAYQbUEASA0BIAMrAwgiB0QAAAAAAAAAAGQgB0QAAAAAAAAAAGNrCyIERQRAIAAgBUsgACAFSWshBAsgAigCCCgCICgCDCgCIC0ABEUNASACQQI2AgQMAQsgAkEBNgIECyABIAMpAxAQDCABIAMpAxgQDAsgA0EgaiQAIAQLoAICA38DfiMAQTBrIgIkAEKAgICA4AAhBwJAIAAgAUEAEGsiBUUNACAAIAJBDGogAykDACAFKAIoIgQgBBBWDQAgAiAENgIIIAMpAwgiCEKAgICAcINCgICAgDBSBEAgACACQQhqIAggBCAEEFYNASACKAIIIQQLIAIoAgwhAyAAIAFBABDHBCIIQoCAgIDwAINCgICAgOAAUQ0AIAUvAQYhBiAAIAgQDCAAIAFBABDIBCIJQoCAgIBwg0KAgICA4ABRDQAgBkHKngFqLQAAIQUgAiAJNwMYIAIgATcDECACIAQgA2siBEEAIARBAEobrTcDKCACIAinIAMgBXRqrTcDICAAQQQgAkEQahDhAiEHIAAgCRAMCyACQTBqJAAgBwvAAwIHfwR+IwBBIGsiAiQAQoCAgIAwIQsCQAJAIAAgARCKASIEQQBIDQAgACACQQxqIAMpAwAgBCAEEFYNACACIAQ2AgggAykDCCIMQoCAgIBwg0KAgICAMFIEQCAAIAJBCGogDCAEIAQQVg0BIAIoAgghBAsgAigCDCEDIAAgAUEAEGsiBkUNACAGLwEGIQkgAiAEIANrIgVBACAFQQBKGyIErSINNwMYIAIgATcDECAAQQIgAkEQahDhAiILQoCAgIBwg0KAgICA4ABRDQAgBUEATA0BIAlByp4Bai0AACEHIAAgARC6Aw0AIAAgCxC6Aw0AAkAgACALQQAQayIFRQ0AIAYvAQYiCCAFLwEGRw0AIAUoAiAoAhQgCEHKngFqLQAAIgh2IARJDQAgAyAEaiAGKAIgKAIUIAh2Sw0AIAUoAiQgBigCJCADIAd0aiAEIAd0EB4aDAILQgAhDANAIAwgDVENAiAAIAEgAyAMp2qtEE4iDkKAgICAcINCgICAgOAAUQ0BIAAgCyAMIA5BgIABEM8BIQogDEIBfCEMIApBAE4NAAsLIAAgCxAMQoCAgIDgACELCyACQSBqJAAgCwteAQF+IAAgAUEAEGsiAkUEQEKAgICA4AAPC0KAgICA4AAhBCAAQoCAgIAwIAEgAi8BBhD5AiIBQoCAgIBwg0KAgICA4ABSBEAgACABIAAgABDGBCEEIAAgARAMCyAEC7cCAgV+A38jAEEgayIKJABCgICAgDAhBQJAAkAgACABEIoBIgtBAEgNACAAIAMpAwAiCBBVDQBCgICAgDAhBiACQQJOBEAgAykDCCEGCyALQQFrQQAgBEF+cUECRiICGyEDQX9BASACGyEMQX8gCyACGyECA0AgAiADRwRAIAAgASADrSIHEE4iBUKAgICAcINCgICAgOAAUQ0CIAogATcDECAKIAc3AwggCiAFNwMAIAAgCCAGQQMgChAcIglCgICAgHCDQoCAgIDgAFENAiAAIAkQJwRAAkAgBEEBaw4DAAUABQsgACAFEAwgByEFDAQFIAAgBRAMIAMgDGohAwwCCwALC0KAgICAMEL\u002F\u002F\u002F\u002F\u002FDyAEQQFrQX1xGyEFDAELIAAgBRAMQoCAgIDgACEFCyAKQSBqJAAgBQubBQIEfwJ+IwBBIGsiBCQAQoCAgIDgACEJAkAgACABEIoBIgZBAEgNAAJAIAGnIgUvAQYiB0EVRgRAIAMpAwAiCEIgiKdBdU8EQCAIpyIHIAcoAgBBAWo2AgALIAAgBEEIaiAIENwFDQIgBCAENAIINwMQDAELIAdBG00EQCAAIARBCGogAykDABB1DQIgBCAENQIINwMQDAELIAdBHU0EQCAAIARBEGogAykDABDRBUUNAQwCCyAAIARBCGogAykDABBCDQEgBAJ+IAUvAQZBHkYEQCAEKwMItrytDAELIAQpAwgLNwMQCyAEQQA2AggCQCACQQFMBEAgBCAGNgIcDAELIAAgBEEIaiADKQMIIAYgBhBWDQEgBCAGNgIcIAJBAkYNACADKQMQIghCgICAgHCDQoCAgIAwUQ0AIAAgBEEcaiAIIAYgBhBWDQELIAUoAiAoAgwoAiAtAAQEQCAAEF8MAQsCQAJAAkACQAJAAkAgBS8BBkHKngFqLQAADgQAAQIDBAsgBCgCHCICIAQoAggiAEwNBCAFKAIkIABqIAQtABAgAiAAaxAsGgwECyAEKAIIIgAgBCgCHCICIAAgAkobIQIgBC8BECEDA0AgACACRg0EIAUoAiQgAEEBdGogAzsBACAAQQFqIQAMAAsACyAEKAIIIgAgBCgCHCICIAAgAkobIQIgBCgCECEDA0AgACACRg0DIAUoAiQgAEECdGogAzYCACAAQQFqIQAMAAsACyAEKAIIIgAgBCgCHCICIAAgAkobIQIDQCAAIAJGDQIgBSgCJCAAQQN0aiAEKQMQNwMAIABBAWohAAwACwALEAEACyABQiCIp0F1TwRAIAUgBSgCAEEBajYCAAsgASEJCyAEQSBqJAAgCQumAgIEfwJ+IwBBEGsiBSQAQoCAgIDgACEIAkAgACABEIoBIgRBAEgNACAAIAVBDGogAykDACAEIAQQVg0AIAAgBUEIaiADKQMIIAQgBBBWDQAgBSAENgIEAn8gBCACQQNIDQAaIAQgAykDECIJQoCAgIBwg0KAgICAMFENABogACAFQQRqIAkgBCAEEFYNASAFKAIECyAFKAIIIgdrIgYgBCAFKAIMIgNrIgIgAiAGShsiAkEASgRAIAGnIgYoAiAoAgwoAiAtAAQEQCAAEF8MAgsgBigCJCIAIAMgBi8BBkHKngFqLQAAIgN0aiAAIAcgA3RqIAIgA3QQqwELIAFCIIinQXVPBEAgAaciACAAKAIAQQFqNgIACyABIQgLIAVBEGokACAIC0oCAX4Bf0KAgICAMCECAkAgAUKAgICAcFQNACABpy8BBiIDQRVrQf\u002F\u002FA3FBCksNACAAIAAoAhAoAkQgA0EYbGooAgQQKSECCyACCywBAX5CgICAgOAAIQUgACABELoDBH5CgICAgOAABSAAIAEgACAAIAQQwgULC8EDAgR+BH8jAEEQayIIJABCgICAgDAhBUKAgICAMCEEIAJBAk4EQCADKQMIIQQLIAMpAwAhBkKAgICA4AAhBwJAIAAgAUEAEGsiAkUNACAAIAggBBDjAQ0AAkACQAJAAkACQCAIKQMAIgRCAFMEQAwBCyACKAIgKAIMKAIgLQAEDQQgACAGECAiBUKAgICAcINCgICAgOAAUQ0DIAWnIgMvAQYiCUEVa0H\u002F\u002FwNxQQpNBEAgAygCICIKKAIMKAIgIgstAAQNBSAEIAI1AiggAzUCKCIGfVUNASAJIAIvAQYiA0cNAiAEIANByp4BajEAACIBhqcgAigCICICKAIMKAIgKAIIIAIoAhBqaiALKAIIIAooAhBqIAYgAYanEKsBDAMLIAAgCEEIaiAFEC8NAyAEIAI1AiggCCkDCCIGfVcNAQsgAEGKxwBBABBEDAQLIASnIQJBACEDA0AgBiADrVcNASAAIAUgAxCmASIEQoCAgIBwg0KAgICA4ABRDQQgAiADaiEJIANBAWohAyAAIAEgCSAEEIYCQQBODQALDAMLQoCAgIAwIQcMAgsMAQsgABBfCyAAIAUQDCAIQRBqJAAgBwtRAgF\u002FAX5CgICAgOAAIQQgACABIAIQayIDBH4gAygCICIDKAIMKAIgLQAEBEAgAkUEQEIADwsgABBfQoCAgIDgAA8LIAM1AhQFQoCAgIDgAAsL2wECA34BfyMAQRBrIgIkAEKAgICA4AAhBAJAIAAgAUEAEGsiB0UNACAAIAJBCGogAykDABDjAQ0AIAIpAwgiBSAHNQIoIgYgBUI\u002Fh4N8IgVCAFkgBSAGU3FFBEAgAEHd4QBBABBEDAELIAAgAykDCEEBELsCIgZCgICAgHCDQoCAgIDgAFENACAAQoCAgIAwIAEgBy8BBhD5AiIBQoCAgIBwg0KAgICA4ABRBEAgACAGEAwMAQsgACABIAUgBhB7QQBOBEAgASEEDAELIAAgARAMCyACQRBqJAAgBAuNAQIDfgF\u002FIwBBEGsiAiQAQoCAgIDgACEFAkAgACABQQAQayIHRQ0AIAcoAiAoAgwoAiAtAAQEQCAAEF8MAQsgACACQQhqIAMpAwAQ4wENAEKAgICAMCEFIAIpAwgiBCAHNQIoIgYgBEI\u002Fh4N8IgRCAFMgBCAGWXINACAAIAEgBBBsIQULIAJBEGokACAFCx0AIAAgAUEAEGsiAEUEQEKAgICA4AAPCyAANQIoCz0BAX5CgICAgBAhASADKQMAIgRCgICAgHBaBH4gBKcvAQZBFWtB\u002F\u002F8DcUEMSa1CgICAgBCEBUKAgICAEAsL7gMCBX4CfyMAQSBrIgokAEKAgICA4AAhBQJAIAAgASAEEFoiC0UNACALLQAEBEAgABBfDAELIAAgCkEYaiADKQMAQgAgCzQCACIGIAYQZg0AIAogBjcDECADKQMIIgdCgICAgHCDQoCAgIAwUgRAIAAgCkEQaiAHQgAgBiAGEGYNASAKKQMQIQYLIAopAxghCSAAIAFCgICAgDAQ\u002FQEiB0KAgICAcIMiBUKAgICA4ABRBEAgByEFDAELIAYgCX0iBkIAIAZCAFUbIQgCQCAFQoCAgIAwUQRAIABCgICAgDAgCCAEEOUDIQUMAQsgCiAGQv\u002F\u002F\u002F\u002F8HVwR+IAhC\u002F\u002F\u002F\u002F\u002Fw+DBUKAgICAwH4gCLm9IgVCgICAgMCBgPz\u002FAH0gBUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLNwMIIAAgB0EBIApBCGoQowEhBSAAIAcQDCAAIAopAwgQDAsgBUKAgICAcINCgICAgOAAUQ0AAkAgACAFIAQQWiICRQ0AIAAgBSABEE0EQCAAQco0QQAQEgwBCwJAIAItAAQNACACNAIAIAhTBEAgAEHOwgBBABASDAILIAstAAQNACACKAIIIAsoAgggCadqIAinEB4aDAILIAAQXwsgACAFEAxCgICAgOAAIQULIApBIGokACAFC1EAIAAgASACEFoiAEUEQEKAgICA4AAPCyAAKAIAIgBBAE4EQCAArQ8LQoCAgIDAfiAAuL0iAUKAgICAwIGA\u002FP8AfSABQoCAgICAgID4\u002FwBWGwv\u002FAwICfwF+AkACQAJAAkACQAJAIAFCgICAgHBaBEAgAaciAi8BBkErRg0BCyAEQQE2AgAMAQsgAigCICEGIARBATYCACAGDQELIABBsS1BABASDAELIAYoAgQhAgJAAkACQAJ\u002FAkACQAJAAkAgBigCACIHQQFrDgQCAgcBAAsgBUUNAiAAIAYQyQQLQoCAgIAwIQEgBUEBaw4CAwQHCyADKQMAIgFCIIinQXVPBEAgAaciAyADKAIAQQFqNgIACwJAIAVBAkcNAEEBIQMgB0EBRw0AIAAgARCYASAGKAIEDAILIAIoAmQiAyAFrTcDACADQQhrIAE3AwAgAiADQQhqNgJkC0EAIQMgAgsiBSADNgIcIAZBAzYCACAAIAUQsQIhASAGQQE2AgAgBigCBCgCIARAIAAgBhDJBCABDwsgAUKAgICAEFoNBSACKAJkQQhrIgApAwAhCCAAQoCAgIAwNwMAIAFCAlEEQCAGQQI2AgAgBEECNgIAIAgPCyAEQQA2AgAgCA8LIAMpAwAiAUIgiKdBdUkNAyABpyIAIAAoAgBBAWo2AgAgAQ8LIAMpAwAiAUIgiKdBdU8EQCABpyICIAIoAgBBAWo2AgALIAAgARCYAQwBCyAAQY8tQQAQEgtCgICAgOAAIQELIAEPC0HW8QBBqOwAQaCUAUHEFBAAAAt3AQF+IAMpAwAiAUKAgICAcINCgICAgIB\u002FUgRAIABBkcEAQQAQEkKAgICA4AAPC0KAgICAMCEEIAGnIgApAgRCgICAgICAgIBAg0KAgICAgICAgIB\u002FUQR+IAAgACgCAEEBajYCACABQoCAgICQf4QFQoCAgIAwCws8AQF+QoCAgIDgACEBIAAgAykDABAlIgRCgICAgHCDQoCAgIDgAFIEfiAAIASnQQIQ5gMFQoCAgIDgAAsLVgIBfgF\u002FIAAgARC7AyIBQoCAgIBwg0KAgICA4ABRBEAgAQ8LQoCAgIAwIQIgAaciAygCBEGAgICAeEcEQCAAIAAoAhAgAxDGAhApIQILIAAgARAMIAILCQAgACABELsDC1sBAX4jAEEQayICJAAgAiAAIAEQuwMiATcDCAJAIAFCgICAgHCDQoCAgIDgAFEEQCABIQQMAQsgAEKAgICAMEEBIAJBCGoQygQhBCAAIAEQDAsgAkEQaiQAIAQLLQBCgICAgOAAIAAgAykDACADKQMIQQAQiQIiAEEAR61CgICAgBCEIABBAEgbC6ABAQN+IAMpAwAiBSEEIAJBBE4EQCADKQMYIQQLIAVC\u002F\u002F\u002F\u002F\u002F29YBEAgABAiQoCAgIDgAA8LIAMpAxAhAUKAgICA4AAhBgJAIAAgAykDCBAwIgJFDQAgAUIgiKdBdU8EQCABpyIDIAMoAgBBAWo2AgALIAAgBSACIAEgBEEAENABIQMgACACEBAgA0EASA0AIANBAEetQoCAgIAQhCEGCyAGCyoAIAMpAwAiAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECJCgICAgOAADwsgACABQQNBABCyAgtjAQF+IAMpAwAiBEL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECJCgICAgOAADwtCgICAgOAAIQECQCAAIAMpAwgQMCICRQ0AIAAgBCACEG4hAyAAIAIQECADQQBIDQAgA0EAR61CgICAgBCEIQELIAELYwEDfgJAAkAgAykDACIBQv\u002F\u002F\u002F\u002F9vWARAIAAQIgwBCyADKQMIIQUgASEEIAJBA04EQCADKQMQIQQLIAAgBRAwIgINAQtCgICAgOAADwsgACABIAIgBEEAEBEhBiAAIAIQECAGC2YBAX4gAykDACIEQv\u002F\u002F\u002F\u002F9vWARAIAAQIkKAgICA4AAPC0KAgICA4AAhAQJAIAAgAykDCBAwIgJFDQAgACAEIAJBABDNASEDIAAgAhAQIANBAEgNACADQQBHrUKAgICAEIQhAQsgAQuaAQIBfwJ+IwBBEGsiBCQAIAMpAwghBSADKQMAIgYhAQJAAkACQAJAIAJBA0gNACADKQMQIgFCgICAgHBaBEAgAactAAVBEHENAQsgAEGdLEEAEBIMAQsgACAEQQxqIAUQ\u002FQMiAg0BC0KAgICA4AAhAQwBCyAAIAYgASAEKAIMIgMgAhD+AiEBIAAgAiADEIYDCyAEQRBqJAAgAQt5AQF\u002FIAFCgICAgHCDQoCAgIAwUgRAIABBnSxBABASQoCAgIDgAA8LAn4CQCACRQ0AIAMpAwAiAUKAgICAcINCgICAgDBRDQBCgICAgOAAIAAgARAlIgFCgICAgHCDQoCAgIDgAFENARogAachBAsgACAEQQMQ5gMLCxUAIAAgAykDACADIANBCGpBAhCIAws3ACMAQRBrIgIkACAAIAJBDGogAykDABB1IQAgAigCDCEDIAJBEGokAEKAgICA4AAgA2etIAAbC04AIwBBEGsiAiQAQoCAgIDgACEBAkAgACACQQxqIAMpAwAQdQ0AIAAgAkEIaiADKQMIEHUNACACKAIIIAIoAgxsrSEBCyACQRBqJAAgAQsGACAAtrsLfwAgACAAKQPQASIBQgyIIAGFIgFCGYYgAYUiAUIbiCABhSIBNwPQAUKAgICAwH4gAUKdurP7lJL9oiV+QgyIQoCAgICAgID4P4S\u002FRAAAAAAAAPC\u002FoL0iAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwuIBAMFfAV\u002FAX4jAEEQayIKJAAgCkIANwMIAkACQCACQQBMDQBCgICAgOAAIQEgACAKQQhqIAMpAwAQQg0BQQEhCyAKKwMIIQQgAkEBRwRAA0AgAiALRg0CIAAgCiADIAtBA3RqKQMAEEINAyALQQFqIQsgCisDACEFIwBBIGsiCSQAAkAgBJkiByAFmSIGIAe9IAa9VCIMGyIEvSIOQjSIpyINQf8PRg0AIAYgByAMGyEFAkAgDlANACAFvUI0iKciDEH\u002FD0YNACAMIA1rQcEATgRAIAcgBqAhBAwCCwJ8IAxB\u002FgtPBEAgBEQAAAAAAAAwFKIhBCAFRAAAAAAAADAUoiEFRAAAAAAAALBrDAELRAAAAAAAAPA\u002FIA1BvARLDQAaIAREAAAAAAAAsGuiIQQgBUQAAAAAAACwa6IhBUQAAAAAAAAwFAshCCAJQRhqIAlBEGogBRCIBiAJQQhqIAkgBBCIBiAIIAkrAwAgCSsDEKAgCSsDCKAgCSsDGKCfoiEEDAELIAUhBAsgCUEgaiQADAALAAsgBJkhBAsgBL0iAQJ\u002FIASZRAAAAAAAAOBBYwRAIASqDAELQYCAgIB4CyIAt71RBEAgAK0hAQwBC0KAgICAwH4gAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGyEBCyAKQRBqJAAgAQtOACAAIABEAAAAAAAA8L9EAAAAAAAA8D8gAEQAAAAAAAAAAGMbIAC9Qv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGyAARAAAAAAAAAAAYRsLgwECAn4BfyAAvSIBQjSIp0H\u002FD3EiA0H+B00EQCABQoCAgICAgICAgH+DIQIgA0H+B0cgAUKAgICAgICA8L9\u002FUXJFBEAgAkKAgICAgICA+D+Evw8LIAK\u002FDwsgA0GyCE0EfCABQj+HIAF8QgFBswggA2uthiIBQgGIfEIAIAF9g78FIAALC4IFAwJ8BX8CfiMAQRBrIgkkAAJ+QoCAgIDA\u002Fv\u002F7\u002FwBCgICAgMD+\u002F3sgBBsgAkUNABoCfCADKQMAIgFC\u002F\u002F\u002F\u002F\u002Fw9YBEBBASACIAJBAUwbIQogAachCEEBIQcDQCAHIApHBEAgCLcgAyAHQQN0aikDACIBQoCAgIAQWg0DGiAIIAGnIgsgCCALShsgCCALIAggC0gbIAQbIQggB0EBaiEHDAELCyAIrQwCC0KAgICA4AAgACAJQQhqIAEQQg0BGkEBIQcgCSsDCAshBSAHIAIgAiAHSBshAgNAIAIgB0cEQEKAgICA4AAgACAJIAMgB0EDdGopAwAQQg0CGgJAIAW9IgxC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYNACAJKwMAIga9IgFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYEQCAGIQUMAQsgBUQAAAAAAAAAAGEgBkQAAAAAAAAAAGFxIQogBARAIAoEQCABIAyDvyEFDAILIAUgBSAGpSAGvUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsgBiAFvUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AWBshBQwBCyAKBEAgASAMhL8hBQwBCyAFIAUgBqQgBr1C\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbIAYgBb1C\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFgbIQULIAdBAWohBwwBCwsgBb0iAQJ\u002FIAWZRAAAAAAAAOBBYwRAIAWqDAELQYCAgIB4CyIAt71RBEAgAK0MAQtCgICAgMB+IAFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLIQ0gCUEQaiQAIA0L4wECAX4CfyMAQRBrIgIkAAJAIAAgAUEpEFoiA0UEQCAEQQA2AgBCgICAgOAAIQEMAQtCgICAgDAhAQJAIAMpAwAiBkKAgICAcINCgICAgDBSBEAgAiADKAIMIgU2AgwgBSAGpyIHKAIEQf\u002F\u002F\u002F\u002F8HcUkNASAAIAYQDCADQoCAgIAwNwMACyAEQQE2AgAMAQsgByACQQxqEMYBIQggAyACKAIMNgIMIARBADYCACAIQf\u002F\u002FA00EQCAAIAhB\u002F\u002F8DcRCUAyEBDAELIAAgByAFQQF0akEQakECEJIDIQELIAJBEGokACABC5EDAgN\u002FAn4jAEEgayICJABCgICAgOAAIQgCQCAAIAEQSiIBQoCAgIBwg0KAgICA4ABRDQAgACACQQhqIgVBBxA+GiAFQTwQPBogBSAEQQN0IgRB0OEBaigCACIGEIMBGiAEQdThAWooAgAiBARAIAVBIBA8GiAFIAQQgwEaIAVB2pEBEIMBGiAAIAMpAwAQSiIJQoCAgIBwg0KAgICA4ABRBEAgACABEAwgAigCCCgCECIAQRBqIAIoAgwgACgCBBEAAAwCCyAJpyIHQRBqIQVBACEEA0AgBCAHKQIEIginQf\u002F\u002F\u002F\u002F8HcU9FBEACQAJ\u002FIAhCgICAgAiDUEUEQCAFIARBAXRqLwEADAELIAQgBWotAAALIgNBIkYEQCACQQhqQcuAARCDARoMAQsgAkEIaiADEIcBGgsgBEEBaiEEDAELCyAAIAkQDCACQQhqQSIQPBoLIAJBCGoiAEE+EDwaIAAgARCEARogAEHnhwEQgwEaIAAgBhCDARogAkEIakE+EDwaIAAQNyEICyACQSBqJAAgCAugBAEHfyMAQTBrIgUkAAJAIAAgARBKIgFCgICAgHCDQoCAgIDgAFENACABpyIHKAIEQf\u002F\u002F\u002F\u002F8HcSICRQ0AAkAgACAFQRRqIAIQPg0AQQAhAiAFQQA2AhAgB0EQaiEIA0ACQCAHKAIEQf\u002F\u002F\u002F\u002F8HcSACSgRAAn8CQCAERSAHIAVBEGoQxgEiCUGjB0dyDQAgBSgCECIKQQFrIQIDQAJAIAJBAEwEQEEAIQYMAQsgAkEBayEDAkAgBy0AB0GAAXEEQCACQQFGIAggA0EBdGovAQAiBkGA+ANxQYC4A0dyDQEgCCACQQJrIgJBAXRqLwEAIgtBgNAAakH\u002F\u002FwNxQYAISw0BIAZB\u002FwdxIAtB\u002FwdxQQp0ckGAgARqIQYMAgsgAyAIai0AACEGCyADIQILIAYQmQYNAAsgBhCbBkUNACAFIAo2AiwCQANAIAUoAiwgBygCBEH\u002F\u002F\u002F\u002F\u002FB3FODQEgByAFQSxqEMYBIgIQmQYNAAsgAhCbBg0BCyAFQcIHNgIEQQEMAQsgBUEEaiAJIAQQnQYLIQZBACECIAZBACAGQQBKGyEDA0AgAiADRg0CIAJBAnQhBiACQQFqIQIgBUEUaiAGIAVBBGpqKAIAELEBRQ0ACwwDCyAAIAEQDCAFQRRqEDchAQwDCyAFKAIQIQIMAAsACyAAIAEQDCAFKAIUKAIQIgBBEGogBSgCGCAAKAIEEQAAQoCAgIDgACEBCyAFQTBqJAAgAQvOAgICfgd\u002FIwBBEGsiAiQAQoCAgIDgACEEAkAgACABEEoiAUKAgICAcINCgICAgOAAUQ0AIAAgAykDABAlIgVCgICAgHCDQoCAgIDgAFEEQCAAIAEQDAwBCyAAIAJBDGogAUEAENoDIQcgACABEAwgB0EASARAIAAgBRAMDAELIAAgAkEIaiAFQQAQ2gMhCCAAIAUQDCACKAIMIQkgCEEASARAIAAoAhAiAEEQaiAJIAAoAgQRAAAMAQsgByAIIAcgCEgiCxshDEEAIQMgAigCCCEKAkADQCADIAxHBEAgA0ECdCEGIANBAWohAyAGIAlqKAIAIAYgCmooAgBrIgZFDQEMAgsLQX9BASALG0EAIAcgCEcbIQYLIAAoAhAiA0EQaiAJIAMoAgQRAAAgACgCECIAQRBqIAogACgCBBEAACAGrSEECyACQRBqJAAgBAsJACAAIAEQhwULagACQAJAIAFCIIinIgJBf0cEQCACQXlHDQEMAgsgAaciAi8BBkEFRw0AIAIpAyAiAUKAgICAcINCgICAgJB\u002FUg0ADAELIABBxskAQQAQEkKAgICA4AAPCyABpyIAIAAoAgBBAWo2AgAgAQv1AQICfwJ+IAAgARBKIgFCgICAgHCDQoCAgIDgAFEEQCABDwsgAaciBigCBEH\u002F\u002F\u002F\u002F\u002FB3EhAgJAIARBAXFFDQAgBkEQaiEDA0AgAiAFRgRAIAIhBQwCCwJ\u002FIAYtAAdBgAFxBEAgAyAFQQF0ai8BAAwBCyADIAVqLQAACxCpA0UNASAFQQFqIQUMAAsACwJAIARBAnFFBEAgAiEDDAELIAZBEGohBANAIAIiAyAFTA0BIAJBAWshAgJ\u002FIAYtAAdBgAFxBEAgBCACQQF0ai8BAAwBCyACIARqLQAACxCpAw0ACwsgACAGIAUgAxCOASEIIAAgARAMIAgL6QMCBn8DfiMAQSBrIgUkAEKAgICA4AAhDAJAIAAgARBKIgFCgICAgHCDQoCAgIDgAFENAAJAAkAgACAFQQRqIAMpAwAQswENACAFKAIEIgcgAaciCSgCBEH\u002F\u002F\u002F\u002F\u002FB3EiCEwNAUEgIQpCgICAgDAhCwJAIAJBAkgNACADKQMIIg1CgICAgHCDQoCAgIAwUQ0AIAAgDRAlIgtCgICAgHCDQoCAgIDgAFENAQJAAkAgC6ciBikCBCINp0H\u002F\u002F\u002F\u002F\u002FB3EOAgABAgsgACALEAwMAwsCfyANQoCAgIAIg1BFBEAgBi8BEAwBCyAGLQAQCyEKQQAhBgsgB0GAgICABE8EQCAAQeTIAEEAEDoMAQsgACAFQQhqIgIgBxA+RQRAAkAgBARAIAIgCUEAIAgQSw0BCyAHIAhrIQMCQCAGBEADQCADQQBMDQIgAyADIAYoAgRB\u002F\u002F\u002F\u002F\u002FwdxIgIgAiADShsiAmshAyAFQQhqIAZBACACEEtFDQAMAwsACyAFQQhqIAogAxDLBA0BCyAERQRAIAVBCGogCUEAIAgQSw0BCyAAIAsQDCAAIAEQDCAFQQhqEDchDAwECyAFKAIIKAIQIgJBEGogBSgCDCACKAIEEQAACyAAIAsQDAsgACABEAwMAQsgASEMCyAFQSBqJAAgDAuCBgIFfgV\u002FIwBB0ABrIgIkAAJAAkACQAJAIAFCgICAgBCEQoCAgIBwg0KAgICAMFEEQCAAQZseQQAQEgwBCyADKQMIIQkgAykDACIFQoCAgIAQhEKAgICAcINCgICAgDBRDQIgBEUNASAAIAUQzQRBAE4NAQtCgICAgOAAIQYMAgsgACAFQc8BIAVBABARIgdCgICAgHCDIgZCgICAgCBRIAZCgICAgDBRcg0AIAZCgICAgOAAUQ0BIAIgCTcDKCACIAE3AyAgACAHIAVBAiACQSBqEDYhBgwBCyAAIAJBCGpBABA+GkKAgICA4AAhBkKAgICAMCEIAkAgACABECUiB0KAgICAcINCgICAgOAAUQRAQoCAgIAwIQUMAQsgACAFECUiBUKAgICAcINCgICAgOAAUQ0AIAAgCRA1Ig5FBEAgACAJECUiCEKAgICAcINCgICAgOAAUQ0BCyAHpyELIAWnIg0pAgQhAQNAAkACQCABQv\u002F\u002F\u002F\u002F8Hg1AEQEEAIQMgDEUNASAKIAsoAgRB\u002F\u002F\u002F\u002F\u002FwdxTw0CIApBAWohAwwBCyALIA0gChDMBCIDQQBODQAgDA0BIAIoAggoAhAiA0EQaiACKAIMIAMoAgQRAAAgACAFEAwgACAIEAwgByEGDAQLIAIgBTcDIAJ+IA4EQCACIAc3AzAgAiADrTcDKCAAIAAgCUKAgICAMEEDIAJBIGoQHBA0DAELIAIgCDcDSCACQoCAgIAwNwNAIAJCgICAgDA3AzggAiAHNwMoIAIgA603AzAgACACQSBqEIgFCyIBQoCAgIBwg0KAgICA4ABRDQIgAkEIaiIMIAsgCiADEEsaIAwgARCEARogDSkCBCIBp0H\u002F\u002F\u002F\u002F\u002FB3EgA2ohCkEBIQwgBA0BCwsgAkEIaiIDIAsgCiALKAIEQf\u002F\u002F\u002F\u002F8HcRBLGiAAIAUQDCAAIAgQDCAAIAcQDCADEDchBgwBCyACKAIIKAIQIgNBEGogAigCDCADKAIEEQAAIAAgBRAMIAAgCBAMIAAgBxAMCyACQdAAaiQAIAYLuAICA38DfiMAQSBrIgIkAEKAgICA4AAhBwJAAkACQCAAIAEQSiIBQoCAgIBwg0KAgICA4ABRDQAgACACIAMpAwAQ4wENACACKQMAIghCgICAgAhaBEAgAEHTGEEAEEQMAQsgCKciA0EBRg0BIAGnIgQpAgQiCaciBkH\u002F\u002F\u002F\u002F\u002FB3EiBUUNASAJQv\u002F\u002F\u002F\u002F8HgyAIfkKAgICABFoEQCAAQeTIAEEAEDoMAQsgACACQQhqIAMgBWwgBkEfdhCZAw0AAkAgBUEBRwRAA0AgA0EATA0CIAJBCGogBEEAIAUQSxogA0EBayEDDAALAAsgAkEIagJ\u002FIAQtAAdBgAFxBEAgBC8BEAwBCyAELQAQCyADEMsEGgsgACABEAwgAkEIahA3IQcMAgsgACABEAwMAQsgASEHCyACQSBqJAAgBwtYAQF+IAAgAykDABDkAUEAR61CgICAgBCEIQQgAUKAgICAcINCgICAgDBRBEAgBA8LIAAgAUEGEF4iAUKAgICAcINCgICAgOAAUgRAIAAgASAEEL0BCyABC8EBAgJ\u002FAn4jAEEQayIEJABCgICAgOAAIQYCQCAAIAEQSiIBQoCAgIBwg0KAgICA4ABRBEAgASEGDAELAkAgACAEQQxqIAMpAwAgAaciBSgCBEH\u002F\u002F\u002F\u002F\u002FB3EiAiACEFYNACAEIAI2AgggAykDCCIHQoCAgIBwg0KAgICAMFIEQCAAIARBCGogByACIAIQVg0BIAQoAgghAgsgACAFIAQoAgwiAyACIAMgAiADShsQjgEhBgsgACABEAwLIARBEGokACAGC8ABAgN\u002FAn4jAEEQayICJABCgICAgOAAIQcCQCAAIAEQSiIBQoCAgIBwg0KAgICA4ABRBEAgASEHDAELAkAgACACQQxqIAMpAwAgAaciBigCBEH\u002F\u002F\u002F\u002F\u002FB3EiBCAEEFYNACACIAQgAigCDCIFayIENgIIIAAgBiAFIAMpAwgiCEKAgICAcINCgICAgDBSBH8gACACQQhqIAggBEEAEFYNASACKAIIBSAECyAFahCOASEHCyAAIAEQDAsgAkEQaiQAIAcL0wECAn8CfiMAQRBrIgIkAEKAgICA4AAhBgJAIAAgARBKIgFCgICAgHCDQoCAgIDgAFEEQCABIQYMAQsCQCAAIAJBDGogAykDACABpyIFKAIEQf\u002F\u002F\u002F\u002F8HcUEAEFYNACACIAUoAgRB\u002F\u002F\u002F\u002F\u002FwdxIgQ2AgggAykDCCIHQoCAgIBwg0KAgICAMFIEQCAAIAJBCGogByAEQQAQVg0BIAIoAgghBAsgACAFIAIoAgwiAyAEIAMgBEgbIAMgBCADIARKGxCOASEGCyAAIAEQDAsgAkEQaiQAIAYLoQUCC34DfyMAQRBrIgIkAAJAIAFCgICAgBCEQoCAgIBwg0KAgICAMFEEQCAAQZseQQAQEkKAgICA4AAhBwwBCyADKQMIIQQCQCADKQMAIgVCgICAgHCDIglCgICAgBCEQoCAgIAwUQ0AIAAgBUHRASAFQQAQESIGQoCAgIBwgyIHQoCAgIAgUSAHQoCAgIAwUXINACAHQoCAgIDgAFENASACIAQ3AwggAiABNwMAIAAgBiAFQQIgAhA2IQcMAQtCgICAgOAAIQdCgICAgDAhCCAAAn5CgICAgDAgACABECUiCkKAgICAcINCgICAgOAAUQ0AGkKAgICA4AAgABA7IgFCgICAgHCDQoCAgIDgAFENABoCQAJAIARCgICAgHCDQoCAgIAwUQRAIAJBfzYCAAwBCyAAIAIgBBB1QQBIDQELIAqnIgMpAgQhCyAAIAUQJSIIQoCAgIBwg0KAgICA4ABRDQACQCACKAIAIhBFDQBCACEGAkAgCUKAgICAMFENACAIpyIRKQIEQv\u002F\u002F\u002F\u002F8HgyEFIAtC\u002F\u002F\u002F\u002F\u002FweDIgRQRQRAIAQgBX0gBVCtIgl9IQwgEK0hDUIAIQQDQAJAIAQgCXwiDiAMVQ0AIAMgESAOpxDMBCIPQQBIDQAgACADIASnIA8QjgEiBEKAgICAcINCgICAgOAAUQ0FIAAgASAGIARBABDIAUEASA0FIAUgD6x8IQQgBkIBfCIGIA1SDQEMBAsLIAZC\u002F\u002F\u002F\u002F\u002Fw+DIQYgBKchDwwBCyAFUA0BCyAAIAMgDyALp0H\u002F\u002F\u002F\u002F\u002FB3EQjgEiBUKAgICAcINCgICAgOAAUQ0BIAAgASAGIAVBABDIAUEASA0BCyAAIAoQDCAAIAgQDCABIQcMAgsgAQsQDCAAIAoQDCAAIAgQDAsgAkEQaiQAIAcLoAMBBH4jAEEwayICJAAgAiABNwMoAkAgAUKAgICAEIRCgICAgHCDQoCAgIAwUQRAIABBmx5BABASQoCAgIDgACEGDAELAkAgAykDACIFQoCAgIAQhEKAgICAcINCgICAgDBRDQBCgICAgOAAIQYgACAFIAQgBUEAEBEiB0KAgICAcIMiCEKAgICA4ABRDQECQCAEQc4BRw0AIAAgBRDNBEEATg0AIAAgBxAMDAILIAhCgICAgBCEQoCAgIAwUQ0AIAAgByAFQQEgAkEoahA2IQYMAQsgAiAAIAEQJSIHNwMIQoCAgIDgACEGIAdCgICAgHCDQoCAgIDgAFENACACIAU3AxACQAJAAn8gBEHOAUcEQEKAgICAMCEBQQEMAQsgAEH2ywAQYCIBQoCAgIBwg0KAgICA4ABRDQEgAiABNwMYQQILIQMgACAAKQNIIAMgAkEQahCjASEFIAAgARAMIAVCgICAgHCDQoCAgIDgAFINAQsgACAHEAwMAQsgACAFIARBASACQQhqEKcCIQYgACACKQMIEAwLIAJBMGokACAGC4sDAgd\u002FA34jAEEQayIGJAACQCAAIAEQSiIMQoCAgIBwg0KAgICA4ABRBEAgDCEBDAELAkAgACADKQMAEPYDIgUEQEKAgICA4AAhAUKAgICAMCENIAVBAEwNASAAQfrkAEEAEBIMAQtCgICAgOAAIQEgACADKQMAECUiDUKAgICAcINCgICAgOAAUQ0AIA2nIgcoAgQhCCAGIAynIgkoAgRB\u002F\u002F\u002F\u002F\u002FwdxIgVBACAEQQJGGzYCDAJAIAJBAkgNACADKQMIIg5CgICAgHCDQoCAgIAwUQ0AIAAgBkEMaiAOIAVBABBWDQELIAUgCEH\u002F\u002F\u002F\u002F\u002FB3EiBWshAiAGKAIMIQMCQAJAAkAgBA4CAgABCyACIANIIQpCgICAgBAhASADIQIgCkUNAQwCCyADIAVrIgMhAgtCgICAgBAhASADQQBIIAIgA0hyDQADQCAJIAcgA0EAIAUQvANFBEBCgYCAgBAhAQwCCyACIANHIQsgA0EBaiEDIAsNAAsLIAAgDBAMIAAgDRAMCyAGQRBqJAAgAQurAwMHfwJ+AXwjAEEQayIFJABCgICAgOAAIQwCQCAAIAEQSiIBQoCAgIBwg0KAgICA4ABRBEAgASEMDAELAkAgACADKQMAECUiDUKAgICAcINCgICAgOAAUQ0AIA2nIgkoAgRB\u002F\u002F\u002F\u002F\u002FwdxIQYgAaciCigCBEH\u002F\u002F\u002F\u002F\u002FB3EhBwJAIAQEQCAFIAcgBmsiCzYCDEF\u002FIQhBACEEIAJBAkgNASAAIAUgAykDCBBCDQIgBSsDACIOvUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVg0BIA5EAAAAAAAAAABlBEAgBUEANgIMDAILIA4gC7djRQ0BIAUCfyAOmUQAAAAAAADgQWMEQCAOqgwBC0GAgICAeAs2AgwMAQsgBUEANgIMIAJBAk4EQCAAIAVBDGogAykDCCAHQQAQVg0CCyAHIAZrIQRBASEIC0L\u002F\u002F\u002F\u002F\u002FDyEMIAYgB0sNACAEIAUoAgwiA2sgCGxBAEgNAANAAkAgCiAJIANBACAGELwDBH8gAyAERw0BQX8FIAMLrSEMDAILIAMgCGohAwwACwALIAAgARAMIAAgDRAMCyAFQRBqJAAgDAv4AQICfgF\u002FIwBBEGsiBiQAAkACQAJAIAJFBEAMAQsgAykDACIEQiCIp0F1TwRAIASnIgIgAigCAEEBajYCAAsgACAEEGUiBEKAgICAcIMiBUKAgICA4ABRDQEgBUKAgICA4H5SDQAgBKdBBGogBkEIahCxBCAAIAQQDEKAgICAwH4gBikDCCIEQoCAgIDAgYD8\u002FwB9IARC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbIQQLIAFCgICAgHCDQoCAgIAwUQ0AIAAgAUEEEF4iAUKAgICAcINCgICAgOAAUQ0BIAAgASAEEL0BDAELIAQhAQsgBkEQaiQAIAELgwICAn4Df0KAgICA4AAhBAJAIAAgARBKIgFCgICAgHCDQoCAgIDgAFENACABpyIDEM4EIgJBAEgEQCABIQQMAQsgACADQRBqIAMoAgRB\u002F\u002F\u002F\u002F\u002FwdxEJIDIQUgACABEAwgBUKAgICAcINCgICAgOAAUQ0AIAWnIgZBEGohAwNAIAYoAgRB\u002F\u002F\u002F\u002F\u002FwdxIgAgAkwEQCAFDwUCQCADIAJBAXRqIgcvAQAiCEGA8ANxQYCwA0YEQAJAIAhB\u002F7cDSw0AIAAgAkEBaiIATA0AIAMgAEEBdGovAQBBgEBrQf\u002F\u002FA3FB\u002F\u002FcDSw0CCyAHQf3\u002FAzsBAAsgAiEACyAAQQFqIQIMAQsACwALIAQLTAIBfgF\u002FQoCAgIDgACEEIAAgARBKIgFCgICAgHCDQoCAgIDgAFIEfiABpxDOBCEFIAAgARAMIAVBH3atQoCAgIAQhAVCgICAgOAACwuSAQIBfgJ\u002FIwBBEGsiAiQAQoCAgIDgACEEAkAgACABEEoiAUKAgICAcINCgICAgOAAUQRAIAEhBAwBCwJAIAAgAkEMaiIFIAMpAwAQswENAEKAgICAMCEEIAIoAgwiA0EASA0AIAMgAaciBigCBEH\u002F\u002F\u002F\u002F\u002FB3FPDQAgBiAFEMYBrSEECyAAIAEQDAsgAkEQaiQAIAQLaQICfwF+IAAgARBKIQEDQCACIARMIAFCgICAgHCDQoCAgIDgAFFyRQRAIAMgBEEDdGopAwAiBkIgiKdBdU8EQCAGpyIFIAUoAgBBAWo2AgALIARBAWohBCAAIAEgBhC2AiEBDAELCyABC7gBAgJ+AX8jAEEQayICJABCgICAgOAAIQQCQCAAIAEQSiIBQoCAgIBwg0KAgICA4ABRBEAgASEEDAELAkAgACACQQxqIAMpAwAQswENAEKAgICAwH4hBCACKAIMIgNBAEgNACADIAGnIgYpAgQiBadB\u002F\u002F\u002F\u002F\u002FwdxTw0AIAZBEGohBiAFQoCAgIAIg1BFBEAgBiADQQF0ajMBACEEDAELIAMgBmoxAAAhBAsgACABEAwLIAJBEGokACAEC\u002FQBAgF+AX8jAEEQayICJABCgICAgOAAIQUCQCAAIAEQSiIBQoCAgIBwg0KAgICA4ABRBEAgASEFDAELAkAgACACQQxqIAMpAwAQswENACABpyEGIARFIAIoAgwiA0EATnJFBEAgBigCBEH\u002F\u002F\u002F\u002F\u002FB3EgA2ohAwsCQCADQQBOBEAgAyAGKQIEIgWnQf\u002F\u002F\u002F\u002F8HcUkNAQtCgICAgDAhBSAEDQEgAEEvECkhBQwBCyAGQRBqIQQgAAJ\u002FIAVCgICAgAiDUEUEQCAEIANBAXRqLwEADAELIAMgBGotAAALQf\u002F\u002FA3EQlAMhBQsgACABEAwLIAJBEGokACAFC8wCAgJ\u002FB34jAEEgayIEJAAgACAEQQhqQQAQPhpCgICAgOAAIQlCgICAgDAhBgJAAkACQCAAIAMpAwAQICIHQoCAgIBwg0KAgICA4ABRDQAgACAAIAdB8QAgB0EAEBEQyQUiBkKAgICAcINCgICAgOAAUQ0AIAAgBCAGEC9BAEgNAEIAIQEgBCkDACIIQgAgCEIAVRshCiAIQgF9IQggAqwhCwNAIAEgClENAiAAIAAgBiABEGwQNCIMQoCAgIBwg0KAgICA4ABRDQEgBEEIaiIFIAwQhAEaIAEgCFkhAiABQgF8IQEgASALWSACcg0AIAUgAyABp0EDdGopAwAQjQFFDQALCyAAIAcQDCAAIAYQDCAEKAIIKAIQIgBBEGogBCgCDCAAKAIEEQAADAELIAAgBxAMIAAgBhAMIARBCGoQNyEJCyAEQSBqJAAgCQuFAgMDfwF8AX4jAEEgayIEJAACfgJAIAAgBCACED4NACACQQAgAkEAShshBgJAA0AgBSAGRwRAAkAgAyAFQQN0aikDACIBQv\u002F\u002F\u002F\u002F8PWARAIAGnIgJB\u002F\u002F\u002FDAE0NAQwECyAAIARBGGogARBCDQQgBCsDGCIHRAAAAAAAAAAAYyAHRAAAAAD\u002F\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\u002F\u002F\u002F\u002F\u002FA0sNACACKAIMIAZBA3RqKQMAIAQQmQEgCCgCICEFCyAGQQFqIQYgAUEIaiEBDAALAAsgCC0AEEUEQCAIKAIYIQEgACAAKQNoQgF8NwNoIAAgACkDcCABQQJ0IAgoAhxBA3RqQTRqrXw3A3ALAkACQAJAAkACQAJAAkACQAJAAkAgAkECay8BAEECaw4gAAkBAQEBAAkBCQIDBAUJBwYICAkJCQkJCQkJCQkJCQEJCyAAIAApA6gBQgF8NwOoASACQQNrLQAAQQhxRQ0JIAAgACkDsAFCAXw3A7ABIAIoAhxFDQkgACAAKQMgQgF8NwMgIAAgACkDECACKAIgQQN0rXw3AxAgACAAKQO4ASACNQIgfDcDuAFBACEBA0AgASACKAIgTw0KIAIoAhwgAUEDdGopAwAgBBCZASABQQFqIQEMAAsACyACKQMYIAQQmQEMCAsgACAAKQOgAUIBfDcDoAEMBwsgAigCHCILRQ0GIAIoAhghCCAAIAApAyBCAXw3AyAgACAAKQOAASAIKAI8IgVBAnStfDcDgAFBACEBA0AgASAFTg0HAkAgCyABQQJ0aigCACIGRQ0AIAACfkQAAAAAAADwPyAGKAIAtyIaoyAAKQMguaAiG5lEAAAAAAAA4ENjBEAgG7AMAQtCgICAgICAgICAfws3AyAgAAJ+RAAAAAAAAERAIBqjIAApA4ABuaAiGplEAAAAAAAA4ENjBEAgGrAMAQtCgICAgICAgICAfws3A4ABIAYoAhAiDSAGQRhqRw0AIA0pAwAgBBCZASAIKAI8IQULIAFBAWohAQwACwALIAIoAhgiBUEYaiEGQQAhAQNAIAUoAhAiCCABSgRAIAYgAUEDdGopAwAgBBCZASABQQFqIQEMAQsLIAAgACkDIEIBfDcDICAAIAApAxAgCEEDdEEYaq18NwMQDAULIAIoAhgiBUUNBCAFQQhqIQZBACEBA0AgBS0ABSIIIAFLBEAgBiABQQN0aikDACAEEJkBIAFBAWohAQwBCwsgACAAKQMgQgF8NwMgIAAgACkDECAIrUIDhnxCCHw3AxAMBAsgAigCGCAEEIwEIAIoAhwgBBCMBAwDCyACKAIYIgFFDQIgASkDACAEEJkBIAAgACkDIEIBfDcDICAAIAApAxBCGHw3AxAMAgsgAigCGCIBRQ0BIAAgACkDICIOQgF8NwMgIAAgACkDEEIcfCIPNwMQIAEoAghFDQEgACAOQgJ8NwMgIAAgDyABNAIAfDcDEAwBCyACKAIYRQ0AIAAgACkDIEIBfDcDIAsgAkEEaiEBDAELCyAAIAApA1AgACkDSCIPQjB+fCIQNwNQIAAgACkDECAJKALYASIBQQJ0rXwiETcDEEEAIQYgAUEAIAFBAEobIQIgACkDICEOA0AgAiAGRwRAIAkoAuABIAZBAnRqIQEDQCABKAIAIgEEQCABKAIYIQUgACAAKQNoQgF8NwNoIAAgACkDcCAFQQJ0IAEoAhxBA3RqQTRqrXw3A3AgAUEoaiEBDAELCyAGQQFqIQYMAQsLIAAgDkIDfCISNwMgIAAgCSgCKCIFrDcDKCAAIAkoAiwiAiAJKAIkakECdK0iDjcDMEEAIQEgAkEAIAJBAEobIQYDQCABIAZHBEAgCSgCOCABQQJ0aigCACICQQFxRQRAIAAgDiACKAIEIgJBH3UgAkH\u002F\u002F\u002F\u002F\u002FB3EgAkEfdnRqQRFqrXwiDjcDMAsgAUEBaiEBDAELCyAAAn4gBCsDCBCgAyIamUQAAAAAAADgQ2MEQCAasAwBC0KAgICAgICAgIB\u002FCyITNwM4IAACfiAEKwMQEKADIhqZRAAAAAAAAOBDYwRAIBqwDAELQoCAgICAgICAgH8LIhQ3A0AgACAEKQMYIhU3A3ggAAJ+IAQrAyAQoAMiGplEAAAAAAAA4ENjBEAgGrAMAQtCgICAgICAgICAfwsiFjcDgAEgACAEKQMoIhc3A4gBIAAgBCkDMCIYNwOQASAAIAQpAzgiGTcDmAEgBCsDACEaIAAgACkDcCAAKQNgIBkgFyAQIBF8IBR8IBZ8fHwgDnx8fDcDECAAAn4gGhCgAyAFt6AgE7mgIA+5oCAAKQNouaAgFbmgIBi5oCASuaAiGplEAAAAAAAA4ENjBEAgGrAMAQtCgICAgICAgICAfws3AyAgBEFAayQAQbDUBCgCACECQQAhAUEAIQYjAEHABmsiACQAIAAgBzQCCDcDmAQgAEEgNgKQBCADQamWASAAQZAEahCaASACBEAgAkEQaiEFA0AgAUEFRwRAIAUgAUEDdCIIQeSbAWooAgAiBCACKAIAEQMAIgkEQCAEIAkgAigCDBEFACIKTQRAIAAgCEHgmwFqKAIANgKIBCAAIAQ2AoAEIAAgCiAEazYChAQgA0HrkgEgAEGABGoQmgFBASEGCyAFIAkgAigCBBEAAAsgAUEBaiEBDAELCyAGRQRAQf2SAUEhIAMQiQYLIABB4ARqQQBB3AEQLBogAkHUAGohASACQdAAaiEEA0AgBCABKAIAIgFHBEAgAUEEay0AAEEPcUUEQCAAQeAEakE2IAFBAmsvAQAiBSAFQTZPG0ECdGoiBSAFKAIAQQFqNgIACyABQQRqIQEMAQsLQbiSAUESIAMQiQYgACgC4AQiAQRAIABBi9MANgL4AyAAQQA2AvQDIAAgATYC8AMgA0HakgEgAEHwA2oQmgELQQEhAQNAIAFBNkcEQAJAIABB4ARqIAFBAnRqKAIAIgRFDQAgASACKAJATg0AIAAgAiAAQaAEaiACKAJEIAFBGGxqKAIEEOUFNgLoAyAAIAE2AuQDIAAgBDYC4AMgA0HakgEgAEHgA2oQmgELIAFBAWohAQwBCwsgACgCuAYiAQRAIABBxTM2AtgDIABBADYC1AMgACABNgLQAyADQdqSASAAQdADahCaAQsCQAJAIAMoAkwiAUEATgRAIAFFDQFBtNUEKAIAIAFB\u002F\u002F\u002F\u002F\u002FwNxRw0BCwJAIAMoAlBBCkYNACADKAIUIgEgAygCEEYNACADIAFBAWo2AhQgAUEKOgAADAILIAMQigYMAQsgAyADKAJMIgFB\u002F\u002F\u002F\u002F\u002FwMgARs2AkwCQAJAIAMoAlBBCkYNACADKAIUIgEgAygCEEYNACADIAFBAWo2AhQgAUEKOgAADAELIAMQigYLIAMoAkwaIANBADYCTAsLIABB2\u002FgANgLIAyAAQdDxADYCxAMgAEH0+AA2AsADIANBy5IBIABBwANqEJoBIAcpAxgiDlBFBEAgACAHKQMAIg83A7ADIAAgDjcDqAMgACAPuSAOuaM5A7gDIABBwecANgKgAyADQf+UASAAQaADahCqASAHKQMgIQ4gBykDACEQIAcpAxAhDyAAQQg2AogDIAAgDzcDgAMgACAQIA99uSAOuaM5A5ADIAAgDjcD+AIgAEHS5wA2AvACIANBpZUBIABB8AJqEKoBCyAHKQMoIg5QRQRAIAAgBykDMCIPNwPgAiAAIA43A9gCIAAgD7kgDrmjOQPoAiAAQdUlNgLQAiADQdqUASAAQdACahCqAQsgBykDOCIOUEUEQCAAIAcpA0AiDzcDwAIgACAONwO4AiAAIA+5IA65ozkDyAIgAEG5JjYCsAIgA0HclQEgAEGwAmoQqgELIAcpA0giDlBFBEAgACAHKQNQIg83A6ACIAAgDjcDmAIgACAPuSAOuaM5A6gCIABBiyI2ApACIANBipQBIABBkAJqEKoBIAcpA1ghDiAHKQNIIQ8gACAHKQNgNwOAAiAAIA65IA+5ozkDiAIgACAONwP4ASAAQd4oNgLwASADQYqUASAAQfABahCqASAHKQNoIQ4gACAHKQNwIg83A+ABIAAgD7kgDrmjOQPoASAAIA43A9gBIABBxic2AtABIANBg5YBIABB0AFqEKoBCwJAIAcpA3giDlANACAAIAcpA4ABNwPAASAAIA43A7gBIABB\u002FiQ2ArABIANBrJMBIABBsAFqEJoBIAcpA3ghDiAAIAcpA4gBIg83A6ABIAAgD7kgDrmjOQOoASAAIA43A5gBIABBrtwANgKQASADQbGUASAAQZABahCqASAHKQOQASIOUA0AIAAgBykDmAEiDzcDgAEgACAONwN4IAAgD7kgDrmjOQOIASAAQbzTADYCcCADQbGUASAAQfAAahCqAQsgBykDoAEiDlBFBEAgACAONwNoIABBkSU2AmAgA0GfkwEgAEHgAGoQmgELAkAgBykDqAEiDlANACAAIA43A1ggAEHMIDYCUCADQZ+TASAAQdAAahCaASAHKQOwASIOUA0AIAAgDjcDSCAAQcUgNgJAIANBn5MBIABBQGsQmgEgBykDsAEhDyAAIAcpA7gBIg5CA4Y3AzAgACAOuSAPuaM5AzggACAONwMoIABB4CE2AiAgA0HfkwEgAEEgahCqAQsgBykDwAEiDlBFBEAgACAHKQPIATcDECAAIA43AwggAEGEIjYCACADQayTASAAEJoBCyAAQcAGaiQAIAMoAkwaIAMQogMaIAMgAygCDBEFABogAy0AAEEBcUUEQCADKAI4IQAgAygCNCIBBEAgASAANgI4CyAABEAgACABNgI0CyADQZjVBCgCAEYEQEGY1QQgADYCAAsgAygCYBDUASADENQBCyAMEAogDBDUAQsgB0HQAWokAAsJACAAIAEQzwQLLAAgACABEM8EIgFCgICAgHCDQoCAgIDgAFIEfiAAQQNBAiABpxsQKQUgAQsLkAECAXwBfiMAQRBrIgIkAAJ+IAMpAwAiAUIgiKciAwRAQoCAgIAQIANBC2pBEkkNARoLQoCAgIDgACAAIAJBCGogARBCDQAaIAIrAwgiBJlE\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP0NlIAS9QoCAgICAgID4\u002FwCDQoCAgICAgID4\u002FwBSIAScIARhcXGtQoCAgIAQhAshBSACQRBqJAAgBQsmAEKAgICA4AAgACADKQMAENkFIgBBAEetQoCAgIAQhCAAQQBIGwsvAQF+An4gAygCBCICBEBCgICAgBAiBCACQQtqQRJJDQEaCyAAIAQgAyADENIECwsvAQF+An4gAygCBCICBEBCgICAgBAiBCACQQtqQRJJDQEaCyAAIAQgAyADENMECwsJACAAIAEQngILowECAn4BfyMAQRBrIgIkAAJ+IAAgARCeAiIFQoCAgIBwg0KAgICA4ABRBEAgBQwBC0EKIQcCQAJAIAQNACADKQMAIgFCgICAgHCDQoCAgIAwUQ0AIAAgARDbBCIHQQBIDQELQoCAgIDgACAAIAJBCGogBRBtDQEaIAAgAisDCCAHQQBBABC6AgwBCyAAIAUQDEKAgICA4AALIQYgAkEQaiQAIAYLkAICAX4BfCMAQRBrIgIkAEKAgICA4AAhBAJAIAAgARCeAiIBQoCAgIBwg0KAgICA4ABRBEAgASEEDAELIAAgAiABEG0NAAJAAkAgAykDACIBQoCAgIBwg0KAgICAMFEEQCACKwMAIgW9IQEMAQsgACACQQxqIAEQswENAiACKwMAIgW9IgFCgICAgICAgPj\u002FAINCgICAgICAgPj\u002FAFINAQsgAEKAgICAwH4gAUKAgICAwIGA\u002FP8AfSAFvUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsQNCEEDAELIAIoAgwiA0HlAGtBm39NBEAgAEHrIUEAEEQMAQsgACAFQQogA0EBELoCIQQLIAJBEGokACAEC80BAgF+AnwjAEEQayICJABCgICAgOAAIQQCQCAAIAEQngIiAUKAgICAcINCgICAgOAAUQRAIAEhBAwBCyAAIAIgARBtDQAgACACQQxqIAMpAwAQswENACACKAIMIgNB5QBPBEAgAEHrIUEAEEQMAQsgAisDACIFmSIGRFDv4tbkGktEZgRAIABCgICAgMB+IAW9QoCAgIDAgYD8\u002FwB9IAa9QoCAgICAgID4\u002FwBWGxA0IQQMAQsgACAFQQogA0ECELoCIQQLIAJBEGokACAEC4sCAwF+AX8BfCMAQRBrIgIkAEKAgICA4AAhBAJAIAAgARCeAiIBQoCAgIBwg0KAgICA4ABRBEAgASEEDAELIAAgAiABEG0NACAAIAJBDGogAykDABCzAQ0AIAIrAwAiBr0iAUKAgICAgICA+P8Ag0KAgICAgICA+P8AUQRAIABCgICAgMB+IAFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsQNCEEDAELAn8gAzUCBEIghkKAgICAMFEEQEEEDAELIAIoAgwiA0HlAE8EQCAAQeshQQAQRAwCCyADQQFqIQVBBQshAyAAIAZBCiAFIAMQugIhBAsgAkEQaiQAIAQLjgECAX4Cf0KAgICAMCEBAkAgAkEDa0F+SQ0AQoCAgIDgACEBIAAgAykDAEKAgICAMEKAgICAMBDyAyIEQoCAgIBwg0KAgICA4ABRBEAgBA8LIAAgBBCoASEFIAAgBBAMIAVFDQAgBSACQQJGBH8gACADKQMIEOQBBUEACxAFIAAgBRAxQoCAgIAwIQELIAELtwICAX4DfyMAQRBrIgUkACAFQQA6AA9CgICAgDAhAQJAIAJBA2tBfkkNAAJAIAAgAykDABCoASIGRQ0AAkAgAkECRw0AIAAgAykDCEKAgICAMEKAgICAMBDyAyIEQoCAgIBwg0KAgICA4ABRBEAgACAGEDEgBCEBDAMLIAAgBBCoASEHIAAgBBAMIAcNACAAIAYQMQwBCyAGIAcgBUEPahAGIQIgACAGEDEgACAHEDEgAkUNAQJAIAUtAA9FBEAgACACIAIQPUGHgAEQ8wMhAQwBC0KAgICA4AAhAQJAIABBAxCGASIEQoCAgIBwg0KAgICA4ABRBEBCgICAgCAhBAwBCyAAIARBMyAAIAIQYEEDEBUaCyAAIAQQmAELIAIQ1AEMAQtCgICAgOAAIQELIAVBEGokACABC80CAQd\u002FIwBBIGsiBCQAIAAgAykDABAlIgFCgICAgHCDQoCAgIDgAFIEQCAAIARBCGpBABA+GiABpyIFQRBqIQYgBSgCBEH\u002F\u002F\u002F\u002F\u002FB3EiCEEDayEJIAhBBmshCkEAIQMDQCADIAhORQRAAkACfyAFKQIEQoCAgIAIg1AiB0UEQCAGIANBAXRqLwEADAELIAMgBmotAAALIgJBJUcNAAJAIAMgCkoNACADQQFqIQICfyAHRQRAIAYgAkEBdGovAQAMAQsgAiAGai0AAAtB9QBHDQAgBSADQQJqQQQQvQMiAkEASA0AIANBBWohAwwBC0ElIQIgAyAJSg0AIAUgA0EBakECEL0DIgJBJSACQQBOIgcbIQIgA0ECaiADIAcbIQMLIARBCGogAhCHARogA0EBaiEDDAELCyAAIAEQDCAEQQhqEDchAQsgBEEgaiQAIAEL5AEBBH8jAEEgayICJAAgACADKQMAECUiAUKAgICAcINCgICAgOAAUgRAIAAgAkEIaiABpyIFKAIEQf\u002F\u002F\u002F\u002F8HcRA+GiAFQRBqIQYgBSgCBEH\u002F\u002F\u002F\u002F\u002FB3EhB0EAIQMDQCADIAdGRQRAAkACQAJAIAUtAAdBgAFxRQRAIAMgBmotAAAhBAwBCyAGIANBAXRqLwEAIgRB\u002FwFLDQELQbDXASAEQcUAEJICRQ0AIAJBCGogBBCHARoMAQsgAkEIaiAEEPUBCyADQQFqIQMMAQsLIAAgARAMIAJBCGoQNyEBCyACQSBqJAAgAQvMBAIGfwF+IwBBIGsiBiQAAkAgACADKQMAECUiAUKAgICAcINCgICAgOAAUQ0AIAAgBkEIaiABpyIJKAIEQf\u002F\u002F\u002F\u002F8HcRA+GiAJQRBqIQhBACECAkADQCAJKQIEIgunQf\u002F\u002F\u002F\u002F8HcSIKIAJKBEAgAkEBaiEFAkACQCALQoCAgIAIgyILUARAIAIgCGotAAAhAwwBCyAIIAJBAXRqLwEAIgNB\u002FwFLDQELAkAgA0Ewa0EKSSADQd\u002F\u002FA3FBwQBrQRpJcg0AQaOMASADQQkQkgINACAEDQEgAxDQBEUNAQsgBkEIaiADEIcBGiAFIQIMAgsCfwJ\u002FAkAgA0GA+ANxIgdBgLADRwRAIAdBgLgDRw0BQboxIQcMBgtB3y4hByAFIApODQUCfyALUEUEQCAIIAVBAXRqLwEADAELIAUgCGotAAALIgVBgMADa0GAeEkNBSAGQQhqIAVB\u002FwdxIANBCnRBgPg\u002FcXJBgIAEaiIDQRJ2QfABchD1ASADQQx2QT9xQYABciEHIAJBAmoMAQsgA0H\u002FAE0EQCAGQQhqIAMQ9QEgBSECDAQLIANB\u002Fw9NBEAgBSECIANBBnZBwAFyDAILIANBDHZB4AFyIQcgBQshAiAGQQhqIAcQ9QEgA0EGdkE\u002FcUGAAXILIQcgBkEIaiIFIAcQ9QEgBSADQT9xQYABchD1AQwBCwsgACABEAwgBkEIahA3IQEMAQsgACAHEL4DIAAgARAMIAYoAggoAhAiAEEQaiAGKAIMIAAoAgQRAABCgICAgOAAIQELIAZBIGokACABC6EEAgZ\u002FAX4jAEEgayIFJAACQCAAIAMpAwAQJSIBQoCAgIBwg0KAgICA4ABRDQAgACAFQQhqQQAQPhogAaciCEEQaiEJQQAhAgNAAkACQAJAIAgpAgQiC6dB\u002F\u002F\u002F\u002F\u002FwdxIAJKBEACfyALQoCAgIAIg1BFBEAgCSACQQF0ai8BAAwBCyACIAlqLQAACyIDQSVGBEAgACAIIAIQ0QQiA0EASA0DIAJBA2ohBiADQf8ATQRAIAQEQCAGIQIMBgtBJSADIAMQ0AQiBxshAyACQQFqIAYgBxshAgwFCwJ\u002FIANB4P\u002F\u002F\u002FwdxQcABRgRAIANBH3EhA0GAASEHQQEMAQsgA0Hw\u002F\u002F\u002F\u002FB3FB4AFGBEAgA0EPcSEDQYAQIQdBAgwBCyADQfj\u002F\u002F\u002F8HcUHwAUcEQEEBIQdBACEDQQAMAQsgA0EHcSEDQYCABCEHQQMLIQIDQCACQQBMDQMgACAIIAYQ0QQiCkEASA0EIAZBA2ohBiAKQcABcUGAAUcEQEEAIQMMBAUgAkEBayECIApBP3EgA0EGdHIhAwwBCwALAAsgAkEBaiECDAMLIAAgARAMIAVBCGoQNyEBDAQLIAYhAiADIAdIIANB\u002F\u002F\u002FDAEpyRSADQYBwcUGAsANHcQ0BIABB9IABEL4DCyAAIAEQDCAFKAIIKAIQIgBBEGogBSgCDCAAKAIEEQAAQoCAgIDgACEBDAILIAVBCGogAxCxARoMAAsACyAFQSBqJAAgAQs5AQF+IAAgAykDABCoASICRQRAQoCAgIDgAA8LIAAgAhD+ASACakEAQQpBABCAAiEEIAAgAhAxIAQLhwEBAX8jAEEQayICJAACQCAAIAMpAwAQqAEiBEUEQEKAgICA4AAhAQwBCwJ+QoCAgIDgACAAIAJBDGogAykDCBB1DQAaIAIoAgwiAwRAQoCAgIDAfiADQSVrQV1JDQEaCyAAIAQQ\u002FgEgBGpBACADQYEIEIACCyEBIAAgBBAxCyACQRBqJAAgAQulAgIEfgN\u002FIwBBEGsiCCQAQoCAgIDgACEFAkACfgJAIAFCgICAgHBUDQAgAactAAVBEHFFDQAgCCACrTcDCCAAIAFBASAIQQhqEKMBDAELIAAQOwsiBEKAgICAcINCgICAgOAAUQ0AIAJBACACQQBKG60hB0IAIQECQANAIAEgB1IEQCADIAGnQQN0aikDACIGQiCIp0F1TwRAIAanIgkgCSgCAEEBajYCAAsgACAEIAEgBkGAgAEQyAEhCiABQgF8IQEgCkEATg0BDAILCyAAIARBMCACQQBOBH4gAq0FQoCAgIDAfiACuL0iAUKAgICAwIGA\u002FP8AfSABQoCAgICAgID4\u002FwBWGwsQOUEASA0AIAQhBQwBCyAAIAQQDAsgCEEQaiQAIAULsQkCBH8IfiMAQTBrIgQkACADKQMAIQggBEKAgICAMDcDGEEBIQUCQAJAAn4gAkECSARAQoCAgIAwIQ5CgICAgDAMAQtCgICAgDAgAykDCCIOQoCAgIBwg0KAgICAMFENABpCgICAgDAhDEKAgICAMCEJQoCAgIAwIQtCgICAgDAhCiAAIA4QVQ0BQQAhBUKAgICAMCACQQJGDQAaIAMpAxALIQ8CQAJAAkACQCAAIAhBzAEgCEEAEBEiCkKAgICAcIMiCUKAgICAMFIEQAJAAkAgCUKAgICA4ABRBEBCgICAgDAhDEKAgICAMCEJQoCAgIAwIQsMAQsgACAKEAwCfgJAIAFCgICAgHBUDQAgAactAAVBEHFFDQAgACABQQBBABCjAQwBCyAAEDsLIgtCgICAgHCDQoCAgIDgAFEEQEKAgICAMCEMQoCAgIAwIQkMAQsgCEIgiKdBdU8EQCAIpyICIAIoAgBBAWo2AgALIAQgCDcDECAAIARBEGpBCHJBABCFAyEGIAQpAxghDCAEKQMQIQkgBkUNAQtCgICAgDAhCgwGC0IAIQEDQCAAIAkgDCAEQQhqEJEBIghCgICAgHCDQoCAgIDgAFENAiAEKAIIBEBCgICAgDAhCgwGCwJAIAUEQCAIIQoMAQsgBCAINwMgIAQgAUL\u002F\u002F\u002F\u002F\u002FD4M3AyggACAOIA9BAiAEQSBqEBwhCiAAIAgQDCAKQoCAgIBwg0KAgICA4ABRDQMLIAAgCyABIAoQZ0EASA0CIAFCAXwhAQwACwALIAAgCBAgIgpCgICAgHCDQoCAgIDgAFENAiAAIARBCGogChAvQQBIDQIgBAJ+IAQpAwgiCEKAgICACHxC\u002F\u002F\u002F\u002F\u002Fw9YBEAgCEL\u002F\u002F\u002F\u002F\u002FD4MMAQtCgICAgMB+IAi5vSIJQoCAgIDAgYD8\u002FwB9IAlC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbCyINNwMgAn4CQCABQoCAgIBwVA0AIAGnLQAFQRBxRQ0AIAAgAUEBIARBIGoQowEMAQsgAEKAgICAMEEBIARBIGoQ4AILIQsgACANEAwgC0KAgICAcINCgICAgOAAUQRAQoCAgIAwIQwMAgtCACENIAhCACAIQgBVGyEBA0AgASANUQRAQoCAgIAwIQxCgICAgDAhCQwFC0KAgICAMCEMIAAgCiANEGwiCEKAgICAcINCgICAgOAAUQ0CAkAgBQRAIAghCQwBCyAEIAg3AyAgBCANQv\u002F\u002F\u002F\u002F8PgzcDKCAAIA4gD0ECIARBIGoQHCEJIAAgCBAMIAlCgICAgHCDQoCAgIDgAFENAwsgACALIA0gCRBnIQcgDUIBfCENIAdBAE4NAAsMAQtCgICAgDAhCiAJQoCAgIBwg0KAgICAMFENAyAAIAlBARCQARoMAwtCgICAgDAhCQwCC0KAgICAMCEMQoCAgIAwIQlCgICAgDAhCwwBCyAAIAtBMCABpyICQQBOBH4gAUL\u002F\u002F\u002F\u002F\u002FD4MFQoCAgIDAfiACuL0iAUKAgICAwIGA\u002FP8AfSABQoCAgICAgID4\u002FwBWGwsQOUEATg0BCyAAIAsQDEKAgICA4AAhCwsgACAKEAwgACAJEAwgACAMEAwgBEEwaiQAIAsLJgBCgICAgOAAIAAgAykDABDMASIAQQBHrUKAgICAEIQgAEEASBsLowICAX8EfiMAQRBrIgUkAEKAgICAMCEGAkACQCAAIAVBCGogACABECAiCRAvDQAgBUEBNgIEAkAgBARAIAMpAwAhCEKAgICAMCEHIAJBAk4EQCADKQMIIQcLIAAgCBBVRQ0BDAILIAJBAEwEQEKAgICAMCEIQoCAgIAwIQcMAQtCgICAgDAhCEKAgICAMCEHIAMpAwAiAUKAgICAcINCgICAgDBRDQAgACAFQQRqIAEQswFBAEgNAQsgACAJQgAQnwIiAUKAgICAcINCgICAgOAAUQRAIAEhBgwBCyABIQYgACABIAkgBSkDCEIAIAUoAgQgCCAHENQEQgBTDQAgCSEGDAELIAAgCRAMQoCAgIDgACEBCyAAIAYQDCAFQRBqJAAgAQv5AQIEfgF\u002FIwBBIGsiCCQAAkACQCAAIAhBGGogACABECAiARAvDQAgACAIQQhqIAMpAwBCACAIKQMYIgQgBBBmDQAgACAIQRBqIAMpAwhCACAEIAQQZg0AIAggBDcDAAJ+IAQgAkEDSA0AGiAEIAMpAxAiBUKAgICAcINCgICAgDBRDQAaIAAgCCAFQgAgBCAEEGYNASAIKQMACyEGIAAgASAIKQMIIgUgCCkDECIHIAYgB30iBiAEIAV9IgQgBCAGVRsiBEEBQX9BASAFIAQgB3xTGyAFIAdXGxDzAkUNAQsgACABEAxCgICAgOAAIQELIAhBIGokACABC+UHAgR\u002FCX4jAEEwayIFJABCgICAgOAAIQgCQAJAIAAgBUEgaiAAIAEQICIOEC8NACAFQgA3AxgCQCACQQBKBEAgACAFQRhqIAMpAwBCACAFKQMgIgsgCxBmDQIgBSALIAUpAxgiCn0iDDcDECACQQFGDQEgACAFQRBqIAMpAwhCACAMQgAQZg0CIAUpAxAhDAwBCyAFKQMgIQsLIAsgAkECa0EAIAJBAkobrSIPfCAMfSINQoCAgICAgIAQWQRAIABBiscAQQAQEgwBCyAAIA0Q4gIiAUKAgICAcINCgICAgOAAUQRAQQAhAkKAgICA4AAhCwwCCyANQgBXBEBBACECIAEhCEKAgICAMCELDAILIAGnKAIkIgQgDadBA3RqIQICQAJAAkACQCAOIAVBLGogBUEMahCPAQRAIAsgBTUCDFENAQsgCkIAIApCAFUbIQoMAQtCACEIIApCACAKQgBVGyEJIAUoAiwhBgNAAkAgCCAJUQRAIANBEGohA0IAIQgDQCAIIA9RDQIgAyAIp0EDdGopAwAiCkIgiKdBdU8EQCAKpyIHIAcoAgBBAWo2AgALIAQgCjcDACAEQQhqIQQgCEIBfCEIDAALAAsgBiAIp0EDdGopAwAiCkIgiKdBdU8EQCAKpyIHIAcoAgBBAWo2AgALIAQgCjcDACAEQQhqIQQgCEIBfCEIDAELCyAJIAx8IQgDQCAIIAtZDQIgBiAIp0EDdGopAwAiCUIgiKdBdU8EQCAJpyIDIAMoAgBBAWo2AgALIAQgCTcDACAEQQhqIQQgCEIBfCEIDAALAAsDQAJAIAkgClEEQCADQRBqIQNCACEJA0AgCSAPUQ0CIAMgCadBA3RqKQMAIhBCIIinQXVPBEAgEKciBiAGKAIAQQFqNgIACyAEIBA3AwAgBEEIaiEEIAlCAXwhCQwACwALIAAgDiAJIAQQVEF\u002FRg0DIARBCGohBCAJQgF8IQkMAQsLIAogDHwhCQNAIAkgC1kNASAAIA4gCSAEEFRBf0YNAiAEQQhqIQQgCUIBfCEJDAALAAsgAiAERgRAIAFCgICAgDAgACABQTAgDUKAgICACFoEfkKAgICAwH4gDbm9IghCgICAgMCBgPz\u002FAH0gCEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsFIA0LEDlBAEgiAxshC0KAgICA4AAgASADGyEIIAIhBAwDC0GJFkGo7ABB4rkCQfHqABAAAAsgASELDAELQQAhAkKAgICAMCELCwNAIAIgBEZFBEAgBEKAgICAMDcDACAEQQhqIQQMAQsLIAAgCxAMIAAgDhAMIAVBMGokACAIC8gIAgl+A38jAEEwayIOJABCgICAgDAhBQJAAkAgACAOQSBqIAAgARAgIgoQLw0AIAAgDkEYaiADKQMAQgAgDikDICIGIAYQZg0AAkAgBARAAkACQAJAIAIOAgIAAQsgBiAOKQMYfSEHQQAhAgwBCyAAIA5BEGogAykDCEIAIAYgDikDGH1CABBmDQMgAkECayECIA4pAxAhBwsgBiACrXwgB31CgICAgICAgBBTDQEgAEH0yABBABASDAILIA4gBjcDECAGIQEgAykDCCINQoCAgIBwg0KAgICAMFIEfiAAIA5BEGogDUIAIAEgARBmDQIgDikDEAUgAQsgDikDGH0iAUIAIAFCAFUbIQdBACECCyAAIAogB0KAgICACHxC\u002F\u002F\u002F\u002F\u002Fw9YBH4gB0L\u002F\u002F\u002F\u002F\u002FD4MFQoCAgIDAfiAHub0iAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwsiBRCfAiEBIAAgBRAMAkAgAUKAgICAcINCgICAgOAAUQ0AIA4pAxgiDSAHfCELAkACQCAKIA5BDGogDkEIahCPAUUgAUKAgICAcFRyDQAgAaciDy8BBkECRw0AIA0hBSAPLQAFQQhxRQ0BIAUgCyAONQIIIgggCCALVRsiCCAFIAhVGyAFfSEJIA4oAgwhEANAIAkgDFENAiAQIAWnQQN0aikDACIIQiCIp0F1TwRAIAinIg8gDygCAEEBajYCAAsgACABIAwgCEGAgAEQyAFBAEgNAyAMQgF8IQwgBUIBfCEFDAALAAsgDSEFCyAFIAsgBSALVRshCANAIAUgCFIEQCAAIAogBSAOQShqEFQiD0EASA0CIA8EQCAAIAEgCSAOKQMoQYCAARDIAUEASA0DCyAJQgF8IQkgBUIBfCEFDAELCyAAIAFBMCAJQoCAgIAIWgR+QoCAgIDAfiAJub0iBUKAgICAwIGA\u002FP8AfSAFQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwUgCQsQOUEASA0AIAQEQCAGIAKtIgt8IAd9IQwCQCAHIAtRDQAgACAKIAsgDXwgByANfCIFIAYgBX1Bf0EBIAcgC1MbEPMCQQBIDQIDQCAGIAxXDQEgACAKIAZCAX0iBhCFAkEATg0ACwwCCyADQRBqIQNCACEFA0AgBSALUgRAIAMgBadBA3RqKQMAIghCIIinQXVPBEAgCKciAiACKAIAQQFqNgIACyAFIA18IQYgBUIBfCEFIAAgCiAGIAgQe0EATg0BDAMLCyAMQoCAgIAIfEL\u002F\u002F\u002F\u002F\u002FD1gEfiAMQv\u002F\u002F\u002F\u002F8PgwVCgICAgMB+IAy5vSIFQoCAgIDAgYD8\u002FwB9IAVC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbCyEJIAEhBSAAIApBMCAJEDlBAEgNAgsgCiEFDAILIAEhBQsgACAKEAxCgICAgOAAIQELIAAgBRAMIA5BMGokACABC5MEAgN\u002FBn4jAEEgayICJABCgICAgDAhCgJAAkAgAykDACIIQoCAgIBwg0KAgICAMFENACAAIAgQNQ0AIABB+zlBABASQoCAgIDgACEJDAELQoCAgIDgACEJAkAgACACQRBqIAAgARAgIgsQLw0AIAAgAikDECIHEOICIghCgICAgHCDQoCAgIDgAFEEQEKAgICA4AAhCgwBCwJAIAdCAFUEQCAIpygCJCEEQgAhAQJAAkAgCyACQRxqIAJBDGoQjwFFDQAgByACNQIMUg0AIAIoAhwhBQNAIAEgB1ENAiAFIAGnQQN0aikDACIMQiCIp0F1TwRAIAynIgYgBigCAEEBajYCAAsgBCAMNwMAIARBCGohBCABQgF8IQEMAAsACwNAIAEgB1ENASAAIAsgASAEEFRBf0cEQCAEQQhqIQQgAUIBfCEBDAELCyAHIAEgASAHUxshCgNAIAEgClENAyAEQoCAgIAwNwMAIARBCGohBCABQgF8IQEMAAsACyAAIAhBMCAHQoCAgIAIWgR+QoCAgIDAfiAHub0iAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwUgBwsQOUEASA0BCyAAIAggBCADENUEIglCgICAgHCDQoCAgIDgAFENACAAIAkQDCAIIQkMAQsgCCEKCyAAIAoQDCAAIAsQDAsgAkEgaiQAIAkL5AIDAn4FfwF8IwBBIGsiBSQAAkAgAigCBA0AIAIoAgAhBgJAAkACfyACKAIIBEAgACkAACABKQAAUQ0CIAUgACkDADcDECAFIAEpAwA3AxggBiACKQMQQoCAgIAwQQIgBUEQahAcIgNCgICAgHCDQoCAgIDgAFENAyADQv\u002F\u002F\u002F\u002F8PWARAIAOnIgJBH3UgAkEAR3IMAgsgBiAFQQhqIAMQbUEASA0DIAUrAwgiCkQAAAAAAAAAAGQgCkQAAAAAAAAAAGNrDAELIAAoAggiCEUEQCAGIAApAwAQJSIDQoCAgIBwg0KAgICA4ABRDQMgACADpyIINgIICyABKAIIIgkEfyAIBSAGIAEpAwAQJSIDQoCAgIBwg0KAgICA4ABRDQMgASADpyIJNgIIIAAoAggLIAkQvAILIgcNAgsgACkDECIDIAEpAxAiBFUgAyAEU2shBwwBCyACQQE2AgQLIAVBIGokACAHC9MFAgd+A38jAEEQayINJAAgAUKAgICAcINCgICAgDBRBEAgACgCECgCjAEpAwghAQsCQCAAIAFBPCABQQAQESIGQoCAgIBwg0KAgICA4ABRDQACQCAGQv\u002F\u002F\u002F\u002F9vVg0AIAAgBhAMIAAgARD8AiIMRQRAQoCAgIDgACEGDAILAn8gBEEASARAIAwoAihBGGoMAQsgDCAEQQN0akHYAGoLKQMAIgZCIIinQXVJDQAgBqciDCAMKAIAQQFqNgIACyAAIAZBAxBHIQEgACAGEAxCgICAgOAAIQYgAUKAgICAcINCgICAgOAAUQ0AAkAgAyAEQQdGIgxBA3RqKQMAIgVCgICAgHCDQoCAgIAwUgRAIAAgBRAlIgVCgICAgHCDQoCAgIDgAFENASAAIAFBMyAFQQMQFRoLAkAgAkECQQEgDBsiAkwNACADIAJBA3RqKQMAIgVCgICAgHBUDQAgACAFQTQQbiICQQBIDQEgAkUNACAAIAVBNCAFQQAQESIFQoCAgIBwg0KAgICA4ABRDQEgACABQTQgBUEDEBUaCyAEQQdGBEBCgICAgOAAIQhCgICAgDAhBQJAAkAgACADKQMAQQAQywEiB0KAgICAcINCgICAgOAAUQRAQoCAgIAwIQkMAQsgACAHQesAIAdBABARIglCgICAgHCDQoCAgIDgAFENACAAEDsiBUKAgICAcINCgICAgOAAUQRAQoCAgIDgACEFDAELA0AgACAHIAkgDUEMahCRASILQoCAgIBwg0KAgICA4ABSBEAgDSgCDARAIAUhCAwECyAAIAUgCiALEGchDiAKQgF8IQogDkEATg0BCwsgACAHQQEQkAEaCyAAIAUQDAsgACAJEAwgACAHEAwgCEKAgICAcINCgICAgOAAUQ0BIAAgAUE1IAhBAxAVGgsgACABQQBBAEEBELQCIAEhBgwBCyAAIAEQDAsgDUEQaiQAIAYLrQMCBn4CfyMAQSBrIgMkAEKAgICAMCEGQoCAgIDgACEHAkAgACADQRBqIAAgARAgIggQLw0AIAAgAykDECIEEOICIgVCgICAgHCDQoCAgIDgAFEEQEKAgICA4AAhBgwBCwJAIARCAFUEQCAEQgF9IQEgBacoAiQhAgJAAkAgCCADQRxqIANBDGoQjwFFDQAgBCADNQIMUg0AIAMoAhwhCgNAIAFCAFMNAiAKIAGnQQN0aikDACIJQiCIp0F1TwRAIAmnIgsgCygCAEEBajYCAAsgAiAJNwMAIAJBCGohAiABQgF9IQEMAAsACwNAIAFCAFMNASAAIAggASACEFRBf0cEQCACQQhqIQIgAUIBfSEBDAELCwNAIAFCAFMNAyACQoCAgIAwNwMAIAJBCGohAiABQgF9IQEMAAsACyAAIAVBMCAEQoCAgIAIWgR+QoCAgIDAfiAEub0iAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwUgBAsQOUEASA0BCyAFIQcMAQsgBSEGCyAAIAYQDCAAIAgQDCADQSBqJAAgBwumAwICfgJ\u002FIwBBMGsiAiQAIAJCgICAgDA3AygCQAJ+QoCAgIAwIAAgAkEQaiAAIAEQICIBEC8NABogASACQRxqIAJBDGoQjwEhAyACKQMQIQUCQCADRQ0AIAUgAigCDCIDrVINACADQQJJDQJBACEAIAIoAhwhBgNAIAAgA0EBayIDTw0DIAYgAEEDdGoiBykDACEEIAcgBiADQQN0aiIHKQMANwMAIAcgBDcDACAAQQFqIQAMAAsACwNAIAQgBUIBfSIFWQ0CAkACQAJAIAAgASAEIAJBKGoQVCIDQQBIDQAgACABIAUgAkEgahBUIgZBAEgNAAJAAkAgBgRAIAAgASAEIAIpAyAQe0EASA0DIANFDQIgACABIAUgAikDKBB7QQBODQEMBQsgA0UNAyAAIAEgBBCFAkEASA0CIAAgASAFIAIpAygQe0EASA0ECyACQoCAgIAwNwMoDAILIAAgASAFEIUCQQBODQELIAIpAygMAwsgBEIBfCEEDAELC0KAgICAMAshBCAAIAQQDCAAIAEQDEKAgICA4AAhAQsgAkEwaiQAIAELhQEBAX5CgICAgOAAIQQgACABECAiAUKAgICAcINCgICAgOAAUgRAAn5CgICAgOAAIAAgAUHcACABQQAQESIEQoCAgIBwg0KAgICA4ABRDQAaIAAgBBA1RQRAIAAgBBAMIAAgASAAIAAQ1wQMAQsgACAEIAFBAEEAEDYLIQQgACABEAwLIAQLogMCAn8GfiMAQSBrIgUkAAJ+AkAgACAFIAAgARAgIgkQLw0AQSwhBgJAIAJBAEwgBHJFBEBCgICAgDAhB0EAIQIgAykDACIBQoCAgIBwg0KAgICAMFENASAAIAEQJSIHQoCAgIBwg0KAgICA4ABRDQJBfyEGIAenIgIoAgRBAUcNASACLQAQIQYMAQtCgICAgDAhB0EAIQILIAAgBUEIakEAED4aQgAhASAFKQMAIghCACAIQgBVGyELAkADQCABIAtSBEACQCABUA0AIAZBAE4EQCAFQQhqIAYQPBoMAQsgBUEIaiACQQAgAigCBEH\u002F\u002F\u002F\u002F\u002FB3EQSxoLIAAgCSABpxCmASIIQoCAgIBwgyIKQoCAgIAgUSAKQoCAgIAwUXJFBEAgCkKAgICA4ABRDQMgBUEIaiAEBH4gACAIENYEBSAICxCEAQ0DCyABQgF8IQEMAQsLIAAgBxAMIAAgCRAMIAVBCGoQNwwCCyAFKAIIKAIQIgJBEGogBSgCDCACKAIEEQAAIAAgBxAMCyAAIAkQDEKAgICA4AALIQwgBUEgaiQAIAwLvQICAX8DfiMAQSBrIgQkAAJ+AkACQAJAIAAgBEEQaiAAIAEQICIGEC8NACAEKQMQIgVCAFcNASAEIAVCAX0iATcDCCACQQJOBEAgACAEQQhqIAMpAwhCfyABIAUQZg0BIAQpAwghAQsDQCABQgBTDQIgACAGIAEgBEEYahBUIgJBAEgNASACBEAgAykDACIFQiCIp0F1TwRAIAWnIgIgAigCAEEBajYCAAsgACAFIAQpAxhBABC0AQ0ECyABQgF9IQEMAAsACyAAIAYQDEKAgICA4AAMAgtCfyEBCyAAIAYQDCABQv\u002F\u002F\u002F\u002F8PgyABQoCAgIAIfEL\u002F\u002F\u002F\u002F\u002FD1gNABpCgICAgMB+IAG5vSIBQoCAgIDAgYD8\u002FwB9IAFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbCyEHIARBIGokACAHC+cDAgJ\u002FB34jAEEgayIEJAACfgJAIAAgBEEQaiAAIAEQICIIEC8NAEJ\u002FIQkCQCAEKQMQIgdCAFcNAEIAIQEgBEIANwMIIAJBAk4EQCAAIARBCGogAykDCEIAIAcgBxBmDQIgBCkDCCEBCwJAAkAgCCAEQQRqIAQQjwFFDQAgASAENQIAIgYgASAGVRshBiAEKAIEIQIDQCABIAZRBEAgBiEBDAILIAMpAwAiCkIgiKdBdU8EQCAKpyIFIAUoAgBBAWo2AgALIAIgAadBA3RqKQMAIgtCIIinQXVPBEAgC6ciBSAFKAIAQQFqNgIACyAAIAogC0EAELQBDQIgAUIBfCEBDAALAAsgASAHIAEgB1UbIQcDQCABIAdRDQIgACAIIAEgBEEYahBUIgJBAEgNAyACBEAgAykDACIGQiCIp0F1TwRAIAanIgIgAigCAEEBajYCAAsgACAGIAQpAxhBABC0AQ0CCyABQgF8IQEMAAsACyABIQkLIAAgCBAMIAlC\u002F\u002F\u002F\u002F\u002Fw+DIAlCgICAgAh8Qv\u002F\u002F\u002F\u002F8PWA0BGkKAgICAwH4gCbm9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsMAQsgACAIEAxCgICAgOAACyEMIARBIGokACAMC+cDAgl+AX8jAEEwayIOJABCgICAgDAhBgJAAkAgACAOQQhqIAAgARAgIggQLwRAQoCAgIAwIQUMAQtCgICAgDAhBSAAIAMpAwAiChBVDQBCgICAgDAhCSACQQJOBEAgAykDCCEJCyAOKQMIIgVCAX1CACAEQX5xQQJGIgIbIQdCf0IBIAIbIQtCfyAFIAIbIQwDQCAHIAxSBEAgB0KAgICACHxC\u002F\u002F\u002F\u002F\u002Fw9YBH4gB0L\u002F\u002F\u002F\u002F\u002FD4MFQoCAgIDAfiAHub0iBUKAgICAwIGA\u002FP8AfSAFQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwsiBUKAgICAcINCgICAgOAAUQ0CIAAgCCAFEE4iBkKAgICAcINCgICAgOAAUQ0CIA4gATcDICAOIAU3AxggDiAGNwMQIAAgCiAJQQMgDkEQahAcIg1CgICAgHCDQoCAgIDgAFENAiAAIA0QJwRAAkACQCAEQQFrDgMAAQABCyAAIAYQDCAAIAgQDAwFCyAAIAUQDCAAIAgQDCAGIQUMBAUgACAGEAwgACAFEAwgByALfCEHDAILAAsLIAAgCBAMQoCAgIAwQv\u002F\u002F\u002F\u002F8PIARBAWtBfXEbIQUMAQsgACAFEAwgACAGEAwgACAIEAxCgICAgOAAIQULIA5BMGokACAFC6ICAgN+An8jAEEgayIHJAACQAJAIAAgB0EYaiAAIAEQICIFEC8NACAHQgA3AxACQCACQQFMBEAgBykDGCEEDAELIAcpAxghBCADKQMIIgFCgICAgHCDQoCAgIAwUgRAIAAgB0EQaiABQgAgBCAEEGYNAgsgByAENwMIIAJBAkYNACADKQMQIgFCgICAgHCDQoCAgIAwUQ0AIAAgB0EIaiABQgAgBCAEEGYNASAHKQMIIQQLIAcpAxAiASAEIAEgBFUbIQYDQCABIAZRDQIgAykDACIEQiCIp0F1TwRAIASnIgIgAigCAEEBajYCAAsgACAFIAEgBBB7IQggAUIBfCEBIAhBAE4NAAsLIAAgBRAMQoCAgIDgACEFCyAHQSBqJAAgBQvvBQIDfwl+IwBBQGoiBSQAQoCAgIAwIQsgBUKAgICAMDcDOCAFQoCAgIAwNwMwAkACQAJAIARBCHEiBwRAIAFCIIinQXVPBEAgAaciBiAGKAIAQQFqNgIACyAFIAAgARCKASIGrDcDCCAGQQBODQEMAgsgACAFQQhqIAAgARAgIgEQLw0BCyAAIAMpAwAiDxBVDQACQCACQQFMBEAgBSkDCCIMQgAgDEIAVRshCiAEQQFxIQQDQCAIIApRBEAgAEGODUEAEBIMBAsgDCAIQn+FfCAIIAQbIQkgCEIBfCEIIAcEQCAFIAAgASAJEGwiCTcDMCAJQoCAgIBwg0KAgICA4ABRDQQMAwsgACABIAkgBUEwahBUIgJBAEgNAyACRQ0ACyAFKQMwIQkMAQsgAykDCCIJQiCIp0F1TwRAIAmnIgIgAigCAEEBajYCAAsgBEEBcSEEIAUpAwghDAsgCCAMIAggDFUbIRADQCAIIBBRDQIgDCAIQn+FfCAIIAQbIQoCQAJAAkAgBwRAIAUgACABIAoQbCILNwM4IAtCgICAgHCDQoCAgIDgAFINAQwDCyAAIAEgCiAFQThqEFQiAkEASARAIAUpAzghCwwDCyACRQ0BCyAKQoCAgIAIfEL\u002F\u002F\u002F\u002F\u002FD1gEfiAKQv\u002F\u002F\u002F\u002F8PgwVCgICAgMB+IAq5vSILQoCAgIDAgYD8\u002FwB9IAtC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbCyENIAUpAzghCiANQoCAgIBwg0KAgICA4ABRBEAgCiELDAILIAUgATcDKCAFIA03AyAgBSAKNwMYIAUgCTcDEEKAgICAMCELIAAgD0KAgICAMEEEIAVBEGoQHCEOIAAgDRAMIAAgChAMIAVCgICAgDA3AzggDkKAgICAcINCgICAgOAAUQ0BIAAgCRAMIA4hCQsgCEIBfCEIDAELCyAFIAk3AzALIAAgBSkDMBAMIAAgCxAMQoCAgIDgACEJCyAAIAEQDCAFQUBrJAAgCQvlCAIDfwp+IwBBMGsiBSQAQoCAgIAwIQggBUKAgICAMDcDKAJAAkACQCAEQQhxIgcEQCABQiCIp0F1TwRAIAGnIgYgBigCAEEBajYCAAsgBSAAIAEQigEiBqw3AwggBkEATg0BQoCAgIDgACEJDAILQoCAgIDgACEJIAAgBUEIaiAAIAEQICIBEC8NAQsgAykDACEQQoCAgIAwIQ8gAkECTgRAIAMpAwghDwtCgICAgOAAIQkgACAQEFUNAAJAAkACQAJAAkACQAJAIAQODQUABgECBgYGBQAGAwQGC0KAgICAECEIDAULIAAgAQJ+IAUpAwgiCEKAgICACHxC\u002F\u002F\u002F\u002F\u002Fw9YBEAgCEL\u002F\u002F\u002F\u002F\u002FD4MMAQtCgICAgMB+IAi5vSIIQoCAgIDAgYD8\u002FwB9IAhC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbCxCfAiIIQoCAgIBwg0KAgICA4ABSDQQMBQsgACABQgAQnwIiCEKAgICAcINCgICAgOAAUg0DDAQLIAUgATcDECAFIAU1Agg3AxggAEECIAVBEGoQ4QIiCEKAgICAcINCgICAgOAAUg0CDAMLIAAQOyIIQoCAgIBwg0KAgICA4ABSDQFCgICAgOAAIQgMAgtCgYCAgBAhCAsgBSkDCCIJQgAgCUIAVRshEQNAIAogEVIEQAJAAkAgBwRAIAUgACABIAoQbCILNwMoQoCAgIDgACEJIAtCgICAgHCDQoCAgIDgAFINAQwFCyAAIAEgCiAFQShqEFQiAkEASARAQoCAgIDgACEJDAULIAJFDQELIAohCyAKQoCAgIAIWgRAQoCAgIDAfiAKub0iCUKAgICAwIGA\u002FP8AfSAJQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGyELC0KAgICA4AAhCSALQoCAgIBwg0KAgICA4ABRDQMgBSABNwMgIAUgCzcDGCAFIAUpAygiDjcDECAAIBAgD0EDIAVBEGoQHCEMIAAgCxAMIAxCgICAgHCDQoCAgIDgAFENAwJAAkACQAJAAkACQAJAIAQODQABBQIEBQUFAAEFAwQFCyAAIAwQJw0FQoCAgIAQIQkMCgsgACAMECdFDQRCgYCAgBAhCQwJCyAAIAggCiAMEGdBAE4NAwwHCyAAIAggCkL\u002F\u002F\u002F\u002F\u002FD4MgDEGAgAEQzwFBAE4NAgwGCyAAIAwQJ0UNASAOQiCIp0F1TwRAIA6nIgIgAigCAEEBajYCAAsgACAIIA0gDhBnQQBIDQUgDUIBfCENDAELIAAgDBAMCyAAIA4QDCAFQoCAgIAwNwMoCyAKQgF8IQoMAQsLIARBDEcEQCAIIQkMAgsgBSABNwMQIAUgDUL\u002F\u002F\u002F\u002F\u002FD4M3AxhCgICAgOAAIQkgAEECIAVBEGoiAhDhAiIKQoCAgIBwg0KAgICA4ABRDQAgBSAINwMQQoCAgIDgACAKIAAgACAKQcMAQQEgAhCzAhD\u002FARshCQsgACAIEAwLIAAgBSkDKBAMIAAgARAMIAVBMGokACAJC60EAgV+A38jAEEQayIJJABCgICAgDAhBgJAAkAgACABECAiCEKAgICAcINCgICAgOAAUQ0AIAAgCEIAEJ8CIgZCgICAgHCDQoCAgIDgAFENAEF\u002FIQpBfyACIAJBAEgbIQsCQANAIAogC0cEQCAIIQUgCkEATgRAIAMgCkEDdGopAwAhBQsCQAJAIAVCgICAgHBUDQACfyAAIAVB0wEgBUEAEBEiAUKAgICAcIMiB0KAgICAMFIEQCAHQoCAgIDgAFENByAAIAEQJwwBCyAAIAUQzAELIgJBAEgNBSACRQ0AIAAgCSAFEC8NBSAJKQMAIgcgBHxC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002Fw9VDQRCACEBIAdCACAHQgBVGyEHA0AgASAHUQ0CIAAgBSABIAlBCGoQVCICQQBIDQYgAgRAIAAgBiAEIAkpAwgQZ0EASA0HCyAEQgF8IQQgAUIBfCEBDAALAAsgBEL+\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FD1UNAyAFQiCIp0F1TwRAIAWnIgIgAigCAEEBajYCAAsgACAGIAQgBRBnQQBIDQQgBEIBfCEECyAKQQFqIQoMAQsLIAAgBkEwIARCgICAgAh8Qv\u002F\u002F\u002F\u002F8PWAR+IARC\u002F\u002F\u002F\u002F\u002Fw+DBUKAgICAwH4gBLm9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLEDlBAEgNAQwCCyAAQfTIAEEAEBILIAAgBhAMQoCAgIDgACEGCyAAIAgQDCAJQRBqJAAgBgvaBQIFfgN\u002FIwBBIGsiCSQAQoCAgIAwIQRCgICAgOAAIQYCQCAAIAlBEGogACABECAiCBAvDQAgACAJQQhqIAMpAwAQ4wENACAJKQMQIQUCQAJAIAkpAwgiAUIAUwRAIAEgBXwiAUIAUw0BCyABIAVTDQELIABB3eEAQQAQRAwBCyAAIAUQ4gIiB0KAgICAcINCgICAgOAAUQRAQoCAgIDgACEEDAELIAenKAIkIQJCACEEAkACQCAIIAlBHGogCUEEahCPAUUNACAFIAk1AgRSDQBCACEGIAkoAhwhCgNAIAEgBlIEQCAKIAanQQN0aikDACIEQiCIp0F1TwRAIASnIgsgCygCAEEBajYCAAsgAiAENwMAIAJBCGohAiAGQgF8IQYMAQsLIAMpAwgiBEIgiKdBdU8EQCAEpyIDIAMoAgBBAWo2AgALIAIgBDcDAANAIAFCAXwiASAFWQ0CIAogAadBA3RqKQMAIgRCIIinQXVPBEAgBKciAyADKAIAQQFqNgIACyACQQhqIgIgBDcDAAwACwALAkACQANAIAEgBFENASAAIAggBCACEFRBf0cEQCACQQhqIQIgBEIBfCEEDAELCyAEIQEMAQsgAykDCCIEQiCIp0F1TwRAIASnIgMgAygCAEEBajYCAAsgAiAENwMAA0AgAUIBfCIBIAVZDQIgACAIIAEgAkEIaiICEFRBf0cNAAsLA0AgASAFWQRAIAchBAwDBSACQoCAgIAwNwMAIAJBCGohAiABQgF8IQEgCSkDECEFDAELAAsACyAHQoCAgIAwIAAgB0EwIAVCgICAgAh8Qv\u002F\u002F\u002F\u002F8PWAR+IAVC\u002F\u002F\u002F\u002F\u002Fw+DBUKAgICAwH4gBbm9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLEDlBAEgiAhshBEKAgICA4AAgByACGyEGCyAAIAQQDCAAIAgQDCAJQSBqJAAgBgvrAQEDfiMAQSBrIgIkAEKAgICA4AAhBAJAIAAgAkEQaiAAIAEQICIFEC8NACAAIAJBCGogAykDABDjAQ0AQoCAgIAwIQQgAikDCCIBIAIpAxAiBiABQj+Hg3wiAUIAUyABIAZZcg0AAkAgBSACQQRqIAIQjwFFDQAgASACNQIAWg0AIAIoAgQgAadBA3RqKQMAIgRCIIinQXVJDQEgBKciAyADKAIAQQFqNgIADAELQoCAgIDgACEEIAAgBSABIAJBGGoQVCIDQQBIDQAgAikDGEKAgICAMCADGyEECyAAIAUQDCACQSBqJAAgBAstAQF+QoCAgIAwIQICQCABEJYDIgBFDQAgAC0AEkEEcUUNACAANQJEIQILIAILMwIBfgF\u002FQoCAgIAwIQICQCABEJYDIgNFDQAgAy0AEkEEcUUNACAAIAMoAkAQKSECCyACCygAQoCAgIDgACAAIAMpAwAgARDhBSIAQQBHrUKAgICAEIQgAEEASBsLvAECAX4Cf0KAgICA4AAhBCAAIAEQVQR+QoCAgIDgAAVB9pEBIQICQCABpyIDLwEGEOABRQ0AAkAgAygCICIDLwARIgVBgAhxRQ0AIAMoAlQiBkUNACAAIAYgAygCSBDqAQ8LIAVBBHZBA3FBAWsiA0ECSw0AIANB\u002F\u002F8DcUECdEGQ9QFqKAIAIQILIAAgAiAAIAFBNyABQQAQESIBQoCAgIBwg0KAgICAMFEEfiAAQS8QKQUgAQtBnggQsgELC+EFAwN+B38DfAJAIAAgARBVDQAgACAAKQMwQQ4QRyIFQoCAgIBwg0KAgICA4ABRDQAgBaciCSABQoCAgIBwWgR\u002FIAGnLQAFQRBxBUEACyAJLQAFQe8BcXI6AAUCQCAAQQEgAiACQQFMGyIKQQFrIghBA3RBGGoQJCIHRQ0AIAFCIIinQXVPBEAgAaciAiACKAIAQQFqNgIACyAHIAE3AwAgAykDACIEQiCIp0F1TwRAIASnIgIgAigCAEEBajYCAAsgByAINgIQIAcgBDcDCCAHQRhqIQtBACECA0AgAiAIRwRAIAMgAkEBaiIMQQN0aikDACIEQiCIp0F1TwRAIASnIg0gDSgCAEEBajYCAAsgCyACQQN0aiAENwMAIAwhAgwBCwsgCSAHNgIgAn8gAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECJBfwwBCyAAQQAgAadBMBBDCyICQQBIDQACQCACRQ0AIAAgAUEwIAFBABARIgRCgICAgHCDQoCAgIDgAFENASAEQv\u002F\u002F\u002F\u002F8PWARAIASnIgIgCGtBACACIApOG60hBgwBCyAEQiCIp0EHa0FtTQRAAkAgBEKAgICAwIGA\u002FP8AfCIEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWDQAgBL+dIg8gCLciEGUNACAPIBChIQ4LIA69IgQCfyAOmUQAAAAAAADgQWMEQCAOqgwBC0GAgICAeAsiAre9UQRAIAKtIQYMAgtCgICAgMB+IARCgICAgMCBgPz\u002FAH0gBEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhshBgwBCyAAIAQQDAsgACAFQTAgBkEBEBUaIABBgJIBIAAgAUE3IAFBABARIgFCgICAgHCDIgRCgICAgJB\u002FUgR+IARCgICAgOAAUQ0BIAAgARAMIABBLxApBSABC0HslgEQsgEiAUKAgICAcINCgICAgOAAUQ0AIAAgBUE3IAFBARAVGiAFDwsgACAFEAwLQoCAgIDgAAswACACQQBMBEAgACABQoCAgIAwQQBBABAcDwsgACABIAMpAwAgAkEBayADQQhqEBwLgwICAX4BfyMAQSBrIgIkAEKAgICA4AAhBQJAAkAgACABECAiAUKAgICAcINCgICAgOAAUQ0AIAAgAykDABAwIgNFDQADQCAAIAIgAacgAxBDIgZBAE4EQCAGBEBCgICAgDAhBQJAIAItAABBEHFFDQAgAkEYQRAgBBtqKQMAIgVCIIinQXVJDQAgBaciBCAEKAIAQQFqNgIACyAAIAIQRgwECyAAIAEQwgIiAUKAgICAcIMiBUKAgICAIFEEQEKAgICAMCEFDAQLIAVCgICAgOAAUQ0DIAAQdkUNAQsLQoCAgIDgACEFDAELQQAhAwsgACADEBAgACABEAwgAkEgaiQAIAULsQEBA34gAykDCCEFIAMpAwAhBkKAgICA4AAhBwJAIAAgARAgIgFCgICAgHCDQoCAgIDgAFIEfiAAIAUQVQ0BIAAgBhAwIgJFDQEgACABIAJCgICAgDBCgICAgDAgBSAEGyAFQoCAgIAwIAQbQYWqAUGFmgEgBBsQaiEDIAAgARAMIAAgAhAQQoCAgIDgAEKAgICAMCADQQBIGwVCgICAgOAACw8LIAAgARAMQoCAgIDgAAtyAQF+QoCAgIAwIQMgAUKAgICAEIRCgICAgHCDQoCAgIAwUQRAIAAQIkKAgICA4AAPCyACQoCAgIBwg0KAgICAIFIgAkL\u002F\u002F\u002F\u002F\u002Fb1hxBH5CgICAgDAFQoCAgIDgAEKAgICAMCAAIAEgAkEBEIkCQQBIGwsLMgECfiAAIAEQICIBQoCAgIBwg0KAgICA4ABRBEAgAQ8LIAAgARDoASEDIAAgARAMIAMLoAECAn4BfyMAQSBrIgIkAEKAgICA4AAhBAJAAkAgACABECAiAUKAgICAcINCgICAgOAAUQ0AIAAgAykDABAwIgNFDQAgACACIAGnIAMQQyIGQQBIDQEgBkUEQEKAgICAECEEDAILIAI1AgAhBSAAIAIQRiAFQgKIQgGDQoCAgIAQhCEEDAELQQAhAwsgACADEBAgACABEAwgAkEgaiQAIAQLwQEBAn4CQAJ+QoCAgIAQIAMpAwAiBEKAgICAcFQNABpCgICAgOAAIAAgARAgIgFCgICAgHCDQoCAgIDgAFENABogBKciAiACKAIAQQFqNgIAIAGnIQIDQCAAIAQQwgIiBEKAgICAcIMiBUKAgICA4ABSBEAgAiAEp0YgBUKAgICAIFFyDQMgABB2RQ0BCwsgACAEEAwgACABEAxCgICAgOAACw8LIAAgBBAMIAAgARAMIAVCgICAgCBSrUKAgICAEIQLnwQCBn8CfiMAQSBrIgYkACAAIAZBCGoiBUEAED4aIAVBKBA8GiAEQX5xQQJGBEAgBUGdkgEQgwEaCyAGQQhqIgVBmjoQgwEaIARBfXFBAUYEQCAFQSoQPBoLIAZBCGpBrYwBEIMBGkEAIQUgAkEBayIHQQAgB0EAShshCAJAAkACQANAIAUgCEcEQCAFBEAgBkEIakEsEDwaCyAFQQN0IQkgBUEBaiEFIAZBCGogAyAJaikDABCNAUUNAQwCCwsgBkEIaiIFQbKSARCDARogAkEASgRAIAUgAyAHQQN0aikDABCNAQ0BCyAGQQhqIgJBtogBEIMBGkKAgICAMCEMIAIQNyILQoCAgIBwg0KAgICA4ABRDQEgACAAKQPAASALQQNBfxCHAyEMIAAgCxAMIAxCgICAgHCDQoCAgIDgAFENASABQoCAgIBwg0KAgICAMFENAiAAIAFBPCABQQAQESILQoCAgIBwg0KAgICA4ABRDQECQCALQv\u002F\u002F\u002F\u002F9vVg0AIAAgCxAMIAAgARD8AiICRQ0CIAIoAiggBEEBdEGQtwFqLwEAQQN0aikDACILQiCIp0F1SQ0AIAunIgIgAigCAEEBajYCAAsgACAMIAtBARCJAiEKIAAgCxAMIApBAE4NAgwBCyAGKAIIKAIQIgJBEGogBigCDCACKAIEEQAAQoCAgIAwIQwLIAAgDBAMQoCAgIDgACEMCyAGQSBqJAAgDAt6AQF+IAAgAykDABAwIgJFBEBCgICAgOAADwtCgICAgOAAIQQgACABECAiAUKAgICAcINCgICAgOAAUQRAIAAgAhAQIAEPCyAAQQAgAacgAhBDIQMgACACEBAgACABEAxCgICAgOAAIANBAEetQoCAgIAQhCADQQBIGwsIACAAIAEQIAsPACAAIAFBOEEAQQAQswILdAAgACADKQMAECAiAUKAgICAcINCgICAgOAAUgR+AkACQCAAIAMpAwgQMCICRQRAIAAgARAMDAELIABBACABpyACEEMhAyAAIAIQECAAIAEQDCADQQBODQELQoCAgIDgAA8LIANBAEetQoCAgIAQhAUgAQsL6wIBBn4jAEEQayICJAAgAykDACEBQoCAgIDgACEFIAAQMyIHQoCAgIBwg0KAgICA4ABSBEBCgICAgDAhBAJAIAAgAUEAEMsBIgFCgICAgHCDQoCAgIDgAFIEQAJAIAAgAUHrACABQQAQESIGQoCAgIBwg0KAgICA4ABRDQADQCAAIAEgBiACQQxqEJEBIgRCgICAgHCDQoCAgIDgAFENASACKAIMBEAgByEFDAQLAkACQCAEQv\u002F\u002F\u002F\u002F9vWARAIAAQIgwBCyAAIARCABBOIghCgICAgHCDQoCAgIDgAFENACAAIARCARBOIglCgICAgHCDQoCAgIDgAFEEQCAAIAgQDAwBCyAAIAcgCCAJQYeAARCUAUEATg0BCyAAIAQQDAwCCyAAIAQQDAwACwALIAFCgICAgHBaBEAgACABQQEQkAEaCyAGIQQLIAEhBiAHIQELIAAgBBAMIAAgBhAMIAAgARAMCyACQRBqJAAgBQtKAEEvIQIgACADKQMAIgFCgICAgHBaBH8gAacvAQYiAkEsRgRAQQ1BLCAAIAEQNRshAgsgACgCECgCRCACQRhsaigCBAVBLwsQKQvwAQIFfwF+IwBBMGsiAiQAQoGAgIAQIQECQCADKQMAIgpCgICAgHBUDQBCgICAgOAAIQEgACACQSxqIAJBKGogCqciCEEDEH0NACACKAIsIQYgAigCKCEHQQAhAwJAA0AgAyAHRwRAIAAgAkEIaiIJIAggBiADQQN0aigCBBBDIgVBAEgNAgJAIAVFDQAgACAJEEYgAigCCCIFQQFxRSAERSAFQQJxRXJxDQBCgICAgBAhAQwDCyADQQFqIQMMAQsLIAAgChCXASIDQQBIDQEgA0EBR61CgICAgBCEIQELIAAgBiAHEFsLIAJBMGokACABC78BAgF+AX9CgICAgDAhAQJAIAAgAykDABAgIgRCgICAgHCDQoCAgIDgAFENAEEBIAIgAkEBTBshBUEBIQIDQCACIAVGBEAgBA8LIAMgAkEDdGopAwAiAUKAgICAEIRCgICAgHCDQoCAgIAwUgRAIAAgARAgIgFCgICAgHCDQoCAgIDgAFENAiAAIAQgAUKAgICAMEEBEMEFDQIgACABEAwLIAJBAWohAgwACwALIAAgBBAMIAAgARAMQoCAgIDgAAsYACAAIAMpAwAgAykDCBBNrUKAgICAEIQL6AICA34DfyMAQSBrIgIkAEKAgICA4AAhBCAAIAMpAwAQICIFQoCAgIBwg0KAgICA4ABSBEACfgJAIAAgAkEcaiACQRhqIAWnQQMQfQRAQoCAgIAwIQEgAigCGCEHIAIoAhwhCAwBCyAAEDMhASACKAIYIQcgAigCHCEIIAFCgICAgHCDQoCAgIDgAFEEQEKAgICA4AAhAQwBC0EAIQMDQCADIAdHBEAgACAIIANBA3RqIgkoAgQQUiIEQoCAgIBwg0KAgICA4ABRDQIgAiAENwMIIAIgBTcDACAAIAUgACACQQAQ2AQhBiAAIAQQDCAGQoCAgIBwgyIEQoCAgIAwUgRAIARCgICAgOAAUQ0DIAAgASAJKAIEIAZBh4ABEBVBAEgNAwsgA0EBaiEDDAELCyAAIAggBxBbIAEMAQsgACAIIAcQWyAAIAUQDCABIQVCgICAgOAACyEEIAAgBRAMCyACQSBqJAAgBAuPAQACQAJAIAMpAwAiAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAEBEAgABAiDAMLIAFCIIinQXVJDQEgAaciACAAKAIAQQFqNgIAIAEPCyAAIAEQigQiAkEASA0BIAQEQCACQQBHrUKAgICAEIQPCyACRQRAIABB7dAAQQAQEgwCCyABpyIAIAAoAgBBAWo2AgALIAEPC0KAgICA4AALTwACQAJAIAMpAwAiAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAERQRAQoCAgIAQDwsgABAiDAELIAAgARCXASIAQQBODQELQoCAgIDgAA8LIABBAEetQoCAgIAQhAsQACAAIAMpAwBBAkEAELICCxAAIAAgAykDAEEBQQAQsgILRwEBfkKAgICA4AAhBCAAIAMpAwAiASADKQMIENoEBH5CgICAgOAABSABQiCIp0F1TwRAIAGnIgAgACgCAEEBajYCAAsgAQsLiwEBAn4gAykDACIBQv\u002F\u002F\u002F\u002F9vWARAIAAQIkKAgICA4AAPCyADKQMQIQZCgICAgOAAIQUCQCAAIAMpAwgQMCICRQ0AIAAgASACIAYgBEVBDnQQ2QQhAyAAIAIQECADQQBIDQAgBARAIANBAEetQoCAgIAQhA8LIAGnIgAgACgCAEEBajYCACABIQULIAULQQAgACADKQMAIgEgAykDCEEBEIkCQQBIBEBCgICAgOAADwsgAUIgiKdBdU8EQCABpyIAIAAoAgBBAWo2AgALIAELXQACQCABQoCAgIBwg0KAgICAMFENACAAKAIQKAKMASgCCCABp0YNACAAIAFBARBeDwsgAykDACIBQiCIpyICQQtqQRFLIAJBfnFBAkdyRQRAIAAQMw8LIAAgARAgCzYAIAMpAwAiAUIgiKciAkF\u002FRiAERSACQX5xQQJHcXJFBEAgABAiQoCAgIDgAA8LIAAgARDoAQuJAQEBfiADKQMAIgFC\u002F\u002F\u002F\u002F\u002F29WIAFCgICAgHCDQoCAgIAgUXJFBEAgAEHe0gBBABASQoCAgIDgAA8LAkAgACABEEEiAUKAgICAcINCgICAgOAAUgRAIAMpAwgiBEKAgICAcINCgICAgDBRDQEgACABIAQQ2gRFDQEgACABEAwLQoCAgIDgAA8LIAELnwIBA34gAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECJCgICAgOAADwtCgICAgOAAIQUCfiAAIAFBNyABQQAQESIEQoCAgIBwg0KAgICAMFEEQCAAQZQBECkMAQsgACAEEDQLIgRCgICAgHCDIgZCgICAgOAAUgR+An4gACABQTMgAUEAEBEiAUKAgICAcINCgICAgDBRBEAgAEEvECkMAQsgACABEDQLIgFCgICAgHCDIgVCgICAgOAAUQRAIAAgBBAMQoCAgIDgAA8LAkAgBkKAgICAkH9RBEAgBKcoAgRB\u002F\u002F\u002F\u002F\u002FwdxRQ0BCyAFQoCAgICQf1EEQCABpygCBEH\u002F\u002F\u002F\u002F\u002FB3FFDQELIABB7JYBIARBpJIBELIBIQQLIAAgBCABELYCBUKAgICA4AALC5UCAgF+An8jAEEwayICJABCgICAgOAAIQECQCAAIAJBKGogAykDABCkAQ0AIAAQ4gEiBUKAgICAcINCgICAgOAAUQ0AIAAgAkEUaiADKQMIEK4CIgZFBEAgACAFEAwMAQsgACgC2AEgAhC7ASACQgEQMhogAiACKQMoIgGnIgdBARC5ARogAiACQn9B\u002F\u002F\u002F\u002F\u002FwNBARB6GiAFp0EEaiIDIAYgAhCyBBoCQCAERSABUHINACACQgEQMhogAiAHQQFrQQEQuQEaIAMgAhDyAUEASA0AIAJCARAyGiACIAdBARC5ARogAyADIAJB\u002F\u002F\u002F\u002F\u002FwNBARDuARoLIAIQGSAAIAYgAkEUahDmASAFEK8CIQELIAJBMGokACABCwkAIAAgARDcBAt0AgJ+AX8gACABENwEIgFCgICAgHCDQoCAgIDgAFEEQCABDwtBCiEGAn4CQCACRQ0AIAMpAwAiBEKAgICAcINCgICAgDBRDQAgACAEENsEIgZBAE4NAEKAgICA4AAMAQsgACABIAYQogULIQUgACABEAwgBQvOAQIBfwJ+IwBBEGsiAiQAAkBBuNQEKQMAUA0AQbTUBCgCACAAIAAQPRDqASEDQbTUBCgCACABIAEQPUH9\u002FwAQ8wMiBEHA1AQoAgAQkAMEQEG01AQoAgAgBBAMQbTUBCgCACADEAwMAQsgAiAENwMIIAIgAzcDAEG01AQoAgBBuNQEKQMAQoCAgIAwQQIgAhAcIQNBtNQEKAIAIAIpAwAQDEG01AQoAgAgAikDCBAMIANBwNQEKAIAEJADGkG01AQoAgAgAxAMCyACQRBqJAALPQACfgJAIAEQlgMiAkUNACACLQAQQQFxDQBCgICAgDAgAi0AEUEBcQ0BGgsgAEGTIkEAEBJCgICAgOAACwsSACAAQZMiQQAQEkKAgICA4AAL1w4CB38BfiMAQdAAayIIJAAgCEEAQdAAECwiCCAENgIMIAggADYCACAIQQE2AgggCEKggICAEDcDECAIIAI2AjggCCACIANqIgI2AjwjAEEQayIHJAACQCAIKAI4IgMtAABBI0cNACADLQABQSFHDQAgByADQQJqIgM2AgwDQAJAIAIgA00NAAJAIAMtAAAiCUEKaw4EAQAAAQALIAnAQQBIBEAgA0EGIAdBDGoQUSEJIAcoAgwhAyAJQX5xQajAAEYNASAJQX9HDQILIAcgA0EBaiIDNgIMDAELCyAIIAM2AjgLIAdBEGokAAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAFQQNxIgdBAkYEQCAAKAIQKAKMASILRQ0EIAspAwgiDkL\u002F\u002F\u002F\u002F\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\u002FAINCgICAgICAgPj\u002FAFENAiAEQRBqIAZqIAedOQMAAkAgBQ0AIAQrAxAiB0QAAAAAAAAAAGZFIAdEAAAAAAAAWUBjRXINACAEIAdEAAAAAACwnUCgOQMQCyAFQQFqIQUMAQsLIARBEGpBABDrAyIHvSIBAn8gB5lEAAAAAAAA4EFjBEAgB6oMAQtBgICAgHgLIgW3vVEEQCAFrSEBDAELQoCAgIDAfiABQoCAgIDAgYD8\u002FwB9IAFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbIQELIARB0ABqJAAgAQtWABCoBSIBQoCAgIAIfEL\u002F\u002F\u002F\u002F\u002FD1gEQCABQv\u002F\u002F\u002F\u002F8Pgw8LQoCAgIDAfiABub0iAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwvvAQEDfiMAQRBrIgIkAEKAgICA4AAhBAJAIAAgACABECAiAUEBELsCIgVCgICAgHCDQoCAgIDgAFENACAFQiCIpyIDQQAgA0ELakESSRtFBEAgACACQQhqIAUQQkEASA0BQoCAgIAgIQQgAikDCEKAgICAgICA+P8Ag0KAgICAgICA+P8AUQ0BC0KAgICA4AAhBCAAIAFB48oAEIcCIgZCgICAgHCDQoCAgIDgAFENACAAIAYQNUUEQCAAQergAEEAEBIgACAGEAwMAQsgACAGIAFBAEEAEDYhBAsgACABEAwgACAFEAwgAkEQaiQAIAQLjAIDAXwBfgF\u002FIwBBEGsiAiQAQoCAgIDgACEFAkAgACACQQhqIgYgARCmAg0AIAAgBiADKQMAEEINACACAn4gAisDCCIEvUKAgICAgICA+P8Ag0KAgICAgICA+P8AUgRAIASdIgREAAAAAACwnUCgIAQgBEQAAAAAAABZQGMbIAQgBEQAAAAAAAAAAGYbIQQLIAS9IgUCfyAEmUQAAAAAAADgQWMEQCAEqgwBC0GAgICAeAsiA7e9UQRAIAOtDAELQoCAgIDAfiAFQoCAgIDAgYD8\u002FwB9IAVC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbCzcDACAAIAFBASACQREQ+AQhBQsgAkEQaiQAIAULigEDAX4BfAF\u002FIwBBEGsiAiQAQoCAgIDgACEEAkAgACACQQhqIgYgARCmAg0AIAAgBiADKQMAEEINACAAIAEgAisDCCIFnUQAAAAAAAAAAKBEAAAAAAAA+H8gBUQAANzCCLI+Q2UbRAAAAAAAAPh\u002FIAVEAADcwgiyPsNmGxD5BCEECyACQRBqJAAgBAvZAQIBfAF+IwBB0ABrIgIkAAJ+QoCAgIDgACAAIAEgAiAEQQ9xQQAQ1QMiAEEASA0AGkKAgICAwH4gAEUNABogBEGAAnEEQCACIAIrAwBEAAAAAACwncCgOQMACyACIARBBHZBD3FBA3RqKwMAIgW9IgECfyAFmUQAAAAAAADgQWMEQCAFqgwBC0GAgICAeAsiBLe9UQRAIAStDAELQoCAgIDAfiABQoCAgIDAgYD8\u002FwB9IAFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbCyEGIAJB0ABqJAAgBguHAQIBfAF+IwBBEGsiAiQAAn5CgICAgOAAIAAgAkEIaiABEKYCDQAaQoCAgIDAfiACKwMIIgS9Qv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWDQAaAn4gBJ0iBJlEAAAAAAAA4ENjBEAgBLAMAQtCgICAgICAgICAfwsQ1AOtCyEFIAJBEGokACAFC4MBAQF+AkAgAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECIMAQsCQCADKQMAIgRCgICAgHCDQoCAgICQf1INACAAIAQQMCICRQ0BIAAgAhAQQREhAwJAAkACQCACQccAaw4DAgMBAAsgAkEWRw0CC0EQIQMLIAAgASADELsCDwsgAEGnGUEAEBILQoCAgIDgAAuYAQIBfAF+IwBBEGsiAiQAAn5CgICAgOAAIAAgAkEIaiABEKYCDQAaIAIrAwgiBL0iAQJ\u002FIASZRAAAAAAAAOBBYwRAIASqDAELQYCAgIB4CyIAt71RBEAgAK0MAQtCgICAgMB+IAFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\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\u002F\u002F\u002F\u002F9vWARAIAAQIkKAgICA4AAhAQwBCyAAIAIgARCCAiIEQoCAgIBwg0KAgICA4ABRBEAgBCEBDAELIAAQMyIBQoCAgIBwg0KAgICA4ABRBEAgACACKQMAEAwgACACKQMIEAwgACAEEAxCgICAgOAAIQEMAQsgACABQYMBIARBBxAVGiAAIAFBgQEgAikDAEEHEBUaIAAgAUGCASACKQMIQQcQFRoLIAJBEGokACABC+UDAQV+IwBBMGsiAiQAAkAgAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECJCgICAgOAAIQUMAQsgACACQSBqIAEQggIiBUKAgICAcINCgICAgOAAUQ0AQoCAgIAwIQZCgICAgDAhBAJAAkAgACABQYEBIAFBABARIghCgICAgHCDQoCAgIDgAFENACAAIAgQVQ0AIAAgAykDAEEAEMsBIgRCgICAgHCDQoCAgIDgAFEEQAwBCyAAIARB6wAgBEEAEBEiBkKAgICAcINCgICAgOAAUQ0AA0AgAiAAIAQgBiACQRRqEJEBIgc3AxggB0KAgICAcINCgICAgOAAUQ0BIAIoAhQNAiAAIAggAUEBIAJBGGoQHCEHIAAgAikDGBAMIAdCgICAgHCDQoCAgIDgAFIEQCAAIAAgB0GAAUECIAJBIGoQpwIQ\u002FwFFDQELCyAAIARBARCQARoLIAAoAhAiAykDgAEhASADQoCAgIAgNwOAASACIAE3AwggACACKQMoQoCAgIAwQQEgAkEIahAcIQEgACACKQMIEAwgACAFIAEgAUKAgICAcINCgICAgOAAUSIDGxAMQoCAgIDgACAFIAMbIQULIAAgCBAMIAAgBhAMIAAgBBAMIAAgAikDIBAMIAAgAikDKBAMCyACQTBqJAAgBQvzAwIFfgF\u002FIwBBIGsiAiQAIAAgBSkDABDkASELIAIgBSkDECIINwMYIAUpAyAhCiAFKQMYIQkCQAJAIAAgAkEUaiAFKQMIEHUNAAJAIAsNACAFQoGAgIAQNwMAAkAgBEEDcSIFQQFGBEBCgICAgOAAIQEgABAzIgZCgICAgHCDQoCAgIDgAFENBAJAIABBoOcAQabqACAEQQRxIgQbEGAiB0KAgICAcINCgICAgOAAUQ0AIAAgBkGKASAHQQcQFUEASA0AIAMpAwAiB0IgiKdBdU8EQCAHpyIDIAMoAgBBAWo2AgALIAAgBkGLAUHBACAEGyAHQQcQFUEATg0CCyAAIAYQDAwECyADKQMAIgZCIIinQXVJDQAgBqciAyADKAIAQQFqNgIACyAAIAggAigCFCAGQQcQkwFBAEgNAUKAgICA4AAhASAAIApBfxDYAyIDQQBIDQIgA0UNAAJAIAVBAkYEQCACIAAgCBD+BCIGNwMIIAZCgICAgHCDQoCAgIDgAFENBCAAIAlCgICAgDBBASACQQhqEBwhASAAIAIpAwgQDAwBCyAAIAlCgICAgDBBASACQRhqEBwhAQsgAUKAgICAcINCgICAgOAAUQ0CIAAgARAMC0KAgICAMCEBDAELQoCAgIDgACEBCyACQSBqJAAgAQukCAINfgN\u002FIwBB8ABrIgIkACACQoCAgIAwNwNQAkAgAUL\u002F\u002F\u002F\u002F\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\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002Fw9RBEAgAEHOIUEAEBJCgICAgDAhBwwBCyACIAAgCCAMIAJBDGoQkQEiBzcDECAHQoCAgIBwg0KAgICA4ABRBEBBACEODAcLIAIoAgwEQCAGIQkMCgsgAiAHNwMgIAIgCiIBQoCAgIAIWgR+QoCAgIDAfiABub0iAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\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\u002FwB9IAFCgICAgICAgPj\u002FAFYbC1kBAX8gACABIARBImoQWiICRQRAQoCAgIDgAA8LIAJBBGohAyACKAIIIQQDfiADIARGBH5CgICAgDAFIARBEGshBSAEKAIEIQQgACgCECACIAUQgAUMAQsLC3UAIAAgASAEQSJqEFoiAkUEQEKAgICA4AAPCyAAIAIgAykDACIBQgAgAUIgiKdBB2tBbk8bIAEgAUKAgICAwIGA\u002FP8AfEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag1AbEPICIgNFBEBCgICAgBAPCyAAKAIQIAIgAxCABUKBgICAEAthACAAIAEgBEEiahBaIgJFBEBCgICAgOAADwsgACACIAMpAwAiAUIAIAFCIIinQQdrQW5PGyABIAFCgICAgMCBgPz\u002FAHxC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\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\u002F\u002F\u002F\u002F\u002Fb1ZyRQRAIAAgAhAMDAELIAAgBCAHIAMQQyIDQQBIDQICQCADRQRAQQAhBSAJQoCAgIAwUQ0FDAELIAAgBBBGIAlCgICAgDBSDQAgBC0AAEEBcUUNAUEAIQUgBy0ABUEBcUUNAQwEC0F\u002FIQUgACAGKQMAEJcBIgZBAEgNAiAAIARBIGogAhCEBSEIIAAgAhAMIAhBAEgNAwJAIAMEQCAEKAIAIgVBgDpBgM4AIAQoAiAiA0EQcRsgA3IQjwNFDQEgA0EBcQ0DIAVBAXENASADQRJxDQMgBUECcQ0BDAMLIAZFDQAgBC0AIEEBcQ0CCyAAIARBIGoQRgsgAEGaK0EAEBJBfyEFDAILAkAgAQRAIAEgBCkDIDcDACABIAQpAzg3AxggASAEKQMwNwMQIAEgBCkDKDcDCAwBCyAAIARBIGoQRgtBASEFDAELIAAgAhAMCyAEQeAAaiQAIAULDQAgACABIAJBLBDvBQsLACAAIAFBLBDwBQsWACAAIAMpAwAgAykDCCADKQMQEPIDC9EBAgN+An8jAEEQayIHJAACQCAAIAdBDGogAykDABDfASIIRQRAQoCAgIDgACEEDAELIAAgCCAHKAIMQcn\u002FABDzAyEBIAAgCBAxAkAgAkECSCABQoCAgIBwg0KAgICA4ABRcg0AIAAgAykDCCIGEDVFDQBCgICAgOAAIQQCQCAAEDMiBUKAgICAcINCgICAgOAAUQRAIAEhBQwBCyAAIAVBLyABQQcQFUEASA0AIAAgBUEvIAYQhQUhBAsgACAFEAwMAQsgASEECyAHQRBqJAAgBAsQACAAIAMpAwBBESAEELICC6UDAQR+IwBBEGsiAyQAIAQCfwJAAkACQAJAIAAgAUEqEFoiAkUEQEKAgICAMCEBDAELIAIoAhgEQEKAgICAMCEBQQEMBQsgACACKQMAIgggAikDCCIGEMUBIgFCgICAgHCDIgdCgICAgOAAUg0BC0KAgICAMCEHDAELIAdCgICAgCBRBEAgAkEBNgIYQoCAgIAwIQFBAQwDCyACKAIQBEAgACAAIAFCABBOEDQiB0KAgICAcIMiCUKAgICA4ABRDQECQCAJQoCAgICQf1INACAHpygCBEH\u002F\u002F\u002F\u002F\u002FB3ENACAAIANBCGogACAIQdYAIAhBABAREKEBQQBIDQIgACAIQdYAAn4gBqcgAykDCCACKAIUEPQCIgZCgICAgAh8Qv\u002F\u002F\u002F\u002F8PWARAIAZC\u002F\u002F\u002F\u002F\u002Fw+DDAELQoCAgIDAfiAGub0iBkKAgICAwIGA\u002FP8AfSAGQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwsQOUEASA0CCyAAIAcQDAwCCyACQQE2AhgMAQsgACABEAwgACAHEAxCgICAgOAAIQELQQALNgIAIANBEGokACABCyAAIAFCIIinQXVPBEAgAaciACAAKAIAQQFqNgIACyABC\u002FEHAgR\u002FC34jAEEwayIEJAACQCABQv\u002F\u002F\u002F\u002F9vWARAIAAQIkKAgICA4AAhAQwBC0KAgICAMCEIAkACQCAAIAMpAwAQJSIPQoCAgIBwg0KAgICA4ABRBEBCgICAgDAhDEKAgICAMCEBQoCAgIAwIQ1CgICAgDAhEAwBCyAAIAEgACkDSBD9ASIQQoCAgIBwg0KAgICA4ABRBEBCgICAgDAhDEKAgICAMCEBQoCAgIAwIQ0MAQsCQAJAIAAgACABQe4AIAFBABAREDQiDUKAgICAcINCgICAgOAAUQ0AIA2nIgJB9QBBABCgASEGIAJB+QBBABCgAUEASARAIABB7JYBIA1B0A4QsgEiDUKAgICAcINCgICAgOAAUQ0BCyAEIA03AyggBCABNwMgIAAgEEECIARBIGoQowEiDEKAgICAcINCgICAgOAAUQ0BIAAQOyIBQoCAgIBwg0KAgICA4ABRBEBCgICAgOAAIQEMAwtBfyECAkAgAykDCCIJQoCAgIBwg0KAgICAMFENACAAIARBHGogCRB1QQBIDQMgBCgCHCICDQAMBAsCQAJAIA+nIgcpAgQiCKdB\u002F\u002F\u002F\u002F\u002FwdxIgUEQCAGQX9zQR92IQYgCEL\u002F\u002F\u002F\u002F\u002FB4MhESACrSESQgAhCUKAgICAMCEIQQAhAgNAIAKtIQogAiEDA0AgAyAFTw0DIAAgDEHWACADrSIOEDlBAEgNByAAIAgQDAJAIAAgDCAPEMUBIghCgICAgHCDIgtCgICAgCBRDQAgC0KAgICA4ABRDQggACAEQRBqIAAgDEHWACAMQQAQERChAQ0IIAQgBCkDECILIBEgCyARUxsiCzcDECAKIAtRDQAgACAHIAIgAxCOASIKQoCAgIBwg0KAgICA4ABRDQggACABIAkgChBnQQBIDQggCUIBfCIKIBJRDQkgACAEQQhqIAgQLw0IIAunIQJCASELIAlCASAEKQMIIg4gDkIBVxt8IQkDQCAJIApRDQMgACAAIAggCxBsEDQiDkKAgICAcINCgICAgOAAUQ0JIAAgASAKIA4QZ0EASA0JIAtCAXwhCyAKQgF8IgogElINAAsMCQsgByAOIAYQ9AKnIQMMAAsACwALIAAgDCAPEMUBIghCgICAgHCDIglCgICAgCBSDQFCACEJQQAhAgsgACAHIAIgBSACIAVJGyAFEI4BIgpCgICAgHCDQoCAgIDgAFENAyAAIAEgCSAKEGdBAEgNAwwECyAJQoCAgIDgAFINAwwCC0KAgICAMCEMC0KAgICAMCEBCyAAIAEQDEKAgICA4AAhAQsgACAPEAwgACAQEAwgACAMEAwgACANEAwgACAIEAwLIARBMGokACABC+ACAQd+IAFC\u002F\u002F\u002F\u002F\u002F29YBEAgABAiQoCAgIDgAA8LQoCAgIDgACEIQoCAgIAwIQYCQAJAAkAgACADKQMAECUiB0KAgICAcINCgICAgOAAUQRAQoCAgIAwIQQMAQsgACABQdYAIAFBABARIgRCgICAgHCDQoCAgIDgAFENACAAIARCABBNRQRAIAAgAUHWAEIAEDlBAEgNAQsgACABIAcQxQEiBUKAgICAcIMiCUKAgICA4ABRDQEgACABQdYAIAFBABARIgZCgICAgHCDQoCAgIDgAFENAQJAIAAgBiAEEE0EQCAAIAQQDAwBCyAAIAFB1gAgBBA5QQBODQBCgICAgDAhBAwCCyAAIAcQDCAAIAYQDEL\u002F\u002F\u002F\u002F\u002FDyEIIAlCgICAgCBRDQIgACAFQdgAIAVBABARIQogACAFEAwgCg8LQoCAgIAwIQULIAAgBRAMIAAgBxAMIAAgBhAMIAAgBBAMCyAIC84EAgZ+AX8jAEEgayICJAACQCABQv\u002F\u002F\u002F\u002F9vWARAIAAQIkKAgICA4AAhBwwBC0KAgICA4AAhB0KAgICAMCEIAkAgACADKQMAECUiCUKAgICAcINCgICAgOAAUQRAQoCAgIAwIQRCgICAgDAhBUKAgICAMCEGDAELAkACQCAAIAEgACkDSBD9ASIGQoCAgIBwg0KAgICA4ABRBEBCgICAgDAhBAwBCyAAIAAgAUHuACABQQAQERA0IgRCgICAgHCDQoCAgIDgAFINAQtCgICAgDAhBQwBCyACIAQ3AxggAiABNwMQIAAgBkECIAJBEGoQowEiBUKAgICAcINCgICAgOAAUQ0AIAAgAkEIaiAAIAFB1gAgAUEAEBEQoQENACAAIAVB1gACfiACKQMIIgFCgICAgAh8Qv\u002F\u002F\u002F\u002F8PWARAIAFC\u002F\u002F\u002F\u002F\u002Fw+DDAELQoCAgIDAfiABub0iAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwsQOUEASA0AQoCAgIDgACEIIABBKhCGASIBQoCAgIBwg0KAgICA4ABRDQAgAEEgECQiA0UEQCABIQgMAQsgAyAJNwMIIAMgBTcDACADIASnIgpB5wBBABCgAUF\u002Fc0EfdjYCECAKQfUAQQAQoAEhCiADQQA2AhggAyAKQX9zQR92NgIUIAFCgICAgHBaBEAgAacgAzYCIAsgACAGEAwgACAEEAwgASEHDAELIAAgCRAMIAAgBhAMIAAgBBAMIAAgBRAMIAAgCBAMCyACQSBqJAAgBwv+BAIIfgJ\u002FIwBBEGsiAiQAAkAgAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECJCgICAgOAAIQcMAQtCgICAgOAAIQdCgICAgDAhBQJAAkACQCAAIAMpAwAQJSIJQoCAgIBwg0KAgICA4ABRBEBCgICAgDAhCAwBCyAAIAFB7gAgAUEAEBEiCEKAgICAcINCgICAgOAAUQ0AIAAgCBA0IghCgICAgHCDQoCAgIDgAFENACAIp0HnAEEAEKABQX9GBEAgACABIAkQxQEhBwwDCyAAIAAgAUHwACABQQAQERAnIgxBAEgNACAAIAFB1gBCABA5QQBIDQAgABA7IgZCgICAgHCDQoCAgIDgAFEEQEKAgICA4AAhBgwCCyAJpyENA0ACQCAAIAUQDCAAIAEgCRDFASIFQoCAgIBwgyIEQoCAgIAgUQ0AIARCgICAgOAAUQ0DAkAgACAAIAVCABBOEDQiBEKAgICAcIMiC0KAgICAkH9SBEBBACEDIAtCgICAgOAAUQ0FDAELIASnKAIEQf\u002F\u002F\u002F\u002F8HcUUhAwsgACAGIAogBBB7QQBIDQMgCkIBfCEKIANFDQEgACACQQhqIAAgAUHWACABQQAQERChAUEASA0DIAAgAUHWAAJ+IA0gAikDCCAMEPQCIgRCgICAgAh8Qv\u002F\u002F\u002F\u002F8PWARAIARC\u002F\u002F\u002F\u002F\u002Fw+DDAELQoCAgIDAfiAEub0iBEKAgICAwIGA\u002FP8AfSAEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwsQOUEATg0BDAMLCyAKpwRAIAYhBwwDCyAAIAYQDEKAgICAICEHDAILQoCAgIAwIQYLIAAgBhAMCyAAIAUQDCAAIAgQDCAAIAkQDAsgAkEQaiQAIAcLjgEBAn8gASgCACICQQBKBEAgASACQQFrIgI2AgACQCACDQAgAS0ABEHwAXFBEEcNACABKAIIIgIgASgCDCIDNgIEIAMgAjYCACABQQA2AgggACgCYCICIAFBCGoiAzYCBCABIABB4ABqNgIMIAEgAjYCCCAAIAM2AmALDwtB5oQBQajsAEHWLEHN4wAQAAAL8BQCDn8OfiMAQZABayIEJAACQCABQv\u002F\u002F\u002F\u002F9vWARAIAAQIkKAgICA4AAhFQwBCyADKQMIIR4gACAEQThqQQAQPhogBEEANgIwIARCgICAgMAANwMoIAQgADYCACAEIARBCGoiBzYCBEKAgICA4AAhFUKAgICAMCEWQoCAgIAwIRdCgICAgDAhE0KAgICAMCEUQoCAgIAwIR1CgICAgDAhHAJAAkAgACADKQMAECUiGEKAgICAcINCgICAgOAAUQ0AIAAgHhA1IglFBEAgACAeECUiHUKAgICAcINCgICAgOAAUQ0BIB2nIQULAkACQCAAIAFB7gAgAUEAEBEiHEKAgICAcINCgICAgOAAUQ0AIAAgHBA0IhxCgICAgHCDQoCAgIDgAFENACAcp0HnAEEAEKABIgNBf0cEQCAAIAAgAUHwACABQQAQERAnIghBAEgNASAAIAFB1gBCABA5QQBIDQELIAVFIANBf0ZyDQEgBSkCBEL\u002F\u002F\u002F\u002F\u002FB4NCAFINAQJAIAAgAUE9IAFBABARIhJCgICAgHCDQoCAgIDgAFENACAAIBIgACkDSBBNIQ4gACASEAwgDkUNAiAAIAFBhwEgAUEAEBEiEkKAgICAcINCgICAgOAAUQ0AIBJBwgBBABCCBCEPIAAgEhAMIA9FDQILIAAgARD1AiICRQ0AQQAhAyAAIARB0ABqQQAQPhoCQCAAIBgQJSISQoCAgIBwg0KAgICA4ABRDQACQCACKAIEQRBqIgotAAAiAkEhcSILRQRAIARCADcDgAEMAQsgACABQdYAIAFBABARIhpCgICAgHCDQoCAgIDgAFENASAAIARBgAFqIBoQoQENAQsCQCAKLQABIgVBAE0NACAAIAVBA3QQJCIDDQBBACEDDAELIAJBEHEhDCACQQFxIQ0gEqciBUEQaiEJIAUpAgQiFKdBH3YhCCAEKQOAASETAkADQCATIBRC\u002F\u002F\u002F\u002F\u002FweDVQ0BAkAgAyAKIAkgE6cgFKdB\u002F\u002F\u002F\u002F\u002FwdxIAggABCkBiICQQFHBEAgAkEASA0BIAtFIAJBAkdxDQMgACABQdYAQgAQOUEASA0EDAMLIAMoAgAhECAEIAMoAgQgCWsgCHUiAjYCjAEgECAJayAIdSIHIAZKBEAgBEHQAGogBSAGIAcQSw0ECyANRQRAIAAgAUHWACACIgatEDlBAE4NAwwECwJAIAcgAiIGRw0AAkACQCAMRQ0AIAUpAgQiGkKAgICACINQDQAgByAap0H\u002F\u002F\u002F\u002F\u002FB3FJDQELIAQgB0EBaiIGNgKMAQwBCyAFIARBjAFqEMYBGiAEKAKMASEGCyAFKQIEIRQgBqwhEyACIQYMAQsLIABBuDhBABA6DAELIARB0ABqIgIgBSAGIAUoAgRB\u002F\u002F\u002F\u002F\u002FwdxEEsNACAAIBIQDCAAKAIQIgZBEGogAyAGKAIEEQAAIAIQNyEVDAELIAAgEhAMIAAoAhAiAkEQaiADIAIoAgQRAAAgBCgCUCgCECICQRBqIAQoAlQgAigCBBEAAAtCgICAgDAhE0KAgICAMCEUDAELIBinIQIgA0F\u002FRiEKAkADQAJAAkAgACABIBgQxQEiEkKAgICAcIMiFUKAgICAIFIEQCAVQoCAgIDgAFENAkKAgICA4AAhFSAEKAIwDQICQCAEKAIoIgMgBCgCLEgEQCAEKAIEIQUMAQsgAyADQQF1akEfakFvcSILQQN0IQMgBCgCACEGAkACQCAHIAQoAgQiBUYEQCAGQQAgAyAEQdAAahCnASIFRQ0BIAUgBykDADcDACAFIAcpAxg3AxggBSAHKQMQNwMQIAUgBykDCDcDCAwCCyAGIAUgAyAEQdAAahCnASIFDQELIAQQiQUgBCgCACASEAwgBEF\u002FNgIwDAQLIAQgBTYCBCAEIAQoAlBBA3YgC2o2AiwgBCgCKCEDCyAEIANBAWo2AiggBSADQQN0aiASNwMAIApFDQELIBhCIIinQXVJIQdBACEFQQAhAwNAIAQoAiggA0oEQCAAIARBjAFqIAQoAgQgA0EDdGopAwAiGxDKAUEASA0FIAAgFBAMQoCAgIDgACEVIAAgACAbQgAQThA0IhRCgICAgHCDQoCAgIDgAFENBiAAIARBgAFqIAAgG0HYACAbQQAQERChAQ0GAkAgBCkDgAEiEiACKQIEQv\u002F\u002F\u002F\u002F8HgyIBVQRAIAQgATcDgAEgASESDAELIBJCAFkNAEIAIRIgBEIANwOAAQsgACATEAwgABA7IhNCgICAgHCDQoCAgIDgAFEEQEKAgICA4AAhEwwHCyAUQiCIp0F1TwRAIBSnIgYgBigCAEEBajYCAAsgACATQgAgFEGHgAEQlAFBAEgNBkEBIAQoAowBIgYgBkEBTRsiBq0hH0IBIQEDQCABIB9SBEAgACAbIAEQbCIZQoCAgIBwgyIaQoCAgIAwUgRAIBpCgICAgOAAUQRAIBohFQwKCyAAIBkQNCIZQoCAgIBwg0KAgICA4ABRDQgLIAAgEyABIBkQZyERIAFCAXwhASARQQBODQEMCAsLIAAgFhAMIAAgG0GIASAbQQAQESIWQoCAgIBwgyIBQoCAgIDgAFENBgJAIAkEQCAAIBMgHyASQv\u002F\u002F\u002F\u002F8PgxBnQQBIDQggB0UEQCACIAIoAgBBAWo2AgALIAAgEyAGQQFqrSAYEGdBAEgNCCABQoCAgIAwUgRAIBZCIIinQXVPBEAgFqciCCAIKAIAQQFqNgIACyAAIBMgBkECaq0gFhBnQQBIDQkLIAQgEzcDWCAEQoCAgIAwNwNQIAAgFxAMIAAgACAeIAAgBEHQAGpBABCIAxA0IRcMAQtCgICAgDAhGSABQoCAgIAwUgRAIAAgFhAgIhlCgICAgHCDQoCAgIDgAFENCAsgBCAdNwN4IAQgGTcDcCAEIBM3A2ggBCAYNwNYIAQgFDcDUCAEIBJC\u002F\u002F\u002F\u002F\u002Fw+DNwNgIAAgFxAMIAAgBEHQAGoQiAUhFyAAIBkQDAsgF0KAgICAcINCgICAgOAAUQ0GIAWsIBJXBEAgBEE4aiIGIAIgBSASpxBLGiAGIBcQjQEaIBSnKQIEQv\u002F\u002F\u002F\u002F8HgyASfKchBQsgA0EBaiEDDAELCyAEQThqIgMgAiAFIAIoAgRB\u002F\u002F\u002F\u002F\u002FwdxEEsaIAMQNyEVDAULIAAgFBAMAn8CQCAAIAAgEkIAEE4QNCIUQoCAgIBwgyISQoCAgICQf1IEQCASQoCAgIDgAFINASASIRUMAwsgFKcoAgRB\u002F\u002F\u002F\u002F\u002FwdxDQAgACAEQdAAaiAAIAFB1gAgAUEAEBEQoQFBAEgNAiAAIAFB1gACfiACIAQpA1AgCBD0AiISQoCAgIAIfEL\u002F\u002F\u002F\u002F\u002FD1gEQCASQv\u002F\u002F\u002F\u002F8PgwwBC0KAgICAwH4gErm9IhJCgICAgMCBgPz\u002FAH0gEkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLEDkiA0EATg0AIANBHnZBAnEMAQtBAAtFDQELCwwBC0KAgICA4AAhFQsgBCgCOCgCECICQRBqIAQoAjwgAigCBBEAAAsgBBCJBSAAIB0QDCAAIBQQDCAAIBwQDCAAIBMQDCAAIBcQDCAAIBYQDCAAIBgQDAsgBEGQAWokACAVC6EBAQF+IwBBIGsiAiQAAn4CQCABQv\u002F\u002F\u002F\u002F9vWARAIAAQIgwBCyAAIAJBCGoiA0EAED4aIANBLxA8GgJAIAMgACABQe0AIAFBABAREIQBDQAgAkEIakEvEDwaIAMgACABQe4AIAFBABAREIQBDQAgAxA3DAILIAIoAggoAhAiAEEQaiACKAIMIAAoAgQRAAALQoCAgIDgAAshBCACQSBqJAAgBAtOAQJ+QoCAgIDgACEEIAAgASADKQMAEMUBIgFCgICAgHCDIgVCgICAgOAAUgR+IAAgARAMIAVCgICAgCBSrUKAgICAEIQFQoCAgIDgAAsL+AICA34BfwJAAkAgACABEPUCIgJFDQAgAykDCCEGAkACQAJAIAMpAwAiBEKAgICAcFQNACAEpyIDLwEGQRJHDQAgBkKAgICAcINCgICAgDBSBEAgAEHz6ABBABASQoCAgIDgAA8LIAMoAiAiByAHKAIAQQFqNgIAIAMoAiQiAyADKAIAQQFqNgIAIAetQoCAgICQf4QhBCADrUKAgICAkH+EIQUMAQtCgICAgDAhBQJ+IARCgICAgHCDQoCAgIAwUQRAIABBLxApDAELIAAgBBAlCyIEQoCAgIBwg0KAgICA4ABRDQEgACAEIAYQuQMiBUKAgICAcINCgICAgOAAUQ0BCyAAIAI1AgBCgICAgJB\u002FhBAMIAAgAjUCBEKAgICAkH+EEAwgAiAFPgIEIAIgBD4CACAAIAFB1gBCABA5QQBIDQEgAUIgiKdBdUkNAiABpyIAIAAoAgBBAWo2AgAMAgsgACAEEAwgACAFEAwLQoCAgIDgAA8LIAELagEBfyABQv\u002F\u002F\u002F\u002F9vWARAIAAQIkKAgICA4AAPCwJ+IAGnIgMvAQZBEkcEQEKAgICAMCAAIAEgACgCKCkDkAEQTQ0BGiAAQRIQigNCgICAgOAADwsgAiADKAIkLQAQcUEAR61CgICAgBCECwu8BAEJfyMAQSBrIgckAAJAAkACQAJAAkAgAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECIMAQsgACABIAAoAigpA5ABEE0NAiAAIAEQ9QIiAg0BC0KAgICA4AAhAQwDCyACKAIAIggoAgQiAkH\u002F\u002F\u002F\u002F\u002FB3EiAw0BCyAAQdyLARBgIQEMAQsgACAHQQhqIAMgAkEfdhCZAxogCEEQaiEGIAgoAgRB\u002F\u002F\u002F\u002F\u002FwdxIQlBACEAA0ACQAJAIAAgCUgEQCAAQQFqIQJBfyEFAkACfwJAAkACQAJAAkACQAJAAn8gCCkCBEKAgICACIMiAVAiCkUEQCAGIABBAXRqLwEADAELIAAgBmotAAALIgNB2wBrDgMDAQIACyACIQACQCADQQprDgQECwsFAAsgA0EvRw0HIARFDQVBASEEQS8hAwwHC0HcACEDIAIgCU4NBiAAQQJqIQAgCkUEQCAGIAJBAXRqLwEAIQUMCgsgAiAGai0AACEFDAkLQQAhBEHdACEDDAULQdsAIQMgBCACIAlOcg0GIABBAmohACABUARAQd0AQX8gAiAGai0AAEHdAEYiBBshBSAAIAIgBBshAEEBIQQMCAtBASEEQd0AQX8gBiACQQF0ai8BAEHdAEYiChshBSAAIAIgChshAAwHC0HuAAwCC0HyAAwBC0EAIQRBLwshBUHcACEDCyACIQAMAgsgB0EIahA3IQEMAwsgAiEAQQEhBAsgB0EIaiICIAMQhwEaIAVBAEgNACACIAUQhwEaDAALAAsgB0EgaiQAIAEL\u002FwICA38BfiMAQRBrIgQkAAJAIAFC\u002F\u002F\u002F\u002F\u002F29YBEAgABAiQoCAgIDgACEFDAELQoCAgIDgACEFIAAgACABQakpEIcCECciAkEASA0AIAIEfyAEQeQAOgAIIARBCWoFIARBCGoLIQIgACAAIAFB7wAgAUEAEBEQJyIDQQBIDQAgAwRAIAJB5wA6AAAgAkEBaiECCyAAIAAgAUGS0gAQhwIQJyIDQQBIDQAgAwRAIAJB6QA6AAAgAkEBaiECCyAAIAAgAUGy0wAQhwIQJyIDQQBIDQAgAwRAIAJB7QA6AAAgAkEBaiECCyAAIAAgAUGPwwAQhwIQJyIDQQBIDQAgAwRAIAJB8wA6AAAgAkEBaiECCyAAIAAgAUHwACABQQAQERAnIgNBAEgNACADBEAgAkH1ADoAACACQQFqIQILIAAgACABQdcMEIcCECciA0EASA0AIAAgBEEIaiIAIAMEfyACQfkAOgAAIAJBAWoFIAILIABrEOoBIQULIARBEGokACAFC6QDAgN\u002FAX4jAEEgayIEJAACQCAAIAEQSiIBQoCAgIBwg0KAgICA4ABRDQACQAJAIAAgBCABAn9BACACRQ0AGkEAIAMpAwAiB0KAgICAcINCgICAgDBRDQAaAkAgACAEQQRqIAcQ3wEiAgRAAkAgAi0AAEHOAEcNACACLQABQcYARw0AIAJBA0ECIAItAAJBywBGIgMbai0AACIFQcMAa0H\u002FAXFBAUsNACAEKAIEIAJBA2ogAkECaiADGyACa0EBakYNAgsgACACEDEgAEGywABBABBECyAAIAEQDAwCCyAAIAIQMSAFIANBAXRqQcMAawsQ2gMhAyAAIAEQDCADQQBODQELQoCAgIDgACEBDAELIAQoAgAhBUKAgICA4AAhAQJAIAAgBEEIaiADED4NAEEAIQICQANAIAIgA0YNASACQQJ0IQYgAkEBaiECIARBCGogBSAGaigCABCxAUUNAAsgBCgCCCgCECICQRBqIAQoAgwgAigCBBEAAAwBCyAEQQhqEDchAQsgACgCECIAQRBqIAUgACgCBBEAAAsgBEEgaiQAIAELgQICA38BfgJAAkAgAkEATg0AIAGnKQMgIgpCgICAgHCDQoCAgICQf1INACACQf\u002F\u002F\u002F\u002F8HcSIIIAqnIgcpAgQiCqdB\u002F\u002F\u002F\u002F\u002FwdxTw0AAkBBBCAGEI8DRQ0AQQEhAiAGQYDAAHFFDQIgA0KAgICAcINCgICAgJB\u002FUg0AIAOnIgkpAgQiAUL\u002F\u002F\u002F\u002F\u002FB4NCAVINACAHQRBqIQcCfyAKQoCAgIAIg1BFBEAgByAIQQF0ai8BAAwBCyAHIAhqLQAACwJ\u002FIAFCgICAgAiDUEUEQCAJLwEQDAELIAktABALRg0CCyAAIAZB79gAEHwPCyAAIAEgAiADIAQgBSAGQYCACHIQaiECCyACC0YAAn8CQCACQQBODQAgAacpAyAiAUKAgICAcINCgICAgJB\u002FUg0AQQAgAkH\u002F\u002F\u002F\u002F\u002FB3EgAacoAgRB\u002F\u002F\u002F\u002F\u002FwdxSQ0BGgtBAQsLswEBAn8CQCADQQBODQAgAqcpAyAiAkKAgICAcINCgICAgJB\u002FUg0AIANB\u002F\u002F\u002F\u002F\u002FwdxIgMgAqciBCkCBCICp0H\u002F\u002F\u002F\u002F\u002FB3FPDQBBASEFIAFFDQAgBEEQaiEEAn8gAkKAgICACINQRQRAIAQgA0EBdGovAQAMAQsgAyAEai0AAAshAyABQQQ2AgAgACADQf\u002F\u002FA3EQlAMhAiABQoCAgIAwNwMYIAFCgICAgDA3AxAgASACNwMICyAFCx8BAn4gACgCACkDeCIDIAEoAgApA3giBFUgAyAEU2sLbwECfyABIAEoAgAiAkEBajYCACACRQRAIAEoAggiAiABKAIMIgM2AgQgAyACNgIAIAFBADYCCCAAKAJQIgIgAUEIaiIDNgIEIAEgAEHQAGo2AgwgASACNgIIIAAgAzYCUCABIAEtAARBD3E6AAQLC+sDAQN\u002FIwBBIGsiAiQAAkACQAJAAkAgBSgCACIDLQBXQQRrDgICAAELQoCAgIAwIQEgAy0AoAENAkH+OEGo7ABB9N8BQYzqABAAAAtBlf8AQajsAEH33wFBjOoAEAAACwJAAkAgAy0AoAFFBEAgAygCdEUNAUEAIQUgA0EANgJ0IAAgAxCOBSACQQA2AhwgAkIANwIUIAAgAyACQRRqEI0FIQggAigCFCEEIAhBAEgEQEKAgICA4AAhAQwDCyAEIAIoAhgiA0EEQcEAQQAQ1wEgA0EAIANBAEobIQcDQCAFIAdGBEBCgICAgDAhAQwEBQJAIAQgBUECdGooAgAiAygCVCIGQYCAgHhxQYCAgChGBEAgAy0AoAENAUHnOEGo7ABBjeABQYzqABAAAAsgBkH\u002FAXEEQCAAIAMQkAUMAQsgACADIAJBCGoiBhCPBUEASARAIAMgAygCAEEBajYCACACIAOtQoCAgIBQhCIBNwMAIAAgASAFIAYgBSACENsDGiAAIAEQDCAAIAIpAwgQDAwBCyAAIAMQjgULIAVBAWohBQwBCwALAAtB\u002FThBqOwAQfjfAUGM6gAQAAALQY07QajsAEH53wFBjOoAEAAACyAAKAIQIgBBEGogBCAAKAIEEQAACyACQSBqJAAgAQvQAgIDfgJ\u002FIwBBEGsiBiQAIAFBBUYEQCACKQMQIQQgACACKQMYEOQBIQcgBiACKQMgIgM3AwgCfwJAAkAgBEKAgICAcINCgICAgDBRBEAgA0IgiKchASAHBEAgAUF1TwRAIAOnIgEgASgCAEEBajYCAAsgACADEJgBDAMLIAFBdUkNASADpyIBIAEoAgBBAWo2AgAMAQsgACAEQoCAgIAwQQEgBkEIahAcIQMLIAYgAzcDAEEAIANCgICAgHCDQoCAgIDgAFINARoLIAAoAhAiASkDgAEhAyABQoCAgIAgNwOAASAGIAM3AwBBAQshAUKAgICAMCEEIAAgAiABQQN0aikDACIFQoCAgIBwg0KAgICAMFIEfiAAIAVCgICAgDBBASAGEBwhBCAGKQMABSADCxAMIAZBEGokACAEDwtByYEBQajsAEHn9AJBi+0AEAAAC2kBAn8gAacoAhAiAEEwaiEDIAAgACgCGCACcUF\u002Fc0ECdGooAgAhAANAAkAgAEUEQEEAIQAMAQsgAyAAQQN0aiIEQQhrIQAgBEEEaygCACACRg0AIAAoAgBB\u002F\u002F\u002F\u002FH3EhAAwBCwsgAEEARwtDAAJ8IAG9QoCAgICAgID4\u002FwCDQoCAgICAgID4\u002FwBRBEBEAAAAAAAA+H8gAJlEAAAAAAAA8D9hDQEaCyAAIAEQowMLC2kBA38jAEEQayIHJAACfwJAIAGnIggtAAVBCHFFDQAgACAHQQxqIAIQpQFFDQAgBygCDCAIKAIoTw0AQX8gACAIEI4DDQEaCyAAIAEgAiADIAQgBSAGQYCACHIQagshCSAHQRBqJAAgCQsPACABIAEoAgBBAWo2AgALXAECfiACIAAoAgAQKSEDQQAhACADQoCAgIBwg0KAgICA4ABRIAIgASgCABApIgRCgICAgHCDQoCAgIDgAFFyRQRAIAOnIASnELwCIQALIAIgAxAMIAIgBBAMIAALawEBfgJAAkACQAJAAkAgAy0ABSIBDgQDAgIAAQsgACADKAIIEPsEDwsgAUEIRg0CCxABAAsgACADKAIMIAMoAgAgAy0ACCADLQAJIAMuAQYQggEPCyAAIAAQMyIEIAMoAgggAygCDBAfIAQLCQAgACADEPYCC1MBAX4gABAzIgRCgICAgHCDQoCAgIDgAFIEQCABIAEoAgBBAWo2AgAgACAEQT0gAa1CgICAgHCEQQMQFUEATgRAIAQPCyAAIAQQDAtCgICAgOAAC18BAX8CQCABRQRAIAJFDQEgACACEJsFDwsgAkUEQCAAIAAoAgBBAWs2AgAgACAAKAIEQQhrNgIEIAEQ1AEMAQsgACgCCCAAKAIEIAJqTwR\u002FIAEgAhD4BQVBAAsPC0EACyYAIAEEQCAAIAAoAgBBAWs2AgAgACAAKAIEQQhrNgIEIAEQ1AELCyUBAX8CQCABpygCICIDRQ0AIAMoAgQiA0UNACAAIAMgAhEAAAsLPwEBfwJAIAFCgICAgHBUDQAgAaciAi8BBkErRw0AIAIoAiAiAkUNACAAIAIQ5wMgAEEQaiACIAAoAgQRAAALC0cBAX8CQCABpygCICIDRQ0AIAMpAwAiAUKAgICAYFoEQCAAIAGnIAIRAAALIAMpAwgiAUKAgICAYFQNACAAIAGnIAIRAAALCzABAX8gAacoAiAiAgRAIAAgAikDABAhIAAgAikDCBAhIABBEGogAiAAKAIEEQAACwsnAQF\u002FIAGnKAIgIgIEQCAAIAIpAwAQISAAQRBqIAIgACgCBBEAAAsLWgECfyABpygCICICBEACQCACKQMAIgFCgICAgHBUDQAgAactAAVBAnENACACKAIMIgNFDQAgACADEOIDIAIpAwAhAQsgACABECEgAEEQaiACIAAoAgQRAAALC3gBA38CQCABpygCICIERQ0AIARBCGohAyAEQQRqIQUDQCADKAIAIgMgBUYNAQJAIAQoAgANACADKQMQIgFCgICAgGBUDQAgACABpyACEQAACyADKQMYIgFCgICAgGBaBEAgACABpyACEQAACyADQQRqIQMMAAsACwuaAQEHfyABpygCICIDBEAgAEEQaiEEIANBBGohBiADKAIIIQIDQCACIAZHBEAgAigCBCEIIAJBEGshBSACQQxrKAIARQRAAkAgAygCAARAIAUQnAUMAQsgACACKQMQECELIAAgAikDGBAhCyAEIAUgACgCBBEAACAIIQIMAQsLIAQgAygCECAAKAIEEQAAIAQgAyAAKAIEEQAACwsbAQF\u002FIAGnKAIgIgMEQCAAIAMoAgwgAhEAAAsLUgEDfyABpygCICICBEAgAigCBCIDBEAgAigCACIEIAM2AgQgAyAENgIAIAJCADcCAAsgACACNQIMQoCAgIBwhBAhIABBEGogAiAAKAIEEQAACwupAQEGfyABpygCICIDBEAgA0EMaiEFIAMoAhAhAgNAIAIgBUcEQCACKAIEIQcgAkIANwIAIAIoAgghBCAHIQIgBC8BBkEgRg0BIARCADcCJAwBCwsCQAJAIAMtAAVFDQAgACgCyAEiAkUNACAAKALQASADKAIIIAIRAAAMAQsgAygCGCICRQ0AIAAgAygCFCADKAIIIAIRBgALIABBEGogAyAAKAIEEQAACwspAQF\u002FIAAgAaciAjUCJEKAgICAkH+EECEgACACNQIgQoCAgICQf4QQIQshACABpygCICkDACIBQoCAgIBgWgRAIAAgAacgAhEAAAsLaQEDfyAAIAGnKAIgIgIpAwAQISACLQARRQRAA0AgAigCFCEEIAMgAigCDE9FBEAgACAEIANBA3RqKAIEEMcBIANBAWohAwwBCwsgAEEQaiAEIAAoAgQRAAALIABBEGogAiAAKAIEEQAAC2wBA38CQCABQoCAgIBwVA0AIAGnIgMvAQZBD0cNACADKAIgIgRFDQAgBEEIaiEFQQAhAwNAIAMgBC0ABU8NASAFIANBA3RqKQMAIgFCgICAgGBaBEAgACABpyACEQAACyADQQFqIQMMAAsACwtqAQN\u002FAkAgAUKAgICAcFQNACABpyICLwEGQQ9HDQAgAigCICIDRQ0AIANBCGohBEEAIQIDQCACIAMtAAVPRQRAIAAgBCACQQN0aikDABAhIAJBAWohAgwBCwsgAEEQaiADIAAoAgQRAAALC38BA38gAacoAiAiBCkDACIBQoCAgIBgWgRAIAAgAacgAhEAAAsgBCkDCCIBQoCAgIBgWgRAIAAgAacgAhEAAAsgBEEYaiEFA0AgBCgCECADSgRAIAUgA0EDdGopAwAiAUKAgICAYFoEQCAAIAGnIAIRAAALIANBAWohAwwBCwsLWQEDfyAAIAGnKAIgIgIpAwAQISAAIAIpAwgQISACQRhqIQQDQCADIAIoAhBORQRAIAAgBCADQQN0aikDABAhIANBAWohAwwBCwsgAEEQaiACIAAoAgQRAAALcgEEfyABpyIDKAIgIQQgAygCJCEFIAMoAigiAwRAIAAgAyACEQAACyAEBEACQCAFRQ0AQQAhAwNAIAMgBCgCPE4NASAFIANBAnRqKAIAIgYEQCAAIAYgAhEAAAsgA0EBaiEDDAALAAsgACAEIAIRAAALC3wBA38gAaciAigCKCIDBEAgACADrUKAgICAcIQQIQsgAigCICIDBEAgAigCJCIEBEBBACECA0AgAiADKAI8TkUEQCAAIAQgAkECdGooAgAQ5QEgAkEBaiECDAELCyAAQRBqIAQgACgCBBEAAAsgACADrUKAgICAYIQQIQsLEgAgAacoAiAiAARAIAAQngMLCx4AIAGnKQMgIgFCgICAgGBaBEAgACABpyACEQAACwsZACAAIAGnIgApAyAQISAAQoCAgIAwNwMgC0QBAn8gAachBANAIAQoAiggA0sEQCAEKAIkIANBA3RqKQMAIgFCgICAgGBaBEAgACABpyACEQAACyADQQFqIQMMAQsLC0YBA38gAachAwNAIAMoAiQhBCACIAMoAihPRQRAIAAgBCACQQN0aikDABAhIAJBAWohAgwBCwsgAEEQaiAEIAAoAgQRAAALEQAgAEEQaiACIAAoAgQRAAAL2wECAX8CfiMAQSBrIgMkACABQQNGBEAgAikDECEEIAIpAwghBQJAIAAgA0EQaiACKQMAEKoFQQBIBEBCgICAgOAAIQQMAQsgACAEIAVBAiADQRBqEBwiBEKAgICAcINCgICAgOAAUQRAIAAoAhAiASkDgAEhBCABQoCAgIAgNwOAASADIAQ3AwggACADKQMYQoCAgIAwQQEgA0EIahAcIQQgACADKQMIEAwLIAAgAykDEBAMIAAgAykDGBAMCyADQSBqJAAgBA8LQZuCAUGo7ABBy\u002FUCQaDtABAAAAuIAQIBfgF\u002FQQAhAkKAgICAMCEBA0ACQCACQQJHBH4gBSACQQN0IgRqIgc1AgRCIIZCgICAgDBRDQEgAEGyHEEAEBJCgICAgOAABUKAgICAMAsPCyADIARqKQMAIgZCIIinQXVPBEAgBqciBCAEKAIAQQFqNgIACyAHIAY3AwAgAkEBaiECDAALAAuVAQAjAEEQayICJAAgAiAAIAUoAhAQ9gIiATcDCAJAIAFCgICAgHCDQoCAgIDgAFEEQCAAKAIQIgMpA4ABIQEgA0KAgICAIDcDgAEgAiABNwMAIAAgAUEBIAIgAiAFELgFGgwBCyAAIAAgBSkDAEKAgICAMEEBIAJBCGoQHBAMIAAgAikDCBAMCyACQRBqJABCgICAgDALwQMCAn4BfyMAQSBrIgUkAAJAAkAgACABQSgQWiICRQ0AQoCAgIAwIQECQCACKQMAIgZCgICAgHCDQoCAgIAwUgRAAn8CQCAGpyIDLwEGQRVrQf\u002F\u002FA3FBCk0EQCADKAIgKAIMKAIgLQAERQ0BIAAQXwwFCyAAIAVBHGoiAyAGEMoBDQQgAwwBCyADQShqCyEIIAIoAgwiAyAIKAIASQ0BIAAgAikDABAMIAJCgICAgDA3AwALIARBATYCAAwCCyACIANBAWo2AgwgBEEANgIAIAIoAghFBEAgA0EATgRAIAOtIQEMAwtCgICAgMB+IAO4vSIBQoCAgIDAgYD8\u002FwB9IAFCgICAgICAgPj\u002FAFYbIQEMAgtCgICAgOAAIQEgACACKQMAIAMQpgEiBkKAgICAcINCgICAgOAAUQ0BIAIoAghBAUYEQCAGIQEMAgsgBSAGNwMIIAUgA0EATgR+IAOtBUKAgICAwH4gA7i9IgFCgICAgMCBgPz\u002FAH0gAUKAgICAgICA+P8AVhsLIgc3AwAgAEECIAUQ\u002FQIhASAAIAYQDCAAIAcQDAwBCyAEQQA2AgBCgICAgOAAIQELIAVBIGokACABC\u002FcBAgl\u002FAX4jACIHIQwgAacoAiAiCSgCECIIQQAgCEEAShshCiAJQRhqIQ0gByADIAhqIgtBA3RBD2pBcHFrIgckAAN+IAYgCkYEfkEAIQYgA0EAIANBAEobIQMgByAIQQN0aiEIA0AgAyAGRkUEQCAIIAZBA3QiCmogBCAKaikDADcDACAGQQFqIQYMAQsLAn4gBUEBcQRAIAAgASACEE0hAyAAIAkpAwAiASABIAIgAxsgCyAHEP4CDAELIAAgCSkDACAJKQMIIAsgBxAcCyEPIAwkACAPBSAHIAZBA3QiDmogDSAOaikDADcDACAGQQFqIQYMAQsLC7EBACAAQQgQXCIFBEAgBUEANgIAIAUgACABIAIgAyAEEOwDIgM2AgQCQCADRQRAIAVBBDYCAAwBCyAAIAMQsQIiAkKAgICAcINCgICAgOAAUQ0AIAAgAhAMIAAgAUErEF4iAUKAgICAcINCgICAgOAAUQ0AIAFCgICAgHBaBEAgAacgBTYCIAsgAQ8LIAAoAhAgBRDnAyAAKAIQIgBBEGogBSAAKAIEEQAAC0KAgICA4AAL+gMCBH8EfiMAQRBrIgEkAAJAAkAgAikDECIHQoCAgIBwg0KAgICAkH9SBEAgAEGBjAFBABASDAELIAIpAxghCCAAIAcQqAEiBUUEQEEAIQUMAQsgACAIEKgBIgZFDQAjAEEwayIDJAACQAJAAkAgACAFIAYQuQUiBEUNACAAIAQQ+QNBAEgEQCAAQQEQ9gUMAQsgBCAEKAIAQQFqNgIAIAAgBK1CgICAgFCEIgcgACkDwAFBAEEAELcFIghCgICAgHCDQoCAgIDgAFINAQsgACgCECIEKQOAASEHIARCgICAgCA3A4ABIAMgBzcDACAAIAAgAikDCEKAgICAMEEBIAMQHBAMIAAgAykDABAMDAELIAQgBCgCAEEBajYCACADIAIpAwA3AwAgAikDCCEJIAMgBzcDECADIAk3AwggAyAAQTlBAEEAQQMgAxCFASIJNwMgIAMgAEE6QQBBAEEDIAMQhQEiCjcDKCAAIAcQDCAAIAAgCCAAIANBIGoQ+AMQDCAAIAkQDCAAIAoQDCAAIAgQDAsgA0EwaiQAIAAgBhAxDAELIAAoAhAiAykDgAEhByADQoCAgIAgNwOAASABIAc3AwggACAAIAIpAwhCgICAgDBBASABQQhqEBwQDCAAIAEpAwgQDAsgACAFEDEgAUEQaiQAQoCAgIAwC9MGAgl\u002FAXwjAEFAaiIGJAAgAaciCC0AKSELIAgtACghCSAGIAAoAhAiDCgCjAE2AhAgDCAGQRBqNgKMASAIKAIgIQcgBiADNgI0IAYgATcDGCAGQQA2AjgCQCADIAlOBEAgBCEADAELIANBACADQQBKGyENIAYgCUEDdEEPakHwH3FrIgAkAANAIAogDUYEQCADIQQDQCAEIAlGRQRAIAAgBEEDdGpCgICAgDA3AwAgBEEBaiEEDAELCyAGIAk2AjQFIAAgCkEDdCIOaiAEIA5qKQMANwMAIApBAWohCgwBCwsLIAYgADYCICAIKAIkIQQCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgCw4NCwIAAQABBwgDBAUGCQoLIAVBAXENCkKAgICAMCECIAtBAkcNCgwLCyAFQQFxDQBCgICAgDAhAiALQQNGDQoLIAcgAiADIAAgCC4BKiAEEQQAIQEMCwsgByACIAQRCAAhAQwKCyAHIAIgACkDACAEERgAIQEMCQsgByACIAguASogBBEQACEBDAgLIAcgAiAAKQMAIAguASogBBEoACEBDAcLIAcgBkEIaiAAKQMAEEINBSAGKwMIIAQRCgAiD70iAQJ\u002FIA+ZRAAAAAAAAOBBYwRAIA+qDAELQYCAgIB4CyIAt71RBEAgAK0hAQwHC0KAgICAwH4gAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGyEBDAYLQoCAgIDgACEBIAcgBkEIaiAAKQMAEEINBSAHIAYgACkDCBBCDQUgBisDCCAGKwMAIAQRHQAiD70iAQJ\u002FIA+ZRAAAAAAAAOBBYwRAIA+qDAELQYCAgIB4CyIAt71RBEAgAK0hAQwGC0KAgICAwH4gAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGyEBDAULIAcgAiADIAAgBkEIaiAILgEqIAQREQAiAUKAgICAcINCgICAgOAAUQ0EIAYoAggiAEECRg0EIAcgASAAEIIDIQEMBAsQAQALIAcgAiADIAAgBBECACEBDAILIAdBmRFBABASC0KAgICA4AAhAQsgDCAGKAIQNgKMASAGQUBrJAAgAQvVAQEGfyMAIgUhCwJAIAFCgICAgHBUDQAgAaciBi8BBkEPRw0AIAYoAiAhBwsgACACIAMgAyAHLQAEIgBIBH9BACEGIANBACADQQBKGyEJIAUgAEEDdEEPakHwH3FrIgUkAAN\u002FIAYgCUYEfyADIQQDfyAAIARGBH8gBQUgBSAEQQN0akKAgICAMDcDACAEQQFqIQQMAQsLBSAFIAZBA3QiCmogBCAKaikDADcDACAGQQFqIQYMAQsLBSAECyAHLwEGIAdBCGogBygCABERACEBIAskACABCw4AIAAQqwJCgICAgOAACwkAQoCAgIDAfgsPACAAIAMQDCAAEKsCQX8LFQAgACADEAwgACAEEAwgABCrAkF\u002FC2gBAX8jAEEQayIDJAAgASgCBCEBIAIgA0EMaiAAKAIEEKUBQQAgAiADQQhqIAEQpQEbRQRAQcszQajsAEGuOkG2NxAAAAsgAygCCCEAIAMoAgwhASADQRBqJABBfyAAIAFHIAAgAUsbCw4AIAAQqwJCgICAgOAACwkAIAAQqwJBfwsQACMAIABrQXBxIgAkACAACwYAIAAkAAsEACMAC6gBAQV\u002FIAAoAlQiAygCACEFIAMoAgQiBCAAKAIUIAAoAhwiB2siBiAEIAZJGyIGBEAgBSAHIAYQHhogAyADKAIAIAZqIgU2AgAgAyADKAIEIAZrIgQ2AgQLIAQgAiACIARLGyIEBEAgBSABIAQQHhogAyADKAIAIARqIgU2AgAgAyADKAIEIARrNgIECyAFQQA6AAAgACAAKAIsIgE2AhwgACABNgIUIAILKQAgASABKAIAQQdqQXhxIgFBEGo2AgAgACABKQMAIAEpAwgQ8wU5AwALpBgDE38BfAJ+IwBBsARrIgwkACAMQQA2AiwCQCABvSIaQgBTBEBBASEPQbMQIRMgAZoiAb0hGgwBCyAEQYAQcQRAQQEhD0G2ECETDAELQbkQQbQQIARBAXEiDxshEyAPRSEVCwJAIBpCgICAgICAgPj\u002FAINCgICAgICAgPj\u002FAFEEQCAAQSAgAiAPQQNqIgMgBEH\u002F\u002F3txEF0gACATIA8QVyAAQZDAAEHi9AAgBUEgcSIFG0H7ywBBxvgAIAUbIAEgAWIbQQMQVyAAQSAgAiADIARBgMAAcxBdIAMgAiACIANIGyEJDAELIAxBEGohEgJAAn8CQCABIAxBLGoQ\u002FgUiASABoCIBRAAAAAAAAAAAYgRAIAwgDCgCLCIGQQFrNgIsIAVBIHIiDkHhAEcNAQwDCyAFQSByIg5B4QBGDQIgDCgCLCEKQQYgAyADQQBIGwwBCyAMIAZBHWsiCjYCLCABRAAAAAAAALBBoiEBQQYgAyADQQBIGwshCyAMQTBqQaACQQAgCkEAThtqIg0hBwNAIAcCfyABRAAAAAAAAPBBYyABRAAAAAAAAAAAZnEEQCABqwwBC0EACyIDNgIAIAdBBGohByABIAO4oUQAAAAAZc3NQaIiAUQAAAAAAAAAAGINAAsCQCAKQQBMBEAgCiEDIAchBiANIQgMAQsgDSEIIAohAwNAQR0gAyADQR1OGyEDAkAgB0EEayIGIAhJDQAgA60hG0IAIRoDQCAGIBpC\u002F\u002F\u002F\u002F\u002Fw+DIAY1AgAgG4Z8IhogGkKAlOvcA4AiGkKAlOvcA359PgIAIAZBBGsiBiAITw0ACyAapyIGRQ0AIAhBBGsiCCAGNgIACwNAIAggByIGSQRAIAZBBGsiBygCAEUNAQsLIAwgDCgCLCADayIDNgIsIAYhByADQQBKDQALCyADQQBIBEAgC0EZakEJbkEBaiEQIA5B5gBGIREDQEEJQQAgA2siAyADQQlOGyEJAkAgBiAITQRAIAgoAgBFQQJ0IQcMAQtBgJTr3AMgCXYhFEF\u002FIAl0QX9zIRZBACEDIAghBwNAIAcgAyAHKAIAIhcgCXZqNgIAIBYgF3EgFGwhAyAHQQRqIgcgBkkNAAsgCCgCAEVBAnQhByADRQ0AIAYgAzYCACAGQQRqIQYLIAwgDCgCLCAJaiIDNgIsIA0gByAIaiIIIBEbIgcgEEECdGogBiAGIAdrQQJ1IBBKGyEGIANBAEgNAAsLQQAhAwJAIAYgCE0NACANIAhrQQJ1QQlsIQNBCiEHIAgoAgAiCUEKSQ0AA0AgA0EBaiEDIAkgB0EKbCIHTw0ACwsgCyADQQAgDkHmAEcbayAOQecARiALQQBHcWsiByAGIA1rQQJ1QQlsQQlrSARAIAxBMGpBBEGkAiAKQQBIG2ogB0GAyABqIglBCW0iEUECdGoiEEGAIGshCkEKIQcgCSARQQlsayIJQQdMBEADQCAHQQpsIQcgCUEBaiIJQQhHDQALCwJAIAooAgAiESARIAduIhQgB2xrIglFIBBB\u002FB9rIhYgBkZxDQACQCAUQQFxRQRARAAAAAAAAEBDIQEgB0GAlOvcA0cgCCAKT3INASAQQYQgay0AAEEBcUUNAQtEAQAAAAAAQEMhAQtEAAAAAAAA4D9EAAAAAAAA8D9EAAAAAAAA+D8gBiAWRhtEAAAAAAAA+D8gCSAHQQF2IhRGGyAJIBRJGyEZAkAgFQ0AIBMtAABBLUcNACAZmiEZIAGaIQELIAogESAJayIJNgIAIAEgGaAgAWENACAKIAcgCWoiAzYCACADQYCU69wDTwRAA0AgCkEANgIAIAggCkEEayIKSwRAIAhBBGsiCEEANgIACyAKIAooAgBBAWoiAzYCACADQf+T69wDSw0ACwsgDSAIa0ECdUEJbCEDQQohByAIKAIAIglBCkkNAANAIANBAWohAyAJIAdBCmwiB08NAAsLIApBBGoiByAGIAYgB0sbIQYLA0AgBiIHIAhNIglFBEAgBkEEayIGKAIARQ0BCwsCQCAOQecARwRAIARBCHEhCgwBCyADQX9zQX8gC0EBIAsbIgYgA0ogA0F7SnEiChsgBmohC0F\u002FQX4gChsgBWohBSAEQQhxIgoNAEF3IQYCQCAJDQAgB0EEaygCACIORQ0AQQohCUEAIQYgDkEKcA0AA0AgBiIKQQFqIQYgDiAJQQpsIglwRQ0ACyAKQX9zIQYLIAcgDWtBAnVBCWwhCSAFQV9xQcYARgRAQQAhCiALIAYgCWpBCWsiBkEAIAZBAEobIgYgBiALShshCwwBC0EAIQogCyADIAlqIAZqQQlrIgZBACAGQQBKGyIGIAYgC0obIQsLQX8hCSALQf3\u002F\u002F\u002F8HQf7\u002F\u002F\u002F8HIAogC3IiERtKDQEgCyARQQBHakEBaiEOAkAgBUFfcSIVQcYARgRAIAMgDkH\u002F\u002F\u002F\u002F\u002FB3NKDQMgA0EAIANBAEobIQYMAQsgEiADIANBH3UiBnMgBmutIBIQkQIiBmtBAUwEQANAIAZBAWsiBkEwOgAAIBIgBmtBAkgNAAsLIAZBAmsiECAFOgAAIAZBAWtBLUErIANBAEgbOgAAIBIgEGsiBiAOQf\u002F\u002F\u002F\u002F8Hc0oNAgsgBiAOaiIDIA9B\u002F\u002F\u002F\u002F\u002FwdzSg0BIABBICACIAMgD2oiBSAEEF0gACATIA8QVyAAQTAgAiAFIARBgIAEcxBdAkACQAJAIBVBxgBGBEAgDEEQaiIGQQhyIQMgBkEJciEKIA0gCCAIIA1LGyIJIQgDQCAINQIAIAoQkQIhBgJAIAggCUcEQCAGIAxBEGpNDQEDQCAGQQFrIgZBMDoAACAGIAxBEGpLDQALDAELIAYgCkcNACAMQTA6ABggAyEGCyAAIAYgCiAGaxBXIAhBBGoiCCANTQ0ACyARBEAgAEGGiAFBARBXCyALQQBMIAcgCE1yDQEDQCAINQIAIAoQkQIiBiAMQRBqSwRAA0AgBkEBayIGQTA6AAAgBiAMQRBqSw0ACwsgACAGQQkgCyALQQlOGxBXIAtBCWshBiAIQQRqIgggB08NAyALQQlKIRggBiELIBgNAAsMAgsCQCALQQBIDQAgByAIQQRqIAcgCEsbIQkgDEEQaiIGQQhyIQMgBkEJciENIAghBwNAIA0gBzUCACANEJECIgZGBEAgDEEwOgAYIAMhBgsCQCAHIAhHBEAgBiAMQRBqTQ0BA0AgBkEBayIGQTA6AAAgBiAMQRBqSw0ACwwBCyAAIAZBARBXIAZBAWohBiAKIAtyRQ0AIABBhogBQQEQVwsgACAGIA0gBmsiBiALIAYgC0gbEFcgCyAGayELIAdBBGoiByAJTw0BIAtBAE4NAAsLIABBMCALQRJqQRJBABBdIAAgECASIBBrEFcMAgsgCyEGCyAAQTAgBkEJakEJQQAQXQsgAEEgIAIgBSAEQYDAAHMQXSAFIAIgAiAFSBshCQwBCyATIAVBGnRBH3VBCXFqIQgCQCADQQtLDQBBDCADayEGRAAAAAAAADBAIRkDQCAZRAAAAAAAADBAoiEZIAZBAWsiBg0ACyAILQAAQS1GBEAgGSABmiAZoaCaIQEMAQsgASAZoCAZoSEBCyASIAwoAiwiBiAGQR91IgZzIAZrrSASEJECIgZGBEAgDEEwOgAPIAxBD2ohBgsgD0ECciELIAVBIHEhDSAMKAIsIQcgBkECayIKIAVBD2o6AAAgBkEBa0EtQSsgB0EASBs6AAAgBEEIcSEGIAxBEGohBwNAIAciBQJ\u002FIAGZRAAAAAAAAOBBYwRAIAGqDAELQYCAgIB4CyIHQfDRBGotAAAgDXI6AAAgBiADQQBKckUgASAHt6FEAAAAAAAAMECiIgFEAAAAAAAAAABhcSAFQQFqIgcgDEEQamtBAUdyRQRAIAVBLjoAASAFQQJqIQcLIAFEAAAAAAAAAABiDQALQX8hCUH9\u002F\u002F\u002F\u002FByALIBIgCmsiBmoiDWsgA0gNACAAQSAgAiANIANBAmogByAMQRBqIgdrIgUgBUECayADSBsgBSADGyIJaiIDIAQQXSAAIAggCxBXIABBMCACIAMgBEGAgARzEF0gACAHIAUQVyAAQTAgCSAFa0EAQQAQXSAAIAogBhBXIABBICACIAMgBEGAwABzEF0gAyACIAIgA0gbIQkLIAxBsARqJAAgCQsFACAAnQvNAQIBfAF\u002FAkAgAJkiAb1CIIinIgJB66eG\u002FwNPBEAgAkGBgNCBBE8EQEQAAAAAAAAAgCABo0QAAAAAAADwP6AhAQwCC0QAAAAAAADwP0QAAAAAAAAAQCABIAGgEJMCRAAAAAAAAABAoKOhIQEMAQsgAkGvscH+A08EQCABIAGgEJMCIgEgAUQAAAAAAAAAQKCjIQEMAQsgAkGAgMAASQ0AIAFEAAAAAAAAAMCiEJMCIgGaIAFEAAAAAAAAAECgoyEBCyABmiABIAC9QgBTGwuEAQECfyMAQRBrIgEkAAJAIAC9QiCIp0H\u002F\u002F\u002F\u002F\u002FB3EiAkH7w6T\u002FA00EQCACQYCAgPIDSQ0BIABEAAAAAAAAAABBABD\u002FBSEADAELIAJBgIDA\u002FwdPBEAgACAAoSEADAELIAAgARCbBCECIAErAwAgASsDCCACQQFxEP8FIQALIAFBEGokACAAC8EDAgN\u002FAX4jAEEgayICJAACQAJAIAFCgICAgHCDQoCAgIAwUgRAIABBnSxBABASDAELIAMpAwAiAUIgiKdBdU8EQCABpyIDIAMoAgBBAWo2AgALAkACQANAAkACQAJAAkBBByABQiCIpyIDIANBB2tBbkkbIgNBCmoODAgFBQEFBQUFBQIAAAMLIAAgAcQQvwIhAQwHCyAAIAEQnwUhAQwGCyAAIAFBARCSASIBQoCAgIBwg0KAgICA4ABSDQEMBQsLIANBB0YNAQsgACABEAwgAEHdGUEAEBIMAQsCQCAAIAJBDGogARCtAiIDRQ0AAn4gAygCCEH+\u002F\u002F\u002F\u002FB04EQCAAIAEQDCAAQbQZQQAQREKAgICA4AAMAQsgABDiASIHQoCAgIBwg0KAgICA4ABRDQEgB6dBBGoiBCADEEkhBSAEQQEQ7wEhBiAAIAEQDCAGIAVyIgRBIHEEQCAAIAcQDCAAEHBCgICAgOAADAELIARBEHEEQCAAIAcQDCAAQfAzQQAQREKAgICA4AAMAQsgBxCvAgshASADIAJBDGoiAEcNAiAAEBkMAgsgACABEAwLQoCAgIDgACEBCyACQSBqJAAgAQsEAEIAC9gCAQh\u002FIwBBIGsiAyQAIAMgACgCHCIENgIQIAAoAhQhBSADIAI2AhwgAyABNgIYIAMgBSAEayIBNgIUIAEgAmohBSADQRBqIQFBAiEHAn8CQAJAAkAgACgCPCABQQIgA0EMahACEPoFBEAgASEEDAELA0AgBSADKAIMIgZGDQIgBkEASARAIAEhBAwECyABIAYgASgCBCIISyIJQQN0aiIEIAYgCEEAIAkbayIIIAQoAgBqNgIAIAFBDEEEIAkbaiIBIAEoAgAgCGs2AgAgBSAGayEFIAAoAjwgBCIBIAcgCWsiByADQQxqEAIQ+gVFDQALCyAFQX9HDQELIAAgACgCLCIBNgIcIAAgATYCFCAAIAEgACgCMGo2AhAgAgwBCyAAQQA2AhwgAEIANwMQIAAgACgCAEEgcjYCAEEAIAdBAkYNABogAiAEKAIEawshCiADQSBqJAAgCgsLACAAIAFBChCiBQsFACAAnwuLAQICfAF\u002FRAAAAAAAAOA\u002FIACmIQICQCAAmSIBvUIgiKciA0HB3JiEBE0EQCABEJMCIQEgA0H\u002F\u002F7\u002F\u002FA00EQCADQYCAwPIDSQ0CIAIgASABoCABIAGiIAFEAAAAAAAA8D+go6GiDwsgAiABIAEgAUQAAAAAAADwP6CjoKIPCyABIAIgAqAQjgYhAAsgAAvHAQICfwF8IwBBEGsiASQAAkAgAL1CIIinQf\u002F\u002F\u002F\u002F8HcSICQfvDpP8DTQRAIAJBgIDA8gNJDQEgAEQAAAAAAAAAAEEAEMsCIQAMAQsgAkGAgMD\u002FB08EQCAAIAChIQAMAQsgACABEJsEIQIgASsDCCEAIAErAwAhAwJAAkACQAJAIAJBA3EOAwABAgMLIAMgAEEBEMsCIQAMAwsgAyAAEMwCIQAMAgsgAyAAQQEQywKaIQAMAQsgAyAAEMwCmiEACyABQRBqJAAgAAvnAwMGfAF+A38CQAJAAkACQCAAvSIHQgBZBEAgB0IgiKciCEH\u002F\u002Fz9LDQELIAC9Qv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDUARARAAAAAAAAPC\u002FIAAgAKKjDwsgB0IAWQ0BIAAgAKFEAAAAAAAAAACjDwsgCEH\u002F\u002F7\u002F\u002FB0sNAkGAgMD\u002FAyEJQYF4IQogCEGAgMD\u002FA0cEQCAIIQkMAgsgB6cNAUQAAAAAAAAAAA8LIABEAAAAAAAAUEOivSIHQiCIpyEJQct3IQoLIAogCUHiviVqIghBFHZqtyIFRABgn1ATRNM\u002FoiIBIAdC\u002F\u002F\u002F\u002F\u002Fw+DIAhB\u002F\u002F8\u002FcUGewZr\u002FA2qtQiCGhL9EAAAAAAAA8L+gIgAgACAARAAAAAAAAOA\u002FoqIiA6G9QoCAgIBwg78iBEQAACAVe8vbP6IiAqAiBiACIAEgBqGgIAAgAEQAAAAAAAAAQKCjIgEgAyABIAGiIgIgAqIiASABIAFEn8Z40Amawz+iRK94jh3Fccw\u002FoKJEBPqXmZmZ2T+goiACIAEgASABRERSPt8S8cI\u002FokTeA8uWZEbHP6CiRFmTIpQkSdI\u002FoKJEk1VVVVVV5T+goqCgoiAAIAShIAOhoCIARAAAIBV7y9s\u002FoiAFRDYr8RHz\u002Flk9oiAAIASgRNWtmso4lLs9oqCgoKAhAAsgAAvEDgIQfwF+IAAQ4gEiFUKAgICAcINCgICAgOAAUgR+IwBBEGsiAyQAIBWnQQRqIQsjAEEwayIGJAAgA0EANgIMIAYgASIENgIsAkACQAJAIAIiCkERSCICBEAgAUGQwAAgBkEsahCvBA0BIAYoAiwhBAsCQAJAAkAgBC0AACIFQStrDgMBAgACC0EBIQ8LIAYgBEEBaiIBNgIsIAQtAAEhBSABIQQLAkACQAJAAn8CQCAFQf8BcUEwRgRAAkACQCAELQABIgFB+ABHBEAgAUHvAEYNAiABQdgARw0BCyAKQW9xRQRAIAYgBEECajYCLEEQDAULIAFB7wBGDQEgCkUhCAwDCyAKRSEIIAogAUHPAEdyDQIMBQsgCg0FDAQLIAJFDQIgBEH7ywAgBkEsahCvBEUNAiALIA8Qf0EAIQUMBwsCQCABQeIARwRAIAggAUHCAEZxDQEMAwsgCEUNAgsMAgshCiAELQACEIwBIApPDQMMAgsgCg0BC0EKIQoLAn8gCiAKQQFrIgFxBEAgCygCACEBIAZCADcCICAGQoCAgICAgICAgH83AhggBiABNgIUIAZBFGoMAQtBICABZ2tBACAKQQJPGyEMIAsLIQ0gBigCLCEFA0AgBS0AAEEwRgRAIAYgBUEBaiIFNgIsDAELC0EgIQIgDEUEQCAKQb7+AWotAAAhAgsgDUEBEFAaIAZBADYCKCACIQFBACEFAkACQAJAAkADQAJAAkAgBigCLCIILQAAIhFBLkcNACAEIAhPBEBBLiERIAgsAAEQjAEgCk4NAQsgDg0DQQEhDiAGIAhBAWoiBzYCLCAILQABIREgCSEQDAELIAghBwsgCiARwBCMASIISwRAIAYgB0EBajYCLCAJQQFqIQkgDARAIAEgDGsiB0EATARAIA0gBkEoaiAIQQAgB2t2IAVyEK4DDQYgCCAHQSBqIgF0QQAgBxshBQwDCyAIIAd0IAVyIQUgByEBDAILIAggBSAKbGohBSABQQFrIgENASANIAZBKGogBRCuAyESIAIhAUEAIQUgEkUNAQwDCwsgECAJIA4bIRALIAEgAkYNAiAMIAFFckUEQANAIAUgCmwhBSABQQFrIgENAAsLIA0gBkEoaiAFEK4DRQ0CIAwNAQsgDRAZCyALECpBICEFDAMLIA0oAhBBACAGKAIoIg5BAnRBBGoQLBogBigCLCIJIARHDQEgDA0AIA0QGQsgCxAqQQAhBQwBCyAJLQAAIQcCQAJ\u002FAn8CQAJAIApBCkYEQCAHIgFBIHJB5QBGDQEMAgtBwAAhASAHQcAARg0AIAxFBEBBACEIDAULIAciAUEgckHwAEYNAEEADAMLIAQgCU8NACAGIAlBAWoiCDYCLCABQd8BcSETQQEhBwJAAkACQCAJLQABQStrDgMAAgECCyAGIAlBAmoiCDYCLAwBCyAGIAlBAmoiCDYCLEEAIQcLIBNB0ABHIQlBACEFA0AgCCwAABCMASIBQQlNBEAgBUHMmbPmAE4EQCAHRQRAIAsgDxCAAUEYIQUMCAsgCyAPEH9BFCEFDAcFIAYgCEEBaiIINgIsIAEgBUEKbGohBQwCCwALCyAFQQAgBWsgBxsMAQtBASEJQQALIQggDEUNASAMQQEgCRsgCGwLIQEgDSAPNgIEIA0gASAMIBBsajYCCCANQf\u002F\u002F\u002F\u002F8DQQEQmwIhBQwBCwJAIA0oAgwiBCAOQQFqIglGBEAgCyAPEIABQQAhBQwBCyALKAIAIQEgBkIANwIMIAZCgICAgICAgICAfzcCBCAGIAE2AgAgDSgCECEOIAoQrgQhEUEAIQUCfwJAIAEoAgBBAEECQSIgBCAJayIEQQFrZ2sgBEECSRsiDEEUbCABKAIEEQEAIgcEQCAOIAlBAnRqIQ4gECACIARsayAIaiECA0AgBSAMRwRAIAcgBUEUbGoiCUIANwIMIAlCgICAgICAgICAfzcCBCAJIAE2AgAgBUEBaiEFDAELC0EAIQUgBiAOIARBACAEIBEgBxCtAyEUA0AgBSAMRwRAIAcgBUEUbGoQGSAFQQFqIQUMAQsLIAEoAgAgB0EAIAEoAgQRAQAaIBRFDQELIAsQKkEgDAELIAYgDzYCBCMAQSBrIgEkAAJAIAYoAgxFBEAgCyAGEEkhAgwBCyACRQRAIAsgBhBJIAtB\u002F\u002F\u002F\u002F\u002FwNBARC6AXIhAgwBCyALKAIAIQQgAUIANwIYIAFCgICAgICAgICAfzcCECABIAQ2AgwCfyABQQxqIgcgCiACIAJBH3UiBHMgBGtB\u002F\u002F\u002F\u002F\u002FwNBABDXAiEEIAJBAEgEQCALIAYgByAGKAIMQQV0QQAQiAEgBHIMAQsgCyAGIAFBDGpB\u002F\u002F\u002F\u002F\u002FwNBABBAIARyCyECIAFBDGoQGQsgAUEgaiQAIAILIQUgBhAZCyANEBkLIAZBMGokACADQRBqJAAgBUEgcQRAIAAgFRAMIAAQcEKAgICA4AAPCyAVEK8CBUKAgICA4AALC6EBAQR\u002FIAIgACgCVCIDKAIEIgQgAygCACIFayIGQQAgBCAGTxsiBEsEQCAAIAAoAgBBEHI2AgAgBCECCyABIAMoAgwgBWogAhAeGiADIAMoAgAgAmoiBTYCACAAIAAoAiwiATYCBCAAIAEgBCACayIEIAAoAjAiACAAIARLGyIAajYCCCABIAMoAgwgBWogABAeGiADIAMoAgAgAGo2AgAgAguNAQIBfwF+IwBBEGsiAyQAAn4CQCACQQNPDQAgACgCVCEAIANBADYCBCADIAAoAgA2AgggAyAAKAIENgIMQQAgA0EEaiACQQJ0aigCACICa6wgAVUNACAAKAIIIAJrrCABUw0AIAAgAiABp2oiADYCACAArQwBC0HE1ARBHDYCAEJ\u002FCyEEIANBEGokACAEC6YCAgF+BX8jAEEgayIHJAACfwJAIAJBjgFGBEAgAEGIiAFBABASDAELIAAQ4gEiBEKAgICAcINCgICAgOAAUQ0AIAAgB0EMaiADEK4CIgVFBEAgACAEEAwMAQsgBKciBkEEaiEIAkACQAJAAkACQCACQY0Baw4KAAIDAwICAgICAQILIAggBRBJIQIgBiAGKAIIQQFzNgIIDAMLIAggBUIBQf\u002F\u002F\u002F\u002F8DQQEQeiECIAYgBigCCEEBczYCCAwCCxABAAsgCCAFIAJBAXRBnwJrrEH\u002F\u002F\u002F\u002F\u002FA0EBEHohAgsgACAFIAdBDGoQ5gEgACADEAwgAgRAIAAgBBAMIAAgAhChBUF\u002FDAILIAEgBBCvAjcDAEEADAELIAAgAxAMQX8LIQkgB0EgaiQAIAkLBQAgAJwLBQAgAJkLkgEBAX8CfCAAmSIAvUIgiKciAUHB3Jj\u002FA00EQEQAAAAAAADwPyABQYCAwPIDSQ0BGiAAEJMCIgAgAKIgAEQAAAAAAADwP6AiACAAoKNEAAAAAAAA8D+gDwsgAUHB3JiEBE0EQCAAEJoEIgBEAAAAAAAA8D8gAKOgRAAAAAAAAOA\u002Fog8LIABEAAAAAAAA8D8QjgYLC8MSAhR\u002FAX4jAEFAaiIQJAACfwJAAkACQCAAEOIBIhlCgICAgHCDQoCAgIDgAFENACAAIBBBLGoiBiADEK4CIglFDQAgACAQQRhqIAQQrgIiDg0BIAAgCSAGEOYBCyAAIBkQDCAAIAMQDCAAIAQQDAwBCyAZp0EEaiEGAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAFBmwFrDhYBAgMKAAQFBQkJCQkJCQkJCQkJBggHCQsgBiAJIA5B\u002F\u002F\u002F\u002F\u002FwNBARDuASEBDAoLIAYgCSAOQf\u002F\u002F\u002F\u002F8DQQEQQCEBDAkLIAAoAtgBIBBBBGoiChC7ASAGIAogCSAOELoEIQEgChAZDAgLIwBBIGsiByQAIAYoAgAhASAHQgA3AhggB0KAgICAgICAgIB\u002FNwIQIAcgATYCDCAHQQxqIgogBiAJIA4QugQhFyAKEBkgB0EgaiQAIBdBAXEhAQwHC0EBIQEgDigCBA0GIAYhASAOIQgjAEFAaiIFJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgCSgCDARAIAgoAgwNAQsgCCgCCEGAgICAeEYEQCABQgEQMhoMCwsgCSgCCEH\u002F\u002F\u002F\u002F\u002FB0YNCSABQgEQMhoCQCAJIAEQ8gEiBkUEQCAIKAIIQf7\u002F\u002F\u002F8HTg0LDAELIAYNAgsgCSgCBEUNCiAIKAIIQf\u002F\u002F\u002F\u002F8HRg0JDAoLIAEoAgAhDCAFQgA3AiQgBUKAgICAgICAgIB\u002FNwIcIAUgDDYCGCAFQRhqIgYgCRBJGiAIENkCIRNBgYAEIQogCSgCBARAIBNBAEgEQCABECogBhAZQQEhBwwMCyAFIAUoAhxBAXM2AhwgE0UiFkEAcUGBgARzIQoLIAFCARAyGiAFQRhqIhEgARC9Ag0EIAVCADcCOCAFQoCAgICAgICAgH83AjAgBSAMNgIsIAVCADcCECAFQoCAgICAgICAgH83AgggBSAMNgIEIAVBLGoiFSARQSBBAhCqAyAFQQRqIgYgEUEgQQMQqgMgFSAVIAhBICAIKAIEQQJzEEAaIAYgBiAIQSAgCCgCBEEDcxBAGiMAQTBrIg0kAAJAIAYoAghBAEwNACANQgA3AiggDUKAgICAgICAgIB\u002FNwIgIA0gDDYCHCANQgA3AhQgDUKAgICAgICAgIB\u002FNwIMIA0gDDYCCCANQQhqIhJBIEEDEJgCIwBBIGsiFCQAIA1BHGoiCygCACEHIBRCADcCGCAUQoCAgICAgICAgH83AhAgFCAHNgIMIBRBDGoiDEGAgICAAkEBQRwgCkEFdkE\u002FcSIHa3QgB0E\u002FRhsiB60QMhogCyASIAxBIEEDEEAaIAwQGSAUQSBqJAAgCyAVEKwCBEAgCxAZIBIQGSABQQBB\u002F\u002F\u002F\u002F\u002FwMgChC3AyEPDAELIA1BCGoiEkEgQQIQmAIgDUEcaiIMIBJBASAHIApBHHRBH3VB\u002Fv\u002F\u002F\u002FwNxaiIHa6xBIEECENgCIAYgDBCsAgRAIAwQGSASEBkgCkEHcUEDRgRAIAFCARAyGiABQQMgB2s2AghBGCEPDAILIAFBABCAAUEYIQ8MAQsgDUEIahAZIA1BHGoQGQsgDUEwaiQAIA8hByAVEBkgBhAZIAcNBCATQQBODQJBACEMIAEoAgAhByARENkCIQsCQEEAIBNrIhJBIE8EQCALRQ0BDAULIAtBfyASdEF\u002Fc3ENBCALIBJ1IQwLIAUoAiggBSgCJCIGIAsgBSgCIGsgBkEFdGoQcUEHcUEBRw0DIAVCADcCOCAFQoCAgICAgICAgH83AjAgBSAHNgIsIAVBLGogBUEYahBJGiAFIAUoAjQgC2s2AjRBACEHA0AgByASRg0CIAcEQCAFQSxqIAEQSRoLIAdBAWohByMAQSBrIgskAAJAAkACQCAFQSxqIhEoAgxFBEACQAJAAkACQCARKAIIQf7\u002F\u002F\u002F8Haw4CAQACCyABECoMAgsgESgCBA0DCyABIBEQSRoLQQAhBgwDCyARKAIERQ0BCyABECpBASEGDAELIAEgESARKAIIQQFqQQJtQQEQtQQgAUEBEO8BGiABKAIAIQYgC0IANwIYIAtCgICAgICAgICAfzcCECALIAY2AgwgC0EMaiIPIAEgAUH\u002F\u002F\u002F\u002F\u002FA0EBEEAaIA8gDygCBEEBczYCBCAPIA8gEUH\u002F\u002F\u002F\u002F\u002FA0EBELgBGkEgIQYgDygCCEH\u002F\u002F\u002F\u002F\u002FB0cEQCAPKAIMQQBHQQR0IQYLIA8QGQsgC0EgaiQAIAZFDQALDAMLIAgoAghB\u002Fv\u002F\u002F\u002FwdrDgIGBwULIAEgASgCCCAMajYCCCAFQRhqIAEQSRogBSAIKAIQNgI8IAUgCCgCDDYCOCAFIAgoAgQ2AjAgBSAIKAIIIBNrNgI0IAVBLGohCAsgBSgCICIGIAVBGGoiBxDZAmtBAUYEQCAHIAggBkEBa6xBIEEBENgCIAUgB0EAEO0BIAFCARAyGiABIAUoAgAgChC5ASEHDAILIAVBBGogCEEAEO0BIAgoAgQNAiAFKAIEIgZB\u002F\u002F\u002F\u002F\u002FwFMBEAgASAFQRhqIAZB\u002F\u002F\u002F\u002F\u002FwNBARCvAyEHDAILIAVBGGoQGSABQQBB\u002F\u002F\u002F\u002F\u002FwMgChC3AyEHDAcLIAEgBUEYakH\u002F\u002F\u002F\u002F\u002FAyAKQZkDIAgQqgQhBwsgBUEYahAZIAEgFjYCBAwFC0GMP0HY7ABBtyVB7hAQAAALIAgQ2QJFIAkoAgRxIQYgCCgCBCAJKAIIQYCAgIB4RkYEQCABIAYQf0ECIQcgCCgCBEUNAwwECyABIAYQgAEMAgsgCCgCBCAGQQBKRgRAIAFBABCAAQwCCyABQQAQfwwBCyABECoLQQAhBwsgBUFAayQAIAchAQwGCyAQQQRqIA5BABDtASAQKAIEIgpBgICAgHhHIAFBogFHcUUEQCAQQQBBgYCAgHggCiAKQYGAgIB4TBsiCmsgCiABQaIBRhs2AgQLIAYgCRBJIAYgECgCBEEBELkBciEBIBAoAgRBAE4NBSAGQQIQ7wFBJHEgAXIhAQwFCyAGIAkgDhCyBCEBDAQLIAYgCSAOQQAQsAMhAQwDCyAGIAkgDkEBELADIQEMAgsQAQALIAYgCSAOQf\u002F\u002F\u002F\u002F8DQQEQuAEhAQsgACAJIBBBLGoQ5gEgACAOIBBBGGoQ5gEgACADEAwgACAEEAwgAQRAIAAgGRAMIAAgARChBQwBCyACIBkQrwI3AwBBAAwBC0F\u002FCyEYIBBBQGskACAYC8MBAgJ8An8jAEEQayIDJAACfCAAvUIgiKdB\u002F\u002F\u002F\u002F\u002FwdxIgRB+8Ok\u002FwNNBEBEAAAAAAAA8D8gBEGewZryA0kNARogAEQAAAAAAAAAABDMAgwBCyAAIAChIARBgIDA\u002FwdPDQAaIAAgAxCbBCEEIAMrAwghACADKwMAIQECQAJAAkACQCAEQQNxDgMAAQIDCyABIAAQzAIMAwsgASAAQQEQywKaDAILIAEgABDMApoMAQsgASAAQQEQywILIQIgA0EQaiQAIAILBQAgAJsLgwIDAnwCfwF+IAC9IgVCIIinQf\u002F\u002F\u002F\u002F8HcSIDQYCAwP8HTwRAIAAgAKAPC0GT8f3UAiEEAkAgA0H\u002F\u002Fz9NBEBBk\u002FH9ywIhBCAARAAAAAAAAFBDor0iBUIgiKdB\u002F\u002F\u002F\u002F\u002FwdxIgNFDQELIAVCgICAgICAgICAf4MgA0EDbiAEaq1CIIaEvyICIAKiIAIgAKOiIgEgASABoqIgAUTX7eTUALDCP6JE2VHnvstE6L+goiABIAFEwtZJSmDx+T+iRCAk8JLgKP6\u002FoKJEkuZhD+YD\u002Fj+goCACor1CgICAgHyDQoCAgIAIfL8iASAAIAEgAaKjIgAgAaEgASABoCAAoKOiIAGgIQALIAALewMBfAF+AX8gAJkhAQJAAnwgAL0iAkI0iKdB\u002Fw9xIgNB\u002FQdNBEAgA0HfB0kNAiABIAGgIgAgASAAokQAAAAAAADwPyABoaOgDAELIAFEAAAAAAAA8D8gAaGjIgAgAKALEKEDRAAAAAAAAOA\u002FoiEBCyABmiABIAJCAFMbC6gDAgV\u002FAX4gAL1C\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgYCAgICAgPj\u002FAFQgAb1C\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFhxRQRAIAAgAaAPCyABvSIHQiCIpyICQYCAwP8DayAHpyIFckUEQCAAEJwEDwsgAkEedkECcSIGIAC9IgdCP4inciEDAkAgB0IgiKdB\u002F\u002F\u002F\u002F\u002FwdxIgQgB6dyRQRAAkACQCADQQJrDgIAAQMLRBgtRFT7IQlADwtEGC1EVPshCcAPCyACQf\u002F\u002F\u002F\u002F8HcSICIAVyRQRARBgtRFT7Ifk\u002FIACmDwsCQCACQYCAwP8HRgRAIARBgIDA\u002FwdHDQEgA0EDdEGApgRqKwMADwsgBEGAgMD\u002FB0cgAkGAgIAgaiAET3FFBEBEGC1EVPsh+T8gAKYPCwJ8IAYEQEQAAAAAAAAAACAEQYCAgCBqIAJJDQEaCyAAIAGjmRCcBAshAAJAAkACQCADDgMEAAECCyAAmg8LRBgtRFT7IQlAIABEB1wUMyamobygoQ8LIABEB1wUMyamobygRBgtRFT7IQnAoA8LIANBA3RBoKYEaisDACEACyAAC9sBAQV\u002FIwBBMGsiBiQAQX8hBwJAIAAgBkEcaiIIIAIQrQIiBEUNAAJAIAAgBkEIaiADEK0CIgVFBEAgBCAIRw0BIAgQGQwBCwJ\u002FAkACQAJAAkACQAJAIAFBpAFrDgcFAAECBAQDBAsgBCAFEKAFDAULIAUgBBCsAgwECyAFIAQQoAUMAwsgBCAFEL0CDAILEAEACyAEIAUQrAILIQcgBkEcaiIBIARGBEAgARAZCyAGQQhqIgEgBUYEQCABEBkLIAAgAhAMDAELIAIhAwsgACADEAwgBkEwaiQAIAcLpgEDAXwBfwF+IACZIQECQCAAvSIDQjSIp0H\u002FD3EiAkGZCE8EQCABEM4CRO85+v5CLuY\u002FoCEBDAELIAJBgAhPBEAgASABoEQAAAAAAADwPyABIAAgAKJEAAAAAAAA8D+gn6CjoBDOAiEBDAELIAJB5QdJDQAgASAAIACiIgAgAEQAAAAAAADwP6CfRAAAAAAAAPA\u002FoKOgEKEDIQELIAGaIAEgA0IAUxsLuQIDAX8DfAF+IAC9IgVCIIinQf\u002F\u002F\u002F\u002F8HcSIBQYCAwP8DTwRAIAWnIAFBgIDA\u002FwNrckUEQCAARBgtRFT7Ifk\u002FokQAAAAAAABwOKAPC0QAAAAAAAAAACAAIAChow8LAkAgAUH\u002F\u002F\u002F\u002F+A00EQCABQYCAQGpBgICA8gNJDQEgACAAIACiEM0CoiAAoA8LRAAAAAAAAPA\u002FIACZoUQAAAAAAADgP6IiA58hACADEM0CIQQCfCABQbPmvP8DTwRARBgtRFT7Ifk\u002FIAAgBKIgAKAiACAAoEQHXBQzJqaRvKChDAELRBgtRFT7Iek\u002FIAC9QoCAgIBwg78iAiACoKEgACAAoCAEokQHXBQzJqaRPCADIAIgAqKhIAAgAqCjIgAgAKChoaFEGC1EVPsh6T+gCyIAmiAAIAVCAFMbIQALIAALdgEBfyAAvUI0iKdB\u002Fw9xIgFB\u002FwdNBEAgAEQAAAAAAADwv6AiACAAIACiIAAgAKCgn6AQoQMPCyABQZgITQRAIAAgAKBEAAAAAAAA8L8gACAAokQAAAAAAADwv6CfIACgo6AQzgIPCyAAEM4CRO85+v5CLuY\u002FoAuuAgMBfAF+AX8gAL0iAkIgiKdB\u002F\u002F\u002F\u002F\u002FwdxIgNBgIDA\u002FwNPBEAgAqcgA0GAgMD\u002FA2tyRQRARAAAAAAAAAAARBgtRFT7IQlAIAJCAFkbDwtEAAAAAAAAAAAgACAAoaMPCwJ8IANB\u002F\u002F\u002F\u002F\u002FgNNBEBEGC1EVPsh+T8gA0GBgIDjA0kNARpEB1wUMyamkTwgACAAIACiEM0CoqEgAKFEGC1EVPsh+T+gDwsgAkIAUwRARBgtRFT7Ifk\u002FIABEAAAAAAAA8D+gRAAAAAAAAOA\u002FoiIAnyIBIAEgABDNAqJEB1wUMyamkbygoKEiACAAoA8LRAAAAAAAAPA\u002FIAChRAAAAAAAAOA\u002FoiIAnyIBIAAQzQKiIAAgAb1CgICAgHCDvyIAIACioSABIACgo6AgAKAiACAAoAsLzgMDBXwBfgN\u002FAkACQAJAAkAgAL0iBkIAWQRAIAZCIIinIgdB\u002F\u002F8\u002FSw0BCyAAvUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag1AEQEQAAAAAAADwvyAAIACiow8LIAZCAFkNASAAIAChRAAAAAAAAAAAow8LIAdB\u002F\u002F+\u002F\u002FwdLDQJBgIDA\u002FwMhCEGBeCEJIAdBgIDA\u002FwNHBEAgByEIDAILIAanDQFEAAAAAAAAAAAPCyAARAAAAAAAAFBDor0iBkIgiKchCEHLdyEJCyAGQv\u002F\u002F\u002F\u002F8PgyAIQeK+JWoiB0H\u002F\u002Fz9xQZ7Bmv8Daq1CIIaEv0QAAAAAAADwv6AiACAAIABEAAAAAAAA4D+ioiIDob1CgICAgHCDvyIERAAAIGVHFfc\u002FoiIBIAkgB0EUdmq3IgKgIgUgASACIAWhoCAAIABEAAAAAAAAAECgoyIBIAMgASABoiICIAKiIgEgASABRJ\u002FGeNAJmsM\u002FokSveI4dxXHMP6CiRAT6l5mZmdk\u002FoKIgAiABIAEgAUREUj7fEvHCP6JE3gPLlmRGxz+gokRZkyKUJEnSP6CiRJNVVVVVVeU\u002FoKKgoKIgACAEoSADoaAiACAEoEQAou8u\u002FAXnPaIgAEQAACBlRxX3P6KgoKAhAAsgAAsXACAAKAIAIgAgASgCACIBSyAAIAFJawutAgIDfwF+IwBBIGsiBSQAAkAgAaciBygCICIGRQ0AIAYoAggiCCgCBA0AIAhBATYCBCAHLwEGQS5rIQcCQAJAIANBAEwEQEKAgICAMCEBDAELIAcgBCkDACIBQoCAgIBwVHINAAJAAkAgACABIAYpAwAQTQRAIABBoDhBABASDAELIAAgAUGAASABQQAQESICQoCAgIBwg0KAgICA4ABSDQELIAAoAhAiAykDgAEhASADQoCAgIAgNwOAASAAIAYpAwAgAUEBEK0FIAAgARAMDAMLIAAgAhA1DQEgACACEAwLIAAgBikDACABIAcQrQUMAQsgBikDACEJIAUgAjcDECAFIAE3AwggBSAJNwMAIABBM0EDIAUQ+AIgACACEAwLIAVBIGokAEKAgICAMAuYAQEBfyABpyIFLwEGQTFrIQYgBSgCICEFIANBAEwEfkKAgICAMAUgBCkDAAshASAFIAY2AhwgAUIgiKchAwJAIAYEQCADQXVPBEAgAaciAyADKAIAQQFqNgIACyAAIAEQmAEMAQsgA0F1TwRAIAGnIgMgAygCAEEBajYCAAsgBSgCZEEIayABNwMACyAAIAUQrAVCgICAgDALtQEBAX8CQCAAQRQQXCIFBEAgBUEANgIEIAUgBUEMaiIGNgIQIAUgBjYCDCAFIAAgASACIAMgBBDsAyIDNgIIAkAgA0UNACAAIAMQsQIiAkKAgICAcINCgICAgOAAUQ0AIAAgAhAMIAAgAUE1EF4iAUKAgICAcINCgICAgOAAUQ0AIAUgAaciADYCACABQoCAgIBwVA0CIAAgBTYCIAwCCyAAKAIQIAUQqwULQoCAgIDgAA8LIAELswMCBH8DfiMAQRBrIgUkAEKAgICA4AAhCgJAAn8CQCADKQMAIglCgICAgHBaBEAgCaciBC8BBkETa0H\u002F\u002FwNxQQJJDQELIABBExCKA0EADAELIAQoAiALIgRFDQAgBUIANwMIIAJBAk4EQCAAIAVBCGogAykDCBCkAQ0BCyAELQAEBEAgABBfDAELIAUpAwgiCCAEKAIAIgasVgRAIABBjRxBABBEDAELIAYgCKciB2shBgJAIAJBA0gNACADKQMQIghCgICAgHCDQoCAgIAwUQ0AIAAgBSAIEKQBDQEgBSkDACIIIAatVgRAIABByscAQQAQRAwCCyAIpyEGCyAAIAFBIBBeIgFCgICAgHCDQoCAgIDgAFENAAJAAkAgBC0ABARAIAAQXwwBCyAAQRgQJCICDQELIAAgARAMDAELIAIgAaciAzYCCCAJpyEAIAlCIIinQXVPBEAgACAAKAIAQQFqNgIACyACIAY2AhQgAiAHNgIQIAIgADYCDCAEKAIMIgAgAjYCBCACIARBDGo2AgQgAiAANgIAIAQgAjYCDCADIAI2AiAgASEKCyAFQRBqJAAgCgtaAgF\u002FAX4CQEGw1AQoAgAEQEG01AQoAgAhAgwBC0Gw1AQQ4wUiAjYCAEG01AQgAhDtBCICNgIACyACIAAgABA9Qd7\u002FABCyBSIDIAEQkAMaQbTUBCgCACADEAwLC77HBFEAQYAIC\u002FGOASgpe30AKCl7c3VwZXIoLi4uYXJndW1lbnRzKTt9ACgpIHsKICAgIFtuYXRpdmUgY29kZV0KfQBjYW5ub3QgbWl4ID8\u002FIHdpdGggJiYgb3IgfHwAcHJveHk6IHByb3BlcnR5IG5vdCBwcmVzZW50IGluIHRhcmdldCB3ZXJlIHJldHVybmVkIGJ5IG5vbiBleHRlbnNpYmxlIHByb3h5AHJldm9rZWQgcHJveHkAUHJveHkAYWRkX3Byb3BlcnR5AHByb3h5OiBjYW5ub3Qgc2V0IHByb3BlcnR5AG5vIHNldHRlciBmb3IgcHJvcGVydHkAdmFsdWUgaGFzIG5vIHByb3BlcnR5AGNvdWxkIG5vdCBkZWxldGUgcHJvcGVydHkAcHJveHk6IGR1cGxpY2F0ZSBwcm9wZXJ0eQBKU19EZWZpbmVBdXRvSW5pdFByb3BlcnR5AGhhc093blByb3BlcnR5AHByb3h5OiBpbmNvbnNpc3RlbnQgZGVsZXRlUHJvcGVydHkAcHJveHk6IGluY29uc2lzdGVudCBkZWZpbmVQcm9wZXJ0eQBKU19EZWZpbmVQcm9wZXJ0eQAhbXItPmVtcHR5AGluZmluaXR5AEluZmluaXR5AG91dCBvZiBtZW1vcnkAdW5rbm93biB1bmljb2RlIGdlbmVyYWwgY2F0ZWdvcnkAR2VuZXJhbF9DYXRlZ29yeQBldmVyeQBhbnkAYXBwbHkAJyVzJyBpcyByZWFkLW9ubHkAZXhwZWN0aW5nIGNhdGNoIG9yIGZpbmFsbHkAc3RpY2t5AGJpZ2ludCBhcmUgZm9yYmlkZGVuIGluIEpTT04uc3RyaW5naWZ5AHN1YmFycmF5AGVtcHR5IGFycmF5AG5vbiBpbnRlZ2VyIGluZGV4IGluIHR5cGVkIGFycmF5AG5lZ2F0aXZlIGluZGV4IGluIHR5cGVkIGFycmF5AG91dC1vZi1ib3VuZCBpbmRleCBpbiB0eXBlZCBhcnJheQBjYW5ub3QgY3JlYXRlIG51bWVyaWMgaW5kZXggaW4gdHlwZWQgYXJyYXkAaXNBcnJheQBUeXBlZEFycmF5AGdldERheQBnZXRVVENEYXkAZ3JvdXBCeQBtLT5kZnNfYW5jZXN0b3JfaW5kZXggPD0gbS0+ZGZzX2luZGV4AGpzX2dldF9hdG9tX2luZGV4AGludmFsaWQgYXJyYXkgaW5kZXgASlNfQXRvbUlzQXJyYXlJbmRleABmaW5kTGFzdEluZGV4AGZpbmRJbmRleABpbnZhbGlkIGV4cG9ydCBzeW50YXgAaW52YWxpZCBhc3NpZ25tZW50IHN5bnRheABtYXgAXHUlMDR4AGludmFsaWQgb3Bjb2RlOiBwYz0ldSBvcGNvZGU9MHglMDJ4AC0rICAgMFgweAAtMFgrMFggMFgtMHgrMHggMHgAbGluZSB0ZXJtaW5hdG9yIG5vdCBhbGxvd2VkIGFmdGVyIHRocm93AGJmX3BvdwBub3cAaW50ZWdlciBvdmVyZmxvdwBzdGFjayBvdmVyZmxvdwBtdXN0IGJlIGNhbGxlZCB3aXRoIG5ldwBpc1ZpZXcARGF0YVZpZXcAcmF3ACV1AGNsYXNzIGRlY2xhcmF0aW9ucyBjYW4ndCBhcHBlYXIgaW4gc2luZ2xlLXN0YXRlbWVudCBjb250ZXh0AGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBjYW4ndCBhcHBlYXIgaW4gc2luZ2xlLXN0YXRlbWVudCBjb250ZXh0AGxleGljYWwgZGVjbGFyYXRpb25zIGNhbid0IGFwcGVhciBpbiBzaW5nbGUtc3RhdGVtZW50IGNvbnRleHQAZHVwbGljYXRlIGFyZ3VtZW50IG5hbWVzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dABkdXBsaWNhdGUgcGFyYW1ldGVyIG5hbWVzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dABpbXBvcnQubWV0YSBub3Qgc3VwcG9ydGVkIGluIHRoaXMgY29udGV4dABKU19GcmVlQ29udGV4dABKU0NvbnRleHQAanNfbWFwX2l0ZXJhdG9yX25leHQAanNfZ2VuZXJhdG9yX25leHQAanNfYXN5bmNfZ2VuZXJhdG9yX3Jlc3VtZV9uZXh0AHVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0AHR0AGV4cG9ydGVkIHZhcmlhYmxlICclcycgZG9lcyBub3QgZXhpc3QAcHJpdmF0ZSBjbGFzcyBmaWVsZCAnJXMnIGRvZXMgbm90IGV4aXN0AHRlc3QAYXNzaWdubWVudCByZXN0IHByb3BlcnR5IG11c3QgYmUgbGFzdABwdmFsID09IGxhc3QAZmluZExhc3QAYmZfc3FydABzb3J0AGNicnQAdHJpbVN0YXJ0AHBhZFN0YXJ0AHVua25vd24gdW5pY29kZSBzY3JpcHQAU2NyaXB0AGh5cG90AGZyZWVfemVyb19yZWZjb3VudABzdHJfaW5kZXggPT0gbnVtX2tleXNfY291bnQgKyBzdHJfa2V5c19jb3VudABudW1faW5kZXggPT0gbnVtX2tleXNfY291bnQAc3ltX2luZGV4ID09IGF0b21fY291bnQAbGFiZWwgPj0gMCAmJiBsYWJlbCA8IHMtPmxhYmVsX2NvdW50AGxhYjEgPj0gMCAmJiBsYWIxIDwgcy0+bGFiZWxfY291bnQAdmFsIDwgcy0+Y2FwdHVyZV9jb3VudAB2YWwyIDwgcy0+Y2FwdHVyZV9jb3VudABpbnZhbGlkIHJlcGVhdCBjb3VudABpbnZhbGlkIHJlcGV0aXRpb24gY291bnQAZm9udABpbnZhbGlkIGNvZGUgcG9pbnQAZnJvbUNvZGVQb2ludABpbnZhbGlkIGhpbnQAY2Fubm90IGNvbnZlcnQgTmFOIG9yIEluZmluaXR5IHRvIGJpZ2ludABjYW5ub3QgY29udmVydCB0byBiaWdpbnQAYm90aCBvcGVyYW5kcyBtdXN0IGJlIGJpZ2ludABub3QgYSBiaWdpbnQAcHJpdmF0ZSBtZXRob2QgaXMgYWxyZWFkeSBwcmVzZW50AGVuY29kZVVSSUNvbXBvbmVudABkZWNvZGVVUklDb21wb25lbnQAdW5leHBlY3RlZCBlbmQgb2YgY29tbWVudABpbnZhbGlkIHN3aXRjaCBzdGF0ZW1lbnQAQmlnSW50AHBhcnNlSW50AGR1cGxpY2F0ZSBkZWZhdWx0AHNwbGl0AGV4cGVjdGluZyBoZXggZGlnaXQAdHJpbVJpZ2h0AHJlZHVjZVJpZ2h0AHVuc2hpZnQAdHJpbUxlZnQAaW52YWxpZCBvZmZzZXQAaW52YWxpZCBieXRlT2Zmc2V0AGdldFRpbWV6b25lT2Zmc2V0AHJlc29sdmluZyBmdW5jdGlvbiBhbHJlYWR5IHNldABwcm94eTogaW5jb25zaXN0ZW50IHNldABmaW5kX2p1bXBfdGFyZ2V0AGV4cGVjdGluZyB0YXJnZXQAaW52YWxpZCBkZXN0cnVjdHVyaW5nIHRhcmdldABwcm94eTogaW5jb25zaXN0ZW50IGdldABXZWFrU2V0AGNvbnN0cnVjdABKU19GcmVlQXRvbVN0cnVjdAB1c2Ugc3RyaWN0AFJlZmxlY3QAcmVqZWN0AG5vdCBhbiBBc3luY0dlbmVyYXRvciBvYmplY3QAY2Fubm90IGNvbnZlcnQgdG8gb2JqZWN0AGludmFsaWQgYnJhbmQgb24gb2JqZWN0AG9wZXJhbmQgJ3Byb3RvdHlwZScgcHJvcGVydHkgaXMgbm90IGFuIG9iamVjdABpdGVyYXRvciBtdXN0IHJldHVybiBhbiBvYmplY3QAbm90IGEgRGF0ZSBvYmplY3QAbm90IGEgb2JqZWN0AEpTT2JqZWN0AHBhcnNlRmxvYXQAZmxhdABub3RoaW5nIHRvIHJlcGVhdABjb25jYXQAY29kZVBvaW50QXQAY2hhckF0AGNoYXJDb2RlQXQAa2V5cwBwcm94eTogdGFyZ2V0IHByb3BlcnR5IG11c3QgYmUgcHJlc2VudCBpbiBwcm94eSBvd25LZXlzACAgZmFzdCBhcnJheXMAZXhwb3J0ICclcycgaW4gbW9kdWxlICclcycgaXMgYW1iaWd1b3VzAHByaXZhdGUgY2xhc3MgZmllbGQgJyVzJyBhbHJlYWR5IGV4aXN0cwB0b28gbWFueSBhcmd1bWVudHMAVG9vIG1hbnkgY2FsbCBhcmd1bWVudHMAdG9vIG1hbnkgZWxlbWVudHMAICBlbGVtZW50cwBpbnZhbGlkIG51bWJlciBvZiBkaWdpdHMAYmluYXJ5IG9iamVjdHMAaW52YWxpZCBwcm9wZXJ0eSBhY2Nlc3MAanNfb3BfZGVmaW5lX2NsYXNzAGZkLT5ieXRlX2NvZGUuYnVmW2RlZmluZV9jbGFzc19wb3NdID09IE9QX2RlZmluZV9jbGFzcwBfX2dldENsYXNzAHNldEhvdXJzAGdldEhvdXJzAHNldFVUQ0hvdXJzAGdldFVUQ0hvdXJzAGdhdGhlcl9hdmFpbGFibGVfYW5jZXN0b3JzAGdldE93blByb3BlcnR5RGVzY3JpcHRvcnMAd2l0aFJlc29sdmVycwB0b28gbWFueSBpbWJyaWNhdGVkIHF1YW50aWZpZXJzAHVuaWNvZGVfcHJvcF9vcHMAYWNvcwBmb3IgYXdhaXQgaXMgb25seSB2YWxpZCBpbiBhc3luY2hyb25vdXMgZnVuY3Rpb25zAG5ldy50YXJnZXQgb25seSBhbGxvd2VkIHdpdGhpbiBmdW5jdGlvbnMAYnl0ZWNvZGUgZnVuY3Rpb25zAEMgZnVuY3Rpb25zAHByb3h5OiBpbmNvbnNpc3RlbnQgcHJldmVudEV4dGVuc2lvbnMAU2NyaXB0X0V4dGVuc2lvbnMAYXRvbXMAcHJveHk6IHByb3BlcnRpZXMgbXVzdCBiZSBzdHJpbmdzIG9yIHN5bWJvbHMAZ2V0T3duUHJvcGVydHlTeW1ib2xzAHJlc29sdmVfbGFiZWxzAEpTX0V2YWxUaGlzAHN0cmluZ3MAaW52YWxpZCBkZXNjcmlwdG9yIGZsYWdzAGludmFsaWQgcmVndWxhciBleHByZXNzaW9uIGZsYWdzAHZhbHVlcwBzZXRNaW51dGVzAGdldE1pbnV0ZXMAc2V0VVRDTWludXRlcwBnZXRVVENNaW51dGVzAHRvbyBtYW55IGNhcHR1cmVzACAgc2hhcGVzAGdldE93blByb3BlcnR5TmFtZXMAZ2NfZnJlZV9jeWNsZXMAYWRkX2V2YWxfdmFyaWFibGVzAHJlc29sdmVfdmFyaWFibGVzAHRvbyBtYW55IGxvY2FsIHZhcmlhYmxlcwB0b28gbWFueSBjbG9zdXJlIHZhcmlhYmxlcwBjb21wYWN0X3Byb3BlcnRpZXMAICBwcm9wZXJ0aWVzAGRlZmluZVByb3BlcnRpZXMAZW50cmllcwBmcm9tRW50cmllcwB0b28gbWFueSByYW5nZXMAaW5jbHVkZXMAaGFzSW5kaWNlcwBzZXRNaWxsaXNlY29uZHMAZ2V0TWlsbGlzZWNvbmRzAHNldFVUQ01pbGxpc2Vjb25kcwBnZXRVVENNaWxsaXNlY29uZHMAc2V0U2Vjb25kcwBnZXRTZWNvbmRzAHNldFVUQ1NlY29uZHMAZ2V0VVRDU2Vjb25kcwBpdGFsaWNzAGFicwBwcm94eTogaW5jb25zaXN0ZW50IGhhcwAlLipzACAoJXMAc2V0ICVzAGdldCAlcwAgICAgYXQgJXMAbm90IGEgJXMAdW5zdXBwb3J0ZWQga2V5d29yZDogJXMAc3Vic3RyAHByb3h5OiBpbmNvbnNpc3RlbnQgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yAHN1cGVyKCkgaXMgb25seSB2YWxpZCBpbiBhIGRlcml2ZWQgY2xhc3MgY29uc3RydWN0b3IAcGFyZW50IGNsYXNzIG11c3QgYmUgY29uc3RydWN0b3IAbm90IGEgY29uc3RydWN0b3IAQXJyYXkgSXRlcmF0b3IAU2V0IEl0ZXJhdG9yAE1hcCBJdGVyYXRvcgBSZWdFeHAgU3RyaW5nIEl0ZXJhdG9yAG5vdCBhbiBBc3luYy1mcm9tLVN5bmMgSXRlcmF0b3IAY2Fubm90IGludm9rZSBhIHJ1bm5pbmcgZ2VuZXJhdG9yAG5vdCBhIGdlbmVyYXRvcgBBc3luY0dlbmVyYXRvcgBzeW50YXggZXJyb3IAU3ludGF4RXJyb3IARXZhbEVycm9yAEludGVybmFsRXJyb3IAQWdncmVnYXRlRXJyb3IAVHlwZUVycm9yAFJhbmdlRXJyb3IAUmVmZXJlbmNlRXJyb3IAVVJJRXJyb3IAZmxvb3IAZm9udGNvbG9yAGFuY2hvcgBmb3IAa2V5Rm9yAGV4cGVjdGluZyBzdXJyb2dhdGUgcGFpcgBhIGRlY2xhcmF0aW9uIGluIHRoZSBoZWFkIG9mIGEgZm9yLSVzIGxvb3AgY2FuJ3QgaGF2ZSBhbiBpbml0aWFsaXplcgAnYXJndW1lbnRzJyBpZGVudGlmaWVyIGlzIG5vdCBhbGxvd2VkIGluIGNsYXNzIGZpZWxkIGluaXRpYWxpemVyAGludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgZ2V0dGVyIG9yIHNldHRlcgBpbnZhbGlkIHNldHRlcgBpbnZhbGlkIGdldHRlcgBmaWx0ZXIAbWlzc2luZyBmb3JtYWwgcGFyYW1ldGVyACJ1c2Ugc3RyaWN0IiBub3QgYWxsb3dlZCBpbiBmdW5jdGlvbiB3aXRoIGRlZmF1bHQgb3IgZGVzdHJ1Y3R1cmluZyBwYXJhbWV0ZXIAaW52YWxpZCBjaGFyYWN0ZXIAdW5leHBlY3RlZCBjaGFyYWN0ZXIAcHJpdmF0ZSBjbGFzcyBmaWVsZCBmb3JiaWRkZW4gYWZ0ZXIgc3VwZXIAaW52YWxpZCByZWRlZmluaXRpb24gb2YgbGV4aWNhbCBpZGVudGlmaWVyACdsZXQnIGlzIG5vdCBhIHZhbGlkIGxleGljYWwgaWRlbnRpZmllcgBpbnZhbGlkIHJlZGVmaW5pdGlvbiBvZiBnbG9iYWwgaWRlbnRpZmllcgB5aWVsZCBpcyBhIHJlc2VydmVkIGlkZW50aWZpZXIAJyVzJyBpcyBhIHJlc2VydmVkIGlkZW50aWZpZXIAb3RoZXIAYXRvbTFfaXNfaW50ZWdlciAmJiBhdG9tMl9pc19pbnRlZ2VyAGNhbm5vdCBjb252ZXJ0IHRvIGJpZ2ludDogbm90IGFuIGludGVnZXIAaXNJbnRlZ2VyAGlzU2FmZUludGVnZXIAYnVmZmVyAFNoYXJlZEFycmF5QnVmZmVyAGNhbm5vdCB1c2UgaWRlbnRpY2FsIEFycmF5QnVmZmVyAGNhbm5vdCBjb252ZXJ0IGJpZ2ludCB0byBudW1iZXIAY2Fubm90IGNvbnZlcnQgc3ltYm9sIHRvIG51bWJlcgBub3QgYSBudW1iZXIAbGluZU51bWJlcgBtYWxmb3JtZWQgdW5pY29kZSBjaGFyAGNsZWFyAHNldFllYXIAZ2V0WWVhcgBzZXRGdWxsWWVhcgBnZXRGdWxsWWVhcgBzZXRVVENGdWxsWWVhcgBnZXRVVENGdWxsWWVhcgBxICE9IHIAdW5leHBlY3RlZCBsaW5lIHRlcm1pbmF0b3IgaW4gcmVnZXhwAHVuZXhwZWN0ZWQgZW5kIG9mIHJlZ2V4cABSZWdFeHAAc3VwAGludmFsaWQgZ3JvdXAAcG9wAGNvbnRpbnVlIG11c3QgYmUgaW5zaWRlIGxvb3AAYmZfbG9naWNfb3AAZHVtcABudW1fa2V5c19jbXAAdXNlIHN0cmlwAG1hcABmbGF0TWFwAFdlYWtNYXAAZXhwZWN0aW5nICd7JyBhZnRlciBccABsb2cxcABkaXZpc2lvbiBieSB6ZXJvADBvAGhhc093bgByZXR1cm4AcHJvbWlzZSBzZWxmIHJlc29sdXRpb24Ab3V0IG9mIG1lbW9yeSBpbiByZWdleHAgZXhlY3V0aW9uAGRlc2NyaXB0aW9uACFtLT5ldmFsX2hhc19leGNlcHRpb24AIW1vZHVsZS0+ZXZhbF9oYXNfZXhjZXB0aW9uAHByb3h5OiBkZWZpbmVQcm9wZXJ0eSBleGNlcHRpb24AanNfYXN5bmNfZ2VuZXJhdG9yX3Jlc29sdmVfZnVuY3Rpb24AanNfY3JlYXRlX2Z1bmN0aW9uAHNldC9hZGQgaXMgbm90IGEgZnVuY3Rpb24AcmV0dXJuIG5vdCBpbiBhIGZ1bmN0aW9uAEFzeW5jR2VuZXJhdG9yRnVuY3Rpb24AY2FsbEV4dGVybmFsRnVuY3Rpb24AQXN5bmNGdW5jdGlvbgBqc19pbm5lcl9tb2R1bGVfZXZhbHVhdGlvbgAhbS0+YXN5bmNfZXZhbHVhdGlvbgBtb2R1bGUtPmFzeW5jX2V2YWx1YXRpb24AaW52YWxpZCBvcGVyYXRpb24AdW5zdXBwb3J0ZWQgb3BlcmF0aW9uAGF3YWl0IGluIGRlZmF1bHQgZXhwcmVzc2lvbgB5aWVsZCBpbiBkZWZhdWx0IGV4cHJlc3Npb24AaW52YWxpZCBkZWNpbWFsIGVzY2FwZSBpbiByZWd1bGFyIGV4cHJlc3Npb24AYmFjayByZWZlcmVuY2Ugb3V0IG9mIHJhbmdlIGluIHJlZ3VsYXIgZXhwcmVzc2lvbgBpbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSBpbiByZWd1bGFyIGV4cHJlc3Npb24AZXhwZWN0ZWQgJ29mJyBvciAnaW4nIGluIGZvciBjb250cm9sIGV4cHJlc3Npb24AdG9vIGNvbXBsaWNhdGVkIGRlc3RydWN0dXJpbmcgZXhwcmVzc2lvbgBleHBlY3RlZCAnfScgYWZ0ZXIgdGVtcGxhdGUgZXhwcmVzc2lvbgB0b1ByZWNpc2lvbgBhc2luAGpvaW4AbWluAGNvcHlXaXRoaW4AdGVtcGxhdGUgbGl0ZXJhbCBjYW5ub3QgYXBwZWFyIGluIGFuIG9wdGlvbmFsIGNoYWluAGNpcmN1bGFyIHByb3RvdHlwZSBjaGFpbgBhc3NpZ24AIXktPnNpZ24AaXNGcm96ZW4AKHBvcyArIGxlbikgPD0gYmNfYnVmX2xlbgB1bmV4cGVjdGVkIGVsbGlwc2lzIHRva2VuAHRoZW4Ac2V0dGVyIGlzIGZvcmJpZGRlbgBudWxsIG9yIHVuZGVmaW5lZCBhcmUgZm9yYmlkZGVuAGF0YW4AbmFuAG5vdCBhIGJvb2xlYW4AQm9vbGVhbgBnY19zY2FuAGJhZCBub3JtYWxpemF0aW9uIGZvcm0ASlNfTmV3U3ltYm9sRnJvbUF0b20AZnJvbQByYW5kb20AdHJpbQBiZl9kaXZyZW0AbS0+Y3ljbGVfcm9vdCA9PSBtAGltdWwAbm90IGEgc3ltYm9sAFN5bWJvbABSZWdFeHAgZXhlYyBtZXRob2QgbXVzdCByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwAcGFyZW50IHByb3RvdHlwZSBtdXN0IGJlIGFuIG9iamVjdCBvciBudWxsAGNhbm5vdCBzZXQgcHJvcGVydHkgJyVzJyBvZiBudWxsAGNhbm5vdCByZWFkIHByb3BlcnR5ICclcycgb2YgbnVsbABOdWxsAGZpbGwAbmV3IEFycmF5QnVmZmVyIGlzIHRvbyBzbWFsbABUeXBlZEFycmF5IGxlbmd0aCBpcyB0b28gc21hbGwAY2FsbABkb3RBbGwAbWF0Y2hBbGwAcmVwbGFjZUFsbABjZWlsAHVwZGF0ZV9sYWJlbABiY19idWZbcG9zXSA9PSBPUF9sYWJlbABldmFsAGludmFsaWQgYmlnaW50IGxpdGVyYWwAaW52YWxpZCBudW1iZXIgbGl0ZXJhbABtYWxmb3JtZWQgZXNjYXBlIHNlcXVlbmNlIGluIHN0cmluZyBsaXRlcmFsAGJmX2V4cF9pbnRlcm5hbABiZl9sb2dfaW50ZXJuYWwAYmZfZnRvYV9pbnRlcm5hbABKU19TZXRQcm9wZXJ0eUludGVybmFsAEpTX0dldE93blByb3BlcnR5TmFtZXNJbnRlcm5hbABfX0pTX0V2YWxJbnRlcm5hbAB0b0V4cG9uZW50aWFsAHNlYWwAZ2xvYmFsAGJsaW5rAHJldHVybiBpbiBhIHN0YXRpYyBpbml0aWFsaXplciBibG9jawBzdGFjawBscmVfZXhlY19iYWNrdHJhY2sAcy0+aXNfd2VhawBiZl9wb3dfdWkAc2V0TW9udGgAZ2V0TW9udGgAc2V0VVRDTW9udGgAZ2V0VVRDTW9udGgAaW52YWxpZCBrZXl3b3JkOiB3aXRoAHN0YXJ0c1dpdGgAZW5kc1dpdGgAcHJvcCA9PSBKU19BVE9NX2xlbmd0aABpbnZhbGlkIGFycmF5IGxlbmd0aABpbnZhbGlkIGFycmF5IGJ1ZmZlciBsZW5ndGgAaW52YWxpZCBsZW5ndGgAaW52YWxpZCBieXRlTGVuZ3RoAE1hdGgAcHVzaABhY29zaABKU19SZXNpemVBdG9tSGFzaABhc2luaABhdGFuaABicmVhayBtdXN0IGJlIGluc2lkZSBsb29wIG9yIHN3aXRjaABtYXRjaABuaXBfY2F0Y2gAc2VhcmNoAGZvckVhY2gAYmZfbG9nAEFycmF5IHRvbyBsb25nAHN0cmluZyB0b28gbG9uZwBBcnJheSBsb28gbG9uZwBzdWJzdHJpbmcAY2Fubm90IGNvbnZlcnQgc3ltYm9sIHRvIHN0cmluZwB1bmV4cGVjdGVkIGVuZCBvZiBzdHJpbmcAbm90IGEgc3RyaW5nAGludmFsaWQgY2hhcmFjdGVyIGluIGEgSlNPTiBzdHJpbmcAdG9TdHJpbmcAdG9EYXRlU3RyaW5nAHRvTG9jYWxlRGF0ZVN0cmluZwB0b1RpbWVTdHJpbmcAdG9Mb2NhbGVUaW1lU3RyaW5nAHRvTG9jYWxlU3RyaW5nAHRvR01UU3RyaW5nAEpTU3RyaW5nAHRvSVNPU3RyaW5nAHRvVVRDU3RyaW5nAGpzX2lubmVyX21vZHVsZV9saW5raW5nAGR1cGxpY2F0ZSBpbXBvcnQgYmluZGluZwBpbnZhbGlkIGltcG9ydCBiaW5kaW5nAHByb21pc2UgaXMgcGVuZGluZwBiaWcAcmVnZXhwIG11c3QgaGF2ZSB0aGUgJ2cnIGZsYWcAb2YAaW5mAEluZgBkaWZmID09IChpbnQ4X3QpZGlmZgBkaWZmID09IChpbnQxNl90KWRpZmYAaHJlZgBnY19kZWNyZWYAZnJlZV92YXJfcmVmAG9wdGltaXplX3Njb3BlX21ha2VfZ2xvYmFsX3JlZgByZXNldF93ZWFrX3JlZgBkZWxldGVfd2Vha19yZWYAb3B0aW1pemVfc2NvcGVfbWFrZV9yZWYAaW5kZXhPZgBsYXN0SW5kZXhPZgB2YWx1ZU9mAHNldFByb3RvdHlwZU9mAGdldFByb3RvdHlwZU9mAGlzUHJvdG90eXBlT2YAJS4qZgBmb250c2l6ZQBuZXdfc2l6ZSA8PSBzaC0+cHJvcF9zaXplAGRlc2NyIDwgcnQtPmF0b21fc2l6ZQBhdG9tIDwgcnQtPmF0b21fc2l6ZQBjb21wdXRlX3N0YWNrX3NpemUAbiA8IGJ1Zl9zaXplAG5vcm1hbGl6ZQBjcl9yZWdleHBfY2Fub25pY2FsaXplAGZyZWV6ZQByZXNvbHZlAHRvUHJpbWl0aXZlAHB1dF9sdmFsdWUAdW5rbm93biB1bmljb2RlIHByb3BlcnR5IHZhbHVlAHJlc3QgZWxlbWVudCBjYW5ub3QgaGF2ZSBhIGRlZmF1bHQgdmFsdWUAaW52YWxpZCByZXQgdmFsdWUAX19KU19BdG9tVG9WYWx1ZQBfX3F1b3RlAGlzRmluaXRlAGRlbGV0ZQBjcmVhdGUAc2V0RGF0ZQBnZXREYXRlAHNldFVUQ0RhdGUAZ2V0VVRDRGF0ZQBJbnZhbGlkIERhdGUAcmV2ZXJzZQBwYXJzZQBwcm94eSBwcmV2ZW50RXh0ZW5zaW9ucyBoYW5kbGVyIHJldHVybmVkIGZhbHNlAG1vZHVsZSBuYW1lc3BhY2UgcHJvcGVydGllcyBoYXZlIHdyaXRhYmxlID0gZmFsc2UAUHJvbWlzZQB0b0xvd2VyQ2FzZQB0b0xvY2FsZUxvd2VyQ2FzZQB0b1VwcGVyQ2FzZQB0b0xvY2FsZVVwcGVyQ2FzZQBpZ25vcmVDYXNlAGxvY2FsZUNvbXBhcmUAcHJveHk6IGluY29uc2lzdGVudCBwcm90b3R5cGUAcHJveHk6IGJhZCBwcm90b3R5cGUAbm90IGEgcHJvdG90eXBlAGludmFsaWQgb2JqZWN0IHR5cGUAdW5lc2NhcGUAbm9uZQByZXN0IGVsZW1lbnQgbXVzdCBiZSB0aGUgbGFzdCBvbmUAbXVsdGlsaW5lACAgcGMybGluZQBhc3luY19mdW5jX3Jlc3VtZQBzb21lAEpTX0ZyZWVSdW50aW1lAEpTUnVudGltZQBzZXRUaW1lAGdldFRpbWUAYXN5bmNfZnVuY19mcmVlX2ZyYW1lAHNldF9vYmplY3RfbmFtZQBleHBlY3RpbmcgcHJvcGVydHkgbmFtZQB1bmtub3duIHVuaWNvZGUgcHJvcGVydHkgbmFtZQBpbnZhbGlkIHByb3BlcnR5IG5hbWUAZHVwbGljYXRlIF9fcHJvdG9fXyBwcm9wZXJ0eSBuYW1lAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIHBhcmFtZXRlciBuYW1lAGV4cGVjdGluZyBncm91cCBuYW1lAGR1cGxpY2F0ZSBncm91cCBuYW1lAGludmFsaWQgZ3JvdXAgbmFtZQBkdXBsaWNhdGUgbGFiZWwgbmFtZQBpbnZhbGlkIGZpcnN0IGNoYXJhY3RlciBvZiBwcml2YXRlIG5hbWUAaW52YWxpZCBsZXhpY2FsIHZhcmlhYmxlIG5hbWUAaW52YWxpZCBtZXRob2QgbmFtZQBleHBlY3RpbmcgZmllbGQgbmFtZQBpbnZhbGlkIGZpZWxkIG5hbWUAY2xhc3Mgc3RhdGVtZW50IHJlcXVpcmVzIGEgbmFtZQBmaWxlTmFtZQBqc19saW5rX21vZHVsZQBqc19ldmFsdWF0ZV9tb2R1bGUAbW9kdWxlLT5jeWNsZV9yb290ID09IG1vZHVsZQBjb21waWxlAG9iamVjdCBpcyBub3QgZXh0ZW5zaWJsZQBwcm94eTogaW5jb25zaXN0ZW50IGlzRXh0ZW5zaWJsZQBjYW5ub3QgaGF2ZSBzZXR0ZXIvZ2V0dGVyIGFuZCB2YWx1ZSBvciB3cml0YWJsZQBwcm9wZXJ0eSBpcyBub3QgY29uZmlndXJhYmxlAHZhbHVlIGlzIG5vdCBpdGVyYWJsZQBwcm9wZXJ0eUlzRW51bWVyYWJsZQBtaXNzaW5nIGluaXRpYWxpemVyIGZvciBjb25zdCB2YXJpYWJsZQBsZXhpY2FsIHZhcmlhYmxlAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIGEgdmFyaWFibGUAcmV2b2NhYmxlAHN0cmlrZQBtcF9kaXZub3JtX2xhcmdlAGludmFsaWQgY2xhc3MgcmFuZ2UAbWVzc2FnZQBpbnZhbGlkIGx2YWx1ZSBpbiBzdHJpY3QgbW9kZQBpbnZhbGlkIHZhcmlhYmxlIG5hbWUgaW4gc3RyaWN0IG1vZGUAY2Fubm90IGRlbGV0ZSBhIGRpcmVjdCByZWZlcmVuY2UgaW4gc3RyaWN0IG1vZGUAb2N0YWwgZXNjYXBlIHNlcXVlbmNlcyBhcmUgbm90IGFsbG93ZWQgaW4gc3RyaWN0IG1vZGUAb2N0YWwgbGl0ZXJhbHMgYXJlIGRlcHJlY2F0ZWQgaW4gc3RyaWN0IG1vZGUAdW5pY29kZQAgIGJ5dGVjb2RlAEpTRnVuY3Rpb25CeXRlY29kZQBza2lwX2RlYWRfY29kZQBpbnZhbGlkIGFyZ3VtZW50IG5hbWUgaW4gc3RyaWN0IGNvZGUAaW52YWxpZCBmdW5jdGlvbiBuYW1lIGluIHN0cmljdCBjb2RlAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIGdsb2JhbCBpZGVudGlmaWVyIGluIG1vZHVsZSBjb2RlAGltcG9ydC5tZXRhIG9ubHkgdmFsaWQgaW4gbW9kdWxlIGNvZGUAZnJvbUNoYXJDb2RlAGludmFsaWQgZm9yIGluL29mIGxlZnQgaGFuZC1zaWRlAGludmFsaWQgYXNzaWdubWVudCBsZWZ0LWhhbmQgc2lkZQByZWR1Y2UAc291cmNlACd0aGlzJyBjYW4gYmUgaW5pdGlhbGl6ZWQgb25seSBvbmNlAHByb3BlcnR5IGNvbnN0cnVjdG9yIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UAaW52YWxpZCBVVEYtOCBzZXF1ZW5jZQBjaXJjdWxhciByZWZlcmVuY2UAc2xpY2UAc3BsaWNlAHJhY2UAcmVwbGFjZQAlKy4qZQB1bmV4cGVjdGVkICdhd2FpdCcga2V5d29yZAB1bmV4cGVjdGVkICd5aWVsZCcga2V5d29yZABtYXBfZGVjcmVmX3JlY29yZABpdGVyYXRvciBkb2VzIG5vdCBoYXZlIGEgdGhyb3cgbWV0aG9kAG9iamVjdCBuZWVkcyB0b0lTT1N0cmluZyBtZXRob2QAJ3N1cGVyJyBpcyBvbmx5IHZhbGlkIGluIGEgbWV0aG9kAGZyb3VuZABfX2JmX3JvdW5kAGJyZWFrL2NvbnRpbnVlIGxhYmVsIG5vdCBmb3VuZABvdXQgb2YgYm91bmQAZmluZABiaW5kAGludmFsaWQgaW5kZXggZm9yIGFwcGVuZABleHRyYW5lb3VzIGNoYXJhY3RlcnMgYXQgdGhlIGVuZAB1bmV4cGVjdGVkIGRhdGEgYXQgdGhlIGVuZAB1bmV4cGVjdGVkIGVuZABpbnZhbGlkIGluY3JlbWVudC9kZWNyZW1lbnQgb3BlcmFuZABpbnZhbGlkICdpbnN0YW5jZW9mJyByaWdodCBvcGVyYW5kAGludmFsaWQgJ2luJyBvcGVyYW5kAHRyaW1FbmQAcGFkRW5kAGJvbGQAJWxsZABnY19kZWNyZWZfY2hpbGQAcmVzb2x2ZV9zY29wZV9wcml2YXRlX2ZpZWxkAGNhbm5vdCBkZWxldGUgYSBwcml2YXRlIGNsYXNzIGZpZWxkAGV4cGVjdGluZyA8YnJhbmQ+IHByaXZhdGUgZmllbGQAJXMgaXMgbm90IGluaXRpYWxpemVkAGZpeGVkAHRvRml4ZWQAc2V0X29iamVjdF9uYW1lX2NvbXB1dGVkAHJlZ2V4IG5vdCBzdXBwb3J0ZWQAZXZhbCBpcyBub3Qgc3VwcG9ydGVkAFJlZ0V4cCBhcmUgbm90IHN1cHBvcnRlZAB0b1NvcnRlZABpbnRlcnJ1cHRlZAAhcy0+aXNfY29tcGxldGVkACVzIG9iamVjdCBleHBlY3RlZABpZGVudGlmaWVyIGV4cGVjdGVkAGJ5dGVjb2RlIGZ1bmN0aW9uIGV4cGVjdGVkAHN0cmluZyBleHBlY3RlZABmcm9tIGNsYXVzZSBleHBlY3RlZABmdW5jdGlvbiBuYW1lIGV4cGVjdGVkAHZhcmlhYmxlIG5hbWUgZXhwZWN0ZWQAbWV0YSBleHBlY3RlZABqc19hc3luY19tb2R1bGVfZXhlY3V0aW9uX3JlamVjdGVkAGpzX3NldF9tb2R1bGVfZXZhbHVhdGVkAG1lbW9yeSBhbGxvY2F0ZWQAbWVtb3J5IHVzZWQAdG9SZXZlcnNlZABkZXJpdmVkIGNsYXNzIGNvbnN0cnVjdG9yIG11c3QgcmV0dXJuIGFuIG9iamVjdCBvciB1bmRlZmluZWQAY2Fubm90IHNldCBwcm9wZXJ0eSAnJXMnIG9mIHVuZGVmaW5lZABjYW5ub3QgcmVhZCBwcm9wZXJ0eSAnJXMnIG9mIHVuZGVmaW5lZABmbGFncyBtdXN0IGJlIHVuZGVmaW5lZABVbmRlZmluZWQAcHJpdmF0ZSBjbGFzcyBmaWVsZCBpcyBhbHJlYWR5IGRlZmluZWQAJyVzJyBpcyBub3QgZGVmaW5lZABncm91cCBuYW1lIG5vdCBkZWZpbmVkAGlzV2VsbEZvcm1lZAB0b1dlbGxGb3JtZWQAYWxsU2V0dGxlZABqc19hc3luY19tb2R1bGVfZXhlY3V0aW9uX2Z1bGZpbGxlZABjYW5ub3QgYmUgY2FsbGVkAGlzU2VhbGVkACFzaC0+aXNfaGFzaGVkAEFycmF5QnVmZmVyIGlzIGRldGFjaGVkAGpzX2FycmF5X3RvU3BsaWNlZABhZGQAJSswN2QAJTA0ZAAlMDJkJTAyZABwJStkACVjJStkACUwMmQvJTAyZC8lMCpkACUuM3MgJS4zcyAlMDJkICUwKmQAcCVkACVjJWQAOiVkAGludmFsaWQgdGhyb3cgdmFyIHR5cGUgJWQAc2MAanNfZGVmX21hbGxvYwB0cnVuYwBnYwBleGVjAGJmX2ludGVnZXJfdG9fcmFkaXhfcmVjAC90bXAvcXVpY2tqcy9xdWlja2pzLmMAL3RtcC9xdWlja2pzL2xpYnJlZ2V4cC5jAC90bXAvcXVpY2tqcy9saWJiZi5jAC90bXAvcXVpY2tqcy9saWJ1bmljb2RlLmMAc3ViAHByb21pc2VfcmVhY3Rpb25fam9iAGpzX3Byb21pc2VfcmVzb2x2ZV90aGVuYWJsZV9qb2IAMGIAciAhPSBhICYmIHIgIT0gYgBxICE9IGEgJiYgcSAhPSBiAHJ3YQByICE9IGEAX19sb29rdXBTZXR0ZXJfXwBfX2RlZmluZVNldHRlcl9fAF9fbG9va3VwR2V0dGVyX18AX19kZWZpbmVHZXR0ZXJfXwBfX3Byb3RvX18AW1N5bWJvbC5zcGxpdF0AW1N5bWJvbC5zcGVjaWVzXQBbU3ltYm9sLml0ZXJhdG9yXQBbU3ltYm9sLmFzeW5jSXRlcmF0b3JdAFtTeW1ib2wubWF0Y2hBbGxdAFtTeW1ib2wubWF0Y2hdAFtTeW1ib2wuc2VhcmNoXQBbU3ltYm9sLnRvU3RyaW5nVGFnXQBbU3ltYm9sLnRvUHJpbWl0aXZlXQBbdW5zdXBwb3J0ZWQgdHlwZV0AW2Z1bmN0aW9uIGJ5dGVjb2RlXQBbU3ltYm9sLmhhc0luc3RhbmNlXQBbU3ltYm9sLnJlcGxhY2VdAFsAJTAyZDolMDJkOiUwMmQuJTAzZFoAUE9TSVRJVkVfSU5GSU5JVFkATkVHQVRJVkVfSU5GSU5JVFkAcC0+Y2xhc3NfaWQgPT0gSlNfQ0xBU1NfQVJSQVkAc3RhY2tfbGVuIDwgUE9QX1NUQUNLX0xFTl9NQVgALSUwMmQtJTAyZFQASlNfQXRvbUdldFN0clJUAG9wY29kZSA8IFJFT1BfQ09VTlQASlNfVkFMVUVfR0VUX1RBRyhmdW5jX3JldCkgPT0gSlNfVEFHX0lOVABCWVRFU19QRVJfRUxFTUVOVAAlMDJkOiUwMmQ6JTAyZCBHTVQASlNfVkFMVUVfR0VUX1RBRyhzZi0+Y3VyX2Z1bmMpID09IEpTX1RBR19PQkpFQ1QAdmFyX2tpbmQgPT0gSlNfVkFSX1BSSVZBVEVfU0VUVEVSAE1BWF9TQUZFX0lOVEVHRVIATUlOX1NBRkVfSU5URUdFUgBhc1VpbnROAGFzSW50TgBpc05hTgBEYXRlIHZhbHVlIGlzIE5hTgB0b0pTT04ARVBTSUxPTgBwLT5nY19vYmpfdHlwZSA9PSBKU19HQ19PQkpfVFlQRV9KU19PQkpFQ1QgfHwgcC0+Z2Nfb2JqX3R5cGUgPT0gSlNfR0NfT0JKX1RZUEVfRlVOQ1RJT05fQllURUNPREUgfHwgcC0+Z2Nfb2JqX3R5cGUgPT0gSlNfR0NfT0JKX1RZUEVfQVNZTkNfRlVOQ1RJT04ATkFOACUwMmQ6JTAyZDolMDJkICVjTQBzdGFja190b3AgPT0gTlVMTABzLT5sYWJlbF9zbG90c1tsYWJlbF0uZmlyc3RfcmVsb2MgPT0gTlVMTABsYWJlbF9zbG90c1tpXS5maXJzdF9yZWxvYyA9PSBOVUxMAHBycyAhPSBOVUxMAHNmLT5jdXJfc3AgIT0gTlVMTABzZiAhPSBOVUxMAG1yMSAhPSBOVUxMAHZhcl9raW5kICE9IEpTX1ZBUl9OT1JNQUwAYi0+ZnVuY19raW5kID09IEpTX0ZVTkNfTk9STUFMAGVuY29kZVVSSQBkZWNvZGVVUkkAUEkAc3BlY2lhbCA9PSBQVVRfTFZBTFVFX05PS0VFUCB8fCBzcGVjaWFsID09IFBVVF9MVkFMVUVfTk9LRUVQX0RFUFRIAHMtPnN0YXRlID09IEpTX0FTWU5DX0dFTkVSQVRPUl9TVEFURV9FWEVDVVRJTkcAbTEtPnN0YXR1cyA9PSBKU19NT0RVTEVfU1RBVFVTX0VWQUxVQVRJTkcAbTEtPnN0YXR1cyA9PSBKU19NT0RVTEVfU1RBVFVTX0xJTktJTkcAcHJlYyAhPSBCRl9QUkVDX0lORgBwcmVjMSAhPSBCRl9QUkVDX0lORgAwMTIzNDU2Nzg5QUJDREVGAFNJWkUATUFYX1ZBTFVFAE1JTl9WQUxVRQBOQU1FAGV2YWxfdHlwZSA9PSBKU19FVkFMX1RZUEVfR0xPQkFMIHx8IGV2YWxfdHlwZSA9PSBKU19FVkFMX1RZUEVfTU9EVUxFAExPRzJFAExPRzEwRQBzLT5zdGF0ZSA9PSBKU19BU1lOQ19HRU5FUkFUT1JfU1RBVEVfQVdBSVRJTkdfUkVUVVJOIHx8IHMtPnN0YXRlID09IEpTX0FTWU5DX0dFTkVSQVRPUl9TVEFURV9DT01QTEVURUQAbS0+c3RhdHVzID09IEpTX01PRFVMRV9TVEFUVVNfVU5MSU5LRUQgfHwgbS0+c3RhdHVzID09IEpTX01PRFVMRV9TVEFUVVNfTElOS0VEIHx8IG0tPnN0YXR1cyA9PSBKU19NT0RVTEVfU1RBVFVTX0VWQUxVQVRJTkdfQVNZTkMgfHwgbS0+c3RhdHVzID09IEpTX01PRFVMRV9TVEFUVVNfRVZBTFVBVEVEAG0xLT5zdGF0dXMgPT0gSlNfTU9EVUxFX1NUQVRVU19FVkFMVUFUSU5HIHx8IG0xLT5zdGF0dXMgPT0gSlNfTU9EVUxFX1NUQVRVU19FVkFMVUFUSU5HX0FTWU5DIHx8IG0xLT5zdGF0dXMgPT0gSlNfTU9EVUxFX1NUQVRVU19FVkFMVUFURUQAbTEtPnN0YXR1cyA9PSBKU19NT0RVTEVfU1RBVFVTX0xJTktJTkcgfHwgbTEtPnN0YXR1cyA9PSBKU19NT0RVTEVfU1RBVFVTX0xJTktFRCB8fCBtMS0+c3RhdHVzID09IEpTX01PRFVMRV9TVEFUVVNfRVZBTFVBVElOR19BU1lOQyB8fCBtMS0+c3RhdHVzID09IEpTX01PRFVMRV9TVEFUVVNfRVZBTFVBVEVEAG0tPnN0YXR1cyA9PSBKU19NT0RVTEVfU1RBVFVTX0xJTktFRABtLT5zdGF0dXMgPT0gSlNfTU9EVUxFX1NUQVRVU19VTkxJTktFRABVVEMAbS0+c3RhdHVzID09IEpTX01PRFVMRV9TVEFUVVNfRVZBTFVBVElOR19BU1lOQwBtb2R1bGUtPnN0YXR1cyA9PSBKU19NT0RVTEVfU1RBVFVTX0VWQUxVQVRJTkdfQVNZTkMAPGlucHV0PgA8aW5pdFNjcmlwdD4APGV2YWxTY3JpcHQ+ADxzZXQ+ADxhbm9ueW1vdXM+ADxjb21tRnVuPgA8Y2FsbEV4dGVybmFsRnVuY3Rpb24+ADxudWxsPgBiaWdpbnQgb3BlcmFuZHMgYXJlIGZvcmJpZGRlbiBmb3IgPj4+ACZxdW90OwBzZXRVaW50OABnZXRVaW50OABzZXRJbnQ4AGdldEludDgAbWFsZm9ybWVkIFVURi04AHJhZGl4IG11c3QgYmUgYmV0d2VlbiAyIGFuZCAzNgBzZXRVaW50MTYAZ2V0VWludDE2AHNldEludDE2AGdldEludDE2AGFyZ2MgPT0gNQBzZXRCaWdVaW50NjQAZ2V0QmlnVWludDY0AHNldEJpZ0ludDY0AGdldEJpZ0ludDY0AHNldEZsb2F0NjQAZ2V0RmxvYXQ2NABhcmdjID09IDMAYXRhbjIAbG9nMgBTUVJUMV8yAFNRUlQyAExOMgBjbHozMgBzZXRVaW50MzIAZ2V0VWludDMyAHNldEludDMyAGdldEludDMyAHNldEZsb2F0MzIAZ2V0RmxvYXQzMgBzdGFja19sZW4gPj0gMgBKU19BdG9tSXNOdW1lcmljSW5kZXgxAGpzX2ZjdnQxAEpTX0NvbXBhY3RCaWdJbnQxAGV4cG0xAHIgIT0gYTEgJiYgciAhPSBiMQBscy0+YWRkciA9PSAtMQBucSA+PSAxAHN0YWNrX2xlbiA+PSAxAHAtPmhlYWRlci5yZWZfY291bnQgPT0gMQBwLT5zaGFwZS0+aGVhZGVyLnJlZl9jb3VudCA9PSAxAHN0YWNrX2xlbiA9PSAxAGpzX2ZyZWVfc2hhcGUwAGxvZzEwAExOMTAAcC0+cmVmX2NvdW50ID4gMAB2YXJfcmVmLT5oZWFkZXIucmVmX2NvdW50ID4gMABtLT5wZW5kaW5nX2FzeW5jX2RlcGVuZGVuY2llcyA+IDAAc3RhY2tfc2l6ZSA+IDAAY3Bvb2xfaWR4ID49IDAAcnQtPmF0b21fY291bnQgPj0gMABscy0+cmVmX2NvdW50ID49IDAAcy0+aXNfZXZhbCB8fCBzLT5jbG9zdXJlX3Zhcl9jb3VudCA9PSAwAHAtPnJlZl9jb3VudCA9PSAwAGN0eC0+aGVhZGVyLnJlZl9jb3VudCA9PSAwAHNoLT5oZWFkZXIucmVmX2NvdW50ID09IDAAcC0+bWFyayA9PSAwAChwci0+dS5pbml0LnJlYWxtX2FuZF9pZCAmIDMpID09IDAAKG5ld19oYXNoX3NpemUgJiAobmV3X2hhc2hfc2l6ZSAtIDEpKSA9PSAwAGkgIT0gMABzaXplICE9IDAAXiRcLiorPygpW117fXwvADwvADAuAG1pc3NpbmcgYmluZGluZyBwYXR0ZXJuLi4uAGJpZ2ludCBhcmd1bWVudCB3aXRoIHVuYXJ5ICsAYXN5bmMgZnVuY3Rpb24gKgAKfSkAbGlzdF9lbXB0eSgmcnQtPmdjX29ial9saXN0KQBqID09IChzaC0+cHJvcF9jb3VudCAtIHNoLT5kZWxldGVkX3Byb3BfY291bnQpACFfX0pTX0F0b21Jc1RhZ2dlZEludChkZXNjcikAIWF0b21faXNfZnJlZShwKQAobnVsbCkAIChuYXRpdmUpAGpzX2NsYXNzX2hhc19ieXRlY29kZShwLT5jbGFzc19pZCkAbmlwX2NhdGNoOiBubyBjYXRjaCBvcCAocGM9JWQpAGluY29uc2lzdGVudCBjYXRjaCBwb3NpdGlvbjogJWQgJWQgKHBjPSVkKQBpbmNvbnNpc3RlbnQgc3RhY2sgc2l6ZTogJWQgJWQgKHBjPSVkKQBieXRlY29kZSBidWZmZXIgb3ZlcmZsb3cgKG9wPSVkLCBwYz0lZCkAc3RhY2sgb3ZlcmZsb3cgKG9wPSVkLCBwYz0lZCkAc3RhY2sgdW5kZXJmbG93IChvcD0lZCwgcGM9JWQpAGludmFsaWQgb3Bjb2RlIChvcD0lZCwgcGM9JWQpACg\u002FOikAaWR4IDwgY291bnRvZihjYXNlX2NvbnZfdGFibGUxKQBubyBmdW5jdGlvbiBmaWxlbmFtZSBmb3IgaW1wb3J0KCkALV8uIX4qJygpACBhbm9ueW1vdXMoAFN5bWJvbCgAZXhwZWN0aW5nICd9JwBjbGFzcyBjb25zdHJ1Y3RvcnMgbXVzdCBiZSBpbnZva2VkIHdpdGggJ25ldycAZXhwZWN0aW5nICdhcycAdW5leHBlY3RlZCB0b2tlbiBpbiBleHByZXNzaW9uOiAnJS4qcycAdW5leHBlY3RlZCB0b2tlbjogJyUuKnMnAHJlZGVjbGFyYXRpb24gb2YgJyVzJwBkdXBsaWNhdGUgZXhwb3J0ZWQgbmFtZSAnJXMnAGNpcmN1bGFyIHJlZmVyZW5jZSB3aGVuIGxvb2tpbmcgZm9yIGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnAENvdWxkIG5vdCBmaW5kIGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnAGNvdWxkIG5vdCBsb2FkIG1vZHVsZSAnJXMnAGNhbm5vdCBkZWZpbmUgdmFyaWFibGUgJyVzJwB1bmRlZmluZWQgcHJpdmF0ZSBmaWVsZCAnJXMnAHVuc3VwcG9ydGVkIHJlZmVyZW5jZSB0byAnc3VwZXInAGludmFsaWQgdXNlIG9mICdzdXBlcicAJ2ZvciBhd2FpdCcgbG9vcCBzaG91bGQgYmUgdXNlZCB3aXRoICdvZicAJ2ZvciBvZicgZXhwcmVzc2lvbiBjYW5ub3Qgc3RhcnQgd2l0aCAnYXN5bmMnAGV4cGVjdGluZyAnJWMnAHVucGFyZW50aGVzaXplZCB1bmFyeSBleHByZXNzaW9uIGNhbid0IGFwcGVhciBvbiB0aGUgbGVmdC1oYW5kIHNpZGUgb2YgJyoqJwBpbnZhbGlkIHVzZSBvZiAnaW1wb3J0KCknAGV4cGVjdGluZyAlJQA7Lz86QCY9KyQsIwA9IgBzZXQgAGdldCAAW29iamVjdCAAYXN5bmMgZnVuY3Rpb24gAGJvdW5kIAAlLjNzLCAlMDJkICUuM3MgJTAqZCAAYXN5bmMgADogACAgICAgICAgICAACikgewoACkpTT2JqZWN0IGNsYXNzZXMKACUtMjBzICU4cyAlOHMKACAgJTVkICAlMi4wZCAlcwoAICAlM3UgKyAlLTJ1ICAlcwoAICBtYWxsb2NfdXNhYmxlX3NpemUgdW5hdmFpbGFibGUKACUtMjBzICU4bGxkCgAlLTIwcyAlOGxsZCAlOGxsZAoAX19KU19GcmVlVmFsdWU6IHVua25vd24gdGFnPSVkCgAlLTIwcyAlOGxsZCAlOGxsZCAgKCUwLjFmIHBlciBmYXN0IGFycmF5KQoAJS0yMHMgJThsbGQgJThsbGQgICglMC4xZiBwZXIgb2JqZWN0KQoAJS0yMHMgJThsbGQgJThsbGQgICglMC4xZiBwZXIgZnVuY3Rpb24pCgAlLTIwcyAlOGxsZCAlOGxsZCAgKCUwLjFmIHBlciBhdG9tKQoAJS0yMHMgJThsbGQgJThsbGQgICglMC4xZiBwZXIgYmxvY2spCgAlLTIwcyAlOGxsZCAlOGxsZCAgKCVkIG92ZXJoZWFkLCAlMC4xZiBhdmVyYWdlIHNsYWNrKQoAJS0yMHMgJThsbGQgJThsbGQgICglMC4xZiBwZXIgc3RyaW5nKQoAJS0yMHMgJThsbGQgJThsbGQgICglMC4xZiBwZXIgc2hhcGUpCgBRdWlja0pTIG1lbW9yeSB1c2FnZSAtLSAxLjAuMCB2ZXJzaW9uLCAlZC1iaXQsIG1hbGxvYyBsaW1pdDogJWxsZAoKAAAAAJIAQfyWAQsNkwAAAEwAAABNAAAAlABBlJcBCz2VAAAATgAAAE8AAACWAAAATgAAAE8AAACXAAAATgAAAE8AAACYAAAATgAAAE8AAACZAAAATAAAAE0AAACZAEHclwELDZwAAABOAAAATwAAAJIAQfSXAQv9Ap0AAABQAAAAUQAAAJ0AAABSAAAAUwAAAJ0AAABUAAAAVQAAAJ0AAABWAAAAVwAAAJ4AAABSAAAAUwAAAJ8AAABYAAAAWQAAAKAAAABaAAAAAAAAAKEAAABbAAAAAAAAAKIAAABbAAAAAAAAAKMAAABcAAAAXQAAAKQAAABcAAAAXQAAAKUAAABcAAAAXQAAAKYAAABcAAAAXQAAAKcAAABcAAAAXQAAAKgAAABcAAAAXQAAAKkAAABcAAAAXQAAAKoAAABcAAAAXQAAAKsAAABcAAAAXQAAAKwAAABcAAAAXQAAAK0AAABcAAAAXQAAAK4AAABcAAAAXQAAAK8AAABOAAAATwAAALAAAABeAAAAXwAAALEAAABeAAAAXwAAALIAAABeAAAAXwAAALMAAABeAAAAXwAAALQAAABgAAAAYQAAALUAAABgAAAAYQAAALYAAABiAAAAYwAAALcAAABiAAAAYwAAALgAAABkAAAAZQAAALkAAABmAAAAZwBBgJsBCwFoAEGQmwELDWkAAAAAAAAAagAAAGsAQbybAQsBbABByJsBCw1tAAAAbgAAAG8AAABwAEHgmwELtxvsKQAAQAEAACUKAAD4AAAAuA8AADAAAABaJQAAEAAAADkuAABYAAAAkgAAAHEAAAByAAAAcwAAAHQAAAB1AAAAdgAAAHcAAAB4AAAAeQAAAFBdAAAQXgAAwF4AABBfAABQXwAAcF8AAAwLBQQCAgAAuwAAAHoAAAB7AAAAvAAAAHwAAAB9AAAAvQAAAHwAAAB9AAAAvgAAAFIAAABTAAAAvwAAAH4AAAB\u002FAAAAwAAAAH4AAAB\u002FAAAALwAAAIAAAACBAAAAwQAAAFIAAABTAAAAwgAAAIIAAACDAAAAAAAAAOkWAAAaFwAAJRcAAN0WAAAQFwAANBcAAPMWAAABFwAAY29weVdpdGhpbgBlbnRyaWVzAGZpbGwAZmluZABmaW5kSW5kZXgAZmluZExhc3QAZmluZExhc3RJbmRleABmbGF0AGZsYXRNYXAAaW5jbHVkZXMAa2V5cwB0b1JldmVyc2VkAHRvU29ydGVkAHRvU3BsaWNlZAB2YWx1ZXMAAAAAAAEBAgIDAwIDAAAAAAAAbnVsbABmYWxzZQB0cnVlAGlmAGVsc2UAcmV0dXJuAHZhcgB0aGlzAGRlbGV0ZQB2b2lkAHR5cGVvZgBuZXcAaW4AaW5zdGFuY2VvZgBkbwB3aGlsZQBmb3IAYnJlYWsAY29udGludWUAc3dpdGNoAGNhc2UAZGVmYXVsdAB0aHJvdwB0cnkAY2F0Y2gAZmluYWxseQBmdW5jdGlvbgBkZWJ1Z2dlcgB3aXRoAGNsYXNzAGNvbnN0AGVudW0AZXhwb3J0AGV4dGVuZHMAaW1wb3J0AHN1cGVyAGltcGxlbWVudHMAaW50ZXJmYWNlAGxldABwYWNrYWdlAHByaXZhdGUAcHJvdGVjdGVkAHB1YmxpYwBzdGF0aWMAeWllbGQAYXdhaXQAAGxlbmd0aABmaWxlTmFtZQBsaW5lTnVtYmVyAG1lc3NhZ2UAY2F1c2UAZXJyb3JzAHN0YWNrAG5hbWUAdG9TdHJpbmcAdG9Mb2NhbGVTdHJpbmcAdmFsdWVPZgBldmFsAHByb3RvdHlwZQBjb25zdHJ1Y3RvcgBjb25maWd1cmFibGUAd3JpdGFibGUAZW51bWVyYWJsZQB2YWx1ZQBnZXQAc2V0AG9mAF9fcHJvdG9fXwB1bmRlZmluZWQAbnVtYmVyAGJvb2xlYW4Ac3RyaW5nAG9iamVjdABzeW1ib2wAaW50ZWdlcgB1bmtub3duAGFyZ3VtZW50cwBjYWxsZWUAY2FsbGVyADxldmFsPgA8cmV0PgA8dmFyPgA8YXJnX3Zhcj4APHdpdGg+AGxhc3RJbmRleAB0YXJnZXQAaW5kZXgAaW5wdXQAZGVmaW5lUHJvcGVydGllcwBhcHBseQBqb2luAGNvbmNhdABzcGxpdABjb25zdHJ1Y3QAZ2V0UHJvdG90eXBlT2YAc2V0UHJvdG90eXBlT2YAaXNFeHRlbnNpYmxlAHByZXZlbnRFeHRlbnNpb25zAGhhcwBkZWxldGVQcm9wZXJ0eQBkZWZpbmVQcm9wZXJ0eQBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IAb3duS2V5cwBhZGQAZG9uZQBuZXh0AHZhbHVlcwBzb3VyY2UAZmxhZ3MAZ2xvYmFsAHVuaWNvZGUAcmF3AG5ldy50YXJnZXQAdGhpcy5hY3RpdmVfZnVuYwA8aG9tZV9vYmplY3Q+ADxjb21wdXRlZF9maWVsZD4APHN0YXRpY19jb21wdXRlZF9maWVsZD4APGNsYXNzX2ZpZWxkc19pbml0PgA8YnJhbmQ+ACNjb25zdHJ1Y3RvcgBhcwBmcm9tAG1ldGEAKmRlZmF1bHQqACoATW9kdWxlAHRoZW4AcmVzb2x2ZQByZWplY3QAcHJvbWlzZQBwcm94eQByZXZva2UAYXN5bmMAZXhlYwBncm91cHMAaW5kaWNlcwBzdGF0dXMAcmVhc29uAGdsb2JhbFRoaXMAYmlnaW50AG5vdC1lcXVhbAB0aW1lZC1vdXQAb2sAdG9KU09OAE9iamVjdABBcnJheQBFcnJvcgBOdW1iZXIAU3RyaW5nAEJvb2xlYW4AU3ltYm9sAEFyZ3VtZW50cwBNYXRoAEpTT04ARGF0ZQBGdW5jdGlvbgBHZW5lcmF0b3JGdW5jdGlvbgBGb3JJbkl0ZXJhdG9yAFJlZ0V4cABBcnJheUJ1ZmZlcgBTaGFyZWRBcnJheUJ1ZmZlcgBVaW50OENsYW1wZWRBcnJheQBJbnQ4QXJyYXkAVWludDhBcnJheQBJbnQxNkFycmF5AFVpbnQxNkFycmF5AEludDMyQXJyYXkAVWludDMyQXJyYXkAQmlnSW50NjRBcnJheQBCaWdVaW50NjRBcnJheQBGbG9hdDMyQXJyYXkARmxvYXQ2NEFycmF5AERhdGFWaWV3AEJpZ0ludABNYXAAU2V0AFdlYWtNYXAAV2Vha1NldABNYXAgSXRlcmF0b3IAU2V0IEl0ZXJhdG9yAEFycmF5IEl0ZXJhdG9yAFN0cmluZyBJdGVyYXRvcgBSZWdFeHAgU3RyaW5nIEl0ZXJhdG9yAEdlbmVyYXRvcgBQcm94eQBQcm9taXNlAFB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\u002F\u002F\u002F\u002F\u002F7g3AAABAwAA3RsAAAAAAACENQAAAwABAAEBAACYAAAATBUAAAMAAQABAQAAmgAAAB4oAAADAAEAAQEAAJsAAADaGgAAAwABAAABAACcAAAAVicAAAECAQCdAAAAAAAAAEYkAAADAAEAAQEAAJ4AAAB7EwAAAwABAAABAACfAAAACBAAAAMJAAB7EwAA\u002F\u002F\u002F\u002F\u002F143AAADCQAAexMAAP\u002F\u002F\u002F\u002F98FAAAAwAJAAABAACfAAAAuDcAAAEDAADEDgAAAAAAAGUOAAADAAIAAgEAAJgAAAC8DgAAAwACAAEBAACZAAAATBUAAAMAAgABAQAAmgAAAB4oAAADAAIAAQEAAJsAAAC4NwAAAQMAANkbAAAAAAAAhDUAAAMAAwABAQAAmAAAAEwVAAADAAMAAQEAAJoAAAAeKAAAAwADAAEBAACbAAAAuDcAAAEDAADADgAAAAAAAHAKAAADAAAAAAwAAKAAAAC4NwAAAQMAAEsWAAAAAAAAcAoAAAMAAQAADAAAoAAAALg3AAABAwAAPhYAAAAAAABKBwAAAwABAAIBAAChAAAATTcAAAEBAACTAAAAAAAAANIfAAADAAAAAgAAAKIAAAA5JAAAAwAAAAEAAACjAAAATwYAAAMAAAABAAAApAAAALg3AAABAwAAzigAAAAAAACDJwAAAwAAAAEBAAClAAAA9w4AAAMAAQABAQAApQAAAIshAAADAAAAAQEAAKYAAAABNQAAAwABAAEBAACmAAAAIAYAAAMAAgABAQAApgAAAOkvAAADAAAAAQAAAKcAAADfEQAAAwAAAAAAAACoAAAATTcAAAEBAACTAAAAAAAAALg3AAABAwAATx0AAAAAAABwNwAAAwAAAAAAAACpAAAAcAoAAAMAAAABAQAAqgAAABkcAAADAAEAAQEAAKoAAABoCAAAAwACAAEBAACqAAAAcAoAAAMAAAABAQAAqwAAABkcAAADAAEAAQEAAKsAAABoCAAAAwACAAEBAACrAAAAuDcAAAEDAADBFgAAAAAAALg3AAABAwAAIx0AAAAAAAC0JgAAAwAAAAAAAACsAAAA9iQAAAMAEwAAAQAArQAAAM03AAADAAAAAQAAAK4AAABvJQAAAwADAAABAACtAAAATiUAAAMJAABvJQAA\u002F\u002F\u002F\u002F\u002F2MlAAADACMAAAEAAK0AAAD\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\u002F\u002F\u002F\u002F\u002FCBAAAAMAAAAAAQAANQAAAHwUAAADAAIAAAEAADUAAAAmBwAAAwAAAAEAAAD2AAAAXiAAAAMAAAABAAAA9wAAAPglAAADAAAAAAAAAPgAAABNNwAAAQEAAJMAAAAAAAAAcAoAAAMAAAAADAAANgAAALg3AAABAwAALxYAAAAAAACiDQAAAwAAAAIAAAD5AAAAwQ8AAAMAAAABAAAA+gAAAKc5AAADAAAAAQAAAPsAAAAVKAAAAwAAAAEAAAD8AAAAUTsAAAMAAAABAQAA\u002FQAAAFUNAAADAAEAAQEAAP0AAABHOwAAAwAAAAEBAAD+AAAAQg0AAAMAAQABAQAA\u002FgAAAIQpAAADAAAAAQAAAP8AAACCKQAAAwAAAAEAAAAAAQAA0QUAAAAGAAAAAAAAAADwf7s5AAAABgAAAAAAAAAA+H+BNAAAAAcAQZDXAQtlOh0AAAMAAAACAAAAAQEAALEbAAADAAAAAgAAAAIBAABBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OUAqXystLi8AQYDYAQuWA6wiAAADAAAAAQAAAAMBAABZMgAAAwAAAAEAAAAEAQAAEx8AAAMAAAABAAAABQEAAPYkAAADAAAAAQEAAAYBAAA\u002FJQAAAwABAAABAAAGAQAAtCYAAAMAAAAAAAAABwEAAKINAAADCQAAog0AAAAAAADBDwAAAwkAAMEPAAAAAAAApzkAAAMAAAABAAAACAEAABUoAAADAAAAAQAAAAkBAAAZGgAAAwAAAAEAAAAKAQAAIxoAAAMAAAABAAAACwEAAGA8AAAABgAA\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F739qPAAAAAYAAAEAAAAAAAAAuzkAAAAGAAAAAAAAAAD4f1g4AAAABgAAAAAAAAAA8P9GOAAAAAYAAAAAAAAAAPB\u002FxjkAAAAGAAAAAAAAAACwPHY5AAAABgAA\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP0OHOQAAAAYAAP\u002F\u002F\u002F\u002F\u002F\u002F\u002Fz\u002FD9iQAAAMAAAAAAAAADAEAALQmAAADAAAAAAAAAA0BAAAELwAAAwAAAAEAAAAOAQAAmQwAAAMAAAABAAAADwEAAMEIAAADAAAAAQAAABABAADDIwAAAQQAQaDbAQuSB+cPAAADAAEAAQEAABEBAAD9DwAAAwAAAAEAAAASAQAA9g8AAAMAAAABAQAAEQEAAOMPAAADAAAAAQAAABMBAADqDwAAAwAAAAEAAAAUAQAA5zQAAAMAAAAAAAAAFQEAAPQ0AAADAAAAAAAAABYBAACgJgAAAwAAAAEBAAAXAQAAqCYAAAMAAQABAQAAFwEAAKAUAAADAAAAAQEAABgBAABqIwAAAwACAAEBAAAYAQAAXyMAAAMAAQABAQAAGAEAAC8kAAADAM0AAQEAABkBAACWIQAAAwDOAAEBAAAZAQAAPyQAAAMA0AABAQAAGQEAAL0NAAADAAAAAgAAABoBAACDJAAAAwAAAAIAAAAbAQAAkxUAAAMAAAACAAAAHAEAANwvAAADAAAAAgAAAB0BAADcDwAAAwAAAAEAAAAeAQAA7i8AAAMAAAACAQAAHwEAAJ8hAAADAAEAAgEAAB8BAAC8MQAAAwABAAEBAAAgAQAAOwsAAAMAAAABAQAAIAEAAGogAAADAAMAAAEAACEBAAC0MQAAAwACAAABAAAhAQAA1w0AAAMJAAC0MQAA\u002F\u002F\u002F\u002F\u002FzELAAADAAEAAAEAACEBAAD1DQAAAwkAADELAAD\u002F\u002F\u002F\u002F\u002F9iQAAAMAAAAAAAAAIgEAALQmAAADAAAAAAAAACIBAAANKAAAAwAAAAEAAAAjAQAAHSkAAAMAAAABAAAAJAEAANYoAAADAAEAAAEAACUBAAD0KAAAAwAAAAABAAAlAQAA4igAAAMAAQAAAQAAJQEAAAApAAADAAAAAAEAACUBAABeNwAAAwAFAAABAAA1AAAATRcAAAMAAAABAQAAJgEAANYlAAADAAEAAAEAACYBAADGIgAAAwACAAABAAAmAQAAwzEAAAMAAwAAAQAAJgEAAFMyAAADAAQAAAEAACYBAABDFwAAAwAFAAEBAAAmAQAA7SYAAAMABgABAQAAJgEAACwVAAADAAcAAAEAACYBAADHIgAAAwAIAAEBAAAmAQAAhCEAAAMACQAAAQAAJgEAABwtAAADAAoAAAEAACYBAACHNgAAAwALAAABAAAmAQAAchsAAAMADAAAAQAAJgEAAO42AACwKwAA1iUAAAAAAADGIgAAAAAAAOM2AAAAAAAAjQoAAAAAAACBDAAARxcAAIEMAABWJwAAHSMAAAAAAADuNgAALiYAAIQhAAAAAAAAHC0AAAAAAACHNgAAAAAAAHIbAEHA4gELmhJwCgAAAwAAAAAMAAAnAQAAuDcAAAEDAABfFgAAAAAAAN0jAAADCAAAcHEAACwAAAApHwAAAwAAAAIBAAAoAQAA+gcAAAMAAQACAQAAKAEAADQVAAADAAAAAQYAACkBAAA9FwAAAwAAAAEGAAAqAQAAqiEAAAMAAAABBgAAKwEAALgwAAADAAAAAQYAACwBAAAiCwAAAwAAAAEGAAAtAQAAHhIAAAMAAAABBgAALgEAAB8fAAADAAAAAQYAAC8BAAALIAAAAwAAAAEGAAAwAQAAJUEAAAMAAAACBwAAMQEAAB8SAAADAAAAAQYAADIBAABnGwAAAwAAAAEGAAAzAQAAUSQAAAMAAAABBgAANAEAAHEIAAADAAAAAgcAADUBAAAgHwAAAwAAAAEGAAA2AQAADCAAAAMAAAABBgAANwEAAAI2AAADAAAAAQYAADgBAACQHwAAAwAAAAEGAAA5AQAA6CMAAAMAAAABBgAAOgEAAAAkAAADAAAAAQYAADsBAAAGJAAAAwAAAAEGAAA8AQAA5yMAAAMAAAABBgAAPQEAAP8jAAADAAAAAQYAAD4BAAAFJAAAAwAAAAEGAAA\u002FAQAAxUEAAAMAAAABBgAAQAEAAPgbAAADAAAAAQYAAEEBAAArQQAAAwAAAAEGAABCAQAAW0IAAAMAAAABBgAAQwEAACwLAAADAAAAAQYAAEQBAABiCwAAAwAAAAIAAABFAQAAYyAAAAMAAAAAAAAARgEAAKwwAAADAAAAAQYAAEcBAACMIAAAAwAAAAIAAABIAQAAQkEAAAMAAAABAAAASQEAALg3AAABAwAA3SMAAAAAAADJPAAAAAYAAGlXFIsKvwVAYUIAAAAGAAAWVbW7sWsCQD5BAAAABgAA7zn6\u002FkIu5j++PAAAAAYAAP6CK2VHFfc\u002FxDwAAAAGAAAO5SYVe8vbP1s7AAAABgAAGC1EVPshCUAwQQAAAAYAAM07f2aeoOY\u002FOEEAAAAGAADNO39mnqD2P+8OAAADCAAAQHQAAA4AAAAkBgAAAwAAAAMAAABKAQAAyA4AAAMAAAACAAAASwEAAJwFAAADAAEAAwEAAL8AAAB5BQAAAwAAAAIAAABMAQAAvA4AAAMAAAACAAAATQEAAK4VAAADAAEAAgEAAMYAAADLJgAAAwABAAEBAAC9AAAATBUAAAMAAAACAAAATgEAADIsAAADAAEAAQEAAMQAAAA9EAAAAwAAAAEAAABPAQAAsRIAAAMAAQABAQAAxQAAAGUOAAADAAAAAwAAAFABAAC8JgAAAwAAAAIAAABRAQAAuDcAAAEDAADvDgAAAAAAAPYkAAADAAAAAAAAAFIBAAC0JgAAAwAAAAAAAABTAQAAzTcAAAMAAAABAAAAUwEAALg3AAABAwAAniAAAAAAAABaHAAAAQEAAFQBAAAAAAAAVBcAAAMAAAABAAAAVQEAAFgXAAADAAAAAQAAAFYBAABwCgAAAwAAAAEMAABXAQAAGRwAAAMAAQABDAAAVwEAAGgIAAADAAIAAQwAAFcBAAC4NwAAAQMAAMYWAAAAAAAAuDcAAAEDAAAoHQAAAAAAANIjAAABAhMAWAEAAAAAAADcLwAAAwATAAIBAABZAQAAuDcAAAEDAABfGgAAAAAAALEIAAADAAAAAQAAAFoBAABNNwAAAQEAAJMAAAAAAAAA0iMAAAECFABYAQAAAAAAANwvAAADABQAAgEAAFkBAAC4NwAAAQMAADgaAAAAAAAATTcAAAEBAACTAAAAAAAAAMMjAAABAQAAWwEAAAAAAADnDwAAAwAAAAEAAABcAQAAWiMAAAMAAAACAAAAXQEAADEaAAABAgAAXgEAAAAAAADSIwAAAQIAAF8BAAAAAAAAFQ4AAAECAABgAQAAAAAAAGUOAAADAAAAAQAAAGEBAAB7EwAAAwABAAABAABiAQAAXjcAAAMJAAB7EwAA\u002F\u002F\u002F\u002F\u002FwgQAAADAAAAAAEAAGIBAAB8FAAAAwACAAABAABiAQAAuDcAAAEBAABjAQAAAAAAAC0fAAADAAAAAgAAAGQBAAAaBgAAAwAIAAEBAADjAAAA2CkAAAMACQABAQAA4wAAAEYkAAADAAoAAQEAAOMAAADNGwAAAwALAAEBAADjAAAATRgAAAMADAABAQAA4wAAAFQvAAADAAgAAQEAAOQAAADhDQAAAwAJAAEBAADkAAAASSEAAAMAAAABAAAAZQEAAOowAAADAAAAAQEAAGYBAADABwAAAwABAAEBAABmAQAAFgsAAAMAAgABAQAAZgEAALIHAAADAAMAAQEAAGYBAABfKAAAAwAAAAAAAABnAQAA3jMAAAMAAAAAAAAAaAEAANwvAAADAAAAAgAAAGkBAACFBgAAAwAAAAIAAABqAQAAJwsAAAMAAAABAAAAawEAAL0yAAADAAAAAQAAAGwBAAAkHwAAAwAAAAEBAABtAQAAPyUAAAMAAQAAAQAAbQEAAKAmAAADAAAAAQEAAG4BAACoJgAAAwABAAEBAABuAQAAoBQAAAMA\u002F\u002F8BAQAAbgEAAF4gAAADAAAAAQAAAG8BAAD4JQAAAwAAAAAAAABwAQAATTcAAAEBAACTAAAAAAAAADEaAAABAgEAXgEAAAAAAADSIwAAAQIBAF8BAAAAAAAAFQ4AAAECAQBgAQAAAAAAAGxAAAADABYAAQEAAHEBAABbQAAAAwAXAAEBAABxAQAAwEAAAAMAGAABAQAAcQEAAK1AAAADABkAAQEAAHEBAABlQQAAAwAaAAEBAABxAQAAUkEAAAMAGwABAQAAcQEAAPlAAAADABwAAQEAAHEBAADgQAAAAwAdAAEBAABxAQAAeUEAAAMAHgABAQAAcQEAABBBAAADAB8AAQEAAHEBAABkQAAAAwAWAAIBAAByAQAAUkAAAAMAFwACAQAAcgEAALdAAAADABgAAgEAAHIBAACjQAAAAwAZAAIBAAByAQAAXEEAAAMAGgACAQAAcgEAAEhBAAADABsAAgEAAHIBAADtQAAAAwAcAAIBAAByAQAA00AAAAMAHQACAQAAcgEAAG5BAAADAB4AAgEAAHIBAAAFQQAAAwAfAAIBAAByAQAAuDcAAAEDAAC4CABB5PQBC6UDAgAAAAAAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAAAAAAQAAAAEAAAArRAAA8EgAACVEAABzAQAAdAEAAHMBAAB1AQAAdgEAAHcBAAB4AQAAeQEAAHoBAAB7AQAAfAEAAH0BAAB+AQAAfQEAAH8BAACAAQAAgQEAAIIBAACDAQAAhAEAAIUBAACGAQAAHw8HAwEAAAAAAAAAgAAAAAAIAAAAAAEAAAAgAAAAAAQBAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAQAAAAEAAAABAAAAAQAAAAFAAAABQBBk\u002FgBC5UCgAAAAABgTsJQp\u002FTU1AAAAEAAAAAA0mggN8rlHgqNZIQxej4VuHUymC3EaVOdqqqqKquqqqowJ2EoVHpqaqEmiCbm\u002FfM+gxMAJUSnyLoGZ7QjCcfAgvEplyLtPciy\u002FX+eIStXraWIO8Mgqyl82gAAACAAAAAAfrVQH7OEWKzGLLIeb+KmihjhIR6yql0MIc2dHeQ0mEN4TCQdZQ16NokFtBwMPhesW9lLHA0r16ho1+obTM74mGk0kBvlcg8FP0M7GxVvsC51b+saOPxGnOs4oBoX\u002FTsOYjBZGlaMjbPD9BUa5qKVK9ww1hn53n3MmZmZGZqZmZmA7F8ZMZRginvuKBn5Ik8Lz2r0GBjjBoxGMsIYPZ8K3ABBs\u002FoBC7AEIEcDuDIAAABAJjxNSkcDuFL92dVZAAAAYI4GcGUmPE1q8KmzbkcDuHKOAGp2\u002FdnVeW0\u002FBX0AAACA337Mgo4GcIWuBe+HJjxNikXdjYzwqbOOAQXBkEcDuJJMeJqUjgBqltYJKJj92dWZj5R0m20\u002FBZ2zxoieAAAAoDeta6HffsyiIxYjpI4GcKUAAAAAgACAAIEAggCDAIQAhQCGAIcAiACJAIoAiwCMAI0AjgCPAJAAkACRAJIAkwCUAJUAlgCWAJcAmACZAJoAmwCbAJwAnQCeAJ8AoACgAKEAogCjAKMApAClAKYApwCnAKgAqQCqAKoAqwCsAK0ArQCuAK8AsACwALEAsgCyALMAtAC1ALUAtgC3ALcAuAC5ALkAugC7ALsAvAC9AL0AvgC\u002FAMAAwADBAMEAwgDDAMMAxADFAMUAxgDHAMcAyADJAMkAygDLAMsAzADMAM0AzgDOAM8A0ADQANEA0QDSANMA0wDUANQA1QDWANYA1wDXANgA2QDZANoA2gDbANsA3ADdAN0A3gDeAN8A4ADgAOEA4QDiAOIA4wDjAOQA5QDlAOYA5gDnAOcA6ADoAOkA6gDqAOsA6wDsAOwA7QDtAO4A7gDvAPAA8ADxAPEA8gDyAPMA8wD0APQA9QD1APYA9gD3APcA+AD4APkA+QD6APoA+wD7APwA\u002FAD9AP0A\u002FgD+AP8AIBQQDQwLCgoJCQgICAgIBwcHBwcHBwYGBgYGBgYGBgYGBgYAQfD+AQsqCgAJAA4AIAAhAKAAoQCAFoEWACALICggKiAvIDAgXyBgIAAwATD\u002F\u002FgD\u002FAEGk\u002FwELLRAAAAD+\u002F\u002F+H\u002Fv\u002F\u002FBwAAAAAQAP8D\u002Fv\u002F\u002Fh\u002F7\u002F\u002FwfMfwAAcH8AAOB\u002FAAABADAAOgBB4P8BCxEEADAAOgBBAFsAXwBgAGEAewBBgIACC7QNAQMFAQEBAQUFBQECAgMFBQEBAQICAwMFBQEBAREAAAAwmiAAAJowAHOBWgAwF2AAMAdsALOBbwAAF3AAAAd8AACBfwBAMIAAwwGYAJCBmABABpkAQJCcALSBpABALqUAMAG8AECGvABwgb8AAAHAADCBwABABMEAMAHDAECCwwAwgsQAQILFADABxwAwgccAMAHIAECCyAAwgckAMAHKAACBygAwAcsAMIHLAEACzAAAAc0AMAHOADCBzgAAAc8AMIHPAEAG0AAwAdMAQILTADCB1ABAAtYAMAHXAECC1wAwgtgAQITZADCB2wBAAtwAQALeAACB3wBQA+IAUIPjAFAD5QBAkOYAAIHuAEAS7wC0AfgAUIP4AEAC+gAwAfsAMIH7AEAo\u002FAAwARABQBIRATEBHQFAgh0BMIEeATEBHwEBgh8BQIIgATCBIQEwASIBMIEiAUAKIwEBASgBAYEoAQEBKQEAgSkBAAEqAQACKwEAgSwBAIEtAQEBLgEAATABAYEwAQCBMQEBgTIBAQEzAQABNAEAgTQBAQE1AQGBNQEBATYBAIE3AQGBOAEAATkBAIE6AQGBPgEAAUABAQFBAQCBQQEBgUMBAAFEAQCBRAEAAkUBAAFGAQABSQEBgU4BAQFPAXOBogFABLgBQAK7AQCDvQEwgb8BMAHDATADxAEwAcYBMALHAdAByAEwkcgBMInRAQAB1gEAg9YB0wHYAQCR2AFzAeEBAInhAQAB5gEAguYBMIHnAXMB6AFzgegBc4HqAXMB6wEAgesBQBjsAXMB+AFzgfgBAAH5AQCB+QGgAfoBc4H6AUCC+wEwgfwBQAL9ATCD\u002FgEwEAACMCAIAgAgGAIAECgCQCIwAkA2RQIwAWACQI5gAgCBZwJAYGgCMKaYAgCmsAK1gcMCMSZQCDGBYwgxgWYIACtoCACDfggRUNAJEAb4CSAG\u002FAl0AUAOdIFADnQBQQ50gUEOdAFCDnSBQg50AUMOgIFDDoABRA4wK0gOMINeDgGBvA4Bgb4OAQHHDkB+AA9AGD8PtQFLD7aBSw+2AUwPtoFMD7cBTQ+AgU0PMAFPD0BgUA8ACIAPMAiEDwAGiA8wBowPAAiQDzAIlA8ACJgPMAicDwAGoA8wBqQPsAGoDwCBqA\u002FTAakPAIGpD9MBqg8AgaoP0wGrDwCBqw8wgawPMIGtDzCBrg8wga8PAAiwDzAItA8AArgPAAS5DwACuw8BArwPAQK9DwECvg+3CMAPZwjED7gIyA9oCMwPuAjQD2gI1A8AAtgPuQHZD7GB2Q+5AdoPsQHbD9eB2w8wAtwPMALdD2EB3g9zAd8PuQHhD7KB4Q+6AeIPsgHjD9iB4w8wBOQPYgHmDwAC6A\u002FQAekP0IHpD7AB6w\u002FQgesPMALsDzAC7Q8BAvAP0wHxD9OB8Q+6AfIPAYHyD7AB8w\u002FTgfMPMAL0DzAC9Q8xAfYPugH5D7KB+Q+7AfoPsgH7D9mB+w8wAvwPMAL9D2IB\u002Fg+gAZMQoAGVEKCBlRAxAZkQAQGnEDEQsBABELgQQILBEDEaWxIBGmgSMTAAFgEwGBZAAjAWMAExFjCBMRYwATIWAIEyFgABMxZAhjMWMIE2FjABNxYwgTcWMAE4FkACORZAgjoWMAI\u002FFkBkQBZAhHUWQAJ5FgAmgBYAgZMWAIGWFkAuIFNAHEBTQA6RU0A+mVNAhLxTMIG+U0AKv1NAgsVTMIHGU0AEyFMBAcpTQBTLUzAB1VMwgdVTMAHWUzCB1lMwAddTMAHYUzCB2FMwAdlTMYHZU0AQ2lMxAeJTMIHiUzAB41NAhONTQALoU0AE61NAgvpTAYGpVSBQuFWyAYB9soGAfbIBgX3agYF92gGCfbOBgn2zAYN9u4GJfbsBin27gYp9vAGLfbuBi30xmpB\u002FAZqgfzEoAIIBKBSCMSRYggEkbIIxC7iCMQ++gjEHxoIxAsqCAYvLggGP0YIBh9mCAYLdgjEzQIYBM2CGMSBQjAEgYIwxICC3ASAwtzEigPQBIpH0AAAAAAAAAABAqYCOgPyA04CMgI2BjQKA4YCRhZoBAAERAAEECAEIMAgBFSAAOZkxnYRAlIDWgqaAQWKApoBLcoBMAvgCgI+AsEDbCIBB0ICMgI+M5AMBiQAUKBARAgEYCyRLJgEBhuWAYHm2gUCRgb2IlAWAmICiAICbEoJDNKIGgI1gXBUBEKmAiGDMRNSAxgEICQuAiwAGgMADDwaAmwMEABaAQVOBmICYgJ6AmICegJiAnoCYgJ6AmAdHM4mAky1BBL1QwZmFmYWZAEHAjQILFbkC4MAdIOUsILEHIcHWIUrxAYrxAQBB4I0CC+EFpgWAioCiAIDGAwADAYFB9kC\u002FGRiICIBA+oZAzgSAsKwAAQEAq4CKhYmKAKKAiZSPgOQ4iQOgAICdmtqKuYoYCJeXqoKrBg2HqLm2AAM7AoaJgYyAjoC5Ax+Ak4GZAYG4AwsJEoCdCoCKgbgDIAuAk4GVKIC5AQAfBoGKgZ2AvICLgLECgLYAFBAegYqBnIC5AQUEgZOBm4G4Cx+Ak4GcgMcGEIDZAYaKiOEBiIgAhsiBmgAAgLaNBAGEioCjiIDlGCgJgZgLgo+DjAENgI6A3YBCX4JDsYKcgZ2BnYG\u002FCDcBihAgrISygMCBoYD1E4GIBYJA2gmAuQAwAAE9iQimB56wg68AIASAp4iLgZ8ZCIK3AAoAgrk5gb+F0RCMBhgoEbG+jICh5EG8AIKKgoyCjIKMgYsngYkBAYSwIIkAjICPjLKgS4qB8IL8gI6A35+ugEHUgKMaJIDchdyCYG8VgEThhUENgOEYiQCbg8+BjaHNgJaC5hIPAgOAmAyAQJaBmZGMgKWHmIqtgq8BGYGQgJSBwSkJgYsHgKKAioCyABEMCICagI0MCIDjhIiC+AEDgGBPL4BAkpBCPI8Qi4+hAYBAqAYFgIqAogCAroCsgcKAlIJCAIBA4YBAlIREBCipgIhCRRAMg6cTgECkgUI8g0GCgc+CxYqwg\u002FqAtY6oAYGJgrAZCQOAiYCxgqMgh72Ai4GziIkZgN4RAA0BgECcAoeUgbgKgKQyhEDCORCAloDTKAMIgUDtHQiBmoHUOQCB6QABKIDkERiEQQKIAUD\u002FCAOAQI8ZC4CfiacpH4CIKYKtjAFBlTAogNGVDgEB+SoACDCAxwoAgEFagYqBsyQAgFTskIWOYDaZhLqGiINECoC+kL8IgWBAChgwgUydCINSW62BlkIfgoiPDp2DQJOCR7q2g7E4jYCVII5FTzCQDgEEhL2ggECfjUFvgLyDQfqEQ9+G7IdKroRsDACAnd\u002F\u002FQO8AQdCTAgtFvgUA\u002FgcAUgqgwQsAgg0APxCA1BdAzxog9RwAgCAAFqAAxqgAwqpgVv4gsQcBdRAB6xIhQRYBXBoBQx8BLs9BJeAB8AEOAEGglAIL1A7AmYWZroCJAwSWgJ6AQcmDi40mAIBAgCAJGAUAEACTgNKAQIqHQKWApQiFqMaaG6yqogjiAI4OgYkRgI8AnZzYioCXoIgLBJUYiAKAlpiGioSXBZCpubUQkQaJjo8fCYGVBgATEI+AjAiCjYGJBysJlQYBAQGeGICSgo+IAoCVBgEEEJGAjoGWgIo5CZUGAQQQnQiCjoCQACoQGggACgoSi5WAszgQloCPEJkRAYGdAzgQloCJBBCeCIGOgZCIAoCoCI8EF4KXLJGCl4CIAA65rwGLhrkIACCXAICJAYgBIICUg5+AvjijmoTyqpOAjysaAg4TjIuAkKUAIIGqgEFMAw4AA4GoA4GgAw4AA4GOgLgDgcKkj4\u002FVDYJCa4GQgJmEyoKKhpGMko2RjYwCjrOiA4DC2IaoAITFiZ6wnQyKq4OZtZaItNGA3K6Qh7WdjIGJq5mjqIKJo4GIhqoKqBgoCgRAv79BFQ2BpQ0PAAAAgJ6BtAYAEgYTDYOMIgbzgIyAj4zkAwGJAA0oAACAjwskGJCoSnZA5CsRi6UAIIG3MI+WiDAwMDAwMDCGQiWCmIg0DIPVHIDZA4SqgN2Qn6+PQf9Zv79gVozCrYFBDIKPiYGTro+egc+miIHmgb8hAASXjwIDgJacs42xvSoAgYqbiZaYnIaum4CPIImJIKiWEIeTlhCCsQARDAgAlxGKMospKYWIMDCqgI2F8pxgK6OLloOwYCEDQW2B6aWGiyQAiYCMBAABAYDroEFqkb+BtaeL8yBAhqOZhZmK2BUNDQqii4CZgJIBgI6BjaH6xLRBCpyCsK6fjJ2EpYmdgaMfBKlAnZGjg6ODp4ezi4qAjgYBgIqAjgYBwkE2iJWJh5coqYCIxCkAqwEQgZaJloiewJIBiZWJmcW3Kb+AjhgQnKmcgpyiOJuatYmViZKMke3ItrKMsoyjQVupKc2ciQeVqZGtlJqWi7S4CYCMrJ+YmaOcAQeiEIuvjYOUAICikYCYkoG+MAAYjoCJhq6lOQmVBgEEEJGAi4RAnbSRg5OCna+TCIBAt66og6Ovk4C6qoyAxpqkhkC4q\u002FO\u002FnjkBOAiXjgCA3TmmjwCAm4CJpzCUgIqtkoCRyEEGiICkkICwne8wCKWUgJgoCJ+NgEFGko4AjICh+4DOQ5nl7pBAw0pL4I5EL5CFT7hCRmAhuEI4hp6QzpCdka+Pg56UhJJCr7\u002F\u002FyiDBjL8IgJtX94dE1amIYCLmGDAIQSKOgJwRgI0fQYtJA+qEjIKIholXZdSAxgEICQuAiwAGgMADDwaAmwMEABaAQVOBmICYgJ6AmICegJiAnoCYgJ6AmAdHM54tQQS9QJGsiYaPgEFAnZGrQeObQvMwGAiOgEDEusMwRLMYmgEACICJAwAAKBgAAAIBAAgAAAAAAQALBgMDAICJgJAiBICQUUNgpt+fUDmFQN2BVoGNXTBMHkIdReFTSoRQXwAAAAD2AyCmBwCpCSCxCgC6CyA7DSDHDiBJEgCbFgCsGQDAHYCAICBwLQAAMgDapwBMqiDH1yD8\u002FSCdAiGWBQHzCAGzDCFzEWE0EwEbFyGKGgE0HyG\u002FagEjsaGt1AFv1wH\u002F52Fe7gHh6yKwIwMAAAAAAAAAr4mkgNaAQkfvloBA+oRBCKwAAQEAx4qvnijkMSkIGYmWgJ2a2oqOiaCIiICXGIgCBKqCu4epl4CgtRCRBokJiZCCtwAxCYKIgIkJiY0BgrcAIwkSgJOLEIqCtwA4EIKTCYmJKIK3ADEJFoKJCYmRgLoiEIOIgI2Jj4S2ADAQHoGKCYmQgrcAMBAegYoJiRCLg7YIMBCDiICJCYmQgsUDKAA9iQm8AYaLOInWAYiKMIm9DYmKAAADgbCTAYSKgKOIgOOTgImLGxARMoOMi4COQr6CiIhDn4ObgpyBnYG\u002Fn4gBiaAQikCOgPWLg4uJif+Ku4S4iYCcgYqFiZWNgI+whK6QiomQiIuCnYyBiauNr5OHiYWJ9RCUGCgKQMW\u002FQj6BkoD6jBiCi0v9gkCMgN+fQimF6IFgdYSJxAOJn4HPgUEPAgOAliOA0oGxkYmJhZGMipuHmIyrg66NjomKgImJro2LBwmJoIKxABEMCICoJIFA6zgJiWBPI4BC4I+PjxGXgkC\u002FiaSAQryAQOGAQJSEQSSJRVYQDIOnE4BApIFCPB+JQXCBz4LFirCD+YK0jp6KCYmDrIowrIkqo42AiSGrgIuCr407gIvRiygIQJyLhIkrtggxCYKIgIkJMoRAv5GIiRjQk4uJQNQxiJqB0ZCOidCMh4nSjoOJQPGOQKSJxSgJGACBi4n2MTKAm4mnMB+AiIqtj0GUOIePibeVgI35KgAIMAeJryAIJ4lBSIOICICvMoSMiVTlBY5gNgmJ1YmlhLqGmIlD9AC2M9CAioFgTKqBUmCtgZZCHSIvOYadg0CTgkWIsUH\u002FtoOxOI2AlSCORU8wkA4BBOOAQJ+GiIlBY4C8jUHxjUPVhuw0iVKViWwFBUDvAEGAowILhBP6BgBwCQDwCkBXDADwDWDHDyDqF0AFGwBBIAAMqIA3qiBQ\u002FiA6DSF0EQFaFCFEGYFaHaH1aiFF0kGv4iHwAQ4AQWRsYW0sQWRsbQBBaG9tLEFob20AQW5hdG9saWFuX0hpZXJvZ2x5cGhzLEhsdXcAQXJhYmljLEFyYWIAQXJtZW5pYW4sQXJtbgBBdmVzdGFuLEF2c3QAQmFsaW5lc2UsQmFsaQBCYW11bSxCYW11AEJhc3NhX1ZhaCxCYXNzAEJhdGFrLEJhdGsAQmVuZ2FsaSxCZW5nAEJoYWlrc3VraSxCaGtzAEJvcG9tb2ZvLEJvcG8AQnJhaG1pLEJyYWgAQnJhaWxsZSxCcmFpAEJ1Z2luZXNlLEJ1Z2kAQnVoaWQsQnVoZABDYW5hZGlhbl9BYm9yaWdpbmFsLENhbnMAQ2FyaWFuLENhcmkAQ2F1Y2FzaWFuX0FsYmFuaWFuLEFnaGIAQ2hha21hLENha20AQ2hhbSxDaGFtAENoZXJva2VlLENoZXIAQ2hvcmFzbWlhbixDaHJzAENvbW1vbixaeXl5AENvcHRpYyxDb3B0LFFhYWMAQ3VuZWlmb3JtLFhzdXgAQ3lwcmlvdCxDcHJ0AEN5cmlsbGljLEN5cmwAQ3lwcm9fTWlub2FuLENwbW4ARGVzZXJldCxEc3J0AERldmFuYWdhcmksRGV2YQBEaXZlc19Ba3VydSxEaWFrAERvZ3JhLERvZ3IARHVwbG95YW4sRHVwbABFZ3lwdGlhbl9IaWVyb2dseXBocyxFZ3lwAEVsYmFzYW4sRWxiYQBFbHltYWljLEVseW0ARXRoaW9waWMsRXRoaQBHZW9yZ2lhbixHZW9yAEdsYWdvbGl0aWMsR2xhZwBHb3RoaWMsR290aABHcmFudGhhLEdyYW4AR3JlZWssR3JlawBHdWphcmF0aSxHdWpyAEd1bmphbGFfR29uZGksR29uZwBHdXJtdWtoaSxHdXJ1AEhhbixIYW5pAEhhbmd1bCxIYW5nAEhhbmlmaV9Sb2hpbmd5YSxSb2hnAEhhbnVub28sSGFubwBIYXRyYW4sSGF0cgBIZWJyZXcsSGVicgBIaXJhZ2FuYSxIaXJhAEltcGVyaWFsX0FyYW1haWMsQXJtaQBJbmhlcml0ZWQsWmluaCxRYWFpAEluc2NyaXB0aW9uYWxfUGFobGF2aSxQaGxpAEluc2NyaXB0aW9uYWxfUGFydGhpYW4sUHJ0aQBKYXZhbmVzZSxKYXZhAEthaXRoaSxLdGhpAEthbm5hZGEsS25kYQBLYXRha2FuYSxLYW5hAEthd2ksS2F3aQBLYXlhaF9MaSxLYWxpAEtoYXJvc2h0aGksS2hhcgBLaG1lcixLaG1yAEtob2praSxLaG9qAEtoaXRhbl9TbWFsbF9TY3JpcHQsS2l0cwBLaHVkYXdhZGksU2luZABMYW8sTGFvbwBMYXRpbixMYXRuAExlcGNoYSxMZXBjAExpbWJ1LExpbWIATGluZWFyX0EsTGluYQBMaW5lYXJfQixMaW5iAExpc3UsTGlzdQBMeWNpYW4sTHljaQBMeWRpYW4sTHlkaQBNYWthc2FyLE1ha2EATWFoYWphbmksTWFoagBNYWxheWFsYW0sTWx5bQBNYW5kYWljLE1hbmQATWFuaWNoYWVhbixNYW5pAE1hcmNoZW4sTWFyYwBNYXNhcmFtX0dvbmRpLEdvbm0ATWVkZWZhaWRyaW4sTWVkZgBNZWV0ZWlfTWF5ZWssTXRlaQBNZW5kZV9LaWtha3VpLE1lbmQATWVyb2l0aWNfQ3Vyc2l2ZSxNZXJjAE1lcm9pdGljX0hpZXJvZ2x5cGhzLE1lcm8ATWlhbyxQbHJkAE1vZGksTW9kaQBNb25nb2xpYW4sTW9uZwBNcm8sTXJvbwBNdWx0YW5pLE11bHQATXlhbm1hcixNeW1yAE5hYmF0YWVhbixOYmF0AE5hZ19NdW5kYXJpLE5hZ20ATmFuZGluYWdhcmksTmFuZABOZXdfVGFpX0x1ZSxUYWx1AE5ld2EsTmV3YQBOa28sTmtvbwBOdXNodSxOc2h1AE55aWFrZW5nX1B1YWNodWVfSG1vbmcsSG1ucABPZ2hhbSxPZ2FtAE9sX0NoaWtpLE9sY2sAT2xkX0h1bmdhcmlhbixIdW5nAE9sZF9JdGFsaWMsSXRhbABPbGRfTm9ydGhfQXJhYmlhbixOYXJiAE9sZF9QZXJtaWMsUGVybQBPbGRfUGVyc2lhbixYcGVvAE9sZF9Tb2dkaWFuLFNvZ28AT2xkX1NvdXRoX0FyYWJpYW4sU2FyYgBPbGRfVHVya2ljLE9ya2gAT2xkX1V5Z2h1cixPdWdyAE9yaXlhLE9yeWEAT3NhZ2UsT3NnZQBPc21hbnlhLE9zbWEAUGFoYXdoX0htb25nLEhtbmcAUGFsbXlyZW5lLFBhbG0AUGF1X0Npbl9IYXUsUGF1YwBQaGFnc19QYSxQaGFnAFBob2VuaWNpYW4sUGhueABQc2FsdGVyX1BhaGxhdmksUGhscABSZWphbmcsUmpuZwBSdW5pYyxSdW5yAFNhbWFyaXRhbixTYW1yAFNhdXJhc2h0cmEsU2F1cgBTaGFyYWRhLFNocmQAU2hhdmlhbixTaGF3AFNpZGRoYW0sU2lkZABTaWduV3JpdGluZyxTZ253AFNpbmhhbGEsU2luaABTb2dkaWFuLFNvZ2QAU29yYV9Tb21wZW5nLFNvcmEAU295b21ibyxTb3lvAFN1bmRhbmVzZSxTdW5kAFN5bG90aV9OYWdyaSxTeWxvAFN5cmlhYyxTeXJjAFRhZ2Fsb2csVGdsZwBUYWdiYW53YSxUYWdiAFRhaV9MZSxUYWxlAFRhaV9UaGFtLExhbmEAVGFpX1ZpZXQsVGF2dABUYWtyaSxUYWtyAFRhbWlsLFRhbWwAVGFuZ3V0LFRhbmcAVGVsdWd1LFRlbHUAVGhhYW5hLFRoYWEAVGhhaSxUaGFpAFRpYmV0YW4sVGlidABUaWZpbmFnaCxUZm5nAFRpcmh1dGEsVGlyaABUYW5nc2EsVG5zYQBUb3RvLFRvdG8AVWdhcml0aWMsVWdhcgBWYWksVmFpaQBWaXRoa3VxaSxWaXRoAFdhbmNobyxXY2hvAFdhcmFuZ19DaXRpLFdhcmEAWWV6aWRpLFllemkAWWksWWlpaQBaYW5hYmF6YXJfU3F1YXJlLFphbmIAQZC2AgvyIMAZmUeFGZlHrhmAR44ZgEeEGZZHgBmeR4AZ4WBHphmER4QZgQ2TGeAPOIMsgBmCLAGDLIAZgCwDgCyAGYAsgBmCLACALACTLAC+LI0ajyzgJB2BOOBIHQClBQGxBQGCBQC2NQeaNQOFNQqEBIAZhQSAGY0EgBmCBIAZnwSAGYkEijiZBIA44AsEgBmhBI2LALuLAYKLrwSxlQ26ZgGCZq1\u002FAY5\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\u002FaVmAEylsDuFsGkFs\u002FgJOAZ4EwgEQKgTAN8AeXkwfin5PhdUQpiJNwEoaDPgCGPgCBPgCAPuC+NoI+DoA2HII2AYA+DYM+B+ErZ2ij4AojBIwjAogjBokjAYMjgxlwAfutOAGWOAjgExk74JUZCaYZAb0ZgjiQGYc4gRmGOJ0Zgzi8GRTFLGAZkxkLkxkL1hkImBlgJtQZAMYZAIEZAYAZAYEZAYMZAIsZAIAZAIYZAMAZAIMZAYcZAIYZAJsZAIMZAIQZAIAZAoYZAODzGQHgwxkBsRniK4QOhIQAjoRj755HBYVHYHSGKQCQKQGGKQCBKQCEKQS9HSCAHWAPrGgCjWgBiWgDgWhg356bELmfBICfYW+pYmKFhicAgycAgScAjicA4GRYAY9YKMsBA4kBA4EBYrDDGUu8GWBhgwQAmgQAgQQAgAQBgAQAiQQAgwQAgAQAgAQFgAQDgAQAgAQAgAQAggQAgQQAgAQBgAQAgAQAgAQAgAQAgAQAgQQAgAQBgwQAhgQAgwQAgwQAgAQAiQQAkAQEggQAhAQAkAQzgQRgrasZA+ADGQuOGQGOGQCOGQCkGQngTRk3mRmANoEZDKsZA4gZBoEZDYUZYDnjdxkDkBkCjBkC4BYZA94ZBYsZA4AZDosZA7cZB4kZBacZB50ZAYEZTeDzGQuNGQGMGQKIGQatGQCGGQeNGQOIGQaIGQbgMhkAthkkiRljpfCWfzAf79kwBeB9MAHwBiEwDfAM0DBrvuG9MGWB8ALqMATv\u002FzB6y\u002FCAGR3fGWAf4I84gsEAAAEsAQAAASwcAAwBR4CSAAACHW4AAh0pAQIdRwACHSmBAwAABgRmMouVoQ0AAAYEZjKLlaEAAwSLlQEAAAcBBGYyi5WhHwAACQEEUlNzfDKGiwkACgIEiwkACQMElaEFAAACBItiAAACBDKB+wAADQsgKy0vPUdRdIGSlJkADAsgKy0vPUdRdJKUmRAAABQLICIuVSstLz1QUWN0RYWKkZKUmQAVCyAiLlUrLS89SVBRY3RFhYqRkpSZCQQgIjxQdQAJAwsVinUACQIvX3UACQItQ4B1AA0CK5KAcQAJAj1jgs8ACQMVYI6AMAAAAihHhbgAAQQRM42MgEoAAQJdegAAAAJdeoRJAAAECyArPQABIAAECyArPQACICsAASABAgsgAAIggQACCyAAAiCBAAYgPVF0kpQAASABAiCBAQEgAAIggQACCyAGASAAAiBjAAILIAEBIAACCyADASAACAsgKz1jdJSZAAIgKwADICs9AQILIAABCwECICsAAWOARAABASw1AAACHYsAAAABi4GzAAACR12APwAAAyArR4zRAAACHSmBPAABBg0xMDY+ogAFDTEwNj4BAAABMAAACQYNMTA2PqIAAAAFDTEwNj4HBg0xMDY+ogMFDTEwNj4JAAMCDTABAAAFDTEwNj4EAjY+AAAABQ0xMDY+AwABAzA2PgEBMFgAAwI2PgIAAAI2PlkAAAYNMTA2PqIAAjY+gBIADwEwHwAjATA7ACcBMDcAMAEwDgALATAyAAABMFcAGAEwCQAEATBfAB4BMMAx7wAAAh0pgA8ABwIwR4CnAAIOICItL0M9PFBRXGNFkZkCDSAiLS9DPTxQXGNFkZkDCyAiLS9DPFBcRZGZgDYAAAILIAAAAAIgkjkAAANAR2CAHwAAAhA7wBLtAAECBGaAMQAAAgSVCQAAAgSVRgABBQ0xMDY+gJkABAYNMTA2PqIJAAACNj4sAAECNj6A3wABAx4cSwACHEsDACwDHEpLAgAIAhxLgR8AGwIEGod1AAACU3OHjQAAAiuSAAAAAiuSNgABAiuSjBIAAQIrkgAAAAIrksBcSwADASOWOwARATCeXQABATDOzS0AAAAAAENuLFVuYXNzaWduZWQATHUsVXBwZXJjYXNlX0xldHRlcgBMbCxMb3dlcmNhc2VfTGV0dGVyAEx0LFRpdGxlY2FzZV9MZXR0ZXIATG0sTW9kaWZpZXJfTGV0dGVyAExvLE90aGVyX0xldHRlcgBNbixOb25zcGFjaW5nX01hcmsATWMsU3BhY2luZ19NYXJrAE1lLEVuY2xvc2luZ19NYXJrAE5kLERlY2ltYWxfTnVtYmVyLGRpZ2l0AE5sLExldHRlcl9OdW1iZXIATm8sT3RoZXJfTnVtYmVyAFNtLE1hdGhfU3ltYm9sAFNjLEN1cnJlbmN5X1N5bWJvbABTayxNb2RpZmllcl9TeW1ib2wAU28sT3RoZXJfU3ltYm9sAFBjLENvbm5lY3Rvcl9QdW5jdHVhdGlvbgBQZCxEYXNoX1B1bmN0dWF0aW9uAFBzLE9wZW5fUHVuY3R1YXRpb24AUGUsQ2xvc2VfUHVuY3R1YXRpb24AUGksSW5pdGlhbF9QdW5jdHVhdGlvbgBQZixGaW5hbF9QdW5jdHVhdGlvbgBQbyxPdGhlcl9QdW5jdHVhdGlvbgBacyxTcGFjZV9TZXBhcmF0b3IAWmwsTGluZV9TZXBhcmF0b3IAWnAsUGFyYWdyYXBoX1NlcGFyYXRvcgBDYyxDb250cm9sLGNudHJsAENmLEZvcm1hdABDcyxTdXJyb2dhdGUAQ28sUHJpdmF0ZV9Vc2UATEMsQ2FzZWRfTGV0dGVyAEwsTGV0dGVyAE0sTWFyayxDb21iaW5pbmdfTWFyawBOLE51bWJlcgBTLFN5bWJvbABQLFB1bmN0dWF0aW9uLHB1bmN0AFosU2VwYXJhdG9yAEMsT3RoZXIAQZDXAguwCA4AAAA+AAAAwAEAAAAOAAAA8AAAAAB\u002FAAAAgAMBAAA8QVNDSUlfSGV4X0RpZ2l0LEFIZXgAQmlkaV9Db250cm9sLEJpZGlfQwBEYXNoAERlcHJlY2F0ZWQsRGVwAERpYWNyaXRpYyxEaWEARXh0ZW5kZXIsRXh0AEhleF9EaWdpdCxIZXgASURTX0JpbmFyeV9PcGVyYXRvcixJRFNCAElEU19UcmluYXJ5X09wZXJhdG9yLElEU1QASWRlb2dyYXBoaWMsSWRlbwBKb2luX0NvbnRyb2wsSm9pbl9DAExvZ2ljYWxfT3JkZXJfRXhjZXB0aW9uLExPRQBOb25jaGFyYWN0ZXJfQ29kZV9Qb2ludCxOQ2hhcgBQYXR0ZXJuX1N5bnRheCxQYXRfU3luAFBhdHRlcm5fV2hpdGVfU3BhY2UsUGF0X1dTAFF1b3RhdGlvbl9NYXJrLFFNYXJrAFJhZGljYWwAUmVnaW9uYWxfSW5kaWNhdG9yLFJJAFNlbnRlbmNlX1Rlcm1pbmFsLFNUZXJtAFNvZnRfRG90dGVkLFNEAFRlcm1pbmFsX1B1bmN0dWF0aW9uLFRlcm0AVW5pZmllZF9JZGVvZ3JhcGgsVUlkZW8AVmFyaWF0aW9uX1NlbGVjdG9yLFZTAFdoaXRlX1NwYWNlLHNwYWNlAEJpZGlfTWlycm9yZWQsQmlkaV9NAEVtb2ppAEVtb2ppX0NvbXBvbmVudCxFQ29tcABFbW9qaV9Nb2RpZmllcixFTW9kAEVtb2ppX01vZGlmaWVyX0Jhc2UsRUJhc2UARW1vamlfUHJlc2VudGF0aW9uLEVQcmVzAEV4dGVuZGVkX1BpY3RvZ3JhcGhpYyxFeHRQaWN0AERlZmF1bHRfSWdub3JhYmxlX0NvZGVfUG9pbnQsREkASURfU3RhcnQsSURTAENhc2VfSWdub3JhYmxlLENJAEFTQ0lJAEFscGhhYmV0aWMsQWxwaGEAQW55AEFzc2lnbmVkAENhc2VkAENoYW5nZXNfV2hlbl9DYXNlZm9sZGVkLENXQ0YAQ2hhbmdlc19XaGVuX0Nhc2VtYXBwZWQsQ1dDTQBDaGFuZ2VzX1doZW5fTG93ZXJjYXNlZCxDV0wAQ2hhbmdlc19XaGVuX05GS0NfQ2FzZWZvbGRlZCxDV0tDRgBDaGFuZ2VzX1doZW5fVGl0bGVjYXNlZCxDV1QAQ2hhbmdlc19XaGVuX1VwcGVyY2FzZWQsQ1dVAEdyYXBoZW1lX0Jhc2UsR3JfQmFzZQBHcmFwaGVtZV9FeHRlbmQsR3JfRXh0AElEX0NvbnRpbnVlLElEQwBMb3dlcmNhc2UsTG93ZXIATWF0aABVcHBlcmNhc2UsVXBwZXIAWElEX0NvbnRpbnVlLFhJREMAWElEX1N0YXJ0LFhJRFMAQdDfAgvyAgEAnAYHTQMEEACPCwAAEQAIAFNKUQBSAFMAOlRVAFdZP11cAEZhY0JkAGYAaABqAGwAbgAAQAAAAAAaAJMAACA1ACcAIQAkIioAE2ttACYkJxQWGBscPh4\u002FHzk9IiFBHkAlJSYoICpILEMuSzBMMkRCmQAAlY99foOEEoCCdncSe6N8eHmKkpimoIUAmqGTdTOVAI4AdJmYl5YAAJ4AnAChoBUuLzC0tU+qqRIUHiEiIio0NaanNh9JAACXAVraHTYFAMTDxsXIx8rJzMvE1UXWQtdG2M7Q0tTa2e72\u002Fg4HD4CfACGAo+0AwEDGYOfb5pnAAAAGYNwp\u002FRUSBhb43QYVEoQIxhb\u002F3wPAQABGYN7gbTc4ORUUFxYAGhkcGwBft2VERwBPYk5QAABIAAAAo6SlAAAAAAC2AABaAEcAW1ZYYF5waW9OADtnuAAAAABFqIqLjKusWFivlLBvsl1cX15hYGZnaGliY2Rla2ptbG9ucXAAQdDiAgtzmQMIAwEDpQMTAwADQgORA5cDqQNGAEkATABTAGkABwO8Ak4ASgAMAzUFUgVIADEDVABXAAoDWQBBAL4CCB+AHygfkB9oH6Afuh+GA7Mfyh+JA8MfoQP6H48D8x9EBUYFOwVOBT0FuANiBEqmYB7JA2sA5QBB0OMCC+YggQAoAJcAKgCBgCoAl8ArABWBLACXAC0AgUAtAJcALgAVQS4AmQEvABYgMABCCEAAQopEAEIESgCWAEwAF4FMAEICTQBCQ04AL8FPAELDUAC\u002FQFIAQgNTAEIJVQBCCFoAlgBeAEJDXgCBwF8AQgFoAELBawCFAXEAF8NxAERIcwBEg3cAQoN5AL4CewCXQXwAQgF9AEQEfgBCDoAAQoGHAESHiQCDBKwAFwO2AIMCuAAUAtAAlgDRAIAA3QCXgN4AgIDfAJcA4QA+QeEAgMDhAL4E4gCug+oAroLyAK0B9AAuwfQAA0H1AAMD\u002FACBQP4APgIAAb7AAQG+AQMBvkAGAb5ADgE+AhQBvsAVAb4BFwFEgR0BREEwAUQCNAFEgTUBRIM2AUSDOAFEhjoBRAE+AYXAYQGugogBL0KdAYQBsAGEwLQBhEBKAoRATAKEAE0CLgRWAi7BcgIgAXcChMB3AoTAjAKEgI0CrkGWAoSAlwKEANICLsHSAiAB1wKEAOUCroHyAoQAEgOEADADIsExAy6BMgOugVIDhIB2A64BdwOFwIwDhcCsAy8BtwOBAMMDhMDQA4RA0wOEgNQDhMDVA4QA1wOEQNoDhMDcAy5B3QOFwN0DhADeA4VA3gOEQOADhMDkA4RA5wOEgOgDhMDpA4QA6wOEQO4DhIAJBIEAPwSEhMEGhIDEBoTBzgYgAdAGhMDQBoMDSwcfxEwHgxdPB4EAXgeD0mYHRB2AB0KJjgdEGJMHQg2fBxaCpQeFgKYHvsCmB0QNqAdEoK4HIgHAB0SDwAciAcIHRIPCByIBxAdEgsQHIgHGB0SCxgc+EcgHRILQByIB0gdEgtIHIgHUB0SD1Ac+TNYHgEDcB76A3AeAwNwHvgDdB4BA3Qe+gN0HgMDdB74A3geAQN4HvoDeB4DA3ge+AN8HgEDfByAI4AcgCOQHIAjoB74F7AeAwO4HvgDvB5dA7weAgO8HF8HvBz5E8AeAQPIHvoDyB4DA8ge+A\u002FMHgMD0B66C9QeAwPYHPkP3B4DA+AeuA\u002FkHgMD6Bz4B+wcCgfsHvoP8B4BA\u002Fge+gP4HgMD+B74A\u002FweAQP8Hl4D\u002FBx4BAAiVhAAIgUAECJfABQiBAAkIl0AJCJmACQiBwAsIhcAMCLEADQiFgA0IscANCJcBDwiXwREIs8AVCIHAFwiVBRwIgcAeCBUCHwgfBSAIg4UiCBVEJQiXACoIGQFACIGAQAi\u002FwEAIGUFBCIHAQQi\u002FQEIILYVCCIFARQiXgEUIlUJGCJcASAiZQEgIl4BICIEASQiAgEkIgQBKCAKBSgiVBEsIH0JNCIFATgiZwE4IgwJPCJVCUQgZAVQIm4BUCBnGVAiXwFcIgQBYCJdAWAiZgFgIl8BYCIEAWQiXQFkImYBZCJvAWQiXAFoIgUBaCJeAWgiZwFoIlQJbCJdAXAiZgFwIl8BcCIEAXQiXQF0ImYBdCJvAXQiXAF4IgUBeCJeAXgiZwF4IFQJfCJlAYgg+gWYIvoBrCL5Bcwi+AIEIvkCCCL4Agwi+AYkIhQCLCLFAiwiFwIsIsQCMCL5AkAi+AJEIvsGRCL4BmAi+QpsIRAGdCEQBnghEAaAIRAGhCEQBogg+AqsIRAK4CCCCuggeQcoInwQYCSNFGgmXwBwJpQQdCStFHwmbwCEJoQQiCSVFJAmZwCYJJQ0nCR+NLQkfDTQJgYA6CbMAgwqZAJ0Kl0CdCpmAnQq+ALcKFQEfC4HAWwuBwKcLgcC8C60EwAutRMILrYTEC4PzxgstheALAx3jCy2I8QuBAAAMg4INDIQLEwyEQhkMIgEcDCLBHAwigR0MIkEeDCIBHwyEACUMI8EmDISAJwyFwCcMhAsrDIRCMQwiATQMIsE0DCKBNQwiQTYMIgE3DIQAPQwgwj0MhIA\u002FDIXAPwwtSkwMH0VRDJ\u002FKUwytFVkMA4dkDEEHgAyJgIMMKcGDDKlBhAyJAIUMKUGFDKnChQyJAIcMj0CHDI2AhwxBEogMAwKRDJkAlAyjRJQMI4OWDC0HmAyvhJsMocKdDLUAnwyzQJ8MhYCfDIMYoAwjQqwMI0WtDJfArwyhBLAMpUGyDJcAswyZQLMMl4CzDJnAswytF7QMhcC\u002FDLMBwAyxwMAMswDBDDFBwQy1wMEMswDCDLFBwgwzAcMMMYHDDIUAxAyxQMQMM4HEDIUAxQy1QMUMt4DFDLXAxQyxAMYMNUHGDLPAxgyxAccMs8DHDLUAyAyzQMgMsYHIDC9CyQwxQcoMtcDKDLEAywyzQMsMtYDLDLHAywwvAcwMtYDMDLPAzAy1AM0MsUDNDLWAzQyFwM0MsQLODLNAzwyxgM8MhcDPDLEB0AyzwNAMsQHRDLXA0QyzANIMhUDSDLWA0gyFwNIMMwHTDLGB0wyzQNQMhYDUDLHA1AyzANUMhUDVDLWA1QyxwNUMIQXWDCWF2AylAtsMmUDcDBeB3AyZAN0Ml0HdDCcB3gyFgt4MicDfDD8E4AyZAOIMm0DiDL+D4gwZQuQMBULlDD9D5gwxwecMhUDoDLGB6AyFQOkMB4HpDIkA6gyXQOoMGYLqDJ2A6wyNwOsMPwjsDAUB8AybgPAMl8HwDJuA8QyZwPEMFwXyDJmA9AwXwfQMGUH1DJfA9QybAPYMmUD2DBeC9gwZgfcMoQT4DCVF+gwlxfwMJUH\u002FDJnA\u002FwwDAacpgQDcKZWB\u002FCkDAf4pAwLXKoFA2iqCFEA+gn9KPoI\u002Faj4CoYo+EAGbPoIvnD6QxbM+lwHAPhnBwD4\u002FQcE+r8LEPoRBxz6tBMg+gUDKPgSDyj6gA8w+oALOPoSAzz4gAdA+IMHQPq6E0T6FwNM+LTHUPq3L9D4vifo+LQL\u002FPi8vAD+lghc\u002FscAYP68HGT+v\u002Fxw\u002FpYE8P69kPT8xIFQ\u002FMZtkPzEBfD+zg3w\u002FsUB+P72Afj+7wH4\u002FswB\u002FPwMFhD+tAYw\u002FFcOMPy1Gjj8DzJE\u002FlcaXP68BnD+FAJ0\u002FL4WdP606oD8vRL0\u002FH2\u002FAPx\u002FB1z+tX9g\u002FgQDoPx9P6D8fg\u002FA\u002FH4PyPx+D9D+fgfY\u002Fgwf4P4NN4EGRD+dBkoEmRJLAKkQSgUtEEsHSRBLCLkUSgW5FkgBORpKDV3QSw250Hw0AdR+NBnUfDQ11n4MTdR+JFXUfDRp1H40gdRUQJ3WfQy91n0UxdR8NNHUfjTp1lQNBdR9EQ3Wfg0V1H41HdZUHTnWfg1J1H41UdR8NW3UfjWF1Hw1odR+NbnUfDXV1H417dR8NgnUfjYh1Hw2PdR+NlXUfDZx1H42idQMBqXWfCKp1gUCudZ+DrnWBQLB1n4ywdYHAtnUtA7d1n4i4dYHAvHWfA711gcC+dZ8Mv3WBQMV1LYPFdZ8Ix3WBQMt1n4PLdYFAzXWfjM11gcDTdS0D1HWfiNV1gcDZdZ8D2nWBwNt1nwzcdYFA4nUtg+J1nwjkdYFA6HWfg+h1gUDqdZ+M6nWBwPB1LQTxdR+F83UfBfZ1H4X4dR8F+3Ufhf11nwQMeJ9BDnifBQ94A8IReK3QEngDARt4LQKAe61NgXsDQoh7gcCJey1FinsDBI17gYCQewPckXstBaB7rciie4NEqHutyKp7lwBAfCFFQHwlDUR8h4BKfBXBSnwXQUt8Hw1MfBeCUnyZgFN8l8BTfJeBWnyXAGR8LwGAfIGAgHwDFoR8wQSQfAMBlHwfBfx+rAEAvhDRAL6sRwm+EDkNviyHKb4sAi2+kDcuvpD\u002FSb4QvGm+AAAAACAAAABhAAIABAAGALwDCAAKAAwAFQCVAKUAuQDBAMMAxwDLANEA1wDdAOAA5gD4AAgBCgFzABABEgEUASABLAFEAU0BUwFiAWgBagF2AZIBlAGpAbsBxwHRAdUBuQLXATsA2QHbAbcA4QH8AQwCGAIdAiMCJwKjAzMCPwJCAksCTgJRAl0CYAJpAmwCbwJ1AngCgQKKApwCnwKjAq8CuQLFAskCzQLRAtUC5wLtAvEC9QL5Av0CBQMJAw0DEwMXAxsDIwMnAysDLwM1Az0DQQNJA00DUQMLD1cDWwNfA2MDZwNrA28DcwN5A30DgQOFA4kDjQORA5UDmQOdA6ED3BClA8kDzQPZA90D4QPvA\u002FEDPQRPBJkE8AQCBUoFZAVsBXAFcwWaBfoF\u002FgUHBgsGFAYYBh4GIgYoBo4GlAaYBp4GogarBqwD8watA\u002FYGrgP5Bq8D\u002FAbMA\u002F8GzQMCB84DBQcJBw0HEQeGAzIHNQe5AzcHOweIA1MHiQNWB5ADaweKA3cHsAOJB44DmQefB6MHjAO4B48Duwe0AL4HwAfCBxAgywcuAM0HzwcgANIH1gfbB98H5AfqB\u002FAHIAD2BxIiAQgFCAcIHQglCCcIQwAtCDAIkAE2CDkITgBFCEcITAhOCFEIWgCpA1oAUwhXCGAIaQBiCGUIbwh0CHoIfgiiCEkApAimCKkIVgCrCK0IsAi0CFgAtgi4CLsIwAjCCMUIdgDHCMkIzAjQCHgA0gjUCNcI2wjeCOQI5wjwCPMI9gj5CAIJBgkLCQ8JFAkXCRoJIwksCTsJPglBCUQJRwlKCVYJXAlgCWIJZAloCWoJcAl4CXwJgAmGCYkJjwmRCTAAkwmZCZwJngmhCaQJYS3Na5+fpgmxCbwJxwmVCqEKFQsgACcLMQuNC6ELpQupC60LsQu1C7kLvQvBC8ULIQw1DDkMPQxBDEUMSQxNDFEMVQxZDG8McQxzDKAMvAzcDOQM7Az0DPwMBA0MDRQNIg0uDXoNgg2FDYkNjQ2dDbENtQ28DcINxg0oDiwOMA4yDjYOPA4+DkEOQw5GDncOew6JDo4OlA6cDqMOqQ60Dr4Oxg7KDs8O2Q7dDuQO7A7zDvgOBA8KDxUPGw8iDygPMw89D0UPTA9RD1cPXg9jD2kPcA92D30Pgg+JD40Png+kD6kPrQ+4D74PyQ\u002FQD9YP2g\u002FhD+UP7w\u002F6DwAQBBAJEA8QExAaEB8QIxApEC8QMhA2EDkQPxBFEFkQYRB5EHwQgBCVEKEQsRDDEMsQzxDaEN4Q6hDyEPQQABEFERERQRFJEU0RUxFXEVoRbhFxEXURexF9EYERhBGMEZIRlhGcEaIRqBGrEW+nrxGyEbYRjQK+ERASDhMMFJAUlRRTFWwVchV4FX4VihWWFSsAoRW5Fb0VwRXFFckVzRXhFeUVSRZiFogWjhZMF1IXVxd3F3cYfRgRGdMZdxp\u002FGp0aohq2GsAaxhraGt8a5RrzGiMbMBs4GzwbUhvJG9sb3RvfG2QxIBwiHCQcJhwoHCocSBx+HMQc0hzXHOAc6Rz7HAQdCR0pHUQdRh1IHUodTB1OHVAdUh1yHXQddh14HXodgR2DHYUdhx2WHZgdmh2cHZ4doB2iHaQdph2oHaodrB2uHbAdsh22HfQDuB0HIrodAiK8HcQd9APGHQciyB0CIsod0h30A9QdByLWHQIi2B3gHfQD4h0HIuQdAiLmHe4d9APwHQci8h0CIvQd\u002Fh0AHgIeBB4GHggeCh4MHg4eFh45Hj0eQx5gHi0GaB50HiwGhB70HgAfEx8lHzgfOh8+H0QfSh9MH1AfUh9aH10fXx9lH2cftTBtH8Uf2x\u002FfH+Ef5h8zIEQgRSFVIVshVSJzIwBBwIQDC4ZJIIgghDIzIIEgpzFvMdA0MdAyM9A0QYBBgUGCQYNBiEGKAABDp0WARYFFgkWISYBJgUmCSYgAAE6DT4BPgU+CT4NPiAAAAABVgFWBVYJViFmBAAAAAGGAYYFhgmGDYYhhigAAY6dlgGWBZYJliGmAaYFpgmmIAABug2+Ab4Fvgm+Db4gAAAAAdYB1gXWCdYh5gQAAeYhBhEGGQahDgUOCQ4dDjESMRYRFhkWHRahFjEeCR4ZHh0enSIJJg0mESYZJqEmHSUppakqCS6dMgUynTIxMAABrIGtOgU6nToy8Am5PhE+GT4tSgVKnUoxTgVOCU6dTjFSnVIxVg1WEVYZVilWLVahXglmCWYhagVqHWoxPm1WbRAB9AUQAfgFkAH4BTEpMamxqTkpOam5qQQCMSQCMTwCMVQCM3ACE3ACB3ACM3ACAxACEJgKExgCER4xLjE+o6gGE6wGEtwGMkgKMagCMRFpEemR6R4FOAIDFAIHGAIHYAIFBj0GRRY9FkUmPSZFPj0+RUo9SkVWPVZFTplSmSIxBAIdFAKfWAITVAIRPAIcuAoRZAIRoAGYCagByAHkCewKBAncAeQAghiCHIIogqCCDIItjAmwAcwB4AJUCgIEAk4iBIMUggagAgZEDgZUDgZcDgZkDgQAAAJ8DgQAAAKUDgakDgcoDgQEDmAekB7AAtAC2ALgAygABA7gHxAe+AMQAyAClAw0TAAED0QDRB8YDwAO6A8EDwgMAAJgDtQMVBIAVBIgAAAATBIEGBIgaBIEYBIAjBIYYBIY4BIY1BIA1BIgAAAAzBIFWBIg6BIE4BIBDBIZ0BI8WBIYQBIYQBIgVBIbYBIgWBIgXBIgYBIQYBIgeBIjoBIgtBIgjBIQjBIgjBIsnBIgrBIhlBYIFJwYALAAtIS0ALiMtJwYATSFNoE0jTdUGVAYAAAAAwQZUBtIGVAYoCTwJMAk8CTMJPAkVCQAnAScCJwcnDCcNJxYnGie+CQkACRmhCbwJrwm8CTIKPAo4CjwKFgoAJgEmBiYrCjwKRwtWCz4LCQAJGSELPAuSC9cLvgsIAAkACBlGDFYMvwzVDMYM1QzCDAQACBM+DQgACQAIGdkNyg3KDQ8FEgAPFU0OMg7NDrIOmQ4SABIIQg+3D0wPtw9RD7cPVg+3D1sPtw9AD7UPcQ9yD3EPAANBD7IPgQ+zD4APsw+BD3EPgA+SD7cPnA+3D6EPtw+mD7cPqw+3D5APtQ8lEC4QBRs1GwAAAAAHGzUbAAAAAAkbNRsAAAAACxs1GwAAAAANGzUbERs1GzobNRsAAAAAPBs1Gz4bNRtCGzUbQQDGAEIAAABEAEUAjgFHAE8AIgJQAFIAVABVAFcAYQBQAlECAh1iAGQAZQBZAlsCXAJnAAAAawBtAEsBbwBUAhYdFx1wAHQAdQAdHW8CdgAlHbIDswO0A8YDxwNpAHIAdQB2ALIDswPBA8YDxwNSAmMAVQLwAFwCZgBfAmECZQJoAmkCagJ7HZ0CbQKFHZ8CcQJwAnICcwJ0AnUCeAKCAoMCqwGJAooCHB2LAowCegCQApECkgK4A0EApUIAh0IAo0IAsccAgUQAh0QAo0QAsUQAp0QArRIBgBIBgUUArUUAsCgChkYAh0cAhEgAh0gAo0gAiEgAp0gArkkAsM8AgUsAgUsAo0sAsUwAozYehEyxTK1NgU2HTaNOh06jTrFOrdUAgdUAiEwBgEwBgVAAgVAAh1IAh1IAo1oehFIAsVMAh1MAo1oBh2ABh2Ieh1QAh1QAo1QAsVQArVUApFUAsFUArWgBgWoBiFaDVqNXgFeBV4hXh1ejWIdYiFmHWoJao1qxaLF0iHeKeYphAL4CfwGHQQCjQQCJwgCBwgCAwgCJwgCDoB6CAgGBAgGAAgGJAgGDoB6GRQCjRQCJRQCDygCBygCAygCJygCDuB6CSQCJSQCjTwCjTwCJ1ACB1ACA1ACJ1ACDzB6CoAGBoAGAoAGJoAGDoAGjVQCjVQCJrwGBrwGArwGJrwGDrwGjWQCAWQCjWQCJWQCDsQMTAwAfgAAfgQAfwpEDEwMIH4AIH4EIH8K1AxMDEB+AEB+BlQMTAxgfgBgfgbcDk7cDlCAfgCEfgCAfgSEfgSAfwiEfwpcDk5cDlCgfgCkfgCgfgSkfgSgfwikfwrkDk7kDlDAfgDEfgDAfgTEfgTAfwjEfwpkDk5kDlDgfgDkfgDgfgTkfgTgfwjkfwr8Dk78DlEAfgEAfgZ8DEwNIH4BIH4HFAxMDUB+AUB+BUB\u002FCpQOUAAAAWR+AAAAAWR+BAAAAWR\u002FCyQOTyQOUYB+AYR+AYB+BYR+BYB\u002FCYR\u002FCqQOTqQOUaB+AaR+AaB+BaR+BaB\u002FCaR\u002FCsQOAtQOAtwOAuQOAvwOAxQOAyQOAAB9FAyAfRQNgH0UDsQOGsQOEcB\u002FFsQPFrAPFAAAAsQPCth\u002FFkQOGkQOEkQOAkQPFIJMgkyDCqADCdB\u002FFtwPFrgPFAAAAtwPCxh\u002FFlQOAlwOAlwPFvx+Avx+Bvx\u002FCuQOGuQOEygOAAAO5QspCmQaZBJkA\u002Fh+A\u002Fh+B\u002Fh\u002FCxQOGxQOEywOAAAPBE8EUxULLQqUGpQSlAKEDlKgAgIUDYAB8H8XJA8XOA8UAAADJA8L2H8WfA4CpA4CpA8UglAIgICAgICAgICAgILMuLi4uLjIgMiAyIAAAADUgNSA1IAAAACEhAAAghT8\u002FPyEhPzIgAAAAADBpAAA0NTY3ODkrPSgpbjAAKwASIj0AKAApAAAAYQBlAG8AeABZAmhrbG1ucHN0UnNhL2NhL3OwAENjL29jL3WwAEZIAB8AAAAg3wEBBCROb1BRUlJSU01URUxUTUsAxQBCQwBlRUYATW\u002FQBUZBWMADswOTA6ADESJEZGVpajHQNzHQOTHQMTAx0DMy0DMx0DUy0DUz0DU00DUx0DY10DYx0Dgz0Dg10Dg30Dgx0ElJSUlJSVZWSVZJSVZJSUlJWFhJWElJTENETWlpaWlpaWl2dml2aWl2aWlpaXh4aXhpaWxjZG0w0DOQIbiSIbiUIbjQIbjUIbjSIbgDIrgIIrgLIrgjIrgAAAAlIrgrIisiKyIAAAAuIi4iLiIAAAA8IrhDIrhFIrgAAABIIrg9ALgAAABhIrhNIrg8ALg+ALhkIrhlIrhyIrh2Irh6IriCIriGIriiIrioIripIrirIrh8IriRIriyIjgDCDAxADEAMAAyMCgAMQApACgAMQAwACkAKDIwKTEALgAxADAALgAyMC4oAGEAKQBBAGEAKyIAAAAAOjo9PT09PT3dKrhqVgBOACg2P1mFjKC6P1EAJixDV2yhtsGbUgBeen+dpsHO57ZTyFPjU9dWH1frWAJZClkVWSdZc1lQW4Bb+FsPXCJcOFxuXHFc213lXfFd\u002Fl1yXnpef170Xv5eC18TX1BfYV9zX8NfCGI2YktiL2U0ZYdll2WkZbll4GXlZfBmCGcoZyBrYmt5a7Nry2vUa9trD2wUbDRsa3AqcjZyO3I\u002FckdyWXJbcqxyhHOJc9x05nQYdR91KHUwdYt1knV2dn12rna\u002Fdu5223fid\u002FN3Onm4eb55dHrLevl6c3z4fDZ\u002FUX+Kf71\u002FAYAMgBKAM4B\u002FgImA44EABxAZKTg8i4+VTYZrhkCITIhjiH6Ji4nSiQCKN4xGjFWMeIydjGSNcI2zjauOyo6bj7CPtY+RkEmRxpHMkdGRd5WAlRyWtpa5luiWUZdel2KXaZfLl+2X85cBmKiY25jfmJaZmZmsmaia2JrfmiWbL5symzybWpvlnHWef56lngAWHigsVFhpbnuWpa3o9\u002FsSMAAAQVNEU0VTSzCZMAAAAABNMJkwAAAAAE8wmTAAAAAAUTCZMAAAAABTMJkwAAAAAFUwmTAAAAAAVzCZMAAAAABZMJkwAAAAAFswmTAAAAAAXTCZMAAAAABfMJkwAAAAAGEwmTBkMJkwAAAAAGYwmTAAAAAAaDCZMG8wmTByMJkwdTCZMHgwmTB7MJkwRjCZMCAAmTCdMJkwiDCKMKswmTAAAAAArTCZMAAAAACvMJkwAAAAALEwmTAAAAAAszCZMAAAAAC1MJkwAAAAALcwmTAAAAAAuTCZMAAAAAC7MJkwAAAAAL0wmTAAAAAAvzCZMAAAAADBMJkwxDCZMAAAAADGMJkwAAAAAMgwmTDPMJkw0jCZMNUwmTDYMJkw2zCZMKYwmTDvMJkw\u002FTCZMLMwyDAAEQABqgKsrQMEBbCxsrO0tRoGBwghCRFhERQRTAABs7S4ur\u002FDxQjJywkKDA4PExUXGBkaGx4iLDM43d5DREVwcXR9foCKjQBOjE4JTttWCk4tTgtOMnVZThlOAU4pWTBXuk4oACkAABECEQMRBREGEQcRCRELEQwRDhEPERARERESESgAABFhESkAKAACEWERKQAoAAURYREpACgACRFhESkAKAALEWERKQAoAA4RYREpACgADBFuESkAKAALEWkRDBFlEasRKQAoAAsRaRESEW4RKQAoACkAAE6MTglO21aUTm1RA05rUV1OQVMIZ2twNGwoZ9GRH1flZSpoCWc+eQ1UeXKhjF15tFLjTnxUZlvjdgFPx4xUU215EU\u002FqgfOBT1V8Xodlj3tQVEUyADEAMwAwAAARAAIDBQYHCQsMDg8QERIAEQBhAmEDYQVhBmEHYQlhC2EMYQ4RYREAEQ5htwBpCxEBYwBpCxFuEQBOjE4JTttWlE5tUQNOa1FdTkFTCGdrcDRsKGfRkR9X5WUqaAlnPnkNVHlyoYxdebRS2Hk3dXNZaZAqUXBT6GwFmBFPmVFjawpOLU4LTuZd81M7U5dbZlvjdgFPx4xUUxxZMwA2ADQAMAA1MDEACGcxADAACGdIZ2VyZ2VWTFREojAAAgQGCAkLDQ8RExUXGRsdHyIkJigpKissLTAzNjk8PT4\u002FQEJERkdISUpLTU5PUOROjFShMAEwWycBSjQAAVI5AaIwAFpJpDAAJ08MpDAATx0CBU+oMAARB1QhqDAAVANUpDAGTxUGWDwHAEarMAA+GB0AQj9RrDAAQUcARzKuMKwwrjAAHU6tMAA4PU8BPhNPrTDtMK0wAEADPDOtMABANE8bPq0wAEBCFhuwMAA5MKQwDEU8JE8LRxgASa8wAD5NHrEwAEsIAjoZAksspDARAAtHtTAAPgxHK7AwBzpDALkwAjoIAjoPB0MAtzAQABI0ETwTF6QwKh8kKwAguzAWQQA4DcQwDTgA0DAALBwbojAyABcmSa8wJQA8szAhACA4oTA0AEgiKKMwMgBZJacwLxwQAETVMAAUHq8wKQAQTTzaML0wuDAiExogMwwiOwEiRAAhRAekMDkATyTIMBQjANsw8zDJMBQqABIzIhIzKqQwOgALSaQwOgBHOh8rOkcLtzAnPAAwPK8wMAA+RN8w6jDQMA8aACwb4TCsMKwwNQAcRzVQHD+iMEJaJ0JaSUQAUcMwJwAFKOow6TDUMBcAKNYwFSYAFeww4DCyMDpBFgBBwzAsAAUwALlwMQAwALlwMgAwALlwaFBhZGFBVWJhcm9WcGNkbWQAbQCyAEkAVQBzXhBiLWaMVCdZY2sOZrtsKmgPXxpPPnlwAEFuAEG8A0FtAEFrAEFLAEJNAEJHAEJjYWxrY2FscABGbgBGvANGvANnbQBnawBnSAB6a0h6TUh6R0h6VEh6vAMTIW0AEyFkABMhawATIWYAbW4AbbwDbW0AbWMAbWsAbWMACgpPAApPbQCyAGMACApPCgpQAApQbQCzAGsAbQCzAG0AFSJzAG0AFSJzALIAUGFrUGFNUGFHUGFyYWRyYWTRc3IAYQBkABUicwCyAHAAc24Ac7wDc20Ac3AAVm4AVrwDVm0AVmsAVk0AVnAAV24AV7wDV20AV2sAV00AV2sAqQNNAKkDYS5tLkJxY2NjZEPRa2dDby5kQkd5aGFIUGluS0tLTWt0bG1sbmxvZ2x4bWJtaWxtb2xQSHAubS5QUE1QUnNyU3ZXYlbRbUHRbTEA5WUxADAA5WUyADAA5WUzADAA5WVnYWxKBEwEQ0ZRJgFTASenN6trAlKrSIz0ZsqOyIzRbjJO5VOcn5yfUVnRkYdVSFn2YWl2hX8\u002FhrqH+IiPkAJqG23ZcN5zPYRqkfGZgk51UwRrG3Ithh6eUF3rb82FZInJYtiBH4jKXhdnam38cs6Qhk+3Ud5SxGTTahBy53YBgAaGXIbvjTKXb5v6nYx4f3mgfcmDBJN\u002FntaK31gEX2B8foBicsp4woz3lthYYlwTatptD28vfTd+S5bSUouA3FHMURx6vn3xg3WWgIvPYgJq\u002Foo5TudbEmCHc3B1F1P7eL9PqV8NTsxseGUifcNTXlgBd0mEqoq6a7CPiGz+YuWCoGNlda5OaVHJUYFo53xvgtKKz5H1UkJUc1nsXsVl\u002Fm8qea2VapqXns6em1LGZndrYo90XpBhAGKaZCNvSXGJdMp59H1vgCaP7oQjkEqTF1KjUr1UyHDCiKqKyV71X3tjrms+fHVz5E75Vudbul0cYLJzaXSaf0aANJL2lkiXGJiLT655tJG4luFghk7aUO5bP1yZZQJqznFCdvyEfJCNn4hmLpaJUntn82dBbZxuCXRZdWt4EH1emG1RLmJ4litQGV3qbSqPi19EYRdoh3OGlilSD1RlXBNmTmeoaOVsBnTidXl\u002Fz4jhiMyR4pY\u002FU7puHVTQcZh0+oWjllecn56XZ8tt6IHLeiB7knzAcplwWIvATjaDOlIHUqZe02LWfIVbHm20ZjuPTIhNlouJ015AUcBVAAAAAFpYAAB0ZgAAAADeUSpzynY8eV55ZXmPeVaXvny9fwAAEoYAAPiKAAAAADiQ\u002FZDvmPyYKJm0nd6Qt5auT+dQTVHJUuRSUVOdVQZWaFZAWKhYZFxuXJRgaGGOYfJhT2XiZZFmhWh3bRpuIm9ucStyInSReD55SXlIeVB5VnldeY15jnlAeoF6wHv0fQl+QX5yfwWA7YF5gnmCV4QQiZaJAYs5i9OMCI22jziQ45b\u002FlzuYdWDuQhiCAiZOtVFoUYBPRVGAUcdS+lKdVVVVmVXiVVpYs1hEWVRZYlooW9Je2V5pX61f2GBOYQhhjmFgYfJhNGLEYxxkUmRWZXRmF2cbZ1ZneWu6a0Ft227LbiJvHnBucad3NXKvcipzcXQGdTt1HXYfdsp223b0dkp3QHfMeLF6wHt7fFt99H0+fwWAUoPvg3mHQYmGiZaJv4r4isuKAYv+iu2KOYuKiwiNOI9ykJmRdpJ8luOWVpfbl\u002F+XC5g7mBKbnJ9KKEQo1TOdOxhAOUBJUtBc035Dn46fKqACZmZmaWZsZmZpZmZsfwF0cwB0ZQUPEQ8ADwYZEQ8I2QW0BQAAAADyBbcF0AUSAAMECwwNGBrpBcEF6QXCBUn7wQVJ+8IF0AW3BdAFuAXQBbwF2AW8Bd4FvAXgBbwF4wW8BbkFLQMuAy8DMAMxAxwAGAYiBisG0AXcBXEGAAAKCgoKDQ0NDQ8PDw8JCQkJDg4ODggICAgzMzMzNTU1NRMTExMSEhISFRUVFRYWFhYcHBsbHR0XFycnICA4ODg4Pj4+PkJCQkJAQEBASUlKSkpKT09QUFBQTU1NTWFhYmJJBmRkZGR+fn19f38ugoJ8fICAh4eHhwAAJgYAAQABAK8ArwAiACIAoQChAKAAoACiAKIAqgCqAKoAIwAjACPMBgAAAAAmBgAGAAcAHwAjACQCBgIHAggCHwIjAiQEBgQHBAgEHwQjBCQFBgUfBSMFJAYHBh8HBgcfCAYIBwgfDQYNBw0IDR8PBw8fEAYQBxAIEB8RBxEfEh8TBhMfFAYUHxsGGwcbCBsfGyMbJBwHHB8cIxwkHQEdBh0HHQgdHh0fHSMdJB4GHgceCB4fHiMeJB8GHwcfCB8fHyMfJCAGIAcgCCAfICMgJCEGIR8hIyEkJAYkByQIJB8kIyQkCkoLSiNKIABMBlEGUQb\u002FAB8mBgALAAwAHwAgACMAJAILAgwCHwIgAiMCJAQLBAwEHyYGBCAEIwQkBQsFDAUfBSAFIwUkGyMbJBwjHCQdAR0eHR8dIx0kHh8eIx4kHwEfHyALIAwgHyAgICMgJCNKJAskDCQfJCAkIyQkAAYABwAIAB8AIQIGAgcCCAIfAiEEBgQHBAgEHwQhBR8GBwYfBwYHHwgGCB8NBg0HDQgNHw8HDwgPHxAGEAcQCBAfEQcSHxMGEx8UBhQfGwYbBxsIGx8cBxwfHQYdBx0IHR4dHx4GHgceCB4fHiEfBh8HHwgfHyAGIAcgCCAfICEhBiEfIUokBiQHJAgkHyQhAB8AIQIfAiEEHwQhBR8FIQ0fDSEOHw4hHR4dHx4fIB8gISQfJCFABk4GUQYnBhAiECMSIhIjEyITIwwiDCMNIg0jBiIGIwUiBSMHIgcjDiIOIw8iDyMNBQ0GDQcNHg0KDAoOCg8KECIQIxIiEiMTIhMjDCIMIw0iDSMGIgYjBSIFIwciByMOIg4jDyIPIw0FDQYNBw0eDQoMCg4KDwoNBQ0GDQcNHgwgDSAQHgwFDAYMBw0FDQYNBxAeER4AJAAkKgYAAhsAAwIAAwIAAxsABBsAGwIAGwMAGwQCGwMCGwMDGyADGx8JAwIJAgMJAh8JGwMJGwMJGwIJGxsJGxsLAwMLAwMLGxsKAxsKAxsKAiAKGwQKGwQKGxsKGxsMAx8MBBsMBBsNGwMNGwMNGxsNGyAPAhsPGxsPGxsPGx8QGxsQGyAQGx8XBBsXBBsYGwMYGxsaAxsaAyAaAx8aAgIaAgIaBBsaBBsaGwMaGwMbAwIbAxsbAyAbAgMbAhsbBAIbBBsoBh0EBh8dBB8dHR4FHR4FIR4EHR4EHR4EIR4dIh4dISIdHSIdHQAGIgIEIgIEIQIGIgIGIQIdIgIdIQQdIgQFIQQdIQsGIQ0FIgwFIg4FIhwEIhwdIiIFIiIEIiIdIh0dIhodIh4FIhodBRwFHREdIhsdIh4EBR0GIhwEHRsdHRwEHR4EBQQFIgUEIh0EIhkdIgAFIhsdHREEHQ0dHQsGIh4EIjUGAA+dDQ+dJwYAHR0gABwBCh4GHggOHRIeCgwhHRIdIyAhDB0eNQYADxQnBg4dIv8AHR0g\u002FxIdIyD\u002FIQwdHicGBR3\u002FBR0AHSAnBgqlAB0sAAEwAjA6ADsAIQA\u002FABYwFzAmIBMgEgEAX18oKXt9CDAMDQgJAgMAAQQFBgdbAF0APiA+ID4gPiBfAF8AXwAsAAEwLgAAADsAOgA\u002FACEAFCAoACkAewB9ABQwFTAjJiorLTw+PQBcJCVAQAb\u002FCwAL\u002FwwgAE0GQAb\u002FDgAO\u002Fw8AD\u002F8QABD\u002FEQAR\u002FxIAEiEGAAEBAgIDAwQEBQUFBQYGBwcHBwgICQkJCQoKCgoLCwsLDAwMDA0NDQ0ODg8PEBARERISEhITExMTFBQUFBUVFRUWFhYWFxcXFxgYGBgZGRkZICAgICEhISEiIiIiIyMjIyQkJCQlJSUlJiYmJicnKCgpKSkpIgYiACIAIgEiASIDIgMiBSIFIQCFKQEwAQsMAPrxoKKkpqji5ObC+6GjpaepqqyusLK0tri6vL7Aw8XHycrLzM3O0dTX2t3e3+Dh4+Xn6Onq6+zu8piZMTFPMVUxWzFhMaIAowCsAK8ApgClAKkgAAACJZAhkSGSIZMhoCXLJdAC0QLmAJkCUwIAAKMCZqulAqQCVgJXApEdWAJeAqkCZAJiAmACmwInAZwCZwKEAqoCqwJsAgTfjqduAgXfjgIG3\u002FgAdgJ3AnEAegII330CfgKAAqgCpgJnq6cCiAJxLAAAjwKhAqICmALAAcEBwgEK3x7fQQRAAAAAABSZELoQAAAAAJsQuhAFBaUQuhAFMREnETIRJxFVRxM+E0cTVxNVuRS6FLkUsBQAAAAAuRS9FFVQuBWvFbkVrxVVNRkwGQVX0WXRWNFl0V\u002FRbtFf0W\u002FRX9Fw0V\u002FRcdFf0XLRVVVVBbnRZdG60WXRu9Fu0bzRbtG70W\u002FRvNFv0VVVVUEAYQBBAGEAaQBBAGEAQQBDRAAARwAASksAAE5PUFEAU1RVVldYWVphYmNkAGZoAHAAQQBhAEFCAERFRkdKAFMAYQBBQgBERUZHAElKS0xNAE9TAGEAQQBhAEEAYQBBAGEAQQBhAEEAYQBBAGEAMQE3ApEDowOxA9EDJAAfBCAFkQOjA7ED0QMkAB8EIAWRA6MDsQPRAyQAHwQgBZEDowOxA9EDJAAfBCAFkQOjA7ED0QMkAB8EIAULDDAAMAAwADAAMAAwBDoEPgRLBE0ETgSJpjAEqSYouX+fAAECAwQFBgcICgsODxETFBUWFxgaG2EmJS97UaaxBCcGAAEFCCoGHggDDSAZGhscCQ8XCxgHCgABBAYMDhBEkHdFKAYsBgAARwYzBhcQERITAAYOAg80BioGKwYuBgAANgYAADoGLQYAAEoGAABEBgAARgYzBjkGAAA1BkIGAAA0BgAAAAAuBgAANgYAADoGAAC6BgAAbwYAACgGLAYAAEcGAAAAAC0GNwZKBkMGAABFBkYGMwY5BkEGNQZCBgAANAYqBisGLgYAADYGOAY6Bm4GAAChBicGAAEFCCAhCwYQIyoGGhscCQ8XCxgHCgABBAYMDhAoBiwGLwYAAEgGMgYtBjcGSgYqBhobHAkPFwsYBwoAAQQGDA4QMC4wACwAKABBACkAFDBTABUwQ1JDRFdaQQBIVk1WU0RTU1BQVldDTUNNRE1SREpLMDAAaGhLYldbzFPHMIxOGlnjiSlZpE4gZiFxmWVNUoxfjVGwZR1SQn0fdamM8Fg5VBRvlWJVYwBOCU5KkOZdLU7zUwdjcI1TYoF5enoIVIBuCWcIZzN1clK2VU2RFDAVMCxnCU6MTolbuXBTYtd23VJXZZdf71MwADhOBQAJIgFgT65Pu08CUHpQmVDnUM9QnjQ6Bk1RVFFkUXdRHAW5NGdRjVFLBZdRpFHMTqxRtVHfkfVRA1LfNDtSRlJyUndSFTUCACCAgAAIAADHUgACHTM+P1CCipOstri4uCwKcHDKU99TYwvrU\u002FFTBlSeVDhUSFRoVKJU9lQQVVNVY1WEVYRVmVWrVbNVwlUWVwZWF1dRVnRWB1LuWM5X9FcNWItXMlgxWKxY5BTyWPdYBlkaWSJZYlmoFuoW7FkbWida2FlmWu42\u002FDYIWz5bPlvIGcNb2FvnW\u002FNbGBv\u002FWwZcU18iXIE3YFxuXMBcjVzkHUNd5h1uXWtdfF3hXeJdLzj9XShePV5pXmI4gyF8OLBes162XspekqP+XjEjMSMBgiJfIl\u002FHOLgy2mFiX2tf4ziaX81f11\u002F5X4FgOjkcOZRg1CbHYAICAAAAAAAAAAgACgAAAggAgAgAAAiAKIACAAACSGEABAYEMkZqXGeWqq7I011iAFR38wwrPWP8Ymhjg2PkY\u002FErImTFY6ljLjppZH5knWR3ZGw6T2VsZQow42X4ZklmGTuRZgg75DqSUZVRAGecZq2A2UMXZxtnIWdeZ1NnwzNJO\u002FpnhWdSaIVobTSOaB9oFGmdO0Jpo2nqaahqozbbahg8IWunOFRrTjxya59rumu7a406Cx36Ok5svDy\u002FbM1sZ2wWbT5td21BbWlteG2FbR49NG0vbm5uMz3Lbsdu0T75bW5vXj+OP8ZvOXAecBtwlj1KcH1wd3CtcCUFRXFjQpxxq0MocjVyUHIIRoBylXI1RwIgAAAgAAAAAAiAAAACAoCKAAAgAAgKAICIgCAUSHpzi3OsPqVzuD64Pkd0XHRxdIV0ynQbPyR1Nkw+dZJMcHWfIRB2oU+4T0RQ\u002FD8IQPR281DyUBlRM1Eedx93H3dKdzlAi3dGQJZAHVROeIx4zHjjQCZWVnmaVsVWj3nreS9BQHpKek96fFmnWqda7noCQqtbxnvJeydCgFzSfKBC6HzjfAB9hl9jfQFDx30CfkV+NEMoYkdiWUPZYnp\u002FPmOVf\u002Fp\u002FBYDaZCNlYICoZXCAXzPVQ7KAA4ELRD6BtVqnZ7VnkzOcMwGCBIKej2tEkYKLgp2Cs1KxgrOCvYLmgjxr5YIdg2ODrYMjg72D54NXhFODyoPMg9yDNmxrbQIAACAiKqAKACCAKACoICAAAoAiAooIAKoAAAACAAAo1WwrRfGE84QWhcpzZIUsb11FYUWxb9Jwa0VQhlyGZ4ZphqmGiIYOh+KGeYcoh2uHhofXReGHAYj5RWCIY4hndteI3og1RvqIuzSueGZ5vkbHRqCK7YqKi1WMqHyrjMGMG413jS9\u002FBAjLjbyN8I3eCNSOOI\u002FShe2FlJDxkBGRLocbkTiS15LYknyS+ZMVlPqLi5WVSbeVd43mScOWsl0jl0WRGpJuSnZK4JcKlLJKlpQLmAuYKZi2leKYM0spmaeZwpn+mc5LMJsSm0Cc\u002FZzOTO1MZ53OoPhMBaEOopGiu55WTfme\u002Fp4Fnw+fFp87nwCmAoigAAAAAIAAKAAIoICggACAgAAKiIAAgAAgKgCAAEQgFSIAQdDNAwtXTQMAlwUgxgUA5wYARQcAnAgATQkAPAsAPQ0ANg8AOBAgOhkAyxog0xwAzx0A4iAALjAgK6kg7asAOQoBUQ8BcxEBdRMBKxchPxwhnrwhCOABROkBS+kBAEGwzgMLgweyz9QA6APcAOgA2ATcAcoD3AHKCtwEAQPcxwDwwALcwgHcgMID3MAA6AHcwEHpAOpB6QDqAOnMsOLEsNgA3MMA3MIA3gDcxQXcwQDcwQDeAOTASQpDE4AAF4BBGIDAANyAABKwF8dCHq9HG8EB3MQA3MEA3I8AI7A0xoHDANzAgcGAANzBANyiACSdwADcwQDcwQLcwAHcwADcwgDcwADcwADcwADcwbBvxgDcwIgA3JfDgMiAwoDEqgLcsAvAAtzDqcQE3M2AANzBANzBANzCAtxCG8IA3MEB3MSwCwAHjwAJgsAA3MGwNgAHjwAJr8CwDAAHjwAJsD0AB48ACbA9AAePAAmwTgAJsD0AB48ACYYAVABbsDQAB48ACbA8AQmPAAmwSwAJsDwBZwAJjANrsDsBdgAJjAN6sBsB3JoA3IAA3IAA2LAGQYGAAISEA4KBAIKAwQAJgMGwDQDcsD8AB4ABCbAhANyynsKzgwEJnQAJsGwACYnAsJoA5LBeAN7AANywqsAA3LAWAAmTx4EA3K\u002FEBdzBANyAAdzBAdzEANzDsDQAB44ACaXAANzGsAUBCbAJAAeKAQmwEgAHsGfCQQAE3MED3MBBAAUBgwDchcCCwbCVwQDcxgDcwQDqANYA3ADK5ADoAeQA3ADawADpANzAANyyn8EBAcMCAcGDwIIBAcAA3MABAQPcwLgDzcKwXAAJsC\u002FfsfkA2gDkAOgA3gHgsDgBCLhto8CDyZ\u002FBsB\u002FBsOMACaQACbBmAAma0bAIAtykAAmwLgAHiwAJsL7AgMEA3IHBhMGAwLADAAmwxQAJuEb\u002FABqy0MYG3MGznADcsLEA3LBkxLZhANyAwKfAAAEA3IMACbB0wADcsgzDsVLBsB8C3LAVAdzCANzAA9ywAMAA3MAA3LCPAAmoAAmNAAmwCAAJAAewFMKvAQmwDQAHsBsACYgAB7A5AAkAB7CBAAcACbAfAQePAAmXxoLEsJwACYIAB5bAsDIACQAHsMoACQAHsE0ACbBFAAkAB7BCAAmw3AAJAAew0QEJgwAHsGsACbAiAAmRAAmwIAAJsXQACbDRAAeAAQmwIAAJsXgBCbhDfAQBsArGtIgBBrhEewABuAyVAdgCAYIA4gTYhwfcgcQB3J3DsGPCuAWKxoDQgcaAwYDEsDPAsG\u002FGsUbAsAzDscsB6ADcwLOvBtywPMUABwBBwNUDC+IOAUrASQJKgAKBAoICgwLAAsICAAqEAkIkhQLAB4AJgglAJIAixAKCIoQihiLGAsgCygLMAocCiiLOAowikCKSIo4iiAKJAooCgiQAAwIDBAOLAoAkCAOECYYJWCQCCgYDmCKaIp4iAAkKA6AiDAMOA0AIEAMSA6IipiLACaQiqCKqIowCjQKOAkADQgNEA4ADjwKOJMIHiAmKCZAkRgOsIgAEsCJCCLIiAgS0IkAERAS2IkIEwiLAIsQixiLIIkAJwASRAsoixATMIsIE0CLOIpICkwKUApUCQAVCBQgKlgKUJEQFxAeMCY4JwAaSJEQICCMKI4AFDCOEBZAJkgkOI4IFEiOGBYgFFCOMBRYjmAmKBR4jkAUgI5oJjgUkIyIjmQKaApsCwAXCBcQFnAKsJMYFyAXGB5QJlgkAB6okJiPKBSojKCNAI0IjRCNGI8wFSiNII0wjTiNQI7gknQLOBb4kDApSIwAGvCS6JEAGVCNCBkQGViNYI6ACoQKiAqMCwQLDAgEKpAJDJKUCwQeBCYMJQSSBIsUCgyKFIocixwLJAssCzQKnAosizwKNIpEikyKPIqgCqQKqAoMkAQMDAwUDqwKBJAkDhQmHCVkkAwoHA5kimyKfIgEJCwOhIg0DDwNBCBEDEwOjIqciwQmlIqkiqyKAI6wCrQKuAkEDQwNFA68CjyTDB4kJiwmRJEcDrSIBBIQIsSJDCLMiAwS1IkEERQS3IkMEwyLBIsUixyLJIkEJwQSxAssixQTNIsME0SLPIrICswK0ArUCQQVDBQkKtgKVJEUFxQeNCY8JwQaTJEUICSMLI4EFDSOFBZEJkwkPI4MFEyOHBYkFFSONBRcjmQmLBR8jgSORBSEjmwmPBSUjIyO5AroCuwLBBcMFxQW8Aq0kxwXJBccHlQmXCQEHqyQnI8sFKyMpI0EjQyNFI0cjzQVLI0kjgiNNI08jUSO5JL0CzwW\u002FJA0KUyO\u002FAr0kgyO7JEEGVSNDBkUGVyNZIwExgAwALkYkRCRKJEgkAAhCCUQJBAiIIoYkhCSKJIgkriKYJJYknCSaJAAjBgoCIwQKRgnOB8oHyAfMB0ckRSRLJEkkAQhDCUUJBQiJIockhSSLJIkkryKZJJcknSSbJAEjBwoDIwUKRwnPB8sHyQfNB1AkTiRUJFIkUSRPJFUkUySUIpYilSKXIgQjBiMFIwcjGCMZIxojGyMsIy0jLiMvIwAkoiSgJKYkpCSoJKMkoSSnJKUkqSSwJK4ktCSyJLYksSSvJLUksyS3JIIIgAiBCAIIAwicIp0iCgoLCoMIQAuKLIEMiSyILEAlQSUALQcuAA1AJkEmgC4BDcgmySYAL4QvAg2DL4IvQA3YJtkmhjEEDUAnQScAMYYwBg2FMIQwQQ1AKAAyBw1PKFAogDKELAMuVyhCDYEsgCzAJMEkhiyDLMAoQw3AJcElQClEDcAmwSYFLgIuwClFDQUvBC+ADdAm0SaAL0Aqgg3gJuEmgDCBMMAqgw0EMAMwgQ3AJ8EngjBAK4QNRyhIKIQxgTEGLwgNgS8FMEYNgzCCMQAOAQ5AD4ARghEDDwAPwBEBD0ARAhIEEoEPQBLAD0ISgA9EEoQSgg+GEogSihLAEoISgRGDEUMQQBDBEUEQQREDEgUSwRBBEgAQQxLAEEUShRLCEIcSiRKLEsESgxKAEAARAREAEgESgBKBEkATQRNDE0ITRBPCEwAUwBNAFIAUwBRAFUEVQBcAF0EXwBcAGAIYARhAGIAYABnAGMEYARlAGUIZQRmAGcAZwhnBGYAcwBzAHYAfACACIAQgBiAIIEAggCCCIMAgwSAAIbgiuSIQIxEjHCMdI0wkViRNJFckjCSNJJ4knyQAJQIlBCXAKwElAyUFJcErwivDK8QrxSvGK8crgCWCJYQlyCuBJYMlhSXJK8oryyvMK80rzivPKwAmAiYBJgMmgCaCJoEmgybCJsQmxiYALMMmxSbHJgEsAiwDLAQsBSwGLAcsyibMJs4mCCzLJs0mzyYJLAosCywMLA0sDiwPLNIm1CbWJtMm1SbXJtom3CbeJtsm3SbfJgAnAicBJwMngCeCJ4EngycAKAIoBCgBKAMoBShCKEQoRihJKEsoTShALEooTChOKEEsQixDLEQsRSxGLEcsUShTKFUoSCxSKFQoVihJLEosSyxMLE0sTixPLIIsAS6AMYcsAS8CLwMvBi6FMQAwATACMEBGQUaARsBGwkbBRgBHQEeAR8BHwkcASUBJgEmCSQBKwkkDSgRKQEpBSoBKgUrASsFKwEvBSwBLAUtAS0FLwkvDS4BLgUuCS4NLAEwBTAJMA0wAVkBUQlREVEZUSFRKVExUTlRQVFJUVFRWVIBUglSEVMBUwVQAVQFVQFVBVYBVgVXAVcFVgFbAWABXAlcEVwZXCFcKVwxXDlcQVxJXFFcWV0BXQldEV4BXgVfAV8FXAFgBWEBYQViAWIFYAFkBWQJZA1lAWUCPQo+Aj8CPwY8AkAGQQZBAkEOQgJCBkMCQAEGw5AMLtiD6GBdWDVYSExYMFhE26QI2TDbhEhIWEw4QDuISEgwTDPoZFxZtDxYODwUUDBsPDg8MKw4CNg4LBRVLFuEPDMHiEAziAP8wAv8IAv8nvyIhAl9fISJhAiECQUIhAiECn38CX18hAl8\u002FAgU\u002FImUBAwIBAwIBAwL\u002FCAL\u002FCgIBAwJfIQL\u002FMqIhAiEiX0EC\u002FwDiPAXiE+QKbuQE7gaEzgQOBO4J5mh\u002FBA4\u002FIARCFgFgLgEWQQABACEC4QkA4QHiGz8CQUL\u002FEGI\u002FDF8\u002FAuEr4ij\u002FGg+GKP8v\u002FwYC\u002F1gA4R4gBLbiIRYRIC8NAOYlEQYWJhYmFgbgAOUTYGU24AO7TDYNNi\u002FmAxYbVuUYBOUC5g3pAnYlBuVbFgXGGw+mJCYPZiXpAkUvBfYGABsFBuUW5hMg5VHmAwXgBukC5RnmASQPVgQgBi3lDmYE5gEERgSGIPYHAOURRiAWAOUDgOUQDqUAO6DmAOUhBOYQG+YYB+UuBgcGBUfmAGcGJwXG5QImNukCFgTlBwYnAOUAICUg5Q4AxQAFQGUgBgVHZiAnICcGBeAAB2AlAEUmIOkCJS2rDw0FFgYgJgcApWAlIOUOAMUAJQAlACUgBgBHJmAmIEZABsBlAAXA6QImRQYW4AImBwDlAQBFAOUOAMUAJQCFIAYFR4YAJgcAJwYgBeAHJSYg6QIWDcAFpgAGJwDlACAlIOUOAMUAJQCFIAYFBwYHZiAnICcGwCYHYCUARSYg6QIPBavgAgYFAKVARQBlQCUABQAlQCVARUDlBGAnBidARwBHBiAFoAfgBukCS68ND4AGRwblAABFAOUPAOUIIAYFRmcARgBmwCYARSAFICUmIOkCwBbLDwUGJxblAABFAOUPAOUCAIUgBgUHBocABicAJybAJ6AlACUmIOkCACUH4AQmJ+UBAEUA5SEmBUdmAEcARwYFD2BFB8tFJiDpAusBD6UABicA5QpA5RAA5QEABSDFQAZgR0YABgDnAKDpAiAnFuAE5SgGJcZgDaUE5gAW6QI24B0lAAUAhQDlEAAFAOUCBiXmAQUghQAEAMYA6QIgZeAYBU\u002F2Bw8WTyav6QLrAg8GDwYPBhITEhMn5QAA5Rxg5gYHhhYmheYDAOYcAO8ABq8AL5ZvNuAd5SMnZgemByYnJgXpAralJyZlRgVHJcdFZuUFBicmpwYFB+kCRwYv4R4AAYABIOIjFgRC5YDBAGUgxQAFAGUg5SEAZSDlGQBlIMUABQBlIOUHAOUxAGUg5TsgRvYB6wxA5QjvAqDhTiCiIBHlgeQPFuUJF+USEhNA5UNWSuUAwOUKRgfgAeULJgc24AHlCibgBOUFAEUAJuAE5SwmB8bnAAYn5gNWBFYNBQYg6QKg6wKgthF2RhsG6QKg5RsE5S3AhSblGgYFgOU+4ALlFwBGZyZHYCcGp0ZgD0A26QLlFiCF4APlJGDlEqDpAgtA7xrlDyYnBiA25S0HBgfGAAYHBifmAKfmAiAG6QKg6QKg1gS2IOYGCOYI4ClmB+UnBgeGBwaHBiflAEDpAtbvAuYB7wE2ACYH5RYHZicmB0Yl6QLlJAYHJkcGB0Yn4AB25RznAOYAJyZAlukCQEXpAuUWpDbiAcDhIyBB9gDgAEYW5gUHxmUGpQYlByYFgOIk5DfiBQTiGuQd5jj\u002FgA7iAP9a4gDhAKIgoSDiAOEA4gDhAKIgoSDiAAABAAEAAQA\u002FwuEA4gYg4gDjAOIA4wDiAOMAggAiYQMOAk5CACJhA05iICJhAE7iAIFOIEIAImEDLgD3A5uxNhQVEjQVEhT2ABgZmxf2ARQVdjBWDBIT9gMMFhD2AhebAPsCCwQgq0wSEwTrAkwSEwDkBUDtGeAH5gVoBkjmBOAHLwFvAS8CQSJBAg8BLwyBrwEPAQ8BD2EPAmECZQIvIiGMP0IPDC8CD+sI6hs\u002FagsvYIyPLG8MLwwvDM8M7xcsLwwPDO8X7ICE7wASExIT7wwszxIT70kM7xbsEe8grO894BHvA+AN6zTvRusO74AvDO8BDO8u7ADvZwzvgHASExITEhMSExITEhMSE+sW7ySMEhPsFxITEhMSExITEhPsCO+AeOx7EhMSExITEhMSExITEhMSExITEhMSE+w3EhMSE+wYEhPsgHrvKOwNL6zvHyDvGADvYeEo4ihfISLfQQI\u002FAj+CJEEC\u002F1oCr39GP4B2CzbiHgACgAIg5TDABBbgBgblD+ABxQDFAMUAxQDFAMUAxQDFAOYYNhQVFBVWFBUWFBX2ARE2ERYUFTYUFRITEhMSExITlgT2AjF2ERYS9gUvVhITEhMSExITEeAa7xIA71HgBO+ATuAS7wRgF1YPBAUKEhMSExITEhMSEy8SExITEhMSExESMw\u002FqAWYnEYQvSgQFFi8A5U4gJi4kBRHlUhZEBYDlIwDlVgAva+8C5RjvHOAE5QjvFwDrAu8W6wAP6wfvGOsC7x\u002FrB++AuOWZOO845cARjQTlg+9A7y\u002FgAeUgpDblgIQEVuUI6QIl4Az\u002FJgUGSBbmAhYE\u002FxQkJuU+6gImtuAA7g\u002FkAS7\u002FBiL\u002FNgTiAJ\u002F\u002FAgQufwV\u002FIv8NYQKBAv8HQQI\u002FgD8AAgACf+AQRD8FJALFBkUGZQblDycmB28GQKsvDQ+g5Sx24AAn5SrnCCbgADbpAqDmCqVWBRYlBukC5RTmADblD+YDJ+ADFuUVQEYH5ScGJ2YnJkf2BQAE6QJgNoUGBOUB6QKFAOUhpicmJybgAUUG5QAGByDpAiB25QgEpU8FBwYH5SoGBUYlJoUmBQYF4BAlBDblAwcmJzYFJAcG4AKlIKUgpeABxQDFAOIjDmTiAQQuYOJI5RsnBicGJxYHBiDpAqDlqxzgBOUPYOUpYPyHeP2YeOWA5iDlYuAewuAEgoAFBuUCDOUFAIUABQAlACUA5WTuCeAI5YDjExLvCOU4IOUuwA\u002FgGOUEDU\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\u002FcC\u002FdiAAAAAA4AIBAAADAQDQAwEAgAUBAMUFAQDgBQEAMAYBAFAGAQBbBgEAcAYBAOCOAACQBgEAsAYBANAGAQDwBgEAEAcBAM8IAQDUCAEA4AgBACAJAQBACQEA0AoBACwLAQA4CwEAPQsBAFALAQCVCwEAmQsBALALAQAADAEAOgwBAFAMAQBvDAEAeAwBAIAMAQBQDQEAoA0BAKAOAQDNDgEA4A4BAAAPAQCwDwEAoBABALwQAQDAEAEAEBEBALARAQBQEgEAIIoAAOCGAEHwhAQLZBwAyACsAUUADwBBACAACwAMABMAlAIfABcAFgAdAL8BBQAKADcAFwCPAVwADAAFAAQARQAEAA8ARwA6AAsAHwAJAAQAxABPAPgALQANABYArQDvABwABABHAJEAnAAzAEwE4QIAQeCFBAv0BayA\u002FoBE24BSeoBICIFOBIBC4oBgzWaAQKiA1oAAAAAA3YBDcBGAmQmBXB+AmoKKgJ+Dl4GNgcCMGBEckQMBiQAUKBEJAgUTJMohGAgIACELC5EJAAYAKUEhg0CnCICXgJCAQbyBi4gkIQkUjQABhZeBuACAnIOIgUFVgZ6JQZKVvoOfgWDUYgADgEDSAIBg1MDUgMYBCAkLgIsABoDAAw8GgJsDBAAWgEFTgZiAmICegJiAnoCYgJ6AmICegJgHgbFV\u002FxiaAQAIgIkDAAAoGAAAAgEACAAAAAABAAsGAwMAgImAkCIEgJAAAAAAAAAAAENEgEJpjQABAQDHiq+MBo+A5DMZC4CigJ2P5YrkCogCA0CmixaFk7UJjgEiiYGcgrkxCYGJgImBnIK5IwkLgJ0KgIqCuTgQgZSBlROCuTEJgYiBiYGdgLoiEIKJgKeEuDAQF4GKgZyCuTAQF4GKgY6Ai4O5MBCCiYCJgZyCyigAh5GBvAGGkYDiASiBj4BAopKIioCj7YsAC5YbEBEyg4yLAImDRnOBnYGdgZ2BwZJAu4GhgPWLg4hA3YS4iYGTyYGKgrCEr467gp2ICbiKsZJBr41GwLNI9Z9geHOHoYFBYQeAloTXgbGPALiApYSbi6yDr4ukgMKNiweBrIKxABEMgKskgEDsh2BPMoBIVoRGhRAMg0MTg0GCgUFSgrSNrIGKgqyIiIC8gqOLkYG4gq+MjYHbiAgoCECciZaDuTEJgYmAiYFA0IwC6ZFA7DGGnIHRjgDpiuaNQQCMQPYoCQoAgECNMSuAm4mpIIORiq2NQZY4htKVgI35KgAIEAKAwSAIg0Fbg4gIgK8ygmBQDQC2M9yBYEyrgGAjYDCQDgEE44BItoBH55mFmYWZAAAAAECpgI6AQfSIMZ2E34CzgE2AgEwuvoyAoaRCsICMgI+MQNKPQ0+ZR5GBYHodgUDRgECAEoFDYYOIgGBcFQEQqYCIYNh0vWAhX49DRZlhzF+ZhZmFmQBB4IsEC0FJvYCXgEFlgJeA5YCXgEDpgJGB5oCXgPaAjoBNVIBE1YBQIIFgz22BU52Al4BBV4CLgEDwgEN\u002FgGC4MweEbC6s3wBBsIwECzdDToBODoFGUoFIroBQ\u002FYBgzjqAzohtAAYAnd\u002F\u002FQO9OD1iEgUiQgJSAT2uBQLaAQs6AT+CIRmeAAEHwjAQLE0X\u002FhUDWgLCAQX+Bz4BhB9mAjoAAQZCNBAs3Q3mASreA\u002FoBgIeaBYMvAhUGVgfMAAAAAAAAAgEEegQBDeYBgLR+BYMvAhUGVgfMAAAAAAAAAgABB0I0ECxZBwwgIgaSBTtyqCk6HPz+Hi4COgK6AAEHwjQQLpwRB74BBnoCegFrkg0C1AAAAgN4GBoCKCYGJEIGNgAAAAECfBgABAAESEILzgIuAQIQBAYCiAYBAu4ieKYTaCIGJgKMEAgQIB4CegKCCnIBCKIDXg0Leh\u002FsIgNIBgKERgED8gULUgP6Ap4GtgLWAiAMDA4CLgIgAJoCQgIgDAwOAi4BBQYDhgUZSgdSERRsQioCRgJuMgKGkQNWDQLUAAACAmQAAAAAAAIC3BQATBRECDBEAAAwVBQiPACCLEioICwAHgowGkoGagIyKgNYYEIoBDAoAEBECBgUchY+Pj4iAQKEIgUD3gUE01ZmaRSCA5oLkgEGegUDwgEEugNKAi0DVqYC0AILfCYDegLDdgo3fnoCnh66AQX9gcpuBQNGAQIASgUNhg4iAYE2VQQ0IAIGJAAAJgsOB6cIAlwQAAQGA66BBapG\u002FgbWnjIKZlZSBi4CSAxoAgECGCICfmUCDFQ0NChYGgIhHhyCpgIhgtOSDVLmGjYe\u002FhUI+1IDGAQgJC4CLAAaAwAMPBoCbAwQAFoBBU4FBI4GxSC+9TZEYmgEACICJAwAAKBgAAAIBAAgAAAAAAQALBgMDAICJgJAiBICQQkOKhJ6An5mCooDugoyrg4gxSZ2JYPwFQh1rBeFP\u002F6+JNZmFRhuAWfCBmYS2gwAArIBFW4CygE5AgEQEgEgIhbyApoCOgEGFgEwDAYCeC4CbgEG9gJKA7oBgzY+BpICJgECogE+egABBoJIECxdBSIBFKIBJAgCASCiBSMSFQriBbdzVgABBwJIEC4EE3QCAxgUDAYFB9kCeByWQC4CIgUD8hEDQgLaQgJoAAQBAhTuBQIULCoLCmtqKuYqhgf2HqImPm7yAjwKDm4DJgI+A7YCPgO2Aj4CugruAjwaA9oDtgI+A7YCPgOyBj4D7gPsogOqAjITKgZoAAAOBwRCBvYDvAIGnC4SYMICJgULAgkOzgUCyioiAQVqCQTg5gK+OgYrngI6ApYi1gUCJgb+F0ZgYKAqxvtiLpIpBvACCioKMgoyCjIFM74JBPIBB+YXog96AYHVxgIsIgJuB0YGNoeWC7IFAyYCakbiDo4DegIuAo4BAlILAg7KA44SIgv+BYE8vgEMAj0ENAICugKyBwoBC+4BEniipgIhDKYFCOoVB1ILFirCDQL+AqIDHgfeBvYDLgIiC54FAsYHQgI+AlzKEQMwCgPqBQPqB\u002FYD1gfKAQQyBQQELgECbgNKAkYDQgEGkgEEBAIHQgFaujmA2mYS6hkRXkM+BYD\u002F9GDCBXwCtgZZCHxIvOYadg06BvUDBhkF2gLyDRd+G7BCCAEC2gEIXgUNtgEG4gENZgELvgP6ASUKAt4BCYoBBjYDDgFOIgKqE5oHcgmBvFYBF9YBDwYCVgECIgOuAlIFgVHqASA+BS9mAQmeCRM6AYFCogUSbCIBgcVeBSAWCr4k1mYVg\u002FqiJNZmFYC\u002FvCYdgL\u002FGBAEHQlgQLpwFgMAWBmIiNgkPEWb+\u002FYFH\u002FYFj\u002FQW2B6WB1CYCaV\u002FeHRNWpiGAkZkGLYE0DYKbfn1A5hUDdgVaBjV0wTB5CHUXhU0qEUF9gIAuBTj+E+oRK7xGAYJD5CQCBAAAAAAAAAABg\u002Fc+fQg2BYP\u002F9gWD\u002F\u002FYFg\u002F\u002F2BYP\u002F9gWD\u002F\u002FYFg\u002F\u002F2BYP\u002F9gWD\u002F\u002FYFg\u002F\u002F2BYP\u002F9gWD\u002F\u002FYFg\u002F\u002F2BYP\u002F9gWD\u002F\u002FYFg\u002F\u002F2BYP\u002F9gQBBgJgEC0WgjomGmRiAmYOhMAAIAAsDAoCWgJ6AXxeXh46BkoCJQTBCz0CfQnWdRGtB\u002F\u002F9BgBOYjoBgzQyBQQSBiISRgOOAX4eBl4EAQdCYBAv0AaEDgECCgI6AX1uHmIFOBoBByIOMgmDOIINAvAOA2YFgLn+ZgNiLQNVh8eWZAAAAAKCAi4CPgEVIgECSgkCzgKqCQPWAvAACgUEkgUbjgUMVA4FDBIBAxYFAywSAQTmBQWGDQK0JgZyBQLuBwIFDu4GIgk3jgIyAlYFBrIBgdPuAQQ2BQOICgEF9gdWB3oBAl4FAkoJAj4FA+IBgUmUCgUCogIuAj4DAgErzgUT8hKuDQLyB9IP+gkCADYCPgdcIgeuAQaCBQXQMjuiBQPiCQgQAgED6gdaBQaOBQrOByYFgSyiBQISAwIGKgENSgGBOBYBd54AAQdCaBAumA+iBQMOAQRiAnYCzgJOAQT+A4QCAWQiAsoCMAoBAg4BAnIBBpIBA1YFLMYBhp6SBsYGxgbGBsYGxgbGBsYGxgbGBsYGxgbGBSIWAQTCBmYAAoICJAICKCoBDPQeAQgCAuIDHgI0AgkCzgKqKAEDqgbWOnoBBBIFE84FAqwOFQTaBQxSHQwSA+4LGgUCcEoCmGYFBOYFBYYNArQiCnIFAu4S9gUO7gYiCTeOAjAOAiQAKgUGrgWB0+oFBDIJA4oRBfYHVgd6AQJaCQJKC\u002FoCPgUD4gGBSYxCDQKiAiQCAigqAwAGARDmAr4BEhYBAxoBBNYFAl4XDhdiDQ7eEq4NAvIbvg\u002F6CQIANgI+B14TrgEGggouBQWUajuiBQPiCQgQAgED6gdYLgUGdgqyAQoSByYFFKoRgRfiBQISAwIKJgENRgWBOBYBd5oMAAAAAAAAAAGAz\u002F1m\u002Fv2BR\u002F2BaDQgAgYkAAAmCYQXVYKbfn1A5hUDdgVaBjV0wVB5TSoRQX1gKEIBg5e+PbQLvQO8AAAAAAACIhJGA44CZgFXegEl+ipwMgK6AT5+AAEGAngQLhwSngZEAgJsAgJwAgKyAjoBOfYNHXIFJm4GJgbWBjYFAsIBAvxoqAgoYGAADiCCAkSOICAA5ngsgiAmSIYghC5eBjzuTDoFEPI3JARgIFBwSjUGSlQ2AjTg1EBwBDBgCCYkpgYuSAwgACAMhKpeBigsYCQuqD4CnIAAUIhgUAED\u002FgEICGgiBjQmJqodBqokPYM48LIFAoYGRAICbAICcAAAIgWDXdoC4gLiAuIC4gAAAAKIFBInuA4BfjICLgEDXgJWA2YWOgUFugYuAQKWAmIoaQMaAQOaBiYCIgLkYhIgBAQkDAQAJAgIPFAAEi4oJAAiAkQGBkSgACgwBC4GKDAkECACBkwwoGQMBASgBAAAFAgWAiYGOAQMAAxCAioGvgoiAjYCNgEFzgUHOgpKBsgOARNmAi4BCWACAYb1pgEDJgECfgYuBjQGJypkBloCTAYiUgUCtoYHvCQKB0gqAQQaAvooolzEPiwEZA4GMCQeBiASCixcRAAMFAgXVr8UnCoOJEAEQgYlA4osYQRqugImAQLjvjIKIhq0Gh42DiIaIAKIFBIlf0oBA1IBg3SqAYPPVmUH6hEWvg2wGa99h8\u002FqEYCYcgEDagI+DYcx2gLsRAYL0CYqUkhAaAjAAl4BAyAuAlAOBQK0ShNKAj4KIgIqAQj4BBz2AiIkKt4C8CAiAkBCMQOSCqYgAQZCiBAuRAWAjGYFAzBoBgEIIgZSBsYuqgJKAjAeBkAwPBICUBggDAQYDgZuAogADEIC8gpeAjYBDWoGyA4BhxK2AQMmAQL0BicqZAJeAkwEggpSBQK2gi4iAxYCVi6oci5AQgsYAgEC6gb6MGJeRgJmBjIDV1K\u002FFKBIKG4oOiEDiixhBGq6AiYBAuO+MgoiGrQaHjYOIhogAQbCjBAvTAUCoA4BfjICLgEDXgJWA2YWOgUFugYuA3oDFgJiKGkDGgEDmgYmAiIC5GCiLgPGJ9YGKAAAoECiJgY4BAwADEICKhKyCiICNgI2AQXOBQc6CkoGyA4BE2YCLgEJYAIBhvWVA\u002F4yCnoC7hYuBjQGJkbiajomAkwGIA4hBsYRBPYdBCa\u002F\u002F84vUqouDt4eJhaeHndGLroCJgEG4QP9D\u002FQAAAABArIBCoIBCy4BLQYFGUoHUhEf6hJmEsI9Q84BgzJqPQO6AQJ+AzohgvKaDVM6HbC6ET\u002F8AQZalBAsa8D8AAAAAAAD4PwAAAAAAAAAABtDPQ+v9TD4AQbulBAtlQAO44j9Pu2EFZ6zdPxgtRFT7Iek\u002Fm\u002FaB0gtz7z8YLURU+yH5P+JlLyJ\u002FK3o8B1wUMyamgTy9y\u002FB6iAdwPAdcFDMmppE8GC1EVPsh6T8YLURU+yHpv9IhM3982QJA0iEzf3zZAsAAQa+mBAvoFYAYLURU+yEJQBgtRFT7IQnAAwAAAAQAAAAEAAAABgAAAIP5ogBETm4A\u002FCkVANFXJwDdNPUAYtvAADyZlQBBkEMAY1H+ALveqwC3YcUAOm4kANJNQgBJBuAACeouAByS0QDrHf4AKbEcAOg+pwD1NYIARLsuAJzphAC0JnAAQX5fANaROQBTgzkAnPQ5AItfhAAo+b0A+B87AN7\u002FlwAPmAUAES\u002FvAApaiwBtH20Az342AAnLJwBGT7cAnmY\u002FAC3qXwC6J3UA5evHAD178QD3OQcAklKKAPtr6gAfsV8ACF2NADADVgB7\u002FEYA8KtrACC8zwA29JoA46kdAF5hkQAIG+YAhZllAKAUXwCNQGgAgNj\u002FACdzTQAGBjEAylYVAMmocwB74mAAa4zAABnERwDNZ8MACejcAFmDKgCLdsQAphyWAESv3QAZV9EApT4FAAUH\u002FwAzfj8AwjLoAJhP3gC7fTIAJj3DAB5r7wCf+F4ANR86AH\u002FyygDxhx0AfJAhAGokfADVbvoAMC13ABU7QwC1FMYAwxmdAK3EwgAsTUEADABdAIZ9RgDjcS0Am8aaADNiAAC00nwAtKeXADdV1QDXPvYAoxAYAE12\u002FABknSoAcNerAGN8+AB6sFcAFxXnAMBJVgA71tkAp4Q4ACQjywDWincAWlQjAAAfuQDxChsAGc7fAJ8x\u002FwBmHmoAmVdhAKz7RwB+f9gAImW3ADLoiQDmv2AA78TNAGw2CQBdP9QAFt7XAFg73gDem5IA0iIoACiG6ADiWE0AxsoyAAjjFgDgfcsAF8BQAPMdpwAY4FsALhM0AIMSYgCDSAEA9Y5bAK2wfwAe6fIASEpDABBn0wCq3dgArl9CAGphzgAKKKQA05m0AAam8gBcd38Ao8KDAGE8iACKc3gAr4xaAG\u002FXvQAtpmMA9L\u002FLAI2B7wAmwWcAVcpFAMrZNgAoqNIAwmGNABLJdwAEJhQAEkabAMRZxADIxUQATbKRAAAX8wDUQ60AKUnlAP3VEAAAvvwAHpTMAHDO7gATPvUA7PGAALPnwwDH+CgAkwWUAMFxPgAuCbMAC0XzAIgSnACrIHsALrWfAEeSwgB7Mi8ADFVtAHKnkABr5x8AMcuWAHkWSgBBeeIA9N+JAOiUlwDi5oQAmTGXAIjtawBfXzYAu\u002F0OAEiatABnpGwAcXJCAI1dMgCfFbgAvOUJAI0xJQD3dDkAMAUcAA0MAQBLCGgALO5YAEeqkAB05wIAvdYkAPd9pgBuSHIAnxbvAI6UpgC0kfYA0VNRAM8K8gAgmDMA9Ut+ALJjaADdPl8AQF0DAIWJfwBVUikAN2TAAG3YEAAySDIAW0x1AE5x1ABFVG4ACwnBACr1aQAUZtUAJwedAF0EUAC0O9sA6nbFAIf5FwBJa30AHSe6AJZpKQDGzKwArRRUAJDiagCI2YkALHJQAASkvgB3B5QA8zBwAAD8JwDqcagAZsJJAGTgPQCX3YMAoz+XAEOU\u002FQANhowAMUHeAJI5nQDdcIwAF7fnAAjfOwAVNysAXICgAFqAkwAQEZIAD+jYAGyArwDb\u002F0sAOJAPAFkYdgBipRUAYcu7AMeJuQAQQL0A0vIEAEl1JwDrtvYA2yK7AAoUqgCJJi8AZIN2AAk7MwAOlBoAUTqqAB2jwgCv7a4AXCYSAG3CTQAtepwAwFaXAAM\u002FgwAJ8PYAK0CMAG0xmQA5tAcADCAVANjDWwD1ksQAxq1LAE7KpQCnN80A5qk2AKuSlADdQmgAGWPeAHaM7wBoi1IA\u002FNs3AK6hqwDfFTEAAK6hAAz72gBkTWYA7QW3ACllMABXVr8AR\u002F86AGr5uQB1vvMAKJPfAKuAMABmjPYABMsVAPoiBgDZ5B0APbOkAFcbjwA2zQkATkLpABO+pAAzI7UA8KoaAE9lqADSwaUACz8PAFt4zQAj+XYAe4sEAIkXcgDGplMAb27iAO\u002FrAACbSlgAxNq3AKpmugB2z88A0QIdALHxLQCMmcEAw613AIZI2gD3XaAAxoD0AKzwLwDd7JoAP1y8ANDebQCQxx8AKtu2AKMlOgAAr5oArVOTALZXBAApLbQAS4B+ANoHpwB2qg4Ae1mhABYSKgDcty0A+uX9AInb\u002FgCJvv0A5HZsAAap\u002FAA+gHAAhW4VAP2H\u002FwAoPgcAYWczACoYhgBNveoAs+evAI9tbgCVZzkAMb9bAITXSAAw3xYAxy1DACVhNQDJcM4AMMu4AL9s\u002FQCkAKIABWzkAFrdoAAhb0cAYhLSALlchABwYUkAa1bgAJlSAQBQVTcAHtW3ADPxxAATbl8AXTDkAIUuqQAdssMAoTI2AAi3pADqsdQAFvchAI9p5AAn\u002F3cADAOAAI1ALQBPzaAAIKWZALOi0wAvXQoAtPlCABHaywB9vtAAm9vBAKsXvQDKooEACGpcAC5VFwAnAFUAfxTwAOEHhgAUC2QAlkGNAIe+3gDa\u002FSoAayW2AHuJNAAF8\u002F4Aub+eAGhqTwBKKqgAT8RaAC34vADXWpgA9MeVAA1NjQAgOqYApFdfABQ\u002FsQCAOJUAzCABAHHdhgDJ3rYAv2D1AE1lEQABB2sAjLCsALLA0ABRVUgAHvsOAJVywwCjBjsAwEA1AAbcewDgRcwATin6ANbKyADo80EAfGTeAJtk2ADZvjEApJfDAHdY1ABp48UA8NoTALo6PABGGEYAVXVfANK99QBuksYArC5dAA5E7QAcPkIAYcSHACn96QDn1vMAInzKAG+RNQAI4MUA\u002F9eNAG5q4gCw\u002FcYAkwjBAHxddABrrbIAzW6dAD5yewDGEWoA98+pAClz3wC1yboAtwBRAOKyDQB0uiQA5X1gAHTYigANFSwAgRgMAH5mlAABKRYAn3p2AP39vgBWRe8A2X42AOzZEwCLurkAxJf8ADGoJwDxbsMAlMU2ANioVgC0qLUAz8wOABKJLQBvVzQALFaJAJnO4wDWILkAa16qAD4qnAARX8wA\u002FQtKAOH0+wCOO20A4oYsAOnUhAD8tKkA7+7RAC41yQAvOWEAOCFEABvZyACB\u002FAoA+0pqAC8c2ABTtIQATpmMAFQizAAqVdwAwMbWAAsZlgAacLgAaZVkACZaYAA\u002FUu4AfxEPAPS1EQD8y\u002FUANLwtADS87gDoXcwA3V5gAGeOmwCSM+8AyRe4AGFYmwDhV7wAUYPGANg+EADdcUgALRzdAK8YoQAhLEYAWfPXANl6mACeVMAAT4b6AFYG\u002FADlea4AiSI2ADitIgBnk9wAVeiqAIImOADK55sAUQ2kAJkzsQCp1w4AaQVIAGWy8AB\u002FiKcAiEyXAPnRNgAhkrMAe4JKAJjPIQBAn9wA3EdVAOF0OgBn60IA\u002Fp3fAF7UXwB7Z6QAuqx6AFX2ogAriCMAQbpVAFluCAAhKoYAOUeDAInj5gDlntQASftAAP9W6QAcD8oAxVmKAJT6KwDTwcUAD8XPANtargBHxYYAhUNiACGGOwAseZQAEGGHACpMewCALBoAQ78SAIgmkAB4PIkAqMTkAOXbewDEOsIAJvTqAPdnigANkr8AZaMrAD2TsQC9fAsApFHcACfdYwBp4d0AmpQZAKgplQBozigACe20AESfIABOmMoAcIJjAH58IwAPuTIAp\u002FWOABRW5wAh8QgAtZ0qAG9+TQClGVEAtfmrAILf1gCW3WEAFjYCAMQ6nwCDoqEAcu1tADmNegCCuKkAazJcAEYnWwAANO0A0gB3APz0VQABWU0A4HGAAEGjvAQLrQFA+yH5PwAAAAAtRHQ+AAAAgJhG+DwAAABgUcx4OwAAAICDG\u002FA5AAAAQCAlejgAAACAIoLjNgAAAAAd82k1\u002FoIrZUcVZ0AAAAAAAAA4QwAA+v5CLna\u002FOjuevJr3DL29\u002Ff\u002F\u002F\u002F\u002F\u002FfPzxUVVVVVcU\u002FkSsXz1VVpT8X0KRnERGBPwAAAAAAAMhC7zn6\u002FkIu5j8kxIL\u002Fvb\u002FOP7X0DNcIa6w\u002FzFBG0quygz+EOk6b4NdVPwBB3r0EC4MR8D9uv4gaTzubPDUz+6k99u8\u002FXdzYnBNgcbxhgHc+muzvP9FmhxB6XpC8hX9u6BXj7z8T9mc1UtKMPHSFFdOw2e8\u002F+o75I4DOi7ze9t0pa9DvP2HI5mFO92A8yJt1GEXH7z+Z0zNb5KOQPIPzxso+vu8\u002FbXuDXaaalzwPiflsWLXvP\u002Fzv\u002FZIatY4890dyK5Ks7z\u002FRnC9wPb4+PKLR0zLso+8\u002FC26QiTQDarwb0\u002F6vZpvvPw69LypSVpW8UVsS0AGT7z9V6k6M74BQvMwxbMC9iu8\u002FFvTVuSPJkbzgLamumoLvP69VXOnj04A8UY6lyJh67z9Ik6XqFRuAvHtRfTy4cu8\u002FPTLeVfAfj7zqjYw4+WrvP79TEz+MiYs8dctv61tj7z8m6xF2nNmWvNRcBITgW+8\u002FYC86PvfsmjyquWgxh1TvP504hsuC54+8Hdn8IlBN7z+Nw6ZEQW+KPNaMYog7Ru8\u002FfQTksAV6gDyW3H2RST\u002FvP5SoqOP9jpY8OGJ1bno47z99SHTyGF6HPD+msk\u002FOMe8\u002F8ucfmCtHgDzdfOJlRSvvP14IcT97uJa8gWP14d8k7z8xqwlt4feCPOHeH\u002FWdHu8\u002F+r9vGpshPbyQ2drQfxjvP7QKDHKCN4s8CwPkpoUS7z+Py86JkhRuPFYvPqmvDO8\u002FtquwTXVNgzwVtzEK\u002FgbvP0x0rOIBQoY8MdhM\u002FHAB7z9K+NNdOd2PPP8WZLII\u002FO4\u002FBFuOO4Cjhrzxn5JfxfbuP2hQS8ztSpK8y6k6N6fx7j+OLVEb+AeZvGbYBW2u7O4\u002F0jaUPujRcbz3n+U02+fuPxUbzrMZGZm85agTwy3j7j9tTCqnSJ+FPCI0Ekym3u4\u002FimkoemASk7wcgKwERdruP1uJF0iPp1i8Ki73IQrW7j8bmklnmyx8vJeoUNn10e4\u002FEazCYO1jQzwtiWFgCM7uP+9kBjsJZpY8VwAd7UHK7j95A6Ha4cxuPNA8wbWixu4\u002FMBIPP47\u002Fkzze09fwKsPuP7CvervOkHY8Jyo21dq\u002F7j934FTrvR2TPA3d\u002FZmyvO4\u002FjqNxADSUj7ynLJ12srnuP0mjk9zM3oe8QmbPotq27j9fOA+9xt54vIJPnVYrtO4\u002F9lx77EYShrwPkl3KpLHuP47X\u002FRgFNZM82ie1Nkev7j8Fm4ovt5h7PP3Hl9QSre4\u002FCVQc4uFjkDwpVEjdB6vuP+rGGVCFxzQ8t0ZZiiap7j81wGQr5jKUPEghrRVvp+4\u002Fn3aZYUrkjLwJ3Ha54aXuP6hN7zvFM4y8hVU6sH6k7j+u6SuJeFOEvCDDzDRGo+4\u002FWFhWeN3Ok7wlIlWCOKLuP2QZfoCqEFc8c6lM1FWh7j8oIl6\u002F77OTvM07f2aeoO4\u002Fgrk0h60Sary\u002F2gt1EqDuP+6pbbjvZ2O8LxplPLKf7j9RiOBUPdyAvISUUfl9n+4\u002Fzz5afmQfeLx0X+zodZ\u002FuP7B9i8BK7oa8dIGlSJqf7j+K5lUeMhmGvMlnQlbrn+4\u002F09QJXsuckDw\u002FXd5PaaDuPx2lTbncMnu8hwHrcxSh7j9rwGdU\u002FeyUPDLBMAHtoe4\u002FVWzWq+HrZTxiTs8286LuP0LPsy\u002FFoYi8Eho+VCek7j80NzvxtmmTvBPOTJmJpe4\u002FHv8ZOoRegLytxyNGGqfuP25XcthQ1JS87ZJEm9mo7j8Aig5bZ62QPJlmitnHqu4\u002FtOrwwS+3jTzboCpC5azuP\u002F\u002FnxZxgtmW8jES1FjKv7j9EX\u002FNZg\u002FZ7PDZ3FZmuse4\u002Fgz0epx8Jk7zG\u002F5ELW7TuPykebIu4qV285cXNsDe37j9ZuZB8+SNsvA9SyMtEuu4\u002Fqvn0IkNDkrxQTt6fgr3uP0uOZtdsyoW8ugfKcPHA7j8nzpEr\u002FK9xPJDwo4KRxO4\u002Fu3MK4TXSbTwjI+MZY8juP2MiYiIExYe8ZeVde2bM7j\u002FVMeLjhhyLPDMtSuyb0O4\u002FFbu809G7kbxdJT6yA9XuP9Ix7pwxzJA8WLMwE57Z7j+zWnNuhGmEPL\u002F9eVVr3u4\u002FtJ2Ol83fgrx689O\u002Fa+PuP4czy5J3Gow8rdNamZ\u002Fo7j\u002F62dFKj3uQvGa2jSkH7u4\u002Fuq7cVtnDVbz7FU+4ovPuP0D2pj0OpJC8OlnljXL57j80k6049NZovEde+\u002FJ2\u002F+4\u002FNYpYa+LukbxKBqEwsAXvP83dXwrX\u002F3Q80sFLkB4M7z+smJL6+72RvAke11vCEu8\u002FswyvMK5uczycUoXdmxnvP5T9n1wy4448etD\u002FX6sg7z+sWQnRj+CEPEvRVy7xJ+8\u002FZxpOOK\u002FNYzy15waUbS\u002FvP2gZkmwsa2c8aZDv3CA37z\u002FStcyDGIqAvPrDXVULP+8\u002Fb\u002Fr\u002FP12tj7x8iQdKLUfvP0mpdTiuDZC88okNCIdP7z+nBz2mhaN0PIek+9wYWO8\u002FDyJAIJ6RgryYg8kW42DvP6ySwdVQWo48hTLbA+Zp7z9LawGsWTqEPGC0AfMhc+8\u002FHz60ByHVgrxfm3szl3zvP8kNRzu5Kom8KaH1FEaG7z\u002FTiDpgBLZ0PPY\u002Fi+cukO8\u002FcXKdUezFgzyDTMf7UZrvP\u002FCR048S94+82pCkoq+k7z99dCPimK6NvPFnji1Ir+8\u002FCCCqQbzDjjwnWmHuG7rvPzLrqcOUK4Q8l7prNyvF7z\u002FuhdExqWSKPEBFblt20O8\u002F7eM75Lo3jrwUvpyt\u002FdvvP53NkU07iXc82JCegcHn7z+JzGBBwQVTPPFxjyvC8+8\u002F0XSeAFedvSqAcFIP\u002F\u002F8+JwoAAABkAAAA6AMAABAnAACghgEAQEIPAICWmAAA4fUFGAAAADUAAABxAAAAa\u002F\u002F\u002F\u002F877\u002F\u002F+Sv\u002F\u002F\u002FAAAAAAAAAAAZAAoAGRkZAAAAAAUAAAAAAAAJAAAAAAsAAAAAAAAAABkAEQoZGRkDCgcAAQAJCxgAAAkGCwAACwAGGQAAABkZGQBB8c4ECyEOAAAAAAAAAAAZAAoNGRkZAA0AAAIACQ4AAAAJAA4AAA4AQavPBAsBDABBt88ECxUTAAAAABMAAAAACQwAAAAAAAwAAAwAQeXPBAsBEABB8c8ECxUPAAAABA8AAAAACRAAAAAAABAAABAAQZ\u002FQBAsBEgBBq9AECx4RAAAAABEAAAAACRIAAAAAABIAABIAABoAAAAaGhoAQeLQBAsOGgAAABoaGgAAAAAAAAkAQZPRBAsBFABBn9EECxUXAAAAABcAAAAACRQAAAAAABQAABQAQc3RBAsBFgBB2dEECycVAAAAABUAAAAACRYAAAAAABYAABYAADAxMjM0NTY3ODlBQkNERUYAQaTSBAsCpgEAQczSBAsI\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8AQZDTBAsBBQBBnNMECwKhAQBBtNMECw6iAQAAowEAACgrAQAABABBzNMECwEBAEHc0wQLBf\u002F\u002F\u002F\u002F8KAEGg1AQLB5ApAQBAMQI=\";if(!K(L)){var M=L;L=d.locateFile?d.locateFile(M,q):q+M;}function ca(){var a=L;return Promise.resolve().then(()=>{if(a==L&&v)var b=new Uint8Array(v);else{if(K(a)){b=atob(a.slice(37));for(var c=new Uint8Array(b.length),e=0;e\u003Cb.length;++e)c[e]=b.charCodeAt(e);b=c;}else b=void 0;if(!b)throw\"both async and sync fetching of the wasm failed\";}return b;});}function da(a,b){return ca().then(c=>WebAssembly.instantiate(c,a)).then(c=>c).then(b,c=>{u(`failed to asynchronously prepare wasm: ${c}`);w(c);});}function ea(a,b){return da(a,b);}var N=a=>{for(;0\u003Ca.length;)a.shift()(d);},O=\"undefined\"!=typeof TextDecoder?new TextDecoder(\"utf8\"):void 0,P=(a,b)=>{for(var c=b+NaN,e=b;a[e]&&!(e>=c);)++e;if(16\u003Ce-b&&a.buffer&&O)return O.decode(a.subarray(b,e));for(c=\"\";b\u003Ce;){var f=a[b++];if(f&128){var g=a[b++]&63;if(192==(f&224))c+=String.fromCharCode((f&31)\u003C\u003C6|g);else{var l=a[b++]&63;f=224==(f&240)?(f&15)\u003C\u003C12|g\u003C\u003C6|l:(f&7)\u003C\u003C18|g\u003C\u003C12|l\u003C\u003C6|a[b++]&63;65536>f?c+=String.fromCharCode(f):(f-=65536,c+=String.fromCharCode(55296|f>>10,56320|f&1023));}}else c+=String.fromCharCode(f);}return c;},fa=[0,31,60,91,121,152,182,213,244,274,305,335],ha=[0,31,59,90,120,151,181,212,243,273,304,334],Q=a=>{for(var b=0,c=0;c\u003Ca.length;++c){var e=a.charCodeAt(c);127>=e?b++:2047>=e?b+=2:55296\u003C=e&&57343>=e?(b+=4,++c):b+=3;}return b;},R=(a,b,c)=>{var e=A;if(0\u003Cc){c=b+c-1;for(var f=0;f\u003Ca.length;++f){var g=a.charCodeAt(f);if(55296\u003C=g&&57343>=g){var l=a.charCodeAt(++f);g=65536+((g&1023)\u003C\u003C10)|l&1023;}if(127>=g){if(b>=c)break;e[b++]=g;}else{if(2047>=g){if(b+1>=c)break;e[b++]=192|g>>6;}else{if(65535>=g){if(b+2>=c)break;e[b++]=224|g>>12;}else{if(b+3>=c)break;e[b++]=240|g>>18;e[b++]=128|g>>12&63;}e[b++]=128|g>>6&63;}e[b++]=128|g&63;}}e[b]=0;}},T=a=>{var b=Q(a)+1,c=S(b);c&&R(a,c,b);return c;};function U(){}var ia=[null,[],[]],ka=(a,b,c,e)=>{var f={string:h=>{var r=0;if(null!==h&&void 0!==h&&0!==h){r=Q(h)+1;var Y=V(r);R(h,Y,r);r=Y;}return r;},array:h=>{var r=V(h.length);z.set(h,r);return r;}};a=d[\"_\"+a];var g=[],l=0;if(e)for(var m=0;m\u003Ce.length;m++){var t=f[c[m]];t?(0===l&&(l=W()),g[m]=t(e[m])):g[m]=e[m];}c=a.apply(null,g);return c=function(h){0!==l&&ja(l);return\"string\"===b?h?P(A,h):\"\":\"boolean\"===b?!!h:h;}(c);};U=(a,b,c)=>{a=a?P(A,a):\"\";b=null!==b?JSON.parse(b?P(A,b):\"\"):[];try{const e=d.externalCall(a,b);return e?T(e):null;}catch(e){return d.HEAPU8[c]=1,T(e.message);}};var la={a:(a,b,c,e)=>{w(`Assertion failed: ${a?P(A,a):\"\"}, at: `+[b?b?P(A,b):\"\":\"unknown filename\",c,e?e?P(A,e):\"\":\"unknown function\"]);},i:function(a,b,c){a=new Date(1E3*(b+2097152>>>0\u003C4194305-!!a?(a>>>0)+4294967296*b:NaN));B[c>>2]=a.getSeconds();B[c+4>>2]=a.getMinutes();B[c+8>>2]=a.getHours();B[c+12>>2]=a.getDate();B[c+16>>2]=a.getMonth();B[c+20>>2]=a.getFullYear()-1900;B[c+24>>2]=a.getDay();b=a.getFullYear();B[c+28>>2]=(0!==b%4||0===b%100&&0!==b%400?ha:fa)[a.getMonth()]+a.getDate()-1|0;B[c+36>>2]=-(60*a.getTimezoneOffset());b=new Date(a.getFullYear(),6,1).getTimezoneOffset();var e=new Date(a.getFullYear(),0,1).getTimezoneOffset();B[c+32>>2]=(b!=e&&a.getTimezoneOffset()==Math.min(e,b))|0;},d:(a,b,c)=>{function e(t){return(t=t.toTimeString().match(\u002F\\(([A-Za-z ]+)\\)$\u002F))?t[1]:\"GMT\";}var f=new Date().getFullYear(),g=new Date(f,0,1),l=new Date(f,6,1);f=g.getTimezoneOffset();var m=l.getTimezoneOffset();C[a>>2]=60*Math.max(f,m);B[b>>2]=Number(f!=m);a=e(g);b=e(l);a=T(a);b=T(b);m\u003Cf?(C[c>>2]=a,C[c+4>>2]=b):(C[c>>2]=b,C[c+4>>2]=a);},b:()=>{w(\"\");},g:U,f:function(a,b){a=a?P(A,a):\"\";let c;try{c=window.JSON.parse(a);}catch(e){c=a;}0!==b?window.alert(a):window.console.log(\"DUMP\",c);},e:()=>Date.now(),j:a=>{var b=A.length;a>>>=0;if(2147483648\u003Ca)return!1;for(var c=1;4>=c;c*=2){var e=b*(1+.2\u002Fc);e=Math.min(e,a+100663296);var f=Math;e=Math.max(a,e);a:{f=(f.min.call(f,2147483648,e+(65536-e%65536)%65536)-x.buffer.byteLength+65535)\u002F65536;try{x.grow(f);D();var g=1;break a;}catch(l){}g=void 0;}if(g)return!0;}return!1;},c:(a,b,c,e)=>{for(var f=0,g=0;g\u003Cc;g++){var l=C[b>>2],m=C[b+4>>2];b+=8;for(var t=0;t\u003Cm;t++){var h=A[l+t],r=ia[a];0===h||10===h?((1===a?aa:u)(P(r,0)),r.length=0):r.push(h);}f+=m;}C[e>>2]=f;return 0;},k:function(a){a=a?P(A,a):\"\";window.console.log(a);},h:function(a){a=a?P(A,a):\"\";return Date.parse(a);},l:function(a,b,c,e){a=a?P(A,a):\"\";b=b?P(A,b):\"\";c=c?P(A,c):\"\";c=`Quickjs -- ${a}: ${b}\\n${c}`;0!==e?window.alert(c):window.console.error(c);}},X=function(){function a(c){X=c.exports;x=X.m;D();F.unshift(X.n);H--;d.monitorRunDependencies?.(H);0==H&&(null!==I&&(clearInterval(I),I=null),J&&(c=J,J=null,c()));return X;}var b={a:la};H++;d.monitorRunDependencies?.(H);if(d.instantiateWasm)try{return d.instantiateWasm(b,a);}catch(c){u(`Module.instantiateWasm callback failed with error: ${c}`),n(c);}ea(b,function(c){a(c.instance);}).catch(n);return{};}();d._evalInSandbox=(a,b)=>(d._evalInSandbox=X.o)(a,b);d._nukeSandbox=()=>(d._nukeSandbox=X.p)();d._init=(a,b)=>(d._init=X.q)(a,b);d._commFun=(a,b)=>(d._commFun=X.r)(a,b);d._dumpMemoryUse=()=>(d._dumpMemoryUse=X.s)();var S=a=>(S=X.t)(a);d._free=a=>(d._free=X.u)(a);var W=()=>(W=X.w)(),ja=a=>(ja=X.x)(a),V=a=>(V=X.y)(a);d.ccall=ka;d.cwrap=(a,b,c,e)=>{var f=!c||c.every(g=>\"number\"===g||\"boolean\"===g);return\"string\"!==b&&f&&!e?d[\"_\"+a]:function(){return ka(a,b,c,arguments,e);};};d.stringToNewUTF8=T;var Z;J=function ma(){Z||na();Z||(J=ma);};function na(){function a(){if(!Z&&(Z=!0,d.calledRun=!0,!y)){N(F);k(d);if(d.onRuntimeInitialized)d.onRuntimeInitialized();if(d.postRun)for(\"function\"==typeof d.postRun&&(d.postRun=[d.postRun]);d.postRun.length;){var b=d.postRun.shift();G.unshift(b);}N(G);}}if(!(0\u003CH)){if(d.preRun)for(\"function\"==typeof d.preRun&&(d.preRun=[d.preRun]);d.preRun.length;)ba();N(E);0\u003CH||(d.setStatus?(d.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){d.setStatus(\"\");},1);a();},1)):a());}}if(d.preInit)for(\"function\"==typeof d.preInit&&(d.preInit=[d.preInit]);0\u003Cd.preInit.length;)d.preInit.pop()();na();return moduleArg.ready;};})();\u002F* harmony default export *\u002F const quickjs_eval = (Module);\n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fpdf.sandbox.external.js\n+;\u002F\u002F .\u002Fsrc\u002Fpdf.sandbox.external.js\n class SandboxSupportBase {\n   constructor(win) {\n     this.win = win;\n@@ -75,6 +3742,9 @@\n     throw new Error(\"Not implemented\");\n   }\n   callSandboxFunction(name, args) {\n+    if (!this.commFun) {\n+      return;\n+    }\n     try {\n       args = this.exportValueToSandbox(args);\n       this.commFun(name, args);\n@@ -164,11 +3834,10 @@\n     };\n   }\n }\n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fpdf.sandbox.js\n+;\u002F\u002F .\u002Fsrc\u002Fpdf.sandbox.js\n+\n \n \n-const pdfjsVersion = \"4.3.136\";\n-const pdfjsBuild = \"0cec64437\";\n class SandboxSupport extends SandboxSupportBase {\n   exportValueToSandbox(val) {\n     return JSON.stringify(val);\n@@ -188,7 +3857,7 @@\n     this._alertOnError = 0;\n   }\n   create(data) {\n-    const code = [\"var __webpack_exports__ = globalThis.pdfjsSandbox = {};\\n\\n;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fscripting_api\u002Fconstants.js\\nconst Border = Object.freeze({\\n  s: \\\"solid\\\",\\n  d: \\\"dashed\\\",\\n  b: \\\"beveled\\\",\\n  i: \\\"inset\\\",\\n  u: \\\"underline\\\"\\n});\\nconst Cursor = Object.freeze({\\n  visible: 0,\\n  hidden: 1,\\n  delay: 2\\n});\\nconst Display = Object.freeze({\\n  visible: 0,\\n  hidden: 1,\\n  noPrint: 2,\\n  noView: 3\\n});\\nconst Font = Object.freeze({\\n  Times: \\\"Times-Roman\\\",\\n  TimesB: \\\"Times-Bold\\\",\\n  TimesI: \\\"Times-Italic\\\",\\n  TimesBI: \\\"Times-BoldItalic\\\",\\n  Helv: \\\"Helvetica\\\",\\n  HelvB: \\\"Helvetica-Bold\\\",\\n  HelvI: \\\"Helvetica-Oblique\\\",\\n  HelvBI: \\\"Helvetica-BoldOblique\\\",\\n  Cour: \\\"Courier\\\",\\n  CourB: \\\"Courier-Bold\\\",\\n  CourI: \\\"Courier-Oblique\\\",\\n  CourBI: \\\"Courier-BoldOblique\\\",\\n  Symbol: \\\"Symbol\\\",\\n  ZapfD: \\\"ZapfDingbats\\\",\\n  KaGo: \\\"HeiseiKakuGo-W5-UniJIS-UCS2-H\\\",\\n  KaMi: \\\"HeiseiMin-W3-UniJIS-UCS2-H\\\"\\n});\\nconst Highlight = Object.freeze({\\n  n: \\\"none\\\",\\n  i: \\\"invert\\\",\\n  p: \\\"push\\\",\\n  o: \\\"outline\\\"\\n});\\nconst Position = Object.freeze({\\n  textOnly: 0,\\n  iconOnly: 1,\\n  iconTextV: 2,\\n  textIconV: 3,\\n  iconTextH: 4,\\n  textIconH: 5,\\n  overlay: 6\\n});\\nconst ScaleHow = Object.freeze({\\n  proportional: 0,\\n  anamorphic: 1\\n});\\nconst ScaleWhen = Object.freeze({\\n  always: 0,\\n  never: 1,\\n  tooBig: 2,\\n  tooSmall: 3\\n});\\nconst Style = Object.freeze({\\n  ch: \\\"check\\\",\\n  cr: \\\"cross\\\",\\n  di: \\\"diamond\\\",\\n  ci: \\\"circle\\\",\\n  st: \\\"star\\\",\\n  sq: \\\"square\\\"\\n});\\nconst Trans = Object.freeze({\\n  blindsH: \\\"BlindsHorizontal\\\",\\n  blindsV: \\\"BlindsVertical\\\",\\n  boxI: \\\"BoxIn\\\",\\n  boxO: \\\"BoxOut\\\",\\n  dissolve: \\\"Dissolve\\\",\\n  glitterD: \\\"GlitterDown\\\",\\n  glitterR: \\\"GlitterRight\\\",\\n  glitterRD: \\\"GlitterRightDown\\\",\\n  random: \\\"Random\\\",\\n  replace: \\\"Replace\\\",\\n  splitHI: \\\"SplitHorizontalIn\\\",\\n  splitHO: \\\"SplitHorizontalOut\\\",\\n  splitVI: \\\"SplitVerticalIn\\\",\\n  splitVO: \\\"SplitVerticalOut\\\",\\n  wipeD: \\\"WipeDown\\\",\\n  wipeL: \\\"WipeLeft\\\",\\n  wipeR: \\\"WipeRight\\\",\\n  wipeU: \\\"WipeUp\\\"\\n});\\nconst ZoomType = Object.freeze({\\n  none: \\\"NoVary\\\",\\n  fitP: \\\"FitPage\\\",\\n  fitW: \\\"FitWidth\\\",\\n  fitH: \\\"FitHeight\\\",\\n  fitV: \\\"FitVisibleWidth\\\",\\n  pref: \\\"Preferred\\\",\\n  refW: \\\"ReflowWidth\\\"\\n});\\nconst GlobalConstants = Object.freeze({\\n  IDS_GREATER_THAN: \\\"Invalid value: must be greater than or equal to % s.\\\",\\n  IDS_GT_AND_LT: \\\"Invalid value: must be greater than or equal to % s \\\" + \\\"and less than or equal to % s.\\\",\\n  IDS_LESS_THAN: \\\"Invalid value: must be less than or equal to % s.\\\",\\n  IDS_INVALID_MONTH: \\\"** Invalid **\\\",\\n  IDS_INVALID_DATE: \\\"Invalid date \u002F time: please ensure that the date \u002F time exists. Field\\\",\\n  IDS_INVALID_DATE2: \\\" should match format \\\",\\n  IDS_INVALID_VALUE: \\\"The value entered does not match the format of the field\\\",\\n  IDS_AM: \\\"am\\\",\\n  IDS_PM: \\\"pm\\\",\\n  IDS_MONTH_INFO: \\\"January[1] February[2] March[3] April[4] May[5] \\\" + \\\"June[6] July[7] August[8] September[9] October[10] \\\" + \\\"November[11] December[12] Sept[9] Jan[1] Feb[2] Mar[3] \\\" + \\\"Apr[4] Jun[6] Jul[7] Aug[8] Sep[9] Oct[10] Nov[11] Dec[12]\\\",\\n  IDS_STARTUP_CONSOLE_MSG: \\\"** ^ _ ^ **\\\",\\n  RE_NUMBER_ENTRY_DOT_SEP: [\\\"[+-]?\\\\\\\\d*\\\\\\\\.?\\\\\\\\d*\\\"],\\n  RE_NUMBER_COMMIT_DOT_SEP: [\\\"[+-]?\\\\\\\\d+(\\\\\\\\.\\\\\\\\d+)?\\\", \\\"[+-]?\\\\\\\\.\\\\\\\\d+\\\", \\\"[+-]?\\\\\\\\d+\\\\\\\\.\\\"],\\n  RE_NUMBER_ENTRY_COMMA_SEP: [\\\"[+-]?\\\\\\\\d*,?\\\\\\\\d*\\\"],\\n  RE_NUMBER_COMMIT_COMMA_SEP: [\\\"[+-]?\\\\\\\\d+([.,]\\\\\\\\d+)?\\\", \\\"[+-]?[.,]\\\\\\\\d+\\\", \\\"[+-]?\\\\\\\\d+[.,]\\\"],\\n  RE_ZIP_ENTRY: [\\\"\\\\\\\\d{0,5}\\\"],\\n  RE_ZIP_COMMIT: [\\\"\\\\\\\\d{5}\\\"],\\n  RE_ZIP4_ENTRY: [\\\"\\\\\\\\d{0,5}(\\\\\\\\.|[- ])?\\\\\\\\d{0,4}\\\"],\\n  RE_ZIP4_COMMIT: [\\\"\\\\\\\\d{5}(\\\\\\\\.|[- ])?\\\\\\\\d{4}\\\"],\\n  RE_PHONE_ENTRY: [\\\"\\\\\\\\d{0,3}(\\\\\\\\.|[- ])?\\\\\\\\d{0,3}(\\\\\\\\.|[- ])?\\\\\\\\d{0,4}\\\", \\\"\\\\\\\\(\\\\\\\\d{0,3}\\\", \\\"\\\\\\\\(\\\\\\\\d{0,3}\\\\\\\\)(\\\\\\\\.|[- ])?\\\\\\\\d{0,3}(\\\\\\\\.|[- ])?\\\\\\\\d{0,4}\\\", \\\"\\\\\\\\(\\\\\\\\d{0,3}(\\\\\\\\.|[- ])?\\\\\\\\d{0,3}(\\\\\\\\.|[- ])?\\\\\\\\d{0,4}\\\", \\\"\\\\\\\\d{0,3}\\\\\\\\)(\\\\\\\\.|[- ])?\\\\\\\\d{0,3}(\\\\\\\\.|[- ])?\\\\\\\\d{0,4}\\\", \\\"011(\\\\\\\\.|[- \\\\\\\\d])*\\\"],\\n  RE_PHONE_COMMIT: [\\\"\\\\\\\\d{3}(\\\\\\\\.|[- ])?\\\\\\\\d{4}\\\", \\\"\\\\\\\\d{3}(\\\\\\\\.|[- ])?\\\\\\\\d{3}(\\\\\\\\.|[- ])?\\\\\\\\d{4}\\\", \\\"\\\\\\\\(\\\\\\\\d{3}\\\\\\\\)(\\\\\\\\.|[- ])?\\\\\\\\d{3}(\\\\\\\\.|[- ])?\\\\\\\\d{4}\\\", \\\"011(\\\\\\\\.|[- \\\\\\\\d])*\\\"],\\n  RE_SSN_ENTRY: [\\\"\\\\\\\\d{0,3}(\\\\\\\\.|[- ])?\\\\\\\\d{0,2}(\\\\\\\\.|[- ])?\\\\\\\\d{0,4}\\\"],\\n  RE_SSN_COMMIT: [\\\"\\\\\\\\d{3}(\\\\\\\\.|[- ])?\\\\\\\\d{2}(\\\\\\\\.|[- ])?\\\\\\\\d{4}\\\"]\\n});\\n\\n;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fscripting_api\u002Fcommon.js\\nconst FieldType = {\\n  none: 0,\\n  number: 1,\\n  percent: 2,\\n  date: 3,\\n  time: 4\\n};\\nfunction createActionsMap(actions) {\\n  const actionsMap = new Map();\\n  if (actions) {\\n    for (const [eventType, actionsForEvent] of Object.entries(actions)) {\\n      actionsMap.set(eventType, actionsForEvent);\\n    }\\n  }\\n  return actionsMap;\\n}\\nfunction getFieldType(actions) {\\n  let format = actions.get(\\\"Format\\\");\\n  if (!format) {\\n    return FieldType.none;\\n  }\\n  format = format[0];\\n  format = format.trim();\\n  if (format.startsWith(\\\"AFNumber_\\\")) {\\n    return FieldType.number;\\n  }\\n  if (format.startsWith(\\\"AFPercent_\\\")) {\\n    return FieldType.percent;\\n  }\\n  if (format.startsWith(\\\"AFDate_\\\")) {\\n    return FieldType.date;\\n  }\\n  if (format.startsWith(\\\"AFTime_\\\")) {\\n    return FieldType.time;\\n  }\\n  return FieldType.none;\\n}\\n\\n;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fshared\u002Fscripting_utils.js\\nfunction makeColorComp(n) {\\n  return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, \\\"0\\\");\\n}\\nfunction scaleAndClamp(x) {\\n  return Math.max(0, Math.min(255, 255 * x));\\n}\\nclass ColorConverters {\\n  static CMYK_G([c, y, m, k]) {\\n    return [\\\"G\\\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\\n  }\\n  static G_CMYK([g]) {\\n    return [\\\"CMYK\\\", 0, 0, 0, 1 - g];\\n  }\\n  static G_RGB([g]) {\\n    return [\\\"RGB\\\", g, g, g];\\n  }\\n  static G_rgb([g]) {\\n    g = scaleAndClamp(g);\\n    return [g, g, g];\\n  }\\n  static G_HTML([g]) {\\n    const G = makeColorComp(g);\\n    return `#${G}${G}${G}`;\\n  }\\n  static RGB_G([r, g, b]) {\\n    return [\\\"G\\\", 0.3 * r + 0.59 * g + 0.11 * b];\\n  }\\n  static RGB_rgb(color) {\\n    return color.map(scaleAndClamp);\\n  }\\n  static RGB_HTML(color) {\\n    return `#${color.map(makeColorComp).join(\\\"\\\")}`;\\n  }\\n  static T_HTML() {\\n    return \\\"#00000000\\\";\\n  }\\n  static T_rgb() {\\n    return [null];\\n  }\\n  static CMYK_RGB([c, y, m, k]) {\\n    return [\\\"RGB\\\", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\\n  }\\n  static CMYK_rgb([c, y, m, k]) {\\n    return [scaleAndClamp(1 - Math.min(1, c + k)), scaleAndClamp(1 - Math.min(1, m + k)), scaleAndClamp(1 - Math.min(1, y + k))];\\n  }\\n  static CMYK_HTML(components) {\\n    const rgb = this.CMYK_RGB(components).slice(1);\\n    return this.RGB_HTML(rgb);\\n  }\\n  static RGB_CMYK([r, g, b]) {\\n    const c = 1 - r;\\n    const m = 1 - g;\\n    const y = 1 - b;\\n    const k = Math.min(c, m, y);\\n    return [\\\"CMYK\\\", c, m, y, k];\\n  }\\n}\\n\\n;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fscripting_api\u002Fpdf_object.js\\nclass PDFObject {\\n  constructor(data) {\\n    this._expandos = Object.create(null);\\n    this._send = data.send || null;\\n    this._id = data.id || null;\\n  }\\n}\\n\\n;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fscripting_api\u002Fcolor.js\\n\\n\\nclass Color extends PDFObject {\\n  constructor() {\\n    super({});\\n    this.transparent = [\\\"T\\\"];\\n    this.black = [\\\"G\\\", 0];\\n    this.white = [\\\"G\\\", 1];\\n    this.red = [\\\"RGB\\\", 1, 0, 0];\\n    this.green = [\\\"RGB\\\", 0, 1, 0];\\n    this.blue = [\\\"RGB\\\", 0, 0, 1];\\n    this.cyan = [\\\"CMYK\\\", 1, 0, 0, 0];\\n    this.magenta = [\\\"CMYK\\\", 0, 1, 0, 0];\\n    this.yellow = [\\\"CMYK\\\", 0, 0, 1, 0];\\n    this.dkGray = [\\\"G\\\", 0.25];\\n    this.gray = [\\\"G\\\", 0.5];\\n    this.ltGray = [\\\"G\\\", 0.75];\\n  }\\n  static _isValidSpace(cColorSpace) {\\n    return typeof cColorSpace === \\\"string\\\" && (cColorSpace === \\\"T\\\" || cColorSpace === \\\"G\\\" || cColorSpace === \\\"RGB\\\" || cColorSpace === \\\"CMYK\\\");\\n  }\\n  static _isValidColor(colorArray) {\\n    if (!Array.isArray(colorArray) || colorArray.length === 0) {\\n      return false;\\n    }\\n    const space = colorArray[0];\\n    if (!Color._isValidSpace(space)) {\\n      return false;\\n    }\\n    switch (space) {\\n      case \\\"T\\\":\\n        if (colorArray.length !== 1) {\\n          return false;\\n        }\\n        break;\\n      case \\\"G\\\":\\n        if (colorArray.length !== 2) {\\n          return false;\\n        }\\n        break;\\n      case \\\"RGB\\\":\\n        if (colorArray.length !== 4) {\\n          return false;\\n        }\\n        break;\\n      case \\\"CMYK\\\":\\n        if (colorArray.length !== 5) {\\n          return false;\\n        }\\n        break;\\n      default:\\n        return false;\\n    }\\n    return colorArray.slice(1).every(c => typeof c === \\\"number\\\" && c >= 0 && c \u003C= 1);\\n  }\\n  static _getCorrectColor(colorArray) {\\n    return Color._isValidColor(colorArray) ? colorArray : [\\\"G\\\", 0];\\n  }\\n  convert(colorArray, cColorSpace) {\\n    if (!Color._isValidSpace(cColorSpace)) {\\n      return this.black;\\n    }\\n    if (cColorSpace === \\\"T\\\") {\\n      return [\\\"T\\\"];\\n    }\\n    colorArray = Color._getCorrectColor(colorArray);\\n    if (colorArray[0] === cColorSpace) {\\n      return colorArray;\\n    }\\n    if (colorArray[0] === \\\"T\\\") {\\n      return this.convert(this.black, cColorSpace);\\n    }\\n    return ColorConverters[`${colorArray[0]}_${cColorSpace}`](colorArray.slice(1));\\n  }\\n  equal(colorArray1, colorArray2) {\\n    colorArray1 = Color._getCorrectColor(colorArray1);\\n    colorArray2 = Color._getCorrectColor(colorArray2);\\n    if (colorArray1[0] === \\\"T\\\" || colorArray2[0] === \\\"T\\\") {\\n      return colorArray1[0] === \\\"T\\\" && colorArray2[0] === \\\"T\\\";\\n    }\\n    if (colorArray1[0] !== colorArray2[0]) {\\n      colorArray2 = this.convert(colorArray2, colorArray1[0]);\\n    }\\n    return colorArray1.slice(1).every((c, i) => c === colorArray2[i + 1]);\\n  }\\n}\\n\\n;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fscripting_api\u002Ffield.js\\n\\n\\n\\nclass Field extends PDFObject {\\n  constructor(data) {\\n    super(data);\\n    this.alignment = data.alignment || \\\"left\\\";\\n    this.borderStyle = data.borderStyle || \\\"\\\";\\n    this.buttonAlignX = data.buttonAlignX || 50;\\n    this.buttonAlignY = data.buttonAlignY || 50;\\n    this.buttonFitBounds = data.buttonFitBounds;\\n    this.buttonPosition = data.buttonPosition;\\n    this.buttonScaleHow = data.buttonScaleHow;\\n    this.ButtonScaleWhen = data.buttonScaleWhen;\\n    this.calcOrderIndex = data.calcOrderIndex;\\n    this.comb = data.comb;\\n    this.commitOnSelChange = data.commitOnSelChange;\\n    this.currentValueIndices = data.currentValueIndices;\\n    this.defaultStyle = data.defaultStyle;\\n    this.defaultValue = data.defaultValue;\\n    this.doNotScroll = data.doNotScroll;\\n    this.doNotSpellCheck = data.doNotSpellCheck;\\n    this.delay = data.delay;\\n    this.display = data.display;\\n    this.doc = data.doc.wrapped;\\n    this.editable = data.editable;\\n    this.exportValues = data.exportValues;\\n    this.fileSelect = data.fileSelect;\\n    this.hidden = data.hidden;\\n    this.highlight = data.highlight;\\n    this.lineWidth = data.lineWidth;\\n    this.multiline = data.multiline;\\n    this.multipleSelection = !!data.multipleSelection;\\n    this.name = data.name;\\n    this.password = data.password;\\n    this.print = data.print;\\n    this.radiosInUnison = data.radiosInUnison;\\n    this.readonly = data.readonly;\\n    this.rect = data.rect;\\n    this.required = data.required;\\n    this.richText = data.richText;\\n    this.richValue = data.richValue;\\n    this.style = data.style;\\n    this.submitName = data.submitName;\\n    this.textFont = data.textFont;\\n    this.textSize = data.textSize;\\n    this.type = data.type;\\n    this.userName = data.userName;\\n    this._actions = createActionsMap(data.actions);\\n    this._browseForFileToSubmit = data.browseForFileToSubmit || null;\\n    this._buttonCaption = null;\\n    this._buttonIcon = null;\\n    this._charLimit = data.charLimit;\\n    this._children = null;\\n    this._currentValueIndices = data.currentValueIndices || 0;\\n    this._document = data.doc;\\n    this._fieldPath = data.fieldPath;\\n    this._fillColor = data.fillColor || [\\\"T\\\"];\\n    this._isChoice = Array.isArray(data.items);\\n    this._items = data.items || [];\\n    this._hasValue = data.hasOwnProperty(\\\"value\\\");\\n    this._page = data.page || 0;\\n    this._strokeColor = data.strokeColor || [\\\"G\\\", 0];\\n    this._textColor = data.textColor || [\\\"G\\\", 0];\\n    this._value = null;\\n    this._kidIds = data.kidIds || null;\\n    this._fieldType = getFieldType(this._actions);\\n    this._siblings = data.siblings || null;\\n    this._rotation = data.rotation || 0;\\n    this._globalEval = data.globalEval;\\n    this._appObjects = data.appObjects;\\n    this.value = data.value || \\\"\\\";\\n  }\\n  get currentValueIndices() {\\n    if (!this._isChoice) {\\n      return 0;\\n    }\\n    return this._currentValueIndices;\\n  }\\n  set currentValueIndices(indices) {\\n    if (!this._isChoice) {\\n      return;\\n    }\\n    if (!Array.isArray(indices)) {\\n      indices = [indices];\\n    }\\n    if (!indices.every(i => typeof i === \\\"number\\\" && Number.isInteger(i) && i >= 0 && i \u003C this.numItems)) {\\n      return;\\n    }\\n    indices.sort();\\n    if (this.multipleSelection) {\\n      this._currentValueIndices = indices;\\n      this._value = [];\\n      indices.forEach(i => {\\n        this._value.push(this._items[i].displayValue);\\n      });\\n    } else if (indices.length > 0) {\\n      indices = indices.splice(1, indices.length - 1);\\n      this._currentValueIndices = indices[0];\\n      this._value = this._items[this._currentValueIndices];\\n    }\\n    this._send({\\n      id: this._id,\\n      indices\\n    });\\n  }\\n  get fillColor() {\\n    return this._fillColor;\\n  }\\n  set fillColor(color) {\\n    if (Color._isValidColor(color)) {\\n      this._fillColor = color;\\n    }\\n  }\\n  get bgColor() {\\n    return this.fillColor;\\n  }\\n  set bgColor(color) {\\n    this.fillColor = color;\\n  }\\n  get charLimit() {\\n    return this._charLimit;\\n  }\\n  set charLimit(limit) {\\n    if (typeof limit !== \\\"number\\\") {\\n      throw new Error(\\\"Invalid argument value\\\");\\n    }\\n    this._charLimit = Math.max(0, Math.floor(limit));\\n  }\\n  get numItems() {\\n    if (!this._isChoice) {\\n      throw new Error(\\\"Not a choice widget\\\");\\n    }\\n    return this._items.length;\\n  }\\n  set numItems(_) {\\n    throw new Error(\\\"field.numItems is read-only\\\");\\n  }\\n  get strokeColor() {\\n    return this._strokeColor;\\n  }\\n  set strokeColor(color) {\\n    if (Color._isValidColor(color)) {\\n      this._strokeColor = color;\\n    }\\n  }\\n  get borderColor() {\\n    return this.strokeColor;\\n  }\\n  set borderColor(color) {\\n    this.strokeColor = color;\\n  }\\n  get page() {\\n    return this._page;\\n  }\\n  set page(_) {\\n    throw new Error(\\\"field.page is read-only\\\");\\n  }\\n  get rotation() {\\n    return this._rotation;\\n  }\\n  set rotation(angle) {\\n    angle = Math.floor(angle);\\n    if (angle % 90 !== 0) {\\n      throw new Error(\\\"Invalid rotation: must be a multiple of 90\\\");\\n    }\\n    angle %= 360;\\n    if (angle \u003C 0) {\\n      angle += 360;\\n    }\\n    this._rotation = angle;\\n  }\\n  get textColor() {\\n    return this._textColor;\\n  }\\n  set textColor(color) {\\n    if (Color._isValidColor(color)) {\\n      this._textColor = color;\\n    }\\n  }\\n  get fgColor() {\\n    return this.textColor;\\n  }\\n  set fgColor(color) {\\n    this.textColor = color;\\n  }\\n  get value() {\\n    return this._value;\\n  }\\n  set value(value) {\\n    if (this._isChoice) {\\n      this._setChoiceValue(value);\\n      return;\\n    }\\n    if (value === \\\"\\\" || typeof value !== \\\"string\\\" || this._fieldType >= FieldType.date) {\\n      this._originalValue = undefined;\\n      this._value = value;\\n      return;\\n    }\\n    this._originalValue = value;\\n    const _value = value.trim().replace(\\\",\\\", \\\".\\\");\\n    this._value = !isNaN(_value) ? parseFloat(_value) : value;\\n  }\\n  _getValue() {\\n    return this._originalValue ?? this.value;\\n  }\\n  _setChoiceValue(value) {\\n    if (this.multipleSelection) {\\n      if (!Array.isArray(value)) {\\n        value = [value];\\n      }\\n      const values = new Set(value);\\n      if (Array.isArray(this._currentValueIndices)) {\\n        this._currentValueIndices.length = 0;\\n        this._value.length = 0;\\n      } else {\\n        this._currentValueIndices = [];\\n        this._value = [];\\n      }\\n      this._items.forEach((item, i) => {\\n        if (values.has(item.exportValue)) {\\n          this._currentValueIndices.push(i);\\n          this._value.push(item.exportValue);\\n        }\\n      });\\n    } else {\\n      if (Array.isArray(value)) {\\n        value = value[0];\\n      }\\n      const index = this._items.findIndex(({\\n        exportValue\\n      }) => value === exportValue);\\n      if (index !== -1) {\\n        this._currentValueIndices = index;\\n        this._value = this._items[index].exportValue;\\n      }\\n    }\\n  }\\n  get valueAsString() {\\n    return (this._value ?? \\\"\\\").toString();\\n  }\\n  set valueAsString(_) {}\\n  browseForFileToSubmit() {\\n    if (this._browseForFileToSubmit) {\\n      this._browseForFileToSubmit();\\n    }\\n  }\\n  buttonGetCaption(nFace = 0) {\\n    if (this._buttonCaption) {\\n      return this._buttonCaption[nFace];\\n    }\\n    return \\\"\\\";\\n  }\\n  buttonGetIcon(nFace = 0) {\\n    if (this._buttonIcon) {\\n      return this._buttonIcon[nFace];\\n    }\\n    return null;\\n  }\\n  buttonImportIcon(cPath = null, nPave = 0) {}\\n  buttonSetCaption(cCaption, nFace = 0) {\\n    if (!this._buttonCaption) {\\n      this._buttonCaption = [\\\"\\\", \\\"\\\", \\\"\\\"];\\n    }\\n    this._buttonCaption[nFace] = cCaption;\\n  }\\n  buttonSetIcon(oIcon, nFace = 0) {\\n    if (!this._buttonIcon) {\\n      this._buttonIcon = [null, null, null];\\n    }\\n    this._buttonIcon[nFace] = oIcon;\\n  }\\n  checkThisBox(nWidget, bCheckIt = true) {}\\n  clearItems() {\\n    if (!this._isChoice) {\\n      throw new Error(\\\"Not a choice widget\\\");\\n    }\\n    this._items = [];\\n    this._send({\\n      id: this._id,\\n      clear: null\\n    });\\n  }\\n  deleteItemAt(nIdx = null) {\\n    if (!this._isChoice) {\\n      throw new Error(\\\"Not a choice widget\\\");\\n    }\\n    if (!this.numItems) {\\n      return;\\n    }\\n    if (nIdx === null) {\\n      nIdx = Array.isArray(this._currentValueIndices) ? this._currentValueIndices[0] : this._currentValueIndices;\\n      nIdx ||= 0;\\n    }\\n    if (nIdx \u003C 0 || nIdx >= this.numItems) {\\n      nIdx = this.numItems - 1;\\n    }\\n    this._items.splice(nIdx, 1);\\n    if (Array.isArray(this._currentValueIndices)) {\\n      let index = this._currentValueIndices.findIndex(i => i >= nIdx);\\n      if (index !== -1) {\\n        if (this._currentValueIndices[index] === nIdx) {\\n          this._currentValueIndices.splice(index, 1);\\n        }\\n        for (const ii = this._currentValueIndices.length; index \u003C ii; index++) {\\n          --this._currentValueIndices[index];\\n        }\\n      }\\n    } else if (this._currentValueIndices === nIdx) {\\n      this._currentValueIndices = this.numItems > 0 ? 0 : -1;\\n    } else if (this._currentValueIndices > nIdx) {\\n      --this._currentValueIndices;\\n    }\\n    this._send({\\n      id: this._id,\\n      remove: nIdx\\n    });\\n  }\\n  getItemAt(nIdx = -1, bExportValue = false) {\\n    if (!this._isChoice) {\\n      throw new Error(\\\"Not a choice widget\\\");\\n    }\\n    if (nIdx \u003C 0 || nIdx >= this.numItems) {\\n      nIdx = this.numItems - 1;\\n    }\\n    const item = this._items[nIdx];\\n    return bExportValue ? item.exportValue : item.displayValue;\\n  }\\n  getArray() {\\n    if (this._kidIds) {\\n      const array = [];\\n      const fillArrayWithKids = kidIds => {\\n        for (const id of kidIds) {\\n          const obj = this._appObjects[id];\\n          if (!obj) {\\n            continue;\\n          }\\n          if (obj.obj._hasValue) {\\n            array.push(obj.wrapped);\\n          }\\n          if (obj.obj._kidIds) {\\n            fillArrayWithKids(obj.obj._kidIds);\\n          }\\n        }\\n      };\\n      fillArrayWithKids(this._kidIds);\\n      return array;\\n    }\\n    if (this._children === null) {\\n      this._children = this._document.obj._getTerminalChildren(this._fieldPath);\\n    }\\n    return this._children;\\n  }\\n  getLock() {\\n    return undefined;\\n  }\\n  isBoxChecked(nWidget) {\\n    return false;\\n  }\\n  isDefaultChecked(nWidget) {\\n    return false;\\n  }\\n  insertItemAt(cName, cExport = undefined, nIdx = 0) {\\n    if (!this._isChoice) {\\n      throw new Error(\\\"Not a choice widget\\\");\\n    }\\n    if (!cName) {\\n      return;\\n    }\\n    if (nIdx \u003C 0 || nIdx > this.numItems) {\\n      nIdx = this.numItems;\\n    }\\n    if (this._items.some(({\\n      displayValue\\n    }) => displayValue === cName)) {\\n      return;\\n    }\\n    if (cExport === undefined) {\\n      cExport = cName;\\n    }\\n    const data = {\\n      displayValue: cName,\\n      exportValue: cExport\\n    };\\n    this._items.splice(nIdx, 0, data);\\n    if (Array.isArray(this._currentValueIndices)) {\\n      let index = this._currentValueIndices.findIndex(i => i >= nIdx);\\n      if (index !== -1) {\\n        for (const ii = this._currentValueIndices.length; index \u003C ii; index++) {\\n          ++this._currentValueIndices[index];\\n        }\\n      }\\n    } else if (this._currentValueIndices >= nIdx) {\\n      ++this._currentValueIndices;\\n    }\\n    this._send({\\n      id: this._id,\\n      insert: {\\n        index: nIdx,\\n        ...data\\n      }\\n    });\\n  }\\n  setAction(cTrigger, cScript) {\\n    if (typeof cTrigger !== \\\"string\\\" || typeof cScript !== \\\"string\\\") {\\n      return;\\n    }\\n    if (!(cTrigger in this._actions)) {\\n      this._actions[cTrigger] = [];\\n    }\\n    this._actions[cTrigger].push(cScript);\\n  }\\n  setFocus() {\\n    this._send({\\n      id: this._id,\\n      focus: true\\n    });\\n  }\\n  setItems(oArray) {\\n    if (!this._isChoice) {\\n      throw new Error(\\\"Not a choice widget\\\");\\n    }\\n    this._items.length = 0;\\n    for (const element of oArray) {\\n      let displayValue, exportValue;\\n      if (Array.isArray(element)) {\\n        displayValue = element[0]?.toString() || \\\"\\\";\\n        exportValue = element[1]?.toString() || \\\"\\\";\\n      } else {\\n        displayValue = exportValue = element?.toString() || \\\"\\\";\\n      }\\n      this._items.push({\\n        displayValue,\\n        exportValue\\n      });\\n    }\\n    this._currentValueIndices = 0;\\n    this._send({\\n      id: this._id,\\n      items: this._items\\n    });\\n  }\\n  setLock() {}\\n  signatureGetModifications() {}\\n  signatureGetSeedValue() {}\\n  signatureInfo() {}\\n  signatureSetSeedValue() {}\\n  signatureSign() {}\\n  signatureValidate() {}\\n  _isButton() {\\n    return false;\\n  }\\n  _reset() {\\n    this.value = this.defaultValue;\\n  }\\n  _runActions(event) {\\n    const eventName = event.name;\\n    if (!this._actions.has(eventName)) {\\n      return false;\\n    }\\n    const actions = this._actions.get(eventName);\\n    try {\\n      for (const action of actions) {\\n        this._globalEval(action);\\n      }\\n    } catch (error) {\\n      event.rc = false;\\n      throw error;\\n    }\\n    return true;\\n  }\\n}\\nclass RadioButtonField extends Field {\\n  constructor(otherButtons, data) {\\n    super(data);\\n    this.exportValues = [this.exportValues];\\n    this._radioIds = [this._id];\\n    this._radioActions = [this._actions];\\n    for (const radioData of otherButtons) {\\n      this.exportValues.push(radioData.exportValues);\\n      this._radioIds.push(radioData.id);\\n      this._radioActions.push(createActionsMap(radioData.actions));\\n      if (this._value === radioData.exportValues) {\\n        this._id = radioData.id;\\n      }\\n    }\\n    this._hasBeenInitialized = true;\\n    this._value = data.value || \\\"\\\";\\n  }\\n  get value() {\\n    return this._value;\\n  }\\n  set value(value) {\\n    if (!this._hasBeenInitialized) {\\n      return;\\n    }\\n    if (value === null || value === undefined) {\\n      this._value = \\\"\\\";\\n    }\\n    const i = this.exportValues.indexOf(value);\\n    if (0 \u003C= i && i \u003C this._radioIds.length) {\\n      this._id = this._radioIds[i];\\n      this._value = value;\\n    } else if (value === \\\"Off\\\" && this._radioIds.length === 2) {\\n      const nextI = (1 + this._radioIds.indexOf(this._id)) % 2;\\n      this._id = this._radioIds[nextI];\\n      this._value = this.exportValues[nextI];\\n    }\\n  }\\n  checkThisBox(nWidget, bCheckIt = true) {\\n    if (nWidget \u003C 0 || nWidget >= this._radioIds.length || !bCheckIt) {\\n      return;\\n    }\\n    this._id = this._radioIds[nWidget];\\n    this._value = this.exportValues[nWidget];\\n    this._send({\\n      id: this._id,\\n      value: this._value\\n    });\\n  }\\n  isBoxChecked(nWidget) {\\n    return nWidget >= 0 && nWidget \u003C this._radioIds.length && this._id === this._radioIds[nWidget];\\n  }\\n  isDefaultChecked(nWidget) {\\n    return nWidget >= 0 && nWidget \u003C this.exportValues.length && this.defaultValue === this.exportValues[nWidget];\\n  }\\n  _getExportValue(state) {\\n    const i = this._radioIds.indexOf(this._id);\\n    return this.exportValues[i];\\n  }\\n  _runActions(event) {\\n    const i = this._radioIds.indexOf(this._id);\\n    this._actions = this._radioActions[i];\\n    return super._runActions(event);\\n  }\\n  _isButton() {\\n    return true;\\n  }\\n}\\nclass CheckboxField extends RadioButtonField {\\n  get value() {\\n    return this._value;\\n  }\\n  set value(value) {\\n    if (!value || value === \\\"Off\\\") {\\n      this._value = \\\"Off\\\";\\n    } else {\\n      super.value = value;\\n    }\\n  }\\n  _getExportValue(state) {\\n    return state ? super._getExportValue(state) : \\\"Off\\\";\\n  }\\n  isBoxChecked(nWidget) {\\n    if (this._value === \\\"Off\\\") {\\n      return false;\\n    }\\n    return super.isBoxChecked(nWidget);\\n  }\\n  isDefaultChecked(nWidget) {\\n    if (this.defaultValue === \\\"Off\\\") {\\n      return this._value === \\\"Off\\\";\\n    }\\n    return super.isDefaultChecked(nWidget);\\n  }\\n  checkThisBox(nWidget, bCheckIt = true) {\\n    if (nWidget \u003C 0 || nWidget >= this._radioIds.length) {\\n      return;\\n    }\\n    this._id = this._radioIds[nWidget];\\n    this._value = bCheckIt ? this.exportValues[nWidget] : \\\"Off\\\";\\n    this._send({\\n      id: this._id,\\n      value: this._value\\n    });\\n  }\\n}\\n\\n;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fscripting_api\u002Faform.js\\n\\nclass AForm {\\n  constructor(document, app, util, color) {\\n    this._document = document;\\n    this._app = app;\\n    this._util = util;\\n    this._color = color;\\n    this._dateFormats = [\\\"m\u002Fd\\\", \\\"m\u002Fd\u002Fyy\\\", \\\"mm\u002Fdd\u002Fyy\\\", \\\"mm\u002Fyy\\\", \\\"d-mmm\\\", \\\"d-mmm-yy\\\", \\\"dd-mmm-yy\\\", \\\"yy-mm-dd\\\", \\\"mmm-yy\\\", \\\"mmmm-yy\\\", \\\"mmm d, yyyy\\\", \\\"mmmm d, yyyy\\\", \\\"m\u002Fd\u002Fyy h:MM tt\\\", \\\"m\u002Fd\u002Fyy HH:MM\\\"];\\n    this._timeFormats = [\\\"HH:MM\\\", \\\"h:MM tt\\\", \\\"HH:MM:ss\\\", \\\"h:MM:ss tt\\\"];\\n    this._dateActionsCache = new Map();\\n    this._emailRegex = new RegExp(\\\"^[a-zA-Z0-9.!#$%&'*+\\\\\\\\\u002F=?^_`{|}~-]+\\\" + \\\"@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\\" + \\\"(?:\\\\\\\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$\\\");\\n  }\\n  _mkTargetName(event) {\\n    return event.target ? `[ ${event.target.name} ]` : \\\"\\\";\\n  }\\n  _tryToGuessDate(cFormat, cDate) {\\n    let actions = this._dateActionsCache.get(cFormat);\\n    if (!actions) {\\n      actions = [];\\n      this._dateActionsCache.set(cFormat, actions);\\n      cFormat.replaceAll(\u002F(d+)|(m+)|(y+)|(H+)|(M+)|(s+)\u002Fg, function (match, d, m, y, H, M, s) {\\n        if (d) {\\n          actions.push((n, date) => {\\n            if (n >= 1 && n \u003C= 31) {\\n              date.setDate(n);\\n              return true;\\n            }\\n            return false;\\n          });\\n        } else if (m) {\\n          actions.push((n, date) => {\\n            if (n >= 1 && n \u003C= 12) {\\n              date.setMonth(n - 1);\\n              return true;\\n            }\\n            return false;\\n          });\\n        } else if (y) {\\n          actions.push((n, date) => {\\n            if (n \u003C 50) {\\n              n += 2000;\\n            } else if (n \u003C 100) {\\n              n += 1900;\\n            }\\n            date.setYear(n);\\n            return true;\\n          });\\n        } else if (H) {\\n          actions.push((n, date) => {\\n            if (n >= 0 && n \u003C= 23) {\\n              date.setHours(n);\\n              return true;\\n            }\\n            return false;\\n          });\\n        } else if (M) {\\n          actions.push((n, date) => {\\n            if (n >= 0 && n \u003C= 59) {\\n              date.setMinutes(n);\\n              return true;\\n            }\\n            return false;\\n          });\\n        } else if (s) {\\n          actions.push((n, date) => {\\n            if (n >= 0 && n \u003C= 59) {\\n              date.setSeconds(n);\\n              return true;\\n            }\\n            return false;\\n          });\\n        }\\n        return \\\"\\\";\\n      });\\n    }\\n    const number = \u002F\\\\d+\u002Fg;\\n    let i = 0;\\n    let array;\\n    const date = new Date();\\n    while ((array = number.exec(cDate)) !== null) {\\n      if (i \u003C actions.length) {\\n        if (!actions[i++](parseInt(array[0]), date)) {\\n          return null;\\n        }\\n      } else {\\n        break;\\n      }\\n    }\\n    if (i === 0) {\\n      return null;\\n    }\\n    return date;\\n  }\\n  _parseDate(cFormat, cDate) {\\n    let date = null;\\n    try {\\n      date = this._util.scand(cFormat, cDate);\\n    } catch {}\\n    if (!date) {\\n      date = Date.parse(cDate);\\n      date = isNaN(date) ? this._tryToGuessDate(cFormat, cDate) : new Date(date);\\n    }\\n    return date;\\n  }\\n  AFMergeChange(event = globalThis.event) {\\n    if (event.willCommit) {\\n      return event.value.toString();\\n    }\\n    return this._app._eventDispatcher.mergeChange(event);\\n  }\\n  AFParseDateEx(cString, cOrder) {\\n    return this._parseDate(cOrder, cString);\\n  }\\n  AFExtractNums(str) {\\n    if (typeof str === \\\"number\\\") {\\n      return [str];\\n    }\\n    if (!str || typeof str !== \\\"string\\\") {\\n      return null;\\n    }\\n    const first = str.charAt(0);\\n    if (first === \\\".\\\" || first === \\\",\\\") {\\n      str = `0${str}`;\\n    }\\n    const numbers = str.match(\u002F(\\\\d+)\u002Fg);\\n    if (numbers.length === 0) {\\n      return null;\\n    }\\n    return numbers;\\n  }\\n  AFMakeNumber(str) {\\n    if (typeof str === \\\"number\\\") {\\n      return str;\\n    }\\n    if (typeof str !== \\\"string\\\") {\\n      return null;\\n    }\\n    str = str.trim().replace(\\\",\\\", \\\".\\\");\\n    const number = parseFloat(str);\\n    if (isNaN(number) || !isFinite(number)) {\\n      return null;\\n    }\\n    return number;\\n  }\\n  AFMakeArrayFromList(string) {\\n    if (typeof string === \\\"string\\\") {\\n      return string.split(\u002F, ?\u002Fg);\\n    }\\n    return string;\\n  }\\n  AFNumber_Format(nDec, sepStyle, negStyle, currStyle, strCurrency, bCurrencyPrepend) {\\n    const event = globalThis.event;\\n    let value = this.AFMakeNumber(event.value);\\n    if (value === null) {\\n      event.value = \\\"\\\";\\n      return;\\n    }\\n    const sign = Math.sign(value);\\n    const buf = [];\\n    let hasParen = false;\\n    if (sign === -1 && bCurrencyPrepend && negStyle === 0) {\\n      buf.push(\\\"-\\\");\\n    }\\n    if ((negStyle === 2 || negStyle === 3) && sign === -1) {\\n      buf.push(\\\"(\\\");\\n      hasParen = true;\\n    }\\n    if (bCurrencyPrepend) {\\n      buf.push(strCurrency);\\n    }\\n    sepStyle = Math.min(Math.max(0, Math.floor(sepStyle)), 4);\\n    buf.push(\\\"%,\\\", sepStyle, \\\".\\\", nDec.toString(), \\\"f\\\");\\n    if (!bCurrencyPrepend) {\\n      buf.push(strCurrency);\\n    }\\n    if (hasParen) {\\n      buf.push(\\\")\\\");\\n    }\\n    if (negStyle === 1 || negStyle === 3) {\\n      event.target.textColor = sign === 1 ? this._color.black : this._color.red;\\n    }\\n    if ((negStyle !== 0 || bCurrencyPrepend) && sign === -1) {\\n      value = -value;\\n    }\\n    const formatStr = buf.join(\\\"\\\");\\n    event.value = this._util.printf(formatStr, value);\\n  }\\n  AFNumber_Keystroke(nDec, sepStyle, negStyle, currStyle, strCurrency, bCurrencyPrepend) {\\n    const event = globalThis.event;\\n    let value = this.AFMergeChange(event);\\n    if (!value) {\\n      return;\\n    }\\n    value = value.trim();\\n    let pattern;\\n    if (sepStyle > 1) {\\n      pattern = event.willCommit ? \u002F^[+-]?(\\\\d+(,\\\\d*)?|,\\\\d+)$\u002F : \u002F^[+-]?\\\\d*,?\\\\d*$\u002F;\\n    } else {\\n      pattern = event.willCommit ? \u002F^[+-]?(\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)$\u002F : \u002F^[+-]?\\\\d*\\\\.?\\\\d*$\u002F;\\n    }\\n    if (!pattern.test(value)) {\\n      if (event.willCommit) {\\n        const err = `${GlobalConstants.IDS_INVALID_VALUE} ${this._mkTargetName(event)}`;\\n        this._app.alert(err);\\n      }\\n      event.rc = false;\\n    }\\n    if (event.willCommit && sepStyle > 1) {\\n      event.value = parseFloat(value.replace(\\\",\\\", \\\".\\\"));\\n    }\\n  }\\n  AFPercent_Format(nDec, sepStyle, percentPrepend = false) {\\n    if (typeof nDec !== \\\"number\\\") {\\n      return;\\n    }\\n    if (typeof sepStyle !== \\\"number\\\") {\\n      return;\\n    }\\n    if (nDec \u003C 0) {\\n      throw new Error(\\\"Invalid nDec value in AFPercent_Format\\\");\\n    }\\n    const event = globalThis.event;\\n    if (nDec > 512) {\\n      event.value = \\\"%\\\";\\n      return;\\n    }\\n    nDec = Math.floor(nDec);\\n    sepStyle = Math.min(Math.max(0, Math.floor(sepStyle)), 4);\\n    let value = this.AFMakeNumber(event.value);\\n    if (value === null) {\\n      event.value = \\\"%\\\";\\n      return;\\n    }\\n    const formatStr = `%,${sepStyle}.${nDec}f`;\\n    value = this._util.printf(formatStr, value * 100);\\n    event.value = percentPrepend ? `%${value}` : `${value}%`;\\n  }\\n  AFPercent_Keystroke(nDec, sepStyle) {\\n    this.AFNumber_Keystroke(nDec, sepStyle, 0, 0, \\\"\\\", true);\\n  }\\n  AFDate_FormatEx(cFormat) {\\n    const event = globalThis.event;\\n    const value = event.value;\\n    if (!value) {\\n      return;\\n    }\\n    const date = this._parseDate(cFormat, value);\\n    if (date !== null) {\\n      event.value = this._util.printd(cFormat, date);\\n    }\\n  }\\n  AFDate_Format(pdf) {\\n    if (pdf >= 0 && pdf \u003C this._dateFormats.length) {\\n      this.AFDate_FormatEx(this._dateFormats[pdf]);\\n    }\\n  }\\n  AFDate_KeystrokeEx(cFormat) {\\n    const event = globalThis.event;\\n    if (!event.willCommit) {\\n      return;\\n    }\\n    const value = this.AFMergeChange(event);\\n    if (!value) {\\n      return;\\n    }\\n    if (this._parseDate(cFormat, value) === null) {\\n      const invalid = GlobalConstants.IDS_INVALID_DATE;\\n      const invalid2 = GlobalConstants.IDS_INVALID_DATE2;\\n      const err = `${invalid} ${this._mkTargetName(event)}${invalid2}${cFormat}`;\\n      this._app.alert(err);\\n      event.rc = false;\\n    }\\n  }\\n  AFDate_Keystroke(pdf) {\\n    if (pdf >= 0 && pdf \u003C this._dateFormats.length) {\\n      this.AFDate_KeystrokeEx(this._dateFormats[pdf]);\\n    }\\n  }\\n  AFRange_Validate(bGreaterThan, nGreaterThan, bLessThan, nLessThan) {\\n    const event = globalThis.event;\\n    if (!event.value) {\\n      return;\\n    }\\n    const value = this.AFMakeNumber(event.value);\\n    if (value === null) {\\n      return;\\n    }\\n    bGreaterThan = !!bGreaterThan;\\n    bLessThan = !!bLessThan;\\n    if (bGreaterThan) {\\n      nGreaterThan = this.AFMakeNumber(nGreaterThan);\\n      if (nGreaterThan === null) {\\n        return;\\n      }\\n    }\\n    if (bLessThan) {\\n      nLessThan = this.AFMakeNumber(nLessThan);\\n      if (nLessThan === null) {\\n        return;\\n      }\\n    }\\n    let err = \\\"\\\";\\n    if (bGreaterThan && bLessThan) {\\n      if (value \u003C nGreaterThan || value > nLessThan) {\\n        err = this._util.printf(GlobalConstants.IDS_GT_AND_LT, nGreaterThan, nLessThan);\\n      }\\n    } else if (bGreaterThan) {\\n      if (value \u003C nGreaterThan) {\\n        err = this._util.printf(GlobalConstants.IDS_GREATER_THAN, nGreaterThan);\\n      }\\n    } else if (value > nLessThan) {\\n      err = this._util.printf(GlobalConstants.IDS_LESS_THAN, nLessThan);\\n    }\\n    if (err) {\\n      this._app.alert(err);\\n      event.rc = false;\\n    }\\n  }\\n  AFSimple(cFunction, nValue1, nValue2) {\\n    const value1 = this.AFMakeNumber(nValue1);\\n    if (value1 === null) {\\n      throw new Error(\\\"Invalid nValue1 in AFSimple\\\");\\n    }\\n    const value2 = this.AFMakeNumber(nValue2);\\n    if (value2 === null) {\\n      throw new Error(\\\"Invalid nValue2 in AFSimple\\\");\\n    }\\n    switch (cFunction) {\\n      case \\\"AVG\\\":\\n        return (value1 + value2) \u002F 2;\\n      case \\\"SUM\\\":\\n        return value1 + value2;\\n      case \\\"PRD\\\":\\n        return value1 * value2;\\n      case \\\"MIN\\\":\\n        return Math.min(value1, value2);\\n      case \\\"MAX\\\":\\n        return Math.max(value1, value2);\\n    }\\n    throw new Error(\\\"Invalid cFunction in AFSimple\\\");\\n  }\\n  AFSimple_Calculate(cFunction, cFields) {\\n    const actions = {\\n      AVG: args => args.reduce((acc, value) => acc + value, 0) \u002F args.length,\\n      SUM: args => args.reduce((acc, value) => acc + value, 0),\\n      PRD: args => args.reduce((acc, value) => acc * value, 1),\\n      MIN: args => args.reduce((acc, value) => Math.min(acc, value), Number.MAX_VALUE),\\n      MAX: args => args.reduce((acc, value) => Math.max(acc, value), Number.MIN_VALUE)\\n    };\\n    if (!(cFunction in actions)) {\\n      throw new TypeError(\\\"Invalid function in AFSimple_Calculate\\\");\\n    }\\n    const event = globalThis.event;\\n    const values = [];\\n    cFields = this.AFMakeArrayFromList(cFields);\\n    for (const cField of cFields) {\\n      const field = this._document.getField(cField);\\n      if (!field) {\\n        continue;\\n      }\\n      for (const child of field.getArray()) {\\n        const number = this.AFMakeNumber(child.value);\\n        if (number !== null) {\\n          values.push(number);\\n        }\\n      }\\n    }\\n    if (values.length === 0) {\\n      event.value = cFunction === \\\"PRD\\\" ? 1 : 0;\\n      return;\\n    }\\n    const res = actions[cFunction](values);\\n    event.value = Math.round(1e6 * res) \u002F 1e6;\\n  }\\n  AFSpecial_Format(psf) {\\n    const event = globalThis.event;\\n    if (!event.value) {\\n      return;\\n    }\\n    psf = this.AFMakeNumber(psf);\\n    let formatStr;\\n    switch (psf) {\\n      case 0:\\n        formatStr = \\\"99999\\\";\\n        break;\\n      case 1:\\n        formatStr = \\\"99999-9999\\\";\\n        break;\\n      case 2:\\n        formatStr = this._util.printx(\\\"9999999999\\\", event.value).length >= 10 ? \\\"(999) 999-9999\\\" : \\\"999-9999\\\";\\n        break;\\n      case 3:\\n        formatStr = \\\"999-99-9999\\\";\\n        break;\\n      default:\\n        throw new Error(\\\"Invalid psf in AFSpecial_Format\\\");\\n    }\\n    event.value = this._util.printx(formatStr, event.value);\\n  }\\n  AFSpecial_KeystrokeEx(cMask) {\\n    if (!cMask) {\\n      return;\\n    }\\n    const event = globalThis.event;\\n    const value = this.AFMergeChange(event);\\n    if (!value) {\\n      return;\\n    }\\n    const checkers = new Map([[\\\"9\\\", char => char >= \\\"0\\\" && char \u003C= \\\"9\\\"], [\\\"A\\\", char => \\\"a\\\" \u003C= char && char \u003C= \\\"z\\\" || \\\"A\\\" \u003C= char && char \u003C= \\\"Z\\\"], [\\\"O\\\", char => \\\"a\\\" \u003C= char && char \u003C= \\\"z\\\" || \\\"A\\\" \u003C= char && char \u003C= \\\"Z\\\" || \\\"0\\\" \u003C= char && char \u003C= \\\"9\\\"], [\\\"X\\\", char => true]]);\\n    function _checkValidity(_value, _cMask) {\\n      for (let i = 0, ii = _value.length; i \u003C ii; i++) {\\n        const mask = _cMask.charAt(i);\\n        const char = _value.charAt(i);\\n        const checker = checkers.get(mask);\\n        if (checker) {\\n          if (!checker(char)) {\\n            return false;\\n          }\\n        } else if (mask !== char) {\\n          return false;\\n        }\\n      }\\n      return true;\\n    }\\n    const err = `${GlobalConstants.IDS_INVALID_VALUE} = \\\"${cMask}\\\"`;\\n    if (value.length > cMask.length) {\\n      this._app.alert(err);\\n      event.rc = false;\\n      return;\\n    }\\n    if (event.willCommit) {\\n      if (value.length \u003C cMask.length) {\\n        this._app.alert(err);\\n        event.rc = false;\\n        return;\\n      }\\n      if (!_checkValidity(value, cMask)) {\\n        this._app.alert(err);\\n        event.rc = false;\\n        return;\\n      }\\n      event.value += cMask.substring(value.length);\\n      return;\\n    }\\n    if (value.length \u003C cMask.length) {\\n      cMask = cMask.substring(0, value.length);\\n    }\\n    if (!_checkValidity(value, cMask)) {\\n      this._app.alert(err);\\n      event.rc = false;\\n    }\\n  }\\n  AFSpecial_Keystroke(psf) {\\n    const event = globalThis.event;\\n    psf = this.AFMakeNumber(psf);\\n    let formatStr;\\n    switch (psf) {\\n      case 0:\\n        formatStr = \\\"99999\\\";\\n        break;\\n      case 1:\\n        formatStr = \\\"99999-9999\\\";\\n        break;\\n      case 2:\\n        const value = this.AFMergeChange(event);\\n        formatStr = value.length > 8 || value.startsWith(\\\"(\\\") ? \\\"(999) 999-9999\\\" : \\\"999-9999\\\";\\n        break;\\n      case 3:\\n        formatStr = \\\"999-99-9999\\\";\\n        break;\\n      default:\\n        throw new Error(\\\"Invalid psf in AFSpecial_Keystroke\\\");\\n    }\\n    this.AFSpecial_KeystrokeEx(formatStr);\\n  }\\n  AFTime_FormatEx(cFormat) {\\n    this.AFDate_FormatEx(cFormat);\\n  }\\n  AFTime_Format(pdf) {\\n    if (pdf >= 0 && pdf \u003C this._timeFormats.length) {\\n      this.AFDate_FormatEx(this._timeFormats[pdf]);\\n    }\\n  }\\n  AFTime_KeystrokeEx(cFormat) {\\n    this.AFDate_KeystrokeEx(cFormat);\\n  }\\n  AFTime_Keystroke(pdf) {\\n    if (pdf >= 0 && pdf \u003C this._timeFormats.length) {\\n      this.AFDate_KeystrokeEx(this._timeFormats[pdf]);\\n    }\\n  }\\n  eMailValidate(str) {\\n    return this._emailRegex.test(str);\\n  }\\n  AFExactMatch(rePatterns, str) {\\n    if (rePatterns instanceof RegExp) {\\n      return str.match(rePatterns)?.[0] === str || 0;\\n    }\\n    return rePatterns.findIndex(re => str.match(re)?.[0] === str) + 1;\\n  }\\n}\\n\\n;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fscripting_api\u002Fapp_utils.js\\nconst VIEWER_TYPE = \\\"PDF.js\\\";\\nconst VIEWER_VARIATION = \\\"Full\\\";\\nconst VIEWER_VERSION = 21.00720099;\\nconst FORMS_VERSION = 21.00720099;\\nconst USERACTIVATION_CALLBACKID = 0;\\nconst USERACTIVATION_MAXTIME_VALIDITY = 5000;\\nfunction serializeError(error) {\\n  const value = `${error.toString()}\\\\n${error.stack}`;\\n  return {\\n    command: \\\"error\\\",\\n    value\\n  };\\n}\\n\\n;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fscripting_api\u002Fevent.js\\n\\nclass Event {\\n  constructor(data) {\\n    this.change = data.change || \\\"\\\";\\n    this.changeEx = data.changeEx || null;\\n    this.commitKey = data.commitKey || 0;\\n    this.fieldFull = data.fieldFull || false;\\n    this.keyDown = data.keyDown || false;\\n    this.modifier = data.modifier || false;\\n    this.name = data.name;\\n    this.rc = true;\\n    this.richChange = data.richChange || [];\\n    this.richChangeEx = data.richChangeEx || [];\\n    this.richValue = data.richValue || [];\\n    this.selEnd = data.selEnd ?? -1;\\n    this.selStart = data.selStart ?? -1;\\n    this.shift = data.shift || false;\\n    this.source = data.source || null;\\n    this.target = data.target || null;\\n    this.targetName = \\\"\\\";\\n    this.type = \\\"Field\\\";\\n    this.value = data.value || \\\"\\\";\\n    this.willCommit = data.willCommit || false;\\n  }\\n}\\nclass EventDispatcher {\\n  constructor(document, calculationOrder, objects, externalCall) {\\n    this._document = document;\\n    this._calculationOrder = calculationOrder;\\n    this._objects = objects;\\n    this._externalCall = externalCall;\\n    this._document.obj._eventDispatcher = this;\\n    this._isCalculating = false;\\n  }\\n  mergeChange(event) {\\n    let value = event.value;\\n    if (Array.isArray(value)) {\\n      return value;\\n    }\\n    if (typeof value !== \\\"string\\\") {\\n      value = value.toString();\\n    }\\n    const prefix = event.selStart >= 0 ? value.substring(0, event.selStart) : \\\"\\\";\\n    const postfix = event.selEnd >= 0 && event.selEnd \u003C= value.length ? value.substring(event.selEnd) : \\\"\\\";\\n    return `${prefix}${event.change}${postfix}`;\\n  }\\n  userActivation() {\\n    this._document.obj._userActivation = true;\\n    this._externalCall(\\\"setTimeout\\\", [USERACTIVATION_CALLBACKID, USERACTIVATION_MAXTIME_VALIDITY]);\\n  }\\n  dispatch(baseEvent) {\\n    const id = baseEvent.id;\\n    if (!(id in this._objects)) {\\n      let event;\\n      if (id === \\\"doc\\\" || id === \\\"page\\\") {\\n        event = globalThis.event = new Event(baseEvent);\\n        event.source = event.target = this._document.wrapped;\\n        event.name = baseEvent.name;\\n      }\\n      if (id === \\\"doc\\\") {\\n        const eventName = event.name;\\n        if (eventName === \\\"Open\\\") {\\n          this.userActivation();\\n          this._document.obj._initActions();\\n          this.formatAll();\\n        }\\n        if (![\\\"DidPrint\\\", \\\"DidSave\\\", \\\"WillPrint\\\", \\\"WillSave\\\"].includes(eventName)) {\\n          this.userActivation();\\n        }\\n        this._document.obj._dispatchDocEvent(event.name);\\n      } else if (id === \\\"page\\\") {\\n        this.userActivation();\\n        this._document.obj._dispatchPageEvent(event.name, baseEvent.actions, baseEvent.pageNumber);\\n      } else if (id === \\\"app\\\" && baseEvent.name === \\\"ResetForm\\\") {\\n        this.userActivation();\\n        for (const fieldId of baseEvent.ids) {\\n          const obj = this._objects[fieldId];\\n          obj?.obj._reset();\\n        }\\n      }\\n      return;\\n    }\\n    const name = baseEvent.name;\\n    const source = this._objects[id];\\n    const event = globalThis.event = new Event(baseEvent);\\n    let savedChange;\\n    this.userActivation();\\n    if (source.obj._isButton()) {\\n      source.obj._id = id;\\n      event.value = source.obj._getExportValue(event.value);\\n      if (name === \\\"Action\\\") {\\n        source.obj._value = event.value;\\n      }\\n    }\\n    switch (name) {\\n      case \\\"Keystroke\\\":\\n        savedChange = {\\n          value: event.value,\\n          changeEx: event.changeEx,\\n          change: event.change,\\n          selStart: event.selStart,\\n          selEnd: event.selEnd\\n        };\\n        break;\\n      case \\\"Blur\\\":\\n      case \\\"Focus\\\":\\n        Object.defineProperty(event, \\\"value\\\", {\\n          configurable: false,\\n          writable: false,\\n          enumerable: true,\\n          value: event.value\\n        });\\n        break;\\n      case \\\"Validate\\\":\\n        this.runValidation(source, event);\\n        return;\\n      case \\\"Action\\\":\\n        this.runActions(source, source, event, name);\\n        this.runCalculate(source, event);\\n        return;\\n    }\\n    this.runActions(source, source, event, name);\\n    if (name !== \\\"Keystroke\\\") {\\n      return;\\n    }\\n    if (event.rc) {\\n      if (event.willCommit) {\\n        this.runValidation(source, event);\\n      } else {\\n        if (source.obj._isChoice) {\\n          source.obj.value = savedChange.changeEx;\\n          source.obj._send({\\n            id: source.obj._id,\\n            siblings: source.obj._siblings,\\n            value: source.obj.value\\n          });\\n          return;\\n        }\\n        const value = source.obj.value = this.mergeChange(event);\\n        let selStart, selEnd;\\n        if (event.selStart !== savedChange.selStart || event.selEnd !== savedChange.selEnd) {\\n          selStart = event.selStart;\\n          selEnd = event.selEnd;\\n        } else {\\n          selEnd = selStart = savedChange.selStart + event.change.length;\\n        }\\n        source.obj._send({\\n          id: source.obj._id,\\n          siblings: source.obj._siblings,\\n          value,\\n          selRange: [selStart, selEnd]\\n        });\\n      }\\n    } else if (!event.willCommit) {\\n      source.obj._send({\\n        id: source.obj._id,\\n        siblings: source.obj._siblings,\\n        value: savedChange.value,\\n        selRange: [savedChange.selStart, savedChange.selEnd]\\n      });\\n    } else {\\n      source.obj._send({\\n        id: source.obj._id,\\n        siblings: source.obj._siblings,\\n        value: \\\"\\\",\\n        formattedValue: null,\\n        selRange: [0, 0]\\n      });\\n    }\\n  }\\n  formatAll() {\\n    const event = globalThis.event = new Event({});\\n    for (const source of Object.values(this._objects)) {\\n      event.value = source.obj._getValue();\\n      this.runActions(source, source, event, \\\"Format\\\");\\n    }\\n  }\\n  runValidation(source, event) {\\n    const didValidateRun = this.runActions(source, source, event, \\\"Validate\\\");\\n    if (event.rc) {\\n      source.obj.value = event.value;\\n      this.runCalculate(source, event);\\n      const savedValue = event.value = source.obj._getValue();\\n      let formattedValue = null;\\n      if (this.runActions(source, source, event, \\\"Format\\\")) {\\n        formattedValue = event.value?.toString?.();\\n      }\\n      source.obj._send({\\n        id: source.obj._id,\\n        siblings: source.obj._siblings,\\n        value: savedValue,\\n        formattedValue\\n      });\\n      event.value = savedValue;\\n    } else if (didValidateRun) {\\n      source.obj._send({\\n        id: source.obj._id,\\n        siblings: source.obj._siblings,\\n        value: \\\"\\\",\\n        formattedValue: null,\\n        selRange: [0, 0],\\n        focus: true\\n      });\\n    }\\n  }\\n  runActions(source, target, event, eventName) {\\n    event.source = source.wrapped;\\n    event.target = target.wrapped;\\n    event.name = eventName;\\n    event.targetName = target.obj.name;\\n    event.rc = true;\\n    return target.obj._runActions(event);\\n  }\\n  calculateNow() {\\n    if (!this._calculationOrder || this._isCalculating || !this._document.obj.calculate) {\\n      return;\\n    }\\n    this._isCalculating = true;\\n    const first = this._calculationOrder[0];\\n    const source = this._objects[first];\\n    globalThis.event = new Event({});\\n    try {\\n      this.runCalculate(source, globalThis.event);\\n    } catch (error) {\\n      this._isCalculating = false;\\n      throw error;\\n    }\\n    this._isCalculating = false;\\n  }\\n  runCalculate(source, event) {\\n    if (!this._calculationOrder || !this._document.obj.calculate) {\\n      return;\\n    }\\n    for (const targetId of this._calculationOrder) {\\n      if (!(targetId in this._objects)) {\\n        continue;\\n      }\\n      if (!this._document.obj.calculate) {\\n        break;\\n      }\\n      event.value = null;\\n      const target = this._objects[targetId];\\n      let savedValue = target.obj._getValue();\\n      this.runActions(source, target, event, \\\"Calculate\\\");\\n      if (!event.rc) {\\n        continue;\\n      }\\n      if (event.value !== null) {\\n        target.obj.value = event.value;\\n      } else {\\n        event.value = target.obj._getValue();\\n      }\\n      this.runActions(target, target, event, \\\"Validate\\\");\\n      if (!event.rc) {\\n        if (target.obj._getValue() !== savedValue) {\\n          target.wrapped.value = savedValue;\\n        }\\n        continue;\\n      }\\n      if (event.value === null) {\\n        event.value = target.obj._getValue();\\n      }\\n      savedValue = target.obj._getValue();\\n      let formattedValue = null;\\n      if (this.runActions(target, target, event, \\\"Format\\\")) {\\n        formattedValue = event.value?.toString?.();\\n      }\\n      target.obj._send({\\n        id: target.obj._id,\\n        siblings: target.obj._siblings,\\n        value: savedValue,\\n        formattedValue\\n      });\\n    }\\n  }\\n}\\n\\n;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fscripting_api\u002Ffullscreen.js\\n\\n\\nclass FullScreen extends PDFObject {\\n  constructor(data) {\\n    super(data);\\n    this._backgroundColor = [];\\n    this._clickAdvances = true;\\n    this._cursor = Cursor.hidden;\\n    this._defaultTransition = \\\"\\\";\\n    this._escapeExits = true;\\n    this._isFullScreen = true;\\n    this._loop = false;\\n    this._timeDelay = 3600;\\n    this._usePageTiming = false;\\n    this._useTimer = false;\\n  }\\n  get backgroundColor() {\\n    return this._backgroundColor;\\n  }\\n  set backgroundColor(_) {}\\n  get clickAdvances() {\\n    return this._clickAdvances;\\n  }\\n  set clickAdvances(_) {}\\n  get cursor() {\\n    return this._cursor;\\n  }\\n  set cursor(_) {}\\n  get defaultTransition() {\\n    return this._defaultTransition;\\n  }\\n  set defaultTransition(_) {}\\n  get escapeExits() {\\n    return this._escapeExits;\\n  }\\n  set escapeExits(_) {}\\n  get isFullScreen() {\\n    return this._isFullScreen;\\n  }\\n  set isFullScreen(_) {}\\n  get loop() {\\n    return this._loop;\\n  }\\n  set loop(_) {}\\n  get timeDelay() {\\n    return this._timeDelay;\\n  }\\n  set timeDelay(_) {}\\n  get transitions() {\\n    return [\\\"Replace\\\", \\\"WipeRight\\\", \\\"WipeLeft\\\", \\\"WipeDown\\\", \\\"WipeUp\\\", \\\"SplitHorizontalIn\\\", \\\"SplitHorizontalOut\\\", \\\"SplitVerticalIn\\\", \\\"SplitVerticalOut\\\", \\\"BlindsHorizontal\\\", \\\"BlindsVertical\\\", \\\"BoxIn\\\", \\\"BoxOut\\\", \\\"GlitterRight\\\", \\\"GlitterDown\\\", \\\"GlitterRightDown\\\", \\\"Dissolve\\\", \\\"Random\\\"];\\n  }\\n  set transitions(_) {\\n    throw new Error(\\\"fullscreen.transitions is read-only\\\");\\n  }\\n  get usePageTiming() {\\n    return this._usePageTiming;\\n  }\\n  set usePageTiming(_) {}\\n  get useTimer() {\\n    return this._useTimer;\\n  }\\n  set useTimer(_) {}\\n}\\n\\n;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fscripting_api\u002Fthermometer.js\\n\\nclass Thermometer extends PDFObject {\\n  constructor(data) {\\n    super(data);\\n    this._cancelled = false;\\n    this._duration = 100;\\n    this._text = \\\"\\\";\\n    this._value = 0;\\n  }\\n  get cancelled() {\\n    return this._cancelled;\\n  }\\n  set cancelled(_) {\\n    throw new Error(\\\"thermometer.cancelled is read-only\\\");\\n  }\\n  get duration() {\\n    return this._duration;\\n  }\\n  set duration(val) {\\n    this._duration = val;\\n  }\\n  get text() {\\n    return this._text;\\n  }\\n  set text(val) {\\n    this._text = val;\\n  }\\n  get value() {\\n    return this._value;\\n  }\\n  set value(val) {\\n    this._value = val;\\n  }\\n  begin() {}\\n  end() {}\\n}\\n\\n;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fscripting_api\u002Fapp.js\\n\\n\\n\\n\\n\\n\\nclass App extends PDFObject {\\n  constructor(data) {\\n    super(data);\\n    this._constants = null;\\n    this._focusRect = true;\\n    this._fs = null;\\n    this._language = App._getLanguage(data.language);\\n    this._openInPlace = false;\\n    this._platform = App._getPlatform(data.platform);\\n    this._runtimeHighlight = false;\\n    this._runtimeHighlightColor = [\\\"T\\\"];\\n    this._thermometer = null;\\n    this._toolbar = false;\\n    this._document = data._document;\\n    this._proxyHandler = data.proxyHandler;\\n    this._objects = Object.create(null);\\n    this._eventDispatcher = new EventDispatcher(this._document, data.calculationOrder, this._objects, data.externalCall);\\n    this._timeoutIds = new WeakMap();\\n    if (typeof FinalizationRegistry !== \\\"undefined\\\") {\\n      this._timeoutIdsRegistry = new FinalizationRegistry(this._cleanTimeout.bind(this));\\n    } else {\\n      this._timeoutIdsRegistry = null;\\n    }\\n    this._timeoutCallbackIds = new Map();\\n    this._timeoutCallbackId = USERACTIVATION_CALLBACKID + 1;\\n    this._globalEval = data.globalEval;\\n    this._externalCall = data.externalCall;\\n  }\\n  _dispatchEvent(pdfEvent) {\\n    this._eventDispatcher.dispatch(pdfEvent);\\n  }\\n  _registerTimeoutCallback(cExpr) {\\n    const id = this._timeoutCallbackId++;\\n    this._timeoutCallbackIds.set(id, cExpr);\\n    return id;\\n  }\\n  _unregisterTimeoutCallback(id) {\\n    this._timeoutCallbackIds.delete(id);\\n  }\\n  _evalCallback({\\n    callbackId,\\n    interval\\n  }) {\\n    if (callbackId === USERACTIVATION_CALLBACKID) {\\n      this._document.obj._userActivation = false;\\n      return;\\n    }\\n    const expr = this._timeoutCallbackIds.get(callbackId);\\n    if (!interval) {\\n      this._unregisterTimeoutCallback(callbackId);\\n    }\\n    if (expr) {\\n      this._globalEval(expr);\\n    }\\n  }\\n  _registerTimeout(callbackId, interval) {\\n    const timeout = Object.create(null);\\n    const id = {\\n      callbackId,\\n      interval\\n    };\\n    this._timeoutIds.set(timeout, id);\\n    this._timeoutIdsRegistry?.register(timeout, id);\\n    return timeout;\\n  }\\n  _unregisterTimeout(timeout) {\\n    this._timeoutIdsRegistry?.unregister(timeout);\\n    const data = this._timeoutIds.get(timeout);\\n    if (!data) {\\n      return;\\n    }\\n    this._timeoutIds.delete(timeout);\\n    this._cleanTimeout(data);\\n  }\\n  _cleanTimeout({\\n    callbackId,\\n    interval\\n  }) {\\n    this._unregisterTimeoutCallback(callbackId);\\n    if (interval) {\\n      this._externalCall(\\\"clearInterval\\\", [callbackId]);\\n    } else {\\n      this._externalCall(\\\"clearTimeout\\\", [callbackId]);\\n    }\\n  }\\n  static _getPlatform(platform) {\\n    if (typeof platform === \\\"string\\\") {\\n      platform = platform.toLowerCase();\\n      if (platform.includes(\\\"win\\\")) {\\n        return \\\"WIN\\\";\\n      } else if (platform.includes(\\\"mac\\\")) {\\n        return \\\"MAC\\\";\\n      }\\n    }\\n    return \\\"UNIX\\\";\\n  }\\n  static _getLanguage(language) {\\n    const [main, sub] = language.toLowerCase().split(\u002F[-_]\u002F);\\n    switch (main) {\\n      case \\\"zh\\\":\\n        if (sub === \\\"cn\\\" || sub === \\\"sg\\\") {\\n          return \\\"CHS\\\";\\n        }\\n        return \\\"CHT\\\";\\n      case \\\"da\\\":\\n        return \\\"DAN\\\";\\n      case \\\"de\\\":\\n        return \\\"DEU\\\";\\n      case \\\"es\\\":\\n        return \\\"ESP\\\";\\n      case \\\"fr\\\":\\n        return \\\"FRA\\\";\\n      case \\\"it\\\":\\n        return \\\"ITA\\\";\\n      case \\\"ko\\\":\\n        return \\\"KOR\\\";\\n      case \\\"ja\\\":\\n        return \\\"JPN\\\";\\n      case \\\"nl\\\":\\n        return \\\"NLD\\\";\\n      case \\\"no\\\":\\n        return \\\"NOR\\\";\\n      case \\\"pt\\\":\\n        if (sub === \\\"br\\\") {\\n          return \\\"PTB\\\";\\n        }\\n        return \\\"ENU\\\";\\n      case \\\"fi\\\":\\n        return \\\"SUO\\\";\\n      case \\\"SV\\\":\\n        return \\\"SVE\\\";\\n      default:\\n        return \\\"ENU\\\";\\n    }\\n  }\\n  get activeDocs() {\\n    return [this._document.wrapped];\\n  }\\n  set activeDocs(_) {\\n    throw new Error(\\\"app.activeDocs is read-only\\\");\\n  }\\n  get calculate() {\\n    return this._document.obj.calculate;\\n  }\\n  set calculate(calculate) {\\n    this._document.obj.calculate = calculate;\\n  }\\n  get constants() {\\n    if (!this._constants) {\\n      this._constants = Object.freeze({\\n        align: Object.freeze({\\n          left: 0,\\n          center: 1,\\n          right: 2,\\n          top: 3,\\n          bottom: 4\\n        })\\n      });\\n    }\\n    return this._constants;\\n  }\\n  set constants(_) {\\n    throw new Error(\\\"app.constants is read-only\\\");\\n  }\\n  get focusRect() {\\n    return this._focusRect;\\n  }\\n  set focusRect(val) {\\n    this._focusRect = val;\\n  }\\n  get formsVersion() {\\n    return FORMS_VERSION;\\n  }\\n  set formsVersion(_) {\\n    throw new Error(\\\"app.formsVersion is read-only\\\");\\n  }\\n  get fromPDFConverters() {\\n    return [];\\n  }\\n  set fromPDFConverters(_) {\\n    throw new Error(\\\"app.fromPDFConverters is read-only\\\");\\n  }\\n  get fs() {\\n    if (this._fs === null) {\\n      this._fs = new Proxy(new FullScreen({\\n        send: this._send\\n      }), this._proxyHandler);\\n    }\\n    return this._fs;\\n  }\\n  set fs(_) {\\n    throw new Error(\\\"app.fs is read-only\\\");\\n  }\\n  get language() {\\n    return this._language;\\n  }\\n  set language(_) {\\n    throw new Error(\\\"app.language is read-only\\\");\\n  }\\n  get media() {\\n    return undefined;\\n  }\\n  set media(_) {\\n    throw new Error(\\\"app.media is read-only\\\");\\n  }\\n  get monitors() {\\n    return [];\\n  }\\n  set monitors(_) {\\n    throw new Error(\\\"app.monitors is read-only\\\");\\n  }\\n  get numPlugins() {\\n    return 0;\\n  }\\n  set numPlugins(_) {\\n    throw new Error(\\\"app.numPlugins is read-only\\\");\\n  }\\n  get openInPlace() {\\n    return this._openInPlace;\\n  }\\n  set openInPlace(val) {\\n    this._openInPlace = val;\\n  }\\n  get platform() {\\n    return this._platform;\\n  }\\n  set platform(_) {\\n    throw new Error(\\\"app.platform is read-only\\\");\\n  }\\n  get plugins() {\\n    return [];\\n  }\\n  set plugins(_) {\\n    throw new Error(\\\"app.plugins is read-only\\\");\\n  }\\n  get printColorProfiles() {\\n    return [];\\n  }\\n  set printColorProfiles(_) {\\n    throw new Error(\\\"app.printColorProfiles is read-only\\\");\\n  }\\n  get printerNames() {\\n    return [];\\n  }\\n  set printerNames(_) {\\n    throw new Error(\\\"app.printerNames is read-only\\\");\\n  }\\n  get runtimeHighlight() {\\n    return this._runtimeHighlight;\\n  }\\n  set runtimeHighlight(val) {\\n    this._runtimeHighlight = val;\\n  }\\n  get runtimeHighlightColor() {\\n    return this._runtimeHighlightColor;\\n  }\\n  set runtimeHighlightColor(val) {\\n    if (Color._isValidColor(val)) {\\n      this._runtimeHighlightColor = val;\\n    }\\n  }\\n  get thermometer() {\\n    if (this._thermometer === null) {\\n      this._thermometer = new Proxy(new Thermometer({\\n        send: this._send\\n      }), this._proxyHandler);\\n    }\\n    return this._thermometer;\\n  }\\n  set thermometer(_) {\\n    throw new Error(\\\"app.thermometer is read-only\\\");\\n  }\\n  get toolbar() {\\n    return this._toolbar;\\n  }\\n  set toolbar(val) {\\n    this._toolbar = val;\\n  }\\n  get toolbarHorizontal() {\\n    return this.toolbar;\\n  }\\n  set toolbarHorizontal(value) {\\n    this.toolbar = value;\\n  }\\n  get toolbarVertical() {\\n    return this.toolbar;\\n  }\\n  set toolbarVertical(value) {\\n    this.toolbar = value;\\n  }\\n  get viewerType() {\\n    return VIEWER_TYPE;\\n  }\\n  set viewerType(_) {\\n    throw new Error(\\\"app.viewerType is read-only\\\");\\n  }\\n  get viewerVariation() {\\n    return VIEWER_VARIATION;\\n  }\\n  set viewerVariation(_) {\\n    throw new Error(\\\"app.viewerVariation is read-only\\\");\\n  }\\n  get viewerVersion() {\\n    return VIEWER_VERSION;\\n  }\\n  set viewerVersion(_) {\\n    throw new Error(\\\"app.viewerVersion is read-only\\\");\\n  }\\n  addMenuItem() {}\\n  addSubMenu() {}\\n  addToolButton() {}\\n  alert(cMsg, nIcon = 0, nType = 0, cTitle = \\\"PDF.js\\\", oDoc = null, oCheckbox = null) {\\n    if (!this._document.obj._userActivation) {\\n      return 0;\\n    }\\n    this._document.obj._userActivation = false;\\n    if (cMsg && typeof cMsg === \\\"object\\\") {\\n      nType = cMsg.nType;\\n      cMsg = cMsg.cMsg;\\n    }\\n    cMsg = (cMsg || \\\"\\\").toString();\\n    nType = typeof nType !== \\\"number\\\" || isNaN(nType) || nType \u003C 0 || nType > 3 ? 0 : nType;\\n    if (nType >= 2) {\\n      return this._externalCall(\\\"confirm\\\", [cMsg]) ? 4 : 3;\\n    }\\n    this._externalCall(\\\"alert\\\", [cMsg]);\\n    return 1;\\n  }\\n  beep() {}\\n  beginPriv() {}\\n  browseForDoc() {}\\n  clearInterval(oInterval) {\\n    this._unregisterTimeout(oInterval);\\n  }\\n  clearTimeOut(oTime) {\\n    this._unregisterTimeout(oTime);\\n  }\\n  endPriv() {}\\n  execDialog() {}\\n  execMenuItem(item) {\\n    if (!this._document.obj._userActivation) {\\n      return;\\n    }\\n    this._document.obj._userActivation = false;\\n    switch (item) {\\n      case \\\"SaveAs\\\":\\n        if (this._document.obj._disableSaving) {\\n          return;\\n        }\\n        this._send({\\n          command: item\\n        });\\n        break;\\n      case \\\"FirstPage\\\":\\n      case \\\"LastPage\\\":\\n      case \\\"NextPage\\\":\\n      case \\\"PrevPage\\\":\\n      case \\\"ZoomViewIn\\\":\\n      case \\\"ZoomViewOut\\\":\\n        this._send({\\n          command: item\\n        });\\n        break;\\n      case \\\"FitPage\\\":\\n        this._send({\\n          command: \\\"zoom\\\",\\n          value: \\\"page-fit\\\"\\n        });\\n        break;\\n      case \\\"Print\\\":\\n        if (this._document.obj._disablePrinting) {\\n          return;\\n        }\\n        this._send({\\n          command: \\\"print\\\"\\n        });\\n        break;\\n    }\\n  }\\n  getNthPlugInName() {}\\n  getPath() {}\\n  goBack() {}\\n  goForward() {}\\n  hideMenuItem() {}\\n  hideToolbarButton() {}\\n  launchURL() {}\\n  listMenuItems() {}\\n  listToolbarButtons() {}\\n  loadPolicyFile() {}\\n  mailGetAddrs() {}\\n  mailMsg() {}\\n  newDoc() {}\\n  newCollection() {}\\n  newFDF() {}\\n  openDoc() {}\\n  openFDF() {}\\n  popUpMenu() {}\\n  popUpMenuEx() {}\\n  removeToolButton() {}\\n  response(cQuestion, cTitle = \\\"\\\", cDefault = \\\"\\\", bPassword = \\\"\\\", cLabel = \\\"\\\") {\\n    if (cQuestion && typeof cQuestion === \\\"object\\\") {\\n      cDefault = cQuestion.cDefault;\\n      cQuestion = cQuestion.cQuestion;\\n    }\\n    cQuestion = (cQuestion || \\\"\\\").toString();\\n    cDefault = (cDefault || \\\"\\\").toString();\\n    return this._externalCall(\\\"prompt\\\", [cQuestion, cDefault || \\\"\\\"]);\\n  }\\n  setInterval(cExpr, nMilliseconds = 0) {\\n    if (cExpr && typeof cExpr === \\\"object\\\") {\\n      nMilliseconds = cExpr.nMilliseconds || 0;\\n      cExpr = cExpr.cExpr;\\n    }\\n    if (typeof cExpr !== \\\"string\\\") {\\n      throw new TypeError(\\\"First argument of app.setInterval must be a string\\\");\\n    }\\n    if (typeof nMilliseconds !== \\\"number\\\") {\\n      throw new TypeError(\\\"Second argument of app.setInterval must be a number\\\");\\n    }\\n    const callbackId = this._registerTimeoutCallback(cExpr);\\n    this._externalCall(\\\"setInterval\\\", [callbackId, nMilliseconds]);\\n    return this._registerTimeout(callbackId, true);\\n  }\\n  setTimeOut(cExpr, nMilliseconds = 0) {\\n    if (cExpr && typeof cExpr === \\\"object\\\") {\\n      nMilliseconds = cExpr.nMilliseconds || 0;\\n      cExpr = cExpr.cExpr;\\n    }\\n    if (typeof cExpr !== \\\"string\\\") {\\n      throw new TypeError(\\\"First argument of app.setTimeOut must be a string\\\");\\n    }\\n    if (typeof nMilliseconds !== \\\"number\\\") {\\n      throw new TypeError(\\\"Second argument of app.setTimeOut must be a number\\\");\\n    }\\n    const callbackId = this._registerTimeoutCallback(cExpr);\\n    this._externalCall(\\\"setTimeout\\\", [callbackId, nMilliseconds]);\\n    return this._registerTimeout(callbackId, false);\\n  }\\n  trustedFunction() {}\\n  trustPropagatorFunction() {}\\n}\\n\\n;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fscripting_api\u002Fconsole.js\\n\\nclass Console extends PDFObject {\\n  clear() {\\n    this._send({\\n      id: \\\"clear\\\"\\n    });\\n  }\\n  hide() {}\\n  println(msg) {\\n    if (typeof msg === \\\"string\\\") {\\n      this._send({\\n        command: \\\"println\\\",\\n        value: \\\"PDF.js Console:: \\\" + msg\\n      });\\n    }\\n  }\\n  show() {}\\n}\\n\\n;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fscripting_api\u002Fprint_params.js\\nclass PrintParams {\\n  constructor(data) {\\n    this.binaryOk = true;\\n    this.bitmapDPI = 150;\\n    this.booklet = {\\n      binding: 0,\\n      duplexMode: 0,\\n      subsetFrom: 0,\\n      subsetTo: -1\\n    };\\n    this.colorOverride = 0;\\n    this.colorProfile = \\\"\\\";\\n    this.constants = Object.freeze({\\n      bookletBindings: Object.freeze({\\n        Left: 0,\\n        Right: 1,\\n        LeftTall: 2,\\n        RightTall: 3\\n      }),\\n      bookletDuplexMode: Object.freeze({\\n        BothSides: 0,\\n        FrontSideOnly: 1,\\n        BasicSideOnly: 2\\n      }),\\n      colorOverrides: Object.freeze({\\n        auto: 0,\\n        gray: 1,\\n        mono: 2\\n      }),\\n      fontPolicies: Object.freeze({\\n        everyPage: 0,\\n        jobStart: 1,\\n        pageRange: 2\\n      }),\\n      handling: Object.freeze({\\n        none: 0,\\n        fit: 1,\\n        shrink: 2,\\n        tileAll: 3,\\n        tileLarge: 4,\\n        nUp: 5,\\n        booklet: 6\\n      }),\\n      interactionLevel: Object.freeze({\\n        automatic: 0,\\n        full: 1,\\n        silent: 2\\n      }),\\n      nUpPageOrders: Object.freeze({\\n        Horizontal: 0,\\n        HorizontalReversed: 1,\\n        Vertical: 2\\n      }),\\n      printContents: Object.freeze({\\n        doc: 0,\\n        docAndComments: 1,\\n        formFieldsOnly: 2\\n      }),\\n      flagValues: Object.freeze({\\n        applyOverPrint: 1,\\n        applySoftProofSettings: 1 \u003C\u003C 1,\\n        applyWorkingColorSpaces: 1 \u003C\u003C 2,\\n        emitHalftones: 1 \u003C\u003C 3,\\n        emitPostScriptXObjects: 1 \u003C\u003C 4,\\n        emitFormsAsPSForms: 1 \u003C\u003C 5,\\n        maxJP2KRes: 1 \u003C\u003C 6,\\n        setPageSize: 1 \u003C\u003C 7,\\n        suppressBG: 1 \u003C\u003C 8,\\n        suppressCenter: 1 \u003C\u003C 9,\\n        suppressCJKFontSubst: 1 \u003C\u003C 10,\\n        suppressCropClip: 1 \u003C\u003C 1,\\n        suppressRotate: 1 \u003C\u003C 12,\\n        suppressTransfer: 1 \u003C\u003C 13,\\n        suppressUCR: 1 \u003C\u003C 14,\\n        useTrapAnnots: 1 \u003C\u003C 15,\\n        usePrintersMarks: 1 \u003C\u003C 16\\n      }),\\n      rasterFlagValues: Object.freeze({\\n        textToOutline: 1,\\n        strokesToOutline: 1 \u003C\u003C 1,\\n        allowComplexClip: 1 \u003C\u003C 2,\\n        preserveOverprint: 1 \u003C\u003C 3\\n      }),\\n      subsets: Object.freeze({\\n        all: 0,\\n        even: 1,\\n        odd: 2\\n      }),\\n      tileMarks: Object.freeze({\\n        none: 0,\\n        west: 1,\\n        east: 2\\n      }),\\n      usages: Object.freeze({\\n        auto: 0,\\n        use: 1,\\n        noUse: 2\\n      })\\n    });\\n    this.downloadFarEastFonts = false;\\n    this.fileName = \\\"\\\";\\n    this.firstPage = 0;\\n    this.flags = 0;\\n    this.fontPolicy = 0;\\n    this.gradientDPI = 150;\\n    this.interactive = 1;\\n    this.lastPage = data.lastPage;\\n    this.npUpAutoRotate = false;\\n    this.npUpNumPagesH = 2;\\n    this.npUpNumPagesV = 2;\\n    this.npUpPageBorder = false;\\n    this.npUpPageOrder = 0;\\n    this.pageHandling = 0;\\n    this.pageSubset = 0;\\n    this.printAsImage = false;\\n    this.printContent = 0;\\n    this.printerName = \\\"\\\";\\n    this.psLevel = 0;\\n    this.rasterFlags = 0;\\n    this.reversePages = false;\\n    this.tileLabel = false;\\n    this.tileMark = 0;\\n    this.tileOverlap = 0;\\n    this.tileScale = 1.0;\\n    this.transparencyLevel = 75;\\n    this.usePrinterCRD = 0;\\n    this.useT1Conversion = 0;\\n  }\\n}\\n\\n;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fscripting_api\u002Fdoc.js\\n\\n\\n\\n\\n\\nconst DOC_EXTERNAL = false;\\nclass InfoProxyHandler {\\n  static get(obj, prop) {\\n    return obj[prop.toLowerCase()];\\n  }\\n  static set(obj, prop, value) {\\n    throw new Error(`doc.info.${prop} is read-only`);\\n  }\\n}\\nclass Doc extends PDFObject {\\n  constructor(data) {\\n    super(data);\\n    this._expandos = globalThis;\\n    this._baseURL = data.baseURL || \\\"\\\";\\n    this._calculate = true;\\n    this._delay = false;\\n    this._dirty = false;\\n    this._disclosed = false;\\n    this._media = undefined;\\n    this._metadata = data.metadata || \\\"\\\";\\n    this._noautocomplete = undefined;\\n    this._nocache = undefined;\\n    this._spellDictionaryOrder = [];\\n    this._spellLanguageOrder = [];\\n    this._printParams = null;\\n    this._fields = new Map();\\n    this._fieldNames = [];\\n    this._event = null;\\n    this._author = data.Author || \\\"\\\";\\n    this._creator = data.Creator || \\\"\\\";\\n    this._creationDate = this._getDate(data.CreationDate) || null;\\n    this._docID = data.docID || [\\\"\\\", \\\"\\\"];\\n    this._documentFileName = data.filename || \\\"\\\";\\n    this._filesize = data.filesize || 0;\\n    this._keywords = data.Keywords || \\\"\\\";\\n    this._layout = data.layout || \\\"\\\";\\n    this._modDate = this._getDate(data.ModDate) || null;\\n    this._numFields = 0;\\n    this._numPages = data.numPages || 1;\\n    this._pageNum = data.pageNum || 0;\\n    this._producer = data.Producer || \\\"\\\";\\n    this._securityHandler = data.EncryptFilterName || null;\\n    this._subject = data.Subject || \\\"\\\";\\n    this._title = data.Title || \\\"\\\";\\n    this._URL = data.URL || \\\"\\\";\\n    this._info = new Proxy({\\n      title: this._title,\\n      author: this._author,\\n      authors: data.authors || [this._author],\\n      subject: this._subject,\\n      keywords: this._keywords,\\n      creator: this._creator,\\n      producer: this._producer,\\n      creationdate: this._creationDate,\\n      moddate: this._modDate,\\n      trapped: data.Trapped || \\\"Unknown\\\"\\n    }, InfoProxyHandler);\\n    this._zoomType = ZoomType.none;\\n    this._zoom = data.zoom || 100;\\n    this._actions = createActionsMap(data.actions);\\n    this._globalEval = data.globalEval;\\n    this._pageActions = new Map();\\n    this._userActivation = false;\\n    this._disablePrinting = false;\\n    this._disableSaving = false;\\n  }\\n  _initActions() {\\n    const dontRun = new Set([\\\"WillClose\\\", \\\"WillSave\\\", \\\"DidSave\\\", \\\"WillPrint\\\", \\\"DidPrint\\\", \\\"OpenAction\\\"]);\\n    this._disableSaving = true;\\n    for (const actionName of this._actions.keys()) {\\n      if (!dontRun.has(actionName)) {\\n        this._runActions(actionName);\\n      }\\n    }\\n    this._runActions(\\\"OpenAction\\\");\\n    this._disableSaving = false;\\n  }\\n  _dispatchDocEvent(name) {\\n    switch (name) {\\n      case \\\"Open\\\":\\n        this._disableSaving = true;\\n        this._runActions(\\\"OpenAction\\\");\\n        this._disableSaving = false;\\n        break;\\n      case \\\"WillPrint\\\":\\n        this._disablePrinting = true;\\n        try {\\n          this._runActions(name);\\n        } catch (error) {\\n          this._send(serializeError(error));\\n        }\\n        this._send({\\n          command: \\\"WillPrintFinished\\\"\\n        });\\n        this._disablePrinting = false;\\n        break;\\n      case \\\"WillSave\\\":\\n        this._disableSaving = true;\\n        this._runActions(name);\\n        this._disableSaving = false;\\n        break;\\n      default:\\n        this._runActions(name);\\n    }\\n  }\\n  _dispatchPageEvent(name, actions, pageNumber) {\\n    if (name === \\\"PageOpen\\\") {\\n      if (!this._pageActions.has(pageNumber)) {\\n        this._pageActions.set(pageNumber, createActionsMap(actions));\\n      }\\n      this._pageNum = pageNumber - 1;\\n    }\\n    actions = this._pageActions.get(pageNumber)?.get(name);\\n    if (actions) {\\n      for (const action of actions) {\\n        this._globalEval(action);\\n      }\\n    }\\n  }\\n  _runActions(name) {\\n    const actions = this._actions.get(name);\\n    if (actions) {\\n      for (const action of actions) {\\n        this._globalEval(action);\\n      }\\n    }\\n  }\\n  _addField(name, field) {\\n    this._fields.set(name, field);\\n    this._fieldNames.push(name);\\n    this._numFields++;\\n  }\\n  _getDate(date) {\\n    if (!date || date.length \u003C 15 || !date.startsWith(\\\"D:\\\")) {\\n      return date;\\n    }\\n    date = date.substring(2);\\n    const year = date.substring(0, 4);\\n    const month = date.substring(4, 6);\\n    const day = date.substring(6, 8);\\n    const hour = date.substring(8, 10);\\n    const minute = date.substring(10, 12);\\n    const o = date.charAt(12);\\n    let second, offsetPos;\\n    if (o === \\\"Z\\\" || o === \\\"+\\\" || o === \\\"-\\\") {\\n      second = \\\"00\\\";\\n      offsetPos = 12;\\n    } else {\\n      second = date.substring(12, 14);\\n      offsetPos = 14;\\n    }\\n    const offset = date.substring(offsetPos).replaceAll(\\\"'\\\", \\\"\\\");\\n    return new Date(`${year}-${month}-${day}T${hour}:${minute}:${second}${offset}`);\\n  }\\n  get author() {\\n    return this._author;\\n  }\\n  set author(_) {\\n    throw new Error(\\\"doc.author is read-only\\\");\\n  }\\n  get baseURL() {\\n    return this._baseURL;\\n  }\\n  set baseURL(baseURL) {\\n    this._baseURL = baseURL;\\n  }\\n  get bookmarkRoot() {\\n    return undefined;\\n  }\\n  set bookmarkRoot(_) {\\n    throw new Error(\\\"doc.bookmarkRoot is read-only\\\");\\n  }\\n  get calculate() {\\n    return this._calculate;\\n  }\\n  set calculate(calculate) {\\n    this._calculate = calculate;\\n  }\\n  get creator() {\\n    return this._creator;\\n  }\\n  set creator(_) {\\n    throw new Error(\\\"doc.creator is read-only\\\");\\n  }\\n  get dataObjects() {\\n    return [];\\n  }\\n  set dataObjects(_) {\\n    throw new Error(\\\"doc.dataObjects is read-only\\\");\\n  }\\n  get delay() {\\n    return this._delay;\\n  }\\n  set delay(delay) {\\n    this._delay = delay;\\n  }\\n  get dirty() {\\n    return this._dirty;\\n  }\\n  set dirty(dirty) {\\n    this._dirty = dirty;\\n  }\\n  get disclosed() {\\n    return this._disclosed;\\n  }\\n  set disclosed(disclosed) {\\n    this._disclosed = disclosed;\\n  }\\n  get docID() {\\n    return this._docID;\\n  }\\n  set docID(_) {\\n    throw new Error(\\\"doc.docID is read-only\\\");\\n  }\\n  get documentFileName() {\\n    return this._documentFileName;\\n  }\\n  set documentFileName(_) {\\n    throw new Error(\\\"doc.documentFileName is read-only\\\");\\n  }\\n  get dynamicXFAForm() {\\n    return false;\\n  }\\n  set dynamicXFAForm(_) {\\n    throw new Error(\\\"doc.dynamicXFAForm is read-only\\\");\\n  }\\n  get external() {\\n    return DOC_EXTERNAL;\\n  }\\n  set external(_) {\\n    throw new Error(\\\"doc.external is read-only\\\");\\n  }\\n  get filesize() {\\n    return this._filesize;\\n  }\\n  set filesize(_) {\\n    throw new Error(\\\"doc.filesize is read-only\\\");\\n  }\\n  get hidden() {\\n    return false;\\n  }\\n  set hidden(_) {\\n    throw new Error(\\\"doc.hidden is read-only\\\");\\n  }\\n  get hostContainer() {\\n    return undefined;\\n  }\\n  set hostContainer(_) {\\n    throw new Error(\\\"doc.hostContainer is read-only\\\");\\n  }\\n  get icons() {\\n    return undefined;\\n  }\\n  set icons(_) {\\n    throw new Error(\\\"doc.icons is read-only\\\");\\n  }\\n  get info() {\\n    return this._info;\\n  }\\n  set info(_) {\\n    throw new Error(\\\"doc.info is read-only\\\");\\n  }\\n  get innerAppWindowRect() {\\n    return [0, 0, 0, 0];\\n  }\\n  set innerAppWindowRect(_) {\\n    throw new Error(\\\"doc.innerAppWindowRect is read-only\\\");\\n  }\\n  get innerDocWindowRect() {\\n    return [0, 0, 0, 0];\\n  }\\n  set innerDocWindowRect(_) {\\n    throw new Error(\\\"doc.innerDocWindowRect is read-only\\\");\\n  }\\n  get isModal() {\\n    return false;\\n  }\\n  set isModal(_) {\\n    throw new Error(\\\"doc.isModal is read-only\\\");\\n  }\\n  get keywords() {\\n    return this._keywords;\\n  }\\n  set keywords(_) {\\n    throw new Error(\\\"doc.keywords is read-only\\\");\\n  }\\n  get layout() {\\n    return this._layout;\\n  }\\n  set layout(value) {\\n    if (!this._userActivation) {\\n      return;\\n    }\\n    this._userActivation = false;\\n    if (typeof value !== \\\"string\\\") {\\n      return;\\n    }\\n    if (value !== \\\"SinglePage\\\" && value !== \\\"OneColumn\\\" && value !== \\\"TwoColumnLeft\\\" && value !== \\\"TwoPageLeft\\\" && value !== \\\"TwoColumnRight\\\" && value !== \\\"TwoPageRight\\\") {\\n      value = \\\"SinglePage\\\";\\n    }\\n    this._send({\\n      command: \\\"layout\\\",\\n      value\\n    });\\n    this._layout = value;\\n  }\\n  get media() {\\n    return this._media;\\n  }\\n  set media(media) {\\n    this._media = media;\\n  }\\n  get metadata() {\\n    return this._metadata;\\n  }\\n  set metadata(metadata) {\\n    this._metadata = metadata;\\n  }\\n  get modDate() {\\n    return this._modDate;\\n  }\\n  set modDate(_) {\\n    throw new Error(\\\"doc.modDate is read-only\\\");\\n  }\\n  get mouseX() {\\n    return 0;\\n  }\\n  set mouseX(_) {\\n    throw new Error(\\\"doc.mouseX is read-only\\\");\\n  }\\n  get mouseY() {\\n    return 0;\\n  }\\n  set mouseY(_) {\\n    throw new Error(\\\"doc.mouseY is read-only\\\");\\n  }\\n  get noautocomplete() {\\n    return this._noautocomplete;\\n  }\\n  set noautocomplete(noautocomplete) {\\n    this._noautocomplete = noautocomplete;\\n  }\\n  get nocache() {\\n    return this._nocache;\\n  }\\n  set nocache(nocache) {\\n    this._nocache = nocache;\\n  }\\n  get numFields() {\\n    return this._numFields;\\n  }\\n  set numFields(_) {\\n    throw new Error(\\\"doc.numFields is read-only\\\");\\n  }\\n  get numPages() {\\n    return this._numPages;\\n  }\\n  set numPages(_) {\\n    throw new Error(\\\"doc.numPages is read-only\\\");\\n  }\\n  get numTemplates() {\\n    return 0;\\n  }\\n  set numTemplates(_) {\\n    throw new Error(\\\"doc.numTemplates is read-only\\\");\\n  }\\n  get outerAppWindowRect() {\\n    return [0, 0, 0, 0];\\n  }\\n  set outerAppWindowRect(_) {\\n    throw new Error(\\\"doc.outerAppWindowRect is read-only\\\");\\n  }\\n  get outerDocWindowRect() {\\n    return [0, 0, 0, 0];\\n  }\\n  set outerDocWindowRect(_) {\\n    throw new Error(\\\"doc.outerDocWindowRect is read-only\\\");\\n  }\\n  get pageNum() {\\n    return this._pageNum;\\n  }\\n  set pageNum(value) {\\n    if (!this._userActivation) {\\n      return;\\n    }\\n    this._userActivation = false;\\n    if (typeof value !== \\\"number\\\" || value \u003C 0 || value >= this._numPages) {\\n      return;\\n    }\\n    this._send({\\n      command: \\\"page-num\\\",\\n      value\\n    });\\n    this._pageNum = value;\\n  }\\n  get pageWindowRect() {\\n    return [0, 0, 0, 0];\\n  }\\n  set pageWindowRect(_) {\\n    throw new Error(\\\"doc.pageWindowRect is read-only\\\");\\n  }\\n  get path() {\\n    return \\\"\\\";\\n  }\\n  set path(_) {\\n    throw new Error(\\\"doc.path is read-only\\\");\\n  }\\n  get permStatusReady() {\\n    return true;\\n  }\\n  set permStatusReady(_) {\\n    throw new Error(\\\"doc.permStatusReady is read-only\\\");\\n  }\\n  get producer() {\\n    return this._producer;\\n  }\\n  set producer(_) {\\n    throw new Error(\\\"doc.producer is read-only\\\");\\n  }\\n  get requiresFullSave() {\\n    return false;\\n  }\\n  set requiresFullSave(_) {\\n    throw new Error(\\\"doc.requiresFullSave is read-only\\\");\\n  }\\n  get securityHandler() {\\n    return this._securityHandler;\\n  }\\n  set securityHandler(_) {\\n    throw new Error(\\\"doc.securityHandler is read-only\\\");\\n  }\\n  get selectedAnnots() {\\n    return [];\\n  }\\n  set selectedAnnots(_) {\\n    throw new Error(\\\"doc.selectedAnnots is read-only\\\");\\n  }\\n  get sounds() {\\n    return [];\\n  }\\n  set sounds(_) {\\n    throw new Error(\\\"doc.sounds is read-only\\\");\\n  }\\n  get spellDictionaryOrder() {\\n    return this._spellDictionaryOrder;\\n  }\\n  set spellDictionaryOrder(spellDictionaryOrder) {\\n    this._spellDictionaryOrder = spellDictionaryOrder;\\n  }\\n  get spellLanguageOrder() {\\n    return this._spellLanguageOrder;\\n  }\\n  set spellLanguageOrder(spellLanguageOrder) {\\n    this._spellLanguageOrder = spellLanguageOrder;\\n  }\\n  get subject() {\\n    return this._subject;\\n  }\\n  set subject(_) {\\n    throw new Error(\\\"doc.subject is read-only\\\");\\n  }\\n  get templates() {\\n    return [];\\n  }\\n  set templates(_) {\\n    throw new Error(\\\"doc.templates is read-only\\\");\\n  }\\n  get title() {\\n    return this._title;\\n  }\\n  set title(_) {\\n    throw new Error(\\\"doc.title is read-only\\\");\\n  }\\n  get URL() {\\n    return this._URL;\\n  }\\n  set URL(_) {\\n    throw new Error(\\\"doc.URL is read-only\\\");\\n  }\\n  get viewState() {\\n    return undefined;\\n  }\\n  set viewState(_) {\\n    throw new Error(\\\"doc.viewState is read-only\\\");\\n  }\\n  get xfa() {\\n    return this._xfa;\\n  }\\n  set xfa(_) {\\n    throw new Error(\\\"doc.xfa is read-only\\\");\\n  }\\n  get XFAForeground() {\\n    return false;\\n  }\\n  set XFAForeground(_) {\\n    throw new Error(\\\"doc.XFAForeground is read-only\\\");\\n  }\\n  get zoomType() {\\n    return this._zoomType;\\n  }\\n  set zoomType(type) {\\n    if (!this._userActivation) {\\n      return;\\n    }\\n    this._userActivation = false;\\n    if (typeof type !== \\\"string\\\") {\\n      return;\\n    }\\n    switch (type) {\\n      case ZoomType.none:\\n        this._send({\\n          command: \\\"zoom\\\",\\n          value: 1\\n        });\\n        break;\\n      case ZoomType.fitP:\\n        this._send({\\n          command: \\\"zoom\\\",\\n          value: \\\"page-fit\\\"\\n        });\\n        break;\\n      case ZoomType.fitW:\\n        this._send({\\n          command: \\\"zoom\\\",\\n          value: \\\"page-width\\\"\\n        });\\n        break;\\n      case ZoomType.fitH:\\n        this._send({\\n          command: \\\"zoom\\\",\\n          value: \\\"page-height\\\"\\n        });\\n        break;\\n      case ZoomType.fitV:\\n        this._send({\\n          command: \\\"zoom\\\",\\n          value: \\\"auto\\\"\\n        });\\n        break;\\n      case ZoomType.pref:\\n      case ZoomType.refW:\\n        break;\\n      default:\\n        return;\\n    }\\n    this._zoomType = type;\\n  }\\n  get zoom() {\\n    return this._zoom;\\n  }\\n  set zoom(value) {\\n    if (!this._userActivation) {\\n      return;\\n    }\\n    this._userActivation = false;\\n    if (typeof value !== \\\"number\\\" || value \u003C 8.33 || value > 6400) {\\n      return;\\n    }\\n    this._send({\\n      command: \\\"zoom\\\",\\n      value: value \u002F 100\\n    });\\n  }\\n  addAnnot() {}\\n  addField() {}\\n  addIcon() {}\\n  addLink() {}\\n  addRecipientListCryptFilter() {}\\n  addRequirement() {}\\n  addScript() {}\\n  addThumbnails() {}\\n  addWatermarkFromFile() {}\\n  addWatermarkFromText() {}\\n  addWeblinks() {}\\n  bringToFront() {}\\n  calculateNow() {\\n    this._eventDispatcher.calculateNow();\\n  }\\n  closeDoc() {}\\n  colorConvertPage() {}\\n  createDataObject() {}\\n  createTemplate() {}\\n  deletePages() {}\\n  deleteSound() {}\\n  embedDocAsDataObject() {}\\n  embedOutputIntent() {}\\n  encryptForRecipients() {}\\n  encryptUsingPolicy() {}\\n  exportAsFDF() {}\\n  exportAsFDFStr() {}\\n  exportAsText() {}\\n  exportAsXFDF() {}\\n  exportAsXFDFStr() {}\\n  exportDataObject() {}\\n  exportXFAData() {}\\n  extractPages() {}\\n  flattenPages() {}\\n  getAnnot() {}\\n  getAnnots() {}\\n  getAnnot3D() {}\\n  getAnnots3D() {}\\n  getColorConvertAction() {}\\n  getDataObject() {}\\n  getDataObjectContents() {}\\n  _getField(cName) {\\n    if (cName && typeof cName === \\\"object\\\") {\\n      cName = cName.cName;\\n    }\\n    if (typeof cName !== \\\"string\\\") {\\n      throw new TypeError(\\\"Invalid field name: must be a string\\\");\\n    }\\n    const searchedField = this._fields.get(cName);\\n    if (searchedField) {\\n      return searchedField;\\n    }\\n    const parts = cName.split(\\\"#\\\");\\n    let childIndex = NaN;\\n    if (parts.length === 2) {\\n      childIndex = Math.floor(parseFloat(parts[1]));\\n      cName = parts[0];\\n    }\\n    for (const [name, field] of this._fields.entries()) {\\n      if (name.endsWith(cName)) {\\n        if (!isNaN(childIndex)) {\\n          const children = this._getChildren(name);\\n          if (childIndex \u003C 0 || childIndex >= children.length) {\\n            childIndex = 0;\\n          }\\n          if (childIndex \u003C children.length) {\\n            this._fields.set(cName, children[childIndex]);\\n            return children[childIndex];\\n          }\\n        }\\n        this._fields.set(cName, field);\\n        return field;\\n      }\\n    }\\n    return null;\\n  }\\n  getField(cName) {\\n    const field = this._getField(cName);\\n    if (!field) {\\n      return null;\\n    }\\n    return field.wrapped;\\n  }\\n  _getChildren(fieldName) {\\n    const len = fieldName.length;\\n    const children = [];\\n    const pattern = \u002F^\\\\.[^.]+$\u002F;\\n    for (const [name, field] of this._fields.entries()) {\\n      if (name.startsWith(fieldName)) {\\n        const finalPart = name.slice(len);\\n        if (pattern.test(finalPart)) {\\n          children.push(field);\\n        }\\n      }\\n    }\\n    return children;\\n  }\\n  _getTerminalChildren(fieldName) {\\n    const children = [];\\n    const len = fieldName.length;\\n    for (const [name, field] of this._fields.entries()) {\\n      if (name.startsWith(fieldName)) {\\n        const finalPart = name.slice(len);\\n        if (field.obj._hasValue && (finalPart === \\\"\\\" || finalPart.startsWith(\\\".\\\"))) {\\n          children.push(field.wrapped);\\n        }\\n      }\\n    }\\n    return children;\\n  }\\n  getIcon() {}\\n  getLegalWarnings() {}\\n  getLinks() {}\\n  getNthFieldName(nIndex) {\\n    if (nIndex && typeof nIndex === \\\"object\\\") {\\n      nIndex = nIndex.nIndex;\\n    }\\n    if (typeof nIndex !== \\\"number\\\") {\\n      throw new TypeError(\\\"Invalid field index: must be a number\\\");\\n    }\\n    if (0 \u003C= nIndex && nIndex \u003C this.numFields) {\\n      return this._fieldNames[Math.trunc(nIndex)];\\n    }\\n    return null;\\n  }\\n  getNthTemplate() {\\n    return null;\\n  }\\n  getOCGs() {}\\n  getOCGOrder() {}\\n  getPageBox() {}\\n  getPageLabel() {}\\n  getPageNthWord() {}\\n  getPageNthWordQuads() {}\\n  getPageNumWords() {}\\n  getPageRotation() {}\\n  getPageTransition() {}\\n  getPrintParams() {\\n    return this._printParams ||= new PrintParams({\\n      lastPage: this._numPages - 1\\n    });\\n  }\\n  getSound() {}\\n  getTemplate() {}\\n  getURL() {}\\n  gotoNamedDest() {}\\n  importAnFDF() {}\\n  importAnXFDF() {}\\n  importDataObject() {}\\n  importIcon() {}\\n  importSound() {}\\n  importTextData() {}\\n  importXFAData() {}\\n  insertPages() {}\\n  mailDoc() {}\\n  mailForm() {}\\n  movePage() {}\\n  newPage() {}\\n  openDataObject() {}\\n  print(bUI = true, nStart = 0, nEnd = -1, bSilent = false, bShrinkToFit = false, bPrintAsImage = false, bReverse = false, bAnnotations = true, printParams = null) {\\n    if (this._disablePrinting || !this._userActivation) {\\n      return;\\n    }\\n    this._userActivation = false;\\n    if (bUI && typeof bUI === \\\"object\\\") {\\n      nStart = bUI.nStart;\\n      nEnd = bUI.nEnd;\\n      bSilent = bUI.bSilent;\\n      bShrinkToFit = bUI.bShrinkToFit;\\n      bPrintAsImage = bUI.bPrintAsImage;\\n      bReverse = bUI.bReverse;\\n      bAnnotations = bUI.bAnnotations;\\n      printParams = bUI.printParams;\\n      bUI = bUI.bUI;\\n    }\\n    if (printParams) {\\n      nStart = printParams.firstPage;\\n      nEnd = printParams.lastPage;\\n    }\\n    nStart = typeof nStart === \\\"number\\\" ? Math.max(0, Math.trunc(nStart)) : 0;\\n    nEnd = typeof nEnd === \\\"number\\\" ? Math.max(0, Math.trunc(nEnd)) : -1;\\n    this._send({\\n      command: \\\"print\\\",\\n      start: nStart,\\n      end: nEnd\\n    });\\n  }\\n  removeDataObject() {}\\n  removeField() {}\\n  removeIcon() {}\\n  removeLinks() {}\\n  removeRequirement() {}\\n  removeScript() {}\\n  removeTemplate() {}\\n  removeThumbnails() {}\\n  removeWeblinks() {}\\n  replacePages() {}\\n  resetForm(aFields = null) {\\n    if (aFields && typeof aFields === \\\"object\\\" && !Array.isArray(aFields)) {\\n      aFields = aFields.aFields;\\n    }\\n    if (aFields && !Array.isArray(aFields)) {\\n      aFields = [aFields];\\n    }\\n    let mustCalculate = false;\\n    let fieldsToReset;\\n    if (aFields) {\\n      fieldsToReset = [];\\n      for (const fieldName of aFields) {\\n        if (!fieldName) {\\n          continue;\\n        }\\n        if (typeof fieldName !== \\\"string\\\") {\\n          fieldsToReset = null;\\n          break;\\n        }\\n        const field = this._getField(fieldName);\\n        if (!field) {\\n          continue;\\n        }\\n        fieldsToReset.push(field);\\n        mustCalculate = true;\\n      }\\n    }\\n    if (!fieldsToReset) {\\n      fieldsToReset = this._fields.values();\\n      mustCalculate = this._fields.size !== 0;\\n    }\\n    for (const field of fieldsToReset) {\\n      field.obj.value = field.obj.defaultValue;\\n      this._send({\\n        id: field.obj._id,\\n        siblings: field.obj._siblings,\\n        value: field.obj.defaultValue,\\n        formattedValue: null,\\n        selRange: [0, 0]\\n      });\\n    }\\n    if (mustCalculate) {\\n      this.calculateNow();\\n    }\\n  }\\n  saveAs() {}\\n  scroll() {}\\n  selectPageNthWord() {}\\n  setAction() {}\\n  setDataObjectContents() {}\\n  setOCGOrder() {}\\n  setPageAction() {}\\n  setPageBoxes() {}\\n  setPageLabels() {}\\n  setPageRotations() {}\\n  setPageTabOrder() {}\\n  setPageTransitions() {}\\n  spawnPageFromTemplate() {}\\n  submitForm() {}\\n  syncAnnotScan() {}\\n}\\n\\n;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fscripting_api\u002Fproxy.js\\nclass ProxyHandler {\\n  constructor() {\\n    this.nosend = new Set([\\\"delay\\\"]);\\n  }\\n  get(obj, prop) {\\n    if (prop in obj._expandos) {\\n      const val = obj._expandos[prop];\\n      if (typeof val === \\\"function\\\") {\\n        return val.bind(obj);\\n      }\\n      return val;\\n    }\\n    if (typeof prop === \\\"string\\\" && !prop.startsWith(\\\"_\\\") && prop in obj) {\\n      const val = obj[prop];\\n      if (typeof val === \\\"function\\\") {\\n        return val.bind(obj);\\n      }\\n      return val;\\n    }\\n    return undefined;\\n  }\\n  set(obj, prop, value) {\\n    if (obj._kidIds) {\\n      obj._kidIds.forEach(id => {\\n        obj._appObjects[id].wrapped[prop] = value;\\n      });\\n    }\\n    if (typeof prop === \\\"string\\\" && !prop.startsWith(\\\"_\\\") && prop in obj) {\\n      const old = obj[prop];\\n      obj[prop] = value;\\n      if (!this.nosend.has(prop) && obj._send && obj._id !== null && typeof old !== \\\"function\\\") {\\n        const data = {\\n          id: obj._id\\n        };\\n        data[prop] = prop === \\\"value\\\" ? obj._getValue() : obj[prop];\\n        if (!obj._siblings) {\\n          obj._send(data);\\n        } else {\\n          data.siblings = obj._siblings;\\n          obj._send(data);\\n        }\\n      }\\n    } else {\\n      obj._expandos[prop] = value;\\n    }\\n    return true;\\n  }\\n  has(obj, prop) {\\n    return prop in obj._expandos || typeof prop === \\\"string\\\" && !prop.startsWith(\\\"_\\\") && prop in obj;\\n  }\\n  getPrototypeOf(obj) {\\n    return null;\\n  }\\n  setPrototypeOf(obj, proto) {\\n    return false;\\n  }\\n  isExtensible(obj) {\\n    return true;\\n  }\\n  preventExtensions(obj) {\\n    return false;\\n  }\\n  getOwnPropertyDescriptor(obj, prop) {\\n    if (prop in obj._expandos) {\\n      return {\\n        configurable: true,\\n        enumerable: true,\\n        value: obj._expandos[prop]\\n      };\\n    }\\n    if (typeof prop === \\\"string\\\" && !prop.startsWith(\\\"_\\\") && prop in obj) {\\n      return {\\n        configurable: true,\\n        enumerable: true,\\n        value: obj[prop]\\n      };\\n    }\\n    return undefined;\\n  }\\n  defineProperty(obj, key, descriptor) {\\n    Object.defineProperty(obj._expandos, key, descriptor);\\n    return true;\\n  }\\n  deleteProperty(obj, prop) {\\n    if (prop in obj._expandos) {\\n      delete obj._expandos[prop];\\n    }\\n  }\\n  ownKeys(obj) {\\n    const fromExpandos = Reflect.ownKeys(obj._expandos);\\n    const fromObj = Reflect.ownKeys(obj).filter(k => !k.startsWith(\\\"_\\\"));\\n    return fromExpandos.concat(fromObj);\\n  }\\n}\\n\\n;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fscripting_api\u002Futil.js\\n\\nclass Util extends PDFObject {\\n  constructor(data) {\\n    super(data);\\n    this._scandCache = new Map();\\n    this._months = [\\\"January\\\", \\\"February\\\", \\\"March\\\", \\\"April\\\", \\\"May\\\", \\\"June\\\", \\\"July\\\", \\\"August\\\", \\\"September\\\", \\\"October\\\", \\\"November\\\", \\\"December\\\"];\\n    this._days = [\\\"Sunday\\\", \\\"Monday\\\", \\\"Tuesday\\\", \\\"Wednesday\\\", \\\"Thursday\\\", \\\"Friday\\\", \\\"Saturday\\\"];\\n    this.MILLISECONDS_IN_DAY = 86400000;\\n    this.MILLISECONDS_IN_WEEK = 604800000;\\n    this._externalCall = data.externalCall;\\n  }\\n  printf(...args) {\\n    if (args.length === 0) {\\n      throw new Error(\\\"Invalid number of params in printf\\\");\\n    }\\n    if (typeof args[0] !== \\\"string\\\") {\\n      throw new TypeError(\\\"First argument of printf must be a string\\\");\\n    }\\n    const pattern = \u002F%(,[0-4])?([+ 0#]+)?(\\\\d+)?(\\\\.\\\\d+)?(.)\u002Fg;\\n    const PLUS = 1;\\n    const SPACE = 2;\\n    const ZERO = 4;\\n    const HASH = 8;\\n    let i = 0;\\n    return args[0].replaceAll(pattern, function (match, nDecSep, cFlags, nWidth, nPrecision, cConvChar) {\\n      if (cConvChar !== \\\"d\\\" && cConvChar !== \\\"f\\\" && cConvChar !== \\\"s\\\" && cConvChar !== \\\"x\\\") {\\n        const buf = [\\\"%\\\"];\\n        for (const str of [nDecSep, cFlags, nWidth, nPrecision, cConvChar]) {\\n          if (str) {\\n            buf.push(str);\\n          }\\n        }\\n        return buf.join(\\\"\\\");\\n      }\\n      i++;\\n      if (i === args.length) {\\n        throw new Error(\\\"Not enough arguments in printf\\\");\\n      }\\n      const arg = args[i];\\n      if (cConvChar === \\\"s\\\") {\\n        return arg.toString();\\n      }\\n      let flags = 0;\\n      if (cFlags) {\\n        for (const flag of cFlags) {\\n          switch (flag) {\\n            case \\\"+\\\":\\n              flags |= PLUS;\\n              break;\\n            case \\\" \\\":\\n              flags |= SPACE;\\n              break;\\n            case \\\"0\\\":\\n              flags |= ZERO;\\n              break;\\n            case \\\"#\\\":\\n              flags |= HASH;\\n              break;\\n          }\\n        }\\n      }\\n      cFlags = flags;\\n      if (nWidth) {\\n        nWidth = parseInt(nWidth);\\n      }\\n      let intPart = Math.trunc(arg);\\n      if (cConvChar === \\\"x\\\") {\\n        let hex = Math.abs(intPart).toString(16).toUpperCase();\\n        if (nWidth !== undefined) {\\n          hex = hex.padStart(nWidth, cFlags & ZERO ? \\\"0\\\" : \\\" \\\");\\n        }\\n        if (cFlags & HASH) {\\n          hex = `0x${hex}`;\\n        }\\n        return hex;\\n      }\\n      if (nPrecision) {\\n        nPrecision = parseInt(nPrecision.substring(1));\\n      }\\n      nDecSep = nDecSep ? nDecSep.substring(1) : \\\"0\\\";\\n      const separators = {\\n        0: [\\\",\\\", \\\".\\\"],\\n        1: [\\\"\\\", \\\".\\\"],\\n        2: [\\\".\\\", \\\",\\\"],\\n        3: [\\\"\\\", \\\",\\\"],\\n        4: [\\\"'\\\", \\\".\\\"]\\n      };\\n      const [thousandSep, decimalSep] = separators[nDecSep];\\n      let decPart = \\\"\\\";\\n      if (cConvChar === \\\"f\\\") {\\n        decPart = nPrecision !== undefined ? Math.abs(arg - intPart).toFixed(nPrecision) : Math.abs(arg - intPart).toString();\\n        if (decPart.length > 2) {\\n          decPart = `${decimalSep}${decPart.substring(2)}`;\\n        } else {\\n          if (decPart === \\\"1\\\") {\\n            intPart += Math.sign(arg);\\n          }\\n          decPart = cFlags & HASH ? \\\".\\\" : \\\"\\\";\\n        }\\n      }\\n      let sign = \\\"\\\";\\n      if (intPart \u003C 0) {\\n        sign = \\\"-\\\";\\n        intPart = -intPart;\\n      } else if (cFlags & PLUS) {\\n        sign = \\\"+\\\";\\n      } else if (cFlags & SPACE) {\\n        sign = \\\" \\\";\\n      }\\n      if (thousandSep && intPart >= 1000) {\\n        const buf = [];\\n        while (true) {\\n          buf.push((intPart % 1000).toString().padStart(3, \\\"0\\\"));\\n          intPart = Math.trunc(intPart \u002F 1000);\\n          if (intPart \u003C 1000) {\\n            buf.push(intPart.toString());\\n            break;\\n          }\\n        }\\n        intPart = buf.reverse().join(thousandSep);\\n      } else {\\n        intPart = intPart.toString();\\n      }\\n      let n = `${intPart}${decPart}`;\\n      if (nWidth !== undefined) {\\n        n = n.padStart(nWidth - sign.length, cFlags & ZERO ? \\\"0\\\" : \\\" \\\");\\n      }\\n      return `${sign}${n}`;\\n    });\\n  }\\n  iconStreamFromIcon() {}\\n  printd(cFormat, oDate) {\\n    switch (cFormat) {\\n      case 0:\\n        return this.printd(\\\"D:yyyymmddHHMMss\\\", oDate);\\n      case 1:\\n        return this.printd(\\\"yyyy.mm.dd HH:MM:ss\\\", oDate);\\n      case 2:\\n        return this.printd(\\\"m\u002Fd\u002Fyy h:MM:ss tt\\\", oDate);\\n    }\\n    const handlers = {\\n      mmmm: data => this._months[data.month],\\n      mmm: data => this._months[data.month].substring(0, 3),\\n      mm: data => (data.month + 1).toString().padStart(2, \\\"0\\\"),\\n      m: data => (data.month + 1).toString(),\\n      dddd: data => this._days[data.dayOfWeek],\\n      ddd: data => this._days[data.dayOfWeek].substring(0, 3),\\n      dd: data => data.day.toString().padStart(2, \\\"0\\\"),\\n      d: data => data.day.toString(),\\n      yyyy: data => data.year.toString(),\\n      yy: data => (data.year % 100).toString().padStart(2, \\\"0\\\"),\\n      HH: data => data.hours.toString().padStart(2, \\\"0\\\"),\\n      H: data => data.hours.toString(),\\n      hh: data => (1 + (data.hours + 11) % 12).toString().padStart(2, \\\"0\\\"),\\n      h: data => (1 + (data.hours + 11) % 12).toString(),\\n      MM: data => data.minutes.toString().padStart(2, \\\"0\\\"),\\n      M: data => data.minutes.toString(),\\n      ss: data => data.seconds.toString().padStart(2, \\\"0\\\"),\\n      s: data => data.seconds.toString(),\\n      tt: data => data.hours \u003C 12 ? \\\"am\\\" : \\\"pm\\\",\\n      t: data => data.hours \u003C 12 ? \\\"a\\\" : \\\"p\\\"\\n    };\\n    const data = {\\n      year: oDate.getFullYear(),\\n      month: oDate.getMonth(),\\n      day: oDate.getDate(),\\n      dayOfWeek: oDate.getDay(),\\n      hours: oDate.getHours(),\\n      minutes: oDate.getMinutes(),\\n      seconds: oDate.getSeconds()\\n    };\\n    const patterns = \u002F(mmmm|mmm|mm|m|dddd|ddd|dd|d|yyyy|yy|HH|H|hh|h|MM|M|ss|s|tt|t|\\\\\\\\.)\u002Fg;\\n    return cFormat.replaceAll(patterns, function (match, pattern) {\\n      if (pattern in handlers) {\\n        return handlers[pattern](data);\\n      }\\n      return pattern.charCodeAt(1);\\n    });\\n  }\\n  printx(cFormat, cSource) {\\n    cSource = (cSource ?? \\\"\\\").toString();\\n    const handlers = [x => x, x => x.toUpperCase(), x => x.toLowerCase()];\\n    const buf = [];\\n    let i = 0;\\n    const ii = cSource.length;\\n    let currCase = handlers[0];\\n    let escaped = false;\\n    for (const command of cFormat) {\\n      if (escaped) {\\n        buf.push(command);\\n        escaped = false;\\n        continue;\\n      }\\n      if (i >= ii) {\\n        break;\\n      }\\n      switch (command) {\\n        case \\\"?\\\":\\n          buf.push(currCase(cSource.charAt(i++)));\\n          break;\\n        case \\\"X\\\":\\n          while (i \u003C ii) {\\n            const char = cSource.charAt(i++);\\n            if (\\\"a\\\" \u003C= char && char \u003C= \\\"z\\\" || \\\"A\\\" \u003C= char && char \u003C= \\\"Z\\\" || \\\"0\\\" \u003C= char && char \u003C= \\\"9\\\") {\\n              buf.push(currCase(char));\\n              break;\\n            }\\n          }\\n          break;\\n        case \\\"A\\\":\\n          while (i \u003C ii) {\\n            const char = cSource.charAt(i++);\\n            if (\\\"a\\\" \u003C= char && char \u003C= \\\"z\\\" || \\\"A\\\" \u003C= char && char \u003C= \\\"Z\\\") {\\n              buf.push(currCase(char));\\n              break;\\n            }\\n          }\\n          break;\\n        case \\\"9\\\":\\n          while (i \u003C ii) {\\n            const char = cSource.charAt(i++);\\n            if (\\\"0\\\" \u003C= char && char \u003C= \\\"9\\\") {\\n              buf.push(char);\\n              break;\\n            }\\n          }\\n          break;\\n        case \\\"*\\\":\\n          while (i \u003C ii) {\\n            buf.push(currCase(cSource.charAt(i++)));\\n          }\\n          break;\\n        case \\\"\\\\\\\\\\\":\\n          escaped = true;\\n          break;\\n        case \\\">\\\":\\n          currCase = handlers[1];\\n          break;\\n        case \\\"\u003C\\\":\\n          currCase = handlers[2];\\n          break;\\n        case \\\"=\\\":\\n          currCase = handlers[0];\\n          break;\\n        default:\\n          buf.push(command);\\n      }\\n    }\\n    return buf.join(\\\"\\\");\\n  }\\n  scand(cFormat, cDate) {\\n    if (typeof cDate !== \\\"string\\\") {\\n      return new Date(cDate);\\n    }\\n    if (cDate === \\\"\\\") {\\n      return new Date();\\n    }\\n    switch (cFormat) {\\n      case 0:\\n        return this.scand(\\\"D:yyyymmddHHMMss\\\", cDate);\\n      case 1:\\n        return this.scand(\\\"yyyy.mm.dd HH:MM:ss\\\", cDate);\\n      case 2:\\n        return this.scand(\\\"m\u002Fd\u002Fyy h:MM:ss tt\\\", cDate);\\n    }\\n    if (!this._scandCache.has(cFormat)) {\\n      const months = this._months;\\n      const days = this._days;\\n      const handlers = {\\n        mmmm: {\\n          pattern: `(${months.join(\\\"|\\\")})`,\\n          action: (value, data) => {\\n            data.month = months.indexOf(value);\\n          }\\n        },\\n        mmm: {\\n          pattern: `(${months.map(month => month.substring(0, 3)).join(\\\"|\\\")})`,\\n          action: (value, data) => {\\n            data.month = months.findIndex(month => month.substring(0, 3) === value);\\n          }\\n        },\\n        mm: {\\n          pattern: `(\\\\\\\\d{2})`,\\n          action: (value, data) => {\\n            data.month = parseInt(value) - 1;\\n          }\\n        },\\n        m: {\\n          pattern: `(\\\\\\\\d{1,2})`,\\n          action: (value, data) => {\\n            data.month = parseInt(value) - 1;\\n          }\\n        },\\n        dddd: {\\n          pattern: `(${days.join(\\\"|\\\")})`,\\n          action: (value, data) => {\\n            data.day = days.indexOf(value);\\n          }\\n        },\\n        ddd: {\\n          pattern: `(${days.map(day => day.substring(0, 3)).join(\\\"|\\\")})`,\\n          action: (value, data) => {\\n            data.day = days.findIndex(day => day.substring(0, 3) === value);\\n          }\\n        },\\n        dd: {\\n          pattern: \\\"(\\\\\\\\d{2})\\\",\\n          action: (value, data) => {\\n            data.day = parseInt(value);\\n          }\\n        },\\n        d: {\\n          pattern: \\\"(\\\\\\\\d{1,2})\\\",\\n          action: (value, data) => {\\n            data.day = parseInt(value);\\n          }\\n        },\\n        yyyy: {\\n          pattern: \\\"(\\\\\\\\d{4})\\\",\\n          action: (value, data) => {\\n            data.year = parseInt(value);\\n          }\\n        },\\n        yy: {\\n          pattern: \\\"(\\\\\\\\d{2})\\\",\\n          action: (value, data) => {\\n            data.year = 2000 + parseInt(value);\\n          }\\n        },\\n        HH: {\\n          pattern: \\\"(\\\\\\\\d{2})\\\",\\n          action: (value, data) => {\\n            data.hours = parseInt(value);\\n          }\\n        },\\n        H: {\\n          pattern: \\\"(\\\\\\\\d{1,2})\\\",\\n          action: (value, data) => {\\n            data.hours = parseInt(value);\\n          }\\n        },\\n        hh: {\\n          pattern: \\\"(\\\\\\\\d{2})\\\",\\n          action: (value, data) => {\\n            data.hours = parseInt(value);\\n          }\\n        },\\n        h: {\\n          pattern: \\\"(\\\\\\\\d{1,2})\\\",\\n          action: (value, data) => {\\n            data.hours = parseInt(value);\\n          }\\n        },\\n        MM: {\\n          pattern: \\\"(\\\\\\\\d{2})\\\",\\n          action: (value, data) => {\\n            data.minutes = parseInt(value);\\n          }\\n        },\\n        M: {\\n          pattern: \\\"(\\\\\\\\d{1,2})\\\",\\n          action: (value, data) => {\\n            data.minutes = parseInt(value);\\n          }\\n        },\\n        ss: {\\n          pattern: \\\"(\\\\\\\\d{2})\\\",\\n          action: (value, data) => {\\n            data.seconds = parseInt(value);\\n          }\\n        },\\n        s: {\\n          pattern: \\\"(\\\\\\\\d{1,2})\\\",\\n          action: (value, data) => {\\n            data.seconds = parseInt(value);\\n          }\\n        },\\n        tt: {\\n          pattern: \\\"([aApP][mM])\\\",\\n          action: (value, data) => {\\n            const char = value.charAt(0);\\n            data.am = char === \\\"a\\\" || char === \\\"A\\\";\\n          }\\n        },\\n        t: {\\n          pattern: \\\"([aApP])\\\",\\n          action: (value, data) => {\\n            data.am = value === \\\"a\\\" || value === \\\"A\\\";\\n          }\\n        }\\n      };\\n      const escapedFormat = cFormat.replaceAll(\u002F[.*+\\\\-?^${}()|[\\\\]\\\\\\\\]\u002Fg, \\\"\\\\\\\\$&\\\");\\n      const patterns = \u002F(mmmm|mmm|mm|m|dddd|ddd|dd|d|yyyy|yy|HH|H|hh|h|MM|M|ss|s|tt|t)\u002Fg;\\n      const actions = [];\\n      const re = escapedFormat.replaceAll(patterns, function (match, patternElement) {\\n        const {\\n          pattern,\\n          action\\n        } = handlers[patternElement];\\n        actions.push(action);\\n        return pattern;\\n      });\\n      this._scandCache.set(cFormat, [re, actions]);\\n    }\\n    const [re, actions] = this._scandCache.get(cFormat);\\n    const matches = new RegExp(`^${re}$`, \\\"g\\\").exec(cDate);\\n    if (!matches || matches.length !== actions.length + 1) {\\n      return null;\\n    }\\n    const data = {\\n      year: 2000,\\n      month: 0,\\n      day: 1,\\n      hours: 0,\\n      minutes: 0,\\n      seconds: 0,\\n      am: null\\n    };\\n    actions.forEach((action, i) => action(matches[i + 1], data));\\n    if (data.am !== null) {\\n      data.hours = data.hours % 12 + (data.am ? 0 : 12);\\n    }\\n    return new Date(data.year, data.month, data.day, data.hours, data.minutes, data.seconds);\\n  }\\n  spansToXML() {}\\n  stringFromStream() {}\\n  xmlToSpans() {}\\n}\\n\\n;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fscripting_api\u002Finitialization.js\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nfunction initSandbox(params) {\\n  delete globalThis.pdfjsScripting;\\n  const externalCall = globalThis.callExternalFunction;\\n  delete globalThis.callExternalFunction;\\n  const globalEval = code => globalThis.eval(code);\\n  const send = data => externalCall(\\\"send\\\", [data]);\\n  const proxyHandler = new ProxyHandler();\\n  const {\\n    data\\n  } = params;\\n  const doc = new Doc({\\n    send,\\n    globalEval,\\n    ...data.docInfo\\n  });\\n  const _document = {\\n    obj: doc,\\n    wrapped: new Proxy(doc, proxyHandler)\\n  };\\n  const app = new App({\\n    send,\\n    globalEval,\\n    externalCall,\\n    _document,\\n    calculationOrder: data.calculationOrder,\\n    proxyHandler,\\n    ...data.appInfo\\n  });\\n  const util = new Util({\\n    externalCall\\n  });\\n  const appObjects = app._objects;\\n  if (data.objects) {\\n    const annotations = [];\\n    for (const [name, objs] of Object.entries(data.objects)) {\\n      annotations.length = 0;\\n      let container = null;\\n      for (const obj of objs) {\\n        if (obj.type !== \\\"\\\") {\\n          annotations.push(obj);\\n        } else {\\n          container = obj;\\n        }\\n      }\\n      let obj = container;\\n      if (annotations.length > 0) {\\n        obj = annotations[0];\\n        obj.send = send;\\n      }\\n      obj.globalEval = globalEval;\\n      obj.doc = _document;\\n      obj.fieldPath = name;\\n      obj.appObjects = appObjects;\\n      let field;\\n      switch (obj.type) {\\n        case \\\"radiobutton\\\":\\n          {\\n            const otherButtons = annotations.slice(1);\\n            field = new RadioButtonField(otherButtons, obj);\\n            break;\\n          }\\n        case \\\"checkbox\\\":\\n          {\\n            const otherButtons = annotations.slice(1);\\n            field = new CheckboxField(otherButtons, obj);\\n            break;\\n          }\\n        case \\\"text\\\":\\n          if (annotations.length \u003C= 1) {\\n            field = new Field(obj);\\n            break;\\n          }\\n          obj.siblings = annotations.map(x => x.id).slice(1);\\n          field = new Field(obj);\\n          break;\\n        default:\\n          field = new Field(obj);\\n      }\\n      const wrapped = new Proxy(field, proxyHandler);\\n      const _object = {\\n        obj: field,\\n        wrapped\\n      };\\n      doc._addField(name, _object);\\n      for (const object of objs) {\\n        appObjects[object.id] = _object;\\n      }\\n      if (container) {\\n        appObjects[container.id] = _object;\\n      }\\n    }\\n  }\\n  const color = new Color();\\n  globalThis.event = null;\\n  globalThis.global = Object.create(null);\\n  globalThis.app = new Proxy(app, proxyHandler);\\n  globalThis.color = new Proxy(color, proxyHandler);\\n  globalThis.console = new Proxy(new Console({\\n    send\\n  }), proxyHandler);\\n  globalThis.util = new Proxy(util, proxyHandler);\\n  globalThis.border = Border;\\n  globalThis.cursor = Cursor;\\n  globalThis.display = Display;\\n  globalThis.font = Font;\\n  globalThis.highlight = Highlight;\\n  globalThis.position = Position;\\n  globalThis.scaleHow = ScaleHow;\\n  globalThis.scaleWhen = ScaleWhen;\\n  globalThis.style = Style;\\n  globalThis.trans = Trans;\\n  globalThis.zoomtype = ZoomType;\\n  globalThis.ADBE = {\\n    Reader_Value_Asked: true,\\n    Viewer_Value_Asked: true\\n  };\\n  const aform = new AForm(doc, app, util, color);\\n  for (const name of Object.getOwnPropertyNames(AForm.prototype)) {\\n    if (name !== \\\"constructor\\\" && !name.startsWith(\\\"_\\\")) {\\n      globalThis[name] = aform[name].bind(aform);\\n    }\\n  }\\n  for (const [name, value] of Object.entries(GlobalConstants)) {\\n    Object.defineProperty(globalThis, name, {\\n      value,\\n      writable: false\\n    });\\n  }\\n  Object.defineProperties(globalThis, {\\n    ColorConvert: {\\n      value: color.convert.bind(color),\\n      writable: true\\n    },\\n    ColorEqual: {\\n      value: color.equal.bind(color),\\n      writable: true\\n    }\\n  });\\n  const properties = Object.create(null);\\n  for (const name of Object.getOwnPropertyNames(Doc.prototype)) {\\n    if (name === \\\"constructor\\\" || name.startsWith(\\\"_\\\")) {\\n      continue;\\n    }\\n    const descriptor = Object.getOwnPropertyDescriptor(Doc.prototype, name);\\n    if (descriptor.get) {\\n      properties[name] = {\\n        get: descriptor.get.bind(doc),\\n        set: descriptor.set.bind(doc)\\n      };\\n    } else {\\n      properties[name] = {\\n        value: Doc.prototype[name].bind(doc)\\n      };\\n    }\\n  }\\n  Object.defineProperties(globalThis, properties);\\n  const functions = {\\n    dispatchEvent: app._dispatchEvent.bind(app),\\n    timeoutCb: app._evalCallback.bind(app)\\n  };\\n  return (name, args) => {\\n    try {\\n      functions[name](args);\\n    } catch (error) {\\n      send(serializeError(error));\\n    }\\n  };\\n}\\n\\n;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fpdf.scripting.js\\n\\nconst pdfjsVersion = \\\"4.3.136\\\";\\nconst pdfjsBuild = \\\"0cec64437\\\";\\nglobalThis.pdfjsScripting = {\\n  initSandbox: initSandbox\\n};\\n\"];\n+    const code = [\"\u002F******\u002F var __webpack_modules__ = ({\\n\\n\u002F***\u002F 34:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar isCallable = __webpack_require__(4901);\\n\\nmodule.exports = function (it) {\\n  return typeof it == 'object' ? it !== null : isCallable(it);\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 81:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar call = __webpack_require__(9565);\\nvar aCallable = __webpack_require__(9306);\\nvar anObject = __webpack_require__(8551);\\nvar tryToString = __webpack_require__(6823);\\nvar getIteratorMethod = __webpack_require__(851);\\n\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (argument, usingIterator) {\\n  var iteratorMethod = arguments.length \u003C 2 ? getIteratorMethod(argument) : usingIterator;\\n  if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\\n  throw new $TypeError(tryToString(argument) + ' is not iterable');\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 283:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar uncurryThis = __webpack_require__(9504);\\nvar fails = __webpack_require__(9039);\\nvar isCallable = __webpack_require__(4901);\\nvar hasOwn = __webpack_require__(9297);\\nvar DESCRIPTORS = __webpack_require__(3724);\\nvar CONFIGURABLE_FUNCTION_NAME = (__webpack_require__(350).CONFIGURABLE);\\nvar inspectSource = __webpack_require__(3706);\\nvar InternalStateModule = __webpack_require__(1181);\\n\\nvar enforceInternalState = InternalStateModule.enforce;\\nvar getInternalState = InternalStateModule.get;\\nvar $String = String;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\\nvar defineProperty = Object.defineProperty;\\nvar stringSlice = uncurryThis(''.slice);\\nvar replace = uncurryThis(''.replace);\\nvar join = uncurryThis([].join);\\n\\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\\n  return defineProperty(function () { \u002F* empty *\u002F }, 'length', { value: 8 }).length !== 8;\\n});\\n\\nvar TEMPLATE = String(String).split('String');\\n\\nvar makeBuiltIn = module.exports = function (value, name, options) {\\n  if (stringSlice($String(name), 0, 7) === 'Symbol(') {\\n    name = '[' + replace($String(name), \u002F^Symbol\\\\(([^)]*)\\\\).*$\u002F, '$1') + ']';\\n  }\\n  if (options && options.getter) name = 'get ' + name;\\n  if (options && options.setter) name = 'set ' + name;\\n  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\\n    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\\n    else value.name = name;\\n  }\\n  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\\n    defineProperty(value, 'length', { value: options.arity });\\n  }\\n  try {\\n    if (options && hasOwn(options, 'constructor') && options.constructor) {\\n      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\\n    \u002F\u002F in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\\n    } else if (value.prototype) value.prototype = undefined;\\n  } catch (error) { \u002F* empty *\u002F }\\n  var state = enforceInternalState(value);\\n  if (!hasOwn(state, 'source')) {\\n    state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\\n  } return value;\\n};\\n\\n\u002F\u002F add fake Function#toString for correct work wrapped methods \u002F constructors with methods like LoDash isNative\\n\u002F\u002F eslint-disable-next-line no-extend-native -- required\\nFunction.prototype.toString = makeBuiltIn(function toString() {\\n  return isCallable(this) && getInternalState(this).source || inspectSource(this);\\n}, 'toString');\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 350:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar DESCRIPTORS = __webpack_require__(3724);\\nvar hasOwn = __webpack_require__(9297);\\n\\nvar FunctionPrototype = Function.prototype;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\\n\\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\\n\u002F\u002F additional protection from minified \u002F mangled \u002F dropped function names\\nvar PROPER = EXISTS && (function something() { \u002F* empty *\u002F }).name === 'something';\\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\\n\\nmodule.exports = {\\n  EXISTS: EXISTS,\\n  PROPER: PROPER,\\n  CONFIGURABLE: CONFIGURABLE\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 397:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar getBuiltIn = __webpack_require__(7751);\\n\\nmodule.exports = getBuiltIn('document', 'documentElement');\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 421:\\n\u002F***\u002F ((module) => {\\n\\n\\nmodule.exports = {};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 507:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar call = __webpack_require__(9565);\\n\\nmodule.exports = function (record, fn, ITERATOR_INSTEAD_OF_RECORD) {\\n  var iterator = ITERATOR_INSTEAD_OF_RECORD ? record : record.iterator;\\n  var next = record.next;\\n  var step, result;\\n  while (!(step = call(next, iterator)).done) {\\n    result = fn(step.value);\\n    if (result !== undefined) return result;\\n  }\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 616:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar fails = __webpack_require__(9039);\\n\\nmodule.exports = !fails(function () {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind -- safe\\n  var test = (function () { \u002F* empty *\u002F }).bind();\\n  \u002F\u002F eslint-disable-next-line no-prototype-builtins -- safe\\n  return typeof test != 'function' || test.hasOwnProperty('prototype');\\n});\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 679:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar isPrototypeOf = __webpack_require__(1625);\\n\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (it, Prototype) {\\n  if (isPrototypeOf(Prototype, it)) return it;\\n  throw new $TypeError('Incorrect invocation');\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 741:\\n\u002F***\u002F ((module) => {\\n\\n\\nvar ceil = Math.ceil;\\nvar floor = Math.floor;\\n\\n\u002F\u002F `Math.trunc` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-math.trunc\\n\u002F\u002F eslint-disable-next-line es\u002Fno-math-trunc -- safe\\nmodule.exports = Math.trunc || function trunc(x) {\\n  var n = +x;\\n  return (n > 0 ? floor : ceil)(n);\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 757:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar getBuiltIn = __webpack_require__(7751);\\nvar isCallable = __webpack_require__(4901);\\nvar isPrototypeOf = __webpack_require__(1625);\\nvar USE_SYMBOL_AS_UID = __webpack_require__(7040);\\n\\nvar $Object = Object;\\n\\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\\n  return typeof it == 'symbol';\\n} : function (it) {\\n  var $Symbol = getBuiltIn('Symbol');\\n  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 851:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar classof = __webpack_require__(6955);\\nvar getMethod = __webpack_require__(5966);\\nvar isNullOrUndefined = __webpack_require__(4117);\\nvar Iterators = __webpack_require__(6269);\\nvar wellKnownSymbol = __webpack_require__(8227);\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\n\\nmodule.exports = function (it) {\\n  if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\\n    || getMethod(it, '@@iterator')\\n    || Iterators[classof(it)];\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 1072:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar internalObjectKeys = __webpack_require__(1828);\\nvar enumBugKeys = __webpack_require__(8727);\\n\\n\u002F\u002F `Object.keys` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.keys\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-keys -- safe\\nmodule.exports = Object.keys || function keys(O) {\\n  return internalObjectKeys(O, enumBugKeys);\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 1148:\\n\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar $ = __webpack_require__(6518);\\nvar call = __webpack_require__(9565);\\nvar iterate = __webpack_require__(2652);\\nvar aCallable = __webpack_require__(9306);\\nvar anObject = __webpack_require__(8551);\\nvar getIteratorDirect = __webpack_require__(1767);\\nvar iteratorClose = __webpack_require__(9539);\\nvar iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\\n\\nvar everyWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('every', TypeError);\\n\\n\u002F\u002F `Iterator.prototype.every` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.every\\n$({ target: 'Iterator', proto: true, real: true, forced: everyWithoutClosingOnEarlyError }, {\\n  every: function every(predicate) {\\n    anObject(this);\\n    try {\\n      aCallable(predicate);\\n    } catch (error) {\\n      iteratorClose(this, 'throw', error);\\n    }\\n\\n    if (everyWithoutClosingOnEarlyError) return call(everyWithoutClosingOnEarlyError, this, predicate);\\n\\n    var record = getIteratorDirect(this);\\n    var counter = 0;\\n    return !iterate(record, function (value, stop) {\\n      if (!predicate(value, counter++)) return stop();\\n    }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\\n  }\\n});\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 1181:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar NATIVE_WEAK_MAP = __webpack_require__(8622);\\nvar globalThis = __webpack_require__(4576);\\nvar isObject = __webpack_require__(34);\\nvar createNonEnumerableProperty = __webpack_require__(6699);\\nvar hasOwn = __webpack_require__(9297);\\nvar shared = __webpack_require__(7629);\\nvar sharedKey = __webpack_require__(6119);\\nvar hiddenKeys = __webpack_require__(421);\\n\\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\\nvar TypeError = globalThis.TypeError;\\nvar WeakMap = globalThis.WeakMap;\\nvar set, get, has;\\n\\nvar enforce = function (it) {\\n  return has(it) ? get(it) : set(it, {});\\n};\\n\\nvar getterFor = function (TYPE) {\\n  return function (it) {\\n    var state;\\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\\n      throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\\n    } return state;\\n  };\\n};\\n\\nif (NATIVE_WEAK_MAP || shared.state) {\\n  var store = shared.state || (shared.state = new WeakMap());\\n  \u002F* eslint-disable no-self-assign -- prototype methods protection *\u002F\\n  store.get = store.get;\\n  store.has = store.has;\\n  store.set = store.set;\\n  \u002F* eslint-enable no-self-assign -- prototype methods protection *\u002F\\n  set = function (it, metadata) {\\n    if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\\n    metadata.facade = it;\\n    store.set(it, metadata);\\n    return metadata;\\n  };\\n  get = function (it) {\\n    return store.get(it) || {};\\n  };\\n  has = function (it) {\\n    return store.has(it);\\n  };\\n} else {\\n  var STATE = sharedKey('state');\\n  hiddenKeys[STATE] = true;\\n  set = function (it, metadata) {\\n    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\\n    metadata.facade = it;\\n    createNonEnumerableProperty(it, STATE, metadata);\\n    return metadata;\\n  };\\n  get = function (it) {\\n    return hasOwn(it, STATE) ? it[STATE] : {};\\n  };\\n  has = function (it) {\\n    return hasOwn(it, STATE);\\n  };\\n}\\n\\nmodule.exports = {\\n  set: set,\\n  get: get,\\n  has: has,\\n  enforce: enforce,\\n  getterFor: getterFor\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 1291:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar trunc = __webpack_require__(741);\\n\\n\u002F\u002F `ToIntegerOrInfinity` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-tointegerorinfinity\\nmodule.exports = function (argument) {\\n  var number = +argument;\\n  \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\\n  return number !== number || number === 0 ? 0 : trunc(number);\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 1625:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar uncurryThis = __webpack_require__(9504);\\n\\nmodule.exports = uncurryThis({}.isPrototypeOf);\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 1698:\\n\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar $ = __webpack_require__(6518);\\nvar union = __webpack_require__(4204);\\nvar setMethodAcceptSetLike = __webpack_require__(4916);\\n\\n\u002F\u002F `Set.prototype.union` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.union\\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('union') }, {\\n  union: union\\n});\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 1701:\\n\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar $ = __webpack_require__(6518);\\nvar call = __webpack_require__(9565);\\nvar aCallable = __webpack_require__(9306);\\nvar anObject = __webpack_require__(8551);\\nvar getIteratorDirect = __webpack_require__(1767);\\nvar createIteratorProxy = __webpack_require__(9462);\\nvar callWithSafeIterationClosing = __webpack_require__(6319);\\nvar iteratorClose = __webpack_require__(9539);\\nvar iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\\nvar IS_PURE = __webpack_require__(6395);\\n\\nvar mapWithoutClosingOnEarlyError = !IS_PURE && iteratorHelperWithoutClosingOnEarlyError('map', TypeError);\\n\\nvar IteratorProxy = createIteratorProxy(function () {\\n  var iterator = this.iterator;\\n  var result = anObject(call(this.next, iterator));\\n  var done = this.done = !!result.done;\\n  if (!done) return callWithSafeIterationClosing(iterator, this.mapper, [result.value, this.counter++], true);\\n});\\n\\n\u002F\u002F `Iterator.prototype.map` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.map\\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE || mapWithoutClosingOnEarlyError }, {\\n  map: function map(mapper) {\\n    anObject(this);\\n    try {\\n      aCallable(mapper);\\n    } catch (error) {\\n      iteratorClose(this, 'throw', error);\\n    }\\n\\n    if (mapWithoutClosingOnEarlyError) return call(mapWithoutClosingOnEarlyError, this, mapper);\\n\\n    return new IteratorProxy(getIteratorDirect(this), {\\n      mapper: mapper\\n    });\\n  }\\n});\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 1767:\\n\u002F***\u002F ((module) => {\\n\\n\\n\u002F\u002F `GetIteratorDirect(obj)` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-iterator-helpers\u002F#sec-getiteratordirect\\nmodule.exports = function (obj) {\\n  return {\\n    iterator: obj,\\n    next: obj.next,\\n    done: false\\n  };\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 1828:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar uncurryThis = __webpack_require__(9504);\\nvar hasOwn = __webpack_require__(9297);\\nvar toIndexedObject = __webpack_require__(5397);\\nvar indexOf = (__webpack_require__(9617).indexOf);\\nvar hiddenKeys = __webpack_require__(421);\\n\\nvar push = uncurryThis([].push);\\n\\nmodule.exports = function (object, names) {\\n  var O = toIndexedObject(object);\\n  var i = 0;\\n  var result = [];\\n  var key;\\n  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\\n  \u002F\u002F Don't enum bug & hidden keys\\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\\n    ~indexOf(result, key) || push(result, key);\\n  }\\n  return result;\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 2106:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar makeBuiltIn = __webpack_require__(283);\\nvar defineProperty = __webpack_require__(4913);\\n\\nmodule.exports = function (target, name, descriptor) {\\n  if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\\n  if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\\n  return defineProperty.f(target, name, descriptor);\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 2140:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar wellKnownSymbol = __webpack_require__(8227);\\n\\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\\nvar test = {};\\n\\ntest[TO_STRING_TAG] = 'z';\\n\\nmodule.exports = String(test) === '[object z]';\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 2195:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar uncurryThis = __webpack_require__(9504);\\n\\nvar toString = uncurryThis({}.toString);\\nvar stringSlice = uncurryThis(''.slice);\\n\\nmodule.exports = function (it) {\\n  return stringSlice(toString(it), 8, -1);\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 2211:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar fails = __webpack_require__(9039);\\n\\nmodule.exports = !fails(function () {\\n  function F() { \u002F* empty *\u002F }\\n  F.prototype.constructor = null;\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-object-getprototypeof -- required for testing\\n  return Object.getPrototypeOf(new F()) !== F.prototype;\\n});\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 2360:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\n\u002F* global ActiveXObject -- old IE, WSH *\u002F\\nvar anObject = __webpack_require__(8551);\\nvar definePropertiesModule = __webpack_require__(6801);\\nvar enumBugKeys = __webpack_require__(8727);\\nvar hiddenKeys = __webpack_require__(421);\\nvar html = __webpack_require__(397);\\nvar documentCreateElement = __webpack_require__(4055);\\nvar sharedKey = __webpack_require__(6119);\\n\\nvar GT = '>';\\nvar LT = '\u003C';\\nvar PROTOTYPE = 'prototype';\\nvar SCRIPT = 'script';\\nvar IE_PROTO = sharedKey('IE_PROTO');\\n\\nvar EmptyConstructor = function () { \u002F* empty *\u002F };\\n\\nvar scriptTag = function (content) {\\n  return LT + SCRIPT + GT + content + LT + '\u002F' + SCRIPT + GT;\\n};\\n\\n\u002F\u002F Create object with fake `null` prototype: use ActiveX Object with cleared prototype\\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\\n  activeXDocument.write(scriptTag(''));\\n  activeXDocument.close();\\n  var temp = activeXDocument.parentWindow.Object;\\n  \u002F\u002F eslint-disable-next-line no-useless-assignment -- avoid memory leak\\n  activeXDocument = null;\\n  return temp;\\n};\\n\\n\u002F\u002F Create object with fake `null` prototype: use iframe Object with cleared prototype\\nvar NullProtoObjectViaIFrame = function () {\\n  \u002F\u002F Thrash, waste and sodomy: IE GC bug\\n  var iframe = documentCreateElement('iframe');\\n  var JS = 'java' + SCRIPT + ':';\\n  var iframeDocument;\\n  iframe.style.display = 'none';\\n  html.appendChild(iframe);\\n  \u002F\u002F https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F475\\n  iframe.src = String(JS);\\n  iframeDocument = iframe.contentWindow.document;\\n  iframeDocument.open();\\n  iframeDocument.write(scriptTag('document.F=Object'));\\n  iframeDocument.close();\\n  return iframeDocument.F;\\n};\\n\\n\u002F\u002F Check for document.domain and active x support\\n\u002F\u002F No need to use active x approach when document.domain is not set\\n\u002F\u002F see https:\u002F\u002Fgithub.com\u002Fes-shims\u002Fes5-shim\u002Fissues\u002F150\\n\u002F\u002F variation of https:\u002F\u002Fgithub.com\u002Fkitcambridge\u002Fes5-shim\u002Fcommit\u002F4f738ac066346\\n\u002F\u002F avoid IE GC bug\\nvar activeXDocument;\\nvar NullProtoObject = function () {\\n  try {\\n    activeXDocument = new ActiveXObject('htmlfile');\\n  } catch (error) { \u002F* ignore *\u002F }\\n  NullProtoObject = typeof document != 'undefined'\\n    ? document.domain && activeXDocument\\n      ? NullProtoObjectViaActiveX(activeXDocument) \u002F\u002F old IE\\n      : NullProtoObjectViaIFrame()\\n    : NullProtoObjectViaActiveX(activeXDocument); \u002F\u002F WSH\\n  var length = enumBugKeys.length;\\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\\n  return NullProtoObject();\\n};\\n\\nhiddenKeys[IE_PROTO] = true;\\n\\n\u002F\u002F `Object.create` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.create\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-create -- safe\\nmodule.exports = Object.create || function create(O, Properties) {\\n  var result;\\n  if (O !== null) {\\n    EmptyConstructor[PROTOTYPE] = anObject(O);\\n    result = new EmptyConstructor();\\n    EmptyConstructor[PROTOTYPE] = null;\\n    \u002F\u002F add \\\"__proto__\\\" for Object.getPrototypeOf polyfill\\n    result[IE_PROTO] = O;\\n  } else result = NullProtoObject();\\n  return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 2475:\\n\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar $ = __webpack_require__(6518);\\nvar isSupersetOf = __webpack_require__(8527);\\nvar setMethodAcceptSetLike = __webpack_require__(4916);\\n\\nvar INCORRECT = !setMethodAcceptSetLike('isSupersetOf', function (result) {\\n  return !result;\\n});\\n\\n\u002F\u002F `Set.prototype.isSupersetOf` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.issupersetof\\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\\n  isSupersetOf: isSupersetOf\\n});\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 2489:\\n\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar $ = __webpack_require__(6518);\\nvar call = __webpack_require__(9565);\\nvar aCallable = __webpack_require__(9306);\\nvar anObject = __webpack_require__(8551);\\nvar getIteratorDirect = __webpack_require__(1767);\\nvar createIteratorProxy = __webpack_require__(9462);\\nvar callWithSafeIterationClosing = __webpack_require__(6319);\\nvar IS_PURE = __webpack_require__(6395);\\nvar iteratorClose = __webpack_require__(9539);\\nvar iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\\n\\nvar filterWithoutClosingOnEarlyError = !IS_PURE && iteratorHelperWithoutClosingOnEarlyError('filter', TypeError);\\n\\nvar IteratorProxy = createIteratorProxy(function () {\\n  var iterator = this.iterator;\\n  var predicate = this.predicate;\\n  var next = this.next;\\n  var result, done, value;\\n  while (true) {\\n    result = anObject(call(next, iterator));\\n    done = this.done = !!result.done;\\n    if (done) return;\\n    value = result.value;\\n    if (callWithSafeIterationClosing(iterator, predicate, [value, this.counter++], true)) return value;\\n  }\\n});\\n\\n\u002F\u002F `Iterator.prototype.filter` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.filter\\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE || filterWithoutClosingOnEarlyError }, {\\n  filter: function filter(predicate) {\\n    anObject(this);\\n    try {\\n      aCallable(predicate);\\n    } catch (error) {\\n      iteratorClose(this, 'throw', error);\\n    }\\n\\n    if (filterWithoutClosingOnEarlyError) return call(filterWithoutClosingOnEarlyError, this, predicate);\\n\\n    return new IteratorProxy(getIteratorDirect(this), {\\n      predicate: predicate\\n    });\\n  }\\n});\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 2529:\\n\u002F***\u002F ((module) => {\\n\\n\\n\u002F\u002F `CreateIterResultObject` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-createiterresultobject\\nmodule.exports = function (value, done) {\\n  return { value: value, done: done };\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 2652:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar bind = __webpack_require__(6080);\\nvar call = __webpack_require__(9565);\\nvar anObject = __webpack_require__(8551);\\nvar tryToString = __webpack_require__(6823);\\nvar isArrayIteratorMethod = __webpack_require__(4209);\\nvar lengthOfArrayLike = __webpack_require__(6198);\\nvar isPrototypeOf = __webpack_require__(1625);\\nvar getIterator = __webpack_require__(81);\\nvar getIteratorMethod = __webpack_require__(851);\\nvar iteratorClose = __webpack_require__(9539);\\n\\nvar $TypeError = TypeError;\\n\\nvar Result = function (stopped, result) {\\n  this.stopped = stopped;\\n  this.result = result;\\n};\\n\\nvar ResultPrototype = Result.prototype;\\n\\nmodule.exports = function (iterable, unboundFunction, options) {\\n  var that = options && options.that;\\n  var AS_ENTRIES = !!(options && options.AS_ENTRIES);\\n  var IS_RECORD = !!(options && options.IS_RECORD);\\n  var IS_ITERATOR = !!(options && options.IS_ITERATOR);\\n  var INTERRUPTED = !!(options && options.INTERRUPTED);\\n  var fn = bind(unboundFunction, that);\\n  var iterator, iterFn, index, length, result, next, step;\\n\\n  var stop = function (condition) {\\n    if (iterator) iteratorClose(iterator, 'normal', condition);\\n    return new Result(true, condition);\\n  };\\n\\n  var callFn = function (value) {\\n    if (AS_ENTRIES) {\\n      anObject(value);\\n      return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\\n    } return INTERRUPTED ? fn(value, stop) : fn(value);\\n  };\\n\\n  if (IS_RECORD) {\\n    iterator = iterable.iterator;\\n  } else if (IS_ITERATOR) {\\n    iterator = iterable;\\n  } else {\\n    iterFn = getIteratorMethod(iterable);\\n    if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');\\n    \u002F\u002F optimisation for array iterators\\n    if (isArrayIteratorMethod(iterFn)) {\\n      for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\\n        result = callFn(iterable[index]);\\n        if (result && isPrototypeOf(ResultPrototype, result)) return result;\\n      } return new Result(false);\\n    }\\n    iterator = getIterator(iterable, iterFn);\\n  }\\n\\n  next = IS_RECORD ? iterable.next : iterator.next;\\n  while (!(step = call(next, iterator)).done) {\\n    try {\\n      result = callFn(step.value);\\n    } catch (error) {\\n      iteratorClose(iterator, 'throw', error);\\n    }\\n    if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\\n  } return new Result(false);\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 2777:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar call = __webpack_require__(9565);\\nvar isObject = __webpack_require__(34);\\nvar isSymbol = __webpack_require__(757);\\nvar getMethod = __webpack_require__(5966);\\nvar ordinaryToPrimitive = __webpack_require__(4270);\\nvar wellKnownSymbol = __webpack_require__(8227);\\n\\nvar $TypeError = TypeError;\\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\\n\\n\u002F\u002F `ToPrimitive` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-toprimitive\\nmodule.exports = function (input, pref) {\\n  if (!isObject(input) || isSymbol(input)) return input;\\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\\n  var result;\\n  if (exoticToPrim) {\\n    if (pref === undefined) pref = 'default';\\n    result = call(exoticToPrim, input, pref);\\n    if (!isObject(result) || isSymbol(result)) return result;\\n    throw new $TypeError(\\\"Can't convert object to primitive value\\\");\\n  }\\n  if (pref === undefined) pref = 'number';\\n  return ordinaryToPrimitive(input, pref);\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 2787:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar hasOwn = __webpack_require__(9297);\\nvar isCallable = __webpack_require__(4901);\\nvar toObject = __webpack_require__(8981);\\nvar sharedKey = __webpack_require__(6119);\\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(2211);\\n\\nvar IE_PROTO = sharedKey('IE_PROTO');\\nvar $Object = Object;\\nvar ObjectPrototype = $Object.prototype;\\n\\n\u002F\u002F `Object.getPrototypeOf` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.getprototypeof\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getprototypeof -- safe\\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\\n  var object = toObject(O);\\n  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\\n  var constructor = object.constructor;\\n  if (isCallable(constructor) && object instanceof constructor) {\\n    return constructor.prototype;\\n  } return object instanceof $Object ? ObjectPrototype : null;\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 2796:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar fails = __webpack_require__(9039);\\nvar isCallable = __webpack_require__(4901);\\n\\nvar replacement = \u002F#|\\\\.prototype\\\\.\u002F;\\n\\nvar isForced = function (feature, detection) {\\n  var value = data[normalize(feature)];\\n  return value === POLYFILL ? true\\n    : value === NATIVE ? false\\n    : isCallable(detection) ? fails(detection)\\n    : !!detection;\\n};\\n\\nvar normalize = isForced.normalize = function (string) {\\n  return String(string).replace(replacement, '.').toLowerCase();\\n};\\n\\nvar data = isForced.data = {};\\nvar NATIVE = isForced.NATIVE = 'N';\\nvar POLYFILL = isForced.POLYFILL = 'P';\\n\\nmodule.exports = isForced;\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 2839:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar globalThis = __webpack_require__(4576);\\n\\nvar navigator = globalThis.navigator;\\nvar userAgent = navigator && navigator.userAgent;\\n\\nmodule.exports = userAgent ? String(userAgent) : '';\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 3392:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar uncurryThis = __webpack_require__(9504);\\n\\nvar id = 0;\\nvar postfix = Math.random();\\nvar toString = uncurryThis(1.0.toString);\\n\\nmodule.exports = function (key) {\\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 3440:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar aSet = __webpack_require__(7080);\\nvar SetHelpers = __webpack_require__(4402);\\nvar clone = __webpack_require__(9286);\\nvar size = __webpack_require__(5170);\\nvar getSetRecord = __webpack_require__(3789);\\nvar iterateSet = __webpack_require__(8469);\\nvar iterateSimple = __webpack_require__(507);\\n\\nvar has = SetHelpers.has;\\nvar remove = SetHelpers.remove;\\n\\n\u002F\u002F `Set.prototype.difference` method\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\\nmodule.exports = function difference(other) {\\n  var O = aSet(this);\\n  var otherRec = getSetRecord(other);\\n  var result = clone(O);\\n  if (size(O) \u003C= otherRec.size) iterateSet(O, function (e) {\\n    if (otherRec.includes(e)) remove(result, e);\\n  });\\n  else iterateSimple(otherRec.getIterator(), function (e) {\\n    if (has(O, e)) remove(result, e);\\n  });\\n  return result;\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 3579:\\n\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar $ = __webpack_require__(6518);\\nvar call = __webpack_require__(9565);\\nvar iterate = __webpack_require__(2652);\\nvar aCallable = __webpack_require__(9306);\\nvar anObject = __webpack_require__(8551);\\nvar getIteratorDirect = __webpack_require__(1767);\\nvar iteratorClose = __webpack_require__(9539);\\nvar iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\\n\\nvar someWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('some', TypeError);\\n\\n\u002F\u002F `Iterator.prototype.some` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.some\\n$({ target: 'Iterator', proto: true, real: true, forced: someWithoutClosingOnEarlyError }, {\\n  some: function some(predicate) {\\n    anObject(this);\\n    try {\\n      aCallable(predicate);\\n    } catch (error) {\\n      iteratorClose(this, 'throw', error);\\n    }\\n\\n    if (someWithoutClosingOnEarlyError) return call(someWithoutClosingOnEarlyError, this, predicate);\\n\\n    var record = getIteratorDirect(this);\\n    var counter = 0;\\n    return iterate(record, function (value, stop) {\\n      if (predicate(value, counter++)) return stop();\\n    }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\\n  }\\n});\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 3650:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar aSet = __webpack_require__(7080);\\nvar SetHelpers = __webpack_require__(4402);\\nvar clone = __webpack_require__(9286);\\nvar getSetRecord = __webpack_require__(3789);\\nvar iterateSimple = __webpack_require__(507);\\n\\nvar add = SetHelpers.add;\\nvar has = SetHelpers.has;\\nvar remove = SetHelpers.remove;\\n\\n\u002F\u002F `Set.prototype.symmetricDifference` method\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\\nmodule.exports = function symmetricDifference(other) {\\n  var O = aSet(this);\\n  var keysIter = getSetRecord(other).getIterator();\\n  var result = clone(O);\\n  iterateSimple(keysIter, function (e) {\\n    if (has(O, e)) remove(result, e);\\n    else add(result, e);\\n  });\\n  return result;\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 3706:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar uncurryThis = __webpack_require__(9504);\\nvar isCallable = __webpack_require__(4901);\\nvar store = __webpack_require__(7629);\\n\\nvar functionToString = uncurryThis(Function.toString);\\n\\n\u002F\u002F this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\\nif (!isCallable(store.inspectSource)) {\\n  store.inspectSource = function (it) {\\n    return functionToString(it);\\n  };\\n}\\n\\nmodule.exports = store.inspectSource;\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 3717:\\n\u002F***\u002F ((__unused_webpack_module, exports) => {\\n\\n\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertysymbols -- safe\\nexports.f = Object.getOwnPropertySymbols;\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 3724:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar fails = __webpack_require__(9039);\\n\\n\u002F\u002F Detect IE8's incomplete defineProperty implementation\\nmodule.exports = !fails(function () {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- required for testing\\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\\n});\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 3789:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar aCallable = __webpack_require__(9306);\\nvar anObject = __webpack_require__(8551);\\nvar call = __webpack_require__(9565);\\nvar toIntegerOrInfinity = __webpack_require__(1291);\\nvar getIteratorDirect = __webpack_require__(1767);\\n\\nvar INVALID_SIZE = 'Invalid size';\\nvar $RangeError = RangeError;\\nvar $TypeError = TypeError;\\nvar max = Math.max;\\n\\nvar SetRecord = function (set, intSize) {\\n  this.set = set;\\n  this.size = max(intSize, 0);\\n  this.has = aCallable(set.has);\\n  this.keys = aCallable(set.keys);\\n};\\n\\nSetRecord.prototype = {\\n  getIterator: function () {\\n    return getIteratorDirect(anObject(call(this.keys, this.set)));\\n  },\\n  includes: function (it) {\\n    return call(this.has, this.set, it);\\n  }\\n};\\n\\n\u002F\u002F `GetSetRecord` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-set-methods\u002F#sec-getsetrecord\\nmodule.exports = function (obj) {\\n  anObject(obj);\\n  var numSize = +obj.size;\\n  \u002F\u002F NOTE: If size is undefined, then numSize will be NaN\\n  \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\\n  if (numSize !== numSize) throw new $TypeError(INVALID_SIZE);\\n  var intSize = toIntegerOrInfinity(numSize);\\n  if (intSize \u003C 0) throw new $RangeError(INVALID_SIZE);\\n  return new SetRecord(obj, intSize);\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 3838:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar aSet = __webpack_require__(7080);\\nvar size = __webpack_require__(5170);\\nvar iterate = __webpack_require__(8469);\\nvar getSetRecord = __webpack_require__(3789);\\n\\n\u002F\u002F `Set.prototype.isSubsetOf` method\\n\u002F\u002F https:\u002F\u002Ftc39.github.io\u002Fproposal-set-methods\u002F#Set.prototype.isSubsetOf\\nmodule.exports = function isSubsetOf(other) {\\n  var O = aSet(this);\\n  var otherRec = getSetRecord(other);\\n  if (size(O) > otherRec.size) return false;\\n  return iterate(O, function (e) {\\n    if (!otherRec.includes(e)) return false;\\n  }, true) !== false;\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 3853:\\n\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar $ = __webpack_require__(6518);\\nvar isDisjointFrom = __webpack_require__(4449);\\nvar setMethodAcceptSetLike = __webpack_require__(4916);\\n\\nvar INCORRECT = !setMethodAcceptSetLike('isDisjointFrom', function (result) {\\n  return !result;\\n});\\n\\n\u002F\u002F `Set.prototype.isDisjointFrom` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.isdisjointfrom\\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\\n  isDisjointFrom: isDisjointFrom\\n});\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 4055:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar globalThis = __webpack_require__(4576);\\nvar isObject = __webpack_require__(34);\\n\\nvar document = globalThis.document;\\n\u002F\u002F typeof document.createElement is 'object' in old IE\\nvar EXISTS = isObject(document) && isObject(document.createElement);\\n\\nmodule.exports = function (it) {\\n  return EXISTS ? document.createElement(it) : {};\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 4114:\\n\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar $ = __webpack_require__(6518);\\nvar toObject = __webpack_require__(8981);\\nvar lengthOfArrayLike = __webpack_require__(6198);\\nvar setArrayLength = __webpack_require__(4527);\\nvar doesNotExceedSafeInteger = __webpack_require__(6837);\\nvar fails = __webpack_require__(9039);\\n\\nvar INCORRECT_TO_LENGTH = fails(function () {\\n  return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\\n});\\n\\n\u002F\u002F V8 \u003C= 121 and Safari \u003C= 15.4; FF \u003C 23 throws InternalError\\n\u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=12681\\nvar properErrorOnNonWritableLength = function () {\\n  try {\\n    \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\\n    Object.defineProperty([], 'length', { writable: false }).push();\\n  } catch (error) {\\n    return error instanceof TypeError;\\n  }\\n};\\n\\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\\n\\n\u002F\u002F `Array.prototype.push` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-array.prototype.push\\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\\n  \u002F\u002F eslint-disable-next-line no-unused-vars -- required for `.length`\\n  push: function push(item) {\\n    var O = toObject(this);\\n    var len = lengthOfArrayLike(O);\\n    var argCount = arguments.length;\\n    doesNotExceedSafeInteger(len + argCount);\\n    for (var i = 0; i \u003C argCount; i++) {\\n      O[len] = arguments[i];\\n      len++;\\n    }\\n    setArrayLength(O, len);\\n    return len;\\n  }\\n});\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 4117:\\n\u002F***\u002F ((module) => {\\n\\n\\n\u002F\u002F we can't use just `it == null` since of `document.all` special case\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-IsHTMLDDA-internal-slot-aec\\nmodule.exports = function (it) {\\n  return it === null || it === undefined;\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 4204:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar aSet = __webpack_require__(7080);\\nvar add = (__webpack_require__(4402).add);\\nvar clone = __webpack_require__(9286);\\nvar getSetRecord = __webpack_require__(3789);\\nvar iterateSimple = __webpack_require__(507);\\n\\n\u002F\u002F `Set.prototype.union` method\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\\nmodule.exports = function union(other) {\\n  var O = aSet(this);\\n  var keysIter = getSetRecord(other).getIterator();\\n  var result = clone(O);\\n  iterateSimple(keysIter, function (it) {\\n    add(result, it);\\n  });\\n  return result;\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 4209:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar wellKnownSymbol = __webpack_require__(8227);\\nvar Iterators = __webpack_require__(6269);\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\nvar ArrayPrototype = Array.prototype;\\n\\n\u002F\u002F check on default Array iterator\\nmodule.exports = function (it) {\\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 4270:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar call = __webpack_require__(9565);\\nvar isCallable = __webpack_require__(4901);\\nvar isObject = __webpack_require__(34);\\n\\nvar $TypeError = TypeError;\\n\\n\u002F\u002F `OrdinaryToPrimitive` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-ordinarytoprimitive\\nmodule.exports = function (input, pref) {\\n  var fn, val;\\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\\n  throw new $TypeError(\\\"Can't convert object to primitive value\\\");\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 4376:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar classof = __webpack_require__(2195);\\n\\n\u002F\u002F `IsArray` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-isarray\\n\u002F\u002F eslint-disable-next-line es\u002Fno-array-isarray -- safe\\nmodule.exports = Array.isArray || function isArray(argument) {\\n  return classof(argument) === 'Array';\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 4402:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar uncurryThis = __webpack_require__(9504);\\n\\n\u002F\u002F eslint-disable-next-line es\u002Fno-set -- safe\\nvar SetPrototype = Set.prototype;\\n\\nmodule.exports = {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-set -- safe\\n  Set: Set,\\n  add: uncurryThis(SetPrototype.add),\\n  has: uncurryThis(SetPrototype.has),\\n  remove: uncurryThis(SetPrototype['delete']),\\n  proto: SetPrototype\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 4449:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar aSet = __webpack_require__(7080);\\nvar has = (__webpack_require__(4402).has);\\nvar size = __webpack_require__(5170);\\nvar getSetRecord = __webpack_require__(3789);\\nvar iterateSet = __webpack_require__(8469);\\nvar iterateSimple = __webpack_require__(507);\\nvar iteratorClose = __webpack_require__(9539);\\n\\n\u002F\u002F `Set.prototype.isDisjointFrom` method\\n\u002F\u002F https:\u002F\u002Ftc39.github.io\u002Fproposal-set-methods\u002F#Set.prototype.isDisjointFrom\\nmodule.exports = function isDisjointFrom(other) {\\n  var O = aSet(this);\\n  var otherRec = getSetRecord(other);\\n  if (size(O) \u003C= otherRec.size) return iterateSet(O, function (e) {\\n    if (otherRec.includes(e)) return false;\\n  }, true) !== false;\\n  var iterator = otherRec.getIterator();\\n  return iterateSimple(iterator, function (e) {\\n    if (has(O, e)) return iteratorClose(iterator, 'normal', false);\\n  }) !== false;\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 4495:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\n\u002F* eslint-disable es\u002Fno-symbol -- required for testing *\u002F\\nvar V8_VERSION = __webpack_require__(9519);\\nvar fails = __webpack_require__(9039);\\nvar globalThis = __webpack_require__(4576);\\n\\nvar $String = globalThis.String;\\n\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertysymbols -- required for testing\\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\\n  var symbol = Symbol('symbol detection');\\n  \u002F\u002F Chrome 38 Symbol has incorrect toString conversion\\n  \u002F\u002F `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\\n  \u002F\u002F nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\\n  \u002F\u002F of course, fail.\\n  return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\\n    \u002F\u002F Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\\n    !Symbol.sham && V8_VERSION && V8_VERSION \u003C 41;\\n});\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 4527:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar DESCRIPTORS = __webpack_require__(3724);\\nvar isArray = __webpack_require__(4376);\\n\\nvar $TypeError = TypeError;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\n\\n\u002F\u002F Safari \u003C 13 does not throw an error in this case\\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\\n  \u002F\u002F makes no sense without proper strict mode support\\n  if (this !== undefined) return true;\\n  try {\\n    \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\\n    Object.defineProperty([], 'length', { writable: false }).length = 1;\\n  } catch (error) {\\n    return error instanceof TypeError;\\n  }\\n}();\\n\\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\\n  if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\\n    throw new $TypeError('Cannot set read only .length');\\n  } return O.length = length;\\n} : function (O, length) {\\n  return O.length = length;\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 4549:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar globalThis = __webpack_require__(4576);\\n\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fecma262\u002Fpull\u002F3467\\nmodule.exports = function (METHOD_NAME, ExpectedError) {\\n  var Iterator = globalThis.Iterator;\\n  var IteratorPrototype = Iterator && Iterator.prototype;\\n  var method = IteratorPrototype && IteratorPrototype[METHOD_NAME];\\n\\n  var CLOSED = false;\\n\\n  if (method) try {\\n    method.call({\\n      next: function () { return { done: true }; },\\n      'return': function () { CLOSED = true; }\\n    }, -1);\\n  } catch (error) {\\n    \u002F\u002F https:\u002F\u002Fbugs.webkit.org\u002Fshow_bug.cgi?id=291195\\n    if (!(error instanceof ExpectedError)) CLOSED = false;\\n  }\\n\\n  if (!CLOSED) return method;\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 4576:\\n\u002F***\u002F (function(module) {\\n\\n\\nvar check = function (it) {\\n  return it && it.Math === Math && it;\\n};\\n\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F86#issuecomment-115759028\\nmodule.exports =\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-global-this -- safe\\n  check(typeof globalThis == 'object' && globalThis) ||\\n  check(typeof window == 'object' && window) ||\\n  \u002F\u002F eslint-disable-next-line no-restricted-globals -- safe\\n  check(typeof self == 'object' && self) ||\\n  check(typeof global == 'object' && global) ||\\n  check(typeof this == 'object' && this) ||\\n  \u002F\u002F eslint-disable-next-line no-new-func -- fallback\\n  (function () { return this; })() || Function('return this')();\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 4659:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar DESCRIPTORS = __webpack_require__(3724);\\nvar definePropertyModule = __webpack_require__(4913);\\nvar createPropertyDescriptor = __webpack_require__(6980);\\n\\nmodule.exports = function (object, key, value) {\\n  if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));\\n  else object[key] = value;\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 4901:\\n\u002F***\u002F ((module) => {\\n\\n\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-IsHTMLDDA-internal-slot\\nvar documentAll = typeof document == 'object' && document.all;\\n\\n\u002F\u002F `IsCallable` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iscallable\\n\u002F\u002F eslint-disable-next-line unicorn\u002Fno-typeof-undefined -- required for testing\\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\\n  return typeof argument == 'function' || argument === documentAll;\\n} : function (argument) {\\n  return typeof argument == 'function';\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 4913:\\n\u002F***\u002F ((__unused_webpack_module, exports, __webpack_require__) => {\\n\\n\\nvar DESCRIPTORS = __webpack_require__(3724);\\nvar IE8_DOM_DEFINE = __webpack_require__(5917);\\nvar V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(8686);\\nvar anObject = __webpack_require__(8551);\\nvar toPropertyKey = __webpack_require__(6969);\\n\\nvar $TypeError = TypeError;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\\nvar $defineProperty = Object.defineProperty;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\nvar ENUMERABLE = 'enumerable';\\nvar CONFIGURABLE = 'configurable';\\nvar WRITABLE = 'writable';\\n\\n\u002F\u002F `Object.defineProperty` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.defineproperty\\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\\n  anObject(O);\\n  P = toPropertyKey(P);\\n  anObject(Attributes);\\n  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\\n    var current = $getOwnPropertyDescriptor(O, P);\\n    if (current && current[WRITABLE]) {\\n      O[P] = Attributes.value;\\n      Attributes = {\\n        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\\n        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\\n        writable: false\\n      };\\n    }\\n  } return $defineProperty(O, P, Attributes);\\n} : $defineProperty : function defineProperty(O, P, Attributes) {\\n  anObject(O);\\n  P = toPropertyKey(P);\\n  anObject(Attributes);\\n  if (IE8_DOM_DEFINE) try {\\n    return $defineProperty(O, P, Attributes);\\n  } catch (error) { \u002F* empty *\u002F }\\n  if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\\n  if ('value' in Attributes) O[P] = Attributes.value;\\n  return O;\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 4916:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar getBuiltIn = __webpack_require__(7751);\\n\\nvar createSetLike = function (size) {\\n  return {\\n    size: size,\\n    has: function () {\\n      return false;\\n    },\\n    keys: function () {\\n      return {\\n        next: function () {\\n          return { done: true };\\n        }\\n      };\\n    }\\n  };\\n};\\n\\nvar createSetLikeWithInfinitySize = function (size) {\\n  return {\\n    size: size,\\n    has: function () {\\n      return true;\\n    },\\n    keys: function () {\\n      throw new Error('e');\\n    }\\n  };\\n};\\n\\nmodule.exports = function (name, callback) {\\n  var Set = getBuiltIn('Set');\\n  try {\\n    new Set()[name](createSetLike(0));\\n    try {\\n      \u002F\u002F late spec change, early WebKit ~ Safari 17 implementation does not pass it\\n      \u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\u002Fpull\u002F88\\n      \u002F\u002F also covered engines with\\n      \u002F\u002F https:\u002F\u002Fbugs.webkit.org\u002Fshow_bug.cgi?id=272679\\n      new Set()[name](createSetLike(-1));\\n      return false;\\n    } catch (error2) {\\n      if (!callback) return true;\\n      \u002F\u002F early V8 implementation bug\\n      \u002F\u002F https:\u002F\u002Fissues.chromium.org\u002Fissues\u002F351332634\\n      try {\\n        new Set()[name](createSetLikeWithInfinitySize(-Infinity));\\n        return false;\\n      } catch (error) {\\n        var set = new Set();\\n        set.add(1);\\n        set.add(2);\\n        return callback(set[name](createSetLikeWithInfinitySize(Infinity)));\\n      }\\n    }\\n  } catch (error) {\\n    return false;\\n  }\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 5024:\\n\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar $ = __webpack_require__(6518);\\nvar symmetricDifference = __webpack_require__(3650);\\nvar setMethodAcceptSetLike = __webpack_require__(4916);\\n\\n\u002F\u002F `Set.prototype.symmetricDifference` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.symmetricdifference\\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('symmetricDifference') }, {\\n  symmetricDifference: symmetricDifference\\n});\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 5031:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar getBuiltIn = __webpack_require__(7751);\\nvar uncurryThis = __webpack_require__(9504);\\nvar getOwnPropertyNamesModule = __webpack_require__(8480);\\nvar getOwnPropertySymbolsModule = __webpack_require__(3717);\\nvar anObject = __webpack_require__(8551);\\n\\nvar concat = uncurryThis([].concat);\\n\\n\u002F\u002F all object keys, includes non-enumerable and symbols\\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\\n  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 5170:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar uncurryThisAccessor = __webpack_require__(6706);\\nvar SetHelpers = __webpack_require__(4402);\\n\\nmodule.exports = uncurryThisAccessor(SetHelpers.proto, 'size', 'get') || function (set) {\\n  return set.size;\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 5397:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\n\u002F\u002F toObject with fallback for non-array-like ES3 strings\\nvar IndexedObject = __webpack_require__(7055);\\nvar requireObjectCoercible = __webpack_require__(7750);\\n\\nmodule.exports = function (it) {\\n  return IndexedObject(requireObjectCoercible(it));\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 5610:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar toIntegerOrInfinity = __webpack_require__(1291);\\n\\nvar max = Math.max;\\nvar min = Math.min;\\n\\n\u002F\u002F Helper for a popular repeating case of the spec:\\n\u002F\u002F Let integer be ? ToInteger(index).\\n\u002F\u002F If integer \u003C 0, let result be max((length + integer), 0); else let result be min(integer, length).\\nmodule.exports = function (index, length) {\\n  var integer = toIntegerOrInfinity(index);\\n  return integer \u003C 0 ? max(integer + length, 0) : min(integer, length);\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 5745:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar store = __webpack_require__(7629);\\n\\nmodule.exports = function (key, value) {\\n  return store[key] || (store[key] = value || {});\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 5876:\\n\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar $ = __webpack_require__(6518);\\nvar isSubsetOf = __webpack_require__(3838);\\nvar setMethodAcceptSetLike = __webpack_require__(4916);\\n\\nvar INCORRECT = !setMethodAcceptSetLike('isSubsetOf', function (result) {\\n  return result;\\n});\\n\\n\u002F\u002F `Set.prototype.isSubsetOf` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.issubsetof\\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\\n  isSubsetOf: isSubsetOf\\n});\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 5917:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar DESCRIPTORS = __webpack_require__(3724);\\nvar fails = __webpack_require__(9039);\\nvar createElement = __webpack_require__(4055);\\n\\n\u002F\u002F Thanks to IE8 for its funny defineProperty\\nmodule.exports = !DESCRIPTORS && !fails(function () {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- required for testing\\n  return Object.defineProperty(createElement('div'), 'a', {\\n    get: function () { return 7; }\\n  }).a !== 7;\\n});\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 5966:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar aCallable = __webpack_require__(9306);\\nvar isNullOrUndefined = __webpack_require__(4117);\\n\\n\u002F\u002F `GetMethod` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-getmethod\\nmodule.exports = function (V, P) {\\n  var func = V[P];\\n  return isNullOrUndefined(func) ? undefined : aCallable(func);\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 6080:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar uncurryThis = __webpack_require__(7476);\\nvar aCallable = __webpack_require__(9306);\\nvar NATIVE_BIND = __webpack_require__(616);\\n\\nvar bind = uncurryThis(uncurryThis.bind);\\n\\n\u002F\u002F optional \u002F simple context binding\\nmodule.exports = function (fn, that) {\\n  aCallable(fn);\\n  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (\u002F* ...args *\u002F) {\\n    return fn.apply(that, arguments);\\n  };\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 6119:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar shared = __webpack_require__(5745);\\nvar uid = __webpack_require__(3392);\\n\\nvar keys = shared('keys');\\n\\nmodule.exports = function (key) {\\n  return keys[key] || (keys[key] = uid(key));\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 6198:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar toLength = __webpack_require__(8014);\\n\\n\u002F\u002F `LengthOfArrayLike` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-lengthofarraylike\\nmodule.exports = function (obj) {\\n  return toLength(obj.length);\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 6269:\\n\u002F***\u002F ((module) => {\\n\\n\\nmodule.exports = {};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 6279:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar defineBuiltIn = __webpack_require__(6840);\\n\\nmodule.exports = function (target, src, options) {\\n  for (var key in src) defineBuiltIn(target, key, src[key], options);\\n  return target;\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 6319:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar anObject = __webpack_require__(8551);\\nvar iteratorClose = __webpack_require__(9539);\\n\\n\u002F\u002F call something on iterator step with safe closing on error\\nmodule.exports = function (iterator, fn, value, ENTRIES) {\\n  try {\\n    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\\n  } catch (error) {\\n    iteratorClose(iterator, 'throw', error);\\n  }\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 6395:\\n\u002F***\u002F ((module) => {\\n\\n\\nmodule.exports = false;\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 6518:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar globalThis = __webpack_require__(4576);\\nvar getOwnPropertyDescriptor = (__webpack_require__(7347).f);\\nvar createNonEnumerableProperty = __webpack_require__(6699);\\nvar defineBuiltIn = __webpack_require__(6840);\\nvar defineGlobalProperty = __webpack_require__(9433);\\nvar copyConstructorProperties = __webpack_require__(7740);\\nvar isForced = __webpack_require__(2796);\\n\\n\u002F*\\n  options.target         - name of the target object\\n  options.global         - target is the global object\\n  options.stat           - export as static methods of target\\n  options.proto          - export as prototype methods of target\\n  options.real           - real prototype method for the `pure` version\\n  options.forced         - export even if the native feature is available\\n  options.bind           - bind methods to the target, required for the `pure` version\\n  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version\\n  options.unsafe         - use the simple assignment of property instead of delete + defineProperty\\n  options.sham           - add a flag to not completely full polyfills\\n  options.enumerable     - export as enumerable property\\n  options.dontCallGetSet - prevent calling a getter on target\\n  options.name           - the .name of the function if it does not match the key\\n*\u002F\\nmodule.exports = function (options, source) {\\n  var TARGET = options.target;\\n  var GLOBAL = options.global;\\n  var STATIC = options.stat;\\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\\n  if (GLOBAL) {\\n    target = globalThis;\\n  } else if (STATIC) {\\n    target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\\n  } else {\\n    target = globalThis[TARGET] && globalThis[TARGET].prototype;\\n  }\\n  if (target) for (key in source) {\\n    sourceProperty = source[key];\\n    if (options.dontCallGetSet) {\\n      descriptor = getOwnPropertyDescriptor(target, key);\\n      targetProperty = descriptor && descriptor.value;\\n    } else targetProperty = target[key];\\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\\n    \u002F\u002F contained in target\\n    if (!FORCED && targetProperty !== undefined) {\\n      if (typeof sourceProperty == typeof targetProperty) continue;\\n      copyConstructorProperties(sourceProperty, targetProperty);\\n    }\\n    \u002F\u002F add a flag to not completely full polyfills\\n    if (options.sham || (targetProperty && targetProperty.sham)) {\\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\\n    }\\n    defineBuiltIn(target, key, sourceProperty, options);\\n  }\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 6699:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar DESCRIPTORS = __webpack_require__(3724);\\nvar definePropertyModule = __webpack_require__(4913);\\nvar createPropertyDescriptor = __webpack_require__(6980);\\n\\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\\n} : function (object, key, value) {\\n  object[key] = value;\\n  return object;\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 6706:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar uncurryThis = __webpack_require__(9504);\\nvar aCallable = __webpack_require__(9306);\\n\\nmodule.exports = function (object, key, method) {\\n  try {\\n    \u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\n    return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\\n  } catch (error) { \u002F* empty *\u002F }\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 6801:\\n\u002F***\u002F ((__unused_webpack_module, exports, __webpack_require__) => {\\n\\n\\nvar DESCRIPTORS = __webpack_require__(3724);\\nvar V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(8686);\\nvar definePropertyModule = __webpack_require__(4913);\\nvar anObject = __webpack_require__(8551);\\nvar toIndexedObject = __webpack_require__(5397);\\nvar objectKeys = __webpack_require__(1072);\\n\\n\u002F\u002F `Object.defineProperties` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.defineproperties\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperties -- safe\\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\\n  anObject(O);\\n  var props = toIndexedObject(Properties);\\n  var keys = objectKeys(Properties);\\n  var length = keys.length;\\n  var index = 0;\\n  var key;\\n  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\\n  return O;\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 6823:\\n\u002F***\u002F ((module) => {\\n\\n\\nvar $String = String;\\n\\nmodule.exports = function (argument) {\\n  try {\\n    return $String(argument);\\n  } catch (error) {\\n    return 'Object';\\n  }\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 6837:\\n\u002F***\u002F ((module) => {\\n\\n\\nvar $TypeError = TypeError;\\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; \u002F\u002F 2 ** 53 - 1 == 9007199254740991\\n\\nmodule.exports = function (it) {\\n  if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\\n  return it;\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 6840:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar isCallable = __webpack_require__(4901);\\nvar definePropertyModule = __webpack_require__(4913);\\nvar makeBuiltIn = __webpack_require__(283);\\nvar defineGlobalProperty = __webpack_require__(9433);\\n\\nmodule.exports = function (O, key, value, options) {\\n  if (!options) options = {};\\n  var simple = options.enumerable;\\n  var name = options.name !== undefined ? options.name : key;\\n  if (isCallable(value)) makeBuiltIn(value, name, options);\\n  if (options.global) {\\n    if (simple) O[key] = value;\\n    else defineGlobalProperty(key, value);\\n  } else {\\n    try {\\n      if (!options.unsafe) delete O[key];\\n      else if (O[key]) simple = true;\\n    } catch (error) { \u002F* empty *\u002F }\\n    if (simple) O[key] = value;\\n    else definePropertyModule.f(O, key, {\\n      value: value,\\n      enumerable: false,\\n      configurable: !options.nonConfigurable,\\n      writable: !options.nonWritable\\n    });\\n  } return O;\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 6955:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar TO_STRING_TAG_SUPPORT = __webpack_require__(2140);\\nvar isCallable = __webpack_require__(4901);\\nvar classofRaw = __webpack_require__(2195);\\nvar wellKnownSymbol = __webpack_require__(8227);\\n\\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\\nvar $Object = Object;\\n\\n\u002F\u002F ES3 wrong here\\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\\n\\n\u002F\u002F fallback for IE11 Script Access Denied error\\nvar tryGet = function (it, key) {\\n  try {\\n    return it[key];\\n  } catch (error) { \u002F* empty *\u002F }\\n};\\n\\n\u002F\u002F getting tag from ES6+ `Object.prototype.toString`\\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\\n  var O, tag, result;\\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\\n    \u002F\u002F @@toStringTag case\\n    : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\\n    \u002F\u002F builtinTag case\\n    : CORRECT_ARGUMENTS ? classofRaw(O)\\n    \u002F\u002F ES3 arguments fallback\\n    : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 6969:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar toPrimitive = __webpack_require__(2777);\\nvar isSymbol = __webpack_require__(757);\\n\\n\u002F\u002F `ToPropertyKey` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-topropertykey\\nmodule.exports = function (argument) {\\n  var key = toPrimitive(argument, 'string');\\n  return isSymbol(key) ? key : key + '';\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 6980:\\n\u002F***\u002F ((module) => {\\n\\n\\nmodule.exports = function (bitmap, value) {\\n  return {\\n    enumerable: !(bitmap & 1),\\n    configurable: !(bitmap & 2),\\n    writable: !(bitmap & 4),\\n    value: value\\n  };\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 7040:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\n\u002F* eslint-disable es\u002Fno-symbol -- required for testing *\u002F\\nvar NATIVE_SYMBOL = __webpack_require__(4495);\\n\\nmodule.exports = NATIVE_SYMBOL &&\\n  !Symbol.sham &&\\n  typeof Symbol.iterator == 'symbol';\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 7055:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar uncurryThis = __webpack_require__(9504);\\nvar fails = __webpack_require__(9039);\\nvar classof = __webpack_require__(2195);\\n\\nvar $Object = Object;\\nvar split = uncurryThis(''.split);\\n\\n\u002F\u002F fallback for non-array-like ES3 and non-enumerable old V8 strings\\nmodule.exports = fails(function () {\\n  \u002F\u002F throws an error in rhino, see https:\u002F\u002Fgithub.com\u002Fmozilla\u002Frhino\u002Fissues\u002F346\\n  \u002F\u002F eslint-disable-next-line no-prototype-builtins -- safe\\n  return !$Object('z').propertyIsEnumerable(0);\\n}) ? function (it) {\\n  return classof(it) === 'String' ? split(it, '') : $Object(it);\\n} : $Object;\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 7080:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar has = (__webpack_require__(4402).has);\\n\\n\u002F\u002F Perform ? RequireInternalSlot(M, [[SetData]])\\nmodule.exports = function (it) {\\n  has(it);\\n  return it;\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 7347:\\n\u002F***\u002F ((__unused_webpack_module, exports, __webpack_require__) => {\\n\\n\\nvar DESCRIPTORS = __webpack_require__(3724);\\nvar call = __webpack_require__(9565);\\nvar propertyIsEnumerableModule = __webpack_require__(8773);\\nvar createPropertyDescriptor = __webpack_require__(6980);\\nvar toIndexedObject = __webpack_require__(5397);\\nvar toPropertyKey = __webpack_require__(6969);\\nvar hasOwn = __webpack_require__(9297);\\nvar IE8_DOM_DEFINE = __webpack_require__(5917);\\n\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\n\\n\u002F\u002F `Object.getOwnPropertyDescriptor` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.getownpropertydescriptor\\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\\n  O = toIndexedObject(O);\\n  P = toPropertyKey(P);\\n  if (IE8_DOM_DEFINE) try {\\n    return $getOwnPropertyDescriptor(O, P);\\n  } catch (error) { \u002F* empty *\u002F }\\n  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 7476:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar classofRaw = __webpack_require__(2195);\\nvar uncurryThis = __webpack_require__(9504);\\n\\nmodule.exports = function (fn) {\\n  \u002F\u002F Nashorn bug:\\n  \u002F\u002F   https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F1128\\n  \u002F\u002F   https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F1130\\n  if (classofRaw(fn) === 'Function') return uncurryThis(fn);\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 7588:\\n\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar $ = __webpack_require__(6518);\\nvar call = __webpack_require__(9565);\\nvar iterate = __webpack_require__(2652);\\nvar aCallable = __webpack_require__(9306);\\nvar anObject = __webpack_require__(8551);\\nvar getIteratorDirect = __webpack_require__(1767);\\nvar iteratorClose = __webpack_require__(9539);\\nvar iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\\n\\nvar forEachWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('forEach', TypeError);\\n\\n\u002F\u002F `Iterator.prototype.forEach` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.foreach\\n$({ target: 'Iterator', proto: true, real: true, forced: forEachWithoutClosingOnEarlyError }, {\\n  forEach: function forEach(fn) {\\n    anObject(this);\\n    try {\\n      aCallable(fn);\\n    } catch (error) {\\n      iteratorClose(this, 'throw', error);\\n    }\\n\\n    if (forEachWithoutClosingOnEarlyError) return call(forEachWithoutClosingOnEarlyError, this, fn);\\n\\n    var record = getIteratorDirect(this);\\n    var counter = 0;\\n    iterate(record, function (value) {\\n      fn(value, counter++);\\n    }, { IS_RECORD: true });\\n  }\\n});\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 7629:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar IS_PURE = __webpack_require__(6395);\\nvar globalThis = __webpack_require__(4576);\\nvar defineGlobalProperty = __webpack_require__(9433);\\n\\nvar SHARED = '__core-js_shared__';\\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\\n\\n(store.versions || (store.versions = [])).push({\\n  version: '3.42.0',\\n  mode: IS_PURE ? 'pure' : 'global',\\n  copyright: '\\xA9 2014-2025 Denis Pushkarev (zloirock.ru)',\\n  license: 'https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fv3.42.0\u002FLICENSE',\\n  source: 'https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js'\\n});\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 7642:\\n\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar $ = __webpack_require__(6518);\\nvar difference = __webpack_require__(3440);\\nvar setMethodAcceptSetLike = __webpack_require__(4916);\\n\\nvar INCORRECT = !setMethodAcceptSetLike('difference', function (result) {\\n  return result.size === 0;\\n});\\n\\n\u002F\u002F `Set.prototype.difference` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.difference\\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\\n  difference: difference\\n});\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 7657:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar fails = __webpack_require__(9039);\\nvar isCallable = __webpack_require__(4901);\\nvar isObject = __webpack_require__(34);\\nvar create = __webpack_require__(2360);\\nvar getPrototypeOf = __webpack_require__(2787);\\nvar defineBuiltIn = __webpack_require__(6840);\\nvar wellKnownSymbol = __webpack_require__(8227);\\nvar IS_PURE = __webpack_require__(6395);\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\nvar BUGGY_SAFARI_ITERATORS = false;\\n\\n\u002F\u002F `%IteratorPrototype%` object\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-%iteratorprototype%-object\\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\\n\\n\u002F* eslint-disable es\u002Fno-array-prototype-keys -- safe *\u002F\\nif ([].keys) {\\n  arrayIterator = [].keys();\\n  \u002F\u002F Safari 8 has buggy iterators w\u002Fo `next`\\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\\n  else {\\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\\n  }\\n}\\n\\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\\n  var test = {};\\n  \u002F\u002F FF44- legacy iterators case\\n  return IteratorPrototype[ITERATOR].call(test) !== test;\\n});\\n\\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\\n\\n\u002F\u002F `%IteratorPrototype%[@@iterator]()` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-%iteratorprototype%-@@iterator\\nif (!isCallable(IteratorPrototype[ITERATOR])) {\\n  defineBuiltIn(IteratorPrototype, ITERATOR, function () {\\n    return this;\\n  });\\n}\\n\\nmodule.exports = {\\n  IteratorPrototype: IteratorPrototype,\\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 7740:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar hasOwn = __webpack_require__(9297);\\nvar ownKeys = __webpack_require__(5031);\\nvar getOwnPropertyDescriptorModule = __webpack_require__(7347);\\nvar definePropertyModule = __webpack_require__(4913);\\n\\nmodule.exports = function (target, source, exceptions) {\\n  var keys = ownKeys(source);\\n  var defineProperty = definePropertyModule.f;\\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\\n  for (var i = 0; i \u003C keys.length; i++) {\\n    var key = keys[i];\\n    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\\n    }\\n  }\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 7750:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar isNullOrUndefined = __webpack_require__(4117);\\n\\nvar $TypeError = TypeError;\\n\\n\u002F\u002F `RequireObjectCoercible` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-requireobjectcoercible\\nmodule.exports = function (it) {\\n  if (isNullOrUndefined(it)) throw new $TypeError(\\\"Can't call method on \\\" + it);\\n  return it;\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 7751:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar globalThis = __webpack_require__(4576);\\nvar isCallable = __webpack_require__(4901);\\n\\nvar aFunction = function (argument) {\\n  return isCallable(argument) ? argument : undefined;\\n};\\n\\nmodule.exports = function (namespace, method) {\\n  return arguments.length \u003C 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 7979:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar anObject = __webpack_require__(8551);\\n\\n\u002F\u002F `RegExp.prototype.flags` getter implementation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-get-regexp.prototype.flags\\nmodule.exports = function () {\\n  var that = anObject(this);\\n  var result = '';\\n  if (that.hasIndices) result += 'd';\\n  if (that.global) result += 'g';\\n  if (that.ignoreCase) result += 'i';\\n  if (that.multiline) result += 'm';\\n  if (that.dotAll) result += 's';\\n  if (that.unicode) result += 'u';\\n  if (that.unicodeSets) result += 'v';\\n  if (that.sticky) result += 'y';\\n  return result;\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 8004:\\n\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar $ = __webpack_require__(6518);\\nvar fails = __webpack_require__(9039);\\nvar intersection = __webpack_require__(8750);\\nvar setMethodAcceptSetLike = __webpack_require__(4916);\\n\\nvar INCORRECT = !setMethodAcceptSetLike('intersection', function (result) {\\n  return result.size === 2 && result.has(1) && result.has(2);\\n}) || fails(function () {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-array-from, es\u002Fno-set, es\u002Fno-set-prototype-intersection -- testing\\n  return String(Array.from(new Set([1, 2, 3]).intersection(new Set([3, 2])))) !== '3,2';\\n});\\n\\n\u002F\u002F `Set.prototype.intersection` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.intersection\\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\\n  intersection: intersection\\n});\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 8014:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar toIntegerOrInfinity = __webpack_require__(1291);\\n\\nvar min = Math.min;\\n\\n\u002F\u002F `ToLength` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-tolength\\nmodule.exports = function (argument) {\\n  var len = toIntegerOrInfinity(argument);\\n  return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; \u002F\u002F 2 ** 53 - 1 == 9007199254740991\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 8111:\\n\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar $ = __webpack_require__(6518);\\nvar globalThis = __webpack_require__(4576);\\nvar anInstance = __webpack_require__(679);\\nvar anObject = __webpack_require__(8551);\\nvar isCallable = __webpack_require__(4901);\\nvar getPrototypeOf = __webpack_require__(2787);\\nvar defineBuiltInAccessor = __webpack_require__(2106);\\nvar createProperty = __webpack_require__(4659);\\nvar fails = __webpack_require__(9039);\\nvar hasOwn = __webpack_require__(9297);\\nvar wellKnownSymbol = __webpack_require__(8227);\\nvar IteratorPrototype = (__webpack_require__(7657).IteratorPrototype);\\nvar DESCRIPTORS = __webpack_require__(3724);\\nvar IS_PURE = __webpack_require__(6395);\\n\\nvar CONSTRUCTOR = 'constructor';\\nvar ITERATOR = 'Iterator';\\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\\n\\nvar $TypeError = TypeError;\\nvar NativeIterator = globalThis[ITERATOR];\\n\\n\u002F\u002F FF56- have non-standard global helper `Iterator`\\nvar FORCED = IS_PURE\\n  || !isCallable(NativeIterator)\\n  || NativeIterator.prototype !== IteratorPrototype\\n  \u002F\u002F FF44- non-standard `Iterator` passes previous tests\\n  || !fails(function () { NativeIterator({}); });\\n\\nvar IteratorConstructor = function Iterator() {\\n  anInstance(this, IteratorPrototype);\\n  if (getPrototypeOf(this) === IteratorPrototype) throw new $TypeError('Abstract class Iterator not directly constructable');\\n};\\n\\nvar defineIteratorPrototypeAccessor = function (key, value) {\\n  if (DESCRIPTORS) {\\n    defineBuiltInAccessor(IteratorPrototype, key, {\\n      configurable: true,\\n      get: function () {\\n        return value;\\n      },\\n      set: function (replacement) {\\n        anObject(this);\\n        if (this === IteratorPrototype) throw new $TypeError(\\\"You can't redefine this property\\\");\\n        if (hasOwn(this, key)) this[key] = replacement;\\n        else createProperty(this, key, replacement);\\n      }\\n    });\\n  } else IteratorPrototype[key] = value;\\n};\\n\\nif (!hasOwn(IteratorPrototype, TO_STRING_TAG)) defineIteratorPrototypeAccessor(TO_STRING_TAG, ITERATOR);\\n\\nif (FORCED || !hasOwn(IteratorPrototype, CONSTRUCTOR) || IteratorPrototype[CONSTRUCTOR] === Object) {\\n  defineIteratorPrototypeAccessor(CONSTRUCTOR, IteratorConstructor);\\n}\\n\\nIteratorConstructor.prototype = IteratorPrototype;\\n\\n\u002F\u002F `Iterator` constructor\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator\\n$({ global: true, constructor: true, forced: FORCED }, {\\n  Iterator: IteratorConstructor\\n});\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 8227:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar globalThis = __webpack_require__(4576);\\nvar shared = __webpack_require__(5745);\\nvar hasOwn = __webpack_require__(9297);\\nvar uid = __webpack_require__(3392);\\nvar NATIVE_SYMBOL = __webpack_require__(4495);\\nvar USE_SYMBOL_AS_UID = __webpack_require__(7040);\\n\\nvar Symbol = globalThis.Symbol;\\nvar WellKnownSymbolsStore = shared('wks');\\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\\n\\nmodule.exports = function (name) {\\n  if (!hasOwn(WellKnownSymbolsStore, name)) {\\n    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\\n      ? Symbol[name]\\n      : createWellKnownSymbol('Symbol.' + name);\\n  } return WellKnownSymbolsStore[name];\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 8237:\\n\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar $ = __webpack_require__(6518);\\nvar iterate = __webpack_require__(2652);\\nvar aCallable = __webpack_require__(9306);\\nvar anObject = __webpack_require__(8551);\\nvar getIteratorDirect = __webpack_require__(1767);\\nvar iteratorClose = __webpack_require__(9539);\\nvar iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\\nvar apply = __webpack_require__(8745);\\nvar fails = __webpack_require__(9039);\\n\\nvar $TypeError = TypeError;\\n\\n\u002F\u002F https:\u002F\u002Fbugs.webkit.org\u002Fshow_bug.cgi?id=291651\\nvar FAILS_ON_INITIAL_UNDEFINED = fails(function () {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-iterator-prototype-reduce, es\u002Fno-array-prototype-keys, array-callback-return -- required for testing\\n  [].keys().reduce(function () { \u002F* empty *\u002F }, undefined);\\n});\\n\\nvar reduceWithoutClosingOnEarlyError = !FAILS_ON_INITIAL_UNDEFINED && iteratorHelperWithoutClosingOnEarlyError('reduce', $TypeError);\\n\\n\u002F\u002F `Iterator.prototype.reduce` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.reduce\\n$({ target: 'Iterator', proto: true, real: true, forced: FAILS_ON_INITIAL_UNDEFINED || reduceWithoutClosingOnEarlyError }, {\\n  reduce: function reduce(reducer \u002F* , initialValue *\u002F) {\\n    anObject(this);\\n    try {\\n      aCallable(reducer);\\n    } catch (error) {\\n      iteratorClose(this, 'throw', error);\\n    }\\n\\n    var noInitial = arguments.length \u003C 2;\\n    var accumulator = noInitial ? undefined : arguments[1];\\n    if (reduceWithoutClosingOnEarlyError) {\\n      return apply(reduceWithoutClosingOnEarlyError, this, noInitial ? [reducer] : [reducer, accumulator]);\\n    }\\n    var record = getIteratorDirect(this);\\n    var counter = 0;\\n    iterate(record, function (value) {\\n      if (noInitial) {\\n        noInitial = false;\\n        accumulator = value;\\n      } else {\\n        accumulator = reducer(accumulator, value, counter);\\n      }\\n      counter++;\\n    }, { IS_RECORD: true });\\n    if (noInitial) throw new $TypeError('Reduce of empty iterator with no initial value');\\n    return accumulator;\\n  }\\n});\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 8469:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar uncurryThis = __webpack_require__(9504);\\nvar iterateSimple = __webpack_require__(507);\\nvar SetHelpers = __webpack_require__(4402);\\n\\nvar Set = SetHelpers.Set;\\nvar SetPrototype = SetHelpers.proto;\\nvar forEach = uncurryThis(SetPrototype.forEach);\\nvar keys = uncurryThis(SetPrototype.keys);\\nvar next = keys(new Set()).next;\\n\\nmodule.exports = function (set, fn, interruptible) {\\n  return interruptible ? iterateSimple({ iterator: keys(set), next: next }, fn) : forEach(set, fn);\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 8480:\\n\u002F***\u002F ((__unused_webpack_module, exports, __webpack_require__) => {\\n\\n\\nvar internalObjectKeys = __webpack_require__(1828);\\nvar enumBugKeys = __webpack_require__(8727);\\n\\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\\n\\n\u002F\u002F `Object.getOwnPropertyNames` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.getownpropertynames\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertynames -- safe\\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\\n  return internalObjectKeys(O, hiddenKeys);\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 8527:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar aSet = __webpack_require__(7080);\\nvar has = (__webpack_require__(4402).has);\\nvar size = __webpack_require__(5170);\\nvar getSetRecord = __webpack_require__(3789);\\nvar iterateSimple = __webpack_require__(507);\\nvar iteratorClose = __webpack_require__(9539);\\n\\n\u002F\u002F `Set.prototype.isSupersetOf` method\\n\u002F\u002F https:\u002F\u002Ftc39.github.io\u002Fproposal-set-methods\u002F#Set.prototype.isSupersetOf\\nmodule.exports = function isSupersetOf(other) {\\n  var O = aSet(this);\\n  var otherRec = getSetRecord(other);\\n  if (size(O) \u003C otherRec.size) return false;\\n  var iterator = otherRec.getIterator();\\n  return iterateSimple(iterator, function (e) {\\n    if (!has(O, e)) return iteratorClose(iterator, 'normal', false);\\n  }) !== false;\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 8551:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar isObject = __webpack_require__(34);\\n\\nvar $String = String;\\nvar $TypeError = TypeError;\\n\\n\u002F\u002F `Assert: Type(argument) is Object`\\nmodule.exports = function (argument) {\\n  if (isObject(argument)) return argument;\\n  throw new $TypeError($String(argument) + ' is not an object');\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 8622:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar globalThis = __webpack_require__(4576);\\nvar isCallable = __webpack_require__(4901);\\n\\nvar WeakMap = globalThis.WeakMap;\\n\\nmodule.exports = isCallable(WeakMap) && \u002Fnative code\u002F.test(String(WeakMap));\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 8686:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar DESCRIPTORS = __webpack_require__(3724);\\nvar fails = __webpack_require__(9039);\\n\\n\u002F\u002F V8 ~ Chrome 36-\\n\u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=3334\\nmodule.exports = DESCRIPTORS && fails(function () {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- required for testing\\n  return Object.defineProperty(function () { \u002F* empty *\u002F }, 'prototype', {\\n    value: 42,\\n    writable: false\\n  }).prototype !== 42;\\n});\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 8727:\\n\u002F***\u002F ((module) => {\\n\\n\\n\u002F\u002F IE8- don't enum bug keys\\nmodule.exports = [\\n  'constructor',\\n  'hasOwnProperty',\\n  'isPrototypeOf',\\n  'propertyIsEnumerable',\\n  'toLocaleString',\\n  'toString',\\n  'valueOf'\\n];\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 8745:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar NATIVE_BIND = __webpack_require__(616);\\n\\nvar FunctionPrototype = Function.prototype;\\nvar apply = FunctionPrototype.apply;\\nvar call = FunctionPrototype.call;\\n\\n\u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind, es\u002Fno-reflect -- safe\\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\\n  return call.apply(apply, arguments);\\n});\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 8750:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar aSet = __webpack_require__(7080);\\nvar SetHelpers = __webpack_require__(4402);\\nvar size = __webpack_require__(5170);\\nvar getSetRecord = __webpack_require__(3789);\\nvar iterateSet = __webpack_require__(8469);\\nvar iterateSimple = __webpack_require__(507);\\n\\nvar Set = SetHelpers.Set;\\nvar add = SetHelpers.add;\\nvar has = SetHelpers.has;\\n\\n\u002F\u002F `Set.prototype.intersection` method\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\\nmodule.exports = function intersection(other) {\\n  var O = aSet(this);\\n  var otherRec = getSetRecord(other);\\n  var result = new Set();\\n\\n  if (size(O) > otherRec.size) {\\n    iterateSimple(otherRec.getIterator(), function (e) {\\n      if (has(O, e)) add(result, e);\\n    });\\n  } else {\\n    iterateSet(O, function (e) {\\n      if (otherRec.includes(e)) add(result, e);\\n    });\\n  }\\n\\n  return result;\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 8773:\\n\u002F***\u002F ((__unused_webpack_module, exports) => {\\n\\n\\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\n\\n\u002F\u002F Nashorn ~ JDK8 bug\\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\\n\\n\u002F\u002F `Object.prototype.propertyIsEnumerable` method implementation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.prototype.propertyisenumerable\\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\\n  var descriptor = getOwnPropertyDescriptor(this, V);\\n  return !!descriptor && descriptor.enumerable;\\n} : $propertyIsEnumerable;\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 8981:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar requireObjectCoercible = __webpack_require__(7750);\\n\\nvar $Object = Object;\\n\\n\u002F\u002F `ToObject` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-toobject\\nmodule.exports = function (argument) {\\n  return $Object(requireObjectCoercible(argument));\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 9039:\\n\u002F***\u002F ((module) => {\\n\\n\\nmodule.exports = function (exec) {\\n  try {\\n    return !!exec();\\n  } catch (error) {\\n    return true;\\n  }\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 9286:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar SetHelpers = __webpack_require__(4402);\\nvar iterate = __webpack_require__(8469);\\n\\nvar Set = SetHelpers.Set;\\nvar add = SetHelpers.add;\\n\\nmodule.exports = function (set) {\\n  var result = new Set();\\n  iterate(set, function (it) {\\n    add(result, it);\\n  });\\n  return result;\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 9297:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar uncurryThis = __webpack_require__(9504);\\nvar toObject = __webpack_require__(8981);\\n\\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\\n\\n\u002F\u002F `HasOwnProperty` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-hasownproperty\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-hasown -- safe\\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\\n  return hasOwnProperty(toObject(it), key);\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 9306:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar isCallable = __webpack_require__(4901);\\nvar tryToString = __webpack_require__(6823);\\n\\nvar $TypeError = TypeError;\\n\\n\u002F\u002F `Assert: IsCallable(argument) is true`\\nmodule.exports = function (argument) {\\n  if (isCallable(argument)) return argument;\\n  throw new $TypeError(tryToString(argument) + ' is not a function');\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 9433:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar globalThis = __webpack_require__(4576);\\n\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\\nvar defineProperty = Object.defineProperty;\\n\\nmodule.exports = function (key, value) {\\n  try {\\n    defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\\n  } catch (error) {\\n    globalThis[key] = value;\\n  } return value;\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 9462:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar call = __webpack_require__(9565);\\nvar create = __webpack_require__(2360);\\nvar createNonEnumerableProperty = __webpack_require__(6699);\\nvar defineBuiltIns = __webpack_require__(6279);\\nvar wellKnownSymbol = __webpack_require__(8227);\\nvar InternalStateModule = __webpack_require__(1181);\\nvar getMethod = __webpack_require__(5966);\\nvar IteratorPrototype = (__webpack_require__(7657).IteratorPrototype);\\nvar createIterResultObject = __webpack_require__(2529);\\nvar iteratorClose = __webpack_require__(9539);\\n\\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\\nvar ITERATOR_HELPER = 'IteratorHelper';\\nvar WRAP_FOR_VALID_ITERATOR = 'WrapForValidIterator';\\nvar setInternalState = InternalStateModule.set;\\n\\nvar createIteratorProxyPrototype = function (IS_ITERATOR) {\\n  var getInternalState = InternalStateModule.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER);\\n\\n  return defineBuiltIns(create(IteratorPrototype), {\\n    next: function next() {\\n      var state = getInternalState(this);\\n      \u002F\u002F for simplification:\\n      \u002F\u002F   for `%WrapForValidIteratorPrototype%.next` or with `state.returnHandlerResult` our `nextHandler` returns `IterResultObject`\\n      \u002F\u002F   for `%IteratorHelperPrototype%.next` - just a value\\n      if (IS_ITERATOR) return state.nextHandler();\\n      if (state.done) return createIterResultObject(undefined, true);\\n      try {\\n        var result = state.nextHandler();\\n        return state.returnHandlerResult ? result : createIterResultObject(result, state.done);\\n      } catch (error) {\\n        state.done = true;\\n        throw error;\\n      }\\n    },\\n    'return': function () {\\n      var state = getInternalState(this);\\n      var iterator = state.iterator;\\n      state.done = true;\\n      if (IS_ITERATOR) {\\n        var returnMethod = getMethod(iterator, 'return');\\n        return returnMethod ? call(returnMethod, iterator) : createIterResultObject(undefined, true);\\n      }\\n      if (state.inner) try {\\n        iteratorClose(state.inner.iterator, 'normal');\\n      } catch (error) {\\n        return iteratorClose(iterator, 'throw', error);\\n      }\\n      if (iterator) iteratorClose(iterator, 'normal');\\n      return createIterResultObject(undefined, true);\\n    }\\n  });\\n};\\n\\nvar WrapForValidIteratorPrototype = createIteratorProxyPrototype(true);\\nvar IteratorHelperPrototype = createIteratorProxyPrototype(false);\\n\\ncreateNonEnumerableProperty(IteratorHelperPrototype, TO_STRING_TAG, 'Iterator Helper');\\n\\nmodule.exports = function (nextHandler, IS_ITERATOR, RETURN_HANDLER_RESULT) {\\n  var IteratorProxy = function Iterator(record, state) {\\n    if (state) {\\n      state.iterator = record.iterator;\\n      state.next = record.next;\\n    } else state = record;\\n    state.type = IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER;\\n    state.returnHandlerResult = !!RETURN_HANDLER_RESULT;\\n    state.nextHandler = nextHandler;\\n    state.counter = 0;\\n    state.done = false;\\n    setInternalState(this, state);\\n  };\\n\\n  IteratorProxy.prototype = IS_ITERATOR ? WrapForValidIteratorPrototype : IteratorHelperPrototype;\\n\\n  return IteratorProxy;\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 9479:\\n\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar globalThis = __webpack_require__(4576);\\nvar DESCRIPTORS = __webpack_require__(3724);\\nvar defineBuiltInAccessor = __webpack_require__(2106);\\nvar regExpFlags = __webpack_require__(7979);\\nvar fails = __webpack_require__(9039);\\n\\n\u002F\u002F babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> \u002F.\u002Fd and it causes SyntaxError\\nvar RegExp = globalThis.RegExp;\\nvar RegExpPrototype = RegExp.prototype;\\n\\nvar FORCED = DESCRIPTORS && fails(function () {\\n  var INDICES_SUPPORT = true;\\n  try {\\n    RegExp('.', 'd');\\n  } catch (error) {\\n    INDICES_SUPPORT = false;\\n  }\\n\\n  var O = {};\\n  \u002F\u002F modern V8 bug\\n  var calls = '';\\n  var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';\\n\\n  var addGetter = function (key, chr) {\\n    \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\\n    Object.defineProperty(O, key, { get: function () {\\n      calls += chr;\\n      return true;\\n    } });\\n  };\\n\\n  var pairs = {\\n    dotAll: 's',\\n    global: 'g',\\n    ignoreCase: 'i',\\n    multiline: 'm',\\n    sticky: 'y'\\n  };\\n\\n  if (INDICES_SUPPORT) pairs.hasIndices = 'd';\\n\\n  for (var key in pairs) addGetter(key, pairs[key]);\\n\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\n  var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);\\n\\n  return result !== expected || calls !== expected;\\n});\\n\\n\u002F\u002F `RegExp.prototype.flags` getter\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-get-regexp.prototype.flags\\nif (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\\n  configurable: true,\\n  get: regExpFlags\\n});\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 9504:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar NATIVE_BIND = __webpack_require__(616);\\n\\nvar FunctionPrototype = Function.prototype;\\nvar call = FunctionPrototype.call;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind -- safe\\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\\n\\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\\n  return function () {\\n    return call.apply(fn, arguments);\\n  };\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 9519:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar globalThis = __webpack_require__(4576);\\nvar userAgent = __webpack_require__(2839);\\n\\nvar process = globalThis.process;\\nvar Deno = globalThis.Deno;\\nvar versions = process && process.versions || Deno && Deno.version;\\nvar v8 = versions && versions.v8;\\nvar match, version;\\n\\nif (v8) {\\n  match = v8.split('.');\\n  \u002F\u002F in old Chrome, versions of V8 isn't V8 = Chrome \u002F 10\\n  \u002F\u002F but their correct versions are not interesting for us\\n  version = match[0] > 0 && match[0] \u003C 4 ? 1 : +(match[0] + match[1]);\\n}\\n\\n\u002F\u002F BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\\n\u002F\u002F so check `userAgent` even if `.v8` exists, but 0\\nif (!version && userAgent) {\\n  match = userAgent.match(\u002FEdge\\\\\u002F(\\\\d+)\u002F);\\n  if (!match || match[1] >= 74) {\\n    match = userAgent.match(\u002FChrome\\\\\u002F(\\\\d+)\u002F);\\n    if (match) version = +match[1];\\n  }\\n}\\n\\nmodule.exports = version;\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 9539:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar call = __webpack_require__(9565);\\nvar anObject = __webpack_require__(8551);\\nvar getMethod = __webpack_require__(5966);\\n\\nmodule.exports = function (iterator, kind, value) {\\n  var innerResult, innerError;\\n  anObject(iterator);\\n  try {\\n    innerResult = getMethod(iterator, 'return');\\n    if (!innerResult) {\\n      if (kind === 'throw') throw value;\\n      return value;\\n    }\\n    innerResult = call(innerResult, iterator);\\n  } catch (error) {\\n    innerError = true;\\n    innerResult = error;\\n  }\\n  if (kind === 'throw') throw value;\\n  if (innerError) throw innerResult;\\n  anObject(innerResult);\\n  return value;\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 9565:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar NATIVE_BIND = __webpack_require__(616);\\n\\nvar call = Function.prototype.call;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind -- safe\\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\\n  return call.apply(call, arguments);\\n};\\n\\n\\n\u002F***\u002F }),\\n\\n\u002F***\u002F 9617:\\n\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\\n\\n\\nvar toIndexedObject = __webpack_require__(5397);\\nvar toAbsoluteIndex = __webpack_require__(5610);\\nvar lengthOfArrayLike = __webpack_require__(6198);\\n\\n\u002F\u002F `Array.prototype.{ indexOf, includes }` methods implementation\\nvar createMethod = function (IS_INCLUDES) {\\n  return function ($this, el, fromIndex) {\\n    var O = toIndexedObject($this);\\n    var length = lengthOfArrayLike(O);\\n    if (length === 0) return !IS_INCLUDES && -1;\\n    var index = toAbsoluteIndex(fromIndex, length);\\n    var value;\\n    \u002F\u002F Array#includes uses SameValueZero equality algorithm\\n    \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\\n    if (IS_INCLUDES && el !== el) while (length > index) {\\n      value = O[index++];\\n      \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\\n      if (value !== value) return true;\\n    \u002F\u002F Array#indexOf ignores holes, Array#includes - not\\n    } else for (;length > index; index++) {\\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\\n    } return !IS_INCLUDES && -1;\\n  };\\n};\\n\\nmodule.exports = {\\n  \u002F\u002F `Array.prototype.includes` method\\n  \u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-array.prototype.includes\\n  includes: createMethod(true),\\n  \u002F\u002F `Array.prototype.indexOf` method\\n  \u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-array.prototype.indexof\\n  indexOf: createMethod(false)\\n};\\n\\n\\n\u002F***\u002F })\\n\\n\u002F******\u002F });\\n\u002F************************************************************************\u002F\\n\u002F******\u002F \u002F\u002F The module cache\\n\u002F******\u002F var __webpack_module_cache__ = {};\\n\u002F******\u002F \\n\u002F******\u002F \u002F\u002F The require function\\n\u002F******\u002F function __webpack_require__(moduleId) {\\n\u002F******\u002F \\t\u002F\u002F Check if module is in cache\\n\u002F******\u002F \\tvar cachedModule = __webpack_module_cache__[moduleId];\\n\u002F******\u002F \\tif (cachedModule !== undefined) {\\n\u002F******\u002F \\t\\treturn cachedModule.exports;\\n\u002F******\u002F \\t}\\n\u002F******\u002F \\t\u002F\u002F Create a new module (and put it into the cache)\\n\u002F******\u002F \\tvar module = __webpack_module_cache__[moduleId] = {\\n\u002F******\u002F \\t\\t\u002F\u002F no module.id needed\\n\u002F******\u002F \\t\\t\u002F\u002F no module.loaded needed\\n\u002F******\u002F \\t\\texports: {}\\n\u002F******\u002F \\t};\\n\u002F******\u002F \\n\u002F******\u002F \\t\u002F\u002F Execute the module function\\n\u002F******\u002F \\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\\n\u002F******\u002F \\n\u002F******\u002F \\t\u002F\u002F Return the exports of the module\\n\u002F******\u002F \\treturn module.exports;\\n\u002F******\u002F }\\n\u002F******\u002F \\n\u002F************************************************************************\u002F\\nvar __webpack_exports__ = {};\\n\\n\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array.push.js\\nvar es_array_push = __webpack_require__(4114);\\n\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.constructor.js\\nvar es_iterator_constructor = __webpack_require__(8111);\\n\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.map.js\\nvar es_iterator_map = __webpack_require__(1701);\\n;\u002F\u002F .\u002Fsrc\u002Fscripting_api\u002Fconstants.js\\nconst Border = Object.freeze({\\n  s: \\\"solid\\\",\\n  d: \\\"dashed\\\",\\n  b: \\\"beveled\\\",\\n  i: \\\"inset\\\",\\n  u: \\\"underline\\\"\\n});\\nconst Cursor = Object.freeze({\\n  visible: 0,\\n  hidden: 1,\\n  delay: 2\\n});\\nconst Display = Object.freeze({\\n  visible: 0,\\n  hidden: 1,\\n  noPrint: 2,\\n  noView: 3\\n});\\nconst Font = Object.freeze({\\n  Times: \\\"Times-Roman\\\",\\n  TimesB: \\\"Times-Bold\\\",\\n  TimesI: \\\"Times-Italic\\\",\\n  TimesBI: \\\"Times-BoldItalic\\\",\\n  Helv: \\\"Helvetica\\\",\\n  HelvB: \\\"Helvetica-Bold\\\",\\n  HelvI: \\\"Helvetica-Oblique\\\",\\n  HelvBI: \\\"Helvetica-BoldOblique\\\",\\n  Cour: \\\"Courier\\\",\\n  CourB: \\\"Courier-Bold\\\",\\n  CourI: \\\"Courier-Oblique\\\",\\n  CourBI: \\\"Courier-BoldOblique\\\",\\n  Symbol: \\\"Symbol\\\",\\n  ZapfD: \\\"ZapfDingbats\\\",\\n  KaGo: \\\"HeiseiKakuGo-W5-UniJIS-UCS2-H\\\",\\n  KaMi: \\\"HeiseiMin-W3-UniJIS-UCS2-H\\\"\\n});\\nconst Highlight = Object.freeze({\\n  n: \\\"none\\\",\\n  i: \\\"invert\\\",\\n  p: \\\"push\\\",\\n  o: \\\"outline\\\"\\n});\\nconst Position = Object.freeze({\\n  textOnly: 0,\\n  iconOnly: 1,\\n  iconTextV: 2,\\n  textIconV: 3,\\n  iconTextH: 4,\\n  textIconH: 5,\\n  overlay: 6\\n});\\nconst ScaleHow = Object.freeze({\\n  proportional: 0,\\n  anamorphic: 1\\n});\\nconst ScaleWhen = Object.freeze({\\n  always: 0,\\n  never: 1,\\n  tooBig: 2,\\n  tooSmall: 3\\n});\\nconst Style = Object.freeze({\\n  ch: \\\"check\\\",\\n  cr: \\\"cross\\\",\\n  di: \\\"diamond\\\",\\n  ci: \\\"circle\\\",\\n  st: \\\"star\\\",\\n  sq: \\\"square\\\"\\n});\\nconst Trans = Object.freeze({\\n  blindsH: \\\"BlindsHorizontal\\\",\\n  blindsV: \\\"BlindsVertical\\\",\\n  boxI: \\\"BoxIn\\\",\\n  boxO: \\\"BoxOut\\\",\\n  dissolve: \\\"Dissolve\\\",\\n  glitterD: \\\"GlitterDown\\\",\\n  glitterR: \\\"GlitterRight\\\",\\n  glitterRD: \\\"GlitterRightDown\\\",\\n  random: \\\"Random\\\",\\n  replace: \\\"Replace\\\",\\n  splitHI: \\\"SplitHorizontalIn\\\",\\n  splitHO: \\\"SplitHorizontalOut\\\",\\n  splitVI: \\\"SplitVerticalIn\\\",\\n  splitVO: \\\"SplitVerticalOut\\\",\\n  wipeD: \\\"WipeDown\\\",\\n  wipeL: \\\"WipeLeft\\\",\\n  wipeR: \\\"WipeRight\\\",\\n  wipeU: \\\"WipeUp\\\"\\n});\\nconst ZoomType = Object.freeze({\\n  none: \\\"NoVary\\\",\\n  fitP: \\\"FitPage\\\",\\n  fitW: \\\"FitWidth\\\",\\n  fitH: \\\"FitHeight\\\",\\n  fitV: \\\"FitVisibleWidth\\\",\\n  pref: \\\"Preferred\\\",\\n  refW: \\\"ReflowWidth\\\"\\n});\\nconst GlobalConstants = Object.freeze({\\n  IDS_GREATER_THAN: \\\"Invalid value: must be greater than or equal to % s.\\\",\\n  IDS_GT_AND_LT: \\\"Invalid value: must be greater than or equal to % s \\\" + \\\"and less than or equal to % s.\\\",\\n  IDS_LESS_THAN: \\\"Invalid value: must be less than or equal to % s.\\\",\\n  IDS_INVALID_MONTH: \\\"** Invalid **\\\",\\n  IDS_INVALID_DATE: \\\"Invalid date \u002F time: please ensure that the date \u002F time exists. Field\\\",\\n  IDS_INVALID_DATE2: \\\" should match format \\\",\\n  IDS_INVALID_VALUE: \\\"The value entered does not match the format of the field\\\",\\n  IDS_AM: \\\"am\\\",\\n  IDS_PM: \\\"pm\\\",\\n  IDS_MONTH_INFO: \\\"January[1] February[2] March[3] April[4] May[5] \\\" + \\\"June[6] July[7] August[8] September[9] October[10] \\\" + \\\"November[11] December[12] Sept[9] Jan[1] Feb[2] Mar[3] \\\" + \\\"Apr[4] Jun[6] Jul[7] Aug[8] Sep[9] Oct[10] Nov[11] Dec[12]\\\",\\n  IDS_STARTUP_CONSOLE_MSG: \\\"** ^ _ ^ **\\\",\\n  RE_NUMBER_ENTRY_DOT_SEP: [\\\"[+-]?\\\\\\\\d*\\\\\\\\.?\\\\\\\\d*\\\"],\\n  RE_NUMBER_COMMIT_DOT_SEP: [\\\"[+-]?\\\\\\\\d+(\\\\\\\\.\\\\\\\\d+)?\\\", \\\"[+-]?\\\\\\\\.\\\\\\\\d+\\\", \\\"[+-]?\\\\\\\\d+\\\\\\\\.\\\"],\\n  RE_NUMBER_ENTRY_COMMA_SEP: [\\\"[+-]?\\\\\\\\d*,?\\\\\\\\d*\\\"],\\n  RE_NUMBER_COMMIT_COMMA_SEP: [\\\"[+-]?\\\\\\\\d+([.,]\\\\\\\\d+)?\\\", \\\"[+-]?[.,]\\\\\\\\d+\\\", \\\"[+-]?\\\\\\\\d+[.,]\\\"],\\n  RE_ZIP_ENTRY: [\\\"\\\\\\\\d{0,5}\\\"],\\n  RE_ZIP_COMMIT: [\\\"\\\\\\\\d{5}\\\"],\\n  RE_ZIP4_ENTRY: [\\\"\\\\\\\\d{0,5}(\\\\\\\\.|[- ])?\\\\\\\\d{0,4}\\\"],\\n  RE_ZIP4_COMMIT: [\\\"\\\\\\\\d{5}(\\\\\\\\.|[- ])?\\\\\\\\d{4}\\\"],\\n  RE_PHONE_ENTRY: [\\\"\\\\\\\\d{0,3}(\\\\\\\\.|[- ])?\\\\\\\\d{0,3}(\\\\\\\\.|[- ])?\\\\\\\\d{0,4}\\\", \\\"\\\\\\\\(\\\\\\\\d{0,3}\\\", \\\"\\\\\\\\(\\\\\\\\d{0,3}\\\\\\\\)(\\\\\\\\.|[- ])?\\\\\\\\d{0,3}(\\\\\\\\.|[- ])?\\\\\\\\d{0,4}\\\", \\\"\\\\\\\\(\\\\\\\\d{0,3}(\\\\\\\\.|[- ])?\\\\\\\\d{0,3}(\\\\\\\\.|[- ])?\\\\\\\\d{0,4}\\\", \\\"\\\\\\\\d{0,3}\\\\\\\\)(\\\\\\\\.|[- ])?\\\\\\\\d{0,3}(\\\\\\\\.|[- ])?\\\\\\\\d{0,4}\\\", \\\"011(\\\\\\\\.|[- \\\\\\\\d])*\\\"],\\n  RE_PHONE_COMMIT: [\\\"\\\\\\\\d{3}(\\\\\\\\.|[- ])?\\\\\\\\d{4}\\\", \\\"\\\\\\\\d{3}(\\\\\\\\.|[- ])?\\\\\\\\d{3}(\\\\\\\\.|[- ])?\\\\\\\\d{4}\\\", \\\"\\\\\\\\(\\\\\\\\d{3}\\\\\\\\)(\\\\\\\\.|[- ])?\\\\\\\\d{3}(\\\\\\\\.|[- ])?\\\\\\\\d{4}\\\", \\\"011(\\\\\\\\.|[- \\\\\\\\d])*\\\"],\\n  RE_SSN_ENTRY: [\\\"\\\\\\\\d{0,3}(\\\\\\\\.|[- ])?\\\\\\\\d{0,2}(\\\\\\\\.|[- ])?\\\\\\\\d{0,4}\\\"],\\n  RE_SSN_COMMIT: [\\\"\\\\\\\\d{3}(\\\\\\\\.|[- ])?\\\\\\\\d{2}(\\\\\\\\.|[- ])?\\\\\\\\d{4}\\\"]\\n});\\n\\n\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.every.js\\nvar es_iterator_every = __webpack_require__(1148);\\n\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.filter.js\\nvar es_iterator_filter = __webpack_require__(2489);\\n\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.for-each.js\\nvar es_iterator_for_each = __webpack_require__(7588);\\n\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.some.js\\nvar es_iterator_some = __webpack_require__(3579);\\n\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.difference.v2.js\\nvar es_set_difference_v2 = __webpack_require__(7642);\\n\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.intersection.v2.js\\nvar es_set_intersection_v2 = __webpack_require__(8004);\\n\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.is-disjoint-from.v2.js\\nvar es_set_is_disjoint_from_v2 = __webpack_require__(3853);\\n\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.is-subset-of.v2.js\\nvar es_set_is_subset_of_v2 = __webpack_require__(5876);\\n\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.is-superset-of.v2.js\\nvar es_set_is_superset_of_v2 = __webpack_require__(2475);\\n\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.symmetric-difference.v2.js\\nvar es_set_symmetric_difference_v2 = __webpack_require__(5024);\\n\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.union.v2.js\\nvar es_set_union_v2 = __webpack_require__(1698);\\n;\u002F\u002F .\u002Fsrc\u002Fscripting_api\u002Fcommon.js\\nconst FieldType = {\\n  none: 0,\\n  number: 1,\\n  percent: 2,\\n  date: 3,\\n  time: 4\\n};\\nfunction createActionsMap(actions) {\\n  const actionsMap = new Map();\\n  if (actions) {\\n    for (const [eventType, actionsForEvent] of Object.entries(actions)) {\\n      actionsMap.set(eventType, actionsForEvent);\\n    }\\n  }\\n  return actionsMap;\\n}\\nfunction getFieldType(actions) {\\n  let format = actions.get(\\\"Format\\\");\\n  if (!format) {\\n    return FieldType.none;\\n  }\\n  format = format[0];\\n  format = format.trim();\\n  if (format.startsWith(\\\"AFNumber_\\\")) {\\n    return FieldType.number;\\n  }\\n  if (format.startsWith(\\\"AFPercent_\\\")) {\\n    return FieldType.percent;\\n  }\\n  if (format.startsWith(\\\"AFDate_\\\")) {\\n    return FieldType.date;\\n  }\\n  if (format.startsWith(\\\"AFTime_\\\")) {\\n    return FieldType.time;\\n  }\\n  return FieldType.none;\\n}\\n\\n;\u002F\u002F .\u002Fsrc\u002Fshared\u002Fscripting_utils.js\\n\\n\\nfunction makeColorComp(n) {\\n  return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, \\\"0\\\");\\n}\\nfunction scaleAndClamp(x) {\\n  return Math.max(0, Math.min(255, 255 * x));\\n}\\nclass ColorConverters {\\n  static CMYK_G([c, y, m, k]) {\\n    return [\\\"G\\\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\\n  }\\n  static G_CMYK([g]) {\\n    return [\\\"CMYK\\\", 0, 0, 0, 1 - g];\\n  }\\n  static G_RGB([g]) {\\n    return [\\\"RGB\\\", g, g, g];\\n  }\\n  static G_rgb([g]) {\\n    g = scaleAndClamp(g);\\n    return [g, g, g];\\n  }\\n  static G_HTML([g]) {\\n    const G = makeColorComp(g);\\n    return `#${G}${G}${G}`;\\n  }\\n  static RGB_G([r, g, b]) {\\n    return [\\\"G\\\", 0.3 * r + 0.59 * g + 0.11 * b];\\n  }\\n  static RGB_rgb(color) {\\n    return color.map(scaleAndClamp);\\n  }\\n  static RGB_HTML(color) {\\n    return `#${color.map(makeColorComp).join(\\\"\\\")}`;\\n  }\\n  static T_HTML() {\\n    return \\\"#00000000\\\";\\n  }\\n  static T_rgb() {\\n    return [null];\\n  }\\n  static CMYK_RGB([c, y, m, k]) {\\n    return [\\\"RGB\\\", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\\n  }\\n  static CMYK_rgb([c, y, m, k]) {\\n    return [scaleAndClamp(1 - Math.min(1, c + k)), scaleAndClamp(1 - Math.min(1, m + k)), scaleAndClamp(1 - Math.min(1, y + k))];\\n  }\\n  static CMYK_HTML(components) {\\n    const rgb = this.CMYK_RGB(components).slice(1);\\n    return this.RGB_HTML(rgb);\\n  }\\n  static RGB_CMYK([r, g, b]) {\\n    const c = 1 - r;\\n    const m = 1 - g;\\n    const y = 1 - b;\\n    const k = Math.min(c, m, y);\\n    return [\\\"CMYK\\\", c, m, y, k];\\n  }\\n}\\n\\n;\u002F\u002F .\u002Fsrc\u002Fscripting_api\u002Fpdf_object.js\\nclass PDFObject {\\n  constructor(data) {\\n    this._expandos = Object.create(null);\\n    this._send = data.send || null;\\n    this._id = data.id || null;\\n  }\\n}\\n\\n;\u002F\u002F .\u002Fsrc\u002Fscripting_api\u002Fcolor.js\\n\\n\\n\\n\\nclass Color extends PDFObject {\\n  constructor() {\\n    super({});\\n    this.transparent = [\\\"T\\\"];\\n    this.black = [\\\"G\\\", 0];\\n    this.white = [\\\"G\\\", 1];\\n    this.red = [\\\"RGB\\\", 1, 0, 0];\\n    this.green = [\\\"RGB\\\", 0, 1, 0];\\n    this.blue = [\\\"RGB\\\", 0, 0, 1];\\n    this.cyan = [\\\"CMYK\\\", 1, 0, 0, 0];\\n    this.magenta = [\\\"CMYK\\\", 0, 1, 0, 0];\\n    this.yellow = [\\\"CMYK\\\", 0, 0, 1, 0];\\n    this.dkGray = [\\\"G\\\", 0.25];\\n    this.gray = [\\\"G\\\", 0.5];\\n    this.ltGray = [\\\"G\\\", 0.75];\\n  }\\n  static _isValidSpace(cColorSpace) {\\n    return typeof cColorSpace === \\\"string\\\" && (cColorSpace === \\\"T\\\" || cColorSpace === \\\"G\\\" || cColorSpace === \\\"RGB\\\" || cColorSpace === \\\"CMYK\\\");\\n  }\\n  static _isValidColor(colorArray) {\\n    if (!Array.isArray(colorArray) || colorArray.length === 0) {\\n      return false;\\n    }\\n    const space = colorArray[0];\\n    if (!Color._isValidSpace(space)) {\\n      return false;\\n    }\\n    switch (space) {\\n      case \\\"T\\\":\\n        if (colorArray.length !== 1) {\\n          return false;\\n        }\\n        break;\\n      case \\\"G\\\":\\n        if (colorArray.length !== 2) {\\n          return false;\\n        }\\n        break;\\n      case \\\"RGB\\\":\\n        if (colorArray.length !== 4) {\\n          return false;\\n        }\\n        break;\\n      case \\\"CMYK\\\":\\n        if (colorArray.length !== 5) {\\n          return false;\\n        }\\n        break;\\n      default:\\n        return false;\\n    }\\n    return colorArray.slice(1).every(c => typeof c === \\\"number\\\" && c >= 0 && c \u003C= 1);\\n  }\\n  static _getCorrectColor(colorArray) {\\n    return Color._isValidColor(colorArray) ? colorArray : [\\\"G\\\", 0];\\n  }\\n  convert(colorArray, cColorSpace) {\\n    if (!Color._isValidSpace(cColorSpace)) {\\n      return this.black;\\n    }\\n    if (cColorSpace === \\\"T\\\") {\\n      return [\\\"T\\\"];\\n    }\\n    colorArray = Color._getCorrectColor(colorArray);\\n    if (colorArray[0] === cColorSpace) {\\n      return colorArray;\\n    }\\n    if (colorArray[0] === \\\"T\\\") {\\n      return this.convert(this.black, cColorSpace);\\n    }\\n    return ColorConverters[`${colorArray[0]}_${cColorSpace}`](colorArray.slice(1));\\n  }\\n  equal(colorArray1, colorArray2) {\\n    colorArray1 = Color._getCorrectColor(colorArray1);\\n    colorArray2 = Color._getCorrectColor(colorArray2);\\n    if (colorArray1[0] === \\\"T\\\" || colorArray2[0] === \\\"T\\\") {\\n      return colorArray1[0] === \\\"T\\\" && colorArray2[0] === \\\"T\\\";\\n    }\\n    if (colorArray1[0] !== colorArray2[0]) {\\n      colorArray2 = this.convert(colorArray2, colorArray1[0]);\\n    }\\n    return colorArray1.slice(1).every((c, i) => c === colorArray2[i + 1]);\\n  }\\n}\\n\\n;\u002F\u002F .\u002Fsrc\u002Fscripting_api\u002Fapp_utils.js\\nconst VIEWER_TYPE = \\\"PDF.js\\\";\\nconst VIEWER_VARIATION = \\\"Full\\\";\\nconst VIEWER_VERSION = 21.00720099;\\nconst FORMS_VERSION = 21.00720099;\\nconst USERACTIVATION_CALLBACKID = 0;\\nconst USERACTIVATION_MAXTIME_VALIDITY = 5000;\\nfunction serializeError(error) {\\n  const value = `${error.toString()}\\\\n${error.stack}`;\\n  return {\\n    command: \\\"error\\\",\\n    value\\n  };\\n}\\n\\n;\u002F\u002F .\u002Fsrc\u002Fscripting_api\u002Ffield.js\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nclass Field extends PDFObject {\\n  constructor(data) {\\n    super(data);\\n    this.alignment = data.alignment || \\\"left\\\";\\n    this.borderStyle = data.borderStyle || \\\"\\\";\\n    this.buttonAlignX = data.buttonAlignX || 50;\\n    this.buttonAlignY = data.buttonAlignY || 50;\\n    this.buttonFitBounds = data.buttonFitBounds;\\n    this.buttonPosition = data.buttonPosition;\\n    this.buttonScaleHow = data.buttonScaleHow;\\n    this.ButtonScaleWhen = data.buttonScaleWhen;\\n    this.calcOrderIndex = data.calcOrderIndex;\\n    this.comb = data.comb;\\n    this.commitOnSelChange = data.commitOnSelChange;\\n    this.currentValueIndices = data.currentValueIndices;\\n    this.defaultStyle = data.defaultStyle;\\n    this.defaultValue = data.defaultValue;\\n    this.doNotScroll = data.doNotScroll;\\n    this.doNotSpellCheck = data.doNotSpellCheck;\\n    this.delay = data.delay;\\n    this.display = data.display;\\n    this.doc = data.doc.wrapped;\\n    this.editable = data.editable;\\n    this.exportValues = data.exportValues;\\n    this.fileSelect = data.fileSelect;\\n    this.hidden = data.hidden;\\n    this.highlight = data.highlight;\\n    this.lineWidth = data.lineWidth;\\n    this.multiline = data.multiline;\\n    this.multipleSelection = !!data.multipleSelection;\\n    this.name = data.name;\\n    this.password = data.password;\\n    this.print = data.print;\\n    this.radiosInUnison = data.radiosInUnison;\\n    this.readonly = data.readonly;\\n    this.rect = data.rect;\\n    this.required = data.required;\\n    this.richText = data.richText;\\n    this.richValue = data.richValue;\\n    this.style = data.style;\\n    this.submitName = data.submitName;\\n    this.textFont = data.textFont;\\n    this.textSize = data.textSize;\\n    this.type = data.type;\\n    this.userName = data.userName;\\n    this._actions = createActionsMap(data.actions);\\n    this._browseForFileToSubmit = data.browseForFileToSubmit || null;\\n    this._buttonCaption = null;\\n    this._buttonIcon = null;\\n    this._charLimit = data.charLimit;\\n    this._children = null;\\n    this._currentValueIndices = data.currentValueIndices || 0;\\n    this._document = data.doc;\\n    this._fieldPath = data.fieldPath;\\n    this._fillColor = data.fillColor || [\\\"T\\\"];\\n    this._isChoice = Array.isArray(data.items);\\n    this._items = data.items || [];\\n    this._hasValue = data.hasOwnProperty(\\\"value\\\");\\n    this._page = data.page || 0;\\n    this._strokeColor = data.strokeColor || [\\\"G\\\", 0];\\n    this._textColor = data.textColor || [\\\"G\\\", 0];\\n    this._value = null;\\n    this._kidIds = data.kidIds || null;\\n    this._fieldType = getFieldType(this._actions);\\n    this._siblings = data.siblings || null;\\n    this._rotation = data.rotation || 0;\\n    this._globalEval = data.globalEval;\\n    this._appObjects = data.appObjects;\\n    this.value = data.value || \\\"\\\";\\n  }\\n  get currentValueIndices() {\\n    if (!this._isChoice) {\\n      return 0;\\n    }\\n    return this._currentValueIndices;\\n  }\\n  set currentValueIndices(indices) {\\n    if (!this._isChoice) {\\n      return;\\n    }\\n    if (!Array.isArray(indices)) {\\n      indices = [indices];\\n    }\\n    if (!indices.every(i => typeof i === \\\"number\\\" && Number.isInteger(i) && i >= 0 && i \u003C this.numItems)) {\\n      return;\\n    }\\n    indices.sort();\\n    if (this.multipleSelection) {\\n      this._currentValueIndices = indices;\\n      this._value = [];\\n      indices.forEach(i => {\\n        this._value.push(this._items[i].displayValue);\\n      });\\n    } else if (indices.length > 0) {\\n      indices = indices.splice(1, indices.length - 1);\\n      this._currentValueIndices = indices[0];\\n      this._value = this._items[this._currentValueIndices];\\n    }\\n    this._send({\\n      id: this._id,\\n      indices\\n    });\\n  }\\n  get fillColor() {\\n    return this._fillColor;\\n  }\\n  set fillColor(color) {\\n    if (Color._isValidColor(color)) {\\n      this._fillColor = color;\\n    }\\n  }\\n  get bgColor() {\\n    return this.fillColor;\\n  }\\n  set bgColor(color) {\\n    this.fillColor = color;\\n  }\\n  get charLimit() {\\n    return this._charLimit;\\n  }\\n  set charLimit(limit) {\\n    if (typeof limit !== \\\"number\\\") {\\n      throw new Error(\\\"Invalid argument value\\\");\\n    }\\n    this._charLimit = Math.max(0, Math.floor(limit));\\n  }\\n  get numItems() {\\n    if (!this._isChoice) {\\n      throw new Error(\\\"Not a choice widget\\\");\\n    }\\n    return this._items.length;\\n  }\\n  set numItems(_) {\\n    throw new Error(\\\"field.numItems is read-only\\\");\\n  }\\n  get strokeColor() {\\n    return this._strokeColor;\\n  }\\n  set strokeColor(color) {\\n    if (Color._isValidColor(color)) {\\n      this._strokeColor = color;\\n    }\\n  }\\n  get borderColor() {\\n    return this.strokeColor;\\n  }\\n  set borderColor(color) {\\n    this.strokeColor = color;\\n  }\\n  get page() {\\n    return this._page;\\n  }\\n  set page(_) {\\n    throw new Error(\\\"field.page is read-only\\\");\\n  }\\n  get rotation() {\\n    return this._rotation;\\n  }\\n  set rotation(angle) {\\n    angle = Math.floor(angle);\\n    if (angle % 90 !== 0) {\\n      throw new Error(\\\"Invalid rotation: must be a multiple of 90\\\");\\n    }\\n    angle %= 360;\\n    if (angle \u003C 0) {\\n      angle += 360;\\n    }\\n    this._rotation = angle;\\n  }\\n  get textColor() {\\n    return this._textColor;\\n  }\\n  set textColor(color) {\\n    if (Color._isValidColor(color)) {\\n      this._textColor = color;\\n    }\\n  }\\n  get fgColor() {\\n    return this.textColor;\\n  }\\n  set fgColor(color) {\\n    this.textColor = color;\\n  }\\n  get value() {\\n    return this._value;\\n  }\\n  set value(value) {\\n    if (this._isChoice) {\\n      this._setChoiceValue(value);\\n      return;\\n    }\\n    if (value === \\\"\\\" || typeof value !== \\\"string\\\" || this._fieldType >= FieldType.date) {\\n      this._originalValue = undefined;\\n      this._value = value;\\n      return;\\n    }\\n    this._originalValue = value;\\n    const _value = value.trim().replace(\\\",\\\", \\\".\\\");\\n    this._value = !isNaN(_value) ? parseFloat(_value) : value;\\n  }\\n  _getValue() {\\n    return this._originalValue ?? this.value;\\n  }\\n  _setChoiceValue(value) {\\n    if (this.multipleSelection) {\\n      if (!Array.isArray(value)) {\\n        value = [value];\\n      }\\n      const values = new Set(value);\\n      if (Array.isArray(this._currentValueIndices)) {\\n        this._currentValueIndices.length = 0;\\n        this._value.length = 0;\\n      } else {\\n        this._currentValueIndices = [];\\n        this._value = [];\\n      }\\n      this._items.forEach((item, i) => {\\n        if (values.has(item.exportValue)) {\\n          this._currentValueIndices.push(i);\\n          this._value.push(item.exportValue);\\n        }\\n      });\\n    } else {\\n      if (Array.isArray(value)) {\\n        value = value[0];\\n      }\\n      const index = this._items.findIndex(({\\n        exportValue\\n      }) => value === exportValue);\\n      if (index !== -1) {\\n        this._currentValueIndices = index;\\n        this._value = this._items[index].exportValue;\\n      }\\n    }\\n  }\\n  get valueAsString() {\\n    return (this._value ?? \\\"\\\").toString();\\n  }\\n  set valueAsString(_) {}\\n  browseForFileToSubmit() {\\n    if (this._browseForFileToSubmit) {\\n      this._browseForFileToSubmit();\\n    }\\n  }\\n  buttonGetCaption(nFace = 0) {\\n    if (this._buttonCaption) {\\n      return this._buttonCaption[nFace];\\n    }\\n    return \\\"\\\";\\n  }\\n  buttonGetIcon(nFace = 0) {\\n    if (this._buttonIcon) {\\n      return this._buttonIcon[nFace];\\n    }\\n    return null;\\n  }\\n  buttonImportIcon(cPath = null, nPave = 0) {}\\n  buttonSetCaption(cCaption, nFace = 0) {\\n    if (!this._buttonCaption) {\\n      this._buttonCaption = [\\\"\\\", \\\"\\\", \\\"\\\"];\\n    }\\n    this._buttonCaption[nFace] = cCaption;\\n  }\\n  buttonSetIcon(oIcon, nFace = 0) {\\n    if (!this._buttonIcon) {\\n      this._buttonIcon = [null, null, null];\\n    }\\n    this._buttonIcon[nFace] = oIcon;\\n  }\\n  checkThisBox(nWidget, bCheckIt = true) {}\\n  clearItems() {\\n    if (!this._isChoice) {\\n      throw new Error(\\\"Not a choice widget\\\");\\n    }\\n    this._items = [];\\n    this._send({\\n      id: this._id,\\n      clear: null\\n    });\\n  }\\n  deleteItemAt(nIdx = null) {\\n    if (!this._isChoice) {\\n      throw new Error(\\\"Not a choice widget\\\");\\n    }\\n    if (!this.numItems) {\\n      return;\\n    }\\n    if (nIdx === null) {\\n      nIdx = Array.isArray(this._currentValueIndices) ? this._currentValueIndices[0] : this._currentValueIndices;\\n      nIdx ||= 0;\\n    }\\n    if (nIdx \u003C 0 || nIdx >= this.numItems) {\\n      nIdx = this.numItems - 1;\\n    }\\n    this._items.splice(nIdx, 1);\\n    if (Array.isArray(this._currentValueIndices)) {\\n      let index = this._currentValueIndices.findIndex(i => i >= nIdx);\\n      if (index !== -1) {\\n        if (this._currentValueIndices[index] === nIdx) {\\n          this._currentValueIndices.splice(index, 1);\\n        }\\n        for (const ii = this._currentValueIndices.length; index \u003C ii; index++) {\\n          --this._currentValueIndices[index];\\n        }\\n      }\\n    } else if (this._currentValueIndices === nIdx) {\\n      this._currentValueIndices = this.numItems > 0 ? 0 : -1;\\n    } else if (this._currentValueIndices > nIdx) {\\n      --this._currentValueIndices;\\n    }\\n    this._send({\\n      id: this._id,\\n      remove: nIdx\\n    });\\n  }\\n  getItemAt(nIdx = -1, bExportValue = false) {\\n    if (!this._isChoice) {\\n      throw new Error(\\\"Not a choice widget\\\");\\n    }\\n    if (nIdx \u003C 0 || nIdx >= this.numItems) {\\n      nIdx = this.numItems - 1;\\n    }\\n    const item = this._items[nIdx];\\n    return bExportValue ? item.exportValue : item.displayValue;\\n  }\\n  getArray() {\\n    if (this._kidIds) {\\n      const array = [];\\n      const fillArrayWithKids = kidIds => {\\n        for (const id of kidIds) {\\n          const obj = this._appObjects[id];\\n          if (!obj) {\\n            continue;\\n          }\\n          if (obj.obj._hasValue) {\\n            array.push(obj.wrapped);\\n          }\\n          if (obj.obj._kidIds) {\\n            fillArrayWithKids(obj.obj._kidIds);\\n          }\\n        }\\n      };\\n      fillArrayWithKids(this._kidIds);\\n      return array;\\n    }\\n    if (this._children === null) {\\n      this._children = this._document.obj._getTerminalChildren(this._fieldPath);\\n    }\\n    return this._children;\\n  }\\n  getLock() {\\n    return undefined;\\n  }\\n  isBoxChecked(nWidget) {\\n    return false;\\n  }\\n  isDefaultChecked(nWidget) {\\n    return false;\\n  }\\n  insertItemAt(cName, cExport = undefined, nIdx = 0) {\\n    if (!this._isChoice) {\\n      throw new Error(\\\"Not a choice widget\\\");\\n    }\\n    if (!cName) {\\n      return;\\n    }\\n    if (nIdx \u003C 0 || nIdx > this.numItems) {\\n      nIdx = this.numItems;\\n    }\\n    if (this._items.some(({\\n      displayValue\\n    }) => displayValue === cName)) {\\n      return;\\n    }\\n    if (cExport === undefined) {\\n      cExport = cName;\\n    }\\n    const data = {\\n      displayValue: cName,\\n      exportValue: cExport\\n    };\\n    this._items.splice(nIdx, 0, data);\\n    if (Array.isArray(this._currentValueIndices)) {\\n      let index = this._currentValueIndices.findIndex(i => i >= nIdx);\\n      if (index !== -1) {\\n        for (const ii = this._currentValueIndices.length; index \u003C ii; index++) {\\n          ++this._currentValueIndices[index];\\n        }\\n      }\\n    } else if (this._currentValueIndices >= nIdx) {\\n      ++this._currentValueIndices;\\n    }\\n    this._send({\\n      id: this._id,\\n      insert: {\\n        index: nIdx,\\n        ...data\\n      }\\n    });\\n  }\\n  setAction(cTrigger, cScript) {\\n    if (typeof cTrigger !== \\\"string\\\" || typeof cScript !== \\\"string\\\") {\\n      return;\\n    }\\n    if (!(cTrigger in this._actions)) {\\n      this._actions[cTrigger] = [];\\n    }\\n    this._actions[cTrigger].push(cScript);\\n  }\\n  setFocus() {\\n    this._send({\\n      id: this._id,\\n      focus: true\\n    });\\n  }\\n  setItems(oArray) {\\n    if (!this._isChoice) {\\n      throw new Error(\\\"Not a choice widget\\\");\\n    }\\n    this._items.length = 0;\\n    for (const element of oArray) {\\n      let displayValue, exportValue;\\n      if (Array.isArray(element)) {\\n        displayValue = element[0]?.toString() || \\\"\\\";\\n        exportValue = element[1]?.toString() || \\\"\\\";\\n      } else {\\n        displayValue = exportValue = element?.toString() || \\\"\\\";\\n      }\\n      this._items.push({\\n        displayValue,\\n        exportValue\\n      });\\n    }\\n    this._currentValueIndices = 0;\\n    this._send({\\n      id: this._id,\\n      items: this._items\\n    });\\n  }\\n  setLock() {}\\n  signatureGetModifications() {}\\n  signatureGetSeedValue() {}\\n  signatureInfo() {}\\n  signatureSetSeedValue() {}\\n  signatureSign() {}\\n  signatureValidate() {}\\n  _isButton() {\\n    return false;\\n  }\\n  _reset() {\\n    this.value = this.defaultValue;\\n  }\\n  _runActions(event) {\\n    const eventName = event.name;\\n    if (!this._actions.has(eventName)) {\\n      return false;\\n    }\\n    const actions = this._actions.get(eventName);\\n    for (const action of actions) {\\n      try {\\n        this._globalEval(action);\\n      } catch (error) {\\n        const serializedError = serializeError(error);\\n        serializedError.value = `Error when executing \\\"${eventName}\\\" for field \\\"${this._id}\\\"\\\\n${serializedError.value}`;\\n        this._send(serializedError);\\n      }\\n    }\\n    return true;\\n  }\\n}\\nclass RadioButtonField extends Field {\\n  constructor(otherButtons, data) {\\n    super(data);\\n    this.exportValues = [this.exportValues];\\n    this._radioIds = [this._id];\\n    this._radioActions = [this._actions];\\n    for (const radioData of otherButtons) {\\n      this.exportValues.push(radioData.exportValues);\\n      this._radioIds.push(radioData.id);\\n      this._radioActions.push(createActionsMap(radioData.actions));\\n      if (this._value === radioData.exportValues) {\\n        this._id = radioData.id;\\n      }\\n    }\\n    this._hasBeenInitialized = true;\\n    this._value = data.value || \\\"\\\";\\n  }\\n  get _siblings() {\\n    return this._radioIds.filter(id => id !== this._id);\\n  }\\n  set _siblings(_) {}\\n  get value() {\\n    return this._value;\\n  }\\n  set value(value) {\\n    if (!this._hasBeenInitialized) {\\n      return;\\n    }\\n    if (value === null || value === undefined) {\\n      this._value = \\\"\\\";\\n    }\\n    const i = this.exportValues.indexOf(value);\\n    if (0 \u003C= i && i \u003C this._radioIds.length) {\\n      this._id = this._radioIds[i];\\n      this._value = value;\\n    } else if (value === \\\"Off\\\" && this._radioIds.length === 2) {\\n      const nextI = (1 + this._radioIds.indexOf(this._id)) % 2;\\n      this._id = this._radioIds[nextI];\\n      this._value = this.exportValues[nextI];\\n    }\\n  }\\n  checkThisBox(nWidget, bCheckIt = true) {\\n    if (nWidget \u003C 0 || nWidget >= this._radioIds.length || !bCheckIt) {\\n      return;\\n    }\\n    this._id = this._radioIds[nWidget];\\n    this._value = this.exportValues[nWidget];\\n    this._send({\\n      id: this._id,\\n      value: this._value\\n    });\\n  }\\n  isBoxChecked(nWidget) {\\n    return nWidget >= 0 && nWidget \u003C this._radioIds.length && this._id === this._radioIds[nWidget];\\n  }\\n  isDefaultChecked(nWidget) {\\n    return nWidget >= 0 && nWidget \u003C this.exportValues.length && this.defaultValue === this.exportValues[nWidget];\\n  }\\n  _getExportValue(state) {\\n    const i = this._radioIds.indexOf(this._id);\\n    return this.exportValues[i];\\n  }\\n  _runActions(event) {\\n    const i = this._radioIds.indexOf(this._id);\\n    this._actions = this._radioActions[i];\\n    return super._runActions(event);\\n  }\\n  _isButton() {\\n    return true;\\n  }\\n}\\nclass CheckboxField extends RadioButtonField {\\n  get value() {\\n    return this._value;\\n  }\\n  set value(value) {\\n    if (!value || value === \\\"Off\\\") {\\n      this._value = \\\"Off\\\";\\n    } else {\\n      super.value = value;\\n    }\\n  }\\n  _getExportValue(state) {\\n    return state ? super._getExportValue(state) : \\\"Off\\\";\\n  }\\n  isBoxChecked(nWidget) {\\n    if (this._value === \\\"Off\\\") {\\n      return false;\\n    }\\n    return super.isBoxChecked(nWidget);\\n  }\\n  isDefaultChecked(nWidget) {\\n    if (this.defaultValue === \\\"Off\\\") {\\n      return this._value === \\\"Off\\\";\\n    }\\n    return super.isDefaultChecked(nWidget);\\n  }\\n  checkThisBox(nWidget, bCheckIt = true) {\\n    if (nWidget \u003C 0 || nWidget >= this._radioIds.length) {\\n      return;\\n    }\\n    this._id = this._radioIds[nWidget];\\n    this._value = bCheckIt ? this.exportValues[nWidget] : \\\"Off\\\";\\n    this._send({\\n      id: this._id,\\n      value: this._value\\n    });\\n  }\\n}\\n\\n\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.reduce.js\\nvar es_iterator_reduce = __webpack_require__(8237);\\n;\u002F\u002F .\u002Fsrc\u002Fscripting_api\u002Faform.js\\n\\n\\n\\n\\nclass AForm {\\n  constructor(document, app, util, color) {\\n    this._document = document;\\n    this._app = app;\\n    this._util = util;\\n    this._color = color;\\n    this._dateFormats = [\\\"m\u002Fd\\\", \\\"m\u002Fd\u002Fyy\\\", \\\"mm\u002Fdd\u002Fyy\\\", \\\"mm\u002Fyy\\\", \\\"d-mmm\\\", \\\"d-mmm-yy\\\", \\\"dd-mmm-yy\\\", \\\"yy-mm-dd\\\", \\\"mmm-yy\\\", \\\"mmmm-yy\\\", \\\"mmm d, yyyy\\\", \\\"mmmm d, yyyy\\\", \\\"m\u002Fd\u002Fyy h:MM tt\\\", \\\"m\u002Fd\u002Fyy HH:MM\\\"];\\n    this._timeFormats = [\\\"HH:MM\\\", \\\"h:MM tt\\\", \\\"HH:MM:ss\\\", \\\"h:MM:ss tt\\\"];\\n    this._emailRegex = new RegExp(\\\"^[a-zA-Z0-9.!#$%&'*+\\\\\\\\\u002F=?^_`{|}~-]+\\\" + \\\"@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\\" + \\\"(?:\\\\\\\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$\\\");\\n  }\\n  _mkTargetName(event) {\\n    return event.target ? `[ ${event.target.name} ]` : \\\"\\\";\\n  }\\n  _parseDate(cFormat, cDate, strict = false) {\\n    let date = null;\\n    try {\\n      date = this._util._scand(cFormat, cDate, strict);\\n    } catch {}\\n    if (date) {\\n      return date;\\n    }\\n    if (strict) {\\n      return null;\\n    }\\n    date = Date.parse(cDate);\\n    return isNaN(date) ? null : new Date(date);\\n  }\\n  AFMergeChange(event = globalThis.event) {\\n    if (event.willCommit) {\\n      return event.value.toString();\\n    }\\n    return this._app._eventDispatcher.mergeChange(event);\\n  }\\n  AFParseDateEx(cString, cOrder) {\\n    return this._parseDate(cOrder, cString);\\n  }\\n  AFExtractNums(str) {\\n    if (typeof str === \\\"number\\\") {\\n      return [str];\\n    }\\n    if (!str || typeof str !== \\\"string\\\") {\\n      return null;\\n    }\\n    const first = str.charAt(0);\\n    if (first === \\\".\\\" || first === \\\",\\\") {\\n      str = `0${str}`;\\n    }\\n    const numbers = str.match(\u002F(\\\\d+)\u002Fg);\\n    if (numbers.length === 0) {\\n      return null;\\n    }\\n    return numbers;\\n  }\\n  AFMakeNumber(str) {\\n    if (typeof str === \\\"number\\\") {\\n      return str;\\n    }\\n    if (typeof str !== \\\"string\\\") {\\n      return null;\\n    }\\n    str = str.trim().replace(\\\",\\\", \\\".\\\");\\n    const number = parseFloat(str);\\n    if (isNaN(number) || !isFinite(number)) {\\n      return null;\\n    }\\n    return number;\\n  }\\n  AFMakeArrayFromList(string) {\\n    if (typeof string === \\\"string\\\") {\\n      return string.split(\u002F, ?\u002Fg);\\n    }\\n    return string;\\n  }\\n  AFNumber_Format(nDec, sepStyle, negStyle, currStyle, strCurrency, bCurrencyPrepend) {\\n    const event = globalThis.event;\\n    let value = this.AFMakeNumber(event.value);\\n    if (value === null) {\\n      event.value = \\\"\\\";\\n      return;\\n    }\\n    const sign = Math.sign(value);\\n    const buf = [];\\n    let hasParen = false;\\n    if (sign === -1 && bCurrencyPrepend && negStyle === 0) {\\n      buf.push(\\\"-\\\");\\n    }\\n    if ((negStyle === 2 || negStyle === 3) && sign === -1) {\\n      buf.push(\\\"(\\\");\\n      hasParen = true;\\n    }\\n    if (bCurrencyPrepend) {\\n      buf.push(strCurrency);\\n    }\\n    sepStyle = Math.min(Math.max(0, Math.floor(sepStyle)), 4);\\n    buf.push(\\\"%,\\\", sepStyle, \\\".\\\", nDec.toString(), \\\"f\\\");\\n    if (!bCurrencyPrepend) {\\n      buf.push(strCurrency);\\n    }\\n    if (hasParen) {\\n      buf.push(\\\")\\\");\\n    }\\n    if (negStyle === 1 || negStyle === 3) {\\n      event.target.textColor = sign === 1 ? this._color.black : this._color.red;\\n    }\\n    if ((negStyle !== 0 || bCurrencyPrepend) && sign === -1) {\\n      value = -value;\\n    }\\n    const formatStr = buf.join(\\\"\\\");\\n    event.value = this._util.printf(formatStr, value);\\n  }\\n  AFNumber_Keystroke(nDec, sepStyle, negStyle, currStyle, strCurrency, bCurrencyPrepend) {\\n    const event = globalThis.event;\\n    let value = this.AFMergeChange(event);\\n    if (!value) {\\n      return;\\n    }\\n    value = value.trim();\\n    let pattern;\\n    if (sepStyle > 1) {\\n      pattern = event.willCommit ? \u002F^[+-]?(\\\\d+(,\\\\d*)?|,\\\\d+)$\u002F : \u002F^[+-]?\\\\d*,?\\\\d*$\u002F;\\n    } else {\\n      pattern = event.willCommit ? \u002F^[+-]?(\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)$\u002F : \u002F^[+-]?\\\\d*\\\\.?\\\\d*$\u002F;\\n    }\\n    if (!pattern.test(value)) {\\n      if (event.willCommit) {\\n        const err = `${GlobalConstants.IDS_INVALID_VALUE} ${this._mkTargetName(event)}`;\\n        this._app.alert(err);\\n      }\\n      event.rc = false;\\n    }\\n    if (event.willCommit && sepStyle > 1) {\\n      event.value = parseFloat(value.replace(\\\",\\\", \\\".\\\"));\\n    }\\n  }\\n  AFPercent_Format(nDec, sepStyle, percentPrepend = false) {\\n    if (typeof nDec !== \\\"number\\\") {\\n      return;\\n    }\\n    if (typeof sepStyle !== \\\"number\\\") {\\n      return;\\n    }\\n    if (nDec \u003C 0) {\\n      throw new Error(\\\"Invalid nDec value in AFPercent_Format\\\");\\n    }\\n    const event = globalThis.event;\\n    if (nDec > 512) {\\n      event.value = \\\"%\\\";\\n      return;\\n    }\\n    nDec = Math.floor(nDec);\\n    sepStyle = Math.min(Math.max(0, Math.floor(sepStyle)), 4);\\n    let value = this.AFMakeNumber(event.value);\\n    if (value === null) {\\n      event.value = \\\"%\\\";\\n      return;\\n    }\\n    const formatStr = `%,${sepStyle}.${nDec}f`;\\n    value = this._util.printf(formatStr, value * 100);\\n    event.value = percentPrepend ? `%${value}` : `${value}%`;\\n  }\\n  AFPercent_Keystroke(nDec, sepStyle) {\\n    this.AFNumber_Keystroke(nDec, sepStyle, 0, 0, \\\"\\\", true);\\n  }\\n  AFDate_FormatEx(cFormat) {\\n    const event = globalThis.event;\\n    const value = event.value;\\n    if (!value) {\\n      return;\\n    }\\n    const date = this._parseDate(cFormat, value);\\n    if (date !== null) {\\n      event.value = this._util.printd(cFormat, date);\\n    }\\n  }\\n  AFDate_Format(pdf) {\\n    if (pdf >= 0 && pdf \u003C this._dateFormats.length) {\\n      this.AFDate_FormatEx(this._dateFormats[pdf]);\\n    }\\n  }\\n  AFDate_KeystrokeEx(cFormat) {\\n    const event = globalThis.event;\\n    if (!event.willCommit) {\\n      return;\\n    }\\n    const value = this.AFMergeChange(event);\\n    if (!value) {\\n      return;\\n    }\\n    if (this._parseDate(cFormat, value, true) === null) {\\n      const invalid = GlobalConstants.IDS_INVALID_DATE;\\n      const invalid2 = GlobalConstants.IDS_INVALID_DATE2;\\n      const err = `${invalid} ${this._mkTargetName(event)}${invalid2}${cFormat}`;\\n      this._app.alert(err);\\n      event.rc = false;\\n    }\\n  }\\n  AFDate_Keystroke(pdf) {\\n    if (pdf >= 0 && pdf \u003C this._dateFormats.length) {\\n      this.AFDate_KeystrokeEx(this._dateFormats[pdf]);\\n    }\\n  }\\n  AFRange_Validate(bGreaterThan, nGreaterThan, bLessThan, nLessThan) {\\n    const event = globalThis.event;\\n    if (!event.value) {\\n      return;\\n    }\\n    const value = this.AFMakeNumber(event.value);\\n    if (value === null) {\\n      return;\\n    }\\n    bGreaterThan = !!bGreaterThan;\\n    bLessThan = !!bLessThan;\\n    if (bGreaterThan) {\\n      nGreaterThan = this.AFMakeNumber(nGreaterThan);\\n      if (nGreaterThan === null) {\\n        return;\\n      }\\n    }\\n    if (bLessThan) {\\n      nLessThan = this.AFMakeNumber(nLessThan);\\n      if (nLessThan === null) {\\n        return;\\n      }\\n    }\\n    let err = \\\"\\\";\\n    if (bGreaterThan && bLessThan) {\\n      if (value \u003C nGreaterThan || value > nLessThan) {\\n        err = this._util.printf(GlobalConstants.IDS_GT_AND_LT, nGreaterThan, nLessThan);\\n      }\\n    } else if (bGreaterThan) {\\n      if (value \u003C nGreaterThan) {\\n        err = this._util.printf(GlobalConstants.IDS_GREATER_THAN, nGreaterThan);\\n      }\\n    } else if (value > nLessThan) {\\n      err = this._util.printf(GlobalConstants.IDS_LESS_THAN, nLessThan);\\n    }\\n    if (err) {\\n      this._app.alert(err);\\n      event.rc = false;\\n    }\\n  }\\n  AFSimple(cFunction, nValue1, nValue2) {\\n    const value1 = this.AFMakeNumber(nValue1);\\n    if (value1 === null) {\\n      throw new Error(\\\"Invalid nValue1 in AFSimple\\\");\\n    }\\n    const value2 = this.AFMakeNumber(nValue2);\\n    if (value2 === null) {\\n      throw new Error(\\\"Invalid nValue2 in AFSimple\\\");\\n    }\\n    switch (cFunction) {\\n      case \\\"AVG\\\":\\n        return (value1 + value2) \u002F 2;\\n      case \\\"SUM\\\":\\n        return value1 + value2;\\n      case \\\"PRD\\\":\\n        return value1 * value2;\\n      case \\\"MIN\\\":\\n        return Math.min(value1, value2);\\n      case \\\"MAX\\\":\\n        return Math.max(value1, value2);\\n    }\\n    throw new Error(\\\"Invalid cFunction in AFSimple\\\");\\n  }\\n  AFSimple_Calculate(cFunction, cFields) {\\n    const actions = {\\n      AVG: args => args.reduce((acc, value) => acc + value, 0) \u002F args.length,\\n      SUM: args => args.reduce((acc, value) => acc + value, 0),\\n      PRD: args => args.reduce((acc, value) => acc * value, 1),\\n      MIN: args => Math.min(...args),\\n      MAX: args => Math.max(...args)\\n    };\\n    if (!(cFunction in actions)) {\\n      throw new TypeError(\\\"Invalid function in AFSimple_Calculate\\\");\\n    }\\n    const event = globalThis.event;\\n    const values = [];\\n    cFields = this.AFMakeArrayFromList(cFields);\\n    for (const cField of cFields) {\\n      const field = this._document.getField(cField);\\n      if (!field) {\\n        continue;\\n      }\\n      for (const child of field.getArray()) {\\n        const number = this.AFMakeNumber(child.value);\\n        values.push(number ?? 0);\\n      }\\n    }\\n    if (values.length === 0) {\\n      event.value = 0;\\n      return;\\n    }\\n    const res = actions[cFunction](values);\\n    event.value = Math.round(1e6 * res) \u002F 1e6;\\n  }\\n  AFSpecial_Format(psf) {\\n    const event = globalThis.event;\\n    if (!event.value) {\\n      return;\\n    }\\n    psf = this.AFMakeNumber(psf);\\n    let formatStr;\\n    switch (psf) {\\n      case 0:\\n        formatStr = \\\"99999\\\";\\n        break;\\n      case 1:\\n        formatStr = \\\"99999-9999\\\";\\n        break;\\n      case 2:\\n        formatStr = this._util.printx(\\\"9999999999\\\", event.value).length >= 10 ? \\\"(999) 999-9999\\\" : \\\"999-9999\\\";\\n        break;\\n      case 3:\\n        formatStr = \\\"999-99-9999\\\";\\n        break;\\n      default:\\n        throw new Error(\\\"Invalid psf in AFSpecial_Format\\\");\\n    }\\n    event.value = this._util.printx(formatStr, event.value);\\n  }\\n  AFSpecial_KeystrokeEx(cMask) {\\n    const event = globalThis.event;\\n    const simplifiedFormatStr = cMask.replaceAll(\u002F[^9AOX]\u002Fg, \\\"\\\");\\n    this.#AFSpecial_KeystrokeEx_helper(simplifiedFormatStr, null, false);\\n    if (event.rc) {\\n      return;\\n    }\\n    event.rc = true;\\n    this.#AFSpecial_KeystrokeEx_helper(cMask, null, true);\\n  }\\n  #AFSpecial_KeystrokeEx_helper(cMask, value, warn) {\\n    if (!cMask) {\\n      return;\\n    }\\n    const event = globalThis.event;\\n    value ||= this.AFMergeChange(event);\\n    if (!value) {\\n      return;\\n    }\\n    const checkers = new Map([[\\\"9\\\", char => char >= \\\"0\\\" && char \u003C= \\\"9\\\"], [\\\"A\\\", char => \\\"a\\\" \u003C= char && char \u003C= \\\"z\\\" || \\\"A\\\" \u003C= char && char \u003C= \\\"Z\\\"], [\\\"O\\\", char => \\\"a\\\" \u003C= char && char \u003C= \\\"z\\\" || \\\"A\\\" \u003C= char && char \u003C= \\\"Z\\\" || \\\"0\\\" \u003C= char && char \u003C= \\\"9\\\"], [\\\"X\\\", char => true]]);\\n    function _checkValidity(_value, _cMask) {\\n      for (let i = 0, ii = _value.length; i \u003C ii; i++) {\\n        const mask = _cMask.charAt(i);\\n        const char = _value.charAt(i);\\n        const checker = checkers.get(mask);\\n        if (checker) {\\n          if (!checker(char)) {\\n            return false;\\n          }\\n        } else if (mask !== char) {\\n          return false;\\n        }\\n      }\\n      return true;\\n    }\\n    const err = `${GlobalConstants.IDS_INVALID_VALUE} = \\\"${cMask}\\\"`;\\n    if (value.length > cMask.length) {\\n      if (warn) {\\n        this._app.alert(err);\\n      }\\n      event.rc = false;\\n      return;\\n    }\\n    if (event.willCommit) {\\n      if (value.length \u003C cMask.length) {\\n        if (warn) {\\n          this._app.alert(err);\\n        }\\n        event.rc = false;\\n        return;\\n      }\\n      if (!_checkValidity(value, cMask)) {\\n        if (warn) {\\n          this._app.alert(err);\\n        }\\n        event.rc = false;\\n        return;\\n      }\\n      event.value += cMask.substring(value.length);\\n      return;\\n    }\\n    if (value.length \u003C cMask.length) {\\n      cMask = cMask.substring(0, value.length);\\n    }\\n    if (!_checkValidity(value, cMask)) {\\n      if (warn) {\\n        this._app.alert(err);\\n      }\\n      event.rc = false;\\n    }\\n  }\\n  AFSpecial_Keystroke(psf) {\\n    const event = globalThis.event;\\n    psf = this.AFMakeNumber(psf);\\n    let value = this.AFMergeChange(event);\\n    let formatStr, secondFormatStr;\\n    switch (psf) {\\n      case 0:\\n        formatStr = \\\"99999\\\";\\n        break;\\n      case 1:\\n        formatStr = \\\"99999-9999\\\";\\n        break;\\n      case 2:\\n        formatStr = \\\"999-9999\\\";\\n        secondFormatStr = \\\"(999) 999-9999\\\";\\n        break;\\n      case 3:\\n        formatStr = \\\"999-99-9999\\\";\\n        break;\\n      default:\\n        throw new Error(\\\"Invalid psf in AFSpecial_Keystroke\\\");\\n    }\\n    const formats = secondFormatStr ? [formatStr, secondFormatStr] : [formatStr];\\n    for (const format of formats) {\\n      this.#AFSpecial_KeystrokeEx_helper(format, value, false);\\n      if (event.rc) {\\n        return;\\n      }\\n      event.rc = true;\\n    }\\n    const re = \u002F([-()]|\\\\s)+\u002Fg;\\n    value = value.replaceAll(re, \\\"\\\");\\n    for (const format of formats) {\\n      this.#AFSpecial_KeystrokeEx_helper(format.replaceAll(re, \\\"\\\"), value, false);\\n      if (event.rc) {\\n        return;\\n      }\\n      event.rc = true;\\n    }\\n    this.AFSpecial_KeystrokeEx((secondFormatStr && value.match(\u002F\\\\d\u002Fg) || []).length > 7 ? secondFormatStr : formatStr);\\n  }\\n  AFTime_FormatEx(cFormat) {\\n    this.AFDate_FormatEx(cFormat);\\n  }\\n  AFTime_Format(pdf) {\\n    if (pdf >= 0 && pdf \u003C this._timeFormats.length) {\\n      this.AFDate_FormatEx(this._timeFormats[pdf]);\\n    }\\n  }\\n  AFTime_KeystrokeEx(cFormat) {\\n    this.AFDate_KeystrokeEx(cFormat);\\n  }\\n  AFTime_Keystroke(pdf) {\\n    if (pdf >= 0 && pdf \u003C this._timeFormats.length) {\\n      this.AFDate_KeystrokeEx(this._timeFormats[pdf]);\\n    }\\n  }\\n  eMailValidate(str) {\\n    return this._emailRegex.test(str);\\n  }\\n  AFExactMatch(rePatterns, str) {\\n    if (rePatterns instanceof RegExp) {\\n      return str.match(rePatterns)?.[0] === str || 0;\\n    }\\n    return rePatterns.findIndex(re => str.match(re)?.[0] === str) + 1;\\n  }\\n}\\n\\n;\u002F\u002F .\u002Fsrc\u002Fscripting_api\u002Fevent.js\\n\\nclass Event {\\n  constructor(data) {\\n    this.change = data.change || \\\"\\\";\\n    this.changeEx = data.changeEx || null;\\n    this.commitKey = data.commitKey || 0;\\n    this.fieldFull = data.fieldFull || false;\\n    this.keyDown = data.keyDown || false;\\n    this.modifier = data.modifier || false;\\n    this.name = data.name;\\n    this.rc = true;\\n    this.richChange = data.richChange || [];\\n    this.richChangeEx = data.richChangeEx || [];\\n    this.richValue = data.richValue || [];\\n    this.selEnd = data.selEnd ?? -1;\\n    this.selStart = data.selStart ?? -1;\\n    this.shift = data.shift || false;\\n    this.source = data.source || null;\\n    this.target = data.target || null;\\n    this.targetName = \\\"\\\";\\n    this.type = \\\"Field\\\";\\n    this.value = data.value || \\\"\\\";\\n    this.willCommit = data.willCommit || false;\\n  }\\n}\\nclass EventDispatcher {\\n  constructor(document, calculationOrder, objects, externalCall) {\\n    this._document = document;\\n    this._calculationOrder = calculationOrder;\\n    this._objects = objects;\\n    this._externalCall = externalCall;\\n    this._document.obj._eventDispatcher = this;\\n    this._isCalculating = false;\\n  }\\n  mergeChange(event) {\\n    let value = event.value;\\n    if (Array.isArray(value)) {\\n      return value;\\n    }\\n    if (typeof value !== \\\"string\\\") {\\n      value = value.toString();\\n    }\\n    const prefix = event.selStart >= 0 ? value.substring(0, event.selStart) : \\\"\\\";\\n    const postfix = event.selEnd >= 0 && event.selEnd \u003C= value.length ? value.substring(event.selEnd) : \\\"\\\";\\n    return `${prefix}${event.change}${postfix}`;\\n  }\\n  userActivation() {\\n    this._document.obj._userActivation = true;\\n    this._externalCall(\\\"setTimeout\\\", [USERACTIVATION_CALLBACKID, USERACTIVATION_MAXTIME_VALIDITY]);\\n  }\\n  dispatch(baseEvent) {\\n    const id = baseEvent.id;\\n    if (!(id in this._objects)) {\\n      let event;\\n      if (id === \\\"doc\\\" || id === \\\"page\\\") {\\n        event = globalThis.event = new Event(baseEvent);\\n        event.source = event.target = this._document.wrapped;\\n        event.name = baseEvent.name;\\n      }\\n      if (id === \\\"doc\\\") {\\n        const eventName = event.name;\\n        if (eventName === \\\"Open\\\") {\\n          this.userActivation();\\n          this._document.obj._initActions();\\n          this.formatAll();\\n        }\\n        if (![\\\"DidPrint\\\", \\\"DidSave\\\", \\\"WillPrint\\\", \\\"WillSave\\\"].includes(eventName)) {\\n          this.userActivation();\\n        }\\n        this._document.obj._dispatchDocEvent(event.name);\\n      } else if (id === \\\"page\\\") {\\n        this.userActivation();\\n        this._document.obj._dispatchPageEvent(event.name, baseEvent.actions, baseEvent.pageNumber);\\n      } else if (id === \\\"app\\\" && baseEvent.name === \\\"ResetForm\\\") {\\n        this.userActivation();\\n        for (const fieldId of baseEvent.ids) {\\n          const obj = this._objects[fieldId];\\n          obj?.obj._reset();\\n        }\\n      }\\n      return;\\n    }\\n    const name = baseEvent.name;\\n    const source = this._objects[id];\\n    const event = globalThis.event = new Event(baseEvent);\\n    let savedChange;\\n    this.userActivation();\\n    if (source.obj._isButton()) {\\n      source.obj._id = id;\\n      event.value = source.obj._getExportValue(event.value);\\n      if (name === \\\"Action\\\") {\\n        source.obj._value = event.value;\\n      }\\n    }\\n    switch (name) {\\n      case \\\"Keystroke\\\":\\n        savedChange = {\\n          value: event.value,\\n          changeEx: event.changeEx,\\n          change: event.change,\\n          selStart: event.selStart,\\n          selEnd: event.selEnd\\n        };\\n        break;\\n      case \\\"Blur\\\":\\n      case \\\"Focus\\\":\\n        Object.defineProperty(event, \\\"value\\\", {\\n          configurable: false,\\n          writable: false,\\n          enumerable: true,\\n          value: event.value\\n        });\\n        break;\\n      case \\\"Validate\\\":\\n        this.runValidation(source, event);\\n        return;\\n      case \\\"Action\\\":\\n        this.runActions(source, source, event, name);\\n        this.runCalculate(source, event);\\n        return;\\n    }\\n    this.runActions(source, source, event, name);\\n    if (name !== \\\"Keystroke\\\") {\\n      return;\\n    }\\n    if (event.rc) {\\n      if (event.willCommit) {\\n        this.runValidation(source, event);\\n      } else {\\n        if (source.obj._isChoice) {\\n          source.obj.value = savedChange.changeEx;\\n          source.obj._send({\\n            id: source.obj._id,\\n            siblings: source.obj._siblings,\\n            value: source.obj.value\\n          });\\n          return;\\n        }\\n        const value = source.obj.value = this.mergeChange(event);\\n        let selStart, selEnd;\\n        if (event.selStart !== savedChange.selStart || event.selEnd !== savedChange.selEnd) {\\n          selStart = event.selStart;\\n          selEnd = event.selEnd;\\n        } else {\\n          selEnd = selStart = savedChange.selStart + event.change.length;\\n        }\\n        source.obj._send({\\n          id: source.obj._id,\\n          siblings: source.obj._siblings,\\n          value,\\n          selRange: [selStart, selEnd]\\n        });\\n      }\\n    } else if (!event.willCommit) {\\n      source.obj._send({\\n        id: source.obj._id,\\n        siblings: source.obj._siblings,\\n        value: savedChange.value,\\n        selRange: [savedChange.selStart, savedChange.selEnd]\\n      });\\n    } else {\\n      source.obj._send({\\n        id: source.obj._id,\\n        siblings: source.obj._siblings,\\n        value: \\\"\\\",\\n        formattedValue: null,\\n        selRange: [0, 0]\\n      });\\n    }\\n  }\\n  formatAll() {\\n    const event = globalThis.event = new Event({});\\n    for (const source of Object.values(this._objects)) {\\n      event.value = source.obj._getValue();\\n      this.runActions(source, source, event, \\\"Format\\\");\\n    }\\n  }\\n  runValidation(source, event) {\\n    const didValidateRun = this.runActions(source, source, event, \\\"Validate\\\");\\n    if (event.rc) {\\n      source.obj.value = event.value;\\n      this.runCalculate(source, event);\\n      const savedValue = event.value = source.obj._getValue();\\n      let formattedValue = null;\\n      if (this.runActions(source, source, event, \\\"Format\\\")) {\\n        formattedValue = event.value?.toString?.();\\n      }\\n      source.obj._send({\\n        id: source.obj._id,\\n        siblings: source.obj._siblings,\\n        value: savedValue,\\n        formattedValue\\n      });\\n      event.value = savedValue;\\n    } else if (didValidateRun) {\\n      source.obj._send({\\n        id: source.obj._id,\\n        siblings: source.obj._siblings,\\n        value: \\\"\\\",\\n        formattedValue: null,\\n        selRange: [0, 0],\\n        focus: true\\n      });\\n    }\\n  }\\n  runActions(source, target, event, eventName) {\\n    event.source = source.wrapped;\\n    event.target = target.wrapped;\\n    event.name = eventName;\\n    event.targetName = target.obj.name;\\n    event.rc = true;\\n    return target.obj._runActions(event);\\n  }\\n  calculateNow() {\\n    if (!this._calculationOrder || this._isCalculating || !this._document.obj.calculate) {\\n      return;\\n    }\\n    this._isCalculating = true;\\n    const first = this._calculationOrder[0];\\n    const source = this._objects[first];\\n    globalThis.event = new Event({});\\n    this.runCalculate(source, globalThis.event);\\n    this._isCalculating = false;\\n  }\\n  runCalculate(source, event) {\\n    if (!this._calculationOrder || !this._document.obj.calculate) {\\n      return;\\n    }\\n    for (const targetId of this._calculationOrder) {\\n      if (!(targetId in this._objects)) {\\n        continue;\\n      }\\n      if (!this._document.obj.calculate) {\\n        break;\\n      }\\n      event.value = null;\\n      const target = this._objects[targetId];\\n      let savedValue = target.obj._getValue();\\n      this.runActions(source, target, event, \\\"Calculate\\\");\\n      if (!event.rc) {\\n        continue;\\n      }\\n      if (event.value !== null) {\\n        target.obj.value = event.value;\\n      } else {\\n        event.value = target.obj._getValue();\\n      }\\n      this.runActions(target, target, event, \\\"Validate\\\");\\n      if (!event.rc) {\\n        if (target.obj._getValue() !== savedValue) {\\n          target.wrapped.value = savedValue;\\n        }\\n        continue;\\n      }\\n      if (event.value === null) {\\n        event.value = target.obj._getValue();\\n      }\\n      savedValue = target.obj._getValue();\\n      let formattedValue = null;\\n      if (this.runActions(target, target, event, \\\"Format\\\")) {\\n        formattedValue = event.value?.toString?.();\\n      }\\n      target.obj._send({\\n        id: target.obj._id,\\n        siblings: target.obj._siblings,\\n        value: savedValue,\\n        formattedValue\\n      });\\n    }\\n  }\\n}\\n\\n;\u002F\u002F .\u002Fsrc\u002Fscripting_api\u002Ffullscreen.js\\n\\n\\nclass FullScreen extends PDFObject {\\n  constructor(data) {\\n    super(data);\\n    this._backgroundColor = [];\\n    this._clickAdvances = true;\\n    this._cursor = Cursor.hidden;\\n    this._defaultTransition = \\\"\\\";\\n    this._escapeExits = true;\\n    this._isFullScreen = true;\\n    this._loop = false;\\n    this._timeDelay = 3600;\\n    this._usePageTiming = false;\\n    this._useTimer = false;\\n  }\\n  get backgroundColor() {\\n    return this._backgroundColor;\\n  }\\n  set backgroundColor(_) {}\\n  get clickAdvances() {\\n    return this._clickAdvances;\\n  }\\n  set clickAdvances(_) {}\\n  get cursor() {\\n    return this._cursor;\\n  }\\n  set cursor(_) {}\\n  get defaultTransition() {\\n    return this._defaultTransition;\\n  }\\n  set defaultTransition(_) {}\\n  get escapeExits() {\\n    return this._escapeExits;\\n  }\\n  set escapeExits(_) {}\\n  get isFullScreen() {\\n    return this._isFullScreen;\\n  }\\n  set isFullScreen(_) {}\\n  get loop() {\\n    return this._loop;\\n  }\\n  set loop(_) {}\\n  get timeDelay() {\\n    return this._timeDelay;\\n  }\\n  set timeDelay(_) {}\\n  get transitions() {\\n    return [\\\"Replace\\\", \\\"WipeRight\\\", \\\"WipeLeft\\\", \\\"WipeDown\\\", \\\"WipeUp\\\", \\\"SplitHorizontalIn\\\", \\\"SplitHorizontalOut\\\", \\\"SplitVerticalIn\\\", \\\"SplitVerticalOut\\\", \\\"BlindsHorizontal\\\", \\\"BlindsVertical\\\", \\\"BoxIn\\\", \\\"BoxOut\\\", \\\"GlitterRight\\\", \\\"GlitterDown\\\", \\\"GlitterRightDown\\\", \\\"Dissolve\\\", \\\"Random\\\"];\\n  }\\n  set transitions(_) {\\n    throw new Error(\\\"fullscreen.transitions is read-only\\\");\\n  }\\n  get usePageTiming() {\\n    return this._usePageTiming;\\n  }\\n  set usePageTiming(_) {}\\n  get useTimer() {\\n    return this._useTimer;\\n  }\\n  set useTimer(_) {}\\n}\\n\\n;\u002F\u002F .\u002Fsrc\u002Fscripting_api\u002Fthermometer.js\\n\\nclass Thermometer extends PDFObject {\\n  constructor(data) {\\n    super(data);\\n    this._cancelled = false;\\n    this._duration = 100;\\n    this._text = \\\"\\\";\\n    this._value = 0;\\n  }\\n  get cancelled() {\\n    return this._cancelled;\\n  }\\n  set cancelled(_) {\\n    throw new Error(\\\"thermometer.cancelled is read-only\\\");\\n  }\\n  get duration() {\\n    return this._duration;\\n  }\\n  set duration(val) {\\n    this._duration = val;\\n  }\\n  get text() {\\n    return this._text;\\n  }\\n  set text(val) {\\n    this._text = val;\\n  }\\n  get value() {\\n    return this._value;\\n  }\\n  set value(val) {\\n    this._value = val;\\n  }\\n  begin() {}\\n  end() {}\\n}\\n\\n;\u002F\u002F .\u002Fsrc\u002Fscripting_api\u002Fapp.js\\n\\n\\n\\n\\n\\n\\nclass App extends PDFObject {\\n  constructor(data) {\\n    super(data);\\n    this._constants = null;\\n    this._focusRect = true;\\n    this._fs = null;\\n    this._language = App._getLanguage(data.language);\\n    this._openInPlace = false;\\n    this._platform = App._getPlatform(data.platform);\\n    this._runtimeHighlight = false;\\n    this._runtimeHighlightColor = [\\\"T\\\"];\\n    this._thermometer = null;\\n    this._toolbar = false;\\n    this._document = data._document;\\n    this._proxyHandler = data.proxyHandler;\\n    this._objects = Object.create(null);\\n    this._eventDispatcher = new EventDispatcher(this._document, data.calculationOrder, this._objects, data.externalCall);\\n    this._timeoutIds = new WeakMap();\\n    if (typeof FinalizationRegistry !== \\\"undefined\\\") {\\n      this._timeoutIdsRegistry = new FinalizationRegistry(this._cleanTimeout.bind(this));\\n    } else {\\n      this._timeoutIdsRegistry = null;\\n    }\\n    this._timeoutCallbackIds = new Map();\\n    this._timeoutCallbackId = USERACTIVATION_CALLBACKID + 1;\\n    this._globalEval = data.globalEval;\\n    this._externalCall = data.externalCall;\\n  }\\n  _dispatchEvent(pdfEvent) {\\n    this._eventDispatcher.dispatch(pdfEvent);\\n  }\\n  _registerTimeoutCallback(cExpr) {\\n    const id = this._timeoutCallbackId++;\\n    this._timeoutCallbackIds.set(id, cExpr);\\n    return id;\\n  }\\n  _unregisterTimeoutCallback(id) {\\n    this._timeoutCallbackIds.delete(id);\\n  }\\n  _evalCallback({\\n    callbackId,\\n    interval\\n  }) {\\n    const documentObj = this._document.obj;\\n    if (callbackId === USERACTIVATION_CALLBACKID) {\\n      documentObj._userActivation = false;\\n      return;\\n    }\\n    const expr = this._timeoutCallbackIds.get(callbackId);\\n    if (!interval) {\\n      this._unregisterTimeoutCallback(callbackId);\\n    }\\n    if (expr) {\\n      const saveUserActivation = documentObj._userActivation;\\n      documentObj._userActivation = false;\\n      this._globalEval(expr);\\n      documentObj._userActivation = saveUserActivation;\\n    }\\n  }\\n  _registerTimeout(callbackId, interval) {\\n    const timeout = Object.create(null);\\n    const id = {\\n      callbackId,\\n      interval\\n    };\\n    this._timeoutIds.set(timeout, id);\\n    this._timeoutIdsRegistry?.register(timeout, id);\\n    return timeout;\\n  }\\n  _unregisterTimeout(timeout) {\\n    this._timeoutIdsRegistry?.unregister(timeout);\\n    const data = this._timeoutIds.get(timeout);\\n    if (!data) {\\n      return;\\n    }\\n    this._timeoutIds.delete(timeout);\\n    this._cleanTimeout(data);\\n  }\\n  _cleanTimeout({\\n    callbackId,\\n    interval\\n  }) {\\n    this._unregisterTimeoutCallback(callbackId);\\n    if (interval) {\\n      this._externalCall(\\\"clearInterval\\\", [callbackId]);\\n    } else {\\n      this._externalCall(\\\"clearTimeout\\\", [callbackId]);\\n    }\\n  }\\n  static _getPlatform(platform) {\\n    if (typeof platform === \\\"string\\\") {\\n      platform = platform.toLowerCase();\\n      if (platform.includes(\\\"win\\\")) {\\n        return \\\"WIN\\\";\\n      } else if (platform.includes(\\\"mac\\\")) {\\n        return \\\"MAC\\\";\\n      }\\n    }\\n    return \\\"UNIX\\\";\\n  }\\n  static _getLanguage(language) {\\n    const [main, sub] = language.toLowerCase().split(\u002F[-_]\u002F);\\n    switch (main) {\\n      case \\\"zh\\\":\\n        if (sub === \\\"cn\\\" || sub === \\\"sg\\\") {\\n          return \\\"CHS\\\";\\n        }\\n        return \\\"CHT\\\";\\n      case \\\"da\\\":\\n        return \\\"DAN\\\";\\n      case \\\"de\\\":\\n        return \\\"DEU\\\";\\n      case \\\"es\\\":\\n        return \\\"ESP\\\";\\n      case \\\"fr\\\":\\n        return \\\"FRA\\\";\\n      case \\\"it\\\":\\n        return \\\"ITA\\\";\\n      case \\\"ko\\\":\\n        return \\\"KOR\\\";\\n      case \\\"ja\\\":\\n        return \\\"JPN\\\";\\n      case \\\"nl\\\":\\n        return \\\"NLD\\\";\\n      case \\\"no\\\":\\n        return \\\"NOR\\\";\\n      case \\\"pt\\\":\\n        if (sub === \\\"br\\\") {\\n          return \\\"PTB\\\";\\n        }\\n        return \\\"ENU\\\";\\n      case \\\"fi\\\":\\n        return \\\"SUO\\\";\\n      case \\\"SV\\\":\\n        return \\\"SVE\\\";\\n      default:\\n        return \\\"ENU\\\";\\n    }\\n  }\\n  get activeDocs() {\\n    return [this._document.wrapped];\\n  }\\n  set activeDocs(_) {\\n    throw new Error(\\\"app.activeDocs is read-only\\\");\\n  }\\n  get calculate() {\\n    return this._document.obj.calculate;\\n  }\\n  set calculate(calculate) {\\n    this._document.obj.calculate = calculate;\\n  }\\n  get constants() {\\n    return this._constants ??= Object.freeze({\\n      align: Object.freeze({\\n        left: 0,\\n        center: 1,\\n        right: 2,\\n        top: 3,\\n        bottom: 4\\n      })\\n    });\\n  }\\n  set constants(_) {\\n    throw new Error(\\\"app.constants is read-only\\\");\\n  }\\n  get focusRect() {\\n    return this._focusRect;\\n  }\\n  set focusRect(val) {\\n    this._focusRect = val;\\n  }\\n  get formsVersion() {\\n    return FORMS_VERSION;\\n  }\\n  set formsVersion(_) {\\n    throw new Error(\\\"app.formsVersion is read-only\\\");\\n  }\\n  get fromPDFConverters() {\\n    return [];\\n  }\\n  set fromPDFConverters(_) {\\n    throw new Error(\\\"app.fromPDFConverters is read-only\\\");\\n  }\\n  get fs() {\\n    if (this._fs === null) {\\n      this._fs = new Proxy(new FullScreen({\\n        send: this._send\\n      }), this._proxyHandler);\\n    }\\n    return this._fs;\\n  }\\n  set fs(_) {\\n    throw new Error(\\\"app.fs is read-only\\\");\\n  }\\n  get language() {\\n    return this._language;\\n  }\\n  set language(_) {\\n    throw new Error(\\\"app.language is read-only\\\");\\n  }\\n  get media() {\\n    return undefined;\\n  }\\n  set media(_) {\\n    throw new Error(\\\"app.media is read-only\\\");\\n  }\\n  get monitors() {\\n    return [];\\n  }\\n  set monitors(_) {\\n    throw new Error(\\\"app.monitors is read-only\\\");\\n  }\\n  get numPlugins() {\\n    return 0;\\n  }\\n  set numPlugins(_) {\\n    throw new Error(\\\"app.numPlugins is read-only\\\");\\n  }\\n  get openInPlace() {\\n    return this._openInPlace;\\n  }\\n  set openInPlace(val) {\\n    this._openInPlace = val;\\n  }\\n  get platform() {\\n    return this._platform;\\n  }\\n  set platform(_) {\\n    throw new Error(\\\"app.platform is read-only\\\");\\n  }\\n  get plugins() {\\n    return [];\\n  }\\n  set plugins(_) {\\n    throw new Error(\\\"app.plugins is read-only\\\");\\n  }\\n  get printColorProfiles() {\\n    return [];\\n  }\\n  set printColorProfiles(_) {\\n    throw new Error(\\\"app.printColorProfiles is read-only\\\");\\n  }\\n  get printerNames() {\\n    return [];\\n  }\\n  set printerNames(_) {\\n    throw new Error(\\\"app.printerNames is read-only\\\");\\n  }\\n  get runtimeHighlight() {\\n    return this._runtimeHighlight;\\n  }\\n  set runtimeHighlight(val) {\\n    this._runtimeHighlight = val;\\n  }\\n  get runtimeHighlightColor() {\\n    return this._runtimeHighlightColor;\\n  }\\n  set runtimeHighlightColor(val) {\\n    if (Color._isValidColor(val)) {\\n      this._runtimeHighlightColor = val;\\n    }\\n  }\\n  get thermometer() {\\n    if (this._thermometer === null) {\\n      this._thermometer = new Proxy(new Thermometer({\\n        send: this._send\\n      }), this._proxyHandler);\\n    }\\n    return this._thermometer;\\n  }\\n  set thermometer(_) {\\n    throw new Error(\\\"app.thermometer is read-only\\\");\\n  }\\n  get toolbar() {\\n    return this._toolbar;\\n  }\\n  set toolbar(val) {\\n    this._toolbar = val;\\n  }\\n  get toolbarHorizontal() {\\n    return this.toolbar;\\n  }\\n  set toolbarHorizontal(value) {\\n    this.toolbar = value;\\n  }\\n  get toolbarVertical() {\\n    return this.toolbar;\\n  }\\n  set toolbarVertical(value) {\\n    this.toolbar = value;\\n  }\\n  get viewerType() {\\n    return VIEWER_TYPE;\\n  }\\n  set viewerType(_) {\\n    throw new Error(\\\"app.viewerType is read-only\\\");\\n  }\\n  get viewerVariation() {\\n    return VIEWER_VARIATION;\\n  }\\n  set viewerVariation(_) {\\n    throw new Error(\\\"app.viewerVariation is read-only\\\");\\n  }\\n  get viewerVersion() {\\n    return VIEWER_VERSION;\\n  }\\n  set viewerVersion(_) {\\n    throw new Error(\\\"app.viewerVersion is read-only\\\");\\n  }\\n  addMenuItem() {}\\n  addSubMenu() {}\\n  addToolButton() {}\\n  alert(cMsg, nIcon = 0, nType = 0, cTitle = \\\"PDF.js\\\", oDoc = null, oCheckbox = null) {\\n    if (!this._document.obj._userActivation) {\\n      return 0;\\n    }\\n    this._document.obj._userActivation = false;\\n    if (cMsg && typeof cMsg === \\\"object\\\") {\\n      nType = cMsg.nType;\\n      cMsg = cMsg.cMsg;\\n    }\\n    cMsg = (cMsg || \\\"\\\").toString();\\n    if (!cMsg) {\\n      return 0;\\n    }\\n    nType = typeof nType !== \\\"number\\\" || isNaN(nType) || nType \u003C 0 || nType > 3 ? 0 : nType;\\n    if (nType >= 2) {\\n      return this._externalCall(\\\"confirm\\\", [cMsg]) ? 4 : 3;\\n    }\\n    this._externalCall(\\\"alert\\\", [cMsg]);\\n    return 1;\\n  }\\n  beep() {}\\n  beginPriv() {}\\n  browseForDoc() {}\\n  clearInterval(oInterval) {\\n    this._unregisterTimeout(oInterval);\\n  }\\n  clearTimeOut(oTime) {\\n    this._unregisterTimeout(oTime);\\n  }\\n  endPriv() {}\\n  execDialog() {}\\n  execMenuItem(item) {\\n    if (!this._document.obj._userActivation) {\\n      return;\\n    }\\n    this._document.obj._userActivation = false;\\n    switch (item) {\\n      case \\\"SaveAs\\\":\\n        if (this._document.obj._disableSaving) {\\n          return;\\n        }\\n        this._send({\\n          command: item\\n        });\\n        break;\\n      case \\\"FirstPage\\\":\\n      case \\\"LastPage\\\":\\n      case \\\"NextPage\\\":\\n      case \\\"PrevPage\\\":\\n      case \\\"ZoomViewIn\\\":\\n      case \\\"ZoomViewOut\\\":\\n        this._send({\\n          command: item\\n        });\\n        break;\\n      case \\\"FitPage\\\":\\n        this._send({\\n          command: \\\"zoom\\\",\\n          value: \\\"page-fit\\\"\\n        });\\n        break;\\n      case \\\"Print\\\":\\n        if (this._document.obj._disablePrinting) {\\n          return;\\n        }\\n        this._send({\\n          command: \\\"print\\\"\\n        });\\n        break;\\n    }\\n  }\\n  getNthPlugInName() {}\\n  getPath() {}\\n  goBack() {}\\n  goForward() {}\\n  hideMenuItem() {}\\n  hideToolbarButton() {}\\n  launchURL() {}\\n  listMenuItems() {}\\n  listToolbarButtons() {}\\n  loadPolicyFile() {}\\n  mailGetAddrs() {}\\n  mailMsg() {}\\n  newDoc() {}\\n  newCollection() {}\\n  newFDF() {}\\n  openDoc() {}\\n  openFDF() {}\\n  popUpMenu() {}\\n  popUpMenuEx() {}\\n  removeToolButton() {}\\n  response(cQuestion, cTitle = \\\"\\\", cDefault = \\\"\\\", bPassword = \\\"\\\", cLabel = \\\"\\\") {\\n    if (!this._document.obj._userActivation) {\\n      return null;\\n    }\\n    this._document.obj._userActivation = false;\\n    if (cQuestion && typeof cQuestion === \\\"object\\\") {\\n      cDefault = cQuestion.cDefault;\\n      cQuestion = cQuestion.cQuestion;\\n    }\\n    cQuestion = (cQuestion || \\\"\\\").toString();\\n    cDefault = (cDefault || \\\"\\\").toString();\\n    return this._externalCall(\\\"prompt\\\", [cQuestion, cDefault || \\\"\\\"]);\\n  }\\n  setInterval(cExpr, nMilliseconds = 0) {\\n    if (cExpr && typeof cExpr === \\\"object\\\") {\\n      nMilliseconds = cExpr.nMilliseconds || 0;\\n      cExpr = cExpr.cExpr;\\n    }\\n    if (typeof cExpr !== \\\"string\\\") {\\n      throw new TypeError(\\\"First argument of app.setInterval must be a string\\\");\\n    }\\n    if (typeof nMilliseconds !== \\\"number\\\") {\\n      throw new TypeError(\\\"Second argument of app.setInterval must be a number\\\");\\n    }\\n    const callbackId = this._registerTimeoutCallback(cExpr);\\n    this._externalCall(\\\"setInterval\\\", [callbackId, nMilliseconds]);\\n    return this._registerTimeout(callbackId, true);\\n  }\\n  setTimeOut(cExpr, nMilliseconds = 0) {\\n    if (cExpr && typeof cExpr === \\\"object\\\") {\\n      nMilliseconds = cExpr.nMilliseconds || 0;\\n      cExpr = cExpr.cExpr;\\n    }\\n    if (typeof cExpr !== \\\"string\\\") {\\n      throw new TypeError(\\\"First argument of app.setTimeOut must be a string\\\");\\n    }\\n    if (typeof nMilliseconds !== \\\"number\\\") {\\n      throw new TypeError(\\\"Second argument of app.setTimeOut must be a number\\\");\\n    }\\n    const callbackId = this._registerTimeoutCallback(cExpr);\\n    this._externalCall(\\\"setTimeout\\\", [callbackId, nMilliseconds]);\\n    return this._registerTimeout(callbackId, false);\\n  }\\n  trustedFunction() {}\\n  trustPropagatorFunction() {}\\n}\\n\\n;\u002F\u002F .\u002Fsrc\u002Fscripting_api\u002Fconsole.js\\n\\nclass Console extends PDFObject {\\n  clear() {\\n    this._send({\\n      id: \\\"clear\\\"\\n    });\\n  }\\n  hide() {}\\n  println(msg) {\\n    if (typeof msg === \\\"string\\\") {\\n      this._send({\\n        command: \\\"println\\\",\\n        value: \\\"PDF.js Console:: \\\" + msg\\n      });\\n    }\\n  }\\n  show() {}\\n}\\n\\n\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.regexp.flags.js\\nvar es_regexp_flags = __webpack_require__(9479);\\n;\u002F\u002F .\u002Fsrc\u002Fscripting_api\u002Fprint_params.js\\n\\nclass PrintParams {\\n  constructor(data) {\\n    this.binaryOk = true;\\n    this.bitmapDPI = 150;\\n    this.booklet = {\\n      binding: 0,\\n      duplexMode: 0,\\n      subsetFrom: 0,\\n      subsetTo: -1\\n    };\\n    this.colorOverride = 0;\\n    this.colorProfile = \\\"\\\";\\n    this.constants = Object.freeze({\\n      bookletBindings: Object.freeze({\\n        Left: 0,\\n        Right: 1,\\n        LeftTall: 2,\\n        RightTall: 3\\n      }),\\n      bookletDuplexMode: Object.freeze({\\n        BothSides: 0,\\n        FrontSideOnly: 1,\\n        BasicSideOnly: 2\\n      }),\\n      colorOverrides: Object.freeze({\\n        auto: 0,\\n        gray: 1,\\n        mono: 2\\n      }),\\n      fontPolicies: Object.freeze({\\n        everyPage: 0,\\n        jobStart: 1,\\n        pageRange: 2\\n      }),\\n      handling: Object.freeze({\\n        none: 0,\\n        fit: 1,\\n        shrink: 2,\\n        tileAll: 3,\\n        tileLarge: 4,\\n        nUp: 5,\\n        booklet: 6\\n      }),\\n      interactionLevel: Object.freeze({\\n        automatic: 0,\\n        full: 1,\\n        silent: 2\\n      }),\\n      nUpPageOrders: Object.freeze({\\n        Horizontal: 0,\\n        HorizontalReversed: 1,\\n        Vertical: 2\\n      }),\\n      printContents: Object.freeze({\\n        doc: 0,\\n        docAndComments: 1,\\n        formFieldsOnly: 2\\n      }),\\n      flagValues: Object.freeze({\\n        applyOverPrint: 1,\\n        applySoftProofSettings: 1 \u003C\u003C 1,\\n        applyWorkingColorSpaces: 1 \u003C\u003C 2,\\n        emitHalftones: 1 \u003C\u003C 3,\\n        emitPostScriptXObjects: 1 \u003C\u003C 4,\\n        emitFormsAsPSForms: 1 \u003C\u003C 5,\\n        maxJP2KRes: 1 \u003C\u003C 6,\\n        setPageSize: 1 \u003C\u003C 7,\\n        suppressBG: 1 \u003C\u003C 8,\\n        suppressCenter: 1 \u003C\u003C 9,\\n        suppressCJKFontSubst: 1 \u003C\u003C 10,\\n        suppressCropClip: 1 \u003C\u003C 1,\\n        suppressRotate: 1 \u003C\u003C 12,\\n        suppressTransfer: 1 \u003C\u003C 13,\\n        suppressUCR: 1 \u003C\u003C 14,\\n        useTrapAnnots: 1 \u003C\u003C 15,\\n        usePrintersMarks: 1 \u003C\u003C 16\\n      }),\\n      rasterFlagValues: Object.freeze({\\n        textToOutline: 1,\\n        strokesToOutline: 1 \u003C\u003C 1,\\n        allowComplexClip: 1 \u003C\u003C 2,\\n        preserveOverprint: 1 \u003C\u003C 3\\n      }),\\n      subsets: Object.freeze({\\n        all: 0,\\n        even: 1,\\n        odd: 2\\n      }),\\n      tileMarks: Object.freeze({\\n        none: 0,\\n        west: 1,\\n        east: 2\\n      }),\\n      usages: Object.freeze({\\n        auto: 0,\\n        use: 1,\\n        noUse: 2\\n      })\\n    });\\n    this.downloadFarEastFonts = false;\\n    this.fileName = \\\"\\\";\\n    this.firstPage = 0;\\n    this.flags = 0;\\n    this.fontPolicy = 0;\\n    this.gradientDPI = 150;\\n    this.interactive = 1;\\n    this.lastPage = data.lastPage;\\n    this.npUpAutoRotate = false;\\n    this.npUpNumPagesH = 2;\\n    this.npUpNumPagesV = 2;\\n    this.npUpPageBorder = false;\\n    this.npUpPageOrder = 0;\\n    this.pageHandling = 0;\\n    this.pageSubset = 0;\\n    this.printAsImage = false;\\n    this.printContent = 0;\\n    this.printerName = \\\"\\\";\\n    this.psLevel = 0;\\n    this.rasterFlags = 0;\\n    this.reversePages = false;\\n    this.tileLabel = false;\\n    this.tileMark = 0;\\n    this.tileOverlap = 0;\\n    this.tileScale = 1.0;\\n    this.transparencyLevel = 75;\\n    this.usePrinterCRD = 0;\\n    this.useT1Conversion = 0;\\n  }\\n}\\n\\n;\u002F\u002F .\u002Fsrc\u002Fscripting_api\u002Fdoc.js\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nconst DOC_EXTERNAL = false;\\nclass InfoProxyHandler {\\n  static get(obj, prop) {\\n    return obj[prop.toLowerCase()];\\n  }\\n  static set(obj, prop, value) {\\n    throw new Error(`doc.info.${prop} is read-only`);\\n  }\\n}\\nclass Doc extends PDFObject {\\n  constructor(data) {\\n    super(data);\\n    this._expandos = globalThis;\\n    this._baseURL = data.baseURL || \\\"\\\";\\n    this._calculate = true;\\n    this._delay = false;\\n    this._dirty = false;\\n    this._disclosed = false;\\n    this._media = undefined;\\n    this._metadata = data.metadata || \\\"\\\";\\n    this._noautocomplete = undefined;\\n    this._nocache = undefined;\\n    this._spellDictionaryOrder = [];\\n    this._spellLanguageOrder = [];\\n    this._printParams = null;\\n    this._fields = new Map();\\n    this._fieldNames = [];\\n    this._event = null;\\n    this._author = data.Author || \\\"\\\";\\n    this._creator = data.Creator || \\\"\\\";\\n    this._creationDate = this._getDate(data.CreationDate) || null;\\n    this._docID = data.docID || [\\\"\\\", \\\"\\\"];\\n    this._documentFileName = data.filename || \\\"\\\";\\n    this._filesize = data.filesize || 0;\\n    this._keywords = data.Keywords || \\\"\\\";\\n    this._layout = data.layout || \\\"\\\";\\n    this._modDate = this._getDate(data.ModDate) || null;\\n    this._numFields = 0;\\n    this._numPages = data.numPages || 1;\\n    this._pageNum = data.pageNum || 0;\\n    this._producer = data.Producer || \\\"\\\";\\n    this._securityHandler = data.EncryptFilterName || null;\\n    this._subject = data.Subject || \\\"\\\";\\n    this._title = data.Title || \\\"\\\";\\n    this._URL = data.URL || \\\"\\\";\\n    this._info = new Proxy({\\n      title: this._title,\\n      author: this._author,\\n      authors: data.authors || [this._author],\\n      subject: this._subject,\\n      keywords: this._keywords,\\n      creator: this._creator,\\n      producer: this._producer,\\n      creationdate: this._creationDate,\\n      moddate: this._modDate,\\n      trapped: data.Trapped || \\\"Unknown\\\"\\n    }, InfoProxyHandler);\\n    this._zoomType = ZoomType.none;\\n    this._zoom = data.zoom || 100;\\n    this._actions = createActionsMap(data.actions);\\n    this._globalEval = data.globalEval;\\n    this._pageActions = null;\\n    this._userActivation = false;\\n    this._disablePrinting = false;\\n    this._disableSaving = false;\\n    this._otherPageActions = null;\\n  }\\n  _initActions() {\\n    const dontRun = new Set([\\\"WillClose\\\", \\\"WillSave\\\", \\\"DidSave\\\", \\\"WillPrint\\\", \\\"DidPrint\\\", \\\"OpenAction\\\"]);\\n    this._disableSaving = true;\\n    for (const actionName of this._actions.keys()) {\\n      if (!dontRun.has(actionName)) {\\n        this._runActions(actionName);\\n      }\\n    }\\n    this._runActions(\\\"OpenAction\\\");\\n    this._disableSaving = false;\\n  }\\n  _dispatchDocEvent(name) {\\n    switch (name) {\\n      case \\\"Open\\\":\\n        this._disableSaving = true;\\n        this._runActions(\\\"OpenAction\\\");\\n        this._disableSaving = false;\\n        break;\\n      case \\\"WillPrint\\\":\\n        this._disablePrinting = true;\\n        try {\\n          this._runActions(name);\\n        } catch (error) {\\n          this._send(serializeError(error));\\n        }\\n        this._send({\\n          command: \\\"WillPrintFinished\\\"\\n        });\\n        this._disablePrinting = false;\\n        break;\\n      case \\\"WillSave\\\":\\n        this._disableSaving = true;\\n        this._runActions(name);\\n        this._disableSaving = false;\\n        break;\\n      default:\\n        this._runActions(name);\\n    }\\n  }\\n  _dispatchPageEvent(name, actions, pageNumber) {\\n    if (name === \\\"PageOpen\\\") {\\n      this._pageActions ||= new Map();\\n      if (!this._pageActions.has(pageNumber)) {\\n        this._pageActions.set(pageNumber, createActionsMap(actions));\\n      }\\n      this._pageNum = pageNumber - 1;\\n    }\\n    for (const acts of [this._pageActions, this._otherPageActions]) {\\n      actions = acts?.get(pageNumber)?.get(name);\\n      if (actions) {\\n        for (const action of actions) {\\n          this._globalEval(action);\\n        }\\n      }\\n    }\\n  }\\n  _runActions(name) {\\n    const actions = this._actions.get(name);\\n    if (!actions) {\\n      return;\\n    }\\n    for (const action of actions) {\\n      try {\\n        this._globalEval(action);\\n      } catch (error) {\\n        const serializedError = serializeError(error);\\n        serializedError.value = `Error when executing \\\"${name}\\\" for document\\\\n${serializedError.value}`;\\n        this._send(serializedError);\\n      }\\n    }\\n  }\\n  _addField(name, field) {\\n    this._fields.set(name, field);\\n    this._fieldNames.push(name);\\n    this._numFields++;\\n    const po = field.obj._actions.get(\\\"PageOpen\\\");\\n    const pc = field.obj._actions.get(\\\"PageClose\\\");\\n    if (po || pc) {\\n      this._otherPageActions ||= new Map();\\n      let actions = this._otherPageActions.get(field.obj._page + 1);\\n      if (!actions) {\\n        actions = new Map();\\n        this._otherPageActions.set(field.obj._page + 1, actions);\\n      }\\n      if (po) {\\n        let poActions = actions.get(\\\"PageOpen\\\");\\n        if (!poActions) {\\n          poActions = [];\\n          actions.set(\\\"PageOpen\\\", poActions);\\n        }\\n        poActions.push(...po);\\n      }\\n      if (pc) {\\n        let pcActions = actions.get(\\\"PageClose\\\");\\n        if (!pcActions) {\\n          pcActions = [];\\n          actions.set(\\\"PageClose\\\", pcActions);\\n        }\\n        pcActions.push(...pc);\\n      }\\n    }\\n  }\\n  _getDate(date) {\\n    if (!date || date.length \u003C 15 || !date.startsWith(\\\"D:\\\")) {\\n      return date;\\n    }\\n    date = date.substring(2);\\n    const year = date.substring(0, 4);\\n    const month = date.substring(4, 6);\\n    const day = date.substring(6, 8);\\n    const hour = date.substring(8, 10);\\n    const minute = date.substring(10, 12);\\n    const o = date.charAt(12);\\n    let second, offsetPos;\\n    if (o === \\\"Z\\\" || o === \\\"+\\\" || o === \\\"-\\\") {\\n      second = \\\"00\\\";\\n      offsetPos = 12;\\n    } else {\\n      second = date.substring(12, 14);\\n      offsetPos = 14;\\n    }\\n    const offset = date.substring(offsetPos).replaceAll(\\\"'\\\", \\\"\\\");\\n    return new Date(`${year}-${month}-${day}T${hour}:${minute}:${second}${offset}`);\\n  }\\n  get author() {\\n    return this._author;\\n  }\\n  set author(_) {\\n    throw new Error(\\\"doc.author is read-only\\\");\\n  }\\n  get baseURL() {\\n    return this._baseURL;\\n  }\\n  set baseURL(baseURL) {\\n    this._baseURL = baseURL;\\n  }\\n  get bookmarkRoot() {\\n    return undefined;\\n  }\\n  set bookmarkRoot(_) {\\n    throw new Error(\\\"doc.bookmarkRoot is read-only\\\");\\n  }\\n  get calculate() {\\n    return this._calculate;\\n  }\\n  set calculate(calculate) {\\n    this._calculate = calculate;\\n  }\\n  get creator() {\\n    return this._creator;\\n  }\\n  set creator(_) {\\n    throw new Error(\\\"doc.creator is read-only\\\");\\n  }\\n  get dataObjects() {\\n    return [];\\n  }\\n  set dataObjects(_) {\\n    throw new Error(\\\"doc.dataObjects is read-only\\\");\\n  }\\n  get delay() {\\n    return this._delay;\\n  }\\n  set delay(delay) {\\n    this._delay = delay;\\n  }\\n  get dirty() {\\n    return this._dirty;\\n  }\\n  set dirty(dirty) {\\n    this._dirty = dirty;\\n  }\\n  get disclosed() {\\n    return this._disclosed;\\n  }\\n  set disclosed(disclosed) {\\n    this._disclosed = disclosed;\\n  }\\n  get docID() {\\n    return this._docID;\\n  }\\n  set docID(_) {\\n    throw new Error(\\\"doc.docID is read-only\\\");\\n  }\\n  get documentFileName() {\\n    return this._documentFileName;\\n  }\\n  set documentFileName(_) {\\n    throw new Error(\\\"doc.documentFileName is read-only\\\");\\n  }\\n  get dynamicXFAForm() {\\n    return false;\\n  }\\n  set dynamicXFAForm(_) {\\n    throw new Error(\\\"doc.dynamicXFAForm is read-only\\\");\\n  }\\n  get external() {\\n    return DOC_EXTERNAL;\\n  }\\n  set external(_) {\\n    throw new Error(\\\"doc.external is read-only\\\");\\n  }\\n  get filesize() {\\n    return this._filesize;\\n  }\\n  set filesize(_) {\\n    throw new Error(\\\"doc.filesize is read-only\\\");\\n  }\\n  get hidden() {\\n    return false;\\n  }\\n  set hidden(_) {\\n    throw new Error(\\\"doc.hidden is read-only\\\");\\n  }\\n  get hostContainer() {\\n    return undefined;\\n  }\\n  set hostContainer(_) {\\n    throw new Error(\\\"doc.hostContainer is read-only\\\");\\n  }\\n  get icons() {\\n    return undefined;\\n  }\\n  set icons(_) {\\n    throw new Error(\\\"doc.icons is read-only\\\");\\n  }\\n  get info() {\\n    return this._info;\\n  }\\n  set info(_) {\\n    throw new Error(\\\"doc.info is read-only\\\");\\n  }\\n  get innerAppWindowRect() {\\n    return [0, 0, 0, 0];\\n  }\\n  set innerAppWindowRect(_) {\\n    throw new Error(\\\"doc.innerAppWindowRect is read-only\\\");\\n  }\\n  get innerDocWindowRect() {\\n    return [0, 0, 0, 0];\\n  }\\n  set innerDocWindowRect(_) {\\n    throw new Error(\\\"doc.innerDocWindowRect is read-only\\\");\\n  }\\n  get isModal() {\\n    return false;\\n  }\\n  set isModal(_) {\\n    throw new Error(\\\"doc.isModal is read-only\\\");\\n  }\\n  get keywords() {\\n    return this._keywords;\\n  }\\n  set keywords(_) {\\n    throw new Error(\\\"doc.keywords is read-only\\\");\\n  }\\n  get layout() {\\n    return this._layout;\\n  }\\n  set layout(value) {\\n    if (!this._userActivation) {\\n      return;\\n    }\\n    this._userActivation = false;\\n    if (typeof value !== \\\"string\\\") {\\n      return;\\n    }\\n    if (value !== \\\"SinglePage\\\" && value !== \\\"OneColumn\\\" && value !== \\\"TwoColumnLeft\\\" && value !== \\\"TwoPageLeft\\\" && value !== \\\"TwoColumnRight\\\" && value !== \\\"TwoPageRight\\\") {\\n      value = \\\"SinglePage\\\";\\n    }\\n    this._send({\\n      command: \\\"layout\\\",\\n      value\\n    });\\n    this._layout = value;\\n  }\\n  get media() {\\n    return this._media;\\n  }\\n  set media(media) {\\n    this._media = media;\\n  }\\n  get metadata() {\\n    return this._metadata;\\n  }\\n  set metadata(metadata) {\\n    this._metadata = metadata;\\n  }\\n  get modDate() {\\n    return this._modDate;\\n  }\\n  set modDate(_) {\\n    throw new Error(\\\"doc.modDate is read-only\\\");\\n  }\\n  get mouseX() {\\n    return 0;\\n  }\\n  set mouseX(_) {\\n    throw new Error(\\\"doc.mouseX is read-only\\\");\\n  }\\n  get mouseY() {\\n    return 0;\\n  }\\n  set mouseY(_) {\\n    throw new Error(\\\"doc.mouseY is read-only\\\");\\n  }\\n  get noautocomplete() {\\n    return this._noautocomplete;\\n  }\\n  set noautocomplete(noautocomplete) {\\n    this._noautocomplete = noautocomplete;\\n  }\\n  get nocache() {\\n    return this._nocache;\\n  }\\n  set nocache(nocache) {\\n    this._nocache = nocache;\\n  }\\n  get numFields() {\\n    return this._numFields;\\n  }\\n  set numFields(_) {\\n    throw new Error(\\\"doc.numFields is read-only\\\");\\n  }\\n  get numPages() {\\n    return this._numPages;\\n  }\\n  set numPages(_) {\\n    throw new Error(\\\"doc.numPages is read-only\\\");\\n  }\\n  get numTemplates() {\\n    return 0;\\n  }\\n  set numTemplates(_) {\\n    throw new Error(\\\"doc.numTemplates is read-only\\\");\\n  }\\n  get outerAppWindowRect() {\\n    return [0, 0, 0, 0];\\n  }\\n  set outerAppWindowRect(_) {\\n    throw new Error(\\\"doc.outerAppWindowRect is read-only\\\");\\n  }\\n  get outerDocWindowRect() {\\n    return [0, 0, 0, 0];\\n  }\\n  set outerDocWindowRect(_) {\\n    throw new Error(\\\"doc.outerDocWindowRect is read-only\\\");\\n  }\\n  get pageNum() {\\n    return this._pageNum;\\n  }\\n  set pageNum(value) {\\n    if (!this._userActivation) {\\n      return;\\n    }\\n    this._userActivation = false;\\n    if (typeof value !== \\\"number\\\" || value \u003C 0 || value >= this._numPages) {\\n      return;\\n    }\\n    this._send({\\n      command: \\\"page-num\\\",\\n      value\\n    });\\n    this._pageNum = value;\\n  }\\n  get pageWindowRect() {\\n    return [0, 0, 0, 0];\\n  }\\n  set pageWindowRect(_) {\\n    throw new Error(\\\"doc.pageWindowRect is read-only\\\");\\n  }\\n  get path() {\\n    return \\\"\\\";\\n  }\\n  set path(_) {\\n    throw new Error(\\\"doc.path is read-only\\\");\\n  }\\n  get permStatusReady() {\\n    return true;\\n  }\\n  set permStatusReady(_) {\\n    throw new Error(\\\"doc.permStatusReady is read-only\\\");\\n  }\\n  get producer() {\\n    return this._producer;\\n  }\\n  set producer(_) {\\n    throw new Error(\\\"doc.producer is read-only\\\");\\n  }\\n  get requiresFullSave() {\\n    return false;\\n  }\\n  set requiresFullSave(_) {\\n    throw new Error(\\\"doc.requiresFullSave is read-only\\\");\\n  }\\n  get securityHandler() {\\n    return this._securityHandler;\\n  }\\n  set securityHandler(_) {\\n    throw new Error(\\\"doc.securityHandler is read-only\\\");\\n  }\\n  get selectedAnnots() {\\n    return [];\\n  }\\n  set selectedAnnots(_) {\\n    throw new Error(\\\"doc.selectedAnnots is read-only\\\");\\n  }\\n  get sounds() {\\n    return [];\\n  }\\n  set sounds(_) {\\n    throw new Error(\\\"doc.sounds is read-only\\\");\\n  }\\n  get spellDictionaryOrder() {\\n    return this._spellDictionaryOrder;\\n  }\\n  set spellDictionaryOrder(spellDictionaryOrder) {\\n    this._spellDictionaryOrder = spellDictionaryOrder;\\n  }\\n  get spellLanguageOrder() {\\n    return this._spellLanguageOrder;\\n  }\\n  set spellLanguageOrder(spellLanguageOrder) {\\n    this._spellLanguageOrder = spellLanguageOrder;\\n  }\\n  get subject() {\\n    return this._subject;\\n  }\\n  set subject(_) {\\n    throw new Error(\\\"doc.subject is read-only\\\");\\n  }\\n  get templates() {\\n    return [];\\n  }\\n  set templates(_) {\\n    throw new Error(\\\"doc.templates is read-only\\\");\\n  }\\n  get title() {\\n    return this._title;\\n  }\\n  set title(_) {\\n    throw new Error(\\\"doc.title is read-only\\\");\\n  }\\n  get URL() {\\n    return this._URL;\\n  }\\n  set URL(_) {\\n    throw new Error(\\\"doc.URL is read-only\\\");\\n  }\\n  get viewState() {\\n    return undefined;\\n  }\\n  set viewState(_) {\\n    throw new Error(\\\"doc.viewState is read-only\\\");\\n  }\\n  get xfa() {\\n    return this._xfa;\\n  }\\n  set xfa(_) {\\n    throw new Error(\\\"doc.xfa is read-only\\\");\\n  }\\n  get XFAForeground() {\\n    return false;\\n  }\\n  set XFAForeground(_) {\\n    throw new Error(\\\"doc.XFAForeground is read-only\\\");\\n  }\\n  get zoomType() {\\n    return this._zoomType;\\n  }\\n  set zoomType(type) {\\n    if (!this._userActivation) {\\n      return;\\n    }\\n    this._userActivation = false;\\n    if (typeof type !== \\\"string\\\") {\\n      return;\\n    }\\n    switch (type) {\\n      case ZoomType.none:\\n        this._send({\\n          command: \\\"zoom\\\",\\n          value: 1\\n        });\\n        break;\\n      case ZoomType.fitP:\\n        this._send({\\n          command: \\\"zoom\\\",\\n          value: \\\"page-fit\\\"\\n        });\\n        break;\\n      case ZoomType.fitW:\\n        this._send({\\n          command: \\\"zoom\\\",\\n          value: \\\"page-width\\\"\\n        });\\n        break;\\n      case ZoomType.fitH:\\n        this._send({\\n          command: \\\"zoom\\\",\\n          value: \\\"page-height\\\"\\n        });\\n        break;\\n      case ZoomType.fitV:\\n        this._send({\\n          command: \\\"zoom\\\",\\n          value: \\\"auto\\\"\\n        });\\n        break;\\n      case ZoomType.pref:\\n      case ZoomType.refW:\\n        break;\\n      default:\\n        return;\\n    }\\n    this._zoomType = type;\\n  }\\n  get zoom() {\\n    return this._zoom;\\n  }\\n  set zoom(value) {\\n    if (!this._userActivation) {\\n      return;\\n    }\\n    this._userActivation = false;\\n    if (typeof value !== \\\"number\\\" || value \u003C 8.33 || value > 6400) {\\n      return;\\n    }\\n    this._send({\\n      command: \\\"zoom\\\",\\n      value: value \u002F 100\\n    });\\n  }\\n  addAnnot() {}\\n  addField() {}\\n  addIcon() {}\\n  addLink() {}\\n  addRecipientListCryptFilter() {}\\n  addRequirement() {}\\n  addScript() {}\\n  addThumbnails() {}\\n  addWatermarkFromFile() {}\\n  addWatermarkFromText() {}\\n  addWeblinks() {}\\n  bringToFront() {}\\n  calculateNow() {\\n    this._eventDispatcher.calculateNow();\\n  }\\n  closeDoc() {}\\n  colorConvertPage() {}\\n  createDataObject() {}\\n  createTemplate() {}\\n  deletePages() {}\\n  deleteSound() {}\\n  embedDocAsDataObject() {}\\n  embedOutputIntent() {}\\n  encryptForRecipients() {}\\n  encryptUsingPolicy() {}\\n  exportAsFDF() {}\\n  exportAsFDFStr() {}\\n  exportAsText() {}\\n  exportAsXFDF() {}\\n  exportAsXFDFStr() {}\\n  exportDataObject() {}\\n  exportXFAData() {}\\n  extractPages() {}\\n  flattenPages() {}\\n  getAnnot() {}\\n  getAnnots() {}\\n  getAnnot3D() {}\\n  getAnnots3D() {}\\n  getColorConvertAction() {}\\n  getDataObject() {}\\n  getDataObjectContents() {}\\n  _getField(cName) {\\n    if (cName && typeof cName === \\\"object\\\") {\\n      cName = cName.cName;\\n    }\\n    if (typeof cName !== \\\"string\\\") {\\n      throw new TypeError(\\\"Invalid field name: must be a string\\\");\\n    }\\n    const searchedField = this._fields.get(cName);\\n    if (searchedField) {\\n      return searchedField;\\n    }\\n    const parts = cName.split(\\\"#\\\");\\n    let childIndex = NaN;\\n    if (parts.length === 2) {\\n      childIndex = Math.floor(parseFloat(parts[1]));\\n      cName = parts[0];\\n    }\\n    for (const [name, field] of this._fields.entries()) {\\n      if (name.endsWith(cName)) {\\n        if (!isNaN(childIndex)) {\\n          const children = this._getChildren(name);\\n          if (childIndex \u003C 0 || childIndex >= children.length) {\\n            childIndex = 0;\\n          }\\n          if (childIndex \u003C children.length) {\\n            this._fields.set(cName, children[childIndex]);\\n            return children[childIndex];\\n          }\\n        }\\n        this._fields.set(cName, field);\\n        return field;\\n      }\\n    }\\n    return null;\\n  }\\n  getField(cName) {\\n    const field = this._getField(cName);\\n    if (!field) {\\n      return null;\\n    }\\n    return field.wrapped;\\n  }\\n  _getChildren(fieldName) {\\n    const len = fieldName.length;\\n    const children = [];\\n    const pattern = \u002F^\\\\.[^.]+$\u002F;\\n    for (const [name, field] of this._fields.entries()) {\\n      if (name.startsWith(fieldName)) {\\n        const finalPart = name.slice(len);\\n        if (pattern.test(finalPart)) {\\n          children.push(field);\\n        }\\n      }\\n    }\\n    return children;\\n  }\\n  _getTerminalChildren(fieldName) {\\n    const children = [];\\n    const len = fieldName.length;\\n    for (const [name, field] of this._fields.entries()) {\\n      if (name.startsWith(fieldName)) {\\n        const finalPart = name.slice(len);\\n        if (field.obj._hasValue && (finalPart === \\\"\\\" || finalPart.startsWith(\\\".\\\"))) {\\n          children.push(field.wrapped);\\n        }\\n      }\\n    }\\n    return children;\\n  }\\n  getIcon() {}\\n  getLegalWarnings() {}\\n  getLinks() {}\\n  getNthFieldName(nIndex) {\\n    if (nIndex && typeof nIndex === \\\"object\\\") {\\n      nIndex = nIndex.nIndex;\\n    }\\n    if (typeof nIndex !== \\\"number\\\") {\\n      throw new TypeError(\\\"Invalid field index: must be a number\\\");\\n    }\\n    if (0 \u003C= nIndex && nIndex \u003C this.numFields) {\\n      return this._fieldNames[Math.trunc(nIndex)];\\n    }\\n    return null;\\n  }\\n  getNthTemplate() {\\n    return null;\\n  }\\n  getOCGs() {}\\n  getOCGOrder() {}\\n  getPageBox() {}\\n  getPageLabel() {}\\n  getPageNthWord() {}\\n  getPageNthWordQuads() {}\\n  getPageNumWords() {}\\n  getPageRotation() {}\\n  getPageTransition() {}\\n  getPrintParams() {\\n    return this._printParams ||= new PrintParams({\\n      lastPage: this._numPages - 1\\n    });\\n  }\\n  getSound() {}\\n  getTemplate() {}\\n  getURL() {}\\n  gotoNamedDest() {}\\n  importAnFDF() {}\\n  importAnXFDF() {}\\n  importDataObject() {}\\n  importIcon() {}\\n  importSound() {}\\n  importTextData() {}\\n  importXFAData() {}\\n  insertPages() {}\\n  mailDoc() {}\\n  mailForm() {}\\n  movePage() {}\\n  newPage() {}\\n  openDataObject() {}\\n  print(bUI = true, nStart = 0, nEnd = -1, bSilent = false, bShrinkToFit = false, bPrintAsImage = false, bReverse = false, bAnnotations = true, printParams = null) {\\n    if (this._disablePrinting || !this._userActivation) {\\n      return;\\n    }\\n    this._userActivation = false;\\n    if (bUI && typeof bUI === \\\"object\\\") {\\n      nStart = bUI.nStart;\\n      nEnd = bUI.nEnd;\\n      bSilent = bUI.bSilent;\\n      bShrinkToFit = bUI.bShrinkToFit;\\n      bPrintAsImage = bUI.bPrintAsImage;\\n      bReverse = bUI.bReverse;\\n      bAnnotations = bUI.bAnnotations;\\n      printParams = bUI.printParams;\\n      bUI = bUI.bUI;\\n    }\\n    if (printParams) {\\n      nStart = printParams.firstPage;\\n      nEnd = printParams.lastPage;\\n    }\\n    nStart = typeof nStart === \\\"number\\\" ? Math.max(0, Math.trunc(nStart)) : 0;\\n    nEnd = typeof nEnd === \\\"number\\\" ? Math.max(0, Math.trunc(nEnd)) : -1;\\n    this._send({\\n      command: \\\"print\\\",\\n      start: nStart,\\n      end: nEnd\\n    });\\n  }\\n  removeDataObject() {}\\n  removeField() {}\\n  removeIcon() {}\\n  removeLinks() {}\\n  removeRequirement() {}\\n  removeScript() {}\\n  removeTemplate() {}\\n  removeThumbnails() {}\\n  removeWeblinks() {}\\n  replacePages() {}\\n  resetForm(aFields = null) {\\n    if (aFields && typeof aFields === \\\"object\\\" && !Array.isArray(aFields)) {\\n      aFields = aFields.aFields;\\n    }\\n    if (aFields && !Array.isArray(aFields)) {\\n      aFields = [aFields];\\n    }\\n    let mustCalculate = false;\\n    let fieldsToReset;\\n    if (aFields) {\\n      fieldsToReset = [];\\n      for (const fieldName of aFields) {\\n        if (!fieldName) {\\n          continue;\\n        }\\n        if (typeof fieldName !== \\\"string\\\") {\\n          fieldsToReset = null;\\n          break;\\n        }\\n        const field = this._getField(fieldName);\\n        if (!field) {\\n          continue;\\n        }\\n        fieldsToReset.push(field);\\n        mustCalculate = true;\\n      }\\n    }\\n    if (!fieldsToReset) {\\n      fieldsToReset = this._fields.values();\\n      mustCalculate = this._fields.size !== 0;\\n    }\\n    for (const field of fieldsToReset) {\\n      field.obj.value = field.obj.defaultValue;\\n      this._send({\\n        id: field.obj._id,\\n        siblings: field.obj._siblings,\\n        value: field.obj.defaultValue,\\n        formattedValue: null,\\n        selRange: [0, 0]\\n      });\\n    }\\n    if (mustCalculate) {\\n      this.calculateNow();\\n    }\\n  }\\n  saveAs() {}\\n  scroll() {}\\n  selectPageNthWord() {}\\n  setAction() {}\\n  setDataObjectContents() {}\\n  setOCGOrder() {}\\n  setPageAction() {}\\n  setPageBoxes() {}\\n  setPageLabels() {}\\n  setPageRotations() {}\\n  setPageTabOrder() {}\\n  setPageTransitions() {}\\n  spawnPageFromTemplate() {}\\n  submitForm() {}\\n  syncAnnotScan() {}\\n}\\n\\n;\u002F\u002F .\u002Fsrc\u002Fscripting_api\u002Fproxy.js\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nclass ProxyHandler {\\n  constructor() {\\n    this.nosend = new Set([\\\"delay\\\"]);\\n  }\\n  get(obj, prop) {\\n    if (prop in obj._expandos) {\\n      const val = obj._expandos[prop];\\n      if (typeof val === \\\"function\\\") {\\n        return val.bind(obj);\\n      }\\n      return val;\\n    }\\n    if (typeof prop === \\\"string\\\" && !prop.startsWith(\\\"_\\\") && prop in obj) {\\n      const val = obj[prop];\\n      if (typeof val === \\\"function\\\") {\\n        return val.bind(obj);\\n      }\\n      return val;\\n    }\\n    return undefined;\\n  }\\n  set(obj, prop, value) {\\n    if (obj._kidIds) {\\n      obj._kidIds.forEach(id => {\\n        obj._appObjects[id].wrapped[prop] = value;\\n      });\\n    }\\n    if (typeof prop === \\\"string\\\" && !prop.startsWith(\\\"_\\\") && prop in obj) {\\n      const old = obj[prop];\\n      obj[prop] = value;\\n      if (!this.nosend.has(prop) && obj._send && obj._id !== null && typeof old !== \\\"function\\\") {\\n        const data = {\\n          id: obj._id\\n        };\\n        data[prop] = prop === \\\"value\\\" ? obj._getValue() : obj[prop];\\n        if (!obj._siblings) {\\n          obj._send(data);\\n        } else {\\n          data.siblings = obj._siblings;\\n          obj._send(data);\\n        }\\n      }\\n    } else {\\n      obj._expandos[prop] = value;\\n    }\\n    return true;\\n  }\\n  has(obj, prop) {\\n    return prop in obj._expandos || typeof prop === \\\"string\\\" && !prop.startsWith(\\\"_\\\") && prop in obj;\\n  }\\n  getPrototypeOf(obj) {\\n    return null;\\n  }\\n  setPrototypeOf(obj, proto) {\\n    return false;\\n  }\\n  isExtensible(obj) {\\n    return true;\\n  }\\n  preventExtensions(obj) {\\n    return false;\\n  }\\n  getOwnPropertyDescriptor(obj, prop) {\\n    if (prop in obj._expandos) {\\n      return {\\n        configurable: true,\\n        enumerable: true,\\n        value: obj._expandos[prop]\\n      };\\n    }\\n    if (typeof prop === \\\"string\\\" && !prop.startsWith(\\\"_\\\") && prop in obj) {\\n      return {\\n        configurable: true,\\n        enumerable: true,\\n        value: obj[prop]\\n      };\\n    }\\n    return undefined;\\n  }\\n  defineProperty(obj, key, descriptor) {\\n    Object.defineProperty(obj._expandos, key, descriptor);\\n    return true;\\n  }\\n  deleteProperty(obj, prop) {\\n    if (prop in obj._expandos) {\\n      delete obj._expandos[prop];\\n    }\\n  }\\n  ownKeys(obj) {\\n    const fromExpandos = Reflect.ownKeys(obj._expandos);\\n    const fromObj = Reflect.ownKeys(obj).filter(k => !k.startsWith(\\\"_\\\"));\\n    return fromExpandos.concat(fromObj);\\n  }\\n}\\n\\n;\u002F\u002F .\u002Fsrc\u002Fscripting_api\u002Futil.js\\n\\n\\n\\n\\n\\nclass Util extends PDFObject {\\n  #dateActionsCache = null;\\n  constructor(data) {\\n    super(data);\\n    this._scandCache = new Map();\\n    this._months = [\\\"January\\\", \\\"February\\\", \\\"March\\\", \\\"April\\\", \\\"May\\\", \\\"June\\\", \\\"July\\\", \\\"August\\\", \\\"September\\\", \\\"October\\\", \\\"November\\\", \\\"December\\\"];\\n    this._days = [\\\"Sunday\\\", \\\"Monday\\\", \\\"Tuesday\\\", \\\"Wednesday\\\", \\\"Thursday\\\", \\\"Friday\\\", \\\"Saturday\\\"];\\n    this.MILLISECONDS_IN_DAY = 86400000;\\n    this.MILLISECONDS_IN_WEEK = 604800000;\\n    this._externalCall = data.externalCall;\\n  }\\n  printf(...args) {\\n    if (args.length === 0) {\\n      throw new Error(\\\"Invalid number of params in printf\\\");\\n    }\\n    if (typeof args[0] !== \\\"string\\\") {\\n      throw new TypeError(\\\"First argument of printf must be a string\\\");\\n    }\\n    const pattern = \u002F%(,[0-4])?([+ 0#]+)?(\\\\d+)?(\\\\.\\\\d+)?(.)\u002Fg;\\n    const PLUS = 1;\\n    const SPACE = 2;\\n    const ZERO = 4;\\n    const HASH = 8;\\n    let i = 0;\\n    return args[0].replaceAll(pattern, function (match, nDecSep, cFlags, nWidth, nPrecision, cConvChar) {\\n      if (cConvChar !== \\\"d\\\" && cConvChar !== \\\"f\\\" && cConvChar !== \\\"s\\\" && cConvChar !== \\\"x\\\") {\\n        const buf = [\\\"%\\\"];\\n        for (const str of [nDecSep, cFlags, nWidth, nPrecision, cConvChar]) {\\n          if (str) {\\n            buf.push(str);\\n          }\\n        }\\n        return buf.join(\\\"\\\");\\n      }\\n      i++;\\n      if (i === args.length) {\\n        throw new Error(\\\"Not enough arguments in printf\\\");\\n      }\\n      const arg = args[i];\\n      if (cConvChar === \\\"s\\\") {\\n        return arg.toString();\\n      }\\n      let flags = 0;\\n      if (cFlags) {\\n        for (const flag of cFlags) {\\n          switch (flag) {\\n            case \\\"+\\\":\\n              flags |= PLUS;\\n              break;\\n            case \\\" \\\":\\n              flags |= SPACE;\\n              break;\\n            case \\\"0\\\":\\n              flags |= ZERO;\\n              break;\\n            case \\\"#\\\":\\n              flags |= HASH;\\n              break;\\n          }\\n        }\\n      }\\n      cFlags = flags;\\n      if (nWidth) {\\n        nWidth = parseInt(nWidth);\\n      }\\n      let intPart = Math.trunc(arg);\\n      if (cConvChar === \\\"x\\\") {\\n        let hex = Math.abs(intPart).toString(16).toUpperCase();\\n        if (nWidth !== undefined) {\\n          hex = hex.padStart(nWidth, cFlags & ZERO ? \\\"0\\\" : \\\" \\\");\\n        }\\n        if (cFlags & HASH) {\\n          hex = `0x${hex}`;\\n        }\\n        return hex;\\n      }\\n      if (nPrecision) {\\n        nPrecision = parseInt(nPrecision.substring(1));\\n      }\\n      nDecSep = nDecSep ? nDecSep.substring(1) : \\\"0\\\";\\n      const separators = {\\n        0: [\\\",\\\", \\\".\\\"],\\n        1: [\\\"\\\", \\\".\\\"],\\n        2: [\\\".\\\", \\\",\\\"],\\n        3: [\\\"\\\", \\\",\\\"],\\n        4: [\\\"'\\\", \\\".\\\"]\\n      };\\n      const [thousandSep, decimalSep] = separators[nDecSep];\\n      let decPart = \\\"\\\";\\n      if (cConvChar === \\\"f\\\") {\\n        decPart = nPrecision !== undefined ? Math.abs(arg - intPart).toFixed(nPrecision) : Math.abs(arg - intPart).toString();\\n        if (decPart.length > 2) {\\n          if (\u002F^1\\\\.0+$\u002F.test(decPart)) {\\n            intPart += Math.sign(arg);\\n            decPart = `${decimalSep}${decPart.split(\\\".\\\")[1]}`;\\n          } else {\\n            decPart = `${decimalSep}${decPart.substring(2)}`;\\n          }\\n        } else {\\n          if (decPart === \\\"1\\\") {\\n            intPart += Math.sign(arg);\\n          }\\n          decPart = cFlags & HASH ? \\\".\\\" : \\\"\\\";\\n        }\\n      }\\n      let sign = \\\"\\\";\\n      if (intPart \u003C 0) {\\n        sign = \\\"-\\\";\\n        intPart = -intPart;\\n      } else if (cFlags & PLUS) {\\n        sign = \\\"+\\\";\\n      } else if (cFlags & SPACE) {\\n        sign = \\\" \\\";\\n      }\\n      if (thousandSep && intPart >= 1000) {\\n        const buf = [];\\n        while (true) {\\n          buf.push((intPart % 1000).toString().padStart(3, \\\"0\\\"));\\n          intPart = Math.trunc(intPart \u002F 1000);\\n          if (intPart \u003C 1000) {\\n            buf.push(intPart.toString());\\n            break;\\n          }\\n        }\\n        intPart = buf.reverse().join(thousandSep);\\n      } else {\\n        intPart = intPart.toString();\\n      }\\n      let n = `${intPart}${decPart}`;\\n      if (nWidth !== undefined) {\\n        n = n.padStart(nWidth - sign.length, cFlags & ZERO ? \\\"0\\\" : \\\" \\\");\\n      }\\n      return `${sign}${n}`;\\n    });\\n  }\\n  iconStreamFromIcon() {}\\n  printd(cFormat, oDate) {\\n    switch (cFormat) {\\n      case 0:\\n        return this.printd(\\\"D:yyyymmddHHMMss\\\", oDate);\\n      case 1:\\n        return this.printd(\\\"yyyy.mm.dd HH:MM:ss\\\", oDate);\\n      case 2:\\n        return this.printd(\\\"m\u002Fd\u002Fyy h:MM:ss tt\\\", oDate);\\n    }\\n    const handlers = {\\n      mmmm: data => this._months[data.month],\\n      mmm: data => this._months[data.month].substring(0, 3),\\n      mm: data => (data.month + 1).toString().padStart(2, \\\"0\\\"),\\n      m: data => (data.month + 1).toString(),\\n      dddd: data => this._days[data.dayOfWeek],\\n      ddd: data => this._days[data.dayOfWeek].substring(0, 3),\\n      dd: data => data.day.toString().padStart(2, \\\"0\\\"),\\n      d: data => data.day.toString(),\\n      yyyy: data => data.year.toString(),\\n      yy: data => (data.year % 100).toString().padStart(2, \\\"0\\\"),\\n      HH: data => data.hours.toString().padStart(2, \\\"0\\\"),\\n      H: data => data.hours.toString(),\\n      hh: data => (1 + (data.hours + 11) % 12).toString().padStart(2, \\\"0\\\"),\\n      h: data => (1 + (data.hours + 11) % 12).toString(),\\n      MM: data => data.minutes.toString().padStart(2, \\\"0\\\"),\\n      M: data => data.minutes.toString(),\\n      ss: data => data.seconds.toString().padStart(2, \\\"0\\\"),\\n      s: data => data.seconds.toString(),\\n      tt: data => data.hours \u003C 12 ? \\\"am\\\" : \\\"pm\\\",\\n      t: data => data.hours \u003C 12 ? \\\"a\\\" : \\\"p\\\"\\n    };\\n    const data = {\\n      year: oDate.getFullYear(),\\n      month: oDate.getMonth(),\\n      day: oDate.getDate(),\\n      dayOfWeek: oDate.getDay(),\\n      hours: oDate.getHours(),\\n      minutes: oDate.getMinutes(),\\n      seconds: oDate.getSeconds()\\n    };\\n    const patterns = \u002F(mmmm|mmm|mm|m|dddd|ddd|dd|d|yyyy|yy|HH|H|hh|h|MM|M|ss|s|tt|t|\\\\\\\\.)\u002Fg;\\n    return cFormat.replaceAll(patterns, function (match, pattern) {\\n      if (pattern in handlers) {\\n        return handlers[pattern](data);\\n      }\\n      return pattern.charCodeAt(1);\\n    });\\n  }\\n  printx(cFormat, cSource) {\\n    cSource = (cSource ?? \\\"\\\").toString();\\n    const handlers = [x => x, x => x.toUpperCase(), x => x.toLowerCase()];\\n    const buf = [];\\n    let i = 0;\\n    const ii = cSource.length;\\n    let currCase = handlers[0];\\n    let escaped = false;\\n    for (const command of cFormat) {\\n      if (escaped) {\\n        buf.push(command);\\n        escaped = false;\\n        continue;\\n      }\\n      if (i >= ii) {\\n        break;\\n      }\\n      switch (command) {\\n        case \\\"?\\\":\\n          buf.push(currCase(cSource.charAt(i++)));\\n          break;\\n        case \\\"X\\\":\\n          while (i \u003C ii) {\\n            const char = cSource.charAt(i++);\\n            if (\\\"a\\\" \u003C= char && char \u003C= \\\"z\\\" || \\\"A\\\" \u003C= char && char \u003C= \\\"Z\\\" || \\\"0\\\" \u003C= char && char \u003C= \\\"9\\\") {\\n              buf.push(currCase(char));\\n              break;\\n            }\\n          }\\n          break;\\n        case \\\"A\\\":\\n          while (i \u003C ii) {\\n            const char = cSource.charAt(i++);\\n            if (\\\"a\\\" \u003C= char && char \u003C= \\\"z\\\" || \\\"A\\\" \u003C= char && char \u003C= \\\"Z\\\") {\\n              buf.push(currCase(char));\\n              break;\\n            }\\n          }\\n          break;\\n        case \\\"9\\\":\\n          while (i \u003C ii) {\\n            const char = cSource.charAt(i++);\\n            if (\\\"0\\\" \u003C= char && char \u003C= \\\"9\\\") {\\n              buf.push(char);\\n              break;\\n            }\\n          }\\n          break;\\n        case \\\"*\\\":\\n          while (i \u003C ii) {\\n            buf.push(currCase(cSource.charAt(i++)));\\n          }\\n          break;\\n        case \\\"\\\\\\\\\\\":\\n          escaped = true;\\n          break;\\n        case \\\">\\\":\\n          currCase = handlers[1];\\n          break;\\n        case \\\"\u003C\\\":\\n          currCase = handlers[2];\\n          break;\\n        case \\\"=\\\":\\n          currCase = handlers[0];\\n          break;\\n        default:\\n          buf.push(command);\\n      }\\n    }\\n    return buf.join(\\\"\\\");\\n  }\\n  #tryToGuessDate(cFormat, cDate) {\\n    let actions = (this.#dateActionsCache ||= new Map()).get(cFormat);\\n    if (!actions) {\\n      actions = [];\\n      this.#dateActionsCache.set(cFormat, actions);\\n      cFormat.replaceAll(\u002F(d+)|(m+)|(y+)|(H+)|(M+)|(s+)\u002Fg, function (_match, d, m, y, H, M, s) {\\n        if (d) {\\n          actions.push((n, data) => {\\n            if (n >= 1 && n \u003C= 31) {\\n              data.day = n;\\n              return true;\\n            }\\n            return false;\\n          });\\n        } else if (m) {\\n          actions.push((n, data) => {\\n            if (n >= 1 && n \u003C= 12) {\\n              data.month = n - 1;\\n              return true;\\n            }\\n            return false;\\n          });\\n        } else if (y) {\\n          actions.push((n, data) => {\\n            if (n \u003C 50) {\\n              n += 2000;\\n            } else if (n \u003C 100) {\\n              n += 1900;\\n            }\\n            data.year = n;\\n            return true;\\n          });\\n        } else if (H) {\\n          actions.push((n, data) => {\\n            if (n >= 0 && n \u003C= 23) {\\n              data.hours = n;\\n              return true;\\n            }\\n            return false;\\n          });\\n        } else if (M) {\\n          actions.push((n, data) => {\\n            if (n >= 0 && n \u003C= 59) {\\n              data.minutes = n;\\n              return true;\\n            }\\n            return false;\\n          });\\n        } else if (s) {\\n          actions.push((n, data) => {\\n            if (n >= 0 && n \u003C= 59) {\\n              data.seconds = n;\\n              return true;\\n            }\\n            return false;\\n          });\\n        }\\n        return \\\"\\\";\\n      });\\n    }\\n    const number = \u002F\\\\d+\u002Fg;\\n    let i = 0;\\n    let array;\\n    const data = {\\n      year: new Date().getFullYear(),\\n      month: 0,\\n      day: 1,\\n      hours: 12,\\n      minutes: 0,\\n      seconds: 0\\n    };\\n    while ((array = number.exec(cDate)) !== null) {\\n      if (i \u003C actions.length) {\\n        if (!actions[i++](parseInt(array[0]), data)) {\\n          return null;\\n        }\\n      } else {\\n        break;\\n      }\\n    }\\n    if (i === 0) {\\n      return null;\\n    }\\n    return new Date(data.year, data.month, data.day, data.hours, data.minutes, data.seconds);\\n  }\\n  scand(cFormat, cDate) {\\n    return this._scand(cFormat, cDate);\\n  }\\n  _scand(cFormat, cDate, strict = false) {\\n    if (typeof cDate !== \\\"string\\\") {\\n      return new Date(cDate);\\n    }\\n    if (cDate === \\\"\\\") {\\n      return new Date();\\n    }\\n    switch (cFormat) {\\n      case 0:\\n        return this.scand(\\\"D:yyyymmddHHMMss\\\", cDate);\\n      case 1:\\n        return this.scand(\\\"yyyy.mm.dd HH:MM:ss\\\", cDate);\\n      case 2:\\n        return this.scand(\\\"m\u002Fd\u002Fyy h:MM:ss tt\\\", cDate);\\n    }\\n    if (!this._scandCache.has(cFormat)) {\\n      const months = this._months;\\n      const days = this._days;\\n      const handlers = {\\n        mmmm: {\\n          pattern: `(${months.join(\\\"|\\\")})`,\\n          action: (value, data) => {\\n            data.month = months.indexOf(value);\\n          }\\n        },\\n        mmm: {\\n          pattern: `(${months.map(month => month.substring(0, 3)).join(\\\"|\\\")})`,\\n          action: (value, data) => {\\n            data.month = months.findIndex(month => month.substring(0, 3) === value);\\n          }\\n        },\\n        mm: {\\n          pattern: `(\\\\\\\\d{2})`,\\n          action: (value, data) => {\\n            data.month = parseInt(value) - 1;\\n          }\\n        },\\n        m: {\\n          pattern: `(\\\\\\\\d{1,2})`,\\n          action: (value, data) => {\\n            data.month = parseInt(value) - 1;\\n          }\\n        },\\n        dddd: {\\n          pattern: `(${days.join(\\\"|\\\")})`,\\n          action: (value, data) => {\\n            data.day = days.indexOf(value);\\n          }\\n        },\\n        ddd: {\\n          pattern: `(${days.map(day => day.substring(0, 3)).join(\\\"|\\\")})`,\\n          action: (value, data) => {\\n            data.day = days.findIndex(day => day.substring(0, 3) === value);\\n          }\\n        },\\n        dd: {\\n          pattern: \\\"(\\\\\\\\d{2})\\\",\\n          action: (value, data) => {\\n            data.day = parseInt(value);\\n          }\\n        },\\n        d: {\\n          pattern: \\\"(\\\\\\\\d{1,2})\\\",\\n          action: (value, data) => {\\n            data.day = parseInt(value);\\n          }\\n        },\\n        yyyy: {\\n          pattern: \\\"(\\\\\\\\d{4})\\\",\\n          action: (value, data) => {\\n            data.year = parseInt(value);\\n          }\\n        },\\n        yy: {\\n          pattern: \\\"(\\\\\\\\d{2})\\\",\\n          action: (value, data) => {\\n            data.year = 2000 + parseInt(value);\\n          }\\n        },\\n        HH: {\\n          pattern: \\\"(\\\\\\\\d{2})\\\",\\n          action: (value, data) => {\\n            data.hours = parseInt(value);\\n          }\\n        },\\n        H: {\\n          pattern: \\\"(\\\\\\\\d{1,2})\\\",\\n          action: (value, data) => {\\n            data.hours = parseInt(value);\\n          }\\n        },\\n        hh: {\\n          pattern: \\\"(\\\\\\\\d{2})\\\",\\n          action: (value, data) => {\\n            data.hours = parseInt(value);\\n          }\\n        },\\n        h: {\\n          pattern: \\\"(\\\\\\\\d{1,2})\\\",\\n          action: (value, data) => {\\n            data.hours = parseInt(value);\\n          }\\n        },\\n        MM: {\\n          pattern: \\\"(\\\\\\\\d{2})\\\",\\n          action: (value, data) => {\\n            data.minutes = parseInt(value);\\n          }\\n        },\\n        M: {\\n          pattern: \\\"(\\\\\\\\d{1,2})\\\",\\n          action: (value, data) => {\\n            data.minutes = parseInt(value);\\n          }\\n        },\\n        ss: {\\n          pattern: \\\"(\\\\\\\\d{2})\\\",\\n          action: (value, data) => {\\n            data.seconds = parseInt(value);\\n          }\\n        },\\n        s: {\\n          pattern: \\\"(\\\\\\\\d{1,2})\\\",\\n          action: (value, data) => {\\n            data.seconds = parseInt(value);\\n          }\\n        },\\n        tt: {\\n          pattern: \\\"([aApP][mM])\\\",\\n          action: (value, data) => {\\n            const char = value.charAt(0);\\n            data.am = char === \\\"a\\\" || char === \\\"A\\\";\\n          }\\n        },\\n        t: {\\n          pattern: \\\"([aApP])\\\",\\n          action: (value, data) => {\\n            data.am = value === \\\"a\\\" || value === \\\"A\\\";\\n          }\\n        }\\n      };\\n      const escapedFormat = cFormat.replaceAll(\u002F[.*+\\\\-?^${}()|[\\\\]\\\\\\\\]\u002Fg, \\\"\\\\\\\\$&\\\");\\n      const patterns = \u002F(mmmm|mmm|mm|m|dddd|ddd|dd|d|yyyy|yy|HH|H|hh|h|MM|M|ss|s|tt|t)\u002Fg;\\n      const actions = [];\\n      const re = escapedFormat.replaceAll(patterns, function (match, patternElement) {\\n        const {\\n          pattern,\\n          action\\n        } = handlers[patternElement];\\n        actions.push(action);\\n        return pattern;\\n      });\\n      this._scandCache.set(cFormat, [re, actions]);\\n    }\\n    const [re, actions] = this._scandCache.get(cFormat);\\n    const matches = new RegExp(`^${re}$`, \\\"g\\\").exec(cDate);\\n    if (!matches || matches.length !== actions.length + 1) {\\n      return strict ? null : this.#tryToGuessDate(cFormat, cDate);\\n    }\\n    const data = {\\n      year: new Date().getFullYear(),\\n      month: 0,\\n      day: 1,\\n      hours: 12,\\n      minutes: 0,\\n      seconds: 0,\\n      am: null\\n    };\\n    actions.forEach((action, i) => action(matches[i + 1], data));\\n    if (data.am !== null) {\\n      data.hours = data.hours % 12 + (data.am ? 0 : 12);\\n    }\\n    return new Date(data.year, data.month, data.day, data.hours, data.minutes, data.seconds);\\n  }\\n  spansToXML() {}\\n  stringFromStream() {}\\n  xmlToSpans() {}\\n}\\n\\n;\u002F\u002F .\u002Fsrc\u002Fscripting_api\u002Finitialization.js\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nfunction initSandbox(params) {\\n  delete globalThis.pdfjsScripting;\\n  const externalCall = globalThis.callExternalFunction;\\n  delete globalThis.callExternalFunction;\\n  const globalEval = code => globalThis.eval(code);\\n  const send = data => externalCall(\\\"send\\\", [data]);\\n  const proxyHandler = new ProxyHandler();\\n  const {\\n    data\\n  } = params;\\n  const doc = new Doc({\\n    send,\\n    globalEval,\\n    ...data.docInfo\\n  });\\n  const _document = {\\n    obj: doc,\\n    wrapped: new Proxy(doc, proxyHandler)\\n  };\\n  const app = new App({\\n    send,\\n    globalEval,\\n    externalCall,\\n    _document,\\n    calculationOrder: data.calculationOrder,\\n    proxyHandler,\\n    ...data.appInfo\\n  });\\n  const util = new Util({\\n    externalCall\\n  });\\n  const appObjects = app._objects;\\n  if (data.objects) {\\n    const annotations = [];\\n    for (const [name, objs] of Object.entries(data.objects)) {\\n      annotations.length = 0;\\n      let container = null;\\n      for (const obj of objs) {\\n        if (obj.type !== \\\"\\\") {\\n          annotations.push(obj);\\n        } else {\\n          container = obj;\\n        }\\n      }\\n      let obj = container;\\n      if (annotations.length > 0) {\\n        obj = annotations[0];\\n        obj.send = send;\\n      }\\n      obj.globalEval = globalEval;\\n      obj.doc = _document;\\n      obj.fieldPath = name;\\n      obj.appObjects = appObjects;\\n      const otherFields = annotations.slice(1);\\n      let field;\\n      switch (obj.type) {\\n        case \\\"radiobutton\\\":\\n          {\\n            field = new RadioButtonField(otherFields, obj);\\n            break;\\n          }\\n        case \\\"checkbox\\\":\\n          {\\n            field = new CheckboxField(otherFields, obj);\\n            break;\\n          }\\n        default:\\n          if (otherFields.length > 0) {\\n            obj.siblings = otherFields.map(x => x.id);\\n          }\\n          field = new Field(obj);\\n      }\\n      const wrapped = new Proxy(field, proxyHandler);\\n      const _object = {\\n        obj: field,\\n        wrapped\\n      };\\n      doc._addField(name, _object);\\n      for (const object of objs) {\\n        appObjects[object.id] = _object;\\n      }\\n      if (container) {\\n        appObjects[container.id] = _object;\\n      }\\n    }\\n  }\\n  const color = new Color();\\n  globalThis.event = null;\\n  globalThis.global = Object.create(null);\\n  globalThis.app = new Proxy(app, proxyHandler);\\n  globalThis.color = new Proxy(color, proxyHandler);\\n  globalThis.console = new Proxy(new Console({\\n    send\\n  }), proxyHandler);\\n  globalThis.util = new Proxy(util, proxyHandler);\\n  globalThis.border = Border;\\n  globalThis.cursor = Cursor;\\n  globalThis.display = Display;\\n  globalThis.font = Font;\\n  globalThis.highlight = Highlight;\\n  globalThis.position = Position;\\n  globalThis.scaleHow = ScaleHow;\\n  globalThis.scaleWhen = ScaleWhen;\\n  globalThis.style = Style;\\n  globalThis.trans = Trans;\\n  globalThis.zoomtype = ZoomType;\\n  globalThis.ADBE = {\\n    Reader_Value_Asked: true,\\n    Viewer_Value_Asked: true\\n  };\\n  const aform = new AForm(doc, app, util, color);\\n  for (const name of Object.getOwnPropertyNames(AForm.prototype)) {\\n    if (name !== \\\"constructor\\\" && !name.startsWith(\\\"_\\\")) {\\n      globalThis[name] = aform[name].bind(aform);\\n    }\\n  }\\n  for (const [name, value] of Object.entries(GlobalConstants)) {\\n    Object.defineProperty(globalThis, name, {\\n      value,\\n      writable: false\\n    });\\n  }\\n  Object.defineProperties(globalThis, {\\n    ColorConvert: {\\n      value: color.convert.bind(color),\\n      writable: true\\n    },\\n    ColorEqual: {\\n      value: color.equal.bind(color),\\n      writable: true\\n    }\\n  });\\n  const properties = Object.create(null);\\n  for (const name of Object.getOwnPropertyNames(Doc.prototype)) {\\n    if (name === \\\"constructor\\\" || name.startsWith(\\\"_\\\")) {\\n      continue;\\n    }\\n    const descriptor = Object.getOwnPropertyDescriptor(Doc.prototype, name);\\n    if (descriptor.get) {\\n      properties[name] = {\\n        get: descriptor.get.bind(doc),\\n        set: descriptor.set.bind(doc)\\n      };\\n    } else {\\n      properties[name] = {\\n        value: Doc.prototype[name].bind(doc)\\n      };\\n    }\\n  }\\n  Object.defineProperties(globalThis, properties);\\n  const functions = {\\n    dispatchEvent: app._dispatchEvent.bind(app),\\n    timeoutCb: app._evalCallback.bind(app)\\n  };\\n  return (name, args) => {\\n    try {\\n      functions[name](args);\\n    } catch (error) {\\n      send(serializeError(error));\\n    }\\n  };\\n}\\n\\n;\u002F\u002F .\u002Fsrc\u002Fpdf.scripting.js\\n\\nglobalThis.pdfjsScripting = {\\n  initSandbox: initSandbox\\n};\\n\"];\n     code.push(\"delete dump;\");\n     let success = false;\n     let buf = 0;\n@@ -232,8 +3901,10 @@\n function QuickJSSandbox() {\n   return quickjs_eval().then(module => new Sandbox(window, module));\n }\n+globalThis.pdfjsSandbox = {\n+  QuickJSSandbox\n+};\n \n-var __webpack_exports__QuickJSSandbox = __webpack_exports__.QuickJSSandbox;\n-export { __webpack_exports__QuickJSSandbox as QuickJSSandbox };\n+export { QuickJSSandbox };\n \n \u002F\u002F# sourceMappingURL=pdf.sandbox.js.map\n\\ No newline at end of file\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fbuild\u002Fpdf.sandbox.js.map \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fbuild\u002Fpdf.sandbox.js.map\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fbuild\u002Fpdf.sandbox.js.map\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fbuild\u002Fpdf.sandbox.js.map\t2026-02-24 09:27:28.000000000 +0000\n@@ -1 +1 @@\n-{\"version\":3,\"file\":\"pdf.sandbox.js\",\"mappings\":\";;;;;;;;;;;;;;;;;;;;;;SAAA;SACA;;;;;UCDA;UACA;UACA;UACA;UACA,yCAAyC,wCAAwC;UACjF;UACA;UACA;;;;;UCPA;;;;;;;;;;;;ACCA,GAAI,CAAAA,MAAM,CAAG,CAAC,IAAM,CAClB,GAAI,CAAAC,UAAU,CAAG,MAAO,CAAAC,QAAQ,GAAK,WAAW,EAAIA,QAAQ,CAACC,aAAa,CAAGD,QAAQ,CAACC,aAAa,CAACC,GAAG,CAAGC,SAAS,CAEnH,MACF,UAASC,SAAS,CAAG,CAAC,CAAC,CAAE,CAEzB,GAAI,CAAAC,CAAC,CAACD,SAAS,CAACE,CAAC,CAACC,CAAC,CAACF,CAAC,CAACG,KAAK,CAAC,GAAI,CAAAC,OAAO,CAAC,CAACC,CAAC,CAACC,CAAC,GAAG,CAACL,CAAC,CAACI,CAAC,CAACH,CAAC,CAACI,CAAC,EAAC,CAAC,CAAC,GAAI,CAAAC,CAAC,CAACC,MAAM,CAACC,MAAM,CAAC,CAAC,CAAC,CAACT,CAAC,CAAC,CAACU,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,MAAO,CAAAf,QAAQ,EAAEA,QAAQ,CAACC,aAAa,GAAGc,CAAC,CAACf,QAAQ,CAACC,aAAa,CAACC,GAAG,CAAC,CAACH,UAAU,GAAGgB,CAAC,CAAChB,UAAU,CAAC,CAACgB,CAAC,CAACC,UAAU,CAAC,OAAO,CAAC,CAACD,CAAC,CAAC,EAAE,CAACA,CAAC,CAACA,CAAC,CAACE,MAAM,CAAC,CAAC,CAACF,CAAC,CAACG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAACC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAI,CAAAC,EAAE,CAACf,CAAC,CAACgB,KAAK,EAAEC,OAAO,CAACC,GAAG,CAACC,IAAI,CAACF,OAAO,CAAC,CAACG,CAAC,CAACpB,CAAC,CAACqB,QAAQ,EAAEJ,OAAO,CAACK,KAAK,CAACH,IAAI,CAACF,OAAO,CAAC,CAACT,MAAM,CAACC,MAAM,CAACT,CAAC,CAACO,CAAC,CAAC,CAACA,CAAC,CAAC,IAAI,CAAC,GAAI,CAAAgB,CAAC,CAACvB,CAAC,CAACwB,UAAU,GAAGD,CAAC,CAACvB,CAAC,CAACwB,UAAU,CAAC,CAAC,QAAQ,EAAE,MAAO,CAAAC,WAAW,EAAEC,CAAC,CAAC,iCAAiC,CAAC,CACjf,GAAI,CAAAC,CAAC,CAACC,CAAC,CAAC,CAAC,CAAC,CAACC,CAAC,CAACC,CAAC,CAACC,CAAC,CAACC,CAAC,CAAC,QAAS,CAAAC,CAACA,CAAA,CAAE,CAAC,GAAI,CAAA5B,CAAC,CAACsB,CAAC,CAACO,MAAM,CAAClC,CAAC,CAACmC,KAAK,CAACN,CAAC,CAAC,GAAI,CAAAO,SAAS,CAAC\u002FB,CAAC,CAAC,CAACL,CAAC,CAACqC,MAAM,CAAC,GAAI,CAAAC,UAAU,CAACjC,CAAC,CAAC,CAACL,CAAC,CAACuC,MAAM,CAACT,CAAC,CAAC,GAAI,CAAAU,UAAU,CAACnC,CAAC,CAAC,CAACL,CAAC,CAACyC,OAAO,CAAC,GAAI,CAAAC,WAAW,CAACrC,CAAC,CAAC,CAACL,CAAC,CAAC2C,MAAM,CAACZ,CAAC,CAAC,GAAI,CAAAa,UAAU,CAACvC,CAAC,CAAC,CAACL,CAAC,CAAC6C,OAAO,CAACb,CAAC,CAAC,GAAI,CAAAc,WAAW,CAACzC,CAAC,CAAC,CAACL,CAAC,CAAC+C,OAAO,CAAC,GAAI,CAAAC,YAAY,CAAC3C,CAAC,CAAC,CAACL,CAAC,CAACiD,OAAO,CAAC,GAAI,CAAAC,YAAY,CAAC7C,CAAC,CAAC,EAAC,GAAI,CAAA8C,CAAC,CAAC,EAAE,CAACC,CAAC,CAAC,EAAE,CAACC,CAAC,CAAC,EAAE,CAAC,QAAS,CAAAC,EAAEA,CAAA,CAAE,CAAC,GAAI,CAAAjD,CAAC,CAACL,CAAC,CAACuD,MAAM,CAACC,KAAK,CAAC,CAAC,CAACL,CAAC,CAACM,OAAO,CAACpD,CAAC,CAAC,EAAC,GAAI,CAAAqD,CAAC,CAAC,CAAC,CAACC,CAAC,CAAC,IAAI,CAACC,CAAC,CAAC,IAAI,CACjX,QAAS,CAAAlC,CAACA,CAACrB,CAAC,CAAC,CAACL,CAAC,CAAC6D,OAAO,GAAGxD,CAAC,CAAC,CAACA,CAAC,CAAC,UAAU,CAACA,CAAC,CAAC,GAAG,CAACe,CAAC,CAACf,CAAC,CAAC,CAACuB,CAAC,CAAC,CAAC,CAAC,CAACvB,CAAC,CAAC,GAAI,CAAAoB,WAAW,CAACqC,YAAY,CAACzD,CAAC,CAAC,0CAA0C,CAAC,CAACH,CAAC,CAACG,CAAC,CAAC,CAAC,KAAM,CAAAA,CAAC,CAAC,CAAC,GAAI,CAAA0D,CAAC,CAAC1D,CAAC,EAAEA,CAAC,CAACM,UAAU,CAAC,uCAAuC,CAAC,CAACqD,CAAC,CAACA,CAAC,CAAC,24zkBAA24zkB,CAAC,GAAG,CAACD,CAAC,CAACC,CAAC,CAAC,CAAC,CAAC,GAAI,CAAAC,CAAC,CAACD,CAAC,CAACA,CAAC,CAAChE,CAAC,CAACkE,UAAU,CAAClE,CAAC,CAACkE,UAAU,CAACD,CAAC,CAACvD,CAAC,CAAC,CAACA,CAAC,CAACuD,CAAC,EAC1p0kB,QAAS,CAAAE,EAAEA,CAAA,CAAE,CAAC,GAAI,CAAA9D,CAAC,CAAC2D,CAAC,CAAC,MAAO,CAAA5D,OAAO,CAACgE,OAAO,CAAC,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC,GAAGhE,CAAC,EAAE2D,CAAC,EAAEzC,CAAC,CAAC,GAAI,CAAAjB,CAAC,CAAC,GAAI,CAAAkC,UAAU,CAACjB,CAAC,CAAC,CAAC,IAAI,CAAC,GAAGwC,CAAC,CAAC1D,CAAC,CAAC,CAAC,CAACC,CAAC,CAACgE,IAAI,CAACjE,CAAC,CAACkE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAI,CAAAC,CAAC,CAAC,GAAI,CAAAhC,UAAU,CAAClC,CAAC,CAACmE,MAAM,CAAC,CAACC,CAAC,CAAC,CAAC,CAACA,CAAC,CAACpE,CAAC,CAACmE,MAAM,CAAC,EAAEC,CAAC,CAACF,CAAC,CAACE,CAAC,CAAC,CAACpE,CAAC,CAACqE,UAAU,CAACD,CAAC,CAAC,CAACpE,CAAC,CAACkE,CAAC,EAAC,IAAK,CAAAlE,CAAC,CAAC,IAAK,EAAC,CAAC,GAAG,CAACA,CAAC,CAAC,KAAK,iDAAiD,CAAC,CAAC,MAAO,CAAAA,CAAC,EAAC,CAAC,EAAC,QAAS,CAAAsE,EAAEA,CAACvE,CAAC,CAACC,CAAC,CAAC,CAAC,MAAO,CAAA6D,EAAE,CAAC,CAAC,CAACE,IAAI,CAACG,CAAC,EAAE\u002FC,WAAW,CAACoD,WAAW,CAACL,CAAC,CAACnE,CAAC,CAAC,CAAC,CAACgE,IAAI,CAACG,CAAC,EAAEA,CAAC,CAAC,CAACH,IAAI,CAAC\u002FD,CAAC,CAACkE,CAAC,EAAE,CAACpD,CAAC,CAAE,0CAAyCoD,CAAE,EAAC,CAAC,CAAC9C,CAAC,CAAC8C,CAAC,CAAC,EAAC,CAAC,EAAC,QAAS,CAAAM,EAAEA,CAACzE,CAAC,CAACC,CAAC,CAAC,CAAC,MAAO,CAAAsE,EAAE,CAACvE,CAAC,CAACC,CAAC,CAAC,EACpd,GAAI,CAAAyE,CAAC,CAAC1E,CAAC,EAAE,CAAC,KAAK,CAAC,CAACA,CAAC,CAACoE,MAAM,EAAEpE,CAAC,CAACmD,KAAK,CAAC,CAAC,CAACxD,CAAC,CAAC,EAAC,CAACgF,CAAC,CAAC,WAAW,EAAE,MAAO,CAAAC,WAAW,CAAC,GAAI,CAAAA,WAAW,CAAC,MAAM,CAAC,CAAC,IAAK,EAAC,CAACC,CAAC,CAACA,CAAC7E,CAAC,CAACC,CAAC,GAAG,CAAC,IAAI,GAAI,CAAAkE,CAAC,CAAClE,CAAC,CAAC6E,GAAG,CAACT,CAAC,CAACpE,CAAC,CAACD,CAAC,CAACqE,CAAC,CAAC,EAAE,EAAEA,CAAC,EAAEF,CAAC,CAAC,EAAE,EAAEE,CAAC,CAAC,GAAG,EAAE,CAACA,CAAC,CAACpE,CAAC,EAAED,CAAC,CAAC6B,MAAM,EAAE8C,CAAC,CAAC,MAAO,CAAAA,CAAC,CAACI,MAAM,CAAC\u002FE,CAAC,CAACgF,QAAQ,CAAC\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\u002FJ,GAAI,CAAAC,EAAE,CAAC,CAAC\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\",\"sources\":[\"webpack:\u002F\u002Fpdf.js\u002Fwebpack\u002Fbootstrap\",\"webpack:\u002F\u002Fpdf.js\u002Fwebpack\u002Fruntime\u002Fdefine property getters\",\"webpack:\u002F\u002Fpdf.js\u002Fwebpack\u002Fruntime\u002FhasOwnProperty shorthand\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fexternal\u002Fquickjs\u002Fquickjs-eval.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fpdf.sandbox.external.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fpdf.sandbox.js\"],\"sourcesContent\":[\"\u002F\u002F The require scope\\nvar __webpack_require__ = {};\\n\\n\",\"\u002F\u002F define getter functions for harmony exports\\n__webpack_require__.d = (exports, definition) => {\\n\\tfor(var key in definition) {\\n\\t\\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\\n\\t\\t\\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\\n\\t\\t}\\n\\t}\\n};\",\"__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\",\"\\nvar Module = (() => {\\n  var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\\n  \\n  return (\\nfunction(moduleArg = {}) {\\n\\nvar d=moduleArg,k,n;d.ready=new Promise((a,b)=>{k=a;n=b});var p=Object.assign({},d),q=\\\"\\\";\\\"undefined\\\"!=typeof document&&document.currentScript&&(q=document.currentScript.src);_scriptDir&&(q=_scriptDir);q.startsWith(\\\"blob:\\\")?q=\\\"\\\":q=q.substr(0,q.replace(\u002F[?#].*\u002F,\\\"\\\").lastIndexOf(\\\"\u002F\\\")+1);var aa=d.print||console.log.bind(console),u=d.printErr||console.error.bind(console);Object.assign(d,p);p=null;var v;d.wasmBinary&&(v=d.wasmBinary);\\\"object\\\"!=typeof WebAssembly&&w(\\\"no native wasm support detected\\\");\\nvar x,y=!1,z,A,B,C;function D(){var a=x.buffer;d.HEAP8=z=new Int8Array(a);d.HEAP16=new Int16Array(a);d.HEAPU8=A=new Uint8Array(a);d.HEAPU16=new Uint16Array(a);d.HEAP32=B=new Int32Array(a);d.HEAPU32=C=new Uint32Array(a);d.HEAPF32=new Float32Array(a);d.HEAPF64=new Float64Array(a)}var E=[],F=[],G=[];function ba(){var a=d.preRun.shift();E.unshift(a)}var H=0,I=null,J=null;\\nfunction w(a){d.onAbort?.(a);a=\\\"Aborted(\\\"+a+\\\")\\\";u(a);y=!0;a=new WebAssembly.RuntimeError(a+\\\". Build with -sASSERTIONS for more info.\\\");n(a);throw a;}var K=a=>a.startsWith(\\\"data:application\u002Foctet-stream;base64,\\\"),L;L=\\\"data:application\u002Foctet-stream;base64,AGFzbQEAAAABzgZtYAJ\u002FfwBgA39\u002FfwF\u002FYAR\u002Ffn9\u002FAX5gAn9\u002FAX9gBX9+f39\u002FAX5gAX8Bf2ADf39\u002FAGAEf39\u002FfwF\u002FYAJ\u002FfgF+YAF\u002FAGABfAF8YAV\u002Ff39\u002FfwF\u002FYAJ\u002FfgBgAn9+AX9gAn9\u002FAX5gA39\u002FfgF\u002FYAN\u002Ffn8BfmAGf35\u002Ff39\u002FAX5gA39+fwBgA39+fwF\u002FYAZ\u002Ff39\u002Ff38Bf2AEf39\u002FfwBgBn9+fn9\u002FfwF+YAR\u002Ff35\u002FAX9gA39+fgF+YAN\u002Ff38BfmADf35+AX9gBH9\u002Ff38BfmAFf35+fn4AYAJ8fAF8YAF\u002FAX5gBH9\u002Ff34Bf2AFf35+f38BfmAFf39\u002Ff38AYAd\u002Ffn9+fn5\u002FAX9gBX9\u002Ff35+AX9gB39\u002Ff39\u002Ff38Bf2AAAGAFf35\u002Ffn8Bf2AEf35+fwBgBH9+fn8BfmAFf35+fn8Bf2AFf39\u002Ff38BfmAEf39+fgF\u002FYAF+AX9gBH9+f34BfmAEf35\u002FfwBgBH9+fn8Bf2AJf39\u002Ff39\u002Ff39\u002FAX9gCH9\u002Ff39\u002Ff39\u002FAX9gA39+fgBgBH9+f38Bf2AGf35\u002Ffn5\u002FAX9gBX9+fn9\u002FAGABfgF+YAd\u002Ffn9\u002Ff39\u002FAX5gAX8BfGADf39+AGAEf35\u002FfgF\u002FYAV\u002Ff35\u002FfwF\u002FYAR\u002Ffn5+AX9gBn9\u002Ff39\u002FfwF+YAN+f38Bf2AHf39\u002Ff39\u002FfwBgAnx\u002FAXxgA39\u002FfgF+YAJ+fwF\u002FYAN8fH8BfGAEf39+fwBgBH9+fn4BfmAAAX9gBn98f39\u002FfwF\u002FYAABfGAFf35\u002Ffn8BfmAGf39+fn5+AX9gAn5\u002FAGACf3wAYAV\u002Ff39\u002FfgF+YAR\u002Ff35\u002FAX5gBH9+f34AYAd\u002Ffn5+f39\u002FAX5gBH5+fn4Bf2AKf39\u002Ff39\u002Ff39\u002FfwF\u002FYAd\u002Ff39\u002Ff39+AX5gBX9+f39\u002FAGAHfH9\u002Ff39\u002FfwBgBX98f39\u002FAX5gAXwBf2AFf39+f38AYAZ\u002Ffn5+fn8Bf2AGf35\u002Ff39\u002FAX9gBH98f38Bf2AGf39\u002Ff39\u002FAGAEf39\u002FfgF+YAV\u002Ffn9\u002FfwF\u002FYAV\u002Ffn5+fgF\u002FYAJ\u002FfwF8YAV\u002Ffn5\u002FfwF\u002FYAV\u002Ff35+fgF+YAV\u002Ff35+fwF\u002FYAJ8fwF\u002FYAJ8fAF\u002FYAh\u002Ffn5+fn9+fgF+YAN\u002FfnwBfmAAAX5gB39\u002Ff35+fn8Bf2ACfn4BfGADfn5+AX9gA39\u002FfAACSQwBYQFhABUBYQFiACUBYQFjAAcBYQFkAAYBYQFlAEgBYQFmAAABYQFnAAEBYQFoADgBYQFpAAYBYQFqAAUBYQFrAAkBYQFsABUDkwmRCQwAAAUASQYGACYDAAEJAAAgOQEuCAwJAQMIAA0DDgkcAQUGDw0ADR4IDSAeADoGHgMFAQYLCA8HBgMAEAcDCAcBGhgFAwEOBS8NOwYABhMGAyEQCQ4cJwELCEo8AQEiExgPExwJAQEDBQ8FBwADOzwBCxcAAAE9Aw09DgMLCQ0FBQ0bPhMoECYpDwgNDEsGCQEHADABDwUCDwEQBw1MBgZNAzEFFANODy8GAwELAQEAAzImTxM\u002FFAkLGAMAKQUPEA0zACk0AFABCUADIT8DCQMJJAQPBQEeDw0ABgEIARlRFAYLAyEHAwY1AAEDBQsGUlMYBQ0qAEEAFRo6EA0vBgEAJwAFBUIBCgUGAQMGAQEBDQYIGAMGBQEFCw8EADMICQMPDzYADgIEVAEYDglVVhADAxcIAAsIBgEBAwEVB1dDHQoKAwUDAAUDCQYLWAUDAQsDAAYCGQgLBgcBGwUFAQUBAwcBA0QPWRANDgkVKBgADRkgFFoGEAUBAQYgBFsADQAHAwNCAxkDDgUsAS4HFwAZAQkDCgoFHQUHAQUDBRVcISQBCwcUXRQHAwcHAxgNCAsBAAIBAQMJAwMLDQEHAwcHAwABBwMwAyxeOQATLBcRAwYVCwMSAF8YKBkAExUUYGEECCtiAkUbAx4NAQIDDTIJDxYHAgc+AAEPF2MICA0IABAVAwADHAYLCQMBBR0KZAoDBRYLBgcFAwUxBTElFAAyAQUBAQABARQVBxQDBQcLBwcEAAIJAQFlAgIQEAACAQENBQgFAQICZgIIAgQmGg0IFAQDAQABDAEAAwUBAwEJAwULCQsAAQMUMDY2BGdEDjMACAAGBAQBDy0ACA4JAgAlAQABABYaBiwUBwwAFQEDCQkSCAMAEA4FBQUEaAIPAAAnBAcDABs3CwcDIBEBAwEABgEDCSkEBA4aEwAQCBdFAA4aAwUPDw8GAwcDAQ0QDw9pFw4JGhpGIQEJGQEZAQMDAwEuEgcAahxrAAADAwUVBSRAQzgeHCccBQMAbAYJAQoJHQUCAwMDFBUFAQkFBwUHAQMBBQEDJCQDBAcHBwECCwsCCwIGBgYGBgYGBhYGBgIEBAICAQ4BDgEOAQ4BDgIBDgEOAQ4BDgEOAgQEAgECAgIEAgIIBAIQAgIIAgQQEQICCAICAgICAgICAgICAgIKAgIKCgQRBAQCAgIEBAQCAgICAgIEBAQCAgICAgIEAgICJQICAgICAgIEAgICAgICAgQEAgICAgIEAgIEAgEEAgICBAICBAIEBAICAggIAgICAgQEGAgCAgQCAgICAgIEAgICBAQCAgIEAgIEAgIEAgIAAgI3AwICAgICBAICAhEEEQQCAgIRBBEREQICEgwSDAwMEgwEEQQEEAQEBAIRAjQtEyITHxcSDAICBBEIAgICAgACAgICEAgIAiITFwEAERkTHSIAARsbGwEAEgwSDAwMEgwSDAwMEgwSDBIMEgwMEgwSDAYZERERFhYZFhYIKh8jAUEDBQlGAQBHCgoKAhABCAoKCgoqARAfCgoKIwoKCgodKwoKCgoKARYWFgIABAcBcAGnA6cDBQcBAYACgIACBggBfwFBwOIICwdADQFtAgABbgCpBAFvAJwJAXAAjAUBcQDyBwFyAO4HAXMAngcBdACPAgF1ANQBAXYBAAF3APUIAXgA9AgBeQDzCAnTBgEAQQELpgOVA8ME8gjxCO8I7gjtCOwI6wjqCOgI5wjCCLwIrwiaCPEH8AfvB+cH1Qe7B+AClAeMB8oE+AbWBssGuQO8BrkGwAS+BLAGrgarBqYGmwmaCZkJnwSYCZAGkQmLCYcJhAn\u002FCPwI4wjpCMIF5gjwCMME5Qi4BeQIvgjiCMMIvQjbA7sIigWbCIcIhgiFCIMI\u002Fgf8B7oH2gbhCOAI3wjeCN0IngXcCNsI2gjZCNgI1wjWCNUI1AjTCNII0QjQCM8IzgjhA80I4QPMCMsIygjJCMEIugi5CLgIvwibBcgIxwiVA6UIpAijCKIIoQigCJ8IngidCJEIkAiPCOEDjgieBY0IjAiLCIoIxgjFCMQItwi2CLUItAizCLIIsQiwCK4IrQisCKsIqgipCKcIpgicCIIFgQWZCJgIlwiWCJUIlAiTCJII+AOJCIgI3gGECIIIgQiACP8H\u002FQf7B6cF+gf5B\u002FgH9wf4BPYH9Qf0B6kF8wftB+wH6wfqB+kH6AfmB+UH5AfjB+IHqAjhB+AH2ATfB94H3QfeBNwH2wfaB9kH1wTYB9cH1gfUB9MH0gfRB9AHzwfOB4gDzQfMB8sHygfJB8gHxwfGB8UHxAfDB8IHwQfAB\u002FEDvwe+B64F7QO9B7wH1QS5B7gHtwe2B7UHtAezB7IHsQewB9ME0gSvB64HrQesB6sHqgepB6gHpwemB6UHpAejB6IHoQegB58HnQecB5sHmgeZB5gHlweWB5UHkweSB5EHkAePB44HjQeLB4oHiQeIB4cHhgeFB4QHgweCB4EHiQmICY0JgAeACZUJkwmcBJAJjAmaBM4CwAiCCfsI+Qj\u002FBooJgQn6CJQJkgmPCZMCoQOWCYMJjgn+Bv0G\u002FAb7BvoG+Qb3BvYG9Qb0BvMG8gbxBvAG7wbuBu0G7AbrBuoG6QboBucG5gblBsgE5AbHBOMG4gbhBuAG3wbeBsYE3QbcBtsGxQTZBtgG1wbABr8Gvga9BtMG1QbRBs8GzQbKBsgGxgbEBsIG0gbUBtAGzgbMBskGxwbFBsMGwQbCBLsGuga4BrcGtga1BrQGswayBrEGrAavBq0GqgarBKkGqAanBvcDwgSXCYYJiwaFCZUDlQP+CP0I+Aj3CPYICtbbFpEJNQEBfwJAIAFCIIinQXVJDQAgAaciAiACKAIAIgJBAWs2AgAgAkEBSg0AIAAoAhAgARCXBQsLTQECfyAAKAJAIgJBgAJqIQMgAigCnAIgACgCBEcEQCADQcYBEA4gAyAAKAIEEBsgAiAAKAIENgKcAgsgAiACKAKEAjYCmAIgAyABEA4LJwEBfyMAQRBrIgIkACACIAE6AA8gACACQQ9qQQEQchogAkEQaiQAC\u002F0UAgd\u002FAn4jAEEQayICJAAgACAAQRBqIgMQgQIgACAAKAI4IgE2AjQgAiABNgIMIABBADYCMCAAIAAoAhQ2AgQDQCAAIAE2AhggACAAKAIIIgU2AhQCQAJAAn8CQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEsAAAiBkH\u002FAXEiBA59ABcXFxcXFxcXBAMEBAIXFxcXFxcXFxcXFxcXFxcXFxcEEhgIBwwTGBcXCw0XDgkFChsbGxsbGxsbGxcXDxEQFhcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBxcGFxQHAQcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHFxUXC0EAIQQgASAAKAI8SQ0dIANBqn82AgAMHgsgACABQQFqEM0DDRsgAiAAKAI4NgIMDB0LIAFBAWogASABLQABQQpGGyEBCyACIAFBAWo2AgwMHQsgAiABQQFqNgIMDB0LAkACQCABLQABIgRBKkcEQCAEQS9GDQEgBEE9Rw0CIAIgAUECajYCDCADQYZ\u002FNgIADBwLIAFBAmohAQNAIAIgATYCDAJAA0ACQAJAAkACQCABLQAAIgRBCmsOBAEDAwIACyAEQSpHBEAgBA0DIAEgACgCPEkNBSAAQegaQQAQEwwgCyABLQABQS9HDQQgAiABQQJqNgIMDCQLIABBATYCMCAAIAAoAghBAWo2AgggAUEBaiEBDAQLIABBATYCMCABQQFqIQEMAwsgBMBBAE4NASABQQYgAkEMahBRIgRBfnFBqMAARgRAIABBATYCMCACKAIMIQEMAQsgAigCDCEBIARBf0cNAAsgAUEBaiEBDAELIAFBAWohAQwACwALIAFBAmohAUEADBULIAIgAUEBajYCDCADQS82AgAMGQtB3AAhBCABLQABQfUARw0XIAIgAUEBajYCBAJAIAJBBGpBARCXAiIBQQBOBEAgARCDAw0BCyACKAIMIQEMGAsgAiACKAIENgIMIAJBATYCCAwVCyACQQA2AgggAiABQQFqNgIMIAQhAQwUCyACIAFBAWoiBjYCDCACIAFBAmo2AgRB3AAhBQJAIAEtAAEiBEHcAEYEQCABLQACQfUARw0BIAJBBGpBARCXAiEFDAELIAQiBcBBAE4NACAGQQYgAkEEahBRIQULIAUQgwNFBEAgAEGT1gBBABATDBULIAIgAigCBDYCDCAAIAJBDGogAkEIaiAFQQEQ8AQiAUUNFCAAQal\u002FNgIQIAAgATYCIAwWC0EuIQQgAS0AASIFQS5GBEAgAS0AAkEuRw0VIAIgAUEDajYCDCADQaV\u002FNgIADBYLIAVBMGtB\u002FwFxQQpPDRQMEQsgAS0AAUE6a0F2SQ0QIAAoAkAtAG5BAXFFDRAgAEH52wBBABATDBILQSohBCABLQABIgVBKkcEQCAFQT1HDRMgAiABQQJqNgIMIANBhX82AgAMFAsgAS0AAkE9RgRAIAIgAUEDajYCDCADQZB\u002FNgIADBQLIAIgAUECajYCDCADQaN\u002FNgIADBMLQSUhBCABLQABQT1HDREgAiABQQJqNgIMIANBh382AgAMEgtBKyEEIAEtAAEiBUErRwRAIAVBPUcNESACIAFBAmo2AgwgA0GIfzYCAAwSCyACIAFBAmo2AgwgA0GVfzYCAAwRCyABLQABIgZBLUcEQCAGQT1HDRAgAiABQQJqNgIMIANBiX82AgAMEQsCQCAAKAJIRQ0AIAEtAAJBPkcNACAAKAIEIAVHDQsLIAIgAUECajYCDCADQZR\u002FNgIADBALAkACQAJAIAEtAAEiBUE8aw4CAQACCyACIAFBAmo2AgwgA0GafzYCAAwRCyABLQACQT1GBEAgAiABQQNqNgIMIANBin82AgAMEQsgAiABQQJqNgIMIANBln82AgAMEAsgBUEhRw0OIAAoAkhFDQ4gAS0AAkEtRw0OIAEtAANBLUYNCQwOC0E+IQQCQAJAIAEtAAFBPWsOAgABDwsgAiABQQJqNgIMIANBnH82AgAMDwsCQAJAAkAgAS0AAkE9aw4CAQACCyABLQADQT1GBEAgAiABQQRqNgIMIANBjH82AgAMEQsgAiABQQNqNgIMIANBmH82AgAMEAsgAiABQQNqNgIMIANBi382AgAMDwsgAiABQQJqNgIMIANBl382AgAMDgtBPSEEAkACQCABLQABQT1rDgIAAQ4LIAEtAAJBPUYEQCACIAFBA2o2AgwgA0GefzYCAAwPCyACIAFBAmo2AgwgA0GdfzYCAAwOCyACIAFBAmo2AgwgA0GkfzYCAAwNC0EhIQQgAS0AAUE9Rw0LIAEtAAJBPUYEQCACIAFBA2o2AgwgA0GgfzYCAAwNCyACIAFBAmo2AgwgA0GffzYCAAwMC0EmIQQgAS0AASIFQSZHBEAgBUE9Rw0LIAIgAUECajYCDCADQY1\u002FNgIADAwLIAEtAAJBPUYEQCACIAFBA2o2AgwgA0GRfzYCAAwMCyACIAFBAmo2AgwgA0GhfzYCAAwLC0HeACEEIAEtAAFBPUcNCSACIAFBAmo2AgwgA0GOfzYCAAwKC0H8ACEEIAEtAAEiBUH8AEcEQCAFQT1HDQkgAiABQQJqNgIMIANBj382AgAMCgsgAS0AAkE9RgRAIAIgAUEDajYCDCADQZJ\u002FNgIADAoLIAIgAUECajYCDCADQaJ\u002FNgIADAkLQT8hBCABLQABIgVBLkcEQCAFQT9HDQggAS0AAkE9RgRAIAIgAUEDajYCDCADQZN\u002FNgIADAoLIAIgAUECajYCDCADQaZ\u002FNgIADAkLIAEtAAJBMGtB\u002FwFxQQpJDQcgAiABQQJqNgIMIANBp382AgAMCAsgBkEATg0GIAFBBiACQQxqEFEiAUF+cUGowABGBEAgACgCCCEFDAoLIAEQqQMNCiABEIMDBEAgAkEANgIIDAULIABBzDFBABATDAULIAAgBEEBIAFBAWogAyACQQxqEP8CRQ0GDAQLQQELIQUDQAJ\u002FAkACQAJAAkAgBUUEQCACIAE2AgwMAQsgAS0AACIERQ0CAkAgBEEKaw4EDgAADgALIATAQQBODQMgAUEGIAJBDGoQUSIEQX5xQajAAEYNDSACKAIMIQEgBEF\u002FRg0BC0EBIQUMBAsgAUEBagwCCyABIAAoAjxPDQoLIAFBAWoLIQFBACEFDAALAAsCQCAAKAIAIAEgAkEMakEAQfQAEIACIghCgICAgHCDIglCgICAgMB+UgRAIAlCgICAgOAAUQ0DIAIoAgxBBiACQQhqEFEQyQFFDQELIAAoAgAgCBAMIABB8MMAQQAQEwwCCyAAIAg3AyAgAEGAfzYCEAwDCyAAIAJBDGogAkEIaiABQQAQ8AQiAUUNACAAIAE2AiAgAigCCCEBIABBADYCKCAAIAE2AiQgAEGDfzYCECAAEO8EDAILIANBqH82AgBBfwwCCyADIAQ2AgAgAiABQQFqNgIMCyAAIAIoAgw2AjhBAAshByACQRBqJAAgBw8LIABBATYCMCAAIAVBAWo2AggLIAIoAgwhAQwACwALFQAgAUHYAU4EQCAAKAIQIAEQhgULC7sHAgZ\u002FAX4jAEEgayIHJABCgICAgOAAIQsCQAJAAkACQAJAAkACQAJAAkACQCABQiCIpyIGQQFqDggDBQUAAQUFCQILIAAgAkGiwgAQtQEMBgsgACACQczoABC1AQwFCyAGQXlGDQEMAgsgAachBgwCCyABpyEGIAACfwJAIAJBAEgEQCACQf\u002F\u002F\u002F\u002F8HcSIFIAYpAgQiC6dB\u002F\u002F\u002F\u002F\u002FwdxTw0DIAZBEGohAiALQoCAgIAIg1ANASACIAVBAXRqLwEADAILIAJBMEcNAiAGKQIEQv\u002F\u002F\u002F\u002F8HgyELDAYLIAIgBWotAAALQf\u002F\u002FA3EQlAMhCwwECyAAIAEQiwSnIgZFDQILIAJB\u002F\u002F\u002F\u002F\u002FwdxIQkDQCAGKAIQIgVBMGohCiAFIAUoAhggAnFBf3NBAnRqKAIAIQUCQANAIAVFDQEgAiAKIAVBAWtBA3QiBWoiCCgCBEcEQCAIKAIAQf\u002F\u002F\u002Fx9xIQUMAQsLIAYoAhQgBWohBQJAAkACQAJAIAgoAgBBHnZBAWsOAwABAgMLIAUoAgAiAkUNBiACIAIoAgBBAWo2AgAgACACrUKAgICAcIQgA0EAQQAQNiELDAcLIAUoAgAoAhApAwAiC0KAgICAcINCgICAgMAAUQRAIAAgAhDRAQwFCyALQiCIp0F1SQ0GIAunIgAgACgCAEEBajYCAAwGCyAAIAYgAiAFIAgQwQJFDQIMAwsgBSkDACILQiCIp0F1SQ0EIAunIgAgACgCAEEBajYCAAwECwJAIAYtAAUiBUEEcUUNACAFQQhxBEAgAkEASARAIAYoAiggCUsEQCAAIAatQoCAgIBwhCAJEKYBIQsMBwsgBi8BBkEga0H\u002F\u002FwNxQfX\u002FA08NBQwCCyAGLwEGQRVrQf\u002F\u002FA3FBCksNASAAIAIQkwMiBUUNAUKAgICA4ABCgICAgDAgBUEASBshCwwFCyAAKAIQKAJEIAYvAQZBGGxqKAIUIgVFDQAgBSgCFCIIBEAgBiAGKAIAQQFqNgIAIAAgBq1CgICAgHCEIgEgAiADIAgRLQAhCyAAIAEQDAwFCyAFKAIAIgVFDQAgBiAGKAIAQQFqNgIAIAAgByAGrUKAgICAcIQiASACIAURFwAhBSAAIAEQDCAFQQBIDQIgBUUNACAHLQAAQRBxBEAgACAHKQMYEAwgACAHKQMQIANBAEEAEDYhCwwFCyAHKQMIIQsMBAsgBigCECgCLCIGDQALQoCAgIAwIQsgBEUNAiAAIAIQwAILQoCAgIDgACELDAELQoCAgIAwIQsLIAdBIGokACALCw0AIAAgASACQQQQyAILXwECfyMAQRBrIgQkACAAKAIAIQMgBCACNgIMIANBAyABIAJBABDkBSADIAMoAhApA4ABIAAoAgwgACgCCCAAKAJAIgAEfyAAKAJoQQBHQQF0BUEACxC0AiAEQRBqJAALDwAgACgCQEGAAmogARAmCysBAX8gACABIAIgA0KAgICAMEKAgICAMCAEQYDOAHIQaiEFIAAgAxAMIAULKwAgAUHYAU4EQCAAKAIQKAI4IAFBAnRqKAIAIgAgACgCAEEBajYCAAsgAQsPACAAIAAoAgAgARAWEDgLSgAgABDoAkUEQEF\u002FDwsgAkEASARAIAAQLSECCyAAIAFB\u002FwFxEA0gACACEDggACgCQCgCpAIgAkEUbGoiACAAKAIAQQFqNgIAIAILLQEBfwJAIAAoAgAiAUUNACAAKAIQIgBFDQAgASgCACAAQQAgASgCBBEBABoLCzEAIAFBAE4EQCAAQbYBEA0gACABEDggACgCQCIAKAKkAiABQRRsaiAAKAKEAjYCBAsLJwEBfyMAQRBrIgIkACACIAE2AgwgACACQQxqQQQQchogAkEQaiQACxcAIAAgASACQoCAgIAwIAMgBEECENIBCxgBAX4gASkDACEDIAEgAjcDACAAIAMQDAszAQF\u002FIAIEQCAAIQMDQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQQFrIgINAAsLIAALwQUCAn4GfyMAQeAAayIJJAAgA0EAIANBAEobIQsDQCAKIAtHBEAgACACIApBBHRqIgMoAgAQsAUhBiADLQAEIQdCgICAgDAhBAJAAkACQAJAAkACQAJAAkACQAJAIAMtAAUOCgECAgUHAwQIBQAGCyAAIAMoAggQsAUhCAJ+AkACQAJAIAMoAgxBAWoOAwIAAQkLIAAgACkDwAEiBCAIIARBABARDAILIAAgACgCKCkDECIEIAggBEEAEBEMAQsgACABIAggAUEAEBELIQQgACAIEBAgBkHLAUYEQEEBIQcMCAsgBkHUAUcNB0EAIQcMBwsCQCAGQcsBRgRAQQEhBwwBCyAGQdQBRw0AQQAhBwsgACABIAZBAiADIAcQgAMaDAcLIAAgASAGQoCAgIAwIAMoAggEfiAJIAMoAgA2AhAgCUEgaiIIQcAAQeEqIAlBEGoQSBogACADKAIIIAhBAEEKQQggAy0ABUECRhsgAy4BBhCCAQVCgICAgDALIgQgAygCDAR+IAkgAygCADYCACAJQSBqIghBwABB2iogCRBIGiAAIAMoAgwgCEEBQQtBCSADLQAFQQJGGyADLgEGEIIBBUKAgICAMAsiBSAHQYA6chBqGiAAIAQQDCAAIAUQDAwGCyADKQMIIgRCgICAgAh8Qv\u002F\u002F\u002F\u002F8PWARAIARC\u002F\u002F\u002F\u002F\u002Fw+DIQQMBQtCgICAgMB+IAS5vSIEQoCAgIDAgYD8\u002FwB9IARC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbIQQMBAtCgICAgMB+IAMpAwgiBEKAgICAwIGA\u002FP8AfSAEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGyEEDAMLIAAgASAGQQIgAyAHEIADGgwDCxABAAsgAzUCCCEECyAAIAEgBiAEIAcQFRoLIAAgBhAQIApBAWohCgwBCwsgCUHgAGokAAuMAgICfgF\u002FAkACQAJAAkACQAJAAkACQAJAQQcgAUIgiKciBCAEQQdrQW5JG0EKag4SAgAGBAAAAAAAAQMFAAAAAAEDAAsgAEGbHkEAEBJCgICAgOAADwsgBEF1SQ0GIAGnIgAgACgCAEEBajYCAAwGCyAAQSEQhgEhAgwECyAAQQQQhgEhAgwDCyAAIABBBRCGASICQTAgAacpAgRC\u002F\u002F\u002F\u002F\u002FweDQQAQFRoMAgsgAEEGEIYBIQIMAQsgAEEHEIYBIQILQoCAgIDgACEDIAJCgICAgHCDQoCAgIDgAFIEfiAEQXVPBEAgAaciBCAEKAIAQQFqNgIACyAAIAIgARC9ASACBUKAgICA4AALDwsgAQsyAQF\u002FAkAgAUIgiKdBdUkNACABpyICIAIoAgAiAkEBazYCACACQQFKDQAgACABEJcFCwsLACAAQeweQQAQEgujBAELfyAAKAIAIQUjAEEQayIIIAI2AgxBfyEJAkADQAJAIAggAiIDQQRqIgI2AgwgAygCACIHQX9GDQAgACgCBCEKA0AgASIEIApODQMgBCAEIAVqIgwtAAAiBkECdEHgrgFqIg0tAABqIgEgCkoNAyAGQcYBRgRAIAwoAAEhCQwBCwsgBiAHRwRAIAdBGHYgBkYgBiAHQRB2Qf8BcUZyIAYgB0H\u002FAXFGckUgBiAHQQh2Qf8BcUdxIAZFIAdBgAJJcnINAyAAIAY2AhALIARBAWohBAJAAkACQAJAAkACQAJAAkAgDS0AA0EFaw4YAAkACQkBCQkBCQkBAQECAgICBAUGBwkDCQsgBCAFai0AACEEIAggA0EIaiICNgIMIAMoAgQiA0F\u002FRgRAIAAgBDYCFAwJCyADIARGDQgMCQsgBCAFai8AACEEIAggA0EIaiICNgIMIAMoAgQiA0F\u002FRgRAIAAgBDYCFAwICyADIARGDQcMCAsgACAEIAVqKAAANgIYDAYLIAAgBCAFaiIDKAAANgIYIAAgAy8ABDYCHAwFCyAAIAQgBWooAAA2AiAMBAsgACAEIAVqIgMoAAA2AiAgACADLQAENgIcDAMLIAAgBCAFaiIDKAAANgIgIAAgAy8ABDYCHAwCCyAAIAQgBWoiAygAADYCICAAIAMoAAQ2AhggACADLQAINgIcDAELCyAAIAk2AgwgACABNgIIQQEhCwsgCwskAQF\u002FIAAoAhAiAkEQaiABIAIoAgARAwAiAUUEQCAAEHALIAELCwAgACABQQAQjQQLJwEBfyMAQRBrIgIkACACIAE7AQ4gACACQQ5qQQIQchogAkEQaiQAC9QBAgR\u002FAn5BfyECAkACQAJAAkACQAJAAkAgAUIgiKciA0EKag4RAwUFAgUFBQUFBAABAQEFBQYFCyABp0EARw8LIAGnDwsgAacpAgQhByAAIAEQDCAHQv\u002F\u002F\u002F\u002F8Hg0IAUg8LIAGnKAIMIQQgACABEAwgBEH\u002F\u002F\u002F\u002F\u002FB2pBfkkPCyABpywABSEFIAAgARAMIAVBAE4PCyADQQdrQW1NBEAgAUKAgICAwIGA\u002FP8AfEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0IBfUKAgICAgICA+P8AVA8LIAAgARAMQQEhAgsgAgs\u002FAQJ\u002FIwBBEGsiAiQAAn8gASAAKAIQRwRAIAIgATYCACAAQcyQASACEBNBfwwBCyAAEA8LIQMgAkEQaiQAIAMLCwAgACABQQEQ6QULGQAgAEEAEFAaIABCgICAgPD\u002F\u002F\u002F\u002F\u002FADcCBAvDCgIFfxF+IwBB4ABrIgUkACAEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002Fz+DIQwgAiAEhUKAgICAgICAgIB\u002FgyEKIAJC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP4MiDUIgiCEOIARCMIinQf\u002F\u002FAXEhBwJAAkAgAkIwiKdB\u002F\u002F8BcSIJQf\u002F\u002FAWtBgoB+TwRAIAdB\u002F\u002F8Ba0GBgH5LDQELIAFQIAJC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAIMiC0KAgICAgIDA\u002F\u002F8AVCALQoCAgICAgMD\u002F\u002FwBRG0UEQCACQoCAgICAgCCEIQoMAgsgA1AgBEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8AgyICQoCAgICAgMD\u002F\u002FwBUIAJCgICAgICAwP\u002F\u002FAFEbRQRAIARCgICAgICAIIQhCiADIQEMAgsgASALQoCAgICAgMD\u002F\u002FwCFhFAEQCACIAOEUARAQoCAgICAgOD\u002F\u002FwAhCkIAIQEMAwsgCkKAgICAgIDA\u002F\u002F8AhCEKQgAhAQwCCyADIAJCgICAgICAwP\u002F\u002FAIWEUARAIAEgC4QhGUIAIQEgGVAEQEKAgICAgIDg\u002F\u002F8AIQoMAwsgCkKAgICAgIDA\u002F\u002F8AhCEKDAILIAEgC4RQBEBCACEBDAILIAIgA4RQBEBCACEBDAILIAtC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP1gEQCAFQdAAaiABIA0gASANIA1QIgYbeSAGQQZ0rXynIgZBD2sQYkEQIAZrIQYgBSkDWCINQiCIIQ4gBSkDUCEBCyACQv\u002F\u002F\u002F\u002F\u002F\u002F\u002Fz9WDQAgBUFAayADIAwgAyAMIAxQIggbeSAIQQZ0rXynIghBD2sQYiAGIAhrQRBqIQYgBSkDSCEMIAUpA0AhAwsgA0IPhiILQoCA\u002Fv8PgyICIAFCIIgiBH4iECALQiCIIhMgAUL\u002F\u002F\u002F\u002F\u002FD4MiAX58Ig9CIIYiESABIAJ+fCILIBFUrSACIA1C\u002F\u002F\u002F\u002F\u002Fw+DIg1+IhUgBCATfnwiESAMQg+GIhIgA0IxiIRC\u002F\u002F\u002F\u002F\u002Fw+DIgMgAX58IhQgDyAQVK1CIIYgD0IgiIR8Ig8gAiAOQoCABIQiDH4iFiANIBN+fCIOIBJCIIhCgICAgAiEIgIgAX58IhAgAyAEfnwiEkIghnwiF3whASAHIAlqIAZqQf\u002F\u002FAGshBgJAIAIgBH4iGCAMIBN+fCIEIBhUrSAEIAQgAyANfnwiBFatfCACIAx+fCAEIAQgESAVVK0gESAUVq18fCIEVq18IAMgDH4iAyACIA1+fCICIANUrUIghiACQiCIhHwgBCACQiCGfCICIARUrXwgAiACIBAgElatIA4gFlStIA4gEFatfHxCIIYgEkIgiIR8IgJWrXwgAiACIA8gFFStIA8gF1atfHwiAlatfCIEQoCAgICAgMAAg1BFBEAgBkEBaiEGDAELIAtCP4ghGiAEQgGGIAJCP4iEIQQgAkIBhiABQj+IhCECIAtCAYYhCyAaIAFCAYaEIQELIAZB\u002F\u002F8BTgRAIApCgICAgICAwP\u002F\u002FAIQhCkIAIQEMAQsCfiAGQQBMBEBBASAGayIHQf8ATQRAIAVBMGogCyABIAZB\u002FwBqIgYQYiAFQSBqIAIgBCAGEGIgBUEQaiALIAEgBxCNAiAFIAIgBCAHEI0CIAUpAzAgBSkDOIRCAFKtIAUpAyAgBSkDEISEIQsgBSkDKCAFKQMYhCEBIAUpAwAhAiAFKQMIDAILQgAhAQwCCyAEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002Fz+DIAatQjCGhAsgCoQhCiALUCABQgBZIAFCgICAgICAgICAf1EbRQRAIAogAkIBfCIBUK18IQoMAQsgCyABQoCAgICAgICAgH+FhFBFBEAgAiEBDAELIAogAiACQgGDfCIBIAJUrXwhCgsgACABNwMAIAAgCjcDCCAFQeAAaiQACykBAX8gAgRAIAAhAwNAIAMgAToAACADQQFqIQMgAkEBayICDQALCyAACwwAIAAoAkBBfxDRAwtqAQJ\u002FAkAgACgC2AIiA0UNACAAKALgAiIEIAAoAtwCTg0AIAAoAugCIAFLDQAgACgC5AIgAkYNACADIARBA3RqIgMgAjYCBCADIAE2AgAgACABNgLoAiAAIARBAWo2AuACIAAgAjYC5AILCzUAIAAgAkEwIAJBABARIgJCgICAgHCDQoCAgIDgAFEEQCABQgA3AwBBfw8LIAAgASACEKEBC3kCAn8BfiABQiCIpyIDIAGnIgJBAEhyRQRAIAJBgICAgHhyDwsgA0F4RgRAIAAgACgCECACEMYCEBYPCyAAIAEQiQQiAUKAgICAcIMiBEKAgICA4ABRBEBBAA8LIARCgICAgIB\u002FUQRAIAAgARCIAg8LIAAgAacQkQQLGQAgAQRAIAAgAUEQa61CgICAgJB\u002FhBAMCwupAQEEfyAAQQA2AgQgAVAEQCAAQYCAgIB4NgIIIABBABBQGkEADwsCQCABQv\u002F\u002F\u002F\u002F8PWARAIABBARBQDQEgACgCECABIAGnZyICrYY+AgAgAEEgIAJrNgIIQQAPCyAAQQIQUA0AIAAoAhAiAyABpyIEIAFCIIinIgVnIgJ0NgIAIAMgBSACdCAEQQF2IAJBf3N2cjYCBCAAQcAAIAJrNgIIQQAPCyAAECpBIAsQACAAIAAoAigpAwhBARBHCxQBAn4gACABECUhAyAAIAEQDCADC0sBAn8gAUKAgICAcFoEfyABpyIDLwEGIgJBDUYEQEEBDwsgAkEsRgRAIAMoAiAtABAPCyAAKAIQKAJEIAJBGGxqKAIQQQBHBUEACwsjAQF+IAAgASACQoCAgIAwIAMgBEECENIBIQUgACABEAwgBQuDAgIDfwF+QoCAgIDgACEEIAAoAhQEfkKAgICA4AAFIAAoAgQhASAAKAIIIgJFBEAgACgCACgCECICQRBqIAEgAigCBBEAACAAQQA2AgQgACgCAEEvECkPCyAAKAIMIAJKBEAgACgCACgCECIDQRBqIAEgAiAAKAIQIgF0IAFrQRFqIAMoAggRAQAiAUUEQCAAKAIEIQELIAAgATYCBAsgASAAKAIQIgIEfyACBSABIAAoAghqQQA6ABAgACgCEAtBH3StIAEpAgRC\u002F\u002F\u002F\u002F\u002F3eDhCIENwIEIAEgBEKAgICAeIMgADUCCEL\u002F\u002F\u002F\u002F\u002FB4OENwIEIABBADYCBCABrUKAgICAkH+ECwsPACAAKAJAQYACaiABEBsLEwAgACABIAIgAyABQYCAARDQAQsNACAAIAEgAkEGEMgCCx8BAX8gACgCJCIBIAEoAgBBAWo2AgAgACABQQIQ5wULZwECfwJ\u002FIAAoAggiAiAAKAIMTgRAQX8gACACQQFqIAEQxAINARoLIAAgACgCCCIDQQFqNgIIIAAoAgRBEGohAgJAIAAoAhAEQCACIANBAXRqIAE7AQAMAQsgAiADaiABOgAAC0EACwt6AQN\u002FAkACQCAAIgFBA3FFDQAgAS0AAEUEQEEADwsDQCABQQFqIgFBA3FFDQEgAS0AAA0ACwwBCwNAIAEiAkEEaiEBIAIoAgAiA0F\u002FcyADQYGChAhrcUGAgYKEeHFFDQALA0AgAiIBQQFqIQIgAS0AAA0ACwsgASAAawsNACAAIAEgAkEAEJkDCywBAX8jAEEQayIDJAAgAyACNgIMIABB3ABqQYABIAEgAhDJAhogA0EQaiQAC+gDAQl\u002FIwBBIGsiBSQAIAEgAiABKAIMIAIoAgxJIgYbIgcoAgQgAiABIAYbIggoAgRzIQoCQAJAIAcoAgwiAkUEQAJAIAgoAggiAUH\u002F\u002F\u002F\u002F\u002FB0cEQCAHKAIIIgJB\u002F\u002F\u002F\u002F\u002FwdHDQELIAAQKkEAIQIMAwsgAUH+\u002F\u002F\u002F\u002FB0cgAkH+\u002F\u002F\u002F\u002FB0dxRQRAAkAgAUH+\u002F\u002F\u002F\u002FB0YEQCACQYCAgIB4Rg0BDAQLIAFBgICAgHhHIAJB\u002Fv\u002F\u002F\u002FwdHcg0DCyAAECpBASECDAMLIAAgChCAAUEAIQIMAgsgCCgCDCILIQkgAiEGIARBB3FBBkYEQCACIANBIWpBBXYiASABIAJKGyEGIAsgASABIAtKGyEJCwJ\u002FAkAgACAIRg0AIAAgB0YNACAADAELIAAoAgAhASAFQgA3AhggBUKAgICAgICAgIB\u002FNwIQIAUgATYCDCAAIQwgBUEMagshASAHKAIQIQAgCCgCECENAn8gASAGIAlqEFAEQCABECpBIAwBCyABKAIQIA0gC0ECdGogCUECdGsgCSAAIAJBAnRqIAZBAnRrIAYQ8AEgASAKNgIEIAEgBygCCCAIKAIIajYCCCABIAMgBBCbAgshAiABIAVBDGoiAEcNASAMIAAQvwQMAQsgACAKEH9BACECCyAFQSBqJAAgAgsKACAAIAFBARBHCygBAX8gAkIgiKdBdU8EQCACpyIDIAMoAgBBAWo2AgALIAAgASACEG0LlQUCA38BfgJAAkACQAJAAkACQANAIAIoAhAiBEEwaiEFIAQgBCgCGCADcUF\u002Fc0ECdGooAgAhBANAIARFDQQgAyAFIARBAWtBA3QiBmoiBCgCBEcEQCAEKAIAQf\u002F\u002F\u002Fx9xIQQMAQsLIAIoAhQgBmohBSAEKAIAIQYgAUUNASABQoCAgIAwNwMYIAFCgICAgDA3AxAgAUKAgICAMDcDCCABIAZBGnZBB3EiBjYCAAJAAkACQAJAIAQoAgBBHnZBAWsOAwABAgMLIAEgBkEQcjYCACAFKAIAIgAEQCAAIAAoAgBBAWo2AgAgASAArUKAgICAcIQ3AxALIAUoAgQiAEUNCSAAIAAoAgBBAWo2AgAgASAArUKAgICAcIQ3AxhBAQ8LIAUoAgAoAhApAwAiB0KAgICAcINCgICAgMAAUQ0EIAdCIIinQXVPBEAgB6ciACAAKAIAQQFqNgIACyABIAc3AwgMCAsgACACIAMgBSAEEMECRQ0BDAYLCyAFKQMAIgdCIIinQXVPBEAgB6ciACAAKAIAQQFqNgIACyABIAc3AwgMBQtBASEEIAZBgICAgHxxQYCAgIB4Rw0CIAUoAgAoAhA1AgRCIIZCgICAgMAAUg0CCyAAIAMQ0QEMAgtBACEEIAItAAUiBUEEcUUNACAFQQhxBEAgA0EATg0BIANB\u002F\u002F\u002F\u002F\u002FwdxIgMgAigCKCIFSSEEIAFFIAMgBU9yDQEgAUKAgICAMDcDGCABQoCAgIAwNwMQIAFBBzYCACABIAAgAq1CgICAgHCEIAMQpgE3AwgMAwsgACgCECgCRCACLwEGQRhsaigCFCIFRQ0AIAUoAgAiBUUNACAAIAEgAq1CgICAgHCEIAMgBREXACEECyAEDwtBfw8LQQELDQAgACABIAJBARDIAgsmAQF\u002FAkAgACgCEEGDf0cNACAAKAIgIAFHDQAgACgCJEUhAgsgAgsdACAAIAEpAxAQDCAAIAEpAxgQDCAAIAEpAwgQDAumAQEDfyAAKAIQIgMoAuABIAGnQQAgAUL\u002F\u002F\u002F\u002F\u002Fb1YbIgRBgYDc8XlsQf\u002F\u002Fo44GayIFQSAgAygC1AFrdkECdGohAwJAAkADQCADKAIAIgMEQAJAIAMoAhQgBUcNACADKAIsIARHDQAgAygCIEUNAwsgA0EoaiEDDAELCyAAIARBAhDyBCIDDQFCgICAgOAADwsgAyADKAIAQQFqNgIACyAAIAMgAhDnBQsqAQJ\u002FIwBBEGsiBCQAIAQgAzYCDCAAIAEgAiADEMkCIQUgBEEQaiQAIAULSAAgACABRwRAIAAgASgCDBBQBEAgABAqQSAPCyAAIAEoAgQ2AgQgACABKAIINgIIIAAoAhAgASgCECABKAIMQQJ0EB4aC0EACywAIAFCgICAgGCDQoCAgIAgUQRAIABB6z9BABASQoCAgIDgAA8LIAAgARAlC6sCAQR\u002FAkAgAiADTw0AIAMgAmshBSABQRBqIQQgAS0AB0GAAXEEQEEAIQMgBUEAIAVBAEobIQYgBCACQQF0aiEBQQAhAgNAIAIgBkZFBEAgAyABIAJBAXRqLwEAciEDIAJBAWohAgwBCwsCQCAAKAIIIAVqIgIgACgCDCIHSgRAQX8hBCAAIAIgAxDEAkUNAQwDCyAAKAIQIANBgAJIcg0AQX8hBCAAIAcQ4AMNAgsCQCAAKAIQRQRAQQAhAgNAIAIgBkYNAiAAKAIEIAAoAgggAmpqIAEgAkEBdGotAAA6ABAgAkEBaiECDAALAAsgACgCBCAAKAIIQQF0akEQaiABIAVBAXQQHhoLIAAgACgCCCAFajYCCEEADwsgACACIARqIAUQiwIhBAsgBAuJAQECfyABKAJ8IgRB\u002F\u002F8DTgRAIABBlyhBABA6QX8PC0F\u002FIQMgACABQfQAakEQIAFB+ABqIARBAWoQZAR\u002FQX8FIAEgASgCfCIDQQFqNgJ8IAEoAnQgA0EEdGoiA0IANwIAIANCADcCCCADIAAgAhAWNgIAIAMgAygCDEGAfnI2AgwgASgCfEEBawsLRwEBfyABQiCIp0F1TwRAIAGnIgMgAygCAEEBajYCAAsgAkIgiKdBdU8EQCACpyIDIAMoAgBBAWo2AgALIAAgASACQQEQtAEL+wQBAn8CQAJAIAFCgICAgHBUIAJC\u002F\u002F\u002F\u002F\u002Fw9Wcg0AIAKnIQMCQAJAAkACQAJAAkACQAJAAkACQAJAIAGnIgQvAQZBAmsOHgALCwsLCwALCwsLCwsLCwsLCwsCAQIDBAUGBwgJCgsLIAQoAiggA00NCiAEKAIkIANBA3RqKQMAIgFCIIinQXVJDQsgAaciACAAKAIAQQFqNgIAIAEPCyAEKAIoIANNDQkgBCgCJCADajAAAEL\u002F\u002F\u002F\u002F\u002FD4MPCyAEKAIoIANNDQggBCgCJCADajEAAA8LIAQoAiggA00NByAEKAIkIANBAXRqMgEAQv\u002F\u002F\u002F\u002F8Pgw8LIAQoAiggA00NBiAEKAIkIANBAXRqMwEADwsgBCgCKCADTQ0FIAQoAiQgA0ECdGo1AgAPCyAEKAIoIANNDQQgBCgCJCADQQJ0aigCACIAQQBOBEAgAK0PC0KAgICAwH4gALi9IgFCgICAgMCBgPz\u002FAH0gAUKAgICAgICA+P8AVhsPCyAEKAIoIANNDQMgACAEKAIkIANBA3RqKQMAEL8CDwsgBCgCKCADTQ0CIAAgBCgCJCADQQN0aikDABCIBA8LIAQoAiggA00NAUKAgICAwH4gBCgCJCADQQJ0aioCALu9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsPCyAEKAIoIANNDQBCgICAgMB+IAQoAiQgA0EDdGopAwAiAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGw8LIAAgAhAwIQMgACACEAwgA0UEQEKAgICA4AAPCyAAIAEgAyABQQAQESEBIAAgAxAQCyABC4IDAgR\u002FAn4CQCAAKQNwIgVQRSAFIAApA3ggACgCBCIBIAAoAiwiAmusfCIGV3FFBEAjAEEQayICJABBfyEBAkACfyAAIAAoAkgiA0EBayADcjYCSCAAKAIUIAAoAhxHBEAgAEEAQQAgACgCJBEBABoLIABBADYCHCAAQgA3AxAgACgCACIDQQRxBEAgACADQSByNgIAQX8MAQsgACAAKAIsIAAoAjBqIgQ2AgggACAENgIEIANBG3RBH3ULDQAgACACQQ9qQQEgACgCIBEBAEEBRw0AIAItAA8hAQsgAkEQaiQAIAEiA0EATg0BIAAoAgQhASAAKAIsIQILIABCfzcDcCAAIAE2AmggACAGIAIgAWusfDcDeEF\u002FDwsgBkIBfCEGIAAoAgQhASAAKAIIIQICQCAAKQNwIgVQDQAgBSAGfSIFIAIgAWusWQ0AIAEgBadqIQILIAAgAjYCaCAAIAYgACgCLCIAIAFrrHw3A3ggACABTwRAIAFBAWsgAzoAAAsgAwtPAQF\u002FAn9BACAAKAIMIAFGDQAaIAAoAgAiAigCACAAKAIQIAFBAnQgAigCBBEBACECIAEEQEF\u002FIAJFDQEaCyAAIAE2AgwgACACNgIQQQALC9EBAQZ\u002FIABBAWohBQJAAkAgAC0AACIDwCIHQQBOBEAgBSEBDAELQX8hBCAHQUBrQf8BcSIDQT1LDQEgA0ECdEGU9gFqKAIAIgYgAU4NASAGQQFrIQggACAGakEBaiEBIAcgBkHz9QFqLQAAcSEDQQAhAANAIAAgBkcEQCAFLAAAIgRBv39KBEBBfw8FIARBP3EgA0EGdHIhAyAAQQFqIQAgBUEBaiEFDAILAAsLQX8hBCADIAhBAnRBgPYBaigCAEkNAQsgAiABNgIAIAMhBAsgBAsLACAAIAFBABDpBQsJACAAQQEQrQELugEBAn8CQAJAIAJC\u002F\u002F\u002F\u002F\u002FwdYBEAgACABIAKnQYCAgIB4chBuIgRBAEwNASAAIAEgAhBOIgJCgICAgHCDQoCAgIDgAFINAkF\u002FIQQMAgsgACACEIsDIgVFBEBBfyEEDAELAkAgACABIAUQbiIEQQBMBEBCgICAgDAhAgwBCyAAIAEgBSABQQAQESICQoCAgIBwg0KAgICA4ABSDQBBfyEECyAAIAUQEAwBC0KAgICAMCECCyADIAI3AwAgBAsbAQF\u002FIAAgARA1BH9BAAUgAEH7OUEAEBJBfwsLYwEBfyACQiCIp0F1TwRAIAKnIgUgBSgCAEEBajYCAAsCQCAAIAEgAhDTBSIFDQACQCABKAIAIgBBAEgEQCAAIARqIgBBACAAQQBKGyEDDAELIAAgA0wNAQsgASADNgIACyAFCxgAIAAtAABBIHFFBEAgASACIAAQlwQaCwsPACAAKAJAQYACaiABEA4LrgIAAkACQAJAAkAgAkEDTARAAkACQAJAAkACQAJAAkACQAJAIAFB2ABrDgkAAQIDBAUGBwgKCyAAIAJBO2tB\u002FwFxEA4PCyAAIAJBN2tB\u002FwFxEA4PCyAAIAJBM2tB\u002FwFxEA4PCyAAIAJBL2tB\u002FwFxEA4PCyAAIAJBK2tB\u002FwFxEA4PCyAAIAJBJ2tB\u002FwFxEA4PCyAAIAJBI2tB\u002FwFxEA4PCyAAIAJBH2tB\u002FwFxEA4PCyAAIAJBG2tB\u002FwFxEA4PCyACQf8BSw0BAkACQAJAIAFB2ABrDgMAAQIECyAAQcIBEA4MBQsgAEHDARAODAQLIABBxAEQDgwDCyABQSJGDQELIAAgAUH\u002FAXEQDiAAIAJB\u002F\u002F8DcRAmDwsgACACQRJrQf8BcRAODwsgACACQf8BcRAOCzgBAX8CQAJAIAFCgICAgHBUDQAgAaciAy8BBiACRw0AIAMoAiAiAw0BCyAAIAIQigNBACEDCyADC0EBAX8gAQRAA0AgAiADRkUEQCAAIAEgA0EDdGooAgQQECADQQFqIQMMAQsLIAAoAhAiAEEQaiABIAAoAgQRAAALCywBAX8gACgCECICQRBqIAEgAigCABEDACICBEAgAkEAIAEQLA8LIAAQcCACC20BAX8jAEGAAmsiBSQAIARBgMAEcSACIANMckUEQCAFIAFB\u002FwFxIAIgA2siA0GAAiADQYACSSIBGxAsGiABRQRAA0AgACAFQYACEFcgA0GAAmsiA0H\u002FAUsNAAsLIAAgBSADEFcLIAVBgAJqJAALvgECAn4BfwJAAkAgAUKAgICAcINCgICAgDBRBEAgACgCKCACQQN0aikDACIDQiCIp0F0Sw0BDAILIAAgAUE8IAFBABARIgNCgICAgHCDQoCAgIDgAFEEQCADDwsgA0L\u002F\u002F\u002F\u002F\u002Fb1YNASAAIAMQDCAAIAEQ\u002FAIiBUUEQEKAgICA4AAPCyAFKAIoIAJBA3RqKQMAIgNCIIinQXVJDQELIAOnIgUgBSgCAEEBajYCAAsgACADIAIQRyEEIAAgAxAMIAQLDAAgAEHZ6gBBABASCw0AIAAgASABED0Q6gELdQEBfiAAIAEgBH4gAiADfnwgA0IgiCICIAFCIIgiBH58IANC\u002F\u002F\u002F\u002F\u002Fw+DIgMgAUL\u002F\u002F\u002F\u002F\u002FD4MiAX4iBUIgiCADIAR+fCIDQiCIfCABIAJ+IANC\u002F\u002F\u002F\u002F\u002Fw+DfCIBQiCIfDcDCCAAIAVC\u002F\u002F\u002F\u002F\u002Fw+DIAFCIIaENwMAC1ABAX4CQCADQcAAcQRAIAEgA0FAaq2GIQJCACEBDAELIANFDQAgAiADrSIEhiABQcAAIANrrYiEIQIgASAEhiEBCyAAIAE3AwAgACACNwMIC2QAAkACQCABQQBIDQAgACgCrAIgAUwNACAAKAKkAiABQRRsaiIAIAAoAgAgAmoiADYCACAAQQBIDQEgAA8LQdwXQajsAEHzpwFBr8MAEAAAC0HphQFBqOwAQfanAUGvwwAQAAALcAECfyAEIAMoAgBKBH8jAEEQayIFJAAgACABKAIAIAQgAygCAEEDbEECbSIAIAAgBEgbIgAgAmwgBUEMahCnASIEBH8gAyAFKAIMIAJuIABqNgIAIAEgBDYCAEEABUF\u002FCyEGIAVBEGokACAGBUEACwsLACAAIAFBARDaBQtjAQF\u002FIAJCIIinQXVPBEAgAqciBiAGKAIAQQFqNgIACwJAIAAgASACENIFIgANACABKQMAIgJCAFMEQCABIAIgBXwiAjcDAAsgAiADWQRAIAQiAyACWQ0BCyABIAM3AwALIAALYAAgACABIAJCgICAgAh8Qv\u002F\u002F\u002F\u002F8PWAR+IAJC\u002F\u002F\u002F\u002F\u002Fw+DBUKAgICAwH4gArm9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLIANBh4ABEJQBC0MBA38CQCACRQ0AA0AgAC0AACIEIAEtAAAiBUYEQCABQQFqIQEgAEEBaiEAIAJBAWsiAg0BDAILCyAEIAVrIQMLIAMLaQECfwJ\u002FIAAoAgAiA0ECaiIEIAAoAgRKBEBBfyAAIAQQ0QINARogACgCACEDCyAAIANBAWo2AgAgACgCCCIEIANBAnRqIAE2AgAgACAAKAIAIgBBAWo2AgAgBCAAQQJ0aiACNgIAQQALC60QAgx\u002FAX4jAEEQayIKJAACQAJAIAFC\u002F\u002F\u002F\u002F\u002F29YBEAgABAiDAELIAZBgDBxIg5FIAYgBkEIdiIQcSAQQX9zckEHcSIRQQdGcSESIAZBgMAAcSEMIAJB\u002F\u002F\u002F\u002F\u002FwdxIQ0gAachCQJAAkACQAJAAkADQCAJKAIQIgdBMGohCCAHIAcoAhggAnFBf3NBAnRqKAIAIQcCQANAIAdFDQEgAiAIIAdBAWtBA3QiC2oiBygCBEcEQCAHKAIAQf\u002F\u002F\u002Fx9xIQcMAQsLIAkoAhQgC2ohCCAKIAc2AgwgDEUgBygCACILQYCAgIACcUVyRQRAIANCIIinQXVPBEAgA6ciByAHKAIAQQFqNgIACyAAIApBCGogA0EAEL4CDQgCfiAKKAIIIgdBAE4EQCAHrQwBC0KAgICAwH4gB7i9IgNCgICAgMCBgPz\u002FAH0gA0KAgICAgICA+P8AVhsLIQMgCSgCECIHQTBqIQggByAHKAIYIAJxQX9zQQJ0aigCACEHAkADQCAHBEAgCCAHQQFrQQN0IgtqIgcoAgQgAkYNAiAHKAIAQf\u002F\u002F\u002Fx9xIQcMAQsLQdj1AEGo7ABB58YAQasLEAAACyAJKAIUIAtqIQggCiAHNgIMIAcoAgAhCwsgC0EadiIPIAYQjwNFDQYgD0EwcSIPQTBGBEAgACAJIAIgCCAHEMECRQ0CDAgLIAZBgPQAcUUNBSAOBEAgBKciDUEAIAAgBBA1GyECIAWnIg5BACAAIAUQNRshDAJAIAtBgICAgHxxQYCAgIAERwRAQX8hByAAIAkgCkEMahDTAQ0LAkAgCigCDCgCAEGAgICAfHFBgICAgHhGBEAgACgCECAIKAIAEOUBDAELIAAgCCkDABAMCyAKKAIMIgcgBygCAEH\u002F\u002F\u002F+\u002FAXFBgICAgARyNgIAIAhCADcDAAwBCyALQYCAgCBxDQAgBkGAEHEEQCACIAgoAgBHDQkLIAZBgCBxRQ0AIAwgCCgCBEcNCAsgBkGAEHEEQCAIKAIAIgcEQCAAIAetQoCAgIBwhBAMCyACRSAEQiCIp0F1SXJFBEAgDSANKAIAQQFqNgIACyAIIAI2AgALIAZBgCBxRQ0GIAgoAgQiAgRAIAAgAq1CgICAgHCEEAwLIAxFIAVCIIinQXVJckUEQCAOIA4oAgBBAWo2AgALIAggDDYCBAwGCyAPQSBGDQQgD0EQRgRAQX8hByAAIAkgCkEMahDTAQ0JIAgoAgAiAgRAIAAgAq1CgICAgHCEEAwLIAgoAgQiAgRAIAAgAq1CgICAgHCEEAwLIAooAgwiAiACKAIAQf\u002F\u002F\u002F78DcTYCACAIQoCAgIAwNwMAIAooAgwoAgAhCwwFCyAMRSALQYCAgOAAcXINBEEBIQcgACADIAgpAwAQTUUNBgwICyAKQQA2AgwgCS0ABUEIcUUNAiAJLwEGIgdBAkcNASACQQBODQIgDSAJKAIoTw0CIBJFBEAgACAJEI4DRQ0BDAcLC0EBIQcgDEUNBiAJKAIkIA1BA3RqIQIgA0IgiKdBdU8EQCADpyIGIAYoAgBBAWo2AgALIAAgAiADEB0MBgsgB0EVa0H\u002F\u002FwNxQQpLDQACQAJAIAJBAE4EQCAAIAIQ3wUiAUKAgICAcIMiE0KAgICAMFENA0F\u002FIQcgE0KAgICA4ABRDQggACABENkFIgJBAEgEQCAAIAEQDAwJCyACRQRAIAAgARAMIAAgBkGaDRB8IQcMCQtBACEHAkBBByABQiCIpyICIAJBB2tBbkkbIgJBdkcEQCACQQdHBEAgAg0CIAFCgICAgAiDQh+IpyEHDAILIAFCgICAgMCBgPz\u002FAHxCP4inIQcMAQsgAaciAigCCEUNACACKAIMQYCAgIB4RyEHCyAAIAEQDCAHRQ0BIAAgBkG7DRB8IQcMCAsgDSAJKAIoSQ0BCyAAIAZB2Q0QfCEHDAYLIA5FIBFBB0ZxRQRAIAAgBkHBJhB8IQcMBgtBASEHIAxFDQUgA0IgiKdBdU8EQCADpyICIAIoAgBBAWo2AgALIAAgASANrSADIAYQzwEhBwwFCyAAIAkgAiADIAQgBSAGEN0FIQcMBAsgC0GAgICAfHFBgICAgHhGBEACQCAMRQ0AIAgoAgAoAhAhAiAJLwEGQQtGBEAgACADIAIpAwAQTUUNBAwBCyADQiCIp0F1TwRAIAOnIgcgBygCAEEBajYCAAsgACACIAMQHQsgBkGCBHFBgARHDQEgCS8BBkELRgRAIAAgBkGc0QAQfCEHDAULQX8hByAAIAkgCkEMahDTAQ0EIAgoAgAiBygCECkDACIBQiCIp0F1TwRAIAGnIgIgAigCAEEBajYCACAIKAIAIQcLIAAoAhAgBxDlASAIIAE3AwAgCigCDCICIAIoAgBB\u002F\u002F\u002F\u002FvwNxNgIADAELIAtBgICAgAJxBEBBASECIAwEQCADQiCIp0F1TwRAIAOnIgIgAigCAEEBajYCAAsgACAJIAMgBhDeBSECCyAGQYIEcUGABEYEQCAKIAkoAhAiBkEwajYCDEF\u002FIQcgACAJIApBDGogBigCMEEadkE9cRCNAw0FCyACIQcMBAsgDARAIAAgCCkDABAMIANCIIinQXVPBEAgA6ciAiACKAIAQQFqNgIACyAIIAM3AwALIAZBgARxRQ0AQX8hByAAIAkgCkEMaiAKKAIMKAIAQRp2QT1xIAZBAnFyEI0DDQMLQX9BASAAIAkgCkEMaiAQQQVxIgBBf3MgCigCDCgCAEEadnEgACAGcXIQjQMbIQcMAgsgACAGQe\u002FYABB8IQcMAQtBfyEHCyAKQRBqJAAgBwtpAQN\u002FIwBBEGsiAyQAAkACQCABQoCAgIBwVA0AIAGnIgQvAQYhBSACBEAgBUEgRw0BDAILIAVBFWtB\u002F\u002F8DcUELSQ0BCyADQbgRQa4OIAIbNgIAIABB8iogAxASQQAhBAsgA0EQaiQAIAQLRgIBfwF+IAJC\u002F\u002F\u002F\u002F\u002FwdYBEAgACABIAIQTg8LIAAgAhCLAyIDRQRAQoCAgIDgAA8LIAAgASADIAFBABARIQQgACADEBAgBAv8AQICfwF8IwBBEGsiBCQAAkAgAkIgiKciA0ECTQRAIAEgAqe3OQMAQQAhAwwBCyADQQdrQW1NBEAgASACQoCAgIDAgYD8\u002FwB8NwMAQQAhAwwBCwJ\u002FIAAgAhCWASICQoCAgIBwg0KAgICA4ABRBEBEAAAAAAAA+H8hBUF\u002FDAELAnwCQAJAQQcgAkIgiKciAyADQQdrQW5JGyIDQXZHBEAgA0EHRg0CIAMNASACp7cMAwsgAqdBBGogBEEIahCxBCAAIAIQDCAEKwMIIQVBAAwDCxABAAsgAkKAgICAwIGA\u002FP8AfL8LIQVBAAshAyABIAU5AwALIARBEGokACADC90BAQN\u002FAkAgAUKAgICAcFoEQCABpyEDA0ACQCADLQAFQQRxRQ0AIAAoAhAoAkQgAy8BBkEYbGooAhQiBEUNACAEKAIQIgRFDQAgAyADKAIAQQFqNgIAIAAgA61CgICAgHCEIgEgAiAEERMAIQUgACABEAwgBQ8LIAMgAygCAEEBajYCACAAQQAgAyACEEMhBCAAIAOtQoCAgIBwhBAMIAQNAgJAIAMvAQZBFWtB\u002F\u002F8DcUEKSw0AIAAgAhCTAyIERQ0AIARBH3UPCyADKAIQKAIsIgMNAAsLQQAhBAsgBAvNCQIEfwV+IwBB8ABrIgYkACAEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDIQkCQAJAIAFQIgUgAkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8AgyIKQoCAgICAgMD\u002F\u002FwB9QoCAgICAgMCAgH9UIApQG0UEQCADQgBSIAlCgICAgICAwP\u002F\u002FAH0iC0KAgICAgIDAgIB\u002FViALQoCAgICAgMCAgH9RGw0BCyAFIApCgICAgICAwP\u002F\u002FAFQgCkKAgICAgIDA\u002F\u002F8AURtFBEAgAkKAgICAgIAghCEEIAEhAwwCCyADUCAJQoCAgICAgMD\u002F\u002FwBUIAlCgICAgICAwP\u002F\u002FAFEbRQRAIARCgICAgICAIIQhBAwCCyABIApCgICAgICAwP\u002F\u002FAIWEUARAQoCAgICAgOD\u002F\u002FwAgAiABIAOFIAIgBIVCgICAgICAgICAf4WEUCIFGyEEQgAgASAFGyEDDAILIAMgCUKAgICAgIDA\u002F\u002F8AhYRQDQEgASAKhFAEQCADIAmEQgBSDQIgASADgyEDIAIgBIMhBAwCCyADIAmEUEUNACABIQMgAiEEDAELIAMgASABIANUIAkgClYgCSAKURsiCBshCiAEIAIgCBsiDEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F8\u002FgyEJIAIgBCAIGyILQjCIp0H\u002F\u002FwFxIQcgDEIwiKdB\u002F\u002F8BcSIFRQRAIAZB4ABqIAogCSAKIAkgCVAiBRt5IAVBBnStfKciBUEPaxBiIAYpA2ghCSAGKQNgIQpBECAFayEFCyABIAMgCBshAyALQv\u002F\u002F\u002F\u002F\u002F\u002F\u002Fz+DIQEgBwR+IAEFIAZB0ABqIAMgASADIAEgAVAiBxt5IAdBBnStfKciB0EPaxBiQRAgB2shByAGKQNQIQMgBikDWAtCA4YgA0I9iIRCgICAgICAgASEIQEgCUIDhiAKQj2IhCENIAIgBIUhBAJ+IANCA4YiAiAFIAdGDQAaIAUgB2siB0H\u002FAEsEQEIAIQFCAQwBCyAGQUBrIAIgAUGAASAHaxBiIAZBMGogAiABIAcQjQIgBikDOCEBIAYpAzAgBikDQCAGKQNIhEIAUq2ECyEJIA1CgICAgICAgASEIQsgCkIDhiEKAkAgBEIAUwRAQgAhA0IAIQQgCSAKhSABIAuFhFANAiAKIAl9IQIgCyABfSAJIApWrX0iBEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FA1YNASAGQSBqIAIgBCACIAQgBFAiBxt5IAdBBnStfKdBDGsiBxBiIAUgB2shBSAGKQMoIQQgBikDICECDAELIAkgCnwiAiAJVK0gASALfHwiBEKAgICAgICACINQDQAgCUIBgyAEQj+GIAJCAYiEhCECIAVBAWohBSAEQgGIIQQLIAxCgICAgICAgICAf4MhAyAFQf\u002F\u002FAU4EQCADQoCAgICAgMD\u002F\u002FwCEIQRCACEDDAELQQAhBwJAIAVBAEoEQCAFIQcMAQsgBkEQaiACIAQgBUH\u002FAGoQYiAGIAIgBEEBIAVrEI0CIAYpAwAgBikDECAGKQMYhEIAUq2EIQIgBikDCCEECyAEQj2GIAJCA4iEIQEgBEIDiEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F8\u002FgyAHrUIwhoQgA4QhBAJAAkAgAqdBB3EiBUEERwRAIAQgASABIAVBBEutfCIDVq18IQQMAQsgBCABIAEgAUIBg3wiA1atfCEEDAELIAVFDQELCyAAIAM3AwAgACAENwMIIAZB8ABqJAALLAEBfyAAKAIQIgEtAIgBRQRAIAFBAToAiAEgAEHaC0EAEDogAUEAOgCIAQsLVQEDfyABIAJBBXUiBEsEQCAAIARBAnRqKAIAIQMLIAJBH3EiAgR\u002FIAEgBEEBaiIESwR\u002FIAAgBEECdGooAgAFQQALQQF0IAJBH3N0IAMgAnZyBSADCwtMAQJ\u002FAn8gACgCBCIDIAJqIgQgACgCCEsEf0F\u002FIAAgBBC8AQ0BGiAAKAIEBSADCyAAKAIAaiABIAIQHhogACAAKAIEIAJqNgIEQQALC5AFAQV\u002FIwBBEGsiBCQAIAQgACgCODYCDAJ\u002FIAEhAyAEKAIMIQACQANAIAAiAUEBaiEAAkAgAS0AACICQQlrIgVBF0sNAEEBIAV0IgVBjYCABHENASAFQRJxRQ0AIANFDQEMAgsCQCACQS9HBEAgAkE9Rw0BQaR\u002FQT0gAC0AAEE+RhsMBAsgAC0AACIBQSpHBEBBLyABQS9HDQQaQS8hASADDQMDQAJAAkAgAUEKaw4EBQEBBQALIAFFDQQLIAAtAAEhASAAQQFqIQAMAAsACwNAIAAiAUEBaiEAIAEtAAEiAkENRgRAIAMNBAwBCyACRQ0CIANBACACQQpGGw0DIAJBKkcNACABLQACQS9HDQALIAFBA2ohAAwBCwsgAhCDAwR\u002FAkACQAJAAkACQCACQeUAaw4FAQIEBAADCyAALQAAIgNB7gBGBH9Bt38gAS0AAhDJAUUNBxogAC0AAAUgAwtB7QBHDQMgAS0AAkHwAEcNAyABLQADQe8ARw0DIAEtAARB8gBHDQMgAS0ABUH0AEcNAyABLQAGEMkBDQMgBCABQQZqNgIMQU0MBgsgAC0AAEH4AEcNAiABLQACQfAARw0CIAEtAANB7wBHDQIgAS0ABEHyAEcNAiABLQAFQfQARw0CIAEtAAYQyQENAiAEIAFBBmo2AgxBSwwFCyAALQAAQfUARw0BIAEtAAJB7gBHDQEgAS0AA0HjAEcNASABLQAEQfQARw0BIAEtAAVB6QBHDQEgAS0ABkHvAEcNASABLQAHQe4ARw0BIAEtAAgQyQENAUFFDAQLIAJB7wBHDQAgAC0AAEHmAEcNACABLQACEMkBDQBBWQwDC0GDfwUgAgsMAQtBCgshBiAEQRBqJAAgBgusAgEHfyMAQRBrIgUkAAJAIAAoAkAiAUUEQAwBCwJAIAECfyABKALIASIEIAEoAsQBIgJIBEAgASgCzAEhAyAEDAELIARBAWoiAyACQQNsQQJtIgIgAiADSBsiBkEDdCECIAAoAgAhAwJAIAEoAswBIgcgAUHQAWpGBEAgA0EAIAIgBUEMahCnASIDRQ0DIAMgASgCzAEgASgCyAFBA3QQHhoMAQsgAyAHIAIgBUEMahCnASIDRQ0CCyAFKAIMIQIgASADNgLMASABIAJBA3YgBmo2AsQBIAEoAsgBC0EBajYCyAEgAyAEQQN0aiICIAEoArwBNgIAIAIgASgCwAE2AgQgAEG0ARANIAAgBEH\u002F\u002FwNxEBQgASAENgK8AQwBC0F\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\u002F\u002F\u002F\u002F\u002FB1gEQCAAIAEgAiADQYCAARDPAQ8LIAAgAhCLAyIERQRAIAAgAxAMQX8PCyAAIAEgBCADEDkhBiAAIAQQECAGC10BAn8jAEEQayIDJAACQCABQYCAAXFFBEAgAUGAgAJxRQ0BIAAoAhAoAowBIgFFDQEgAS0AKEEBcUUNAQsgA0EANgIMIABBBCACQQAQjgRBfyEECyADQRBqJAAgBAvfCgIUfwF+IwBBMGsiByQAIAFBADYCACACQQA2AgAgB0EANgIsIAdBADYCKCAEQTBxIQ8gBEEQcSERIAMoAhAiCkEwaiEFAkACQAJAAkADQCAKKAIgIAhKBEACQCAFKAIEIg5FDQBBACARIAUoAgBBgICAgAFxGyAEIAAgDhCRAyIJdkEBcUVyDQACQCAPRSAFKAIAQYCAgIB8cUGAgICAeEdyDQAgAygCFCAIQQN0aigCACgCEDUCBEIghkKAgICAwABSDQAgACAFKAIEENEBQX8hCAwECyAAIAdBJGogDhClAQRAIAxBAWohDAwBCyAJRQRAIAtBAWohCwwBCyANQQFqIQ0LIAVBCGohBSAIQQFqIQgMAQsLQQAhBQJAIAMtAAUiBkEEcUUNACAGQQhxBEAgBEEBcUUNASADKAIoIAxqIQwMAQsgAy8BBiIGQQVGBEAgBEEBcUUNAUEAIQggAykDICIZQoCAgIBwg0KAgICAkH9RBH8gGacoAgRB\u002F\u002F\u002F\u002F\u002FwdxBUEACyAMaiEMDAELIAAoAhAoAkQgBkEYbGooAhQiBkUNACAGKAIEIgZFDQBBfyEIIAAgB0EsaiAHQShqIAOtQoCAgIBwhCAGER8ADQFBACEJA0AgCSAHKAIoTw0BAkAgBCAAIAlBA3QiCiAHKAIsaigCBCIGEJEDdkEBcQRAAkAgD0UEQEEAIQ4MAQsgACAHIAMgBhBDIgZBAEgNAiAGBH8gBygCACEXIAAgBxBGIBdBAnZBAXEFQQALIQ4gBygCLCAKaiAONgIACyAFIBFFIA5BAEdyaiEFCyAJQQFqIQkMAQsLIAAgBygCLCAHKAIoEFsMAQsgAEEBIAsgDGoiDyANaiAFaiISIBJBAUwbQQN0ECQiEEUEQCAAIAcoAiwgBygCKBBbQX8hCAwBCyADKAIQIhVBMGohBUEAIQogDCEGIA8hC0EBIRRBACEIA0AgCCAVKAIgTkUEQAJAIAUoAgQiE0UNAEEAIBEgBSgCAEGAgICAAXEiDRsgBCAAIBMQkQMiCXZBAXFFcg0AIA1BHHYhFgJ\u002FIAAgB0EkaiATEKUBBEAgCkEBaiEOQQAhFCALIQ0gBgwBCyAJRQRAIAohDiALIQ0gBiEKIAZBAWoMAQsgC0EBaiENIAohDiALIQogBgshGCAAIBMQFiELIBAgCkEDdGoiBiAWNgIAIAYgCzYCBCAOIQogGCEGIA0hCwsgBUEIaiEFIAhBAWohCAwBCwsCQCADLQAFIglBBHFFDQACfyAJQQhxBEAgBEEBcUUNAiADKAIoDAELIAMvAQZBBUcEQEEAIQUDQCAHKAIsIQkgBSAHKAIoT0UEQAJAQQAgESAJIAVBA3RqIgMoAgAiDRsgBCAAIAMoAgQiCRCRA3ZBAXFFckUEQCAQIAtBA3RqIgMgDTYCACADIAk2AgQgC0EBaiELDAELIAAgCRAQCyAFQQFqIQUMAQsLIAAoAhAiA0EQaiAJIAMoAgQRAAAMAgsgBEEBcUUNAUEAIAMpAyAiGUKAgICAcINCgICAgJB\u002FUg0AGiAZpygCBEH\u002F\u002F\u002F\u002F\u002FB3ELIQhBACEFIAhBACAIQQBKGyEEA0AgBCAFRg0BIBAgCkEDdGoiA0EBNgIAIAMgBUGAgICAeHI2AgQgBUEBaiEFIApBAWohCgwACwALIAogDEcNASAGIA9HDQIgCyASRw0DIAxFIBRyRQRAIBAgDEEIQTcgABDXAQsgASAQNgIAIAIgEjYCAEEAIQgLIAdBMGokACAIDwtBqBdBqOwAQfU7QfvEABAAAAtB+xZBqOwAQfY7QfvEABAAAAtBxBdBqOwAQfc7QfvEABAAAAtfAgJ\u002FAX4gAqcoAiAiBC0AEQRAIAAQuAJBAA8LIAAgBCkDCCICIAMgAkEAEBEiBkKAgICAcIMiAkKAgICA4ABSBH8gAUKAgICAMCAGIAJCgICAgCBRGzcDACAEBUEACwsbACAAQQAQUBogACABNgIEIABB\u002Fv\u002F\u002F\u002Fwc2AggLGwAgAEEAEFAaIAAgATYCBCAAQYCAgIB4NgIICw4AIAAoAhAgASACEOUFCxYAIAAgASACIAMgBCAFIAApAzAQ\u002FAELDQAgACABIAEQPRCLAgt2AQJ\u002FIAAoAhQEQCAAKAIAIAEQDEF\u002FDwsCQCABQoCAgIBwg0KAgICAkH9RDQAgACgCACABEDQiAUKAgICAcINCgICAgOAAUg0AIAAQ9wJBfw8LIAAgAaciAkEAIAIoAgRB\u002F\u002F\u002F\u002F\u002FwdxEEshAyAAKAIAIAEQDCADC+QBAgN\u002FAn4CQCAAIAApAzBBDxBHIglCgICAgHCDQoCAgIDgAFENACAAIARBA3RBCGoQJCIGRQRAIAAgCRAMDAELIAYgAzsBBiAGIAQ6AAUgBiACOgAEIAYgATYCAEEAIQMgBEEAIARBAEobIQEgBkEIaiEEA0AgASADRwRAIAUgA0EDdCIHaikDACIKQiCIp0F1TwRAIAqnIgggCCgCAEEBajYCAAsgBCAHaiAKNwMAIANBAWohAwwBCwsgCUKAgICAcFoEQCAJpyAGNgIgCyAAIAlBLyACEJgDIAkPC0KAgICA4AALFgAgACAAKAIoIAFBA3RqKQMAIAEQRwuEAgEBfwJAIAAoAggiAiAAKAIMTg0AIAAoAhAEQCAAIAJBAWo2AgggACgCBCACQQF0aiABOwEQQQAPCyABQf8BSw0AIAAgAkEBajYCCCAAKAIEIAJqIAE6ABBBAA8LAn8gACgCCCICIAAoAgxOBEBBfyAAIAJBAWogARDEAg0BGgsCQCAAKAIQBEAgACAAKAIIIgJBAWo2AgggACgCBCACQQF0aiABOwEQDAELIAFB\u002FwFNBEAgACAAKAIIIgJBAWo2AgggAiAAKAIEaiABOgAQDAELQX8gACAAKAIMEOADDQEaIAAgACgCCCICQQFqNgIIIAAoAgQgAkEBdGogATsBEAtBAAsLEgAgACABIAIgAyAEQZIDELEDCzUBAX8gACgCACIBBEAgACgCFCABQQAgACgCEBEBABoLIABCADcCACAAQgA3AhAgAEIANwIICzUBAn9BfyEDIAAgAUEAEGsiAgR\u002FIAIoAiAoAgwoAiAtAAQEQCAAEF9Bfw8LIAIoAigFQX8LCwkAIABBARDsBAsNACAAQRpBJEEZEPEFC4gBAQJ\u002FQX8hAiAAKAIUBH9BfwUgAUKAgICAcINCgICAgJB\u002FUgRAIAAoAgAgARAlIgFCgICAgHCDQoCAgIDgAFEEQCAAEPcCQX8PCyAAIAGnIgJBACACKAIEQf\u002F\u002F\u002F\u002F8HcRBLIQMgACgCACABEAwgAw8LIAAgAaciAEEAIAAoAgRB\u002F\u002F\u002F\u002F\u002FwdxEEsLC54CAgN\u002FAX4gAiABKQIEIgenQf\u002F\u002F\u002F\u002F8HcSADR3JFBEAgASABKAIAQQFqNgIAIAGtQoCAgICQf4QPCyABQRBqIQUgB0KAgICACINQIAMgAmsiBEEATHJFBEAgAyACIAIgA0gbIQZBACEDIAIhAQNAIAEgBkZFBEAgBSABQQF0ai8BACADciEDIAFBAWohAQwBCwsgA0H\u002F\u002FwNxQYACTwRAIAAgBSACQQF0aiAEEJIDDwtBACEBIAAgBEEAEOkBIgBFBEBCgICAgOAADwsgAEEQaiEDA0AgASAERkUEQCABIANqIAUgASACakEBdGotAAA6AAAgAUEBaiEBDAELCyADIARqQQA6AAAgAK1CgICAgJB\u002FhA8LIAAgAiAFaiAEEJwDC0QBAn8CQCAAQoCAgIBwVA0AIACnIgMvAQZBAkcNACADLQAFQQhxRQ0AIAIgAygCKDYCACABIAMoAiQ2AgBBASEECyAEC9UBAgJ\u002FA34CfyACRQRAQoCAgIAwIQVBAAwBCyAAKAIQIgMpA4ABIQUgA0KAgICAIDcDgAFBfwshAwJAIAAgAUEGIAFBABARIgdCgICAgHCDIgZCgICAgCBRIAZCgICAgDBRckUEQEF\u002FIQQgBkKAgICA4ABRDQEgACAHIAFBAEEAEDYhAQJ\u002FIAMgAg0AGkF\u002FIAFCgICAgHCDQoCAgIDgAFENABogAyABQv\u002F\u002F\u002F\u002F9vVg0AGiAAECJBfwshBCAAIAEQDAwBCyADIQQLIAIEQCAAIAUQmAELIAQLxQECAX4CfyMAQRBrIgUkAEKAgICA4AAhBAJAAkAgACABIAJBAEEAIAVBDGoQkQUiAUKAgICAcINCgICAgOAAUQ0AIAUoAgwiBkECRwRAIAMgBjYCACABIQQMAgsgACABQeoAIAFBABARIgJCgICAgHCDQoCAgIDgAFENACADIAAgAhAnIgM2AgBCgICAgDAhBCADRQRAIAAgAUHBACABQQAQESEECyAAIAEQDAwBCyAAIAEQDCADQQA2AgALIAVBEGokACAEC4gDAgJ+An8jAEEQayIGJAACQCABQoCAgIBwVARAIAEhAwwBCyACQW9xIQUCQAJAAkAgAkEQcQ0AIAAgAUHLASABQQAQESIEQoCAgIBwgyIDQoCAgIAgUSADQoCAgIAwUXINACADQoCAgIDgAFENASAGIABBxwBBFiAFQQFGG0HJACAFGxApNwMIIAAgBCABQQEgBkEIahA2IQMgACAGKQMIEAwgA0KAgICAcINCgICAgOAAUQ0BIAAgARAMIANCgICAgHBUDQMgACADEAwgAEGLzwBBABASDAILIAVBAEchBUEAIQIDQCACQQJHBEAgACABQThBOiACIAVGGyABQQAQESIDQoCAgIBwg0KAgICA4ABRDQICQCAAIAMQNUUNACAAIAMgAUEAQQAQNiIDQoCAgIBwg0KAgICA4ABRDQMgA0L\u002F\u002F\u002F\u002F\u002Fb1YNACAAIAEQDAwFCyAAIAMQDCACQQFqIQIMAQsLIABBi88AQQAQEgsgACABEAwLQoCAgIDgACEDCyAGQRBqJAAgAwtBACAAIAEgAkEATgR+IAKtBUKAgICAwH4gAri9IgFCgICAgMCBgPz\u002FAH0gAUKAgICAgICA+P8AVhsLIAMgBBCUAQs3AQJ\u002FIAAgAhAwIQUgACACEAwgBUUEQCAAIAMQDEF\u002FDwsgACABIAUgAyAEEBUhBiAAIAUQECAGC\u002FEBAgJ\u002FAXwCfwNAAkACQAJ\u002FAkACQEEHIAJCIIinIgMgA0EHa0FuSRsOCAAAAAAEBAQBBAsgAqcMAQsgAkKAgICAwIGA\u002FP8AfCICQjSIp0H\u002FD3EiAEGdCEsNASACvyIFmUQAAAAAAADgQWMEQCAFqgwBC0GAgICAeAshA0EADAMLQQAhA0EAIABB0ghLDQIaQQAgAkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FB4NCgICAgICAgAiEIABBkwhrrYZCIIinIgNrIAMgAkIAUxshA0EADAILIAAgAhCWASICQoCAgIBwg0KAgICA4ABSDQALQQAhA0F\u002FCyEEIAEgAzYCACAECwsAIAAgAUEAENoFC80BAQN\u002FIwBBEGsiBCQAAkAgAUKAgICAcFQEQAwBCyABpyICLwEGQSxGBEACQCAAIARBCGogAUHiABB+IgNFDQAgBCkDCCIBQoCAgIBwg0KAgICAMFEEQCAAIAMpAwAQlwEhAgwDCyAAIAEgAykDCEEBIAMQNiIBQoCAgIBwg0KAgICA4ABRDQAgACABECchAiAAIAMpAwAQlwEiA0EASA0AIAIgA0YNAiAAQZ7YAEEAEBILQX8hAgwBCyACLQAFQQFxIQILIARBEGokACACCxkAIAAgACgCECIAKQOAARAMIAAgATcDgAELHgAgAEKAgICAcINCgICAgJB\u002FUQRAIACnIAEQjAQLCyQBAX8jAEEQayIDJAAgAyACNgIMIAAgASACEJMEIANBEGokAAsXACAAKAIMIAAoAghBACAAKAIQEQEAGgu0BQEHfyMAQZACayIFJAAgBUEAOgAQIAUgACgCBDYCACAFIAAoAhQ2AgQgBSAAKAIYNgIMIAUgACgCMDYCCCAAQRBqIQlBASEEAkACQANAQX4hCAJ\u002FAkACQAJAAkACQAJAAkACQAJAAkAgCSgCACIDQf4Aag4FAQkJCQcACwJAAkACQAJAAkAgA0Eoaw4CAQIACwJAIANBO2sOAwcNCQALAkAgA0HbAGsOAwENAwALAkAgA0H7AGsOAwENBAALIANBpX9GDQcgA0EvRg0JIANBqn9HDQwMEAsgBEH\u002FAU0NBAwOCyAEQQFrIgQgBUEQamotAABBKEcNDQwJCyAEQQFrIgQgBUEQamotAABB2wBHDQwMCAtB\u002FQAgBEEBayIEIAVBEGpqLQAAIghB+wBGDQkaQap\u002FIQMgCEHgAEcNDCAAIAkQgQIgAEEANgIwIAAgACgCFDYCBCAAIAAoAjgQzQMNDAsgACgCKEHgAEYNBkHgACEDIARB\u002FwFLDQoLIAVBEGogBGogAzoAACAEQQFqIQQMBQsgBiAEQQJGciEGQTsMBgsgBkECciAGIARBAkYbIQZBpX8MBQsgBkEEciEGQT0MBAtBfyEICyAHQYABaiIDQRVNQQBBASADdEGbgMABcRsNACAHQSlGIAdB3QBGciAHQdUAaiIDQQdNQQBBASADdEGHAXEbciAHQf0ARnINACAAIAAoAjggCGo2AjggABDnBA0ECyAJKAIAIQMLIAMgA0GDf0cNABpBWSAAQcQAEEUNABpBWUGDfyAAQS0QRRsLIQcgABAPDQEgBEEBSw0AC0FZIAAoAhAgAEHEABBFGyEDIAJFDQFBCiADIAAoAgQgACgCFEcbIQMMAQtBqn8hAwsgAQRAIAEgBjYCAAsgACAFEO0CIQAgBUGQAmokAEF\u002FIAMgABsLgQYBBX8gACgCACEFAkACQAJAAkACQAJAAkACQAJAAkAgA0EBaw4GAQEBAQIDAAsgBSABIAJBABDlAg8LIAEgAiABKALAAUEBEMkDIgRBAEgNAgJAIARB\u002F\u002F\u002F\u002F\u002FwNNBEAgASgCdCAEQQR0aiIEKAIEIgYgASgCvAEiB0YEQCADQQNHDQIgAS0AbkEBcQ0CIAQoAgxB8AFxQRBHDQIMBgsgBCgCDEHwAXFBMEcNBCAGQQJqIAdGDQEMBAsgASgCvAEgASgC8AFHDQMLIABBizJBABATDAQLIAUgASACQQMQ5QIPCwJAIAEgAiABKALAAUEAEMkDQQBODQAgASgCKARAAkAgASACEKACIgNFDQAgAy0ABEECcUUNACADKAIIIAEoArwBRw0AIAEoAiRBAUYNAgtBgICAgARBfyAFIAEgAhDmAhsPCyABIAIQ9wEiBEEATg0GIAUgASACEEwiBEEASA0GAkAgAkHOAEcNACABKAJIRQ0AIAEgBDYCmAELIAEoAnQgBEEEdGogASgCvAE2AggMBgsgAEGLMkEAEBMMAgsgASgCvAEhBiADQQJLDQAgBiABKALwAUcNACABIAIQ6QRBAEgNACAAQZrVAEEAEBMMAQtBACEEIAEoAnwiB0EAIAdBAEobIQgCQANAIAQgCEYNAQJAAkAgASgCdCAEQQR0aiIHKAIAIAJHDQAgBygCBA0AIAEgBygCCCAGEOgEDQELIARBAWohBAwBCwsgAEHv2QBBABATDAELAkAgASgCKEUNACABIAIQoAIiBEUNACABIAQoAgggBhDoBEUNACAAQd4yQQAQEwwBCyABKAIgRQ0CIAEoAiRBAUsNAiAGIAEoAvABRw0CIAUgASACEOYCIgANAQtBfw8LIAAgAC0ABEH5AXFBBkECIANBAkYbcjoABEGAgICABA8LIAUgASACQQEgA0EERkEBdCADQQNGGxDlAiIEQQBIDQAgASgCdCAEQQR0aiIAIAAoAgxBfHEgA0ECRnJBAnI2AgwgBA8LIAQLsgEBBX8CQAJAIAAoAkAiAigCmAIiA0EASA0AIAIoAoACIgQgA2oiBS0AACIGQcUBRwRAIAZBzQBHDQEgAkF\u002FNgKYAiACIAM2AoQCIABBzQAQDSAAIAEQFw8LIAQgAyAFKAABa0EBaiIDaiIELQAAQdYARw0BIAAoAgAgBCgAARAQIAIoAoACIANqIAAoAgAgARAWNgABIAJBfzYCmAILDwtBviJBqOwAQYewAUGc1AAQAAALGQAgACABIAJBASADIAQgBSAGIAcgCBD7AQukAQIBfwF+IAApAgQiBKdB\u002F\u002F\u002F\u002F\u002FwdxIQMCQAJAIARCgICAgAiDUEUEQCACIAMgAiADShshAyAAQRBqIQADQCACIANGDQIgACACQQF0ai8BACABRg0DIAJBAWohAgwACwALIAFB\u002FwFLDQAgAiADIAIgA0obIQMgAEEQaiEAA0AgAiADRg0BIAAgAmotAAAgAUYNAiACQQFqIQIMAAsAC0F\u002FIQILIAILIwEBfyAAIAEgAkIAQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8PQgAQZiEDIAAgAhAMIAMLigkCCn8BfiMAQZABayICJAAgACAAQRBqIgYQgQIgACAAKAI4IgE2AjQgAiABNgIEIAAgACgCFDYCBAJ\u002FAkADQAJAIAAgATYCGCAAIAAoAggiBzYCFCABLAAAIgVB\u002FwFxIgQhAwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBA57AAkJCQkJCQkJBgQFBQMJCQkJCQkJCQkJCQkJCQkJCQkGCQIJDgkJAQkJCQsJCgkHCAwMDAwMDAwMDAkJCQkJCQkODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODgkJCQkOCQ4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4OCQsgASAAKAI8SQ0MIAZBqn82AgAMDgtBJyEDIAAoAkxFDQsLIAAgA0EBIAFBAWogBiACQQRqEP8CRQ0MDBALIAFBAWogASABLQABQQpGGyEBCyACIAFBAWoiATYCBCAAIAdBAWo2AggMDQsgACgCTEUNBwsgAiABQQFqIgE2AgQMCwsgACgCTEUNBSABLQABIgNBL0YNCCADQSpHDQUgAUECaiEBA0AgAiABNgIEA0ACQAJAAkACQCABLQAAIgNBCmsOBAECAgMACyADQSpHBEAgAw0CIAEgACgCPEkNA0HoGiEBDA8LIAEtAAFBL0cNAiACIAFBAmoiATYCBAwPCyAAIAAoAghBAWo2AggMAQsgA8BBAE4NACABQQYgAkEEahBRIQkgAigCBCEBIAlBf0cNAQsLIAFBAWohAQwACwALIAEtAAFBOmtBdkkNAwwECyAFQQBODQNBzDEhAQwHCyABLQABQTprQXZJDQIMAQsgACgCTEUNASABLQABQTprQXZJDQELIAAoAgAgASACQQRqQQBBCiAAKAJMIgEbIAFBAEdBAnQQgAIiC0KAgICAcINCgICAgOAAUQ0GIAAgCzcDICAAQYB\u002FNgIQDAILIAYgBDYCACACIAFBAWo2AgQMAQsgAiABQQFqIgQ2AgQgAkGAATYCCCACIAJBEGoiAzYCDEEAIQECfwNAIAIoAghBBmshCAJAA0AgASADaiAFOgAAIAFBAWohASAELQAAIgfAIgVBAEgNASAHQQN2QRxxQbD\u002FAWooAgAgB3ZBAXFFDQEgBEEBaiEEIAEgCEkNAAtBACAAKAIAIAJBDGogAkEIaiACQRBqEK8FDQIaIAIoAgwhAwwBCwsgACgCACADIAEQnQMLIQEgAigCDCIDIAJBEGpHBEAgACgCACgCECIFQRBqIAMgBSgCBBEAAAsgAiAENgIEIAFFDQQgAEIANwIkIAAgATYCICAAQYN\u002FNgIQCyAAIAIoAgQ2AjhBAAwECyABQQJqIQEDQCACIAE2AgQDQAJAAkAgAS0AACIDBEAgA0EKaw4EBgEBBgELIAEgACgCPE8NBQwBCyADwEEATg0AIAFBBiACQQRqEFEhAyACKAIEIQEgA0F+cUGowABGDQQgA0F\u002FRw0BCwsgAUEBaiEBDAALAAsLIAAgAUEAEBMLIAZBqH82AgBBfwshCiACQZABaiQAIAoLEQAgACABIAEgAiADQQIQ\u002FgMLWQECfyMAQRBrIgMkAEF\u002FIQQgACADQQhqIAIQ4wFFBEBBACEEIAEgAykDCCICQoCAgICAgIAQWgR+IABBig9BABBEQX8hBEIABSACCzcDAAsgA0EQaiQAIAQLtgEBAX8jAEEQayIDJAACQAJAIAJBAEgEQCABIAJB\u002F\u002F\u002F\u002F\u002FwdxNgIAQQEhAgwBCyAAKAIQIgAoAiwgAk0NAQJ\u002FAkAgACgCOCACQQJ0aigCACIAKQIEQoCAgICAgICAQINCgICAgICAgIDAAFINACADQQxqIAAQ7QVFDQBBASADKAIMIgBBf0cNARoLQQAhAEEACyECIAEgADYCAAsgA0EQaiQAIAIPC0GmzgBBqOwAQcYYQZ4PEAAACzwAIAAgASACQQBOBH4gAq0FQoCAgIDAfiACuL0iAUKAgICAwIGA\u002FP8AfSABQoCAgICAgID4\u002FwBWGwsQTgtTAQF\u002FIAAoAhAiBEEQaiABIAIgBCgCCBEBACIBIAJFckUEQCAAEHAgAQ8LIAMEQCADIAEgACgCECgCDBEFACIAIAJrIgJBACAAIAJPGzYCAAsgAQsNACAAQQAgAUEAEJoDC\u002FkBAgN+An8jAEEQayIFJAACfiABvSIEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDIgJCgICAgICAgAh9Qv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002Fv\u002FwBYBEAgAkI8hiEDIAJCBIhCgICAgICAgIA8fAwBCyACQoCAgICAgID4\u002FwBaBEAgBEI8hiEDIARCBIhCgICAgICAwP\u002F\u002FAIQMAQsgAlAEQEIADAELIAUgAkIAIAKnZ0EgaiACQiCIp2cgAkKAgICAEFQbIgZBMWoQYiAFKQMAIQMgBSkDCEKAgICAgIDAAIVBjPgAIAZrrUIwhoQLIQIgACADNwMAIAAgAiAEQoCAgICAgICAgH+DhDcDCCAFQRBqJAALKgEBfyMAQRBrIgMkACADIAI2AgwgACABIAJBpANBABCUBBogA0EQaiQAC0cAIAAgAUkEQCAAIAEgAhAeGg8LIAIEQCAAIAJqIQAgASACaiEBA0AgAEEBayIAIAFBAWsiAS0AADoAACACQQFrIgINAAsLCyABAX4gACAAIAIgASADQQRBABCCASIFIAEgBBC\u002FASAFC4sMAQZ\u002FIwBBIGsiAyQAAkACQAJAAkACQAJ\u002FIAAoAhAiAkGDf0cEQEEAIAJBV0cNARogACgCQCIELQBsQQFxRQRAIABBl+AAQQAQEwwDCyAEKAJkRQRAIABB6jtBABATDAMLQX8hBSAAEA8NBQJAAkACQAJAIAAoAhAiBEEpaw4EAgEBAgALIARB3QBGIARBOmtBAklyIARB\u002FQBGcg0BCyAAKAIwDQBBACECIARBKkYEQCAAEA8NCEEBIQILIAAgARCtAUUNAQwHCyAAQQYQDUEAIQILIAAoAkAtAGwhASACBEAgABAtIQUgABAtIQIgAEGAAUH\u002FACABQQNGGxANIABBDhANIABBBhANIABBBhANIAAgBRAaIABBhgEQDSABQQNHIgdFBEAgAEGMARANCyAAQYMBEA0gAEHCABANIABB6gAQFyAAQesAQX8QGCEGIAAgAhAaQYoBIQQgACAHBH9BigEFIABBwQAQDSAAQcEAEBdBiwELEA0gAEEREA0gAEHrAEF\u002FEBghBCAAQQ4QDSAAQewAIAUQGBogACAEEBogAEEBEA0gAEECEDggAEGsARANIABB6wBBfxAYIQQgAUEDRyIFRQRAIABBjAEQDQsgAEGHARANIABBABBYIABB6wBBfxAYIQcgBUUEQCAAQYwBEA0LIABBgwEQDSAAQcIAEA0gAEHqABAXIABB6gAgAhAYGiAAQcEAEA0gAEHBABAXIAAgBxAaIABBDxANIABBDxANIABBDxANIABBARCwAiAAIAQQGiAAQYcBEA0gAEEBEFggAEHrAEF\u002FEBghBCABQQNHIgFFBEAgAEGMARANCyAAQYMBEA0gAEHCABANIABB6gAQFyAAQeoAIAIQGBogAEHsACAGEBgaIAAgBBAaIABBhwEQDSAAQQIQWCAAQesAQX8QGCEEIAFFBEAgAEGMARANCyAAIAQQGiAAQTAQDUEAIQUgAEEAEBcgAEEEEFggACAGEBogAEHBABANIABBwQAQFyAAQQ8QDSAAQQ8QDSAAQQ8QDQwGCyABQQNGBEAgAEGMARANCyAAQYkBEA0gAEHqAEF\u002FEBghASAAQQEQsAIMBAsgACgCIAshBEF\u002FIQUgAEGifyABQQRyEMADDQMgACgCECICQaZ\u002FRgRAIAFBe3EhBiAAEC0hAgNAIAAQDw0FIABBERANIABBsQEQDSAAQeoAIAIQGBogAEEOEA0gAEEIIAYQ9gENBSAAKAIQQaZ\u002FRg0ACyAAIAIQGiAAKAIQIQILIAJBP0YEQCAAEA8NBCAAQeoAQX8QGCECIAAQUw0EIABBOhAoDQQgAEHsAEF\u002FEBghBiAAIAIQGiAAIAFBAXEQrQENBCAAIAYQGiAAKAIQIQILIAJBPUciBiACQfsAaiIFQQtLcUUEQCAAEA8NASAAIANBHGogA0EYaiADQRRqIANBEGpBACAGIAIQrgFBAEgNASAAIAEQrQEEQCAAKAIAIAMoAhQQEAwCCwJAIAJBPUYEQEE8IQEgAygCFCECIAMoAhwiBUE8RwRAIAIhBCAFIQEMAgsgAiAERwRAIAIhBAwCCyAAIAQQngEMAQsgACAFQbDJAWotAAAQDSADKAIUIQQgAygCHCEBC0EAIQUgACABIAMoAhggBCADKAIQQQJBABDBAQwEC0EAIQUgAkHvAGpBAksNAyAAEA8NACAAIANBHGogA0EYaiADQRRqIANBEGogA0EMakEBIAIQrgFBAEgNACAAQREQDSACQZN\u002FRgRAIABBsQEQDQsgAEHrAEHqACACQZJ\u002FRhtBfxAYIQIgAEEOEA0gACABEK0BRQ0BIAAoAgAgAygCFBAQC0F\u002FIQUMAgsCQCADKAIcIgFBPEcNACADKAIUIARHDQAgACAEEJ4BCyADKAIMQQFrIgRBA08NAiAAIARBFWpB\u002FwFxEA0gACABIAMoAhggAygCFCADKAIQQQFBABDBASAAQewAQX8QGCEBIAAgAhAaIAMoAgwhBQNAIAUEQCAAQQ8QDSADIAMoAgxBAWsiBTYCDAwBCwsLIAAgARAaQQAhBQsgA0EgaiQAIAUPCxABAAuSBQEHfwJAAkACQCAAKAJAIgsoApgCIg5BAEgNAEECIQ0CQAJAIAsoAoACIA5qIgwtAAAiCEHHAGsOBAQCAgEACyAIQcEARg0CIAhBvwFHBEAgCEG4AUcNAiAMKAABIglBCEYNAiAMLwAFIQogCUE7RwRAIAlB8gBGDQMgCUHOAEcNBQsgCy0AbkEBcUUNBCAAQdDaAEEAEBNBfw8LIAwvAAUhCiAMKAABIQlBASENDAMLQQMhDQwCCyAHQbt\u002FRgRAIABBkd4AQQAQE0F\u002FDwsgB0F+cUGUf0YEQCAAQdjiAEEAEBNBfw8LIAdBX3FB2wBGBEAgAEGLHUEAEBNBfw8LIABBst4AQQAQE0F\u002FDwsgDCgAASEJQQEhDQtBfyEHIAtBfzYCmAIgCyAONgKEAgJAAkAgBgRAAkACQAJAAkAgCEHHAGsOBAEDAwIACwJAIAhBwQBHBEAgCEG\u002FAUYNASAIQbgBRw0EIAAQLSEHIABBuwEQDSAAIAkQFyAAIAcQOCAAIAoQFCALIAdBARBjGkE8IQggAEE8EA0MBwsgAEHCABANIAAgCRAXQcEAIQgMBgsgAEHAARANIAAgCRAXIAAgChAUQb8BIQgMBQsgAEHzABANIABBExANQccAIQgMAwsgAEHyABANIABBFBANQcoAIQgMAgsQAQALAkACQAJAIAhBxwBrDgQBBAQCAAsgCEG4AUcNAyAAEC0hByAAQbsBEA0gACAJEBcgACAHEDggACAKEBQgCyAHQQEQYxpBPCEIDAMLIABB8wAQDUHHACEIDAILIABB8gAQDUHKACEIDAELIAAgCBANCyABIAg2AgAgAiAKNgIAIAMgCTYCACAEIAc2AgAgBQRAIAUgDTYCAAtBAAtaAQN\u002FIwBBEGsiASQAAkAgACgCECIDQap\u002FRg0AIANBO0cEQCADQf0ARg0BIAAoAjANASABQTs2AgAgAEHMkAEgARATQX8hAgwBCyAAEA8hAgsgAUEQaiQAIAIL2QIBA38jAEFAaiIGJAACfyACIAEoAgBPBEAgBiACNgI0IAYgAzYCMCAAQdmKASAGQTBqEDpBfwwBCwJAIAEoAgQgBE4NACABIAQ2AgQgBEH\u002F\u002FwNIDQAgBiACNgIEIAYgAzYCACAAQYGLASAGEDpBfwwBCyABKAIIIAJBAXRqIgcvAQAiA0H\u002F\u002FwNHBEAgAyAERwRAIAYgAjYCKCAGIAQ2AiQgBiADNgIgIABBsooBIAZBIGoQOkF\u002FDAILQQAgASgCDCACQQJ0aigCACIBIAVGDQEaIAYgAjYCGCAGIAU2AhQgBiABNgIQIABBh4oBIAZBEGoQOkF\u002FDAELIAcgBDsBACABKAIMIAJBAnRqIAU2AgBBfyAAIAFBEGpBBCABQRhqIAEoAhRBAWoQZA0AGiABIAEoAhQiAEEBajYCFCABKAIQIABBAnRqIAI2AgBBAAshCCAGQUBrJAAgCAs7AAJ\u002FIAAgAUGAgARPBH9BfyAAIAFBgIAEa0EKdkGAsANqEIcBDQEaIAFB\u002FwdxQYC4A3IFIAELEIcBCwvBAQIGfwF+IwBBIGsiBSQAAn4CQCACQoCAgIBwg0KAgICAkH9SBEAgACACEDQiAkKAgICAcINCgICAgOAAUQ0BCyAAIAVBCGoiBCABED0iByADED0iCGogAqciBigCBCIJQf\u002F\u002F\u002F\u002F8HcWogCUEfdhCZAw0AIAQgASAHEIsCGiAEIAZBACAGKAIEQf\u002F\u002F\u002F\u002F8HcRBLGiAEIAMgCBCLAhogACACEAwgBBA3DAELIAAgAhAMQoCAgIDgAAshCiAFQSBqJAAgCgspAQF\u002FIAJCIIinQXVPBEAgAqciAyADKAIAQQFqNgIACyAAIAEgAhDTBQufBAMEfwJ8AX4jAEEwayIHJABBByACQiCIpyIEIARBB2tBbkkbIQVBACEEAkACQAJAAnwCQAJAAkACQAJAAkACQEEHIAFCIIinIgYgBkEHa0FuSRsiBkEKag4SCAkDAgkJCQkJBAUAAQEJCQkGCQsgBUEBRw0IIAGnIAKnRiEEDAkLIAUgBkYhBAwHCyAFQXlHDQYgAacgAqcQvAJFIQQMBgsgAacgAqdGIAVBeEZxIQQMBQsgBUF\u002FRw0EIAGnIAKnRiEEDAQLIAGntyEIIAVBB0cEQCAFDQQgAqe3DAILIAJCgICAgMCBgPz\u002FAHy\u002FDAELIAFCgICAgMCBgPz\u002FAHy\u002FIQggBQRAIAVBB0cNAyACQoCAgIDAgYD8\u002FwB8vwwBCyACp7cLIQkCQCADBEACQAJAIAi9IgFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAIMiAkKBgICAgICA+P8AWgRAIAm9Qv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoGAgICAgID4\u002FwBUIQQMAQsgCb0iCkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KBgICAgICA+P8AVA0BCyAEIAJCgICAgICAgPj\u002FAFZzIQQMBQsgA0ECRw0BCyAIIAlhIQQMAwsgASAKUSEEDAILIAVBdkcNACAAIAdBHGoiBiABEK0CIgMgACAHQQhqIAIQrQIiBRC9AiEEIAMgBkYEQCAGEBkLIAUgB0EIaiIDRw0AIAMQGQsgACABEAwgACACEAwLIAdBMGokACAECy8BAX8jAEHQAGsiAyQAIAMgACADQRBqIAEQgQE2AgAgACACIAMQEiADQdAAaiQACw0AIAAgASABED0QnQMLHQEBfyAAIAFB\u002FwFxEA4gACgCBCEDIAAgAhAbIAMLEgAgACABIAIgAyAEQZQDELEDC1IBAX8gACgCDCIDRQRAQQAPCyAAIAAoAghB\u002F\u002F\u002F\u002F\u002FwNBgYCAgHwgASABQYGAgIB8TBsiASABQf\u002F\u002F\u002F\u002F8DThtqNgIIIABB\u002F\u002F\u002F\u002F\u002FwMgAiADQQAQ3AILHwEBfyAAKAIMIgNFBEBBAA8LIAAgASACIANBABDcAgsgACABQgA3AgwgAUKAgICAgICAgIB\u002FNwIEIAEgADYCAAtmAQF\u002FAn9BACAAKAIIIgIgAU8NABpBfyAAKAIMDQAaIAAoAhQgACgCACACQQNsQQF2IgIgASABIAJJGyIBIAAoAhARAQAiAkUEQCAAQQE2AgxBfw8LIAAgATYCCCAAIAI2AgBBAAsLZwECfwJAIAFCgICAgHBUDQAgAaciAy8BBkEEayIEQR1LQQEgBHRBz4CAgAJxRXINACAAIAMpAyAQDCADIAI3AyAPCyAAIAIQDCABQoCAgIBwg0KAgICA4ABSBEAgAEHu0gBBABASCwshAQF\u002FIAAgASAAIAIQtgEiAiADIAQQFSEFIAAgAhAQIAULRwIBfgF\u002FIAApA8ABIQQgAUIgiKdBdU8EQCABpyIFIAUoAgBBAWo2AgALIAAgBCACIAFBAxC+ARogACABIAMQrAQgACABEAwLhAEBAX8CQCACRSABQoCAgIBwg0KAgICAkH9SckUEQCABpyIDIAMoAgBBAWo2AgBBBCECIAAoAgAgAxCRBCIDQQBKDQELIAFCIIinQXVPBEAgAaciAiACKAIAQQFqNgIAC0ECIQIgACABEMcDIgNBAE4NAEF\u002FDwsgACACEA0gACADEDhBAAv8AgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAFBxwBrDgQBDQ0CAAsgAUE8RwRAIAFBvwFHBEAgAUG4AUYNByABQcEARw0OC0EVIQQCQCAFQQJrDgMFBAAGC0EbIQQMBAsgACgCACADEBAgACAEEBoLQbMBIQQCQAJAAkAgBUEBaw4EBgABAgULQRYhBAwEC0EZIQQMAwtBHSEEDAILQRchAQJAIAVBAmsOAwkIAAoLQR8hAQwIC0EYIQQLIAAgBBANCwJAIAFBxwBrDgQDCAgHAAsgAUE8Rg0DIAFBwQBGDQggAUG\u002FAUYNASABQbgBRw0HCyAFQQJPDQggAEG9AUG5ASAGGxANDAkLIABBwQEQDQwICyAAQckAEA0PCyAAQT0QDQ8LQRohAQsgACABEA0LIABBywAQDQ8LEAEACyAAQcMAEA0gACADEDgPC0He9gBBqOwAQZy5AUGXzwAQAAALIAAgAxA4IAAgAkH\u002F\u002FwNxEBQLixMBCn8jAEFAaiIGJAAgBEEASARAIAAgBkEoakEAEJwBGiAGKAIoQQJxIQQLIAAQLSEKIAAQLSELIAAoAkAoAoQCIQ0CQCADBEAgAEEREA0gAEEGEA0gAEGsARANIABB6wAgChAYGiAAIAsQGgwBCyAAQewAIAoQGBogACALEBogAEEREA0LIAAoAkAoAoQCIQ4CQAJAAkACQAJAIAAoAhAiB0HbAEcEQCAHQfsARgRAQX8hByAAEA8NBiAAQfEAEA0gBARAIABBCxANIABBGxANCyABQUlGIAFBUUZyIQwgAUGxf0chDwNAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIQIgdBpX9HBEAgB0H9AEYNCyAAIAZBOGpBAEEBQQAQxgMiB0EASA0SIAZBuAE2AjAgBkEANgI0IAAoAkAiCSgCvAEhCCAGQX82AjwgBiAINgIsIAZBADYCCCAHDQIgABAPRQ0BIAYoAjghBwwGCyAERQRAIAAoAgBBuD9BABA6DBILQX8hByAAEA8NEgJAIAEEQCAGIAAgAhDFAyIINgI0IAhFDRQgBkG4ATYCMCAAKAJAKAK8ASEHIAZBfzYCPCAGIAc2AiwgBkEANgIIDAELIAAQogINEyAAIAZBMGogBkEsaiAGQTRqIAZBPGogBkEIakEAQfsAEK4BDRMLIAAoAhBB\u002FQBGDQIgAEHjFUEAEBMMEAsCQCAAKAIQQSByQfsARw0AIAAgBkEoakEAEJwBIgdBLEYgB0H9AEZyRSAHQT1HcQ0AAkAgBigCOCIHRQRAIAQEQCAAQfIAEA0gAEEYEA0gAEEHEA0gAEHRABANIABBGBANCyAAQcgAEA0MAQsgBARAIABBGxANIABBBxANIABBzAAQDSAAIAcQFyAAQRsQDQsgAEHCABANIAAgBxA4C0F\u002FIQcgACABIAJBAUF\u002FQQEQwgFBAEgNEiAAKAIQQf0ARg0KIABBLBAoRQ0LDBILAkACfyAGKAI4IgdFBEAgAEHzABANIARFBEBBEiEIDAMLQRghCSAAQRgQDSAAQQcQDSAAQdEAEA1BEgwBCyAERQRAQREhCAwCC0EbIQkgAEEbEA0gAEEHEA0gAEHMABANIAAgBxAXQRELIQggACAJEA0LIAAgCBANIAEEQCAGIAAgAhDFAyIINgI0IAhFDQUgB0UNBAwGCyAAEKICDQQMAgsCQCACBH8gACAGKAI4IgcQ5gQNBSAAKAJABSAJCy0AbkEBcUUNACAGKAI4IgdBzgBHIAdBO0dxDQAgAEGLHUEAEBMMBAsgBARAIABBGxANIABBBxANIABBzAAQDSAAIAYoAjgQFyAAQRsQDQsgAUEAIA8bRQRAIABBERANIABBuAEQDSAAIAYoAjgiBxAXIAAgACgCQC8BvAEQFAwCCyAGIAAoAgAgBigCOBAWIgc2AjQgAEHCABANIAAgBxA4DAYLIABBCxANIABB0wAQDSAAIAYoAggiB0ECdEEEaiAHQQV0QUBrckH8AXEQWAwECyAAIAZBMGogBkEsaiAGQTRqIAZBPGogBkEIakEAQfsAEK4BDQEgBigCCCEIAkACQCAHRQRAQR4hBwJAIAhBAWsOAwMCAAQLQSAhByAAQSAQDQwCCyAIQQFrIghBA08NBCAAIAhBAXRBG2pB\u002FwFxEA0MBAtBHCEHCyAAIAcQDQsgAEHHABANDAILIAAoAgAgBxAQDAoLIABBwQAQDSAAIAcQOAsgAUUNASAGKAI0IQcLIAAgByABEKMCDQcgBiAAKAJAKAK8ATYCLAsCQCAAKAIQQT1HBEAgBigCMCEHDAELIABBERANIABBBhANIABBrAEQDSAAQeoAQX8QGCEIIAAQDw0HIABBDhANIAAQUw0HIAYoAjAiB0G4AUcgB0E8R3FFBEAgACAGKAI0EJ4BCyAAIAgQGgsgACAHIAYoAiwgBigCNCAGKAI8QQEgDBDBASAAKAIQQf0ARg0AQX8hByAAQSwQKEUNAQwICwsgAEEOEA0gBARAIABBDhANC0F\u002FIQcgABAPRQ0CDAYLIABB4A9BABATDAQLIAAQDw0DIAYgACgCQCIEKAKwAjYCCCAEIAZBCGo2ArACIAZBfzYCHCAGQv\u002F\u002F\u002F\u002F8vNwIUIAZCgICAgHA3AgwgBCgCvAEhBCAGQQE2AiQgBiAENgIgIABB\u002FwAQDSABQUlGIAFBUUZyIQwDQAJAIAAoAhAiB0HdAEYNACAHIgRBpX9HIglFBEAgABAPDQZB7YcBIQggACgCECIEQSxGIARB3QBGcg0ECwJAAkAgBEH7AEYgBEHbAEZyRQRAIARBLEcNASAAQYIBEA0gAEEAEFggAEEOEA0gAEEOEA0MAgsgACAGQShqQQAQnAEiBEEsRiAEQd0ARnJFIARBPUdxDQACQCAJRQRAIARBPUYEQEHBzwAhCAwICyAAQQAQ5QQMAQsgAEGCARANIABBABBYIABBDhANCyAAIAEgAkEBIAYoAihBAnFBARDCAUEASA0HDAELIAZBADYCOCAGQQA2AjQCQCABBEAgBiAAIAIQxQMiBDYCNCAERQ0HIAAgBCABEKMCDQcgBkG4ATYCMCAGIAAoAkAoArwBNgIsDAELIAAQogINByAAIAZBMGogBkEsaiAGQTRqIAZBPGogBkE4akEAQdsAEK4BDQcLAkAgCUUEQCAAIAYoAjgQ5QQMAQsgAEGCARANIAAgBi0AOBBYIABBDhANIAAoAhBBPUcNACAAQREQDSAAQQYQDSAAQawBEA0gAEHqAEF\u002FEBghBCAAEA8NBiAAQQ4QDSAAEFMNBiAGKAIwIghBuAFHIAhBPEdxRQRAIAAgBigCNBCeAQsgACAEEBoLIAAgBigCMCAGKAIsIAYoAjQgBigCPEEBIAwQwQELIAAoAhBB3QBGDQAgB0Glf0YEQEGQ0wAhCAwECyAAQSwQKEUNAQwFCwsgAEGFARANIAAoAkAiASABKAKwAigCADYCsAIgABAPDQMLAkAgBUUNACAAKAIQQT1HDQBBfyEHIABB7ABBfxAYIQEgABAPDQQgACAKEBogAwRAIABBDhANCyAAEFMNBCAAQewAIAsQGBogACABEBpBASEHDAQLIANFBEAgAEHDPUEAEBMMAwsgACgCQCgCgAIgDWpBswEgDiANaxAsGiAAKAJAKAKkAiAKQRRsaiIAIAAoAgBBAWs2AgBBACEHDAMLIAAgCEEAEBMMAQsgACgCACAGKAI0EBALQX8hBwsgBkFAayQAIAcLKwAgACgCQCgCpAFBAE4EQCAAQQYQDSAAQdkAEA0gACAAKAJALwGkARAUCwsTACAAIAEgAiADIARBAEEAEN0BC6YBAQF\u002FIwBBEGsiAyQAIAMgAjcDCAJAIAAgAUGHASABQQAQESICQoCAgIBwg0KAgICA4ABRDQAgACACEDUEQCAAIAIgAUEBIANBCGoQNiICQv\u002F\u002F\u002F\u002F9vViACQoCAgICwf4NCgICAgCBRcg0BIAAgAhAMIABBpcEAQQAQEkKAgICA4AAhAgwBCyAAIAIQDCAAIAEgACADQQhqEIoFIQILIANBEGokACACC6MBAgN\u002FAX4gAEEQaiECIAEoAgAiBEEBaiEDAkAgACkCBCIFQoCAgIAIg1BFBEAgAiAEQQF0ai8BACIAQYD4A3FBgLADRyADIAWnQf\u002F\u002F\u002F\u002F8HcU5yDQEgAiADQQF0ai8BACICQYD4A3FBgLgDRw0BIABBCnRBgPg\u002FcSACQf8HcXJBgIAEaiEAIARBAmohAwwBCyACIARqLQAAIQALIAEgAzYCACAACxIAIAFB2AFOBEAgACABEIYFCwthACAAIAEgAkKAgICACHxC\u002F\u002F\u002F\u002F\u002Fw9YBH4gAkL\u002F\u002F\u002F\u002F\u002FD4MFQoCAgIDAfiACub0iAkKAgICAwIGA\u002FP8AfSACQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwsgAyAEQQdyEJQBCzkAIABB\u002FwBNBEAgAEEDdkH8\u002F\u002F\u002F\u002FAXFBsP8BaigCACAAdkEBcQ8LIABBfnFBjMAARiAAEJYGQQBHcgs1ACAAIAJBMCACQQAQESICQoCAgIBwg0KAgICA4ABRBEAgAUEANgIAQX8PCyAAIAEgAhCVAQufAwIEfgF\u002FAkACQCACBEAgACABQdcBIAFBABARIgNCgICAgHCDIgRCgICAgCBSBEAgBEKAgICA4ABRDQMgBEKAgICAMFINAgsgACABQcwBIAFBABARIgNCgICAgHCDQoCAgIDgAFENAiAAIAEgAxDkAyEEIAAgAxAMIARCgICAgHCDQoCAgIDgAFEEQCAEDwtCgICAgOAAIQMCQCAAIARB6wAgBEEAEBEiBUKAgICAcINCgICAgOAAUQ0AIABBMxCGASIBQoCAgIBwg0KAgICA4ABRBEAgACAFEAwMAQsgAEEQEFwiAkUEQCAAIAEQDCAAIAUQDAwBCyAEQiCIp0F1TwRAIASnIgcgBygCAEEBajYCAAsgAiAFNwMIIAIgBDcDACABQoCAgIBwWgRAIAGnIAI2AiALIAEhAwsgACAEEAwgAw8LIAAgAUHMASABQQAQESIDQoCAgIBwg0KAgICA4ABRDQELIAAgAxA1RQRAIAAgAxAMIABBjNkAQQAQEkKAgICA4AAPCyAAIAEgAxDkAyEGIAAgAxAMIAYhAwsgAwtRAQN\u002FAkADQCABQoCAgIBwVA0BIAGnIgIvAQYiBEEsRgRAIAIoAiAiAkUNAiACLQARBEAgABC4AkF\u002FDwsgAikDACEBDAELCyAEQQJGIQMLIAMLewEBf0F\u002FIQQCQCAAIAEQICIBQoCAgIBwg0KAgICA4ABRDQAgACABpyACEIQEIQQgACABEAwgBA0AIANBgIABcUUEQEEAIQQgA0GAgAJxRQ0BIAAoAhAoAowBIgJFDQEgAi0AKEEBcUUNAQsgAEGICkEAEBJBfyEECyAEC3sBAn8gASABKAIAQQFrIgI2AgACQCACDQAgAC0AaEECRg0AIAEoAggiAiABKAIMIgM2AgQgAyACNgIAIAFBADYCDCAAKAJcIQIgACABQQhqIgM2AlwgASACNgIMIAEgAEHYAGo2AgggAiADNgIAIAAtAGgNACAAEOYFCwvKBQEEfyMAQSBrIgckAAJAAkACQAJAAkAgAUKAgICAcFQgAkL\u002F\u002F\u002F\u002F\u002FD1ZyDQAgAqchBgJAAkACQAJAAkACQAJAAkACQCABpyIFLwEGQQJrDh4ACQkJCQkICQkJCQkJCQkJCQkJBwYGBQUEBAMDAgEJCyAFKAIoIgggBksNCiAGIAhHDQggBS0ABUEJcUEJRw0IIAUoAhAhBgNAAkAgBigCLCIIBEAgCCgCECEGAkAgCC8BBkEBaw4CAAIMCyAGLQARRQ0CDAsLIAAgBSADIAQQhgQhBAwOCyAILQAFQQhxDQALDAgLQX8hBCAAIAdBGGogAxBtDQtBASEEIAUoAiggBk0NCyAFKAIkIAZBA3RqIAcrAxg5AwAMCwtBfyEEIAAgB0EYaiADEG0NCkEBIQQgBSgCKCAGTQ0KIAUoAiQgBkECdGogBysDGLY4AgAMCgsgACAHQQhqIAMQhQQNBiAFKAIoIAZNDQggBSgCJCAGQQN0aiAHKQMINwMADAgLQX8hBCAAIAdBFGogAxCVAQ0IQQEhBCAFKAIoIAZNDQggBSgCJCAGQQJ0aiAHKAIUNgIADAgLQX8hBCAAIAdBFGogAxCVAQ0HIAUoAiggBk0NBkEBIQQgBSgCJCAGQQF0aiAHKAIUOwEADAcLQX8hBCAAIAdBFGogAxCVAQ0GQQEhBCAFKAIoIAZNDQYgBSgCJCAGaiAHKAIUOgAADAYLQX8hBCAAIAdBFGogAxDcBQ0FQQEhBCAFKAIoIAZNDQUgBSgCJCAGaiAHKAIUOgAADAULIAUoAiggBk0NACAAIAUoAiQgBkEDdGogAxAdDAMLIAAgAhAwIQUgACACEAwgBUUEQCAAIAMQDAwBCyAAIAEgBSADIAEgBBDQASEEIAAgBRAQDAMLQX8hBAwCCyAAIAUoAiQgBkEDdGogAxAdC0EBIQQLIAdBIGokACAEC+QMAgd\u002FAX4jAEEwayIJJAACQAJAAkACQAJAAn8CQAJAIARCIIinIgdBf0cEQCABQoCAgIBwWgRAIAGnIQcMAgsCQAJAAkAgB0ECaw4CAAECCyAAIAMQDCAAIAJBgcIAELUBQX8hBgwKCyAAIAMQDCAAIAJBpugAELUBQX8hBgwJCyAAIAEQiwSnIQcMAQsgBKciCCABpyIHRw0BAkADQCAHKAIQIghBMGohCiAIIAgoAhggAnFBf3NBAnRqKAIAIQYDQCAGRQRAIAchCEEADAYLIAIgCiAGQQFrQQN0IghqIgYoAgRHBEAgBigCAEH\u002F\u002F\u002F8fcSEGDAELCyAHKAIUIAhqIQggBigCACIKQYCAgMB+cUGAgIDAAEYEQCAAIAggAxAdDAgLAkAgCkGAgICAAnEEQCAHLwEGQQJHDQEgAkEwRw0DIAAgByADIAUQ3gUhBgwLCyAKQRp2QTBxIgpBMEcEQCAKQSBHBEAgCkEQRw0IIAAgCCgCBCAEIAMgBRCHBCEGDAwLIAcvAQZBC0YNByAAIAgoAgAoAhAgAxAdDAkLIAAgByACIAggBhDBAkUNAQwJCwtB6vAAQajsAEH7wQBB5MQAEAAAC0HzxgBBqOwAQfzBAEHkxAAQAAALQQEMAQtBAgshBgNAAkACQAJAAkACQAJAIAYOAgABAgsCQCAHLQAFIgZBBHFFDQACQCAGQQhxBEAgAkEASARAIAJB\u002F\u002F\u002F\u002F\u002FwdxIgYgBygCKE8NAiAHIAhHDQYgACAEIAatIAMgBRDPASEGDA4LIAcvAQZBFWtB\u002F\u002F8DcUEKSw0CIAAgAhCTAyIGRQ0CIAZBAEgNDCAHLwEGIQYMCgsgACgCECgCRCAHLwEGQRhsaigCFCIGRQ0BIAYoAhgiCgRAIAcgBygCAEEBajYCACAAIAetQoCAgIBwhCIBIAIgAyAEIAUgChE0ACEGIAAgARAMDAYLIAYoAgAiBkUNASAHIAcoAgBBAWo2AgAgACAJQRBqIAetQoCAgIBwhCINIAIgBhEXACEGIAAgDRAMIAZBAEgNBSAGRQ0BIAktABBBEHEEQCAAIAkpAygiAadBACABQoCAgIBwg0KAgICAMFIbIAQgAyAFEIcEIQYgACAJKQMgEAwgACAJKQMoEAwMDQsgACAJKQMYEAwgCS0AEEECcUUNCCAHIAhHDQQgACAEIAIgA0KAgICAMEKAgICAMEGAwAAQaiEGDAULIAcvAQYiBkEVa0H\u002F\u002FwNxQQtJDQgLIAcoAhAoAiwhB0EBIQYMBQsgB0UNAUECIQYMBAsDQCAHKAIQIgZBMGohCyAGIAYoAhggAnFBf3NBAnRqKAIAIQYDQCAGRQ0EIAIgCyAGQQFrQQN0IgZqIgooAgRHBEAgCigCAEH\u002F\u002F\u002F8fcSEGDAELCyAHKAIUIAZqIQsCQCAKKAIAIgZBGnZBMHEiDEEwRwRAIAxBEEcNASAAIAsoAgQgBCADIAUQhwQhBgwLC0F\u002FIQYgACAHIAIgCyAKEMECRQ0BDAoLCyAGQYCAgMAAcQ0CDAQLIAVBgIAEcQRAIAAgAxAMIAAgAhDAAkF\u002FIQYMCAsgCEUEQCAAIAMQDCAAIAVB7B4QfCEGDAgLIAgtAAUiBkEBcUUEQCAAIAMQDCAAIAVBhdgAEHwhBgwICwJAIAGnIgcgCEYEQCAGQQRxBEAgBkEIcUUgAkEATnINAiAHLwEGQQJHDQIgBygCKCACQf\u002F\u002F\u002F\u002F8HcUcNAiAAIAcgAyAFEIYEIQYMCgsgACAHIAJBBxB3IgJFDQggAiADNwMADAcLIAAgCUEQaiAIIAIQQyIGQQBIDQEgBkUNACAJLQAQQRBxBEAgACAJKQMgEAwgACAJKQMoEAwgACADEAwgACAFQdc\u002FEHwhBgwJCyAAIAkpAxgQDCAJLQAQQQJxRQ0EIAgvAQZBC0YNBCAAIAQgAiADQoCAgIAwQoCAgIAwQYDAABBqIQYMAQsgACAIIAIgA0KAgICAMEKAgICAMCAFQYfOAHIQ3QUhBgsgACADEAwMBgtBACEGDAALAAsgACADEAwgACAFIAIQ5wEhBgwDCyAGQf7\u002FA3FBHEYEQEF\u002FIQYgACAJQQhqIAMQhQRFDQEMAwsgACAAIAMQlgEiARAMQX8hBiABQoCAgIBwg0KAgICA4ABRDQILQQEhBgwBCyAAIAMQDEF\u002FIQYLIAlBMGokACAGCzwBAX8jAEHQAGsiAiQAIAIgAQR\u002FIAAgAkEQaiABEIEBBUHe2QALNgIAIABBveQAIAIQwwIgAkHQAGokAAuuwwEDLn8HfgJ8IwBBoAFrIgghDiAIJAAgACgCECEWQoCAgIDgACE1AkAgABB2DQACfwJAAkACQAJAAkAgAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAGQQRxRQ0BIAGnIgcoAmQhCCAHKAJAIhkoAiQhEyAZKAIgIhIoAjAhCSASLwEqIQwgB0EANgJkIAcgFigCjAE2AjggBygCSCEVIAcoAlghBiAHKAJMIREgFiAHQThqIhQ2AowBIBEgDEEDdGohFyAVIRggBiEMIAcoAhxFDQQMBQsgAaciGS8BBiIHQQ1GDQIgFigCRCAHQRhsaigCECIIDQELIABB+zlBABASDAULIAAgASACIAQgBSAGIAgRFgAhNQwECyAZKAIgIhIvAS4hCSASLwEqIRcgEi8BKCEHIA4gEi0AEDYCWCAOIA5ByABqIhU2AkwgDiAVNgJIIA4gATcDOCAOIAQ2AlQgGSgCJCETIAggByAHQQAgBCAHSCIIGyAGQQJxQQF2GyIGIAkgF2pqQQN0QQ9qQfD\u002F\u002FwFxayIYJAAgBSEVIAYEQCAHIAQgByAIGyIIQQAgCEEAShsiCGsiCUEAIAcgCU8bIREDQAJAIAggCkYEQANAIAggEUYNAiAYIAhBA3RqQoCAgIAwNwMAIAhBAWohCAwACwALIAUgCkEDdCIJaikDACIBQiCIp0F1TwRAIAGnIhUgFSgCAEEBajYCAAsgCSAYaiABNwMAIBFBAWohESAKQQFqIQoMAQsLIA4gBzYCVCAYIRULIA4gFTYCQCAOIBggBkEDdGoiETYCREEAIQgDQCAIIBdHBEAgESAIQQN0akKAgICAMDcDACAIQQFqIQgMAQsLIBIoAhQhBiAOIBYoAowBNgIwIBYgDkEwaiIUNgKMASASKAIwIQkgESAXQQN0aiIIIRcLQQAMAQtBAQshBwNAAkACQAJAAkAgB0UEQCAEQQN0ISMgA0KAgICAcIMhOyARQQhqIRogEUEQaiEbIBFBGGohHCAVQQhqIR0gFUEQaiEeIBVBGGohHyAUQRhqISQgAkIgiKciIEF+cSElIANCIIinISYgBK0hOiADpyEhIA5BMGohJyAOQegAaiEiIAghBwJAA0ACQCAGQQFqIQxCgICAgDAhNQJ\u002FAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ\u002FAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBi0AACIKQQFrDvUBAAElCZMBCgsMDQ4PEBESExQVGBYXGRobHCEiIyQdIB4fKScnKiorLNwB\u002FQEtLi8w\u002FAExMjM0NTY3ODk5Ojo7oAGjAT08PpABkQGSAZQBlQGWAZ4BnwGiAaEBpAGXAZgBmQGaAZsBpQGmAacBnAGcAZ0BnQE\u002FQEFCQ0RsbW5yc3V2dG9wcXd+fXqBAYIBgwGMAcsBzAHNAc4BzgHOAc4BzgHOAXh4eHmEAYYBiAGFAYcBigGJAYsBjQGOAdgB2gHbAdsB2QGwAa8BsgGxAbMBswG1AbQBqQG2AY8ByAHJAcoBqwGsAa0BqAGqAa4BtwG5AbgBvQG+Ab8BwAHHAcUBwQHCAcMBxAG6AbwBuwHUAcYB9gECAgICAgICAgIDBAUGB0VGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqawiAAX98eyYmJibPAdAB0QHSAdYBCyAIIAY1AAE3AwAgBkEFaiEMIAhBCGohBwz1AQsgEigCNCAMKAAAQQN0aikDACIBQiCIp0F1TwRAIAGnIgcgBygCAEEBajYCAAsgCCABNwMAIAZBBWohDCAIQQhqIQcM9AELIAggCkG1AWutNwMAIAhBCGohBwzzAQsgCCAGMAABQv\u002F\u002F\u002F\u002F8PgzcDACAGQQJqIQwgCEEIaiEHDPIBCyAIIAYyAAFC\u002F\u002F\u002F\u002F\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\u002F\u002F\u002F\u002F\u002Fb1YNAEKBgICAECE1IAFCgICAgHCDQoCAgIAwUQ0AIABB6ecAQQAQEgzNAQsgCCA1NwMAIAhBCGohBwzIAQsgO0KAgICAMFINwQEgCUHPjAFBABASDMsBCyAJIAhBEGspAwAgCEEIaykDABDOBSIHQQBIDcoBIAcNwAEgCUG0HkEAEBIMygELIAhBCGsiDSkDACI1Qv\u002F\u002F\u002F\u002F9vWA3BASAIQRBrIgcpAwAhASA1pyILKAIQIgpBMGohDyAKIAooAhhBf3NBAnRB1HlyaigCACEKAkACQANAIAoEQCAPIApBAWtBA3QiCmoiECgCBEHKAUYNAiAQKAIAQf\u002F\u002F\u002Fx9xIQoMAQsLIAlB+AAQzQUiNUKAgICAcINCgICAgOAAUQ3LASAJIAtBygFBBxB3IgpFBEAgCSA1EAwMzAELIDVCIIinQXVPBEAgNaciCyALKAIAQQFqNgIACyAKIDU3AwAMAQsgCygCFCAKaikDACI1QiCIp0F1SQ0AIDWnIgogCigCAEEBajYCAAsgCSA1EIgCIQoCQCABQoCAgIBwWgRAIAGnIg8oAhAiC0EwaiEQIAsgCygCGCAKcUF\u002Fc0ECdGooAgAhCwJAA0AgC0UNASAKIBAgC0EDdGoiC0EEaygCAEcEQCALQQhrKAIAQf\u002F\u002F\u002Fx9xIQsMAQsLIAkgChAQIAlBoBpBABASDMwBCyAJIA8gCkEHEHchCyAJIAoQECALRQ3LASALQoCAgIAwNwMADAELIAkgChAQCyAJIAcpAwAQDCAJIA0pAwAQDAzFAQsgCSAIQQhrIggpAwAQmAEMyAELIAZBBmohDCAGKAABIQcCQAJAAkACQAJAAkAgBi0ABSIKDgUAAQIDBAULIAlBgIABIAcQ5wEaDMwBCyAJIAcQzAUMywELIAkgBxDRAQzKAQsgCUG8jwFBABDDAgzJAQsgCUHE4ABBABASDMgBCyAOIAo2AhAgCUHX6wAgDkEQahA6DMcBCyAGLwABIQogBi8AAyENIBQgBkEFaiIMNgIgQX8hBwJ+IAkgCCAKQQN0ayILQQhrIg8pAwAgCSkDuAEQTQRAIAlCgICAgDAgCgR+IAspAwAFQoCAgIAwC0ECIA1BAWsQhwMMAQsgCSAPKQMAQoCAgIAwQoCAgIAwIAogC0EAENIBCyIBQoCAgIBwg0KAgICA4ABRDcYBA0AgByAKRwRAIAkgCyAHQQN0aikDABAMIAdBAWohBwwBCwsgCCAKQX9zQQN0aiIGIAE3AwAgBkEIaiEHDMIBCyAGQQNqIQwgBi8AASENIAkgDkHgAGogCEEIayIHKQMAEP0DIgpFDcUBAn4gCSAIQRBrIgspAwAgCSkDuAEQTQRAIAlCgICAgDAgDigCYAR+IAopAwAFQoCAgIAwC0ECIA1BAWsQhwMMAQsgCSALKQMAQoCAgIAwIA4oAmAgChAcCyEBIAkgCiAOKAJgEIYDIAFCgICAgHCDQoCAgIDgAFENxQEgCSALKQMAEAwgCSAHKQMAEAwgCyABNwMADMEBCyAIQRBrIgYgCUKAgICAMCAGKQMAIAhBCGsiBykDABDLBTcDAAzAAQsgCSAIQQhrIgcpAwAQ6AEiAUKAgICAcINCgICAgOAAUQ3DASAJIAcpAwAQDCAHIAE3AwAMuQELIAhBCGsiBykDACE1IAkQ0AUiCgR+IAkgChBSBUKAgICAIAshASAJIAoQECABQoCAgIBwg0KAgICA4ABRDcIBIAkgDkGAAWoQtwIiNkKAgICAcINCgICAgOAAUQRAIAkgARAMDMMBCyAOIA4pA4ABNwNgIA4gNTcDeCAOIAE3A3AgDiAOKQOIATcDaCAJQTRBBCAOQeAAahD4AiAJIAEQDCAJIA4pA4ABEAwgCSAOKQOIARAMIAkgBykDABAMIAcgNjcDAAy4AQsgBkEFaiEMIAkoAsgBKAIQIgdBMGohDSAHIAYoAAEiCiAHKAIYcUF\u002Fc0ECdGooAgAhBwJAAkADQCAHRQ0BIA0gB0EDdGoiB0EIayELIAogB0EEaygCAEcEQCALKAIAQf\u002F\u002F\u002Fx9xIQcMAQsLQQEhByALDQELIAkgCSkDwAEgChBuIgdBAEgNwgELIAggB0EAR61CgICAgBCENwMAIAhBCGohBwy9AQsgCkE3ayELIAZBBWohDCAJKALIASINKAIQIgdBMGohDyAHIAYoAAEiCiAHKAIYcUF\u002Fc0ECdGooAgAhBwJAAkADQCAHRQ0BIAogDyAHQQFrQQN0IgdqIhAoAgRHBEAgECgCAEH\u002F\u002F\u002F8fcSEHDAELCyANKAIUIAdqKQMAIjVCgICAgHCDIgFCgICAgMAAUQRAIAkgChDRAQzDAQsgNUIgiKdBdUkNASA1pyIHIAcoAgBBAWo2AgAMAQsgCSAJKQPAASIBIAogASALEBEiNUKAgICAcIMhAQsgAUKAgICA4ABRDcABIAggNTcDACAIQQhqIQcMvAELIAZBBWohDCAJIAYoAAEgCEEIayIHKQMAIApBOWsQygVBAEgNpwEMuwELIAZBBWohDCAGKAABIQogCEEQayIHKAIARQRAIAkgChDAAgy\u002FAQsgCSAKIAhBCGspAwBBAhDKBSIGQQBODboBIAZBHnZBAnEMuwELIAZBBmohDCAJKALAASINKAIQIgpBMGohDyAKIAYoAAEiByAKKAIYcUF\u002Fc0ECdGooAgAhCiAGLAAFIQsCQANAIApFDQEgDyAKQQN0aiIQQQhrIQogByAQQQRrKAIARwRAIAooAgBB\u002F\u002F\u002F\u002FH3EhCgwBCwsgC0EASARAIApFDbQBIAotAANBBHENtAEMtgELIApFDbEBIAtBwABJDbMBIAooAgAiCkGAgIAgcQ2zASAKQYCAgIB8cUGAgICABEYNsgEgCkGAgIDAAXFBgICAwAFGDbMBDLIBCyALQQBODbABDLIBCyAGLAAFIgdBAXFBBnIgB0ECcUEFciAHQQBOIgcbIRAgCUHAAUHIASAHG2ooAgAiCygCECINIAYoAAEiDyANKAIYcUF\u002Fc0ECdGooAgAhCkKAgICAMEKAgICAwAAgBxshASAGQQZqIQwgDUEwaiENAkADQCAKRQ0BIA0gCkEDdGoiCkEIayEHIA8gCkEEaygCAEcEQCAHKAIAQf\u002F\u002F\u002Fx9xIQoMAQsLIAcNswELIAstAAVBAXFFDbIBIAkgCyAPIBAQdyIHRQ28ASAHIAE3AwAMsgELIAZBBmohDCAJKQPAASIBpygCECIHQTBqIQ0gByAGKAABIgsgBygCGHFBf3NBAnRqKAIAIQogBi0ABSEPIAkgASALIAhBCGsiBykDAEKAgICAMEKAgICAMAJ\u002FAkADQCAKRQ0BIA0gCkEDdGoiEEEIayEKIAsgEEEEaygCAEcEQCAKKAIAQf\u002F\u002F\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\u002F\u002F\u002F8fcSEHDAELCyALKAIUIA9qNQIEQiCGQoCAgIDAAFEEQCAJIAoQ0QEMhQELIActAANBCHFFDQMgNUIgiKdBdEsNAQwCCyAJIAkpA8ABIAoQbiIHQQBIDYMBIAdFBEBCgICAgDAhNQwCCyAJKQPAASI1QiCIp0F1SQ0BIDWnIQsLIAsgCygCAEEBajYCAAsgCCA1NwMAIAggCSAKEFI3AwggCEEQaiEHDH0LIAlBgIABIAoQ5wENgAEgCEEQaiEHDHwLIAwgDCgAAGohDCAIIQcgCRB2RQ17DH8LIAwgDC4AAGohDCAIIQcgCRB2RQ16DH4LIAwgDCwAAGohDCAIIQcgCRB2RQ15DH0LIAZBBWohCgJ\u002FIAhBCGsiBykDACIBQv\u002F\u002F\u002F\u002F8\u002FWARAIAGnDAELIAkgARAnCwR\u002FIAogDCgAAGpBBGsFIAoLIQwgCRB2RQ14DGQLIAZBBWohCgJ\u002FIAhBCGsiBykDACIBQv\u002F\u002F\u002F\u002F8\u002FWARAIAGnDAELIAkgARAnCwR\u002FIAoFIAogDCgAAGpBBGsLIQwgCRB2RQ13DGMLIAZBAmohCgJ\u002FIAhBCGsiBykDACIBQv\u002F\u002F\u002F\u002F8\u002FWARAIAGnDAELIAkgARAnCwR\u002FIAogDCwAAGpBAWsFIAoLIQwgCRB2RQ12DGILIAZBAmohCgJ\u002FIAhBCGsiBykDACIBQv\u002F\u002F\u002F\u002F8\u002FWARAIAGnDAELIAkgARAnCwR\u002FIAoFIAogDCwAAGpBAWsLIQwgCRB2RQ11DGELIAggDCAGKAABaiASKAIUa61CgICAgNAAhDcDACAGQQVqIQwgCEEIaiEHDHQLIAYoAAEhKiAIIAYgEigCFGtBBWqtNwMAIAhBCGohByAqIAxqIQwMcwsCQCAIQQhrIgcpAwAiAUL\u002F\u002F\u002F\u002F\u002FD1YNACABpyIKIBIoAhhPDQAgEigCFCAKaiEMDHMLIAlB6s8AQQAQOgx2CyAIQQhrIg8pAwAiNUIgiKciB0EBaiIKQQRNQQBBASAKdEEZcRtFBEAgCSA1EMkFITULAkACQCAJQRgQJCILRQ0AIAlCgICAgCBBERBHIgFCgICAgHCDQoCAgIDgAFEEQCAJKAIQIgdBEGogCyAHKAIEEQAADAELIAtBADYCFCALIDU3AwAgC0IANwMIIAtBADsBECABpyALNgIgIAdBfnFBAkYNaQJAIDWnIg0tAAVBCHFFDQBBACEHIA0oAhAiCigCICIQQQAgEEEAShshECAKQTBqIQoDQCAHIBBGDQMgCi0AA0EQcQ0BIApBCGohCiAHQQFqIQcMAAsACyAJIA5B4ABqIA5BgAFqIA1BIRB9RQ1aIAEhNQsgCSA1EAwgD0KAgICA4AA3AwAMdgsgC0EBOgARIA1BKGohBgxmC0KBgICAECE3QoCAgIAwIQECQCAIQQhrKQMAIjZCgICAgHBUDQAgNqciDS8BBkERRw0AIA0oAiAhBwJAA0AgBygCCCIKIAcoAgxPBEAgBykDACI1QoCAgIAQhEKAgICAcINCgICAgDBRDQMgByAJIActABAEfiA1BSANKAIgIgspAwAiNUIgiKdBdU8EQCA1pyIKIAooAgBBAWo2AgALAkADQCAJIDUQwgIiNUKAgICAcIMiOUKAgICAIFENBSA5QoCAgIDgAFENeyAJIA5B4ABqIgogDkGAAWoiDyA1p0EREH1FBEAgCSAOKAJgIA4oAoABIhAQWyAQBEAgCSA1EAwgCy0AEQRAIAkgCiAPIAsoAgBBIRB9DX4gC0EAOgARIAsgDigCYDYCFCALIA4oAoABNgIMC0EAIQoDQCAKIAsoAgxPDQQgCkEDdCEPIApBAWohCiAJIDYgDyALKAIUaigCBEKAgICAIEEEEBVBAE4NAAsMfQsgCRB2RQ0BCwsgCSA1EAwMegsgB0EBOgAQIAcpAwALEMICIjU3AwAgNUKAgICAcIMiNUKAgICAIFENAyA1QoCAgIDgAFENeCAJEHYNeCAJIA5BnAFqIA5BmAFqIAcoAgBBIRB9DXggCSAHKAIUIAcoAgwQWyAHIA4oApwBNgIUIA4oApgBIQogB0EANgIIIAcgCjYCDAwBCwJAIActABEEQCAHIApBAWo2AgggCkGAgICAeHIhCwwBCyAHKAIUIApBA3RqIgsoAgAhKyALKAIEIQsgByAKQQFqNgIIIActABAEQCAJQQAgDSALEEMiCkEASA15IAoNAiAJIDYgC0KAgICAIEEEEBVBAEgNeQsgK0UNAQsgCUEAIAcoAgAgCxBDIgpBAEgNdyAKRQ0AC0KAgICAECE3IAkgCxBSIQEMAQsgCSA1EAwLIAggNzcDCCAIIAE3AwAgCEEQaiEHDHALIAkgCEEAEIUDDXMgCEKAgICA0AA3AwggCEEQaiEHDG8LIAYtAAEhByAOQQE2AmAgBkECaiEMQoGAgIAQIQEgCEF9IAdrQQN0aiIHKQMAIjZCgICAgHCDQoCAgIAwUQ1iIAkgNiAHKQMIIA5B4ABqEJEBIjVCgICAgHCDQoCAgIDgAFEEQEF\u002FIQogDkF\u002FNgJgDGILIA4oAmAiCg1hQoCAgIAQIQEMYgsgCSAIQQEQhQMNcSAIQoCAgIDQADcDCCAIQRBqIQcMbQsgCEEIayIHKQMAIgFC\u002F\u002F\u002F\u002F\u002F29YBEAgCUH6HkEAEBIMcQsgCSABIA5B4ABqEMgFIjVCgICAgHCDQoCAgIDgAFENcCAJIAEQDCAHIDU3AwAgCCAOKAJgQQBHrUKAgICAEIQ3AwAgCEEIaiEHDGwLIAhBCGspAwBC\u002F\u002F\u002F\u002F\u002F29WDWUgCUH6HkEAEBIMbwsgCSAIQRBrIgopAwAQDCAIQRhrIgcpAwAiAUKAgICAcINCgICAgDBRDWogCSABQQAQkAEEQCAKIQgMbwsgCSAHKQMAEAwMagsgCEEIayIHKQMAIQEDQAJAIAcgF00NACAHQQhrIggpAwAiNUKAgICAcINCgICAgNAAUQ0AIAkgNRAMIAghBwwBCwsgByAXRgRAIAlBtcgAQQAQOiAJIAEQDCAXIQgMbgsgB0EIayABNwMADGkLIAkgCEEYaykDACAIQSBrKQMAQQEgCEEIayIHEBwiAUKAgICAcINCgICAgOAAUQ1sIAkgBykDABAMIAcgATcDAAxiCyAGQQJqIQwgCCAJIAhBIGsiBykDACIBQRdBBiAGLQABIgpBAXEbIAFBABARIgFCgICAgHCDIjVCgICAgCBRIDVCgICAgDBRcgR+QoGAgIAQBSA1QoCAgIDgAFENbCAHKQMAITUCfiAKQQJxBEAgCSABIDVBAEEAEDYMAQsgCSABIDVBASAIQQhrEDYLIgFCgICAgHCDQoCAgIDgAFENbCAJIAhBCGsiBikDABAMIAYgATcDAEKAgICAEAs3AwAgCEEIaiEHDGcLAn8gCEEIayIGKQMAIgFC\u002F\u002F\u002F\u002F\u002Fz9YBEAgAadBAEcMAQsgCSABECcLIQcgBiAHRa1CgICAgBCENwMADGALIAZBBWohDCAJIAhBCGsiBykDACIBIAYoAAEgAUEAEBEiAUKAgICAcINCgICAgOAAUQ1pIAkgBykDABAMIAcgATcDAAxfCyAGQQVqIQwgCSAIQQhrKQMAIgEgBigAASABQQAQESIBQoCAgIBwg0KAgICA4ABRDWggCCABNwMAIAhBCGohBwxkCyAJIAhBEGsiBykDACIBIAYoAAEgCEEIaykDACABQYCAAhDQASEsIAkgBykDABAMIAZBBWohDCAsQQBODWMMTwsgBkEFaiEMIAkgBigAARDNBSIBQoCAgIBwg0KAgICA4ABRDWYgCCABNwMAIAhBCGohBwxiCyAIQQhrIQcCQCAIQRBrIgopAwAiAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAJECJCgICAgOAAITUMAQsgBykDACI1QoCAgIBwg0KAgICAgH9SBEAgCRD8A0KAgICA4AAhNQwBCyAJIDUQiAIhCCABpyINKAIQIgtBMGohDyALIAggCygCGHFBf3NBAnRqKAIAIQsCQANAIAsEQCAPIAtBAWtBA3QiC2oiECgCBCAIRg0CIBAoAgBB\u002F\u002F\u002F\u002FH3EhCwwBCwsgCSAIEMcFQoCAgIDgACE1DAELIA0oAhQgC2opAwAiNUIgiKdBdUkNACA1pyIIIAgoAgBBAWo2AgALIAkgBykDABAMIAkgCikDABAMIAogNTcDACA1QoCAgIBwg0KAgICA4ABSDWEMTQsgCEEQaykDACEBIAhBCGshCgJAAkAgCEEYayIHKQMAIjVC\u002F\u002F\u002F\u002F\u002F29YBEAgCRAiDAELIAopAwAiNkKAgICAcINCgICAgIB\u002FUgRAIAkQ\u002FAMMAQsgCSA2EIgCIQggNaciDSgCECILQTBqIQ8gCyAIIAsoAhhxQX9zQQJ0aigCACELA0AgCwRAIA8gC0EBa0EDdCILaiIQKAIEIAhGDQMgECgCAEH\u002F\u002F\u002F8fcSELDAELCyAJIAgQxwULIAkgARAMIAkgBykDABAMIAkgCikDABAMDE0LIAkgDSgCFCALaiABEB0gCSAHKQMAEAwgCSAKKQMAEAwMYAsgCEEIaykDACEBIAhBEGshBwJAAkAgCEEYaykDACI1Qv\u002F\u002F\u002F\u002F9vWARAIAkQIgwBCyAHKQMAIjZCgICAgHCDQoCAgICAf1IEQCAJEPwDDAELIAkgNhCIAiEIIDWnIgsoAhAiCkEwaiENIAogCCAKKAIYcUF\u002Fc0ECdGooAgAhCgJAA0AgCkUNASAIIA0gCkEDdGoiCkEEaygCAEcEQCAKQQhrKAIAQf\u002F\u002F\u002Fx9xIQoMAQsLIAkgCEH7IBC1AQwBCyAJIAsgCEEHEHciCA0BCyAJIAEQDCAJIAcpAwAQDAxMCyAIIAE3AwAgCSAHKQMAEAwMXwsgBkEFaiEMIAkgCEEQaykDACAGKAABIAhBCGsiBykDAEGHgAEQFUEATg1eDEoLIAZBBWohDCAIIQcgCSAIQQhrKQMAIAYoAAEQxgVBAE4NXQxhCyAIIQcgCSAIQQhrKQMAIAhBEGspAwAQxQVBAE4NXAxgCyAIQQhrIgcpAwAiAUL\u002F\u002F\u002F\u002F\u002Fb1ggAUKAgICAcINCgICAgCBScUUEQCAJIAhBEGspAwAgAUEBEIkCQQBIDWALIAkgARAMDFsLIAkgCEEIaykDACAIQRBrKQMAEPsDDFQLIAgCfyAKQdUARgRAQX0gCSAIQRBrKQMAEDAiBw0BGgxfCyAGQQVqIQwgBigAASEHQX4LQQN0aiEtQoCAgIAwITZBg84BIQYgCEEIayINKQMAIgEhOEKAgICAMCE3AkACQAJAIAwtAAAiD0EDcQ4CAgABC0KAgICAMCE4QYGaASEGIAEhNwwBC0KAgICAMCE4QYGqASEGIAEhNgsgLSkDACE5QeKRASELIAkgBxDEBSE1AkAgBkGAEHFFBEBB3ZEBIQsgBkGAIHFFDQELIAkgCyA1QeyWARCyASE1CwJ\u002FQX8gNUKAgICAcINCgICAgOAAUQ0AGkF\u002FIAkgAUE3IDVBARAVQQBIDQAaIAkgASA5EPsDIAkgOSAHIDggNyA2IAYgD0EEcXIQagshBiAJIA0pAwAQDCAMQQFqIQwgCCAKQdUARgR\u002FIAkgBxAQIAkgCEEQaykDABAMQX4FQX8LQQN0aiEHIAZBAE4NWSAGQR52QQJxDFoLIAZBBmohDCAIQQhrIg0pAwAhNyAIQRBrIQsgBigAASEPAkACQCAGLQAFQQFxBEBCgICAgCAhOCALKQMAIjZCgICAgHCDQoCAgIAgUQRAIAkpAzAiNkIgiKdBdEsNAgwDC0KAgICAMCE5QfwrIQcgNkKAgICAcFQNSyA2py0ABUEQcUUNSyAJIDZBPCA2QQAQESI4QoCAgIBwgyIBQoCAgIAgUQ0CIAFCgICAgOAAUQ1NIDhCgICAgHBaDQJB1sEAIQcMTAsgCSgCKCkDCCI4QiCIp0F1TwRAIDinIgcgBygCAEEBajYCAAsgCSkDMCI2QiCIp0F1SQ0BCyA2pyIHIAcoAgBBAWo2AgALQoCAgIDgACE5IAkgOBBBIgFCgICAgHCDQoCAgIDgAFENSiA3pyIHLQARQTBxDUBCgICAgOAAITUgCSA2QQ0QRyI5QoCAgIBwg0KAgICA4ABRDUdCgICAgDAhNyAJIDkgByATIBQQwwUiNUKAgICAcINCgICAgOAAUQ1HIAkgNSABEPsDIDVCgICAgHBaBEAgNaciECAQLQAFQRByOgAFCyAJIDVBMCAHMwEsQQEQFRoCQCAKQdcARgRAIAkgNSAIQRhrKQMAEMUFQQBIDUkMAQsgCSA1IA8QxgVBAEgNSAsgNUIgiKdBdU8EQCA1pyIHIAcoAgBBAWo2AgALIAkgAUE9IDVBg4ABEBVBAEgNRyABQiCIp0F1TwRAIAGnIgcgBygCAEEBajYCAAsgCSA1QTwgAUGAgAEQFUEASA1HIAkgOBAMIAkgNhAMIAsgNTcDACANIAE3AwAMUgsgCSAIQRBrIgopAwAgCEEIayIHKQMAEE4hASAJIAopAwAQDCAKIAE3AwAgAUKAgICAcINCgICAgOAAUg1XDEMLIAhBCGsiByAJIAhBEGspAwAgBykDABBOIgE3AwAgCCEHIAFCgICAgHCDQoCAgIDgAFINVgxaCyAIQQhrKQMAIQEgCEEQaykDACI1QoCAgIBwg0KAgICAMFEEQCAJIAEQMCIHRQ1aIAkgBxDAAiAJIAcQEAxaCyABQiCIp0F1TwRAIAGnIgcgBygCAEEBajYCAAsgCSA1IAEQTiIBQoCAgIBwg0KAgICA4ABRDVkgCCABNwMAIAhBCGohBwxVCyAJIAhBCGsiDSkDABAwIgpFDVggCSAIQRBrIgcpAwAgCiAIQRhrIgspAwBBABARIQEgCSAKEBAgAUKAgICAcINCgICAgOAAUQ1YIAkgDSkDABAMIAkgBykDABAMIAkgCykDABAMIAsgATcDAAxUCyAJIAhBGGsiBykDACAIQRBrKQMAIAhBCGspAwBBgIACEM8BIS4gCSAHKQMAEAwgLkEATg1TDD8LIAkoAhAoAowBIQoCfwJAIAhBGGsiBykDACI1QoCAgIBwg0KAgICAMFEEQAJAIApFDQAgCi0AKEEBcUUNACAJIAhBEGspAwAQMCIHRQ1aIAkgBxDAAiAJIAcQEAxaCyAJKQPAASI1QiCIp0F1TwRAIDWnIgYgBigCAEEBajYCAAsgByA1NwMADAELIApFDQBBgIAGIAooAihBAXENARoLQYCAAgshBiAJIDUgCEEQaykDACAIQQhrKQMAIAYQzwEhBiAJIAcpAwAQDCAGQQBODVIgBkEedkECcQxTCyAIQRhrIgopAwBC\u002F\u002F\u002F\u002F\u002F29YDU0gCSAIQRBrIg0pAwAQMCILRQ1VIAkgCikDACALIAhBCGspAwAgCEEgayIHKQMAQYCAAhDQASEGIAkgCxAQIAkgBykDABAMIAkgCikDABAMIAkgDSkDABAMIAZBAE4NUSAGQR52QQJxDFILIAhBGGspAwAhNSAIQRBrKQMAIgFCIIinQXVPBEAgAaciByAHKAIAQQFqNgIACyAJIDUgASAIQQhrIgcpAwBBh4ABEJQBQQBODVAMPAsgCEEQayINKQMAIjZCgICAgBBaBEAgCUH04QBBABA6DFQLIAkgCEEIayIHKQMAIgFBzAEgAUEAEBEiAUKAgICAcINCgICAgOAAUQ1TIAFBNUEBEIIEIQsgCSABEAwgCSAHKQMAQQAQywEiAUKAgICAcINCgICAgOAAUQ1TIAkgAUHrACABQQAQESI1QoCAgIBwg0KAgICA4ABRBEAgCSABEAwMVAsgNqchCgJAAkAgC0UNACA1QTZBABCCBEUNACAHKQMAIjYgDkHgAGogDkGAAWoQjwFFDQAgCSAOQZwBaiA2EMoBDT8gDigCnAEgDigCgAFHDQAgCEEYayEPQQAhCwNAIAsgDigCgAFPDQIgDykDACE3IA4oAmAgC0EDdGopAwAiNkIgiKdBdU8EQCA2pyIQIBAoAgBBAWo2AgALIAkgNyAKIDZBBxCTASEvIAtBAWohCyAKQQFqIQogL0EATg0ACww\u002FCyAIQRhrIQsDQCAJIAEgNSAOQZwBahCRASI2QoCAgIBwg0KAgICA4ABRDT8gDigCnAENASAJIAspAwAgCiA2QQcQkwFBAEgNPyAKQQFqIQoMAAsACyANIAqtNwMAIAkgARAMIAkgNRAMIAkgBykDABAMDE8LIAZBAmohDCAIIQcgCSAIIAYtAAEiCkF\u002FcyILQQN0QWByaikDACAIIAtBAXRBQHJBeHFqKQMAIAggCkEFdkF\u002Fc0EDdGopAwBBABDBBUUNTgxSCwJAIAhBCGsiBykDACIBQiCIpyILIAhBEGsiCikDACI1QiCIpyINckUEQCABxCA1xHwiAUKAgICACHxCgICAgBBUDQEMPAsgDUEHa0FtSyALQQdrQW1Lcg07IApCgICAgMB+IDVCgICAgMCBgPz\u002FAHy\u002FIAFCgICAgMCBgPz\u002FAHy\u002FoL0iAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGzcDAAxOCyAKIAFC\u002F\u002F\u002F\u002F\u002Fw+DNwMADE0LIAZBAmohDAJAIAhBCGsiBykDACI1IBEgBi0AAUEDdGoiCCkDACIBhEL\u002F\u002F\u002F\u002F\u002FD1gEQCA1xCABxHwiNUKAgICACHxC\u002F\u002F\u002F\u002F\u002Fw9WDQEgCCA1Qv\u002F\u002F\u002F\u002F8PgzcDAAxOCyABQoCAgIBwg0KAgICAkH9SDQAgCSA1QQIQkgEiNUKAgICAcINCgICAgOAAUQ05IAgpAwAiAUIgiKdBdU8EQCABpyIKIAooAgBBAWo2AgALIAkgASA1ELYCIgFCgICAgHCDQoCAgIDgAFENOSAJIAggARAdDE0LIAFCIIinQXVPBEAgAaciCiAKKAIAQQFqNgIACyAOIAE3AyAgDiAHKQMANwMoIAkgJxC\u002FBQ04IAkgCCAOKQMgEB0MTAsgCEEIayIHKQMAIgFCIIinIg0gCEEQayILKQMAIjVCIIinIg9yRQRAIDXEIAHEfSIBQoCAgIAIfEKAgICAEFoNBCALIAFC\u002F\u002F\u002F\u002F\u002Fw+DNwMADEwLIA9BB2tBbUsgDUEHa0FtS3INAyALQoCAgIDAfiA1QoCAgIDAgYD8\u002FwB8vyABQoCAgIDAgYD8\u002FwB8v6G9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhs3AwAMSwsCQAJ8IAhBCGsiBykDACIBQiCIpyINIAhBEGsiCykDACI1QiCIpyIPckUEQCABxCA1xH4iNkKAgICACHxCgICAgBBaBEAgNrkMAgsgNlBFIAEgNYRCgICAgAiDUHINAkQAAAAAAAAAgAwBCyAPQQdrQW1LIA1BB2tBbUtyDQQgNUKAgICAwIGA\u002FP8AfL8gAUKAgICAwIGA\u002FP8AfL+iCyE8IAtCgICAgMB+IDy9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhs3AwAMSwsgCyA2Qv\u002F\u002F\u002F\u002F8PgzcDAAxKCyAIQQhrIgcpAwAiASAIQRBrIgspAwAiNYRC\u002F\u002F\u002F\u002F\u002Fw9WDQEgFC0AKEEEcQ0BIAsCfiA1p7cgAae3oyI8vSIBAn8gPJlEAAAAAAAA4EFjBEAgPKoMAQtBgICAgHgLIga3vVEEQCAGrQwBC0KAgICAwH4gAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGws3AwAMSQsgCEEIayIHKQMAIgEgCEEQayILKQMAIjWEQv\u002F\u002F\u002F\u002F8PVg0AIDWnIg1BAEgNACABpyIPQQBMDQAgCyANIA9wrTcDAAxIC0IAITYjAEEQayIHJAACfwJAAkACQAJ8AkACQAJAIAhBEGsiCykDACI1QiCIp0EHa0FtSyAIQQhrIg0pAwAiAUIgiKdBB2tBbUtyRQRAIAcgAUKAgICAwIGA\u002FP8AfDcDACAHIDVCgICAgMCBgPz\u002FAHw3AwgMAQsgCSA1EGUiNUKAgICAcINCgICAgOAAUQ0FIAkgARBlIgFCgICAgHCDQoCAgIDgAFEEQCA1IQEMBgtBByABQiCIpyIPIA9BB2tBbkkbIg9BByA1QiCIpyIQIBBBB2tBbkkbIhByRQRAIAGnIQ0gNachDyALAn4CQAJAAkACQAJAAkACQAJAIApBmwFrDgYAAQILBAMLCyABxCA1xH4iAUIAUg0EIA0gD3JBAE4NBSALQoCAgIDA\u002Fv8DNwMADA0LIAtCgICAgMB+IA+3IA23o70iAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGzcDAAwMCyANQQBKIA9BAE5xRQRAIAsCfiAPtyANtxCZBCI8vSIBAn8gPJlEAAAAAAAA4EFjBEAgPKoMAQtBgICAgHgLIgq3vVEEQCAKrQwBC0KAgICAwH4gAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGws3AwAMDAsgDyANcK0hAQwCCyAPtyE8IAsCfgJ8IA23Ij29QoCAgICAgID4\u002FwCDQoCAgICAgID4\u002FwBRBEBEAAAAAAAA+H8gPJlEAAAAAAAA8D9hDQEaCyA8ID0QowMLIjy9IgECfyA8mUQAAAAAAADgQWMEQCA8qgwBC0GAgICAeAsiCre9UQRAIAqtDAELQoCAgIDAfiABQoCAgIDAgYD8\u002FwB9IAFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbCzcDAAwKCyA1xCABxH0hAQsgAUKAgICACHxC\u002F\u002F\u002F\u002F\u002Fw9WDQEgASE2CyA2Qv\u002F\u002F\u002F\u002F8PgwwBC0KAgICAwH4gAbm9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLNwMADAULIBBBdkcgD0F2R3FFBEAgCSAKIAsgNSABIAkoAhAoAqwCESMADQcMBQsgCSAHQQhqIDUQbQ0FIAkgByABEG0NBgsCQAJAAkACQCAKQZsBaw4GAAECBAUDBAsgBysDCCAHKwMAogwFCyAHKwMIIAcrAwCjDAQLIAcrAwggBysDABCZBAwDCyAHKwMIITwgBysDACI9vUKAgICAgICA+P8Ag0KAgICAgICA+P8AUQRARAAAAAAAAPh\u002FIDyZRAAAAAAAAPA\u002FYQ0DGgsgPCA9EKMDDAILEAEACyAHKwMIIAcrAwChCyE8IAtCgICAgMB+IDy9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhs3AwALQQAMAgsgCSABEAwLIAtCgICAgDA3AwAgDUKAgICAMDcDAEF\u002FCyEwIAdBEGokACAwDUsgCEEIayEHDEcLIAhBBGsoAgAiB0UgB0EHa0FuSXINQCAIIQcgCSAIQY4BEOEBRQ1GDEoLAkACfCAIQQhrIgcpAwAiAUIgiKciCkUEQEQAAAAAAAAAgCABpyIGRQ0BGkQAAAAAAADgQSAGQYCAgIB4Rg0BGiAHQgAgAX1C\u002F\u002F\u002F\u002F\u002Fw+DNwMADEILIApBB2tBbUsNASABQoCAgIDA\u002Fv8Dfb8LITwgB0KAgICAwH4gPL0iAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGzcDAAxACyAIIQcgCSAIQY0BEOEBRQ1FDEkLIAhBCGsiBykDACIBQv\u002F\u002F\u002F\u002F8PViABQv\u002F\u002F\u002F\u002F8HUXJFBEAgByABQgF8Qv\u002F\u002F\u002F\u002F8PgzcDAAw\u002FCyAIIQcgCSAIQZABEOEBRQ1EDEgLIAhBCGsiBykDACIBQv\u002F\u002F\u002F\u002F8PViABQoCAgIAIUXJFBEAgByABQgF9Qv\u002F\u002F\u002F\u002F8PgzcDAAw+CyAIIQcgCSAIQY8BEOEBRQ1DDEcLIAkgCEEIayIHKQMAEGUiAUKAgICAcINCgICAgOAAUQRAIAdCgICAgDA3AwAMRwsgByABNwMAIAFCIIinQXVPBEAgAaciByAHKAIAQQFqNgIACyAIIAE3AwAgCSAIQQhqIgcgCkECaxDhAUUNQgxGCyAGQQJqIQwgESAGLQABQQN0aiIHKQMAIgFC\u002F\u002F\u002F\u002F\u002Fw9WIAFC\u002F\u002F\u002F\u002F\u002FwdRckUEQCAHIAFCAXxC\u002F\u002F\u002F\u002F\u002Fw+DNwMADDwLIAFCIIinQXVPBEAgAaciCiAKKAIAQQFqNgIACyAOIAE3A2AgCSAiQZABEOEBDUUgCSAHIA4pA2AQHQw7CyAGQQJqIQwgESAGLQABQQN0aiIHKQMAIgFC\u002F\u002F\u002F\u002F\u002Fw9WIAFCgICAgAhRckUEQCAHIAFCAX1C\u002F\u002F\u002F\u002F\u002Fw+DNwMADDsLIAFCIIinQXVPBEAgAaciCiAKKAIAQQFqNgIACyAOIAE3A2AgCSAiQY8BEOEBDUQgCSAHIA4pA2AQHQw6CyAIQQhrIgcpAwAiAUL\u002F\u002F\u002F\u002F\u002FD1gEQCAHIAFC\u002F\u002F\u002F\u002F\u002Fw+FNwMADDoLIAghByMAQRBrIgokAAJ\u002FAkACQCAJIAhBCGsiCykDABBlIgFCgICAgHCDIjVCgICAgOAAUQ0AIDVCgICAgOB+UQRAIAkgC0GWASABIAkoAhAoAqgCER8ADQEMAgsgCSAKQQxqIAEQlQENACALIAo1AgxC\u002F\u002F\u002F\u002F\u002Fw+FNwMADAELIAtCgICAgDA3AwBBfwwBC0EACyExIApBEGokACAxRQ0\u002FDEMLIAhBCGsiBykDACIBIAhBEGsiCikDACI1hEL\u002F\u002F\u002F\u002F\u002FD1gEQCAKIDWnIAGndK03AwAMPwsgCSAIQaEBELUCRQ0+DEILIAhBCGsiBykDACIBIAhBEGsiCikDACI1hEL\u002F\u002F\u002F\u002F\u002FD1gEQCAKAn4gNacgAad2IgZBAE4EQCAGrQwBC0KAgICAwH4gBri9IgFCgICAgMCBgPz\u002FAH0gAUKAgICAgICA+P8AVhsLNwMADD4LIwBBEGsiCiQAIAhBCGsiDSkDACEBAn8CQAJAIAkgCEEQayILKQMAEGUiNUKAgICAcIMiNkKAgICA4ABRDQAgCSABEGUiAUKAgICAcIMiN0KAgICA4ABRBEAgNSEBDAELIDZCgICAgOB+UiA3QoCAgIDgflJxDQEgCUGlgAFBABASIAkgNRAMCyAJIAEQDCALQoCAgIAwNwMAIA1CgICAgDA3AwBBfwwBCyAJIApBDGogNRCVARogCSAKQQhqIAEQlQEaIAsCfiAKKAIMIAooAgh2IgtBAE4EQCALrQwBC0KAgICAwH4gC7i9IgFCgICAgMCBgPz\u002FAH0gAUKAgICAgICA+P8AVhsLNwMAQQALITIgCkEQaiQAIDJFDT0MQQsgCEEIayIHKQMAIgEgCEEQayIKKQMAIjWEQv\u002F\u002F\u002F\u002F8PWARAIAogNacgAad1rTcDAAw9CyAJIAhBogEQtQJFDTwMQAsgCEEIayIHKQMAIgEgCEEQayIKKQMAIjWEQv\u002F\u002F\u002F\u002F8PWARAIAogASA1gzcDAAw8CyAJIAhBrgEQtQJFDTsMPwsgCEEIayIHKQMAIAhBEGsiCikDAIQiAUL\u002F\u002F\u002F\u002F\u002FD1gEQCAKIAE3AwAMOwsgCSAIQbABELUCRQ06DD4LIAhBCGsiBykDACIBIAhBEGsiCikDACI1hEL\u002F\u002F\u002F\u002F\u002FD1gEQCAKIAEgNYU3AwAMOgsgCSAIQa8BELUCRQ05DD0LIAhBCGsiBykDACIBIAhBEGsiCikDACI1hEL\u002F\u002F\u002F\u002F\u002FD1gEQCAKIDWnIAGnSK1CgICAgBCENwMADDkLIAkgCEGkARCEA0UNOAw8CyAIQQhrIgcpAwAiASAIQRBrIgopAwAiNYRC\u002F\u002F\u002F\u002F\u002Fw9YBEAgCiA1pyABp0ytQoCAgIAQhDcDAAw4CyAJIAhBpQEQhANFDTcMOwsgCEEIayIHKQMAIgEgCEEQayIKKQMAIjWEQv\u002F\u002F\u002F\u002F8PWARAIAogNacgAadKrUKAgICAEIQ3AwAMNwsgCSAIQaYBEIQDRQ02DDoLIAhBCGsiBykDACIBIAhBEGsiCikDACI1hEL\u002F\u002F\u002F\u002F\u002FD1gEQCAKIDWnIAGnTq1CgICAgBCENwMADDYLIAkgCEGnARCEA0UNNQw5CyAIQQhrIgcpAwAiASAIQRBrIgopAwAiNYRC\u002F\u002F\u002F\u002F\u002Fw9YBEAgCiA1pyABp0atQoCAgIAQhDcDAAw1CyAJIAhBABC+BUUNNAw4CyAIQQhrIgcpAwAiASAIQRBrIgopAwAiNYRC\u002F\u002F\u002F\u002F\u002Fw9YBEAgCiA1pyABp0etQoCAgIAQhDcDAAw0CyAJIAhBARC+BUUNMww3CyAIQQhrIgcpAwAiASAIQRBrIgYpAwAiNYRC\u002F\u002F\u002F\u002F\u002Fw9YBEAgBiA1pyABp0atQoCAgIAQhDcDAAwzCyAJIAhBABC9BQwyCyAIQQhrIgcpAwAiASAIQRBrIgYpAwAiNYRC\u002F\u002F\u002F\u002F\u002Fw9YBEAgBiA1pyABp0etQoCAgIAQhDcDAAwyCyAJIAhBARC9BQwxCyAIQQhrIgcpAwAiAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAJQZ\u002FjAEEAEBIMNQsgCSAIQRBrIg0pAwAiNRAwIgpFDTQgCSABIAoQbiELIAkgChAQIAtBAEgNNCAJIDUQDCAJIAEQDCANIAtBAEetQoCAgIAQhDcDAAwwCyAIQRBrIg0pAwAiAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAJQZ\u002FjAEEAEBIMNAsgCEEIayIHKQMAIjVCgICAgHBaBEAgCSABIDUQzgUiC0EASA00DBsLIAkgNRAwIgpFDTMgAacoAhAiBkEwaiELIAYgBigCGCAKcUF\u002Fc0ECdGooAgAhCANAIAhFBEBBACEIDBsLIAsgCEEDdGoiBkEIayEIIAZBBGsoAgAgCkYNGiAIKAIAQf\u002F\u002F\u002Fx9xIQgMAAsACyAJIAhBEGsiCikDACIBIAhBCGsiBykDACI1EOIFIgtBAEgNMiAJIAEQDCAJIDUQDCAKIAtBAEetQoCAgIAQhDcDAAwuCyAJIAhBCGsiBikDACIBEPoDIQcgCSABEAwgBiAJIAcQKTcDAAwnCyAIQRBrIg0pAwAhASAJIAhBCGsiBykDACI1EDAiCkUNMCAJIAEgCkGAgAIQzQEhCyAJIAoQECALQQBIDTAgCSABEAwgCSA1EAwgDSALQQBHrUKAgICAEIQ3AwAMLAsgBkEFaiEMIAkgCSkDwAEgBigAAUEAEM0BIgdBAEgNLyAIIAdBAEetQoCAgIAQhDcDACAIQQhqIQcMKwsgCEEIayIHKQMAIgFC\u002F\u002F\u002F\u002F\u002F29WDSQgCSABECAiAUKAgICAcINCgICAgOAAUQ0uIAkgBykDABAMIAcgATcDAAwkCyAIQQhrIgcpAwAiAUIgiKdBCGoiCkEITUEAQQEgCnRBgwJxGw0jIAkgARCJBCIBQoCAgIBwg0KAgICA4ABRDS0gCSAHKQMAEAwgByABNwMADCMLIAhBEGspAwBCgICAgBCEQoCAgIBwg0KAgICAMFEEQCAJQfIJQQAQEgwtCyAIQQhrIgcpAwAiAUIgiKdBCGoiCkEITUEAQQEgCnRBgwJxGw0iIAkgARCJBCIBQoCAgIBwg0KAgICA4ABRDSwgCSAHKQMAEAwgByABNwMADCILIAZBCmohDCAGLQAJIQsgBigABSEPIAkgCEEIayIHKQMAIgEgBigAASINEG4iEEEASA0rAkAgEEUNACALBEBBACELIAkgAUHWASABQQAQESI1QoCAgIBwg0KAgICA4ABRDS0gNUKAgICAcFoEQCAJIAkgNSANIDVBABARECchCwsgCSA1EAwgC0EASA0tIAsNAQsCQAJAAkACQAJAAkACQCAKQfQAaw4GAAECAwQFBgsgCSABIA0gAUEAEBEiAUKAgICAcINCgICAgOAAUQ0yIAkgByABEB0MBQsgCSABIA0gCEEQayIIKQMAIAFBgIACENABITMgCSAHKQMAEAwgM0EATg0EDDELIAkgASANQQAQzQEiCkEASA0wIAkgBykDABAMIAcgCkEAR61CgICAgBCENwMADAMLIAggCSANEFI3AwAgCEEIaiEIDAILIAkgASANIAFBABARIgFCgICAgHCDQoCAgIDgAFENLiAIIAE3AwAgCEEIaiEIDAELIAkgASANIAFBABARIgFCgICAgHCDQoCAgIDgAFENLSAJIAcpAwAQDCAHQoCAgIAwNwMAIAggATcDACAIQQhqIQgLIAwgD2pBBWshDAwiCyAJIAcpAwAQDAwnCyAIQQhrKQMAIjVCgICAgHCDQoCAgIAwUQ0PDAULIAhBCGspAwAiNUKAgICAcINCgICAgCBRDQ4MBAsgCSAIQQhrKQMAIjUQ+gNBxgBGDQEMAwsgCSAIQQhrKQMAIjUQ+gNBG0cNAgsgCSA1EAwMCwsgCEEIaykDACI1QoCAgIBgg0KAgICAIFENCgsgCSA1EAwgCEEIa0KAgICAEDcDAAwaCyASKAIUIQcgDiAKNgIEIA4gB0F\u002FcyAMajYCACAJQYUQIA4QOgwjCyAGQQNqIQwMGAtCAyE1DCMLQgAhNQwiC0IBITUMIQtCAiE1DCALIAhBCGsiCCkDACE1DCALIAsgDigCYDYCFCAOQYABaiEGDA0LQaj2AEGo7ABBgfsAQasiEAAACyAIQQhrQoGAgIAQNwMADBALIAkgChAQIAhBAEchCwsgCSABEAwgCSA1EAwgDSALQQBHrUKAgICAEIQ3AwAMFAsgByEIDBcLIAkgCBC\u002FBUUNEgwWCyAJIAFBARCQARogCSABEAwgCSA1EAwMFQsgASE5DAILQoCAgIAwITgLIAkgB0EAEBILIAkgNhAMIAkgOBAMIAkgNxAMIAkgORAMIAkgNRAMIAtCgICAgDA3AwAgDUKAgICAMDcDAAwRCyAJIAcpAwAQDCAHQoCAgIAwNwMAIApBAEgNECAJIDUQDEKAgICAMCE1CyAIIAE3AwggCCA1NwMAIAhBEGohBwwLCyALIAYoAgA2AgwLIA8gATcDAAwDCyANLQAFQQFxDQELIAkgB0GDjwEQtQEMCwsgCSgCyAEoAhAiCkEwaiELIAogCigCGCAHcUF\u002Fc0ECdGooAgAhCgNAIApFDQEgCyAKQQN0aiINQQhrIQogByANQQRrKAIARwRAIAooAgBB\u002F\u002F\u002F\u002FH3EhCgwBCwsgCg0BCyAIIQcMBQsgCSAHEMwFDAgLIAkQIgwHCyAJIAEQDAsgCEKAgICA4AA3AwAgCEEIaiEIDAULIAsgBDYCKCALIAo2AiQgCSkDqAEiNUIgiKdBdU8EQCA1pyIGIAYoAgBBAWo2AgALIAkgAUHMASA1QQMQFRogCSABQc8AQoCAgIAwIAkpA7ABIjUgNUGAMBBqGiAIIAE3AwAgCEEIaiEHC0EACyE0IAchCCAMIQYgNEUNAQsLIAchCAtBASEHDAULAkAgFikDgAEiNUKAgICAcFQNACA1pyIGLwEGQQNHDQAgBigCECIGQTBqIQcgBiAGKAIYQX9zQQJ0QaR+cmooAgAhBgJAA0AgBkUNASAHIAZBA3RqIgpBCGshBiAKQQRrKAIAQTZHBEAgBigCAEH\u002F\u002F\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\u002FAU0EQCAAQXhxQezeBGohAQJ\u002FQcTeBCgCACIEQQEgAEEDdnQiAHFFBEBBxN4EIAAgBHI2AgAgAQwBCyABKAIICyEAIAEgAzYCCCAAIAM2AgwgAyABNgIMIAMgADYCCA8LQR8hAiAAQf\u002F\u002F\u002FwdNBEAgAEEmIABBCHZnIgFrdkEBcSABQQF0a0E+aiECCyADIAI2AhwgA0IANwIQIAJBAnRB9OAEaiEHAn8CQAJ\u002FQcjeBCgCACIBQQEgAnQiBHFFBEBByN4EIAEgBHI2AgBBGCECIAchBEEIDAELIABBGSACQQF2a0EAIAJBH0cbdCECIAcoAgAhBANAIAQiASgCBEF4cSAARg0CIAJBHXYhBCACQQF0IQIgASAEQQRxakEQaiIHKAIAIgQNAAtBGCECIAEhBEEICyEAIAMiAQwBCyABKAIIIgQgAzYCDEEIIQIgAUEIaiEHQRghAEEACyEFIAcgAzYCACACIANqIAQ2AgAgAyABNgIMIAAgA2ogBTYCAEHk3gRB5N4EKAIAQQFrIgBBfyAAGzYCAAsLqAEAAkAgAUGACE4EQCAARAAAAAAAAOB\u002FoiEAIAFB\u002Fw9JBEAgAUH\u002FB2shAQwCCyAARAAAAAAAAOB\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\u002FIQMMAQtBACEDCyAEQRBqJAAgAwt6AQN\u002FIAAoAkAiAQRAIAEoArwBIQIgAEG1ARANIAAgAkH\u002F\u002FwNxEBQgASABKALMASIDIAJBA3RqKAIAIgA2ArwBA0ACQCAAQQBIBEBBfyEADAELIAMgAEEDdGoiAigCBCIAQQBODQAgAigCACEADAELCyABIAA2AsABCwvgKgERfyMAQZABayIEJAAgACgCACENAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAhAiAkGDf0cNACAAKAIoDQEgAEEAEHNBOkcEQCAAKAIQIQIMAQsgDSAAKAIgEBYhCSAAKAJAQbACaiEDAkADQCADKAIAIgNFDQEgAygCBCAJRw0ACyAAQf7VAEEAEBMMGAsgABAPDRcgAEE6ECgNFyAAKAIQIgJBxwBqQQNJDQAgABAtIQUgBCAAKAJAIgIoArACNgJQIAIgBEHQAGo2ArACIARBfzYCZCAEQv\u002F\u002F\u002F\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\u002F\u002F\u002F\u002F8fNwJcIAQgAjYCWCAEIAk2AlQgAygCvAEhAyAEQQA2AmwgBCADNgJoIABB+wAQKA0aQX8hBQNAIAFBAEghAwNAAkACQAJAIAAoAhAiB0HBAGoOAgABAgsgAwR\u002FQX8FIABB7ABBfxAYCyEDIAAgARAaA0AgABAPDR8gAEEREA0gABCLAQ0fIABBOhAoDR8gAEGsARANIAAoAhBBv39GBEAgAEHrACADEBghAwwBCwsgAEHqAEF\u002FEBghASAAIAMQGgwDCyAAEA8NHSAAQToQKA0dIAVBAE4EQEGrGyEDDBMLIAFBAEgEQCAAQewAQX8QGCEBCyAAQbYBEA0gAEEAEDggACgCQCgChAJBBGshBQwCCyAHQf0ARwRAIAMEQEGCGyEDDBMLIABBBxDbAUUNAQwdCwsLIABB\u002FQAQKA0aAkAgBUEATgRAIAAoAkAiAygCgAIgBWogATYAACADKAKkAiABQRRsaiAFQQRqNgIEDAELIAAgARAaCyAAIAIQGiAAQQ4QDSAAKAJAIgEgASgCsAIoAgA2ArACDBcLIAAQwwEgABAPDRkgABAtIQIgABAtIQEgABAtIQMgABAtIQUgAEHtACACEBgaIAQgACgCQCIHKAKwAjYCUCAHIARB0ABqNgKwAiAEQv\u002F\u002F\u002F\u002F8fNwJcIARCgICAgHA3AlQgBygCvAEhByAEQQA2AmwgBCAHNgJoIAQgAzYCZCAAEOkCDRkgACgCQCIHIAcoArACKAIANgKwAiAAEOgCBEAgAEEOEA0gAEEGEA0gAEHuACADEBgaIABBDhANIABB7AAgBRAYGgsCQAJAAkAgACgCEEE9ag4CABABCyAAEA8NGyAAEHQaIAAgAhAaIAAoAhBB+wBGBEAgAEEOEA0MDwsgAEEoECgNGyAAKAIQIgJB+wBGIAJB2wBGcg0BAkAgAkGDf0YEQCAAKAIoRQ0BCyAAQfblAEEAEBMMHAsgDSAAKAIgEBYhAgJAIAAQD0UEQCAAIAJBQxCjAkEATg0BCyANIAIQEAwcCyAAQbkBEA0gACACEDggACAAKAJALwG8ARAUDA0LIABBvAxBABATDBoLIABBUUEAQQFBf0EBEMIBQQBODQsMGQsgABAPRQ0ZDBgLIAAoAkAtAG5BAXEEQCAAQcnGAEEAEBMMGAsgABAPDRcgABD4AQ0XIAAQdBogACAAKAJAQdUAQQAQnQEiAUEASA0XIABB8QAQDSAAQdkAEA0gACABQf\u002F\u002FA3EQFCAAEMMBIAAQpAINFwwUCyABQQFxRQ0BIAFBBHENByAAQQAQc0EqRg0BDAcLIAAoAigEQCAAENwBDBYLQVEhAgJAIAAgARDKAw4CABQWCyAAQYYBEEVFDQQgAEEBEHNBRUcNBCABQQRxDQYLIABBhBJBABATDBQLIAFBBHFFBEAgAEHIEUEAEBMMFAtBfyEBQQAhAyAAQQBBABDsAkUNFQwWCyAAEA8NEiAAEK8BRQ0TDBILIAQgACgCACAEQdAAaiAAKAIgEIEBNgIQIABB+yogBEEQahATDBELIAAQiwENEAJAIAAoAkAoAqQBQQBOBEAgAEHZABANIAAgACgCQC8BpAEQFAwBCyAAQQ4QDQsgABCvAUUNEQwQCyAAQYvIAEEAEBMMDwtBACEDIABBAUEAIAAoAhggACgCFBDEAQ0ODBALIABBKRAoDQ0LIABB7QAgARAYGiAAEHQaIAQgACgCQCICKAKwAjYCUCACIARB0ABqNgKwAiAEQv\u002F\u002F\u002F\u002F8fNwJcIARCgICAgHA3AlQgAigCvAEhAiAEQQA2AmwgBCACNgJoIAQgAzYCZCAAEOkCDQwgACgCQCICIAIoArACKAIANgKwAiAAENoBIAAQ2gEgABDoAgRAIABBDhANIABBBhANIABB7gAgAxAYGiAAQQ4QDSAAQewAIAUQGBoLIAEhAgsgACACEBogAEHuACADEBgaIABBLxANIAAgAxAaIAAoAhBBREYEQCAAEA8NDCAEIAAoAkAiAigCsAI2AlAgAiAEQdAAajYCsAIgBEF\u002FNgJkIARC\u002F\u002F\u002F\u002F\u002Fy83AlwgBEKAgICAcDcCVCACKAK8ASEDQQAhASAEQQA2AmwgBCADNgJoIAIoAqQBQQBOBEAgACgCACACQdIAEEwiAUEASA0NIABB2AAQDSAAIAAoAkAvAaQBEBQgAEHZABANIAAgAUH\u002F\u002FwNxEBQgABDDAQsgABDpAg0MIAAoAkAiAygCpAFBAE4EQCAAQdgAEA0gACABQf\u002F\u002FA3EQFCAAQdkAEA0gACAAKAJALwGkARAUIAAoAkAhAwsgAyADKAKwAigCADYCsAILIABB7wAQDSAAIAUQGgwMCyAAIANBABATDAoLIABB7AAgAxAYGiAFRQ0AIAAQDw0JCyAAEK8BRQ0JDAgLIAEhAgsgABAPDQYgAEEAIAJBABDMAw0GCyAAIAAoAkAoArwBIAYQoQILIABBOxAoDQQgABAtIQUgABAtIQMgABAtIQEgABAtIQcgBCAAKAJAIgIoArACNgIcIAIgBEEcajYCsAIgBEKAgICAcDcCLCAEIAM2AiggBCAHNgIkIAQgCTYCICACKAK8ASECIARBADYCOCAEIAI2AjQgASECIAAoAhBBO0cEQCAAIAUQGiAAEIsBDQUgAEHqACAHEBgaIAUhAgsgAEE7ECgNBAJAIAAoAhBBKUYEQCAEIAI2AihBACEFIAIhAwwBCyAAQewAIAEQGBogACgCQCgChAIhBSAAIAMQGiAAEIsBDQUgAEEOEA0gASACRg0AIABB7AAgAhAYGgsgAEEpECgNBCAAKAJAKAKEAiEKIAAgARAaIAAQpAINBCAAIAAoAkAoArwBIAYQoQICQCABIAJGIAIgA0ZyRQRAIAAoAkAiAUGAAmoiBiABKAKEAiIIIAogBWsiAmoQvAEaIAYgASgCgAIgBWogAhByGiABKAKAAiAFakGzASACECwaIAAoAkAiAiABKAKEAkEFazYCmAIgAyACKAKsAiIBIAEgA0gbIQYgCCAFayEIA0AgAyAGRg0CIAIoAqQCIANBFGxqIgsoAgQiASAFSCABIApOckUEQCALIAEgCGo2AgQLIANBAWohAwwACwALIABB7AAgAxAYGgsgACAHEBogACgCQCIBIAEoArACKAIANgKwAgwBCyAAQewAIBAQGBogACgCQCgChAIhDCAAIA8QGgJAIAAoAhAiAkE9Rw0AAkAgABAPRQRAIABBABCtAUUNAQsgCCAGEBAMBQsgBkUNACAAQbkBEA0gACAGEBcgACALLwG8ARAUCyAIIAYQEAJAAkACQCAAQcQAEEUiBgRAIARBATYCbCAEIAQoAmBBAmo2AmBB+MsAIQggAkE9Rg0BDAMLIAAoAhBBt39HDQEgAUUEQCAAQfSPAUEAEBMMBwsgAkE9Rw0CQYI\u002FIQggBUGxf0cNACALLQBuQQFxRSADQX9zcQ0CCyAEIAg2AgAgAEH4LiAEEBMMBQsgAEGTPUEAEBMMBAsgABAPDQMCQCAGBEAgABBTRQ0BDAULIAAQiwENBAsgACAAKAJAKAK8ASAOEKECIABB\u002FwBBgH8gARtB\u002FgAgBhtB\u002FwFxEA0gAEHsACAHEBgaIABBKRAoDQMgACgCQCICQYACaiIFIAIoAoQCIgggDCAKayIDahC8ARogBSACKAKAAiAKaiADEHIaIAIoAoACIApqQbMBIAMQLBogACgCQCIFIAIoAoQCQQVrNgKYAiAHIAUoAqwCIgIgAiAHSBshCyAIIAprIQggByEDA0AgAyALRwRAIAUoAqQCIANBFGxqIg8oAgQiAiAKSCACIAxOckUEQCAPIAIgCGo2AgQLIANBAWohAwwBCwsgACAQEBogABCkAg0DIAAgACgCQCgCvAEgDhChAiAAIAcQGgJ\u002FIAYEQCABRQRAIABBFBANIABBDhANIABBJBANIABBABAUIABBjAEQDSAAQYQBEA1BhQEMAgsgAEGCARANIABBABBYQYUBDAELIABBgQEQDUEOCyEDIABB6gAgEhAYGiAAQQ4QDSAAIBEQGiAAIAMQDSAAKAJAIgEgASgCsAIoAgA2ArACCyAAENoBDAMLIAFBBHENACAAQcMSQQAQEwwBCyAAEA8NAEEAIQMgAEEBIAJBABDMAw0AIAAQrwFFDQILQX8hAwwBC0EAIQMLIA0gCRAQIAMhAQsgBEGQAWokACABCzYBAX8jAEHQAGsiASQAIAEgACgCACABQRBqIAAoAiAQgQE2AgAgAEGnMyABEBMgAUHQAGokAAvKFgEMfyMAQRBrIhAkACAAKAJAIQcgACgCACELAkACQAJAIAFBAksNAAJAIAINAEEAIQIgAEGGARBFRQ0AIABBARBzQQpGDQBBfyEIIAAQDw0DQQIhAgtBfyEIIAAQDw0CIAAoAhAiDUEqRgRAIAAQDw0DIAAoAhAhDSACQQFyIQILAkACQAJAAkACQCANQSlqDgIBAgALIA1Bg39HDQMCQCAAKAIoDQAgAUECRyIJIAJBAXFFckUgACgCICIMQS1GcQ0AIAkgAkECcUUgDEEuR3JyDQMLIAAQ3AEMBgsgAUECRw0CIActAG5BAXFFDQEMAgsgAUECRw0BIAAoAkQNAQsgCyAAKAIgEBYhDCAAEA9FDQEMAgsgAUECRiAFQQJGcg0AIABByuYAQQAQEwwCCwJAAkACQCAHKAIgIghFIAFBAUtyDQAgBygCJEEBRw0AIAcgDBCgAiINRQ0AIA0oAgggBygCvAFHDQAgAEGl3QBBABATDAELQX8hDQJAIAFBAUcEQAwBCwJAIAINACAHLQBuQQFxDQAgByAMIAcoAsABQQAQyQNBAE4NACAHIAwQ9wFBgICAgHpxQYCAgIACRg0AIAxBzgBGBEAgBygCSA0BC0EBIQ8LAkAgCEUNACAHKAIkQQFLDQAgBygCvAEiCCAHKALwAUcNACAHIAwQoAIiCkUNASAKKAIIIAhHDQEgAEHeMkEAEBMMAgtBfyEIIAAgByAMQQRBAyACGxCdASINQQBIDQMLIAsgB0EAIAFBAUsgACgCDCAEEOoDIgcNAQsgCyAMEBBBfyEIDAILIAYEQCAGIAc2AgALIAAgBzYCQCAHIAw2AnAgByACRSABQQNJcTYCNEEAIQggAUEEayIEQQVNBEAgBEECdEH49AFqKAIAIQgLIAcgCDYCMCAHIAFBCUYiBDYCYCAHIAFBA0ciCiABQQdHIglxIg42AkwgByAONgJIAkAgCkUEQCAHIAcoAgQiBCgCUDYCUCAHIAQoAlQ2AlQgByAEKAJYNgJYIAcgBCgCXDYCXAwBCyAHQQE2AlAgCUUEQCAHQQA2AlwgB0KAgICAEDcCVAwBCyAHQQE2AlwgByAINgJYIAcgBDYCVAsgByACQf8BcSABQQh0cjsBbCABQX5xQQhGBEAgAEErEA0LAkACQAJAAkACQAJAIAFBCEYEQCAAEOsEIAdCATcCOCAHQTxqIQQgB0E4aiEKDAELIAdCATcCOCAHQTxqIQQgB0E4aiEKIAFBA0YEQCAAKAIQQYN\u002FRw0BIAAoAigNBSALIAcgACgCIBDIA0EASA0GIAdBATYCjAEMAgsgAUEHRg0CCwJAIAAoAhBBKEYEQCAAIBBBDGpBABCcARogEC0ADEEEcQRAIARBATYCAAsgABAPRQ0BDAYLIABBKBAoDQULIAQoAgAEQEF\u002FIQggB0F\u002FNgK8ASAAEHRBAEgNBwtBACEJAkADQCAAKAIQIghBKUYNASAIQaV\u002FRyIORQRAIApBADYCACAAEA8NByAAKAIQIQgLAkACQAJAAkAgCEGDf0cEQCAIQfsARyAIQdsAR3ENBCAKQQA2AgACQCAORQRAIABBDRANIAcoAogBIQgMAQsgCyAHQQAQyAMhCCAAQdsAEA0LIAAgCEH\u002F\u002FwNxEBQgAEFRQbF\u002FIAQoAgAbQQFBAUF\u002FQQEQwgEiCEEASA0LIAggCXIhEkEBIQkgEkUEQCAHIAcoAowBQQFqNgKMAUEAIQkLIA5FDQEMAwsgACgCKA0JIAAoAiAiCEEtRgRAIActAGxBAUYNCgsgBCgCAARAIAAgByAIQQEQnQFBAEgNCwsgCyAHIAgQyAMiEUEASA0KIAAQDw0KIA4NASAAQQ0QDSAAIBFB\u002F\u002F8DcSIJEBQgBCgCAARAIABBERANIABBvQEQDSAAIAgQFyAAIAcvAbwBEBQLIABB3AAQDSAAIAkQFCAKQQA2AgALIAAoAhBBKUYNBCAAQSkQKBoMCQsCQCAAKAIQQT1GBEAgCkEANgIAIAAQDw0KIAAQLSEJIABB2wAQDSAAIBFB\u002F\u002F8DcSIOEBQgAEEREA0gAEEGEA0gAEGsARANIABB6gAgCRAYGiAAQQ4QDSAAEFMNCiAAIAgQngEgAEEREA0gAEHcABANIAAgDhAUIAAgCRAaQQEhCQwBCyAJRQRAIAcgBygCjAFBAWo2AowBCyAEKAIARQ0BIABB2wAQDSAAIBFB\u002F\u002F8DcRAUCyAAQb0BEA0gACAIEBcgACAHLwG8ARAUCyAAKAIQQSlGDQIgAEEsEChFDQEMBwsLIABB1DBBABATDAULAkACQCABQQRrDgIBAAILIAcoAogBQQFGDQEMAwsgBygCiAENAgsgBCgCAEUNACAHKALMASAHKAK8AUEDdGpBBGohCANAAkAgCCgCACIEQQBIDQAgBygCdCIIIARBBHQiBGoiCigCBCAHKAK8AUcNACAHIAooAgAiChD3AUEASARAIAsgByAKEExBAEgNBiAHKAJ0IQggAEG4ARANIAAgBCAIaiIKKAIAEBcgACAHLwG8ARAUIABBuQEQDSAAIAooAgAQFyAAQQAQFAsgBCAIakEIaiEIDAELCyAAQbUBEA0gACAHLwG8ARAUIAdBADYCvAEgByAHKALMASgCBDYCwAELIAAQDw0CIAJBfXFBAUYEQCAAQYgBEA0LIAdBATYCZCAAEHQaIAcgBygCvAE2AvABAkACQCAAKAIQQaR\u002FRw0AIAAQDw0EIAAoAhBB+wBGDQAgACAHIAwQ6gQNBCAAEFMNBCAAQS5BKCACGxANIActAG5BAnENASAHIAAoAjQgA2siAjYCkAMgByALIAMgAhCXAyICNgKMAyACDQEMBAsgAUEHRwRAIABB+wAQKA0ECyAAEKUFDQMgACAHIAwQ6gQNAwNAIAAoAhBB\u002FQBHBEAgABCkBUUNAQwFCwsgBy0AbkECcUUEQCAHIAAoAjggA2siAjYCkAMgByALIAMgAhCXAyICNgKMAyACRQ0ECyAAEA8NAyAAEOgCRQ0AIABBABCwAgsgACAHKAIENgJAIAAoAhAiAkGDf0cgAkHVAGpBLUtxRQRAIABBADYCKCAAQYN\u002FNgIQIAAQ7wQLIAcoAnAhAiAHIABCgICAgCAQxwMiAzYCCCABQQJPBEBBACEIIAFBCmtBfUsNBSAAQQMQDSAAIAMQOCACDQUgAEHNABANIABBABA4DAULIAFBAUYEQCAAQQMQDSAAIAMQOCAPBEACQCAAKAJAIgEoAigEQCALIAEgAhDmAiIBRQ0GIAFBADYCCCABIAEtAARB\u002FgFxIAAoAkAtAG5BAXFyOgAEDAELIAEgAhD3AUEATg0AIAsgASACEExBAEgNBQsgAEEREA0gAEG5ARANIAAgAhAXIABBABAUC0EAIQggDUEATgRAIAAoAkAoAnQgDUEEdGoiASABLQAMIANBCHRyNgIMIABBDhANDAYLIABBvQEQDSAAIAIQFyAAIAAoAkAvAbwBEBQMBQsCQAJAIAAoAkAiASgCKEUEQCAAIAEgAkEGEJ0BIgFBAEgNBSADQQh0IQIgACgCQCEAIAFBgICAgAJxBEAgACgCgAEgAUEEdGoiAEEMaiAALQAMIAJyNgIADAILIAAoAnQgAUEEdGoiACAALQAMIAJyNgIMDAELIAsgASACQf0AIAIbIgEQ5gIiAkUNBCACIAM2AgAgBQ0BC0EAIQgMBQtBACEIIAAgACgCQCgClAMgAUEWIAEgBUEBRxtBABD5AQ0EDAILIABB\u002Fi9BABATDAELIAAQ3AELIAAgBygCBDYCQCALIAcQ+wJBfyEIIAZFDQEgBkEANgIADAELIAsgDBAQCyAQQRBqJAAgCAuoAgIBfgJ\u002FIwBBEGsiAiQAAkAgAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECJCgICAgOAAIQUMAQsCQCAEDQAgAykDACIFQoCAgIBwVA0AIAWnIgYvAQZBLUcNACAGKAIgRQ0AIAAgBUE9IAVBABARIgVCgICAgHCDQoCAgIDgAFENASAAIAUgARBNIQcgACAFEAwgB0UNACADKQMAIgVCIIinQXVJDQEgBaciACAAKAIAQQFqNgIADAELIAAgAiABEIICIgFCgICAgHCDQoCAgIDgAFIEQCAAIAIgBEEDdGopAwBCgICAgDBBASADEBwhBSAAIAIpAwAQDCAAIAIpAwgQDCAFQoCAgIBwg0KAgICA4ABRBEAgACABEAwMAgsgACAFEAwLIAEhBQsgAkEQaiQAIAULDQAgACABIAJBABCaAwstAQF\u002FQQEhAQJAAkACQCAAQQ1rDgQCAQECAAsgAEEwRg0BCyAAQTRGIQELIAELnQMDAn4BfAJ\u002FAkACfgJAAkACQAJAIAFBCGsiBikDACIEQiCIp0EHa0FuSQ0AQX8hAUKAgICAMCEDIAAgBBBlIgRCgICAgHCDQoCAgIDgAFENBSAEQiCIpyIHQXZHBEAgBw0BIATEIQMCQAJAAkAgAkGNAWsOBAACAQEFCyAEQiCGUARAQQAhAUKAgICAwP7\u002FAyEDDAkLQgAgA30hAwwBCyADIAJBAXRBnwJrrHwhAwsgA0L\u002F\u002F\u002F\u002F\u002FD4MgA0KAgICACHxC\u002F\u002F\u002F\u002F\u002Fw9YDQUaQoCAgIDAfiADub0iA0KAgICAwIGA\u002FP8AfSADQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwwFCyAAIAYgAiAEIAAoAhAoAqgCER8ADQVBAA8LIARCgICAgMCBgPz\u002FAHy\u002FIQUCQCACQY0Baw4EAAMCAgELIAWaIQUMAgsQAQALIAJBAXRBnwJrtyAFoCEFC0KAgICAwH4gBb0iA0KAgICAwIGA\u002FP8AfSADQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwshA0EAIQELIAYgAzcDACABCzgBAX8gAEEYECQiAUUEQEKAgICA4AAPCyABQQE2AgAgACgC2AEgAUEEahC7ASABrUKAgICA4H6ECykBAX8gAkIgiKdBdU8EQCACpyIDIAMoAgBBAWo2AgALIAAgASACENIFCyYBAX8gAUIgiKdBdU8EQCABpyICIAIoAgBBAWo2AgALIAAgARAnC7UBAQJ\u002FAkACQCABRQ0AIAEoAgAiAkEATA0BIAEgAkEBayICNgIAIAINAAJAIAEtAAVBAXEEQCAAIAEpAxgQIQwBCyABKAIYIgIgASgCHCIDNgIEIAMgAjYCACABQgA3AhggASgCICICRQ0AIAAgAhDOAQsgASgCCCICIAEoAgwiAzYCBCADIAI2AgAgAUIANwIIIABBEGogASAAKAIEEQAACw8LQfeEAUGo7ABB\u002FShBvcwAEAAACyEAIAEgAkYEQCABEBkPCyAAIAFBBGutQoCAgIDgfoQQDAtFAQF\u002FAkAgAUGAgAFxRQRAIAFBgIACcUUNASAAKAIQKAKMASIBRQ0BIAEtAChBAXFFDQELIAAgAkGqDBC1AUF\u002FIQMLIAML\u002FgICA38CfiMAQRBrIgMkAAJAAkAgAUKAgICAcFoEQCABpyICLwEGQSxGBEACQCAAIANBCGogAUHgABB+IgJFDQAgAykDCCIBQoCAgIBwg0KAgICAMFEEQCAAIAIpAwAQ6AEhAQwFCyAAIAEgAikDCEEBIAIQNiIFQoCAgIBwg0KAgICA4ABRDQMCQAJAIAVCIIinQQFqDgQAAQEAAQsgACACKQMAEJcBIgRBAEgEQCAAIAUQDAwCCyAEDQRCgICAgOAAIQEgACACKQMAEOgBIgZCgICAgHCDQoCAgIDgAFEEQCAAIAUQDAwGCyAAIAYQDCAGpyAFp0YNBAsgACAFEAwgAEGr0gBBABASC0KAgICA4AAhAQwDCyACKAIQKAIsIgBFBEBCgICAgCAhAQwDCyAAIAAoAgBBAWo2AgAgAK1CgICAgHCEIQEMAgsgACABEIsEIgFCIIinQXVJDQEgAaciACAAKAIAQQFqNgIADAELIAUhAQsgA0EQaiQAIAELGgAgACgCECABIAIQ6AUiAUUEQCAAEHALIAELnwMCBH8CfiMAQSBrIgQkACABIAJqIQUgASEDA0ACQCADIAVPDQAgAywAAEEASA0AIANBAWohAwwBCwsCfgJAIAMgAWsiBkGAgICABE8EQCAAQeTIAEEAEDoMAQsgAyAFRgRAIAAgASACEJwDDAILIAAgBEEEaiIAIAIQPkUEQCAAIAEgBhCLAhoDQCADIAVJBEAgAywAACIAQQBOBEAgBEEEaiAAQf8BcRA8GiADQQFqIQMMAgUCQCADIAUgA2sgBEEcahBRIgFB\u002F\u002F8DTQRAIAQoAhwhAwwBCyABQf\u002F\u002FwwBNBEAgBCgCHCEDIARBBGogAUGAgARrQQp2QYCwA2oQhwEaIAFB\u002FwdxQYC4A3IhAQwBCwNAQf3\u002FAyEBIAMgBU8NASADLAAAQUBIBEAgA0EBaiEDDAELCwNAIAUgA0EBaiIDTQRAIAUhAwwCCyADLAAAQUBIDQALCyAEQQRqIAEQhwEaDAILAAsLIARBBGoQNwwCCyAEKAIEKAIQIgBBEGogBCgCCCAAKAIEEQAAC0KAgICA4AALIQggBEEgaiQAIAgL2wECAX8CfkEBIQQCQCAAQgBSIAFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAIMiBUKAgICAgIDA\u002F\u002F8AViAFQoCAgICAgMD\u002F\u002FwBRGw0AIAJCAFIgA0L\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8AgyIGQoCAgICAgMD\u002F\u002FwBWIAZCgICAgICAwP\u002F\u002FAFEbDQAgACAChCAFIAaEhFAEQEEADwsgASADg0IAWQRAQX8hBCAAIAJUIAEgA1MgASADURsNASAAIAKFIAEgA4WEQgBSDwtBfyEEIAAgAlYgASADVSABIANRGw0AIAAgAoUgASADhYRCAFIhBAsgBAuhAgEFfwNAAkACQAJAAkACfyACIAdMIgkgBCAGTHJFBEAgASAHQQJ0aigCACIIIAMgBkECdGooAgAiCUkEQCAIDAILIAggCUcNAyAGQQFqIQYgB0EBaiEHIAghCQwECyAJDQEgASAHQQJ0aigCAAshCSAHQQFqIQcMAgsgBCAGTA0CIAMgBkECdGooAgAhCQsgBkEBaiEGCwJ\u002FAkACQAJAAkAgBQ4DAwABAgsgBiAHcUEBcQwDCyAGIAdzQQFxDAILEAEACyAGIAdyQQFxCyAAKAIAIghBAXFGDQEgACgCBCAITARAIAAgCEEBahDRAgRAQX8PCyAAKAIAIQgLIAAgCEEBajYCACAAKAIIIAhBAnRqIAk2AgAMAQsLIAAQmAZBAAvmAQAgAAJ\u002FIAEoAggiAEH+\u002F\u002F\u002F\u002FB04EQEEAIAJBAXENARpB\u002F\u002F\u002F\u002F\u002FwcgAEH+\u002F\u002F\u002F\u002FB0cNARogASgCBEH\u002F\u002F\u002F\u002F\u002FB2oMAQtBACAAQQBMDQAaIABBH00EQEEAIAEoAhAgASgCDEECdGpBBGsoAgBBICAAa3YiAGsgACABKAIEGwwBCyACQQFxRQRAQf\u002F\u002F\u002F\u002F8HIAEoAgRFDQEaQYCAgIB4IABBIEcNARogASgCECABKAIMQQJ0akEEaygCABpBgICAgHgMAQtBACABKAIQIAEoAgwiAiACQQV0IABrEHEiAGsgACABKAIEGws2AgALEgAgACABIAIgAyAEQZMDELEDCw4AIABBACABQRByELoBC58BAgR\u002FAn4gAzUCACEJA0AgAiAFRkUEQCAAIAVBAnQiB2ogBq0gASAHajUCACAJfnwiCj4CACAFQQFqIQUgCkIgiKchBgwBCwsgACACQQJ0IgdqIAY2AgBBASAEIARBAU0bIQRBASEFA0AgBCAFRkUEQCAAIAVBAnQiBmoiCCAHaiAIIAEgAiADIAZqKAIAEL0ENgIAIAVBAWohBQwBCwsLWgEFfyADQQAgA0EAShshBgNAIAUgBkcEQCAAIAVBAnQiA2ogASADaigCACIHIAIgA2ooAgAiA2siCCAEazYCACADIAdLIAQgCEtyIQQgBUEBaiEFDAELCyAEC6sBAQh\u002FIAAoAggiAyABKAIIIgJHBEBBf0EBIAIgA0obDwsgASgCDCIFIAAoAgwiBiAFIAUgBkgbIgJrIQggBiACayEJAn8DQEEAIAJBAWsiAkEASA0BGkEAIQNBACEEIAIgCWoiByAGSQRAIAAoAhAgB0ECdGooAgAhBAsgAiAIaiIHIAVJBEAgASgCECAHQQJ0aigCACEDCyADIARGDQALQX9BASADIARLGwsLigEBA38jAEGQAWsiAyQAIAMgAjYCjAECfyADQYABIAEgAhDJAiIEQf8ATQRAIAAgAyAEEHIMAQtBfyAAIAQgACgCBGpBAWoQvAENABogAyACNgKMASAAKAIEIgUgACgCAGogACgCCCAFayABIAIQyQIaIAAgACgCBCAEajYCBEEACxogA0GQAWokAAtWAQF\u002FIAJCIIinQXVPBEAgAqciBSAFKAIAQQFqNgIACyAAIAFBPCACIAMQFRogAUIgiKdBdU8EQCABpyIDIAMoAgBBAWo2AgALIAAgAkE9IAEgBBAVGgucAQEEfyMAQRBrIgIkACACQSU6AApBASEDIAFBgAJOBEAgAkH1ADoACyACIAFBCHZBD3FByvgAai0AADoADSACIAFBDHZBD3FByvgAai0AADoADEEEIQMLIAJBCmoiBCADaiIFIAFBD3FByvgAai0AADoAASAFIAFBBHZBD3FByvgAai0AADoAACAAIAQgA0ECchCLAhogAkEQaiQAC7wEAQV\u002FIAFFBEAgACACQQRxQQhyENkBDwsCQAJAIAJBAXFFIAAoAhBBqX9HIAFBBEdycg0AIABBABBzQbd\u002FRw0AIAAoAgAgACgCIBAWIQECQAJAIAAQDw0AIAAoAhBBt39HDQAgABAPDQAgAEEDIAJBe3EQ9gFFDQELIAAoAgAgARAQQX8PCyAAQcIBEA0gACABEBcgACAAKAJALwG8ARAUIAAoAgAgARAQDAELQX8hAwJAIAAgAUEBayIEIgUgAhD2AQ0AIAJBe3EhBiACQQFxIQcDQCAAKAIQIQECQAJAAkACQAJAAkACQAJAAkACQCAEQQFrDgcBAgMEBQYHAAsgAUElRwRAQZsBIQIgAUEqRg0JIAFBL0cNDEGcASECDAkLQZ0BIQIMCAtBngEhAkEAIQMCQCABQStrDgMICgAKC0GfASECDAcLIAFB6gBqIgFBA08NCSABQd8AayECDAYLQQAhAwJAAkACQAJAIAFB5gBqDgMBCwIACwJAIAFByQBqDgIIAwALQaQBIQICQCABQTxrDgMJCwALC0GmASECDAgLQaUBIQIMBwtBpwEhAgwGC0GoASECDAULIAFB4wBqIgFBBE8NB0Gq2a7teiABQQN0diECDAQLQa4BIQIgAUEmRw0GDAMLQa8BIQIgAUHeAEcNBQwCC0GwASECIAFB\u002FABHDQQMAQtBqQEhAiAHRQ0CC0F\u002FIQMgABAPDQEgACAFIAYQ9gENASAAIAJB\u002FwFxEA0MAAsACyADDwtBAAtHAQJ\u002FIAAoAnwhAgJAA0AgAkEASgRAIAAoAnQgAkEBayICQQR0aiIDKAIAIAFHDQEgAygCBA0BDAILCyAAIAEQ6QQhAgsgAgspAQF\u002FQX8hAQJAIABBKBAoDQAgABCLAQ0AQX9BACAAQSkQKBshAQsgAQvQAQECfyAAKAIAIQUjAEHQAGsiBiQAAkAgASADELoFBEACQCAABEAgBiAFIAZBEGogAxCBATYCACAAQeKNASAGEBMMAQsgBSADQeKNARCBAwtBACEADAELQQAhACAFIAFBHGpBFCABQSRqIAEoAiBBAWoQZA0AIAEgASgCICIAQQFqNgIgIAEoAhwgAEEUbGoiAEIANwIAIABBADYCECAAQgA3AgggACAFIAIQFjYCDCAFIAMQFiEBIAAgBDYCCCAAIAE2AhALIAZB0ABqJAAgAAsaACAAQd4AQdgAIAEbEA4gACACQf\u002F\u002FA3EQJgu2AQECfwJAIAIgASgCBCIKRgRAIAMhCwwBCyAAIAogAiADIAQgBSAGIAcgCCAJEPsBIgVBAE4NAEF\u002FDwtBACECIAEoAsACIgNBACADQQBKGyEDAkADQCACIANHBEACQCAFIAEoAsgCIAJBA3RqIgovAQJHDQAgCi0AACIKQQF2QQFxIARHDQAgCyAKQQFxRg0DCyACQQFqIQIMAQsLIAAgASALIAQgBSAGIAcgCCAJENIDIQILIAILjgEBAX8gACAGQQwQRyIGQoCAgIBwg0KAgICA4ABSBEAgACAAKAIAQQFqNgIAIAanIgcgBTsBKiAHIAQ6ACkgByADOgAoIAcgATYCJCAHIAA2AiAgByAHLQAFQe8BcSAEQQJrQQRJQQR0cjoABSAAIAYgACACQeyWASACGxC2ASIBIAMQmAMgACABEBALIAYLjgIBAX4CQAJAAkACQCABQv\u002F\u002F\u002F\u002F9vWA0AIAAgAUE9IAFBABARIgFCgICAgHCDIgNCgICAgOAAUQRAIAEPCyADQoCAgIAwUQRAIAJCIIinQXVJDQMMBAsgAUL\u002F\u002F\u002F\u002F\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\u002FAH0gEkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsMAwsgABBwQoCAgIDgACESDAMLEAEAC0KAgICAwH4gCiAMcg0AGiAAIAggAyAEQQAgACgCECgCpAIRKgALIRIgC0HBAEkNACAAKAIQIgBBEGogCCAAKAIEEQAACyACBEAgAiAJKAJMNgIACyAJQdAAaiQAIBILeQEBfwJAAkACQAJAAkAgASgCACICQYABag4FBAQEAgABCyAAKAIAIAEpAxAQDCAAKAIAIAEpAxgQDA8LIAJBqX9HDQELIAAoAgAgASgCEBAQDwsgAkHVAGpBLU0EQCAAKAIAIAEoAhAQEAsPCyAAKAIAIAEpAxAQDAv1AgIEfwJ+IwBBIGsiAyQAIANCgICAgDA3AxggA0KAgICAMDcDECADIABBO0ECQQBBAiADQRBqEIUBIgc3AwhCgICAgOAAIQggB0KAgICAcINCgICAgOAAUgRAAkAgAkKAgICAcINCgICAgDBRBEAgACACQQAgA0EIahCQBiECDAELIAAgAkEBIANBCGoQowEhAiADKQMIIQcLIAACfiAAIAJCgICAgHCDQoCAgIDgAFIEfgJ\u002FQQAgB0KAgICAcFQNABpBACAHpyIFLwEGQQ9HDQAaIAUoAiALQQhqIQYDQCAEQQJGBEBBACEEA0AgBEECRwRAIAYgBEEDdCIFaikDACIHQiCIp0F1TwRAIAenIgAgACgCAEEBajYCAAsgASAFaiAHNwMAIARBAWohBAwBCwsgAiEIIAMpAwgMAwsgBEEDdCEFIARBAWohBCAAIAUgBmopAwAQVUUNAAsgAykDCAUgBwsQDCACCxAMCyADQSBqJAAgCAsOACABIAAoAhBBOBCdAgtDACAAAn8CfyADBEAgASgCJCACQQN0akEEagwBC0EAIAEoAiAiA0UNARogAyABLwEoQQR0aiACQQR0agsoAgALENEBC00BA38gAkL\u002F\u002F\u002F\u002F\u002FB1gEQCAAIAEgAqdBgICAgHhyQYCAARDNAQ8LIAAgAhCLAyIDRQRAQX8PCyAAIAEgA0GAgAEQzQEhBSAAIAMQECAFC0MAIAAgASACQQBOBH4gAq0FQoCAgIDAfiACuL0iAUKAgICAwIGA\u002FP8AfSABQoCAgICAgID4\u002FwBWGwsgA0GAgAEQzwELIQEBfiAAIAEgACACELYBIgIgAUEAEBEhAyAAIAIQECADCw0AIAAoAhAgAacQxgILngQCBX8BfiMAQSBrIgYkAAJAAkACQAJAIAMEQCABQoCAgIBgg0KAgICAIFINAQwCCyABQoCAgIBwVA0BC0EBIQQCQAJAIAJCIIinIghBAWoOBAACAgECCyACpyEFCyABQv\u002F\u002F\u002F\u002F9vWEEAIAMbDQICQCABpyIHLwEGQSxGBEAgACAGQRhqIAFB4QAQfiIFRQ0DIAUpAwAhCSAGKQMYIgFCgICAgHCDQoCAgIAwUQRAIAAgCSACIAMQiQIhBAwFCyAGIAI3AwggBiAJNwMAIAAgASAFKQMIQQIgBhA2IgFCgICAgHCDQoCAgIDgAFENAyAAIAEQJ0UEQCADRQ0CIABBydIAQQAQEgwECyAAIAUpAwAQlwEiA0EASA0DIAMNBCAAIAUpAwAQ6AEiAUKAgICAcINCgICAgOAAUQ0DIAAgARAMIAKnIAGnRg0EIABBq9IAQQAQEgwDCyAHKAIQKAIsIAVGDQMgBy0ABUEBcUUEQCADRQ0BIABBhdgAQQAQEgwDCwJAIAVFDQAgBSEEA0AgBCAHRgRAIANFDQMgAEHsPkEAEBIMBQsgBCgCECgCLCIEDQALIAhBdUkNACACpyIDIAMoAgBBAWo2AgALQX8hBCAAIAdBABDTAQ0DIAcoAhAiBCgCLCIDBEAgACADrUKAgICAcIQQDAsgBCAFNgIsQQEhBAwDC0EAIQQMAgsgABAiC0F\u002FIQQLIAZBIGokACAECw0AIAAgASACQQMQyAILkwEBAn8CfyAAKAIIIAJqIgQgACgCDEoEQEF\u002FIAAgBEEAEMQCDQEaCwJAIAAoAhAEQCACQQAgAkEAShshBANAIAMgBEYNAiAAKAIEIAAoAgggA2pBAXRqIAEgA2otAAA7ARAgA0EBaiEDDAALAAsgACgCBCAAKAIIakEQaiABIAIQHhoLIAAgACgCCCACajYCCEEACwvMAQECfyABIAEoAgAiAkEBayIDNgIAAkAgAkEBTARAIAMNASABLQAQBEAgACABEIMECyABKAIsIgIEQCAAIAKtQoCAgIBwhBAhCyABQTBqIQJBACEDA0AgAyABKAIgT0UEQCAAIAIoAgQQxwEgA0EBaiEDIAJBCGohAgwBCwsgASgCCCICIAEoAgwiAzYCBCADIAI2AgAgAUIANwIIIABBEGogASABKAIYQX9zQQJ0aiAAKAIEEQAACw8LQdGGAUGo7ABB0yJBzIQBEAAAC1ABAX4CQCADQcAAcQRAIAIgA0FAaq2IIQFCACECDAELIANFDQAgAkHAACADa62GIAEgA60iBIiEIQEgAiAEiCECCyAAIAE3AwAgACACNwMIC2YCAX8BfiMAQRBrIgIkACAAAn4gAUUEQEIADAELIAIgAa1CAEHwACABZyIBQR9zaxBiIAIpAwhCgICAgICAwACFQZ6AASABa61CMIZ8IQMgAikDAAs3AwAgACADNwMIIAJBEGokAAvhKAEMfyMAQRBrIgokAAJAAkACQAJAAkACQAJAAkACQAJAIABB9AFNBEBBxN4EKAIAIgRBECAAQQtqQfgDcSAAQQtJGyIGQQN2IgB2IgFBA3EEQAJAIAFBf3NBAXEgAGoiAkEDdCIBQezeBGoiACABQfTeBGooAgAiASgCCCIFRgRAQcTeBCAEQX4gAndxNgIADAELIAUgADYCDCAAIAU2AggLIAFBCGohACABIAJBA3QiAkEDcjYCBCABIAJqIgEgASgCBEEBcjYCBAwLCyAGQczeBCgCACIITQ0BIAEEQAJAQQIgAHQiAkEAIAJrciABIAB0cWgiAUEDdCIAQezeBGoiAiAAQfTeBGooAgAiACgCCCIFRgRAQcTeBCAEQX4gAXdxIgQ2AgAMAQsgBSACNgIMIAIgBTYCCAsgACAGQQNyNgIEIAAgBmoiByABQQN0IgEgBmsiBUEBcjYCBCAAIAFqIAU2AgAgCARAIAhBeHFB7N4EaiEBQdjeBCgCACECAn8gBEEBIAhBA3Z0IgNxRQRAQcTeBCADIARyNgIAIAEMAQsgASgCCAshAyABIAI2AgggAyACNgIMIAIgATYCDCACIAM2AggLIABBCGohAEHY3gQgBzYCAEHM3gQgBTYCAAwLC0HI3gQoAgAiC0UNASALaEECdEH04ARqKAIAIgIoAgRBeHEgBmshAyACIQEDQAJAIAEoAhAiAEUEQCABKAIUIgBFDQELIAAoAgRBeHEgBmsiASADIAEgA0kiARshAyAAIAIgARshAiAAIQEMAQsLIAIoAhghCSACIAIoAgwiAEcEQEHU3gQoAgAaIAIoAggiASAANgIMIAAgATYCCAwKCyACKAIUIgEEfyACQRRqBSACKAIQIgFFDQMgAkEQagshBQNAIAUhByABIgBBFGohBSAAKAIUIgENACAAQRBqIQUgACgCECIBDQALIAdBADYCAAwJC0F\u002FIQYgAEG\u002Ff0sNACAAQQtqIgBBeHEhBkHI3gQoAgAiB0UNAEEAIAZrIQMCQAJAAkACf0EAIAZBgAJJDQAaQR8gBkH\u002F\u002F\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\u002F\u002F\u002F8HTQRAIAJBJiACQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAAsgAyAANgIcIANCADcCECAAQQJ0QfTgBGohAQJAAkBByN4EKAIAIgVBASAAdCIEcUUEQEHI3gQgBCAFcjYCACABIAM2AgAMAQsgAkEZIABBAXZrQQAgAEEfRxt0IQAgASgCACEFA0AgBSIBKAIEQXhxIAJGDQIgAEEddiEFIABBAXQhACABIAVBBHFqIgQoAhAiBQ0ACyAEIAM2AhALIAMgATYCGEEIIQIgAyIBIQBBDAwBCyABKAIIIgAgAzYCDCABIAM2AgggAyAANgIIQQAhAEEYIQJBDAsgA2ogATYCACACIANqIAA2AgALQdDeBCgCACIAIAZNDQBB0N4EIAAgBmsiATYCAEHc3gRB3N4EKAIAIgAgBmoiAjYCACACIAFBAXI2AgQgACAGQQNyNgIEIABBCGohAAwEC0HE1ARBMDYCAEEAIQAMAwsgACACNgIAIAAgACgCBCAEajYCBCACQXggAmtBB3FqIgggBkEDcjYCBCABQXggAWtBB3FqIgQgBiAIaiIDayEHAkBB3N4EKAIAIARGBEBB3N4EIAM2AgBB0N4EQdDeBCgCACAHaiIANgIAIAMgAEEBcjYCBAwBC0HY3gQoAgAgBEYEQEHY3gQgAzYCAEHM3gRBzN4EKAIAIAdqIgA2AgAgAyAAQQFyNgIEIAAgA2ogADYCAAwBCyAEKAIEIgBBA3FBAUYEQCAAQXhxIQkgBCgCDCECAkAgAEH\u002FAU0EQCAEKAIIIgEgAkYEQEHE3gRBxN4EKAIAQX4gAEEDdndxNgIADAILIAEgAjYCDCACIAE2AggMAQsgBCgCGCEGAkAgAiAERwRAQdTeBCgCABogBCgCCCIAIAI2AgwgAiAANgIIDAELAkAgBCgCFCIABH8gBEEUagUgBCgCECIARQ0BIARBEGoLIQEDQCABIQUgACICQRRqIQEgACgCFCIADQAgAkEQaiEBIAIoAhAiAA0ACyAFQQA2AgAMAQtBACECCyAGRQ0AAkAgBCgCHCIAQQJ0QfTgBGoiASgCACAERgRAIAEgAjYCACACDQFByN4EQcjeBCgCAEF+IAB3cTYCAAwCCyAGQRBBFCAGKAIQIARGG2ogAjYCACACRQ0BCyACIAY2AhggBCgCECIABEAgAiAANgIQIAAgAjYCGAsgBCgCFCIARQ0AIAIgADYCFCAAIAI2AhgLIAcgCWohByAEIAlqIgQoAgQhAAsgBCAAQX5xNgIEIAMgB0EBcjYCBCADIAdqIAc2AgAgB0H\u002FAU0EQCAHQXhxQezeBGohAAJ\u002FQcTeBCgCACIBQQEgB0EDdnQiAnFFBEBBxN4EIAEgAnI2AgAgAAwBCyAAKAIICyEBIAAgAzYCCCABIAM2AgwgAyAANgIMIAMgATYCCAwBC0EfIQIgB0H\u002F\u002F\u002F8HTQRAIAdBJiAHQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAgsgAyACNgIcIANCADcCECACQQJ0QfTgBGohAAJAAkBByN4EKAIAIgFBASACdCIFcUUEQEHI3gQgASAFcjYCACAAIAM2AgAMAQsgB0EZIAJBAXZrQQAgAkEfRxt0IQIgACgCACEBA0AgASIAKAIEQXhxIAdGDQIgAkEddiEBIAJBAXQhAiAAIAFBBHFqIgUoAhAiAQ0ACyAFIAM2AhALIAMgADYCGCADIAM2AgwgAyADNgIIDAELIAAoAggiASADNgIMIAAgAzYCCCADQQA2AhggAyAANgIMIAMgATYCCAsgCEEIaiEADAILAkAgCEUNAAJAIAUoAhwiAUECdEH04ARqIgIoAgAgBUYEQCACIAA2AgAgAA0BQcjeBCAHQX4gAXdxIgc2AgAMAgsgCEEQQRQgCCgCECAFRhtqIAA2AgAgAEUNAQsgACAINgIYIAUoAhAiAQRAIAAgATYCECABIAA2AhgLIAUoAhQiAUUNACAAIAE2AhQgASAANgIYCwJAIANBD00EQCAFIAMgBmoiAEEDcjYCBCAAIAVqIgAgACgCBEEBcjYCBAwBCyAFIAZBA3I2AgQgBSAGaiIEIANBAXI2AgQgAyAEaiADNgIAIANB\u002FwFNBEAgA0F4cUHs3gRqIQACf0HE3gQoAgAiAUEBIANBA3Z0IgJxRQRAQcTeBCABIAJyNgIAIAAMAQsgACgCCAshASAAIAQ2AgggASAENgIMIAQgADYCDCAEIAE2AggMAQtBHyEAIANB\u002F\u002F\u002F\u002FB00EQCADQSYgA0EIdmciAGt2QQFxIABBAXRrQT5qIQALIAQgADYCHCAEQgA3AhAgAEECdEH04ARqIQECQAJAIAdBASAAdCICcUUEQEHI3gQgAiAHcjYCACABIAQ2AgAgBCABNgIYDAELIANBGSAAQQF2a0EAIABBH0cbdCEAIAEoAgAhAQNAIAEiAigCBEF4cSADRg0CIABBHXYhASAAQQF0IQAgAiABQQRxaiIHKAIQIgENAAsgByAENgIQIAQgAjYCGAsgBCAENgIMIAQgBDYCCAwBCyACKAIIIgAgBDYCDCACIAQ2AgggBEEANgIYIAQgAjYCDCAEIAA2AggLIAVBCGohAAwBCwJAIAlFDQACQCACKAIcIgFBAnRB9OAEaiIFKAIAIAJGBEAgBSAANgIAIAANAUHI3gQgC0F+IAF3cTYCAAwCCyAJQRBBFCAJKAIQIAJGG2ogADYCACAARQ0BCyAAIAk2AhggAigCECIBBEAgACABNgIQIAEgADYCGAsgAigCFCIBRQ0AIAAgATYCFCABIAA2AhgLAkAgA0EPTQRAIAIgAyAGaiIAQQNyNgIEIAAgAmoiACAAKAIEQQFyNgIEDAELIAIgBkEDcjYCBCACIAZqIgUgA0EBcjYCBCADIAVqIAM2AgAgCARAIAhBeHFB7N4EaiEAQdjeBCgCACEBAn9BASAIQQN2dCIHIARxRQRAQcTeBCAEIAdyNgIAIAAMAQsgACgCCAshBCAAIAE2AgggBCABNgIMIAEgADYCDCABIAQ2AggLQdjeBCAFNgIAQczeBCADNgIACyACQQhqIQALIApBEGokACAAC1IBAn9BpNQEKAIAIgEgAEEHakF4cSICaiEAAkAgAkEAIAAgAU0bRQRAIAA\u002FAEEQdE0NASAAEAkNAQtBxNQEQTA2AgBBfw8LQaTUBCAANgIAIAELgwECBX8BfgJAIABCgICAgBBUBEAgACEHDAELA0AgAUEBayIBIAAgAEIKgCIHQgp+fadBMHI6AAAgAEL\u002F\u002F\u002F\u002F\u002FnwFWIQUgByEAIAUNAAsLIAenIgIEQANAIAFBAWsiASACIAJBCm4iA0EKbGtBMHI6AAAgAkEJSyEGIAMhAiAGDQALCyABC94BAQJ\u002FIAJBAEchAwJAAkACQCAAQQNxRSACRXINACABQf8BcSEEA0AgAC0AACAERg0CIAJBAWsiAkEARyEDIABBAWoiAEEDcUUNASACDQALCyADRQ0BIAFB\u002FwFxIgMgAC0AAEYgAkEESXJFBEAgA0GBgoQIbCEDA0AgACgCACADcyIEQX9zIARBgYKECGtxQYCBgoR4cQ0CIABBBGohACACQQRrIgJBA0sNAAsLIAJFDQELIAFB\u002FwFxIQEDQCABIAAtAABGBEAgAA8LIABBAWohACACQQFrIgINAAsLQQAL5QUDBHwBfwF+AkACQAJAAnwCQCAAvSIGQiCIp0H\u002F\u002F\u002F\u002F\u002FB3EiBUH60I2CBE8EQCAAvUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVg0FIAZCAFMEQEQAAAAAAADwvw8LIABE7zn6\u002FkIuhkBkRQ0BIABEAAAAAAAA4H+iDwsgBUHD3Nj+A0kNAiAFQbHFwv8DSw0AIAZCAFkEQEEBIQVEdjx5Ne856j0hASAARAAA4P5CLua\u002FoAwCC0F\u002FIQVEdjx5Ne856r0hASAARAAA4P5CLuY\u002FoAwBCwJ\u002FIABE\u002FoIrZUcV9z+iRAAAAAAAAOA\u002FIACmoCIBmUQAAAAAAADgQWMEQCABqgwBC0GAgICAeAsiBbciAkR2PHk17znqPaIhASAAIAJEAADg\u002FkIu5r+ioAsiACAAIAGhIgChIAGhIQEMAQsgBUGAgMDkA0kNAUEAIQULIAAgAEQAAAAAAADgP6IiA6IiAiACIAIgAiACIAJELcMJbrf9ir6iRDlS5obKz9A+oKJEt9uqnhnOFL+gokSFVf4ZoAFaP6CiRPQQEREREaG\u002FoKJEAAAAAAAA8D+gIgREAAAAAAAACEAgBCADoqEiA6FEAAAAAAAAGEAgACADoqGjoiEDIAVFBEAgACAAIAOiIAKhoQ8LIAAgAyABoaIgAaEgAqEhAQJAAkACQCAFQQFqDgMAAgECCyAAIAGhRAAAAAAAAOA\u002FokQAAAAAAADgv6APCyAARAAAAAAAANC\u002FYwRAIAEgAEQAAAAAAADgP6ChRAAAAAAAAADAog8LIAAgAaEiACAAoEQAAAAAAADwP6APCyAFQf8Haq1CNIa\u002FIQIgBUE5TwRAIAAgAaFEAAAAAAAA8D+gIgAgAKBEAAAAAAAA4H+iIAAgAqIgBUGACEYbRAAAAAAAAPC\u002FoA8LRAAAAAAAAPA\u002FIAVB\u002FwdzrUI0hr8iA6EgACABoaAgACABIAOgoUQAAAAAAADwP6AgBUETTRsgAqIhAAsgAAtZAQN\u002FQX8hASAAIAAoAgAiAkECaiIDENECBH9BfwUgACgCCCIBQQRqIAEgAkECdCICEKsBIAAoAggiAUEANgIAIAEgAmpBfzYCBCAAIAM2AgAgABCYBkEACwsbACAAIAFB\u002FwFxEA4gACACIAAoAgRrQQRrEBsLRAEBf0F\u002FIQMgACAAKAIEIAJqELwBBH9BfwUgACgCACABaiIDIAJqIAMgACgCBCABaxCrASAAIAAoAgQgAmo2AgRBAAsL7AQBBn8gACgCACIGQQFqIQJBCCEDAkACQAJAIAYtAAAiB0EwayIFQQhPBEBBfiEEAkACQAJAAkACQAJAIAdB7gBrDgsBCQkJAgkDBQQJBQALAkAgB0HiAGsOBQgJCQkACQtBDCEDDAcLQQohAwwGC0ENIQMMBQtBCSEDDAQLQQshAwwDCwJAIAFFDQAgAi0AAEH7AEcNACAGQQJqIQIgBi0AAiEFQQAhAwNAIAIhAUF\u002FIQQgBRCnBCICQQBIDQUgAiADQQR0ciIDQf\u002F\u002FwwBLDQUgAUEBaiICLQAAIgVB\u002FQBHDQALIAFBAmohAgwDCyAGQQJBBCAHQfgARhsiB2pBAWohBUEAIQNBACEEA0AgBCAHRwRAIAItAAAQpwQiBkEASARAQX8PBSAEQQFqIQQgAkEBaiECIAYgA0EEdHIhAwwCCwALCyABQQJHIANBgHhxQYCwA0dyDQEgBS0AAEHcAEcNASAFLQABQfUARw0BIAVBAmohAUEAIQJBACEEA0ACQCACQQRGDQAgASACai0AABCnBCIGQQBIDQAgAkEBaiECIAYgBEEEdHIhBAwBCwsgAkEERyAEQYC4A0lyIARB\u002F78DS3INASADQQp0QYD4P3EgBEH\u002FB3FyQYCABGohAyAFQQZqIQIMAgsgAUECRgRAQX8hBCAFDQNBACEDIAItAABBOmtBdkkNAgwDCyACLQAAQTBrIgFBB0sEQCAFIQMMAgsgBkECaiECIAEgBUEDdHIiA0EfSw0BIAYtAAJBMGsiAUEHSw0BIAZBA2ohAiABIANBA3RyIQMMAQsgBSECCyAAIAI2AgAgAyEECyAEC6MBAQV\u002FIAAoAgBBCGohAyACIgZBB3EhB0EgIQUDQCADKAIUIgQgASAFaiICSQRAIAMoAgxFBEAgACgCACEEIANCADcCDCADQoCAgICAgICAgH83AgQgAyAENgIACyADIAIQqwQgAyACNgIUIAIhBAsgACADEEkaIABBADYCBCAAIAEgByAEELYDRQRAIAVBAXYgBWohBQwBCwsgACABIAYQugEaC1ABA38gAkEAIAJBAEobIQICQANAIAIgBEYNASAAIARBAnRqIgMgAygCACIDIAFrNgIAIARBAWohBCABIANLIQVBASEBIAUNAAtBACEBCyABCysBAn8gAkEFdSIDQQBIIAEgA01yBH9BAAUgACADQQJ0aigCACACdkEBcQsLwgEBB38gACgCDCIEIQMCQANAIAMEQCAAKAIQIgcgA0ECdGpBBGsiBSgCAA0CIANBAWshAwwBCwsgAEGAgICAeDYCCCAAQQAQUBpBAA8LIAAgACgCCCADIARrQQV0ajYCCCAFKAIAZyIFBEBBICAFayEIQQAhBANAIAMgBEZFBEAgByAEQQJ0aiIJIAYgCHYgCSgCACIGIAV0cjYCACAEQQFqIQQMAQsLIAAgACgCCCAFazYCCAsgACABIAIgA0EAENwCCycBAn8gAUIAUwRAIABCACABfRAyIQMgAEEBNgIEIAMPCyAAIAEQMgskACAAQgA3AgAgACABNgIUIABCADcCCCAAIAJBhwMgAhs2AhALYwEBfwJAIAFCIIinIgJFIAJBC2pBEUtyDQACQCABQoCAgIBwVA0AIAGnIgIvAQZBBEcNACACKQMgIgFCIIinIgJFIAJBC2pBEUtyDQELIABBqzVBABASQoCAgIDgACEBCyABC80CAQJ\u002FIwBBEGsiAyQAIAMgAjcDCAJAAkAgACABEMwBIgRBAEgNACAERQRAIABCgICAgDBBASADQQhqEOACIQEMAgsgACABQT0gAUEAEBEiAkKAgICAcINCgICAgOAAUQRAIAIhAQwCCwJAAkAgAkKAgICAcFoEQAJAIAKnLQAFQRBxRQ0AIAAgAhD8AiIERQRAIAAgAhAMDAULIAAgBEYNACAAIAIgBCkDQBBNRQ0AIAAgAhAMDAILIAAgAkHVASACQQAQESEBIAAgAhAMIAFCgICAgHCDIgJCgICAgOAAUQ0EQoCAgIAwIAEgAkKAgICAIFEbIQILIAJCgICAgHCDQoCAgIAwUg0BCyAAQoCAgIAwQQEgA0EIahDgAiEBDAILIAAgAkEBIANBCGoQowEhASAAIAIQDAwBC0KAgICA4AAhAQsgA0EQaiQAIAELRwEEfyAAKAL0ASIDQQAgA0EAShshAwNAIAIgA0YEQEEADwsgAkEEdCEFIAJBAWohAiAFIAAoAvwBaiIEKAIMIAFHDQALIAQLNgADQCABIAJMRQRAIABBtQEQDSAAIAFB\u002F\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\u002FIAJCgICAgMCBgPz\u002FAHwiBEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FB4MhAiAEQj+IpyEAAkACQCAEQjSIp0H\u002FD3EiAwRAIANB\u002Fw9HDQEgAlBFBEAgARAqQQAMBAsgASAAEH9BAAwDCyACUARAIAEgABCAAUEADAMLIAJCDIYiAiACeSIEhiECQQAgBKdrIQMMAQsgAkILhkKAgICAgICAgIB\u002FhCECCyABIANB\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\u002F\u002F\u002F8fcSEEDAELCyAEQf\u002F\u002F\u002F\u002F8DSw0AIAYoAhQgB2opAwAiEEKAgICAcINCgICAgJB\u002FUg0AIAAgEBCoASIERQ0AIARB8f8AIAQtAAAbIQIgBCEDCyAFIAI2AiAgBUHQAGpB6CogBUEgahDzASAAIAMQMQJAIAgoAggiAi8BBhDgAQRAIAIoAiAiBi8AESICQQt2QQFxIQogAkGACHFFDQFBfyEDAkAgBigCUCICRQ0AIAgoAiAgBigCFEF\u002Fc2ohDyACIAYoAkxqIQkgBigCRCEEQQAhDQNAIAQhAyACIAlPDQEgAkEBaiEHAn8gAi0AACICRQRAAkAgBUHoAGogByAJELsFIgtBAEgNACAFKAJoIQ5BACEEIwBBEGsiAiQAAkAgAkEMaiAHIAtqIgsgCRC7BSIHQQBIBEBBfyEHDAELIAIoAgwiBEEBdkEAIARBAXFrcyEECyAFIAQ2AmwgAkEQaiQAIAdBAEgNACAFKAJsIANqIQQgByALagwCCyAGKAJEIQMMAwsgAyACQQFrIgIgAkH\u002FAXFBBW4iDkEFbGtB\u002FwFxakEBayEEIAcLIQIgDSAOaiINIA9NDQALCyAFIAAgBigCQBCPBCICQZ6AASACGzYCECAFQdAAaiIEQdUqIAVBEGoQ8wEgACACEDEgA0F\u002FRwRAIAUgAzYCACAEQdPrACAFEPMBCyAFQdAAakEpEA4MAQtBACEKIAVB0ABqQbuJAUEAEPMBCyAFQdAAakEKEA4gCkUNAAsLIAVB0ABqQQAQDkKAgICAICEQIAUoAlxFBEAgACAFKAJQEGAhEAsgBUHQAGoQiQEgACABQTYgEEEDEBUaIAVB8ABqJAALjwMCA38EfiMAQRBrIgMkACABQQhrIgQpAwAhBgJ\u002FAkACQCAAIAFBEGsiASkDABBlIgdCgICAgHCDQoCAgIDgAFEEQCAAIAYQDAwBCyAAIAYQZSIGQoCAgIBwg0KAgICA4ABRBEAgACAHEAwMAQsgB0IgiCIIQvb\u002F\u002F\u002F8PUiAGQiCIIglC9v\u002F\u002F\u002Fw9ScUUEQCAIIAlSBEAgACAHEAwgACAGEAwgAEH2GUEAEBIMAgsgACACIAEgByAGIAAoAhAoAqwCESMADQEMAgsgACADQQxqIAcQlQEEQCAAIAYQDAwBCyAAIANBCGogBhCVAQ0AIAECfwJAAkACQAJAAkACQCACQa4Baw4DAQMCAAsCQCACQaEBaw4CBQAECyADKAIMIAMoAgh1DAULIAMoAgggAygCDHEMBAsgAygCCCADKAIMcgwDCyADKAIIIAMoAgxzDAILEAEACyADKAIMIAMoAgh0C603AwAMAQsgAUKAgICAMDcDACAEQoCAgIAwNwMAQX8MAQtBAAshBSADQRBqJAAgBQuGBQIHfwJ+AkAgAUKAgICAcINCgICAgJB\u002FUgRAQoCAgIDgACEKIAAgARA0IgFCgICAgHCDQoCAgIDgAFENAQsCQCACQoCAgIBwg0KAgICAkH9RDQBCgICAgOAAIQogACACEDQiAkKAgICAcINCgICAgOAAUg0AIAEhAgwBCwJAIAKnIgUpAgQiCkL\u002F\u002F\u002F\u002F\u002FB4NQDQAgAaciAykCBCELAkAgAygCAEEBRyAKIAuFQoCAgIAIg0IAUnINACADIAAoAhAoAgwRBQAgBSkCBCIKpyIEQf\u002F\u002F\u002F\u002F8HcSIHIAMpAgQiC6ciBkH\u002F\u002F\u002F\u002F\u002FB3EiCGogBEEfdnQgBkEfdiIJQRFzakkNACAFQRBqIQYgA0EQaiEEIAkEQCAEIAhBAXRqIAYgB0EBdBAeGiADIAMpAgQiCiAFKQIEfEL\u002F\u002F\u002F\u002F\u002FB4MgCkKAgICAeIOENwIEDAILIAQgCGogBiAHEB4aIAMgAykCBCIKIAUpAgR8Qv\u002F\u002F\u002F\u002F8HgyILIApCgICAgHiDhDcCBCAEIAunakEAOgAADAELAn4CQAJAIAunQf\u002F\u002F\u002F\u002F8HcSAKp0H\u002F\u002F\u002F\u002F\u002FB3FqIgdBgICAgARPBEAgAEHkyABBABA6DAELIAAgByAKIAuEpyIGQR92EOkBIggNAQtCgICAgOAADAELIAhBEGohBAJAIAZBAE4EQCAEIANBEGogAygCBEH\u002F\u002F\u002F\u002F\u002FB3EQHiIEIAMoAgRB\u002F\u002F\u002F\u002F\u002FwdxaiAFQRBqIAUoAgRB\u002F\u002F\u002F\u002F\u002FwdxEB4aIAQgB2pBADoAAAwBCyAEIAMgAygCBEH\u002F\u002F\u002F\u002F\u002FB3EQkwUgBCADKAIEQQF0aiAFIAUoAgRB\u002F\u002F\u002F\u002F\u002FwdxEJMFCyAIrUKAgICAkH+ECyEKIAAgARAMDAELIAEhCgsgACACEAwgCgsPACAAIAFCgICAgDAQggILCwAgAEGfCUEAEBILjgIBA38jAEEQayIFJAAgBSAAOQMIIAUgAUEBayIHNgIAIAZBgAFB9t8AIAUQSBogAyAGLQAAQS1GNgIAIAQgBi0AAToAACABQQJOBEAgBEEBaiAGQQNqIAcQHhoLIAEgBGpBADoAACACIQkgASAGaiABQQFKakECaiEBA0AgASICQQFqIQEgAiwAACIDEI8GDQALQQEhBAJAAkACQCADQf8BcUEraw4DAQIAAgtBACEECyABLAAAIQMgASECC0EAIQEgA0EwayIDQQlNBEADQCABQQpsIANrIQEgAiwAASEIIAJBAWohAiAIQTBrIgNBCkkNAAsLIAlBACABayABIAQbQQFqNgIAIAVBEGokAAuADAIHfwV+IwBBoANrIgUkAAJAIAG9IgxCgICAgICAgPj\u002FAINCgICAgICAgPj\u002FAFEEQCAMQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoGAgICAgID4\u002FwBaBEAgBUHOwrkCNgKgAgwCCyAFQaACaiICIQMgAUQAAAAAAAAAAGMEQCAFQS06AKACIAJBAXIhAwsgA0HZCy0AADoACCADQdELKQAANwAADAELAkACQAJAIARFBEACfiABmUQAAAAAAADgQ2MEQCABsAwBC0KAgICAgICAgIB\u002FCyINQoCAgICAgIAQfUKBgICAgICAYFQgDbkgAWJyDQEgBUEAOgDlASANIA1CP4ciDIUgDH0hDCACrSEOIAVB5QFqIQIDQCACIgNBAWsiAiAMIAwgDoAiDyAOfn2nIgRBMHIgBEHXAGogBEEKSRs6AAAgDCAOWiELIA8hDCALDQALIA1CAFMEQCADQQJrIgJBLToAAAsgBUGgAmogAhCHBgwEC0QAAAAAAAAAACABIAFEAAAAAAAAAABhGyEBIARBAkYEQEEAIQICQCAFQaACaiIEIAEgA0EBaiIHQQAQiQMgBWotAJ8CQTVHDQAgBCABIAdBgAgQiQMiBiAFQaABaiIIIAEgB0GAEBCJA0cNACAEIAggBhBoDQBBgAhBgBAgBS0AoAJBLUYbIQILIAVBoAJqIAEgAyACEIkDGgwECyAEQQNxQQFGDQELIAVBnwFqIQZBESEHQQEhAgNAIAIgB08EQEEAIQJBFSEDDAMLIAEgAiAHakEBdiIDIAVBHGogBUEgaiAFQaABakEAIAVBoAJqIggQuQIgCBCABiABYQRAQQEgAyADQQBKGyEHA0AgA0ECSA0CIAMgBmotAABBMEcEQCADIQcMAwUgA0EBayEDDAELAAsABSADQQFqIQIMAQsACwALQQAhAiABIANBAWoiByAFQRxqIgkgBUEYaiIKIAVBoAFqIgZBACAFQaACaiIIELkCAkAgAyAGai0AAEE1Rw0AIAEgByAJIAogBkGACCAIELkCIAEgByAFQRRqIAVBEGogBUEgaiIJQYAQIAgQuQIgBiAJIAcQaA0AIAUoAhwgBSgCFEcNAEGACEGAECAFKAIYGyECCyADIQcLIAEgByAFQRxqIAVBIGogBUGgAWogAiAFQaACaiICELkCIAUoAiAEQCAFQS06AKACIAJBAXIhAgsgBSgCHCEGAkAgBEEEcQ0AIAMgBkggBkEATHJFBEAgBiAHTgRAQQAhAyAGIAdrIgRBACAEQQBKGyEEIAIgBUGgAWogBxAeIAdqIQIDQCADIARHBEAgAkEwOgAAIANBAWohAyACQQFqIQIMAQsLIAJBADoAAAwDCyACIAVBoAFqIAYQHiAGaiICQS46AABBACEDIAcgBmsiBEEAIARBAEobIQQDQCACQQFqIQIgAyAERwRAIAIgBUGgAWogAyAGamotAAA6AAAgA0EBaiEDDAELCyACQQA6AAAMAgsgBkEFakEFSw0AIAJBsNwAOwAAQQAhA0EAIAZrIQQgAkECaiECA0AgAyAERwRAIAJBMDoAACADQQFqIQMgAkEBaiECDAELCyACIAVBoAFqIAcQHiAHakEAOgAADAELIAIgBS0AoAE6AAACQCAHQQJIBEAgAkEBaiECDAELIAJBLjoAASACQQJqIQJBASEDA0AgAyAHRg0BIAIgBUGgAWogA2otAAA6AAAgA0EBaiEDIAJBAWohAgwACwALIAJB5QA6AAAgBkEBayEDIAZBAEwEfyACQQFqBSACQSs6AAEgAkECagshAiAFIAM2AgAjAEEQayIEJAAgBCAFNgIMIwBBoAFrIgMkACADQQhqIgdBgNIEQZABEB4aIAMgAjYCNCADIAI2AhwgA0H\u002F\u002F\u002F\u002F\u002FB0F+IAJrIgYgBkH\u002F\u002F\u002F\u002F\u002FB0sbIgY2AjggAyACIAZqIgY2AiQgAyAGNgIYIAdB7usAIAUQkwQgAkF+RwRAIAMoAhwiAiACIAMoAhhGa0EAOgAACyADQaABaiQAIARBEGokAAsgACAFQaACahBgIRAgBUGgA2okACAQCykBAX8gAUIgiKdBdU8EQCABpyIDIAMoAgBBAWo2AgALIAAgASACEJIBC00BAX8CQCAAIAEgACgCBEH\u002F\u002F\u002F\u002F\u002FB3EiACABKAIEQf\u002F\u002F\u002F\u002F8HcSICIAAgAkgbEOoFIgENAEEAIQEgACACRg0AQX9BASAAIAJJGyEBCyABCwoAIAAgARC1A0ULiwMCA38BfCMAQSBrIgQkAAJAAkACQAJAAkAgAkIgiKciBUEDTwRAIAVBdkcNASAEQRxqIAKnQQRqIgNBARDtASAAKALYASAEQQhqIgUQuwEgBSAENQIcEDIaIAUgAxC9AiEGIAUQGSAAIAIQDCAGRQ0CDAQLIAKnIgNBAEgNASAEIAM2AhwMAwsgBUEHa0FtTQRAIAQCfyACQoCAgIDAgYD8\u002FwB8vyIHRAAAAAAAAPBBYyAHRAAAAAAAAAAAZnEEQCAHqwwBC0EACyIDNgIcIAcgA7hhDQMMAQsgAwRAQX8hAyAAIAIQlgEiAkKAgICAcINCgICAgOAAUQ0EIAAgBEEcaiACQQEQvgJFDQMMBAsgACAEQRxqIAIQdQRAIAAgAhAMDAILQX8hAyAAIAIQlgEiAkKAgICAcINCgICAgOAAUQ0DIAAgBEEEaiACQQAQvgINAyAEKAIEIAQoAhxGDQILIABBiscAQQAQRAtBfyEDDAELIAEgBCgCHDYCAEEAIQMLIARBIGokACADC0ABAX4gABDiASICQoCAgIBwg0KAgICA4ABSBEAgAqdBBGogARCcAkUEQCACDwsgACACEAwgABBwC0KAgICA4AALMgEBfyMAQdAAayICJAAgAiAAIAJBEGogARCBATYCACAAQbzpACACEMMCIAJB0ABqJAALoAECAX8BfiMAQRBrIgUkACAFIAQ2AgxBfyEEIAAgASAFQQxqENMBRQRAIAMoAgAiAEF8cSABIAIgAygCBCAAQQNxQQJ0QYS3AWooAgARGwAhBiADEOAFIAUoAgwiACAAKAIAQf\u002F\u002F\u002F\u002F8DcTYCACADQoCAgIAwIAYgBkKAgICAcINCgICAgOAAUSIAGzcDAEF\u002FQQAgABshBAsgBUEQaiQAIAQLFQECfiAAIAEQ6AEhAyAAIAEQDCADCw0AIAAgASACQQIQyAIL1QEBA38jAEEQayIFJABBfyEDAkAgACgCFA0AAkACQCABQYCAgIAETgRAIAAoAgBB5MgAQQAQOgwBCyABIAAoAgxBA2xBAm0iBCABIARKGyEBIAAoAhAiBCACQYACSHJFBEAgACABEOADIQMMAwsgACgCACAAKAIEIAEgBHQgBGtBEWogBUEMahCnASICDQELIAAQ9wIMAQsgBSgCDCEDIAAgAjYCBCAAQf\u002F\u002F\u002F\u002F8DIAMgACgCEHYgAWoiACAAQf\u002F\u002F\u002F\u002F8DThs2AgxBACEDCyAFQRBqJAAgAwsqAQF\u002FIAAoAhAiA0EQaiABIAIgAygCCBEBACIBIAJFckUEQCAAEHALIAELgQECAn8BfgJAIAEpAgQiBEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F79\u002FVgRAIAEoAgwhAAwBCyAAKAI0IARCIIinIAAoAiRBAWtxQQJ0aiECIAAoAjghAwNAIAMgAigCACIAQQJ0aigCACICIAFGDQEgAkEMaiECIAANAAtBxocBQajsAEH\u002FFEH4DhAAAAsgAAupBwIJfwF+AkACQAJAAn8gAkECTARAIAIgASkCBCIMQj6Ip0YEQCAAIAEQxgIiBEHXAUoNBSABIAEoAgBBAWs2AgAgBA8LIAAoAjQgACgCJEEBayABIAIQ6wVB\u002F\u002F\u002F\u002F\u002FwNxIgdxIgpBAnRqIQMgDKdB\u002F\u002F\u002F\u002F\u002FwdxIQUDQCACIAMoAgAiBEUNAhoCQCAAKAI4IARBAnRqKAIAIgMpAgQiDKdB\u002F\u002F\u002F\u002F\u002FwdxIAVHIAxCPoinIAJHciAMQiCIp0H\u002F\u002F\u002F\u002F\u002FA3EgB0dyDQAgAyABIAUQ6gUNACAEQdgBSA0EIAMgAygCAEEBajYCAAwECyADQQxqIQMMAAsACyACQQNHIQdBAwshBQJAIAAoAjwNAEEAIQQgAEEQaiILIAAoAjhB0wEgACgCLEEDbEECbSICIAJB0wFMGyICQQJ0IAAoAggRAQAiCEUNASAAKAIsIgkhAyAJRQRAIAtBECAAKAIAEQMAIgZFBEAgCyAIIAAoAgQRAAAMAwsgBkKAgICAgICAgEA3AgQgBkEBNgIAIAZBADYADCAIIAY2AgAgACAAKAIoQQFqNgIoQQEhAwsgACADNgI8IAAgCDYCOCAAIAI2AiwgCSACIAIgCUkbIQQgAkEBayEGA0AgAyAERg0BIAAoAjggA0ECdGpBASADQQFqIgJBAXRBAXIgAyAGRhs2AgAgAiEDDAALAAsCQCABBEAgASkCBCIMQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP1gEQCABIAwgBa1CPoaENwIEDAILIABBEGogDKciAkEfdSACQf\u002F\u002F\u002F\u002F8HcSACQR92dGpBEWogACgCABEDACICRQRAQQAhBAwECyACQQE2AgAgAiACKQIEQv\u002F\u002F\u002F\u002F93gyABKQIEQoCAgIAIg4QiDDcCBCACIAxCgICAgHiDIAEpAgRC\u002F\u002F\u002F\u002F\u002FweDhDcCBCACQRBqIAFBEGogASgCBCIDQf\u002F\u002F\u002F\u002F8HcSADQR92dCADQX9zQR92ahAeGiAAIAEQkAQgAiEBDAELIABBEGpBECAAKAIAEQMAIgFFBEBBAA8LIAFCgYCAgICAgICAfzcCAAsgACAAKAI4IAAoAjwiBEECdGoiAigCAEEBdjYCPCACIAE2AgAgASAENgIMIAEgATUCBCAHrUIghoQgBa1CPoaENwIEIAAgACgCKEEBajYCKCAFQQNGDQIgASAAKAI0IApBAnRqIgEoAgA2AgwgASAENgIAIAAoAiggACgCMEgNAiAAIAAoAiRBAXQQ1QUaDAILIAFFDQELIAAgARCQBCAEDwsgBAsmAQF\u002FIwBBEGsiBCQAIAQgAjYCDCAAIAMgASACEI4EIARBEGokAAunAQEDfyMAQaABayIEJAAgBCAAIARBngFqIAEbIgU2ApQBQX8hACAEIAFBAWsiBkEAIAEgBk8bNgKYASAEQQBBkAEQLCIEQX82AkwgBEGmAzYCJCAEQX82AlAgBCAEQZ8BajYCLCAEIARBlAFqNgJUAkAgAUEASARAQcTUBEE9NgIADAELIAVBADoAACAEIAIgA0GkA0GlAxCUBCEACyAEQaABaiQAIAALCQAgAL1CNIinC5kBAQN8IAAgAKIiAyADIAOioiADRHzVz1o62eU9okTrnCuK5uVavqCiIAMgA0R9\u002FrFX4x3HPqJE1WHBGaABKr+gokSm+BARERGBP6CgIQUgAyAAoiEEIAJFBEAgBCADIAWiRElVVVVVVcW\u002FoKIgAKAPCyAAIAMgAUQAAAAAAADgP6IgBSAEoqGiIAGhIARESVVVVVVVxT+ioKELkgEBA3xEAAAAAAAA8D8gACAAoiICRAAAAAAAAOA\u002FoiIDoSIERAAAAAAAAPA\u002FIAShIAOhIAIgAiACIAJEkBXLGaAB+j6iRHdRwRZswVa\u002FoKJETFVVVVVVpT+goiACIAKiIgMgA6IgAiACRNQ4iL7p+qi9okTEsbS9nu4hPqCiRK1SnIBPfpK+oKKgoiAAIAGioaCgC40BACAAIAAgACAAIABECff9DeE9Aj+iRIiyAXXg70k\u002FoKJEO49otSiCpL+gokRVRIgOVcHJP6CiRH1v6wMS1tS\u002FoKJEVVVVVVVVxT+gIACiIAAgACAAIABEgpIuscW4sz+iRFkBjRtsBua\u002FoKJEyIpZnOUqAECgokRLLYocJzoDwKCiRAAAAAAAAPA\u002FoKMLngMDAX4DfwN8AkACQAJAAkAgAL0iAUIAWQRAIAFCIIinIgJB\u002F\u002F8\u002FSw0BCyAAvUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag1AEQEQAAAAAAADwvyAAIACiow8LIAFCAFkNASAAIAChRAAAAAAAAAAAow8LIAJB\u002F\u002F+\u002F\u002FwdLDQJBgIDA\u002FwMhA0GBeCEEIAJBgIDA\u002FwNHBEAgAiEDDAILIAGnDQFEAAAAAAAAAAAPCyAARAAAAAAAAFBDor0iAUIgiKchA0HLdyEECyAEIANB4r4laiICQRR2arciBkQAAOD+Qi7mP6IgAUL\u002F\u002F\u002F\u002F\u002FD4MgAkH\u002F\u002Fz9xQZ7Bmv8Daq1CIIaEv0QAAAAAAADwv6AiACAAIABEAAAAAAAAAECgoyIFIAAgAEQAAAAAAADgP6KiIgcgBSAFoiIFIAWiIgAgACAARJ\u002FGeNAJmsM\u002FokSveI4dxXHMP6CiRAT6l5mZmdk\u002FoKIgBSAAIAAgAEREUj7fEvHCP6JE3gPLlmRGxz+gokRZkyKUJEnSP6CiRJNVVVVVVeU\u002FoKKgoKIgBkR2PHk17znqPaKgIAehoKAhAAsgAAvvAgEIfyMAQRBrIgQkACAEQfz7ADYCDCAEQvXXgICgjwU3AgQCQAJAIAFFDQADQCACQQNGBEAgAUEBcSIHRSABQQZxRXIhCQNAIAZB8gJGDQMCQAJAIAUgBkECdEGggAJqKAIAIgJBBHZBD3EiCHZBAXFFDQAgAkEPdiEBIAJBCHZB\u002FwBxIQMCQAJAAkAgCEEEaw4CAAECCyAJRQ0BIAEgB2ohCEEAIQIDQCACIANPDQMgAiAIaiEBIAJBAmohAiAAIAEgAUEBahBpRQ0ACwwDCyAJRQ0AIAFBAWohAyAHRQRAIAAgASADEGkNAwtBfyECIAAgAyABQQJqIgMQaQ0HIAdFDQEgACADIAFBA2oQaUUNAQwHCyAAIAEgASADahBpDQELIAZBAWohBgwBCwtBfyECDAMFIAEgAnZBAXEEQCAEQQRqIAJBAnRqKAIAIAVyIQULIAJBAWohAgwBCwALAAtBACECCyAEQRBqJAAgAguQAgEJfyMAQRBrIgQkAAJAIARBDGogAEHQzQNBHRCaBiIBQQBIDQAgAUGwzgNqIQIgBCgCDCEBA0AgASEGIAItAAAiB8AhCQJAIAdBP3EiAUEwSQRAIAJBAWohBQwBCwJ\u002FIAFBN00EQCACQQJqIQUgAUEIdCEBIAItAAEhCEGwoH8MAQsgAkEDaiEFIAItAAEgAUHI\u002F\u002F8HanJBCHQhCCACLQACIQFBsBALIQIgASACaiAIaiEBCyAFIAlBAE5qIQIgASAGakEBaiIBIABNDQALAkACQAJAIAdBBnYOAwABAwILIAJBAWstAAAhAwwCCyACQQFrLQAAIAAgBmtqIQMMAQtB5gEhAwsgBEEQaiQAIAMLUwEBfyABIAAoAgQiAkoEQCAAKAIMIAAoAgggASACQQNsQQJtIgIgASACShsiAUECdCAAKAIQEQEAIgJFBEBBfw8LIAAgATYCBCAAIAI2AggLQQALHwAgACABNgIMIABBADYCCCAAQgA3AgAgAEGaAzYCEAsqAQJ\u002FIwBBEGsiASQAIAFBBGogAEEBEJ0GGiABKAIEIQIgAUEQaiQAIAILawIBfgJ\u002FIAAoAgAhAwNAIAMtAAAiBEE6a0H\u002FAXFB9gFPBEAgAkIKfiAErUL\u002FAYN8QjB9IgJC\u002F\u002F\u002F\u002F\u002FwdUIgQgAXIEQCACQv\u002F\u002F\u002F\u002F8HIAQbIQIgA0EBaiEDDAIFQX8PCwALCyAAIAM2AgAgAqcLCwAgAEHaC0EAED8LFgAgACABQf8BcRAOIAAgAkH\u002FAXEQDgtfAQN\u002FIwBBIGsiBSQAIAAoAgAhBiAFQgA3AhggBUKAgICAgICAgIB\u002FNwIQIAUgBjYCDCAFQQxqIgYgAa0QMiEBIAAgBiACIAMgBBCvAyEHIAYQGSAFQSBqJAAgByABcgtXAQJ\u002FIwBBIGsiBSQAIAAoAgAhBiAFQgA3AhggBUKAgICAgICAgIB\u002FNwIQIAUgBjYCDCAFQQxqIgYgAhCcAhogACABIAYgAyAEEEAaIAYQGSAFQSBqJAALTAEEfyAAKAIMIQIDQAJAIAEgAkcEfyAAKAIQIAFBAnRqKAIAIgRFDQEgACgCCCAEaCABIAJrQQV0cmoFQQALDwsgAUEBaiEBDAALAAs5AQJ\u002FIAFBACABQQBKGyEBA0AgASACRgRAQQAPCyACQQJ0IQMgAkEBaiECIAAgA2ooAgBFDQALQQELPwECfwNAIAFFIAIgA01yRQRAIAAgA0ECdGoiBCABIAQoAgAiAWoiBDYCACABIARLIQEgA0EBaiEDDAELCyABC4AHAQx\u002FQQNBgICAgAJBAUEcIAJBBXZBP3EiBWt0IAVBP0YbIg5rIQ8CQAJAAkACQAJAAkACfyACQRBxBEBB\u002F\u002F\u002F\u002F\u002FwMgAUH\u002F\u002F\u002F\u002F\u002FA0YNARogACgCCCABagwBCyABIgYgAkEIcUUgACgCCCIFIA9Ocg0AGiAGQf\u002F\u002F\u002F\u002F8DRg0BIA5BA2sgBmogBWoLIQYgA0EFdCELIAJBB3EiDUEGRgRAIAAoAhAiCCADIAsgBkF\u002Fc2oQmgIhBwwDCyAAKAIQIQgCfyALQX8gBiAGQQBIG2tBAmsiDEEFdSIFQQBIBEBBAAwBC0EBIQlBASAIIAVBAnRqKAIAQX9BfiAMdEF\u002FcyAMQR9xQR9GG3ENABoDQCAFQQBKIQlBACAFQQBMDQEaIAggBUEBayIFQQJ0aigCAEUNAAtBAQsgCCADIAsgBkF\u002Fc2oQmgIiBXIhCgJAAkACQAJAAkAgDQ4HAAYBAQMCAwQLIAkgBUVyBEAgBUEARyEHDAYLIAggAyALIAZrEJoCIQcMBQsgCkEAIAAoAgQgDUECRkYbIQcMBAtBASEHIAoNBCAGQQBKDQYMBwsgBSEHIAoNAwwECxABAAtBtfgAQdjsAEGKBEGz4QAQAAALIApFDQELIARBEHIhBAsgBkEATARAIAdFDQIgAEEBEFAaIAAoAhBBgICAgHg2AgAgACAAKAIIIAZrQQFqNgIIIARBGHIPCyAHRQ0AIAsgBmsiBUEFdSIHIAMgAyAHSRshDUEBIQpBASAFdCEJIAchBQNAIAUgDUYEQCADIQUDQCAFQQFrIgUgB0hFBEAgCCAFQQJ0aiIJIApBH3QgCSgCACIKQQF2cjYCAAwBCwsgACAAKAIIQQFqNgIIDAILIAggBUECdGoiDCAMKAIAIgwgCWoiEDYCAEEBIQkgBUEBaiEFIAwgEEsNAAsLIA8gACgCCCIFSgRAIAJBCHFFDQEgBEEBdkEIcSAEciEECyAFIA5KBEAgACAAKAIEIAEgAhC3Aw8LQQAhBSALIAZrIgJBBXUiAUEATgRAIAJBH3EiAgRAIAggAUECdGoiBSAFKAIAQX9BICACa3RBf3MgAnRxNgIACyABIQULA0AgBSIBQQFqIQUgCCABQQJ0aiICKAIARQ0ACyABQQBKBEAgCCACIAMgAWsiA0ECdBCrAQsgACADEFAaIAQPCyAAIAAoAgQQgAEgBEEYcgukAgEBfwJ\u002FAn8gAUH\u002FAE0EQCAAIAE6AAAgAEEBagwBCwJAIAFB\u002Fw9NBEAgACABQQZ2QcABcjoAACAAIQIMAQsCfyABQf\u002F\u002FA00EQCAAIAFBDHZB4AFyOgAAIABBAWoMAQsCQCABQf\u002F\u002F\u002FwBNBEAgACABQRJ2QfABcjoAACAAIQIMAQsCfyABQf\u002F\u002F\u002Fx9NBEAgACABQRh2QfgBcjoAACAAQQFqDAELQQAgAUEASA0FGiAAIAFBHnZB\u002FAFyOgAAIAAgAUEYdkE\u002FcUGAAXI6AAEgAEECagsiAiABQRJ2QT9xQYABcjoAAAsgAiABQQx2QT9xQYABcjoAASACQQJqCyICIAFBBnZBP3FBgAFyOgAACyACIAFBP3FBgAFyOgABIAJBAmoLIABrCwsNACAAIAEgARA9EHIaC1IBAn8CfyAAKAIEIgMgAmoiBCAAKAIISwR\u002FQX8gACAEELwBDQEaIAAoAgQFIAMLIAAoAgAiA2ogASADaiACEB4aIAAgACgCBCACajYCBEEACxoLpAICBH8BfiMAQRBrIgUkAAJAIAAgAUECEF4iCEKAgICAcINCgICAgOAAUQ0AAkACQCACQQFHDQAgAykDACIBQiCIpyIEQQAgBEELakESSRsNACAAIAVBDGogAUEBEL4CDQEgACAIQTACfiAFKAIMIgJBAE4EQCACrQwBC0KAgICAwH4gAri9IgFCgICAgMCBgPz\u002FAH0gAUKAgICAgICA+P8AVhsLEDlBAEgNAQwCC0EAIQQgAkEAIAJBAEobIQIDQCACIARGDQIgAyAEQQN0aikDACIBQiCIp0F1TwRAIAGnIgYgBigCAEEBajYCAAsgACAIIAQgARCGAiEHIARBAWohBCAHQQBODQALCyAAIAgQDEKAgICA4AAhCAsgBUEQaiQAIAgLjwECA34BfyAAIAIpAwAiA0EAEGsiBkUEQEKAgICA4AAPCyAAIANCgICAgDAQ\u002FQEiA0KAgICAcIMiBEKAgICA4ABRBEAgAw8LIAJBCGohAiAEQoCAgIAwUQRAIABCgICAgDAgACACIAYvAQYQpgYPCyAAIANBASABIAFBAUwbQQFrIAIQvwMhBSAAIAMQDCAFC28CAX4CfyABQoCAgIAIWQRAIABBiscAQQAQREKAgICA4AAPCyAAEDsiAkKAgICAcINCgICAgOAAUSABQgBXckUEQCAAIAKnIgMgAaciBBDYBUEASARAIAAgAhAMQoCAgIDgAA8LIAMgBDYCKAsgAgs+ACAAKAIAIAEgAiADEOUCIgBBAE4EQCABKAJ0IABBBHRqIgEgBEEDdEEIcSABKAIMQXRxckEDcjYCDAsgAAtwAQJ\u002FIAEoAgBBAEgEQCABIAAQLTYCAAsgAEEREA0gAEGxARANIAJBACACQQBKGyECIABB6gBBfxAYIQQDQCACIANGRQRAIABBDhANIANBAWohAwwBCwsgAEEGEA0gAEHsACABKAIAEBgaIAAgBBAaC2gAIAAgASACEEwiAEEATgRAIAEoAnQgAEEEdGoiAiACKAIMQY9+cSADQQR0QfABcXI2AgwgAiABKAK8ASIDNgIEIAIgASgCwAE2AgggASgCzAEgA0EDdGogADYCBCABIAA2AsABCyAAC20BAX8gACABQfwBakEQIAFB+AFqIAEoAvQBQQFqEGRFBEAgASABKAL0ASIDQQFqNgL0ASABKAL8ASADQQR0aiIDQX82AgAgAyADLQAEQfgBcToABCADIAEoArwBNgIIIAMgACACEBY2AgwLIAMLEQAgACABIAIgA0EAQQAQggELYgECfwJAAkAgACgCQCIAKAKYAiIBQQBIDQAgACgCgAIgAWotAAAiAEEjayIBQQ1NQQBBASABdEHl8ABxGw0BAkAgAEHsAGsOBAIBAQIACyAAQewBa0ECSQ0BC0EBIQILIAILTgEBf0F\u002FIQECQCAAQfsAECgNACAAKAIQQf0ARwRAIAAQdBoDQCAAQQcQ2wENAiAAKAIQQf0ARw0ACyAAENoBC0F\u002FQQAgABAPGyEBCyABC5gBAQV\u002FIAEoAhQiBUEAIAVBAEobIQYgAUEQaiEEAkADQCADIAZHBEAgBCgCACADQQN0aigCACACRg0CIANBAWohAwwBCwtBfyEDIAAgBEEIIAFBGGogBUEBahBkDQAgASABKAIUIgRBAWo2AhQgASgCECEHIAAgAhAWIQEgByAEQQN0aiIAQQA2AgQgACABNgIAIAYhAwsgAwtlAQF\u002FIABB+wAQRUUEQCAAQbXmAEEAEBNBAA8LAkAgABAPDQAgACgCEEGBf0cEQCAAQaXmAEEAEBNBAA8LIAAoAgAgACkDIBAwIgFFDQAgABAPRQRAIAEPCyAAKAIAIAEQEAtBAAuKFQEafyMAQeAAayIEJAAgACgCACEIIAAoAkAhBiAEQQA2AkwgACgCGCEUIAYgBi0AbiIWQQFyOgBuAn8CQAJAIAAQDw0AAkACQCAAKAIQQYN\u002FRgRAIAAoAihFDQEgABDcAQwDCyABIAJBAkZyDQEgAEGV1wBBABATDAILIAggACgCIBAWIQkgABAPDQILIAFFBEAgCCAJQf0AIAkbEBYhCgsgABB0GgJ\u002FIAAoAhAiEkFMRgRAIAAQDw0DIAAQogINA0EBDAELIABBBhANQQALIQEgCQRAIAAgBiAJQQIQnQFBAEgNAgsgAEH7ABAoDQEgEkFMRiEXIAAQdBogAEECEA0gBigChAIhGCAAQQAQOCAAQdYAEA0gACAJQRZBLyAKGyAJGxAXIAAgARBYIAYoApgCIRkDQCADQQJGRQRAIARBEGogA0EUbGoiASADNgIQIAFBADYCCCABQgA3AgAgA0EBaiEDDAELCyAEQQA2AkRBCUEIIBJBTEYbIRUgEkFMRyEaAkACQANAAkACfwJAAn8CQCAAKAIQIgVBO0cEQCAFQf0ARg0FIAVBVkYhASABDQFBAAwCC0EAIQMgABAPRQ0FDAkLQQAhAyAAEA8NCAJAIAAoAhAiBUH7AEcEQCAFQTtrDgMDAQMBCyAAIARBEGogAUEUbGoiBSgCACIBBH8gAQUgACAFEMIDDQogBSgCAAs2AkAgAEEHQQAgACgCGCAAKAIUQQAgBEHQAGoQ3QFBAEgNCSAAEHQaIABBuAEQDSAAQQgQFyAAQQAQFCAAQRsQDSAAQSQQDSAAQQAQFCAAQQ4QDSAAENoBIAAgACgCQCgCBDYCQAwFCyAAQRsQDUEBCyENIAAoAhghEyAAIARBzABqQQFBAEEBEMYDIQsgBCgCTCIDIAtBAE4NARoMBwsgBEEsNgJMIAAoAhghE0EAIQ1BACEBQQAhC0EsCyIDQT1HIAFyQQEgC0Hv\u002F\u002F\u002F\u002FB3EiDxtFIANB+QBGciADQTxGIAFxcgRAIABB2dYAQQAQEwwGCyALQRBxIQ4CQAJAAkACQCALQe7\u002F\u002F\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\u002F\u002F\u002F\u002F\u002FB4MgAVcNACAEQoCAgIAIg0IAUg0BCyABQgF8DAELIAMgAT4CDCAAIANBDGoQxgEaIAM0AgwLIQUgA0EQaiQAIAULLgEBfwJAIAFCgICAgHBUDQAgAaciAi8BBkESRw0AIAJBIGoPCyAAQRIQigNBAAunBQIJfwJ+IwBBIGsiAyQAAkAgASkDQCILQoCAgIBwg0KAgICAMFEEQEKAgICA4AAhDCAAQQsQhgEiC0KAgICAcINCgICAgOAAUQ0BIANCADcDGCADQgA3AxAgA0IANwMIIAAgA0EIaiABQQAQlgUhBCAAKAIQIgJBEGogAygCCCACKAIEEQAAAkACQCAEBEAgAygCFCEGDAELIAunIQcgAygCHCIIQQAgCEEAShshCSADKAIUIQZBACEEAkADQCAEIAlHBEACQAJAAkAgBiAEQQxsaiICKAIIIgUEQCADIAE2AgAMAQsCQCAAIAMgA0EEaiABIAIoAgAQ3wMiBQ4EAAYGAgYLIAMoAgQhBQsgBSgCDEH+AEYEQCACQQI2AgQgAiADKAIAKAIQIAUoAgBBA3RqKAIENgIIDAILIAJBATYCBCAFKAIEIgoEQCACIAo2AggMAgsgAiADKAIAKAJIKAIkIAUoAgBBAnRqKAIANgIIDAELIAJBADYCBAsgBEEBaiEEDAELCyAGIAhBDEE+IAAQ1wFBACEEA0AgBCAJRg0DAkACQAJAIAYgBEEMbGoiAigCBEEBaw4CAAECCyACKAIIIQUgACAHIAIoAgBBJhB3IgJFDQQgBSAFKAIAQQFqNgIAIAIgBTYCAAwBCyAAIAsgAigCAEEBIAIoAghBBhCAA0EASA0DCyAEQQFqIQQMAAsACyAAIAUgASACKAIAEN4DCyAAKAIQIgFBEGogBiABKAIEEQAAIAAgCxAMDAILIAAoAhAiBEEQaiAGIAQoAgQRAAAgACALQdIBIABB\u002FwAQKUEAEBUaIAcgBy0ABUH+AXE6AAUgASALNwNACyALQiCIp0F1TwRAIAunIgAgACgCAEEBajYCAAsgCyEMCyADQSBqJAAgDAszAQF\u002FIAAoAgAoAhAiAUEQaiAAKAIEIAEoAgQRAAAgAEEANgIMIABCADcCBCAAQX82AhQLugECBH8BfiAAKAIQIQUgACACQQN0QRhqECQiBEUEQA8LIAQgAjYCECAEIAE2AgwgBCAANgIIQQAhACACQQAgAkEAShshASAEQRhqIQIDQCAAIAFHBEAgAyAAQQN0IgZqKQMAIghCIIinQXVPBEAgCKciByAHKAIAQQFqNgIACyACIAZqIAg3AwAgAEEBaiEADAELCyAFKAKgASIAIAQ2AgQgBCAFQaABajYCBCAEIAA2AgAgBSAENgKgAQvCAgICfgd\u002FAkACQCAAIAEgAxBeIgFCgICAgHCDQoCAgIDgAFENAAJAAkAgAqciBigCICIIKAIMKAIgIgktAARFBEAgAEKAgICAMCAGKAIoIgqtIgUgA0HKngFqMQAAhhD6AiIEQoCAgIBwg0KAgICA4ABRDQIgBigCICgCDCgCIC0ABEUNASAAIAQQDAsgABBfDAELAkAgBEKAgICAcFQNACAEpyILLwEGQRNHDQAgCygCICEHCyAAIAEgBEIAIAUQ4wMNACAGLwEGIANGDQJBACEDA0AgAyAKRg0CIAAgAiADEKYBIgRCgICAgHCDQoCAgIDgAFENASAAIAEgAyAEEIYCIQwgA0EBaiEDIAxBAE4NAAsLIAAgARAMQoCAgIDgACEBCyABDwsgBygCCCAJKAIIIAgoAhBqIAcoAgAQHhogAQsNACAAIAEgAkETEOUDC5sFAQN\u002FIAFBEGohAyABKAIUIQIDQCACIANGRQRAIAJBGGshBCACKAIEIQIgACAEEPsCDAELCyAAKAIQIAEoAoACIAEoAoQCIAEoAqACEJkFIAFBgAJqEIkBIAAoAhAiAkEQaiABKALMAiACKAIEEQAAIAAoAhAiAkEQaiABKAKkAiACKAIEEQAAIAAoAhAiAkEQaiABKALYAiACKAIEEQAAQQAhAgNAIAEoArQCIQMgAiABKAK4Ak5FBEAgACADIAJBA3RqKQMAEAwgAkEBaiECDAELCyAAKAIQIgJBEGogAyACKAIEEQAAIAAgASgCcBAQQQAhAgNAIAEoAnQhAyACIAEoAnxORQRAIAAgAyACQQR0aigCABAQIAJBAWohAgwBCwsgACgCECICQRBqIAMgAigCBBEAAEEAIQIDQCABKAKAASEDIAIgASgCiAFORQRAIAAgAyACQQR0aigCABAQIAJBAWohAgwBCwsgACgCECICQRBqIAMgAigCBBEAAEEAIQIDQCABKAL8ASEDIAIgASgC9AFORQRAIAAgAyACQQR0aigCDBAQIAJBAWohAgwBCwsgACgCECICQRBqIAMgAigCBBEAAEEAIQIDQCABKALIAiEDIAIgASgCwAJORQRAIAAgAyACQQN0aigCBBAQIAJBAWohAgwBCwsgACgCECICQRBqIAMgAigCBBEAACABKALMASICIAFB0AFqRwRAIAAoAhAiA0EQaiACIAMoAgQRAAALIAAgASgC7AIQECABQfQCahCJASAAKAIQIgJBEGogASgCjAMgAigCBBEAACABKAIEBEAgASgCGCICIAEoAhwiAzYCBCADIAI2AgAgAUIANwIYCyAAKAIQIgBBEGogASAAKAIEEQAAC4wBAQJ\u002FAkADQCABQoCAgIBwVA0BAkACQAJAAkACQAJAIAGnIgIvAQYiA0EMaw4FBQEDBwEACyADQSxGDQEgA0Ewaw4FAAYGBgAGCyACKAIgKAIwDwsgAigCICICRQ0EIAItABFFDQEgABC4AkEADwsgAigCICECCyACKQMAIQEMAQsLIAIoAiAhAAsgAAuLAQIEfgF\u002FIAAQOyIEQoCAgIBwg0KAgICA4ABSBEAgAUEAIAFBAEobrSEGA0AgAyAGUQRAIAQPCyACIAOnQQN0aikDACIFQiCIp0F1TwRAIAWnIgEgASgCAEEBajYCAAsgACAEIAMgBUEAEMgBIQcgA0IBfCEDIAdBAE4NAAsgACAEEAwLQoCAgIDgAAsRACAAIAEgAiADIARBAhD+AwuTBgEHfyMAQSBrIgckACAHIAM2AhwCfwJAIAAoAgAgB0EEakEgED4NACABQeAARyEKAkACQANAIAMgACgCPCILTw0BAkAgAy0AACIGQR9LDQAgACgCQEUEQEHTyQAhBiACDQQMBQsgCkUEQCAGQQ1HDQFBCiEGIANBAWogAyADLQABQQpGGyEDDAELIAZBCmsOBAIAAAIACyAHIANBAWoiCTYCHAJAAkACQAJAAkACQCAEIAEgBkcEfyAGQdwARg0BIAZBJEcNAkEkIQYgCg0FIAktAABB+wBHDQUgByADQQJqNgIcQSQFIAELNgIYIARBgX82AgAgBCAHQQRqEDc3AxAgBSAHKAIcNgIAQQAMCgtBASEGAkACQAJAAkAgCS0AACIIQQprDgQCAwMBAAsgCEHcAEYgCEEiRnIgCEEnRnINBCAIDQIgCSALTw0JIAcgA0ECajYCHEEAIQYMBgtBAkEBIAMtAAJBCkYbIQYLIAcgAyAGakEBaiIDNgIcIAFB4ABGDQYgACAAKAIIQQFqNgIIDAYLAkACQAJAIAhBMGtB\u002FwFxQQlNBEAgACgCQCIGRQ0CIAFB4ABHBEAgBi0AbkEBcUUNAgsCQCAIQTBHDQAgAy0AAkEwa0H\u002FAXFBCkkNACAHIANBAmo2AhxBACEGDAgLIAFB4ABGIAhBN0tyDQJBw9sAIQYgAg0LDAwLIAjAQQBODQAgCUEGIAcQUSIGQYCAxABPDQcgByAHKAIAIgM2AhwgBkH+\u002F\u002F8AcUGowABGDQgMBgsgB0EcakEBEJcCIgZBf0cNAQtBh8QAIQYgAg0IDAkLIAZBAE4NAyAHIAcoAhxBAWo2AhwMAgsgBsBBAE4NAiADQQYgBxBRIgZB\u002F\u002F\u002FDAEsNAyAHIAcoAgA2AhwMAgsgByADQQJqNgIcCyAIIQYLIAdBBGogBhCxAQ0EIAcoAhwhAwwBCwtBst8AIQYgAg0BDAILQa3JACEGIAJFDQELIAAgBkEAEBMLIAcoAgQoAhAiAEEQaiAHKAIIIAAoAgQRAABBfwshDCAHQSBqJAAgDAvMAQEDfwJAIAFCgICAgHBaBEAgAaciBygCECIGQTBqIQggBiAGKAIYIAJxQX9zQQJ0aigCACEGAkADQCAGRQ0BIAIgCCAGQQN0aiIGQQRrKAIARwRAIAZBCGsoAgBB\u002F\u002F\u002F\u002FH3EhBgwBCwsQAQALIAAgByACIAVBB3FBMHIQdyICRQRAQX8PC0EBIQYgACAAKAIAQQFqNgIAIAIgADYCACAAQQNxDQEgAiAENgIEIAIgACADcjYCAAsgBg8LQfiGAUGo7ABB8cgAQbwKEAAACzABAX8jAEHQAGsiAyQAIAMgACADQRBqIAEQgQE2AgAgACACIAMQigIgA0HQAGokAAtoAQF+AkACQCAAEDMiA0KAgICAcINCgICAgOAAUQRAIAEhAwwBCyAAIANBwQAgAUEHEBVBAEgNACAAIANB6gAgAkEAR61CgICAgBCEQQcQFUEATg0BCyAAIAMQDEKAgICA4AAhAwsgAwsrACAAQf8ATQRAIABBA3ZB\u002FP\u002F\u002F\u002FwFxQaD\u002FAWooAgAgAHZBAXEPCyAAEJ4EC7YFAwJ+A38CfCABQQhrIgcpAwAhAwJAAkAgACABQRBrIgYpAwBBARCSASIEQoCAgIBwg0KAgICA4ABRBEAgAyEEDAELIAAgA0EBEJIBIgNCgICAgHCDQoCAgIDgAFENAAJAQQcgBEIgiKciASABQQdrQW5JGyIBQXlHQQcgA0IgiKciBSAFQQdrQW5JGyIFQXlHckUEQCAEpyADpxC8AiEBAn8CQAJAAkACQCACQaQBaw4DAAECAwsgAUEfdgwDCyABQQBMDAILIAFBAEoMAQsgAUF\u002Fc0EfdgshAiAAIAQQDCAAIAMQDAwBCwJAQQEgAXRBhwFxRSABQQdLciAFQQdLckEBQQEgBXRBhwFxG0UNAAJAIAFBdkYgBUF5RnEgAUF5RiIBIAVBdkZxcgRAAkAgAQRAIAAgBBCqAiIEQoCAgIBwg0KAgICA4H5SDQELIAVBeUcNAiAAIAMQqgIiA0KAgICAcINCgICAgOB+UQ0CCyAAIAQQDCAAIAMQDEEAIQIMAwsgACAEEGUiBEKAgICAcINCgICAgOAAUQRAIAMhBAwECyAAIAMQZSIDQoCAgIBwg0KAgICA4ABRDQMLQQcgA0IgiKciASABQQdrQW5JGyIFQXZHBEBBByAEQiCIpyIBIAFBB2tBbkkbIgFBdkcNAQsgACACIAQgAyAAKAIQKAKwAhErACICQQBODQEMAwsgA0KAgICAwIGA\u002FP8AfL8gA6e3IAVBB0YbIQggBEKAgICAwIGA\u002FP8AfL8gBKe3IAFBB0YbIQkCQAJAAkACQCACQaQBaw4DAAECAwsgCCAJZCECDAMLIAggCWYhAgwCCyAIIAljIQIMAQsgCCAJZSECCyAGIAJBAEetQoCAgIAQhDcDAEEADwsgACAEEAwLIAZCgICAgDA3AwAgB0KAgICAMDcDAEF\u002FC20CAn4Cf0F\u002FIQUCQCAAIAFBCGsiBikDACIEIAIQywEiA0KAgICAcINCgICAgOAAUQ0AIAAgBBAMIAYgAzcDACAAIANB6wAgA0EAEBEiA0KAgICAcINCgICAgOAAUQ0AIAEgAzcDAEEAIQULIAULPAEBfwNAIAIgA0ZFBEAgACABIANBA3RqKQMAEAwgA0EBaiEDDAELCyAAKAIQIgBBEGogASAAKAIEEQAAC4UBAQJ\u002FIwBBEGsiBSQAAkAgAkKAgICAcINCgICAgJB\u002FUgRAIAJCIIinQXVJDQEgAqciACAAKAIAQQFqNgIADAELIAAgBUEMaiACEN8BIgZFBEBCgICAgOAAIQIMAQsgACABIAYgBSgCDEHJ\u002FwAgAyAEELMFIQIgACAGEDELIAVBEGokACACC7wBAgN+AX8jAEEQayICJABCgICAgOAAIQUCQCAAIAEQVQ0AIAMpAwAhBgJAAkAgAykDCCIHQiCIpyIDQQNHBEAgBEECRg0CIANBAkYNAQwCCyAEQQJGDQELIAAgASAGQQBBABAcIQUMAQsgACACQQxqIAcQ\u002FQMiA0UNACACKAIMIQgCfiAEQQFxBEAgACABIAYgCCADEP4CDAELIAAgASAGIAggAxAcCyEFIAAgAyAIEIYDCyACQRBqJAAgBQtLACMAQRBrIgMkACADIAE5AwggAyACNgIAIABBgAFB6M0AIAMQSCIAQYABTgRAQc7OAEGo7ABBqtkAQaqDARAAAAsgA0EQaiQAIAALHAAgACAAKAIQKAJEIAFBGGxqKAIEQePlABC1AQtzAQN\u002FIwBBMGsiAiQAAn8gAadBgICAgHhyIAFC\u002F\u002F\u002F\u002F\u002FwdYDQAaIAIgATcDACACQRBqIgNBGEHI4wAgAhBIGkEAIAAgAxBgIgFCgICAgHCDQoCAgIDgAFENABogACgCECABp0EBEMcCCyEEIAJBMGokACAECz0BAX8gASAAKALgASABKAIUQSAgACgC1AFrdkECdGoiAigCADYCKCACIAE2AgAgACAAKALcAUEBajYC3AELQwACf0EAIAIoAgAoAgBBGnYgA0YNABpBfyAAIAEgAhDTAQ0AGiACKAIAIgAgACgCAEH\u002F\u002F\u002F8fcSADQRp0cjYCAEEACwu8AQEEf0F\u002FIQICQCAAIAFBABDTAQ0AIAEoAigiBCABKAIQIgMoAiBqIgUgAygCHEsEQCAAIAFBEGogASAFENYFDQELIAEoAiQhA0EAIQIDQCACIARGRQRAIAAgASACQYCAgIB4ckEHEHcgAykDADcDACACQQFqIQIgA0EIaiEDDAELCyAAKAIQIgBBEGogASgCJCAAKAIEEQAAQQAhAiABQQA2AiggAUIANwMgIAEgAS0ABUH3AXE6AAULIAILeQEDfwJAAkAgAEEBcSICDQAgAUGBAnFBgQJGIAFBgAhxQQAgACABc0EEcRtyDQEgAiABQYD0AHFFcg0AIABBMHEiAkEQRiABQYAwcSIEQQBHcw0BIABBAnEgAUGCBHFBggRHciACQRBGcg0AIARFDQELQQEhAwsgAwuBAgEEfyAAQoCAgIBwg0KAgICA4ABRBH9BtNQEKAIAKAIQIgIpA4ABIQAgAkKAgICAIDcDgAFBtNQEKAIAIABBsNcAEOgDIQJBtNQEKAIAIQMCQCACRQRAIAMgABAMDAELIAMgAEHxxQAQ6AMhA0G01AQoAgAhBCADRQRAIAQgAhAxQbTUBCgCACAAEAwMAQsgBCAAQcjaABDoAyEEQbTUBCgCACEFIARFBEAgBSACEDFBtNQEKAIAIAMQMUG01AQoAgAgABAMDAELIAUgABAMIAIgBCADIAEQC0G01AQoAgAgAhAxQbTUBCgCACADEDFBtNQEKAIAIAQQMQtBAQVBAAsLYQIBfwF+AkAgAUEASA0AAkACQAJAIAAoAhAoAjggAUECdGooAgApAgQiA0I+iKdBAWsOAwMCAAELQQEhAgJAIANCIIinQf\u002F\u002F\u002F\u002F8DcQ4CAwABC0ECDwsQAQALQQEhAgsgAgszACAAIAJBARDpASIARQRAQoCAgIDgAA8LIABBEGogASACQQF0EB4aIACtQoCAgICQf4QLPQIBfwJ+IAAgARDfBSIDQoCAgIBwgyIEQoCAgIAwUgR\u002FIARCgICAgOAAUgRAIAAgAxAMQQEPC0F\u002FBUEACwtOAgF\u002FAn4jAEEQayICJAACfiABQf8BTQRAIAIgAToADyAAIAJBD2pBARCcAwwBCyACIAE7AQwgACACQQxqQQEQkgMLIQQgAkEQaiQAIAQLBABBAAspAQJ\u002FAkAgAEKAgICAcFQNACAApyICLwEGEOABRQ0AIAIoAiAhAQsgAQsiACAAIAJBAWoQJCIABEAgACABIAIQHiACakEAOgAACyAACyEAIAAgAUEwIAOtQQEQFRogACABQTcgACACEClBARAVGgtPAQF\u002FIAEgAjYCDCABIAA2AgAgAUEANgIUIAEgAzYCECABQQA2AgggASAAIAIgAxDpASIANgIEIAAEf0EABSABQX82AhQgAUEANgIMQX8LC8IEAgl\u002FAX4CQAJAAkACQAJAIAJCgICAgHCDQoCAgICQf1IEQCAAIAIQJSICQoCAgIBwg0KAgICA4ABRDQIgAqchBAwBCyACpyIEIAQoAgBBAWo2AgALIARBEGohByAEKQIEIg2nQf\u002F\u002F\u002F\u002F8HcSEGAkAgDUKAgICACINQBEBBACEEQQAhAwNAIAQgBkZFBEAgAyAEIAdqLQAAQQd2aiEDIARBAWohBAwBCwsgA0UEQCAHIQQgAQ0EDAYLIAAgAyAGakEAEOkBIghFDQIgCEEQaiEEQQAhAwNAIAMgBkYNAiADIAdqLAAAIgVBAE4EfyAEQQFqBSAEIAVBvwFxOgABIAVBwAFxQQZ2QUByIQUgBEECagshDCAEIAU6AAAgA0EBaiEDIAwhBAwACwALIAAgBkEDbEEAEOkBIghFDQEgCEEQaiEEA0AgBSIKIAZODQEgBUEBaiEFIAcgCkEBdGovAQAiCUH\u002FAE0EQCAEIAk6AAAgBEEBaiEEBQJAIAlBgPgDcUGAsANHIANyIAUgBk5yDQAgByAFQQF0ai8BACILQYD4A3FBgLgDRw0AIAlBCnRBgPg\u002FcSALQf8HcXJBgIAEaiEJIApBAmohBQsgBCAJEN0CIARqIQQLDAALAAsgBEEAOgAAIAggBCAIQRBqIgdrQf\u002F\u002F\u002F\u002F8Hca0gCCkCBEKAgICAeIOENwIEIAAgAhAMIAFFDQIgCCgCBEH\u002F\u002F\u002F\u002F\u002FB3EhBgwBC0EAIQZBACEHQQAhBCABRQ0CCyABIAY2AgALIAchBAsgBAuIAgIFfwF+IAEoAgwhAgJAAkACQCABKQIEIgdCgICAgICAgIBAWgRAIAAoAjghBAwBCwJAIAEgACgCOCIEIAAoAjQgB0IgiKcgACgCJEEBa3FBAnRqIgMoAgAiBUECdGooAgAiBkYEQCADIAI2AgAMAQsDQCAGIQMgBUUNAyAEIAMoAgwiBUECdGooAgAiBiABRw0ACyADIAI2AgwLIAUhAgsgBCACQQJ0aiAAKAI8QQF0QQFyNgIAIAAgAjYCPCAAQRBqIAEgACgCBBEAACAAIAAoAigiAEEBazYCKCAAQQBMDQEPC0HGhwFBqOwAQd8WQdIdEAAAC0HVhQFBqOwAQfMWQdIdEAAAC0YAIAJBAEwEQCAAQS8QKQ8LIAAgAkEAEOkBIgBFBEBCgICAgOAADwsgAEEQaiABIAIQHiACakEAOgAAIACtQoCAgICQf4QLnwICBH8BfgJAAkAgAgRAIAEsAABBOmtBdUsNAQsCfyAAKAIQIQQgASACQQEQ7gUiA0H\u002F\u002F\u002F\u002F\u002FA3EhBiAEKAI0IAQoAiRBAWsgA3FBAnRqIQMDQAJAAkAgAygCACIFRQ0AIAQoAjggBUECdGooAgAiAykCBCIHQoCAgIAIg0IAUiAHp0H\u002F\u002F\u002F\u002F\u002FB3EgAkdyIAdCIIinQf\u002F\u002F\u002F\u002F8DcSAGRyAHQoCAgICAgICAQINCgICAgICAgIDAAFJycg0BIANBEGogASACEGgNASAFQdgBSA0AIAMgAygCAEEBajYCAAsgBQwCCyADQQxqIQMMAAsACyIDDQELQQAhAyAAIAEgAhDqASIHQoCAgIBwg0KAgICA4ABRDQAgACAHpxCRBCEDCyADC5IDAQN\u002FIAAgACgCACIBQQFrIgI2AgACQCABQQFKDQAgAkUEQCAAKAIQIQJBACEBIABBABD2BSAAIAApA8ABEAwgACAAKQPIARAMIAAgACkDsAEQDCAAIAApA7gBEAwgACAAKQOoARAMIABB2ABqIQMDQCABQQhGBEBBACEBA0AgACgCKCEDIAEgAigCQE5FBEAgACADIAFBA3RqKQMAEAwgAUEBaiEBDAELCyACQRBqIAMgAigCBBEAACAAIAApA5gBEAwgACAAKQOgARAMIAAgACkDUBAMIAAgACkDQBAMIAAgACkDSBAMIAAgACkDOBAMIAAgACkDMBAMIAAoAiQiAQRAIAAoAhAgARCMAgsgACgCFCIBIAAoAhgiAjYCBCACIAE2AgAgAEIANwIUIAAoAggiASAAKAIMIgI2AgQgAiABNgIAIABCADcCCCAAKAIQIgFBEGogACABKAIEEQAADAMFIAAgAyABQQN0aikDABAMIAFBAWohAQwBCwALAAtBtoYBQajsAEHqEUGWFBAAAAsL8QEBA38CfwJAIAFB\u002FwFxIgIiAwRAIABBA3EEQANAIAAtAAAiBEUgAiAERnINAyAAQQFqIgBBA3ENAAsLAkAgACgCACICQX9zIAJBgYKECGtxQYCBgoR4cQ0AIANBgYKECGwhAwNAIAIgA3MiAkF\u002FcyACQYGChAhrcUGAgYKEeHENASAAKAIEIQIgAEEEaiEAIAJBgYKECGsgAkF\u002Fc3FBgIGChHhxRQ0ACwsgAUH\u002FAXEhAwNAIAAiAi0AACIEBEAgAEEBaiEAIAMgBEcNAQsLIAIMAgsgABA9IABqDAELIAALIgBBACAALQAAIAFB\u002FwFxRhsLrAEDAXwBfgF\u002FIAC9IgJCNIinQf8PcSIDQbIITQR8IANB\u002FQdNBEAgAEQAAAAAAAAAAKIPCwJ8IAAgAJogAkIAWRsiAEQAAAAAAAAwQ6BEAAAAAAAAMMOgIAChIgFEAAAAAAAA4D9kBEAgACABoEQAAAAAAADwv6AMAQsgACABoCIAIAFEAAAAAAAA4L9lRQ0AGiAARAAAAAAAAPA\u002FoAsiACAAmiACQgBZGwUgAAsL1AMDA38EfAF+IAC9IghCIIinIQECQAJ8AnwCQCABQfmE6v4DSyAIQgBZcUUEQCABQYCAwP97TwRARAAAAAAAAPD\u002FIABEAAAAAAAA8L9hDQQaIAAgAKFEAAAAAAAAAACjDwsgAUEBdEGAgIDKB0kNBCABQcX9yv57Tw0BRAAAAAAAAAAADAILIAFB\u002F\u002F+\u002F\u002FwdLDQMLIABEAAAAAAAA8D+gIgS9IghCIIinQeK+JWoiAUEUdkH\u002FB2shAyAAIAShRAAAAAAAAPA\u002FoCAAIAREAAAAAAAA8L+goSABQf\u002F\u002Fv4AESxsgBKNEAAAAAAAAAAAgAUH\u002F\u002F7+aBE0bIQYgCEL\u002F\u002F\u002F\u002F\u002FD4MgAUH\u002F\u002Fz9xQZ7Bmv8Daq1CIIaEv0QAAAAAAADwv6AhACADtwsiBEQAAOD+Qi7mP6IgACAAIABEAAAAAAAAAECgoyIFIAAgAEQAAAAAAADgP6KiIgcgBSAFoiIFIAWiIgAgACAARJ\u002FGeNAJmsM\u002FokSveI4dxXHMP6CiRAT6l5mZmdk\u002FoKIgBSAAIAAgAEREUj7fEvHCP6JE3gPLlmRGxz+gokRZkyKUJEnSP6CiRJNVVVVVVeU\u002FoKKgoKIgBER2PHk17znqPaIgBqCgIAehoKALDwsgAAvvAQEDfyAARQRAQaDUBCgCAARAQaDUBCgCABCiAyEBC0HY1AQoAgAEQEHY1AQoAgAQogMgAXIhAQtBmNUEKAIAIgAEQANAIAAoAkwaIAAoAhQgACgCHEcEQCAAEKIDIAFyIQELIAAoAjgiAA0ACwsgAQ8LIAAoAkxBAEghAgJAAkAgACgCFCAAKAIcRg0AIABBAEEAIAAoAiQRAQAaIAAoAhQNAEF\u002FIQEMAQsgACgCBCIBIAAoAggiA0cEQCAAIAEgA2usQQEgACgCKBEQABoLQQAhASAAQQA2AhwgAEIANwMQIABCADcCBCACDQALIAEL6w8DB3wIfwJ+RAAAAAAAAPA\u002FIQMCQAJAAkAgAb0iEUIgiKciD0H\u002F\u002F\u002F\u002F\u002FB3EiCSARpyIMckUNACAAvSISQiCIpyEKIBKnIhBFIApBgIDA\u002FwNGcQ0AIApB\u002F\u002F\u002F\u002F\u002FwdxIgtBgIDA\u002FwdLIAtBgIDA\u002FwdGIBBBAEdxciAJQYCAwP8HS3JFIAxFIAlBgIDA\u002FwdHcnFFBEAgACABoA8LAkACQAJAAkACQAJ\u002FQQAgEkIAWQ0AGkECIAlB\u002F\u002F\u002F\u002FmQRLDQAaQQAgCUGAgMD\u002FA0kNABogCUEUdiENIAlBgICAigRJDQFBACAMQbMIIA1rIg52Ig0gDnQgDEcNABpBAiANQQFxawshDiAMDQIgCUGAgMD\u002FB0cNASALQYCAwP8DayAQckUNBSALQYCAwP8DSQ0DIAFEAAAAAAAAAAAgEUIAWRsPCyAMDQEgCUGTCCANayIMdiINIAx0IAlHDQBBAiANQQFxayEOCyAJQYCAwP8DRgRAIBFCAFkEQCAADwtEAAAAAAAA8D8gAKMPCyAPQYCAgIAERgRAIAAgAKIPCyAPQYCAgP8DRyASQgBTcg0AIACfDwsgAJkhAiAQDQECQCAKQQBIBEAgCkGAgICAeEYgCkGAgMD\u002Fe0ZyIApBgIBARnINAQwDCyAKRSAKQYCAwP8HRnINACAKQYCAwP8DRw0CC0QAAAAAAADwPyACoyACIBFCAFMbIQMgEkIAWQ0CIA4gC0GAgMD\u002FA2tyRQRAIAMgA6EiACAAow8LIAOaIAMgDkEBRhsPC0QAAAAAAAAAACABmiARQgBZGw8LAkAgEkIAWQ0AAkACQCAODgIAAQILIAAgAKEiACAAow8LRAAAAAAAAPC\u002FIQMLAnwgCUGBgICPBE8EQCAJQYGAwJ8ETwRAIAtB\u002F\u002F+\u002F\u002FwNNBEBEAAAAAAAA8H9EAAAAAAAAAAAgEUIAUxsPC0QAAAAAAADwf0QAAAAAAAAAACAPQQBKGw8LIAtB\u002Fv+\u002F\u002FwNNBEAgA0ScdQCIPOQ3fqJEnHUAiDzkN36iIANEWfP4wh9upQGiRFnz+MIfbqUBoiARQgBTGw8LIAtBgYDA\u002FwNPBEAgA0ScdQCIPOQ3fqJEnHUAiDzkN36iIANEWfP4wh9upQGiRFnz+MIfbqUBoiAPQQBKGw8LIAJEAAAAAAAA8L+gIgBERN9d+AuuVD6iIAAgAKJEAAAAAAAA4D8gACAARAAAAAAAANC\u002FokRVVVVVVVXVP6CioaJE\u002FoIrZUcV97+ioCICIAIgAEQAAABgRxX3P6IiAqC9QoCAgIBwg78iACACoaEMAQsgAkQAAAAAAABAQ6IiACACIAtBgIDAAEkiCRshAiAAvUIgiKcgCyAJGyIMQf\u002F\u002FP3EiCkGAgMD\u002FA3IhCyAMQRR1Qcx3QYF4IAkbaiEMQQAhCQJAIApBj7EOSQ0AIApB+uwuSQRAQQEhCQwBCyAKQYCAgP8DciELIAxBAWohDAsgCUEDdCIKQaClBGorAwAgAr1C\u002F\u002F\u002F\u002F\u002Fw+DIAutQiCGhL8iBCAKQZClBGorAwAiBaEiBkQAAAAAAADwPyAFIASgoyIHoiICvUKAgICAcIO\u002FIgAgACAAoiIIRAAAAAAAAAhAoCAHIAYgACAJQRJ0IAtBAXZqQYCAoIACaq1CIIa\u002FIgaioSAAIAQgBiAFoaGioaIiBCACIACgoiACIAKiIgAgAKIgACAAIAAgACAARO9ORUoofso\u002FokRl28mTSobNP6CiRAFBHalgdNE\u002FoKJETSaPUVVV1T+gokT\u002Fq2\u002Fbtm3bP6CiRAMzMzMzM+M\u002FoKKgIgWgvUKAgICAcIO\u002FIgCiIgYgBCAAoiACIAUgAEQAAAAAAAAIwKAgCKGhoqAiAqC9QoCAgIBwg78iAET1AVsU4C8+vqIgAiAAIAahoUT9AzrcCcfuP6KgoCICIApBsKUEaisDACIEIAIgAEQAAADgCcfuP6IiAqCgIAy3IgWgvUKAgICAcIO\u002FIgAgBaEgBKEgAqGhCyECIAEgEUKAgICAcIO\u002FIgShIACiIAIgAaKgIgIgACAEoiIBoCIAvSIRpyEJAkAgEUIgiKciCkGAgMCEBE4EQCAKQYCAwIQEayAJcg0DIAJE\u002FoIrZUcVlzygIAAgAaFkRQ0BDAMLIApBgPj\u002F\u002FwdxQYCYw4QESQ0AIApBgOi8+wNqIAlyDQMgAiAAIAGhZUUNAAwDC0EAIQkgAwJ8IApB\u002F\u002F\u002F\u002F\u002FwdxIgtBgYCA\u002FwNPBH5BAEGAgMAAIAtBFHZB\u002FgdrdiAKaiIKQf\u002F\u002FP3FBgIDAAHJBkwggCkEUdkH\u002FD3EiC2t2IglrIAkgEUIAUxshCSACIAFBgIBAIAtB\u002FwdrdSAKca1CIIa\u002FoSIBoL0FIBELQoCAgIBwg78iAEQAAAAAQy7mP6IiAyACIAAgAaGhRO85+v5CLuY\u002FoiAARDlsqAxhXCC+oqAiAqAiACAAIAAgACAAoiIBIAEgASABIAFE0KS+cmk3Zj6iRPFr0sVBvbu+oKJELN4lr2pWET+gokSTvb4WbMFmv6CiRD5VVVVVVcU\u002FoKKhIgGiIAFEAAAAAAAAAMCgoyAAIAIgACADoaEiAKIgAKChoUQAAAAAAADwP6AiAL0iEUIgiKcgCUEUdGoiCkH\u002F\u002Fz9MBEAgACAJENUBDAELIBFC\u002F\u002F\u002F\u002F\u002Fw+DIAqtQiCGhL8LoiEDCyADDwsgA0ScdQCIPOQ3fqJEnHUAiDzkN36iDwsgA0RZ8\u002FjCH26lAaJEWfP4wh9upQGiCysAIABBgAFPBH8gAEHPAU0EQCAAQYAFag8LIABBAXRBosoDai8BAAUgAAsLiwIBA38jAEEQayIEJAACQCAEQQxqIAAgAiADEJoGIgJBAEgNACABIAJqIQMgBCgCDCEBA0AgA0EBaiECAkAgAy0AACIFQT9NBEAgBUEDdiABakEBaiIBIABLDQMgBCAFQQdxIAFqQQFqIgE2AgwgBkEBcyEGDAELIAXAQQBIBEAgBCABIAVqQf8AayIBNgIMDAELIAItAAAhAiAFQd8ATQRAIAQgBUEIdCACciABakH\u002F\u002FwBrIgE2AgwgA0ECaiECDAELIAQgAy0AAiAFQRB0IAJBCHRyciABakH\u002F\u002F\u002F8CayIBNgIMIANBA2ohAgsgACABSQ0BIAZBAXMhBiACIQMMAAsACyAEQRBqJAAgBgtMAQN\u002FIwBBEGsiAyQAAn8gAiABKAIAIgQtAABHBEAgAyACNgIAIABBzJABIAMQP0F\u002FDAELIAEgBEEBajYCAEEACyEFIANBEGokACAFCx4AIABBMGtBCkkgAEFfcUHBAGtBGklyIABB3wBGcguoAQECfyAAKAJAGgJAIAAoAgQhAyAAIAEQpQYNAANAIAAoAhgiAi0AAEH8AEcEQEEADwsgACACQQFqNgIYIAAoAgQhAiAAIANBBRCWAgRAIAAQ1QJBfw8LIAAoAgAgA2pBCToAACAAKAIAIANqIAIgA2tBBWo2AAEgAEEHQQAQtwEhAiAAIAEQpQYNASAAKAIAIAJqIAAoAgQgAmtBBGs2AAAMAAsAC0F\u002FC0gBA38CQANAIAFBCkYNASABQQJ0QfL+AWovAQAgAEoNASABQQF0IQMgAUEBaiEBIANBAXRB9P4Bai8BACAATQ0AC0EBDwtBAAvrAQECfyMAQSBrIgQkAAJ\u002FAkAgACABRwRAIAEoAgxFBEACQAJAAkAgASgCCEH+\u002F\u002F\u002F\u002FB2sOAgEAAgsgABAqQQAMBQsgASgCBA0DIABBABB\u002FQQAMBAsgAEEBEH9BAAwDCyABKAIEDQEgACgCACEFIARCADcCGCAEQoCAgICAgICAgH83AhAgBCAFNgIMIARBDGoiBUIBEDIaIAEgBRC9AgRAIABBABCAASAFEBlBAAwDCyAEQQxqEBkgACABIAIgA0GXA0EAEKoEDAILQentAEHY7ABBzSNBzsgAEAAACyAAECpBAAsaIARBIGokAAvxAgEEfyMAQUBqIgYkAAJAIAQgA2siCEEBRgRAAkAgA0UEQCABQgMQMhoMAQsgASADrRAyGiABQQE2AgQLIAIgA0EBdEEBcq0QMhogAiACKAIIQQJqNgIIIAAgARBJGgwBCyAAKAIAIQcgACABIAIgAyAIQQF2IANqIgNBARCrAyAGQgA3AjggBkKAgICAgICAgIB\u002FNwIwIAYgBzYCLCAGQgA3AiQgBkKAgICAgICAgIB\u002FNwIcIAYgBzYCGCAGQgA3AhAgBkKAgICAgICAgIB\u002FNwIIIAYgBzYCBCAGQSxqIgcgBkEYaiIIIAZBBGoiCSADIAQgBRCrAyAAIAAgCUH\u002F\u002F\u002F\u002F\u002FA0EBEEAaIAcgByABQf\u002F\u002F\u002F\u002F8DQQEQQBogACAAIAdB\u002F\u002F\u002F\u002F\u002FwNBARC4ARogBQRAIAEgASAIQf\u002F\u002F\u002F\u002F8DQQEQQBoLIAIgAiAGQQRqIgBB\u002F\u002F\u002F\u002F\u002FwNBARBAGiAGQSxqEBkgBkEYahAZIAAQGQsgBkFAayQAC60GAQ5\u002FIwBB8ABrIgckAAJAAkACfyACIAJBAWsiBXFFBEAgASgCDEEFdCABKAIIQSAgBWdrIglvIgVrIAlBACAFQQBKG2ohDSAJQSAgCUH\u002FAXFuIgxsIQ8gAQwBCyACEK4EIQogASgCACEFIAdCADcCGCAHQoCAgICAgICAgH83AhAgByAFNgIMIAdBDGogAyACQb7+AWotAAAiDGpBAWsgDG4iDRBQDQFBACEFIAcoAgwiBigCAEEAQQRBxAAgBygCGCIJQQFrZ0EBdGsgCUECSRsiC0EUbCAGKAIEEQEAIghFDQEDQCAFIAtGRQRAIAggBUEUbGoiD0IANwIMIA9CgICAgICAgICAfzcCBCAPIAY2AgAgBUEBaiEFDAELC0EAIQUgCCAHKAIcIAEgCUEAIAkgCkEgIApBAWtna0EAIApBAk8bEKgEIRIDQCAFIAtGRQRAIAggBUEUbGoQGSAFQQFqIQUMAQsLQQAhCSAGKAIAIAhBACAGKAIEEQEAGiASDQEgDCANbCADayEKQQEhDyAHQQxqCyEIQX8gCXRBf3MhEEEAIQsgAkEKRyERIAwhBQNAIAMgC00NAiAFIAxGBEAgDSAPayENAkAgCUUEQEEAIQUgDSAIKAIMSQRAIAgoAhAgDUECdGooAgAhBQsgDCEGIBFFBEADQCAGQQBMDQMgBkEBayIGIAdBIGpqIAUgBUEKbiIFQQpsa0EwcjoAAAwACwALA0AgBkEATA0CIAZBAWsiBiAHQSBqakEwQdcAIAUgBSACbiIFIAJsayIOQQpIGyAOajoAAAwACwALIAgoAhAgCCgCDCANEHEhBiAMIQUDQCAFQQBMDQEgBUEBayIFIAdBIGpqIAYgEHEiDkEwciAOQdcAaiAOQQpJGzoAACAGIAl2IQYMAAsACyAKIQVBACEKCwJAIAsgBCIGSQ0AIAMhBiAEIAtHDQAgAEEuEA4LIAAgB0EgaiAFaiAMIAVrIg4gBiALayIGIAYgDkobIgYQchogBiALaiELIAUgBmohBQwACwALIABBATYCDCAHQQxqIQgLIAEgCEcEQCAIEBkLIAdB8ABqJAAL9gEBBH8jAEEgayIHJAACQCACQQFGBEAgACABNQIAEDIhAwwBCyAEQQF0IANBAWoiCXZBAWpBAXYhCCAGIANBFGxqIgooAgxFBEAgCiAFIAhB\u002F\u002F\u002F\u002F\u002FwNBARDXAiIDDQELIAAgASAIQQJ0aiACIAhrIAkgBCAFIAYQrQMiAw0AIAAgACAKQf\u002F\u002F\u002F\u002F8DQQEQQCIDDQAgACgCACECIAdCADcCGCAHQoCAgICAgICAgH83AhAgByACNgIMIAdBDGoiAiABIAggCSAEIAUgBhCtAyIDRQRAIAAgACACQf\u002F\u002F\u002F\u002F8DQQEQuAEhAwsgB0EMahAZCyAHQSBqJAAgAwumAQEFf0F\u002FIQYCQCABKAIAIgRBAEgEQCAAKAIAIgUoAgAgACgCECAAKAIMIgNBAWoiByADQQNsQQF2IgMgAyAHSBsiA0ECdCAFKAIEEQEAIgVFDQEgACAFNgIQIAUgAyAAKAIMIgZrIgdBAnRqIAUgBkECdBCrASAAIAM2AgwgBCAHaiEECyAAKAIQIARBAnRqIAI2AgAgASAEQQFrNgIAQQAhBgsgBguEAQECfwJAIAAgAUcEQCACRQRAIABCARAyIQUMAgtBHiACZ2shBiAAIAEQSSEFA0AgBkEASA0CIAAgACAAIAMgBBBAIAVyIQUgAiAGdkEBcQRAIAAgACABIAMgBBBAIAVyIQULIAZBAWshBgwACwALQentAEHY7ABB7RFBlcYAEAAACyAFC\u002FgEAQt\u002FIwBBMGsiBSQAAkACQAJAIAAgAUYgACACRnJFBEAgASgCCEEASgRAIAEoAgQhBgsgAigCCEEASgRAIAIoAgQhCAsgBkUEQCABIQcMAgsgACgCACEEIAVCADcCFCAFQoCAgICAgICAgH83AgwgBSAENgIIIAVBCGoiBCEHIAQgAUIBQf\u002F\u002F\u002F\u002F8DQQEQekUNAUEAIQQMAgtBy4MBQdjsAEGwEkGlNxAAAAsCQCAIRQRAIAIhBAwBCyAAKAIAIQEgBUIANwIoIAVCgICAgICAgICAfzcCICAFIAE2AhwgBUEcaiIBIQQgASACQgFB\u002F\u002F\u002F\u002F\u002FwNBARB6DQELIABBAQJ\u002FIAYgCCADELMEIgIgA0ECR3JFBEAgBiAIckUEQCAHKAIIIgEgBCgCCCIJIAEgCUgbDAILIAZFBEAgBygCCAwCCyAEKAIIDAELIAcoAggiASAEKAIIIgkgASAJShsLIgEgAUEBTBtBH2oiCUEFdiIKEFANAEEAIQFBACACayELQQAgCGshCEEAIAZrIQYgBCgCDEEFdCAEKAIIayEMIAcoAgxBBXQgBygCCGshDQNAIAEgCkZFBEAgACgCECABQQJ0aiAHKAIQIAcoAgwgDSABQQV0Ig5qEHEgBnMgBCgCECAEKAIMIAwgDmoQcSAIcyADELMEIAtzNgIAIAFBAWohAQwBCwsgACACNgIEIAAgCUHg\u002F\u002F\u002F\u002FB3E2AgggAEH\u002F\u002F\u002F\u002F\u002FA0EBEJsCGkEAIQEgAkUNASAAIABCf0H\u002F\u002F\u002F\u002F\u002FA0EBEHpFDQELIAAQKkEgIQELIAVBCGoiACAHRgRAIAAQGQsgBUEcaiIAIARGBEAgABAZCyAFQTBqJAAgAQt9AQJ\u002FIwBBIGsiBiQAAkAgACABRyAAIAJHcUUEQCAAKAIAIQcgBkIANwIYIAZCgICAgICAgICAfzcCECAGIAc2AgwgBkEMaiIHIAEgAiADIAQgBRELACEBIAAgBxC\u002FBAwBCyAAIAEgAiADIAQgBRELACEBCyAGQSBqJAAgAQsgAQF+IAAgACACIAFBAUECQQAQggEiBCABIAMQvwEgBAvtCgIMfwN+IwBBEGsiDiQAIAQgBUEBayIGQQJ0aigCACEHAkACQCAFQQFGBEBBACEGIA5BADYCDAJAIANBAk0EQCAHrSESA0AgA0EATA0CIAEgA0EBayIDQQJ0IgBqIAAgAmo1AgAgBq1CIIaEIhMgEoAiFD4CACATIBIgFH59pyEGDAALAAsgB0F\u002Fc61CIIZC\u002F\u002F\u002F\u002F\u002Fw+EIAetgKchAANAIANBAWsiA0EASA0BIAEgA0ECdCIEaiAOQQxqIAYgAiAEaigCACAHIAAQuwQ2AgAgDigCDCEGDAALAAsgAiAGNgIADAELAkACQAJAAkAgAyAFayIIIAUgBSAIShtBMk4EQCAIBEAgACgCAEEAIAhBAWoiDSAIIAUgCEsbIglBAWoiC0ECdCAAKAIEEQEAIgpFIAAoAgBBACALQQN0IAAoAgQRAQAiB0VyDQUgBSAJSw0CIAkgBWshDEEAIQYDQCAGIAxGBEAgByAMQQJ0aiEMQQAhBgNAIAUgBkYNBiAMIAZBAnQiD2ogBCAPaigCADYCACAGQQFqIQYMAAsABSAHIAZBAnRqQQA2AgAgBkEBaiEGDAELAAsAC0HtgwFB2OwAQbULQaPaABAAAAsgCEEDTwRAIAdBf3OtQiCGQv\u002F\u002F\u002F\u002F8PhCAHrYCnIQsLIAIgCEECdGohAAJAAkACQANAIAZBAEgNASAGQQJ0IQMgBkEBayEGIAAgA2ooAgAiCSADIARqKAIAIgNGDQALIAEgCEECdGogAyAJTSIDNgIAIAMNAQwCCyABIAhBAnRqQQE2AgALIAAgACAEIAUQ8QEaCyACIAVBAnRqIQ8gB60hEkEAIQkDQCAIQQFrIghBAEgNBgJ\u002FQX8gByAPIAhBAnQiDGoiBigCACIATQ0AGiALBEAgDkEIaiAAIAZBBGsoAgAgByALELsEDAELIAZBBGs1AgAgAK1CIIaEIBKApwshACACIAxqIQ0gAK0hE0EAIQpBACEDA0AgAyAFRkUEQCANIANBAnQiEGoiESARNQIAIAqtIAQgEGo1AgAgE358fSIUPgIAQQAgFEIgiKdrIQogA0EBaiEDDAELCyAGIAYoAgAiAyAKazYCACADIApJBEADQCAAQQFrIQAgDSANIAQgBRC0A0UNACAGIAYoAgBBAWoiAzYCACADDQALCyABIAxqIAA2AgAMAAsACyAEIAUgCWtBAnRqIQxBACEGA0AgBiAJRkUEQCAHIAZBAnQiD2ogDCAPaigCADYCACAGQQFqIQYMAQsLIAdBASAJENsCRQ0AIApBACAJQQJ0IgYQLCAGakEBNgIADAELIAAgCiAHIAkQvAQNAQsgByAKIAsgAiADQQJ0aiAJQX9zQQJ0aiALEPABIAcgC0EDdGogCEF\u002Fc0ECdGohCEEAIQYDQCAGIA1GRQRAIAEgBkECdCIJaiAIIAlqKAIANgIAIAZBAWohBgwBCwsgACgCACAHQQAgACgCBBEBABogACgCACAKQQAgACgCBBEBABogACgCAEEAIANBAnRBBGogACgCBBEBACIDRQRAQX8hCQwDCyADIAEgDSAEIAUQ8AEgAiACIAMgBUEBahDxARogACgCACADQQAgACgCBBEBABogAiAFQQJ0aiEAA0AgBSEDAkAgACgCAA0AA0AgA0EATA0BIAIgA0EBayIDQQJ0IgZqKAIAIgggBCAGaigCACIGRg0ACyAGIAhLDQMLIAIgAiAEIAUQ8QEhAyAAIAAoAgAgA2s2AgAgAUEBIA0Q2wIaDAALAAsgCgRAIAAoAgAgCkEAIAAoAgQRAQAaC0F\u002FIQkgB0UNASAAKAIAIAdBACAAKAIEEQEAGgwBC0EAIQkLIA5BEGokACAJC04BBH8DQCADIAZHBEAgACAGQQJ0IgVqIAQgAiAFaigCACIHIAEgBWooAgBqIgVqIgQ2AgAgBSAHSSAEIAVJciEEIAZBAWohBgwBCwsgBAt0AQR\u002FQQIhAgJAIAAoAggiBEH\u002F\u002F\u002F\u002F\u002FB0YNACABKAIIIgVB\u002F\u002F\u002F\u002F\u002FwdGDQAgACgCBCIDIAEoAgRHBEAgBEGAgICAeEYEQEEAIQIgBUGAgICAeEYNAgtBASADQQF0aw8LQQAgACABEPIBIgBrIAAgAxshAgsgAguRAQEDfwJAIAAoAggiBEH9\u002F\u002F\u002F\u002FB0oNACACQQZGBEAgASADSA8LIARBgICAgHhGIAFBAmogA0pyDQAgACgCECIGIAAoAgwiBCABQX9zIgAgBEEFdGoiARCaAiACQXtxRXMhAiAAIANqIQADQCAARQ0BIABBAWshACAGIAQgAUEBayIBEJoCIAJGDQALQQEhBQsgBQviAQEDfwJAAkAgA0EDcUUgA0EHcSIEQQVGIAJB\u002F\u002F\u002F\u002F\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\u002FRhshBSACQXtxIQIgABAtIQQDQEF\u002FIQMgABAPDQEgAEEREA0gACAFIAQQGBogAEEOEA0CQCABQaF\u002FRgRAIABBCCACEPYBRQ0BDAMLIABBoX8gAhDAAw0CCyAAKAIQIgMgAUYNAAsgA0Gmf0YEQCAAQbcIQQAQE0F\u002FDwsgACAEEBpBACEDCyADC1cBBH8gACgCzAEgAkEDdGpBBGohAwNAAkBBfyEEIAMoAgAiBUF\u002FRg0AIAAoAnQgBUEEdGoiBigCBCACRw0AIAZBCGohAyAFIQQgBigCACABRw0BCwsgBAvcAQEBfyAAKAIAIAAoAkBBAEEAIAAoAgxBABDqAyICRQRAIAFBADYCAEF\u002FDwsgAkEANgJwIAJBADYCYCACQoCAgIAQNwJIIAJCATcCMCACQYAMOwFsIAJCATcCWCACQgE3AlAgASACNgIAIAAgAjYCQCAAIAEoAhAEfyACBSAAQQkQDSABIAEoAgAoApgCNgIMIABB6gBBfxAYIQEgAEG4ARANIABBCBAXIABBABAUIABBuAEQDSAAQfQAEBcgAEEAEBQgAEEtEA0gACABEBogACgCQAsoAgQ2AkBBAAuRAQEFfwJAAkAgACgCQCIBKAKYAiICQQBIDQAgASgCgAIiAyACaiIELQAAIgVBxQFHBEAgBUHNAEcNASABQX82ApgCIAEgAjYChAIgAEHOABANDwsgAiAEKAABayADaiIAQQFqLQAAQdYARw0BIABB1wA6AAEgAUF\u002FNgKYAgsPC0G+IkGo7ABBobABQeHkABAAAAugIwILfwF+IwBBIGsiBSQAIAFBAnEiB0EBdiEKQX4hAgJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIQIgRBgAFqDgcCAw8NAQEFAAsCQCAEQdUAag4MCQsMAQEBAQoBAQESAAsCQCAEQTtqDgoHAQEIAQEBARARAAsgBEEoRg0FIARBL0YNAyAEQdsARiAEQfsARnINDQsgACgCOCEBIAUgACgCGCICNgIEIAUgASACazYCACAAQYyNASAFEBMMFwsgACkDICINQv\u002F\u002F\u002F\u002F8PWARAIABBARANIAAgDacQOAwUCyAAIA1BABDAAUEATg0TDBYLQX8hAyAAIAApAyBBARDAAQ0WIAAQD0UNEwwWC0F\u002FIQILIAAgACgCOCACajYCOCAAKAIAKALoAUUEQCAAQaTlAEEAEBMMFAtBfyEDIAAQ5wQNFEEAIQIgACAAKQMgQQAQwAEaIAAoAgAiASAAKQMgIAApAyggASgC6AERGAAiDUKAgICAcINCgICAgOAAUQRAIAAoAkAiAQRAIAEoAmhBAEdBAXQhAgsgACgCACIBIAEoAhApA4ABIAAoAgwgACgCFCACELQCDBULIAAgDUEAEMABIQsgACgCACANEAwgCw0UIABBMxANIAAQD0UNEQwUCwJAIAFBBHFFDQBBACECIABBAEEBEJwBQaR\u002FRw0AQX8hAyAAQQNBACAAKAIYIAAoAhQQxAFFDRIMFAtBfyEDIAAQ+AFFDRAMEwtBfyEDQQAhAiAAQQJBACAAKAIYIAAoAhQQxAFFDRAMEgtBfyEDQQAhAiAAQQFBABDsAkUNDwwRC0F\u002FIQMgABAPDRAgAEEHEA0MDQtBfyEDIAAQDw0PIABBuAEQDSAAQQgQFwwKC0F\u002FIQMgABAPDQ4gAEEJEA0MCwtBfyEDIAAQDw0NIABBChANDAoLIAAoAigEQCAAENwBDAwLAkAgAUEEcSIHRQ0AIABBARBzQaR\u002FRw0AQX8hA0EAIQIgAEEDQQAgACgCGCAAKAIUEMQBRQ0LDA0LAkACQCAAQYYBEEVFDQAgAEEBEHNBCkYNACAAKAIUIQEgACgCGCEEQX8hAyAAEA8NDiAAKAIQIgZBRUYEQCAAQQJBAiAEIAEQxAFFDQwMDwtBhgEhAiAHRQ0BAkAgBkEoRgR\u002FIABBAEEBEJwBQaR\u002FRg0BIAAoAhAFIAYLQYN\u002FRw0CIAAoAigNAiAAQQEQc0Gkf0cNAgsgAEEDQQIgBCABEMQBRQ0LDA4LAkAgACgCICIBQc4ARw0AIAAoAkAoAlwNACAAQb0vQQAQEwwNCyAAKAIAIAEQFiECIAAQD0UNACAAKAIAIAIQEAwMCyAAQbgBEA0gACACEDggACAAKAJALwG8ARAUDAkLIAAgBUEYakEAEJwBQT1GBEAgAEEAQQBBACAFKAIYQQJxQQEQwgFBAE4NCQwLCyAAKAIQQfsARgRAQQAhASAFQQA2AhwgABAPDQYgAEELEA0CQANAIAAoAhAiAUH9AEYNAQJAAkAgAUGlf0YEQCAAEA8NECAAEFMNECAAQQcQDSAAQdMAEA0gAEEGEFggAEEOEA0gAEEOEA0MAQsgACgCFCEBIAAoAhghAyAAIAVBHGpBAUEBQQAQxgMiBEEASA0BAkACQCAEQQFGBEAgAEG4ARANIAAgBSgCHCIBEBcgACAAKAJALwG8ARAUDAELIAAoAhBBKEYEQAJ\u002FIARB\u002Fv\u002F\u002F\u002FwdxIgZBAkYEQCAEQQJqIQdBAAwBC0EGIQcgBEEDa0EAIARBBGtBA0kbCyECIAAgByACIAMgARDEAQ0EAkAgBSgCHCIBRQRAIABB1QAQDQwBCyAAQdQAEA0gACABEBcLIABBBCAEQQFrQQRyIAZBAkcbQf8BcRBYDAILIABBOhAoDQMgABBTDQMCQCAFKAIcIgFBxQBHBEAgAQ0BIAAQwwMgAEHRABANIABBDhANQQAhAQwDCyAJBEAgAEH41ABBABATQcUAIQEMDgsgAEHPABANQQEhCUHFACEBDAILIAAgARCeAQsgAEHMABANIAAgARAXCyAAKAIAIAEQEAsgBUEANgIcIAAoAhBBLEcNAiAAEA9FDQELCyAFKAIcIQEMBwtBACEBIABB\u002FQAQKEUNCQwGCyAAEA8NCkEAIQEDQCAAKAIQIgJB3QBGIAFBH0tyIAJBpX9GciACQSxGckUEQCAAEFMNDCABQQFqIQEgACgCECICQd0ARg0BIAJBLEcNBiAAEA9FDQEMDAsLIABBJhANIAAgAUH\u002F\u002FwNxEBRBACECA0AgACgCECEEAkACQAJAAkAgAUH\u002F\u002F\u002F\u002F\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\u002F\u002FA0YEQCAAQbYhQQAQEwwICyADQaV\u002FRwRAQX8hAyAAEFMNCSABQQFqIQEgACgCEEEpRg0CIABBLBAoRQ0BDAkLCyAFIAE2AhQgAEEmEA0gACABQf\u002F\u002FA3EQFCAAQQEQDSAAIAEQOANAAkACQCAAKAIQIgFBpX9HBEAgAUEpRg0CIAAQUw0KIABB0QAQDUGQASEBDAELQX8hAyAAEA8NCkHSACEBIAAQUw0KCyAAIAEQDSAAKAIQQSlGDQBBfyEDIABBLBAoRQ0BDAkLCyAAEA8NBiAAQQ4QDQJAAkACQAJAIAZBvAFrDgQBAwMBAAsgBkExRg0BIAZBxwBGDQAgBkHBAEcNAgsgAEEYEA0gAEEnEA0gACAHQQFGEBRBACECDAcLIABBMhANDAQLIAJFBEAgAEEnEA0gAEEBEBQMAwsgB0EBRgRAIABBGBANIABBJxANIABBARAUQQAhAgwGCyAAQQYQDSAAQRsQDSAAQScQDUEAIQIgAEEAEBQMBQsgBSABNgIUIAAQDw0FCwJAAkACQAJAIAZBvAFrDgQBAwMBAAsgBkExRg0BIAZBxwBGDQAgBkHBAEcNAgsgAEEkEA0gACAFLwEUEBRBACECDAULIABBMRANIAAgBS8BFBAUDAILAkACQAJAIAdBAWsOAgEAAgsgAEEhEA0gACAFLwEUEBQMAgsgAEEhEA0gACAFLwEUEBRBACECDAQLIABBIhANIAAgBS8BFBAUQQAhAgwDCyAAQREQDSAAQb0BEA0gAEEIEBdBACECIABBABAUIAAQ6wQMAgsgACAELwG8ARAUIARBATYCREEAIQIMAQtBACEBIAQoApgCIgNBAE4EQCAEKAKAAiADai0AACEBCyAHRQRAIAAgBUEcakEBEOQCC0F\u002FIQMgABAPDQIgABCLAQ0CIABB3QAQKA0CIAFBNEYEQCAAQcoAEA0FIABBxwAQDQsMAAsAC0F\u002FIQMLIAVBIGokACADC4EBAQF\u002FAkACQCAAKAIQQYN\u002FRw0AIAAoAigNACAAKAIgIQIgACgCQC0AbkEBcUUNASACQc4ARg0AIAJBO0cNAQsgAEGLHUEAEBNBAA8LIAAoAgAgAhAWIQICQAJAIAEEQCAAIAIQ5gQNAQsgABAPRQ0BCyAAKAIAIAIQEEEAIQILIAIL4gQBBH8CQAJAAkACfwJAAkACQAJAAkAgAkUNAAJAIABBwgAQRUUEQCAAQcMAEEVFDQELIAAoAgAgACgCIBAWIQUgABAPDQRBASEHAkACQCAAKAIQIghBKGsOBQQBAQEEAAsgCEE6RiAIQf0ARnINAwsgACgCACAFEBBBA0ECIAVBwwBGGyEGDAELIAAoAhBBKkYEQCAAEA8NCEEEIQYMAQsgAEGGARBFRQ0AIABBARBzQQpGDQAgACgCACAAKAIgEBYhBSAAEA8NA0EBIQcCQAJAIAAoAhAiCEEoaw4FAwEBAQMACyAIQTpGIAhB\u002FQBGcg0CCyAAKAIAIAUQEEEFIQYgACgCEEEqRw0AIAAQDw0HQQYhBgsgACgCECIFQYN\u002FRyAFQSdqQVJJcQ0BQQAhByAFQYN\u002FRgRAIAAoAihFIQcLIAAoAgAgACgCIBAWIQUgABAPDQILQQAgBiADRSAHRXJyDQMaIAAoAhAiAEE6RyACRSAAQShHcnEhBkEAIQQMBgsCQAJAAkAgBUGAAWoOAgEAAgsgACgCACAAKQMgEDAiBUUNBiAAEA8NAgwDCyAAKAIAIAApAyAQMCIFRQ0FIAAQD0UNAgwBCyAFQdsARwRAIARFIAVBqX9Hcg0EIAAoAgAgACgCIBAWIQUgABAPDQFBEAwDCyAAEA8NBCAAEIsBDQQgAEHdABAoDQRBACEFQQAMAgsgACgCACAFEBAMAwtBAAshBCAGQQJJDQIgACgCEEEoRg0CIAAoAgAgBRAQCyAAQeLUAEEAEBMLIAFBADYCAEF\u002FDwsgASAFNgIAIAQgBnILUwEBf0F\u002FIQIgACgCACAAKAJAIgBBtAJqQQggAEG8AmogACgCuAJBAWoQZEUEQCAAIAAoArgCIgJBAWo2ArgCIAAoArQCIAJBA3RqIAE3AwALIAILjgEBAn8gASgCiAEiBEH\u002F\u002FwNOBEAgAEGjIUEAEDpBfw8LQX8hAyAAIAFBgAFqQRAgAUGEAWogBEEBahBkBH9BfwUgASABKAKIASIDQQFqNgKIASABKAKAASADQQR0aiIDQgA3AgAgA0IANwIIIAMgACACEBY2AgAgAyADKAIMQYB+cjYCDCABKAKIAUEBawsLhgEBAn8CQANAIAJBAE4EQAJAIAAoAnQgAkEEdGoiBCgCACABRw0AIAQoAgwiBUECcQ0DIANFDQAgBUHwAXFBMEYNAwsgBCgCCCECDAELC0F\u002FIQIgACgCIEUNACAAKAIkDQAgACABEKACIgAEQEGAgICABCECIAAtAARBAnENAQtBfyECCyACC8ABAQR\u002FIwBBEGsiAiQAIABBJxBFBH8gAiAAKAIENgIAIAIgACgCFDYCBCACIAAoAhg2AgwgAiAAKAIwNgIIQX8Cf0F\u002FIAAQDw0AGgJAIAAoAhAiA0EvaiIEQQdNQQBBASAEdEHBAXEbIANB+wBGckUEQEEBIANB2wBGDQIaIANBg39HDQFBACAAKAIoDQIaCyABQQRxQQJ2IAAoAgQgACgCFEZyDAELQQALIAAgAhDtAhsFQQALIQUgAkEQaiQAIAULggIBB38CQAJAAkAgAkHOAEYgAkE7RnJFBEAgACgCACEFIAJBFkcNASAAKAJAIQYMAgsgAEGsywBBABATDAILIAAoAkAiBigCwAIiB0EAIAdBAEobIQcDQCAEIAdGDQEgBEEDdCEJIARBAWohBCAJIAYoAsgCaigCBCACRw0ACyAAQZPLAEEAEBMMAQsgBSAGIANB\u002FgBGQQAgASgCOCACQQFBAUEAENIDIgBBAEgNACAFIAFBNGpBDCABQTxqIAEoAjhBAWoQZA0AIAEgASgCOCICQQFqNgI4IAEoAjQhCiAFIAMQFiEDIAogAkEMbGoiASAANgIAIAEgAzYCBEEADwtBfwuqBAEIfyMAQRBrIgUkACAAKAJAIQcgACgCACEGIAJBsX9HIQlBvX9BvX9BuX8gAkFRRiIIGyACQUlGG0H\u002FAXEhCgJ\u002FAkACQANAAkACQCAAKAIQIgRBg39GBEAgACgCKARAIAAQ3AEMBgsgCEUgAkFJR3EgBiAAKAIgEBYiBEEnR3JFBEAgAEG2MkEAEBMMBQsgABAPDQQgACAEIAIQowINBCADBEAgACAAKAJAKAKUAyAEIARBABD5AUUNBQsCQCAAKAIQQT1GBEAgABAPDQYgCUUEQCAAQbgBEA0gACAEEBcgACAHLwG8ARAUIAAgBUEMaiAFQQhqIAUgBUEEakEAQQBBPRCuAUEASA0HIAAgARCtAQRAIAYgBSgCABAQDAgLIAAgBBCeASAAIAUoAgwgBSgCCCAFKAIAIAUoAgRBAEEAEMEBDAILIAAgARCtAQ0GIAAgBBCeASAAIAoQDSAAIAQQFyAAIAcvAbwBEBQMAQsgCEUEQCACQUlHDQEgAEG32QBBABATDAYLIABBBhANIABBvQEQDSAAIAQQFyAAIAcvAbwBEBQLIAYgBBAQDAELIARBIHJB+wBHDQEgACAFQQxqQQAQnAFBPUcNASAAQQYQDUF\u002FIAAgAkEAQQEgBSgCDEECcUEBEMIBQQBIDQUaC0EAIAAoAhBBLEcNBBogABAPRQ0BDAMLCyAAQeHmAEEAEBMMAQsgBiAEEBALQX8LIQsgBUEQaiQAIAsL\u002FQICBX8BfiMAQSBrIgIkAAJ\u002FAkAgACgCACACQQhqQSAQPg0AAkADQAJAIAEiBCAAKAI8Tw0AIAFBAWohAQJAAkACQAJAAkAgBC0AACIDQdwAaw4FAgMDAwEACyADQSRHDQJBJCEFIAEtAABB+wBHDQMgBEECaiEBCyAAIAM2AiggAEGCfzYCECACQQhqEDchByAAIAE2AjggACAHNwMgQQAMBwsgAkEIakHcABA8DQUgASAAKAI8Tw0CIARBAmohASAELQABIQMLAkACQAJAIANBCmsOBAECAgACCyABIAEtAABBCkZqIQELIAAgACgCCEEBajYCCEEKIQUMAQsgA0GAAUkEQCADIQUMAQsgAUEBa0EGIAJBBGoQUSIFQf\u002F\u002FwwBLDQMgAigCBCEBCyACQQhqIAUQsQFFDQEMAwsLIABBrckAQQAQEwwBCyAAQbLfAEEAEBMLIAIoAggoAhAiAEEQaiACKAIMIAAoAgQRAABBfwshBiACQSBqJAAgBgtpACABQQFqQQhNBEAgACABQcsAa0H\u002FAXEQDg8LIAFBgAFqQf8BTQRAIABBvQEQDiAAIAFB\u002FwFxEA4PCyABQYCAAmpB\u002F\u002F8DTQRAIABBvgEQDiAAIAFB\u002F\u002F8DcRAmDwsgAEEBEA4gACABEBsLaQEEfyAAKAIEIQYCQANAIAEgBk4NAQJAAkAgACgCACABaiIELQAAIgVBtgFHBEAgBUHGAUYNASAFQewARw0EIAQoAAEgAkcNBAwCCyAEKAABIAJGDQELIAFBBWohAQwBCwtBASEDCyADC\u002F8BAQZ\u002FIAAgAUF\u002FEGMaAkADQCAHQQpGBEBB7AAhBAwCCwJAIAFBAEgNACABIAAoAqwCTg0AIAAoAqQCIAFBFGxqKAIIIQUgACgCgAIhCANAAkACQCAFIAhqIgktAAAiBkG2AUYNACAGQcYBRwRAIAZBDkcNAgNAIAggBUEBaiIFai0AACIEQQ5GDQALIARBKUYNBiAGIQQMBgsgA0UNACADIAkoAAE2AgALIAUgBkECdEHgrgFqLQAAaiEFDAELCyAGIgRB7ABHDQIgB0EBaiEHIAkoAAEhAQwBCwtB3BdBqOwAQd\u002F4AUHpHBAAAAsgAiAENgIAIAAgAUEBEGMaIAELaAACQCABQQBODQBBfyEBIAAoAgAgAEGkAmpBFCAAQagCaiAAKAKsAkEBahBkDQAgACAAKAKsAiIBQQFqNgKsAiAAKAKkAiABQRRsaiIAQQA2AhAgAEJ\u002FNwIIIABCgICAgHA3AgALIAELpAEBAn8gASgCwAIiCkH\u002F\u002FwNOBEAgAEGwKEEAEDpBfw8LQX8hCSAAIAFByAJqQQggAUHEAmogCkEBahBkBH9BfwUgASABKALAAiIJQQFqNgLAAiABKALIAiAJQQN0aiIJIAQ7AQIgCSAHQQN0QQhxIAZBAnRBBHEgA0EBdEECcSACQQFxcnJyIAhBBHRyOgAAIAkgACAFEBY2AgQgASgCwAJBAWsLCzYAAkAgACABQQgQTCIAQQBIDQAgASgCYEUNACABKAJ0IABBBHRqIgEgASgCDEECcjYCDAsgAAt7AQN\u002FIwBBQGoiASQAIAEgAELoB383AzhBwN4ELQAAQQFxRQRAQcjUBEHM1ARB0NQEEANBwN4EQQE6AAALIAEpAzgiAKcgAEIgiKcgAUEMahAIIAFB1NQEQdDUBCABKAIsGygCADYCNCABKAIwIQMgAUFAayQAIANBRG0LqgQDBn4DfwF8IwBBEGsiDCQAQX8hCwJAIAAgDEEIaiABEKYCDQACfCAMKwMIIg69Qv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoGAgICAgID4\u002FwBaBEAgBARAQgAhAUQAAAAAAAAAAAwCC0EAIQsMAgsCfiAOmUQAAAAAAADgQ2MEQCAOsAwBC0KAgICAgICAgIB\u002FCyEBRAAAAAAAAAAAIANFDQAaQQAgARDUA2siAKxC4NQDfiABfCEBIAC3CyEOIAEgAUKAuJkpgSIBQj+HQoC4mSmDIAF8IgV9QoC4mSl\u002FIgdCkM4AfiIBIAFCyfbeAYEiAX0gAUI\u002Fh0K3iaF+g3xCyfbeAX9Csg98IQEgBaciAEHg1ANtIQQgAEHoB20hAyAHQgR8QgeBIghCP4dCB4MhCQNAAkAgByABEPcEfSIGQgBTBEBCfyEFDAELQgEhBSAGIAEQ9gQiCloNACAKQu0CfSEHIAggCXwhCCAAQYDd2wFtIQsgA0E8byENIATBQTxvIQQgACADQegHbGshAEIAIQUDQAJAIAVCC1ENACAGIAWnQQJ0QdDIAWo0AgAgB0IAIAVCAVEbfCIJUw0AIAVCAXwhBSAGIAl9IQYMAQsLIAIgDjkDQCACIAi5OQM4IAIgALc5AzAgAiANtzkDKCACIAS3OQMgIAIgC7c5AxggAiAFuTkDCCACIAG5OQMAIAIgBkIBfLk5AxBBASELDAILIAEgBXwhAQwACwALIAxBEGokACALCw0AIAAgASACQQEQ+gQLKAAgASgCBEEFRwRAIAFBBTYCBCAAKAIQIAEoAggQzgEgAUEANgIICwtmAgJ\u002FAX4jAEEQayIDJABBfyEEAkAgACABQgAQTiIFQoCAgIBwg0KAgICA4ABRDQAgACADQQxqIAUQlQENACAAIAFBACADKAIMIAJqIgCtEIYCQQBIDQAgAEUhBAsgA0EQaiQAIAQLtwEBAn8CQAJ8AkACQAJAAkACQEEHIABCIIinIgIgAkEHa0FuSRsiAkEIag4KAgEGBgYGBgIDAAQLIACnIQEMBQsgAKdBABDrBSEBDAQLIACnQdsYbCEBDAMLIACnQdsYbLcMAQsgAkEHRw0BRAAAAAAAAPh\u002FIABCgICAgMCBgPz\u002FAHwiAL8gAEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLvSIAQiCIIACFp0HbGGwhAQsgASACcwvzBwETfyMAQRBrIgwkAAJAIAAgAhAlIgJCgICAgHCDQoCAgIDgAFEEQEF\u002FIRQMAQtBfyEUQX8hBQJAIABBASACpyIEKAIEQf\u002F\u002F\u002F\u002F8HcSIKIApBAU0bQQJ0ECQiD0UNACAMQQA2AgxBACEFA0AgCCAKTg0BIA8gBUECdGogBCAMQQxqEMYBNgIAIAVBAWohBSAMKAIMIQgMAAsACyAAIAIQDCAFQQBIDQAgAyEKIAAoAhAhA0EAIQQjAEEgayIHJAAgByADQTgQnQJBfyEIAkAgByAFIgNBAnQiEBC8AQ0AAkAgCkUEQCADQQAgA0EAShshBgNAIAQgBkYNAiAEQQJ0IRUgBEEBaiEEIBUgD2ooAgBB\u002FwFNDQALCyAHIA8gAyAKQQF2EJUGIAcoAgwNASAHKAIAIglBBGohCyAHKAIEIg1BAnYiCEEBayERQQAhAwNAAkAgAyAISARAIAkgAyIEQQJ0aigCABDQAkUNAQNAIAQgEUYEQCAIIQMMAwsgCSAEQQFqIgVBAnRqKAIAIhIQ0AIiEwRAA0ACQCADIARKDQAgCSAEQQJ0aiIQKAIAIgYQ0AIgE0wNACAQIAY2AgQgBEEBayEEDAELCyALIARBAnRqIBI2AgAgBSEEDAEFIAUhAwwDCwALAAsgCkEBcSANQQhJcg0DQQEhDUEBIQMDQCAIIA1GBEAgAyEIDAUFIAkgDUECdGooAgAiCxDQAiEGIAMhBAJAAkADQCAEQQBMDQEgCSAEQQFrIgRBAnRqIhAoAgAiDhDQAiIFBEAgBSAGSCEWQYACIQYgFg0BDAILCwJAIAtB4SJrQRRLIA5BgCJrQRJLckUEQCALQRxsIA5BzARsakGcjaEBayEGDAELAkAgDkGA2AJrIgRBo9cASw0AIARB\u002F\u002F8DcUEccCALQacjayIEQRtLcg0AIAQgDmohBgwBC0GwByEEQQAhEQNAIAQgEUgNAiAHQRhqIAQgEWpBAm0iEkEBdEHA1QNqLwEAIgZBBnYiCkECdEHQ4wJqKAIAIhNBDnYiBSAGQT9xaiIGIAogBSATQQd2Qf8AcSATQQF2QT9xEJQGGiALIAcoAhxrIA4gBygCGCIFayAFIA5GGyIFQQBIBEAgEkEBayEEDAELIAUEQCASQQFqIREMAQsLIAZFDQELIBAgBjYCAAwBCyAJIANBAnRqIAs2AgAgA0EBaiEDCyANQQFqIQ0MAQsACwALIANBAWohAwwACwALIAcoAgAiCSAPIBAQHhogAyEICyAMIAk2AgggB0EgaiQAIAAoAhAiAEEQaiAPIAAoAgQRAAAgCEEASA0AIAEgDCgCCDYCACAIIRQLIAxBEGokACAUC6YDACMAQRBrIgQkACAFKAIAIQIgBCADKQMAIgE3AwgCQAJAAkACQAJAAkACQCACKAJUIgVBGHZBBGsOAgIAAQsgAi0AoAENAkH+OEGo7ABBzt8BQYbnABAAAAtBlf8AQajsAEHS3wFBhucAEAAACyACLQCgAQ0BIAIoAnRFDQIgAkEBOgCgASABQiCIp0F1TwRAIAGnIgMgAygCAEEBajYCACACKAJUIQULIAIgATcDqAEgAiAFQf\u002F\u002F\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\u002F\u002F\u002F\u002F\u002Fb1YgAUKAgICAcINCgICAgOAAUXJFBEAgACABEAwgABAiQoCAgIDgAA8LIAELqwIBBH8CfiAAKAIQIQYCQAJAIAAgASADEF4iAUKAgICAcINCgICAgOAAUQ0AIAJCgICAgAhaBEAgAEGfxwBBABBEDAILIABBHBAkIgRFBEBBACEEDAILIAQgAqciBTYCAAJAAkAgA0EURw0AIAYoAsQBIgdFDQAgBCAGKALQAUEBIAUgBUEBTBsgBxEDACIGNgIIIAZFDQMgBkEAIAUQLBoMAQsgBCAAQQEgBSAFQQFMGxBcIgU2AgggBUUNAgsgBEE9NgIYIARBADYCFCAEQQA6AAQgBCAEQQxqIgA2AhAgBCAANgIMIAQgA0EURjoABSABQoCAgIBwVA0AIAGnIAQ2AiALIAEMAQsgACABEAwgACgCECIAQRBqIAQgACgCBBEAAEKAgICA4AALCzoBAX8gACgCECIDIAEgAhDHAiIBRQRAIAAQcEKAgICA4AAPCyADKAI4IAFBAnRqNQIAQoCAgICAf4QLLgEBfyABKAIAQQRHBEAgASgCBCICBEAgACACEM4BIAFBADYCBAsgAUEENgIACwsyAQJ\u002FIABBACAAIAEgACACELYBIgIgAUEAEBEiAUEAEJoDIQQgACABEAwgACACEBAgBAtzAQJ\u002FIAEgAS0AAEF8cUEBciIEOgAAIAEgAi0ADEECdEEEcSAEQXlxciIEOgAAIAEgBEF1cSACLQAMQQJ0QQhxciIEOgAAIAItAAwhBSABIAM7AQIgASAEQQ1xIAVB8AFxcjoAACABIAAgAigCABAWNgIEC5MCAQN\u002FIABBnAMQXCIGBEAgBiAANgIAIAZBfzYCCCAGIAE2AgQgBiAGQRBqIgc2AhQgBiAHNgIQIAEEQCABKAIQIgcgBkEYaiIINgIEIAYgAUEQajYCHCAGIAc2AhggASAINgIQIAYgAS0AbjoAbiAGIAEoArwBNgIMCyAGIAM2AiwgBiACNgIgIAAgBkGAAmoQgwIgBkEANgJwIAZBfzYCmAIgBkGQAWpB\u002FwFBKBAsGiAGQoSAgIAQNwLEASAGIAZB0AFqNgLMASAGQn83AtABIAZBfzYC8AEgBkKAgICAcDcCvAEgACAEELYBIQEgBiAFNgLwAiAGIAE2AuwCIAAgBkH0AmoQgwIgBiAFNgKcAgsgBguaAwMCfAN\u002FAX4CfyAAKwMIIgJEAAAAAAAAKEAQmQQiA5lEAAAAAAAA4EFjBEAgA6oMAQtBgICAgHgLIgRBDGogBCAEQQBIGyIEQQBKIQYgBEEAIAYbIQYCfiAAKwMAIAJEAAAAAAAAKECjnKAiAplEAAAAAAAA4ENjBEAgArAMAQtCgICAgICAgICAfwsiBxD3BLkhAgNAIAUgBkZFBEAgBUECdEHQyAFqKAIAIQQgBUEBRgRAIAQgBxD2BKdqQe0CayEECyAFQQFqIQUgAiAEt6AhAgwBCwsgAiAAKwMQRAAAAAAAAPC\u002FoKBEAAAAAHCZlEGiIAArAzAgACsDKEQAAAAAAECPQKIgACsDGEQAAAAAQHdLQaIgACsDIEQAAAAAAEztQKKgoKCgIQIgAQRAIAICfiACmUQAAAAAAADgQ2MEQCACsAwBC0KAgICAgICAgIB\u002FCxDUA0Hg1ANst6AhAgsgAp1EAAAAAAAAAACgRAAAAAAAAPh\u002FIAJEAADcwgiyPkNlG0QAAAAAAAD4fyACRAAA3MIIsj7DZhsL9gMBB38gAEHoABBcIgUEfyAFQQE2AgAgACgCECEHIAVBBDoABCAHKAJQIgggBUEIaiIGNgIEIAUgB0HQAGo2AgwgBSAINgIIIAcgBjYCUCAFIAVB0ABqIgY2AlQgBSAGNgJQIAUgAaciCCgCICIHLQAQQQhyNgJgIAUgBygCFDYCWCAFIABBASAHLwEuIAcvASgiBiADIAMgBkgbIgogBy8BKmpqIgYgBkEBTBtBA3QQJCIJNgJIIAlFBEAgACgCECIAQRBqIAUgACgCBBEAAEEADwsgAUIgiKdBdU8EQCAIIAgoAgBBAWo2AgALIAUgATcDQCACQiCIp0F1TwRAIAKnIgAgACgCAEEBajYCAAsgBSAKNgJcIAUgAzYCGCAFIAI3AxAgBSAJIApBA3RqIgA2AkwgBSAAIAcvASoiC0EDdGo2AmRBACEGIANBACADQQBKGyEHA0AgBiAHRwRAIAQgBkEDdCIIaikDACIBQiCIp0F1TwRAIAGnIgAgACgCAEEBajYCAAsgCCAJaiABNwMAIAZBAWohBgwBCwsgAyAKIAtqIgAgACADSBshAANAIAAgA0ZFBEAgCSADQQN0akKAgICAMDcDACADQQFqIQMMAQsLIAVCgICAgDA3AzAgBUKAgICAMDcDKCAFQQA2AiAgBQVBAAsLowMCB34BfyMAQRBrIgwkAAJ+AkAgACAMQQhqIAAgARAgIgUQLw0AIAwpAwgiASACrCIHfCIGQoCAgICAgIAQWQRAIABB9MgAQQAQEgwBCwJAIARFIAJBAExyRQRAIAAgBSAHQgAgAUF\u002FEPMCDQIMAQsgASEICyACQQAgAkEAShutIQlCACEBA0AgASAJUgRAIAMgAadBA3RqKQMAIgdCIIinQXVPBEAgB6ciAiACKAIAQQFqNgIACyABIAh8IQogAUIBfCEBIAAgBSAKIAcQe0EATg0BDAILCyAAIAVBMCAGQoCAgIAIfCIIQv\u002F\u002F\u002F\u002F8PWAR+IAZC\u002F\u002F\u002F\u002F\u002Fw+DBUKAgICAwH4gBrm9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLEDlBAEgNACAAIAUQDCAGQv\u002F\u002F\u002F\u002F8PgyAIQv\u002F\u002F\u002F\u002F8PWA0BGkKAgICAwH4gBrm9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsMAQsgACAFEAxCgICAgOAACyELIAxBEGokACALCxUBAn4gACABEIcFIQMgACABEAwgAwv5DgIKfgR\u002FIwBBEGsiECQAIBAgAjcDCAJAAkACfgJAAkACQAJAAkACQAJAAkACQAJAQQcgAkIgiKciDiAOQQdrQW5JGyIOQQdqDg8EAwMDAwMABQUFAwMDAwECCwJAAkACQAJAIAKnIg4vAQYiD0EEaw4DAQACAwtCgICAgDAhByAAIAIQNCICQoCAgIBwg0KAgICA4ABRDQsgACACEO4DIgJCgICAgHCDQoCAgIDgAFENCyABKAIoIAIQhAEhDgwOC0KAgICAMCEHIAAgAhCWASICQoCAgIBwg0KAgICA4ABRDQogASgCKCACEIQBIQ4MDQsgASgCKCAOKQMgEI0BIQ4gACACEAwMDAsgD0EhRg0HQoCAgIAwIQYgACABKQMIQQEgEEEIahDxAyIEQoCAgIDwAINCgICAgOAAUQ0GIAAgBBAnBEAgAEHJ3wBBABASDAcLIANCIIinQXVPBEAgA6ciDiAOKAIAQQFqNgIACyABKQMYIgRCIIinQXVPBEAgBKciDiAOKAIAQQFqNgIACwJAAkACQAJAIAAgAyAEELYCIghCgICAgHCDQoCAgIDgAFEEQEKAgICAMCEHDAELIAEpAxgiBEKAgICAcINCgICAgJB\u002FUQRAIASnKAIEQf\u002F\u002F\u002F\u002F8HcUUNAwsgCEIgiKdBdU8EQCAIpyIOIA4oAgBBAWo2AgALIABB65YBIAhB7JYBELIBIgdCgICAgHCDQoCAgIDgAFINAQtCgICAgDAhCQwICyAAQbCSARBgIglCgICAgHCDQoCAgIDgAFINAQwHCyABKQMgIgdCIIinQXVPBEAgB6ciDiAOKAIAQQJqNgIACyAHIQkLIAAgACABKQMIQQEgEEEIakEAEO0DEP8BDQUgACACEMwBIg5BAEgNBQJAAkAgDgRAIAAgECACEC8NCCABKAIoQdsAEDwaIBApAwAiCkIAIApCAFUbIQwgAUEoaiEOAkADQCAFIAxRDQEgBVBFBEAgASgCKEEsEDwaCyABKAIoIAcQjQEaIAAgAiAFEGwiC0KAgICAcINCgICAgOAAUQ0KIAAgBSIEQoCAgIAIWgR+QoCAgIDAfiAEub0iBEKAgICAwIGA\u002FP8AfSAEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwUgBAsQNCIEQoCAgIBwg0KAgICA4ABRDQ8gACABIAIgCyAEEPADIQsgACAEEAwgC0KAgICAcIMiDUKAgICA4ABRDQogBUIBfCEFQoCAgIAwIQQgACABQoCAgIAgIAsgDUKAgICAMFEbIAgQ7wNFDQALDA4LIApCAFcEQEHdACEPQoCAgIAwIQQMAwsgASkDGCIFQoCAgIBwg0KAgICAkH9SBEBB3QAhD0KAgICAMCEEDAILQd0AIQ9CgICAgDAhBCAFpygCBEH\u002F\u002F\u002F\u002F\u002FB3ENAQwCCwJAIAEpAxAiBkKAgICAcIMiBUKAgICAMFIEQCAGQiCIp0F1SQ0BIAanIg4gDigCAEEBajYCAAwBCyAAIAJBEUEAELICIgZCgICAgHCDIQULQoCAgIAwIQQgBUKAgICA4ABRDQwgACAQIAYQLw0MIAEoAihB+wAQPBpCACEFIBApAwAiBEIAIARCAFUbIQsgAUEoaiEOQQAhD0KAgICAMCEEA0AgBSALUgRAIAAgBBAMIAAgBiAFEGwiBEKAgICAcINCgICAgOAAUQ0OIARCIIinQXVPBEAgBKciESARKAIAQQFqNgIACyAAIAIgBBBOIgpCgICAgHCDQoCAgIDgAFENDiAAIAEgAiAKIAQQ8AMiCkKAgICAcIMiDEKAgICAMFIEQCAMQoCAgIDgAFENDyAPBEAgASgCKEEsEDwaCyAAIAQQ7gMiBEKAgICAcINCgICAgOAAUQRAIAAgChAMDBALIAEoAiggBxCNARogASgCKCAEEI0BGiABKAIoQToQPBogASgCKCAJEI0BGkEBIQ8gACABIAogCBDvAw0PCyAFQgF8IQUMAQsLIA9FBEBB\u002FQAhDwwCC0H9ACEPIAEoAhgoAgRB\u002F\u002F\u002F\u002F\u002FwdxRQ0BCyAOKAIAQQoQPBogDigCACADEI0BGgsgASgCKCAPEDwaQQAhDiAAIAAgASkDCCAQIBBBABCuBRD\u002FAQ0KIAAgAhAMIAAgBhAMIAAgBxAMIAAgCRAMIAAgCBAMIAAgBBAMDAsLQoCAgIAgIAIgAkKAgICAwIGA\u002FP8AfEKAgICAgICA+P8Ag0KAgICAgICA+P8AURshAgwDCyAOQXZGDQULIAAgAhAMQQAhDgwIC0KAgICAMCEHQoCAgIAwIQlCgICAgDAhBkKAgICAMCEEQoCAgIAwIQggACACEO4DIgJCgICAgHCDQoCAgIDgAFINAAwGCyABKAIoIAIQhAEhDgwGC0KAgICAMCEEDAQLQoCAgIAwIQdCgICAgDAMAgsgAEHeDEEAEBJCgICAgDAhBwtCgICAgDAhBkKAgICAMAshCUKAgICAMCEEQoCAgIAwIQgLIAAgAhAMIAAgBhAMIAAgBxAMIAAgCRAMIAAgCBAMIAAgBBAMQX8hDgsgEEEQaiQAIA4L\u002FAICAX8BfiMAQSBrIgUkACAFIAQ3AxgCQAJAAkAgA0KAgICAcINCgICAgOB+UiADQv\u002F\u002F\u002F\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\u002F\u002F\u002F\u002F\u002FB3EiBSAFQQpPGxCOASICNwMwDAELIAtCIIinQXVPBEAgC6ciBSAFKAIAQQFqNgIACyAEIAs3AzAgCyECCyAAIAMQDEKAgICA4AAhCiACQoCAgIBwg0KAgICA4ABRDQIgABAzIgxCgICAgHCDQoCAgIDgAFEEQEKAgICA4AAhDAwDCyABQiCIpyIFQXVPBEAgAaciByAHKAIAQQFqNgIACyAAIAxBLyABQQcQFUEASA0CIAVBdU8EQCABpyIFIAUoAgBBAWo2AgALQoCAgIAwIQogACAEQRhqIAwgASALEPADIgJCgICAgHCDIgFCgICAgDBRDQJCgICAgOAAIQogAUKAgICA4ABRBEAgASEKDAMLIAAgBEEYaiACIAsQ7wMhCCAEKAJAIQYgCA0CIAYQNyEKDAMLIAAgAxAMDAELQoCAgIDgACEKCyAGKAIAKAIQIgVBEGogBigCBCAFKAIEEQAAIAZBADYCBAsgACAMEAwgACAEKQM4EAwgACAEKQMwEAwgACAEKQMoEAwgACAEKQMgEAwgBEHgAGokACAKC7YBAgF\u002FAX4jAEHQAGsiBCQAIARBAEHQABAsIgQgAzYCDCAEIAA2AgAgBEKggICAEDcDECAEIAE2AjggBCABIAJqNgI8IARBATYCCCAEQQA2AkxCgICAgDAhBQJAAkAgBBCiAQ0AIAQQ9QMiBUKAgICAcINCgICAgOAAUQ0AIAQoAhBBqn9GDQEgBEGu4gBBABATCyAAIAUQDCAEIARBEGoQgQJCgICAgOAAIQULIARB0ABqJAAgBQtAAQJ\u002FIwBBEGsiAiQAAn8gASAAKAIQRwRAIAIgATYCACAAQcyQASACEBNBfwwBCyAAEKIBCyEDIAJBEGokACADC9AFAgJ+BX8jAEEQayIGJAAgACgCACEFAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIQIgRBgAFqDgQCAQUDAAsgBEGqf0YNAyAEQdsARwRAIARB+wBHDQVCgICAgCAhASAAEKIBDQlCgICAgOAAIQEgBRAzIgJCgICAgHCDQoCAgIDgAFENCQJAIAAoAhAiA0H9AEYNAANAAkAgA0GBf0YEQCAFIAApAyAQMCIDDQEMDAsgA0GDf0cNCiAAKAJMRQ0KIAUgACgCIBAWIQMLAkACQCAAEKIBDQAgAEE6EPQDDQAgABD1AyIBQoCAgIBwg0KAgICA4ABSDQELIAUgAxAQDAsLIAUgAiADIAFBBxAVIQcgBSADEBAgB0EASA0KIAAoAhBBLEcNASAAEKIBDQogACgCTEUgACgCECIDQf0AR3INAAsLIAIhASAAQf0AEPQDDQkMCgtCgICAgCAhASAAEKIBDQhCgICAgOAAIQEgBRA7IgJCgICAgHCDQoCAgIDgAFENCAJAIAAoAhBB3QBGDQADQCAAEPUDIgFCgICAgHCDQoCAgIDgAFENCSAFIAIgAyABQQcQkwFBAEgNCSAAKAIQQSxHDQEgABCiAQ0JIANBAWohAyAAKAJMRQ0AIAAoAhBB3QBHDQALCyACIQEgAEHdABD0Aw0IDAkLIAApAyAiAUIgiKdBdU8EQCABpyIEIAQoAgBBAWo2AgALIAEhAiAAEKIBDQcMCAsgACkDICIBIQIgABCiAQ0GDAcLIAAoAiBBAWsiBEECSw0BIARBA3RB4PQBaikDACIBIQIgABCiAQ0FDAYLIABB9RRBABATDAELIAAoAjghAyAGIAAoAhgiBDYCBCAGIAMgBGs2AgAgAEGzjQEgBhATC0KAgICAICEBDAILIABBrNQAQQAQEwsgAiEBCyAFIAEQDEKAgICA4AAhAgsgBkEQaiQAIAILVgECfgJ\u002FQQAgAUKAgICAcFQNABogACABQc0BIAFBABARIgJCgICAgHCDIgNCgICAgDBSBEBBfyADQoCAgIDgAFENARogACACECcPCyABpy8BBkESRgsLGAAgACgCECIAQRBqIAEgAiAAKAIIEQEAC7gBAgJ+A38jAEEQayIGJAACQAJAIAAgAUEtEFoEQCAAIAFCgICAgDAQ\u002FQEiBEKAgICAcINCgICAgOAAUQ0CIAAgBiAEEIICIQUgACAEEAwgBUKAgICAcINCgICAgOAAUQ0BIAAgASADIAYQqQIhCANAIAdBAkZFBEAgACAGIAdBA3RqKQMAEAwgB0EBaiEHDAELCyAIRQ0BIAAgBRAMC0KAgICA4AAhBAwBCyAFIQQLIAZBEGokACAEC6gBAQZ\u002FAkAgASgCVCICQYD+A3ENACABIAJBgAJyNgJUA0AgASgCFCADTARAQQAPCyABKAIQIANBA3RqIgcoAgAhBEF\u002FIQYgACABKAIEEI8EIgJFDQECQCAAIAQQjwQiBEUEQEEAIQUMAQsgACACIAQQuQUhBSAAIAIQMSAEIQILIAAgAhAxIAVFDQEgByAFNgIEIANBAWohAyAAIAUQ+QNBAE4NAAsLIAYLiAEBAn9BjQEhAgJAAkACQAJAAkACQAJAAkACQAJAQQcgAUIgiKciAyADQQdrQW5JG0EKag4SCQgHAggICAgIAwABBgQICAgACAtBxwAPC0HIAA8LQckADwsgAacsAAVBAE4NAQtBxgAPC0EbIQIgACABEDUNAwtBygAPC0HLAA8LQc0AIQILIAILbQECfwJAIAFCgICAgHBUDQAgAaciAy8BBhDgAUUNACADKAIgLQARQQhxRQ0AIAMoAigiBARAIAAgBK1CgICAgHCEEAwLQQAhACACQoCAgIBwWgRAIAKnIgAgACgCAEEBajYCAAsgAyAANgIoCwsMACAAQZHBAEEAEBILzAICBn8BfiMAQRBrIgYkAAJAIAJC\u002F\u002F\u002F\u002F\u002F29YBEAgAEGrH0EAEBIMAQsgACAGQQxqIAIQygENACAGKAIMIgRBgIAETwRAIABBoyFBABA6DAELIABBASAEIARBAU0bQQN0EFwiBUUNAAJAAkAgAqciBy8BBiIDQQhHIANBAkdxDQAgBy0ABUEIcUUNACAEIAcoAihHDQBBACEDA0AgAyAERg0CIANBA3QiCCAHKAIkaikDACICQiCIp0F1TwRAIAKnIgAgACgCAEEBajYCAAsgBSAIaiACNwMAIANBAWohAwwACwALQQAhAwNAIAMgBEYNASAAIAIgAxCmASIJQoCAgIBwg0KAgICA4ABRBEAgACAFIAMQhgNBACEDDAMFIAUgA0EDdGogCTcDACADQQFqIQMMAQsACwALIAEgBDYCACAFIQMLIAZBEGokACADC5wCAgJ\u002FAX4CfkKAgICA4AAgABB2DQAaAkACQCABQoCAgIBwWgRAIAGnIgctAAVBEHFFBEAgAEGdLEEAEBJCgICAgOAADwsgBUEBciEGIAcvAQYiBUENRg0CIAAoAhAoAkQgBUEYbGooAhAiBQ0BCyAAQfs5QQAQEkKAgICA4AAPCyAAIAEgAiADIAQgBiAFERYADwsgBygCIC0AEUEEcQRAIAAgAUKAgICAMCACIAMgBCAGENIBDwtCgICAgOAAIAAgAkEBEF4iCEKAgICAcINCgICAgOAAUQ0AGiAAIAEgCCACIAMgBCAGENIBIgFC\u002F\u002F\u002F\u002F\u002F29YIAFCgICAgHCDQoCAgIDgAFJxRQRAIAAgCBAMIAEPCyAAIAEQDCAICwvPAgEEfyABQRxqIQQgAUEYaiEGA0AgBiAEKAIAIgRHBEACQCAEQRJrLwEAIAJHDQAgBEETay0AAEEBdkEBcSADRw0AIARBGGsiACAAKAIAQQFqNgIAIAAPCyAEQQRqIQQMAQsLIABBKBAkIgRFBEBBAA8LIARBATYCACAAKAIQIQAgBEEDOgAEIAAoAlAiBSAEQQhqIgc2AgQgBCAAQdAAajYCDCAEIAU2AgggACAHNgJQIAQgAjsBBiAEIAQtAAVB\u002FAFxIANBAXRBAnFyOgAFIAEoAhgiACAEQRhqIgU2AgQgBCAGNgIcIAQgADYCGCABIAU2AhgCQCABLQAoQQhxBEAgBCABQThrIgA2AiAgACAAKAIAQQFqNgIADAELIARBADYCIAsgAwRAIAQgASgCECACQQN0ajYCECAEDwsgBCABKAIUIAJBA3RqNgIQIAQLjAICAX8BfgJAAkAgACABpyIELwARQQN2QQZxQZC3AWovAQAQhgEiBUKAgICAcINCgICAgOAAUQRADAELAkAgACAFIAQgAiADEMMFIgFCgICAgHCDQoCAgIDgAFENACAAIAEgBCgCHCICQS8gAhsgBC8BLBCYAyAELwARIgJBEHEEQCAAIAAoAihBqANB2AIgAkEwcUEwRhtqKQMAEEEiBUKAgICAcINCgICAgOAAUQ0BIAAgAUE8IAVBAhAVGiABDwsgAkEBcUUNAiABQoCAgIBwWgRAIAGnIgIgAi0ABUEQcjoABQsgACABQTxBAEEAQQIQgAMaIAEPCwsgACABEAxCgICAgOAAIQELIAELiAQBDX8jAEEgayIFJAAgA0EAIANBAEobIQ5BACEDA0ACQCADIA5GBEBBACEKDAELIAVBADYCGCAFQgA3AxAgBUIANwMIIAUgASADQQxsaiIEKAIENgIMIAUgBCgCCDYCECACIANqIQZBfyEKIANBAWohAyAEKAIAIQlBfyELAkAgBkH\u002F\u002FwNLDQACQCAGIAAoAkAiBEkEQCAAKAJEIgQgBkEYbGooAgBFDQEMAgtBNiAGQQFqIgcgBEEDbEEBdiIEIAQgB0gbIgQgBEE2TBsiB0EDdCEPIABBEGohDCAAQcwAaiEEIABByABqIRADQCAQIAQoAgAiCEcEQCAMIAgoAhQgDyAAKAIIEQEAIg1FDQMgACgCQCEEA0AgBCAHSARAIA0gBEEDdGpCgICAgCA3AwAgBEEBaiEEDAELCyAIIA02AhQgCEEEaiEEDAELCyAMIAAoAkQgB0EYbCAAKAIIEQEAIgRFDQEgBCAAKAJAIghBGGxqQQAgByAIa0EYbBAsGiAAIAc2AkAgACAENgJECyAEIAZBGGxqIgQgBjYCACAJQdgBTgRAIAAoAjggCUECdGooAgAiBiAGKAIAQQFqNgIACyAEIAk2AgQgBCAFKAIMNgIIIAQgBSgCEDYCDCAEIAUoAhQ2AhAgBCAFKAIYNgIUQQAhCwsgC0EATg0BCwsgBUEgaiQAIAoLNQECfwJAIABCgICAgHBUDQAgAKciBC8BBkEMRw0AIAQoAiQgAUcNACAELgEqIAJGIQMLIAMLUAEDfyAAKALgASABKAIUQSAgACgC1AFrdkECdGohAgNAIAIiAygCACIEQShqIQIgASAERw0ACyADIAEoAig2AgAgACAAKALcAUEBazYC3AELgAkBC38jAEEQayIIJAACQAJAAkACQAJAAkADQCABKAIQIgNBMGohBiADIAMoAhggAnFBf3MiCUECdGooAgAhBEEAIQMDQCAEBEAgCCAGIARBAWsiCkEDdGoiBTYCDCAFKAIAIQcgAiAFKAIERgRAQQAhBCAHQYCAgCBxRQ0JQX8hBCAAIAEgCEEMahDTAQ0JIAEoAhAhAgJAIAMEQCACIAMgBmtqIgNBMGogAygCMEGAgIBgcSAIKAIMKAIAQf\u002F\u002F\u002Fx9xcjYCACAIKAIMIQkMAQsgAiAJQQJ0aiAIKAIMIgkoAgBB\u002F\u002F\u002F\u002FH3E2AgALQQEhBCACIAIoAiRBAWo2AiQgACgCECABKAIUIApBA3RqIgMgCSgCAEEadhDUBSAAIAgoAgwoAgQQECAIKAIMIgUgBSgCAEH\u002F\u002F\u002F8fcTYCACAIKAIMQQA2AgQgA0KAgICAMDcDACACKAIkIgNBCEgNCSADIAIoAiBBAXZJDQkgASgCECIHLQAQDQVBAiAHKAIgIAcoAiRrIgIgAkECTBsiCiAHKAIcSw0GIAcoAhhBAWohBANAIAQiAkEBdiIEIApPDQALIAAgCkEDdCINIAJBAnQiBWpBMGoQJCIERQ0IIAJBAWshCyAHKAIIIgIgBygCDCIDNgIEIAMgAjYCACAHQgA3AgggBCAFaiAHQTAQHiEGIAAoAhAiAigCUCIDIAZBCGoiCTYCBCAGIAJB0ABqNgIMIAYgAzYCCCACIAk2AlBBACEDIARBACAFECwaIAdBMGohBCAGQTBqIQIgASgCFCEMQQAhCQNAIAkgBigCICIFT0UEQCAEKAIEIgUEQCACIAU2AgQgAiAEKAIAQYCAgGBxIgUgAigCAEH\u002F\u002F\u002F8fcXI2AgAgAiAFIAYgBCgCBCALcUF\u002Fc0ECdGoiBSgCAEH\u002F\u002F\u002F8fcXI2AgAgBSADQQFqIgU2AgAgDCADQQN0aiAMIAlBA3RqKQMANwMAIAUhAyACQQhqIQILIAlBAWohCSAEQQhqIQQMAQsLIAMgBSAGKAIka0cNByAGQQA2AiQgBiAKNgIcIAYgCzYCGCAGIAM2AiAgASAGNgIQIAAoAhAiAkEQaiAHIAcoAhhBf3NBAnRqIAIoAgQRAABBASEEIAAgASgCFCANEMUCIgBFDQkgASAANgIUDAkFIAdB\u002F\u002F\u002F\u002FH3EhBCAFIQMMAgsACwtBASEEIAEtAAUiA0EEcUUNBiADQQhxRQ0BIAAgCEEIaiACEKUBRQ0GIAgoAggiAyABKAIoIgVPDQYgAS8BBiIEQQhGIARBAkZyRQRAQQAhBAwHCyAFQQFrIANGBEAgACABKAIkIANBA3RqKQMAEAwgASADNgIoDAYLIAAgARCOA0UNAAtBfyEEDAULIAAoAhAoAkQgAS8BBkEYbGooAhQiA0UNBCADKAIIIgNFDQQgACABrUKAgICAcIQgAiADERMAIQQMBAtByuoAQajsAEG4I0HLKBAAAAtB9s0AQajsAEG8I0HLKBAAAAtB14gBQajsAEHhI0HLKBAAAAtBASEECyAIQRBqJAAgBAtQAQN\u002FIwBBIGsiAyQAAn8gACADQQxqIAIQ2wUiBEUEQCABQgA3AwBBfwwBCyABIARBARCwBBogACAEIANBDGoQ5gFBAAshBSADQSBqJAAgBQuQAQIDfwF+IAEoAhQiBSkDACIHQv\u002F\u002F\u002F\u002F8PViABKAIoIgZBAWoiBCAHp01yRQRAIAEoAhAtADNBCHFFBEAgACACEAwgACADQTAQ5wEPCyAFIAStNwMACwJAIAQgASgCIE0NACAAIAEgBBDYBUUNACAAIAIQDEF\u002FDwsgASgCJCAGQQN0aiACNwMAIAEgBDYCKEEBC7wBAQF\u002FIwBBEGsiBSQAIAUgAzcDCAJAIAEEQCABIAEoAgBBAWo2AgAgACABrUKAgICAcIQgAkEBIAVBCGoQNiECIAAgBSkDCBAMQX8hASACQoCAgIBwg0KAgICA4ABRDQEgACACEAxBASEBDAELIAAgAxAMIARBgIABcUUEQEEAIQEgBEGAgAJxRQ0BIAAoAhAoAowBIgRFDQEgBC0AKEEBcUUNAQsgAEHbCUEAEBJBfyEBCyAFQRBqJAAgAQs\u002FAQF+IAAQ4gEiAkKAgICAcINCgICAgOAAUgRAIAKnQQRqIAEQMkUEQCACDwsgACACEAwgABBwC0KAgICA4AALCwAgACABQQEQjQQL2wEBA38jAEEQayIEJAACQAJAIAFCgICAgHBUDQAgAaciAi8BBkEsRgRAAkAgACAEQQhqIAFB4wAQfiIDRQ0AIAQpAwgiAUKAgICAcINCgICAgDBRBEAgACADKQMAEIoEIQIMBAsgACABIAMpAwhBASADEDYiAUKAgICAcINCgICAgOAAUQ0AIAAgARAnIgJFDQIgACADKQMAEJcBIgNBAEgNACADRQ0DIABBnSVBABASC0F\u002FIQIMAgsgAiACLQAFQf4BcToABUEBIQIMAQtBACECCyAEQRBqJAAgAgt7AgJ\u002FAX5BiAIhAkKAgICAICEEAkACQAJAAkACQAJAAkBBByABQiCIpyIDIANBB2tBbkkbIgNBCmoODAUGBAMGBgYGBgYBAgALIANBB0cNBQtBICECDAMLQTAhAgwCC0EoIQIMAQtBOCECCyAAKAIoIAJqKQMAIQQLIAQLYAEBfCAAKQIEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP1gEQCABIAErAwhEAAAAAAAA8D8gACgCALciAqOgOQMIIAEgASsDECAAKAIEIgBBH3UgAEH\u002F\u002F\u002F\u002F\u002FB3EgAEEfdnRqQRFquCACo6A5AxALC\u002FgCAgF+A38jAEEwayIEJABB9e8AIQVCgICAgOAAIQMCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQEEHIAFCIIinIgYgBkEHa0FuSRtBCmoOEggJBgAJCQkJCgUBAgMECQkMBwkLIAZBdUkNCiABpyIAIAAoAgBBAWo2AgAMCgsgBCABPgIAIARBEGoiBUEgQe7rACAEEEgaDAgLIABBA0ECIAGnGxApIQMMCQsgAEEBECkhAwwICyAAQcYAECkhAwwHCyAAIAFBABC7AiIBQoCAgIBwg0KAgICA4ABRBEAgASEDDAcLIAAgASACEI0EIQMgACABEAwMBgsgAgRAIAZBdUkNBSABpyIAIAAoAgBBAWo2AgAMBQsgAEGNyQBBABASDAULIAAgAUKAgICAwIGA\u002FP8AfL9BCkEAQQAQugIhAwwECyAAIAEgACgCECgCoAIRCAAhAwwDC0Hi7wAhBQsgACAFEGAhAwwBCyABIQMLIARBMGokACADCzcAIAAgASACIAMCf0EAIAAoAhAiAC0AiAENABpBASAAKAKMASIARQ0AGiAAKQMIEJYDRQsQ5AULMQIBfwF+IAAgARApIgNCgICAgHCDQoCAgIDgAFIEQCAAIAMQqAEhAiAAIAMQDAsgAgtGAQF\u002FIAEgASgCACICQQFrNgIAIAJBAUwEQCABKQIEQoCAgICAgICAwABaBEAgACABEJsDDwsgAEEQaiABIAAoAgQRAAALC1kBA38jAEEQayICJAAgACgCECEAAn8CQCACQQxqIAEQ7QVFDQAgAigCDCIDQQBIDQAgACABEJAEIANBgICAgHhyDAELIAAgAUEBEMcCCyEEIAJBEGokACAEC0QBAX8jAEEQayIFJAAgBSABIAIgAyAEQoCAgICAgICAgH+FEG8gBSkDACEBIAAgBSkDCDcDCCAAIAE3AwAgBUEQaiQACxAAIAAgASACQQBBABCUBBoLxgIBBX8jAEHQAWsiBSQAIAUgAjYCzAEgBUGgAWoiAkEAQSgQLBogBSAFKALMATYCyAECQEEAIAEgBUHIAWogBUHQAGogAiADIAQQ\u002FQVBAEgEQEF\u002FIQQMAQsgACgCTEEASCEJIAAgACgCACIIQV9xNgIAAn8CQAJAIAAoAjBFBEAgAEHQADYCMCAAQQA2AhwgAEIANwMQIAAoAiwhBiAAIAU2AiwMAQsgACgCEA0BC0F\u002FIAAQmAQNARoLIAAgASAFQcgBaiAFQdAAaiAFQaABaiADIAQQ\u002FQULIQIgBgRAIABBAEEAIAAoAiQRAQAaIABBADYCMCAAIAY2AiwgAEEANgIcIAAoAhQhASAAQgA3AxAgAkF\u002FIAEbIQILIAAgACgCACIAIAhBIHFyNgIAQX8gAiAAQSBxGyEEIAkNAAsgBUHQAWokACAECzwBAX8gAEIANwNwIAAgACgCLCAAKAIEIgFrrDcDeCAAIAAoAggiACABa6xCAFdBAXIEfyAABSABCzYCaAtKAQJ\u002FAkAgAC0AACICRSACIAEtAAAiA0dyDQADQCABLQABIQMgAC0AASICRQ0BIAFBAWohASAAQQFqIQAgAiADRg0ACwsgAiADawvCAQEDfwJAIAEgAigCECIDBH8gAwUgAhCYBA0BIAIoAhALIAIoAhQiBGtLBEAgAiAAIAEgAigCJBEBAA8LAkACQCABRSACKAJQQQBIcg0AIAEhAwNAIAAgA2oiBUEBay0AAEEKRwRAIANBAWsiAw0BDAILCyACIAAgAyACKAIkEQEAIgQgA0kNAiABIANrIQEgAigCFCEEDAELIAAhBUEAIQMLIAQgBSABEB4aIAIgAigCFCABajYCFCABIANqIQQLIAQLWQEBfyAAIAAoAkgiAUEBayABcjYCSCAAKAIAIgFBCHEEQCAAIAFBIHI2AgBBfw8LIABCADcCBCAAIAAoAiwiATYCHCAAIAE2AhQgACABIAAoAjBqNgIQQQALiQQCBX4DfwJAAkAgAb0iBEIBhiIDUA0AIAG9IQYgAL0iBUI0iKdB\u002Fw9xIgdB\u002Fw9GDQAgBkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KBgICAgICA+P8AVA0BCyAAIAGiIgAgAKMPCyADIAVCAYYiAloEQCAARAAAAAAAAAAAoiAAIAIgA1EbDwsgBEI0iKdB\u002Fw9xIQgCfiAHRQRAQQAhByAFQgyGIgJCAFkEQANAIAdBAWshByACQgGGIgJCAFkNAAsLIAVBASAHa62GDAELIAVC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FweDQoCAgICAgIAIhAshAgJ+IAhFBEBBACEIIARCDIYiA0IAWQRAA0AgCEEBayEIIANCAYYiA0IAWQ0ACwsgBEEBIAhrrYYMAQsgBEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FB4NCgICAgICAgAiECyEEIAcgCEoEQANAAkAgAiAEfSIDQgBTDQAgAyICQgBSDQAgAEQAAAAAAAAAAKIPCyACQgGGIQIgB0EBayIHIAhKDQALIAghBwsCQCACIAR9IgNCAFMNACADIgJCAFINACAARAAAAAAAAAAAog8LAkAgAkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FB1YEQCACIQMMAQsDQCAHQQFrIQcgAkKAgICAgICABFQhCSACQgGGIgMhAiAJDQALCyAFQoCAgICAgICAgH+DIANCgICAgICAgAh9IAetQjSGhCADQQEgB2utiCAHQQBKG4S\u002FC8YEAwN8A38CfgJ8AkAgABDKAkH\u002FD3EiBUQAAAAAAACQPBDKAiIEa0QAAAAAAACAQBDKAiAEa0kEQCAFIQQMAQsgBCAFSwRAIABEAAAAAAAA8D+gDwtBACEERAAAAAAAAJBAEMoCIAVLDQBEAAAAAAAAAAAgAL0iB0KAgICAgICAeFENARpEAAAAAAAA8H8QygIgBU0EQCAARAAAAAAAAPA\u002FoA8LIAdCAFMEQEQAAAAAAAAAEBCMBg8LRAAAAAAAAABwEIwGDwtB4LwEKwMAIACiQei8BCsDACIBoCICIAGhIgFB+LwEKwMAoiABQfC8BCsDAKIgAKCgIgEgAaIiACAAoiABQZi9BCsDAKJBkL0EKwMAoKIgACABQYi9BCsDAKJBgL0EKwMAoKIgAr0iB6dBBHRB8A9xIgVB0L0EaisDACABoKCgIQEgBUHYvQRqKQMAIAdCLYZ8IQggBEUEQAJ8IAdCgICAgAiDUARAIAhCgICAgICAgIg\u002Ffb8iACABoiAAoEQAAAAAAAAAf6IMAQsgCEKAgICAgICA8D98vyICIAGiIgEgAqAiA0QAAAAAAADwP2MEfCMAQRBrIgQhBiAEQoCAgICAgIAINwMIIAYgBCsDCEQAAAAAAAAQAKI5AwhEAAAAAAAAAAAgA0QAAAAAAADwP6AiACABIAIgA6GgIANEAAAAAAAA8D8gAKGgoKBEAAAAAAAA8L+gIgAgAEQAAAAAAAAAAGEbBSADC0QAAAAAAAAQAKILDwsgCL8iACABoiAAoAsLuxgDGX8EfAF+IwBBMGsiCCQAAkACQAJAIAC9Ih9CIIinIgNB\u002F\u002F\u002F\u002F\u002FwdxIgZB+tS9gARNBEAgA0H\u002F\u002Fz9xQfvDJEYNASAGQfyyi4AETQRAIB9CAFkEQCABIABEAABAVPsh+b+gIgBEMWNiGmG00L2gIhs5AwAgASAAIBuhRDFjYhphtNC9oDkDCEEBIQMMBQsgASAARAAAQFT7Ifk\u002FoCIARDFjYhphtNA9oCIbOQMAIAEgACAboUQxY2IaYbTQPaA5AwhBfyEDDAQLIB9CAFkEQCABIABEAABAVPshCcCgIgBEMWNiGmG04L2gIhs5AwAgASAAIBuhRDFjYhphtOC9oDkDCEECIQMMBAsgASAARAAAQFT7IQlAoCIARDFjYhphtOA9oCIbOQMAIAEgACAboUQxY2IaYbTgPaA5AwhBfiEDDAMLIAZBu4zxgARNBEAgBkG8+9eABE0EQCAGQfyyy4AERg0CIB9CAFkEQCABIABEAAAwf3zZEsCgIgBEypSTp5EO6b2gIhs5AwAgASAAIBuhRMqUk6eRDum9oDkDCEEDIQMMBQsgASAARAAAMH982RJAoCIARMqUk6eRDuk9oCIbOQMAIAEgACAboUTKlJOnkQ7pPaA5AwhBfSEDDAQLIAZB+8PkgARGDQEgH0IAWQRAIAEgAEQAAEBU+yEZwKAiAEQxY2IaYbTwvaAiGzkDACABIAAgG6FEMWNiGmG08L2gOQMIQQQhAwwECyABIABEAABAVPshGUCgIgBEMWNiGmG08D2gIhs5AwAgASAAIBuhRDFjYhphtPA9oDkDCEF8IQMMAwsgBkH6w+SJBEsNAQsgACAARIPIyW0wX+Q\u002FokQAAAAAAAA4Q6BEAAAAAAAAOMOgIhxEAABAVPsh+b+ioCIbIBxEMWNiGmG00D2iIh2hIh5EGC1EVPsh6b9jIQICfyAcmUQAAAAAAADgQWMEQCAcqgwBC0GAgICAeAshAwJAIAIEQCADQQFrIQMgHEQAAAAAAADwv6AiHEQxY2IaYbTQPaIhHSAAIBxEAABAVPsh+b+ioCEbDAELIB5EGC1EVPsh6T9kRQ0AIANBAWohAyAcRAAAAAAAAPA\u002FoCIcRDFjYhphtNA9oiEdIAAgHEQAAEBU+yH5v6KgIRsLIAEgGyAdoSIAOQMAAkAgBkEUdiICIAC9QjSIp0H\u002FD3FrQRFIDQAgASAbIBxEAABgGmG00D2iIgChIh4gHERzcAMuihmjO6IgGyAeoSAAoaEiHaEiADkDACACIAC9QjSIp0H\u002FD3FrQTJIBEAgHiEbDAELIAEgHiAcRAAAAC6KGaM7oiIAoSIbIBxEwUkgJZqDezmiIB4gG6EgAKGhIh2hIgA5AwALIAEgGyAAoSAdoTkDCAwBCyAGQYCAwP8HTwRAIAEgACAAoSIAOQMAIAEgADkDCEEAIQMMAQsgH0L\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FB4NCgICAgICAgLDBAIS\u002FIQBBACEDQQEhAgNAIAhBEGogA0EDdGoCfyAAmUQAAAAAAADgQWMEQCAAqgwBC0GAgICAeAu3Ihs5AwAgACAboUQAAAAAAABwQaIhAEEBIQMgAiEWQQAhAiAWDQALIAggADkDIEECIQMDQCADIgJBAWshAyAIQRBqIg4gAkEDdGorAwBEAAAAAAAAAABhDQALQQAhBCMAQbAEayIFJAAgBkEUdkGWCGsiA0EDa0EYbSIGQQAgBkEAShsiEEFobCADaiEGQcSmBCgCACIJIAJBAWoiDEEBayIHakEATgRAIAkgDGohAyAQIAdrIQIDQCAFQcACaiAEQQN0aiACQQBIBHxEAAAAAAAAAAAFIAJBAnRB0KYEaigCALcLOQMAIAJBAWohAiAEQQFqIgQgA0cNAAsLIAZBGGshCkEAIQMgCUEAIAlBAEobIQQgDEEATCELA0ACQCALBEBEAAAAAAAAAAAhAAwBCyADIAdqIQ9BACECRAAAAAAAAAAAIQADQCAOIAJBA3RqKwMAIAVBwAJqIA8gAmtBA3RqKwMAoiAAoCEAIAJBAWoiAiAMRw0ACwsgBSADQQN0aiAAOQMAIAMgBEYhFyADQQFqIQMgF0UNAAtBLyAGayESQTAgBmshDyAGQRlrIRMgCSEDAkADQCAFIANBA3RqKwMAIQBBACECIAMhBCADQQBMIg1FBEADQCAFQeADaiACQQJ0agJ\u002FAn8gAEQAAAAAAABwPqIiG5lEAAAAAAAA4EFjBEAgG6oMAQtBgICAgHgLtyIbRAAAAAAAAHDBoiAAoCIAmUQAAAAAAADgQWMEQCAAqgwBC0GAgICAeAs2AgAgBSAEQQFrIgRBA3RqKwMAIBugIQAgAkEBaiICIANHDQALCwJ\u002FIAAgChDVASIAIABEAAAAAAAAwD+inEQAAAAAAAAgwKKgIgCZRAAAAAAAAOBBYwRAIACqDAELQYCAgIB4CyEHIAAgB7ehIQACQAJAAkACfyAKQQBMIhRFBEAgA0ECdCAFaiICIAIoAtwDIgIgAiAPdSICIA90ayIENgLcAyACIAdqIQcgBCASdQwBCyAKDQEgA0ECdCAFaigC3ANBF3ULIgtBAEwNAgwBC0ECIQsgAEQAAAAAAADgP2YNAEEAIQsMAQtBACECQQAhBCANRQRAA0AgBUHgA2ogAkECdGoiFSgCACENQf\u002F\u002F\u002FwchEQJ\u002FAkAgBA0AQYCAgAghESANDQBBAAwBCyAVIBEgDWs2AgBBAQshBCACQQFqIgIgA0cNAAsLAkAgFA0AQf\u002F\u002F\u002FwMhAgJAAkAgEw4CAQACC0H\u002F\u002F\u002F8BIQILIANBAnQgBWoiDSANKALcAyACcTYC3AMLIAdBAWohByALQQJHDQBEAAAAAAAA8D8gAKEhAEECIQsgBEUNACAARAAAAAAAAPA\u002FIAoQ1QGhIQALIABEAAAAAAAAAABhBEBBACEEIAMhAgJAIAMgCUwNAANAIAVB4ANqIAJBAWsiAkECdGooAgAgBHIhBCACIAlKDQALIARFDQAgCiEGA0AgBkEYayEGIAVB4ANqIANBAWsiA0ECdGooAgBFDQALDAMLQQEhAgNAIAIiBEEBaiECIAVB4ANqIAkgBGtBAnRqKAIARQ0ACyADIARqIQQDQCAFQcACaiADIAxqIgdBA3RqIANBAWoiAyAQakECdEHQpgRqKAIAtzkDAEEAIQJEAAAAAAAAAAAhACAMQQBKBEADQCAOIAJBA3RqKwMAIAVBwAJqIAcgAmtBA3RqKwMAoiAAoCEAIAJBAWoiAiAMRw0ACwsgBSADQQN0aiAAOQMAIAMgBEgNAAsgBCEDDAELCwJAIABBGCAGaxDVASIARAAAAAAAAHBBZgRAIAVB4ANqIANBAnRqAn8CfyAARAAAAAAAAHA+oiIbmUQAAAAAAADgQWMEQCAbqgwBC0GAgICAeAsiArdEAAAAAAAAcMGiIACgIgCZRAAAAAAAAOBBYwRAIACqDAELQYCAgIB4CzYCACADQQFqIQMMAQsCfyAAmUQAAAAAAADgQWMEQCAAqgwBC0GAgICAeAshAiAKIQYLIAVB4ANqIANBAnRqIAI2AgALRAAAAAAAAPA\u002FIAYQ1QEhAAJAIANBAEgNACADIQIDQCAFIAIiBEEDdGogACAFQeADaiACQQJ0aigCALeiOQMAIAJBAWshAiAARAAAAAAAAHA+oiEAIAQNAAsgA0EASA0AIAMhBANARAAAAAAAAAAAIQBBACECIAkgAyAEayIGIAYgCUobIgpBAE4EQANAIAJBA3RBoLwEaisDACAFIAIgBGpBA3RqKwMAoiAAoCEAIAIgCkchGCACQQFqIQIgGA0ACwsgBUGgAWogBkEDdGogADkDACAEQQBKIRkgBEEBayEEIBkNAAsLRAAAAAAAAAAAIQAgA0EATgRAIAMhAgNAIAIiBEEBayECIAAgBUGgAWogBEEDdGorAwCgIQAgBA0ACwsgCCAAmiAAIAsbOQMAIAUrA6ABIAChIQBBASECIANBAEoEQANAIAAgBUGgAWogAkEDdGorAwCgIQAgAiADRyEaIAJBAWohAiAaDQALCyAIIACaIAAgCxs5AwggBUGwBGokACAHQQdxIQMgCCsDACEAIB9CAFMEQCABIACaOQMAIAEgCCsDCJo5AwhBACADayEDDAELIAEgADkDACABIAgrAwg5AwgLIAhBMGokACADC\u002F4DAwN8A38BfiAAvSIHQiCIp0H\u002F\u002F\u002F\u002F\u002FB3EiBEGAgMCgBE8EQCAARBgtRFT7Ifk\u002FIACmIAC9Qv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGw8LAkACfyAEQf\u002F\u002F7\u002F4DTQRAQX8gBEGAgIDyA08NARoMAgsgAJkhACAEQf\u002F\u002Fy\u002F8DTQRAIARB\u002F\u002F+X\u002FwNNBEAgACAAoEQAAAAAAADwv6AgAEQAAAAAAAAAQKCjIQBBAAwCCyAARAAAAAAAAPC\u002FoCAARAAAAAAAAPA\u002FoKMhAEEBDAELIARB\u002F\u002F+NgARNBEAgAEQAAAAAAAD4v6AgAEQAAAAAAAD4P6JEAAAAAAAA8D+goyEAQQIMAQtEAAAAAAAA8L8gAKMhAEEDCyEGIAAgAKIiAiACoiIBIAEgASABIAFEL2xqLES0or+iRJr93lIt3q2\u002FoKJEbZp0r\u002FKws7+gokRxFiP+xnG8v6CiRMTrmJmZmcm\u002FoKIhAyACIAEgASABIAEgAUQR2iLjOq2QP6JE6w12JEt7qT+gokRRPdCgZg2xP6CiRG4gTMXNRbc\u002FoKJE\u002F4MAkiRJwj+gokQNVVVVVVXVP6CiIQEgBEH\u002F\u002F+\u002F+A00EQCAAIAAgAyABoKKhDwsgBkEDdCIEQcClBGorAwAgACADIAGgoiAEQeClBGorAwChIAChoSIAmiAAIAdCAFMbIQALIAALaQEEfyABED0hAwNAAkAgAC0AAEUEQEF\u002FIQIMAQsDQAJ\u002FIABBLBCfAyIERQRAIAAQPQwBCyAEIABrCyIFIANGBEAgACABIAMQaEUNAgsgACAFakEBaiEAIAQNAAsgAkEBaiECDAELCyACCxEAIABBoJQCQfCcAkEjEKUDC1sAIAAgASACIAMgBBDsAyIDRQRAQoCAgIDgAA8LQoCAgIDgACECIAAgA0EoahC3AiIBQoCAgIBwg0KAgICA4ABSBEAgACADEKwFIAEhAgsgACgCECADEM4BIAILkwUBBH8gBEEIdEGAHnEiByADQdDfAmotAAAiBnIhAyAEQQ92IQUCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQCAEQQR2IghBD3EiBA4NAAAAAAECAwQFBgYIBwkLIAJBAkcgBEECSXIgAiAIQQFxR3ENCiABIAVrIANBAnRBoIACaigCAEEPdmohAQwKCyABIAVrIgNBAXEgAkEAR0YNCSADQQFzIAVqIQEMCQsgASAFayIDQQFGBEBBAUF\u002FIAIbIAFqIQEMCQsgAyACRUEBdEcNCEECQX4gAhsgAWohAQwICyABIAVrIQEgAg0GIABBmQc2AgQgACABIANBBXZB\u002FgBxQdDiAmovAQBqNgIAQQIPCyACQQFGDQYgAyACQQJGQQV0aiEBDAYLIAJBAUYNBSADQQF0QdDiAmovAQAgAkECRmohAQwFCyAEQQlrIAJBAEdHDQQgA0EBdEHQ4gJqLwEAIQEMBAsgAkUNAyAAIAZBP3FBAXRB0OICai8BADYCBCAAIANBBXZB\u002FgBxQdDiAmovAQAgASAFa2o2AgBBAg8LIAJBAUYNAiAAIAZBP3FBAXRB0OICai8BACIGNgIEIAAgA0EFdkH+AHFB0OICai8BACABIAVraiIBNgIAQQIgAkECRw0DGiAAIAEQ0wI2AgAgACAGENMCNgIEQQIPCyACQQFGDQEgACAHQQd2QdDiAmovAQAiATYCACAAIAZBD3FBAXRB0OICai8BACIDNgIIIAAgBkEDdkEecUHQ4gJqLwEAIgU2AgRBAyACQQJHDQIaIAAgARDTAjYCACAAIAUQ0wI2AgQgACADENMCNgIIQQMPCyABIAZBP3FBAXRB0OICai8BAGohAQsgACABNgIAQQELCxcAIAAgAUH\u002FAXEQDiAAIAJB\u002F\u002F8DcRAmC64ZARJ\u002FIwBBkAFrIggkACAIIAIoAgAiBDYCDAJAAkACQAJAAkACQAJAAkACQAJAIAQtAAAiCQRAIAlB3ABHDQUgBEEBaiIGIAAoAhxPDQEgCCAEQQJqIgU2AgwCQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBC0AASIJQdMAaw4FBAEBAQYACwJAIAlB4wBrDgIIBwALAkAgCUHzAGsOBQMBAQEFAAsgCUHEAEYNASAJQdAARiAJQfAARnINCAsgACgCKCEBDA4LQQEhBwwEC0ECIQcMAwtBAyEHDAILQQQhBwwBC0EFIQcLIAdBAXRBDHFBwP8BaigCACIFLwEAIRQgASAAKAJAENICIAdBAXEhBiAFQQJqIQUgFEEBdCEDQQAhCQNAIAMgCUcEQCAFIAlBAXRqLwEAIQAgASgCACIEIAEoAgROBEAgASAEQQFqENECDQUgASgCACEECyABIARBAWo2AgAgASgCCCAEQQJ0aiAANgIAIAlBAWohCQwBCwtBgICAgAQhCSAGRQ0LIAEQlAINAgwLCwJAIAUtAAAiBUHfAXFBwQBrQf8BcUEaTwRAIAAoAighASADRSAFQd8ARiAFQTBrQf8BcUEKSXJFcg0BIAENDQsgCCAEQQNqNgIMIAVBH3EhCQwLCyABDQsgCCAGNgIMQdwAIQkMCgsgACgCKEUEQEEAIQEMBwsgBS0AAEH7AEcNBCAIQdAAaiEEAkACQANAAkAgBUEBaiEDIAUtAAEiBxCnA0UNACAEIAhB0ABqa0E+Sw0CIAQgBzoAACAEQQFqIQQgAyEFDAELCyAEQQA6AAAgCEEQaiEEAkAgB0E9Rw0AIAVBAmohAwNAIAMtAAAiBxCnA0UNASAEIAhBEGprQT9PBEAgAEGizwBBABA\u002FDBAFIAQgBzoAACAEQQFqIQQgA0EBaiEDDAELAAsACyAEQQA6AAAgB0H9AEcEQCAAQcGMAUEAED8MDgtBACEEAkACQCAIQdAAaiIFQdsWQQcQaEUNACAFQfHrAEEDEGhFDQBBASEEIAVBwyVBEhBoRQ0AIAgoAlBB88bhA0cNAQsgASAAKAJAENICQQAhBiMAQTBrIgskAAJ\u002FQX5BwKMCIAhBEGoQnQQiDkEASA0AGiABIQwgBARAIAEoAhAhByALIAEoAgwiBTYCKCALQQA2AiQgC0IANwIcIAsgBTYCFCALQQA2AhAgC0IANwIIIAsgB0GbAyAHGyIFNgIsIAsgBTYCGCALQRxqIQwLIA5BAWohEQJAAkADQCAGQZ8VTARAIAohByAGQZC2AmotAAAiCsAhFQJ\u002FIAZBAWoiBSAKQf8AcSIKQeAASQ0AGiAFQZC2AmotAAAhBSAKQe8ATQRAIApBCHQgBXJBoL8BayEKIAZBAmoMAQsgBkGStgJqLQAAIApBEHRyIAVBCHRyQaDfvwNrIQogBkEDagshBSAVQQBOBEAgByAKakEBaiEKIAUhBgwCCyAFQQFqIQYgByAKakEBaiEKIBEgBUGQtgJqLQAARw0BIAwgByAKEGlFDQEMAgsLQQAiByAERQ0CGiAOQTdGIRIgDkEYRyETQQAhBgNAIAZBuwZMBEAgByEFIAZBsMsCaiwAACINQf8BcSEKAn8gBkEBaiIHIA1BAE4NABogB0GwywJqLQAAIQcgDUG\u002Ff00EQCAKQQh0IAdyQYD\u002FAWshCiAGQQJqDAELIAZBsssCai0AACAKQRB0ciAHQQh0ckGA\u002F\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\u002FDAcLIABB4TdBABA\u002FDAYLIAAQ1QIMBQsgCCAGNgIMIAhBDGogAUEBdBCXAiIDQQBOBEAgAyEJDAMLAkAgA0F+Rw0AIAgoAgwiBC0AACIDRQ0AQdeHASADQRAQkgIgAUVyDQEMBAsgAQ0DIAgoAgwhBAsgCcBBAE4NACAEQQYgCEEMahBRIglBgIAESQ0BIAAoAigNASAAQcM1QQAQPwwDCyAIIARBAWo2AgwLIAIgCCgCDDYCAAwCCyAAQeU8QQAQPwtBfyEJCyAIQZABaiQAIAkLHwEBfyAAKAI8IgFBAEgEfyAAEKAGGiAAKAI8BSABCwu7AwEFfyMAQRBrIgMkACADIAEoAgAiBTYCDCAAIQQCfwNAAkACQAJAAkACQAJAIAUtAAAiAkHcAEcEQCACQT5HDQEgACAERg0GIARBADoAACABIAMoAgxBAWo2AgBBAAwICyADIAVBAWo2AgwgBS0AAUH1AEYNAQwFCyACwEEATg0CIAVBBiADQQxqEFEiAkGAeHFBgLADRw0BIAMoAgxBBiADQQhqEFEiBUGAeHFBgLgDRw0DIAMgAygCCDYCDCACQQp0IAVqQYC4\u002FxprIQIMAwsgA0EMakECEJcCIQILIAJB\u002F\u002F\u002FDAEsNAgwBCyADIAVBAWo2AgwLAkAgACAERgRAAn8gAkH\u002FAE0EQCACQQN2Qfz\u002F\u002F\u002F8BcUGg\u002FwFqKAIAIAJ2QQFxDAELIAIQngQLRQ0CDAELAn8gAkH\u002FAE0EQCACQQN2Qfz\u002F\u002F\u002F8BcUGw\u002FwFqKAIAIAJ2QQFxDAELIAJBfnFBjMAARiACEJYGQQBHcgtFDQELIAQgAGtB+QBKDQACfyACQf8ATQRAIAQgAjoAACAEQQFqDAELIAQgAhDdAiAEagshBCADKAIMIQUMAQsLQX8LIQYgA0EQaiQAIAYLMQEBf0EBIQECQAJAAkAgAEEKaw4EAgEBAgALIABBqMAARg0BCyAAQanAAEYhAQsgAQuoAgEDfwJAAkAgACgCMCIJQQFqIgogACgCLCIITQRAIAAoAighCAwBCyAAKAIgIAAoAihBCCAIQQNsQQF2IgggCEEITRsiCSAAKAIkbBD3AyIIRQRAQX8hCAwCCyAAIAg2AiggACAJNgIsIAAoAjAiCUEBaiEKCyAAIAo2AjAgCCAAKAIkIAlsaiIIIAc2AgQgCCAGOgAAIAggBDYCDCAIIAU2AgggCCADOgABIAhBEGohBCAAKAIMQQF0IQVBACEAA0AgACAFRkUEQCAEIABBAnQiBmogASAGaigCADYCACAAQQFqIQAMAQsLIAQgBUECdGohAUEAIQhBACEAA0AgACADRg0BIAEgAEECdCIEaiACIARqKAIANgIAIABBAWohAAwACwALIAgLDQAgAEEGQX9BBRDxBQvLBQIIfwN+IwBBMGsiCCQAAn8CQAJAAkACQAJAIAMOAwABAgMLQf2DAUHY7ABByxpBkOwAEAAACyABIAIoAhAgAigCDCIAIABBBXQgAigCCGsQcTYCAAwCCyACKAIQIgMgAigCDCIAIABBBXQgAigCCGsiAkEgahBxrUIghiADIAAgAhBxrYQhECAGQYCU69wDRgRAIAEgEEKAlOvcA4AiET4CBCABIBAgEUKAlOvcA359PgIADAILIAEgECAGrSIRgCISPgIEIAEgECARIBJ+fT4CAAwBCyACKAIAIQogCEIANwIoIAhCgICAgICAgICAfzcCICAIIAo2AhwgCEIANwIUIAhCgICAgICAgICAfzcCDCAIIAo2AgggAyAFQQF0IARBAWoiC3ZBAWpBAXYiCmshDCAAIARBAXRBAXJBFGxqIQ1BACEDIAAgBEEobGoiBCgCDEUEQCAEIAYgCkH\u002F\u002F\u002F\u002F\u002FA0EBENcCIAhBCGoiCUIBEDJyIA0gCSAEIApBAWogB2xBAmpBABCIAXIhCQsCQAJAIAhBHGoiDiACIA0gByAMbEEAEEAgCXIgDkEBEO8BciAIQQhqIgkgDiAEQf\u002F\u002F\u002F\u002F8DQQEQQHIgCSACIAlB\u002F\u002F\u002F\u002F\u002FwNBARDuAXJBIHENAANAAkAgCCgCDEUNACAIKAIURQ0AIAhBCGoiAiACIARB\u002F\u002F\u002F\u002F\u002FwNBARC4AQ0CIANBAWshAwwBCwsDQCAIQQhqIgIgBBDyAUEATgRAIAIgAiAEQf\u002F\u002F\u002F\u002F8DQQEQ7gENAiADQQFqIQMMAQsLIAMEQCAIQRxqIgIgAiADrEH\u002F\u002F\u002F\u002F\u002FA0EBEHoNAQsgACABIApBAnRqIAhBHGogDCALIAUgBiAHEKgEDQAgACABIAhBCGogCiALIAUgBiAHEKgERQ0BCyAIQRxqEBkgCEEIahAZQX8MAgsgCEEcahAZIAhBCGoQGQtBAAshDyAIQTBqJAAgDwsWAEH81QRB\u002FNQENgIAQbTVBEEqNgIAC4gBAQR\u002FAkACfwJAIANBB3EiCEEGRwRAQSAhBwNAIAAgASACIAdqIgkgBSAEEQcAIgZBLHENBCAGQRBxRQ0CIAdBAXQhByAAIAIgCCAJELYDRQ0AC0EQDAILIAAgASACIAUgBBEHABoLQQALIQYgACgCDCIBRQ0AIAAgAiADIAEgBhDcAiEGCyAGC48BAQN\u002FIwBBMGsiAiQAIAAoAgAhAyACQgA3AiggAkKAgICAgICAgIB\u002FNwIgIAIgAzYCHCACQgA3AhQgAkKAgICAgICAgIB\u002FNwIMIAIgAzYCCCAAIAJBHGoiBCACQQhqIgNBACABQQ9qQQNuQQFqQQAQqwMgACAAIAMgAUEAEIgBGiAEEBkgAxAZIAJBMGokAAsPACAAIAEgAkEAQQMQ9AELvQECBH8BfiAAIABBH3UiA3MgA2shAyAAQR92RSEFQQACfyABIAFBAWsiBHFFBEBBICAEZyIGayEEIAIEQEEfIAZrQQAgBRsgA2ogBG4MAgsgBEEAIAFBAk8bIANsDAELIAFBAmshASAFAn4gAgRAIAOtIgcgAUEDdCIBQZT4AWo1AgB+QiCIIAFBkPgBajUCACAHfnxCH4gMAQsgAUECdEGw+gFqNQIAIAOtfkIdiAunagsiAWsgASAAQQBIGwtAAQN\u002FQQEgAEG+\u002FgFqLQAAIgEgAUEBTRshA0EBIQIgACEBA0AgAiADRkUEQCACQQFqIQIgACABbCEBDAELCyABC1ABAn8DQCABLAAAIgQEQCAEIAAsAAAiA0EgciADIANBwQBrQRpJG0cEQEEADwUgAUEBaiEBIABBAWohAAwCCwALCyACBEAgAiAANgIAC0EBC4cDAgN+BH8CQCABKAIIIgZB\u002Fv\u002F\u002F\u002FwdOBEBBASEHIAJBAXENAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8AIQMgBkH+\u002F\u002F\u002F\u002FB0cNASABNAIEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwB8IQMMAQsgBkEATARADAELIAZBP00EQCABKAIQIAEoAgwiCEECdGoiCUEEaygCACECQgAgBkEgTQR+IAJBICAGa3atBSAIQQJPBH4gCUEIazUCAAVCAAsgAq1CIIaEQcAAIAZrrYgLIgN9IAMgASgCBBshAwwBCyACQQFxRQRAIAEoAgRFBEBC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FACEDQQEhBwwCC0KAgICAgICAgIB\u002FIQNBASEHIAZBwABHDQEgASgCECABKAIMIgFBAnRqIgJBBGs1AgBCIIYhBCABQQJPBH4gAkEIazUCAAVCAAsgBIRCgICAgICAgICAf1IhBwwBC0IAIAEoAhAiCCABKAIMIgIgAkEFdCAGayIGEHGtIAggAiAGQSBqEHGtQiCGhCIDfSADIAEoAgQbIQMLIAAgAzcDACAHC60CAgJ\u002FAn4jAEEgayICJAACQCAAKAIIQf\u002F\u002F\u002F\u002F8HRgRAQoCAgICAgID8\u002FwAhBAwBCyAAKAIAIQMgAkIANwIYIAJCgICAgICAgICAfzcCECACIAM2AgwgAkEMaiIDIAAQSRoCfiACKAIUIgBB\u002Ff\u002F\u002F\u002FwdMBEAgA0E1QcgEELoBGiACKAIUIQALQoCAgICAgID4\u002FwAgAEH+\u002F\u002F\u002F\u002FB0YNABpCACAAQYCAgIB4Rg0AGiACKAIcIQMCfiACKAIYQQJGBEAgAykCAAwBCyADNQIAQiCGCyEEIABBgnhMBEAgBEGOeCAAa62IIQRCAAwBCyAEQguIQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8HgyEEIABB\u002FgdqrUI0hgshBSAEIAWEIAI1AhBCP4aEIQQgAkEMahAZCyABIAQ3AwAgAkEgaiQACw0AIAAgASACQQIQsAMLIwACQAJAAkAgAg4CAAECCyAAIAFyDwsgACABcw8LIAAgAXEL4QgBEX8gAigCBCAFcyIFIAEoAgQiBnMhDQJAIAEgAhDyASIIIA1Fcg0AIAEoAghB\u002Ff\u002F\u002F\u002FwdKDQAgACAEQQdxQQJGEIABQQAPCyAFIAYgCEEASCIGGyEFIAEgAiAGGyEKAkACQAJAIAIgASAGGyIIKAIMIgcEQCAKKAIMIgsNAQsgCCgCCCIBQf7\u002F\u002F\u002F8HTgRAIAFB\u002F\u002F\u002F\u002F\u002FwdGBEAgABAqQQAPCyANRSAKKAIIQf7\u002F\u002F\u002F8HR3JFBEAgABAqQQEPCyAAIAUQf0EADwsgACAIEEkaIAAgBTYCBAwBCyAAIAU2AgQgACAIKAIIIgI2AgggAiAKKAIIIgZrIQ4CQCANRQRAQQAhBQwBC0EBIQUgDkEBSg0AIAdBBXRBAWshASALIAdrQQV0IAJqIAZrQR9rIQkgCigCECEPQQAhBQNAQQAhAiABQQV1IgYgB0kEQCAIKAIQIAZBAnRqKAIAIQILIA8gCyABIAlqEHEiBiACRgRAIAFBIGshASAFQSBqIQUMAQsLIAIgBnMiEWciDEEBaiEQAkAgEUECSQRAIAUgEGohBQwBCyAFIAJBf0EfIAxrdEF\u002FcyIFcWciAiAFIAZBf3NxZyIFIAIgBUgbIgJqIQUgAiAQayAMc0EfRw0BCwNAIAUhBkEAIQIgAUEgayIBQQV1IgUgB0kEQCAIKAIQIAVBAnRqKAIAIQILIA8gCyABIAlqEHEhDCACRQRAIAZBIGohBSAMQX9GDQELCyACZyIBIAxBf3NnIgIgASACSBsgBmohBQsgACADIAVqQSFqQQV2IgIgByAOQR9qQSBtIAtqIgEgASAHSBsiASABIAJKGyIGEFANAUEAIAgoAgwiFCAGayIPayICQR91IAJxIRUgBiABayEBQQAgDWshDCAKKAIMIhBBBXQhEUEAIBAgBmsiEkEFdCAOamtBBXUhEyANIQJBACELA0AgAUEATgRAAkBBACEBA0AgASAGRg0BQQAhBSAAKAIQIAFBAnRqIAIgASAPaiIHIAgoAgxJBH8gCCgCECAHQQJ0aigCAAVBAAsgCigCECAKKAIMIAEgEmpBBXQgDmoQcSAMcyIFaiICaiIHNgIAIAIgBUkgAiAHS3IhAiABQQFqIQEMAAsACwUgASASakEFdCAOaiEHAkACfwJAIAEgD2oiCUEATiAJIBRJcUUEQCAHQWFIIhZFBEBBACEFIAcgEUgNAgsgCUEfdSAVcSIBIBMgASATSBsgASAWGyEBQQAhBUEAIQkMAwsgCCgCECAJQQJ0aigCACEFQQAgB0FhSCAHIBFOcg0BGgsgCigCECAQIAcQcQshCSABQQFqIQELIAkgDHMiByAFaiIFIAdJIAUgAiAFaiIFS3IhAiAFIAtyIQsMAQsLIAAoAhAiASABKAIAIAtBAEdyNgIAIA0gAkVyDQAgACAGQQFqEFANASAAKAIQIAZBAnRqQQE2AgAgACAAKAIIQSBqNgIICyAAIAMgBBCbAg8LIAAQKkEgC6QEAQl\u002FIAAgAUcEQAJAAkAgASgCDEUEQAJAAkACQCABKAIIQf7\u002F\u002F\u002F8Haw4CAQACCyAAECoPCyABKAIEDQILIAAgARBJGg8LIAEoAgRFDQELIAAQKg8LIAEoAgAhBAJAAkAgACACQQF0QcMAakEGdiIGEFANACAEKAIAQQAgBkEDdCIHIAQoAgQRAQAiBUUNAEEBIQogByAFQQAgBkEBdCIIIAggASgCDCIFIAUgCEobIgtrQQJ0ECwiBWogC0ECdCIHayABKAIQIAEoAgxBAnRqIAdrIAcQHhogAS0ACEEBcQRAIAUgBSAIQQAQtgRFIQoLIAAoAhAhCSMAQSBrIgckACAHIQgCQAJAIAZBEEkNACAEKAIAQQAgBkEBdEF8cUEEaiAEKAIEEQEAIggNAEF\u002FIQkMAQsgBCAJIAUgBiAIIAUgBkECdGoQtwQhCSAHIAhGDQAgBCgCACAIQQAgBCgCBBEBABoLIAdBIGokACAJRQ0BIAQoAgAgBUEAIAQoAgQRAQAaCyAAECoPCwJAAkAgCgRAIAUgBkEBahDaAiEMIAQoAgAgBUEAIAQoAgQRAQAaIAwNASABKAIQIAEoAgwgC2sQ2gINAQwCCyAEKAIAIAVBACAEKAIEEQEAGgsgACgCECIGIAYoAgBBAXI2AgALIABBADYCBCAAIAEoAghBAWpBAXU2AgggACACIAMQugEaDwtB6e0AQdjsAEHmEEGfFhAAAAs8AQF\u002FA0AgAkEATEUEQCAAIAJBAWsiAkECdCIEaiADQR90IAEgBGooAgAiA0EBdnI2AgAMAQsLIANBAXELmAQCC38CfiMAQRBrIggkAAJAAkAgA0EBRgRAIAIoAgAhACAIQQxqIAIoAgQQuAQhAyAAQf\u002F\u002FA3GtIABBEHatIAg1AgxCEIaEIhEgESADQQF0rSISgCIRIBJ+fUIQhoQhEiADQRB0IQ8gEaciA0GAgARPBH4gEkKAgICAEH0FIBIgESARfkL\u002F\u002F\u002F\u002F\u002FD4N9CyERIA8gA2ohBiARQgBTBEAgESAGQQFrIgatQgGGfEIBfCERCyABIAY2AgAgAiARPgIAIBFCIIinIQYMAQtBfyEGIAAgASADQQF2IgdBAnRqIgogAiADQX5xIg5BAnRqIgwgAyAHayILIAQgCEEIahC3BA0BIAgoAggiCQRAIAwgDCAKIAsQ8QEaCyAAIAQgAiAHQQJ0Ig1qIgAgAyAKIAsQswMNASAEIA1qKAIAIAlqIQlBACEGA0AgBiAHRkUEQCABIAZBAnQiDWogBCANaigCADYCACAGQQFqIQYMAQsLIAlBAXYhBiABIAEgByAJQQFxELYEBH8gACAAIAogCxC0AwVBAAshECAKIAYgCxDbAhogECAMIAlBAU0EfyACIANBAnRqIgQgASAHIAEgBxDwASACIAIgBCAOEPEBBSAGCyADQQFxEJkCayIGQQBODQAgAUEBIAMQmQIaIAIgASADQQIQvQQgBmogAkEBIAMQ2wJqIQYLIAUgBjYCAEEAIQYLIAhBEGokACAGC5gBAQJ\u002FIAAgAUH\u002FAXEgAUEIdkH\u002FAXEgAUEXdkH+A3FBwPoBai8BACIAQQF0IgJBf3NBACABQRB2IAAgAGxrIgEgAksiAhsgAWpBCHRyIgEgACACaiICQQF0IgNuIgAgAGxrIAEgACADbGtBCHRqIgFBH3UgAkEIdCAAaiIAQQFrIgJBAXRBAXJxIAFqNgIAIAIgACABQQBIGws5AQJ\u002FIwBBEGsiASQAIAAEfyABQQxqIAAgAGciAEEecXQQuAQgAEEBdnYFQQALIQIgAUEQaiQAIAILsgQBBn8jAEEwayIEJAACQAJAIAAgAkYgACADRnJFBEAgASACRiABIANGcg0BIAAgAUYNAgJAAkAgAigCDCIFBEAgAygCDCIGDQELQQAhBSAAQQAQgAECQCACKAIIIgBB\u002F\u002F\u002F\u002F\u002FwdHBEAgAygCCCIDQf\u002F\u002F\u002F\u002F8HRw0BCyABECoMAgsgAEH+\u002F\u002F\u002F\u002FB0cgA0GAgICAeEdxRQRAIAEQKkEBIQUMAgsgASACEEkaIAFB\u002F\u002F\u002F\u002F\u002FwNBARC6ASEFDAELIAIoAgQgAygCBHMhByAEIAIoAggiCDYCJCACKAIQIQkgBCAFNgIoIAQgCTYCLCAEQQA2AiAgBCADKAIIIgU2AhAgAygCECEDIAQgBjYCFCAEIAM2AhggBEEANgIMAkAgBEEcaiIDIARBCGoQ8gFBAEgEQCAAQgAQMhogASADEEkaDAELIAAgBEEcaiIDIARBCGoiBkEBIAggBWsiBSAFQQFMG0EBakEBEIgBGiAAQQEQ7wEaIAEgACAGQf\u002F\u002F\u002F\u002F8DQQEQQBogASADIAFB\u002F\u002F\u002F\u002F\u002FwNBARDuARoLAkAgACgCCEH\u002F\u002F\u002F\u002F\u002FB0YNACABKAIIQf\u002F\u002F\u002F\u002F8HRg0AAkAgASgCDEUNAAsgASABKAIEIAIoAgRzNgIEIAAgBzYCBCABQf\u002F\u002F\u002F\u002F8DQQEQugEhBQwBCyAAECogARAqQSAhBQsgBEEwaiQAIAUPC0HU7QBB2OwAQd8NQe\u002FAABAAAAtBw+0AQdjsAEHgDUHvwAAQAAALQaY2QdjsAEHhDUHvwAAQAAALVQEBfiAAIAOtIAStIAEgAkEfdSIAa61+IAAgA3EgAmqtfEIgiKcgAWoiAK1Cf4V+IAKtIAGtQiCGhHwiBUIgiKciASADcSAFp2o2AgAgACABakEBaguyBQEMfwJAAkACQAJAAkACQCADQQJNBEAgACgCAEEAIANBAXQiB0EBciIIQQJ0IAAoAgQRAQAhBiAAKAIAQQAgA0ECdEEIaiAAKAIEEQEAIgVFIAZFcg0CA0AgBCAHRkUEQCAGIARBAnRqQQA2AgAgBEEBaiEEDAELCyAGIAdBAnRqQQE2AgAgACAFIAYgCCACIAMQswMNAiADQQFqIQJBACEEA0AgAiAERkUEQCABIARBAnQiB2ogBSAHaigCADYCACAEQQFqIQQMAQsLIAYgAxDaAg0BIAFBASACEJkCGgwBCyAAKAIAQQAgAyADQQFrQQF2IgdrIgggA2oiBEEBaiIMQQJ0IAAoAgQRAQAiBUUgACgCAEEAIAhBDGxBCGogACgCBBEBACIGRXINASAAIAEgB0ECdCIJaiIKIAIgCWogCBC8BA0CIAhBAXQhDiAFIAIgAyAKIAhBAWoiCRDwASAFIANBAnRqIQsgBSAEQQJ0aiENA0AgDSgCAARAIApBASAJEJkCGiALIAUgBSACIAMQ8QEgCRCZAhoMAQsLIAxBACAMQQBKGyEDQQAhAkEAIQQDQCADIARGRQRAIAUgBEECdGoiC0EAIAsoAgAiC2siDyACazYCACALQQBHIAIgD0tyIQIgBEEBaiEEDAELCyANIA0oAgBBAWo2AgAgBiAFIAdBAnRqIAwgB2sgCiAJEPABIAYgDiAHa0ECdGohAkEAIQQDQCAEIAdGRQRAIAEgBEECdCIDaiACIANqKAIANgIAIARBAWohBAwBCwsgCiAKIAYgDkECdGogCBC0AxoLQQAhBCAAKAIAIAVBACAAKAIEEQEAGgwDCyAFRQ0BCyAAKAIAIAVBACAAKAIEEQEAGgtBfyEEIAZFDQELIAAoAgAgBkEAIAAoAgQRAQAaCyAEC1QCA38CfiADrSEHQQAhAwNAIAIgA0ZFBEAgACADQQJ0IgVqIgYgBjUCACAErSABIAVqNQIAIAd+fHwiCD4CACAIQiCIpyEEIANBAWohAwwBCwsgBAuDBgIDfwd+IwBBIGsiBSQAQoCAgIDgACENAkAgACABIARBImoQXiIBQoCAgIBwg0KAgICA4ABRDQBCgICAgDAhCgJAAkACQAJAIABBHBBcIgZFDQAgBiAEQQF2QQFxNgIAIAYgBkEEaiIHNgIIIAYgBzYCBCABQoCAgIBwWgRAIAGnIAY2AiALIAZBATYCFCAGIABBCBAkIgc2AhBCgICAgDAhC0KAgICAMCEIIAdFDQIgByAHNgIEIAcgBzYCACAGQQQ2AhggAkEATA0DIAMpAwAiCEKAgICAEIRCgICAgHCDQoCAgIAwUQ0DIAAgAUHpAEHDACAEQQFxIgIbIAFBABARIgpCgICAgHCDQoCAgIDgAFENACAAIAoQNQ0BIABB8DlBABASC0KAgICAMCELQoCAgIAwIQgMAQsgACAIQQAQywEiCEKAgICAcINCgICAgOAAUQRADAELAkAgACAIQesAIAhBABARIgtCgICAgHCDQoCAgIDgAFENAAJAA0AgBSAAIAggCyAFQRRqEJEBIgk3AxggCUKAgICAcINCgICAgOAAUQ0CIAUoAhRFBEACQCACBEAgACAKIAFBASAFQRhqEBwiDkKAgICAcINCgICAgOAAUg0BIAAgBSkDGBAMDAULAkACQCAJQv\u002F\u002F\u002F\u002F9vWARAIAAQIkKAgICAMCEJDAELIAAgCUIAEE4iCUKAgICAcINCgICAgOAAUg0BC0KAgICAMCEMDAQLIAAgBSkDGEIBEE4iDEKAgICAcINCgICAgOAAUQ0DIAUgDDcDCCAFIAk3AwAgACAKIAFBAiAFEBwiDkKAgICAcINCgICAgOAAUQ0DIAAgCRAMIAAgDBAMCyAAIA4QDCAAIAUpAxgQDAwBCwsgACAJEAwgACALEAwgACAIEAwgACAKEAwMAwsgACAFKQMYEAwgACAJEAwgACAMEAwLIAhCgICAgHBUDQAgACAIQQEQkAEaCyAAIAsQDCAAIAgQDCAAIAoQDCAAIAEQDAwBCyABIQ0LIAVBIGokACANC0sBAn8gACABRwRAIAAoAhAiAgRAIAAoAgAiAygCACACQQAgAygCBBEBABoLIAAgASkCADcCACAAIAEoAhA2AhAgACABKQIINwIICwv0AQIDfgF\u002FAkAgAykDACIEQoCAgIBwWgRAIAMpAwgiBUL\u002F\u002F\u002F\u002F\u002Fb1YNAQsgABAiQoCAgIDgAA8LQoCAgIDgACEGIABCgICAgCBBLBBHIgFCgICAgHCDQoCAgIDgAFIEfiAAQRgQJCICRQRAIAAgARAMQoCAgIDgAA8LIASnIgMgAygCAEEBajYCACACIAQ3AwAgBaciByAHKAIAQQFqNgIAIAIgBTcDCCAAIAQQNSEAIAJBADoAESACIAA6ABAgAUKAgICAcFoEQCABpyIAIAI2AiAgACAALQAFQe8BcSADLQAFQRBxcjoABQsgAQVCgICAgOAACwsbACAAEBkgAEIANwIQIABCADcCCCAAQgA3AgALCQAgASACEPgFCxMAIABBEGogASACIAAoAggRAQALqAECAX8CfiAAvSIEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoGAgICAgID4\u002FwBaBEAgAb1C\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgYCAgICAgPj\u002FAFQPC0F\u002FIQICQCAAIAFjDQAgAb0iA0L\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVg0AQQEhAiAAIAFkDQBBACECIABEAAAAAAAAAABiDQAgBEIAUwRAIANCP4enQX9zDwsgA0I\u002FiKchAgsgAgvKBQIFfwN+IwBBMGsiAiQAIAIgATcDECACQQA2AgwgAiAANgIIIAIgAykDACIKNwMYAkACQCAKQoCAgIBwgyILQoCAgIAwUgRAQoCAgIDgACEJIAAgChBVDQELQoCAgIDgACEJIAAgARCKASIFQQBIDQACQCAFQQJJDQAgAaciAy8BBkEVayIEQf\u002F\u002FA3FBC08NAiACIARBAnRB\u002FP8PcSIEQZz1AWooAgA2AiBBASADLwEGQcqeAWotAAAiBnQhCCADKAIkIQcgC0KAgICAMFIEQCAAIAVBAnQQJCIERQ0CQQAhAwNAIAMgBUZFBEAgBCADQQJ0aiADNgIAIANBAWohAwwBCwsgAiAINgIoIAIgBzYCJCAEIAVBBEHLACACQQhqENcBAkACQAJAAkAgAigCDA4CAAEDCyAAIAUgBnQiAxAkIgYNAQsgACgCECIAQRBqIAQgACgCBBEAAAwECyAGIAcgAxAeIQZBACEDAkACQAJAAkACQCAIQQFrDggAAQkCCQkJAwkLA0AgAyAFRg0EIAMgB2ogBiAEIANBAnRqKAIAai0AADoAACADQQFqIQMMAAsACwNAIAMgBUYNAyAHIANBAXRqIAYgBCADQQJ0aigCAEEBdGovAQA7AQAgA0EBaiEDDAALAAsDQCADIAVGDQIgByADQQJ0IghqIAYgBCAIaigCAEECdGooAgA2AgAgA0EBaiEDDAALAAsDQCADIAVGDQEgByADQQN0aiAGIAQgA0ECdGooAgBBA3RqKQMANwMAIANBAWohAwwACwALIAAoAhAiA0EQaiAGIAMoAgQRAAALIAAoAhAiAEEQaiAEIAAoAgQRAAAMAQsgByAFIAggBEHI9QFqKAIAIAJBCGoQ1wEgAigCDA0BCyABQiCIp0F1TwRAIAGnIgAgACgCAEEBajYCAAsgASEJCyACQTBqJAAgCQ8LEAEAC+cCAQF+IAAgARCKASICQQBIBEBCgICAgOAADwsCQCACRQ0AAkACQAJAAkACQCABpyIALwEGQcqeAWotAAAOBAABAgMECyAAKAIkIgAgAmohAgNAIAAgAkEBayICTw0FIAAtAAAhAyAAIAItAAA6AAAgAiADOgAAIABBAWohAAwACwALIAAoAiQiACACQQF0aiECA0AgACACQQJrIgJPDQQgAC8BACEDIAAgAi8BADsBACACIAM7AQAgAEECaiEADAALAAsgACgCJCIAIAJBAnRqIQIDQCAAIAJBBGsiAk8NAyAAKAIAIQMgACACKAIANgIAIAIgAzYCACAAQQRqIQAMAAsACyAAKAIkIgAgAkEDdGohAgNAIAAgAkEIayICTw0CIAApAwAhBCAAIAIpAwA3AwAgAiAENwMAIABBCGohAAwACwALEAEACyABQiCIp0F1TwRAIAGnIgAgACgCAEEBajYCAAsgAQtRAgF\u002FAX5CgICAgOAAIQQgACABIAIQayIDBH4gAygCICIDKAIMKAIgLQAEBEAgAkUEQEIADwsgABBfQoCAgIDgAA8LIAM1AhAFQoCAgIDgAAsLNwAgACABIAIQayIARQRAQoCAgIDgAA8LIAAoAiAoAgwiACAAKAIAQQFqNgIAIACtQoCAgIBwhAsMACAAKAIQIAEQ5wML2gEBAn4CQAJAIAJFBEAgAUKAgICAcIMhBSAAQS8QKSEEDAELAn4gAUKAgICAcIMiBUKAgICAMFIgAykDACIEQoCAgIBwg0KAgICAgH9SckUEQCAAQbmMASAAIAAoAhAgBKcQxgIQKUGrjAEQsgEMAQsgACAEECULIgRCgICAgHCDQoCAgIDgAFENAQsgBUKAgICAMFENACAAIAFBBRBeIgFCgICAgHCDQoCAgIDgAFIEQCAAIAEgBBC9ASAAIAFBMCAEpykCBEL\u002F\u002F\u002F\u002F\u002FB4NBABAVGgsgASEECyAEC0YBAX8CQCAAKAIIIAJqIgMgACgCDEoEQCAAIAMgARDEAg0BCwNAIAJBAEwEQEEADwsgAkEBayECIAAgARCHAUUNAAsLQX8LlQECBX8BfiABKQIEIginQf\u002F\u002F\u002F\u002F8HcSIDRQRAIAIPCyAAKAIEQf\u002F\u002F\u002F\u002F8HcSEHAn8gCEKAgICACINQRQRAIAEvARAMAQsgAS0AEAshBSADQQFrIQYgByADayEEAkADQCACIARKDQEgACAFIAIQoAEiA0EASCADIARKcg0BIAAgASADQQFqIgJBASAGELwDDQALIAMPC0F\u002FC6cBAgN\u002FAX4CQAJAIAAgARD2AyIDQQBIDQAgA0UNAUGbHiECIAAgACABQe4AIAFBABARIgVCgICAgHCDIgFCgICAgCBRIAFCgICAgDBRcgR\u002FQZseBSABQoCAgIDgAFENASAAIAUQNCIBQoCAgIBwg0KAgICA4ABRDQFBACECIAGnQecAQQAQoAEhBCAAIAEQDCAEQQBODQJB2ssAC0EAEBILQX8hAgsgAguhAQIDfwF+AkACQCAAKQIEIgRCgICAgAiDUA0AIABBEGohAiAEp0H\u002F\u002F\u002F\u002F\u002FB3EhA0EAIQADQCAAIANODQECQCACIABBAXRqLwEAIgFBgPADcUGAsANHBEAgACEBDAELIAFB\u002F7cDSw0DIABBAWoiASADTg0DIAIgAUEBdGovAQBBgEBrQf\u002F\u002FA3FBgPgDSQ0DCyABQQFqIQAMAAsAC0F\u002FIQALIAALVQEBfwJAAkACQCABQiCIp0EBag4DAAECAQsgAaciAi8BBkEGRw0AIAIpAyAiAUKAgICAcINCgICAgBBRDQELIABBlMAAQQAQEkKAgICA4AAhAQsgAQsQAEHOkQEgAEELEJICQQBHC4kBAgN\u002FAX5BwZEBIQMCQAJAIAEpAgQiBqdB\u002F\u002F\u002F\u002F\u002FwdxIgUgAkwNACABQRBqIQQCfyAGQoCAgIAIg1BFBEAgBCACQQF0ai8BAAwBCyACIARqLQAAC0ElRw0AQcMbIQMgAkECaiAFTg0AIAEgAkEBakECEL0DIgJBAE4NAQsgACADEL4DQX8hAgsgAgtWAQF+IwBBEGsiAiQAIAAgAkEIaiADKQMAEEIEfkKAgICA4AAFIAIpAwhCgICAgICAgPj\u002FAINCgICAgICAgPj\u002FAFKtQoCAgIAQhAshBCACQRBqJAAgBAtWAQF+IwBBEGsiAiQAIAAgAkEIaiADKQMAEEIEfkKAgICA4AAFIAIpAwhC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFatQoCAgIAQhAshBCACQRBqJAAgBAvBAwIDfwR+IwBBMGsiCCQAIANCACADQgBVGyENIAVBAWshCiAGQoCAgIBwgyEOIAVBAEwhBUIAIQMDQAJAIAMgDVEEQCAEIQwMAQtCfyEMIAAgAiADIAhBKGoQVCIJQQBIDQACQCAJRQ0AIA5CgICAgDBSBEAgCCAIKQMoNwMAIAMhCyAIIAI3AxAgCCADQoCAgIAIWgR+QoCAgIDAfiADub0iC0KAgICAwIGA\u002FP8AfSALQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwUgCws3AwggCCAAIAYgB0EDIAgQHCILNwMoIAAgCCkDABAMIAAgCCkDCBAMIAtCgICAgHCDQoCAgIDgAFENAgsCQAJAAkAgBQ0AIAAgCCkDKCILEMwBIglBAEgNASAJRQ0AIAAgCEEgaiALEC9BAEgNASAAIAEgCyAIKQMgIAQgCkKAgICAMEKAgICAMBDUBCIEQgBTDQEgACALEAwMAwsgBEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FD1MNASAAQdXIAEEAEBIgCCkDKCELCyAAIAsQDAwCCyAAIAEgBCAIKQMoEGdBAEgNASAEQgF8IQQLIANCAXwhAwwBCwsgCEEwaiQAIAwLtQUCBH4GfyMAQTBrIggkACAIQgA3AhwgCCAANgIYIAggAykDACIENwMoQoCAgIAwIQYCQAJAAn8gBEKAgICAcINCgICAgDBSBEBBACECQQAgACAEEFUNARogCEEBNgIgC0EAIQICQCAAIAhBEGogACABECAiBhAvBEAMAQtCACEEA0AgCCkDECAFVQRAIAkgCk8EQCAAIAIgCiAKQQF2akEfakFwcSIKQRhsIAhBDGoQpwEiA0UNAyAIKAIMQRhuIApqIQogAyECC0EAIAAgBiAFIAIgCUEYbGoiCxBUIgNBAEgNAxoCQCADRQ0AIAs1AgRCIIZCgICAgDBRBEAgBEIBfCEEDAELIAsgBTcDECALQQA2AgggCUEBaiEJCyAFQgF8IQUMAQsLIAIgCUEYQcoAIAhBGGoQ1wFBACAIKAIcDQEaIAQgBEI\u002Fh0J\u002FhYMhBCAJrSEBQgAhBQNAAkAgASAFUgRAIAIgBaciCkEYbGoiAygCCCILBEAgACALrUKAgICAkH+EEAwLIAMpAwAhByAFIAMpAxBRBEAgACAHEAwMAgsgACAGIAUgBxB7QQBODQEgCkEBagwECyAAKAIQIgNBEGogAiADKAIEEQAAA0AgASAEUQRAIAgpAxAhAQNAIAEgBFcNCCAAIAYgBBCFAiEMIARCAXwhBCAMQQBODQALDAYLIAAgBiABQoCAgIAwEHshDSABQgF8IQEgDUEATg0ACwwECyAEQgF8IQQgBUIBfCEFDAALAAtBAAshAyAJIAMgAyAJSRshCQNAIAMgCUcEQCAAIAIgA0EYbGoiCikDABAMIAooAggiCgRAIAAgCq1CgICAgJB\u002FhBAMCyADQQFqIQMMAQsLIAAoAhAiA0EQaiACIAMoAgQRAAALIAAgBhAMQoCAgIDgACEGCyAIQTBqJAAgBgswACABQoCAgIAQhEKAgICAcINCgICAgDBRBEAgACABEDQPCyAAIAFBOUEAQQAQpwILmQIBAX4CQAJAAkAgAUKAgICAcIMiBEKAgICAMFIEQCAEQoCAgIAgUg0BIABBxMIAEGAhBAwCCyAAQYvpABBgIQQMAQsgACABECAiAUKAgICAcINCgICAgOAAUQ0BIAAgARDMASIDQQBIBEAgACABEAxCgICAgOAADwsCf0GTASADDQAaQZ0BIAAgARA1DQAaQZIBIAGnLwEGIgNBEktBASADdEH4jhBxRXINABogACgCECgCRCADQRhsaigCBAshAiAAIAFB0gEgAUEAEBEhBCAAIAEQDCAEQoCAgIBwgyIBQoCAgICQf1ENACABQoCAgIDgAFENASAAIAQQDCAAIAIQKSEECyAAQeeRASAEQa3wABCyASEBCyABC48EAQJ+IwBBIGsiAiQAIAMpAwAhBQJAAkACQCAEBEAgBUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECIMAwsgBaciBCAEKAIAQQFqNgIADAELIAAgBRAgIgUhASAFQoCAgIBwg0KAgICA4ABRDQILAkAgACADKQMIEDAiA0UNAEKAgICAMCEBAkACQCAFQoCAgIBwVA0AIAAgAiAFpyADEEMiBEEASA0CIARFDQAgABAzIgFCgICAgHCDQoCAgIDgAFENAQJAIAItAABBEHEEQCACKQMQIgZCIIinQXVPBEAgBqciBCAEKAIAQQFqNgIACyAAIAFBwgAgBkGHgAEQFUEASA0DIAIpAxgiBkIgiKdBdU8EQCAGpyIEIAQoAgBBAWo2AgALIAAgAUHDACAGQYeAARAVQQBODQEMAwsgAikDCCIGQiCIp0F1TwRAIAanIgQgBCgCAEEBajYCAAsgACABQcEAIAZBh4ABEBVBAEgNAiAAIAFBPyACNQIAQgGIQgGDQoCAgIAQhEGHgAEQFUEASA0CCyAAIAFBwAAgAjUCAEICiEIBg0KAgICAEIRBh4ABEBVBAEgNASAAIAFBPiACNQIAQgGDQoCAgIAQhEGHgAEQFUEASA0BIAAgAhBGCyAAIAMQECAAIAUQDAwDCyAAIAIQRiAAIAEQDAsgACADEBAgACAFEAwLQoCAgIDgACEBCyACQSBqJAAgAQtVAQF\u002FIwBBIGsiBSQAAkAgACAFIAMQhAVBAEgEQEF\u002FIQQMAQsgACABIAIgBSkDCCAFKQMQIAUpAxggBSgCACAEchBqIQQgACAFEEYLIAVBIGokACAEC4MCAgZ\u002FAX4jAEEQayIEJAACQCABQv\u002F\u002F\u002F\u002F9vWARAIAAQIkF\u002FIQMMAQtBfyEDIAAgAhAgIglCgICAgHCDQoCAgIDgAFENACAAIARBDGogBEEIaiAJp0ETEH0hA0KAgICAMCECIAQoAgghBiAEKAIMIQcCQAJAIANBAEgNAANAIAUgBkYEQEEAIQMMAwsgACACEAwgACAJIAcgBUEDdGoiCCgCBCAJQQAQESICQoCAgIBwg0KAgICA4ABRDQFBfyEDIAVBAWohBSAAIAEgCCgCBCACQYCAARDZBEEATg0ACwwBC0F\u002FIQMLIAAgByAGEFsgACAJEAwgACACEAwLIARBEGokACADC0gBAn8jAEEQayICJABBfyEDAkAgACACQQxqIAEQswENACACKAIMIgNBJWtBXEsNACAAQYSBAUEAEERBfyEDCyACQRBqJAAgAwt1AQF\u002FAkAgAUKAgICAcINCgICAgOB+UQRADAELAkAgAUKAgICAcFQNACABpyICLwEGQSFHDQAgAikDICIBQoCAgIBwg0KAgICA4H5SDQAMAQsgAEGTGkEAEBJCgICAgOAADwsgAaciACAAKAIAQQFqNgIAIAELvwEBAX8gASADai0AAEE8RgRAIAAgBEH\u002FAXEQDiAAIAVB\u002F\u002F8DcRAmIANBAWohAwsgASACKAIEIgBBBWsiAmoiBi0AAEG2AUYEQCAAIAFqLQAAQRZGBEAgBkEROgAAIABBBGshAgsgAEECaiEAIAEgAmoiBiAFOwABIAYgBEEBajoAACACQQNqIQIDQCAAIAJMRQRAIAEgAmpBswE6AAAgAkEBaiECDAELCyADDwtBvMMAQajsAEGz6gFBiM0AEAAAC84CAgd\u002FAX4jAEEwayICJAACQAJAIAMpAwAiAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCABQiCIp0F1SQ0BIAGnIgAgACgCAEEBajYCAAwBC0KAgICA4AAhDCAAIAEQigQiA0EASA0BIANFBEAgAEHt0ABBABASDAILIAAgAkEsaiACQShqIAGnIgZBAxB9DQEgAigCLCEHIAIoAighCEEAIQMCQANAIAMgCEcEQCAHIANBA3RqKAIEIQlBgIIBIQUCQCAERQ0AIAAgAkEIaiIKIAYgCRBDIgtBAEgNAyALRQ0AIAIoAgghBSAAIAoQRkGAhgFBgIIBIAVBAnEbIQULIAAgASAJQoCAgIAwQoCAgIAwQoCAgIAwIAUQakEASA0CIANBAWohAwwBCwsgACAHIAgQWyAGIAYoAgBBAWo2AgAMAQsgACAHIAgQWwwBCyABIQwLIAJBMGokACAMC0IBAX8CQCAAIAFqIgAtAAFBPUcNAEEBIQICQAJAIAAtAAAiAEEWaw4EAgEBAgALIABBswFGDQELIABBHUYhAgsgAguzAQEBf0F\u002FIQMCQCABKAJMRQ0AAkACQAJAAkAgAkHyAGsOAwIBAAMLIAEoArQBIgNBAE4NAyABIAAgAUH0ABBMIgA2ArQBIAAPCyABKAKwASIDQQBODQIgASAAIAFB8wAQTCIANgKwASAADwsgASgCrAEiA0EATg0BIAEgACABQfIAEEwiADYCrAEgAA8LIAJBCEcNACABKAKoASIDQQBODQAgASAAIAEQ0wMiAzYCqAELIAMLSwEBfyAAIAEoAgA2AkAgAEEpEA0gACAAKAJAKAIENgJAIABCgICAgCAQxwMhAiABKAIAIAI2AgggAEEDEA0gACACEDggAEHQABANC8gBAgN\u002FAX4jAEEQayIDJAAgACABECkiBkKAgICAcINCgICAgOAAUgRAAkACQCAAIANBDGogBhDfASIBRQ0AIAAgAhA9IgQgAygCDGpBAWoQJCIFRQ0AIAUgASADKAIMEB4iBSADKAIMaiACIAQQHhogBSADKAIMaiAEakEAOgAAIAAgBSADKAIMIARqEJ0DIQQgACgCECICQRBqIAUgAigCBBEAACAAIAEQMQwBCyAAIAEQMUEAIQQLIAAgBhAMCyADQRBqJAAgBAunAQEFfyMAQRBrIgMkACABpyIEKAIQIgJBMGohBSACIAIoAhhBf3NBAnRBvH5yaigCACECAkACQANAIAJFDQEgBSACQQN0aiIGQQhrIQIgBkEEaygCAEEwRwRAIAIoAgBB\u002F\u002F\u002F\u002FH3EhAgwBCwsgAyACNgIMIAJFDQAgACAEIANBDGogAigCAEEadkE8cRCNAw0BCyAEIAQtAAVB\u002FgFxOgAFCyADQRBqJAALsAUCCX8DfiMAQTBrIgQkACAAKAIAIQVCgICAgDAhDkKAgICAMCENAkAgAQRAQX8hAyAFEDsiDUKAgICAcINCgICAgOAAUQ0BIAAgDUEAEMABIQkgBSANEAwgCQ0BIAUQOyIOQoCAgIBwg0KAgICA4ABRDQEgBSANQfEAIA5BgIABEBVBAEgNAQsgAEEQaiEGQQAhAwJAAkADQCAGKAIAQYJ\u002FRgRAIAAoAhghCiAEIAYpAxg3AyggBCAGKQMQNwMgIAQgBikDCDcDGCAEIAYpAwA3AxAgCkEBaiEHIAApAyAhDAJAAkACQCABBEAgDEIgiKdBdU8EQCAMpyIIIAgoAgBBAWo2AgALIAUgDiADIAxBhIABEJMBQQBIDQIgBSANIAMCfiAAQeAAQQAgByAEQRBqIARBDGoQ\u002FwJFBEAgBCkDIAwBCyAEQoCAgIAwNwMgQoCAgIAwC0GEgAEQkwFBAEgNAiAAKAIoQeAARw0BIAUgDhDjBCAFIA0Q4wQgAiADQQFqNgIADAcLIAUgDBAMIABCgICAgDA3AyAgAEHgAEEBIAcgBEEQaiAEQQxqEP8CDQECQCAEKQMgIgynKAIEQf\u002F\u002F\u002F\u002F8HcUEBIAMbBEAgACAMQQEQwAEhCyAAKAIAIAwQDCALDQMgA0UEQCAAKAIoQeAARg0JIABBwgAQDSAAQd0AEBcLIANBAWohAwwBCyAAKAIAIAwQDAsgACgCKEHgAEYNBQsgABAPDQAgABCLAQ0AIAYoAgBB\u002FQBHBEAgAEHsPUEAEBMMAQsgACAGEIECIABBADYCMCAAIAAoAhQ2AgQgACAAKAI4EM0DRQ0BC0F\u002FIQMMBQsgA0EBaiEDDAELCyAAQYJ\u002FECghAwwCCyAAQSQQDSAAIANBAWtB\u002F\u002F8DcRAUCyAAEA8hAwsgBEEwaiQAIAMLbwEBfyAAQSYQDSAAQQAQFCAAQQEQDSAAQQAQOCAAIAAQLSICEBogAEGCARANIAAgAUECakH\u002FAXEQWCAAQesAQX8QGCEBIABB0QAQDSAAQZABEA0gAEHsACACEBgaIAAgARAaIABBDhANIABBDhANC50BAQd\u002FIAAoAkAiBCgCiAEiA0EAIANBAEobIQMCQANAAkAgAiADRgRAQQAhAyAEKAJ8IgJBACACQQBKGyEFQQAhAgNAIAIgBUYNBCACQQR0IQcgAkEBaiECIAcgBCgCdGooAgAgAUcNAAsMAQsgAkEEdCEIIAJBAWohAiAIIAQoAoABaigCACABRw0BCwsgAEG2E0EAEBNBfyEDCyADC4oFAgh\u002FAX4jAEFAaiIBJAAgACgCOCECQX8hCAJAIAAoAgAgAUEoakEgED4NAAJAIAAoAgAgAUEQakEBED4NACACQQFqIQNBACECAkADQCADIgUgACgCPE8NASACIQZBASECIANBAWohAwJAAkACQAJAAkACQAJAAkAgBS0AACIEQdsAaw4DBgMBAAsgBEEvRwRAIARBCmsOBAcCAgcCC0EvIQQgBg0FA0AgASADQQFqNgIMAkAgAywAACICQQBOBEAgAkH\u002FAXEhAgwBCyADQQYgAUEMahBRIgJBgIDEAE8NBgsgAhDJAQRAIAFBEGogAhCxAQ0LIAEoAgwhAwwBCwsgAEGEfzYCECAAIAFBKGoQNzcDICABQRBqEDchCSAAIAM2AjggACAJNwMoQQAhCAwKC0HdACEEQQAhAgwECyAEwEEATg0BIAVBBiABQQhqEFEiBEGAgMQATw0CIARB\u002Fv\u002F\u002FAHFBqMAARg0EIAEoAgghAwwBCyABQShqQdwAEDwNBiAFQQJqIQcCQCAFLQABIgQEQCAEQQprDgQFAQEFAQtBACEEIAYhAiAHIgMgACgCPE8NBgwDCyAEwEEATgRAIAYhAiAHIQMMAwtBB0EGQQAgA0EGIAFBDGoQUSIEQf7\u002F\u002FwBxQajAAEYbIARB\u002F\u002F\u002FDAEsiAhsiA0UEQCAHIAEoAgwgAhshAwwBCyADQQZrDgIDAQcLIAYhAgwBCyAAQbLfAEEAEBMMBAsgAUEoaiAEELEBRQ0BDAMLCyAAQa02QQAQEwwBCyAAQdI2QQAQEwsgASgCKCgCECIAQRBqIAEoAiwgACgCBBEAACABKAIQKAIQIgBBEGogASgCFCAAKAIEEQAACyABQUBrJAAgCAszAQF\u002FA0ACQCABQQBOBH8gASACRw0BQQEFQQALDwsgACgCzAEgAUEDdGooAgAhAQwACwALQwECfyAAKAKIASECQX8hAwJAA0AgAkEATA0BIAAoAoABIAJBAWsiAkEEdGooAgAgAUcNAAsgAkGAgICAAnIhAwsgAwuDAwEGfyABKAI4IQMCQAJAAkAgAS0AbkEBcQRAIANFBEBB7TAhAyABKAJADQMLQYDdACEDIAJBO0YgAkHOAEZyDQJBACECIAEoAogBIgNBACADQQBKGyEEA0AgAiAERg0CQdvcACEDIAEoAoABIAJBBHRqKAIAIgZBO0YgBkHOAEZyDQMgAkEBaiECDAALAAsgA0UNACABLwFsIgJBggxGDQAgAkEIdkEDaw4EAAICAAILQQAhBCABKAKIASICQQAgAkEAShshCEEAIQMDQCADIAhGDQJBACECAkAgASgCgAEiBSADQQR0aigCACIGRQ0AA0ACQCACIANGBEBBACECIAEoAnwiBUEAIAVBAEobIQUDQCACIAVGDQQgBiABKAJ0IAJBBHRqIgcoAgBGBEAgBygCBEUNAwsgAkEBaiECDAALAAsgAkEEdCEHIAJBAWohAiAFIAdqKAIAIAZHDQELC0GBEyEDDAILIANBAWohAwwACwALIAAgA0EAEBNBfyEECyAEC2EBAX8gAEG4ARANIABB9wAQFyAAIAAoAkAvAbwBEBQgAEEREA0gAEHqAEF\u002FEBghASAAQbgBEA0gAEEIEBcgAEEAEBQgAEEbEA0gAEEkEA0gAEEAEBQgACABEBogAEEOEA0LUQECf0F\u002FIQJBASEDA0ACQCAAIAEQrQENACADRQRAIAAoAkBBfzYCmAILIAAoAhBBLEcEQEEAIQIMAQsgABAPDQAgAEEOEA1BACEDDAELCyACC5sdAgR+BX8CfwJAIABBEGoiB0H4ASAAKAIAEQMAIgVFDQAgBUEFakEAQfMBECwaIAVBBToABCAFQQE2AgAgACgCUCIIIAVBCGoiCTYCBCAFIABB0ABqNgIMIAUgCDYCCCAAIAk2AlAgBSAHIAAoAkBBA3QgACgCABEDACIINgIoIAhFBEAgByAFIAAoAgQRAAAMAQsgBSAANgIQIAAoAkgiByAFQRRqIgk2AgQgBSAAQcgAajYCGCAFIAc2AhQgACAJNgJIIAUgAEHkAWo2AtgBIAAoAkAiAEEAIABBAEobIQADQCAAIAZHBEAgCCAGQQN0akKAgICAIDcDACAGQQFqIQYMAQsLIAVCgICAgCA3A1AgBUKAgICAIDcDSCAFQoCAgIAgNwNAIAUgBUHgAWoiADYC5AEgBSAANgLgASAFQoCAgIAgEEEhASAFKAIoIAE3AwhBACEGIAUgBUEQQeyWAUEAQQBBACABEPwBIgE3AzAgAUIgiKdBdU8EQCABpyIAIAAoAgBBAWo2AgALIAUoAiggATcDaCAFEDMhASAFKAIoIAE3AxggBSABQZDKAUEDEB8gBUHYAGohBwNAIAUoAighACAGQQhHBEAgBkECdEHAnQFqKAIAIQggBSAFIAApAxgQQSIBQTcgBSAIEPsEQQMQFRogBSABQTMgBUEvEClBAxAVGiAHIAZBA3RqIAE3AwAgBkEBaiEGDAELCyAFIAApAwhBAhBHIQEgBSgCKCABNwMQIAUgBSABp0EAIAFC\u002F\u002F\u002F\u002F\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\u002FASAAIARB\u002F\u002FEAIANBABC+ARogBkEBaiEGDAELCyAAIAEQDCAAIAIQDCAAEDMhASAAKAIoIAE3A4ACIAAgAUHg8QFBGBAfIABBuBFBJyAAKAIoKQOAAhCyAxogB0FAayQAAkAgACgCECIAKAJAQS5PBEAgACgCRCgCuAgNAQsgAEHQnAFBLUEJEIEEGiAAKAJEIgBBKDYC8AkgAEEpNgLACSAAQSk2AqgJIABBKjYCkAkgAEErNgL4CCAAQSs2AuAICyAFEDMhASAFKAIoIAE3A+gCIAUgAUGwvwFBBBAfIAVBLEHO0QBBAUECQQAQggEiAUIgiKdBdU8EQCABpyIAIAAoAgBBAWo2AgALIAUgATcDUCAFIAFB8L8BQQgQHyAFIAFBztEAIAUoAigpA+gCEL8BIAUgBSkDMBBBIQEgBSgCKCABNwOAAyAFQRVBzzpBAUEFQQIgBSkDOBD8ASEBIAUgBSgCKCkDgANB8MABQQEQHyAFIAEgBSgCKCkDgANBAEEBEPQBIAUgARAMIAUgBRAzIgE3A6ABIAUgAUGAwQFBARAfIAUgBSkDoAEQQSEBIAUoAiggATcDmAMgBSABQZDBAUEDEB8gBSAFKQOgARBBIQEgBSgCKCABNwOoAyAFIAFBwMEBQQQQHyAFIAUpAzAQQSEBIAUoAiggATcDoAMgBUEVQaM6QQFBBUEDIAUpAzgQ\u002FAEhASAFIAUoAigpA6ADQYDCAUEBEB8gBSAFKAIoIgApA6ADIAApA6gDQQFBARD0ASAFIAEgBSgCKCkDoANBAEEBEPQBIAUgARAMIAUoAhAiAEEtNgKwAiAAQS42AqwCIABBLzYCqAIgAEEwNgKkAiAAQTE2AqACIAUQMyEBIAUoAiggATcDiAIgBSABQcDJAUEDEB8gBSAFQZsbQTJBASAFKAIoKQOIAhCsAUHwyQFBAhAfCyAFC5YCAQR\u002FIAAoAhAhBiABKAIAIgUtABAEfyAGIAUQgwQgBSgCFCADakGBgNzxeWwgBGpBgYDc8XlsBUEACyEHAn8gBSgCICIIIAUoAhxOBEAgACABIAIgCEEBahDWBQRAQX8gBS0AEEUNAhogBiAFEIwDQX8PCyABKAIAIQULIAUtABAEQCAFIAc2AhQgBiAFEIwDCyAFIAUoAiAiAUEBajYCICAFIAFBA3RqIgEgACADEBYiADYCNCABIAEoAjBB\u002F\u002F\u002F\u002FH3EgBEEadHI2AjAgBSAFLQARIABBH3ZyOgARIAEgASgCMEGAgIBgcSAFIAAgBSgCGHFBf3NBAnRqIgAoAgBB\u002F\u002F\u002F\u002FH3FyNgIwIAAgBSgCIDYCAEEACwvoAQEDfwJAAkAgACgCICICQSVJDQAgAkEtTQRAIAAoAkAiAS0AbkEBcQ0BIAJBLUcNAiABLwFsIgNBAXENASADQYD+A3FBgAZHDQIgASgCZA0CIAEoAgQiAUUNAiABLQBsQQFxDQEMAgsgAkEuRw0BIAAoAkQNACAAKAJAIgEvAWwiA0ECcQ0AAkAgA0EIdkEDaw4FAAICAgECCyABKAJkDQEgASgCBCIBRQ0BIAEvAWwiAUECcQ0AIAFBgP4DcUGADkcNAQsgAAJ\u002FIAAoAiQEQCAAQQE2AihBg38MAQsgAkHWAGsLNgIQCwvkAgEFfyMAQaABayIFJAAgASgCACEHIAVBgAE2AgggBSAFQRBqNgIMIAQEfyAFQSM6ABBBAQVBAAshBAJ\u002FAkADQCAFIAc2ApwBAn8gA0H\u002FAEwEQCAFKAIMIgYgBGogAzoAACAEQQFqDAELIAUoAgwiBiAEaiADEN0CIARqCyEEIAUgBSgCnAEiAyIIQQFqNgKcAQJAIAMtAAAiA0HcAEYEQEHcACEDIAgtAAFB9QBHDQEgBUGcAWpBARCXAiEDIAJBATYCAAwBCyADwEEATg0AIAdBBiAFQZwBahBRIQMLIAMQyQFFDQEgBSgCnAEhByAEIAUoAghBBmtJDQAgACgCACAFQQxqIAVBCGogBUEQahCvBUUNAAsgBSgCDCEGQQAMAQsgACgCACAGIAQQnQMLIQkgBUEQaiAGRwRAIAAoAgAoAhAiAEEQaiAGIAAoAgQRAAALIAEgBzYCACAFQaABaiQAIAkLRQAgACgCzAEgAUEDdGpBBGohAQNAIAEoAgAiAUEASEUEQCAAKAJ0IAFBBHRqIgEgASgCDEEEcjYCDCABQQhqIQEMAQsLC6kDAQx\u002FAkAgACgCECIEKALcAUEBdEECaiAEKALYAUwNACAEQRBqIglBBCAEKALUASIDQQFqIgh0IgUgBCgCABEDACIHRQ0AQQEgCHQhCiAHQQAgBRAsIQcgBCgC2AEiBUEAIAVBAEobIQtBHyADayEMA0AgBCgC4AEhAyAGIAtGRQRAIAMgBkECdGooAgAhAwNAIAMEQCADKAIoIQ4gAyAHIAMoAhQgDHZBAnRqIg0oAgA2AiggDSADNgIAIA4hAwwBCwsgBkEBaiEGDAELCyAJIAMgBCgCBBEAACAEIAc2AuABIAQgCjYC2AEgBCAINgLUAQsgACACQQN0QUBrECQiA0UEQEEADwsgA0ECOgAUIANBATYCECAEKAJQIgUgA0EYaiIGNgIEIAMgBEHQAGo2AhwgAyAFNgIYIAQgBjYCUCABBEAgASABKAIAQQFqNgIACyADQgA3AgAgAyABNgI8IANCADcCMCADIAI2AiwgA0EDNgIoIANBATsBICADQgA3AgggAyABQYGA3PF5bEH\u002F\u002F6OOBms2AiQgACgCECADQRBqIgAQjAMgAAsNACAAIAFB6\u002F8AEOIEC+8CAQZ\u002FQQEhCSADIQcCQANAIAcoAswBIAVBA3RqQQRqIQYCQAJAA0AgBigCACIFQQBIDQEgBygCdCIIIAVBBHQiCmoiC0EIaiEGIAsoAgAgBEcNAAsgCCAKaigCDEEEdkEPcSEIQQEhBiAJBEBBACEGDAILIAAgAyAHQQAgBSAEQQFBAUEAEJ8BIgVBAE4NAQwDCyAHKAIEIgZFBEACQCAHKAIgRQ0AQQAhBSAHKALAAiIGQQAgBkEAShshBgNAIAUgBkYNASAEIAcoAsgCIAVBA3RqIggoAgRGBEAgCC0AACIJQQR2IQggAyAHRgRAQQEhBgwFC0EBIQYgACADIAdBACAJQQF2QQFxIAUgBCAJQQJ2QQFxIAlBA3ZBAXEgCBD7ASIFQQBIDQYMBAUgBUEBaiEFDAELAAsACyAAIARBn48BEIEDDAMLIAcoAgwhBUEAIQkgBiEHDAELCyABIAY2AgAgAiAINgIAIAUPC0F\u002FC4gYAQh\u002FIwBBEGsiDCQAIAxBfzYCDCACQQhGIgkgAkHyAGtBA0kiC3IhDSABKALMASADQQN0akEEaiEDAkACQAJAAkACQAJAA0AgAygCACIDQQBOBEAgAiABKAJ0IANBBHRqIgooAgAiDkYEQCAEQX1xQbkBRwRAIAMhCQwECyADIQkgCi0ADEEBcUUNAyAFQTAQDiAFIAAgAhAWEBsgBUEAEA4MBwsgCSAOQdUARyALcnJFBEAgBUHYABAOIAUgA0H\u002F\u002FwNxECYgACABIAIgBCAFIAxBDGpBARDYAQsgCkEIaiEDDAELC0F\u002FIQkgA0F+RwRAIAEgAhD3ASEJCyANRSAJQQBOckUEQCAAIAEgAhDgBCEJCwJAIAJBzgBHIAlBAE5yRQRAIAEoAkhFDQEgACABEPACIQkLIAlBAE4NAQsCQCABKAIsBEAgASgCcCACRg0BCyADQX5HDQMMBAsgACABIAIQ7wIiCUEASA0BCwJAAkACQAJAIARBtwFrDggCAgADAAECAgcLAkAgCUGAgICAAnEiAw0AIAEoAnQgCUEEdGotAAxBAXFFDQAgBUEwEA4gBSAAIAIQFhAbIAVBABAODAcLAkAgBEG5AWsOAwIDAAcLAkAgAw0AIAEoAnQgCUEEdGooAgxB8AFxQcAARw0AIAVBCxAOIAVB2AAQDiAFIAlB\u002F\u002F8DcRAmIAVBzAAQDiAFIAAgAhAWIgIQGyAFQQQQDiAFIAAgAhAWEBsMBwsCQCAMKAIMQX9HDQAgBiAHKAIEEN8ERQ0AIAUgBiAHIAgCfyADBEAgCUGAgICAAmshCUHbAAwBC0HiAEHYACABKAJ0IAlBBHRqLQAMQQJxGwsgCRDdBCEIDAcLIAMEQCAFQfsAEA4gBSAAIAIQFhAbIAUgCUH\u002F\u002FwNxECYMBwsgBUH6ABAOIAUgACACEBYQGyAFIAlB\u002F\u002F8DcRAmDAYLIAVBBhAOCyAJQYCAgIACcQRAIAVB3ABB3ABB2wAgBEG9AUYbIARBuQFGGxAOIAUgCUH\u002F\u002FwNxECYMBQsgBQJ\u002FAkACQCAEQbkBaw4FAAEBAQABC0HZACABKAJ0IAlBBHRqLQAMQQJxRQ0BGkHjAEHkAEHZACACQQhGGyAEQb0BRxsMAQtB2AAgASgCdCAJQQR0ai0ADEECcUUNABpB5QBB4gAgBEG+AUYbCxAOIAUgCUH\u002F\u002FwNxECYMBAsgBUEJEA4MAwsgA0F+Rg0BCyABKAKQAUEASCACQfIAa0EDSXIgAkEIRnINACAFQdgAEA4gBSABLwGQARAmIAAgASACIAQgBSAMQQxqQQAQ2AELIAEoApQBQQBIIAJB8gBrQQNJciACQQhGckUEQCAFQdgAEA4gBSABLwGUARAmIAAgASACIAQgBSAMQQxqQQAQ2AELIAJB8gBrQQNJIQsgAkEIRiEOIAJBzgBHIQ8gASEKAkACQAJAAkADQCAKIgMoAgQiCkUEQCADIQoMAgsgCigCzAEgAygCDEEDdGpBBGohAwNAIAMoAgAiA0EATgRAIAIgCigCdCADQQR0aiINKAIAIhBGBEAgBEF9cUG5AUcEQCADIQkMBgsgAyEJIA0tAAxBAXFFDQUgBUEwEA4gBSAAIAIQFhAbIAVBABAODAgFAkAgDiAQQdUARyALcnINACANIA0oAgxBBHI2AgwgACABIApBACADQdUAQQBBAEEAEJ8BIgNBAEgNACAFQd4AEA4gBSADQf\u002F\u002FA3EQJiAAIAEgAiAEIAUgDEEMakEBENgBCyANQQhqIQMMAgsACwsgCUEATg0CIANBfkYiA0UEQCAKIAIQ9wEiCUEATg0DCyALRSACQQhHcUUEQCAAIAogAhDgBCIJQQBODQMLAkACQCAPDQAgCigCSEUNACAAIAoQ8AIhCQwBCwJAIAooAixFDQAgCigCcCACRw0AIAAgCiACEO8CIQkMAQsCQCADDQAgDiAKKAKQASIDQQBIIAtycg0AIAooAnQgA0EEdGoiAyADKAIMQQRyNgIMIAAgASAKQQAgCigCkAEgAygCAEEAQQBBABCfASEDIAVB3gAQDiAFIANB\u002F\u002F8DcRAmIAAgASACIAQgBSAMQQxqQQAQ2AELIA4gCigClAEiA0EASCALcnJFBEAgCigCdCADQQR0aiIDIAMoAgxBBHI2AgwgACABIApBACAKKAKUASADKAIAQQBBAEEAEJ8BIQMgBUHeABAOIAUgA0H\u002F\u002FwNxECYgACABIAIgBCAFIAxBDGpBABDYAQsgCigCIEUNAQwCCwsgCUEATg0BCyAKKAIgRQ0CIAJB8gBrQQNJIQ4gAkEIRiEQQQAhAwNAAkACQCAKKALAAiADSgRAIAIgCigCyAIgA0EDdGoiDygCBCINRgRAIAEgCkYNBiAAIAEgCkEAIA8tAAAiCUEBdkEBcSADIAIgCUECdkEBcSAJQQN2QQFxIAlBBHYQ+wEhAwwGCyANQdMAa0ECTwRAIA1B1QBHIA5yDQMMAgsgDkUNAQwCCyAJQQBIDQUMAwsgEA0AIAMhCyABIApHBEAgACABIApBACAPLQAAQQF2QQFxIAMgDUEAQQBBABD7ASELCyAFQd4AEA4gBSALQf\u002F\u002FA3EQJiAAIAEgAiAEIAUgDEEMaiANQdUARhDYAQsgA0EBaiEDDAALAAsCfyAJQYCAgIACcQRAIAooAoABIAlBgICAgAJrIgNBBHRqIgkgCSgCDEEEcjYCDCAAIAEgCkEBIAMgAkEAQQBBABCfAQwBCyAJQQR0IgMgCigCdGoiCyALKAIMQQRyNgIMIAAgASAKQQAgCSACIAooAnQgA2ooAgwiA0EBcSADQQF2QQFxIANBBHZBD3EQnwELIgNBAEgNAQsCQCAFAn8CQAJAAkACQAJAIARBtwFrDgcBAQAGAAMBCAsgASgCyAIgA0EDdGotAAAiCUEEcQRAIAVBMBAOIAUgACACEBYQGyAFQQAQDgwIC0EAIQoCQCAEQbkBaw4DAgYACAsgCUHwAXFBwABGBEAgBUELEA4gBUHeABAOIAUgA0H\u002F\u002FwNxECYgBUHMABAOIAUgACACEBYiAhAbIAVBBBAOIAUgACACEBYQGwwICwJAIAwoAgxBf0cNACAGIAcoAgQQ3wRFDQAgBSAGIAcgCEHmAEHeACAJQQhxGyADEN0EIQgMCAsgBUH8ABAOIAUgACACEBYQGyAFIANB\u002F\u002F8DcRAmDAcLIARBvQFGIQogBEG5AWsOBQACAgIAAgtB3wAgASgCyAIgA0EDdGotAABBCHFFDQIaQegAQd8AIAJBCEYbQecAIAobDAILIAVBBhAOC0HmAEHeACABKALIAiADQQN0ai0AAEEIcRsLEA4gBSADQf\u002F\u002FA3EQJgwCCyAFQQkQDgwBCwJAAkACQAJAAkAgBEG3AWsOBwICAgQAAQMFCwJAIAwoAgxBf0cNACAGIAcoAgRqIgMtAAFBPUcNAAJAAkAgAy0AACIDQRlrDgUBAgICAQALIANBswFGDQAgA0EWRw0BCyABLQBuQQFxIgkEQCAFQTYQDiAFIAAgAhAWEBsLIAYgCGotAABBPEYEQCAFQTgQDiAFIAAgAhAWEBsgCEEBaiEICyAGIAcoAgQiB0EFayIDaiILLQAAQbYBRw0GIAYgB2otAAAhBAJAAkAgCQRAQTshCgJAAkACQAJAIARBGWsOBQIBAQEDAAtBFSEJIARBFkYNBCAEQbMBRg0FCxABAAtBGCEJDAILQRshCQwBC0E5IQpBESEJIARBFkcNAQsgCyAJOgAAIAdBBGshAwsgB0ECaiEEIAMgBmoiByAKOgAAIAcgACACEBY2AAEgA0EFaiEDA0AgAyAETg0GIAMgBmpBswE6AAAgA0EBaiEDDAALAAsgBUH9ABAOIAUgACACEBYQGwwECyAFQQYQDiAFQTgQDiAFIAAgAhAWEBsMAwsgBSAEQYABc0H\u002FAXEQDiAFIAAgAhAWEBsMAgsgBUE6EA4gBSAAIAIQFhAbDAELIAVBmgEQDiAFIAAgAhAWEBsLIAwoAgwiAEEATgRAIAVBtgEQDiAFIAAQGyABKAKkAiAAQRRsaiAFKAIENgIICyAMQRBqJAAgCA8LQbzDAEGo7ABB5OoBQcrMABAAAAshACAAQpADgVCtQu4CQu0CIABCA4NQGyAAQuQAgVCtfXwLWQEBfiAAQu0CfiAAQrEPfUICh3wgAELtDn0iASABQuQAgSIBfSABQj+HQpx\u002Fg3xCnH9\u002FfCAAQsEMfSIAIABCkAOBIgB9IABCP4dC8HyDfEKQA398QsrxK30LiwIDBX8BfAF+IwBB4ABrIgUkAEKAgICA4AAhCwJAIAAgASAFQRBqIARBD3EiCCAEQQh2QQ9xIgdFENUDIgZBAEgNACACIARBBHZBD3EgB2siBCACIARIGyIEQQAgBEEAShshCUEAIQQDQCAEIAlHBEAgACAFQQhqIAMgBEEDdGopAwAQQg0CIAVBEGogBCAHakEDdGogBSsDCCIKnTkDACAGQQAgCr1CgICAgICAgPj\u002FAINCgICAgICAgPj\u002FAFIbIQYgBEEBaiEEDAELC0QAAAAAAAD4fyEKIAAgASAGRSACQQBMcgR8RAAAAAAAAPh\u002FBSAFQRBqIAgQ6wMLEPkEIQsLIAVB4ABqJAAgCwvHAQEBfwJAAkAgAUKAgICAcFQNACABpyIDLwEGQQpHDQAgACADKQMgEAwgAwJ+IAK9IgECfyACmUQAAAAAAADgQWMEQCACqgwBC0GAgICAeAsiALe9UQRAIACtDAELQoCAgIDAfiABQoCAgIDAgYD8\u002FwB9IAFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\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\u002FAHxC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINQGxDyAiIARQRAQoCAgIAwDwsgACkDKCIBQiCIp0F1TwRAIAGnIgAgACgCAEEBajYCAAsgAQu7BQIDfgd\u002FIwBBEGsiCyQAQoCAgIDgACEHAkAgACABIARBImoQWiICRQ0AIAIoAgBFIAMpAwAiBUIAIAVCIIinQQdrQW5PGyAFIAVCgICAgMCBgPz\u002FAHxC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINQGyIFQv\u002F\u002F\u002F\u002F9vVnJFBEAgABAiDAELQoCAgIAwIQYgBEEBcUUEQCADKQMIIQYLAkAgACACIAUQ8gIiAwRAIAAgAykDKBAMDAELIABBMBAkIgNFDQEgAyACNgIIIANCATcDAAJAIAIoAgAEQCADIAWnIgQoAhg2AgwgBCADNgIYDAELIAVCIIinQXVJDQAgBaciBCAEKAIAQQFqNgIACyADIAU3AyAgAigCECIJIAIoAhQiBEEBayAFENkDcUEDdGoiCCgCACIKIANBGGoiDDYCBCADIAg2AhwgAyAKNgIYIAggDDYCACACKAIEIgggA0EQaiIKNgIEIAMgAkEEaiIMNgIUIAMgCDYCECACIAo2AgQgAiACKAIMQQFqIgg2AgwgCCACKAIYSQ0AIAAgCUEEIARBAXQgBEEBRhsiAEEDdCALQQxqEKcBIghFDQAgCygCDEEDdiAAaiEEQQAhAANAIAAgBEZFBEAgCCAAQQN0aiIJIAk2AgQgCSAJNgIAIABBAWohAAwBCwsgBEEBayEKIAJBCGohAANAIAwgACgCACIARwRAIABBDGsoAgBFBEAgCCAAKQMQENkDIApxQQN0aiIJKAIAIg0gAEEIaiIONgIEIAAgCTYCDCAAIA02AgggCSAONgIACyAAQQRqIQAMAQsLIAIgBDYCFCACIAg2AhAgAiAEQQF0NgIYCyAGQiCIp0F1TwRAIAanIgAgACgCAEEBajYCAAsgAyAGNwMoIAFCIIinQXVPBEAgAaciACAAKAIAQQFqNgIACyABIQcLIAtBEGokACAHCz8BAX8gAUEAIAFBAEobIQEDQAJAIAEgA0YEQEF\u002FIQMMAQsgACADQQN0aigCBCACRg0AIANBAWohAwwBCwsgAwv\u002FBAICfwR+AkAgAkL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECIMAQsCQCAAIAJBPhBuBH9CgICAgDAhBUKAgICAMCEGQoCAgIAwIQggACACQT4gAkEAEBEiB0KAgICAcINCgICAgOAAUQ0BQYECQYACIAAgBxAnGwVBAAshAyAAIAJBPxBuBEBCgICAgDAhBUKAgICAMCEGQoCAgIAwIQggACACQT8gAkEAEBEiB0KAgICAcINCgICAgOAAUQ0BQYIEQYAEIAAgBxAnGyADciEDCyAAIAJBwAAQbgRAQoCAgIAwIQVCgICAgDAhBkKAgICAMCEIIAAgAkHAACACQQAQESIHQoCAgIBwg0KAgICA4ABRDQFBhAhBgAggACAHECcbIANyIQMLQoCAgIAwIQYCQCAAIAJBwQAQbkUEQEKAgICAMCEIDAELQoCAgIAwIQUgACACQcEAIAJBABARIghCgICAgHCDQoCAgIDgAFEEQAwCCyADQYDAAHIhAwsCQAJAIAAgAkHCABBuRQ0AQoCAgIAwIQUgA0GAEHIhAyAAIAJBwgAgAkEAEBEiBkKAgICAcIMiB0KAgICAMFENAEG+MCEEIAdCgICAgOAAUQ0BIAAgBhA1RQ0BCwJAIAAgAkHDABBuRQRAQoCAgIAwIQUMAQsgA0GAIHIhAyAAIAJBwwAgAkEAEBEiBUKAgICAcIMiAkKAgICAMFENAEGvMCEEIAJCgICAgOAAUQ0BIAAgBRA1RQ0BCyADQYAwcQRAQb\u002FYACEEIANBgMQAcQ0BCyABIAU3AxggASAGNwMQIAEgCDcDCCABIAM2AgBBAA8LIAAgBEEAEBILIAAgCBAMIAAgBhAMIAAgBRAMC0F\u002FC7kDAgl\u002FA34jAEEgayIEJAAgBEEANgIMIARBADYCCAJAIAAgASACIAFBABARIg1CgICAgHCDQoCAgIDgAFEEQCANIQEMAQsCQAJAIA1CgICAgHBUDQAgACANEMwBIglBAEgNAQJAIAkEQCAAIARBDGogDRDKAUUNAQwDCyAAIARBCGogBEEMaiANp0EREH0hCyAEKAIIIQYgC0EASA0CCyAEKAIMIQgDQCAHIAhGDQECQCAJBEAgACAHEOwFIgVFDQQMAQsgACAGIAdBA3RqKAIEEBYhBQsCfwJAIAAgDSAFIAMQhQUiDkKAgICAcIMiD0KAgICAMFIEQCAPQoCAgIDgAFINASAAIAUQEAwFCyAAIA0gBUEAEM0BDAELIAAgDSAFIA5BBxAVCyEMIAAgBRAQIAdBAWohByAMQQBODQALDAELIAAgBiAIEFtBACEGIAAgAhBSIg5CgICAgHCDQoCAgIDgAFENACAEIA03AxggBCAONwMQIAAgAyABQQIgBEEQahAcIQEgACAOEAwgACANEAwMAQsgACAGIAQoAgwQWyAAIA0QDEKAgICA4AAhAQsgBEEgaiQAIAELMAEBfyAAKAI4IAFBAnRqKAIAIgEgASgCACICQQFrNgIAIAJBAUwEQCAAIAEQmwMLC44DAQR\u002FIwBBQGoiAyQAAkAgACABEEoiAUKAgICAcINCgICAgOAAUQ0AAkAgACADQSRqIgIgAaciBCgCBEH\u002F\u002F\u002F\u002F\u002FB3FBAmoQPg0AIAJBIhA8DQBBACECIANBADYCPANAIAQoAgRB\u002F\u002F\u002F\u002F\u002FwdxIAJKBEACQAJAAkACQAJAAkACQAJAAkACQCAEIANBPGoQxgEiAkEIaw4GBQIEAQYDAAsgAkEiRiACQdwARnINBgsgAkGA8P8AcUGAsANHIAJBIE9xDQYgAyACNgIAIANBEGoiAkEQQf4PIAMQSBogA0EkaiACEIMBDQoMBwtB9AAhAgwEC0HyACECDAMLQe4AIQIMAgtB4gAhAgwBC0HmACECCyADQSRqIgVB3AAQPA0EIAUgAhA8RQ0BDAQLIANBJGogAhCxAQ0DCyADKAI8IQIMAQsLIANBJGoiAkEiEDwNACAAIAEQDCACEDchAQwBCyAAIAEQDCADKAIkKAIQIgBBEGogAygCKCAAKAIEEQAAQoCAgIDgACEBCyADQUBrJAAgAQvdBgIMfwd+IwBBMGsiAiQAAn4CQAJAIAEpAygiDkKAgICAcINCgICAgJB\u002FUQRAIAEpAwgiEEKAgICAcINCgICAgJB\u002FUQ0BCyAAQcbJAEEAEBIMAQsgASkDICESIAEpAxghDyABKQMAIRMgACACQQxqQQAQPhogAkEANgIkAkAgD0KAgICAcINCgICAgDBSBEAgACACQSRqIA8QygENAQsgACACQShqIBMQygENACAAIAJBLGogASkDEBB1QQBIDQAgEKchCCASQoCAgIBwgyEQIAIoAiwiDCACKAIoaiENIA6nIgRBEGohByAEKAIEQf\u002F\u002F\u002F\u002F8HcSEKIAIoAiQhC0EAIQEDQAJAAkACQCAEQSQgARCgASIGQQBIDQAgBkEBaiIDIApPDQAgAkEMaiAEIAEgBhBLGiAGQQJqIQECQAJAAkACQAJ\u002FIAQpAgRCgICAgAiDUCIJRQRAIAcgA0EBdGovAQAMAQsgAyAHai0AAAsiA0Ekaw4EAAMFAQILIAJBDGpBJBA8GgwGCyACQQxqIAggDSAIKAIEQf\u002F\u002F\u002F\u002F8HcRBLGgwFCyADQeAARg0DCwJAIANBMGsiBUEJTQRAAkAgASAKTw0AAn8gCUUEQCAHIAFBAXRqLwEADAELIAEgB2otAAALIgNBMGtBCUsNACAGQQNqIAEgAyAFQQpsaiIBQTBLIAFBMGsiAyALSXEiCRshASADIAUgCRshBQsgBUUgBSALT3INASAAIA8gBa0QbCIOQoCAgIBwgyIRQoCAgIAwUQ0FIBFCgICAgOAAUQ0GIAJBDGogDhCEAUUNBQwGCyADQTxHIBBCgICAgDBRcg0AIARBPiABEKABIgNBAEgNACAAIAQgASADEI4BIg5CgICAgHCDQoCAgIDgAFENBSAAIBIgDhBOIg5CgICAgHCDIhFCgICAgDBSBEAgEUKAgICA4ABRDQYgAkEMaiAOEIQBDQYLIANBAWohAQwECyACQQxqIAQgBiABEEsaDAMLIAJBDGoiACAEIAEgBCgCBEH\u002F\u002F\u002F\u002F\u002FB3EQSxogABA3DAULIAJBDGogExCNAUUNAQwCCyACQQxqIAhBACAMEEsaDAALAAsgAigCDCgCECIAQRBqIAIoAhAgACgCBBEAAAtCgICAgOAACyEUIAJBMGokACAUC28BA38DQCAAKAIoIgFBAExFBEAgACABQQFrIgE2AiggACgCACAAKAIEIAFBA3RqKQMAEAwMAQsLIAAoAgQiASAAQQhqIgJHBEAgACgCACgCECIDQRBqIAEgAygCBBEAAAsgAEEENgIsIAAgAjYCBAu8CwIHfg1\u002FIwBBEGsiECQAAkAgACABEPUCIgJFBEBCgICAgOAAIQQMAQtCgICAgOAAIQQgACADKQMAECUiCEKAgICAcINCgICAgOAAUQ0AQQAhA0KAgICAICEFQoCAgIAwIQcCQAJAIAAgAUHWACABQQAQESIEQoCAgIBwg0KAgICA4ABRDQAgACAQQQhqIAQQoQENACACKAIEQRBqIgstAAAiDkEhcSIRRQRAIBBCADcDCAsCQCALLQABIgxBAE0NACAAIAxBA3QQJCIDDQBBACEDDAELAkACQCAQKQMIIgkgCKciFCkCBCIEQv\u002F\u002F\u002F\u002F8Hg1UNACADIAsgFEEQaiISIAmnIASnIgJB\u002F\u002F\u002F\u002F\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\u002F\u002F\u002F\u002F\u002F29WDQEgACABEAwgAEH6HkEAEBILIAVBADYCAAwBCyAFQQI2AgAgASEICyAGQRBqJAAgCAsNACAAIAEgAkEAELQBC18BAX8gAUEQaiEDAkAgAS0AB0GAAXEEQCAAIAMgAkEBdBAeGgwBC0EAIQEgAkEAIAJBAEobIQIDQCABIAJGDQEgACABQQF0aiABIANqLQAAOwEAIAFBAWohAQwACwALC6gBAQV\u002FIACnIgMoAhAiAUEwaiEEIAEgASgCGEF\u002Fc0ECdEGgfnJqKAIAIQEDQCABRQRAQQAPCyAEIAFBAWsiBUEDdGoiASgCACECIAEoAgRBN0cEQCACQf\u002F\u002F\u002Fx9xIQEMAQsLQQEhAQJAIAJB\u002F\u002F\u002F\u002F\u002FwNLDQAgAygCFCAFQQN0aikDACIAQoCAgIBwg0KAgICAkH9SDQAgAKcoAgRB\u002F\u002F\u002F\u002F\u002FwdxQQBHIQELIAEL1wMBBn8jAEEQayIHJAAgBUEEaiEJAkACQANAQQAhBiABQQA2AgAgAkEANgIAIAUoAggiCEEAIAhBAEobIQoDQCAGIApHBEACQCAFKAIAIAZBA3RqIgsoAgAgA0cNACALKAIEIARHDQBBAiEGDAULIAZBAWohBgwBCwsgACAFQQggCSAIQQFqEGQEQEF\u002FIQYMAwsgBSAFKAIIIgZBAWo2AgggBSgCACAGQQN0aiIGIAM2AgAgBiAAIAQQFiIINgIEIAMgCBC6BSIGBEAgBigCCEUNAiAGKAIMIgRB\u002FgBGDQIgAygCECAGKAIAQQN0aigCBCEDDAELCyAIQRZHBEBBACEEA0AgAygCLCAESgRAAkACQCAAIAdBDGogB0EIaiADKAIQIAMoAiggBEECdGooAgBBA3RqKAIEIAggBRCVBSIGQQFqDgUGAAEBBgELIAIoAgAiBgRAIAEoAgAgBygCDEYEQCAHKAIIKAIMIAYoAgxGDQILIAFBADYCACACQQA2AgBBAyEGDAYLIAEgBygCDDYCACACIAcoAgg2AgALIARBAWohBAwBCwtBACEGIAIoAgANAgtBASEGDAELIAEgAzYCACACIAY2AgBBACEGCyAHQRBqJAAgBguwAwELfyABKAIIIgVBACAFQQBKGyEGAkACQANAIAQgBkcEQCAEQQJ0IQ4gBEEBaiEEIA4gASgCAGooAgAgAkcNAQwCCwtBfyEHIAAgAUEEIAFBBGogBUEBahBkDQEgASABKAIIIgRBAWo2AgggASgCACAEQQJ0aiACNgIAIAFBEGohCiABQQxqIQhBACEFA0AgAigCICAFTARAQQAhBANAIAQgAigCLE4NAyAEQQJ0IQMgBEEBaiEEIAAgASACKAIQIAMgAigCKGooAgBBA3RqKAIEQQEQlgVFDQALDAMLAkAgA0EAIAIoAhwgBUEUbGoiBigCECILQRZGGw0AQQAhBCABKAIUIglBACAJQQBKGyEMAkADQCAEIAxHBEAgCCgCACAEQQxsaiINKAIAIAtGDQIgBEEBaiEEDAELCyAAIAhBDCAKIAlBAWoQZA0EIAEgASgCFCIEQQFqNgIUIAEoAgwgBEEMbGoiBCAGKAIQNgIAAkAgA0UEQCAGKAIIRQ0BCyAEQQA2AggMAgsgBCAGNgIIDAELIA1BADYCCAsgBUEBaiEFDAALAAtBACEHCyAHC6sCAQR\u002FIwBBEGsiAyQAAkACQAJAAkACQAJAAkACQCABQiCIpyICQQpqDgoCBAMABAQEBQEBBAsgAaciAikCBEKAgICAgICAgMAAVA0FIAAgAhCbAwwGCyAALQBoQQJGDQUgAaciAigCCCIEIAIoAgwiBTYCBCAFIAQ2AgAgAkEANgIMIAAoAlwhBCAAIAJBCGoiBTYCXCACIAQ2AgwgAiAAQdgAajYCCCAEIAU2AgAgAC0AaA0FIAAQ5gUMBQsgAaciAkEEahAZIABBEGogAiAAKAIEEQAADAQLIAAgAacQmwMMAwsgAyACNgIAIwBBEGsiACQAIAAgAzYCDEGQ0wRBv5MBIAMQkwQgAEEQaiQACxABAAsgAEEQaiACIAAoAgQRAAALIANBEGokAAt\u002FAQJ\u002FAkAgASgCSCICBEAgASgCZCIDRQ0BA0AgAiADT0UEQCAAIAIpAwAQISACQQhqIQIgASgCZCEDDAELCyAAQRBqIAEoAkggACgCBBEAACABQQA2AkgLIAAgASkDQBAhIAAgASkDEBAhDwtB5PUAQajsAEHwkgFBhtQAEAAAC2UBBH8DQCACIAVKBEAgASAFaiIGLQAAIgRBE2ogBCAEQbMBSxsgBCADG0ECdCIEQeCuAWotAAAhByAEQeOuAWotAABBF2tB\u002FwFxQQRNBEAgACAGKAABEMcBCyAFIAdqIQUMAQsLC0gBA38gAkEAIAJBAEobIQIDQCACIANGBEBBAA8LIAEgA2ohBCADQQF0IQUgA0EBaiEDIAAgBWovAQAgBC0AAGsiBEUNAAsgBAtYAQJ\u002FIAEEQAJAIAAoAgggACgCBCIDIAFqSQ0AIAEQjwIiAUUNACAAIANBCGo2AgQgACAAKAIAQQFqNgIAIAEhAgsgAg8LQc2HAUGo7ABBtQ1B9OsAEAAAC0wBA38gACgCIEEYaiEBAkADQCABIgMoAgAiAkUNASACQQxqIQEgACACRw0ACyADIAAoAgw2AgAPC0GC9gBBqOwAQbPvAkH4zAAQAAAL4wQBCX8gACAAQeAAaiIENgJkIAAgBDYCYCAAQdQAaiECIABB0ABqIQcgAEHkAGohBSAAKAJUIQMDQCAHIAMiAUYEQAJAAkADQAJAIAcgAigCACIBRgRAIAUhAQNAIAEoAgAiASAERg0CIAAgAUEIa0ENEN0DIAFBBGohAQwACwALIAFBCGsiAygCAEEATA0CIAFBBGsiAiACLQAAQQ9xOgAAIAAgA0EOEN0DIAFBBGohAgwBCwsgAEECOgBoIABB2ABqIQMDQCAEIAUoAgAiAUcEQCABQQRrLQAAQQ9xIgJBBEtBASACdEETcUVyBEAgASgCACICIAEoAgQiBzYCBCAHIAI2AgAgAUEANgIAIAMoAgAiAiABNgIEIAEgAzYCBCABIAI2AgAgAyABNgIADAIFIAAgAUEIaxCLBQwCCwALCyAAQQA6AGggAEEQaiEEIAAoAlwhAQNAIAEgA0cEQCABQQRrLQAAQQ9xIgVBBEtBASAFdEETcUVyDQMgASgCBCEJIAQgAUEIayAAKAIEEQAAIAkhAQwBCwsgACADNgJcIAAgAEHYAGo2AlgPC0HmhAFBqOwAQY0tQarAABAAAAtBzvMAQajsAEHFLUHjJxAAAAsgAUEEayIGLQAAQRBJBEAgASgCBCEDIAAgAUEIayIIQQ8Q3QMgBiAGLQAAQQ9xQRByOgAAIAgoAgANASABKAIAIgYgASgCBCIINgIEIAggBjYCACABQQA2AgAgBCgCACIGIAE2AgQgASAENgIEIAEgBjYCACAEIAE2AgAMAQsLQeuGAUGo7ABB6ixBs8wAEAAACxgBAX8gAacoAiAiAwRAIAAgAyACEQAACwsyACAAIAEQqgIiAUKAgICAcINCgICAgMB+UQR+IABB2cMAQQAQigJCgICAgOAABSABCwsMACAAIAEQtQNBAEwLSAEBfyMAQRBrIgIkAAJAIAFBIHEEQCAAEHAMAQsgAkH+N0GmO0H5ECABQQFxGyABQQJxGzYCACAAQZArIAIQRAsgAkEQaiQAC8oIAhN\u002FAX4jAEEgayILJABCgICAgOAAIRYCQCAAIAtBDGogARCuAiIHRQ0AIAcoAgQhECAHKAIIQYCAgIB4RgRAIAdBADYCBAsjAEGAAWsiAyQAIANB6ABqIgYgBygCACIMQZUDEJ0CAn8CQAJAIAcoAggiBUH\u002F\u002F\u002F\u002F\u002FB0YEQCAGQbvzABDeAgwBCyAHKAIEBEAgA0HoAGpBLRAOIAcoAgghBQsgBUH+\u002F\u002F\u002F\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\u002FcSACQcAAciAEKAIAQQBIGwtB\u002FwFxEA4LIAhBAWohCAwBCwshBgNAAkACQAJAAkACQAJAAkACQAJAAkACQCAPIAoiAkoEQCACIAIgDGoiCS0AACIEQQJ0QeCuAWotAAAiEGohCgJAAkACQAJAAkACQAJAAkACQAJAIARBswFrDhQWBQ8EAQEBAQIBAQEDAwMDDQwWCwALIARBEWsiAkEfSw0QQQEgAnRBgIDQjHxxDREgAkUNDSACQQVHDRAgA0F\u002FNgIYIANCyfqAgOABNwMQIANBnAZqIAogA0EQahAjRQ0TIANBwAZqIgQgAy0ArAYQDiADKAKkBiEKIAMoAqgGIgJBf0YgAiAGRnINFSABIAEoAtwCQQFqNgLcAiAEQcYBEA4gBCACEBsgAiEGDBULIAAgASAJKAABIgIgCS8ABSAEIANBwAZqQQBBACAKEPUEIQogACACEBAMFAsgCS8ACSEFIAkoAAEhAiABKAKkAiAJKAAFQRRsaiIEIAQoAgBBAWs2AgAgACABIAIgBUG7ASADQcAGaiAMIAQgChD1BCEKIAAgAhAQDBMLIAAgA0HYBmogA0HcBmogASAJKAABIgcgCS8ABSIJEPQEIgVBAEgNBSADKALcBiIIRQ0EAkACQAJAAkACQAJAIARBvwFrDgQAAAECAwsCQAJAAkAgCEEFaw4FAAECBgIFCyAEQcABRgRAIANBwAZqQREQDgsgA0HABmoiAiADKALYBiAFEPoBIAJBxAAQDgwGCyADQcAGaiICIAMoAtgGIAUQ+gEgAkEsEA4gBEHAAUYNBSACQQ8QDgwFCyAEQcABRgRAIANBwAZqQREQDgsgA0HABmoiAiADKALYBiAFEPoBIAJBLBAOIAJBJBAOIAJBABAmDAQLAkACQAJAIAhBBWsOBQABAQICBAsgA0HABmoiAiADKALYBiAFEPoBIAJBxQAQDgwFCyADQcAGaiICQTAQDiACIAAgBxAWEBsgAkEAEA4MBAsgACAHEPMEIgRFDQkgACADQdgGaiADQdwGaiABIAQgCRD0BCEFIAAgBBAQIAVBAEgNCSADKALcBkEIRw0HIANBwAZqIgIgAygC2AYgBRD6ASACQRsQDiACQR4QDiACQSwQDiACQR0QDiACQSQQDiACQQEQJiACQQ4QDgwDCyADQcAGaiICIAMoAtgGIAUQ+gEgAkGyARAODAILEAEACyADQcAGaiICQTAQDiACIAAgBxAWEBsgAkEAEA4LIAAgBxAQDBILIAkoAAEiAkEASA0BIAIgASgCrAJODQEgASgCpAIgAkEUbGogAygCxAYgEGo2AggMDwtBACEFQQAhAiAJLwABIhAgASgC8AFHDQoDQCABKAKIASACSgRAIAEoAoABIAJBBHRqIgcoAgxBAE4EQCADQcAGaiIEQQMQDiAEIAcoAgxBCHUQGyAEQdwAEA4gBCACQf\u002F\u002FA3EQJgsgAkEBaiECDAELCwNAIAEoAnwgBUoEQAJAIAEoAnQgBUEEdGoiBCgCBA0AIAQoAgxBAEgNACADQcAGaiICQQMQDiACIAQoAgxBCHUQGyACQdkAEA4gAiAFQf\u002F\u002FA3EQJgsgBUEBaiEFDAELCwJAIAEoApQDRQRAQX8hCQwBCyABQX8Q0QMhCSADQcAGaiICQQgQDiACQeoAEA4gAiAJEBsgASAJQQEQYxogASABKALQAkEBajYC0AILQQAhCANAAkACQCABKAL0ASAISgRAQQAhAiABKALAAiIEQQAgBEEAShshByABKAL8ASAIQQR0aiIELQAEIgVBAXEhCwJ\u002FA0AgAiAHRwRAIAEoAsgCIAJBA3RqKAIEIg4gBCgCDEYEQEEAIQsgAiEHQQIMAwsgDkHTAGtBAU0EQCADQcAGaiIFQd4AEA4gBSACQf\u002F\u002FA3EQJkEBIQsgAiEHQQEMAwUgAkEBaiECDAILAAsLIAEoAiRBAEchDiAFQQJxIhFFIAQoAgBBAE5xDQIgA0HABmoiAkE+EA4gAiAAIAQoAgwQFhAbIAJBgH9Bgn8gBUEEcRtBACARGyAOckGDAXEQDkEACyEFIAtFIAQoAgAiAkEASHENAgJAIAJBAE4EQCADQcAGaiICQQMQDiACIAQoAgAQGyAEKAIMQf0ARw0BIAJBzQAQDiACQRYQGwwBCyADQcAGakEGEA4LAkACQAJAIAVBAWsOAgEAAgsgA0HABmoiAkHfABAOIAIgB0H\u002F\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\u002FRgRAIAAgAiADKALEBkEEa0EEEO4CRQ0dCyADQcAGaiAHEA4gBCECDB0LIANCqYCAgHA3A3AgA0GcBmogBCADQfAAahAjRQ0TIAQhAiADKAKoBiIEQQBIDRwgAyAENgLYBgwcCyADQqyBgIBwNwOgASADQZwGaiAEIANBoAFqECMEQAJAIAMoAqgGIgJBAEgEQCADKALYBiECDAELIAMgAjYC2AYLIAEgAygCxAYgAhAuIANBwAZqQfMBEA4MGAsgA0F\u002FNgKYASADQq2BgICg7Ro3A5ABIANBnAZqIAQgA0GQAWoQI0UNAAJAIAMoAqgGIgVBAEgEQCADKALYBiEFDAELIAMgBTYC2AYLIAEgAygCxAYgBRAuIANBwAZqQfMBEA4gAygCrAZBAXMhBQwYCyADQurWgYBwNwOAASADQZwGaiAEIANBgAFqECNFDREgBUEKRiEJDA0LAkAgBigAASIGQYCAgIB4ckGAgICAeEYNACADQo2BgIBwNwPgASADQZwGaiAEIANB4AFqECNFDQAgAygCqAYiAkEATgRAIAMgAjYC2AYLIANCjoCAgHA3A9ABIANBnAZqIAMoAqQGIANB0AFqECMEQCADKAKoBiICQQBIDRcgAyACNgLYBgwXCyABIAMoAsQGIAMoAtgGEC4gA0HABmpBACAGaxDOAwwWCyADQo6AgIBwNwPAASADQZwGaiAEIANBwAFqECMEQCADKAKoBiICQQBIDRYgAyACNgLYBgwWCyADQurWgYBwNwOwASADQZwGaiAEIANBsAFqECMEQCAGQQBHIQkMDQsgASADKALEBiADKALYBhAuIANBwAZqIAYQzgMgBCECDBkLIAYoAAEiAkH\u002FAUoNDyABIAMoAsQGIAMoAtgGEC4gA0HABmoiBiAFQcMAa0H\u002FAXEQDiAGIAJB\u002FwFxEA4gBCECDBgLIAYoAAEhAiADQo6AgIBwNwPwASADQZwGaiAEIANB8AFqECMEQCAAIAIQECADKAKoBiICQQBIDRQgAyACNgLYBgwUCyACQS9HDQ4gASADKALEBiADKALYBhAuIANBwAZqQcEBEA4gBCECDBcLIANCyYCAgHA3A6gCIANC2Lb5gnA3A6ACIANBnAZqIgUgBCICIANBoAJqECMNFiADQX82ApgCIANCgYSQgJAJNwOQAiAFIAIgA0GQAmoQIw0WIANBfzYCiAIgA0KGjqjIkAk3A4ACIAUgAiADQYACahAjDRYMDQsgA0KOgICAcDcD8AIgA0GcBmogBCADQfACahAjBEAgAygCqAYiAkEASA0SIAMgAjYC2AYMEgsgA0KogICAcDcD4AIgA0GcBmogBCADQeACahAjBEACQCADKAKoBiICQQBIBEAgAygC2AYhAgwBCyADIAI2AtgGCyABIAMoAsQGIAIQLiADQcAGakEpEA4MEgsgA0Lq1oGAcDcD0AJBACEJIANBnAZqIgUgBCADQdACahAjDQggA0KsgYCAcDcDwAIgBSAEIANBwAJqECMEQAJAIAMoAqgGIgJBAEgEQCADKALYBiECDAELIAMgAjYC2AYLIAEgAygCxAYgAhAuIANBwAZqQfIBEA4MEgsgA0F\u002FNgK4AiADQq2BgICg7Ro3A7ACIANBnAZqIAQgA0GwAmoQI0UNDAJAIAMoAqgGIgVBAEgEQCADKALYBiEFDAELIAMgBTYC2AYLIAEgAygCxAYgBRAuIANBwAZqQfIBEA4gAygCrAZBAXMhBQwSCyADQX82AogDIANCw\u002FaAgOABNwOAAyADQZwGaiAEIANBgANqECNFDQsCQCADKAKoBiICQQBIBEAgAygC2AYhAgwBCyADIAI2AtgGCyABIAMoAsQGIAIQLiADQcAGaiICIAMtAKwGEA4gAiADKAK8BhAbDBALIANBfzYCuAMgA0LZuP2CcDcDsAMgA0GcBmogBCADQbADahAjRQ0KIAMoAqgGIgJBAE4EQCADIAI2AtgGCyADQo6AgIBwNwOgAyADKAKsBiIFQQFqIQYCQCADQZwGaiADKAKkBiICIANBoANqECMEfyADKAKoBiICQQBOBEAgAyACNgLYBgsgAyADKAKwBjYClANBfyEEIANBfzYCmAMgAyAFQQFrNgKQAyADQZwGaiADKAKkBiICIANBkANqECNFDQEgAygCpAYhAiADKAKoBgVBfwshBCAGIQULIAEgAygCxAYgAygC2AYQLiADQcAGaiAFIAMoArAGEFkgBEEASA0TIAMgBDYC2AYMEwsgBi8AASICQf8BSw0JIANCjoCAgHA3AswEIAMgAjYCyAQgA0KRpYKAkAs3A8AEAkAgA0GcBmoiBiAEIANBwARqECNFBEAgA0KOgICAcDcDsAQgAyACNgKsBCADQdkANgKoBCADQo+hgoCQAjcDoAQgBiAEIANBoARqECNFDQELAkAgAygCqAYiBUEASARAIAMoAtgGIQUMAQsgAyAFNgLYBgsgASADKALEBiAFEC4gA0HABmoiBEGUAUGTASADKAKsBkF9cUGQAUYbEA4gBCACQf8BcRAODA8LIANCjoCAgHA3ApQEIAMgAjYCkAQgA0KRgICAkAs3A4gEIANChICAgOATNwOABCADQZwGaiAEIANBgARqECMEQAJAIAMoAqgGIgVBAEgEQCADKALYBiEFDAELIAMgBTYC2AYLIAEgAygCxAYgBRAuAkAgAygCvAZBL0YEQCADQcAGakHBARAODAELIANBwAZqIgRBBBAOIAQgAygCvAYQGwsgA0HABmoiBEGVARAOIAQgAkH\u002FAXEQDgwPCyADQo6AgIBwNwL0AyADIAI2AvADIANCkYCAgJALNwPoAyADQoGAgIDgEzcD4AMgA0GcBmogBCADQeADahAjBEACQCADKAKoBiIFQQBIBEAgAygC2AYhBQwBCyADIAU2AtgGCyABIAMoAsQGIAUQLiADQcAGaiIEIAMoArQGEM4DIARBlQEQDiAEIAJB\u002FwFxEA4MDwsgA0KOgICAcDcD2AMgAyACNgLUAyADQdkANgLQAyADQp6BgICQAjcDyAMgA0LYtvmCcDcDwAMgA0GcBmogBCADQcADahAjBEACQCADKAKoBiIFQQBIBEAgAygC2AYhBQwBCyADIAU2AtgGCyABIAMoAsQGIAUQLiADQcAGaiIEIAMoAqwGIAMoArAGEFkgBEGVARAOIAQgAkH\u002FAXEQDgwPCyABIAMoAsQGIAMoAtgGEC4gA0HABmpB2AAgAhBZIAQhAgwSCyAGLwABIQIgASADKALEBiADKALYBhAuIANBwAZqIAUgAhBZIAQhAgwRCyADIAYvAAEiAjYC5AQgA0F\u002FNgLoBCADIAVBAWs2AuAEIANBnAZqIAQgA0HgBGoQIwRAAkAgAygCqAYiBEEASARAIAMoAtgGIQQMAQsgAyAENgLYBgsgASADKALEBiAEEC4gA0HABmogBUEBaiACEFkMDQsgASADKALEBiADKALYBhAuIANBwAZqIAUgAhBZIAQhAgwQCyABIAogCCAEIANB2AZqEKUCIQQMBgsgASgC1AIhCyABKALMAiEGQQAhCUEAIQgDQAJAIAkgC0gEQEEDIQogBigCACICQeoAa0EDTwRAIAJB7QFHDQJBASEKCwJAIAEoAqQCIAYoAgxBFGxqKAIMIAYoAggiBWsiBEGAf0ggBCAKQf8AakpyRQRAIAZBATYCBCACQe0BRgRAQewBIQIgBkHsATYCAAwCCyAGIAJBgAFqIgI2AgAMAQsgAkHsAEcgBEGAgAJqQf\u002F\u002FA0tyDQIgBkLtgYCAIDcCAEECIQpB7QEhAgsgAygCwAYgBWpBAWsgAjoAACAGKAIEIgIgAygCwAYgBWpqIgQgBCAKaiADKALEBiAFIApqIAJqaxCrASADIAMoAsQGIAprNgLEBkEAIQQgASgCrAIiAkEAIAJBAEobIQcgASgCpAIhAgNAIAQgB0YEQCABKALUAiELIAYhByAJIQQDQAJAIAsgBEEBaiIETARAQQAhAiABKALgAiIEQQAgBEEAShshBANAIAIgBEYNAiAFIAEoAtgCIAJBA3RqIgcoAgAiDEkEQCAHIAwgCms2AgALIAJBAWohAgwACwALIAciAkEQaiEHIAIoAhgiDCAFTA0BIAIgDCAKazYCGAwBCwsgCEEBaiEIDAMLIAUgAigCDCILSARAIAIgCyAKazYCDAsgAkEUaiECIARBAWohBAwACwALIAEoAswCIQIgCARAQQAhBQNAIAUgC0gEQCABKAKkAiACKAIMQRRsaigCDCACKAIIIgRrIQYCQAJAAkACQCACKAIEQQFrDgQAAQMCAwsgAygCwAYgBGogBjoAACABKALUAiELDAILIAMoAsAGIARqIAY7AAAMAQsgAygCwAYgBGogBjYAAAsgAkEQaiECIAVBAWohBQwBCwsgASgCzAIhAgsgACgCECIEQRBqIAIgBCgCBBEAACABQQA2AswCIAAoAhAiAkEQaiABKAKkAiACKAIEEQAAIAFBADYCpAIgASgC2AIhAgJAIAEtAG5BAnEEQCACIQUMAQtBACEFIAJFDQAgASgC8AIhByABKAIAIAFB9AJqIggQgwJBACECQQAhCgNAIAEoAtgCIQUgAiABKALgAk4NAQJAIAUgAkEDdGoiBigCBCIEQQBIIAQgB0ZyDQAgBigCACIGIAprIgVBAEgNAAJAIAQgB2siB0EBaiIKQQRLIAVBMktyRQRAIAggCiAFQQVsakEBakH\u002FAXEQDgwBCyAIQQAQDiAIIAUQsQUgCCAHQQF0IAdBH3VzELEFCyAGIQogBCEHCyACQQFqIQIMAAsACyAAKAIQIgJBEGogBSACKAIEEQAAIAFBADYC2AIgDRCJASANIAMpAtAGNwIQIA0gAykCyAY3AgggDSADKQLABjcCACABQQE2AqACIAEoAowCBEAgABBwDCALIAEoAoACIQcgAyABKAKEAiIENgKcBiADIAAgBEEBdBAkIgY2AqQGIAZFDR9BACECIARBACAEQQBKGyEFA0AgAiAFRwRAIAYgAkEBdGpB\u002F\u002F8DOwEAIAJBAWohAgwBCwsgA0EANgKsBiADIAAgBEECdBAkIgI2AqgGAkAgAkUNACADQgA3ArAGIANBADYCoAYgACADQZwGakEAQQBBAEF\u002FELABDQADQCADKAKsBiECAkACQAJAIAMoArAGIgRBAEoEQCADIARBAWsiBDYCsAYgByACIARBAnRqKAIAIgJqIgUtAAAiBkEKakH\u002FAXFBCk0EQCADIAI2AtQFIAMgBjYC0AUgAEG+iwEgA0HQBWoQOgwGCyACIAZBE2ogBiAGQbMBSxtBAnRB4K4BaiIKLQAAaiIJIAMoApwGSgRAIAMgAjYC5AUgAyAGNgLgBSAAQdmKASADQeAFahA6DAYLIAMoAqQGIgsgAkEBdGovAQAhDSAKLQABIQQCQAJAAkAgCi0AA0ENaw4DAAEAAgsgBS8AASAEaiEEDAELIAQgBmpB7gFrIQQLIAQgDUoEQCADIAI2AvQFIAMgBjYC8AUgAEGfiwEgA0HwBWoQOgwGCyADKAKoBiIMIAJBAnRqKAIAIQgCQCAKLQACIARrIA1qIgQgAygCoAZMDQAgAyAENgKgBiAEQf\u002F\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\u002F31xIAEvAVhBCHRBgAJxciIEOwARIAIgBEH\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\u002F\u002F8BSnINASAEQu2BgIAgNwIAIANBwAZqIgJB7QEQDiACQQAQJiAGIQIgACAHIAMoAsQGQQJrQQIQ7gINAwwCCyAFQeoAa0ECSyAPIAxBf3NqIgJBgAFqQf8BS3JFBEAgBEEBNgIEIAQgBUGAAWoiBDYCACADQcAGaiIFIARB\u002FwFxEA4gBSACQf8BcRAOIAYhAgwDCyAJIAJBgIACakH\u002F\u002FwNLcg0AIARC7YGAgCA3AgAgA0HABmoiBEHtARAOIAQgAkH\u002F\u002FwNxECYgBiECDAILIANBwAZqIgIgBUH\u002FAXEQDiACIAcoAgwgAygCxAZrEBsgBiECIAcoAgxBf0cNASAAIAcgAygCxAZBBGtBBBDuAg0BCwsgA0HABmoQiQEMDgtB3BdBqOwAQcX7AUGeJhAAAAsgCSgAASEGIAEgASgC3AJBAWo2AtwCDAgLIANBwAZqQccAEA4MCQsgCSgAASECIANBwAZqIgRBwQAQDiAEIAIQGwwICyADQX82AkggA0Lq1oGA4AE3A0AgA0GcBmogCiADQUBrECNFDQUCQCADKAK0BiIHQQBIDQAgByABKAKsAk4NACADKAKoBiEEIAMoAqQGIRggAygCrAYhDiAHIQUDQCABKAKAAiERIAEoAqQCIRJBACELA0ACQCALQRRGDQAgEiAFQRRsaigCBCECA0AgAiARaiITLQAAIgVBtgFGIAVBxgFGcgRAIAJBBWohAgwBBSAFQewARw0CIAtBAWohCyATKAABIQUMAwsACwALCyADQo6AgIBwNwM4IAMgDjYCNCADQRE2AjAgA0GcBmogAiADQTBqECMEQCADKAK0BiEFDAELCyADQX82AiQgAyAONgIgIANBnAZqIAIgA0EgahAjRQ0GIAEgASgC0AJBAWo2AtACIAEgB0F\u002FEGMaIAEgAygCtAYiBUEBEGMaIANBwAZqIgIgDkH\u002FAXEQDiACIAUQGyAYIQogBEF\u002FRiAEIAZGcg0IIAEgASgC3AJBAWo2AtwCIAJBxgEQDiACIAQQGyAEIQYMCAtBgRhBqOwAQbL3AUGFKBAAAAsgASgCzAEgCS8AASIFQQN0akEEaiECA0AgAigCACICQQBIDQcgASgCdCACQQR0aiIEKAIEIAVHDQcgBC0ADEEEcQRAIANBwAZqIgdB6QAQDiAHIAJB\u002F\u002F8DcRAmCyAEQQhqIQIMAAsACyABKALMASAQQQN0akEEaiECA0AgAigCACICQQBIDQYgASgCdCACQQR0aiIEKAIEIBBHDQYgASgCnAEgAkcEQCADQcAGaiIHIgUgBCgCDEEEdkEPcUEBa0EBTQR\u002FIAdBAxAOIAcgBCgCDEEIdRAbQdkABUHhAAsQDiAFIAJB\u002F\u002F8DcRAmCyAEQQhqIQIMAAsACwJAAkACQCAEQeoAaw4GBAQCBAEDAAsgBEExRgRAIAkvAAEhBCABIAkvAAMiBRDxBCADQcAGaiICQTEQDiACIAQQJiACIAEoAswBIAVBA3RqLwEEQQFqQf\u002F\u002FA3EQJgwHCyAEQTJHBEAgBEHNAEcNBSAJKAABRQ0HDAULIAEgCS8AASICEPEEIANBwAZqIgRBMhAOIAQgASgCzAEgAkEDdGovAQRBAWpB\u002F\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\u002FIAIrA\u002FABIgWZRAAAAAAAAOBBYwRAIAWqDAELQYCAgIB4CyEQAn8gAisD6AEiBZlEAAAAAAAA4EFjBEAgBaoMAQtBgICAgHgLIQkCfyACKwPgASIFmUQAAAAAAADgQWMEQCAFqgwBC0GAgICAeAshCgJ\u002FIAIrA9gBIgWZRAAAAAAAAOBBYwRAIAWqDAELQYCAgIB4CyEHAn8gAisD0AEiBZlEAAAAAAAA4EFjBEAgBaoMAQtBgICAgHgLIQsCfyACKwPIASIFmUQAAAAAAADgQWMEQCAFqgwBC0GAgICAeAshDCAEQQFxIQgCfyACKwPAASIFmUQAAAAAAADgQWMEQCAFqgwBC0GAgICAeAshBkEAIQMCQCAIRQ0AIARBD3EhCAJAAkACQAJAIA0OBAABAgMECyACIAY2AmAgAiALNgJUIAIgBkEfdkEEcjYCXCACIAxBA2xBoMgBajYCWCACIA9BA2xBgMgBajYCUCACQZACakHAAEGHkgEgAkHQAGoQSCEDDAMLIAIgBjYCgAEgAiALNgJ4IAIgBkEfdkEEcjYCfCACIAxBA2xBoMgBajYCdCACIA9BA2xBgMgBajYCcCACQZACaiIGQcAAQbbrACACQfAAahBIIQMgCEEDRw0CIAMgBmpBIDoAACADQQFqIQMMAgsgAiAGNgKgASACQZACaiIIQcAAQY7rAEGI6wAgBkGQzgBJGyACQaABahBIIQMgAiALNgKUASACIAxBAWo2ApABIAMgCGpBwAAgA2tBpvEAIAJBkAFqEEggA2ohAwwBCyACIAs2ArQBIAIgDEEBajYCsAEgAiAGNgK8ASACIAZBH3ZBBHI2ArgBIAJBkAJqIgZBwABBp+sAIAJBsAFqEEghAyAIQQNHDQAgAyAGakGswAA7AAAgA0ECaiEDCwJAIARBAnFFDQACQAJAAkACQCANDgQAAQIDBAsgAiAJNgIIIAIgCjYCBCACIAc2AgAgAkGQAmogA2pBwAAgA2tBkfIAIAIQSCADaiEDDAMLIAIgCTYCKCACIAo2AiQgAiAHNgIgIAJBkAJqIgcgA2pBwAAgA2tBkfIAIAJBIGoQSCADaiIDIAdqQS1BKyAOQQBIGzoAACACIA4gDkEfdSIEcyAEayIEQTxuIgY2AhAgAiAEIAZBPGxrNgIUIAcgA0EBaiIEakE\u002FIANrQZPrACACQRBqEEggBGohAwwCCyACIBA2AjwgAiAJNgI4IAIgCjYCNCACIAc2AjAgAkGQAmogA2pBwAAgA2tBsfAAIAJBMGoQSCADaiEDDAELIAIgCTYCSCACIAo2AkQgAkHBAEHQACAHQQxIGzYCTCACIAdBC2pBDG9BAWo2AkAgAkGQAmogA2pBwAAgA2tB5vQAIAJBQGsQSCADaiEDCyAAIAJBkAJqIAMQ6gEhEQsgAkHQAmokACARCzcCA38BfiMAQRBrIgAkACAAEI0GIAApAwAhAyAAKAIIIQIgAEEQaiQAIAJB6AdtrCADQugHfnwLhwEBAXwgACADKQMAEKgBIgJFBEBCgICAgOAADwsgAhAHIQQgACACEDEgBL0iAQJ\u002FIASZRAAAAAAAAOBBYwRAIASqDAELQYCAgIB4CyIAt71RBEAgAK0PC0KAgICAwH4gAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwvxAQIGfwF+IABBCBAkIgRFBEBBfw8LIARCATcCACACpyEGIAJCIIinQXVJIQgDQAJAAkAgA0ECRg0AIAAgACkDMCADQS5yEEciCUKAgICAcINCgICAgOAAUgRAIABBEBAkIgUNAiAAIAkQDAtBfyEHIANFDQAgACABKQMAEAwLIAAoAhAgBBD\u002FBCAHDwsgBCAEKAIAQQFqNgIAIAUgBDYCCCAIRQRAIAYgBigCAEEBajYCAAsgBSACNwMAIAlCgICAgHBaBEAgCacgBTYCIAsgACAJQS9BARCYAyABIANBA3RqIAk3AwAgA0EBaiEDDAALAAt\u002FAQV\u002FIABBEGohBCABQQxqIQUgASgCECECA0AgAiAFRkUEQCACKAIEIQYgACACKQMQECEgACACKQMYECEgACACKQMgECEgACACKQMoECEgBCACIAAoAgQRAAAgBiECDAELCyABKAIIIgMEQCAAIAMQzgELIAQgASAAKAIEEQAAC+EDAgR\u002FAn4jAEFAaiICJAAgAiAAIAEQsQIiBjcDOAJAAkAgASgCIARAIAZCgICAgHCDQoCAgIDgAFENASAAIAEpAyhCgICAgDBBASACQThqEBwhBiAAIAIpAzgQDCAAIAYQDAwCCyACIAEoAmRBCGsiAykDADcDKCADQoCAgIAwNwMAIAAgBhAMQQAhAyAAIAApA1AgACACQShqQQAQ3gEhBiAAIAIpAygQDCAGQoCAgIBwg0KAgICA4ABRDQADQAJAIANBAkcEQCACQRBqIANBA3RqIAAgACkDMCADQTFqEEciBzcDACAHQoCAgIBwg0KAgICA4ABSDQEgA0EBRgRAIAAgAikDEBAMCyAAIAYQDAwDCyACQoCAgIAwNwMIIAJCgICAgDA3AwAgACAGIAJBEGogAhCpAiEFIAAgBhAMQQAhAwNAIANBAkZFBEAgACACQRBqIANBA3RqKQMAEAwgA0EBaiEDDAELCyAFDQIMAwsgASABKAIAQQFqNgIAIAenIAE2AiAgA0EBaiEDDAALAAsgACgCECIDKQOAASEGIANCgICAgCA3A4ABIAIgBjcDMCAAIAEpAzBCgICAgDBBASACQTBqEBwhBiAAIAIpAzAQDCAAIAYQDAsgAkFAayQAC5UDAgh\u002FAX4jAEEwayIGJAACQCABQoCAgIBwVA0AIAGnIgQvAQZBLUcNACAEKAIgIgRFDQAgBCgCAA0AIAJCIIinQXVPBEAgAqciBSAFKAIAQQFqNgIACyAAIARBGGogAhAdIAQgA0EBaiIFNgIAAkAgBUECRw0AIAQoAhQNACAAKAIQIgUoApgBIgdFDQAgACABIAJBACAFKAKcASAHETUACyAEQQRqIgcgA0EDdGoiCCgCBCEEIANBAEetQoCAgIAQhCEBA0AgBCAIRkUEQCAEKAIEIQsgBiAEKQMINwMAIAYgBCkDEDcDCCAEKQMYIQwgBiACNwMgIAYgATcDGCAGIAw3AxAgAEE8QQUgBhD4AiAEKAIAIgkgBCgCBCIKNgIEIAogCTYCACAEQgA3AgAgACgCECAEEKgCIAshBAwBCwsgB0EBIANrQQN0aiIFKAIEIQQDQCAEIAVGDQEgBCgCACIHIAQoAgQiAzYCBCADIAc2AgAgBEIANwIAIAAoAhAgBBCoAiADIQQMAAsACyAGQTBqJAALigMCA34CfyMAQRBrIgIkAEKAgICAMCEGAkACQCAAIAJBCGogACABECAiARAvDQACQCACKQMIIgdCAFcEQAwBCyAHQgF9IQUCQAJAAkACQCABIAJBBGogAhCPAUUNACAHIAIoAgAiCK1SDQAgAachCSACKAIEIQMgBEUNASADKQMAIQYgAyADQQhqIAhBA3RBCGsQqwEMAgsCQCAEBEAgACABQgAQTiIGQoCAgIBwg0KAgICA4ABRDQYgACABQgBCASAFQQEQ8wJFDQEMBgsgACABIAUQbCIGQoCAgIBwg0KAgICA4ABRDQULIAAgASAFEIUCQQBODQIMBAsgAyAIQQN0akEIaykDACEGCyAJIAkoAihBAWs2AigLIAdCgYCAgAhUDQBCgICAgMB+IAW5vSIFQoCAgIDAgYD8\u002FwB9IAVC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbIQULIAAgAUEwIAUQOUEATg0BCyAAIAYQDEKAgICA4AAhBgsgACABEAwgAkEQaiQAIAYLbgEEf0F\u002FIQZBfyACKAIAIgRBAXYgBGogBEGp1arVeksbIQUCQAJAIAMgASgCACIHRgRAIAAgBRAkIgBFDQIgACADIAQQHhoMAQsgACAHIAUQxQIiAEUNAQsgASAANgIAIAIgBTYCAEEAIQYLIAYLfwEEfyABLQAAQdsARgRAIAFBAWoiAxA9QQFrIQIgACgCECgCOCEEQcsBIQEDQCABQdgBRwRAAkAgBCABQQJ0aigCACIFKAIEQf\u002F\u002F\u002F\u002F8HcSACRw0AIAVBEGogAyACEGgNACAAIAEQFg8LIAFBAWohAQwBCwsQAQALIAAgARC2AQswAANAIAFBgAFJRQRAIAAgAUGAAXJB\u002FwFxEA4gAUEHdiEBDAELCyAAIAFB\u002FwFxEA4LFwAgACAAKQPAASABIAIgA0EAQX8QswULNQEBfyAAKALsASIHRQRAIABBjuUAQQAQEkKAgICA4AAPCyAAIAEgAiADIAQgBSAGIAcRNwALogYCBH8CfkKAgICAMCEJAkACQAJAAkACQCABKAJUIgVBGHZBAmsOBAIDAAABCyABLQCgAUUNAkF\u002FIQIgASkDqAEiCUIgiKdBdUkNAiAJpyIAIAAoAgBBAWo2AgAMAgtBlv4AQajsAEH74AFB3ToQAAALIAFBADYCcCABIAI2AlwgASACNgJYIAEgBUGAgIAYcjYCVCABIAMoAgA2AmAgAyABNgIAIAJBAWohAgNAAkACQAJAAkACQAJAIAEoAhQgB0oEQCAAIAEoAhAgB0EDdGooAgQiBSACIAMgBBC0BSICQQBIDQkgBSgCVCIGQRh2QQNrQQNPDQEgBkGAgIB4cUGAgIAYRgRAIAEgASgCXCIGIAUoAlwiCCAGIAhIGzYCXAwHCyAFKAKAASIFKAJUQYCAgHBxQYCAgCBHDQIgBS0AoAFFDQZBfyECIAUpA6gBIglCIIinQXVJDQggCaciACAAKAIAQQFqNgIADAgLAkAgASgCcEEASgRAIAEoAnQNBCABQQE2AnQgACgCECIAIAApA7gBIgpCAXw3A7gBIAEgCjcDeAwBCyABLQBUBEAgASgCdA0FIAFBATYCdCAAKAIQIgUgBSkDuAEiCkIBfDcDuAEgASAKNwN4IAAgARCQBQwBCyAAIAEgBBCPBUEASA0JCyABKAJcIgAgASgCWCIFSg0EIAAgBUcNBwNAIAMgAygCACIAKAJgNgIAIAAgATYCgAEgAEEEQQUgACgCdBs6AFcgACABRw0ACwwHC0He+wBBqOwAQY7hAUHdOhAAAAtBuv0AQajsAEGV4QFB3ToQAAALQfg6QajsAEGm4QFB3ToQAAALQfg6QajsAEGr4QFB3ToQAAALQdIOQajsAEG14QFB3ToQAAALIAUoAnQEQCABIAEoAnBBAWo2AnAgACAFQeQAakEEIAVB7ABqIAUoAmhBAWoQZARAIAAoAhAiACkDgAEhCSAAQoCAgIAgNwOAAUF\u002FIQIMAwsgBSAFKAJoIgZBAWo2AmggBSgCZCAGQQJ0aiABNgIACyAHQQFqIQcMAAsACyAEIAk3AwAgAg8LQX8L2AcCB38BfiMAQRBrIgYkAAJAIAEoAlQiCEEYdiIEQQVNQQBBASAEdEE2cRsNAAJAAkACQCAIQYCAgAhJBEAgASADNgJcIAEgAzYCWCABIAhBgICACHI2AlQgASACKAIANgJgIAIgATYCACADQQFqIQhBACEDA0ACQCABKAIUIANMBEBBACEDDAELIAAgASgCECADQQN0aigCBCIEIAIgCBC1BSIIQQBIDQUgBCgCVCIFQRh2IglBBUtBASAJdEE2cUVyDQMgBUGAgIB4cUGAgIAIRgRAIAEgASgCXCIFIAQoAlwiBCAEIAVKGzYCXAsgA0EBaiEDDAELCwJAA0AgAyABKAIgTg0BAkACQCABKAIcIANBFGxqIgQoAghBAUcNACAEKAIMIgVB\u002FgBGDQAgACAGQQhqIAZBDGogASgCECAEKAIAQQN0aigCBCAFEN8DIgUNAQsgA0EBaiEDDAELCyAAIAUgASAEKAIQEN4DDAQLIAEoAlBFBEAgASgCSCgCJCEKQQAhA0EAIQUDQAJAIAEoAjggBUwEQANAIAMgASgCIE4NAiABKAIcIANBFGxqIgQoAghFBEAgCiAEKAIAQQJ0aigCACIFIAUoAgBBAWo2AgAgBCAFNgIECyADQQFqIQMMAAsACyABKAIQIAEoAjQgBUEMbGoiCSgCCEEDdGooAgQhBAJAIAkoAgQiB0H+AEYEQCAAIAQQ9gIiC0KAgICAcINCgICAgOAAUQ0IIAAgCiAJKAIAQQJ0aigCAEEYaiALEB0MAQsgACAGQQhqIAZBDGogBCAHEN8DIgcEQCAAIAcgBCAJKAIEEN4DDAgLAkAgBigCDCIHKAIMQf4ARgRAIAAgBigCCCgCECAHKAIAQQN0aigCBBD2AiILQoCAgIBwg0KAgICA4ABRDQkgAEEBENwDIgRFBEAgACALEAwMCgsgACAEQRhqIAsQHQwBCyAHKAIEIgRFBEAgBigCCCgCSCgCJCAHKAIAQQJ0aigCACEECyAEIAQoAgBBAWo2AgALIAogCSgCAEECdGogBDYCAAsgBUEBaiEFDAELC0F\u002FIQMgACABKQNIQoGAgIAQQQBBABAcIgtCgICAgHCDQoCAgIDgAFENBSAAIAsQDAsgASgCXCIAIAEoAlgiA0oNAiAAIANGBEADQCACIAIoAgAiACgCYDYCACAAQQI6AFcgACABRw0ACwsgCCEDDAQLQbv+AEGo7ABBsNsBQfvKABAAAAtB5\u002FwAQajsAEHC2wFB+8oAEAAAC0HSDkGo7ABBxNwBQfvKABAAAAtBfyEDCyAGQRBqJAAgAwv3AgIEfwJ+AkAgAS0AVg0AAkAgASgCUARAA0AgAiABKAIgTg0CIAEoAhwgAkEUbGoiAygCCEUEQCAAQQAQ3AMiBEUEQEF\u002FDwsgAyAENgIECyACQQFqIQIMAAsACyABKQNIIQdBfyEDIAAgACkDMEENEEciBkKAgICAcINCgICAgOAAUQ0BIAanIgIgB6ciAzYCICADIAMoAgBBAWo2AgAgAkIANwIkAkAgAygCPCIERQ0AAkAgACAEQQJ0EFwiBEUNACACIAQ2AiRBACECA0AgAiADKAI8Tg0CIAMoAiQgAkEDdGotAAAiBUEBcQRAIAAgBUEDdkEBcRDcAyIFRQ0CIAQgAkECdGogBTYCAAsgAkEBaiECDAALAAsgACAGEAxBfw8LIAEgBjcDSCAAIAcQDAsgAUEBOgBWQQAhAgNAIAEoAhQgAkwEQEEADwsgAkEDdCEEQX8hAyACQQFqIQIgACAEIAEoAhBqKAIEELYFQQBODQALCyADC64IAQR\u002FIwBBIGsiBSQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAUIgiKdBA2oOAgEAAgsgACAAIAEgAyAEEIAEIAJBAEEAEDYhAgwCCyAAIAEQDEKAgICA4AAhAiAAIAGnIgMQtgVBAEgNASADKAJUIgRBgICACE8EQCAEQRh2IgRBBUtBASAEdEE0cUVyDQMLIAVBADYCECAAIAMgBUEQaiIEQQAQtQVBAEgEQCAEIQADQCAAKAIAIgBFDQMgACgCVCIDQYCAgHhxQYCAgAhHDQUgACADQf\u002F\u002F\u002FwdxNgJUIABB4ABqIQAMAAsACyAFKAIQDQQgAygCVCIGQRh2IgRBBUtBASAEdEE0cUUiB3INBSAEQQVLIAdyDQYgBkGAgIBwcUGAgIAgRgRAIAMoAoABIQMLAkACQCADKQOIASIBQoCAgIBwg0KAgICAMFIEQCABQiCIp0F0Sw0BDAILIAMgACADQZABahC3AiICNwOIAUKAgICA4AAhASACQoCAgIBwg0KAgICA4ABRDQEgBUEANgIcAkAgACADQQAgBUEcaiIEIAVBEGoQtAVBAEgEQCAFKQMQIgGnIQYgAUIgiKdBdUkhBwNAIAQoAgAiBARAIAQoAlQiCEGAgIB4cUGAgIAYRw0NIARBAToAoAEgBCAIQf\u002F\u002F\u002FwdxQYCAgChyNgJUIAdFBEAgBiAGKAIAQQFqNgIACyAEIAM2AoABIAQgATcDqAEgBEHgAGohBAwBCwsgACABEAwgAy0AV0EYdEGAgIAoRw0MIAMtAKABRQ0NIAAgACADKQOYAUKAgICAMEEBIANBqAFqEBwQDAwBCyADKAJUIgRBgICAcHFBgICAIEcNDSADLQCgAQ0OIAMoAnRFBEAgBEGAgIAocUGAgIAoRw0QIAVCgICAgDA3AwggACAAIAMpA5ABQoCAgIAwQQEgBUEIahAcEAwLIAUoAhwNEAsgAykDiAEiAUIgiKdBdUkNAQsgAaciACAAKAIAQQFqNgIAC0KAgICA4AAgASABQoCAgIBwg0KAgICA4ABRGyECDAELIAAgARAMIABBiuYAQQAQEkKAgICA4AAhAgsgBUEgaiQAIAIPC0Gy+gBBqOwAQefcAUG+1wAQAAALQfr3AEGo7ABB7NwBQb7XABAAAAtB+fQAQajsAEHy3AFBvtcAEAAAC0Hc+gBBqOwAQfXcAUG+1wAQAAALQdz6AEGo7ABB0+EBQc3XABAAAAtB0PcAQajsAEHj4QFBzdcAEAAAC0G2+wBBqOwAQevhAUHN1wAQAAALQec4QajsAEHs4QFBzdcAEAAAC0GE+wBBqOwAQfLhAUHN1wAQAAALQeY4QajsAEHz4QFBzdcAEAAAC0G2+wBBqOwAQfbhAUHN1wAQAAALQfn0AEGo7ABB\u002FOEBQc3XABAAAAtTACMAQRBrIgQkAEKAgICAMCEBIAQgAkEASgR+IAMpAwAFQoCAgIAwCzcDCCAAIAAgBSkDCEKAgICAMEEBIARBCGoQHBAMIARBEGokAEKAgICAMAvuAwEFfyMAQRBrIgYkAAJAAkACQAJ\u002FIAAoAhAiBCgCqAEiA0UEQCACLQAAQS5HBEAgACACIAIQPRCXAwwCCyABEIUGIQVBACEDIAAgAhA9IAUgAWtBACAFGyIFakECahAkIgdFDQQgByABIAUQHiIBIAVqQQA6AAACQANAAkAgAi0AAEEuRw0AQQIhAwJAAkAgAi0AAUEuaw4CAAECCyACLQACQS9HDQEgAS0AAEUNAyABEIUGIgNBAWogASADGyIDQYaIARCWBEUNASADQYWIARCWBEUNASADIAEgA0lrQQA6AABBAyEDCyACIANqIQIMAQsLIAEtAABFDQAgARA9IAFqQS87AAALIAEQPSABaiACEIcGIAEhAgwCCyAAIAEgAiAEKAKwASADEQcACyICRQ0BCyAAIAIQtgEiAUUEQCAAKAIQIgBBEGogAiAAKAIEEQAADAELIAAgARDPBSIDBEAgACgCECIEQRBqIAIgBCgCBBEAACAAIAEQEAwCCyAAIAEQECAEKAKsASIBRQRAIAYgAjYCACAAQeiOASAGEMMCIAAoAhAiAEEQaiACIAAoAgQRAAAMAQsgACACIAQoArABIAERAQAhAyAAKAIQIgBBEGogAiAAKAIEEQAADAELQQAhAwsgBkEQaiQAIAMLRQEEfyAAKAIgIgNBACADQQBKGyEDA0AgAiADRgRAQQAPCyACQRRsIQUgAkEBaiECIAUgACgCHGoiBCgCECABRw0ACyAEC1wBBH8gASEDAkADQCACIANNIARBBEtyDQEgAywAACIGQf8AcSAEQQdsdCAFciEFIARBAWohBCADQQFqIQMgBkEASA0ACyAAIAU2AgAgAyABaw8LIABBADYCAEF\u002FC78BAgZ\u002FAX4gAUEYaiEFIAEoAhwhAgNAIAIgBUcEQCACKAIEIQcgAigCCCIDBEAgACADEM4BCyACQRJrLwEAIQMCQAJAIAJBE2siBC0AAEECcQRAIAEoAhAgA0EDdGopAwAiCEIgiKdBdEsNAQwCCyABKAIUIANBA3RqKQMAIghCIIinQXVJDQELIAinIgMgAygCAEEBajYCAAsgAiAINwMAIAJBCGsgAjYCACAEIAQtAABBAXI6AAAgByECDAELCwsrAQF\u002FIAFBEGsiAyAAIAMpAwAgAUEIaykDABCSBSACR61CgICAgBCENwMAC9YHAwR+Bn8CfCABQQhrIgspAwAhAyABQRBrIgopAwAhBQJAAkACQAJAAkACQAJAA0AgBUL\u002F\u002F\u002F\u002F\u002FD4MhBkEHIANCIIinIgkgCUEHa0FuSRsiB0F2RiEMAkACQAJAAkACQANAAkBBByAFIgRCIIinIgEgAUEHa0FuSRsiAUEKaiIIQRFLQQEgCHRBgYgIcUVyDQAgDEUEQCAHQQdGBEAgByEJDA4LIAcNAQsgASAHcg0MIASnIAOnRiEIDA4LIAEgB0YEQCAAIAQgA0EAELQBIQgMDgtBASEIIAFBAkYgB0EDRnEgB0ECRiABQQNGcXINDQJAAkACQAJAAkACQAJAIAFBeUYEQAJAIAcOAgYKAAtBeSEIIAchCSAHQQpqDgQBCwsPBAsgB0F5Rw0GQQAhCCAGIQUgAUEBag4JCwQHDw8PDw8EAQsgAUF5Rw0EIAAgBBCqAiIEQoCAgIBwg0KAgICA4H5SDQEMBAsgAUF2Rw0NIAAgAxCqAiIDQoCAgIBwg0KAgICA4H5RDQMLIAAgBBAMIAAgAxAMQQAhCAwRCyAHQQdHDQYLIAAgBBBlIgRCgICAgHCDQoCAgIDgAFENCyAEIQUgACADEGUiA0KAgICAcINCgICAgOAAUQ0MCyAAIAQgAxCSBSEIDA4LIAYhBSABQQFGDQALIAdBAUcNAQsgA0L\u002F\u002F\u002F\u002F\u002FD4MhAyAEIQUMBAsgASIIQX9HDQAgB0EKaiIBQRFNQQBBASABdEGBiAhxGw0BQX8hCCAHQX5xQXhGDQELIAdBf0cNASAIQX5xQXhGIAhBCmoiAUERTUEAQQEgAXRBgYgIcRtyDQBBfyEHDAELIAAgBEECEJIBIgVCgICAgHCDQoCAgIDgAFENBCAAIANBAhCSASIDQoCAgIBwg0KAgICA4ABSDQEMBQsLIAghCQsgB0F+cUECRiEIIAkhAQsCfyAEQoCAgIBwWgRAQQEgBKcsAAVBAEggCHENARoLQQAhByADQoCAgIBwWgR\u002FIAOnLAAFQQBIBUEACyABQX5xQQJGcQshCCAAIAQQDCAAIAMQDAwECyADIQULIAAgBRAMDAELAkACfAJ8IAFBB0YEQCAJQQAgCUEHRxsNAyAEQoCAgIDAgYD8\u002FwB8vyINIAlBB0YNARogA6e3DAILIAlBB0cgAXINAiAEp7cLIQ0gA0KAgICAwIGA\u002FP8AfL8LIQ4gDSAOYSEIDAILIABBqgEgBCADIAAoAhAoArACESsAIghBAE4NAQsgCkKAgICAMDcDACALQoCAgIAwNwMAQX8PCyAKIAIgCEetQoCAgIAQhDcDAEEAC\u002FQFAgJ+BH8jAEEQayIGJAACQAJAAkACQEEHIAFBEGsiBSkDACICQiCIpyIEIARBB2tBbkkbIgRBB0dBByABQQhrIgcpAwAiA0IgiKciASABQQdrQW5JGyIBQQdHckUEQCAFQoCAgIDAfiACQoCAgIDAgYD8\u002FwB8vyADQoCAgIDAgYD8\u002FwB8v6C9IgJCgICAgMCBgPz\u002FAH0gAkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhs3AwAMAQsgBEF\u002FRyABQX9HcUUEQCAAIAJBAhCSASICQoCAgIBwg0KAgICA4ABRDQIgACADQQIQkgEiA0KAgICAcINCgICAgOAAUQRAIAAgAhAMDAQLQQcgAkIgiKciBCAEQQdrQW5JGyEEQQcgA0IgiKciASABQQdrQW5JGyEBCyAEQXlHIAFBeUdxRQRAIAUgACACIAMQtgIiAjcDAEEAIQEgAkKAgICAcINCgICAgOAAUQ0DDAQLIAAgAhBlIgJCgICAgHCDQoCAgIDgAFENASAAIAMQZSIDQoCAgIBwg0KAgICA4ABRBEAgACACEAwMAwtBByADQiCIpyIBIAFBB2tBbkkbIgFBByACQiCIpyIEIARBB2tBbkkbIgRyRQRAIAUCfiADxCACxHwiAkKAgICACHxC\u002F\u002F\u002F\u002F\u002Fw9YBEAgAkL\u002F\u002F\u002F\u002F\u002FD4MMAQtCgICAgMB+IAK5vSICQoCAgIDAgYD8\u002FwB9IAJC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbCzcDAAwBCyAEQXZHIAFBdkdxRQRAIABBngEgBSACIAMgACgCECgCrAIRIwANAwwBCyAAIAZBCGogAhBtBEAgACADEAwMAwsgACAGIAMQbQ0CIAVCgICAgMB+IAYrAwggBisDAKC9IgJCgICAgMCBgPz\u002FAH0gAkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhs3AwALQQAhAQwCCyAAIAMQDAsgBUKAgICAMDcDACAHQoCAgIAwNwMAQX8hAQsgBkEQaiQAIAELtAMBCH8jAEEQayIEJAAgACAAKQOAARAhIABBEGohAyAAQaABaiEFIAAoAqQBIQEDQCABIAVHBEAgASgCBCEIIAFBGGohB0EAIQIDQCABKAIQIAJKBEAgACAHIAJBA3RqKQMAECEgAkEBaiECDAELCyADIAEgACgCBBEAACAIIQEMAQsLIAAgBTYCpAEgACAAQaABajYCoAEgABCdBSAAKAJUIABB0ABqRgRAQQAhAgNAAkAgACgCRCEBIAIgACgCQE4NACABIAJBGGxqIgEoAgAEQCAAIAEoAgQQxwELIAJBAWohAgwBCwsgAyABIAAoAgQRAAAgAEHkAWoiAUEIahDBBCABQSBqEMEEQQAhAgNAAkAgACgCOCEBIAIgACgCLE4NACABIAJBAnRqKAIAIgFBAXFFBEAgAyABIAAoAgQRAAALIAJBAWohAgwBCwsgAyABIAAoAgQRAAAgAyAAKAI0IAAoAgQRAAAgAyAAKALgASAAKAIEEQAAIAQgAykCCDcDCCAEIAMpAgA3AwAgBCAAIAAoAgQRAAAgBEEQaiQADwtBuogBQajsAEHHD0Hd0wAQAAALjgMBC38jAEEwayIHJAACQCACQoCAgIBwVA0AQRMhBQJAIAKnIgotAAVBBHFFDQAgACgCECgCRCAKLwEGQRhsaigCFCIIRQ0AQQNBEyAIKAIEGyEFC0F\u002FIQkgACAHQSxqIAdBKGogCiAFEH0NACADp0EAIANC\u002F\u002F\u002F\u002F\u002F29WGyEMIAcoAiwhCCAHKAIoIQsgBUEPSyENQQAhBQJAA0AgBSALRwRAAkACQCAMRQ0AIABBACAMIAggBUEDdGooAgQQQyIGRQ0AIAZBAE4NAQwECyANRQRAIAAgB0EIaiIOIAogCCAFQQN0aigCBBBDIgZBAEgNBCAGRQ0BIAcoAgghDyAAIA4QRiAPQQRxRQ0BCyAAIAIgCCAFQQN0aiIGKAIEIAJBABARIgNCgICAgHCDQoCAgIDgAFENAyAGKAIEIQYCfyAEBEAgACABIAYgAxA5DAELIAAgASAGIANBBxAVC0EASA0DCyAFQQFqIQUMAQsLIAAgCCALEFtBACEJDAELIAAgCCALEFsLIAdBMGokACAJC6YBAQF+AkACQAJ+IARBBHEEQEEpIQIgACABEEoMAQtBKCECIAAgARAgCyIBQoCAgIBwg0KAgICA4ABRDQAgACACEIYBIgVCgICAgHCDQoCAgIDgAFENACAAQRAQJCICBEAgAkEANgIMIAIgBEEDcTYCCCACIAE3AwAgBUKAgICAcFQNAiAFpyACNgIgDAILIAAgBRAMCyAAIAEQDEKAgICA4AAPCyAFC8QBAQR\u002FIAGnIgUgAjYCICAFQgA3AiQCQCACKAI8IgZFDQACQCAAIAZBAnQQXCIIRQ0AIAUgCDYCJEEAIQUDQCAFIAIoAjxODQIgAigCJCAFQQN0aiIHLwECIQYCQCAHLQAAIgdBAXEEQCAAIAQgBiAHQQF2QQFxEP8DIgYNAQwDCyADIAZBAnRqKAIAIgYgBigCAEEBajYCAAsgCCAFQQJ0aiAGNgIAIAVBAWohBQwACwALIAAgARAMQoCAgIDgACEBCyABC4IBAQJ+IAAgARApIQICQCABQQBIDQAgACgCECgCOCABQQJ0aigCACkCBCIDp0GAgICAeEYgA0KAgICA8P\u002F\u002F\u002Fz+DUCADQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002Fv39WcSADQoCAgICAgICAQINCgICAgICAgICAf1FyRXINACAAQa\u002FwACACQa3wABCyASECCyACC2QBAn8CQAJAIAFCgICAgHBUDQAgARCUBQ0AQX8hAyAAIAIQMCIERQ0BIAAgBBDEBSECIAAgBBAQIAJCgICAgHCDQoCAgIDgAFENASAAIAFBNyACQQEQFUEASA0BC0EAIQMLIAMLNQACQCACRSABQoCAgIBwVHINACABEJQFDQAgACABQTcgACACEClBARAVQQBODQBBfw8LQQALDAAgACABQbYVELUBC2gCAX8BfgJAIAAgAUHqACABQQAQESIEQoCAgIBwg0KAgICA4ABSBEAgACAEECchAyAAIAFBwQAgAUEAEBEiAUKAgICAcINCgICAgOAAUg0BC0EAIQNCgICAgOAAIQELIAIgAzYCACABCxQBAn4gACABECAhAyAAIAEQDCADC\u002FsBAgR\u002FAX4gACgCyAEiBSgCECIEQTBqIQYgBCAEKAIYIAFxQX9zQQJ0aigCACEEAkADQCAERQ0BIAEgBiAEQQFrIgdBA3RqIgQoAgRHBEAgBCgCAEH\u002F\u002F\u002F8fcSEEDAELCyAFKAIUIAdBA3RqIQUCQCADQQFGDQAgBTUCBEIghkKAgICAwABRBEAgACACEAwgACAEKAIEENEBQX8PCyAELQADQQhxDQAgACACEAwgAEGAgAEgARDnAQ8LIAAgBSACEB1BAA8LIAAgACkDwAEiCCABIAIgCAJ\u002FIAAoAhAoAowBIgMEQEGAgAYgAygCKEEBcQ0BGgtBgIACCxDQAQuKAQEBfwJAIAJCgICAgHCDQoCAgICQf1EgA0KAgICAcINCgICAgJB\u002FUXFFBEAgAEGl5gBBABASDAELIAAgAUESEF4iAUKAgICAcINCgICAgOAAUQ0AIAGnIgQgAz4CJCAEIAI+AiAgACABQdYAQgBBAhAVGiABDwsgACADEAwgACACEAxCgICAgOAACw0AIAAgAUHMjQEQgQMLZwEBfwJAIAFBAE4EQCAAKAIQIgIoAiwgAU0NASACKAI4IAFBAnRqKAIAIgEgASgCAEEBajYCACAAIAFBBBDmAw8LQYaJAUGo7ABB1RdBycAAEAAAC0GQzgBBqOwAQdYXQcnAABAAAAuxAgEEfwJAAkACQAJAIAJCgICAgHBUDQAgAqciAy8BBhDgAUUNACADKAIoIgRFDQAgBCgCECIDQTBqIQUgAyADKAIYQX9zQQJ0QdR5cmooAgAhAwNAIANFDQMgBSADQQFrIgNBA3RqIgYoAgRBygFHBEAgBigCAEH\u002F\u002F\u002F8fcSEDDAELCyABQoCAgIBwVA0AIAQoAhQgA0EDdGopAwAiAkKAgICAcINCgICAgIB\u002FUQ0BCyAAECIMAgsgACACEIgCIQMgAacoAhAiAEEwaiEEIAAgAyAAKAIYcUF\u002Fc0ECdGooAgAhAANAIABFBEBBAA8LIAQgAEEDdGoiBUEIayEAIAMgBUEEaygCAEYEQCAAQQBHDwUgACgCAEH\u002F\u002F\u002F8fcSEADAELAAsACyAAQZ3kAEEAEBILQX8LRAEBfyAAQeQBaiECIABB4AFqIQADfyAAIAIoAgAiAkYEQEEADwsgASACQQRrKAIARgR\u002FIAJBCGsFIAJBBGohAgwBCwsLiQECA38BfgJAIAAoAhAoAowBIgJFDQADQCABQQBMBEADQCACKQMIIgRCgICAgHBUDQMgBKciAS8BBhDgAUUNAyABKAIgIgEvABEiA0GAwABxRQRAIANBgAhxRQ0EIAAgASgCQBAWDwsgAigCACICDQAMAwsACyABQQFrIQEgAigCACICDQALC0EACykBAX8gAkIgiKdBdU8EQCACpyIDIAMoAgBBAWo2AgALIAAgASACEIUEC\u002FQBAwF+An8BfANAAkBBfyEEAkACQAJAQQcgAkIgiKciBSAFQQdrQW5JGw4IAAAAAAICAwECCyACxCEDQQAhBAwCC0EAIQQgAkKAgICAwIGA\u002FP8AfCICQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWDQFCgICAgICAgICAfyEDIAK\u002FIgZEAAAAAAAA4MNjDQFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FACEDIAZEAAAAAAAA4ENkDQEgBplEAAAAAAAA4ENjBEAgBrAhAwwCC0KAgICAgICAgIB\u002FIQMMAQsgACACEJYBIgJCgICAgHCDQoCAgIDgAFINAQsLIAEgAzcDACAEC+YBAgN\u002FAXwDQAJAQX8hBAJAAkACQEEHIAJCIIinIgUgBUEHa0FuSRsOCAAAAAACAgMBAgsgAqchA0EAIQQMAgtBACEEIAJCgICAgMCBgPz\u002FAHwiAkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVgRADAILQYCAgIB4IQMgAr8iBkQAAAAAAADgwWMNAUH\u002F\u002F\u002F\u002F\u002FByEDIAZEAADA\u002F\u002F\u002F\u002F30FkDQEgBplEAAAAAAAA4EFjBEAgBqohAwwCC0GAgICAeCEDDAELIAAgAhCWASICQoCAgIBwg0KAgICA4ABSDQELCyABIAM2AgAgBAttAAJAAkACQAJAAkAgAkEEdkEDcUEBaw4DAAECAwsgASgCACICBEAgACACrUKAgICAcIQQIQsgASgCBCIBRQ0DIAAgAa1CgICAgHCEECEPCyAAIAEoAgAQ5QEPCyABEOAFDwsgACABKQMAECELC\u002FUBAQl\u002FQX8hAiABIAFBAWtxRQRAIABBEGoiCCABQQJ0IgMgACgCABEDACIFBH8gBUEAIAMQLCEGIAFB\u002F\u002F\u002F\u002F\u002FwNqQf\u002F\u002F\u002F\u002F8DcSEJIAAoAjQhBwNAIAQgACgCJE9FBEAgByAEQQJ0aigCACECA0AgAgRAIAAoAjggAkECdGooAgAiAygCDCEKIAMgBiAJIAMoAghxQQJ0aiIDKAIANgIMIAMgAjYCACAKIQIMAQsLIARBAWohBAwBCwsgCCAHIAAoAgQRAAAgACABQQF0NgIwIAAgATYCJCAAIAY2AjRBAAVBfwsPC0GbhwFBqOwAQYcUQe3HABAAAAu0AwEHfyADIAEoAgAiBSgCHEEDbEECbSIEIAMgBEobIQcCQCACBEAgACACKAIUIAdBA3QQxQIiA0UNASACIAM2AhQLIAUoAhhBAWohAwNAIAMiAkEBdCEDIAIgB0kNAAsgACACQQJ0IgYgB0EDdGpBMGoQJCIIRQ0AIAUoAggiAyAFKAIMIgQ2AgQgBCADNgIAIAVCADcCCCAGIAhqIAUgBSgCIEEDdEEwahAeIQQgACgCECIDKAJQIgkgBEEIaiIKNgIEIAQgA0HQAGo2AgwgBCAJNgIIIAMgCjYCUAJAIAQoAhhBAWogAkcEQCAEIAJBAWsiCTYCGEEAIQMgCEEAIAYQLBogBEEwaiECA0AgAyAEKAIgTw0CAkAgAigCBCIGRQRAIANBAWohAwwBCyACIAIoAgBBgICAYHEgBCAGIAlxQX9zQQJ0aiIGKAIAQf\u002F\u002F\u002Fx9xcjYCACAGIANBAWoiAzYCAAsgAkEIaiECDAALAAsgCCAFIAJBAnRrIAYQHhoLIAAoAhAiAEEQaiAFIAUoAhhBf3NBAnRqIAAoAgQRAAAgASAENgIAIAQgBzYCHEEADwtBfwvbAQEDfwJAIAAgASgCGEEBakECdCICIAEoAhxBA3RqQTBqIgMQJCIERQRAQQAhAgwBCyAEIAEgASgCGEF\u002Fc0ECdGogAxAeIAJqIgJBATYCACAAKAIQIQEgAkECOgAEIAEoAlAiAyACQQhqIgQ2AgQgAiABQdAAajYCDCACIAM2AgggASAENgJQQQAhASACQQA6ABAgAigCLCIDBEAgAyADKAIAQQFqNgIACyACQTBqIQMDQCABIAIoAiBPDQEgACADKAIEEBYaIANBCGohAyABQQFqIQEMAAsACyACC2YBA38jAEEQayIDJAAgACABKAIkIAIgASgCIEEDbEEBdiIAIAAgAkgbIgBBA3QgA0EMahCnASICBH8gAygCDCEEIAEgAjYCJCABIARBA3YgAGo2AiBBAAVBfwshBSADQRBqJAAgBQtsAgN\u002FAXwjAEEQayICJAACfyABQiCIpyIDBEBBACADQQtqQRJJDQEaC0F\u002FIAAgAkEIaiABEEINABogAisDCCIFvUKAgICAgICA+P8Ag0KAgICAgICA+P8AUiAFnCAFYXELIQQgAkEQaiQAIAQL9QICA38BfiMAQRBrIgMkAAJAAkACQAJAAkADQAJAQoCAgIDAfiEGAkACQAJAQQcgAUIgiKciBCAEQQdrQW5JG0EKag4SAAYFAwYGBgYGAgcBAQkGBgcHBgsgAkEBRg0GIAAgARAMIABB6zRBABASDAcLIAFC\u002F\u002F\u002F\u002F\u002Fw+DIQYMBwtCgICAgOAAIQYgACABQQEQkgEiAUKAgICAcINCgICAgOAAUg0BDAYLCyAAIANBCGogARDfASECIAAgARAMIAJFDQMgAyACIAIQ\u002FgEiBGoiBTYCDEIAIQYCQCAEIAMoAghGDQAgACAFIANBDGpBAEEEEIACIgZCgICAgHCDQoCAgIDgAFENACADIAMoAgwQ\u002FgEgAygCDGoiBDYCDCADKAIIIAQgAmtGDQAgACAGEAxCgICAgMB+IQYLIAAgAhAxDAQLIAAgARAMIABBizVBABASDAILIAAgARAMDAILIAEhBgwBC0KAgICA4AAhBgsgA0EQaiQAIAYLsgEBAX8CQANAAkACQAJAAkACQEEHIAJCIIinIgMgA0EHa0FuSRsiA0EKag4EAQQEAgALAkAgA0EBag4DAwQABAsgACgC2AEgARC7ASABIALEEJwCGiABDwsgAqdBBGoPCyAAIAIQnwUiAkKAgICAcINCgICAgOAAUg0CDAMLIAAgAkEBEJIBIgJCgICAgHCDQoCAgIDgAFINAQwCCwsgACACEAwgAEHdGUEAEBJBAA8LQQAL7gEBAXwgAQJ\u002FAkADQAJAAkACQEEHIAJCIIinIgEgAUEHa0FuSRsOCAAAAAACAgIBAgtBACEAQf8BIAKnIgEgAUH\u002FAU4bIgFBACABQQBKGwwEC0EAIQAgAkKAgICAwIGA\u002FP8AfCICQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWDQIgAr8iA0QAAAAAAAAAAGMNAkH\u002FASADRAAAAAAA4G9AZA0DGgJ\u002FIAOeIgOZRAAAAAAAAOBBYwRAIAOqDAELQYCAgIB4CwwDCyAAIAIQlgEiAkKAgICAcINCgICAgOAAUg0AC0F\u002FIQALQQALNgIAIAALiQYCA38BfiMAQRBrIggkAAJAAkACQAJAAkAgAS0ABSIHQQRxRQ0AIAEvAQYiCUECRgRAAkAgB0EIcQRAAkAgAkEASARAIAggAkH\u002F\u002F\u002F\u002F\u002FB3EiCTYCDCAJIAEoAihHDQEgB0EBcUUNBiAGQYAwcSAGIAZBCHZxQQdxQQdHcg0BIANCIIinQXVPBEAgA6ciAiACKAIAQQFqNgIACyAAIAEgAyAGEIYEIQcMCQsgACAIQQxqIAIQpQFFDQQLQX8hByAAIAEQjgNFDQEMBwsgACAIQQxqIAIQpQFFDQILIAAgCEEIaiABKAIUIgkpAwAQdRogCCgCDEEBaiIHIAgoAghNDQEgASgCEC0AM0EIcUUEQCAAIAZBMBDnASEHDAYLIAggBzYCCCAAIAkgB0EATgR+IAetBUKAgICAwH4gB7i9IgpCgICAgMCBgPz\u002FAH0gCkKAgICAgICA+P8AVhsLEB0MAQsgCUEVa0H\u002F\u002FwNxQQpNBEAgACACEJMDIgdFDQEgB0EASA0EIAAgBkH7DRB8IQcMBQsgBkGAgAhxDQAgACgCECgCRCAJQRhsaigCFCIHRQ0AIAGtQoCAgIBwhCEKIAcoAgwiBwRAIAAgCiACIAMgBCAFIAYgBxEiACEHDAULIAAgChCXASIHQQBIDQMgB0UNAQsgAS0ABUEBcQ0BCyAAIAZBhdgAEHwhBwwCCyAAIAEgAiAGQQVxQRByIAZBB3EgBkGAMHEiAhsQdyIBRQ0AIAIEQCABQQA2AgACQCAGQYAQcUUNACAAIAQQNUUNACAEpyECIARCIIinQXVPBEAgAiACKAIAQQFqNgIACyABIAI2AgALIAFBADYCBEEBIQcgBkGAIHFFDQIgACAFEDVFDQIgBachACAFQiCIp0F1TwRAIAAgACgCAEEBajYCAAsgASAANgIEDAILAkAgBkGAwABxBEAgA0IgiKdBdU8EQCADpyIAIAAoAgBBAWo2AgALIAEgAzcDAAwBCyABQoCAgIAwNwMAC0EBIQcMAQtBfyEHCyAIQRBqJAAgBwu2BQEKfyMAQRBrIgUkAAJ\u002FQX8gACAFQQxqIAJBABC+Ag0AGiABKAIQLQAzQQhxRQRAIAAgA0EwEOcBDAELIAEtAAVBCHEEQCAFKAIMIgMgASgCKCIHSQRAIAMhBANAIAQgB0ZFBEAgACABKAIkIARBA3RqKQMAEAwgBEEBaiEEDAELCyABIAM2AigLIAEoAhQgA0EATgR+IAOtBUKAgICAwH4gA7i9IgJCgICAgMCBgPz\u002FAH0gAkKAgICAgICA+P8AVhsLNwMAQQEMAQsgACAFQQRqIAEoAhQpAwAQdRoCQAJAAkACQCAFKAIEIgYgBSgCDCIHSwRAIAEoAhAiCigCICIEIAYgB2tPBEAgBSgCBCEEA0AgBiAHTQ0FIAAgASAAIAZBAWsQ7AUiBhCEBCEMIAAgBhAQIAxFDQMgBEEBayIEIQYMAAsACyAFIAc2AgQgByEJIApBMGoiBiEIA0AgBCALTARAIAUgCTYCBEEAIQgDQCAEIAhMDQUCQCAGKAIEIgRFDQAgACAFQQhqIAQQpQFFDQAgBSgCCCAJSQ0AIAAgASAGKAIEEIQEGiABKAIQIgogCEEDdGpBMGohBgsgBkEIaiEGIAhBAWohCCAKKAIgIQQMAAsABQJAIAgoAgQiBEUNACAAIAVBCGogBBClAUUNACAFKAIIIgQgCUkNACAJIARBAWogCC0AA0EEcRshCQsgCEEIaiEIIAtBAWohCyAKKAIgIQQMAQsACwALIAUgBzYCBCAHIQYMAwsgBSAENgIECyAFKAIEIQYMAQsgBSAENgIECyAAIAEoAhQgBkEATgR+IAatBUKAgICAwH4gBri9IgJCgICAgMCBgPz\u002FAH0gAkKAgICAgICA+P8AVhsLEB1BASAFKAIEIAdNDQAaIAAgA0H72AAQfAshDSAFQRBqJAAgDQu5BAIFfwJ+IwBBEGsiBSQAAkAgAUEASARAIAFB\u002F\u002F\u002F\u002F\u002FwdxrSEHDAELAkAgASAAKAIQIgIoAixJBEACQCACKAI4IAFBAnRqKAIAIgEpAgQiB0KAgICAgICAgECDQoCAgICAgICAwABSDQAgB6dB\u002F\u002F\u002F\u002F\u002FwdxIQQCQCAHQoCAgIAIg1BFBEAgBEUNAgJAIAEvARAiAkEtRwRAIAFBEGohAwwBCyABQRJqIQMgAS8BEiECIARBAkcNAEKAgICAwP7\u002FAyEHIAJBMEYNBgsgAkE6a0F1Sw0BIAVB+QA7AQ4gBUHpgNADNgEKIAVC7oCYg5CNgDc3AQIgAkHJAEcgASAEQQF0akEQaiADa0EQR3INAiADQQJqIAVBAmpBDhBoRQ0BDAILIARFDQECQCABLQAQIgJBLUcEQCABQRBqIQMMAQsgAUERaiEDIAEtABEhAiAEQQJHDQBCgICAgMD+\u002FwMhByACQf8BcUEwRg0FCyACQf8BcSICQTprQXVLDQAgAkHJAEcgASAEakEQaiADa0EIR3INASADQQFqQdILQQcQaA0BCyABIAEoAgBBAWo2AgAgACABrUKAgICAkH+EEJYBIghCgICAgHCDQoCAgIDgAFENAiAAIAgQJSIHQoCAgIBwg0KAgICA4ABRBEAgACAIEAwMBAsgASAHpxC8AiEGIAAgBxAMIAZFDQIgACAIEAwLQoCAgIAwIQcMAgtBps4AQajsAEHgGEGTgwEQAAALIAghBwsgBUEQaiQAIAcLDQAgACgCAEF8cRCeAwufAgIEfwF+AkAgACACEDVFDQAgAqciBS8BBkEORgRAIAAgASAFKAIgKQMAEOIFDwsgAUKAgICAcFQNAAJAIAAgAkE8IAJBABARIgdC\u002F\u002F\u002F\u002F\u002F29YBEBBfyEEIAdCgICAgHCDQoCAgIDgAFENASAAQcweQQAQEgwBCyABpyEDIAenIQYDQAJAIAMoAhAoAiwiBUUEQCADLwEGQSxHDQMgAyADKAIAQQFqNgIAIAOtQoCAgIBwhCEBAkADQCAAIAEQwgIiAUKAgICAcIMiAkKAgICAIFENBSACQoCAgIDgAFENASABpyAGRgRAIAAgARAMDAQLIAAQdkUNAAsgACABEAwLQX8hBAwDCyAFIgMgBkcNAQsLQQEhBAsgACAHEAwLIAQLowECAn8CfiMAQRBrIgMkACADIAE3AwgCfwJAIAJCgICAgHBaBEAgACACQdQBIAJBABARIgZCgICAgHCDIgVCgICAgCBRIAVCgICAgDBRckUEQEF\u002FIAVCgICAgOAAUQ0DGiAAIAAgBiACQQEgA0EIahA2ECcMAwsgACACEDUNAQsgAEH84gBBABASQX8MAQsgACABIAIQ4QULIQQgA0EQaiQAIAQLmgUBCX8jAEEQayICJAAgAkEANgIMIAJCADcDACACQX82AggCQAJAIAJBwAJByJsBKAIAEQMAIgQEQCAEQQBBwAIQLCIAQdCbASkCADcCCCAAQcibASkCADcCACAAKAIMRQRAIABBATYCDAsgACACKQMANwMQIAAgAikDCDcDGCAAQYCAEDYCbCAAQeQBaiIBQQhqQQBBNBAsGiABIAA2AgAgAUECNgIEIABBAzYCuAIgAEEENgK0AiAAQQU2AqwCIABBBjYCqAIgAEEHNgKkAiAAQQg2AqACIAAgAEGgAWoiATYCpAEgACABNgKgASAAQQA6AGggACAAQdgAaiIBNgJcIAAgATYCWCAAIABB0ABqIgE2AlQgACABNgJQIAAgAEHIAGoiATYCTCAAIAE2AkggAEEANgI0IABBADYCJCAAQQA2AjwgAEIANwMoAkAgAEGAAhDVBQ0AIABBEGohCEHwngEhA0EBIQEDQCABQdgBRwRAIAAgAxA9IgVBABDoBSIGBH8gBkEQaiADIAUQHiAFakEAOgAAIAAgBkEEQQNBASABQcoBSxsgAUHKAUYbEMcCBUEAC0UNAiABQQFqIQEgAyAFakEBaiEDDAELCyAAQfCWAUEBQSsQgQRBAEgNACAAKAJEIgFBCTYC+AIgAUEKNgKwAiABQaybATYCnAIgAUGQmwE2AowBIAFB9JoBNgLUASABQQs2ApADIAFBDDYC4AIgAEEANgLcASAAQoSAgICAAjcC1AEgCEHAACAAKAIAEQMAIgENAiAAQQA2AuABCyAAEMAFC0EAIQQMAQsgAUEAQcAAECwhASAAQoCAgIAgNwOAASAAQYCAcDYCeCAAQoCAEDcDcCAAIAE2AuABCyACQRBqJAAgBAuBAQIBfgF\u002FIwBBgAJrIgYkACAGQYACIAIgAxDJAhoCQCAAIAAgAUEDdGopA1hBAxBHIgVCgICAgHCDQoCAgIDgAFEEQEKAgICAICEFDAELIAAgBUEzIAAgBhBgQQMQFRoLIAQEQCAAIAVBAEEAQQAQtAILIAAgBRCYASAGQYACaiQAC54DAgR\u002FAX4jAEEQayIGJAACQAJAAkACQCACQQBIBEAgBiACQf\u002F\u002F\u002F\u002F8HcTYCACABQcAAQcURIAYQSBoMAQsgACgCLCACTQ0CIAJFBEAgAUGhgAEoAAA2AAMgAUGegAEoAAA2AAAMAQsgACgCOCACQQJ0aigCACIEQQFxDQMgASECAkAgBEUNACAEKQIEIgdCgICAgAiDUARAIARBEGohAyAHpyEFQQAhAkEAIQADQCACIAVGRQRAIAAgAiADai0AAHIhACACQQFqIQIMAQsLIABBgAFIDQMLIARBEGohBUEAIQAgASECA0AgACAHp0H\u002F\u002F\u002F\u002F\u002FB3FPDQECfyAHQoCAgIAIg1BFBEAgBSAAQQF0ai8BAAwBCyAAIAVqLQAACyEDIAIgAWtBOUoNAQJ\u002FIANB\u002FwBNBEAgAiADOgAAIAJBAWoMAQsgAiADEN0CIAJqCyECIABBAWohACAEKQIEIQcMAAsACyACQQA6AAALIAEhAwsgBkEQaiQAIAMPC0GmzgBBqOwAQeYXQbLxABAAAAtBo4kBQajsAEHwF0Gy8QAQAAALVAECfyAAQQE6AGggAEHYAGohAgJAA0AgAiAAKAJcIgFHBEAgAUEIayIBKAIADQIgACABEIsFDAELCyAAQQA6AGgPC0GkhgFBqOwAQfEqQegWEAAAC8QDAQJ\u002FIAAoAhAiAygCFEEwaiADKAJsSwRAIAMQnQUgAyADKAIUIgNBAXYgA2o2AmwLAkAgAEEwECQiAwRAIANBADYCICADQQA2AhggA0EBOgAFIAMgAjsBBiADIAE2AhAgAyAAIAEoAhxBA3QQJCIENgIUIAQNASAAKAIQIgJBEGogAyACKAIEEQAACyAAKAIQIAEQjAJCgICAgOAADwsCQAJAAkACQAJAAkACQAJAIAJBAWsOIQcABgQEBAQCBgQGAQYGBgYGBQYGAgICAgICAgICAgIDBAYLIANBADYCKCADQgA3AyAgAyADLQAFQQxyOgAFIAEgACgCJEcEfyAAIANBMEEKEHcFIAQLQgA3AwAMBgsgBEKAgICAMDcDAAwFCyADQgA3AiQgAyADLQAFQQxyOgAFDAQLIANCADcCJAwDCyADQoCAgIAwNwMgDAELIANCADcDIAsgACgCECgCRCACQRhsaigCFEUNACADIAMtAAVBBHI6AAULIANBATYCACAAKAIQIQAgA0EAOgAEIAAoAlAiASADQQhqIgI2AgQgAyAAQdAAajYCDCADIAE2AgggACACNgJQIAOtQoCAgIBwhAtEACAAQRBqIAEgAnQgAmtBEWogACgCABEDACIABEAgAEEANgIMIABBATYCACAAIAFB\u002F\u002F\u002F\u002F\u002FwdxIAJBH3RyrTcCBAsgAAv1AQIBfwJ+IwBB0ABrIgMkAAJAAn4gAUEASARAIAMgAUH\u002F\u002F\u002F\u002F\u002FB3E2AgAgA0EQaiIBQcAAQcURIAMQSBogACABEGAMAQsgACgCECIAKAIsIAFNDQECQAJAIAAoAjgiACABQQJ0aigCACIBKQIEIgRCgICAgICAgIBAg0KAgICAgICAgMAAUQ0AIAJFDQEgBKdBgICAgHhHDQAgACgCvAEhAQsgASABKAIAQQFqNgIAIAGtQoCAgICQf4QMAQsgASABKAIAQQFqNgIAIAGtQoCAgICAf4QLIQUgA0HQAGokACAFDwtBps4AQajsAEGfGEH8zwAQAAALqwECAX4CfyABKQIEQoCAgIAIgyEDIAAtAAdBgAFxRQRAIANQBEAgAEEQaiABQRBqIAIQaA8LQQAgAUEQaiAAQRBqIAIQmgVrDwsgAUEQaiEEIABBEGohACADUARAIAAgBCACEJoFDwsgAkEAIAJBAEobIQVBACEBA0AgASAFRgRAQQAPCyABQQF0IQIgAUEBaiEBIAAgAmovAQAgAiAEai8BAGsiAkUNAAsgAgtsAgJ\u002FAX4gAEEQaiECIAApAgQiBKchAAJAIARCgICAgAiDUEUEQCAAQf\u002F\u002F\u002F\u002F8HcSEDQQAhAANAIAAgA0YNAiACIABBAXRqLwEAIAFBhwJsaiEBIABBAWohAAwACwALIAIgACABEO4FIQELIAELcAICfwF+IwBBEGsiAiQAAkAgAUEATgRAIAFBgICAgHhyIQMMAQsgAiABNgIAIAJBBWoiAUELQcURIAIQSBogACABEGAiBEKAgICAcINCgICAgOAAUQ0AIAAoAhAgBKdBARDHAiEDCyACQRBqJAAgAwvTAQIFfwF+AkAgASkCBCIHp0H\u002F\u002F\u002F\u002F\u002FB3EiBEELa0F2SQ0AAn8gB0KAgICACINQIgZFBEAgAS8BEAwBCyABLQAQCyIDQTBrIgJBCUsNAAJ\u002FAkAgA0EwRwRAIAFBEGohBUEBIQEDQCABIARGDQICfyAGRQRAIAUgAUEBdGovAQAMAQsgASAFai0AAAtBMGsiA0EJSw0EIAFBAWohASADrSACrUIKfnwiB6chAiAHQoCAgIAQVA0ACwwDC0EAIgIgBEEBRw0BGgsgACACNgIAQQELDwtBAAssAQF\u002FA0AgASADRkUEQCAAIANqLQAAIAJBhwJsaiECIANBAWohAwwBCwsgAgteAQF\u002FAkAgAUKAgICAcFQNACABpyIELwEGIANHDQAgBCgCICIERQ0AIAQpAwAiAUKAgICAYFoEQCAAIAGnIAIRAAALIAQpAwgiAUKAgICAYFQNACAAIAGnIAIRAAALC0oBAX8CQCABQoCAgIBwVA0AIAGnIgMvAQYgAkcNACADKAIgIgNFDQAgACADKQMAECEgACADKQMIECEgAEEQaiADIAAoAgQRAAALCzgBAX8gAEEwayIEQQpPBH8gAEHBAGsgA00EQCAAQTdrDwsgAiAAQdcAayAAQeEAayABTxsFIAQLC6IDAQJ\u002FIAAgASgCBBAQA0AgASgCECEDIAIgASgCFE5FBEAgACADIAJBA3RqKAIAEBAgAkEBaiECDAELCyAAKAIQIgJBEGogAyACKAIEEQAAQQAhAgNAAkAgASgCHCEDIAIgASgCIE4NACADIAJBFGxqIgMoAghFBEAgACgCECADKAIEEOUBCyAAIAMoAhAQECAAIAMoAgwQECACQQFqIQIMAQsLIAAoAhAiAkEQaiADIAIoAgQRAAAgACgCECICQRBqIAEoAiggAigCBBEAAEEAIQIDQCABKAI0IQMgAiABKAI4TkUEQCAAIAMgAkEMbGooAgQQECACQQFqIQIMAQsLIAAoAhAiAkEQaiADIAIoAgQRAAAgACgCECICQRBqIAEoAmQgAigCBBEAACAAIAEpA0AQDCAAIAEpA0gQDCAAIAEpA6gBEAwgACABKQOwARAMIAAgASkDiAEQDCAAIAEpA5ABEAwgACABKQOYARAMIAEoAggiAiABKAIMIgM2AgQgAyACNgIAIAFCADcCCCAAKAIQIgBBEGogASAAKAIEEQAAC9IDAgJ+An8jAEEgayIEJAACQCABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDIgNCgICAgICAwIA8fSADQoCAgICAgMD\u002FwwB9VARAIAFCBIYgAEI8iIQhAyAAQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FD4MiAEKBgICAgICAgAhaBEAgA0KBgICAgICAgMAAfCECDAILIANCgICAgICAgIBAfSECIABCgICAgICAgIAIUg0BIAIgA0IBg3whAgwBCyAAUCADQoCAgICAgMD\u002F\u002FwBUIANCgICAgICAwP\u002F\u002FAFEbRQRAIAFCBIYgAEI8iIRC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwODQoCAgICAgID8\u002FwCEIQIMAQtCgICAgICAgPj\u002FACECIANC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002Fv\u002F\u002FDAFYNAEIAIQIgA0IwiKciBUGR9wBJDQAgBEEQaiAAIAFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP4NCgICAgICAwACEIgIgBUGB9wBrEGIgBCAAIAJBgfgAIAVrEI0CIAQpAwhCBIYgBCkDACIAQjyIhCECIAQpAxAgBCkDGIRCAFKtIABC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Pg4QiAEKBgICAgICAgAhaBEAgAkIBfCECDAELIABCgICAgICAgIAIUg0AIAJCAYMgAnwhAgsgBEEgaiQAIAIgAUKAgICAgICAgIB\u002Fg4S\u002FC6oPAgV\u002FD34jAEHQAmsiBSQAIARC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP4MhCiACQv\u002F\u002F\u002F\u002F\u002F\u002F\u002Fz+DIQsgAiAEhUKAgICAgICAgIB\u002FgyEMIARCMIinQf\u002F\u002FAXEhCAJAAkAgAkIwiKdB\u002F\u002F8BcSIJQf\u002F\u002FAWtBgoB+TwRAIAhB\u002F\u002F8Ba0GBgH5LDQELIAFQIAJC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAIMiDUKAgICAgIDA\u002F\u002F8AVCANQoCAgICAgMD\u002F\u002FwBRG0UEQCACQoCAgICAgCCEIQwMAgsgA1AgBEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8AgyICQoCAgICAgMD\u002F\u002FwBUIAJCgICAgICAwP\u002F\u002FAFEbRQRAIARCgICAgICAIIQhDCADIQEMAgsgASANQoCAgICAgMD\u002F\u002FwCFhFAEQCADIAJCgICAgICAwP\u002F\u002FAIWEUARAQgAhAUKAgICAgIDg\u002F\u002F8AIQwMAwsgDEKAgICAgIDA\u002F\u002F8AhCEMQgAhAQwCCyADIAJCgICAgICAwP\u002F\u002FAIWEUARAQgAhAQwCCyABIA2EUARAQoCAgICAgOD\u002F\u002FwAgDCACIAOEUBshDEIAIQEMAgsgAiADhFAEQCAMQoCAgICAgMD\u002F\u002FwCEIQxCACEBDAILIA1C\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP1gEQCAFQcACaiABIAsgASALIAtQIgYbeSAGQQZ0rXynIgZBD2sQYkEQIAZrIQYgBSkDyAIhCyAFKQPAAiEBCyACQv\u002F\u002F\u002F\u002F\u002F\u002F\u002Fz9WDQAgBUGwAmogAyAKIAMgCiAKUCIHG3kgB0EGdK18pyIHQQ9rEGIgBiAHakEQayEGIAUpA7gCIQogBSkDsAIhAwsgBUGgAmogCkKAgICAgIDAAIQiEkIPhiADQjGIhCICQgBCgICAgLDmvIL1ACACfSIEQgAQYSAFQZACakIAIAUpA6gCfUIAIARCABBhIAVBgAJqIAUpA5gCQgGGIAUpA5ACQj+IhCIEQgAgAkIAEGEgBUHwAWogBEIAQgAgBSkDiAJ9QgAQYSAFQeABaiAFKQP4AUIBhiAFKQPwAUI\u002FiIQiBEIAIAJCABBhIAVB0AFqIARCAEIAIAUpA+gBfUIAEGEgBUHAAWogBSkD2AFCAYYgBSkD0AFCP4iEIgRCACACQgAQYSAFQbABaiAEQgBCACAFKQPIAX1CABBhIAVBoAFqIAJCACAFKQO4AUIBhiAFKQOwAUI\u002FiIRCAX0iAkIAEGEgBUGQAWogA0IPhkIAIAJCABBhIAVB8ABqIAJCAEIAIAUpA6gBIAUpA6ABIg0gBSkDmAF8IgQgDVStfCAEQgFWrXx9QgAQYSAFQYABakIBIAR9QgAgAkIAEGEgBiAJIAhraiEGAn8gBSkDcCITQgGGIg4gBSkDiAEiD0IBhiAFKQOAAUI\u002FiIR8IhBC5+wAfSIUQiCIIgIgC0KAgICAgIDAAIQiFUIBhiIWQiCIIgR+IhEgAUIBhiINQiCIIgogECAUVq0gDiAQVq0gBSkDeEIBhiATQj+IhCAPQj+IfHx8QgF9IhNCIIgiEH58Ig4gEVStIA4gDiATQv\u002F\u002F\u002F\u002F8PgyITIAFCP4giFyALQgGGhEL\u002F\u002F\u002F\u002F\u002FD4MiC358Ig5WrXwgBCAQfnwgBCATfiIRIAsgEH58Ig8gEVStQiCGIA9CIIiEfCAOIA4gD0IghnwiDlatfCAOIA4gFEL\u002F\u002F\u002F\u002F\u002FD4MiFCALfiIRIAIgCn58Ig8gEVStIA8gDyATIA1C\u002Fv\u002F\u002F\u002Fw+DIhF+fCIPVq18fCIOVq18IA4gBCAUfiIYIBAgEX58IgQgAiALfnwiCyAKIBN+fCIQQiCIIAsgEFatIAQgGFStIAQgC1atfHxCIIaEfCIEIA5UrXwgBCAPIAIgEX4iAiAKIBR+fCIKQiCIIAIgClatQiCGhHwiAiAPVK0gAiAQQiCGfCACVK18fCICIARUrXwiBEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAFgEQCAWIBeEIRUgBUHQAGogAiAEIAMgEhBhIAFCMYYgBSkDWH0gBSkDUCIBQgBSrX0hCkIAIAF9IQsgBkH+\u002FwBqDAELIAVB4ABqIARCP4YgAkIBiIQiAiAEQgGIIgQgAyASEGEgAUIwhiAFKQNofSAFKQNgIg1CAFKtfSEKQgAgDX0hCyABIQ0gBkH\u002F\u002FwBqCyIGQf\u002F\u002FAU4EQCAMQoCAgICAgMD\u002F\u002FwCEIQxCACEBDAELAn4gBkEASgRAIApCAYYgC0I\u002FiIQhASAEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002Fz+DIAatQjCGhCEKIAtCAYYMAQsgBkGPf0wEQEIAIQEMAgsgBUFAayACIARBASAGaxCNAiAFQTBqIA0gFSAGQfAAahBiIAVBIGogAyASIAUpA0AiAiAFKQNIIgoQYSAFKQM4IAUpAyhCAYYgBSkDICIBQj+IhH0gBSkDMCIEIAFCAYYiDVStfSEBIAQgDX0LIQQgBUEQaiADIBJCA0IAEGEgBSADIBJCBUIAEGEgCiACIAIgAyAEIAJCAYMiBHwiA1QgASADIARUrXwiASASViABIBJRG618IgJWrXwiBCACIAIgBEKAgICAgIDA\u002F\u002F8AVCADIAUpAxBWIAEgBSkDGCIEViABIARRG3GtfCICVq18IgQgAiAEQoCAgICAgMD\u002F\u002FwBUIAMgBSkDAFYgASAFKQMIIgNWIAEgA1Ebca18IgEgAlStfCAMhCEMCyAAIAE3AwAgACAMNwMIIAVB0AJqJAALwAECAX8CfkF\u002FIQMCQCAAQgBSIAFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAIMiBEKAgICAgIDA\u002F\u002F8AViAEQoCAgICAgMD\u002F\u002FwBRGw0AIAJC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAIMiBUKAgICAgIDA\u002F\u002F8AViAFQoCAgICAgMD\u002F\u002FwBScQ0AIAAgBCAFhIRQBEBBAA8LIAEgAoNCAFkEQCABIAJSIAEgAlNxDQEgACABIAKFhEIAUg8LIABCAFIgASACVSABIAJRGw0AIAAgASAChYRCAFIhAwsgAwtAAQN\u002FIABB4AFqIQQgACgC5AEhAwNAIAQgAyICRwRAIAIoAgQhAyABBEAgAi0ATQ0CCyAAIAJBCGsQ8gUMAQsLC7QLAQZ\u002FIAAgAWohBQJAAkAgACgCBCICQQFxDQAgAkECcUUNASAAKAIAIgIgAWohAQJAAkACQCAAIAJrIgBB2N4EKAIARwRAIAAoAgwhAyACQf8BTQRAIAJBA3YhAiAAKAIIIgQgA0cNAkHE3gRBxN4EKAIAQX4gAndxNgIADAULIAAoAhghBiAAIANHBEBB1N4EKAIAGiAAKAIIIgIgAzYCDCADIAI2AggMBAsgACgCFCIEBH8gAEEUagUgACgCECIERQ0DIABBEGoLIQIDQCACIQcgBCIDQRRqIQIgAygCFCIEDQAgA0EQaiECIAMoAhAiBA0ACyAHQQA2AgAMAwsgBSgCBCICQQNxQQNHDQNBzN4EIAE2AgAgBSACQX5xNgIEIAAgAUEBcjYCBCAFIAE2AgAPCyAEIAM2AgwgAyAENgIIDAILQQAhAwsgBkUNAAJAIAAoAhwiAkECdEH04ARqIgQoAgAgAEYEQCAEIAM2AgAgAw0BQcjeBEHI3gQoAgBBfiACd3E2AgAMAgsgBkEQQRQgBigCECAARhtqIAM2AgAgA0UNAQsgAyAGNgIYIAAoAhAiAgRAIAMgAjYCECACIAM2AhgLIAAoAhQiAkUNACADIAI2AhQgAiADNgIYCwJAAkACQAJAIAUoAgQiAkECcUUEQEHc3gQoAgAgBUYEQEHc3gQgADYCAEHQ3gRB0N4EKAIAIAFqIgE2AgAgACABQQFyNgIEIABB2N4EKAIARw0GQczeBEEANgIAQdjeBEEANgIADwtB2N4EKAIAIAVGBEBB2N4EIAA2AgBBzN4EQczeBCgCACABaiIBNgIAIAAgAUEBcjYCBCAAIAFqIAE2AgAPCyACQXhxIAFqIQEgBSgCDCEDIAJB\u002FwFNBEAgAkEDdiECIAUoAggiBCADRgRAQcTeBEHE3gQoAgBBfiACd3E2AgAMBQsgBCADNgIMIAMgBDYCCAwECyAFKAIYIQYgAyAFRwRAQdTeBCgCABogBSgCCCICIAM2AgwgAyACNgIIDAMLIAUoAhQiBAR\u002FIAVBFGoFIAUoAhAiBEUNAiAFQRBqCyECA0AgAiEHIAQiA0EUaiECIAMoAhQiBA0AIANBEGohAiADKAIQIgQNAAsgB0EANgIADAILIAUgAkF+cTYCBCAAIAFBAXI2AgQgACABaiABNgIADAMLQQAhAwsgBkUNAAJAIAUoAhwiAkECdEH04ARqIgQoAgAgBUYEQCAEIAM2AgAgAw0BQcjeBEHI3gQoAgBBfiACd3E2AgAMAgsgBkEQQRQgBigCECAFRhtqIAM2AgAgA0UNAQsgAyAGNgIYIAUoAhAiAgRAIAMgAjYCECACIAM2AhgLIAUoAhQiAkUNACADIAI2AhQgAiADNgIYCyAAIAFBAXI2AgQgACABaiABNgIAIABB2N4EKAIARw0AQczeBCABNgIADwsgAUH\u002FAU0EQCABQXhxQezeBGohAgJ\u002FQcTeBCgCACIDQQEgAUEDdnQiAXFFBEBBxN4EIAEgA3I2AgAgAgwBCyACKAIICyEBIAIgADYCCCABIAA2AgwgACACNgIMIAAgATYCCA8LQR8hAyABQf\u002F\u002F\u002FwdNBEAgAUEmIAFBCHZnIgJrdkEBcSACQQF0a0E+aiEDCyAAIAM2AhwgAEIANwIQIANBAnRB9OAEaiECAkACQEHI3gQoAgAiBEEBIAN0IgdxRQRAQcjeBCAEIAdyNgIAIAIgADYCACAAIAI2AhgMAQsgAUEZIANBAXZrQQAgA0EfRxt0IQMgAigCACECA0AgAiIEKAIEQXhxIAFGDQIgA0EddiECIANBAXQhAyAEIAJBBHFqIgdBEGooAgAiAg0ACyAHIAA2AhAgACAENgIYCyAAIAA2AgwgACAANgIIDwsgBCgCCCIBIAA2AgwgBCAANgIIIABBADYCGCAAIAQ2AgwgACABNgIICwuQCAELfyAARQRAIAEQjwIPCyABQUBPBEBBxNQEQTA2AgBBAA8LAn9BECABQQtqQXhxIAFBC0kbIQUgAEEIayIEKAIEIglBeHEhCAJAIAlBA3FFBEBBACAFQYACSQ0CGiAFQQRqIAhNBEAgBCECIAggBWtBpOIEKAIAQQF0TQ0CC0EADAILIAQgCGohBgJAIAUgCE0EQCAIIAVrIgNBEEkNASAEIAlBAXEgBXJBAnI2AgQgBCAFaiICIANBA3I2AgQgBiAGKAIEQQFyNgIEIAIgAxD3BQwBC0Hc3gQoAgAgBkYEQEHQ3gQoAgAgCGoiCCAFTQ0CIAQgCUEBcSAFckECcjYCBCAEIAVqIgMgCCAFayICQQFyNgIEQdDeBCACNgIAQdzeBCADNgIADAELQdjeBCgCACAGRgRAQczeBCgCACAIaiIDIAVJDQICQCADIAVrIgJBEE8EQCAEIAlBAXEgBXJBAnI2AgQgBCAFaiIIIAJBAXI2AgQgAyAEaiIDIAI2AgAgAyADKAIEQX5xNgIEDAELIAQgCUEBcSADckECcjYCBCADIARqIgIgAigCBEEBcjYCBEEAIQJBACEIC0HY3gQgCDYCAEHM3gQgAjYCAAwBCyAGKAIEIgNBAnENASADQXhxIAhqIgogBUkNASAKIAVrIQwgBigCDCEHAkAgA0H\u002FAU0EQCAGKAIIIgIgB0YEQEHE3gRBxN4EKAIAQX4gA0EDdndxNgIADAILIAIgBzYCDCAHIAI2AggMAQsgBigCGCELAkAgBiAHRwRAQdTeBCgCABogBigCCCICIAc2AgwgByACNgIIDAELAkAgBigCFCICBH8gBkEUagUgBigCECICRQ0BIAZBEGoLIQgDQCAIIQMgAiIHQRRqIQggAigCFCICDQAgB0EQaiEIIAcoAhAiAg0ACyADQQA2AgAMAQtBACEHCyALRQ0AAkAgBigCHCIDQQJ0QfTgBGoiAigCACAGRgRAIAIgBzYCACAHDQFByN4EQcjeBCgCAEF+IAN3cTYCAAwCCyALQRBBFCALKAIQIAZGG2ogBzYCACAHRQ0BCyAHIAs2AhggBigCECICBEAgByACNgIQIAIgBzYCGAsgBigCFCICRQ0AIAcgAjYCFCACIAc2AhgLIAxBD00EQCAEIAlBAXEgCnJBAnI2AgQgBCAKaiICIAIoAgRBAXI2AgQMAQsgBCAJQQFxIAVyQQJyNgIEIAQgBWoiAyAMQQNyNgIEIAQgCmoiAiACKAIEQQFyNgIEIAMgDBD3BQsgBCECCyACCyICBEAgAkEIag8LIAEQjwIiBEUEQEEADwsgBCAAQXxBeCAAQQRrKAIAIgJBA3EbIAJBeHFqIgIgASABIAJLGxAeGiAAENQBIAQLmQIAIABFBEBBAA8LAn8CQCAABH8gAUH\u002FAE0NAQJAQfzVBCgCACgCAEUEQCABQYB\u002FcUGAvwNGDQMMAQsgAUH\u002FD00EQCAAIAFBP3FBgAFyOgABIAAgAUEGdkHAAXI6AABBAgwECyABQYBAcUGAwANHIAFBgLADT3FFBEAgACABQT9xQYABcjoAAiAAIAFBDHZB4AFyOgAAIAAgAUEGdkE\u002FcUGAAXI6AAFBAwwECyABQYCABGtB\u002F\u002F8\u002FTQRAIAAgAUE\u002FcUGAAXI6AAMgACABQRJ2QfABcjoAACAAIAFBBnZBP3FBgAFyOgACIAAgAUEMdkE\u002FcUGAAXI6AAFBBAwECwtBxNQEQRk2AgBBfwVBAQsMAQsgACABOgAAQQELCxYAIABFBEBBAA8LQcTUBCAANgIAQX8LvAIAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACAkKCAkBAgMECgkKCggJBQYHCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCyACIAIoAgAiAUEEajYCACAAIAEyAQA3AwAPCyACIAIoAgAiAUEEajYCACAAIAEzAQA3AwAPCyACIAIoAgAiAUEEajYCACAAIAEwAAA3AwAPCyACIAIoAgAiAUEEajYCACAAIAExAAA3AwAPCyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAErAwA5AwAPCyAAIAIgAxEAAAsPCyACIAIoAgAiAUEEajYCACAAIAE0AgA3AwAPCyACIAIoAgAiAUEEajYCACAAIAE1AgA3AwAPCyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAEpAwA3AwALcwEGfyAAKAIAIgMsAABBMGsiAUEJSwRAQQAPCwNAQX8hBCACQcyZs+YATQRAQX8gASACQQpsIgVqIAEgBUH\u002F\u002F\u002F\u002F\u002FB3NLGyEECyAAIANBAWoiBTYCACADLAABIQYgBCECIAUhAyAGQTBrIgFBCkkNAAsgAgvfEgIVfwF+IwBB0ABrIggkACAIIAE2AkwgCEE3aiEWIAhBOGohEQJAAkACQAJAA0BBACEHA0AgASENIAcgDkH\u002F\u002F\u002F\u002F\u002FB3NKDQIgByAOaiEOAkACQAJAIAEiBy0AACILBEADQAJAAkAgC0H\u002FAXEiAUUEQCAHIQEMAQsgAUElRw0BIAchCwNAIAstAAFBJUcEQCALIQEMAgsgB0EBaiEHIAstAAIhGSALQQJqIgEhCyAZQSVGDQALCyAHIA1rIgcgDkH\u002F\u002F\u002F\u002F\u002FB3MiF0oNCCAABEAgACANIAcQVwsgBw0GIAggATYCTCABQQFqIQdBfyEQAkAgASwAAUEwayIKQQlLDQAgAS0AAkEkRw0AIAFBA2ohB0EBIRIgCiEQCyAIIAc2AkxBACEMAkAgBywAACILQSBrIgFBH0sEQCAHIQoMAQsgByEKQQEgAXQiAUGJ0QRxRQ0AA0AgCCAHQQFqIgo2AkwgASAMciEMIAcsAAEiC0EgayIBQSBPDQEgCiEHQQEgAXQiAUGJ0QRxDQALCwJAIAtBKkYEQAJ\u002FAkAgCiwAAUEwayIBQQlLDQAgCi0AAkEkRw0AAn8gAEUEQCAEIAFBAnRqQQo2AgBBAAwBCyADIAFBA3RqKAIACyEPIApBA2ohAUEBDAELIBINBiAKQQFqIQEgAEUEQCAIIAE2AkxBACESQQAhDwwDCyACIAIoAgAiB0EEajYCACAHKAIAIQ9BAAshEiAIIAE2AkwgD0EATg0BQQAgD2shDyAMQYDAAHIhDAwBCyAIQcwAahD8BSIPQQBIDQkgCCgCTCEBC0EAIQdBfyEJAn9BACABLQAAQS5HDQAaIAEtAAFBKkYEQAJ\u002FAkAgASwAAkEwayIKQQlLDQAgAS0AA0EkRw0AIAFBBGohAQJ\u002FIABFBEAgBCAKQQJ0akEKNgIAQQAMAQsgAyAKQQN0aigCAAsMAQsgEg0GIAFBAmohAUEAIABFDQAaIAIgAigCACIKQQRqNgIAIAooAgALIQkgCCABNgJMIAlBAE4MAQsgCCABQQFqNgJMIAhBzABqEPwFIQkgCCgCTCEBQQELIRMDQCAHIRRBHCEKIAEiGCwAACIHQfsAa0FGSQ0KIAFBAWohASAHIBRBOmxqQd\u002FNBGotAAAiB0EBa0EISQ0ACyAIIAE2AkwCQCAHQRtHBEAgB0UNCyAQQQBOBEAgAEUEQCAEIBBBAnRqIAc2AgAMCwsgCCADIBBBA3RqKQMANwNADAILIABFDQcgCEFAayAHIAIgBhD7BQwBCyAQQQBODQpBACEHIABFDQcLIAAtAABBIHENCiAMQf\u002F\u002Fe3EiCyAMIAxBgMAAcRshDEEAIRBBqRAhFSARIQoCQAJAAkACfwJAAkACQAJAAn8CQAJAAkACQAJAAkACQCAYLAAAIgdBU3EgByAHQQ9xQQNGGyAHIBQbIgdB2ABrDiEEFBQUFBQUFBQOFA8GDg4OFAYUFBQUAgUDFBQJFAEUFAQACwJAIAdBwQBrDgcOFAsUDg4OAAsgB0HTAEYNCQwTCyAIKQNAIRxBqRAMBQtBACEHAkACQAJAAkACQAJAAkAgFEH\u002FAXEOCAABAgMEGgUGGgsgCCgCQCAONgIADBkLIAgoAkAgDjYCAAwYCyAIKAJAIA6sNwMADBcLIAgoAkAgDjsBAAwWCyAIKAJAIA46AAAMFQsgCCgCQCAONgIADBQLIAgoAkAgDqw3AwAMEwtBCCAJIAlBCE0bIQkgDEEIciEMQfgAIQcLIBEhASAHQSBxIQsgCCkDQCIcUEUEQANAIAFBAWsiASAcp0EPcUHw0QRqLQAAIAtyOgAAIBxCD1YhGiAcQgSIIRwgGg0ACwsgASENIAxBCHFFIAgpA0BQcg0DIAdBBHZBqRBqIRVBAiEQDAMLIBEhASAIKQNAIhxQRQRAA0AgAUEBayIBIBynQQdxQTByOgAAIBxCB1YhGyAcQgOIIRwgGw0ACwsgASENIAxBCHFFDQIgCSARIAFrIgFBAWogASAJSBshCQwCCyAIKQNAIhxCAFMEQCAIQgAgHH0iHDcDQEEBIRBBqRAMAQsgDEGAEHEEQEEBIRBBqhAMAQtBqxBBqRAgDEEBcSIQGwshFSAcIBEQkQIhDQsgEyAJQQBIcQ0PIAxB\u002F\u002F97cSAMIBMbIQwgCCkDQCIcQgBSIAlyRQRAIBEhDUEAIQkMDAsgCSAcUCARIA1raiIBIAEgCUgbIQkMCwsgCCgCQCIBQbSJASABGyINQf\u002F\u002F\u002F\u002F8HIAkgCUH\u002F\u002F\u002F\u002F\u002FB08bEIYGIgEgDWohCiAJQQBOBEAgCyEMIAEhCQwLCyALIQwgASEJIAotAAANDgwKCyAJBEAgCCgCQAwCC0EAIQcgAEEgIA9BACAMEF0MAgsgCEEANgIMIAggCCkDQD4CCCAIIAhBCGoiBzYCQEF\u002FIQkgBwshC0EAIQcDQAJAIAsoAgAiDUUNACAIQQRqIA0Q+QUiDUEASA0PIA0gCSAHa0sNACALQQRqIQsgByANaiIHIAlJDQELC0E9IQogB0EASA0MIABBICAPIAcgDBBdIAdFBEBBACEHDAELQQAhCiAIKAJAIQsDQCALKAIAIg1FDQEgCEEEaiIJIA0Q+QUiDSAKaiIKIAdLDQEgACAJIA0QVyALQQRqIQsgByAKSw0ACwsgAEEgIA8gByAMQYDAAHMQXSAPIAcgByAPSBshBwwICyATIAlBAEhxDQlBPSEKIAAgCCsDQCAPIAkgDCAHIAURRwAiB0EATg0HDAoLIAggCCkDQDwAN0EBIQkgFiENIAshDAwECyAHLQABIQsgB0EBaiEHDAALAAsgAA0IIBJFDQJBASEHA0AgBCAHQQJ0aigCACIABEAgAyAHQQN0aiAAIAIgBhD7BUEBIQ4gB0EBaiIHQQpHDQEMCgsLQQEhDiAHQQpPDQgDQCAEIAdBAnRqKAIADQEgB0EBaiIHQQpHDQALDAgLQRwhCgwFCyAJIAogDWsiCyAJIAtKGyIBIBBB\u002F\u002F\u002F\u002F\u002FwdzSg0DQT0hCiAPIAEgEGoiCSAJIA9IGyIHIBdKDQQgAEEgIAcgCSAMEF0gACAVIBAQVyAAQTAgByAJIAxBgIAEcxBdIABBMCABIAtBABBdIAAgDSALEFcgAEEgIAcgCSAMQYDAAHMQXSAIKAJMIQEMAQsLC0EAIQ4MAwtBPSEKC0HE1AQgCjYCAAtBfyEOCyAIQdAAaiQAIA4LfwIBfwF+IAC9IgNCNIinQf8PcSICQf8PRwR8IAJFBEAgASAARAAAAAAAAAAAYQR\u002FQQAFIABEAAAAAAAA8EOiIAEQ\u002FgUhACABKAIAQUBqCzYCACAADwsgASACQf4HazYCACADQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F+HgH+DQoCAgICAgIDwP4S\u002FBSAACwukAwMCfAJ\u002FAX4gAL0iB0KAgICAgP\u002F\u002F\u002F\u002F8Ag0KBgICA8ITl8j9UIgZFBEBEGC1EVPsh6T8gACAAmiAHQgBZIgUboUQHXBQzJqaBPCABIAGaIAUboaAhAEQAAAAAAAAAACEBCyAAIAAgACAAoiIEoiIDRGNVVVVVVdU\u002FoiAEIAMgBCAEoiIDIAMgAyADIANEc1Ng28t1876iRKaSN6CIfhQ\u002FoKJEAWXy8thEQz+gokQoA1bJIm1tP6CiRDfWBoT0ZJY\u002FoKJEev4QERERwT+gIAQgAyADIAMgAyADRNR6v3RwKvs+okTpp\u002FAyD7gSP6CiRGgQjRr3JjA\u002FoKJEFYPg\u002FsjbVz+gokSThG7p4yaCP6CiRP5Bsxu6oas\u002FoKKgoiABoKIgAaCgIgOgIQEgBkUEQEEBIAJBAXRrtyIEIAAgAyABIAGiIAEgBKCjoaAiACAAoKEiACAAmiAFGw8LIAIEfEQAAAAAAADwvyABoyIEIAS9QoCAgIBwg78iBCADIAG9QoCAgIBwg78iASAAoaGiIAQgAaJEAAAAAAAA8D+goKIgBKAFIAELC7cyAxZ\u002FB34CfCMAQRBrIhAkACMAQaABayIDJAAgAyAANgI8IAMgADYCFCADQX82AhggA0EQaiIAEJUEIAMhESMAQTBrIgskAEGQzgQoAgAhD0GEzgQoAgAhDQNAAn8gACgCBCIDIAAoAmhHBEAgACADQQFqNgIEIAMtAAAMAQsgABBPCyIFEI8GDQALQQEhAwJAAkAgBUEraw4DAAEAAQtBf0EBIAVBLUYbIQMgACgCBCICIAAoAmhHBEAgACACQQFqNgIEIAItAAAhBQwBCyAAEE8hBQsCQAJAAkAgBUFfcUHJAEYEQANAIARBB0YNAgJ\u002FIAAoAgQiAiAAKAJoRwRAIAAgAkEBajYCBCACLQAADAELIAAQTwshBSAEQckLaiEVIARBAWohBCAVLAAAIAVBIHJGDQALCyAEQQNHBEAgBEEIRiICDQEgBEEESQ0CIAINAQsgACkDcCIXQgBZBEAgACAAKAIEQQFrNgIECyAEQQRJDQAgF0IAUyECA0AgAkUEQCAAIAAoAgRBAWs2AgQLIARBAWsiBEEDSw0ACwtCACEXIwBBEGsiBCQAAn4gA7JDAACAf5S8IgNB\u002F\u002F\u002F\u002F\u002FwdxIgBBgICABGtB\u002F\u002F\u002F\u002F9wdNBEAgAK1CGYZCgICAgICAgMA\u002FfAwBCyADrUIZhkKAgICAgIDA\u002F\u002F8AhCAAQYCAgPwHTw0AGkIAIABFDQAaIAQgAK1CACAAZyIAQdEAahBiIAQpAwAhFyAEKQMIQoCAgICAgMAAhUGJ\u002FwAgAGutQjCGhAshGCALIBc3AwAgCyAYIANBgICAgHhxrUIghoQ3AwggBEEQaiQAIAspAwghFyALKQMAIRgMAQsCQAJAAkACQCAEDQBBACEEIAVBX3FBzgBHDQADQCAEQQJGDQICfyAAKAIEIgIgACgCaEcEQCAAIAJBAWo2AgQgAi0AAAwBCyAAEE8LIQUgBEGRwABqIRYgBEEBaiEEIBYsAAAgBUEgckYNAAsLIAQOBAIBAQABCwJAAn8gACgCBCIDIAAoAmhHBEAgACADQQFqNgIEIAMtAAAMAQsgABBPC0EoRgRAQQEhBAwBC0KAgICAgIDg\u002F\u002F8AIRcgACkDcEIAUw0DIAAgACgCBEEBazYCBAwDCwNAAn8gACgCBCIDIAAoAmhHBEAgACADQQFqNgIEIAMtAAAMAQsgABBPCyIDQTBrQQpJIANBwQBrQRpJciADQd8ARnJFIANB4QBrQRpPcUUEQCAEQQFqIQQMAQsLQoCAgICAgOD\u002F\u002FwAhFyADQSlGDQIgACkDcCIaQgBZBEAgACAAKAIEQQFrNgIECyAERQ0CA0AgGkIAWQRAIAAgACgCBEEBazYCBAsgBEEBayIEDQALDAILIAApA3BCAFkEQCAAIAAoAgRBAWs2AgQLQcTUBEEcNgIAIAAQlQQMAQsCQCAFQTBHDQACfyAAKAIEIgQgACgCaEcEQCAAIARBAWo2AgQgBC0AAAwBCyAAEE8LQV9xQdgARgRAIAMhBCMAQbADayICJAACfyAAKAIEIgMgACgCaEcEQCAAIANBAWo2AgQgAy0AAAwBCyAAEE8LIQMCQAJ\u002FA0AgA0EwRwRAAkAgA0EuRw0EIAAoAgQiAyAAKAJoRg0AIAAgA0EBajYCBCADLQAADAMLBSAAKAIEIgMgACgCaEcEf0EBIQkgACADQQFqNgIEIAMtAAAFQQEhCSAAEE8LIQMMAQsLIAAQTwshA0EBIQEgA0EwRw0AA0AgGkIBfSEaAn8gACgCBCIDIAAoAmhHBEAgACADQQFqNgIEIAMtAAAMAQsgABBPCyIDQTBGDQALQQEhCQtCgICAgICAwP8\u002FIRgDQAJAIAMhBgJAAkAgA0EwayIFQQpJDQAgA0EuRyIKIANBIHIiBkHhAGtBBUtxDQIgCg0AIAENAkEBIQEgFyEaDAELIAZB1wBrIAUgA0E5ShshAwJAIBdCB1cEQCADIAdBBHRqIQcMAQsgF0IcWARAIAJBMGogAxB4IAJBIGogHCAYQgBCgICAgICAwP0\u002FECsgAkEQaiACKQMwIAIpAzggAikDICIcIAIpAygiGBArIAIgAikDECACKQMYIBkgGxBvIAIpAwghGyACKQMAIRkMAQsgA0UgCHINACACQdAAaiAcIBhCAEKAgICAgICA\u002Fz8QKyACQUBrIAIpA1AgAikDWCAZIBsQbyACKQNIIRtBASEIIAIpA0AhGQsgF0IBfCEXQQEhCQsgACgCBCIDIAAoAmhHBH8gACADQQFqNgIEIAMtAAAFIAAQTwshAwwBCwsCfiAJRQRAIAApA3BCAFkEQAJAIAAgACgCBCIDQQFrNgIEIAAgA0ECazYCBCABRQ0AIAAgA0EDazYCBAsLIAJB4ABqIAS3RAAAAAAAAAAAohCpASACKQNgIRkgAikDaAwBCyAXQgdXBEAgFyEYA0AgB0EEdCEHIBhCAXwiGEIIUg0ACwsCQAJAAkAgA0FfcUHQAEYEQCAAEIEGIhhCgICAgICAgICAf1INAyAAKQNwQgBZDQEMAgtCACEYIAApA3BCAFMNAgsgACAAKAIEQQFrNgIEC0IAIRgLIAdFBEAgAkHwAGogBLdEAAAAAAAAAACiEKkBIAIpA3AhGSACKQN4DAELIBogFyABG0IChiAYfEIgfSIXQQAgD2utVQRAQcTUBEHEADYCACACQaABaiAEEHggAkGQAWogAikDoAEgAikDqAFCf0L\u002F\u002F\u002F\u002F\u002F\u002F\u002F+\u002F\u002F\u002F8AECsgAkGAAWogAikDkAEgAikDmAFCf0L\u002F\u002F\u002F\u002F\u002F\u002F\u002F+\u002F\u002F\u002F8AECsgAikDgAEhGSACKQOIAQwBCyAPQeIBa6wgF1cEQCAHQQBOBEADQCACQaADaiAZIBtCAEKAgICAgIDA\u002F79\u002FEG8gGSAbQoCAgICAgID\u002FPxD1BSEAIAJBkANqIBkgGyACKQOgAyAZIABBAE4iABsgAikDqAMgGyAAGxBvIBdCAX0hFyACKQOYAyEbIAIpA5ADIRkgB0EBdCAAciIHQQBODQALCwJ+IBcgD6x9QiB8IhinIgBBACAAQQBKGyANIBggDa1TGyIAQfEATgRAIAJBgANqIAQQeCACKQOIAyEaIAIpA4ADIRxCAAwBCyACQeACakQAAAAAAADwP0GQASAAaxDVARCpASACQdACaiAEEHggAkHwAmogAikD4AIgAikD6AIgAikD0AIiHCACKQPYAiIaEIQGIAIpA\u002FgCIR0gAikD8AILIRggAkHAAmogByAHQQFxRSAZIBtCAEIAEOsBQQBHIABBIEhxcSIAchCOAiACQbACaiAcIBogAikDwAIgAikDyAIQKyACQZACaiACKQOwAiACKQO4AiAYIB0QbyACQaACaiAcIBpCACAZIAAbQgAgGyAAGxArIAJBgAJqIAIpA6ACIAIpA6gCIAIpA5ACIAIpA5gCEG8gAkHwAWogAikDgAIgAikDiAIgGCAdEJIEIAIpA\u002FABIhggAikD+AEiGkIAQgAQ6wFFBEBBxNQEQcQANgIACyACQeABaiAYIBogF6cQgwYgAikD4AEhGSACKQPoAQwBC0HE1ARBxAA2AgAgAkHQAWogBBB4IAJBwAFqIAIpA9ABIAIpA9gBQgBCgICAgICAwAAQKyACQbABaiACKQPAASACKQPIAUIAQoCAgICAgMAAECsgAikDsAEhGSACKQO4AQshFyALIBk3AxAgCyAXNwMYIAJBsANqJAAgCykDGCEXIAspAxAhGAwCCyAAKQNwQgBTDQAgACAAKAIEQQFrNgIECyAAIQIgAyEJQQAhBCMAQZDGAGsiASQAQQAgD2siDCANayEUAkACfwNAIAVBMEcEQAJAIAVBLkcNBCACKAIEIgAgAigCaEYNACACIABBAWo2AgQgAC0AAAwDCwUgAigCBCIAIAIoAmhHBH8gAiAAQQFqNgIEIAAtAAAFIAIQTwshBUEBIQQMAQsLIAIQTwshBUEBIQYgBUEwRw0AA0AgF0IBfSEXAn8gAigCBCIAIAIoAmhHBEAgAiAAQQFqNgIEIAAtAAAMAQsgAhBPCyIFQTBGDQALQQEhBAsgAUEANgKQBgJ+AkACQAJAIAVBLkYiACAFQTBrIgNBCU1yBEADQAJAIABBAXEEQCAGRQRAIBghF0EBIQYMAgsgBEUhAAwECyAYQgF8IRggB0H8D0wEQCAKIBinIAVBMEYbIQogAUGQBmogB0ECdGoiACAIBH8gBSAAKAIAQQpsakEwawUgAws2AgBBASEEQQAgCEEBaiIAIABBCUYiABshCCAAIAdqIQcMAQsgBUEwRg0AIAEgASgCgEZBAXI2AoBGQdyPASEKCwJ\u002FIAIoAgQiACACKAJoRwRAIAIgAEEBajYCBCAALQAADAELIAIQTwsiBUEuRiIAIAVBMGsiA0EKSXINAAsLIBcgGCAGGyEXIARFIAVBX3FBxQBHckUEQAJAIAIQgQYiGUKAgICAgICAgIB\u002FUg0AQgAhGSACKQNwQgBTDQAgAiACKAIEQQFrNgIECyAXIBl8IRcMAwsgBEUhACAFQQBIDQELIAIpA3BCAFMNACACIAIoAgRBAWs2AgQLIABFDQBBxNQEQRw2AgAgAhCVBEIAIRdCAAwBCyABKAKQBiIARQRAIAEgCbdEAAAAAAAAAACiEKkBIAEpAwghFyABKQMADAELIBcgGFIgGEIJVXIgDUEeTEEAIAAgDXYbckUEQCABQTBqIAkQeCABQSBqIAAQjgIgAUEQaiABKQMwIAEpAzggASkDICABKQMoECsgASkDGCEXIAEpAxAMAQsgDEEBdq0gF1MEQEHE1ARBxAA2AgAgAUHgAGogCRB4IAFB0ABqIAEpA2AgASkDaEJ\u002FQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F7\u002F\u002F\u002FwAQKyABQUBrIAEpA1AgASkDWEJ\u002FQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F7\u002F\u002F\u002FwAQKyABKQNIIRcgASkDQAwBCyAPQeIBa6wgF1UEQEHE1ARBxAA2AgAgAUGQAWogCRB4IAFBgAFqIAEpA5ABIAEpA5gBQgBCgICAgICAwAAQKyABQfAAaiABKQOAASABKQOIAUIAQoCAgICAgMAAECsgASkDeCEXIAEpA3AMAQsgCARAIAhBCEwEQCABQZAGaiAHQQJ0aiIAKAIAIQYDQCAGQQpsIQYgCEEBaiIIQQlHDQALIAAgBjYCAAsgB0EBaiEHCwJAIBenIgggCkggCkEJTnIgCEERSnINACAIQQlGBEAgAUHAAWogCRB4IAFBsAFqIAEoApAGEI4CIAFBoAFqIAEpA8ABIAEpA8gBIAEpA7ABIAEpA7gBECsgASkDqAEhFyABKQOgAQwCCyAIQQhMBEAgAUGQAmogCRB4IAFBgAJqIAEoApAGEI4CIAFB8AFqIAEpA5ACIAEpA5gCIAEpA4ACIAEpA4gCECsgAUHgAWpBACAIa0ECdEGAzgRqKAIAEHggAUHQAWogASkD8AEgASkD+AEgASkD4AEgASkD6AEQ9AUgASkD2AEhFyABKQPQAQwCCyANIAhBfWxqQRtqIgBBHkxBACABKAKQBiIDIAB2Gw0AIAFB4AJqIAkQeCABQdACaiADEI4CIAFBwAJqIAEpA+ACIAEpA+gCIAEpA9ACIAEpA9gCECsgAUGwAmogCEECdEG4zQRqKAIAEHggAUGgAmogASkDwAIgASkDyAIgASkDsAIgASkDuAIQKyABKQOoAiEXIAEpA6ACDAELA0AgAUGQBmogByIAQQFrIgdBAnRqKAIARQ0AC0EAIQoCQCAIQQlvIgRFBEBBACEDDAELQQAhAyAEQQlqIAQgCEEASBshBAJAIABFBEBBACEADAELQYCU69wDQQAgBGtBAnRBgM4EaigCACICbSEHQQAhBUEAIQYDQCABQZAGaiIMIAZBAnRqIg4gBSAOKAIAIg4gAm4iEmoiBTYCACADQQFqQf8PcSADIAVFIAMgBkZxIgUbIQMgCEEJayAIIAUbIQggByAOIAIgEmxrbCEFIAZBAWoiBiAARw0ACyAFRQ0AIABBAnQgDGogBTYCACAAQQFqIQALIAggBGtBCWohCAsDQCABQZAGaiADQQJ0aiEMIAhBJEghDgJAA0AgDkUEQCAIQSRHDQIgDCgCAEHR6fkETw0CCyAAQf8PaiEHQQAhBANAIAAhAiAErSABQZAGaiAHQf8PcSIFQQJ0aiIANQIAQh2GfCIXQoGU69wDVAR\u002FQQAFIBcgF0KAlOvcA4AiGEKAlOvcA359IRcgGKcLIQQgACAXpyIANgIAIAIgAiACIAUgABsgAyAFRhsgBSACQQFrQf8PcSIGRxshACAFQQFrIQcgAyAFRw0ACyAKQR1rIQogAiEAIARFDQALIANBAWtB\u002Fw9xIgMgAEYEQCABQZAGaiICIABB\u002Fg9qQf8PcUECdGoiACAAKAIAIAZBAnQgAmooAgByNgIAIAYhAAsgCEEJaiEIIAFBkAZqIANBAnRqIAQ2AgAMAQsLAkADQCAAQQFqQf8PcSECIAFBkAZqIABBAWtB\u002Fw9xQQJ0aiEFA0BBCUEBIAhBLUobIQcCQANAIAMhBEEAIQYCQANAAkAgBCAGakH\u002FD3EiAyAARg0AIAFBkAZqIANBAnRqKAIAIgMgBkECdEHQzQRqKAIAIgxJDQAgAyAMSw0CIAZBAWoiBkEERw0BCwsgCEEkRw0AQgAhF0EAIQZCACEYA0AgACAEIAZqQf8PcSIDRgRAIABBAWpB\u002Fw9xIgBBAnQgAWpBADYCjAYLIAFBgAZqIAFBkAZqIANBAnRqKAIAEI4CIAFB8AVqIBcgGEIAQoCAgIDlmreOwAAQKyABQeAFaiABKQPwBSABKQP4BSABKQOABiABKQOIBhBvIAEpA+gFIRggASkD4AUhFyAGQQFqIgZBBEcNAAsgAUHQBWogCRB4IAFBwAVqIBcgGCABKQPQBSABKQPYBRArIAEpA8gFIRhCACEXIAEpA8AFIRkgCkHxAGoiByAPayICQQAgAkEAShsgDSACIA1IIgUbIgNB8ABMDQIMBQsgByAKaiEKIAQgACIDRg0AC0GAlOvcAyAHdiEMQX8gB3RBf3MhDkEAIQYgBCEDA0AgAUGQBmoiEiAEQQJ0aiITIAYgEygCACITIAd2aiIGNgIAIANBAWpB\u002Fw9xIAMgBkUgAyAERnEiBhshAyAIQQlrIAggBhshCCAOIBNxIAxsIQYgBEEBakH\u002FD3EiBCAARw0ACyAGRQ0BIAIgA0cEQCAAQQJ0IBJqIAY2AgAgAiEADAMLIAUgBSgCAEEBcjYCAAwBCwsLIAFBkAVqRAAAAAAAAPA\u002FQeEBIANrENUBEKkBIAFBsAVqIAEpA5AFIAEpA5gFIBkgGBCEBiABKQO4BSEbIAEpA7AFIRwgAUGABWpEAAAAAAAA8D9B8QAgA2sQ1QEQqQEgAUGgBWogGSAYIAEpA4AFIAEpA4gFEIIGIAFB8ARqIBkgGCABKQOgBSIXIAEpA6gFIhoQkgQgAUHgBGogHCAbIAEpA\u002FAEIAEpA\u002FgEEG8gASkD6AQhGCABKQPgBCEZCwJAIARBBGpB\u002Fw9xIgYgAEYNAAJAIAFBkAZqIAZBAnRqKAIAIgZB\u002F8m17gFNBEAgBkUgBEEFakH\u002FD3EgAEZxDQEgAUHwA2ogCbdEAAAAAAAA0D+iEKkBIAFB4ANqIBcgGiABKQPwAyABKQP4AxBvIAEpA+gDIRogASkD4AMhFwwBCyAGQYDKte4BRwRAIAFB0ARqIAm3RAAAAAAAAOg\u002FohCpASABQcAEaiAXIBogASkD0AQgASkD2AQQbyABKQPIBCEaIAEpA8AEIRcMAQsgCbchHiAAIARBBWpB\u002Fw9xRgRAIAFBkARqIB5EAAAAAAAA4D+iEKkBIAFBgARqIBcgGiABKQOQBCABKQOYBBBvIAEpA4gEIRogASkDgAQhFwwBCyABQbAEaiAeRAAAAAAAAOg\u002FohCpASABQaAEaiAXIBogASkDsAQgASkDuAQQbyABKQOoBCEaIAEpA6AEIRcLIANB7wBKDQAgAUHQA2ogFyAaQgBCgICAgICAwP8\u002FEIIGIAEpA9ADIAEpA9gDQgBCABDrAQ0AIAFBwANqIBcgGkIAQoCAgICAgMD\u002FPxBvIAEpA8gDIRogASkDwAMhFwsgAUGwA2ogGSAYIBcgGhBvIAFBoANqIAEpA7ADIAEpA7gDIBwgGxCSBCABKQOoAyEYIAEpA6ADIRkCQCAUQQJrIAdB\u002F\u002F\u002F\u002F\u002FwdxTg0AIAEgGEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8AgzcDmAMgASAZNwOQAyABQYADaiAZIBhCAEKAgICAgICA\u002Fz8QKyABKQOQAyABKQOYA0KAgICAgICAuMAAEPUFIQAgASkDiAMgGCAAQQBOIgQbIRggASkDgAMgGSAEGyEZIAUgAiADRyAAQQBIcnEgFyAaQgBCABDrAUEAR3FFIBQgBCAKaiIKQe4Aak5xDQBBxNQEQcQANgIACyABQfACaiAZIBggChCDBiABKQP4AiEXIAEpA\u002FACCyEYIAsgFzcDKCALIBg3AyAgAUGQxgBqJAAgCykDKCEXIAspAyAhGAsgESAYNwMAIBEgFzcDCCALQTBqJAAgESkDACEXIBAgESkDCDcDCCAQIBc3AwAgEUGgAWokACAQKQMAIBApAwgQ8wUhHyAQQRBqJAAgHwv9AwIEfwF+AkACQAJ\u002FAkACQAJ\u002FIAAoAgQiASAAKAJoRwRAIAAgAUEBajYCBCABLQAADAELIAAQTwsiAUEraw4DAAEAAQsgAUEtRgJ\u002FIAAoAgQiASAAKAJoRwRAIAAgAUEBajYCBCABLQAADAELIAAQTwsiAUE6ayICQXVLDQEaIAApA3BCAFMNAiAAIAAoAgRBAWs2AgQMAgsgAUE6ayECQQALIQMgAkF2SQ0AAkAgAUEwa0EKTw0AQQAhAgNAIAEgAkEKbGpBMGsiAkHMmbPmAEgCfyAAKAIEIgEgACgCaEcEQCAAIAFBAWo2AgQgAS0AAAwBCyAAEE8LIgFBMGsiBEEJTXENAAsgAqwhBSAEQQpPDQADQCABrSAFQgp+fCEFAn8gACgCBCIBIAAoAmhHBEAgACABQQFqNgIEIAEtAAAMAQsgABBPCyIBQTBrIgJBCU0gBUIwfSIFQq6PhdfHwuujAVNxDQALIAJBCk8NAANAAn8gACgCBCIBIAAoAmhHBEAgACABQQFqNgIEIAEtAAAMAQsgABBPC0Ewa0EKSQ0ACwsgACkDcEIAWQRAIAAgACgCBEEBazYCBAtCACAFfSAFIAMbIQUMAQtCgICAgICAgICAfyEFIAApA3BCAFMNACAAIAAoAgRBAWs2AgRCgICAgICAgICAfw8LIAULygYCBX8EfiMAQYABayIFJAACQAJAAkAgAyAEQgBCABDrAUUNAAJ\u002FIARC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP4MhCwJ\u002FIARCMIinQf\u002F\u002FAXEiBkH\u002F\u002FwFHBEBBBCAGDQEaQQJBAyADIAuEUBsMAgsgAyALhFALCyEJIAJCMIinIghB\u002F\u002F8BcSIHQf\u002F\u002FAUYNACAJDQELIAVBEGogASACIAMgBBArIAUgBSkDECICIAUpAxgiASACIAEQ9AUgBSkDCCECIAUpAwAhBAwBCyABIAJC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAIMiCyADIARC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAIMiChDrAUEATARAIAEgCyADIAoQ6wEEQCABIQQMAgsgBUHwAGogASACQgBCABArIAUpA3ghAiAFKQNwIQQMAQsgBEIwiKdB\u002F\u002F8BcSEGIAcEfiABBSAFQeAAaiABIAtCAEKAgICAgIDAu8AAECsgBSkDaCILQjCIp0H4AGshByAFKQNgCyEEIAZFBEAgBUHQAGogAyAKQgBCgICAgICAwLvAABArIAUpA1giCkIwiKdB+ABrIQYgBSkDUCEDCyAKQv\u002F\u002F\u002F\u002F\u002F\u002F\u002Fz+DQoCAgICAgMAAhCEMIAtC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP4NCgICAgICAwACEIQsgBiAHSARAA0ACfiALIAx9IAMgBFatfSIKQgBZBEAgCiAEIAN9IgSEUARAIAVBIGogASACQgBCABArIAUpAyghAiAFKQMgIQQMBQsgCkIBhiAEQj+IhAwBCyALQgGGIARCP4iECyELIARCAYYhBCAHQQFrIgcgBkoNAAsgBiEHCwJAIAsgDH0gAyAEVq19IgpCAFMEQCALIQoMAQsgCiAEIAN9IgSEQgBSDQAgBUEwaiABIAJCAEIAECsgBSkDOCECIAUpAzAhBAwBCyAKQv\u002F\u002F\u002F\u002F\u002F\u002F\u002Fz9YBEADQCAEQj+IIQ0gB0EBayEHIARCAYYhBCANIApCAYaEIgpCgICAgICAwABUDQALCyAIQYCAAnEhBiAHQQBMBEAgBUFAayAEIApC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP4MgB0H4AGogBnKtQjCGhEIAQoCAgICAgMDDPxArIAUpA0ghAiAFKQNAIQQMAQsgCkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F8\u002FgyAGIAdyrUIwhoQhAgsgACAENwMAIAAgAjcDCCAFQYABaiQAC78CAQF\u002FIwBB0ABrIgQkAAJAIANBgIABTgRAIARBIGogASACQgBCgICAgICAgP\u002F\u002FABArIAQpAyghAiAEKQMgIQEgA0H\u002F\u002FwFJBEAgA0H\u002F\u002FwBrIQMMAgsgBEEQaiABIAJCAEKAgICAgICA\u002F\u002F8AECtB\u002Ff8CIAMgA0H9\u002FwJOG0H+\u002FwFrIQMgBCkDGCECIAQpAxAhAQwBCyADQYGAf0oNACAEQUBrIAEgAkIAQoCAgICAgIA5ECsgBCkDSCECIAQpA0AhASADQfSAfksEQCADQY3\u002FAGohAwwBCyAEQTBqIAEgAkIAQoCAgICAgIA5ECtB6IF9IAMgA0HogX1MG0Ga\u002FgFqIQMgBCkDOCECIAQpAzAhAQsgBCABIAJCACADQf\u002F\u002FAGqtQjCGECsgACAEKQMINwMIIAAgBCkDADcDACAEQdAAaiQACzwAIAAgATcDACAAIAJC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP4MgAkKAgICAgIDA\u002F\u002F8Ag0IwiKcgBEIwiKdBgIACcXKtQjCGhDcDCAsxAQJ\u002FAn8gABA9QQFqIQEDQEEAIAFFDQEaIAAgAUEBayIBaiICLQAAQS9HDQALIAILCxcBAX8gAEEAIAEQkgIiAiAAayABIAIbC9EBAQF\u002FAkACQCAAIAFzQQNxBEAgAS0AACECDAELIAFBA3EEQANAIAAgAS0AACICOgAAIAJFDQMgAEEBaiEAIAFBAWoiAUEDcQ0ACwsgASgCACICQX9zIAJBgYKECGtxQYCBgoR4cQ0AA0AgACACNgIAIAEoAgQhAiAAQQRqIQAgAUEEaiEBIAJBgYKECGsgAkF\u002Fc3FBgIGChHhxRQ0ACwsgACACOgAAIAJB\u002FwFxRQ0AA0AgACABLQABIgI6AAEgAEEBaiEAIAFBAWohASACDQALCwtFAQJ8IAAgAiACoiIEOQMAIAEgAiACRAAAAAIAAKBBoiIDIAIgA6GgIgKhIgMgA6IgAiACoCADoiACIAKiIAShoKA5AwALMwAgAQJ\u002FIAIoAkxBAEgEQCAAIAEgAhCXBAwBCyAAIAEgAhCXBAsiAEYEQA8LIAAgAW4aC30BAn8jAEEQayIBJAAgAUEKOgAPAkACQCAAKAIQIgIEfyACBSAAEJgEDQIgACgCEAsgACgCFCICRg0AIAAoAlBBCkYNACAAIAJBAWo2AhQgAkEKOgAADAELIAAgAUEPakEBIAAoAiQRAQBBAUcNACABLQAPGgsgAUEQaiQAC9sBAQR\u002FIAAoAlQhAwJAIAAoAhQiBiAAKAIcIgVHBEAgACAFNgIUIAAgBSAGIAVrIgUQiwYgBUkNAQsCQCADKAIQQeEARwRAIAMoAgAhBAwBCyADIAMoAgQiBDYCAAsgAygCDCAEaiABIAMoAgggBGsiASACIAEgAkkbIgQQHhogAyADKAIAIARqIgE2AgAgASADKAIETQ0AIAMgATYCBAJ\u002FIAMoAggiAiABSwRAIAMoAgwgAWoMAQsgAkUNASAAKAIAQQRxRQ0BIAMoAgwgAmpBAWsLQQA6AAALIAQLGAEBfyMAQRBrIgEgADkDCCABKwMIIACiC3UCAnwBfiAAAn4QBCIBRAAAAAAAQI9AoyICmUQAAAAAAADgQ2MEQCACsAwBC0KAgICAgICAgIB\u002FCyIDNwMAIAACfyABIANC6Ad+uaFEAAAAAABAj0CiIgGZRAAAAAAAAOBBYwRAIAGqDAELQYCAgIB4CzYCCAsoACABRAAAAAAAAMB\u002FoiAARIvdGhVmIJbAoBCaBKJEAAAAAAAAwH+iCxAAIABBIEYgAEEJa0EFSXILjAMCAn4DfyMAQSBrIgIkAEKAgICA4AAhBAJAIAAgAykDACIFEFUNACAAIAFBLRBeIgFCgICAgHCDQoCAgIDgAFENACAAAn4CQCAAQSAQXCIGRQ0AQQAhAyAGQQA2AhQgBkEANgIAIAZBBGohCANAIANBAkZFBEAgCCADQQN0aiIHIAc2AgQgByAHNgIAIANBAWohAwwBCwsgBkKAgICAMDcDGCABQoCAgIBwWgRAIAGnIAY2AiALIAAgAkEQaiIDIAEQqgUNAAJAIAAgBUKAgICAMEECIAMQHCIFQoCAgIBwg0KAgICA4ABRBEAgACgCECIDKQOAASEEIANCgICAgCA3A4ABIAIgBDcDCCAAIAIpAxhCgICAgDBBASACQQhqEBwhBCAAIAIpAwgQDCAEQoCAgIBwg0KAgICA4ABRDQEgACAEEAwLIAAgBRAMIAAgAikDEBAMIAEhBCACKQMYDAILIAAgAikDEBAMIAAgAikDGBAMQoCAgIDgACEECyABCxAMCyACQSBqJAAgBAuLAgEHfyABQQJ0QaCDBGooAgAiAiABQQF0QfCEBGovAQBqIQhBACEBAkADQCACIAhPDQEgAkEBaiEGAkACQCACLQAAIgRBP00EQCADIARBA3ZqQQFqIQIgAQRAIAAgAyACEGkNAwsgAUEBcyEBIARBB3EgAmpBAWohBQwBCwJ\u002FIAMgBGpB\u002FwBrIATAQQBIDQAaIAYtAAAhBSAEQd8ATQRAIAJBAmohBiADIARBCHRqIAVqQf\u002F\u002FAGsMAQsgAkEDaiEGIAItAAIgAyAEQRB0aiAFQQh0ampB\u002F\u002F\u002F\u002FAmsLIQUgAyECCyABBEAgACACIAUQaQ0BCyABQQFzIQEgBiECIAUhAwwBCwtBfyEHCyAHC7UCAQp\u002FIAFBBnEhByABQQJ2QQFxIQoCQANAIANB6x5KDQEgAiEEIANBsOQDai0AACIFQR9xIQkCfyADQQFqIAVBBXYiAkEHRw0AGiADQQJqIQUgA0Gx5ANqLAAAIgJB\u002FwFxIQYgAkEATgRAIAZBB2ohAiAFDAELIAVBsOQDai0AACEFIAJBv39NBEAgBkEIdCAFckH5\u002FgFrIQIgA0EDagwBCyADQbPkA2otAAAgBkEQdHIgBUEIdHJB+f7+BWshAiADQQRqCyEDIAIgBGpBAWohAgJAAkAgCUEfRgRAIAdFDQMgB0EGRg0BIAQgCmohBANAIAIgBE0NBCAAIAQgBEEBahBpIQsgBEECaiEEIAtFDQALDAILIAEgCXZBAXFFDQILIAAgBCACEGlFDQELC0F\u002FIQgLIAgLOABB8NECIAEQnQQiAUEASARAQX4PCyAAIAFBHU0Ef0IBIAGthqcFIAFBAnRBmNYCaigCAAsQkgYLmgYBBH9BASEJIAJBAXRBwPkCai8BACECIAVFBEAgACACNgIAQQEPCyACQcCEA2ohBkESIQcCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAFQQFrDiIAAAAAAAAAAQECAgICAgQDAwMDAwMFBQUFBQUFBQYHCAkJCwsgBiABIANrIAVsQQF0aiEBQQAhAgNAIAIgBUYEQCAFDwsgACACQQJ0aiABIAJBAXRqLwAAIgM2AgAgAkEBaiECIAMNAAsMCwsgBUEHayIIIAEgA2tsIQcgBiAEIAhsQQF0aiEBQQAhAgNAIAIgCEYNCiAGIAdBAXQiA2ovAAAgASAHQQJ2ai0AACADQQZxdkEQdEGAgAxxciIDRQ0LIAAgAkECdGogAzYCACACQQFqIQIgB0EBaiEHDAALAAsgBiAFQQlrIgggASADa2xqIQFBACECA0AgAiAIRg0JIAAgAkECdGogASACai0AABCkAyIDNgIAIAJBAWohAiADDQALDAkLIAVBAXEgBUEQayICQQFLaiEIIAJBAXZBAmohCQsgASADayEBQQAhAgNAIAIgCUYEQCAJDwUgACACQQJ0aiAGIAJBAXRqLwAAIAFBACACIAhGG2o2AgAgAkEBaiECDAELAAsACyAFQRVrIQcLIAYgByABIANrbGpBAmohASAGLwAAIQNBACECA0AgAiAHRgRAIAcPBSAAIAJBAnRqQSAgAyABIAJqLQAAIgRqIARB\u002FwFGGzYCACACQQFqIQIMAQsACwALIAAgBiABIANrQQNsaiIBLwAAIgI2AgAgAkUNAyAAIAEtAAIQpAM2AgQMAgsgACAGLwACNgIIIAAgBi8AADYCACAAIAYgASADa0EBdGovAAQ2AgRBAw8LIAEgA2shAQJ\u002FIAVBIUYEQCAGIAFBfnFqIgJBAWohAyACLQAAEKQDDAELIAYgAUEBdkEDbGoiAkECaiEDIAIvAAALIQIgAEEgQSBBASACQZAIa0EgSRsgAkGAAkkbIAJqIAIgAUEBcRs2AgAgACADLQAAEKQDNgIEC0ECIQgLIAgPC0EAC7QCAQh\u002FIwBB0ABrIgckACACQQAgAkEAShshCwNAAkACQCAGIAtHBEAgASAGQQJ0aigCACIFQYDYAmsiAkGj1wBNDQFBugUhAkEAIQQCQANAIAIgBEgNASAFIAIgBGpBAm0iCEECdEHQ4wJqKAIAIglBDnYiCkkEQCAIQQFrIQIMAQsgBSAJQQd2Qf8AcSIEIApqTwRAIAhBAWohBAwBCwsgCUEBcSADSw0AIAcgBSAIIAogBCAJQQF2QT9xEJQGIgJFDQAgACAHIAIgAxCVBgwDCyAAIAUQGwwCCyAHQdAAaiQADwsgACACQf\u002F\u002FA3EiBUHMBG4iBEGAInIQGyAAIAIgBEHMBGxrQf\u002F\u002FA3FBHG5B4SJqEBsgBUEccCICRQ0AIAAgAkGnI2oQGwsgBkEBaiEGDAALAAsiAQF\u002FQQEhASAAEJ4EBH9BAQUgAEHgnQJBgKMCQRUQpQMLC00BBX8gACgCCCEDIABBADYCCCAAKAIAIQQgAEIANwIAIAAoAhAhBSAAKAIMIQcgACADIAQgASACQQAQ7AEhACAHIANBACAFEQEAGiAAC7EBAQd\u002FIAAoAggiA0EEaiEFIAAoAgAhBgNAIAFBAWoiAiAGTkUEQAJAIAMgAUECdGooAgAiByADIAJBAnRqKAIARgRAIAEhAgwBCwNAIAYgASICQQNqSgRAIAUgAUECdGooAgAgAyABQQJqIgFBAnRqKAIARg0BCwsgAyAEQQJ0aiIBIAc2AgAgASAFIAJBAnRqKAIANgIEIARBAmohBAsgAkECaiEBDAELCyAAIAQ2AgALEQAgAEHgjQJB0JMCQRcQpQMLzwEBA38gASACLwAAIAItAAJBEHRBgID8AHFySQRAIABBADYCAEEADwtBfyEFIAEgAiADQQFrIgRBA2xqIgMvAAAgAy0AAkEQdHJJBH9BACEDA0AgBCADa0ECSEUEQCADIARqQQJtIgUgBCACIAVBA2xqIgQvAAAgBC0AAkEQdEGAgPwAcXIgAUsiBhshBCADIAUgBhshAwwBCwsgACACIANBA2xqIgAvAAAgAC0AAiIAQRB0QYCA\u002FABxcjYCACADQQV0IABBBXZyQSBqBUF\u002FCwtuAQV\u002FQfECIQEDQCABIAJOBEAgACABIAJqQQF2IgNBAnRBoIACaigCACIEQQ92IgVJBEAgA0EBayEBDAILIAAgBEEIdkH\u002FAHEgBWpJBEBBAQ8FIANBAWohAgwCCwALCyAAQfCLAkHAjQJBBxClAwupAQECfyMAQRBrIgQkAAJ\u002FIAMEQCAEQQRqIABBAiABIAIQoARBAUYEQCAEKAIEDAILQYX2AyAAQYb2A0YNARpBkAcgAEHTP0YNARpBsAcgACAAQeM\u002FRhsMAQsgAEEgayAAIABB4QBrQRpJGyAAQf8ATQ0AGiAEQQRqIABBACABIAIQoAQhASAEKAIEIgIgACACQf8ASxsgACABQQFGGwshBSAEQRBqJAAgBQupAQEFfwJAIAFB\u002FwBLBEBB8QIhAwNAIAMgBEgNAiABIAMgBGpBAXYiBUECdEGggAJqKAIAIgZBD3YiB0kEQCAFQQFrIQMMAQsgASAGQQh2Qf8AcSAHak8EQCAFQQFqIQQMAQsLIAAgASACIAUgBhCgBA8LIAIEQCABQSByIAEgAUHBAGtBGkkbIQEMAQsgAUEgayABIAFB4QBrQRpJGyEBCyAAIAE2AgBBAQuRAgEDfyABKAIAIgJB\u002Fv8HTwRAIABBkClBABA\u002FQX8PCwJAIAJBAU0EQCAAQQJBfxC3ARoMAQsgASgCCCACQQJ0aiIEQQRrKAIAIgNBf0YEQCAEQQhrKAIAIQMLIAJBAXYhAiADQf\u002F\u002FA00EQCAAQRUgAhChBEEAIQIDQCACIAEoAgBODQIgACACQQJ0IgMgASgCCGovAQAQJiAAQX8gASgCCCADaigCBEEBayIDIANBfkYbQf\u002F\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\u002FwdxIAtB\u002FwdxQQp0ckGAgARqIQkMAgsgBUEBayIFLQAAIQsgCkEBayIKLQAAIQkMAgsgByEKCwJAIAVBAmsiBy8BACILQYD4A3FBgLgDRyAHIA5NciAMQQJHcg0AIAVBBGsiBS8BACIOQYD4A3FBgLADRw0AIAtB\u002FwdxIA5B\u002FwdxQQp0ckGAgARqIQsMAQsgByEFCyAAKAIYBH8gCSAAKAIcENYBIQkgCyAAKAIcENYBBSALCyAJRg0ACwwMC0G7GEG\u002F7ABBjhFB98UAEAAAC0GkGEG\u002F7ABBhRFB98UAEAAACyAEQQVqIgggCCAEKAABaiIKIAlBCUYiCxshBEF\u002FIQkgACABIAIgAyAKIAggCxsgB0EAQQAQpgRBAE4NDgwLCxABAAsgBEERaiIQIAQoAAFqIRIgBCgABSEOQQAhCiAEKAAJIgRB\u002F\u002F\u002F\u002F\u002FwdGIREDQAJAAkAgACABIAIgAyAQIAVBARCjBiIJQQFqDgIMAQALIAkhBSAEIApBAWoiCksgEXINAQsLIAogDkkNByASIQQgCiAOTQ0MIAAgASACIAMgCCAFQQMgCiAOaxCmBEEATg0MDAYLIAcgACgCACIJRg0GIAxFBEAgB0EBayEFIAghBAwMCyAHQQJrIQUgCCEEIAxBAkcNCyAFLwEAQYD4A3FBgLgDRyAFIAlNcg0LIAdBBGsiByAFIAcvAQBBgPgDcUGAsANGGyEFDAsLIAcgDU8NBQJAIAxFBEAgB0EBaiEFIActAAAhCAwBCyAHLwEAIghBgPgDcUGAsANHIAxBAkdyIA0gB0ECaiIFTXINACAFLwEAIglBgPgDcUGAuANHDQAgCEEKdEGA+D9xIAlB\u002FwdxckGAgARqIQggB0EEaiEFCyAELwABIQogACgCGARAIAggACgCHBDWASEICyAIIARBA2oiBygAAEkNBUEAIQkgCCAHIApBAWsiBEEDdGooAARLDQUDQCAEIAlJDQYgByAEIAlqQQF2IgtBA3RqIg4oAAAgCEsEQCALQQFrIQQMAQsgDigABCAISQRAIAtBAWohCQwBCwsgByAKQQN0aiEEDAoLIAcgDU8NBAJAIAxFBEAgB0EBaiEFIActAAAhCAwBCyAHLwEAIghBgPgDcUGAsANHIAxBAkdyIA0gB0ECaiIFTXINACAFLwEAIglBgPgDcUGAuANHDQAgCEEKdEGA+D9xIAlB\u002FwdxckGAgARqIQggB0EEaiEFCyAELwABIQogACgCGARAIAggACgCHBDWASEICyAIIARBA2oiBy8AAEkNBAJAIAcgCkEBayIEQQJ0ai8AAiIJQf\u002F\u002FA0YgCEH\u002F\u002FwNPcQ0AIAggCUsNBUEAIQkDQCAEIAlJDQYgByAEIAlqQQF2IgtBAnRqIg4vAAAgCEsEQCALQQFrIQQMAQsgDi8AAiAIQf\u002F\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\u002F\u002FA0wEQCAAQQEgBhChBAwBCyAAQQIgBhC3ARoLIAFFDQQgAEEbEA4MBAsgAEEEQQMgACgCMBsQDgsgECECDAILIAQgAkEBaiIHNgIcIABBBRAODAULIAIgCWohBUF\u002FIQICQCAIDQAgACgCKA0AIAAoAjQhDSAQIQILIABBGEEXIAZBIUYbQQAQtwEhBiAAIAU2AhggACADEKgDDQggBCAAKAIYNgIcIAAgBEEcakEpEKYDDQggAEEKEA4gACgCDA0IIAAoAgAgBmogACgCBCAGa0EEazYAAAsgBCgCHCEHIAJBAEgNAwJAAkACQAJAAkAgBy0AACIDQSprDgIBAgALIANBP0YNAiADQfsARw0HIActAAFBOmtBdUsNAyAAKAIoRQ0HDAgLIAdBAWohB0EAIQtB\u002F\u002F\u002F\u002F\u002FwchCgwFC0EBIQsgBCAHQQFqIgc2AhxB\u002F\u002F\u002F\u002F\u002FwchCgwEC0EBIQogBCAHQQFqIgc2AhxBACELDAMLIAQgB0EBajYCHCAEQRxqQQEQ1AIiCyEKAkAgBCgCHCIDLQAAIgVBLEcNACAEIANBAWo2AhxB\u002F\u002F\u002F\u002F\u002FwchCiADLQABIgVBOmtBdkkNACAEQRxqQQEQ1AIiCiALSA0FIAQoAhwtAAAhBQsgBUH\u002FAXFB\u002FQBGDQEgACgCKA0BCyAEIAc2AhwMAgsgACAEQRxqQf0AEKYDDQUgBCgCHCEHCwJAAkAgBy0AAEE\u002FRgRAIAQgB0EBaiIHNgIcIAAoAgQgAmshCUEAIQxBACEDDAELIAAoAgwhCAJAIApBAEwNACAIDQIgACgCBCACayEMIAAoAgAgAmohDkEAIQVBACEJA0AgBSAMSARAIAUgDmoiES0AACISQYCAAmotAAAhBkECIQMCQAJAAkACQCASQQFrDhYCAgICAwMGBgYGBgYGBgYGAwMGBgEABgtBAyEDCyARLwABIAN0IAZqIQYLIAlBAWohCQsgBSAGaiEFDAELCyAJQQBMDQAgAEEKEA4gACACQREQlgINAiAAKAIAIAJqQRw6AAAgACgCBCEGIAAoAgAgAmoiAyAJNgANIAMgCjYACSADIAs2AAUgAyAGIAJrQRFrNgABDAMLIAgNASAAKAIEIAJrIQkgACgCACACaiERQQAhBUEBIQgDQCAFIAlOBEBBASEMIAghAwwCCyAFIBFqIg4tAAAiEkGAgAJqLQAAIQZBASEMQQEhAwJAAkACQAJAIBJBAWsOGwICAgIDAwUFBQUDAwMFAwMDAwMDAAEFBQMFAwULIA4vAAFBAnQgBmohBgwBCyAOLwABQQN0IAZqIQYLQQAhCAsgBSAGaiEFDAALAAsgC0UEQCAAKAI0IA1HBEAgACACQQMQlgINAiAAKAIAIAJqQQ06AAAgACgCACACaiANOgABIAAoAgAgAmogAC0ANEEBazoAAiACQQNqIQILIApFBEAgACACNgIEDAMLIApB\u002F\u002F\u002F\u002F\u002FwdGIgZFIApBAUdxRQRAIAAgAiADQQVqEJYCDQIgACgCACACaiAMQQhyOgAAIAAoAgAgAmoiCCADQQF0QQVBACAGG2ogCWo2AAEgAwRAIAhBGToABSAAQRoQDgsgCkH\u002F\u002F\u002F\u002F\u002FB0cNAyAAQQcgAhCVAgwDCyAAIAIgA0EKahCWAg0BIAAoAgAgAmpBDzoAACAAKAIAIAJqIgYgDEEIcjoABSAGIAo2AAEgACgCACACaiIGIANBAXQgCWpBBWo2AAYgAwRAIAZBGToACiAAQRoQDgsgAEEOIAJBBWoQlQIgAEEQEA4MAgsgAyALQQFHIApB\u002F\u002F\u002F\u002F\u002FwdHcnJFBEAgACAMQQlzIAIQlQIMAgsgC0EBRwRAIAAgAkEFEJYCDQEgACgCACACakEPOgAAIAAoAgAgAmogCzYAASAAQQ4gAkEFaiICEJUCIABBEBAOCyAKQf\u002F\u002F\u002F\u002F8HRgRAIAAoAgQhBiAAIAxBCHIgA0EBdCAJakEFahC3ARoCQCADBEAgAEEZEA4gACACIAkQ3wIgAEEaEA4MAQsgACACIAkQ3wILIABBByAGEJUCDAILIAogC0wNASAAQQ8gCiALaxC3ARogACgCBCEGIAAgDEEIciADQQF0IAlqQQVqELcBGgJAIAMEQCAAQRkQDiAAIAIgCRDfAiAAQRoQDgwBCyAAIAIgCRDfAgsgAEEOIAYQlQIgAEEQEA4MAQsgABDVAgwECyAAIAc2AhggAUUNASAAIAAoAgQiAiAQayIQIAJqELwBDQMgACgCACATaiIDIBBqIAMgAiATaxCrASAAKAIAIgMgE2ogAiADaiAQEB4aDAELCyAAQegYQQAQPwwBCyAAQdEfQQAQPwtBfyEdCyAEQdAAaiQAIB0LoggCCH4EfyMAQRBrIg0kACAEQcqeAWotAAAiD60hCgJAAkAgAykDACIGQv\u002F\u002F\u002F\u002F9vWARAQoCAgIDgACEFIAAgDUEIaiAGEKQBDQJCACEGIABCgICAgDAgDSkDCCIIIAqGEPoCIgdCgICAgHCDQoCAgIDgAFENAgwBCwJAAkAgBqciDi8BBiICQRNrQf\u002F\u002FA3FBAU0EQCAOKAIgIQ5CgICAgOAAIQUgACANIAMpAwgQpAENBCAOLQAEDQICQCANKQMAIgZBfyAPdEF\u002FcyIPrYNQBEAgDigCACICrCIHIAZaDQELIABB\u002FhtBABBEDAULAkAgAykDECIIQoCAgIBwg0KAgICAMFEEQCACIA9xDQEgByAGfSAKiCEIDAMLIAAgDUEIaiAIEKQBDQUgDi0ABA0DIA40AgAgDSkDCCIIIAqGIAZ8Wg0CCyAAQbvHAEEAEEQMBAsgAkEVa0H\u002F\u002FwNxQQpNBEAgACABIAYgBBD5AiEFDAQLQoCAgIDgACEFIAAgASAEEF4iCEKAgICAcINCgICAgOAAUQ0DQoCAgIAwIQECfgJAAkAgACAGQcwBIAZBABARIgxCgICAgHCDIgVCgICAgCBRIAVCgICAgDBRckUEQCAFQoCAgIDgAFENAkIAIQUCQCAAEDsiB0KAgICAcINCgICAgOAAUQRAQoCAgIDgACEBDAELQoCAgIDgACEBQoCAgIAwIQsCQCAAIAYgDBDkAyIJQoCAgIBwg0KAgICA4ABRDQBBACEEIAAgCUHrACAJQQAQESILQoCAgIBwg0KAgICA4ABRDQADQCAAIAkgCyANQQhqEJEBIgZCgICAgHCDQoCAgIDgAFENASANKAIIBEAgACAGEAwgACALEAwgACAJEAwgBK0hBSAHIQEMAwsgACAHIAStIAZBgIABEMgBQQBIDQEgBEEBaiEEDAALAAsgACALEAwgACAJEAwgACAHEAwLIAAgDBAMIAFCgICAgHCDQoCAgIDgAFINAQwCCyAAIA1BCGogBhAvDQEgDiAOKAIAQQFqNgIAIA0pAwghBSAGIQELIABCgICAgDAgBSAKhhD6AiIHQoCAgIBwg0KAgICA4ABRDQAgACAIIAdCACAFEOMDDQBBACEEA0AgCCAErSAFWQ0CGiAAIAEgBBCmASIHQoCAgIBwg0KAgICA4ABRDQEgACAIIAQgBxCGAiEQIARBAWohBCAQQQBODQALCyAAIAEQDCAIIQFCgICAgOAACyEFIAAgARAMDAMLIAMpAwAiB0IgiKdBdUkNASAHpyICIAIoAgBBAWo2AgAMAQsgABBfDAELIAAgASAEEF4iAUKAgICAcINCgICAgOAAUQRAIAAgBxAMDAELIAAgASAHIAYgCBDjA0UEQCABIQUMAQsgACABEAwLIA1BEGokACAFC9IEAgZ\u002FAX4jAEEgayIFJAAgACgCACEEIAVCADcCGCAFQoCAgICAgICAgH83AhAgBSAENgIMIAVBDGoiBCABIAJBIGoiAUHmDxCqAyAEIAQgAyABQeYPEEAaAkAgBSgCFEH\u002F\u002F\u002F\u002F\u002FB0YEQCAAECoMAQsjAEEwayICJAACQCAFQQxqIgMgAEcEQCAAKAIAIQcgAkIANwIoIAJCgICAgICAgICAfzcCICACIAc2AhwCfyADKAIIIgZBAEgEQEF\u002FQQAgAygCBBsMAQsgAkEcaiIEQSBBARCYAiAEIAMgBEEgQQIQiAEaIAJBGGogBEEAEO0BIAMoAgghBiACKAIYCyEIIAJBHGoiBCABIAZBACAGQQBKG2ogAUEBayABQQFqQQF2ELkEIgZuQQFqIgkgBmpBAXRqQRpqIgFBBhCYAiAEIAQgCKwgAUEAENgCIAQgAyAEIAFBABDuARogBEEAIAZrQQEQuQEaIAJCADcCECACQoCAgICAgICAgH83AgggAiAHNgIEIABCARAyGiAJrSEKA0AgCqdBAEoEQCACQQRqIgMgChAyGiADIAJBHGogAyABQQAQiAEaIAAgACADIAFBABBAGiAAIABCASABQQAQehogCkIBfSEKDAELC0EAIQMgBkEAIAZBAEobIQQgAkEEahAZIAJBHGoQGQNAIAMgBEcEQCAAIAAgACABQeAPEEAaIANBAWohAwwBCwsgACAIQeEPELkBGiACQTBqJAAMAQtB6e0AQdjsAEHUIUGzxAAQAAALCyAFQQxqEBkgBUEgaiQAQRALrwEBAn8jAEEgayIEJAAgACgCACEFIARBCGogA0EAEO0BIAAgASAEKAIIIgEgAUEfdSIBcyABayIBIAJBwAAgAUEBa2dBAXRrQQAgAUECTxtqQQhqIgJB4A8QrwMhASADKAIEBEAgBEIANwIYIARCgICAgICAgICAfzcCECAEIAU2AgwgBEEMaiIDQgEQMhogACADIAAgAkHgDxCIASABciEBIAMQGQsgBEEgaiQAIAELkAYCCH8BfiMAQfAAayIDJAAgACABRwRAIAAoAgAhBCADQgA3AmggA0KAgICAgICAgIB\u002FNwJgIAMgBDYCXCADQdwAaiIFIAEQSRogA0IANwJUIANCgICAgICAgICAfzcCTCADIAQ2AkggAygCZCEGIANBADYCZCADQcgAaiIBQqrVqtUKEDIaIANBADYCUCAFIAEQrAIEQCADIAMoAmRBAWo2AmQgBkEBayEGCyADQcgAahAZIAJBAWpBAXYQuQQhBSADQgA3AlQgA0KAgICAgICAgIB\u002FNwJMIAMgBDYCSCADQgA3AkAgA0KAgICAgICAgIB\u002FNwI4IAMgBDYCNCADQdwAaiIBIAFCf0H\u002F\u002F\u002F\u002F\u002FA0EAEHoaIAVBACAFQQBKGyEJIAIgBWogAiAFQQF0bkEBaiIKQQF0akEgaiECQQAhAQNAIAEgCUZFBEAgA0HIAGoiByADQdwAaiIIQgEgAkEAEHoaIANBNGoiCyAHIAJBBhC1BCAHIAtCASACQQAQehogCCAIIAcgAkEAEIgBGiABQQFqIQEMAQsLIANCADcCLCADQoCAgICAgICAgH83AiQgAyAENgIgIANCADcCGCADQoCAgICAgICAgH83AhAgAyAENgIMIANBIGoiASADQdwAaiIEQgIgAkEAEHoaIAEgBCABIAJBABCIARogA0EMaiABIAEgAkEAEEAaIABCABAyGiAKrSEMA0AgDKdBAExFBEAgA0HIAGoiAUIBEDIaIANBNGoiBCAMQgGGQv7\u002F\u002F\u002F8Pg0IBhBAyGiABIAEgBCACQQAQiAEaIAAgACABIAJBABC4ARogACAAIANBDGogAkEAEEAaIAxCAX0hDAwBCwsgACAAQgEgAkEAEHoaIAAgACADQSBqIgEgAkEAEEAaIAEQGSADQQxqEBkgA0E0ahAZIANByABqEBkgACAFQQFqQQEQuQEaIANB3ABqIgEgAkEGEJgCIAEgASAGrCACQQAQ2AIgACAAIAEgAkEAELgBGiABEBkgA0HwAGokAEEQDwtB6e0AQdjsAEHtIkHDxAAQAAALEwAgACgCACABIAIgACgCBBEBAAsTACAAQbDqAEEAEBJCgICAgOAAC9YDAQd\u002FIAIoAgQgASgCBHMhBwJAAkACQAJAAkACQAJAIAEoAggiBkH9\u002F\u002F\u002F\u002FB0wEQCACKAIIIgVB\u002Ff\u002F\u002F\u002FwdKDQEgBkGAgICAeEcNBiAFQYCAgIB4Rg0EDAcLIAZB\u002F\u002F\u002F\u002F\u002FwdGDQEgAigCCCEFCyAFQf\u002F\u002F\u002F\u002F8HRw0BCyAAECpBAA8LIAZB\u002Fv\u002F\u002F\u002FwdHIgEgBUH+\u002F\u002F\u002F\u002FB0dyDQELIAAQKkEBDwsgAQ0BIAAgBxB\u002FQQAPCyAFQYCAgIB4RgRAIAAgBxB\u002FQQIPCwJAIAAoAgAiBSgCAEEAIAEoAgwiBiADQSFqQQV2IgggBiAIShsiCiACKAIMIghqIglBAnRBBGogBSgCBBEBACIGBEAgBkEAIAkgASgCDGtBAnQiCxAsIgYgC2ogASgCECABKAIMQQJ0EB4aIAAgCkEBahBQRQRAIAUgACgCECAGIAkgAigCECAIELMDRQ0CCyAFKAIAIAZBACAFKAIEEQEAGgsgABAqQSAPCyAGIAgQ2gIEQCAAKAIQIgUgBSgCAEEBcjYCAAsgACgCACIFKAIAIAZBACAFKAIEEQEAGiACKAIIIQIgASgCCCEBIAAgBzYCBCAAIAEgAmtBIGo2AgggACADIAQQmwIPCyAAIAcQgAFBAAsRACAAIAEgAiADIARBABC0BAtCAQF+IwBBEGsiAiQAQoCAgIDgACEEIAAgAkEIaiADKQMAEKQBRQRAIAAgASACKQMIQRQQ5QMhBAsgAkEQaiQAIAQLEQAgACABIAIgAyAEQQEQtAQLQAEBfiMAQRBrIgIkAEKAgICA4AAhBCAAIAJBCGogAykDABCkAUUEQCAAIAEgAikDCBD6AiEECyACQRBqJAAgBAs7AQF\u002FA0AgAgRAIAAtAAAhAyAAIAEtAAA6AAAgASADOgAAIAFBAWohASAAQQFqIQAgAkEBayECDAELCwsaACAALQAAIQIgACABLQAAOgAAIAEgAjoAAAtCAQF\u002FIAJBAXYhAgNAIAIEQCAALwEAIQMgACABLwEAOwEAIAEgAzsBACABQQJqIQEgAEECaiEAIAJBAWshAgwBCwsLGgAgAC8BACECIAAgAS8BADsBACABIAI7AQALQgEBfyACQQJ2IQIDQCACBEAgACgCACEDIAAgASgCADYCACABIAM2AgAgAUEEaiEBIABBBGohACACQQFrIQIMAQsLCxoAIAAoAgAhAiAAIAEoAgA2AgAgASACNgIAC0IBAX4gAkEDdiECA0AgAgRAIAApAwAhAyAAIAEpAwA3AwAgASADNwMAIAFBCGohASAAQQhqIQAgAkEBayECDAELCwscAQF+IAApAwAhAyAAIAEpAwA3AwAgASADNwMAC9QDAgF\u002FA34jAEEgayIGJAACQAJAAkAgBUEBcQRAQoCAgIDgACEHIAAgBkEYaiABQd8AEH4iBUUNAwJAIAUpAwAiAUKAgICAcFoEQCABpy0ABUEQcQ0BCyAAQZ0sQQAQEgwECyAGKQMYIghCgICAgHCDQoCAgIAwUQRAIAAgASACIAMgBBD+AiEHDAQLIAAgAyAEEP0CIglCgICAgHCDQoCAgIDgAFENAiAFKQMAIQEgBiACNwMQIAYgCTcDCCAGIAE3AwAgACAIIAUpAwhBAyAGEBwiAUL\u002F\u002F\u002F\u002F\u002Fb1YNASABQoCAgIBwg0KAgICA4ABRDQEgACABEAwgABAiDAILQoCAgIDgACEHIAAgBkEYaiABQdsAEH4iBUUNAiAGKQMYIQEgBS0AEEUEQCAAIAEQDCAAQfs5QQAQEgwDCyABQoCAgIBwg0KAgICAMFEEQCAAIAUpAwAgAiADIAQQHCEHDAMLIAAgAyAEEP0CIghCgICAgHCDQoCAgIDgAFIEQCAFKQMAIQcgBiAINwMQIAYgAjcDCCAGIAc3AwAgACABIAUpAwhBAyAGEBwhBwsgACABEAwgACAIEAwMAgsgASEHCyAAIAgQDCAAIAkQDAsgBkEgaiQAIAcLWgECfiACQQR2IQIDQCACBEAgACkDACEDIAAgASkDADcDACAAKQMIIQQgACABKQMINwMIIAEgBDcDCCABIAM3AwAgAUEQaiEBIABBEGohACACQQFrIQIMAQsLCzQBAn4gACkDACEDIAAgASkDADcDACAAKQMIIQQgACABKQMINwMIIAEgBDcDCCABIAM3AwALhAUCBH4BfyADKQMIIQYCQCAAIAMpAwAiBBD2AyICQQBOBEACQCABQoCAgIBwg0KAgICAMFINACAAKAIQKAKMASkDCCEBIAJFIAZCgICAgHCDQoCAgIAwUnINACAAIARBPSAEQQAQESIFQoCAgIBwg0KAgICA4ABRBEAgBQ8LIAAgBSABEE0hCCAAIAUQDCAIRQ0AIARCIIinQXVJDQIgBKciACAAKAIAQQFqNgIADAILAkACQAJAAkACQCAEQoCAgIBwVA0AIASnIgMvAQZBEkcNACADKAIgIgIgAigCAEEBajYCACACrUKAgICAkH+EIQUgBkKAgICAcINCgICAgDBSDQEgAygCJCICIAIoAgBBAWo2AgAgAq1CgICAgJB\u002FhCEEDAMLAkACQAJAIAIEQCAAIARB7QAgBEEAEBEiBUKAgICAcINCgICAgOAAUQRAQoCAgIAwIQYMCAsgBkKAgICAcINCgICAgDBRBEAgACAEQe4AIARBABARIgZCgICAgHCDQoCAgIDgAFINBAwICyAFIQQgBkIgiKdBdEsNAQwDCyAEQiCIp0F1TwRAIASnIgIgAigCAEEBajYCAAsgBkIgiKdBdUkNAQsgBqciAiACKAIAQQFqNgIACyAEIQULIAVCgICAgHCDQoCAgIAwUQRAIABBLxApIQUMAgsgACAFECUhByAAIAUQDCAHIgVCgICAgHCDQoCAgIDgAFENAwwBCyAAIAYQJSIGQoCAgIBwg0KAgICA4ABRDQILIAAgBSAGELkDIgRCgICAgHCDQoCAgIDgAFENASAAIAYQDAsgACABIAUgBBDLBQ8LIAAgBRAMIAAgBhAMC0KAgICA4AAPCyAEC68EAgR\u002FAX4jAEEgayIFJABCgICAgOAAIQkCQCAAIAFBIBBaIgdFDQAgBEHKngFqLQAAIQggACAFQQhqIAMpAwAQpAENACADKQMIIQEgBUIANwMYIAVBADYCFAJAIARBG0wEQCAAIAVBFGogARB1RQ0BDAILIARBHU0EQCAAIAVBGGogARDRBUUNAQwCCyAAIAUgARBCDQEgBEEeRgRAIAUgBSsDALY4AhQMAQsgBSAFKQMANwMYCyACQQNOBEAgACADKQMQEOQBQQFGIQYLIAcoAgwoAiAiAi0ABARAIAAQXwwBCyAHNQIUIAUpAwgiAUEBIAh0rHxUBEAgAEHd4QBBABBEDAELIAGnIAIoAgggBygCEGpqIQACQAJAAkACQAJAIARBFmsOCgAAAQECAgMDAgMECyAAIAUoAhQ6AABCgICAgDAhCQwECyAFKAIUIQQgACAEIARBCHQgBEGA\u002FgNxQQh2ckH\u002F\u002FwNxIAYbOwAAQoCAgIAwIQkMAwsgACAFKAIUIgAgAEEYdCAAQYD+A3FBCHRyIABBCHZBgP4DcSAAQRh2cnIgBhs2AABCgICAgDAhCQwCCyAAIAUpAxgiASABQjiGIAFCgP4Dg0IohoQgAUKAgPwHg0IYhiABQoCAgPgPg0IIhoSEIAFCCIhCgICA+A+DIAFCGIhCgID8B4OEIAFCKIhCgP4DgyABQjiIhISEIAYbNwAAQoCAgIAwIQkMAQsQAQALIAVBIGokACAJC5IHAgF+BH8jAEEQayIHJABCgICAgOAAIQUCQCAAIAFBIBBaIghFDQAgBEHKngFqLQAAIQkgACAHQQhqIAMpAwAQpAENACACQQJOBEAgACADKQMIEOQBQQFGIQYLIAgoAgwoAiAiAi0ABARAIAAQXwwBCyAINQIUIAcpAwgiAUEBIAl0rHxUBEAgAEHd4QBBABBEDAELIAGnIAIoAgggCCgCEGpqIQICQAJAAkACQAJAAkACQAJAAkACQAJAIARBFmsOCgoAAQIDBAUGBwgJCyACMQAAIQUMCgsgAi8AACIAIABBCHQgAEEIdnIgBhutw0L\u002F\u002F\u002F\u002F\u002FD4MhBQwJCyACLwAAIgAgAEEIdCAAQQh2ciAGG61C\u002F\u002F8DgyEFDAgLIAIoAAAiACAAQRh0IABBgP4DcUEIdHIgAEEIdkGA\u002FgNxIABBGHZyciAGG60hBQwHCyACKAAAIgAgAEEYdCAAQYD+A3FBCHRyIABBCHZBgP4DcSAAQRh2cnIgBhsiAEEATgRAIACtIQUMBwtCgICAgMB+IAC4vSIBQoCAgIDAgYD8\u002FwB9IAFCgICAgICAgPj\u002FAFYbIQUMBgsgACACKQAAIgEgAUI4hiABQoD+A4NCKIaEIAFCgID8B4NCGIYgAUKAgID4D4NCCIaEhCABQgiIQoCAgPgPgyABQhiIQoCA\u002FAeDhCABQiiIQoD+A4MgAUI4iISEhCAGGxC\u002FAiEFDAULIAAgAikAACIBIAFCOIYgAUKA\u002FgODQiiGhCABQoCA\u002FAeDQhiGIAFCgICA+A+DQgiGhIQgAUIIiEKAgID4D4MgAUIYiEKAgPwHg4QgAUIoiEKA\u002FgODIAFCOIiEhIQgBhsQiAQhBQwEC0KAgICAwH4gAigAACIAIABBGHQgAEGA\u002FgNxQQh0ciAAQQh2QYD+A3EgAEEYdnJyIAYbvru9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhshBQwDC0KAgICAwH4gAikAACIBIAFCOIYgAUKA\u002FgODQiiGhCABQoCA\u002FAeDQhiGIAFCgICA+A+DQgiGhIQgAUIIiEKAgID4D4MgAUIYiEKAgPwHg4QgAUIoiEKA\u002FgODIAFCOIiEhIQgBhsiAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGyEFDAILEAEACyACMAAAQv\u002F\u002F\u002F\u002F8PgyEFCyAHQRBqJAAgBQurAQIEfwF+IwBBEGsiBSQAIAUgAq03AwgCQCAAIAFBASAFQQhqEL8DIgFCgICAgHCDQoCAgIDgAFENACACQQAgAkEAShshAgNAIAIgBEYNASADIARBA3RqKQMAIghCIIinQXVPBEAgCKciBiAGKAIAQQFqNgIACyAAIAEgBCAIEIYCIQcgBEEBaiEEIAdBAE4NAAsgACABEAxCgICAgOAAIQELIAVBEGokACABC4EHAgl+BX8jAEEwayINJAAgAykDACEEIA1CgICAgDA3AxhBASEOAkACQAJ+IAJBAkgEQEKAgICAMCEKQoCAgIAwDAELQoCAgIAwIAMpAwgiCkKAgICAcINCgICAgDBRDQAaQoCAgIAwIQlCgICAgDAhBkKAgICAMCEHQoCAgIAwIQUgACAKEFUNAUEAIQ5CgICAgDAgAkECRg0AGiADKQMQCyELAkACQCAAIARBzAEgBEEAEBEiBkKAgICAcIMiBUKAgICAMFIEQCAFQoCAgIDgAFEEQEKAgICAMCEJQoCAgIAwIQZCgICAgDAhBwwDCyAAIAYQDCAAEDsiB0KAgICAcINCgICAgOAAUQRAQoCAgIAwIQlCgICAgDAhBkKAgICA4AAhBwwDCyAEQiCIp0F1TwRAIASnIgIgAigCAEEBajYCAAsgDSAENwMQIAAgDUEQakEIckEAEIUDIQ8gDSkDGCEJIA0pAxAhBiAPDQJCACEFA0AgACAGIAkgDUEEahCRASIEQoCAgIBwg0KAgICA4ABSBEAgDSgCBA0DIAAgByAFIAQQZyEQIAVCAXwhBSAQQQBODQELC0KAgICAMCEFIAZCgICAgHCDQoCAgIAwUQ0DIAAgBkEBEJABGgwDC0KAgICAMCEJQoCAgIAwIQZCgICAgDAhBSAAIAQQICIHQoCAgIBwg0KAgICA4ABRDQILIAAgDUEIaiAHEC9BAEgNACANAn4gDSkDCCIEQoCAgIAIfEL\u002F\u002F\u002F\u002F\u002FD1gEQCAEQv\u002F\u002F\u002F\u002F8PgwwBC0KAgICAwH4gBLm9IgVCgICAgMCBgPz\u002FAH0gBUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLIgg3AyAgACABQQEgDUEgahC\u002FAyEFIAAgCBAMAkAgBUKAgICAcINCgICAgOAAUQ0AQgAhCCAEQgAgBEIAVRshDANAIAggDFENBCAAIAcgCBBsIgRCgICAgHCDQoCAgIDgAFENAQJAIA4EQCAEIQEMAQsgDSAENwMgIA0gCEL\u002F\u002F\u002F\u002F\u002FD4M3AyggACAKIAtBAiANQSBqEBwhASAAIAQQDCABQoCAgIBwg0KAgICA4ABRDQILIAAgBSAIIAEQeyERIAhCAXwhCCARQQBODQALCwwBC0KAgICAMCEFCyAAIAUQDEKAgICA4AAhBQsgACAHEAwgACAGEAwgACAJEAwgDUEwaiQAIAULDwAgACsDACABKwMAEMQECzkBAX5CgICAgMB+IAEpAwAiAkKAgICAwIGA\u002FP8AfSACQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwsRACAAKgIAuyABKgIAuxDEBAs7AQF+QoCAgIDAfiABKgIAu70iAkKAgICAwIGA\u002FP8AfSACQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwsZAQJ+IAEpAwAiAyAAKQMAIgRUIAMgBFZrCwwAIAAgASkDABCIBAsZAQJ+IAEpAwAiAyAAKQMAIgRTIAMgBFVrCwwAIAAgASkDABC\u002FAgsXACABKAIAIgEgACgCACIASSAAIAFJaws9AQF+IAEoAgAiAEEATgRAIACtDwtCgICAgMB+IAC4vSICQoCAgIDAgYD8\u002FwB9IAJCgICAgICAgPj\u002FAFYbC9sFAwV\u002FA34BfCMAQUBqIgUkAAJAAnwCQAJAAkACQAJAIAJBACABQoCAgIBwgyILQoCAgIAwUhsiAg4CAgABCwJAIAMpAwAiCUKAgICAcFQNACAJpyIELwEGQQpHDQAgBCkDICIKQiCIpyIEQQAgBEELakESSRsNACAAIAUgChBCDQMMBAsgBSAAIAlBAhC7AiIJNwM4IAlCgICAgHCDQoCAgICQf1EEQCAAIAEgBCAFQThqEKkFIQogACAJEAwgCkKAgICAcINCgICAgOAAUQ0DIAAgBSAKEG1FDQQMAwsgACAFIAkQbUUNAwwCCyAFQQBBOBAsIgZCgICAgICAgPg\u002FNwMQQQcgAiACQQdOGyIHQQAgB0EAShshAgNAAkAgAiAERwRAIAAgBkE4aiADIARBA3QiCGopAwAQQg0EIAYrAzgiDL1CgICAgICAgPj\u002FAINCgICAgICAgPj\u002FAFINASAEIQILRAAAAAAAAPh\u002FIAIgB0cNBRogBkEBEOsDDAULIAYgCGogDJ05AwACQCAEDQAgBisDACIMRAAAAAAAAAAAZkUgDEQAAAAAAABZQGNFcg0AIAYgDEQAAAAAALCdQKA5AwALIARBAWohBAwACwALEKgFuQwCC0KAgICA4AAhAQwCCyAFKwMAIgydRAAAAAAAAAAAoEQAAAAAAAD4fyAMRAAA3MIIsj5DZRtEAAAAAAAA+H8gDEQAANzCCLI+w2YbCyEMAkAgACABQQoQXiIJQoCAgIBwg0KAgICA4ABRDQAgACAJAn4gDL0iAQJ\u002FIAyZRAAAAAAAAOBBYwRAIAyqDAELQYCAgIB4CyIEt71RBEAgBK0MAQtCgICAgMB+IAFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLEL0BIAtCgICAgDBSDQAgACAJIAQgBEETEKcFIQEgACAJEAwMAQsgCSEBCyAFQUBrJAAgAQsXACABKAIAIgEgACgCACIASCAAIAFIawsHACABNQIACw0AIAAvAQAgAS8BAGsLBwAgATMBAAsNACAALgEAIAEuAQBrCw4AIAEyAQBC\u002F\u002F\u002F\u002F\u002Fw+DCw0AIAAtAAAgAS0AAGsLBwAgATEAAAsNACAALAAAIAEsAABrCw4AIAEwAABC\u002F\u002F\u002F\u002F\u002Fw+DCxYAIAAgACkDwAEgAykDAEEDQX8QhwMLzQwEB38BfAF+AX0jAEEgayIGJABCgICAgOAAIQ0CQCAAIAEQigEiCUEASA0AQX8hBQJAAkACQCAJRQ0AQQEhCAJAAkAgBEEBRgRAQX8hCCAGIAlBAWsiBTYCHCACQQJIDQEgACAGQQhqIAMpAwgQQg0GIAYrAwgiDL1C\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgYCAgICAgPj\u002FAFoEQCAGQQA2AhwMAgsgDEQAAAAAAAAAAGYEQCAMIAW3Y0UNAiAGAn8gDJlEAAAAAAAA4EFjBEAgDKoMAQtBgICAgHgLNgIcDAILQX8hBSAMIAm3oCIMRAAAAAAAAAAAYw0EIAYCfyAMmUQAAAAAAADgQWMEQCAMqgwBC0GAgICAeAs2AhwMAQsgBkEANgIcIAJBAkgEQCAJIQIMAgsgACAGQRxqIAMpAwggCSICIAIQVg0FDAELQX8hAgsgAaciACgCICgCDCgCIC0ABARAQX8hBSAEQX9HDQJBf0EAIAM1AgRCIIZCgICAgDBSGyEFDAMLIAZCADcDEAJ\u002FQQcgAykDACIBQiCIpyIDIANBB2tBbkkbIgNBdkcEQCADQQdHBEBBfyEFIAMNAyAGIAHEIgE3AxAgAbkhDEEBIQdBAQwCCyAGAn4gAUKAgICAwIGA\u002FP8AfL8iDJlEAAAAAAAA4ENjBEAgDLAMAQtCgICAgICAgICAfwsiATcDEEEBIQcgDCABuWEMAQsgAachA0F\u002FIQUCfwJAAkAgAC8BBkEcaw4CAAEEC0EAIAZBEGogA0EEakEAELAERQ0BGgwDC0EBIQpCfyEBAkAgAygCDCIHQf\u002F\u002F\u002F\u002F8HRg0AAn5CACAHQQBMDQAaIAMoAggEQEIAIQEMAgsgB0HAAEsNASADKAIUIAMoAhAiA0ECdGoiCkEEaygCACILQSAgB2t2rSAHQSBNDQAaIANBAk8EfiAKQQhrNQIABUIACyALrUIghoRBwAAgB2utiAshAUEAIQoLIAYgATcDECAKDQJBAAshB0QAAAAAAAAAACEMQQALIQNBfyEFAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAC8BBkEVaw4LAQABAwQGBwsLCQoNCyADRQ0MIAYpAxAiDUKAAXxCgAJaDQwMAQsgA0UNCyAGKQMQIg1C\u002FwFWDQsLIAAoAiQhACAEQQFGBEAgDadB\u002F\u002F8DcSEDIAYoAhwhBQNAIAIgBUYNCyADIAAgBWotAABGDQwgBSAIaiEFDAALAAsgACAGKAIcIgJqIA2nQf\u002F\u002FA3EgCSACaxCSAiICRQ0KIAIgAGshBQwKCyADRQ0JIAYpAxAiDUKAgAJ8QoCABFoNCQwBCyADRQ0IIAYpAxAiDUL\u002F\u002FwNWDQgLIAAoAiQhACAGKAIcIQUgDadB\u002F\u002F8DcSEDA0AgAiAFRg0HIAAgBUEBdGovAQAgA0YNCCAFIAhqIQUMAAsACyADRQ0GIAYpAxAiDUKAgICACHxCgICAgBBaDQYMAQsgA0UNBSAGKQMQIg1C\u002F\u002F\u002F\u002F\u002Fw9WDQULIA2nIQMgACgCJCEAIAYoAhwhBQNAIAIgBUYNBCAAIAVBAnRqKAIAIANGDQUgBSAIaiEFDAALAAsgB0UNAyAMvUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KBgICAgICA+P8AWgRAIARBf0cNBSAAKAIkIQAgBigCHCEFA0AgAiAFRg0EIAAgBUECdGooAgBB\u002F\u002F\u002F\u002F\u002FwdxQYCAgPwHSw0FIAUgCGohBQwACwALIAwgDLYiDrtiDQMgACgCJCEAIAYoAhwhBQNAIAIgBUYNAyAAIAVBAnRqKgIAIA5bDQQgBSAIaiEFDAALAAsgB0UNAiAAKAIkIQAgDL1C\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgYCAgICAgPj\u002FAFoEQCAEQX9HDQQgBigCHCEFA0AgAiAFRg0DIAAgBUEDdGopAwBC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYNBCAFIAhqIQUMAAsACyAGKAIcIQUDQCACIAVGDQIgACAFQQN0aisDACAMYQ0DIAUgCGohBQwACwALIAcNASAAKAIkIQAgBigCHCEFIAYpAxAhAQNAIAIgBUYNASAAIAVBA3RqKQMAIAFRDQIgBSAIaiEFDAALAAtBfyEFCyAEQX9GDQELIAWtIQ0MAQsgBUEATq1CgICAgBCEIQ0LIAZBIGokACANC4MDAgR\u002FBH4jAEEgayIFJAACfiAAIAEQigEiCEEATgRAQSwhBwJAIAJBAEwgBHJFBEBCgICAgDAhCSADKQMAIgpCgICAgHCDQoCAgIAwUQ0BQoCAgIDgACAAIAoQJSIJQoCAgIBwg0KAgICA4ABRDQMaQX8hByAJpyIGKAIEQQFHDQEgBi0AECEHDAELQoCAgIAwIQkLIAAgBUEIakEAED4aQQAhAgJAA0AgAiAIRwRAAkAgAkUNACAHQQBOBEAgBUEIaiAHEDxFDQEMBAsgBUEIaiAGQQAgBigCBEH\u002F\u002F\u002F\u002F\u002FB3EQSw0DCyAAIAEgAhCmASILQoCAgIBwgyIKQoCAgIAgUSAKQoCAgIAwUXJFBEAgCkKAgICA4ABRDQMgBUEIaiAEBH4gACALENYEBSALCxCEAQ0DCyACQQFqIQIMAQsLIAAgCRAMIAVBCGoQNwwCCyAFKAIIKAIQIgJBEGogBSgCDCACKAIEEQAAIAAgCRAMC0KAgICA4AALIQwgBUEgaiQAIAwLXgEBfiAAIAFBABBrIgJFBEBCgICAgOAADwtCgICAgOAAIQQgAEKAgICAMCABIAIvAQYQ+QIiAUKAgICAcINCgICAgOAAUgRAIAAgASAAIAMQxQQhBCAAIAEQDAsgBAu9AgMDfwF+AXwjAEEgayIDJAAgAigCBEUEQCABKAIAIQUgAyACKAIAIgEgAigCHCAAKAIAIgAgAigCIGxqIAIoAhgRDgA3AxAgAyABIAIoAhwgBSACKAIgbGogAigCGBEOADcDGAJAIAEgAikDEEKAgICAMEECIANBEGoQHCIGQoCAgIBwg0KAgICA4ABRBEAgAkEBNgIEDAELAkACfyAGQv\u002F\u002F\u002F\u002F8PWARAIAanIgRBH3UgBEEAR3IMAQsgASADQQhqIAYQbUEASA0BIAMrAwgiB0QAAAAAAAAAAGQgB0QAAAAAAAAAAGNrCyIERQRAIAAgBUsgACAFSWshBAsgAigCCCgCICgCDCgCIC0ABEUNASACQQI2AgQMAQsgAkEBNgIECyABIAMpAxAQDCABIAMpAxgQDAsgA0EgaiQAIAQLoAICA38DfiMAQTBrIgIkAEKAgICA4AAhBwJAIAAgAUEAEGsiBUUNACAAIAJBDGogAykDACAFKAIoIgQgBBBWDQAgAiAENgIIIAMpAwgiCEKAgICAcINCgICAgDBSBEAgACACQQhqIAggBCAEEFYNASACKAIIIQQLIAIoAgwhAyAAIAFBABDHBCIIQoCAgIDwAINCgICAgOAAUQ0AIAUvAQYhBiAAIAgQDCAAIAFBABDIBCIJQoCAgIBwg0KAgICA4ABRDQAgBkHKngFqLQAAIQUgAiAJNwMYIAIgATcDECACIAQgA2siBEEAIARBAEobrTcDKCACIAinIAMgBXRqrTcDICAAQQQgAkEQahDhAiEHIAAgCRAMCyACQTBqJAAgBwvAAwIHfwR+IwBBIGsiAiQAQoCAgIAwIQsCQAJAIAAgARCKASIEQQBIDQAgACACQQxqIAMpAwAgBCAEEFYNACACIAQ2AgggAykDCCIMQoCAgIBwg0KAgICAMFIEQCAAIAJBCGogDCAEIAQQVg0BIAIoAgghBAsgAigCDCEDIAAgAUEAEGsiBkUNACAGLwEGIQkgAiAEIANrIgVBACAFQQBKGyIErSINNwMYIAIgATcDECAAQQIgAkEQahDhAiILQoCAgIBwg0KAgICA4ABRDQAgBUEATA0BIAlByp4Bai0AACEHIAAgARC6Aw0AIAAgCxC6Aw0AAkAgACALQQAQayIFRQ0AIAYvAQYiCCAFLwEGRw0AIAUoAiAoAhQgCEHKngFqLQAAIgh2IARJDQAgAyAEaiAGKAIgKAIUIAh2Sw0AIAUoAiQgBigCJCADIAd0aiAEIAd0EB4aDAILQgAhDANAIAwgDVENAiAAIAEgAyAMp2qtEE4iDkKAgICAcINCgICAgOAAUQ0BIAAgCyAMIA5BgIABEM8BIQogDEIBfCEMIApBAE4NAAsLIAAgCxAMQoCAgIDgACELCyACQSBqJAAgCwteAQF+IAAgAUEAEGsiAkUEQEKAgICA4AAPC0KAgICA4AAhBCAAQoCAgIAwIAEgAi8BBhD5AiIBQoCAgIBwg0KAgICA4ABSBEAgACABIAAgABDGBCEEIAAgARAMCyAEC7cCAgV+A38jAEEgayIKJABCgICAgDAhBQJAAkAgACABEIoBIgtBAEgNACAAIAMpAwAiCBBVDQBCgICAgDAhBiACQQJOBEAgAykDCCEGCyALQQFrQQAgBEF+cUECRiICGyEDQX9BASACGyEMQX8gCyACGyECA0AgAiADRwRAIAAgASADrSIHEE4iBUKAgICAcINCgICAgOAAUQ0CIAogATcDECAKIAc3AwggCiAFNwMAIAAgCCAGQQMgChAcIglCgICAgHCDQoCAgIDgAFENAiAAIAkQJwRAAkAgBEEBaw4DAAUABQsgACAFEAwgByEFDAQFIAAgBRAMIAMgDGohAwwCCwALC0KAgICAMEL\u002F\u002F\u002F\u002F\u002FDyAEQQFrQX1xGyEFDAELIAAgBRAMQoCAgIDgACEFCyAKQSBqJAAgBQubBQIEfwJ+IwBBIGsiBCQAQoCAgIDgACEJAkAgACABEIoBIgZBAEgNAAJAIAGnIgUvAQYiB0EVRgRAIAMpAwAiCEIgiKdBdU8EQCAIpyIHIAcoAgBBAWo2AgALIAAgBEEIaiAIENwFDQIgBCAENAIINwMQDAELIAdBG00EQCAAIARBCGogAykDABB1DQIgBCAENQIINwMQDAELIAdBHU0EQCAAIARBEGogAykDABDRBUUNAQwCCyAAIARBCGogAykDABBCDQEgBAJ+IAUvAQZBHkYEQCAEKwMItrytDAELIAQpAwgLNwMQCyAEQQA2AggCQCACQQFMBEAgBCAGNgIcDAELIAAgBEEIaiADKQMIIAYgBhBWDQEgBCAGNgIcIAJBAkYNACADKQMQIghCgICAgHCDQoCAgIAwUQ0AIAAgBEEcaiAIIAYgBhBWDQELIAUoAiAoAgwoAiAtAAQEQCAAEF8MAQsCQAJAAkACQAJAAkAgBS8BBkHKngFqLQAADgQAAQIDBAsgBCgCHCICIAQoAggiAEwNBCAFKAIkIABqIAQtABAgAiAAaxAsGgwECyAEKAIIIgAgBCgCHCICIAAgAkobIQIgBC8BECEDA0AgACACRg0EIAUoAiQgAEEBdGogAzsBACAAQQFqIQAMAAsACyAEKAIIIgAgBCgCHCICIAAgAkobIQIgBCgCECEDA0AgACACRg0DIAUoAiQgAEECdGogAzYCACAAQQFqIQAMAAsACyAEKAIIIgAgBCgCHCICIAAgAkobIQIDQCAAIAJGDQIgBSgCJCAAQQN0aiAEKQMQNwMAIABBAWohAAwACwALEAEACyABQiCIp0F1TwRAIAUgBSgCAEEBajYCAAsgASEJCyAEQSBqJAAgCQumAgIEfwJ+IwBBEGsiBSQAQoCAgIDgACEIAkAgACABEIoBIgRBAEgNACAAIAVBDGogAykDACAEIAQQVg0AIAAgBUEIaiADKQMIIAQgBBBWDQAgBSAENgIEAn8gBCACQQNIDQAaIAQgAykDECIJQoCAgIBwg0KAgICAMFENABogACAFQQRqIAkgBCAEEFYNASAFKAIECyAFKAIIIgdrIgYgBCAFKAIMIgNrIgIgAiAGShsiAkEASgRAIAGnIgYoAiAoAgwoAiAtAAQEQCAAEF8MAgsgBigCJCIAIAMgBi8BBkHKngFqLQAAIgN0aiAAIAcgA3RqIAIgA3QQqwELIAFCIIinQXVPBEAgAaciACAAKAIAQQFqNgIACyABIQgLIAVBEGokACAIC0oCAX4Bf0KAgICAMCECAkAgAUKAgICAcFQNACABpy8BBiIDQRVrQf\u002F\u002FA3FBCksNACAAIAAoAhAoAkQgA0EYbGooAgQQKSECCyACCywBAX5CgICAgOAAIQUgACABELoDBH5CgICAgOAABSAAIAEgACAAIAQQwgULC8EDAgR+BH8jAEEQayIIJABCgICAgDAhBUKAgICAMCEEIAJBAk4EQCADKQMIIQQLIAMpAwAhBkKAgICA4AAhBwJAIAAgAUEAEGsiAkUNACAAIAggBBDjAQ0AAkACQAJAAkACQCAIKQMAIgRCAFMEQAwBCyACKAIgKAIMKAIgLQAEDQQgACAGECAiBUKAgICAcINCgICAgOAAUQ0DIAWnIgMvAQYiCUEVa0H\u002F\u002FwNxQQpNBEAgAygCICIKKAIMKAIgIgstAAQNBSAEIAI1AiggAzUCKCIGfVUNASAJIAIvAQYiA0cNAiAEIANByp4BajEAACIBhqcgAigCICICKAIMKAIgKAIIIAIoAhBqaiALKAIIIAooAhBqIAYgAYanEKsBDAMLIAAgCEEIaiAFEC8NAyAEIAI1AiggCCkDCCIGfVcNAQsgAEGKxwBBABBEDAQLIASnIQJBACEDA0AgBiADrVcNASAAIAUgAxCmASIEQoCAgIBwg0KAgICA4ABRDQQgAiADaiEJIANBAWohAyAAIAEgCSAEEIYCQQBODQALDAMLQoCAgIAwIQcMAgsMAQsgABBfCyAAIAUQDCAIQRBqJAAgBwtRAgF\u002FAX5CgICAgOAAIQQgACABIAIQayIDBH4gAygCICIDKAIMKAIgLQAEBEAgAkUEQEIADwsgABBfQoCAgIDgAA8LIAM1AhQFQoCAgIDgAAsL2wECA34BfyMAQRBrIgIkAEKAgICA4AAhBAJAIAAgAUEAEGsiB0UNACAAIAJBCGogAykDABDjAQ0AIAIpAwgiBSAHNQIoIgYgBUI\u002Fh4N8IgVCAFkgBSAGU3FFBEAgAEHd4QBBABBEDAELIAAgAykDCEEBELsCIgZCgICAgHCDQoCAgIDgAFENACAAQoCAgIAwIAEgBy8BBhD5AiIBQoCAgIBwg0KAgICA4ABRBEAgACAGEAwMAQsgACABIAUgBhB7QQBOBEAgASEEDAELIAAgARAMCyACQRBqJAAgBAuNAQIDfgF\u002FIwBBEGsiAiQAQoCAgIDgACEFAkAgACABQQAQayIHRQ0AIAcoAiAoAgwoAiAtAAQEQCAAEF8MAQsgACACQQhqIAMpAwAQ4wENAEKAgICAMCEFIAIpAwgiBCAHNQIoIgYgBEI\u002Fh4N8IgRCAFMgBCAGWXINACAAIAEgBBBsIQULIAJBEGokACAFCx0AIAAgAUEAEGsiAEUEQEKAgICA4AAPCyAANQIoCz0BAX5CgICAgBAhASADKQMAIgRCgICAgHBaBH4gBKcvAQZBFWtB\u002F\u002F8DcUEMSa1CgICAgBCEBUKAgICAEAsL7gMCBX4CfyMAQSBrIgokAEKAgICA4AAhBQJAIAAgASAEEFoiC0UNACALLQAEBEAgABBfDAELIAAgCkEYaiADKQMAQgAgCzQCACIGIAYQZg0AIAogBjcDECADKQMIIgdCgICAgHCDQoCAgIAwUgRAIAAgCkEQaiAHQgAgBiAGEGYNASAKKQMQIQYLIAopAxghCSAAIAFCgICAgDAQ\u002FQEiB0KAgICAcIMiBUKAgICA4ABRBEAgByEFDAELIAYgCX0iBkIAIAZCAFUbIQgCQCAFQoCAgIAwUQRAIABCgICAgDAgCCAEEOUDIQUMAQsgCiAGQv\u002F\u002F\u002F\u002F8HVwR+IAhC\u002F\u002F\u002F\u002F\u002Fw+DBUKAgICAwH4gCLm9IgVCgICAgMCBgPz\u002FAH0gBUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLNwMIIAAgB0EBIApBCGoQowEhBSAAIAcQDCAAIAopAwgQDAsgBUKAgICAcINCgICAgOAAUQ0AAkAgACAFIAQQWiICRQ0AIAAgBSABEE0EQCAAQco0QQAQEgwBCwJAIAItAAQNACACNAIAIAhTBEAgAEHOwgBBABASDAILIAstAAQNACACKAIIIAsoAgggCadqIAinEB4aDAILIAAQXwsgACAFEAxCgICAgOAAIQULIApBIGokACAFC1EAIAAgASACEFoiAEUEQEKAgICA4AAPCyAAKAIAIgBBAE4EQCAArQ8LQoCAgIDAfiAAuL0iAUKAgICAwIGA\u002FP8AfSABQoCAgICAgID4\u002FwBWGwv\u002FAwICfwF+AkACQAJAAkACQAJAIAFCgICAgHBaBEAgAaciAi8BBkErRg0BCyAEQQE2AgAMAQsgAigCICEGIARBATYCACAGDQELIABBsS1BABASDAELIAYoAgQhAgJAAkACQAJ\u002FAkACQAJAAkAgBigCACIHQQFrDgQCAgcBAAsgBUUNAiAAIAYQyQQLQoCAgIAwIQEgBUEBaw4CAwQHCyADKQMAIgFCIIinQXVPBEAgAaciAyADKAIAQQFqNgIACwJAIAVBAkcNAEEBIQMgB0EBRw0AIAAgARCYASAGKAIEDAILIAIoAmQiAyAFrTcDACADQQhrIAE3AwAgAiADQQhqNgJkC0EAIQMgAgsiBSADNgIcIAZBAzYCACAAIAUQsQIhASAGQQE2AgAgBigCBCgCIARAIAAgBhDJBCABDwsgAUKAgICAEFoNBSACKAJkQQhrIgApAwAhCCAAQoCAgIAwNwMAIAFCAlEEQCAGQQI2AgAgBEECNgIAIAgPCyAEQQA2AgAgCA8LIAMpAwAiAUIgiKdBdUkNAyABpyIAIAAoAgBBAWo2AgAgAQ8LIAMpAwAiAUIgiKdBdU8EQCABpyICIAIoAgBBAWo2AgALIAAgARCYAQwBCyAAQY8tQQAQEgtCgICAgOAAIQELIAEPC0HW8QBBqOwAQaCUAUHEFBAAAAt3AQF+IAMpAwAiAUKAgICAcINCgICAgIB\u002FUgRAIABBkcEAQQAQEkKAgICA4AAPC0KAgICAMCEEIAGnIgApAgRCgICAgICAgIBAg0KAgICAgICAgIB\u002FUQR+IAAgACgCAEEBajYCACABQoCAgICQf4QFQoCAgIAwCws8AQF+QoCAgIDgACEBIAAgAykDABAlIgRCgICAgHCDQoCAgIDgAFIEfiAAIASnQQIQ5gMFQoCAgIDgAAsLVgIBfgF\u002FIAAgARC7AyIBQoCAgIBwg0KAgICA4ABRBEAgAQ8LQoCAgIAwIQIgAaciAygCBEGAgICAeEcEQCAAIAAoAhAgAxDGAhApIQILIAAgARAMIAILCQAgACABELsDC1sBAX4jAEEQayICJAAgAiAAIAEQuwMiATcDCAJAIAFCgICAgHCDQoCAgIDgAFEEQCABIQQMAQsgAEKAgICAMEEBIAJBCGoQygQhBCAAIAEQDAsgAkEQaiQAIAQLLQBCgICAgOAAIAAgAykDACADKQMIQQAQiQIiAEEAR61CgICAgBCEIABBAEgbC6ABAQN+IAMpAwAiBSEEIAJBBE4EQCADKQMYIQQLIAVC\u002F\u002F\u002F\u002F\u002F29YBEAgABAiQoCAgIDgAA8LIAMpAxAhAUKAgICA4AAhBgJAIAAgAykDCBAwIgJFDQAgAUIgiKdBdU8EQCABpyIDIAMoAgBBAWo2AgALIAAgBSACIAEgBEEAENABIQMgACACEBAgA0EASA0AIANBAEetQoCAgIAQhCEGCyAGCyoAIAMpAwAiAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECJCgICAgOAADwsgACABQQNBABCyAgtjAQF+IAMpAwAiBEL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECJCgICAgOAADwtCgICAgOAAIQECQCAAIAMpAwgQMCICRQ0AIAAgBCACEG4hAyAAIAIQECADQQBIDQAgA0EAR61CgICAgBCEIQELIAELYwEDfgJAAkAgAykDACIBQv\u002F\u002F\u002F\u002F9vWARAIAAQIgwBCyADKQMIIQUgASEEIAJBA04EQCADKQMQIQQLIAAgBRAwIgINAQtCgICAgOAADwsgACABIAIgBEEAEBEhBiAAIAIQECAGC2YBAX4gAykDACIEQv\u002F\u002F\u002F\u002F9vWARAIAAQIkKAgICA4AAPC0KAgICA4AAhAQJAIAAgAykDCBAwIgJFDQAgACAEIAJBABDNASEDIAAgAhAQIANBAEgNACADQQBHrUKAgICAEIQhAQsgAQuaAQIBfwJ+IwBBEGsiBCQAIAMpAwghBSADKQMAIgYhAQJAAkACQAJAIAJBA0gNACADKQMQIgFCgICAgHBaBEAgAactAAVBEHENAQsgAEGdLEEAEBIMAQsgACAEQQxqIAUQ\u002FQMiAg0BC0KAgICA4AAhAQwBCyAAIAYgASAEKAIMIgMgAhD+AiEBIAAgAiADEIYDCyAEQRBqJAAgAQt5AQF\u002FIAFCgICAgHCDQoCAgIAwUgRAIABBnSxBABASQoCAgIDgAA8LAn4CQCACRQ0AIAMpAwAiAUKAgICAcINCgICAgDBRDQBCgICAgOAAIAAgARAlIgFCgICAgHCDQoCAgIDgAFENARogAachBAsgACAEQQMQ5gMLCxUAIAAgAykDACADIANBCGpBAhCIAws3ACMAQRBrIgIkACAAIAJBDGogAykDABB1IQAgAigCDCEDIAJBEGokAEKAgICA4AAgA2etIAAbC04AIwBBEGsiAiQAQoCAgIDgACEBAkAgACACQQxqIAMpAwAQdQ0AIAAgAkEIaiADKQMIEHUNACACKAIIIAIoAgxsrSEBCyACQRBqJAAgAQsGACAAtrsLfwAgACAAKQPQASIBQgyIIAGFIgFCGYYgAYUiAUIbiCABhSIBNwPQAUKAgICAwH4gAUKdurP7lJL9oiV+QgyIQoCAgICAgID4P4S\u002FRAAAAAAAAPC\u002FoL0iAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwuIBAMFfAV\u002FAX4jAEEQayIKJAAgCkIANwMIAkACQCACQQBMDQBCgICAgOAAIQEgACAKQQhqIAMpAwAQQg0BQQEhCyAKKwMIIQQgAkEBRwRAA0AgAiALRg0CIAAgCiADIAtBA3RqKQMAEEINAyALQQFqIQsgCisDACEFIwBBIGsiCSQAAkAgBJkiByAFmSIGIAe9IAa9VCIMGyIEvSIOQjSIpyINQf8PRg0AIAYgByAMGyEFAkAgDlANACAFvUI0iKciDEH\u002FD0YNACAMIA1rQcEATgRAIAcgBqAhBAwCCwJ8IAxB\u002FgtPBEAgBEQAAAAAAAAwFKIhBCAFRAAAAAAAADAUoiEFRAAAAAAAALBrDAELRAAAAAAAAPA\u002FIA1BvARLDQAaIAREAAAAAAAAsGuiIQQgBUQAAAAAAACwa6IhBUQAAAAAAAAwFAshCCAJQRhqIAlBEGogBRCIBiAJQQhqIAkgBBCIBiAIIAkrAwAgCSsDEKAgCSsDCKAgCSsDGKCfoiEEDAELIAUhBAsgCUEgaiQADAALAAsgBJkhBAsgBL0iAQJ\u002FIASZRAAAAAAAAOBBYwRAIASqDAELQYCAgIB4CyIAt71RBEAgAK0hAQwBC0KAgICAwH4gAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGyEBCyAKQRBqJAAgAQtOACAAIABEAAAAAAAA8L9EAAAAAAAA8D8gAEQAAAAAAAAAAGMbIAC9Qv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGyAARAAAAAAAAAAAYRsLgwECAn4BfyAAvSIBQjSIp0H\u002FD3EiA0H+B00EQCABQoCAgICAgICAgH+DIQIgA0H+B0cgAUKAgICAgICA8L9\u002FUXJFBEAgAkKAgICAgICA+D+Evw8LIAK\u002FDwsgA0GyCE0EfCABQj+HIAF8QgFBswggA2uthiIBQgGIfEIAIAF9g78FIAALC4IFAwJ8BX8CfiMAQRBrIgkkAAJ+QoCAgIDA\u002Fv\u002F7\u002FwBCgICAgMD+\u002F3sgBBsgAkUNABoCfCADKQMAIgFC\u002F\u002F\u002F\u002F\u002Fw9YBEBBASACIAJBAUwbIQogAachCEEBIQcDQCAHIApHBEAgCLcgAyAHQQN0aikDACIBQoCAgIAQWg0DGiAIIAGnIgsgCCALShsgCCALIAggC0gbIAQbIQggB0EBaiEHDAELCyAIrQwCC0KAgICA4AAgACAJQQhqIAEQQg0BGkEBIQcgCSsDCAshBSAHIAIgAiAHSBshAgNAIAIgB0cEQEKAgICA4AAgACAJIAMgB0EDdGopAwAQQg0CGgJAIAW9IgxC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYNACAJKwMAIga9IgFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYEQCAGIQUMAQsgBUQAAAAAAAAAAGEgBkQAAAAAAAAAAGFxIQogBARAIAoEQCABIAyDvyEFDAILIAUgBSAGpSAGvUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsgBiAFvUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AWBshBQwBCyAKBEAgASAMhL8hBQwBCyAFIAUgBqQgBr1C\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbIAYgBb1C\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFgbIQULIAdBAWohBwwBCwsgBb0iAQJ\u002FIAWZRAAAAAAAAOBBYwRAIAWqDAELQYCAgIB4CyIAt71RBEAgAK0MAQtCgICAgMB+IAFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLIQ0gCUEQaiQAIA0L4wECAX4CfyMAQRBrIgIkAAJAIAAgAUEpEFoiA0UEQCAEQQA2AgBCgICAgOAAIQEMAQtCgICAgDAhAQJAIAMpAwAiBkKAgICAcINCgICAgDBSBEAgAiADKAIMIgU2AgwgBSAGpyIHKAIEQf\u002F\u002F\u002F\u002F8HcUkNASAAIAYQDCADQoCAgIAwNwMACyAEQQE2AgAMAQsgByACQQxqEMYBIQggAyACKAIMNgIMIARBADYCACAIQf\u002F\u002FA00EQCAAIAhB\u002F\u002F8DcRCUAyEBDAELIAAgByAFQQF0akEQakECEJIDIQELIAJBEGokACABC5EDAgN\u002FAn4jAEEgayICJABCgICAgOAAIQgCQCAAIAEQSiIBQoCAgIBwg0KAgICA4ABRDQAgACACQQhqIgVBBxA+GiAFQTwQPBogBSAEQQN0IgRB0OEBaigCACIGEIMBGiAEQdThAWooAgAiBARAIAVBIBA8GiAFIAQQgwEaIAVB2pEBEIMBGiAAIAMpAwAQSiIJQoCAgIBwg0KAgICA4ABRBEAgACABEAwgAigCCCgCECIAQRBqIAIoAgwgACgCBBEAAAwCCyAJpyIHQRBqIQVBACEEA0AgBCAHKQIEIginQf\u002F\u002F\u002F\u002F8HcU9FBEACQAJ\u002FIAhCgICAgAiDUEUEQCAFIARBAXRqLwEADAELIAQgBWotAAALIgNBIkYEQCACQQhqQcuAARCDARoMAQsgAkEIaiADEIcBGgsgBEEBaiEEDAELCyAAIAkQDCACQQhqQSIQPBoLIAJBCGoiAEE+EDwaIAAgARCEARogAEHnhwEQgwEaIAAgBhCDARogAkEIakE+EDwaIAAQNyEICyACQSBqJAAgCAugBAEHfyMAQTBrIgUkAAJAIAAgARBKIgFCgICAgHCDQoCAgIDgAFENACABpyIHKAIEQf\u002F\u002F\u002F\u002F8HcSICRQ0AAkAgACAFQRRqIAIQPg0AQQAhAiAFQQA2AhAgB0EQaiEIA0ACQCAHKAIEQf\u002F\u002F\u002F\u002F8HcSACSgRAAn8CQCAERSAHIAVBEGoQxgEiCUGjB0dyDQAgBSgCECIKQQFrIQIDQAJAIAJBAEwEQEEAIQYMAQsgAkEBayEDAkAgBy0AB0GAAXEEQCACQQFGIAggA0EBdGovAQAiBkGA+ANxQYC4A0dyDQEgCCACQQJrIgJBAXRqLwEAIgtBgNAAakH\u002F\u002FwNxQYAISw0BIAZB\u002FwdxIAtB\u002FwdxQQp0ckGAgARqIQYMAgsgAyAIai0AACEGCyADIQILIAYQmQYNAAsgBhCbBkUNACAFIAo2AiwCQANAIAUoAiwgBygCBEH\u002F\u002F\u002F\u002F\u002FB3FODQEgByAFQSxqEMYBIgIQmQYNAAsgAhCbBg0BCyAFQcIHNgIEQQEMAQsgBUEEaiAJIAQQnQYLIQZBACECIAZBACAGQQBKGyEDA0AgAiADRg0CIAJBAnQhBiACQQFqIQIgBUEUaiAGIAVBBGpqKAIAELEBRQ0ACwwDCyAAIAEQDCAFQRRqEDchAQwDCyAFKAIQIQIMAAsACyAAIAEQDCAFKAIUKAIQIgBBEGogBSgCGCAAKAIEEQAAQoCAgIDgACEBCyAFQTBqJAAgAQvOAgICfgd\u002FIwBBEGsiAiQAQoCAgIDgACEEAkAgACABEEoiAUKAgICAcINCgICAgOAAUQ0AIAAgAykDABAlIgVCgICAgHCDQoCAgIDgAFEEQCAAIAEQDAwBCyAAIAJBDGogAUEAENoDIQcgACABEAwgB0EASARAIAAgBRAMDAELIAAgAkEIaiAFQQAQ2gMhCCAAIAUQDCACKAIMIQkgCEEASARAIAAoAhAiAEEQaiAJIAAoAgQRAAAMAQsgByAIIAcgCEgiCxshDEEAIQMgAigCCCEKAkADQCADIAxHBEAgA0ECdCEGIANBAWohAyAGIAlqKAIAIAYgCmooAgBrIgZFDQEMAgsLQX9BASALG0EAIAcgCEcbIQYLIAAoAhAiA0EQaiAJIAMoAgQRAAAgACgCECIAQRBqIAogACgCBBEAACAGrSEECyACQRBqJAAgBAsJACAAIAEQhwULagACQAJAIAFCIIinIgJBf0cEQCACQXlHDQEMAgsgAaciAi8BBkEFRw0AIAIpAyAiAUKAgICAcINCgICAgJB\u002FUg0ADAELIABBxskAQQAQEkKAgICA4AAPCyABpyIAIAAoAgBBAWo2AgAgAQv1AQICfwJ+IAAgARBKIgFCgICAgHCDQoCAgIDgAFEEQCABDwsgAaciBigCBEH\u002F\u002F\u002F\u002F\u002FB3EhAgJAIARBAXFFDQAgBkEQaiEDA0AgAiAFRgRAIAIhBQwCCwJ\u002FIAYtAAdBgAFxBEAgAyAFQQF0ai8BAAwBCyADIAVqLQAACxCpA0UNASAFQQFqIQUMAAsACwJAIARBAnFFBEAgAiEDDAELIAZBEGohBANAIAIiAyAFTA0BIAJBAWshAgJ\u002FIAYtAAdBgAFxBEAgBCACQQF0ai8BAAwBCyACIARqLQAACxCpAw0ACwsgACAGIAUgAxCOASEIIAAgARAMIAgL6QMCBn8DfiMAQSBrIgUkAEKAgICA4AAhDAJAIAAgARBKIgFCgICAgHCDQoCAgIDgAFENAAJAAkAgACAFQQRqIAMpAwAQswENACAFKAIEIgcgAaciCSgCBEH\u002F\u002F\u002F\u002F\u002FB3EiCEwNAUEgIQpCgICAgDAhCwJAIAJBAkgNACADKQMIIg1CgICAgHCDQoCAgIAwUQ0AIAAgDRAlIgtCgICAgHCDQoCAgIDgAFENAQJAAkAgC6ciBikCBCINp0H\u002F\u002F\u002F\u002F\u002FB3EOAgABAgsgACALEAwMAwsCfyANQoCAgIAIg1BFBEAgBi8BEAwBCyAGLQAQCyEKQQAhBgsgB0GAgICABE8EQCAAQeTIAEEAEDoMAQsgACAFQQhqIgIgBxA+RQRAAkAgBARAIAIgCUEAIAgQSw0BCyAHIAhrIQMCQCAGBEADQCADQQBMDQIgAyADIAYoAgRB\u002F\u002F\u002F\u002F\u002FwdxIgIgAiADShsiAmshAyAFQQhqIAZBACACEEtFDQAMAwsACyAFQQhqIAogAxDLBA0BCyAERQRAIAVBCGogCUEAIAgQSw0BCyAAIAsQDCAAIAEQDCAFQQhqEDchDAwECyAFKAIIKAIQIgJBEGogBSgCDCACKAIEEQAACyAAIAsQDAsgACABEAwMAQsgASEMCyAFQSBqJAAgDAuCBgIFfgV\u002FIwBB0ABrIgIkAAJAAkACQAJAIAFCgICAgBCEQoCAgIBwg0KAgICAMFEEQCAAQZseQQAQEgwBCyADKQMIIQkgAykDACIFQoCAgIAQhEKAgICAcINCgICAgDBRDQIgBEUNASAAIAUQzQRBAE4NAQtCgICAgOAAIQYMAgsgACAFQc8BIAVBABARIgdCgICAgHCDIgZCgICAgCBRIAZCgICAgDBRcg0AIAZCgICAgOAAUQ0BIAIgCTcDKCACIAE3AyAgACAHIAVBAiACQSBqEDYhBgwBCyAAIAJBCGpBABA+GkKAgICA4AAhBkKAgICAMCEIAkAgACABECUiB0KAgICAcINCgICAgOAAUQRAQoCAgIAwIQUMAQsgACAFECUiBUKAgICAcINCgICAgOAAUQ0AIAAgCRA1Ig5FBEAgACAJECUiCEKAgICAcINCgICAgOAAUQ0BCyAHpyELIAWnIg0pAgQhAQNAAkACQCABQv\u002F\u002F\u002F\u002F8Hg1AEQEEAIQMgDEUNASAKIAsoAgRB\u002F\u002F\u002F\u002F\u002FwdxTw0CIApBAWohAwwBCyALIA0gChDMBCIDQQBODQAgDA0BIAIoAggoAhAiA0EQaiACKAIMIAMoAgQRAAAgACAFEAwgACAIEAwgByEGDAQLIAIgBTcDIAJ+IA4EQCACIAc3AzAgAiADrTcDKCAAIAAgCUKAgICAMEEDIAJBIGoQHBA0DAELIAIgCDcDSCACQoCAgIAwNwNAIAJCgICAgDA3AzggAiAHNwMoIAIgA603AzAgACACQSBqEIgFCyIBQoCAgIBwg0KAgICA4ABRDQIgAkEIaiIMIAsgCiADEEsaIAwgARCEARogDSkCBCIBp0H\u002F\u002F\u002F\u002F\u002FB3EgA2ohCkEBIQwgBA0BCwsgAkEIaiIDIAsgCiALKAIEQf\u002F\u002F\u002F\u002F8HcRBLGiAAIAUQDCAAIAgQDCAAIAcQDCADEDchBgwBCyACKAIIKAIQIgNBEGogAigCDCADKAIEEQAAIAAgBRAMIAAgCBAMIAAgBxAMCyACQdAAaiQAIAYLuAICA38DfiMAQSBrIgIkAEKAgICA4AAhBwJAAkACQCAAIAEQSiIBQoCAgIBwg0KAgICA4ABRDQAgACACIAMpAwAQ4wENACACKQMAIghCgICAgAhaBEAgAEHTGEEAEEQMAQsgCKciA0EBRg0BIAGnIgQpAgQiCaciBkH\u002F\u002F\u002F\u002F\u002FB3EiBUUNASAJQv\u002F\u002F\u002F\u002F8HgyAIfkKAgICABFoEQCAAQeTIAEEAEDoMAQsgACACQQhqIAMgBWwgBkEfdhCZAw0AAkAgBUEBRwRAA0AgA0EATA0CIAJBCGogBEEAIAUQSxogA0EBayEDDAALAAsgAkEIagJ\u002FIAQtAAdBgAFxBEAgBC8BEAwBCyAELQAQCyADEMsEGgsgACABEAwgAkEIahA3IQcMAgsgACABEAwMAQsgASEHCyACQSBqJAAgBwtYAQF+IAAgAykDABDkAUEAR61CgICAgBCEIQQgAUKAgICAcINCgICAgDBRBEAgBA8LIAAgAUEGEF4iAUKAgICAcINCgICAgOAAUgRAIAAgASAEEL0BCyABC8EBAgJ\u002FAn4jAEEQayIEJABCgICAgOAAIQYCQCAAIAEQSiIBQoCAgIBwg0KAgICA4ABRBEAgASEGDAELAkAgACAEQQxqIAMpAwAgAaciBSgCBEH\u002F\u002F\u002F\u002F\u002FB3EiAiACEFYNACAEIAI2AgggAykDCCIHQoCAgIBwg0KAgICAMFIEQCAAIARBCGogByACIAIQVg0BIAQoAgghAgsgACAFIAQoAgwiAyACIAMgAiADShsQjgEhBgsgACABEAwLIARBEGokACAGC8ABAgN\u002FAn4jAEEQayICJABCgICAgOAAIQcCQCAAIAEQSiIBQoCAgIBwg0KAgICA4ABRBEAgASEHDAELAkAgACACQQxqIAMpAwAgAaciBigCBEH\u002F\u002F\u002F\u002F\u002FB3EiBCAEEFYNACACIAQgAigCDCIFayIENgIIIAAgBiAFIAMpAwgiCEKAgICAcINCgICAgDBSBH8gACACQQhqIAggBEEAEFYNASACKAIIBSAECyAFahCOASEHCyAAIAEQDAsgAkEQaiQAIAcL0wECAn8CfiMAQRBrIgIkAEKAgICA4AAhBgJAIAAgARBKIgFCgICAgHCDQoCAgIDgAFEEQCABIQYMAQsCQCAAIAJBDGogAykDACABpyIFKAIEQf\u002F\u002F\u002F\u002F8HcUEAEFYNACACIAUoAgRB\u002F\u002F\u002F\u002F\u002FwdxIgQ2AgggAykDCCIHQoCAgIBwg0KAgICAMFIEQCAAIAJBCGogByAEQQAQVg0BIAIoAgghBAsgACAFIAIoAgwiAyAEIAMgBEgbIAMgBCADIARKGxCOASEGCyAAIAEQDAsgAkEQaiQAIAYLoQUCC34DfyMAQRBrIgIkAAJAIAFCgICAgBCEQoCAgIBwg0KAgICAMFEEQCAAQZseQQAQEkKAgICA4AAhBwwBCyADKQMIIQQCQCADKQMAIgVCgICAgHCDIglCgICAgBCEQoCAgIAwUQ0AIAAgBUHRASAFQQAQESIGQoCAgIBwgyIHQoCAgIAgUSAHQoCAgIAwUXINACAHQoCAgIDgAFENASACIAQ3AwggAiABNwMAIAAgBiAFQQIgAhA2IQcMAQtCgICAgOAAIQdCgICAgDAhCCAAAn5CgICAgDAgACABECUiCkKAgICAcINCgICAgOAAUQ0AGkKAgICA4AAgABA7IgFCgICAgHCDQoCAgIDgAFENABoCQAJAIARCgICAgHCDQoCAgIAwUQRAIAJBfzYCAAwBCyAAIAIgBBB1QQBIDQELIAqnIgMpAgQhCyAAIAUQJSIIQoCAgIBwg0KAgICA4ABRDQACQCACKAIAIhBFDQBCACEGAkAgCUKAgICAMFENACAIpyIRKQIEQv\u002F\u002F\u002F\u002F8HgyEFIAtC\u002F\u002F\u002F\u002F\u002FweDIgRQRQRAIAQgBX0gBVCtIgl9IQwgEK0hDUIAIQQDQAJAIAQgCXwiDiAMVQ0AIAMgESAOpxDMBCIPQQBIDQAgACADIASnIA8QjgEiBEKAgICAcINCgICAgOAAUQ0FIAAgASAGIARBABDIAUEASA0FIAUgD6x8IQQgBkIBfCIGIA1SDQEMBAsLIAZC\u002F\u002F\u002F\u002F\u002Fw+DIQYgBKchDwwBCyAFUA0BCyAAIAMgDyALp0H\u002F\u002F\u002F\u002F\u002FB3EQjgEiBUKAgICAcINCgICAgOAAUQ0BIAAgASAGIAVBABDIAUEASA0BCyAAIAoQDCAAIAgQDCABIQcMAgsgAQsQDCAAIAoQDCAAIAgQDAsgAkEQaiQAIAcLoAMBBH4jAEEwayICJAAgAiABNwMoAkAgAUKAgICAEIRCgICAgHCDQoCAgIAwUQRAIABBmx5BABASQoCAgIDgACEGDAELAkAgAykDACIFQoCAgIAQhEKAgICAcINCgICAgDBRDQBCgICAgOAAIQYgACAFIAQgBUEAEBEiB0KAgICAcIMiCEKAgICA4ABRDQECQCAEQc4BRw0AIAAgBRDNBEEATg0AIAAgBxAMDAILIAhCgICAgBCEQoCAgIAwUQ0AIAAgByAFQQEgAkEoahA2IQYMAQsgAiAAIAEQJSIHNwMIQoCAgIDgACEGIAdCgICAgHCDQoCAgIDgAFENACACIAU3AxACQAJAAn8gBEHOAUcEQEKAgICAMCEBQQEMAQsgAEH2ywAQYCIBQoCAgIBwg0KAgICA4ABRDQEgAiABNwMYQQILIQMgACAAKQNIIAMgAkEQahCjASEFIAAgARAMIAVCgICAgHCDQoCAgIDgAFINAQsgACAHEAwMAQsgACAFIARBASACQQhqEKcCIQYgACACKQMIEAwLIAJBMGokACAGC4sDAgd\u002FA34jAEEQayIGJAACQCAAIAEQSiIMQoCAgIBwg0KAgICA4ABRBEAgDCEBDAELAkAgACADKQMAEPYDIgUEQEKAgICA4AAhAUKAgICAMCENIAVBAEwNASAAQfrkAEEAEBIMAQtCgICAgOAAIQEgACADKQMAECUiDUKAgICAcINCgICAgOAAUQ0AIA2nIgcoAgQhCCAGIAynIgkoAgRB\u002F\u002F\u002F\u002F\u002FwdxIgVBACAEQQJGGzYCDAJAIAJBAkgNACADKQMIIg5CgICAgHCDQoCAgIAwUQ0AIAAgBkEMaiAOIAVBABBWDQELIAUgCEH\u002F\u002F\u002F\u002F\u002FB3EiBWshAiAGKAIMIQMCQAJAAkAgBA4CAgABCyACIANIIQpCgICAgBAhASADIQIgCkUNAQwCCyADIAVrIgMhAgtCgICAgBAhASADQQBIIAIgA0hyDQADQCAJIAcgA0EAIAUQvANFBEBCgYCAgBAhAQwCCyACIANHIQsgA0EBaiEDIAsNAAsLIAAgDBAMIAAgDRAMCyAGQRBqJAAgAQurAwMHfwJ+AXwjAEEQayIFJABCgICAgOAAIQwCQCAAIAEQSiIBQoCAgIBwg0KAgICA4ABRBEAgASEMDAELAkAgACADKQMAECUiDUKAgICAcINCgICAgOAAUQ0AIA2nIgkoAgRB\u002F\u002F\u002F\u002F\u002FwdxIQYgAaciCigCBEH\u002F\u002F\u002F\u002F\u002FB3EhBwJAIAQEQCAFIAcgBmsiCzYCDEF\u002FIQhBACEEIAJBAkgNASAAIAUgAykDCBBCDQIgBSsDACIOvUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVg0BIA5EAAAAAAAAAABlBEAgBUEANgIMDAILIA4gC7djRQ0BIAUCfyAOmUQAAAAAAADgQWMEQCAOqgwBC0GAgICAeAs2AgwMAQsgBUEANgIMIAJBAk4EQCAAIAVBDGogAykDCCAHQQAQVg0CCyAHIAZrIQRBASEIC0L\u002F\u002F\u002F\u002F\u002FDyEMIAYgB0sNACAEIAUoAgwiA2sgCGxBAEgNAANAAkAgCiAJIANBACAGELwDBH8gAyAERw0BQX8FIAMLrSEMDAILIAMgCGohAwwACwALIAAgARAMIAAgDRAMCyAFQRBqJAAgDAv4AQICfgF\u002FIwBBEGsiBiQAAkACQAJAIAJFBEAMAQsgAykDACIEQiCIp0F1TwRAIASnIgIgAigCAEEBajYCAAsgACAEEGUiBEKAgICAcIMiBUKAgICA4ABRDQEgBUKAgICA4H5SDQAgBKdBBGogBkEIahCxBCAAIAQQDEKAgICAwH4gBikDCCIEQoCAgIDAgYD8\u002FwB9IARC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbIQQLIAFCgICAgHCDQoCAgIAwUQ0AIAAgAUEEEF4iAUKAgICAcINCgICAgOAAUQ0BIAAgASAEEL0BDAELIAQhAQsgBkEQaiQAIAELgwICAn4Df0KAgICA4AAhBAJAIAAgARBKIgFCgICAgHCDQoCAgIDgAFENACABpyIDEM4EIgJBAEgEQCABIQQMAQsgACADQRBqIAMoAgRB\u002F\u002F\u002F\u002F\u002FwdxEJIDIQUgACABEAwgBUKAgICAcINCgICAgOAAUQ0AIAWnIgZBEGohAwNAIAYoAgRB\u002F\u002F\u002F\u002F\u002FwdxIgAgAkwEQCAFDwUCQCADIAJBAXRqIgcvAQAiCEGA8ANxQYCwA0YEQAJAIAhB\u002F7cDSw0AIAAgAkEBaiIATA0AIAMgAEEBdGovAQBBgEBrQf\u002F\u002FA3FB\u002F\u002FcDSw0CCyAHQf3\u002FAzsBAAsgAiEACyAAQQFqIQIMAQsACwALIAQLTAIBfgF\u002FQoCAgIDgACEEIAAgARBKIgFCgICAgHCDQoCAgIDgAFIEfiABpxDOBCEFIAAgARAMIAVBH3atQoCAgIAQhAVCgICAgOAACwuSAQIBfgJ\u002FIwBBEGsiAiQAQoCAgIDgACEEAkAgACABEEoiAUKAgICAcINCgICAgOAAUQRAIAEhBAwBCwJAIAAgAkEMaiIFIAMpAwAQswENAEKAgICAMCEEIAIoAgwiA0EASA0AIAMgAaciBigCBEH\u002F\u002F\u002F\u002F\u002FB3FPDQAgBiAFEMYBrSEECyAAIAEQDAsgAkEQaiQAIAQLaQICfwF+IAAgARBKIQEDQCACIARMIAFCgICAgHCDQoCAgIDgAFFyRQRAIAMgBEEDdGopAwAiBkIgiKdBdU8EQCAGpyIFIAUoAgBBAWo2AgALIARBAWohBCAAIAEgBhC2AiEBDAELCyABC7gBAgJ+AX8jAEEQayICJABCgICAgOAAIQQCQCAAIAEQSiIBQoCAgIBwg0KAgICA4ABRBEAgASEEDAELAkAgACACQQxqIAMpAwAQswENAEKAgICAwH4hBCACKAIMIgNBAEgNACADIAGnIgYpAgQiBadB\u002F\u002F\u002F\u002F\u002FwdxTw0AIAZBEGohBiAFQoCAgIAIg1BFBEAgBiADQQF0ajMBACEEDAELIAMgBmoxAAAhBAsgACABEAwLIAJBEGokACAEC\u002FQBAgF+AX8jAEEQayICJABCgICAgOAAIQUCQCAAIAEQSiIBQoCAgIBwg0KAgICA4ABRBEAgASEFDAELAkAgACACQQxqIAMpAwAQswENACABpyEGIARFIAIoAgwiA0EATnJFBEAgBigCBEH\u002F\u002F\u002F\u002F\u002FB3EgA2ohAwsCQCADQQBOBEAgAyAGKQIEIgWnQf\u002F\u002F\u002F\u002F8HcUkNAQtCgICAgDAhBSAEDQEgAEEvECkhBQwBCyAGQRBqIQQgAAJ\u002FIAVCgICAgAiDUEUEQCAEIANBAXRqLwEADAELIAMgBGotAAALQf\u002F\u002FA3EQlAMhBQsgACABEAwLIAJBEGokACAFC8wCAgJ\u002FB34jAEEgayIEJAAgACAEQQhqQQAQPhpCgICAgOAAIQlCgICAgDAhBgJAAkACQCAAIAMpAwAQICIHQoCAgIBwg0KAgICA4ABRDQAgACAAIAdB8QAgB0EAEBEQyQUiBkKAgICAcINCgICAgOAAUQ0AIAAgBCAGEC9BAEgNAEIAIQEgBCkDACIIQgAgCEIAVRshCiAIQgF9IQggAqwhCwNAIAEgClENAiAAIAAgBiABEGwQNCIMQoCAgIBwg0KAgICA4ABRDQEgBEEIaiIFIAwQhAEaIAEgCFkhAiABQgF8IQEgASALWSACcg0AIAUgAyABp0EDdGopAwAQjQFFDQALCyAAIAcQDCAAIAYQDCAEKAIIKAIQIgBBEGogBCgCDCAAKAIEEQAADAELIAAgBxAMIAAgBhAMIARBCGoQNyEJCyAEQSBqJAAgCQuFAgMDfwF8AX4jAEEgayIEJAACfgJAIAAgBCACED4NACACQQAgAkEAShshBgJAA0AgBSAGRwRAAkAgAyAFQQN0aikDACIBQv\u002F\u002F\u002F\u002F8PWARAIAGnIgJB\u002F\u002F\u002FDAE0NAQwECyAAIARBGGogARBCDQQgBCsDGCIHRAAAAAAAAAAAYyAHRAAAAAD\u002F\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\u002F\u002F\u002F\u002F\u002FA0sNACACKAIMIAZBA3RqKQMAIAQQmQEgCCgCICEFCyAGQQFqIQYgAUEIaiEBDAALAAsgCC0AEEUEQCAIKAIYIQEgACAAKQNoQgF8NwNoIAAgACkDcCABQQJ0IAgoAhxBA3RqQTRqrXw3A3ALAkACQAJAAkACQAJAAkACQAJAAkAgAkECay8BAEECaw4gAAkBAQEBAAkBCQIDBAUJBwYICAkJCQkJCQkJCQkJCQEJCyAAIAApA6gBQgF8NwOoASACQQNrLQAAQQhxRQ0JIAAgACkDsAFCAXw3A7ABIAIoAhxFDQkgACAAKQMgQgF8NwMgIAAgACkDECACKAIgQQN0rXw3AxAgACAAKQO4ASACNQIgfDcDuAFBACEBA0AgASACKAIgTw0KIAIoAhwgAUEDdGopAwAgBBCZASABQQFqIQEMAAsACyACKQMYIAQQmQEMCAsgACAAKQOgAUIBfDcDoAEMBwsgAigCHCILRQ0GIAIoAhghCCAAIAApAyBCAXw3AyAgACAAKQOAASAIKAI8IgVBAnStfDcDgAFBACEBA0AgASAFTg0HAkAgCyABQQJ0aigCACIGRQ0AIAACfkQAAAAAAADwPyAGKAIAtyIaoyAAKQMguaAiG5lEAAAAAAAA4ENjBEAgG7AMAQtCgICAgICAgICAfws3AyAgAAJ+RAAAAAAAAERAIBqjIAApA4ABuaAiGplEAAAAAAAA4ENjBEAgGrAMAQtCgICAgICAgICAfws3A4ABIAYoAhAiDSAGQRhqRw0AIA0pAwAgBBCZASAIKAI8IQULIAFBAWohAQwACwALIAIoAhgiBUEYaiEGQQAhAQNAIAUoAhAiCCABSgRAIAYgAUEDdGopAwAgBBCZASABQQFqIQEMAQsLIAAgACkDIEIBfDcDICAAIAApAxAgCEEDdEEYaq18NwMQDAULIAIoAhgiBUUNBCAFQQhqIQZBACEBA0AgBS0ABSIIIAFLBEAgBiABQQN0aikDACAEEJkBIAFBAWohAQwBCwsgACAAKQMgQgF8NwMgIAAgACkDECAIrUIDhnxCCHw3AxAMBAsgAigCGCAEEIwEIAIoAhwgBBCMBAwDCyACKAIYIgFFDQIgASkDACAEEJkBIAAgACkDIEIBfDcDICAAIAApAxBCGHw3AxAMAgsgAigCGCIBRQ0BIAAgACkDICIOQgF8NwMgIAAgACkDEEIcfCIPNwMQIAEoAghFDQEgACAOQgJ8NwMgIAAgDyABNAIAfDcDEAwBCyACKAIYRQ0AIAAgACkDIEIBfDcDIAsgAkEEaiEBDAELCyAAIAApA1AgACkDSCIPQjB+fCIQNwNQIAAgACkDECAJKALYASIBQQJ0rXwiETcDEEEAIQYgAUEAIAFBAEobIQIgACkDICEOA0AgAiAGRwRAIAkoAuABIAZBAnRqIQEDQCABKAIAIgEEQCABKAIYIQUgACAAKQNoQgF8NwNoIAAgACkDcCAFQQJ0IAEoAhxBA3RqQTRqrXw3A3AgAUEoaiEBDAELCyAGQQFqIQYMAQsLIAAgDkIDfCISNwMgIAAgCSgCKCIFrDcDKCAAIAkoAiwiAiAJKAIkakECdK0iDjcDMEEAIQEgAkEAIAJBAEobIQYDQCABIAZHBEAgCSgCOCABQQJ0aigCACICQQFxRQRAIAAgDiACKAIEIgJBH3UgAkH\u002F\u002F\u002F\u002F\u002FB3EgAkEfdnRqQRFqrXwiDjcDMAsgAUEBaiEBDAELCyAAAn4gBCsDCBCgAyIamUQAAAAAAADgQ2MEQCAasAwBC0KAgICAgICAgIB\u002FCyITNwM4IAACfiAEKwMQEKADIhqZRAAAAAAAAOBDYwRAIBqwDAELQoCAgICAgICAgH8LIhQ3A0AgACAEKQMYIhU3A3ggAAJ+IAQrAyAQoAMiGplEAAAAAAAA4ENjBEAgGrAMAQtCgICAgICAgICAfwsiFjcDgAEgACAEKQMoIhc3A4gBIAAgBCkDMCIYNwOQASAAIAQpAzgiGTcDmAEgBCsDACEaIAAgACkDcCAAKQNgIBkgFyAQIBF8IBR8IBZ8fHwgDnx8fDcDECAAAn4gGhCgAyAFt6AgE7mgIA+5oCAAKQNouaAgFbmgIBi5oCASuaAiGplEAAAAAAAA4ENjBEAgGrAMAQtCgICAgICAgICAfws3AyAgBEFAayQAQbDUBCgCACECQQAhAUEAIQYjAEHABmsiACQAIAAgBzQCCDcDmAQgAEEgNgKQBCADQamWASAAQZAEahCaASACBEAgAkEQaiEFA0AgAUEFRwRAIAUgAUEDdCIIQeSbAWooAgAiBCACKAIAEQMAIgkEQCAEIAkgAigCDBEFACIKTQRAIAAgCEHgmwFqKAIANgKIBCAAIAQ2AoAEIAAgCiAEazYChAQgA0HrkgEgAEGABGoQmgFBASEGCyAFIAkgAigCBBEAAAsgAUEBaiEBDAELCyAGRQRAQf2SAUEhIAMQiQYLIABB4ARqQQBB3AEQLBogAkHUAGohASACQdAAaiEEA0AgBCABKAIAIgFHBEAgAUEEay0AAEEPcUUEQCAAQeAEakE2IAFBAmsvAQAiBSAFQTZPG0ECdGoiBSAFKAIAQQFqNgIACyABQQRqIQEMAQsLQbiSAUESIAMQiQYgACgC4AQiAQRAIABBi9MANgL4AyAAQQA2AvQDIAAgATYC8AMgA0HakgEgAEHwA2oQmgELQQEhAQNAIAFBNkcEQAJAIABB4ARqIAFBAnRqKAIAIgRFDQAgASACKAJATg0AIAAgAiAAQaAEaiACKAJEIAFBGGxqKAIEEOUFNgLoAyAAIAE2AuQDIAAgBDYC4AMgA0HakgEgAEHgA2oQmgELIAFBAWohAQwBCwsgACgCuAYiAQRAIABBxTM2AtgDIABBADYC1AMgACABNgLQAyADQdqSASAAQdADahCaAQsCQAJAIAMoAkwiAUEATgRAIAFFDQFBtNUEKAIAIAFB\u002F\u002F\u002F\u002F\u002FwNxRw0BCwJAIAMoAlBBCkYNACADKAIUIgEgAygCEEYNACADIAFBAWo2AhQgAUEKOgAADAILIAMQigYMAQsgAyADKAJMIgFB\u002F\u002F\u002F\u002F\u002FwMgARs2AkwCQAJAIAMoAlBBCkYNACADKAIUIgEgAygCEEYNACADIAFBAWo2AhQgAUEKOgAADAELIAMQigYLIAMoAkwaIANBADYCTAsLIABB2\u002FgANgLIAyAAQdDxADYCxAMgAEH0+AA2AsADIANBy5IBIABBwANqEJoBIAcpAxgiDlBFBEAgACAHKQMAIg83A7ADIAAgDjcDqAMgACAPuSAOuaM5A7gDIABBwecANgKgAyADQf+UASAAQaADahCqASAHKQMgIQ4gBykDACEQIAcpAxAhDyAAQQg2AogDIAAgDzcDgAMgACAQIA99uSAOuaM5A5ADIAAgDjcD+AIgAEHS5wA2AvACIANBpZUBIABB8AJqEKoBCyAHKQMoIg5QRQRAIAAgBykDMCIPNwPgAiAAIA43A9gCIAAgD7kgDrmjOQPoAiAAQdUlNgLQAiADQdqUASAAQdACahCqAQsgBykDOCIOUEUEQCAAIAcpA0AiDzcDwAIgACAONwO4AiAAIA+5IA65ozkDyAIgAEG5JjYCsAIgA0HclQEgAEGwAmoQqgELIAcpA0giDlBFBEAgACAHKQNQIg83A6ACIAAgDjcDmAIgACAPuSAOuaM5A6gCIABBiyI2ApACIANBipQBIABBkAJqEKoBIAcpA1ghDiAHKQNIIQ8gACAHKQNgNwOAAiAAIA65IA+5ozkDiAIgACAONwP4ASAAQd4oNgLwASADQYqUASAAQfABahCqASAHKQNoIQ4gACAHKQNwIg83A+ABIAAgD7kgDrmjOQPoASAAIA43A9gBIABBxic2AtABIANBg5YBIABB0AFqEKoBCwJAIAcpA3giDlANACAAIAcpA4ABNwPAASAAIA43A7gBIABB\u002FiQ2ArABIANBrJMBIABBsAFqEJoBIAcpA3ghDiAAIAcpA4gBIg83A6ABIAAgD7kgDrmjOQOoASAAIA43A5gBIABBrtwANgKQASADQbGUASAAQZABahCqASAHKQOQASIOUA0AIAAgBykDmAEiDzcDgAEgACAONwN4IAAgD7kgDrmjOQOIASAAQbzTADYCcCADQbGUASAAQfAAahCqAQsgBykDoAEiDlBFBEAgACAONwNoIABBkSU2AmAgA0GfkwEgAEHgAGoQmgELAkAgBykDqAEiDlANACAAIA43A1ggAEHMIDYCUCADQZ+TASAAQdAAahCaASAHKQOwASIOUA0AIAAgDjcDSCAAQcUgNgJAIANBn5MBIABBQGsQmgEgBykDsAEhDyAAIAcpA7gBIg5CA4Y3AzAgACAOuSAPuaM5AzggACAONwMoIABB4CE2AiAgA0HfkwEgAEEgahCqAQsgBykDwAEiDlBFBEAgACAHKQPIATcDECAAIA43AwggAEGEIjYCACADQayTASAAEJoBCyAAQcAGaiQAIAMoAkwaIAMQogMaIAMgAygCDBEFABogAy0AAEEBcUUEQCADKAI4IQAgAygCNCIBBEAgASAANgI4CyAABEAgACABNgI0CyADQZjVBCgCAEYEQEGY1QQgADYCAAsgAygCYBDUASADENQBCyAMEAogDBDUAQsgB0HQAWokAAsJACAAIAEQzwQLLAAgACABEM8EIgFCgICAgHCDQoCAgIDgAFIEfiAAQQNBAiABpxsQKQUgAQsLkAECAXwBfiMAQRBrIgIkAAJ+IAMpAwAiAUIgiKciAwRAQoCAgIAQIANBC2pBEkkNARoLQoCAgIDgACAAIAJBCGogARBCDQAaIAIrAwgiBJlE\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP0NlIAS9QoCAgICAgID4\u002FwCDQoCAgICAgID4\u002FwBSIAScIARhcXGtQoCAgIAQhAshBSACQRBqJAAgBQsmAEKAgICA4AAgACADKQMAENkFIgBBAEetQoCAgIAQhCAAQQBIGwsvAQF+An4gAygCBCICBEBCgICAgBAiBCACQQtqQRJJDQEaCyAAIAQgAyADENIECwsvAQF+An4gAygCBCICBEBCgICAgBAiBCACQQtqQRJJDQEaCyAAIAQgAyADENMECwsJACAAIAEQngILowECAn4BfyMAQRBrIgIkAAJ+IAAgARCeAiIFQoCAgIBwg0KAgICA4ABRBEAgBQwBC0EKIQcCQAJAIAQNACADKQMAIgFCgICAgHCDQoCAgIAwUQ0AIAAgARDbBCIHQQBIDQELQoCAgIDgACAAIAJBCGogBRBtDQEaIAAgAisDCCAHQQBBABC6AgwBCyAAIAUQDEKAgICA4AALIQYgAkEQaiQAIAYLkAICAX4BfCMAQRBrIgIkAEKAgICA4AAhBAJAIAAgARCeAiIBQoCAgIBwg0KAgICA4ABRBEAgASEEDAELIAAgAiABEG0NAAJAAkAgAykDACIBQoCAgIBwg0KAgICAMFEEQCACKwMAIgW9IQEMAQsgACACQQxqIAEQswENAiACKwMAIgW9IgFCgICAgICAgPj\u002FAINCgICAgICAgPj\u002FAFINAQsgAEKAgICAwH4gAUKAgICAwIGA\u002FP8AfSAFvUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsQNCEEDAELIAIoAgwiA0HlAGtBm39NBEAgAEHrIUEAEEQMAQsgACAFQQogA0EBELoCIQQLIAJBEGokACAEC80BAgF+AnwjAEEQayICJABCgICAgOAAIQQCQCAAIAEQngIiAUKAgICAcINCgICAgOAAUQRAIAEhBAwBCyAAIAIgARBtDQAgACACQQxqIAMpAwAQswENACACKAIMIgNB5QBPBEAgAEHrIUEAEEQMAQsgAisDACIFmSIGRFDv4tbkGktEZgRAIABCgICAgMB+IAW9QoCAgIDAgYD8\u002FwB9IAa9QoCAgICAgID4\u002FwBWGxA0IQQMAQsgACAFQQogA0ECELoCIQQLIAJBEGokACAEC4sCAwF+AX8BfCMAQRBrIgIkAEKAgICA4AAhBAJAIAAgARCeAiIBQoCAgIBwg0KAgICA4ABRBEAgASEEDAELIAAgAiABEG0NACAAIAJBDGogAykDABCzAQ0AIAIrAwAiBr0iAUKAgICAgICA+P8Ag0KAgICAgICA+P8AUQRAIABCgICAgMB+IAFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsQNCEEDAELAn8gAzUCBEIghkKAgICAMFEEQEEEDAELIAIoAgwiA0HlAE8EQCAAQeshQQAQRAwCCyADQQFqIQVBBQshAyAAIAZBCiAFIAMQugIhBAsgAkEQaiQAIAQLjgECAX4Cf0KAgICAMCEBAkAgAkEDa0F+SQ0AQoCAgIDgACEBIAAgAykDAEKAgICAMEKAgICAMBDyAyIEQoCAgIBwg0KAgICA4ABRBEAgBA8LIAAgBBCoASEFIAAgBBAMIAVFDQAgBSACQQJGBH8gACADKQMIEOQBBUEACxAFIAAgBRAxQoCAgIAwIQELIAELtwICAX4DfyMAQRBrIgUkACAFQQA6AA9CgICAgDAhAQJAIAJBA2tBfkkNAAJAIAAgAykDABCoASIGRQ0AAkAgAkECRw0AIAAgAykDCEKAgICAMEKAgICAMBDyAyIEQoCAgIBwg0KAgICA4ABRBEAgACAGEDEgBCEBDAMLIAAgBBCoASEHIAAgBBAMIAcNACAAIAYQMQwBCyAGIAcgBUEPahAGIQIgACAGEDEgACAHEDEgAkUNAQJAIAUtAA9FBEAgACACIAIQPUGHgAEQ8wMhAQwBC0KAgICA4AAhAQJAIABBAxCGASIEQoCAgIBwg0KAgICA4ABRBEBCgICAgCAhBAwBCyAAIARBMyAAIAIQYEEDEBUaCyAAIAQQmAELIAIQ1AEMAQtCgICAgOAAIQELIAVBEGokACABC80CAQd\u002FIwBBIGsiBCQAIAAgAykDABAlIgFCgICAgHCDQoCAgIDgAFIEQCAAIARBCGpBABA+GiABpyIFQRBqIQYgBSgCBEH\u002F\u002F\u002F\u002F\u002FB3EiCEEDayEJIAhBBmshCkEAIQMDQCADIAhORQRAAkACfyAFKQIEQoCAgIAIg1AiB0UEQCAGIANBAXRqLwEADAELIAMgBmotAAALIgJBJUcNAAJAIAMgCkoNACADQQFqIQICfyAHRQRAIAYgAkEBdGovAQAMAQsgAiAGai0AAAtB9QBHDQAgBSADQQJqQQQQvQMiAkEASA0AIANBBWohAwwBC0ElIQIgAyAJSg0AIAUgA0EBakECEL0DIgJBJSACQQBOIgcbIQIgA0ECaiADIAcbIQMLIARBCGogAhCHARogA0EBaiEDDAELCyAAIAEQDCAEQQhqEDchAQsgBEEgaiQAIAEL5AEBBH8jAEEgayICJAAgACADKQMAECUiAUKAgICAcINCgICAgOAAUgRAIAAgAkEIaiABpyIFKAIEQf\u002F\u002F\u002F\u002F8HcRA+GiAFQRBqIQYgBSgCBEH\u002F\u002F\u002F\u002F\u002FB3EhB0EAIQMDQCADIAdGRQRAAkACQAJAIAUtAAdBgAFxRQRAIAMgBmotAAAhBAwBCyAGIANBAXRqLwEAIgRB\u002FwFLDQELQbDXASAEQcUAEJICRQ0AIAJBCGogBBCHARoMAQsgAkEIaiAEEPUBCyADQQFqIQMMAQsLIAAgARAMIAJBCGoQNyEBCyACQSBqJAAgAQvMBAIGfwF+IwBBIGsiBiQAAkAgACADKQMAECUiAUKAgICAcINCgICAgOAAUQ0AIAAgBkEIaiABpyIJKAIEQf\u002F\u002F\u002F\u002F8HcRA+GiAJQRBqIQhBACECAkADQCAJKQIEIgunQf\u002F\u002F\u002F\u002F8HcSIKIAJKBEAgAkEBaiEFAkACQCALQoCAgIAIgyILUARAIAIgCGotAAAhAwwBCyAIIAJBAXRqLwEAIgNB\u002FwFLDQELAkAgA0Ewa0EKSSADQd\u002F\u002FA3FBwQBrQRpJcg0AQaOMASADQQkQkgINACAEDQEgAxDQBEUNAQsgBkEIaiADEIcBGiAFIQIMAgsCfwJ\u002FAkAgA0GA+ANxIgdBgLADRwRAIAdBgLgDRw0BQboxIQcMBgtB3y4hByAFIApODQUCfyALUEUEQCAIIAVBAXRqLwEADAELIAUgCGotAAALIgVBgMADa0GAeEkNBSAGQQhqIAVB\u002FwdxIANBCnRBgPg\u002FcXJBgIAEaiIDQRJ2QfABchD1ASADQQx2QT9xQYABciEHIAJBAmoMAQsgA0H\u002FAE0EQCAGQQhqIAMQ9QEgBSECDAQLIANB\u002Fw9NBEAgBSECIANBBnZBwAFyDAILIANBDHZB4AFyIQcgBQshAiAGQQhqIAcQ9QEgA0EGdkE\u002FcUGAAXILIQcgBkEIaiIFIAcQ9QEgBSADQT9xQYABchD1AQwBCwsgACABEAwgBkEIahA3IQEMAQsgACAHEL4DIAAgARAMIAYoAggoAhAiAEEQaiAGKAIMIAAoAgQRAABCgICAgOAAIQELIAZBIGokACABC6EEAgZ\u002FAX4jAEEgayIFJAACQCAAIAMpAwAQJSIBQoCAgIBwg0KAgICA4ABRDQAgACAFQQhqQQAQPhogAaciCEEQaiEJQQAhAgNAAkACQAJAIAgpAgQiC6dB\u002F\u002F\u002F\u002F\u002FwdxIAJKBEACfyALQoCAgIAIg1BFBEAgCSACQQF0ai8BAAwBCyACIAlqLQAACyIDQSVGBEAgACAIIAIQ0QQiA0EASA0DIAJBA2ohBiADQf8ATQRAIAQEQCAGIQIMBgtBJSADIAMQ0AQiBxshAyACQQFqIAYgBxshAgwFCwJ\u002FIANB4P\u002F\u002F\u002FwdxQcABRgRAIANBH3EhA0GAASEHQQEMAQsgA0Hw\u002F\u002F\u002F\u002FB3FB4AFGBEAgA0EPcSEDQYAQIQdBAgwBCyADQfj\u002F\u002F\u002F8HcUHwAUcEQEEBIQdBACEDQQAMAQsgA0EHcSEDQYCABCEHQQMLIQIDQCACQQBMDQMgACAIIAYQ0QQiCkEASA0EIAZBA2ohBiAKQcABcUGAAUcEQEEAIQMMBAUgAkEBayECIApBP3EgA0EGdHIhAwwBCwALAAsgAkEBaiECDAMLIAAgARAMIAVBCGoQNyEBDAQLIAYhAiADIAdIIANB\u002F\u002F\u002FDAEpyRSADQYBwcUGAsANHcQ0BIABB9IABEL4DCyAAIAEQDCAFKAIIKAIQIgBBEGogBSgCDCAAKAIEEQAAQoCAgIDgACEBDAILIAVBCGogAxCxARoMAAsACyAFQSBqJAAgAQs5AQF+IAAgAykDABCoASICRQRAQoCAgIDgAA8LIAAgAhD+ASACakEAQQpBABCAAiEEIAAgAhAxIAQLhwEBAX8jAEEQayICJAACQCAAIAMpAwAQqAEiBEUEQEKAgICA4AAhAQwBCwJ+QoCAgIDgACAAIAJBDGogAykDCBB1DQAaIAIoAgwiAwRAQoCAgIDAfiADQSVrQV1JDQEaCyAAIAQQ\u002FgEgBGpBACADQYEIEIACCyEBIAAgBBAxCyACQRBqJAAgAQulAgIEfgN\u002FIwBBEGsiCCQAQoCAgIDgACEFAkACfgJAIAFCgICAgHBUDQAgAactAAVBEHFFDQAgCCACrTcDCCAAIAFBASAIQQhqEKMBDAELIAAQOwsiBEKAgICAcINCgICAgOAAUQ0AIAJBACACQQBKG60hB0IAIQECQANAIAEgB1IEQCADIAGnQQN0aikDACIGQiCIp0F1TwRAIAanIgkgCSgCAEEBajYCAAsgACAEIAEgBkGAgAEQyAEhCiABQgF8IQEgCkEATg0BDAILCyAAIARBMCACQQBOBH4gAq0FQoCAgIDAfiACuL0iAUKAgICAwIGA\u002FP8AfSABQoCAgICAgID4\u002FwBWGwsQOUEASA0AIAQhBQwBCyAAIAQQDAsgCEEQaiQAIAULsQkCBH8IfiMAQTBrIgQkACADKQMAIQggBEKAgICAMDcDGEEBIQUCQAJAAn4gAkECSARAQoCAgIAwIQ5CgICAgDAMAQtCgICAgDAgAykDCCIOQoCAgIBwg0KAgICAMFENABpCgICAgDAhDEKAgICAMCEJQoCAgIAwIQtCgICAgDAhCiAAIA4QVQ0BQQAhBUKAgICAMCACQQJGDQAaIAMpAxALIQ8CQAJAAkACQCAAIAhBzAEgCEEAEBEiCkKAgICAcIMiCUKAgICAMFIEQAJAAkAgCUKAgICA4ABRBEBCgICAgDAhDEKAgICAMCEJQoCAgIAwIQsMAQsgACAKEAwCfgJAIAFCgICAgHBUDQAgAactAAVBEHFFDQAgACABQQBBABCjAQwBCyAAEDsLIgtCgICAgHCDQoCAgIDgAFEEQEKAgICAMCEMQoCAgIAwIQkMAQsgCEIgiKdBdU8EQCAIpyICIAIoAgBBAWo2AgALIAQgCDcDECAAIARBEGpBCHJBABCFAyEGIAQpAxghDCAEKQMQIQkgBkUNAQtCgICAgDAhCgwGC0IAIQEDQCAAIAkgDCAEQQhqEJEBIghCgICAgHCDQoCAgIDgAFENAiAEKAIIBEBCgICAgDAhCgwGCwJAIAUEQCAIIQoMAQsgBCAINwMgIAQgAUL\u002F\u002F\u002F\u002F\u002FD4M3AyggACAOIA9BAiAEQSBqEBwhCiAAIAgQDCAKQoCAgIBwg0KAgICA4ABRDQMLIAAgCyABIAoQZ0EASA0CIAFCAXwhAQwACwALIAAgCBAgIgpCgICAgHCDQoCAgIDgAFENAiAAIARBCGogChAvQQBIDQIgBAJ+IAQpAwgiCEKAgICACHxC\u002F\u002F\u002F\u002F\u002Fw9YBEAgCEL\u002F\u002F\u002F\u002F\u002FD4MMAQtCgICAgMB+IAi5vSIJQoCAgIDAgYD8\u002FwB9IAlC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbCyINNwMgAn4CQCABQoCAgIBwVA0AIAGnLQAFQRBxRQ0AIAAgAUEBIARBIGoQowEMAQsgAEKAgICAMEEBIARBIGoQ4AILIQsgACANEAwgC0KAgICAcINCgICAgOAAUQRAQoCAgIAwIQwMAgtCACENIAhCACAIQgBVGyEBA0AgASANUQRAQoCAgIAwIQxCgICAgDAhCQwFC0KAgICAMCEMIAAgCiANEGwiCEKAgICAcINCgICAgOAAUQ0CAkAgBQRAIAghCQwBCyAEIAg3AyAgBCANQv\u002F\u002F\u002F\u002F8PgzcDKCAAIA4gD0ECIARBIGoQHCEJIAAgCBAMIAlCgICAgHCDQoCAgIDgAFENAwsgACALIA0gCRBnIQcgDUIBfCENIAdBAE4NAAsMAQtCgICAgDAhCiAJQoCAgIBwg0KAgICAMFENAyAAIAlBARCQARoMAwtCgICAgDAhCQwCC0KAgICAMCEMQoCAgIAwIQlCgICAgDAhCwwBCyAAIAtBMCABpyICQQBOBH4gAUL\u002F\u002F\u002F\u002F\u002FD4MFQoCAgIDAfiACuL0iAUKAgICAwIGA\u002FP8AfSABQoCAgICAgID4\u002FwBWGwsQOUEATg0BCyAAIAsQDEKAgICA4AAhCwsgACAKEAwgACAJEAwgACAMEAwgBEEwaiQAIAsLJgBCgICAgOAAIAAgAykDABDMASIAQQBHrUKAgICAEIQgAEEASBsLowICAX8EfiMAQRBrIgUkAEKAgICAMCEGAkACQCAAIAVBCGogACABECAiCRAvDQAgBUEBNgIEAkAgBARAIAMpAwAhCEKAgICAMCEHIAJBAk4EQCADKQMIIQcLIAAgCBBVRQ0BDAILIAJBAEwEQEKAgICAMCEIQoCAgIAwIQcMAQtCgICAgDAhCEKAgICAMCEHIAMpAwAiAUKAgICAcINCgICAgDBRDQAgACAFQQRqIAEQswFBAEgNAQsgACAJQgAQnwIiAUKAgICAcINCgICAgOAAUQRAIAEhBgwBCyABIQYgACABIAkgBSkDCEIAIAUoAgQgCCAHENQEQgBTDQAgCSEGDAELIAAgCRAMQoCAgIDgACEBCyAAIAYQDCAFQRBqJAAgAQv5AQIEfgF\u002FIwBBIGsiCCQAAkACQCAAIAhBGGogACABECAiARAvDQAgACAIQQhqIAMpAwBCACAIKQMYIgQgBBBmDQAgACAIQRBqIAMpAwhCACAEIAQQZg0AIAggBDcDAAJ+IAQgAkEDSA0AGiAEIAMpAxAiBUKAgICAcINCgICAgDBRDQAaIAAgCCAFQgAgBCAEEGYNASAIKQMACyEGIAAgASAIKQMIIgUgCCkDECIHIAYgB30iBiAEIAV9IgQgBCAGVRsiBEEBQX9BASAFIAQgB3xTGyAFIAdXGxDzAkUNAQsgACABEAxCgICAgOAAIQELIAhBIGokACABC+UHAgR\u002FCX4jAEEwayIFJABCgICAgOAAIQgCQAJAIAAgBUEgaiAAIAEQICIOEC8NACAFQgA3AxgCQCACQQBKBEAgACAFQRhqIAMpAwBCACAFKQMgIgsgCxBmDQIgBSALIAUpAxgiCn0iDDcDECACQQFGDQEgACAFQRBqIAMpAwhCACAMQgAQZg0CIAUpAxAhDAwBCyAFKQMgIQsLIAsgAkECa0EAIAJBAkobrSIPfCAMfSINQoCAgICAgIAQWQRAIABBiscAQQAQEgwBCyAAIA0Q4gIiAUKAgICAcINCgICAgOAAUQRAQQAhAkKAgICA4AAhCwwCCyANQgBXBEBBACECIAEhCEKAgICAMCELDAILIAGnKAIkIgQgDadBA3RqIQICQAJAAkACQCAOIAVBLGogBUEMahCPAQRAIAsgBTUCDFENAQsgCkIAIApCAFUbIQoMAQtCACEIIApCACAKQgBVGyEJIAUoAiwhBgNAAkAgCCAJUQRAIANBEGohA0IAIQgDQCAIIA9RDQIgAyAIp0EDdGopAwAiCkIgiKdBdU8EQCAKpyIHIAcoAgBBAWo2AgALIAQgCjcDACAEQQhqIQQgCEIBfCEIDAALAAsgBiAIp0EDdGopAwAiCkIgiKdBdU8EQCAKpyIHIAcoAgBBAWo2AgALIAQgCjcDACAEQQhqIQQgCEIBfCEIDAELCyAJIAx8IQgDQCAIIAtZDQIgBiAIp0EDdGopAwAiCUIgiKdBdU8EQCAJpyIDIAMoAgBBAWo2AgALIAQgCTcDACAEQQhqIQQgCEIBfCEIDAALAAsDQAJAIAkgClEEQCADQRBqIQNCACEJA0AgCSAPUQ0CIAMgCadBA3RqKQMAIhBCIIinQXVPBEAgEKciBiAGKAIAQQFqNgIACyAEIBA3AwAgBEEIaiEEIAlCAXwhCQwACwALIAAgDiAJIAQQVEF\u002FRg0DIARBCGohBCAJQgF8IQkMAQsLIAogDHwhCQNAIAkgC1kNASAAIA4gCSAEEFRBf0YNAiAEQQhqIQQgCUIBfCEJDAALAAsgAiAERgRAIAFCgICAgDAgACABQTAgDUKAgICACFoEfkKAgICAwH4gDbm9IghCgICAgMCBgPz\u002FAH0gCEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsFIA0LEDlBAEgiAxshC0KAgICA4AAgASADGyEIIAIhBAwDC0GJFkGo7ABB4rkCQfHqABAAAAsgASELDAELQQAhAkKAgICAMCELCwNAIAIgBEZFBEAgBEKAgICAMDcDACAEQQhqIQQMAQsLIAAgCxAMIAAgDhAMIAVBMGokACAIC8gIAgl+A38jAEEwayIOJABCgICAgDAhBQJAAkAgACAOQSBqIAAgARAgIgoQLw0AIAAgDkEYaiADKQMAQgAgDikDICIGIAYQZg0AAkAgBARAAkACQAJAIAIOAgIAAQsgBiAOKQMYfSEHQQAhAgwBCyAAIA5BEGogAykDCEIAIAYgDikDGH1CABBmDQMgAkECayECIA4pAxAhBwsgBiACrXwgB31CgICAgICAgBBTDQEgAEH0yABBABASDAILIA4gBjcDECAGIQEgAykDCCINQoCAgIBwg0KAgICAMFIEfiAAIA5BEGogDUIAIAEgARBmDQIgDikDEAUgAQsgDikDGH0iAUIAIAFCAFUbIQdBACECCyAAIAogB0KAgICACHxC\u002F\u002F\u002F\u002F\u002Fw9YBH4gB0L\u002F\u002F\u002F\u002F\u002FD4MFQoCAgIDAfiAHub0iAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwsiBRCfAiEBIAAgBRAMAkAgAUKAgICAcINCgICAgOAAUQ0AIA4pAxgiDSAHfCELAkACQCAKIA5BDGogDkEIahCPAUUgAUKAgICAcFRyDQAgAaciDy8BBkECRw0AIA0hBSAPLQAFQQhxRQ0BIAUgCyAONQIIIgggCCALVRsiCCAFIAhVGyAFfSEJIA4oAgwhEANAIAkgDFENAiAQIAWnQQN0aikDACIIQiCIp0F1TwRAIAinIg8gDygCAEEBajYCAAsgACABIAwgCEGAgAEQyAFBAEgNAyAMQgF8IQwgBUIBfCEFDAALAAsgDSEFCyAFIAsgBSALVRshCANAIAUgCFIEQCAAIAogBSAOQShqEFQiD0EASA0CIA8EQCAAIAEgCSAOKQMoQYCAARDIAUEASA0DCyAJQgF8IQkgBUIBfCEFDAELCyAAIAFBMCAJQoCAgIAIWgR+QoCAgIDAfiAJub0iBUKAgICAwIGA\u002FP8AfSAFQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwUgCQsQOUEASA0AIAQEQCAGIAKtIgt8IAd9IQwCQCAHIAtRDQAgACAKIAsgDXwgByANfCIFIAYgBX1Bf0EBIAcgC1MbEPMCQQBIDQIDQCAGIAxXDQEgACAKIAZCAX0iBhCFAkEATg0ACwwCCyADQRBqIQNCACEFA0AgBSALUgRAIAMgBadBA3RqKQMAIghCIIinQXVPBEAgCKciAiACKAIAQQFqNgIACyAFIA18IQYgBUIBfCEFIAAgCiAGIAgQe0EATg0BDAMLCyAMQoCAgIAIfEL\u002F\u002F\u002F\u002F\u002FD1gEfiAMQv\u002F\u002F\u002F\u002F8PgwVCgICAgMB+IAy5vSIFQoCAgIDAgYD8\u002FwB9IAVC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbCyEJIAEhBSAAIApBMCAJEDlBAEgNAgsgCiEFDAILIAEhBQsgACAKEAxCgICAgOAAIQELIAAgBRAMIA5BMGokACABC5MEAgN\u002FBn4jAEEgayICJABCgICAgDAhCgJAAkAgAykDACIIQoCAgIBwg0KAgICAMFENACAAIAgQNQ0AIABB+zlBABASQoCAgIDgACEJDAELQoCAgIDgACEJAkAgACACQRBqIAAgARAgIgsQLw0AIAAgAikDECIHEOICIghCgICAgHCDQoCAgIDgAFEEQEKAgICA4AAhCgwBCwJAIAdCAFUEQCAIpygCJCEEQgAhAQJAAkAgCyACQRxqIAJBDGoQjwFFDQAgByACNQIMUg0AIAIoAhwhBQNAIAEgB1ENAiAFIAGnQQN0aikDACIMQiCIp0F1TwRAIAynIgYgBigCAEEBajYCAAsgBCAMNwMAIARBCGohBCABQgF8IQEMAAsACwNAIAEgB1ENASAAIAsgASAEEFRBf0cEQCAEQQhqIQQgAUIBfCEBDAELCyAHIAEgASAHUxshCgNAIAEgClENAyAEQoCAgIAwNwMAIARBCGohBCABQgF8IQEMAAsACyAAIAhBMCAHQoCAgIAIWgR+QoCAgIDAfiAHub0iAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwUgBwsQOUEASA0BCyAAIAggBCADENUEIglCgICAgHCDQoCAgIDgAFENACAAIAkQDCAIIQkMAQsgCCEKCyAAIAoQDCAAIAsQDAsgAkEgaiQAIAkL5AIDAn4FfwF8IwBBIGsiBSQAAkAgAigCBA0AIAIoAgAhBgJAAkACfyACKAIIBEAgACkAACABKQAAUQ0CIAUgACkDADcDECAFIAEpAwA3AxggBiACKQMQQoCAgIAwQQIgBUEQahAcIgNCgICAgHCDQoCAgIDgAFENAyADQv\u002F\u002F\u002F\u002F8PWARAIAOnIgJBH3UgAkEAR3IMAgsgBiAFQQhqIAMQbUEASA0DIAUrAwgiCkQAAAAAAAAAAGQgCkQAAAAAAAAAAGNrDAELIAAoAggiCEUEQCAGIAApAwAQJSIDQoCAgIBwg0KAgICA4ABRDQMgACADpyIINgIICyABKAIIIgkEfyAIBSAGIAEpAwAQJSIDQoCAgIBwg0KAgICA4ABRDQMgASADpyIJNgIIIAAoAggLIAkQvAILIgcNAgsgACkDECIDIAEpAxAiBFUgAyAEU2shBwwBCyACQQE2AgQLIAVBIGokACAHC9MFAgd+A38jAEEQayINJAAgAUKAgICAcINCgICAgDBRBEAgACgCECgCjAEpAwghAQsCQCAAIAFBPCABQQAQESIGQoCAgIBwg0KAgICA4ABRDQACQCAGQv\u002F\u002F\u002F\u002F9vVg0AIAAgBhAMIAAgARD8AiIMRQRAQoCAgIDgACEGDAILAn8gBEEASARAIAwoAihBGGoMAQsgDCAEQQN0akHYAGoLKQMAIgZCIIinQXVJDQAgBqciDCAMKAIAQQFqNgIACyAAIAZBAxBHIQEgACAGEAxCgICAgOAAIQYgAUKAgICAcINCgICAgOAAUQ0AAkAgAyAEQQdGIgxBA3RqKQMAIgVCgICAgHCDQoCAgIAwUgRAIAAgBRAlIgVCgICAgHCDQoCAgIDgAFENASAAIAFBMyAFQQMQFRoLAkAgAkECQQEgDBsiAkwNACADIAJBA3RqKQMAIgVCgICAgHBUDQAgACAFQTQQbiICQQBIDQEgAkUNACAAIAVBNCAFQQAQESIFQoCAgIBwg0KAgICA4ABRDQEgACABQTQgBUEDEBUaCyAEQQdGBEBCgICAgOAAIQhCgICAgDAhBQJAAkAgACADKQMAQQAQywEiB0KAgICAcINCgICAgOAAUQRAQoCAgIAwIQkMAQsgACAHQesAIAdBABARIglCgICAgHCDQoCAgIDgAFENACAAEDsiBUKAgICAcINCgICAgOAAUQRAQoCAgIDgACEFDAELA0AgACAHIAkgDUEMahCRASILQoCAgIBwg0KAgICA4ABSBEAgDSgCDARAIAUhCAwECyAAIAUgCiALEGchDiAKQgF8IQogDkEATg0BCwsgACAHQQEQkAEaCyAAIAUQDAsgACAJEAwgACAHEAwgCEKAgICAcINCgICAgOAAUQ0BIAAgAUE1IAhBAxAVGgsgACABQQBBAEEBELQCIAEhBgwBCyAAIAEQDAsgDUEQaiQAIAYLrQMCBn4CfyMAQSBrIgMkAEKAgICAMCEGQoCAgIDgACEHAkAgACADQRBqIAAgARAgIggQLw0AIAAgAykDECIEEOICIgVCgICAgHCDQoCAgIDgAFEEQEKAgICA4AAhBgwBCwJAIARCAFUEQCAEQgF9IQEgBacoAiQhAgJAAkAgCCADQRxqIANBDGoQjwFFDQAgBCADNQIMUg0AIAMoAhwhCgNAIAFCAFMNAiAKIAGnQQN0aikDACIJQiCIp0F1TwRAIAmnIgsgCygCAEEBajYCAAsgAiAJNwMAIAJBCGohAiABQgF9IQEMAAsACwNAIAFCAFMNASAAIAggASACEFRBf0cEQCACQQhqIQIgAUIBfSEBDAELCwNAIAFCAFMNAyACQoCAgIAwNwMAIAJBCGohAiABQgF9IQEMAAsACyAAIAVBMCAEQoCAgIAIWgR+QoCAgIDAfiAEub0iAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwUgBAsQOUEASA0BCyAFIQcMAQsgBSEGCyAAIAYQDCAAIAgQDCADQSBqJAAgBwumAwICfgJ\u002FIwBBMGsiAiQAIAJCgICAgDA3AygCQAJ+QoCAgIAwIAAgAkEQaiAAIAEQICIBEC8NABogASACQRxqIAJBDGoQjwEhAyACKQMQIQUCQCADRQ0AIAUgAigCDCIDrVINACADQQJJDQJBACEAIAIoAhwhBgNAIAAgA0EBayIDTw0DIAYgAEEDdGoiBykDACEEIAcgBiADQQN0aiIHKQMANwMAIAcgBDcDACAAQQFqIQAMAAsACwNAIAQgBUIBfSIFWQ0CAkACQAJAIAAgASAEIAJBKGoQVCIDQQBIDQAgACABIAUgAkEgahBUIgZBAEgNAAJAAkAgBgRAIAAgASAEIAIpAyAQe0EASA0DIANFDQIgACABIAUgAikDKBB7QQBODQEMBQsgA0UNAyAAIAEgBBCFAkEASA0CIAAgASAFIAIpAygQe0EASA0ECyACQoCAgIAwNwMoDAILIAAgASAFEIUCQQBODQELIAIpAygMAwsgBEIBfCEEDAELC0KAgICAMAshBCAAIAQQDCAAIAEQDEKAgICA4AAhAQsgAkEwaiQAIAELhQEBAX5CgICAgOAAIQQgACABECAiAUKAgICAcINCgICAgOAAUgRAAn5CgICAgOAAIAAgAUHcACABQQAQESIEQoCAgIBwg0KAgICA4ABRDQAaIAAgBBA1RQRAIAAgBBAMIAAgASAAIAAQ1wQMAQsgACAEIAFBAEEAEDYLIQQgACABEAwLIAQLogMCAn8GfiMAQSBrIgUkAAJ+AkAgACAFIAAgARAgIgkQLw0AQSwhBgJAIAJBAEwgBHJFBEBCgICAgDAhB0EAIQIgAykDACIBQoCAgIBwg0KAgICAMFENASAAIAEQJSIHQoCAgIBwg0KAgICA4ABRDQJBfyEGIAenIgIoAgRBAUcNASACLQAQIQYMAQtCgICAgDAhB0EAIQILIAAgBUEIakEAED4aQgAhASAFKQMAIghCACAIQgBVGyELAkADQCABIAtSBEACQCABUA0AIAZBAE4EQCAFQQhqIAYQPBoMAQsgBUEIaiACQQAgAigCBEH\u002F\u002F\u002F\u002F\u002FB3EQSxoLIAAgCSABpxCmASIIQoCAgIBwgyIKQoCAgIAgUSAKQoCAgIAwUXJFBEAgCkKAgICA4ABRDQMgBUEIaiAEBH4gACAIENYEBSAICxCEAQ0DCyABQgF8IQEMAQsLIAAgBxAMIAAgCRAMIAVBCGoQNwwCCyAFKAIIKAIQIgJBEGogBSgCDCACKAIEEQAAIAAgBxAMCyAAIAkQDEKAgICA4AALIQwgBUEgaiQAIAwLvQICAX8DfiMAQSBrIgQkAAJ+AkACQAJAIAAgBEEQaiAAIAEQICIGEC8NACAEKQMQIgVCAFcNASAEIAVCAX0iATcDCCACQQJOBEAgACAEQQhqIAMpAwhCfyABIAUQZg0BIAQpAwghAQsDQCABQgBTDQIgACAGIAEgBEEYahBUIgJBAEgNASACBEAgAykDACIFQiCIp0F1TwRAIAWnIgIgAigCAEEBajYCAAsgACAFIAQpAxhBABC0AQ0ECyABQgF9IQEMAAsACyAAIAYQDEKAgICA4AAMAgtCfyEBCyAAIAYQDCABQv\u002F\u002F\u002F\u002F8PgyABQoCAgIAIfEL\u002F\u002F\u002F\u002F\u002FD1gNABpCgICAgMB+IAG5vSIBQoCAgIDAgYD8\u002FwB9IAFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbCyEHIARBIGokACAHC+cDAgJ\u002FB34jAEEgayIEJAACfgJAIAAgBEEQaiAAIAEQICIIEC8NAEJ\u002FIQkCQCAEKQMQIgdCAFcNAEIAIQEgBEIANwMIIAJBAk4EQCAAIARBCGogAykDCEIAIAcgBxBmDQIgBCkDCCEBCwJAAkAgCCAEQQRqIAQQjwFFDQAgASAENQIAIgYgASAGVRshBiAEKAIEIQIDQCABIAZRBEAgBiEBDAILIAMpAwAiCkIgiKdBdU8EQCAKpyIFIAUoAgBBAWo2AgALIAIgAadBA3RqKQMAIgtCIIinQXVPBEAgC6ciBSAFKAIAQQFqNgIACyAAIAogC0EAELQBDQIgAUIBfCEBDAALAAsgASAHIAEgB1UbIQcDQCABIAdRDQIgACAIIAEgBEEYahBUIgJBAEgNAyACBEAgAykDACIGQiCIp0F1TwRAIAanIgIgAigCAEEBajYCAAsgACAGIAQpAxhBABC0AQ0CCyABQgF8IQEMAAsACyABIQkLIAAgCBAMIAlC\u002F\u002F\u002F\u002F\u002Fw+DIAlCgICAgAh8Qv\u002F\u002F\u002F\u002F8PWA0BGkKAgICAwH4gCbm9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsMAQsgACAIEAxCgICAgOAACyEMIARBIGokACAMC+cDAgl+AX8jAEEwayIOJABCgICAgDAhBgJAAkAgACAOQQhqIAAgARAgIggQLwRAQoCAgIAwIQUMAQtCgICAgDAhBSAAIAMpAwAiChBVDQBCgICAgDAhCSACQQJOBEAgAykDCCEJCyAOKQMIIgVCAX1CACAEQX5xQQJGIgIbIQdCf0IBIAIbIQtCfyAFIAIbIQwDQCAHIAxSBEAgB0KAgICACHxC\u002F\u002F\u002F\u002F\u002Fw9YBH4gB0L\u002F\u002F\u002F\u002F\u002FD4MFQoCAgIDAfiAHub0iBUKAgICAwIGA\u002FP8AfSAFQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwsiBUKAgICAcINCgICAgOAAUQ0CIAAgCCAFEE4iBkKAgICAcINCgICAgOAAUQ0CIA4gATcDICAOIAU3AxggDiAGNwMQIAAgCiAJQQMgDkEQahAcIg1CgICAgHCDQoCAgIDgAFENAiAAIA0QJwRAAkACQCAEQQFrDgMAAQABCyAAIAYQDCAAIAgQDAwFCyAAIAUQDCAAIAgQDCAGIQUMBAUgACAGEAwgACAFEAwgByALfCEHDAILAAsLIAAgCBAMQoCAgIAwQv\u002F\u002F\u002F\u002F8PIARBAWtBfXEbIQUMAQsgACAFEAwgACAGEAwgACAIEAxCgICAgOAAIQULIA5BMGokACAFC6ICAgN+An8jAEEgayIHJAACQAJAIAAgB0EYaiAAIAEQICIFEC8NACAHQgA3AxACQCACQQFMBEAgBykDGCEEDAELIAcpAxghBCADKQMIIgFCgICAgHCDQoCAgIAwUgRAIAAgB0EQaiABQgAgBCAEEGYNAgsgByAENwMIIAJBAkYNACADKQMQIgFCgICAgHCDQoCAgIAwUQ0AIAAgB0EIaiABQgAgBCAEEGYNASAHKQMIIQQLIAcpAxAiASAEIAEgBFUbIQYDQCABIAZRDQIgAykDACIEQiCIp0F1TwRAIASnIgIgAigCAEEBajYCAAsgACAFIAEgBBB7IQggAUIBfCEBIAhBAE4NAAsLIAAgBRAMQoCAgIDgACEFCyAHQSBqJAAgBQvvBQIDfwl+IwBBQGoiBSQAQoCAgIAwIQsgBUKAgICAMDcDOCAFQoCAgIAwNwMwAkACQAJAIARBCHEiBwRAIAFCIIinQXVPBEAgAaciBiAGKAIAQQFqNgIACyAFIAAgARCKASIGrDcDCCAGQQBODQEMAgsgACAFQQhqIAAgARAgIgEQLw0BCyAAIAMpAwAiDxBVDQACQCACQQFMBEAgBSkDCCIMQgAgDEIAVRshCiAEQQFxIQQDQCAIIApRBEAgAEGODUEAEBIMBAsgDCAIQn+FfCAIIAQbIQkgCEIBfCEIIAcEQCAFIAAgASAJEGwiCTcDMCAJQoCAgIBwg0KAgICA4ABRDQQMAwsgACABIAkgBUEwahBUIgJBAEgNAyACRQ0ACyAFKQMwIQkMAQsgAykDCCIJQiCIp0F1TwRAIAmnIgIgAigCAEEBajYCAAsgBEEBcSEEIAUpAwghDAsgCCAMIAggDFUbIRADQCAIIBBRDQIgDCAIQn+FfCAIIAQbIQoCQAJAAkAgBwRAIAUgACABIAoQbCILNwM4IAtCgICAgHCDQoCAgIDgAFINAQwDCyAAIAEgCiAFQThqEFQiAkEASARAIAUpAzghCwwDCyACRQ0BCyAKQoCAgIAIfEL\u002F\u002F\u002F\u002F\u002FD1gEfiAKQv\u002F\u002F\u002F\u002F8PgwVCgICAgMB+IAq5vSILQoCAgIDAgYD8\u002FwB9IAtC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbCyENIAUpAzghCiANQoCAgIBwg0KAgICA4ABRBEAgCiELDAILIAUgATcDKCAFIA03AyAgBSAKNwMYIAUgCTcDEEKAgICAMCELIAAgD0KAgICAMEEEIAVBEGoQHCEOIAAgDRAMIAAgChAMIAVCgICAgDA3AzggDkKAgICAcINCgICAgOAAUQ0BIAAgCRAMIA4hCQsgCEIBfCEIDAELCyAFIAk3AzALIAAgBSkDMBAMIAAgCxAMQoCAgIDgACEJCyAAIAEQDCAFQUBrJAAgCQvlCAIDfwp+IwBBMGsiBSQAQoCAgIAwIQggBUKAgICAMDcDKAJAAkACQCAEQQhxIgcEQCABQiCIp0F1TwRAIAGnIgYgBigCAEEBajYCAAsgBSAAIAEQigEiBqw3AwggBkEATg0BQoCAgIDgACEJDAILQoCAgIDgACEJIAAgBUEIaiAAIAEQICIBEC8NAQsgAykDACEQQoCAgIAwIQ8gAkECTgRAIAMpAwghDwtCgICAgOAAIQkgACAQEFUNAAJAAkACQAJAAkACQAJAIAQODQUABgECBgYGBQAGAwQGC0KAgICAECEIDAULIAAgAQJ+IAUpAwgiCEKAgICACHxC\u002F\u002F\u002F\u002F\u002Fw9YBEAgCEL\u002F\u002F\u002F\u002F\u002FD4MMAQtCgICAgMB+IAi5vSIIQoCAgIDAgYD8\u002FwB9IAhC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbCxCfAiIIQoCAgIBwg0KAgICA4ABSDQQMBQsgACABQgAQnwIiCEKAgICAcINCgICAgOAAUg0DDAQLIAUgATcDECAFIAU1Agg3AxggAEECIAVBEGoQ4QIiCEKAgICAcINCgICAgOAAUg0CDAMLIAAQOyIIQoCAgIBwg0KAgICA4ABSDQFCgICAgOAAIQgMAgtCgYCAgBAhCAsgBSkDCCIJQgAgCUIAVRshEQNAIAogEVIEQAJAAkAgBwRAIAUgACABIAoQbCILNwMoQoCAgIDgACEJIAtCgICAgHCDQoCAgIDgAFINAQwFCyAAIAEgCiAFQShqEFQiAkEASARAQoCAgIDgACEJDAULIAJFDQELIAohCyAKQoCAgIAIWgRAQoCAgIDAfiAKub0iCUKAgICAwIGA\u002FP8AfSAJQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGyELC0KAgICA4AAhCSALQoCAgIBwg0KAgICA4ABRDQMgBSABNwMgIAUgCzcDGCAFIAUpAygiDjcDECAAIBAgD0EDIAVBEGoQHCEMIAAgCxAMIAxCgICAgHCDQoCAgIDgAFENAwJAAkACQAJAAkACQAJAIAQODQABBQIEBQUFAAEFAwQFCyAAIAwQJw0FQoCAgIAQIQkMCgsgACAMECdFDQRCgYCAgBAhCQwJCyAAIAggCiAMEGdBAE4NAwwHCyAAIAggCkL\u002F\u002F\u002F\u002F\u002FD4MgDEGAgAEQzwFBAE4NAgwGCyAAIAwQJ0UNASAOQiCIp0F1TwRAIA6nIgIgAigCAEEBajYCAAsgACAIIA0gDhBnQQBIDQUgDUIBfCENDAELIAAgDBAMCyAAIA4QDCAFQoCAgIAwNwMoCyAKQgF8IQoMAQsLIARBDEcEQCAIIQkMAgsgBSABNwMQIAUgDUL\u002F\u002F\u002F\u002F\u002FD4M3AxhCgICAgOAAIQkgAEECIAVBEGoiAhDhAiIKQoCAgIBwg0KAgICA4ABRDQAgBSAINwMQQoCAgIDgACAKIAAgACAKQcMAQQEgAhCzAhD\u002FARshCQsgACAIEAwLIAAgBSkDKBAMIAAgARAMIAVBMGokACAJC60EAgV+A38jAEEQayIJJABCgICAgDAhBgJAAkAgACABECAiCEKAgICAcINCgICAgOAAUQ0AIAAgCEIAEJ8CIgZCgICAgHCDQoCAgIDgAFENAEF\u002FIQpBfyACIAJBAEgbIQsCQANAIAogC0cEQCAIIQUgCkEATgRAIAMgCkEDdGopAwAhBQsCQAJAIAVCgICAgHBUDQACfyAAIAVB0wEgBUEAEBEiAUKAgICAcIMiB0KAgICAMFIEQCAHQoCAgIDgAFENByAAIAEQJwwBCyAAIAUQzAELIgJBAEgNBSACRQ0AIAAgCSAFEC8NBSAJKQMAIgcgBHxC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002Fw9VDQRCACEBIAdCACAHQgBVGyEHA0AgASAHUQ0CIAAgBSABIAlBCGoQVCICQQBIDQYgAgRAIAAgBiAEIAkpAwgQZ0EASA0HCyAEQgF8IQQgAUIBfCEBDAALAAsgBEL+\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FD1UNAyAFQiCIp0F1TwRAIAWnIgIgAigCAEEBajYCAAsgACAGIAQgBRBnQQBIDQQgBEIBfCEECyAKQQFqIQoMAQsLIAAgBkEwIARCgICAgAh8Qv\u002F\u002F\u002F\u002F8PWAR+IARC\u002F\u002F\u002F\u002F\u002Fw+DBUKAgICAwH4gBLm9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLEDlBAEgNAQwCCyAAQfTIAEEAEBILIAAgBhAMQoCAgIDgACEGCyAAIAgQDCAJQRBqJAAgBgvaBQIFfgN\u002FIwBBIGsiCSQAQoCAgIAwIQRCgICAgOAAIQYCQCAAIAlBEGogACABECAiCBAvDQAgACAJQQhqIAMpAwAQ4wENACAJKQMQIQUCQAJAIAkpAwgiAUIAUwRAIAEgBXwiAUIAUw0BCyABIAVTDQELIABB3eEAQQAQRAwBCyAAIAUQ4gIiB0KAgICAcINCgICAgOAAUQRAQoCAgIDgACEEDAELIAenKAIkIQJCACEEAkACQCAIIAlBHGogCUEEahCPAUUNACAFIAk1AgRSDQBCACEGIAkoAhwhCgNAIAEgBlIEQCAKIAanQQN0aikDACIEQiCIp0F1TwRAIASnIgsgCygCAEEBajYCAAsgAiAENwMAIAJBCGohAiAGQgF8IQYMAQsLIAMpAwgiBEIgiKdBdU8EQCAEpyIDIAMoAgBBAWo2AgALIAIgBDcDAANAIAFCAXwiASAFWQ0CIAogAadBA3RqKQMAIgRCIIinQXVPBEAgBKciAyADKAIAQQFqNgIACyACQQhqIgIgBDcDAAwACwALAkACQANAIAEgBFENASAAIAggBCACEFRBf0cEQCACQQhqIQIgBEIBfCEEDAELCyAEIQEMAQsgAykDCCIEQiCIp0F1TwRAIASnIgMgAygCAEEBajYCAAsgAiAENwMAA0AgAUIBfCIBIAVZDQIgACAIIAEgAkEIaiICEFRBf0cNAAsLA0AgASAFWQRAIAchBAwDBSACQoCAgIAwNwMAIAJBCGohAiABQgF8IQEgCSkDECEFDAELAAsACyAHQoCAgIAwIAAgB0EwIAVCgICAgAh8Qv\u002F\u002F\u002F\u002F8PWAR+IAVC\u002F\u002F\u002F\u002F\u002Fw+DBUKAgICAwH4gBbm9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLEDlBAEgiAhshBEKAgICA4AAgByACGyEGCyAAIAQQDCAAIAgQDCAJQSBqJAAgBgvrAQEDfiMAQSBrIgIkAEKAgICA4AAhBAJAIAAgAkEQaiAAIAEQICIFEC8NACAAIAJBCGogAykDABDjAQ0AQoCAgIAwIQQgAikDCCIBIAIpAxAiBiABQj+Hg3wiAUIAUyABIAZZcg0AAkAgBSACQQRqIAIQjwFFDQAgASACNQIAWg0AIAIoAgQgAadBA3RqKQMAIgRCIIinQXVJDQEgBKciAyADKAIAQQFqNgIADAELQoCAgIDgACEEIAAgBSABIAJBGGoQVCIDQQBIDQAgAikDGEKAgICAMCADGyEECyAAIAUQDCACQSBqJAAgBAstAQF+QoCAgIAwIQICQCABEJYDIgBFDQAgAC0AEkEEcUUNACAANQJEIQILIAILMwIBfgF\u002FQoCAgIAwIQICQCABEJYDIgNFDQAgAy0AEkEEcUUNACAAIAMoAkAQKSECCyACCygAQoCAgIDgACAAIAMpAwAgARDhBSIAQQBHrUKAgICAEIQgAEEASBsLvAECAX4Cf0KAgICA4AAhBCAAIAEQVQR+QoCAgIDgAAVB9pEBIQICQCABpyIDLwEGEOABRQ0AAkAgAygCICIDLwARIgVBgAhxRQ0AIAMoAlQiBkUNACAAIAYgAygCSBDqAQ8LIAVBBHZBA3FBAWsiA0ECSw0AIANB\u002F\u002F8DcUECdEGQ9QFqKAIAIQILIAAgAiAAIAFBNyABQQAQESIBQoCAgIBwg0KAgICAMFEEfiAAQS8QKQUgAQtBnggQsgELC+EFAwN+B38DfAJAIAAgARBVDQAgACAAKQMwQQ4QRyIFQoCAgIBwg0KAgICA4ABRDQAgBaciCSABQoCAgIBwWgR\u002FIAGnLQAFQRBxBUEACyAJLQAFQe8BcXI6AAUCQCAAQQEgAiACQQFMGyIKQQFrIghBA3RBGGoQJCIHRQ0AIAFCIIinQXVPBEAgAaciAiACKAIAQQFqNgIACyAHIAE3AwAgAykDACIEQiCIp0F1TwRAIASnIgIgAigCAEEBajYCAAsgByAINgIQIAcgBDcDCCAHQRhqIQtBACECA0AgAiAIRwRAIAMgAkEBaiIMQQN0aikDACIEQiCIp0F1TwRAIASnIg0gDSgCAEEBajYCAAsgCyACQQN0aiAENwMAIAwhAgwBCwsgCSAHNgIgAn8gAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECJBfwwBCyAAQQAgAadBMBBDCyICQQBIDQACQCACRQ0AIAAgAUEwIAFBABARIgRCgICAgHCDQoCAgIDgAFENASAEQv\u002F\u002F\u002F\u002F8PWARAIASnIgIgCGtBACACIApOG60hBgwBCyAEQiCIp0EHa0FtTQRAAkAgBEKAgICAwIGA\u002FP8AfCIEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWDQAgBL+dIg8gCLciEGUNACAPIBChIQ4LIA69IgQCfyAOmUQAAAAAAADgQWMEQCAOqgwBC0GAgICAeAsiAre9UQRAIAKtIQYMAgtCgICAgMB+IARCgICAgMCBgPz\u002FAH0gBEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhshBgwBCyAAIAQQDAsgACAFQTAgBkEBEBUaIABBgJIBIAAgAUE3IAFBABARIgFCgICAgHCDIgRCgICAgJB\u002FUgR+IARCgICAgOAAUQ0BIAAgARAMIABBLxApBSABC0HslgEQsgEiAUKAgICAcINCgICAgOAAUQ0AIAAgBUE3IAFBARAVGiAFDwsgACAFEAwLQoCAgIDgAAswACACQQBMBEAgACABQoCAgIAwQQBBABAcDwsgACABIAMpAwAgAkEBayADQQhqEBwLgwICAX4BfyMAQSBrIgIkAEKAgICA4AAhBQJAAkAgACABECAiAUKAgICAcINCgICAgOAAUQ0AIAAgAykDABAwIgNFDQADQCAAIAIgAacgAxBDIgZBAE4EQCAGBEBCgICAgDAhBQJAIAItAABBEHFFDQAgAkEYQRAgBBtqKQMAIgVCIIinQXVJDQAgBaciBCAEKAIAQQFqNgIACyAAIAIQRgwECyAAIAEQwgIiAUKAgICAcIMiBUKAgICAIFEEQEKAgICAMCEFDAQLIAVCgICAgOAAUQ0DIAAQdkUNAQsLQoCAgIDgACEFDAELQQAhAwsgACADEBAgACABEAwgAkEgaiQAIAULsQEBA34gAykDCCEFIAMpAwAhBkKAgICA4AAhBwJAIAAgARAgIgFCgICAgHCDQoCAgIDgAFIEfiAAIAUQVQ0BIAAgBhAwIgJFDQEgACABIAJCgICAgDBCgICAgDAgBSAEGyAFQoCAgIAwIAQbQYWqAUGFmgEgBBsQaiEDIAAgARAMIAAgAhAQQoCAgIDgAEKAgICAMCADQQBIGwVCgICAgOAACw8LIAAgARAMQoCAgIDgAAtyAQF+QoCAgIAwIQMgAUKAgICAEIRCgICAgHCDQoCAgIAwUQRAIAAQIkKAgICA4AAPCyACQoCAgIBwg0KAgICAIFIgAkL\u002F\u002F\u002F\u002F\u002Fb1hxBH5CgICAgDAFQoCAgIDgAEKAgICAMCAAIAEgAkEBEIkCQQBIGwsLMgECfiAAIAEQICIBQoCAgIBwg0KAgICA4ABRBEAgAQ8LIAAgARDoASEDIAAgARAMIAMLoAECAn4BfyMAQSBrIgIkAEKAgICA4AAhBAJAAkAgACABECAiAUKAgICAcINCgICAgOAAUQ0AIAAgAykDABAwIgNFDQAgACACIAGnIAMQQyIGQQBIDQEgBkUEQEKAgICAECEEDAILIAI1AgAhBSAAIAIQRiAFQgKIQgGDQoCAgIAQhCEEDAELQQAhAwsgACADEBAgACABEAwgAkEgaiQAIAQLwQEBAn4CQAJ+QoCAgIAQIAMpAwAiBEKAgICAcFQNABpCgICAgOAAIAAgARAgIgFCgICAgHCDQoCAgIDgAFENABogBKciAiACKAIAQQFqNgIAIAGnIQIDQCAAIAQQwgIiBEKAgICAcIMiBUKAgICA4ABSBEAgAiAEp0YgBUKAgICAIFFyDQMgABB2RQ0BCwsgACAEEAwgACABEAxCgICAgOAACw8LIAAgBBAMIAAgARAMIAVCgICAgCBSrUKAgICAEIQLnwQCBn8CfiMAQSBrIgYkACAAIAZBCGoiBUEAED4aIAVBKBA8GiAEQX5xQQJGBEAgBUGdkgEQgwEaCyAGQQhqIgVBmjoQgwEaIARBfXFBAUYEQCAFQSoQPBoLIAZBCGpBrYwBEIMBGkEAIQUgAkEBayIHQQAgB0EAShshCAJAAkACQANAIAUgCEcEQCAFBEAgBkEIakEsEDwaCyAFQQN0IQkgBUEBaiEFIAZBCGogAyAJaikDABCNAUUNAQwCCwsgBkEIaiIFQbKSARCDARogAkEASgRAIAUgAyAHQQN0aikDABCNAQ0BCyAGQQhqIgJBtogBEIMBGkKAgICAMCEMIAIQNyILQoCAgIBwg0KAgICA4ABRDQEgACAAKQPAASALQQNBfxCHAyEMIAAgCxAMIAxCgICAgHCDQoCAgIDgAFENASABQoCAgIBwg0KAgICAMFENAiAAIAFBPCABQQAQESILQoCAgIBwg0KAgICA4ABRDQECQCALQv\u002F\u002F\u002F\u002F9vVg0AIAAgCxAMIAAgARD8AiICRQ0CIAIoAiggBEEBdEGQtwFqLwEAQQN0aikDACILQiCIp0F1SQ0AIAunIgIgAigCAEEBajYCAAsgACAMIAtBARCJAiEKIAAgCxAMIApBAE4NAgwBCyAGKAIIKAIQIgJBEGogBigCDCACKAIEEQAAQoCAgIAwIQwLIAAgDBAMQoCAgIDgACEMCyAGQSBqJAAgDAt6AQF+IAAgAykDABAwIgJFBEBCgICAgOAADwtCgICAgOAAIQQgACABECAiAUKAgICAcINCgICAgOAAUQRAIAAgAhAQIAEPCyAAQQAgAacgAhBDIQMgACACEBAgACABEAxCgICAgOAAIANBAEetQoCAgIAQhCADQQBIGwsIACAAIAEQIAsPACAAIAFBOEEAQQAQswILdAAgACADKQMAECAiAUKAgICAcINCgICAgOAAUgR+AkACQCAAIAMpAwgQMCICRQRAIAAgARAMDAELIABBACABpyACEEMhAyAAIAIQECAAIAEQDCADQQBODQELQoCAgIDgAA8LIANBAEetQoCAgIAQhAUgAQsL6wIBBn4jAEEQayICJAAgAykDACEBQoCAgIDgACEFIAAQMyIHQoCAgIBwg0KAgICA4ABSBEBCgICAgDAhBAJAIAAgAUEAEMsBIgFCgICAgHCDQoCAgIDgAFIEQAJAIAAgAUHrACABQQAQESIGQoCAgIBwg0KAgICA4ABRDQADQCAAIAEgBiACQQxqEJEBIgRCgICAgHCDQoCAgIDgAFENASACKAIMBEAgByEFDAQLAkACQCAEQv\u002F\u002F\u002F\u002F9vWARAIAAQIgwBCyAAIARCABBOIghCgICAgHCDQoCAgIDgAFENACAAIARCARBOIglCgICAgHCDQoCAgIDgAFEEQCAAIAgQDAwBCyAAIAcgCCAJQYeAARCUAUEATg0BCyAAIAQQDAwCCyAAIAQQDAwACwALIAFCgICAgHBaBEAgACABQQEQkAEaCyAGIQQLIAEhBiAHIQELIAAgBBAMIAAgBhAMIAAgARAMCyACQRBqJAAgBQtKAEEvIQIgACADKQMAIgFCgICAgHBaBH8gAacvAQYiAkEsRgRAQQ1BLCAAIAEQNRshAgsgACgCECgCRCACQRhsaigCBAVBLwsQKQvwAQIFfwF+IwBBMGsiAiQAQoGAgIAQIQECQCADKQMAIgpCgICAgHBUDQBCgICAgOAAIQEgACACQSxqIAJBKGogCqciCEEDEH0NACACKAIsIQYgAigCKCEHQQAhAwJAA0AgAyAHRwRAIAAgAkEIaiIJIAggBiADQQN0aigCBBBDIgVBAEgNAgJAIAVFDQAgACAJEEYgAigCCCIFQQFxRSAERSAFQQJxRXJxDQBCgICAgBAhAQwDCyADQQFqIQMMAQsLIAAgChCXASIDQQBIDQEgA0EBR61CgICAgBCEIQELIAAgBiAHEFsLIAJBMGokACABC78BAgF+AX9CgICAgDAhAQJAIAAgAykDABAgIgRCgICAgHCDQoCAgIDgAFENAEEBIAIgAkEBTBshBUEBIQIDQCACIAVGBEAgBA8LIAMgAkEDdGopAwAiAUKAgICAEIRCgICAgHCDQoCAgIAwUgRAIAAgARAgIgFCgICAgHCDQoCAgIDgAFENAiAAIAQgAUKAgICAMEEBEMEFDQIgACABEAwLIAJBAWohAgwACwALIAAgBBAMIAAgARAMQoCAgIDgAAsYACAAIAMpAwAgAykDCBBNrUKAgICAEIQL6AICA34DfyMAQSBrIgIkAEKAgICA4AAhBCAAIAMpAwAQICIFQoCAgIBwg0KAgICA4ABSBEACfgJAIAAgAkEcaiACQRhqIAWnQQMQfQRAQoCAgIAwIQEgAigCGCEHIAIoAhwhCAwBCyAAEDMhASACKAIYIQcgAigCHCEIIAFCgICAgHCDQoCAgIDgAFEEQEKAgICA4AAhAQwBC0EAIQMDQCADIAdHBEAgACAIIANBA3RqIgkoAgQQUiIEQoCAgIBwg0KAgICA4ABRDQIgAiAENwMIIAIgBTcDACAAIAUgACACQQAQ2AQhBiAAIAQQDCAGQoCAgIBwgyIEQoCAgIAwUgRAIARCgICAgOAAUQ0DIAAgASAJKAIEIAZBh4ABEBVBAEgNAwsgA0EBaiEDDAELCyAAIAggBxBbIAEMAQsgACAIIAcQWyAAIAUQDCABIQVCgICAgOAACyEEIAAgBRAMCyACQSBqJAAgBAuPAQACQAJAIAMpAwAiAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAEBEAgABAiDAMLIAFCIIinQXVJDQEgAaciACAAKAIAQQFqNgIAIAEPCyAAIAEQigQiAkEASA0BIAQEQCACQQBHrUKAgICAEIQPCyACRQRAIABB7dAAQQAQEgwCCyABpyIAIAAoAgBBAWo2AgALIAEPC0KAgICA4AALTwACQAJAIAMpAwAiAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAERQRAQoCAgIAQDwsgABAiDAELIAAgARCXASIAQQBODQELQoCAgIDgAA8LIABBAEetQoCAgIAQhAsQACAAIAMpAwBBAkEAELICCxAAIAAgAykDAEEBQQAQsgILRwEBfkKAgICA4AAhBCAAIAMpAwAiASADKQMIENoEBH5CgICAgOAABSABQiCIp0F1TwRAIAGnIgAgACgCAEEBajYCAAsgAQsLiwEBAn4gAykDACIBQv\u002F\u002F\u002F\u002F9vWARAIAAQIkKAgICA4AAPCyADKQMQIQZCgICAgOAAIQUCQCAAIAMpAwgQMCICRQ0AIAAgASACIAYgBEVBDnQQ2QQhAyAAIAIQECADQQBIDQAgBARAIANBAEetQoCAgIAQhA8LIAGnIgAgACgCAEEBajYCACABIQULIAULQQAgACADKQMAIgEgAykDCEEBEIkCQQBIBEBCgICAgOAADwsgAUIgiKdBdU8EQCABpyIAIAAoAgBBAWo2AgALIAELXQACQCABQoCAgIBwg0KAgICAMFENACAAKAIQKAKMASgCCCABp0YNACAAIAFBARBeDwsgAykDACIBQiCIpyICQQtqQRFLIAJBfnFBAkdyRQRAIAAQMw8LIAAgARAgCzYAIAMpAwAiAUIgiKciAkF\u002FRiAERSACQX5xQQJHcXJFBEAgABAiQoCAgIDgAA8LIAAgARDoAQuJAQEBfiADKQMAIgFC\u002F\u002F\u002F\u002F\u002F29WIAFCgICAgHCDQoCAgIAgUXJFBEAgAEHe0gBBABASQoCAgIDgAA8LAkAgACABEEEiAUKAgICAcINCgICAgOAAUgRAIAMpAwgiBEKAgICAcINCgICAgDBRDQEgACABIAQQ2gRFDQEgACABEAwLQoCAgIDgAA8LIAELnwIBA34gAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECJCgICAgOAADwtCgICAgOAAIQUCfiAAIAFBNyABQQAQESIEQoCAgIBwg0KAgICAMFEEQCAAQZQBECkMAQsgACAEEDQLIgRCgICAgHCDIgZCgICAgOAAUgR+An4gACABQTMgAUEAEBEiAUKAgICAcINCgICAgDBRBEAgAEEvECkMAQsgACABEDQLIgFCgICAgHCDIgVCgICAgOAAUQRAIAAgBBAMQoCAgIDgAA8LAkAgBkKAgICAkH9RBEAgBKcoAgRB\u002F\u002F\u002F\u002F\u002FwdxRQ0BCyAFQoCAgICQf1EEQCABpygCBEH\u002F\u002F\u002F\u002F\u002FB3FFDQELIABB7JYBIARBpJIBELIBIQQLIAAgBCABELYCBUKAgICA4AALC5UCAgF+An8jAEEwayICJABCgICAgOAAIQECQCAAIAJBKGogAykDABCkAQ0AIAAQ4gEiBUKAgICAcINCgICAgOAAUQ0AIAAgAkEUaiADKQMIEK4CIgZFBEAgACAFEAwMAQsgACgC2AEgAhC7ASACQgEQMhogAiACKQMoIgGnIgdBARC5ARogAiACQn9B\u002F\u002F\u002F\u002F\u002FwNBARB6GiAFp0EEaiIDIAYgAhCyBBoCQCAERSABUHINACACQgEQMhogAiAHQQFrQQEQuQEaIAMgAhDyAUEASA0AIAJCARAyGiACIAdBARC5ARogAyADIAJB\u002F\u002F\u002F\u002F\u002FwNBARDuARoLIAIQGSAAIAYgAkEUahDmASAFEK8CIQELIAJBMGokACABCwkAIAAgARDcBAt0AgJ+AX8gACABENwEIgFCgICAgHCDQoCAgIDgAFEEQCABDwtBCiEGAn4CQCACRQ0AIAMpAwAiBEKAgICAcINCgICAgDBRDQAgACAEENsEIgZBAE4NAEKAgICA4AAMAQsgACABIAYQogULIQUgACABEAwgBQvOAQIBfwJ+IwBBEGsiAiQAAkBBuNQEKQMAUA0AQbTUBCgCACAAIAAQPRDqASEDQbTUBCgCACABIAEQPUH9\u002FwAQ8wMiBEHA1AQoAgAQkAMEQEG01AQoAgAgBBAMQbTUBCgCACADEAwMAQsgAiAENwMIIAIgAzcDAEG01AQoAgBBuNQEKQMAQoCAgIAwQQIgAhAcIQNBtNQEKAIAIAIpAwAQDEG01AQoAgAgAikDCBAMIANBwNQEKAIAEJADGkG01AQoAgAgAxAMCyACQRBqJAALPQACfgJAIAEQlgMiAkUNACACLQAQQQFxDQBCgICAgDAgAi0AEUEBcQ0BGgsgAEGTIkEAEBJCgICAgOAACwsSACAAQZMiQQAQEkKAgICA4AAL1w4CB38BfiMAQdAAayIIJAAgCEEAQdAAECwiCCAENgIMIAggADYCACAIQQE2AgggCEKggICAEDcDECAIIAI2AjggCCACIANqIgI2AjwjAEEQayIHJAACQCAIKAI4IgMtAABBI0cNACADLQABQSFHDQAgByADQQJqIgM2AgwDQAJAIAIgA00NAAJAIAMtAAAiCUEKaw4EAQAAAQALIAnAQQBIBEAgA0EGIAdBDGoQUSEJIAcoAgwhAyAJQX5xQajAAEYNASAJQX9HDQILIAcgA0EBaiIDNgIMDAELCyAIIAM2AjgLIAdBEGokAAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAFQQNxIgdBAkYEQCAAKAIQKAKMASILRQ0EIAspAwgiDkL\u002F\u002F\u002F\u002F\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\u002FAINCgICAgICAgPj\u002FAFENAiAEQRBqIAZqIAedOQMAAkAgBQ0AIAQrAxAiB0QAAAAAAAAAAGZFIAdEAAAAAAAAWUBjRXINACAEIAdEAAAAAACwnUCgOQMQCyAFQQFqIQUMAQsLIARBEGpBABDrAyIHvSIBAn8gB5lEAAAAAAAA4EFjBEAgB6oMAQtBgICAgHgLIgW3vVEEQCAFrSEBDAELQoCAgIDAfiABQoCAgIDAgYD8\u002FwB9IAFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbIQELIARB0ABqJAAgAQtWABCoBSIBQoCAgIAIfEL\u002F\u002F\u002F\u002F\u002FD1gEQCABQv\u002F\u002F\u002F\u002F8Pgw8LQoCAgIDAfiABub0iAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwvvAQEDfiMAQRBrIgIkAEKAgICA4AAhBAJAIAAgACABECAiAUEBELsCIgVCgICAgHCDQoCAgIDgAFENACAFQiCIpyIDQQAgA0ELakESSRtFBEAgACACQQhqIAUQQkEASA0BQoCAgIAgIQQgAikDCEKAgICAgICA+P8Ag0KAgICAgICA+P8AUQ0BC0KAgICA4AAhBCAAIAFB48oAEIcCIgZCgICAgHCDQoCAgIDgAFENACAAIAYQNUUEQCAAQergAEEAEBIgACAGEAwMAQsgACAGIAFBAEEAEDYhBAsgACABEAwgACAFEAwgAkEQaiQAIAQLjAIDAXwBfgF\u002FIwBBEGsiAiQAQoCAgIDgACEFAkAgACACQQhqIgYgARCmAg0AIAAgBiADKQMAEEINACACAn4gAisDCCIEvUKAgICAgICA+P8Ag0KAgICAgICA+P8AUgRAIASdIgREAAAAAACwnUCgIAQgBEQAAAAAAABZQGMbIAQgBEQAAAAAAAAAAGYbIQQLIAS9IgUCfyAEmUQAAAAAAADgQWMEQCAEqgwBC0GAgICAeAsiA7e9UQRAIAOtDAELQoCAgIDAfiAFQoCAgIDAgYD8\u002FwB9IAVC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbCzcDACAAIAFBASACQREQ+AQhBQsgAkEQaiQAIAULigEDAX4BfAF\u002FIwBBEGsiAiQAQoCAgIDgACEEAkAgACACQQhqIgYgARCmAg0AIAAgBiADKQMAEEINACAAIAEgAisDCCIFnUQAAAAAAAAAAKBEAAAAAAAA+H8gBUQAANzCCLI+Q2UbRAAAAAAAAPh\u002FIAVEAADcwgiyPsNmGxD5BCEECyACQRBqJAAgBAvZAQIBfAF+IwBB0ABrIgIkAAJ+QoCAgIDgACAAIAEgAiAEQQ9xQQAQ1QMiAEEASA0AGkKAgICAwH4gAEUNABogBEGAAnEEQCACIAIrAwBEAAAAAACwncCgOQMACyACIARBBHZBD3FBA3RqKwMAIgW9IgECfyAFmUQAAAAAAADgQWMEQCAFqgwBC0GAgICAeAsiBLe9UQRAIAStDAELQoCAgIDAfiABQoCAgIDAgYD8\u002FwB9IAFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbCyEGIAJB0ABqJAAgBguHAQIBfAF+IwBBEGsiAiQAAn5CgICAgOAAIAAgAkEIaiABEKYCDQAaQoCAgIDAfiACKwMIIgS9Qv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWDQAaAn4gBJ0iBJlEAAAAAAAA4ENjBEAgBLAMAQtCgICAgICAgICAfwsQ1AOtCyEFIAJBEGokACAFC4MBAQF+AkAgAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECIMAQsCQCADKQMAIgRCgICAgHCDQoCAgICQf1INACAAIAQQMCICRQ0BIAAgAhAQQREhAwJAAkACQCACQccAaw4DAgMBAAsgAkEWRw0CC0EQIQMLIAAgASADELsCDwsgAEGnGUEAEBILQoCAgIDgAAuYAQIBfAF+IwBBEGsiAiQAAn5CgICAgOAAIAAgAkEIaiABEKYCDQAaIAIrAwgiBL0iAQJ\u002FIASZRAAAAAAAAOBBYwRAIASqDAELQYCAgIB4CyIAt71RBEAgAK0MAQtCgICAgMB+IAFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\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\u002F\u002F\u002F\u002F9vWARAIAAQIkKAgICA4AAhAQwBCyAAIAIgARCCAiIEQoCAgIBwg0KAgICA4ABRBEAgBCEBDAELIAAQMyIBQoCAgIBwg0KAgICA4ABRBEAgACACKQMAEAwgACACKQMIEAwgACAEEAxCgICAgOAAIQEMAQsgACABQYMBIARBBxAVGiAAIAFBgQEgAikDAEEHEBUaIAAgAUGCASACKQMIQQcQFRoLIAJBEGokACABC+UDAQV+IwBBMGsiAiQAAkAgAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECJCgICAgOAAIQUMAQsgACACQSBqIAEQggIiBUKAgICAcINCgICAgOAAUQ0AQoCAgIAwIQZCgICAgDAhBAJAAkAgACABQYEBIAFBABARIghCgICAgHCDQoCAgIDgAFENACAAIAgQVQ0AIAAgAykDAEEAEMsBIgRCgICAgHCDQoCAgIDgAFEEQAwBCyAAIARB6wAgBEEAEBEiBkKAgICAcINCgICAgOAAUQ0AA0AgAiAAIAQgBiACQRRqEJEBIgc3AxggB0KAgICAcINCgICAgOAAUQ0BIAIoAhQNAiAAIAggAUEBIAJBGGoQHCEHIAAgAikDGBAMIAdCgICAgHCDQoCAgIDgAFIEQCAAIAAgB0GAAUECIAJBIGoQpwIQ\u002FwFFDQELCyAAIARBARCQARoLIAAoAhAiAykDgAEhASADQoCAgIAgNwOAASACIAE3AwggACACKQMoQoCAgIAwQQEgAkEIahAcIQEgACACKQMIEAwgACAFIAEgAUKAgICAcINCgICAgOAAUSIDGxAMQoCAgIDgACAFIAMbIQULIAAgCBAMIAAgBhAMIAAgBBAMIAAgAikDIBAMIAAgAikDKBAMCyACQTBqJAAgBQvzAwIFfgF\u002FIwBBIGsiAiQAIAAgBSkDABDkASELIAIgBSkDECIINwMYIAUpAyAhCiAFKQMYIQkCQAJAIAAgAkEUaiAFKQMIEHUNAAJAIAsNACAFQoGAgIAQNwMAAkAgBEEDcSIFQQFGBEBCgICAgOAAIQEgABAzIgZCgICAgHCDQoCAgIDgAFENBAJAIABBoOcAQabqACAEQQRxIgQbEGAiB0KAgICAcINCgICAgOAAUQ0AIAAgBkGKASAHQQcQFUEASA0AIAMpAwAiB0IgiKdBdU8EQCAHpyIDIAMoAgBBAWo2AgALIAAgBkGLAUHBACAEGyAHQQcQFUEATg0CCyAAIAYQDAwECyADKQMAIgZCIIinQXVJDQAgBqciAyADKAIAQQFqNgIACyAAIAggAigCFCAGQQcQkwFBAEgNAUKAgICA4AAhASAAIApBfxDYAyIDQQBIDQIgA0UNAAJAIAVBAkYEQCACIAAgCBD+BCIGNwMIIAZCgICAgHCDQoCAgIDgAFENBCAAIAlCgICAgDBBASACQQhqEBwhASAAIAIpAwgQDAwBCyAAIAlCgICAgDBBASACQRhqEBwhAQsgAUKAgICAcINCgICAgOAAUQ0CIAAgARAMC0KAgICAMCEBDAELQoCAgIDgACEBCyACQSBqJAAgAQukCAINfgN\u002FIwBB8ABrIgIkACACQoCAgIAwNwNQAkAgAUL\u002F\u002F\u002F\u002F\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\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002Fw9RBEAgAEHOIUEAEBJCgICAgDAhBwwBCyACIAAgCCAMIAJBDGoQkQEiBzcDECAHQoCAgIBwg0KAgICA4ABRBEBBACEODAcLIAIoAgwEQCAGIQkMCgsgAiAHNwMgIAIgCiIBQoCAgIAIWgR+QoCAgIDAfiABub0iAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\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\u002FwB9IAFCgICAgICAgPj\u002FAFYbC1kBAX8gACABIARBImoQWiICRQRAQoCAgIDgAA8LIAJBBGohAyACKAIIIQQDfiADIARGBH5CgICAgDAFIARBEGshBSAEKAIEIQQgACgCECACIAUQgAUMAQsLC3UAIAAgASAEQSJqEFoiAkUEQEKAgICA4AAPCyAAIAIgAykDACIBQgAgAUIgiKdBB2tBbk8bIAEgAUKAgICAwIGA\u002FP8AfEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag1AbEPICIgNFBEBCgICAgBAPCyAAKAIQIAIgAxCABUKBgICAEAthACAAIAEgBEEiahBaIgJFBEBCgICAgOAADwsgACACIAMpAwAiAUIAIAFCIIinQQdrQW5PGyABIAFCgICAgMCBgPz\u002FAHxC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\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\u002F\u002F\u002F\u002F\u002Fb1ZyRQRAIAAgAhAMDAELIAAgBCAHIAMQQyIDQQBIDQICQCADRQRAQQAhBSAJQoCAgIAwUQ0FDAELIAAgBBBGIAlCgICAgDBSDQAgBC0AAEEBcUUNAUEAIQUgBy0ABUEBcUUNAQwEC0F\u002FIQUgACAGKQMAEJcBIgZBAEgNAiAAIARBIGogAhCEBSEIIAAgAhAMIAhBAEgNAwJAIAMEQCAEKAIAIgVBgDpBgM4AIAQoAiAiA0EQcRsgA3IQjwNFDQEgA0EBcQ0DIAVBAXENASADQRJxDQMgBUECcQ0BDAMLIAZFDQAgBC0AIEEBcQ0CCyAAIARBIGoQRgsgAEGaK0EAEBJBfyEFDAILAkAgAQRAIAEgBCkDIDcDACABIAQpAzg3AxggASAEKQMwNwMQIAEgBCkDKDcDCAwBCyAAIARBIGoQRgtBASEFDAELIAAgAhAMCyAEQeAAaiQAIAULDQAgACABIAJBLBDvBQsLACAAIAFBLBDwBQsWACAAIAMpAwAgAykDCCADKQMQEPIDC9EBAgN+An8jAEEQayIHJAACQCAAIAdBDGogAykDABDfASIIRQRAQoCAgIDgACEEDAELIAAgCCAHKAIMQcn\u002FABDzAyEBIAAgCBAxAkAgAkECSCABQoCAgIBwg0KAgICA4ABRcg0AIAAgAykDCCIGEDVFDQBCgICAgOAAIQQCQCAAEDMiBUKAgICAcINCgICAgOAAUQRAIAEhBQwBCyAAIAVBLyABQQcQFUEASA0AIAAgBUEvIAYQhQUhBAsgACAFEAwMAQsgASEECyAHQRBqJAAgBAsQACAAIAMpAwBBESAEELICC6UDAQR+IwBBEGsiAyQAIAQCfwJAAkACQAJAIAAgAUEqEFoiAkUEQEKAgICAMCEBDAELIAIoAhgEQEKAgICAMCEBQQEMBQsgACACKQMAIgggAikDCCIGEMUBIgFCgICAgHCDIgdCgICAgOAAUg0BC0KAgICAMCEHDAELIAdCgICAgCBRBEAgAkEBNgIYQoCAgIAwIQFBAQwDCyACKAIQBEAgACAAIAFCABBOEDQiB0KAgICAcIMiCUKAgICA4ABRDQECQCAJQoCAgICQf1INACAHpygCBEH\u002F\u002F\u002F\u002F\u002FB3ENACAAIANBCGogACAIQdYAIAhBABAREKEBQQBIDQIgACAIQdYAAn4gBqcgAykDCCACKAIUEPQCIgZCgICAgAh8Qv\u002F\u002F\u002F\u002F8PWARAIAZC\u002F\u002F\u002F\u002F\u002Fw+DDAELQoCAgIDAfiAGub0iBkKAgICAwIGA\u002FP8AfSAGQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwsQOUEASA0CCyAAIAcQDAwCCyACQQE2AhgMAQsgACABEAwgACAHEAxCgICAgOAAIQELQQALNgIAIANBEGokACABCyAAIAFCIIinQXVPBEAgAaciACAAKAIAQQFqNgIACyABC\u002FEHAgR\u002FC34jAEEwayIEJAACQCABQv\u002F\u002F\u002F\u002F9vWARAIAAQIkKAgICA4AAhAQwBC0KAgICAMCEIAkACQCAAIAMpAwAQJSIPQoCAgIBwg0KAgICA4ABRBEBCgICAgDAhDEKAgICAMCEBQoCAgIAwIQ1CgICAgDAhEAwBCyAAIAEgACkDSBD9ASIQQoCAgIBwg0KAgICA4ABRBEBCgICAgDAhDEKAgICAMCEBQoCAgIAwIQ0MAQsCQAJAIAAgACABQe4AIAFBABAREDQiDUKAgICAcINCgICAgOAAUQ0AIA2nIgJB9QBBABCgASEGIAJB+QBBABCgAUEASARAIABB7JYBIA1B0A4QsgEiDUKAgICAcINCgICAgOAAUQ0BCyAEIA03AyggBCABNwMgIAAgEEECIARBIGoQowEiDEKAgICAcINCgICAgOAAUQ0BIAAQOyIBQoCAgIBwg0KAgICA4ABRBEBCgICAgOAAIQEMAwtBfyECAkAgAykDCCIJQoCAgIBwg0KAgICAMFENACAAIARBHGogCRB1QQBIDQMgBCgCHCICDQAMBAsCQAJAIA+nIgcpAgQiCKdB\u002F\u002F\u002F\u002F\u002FwdxIgUEQCAGQX9zQR92IQYgCEL\u002F\u002F\u002F\u002F\u002FB4MhESACrSESQgAhCUKAgICAMCEIQQAhAgNAIAKtIQogAiEDA0AgAyAFTw0DIAAgDEHWACADrSIOEDlBAEgNByAAIAgQDAJAIAAgDCAPEMUBIghCgICAgHCDIgtCgICAgCBRDQAgC0KAgICA4ABRDQggACAEQRBqIAAgDEHWACAMQQAQERChAQ0IIAQgBCkDECILIBEgCyARUxsiCzcDECAKIAtRDQAgACAHIAIgAxCOASIKQoCAgIBwg0KAgICA4ABRDQggACABIAkgChBnQQBIDQggCUIBfCIKIBJRDQkgACAEQQhqIAgQLw0IIAunIQJCASELIAlCASAEKQMIIg4gDkIBVxt8IQkDQCAJIApRDQMgACAAIAggCxBsEDQiDkKAgICAcINCgICAgOAAUQ0JIAAgASAKIA4QZ0EASA0JIAtCAXwhCyAKQgF8IgogElINAAsMCQsgByAOIAYQ9AKnIQMMAAsACwALIAAgDCAPEMUBIghCgICAgHCDIglCgICAgCBSDQFCACEJQQAhAgsgACAHIAIgBSACIAVJGyAFEI4BIgpCgICAgHCDQoCAgIDgAFENAyAAIAEgCSAKEGdBAEgNAwwECyAJQoCAgIDgAFINAwwCC0KAgICAMCEMC0KAgICAMCEBCyAAIAEQDEKAgICA4AAhAQsgACAPEAwgACAQEAwgACAMEAwgACANEAwgACAIEAwLIARBMGokACABC+ACAQd+IAFC\u002F\u002F\u002F\u002F\u002F29YBEAgABAiQoCAgIDgAA8LQoCAgIDgACEIQoCAgIAwIQYCQAJAAkAgACADKQMAECUiB0KAgICAcINCgICAgOAAUQRAQoCAgIAwIQQMAQsgACABQdYAIAFBABARIgRCgICAgHCDQoCAgIDgAFENACAAIARCABBNRQRAIAAgAUHWAEIAEDlBAEgNAQsgACABIAcQxQEiBUKAgICAcIMiCUKAgICA4ABRDQEgACABQdYAIAFBABARIgZCgICAgHCDQoCAgIDgAFENAQJAIAAgBiAEEE0EQCAAIAQQDAwBCyAAIAFB1gAgBBA5QQBODQBCgICAgDAhBAwCCyAAIAcQDCAAIAYQDEL\u002F\u002F\u002F\u002F\u002FDyEIIAlCgICAgCBRDQIgACAFQdgAIAVBABARIQogACAFEAwgCg8LQoCAgIAwIQULIAAgBRAMIAAgBxAMIAAgBhAMIAAgBBAMCyAIC84EAgZ+AX8jAEEgayICJAACQCABQv\u002F\u002F\u002F\u002F9vWARAIAAQIkKAgICA4AAhBwwBC0KAgICA4AAhB0KAgICAMCEIAkAgACADKQMAECUiCUKAgICAcINCgICAgOAAUQRAQoCAgIAwIQRCgICAgDAhBUKAgICAMCEGDAELAkACQCAAIAEgACkDSBD9ASIGQoCAgIBwg0KAgICA4ABRBEBCgICAgDAhBAwBCyAAIAAgAUHuACABQQAQERA0IgRCgICAgHCDQoCAgIDgAFINAQtCgICAgDAhBQwBCyACIAQ3AxggAiABNwMQIAAgBkECIAJBEGoQowEiBUKAgICAcINCgICAgOAAUQ0AIAAgAkEIaiAAIAFB1gAgAUEAEBEQoQENACAAIAVB1gACfiACKQMIIgFCgICAgAh8Qv\u002F\u002F\u002F\u002F8PWARAIAFC\u002F\u002F\u002F\u002F\u002Fw+DDAELQoCAgIDAfiABub0iAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwsQOUEASA0AQoCAgIDgACEIIABBKhCGASIBQoCAgIBwg0KAgICA4ABRDQAgAEEgECQiA0UEQCABIQgMAQsgAyAJNwMIIAMgBTcDACADIASnIgpB5wBBABCgAUF\u002Fc0EfdjYCECAKQfUAQQAQoAEhCiADQQA2AhggAyAKQX9zQR92NgIUIAFCgICAgHBaBEAgAacgAzYCIAsgACAGEAwgACAEEAwgASEHDAELIAAgCRAMIAAgBhAMIAAgBBAMIAAgBRAMIAAgCBAMCyACQSBqJAAgBwv+BAIIfgJ\u002FIwBBEGsiAiQAAkAgAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECJCgICAgOAAIQcMAQtCgICAgOAAIQdCgICAgDAhBQJAAkACQCAAIAMpAwAQJSIJQoCAgIBwg0KAgICA4ABRBEBCgICAgDAhCAwBCyAAIAFB7gAgAUEAEBEiCEKAgICAcINCgICAgOAAUQ0AIAAgCBA0IghCgICAgHCDQoCAgIDgAFENACAIp0HnAEEAEKABQX9GBEAgACABIAkQxQEhBwwDCyAAIAAgAUHwACABQQAQERAnIgxBAEgNACAAIAFB1gBCABA5QQBIDQAgABA7IgZCgICAgHCDQoCAgIDgAFEEQEKAgICA4AAhBgwCCyAJpyENA0ACQCAAIAUQDCAAIAEgCRDFASIFQoCAgIBwgyIEQoCAgIAgUQ0AIARCgICAgOAAUQ0DAkAgACAAIAVCABBOEDQiBEKAgICAcIMiC0KAgICAkH9SBEBBACEDIAtCgICAgOAAUQ0FDAELIASnKAIEQf\u002F\u002F\u002F\u002F8HcUUhAwsgACAGIAogBBB7QQBIDQMgCkIBfCEKIANFDQEgACACQQhqIAAgAUHWACABQQAQERChAUEASA0DIAAgAUHWAAJ+IA0gAikDCCAMEPQCIgRCgICAgAh8Qv\u002F\u002F\u002F\u002F8PWARAIARC\u002F\u002F\u002F\u002F\u002Fw+DDAELQoCAgIDAfiAEub0iBEKAgICAwIGA\u002FP8AfSAEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwsQOUEATg0BDAMLCyAKpwRAIAYhBwwDCyAAIAYQDEKAgICAICEHDAILQoCAgIAwIQYLIAAgBhAMCyAAIAUQDCAAIAgQDCAAIAkQDAsgAkEQaiQAIAcLjgEBAn8gASgCACICQQBKBEAgASACQQFrIgI2AgACQCACDQAgAS0ABEHwAXFBEEcNACABKAIIIgIgASgCDCIDNgIEIAMgAjYCACABQQA2AgggACgCYCICIAFBCGoiAzYCBCABIABB4ABqNgIMIAEgAjYCCCAAIAM2AmALDwtB5oQBQajsAEHWLEHN4wAQAAAL8BQCDn8OfiMAQZABayIEJAACQCABQv\u002F\u002F\u002F\u002F9vWARAIAAQIkKAgICA4AAhFQwBCyADKQMIIR4gACAEQThqQQAQPhogBEEANgIwIARCgICAgMAANwMoIAQgADYCACAEIARBCGoiBzYCBEKAgICA4AAhFUKAgICAMCEWQoCAgIAwIRdCgICAgDAhE0KAgICAMCEUQoCAgIAwIR1CgICAgDAhHAJAAkAgACADKQMAECUiGEKAgICAcINCgICAgOAAUQ0AIAAgHhA1IglFBEAgACAeECUiHUKAgICAcINCgICAgOAAUQ0BIB2nIQULAkACQCAAIAFB7gAgAUEAEBEiHEKAgICAcINCgICAgOAAUQ0AIAAgHBA0IhxCgICAgHCDQoCAgIDgAFENACAcp0HnAEEAEKABIgNBf0cEQCAAIAAgAUHwACABQQAQERAnIghBAEgNASAAIAFB1gBCABA5QQBIDQELIAVFIANBf0ZyDQEgBSkCBEL\u002F\u002F\u002F\u002F\u002FB4NCAFINAQJAIAAgAUE9IAFBABARIhJCgICAgHCDQoCAgIDgAFENACAAIBIgACkDSBBNIQ4gACASEAwgDkUNAiAAIAFBhwEgAUEAEBEiEkKAgICAcINCgICAgOAAUQ0AIBJBwgBBABCCBCEPIAAgEhAMIA9FDQILIAAgARD1AiICRQ0AQQAhAyAAIARB0ABqQQAQPhoCQCAAIBgQJSISQoCAgIBwg0KAgICA4ABRDQACQCACKAIEQRBqIgotAAAiAkEhcSILRQRAIARCADcDgAEMAQsgACABQdYAIAFBABARIhpCgICAgHCDQoCAgIDgAFENASAAIARBgAFqIBoQoQENAQsCQCAKLQABIgVBAE0NACAAIAVBA3QQJCIDDQBBACEDDAELIAJBEHEhDCACQQFxIQ0gEqciBUEQaiEJIAUpAgQiFKdBH3YhCCAEKQOAASETAkADQCATIBRC\u002F\u002F\u002F\u002F\u002FweDVQ0BAkAgAyAKIAkgE6cgFKdB\u002F\u002F\u002F\u002F\u002FwdxIAggABCkBiICQQFHBEAgAkEASA0BIAtFIAJBAkdxDQMgACABQdYAQgAQOUEASA0EDAMLIAMoAgAhECAEIAMoAgQgCWsgCHUiAjYCjAEgECAJayAIdSIHIAZKBEAgBEHQAGogBSAGIAcQSw0ECyANRQRAIAAgAUHWACACIgatEDlBAE4NAwwECwJAIAcgAiIGRw0AAkACQCAMRQ0AIAUpAgQiGkKAgICACINQDQAgByAap0H\u002F\u002F\u002F\u002F\u002FB3FJDQELIAQgB0EBaiIGNgKMAQwBCyAFIARBjAFqEMYBGiAEKAKMASEGCyAFKQIEIRQgBqwhEyACIQYMAQsLIABBuDhBABA6DAELIARB0ABqIgIgBSAGIAUoAgRB\u002F\u002F\u002F\u002F\u002FwdxEEsNACAAIBIQDCAAKAIQIgZBEGogAyAGKAIEEQAAIAIQNyEVDAELIAAgEhAMIAAoAhAiAkEQaiADIAIoAgQRAAAgBCgCUCgCECICQRBqIAQoAlQgAigCBBEAAAtCgICAgDAhE0KAgICAMCEUDAELIBinIQIgA0F\u002FRiEKAkADQAJAAkAgACABIBgQxQEiEkKAgICAcIMiFUKAgICAIFIEQCAVQoCAgIDgAFENAkKAgICA4AAhFSAEKAIwDQICQCAEKAIoIgMgBCgCLEgEQCAEKAIEIQUMAQsgAyADQQF1akEfakFvcSILQQN0IQMgBCgCACEGAkACQCAHIAQoAgQiBUYEQCAGQQAgAyAEQdAAahCnASIFRQ0BIAUgBykDADcDACAFIAcpAxg3AxggBSAHKQMQNwMQIAUgBykDCDcDCAwCCyAGIAUgAyAEQdAAahCnASIFDQELIAQQiQUgBCgCACASEAwgBEF\u002FNgIwDAQLIAQgBTYCBCAEIAQoAlBBA3YgC2o2AiwgBCgCKCEDCyAEIANBAWo2AiggBSADQQN0aiASNwMAIApFDQELIBhCIIinQXVJIQdBACEFQQAhAwNAIAQoAiggA0oEQCAAIARBjAFqIAQoAgQgA0EDdGopAwAiGxDKAUEASA0FIAAgFBAMQoCAgIDgACEVIAAgACAbQgAQThA0IhRCgICAgHCDQoCAgIDgAFENBiAAIARBgAFqIAAgG0HYACAbQQAQERChAQ0GAkAgBCkDgAEiEiACKQIEQv\u002F\u002F\u002F\u002F8HgyIBVQRAIAQgATcDgAEgASESDAELIBJCAFkNAEIAIRIgBEIANwOAAQsgACATEAwgABA7IhNCgICAgHCDQoCAgIDgAFEEQEKAgICA4AAhEwwHCyAUQiCIp0F1TwRAIBSnIgYgBigCAEEBajYCAAsgACATQgAgFEGHgAEQlAFBAEgNBkEBIAQoAowBIgYgBkEBTRsiBq0hH0IBIQEDQCABIB9SBEAgACAbIAEQbCIZQoCAgIBwgyIaQoCAgIAwUgRAIBpCgICAgOAAUQRAIBohFQwKCyAAIBkQNCIZQoCAgIBwg0KAgICA4ABRDQgLIAAgEyABIBkQZyERIAFCAXwhASARQQBODQEMCAsLIAAgFhAMIAAgG0GIASAbQQAQESIWQoCAgIBwgyIBQoCAgIDgAFENBgJAIAkEQCAAIBMgHyASQv\u002F\u002F\u002F\u002F8PgxBnQQBIDQggB0UEQCACIAIoAgBBAWo2AgALIAAgEyAGQQFqrSAYEGdBAEgNCCABQoCAgIAwUgRAIBZCIIinQXVPBEAgFqciCCAIKAIAQQFqNgIACyAAIBMgBkECaq0gFhBnQQBIDQkLIAQgEzcDWCAEQoCAgIAwNwNQIAAgFxAMIAAgACAeIAAgBEHQAGpBABCIAxA0IRcMAQtCgICAgDAhGSABQoCAgIAwUgRAIAAgFhAgIhlCgICAgHCDQoCAgIDgAFENCAsgBCAdNwN4IAQgGTcDcCAEIBM3A2ggBCAYNwNYIAQgFDcDUCAEIBJC\u002F\u002F\u002F\u002F\u002Fw+DNwNgIAAgFxAMIAAgBEHQAGoQiAUhFyAAIBkQDAsgF0KAgICAcINCgICAgOAAUQ0GIAWsIBJXBEAgBEE4aiIGIAIgBSASpxBLGiAGIBcQjQEaIBSnKQIEQv\u002F\u002F\u002F\u002F8HgyASfKchBQsgA0EBaiEDDAELCyAEQThqIgMgAiAFIAIoAgRB\u002F\u002F\u002F\u002F\u002FwdxEEsaIAMQNyEVDAULIAAgFBAMAn8CQCAAIAAgEkIAEE4QNCIUQoCAgIBwgyISQoCAgICQf1IEQCASQoCAgIDgAFINASASIRUMAwsgFKcoAgRB\u002F\u002F\u002F\u002F\u002FwdxDQAgACAEQdAAaiAAIAFB1gAgAUEAEBEQoQFBAEgNAiAAIAFB1gACfiACIAQpA1AgCBD0AiISQoCAgIAIfEL\u002F\u002F\u002F\u002F\u002FD1gEQCASQv\u002F\u002F\u002F\u002F8PgwwBC0KAgICAwH4gErm9IhJCgICAgMCBgPz\u002FAH0gEkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLEDkiA0EATg0AIANBHnZBAnEMAQtBAAtFDQELCwwBC0KAgICA4AAhFQsgBCgCOCgCECICQRBqIAQoAjwgAigCBBEAAAsgBBCJBSAAIB0QDCAAIBQQDCAAIBwQDCAAIBMQDCAAIBcQDCAAIBYQDCAAIBgQDAsgBEGQAWokACAVC6EBAQF+IwBBIGsiAiQAAn4CQCABQv\u002F\u002F\u002F\u002F9vWARAIAAQIgwBCyAAIAJBCGoiA0EAED4aIANBLxA8GgJAIAMgACABQe0AIAFBABAREIQBDQAgAkEIakEvEDwaIAMgACABQe4AIAFBABAREIQBDQAgAxA3DAILIAIoAggoAhAiAEEQaiACKAIMIAAoAgQRAAALQoCAgIDgAAshBCACQSBqJAAgBAtOAQJ+QoCAgIDgACEEIAAgASADKQMAEMUBIgFCgICAgHCDIgVCgICAgOAAUgR+IAAgARAMIAVCgICAgCBSrUKAgICAEIQFQoCAgIDgAAsL+AICA34BfwJAAkAgACABEPUCIgJFDQAgAykDCCEGAkACQAJAIAMpAwAiBEKAgICAcFQNACAEpyIDLwEGQRJHDQAgBkKAgICAcINCgICAgDBSBEAgAEHz6ABBABASQoCAgIDgAA8LIAMoAiAiByAHKAIAQQFqNgIAIAMoAiQiAyADKAIAQQFqNgIAIAetQoCAgICQf4QhBCADrUKAgICAkH+EIQUMAQtCgICAgDAhBQJ+IARCgICAgHCDQoCAgIAwUQRAIABBLxApDAELIAAgBBAlCyIEQoCAgIBwg0KAgICA4ABRDQEgACAEIAYQuQMiBUKAgICAcINCgICAgOAAUQ0BCyAAIAI1AgBCgICAgJB\u002FhBAMIAAgAjUCBEKAgICAkH+EEAwgAiAFPgIEIAIgBD4CACAAIAFB1gBCABA5QQBIDQEgAUIgiKdBdUkNAiABpyIAIAAoAgBBAWo2AgAMAgsgACAEEAwgACAFEAwLQoCAgIDgAA8LIAELagEBfyABQv\u002F\u002F\u002F\u002F9vWARAIAAQIkKAgICA4AAPCwJ+IAGnIgMvAQZBEkcEQEKAgICAMCAAIAEgACgCKCkDkAEQTQ0BGiAAQRIQigNCgICAgOAADwsgAiADKAIkLQAQcUEAR61CgICAgBCECwu8BAEJfyMAQSBrIgckAAJAAkACQAJAAkAgAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECIMAQsgACABIAAoAigpA5ABEE0NAiAAIAEQ9QIiAg0BC0KAgICA4AAhAQwDCyACKAIAIggoAgQiAkH\u002F\u002F\u002F\u002F\u002FB3EiAw0BCyAAQdyLARBgIQEMAQsgACAHQQhqIAMgAkEfdhCZAxogCEEQaiEGIAgoAgRB\u002F\u002F\u002F\u002F\u002FwdxIQlBACEAA0ACQAJAIAAgCUgEQCAAQQFqIQJBfyEFAkACfwJAAkACQAJAAkACQAJAAn8gCCkCBEKAgICACIMiAVAiCkUEQCAGIABBAXRqLwEADAELIAAgBmotAAALIgNB2wBrDgMDAQIACyACIQACQCADQQprDgQECwsFAAsgA0EvRw0HIARFDQVBASEEQS8hAwwHC0HcACEDIAIgCU4NBiAAQQJqIQAgCkUEQCAGIAJBAXRqLwEAIQUMCgsgAiAGai0AACEFDAkLQQAhBEHdACEDDAULQdsAIQMgBCACIAlOcg0GIABBAmohACABUARAQd0AQX8gAiAGai0AAEHdAEYiBBshBSAAIAIgBBshAEEBIQQMCAtBASEEQd0AQX8gBiACQQF0ai8BAEHdAEYiChshBSAAIAIgChshAAwHC0HuAAwCC0HyAAwBC0EAIQRBLwshBUHcACEDCyACIQAMAgsgB0EIahA3IQEMAwsgAiEAQQEhBAsgB0EIaiICIAMQhwEaIAVBAEgNACACIAUQhwEaDAALAAsgB0EgaiQAIAEL\u002FwICA38BfiMAQRBrIgQkAAJAIAFC\u002F\u002F\u002F\u002F\u002F29YBEAgABAiQoCAgIDgACEFDAELQoCAgIDgACEFIAAgACABQakpEIcCECciAkEASA0AIAIEfyAEQeQAOgAIIARBCWoFIARBCGoLIQIgACAAIAFB7wAgAUEAEBEQJyIDQQBIDQAgAwRAIAJB5wA6AAAgAkEBaiECCyAAIAAgAUGS0gAQhwIQJyIDQQBIDQAgAwRAIAJB6QA6AAAgAkEBaiECCyAAIAAgAUGy0wAQhwIQJyIDQQBIDQAgAwRAIAJB7QA6AAAgAkEBaiECCyAAIAAgAUGPwwAQhwIQJyIDQQBIDQAgAwRAIAJB8wA6AAAgAkEBaiECCyAAIAAgAUHwACABQQAQERAnIgNBAEgNACADBEAgAkH1ADoAACACQQFqIQILIAAgACABQdcMEIcCECciA0EASA0AIAAgBEEIaiIAIAMEfyACQfkAOgAAIAJBAWoFIAILIABrEOoBIQULIARBEGokACAFC6QDAgN\u002FAX4jAEEgayIEJAACQCAAIAEQSiIBQoCAgIBwg0KAgICA4ABRDQACQAJAIAAgBCABAn9BACACRQ0AGkEAIAMpAwAiB0KAgICAcINCgICAgDBRDQAaAkAgACAEQQRqIAcQ3wEiAgRAAkAgAi0AAEHOAEcNACACLQABQcYARw0AIAJBA0ECIAItAAJBywBGIgMbai0AACIFQcMAa0H\u002FAXFBAUsNACAEKAIEIAJBA2ogAkECaiADGyACa0EBakYNAgsgACACEDEgAEGywABBABBECyAAIAEQDAwCCyAAIAIQMSAFIANBAXRqQcMAawsQ2gMhAyAAIAEQDCADQQBODQELQoCAgIDgACEBDAELIAQoAgAhBUKAgICA4AAhAQJAIAAgBEEIaiADED4NAEEAIQICQANAIAIgA0YNASACQQJ0IQYgAkEBaiECIARBCGogBSAGaigCABCxAUUNAAsgBCgCCCgCECICQRBqIAQoAgwgAigCBBEAAAwBCyAEQQhqEDchAQsgACgCECIAQRBqIAUgACgCBBEAAAsgBEEgaiQAIAELgQICA38BfgJAAkAgAkEATg0AIAGnKQMgIgpCgICAgHCDQoCAgICQf1INACACQf\u002F\u002F\u002F\u002F8HcSIIIAqnIgcpAgQiCqdB\u002F\u002F\u002F\u002F\u002FwdxTw0AAkBBBCAGEI8DRQ0AQQEhAiAGQYDAAHFFDQIgA0KAgICAcINCgICAgJB\u002FUg0AIAOnIgkpAgQiAUL\u002F\u002F\u002F\u002F\u002FB4NCAVINACAHQRBqIQcCfyAKQoCAgIAIg1BFBEAgByAIQQF0ai8BAAwBCyAHIAhqLQAACwJ\u002FIAFCgICAgAiDUEUEQCAJLwEQDAELIAktABALRg0CCyAAIAZB79gAEHwPCyAAIAEgAiADIAQgBSAGQYCACHIQaiECCyACC0YAAn8CQCACQQBODQAgAacpAyAiAUKAgICAcINCgICAgJB\u002FUg0AQQAgAkH\u002F\u002F\u002F\u002F\u002FB3EgAacoAgRB\u002F\u002F\u002F\u002F\u002FwdxSQ0BGgtBAQsLswEBAn8CQCADQQBODQAgAqcpAyAiAkKAgICAcINCgICAgJB\u002FUg0AIANB\u002F\u002F\u002F\u002F\u002FwdxIgMgAqciBCkCBCICp0H\u002F\u002F\u002F\u002F\u002FB3FPDQBBASEFIAFFDQAgBEEQaiEEAn8gAkKAgICACINQRQRAIAQgA0EBdGovAQAMAQsgAyAEai0AAAshAyABQQQ2AgAgACADQf\u002F\u002FA3EQlAMhAiABQoCAgIAwNwMYIAFCgICAgDA3AxAgASACNwMICyAFCx8BAn4gACgCACkDeCIDIAEoAgApA3giBFUgAyAEU2sLbwECfyABIAEoAgAiAkEBajYCACACRQRAIAEoAggiAiABKAIMIgM2AgQgAyACNgIAIAFBADYCCCAAKAJQIgIgAUEIaiIDNgIEIAEgAEHQAGo2AgwgASACNgIIIAAgAzYCUCABIAEtAARBD3E6AAQLC+sDAQN\u002FIwBBIGsiAiQAAkACQAJAAkAgBSgCACIDLQBXQQRrDgICAAELQoCAgIAwIQEgAy0AoAENAkH+OEGo7ABB9N8BQYzqABAAAAtBlf8AQajsAEH33wFBjOoAEAAACwJAAkAgAy0AoAFFBEAgAygCdEUNAUEAIQUgA0EANgJ0IAAgAxCOBSACQQA2AhwgAkIANwIUIAAgAyACQRRqEI0FIQggAigCFCEEIAhBAEgEQEKAgICA4AAhAQwDCyAEIAIoAhgiA0EEQcEAQQAQ1wEgA0EAIANBAEobIQcDQCAFIAdGBEBCgICAgDAhAQwEBQJAIAQgBUECdGooAgAiAygCVCIGQYCAgHhxQYCAgChGBEAgAy0AoAENAUHnOEGo7ABBjeABQYzqABAAAAsgBkH\u002FAXEEQCAAIAMQkAUMAQsgACADIAJBCGoiBhCPBUEASARAIAMgAygCAEEBajYCACACIAOtQoCAgIBQhCIBNwMAIAAgASAFIAYgBSACENsDGiAAIAEQDCAAIAIpAwgQDAwBCyAAIAMQjgULIAVBAWohBQwBCwALAAtB\u002FThBqOwAQfjfAUGM6gAQAAALQY07QajsAEH53wFBjOoAEAAACyAAKAIQIgBBEGogBCAAKAIEEQAACyACQSBqJAAgAQvQAgIDfgJ\u002FIwBBEGsiBiQAIAFBBUYEQCACKQMQIQQgACACKQMYEOQBIQcgBiACKQMgIgM3AwgCfwJAAkAgBEKAgICAcINCgICAgDBRBEAgA0IgiKchASAHBEAgAUF1TwRAIAOnIgEgASgCAEEBajYCAAsgACADEJgBDAMLIAFBdUkNASADpyIBIAEoAgBBAWo2AgAMAQsgACAEQoCAgIAwQQEgBkEIahAcIQMLIAYgAzcDAEEAIANCgICAgHCDQoCAgIDgAFINARoLIAAoAhAiASkDgAEhAyABQoCAgIAgNwOAASAGIAM3AwBBAQshAUKAgICAMCEEIAAgAiABQQN0aikDACIFQoCAgIBwg0KAgICAMFIEfiAAIAVCgICAgDBBASAGEBwhBCAGKQMABSADCxAMIAZBEGokACAEDwtByYEBQajsAEHn9AJBi+0AEAAAC2kBAn8gAacoAhAiAEEwaiEDIAAgACgCGCACcUF\u002Fc0ECdGooAgAhAANAAkAgAEUEQEEAIQAMAQsgAyAAQQN0aiIEQQhrIQAgBEEEaygCACACRg0AIAAoAgBB\u002F\u002F\u002F\u002FH3EhAAwBCwsgAEEARwtDAAJ8IAG9QoCAgICAgID4\u002FwCDQoCAgICAgID4\u002FwBRBEBEAAAAAAAA+H8gAJlEAAAAAAAA8D9hDQEaCyAAIAEQowMLC2kBA38jAEEQayIHJAACfwJAIAGnIggtAAVBCHFFDQAgACAHQQxqIAIQpQFFDQAgBygCDCAIKAIoTw0AQX8gACAIEI4DDQEaCyAAIAEgAiADIAQgBSAGQYCACHIQagshCSAHQRBqJAAgCQsPACABIAEoAgBBAWo2AgALXAECfiACIAAoAgAQKSEDQQAhACADQoCAgIBwg0KAgICA4ABRIAIgASgCABApIgRCgICAgHCDQoCAgIDgAFFyRQRAIAOnIASnELwCIQALIAIgAxAMIAIgBBAMIAALawEBfgJAAkACQAJAAkAgAy0ABSIBDgQDAgIAAQsgACADKAIIEPsEDwsgAUEIRg0CCxABAAsgACADKAIMIAMoAgAgAy0ACCADLQAJIAMuAQYQggEPCyAAIAAQMyIEIAMoAgggAygCDBAfIAQLCQAgACADEPYCC1MBAX4gABAzIgRCgICAgHCDQoCAgIDgAFIEQCABIAEoAgBBAWo2AgAgACAEQT0gAa1CgICAgHCEQQMQFUEATgRAIAQPCyAAIAQQDAtCgICAgOAAC18BAX8CQCABRQRAIAJFDQEgACACEJsFDwsgAkUEQCAAIAAoAgBBAWs2AgAgACAAKAIEQQhrNgIEIAEQ1AEMAQsgACgCCCAAKAIEIAJqTwR\u002FIAEgAhD4BQVBAAsPC0EACyYAIAEEQCAAIAAoAgBBAWs2AgAgACAAKAIEQQhrNgIEIAEQ1AELCyUBAX8CQCABpygCICIDRQ0AIAMoAgQiA0UNACAAIAMgAhEAAAsLPwEBfwJAIAFCgICAgHBUDQAgAaciAi8BBkErRw0AIAIoAiAiAkUNACAAIAIQ5wMgAEEQaiACIAAoAgQRAAALC0cBAX8CQCABpygCICIDRQ0AIAMpAwAiAUKAgICAYFoEQCAAIAGnIAIRAAALIAMpAwgiAUKAgICAYFQNACAAIAGnIAIRAAALCzABAX8gAacoAiAiAgRAIAAgAikDABAhIAAgAikDCBAhIABBEGogAiAAKAIEEQAACwsnAQF\u002FIAGnKAIgIgIEQCAAIAIpAwAQISAAQRBqIAIgACgCBBEAAAsLWgECfyABpygCICICBEACQCACKQMAIgFCgICAgHBUDQAgAactAAVBAnENACACKAIMIgNFDQAgACADEOIDIAIpAwAhAQsgACABECEgAEEQaiACIAAoAgQRAAALC3gBA38CQCABpygCICIERQ0AIARBCGohAyAEQQRqIQUDQCADKAIAIgMgBUYNAQJAIAQoAgANACADKQMQIgFCgICAgGBUDQAgACABpyACEQAACyADKQMYIgFCgICAgGBaBEAgACABpyACEQAACyADQQRqIQMMAAsACwuaAQEHfyABpygCICIDBEAgAEEQaiEEIANBBGohBiADKAIIIQIDQCACIAZHBEAgAigCBCEIIAJBEGshBSACQQxrKAIARQRAAkAgAygCAARAIAUQnAUMAQsgACACKQMQECELIAAgAikDGBAhCyAEIAUgACgCBBEAACAIIQIMAQsLIAQgAygCECAAKAIEEQAAIAQgAyAAKAIEEQAACwsbAQF\u002FIAGnKAIgIgMEQCAAIAMoAgwgAhEAAAsLUgEDfyABpygCICICBEAgAigCBCIDBEAgAigCACIEIAM2AgQgAyAENgIAIAJCADcCAAsgACACNQIMQoCAgIBwhBAhIABBEGogAiAAKAIEEQAACwupAQEGfyABpygCICIDBEAgA0EMaiEFIAMoAhAhAgNAIAIgBUcEQCACKAIEIQcgAkIANwIAIAIoAgghBCAHIQIgBC8BBkEgRg0BIARCADcCJAwBCwsCQAJAIAMtAAVFDQAgACgCyAEiAkUNACAAKALQASADKAIIIAIRAAAMAQsgAygCGCICRQ0AIAAgAygCFCADKAIIIAIRBgALIABBEGogAyAAKAIEEQAACwspAQF\u002FIAAgAaciAjUCJEKAgICAkH+EECEgACACNQIgQoCAgICQf4QQIQshACABpygCICkDACIBQoCAgIBgWgRAIAAgAacgAhEAAAsLaQEDfyAAIAGnKAIgIgIpAwAQISACLQARRQRAA0AgAigCFCEEIAMgAigCDE9FBEAgACAEIANBA3RqKAIEEMcBIANBAWohAwwBCwsgAEEQaiAEIAAoAgQRAAALIABBEGogAiAAKAIEEQAAC2wBA38CQCABQoCAgIBwVA0AIAGnIgMvAQZBD0cNACADKAIgIgRFDQAgBEEIaiEFQQAhAwNAIAMgBC0ABU8NASAFIANBA3RqKQMAIgFCgICAgGBaBEAgACABpyACEQAACyADQQFqIQMMAAsACwtqAQN\u002FAkAgAUKAgICAcFQNACABpyICLwEGQQ9HDQAgAigCICIDRQ0AIANBCGohBEEAIQIDQCACIAMtAAVPRQRAIAAgBCACQQN0aikDABAhIAJBAWohAgwBCwsgAEEQaiADIAAoAgQRAAALC38BA38gAacoAiAiBCkDACIBQoCAgIBgWgRAIAAgAacgAhEAAAsgBCkDCCIBQoCAgIBgWgRAIAAgAacgAhEAAAsgBEEYaiEFA0AgBCgCECADSgRAIAUgA0EDdGopAwAiAUKAgICAYFoEQCAAIAGnIAIRAAALIANBAWohAwwBCwsLWQEDfyAAIAGnKAIgIgIpAwAQISAAIAIpAwgQISACQRhqIQQDQCADIAIoAhBORQRAIAAgBCADQQN0aikDABAhIANBAWohAwwBCwsgAEEQaiACIAAoAgQRAAALcgEEfyABpyIDKAIgIQQgAygCJCEFIAMoAigiAwRAIAAgAyACEQAACyAEBEACQCAFRQ0AQQAhAwNAIAMgBCgCPE4NASAFIANBAnRqKAIAIgYEQCAAIAYgAhEAAAsgA0EBaiEDDAALAAsgACAEIAIRAAALC3wBA38gAaciAigCKCIDBEAgACADrUKAgICAcIQQIQsgAigCICIDBEAgAigCJCIEBEBBACECA0AgAiADKAI8TkUEQCAAIAQgAkECdGooAgAQ5QEgAkEBaiECDAELCyAAQRBqIAQgACgCBBEAAAsgACADrUKAgICAYIQQIQsLEgAgAacoAiAiAARAIAAQngMLCx4AIAGnKQMgIgFCgICAgGBaBEAgACABpyACEQAACwsZACAAIAGnIgApAyAQISAAQoCAgIAwNwMgC0QBAn8gAachBANAIAQoAiggA0sEQCAEKAIkIANBA3RqKQMAIgFCgICAgGBaBEAgACABpyACEQAACyADQQFqIQMMAQsLC0YBA38gAachAwNAIAMoAiQhBCACIAMoAihPRQRAIAAgBCACQQN0aikDABAhIAJBAWohAgwBCwsgAEEQaiAEIAAoAgQRAAALEQAgAEEQaiACIAAoAgQRAAAL2wECAX8CfiMAQSBrIgMkACABQQNGBEAgAikDECEEIAIpAwghBQJAIAAgA0EQaiACKQMAEKoFQQBIBEBCgICAgOAAIQQMAQsgACAEIAVBAiADQRBqEBwiBEKAgICAcINCgICAgOAAUQRAIAAoAhAiASkDgAEhBCABQoCAgIAgNwOAASADIAQ3AwggACADKQMYQoCAgIAwQQEgA0EIahAcIQQgACADKQMIEAwLIAAgAykDEBAMIAAgAykDGBAMCyADQSBqJAAgBA8LQZuCAUGo7ABBy\u002FUCQaDtABAAAAuIAQIBfgF\u002FQQAhAkKAgICAMCEBA0ACQCACQQJHBH4gBSACQQN0IgRqIgc1AgRCIIZCgICAgDBRDQEgAEGyHEEAEBJCgICAgOAABUKAgICAMAsPCyADIARqKQMAIgZCIIinQXVPBEAgBqciBCAEKAIAQQFqNgIACyAHIAY3AwAgAkEBaiECDAALAAuVAQAjAEEQayICJAAgAiAAIAUoAhAQ9gIiATcDCAJAIAFCgICAgHCDQoCAgIDgAFEEQCAAKAIQIgMpA4ABIQEgA0KAgICAIDcDgAEgAiABNwMAIAAgAUEBIAIgAiAFELgFGgwBCyAAIAAgBSkDAEKAgICAMEEBIAJBCGoQHBAMIAAgAikDCBAMCyACQRBqJABCgICAgDALwQMCAn4BfyMAQSBrIgUkAAJAAkAgACABQSgQWiICRQ0AQoCAgIAwIQECQCACKQMAIgZCgICAgHCDQoCAgIAwUgRAAn8CQCAGpyIDLwEGQRVrQf\u002F\u002FA3FBCk0EQCADKAIgKAIMKAIgLQAERQ0BIAAQXwwFCyAAIAVBHGoiAyAGEMoBDQQgAwwBCyADQShqCyEIIAIoAgwiAyAIKAIASQ0BIAAgAikDABAMIAJCgICAgDA3AwALIARBATYCAAwCCyACIANBAWo2AgwgBEEANgIAIAIoAghFBEAgA0EATgRAIAOtIQEMAwtCgICAgMB+IAO4vSIBQoCAgIDAgYD8\u002FwB9IAFCgICAgICAgPj\u002FAFYbIQEMAgtCgICAgOAAIQEgACACKQMAIAMQpgEiBkKAgICAcINCgICAgOAAUQ0BIAIoAghBAUYEQCAGIQEMAgsgBSAGNwMIIAUgA0EATgR+IAOtBUKAgICAwH4gA7i9IgFCgICAgMCBgPz\u002FAH0gAUKAgICAgICA+P8AVhsLIgc3AwAgAEECIAUQ\u002FQIhASAAIAYQDCAAIAcQDAwBCyAEQQA2AgBCgICAgOAAIQELIAVBIGokACABC\u002FcBAgl\u002FAX4jACIHIQwgAacoAiAiCSgCECIIQQAgCEEAShshCiAJQRhqIQ0gByADIAhqIgtBA3RBD2pBcHFrIgckAAN+IAYgCkYEfkEAIQYgA0EAIANBAEobIQMgByAIQQN0aiEIA0AgAyAGRkUEQCAIIAZBA3QiCmogBCAKaikDADcDACAGQQFqIQYMAQsLAn4gBUEBcQRAIAAgASACEE0hAyAAIAkpAwAiASABIAIgAxsgCyAHEP4CDAELIAAgCSkDACAJKQMIIAsgBxAcCyEPIAwkACAPBSAHIAZBA3QiDmogDSAOaikDADcDACAGQQFqIQYMAQsLC7EBACAAQQgQXCIFBEAgBUEANgIAIAUgACABIAIgAyAEEOwDIgM2AgQCQCADRQRAIAVBBDYCAAwBCyAAIAMQsQIiAkKAgICAcINCgICAgOAAUQ0AIAAgAhAMIAAgAUErEF4iAUKAgICAcINCgICAgOAAUQ0AIAFCgICAgHBaBEAgAacgBTYCIAsgAQ8LIAAoAhAgBRDnAyAAKAIQIgBBEGogBSAAKAIEEQAAC0KAgICA4AAL+gMCBH8EfiMAQRBrIgEkAAJAAkAgAikDECIHQoCAgIBwg0KAgICAkH9SBEAgAEGBjAFBABASDAELIAIpAxghCCAAIAcQqAEiBUUEQEEAIQUMAQsgACAIEKgBIgZFDQAjAEEwayIDJAACQAJAAkAgACAFIAYQuQUiBEUNACAAIAQQ+QNBAEgEQCAAQQEQ9gUMAQsgBCAEKAIAQQFqNgIAIAAgBK1CgICAgFCEIgcgACkDwAFBAEEAELcFIghCgICAgHCDQoCAgIDgAFINAQsgACgCECIEKQOAASEHIARCgICAgCA3A4ABIAMgBzcDACAAIAAgAikDCEKAgICAMEEBIAMQHBAMIAAgAykDABAMDAELIAQgBCgCAEEBajYCACADIAIpAwA3AwAgAikDCCEJIAMgBzcDECADIAk3AwggAyAAQTlBAEEAQQMgAxCFASIJNwMgIAMgAEE6QQBBAEEDIAMQhQEiCjcDKCAAIAcQDCAAIAAgCCAAIANBIGoQ+AMQDCAAIAkQDCAAIAoQDCAAIAgQDAsgA0EwaiQAIAAgBhAxDAELIAAoAhAiAykDgAEhByADQoCAgIAgNwOAASABIAc3AwggACAAIAIpAwhCgICAgDBBASABQQhqEBwQDCAAIAEpAwgQDAsgACAFEDEgAUEQaiQAQoCAgIAwC9MGAgl\u002FAXwjAEFAaiIGJAAgAaciCC0AKSELIAgtACghCSAGIAAoAhAiDCgCjAE2AhAgDCAGQRBqNgKMASAIKAIgIQcgBiADNgI0IAYgATcDGCAGQQA2AjgCQCADIAlOBEAgBCEADAELIANBACADQQBKGyENIAYgCUEDdEEPakHwH3FrIgAkAANAIAogDUYEQCADIQQDQCAEIAlGRQRAIAAgBEEDdGpCgICAgDA3AwAgBEEBaiEEDAELCyAGIAk2AjQFIAAgCkEDdCIOaiAEIA5qKQMANwMAIApBAWohCgwBCwsLIAYgADYCICAIKAIkIQQCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgCw4NCwIAAQABBwgDBAUGCQoLIAVBAXENCkKAgICAMCECIAtBAkcNCgwLCyAFQQFxDQBCgICAgDAhAiALQQNGDQoLIAcgAiADIAAgCC4BKiAEEQQAIQEMCwsgByACIAQRCAAhAQwKCyAHIAIgACkDACAEERgAIQEMCQsgByACIAguASogBBEQACEBDAgLIAcgAiAAKQMAIAguASogBBEoACEBDAcLIAcgBkEIaiAAKQMAEEINBSAGKwMIIAQRCgAiD70iAQJ\u002FIA+ZRAAAAAAAAOBBYwRAIA+qDAELQYCAgIB4CyIAt71RBEAgAK0hAQwHC0KAgICAwH4gAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGyEBDAYLQoCAgIDgACEBIAcgBkEIaiAAKQMAEEINBSAHIAYgACkDCBBCDQUgBisDCCAGKwMAIAQRHQAiD70iAQJ\u002FIA+ZRAAAAAAAAOBBYwRAIA+qDAELQYCAgIB4CyIAt71RBEAgAK0hAQwGC0KAgICAwH4gAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGyEBDAULIAcgAiADIAAgBkEIaiAILgEqIAQREQAiAUKAgICAcINCgICAgOAAUQ0EIAYoAggiAEECRg0EIAcgASAAEIIDIQEMBAsQAQALIAcgAiADIAAgBBECACEBDAILIAdBmRFBABASC0KAgICA4AAhAQsgDCAGKAIQNgKMASAGQUBrJAAgAQvVAQEGfyMAIgUhCwJAIAFCgICAgHBUDQAgAaciBi8BBkEPRw0AIAYoAiAhBwsgACACIAMgAyAHLQAEIgBIBH9BACEGIANBACADQQBKGyEJIAUgAEEDdEEPakHwH3FrIgUkAAN\u002FIAYgCUYEfyADIQQDfyAAIARGBH8gBQUgBSAEQQN0akKAgICAMDcDACAEQQFqIQQMAQsLBSAFIAZBA3QiCmogBCAKaikDADcDACAGQQFqIQYMAQsLBSAECyAHLwEGIAdBCGogBygCABERACEBIAskACABCw4AIAAQqwJCgICAgOAACwkAQoCAgIDAfgsPACAAIAMQDCAAEKsCQX8LFQAgACADEAwgACAEEAwgABCrAkF\u002FC2gBAX8jAEEQayIDJAAgASgCBCEBIAIgA0EMaiAAKAIEEKUBQQAgAiADQQhqIAEQpQEbRQRAQcszQajsAEGuOkG2NxAAAAsgAygCCCEAIAMoAgwhASADQRBqJABBfyAAIAFHIAAgAUsbCw4AIAAQqwJCgICAgOAACwkAIAAQqwJBfwsQACMAIABrQXBxIgAkACAACwYAIAAkAAsEACMAC6gBAQV\u002FIAAoAlQiAygCACEFIAMoAgQiBCAAKAIUIAAoAhwiB2siBiAEIAZJGyIGBEAgBSAHIAYQHhogAyADKAIAIAZqIgU2AgAgAyADKAIEIAZrIgQ2AgQLIAQgAiACIARLGyIEBEAgBSABIAQQHhogAyADKAIAIARqIgU2AgAgAyADKAIEIARrNgIECyAFQQA6AAAgACAAKAIsIgE2AhwgACABNgIUIAILKQAgASABKAIAQQdqQXhxIgFBEGo2AgAgACABKQMAIAEpAwgQ8wU5AwALpBgDE38BfAJ+IwBBsARrIgwkACAMQQA2AiwCQCABvSIaQgBTBEBBASEPQbMQIRMgAZoiAb0hGgwBCyAEQYAQcQRAQQEhD0G2ECETDAELQbkQQbQQIARBAXEiDxshEyAPRSEVCwJAIBpCgICAgICAgPj\u002FAINCgICAgICAgPj\u002FAFEEQCAAQSAgAiAPQQNqIgMgBEH\u002F\u002F3txEF0gACATIA8QVyAAQZDAAEHi9AAgBUEgcSIFG0H7ywBBxvgAIAUbIAEgAWIbQQMQVyAAQSAgAiADIARBgMAAcxBdIAMgAiACIANIGyEJDAELIAxBEGohEgJAAn8CQCABIAxBLGoQ\u002FgUiASABoCIBRAAAAAAAAAAAYgRAIAwgDCgCLCIGQQFrNgIsIAVBIHIiDkHhAEcNAQwDCyAFQSByIg5B4QBGDQIgDCgCLCEKQQYgAyADQQBIGwwBCyAMIAZBHWsiCjYCLCABRAAAAAAAALBBoiEBQQYgAyADQQBIGwshCyAMQTBqQaACQQAgCkEAThtqIg0hBwNAIAcCfyABRAAAAAAAAPBBYyABRAAAAAAAAAAAZnEEQCABqwwBC0EACyIDNgIAIAdBBGohByABIAO4oUQAAAAAZc3NQaIiAUQAAAAAAAAAAGINAAsCQCAKQQBMBEAgCiEDIAchBiANIQgMAQsgDSEIIAohAwNAQR0gAyADQR1OGyEDAkAgB0EEayIGIAhJDQAgA60hG0IAIRoDQCAGIBpC\u002F\u002F\u002F\u002F\u002Fw+DIAY1AgAgG4Z8IhogGkKAlOvcA4AiGkKAlOvcA359PgIAIAZBBGsiBiAITw0ACyAapyIGRQ0AIAhBBGsiCCAGNgIACwNAIAggByIGSQRAIAZBBGsiBygCAEUNAQsLIAwgDCgCLCADayIDNgIsIAYhByADQQBKDQALCyADQQBIBEAgC0EZakEJbkEBaiEQIA5B5gBGIREDQEEJQQAgA2siAyADQQlOGyEJAkAgBiAITQRAIAgoAgBFQQJ0IQcMAQtBgJTr3AMgCXYhFEF\u002FIAl0QX9zIRZBACEDIAghBwNAIAcgAyAHKAIAIhcgCXZqNgIAIBYgF3EgFGwhAyAHQQRqIgcgBkkNAAsgCCgCAEVBAnQhByADRQ0AIAYgAzYCACAGQQRqIQYLIAwgDCgCLCAJaiIDNgIsIA0gByAIaiIIIBEbIgcgEEECdGogBiAGIAdrQQJ1IBBKGyEGIANBAEgNAAsLQQAhAwJAIAYgCE0NACANIAhrQQJ1QQlsIQNBCiEHIAgoAgAiCUEKSQ0AA0AgA0EBaiEDIAkgB0EKbCIHTw0ACwsgCyADQQAgDkHmAEcbayAOQecARiALQQBHcWsiByAGIA1rQQJ1QQlsQQlrSARAIAxBMGpBBEGkAiAKQQBIG2ogB0GAyABqIglBCW0iEUECdGoiEEGAIGshCkEKIQcgCSARQQlsayIJQQdMBEADQCAHQQpsIQcgCUEBaiIJQQhHDQALCwJAIAooAgAiESARIAduIhQgB2xrIglFIBBB\u002FB9rIhYgBkZxDQACQCAUQQFxRQRARAAAAAAAAEBDIQEgB0GAlOvcA0cgCCAKT3INASAQQYQgay0AAEEBcUUNAQtEAQAAAAAAQEMhAQtEAAAAAAAA4D9EAAAAAAAA8D9EAAAAAAAA+D8gBiAWRhtEAAAAAAAA+D8gCSAHQQF2IhRGGyAJIBRJGyEZAkAgFQ0AIBMtAABBLUcNACAZmiEZIAGaIQELIAogESAJayIJNgIAIAEgGaAgAWENACAKIAcgCWoiAzYCACADQYCU69wDTwRAA0AgCkEANgIAIAggCkEEayIKSwRAIAhBBGsiCEEANgIACyAKIAooAgBBAWoiAzYCACADQf+T69wDSw0ACwsgDSAIa0ECdUEJbCEDQQohByAIKAIAIglBCkkNAANAIANBAWohAyAJIAdBCmwiB08NAAsLIApBBGoiByAGIAYgB0sbIQYLA0AgBiIHIAhNIglFBEAgBkEEayIGKAIARQ0BCwsCQCAOQecARwRAIARBCHEhCgwBCyADQX9zQX8gC0EBIAsbIgYgA0ogA0F7SnEiChsgBmohC0F\u002FQX4gChsgBWohBSAEQQhxIgoNAEF3IQYCQCAJDQAgB0EEaygCACIORQ0AQQohCUEAIQYgDkEKcA0AA0AgBiIKQQFqIQYgDiAJQQpsIglwRQ0ACyAKQX9zIQYLIAcgDWtBAnVBCWwhCSAFQV9xQcYARgRAQQAhCiALIAYgCWpBCWsiBkEAIAZBAEobIgYgBiALShshCwwBC0EAIQogCyADIAlqIAZqQQlrIgZBACAGQQBKGyIGIAYgC0obIQsLQX8hCSALQf3\u002F\u002F\u002F8HQf7\u002F\u002F\u002F8HIAogC3IiERtKDQEgCyARQQBHakEBaiEOAkAgBUFfcSIVQcYARgRAIAMgDkH\u002F\u002F\u002F\u002F\u002FB3NKDQMgA0EAIANBAEobIQYMAQsgEiADIANBH3UiBnMgBmutIBIQkQIiBmtBAUwEQANAIAZBAWsiBkEwOgAAIBIgBmtBAkgNAAsLIAZBAmsiECAFOgAAIAZBAWtBLUErIANBAEgbOgAAIBIgEGsiBiAOQf\u002F\u002F\u002F\u002F8Hc0oNAgsgBiAOaiIDIA9B\u002F\u002F\u002F\u002F\u002FwdzSg0BIABBICACIAMgD2oiBSAEEF0gACATIA8QVyAAQTAgAiAFIARBgIAEcxBdAkACQAJAIBVBxgBGBEAgDEEQaiIGQQhyIQMgBkEJciEKIA0gCCAIIA1LGyIJIQgDQCAINQIAIAoQkQIhBgJAIAggCUcEQCAGIAxBEGpNDQEDQCAGQQFrIgZBMDoAACAGIAxBEGpLDQALDAELIAYgCkcNACAMQTA6ABggAyEGCyAAIAYgCiAGaxBXIAhBBGoiCCANTQ0ACyARBEAgAEGGiAFBARBXCyALQQBMIAcgCE1yDQEDQCAINQIAIAoQkQIiBiAMQRBqSwRAA0AgBkEBayIGQTA6AAAgBiAMQRBqSw0ACwsgACAGQQkgCyALQQlOGxBXIAtBCWshBiAIQQRqIgggB08NAyALQQlKIRggBiELIBgNAAsMAgsCQCALQQBIDQAgByAIQQRqIAcgCEsbIQkgDEEQaiIGQQhyIQMgBkEJciENIAghBwNAIA0gBzUCACANEJECIgZGBEAgDEEwOgAYIAMhBgsCQCAHIAhHBEAgBiAMQRBqTQ0BA0AgBkEBayIGQTA6AAAgBiAMQRBqSw0ACwwBCyAAIAZBARBXIAZBAWohBiAKIAtyRQ0AIABBhogBQQEQVwsgACAGIA0gBmsiBiALIAYgC0gbEFcgCyAGayELIAdBBGoiByAJTw0BIAtBAE4NAAsLIABBMCALQRJqQRJBABBdIAAgECASIBBrEFcMAgsgCyEGCyAAQTAgBkEJakEJQQAQXQsgAEEgIAIgBSAEQYDAAHMQXSAFIAIgAiAFSBshCQwBCyATIAVBGnRBH3VBCXFqIQgCQCADQQtLDQBBDCADayEGRAAAAAAAADBAIRkDQCAZRAAAAAAAADBAoiEZIAZBAWsiBg0ACyAILQAAQS1GBEAgGSABmiAZoaCaIQEMAQsgASAZoCAZoSEBCyASIAwoAiwiBiAGQR91IgZzIAZrrSASEJECIgZGBEAgDEEwOgAPIAxBD2ohBgsgD0ECciELIAVBIHEhDSAMKAIsIQcgBkECayIKIAVBD2o6AAAgBkEBa0EtQSsgB0EASBs6AAAgBEEIcSEGIAxBEGohBwNAIAciBQJ\u002FIAGZRAAAAAAAAOBBYwRAIAGqDAELQYCAgIB4CyIHQfDRBGotAAAgDXI6AAAgBiADQQBKckUgASAHt6FEAAAAAAAAMECiIgFEAAAAAAAAAABhcSAFQQFqIgcgDEEQamtBAUdyRQRAIAVBLjoAASAFQQJqIQcLIAFEAAAAAAAAAABiDQALQX8hCUH9\u002F\u002F\u002F\u002FByALIBIgCmsiBmoiDWsgA0gNACAAQSAgAiANIANBAmogByAMQRBqIgdrIgUgBUECayADSBsgBSADGyIJaiIDIAQQXSAAIAggCxBXIABBMCACIAMgBEGAgARzEF0gACAHIAUQVyAAQTAgCSAFa0EAQQAQXSAAIAogBhBXIABBICACIAMgBEGAwABzEF0gAyACIAIgA0gbIQkLIAxBsARqJAAgCQsFACAAnQvNAQIBfAF\u002FAkAgAJkiAb1CIIinIgJB66eG\u002FwNPBEAgAkGBgNCBBE8EQEQAAAAAAAAAgCABo0QAAAAAAADwP6AhAQwCC0QAAAAAAADwP0QAAAAAAAAAQCABIAGgEJMCRAAAAAAAAABAoKOhIQEMAQsgAkGvscH+A08EQCABIAGgEJMCIgEgAUQAAAAAAAAAQKCjIQEMAQsgAkGAgMAASQ0AIAFEAAAAAAAAAMCiEJMCIgGaIAFEAAAAAAAAAECgoyEBCyABmiABIAC9QgBTGwuEAQECfyMAQRBrIgEkAAJAIAC9QiCIp0H\u002F\u002F\u002F\u002F\u002FB3EiAkH7w6T\u002FA00EQCACQYCAgPIDSQ0BIABEAAAAAAAAAABBABD\u002FBSEADAELIAJBgIDA\u002FwdPBEAgACAAoSEADAELIAAgARCbBCECIAErAwAgASsDCCACQQFxEP8FIQALIAFBEGokACAAC8EDAgN\u002FAX4jAEEgayICJAACQAJAIAFCgICAgHCDQoCAgIAwUgRAIABBnSxBABASDAELIAMpAwAiAUIgiKdBdU8EQCABpyIDIAMoAgBBAWo2AgALAkACQANAAkACQAJAAkBBByABQiCIpyIDIANBB2tBbkkbIgNBCmoODAgFBQEFBQUFBQIAAAMLIAAgAcQQvwIhAQwHCyAAIAEQnwUhAQwGCyAAIAFBARCSASIBQoCAgIBwg0KAgICA4ABSDQEMBQsLIANBB0YNAQsgACABEAwgAEHdGUEAEBIMAQsCQCAAIAJBDGogARCtAiIDRQ0AAn4gAygCCEH+\u002F\u002F\u002F\u002FB04EQCAAIAEQDCAAQbQZQQAQREKAgICA4AAMAQsgABDiASIHQoCAgIBwg0KAgICA4ABRDQEgB6dBBGoiBCADEEkhBSAEQQEQ7wEhBiAAIAEQDCAGIAVyIgRBIHEEQCAAIAcQDCAAEHBCgICAgOAADAELIARBEHEEQCAAIAcQDCAAQfAzQQAQREKAgICA4AAMAQsgBxCvAgshASADIAJBDGoiAEcNAiAAEBkMAgsgACABEAwLQoCAgIDgACEBCyACQSBqJAAgAQsEAEIAC9gCAQh\u002FIwBBIGsiAyQAIAMgACgCHCIENgIQIAAoAhQhBSADIAI2AhwgAyABNgIYIAMgBSAEayIBNgIUIAEgAmohBSADQRBqIQFBAiEHAn8CQAJAAkAgACgCPCABQQIgA0EMahACEPoFBEAgASEEDAELA0AgBSADKAIMIgZGDQIgBkEASARAIAEhBAwECyABIAYgASgCBCIISyIJQQN0aiIEIAYgCEEAIAkbayIIIAQoAgBqNgIAIAFBDEEEIAkbaiIBIAEoAgAgCGs2AgAgBSAGayEFIAAoAjwgBCIBIAcgCWsiByADQQxqEAIQ+gVFDQALCyAFQX9HDQELIAAgACgCLCIBNgIcIAAgATYCFCAAIAEgACgCMGo2AhAgAgwBCyAAQQA2AhwgAEIANwMQIAAgACgCAEEgcjYCAEEAIAdBAkYNABogAiAEKAIEawshCiADQSBqJAAgCgsLACAAIAFBChCiBQsFACAAnwuLAQICfAF\u002FRAAAAAAAAOA\u002FIACmIQICQCAAmSIBvUIgiKciA0HB3JiEBE0EQCABEJMCIQEgA0H\u002F\u002F7\u002F\u002FA00EQCADQYCAwPIDSQ0CIAIgASABoCABIAGiIAFEAAAAAAAA8D+go6GiDwsgAiABIAEgAUQAAAAAAADwP6CjoKIPCyABIAIgAqAQjgYhAAsgAAvHAQICfwF8IwBBEGsiASQAAkAgAL1CIIinQf\u002F\u002F\u002F\u002F8HcSICQfvDpP8DTQRAIAJBgIDA8gNJDQEgAEQAAAAAAAAAAEEAEMsCIQAMAQsgAkGAgMD\u002FB08EQCAAIAChIQAMAQsgACABEJsEIQIgASsDCCEAIAErAwAhAwJAAkACQAJAIAJBA3EOAwABAgMLIAMgAEEBEMsCIQAMAwsgAyAAEMwCIQAMAgsgAyAAQQEQywKaIQAMAQsgAyAAEMwCmiEACyABQRBqJAAgAAvnAwMGfAF+A38CQAJAAkACQCAAvSIHQgBZBEAgB0IgiKciCEH\u002F\u002Fz9LDQELIAC9Qv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDUARARAAAAAAAAPC\u002FIAAgAKKjDwsgB0IAWQ0BIAAgAKFEAAAAAAAAAACjDwsgCEH\u002F\u002F7\u002F\u002FB0sNAkGAgMD\u002FAyEJQYF4IQogCEGAgMD\u002FA0cEQCAIIQkMAgsgB6cNAUQAAAAAAAAAAA8LIABEAAAAAAAAUEOivSIHQiCIpyEJQct3IQoLIAogCUHiviVqIghBFHZqtyIFRABgn1ATRNM\u002FoiIBIAdC\u002F\u002F\u002F\u002F\u002Fw+DIAhB\u002F\u002F8\u002FcUGewZr\u002FA2qtQiCGhL9EAAAAAAAA8L+gIgAgACAARAAAAAAAAOA\u002FoqIiA6G9QoCAgIBwg78iBEQAACAVe8vbP6IiAqAiBiACIAEgBqGgIAAgAEQAAAAAAAAAQKCjIgEgAyABIAGiIgIgAqIiASABIAFEn8Z40Amawz+iRK94jh3Fccw\u002FoKJEBPqXmZmZ2T+goiACIAEgASABRERSPt8S8cI\u002FokTeA8uWZEbHP6CiRFmTIpQkSdI\u002FoKJEk1VVVVVV5T+goqCgoiAAIAShIAOhoCIARAAAIBV7y9s\u002FoiAFRDYr8RHz\u002Flk9oiAAIASgRNWtmso4lLs9oqCgoKAhAAsgAAvEDgIQfwF+IAAQ4gEiFUKAgICAcINCgICAgOAAUgR+IwBBEGsiAyQAIBWnQQRqIQsjAEEwayIGJAAgA0EANgIMIAYgASIENgIsAkACQAJAIAIiCkERSCICBEAgAUGQwAAgBkEsahCvBA0BIAYoAiwhBAsCQAJAAkAgBC0AACIFQStrDgMBAgACC0EBIQ8LIAYgBEEBaiIBNgIsIAQtAAEhBSABIQQLAkACQAJAAn8CQCAFQf8BcUEwRgRAAkACQCAELQABIgFB+ABHBEAgAUHvAEYNAiABQdgARw0BCyAKQW9xRQRAIAYgBEECajYCLEEQDAULIAFB7wBGDQEgCkUhCAwDCyAKRSEIIAogAUHPAEdyDQIMBQsgCg0FDAQLIAJFDQIgBEH7ywAgBkEsahCvBEUNAiALIA8Qf0EAIQUMBwsCQCABQeIARwRAIAggAUHCAEZxDQEMAwsgCEUNAgsMAgshCiAELQACEIwBIApPDQMMAgsgCg0BC0EKIQoLAn8gCiAKQQFrIgFxBEAgCygCACEBIAZCADcCICAGQoCAgICAgICAgH83AhggBiABNgIUIAZBFGoMAQtBICABZ2tBACAKQQJPGyEMIAsLIQ0gBigCLCEFA0AgBS0AAEEwRgRAIAYgBUEBaiIFNgIsDAELC0EgIQIgDEUEQCAKQb7+AWotAAAhAgsgDUEBEFAaIAZBADYCKCACIQFBACEFAkACQAJAAkADQAJAAkAgBigCLCIILQAAIhFBLkcNACAEIAhPBEBBLiERIAgsAAEQjAEgCk4NAQsgDg0DQQEhDiAGIAhBAWoiBzYCLCAILQABIREgCSEQDAELIAghBwsgCiARwBCMASIISwRAIAYgB0EBajYCLCAJQQFqIQkgDARAIAEgDGsiB0EATARAIA0gBkEoaiAIQQAgB2t2IAVyEK4DDQYgCCAHQSBqIgF0QQAgBxshBQwDCyAIIAd0IAVyIQUgByEBDAILIAggBSAKbGohBSABQQFrIgENASANIAZBKGogBRCuAyESIAIhAUEAIQUgEkUNAQwDCwsgECAJIA4bIRALIAEgAkYNAiAMIAFFckUEQANAIAUgCmwhBSABQQFrIgENAAsLIA0gBkEoaiAFEK4DRQ0CIAwNAQsgDRAZCyALECpBICEFDAMLIA0oAhBBACAGKAIoIg5BAnRBBGoQLBogBigCLCIJIARHDQEgDA0AIA0QGQsgCxAqQQAhBQwBCyAJLQAAIQcCQAJ\u002FAn8CQAJAIApBCkYEQCAHIgFBIHJB5QBGDQEMAgtBwAAhASAHQcAARg0AIAxFBEBBACEIDAULIAciAUEgckHwAEYNAEEADAMLIAQgCU8NACAGIAlBAWoiCDYCLCABQd8BcSETQQEhBwJAAkACQCAJLQABQStrDgMAAgECCyAGIAlBAmoiCDYCLAwBCyAGIAlBAmoiCDYCLEEAIQcLIBNB0ABHIQlBACEFA0AgCCwAABCMASIBQQlNBEAgBUHMmbPmAE4EQCAHRQRAIAsgDxCAAUEYIQUMCAsgCyAPEH9BFCEFDAcFIAYgCEEBaiIINgIsIAEgBUEKbGohBQwCCwALCyAFQQAgBWsgBxsMAQtBASEJQQALIQggDEUNASAMQQEgCRsgCGwLIQEgDSAPNgIEIA0gASAMIBBsajYCCCANQf\u002F\u002F\u002F\u002F8DQQEQmwIhBQwBCwJAIA0oAgwiBCAOQQFqIglGBEAgCyAPEIABQQAhBQwBCyALKAIAIQEgBkIANwIMIAZCgICAgICAgICAfzcCBCAGIAE2AgAgDSgCECEOIAoQrgQhEUEAIQUCfwJAIAEoAgBBAEECQSIgBCAJayIEQQFrZ2sgBEECSRsiDEEUbCABKAIEEQEAIgcEQCAOIAlBAnRqIQ4gECACIARsayAIaiECA0AgBSAMRwRAIAcgBUEUbGoiCUIANwIMIAlCgICAgICAgICAfzcCBCAJIAE2AgAgBUEBaiEFDAELC0EAIQUgBiAOIARBACAEIBEgBxCtAyEUA0AgBSAMRwRAIAcgBUEUbGoQGSAFQQFqIQUMAQsLIAEoAgAgB0EAIAEoAgQRAQAaIBRFDQELIAsQKkEgDAELIAYgDzYCBCMAQSBrIgEkAAJAIAYoAgxFBEAgCyAGEEkhAgwBCyACRQRAIAsgBhBJIAtB\u002F\u002F\u002F\u002F\u002FwNBARC6AXIhAgwBCyALKAIAIQQgAUIANwIYIAFCgICAgICAgICAfzcCECABIAQ2AgwCfyABQQxqIgcgCiACIAJBH3UiBHMgBGtB\u002F\u002F\u002F\u002F\u002FwNBABDXAiEEIAJBAEgEQCALIAYgByAGKAIMQQV0QQAQiAEgBHIMAQsgCyAGIAFBDGpB\u002F\u002F\u002F\u002F\u002FwNBABBAIARyCyECIAFBDGoQGQsgAUEgaiQAIAILIQUgBhAZCyANEBkLIAZBMGokACADQRBqJAAgBUEgcQRAIAAgFRAMIAAQcEKAgICA4AAPCyAVEK8CBUKAgICA4AALC6EBAQR\u002FIAIgACgCVCIDKAIEIgQgAygCACIFayIGQQAgBCAGTxsiBEsEQCAAIAAoAgBBEHI2AgAgBCECCyABIAMoAgwgBWogAhAeGiADIAMoAgAgAmoiBTYCACAAIAAoAiwiATYCBCAAIAEgBCACayIEIAAoAjAiACAAIARLGyIAajYCCCABIAMoAgwgBWogABAeGiADIAMoAgAgAGo2AgAgAguNAQIBfwF+IwBBEGsiAyQAAn4CQCACQQNPDQAgACgCVCEAIANBADYCBCADIAAoAgA2AgggAyAAKAIENgIMQQAgA0EEaiACQQJ0aigCACICa6wgAVUNACAAKAIIIAJrrCABUw0AIAAgAiABp2oiADYCACAArQwBC0HE1ARBHDYCAEJ\u002FCyEEIANBEGokACAEC6YCAgF+BX8jAEEgayIHJAACfwJAIAJBjgFGBEAgAEGIiAFBABASDAELIAAQ4gEiBEKAgICAcINCgICAgOAAUQ0AIAAgB0EMaiADEK4CIgVFBEAgACAEEAwMAQsgBKciBkEEaiEIAkACQAJAAkACQCACQY0Baw4KAAIDAwICAgICAQILIAggBRBJIQIgBiAGKAIIQQFzNgIIDAMLIAggBUIBQf\u002F\u002F\u002F\u002F8DQQEQeiECIAYgBigCCEEBczYCCAwCCxABAAsgCCAFIAJBAXRBnwJrrEH\u002F\u002F\u002F\u002F\u002FA0EBEHohAgsgACAFIAdBDGoQ5gEgACADEAwgAgRAIAAgBBAMIAAgAhChBUF\u002FDAILIAEgBBCvAjcDAEEADAELIAAgAxAMQX8LIQkgB0EgaiQAIAkLBQAgAJwLBQAgAJkLkgEBAX8CfCAAmSIAvUIgiKciAUHB3Jj\u002FA00EQEQAAAAAAADwPyABQYCAwPIDSQ0BGiAAEJMCIgAgAKIgAEQAAAAAAADwP6AiACAAoKNEAAAAAAAA8D+gDwsgAUHB3JiEBE0EQCAAEJoEIgBEAAAAAAAA8D8gAKOgRAAAAAAAAOA\u002Fog8LIABEAAAAAAAA8D8QjgYLC8MSAhR\u002FAX4jAEFAaiIQJAACfwJAAkACQCAAEOIBIhlCgICAgHCDQoCAgIDgAFENACAAIBBBLGoiBiADEK4CIglFDQAgACAQQRhqIAQQrgIiDg0BIAAgCSAGEOYBCyAAIBkQDCAAIAMQDCAAIAQQDAwBCyAZp0EEaiEGAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAFBmwFrDhYBAgMKAAQFBQkJCQkJCQkJCQkJBggHCQsgBiAJIA5B\u002F\u002F\u002F\u002F\u002FwNBARDuASEBDAoLIAYgCSAOQf\u002F\u002F\u002F\u002F8DQQEQQCEBDAkLIAAoAtgBIBBBBGoiChC7ASAGIAogCSAOELoEIQEgChAZDAgLIwBBIGsiByQAIAYoAgAhASAHQgA3AhggB0KAgICAgICAgIB\u002FNwIQIAcgATYCDCAHQQxqIgogBiAJIA4QugQhFyAKEBkgB0EgaiQAIBdBAXEhAQwHC0EBIQEgDigCBA0GIAYhASAOIQgjAEFAaiIFJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgCSgCDARAIAgoAgwNAQsgCCgCCEGAgICAeEYEQCABQgEQMhoMCwsgCSgCCEH\u002F\u002F\u002F\u002F\u002FB0YNCSABQgEQMhoCQCAJIAEQ8gEiBkUEQCAIKAIIQf7\u002F\u002F\u002F8HTg0LDAELIAYNAgsgCSgCBEUNCiAIKAIIQf\u002F\u002F\u002F\u002F8HRg0JDAoLIAEoAgAhDCAFQgA3AiQgBUKAgICAgICAgIB\u002FNwIcIAUgDDYCGCAFQRhqIgYgCRBJGiAIENkCIRNBgYAEIQogCSgCBARAIBNBAEgEQCABECogBhAZQQEhBwwMCyAFIAUoAhxBAXM2AhwgE0UiFkEAcUGBgARzIQoLIAFCARAyGiAFQRhqIhEgARC9Ag0EIAVCADcCOCAFQoCAgICAgICAgH83AjAgBSAMNgIsIAVCADcCECAFQoCAgICAgICAgH83AgggBSAMNgIEIAVBLGoiFSARQSBBAhCqAyAFQQRqIgYgEUEgQQMQqgMgFSAVIAhBICAIKAIEQQJzEEAaIAYgBiAIQSAgCCgCBEEDcxBAGiMAQTBrIg0kAAJAIAYoAghBAEwNACANQgA3AiggDUKAgICAgICAgIB\u002FNwIgIA0gDDYCHCANQgA3AhQgDUKAgICAgICAgIB\u002FNwIMIA0gDDYCCCANQQhqIhJBIEEDEJgCIwBBIGsiFCQAIA1BHGoiCygCACEHIBRCADcCGCAUQoCAgICAgICAgH83AhAgFCAHNgIMIBRBDGoiDEGAgICAAkEBQRwgCkEFdkE\u002FcSIHa3QgB0E\u002FRhsiB60QMhogCyASIAxBIEEDEEAaIAwQGSAUQSBqJAAgCyAVEKwCBEAgCxAZIBIQGSABQQBB\u002F\u002F\u002F\u002F\u002FwMgChC3AyEPDAELIA1BCGoiEkEgQQIQmAIgDUEcaiIMIBJBASAHIApBHHRBH3VB\u002Fv\u002F\u002F\u002FwNxaiIHa6xBIEECENgCIAYgDBCsAgRAIAwQGSASEBkgCkEHcUEDRgRAIAFCARAyGiABQQMgB2s2AghBGCEPDAILIAFBABCAAUEYIQ8MAQsgDUEIahAZIA1BHGoQGQsgDUEwaiQAIA8hByAVEBkgBhAZIAcNBCATQQBODQJBACEMIAEoAgAhByARENkCIQsCQEEAIBNrIhJBIE8EQCALRQ0BDAULIAtBfyASdEF\u002Fc3ENBCALIBJ1IQwLIAUoAiggBSgCJCIGIAsgBSgCIGsgBkEFdGoQcUEHcUEBRw0DIAVCADcCOCAFQoCAgICAgICAgH83AjAgBSAHNgIsIAVBLGogBUEYahBJGiAFIAUoAjQgC2s2AjRBACEHA0AgByASRg0CIAcEQCAFQSxqIAEQSRoLIAdBAWohByMAQSBrIgskAAJAAkACQCAFQSxqIhEoAgxFBEACQAJAAkACQCARKAIIQf7\u002F\u002F\u002F8Haw4CAQACCyABECoMAgsgESgCBA0DCyABIBEQSRoLQQAhBgwDCyARKAIERQ0BCyABECpBASEGDAELIAEgESARKAIIQQFqQQJtQQEQtQQgAUEBEO8BGiABKAIAIQYgC0IANwIYIAtCgICAgICAgICAfzcCECALIAY2AgwgC0EMaiIPIAEgAUH\u002F\u002F\u002F\u002F\u002FA0EBEEAaIA8gDygCBEEBczYCBCAPIA8gEUH\u002F\u002F\u002F\u002F\u002FA0EBELgBGkEgIQYgDygCCEH\u002F\u002F\u002F\u002F\u002FB0cEQCAPKAIMQQBHQQR0IQYLIA8QGQsgC0EgaiQAIAZFDQALDAMLIAgoAghB\u002Fv\u002F\u002F\u002FwdrDgIGBwULIAEgASgCCCAMajYCCCAFQRhqIAEQSRogBSAIKAIQNgI8IAUgCCgCDDYCOCAFIAgoAgQ2AjAgBSAIKAIIIBNrNgI0IAVBLGohCAsgBSgCICIGIAVBGGoiBxDZAmtBAUYEQCAHIAggBkEBa6xBIEEBENgCIAUgB0EAEO0BIAFCARAyGiABIAUoAgAgChC5ASEHDAILIAVBBGogCEEAEO0BIAgoAgQNAiAFKAIEIgZB\u002F\u002F\u002F\u002F\u002FwFMBEAgASAFQRhqIAZB\u002F\u002F\u002F\u002F\u002FwNBARCvAyEHDAILIAVBGGoQGSABQQBB\u002F\u002F\u002F\u002F\u002FwMgChC3AyEHDAcLIAEgBUEYakH\u002F\u002F\u002F\u002F\u002FAyAKQZkDIAgQqgQhBwsgBUEYahAZIAEgFjYCBAwFC0GMP0HY7ABBtyVB7hAQAAALIAgQ2QJFIAkoAgRxIQYgCCgCBCAJKAIIQYCAgIB4RkYEQCABIAYQf0ECIQcgCCgCBEUNAwwECyABIAYQgAEMAgsgCCgCBCAGQQBKRgRAIAFBABCAAQwCCyABQQAQfwwBCyABECoLQQAhBwsgBUFAayQAIAchAQwGCyAQQQRqIA5BABDtASAQKAIEIgpBgICAgHhHIAFBogFHcUUEQCAQQQBBgYCAgHggCiAKQYGAgIB4TBsiCmsgCiABQaIBRhs2AgQLIAYgCRBJIAYgECgCBEEBELkBciEBIBAoAgRBAE4NBSAGQQIQ7wFBJHEgAXIhAQwFCyAGIAkgDhCyBCEBDAQLIAYgCSAOQQAQsAMhAQwDCyAGIAkgDkEBELADIQEMAgsQAQALIAYgCSAOQf\u002F\u002F\u002F\u002F8DQQEQuAEhAQsgACAJIBBBLGoQ5gEgACAOIBBBGGoQ5gEgACADEAwgACAEEAwgAQRAIAAgGRAMIAAgARChBQwBCyACIBkQrwI3AwBBAAwBC0F\u002FCyEYIBBBQGskACAYC8MBAgJ8An8jAEEQayIDJAACfCAAvUIgiKdB\u002F\u002F\u002F\u002F\u002FwdxIgRB+8Ok\u002FwNNBEBEAAAAAAAA8D8gBEGewZryA0kNARogAEQAAAAAAAAAABDMAgwBCyAAIAChIARBgIDA\u002FwdPDQAaIAAgAxCbBCEEIAMrAwghACADKwMAIQECQAJAAkACQCAEQQNxDgMAAQIDCyABIAAQzAIMAwsgASAAQQEQywKaDAILIAEgABDMApoMAQsgASAAQQEQywILIQIgA0EQaiQAIAILBQAgAJsLgwIDAnwCfwF+IAC9IgVCIIinQf\u002F\u002F\u002F\u002F8HcSIDQYCAwP8HTwRAIAAgAKAPC0GT8f3UAiEEAkAgA0H\u002F\u002Fz9NBEBBk\u002FH9ywIhBCAARAAAAAAAAFBDor0iBUIgiKdB\u002F\u002F\u002F\u002F\u002FwdxIgNFDQELIAVCgICAgICAgICAf4MgA0EDbiAEaq1CIIaEvyICIAKiIAIgAKOiIgEgASABoqIgAUTX7eTUALDCP6JE2VHnvstE6L+goiABIAFEwtZJSmDx+T+iRCAk8JLgKP6\u002FoKJEkuZhD+YD\u002Fj+goCACor1CgICAgHyDQoCAgIAIfL8iASAAIAEgAaKjIgAgAaEgASABoCAAoKOiIAGgIQALIAALewMBfAF+AX8gAJkhAQJAAnwgAL0iAkI0iKdB\u002Fw9xIgNB\u002FQdNBEAgA0HfB0kNAiABIAGgIgAgASAAokQAAAAAAADwPyABoaOgDAELIAFEAAAAAAAA8D8gAaGjIgAgAKALEKEDRAAAAAAAAOA\u002FoiEBCyABmiABIAJCAFMbC6gDAgV\u002FAX4gAL1C\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgYCAgICAgPj\u002FAFQgAb1C\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFhxRQRAIAAgAaAPCyABvSIHQiCIpyICQYCAwP8DayAHpyIFckUEQCAAEJwEDwsgAkEedkECcSIGIAC9IgdCP4inciEDAkAgB0IgiKdB\u002F\u002F\u002F\u002F\u002FwdxIgQgB6dyRQRAAkACQCADQQJrDgIAAQMLRBgtRFT7IQlADwtEGC1EVPshCcAPCyACQf\u002F\u002F\u002F\u002F8HcSICIAVyRQRARBgtRFT7Ifk\u002FIACmDwsCQCACQYCAwP8HRgRAIARBgIDA\u002FwdHDQEgA0EDdEGApgRqKwMADwsgBEGAgMD\u002FB0cgAkGAgIAgaiAET3FFBEBEGC1EVPsh+T8gAKYPCwJ8IAYEQEQAAAAAAAAAACAEQYCAgCBqIAJJDQEaCyAAIAGjmRCcBAshAAJAAkACQCADDgMEAAECCyAAmg8LRBgtRFT7IQlAIABEB1wUMyamobygoQ8LIABEB1wUMyamobygRBgtRFT7IQnAoA8LIANBA3RBoKYEaisDACEACyAAC9sBAQV\u002FIwBBMGsiBiQAQX8hBwJAIAAgBkEcaiIIIAIQrQIiBEUNAAJAIAAgBkEIaiADEK0CIgVFBEAgBCAIRw0BIAgQGQwBCwJ\u002FAkACQAJAAkACQAJAIAFBpAFrDgcFAAECBAQDBAsgBCAFEKAFDAULIAUgBBCsAgwECyAFIAQQoAUMAwsgBCAFEL0CDAILEAEACyAEIAUQrAILIQcgBkEcaiIBIARGBEAgARAZCyAGQQhqIgEgBUYEQCABEBkLIAAgAhAMDAELIAIhAwsgACADEAwgBkEwaiQAIAcLpgEDAXwBfwF+IACZIQECQCAAvSIDQjSIp0H\u002FD3EiAkGZCE8EQCABEM4CRO85+v5CLuY\u002FoCEBDAELIAJBgAhPBEAgASABoEQAAAAAAADwPyABIAAgAKJEAAAAAAAA8D+gn6CjoBDOAiEBDAELIAJB5QdJDQAgASAAIACiIgAgAEQAAAAAAADwP6CfRAAAAAAAAPA\u002FoKOgEKEDIQELIAGaIAEgA0IAUxsLuQIDAX8DfAF+IAC9IgVCIIinQf\u002F\u002F\u002F\u002F8HcSIBQYCAwP8DTwRAIAWnIAFBgIDA\u002FwNrckUEQCAARBgtRFT7Ifk\u002FokQAAAAAAABwOKAPC0QAAAAAAAAAACAAIAChow8LAkAgAUH\u002F\u002F\u002F\u002F+A00EQCABQYCAQGpBgICA8gNJDQEgACAAIACiEM0CoiAAoA8LRAAAAAAAAPA\u002FIACZoUQAAAAAAADgP6IiA58hACADEM0CIQQCfCABQbPmvP8DTwRARBgtRFT7Ifk\u002FIAAgBKIgAKAiACAAoEQHXBQzJqaRvKChDAELRBgtRFT7Iek\u002FIAC9QoCAgIBwg78iAiACoKEgACAAoCAEokQHXBQzJqaRPCADIAIgAqKhIAAgAqCjIgAgAKChoaFEGC1EVPsh6T+gCyIAmiAAIAVCAFMbIQALIAALdgEBfyAAvUI0iKdB\u002Fw9xIgFB\u002FwdNBEAgAEQAAAAAAADwv6AiACAAIACiIAAgAKCgn6AQoQMPCyABQZgITQRAIAAgAKBEAAAAAAAA8L8gACAAokQAAAAAAADwv6CfIACgo6AQzgIPCyAAEM4CRO85+v5CLuY\u002FoAuuAgMBfAF+AX8gAL0iAkIgiKdB\u002F\u002F\u002F\u002F\u002FwdxIgNBgIDA\u002FwNPBEAgAqcgA0GAgMD\u002FA2tyRQRARAAAAAAAAAAARBgtRFT7IQlAIAJCAFkbDwtEAAAAAAAAAAAgACAAoaMPCwJ8IANB\u002F\u002F\u002F\u002F\u002FgNNBEBEGC1EVPsh+T8gA0GBgIDjA0kNARpEB1wUMyamkTwgACAAIACiEM0CoqEgAKFEGC1EVPsh+T+gDwsgAkIAUwRARBgtRFT7Ifk\u002FIABEAAAAAAAA8D+gRAAAAAAAAOA\u002FoiIAnyIBIAEgABDNAqJEB1wUMyamkbygoKEiACAAoA8LRAAAAAAAAPA\u002FIAChRAAAAAAAAOA\u002FoiIAnyIBIAAQzQKiIAAgAb1CgICAgHCDvyIAIACioSABIACgo6AgAKAiACAAoAsLzgMDBXwBfgN\u002FAkACQAJAAkAgAL0iBkIAWQRAIAZCIIinIgdB\u002F\u002F8\u002FSw0BCyAAvUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag1AEQEQAAAAAAADwvyAAIACiow8LIAZCAFkNASAAIAChRAAAAAAAAAAAow8LIAdB\u002F\u002F+\u002F\u002FwdLDQJBgIDA\u002FwMhCEGBeCEJIAdBgIDA\u002FwNHBEAgByEIDAILIAanDQFEAAAAAAAAAAAPCyAARAAAAAAAAFBDor0iBkIgiKchCEHLdyEJCyAGQv\u002F\u002F\u002F\u002F8PgyAIQeK+JWoiB0H\u002F\u002Fz9xQZ7Bmv8Daq1CIIaEv0QAAAAAAADwv6AiACAAIABEAAAAAAAA4D+ioiIDob1CgICAgHCDvyIERAAAIGVHFfc\u002FoiIBIAkgB0EUdmq3IgKgIgUgASACIAWhoCAAIABEAAAAAAAAAECgoyIBIAMgASABoiICIAKiIgEgASABRJ\u002FGeNAJmsM\u002FokSveI4dxXHMP6CiRAT6l5mZmdk\u002FoKIgAiABIAEgAUREUj7fEvHCP6JE3gPLlmRGxz+gokRZkyKUJEnSP6CiRJNVVVVVVeU\u002FoKKgoKIgACAEoSADoaAiACAEoEQAou8u\u002FAXnPaIgAEQAACBlRxX3P6KgoKAhAAsgAAsXACAAKAIAIgAgASgCACIBSyAAIAFJawutAgIDfwF+IwBBIGsiBSQAAkAgAaciBygCICIGRQ0AIAYoAggiCCgCBA0AIAhBATYCBCAHLwEGQS5rIQcCQAJAIANBAEwEQEKAgICAMCEBDAELIAcgBCkDACIBQoCAgIBwVHINAAJAAkAgACABIAYpAwAQTQRAIABBoDhBABASDAELIAAgAUGAASABQQAQESICQoCAgIBwg0KAgICA4ABSDQELIAAoAhAiAykDgAEhASADQoCAgIAgNwOAASAAIAYpAwAgAUEBEK0FIAAgARAMDAMLIAAgAhA1DQEgACACEAwLIAAgBikDACABIAcQrQUMAQsgBikDACEJIAUgAjcDECAFIAE3AwggBSAJNwMAIABBM0EDIAUQ+AIgACACEAwLIAVBIGokAEKAgICAMAuYAQEBfyABpyIFLwEGQTFrIQYgBSgCICEFIANBAEwEfkKAgICAMAUgBCkDAAshASAFIAY2AhwgAUIgiKchAwJAIAYEQCADQXVPBEAgAaciAyADKAIAQQFqNgIACyAAIAEQmAEMAQsgA0F1TwRAIAGnIgMgAygCAEEBajYCAAsgBSgCZEEIayABNwMACyAAIAUQrAVCgICAgDALtQEBAX8CQCAAQRQQXCIFBEAgBUEANgIEIAUgBUEMaiIGNgIQIAUgBjYCDCAFIAAgASACIAMgBBDsAyIDNgIIAkAgA0UNACAAIAMQsQIiAkKAgICAcINCgICAgOAAUQ0AIAAgAhAMIAAgAUE1EF4iAUKAgICAcINCgICAgOAAUQ0AIAUgAaciADYCACABQoCAgIBwVA0CIAAgBTYCIAwCCyAAKAIQIAUQqwULQoCAgIDgAA8LIAELswMCBH8DfiMAQRBrIgUkAEKAgICA4AAhCgJAAn8CQCADKQMAIglCgICAgHBaBEAgCaciBC8BBkETa0H\u002F\u002FwNxQQJJDQELIABBExCKA0EADAELIAQoAiALIgRFDQAgBUIANwMIIAJBAk4EQCAAIAVBCGogAykDCBCkAQ0BCyAELQAEBEAgABBfDAELIAUpAwgiCCAEKAIAIgasVgRAIABBjRxBABBEDAELIAYgCKciB2shBgJAIAJBA0gNACADKQMQIghCgICAgHCDQoCAgIAwUQ0AIAAgBSAIEKQBDQEgBSkDACIIIAatVgRAIABByscAQQAQRAwCCyAIpyEGCyAAIAFBIBBeIgFCgICAgHCDQoCAgIDgAFENAAJAAkAgBC0ABARAIAAQXwwBCyAAQRgQJCICDQELIAAgARAMDAELIAIgAaciAzYCCCAJpyEAIAlCIIinQXVPBEAgACAAKAIAQQFqNgIACyACIAY2AhQgAiAHNgIQIAIgADYCDCAEKAIMIgAgAjYCBCACIARBDGo2AgQgAiAANgIAIAQgAjYCDCADIAI2AiAgASEKCyAFQRBqJAAgCgtaAgF\u002FAX4CQEGw1AQoAgAEQEG01AQoAgAhAgwBC0Gw1AQQ4wUiAjYCAEG01AQgAhDtBCICNgIACyACIAAgABA9Qd7\u002FABCyBSIDIAEQkAMaQbTUBCgCACADEAwLC77HBFEAQYAIC\u002FGOASgpe30AKCl7c3VwZXIoLi4uYXJndW1lbnRzKTt9ACgpIHsKICAgIFtuYXRpdmUgY29kZV0KfQBjYW5ub3QgbWl4ID8\u002FIHdpdGggJiYgb3IgfHwAcHJveHk6IHByb3BlcnR5IG5vdCBwcmVzZW50IGluIHRhcmdldCB3ZXJlIHJldHVybmVkIGJ5IG5vbiBleHRlbnNpYmxlIHByb3h5AHJldm9rZWQgcHJveHkAUHJveHkAYWRkX3Byb3BlcnR5AHByb3h5OiBjYW5ub3Qgc2V0IHByb3BlcnR5AG5vIHNldHRlciBmb3IgcHJvcGVydHkAdmFsdWUgaGFzIG5vIHByb3BlcnR5AGNvdWxkIG5vdCBkZWxldGUgcHJvcGVydHkAcHJveHk6IGR1cGxpY2F0ZSBwcm9wZXJ0eQBKU19EZWZpbmVBdXRvSW5pdFByb3BlcnR5AGhhc093blByb3BlcnR5AHByb3h5OiBpbmNvbnNpc3RlbnQgZGVsZXRlUHJvcGVydHkAcHJveHk6IGluY29uc2lzdGVudCBkZWZpbmVQcm9wZXJ0eQBKU19EZWZpbmVQcm9wZXJ0eQAhbXItPmVtcHR5AGluZmluaXR5AEluZmluaXR5AG91dCBvZiBtZW1vcnkAdW5rbm93biB1bmljb2RlIGdlbmVyYWwgY2F0ZWdvcnkAR2VuZXJhbF9DYXRlZ29yeQBldmVyeQBhbnkAYXBwbHkAJyVzJyBpcyByZWFkLW9ubHkAZXhwZWN0aW5nIGNhdGNoIG9yIGZpbmFsbHkAc3RpY2t5AGJpZ2ludCBhcmUgZm9yYmlkZGVuIGluIEpTT04uc3RyaW5naWZ5AHN1YmFycmF5AGVtcHR5IGFycmF5AG5vbiBpbnRlZ2VyIGluZGV4IGluIHR5cGVkIGFycmF5AG5lZ2F0aXZlIGluZGV4IGluIHR5cGVkIGFycmF5AG91dC1vZi1ib3VuZCBpbmRleCBpbiB0eXBlZCBhcnJheQBjYW5ub3QgY3JlYXRlIG51bWVyaWMgaW5kZXggaW4gdHlwZWQgYXJyYXkAaXNBcnJheQBUeXBlZEFycmF5AGdldERheQBnZXRVVENEYXkAZ3JvdXBCeQBtLT5kZnNfYW5jZXN0b3JfaW5kZXggPD0gbS0+ZGZzX2luZGV4AGpzX2dldF9hdG9tX2luZGV4AGludmFsaWQgYXJyYXkgaW5kZXgASlNfQXRvbUlzQXJyYXlJbmRleABmaW5kTGFzdEluZGV4AGZpbmRJbmRleABpbnZhbGlkIGV4cG9ydCBzeW50YXgAaW52YWxpZCBhc3NpZ25tZW50IHN5bnRheABtYXgAXHUlMDR4AGludmFsaWQgb3Bjb2RlOiBwYz0ldSBvcGNvZGU9MHglMDJ4AC0rICAgMFgweAAtMFgrMFggMFgtMHgrMHggMHgAbGluZSB0ZXJtaW5hdG9yIG5vdCBhbGxvd2VkIGFmdGVyIHRocm93AGJmX3BvdwBub3cAaW50ZWdlciBvdmVyZmxvdwBzdGFjayBvdmVyZmxvdwBtdXN0IGJlIGNhbGxlZCB3aXRoIG5ldwBpc1ZpZXcARGF0YVZpZXcAcmF3ACV1AGNsYXNzIGRlY2xhcmF0aW9ucyBjYW4ndCBhcHBlYXIgaW4gc2luZ2xlLXN0YXRlbWVudCBjb250ZXh0AGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBjYW4ndCBhcHBlYXIgaW4gc2luZ2xlLXN0YXRlbWVudCBjb250ZXh0AGxleGljYWwgZGVjbGFyYXRpb25zIGNhbid0IGFwcGVhciBpbiBzaW5nbGUtc3RhdGVtZW50IGNvbnRleHQAZHVwbGljYXRlIGFyZ3VtZW50IG5hbWVzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dABkdXBsaWNhdGUgcGFyYW1ldGVyIG5hbWVzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dABpbXBvcnQubWV0YSBub3Qgc3VwcG9ydGVkIGluIHRoaXMgY29udGV4dABKU19GcmVlQ29udGV4dABKU0NvbnRleHQAanNfbWFwX2l0ZXJhdG9yX25leHQAanNfZ2VuZXJhdG9yX25leHQAanNfYXN5bmNfZ2VuZXJhdG9yX3Jlc3VtZV9uZXh0AHVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0AHR0AGV4cG9ydGVkIHZhcmlhYmxlICclcycgZG9lcyBub3QgZXhpc3QAcHJpdmF0ZSBjbGFzcyBmaWVsZCAnJXMnIGRvZXMgbm90IGV4aXN0AHRlc3QAYXNzaWdubWVudCByZXN0IHByb3BlcnR5IG11c3QgYmUgbGFzdABwdmFsID09IGxhc3QAZmluZExhc3QAYmZfc3FydABzb3J0AGNicnQAdHJpbVN0YXJ0AHBhZFN0YXJ0AHVua25vd24gdW5pY29kZSBzY3JpcHQAU2NyaXB0AGh5cG90AGZyZWVfemVyb19yZWZjb3VudABzdHJfaW5kZXggPT0gbnVtX2tleXNfY291bnQgKyBzdHJfa2V5c19jb3VudABudW1faW5kZXggPT0gbnVtX2tleXNfY291bnQAc3ltX2luZGV4ID09IGF0b21fY291bnQAbGFiZWwgPj0gMCAmJiBsYWJlbCA8IHMtPmxhYmVsX2NvdW50AGxhYjEgPj0gMCAmJiBsYWIxIDwgcy0+bGFiZWxfY291bnQAdmFsIDwgcy0+Y2FwdHVyZV9jb3VudAB2YWwyIDwgcy0+Y2FwdHVyZV9jb3VudABpbnZhbGlkIHJlcGVhdCBjb3VudABpbnZhbGlkIHJlcGV0aXRpb24gY291bnQAZm9udABpbnZhbGlkIGNvZGUgcG9pbnQAZnJvbUNvZGVQb2ludABpbnZhbGlkIGhpbnQAY2Fubm90IGNvbnZlcnQgTmFOIG9yIEluZmluaXR5IHRvIGJpZ2ludABjYW5ub3QgY29udmVydCB0byBiaWdpbnQAYm90aCBvcGVyYW5kcyBtdXN0IGJlIGJpZ2ludABub3QgYSBiaWdpbnQAcHJpdmF0ZSBtZXRob2QgaXMgYWxyZWFkeSBwcmVzZW50AGVuY29kZVVSSUNvbXBvbmVudABkZWNvZGVVUklDb21wb25lbnQAdW5leHBlY3RlZCBlbmQgb2YgY29tbWVudABpbnZhbGlkIHN3aXRjaCBzdGF0ZW1lbnQAQmlnSW50AHBhcnNlSW50AGR1cGxpY2F0ZSBkZWZhdWx0AHNwbGl0AGV4cGVjdGluZyBoZXggZGlnaXQAdHJpbVJpZ2h0AHJlZHVjZVJpZ2h0AHVuc2hpZnQAdHJpbUxlZnQAaW52YWxpZCBvZmZzZXQAaW52YWxpZCBieXRlT2Zmc2V0AGdldFRpbWV6b25lT2Zmc2V0AHJlc29sdmluZyBmdW5jdGlvbiBhbHJlYWR5IHNldABwcm94eTogaW5jb25zaXN0ZW50IHNldABmaW5kX2p1bXBfdGFyZ2V0AGV4cGVjdGluZyB0YXJnZXQAaW52YWxpZCBkZXN0cnVjdHVyaW5nIHRhcmdldABwcm94eTogaW5jb25zaXN0ZW50IGdldABXZWFrU2V0AGNvbnN0cnVjdABKU19GcmVlQXRvbVN0cnVjdAB1c2Ugc3RyaWN0AFJlZmxlY3QAcmVqZWN0AG5vdCBhbiBBc3luY0dlbmVyYXRvciBvYmplY3QAY2Fubm90IGNvbnZlcnQgdG8gb2JqZWN0AGludmFsaWQgYnJhbmQgb24gb2JqZWN0AG9wZXJhbmQgJ3Byb3RvdHlwZScgcHJvcGVydHkgaXMgbm90IGFuIG9iamVjdABpdGVyYXRvciBtdXN0IHJldHVybiBhbiBvYmplY3QAbm90IGEgRGF0ZSBvYmplY3QAbm90IGEgb2JqZWN0AEpTT2JqZWN0AHBhcnNlRmxvYXQAZmxhdABub3RoaW5nIHRvIHJlcGVhdABjb25jYXQAY29kZVBvaW50QXQAY2hhckF0AGNoYXJDb2RlQXQAa2V5cwBwcm94eTogdGFyZ2V0IHByb3BlcnR5IG11c3QgYmUgcHJlc2VudCBpbiBwcm94eSBvd25LZXlzACAgZmFzdCBhcnJheXMAZXhwb3J0ICclcycgaW4gbW9kdWxlICclcycgaXMgYW1iaWd1b3VzAHByaXZhdGUgY2xhc3MgZmllbGQgJyVzJyBhbHJlYWR5IGV4aXN0cwB0b28gbWFueSBhcmd1bWVudHMAVG9vIG1hbnkgY2FsbCBhcmd1bWVudHMAdG9vIG1hbnkgZWxlbWVudHMAICBlbGVtZW50cwBpbnZhbGlkIG51bWJlciBvZiBkaWdpdHMAYmluYXJ5IG9iamVjdHMAaW52YWxpZCBwcm9wZXJ0eSBhY2Nlc3MAanNfb3BfZGVmaW5lX2NsYXNzAGZkLT5ieXRlX2NvZGUuYnVmW2RlZmluZV9jbGFzc19wb3NdID09IE9QX2RlZmluZV9jbGFzcwBfX2dldENsYXNzAHNldEhvdXJzAGdldEhvdXJzAHNldFVUQ0hvdXJzAGdldFVUQ0hvdXJzAGdhdGhlcl9hdmFpbGFibGVfYW5jZXN0b3JzAGdldE93blByb3BlcnR5RGVzY3JpcHRvcnMAd2l0aFJlc29sdmVycwB0b28gbWFueSBpbWJyaWNhdGVkIHF1YW50aWZpZXJzAHVuaWNvZGVfcHJvcF9vcHMAYWNvcwBmb3IgYXdhaXQgaXMgb25seSB2YWxpZCBpbiBhc3luY2hyb25vdXMgZnVuY3Rpb25zAG5ldy50YXJnZXQgb25seSBhbGxvd2VkIHdpdGhpbiBmdW5jdGlvbnMAYnl0ZWNvZGUgZnVuY3Rpb25zAEMgZnVuY3Rpb25zAHByb3h5OiBpbmNvbnNpc3RlbnQgcHJldmVudEV4dGVuc2lvbnMAU2NyaXB0X0V4dGVuc2lvbnMAYXRvbXMAcHJveHk6IHByb3BlcnRpZXMgbXVzdCBiZSBzdHJpbmdzIG9yIHN5bWJvbHMAZ2V0T3duUHJvcGVydHlTeW1ib2xzAHJlc29sdmVfbGFiZWxzAEpTX0V2YWxUaGlzAHN0cmluZ3MAaW52YWxpZCBkZXNjcmlwdG9yIGZsYWdzAGludmFsaWQgcmVndWxhciBleHByZXNzaW9uIGZsYWdzAHZhbHVlcwBzZXRNaW51dGVzAGdldE1pbnV0ZXMAc2V0VVRDTWludXRlcwBnZXRVVENNaW51dGVzAHRvbyBtYW55IGNhcHR1cmVzACAgc2hhcGVzAGdldE93blByb3BlcnR5TmFtZXMAZ2NfZnJlZV9jeWNsZXMAYWRkX2V2YWxfdmFyaWFibGVzAHJlc29sdmVfdmFyaWFibGVzAHRvbyBtYW55IGxvY2FsIHZhcmlhYmxlcwB0b28gbWFueSBjbG9zdXJlIHZhcmlhYmxlcwBjb21wYWN0X3Byb3BlcnRpZXMAICBwcm9wZXJ0aWVzAGRlZmluZVByb3BlcnRpZXMAZW50cmllcwBmcm9tRW50cmllcwB0b28gbWFueSByYW5nZXMAaW5jbHVkZXMAaGFzSW5kaWNlcwBzZXRNaWxsaXNlY29uZHMAZ2V0TWlsbGlzZWNvbmRzAHNldFVUQ01pbGxpc2Vjb25kcwBnZXRVVENNaWxsaXNlY29uZHMAc2V0U2Vjb25kcwBnZXRTZWNvbmRzAHNldFVUQ1NlY29uZHMAZ2V0VVRDU2Vjb25kcwBpdGFsaWNzAGFicwBwcm94eTogaW5jb25zaXN0ZW50IGhhcwAlLipzACAoJXMAc2V0ICVzAGdldCAlcwAgICAgYXQgJXMAbm90IGEgJXMAdW5zdXBwb3J0ZWQga2V5d29yZDogJXMAc3Vic3RyAHByb3h5OiBpbmNvbnNpc3RlbnQgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yAHN1cGVyKCkgaXMgb25seSB2YWxpZCBpbiBhIGRlcml2ZWQgY2xhc3MgY29uc3RydWN0b3IAcGFyZW50IGNsYXNzIG11c3QgYmUgY29uc3RydWN0b3IAbm90IGEgY29uc3RydWN0b3IAQXJyYXkgSXRlcmF0b3IAU2V0IEl0ZXJhdG9yAE1hcCBJdGVyYXRvcgBSZWdFeHAgU3RyaW5nIEl0ZXJhdG9yAG5vdCBhbiBBc3luYy1mcm9tLVN5bmMgSXRlcmF0b3IAY2Fubm90IGludm9rZSBhIHJ1bm5pbmcgZ2VuZXJhdG9yAG5vdCBhIGdlbmVyYXRvcgBBc3luY0dlbmVyYXRvcgBzeW50YXggZXJyb3IAU3ludGF4RXJyb3IARXZhbEVycm9yAEludGVybmFsRXJyb3IAQWdncmVnYXRlRXJyb3IAVHlwZUVycm9yAFJhbmdlRXJyb3IAUmVmZXJlbmNlRXJyb3IAVVJJRXJyb3IAZmxvb3IAZm9udGNvbG9yAGFuY2hvcgBmb3IAa2V5Rm9yAGV4cGVjdGluZyBzdXJyb2dhdGUgcGFpcgBhIGRlY2xhcmF0aW9uIGluIHRoZSBoZWFkIG9mIGEgZm9yLSVzIGxvb3AgY2FuJ3QgaGF2ZSBhbiBpbml0aWFsaXplcgAnYXJndW1lbnRzJyBpZGVudGlmaWVyIGlzIG5vdCBhbGxvd2VkIGluIGNsYXNzIGZpZWxkIGluaXRpYWxpemVyAGludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgZ2V0dGVyIG9yIHNldHRlcgBpbnZhbGlkIHNldHRlcgBpbnZhbGlkIGdldHRlcgBmaWx0ZXIAbWlzc2luZyBmb3JtYWwgcGFyYW1ldGVyACJ1c2Ugc3RyaWN0IiBub3QgYWxsb3dlZCBpbiBmdW5jdGlvbiB3aXRoIGRlZmF1bHQgb3IgZGVzdHJ1Y3R1cmluZyBwYXJhbWV0ZXIAaW52YWxpZCBjaGFyYWN0ZXIAdW5leHBlY3RlZCBjaGFyYWN0ZXIAcHJpdmF0ZSBjbGFzcyBmaWVsZCBmb3JiaWRkZW4gYWZ0ZXIgc3VwZXIAaW52YWxpZCByZWRlZmluaXRpb24gb2YgbGV4aWNhbCBpZGVudGlmaWVyACdsZXQnIGlzIG5vdCBhIHZhbGlkIGxleGljYWwgaWRlbnRpZmllcgBpbnZhbGlkIHJlZGVmaW5pdGlvbiBvZiBnbG9iYWwgaWRlbnRpZmllcgB5aWVsZCBpcyBhIHJlc2VydmVkIGlkZW50aWZpZXIAJyVzJyBpcyBhIHJlc2VydmVkIGlkZW50aWZpZXIAb3RoZXIAYXRvbTFfaXNfaW50ZWdlciAmJiBhdG9tMl9pc19pbnRlZ2VyAGNhbm5vdCBjb252ZXJ0IHRvIGJpZ2ludDogbm90IGFuIGludGVnZXIAaXNJbnRlZ2VyAGlzU2FmZUludGVnZXIAYnVmZmVyAFNoYXJlZEFycmF5QnVmZmVyAGNhbm5vdCB1c2UgaWRlbnRpY2FsIEFycmF5QnVmZmVyAGNhbm5vdCBjb252ZXJ0IGJpZ2ludCB0byBudW1iZXIAY2Fubm90IGNvbnZlcnQgc3ltYm9sIHRvIG51bWJlcgBub3QgYSBudW1iZXIAbGluZU51bWJlcgBtYWxmb3JtZWQgdW5pY29kZSBjaGFyAGNsZWFyAHNldFllYXIAZ2V0WWVhcgBzZXRGdWxsWWVhcgBnZXRGdWxsWWVhcgBzZXRVVENGdWxsWWVhcgBnZXRVVENGdWxsWWVhcgBxICE9IHIAdW5leHBlY3RlZCBsaW5lIHRlcm1pbmF0b3IgaW4gcmVnZXhwAHVuZXhwZWN0ZWQgZW5kIG9mIHJlZ2V4cABSZWdFeHAAc3VwAGludmFsaWQgZ3JvdXAAcG9wAGNvbnRpbnVlIG11c3QgYmUgaW5zaWRlIGxvb3AAYmZfbG9naWNfb3AAZHVtcABudW1fa2V5c19jbXAAdXNlIHN0cmlwAG1hcABmbGF0TWFwAFdlYWtNYXAAZXhwZWN0aW5nICd7JyBhZnRlciBccABsb2cxcABkaXZpc2lvbiBieSB6ZXJvADBvAGhhc093bgByZXR1cm4AcHJvbWlzZSBzZWxmIHJlc29sdXRpb24Ab3V0IG9mIG1lbW9yeSBpbiByZWdleHAgZXhlY3V0aW9uAGRlc2NyaXB0aW9uACFtLT5ldmFsX2hhc19leGNlcHRpb24AIW1vZHVsZS0+ZXZhbF9oYXNfZXhjZXB0aW9uAHByb3h5OiBkZWZpbmVQcm9wZXJ0eSBleGNlcHRpb24AanNfYXN5bmNfZ2VuZXJhdG9yX3Jlc29sdmVfZnVuY3Rpb24AanNfY3JlYXRlX2Z1bmN0aW9uAHNldC9hZGQgaXMgbm90IGEgZnVuY3Rpb24AcmV0dXJuIG5vdCBpbiBhIGZ1bmN0aW9uAEFzeW5jR2VuZXJhdG9yRnVuY3Rpb24AY2FsbEV4dGVybmFsRnVuY3Rpb24AQXN5bmNGdW5jdGlvbgBqc19pbm5lcl9tb2R1bGVfZXZhbHVhdGlvbgAhbS0+YXN5bmNfZXZhbHVhdGlvbgBtb2R1bGUtPmFzeW5jX2V2YWx1YXRpb24AaW52YWxpZCBvcGVyYXRpb24AdW5zdXBwb3J0ZWQgb3BlcmF0aW9uAGF3YWl0IGluIGRlZmF1bHQgZXhwcmVzc2lvbgB5aWVsZCBpbiBkZWZhdWx0IGV4cHJlc3Npb24AaW52YWxpZCBkZWNpbWFsIGVzY2FwZSBpbiByZWd1bGFyIGV4cHJlc3Npb24AYmFjayByZWZlcmVuY2Ugb3V0IG9mIHJhbmdlIGluIHJlZ3VsYXIgZXhwcmVzc2lvbgBpbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSBpbiByZWd1bGFyIGV4cHJlc3Npb24AZXhwZWN0ZWQgJ29mJyBvciAnaW4nIGluIGZvciBjb250cm9sIGV4cHJlc3Npb24AdG9vIGNvbXBsaWNhdGVkIGRlc3RydWN0dXJpbmcgZXhwcmVzc2lvbgBleHBlY3RlZCAnfScgYWZ0ZXIgdGVtcGxhdGUgZXhwcmVzc2lvbgB0b1ByZWNpc2lvbgBhc2luAGpvaW4AbWluAGNvcHlXaXRoaW4AdGVtcGxhdGUgbGl0ZXJhbCBjYW5ub3QgYXBwZWFyIGluIGFuIG9wdGlvbmFsIGNoYWluAGNpcmN1bGFyIHByb3RvdHlwZSBjaGFpbgBhc3NpZ24AIXktPnNpZ24AaXNGcm96ZW4AKHBvcyArIGxlbikgPD0gYmNfYnVmX2xlbgB1bmV4cGVjdGVkIGVsbGlwc2lzIHRva2VuAHRoZW4Ac2V0dGVyIGlzIGZvcmJpZGRlbgBudWxsIG9yIHVuZGVmaW5lZCBhcmUgZm9yYmlkZGVuAGF0YW4AbmFuAG5vdCBhIGJvb2xlYW4AQm9vbGVhbgBnY19zY2FuAGJhZCBub3JtYWxpemF0aW9uIGZvcm0ASlNfTmV3U3ltYm9sRnJvbUF0b20AZnJvbQByYW5kb20AdHJpbQBiZl9kaXZyZW0AbS0+Y3ljbGVfcm9vdCA9PSBtAGltdWwAbm90IGEgc3ltYm9sAFN5bWJvbABSZWdFeHAgZXhlYyBtZXRob2QgbXVzdCByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwAcGFyZW50IHByb3RvdHlwZSBtdXN0IGJlIGFuIG9iamVjdCBvciBudWxsAGNhbm5vdCBzZXQgcHJvcGVydHkgJyVzJyBvZiBudWxsAGNhbm5vdCByZWFkIHByb3BlcnR5ICclcycgb2YgbnVsbABOdWxsAGZpbGwAbmV3IEFycmF5QnVmZmVyIGlzIHRvbyBzbWFsbABUeXBlZEFycmF5IGxlbmd0aCBpcyB0b28gc21hbGwAY2FsbABkb3RBbGwAbWF0Y2hBbGwAcmVwbGFjZUFsbABjZWlsAHVwZGF0ZV9sYWJlbABiY19idWZbcG9zXSA9PSBPUF9sYWJlbABldmFsAGludmFsaWQgYmlnaW50IGxpdGVyYWwAaW52YWxpZCBudW1iZXIgbGl0ZXJhbABtYWxmb3JtZWQgZXNjYXBlIHNlcXVlbmNlIGluIHN0cmluZyBsaXRlcmFsAGJmX2V4cF9pbnRlcm5hbABiZl9sb2dfaW50ZXJuYWwAYmZfZnRvYV9pbnRlcm5hbABKU19TZXRQcm9wZXJ0eUludGVybmFsAEpTX0dldE93blByb3BlcnR5TmFtZXNJbnRlcm5hbABfX0pTX0V2YWxJbnRlcm5hbAB0b0V4cG9uZW50aWFsAHNlYWwAZ2xvYmFsAGJsaW5rAHJldHVybiBpbiBhIHN0YXRpYyBpbml0aWFsaXplciBibG9jawBzdGFjawBscmVfZXhlY19iYWNrdHJhY2sAcy0+aXNfd2VhawBiZl9wb3dfdWkAc2V0TW9udGgAZ2V0TW9udGgAc2V0VVRDTW9udGgAZ2V0VVRDTW9udGgAaW52YWxpZCBrZXl3b3JkOiB3aXRoAHN0YXJ0c1dpdGgAZW5kc1dpdGgAcHJvcCA9PSBKU19BVE9NX2xlbmd0aABpbnZhbGlkIGFycmF5IGxlbmd0aABpbnZhbGlkIGFycmF5IGJ1ZmZlciBsZW5ndGgAaW52YWxpZCBsZW5ndGgAaW52YWxpZCBieXRlTGVuZ3RoAE1hdGgAcHVzaABhY29zaABKU19SZXNpemVBdG9tSGFzaABhc2luaABhdGFuaABicmVhayBtdXN0IGJlIGluc2lkZSBsb29wIG9yIHN3aXRjaABtYXRjaABuaXBfY2F0Y2gAc2VhcmNoAGZvckVhY2gAYmZfbG9nAEFycmF5IHRvbyBsb25nAHN0cmluZyB0b28gbG9uZwBBcnJheSBsb28gbG9uZwBzdWJzdHJpbmcAY2Fubm90IGNvbnZlcnQgc3ltYm9sIHRvIHN0cmluZwB1bmV4cGVjdGVkIGVuZCBvZiBzdHJpbmcAbm90IGEgc3RyaW5nAGludmFsaWQgY2hhcmFjdGVyIGluIGEgSlNPTiBzdHJpbmcAdG9TdHJpbmcAdG9EYXRlU3RyaW5nAHRvTG9jYWxlRGF0ZVN0cmluZwB0b1RpbWVTdHJpbmcAdG9Mb2NhbGVUaW1lU3RyaW5nAHRvTG9jYWxlU3RyaW5nAHRvR01UU3RyaW5nAEpTU3RyaW5nAHRvSVNPU3RyaW5nAHRvVVRDU3RyaW5nAGpzX2lubmVyX21vZHVsZV9saW5raW5nAGR1cGxpY2F0ZSBpbXBvcnQgYmluZGluZwBpbnZhbGlkIGltcG9ydCBiaW5kaW5nAHByb21pc2UgaXMgcGVuZGluZwBiaWcAcmVnZXhwIG11c3QgaGF2ZSB0aGUgJ2cnIGZsYWcAb2YAaW5mAEluZgBkaWZmID09IChpbnQ4X3QpZGlmZgBkaWZmID09IChpbnQxNl90KWRpZmYAaHJlZgBnY19kZWNyZWYAZnJlZV92YXJfcmVmAG9wdGltaXplX3Njb3BlX21ha2VfZ2xvYmFsX3JlZgByZXNldF93ZWFrX3JlZgBkZWxldGVfd2Vha19yZWYAb3B0aW1pemVfc2NvcGVfbWFrZV9yZWYAaW5kZXhPZgBsYXN0SW5kZXhPZgB2YWx1ZU9mAHNldFByb3RvdHlwZU9mAGdldFByb3RvdHlwZU9mAGlzUHJvdG90eXBlT2YAJS4qZgBmb250c2l6ZQBuZXdfc2l6ZSA8PSBzaC0+cHJvcF9zaXplAGRlc2NyIDwgcnQtPmF0b21fc2l6ZQBhdG9tIDwgcnQtPmF0b21fc2l6ZQBjb21wdXRlX3N0YWNrX3NpemUAbiA8IGJ1Zl9zaXplAG5vcm1hbGl6ZQBjcl9yZWdleHBfY2Fub25pY2FsaXplAGZyZWV6ZQByZXNvbHZlAHRvUHJpbWl0aXZlAHB1dF9sdmFsdWUAdW5rbm93biB1bmljb2RlIHByb3BlcnR5IHZhbHVlAHJlc3QgZWxlbWVudCBjYW5ub3QgaGF2ZSBhIGRlZmF1bHQgdmFsdWUAaW52YWxpZCByZXQgdmFsdWUAX19KU19BdG9tVG9WYWx1ZQBfX3F1b3RlAGlzRmluaXRlAGRlbGV0ZQBjcmVhdGUAc2V0RGF0ZQBnZXREYXRlAHNldFVUQ0RhdGUAZ2V0VVRDRGF0ZQBJbnZhbGlkIERhdGUAcmV2ZXJzZQBwYXJzZQBwcm94eSBwcmV2ZW50RXh0ZW5zaW9ucyBoYW5kbGVyIHJldHVybmVkIGZhbHNlAG1vZHVsZSBuYW1lc3BhY2UgcHJvcGVydGllcyBoYXZlIHdyaXRhYmxlID0gZmFsc2UAUHJvbWlzZQB0b0xvd2VyQ2FzZQB0b0xvY2FsZUxvd2VyQ2FzZQB0b1VwcGVyQ2FzZQB0b0xvY2FsZVVwcGVyQ2FzZQBpZ25vcmVDYXNlAGxvY2FsZUNvbXBhcmUAcHJveHk6IGluY29uc2lzdGVudCBwcm90b3R5cGUAcHJveHk6IGJhZCBwcm90b3R5cGUAbm90IGEgcHJvdG90eXBlAGludmFsaWQgb2JqZWN0IHR5cGUAdW5lc2NhcGUAbm9uZQByZXN0IGVsZW1lbnQgbXVzdCBiZSB0aGUgbGFzdCBvbmUAbXVsdGlsaW5lACAgcGMybGluZQBhc3luY19mdW5jX3Jlc3VtZQBzb21lAEpTX0ZyZWVSdW50aW1lAEpTUnVudGltZQBzZXRUaW1lAGdldFRpbWUAYXN5bmNfZnVuY19mcmVlX2ZyYW1lAHNldF9vYmplY3RfbmFtZQBleHBlY3RpbmcgcHJvcGVydHkgbmFtZQB1bmtub3duIHVuaWNvZGUgcHJvcGVydHkgbmFtZQBpbnZhbGlkIHByb3BlcnR5IG5hbWUAZHVwbGljYXRlIF9fcHJvdG9fXyBwcm9wZXJ0eSBuYW1lAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIHBhcmFtZXRlciBuYW1lAGV4cGVjdGluZyBncm91cCBuYW1lAGR1cGxpY2F0ZSBncm91cCBuYW1lAGludmFsaWQgZ3JvdXAgbmFtZQBkdXBsaWNhdGUgbGFiZWwgbmFtZQBpbnZhbGlkIGZpcnN0IGNoYXJhY3RlciBvZiBwcml2YXRlIG5hbWUAaW52YWxpZCBsZXhpY2FsIHZhcmlhYmxlIG5hbWUAaW52YWxpZCBtZXRob2QgbmFtZQBleHBlY3RpbmcgZmllbGQgbmFtZQBpbnZhbGlkIGZpZWxkIG5hbWUAY2xhc3Mgc3RhdGVtZW50IHJlcXVpcmVzIGEgbmFtZQBmaWxlTmFtZQBqc19saW5rX21vZHVsZQBqc19ldmFsdWF0ZV9tb2R1bGUAbW9kdWxlLT5jeWNsZV9yb290ID09IG1vZHVsZQBjb21waWxlAG9iamVjdCBpcyBub3QgZXh0ZW5zaWJsZQBwcm94eTogaW5jb25zaXN0ZW50IGlzRXh0ZW5zaWJsZQBjYW5ub3QgaGF2ZSBzZXR0ZXIvZ2V0dGVyIGFuZCB2YWx1ZSBvciB3cml0YWJsZQBwcm9wZXJ0eSBpcyBub3QgY29uZmlndXJhYmxlAHZhbHVlIGlzIG5vdCBpdGVyYWJsZQBwcm9wZXJ0eUlzRW51bWVyYWJsZQBtaXNzaW5nIGluaXRpYWxpemVyIGZvciBjb25zdCB2YXJpYWJsZQBsZXhpY2FsIHZhcmlhYmxlAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIGEgdmFyaWFibGUAcmV2b2NhYmxlAHN0cmlrZQBtcF9kaXZub3JtX2xhcmdlAGludmFsaWQgY2xhc3MgcmFuZ2UAbWVzc2FnZQBpbnZhbGlkIGx2YWx1ZSBpbiBzdHJpY3QgbW9kZQBpbnZhbGlkIHZhcmlhYmxlIG5hbWUgaW4gc3RyaWN0IG1vZGUAY2Fubm90IGRlbGV0ZSBhIGRpcmVjdCByZWZlcmVuY2UgaW4gc3RyaWN0IG1vZGUAb2N0YWwgZXNjYXBlIHNlcXVlbmNlcyBhcmUgbm90IGFsbG93ZWQgaW4gc3RyaWN0IG1vZGUAb2N0YWwgbGl0ZXJhbHMgYXJlIGRlcHJlY2F0ZWQgaW4gc3RyaWN0IG1vZGUAdW5pY29kZQAgIGJ5dGVjb2RlAEpTRnVuY3Rpb25CeXRlY29kZQBza2lwX2RlYWRfY29kZQBpbnZhbGlkIGFyZ3VtZW50IG5hbWUgaW4gc3RyaWN0IGNvZGUAaW52YWxpZCBmdW5jdGlvbiBuYW1lIGluIHN0cmljdCBjb2RlAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIGdsb2JhbCBpZGVudGlmaWVyIGluIG1vZHVsZSBjb2RlAGltcG9ydC5tZXRhIG9ubHkgdmFsaWQgaW4gbW9kdWxlIGNvZGUAZnJvbUNoYXJDb2RlAGludmFsaWQgZm9yIGluL29mIGxlZnQgaGFuZC1zaWRlAGludmFsaWQgYXNzaWdubWVudCBsZWZ0LWhhbmQgc2lkZQByZWR1Y2UAc291cmNlACd0aGlzJyBjYW4gYmUgaW5pdGlhbGl6ZWQgb25seSBvbmNlAHByb3BlcnR5IGNvbnN0cnVjdG9yIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UAaW52YWxpZCBVVEYtOCBzZXF1ZW5jZQBjaXJjdWxhciByZWZlcmVuY2UAc2xpY2UAc3BsaWNlAHJhY2UAcmVwbGFjZQAlKy4qZQB1bmV4cGVjdGVkICdhd2FpdCcga2V5d29yZAB1bmV4cGVjdGVkICd5aWVsZCcga2V5d29yZABtYXBfZGVjcmVmX3JlY29yZABpdGVyYXRvciBkb2VzIG5vdCBoYXZlIGEgdGhyb3cgbWV0aG9kAG9iamVjdCBuZWVkcyB0b0lTT1N0cmluZyBtZXRob2QAJ3N1cGVyJyBpcyBvbmx5IHZhbGlkIGluIGEgbWV0aG9kAGZyb3VuZABfX2JmX3JvdW5kAGJyZWFrL2NvbnRpbnVlIGxhYmVsIG5vdCBmb3VuZABvdXQgb2YgYm91bmQAZmluZABiaW5kAGludmFsaWQgaW5kZXggZm9yIGFwcGVuZABleHRyYW5lb3VzIGNoYXJhY3RlcnMgYXQgdGhlIGVuZAB1bmV4cGVjdGVkIGRhdGEgYXQgdGhlIGVuZAB1bmV4cGVjdGVkIGVuZABpbnZhbGlkIGluY3JlbWVudC9kZWNyZW1lbnQgb3BlcmFuZABpbnZhbGlkICdpbnN0YW5jZW9mJyByaWdodCBvcGVyYW5kAGludmFsaWQgJ2luJyBvcGVyYW5kAHRyaW1FbmQAcGFkRW5kAGJvbGQAJWxsZABnY19kZWNyZWZfY2hpbGQAcmVzb2x2ZV9zY29wZV9wcml2YXRlX2ZpZWxkAGNhbm5vdCBkZWxldGUgYSBwcml2YXRlIGNsYXNzIGZpZWxkAGV4cGVjdGluZyA8YnJhbmQ+IHByaXZhdGUgZmllbGQAJXMgaXMgbm90IGluaXRpYWxpemVkAGZpeGVkAHRvRml4ZWQAc2V0X29iamVjdF9uYW1lX2NvbXB1dGVkAHJlZ2V4IG5vdCBzdXBwb3J0ZWQAZXZhbCBpcyBub3Qgc3VwcG9ydGVkAFJlZ0V4cCBhcmUgbm90IHN1cHBvcnRlZAB0b1NvcnRlZABpbnRlcnJ1cHRlZAAhcy0+aXNfY29tcGxldGVkACVzIG9iamVjdCBleHBlY3RlZABpZGVudGlmaWVyIGV4cGVjdGVkAGJ5dGVjb2RlIGZ1bmN0aW9uIGV4cGVjdGVkAHN0cmluZyBleHBlY3RlZABmcm9tIGNsYXVzZSBleHBlY3RlZABmdW5jdGlvbiBuYW1lIGV4cGVjdGVkAHZhcmlhYmxlIG5hbWUgZXhwZWN0ZWQAbWV0YSBleHBlY3RlZABqc19hc3luY19tb2R1bGVfZXhlY3V0aW9uX3JlamVjdGVkAGpzX3NldF9tb2R1bGVfZXZhbHVhdGVkAG1lbW9yeSBhbGxvY2F0ZWQAbWVtb3J5IHVzZWQAdG9SZXZlcnNlZABkZXJpdmVkIGNsYXNzIGNvbnN0cnVjdG9yIG11c3QgcmV0dXJuIGFuIG9iamVjdCBvciB1bmRlZmluZWQAY2Fubm90IHNldCBwcm9wZXJ0eSAnJXMnIG9mIHVuZGVmaW5lZABjYW5ub3QgcmVhZCBwcm9wZXJ0eSAnJXMnIG9mIHVuZGVmaW5lZABmbGFncyBtdXN0IGJlIHVuZGVmaW5lZABVbmRlZmluZWQAcHJpdmF0ZSBjbGFzcyBmaWVsZCBpcyBhbHJlYWR5IGRlZmluZWQAJyVzJyBpcyBub3QgZGVmaW5lZABncm91cCBuYW1lIG5vdCBkZWZpbmVkAGlzV2VsbEZvcm1lZAB0b1dlbGxGb3JtZWQAYWxsU2V0dGxlZABqc19hc3luY19tb2R1bGVfZXhlY3V0aW9uX2Z1bGZpbGxlZABjYW5ub3QgYmUgY2FsbGVkAGlzU2VhbGVkACFzaC0+aXNfaGFzaGVkAEFycmF5QnVmZmVyIGlzIGRldGFjaGVkAGpzX2FycmF5X3RvU3BsaWNlZABhZGQAJSswN2QAJTA0ZAAlMDJkJTAyZABwJStkACVjJStkACUwMmQvJTAyZC8lMCpkACUuM3MgJS4zcyAlMDJkICUwKmQAcCVkACVjJWQAOiVkAGludmFsaWQgdGhyb3cgdmFyIHR5cGUgJWQAc2MAanNfZGVmX21hbGxvYwB0cnVuYwBnYwBleGVjAGJmX2ludGVnZXJfdG9fcmFkaXhfcmVjAC90bXAvcXVpY2tqcy9xdWlja2pzLmMAL3RtcC9xdWlja2pzL2xpYnJlZ2V4cC5jAC90bXAvcXVpY2tqcy9saWJiZi5jAC90bXAvcXVpY2tqcy9saWJ1bmljb2RlLmMAc3ViAHByb21pc2VfcmVhY3Rpb25fam9iAGpzX3Byb21pc2VfcmVzb2x2ZV90aGVuYWJsZV9qb2IAMGIAciAhPSBhICYmIHIgIT0gYgBxICE9IGEgJiYgcSAhPSBiAHJ3YQByICE9IGEAX19sb29rdXBTZXR0ZXJfXwBfX2RlZmluZVNldHRlcl9fAF9fbG9va3VwR2V0dGVyX18AX19kZWZpbmVHZXR0ZXJfXwBfX3Byb3RvX18AW1N5bWJvbC5zcGxpdF0AW1N5bWJvbC5zcGVjaWVzXQBbU3ltYm9sLml0ZXJhdG9yXQBbU3ltYm9sLmFzeW5jSXRlcmF0b3JdAFtTeW1ib2wubWF0Y2hBbGxdAFtTeW1ib2wubWF0Y2hdAFtTeW1ib2wuc2VhcmNoXQBbU3ltYm9sLnRvU3RyaW5nVGFnXQBbU3ltYm9sLnRvUHJpbWl0aXZlXQBbdW5zdXBwb3J0ZWQgdHlwZV0AW2Z1bmN0aW9uIGJ5dGVjb2RlXQBbU3ltYm9sLmhhc0luc3RhbmNlXQBbU3ltYm9sLnJlcGxhY2VdAFsAJTAyZDolMDJkOiUwMmQuJTAzZFoAUE9TSVRJVkVfSU5GSU5JVFkATkVHQVRJVkVfSU5GSU5JVFkAcC0+Y2xhc3NfaWQgPT0gSlNfQ0xBU1NfQVJSQVkAc3RhY2tfbGVuIDwgUE9QX1NUQUNLX0xFTl9NQVgALSUwMmQtJTAyZFQASlNfQXRvbUdldFN0clJUAG9wY29kZSA8IFJFT1BfQ09VTlQASlNfVkFMVUVfR0VUX1RBRyhmdW5jX3JldCkgPT0gSlNfVEFHX0lOVABCWVRFU19QRVJfRUxFTUVOVAAlMDJkOiUwMmQ6JTAyZCBHTVQASlNfVkFMVUVfR0VUX1RBRyhzZi0+Y3VyX2Z1bmMpID09IEpTX1RBR19PQkpFQ1QAdmFyX2tpbmQgPT0gSlNfVkFSX1BSSVZBVEVfU0VUVEVSAE1BWF9TQUZFX0lOVEVHRVIATUlOX1NBRkVfSU5URUdFUgBhc1VpbnROAGFzSW50TgBpc05hTgBEYXRlIHZhbHVlIGlzIE5hTgB0b0pTT04ARVBTSUxPTgBwLT5nY19vYmpfdHlwZSA9PSBKU19HQ19PQkpfVFlQRV9KU19PQkpFQ1QgfHwgcC0+Z2Nfb2JqX3R5cGUgPT0gSlNfR0NfT0JKX1RZUEVfRlVOQ1RJT05fQllURUNPREUgfHwgcC0+Z2Nfb2JqX3R5cGUgPT0gSlNfR0NfT0JKX1RZUEVfQVNZTkNfRlVOQ1RJT04ATkFOACUwMmQ6JTAyZDolMDJkICVjTQBzdGFja190b3AgPT0gTlVMTABzLT5sYWJlbF9zbG90c1tsYWJlbF0uZmlyc3RfcmVsb2MgPT0gTlVMTABsYWJlbF9zbG90c1tpXS5maXJzdF9yZWxvYyA9PSBOVUxMAHBycyAhPSBOVUxMAHNmLT5jdXJfc3AgIT0gTlVMTABzZiAhPSBOVUxMAG1yMSAhPSBOVUxMAHZhcl9raW5kICE9IEpTX1ZBUl9OT1JNQUwAYi0+ZnVuY19raW5kID09IEpTX0ZVTkNfTk9STUFMAGVuY29kZVVSSQBkZWNvZGVVUkkAUEkAc3BlY2lhbCA9PSBQVVRfTFZBTFVFX05PS0VFUCB8fCBzcGVjaWFsID09IFBVVF9MVkFMVUVfTk9LRUVQX0RFUFRIAHMtPnN0YXRlID09IEpTX0FTWU5DX0dFTkVSQVRPUl9TVEFURV9FWEVDVVRJTkcAbTEtPnN0YXR1cyA9PSBKU19NT0RVTEVfU1RBVFVTX0VWQUxVQVRJTkcAbTEtPnN0YXR1cyA9PSBKU19NT0RVTEVfU1RBVFVTX0xJTktJTkcAcHJlYyAhPSBCRl9QUkVDX0lORgBwcmVjMSAhPSBCRl9QUkVDX0lORgAwMTIzNDU2Nzg5QUJDREVGAFNJWkUATUFYX1ZBTFVFAE1JTl9WQUxVRQBOQU1FAGV2YWxfdHlwZSA9PSBKU19FVkFMX1RZUEVfR0xPQkFMIHx8IGV2YWxfdHlwZSA9PSBKU19FVkFMX1RZUEVfTU9EVUxFAExPRzJFAExPRzEwRQBzLT5zdGF0ZSA9PSBKU19BU1lOQ19HRU5FUkFUT1JfU1RBVEVfQVdBSVRJTkdfUkVUVVJOIHx8IHMtPnN0YXRlID09IEpTX0FTWU5DX0dFTkVSQVRPUl9TVEFURV9DT01QTEVURUQAbS0+c3RhdHVzID09IEpTX01PRFVMRV9TVEFUVVNfVU5MSU5LRUQgfHwgbS0+c3RhdHVzID09IEpTX01PRFVMRV9TVEFUVVNfTElOS0VEIHx8IG0tPnN0YXR1cyA9PSBKU19NT0RVTEVfU1RBVFVTX0VWQUxVQVRJTkdfQVNZTkMgfHwgbS0+c3RhdHVzID09IEpTX01PRFVMRV9TVEFUVVNfRVZBTFVBVEVEAG0xLT5zdGF0dXMgPT0gSlNfTU9EVUxFX1NUQVRVU19FVkFMVUFUSU5HIHx8IG0xLT5zdGF0dXMgPT0gSlNfTU9EVUxFX1NUQVRVU19FVkFMVUFUSU5HX0FTWU5DIHx8IG0xLT5zdGF0dXMgPT0gSlNfTU9EVUxFX1NUQVRVU19FVkFMVUFURUQAbTEtPnN0YXR1cyA9PSBKU19NT0RVTEVfU1RBVFVTX0xJTktJTkcgfHwgbTEtPnN0YXR1cyA9PSBKU19NT0RVTEVfU1RBVFVTX0xJTktFRCB8fCBtMS0+c3RhdHVzID09IEpTX01PRFVMRV9TVEFUVVNfRVZBTFVBVElOR19BU1lOQyB8fCBtMS0+c3RhdHVzID09IEpTX01PRFVMRV9TVEFUVVNfRVZBTFVBVEVEAG0tPnN0YXR1cyA9PSBKU19NT0RVTEVfU1RBVFVTX0xJTktFRABtLT5zdGF0dXMgPT0gSlNfTU9EVUxFX1NUQVRVU19VTkxJTktFRABVVEMAbS0+c3RhdHVzID09IEpTX01PRFVMRV9TVEFUVVNfRVZBTFVBVElOR19BU1lOQwBtb2R1bGUtPnN0YXR1cyA9PSBKU19NT0RVTEVfU1RBVFVTX0VWQUxVQVRJTkdfQVNZTkMAPGlucHV0PgA8aW5pdFNjcmlwdD4APGV2YWxTY3JpcHQ+ADxzZXQ+ADxhbm9ueW1vdXM+ADxjb21tRnVuPgA8Y2FsbEV4dGVybmFsRnVuY3Rpb24+ADxudWxsPgBiaWdpbnQgb3BlcmFuZHMgYXJlIGZvcmJpZGRlbiBmb3IgPj4+ACZxdW90OwBzZXRVaW50OABnZXRVaW50OABzZXRJbnQ4AGdldEludDgAbWFsZm9ybWVkIFVURi04AHJhZGl4IG11c3QgYmUgYmV0d2VlbiAyIGFuZCAzNgBzZXRVaW50MTYAZ2V0VWludDE2AHNldEludDE2AGdldEludDE2AGFyZ2MgPT0gNQBzZXRCaWdVaW50NjQAZ2V0QmlnVWludDY0AHNldEJpZ0ludDY0AGdldEJpZ0ludDY0AHNldEZsb2F0NjQAZ2V0RmxvYXQ2NABhcmdjID09IDMAYXRhbjIAbG9nMgBTUVJUMV8yAFNRUlQyAExOMgBjbHozMgBzZXRVaW50MzIAZ2V0VWludDMyAHNldEludDMyAGdldEludDMyAHNldEZsb2F0MzIAZ2V0RmxvYXQzMgBzdGFja19sZW4gPj0gMgBKU19BdG9tSXNOdW1lcmljSW5kZXgxAGpzX2ZjdnQxAEpTX0NvbXBhY3RCaWdJbnQxAGV4cG0xAHIgIT0gYTEgJiYgciAhPSBiMQBscy0+YWRkciA9PSAtMQBucSA+PSAxAHN0YWNrX2xlbiA+PSAxAHAtPmhlYWRlci5yZWZfY291bnQgPT0gMQBwLT5zaGFwZS0+aGVhZGVyLnJlZl9jb3VudCA9PSAxAHN0YWNrX2xlbiA9PSAxAGpzX2ZyZWVfc2hhcGUwAGxvZzEwAExOMTAAcC0+cmVmX2NvdW50ID4gMAB2YXJfcmVmLT5oZWFkZXIucmVmX2NvdW50ID4gMABtLT5wZW5kaW5nX2FzeW5jX2RlcGVuZGVuY2llcyA+IDAAc3RhY2tfc2l6ZSA+IDAAY3Bvb2xfaWR4ID49IDAAcnQtPmF0b21fY291bnQgPj0gMABscy0+cmVmX2NvdW50ID49IDAAcy0+aXNfZXZhbCB8fCBzLT5jbG9zdXJlX3Zhcl9jb3VudCA9PSAwAHAtPnJlZl9jb3VudCA9PSAwAGN0eC0+aGVhZGVyLnJlZl9jb3VudCA9PSAwAHNoLT5oZWFkZXIucmVmX2NvdW50ID09IDAAcC0+bWFyayA9PSAwAChwci0+dS5pbml0LnJlYWxtX2FuZF9pZCAmIDMpID09IDAAKG5ld19oYXNoX3NpemUgJiAobmV3X2hhc2hfc2l6ZSAtIDEpKSA9PSAwAGkgIT0gMABzaXplICE9IDAAXiRcLiorPygpW117fXwvADwvADAuAG1pc3NpbmcgYmluZGluZyBwYXR0ZXJuLi4uAGJpZ2ludCBhcmd1bWVudCB3aXRoIHVuYXJ5ICsAYXN5bmMgZnVuY3Rpb24gKgAKfSkAbGlzdF9lbXB0eSgmcnQtPmdjX29ial9saXN0KQBqID09IChzaC0+cHJvcF9jb3VudCAtIHNoLT5kZWxldGVkX3Byb3BfY291bnQpACFfX0pTX0F0b21Jc1RhZ2dlZEludChkZXNjcikAIWF0b21faXNfZnJlZShwKQAobnVsbCkAIChuYXRpdmUpAGpzX2NsYXNzX2hhc19ieXRlY29kZShwLT5jbGFzc19pZCkAbmlwX2NhdGNoOiBubyBjYXRjaCBvcCAocGM9JWQpAGluY29uc2lzdGVudCBjYXRjaCBwb3NpdGlvbjogJWQgJWQgKHBjPSVkKQBpbmNvbnNpc3RlbnQgc3RhY2sgc2l6ZTogJWQgJWQgKHBjPSVkKQBieXRlY29kZSBidWZmZXIgb3ZlcmZsb3cgKG9wPSVkLCBwYz0lZCkAc3RhY2sgb3ZlcmZsb3cgKG9wPSVkLCBwYz0lZCkAc3RhY2sgdW5kZXJmbG93IChvcD0lZCwgcGM9JWQpAGludmFsaWQgb3Bjb2RlIChvcD0lZCwgcGM9JWQpACg\u002FOikAaWR4IDwgY291bnRvZihjYXNlX2NvbnZfdGFibGUxKQBubyBmdW5jdGlvbiBmaWxlbmFtZSBmb3IgaW1wb3J0KCkALV8uIX4qJygpACBhbm9ueW1vdXMoAFN5bWJvbCgAZXhwZWN0aW5nICd9JwBjbGFzcyBjb25zdHJ1Y3RvcnMgbXVzdCBiZSBpbnZva2VkIHdpdGggJ25ldycAZXhwZWN0aW5nICdhcycAdW5leHBlY3RlZCB0b2tlbiBpbiBleHByZXNzaW9uOiAnJS4qcycAdW5leHBlY3RlZCB0b2tlbjogJyUuKnMnAHJlZGVjbGFyYXRpb24gb2YgJyVzJwBkdXBsaWNhdGUgZXhwb3J0ZWQgbmFtZSAnJXMnAGNpcmN1bGFyIHJlZmVyZW5jZSB3aGVuIGxvb2tpbmcgZm9yIGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnAENvdWxkIG5vdCBmaW5kIGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnAGNvdWxkIG5vdCBsb2FkIG1vZHVsZSAnJXMnAGNhbm5vdCBkZWZpbmUgdmFyaWFibGUgJyVzJwB1bmRlZmluZWQgcHJpdmF0ZSBmaWVsZCAnJXMnAHVuc3VwcG9ydGVkIHJlZmVyZW5jZSB0byAnc3VwZXInAGludmFsaWQgdXNlIG9mICdzdXBlcicAJ2ZvciBhd2FpdCcgbG9vcCBzaG91bGQgYmUgdXNlZCB3aXRoICdvZicAJ2ZvciBvZicgZXhwcmVzc2lvbiBjYW5ub3Qgc3RhcnQgd2l0aCAnYXN5bmMnAGV4cGVjdGluZyAnJWMnAHVucGFyZW50aGVzaXplZCB1bmFyeSBleHByZXNzaW9uIGNhbid0IGFwcGVhciBvbiB0aGUgbGVmdC1oYW5kIHNpZGUgb2YgJyoqJwBpbnZhbGlkIHVzZSBvZiAnaW1wb3J0KCknAGV4cGVjdGluZyAlJQA7Lz86QCY9KyQsIwA9IgBzZXQgAGdldCAAW29iamVjdCAAYXN5bmMgZnVuY3Rpb24gAGJvdW5kIAAlLjNzLCAlMDJkICUuM3MgJTAqZCAAYXN5bmMgADogACAgICAgICAgICAACikgewoACkpTT2JqZWN0IGNsYXNzZXMKACUtMjBzICU4cyAlOHMKACAgJTVkICAlMi4wZCAlcwoAICAlM3UgKyAlLTJ1ICAlcwoAICBtYWxsb2NfdXNhYmxlX3NpemUgdW5hdmFpbGFibGUKACUtMjBzICU4bGxkCgAlLTIwcyAlOGxsZCAlOGxsZAoAX19KU19GcmVlVmFsdWU6IHVua25vd24gdGFnPSVkCgAlLTIwcyAlOGxsZCAlOGxsZCAgKCUwLjFmIHBlciBmYXN0IGFycmF5KQoAJS0yMHMgJThsbGQgJThsbGQgICglMC4xZiBwZXIgb2JqZWN0KQoAJS0yMHMgJThsbGQgJThsbGQgICglMC4xZiBwZXIgZnVuY3Rpb24pCgAlLTIwcyAlOGxsZCAlOGxsZCAgKCUwLjFmIHBlciBhdG9tKQoAJS0yMHMgJThsbGQgJThsbGQgICglMC4xZiBwZXIgYmxvY2spCgAlLTIwcyAlOGxsZCAlOGxsZCAgKCVkIG92ZXJoZWFkLCAlMC4xZiBhdmVyYWdlIHNsYWNrKQoAJS0yMHMgJThsbGQgJThsbGQgICglMC4xZiBwZXIgc3RyaW5nKQoAJS0yMHMgJThsbGQgJThsbGQgICglMC4xZiBwZXIgc2hhcGUpCgBRdWlja0pTIG1lbW9yeSB1c2FnZSAtLSAxLjAuMCB2ZXJzaW9uLCAlZC1iaXQsIG1hbGxvYyBsaW1pdDogJWxsZAoKAAAAAJIAQfyWAQsNkwAAAEwAAABNAAAAlABBlJcBCz2VAAAATgAAAE8AAACWAAAATgAAAE8AAACXAAAATgAAAE8AAACYAAAATgAAAE8AAACZAAAATAAAAE0AAACZAEHclwELDZwAAABOAAAATwAAAJIAQfSXAQv9Ap0AAABQAAAAUQAAAJ0AAABSAAAAUwAAAJ0AAABUAAAAVQAAAJ0AAABWAAAAVwAAAJ4AAABSAAAAUwAAAJ8AAABYAAAAWQAAAKAAAABaAAAAAAAAAKEAAABbAAAAAAAAAKIAAABbAAAAAAAAAKMAAABcAAAAXQAAAKQAAABcAAAAXQAAAKUAAABcAAAAXQAAAKYAAABcAAAAXQAAAKcAAABcAAAAXQAAAKgAAABcAAAAXQAAAKkAAABcAAAAXQAAAKoAAABcAAAAXQAAAKsAAABcAAAAXQAAAKwAAABcAAAAXQAAAK0AAABcAAAAXQAAAK4AAABcAAAAXQAAAK8AAABOAAAATwAAALAAAABeAAAAXwAAALEAAABeAAAAXwAAALIAAABeAAAAXwAAALMAAABeAAAAXwAAALQAAABgAAAAYQAAALUAAABgAAAAYQAAALYAAABiAAAAYwAAALcAAABiAAAAYwAAALgAAABkAAAAZQAAALkAAABmAAAAZwBBgJsBCwFoAEGQmwELDWkAAAAAAAAAagAAAGsAQbybAQsBbABByJsBCw1tAAAAbgAAAG8AAABwAEHgmwELtxvsKQAAQAEAACUKAAD4AAAAuA8AADAAAABaJQAAEAAAADkuAABYAAAAkgAAAHEAAAByAAAAcwAAAHQAAAB1AAAAdgAAAHcAAAB4AAAAeQAAAFBdAAAQXgAAwF4AABBfAABQXwAAcF8AAAwLBQQCAgAAuwAAAHoAAAB7AAAAvAAAAHwAAAB9AAAAvQAAAHwAAAB9AAAAvgAAAFIAAABTAAAAvwAAAH4AAAB\u002FAAAAwAAAAH4AAAB\u002FAAAALwAAAIAAAACBAAAAwQAAAFIAAABTAAAAwgAAAIIAAACDAAAAAAAAAOkWAAAaFwAAJRcAAN0WAAAQFwAANBcAAPMWAAABFwAAY29weVdpdGhpbgBlbnRyaWVzAGZpbGwAZmluZABmaW5kSW5kZXgAZmluZExhc3QAZmluZExhc3RJbmRleABmbGF0AGZsYXRNYXAAaW5jbHVkZXMAa2V5cwB0b1JldmVyc2VkAHRvU29ydGVkAHRvU3BsaWNlZAB2YWx1ZXMAAAAAAAEBAgIDAwIDAAAAAAAAbnVsbABmYWxzZQB0cnVlAGlmAGVsc2UAcmV0dXJuAHZhcgB0aGlzAGRlbGV0ZQB2b2lkAHR5cGVvZgBuZXcAaW4AaW5zdGFuY2VvZgBkbwB3aGlsZQBmb3IAYnJlYWsAY29udGludWUAc3dpdGNoAGNhc2UAZGVmYXVsdAB0aHJvdwB0cnkAY2F0Y2gAZmluYWxseQBmdW5jdGlvbgBkZWJ1Z2dlcgB3aXRoAGNsYXNzAGNvbnN0AGVudW0AZXhwb3J0AGV4dGVuZHMAaW1wb3J0AHN1cGVyAGltcGxlbWVudHMAaW50ZXJmYWNlAGxldABwYWNrYWdlAHByaXZhdGUAcHJvdGVjdGVkAHB1YmxpYwBzdGF0aWMAeWllbGQAYXdhaXQAAGxlbmd0aABmaWxlTmFtZQBsaW5lTnVtYmVyAG1lc3NhZ2UAY2F1c2UAZXJyb3JzAHN0YWNrAG5hbWUAdG9TdHJpbmcAdG9Mb2NhbGVTdHJpbmcAdmFsdWVPZgBldmFsAHByb3RvdHlwZQBjb25zdHJ1Y3RvcgBjb25maWd1cmFibGUAd3JpdGFibGUAZW51bWVyYWJsZQB2YWx1ZQBnZXQAc2V0AG9mAF9fcHJvdG9fXwB1bmRlZmluZWQAbnVtYmVyAGJvb2xlYW4Ac3RyaW5nAG9iamVjdABzeW1ib2wAaW50ZWdlcgB1bmtub3duAGFyZ3VtZW50cwBjYWxsZWUAY2FsbGVyADxldmFsPgA8cmV0PgA8dmFyPgA8YXJnX3Zhcj4APHdpdGg+AGxhc3RJbmRleAB0YXJnZXQAaW5kZXgAaW5wdXQAZGVmaW5lUHJvcGVydGllcwBhcHBseQBqb2luAGNvbmNhdABzcGxpdABjb25zdHJ1Y3QAZ2V0UHJvdG90eXBlT2YAc2V0UHJvdG90eXBlT2YAaXNFeHRlbnNpYmxlAHByZXZlbnRFeHRlbnNpb25zAGhhcwBkZWxldGVQcm9wZXJ0eQBkZWZpbmVQcm9wZXJ0eQBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IAb3duS2V5cwBhZGQAZG9uZQBuZXh0AHZhbHVlcwBzb3VyY2UAZmxhZ3MAZ2xvYmFsAHVuaWNvZGUAcmF3AG5ldy50YXJnZXQAdGhpcy5hY3RpdmVfZnVuYwA8aG9tZV9vYmplY3Q+ADxjb21wdXRlZF9maWVsZD4APHN0YXRpY19jb21wdXRlZF9maWVsZD4APGNsYXNzX2ZpZWxkc19pbml0PgA8YnJhbmQ+ACNjb25zdHJ1Y3RvcgBhcwBmcm9tAG1ldGEAKmRlZmF1bHQqACoATW9kdWxlAHRoZW4AcmVzb2x2ZQByZWplY3QAcHJvbWlzZQBwcm94eQByZXZva2UAYXN5bmMAZXhlYwBncm91cHMAaW5kaWNlcwBzdGF0dXMAcmVhc29uAGdsb2JhbFRoaXMAYmlnaW50AG5vdC1lcXVhbAB0aW1lZC1vdXQAb2sAdG9KU09OAE9iamVjdABBcnJheQBFcnJvcgBOdW1iZXIAU3RyaW5nAEJvb2xlYW4AU3ltYm9sAEFyZ3VtZW50cwBNYXRoAEpTT04ARGF0ZQBGdW5jdGlvbgBHZW5lcmF0b3JGdW5jdGlvbgBGb3JJbkl0ZXJhdG9yAFJlZ0V4cABBcnJheUJ1ZmZlcgBTaGFyZWRBcnJheUJ1ZmZlcgBVaW50OENsYW1wZWRBcnJheQBJbnQ4QXJyYXkAVWludDhBcnJheQBJbnQxNkFycmF5AFVpbnQxNkFycmF5AEludDMyQXJyYXkAVWludDMyQXJyYXkAQmlnSW50NjRBcnJheQBCaWdVaW50NjRBcnJheQBGbG9hdDMyQXJyYXkARmxvYXQ2NEFycmF5AERhdGFWaWV3AEJpZ0ludABNYXAAU2V0AFdlYWtNYXAAV2Vha1NldABNYXAgSXRlcmF0b3IAU2V0IEl0ZXJhdG9yAEFycmF5IEl0ZXJhdG9yAFN0cmluZyBJdGVyYXRvcgBSZWdFeHAgU3RyaW5nIEl0ZXJhdG9yAEdlbmVyYXRvcgBQcm94eQBQcm9taXNlAFB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\u002F\u002F\u002F\u002F\u002F7g3AAABAwAA3RsAAAAAAACENQAAAwABAAEBAACYAAAATBUAAAMAAQABAQAAmgAAAB4oAAADAAEAAQEAAJsAAADaGgAAAwABAAABAACcAAAAVicAAAECAQCdAAAAAAAAAEYkAAADAAEAAQEAAJ4AAAB7EwAAAwABAAABAACfAAAACBAAAAMJAAB7EwAA\u002F\u002F\u002F\u002F\u002F143AAADCQAAexMAAP\u002F\u002F\u002F\u002F98FAAAAwAJAAABAACfAAAAuDcAAAEDAADEDgAAAAAAAGUOAAADAAIAAgEAAJgAAAC8DgAAAwACAAEBAACZAAAATBUAAAMAAgABAQAAmgAAAB4oAAADAAIAAQEAAJsAAAC4NwAAAQMAANkbAAAAAAAAhDUAAAMAAwABAQAAmAAAAEwVAAADAAMAAQEAAJoAAAAeKAAAAwADAAEBAACbAAAAuDcAAAEDAADADgAAAAAAAHAKAAADAAAAAAwAAKAAAAC4NwAAAQMAAEsWAAAAAAAAcAoAAAMAAQAADAAAoAAAALg3AAABAwAAPhYAAAAAAABKBwAAAwABAAIBAAChAAAATTcAAAEBAACTAAAAAAAAANIfAAADAAAAAgAAAKIAAAA5JAAAAwAAAAEAAACjAAAATwYAAAMAAAABAAAApAAAALg3AAABAwAAzigAAAAAAACDJwAAAwAAAAEBAAClAAAA9w4AAAMAAQABAQAApQAAAIshAAADAAAAAQEAAKYAAAABNQAAAwABAAEBAACmAAAAIAYAAAMAAgABAQAApgAAAOkvAAADAAAAAQAAAKcAAADfEQAAAwAAAAAAAACoAAAATTcAAAEBAACTAAAAAAAAALg3AAABAwAATx0AAAAAAABwNwAAAwAAAAAAAACpAAAAcAoAAAMAAAABAQAAqgAAABkcAAADAAEAAQEAAKoAAABoCAAAAwACAAEBAACqAAAAcAoAAAMAAAABAQAAqwAAABkcAAADAAEAAQEAAKsAAABoCAAAAwACAAEBAACrAAAAuDcAAAEDAADBFgAAAAAAALg3AAABAwAAIx0AAAAAAAC0JgAAAwAAAAAAAACsAAAA9iQAAAMAEwAAAQAArQAAAM03AAADAAAAAQAAAK4AAABvJQAAAwADAAABAACtAAAATiUAAAMJAABvJQAA\u002F\u002F\u002F\u002F\u002F2MlAAADACMAAAEAAK0AAAD\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\u002F\u002F\u002F\u002F\u002FCBAAAAMAAAAAAQAANQAAAHwUAAADAAIAAAEAADUAAAAmBwAAAwAAAAEAAAD2AAAAXiAAAAMAAAABAAAA9wAAAPglAAADAAAAAAAAAPgAAABNNwAAAQEAAJMAAAAAAAAAcAoAAAMAAAAADAAANgAAALg3AAABAwAALxYAAAAAAACiDQAAAwAAAAIAAAD5AAAAwQ8AAAMAAAABAAAA+gAAAKc5AAADAAAAAQAAAPsAAAAVKAAAAwAAAAEAAAD8AAAAUTsAAAMAAAABAQAA\u002FQAAAFUNAAADAAEAAQEAAP0AAABHOwAAAwAAAAEBAAD+AAAAQg0AAAMAAQABAQAA\u002FgAAAIQpAAADAAAAAQAAAP8AAACCKQAAAwAAAAEAAAAAAQAA0QUAAAAGAAAAAAAAAADwf7s5AAAABgAAAAAAAAAA+H+BNAAAAAcAQZDXAQtlOh0AAAMAAAACAAAAAQEAALEbAAADAAAAAgAAAAIBAABBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OUAqXystLi8AQYDYAQuWA6wiAAADAAAAAQAAAAMBAABZMgAAAwAAAAEAAAAEAQAAEx8AAAMAAAABAAAABQEAAPYkAAADAAAAAQEAAAYBAAA\u002FJQAAAwABAAABAAAGAQAAtCYAAAMAAAAAAAAABwEAAKINAAADCQAAog0AAAAAAADBDwAAAwkAAMEPAAAAAAAApzkAAAMAAAABAAAACAEAABUoAAADAAAAAQAAAAkBAAAZGgAAAwAAAAEAAAAKAQAAIxoAAAMAAAABAAAACwEAAGA8AAAABgAA\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F739qPAAAAAYAAAEAAAAAAAAAuzkAAAAGAAAAAAAAAAD4f1g4AAAABgAAAAAAAAAA8P9GOAAAAAYAAAAAAAAAAPB\u002FxjkAAAAGAAAAAAAAAACwPHY5AAAABgAA\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP0OHOQAAAAYAAP\u002F\u002F\u002F\u002F\u002F\u002F\u002Fz\u002FD9iQAAAMAAAAAAAAADAEAALQmAAADAAAAAAAAAA0BAAAELwAAAwAAAAEAAAAOAQAAmQwAAAMAAAABAAAADwEAAMEIAAADAAAAAQAAABABAADDIwAAAQQAQaDbAQuSB+cPAAADAAEAAQEAABEBAAD9DwAAAwAAAAEAAAASAQAA9g8AAAMAAAABAQAAEQEAAOMPAAADAAAAAQAAABMBAADqDwAAAwAAAAEAAAAUAQAA5zQAAAMAAAAAAAAAFQEAAPQ0AAADAAAAAAAAABYBAACgJgAAAwAAAAEBAAAXAQAAqCYAAAMAAQABAQAAFwEAAKAUAAADAAAAAQEAABgBAABqIwAAAwACAAEBAAAYAQAAXyMAAAMAAQABAQAAGAEAAC8kAAADAM0AAQEAABkBAACWIQAAAwDOAAEBAAAZAQAAPyQAAAMA0AABAQAAGQEAAL0NAAADAAAAAgAAABoBAACDJAAAAwAAAAIAAAAbAQAAkxUAAAMAAAACAAAAHAEAANwvAAADAAAAAgAAAB0BAADcDwAAAwAAAAEAAAAeAQAA7i8AAAMAAAACAQAAHwEAAJ8hAAADAAEAAgEAAB8BAAC8MQAAAwABAAEBAAAgAQAAOwsAAAMAAAABAQAAIAEAAGogAAADAAMAAAEAACEBAAC0MQAAAwACAAABAAAhAQAA1w0AAAMJAAC0MQAA\u002F\u002F\u002F\u002F\u002FzELAAADAAEAAAEAACEBAAD1DQAAAwkAADELAAD\u002F\u002F\u002F\u002F\u002F9iQAAAMAAAAAAAAAIgEAALQmAAADAAAAAAAAACIBAAANKAAAAwAAAAEAAAAjAQAAHSkAAAMAAAABAAAAJAEAANYoAAADAAEAAAEAACUBAAD0KAAAAwAAAAABAAAlAQAA4igAAAMAAQAAAQAAJQEAAAApAAADAAAAAAEAACUBAABeNwAAAwAFAAABAAA1AAAATRcAAAMAAAABAQAAJgEAANYlAAADAAEAAAEAACYBAADGIgAAAwACAAABAAAmAQAAwzEAAAMAAwAAAQAAJgEAAFMyAAADAAQAAAEAACYBAABDFwAAAwAFAAEBAAAmAQAA7SYAAAMABgABAQAAJgEAACwVAAADAAcAAAEAACYBAADHIgAAAwAIAAEBAAAmAQAAhCEAAAMACQAAAQAAJgEAABwtAAADAAoAAAEAACYBAACHNgAAAwALAAABAAAmAQAAchsAAAMADAAAAQAAJgEAAO42AACwKwAA1iUAAAAAAADGIgAAAAAAAOM2AAAAAAAAjQoAAAAAAACBDAAARxcAAIEMAABWJwAAHSMAAAAAAADuNgAALiYAAIQhAAAAAAAAHC0AAAAAAACHNgAAAAAAAHIbAEHA4gELmhJwCgAAAwAAAAAMAAAnAQAAuDcAAAEDAABfFgAAAAAAAN0jAAADCAAAcHEAACwAAAApHwAAAwAAAAIBAAAoAQAA+gcAAAMAAQACAQAAKAEAADQVAAADAAAAAQYAACkBAAA9FwAAAwAAAAEGAAAqAQAAqiEAAAMAAAABBgAAKwEAALgwAAADAAAAAQYAACwBAAAiCwAAAwAAAAEGAAAtAQAAHhIAAAMAAAABBgAALgEAAB8fAAADAAAAAQYAAC8BAAALIAAAAwAAAAEGAAAwAQAAJUEAAAMAAAACBwAAMQEAAB8SAAADAAAAAQYAADIBAABnGwAAAwAAAAEGAAAzAQAAUSQAAAMAAAABBgAANAEAAHEIAAADAAAAAgcAADUBAAAgHwAAAwAAAAEGAAA2AQAADCAAAAMAAAABBgAANwEAAAI2AAADAAAAAQYAADgBAACQHwAAAwAAAAEGAAA5AQAA6CMAAAMAAAABBgAAOgEAAAAkAAADAAAAAQYAADsBAAAGJAAAAwAAAAEGAAA8AQAA5yMAAAMAAAABBgAAPQEAAP8jAAADAAAAAQYAAD4BAAAFJAAAAwAAAAEGAAA\u002FAQAAxUEAAAMAAAABBgAAQAEAAPgbAAADAAAAAQYAAEEBAAArQQAAAwAAAAEGAABCAQAAW0IAAAMAAAABBgAAQwEAACwLAAADAAAAAQYAAEQBAABiCwAAAwAAAAIAAABFAQAAYyAAAAMAAAAAAAAARgEAAKwwAAADAAAAAQYAAEcBAACMIAAAAwAAAAIAAABIAQAAQkEAAAMAAAABAAAASQEAALg3AAABAwAA3SMAAAAAAADJPAAAAAYAAGlXFIsKvwVAYUIAAAAGAAAWVbW7sWsCQD5BAAAABgAA7zn6\u002FkIu5j++PAAAAAYAAP6CK2VHFfc\u002FxDwAAAAGAAAO5SYVe8vbP1s7AAAABgAAGC1EVPshCUAwQQAAAAYAAM07f2aeoOY\u002FOEEAAAAGAADNO39mnqD2P+8OAAADCAAAQHQAAA4AAAAkBgAAAwAAAAMAAABKAQAAyA4AAAMAAAACAAAASwEAAJwFAAADAAEAAwEAAL8AAAB5BQAAAwAAAAIAAABMAQAAvA4AAAMAAAACAAAATQEAAK4VAAADAAEAAgEAAMYAAADLJgAAAwABAAEBAAC9AAAATBUAAAMAAAACAAAATgEAADIsAAADAAEAAQEAAMQAAAA9EAAAAwAAAAEAAABPAQAAsRIAAAMAAQABAQAAxQAAAGUOAAADAAAAAwAAAFABAAC8JgAAAwAAAAIAAABRAQAAuDcAAAEDAADvDgAAAAAAAPYkAAADAAAAAAAAAFIBAAC0JgAAAwAAAAAAAABTAQAAzTcAAAMAAAABAAAAUwEAALg3AAABAwAAniAAAAAAAABaHAAAAQEAAFQBAAAAAAAAVBcAAAMAAAABAAAAVQEAAFgXAAADAAAAAQAAAFYBAABwCgAAAwAAAAEMAABXAQAAGRwAAAMAAQABDAAAVwEAAGgIAAADAAIAAQwAAFcBAAC4NwAAAQMAAMYWAAAAAAAAuDcAAAEDAAAoHQAAAAAAANIjAAABAhMAWAEAAAAAAADcLwAAAwATAAIBAABZAQAAuDcAAAEDAABfGgAAAAAAALEIAAADAAAAAQAAAFoBAABNNwAAAQEAAJMAAAAAAAAA0iMAAAECFABYAQAAAAAAANwvAAADABQAAgEAAFkBAAC4NwAAAQMAADgaAAAAAAAATTcAAAEBAACTAAAAAAAAAMMjAAABAQAAWwEAAAAAAADnDwAAAwAAAAEAAABcAQAAWiMAAAMAAAACAAAAXQEAADEaAAABAgAAXgEAAAAAAADSIwAAAQIAAF8BAAAAAAAAFQ4AAAECAABgAQAAAAAAAGUOAAADAAAAAQAAAGEBAAB7EwAAAwABAAABAABiAQAAXjcAAAMJAAB7EwAA\u002F\u002F\u002F\u002F\u002FwgQAAADAAAAAAEAAGIBAAB8FAAAAwACAAABAABiAQAAuDcAAAEBAABjAQAAAAAAAC0fAAADAAAAAgAAAGQBAAAaBgAAAwAIAAEBAADjAAAA2CkAAAMACQABAQAA4wAAAEYkAAADAAoAAQEAAOMAAADNGwAAAwALAAEBAADjAAAATRgAAAMADAABAQAA4wAAAFQvAAADAAgAAQEAAOQAAADhDQAAAwAJAAEBAADkAAAASSEAAAMAAAABAAAAZQEAAOowAAADAAAAAQEAAGYBAADABwAAAwABAAEBAABmAQAAFgsAAAMAAgABAQAAZgEAALIHAAADAAMAAQEAAGYBAABfKAAAAwAAAAAAAABnAQAA3jMAAAMAAAAAAAAAaAEAANwvAAADAAAAAgAAAGkBAACFBgAAAwAAAAIAAABqAQAAJwsAAAMAAAABAAAAawEAAL0yAAADAAAAAQAAAGwBAAAkHwAAAwAAAAEBAABtAQAAPyUAAAMAAQAAAQAAbQEAAKAmAAADAAAAAQEAAG4BAACoJgAAAwABAAEBAABuAQAAoBQAAAMA\u002F\u002F8BAQAAbgEAAF4gAAADAAAAAQAAAG8BAAD4JQAAAwAAAAAAAABwAQAATTcAAAEBAACTAAAAAAAAADEaAAABAgEAXgEAAAAAAADSIwAAAQIBAF8BAAAAAAAAFQ4AAAECAQBgAQAAAAAAAGxAAAADABYAAQEAAHEBAABbQAAAAwAXAAEBAABxAQAAwEAAAAMAGAABAQAAcQEAAK1AAAADABkAAQEAAHEBAABlQQAAAwAaAAEBAABxAQAAUkEAAAMAGwABAQAAcQEAAPlAAAADABwAAQEAAHEBAADgQAAAAwAdAAEBAABxAQAAeUEAAAMAHgABAQAAcQEAABBBAAADAB8AAQEAAHEBAABkQAAAAwAWAAIBAAByAQAAUkAAAAMAFwACAQAAcgEAALdAAAADABgAAgEAAHIBAACjQAAAAwAZAAIBAAByAQAAXEEAAAMAGgACAQAAcgEAAEhBAAADABsAAgEAAHIBAADtQAAAAwAcAAIBAAByAQAA00AAAAMAHQACAQAAcgEAAG5BAAADAB4AAgEAAHIBAAAFQQAAAwAfAAIBAAByAQAAuDcAAAEDAAC4CABB5PQBC6UDAgAAAAAAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAAAAAAQAAAAEAAAArRAAA8EgAACVEAABzAQAAdAEAAHMBAAB1AQAAdgEAAHcBAAB4AQAAeQEAAHoBAAB7AQAAfAEAAH0BAAB+AQAAfQEAAH8BAACAAQAAgQEAAIIBAACDAQAAhAEAAIUBAACGAQAAHw8HAwEAAAAAAAAAgAAAAAAIAAAAAAEAAAAgAAAAAAQBAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAQAAAAEAAAABAAAAAQAAAAFAAAABQBBk\u002FgBC5UCgAAAAABgTsJQp\u002FTU1AAAAEAAAAAA0mggN8rlHgqNZIQxej4VuHUymC3EaVOdqqqqKquqqqowJ2EoVHpqaqEmiCbm\u002FfM+gxMAJUSnyLoGZ7QjCcfAgvEplyLtPciy\u002FX+eIStXraWIO8Mgqyl82gAAACAAAAAAfrVQH7OEWKzGLLIeb+KmihjhIR6yql0MIc2dHeQ0mEN4TCQdZQ16NokFtBwMPhesW9lLHA0r16ho1+obTM74mGk0kBvlcg8FP0M7GxVvsC51b+saOPxGnOs4oBoX\u002FTsOYjBZGlaMjbPD9BUa5qKVK9ww1hn53n3MmZmZGZqZmZmA7F8ZMZRginvuKBn5Ik8Lz2r0GBjjBoxGMsIYPZ8K3ABBs\u002FoBC7AEIEcDuDIAAABAJjxNSkcDuFL92dVZAAAAYI4GcGUmPE1q8KmzbkcDuHKOAGp2\u002FdnVeW0\u002FBX0AAACA337Mgo4GcIWuBe+HJjxNikXdjYzwqbOOAQXBkEcDuJJMeJqUjgBqltYJKJj92dWZj5R0m20\u002FBZ2zxoieAAAAoDeta6HffsyiIxYjpI4GcKUAAAAAgACAAIEAggCDAIQAhQCGAIcAiACJAIoAiwCMAI0AjgCPAJAAkACRAJIAkwCUAJUAlgCWAJcAmACZAJoAmwCbAJwAnQCeAJ8AoACgAKEAogCjAKMApAClAKYApwCnAKgAqQCqAKoAqwCsAK0ArQCuAK8AsACwALEAsgCyALMAtAC1ALUAtgC3ALcAuAC5ALkAugC7ALsAvAC9AL0AvgC\u002FAMAAwADBAMEAwgDDAMMAxADFAMUAxgDHAMcAyADJAMkAygDLAMsAzADMAM0AzgDOAM8A0ADQANEA0QDSANMA0wDUANQA1QDWANYA1wDXANgA2QDZANoA2gDbANsA3ADdAN0A3gDeAN8A4ADgAOEA4QDiAOIA4wDjAOQA5QDlAOYA5gDnAOcA6ADoAOkA6gDqAOsA6wDsAOwA7QDtAO4A7gDvAPAA8ADxAPEA8gDyAPMA8wD0APQA9QD1APYA9gD3APcA+AD4APkA+QD6APoA+wD7APwA\u002FAD9AP0A\u002FgD+AP8AIBQQDQwLCgoJCQgICAgIBwcHBwcHBwYGBgYGBgYGBgYGBgYAQfD+AQsqCgAJAA4AIAAhAKAAoQCAFoEWACALICggKiAvIDAgXyBgIAAwATD\u002F\u002FgD\u002FAEGk\u002FwELLRAAAAD+\u002F\u002F+H\u002Fv\u002F\u002FBwAAAAAQAP8D\u002Fv\u002F\u002Fh\u002F7\u002F\u002FwfMfwAAcH8AAOB\u002FAAABADAAOgBB4P8BCxEEADAAOgBBAFsAXwBgAGEAewBBgIACC7QNAQMFAQEBAQUFBQECAgMFBQEBAQICAwMFBQEBAREAAAAwmiAAAJowAHOBWgAwF2AAMAdsALOBbwAAF3AAAAd8AACBfwBAMIAAwwGYAJCBmABABpkAQJCcALSBpABALqUAMAG8AECGvABwgb8AAAHAADCBwABABMEAMAHDAECCwwAwgsQAQILFADABxwAwgccAMAHIAECCyAAwgckAMAHKAACBygAwAcsAMIHLAEACzAAAAc0AMAHOADCBzgAAAc8AMIHPAEAG0AAwAdMAQILTADCB1ABAAtYAMAHXAECC1wAwgtgAQITZADCB2wBAAtwAQALeAACB3wBQA+IAUIPjAFAD5QBAkOYAAIHuAEAS7wC0AfgAUIP4AEAC+gAwAfsAMIH7AEAo\u002FAAwARABQBIRATEBHQFAgh0BMIEeATEBHwEBgh8BQIIgATCBIQEwASIBMIEiAUAKIwEBASgBAYEoAQEBKQEAgSkBAAEqAQACKwEAgSwBAIEtAQEBLgEAATABAYEwAQCBMQEBgTIBAQEzAQABNAEAgTQBAQE1AQGBNQEBATYBAIE3AQGBOAEAATkBAIE6AQGBPgEAAUABAQFBAQCBQQEBgUMBAAFEAQCBRAEAAkUBAAFGAQABSQEBgU4BAQFPAXOBogFABLgBQAK7AQCDvQEwgb8BMAHDATADxAEwAcYBMALHAdAByAEwkcgBMInRAQAB1gEAg9YB0wHYAQCR2AFzAeEBAInhAQAB5gEAguYBMIHnAXMB6AFzgegBc4HqAXMB6wEAgesBQBjsAXMB+AFzgfgBAAH5AQCB+QGgAfoBc4H6AUCC+wEwgfwBQAL9ATCD\u002FgEwEAACMCAIAgAgGAIAECgCQCIwAkA2RQIwAWACQI5gAgCBZwJAYGgCMKaYAgCmsAK1gcMCMSZQCDGBYwgxgWYIACtoCACDfggRUNAJEAb4CSAG\u002FAl0AUAOdIFADnQBQQ50gUEOdAFCDnSBQg50AUMOgIFDDoABRA4wK0gOMINeDgGBvA4Bgb4OAQHHDkB+AA9AGD8PtQFLD7aBSw+2AUwPtoFMD7cBTQ+AgU0PMAFPD0BgUA8ACIAPMAiEDwAGiA8wBowPAAiQDzAIlA8ACJgPMAicDwAGoA8wBqQPsAGoDwCBqA\u002FTAakPAIGpD9MBqg8AgaoP0wGrDwCBqw8wgawPMIGtDzCBrg8wga8PAAiwDzAItA8AArgPAAS5DwACuw8BArwPAQK9DwECvg+3CMAPZwjED7gIyA9oCMwPuAjQD2gI1A8AAtgPuQHZD7GB2Q+5AdoPsQHbD9eB2w8wAtwPMALdD2EB3g9zAd8PuQHhD7KB4Q+6AeIPsgHjD9iB4w8wBOQPYgHmDwAC6A\u002FQAekP0IHpD7AB6w\u002FQgesPMALsDzAC7Q8BAvAP0wHxD9OB8Q+6AfIPAYHyD7AB8w\u002FTgfMPMAL0DzAC9Q8xAfYPugH5D7KB+Q+7AfoPsgH7D9mB+w8wAvwPMAL9D2IB\u002Fg+gAZMQoAGVEKCBlRAxAZkQAQGnEDEQsBABELgQQILBEDEaWxIBGmgSMTAAFgEwGBZAAjAWMAExFjCBMRYwATIWAIEyFgABMxZAhjMWMIE2FjABNxYwgTcWMAE4FkACORZAgjoWMAI\u002FFkBkQBZAhHUWQAJ5FgAmgBYAgZMWAIGWFkAuIFNAHEBTQA6RU0A+mVNAhLxTMIG+U0AKv1NAgsVTMIHGU0AEyFMBAcpTQBTLUzAB1VMwgdVTMAHWUzCB1lMwAddTMAHYUzCB2FMwAdlTMYHZU0AQ2lMxAeJTMIHiUzAB41NAhONTQALoU0AE61NAgvpTAYGpVSBQuFWyAYB9soGAfbIBgX3agYF92gGCfbOBgn2zAYN9u4GJfbsBin27gYp9vAGLfbuBi30xmpB\u002FAZqgfzEoAIIBKBSCMSRYggEkbIIxC7iCMQ++gjEHxoIxAsqCAYvLggGP0YIBh9mCAYLdgjEzQIYBM2CGMSBQjAEgYIwxICC3ASAwtzEigPQBIpH0AAAAAAAAAABAqYCOgPyA04CMgI2BjQKA4YCRhZoBAAERAAEECAEIMAgBFSAAOZkxnYRAlIDWgqaAQWKApoBLcoBMAvgCgI+AsEDbCIBB0ICMgI+M5AMBiQAUKBARAgEYCyRLJgEBhuWAYHm2gUCRgb2IlAWAmICiAICbEoJDNKIGgI1gXBUBEKmAiGDMRNSAxgEICQuAiwAGgMADDwaAmwMEABaAQVOBmICYgJ6AmICegJiAnoCYgJ6AmAdHM4mAky1BBL1QwZmFmYWZAEHAjQILFbkC4MAdIOUsILEHIcHWIUrxAYrxAQBB4I0CC+EFpgWAioCiAIDGAwADAYFB9kC\u002FGRiICIBA+oZAzgSAsKwAAQEAq4CKhYmKAKKAiZSPgOQ4iQOgAICdmtqKuYoYCJeXqoKrBg2HqLm2AAM7AoaJgYyAjoC5Ax+Ak4GZAYG4AwsJEoCdCoCKgbgDIAuAk4GVKIC5AQAfBoGKgZ2AvICLgLECgLYAFBAegYqBnIC5AQUEgZOBm4G4Cx+Ak4GcgMcGEIDZAYaKiOEBiIgAhsiBmgAAgLaNBAGEioCjiIDlGCgJgZgLgo+DjAENgI6A3YBCX4JDsYKcgZ2BnYG\u002FCDcBihAgrISygMCBoYD1E4GIBYJA2gmAuQAwAAE9iQimB56wg68AIASAp4iLgZ8ZCIK3AAoAgrk5gb+F0RCMBhgoEbG+jICh5EG8AIKKgoyCjIKMgYsngYkBAYSwIIkAjICPjLKgS4qB8IL8gI6A35+ugEHUgKMaJIDchdyCYG8VgEThhUENgOEYiQCbg8+BjaHNgJaC5hIPAgOAmAyAQJaBmZGMgKWHmIqtgq8BGYGQgJSBwSkJgYsHgKKAioCyABEMCICagI0MCIDjhIiC+AEDgGBPL4BAkpBCPI8Qi4+hAYBAqAYFgIqAogCAroCsgcKAlIJCAIBA4YBAlIREBCipgIhCRRAMg6cTgECkgUI8g0GCgc+CxYqwg\u002FqAtY6oAYGJgrAZCQOAiYCxgqMgh72Ai4GziIkZgN4RAA0BgECcAoeUgbgKgKQyhEDCORCAloDTKAMIgUDtHQiBmoHUOQCB6QABKIDkERiEQQKIAUD\u002FCAOAQI8ZC4CfiacpH4CIKYKtjAFBlTAogNGVDgEB+SoACDCAxwoAgEFagYqBsyQAgFTskIWOYDaZhLqGiINECoC+kL8IgWBAChgwgUydCINSW62BlkIfgoiPDp2DQJOCR7q2g7E4jYCVII5FTzCQDgEEhL2ggECfjUFvgLyDQfqEQ9+G7IdKroRsDACAnd\u002F\u002FQO8AQdCTAgtFvgUA\u002FgcAUgqgwQsAgg0APxCA1BdAzxog9RwAgCAAFqAAxqgAwqpgVv4gsQcBdRAB6xIhQRYBXBoBQx8BLs9BJeAB8AEOAEGglAIL1A7AmYWZroCJAwSWgJ6AQcmDi40mAIBAgCAJGAUAEACTgNKAQIqHQKWApQiFqMaaG6yqogjiAI4OgYkRgI8AnZzYioCXoIgLBJUYiAKAlpiGioSXBZCpubUQkQaJjo8fCYGVBgATEI+AjAiCjYGJBysJlQYBAQGeGICSgo+IAoCVBgEEEJGAjoGWgIo5CZUGAQQQnQiCjoCQACoQGggACgoSi5WAszgQloCPEJkRAYGdAzgQloCJBBCeCIGOgZCIAoCoCI8EF4KXLJGCl4CIAA65rwGLhrkIACCXAICJAYgBIICUg5+AvjijmoTyqpOAjysaAg4TjIuAkKUAIIGqgEFMAw4AA4GoA4GgAw4AA4GOgLgDgcKkj4\u002FVDYJCa4GQgJmEyoKKhpGMko2RjYwCjrOiA4DC2IaoAITFiZ6wnQyKq4OZtZaItNGA3K6Qh7WdjIGJq5mjqIKJo4GIhqoKqBgoCgRAv79BFQ2BpQ0PAAAAgJ6BtAYAEgYTDYOMIgbzgIyAj4zkAwGJAA0oAACAjwskGJCoSnZA5CsRi6UAIIG3MI+WiDAwMDAwMDCGQiWCmIg0DIPVHIDZA4SqgN2Qn6+PQf9Zv79gVozCrYFBDIKPiYGTro+egc+miIHmgb8hAASXjwIDgJacs42xvSoAgYqbiZaYnIaum4CPIImJIKiWEIeTlhCCsQARDAgAlxGKMospKYWIMDCqgI2F8pxgK6OLloOwYCEDQW2B6aWGiyQAiYCMBAABAYDroEFqkb+BtaeL8yBAhqOZhZmK2BUNDQqii4CZgJIBgI6BjaH6xLRBCpyCsK6fjJ2EpYmdgaMfBKlAnZGjg6ODp4ezi4qAjgYBgIqAjgYBwkE2iJWJh5coqYCIxCkAqwEQgZaJloiewJIBiZWJmcW3Kb+AjhgQnKmcgpyiOJuatYmViZKMke3ItrKMsoyjQVupKc2ciQeVqZGtlJqWi7S4CYCMrJ+YmaOcAQeiEIuvjYOUAICikYCYkoG+MAAYjoCJhq6lOQmVBgEEEJGAi4RAnbSRg5OCna+TCIBAt66og6Ovk4C6qoyAxpqkhkC4q\u002FO\u002FnjkBOAiXjgCA3TmmjwCAm4CJpzCUgIqtkoCRyEEGiICkkICwne8wCKWUgJgoCJ+NgEFGko4AjICh+4DOQ5nl7pBAw0pL4I5EL5CFT7hCRmAhuEI4hp6QzpCdka+Pg56UhJJCr7\u002F\u002FyiDBjL8IgJtX94dE1amIYCLmGDAIQSKOgJwRgI0fQYtJA+qEjIKIholXZdSAxgEICQuAiwAGgMADDwaAmwMEABaAQVOBmICYgJ6AmICegJiAnoCYgJ6AmAdHM54tQQS9QJGsiYaPgEFAnZGrQeObQvMwGAiOgEDEusMwRLMYmgEACICJAwAAKBgAAAIBAAgAAAAAAQALBgMDAICJgJAiBICQUUNgpt+fUDmFQN2BVoGNXTBMHkIdReFTSoRQXwAAAAD2AyCmBwCpCSCxCgC6CyA7DSDHDiBJEgCbFgCsGQDAHYCAICBwLQAAMgDapwBMqiDH1yD8\u002FSCdAiGWBQHzCAGzDCFzEWE0EwEbFyGKGgE0HyG\u002FagEjsaGt1AFv1wH\u002F52Fe7gHh6yKwIwMAAAAAAAAAr4mkgNaAQkfvloBA+oRBCKwAAQEAx4qvnijkMSkIGYmWgJ2a2oqOiaCIiICXGIgCBKqCu4epl4CgtRCRBokJiZCCtwAxCYKIgIkJiY0BgrcAIwkSgJOLEIqCtwA4EIKTCYmJKIK3ADEJFoKJCYmRgLoiEIOIgI2Jj4S2ADAQHoGKCYmQgrcAMBAegYoJiRCLg7YIMBCDiICJCYmQgsUDKAA9iQm8AYaLOInWAYiKMIm9DYmKAAADgbCTAYSKgKOIgOOTgImLGxARMoOMi4COQr6CiIhDn4ObgpyBnYG\u002Fn4gBiaAQikCOgPWLg4uJif+Ku4S4iYCcgYqFiZWNgI+whK6QiomQiIuCnYyBiauNr5OHiYWJ9RCUGCgKQMW\u002FQj6BkoD6jBiCi0v9gkCMgN+fQimF6IFgdYSJxAOJn4HPgUEPAgOAliOA0oGxkYmJhZGMipuHmIyrg66NjomKgImJro2LBwmJoIKxABEMCICoJIFA6zgJiWBPI4BC4I+PjxGXgkC\u002FiaSAQryAQOGAQJSEQSSJRVYQDIOnE4BApIFCPB+JQXCBz4LFirCD+YK0jp6KCYmDrIowrIkqo42AiSGrgIuCr407gIvRiygIQJyLhIkrtggxCYKIgIkJMoRAv5GIiRjQk4uJQNQxiJqB0ZCOidCMh4nSjoOJQPGOQKSJxSgJGACBi4n2MTKAm4mnMB+AiIqtj0GUOIePibeVgI35KgAIMAeJryAIJ4lBSIOICICvMoSMiVTlBY5gNgmJ1YmlhLqGmIlD9AC2M9CAioFgTKqBUmCtgZZCHSIvOYadg0CTgkWIsUH\u002FtoOxOI2AlSCORU8wkA4BBOOAQJ+GiIlBY4C8jUHxjUPVhuw0iVKViWwFBUDvAEGAowILhBP6BgBwCQDwCkBXDADwDWDHDyDqF0AFGwBBIAAMqIA3qiBQ\u002FiA6DSF0EQFaFCFEGYFaHaH1aiFF0kGv4iHwAQ4AQWRsYW0sQWRsbQBBaG9tLEFob20AQW5hdG9saWFuX0hpZXJvZ2x5cGhzLEhsdXcAQXJhYmljLEFyYWIAQXJtZW5pYW4sQXJtbgBBdmVzdGFuLEF2c3QAQmFsaW5lc2UsQmFsaQBCYW11bSxCYW11AEJhc3NhX1ZhaCxCYXNzAEJhdGFrLEJhdGsAQmVuZ2FsaSxCZW5nAEJoYWlrc3VraSxCaGtzAEJvcG9tb2ZvLEJvcG8AQnJhaG1pLEJyYWgAQnJhaWxsZSxCcmFpAEJ1Z2luZXNlLEJ1Z2kAQnVoaWQsQnVoZABDYW5hZGlhbl9BYm9yaWdpbmFsLENhbnMAQ2FyaWFuLENhcmkAQ2F1Y2FzaWFuX0FsYmFuaWFuLEFnaGIAQ2hha21hLENha20AQ2hhbSxDaGFtAENoZXJva2VlLENoZXIAQ2hvcmFzbWlhbixDaHJzAENvbW1vbixaeXl5AENvcHRpYyxDb3B0LFFhYWMAQ3VuZWlmb3JtLFhzdXgAQ3lwcmlvdCxDcHJ0AEN5cmlsbGljLEN5cmwAQ3lwcm9fTWlub2FuLENwbW4ARGVzZXJldCxEc3J0AERldmFuYWdhcmksRGV2YQBEaXZlc19Ba3VydSxEaWFrAERvZ3JhLERvZ3IARHVwbG95YW4sRHVwbABFZ3lwdGlhbl9IaWVyb2dseXBocyxFZ3lwAEVsYmFzYW4sRWxiYQBFbHltYWljLEVseW0ARXRoaW9waWMsRXRoaQBHZW9yZ2lhbixHZW9yAEdsYWdvbGl0aWMsR2xhZwBHb3RoaWMsR290aABHcmFudGhhLEdyYW4AR3JlZWssR3JlawBHdWphcmF0aSxHdWpyAEd1bmphbGFfR29uZGksR29uZwBHdXJtdWtoaSxHdXJ1AEhhbixIYW5pAEhhbmd1bCxIYW5nAEhhbmlmaV9Sb2hpbmd5YSxSb2hnAEhhbnVub28sSGFubwBIYXRyYW4sSGF0cgBIZWJyZXcsSGVicgBIaXJhZ2FuYSxIaXJhAEltcGVyaWFsX0FyYW1haWMsQXJtaQBJbmhlcml0ZWQsWmluaCxRYWFpAEluc2NyaXB0aW9uYWxfUGFobGF2aSxQaGxpAEluc2NyaXB0aW9uYWxfUGFydGhpYW4sUHJ0aQBKYXZhbmVzZSxKYXZhAEthaXRoaSxLdGhpAEthbm5hZGEsS25kYQBLYXRha2FuYSxLYW5hAEthd2ksS2F3aQBLYXlhaF9MaSxLYWxpAEtoYXJvc2h0aGksS2hhcgBLaG1lcixLaG1yAEtob2praSxLaG9qAEtoaXRhbl9TbWFsbF9TY3JpcHQsS2l0cwBLaHVkYXdhZGksU2luZABMYW8sTGFvbwBMYXRpbixMYXRuAExlcGNoYSxMZXBjAExpbWJ1LExpbWIATGluZWFyX0EsTGluYQBMaW5lYXJfQixMaW5iAExpc3UsTGlzdQBMeWNpYW4sTHljaQBMeWRpYW4sTHlkaQBNYWthc2FyLE1ha2EATWFoYWphbmksTWFoagBNYWxheWFsYW0sTWx5bQBNYW5kYWljLE1hbmQATWFuaWNoYWVhbixNYW5pAE1hcmNoZW4sTWFyYwBNYXNhcmFtX0dvbmRpLEdvbm0ATWVkZWZhaWRyaW4sTWVkZgBNZWV0ZWlfTWF5ZWssTXRlaQBNZW5kZV9LaWtha3VpLE1lbmQATWVyb2l0aWNfQ3Vyc2l2ZSxNZXJjAE1lcm9pdGljX0hpZXJvZ2x5cGhzLE1lcm8ATWlhbyxQbHJkAE1vZGksTW9kaQBNb25nb2xpYW4sTW9uZwBNcm8sTXJvbwBNdWx0YW5pLE11bHQATXlhbm1hcixNeW1yAE5hYmF0YWVhbixOYmF0AE5hZ19NdW5kYXJpLE5hZ20ATmFuZGluYWdhcmksTmFuZABOZXdfVGFpX0x1ZSxUYWx1AE5ld2EsTmV3YQBOa28sTmtvbwBOdXNodSxOc2h1AE55aWFrZW5nX1B1YWNodWVfSG1vbmcsSG1ucABPZ2hhbSxPZ2FtAE9sX0NoaWtpLE9sY2sAT2xkX0h1bmdhcmlhbixIdW5nAE9sZF9JdGFsaWMsSXRhbABPbGRfTm9ydGhfQXJhYmlhbixOYXJiAE9sZF9QZXJtaWMsUGVybQBPbGRfUGVyc2lhbixYcGVvAE9sZF9Tb2dkaWFuLFNvZ28AT2xkX1NvdXRoX0FyYWJpYW4sU2FyYgBPbGRfVHVya2ljLE9ya2gAT2xkX1V5Z2h1cixPdWdyAE9yaXlhLE9yeWEAT3NhZ2UsT3NnZQBPc21hbnlhLE9zbWEAUGFoYXdoX0htb25nLEhtbmcAUGFsbXlyZW5lLFBhbG0AUGF1X0Npbl9IYXUsUGF1YwBQaGFnc19QYSxQaGFnAFBob2VuaWNpYW4sUGhueABQc2FsdGVyX1BhaGxhdmksUGhscABSZWphbmcsUmpuZwBSdW5pYyxSdW5yAFNhbWFyaXRhbixTYW1yAFNhdXJhc2h0cmEsU2F1cgBTaGFyYWRhLFNocmQAU2hhdmlhbixTaGF3AFNpZGRoYW0sU2lkZABTaWduV3JpdGluZyxTZ253AFNpbmhhbGEsU2luaABTb2dkaWFuLFNvZ2QAU29yYV9Tb21wZW5nLFNvcmEAU295b21ibyxTb3lvAFN1bmRhbmVzZSxTdW5kAFN5bG90aV9OYWdyaSxTeWxvAFN5cmlhYyxTeXJjAFRhZ2Fsb2csVGdsZwBUYWdiYW53YSxUYWdiAFRhaV9MZSxUYWxlAFRhaV9UaGFtLExhbmEAVGFpX1ZpZXQsVGF2dABUYWtyaSxUYWtyAFRhbWlsLFRhbWwAVGFuZ3V0LFRhbmcAVGVsdWd1LFRlbHUAVGhhYW5hLFRoYWEAVGhhaSxUaGFpAFRpYmV0YW4sVGlidABUaWZpbmFnaCxUZm5nAFRpcmh1dGEsVGlyaABUYW5nc2EsVG5zYQBUb3RvLFRvdG8AVWdhcml0aWMsVWdhcgBWYWksVmFpaQBWaXRoa3VxaSxWaXRoAFdhbmNobyxXY2hvAFdhcmFuZ19DaXRpLFdhcmEAWWV6aWRpLFllemkAWWksWWlpaQBaYW5hYmF6YXJfU3F1YXJlLFphbmIAQZC2AgvyIMAZmUeFGZlHrhmAR44ZgEeEGZZHgBmeR4AZ4WBHphmER4QZgQ2TGeAPOIMsgBmCLAGDLIAZgCwDgCyAGYAsgBmCLACALACTLAC+LI0ajyzgJB2BOOBIHQClBQGxBQGCBQC2NQeaNQOFNQqEBIAZhQSAGY0EgBmCBIAZnwSAGYkEijiZBIA44AsEgBmhBI2LALuLAYKLrwSxlQ26ZgGCZq1\u002FAY5\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\u002FaVmAEylsDuFsGkFs\u002FgJOAZ4EwgEQKgTAN8AeXkwfin5PhdUQpiJNwEoaDPgCGPgCBPgCAPuC+NoI+DoA2HII2AYA+DYM+B+ErZ2ij4AojBIwjAogjBokjAYMjgxlwAfutOAGWOAjgExk74JUZCaYZAb0ZgjiQGYc4gRmGOJ0Zgzi8GRTFLGAZkxkLkxkL1hkImBlgJtQZAMYZAIEZAYAZAYEZAYMZAIsZAIAZAIYZAMAZAIMZAYcZAIYZAJsZAIMZAIQZAIAZAoYZAODzGQHgwxkBsRniK4QOhIQAjoRj755HBYVHYHSGKQCQKQGGKQCBKQCEKQS9HSCAHWAPrGgCjWgBiWgDgWhg356bELmfBICfYW+pYmKFhicAgycAgScAjicA4GRYAY9YKMsBA4kBA4EBYrDDGUu8GWBhgwQAmgQAgQQAgAQBgAQAiQQAgwQAgAQAgAQFgAQDgAQAgAQAgAQAggQAgQQAgAQBgAQAgAQAgAQAgAQAgAQAgQQAgAQBgwQAhgQAgwQAgwQAgAQAiQQAkAQEggQAhAQAkAQzgQRgrasZA+ADGQuOGQGOGQCOGQCkGQngTRk3mRmANoEZDKsZA4gZBoEZDYUZYDnjdxkDkBkCjBkC4BYZA94ZBYsZA4AZDosZA7cZB4kZBacZB50ZAYEZTeDzGQuNGQGMGQKIGQatGQCGGQeNGQOIGQaIGQbgMhkAthkkiRljpfCWfzAf79kwBeB9MAHwBiEwDfAM0DBrvuG9MGWB8ALqMATv\u002FzB6y\u002FCAGR3fGWAf4I84gsEAAAEsAQAAASwcAAwBR4CSAAACHW4AAh0pAQIdRwACHSmBAwAABgRmMouVoQ0AAAYEZjKLlaEAAwSLlQEAAAcBBGYyi5WhHwAACQEEUlNzfDKGiwkACgIEiwkACQMElaEFAAACBItiAAACBDKB+wAADQsgKy0vPUdRdIGSlJkADAsgKy0vPUdRdJKUmRAAABQLICIuVSstLz1QUWN0RYWKkZKUmQAVCyAiLlUrLS89SVBRY3RFhYqRkpSZCQQgIjxQdQAJAwsVinUACQIvX3UACQItQ4B1AA0CK5KAcQAJAj1jgs8ACQMVYI6AMAAAAihHhbgAAQQRM42MgEoAAQJdegAAAAJdeoRJAAAECyArPQABIAAECyArPQACICsAASABAgsgAAIggQACCyAAAiCBAAYgPVF0kpQAASABAiCBAQEgAAIggQACCyAGASAAAiBjAAILIAEBIAACCyADASAACAsgKz1jdJSZAAIgKwADICs9AQILIAABCwECICsAAWOARAABASw1AAACHYsAAAABi4GzAAACR12APwAAAyArR4zRAAACHSmBPAABBg0xMDY+ogAFDTEwNj4BAAABMAAACQYNMTA2PqIAAAAFDTEwNj4HBg0xMDY+ogMFDTEwNj4JAAMCDTABAAAFDTEwNj4EAjY+AAAABQ0xMDY+AwABAzA2PgEBMFgAAwI2PgIAAAI2PlkAAAYNMTA2PqIAAjY+gBIADwEwHwAjATA7ACcBMDcAMAEwDgALATAyAAABMFcAGAEwCQAEATBfAB4BMMAx7wAAAh0pgA8ABwIwR4CnAAIOICItL0M9PFBRXGNFkZkCDSAiLS9DPTxQXGNFkZkDCyAiLS9DPFBcRZGZgDYAAAILIAAAAAIgkjkAAANAR2CAHwAAAhA7wBLtAAECBGaAMQAAAgSVCQAAAgSVRgABBQ0xMDY+gJkABAYNMTA2PqIJAAACNj4sAAECNj6A3wABAx4cSwACHEsDACwDHEpLAgAIAhxLgR8AGwIEGod1AAACU3OHjQAAAiuSAAAAAiuSNgABAiuSjBIAAQIrkgAAAAIrksBcSwADASOWOwARATCeXQABATDOzS0AAAAAAENuLFVuYXNzaWduZWQATHUsVXBwZXJjYXNlX0xldHRlcgBMbCxMb3dlcmNhc2VfTGV0dGVyAEx0LFRpdGxlY2FzZV9MZXR0ZXIATG0sTW9kaWZpZXJfTGV0dGVyAExvLE90aGVyX0xldHRlcgBNbixOb25zcGFjaW5nX01hcmsATWMsU3BhY2luZ19NYXJrAE1lLEVuY2xvc2luZ19NYXJrAE5kLERlY2ltYWxfTnVtYmVyLGRpZ2l0AE5sLExldHRlcl9OdW1iZXIATm8sT3RoZXJfTnVtYmVyAFNtLE1hdGhfU3ltYm9sAFNjLEN1cnJlbmN5X1N5bWJvbABTayxNb2RpZmllcl9TeW1ib2wAU28sT3RoZXJfU3ltYm9sAFBjLENvbm5lY3Rvcl9QdW5jdHVhdGlvbgBQZCxEYXNoX1B1bmN0dWF0aW9uAFBzLE9wZW5fUHVuY3R1YXRpb24AUGUsQ2xvc2VfUHVuY3R1YXRpb24AUGksSW5pdGlhbF9QdW5jdHVhdGlvbgBQZixGaW5hbF9QdW5jdHVhdGlvbgBQbyxPdGhlcl9QdW5jdHVhdGlvbgBacyxTcGFjZV9TZXBhcmF0b3IAWmwsTGluZV9TZXBhcmF0b3IAWnAsUGFyYWdyYXBoX1NlcGFyYXRvcgBDYyxDb250cm9sLGNudHJsAENmLEZvcm1hdABDcyxTdXJyb2dhdGUAQ28sUHJpdmF0ZV9Vc2UATEMsQ2FzZWRfTGV0dGVyAEwsTGV0dGVyAE0sTWFyayxDb21iaW5pbmdfTWFyawBOLE51bWJlcgBTLFN5bWJvbABQLFB1bmN0dWF0aW9uLHB1bmN0AFosU2VwYXJhdG9yAEMsT3RoZXIAQZDXAguwCA4AAAA+AAAAwAEAAAAOAAAA8AAAAAB\u002FAAAAgAMBAAA8QVNDSUlfSGV4X0RpZ2l0LEFIZXgAQmlkaV9Db250cm9sLEJpZGlfQwBEYXNoAERlcHJlY2F0ZWQsRGVwAERpYWNyaXRpYyxEaWEARXh0ZW5kZXIsRXh0AEhleF9EaWdpdCxIZXgASURTX0JpbmFyeV9PcGVyYXRvcixJRFNCAElEU19UcmluYXJ5X09wZXJhdG9yLElEU1QASWRlb2dyYXBoaWMsSWRlbwBKb2luX0NvbnRyb2wsSm9pbl9DAExvZ2ljYWxfT3JkZXJfRXhjZXB0aW9uLExPRQBOb25jaGFyYWN0ZXJfQ29kZV9Qb2ludCxOQ2hhcgBQYXR0ZXJuX1N5bnRheCxQYXRfU3luAFBhdHRlcm5fV2hpdGVfU3BhY2UsUGF0X1dTAFF1b3RhdGlvbl9NYXJrLFFNYXJrAFJhZGljYWwAUmVnaW9uYWxfSW5kaWNhdG9yLFJJAFNlbnRlbmNlX1Rlcm1pbmFsLFNUZXJtAFNvZnRfRG90dGVkLFNEAFRlcm1pbmFsX1B1bmN0dWF0aW9uLFRlcm0AVW5pZmllZF9JZGVvZ3JhcGgsVUlkZW8AVmFyaWF0aW9uX1NlbGVjdG9yLFZTAFdoaXRlX1NwYWNlLHNwYWNlAEJpZGlfTWlycm9yZWQsQmlkaV9NAEVtb2ppAEVtb2ppX0NvbXBvbmVudCxFQ29tcABFbW9qaV9Nb2RpZmllcixFTW9kAEVtb2ppX01vZGlmaWVyX0Jhc2UsRUJhc2UARW1vamlfUHJlc2VudGF0aW9uLEVQcmVzAEV4dGVuZGVkX1BpY3RvZ3JhcGhpYyxFeHRQaWN0AERlZmF1bHRfSWdub3JhYmxlX0NvZGVfUG9pbnQsREkASURfU3RhcnQsSURTAENhc2VfSWdub3JhYmxlLENJAEFTQ0lJAEFscGhhYmV0aWMsQWxwaGEAQW55AEFzc2lnbmVkAENhc2VkAENoYW5nZXNfV2hlbl9DYXNlZm9sZGVkLENXQ0YAQ2hhbmdlc19XaGVuX0Nhc2VtYXBwZWQsQ1dDTQBDaGFuZ2VzX1doZW5fTG93ZXJjYXNlZCxDV0wAQ2hhbmdlc19XaGVuX05GS0NfQ2FzZWZvbGRlZCxDV0tDRgBDaGFuZ2VzX1doZW5fVGl0bGVjYXNlZCxDV1QAQ2hhbmdlc19XaGVuX1VwcGVyY2FzZWQsQ1dVAEdyYXBoZW1lX0Jhc2UsR3JfQmFzZQBHcmFwaGVtZV9FeHRlbmQsR3JfRXh0AElEX0NvbnRpbnVlLElEQwBMb3dlcmNhc2UsTG93ZXIATWF0aABVcHBlcmNhc2UsVXBwZXIAWElEX0NvbnRpbnVlLFhJREMAWElEX1N0YXJ0LFhJRFMAQdDfAgvyAgEAnAYHTQMEEACPCwAAEQAIAFNKUQBSAFMAOlRVAFdZP11cAEZhY0JkAGYAaABqAGwAbgAAQAAAAAAaAJMAACA1ACcAIQAkIioAE2ttACYkJxQWGBscPh4\u002FHzk9IiFBHkAlJSYoICpILEMuSzBMMkRCmQAAlY99foOEEoCCdncSe6N8eHmKkpimoIUAmqGTdTOVAI4AdJmYl5YAAJ4AnAChoBUuLzC0tU+qqRIUHiEiIio0NaanNh9JAACXAVraHTYFAMTDxsXIx8rJzMvE1UXWQtdG2M7Q0tTa2e72\u002Fg4HD4CfACGAo+0AwEDGYOfb5pnAAAAGYNwp\u002FRUSBhb43QYVEoQIxhb\u002F3wPAQABGYN7gbTc4ORUUFxYAGhkcGwBft2VERwBPYk5QAABIAAAAo6SlAAAAAAC2AABaAEcAW1ZYYF5waW9OADtnuAAAAABFqIqLjKusWFivlLBvsl1cX15hYGZnaGliY2Rla2ptbG9ucXAAQdDiAgtzmQMIAwEDpQMTAwADQgORA5cDqQNGAEkATABTAGkABwO8Ak4ASgAMAzUFUgVIADEDVABXAAoDWQBBAL4CCB+AHygfkB9oH6Afuh+GA7Mfyh+JA8MfoQP6H48D8x9EBUYFOwVOBT0FuANiBEqmYB7JA2sA5QBB0OMCC+YggQAoAJcAKgCBgCoAl8ArABWBLACXAC0AgUAtAJcALgAVQS4AmQEvABYgMABCCEAAQopEAEIESgCWAEwAF4FMAEICTQBCQ04AL8FPAELDUAC\u002FQFIAQgNTAEIJVQBCCFoAlgBeAEJDXgCBwF8AQgFoAELBawCFAXEAF8NxAERIcwBEg3cAQoN5AL4CewCXQXwAQgF9AEQEfgBCDoAAQoGHAESHiQCDBKwAFwO2AIMCuAAUAtAAlgDRAIAA3QCXgN4AgIDfAJcA4QA+QeEAgMDhAL4E4gCug+oAroLyAK0B9AAuwfQAA0H1AAMD\u002FACBQP4APgIAAb7AAQG+AQMBvkAGAb5ADgE+AhQBvsAVAb4BFwFEgR0BREEwAUQCNAFEgTUBRIM2AUSDOAFEhjoBRAE+AYXAYQGugogBL0KdAYQBsAGEwLQBhEBKAoRATAKEAE0CLgRWAi7BcgIgAXcChMB3AoTAjAKEgI0CrkGWAoSAlwKEANICLsHSAiAB1wKEAOUCroHyAoQAEgOEADADIsExAy6BMgOugVIDhIB2A64BdwOFwIwDhcCsAy8BtwOBAMMDhMDQA4RA0wOEgNQDhMDVA4QA1wOEQNoDhMDcAy5B3QOFwN0DhADeA4VA3gOEQOADhMDkA4RA5wOEgOgDhMDpA4QA6wOEQO4DhIAJBIEAPwSEhMEGhIDEBoTBzgYgAdAGhMDQBoMDSwcfxEwHgxdPB4EAXgeD0mYHRB2AB0KJjgdEGJMHQg2fBxaCpQeFgKYHvsCmB0QNqAdEoK4HIgHAB0SDwAciAcIHRIPCByIBxAdEgsQHIgHGB0SCxgc+EcgHRILQByIB0gdEgtIHIgHUB0SD1Ac+TNYHgEDcB76A3AeAwNwHvgDdB4BA3Qe+gN0HgMDdB74A3geAQN4HvoDeB4DA3ge+AN8HgEDfByAI4AcgCOQHIAjoB74F7AeAwO4HvgDvB5dA7weAgO8HF8HvBz5E8AeAQPIHvoDyB4DA8ge+A\u002FMHgMD0B66C9QeAwPYHPkP3B4DA+AeuA\u002FkHgMD6Bz4B+wcCgfsHvoP8B4BA\u002Fge+gP4HgMD+B74A\u002FweAQP8Hl4D\u002FBx4BAAiVhAAIgUAECJfABQiBAAkIl0AJCJmACQiBwAsIhcAMCLEADQiFgA0IscANCJcBDwiXwREIs8AVCIHAFwiVBRwIgcAeCBUCHwgfBSAIg4UiCBVEJQiXACoIGQFACIGAQAi\u002FwEAIGUFBCIHAQQi\u002FQEIILYVCCIFARQiXgEUIlUJGCJcASAiZQEgIl4BICIEASQiAgEkIgQBKCAKBSgiVBEsIH0JNCIFATgiZwE4IgwJPCJVCUQgZAVQIm4BUCBnGVAiXwFcIgQBYCJdAWAiZgFgIl8BYCIEAWQiXQFkImYBZCJvAWQiXAFoIgUBaCJeAWgiZwFoIlQJbCJdAXAiZgFwIl8BcCIEAXQiXQF0ImYBdCJvAXQiXAF4IgUBeCJeAXgiZwF4IFQJfCJlAYgg+gWYIvoBrCL5Bcwi+AIEIvkCCCL4Agwi+AYkIhQCLCLFAiwiFwIsIsQCMCL5AkAi+AJEIvsGRCL4BmAi+QpsIRAGdCEQBnghEAaAIRAGhCEQBogg+AqsIRAK4CCCCuggeQcoInwQYCSNFGgmXwBwJpQQdCStFHwmbwCEJoQQiCSVFJAmZwCYJJQ0nCR+NLQkfDTQJgYA6CbMAgwqZAJ0Kl0CdCpmAnQq+ALcKFQEfC4HAWwuBwKcLgcC8C60EwAutRMILrYTEC4PzxgstheALAx3jCy2I8QuBAAAMg4INDIQLEwyEQhkMIgEcDCLBHAwigR0MIkEeDCIBHwyEACUMI8EmDISAJwyFwCcMhAsrDIRCMQwiATQMIsE0DCKBNQwiQTYMIgE3DIQAPQwgwj0MhIA\u002FDIXAPwwtSkwMH0VRDJ\u002FKUwytFVkMA4dkDEEHgAyJgIMMKcGDDKlBhAyJAIUMKUGFDKnChQyJAIcMj0CHDI2AhwxBEogMAwKRDJkAlAyjRJQMI4OWDC0HmAyvhJsMocKdDLUAnwyzQJ8MhYCfDIMYoAwjQqwMI0WtDJfArwyhBLAMpUGyDJcAswyZQLMMl4CzDJnAswytF7QMhcC\u002FDLMBwAyxwMAMswDBDDFBwQy1wMEMswDCDLFBwgwzAcMMMYHDDIUAxAyxQMQMM4HEDIUAxQy1QMUMt4DFDLXAxQyxAMYMNUHGDLPAxgyxAccMs8DHDLUAyAyzQMgMsYHIDC9CyQwxQcoMtcDKDLEAywyzQMsMtYDLDLHAywwvAcwMtYDMDLPAzAy1AM0MsUDNDLWAzQyFwM0MsQLODLNAzwyxgM8MhcDPDLEB0AyzwNAMsQHRDLXA0QyzANIMhUDSDLWA0gyFwNIMMwHTDLGB0wyzQNQMhYDUDLHA1AyzANUMhUDVDLWA1QyxwNUMIQXWDCWF2AylAtsMmUDcDBeB3AyZAN0Ml0HdDCcB3gyFgt4MicDfDD8E4AyZAOIMm0DiDL+D4gwZQuQMBULlDD9D5gwxwecMhUDoDLGB6AyFQOkMB4HpDIkA6gyXQOoMGYLqDJ2A6wyNwOsMPwjsDAUB8AybgPAMl8HwDJuA8QyZwPEMFwXyDJmA9AwXwfQMGUH1DJfA9QybAPYMmUD2DBeC9gwZgfcMoQT4DCVF+gwlxfwMJUH\u002FDJnA\u002FwwDAacpgQDcKZWB\u002FCkDAf4pAwLXKoFA2iqCFEA+gn9KPoI\u002Faj4CoYo+EAGbPoIvnD6QxbM+lwHAPhnBwD4\u002FQcE+r8LEPoRBxz6tBMg+gUDKPgSDyj6gA8w+oALOPoSAzz4gAdA+IMHQPq6E0T6FwNM+LTHUPq3L9D4vifo+LQL\u002FPi8vAD+lghc\u002FscAYP68HGT+v\u002Fxw\u002FpYE8P69kPT8xIFQ\u002FMZtkPzEBfD+zg3w\u002FsUB+P72Afj+7wH4\u002FswB\u002FPwMFhD+tAYw\u002FFcOMPy1Gjj8DzJE\u002FlcaXP68BnD+FAJ0\u002FL4WdP606oD8vRL0\u002FH2\u002FAPx\u002FB1z+tX9g\u002FgQDoPx9P6D8fg\u002FA\u002FH4PyPx+D9D+fgfY\u002Fgwf4P4NN4EGRD+dBkoEmRJLAKkQSgUtEEsHSRBLCLkUSgW5FkgBORpKDV3QSw250Hw0AdR+NBnUfDQ11n4MTdR+JFXUfDRp1H40gdRUQJ3WfQy91n0UxdR8NNHUfjTp1lQNBdR9EQ3Wfg0V1H41HdZUHTnWfg1J1H41UdR8NW3UfjWF1Hw1odR+NbnUfDXV1H417dR8NgnUfjYh1Hw2PdR+NlXUfDZx1H42idQMBqXWfCKp1gUCudZ+DrnWBQLB1n4ywdYHAtnUtA7d1n4i4dYHAvHWfA711gcC+dZ8Mv3WBQMV1LYPFdZ8Ix3WBQMt1n4PLdYFAzXWfjM11gcDTdS0D1HWfiNV1gcDZdZ8D2nWBwNt1nwzcdYFA4nUtg+J1nwjkdYFA6HWfg+h1gUDqdZ+M6nWBwPB1LQTxdR+F83UfBfZ1H4X4dR8F+3Ufhf11nwQMeJ9BDnifBQ94A8IReK3QEngDARt4LQKAe61NgXsDQoh7gcCJey1FinsDBI17gYCQewPckXstBaB7rciie4NEqHutyKp7lwBAfCFFQHwlDUR8h4BKfBXBSnwXQUt8Hw1MfBeCUnyZgFN8l8BTfJeBWnyXAGR8LwGAfIGAgHwDFoR8wQSQfAMBlHwfBfx+rAEAvhDRAL6sRwm+EDkNviyHKb4sAi2+kDcuvpD\u002FSb4QvGm+AAAAACAAAABhAAIABAAGALwDCAAKAAwAFQCVAKUAuQDBAMMAxwDLANEA1wDdAOAA5gD4AAgBCgFzABABEgEUASABLAFEAU0BUwFiAWgBagF2AZIBlAGpAbsBxwHRAdUBuQLXATsA2QHbAbcA4QH8AQwCGAIdAiMCJwKjAzMCPwJCAksCTgJRAl0CYAJpAmwCbwJ1AngCgQKKApwCnwKjAq8CuQLFAskCzQLRAtUC5wLtAvEC9QL5Av0CBQMJAw0DEwMXAxsDIwMnAysDLwM1Az0DQQNJA00DUQMLD1cDWwNfA2MDZwNrA28DcwN5A30DgQOFA4kDjQORA5UDmQOdA6ED3BClA8kDzQPZA90D4QPvA\u002FEDPQRPBJkE8AQCBUoFZAVsBXAFcwWaBfoF\u002FgUHBgsGFAYYBh4GIgYoBo4GlAaYBp4GogarBqwD8watA\u002FYGrgP5Bq8D\u002FAbMA\u002F8GzQMCB84DBQcJBw0HEQeGAzIHNQe5AzcHOweIA1MHiQNWB5ADaweKA3cHsAOJB44DmQefB6MHjAO4B48Duwe0AL4HwAfCBxAgywcuAM0HzwcgANIH1gfbB98H5AfqB\u002FAHIAD2BxIiAQgFCAcIHQglCCcIQwAtCDAIkAE2CDkITgBFCEcITAhOCFEIWgCpA1oAUwhXCGAIaQBiCGUIbwh0CHoIfgiiCEkApAimCKkIVgCrCK0IsAi0CFgAtgi4CLsIwAjCCMUIdgDHCMkIzAjQCHgA0gjUCNcI2wjeCOQI5wjwCPMI9gj5CAIJBgkLCQ8JFAkXCRoJIwksCTsJPglBCUQJRwlKCVYJXAlgCWIJZAloCWoJcAl4CXwJgAmGCYkJjwmRCTAAkwmZCZwJngmhCaQJYS3Na5+fpgmxCbwJxwmVCqEKFQsgACcLMQuNC6ELpQupC60LsQu1C7kLvQvBC8ULIQw1DDkMPQxBDEUMSQxNDFEMVQxZDG8McQxzDKAMvAzcDOQM7Az0DPwMBA0MDRQNIg0uDXoNgg2FDYkNjQ2dDbENtQ28DcINxg0oDiwOMA4yDjYOPA4+DkEOQw5GDncOew6JDo4OlA6cDqMOqQ60Dr4Oxg7KDs8O2Q7dDuQO7A7zDvgOBA8KDxUPGw8iDygPMw89D0UPTA9RD1cPXg9jD2kPcA92D30Pgg+JD40Png+kD6kPrQ+4D74PyQ\u002FQD9YP2g\u002FhD+UP7w\u002F6DwAQBBAJEA8QExAaEB8QIxApEC8QMhA2EDkQPxBFEFkQYRB5EHwQgBCVEKEQsRDDEMsQzxDaEN4Q6hDyEPQQABEFERERQRFJEU0RUxFXEVoRbhFxEXURexF9EYERhBGMEZIRlhGcEaIRqBGrEW+nrxGyEbYRjQK+ERASDhMMFJAUlRRTFWwVchV4FX4VihWWFSsAoRW5Fb0VwRXFFckVzRXhFeUVSRZiFogWjhZMF1IXVxd3F3cYfRgRGdMZdxp\u002FGp0aohq2GsAaxhraGt8a5RrzGiMbMBs4GzwbUhvJG9sb3RvfG2QxIBwiHCQcJhwoHCocSBx+HMQc0hzXHOAc6Rz7HAQdCR0pHUQdRh1IHUodTB1OHVAdUh1yHXQddh14HXodgR2DHYUdhx2WHZgdmh2cHZ4doB2iHaQdph2oHaodrB2uHbAdsh22HfQDuB0HIrodAiK8HcQd9APGHQciyB0CIsod0h30A9QdByLWHQIi2B3gHfQD4h0HIuQdAiLmHe4d9APwHQci8h0CIvQd\u002Fh0AHgIeBB4GHggeCh4MHg4eFh45Hj0eQx5gHi0GaB50HiwGhB70HgAfEx8lHzgfOh8+H0QfSh9MH1AfUh9aH10fXx9lH2cftTBtH8Uf2x\u002FfH+Ef5h8zIEQgRSFVIVshVSJzIwBBwIQDC4ZJIIgghDIzIIEgpzFvMdA0MdAyM9A0QYBBgUGCQYNBiEGKAABDp0WARYFFgkWISYBJgUmCSYgAAE6DT4BPgU+CT4NPiAAAAABVgFWBVYJViFmBAAAAAGGAYYFhgmGDYYhhigAAY6dlgGWBZYJliGmAaYFpgmmIAABug2+Ab4Fvgm+Db4gAAAAAdYB1gXWCdYh5gQAAeYhBhEGGQahDgUOCQ4dDjESMRYRFhkWHRahFjEeCR4ZHh0enSIJJg0mESYZJqEmHSUppakqCS6dMgUynTIxMAABrIGtOgU6nToy8Am5PhE+GT4tSgVKnUoxTgVOCU6dTjFSnVIxVg1WEVYZVilWLVahXglmCWYhagVqHWoxPm1WbRAB9AUQAfgFkAH4BTEpMamxqTkpOam5qQQCMSQCMTwCMVQCM3ACE3ACB3ACM3ACAxACEJgKExgCER4xLjE+o6gGE6wGEtwGMkgKMagCMRFpEemR6R4FOAIDFAIHGAIHYAIFBj0GRRY9FkUmPSZFPj0+RUo9SkVWPVZFTplSmSIxBAIdFAKfWAITVAIRPAIcuAoRZAIRoAGYCagByAHkCewKBAncAeQAghiCHIIogqCCDIItjAmwAcwB4AJUCgIEAk4iBIMUggagAgZEDgZUDgZcDgZkDgQAAAJ8DgQAAAKUDgakDgcoDgQEDmAekB7AAtAC2ALgAygABA7gHxAe+AMQAyAClAw0TAAED0QDRB8YDwAO6A8EDwgMAAJgDtQMVBIAVBIgAAAATBIEGBIgaBIEYBIAjBIYYBIY4BIY1BIA1BIgAAAAzBIFWBIg6BIE4BIBDBIZ0BI8WBIYQBIYQBIgVBIbYBIgWBIgXBIgYBIQYBIgeBIjoBIgtBIgjBIQjBIgjBIsnBIgrBIhlBYIFJwYALAAtIS0ALiMtJwYATSFNoE0jTdUGVAYAAAAAwQZUBtIGVAYoCTwJMAk8CTMJPAkVCQAnAScCJwcnDCcNJxYnGie+CQkACRmhCbwJrwm8CTIKPAo4CjwKFgoAJgEmBiYrCjwKRwtWCz4LCQAJGSELPAuSC9cLvgsIAAkACBlGDFYMvwzVDMYM1QzCDAQACBM+DQgACQAIGdkNyg3KDQ8FEgAPFU0OMg7NDrIOmQ4SABIIQg+3D0wPtw9RD7cPVg+3D1sPtw9AD7UPcQ9yD3EPAANBD7IPgQ+zD4APsw+BD3EPgA+SD7cPnA+3D6EPtw+mD7cPqw+3D5APtQ8lEC4QBRs1GwAAAAAHGzUbAAAAAAkbNRsAAAAACxs1GwAAAAANGzUbERs1GzobNRsAAAAAPBs1Gz4bNRtCGzUbQQDGAEIAAABEAEUAjgFHAE8AIgJQAFIAVABVAFcAYQBQAlECAh1iAGQAZQBZAlsCXAJnAAAAawBtAEsBbwBUAhYdFx1wAHQAdQAdHW8CdgAlHbIDswO0A8YDxwNpAHIAdQB2ALIDswPBA8YDxwNSAmMAVQLwAFwCZgBfAmECZQJoAmkCagJ7HZ0CbQKFHZ8CcQJwAnICcwJ0AnUCeAKCAoMCqwGJAooCHB2LAowCegCQApECkgK4A0EApUIAh0IAo0IAsccAgUQAh0QAo0QAsUQAp0QArRIBgBIBgUUArUUAsCgChkYAh0cAhEgAh0gAo0gAiEgAp0gArkkAsM8AgUsAgUsAo0sAsUwAozYehEyxTK1NgU2HTaNOh06jTrFOrdUAgdUAiEwBgEwBgVAAgVAAh1IAh1IAo1oehFIAsVMAh1MAo1oBh2ABh2Ieh1QAh1QAo1QAsVQArVUApFUAsFUArWgBgWoBiFaDVqNXgFeBV4hXh1ejWIdYiFmHWoJao1qxaLF0iHeKeYphAL4CfwGHQQCjQQCJwgCBwgCAwgCJwgCDoB6CAgGBAgGAAgGJAgGDoB6GRQCjRQCJRQCDygCBygCAygCJygCDuB6CSQCJSQCjTwCjTwCJ1ACB1ACA1ACJ1ACDzB6CoAGBoAGAoAGJoAGDoAGjVQCjVQCJrwGBrwGArwGJrwGDrwGjWQCAWQCjWQCJWQCDsQMTAwAfgAAfgQAfwpEDEwMIH4AIH4EIH8K1AxMDEB+AEB+BlQMTAxgfgBgfgbcDk7cDlCAfgCEfgCAfgSEfgSAfwiEfwpcDk5cDlCgfgCkfgCgfgSkfgSgfwikfwrkDk7kDlDAfgDEfgDAfgTEfgTAfwjEfwpkDk5kDlDgfgDkfgDgfgTkfgTgfwjkfwr8Dk78DlEAfgEAfgZ8DEwNIH4BIH4HFAxMDUB+AUB+BUB\u002FCpQOUAAAAWR+AAAAAWR+BAAAAWR\u002FCyQOTyQOUYB+AYR+AYB+BYR+BYB\u002FCYR\u002FCqQOTqQOUaB+AaR+AaB+BaR+BaB\u002FCaR\u002FCsQOAtQOAtwOAuQOAvwOAxQOAyQOAAB9FAyAfRQNgH0UDsQOGsQOEcB\u002FFsQPFrAPFAAAAsQPCth\u002FFkQOGkQOEkQOAkQPFIJMgkyDCqADCdB\u002FFtwPFrgPFAAAAtwPCxh\u002FFlQOAlwOAlwPFvx+Avx+Bvx\u002FCuQOGuQOEygOAAAO5QspCmQaZBJkA\u002Fh+A\u002Fh+B\u002Fh\u002FCxQOGxQOEywOAAAPBE8EUxULLQqUGpQSlAKEDlKgAgIUDYAB8H8XJA8XOA8UAAADJA8L2H8WfA4CpA4CpA8UglAIgICAgICAgICAgILMuLi4uLjIgMiAyIAAAADUgNSA1IAAAACEhAAAghT8\u002FPyEhPzIgAAAAADBpAAA0NTY3ODkrPSgpbjAAKwASIj0AKAApAAAAYQBlAG8AeABZAmhrbG1ucHN0UnNhL2NhL3OwAENjL29jL3WwAEZIAB8AAAAg3wEBBCROb1BRUlJSU01URUxUTUsAxQBCQwBlRUYATW\u002FQBUZBWMADswOTA6ADESJEZGVpajHQNzHQOTHQMTAx0DMy0DMx0DUy0DUz0DU00DUx0DY10DYx0Dgz0Dg10Dg30Dgx0ElJSUlJSVZWSVZJSVZJSUlJWFhJWElJTENETWlpaWlpaWl2dml2aWl2aWlpaXh4aXhpaWxjZG0w0DOQIbiSIbiUIbjQIbjUIbjSIbgDIrgIIrgLIrgjIrgAAAAlIrgrIisiKyIAAAAuIi4iLiIAAAA8IrhDIrhFIrgAAABIIrg9ALgAAABhIrhNIrg8ALg+ALhkIrhlIrhyIrh2Irh6IriCIriGIriiIrioIripIrirIrh8IriRIriyIjgDCDAxADEAMAAyMCgAMQApACgAMQAwACkAKDIwKTEALgAxADAALgAyMC4oAGEAKQBBAGEAKyIAAAAAOjo9PT09PT3dKrhqVgBOACg2P1mFjKC6P1EAJixDV2yhtsGbUgBeen+dpsHO57ZTyFPjU9dWH1frWAJZClkVWSdZc1lQW4Bb+FsPXCJcOFxuXHFc213lXfFd\u002Fl1yXnpef170Xv5eC18TX1BfYV9zX8NfCGI2YktiL2U0ZYdll2WkZbll4GXlZfBmCGcoZyBrYmt5a7Nry2vUa9trD2wUbDRsa3AqcjZyO3I\u002FckdyWXJbcqxyhHOJc9x05nQYdR91KHUwdYt1knV2dn12rna\u002Fdu5223fid\u002FN3Onm4eb55dHrLevl6c3z4fDZ\u002FUX+Kf71\u002FAYAMgBKAM4B\u002FgImA44EABxAZKTg8i4+VTYZrhkCITIhjiH6Ji4nSiQCKN4xGjFWMeIydjGSNcI2zjauOyo6bj7CPtY+RkEmRxpHMkdGRd5WAlRyWtpa5luiWUZdel2KXaZfLl+2X85cBmKiY25jfmJaZmZmsmaia2JrfmiWbL5symzybWpvlnHWef56lngAWHigsVFhpbnuWpa3o9\u002FsSMAAAQVNEU0VTSzCZMAAAAABNMJkwAAAAAE8wmTAAAAAAUTCZMAAAAABTMJkwAAAAAFUwmTAAAAAAVzCZMAAAAABZMJkwAAAAAFswmTAAAAAAXTCZMAAAAABfMJkwAAAAAGEwmTBkMJkwAAAAAGYwmTAAAAAAaDCZMG8wmTByMJkwdTCZMHgwmTB7MJkwRjCZMCAAmTCdMJkwiDCKMKswmTAAAAAArTCZMAAAAACvMJkwAAAAALEwmTAAAAAAszCZMAAAAAC1MJkwAAAAALcwmTAAAAAAuTCZMAAAAAC7MJkwAAAAAL0wmTAAAAAAvzCZMAAAAADBMJkwxDCZMAAAAADGMJkwAAAAAMgwmTDPMJkw0jCZMNUwmTDYMJkw2zCZMKYwmTDvMJkw\u002FTCZMLMwyDAAEQABqgKsrQMEBbCxsrO0tRoGBwghCRFhERQRTAABs7S4ur\u002FDxQjJywkKDA4PExUXGBkaGx4iLDM43d5DREVwcXR9foCKjQBOjE4JTttWCk4tTgtOMnVZThlOAU4pWTBXuk4oACkAABECEQMRBREGEQcRCRELEQwRDhEPERARERESESgAABFhESkAKAACEWERKQAoAAURYREpACgACRFhESkAKAALEWERKQAoAA4RYREpACgADBFuESkAKAALEWkRDBFlEasRKQAoAAsRaRESEW4RKQAoACkAAE6MTglO21aUTm1RA05rUV1OQVMIZ2twNGwoZ9GRH1flZSpoCWc+eQ1UeXKhjF15tFLjTnxUZlvjdgFPx4xUU215EU\u002FqgfOBT1V8Xodlj3tQVEUyADEAMwAwAAARAAIDBQYHCQsMDg8QERIAEQBhAmEDYQVhBmEHYQlhC2EMYQ4RYREAEQ5htwBpCxEBYwBpCxFuEQBOjE4JTttWlE5tUQNOa1FdTkFTCGdrcDRsKGfRkR9X5WUqaAlnPnkNVHlyoYxdebRS2Hk3dXNZaZAqUXBT6GwFmBFPmVFjawpOLU4LTuZd81M7U5dbZlvjdgFPx4xUUxxZMwA2ADQAMAA1MDEACGcxADAACGdIZ2VyZ2VWTFREojAAAgQGCAkLDQ8RExUXGRsdHyIkJigpKissLTAzNjk8PT4\u002FQEJERkdISUpLTU5PUOROjFShMAEwWycBSjQAAVI5AaIwAFpJpDAAJ08MpDAATx0CBU+oMAARB1QhqDAAVANUpDAGTxUGWDwHAEarMAA+GB0AQj9RrDAAQUcARzKuMKwwrjAAHU6tMAA4PU8BPhNPrTDtMK0wAEADPDOtMABANE8bPq0wAEBCFhuwMAA5MKQwDEU8JE8LRxgASa8wAD5NHrEwAEsIAjoZAksspDARAAtHtTAAPgxHK7AwBzpDALkwAjoIAjoPB0MAtzAQABI0ETwTF6QwKh8kKwAguzAWQQA4DcQwDTgA0DAALBwbojAyABcmSa8wJQA8szAhACA4oTA0AEgiKKMwMgBZJacwLxwQAETVMAAUHq8wKQAQTTzaML0wuDAiExogMwwiOwEiRAAhRAekMDkATyTIMBQjANsw8zDJMBQqABIzIhIzKqQwOgALSaQwOgBHOh8rOkcLtzAnPAAwPK8wMAA+RN8w6jDQMA8aACwb4TCsMKwwNQAcRzVQHD+iMEJaJ0JaSUQAUcMwJwAFKOow6TDUMBcAKNYwFSYAFeww4DCyMDpBFgBBwzAsAAUwALlwMQAwALlwMgAwALlwaFBhZGFBVWJhcm9WcGNkbWQAbQCyAEkAVQBzXhBiLWaMVCdZY2sOZrtsKmgPXxpPPnlwAEFuAEG8A0FtAEFrAEFLAEJNAEJHAEJjYWxrY2FscABGbgBGvANGvANnbQBnawBnSAB6a0h6TUh6R0h6VEh6vAMTIW0AEyFkABMhawATIWYAbW4AbbwDbW0AbWMAbWsAbWMACgpPAApPbQCyAGMACApPCgpQAApQbQCzAGsAbQCzAG0AFSJzAG0AFSJzALIAUGFrUGFNUGFHUGFyYWRyYWTRc3IAYQBkABUicwCyAHAAc24Ac7wDc20Ac3AAVm4AVrwDVm0AVmsAVk0AVnAAV24AV7wDV20AV2sAV00AV2sAqQNNAKkDYS5tLkJxY2NjZEPRa2dDby5kQkd5aGFIUGluS0tLTWt0bG1sbmxvZ2x4bWJtaWxtb2xQSHAubS5QUE1QUnNyU3ZXYlbRbUHRbTEA5WUxADAA5WUyADAA5WUzADAA5WVnYWxKBEwEQ0ZRJgFTASenN6trAlKrSIz0ZsqOyIzRbjJO5VOcn5yfUVnRkYdVSFn2YWl2hX8\u002FhrqH+IiPkAJqG23ZcN5zPYRqkfGZgk51UwRrG3Ithh6eUF3rb82FZInJYtiBH4jKXhdnam38cs6Qhk+3Ud5SxGTTahBy53YBgAaGXIbvjTKXb5v6nYx4f3mgfcmDBJN\u002FntaK31gEX2B8foBicsp4woz3lthYYlwTatptD28vfTd+S5bSUouA3FHMURx6vn3xg3WWgIvPYgJq\u002Foo5TudbEmCHc3B1F1P7eL9PqV8NTsxseGUifcNTXlgBd0mEqoq6a7CPiGz+YuWCoGNlda5OaVHJUYFo53xvgtKKz5H1UkJUc1nsXsVl\u002Fm8qea2VapqXns6em1LGZndrYo90XpBhAGKaZCNvSXGJdMp59H1vgCaP7oQjkEqTF1KjUr1UyHDCiKqKyV71X3tjrms+fHVz5E75Vudbul0cYLJzaXSaf0aANJL2lkiXGJiLT655tJG4luFghk7aUO5bP1yZZQJqznFCdvyEfJCNn4hmLpaJUntn82dBbZxuCXRZdWt4EH1emG1RLmJ4litQGV3qbSqPi19EYRdoh3OGlilSD1RlXBNmTmeoaOVsBnTidXl\u002Fz4jhiMyR4pY\u002FU7puHVTQcZh0+oWjllecn56XZ8tt6IHLeiB7knzAcplwWIvATjaDOlIHUqZe02LWfIVbHm20ZjuPTIhNlouJ015AUcBVAAAAAFpYAAB0ZgAAAADeUSpzynY8eV55ZXmPeVaXvny9fwAAEoYAAPiKAAAAADiQ\u002FZDvmPyYKJm0nd6Qt5auT+dQTVHJUuRSUVOdVQZWaFZAWKhYZFxuXJRgaGGOYfJhT2XiZZFmhWh3bRpuIm9ucStyInSReD55SXlIeVB5VnldeY15jnlAeoF6wHv0fQl+QX5yfwWA7YF5gnmCV4QQiZaJAYs5i9OMCI22jziQ45b\u002FlzuYdWDuQhiCAiZOtVFoUYBPRVGAUcdS+lKdVVVVmVXiVVpYs1hEWVRZYlooW9Je2V5pX61f2GBOYQhhjmFgYfJhNGLEYxxkUmRWZXRmF2cbZ1ZneWu6a0Ft227LbiJvHnBucad3NXKvcipzcXQGdTt1HXYfdsp223b0dkp3QHfMeLF6wHt7fFt99H0+fwWAUoPvg3mHQYmGiZaJv4r4isuKAYv+iu2KOYuKiwiNOI9ykJmRdpJ8luOWVpfbl\u002F+XC5g7mBKbnJ9KKEQo1TOdOxhAOUBJUtBc035Dn46fKqACZmZmaWZsZmZpZmZsfwF0cwB0ZQUPEQ8ADwYZEQ8I2QW0BQAAAADyBbcF0AUSAAMECwwNGBrpBcEF6QXCBUn7wQVJ+8IF0AW3BdAFuAXQBbwF2AW8Bd4FvAXgBbwF4wW8BbkFLQMuAy8DMAMxAxwAGAYiBisG0AXcBXEGAAAKCgoKDQ0NDQ8PDw8JCQkJDg4ODggICAgzMzMzNTU1NRMTExMSEhISFRUVFRYWFhYcHBsbHR0XFycnICA4ODg4Pj4+PkJCQkJAQEBASUlKSkpKT09QUFBQTU1NTWFhYmJJBmRkZGR+fn19f38ugoJ8fICAh4eHhwAAJgYAAQABAK8ArwAiACIAoQChAKAAoACiAKIAqgCqAKoAIwAjACPMBgAAAAAmBgAGAAcAHwAjACQCBgIHAggCHwIjAiQEBgQHBAgEHwQjBCQFBgUfBSMFJAYHBh8HBgcfCAYIBwgfDQYNBw0IDR8PBw8fEAYQBxAIEB8RBxEfEh8TBhMfFAYUHxsGGwcbCBsfGyMbJBwHHB8cIxwkHQEdBh0HHQgdHh0fHSMdJB4GHgceCB4fHiMeJB8GHwcfCB8fHyMfJCAGIAcgCCAfICMgJCEGIR8hIyEkJAYkByQIJB8kIyQkCkoLSiNKIABMBlEGUQb\u002FAB8mBgALAAwAHwAgACMAJAILAgwCHwIgAiMCJAQLBAwEHyYGBCAEIwQkBQsFDAUfBSAFIwUkGyMbJBwjHCQdAR0eHR8dIx0kHh8eIx4kHwEfHyALIAwgHyAgICMgJCNKJAskDCQfJCAkIyQkAAYABwAIAB8AIQIGAgcCCAIfAiEEBgQHBAgEHwQhBR8GBwYfBwYHHwgGCB8NBg0HDQgNHw8HDwgPHxAGEAcQCBAfEQcSHxMGEx8UBhQfGwYbBxsIGx8cBxwfHQYdBx0IHR4dHx4GHgceCB4fHiEfBh8HHwgfHyAGIAcgCCAfICEhBiEfIUokBiQHJAgkHyQhAB8AIQIfAiEEHwQhBR8FIQ0fDSEOHw4hHR4dHx4fIB8gISQfJCFABk4GUQYnBhAiECMSIhIjEyITIwwiDCMNIg0jBiIGIwUiBSMHIgcjDiIOIw8iDyMNBQ0GDQcNHg0KDAoOCg8KECIQIxIiEiMTIhMjDCIMIw0iDSMGIgYjBSIFIwciByMOIg4jDyIPIw0FDQYNBw0eDQoMCg4KDwoNBQ0GDQcNHgwgDSAQHgwFDAYMBw0FDQYNBxAeER4AJAAkKgYAAhsAAwIAAwIAAxsABBsAGwIAGwMAGwQCGwMCGwMDGyADGx8JAwIJAgMJAh8JGwMJGwMJGwIJGxsJGxsLAwMLAwMLGxsKAxsKAxsKAiAKGwQKGwQKGxsKGxsMAx8MBBsMBBsNGwMNGwMNGxsNGyAPAhsPGxsPGxsPGx8QGxsQGyAQGx8XBBsXBBsYGwMYGxsaAxsaAyAaAx8aAgIaAgIaBBsaBBsaGwMaGwMbAwIbAxsbAyAbAgMbAhsbBAIbBBsoBh0EBh8dBB8dHR4FHR4FIR4EHR4EHR4EIR4dIh4dISIdHSIdHQAGIgIEIgIEIQIGIgIGIQIdIgIdIQQdIgQFIQQdIQsGIQ0FIgwFIg4FIhwEIhwdIiIFIiIEIiIdIh0dIhodIh4FIhodBRwFHREdIhsdIh4EBR0GIhwEHRsdHRwEHR4EBQQFIgUEIh0EIhkdIgAFIhsdHREEHQ0dHQsGIh4EIjUGAA+dDQ+dJwYAHR0gABwBCh4GHggOHRIeCgwhHRIdIyAhDB0eNQYADxQnBg4dIv8AHR0g\u002FxIdIyD\u002FIQwdHicGBR3\u002FBR0AHSAnBgqlAB0sAAEwAjA6ADsAIQA\u002FABYwFzAmIBMgEgEAX18oKXt9CDAMDQgJAgMAAQQFBgdbAF0APiA+ID4gPiBfAF8AXwAsAAEwLgAAADsAOgA\u002FACEAFCAoACkAewB9ABQwFTAjJiorLTw+PQBcJCVAQAb\u002FCwAL\u002FwwgAE0GQAb\u002FDgAO\u002Fw8AD\u002F8QABD\u002FEQAR\u002FxIAEiEGAAEBAgIDAwQEBQUFBQYGBwcHBwgICQkJCQoKCgoLCwsLDAwMDA0NDQ0ODg8PEBARERISEhITExMTFBQUFBUVFRUWFhYWFxcXFxgYGBgZGRkZICAgICEhISEiIiIiIyMjIyQkJCQlJSUlJiYmJicnKCgpKSkpIgYiACIAIgEiASIDIgMiBSIFIQCFKQEwAQsMAPrxoKKkpqji5ObC+6GjpaepqqyusLK0tri6vL7Aw8XHycrLzM3O0dTX2t3e3+Dh4+Xn6Onq6+zu8piZMTFPMVUxWzFhMaIAowCsAK8ApgClAKkgAAACJZAhkSGSIZMhoCXLJdAC0QLmAJkCUwIAAKMCZqulAqQCVgJXApEdWAJeAqkCZAJiAmACmwInAZwCZwKEAqoCqwJsAgTfjqduAgXfjgIG3\u002FgAdgJ3AnEAegII330CfgKAAqgCpgJnq6cCiAJxLAAAjwKhAqICmALAAcEBwgEK3x7fQQRAAAAAABSZELoQAAAAAJsQuhAFBaUQuhAFMREnETIRJxFVRxM+E0cTVxNVuRS6FLkUsBQAAAAAuRS9FFVQuBWvFbkVrxVVNRkwGQVX0WXRWNFl0V\u002FRbtFf0W\u002FRX9Fw0V\u002FRcdFf0XLRVVVVBbnRZdG60WXRu9Fu0bzRbtG70W\u002FRvNFv0VVVVUEAYQBBAGEAaQBBAGEAQQBDRAAARwAASksAAE5PUFEAU1RVVldYWVphYmNkAGZoAHAAQQBhAEFCAERFRkdKAFMAYQBBQgBERUZHAElKS0xNAE9TAGEAQQBhAEEAYQBBAGEAQQBhAEEAYQBBAGEAMQE3ApEDowOxA9EDJAAfBCAFkQOjA7ED0QMkAB8EIAWRA6MDsQPRAyQAHwQgBZEDowOxA9EDJAAfBCAFkQOjA7ED0QMkAB8EIAULDDAAMAAwADAAMAAwBDoEPgRLBE0ETgSJpjAEqSYouX+fAAECAwQFBgcICgsODxETFBUWFxgaG2EmJS97UaaxBCcGAAEFCCoGHggDDSAZGhscCQ8XCxgHCgABBAYMDhBEkHdFKAYsBgAARwYzBhcQERITAAYOAg80BioGKwYuBgAANgYAADoGLQYAAEoGAABEBgAARgYzBjkGAAA1BkIGAAA0BgAAAAAuBgAANgYAADoGAAC6BgAAbwYAACgGLAYAAEcGAAAAAC0GNwZKBkMGAABFBkYGMwY5BkEGNQZCBgAANAYqBisGLgYAADYGOAY6Bm4GAAChBicGAAEFCCAhCwYQIyoGGhscCQ8XCxgHCgABBAYMDhAoBiwGLwYAAEgGMgYtBjcGSgYqBhobHAkPFwsYBwoAAQQGDA4QMC4wACwAKABBACkAFDBTABUwQ1JDRFdaQQBIVk1WU0RTU1BQVldDTUNNRE1SREpLMDAAaGhLYldbzFPHMIxOGlnjiSlZpE4gZiFxmWVNUoxfjVGwZR1SQn0fdamM8Fg5VBRvlWJVYwBOCU5KkOZdLU7zUwdjcI1TYoF5enoIVIBuCWcIZzN1clK2VU2RFDAVMCxnCU6MTolbuXBTYtd23VJXZZdf71MwADhOBQAJIgFgT65Pu08CUHpQmVDnUM9QnjQ6Bk1RVFFkUXdRHAW5NGdRjVFLBZdRpFHMTqxRtVHfkfVRA1LfNDtSRlJyUndSFTUCACCAgAAIAADHUgACHTM+P1CCipOstri4uCwKcHDKU99TYwvrU\u002FFTBlSeVDhUSFRoVKJU9lQQVVNVY1WEVYRVmVWrVbNVwlUWVwZWF1dRVnRWB1LuWM5X9FcNWItXMlgxWKxY5BTyWPdYBlkaWSJZYlmoFuoW7FkbWida2FlmWu42\u002FDYIWz5bPlvIGcNb2FvnW\u002FNbGBv\u002FWwZcU18iXIE3YFxuXMBcjVzkHUNd5h1uXWtdfF3hXeJdLzj9XShePV5pXmI4gyF8OLBes162XspekqP+XjEjMSMBgiJfIl\u002FHOLgy2mFiX2tf4ziaX81f11\u002F5X4FgOjkcOZRg1CbHYAICAAAAAAAAAAgACgAAAggAgAgAAAiAKIACAAACSGEABAYEMkZqXGeWqq7I011iAFR38wwrPWP8Ymhjg2PkY\u002FErImTFY6ljLjppZH5knWR3ZGw6T2VsZQow42X4ZklmGTuRZgg75DqSUZVRAGecZq2A2UMXZxtnIWdeZ1NnwzNJO\u002FpnhWdSaIVobTSOaB9oFGmdO0Jpo2nqaahqozbbahg8IWunOFRrTjxya59rumu7a406Cx36Ok5svDy\u002FbM1sZ2wWbT5td21BbWlteG2FbR49NG0vbm5uMz3Lbsdu0T75bW5vXj+OP8ZvOXAecBtwlj1KcH1wd3CtcCUFRXFjQpxxq0MocjVyUHIIRoBylXI1RwIgAAAgAAAAAAiAAAACAoCKAAAgAAgKAICIgCAUSHpzi3OsPqVzuD64Pkd0XHRxdIV0ynQbPyR1Nkw+dZJMcHWfIRB2oU+4T0RQ\u002FD8IQPR281DyUBlRM1Eedx93H3dKdzlAi3dGQJZAHVROeIx4zHjjQCZWVnmaVsVWj3nreS9BQHpKek96fFmnWqda7noCQqtbxnvJeydCgFzSfKBC6HzjfAB9hl9jfQFDx30CfkV+NEMoYkdiWUPZYnp\u002FPmOVf\u002Fp\u002FBYDaZCNlYICoZXCAXzPVQ7KAA4ELRD6BtVqnZ7VnkzOcMwGCBIKej2tEkYKLgp2Cs1KxgrOCvYLmgjxr5YIdg2ODrYMjg72D54NXhFODyoPMg9yDNmxrbQIAACAiKqAKACCAKACoICAAAoAiAooIAKoAAAACAAAo1WwrRfGE84QWhcpzZIUsb11FYUWxb9Jwa0VQhlyGZ4ZphqmGiIYOh+KGeYcoh2uHhofXReGHAYj5RWCIY4hndteI3og1RvqIuzSueGZ5vkbHRqCK7YqKi1WMqHyrjMGMG413jS9\u002FBAjLjbyN8I3eCNSOOI\u002FShe2FlJDxkBGRLocbkTiS15LYknyS+ZMVlPqLi5WVSbeVd43mScOWsl0jl0WRGpJuSnZK4JcKlLJKlpQLmAuYKZi2leKYM0spmaeZwpn+mc5LMJsSm0Cc\u002FZzOTO1MZ53OoPhMBaEOopGiu55WTfme\u002Fp4Fnw+fFp87nwCmAoigAAAAAIAAKAAIoICggACAgAAKiIAAgAAgKgCAAEQgFSIAQdDNAwtXTQMAlwUgxgUA5wYARQcAnAgATQkAPAsAPQ0ANg8AOBAgOhkAyxog0xwAzx0A4iAALjAgK6kg7asAOQoBUQ8BcxEBdRMBKxchPxwhnrwhCOABROkBS+kBAEGwzgMLgweyz9QA6APcAOgA2ATcAcoD3AHKCtwEAQPcxwDwwALcwgHcgMID3MAA6AHcwEHpAOpB6QDqAOnMsOLEsNgA3MMA3MIA3gDcxQXcwQDcwQDeAOTASQpDE4AAF4BBGIDAANyAABKwF8dCHq9HG8EB3MQA3MEA3I8AI7A0xoHDANzAgcGAANzBANyiACSdwADcwQDcwQLcwAHcwADcwgDcwADcwADcwADcwbBvxgDcwIgA3JfDgMiAwoDEqgLcsAvAAtzDqcQE3M2AANzBANzBANzCAtxCG8IA3MEB3MSwCwAHjwAJgsAA3MGwNgAHjwAJr8CwDAAHjwAJsD0AB48ACbA9AAePAAmwTgAJsD0AB48ACYYAVABbsDQAB48ACbA8AQmPAAmwSwAJsDwBZwAJjANrsDsBdgAJjAN6sBsB3JoA3IAA3IAA2LAGQYGAAISEA4KBAIKAwQAJgMGwDQDcsD8AB4ABCbAhANyynsKzgwEJnQAJsGwACYnAsJoA5LBeAN7AANywqsAA3LAWAAmTx4EA3K\u002FEBdzBANyAAdzBAdzEANzDsDQAB44ACaXAANzGsAUBCbAJAAeKAQmwEgAHsGfCQQAE3MED3MBBAAUBgwDchcCCwbCVwQDcxgDcwQDqANYA3ADK5ADoAeQA3ADawADpANzAANyyn8EBAcMCAcGDwIIBAcAA3MABAQPcwLgDzcKwXAAJsC\u002FfsfkA2gDkAOgA3gHgsDgBCLhto8CDyZ\u002FBsB\u002FBsOMACaQACbBmAAma0bAIAtykAAmwLgAHiwAJsL7AgMEA3IHBhMGAwLADAAmwxQAJuEb\u002FABqy0MYG3MGznADcsLEA3LBkxLZhANyAwKfAAAEA3IMACbB0wADcsgzDsVLBsB8C3LAVAdzCANzAA9ywAMAA3MAA3LCPAAmoAAmNAAmwCAAJAAewFMKvAQmwDQAHsBsACYgAB7A5AAkAB7CBAAcACbAfAQePAAmXxoLEsJwACYIAB5bAsDIACQAHsMoACQAHsE0ACbBFAAkAB7BCAAmw3AAJAAew0QEJgwAHsGsACbAiAAmRAAmwIAAJsXQACbDRAAeAAQmwIAAJsXgBCbhDfAQBsArGtIgBBrhEewABuAyVAdgCAYIA4gTYhwfcgcQB3J3DsGPCuAWKxoDQgcaAwYDEsDPAsG\u002FGsUbAsAzDscsB6ADcwLOvBtywPMUABwBBwNUDC+IOAUrASQJKgAKBAoICgwLAAsICAAqEAkIkhQLAB4AJgglAJIAixAKCIoQihiLGAsgCygLMAocCiiLOAowikCKSIo4iiAKJAooCgiQAAwIDBAOLAoAkCAOECYYJWCQCCgYDmCKaIp4iAAkKA6AiDAMOA0AIEAMSA6IipiLACaQiqCKqIowCjQKOAkADQgNEA4ADjwKOJMIHiAmKCZAkRgOsIgAEsCJCCLIiAgS0IkAERAS2IkIEwiLAIsQixiLIIkAJwASRAsoixATMIsIE0CLOIpICkwKUApUCQAVCBQgKlgKUJEQFxAeMCY4JwAaSJEQICCMKI4AFDCOEBZAJkgkOI4IFEiOGBYgFFCOMBRYjmAmKBR4jkAUgI5oJjgUkIyIjmQKaApsCwAXCBcQFnAKsJMYFyAXGB5QJlgkAB6okJiPKBSojKCNAI0IjRCNGI8wFSiNII0wjTiNQI7gknQLOBb4kDApSIwAGvCS6JEAGVCNCBkQGViNYI6ACoQKiAqMCwQLDAgEKpAJDJKUCwQeBCYMJQSSBIsUCgyKFIocixwLJAssCzQKnAosizwKNIpEikyKPIqgCqQKqAoMkAQMDAwUDqwKBJAkDhQmHCVkkAwoHA5kimyKfIgEJCwOhIg0DDwNBCBEDEwOjIqciwQmlIqkiqyKAI6wCrQKuAkEDQwNFA68CjyTDB4kJiwmRJEcDrSIBBIQIsSJDCLMiAwS1IkEERQS3IkMEwyLBIsUixyLJIkEJwQSxAssixQTNIsME0SLPIrICswK0ArUCQQVDBQkKtgKVJEUFxQeNCY8JwQaTJEUICSMLI4EFDSOFBZEJkwkPI4MFEyOHBYkFFSONBRcjmQmLBR8jgSORBSEjmwmPBSUjIyO5AroCuwLBBcMFxQW8Aq0kxwXJBccHlQmXCQEHqyQnI8sFKyMpI0EjQyNFI0cjzQVLI0kjgiNNI08jUSO5JL0CzwW\u002FJA0KUyO\u002FAr0kgyO7JEEGVSNDBkUGVyNZIwExgAwALkYkRCRKJEgkAAhCCUQJBAiIIoYkhCSKJIgkriKYJJYknCSaJAAjBgoCIwQKRgnOB8oHyAfMB0ckRSRLJEkkAQhDCUUJBQiJIockhSSLJIkkryKZJJcknSSbJAEjBwoDIwUKRwnPB8sHyQfNB1AkTiRUJFIkUSRPJFUkUySUIpYilSKXIgQjBiMFIwcjGCMZIxojGyMsIy0jLiMvIwAkoiSgJKYkpCSoJKMkoSSnJKUkqSSwJK4ktCSyJLYksSSvJLUksyS3JIIIgAiBCAIIAwicIp0iCgoLCoMIQAuKLIEMiSyILEAlQSUALQcuAA1AJkEmgC4BDcgmySYAL4QvAg2DL4IvQA3YJtkmhjEEDUAnQScAMYYwBg2FMIQwQQ1AKAAyBw1PKFAogDKELAMuVyhCDYEsgCzAJMEkhiyDLMAoQw3AJcElQClEDcAmwSYFLgIuwClFDQUvBC+ADdAm0SaAL0Aqgg3gJuEmgDCBMMAqgw0EMAMwgQ3AJ8EngjBAK4QNRyhIKIQxgTEGLwgNgS8FMEYNgzCCMQAOAQ5AD4ARghEDDwAPwBEBD0ARAhIEEoEPQBLAD0ISgA9EEoQSgg+GEogSihLAEoISgRGDEUMQQBDBEUEQQREDEgUSwRBBEgAQQxLAEEUShRLCEIcSiRKLEsESgxKAEAARAREAEgESgBKBEkATQRNDE0ITRBPCEwAUwBNAFIAUwBRAFUEVQBcAF0EXwBcAGAIYARhAGIAYABnAGMEYARlAGUIZQRmAGcAZwhnBGYAcwBzAHYAfACACIAQgBiAIIEAggCCCIMAgwSAAIbgiuSIQIxEjHCMdI0wkViRNJFckjCSNJJ4knyQAJQIlBCXAKwElAyUFJcErwivDK8QrxSvGK8crgCWCJYQlyCuBJYMlhSXJK8oryyvMK80rzivPKwAmAiYBJgMmgCaCJoEmgybCJsQmxiYALMMmxSbHJgEsAiwDLAQsBSwGLAcsyibMJs4mCCzLJs0mzyYJLAosCywMLA0sDiwPLNIm1CbWJtMm1SbXJtom3CbeJtsm3SbfJgAnAicBJwMngCeCJ4EngycAKAIoBCgBKAMoBShCKEQoRihJKEsoTShALEooTChOKEEsQixDLEQsRSxGLEcsUShTKFUoSCxSKFQoVihJLEosSyxMLE0sTixPLIIsAS6AMYcsAS8CLwMvBi6FMQAwATACMEBGQUaARsBGwkbBRgBHQEeAR8BHwkcASUBJgEmCSQBKwkkDSgRKQEpBSoBKgUrASsFKwEvBSwBLAUtAS0FLwkvDS4BLgUuCS4NLAEwBTAJMA0wAVkBUQlREVEZUSFRKVExUTlRQVFJUVFRWVIBUglSEVMBUwVQAVQFVQFVBVYBVgVXAVcFVgFbAWABXAlcEVwZXCFcKVwxXDlcQVxJXFFcWV0BXQldEV4BXgVfAV8FXAFgBWEBYQViAWIFYAFkBWQJZA1lAWUCPQo+Aj8CPwY8AkAGQQZBAkEOQgJCBkMCQAEGw5AMLtiD6GBdWDVYSExYMFhE26QI2TDbhEhIWEw4QDuISEgwTDPoZFxZtDxYODwUUDBsPDg8MKw4CNg4LBRVLFuEPDMHiEAziAP8wAv8IAv8nvyIhAl9fISJhAiECQUIhAiECn38CX18hAl8\u002FAgU\u002FImUBAwIBAwIBAwL\u002FCAL\u002FCgIBAwJfIQL\u002FMqIhAiEiX0EC\u002FwDiPAXiE+QKbuQE7gaEzgQOBO4J5mh\u002FBA4\u002FIARCFgFgLgEWQQABACEC4QkA4QHiGz8CQUL\u002FEGI\u002FDF8\u002FAuEr4ij\u002FGg+GKP8v\u002FwYC\u002F1gA4R4gBLbiIRYRIC8NAOYlEQYWJhYmFgbgAOUTYGU24AO7TDYNNi\u002FmAxYbVuUYBOUC5g3pAnYlBuVbFgXGGw+mJCYPZiXpAkUvBfYGABsFBuUW5hMg5VHmAwXgBukC5RnmASQPVgQgBi3lDmYE5gEERgSGIPYHAOURRiAWAOUDgOUQDqUAO6DmAOUhBOYQG+YYB+UuBgcGBUfmAGcGJwXG5QImNukCFgTlBwYnAOUAICUg5Q4AxQAFQGUgBgVHZiAnICcGBeAAB2AlAEUmIOkCJS2rDw0FFgYgJgcApWAlIOUOAMUAJQAlACUgBgBHJmAmIEZABsBlAAXA6QImRQYW4AImBwDlAQBFAOUOAMUAJQCFIAYFR4YAJgcAJwYgBeAHJSYg6QIWDcAFpgAGJwDlACAlIOUOAMUAJQCFIAYFBwYHZiAnICcGwCYHYCUARSYg6QIPBavgAgYFAKVARQBlQCUABQAlQCVARUDlBGAnBidARwBHBiAFoAfgBukCS68ND4AGRwblAABFAOUPAOUIIAYFRmcARgBmwCYARSAFICUmIOkCwBbLDwUGJxblAABFAOUPAOUCAIUgBgUHBocABicAJybAJ6AlACUmIOkCACUH4AQmJ+UBAEUA5SEmBUdmAEcARwYFD2BFB8tFJiDpAusBD6UABicA5QpA5RAA5QEABSDFQAZgR0YABgDnAKDpAiAnFuAE5SgGJcZgDaUE5gAW6QI24B0lAAUAhQDlEAAFAOUCBiXmAQUghQAEAMYA6QIgZeAYBU\u002F2Bw8WTyav6QLrAg8GDwYPBhITEhMn5QAA5Rxg5gYHhhYmheYDAOYcAO8ABq8AL5ZvNuAd5SMnZgemByYnJgXpAralJyZlRgVHJcdFZuUFBicmpwYFB+kCRwYv4R4AAYABIOIjFgRC5YDBAGUgxQAFAGUg5SEAZSDlGQBlIMUABQBlIOUHAOUxAGUg5TsgRvYB6wxA5QjvAqDhTiCiIBHlgeQPFuUJF+USEhNA5UNWSuUAwOUKRgfgAeULJgc24AHlCibgBOUFAEUAJuAE5SwmB8bnAAYn5gNWBFYNBQYg6QKg6wKgthF2RhsG6QKg5RsE5S3AhSblGgYFgOU+4ALlFwBGZyZHYCcGp0ZgD0A26QLlFiCF4APlJGDlEqDpAgtA7xrlDyYnBiA25S0HBgfGAAYHBifmAKfmAiAG6QKg6QKg1gS2IOYGCOYI4ClmB+UnBgeGBwaHBiflAEDpAtbvAuYB7wE2ACYH5RYHZicmB0Yl6QLlJAYHJkcGB0Yn4AB25RznAOYAJyZAlukCQEXpAuUWpDbiAcDhIyBB9gDgAEYW5gUHxmUGpQYlByYFgOIk5DfiBQTiGuQd5jj\u002FgA7iAP9a4gDhAKIgoSDiAOEA4gDhAKIgoSDiAAABAAEAAQA\u002FwuEA4gYg4gDjAOIA4wDiAOMAggAiYQMOAk5CACJhA05iICJhAE7iAIFOIEIAImEDLgD3A5uxNhQVEjQVEhT2ABgZmxf2ARQVdjBWDBIT9gMMFhD2AhebAPsCCwQgq0wSEwTrAkwSEwDkBUDtGeAH5gVoBkjmBOAHLwFvAS8CQSJBAg8BLwyBrwEPAQ8BD2EPAmECZQIvIiGMP0IPDC8CD+sI6hs\u002FagsvYIyPLG8MLwwvDM8M7xcsLwwPDO8X7ICE7wASExIT7wwszxIT70kM7xbsEe8grO894BHvA+AN6zTvRusO74AvDO8BDO8u7ADvZwzvgHASExITEhMSExITEhMSE+sW7ySMEhPsFxITEhMSExITEhPsCO+AeOx7EhMSExITEhMSExITEhMSExITEhMSE+w3EhMSE+wYEhPsgHrvKOwNL6zvHyDvGADvYeEo4ihfISLfQQI\u002FAj+CJEEC\u002F1oCr39GP4B2CzbiHgACgAIg5TDABBbgBgblD+ABxQDFAMUAxQDFAMUAxQDFAOYYNhQVFBVWFBUWFBX2ARE2ERYUFTYUFRITEhMSExITlgT2AjF2ERYS9gUvVhITEhMSExITEeAa7xIA71HgBO+ATuAS7wRgF1YPBAUKEhMSExITEhMSEy8SExITEhMSExESMw\u002FqAWYnEYQvSgQFFi8A5U4gJi4kBRHlUhZEBYDlIwDlVgAva+8C5RjvHOAE5QjvFwDrAu8W6wAP6wfvGOsC7x\u002FrB++AuOWZOO845cARjQTlg+9A7y\u002FgAeUgpDblgIQEVuUI6QIl4Az\u002FJgUGSBbmAhYE\u002FxQkJuU+6gImtuAA7g\u002FkAS7\u002FBiL\u002FNgTiAJ\u002F\u002FAgQufwV\u002FIv8NYQKBAv8HQQI\u002FgD8AAgACf+AQRD8FJALFBkUGZQblDycmB28GQKsvDQ+g5Sx24AAn5SrnCCbgADbpAqDmCqVWBRYlBukC5RTmADblD+YDJ+ADFuUVQEYH5ScGJ2YnJkf2BQAE6QJgNoUGBOUB6QKFAOUhpicmJybgAUUG5QAGByDpAiB25QgEpU8FBwYH5SoGBUYlJoUmBQYF4BAlBDblAwcmJzYFJAcG4AKlIKUgpeABxQDFAOIjDmTiAQQuYOJI5RsnBicGJxYHBiDpAqDlqxzgBOUPYOUpYPyHeP2YeOWA5iDlYuAewuAEgoAFBuUCDOUFAIUABQAlACUA5WTuCeAI5YDjExLvCOU4IOUuwA\u002FgGOUEDU\u002FmCNYSExag5ggWMTASExITEhMSExITEhMSExITNhITdlBWAHYREhMSExITVgwRTAAWDTZghQDlfyAbAFYNVhITFgwWETbpAjZMNuESEhYTDhAO4hISDBMMEhMWEhM25QIE5SUk5RdApSClIKUgRUAtDA4PLQAPbC\u002FgAlsvIOUEAOUSAOULACUA5Qcg5QbgGuVzgFZg6yVA7wHqLWvvCStPAO8FQA\u002FgJ+8lBuB65RVA5SngBwbrE2DlGGvgAeUMCuUACoDlHoaA5RYAFuUcYOUAForgIuEg4iDlRiDpAqDhHGDiHGDlIOAA5SzgAxbhAwDhBwDBACEA4gMA4gcAwgAi4DvlgK\u002FgAeUO4ALlAOAQpADkIgDkAeA9pSAFAOUkACVABSDlDwAW6wDlDy\u002FL5RfgAOsB4CjlCwAlgIvlDqtAFuUSgBbgOOUwYCsl6wgg6yYFRgAmgGZlAEUA5RUgRmAG6wHA9gHA5RUrFuUVS+AY5QAP5RQmYIvW4AHlLkDW5Q4g6wDlC4DrAOUKwHbgBMvgSOVB4C\u002FhK+AF4ivAq+UcZuAA6QLggJ7rFwDlIgAmESAl4ENG5RXrAgXgAOUO5gNrluAO5QpmduAe5Q3L4AzlD+ABBwYH5S3mB9Zg6wzpAgYlJgXgAUYH5SVHZicmNht2BuACGyDlEcDpAqBG5RyGB+YAAOkCdgUnBeAA5RsGNgXgASYH5ShH5gEnZXZmFgcG6QIFFgVWAOsM4APlCgDlEUdGJwYHJrYGJQbgNsUABQBlAOUHAOUCFqDlJwZH5gCA6QKgJicA5QAgJSDlDgDFACUAhQAmBScGZyAnIEcgBaAHgIUnIMZAhuCAA+UtR+YAJ0YHBmWW6QI2ABYGReAW5ShHpgcGZyYHJiUWBeAA6QLggB7lJ0dmIGcmByb2D2Um4BrlKEfmACcGByZWBeAD6QKg9gXgC+UjBgcGJ6YHBgUWoOkC4C7lEyBGJ2YHhmDpAitWD8XggDHlJEfmAQcmFuBc4RjiGOkC6wHgBOUAIAUg5QAAJQDlEKcAJyAmBwYFBwUHBlbgAekC4D7lACDlH0dmICZnBgUWBQfgEwXmAuUgpgcFZvYABuAABaYnRuUm5gUHJlYFluAF5UHA9gLggG7lAQDlHQfGAKYHBgWW4ALpAusLQDblFiDmDgAHxgcmBybgQcUAJQDlHqZABgAmAMYFBuAA6QKgpQAlAOUYhwAmACcGBwYFwOkC4ICu5QsmJzbAJgUH5QUA5RonhkAnBgcG9gXpAuBOBeAH6w3vAG3vCeAFFuWDEuBe6mcAluAD5YA84InE5Vk24AXlg6j7CAal5gfgjyLlgb\u002FgoTHlgbHA5RcA6QJgNuVHAOkCoOUWIIYW4ALlKMaWb2QWD+AC6QIAywDlDYDlC+CCKOEY4hjrD3bgXeVDYAYF5y\u002FAZuQF4DgkFgQG4AMn4Abll3DgAOWETuAi5QHgol9kAMQAJADlgJvgBwXgFUUgBeAGZeAA5YEE4Ih85WOA5QVA5QHA5QIgDyYWe+CR1OYmIOYP4AHvbOA074Bu4ALvHyDvNCdGT6f7AOYAL8bvFmbvNeAN7zpGD+By6wzgBOsM4ATvT+AB6xHgf+ES4hLhEsIA4grhEuISAQAhIAEgISBhAOEAYgACAMIA4gPhEuISIQBhIOEAAMEA4hIhAGEAgQABQMEA4hLhEuIS4RLiEuES4hLhEuIS4RLiEuES4hQg4REM4hEMouERDOIRDKLhEQziEQyi4REM4hEMouERDOIRDKI\u002FIOkq74F45i9v5irvAAbvBgYvluAHhgDmB+CDyOICBeIMoKLggE3GAOYJIMYAJgCGgOQ24BkG4GjlJUDGxCDpAmAFD+CAuOUWBuAJ5SRm6QKADeCBSOUTBGbpAuCCXsUAZQAlAOUHAOWAPSDrAcbgIeEa4hrGBGDpAmA24IKJ6zMPSw1r4ETrJQ\u002FrB+CAOmUA5RMAJQAFIAUA5QIAZQAFAAWgBWAFAAUABQBFACUABSAFAAUABQAFAAUAJQAFIGUAxQBlAGUABQDlAgDlCYBFAIUA5QngLCzggIbvJGDvXOAE7wcg7wcA7wcA7x3gAusF74AZ4DDvFeAF7yRg7wHAL+AGr+CAEu+Ac47vglBg7wlA7wVA729g71eg7wRgD+AH7wRg7zDgAO8CoO8g4ADvFiAv4EbvgMzgBO8GIO8FQO8BwO8mAM\u002FgAO8GYO8BwO8BwO+ACwDvL+Ad6QLgg37lwGZY4Bjlj7Kg5YBWIOWV+uAG5Zyp4IuX5YGW4IVa5ZLDgOWP2ODKm8kb4Bb7WOB45oBo4MC9iP3Av3Yg\u002FcC\u002FdiAAAAAA4AIBAAADAQDQAwEAgAUBAMUFAQDgBQEAMAYBAFAGAQBbBgEAcAYBAOCOAACQBgEAsAYBANAGAQDwBgEAEAcBAM8IAQDUCAEA4AgBACAJAQBACQEA0AoBACwLAQA4CwEAPQsBAFALAQCVCwEAmQsBALALAQAADAEAOgwBAFAMAQBvDAEAeAwBAIAMAQBQDQEAoA0BAKAOAQDNDgEA4A4BAAAPAQCwDwEAoBABALwQAQDAEAEAEBEBALARAQBQEgEAIIoAAOCGAEHwhAQLZBwAyACsAUUADwBBACAACwAMABMAlAIfABcAFgAdAL8BBQAKADcAFwCPAVwADAAFAAQARQAEAA8ARwA6AAsAHwAJAAQAxABPAPgALQANABYArQDvABwABABHAJEAnAAzAEwE4QIAQeCFBAv0BayA\u002FoBE24BSeoBICIFOBIBC4oBgzWaAQKiA1oAAAAAA3YBDcBGAmQmBXB+AmoKKgJ+Dl4GNgcCMGBEckQMBiQAUKBEJAgUTJMohGAgIACELC5EJAAYAKUEhg0CnCICXgJCAQbyBi4gkIQkUjQABhZeBuACAnIOIgUFVgZ6JQZKVvoOfgWDUYgADgEDSAIBg1MDUgMYBCAkLgIsABoDAAw8GgJsDBAAWgEFTgZiAmICegJiAnoCYgJ6AmICegJgHgbFV\u002FxiaAQAIgIkDAAAoGAAAAgEACAAAAAABAAsGAwMAgImAkCIEgJAAAAAAAAAAAENEgEJpjQABAQDHiq+MBo+A5DMZC4CigJ2P5YrkCogCA0CmixaFk7UJjgEiiYGcgrkxCYGJgImBnIK5IwkLgJ0KgIqCuTgQgZSBlROCuTEJgYiBiYGdgLoiEIKJgKeEuDAQF4GKgZyCuTAQF4GKgY6Ai4O5MBCCiYCJgZyCyigAh5GBvAGGkYDiASiBj4BAopKIioCj7YsAC5YbEBEyg4yLAImDRnOBnYGdgZ2BwZJAu4GhgPWLg4hA3YS4iYGTyYGKgrCEr467gp2ICbiKsZJBr41GwLNI9Z9geHOHoYFBYQeAloTXgbGPALiApYSbi6yDr4ukgMKNiweBrIKxABEMgKskgEDsh2BPMoBIVoRGhRAMg0MTg0GCgUFSgrSNrIGKgqyIiIC8gqOLkYG4gq+MjYHbiAgoCECciZaDuTEJgYmAiYFA0IwC6ZFA7DGGnIHRjgDpiuaNQQCMQPYoCQoAgECNMSuAm4mpIIORiq2NQZY4htKVgI35KgAIEAKAwSAIg0Fbg4gIgK8ygmBQDQC2M9yBYEyrgGAjYDCQDgEE44BItoBH55mFmYWZAAAAAECpgI6AQfSIMZ2E34CzgE2AgEwuvoyAoaRCsICMgI+MQNKPQ0+ZR5GBYHodgUDRgECAEoFDYYOIgGBcFQEQqYCIYNh0vWAhX49DRZlhzF+ZhZmFmQBB4IsEC0FJvYCXgEFlgJeA5YCXgEDpgJGB5oCXgPaAjoBNVIBE1YBQIIFgz22BU52Al4BBV4CLgEDwgEN\u002FgGC4MweEbC6s3wBBsIwECzdDToBODoFGUoFIroBQ\u002FYBgzjqAzohtAAYAnd\u002F\u002FQO9OD1iEgUiQgJSAT2uBQLaAQs6AT+CIRmeAAEHwjAQLE0X\u002FhUDWgLCAQX+Bz4BhB9mAjoAAQZCNBAs3Q3mASreA\u002FoBgIeaBYMvAhUGVgfMAAAAAAAAAgEEegQBDeYBgLR+BYMvAhUGVgfMAAAAAAAAAgABB0I0ECxZBwwgIgaSBTtyqCk6HPz+Hi4COgK6AAEHwjQQLpwRB74BBnoCegFrkg0C1AAAAgN4GBoCKCYGJEIGNgAAAAECfBgABAAESEILzgIuAQIQBAYCiAYBAu4ieKYTaCIGJgKMEAgQIB4CegKCCnIBCKIDXg0Leh\u002FsIgNIBgKERgED8gULUgP6Ap4GtgLWAiAMDA4CLgIgAJoCQgIgDAwOAi4BBQYDhgUZSgdSERRsQioCRgJuMgKGkQNWDQLUAAACAmQAAAAAAAIC3BQATBRECDBEAAAwVBQiPACCLEioICwAHgowGkoGagIyKgNYYEIoBDAoAEBECBgUchY+Pj4iAQKEIgUD3gUE01ZmaRSCA5oLkgEGegUDwgEEugNKAi0DVqYC0AILfCYDegLDdgo3fnoCnh66AQX9gcpuBQNGAQIASgUNhg4iAYE2VQQ0IAIGJAAAJgsOB6cIAlwQAAQGA66BBapG\u002FgbWnjIKZlZSBi4CSAxoAgECGCICfmUCDFQ0NChYGgIhHhyCpgIhgtOSDVLmGjYe\u002FhUI+1IDGAQgJC4CLAAaAwAMPBoCbAwQAFoBBU4FBI4GxSC+9TZEYmgEACICJAwAAKBgAAAIBAAgAAAAAAQALBgMDAICJgJAiBICQQkOKhJ6An5mCooDugoyrg4gxSZ2JYPwFQh1rBeFP\u002F6+JNZmFRhuAWfCBmYS2gwAArIBFW4CygE5AgEQEgEgIhbyApoCOgEGFgEwDAYCeC4CbgEG9gJKA7oBgzY+BpICJgECogE+egABBoJIECxdBSIBFKIBJAgCASCiBSMSFQriBbdzVgABBwJIEC4EE3QCAxgUDAYFB9kCeByWQC4CIgUD8hEDQgLaQgJoAAQBAhTuBQIULCoLCmtqKuYqhgf2HqImPm7yAjwKDm4DJgI+A7YCPgO2Aj4CugruAjwaA9oDtgI+A7YCPgOyBj4D7gPsogOqAjITKgZoAAAOBwRCBvYDvAIGnC4SYMICJgULAgkOzgUCyioiAQVqCQTg5gK+OgYrngI6ApYi1gUCJgb+F0ZgYKAqxvtiLpIpBvACCioKMgoyCjIFM74JBPIBB+YXog96AYHVxgIsIgJuB0YGNoeWC7IFAyYCakbiDo4DegIuAo4BAlILAg7KA44SIgv+BYE8vgEMAj0ENAICugKyBwoBC+4BEniipgIhDKYFCOoVB1ILFirCDQL+AqIDHgfeBvYDLgIiC54FAsYHQgI+AlzKEQMwCgPqBQPqB\u002FYD1gfKAQQyBQQELgECbgNKAkYDQgEGkgEEBAIHQgFaujmA2mYS6hkRXkM+BYD\u002F9GDCBXwCtgZZCHxIvOYadg06BvUDBhkF2gLyDRd+G7BCCAEC2gEIXgUNtgEG4gENZgELvgP6ASUKAt4BCYoBBjYDDgFOIgKqE5oHcgmBvFYBF9YBDwYCVgECIgOuAlIFgVHqASA+BS9mAQmeCRM6AYFCogUSbCIBgcVeBSAWCr4k1mYVg\u002FqiJNZmFYC\u002FvCYdgL\u002FGBAEHQlgQLpwFgMAWBmIiNgkPEWb+\u002FYFH\u002FYFj\u002FQW2B6WB1CYCaV\u002FeHRNWpiGAkZkGLYE0DYKbfn1A5hUDdgVaBjV0wTB5CHUXhU0qEUF9gIAuBTj+E+oRK7xGAYJD5CQCBAAAAAAAAAABg\u002Fc+fQg2BYP\u002F9gWD\u002F\u002FYFg\u002F\u002F2BYP\u002F9gWD\u002F\u002FYFg\u002F\u002F2BYP\u002F9gWD\u002F\u002FYFg\u002F\u002F2BYP\u002F9gWD\u002F\u002FYFg\u002F\u002F2BYP\u002F9gWD\u002F\u002FYFg\u002F\u002F2BYP\u002F9gQBBgJgEC0WgjomGmRiAmYOhMAAIAAsDAoCWgJ6AXxeXh46BkoCJQTBCz0CfQnWdRGtB\u002F\u002F9BgBOYjoBgzQyBQQSBiISRgOOAX4eBl4EAQdCYBAv0AaEDgECCgI6AX1uHmIFOBoBByIOMgmDOIINAvAOA2YFgLn+ZgNiLQNVh8eWZAAAAAKCAi4CPgEVIgECSgkCzgKqCQPWAvAACgUEkgUbjgUMVA4FDBIBAxYFAywSAQTmBQWGDQK0JgZyBQLuBwIFDu4GIgk3jgIyAlYFBrIBgdPuAQQ2BQOICgEF9gdWB3oBAl4FAkoJAj4FA+IBgUmUCgUCogIuAj4DAgErzgUT8hKuDQLyB9IP+gkCADYCPgdcIgeuAQaCBQXQMjuiBQPiCQgQAgED6gdaBQaOBQrOByYFgSyiBQISAwIGKgENSgGBOBYBd54AAQdCaBAumA+iBQMOAQRiAnYCzgJOAQT+A4QCAWQiAsoCMAoBAg4BAnIBBpIBA1YFLMYBhp6SBsYGxgbGBsYGxgbGBsYGxgbGBsYGxgbGBSIWAQTCBmYAAoICJAICKCoBDPQeAQgCAuIDHgI0AgkCzgKqKAEDqgbWOnoBBBIFE84FAqwOFQTaBQxSHQwSA+4LGgUCcEoCmGYFBOYFBYYNArQiCnIFAu4S9gUO7gYiCTeOAjAOAiQAKgUGrgWB0+oFBDIJA4oRBfYHVgd6AQJaCQJKC\u002FoCPgUD4gGBSYxCDQKiAiQCAigqAwAGARDmAr4BEhYBAxoBBNYFAl4XDhdiDQ7eEq4NAvIbvg\u002F6CQIANgI+B14TrgEGggouBQWUajuiBQPiCQgQAgED6gdYLgUGdgqyAQoSByYFFKoRgRfiBQISAwIKJgENRgWBOBYBd5oMAAAAAAAAAAGAz\u002F1m\u002Fv2BR\u002F2BaDQgAgYkAAAmCYQXVYKbfn1A5hUDdgVaBjV0wVB5TSoRQX1gKEIBg5e+PbQLvQO8AAAAAAACIhJGA44CZgFXegEl+ipwMgK6AT5+AAEGAngQLhwSngZEAgJsAgJwAgKyAjoBOfYNHXIFJm4GJgbWBjYFAsIBAvxoqAgoYGAADiCCAkSOICAA5ngsgiAmSIYghC5eBjzuTDoFEPI3JARgIFBwSjUGSlQ2AjTg1EBwBDBgCCYkpgYuSAwgACAMhKpeBigsYCQuqD4CnIAAUIhgUAED\u002FgEICGgiBjQmJqodBqokPYM48LIFAoYGRAICbAICcAAAIgWDXdoC4gLiAuIC4gAAAAKIFBInuA4BfjICLgEDXgJWA2YWOgUFugYuAQKWAmIoaQMaAQOaBiYCIgLkYhIgBAQkDAQAJAgIPFAAEi4oJAAiAkQGBkSgACgwBC4GKDAkECACBkwwoGQMBASgBAAAFAgWAiYGOAQMAAxCAioGvgoiAjYCNgEFzgUHOgpKBsgOARNmAi4BCWACAYb1pgEDJgECfgYuBjQGJypkBloCTAYiUgUCtoYHvCQKB0gqAQQaAvooolzEPiwEZA4GMCQeBiASCixcRAAMFAgXVr8UnCoOJEAEQgYlA4osYQRqugImAQLjvjIKIhq0Gh42DiIaIAKIFBIlf0oBA1IBg3SqAYPPVmUH6hEWvg2wGa99h8\u002FqEYCYcgEDagI+DYcx2gLsRAYL0CYqUkhAaAjAAl4BAyAuAlAOBQK0ShNKAj4KIgIqAQj4BBz2AiIkKt4C8CAiAkBCMQOSCqYgAQZCiBAuRAWAjGYFAzBoBgEIIgZSBsYuqgJKAjAeBkAwPBICUBggDAQYDgZuAogADEIC8gpeAjYBDWoGyA4BhxK2AQMmAQL0BicqZAJeAkwEggpSBQK2gi4iAxYCVi6oci5AQgsYAgEC6gb6MGJeRgJmBjIDV1K\u002FFKBIKG4oOiEDiixhBGq6AiYBAuO+MgoiGrQaHjYOIhogAQbCjBAvTAUCoA4BfjICLgEDXgJWA2YWOgUFugYuA3oDFgJiKGkDGgEDmgYmAiIC5GCiLgPGJ9YGKAAAoECiJgY4BAwADEICKhKyCiICNgI2AQXOBQc6CkoGyA4BE2YCLgEJYAIBhvWVA\u002F4yCnoC7hYuBjQGJkbiajomAkwGIA4hBsYRBPYdBCa\u002F\u002F84vUqouDt4eJhaeHndGLroCJgEG4QP9D\u002FQAAAABArIBCoIBCy4BLQYFGUoHUhEf6hJmEsI9Q84BgzJqPQO6AQJ+AzohgvKaDVM6HbC6ET\u002F8AQZalBAsa8D8AAAAAAAD4PwAAAAAAAAAABtDPQ+v9TD4AQbulBAtlQAO44j9Pu2EFZ6zdPxgtRFT7Iek\u002Fm\u002FaB0gtz7z8YLURU+yH5P+JlLyJ\u002FK3o8B1wUMyamgTy9y\u002FB6iAdwPAdcFDMmppE8GC1EVPsh6T8YLURU+yHpv9IhM3982QJA0iEzf3zZAsAAQa+mBAvoFYAYLURU+yEJQBgtRFT7IQnAAwAAAAQAAAAEAAAABgAAAIP5ogBETm4A\u002FCkVANFXJwDdNPUAYtvAADyZlQBBkEMAY1H+ALveqwC3YcUAOm4kANJNQgBJBuAACeouAByS0QDrHf4AKbEcAOg+pwD1NYIARLsuAJzphAC0JnAAQX5fANaROQBTgzkAnPQ5AItfhAAo+b0A+B87AN7\u002FlwAPmAUAES\u002FvAApaiwBtH20Az342AAnLJwBGT7cAnmY\u002FAC3qXwC6J3UA5evHAD178QD3OQcAklKKAPtr6gAfsV8ACF2NADADVgB7\u002FEYA8KtrACC8zwA29JoA46kdAF5hkQAIG+YAhZllAKAUXwCNQGgAgNj\u002FACdzTQAGBjEAylYVAMmocwB74mAAa4zAABnERwDNZ8MACejcAFmDKgCLdsQAphyWAESv3QAZV9EApT4FAAUH\u002FwAzfj8AwjLoAJhP3gC7fTIAJj3DAB5r7wCf+F4ANR86AH\u002FyygDxhx0AfJAhAGokfADVbvoAMC13ABU7QwC1FMYAwxmdAK3EwgAsTUEADABdAIZ9RgDjcS0Am8aaADNiAAC00nwAtKeXADdV1QDXPvYAoxAYAE12\u002FABknSoAcNerAGN8+AB6sFcAFxXnAMBJVgA71tkAp4Q4ACQjywDWincAWlQjAAAfuQDxChsAGc7fAJ8x\u002FwBmHmoAmVdhAKz7RwB+f9gAImW3ADLoiQDmv2AA78TNAGw2CQBdP9QAFt7XAFg73gDem5IA0iIoACiG6ADiWE0AxsoyAAjjFgDgfcsAF8BQAPMdpwAY4FsALhM0AIMSYgCDSAEA9Y5bAK2wfwAe6fIASEpDABBn0wCq3dgArl9CAGphzgAKKKQA05m0AAam8gBcd38Ao8KDAGE8iACKc3gAr4xaAG\u002FXvQAtpmMA9L\u002FLAI2B7wAmwWcAVcpFAMrZNgAoqNIAwmGNABLJdwAEJhQAEkabAMRZxADIxUQATbKRAAAX8wDUQ60AKUnlAP3VEAAAvvwAHpTMAHDO7gATPvUA7PGAALPnwwDH+CgAkwWUAMFxPgAuCbMAC0XzAIgSnACrIHsALrWfAEeSwgB7Mi8ADFVtAHKnkABr5x8AMcuWAHkWSgBBeeIA9N+JAOiUlwDi5oQAmTGXAIjtawBfXzYAu\u002F0OAEiatABnpGwAcXJCAI1dMgCfFbgAvOUJAI0xJQD3dDkAMAUcAA0MAQBLCGgALO5YAEeqkAB05wIAvdYkAPd9pgBuSHIAnxbvAI6UpgC0kfYA0VNRAM8K8gAgmDMA9Ut+ALJjaADdPl8AQF0DAIWJfwBVUikAN2TAAG3YEAAySDIAW0x1AE5x1ABFVG4ACwnBACr1aQAUZtUAJwedAF0EUAC0O9sA6nbFAIf5FwBJa30AHSe6AJZpKQDGzKwArRRUAJDiagCI2YkALHJQAASkvgB3B5QA8zBwAAD8JwDqcagAZsJJAGTgPQCX3YMAoz+XAEOU\u002FQANhowAMUHeAJI5nQDdcIwAF7fnAAjfOwAVNysAXICgAFqAkwAQEZIAD+jYAGyArwDb\u002F0sAOJAPAFkYdgBipRUAYcu7AMeJuQAQQL0A0vIEAEl1JwDrtvYA2yK7AAoUqgCJJi8AZIN2AAk7MwAOlBoAUTqqAB2jwgCv7a4AXCYSAG3CTQAtepwAwFaXAAM\u002FgwAJ8PYAK0CMAG0xmQA5tAcADCAVANjDWwD1ksQAxq1LAE7KpQCnN80A5qk2AKuSlADdQmgAGWPeAHaM7wBoi1IA\u002FNs3AK6hqwDfFTEAAK6hAAz72gBkTWYA7QW3ACllMABXVr8AR\u002F86AGr5uQB1vvMAKJPfAKuAMABmjPYABMsVAPoiBgDZ5B0APbOkAFcbjwA2zQkATkLpABO+pAAzI7UA8KoaAE9lqADSwaUACz8PAFt4zQAj+XYAe4sEAIkXcgDGplMAb27iAO\u002FrAACbSlgAxNq3AKpmugB2z88A0QIdALHxLQCMmcEAw613AIZI2gD3XaAAxoD0AKzwLwDd7JoAP1y8ANDebQCQxx8AKtu2AKMlOgAAr5oArVOTALZXBAApLbQAS4B+ANoHpwB2qg4Ae1mhABYSKgDcty0A+uX9AInb\u002FgCJvv0A5HZsAAap\u002FAA+gHAAhW4VAP2H\u002FwAoPgcAYWczACoYhgBNveoAs+evAI9tbgCVZzkAMb9bAITXSAAw3xYAxy1DACVhNQDJcM4AMMu4AL9s\u002FQCkAKIABWzkAFrdoAAhb0cAYhLSALlchABwYUkAa1bgAJlSAQBQVTcAHtW3ADPxxAATbl8AXTDkAIUuqQAdssMAoTI2AAi3pADqsdQAFvchAI9p5AAn\u002F3cADAOAAI1ALQBPzaAAIKWZALOi0wAvXQoAtPlCABHaywB9vtAAm9vBAKsXvQDKooEACGpcAC5VFwAnAFUAfxTwAOEHhgAUC2QAlkGNAIe+3gDa\u002FSoAayW2AHuJNAAF8\u002F4Aub+eAGhqTwBKKqgAT8RaAC34vADXWpgA9MeVAA1NjQAgOqYApFdfABQ\u002FsQCAOJUAzCABAHHdhgDJ3rYAv2D1AE1lEQABB2sAjLCsALLA0ABRVUgAHvsOAJVywwCjBjsAwEA1AAbcewDgRcwATin6ANbKyADo80EAfGTeAJtk2ADZvjEApJfDAHdY1ABp48UA8NoTALo6PABGGEYAVXVfANK99QBuksYArC5dAA5E7QAcPkIAYcSHACn96QDn1vMAInzKAG+RNQAI4MUA\u002F9eNAG5q4gCw\u002FcYAkwjBAHxddABrrbIAzW6dAD5yewDGEWoA98+pAClz3wC1yboAtwBRAOKyDQB0uiQA5X1gAHTYigANFSwAgRgMAH5mlAABKRYAn3p2AP39vgBWRe8A2X42AOzZEwCLurkAxJf8ADGoJwDxbsMAlMU2ANioVgC0qLUAz8wOABKJLQBvVzQALFaJAJnO4wDWILkAa16qAD4qnAARX8wA\u002FQtKAOH0+wCOO20A4oYsAOnUhAD8tKkA7+7RAC41yQAvOWEAOCFEABvZyACB\u002FAoA+0pqAC8c2ABTtIQATpmMAFQizAAqVdwAwMbWAAsZlgAacLgAaZVkACZaYAA\u002FUu4AfxEPAPS1EQD8y\u002FUANLwtADS87gDoXcwA3V5gAGeOmwCSM+8AyRe4AGFYmwDhV7wAUYPGANg+EADdcUgALRzdAK8YoQAhLEYAWfPXANl6mACeVMAAT4b6AFYG\u002FADlea4AiSI2ADitIgBnk9wAVeiqAIImOADK55sAUQ2kAJkzsQCp1w4AaQVIAGWy8AB\u002FiKcAiEyXAPnRNgAhkrMAe4JKAJjPIQBAn9wA3EdVAOF0OgBn60IA\u002Fp3fAF7UXwB7Z6QAuqx6AFX2ogAriCMAQbpVAFluCAAhKoYAOUeDAInj5gDlntQASftAAP9W6QAcD8oAxVmKAJT6KwDTwcUAD8XPANtargBHxYYAhUNiACGGOwAseZQAEGGHACpMewCALBoAQ78SAIgmkAB4PIkAqMTkAOXbewDEOsIAJvTqAPdnigANkr8AZaMrAD2TsQC9fAsApFHcACfdYwBp4d0AmpQZAKgplQBozigACe20AESfIABOmMoAcIJjAH58IwAPuTIAp\u002FWOABRW5wAh8QgAtZ0qAG9+TQClGVEAtfmrAILf1gCW3WEAFjYCAMQ6nwCDoqEAcu1tADmNegCCuKkAazJcAEYnWwAANO0A0gB3APz0VQABWU0A4HGAAEGjvAQLrQFA+yH5PwAAAAAtRHQ+AAAAgJhG+DwAAABgUcx4OwAAAICDG\u002FA5AAAAQCAlejgAAACAIoLjNgAAAAAd82k1\u002FoIrZUcVZ0AAAAAAAAA4QwAA+v5CLna\u002FOjuevJr3DL29\u002Ff\u002F\u002F\u002F\u002F\u002FfPzxUVVVVVcU\u002FkSsXz1VVpT8X0KRnERGBPwAAAAAAAMhC7zn6\u002FkIu5j8kxIL\u002Fvb\u002FOP7X0DNcIa6w\u002FzFBG0quygz+EOk6b4NdVPwBB3r0EC4MR8D9uv4gaTzubPDUz+6k99u8\u002FXdzYnBNgcbxhgHc+muzvP9FmhxB6XpC8hX9u6BXj7z8T9mc1UtKMPHSFFdOw2e8\u002F+o75I4DOi7ze9t0pa9DvP2HI5mFO92A8yJt1GEXH7z+Z0zNb5KOQPIPzxso+vu8\u002FbXuDXaaalzwPiflsWLXvP\u002Fzv\u002FZIatY4890dyK5Ks7z\u002FRnC9wPb4+PKLR0zLso+8\u002FC26QiTQDarwb0\u002F6vZpvvPw69LypSVpW8UVsS0AGT7z9V6k6M74BQvMwxbMC9iu8\u002FFvTVuSPJkbzgLamumoLvP69VXOnj04A8UY6lyJh67z9Ik6XqFRuAvHtRfTy4cu8\u002FPTLeVfAfj7zqjYw4+WrvP79TEz+MiYs8dctv61tj7z8m6xF2nNmWvNRcBITgW+8\u002FYC86PvfsmjyquWgxh1TvP504hsuC54+8Hdn8IlBN7z+Nw6ZEQW+KPNaMYog7Ru8\u002FfQTksAV6gDyW3H2RST\u002FvP5SoqOP9jpY8OGJ1bno47z99SHTyGF6HPD+msk\u002FOMe8\u002F8ucfmCtHgDzdfOJlRSvvP14IcT97uJa8gWP14d8k7z8xqwlt4feCPOHeH\u002FWdHu8\u002F+r9vGpshPbyQ2drQfxjvP7QKDHKCN4s8CwPkpoUS7z+Py86JkhRuPFYvPqmvDO8\u002FtquwTXVNgzwVtzEK\u002FgbvP0x0rOIBQoY8MdhM\u002FHAB7z9K+NNdOd2PPP8WZLII\u002FO4\u002FBFuOO4Cjhrzxn5JfxfbuP2hQS8ztSpK8y6k6N6fx7j+OLVEb+AeZvGbYBW2u7O4\u002F0jaUPujRcbz3n+U02+fuPxUbzrMZGZm85agTwy3j7j9tTCqnSJ+FPCI0Ekym3u4\u002FimkoemASk7wcgKwERdruP1uJF0iPp1i8Ki73IQrW7j8bmklnmyx8vJeoUNn10e4\u002FEazCYO1jQzwtiWFgCM7uP+9kBjsJZpY8VwAd7UHK7j95A6Ha4cxuPNA8wbWixu4\u002FMBIPP47\u002Fkzze09fwKsPuP7CvervOkHY8Jyo21dq\u002F7j934FTrvR2TPA3d\u002FZmyvO4\u002FjqNxADSUj7ynLJ12srnuP0mjk9zM3oe8QmbPotq27j9fOA+9xt54vIJPnVYrtO4\u002F9lx77EYShrwPkl3KpLHuP47X\u002FRgFNZM82ie1Nkev7j8Fm4ovt5h7PP3Hl9QSre4\u002FCVQc4uFjkDwpVEjdB6vuP+rGGVCFxzQ8t0ZZiiap7j81wGQr5jKUPEghrRVvp+4\u002Fn3aZYUrkjLwJ3Ha54aXuP6hN7zvFM4y8hVU6sH6k7j+u6SuJeFOEvCDDzDRGo+4\u002FWFhWeN3Ok7wlIlWCOKLuP2QZfoCqEFc8c6lM1FWh7j8oIl6\u002F77OTvM07f2aeoO4\u002Fgrk0h60Sary\u002F2gt1EqDuP+6pbbjvZ2O8LxplPLKf7j9RiOBUPdyAvISUUfl9n+4\u002Fzz5afmQfeLx0X+zodZ\u002FuP7B9i8BK7oa8dIGlSJqf7j+K5lUeMhmGvMlnQlbrn+4\u002F09QJXsuckDw\u002FXd5PaaDuPx2lTbncMnu8hwHrcxSh7j9rwGdU\u002FeyUPDLBMAHtoe4\u002FVWzWq+HrZTxiTs8286LuP0LPsy\u002FFoYi8Eho+VCek7j80NzvxtmmTvBPOTJmJpe4\u002FHv8ZOoRegLytxyNGGqfuP25XcthQ1JS87ZJEm9mo7j8Aig5bZ62QPJlmitnHqu4\u002FtOrwwS+3jTzboCpC5azuP\u002F\u002FnxZxgtmW8jES1FjKv7j9EX\u002FNZg\u002FZ7PDZ3FZmuse4\u002Fgz0epx8Jk7zG\u002F5ELW7TuPykebIu4qV285cXNsDe37j9ZuZB8+SNsvA9SyMtEuu4\u002Fqvn0IkNDkrxQTt6fgr3uP0uOZtdsyoW8ugfKcPHA7j8nzpEr\u002FK9xPJDwo4KRxO4\u002Fu3MK4TXSbTwjI+MZY8juP2MiYiIExYe8ZeVde2bM7j\u002FVMeLjhhyLPDMtSuyb0O4\u002FFbu809G7kbxdJT6yA9XuP9Ix7pwxzJA8WLMwE57Z7j+zWnNuhGmEPL\u002F9eVVr3u4\u002FtJ2Ol83fgrx689O\u002Fa+PuP4czy5J3Gow8rdNamZ\u002Fo7j\u002F62dFKj3uQvGa2jSkH7u4\u002Fuq7cVtnDVbz7FU+4ovPuP0D2pj0OpJC8OlnljXL57j80k6049NZovEde+\u002FJ2\u002F+4\u002FNYpYa+LukbxKBqEwsAXvP83dXwrX\u002F3Q80sFLkB4M7z+smJL6+72RvAke11vCEu8\u002FswyvMK5uczycUoXdmxnvP5T9n1wy4448etD\u002FX6sg7z+sWQnRj+CEPEvRVy7xJ+8\u002FZxpOOK\u002FNYzy15waUbS\u002FvP2gZkmwsa2c8aZDv3CA37z\u002FStcyDGIqAvPrDXVULP+8\u002Fb\u002Fr\u002FP12tj7x8iQdKLUfvP0mpdTiuDZC88okNCIdP7z+nBz2mhaN0PIek+9wYWO8\u002FDyJAIJ6RgryYg8kW42DvP6ySwdVQWo48hTLbA+Zp7z9LawGsWTqEPGC0AfMhc+8\u002FHz60ByHVgrxfm3szl3zvP8kNRzu5Kom8KaH1FEaG7z\u002FTiDpgBLZ0PPY\u002Fi+cukO8\u002FcXKdUezFgzyDTMf7UZrvP\u002FCR048S94+82pCkoq+k7z99dCPimK6NvPFnji1Ir+8\u002FCCCqQbzDjjwnWmHuG7rvPzLrqcOUK4Q8l7prNyvF7z\u002FuhdExqWSKPEBFblt20O8\u002F7eM75Lo3jrwUvpyt\u002FdvvP53NkU07iXc82JCegcHn7z+JzGBBwQVTPPFxjyvC8+8\u002F0XSeAFedvSqAcFIP\u002F\u002F8+JwoAAABkAAAA6AMAABAnAACghgEAQEIPAICWmAAA4fUFGAAAADUAAABxAAAAa\u002F\u002F\u002F\u002F877\u002F\u002F+Sv\u002F\u002F\u002FAAAAAAAAAAAZAAoAGRkZAAAAAAUAAAAAAAAJAAAAAAsAAAAAAAAAABkAEQoZGRkDCgcAAQAJCxgAAAkGCwAACwAGGQAAABkZGQBB8c4ECyEOAAAAAAAAAAAZAAoNGRkZAA0AAAIACQ4AAAAJAA4AAA4AQavPBAsBDABBt88ECxUTAAAAABMAAAAACQwAAAAAAAwAAAwAQeXPBAsBEABB8c8ECxUPAAAABA8AAAAACRAAAAAAABAAABAAQZ\u002FQBAsBEgBBq9AECx4RAAAAABEAAAAACRIAAAAAABIAABIAABoAAAAaGhoAQeLQBAsOGgAAABoaGgAAAAAAAAkAQZPRBAsBFABBn9EECxUXAAAAABcAAAAACRQAAAAAABQAABQAQc3RBAsBFgBB2dEECycVAAAAABUAAAAACRYAAAAAABYAABYAADAxMjM0NTY3ODlBQkNERUYAQaTSBAsCpgEAQczSBAsI\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8AQZDTBAsBBQBBnNMECwKhAQBBtNMECw6iAQAAowEAACgrAQAABABBzNMECwEBAEHc0wQLBf\u002F\u002F\u002F\u002F8KAEGg1AQLB5ApAQBAMQI=\\\";if(!K(L)){var M=L;L=d.locateFile?d.locateFile(M,q):q+M}\\nfunction ca(){var a=L;return Promise.resolve().then(()=>{if(a==L&&v)var b=new Uint8Array(v);else{if(K(a)){b=atob(a.slice(37));for(var c=new Uint8Array(b.length),e=0;e\u003Cb.length;++e)c[e]=b.charCodeAt(e);b=c}else b=void 0;if(!b)throw\\\"both async and sync fetching of the wasm failed\\\";}return b})}function da(a,b){return ca().then(c=>WebAssembly.instantiate(c,a)).then(c=>c).then(b,c=>{u(`failed to asynchronously prepare wasm: ${c}`);w(c)})}function ea(a,b){return da(a,b)}\\nvar N=a=>{for(;0\u003Ca.length;)a.shift()(d)},O=\\\"undefined\\\"!=typeof TextDecoder?new TextDecoder(\\\"utf8\\\"):void 0,P=(a,b)=>{for(var c=b+NaN,e=b;a[e]&&!(e>=c);)++e;if(16\u003Ce-b&&a.buffer&&O)return O.decode(a.subarray(b,e));for(c=\\\"\\\";b\u003Ce;){var f=a[b++];if(f&128){var g=a[b++]&63;if(192==(f&224))c+=String.fromCharCode((f&31)\u003C\u003C6|g);else{var l=a[b++]&63;f=224==(f&240)?(f&15)\u003C\u003C12|g\u003C\u003C6|l:(f&7)\u003C\u003C18|g\u003C\u003C12|l\u003C\u003C6|a[b++]&63;65536>f?c+=String.fromCharCode(f):(f-=65536,c+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else c+=\\nString.fromCharCode(f)}return c},fa=[0,31,60,91,121,152,182,213,244,274,305,335],ha=[0,31,59,90,120,151,181,212,243,273,304,334],Q=a=>{for(var b=0,c=0;c\u003Ca.length;++c){var e=a.charCodeAt(c);127>=e?b++:2047>=e?b+=2:55296\u003C=e&&57343>=e?(b+=4,++c):b+=3}return b},R=(a,b,c)=>{var e=A;if(0\u003Cc){c=b+c-1;for(var f=0;f\u003Ca.length;++f){var g=a.charCodeAt(f);if(55296\u003C=g&&57343>=g){var l=a.charCodeAt(++f);g=65536+((g&1023)\u003C\u003C10)|l&1023}if(127>=g){if(b>=c)break;e[b++]=g}else{if(2047>=g){if(b+1>=c)break;e[b++]=192|g>>\\n6}else{if(65535>=g){if(b+2>=c)break;e[b++]=224|g>>12}else{if(b+3>=c)break;e[b++]=240|g>>18;e[b++]=128|g>>12&63}e[b++]=128|g>>6&63}e[b++]=128|g&63}}e[b]=0}},T=a=>{var b=Q(a)+1,c=S(b);c&&R(a,c,b);return c};function U(){}\\nvar ia=[null,[],[]],ka=(a,b,c,e)=>{var f={string:h=>{var r=0;if(null!==h&&void 0!==h&&0!==h){r=Q(h)+1;var Y=V(r);R(h,Y,r);r=Y}return r},array:h=>{var r=V(h.length);z.set(h,r);return r}};a=d[\\\"_\\\"+a];var g=[],l=0;if(e)for(var m=0;m\u003Ce.length;m++){var t=f[c[m]];t?(0===l&&(l=W()),g[m]=t(e[m])):g[m]=e[m]}c=a.apply(null,g);return c=function(h){0!==l&&ja(l);return\\\"string\\\"===b?h?P(A,h):\\\"\\\":\\\"boolean\\\"===b?!!h:h}(c)};\\nU=(a,b,c)=>{a=a?P(A,a):\\\"\\\";b=null!==b?JSON.parse(b?P(A,b):\\\"\\\"):[];try{const e=d.externalCall(a,b);return e?T(e):null}catch(e){return d.HEAPU8[c]=1,T(e.message)}};\\nvar la={a:(a,b,c,e)=>{w(`Assertion failed: ${a?P(A,a):\\\"\\\"}, at: `+[b?b?P(A,b):\\\"\\\":\\\"unknown filename\\\",c,e?e?P(A,e):\\\"\\\":\\\"unknown function\\\"])},i:function(a,b,c){a=new Date(1E3*(b+2097152>>>0\u003C4194305-!!a?(a>>>0)+4294967296*b:NaN));B[c>>2]=a.getSeconds();B[c+4>>2]=a.getMinutes();B[c+8>>2]=a.getHours();B[c+12>>2]=a.getDate();B[c+16>>2]=a.getMonth();B[c+20>>2]=a.getFullYear()-1900;B[c+24>>2]=a.getDay();b=a.getFullYear();B[c+28>>2]=(0!==b%4||0===b%100&&0!==b%400?ha:fa)[a.getMonth()]+a.getDate()-1|0;B[c+36>>\\n2]=-(60*a.getTimezoneOffset());b=(new Date(a.getFullYear(),6,1)).getTimezoneOffset();var e=(new Date(a.getFullYear(),0,1)).getTimezoneOffset();B[c+32>>2]=(b!=e&&a.getTimezoneOffset()==Math.min(e,b))|0},d:(a,b,c)=>{function e(t){return(t=t.toTimeString().match(\u002F\\\\(([A-Za-z ]+)\\\\)$\u002F))?t[1]:\\\"GMT\\\"}var f=(new Date).getFullYear(),g=new Date(f,0,1),l=new Date(f,6,1);f=g.getTimezoneOffset();var m=l.getTimezoneOffset();C[a>>2]=60*Math.max(f,m);B[b>>2]=Number(f!=m);a=e(g);b=e(l);a=T(a);b=T(b);m\u003Cf?(C[c>>2]=a,\\nC[c+4>>2]=b):(C[c>>2]=b,C[c+4>>2]=a)},b:()=>{w(\\\"\\\")},g:U,f:function(a,b){a=a?P(A,a):\\\"\\\";let c;try{c=window.JSON.parse(a)}catch(e){c=a}0!==b?window.alert(a):window.console.log(\\\"DUMP\\\",c)},e:()=>Date.now(),j:a=>{var b=A.length;a>>>=0;if(2147483648\u003Ca)return!1;for(var c=1;4>=c;c*=2){var e=b*(1+.2\u002Fc);e=Math.min(e,a+100663296);var f=Math;e=Math.max(a,e);a:{f=(f.min.call(f,2147483648,e+(65536-e%65536)%65536)-x.buffer.byteLength+65535)\u002F65536;try{x.grow(f);D();var g=1;break a}catch(l){}g=void 0}if(g)return!0}return!1},\\nc:(a,b,c,e)=>{for(var f=0,g=0;g\u003Cc;g++){var l=C[b>>2],m=C[b+4>>2];b+=8;for(var t=0;t\u003Cm;t++){var h=A[l+t],r=ia[a];0===h||10===h?((1===a?aa:u)(P(r,0)),r.length=0):r.push(h)}f+=m}C[e>>2]=f;return 0},k:function(a){a=a?P(A,a):\\\"\\\";window.console.log(a)},h:function(a){a=a?P(A,a):\\\"\\\";return Date.parse(a)},l:function(a,b,c,e){a=a?P(A,a):\\\"\\\";b=b?P(A,b):\\\"\\\";c=c?P(A,c):\\\"\\\";c=`Quickjs -- ${a}: ${b}\\\\n${c}`;0!==e?window.alert(c):window.console.error(c)}},X=function(){function a(c){X=c.exports;x=X.m;D();F.unshift(X.n);\\nH--;d.monitorRunDependencies?.(H);0==H&&(null!==I&&(clearInterval(I),I=null),J&&(c=J,J=null,c()));return X}var b={a:la};H++;d.monitorRunDependencies?.(H);if(d.instantiateWasm)try{return d.instantiateWasm(b,a)}catch(c){u(`Module.instantiateWasm callback failed with error: ${c}`),n(c)}ea(b,function(c){a(c.instance)}).catch(n);return{}}();d._evalInSandbox=(a,b)=>(d._evalInSandbox=X.o)(a,b);d._nukeSandbox=()=>(d._nukeSandbox=X.p)();d._init=(a,b)=>(d._init=X.q)(a,b);\\nd._commFun=(a,b)=>(d._commFun=X.r)(a,b);d._dumpMemoryUse=()=>(d._dumpMemoryUse=X.s)();var S=a=>(S=X.t)(a);d._free=a=>(d._free=X.u)(a);var W=()=>(W=X.w)(),ja=a=>(ja=X.x)(a),V=a=>(V=X.y)(a);d.ccall=ka;d.cwrap=(a,b,c,e)=>{var f=!c||c.every(g=>\\\"number\\\"===g||\\\"boolean\\\"===g);return\\\"string\\\"!==b&&f&&!e?d[\\\"_\\\"+a]:function(){return ka(a,b,c,arguments,e)}};d.stringToNewUTF8=T;var Z;J=function ma(){Z||na();Z||(J=ma)};\\nfunction na(){function a(){if(!Z&&(Z=!0,d.calledRun=!0,!y)){N(F);k(d);if(d.onRuntimeInitialized)d.onRuntimeInitialized();if(d.postRun)for(\\\"function\\\"==typeof d.postRun&&(d.postRun=[d.postRun]);d.postRun.length;){var b=d.postRun.shift();G.unshift(b)}N(G)}}if(!(0\u003CH)){if(d.preRun)for(\\\"function\\\"==typeof d.preRun&&(d.preRun=[d.preRun]);d.preRun.length;)ba();N(E);0\u003CH||(d.setStatus?(d.setStatus(\\\"Running...\\\"),setTimeout(function(){setTimeout(function(){d.setStatus(\\\"\\\")},1);a()},1)):a())}}\\nif(d.preInit)for(\\\"function\\\"==typeof d.preInit&&(d.preInit=[d.preInit]);0\u003Cd.preInit.length;)d.preInit.pop()();na();\\n\\n\\n  return moduleArg.ready\\n}\\n);\\n})();\\nexport default Module;\",\"\u002F* Copyright 2020 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F In mozilla-central, this file is loaded as non-module script,\\n\u002F\u002F so it mustn't have any dependencies.\\n\\nexport class SandboxSupportBase {\\n  \u002F**\\n   * @param {DOMWindow} - win\\n   *\u002F\\n  constructor(win) {\\n    this.win = win;\\n    this.timeoutIds = new Map();\\n\\n    \u002F\u002F Will be assigned after the sandbox is initialized\\n    this.commFun = null;\\n  }\\n\\n  destroy() {\\n    this.commFun = null;\\n    for (const id of this.timeoutIds.values()) {\\n      this.win.clearTimeout(id);\\n    }\\n    this.timeoutIds = null;\\n  }\\n\\n  \u002F**\\n   * @param {Object} val - Export a value in the sandbox.\\n   *\u002F\\n  exportValueToSandbox(val) {\\n    throw new Error(\\\"Not implemented\\\");\\n  }\\n\\n  \u002F**\\n   * @param {Object} val - Import a value from the sandbox.\\n   *\u002F\\n  importValueFromSandbox(val) {\\n    throw new Error(\\\"Not implemented\\\");\\n  }\\n\\n  \u002F**\\n   * @param {String} errorMessage - Create an error in the sandbox.\\n   *\u002F\\n  createErrorForSandbox(errorMessage) {\\n    throw new Error(\\\"Not implemented\\\");\\n  }\\n\\n  \u002F**\\n   * @param {String} name - Name of the function to call in the sandbox\\n   * @param {Array\u003CObject>} args - Arguments of the function.\\n   *\u002F\\n  callSandboxFunction(name, args) {\\n    try {\\n      args = this.exportValueToSandbox(args);\\n      this.commFun(name, args);\\n    } catch (e) {\\n      this.win.console.error(e);\\n    }\\n  }\\n\\n  createSandboxExternals() {\\n    \u002F\u002F All the functions in externals object are called\\n    \u002F\u002F from the sandbox.\\n    const externals = {\\n      setTimeout: (callbackId, nMilliseconds) => {\\n        if (\\n          typeof callbackId !== \\\"number\\\" ||\\n          typeof nMilliseconds !== \\\"number\\\"\\n        ) {\\n          return;\\n        }\\n\\n        if (callbackId === 0) {\\n          \u002F\u002F This callbackId corresponds to the one used for userActivation.\\n          \u002F\u002F So here, we cancel the last userActivation.\\n          this.win.clearTimeout(this.timeoutIds.get(callbackId));\\n        }\\n\\n        const id = this.win.setTimeout(() => {\\n          this.timeoutIds.delete(callbackId);\\n          this.callSandboxFunction(\\\"timeoutCb\\\", {\\n            callbackId,\\n            interval: false,\\n          });\\n        }, nMilliseconds);\\n        this.timeoutIds.set(callbackId, id);\\n      },\\n      clearTimeout: callbackId => {\\n        this.win.clearTimeout(this.timeoutIds.get(callbackId));\\n        this.timeoutIds.delete(callbackId);\\n      },\\n      setInterval: (callbackId, nMilliseconds) => {\\n        if (\\n          typeof callbackId !== \\\"number\\\" ||\\n          typeof nMilliseconds !== \\\"number\\\"\\n        ) {\\n          return;\\n        }\\n        const id = this.win.setInterval(() => {\\n          this.callSandboxFunction(\\\"timeoutCb\\\", {\\n            callbackId,\\n            interval: true,\\n          });\\n        }, nMilliseconds);\\n        this.timeoutIds.set(callbackId, id);\\n      },\\n      clearInterval: callbackId => {\\n        this.win.clearInterval(this.timeoutIds.get(callbackId));\\n        this.timeoutIds.delete(callbackId);\\n      },\\n      alert: cMsg => {\\n        if (typeof cMsg !== \\\"string\\\") {\\n          return;\\n        }\\n        this.win.alert(cMsg);\\n      },\\n      confirm: cMsg => {\\n        if (typeof cMsg !== \\\"string\\\") {\\n          return false;\\n        }\\n        return this.win.confirm(cMsg);\\n      },\\n      prompt: (cQuestion, cDefault) => {\\n        if (typeof cQuestion !== \\\"string\\\" || typeof cDefault !== \\\"string\\\") {\\n          return null;\\n        }\\n        return this.win.prompt(cQuestion, cDefault);\\n      },\\n      parseURL: cUrl => {\\n        const url = new this.win.URL(cUrl);\\n        const props = [\\n          \\\"hash\\\",\\n          \\\"host\\\",\\n          \\\"hostname\\\",\\n          \\\"href\\\",\\n          \\\"origin\\\",\\n          \\\"password\\\",\\n          \\\"pathname\\\",\\n          \\\"port\\\",\\n          \\\"protocol\\\",\\n          \\\"search\\\",\\n          \\\"searchParams\\\",\\n          \\\"username\\\",\\n        ];\\n\\n        return Object.fromEntries(\\n          props.map(name => [name, url[name].toString()])\\n        );\\n      },\\n      send: data => {\\n        if (!data) {\\n          return;\\n        }\\n        const event = new this.win.CustomEvent(\\\"updatefromsandbox\\\", {\\n          detail: this.importValueFromSandbox(data),\\n        });\\n        this.win.dispatchEvent(event);\\n      },\\n    };\\n    Object.setPrototypeOf(externals, null);\\n\\n    return (name, args) => {\\n      try {\\n        const result = externals[name](...args);\\n        return this.exportValueToSandbox(result);\\n      } catch (error) {\\n        throw this.createErrorForSandbox(error?.toString() ?? \\\"\\\");\\n      }\\n    };\\n  }\\n}\\n\",\"\u002F* Copyright 2020 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport ModuleLoader from \\\"..\u002Fexternal\u002Fquickjs\u002Fquickjs-eval.js\\\";\\nimport { SandboxSupportBase } from \\\".\u002Fpdf.sandbox.external.js\\\";\\n\\n\u002F* eslint-disable-next-line no-unused-vars *\u002F\\nconst pdfjsVersion = PDFJSDev.eval(\\\"BUNDLE_VERSION\\\");\\n\u002F* eslint-disable-next-line no-unused-vars *\u002F\\nconst pdfjsBuild = PDFJSDev.eval(\\\"BUNDLE_BUILD\\\");\\n\\nclass SandboxSupport extends SandboxSupportBase {\\n  exportValueToSandbox(val) {\\n    \u002F\u002F The communication with the Quickjs sandbox is based on strings\\n    \u002F\u002F So we use JSON.stringfy to serialize\\n    return JSON.stringify(val);\\n  }\\n\\n  importValueFromSandbox(val) {\\n    return val;\\n  }\\n\\n  createErrorForSandbox(errorMessage) {\\n    return new Error(errorMessage);\\n  }\\n}\\n\\nclass Sandbox {\\n  constructor(win, module) {\\n    this.support = new SandboxSupport(win, this);\\n\\n    \u002F\u002F The \\\"external\\\" functions created in pdf.sandbox.external.js\\n    \u002F\u002F are finally used here:\\n    \u002F\u002F https:\u002F\u002Fgithub.com\u002Fmozilla\u002Fpdf.js.quickjs\u002Fblob\u002Fmain\u002Fsrc\u002Fmyjs.js\\n    \u002F\u002F They're called from the sandbox only.\\n    module.externalCall = this.support.createSandboxExternals();\\n\\n    this._module = module;\\n\\n    \u002F\u002F 0 to display error using console.error\\n    \u002F\u002F else display error using window.alert\\n    this._alertOnError = 0;\\n  }\\n\\n  create(data) {\\n    if (PDFJSDev.test(\\\"TESTING\\\")) {\\n      this._module.ccall(\\\"nukeSandbox\\\", null, []);\\n    }\\n    const code = [PDFJSDev.eval(\\\"PDF_SCRIPTING_JS_SOURCE\\\")];\\n\\n    if (PDFJSDev.test(\\\"TESTING\\\")) {\\n      code.push(\\n        `globalThis.sendResultForTesting = callExternalFunction.bind(null, \\\"send\\\");`\\n      );\\n    } else {\\n      code.push(\\\"delete dump;\\\");\\n    }\\n\\n    let success = false;\\n    let buf = 0;\\n    try {\\n      const sandboxData = JSON.stringify(data);\\n      \u002F\u002F \\\"pdfjsScripting.initSandbox...\\\" MUST be the last line to be evaluated\\n      \u002F\u002F since the returned value is used for the communication.\\n      code.push(`pdfjsScripting.initSandbox({ data: ${sandboxData} })`);\\n      buf = this._module.stringToNewUTF8(code.join(\\\"\\\\n\\\"));\\n\\n      success = !!this._module.ccall(\\n        \\\"init\\\",\\n        \\\"number\\\",\\n        [\\\"number\\\", \\\"number\\\"],\\n        [buf, this._alertOnError]\\n      );\\n    } catch (error) {\\n      console.error(error);\\n    } finally {\\n      if (buf) {\\n        this._module.ccall(\\\"free\\\", \\\"number\\\", [\\\"number\\\"], [buf]);\\n      }\\n    }\\n\\n    if (success) {\\n      this.support.commFun = this._module.cwrap(\\\"commFun\\\", null, [\\n        \\\"string\\\",\\n        \\\"string\\\",\\n      ]);\\n    } else {\\n      this.nukeSandbox();\\n      throw new Error(\\\"Cannot start sandbox\\\");\\n    }\\n  }\\n\\n  dispatchEvent(event) {\\n    this.support?.callSandboxFunction(\\\"dispatchEvent\\\", event);\\n  }\\n\\n  dumpMemoryUse() {\\n    this._module?.ccall(\\\"dumpMemoryUse\\\", null, []);\\n  }\\n\\n  nukeSandbox() {\\n    if (this._module !== null) {\\n      this.support.destroy();\\n      this.support = null;\\n      this._module.ccall(\\\"nukeSandbox\\\", null, []);\\n      this._module = null;\\n    }\\n  }\\n\\n  evalForTesting(code, key) {\\n    if (PDFJSDev.test(\\\"TESTING\\\")) {\\n      this._module.ccall(\\n        \\\"evalInSandbox\\\",\\n        null,\\n        [\\\"string\\\", \\\"int\\\"],\\n        [\\n          `try {\\n             sendResultForTesting([{ id: \\\"${key}\\\", result: ${code} }]);\\n          } catch (error) {\\n             sendResultForTesting([{ id: \\\"${key}\\\", result: error.message }]);\\n          }`,\\n          this._alertOnError,\\n        ]\\n      );\\n    } else {\\n      throw new Error(\\\"Not implemented: evalForTesting\\\");\\n    }\\n  }\\n}\\n\\nfunction QuickJSSandbox() {\\n  return ModuleLoader().then(module => new Sandbox(window, module));\\n}\\n\\nexport { QuickJSSandbox };\\n\"],\"names\":[\"Module\",\"_scriptDir\",\"document\",\"currentScript\",\"src\",\"undefined\",\"moduleArg\",\"d\",\"k\",\"n\",\"ready\",\"Promise\",\"a\",\"b\",\"p\",\"Object\",\"assign\",\"q\",\"startsWith\",\"substr\",\"replace\",\"lastIndexOf\",\"aa\",\"print\",\"console\",\"log\",\"bind\",\"u\",\"printErr\",\"error\",\"v\",\"wasmBinary\",\"WebAssembly\",\"w\",\"x\",\"y\",\"z\",\"A\",\"B\",\"C\",\"D\",\"buffer\",\"HEAP8\",\"Int8Array\",\"HEAP16\",\"Int16Array\",\"HEAPU8\",\"Uint8Array\",\"HEAPU16\",\"Uint16Array\",\"HEAP32\",\"Int32Array\",\"HEAPU32\",\"Uint32Array\",\"HEAPF32\",\"Float32Array\",\"HEAPF64\",\"Float64Array\",\"E\",\"F\",\"G\",\"ba\",\"preRun\",\"shift\",\"unshift\",\"H\",\"I\",\"J\",\"onAbort\",\"RuntimeError\",\"K\",\"L\",\"M\",\"locateFile\",\"ca\",\"resolve\",\"then\",\"atob\",\"slice\",\"c\",\"length\",\"e\",\"charCodeAt\",\"da\",\"instantiate\",\"ea\",\"N\",\"O\",\"TextDecoder\",\"P\",\"NaN\",\"decode\",\"subarray\",\"f\",\"g\",\"String\",\"fromCharCode\",\"l\",\"fa\",\"ha\",\"Q\",\"R\",\"T\",\"S\",\"U\",\"ia\",\"ka\",\"string\",\"h\",\"r\",\"Y\",\"V\",\"array\",\"set\",\"m\",\"t\",\"W\",\"apply\",\"ja\",\"JSON\",\"parse\",\"externalCall\",\"message\",\"la\",\"i\",\"Date\",\"getSeconds\",\"getMinutes\",\"getHours\",\"getDate\",\"getMonth\",\"getFullYear\",\"getDay\",\"getTimezoneOffset\",\"Math\",\"min\",\"toTimeString\",\"match\",\"max\",\"Number\",\"window\",\"alert\",\"now\",\"j\",\"call\",\"byteLength\",\"grow\",\"push\",\"X\",\"exports\",\"monitorRunDependencies\",\"clearInterval\",\"instantiateWasm\",\"instance\",\"catch\",\"_evalInSandbox\",\"o\",\"_nukeSandbox\",\"_init\",\"_commFun\",\"_dumpMemoryUse\",\"s\",\"_free\",\"ccall\",\"cwrap\",\"every\",\"arguments\",\"stringToNewUTF8\",\"Z\",\"ma\",\"na\",\"calledRun\",\"onRuntimeInitialized\",\"postRun\",\"setStatus\",\"setTimeout\",\"preInit\",\"pop\",\"SandboxSupportBase\",\"constructor\",\"win\",\"timeoutIds\",\"Map\",\"commFun\",\"destroy\",\"id\",\"values\",\"clearTimeout\",\"exportValueToSandbox\",\"val\",\"Error\",\"importValueFromSandbox\",\"createErrorForSandbox\",\"errorMessage\",\"callSandboxFunction\",\"name\",\"args\",\"createSandboxExternals\",\"externals\",\"callbackId\",\"nMilliseconds\",\"get\",\"delete\",\"interval\",\"setInterval\",\"cMsg\",\"confirm\",\"prompt\",\"cQuestion\",\"cDefault\",\"parseURL\",\"cUrl\",\"url\",\"URL\",\"props\",\"fromEntries\",\"map\",\"toString\",\"send\",\"data\",\"event\",\"CustomEvent\",\"detail\",\"dispatchEvent\",\"setPrototypeOf\",\"result\",\"ModuleLoader\",\"pdfjsVersion\",\"pdfjsBuild\",\"SandboxSupport\",\"stringify\",\"Sandbox\",\"module\",\"support\",\"_module\",\"_alertOnError\",\"create\",\"code\",\"success\",\"buf\",\"sandboxData\",\"join\",\"nukeSandbox\",\"dumpMemoryUse\",\"evalForTesting\",\"key\",\"QuickJSSandbox\"],\"sourceRoot\":\"\"}\n\\ No newline at end of file\n+{\"version\":3,\"file\":\"pdf.sandbox.js\",\"mappings\":\"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\u002FC,eAAe,mBAAO,CAAC,IAAwB;AAC\u002FC,kBAAkB,mBAAO,CAAC,IAA4B;AACtD,4BAA4B,mBAAO,CAAC,IAAuC;AAC3E,wBAAwB,mBAAO,CAAC,IAAmC;AACnE,oBAAoB,mBAAO,CAAC,IAAqC;AACjE,kBAAkB,mBAAO,CAAC,EAA2B;AACrD,wBAAwB,mBAAO,CAAC,GAAkC;AAClE,oBAAoB,mBAAO,CAAC,IAA6B;;AAEzD;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,4DAA4D,gBAAgB;AAC5E;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,IAAI;AACJ;;;;;;;;ACpEa;AACb,WAAW,mBAAO,CAAC,IAA4B;AAC\u002FC,eAAe,mBAAO,CAAC,EAAwB;AAC\u002FC,eAAe,mBAAO,CAAC,GAAwB;AAC\u002FC,gBAAgB,mBAAO,CAAC,IAAyB;AACjD,0BAA0B,mBAAO,CAAC,IAAoC;AACtE,sBAAsB,mBAAO,CAAC,IAAgC;;AAE9D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzBa;AACb,aAAa,mBAAO,CAAC,IAA+B;AACpD,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,eAAe,mBAAO,CAAC,IAAwB;AAC\u002FC,gBAAgB,mBAAO,CAAC,IAAyB;AACjD,+BAA+B,mBAAO,CAAC,IAAuC;;AAE9E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;;;;;;;ACrBa;AACb,YAAY,mBAAO,CAAC,IAAoB;AACxC,iBAAiB,mBAAO,CAAC,IAA0B;;AAEnD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;ACtBa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS,YAAY;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClBa;AACb,iBAAiB,mBAAO,CAAC,IAA0B;;AAEnD;AACA;;AAEA;;;;;;;;ACNa;AACb;AACA,0BAA0B,mBAAO,CAAC,IAA6C;AAC\u002FE,eAAe,mBAAO,CAAC,EAAwB;AAC\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\u002FC,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,eAAe,mBAAO,CAAC,EAAwB;AAC\u002FC,cAAc,mBAAO,CAAC,IAAuB;AAC7C,aAAa,mBAAO,CAAC,IAA+B;AACpD,eAAe,mBAAO,CAAC,GAAwB;AAC\u002FC,wBAAwB,mBAAO,CAAC,IAAmC;AACnE,qBAAqB,mBAAO,CAAC,IAA8B;AAC3D,YAAY,mBAAO,CAAC,IAAoB;AACxC,sBAAsB,mBAAO,CAAC,IAAgC;AAC9D,oBAAoB,mBAAO,CAAC,IAA2C;;AAEvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,WAAW;AACxD;;AAEA;AACA;AACA;AACA,iEAAiE,sBAAsB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,SAAS;AAC3B;AACA;AACA,MAAM;AACN;AACA;AACA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,QAAQ,mBAAmB;AAC3B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,WAAW,mBAAmB;AAC9B;AACA,GAAG;AACH;AACA;AACA;AACA,oBAAoB,kBAAkB;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,IAAI,uDAAuD;AAC3D;AACA;AACA;AACA,CAAC;;;;;;;;AC1PY;AACb,yBAAyB,mBAAO,CAAC,IAAmC;AACpE,kBAAkB,mBAAO,CAAC,IAA4B;;AAEtD;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;;;;;;;ACXa;AACb,eAAe,mBAAO,CAAC,EAAwB;;AAE\u002FC;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;ACVa;AACb,kBAAkB,mBAAO,CAAC,IAAoC;;AAE9D;AACA;;AAEA,6BAA6B,uCAAuC;AACpE;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;;;;;;;;ACfa;AACb,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,iBAAiB,mBAAO,CAAC,IAA0B;;AAEnD;;AAEA;;;;;;;;ACNa;AACb,kBAAkB,mBAAO,CAAC,IAA0B;AACpD,YAAY,mBAAO,CAAC,IAAoB;;AAExC;AACA;AACA;AACA;AACA,6CAA6C,aAAa;AAC1D;AACA;AACA,GAAG;AACH,CAAC;;;;;;;;ACZY;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACVa;AACb,8BAA8B;AAC9B;AACA;;AAEA;AACA,4EAA4E,MAAM;;AAElF;AACA;AACA,SAAS;AACT;AACA;AACA,EAAE;;;;;;;;ACbW;AACb,6BAA6B,mBAAO,CAAC,IAAuC;;AAE5E;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;ACTa;AACb;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;;;;;;;ACPa;AACb,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,kBAAkB,mBAAO,CAAC,IAAoC;AAC9D,0BAA0B,mBAAO,CAAC,IAAqC;AACvE,cAAc,mBAAO,CAAC,IAAuB;AAC7C,aAAa,mBAAO,CAAC,IAA+B;AACpD,gBAAgB,mBAAO,CAAC,IAAyB;AACjD,wBAAwB,mBAAO,CAAC,GAAkC;AAClE,kBAAkB,mBAAO,CAAC,IAAwC;;AAElE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAQ,gBAAgB;AACxB;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,sBAAsB,wBAAwB;AAC9C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAW;AACX;;;;;;;;AC3Ja;AACb,kBAAkB,mBAAO,CAAC,IAAoC;AAC9D,eAAe,mBAAO,CAAC,IAAwB;;AAE\u002FC,mCAAmC;;AAEnC;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACXa;AACb,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,kBAAkB,mBAAO,CAAC,IAA4B;;AAEtD;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;ACVa;AACb,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,cAAc,mBAAO,CAAC,IAAkC;;AAExD;AACA;AACA;AACA;AACA,MAAM,gBAAgB;AACtB;AACA;AACA;AACA,MAAM,gBAAgB;AACtB;AACA;;;;;;;;ACda;AACb,iBAAiB,mBAAO,CAAC,IAA0B;;AAEnD;AACA;;AAEA;AACA;AACA,sCAAsC,kDAAkD;AACxF,IAAI;AACJ;AACA,IAAI;AACJ;;;;;;;;ACZa;AACb,kBAAkB,mBAAO,CAAC,GAAmC;;AAE7D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;ACZa;AACb,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,gBAAgB,mBAAO,CAAC,IAAqC;;AAE7D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC3Ba;AACb,WAAW,mBAAO,CAAC,IAA4B;AAC\u002FC,eAAe,mBAAO,CAAC,IAAwB;AAC\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\u002FE,CAAC,CAACgF,QAAQ,CAAC\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\u002FJ,GAAI,CAAAC,EAAE,CAAC,CAAC\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\",\"sources\":[\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-object.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-iterator.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fmake-built-in.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffunction-name.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fhtml.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fhidden-keys.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffunction-bind-native.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-string.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fan-instance.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fmath-trunc.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-symbol.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-iterator-method.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-alphabet-option.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-keys.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.every.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Finternal-state.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-integer-or-infinity.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fstructured-clone-proper-transfer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.uint8-array.set-from-base64.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-is-prototype-of.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-iterator-direct.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-keys-internal.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdefine-built-in-accessor.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-string-tag-support.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fclassof-raw.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fcorrect-prototype-getter.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fuint8-from-hex.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-create.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fnormalize-string-argument.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fiterate.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-primitive.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-get-prototype-of.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-forced.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fbase64-map.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fenvironment-user-agent.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-set-prototype-of.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Finherit-if-required.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-buffer-is-detached.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fuid.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fa-string.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fa-possible-prototype.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Finspect-source.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-get-own-property-symbols.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdescriptors.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-possible-prototype.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fan-object-or-undefined.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdocument-create-element.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array.push.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-null-or-undefined.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fan-uint8-array.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-array-iterator-method.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fenvironment.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fordinary-to-primitive.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-array.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdetach-transferable.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fsymbol-constructor-detection.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-set-length.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fiterator-helper-without-closing-on-early-error.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fglobal-this.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fcreate-property.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-callable.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-define-property.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.dom-exception.stack.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdom-exception-constants.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fown-keys.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-buffer-not-detached.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-indexed-object.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-absolute-index.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.uint8-array.to-hex.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-buffer-transfer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fshared.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fie8-dom-define.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-method.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffunction-bind-context.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fshared-key.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fenvironment-is-node.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Flength-of-array-like.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fiterators.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-pure.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fexport.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array-buffer.detached.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fcreate-non-enumerable-property.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffunction-uncurry-this-accessor.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-define-properties.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ftry-to-string.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdoes-not-exceed-safe-integer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdefine-built-in.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fclassof.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-property-key.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fcreate-property-descriptor.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fuse-symbol-as-uid.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Findexed-object.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-get-own-property-descriptor.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-buffer-byte-length.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffunction-uncurry-this-clause.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fshared-store.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fiterators-core.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-index.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fcopy-constructor-properties.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Frequire-object-coercible.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-built-in.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-buffer-basic-detection.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array-buffer.transfer-to-fixed-length.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-length.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array-buffer.transfer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.constructor.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fwell-known-symbol.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fparse-json-string.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.json.parse.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-get-own-property-names.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fan-object.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ferror-stack-clear.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fweak-map-basic-detection.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fv8-prototype-define-bug.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fenum-bug-keys.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-property-is-enumerable.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-object.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffails.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fuint8-from-base64.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fhas-own-property.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fa-callable.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-built-in-node-module.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdefine-global-property.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffunction-uncurry-this.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fenvironment-v8-version.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fiterator-close.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffunction-call.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-includes.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.uint8-array.to-base64.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.uint8-array.set-from-hex.js\",\"webpack:\u002F\u002Fpdf.js\u002Fwebpack\u002Fbootstrap\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fexternal\u002Fquickjs\u002Fquickjs-eval.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fpdf.sandbox.external.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fpdf.sandbox.js\"],\"sourcesContent\":[\"'use strict';\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\n\\nmodule.exports = function (it) {\\n  return typeof it == 'object' ? it !== null : isCallable(it);\\n};\\n\",\"'use strict';\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar tryToString = require('..\u002Finternals\u002Ftry-to-string');\\nvar getIteratorMethod = require('..\u002Finternals\u002Fget-iterator-method');\\n\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (argument, usingIterator) {\\n  var iteratorMethod = arguments.length \u003C 2 ? getIteratorMethod(argument) : usingIterator;\\n  if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\\n  throw new $TypeError(tryToString(argument) + ' is not iterable');\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar CONFIGURABLE_FUNCTION_NAME = require('..\u002Finternals\u002Ffunction-name').CONFIGURABLE;\\nvar inspectSource = require('..\u002Finternals\u002Finspect-source');\\nvar InternalStateModule = require('..\u002Finternals\u002Finternal-state');\\n\\nvar enforceInternalState = InternalStateModule.enforce;\\nvar getInternalState = InternalStateModule.get;\\nvar $String = String;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\\nvar defineProperty = Object.defineProperty;\\nvar stringSlice = uncurryThis(''.slice);\\nvar replace = uncurryThis(''.replace);\\nvar join = uncurryThis([].join);\\n\\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\\n  return defineProperty(function () { \u002F* empty *\u002F }, 'length', { value: 8 }).length !== 8;\\n});\\n\\nvar TEMPLATE = String(String).split('String');\\n\\nvar makeBuiltIn = module.exports = function (value, name, options) {\\n  if (stringSlice($String(name), 0, 7) === 'Symbol(') {\\n    name = '[' + replace($String(name), \u002F^Symbol\\\\(([^)]*)\\\\).*$\u002F, '$1') + ']';\\n  }\\n  if (options && options.getter) name = 'get ' + name;\\n  if (options && options.setter) name = 'set ' + name;\\n  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\\n    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\\n    else value.name = name;\\n  }\\n  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\\n    defineProperty(value, 'length', { value: options.arity });\\n  }\\n  try {\\n    if (options && hasOwn(options, 'constructor') && options.constructor) {\\n      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\\n    \u002F\u002F in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\\n    } else if (value.prototype) value.prototype = undefined;\\n  } catch (error) { \u002F* empty *\u002F }\\n  var state = enforceInternalState(value);\\n  if (!hasOwn(state, 'source')) {\\n    state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\\n  } return value;\\n};\\n\\n\u002F\u002F add fake Function#toString for correct work wrapped methods \u002F constructors with methods like LoDash isNative\\n\u002F\u002F eslint-disable-next-line no-extend-native -- required\\nFunction.prototype.toString = makeBuiltIn(function toString() {\\n  return isCallable(this) && getInternalState(this).source || inspectSource(this);\\n}, 'toString');\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\n\\nvar FunctionPrototype = Function.prototype;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\\n\\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\\n\u002F\u002F additional protection from minified \u002F mangled \u002F dropped function names\\nvar PROPER = EXISTS && (function something() { \u002F* empty *\u002F }).name === 'something';\\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\\n\\nmodule.exports = {\\n  EXISTS: EXISTS,\\n  PROPER: PROPER,\\n  CONFIGURABLE: CONFIGURABLE\\n};\\n\",\"'use strict';\\nvar getBuiltIn = require('..\u002Finternals\u002Fget-built-in');\\n\\nmodule.exports = getBuiltIn('document', 'documentElement');\\n\",\"'use strict';\\nmodule.exports = {};\\n\",\"'use strict';\\nvar fails = require('..\u002Finternals\u002Ffails');\\n\\nmodule.exports = !fails(function () {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind -- safe\\n  var test = (function () { \u002F* empty *\u002F }).bind();\\n  \u002F\u002F eslint-disable-next-line no-prototype-builtins -- safe\\n  return typeof test != 'function' || test.hasOwnProperty('prototype');\\n});\\n\",\"'use strict';\\nvar classof = require('..\u002Finternals\u002Fclassof');\\n\\nvar $String = String;\\n\\nmodule.exports = function (argument) {\\n  if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\\n  return $String(argument);\\n};\\n\",\"'use strict';\\nvar isPrototypeOf = require('..\u002Finternals\u002Fobject-is-prototype-of');\\n\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (it, Prototype) {\\n  if (isPrototypeOf(Prototype, it)) return it;\\n  throw new $TypeError('Incorrect invocation');\\n};\\n\",\"'use strict';\\nvar ceil = Math.ceil;\\nvar floor = Math.floor;\\n\\n\u002F\u002F `Math.trunc` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-math.trunc\\n\u002F\u002F eslint-disable-next-line es\u002Fno-math-trunc -- safe\\nmodule.exports = Math.trunc || function trunc(x) {\\n  var n = +x;\\n  return (n > 0 ? floor : ceil)(n);\\n};\\n\",\"'use strict';\\nvar getBuiltIn = require('..\u002Finternals\u002Fget-built-in');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar isPrototypeOf = require('..\u002Finternals\u002Fobject-is-prototype-of');\\nvar USE_SYMBOL_AS_UID = require('..\u002Finternals\u002Fuse-symbol-as-uid');\\n\\nvar $Object = Object;\\n\\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\\n  return typeof it == 'symbol';\\n} : function (it) {\\n  var $Symbol = getBuiltIn('Symbol');\\n  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\\n};\\n\",\"'use strict';\\nvar classof = require('..\u002Finternals\u002Fclassof');\\nvar getMethod = require('..\u002Finternals\u002Fget-method');\\nvar isNullOrUndefined = require('..\u002Finternals\u002Fis-null-or-undefined');\\nvar Iterators = require('..\u002Finternals\u002Fiterators');\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\n\\nmodule.exports = function (it) {\\n  if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\\n    || getMethod(it, '@@iterator')\\n    || Iterators[classof(it)];\\n};\\n\",\"'use strict';\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (options) {\\n  var alphabet = options && options.alphabet;\\n  if (alphabet === undefined || alphabet === 'base64' || alphabet === 'base64url') return alphabet || 'base64';\\n  throw new $TypeError('Incorrect `alphabet` option');\\n};\\n\",\"'use strict';\\nvar internalObjectKeys = require('..\u002Finternals\u002Fobject-keys-internal');\\nvar enumBugKeys = require('..\u002Finternals\u002Fenum-bug-keys');\\n\\n\u002F\u002F `Object.keys` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.keys\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-keys -- safe\\nmodule.exports = Object.keys || function keys(O) {\\n  return internalObjectKeys(O, enumBugKeys);\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar iterate = require('..\u002Finternals\u002Fiterate');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar getIteratorDirect = require('..\u002Finternals\u002Fget-iterator-direct');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\nvar iteratorHelperWithoutClosingOnEarlyError = require('..\u002Finternals\u002Fiterator-helper-without-closing-on-early-error');\\n\\nvar everyWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('every', TypeError);\\n\\n\u002F\u002F `Iterator.prototype.every` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.every\\n$({ target: 'Iterator', proto: true, real: true, forced: everyWithoutClosingOnEarlyError }, {\\n  every: function every(predicate) {\\n    anObject(this);\\n    try {\\n      aCallable(predicate);\\n    } catch (error) {\\n      iteratorClose(this, 'throw', error);\\n    }\\n\\n    if (everyWithoutClosingOnEarlyError) return call(everyWithoutClosingOnEarlyError, this, predicate);\\n\\n    var record = getIteratorDirect(this);\\n    var counter = 0;\\n    return !iterate(record, function (value, stop) {\\n      if (!predicate(value, counter++)) return stop();\\n    }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\\n  }\\n});\\n\",\"'use strict';\\nvar NATIVE_WEAK_MAP = require('..\u002Finternals\u002Fweak-map-basic-detection');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\nvar createNonEnumerableProperty = require('..\u002Finternals\u002Fcreate-non-enumerable-property');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar shared = require('..\u002Finternals\u002Fshared-store');\\nvar sharedKey = require('..\u002Finternals\u002Fshared-key');\\nvar hiddenKeys = require('..\u002Finternals\u002Fhidden-keys');\\n\\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\\nvar TypeError = globalThis.TypeError;\\nvar WeakMap = globalThis.WeakMap;\\nvar set, get, has;\\n\\nvar enforce = function (it) {\\n  return has(it) ? get(it) : set(it, {});\\n};\\n\\nvar getterFor = function (TYPE) {\\n  return function (it) {\\n    var state;\\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\\n      throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\\n    } return state;\\n  };\\n};\\n\\nif (NATIVE_WEAK_MAP || shared.state) {\\n  var store = shared.state || (shared.state = new WeakMap());\\n  \u002F* eslint-disable no-self-assign -- prototype methods protection *\u002F\\n  store.get = store.get;\\n  store.has = store.has;\\n  store.set = store.set;\\n  \u002F* eslint-enable no-self-assign -- prototype methods protection *\u002F\\n  set = function (it, metadata) {\\n    if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\\n    metadata.facade = it;\\n    store.set(it, metadata);\\n    return metadata;\\n  };\\n  get = function (it) {\\n    return store.get(it) || {};\\n  };\\n  has = function (it) {\\n    return store.has(it);\\n  };\\n} else {\\n  var STATE = sharedKey('state');\\n  hiddenKeys[STATE] = true;\\n  set = function (it, metadata) {\\n    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\\n    metadata.facade = it;\\n    createNonEnumerableProperty(it, STATE, metadata);\\n    return metadata;\\n  };\\n  get = function (it) {\\n    return hasOwn(it, STATE) ? it[STATE] : {};\\n  };\\n  has = function (it) {\\n    return hasOwn(it, STATE);\\n  };\\n}\\n\\nmodule.exports = {\\n  set: set,\\n  get: get,\\n  has: has,\\n  enforce: enforce,\\n  getterFor: getterFor\\n};\\n\",\"'use strict';\\nvar trunc = require('..\u002Finternals\u002Fmath-trunc');\\n\\n\u002F\u002F `ToIntegerOrInfinity` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-tointegerorinfinity\\nmodule.exports = function (argument) {\\n  var number = +argument;\\n  \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\\n  return number !== number || number === 0 ? 0 : trunc(number);\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar V8 = require('..\u002Finternals\u002Fenvironment-v8-version');\\nvar ENVIRONMENT = require('..\u002Finternals\u002Fenvironment');\\n\\nvar structuredClone = globalThis.structuredClone;\\n\\nmodule.exports = !!structuredClone && !fails(function () {\\n  \u002F\u002F prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation\\n  \u002F\u002F https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F679\\n  if ((ENVIRONMENT === 'DENO' && V8 > 92) || (ENVIRONMENT === 'NODE' && V8 > 94) || (ENVIRONMENT === 'BROWSER' && V8 > 97)) return false;\\n  var buffer = new ArrayBuffer(8);\\n  var clone = structuredClone(buffer, { transfer: [buffer] });\\n  return buffer.byteLength !== 0 || clone.byteLength !== 8;\\n});\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar $fromBase64 = require('..\u002Finternals\u002Fuint8-from-base64');\\nvar anUint8Array = require('..\u002Finternals\u002Fan-uint8-array');\\n\\nvar Uint8Array = globalThis.Uint8Array;\\n\\nvar INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS = !Uint8Array || !Uint8Array.prototype.setFromBase64 || !(function () {\\n  var target = new Uint8Array([255, 255, 255, 255, 255]);\\n  try {\\n    target.setFromBase64('MjYyZg===');\\n  } catch (error) {\\n    return target[0] === 50 && target[1] === 54 && target[2] === 50 && target[3] === 255 && target[4] === 255;\\n  }\\n})();\\n\\n\u002F\u002F `Uint8Array.prototype.setFromBase64` method\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-arraybuffer-base64\\nif (Uint8Array) $({ target: 'Uint8Array', proto: true, forced: INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS }, {\\n  setFromBase64: function setFromBase64(string \u002F* , options *\u002F) {\\n    anUint8Array(this);\\n\\n    var result = $fromBase64(string, arguments.length > 1 ? arguments[1] : undefined, this, this.length);\\n\\n    return { read: result.read, written: result.written };\\n  }\\n});\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\n\\nmodule.exports = uncurryThis({}.isPrototypeOf);\\n\",\"'use strict';\\n\u002F\u002F `GetIteratorDirect(obj)` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-iterator-helpers\u002F#sec-getiteratordirect\\nmodule.exports = function (obj) {\\n  return {\\n    iterator: obj,\\n    next: obj.next,\\n    done: false\\n  };\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar toIndexedObject = require('..\u002Finternals\u002Fto-indexed-object');\\nvar indexOf = require('..\u002Finternals\u002Farray-includes').indexOf;\\nvar hiddenKeys = require('..\u002Finternals\u002Fhidden-keys');\\n\\nvar push = uncurryThis([].push);\\n\\nmodule.exports = function (object, names) {\\n  var O = toIndexedObject(object);\\n  var i = 0;\\n  var result = [];\\n  var key;\\n  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\\n  \u002F\u002F Don't enum bug & hidden keys\\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\\n    ~indexOf(result, key) || push(result, key);\\n  }\\n  return result;\\n};\\n\",\"'use strict';\\nvar makeBuiltIn = require('..\u002Finternals\u002Fmake-built-in');\\nvar defineProperty = require('..\u002Finternals\u002Fobject-define-property');\\n\\nmodule.exports = function (target, name, descriptor) {\\n  if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\\n  if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\\n  return defineProperty.f(target, name, descriptor);\\n};\\n\",\"'use strict';\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\n\\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\\nvar test = {};\\n\\ntest[TO_STRING_TAG] = 'z';\\n\\nmodule.exports = String(test) === '[object z]';\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\n\\nvar toString = uncurryThis({}.toString);\\nvar stringSlice = uncurryThis(''.slice);\\n\\nmodule.exports = function (it) {\\n  return stringSlice(toString(it), 8, -1);\\n};\\n\",\"'use strict';\\nvar fails = require('..\u002Finternals\u002Ffails');\\n\\nmodule.exports = !fails(function () {\\n  function F() { \u002F* empty *\u002F }\\n  F.prototype.constructor = null;\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-object-getprototypeof -- required for testing\\n  return Object.getPrototypeOf(new F()) !== F.prototype;\\n});\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\n\\nvar Uint8Array = globalThis.Uint8Array;\\nvar SyntaxError = globalThis.SyntaxError;\\nvar parseInt = globalThis.parseInt;\\nvar min = Math.min;\\nvar NOT_HEX = \u002F[^\\\\da-f]\u002Fi;\\nvar exec = uncurryThis(NOT_HEX.exec);\\nvar stringSlice = uncurryThis(''.slice);\\n\\nmodule.exports = function (string, into) {\\n  var stringLength = string.length;\\n  if (stringLength % 2 !== 0) throw new SyntaxError('String should be an even number of characters');\\n  var maxLength = into ? min(into.length, stringLength \u002F 2) : stringLength \u002F 2;\\n  var bytes = into || new Uint8Array(maxLength);\\n  var read = 0;\\n  var written = 0;\\n  while (written \u003C maxLength) {\\n    var hexits = stringSlice(string, read, read += 2);\\n    if (exec(NOT_HEX, hexits)) throw new SyntaxError('String should only contain hex characters');\\n    bytes[written++] = parseInt(hexits, 16);\\n  }\\n  return { bytes: bytes, read: read };\\n};\\n\",\"'use strict';\\n\u002F* global ActiveXObject -- old IE, WSH *\u002F\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar definePropertiesModule = require('..\u002Finternals\u002Fobject-define-properties');\\nvar enumBugKeys = require('..\u002Finternals\u002Fenum-bug-keys');\\nvar hiddenKeys = require('..\u002Finternals\u002Fhidden-keys');\\nvar html = require('..\u002Finternals\u002Fhtml');\\nvar documentCreateElement = require('..\u002Finternals\u002Fdocument-create-element');\\nvar sharedKey = require('..\u002Finternals\u002Fshared-key');\\n\\nvar GT = '>';\\nvar LT = '\u003C';\\nvar PROTOTYPE = 'prototype';\\nvar SCRIPT = 'script';\\nvar IE_PROTO = sharedKey('IE_PROTO');\\n\\nvar EmptyConstructor = function () { \u002F* empty *\u002F };\\n\\nvar scriptTag = function (content) {\\n  return LT + SCRIPT + GT + content + LT + '\u002F' + SCRIPT + GT;\\n};\\n\\n\u002F\u002F Create object with fake `null` prototype: use ActiveX Object with cleared prototype\\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\\n  activeXDocument.write(scriptTag(''));\\n  activeXDocument.close();\\n  var temp = activeXDocument.parentWindow.Object;\\n  \u002F\u002F eslint-disable-next-line no-useless-assignment -- avoid memory leak\\n  activeXDocument = null;\\n  return temp;\\n};\\n\\n\u002F\u002F Create object with fake `null` prototype: use iframe Object with cleared prototype\\nvar NullProtoObjectViaIFrame = function () {\\n  \u002F\u002F Thrash, waste and sodomy: IE GC bug\\n  var iframe = documentCreateElement('iframe');\\n  var JS = 'java' + SCRIPT + ':';\\n  var iframeDocument;\\n  iframe.style.display = 'none';\\n  html.appendChild(iframe);\\n  \u002F\u002F https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F475\\n  iframe.src = String(JS);\\n  iframeDocument = iframe.contentWindow.document;\\n  iframeDocument.open();\\n  iframeDocument.write(scriptTag('document.F=Object'));\\n  iframeDocument.close();\\n  return iframeDocument.F;\\n};\\n\\n\u002F\u002F Check for document.domain and active x support\\n\u002F\u002F No need to use active x approach when document.domain is not set\\n\u002F\u002F see https:\u002F\u002Fgithub.com\u002Fes-shims\u002Fes5-shim\u002Fissues\u002F150\\n\u002F\u002F variation of https:\u002F\u002Fgithub.com\u002Fkitcambridge\u002Fes5-shim\u002Fcommit\u002F4f738ac066346\\n\u002F\u002F avoid IE GC bug\\nvar activeXDocument;\\nvar NullProtoObject = function () {\\n  try {\\n    activeXDocument = new ActiveXObject('htmlfile');\\n  } catch (error) { \u002F* ignore *\u002F }\\n  NullProtoObject = typeof document != 'undefined'\\n    ? document.domain && activeXDocument\\n      ? NullProtoObjectViaActiveX(activeXDocument) \u002F\u002F old IE\\n      : NullProtoObjectViaIFrame()\\n    : NullProtoObjectViaActiveX(activeXDocument); \u002F\u002F WSH\\n  var length = enumBugKeys.length;\\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\\n  return NullProtoObject();\\n};\\n\\nhiddenKeys[IE_PROTO] = true;\\n\\n\u002F\u002F `Object.create` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.create\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-create -- safe\\nmodule.exports = Object.create || function create(O, Properties) {\\n  var result;\\n  if (O !== null) {\\n    EmptyConstructor[PROTOTYPE] = anObject(O);\\n    result = new EmptyConstructor();\\n    EmptyConstructor[PROTOTYPE] = null;\\n    \u002F\u002F add \\\"__proto__\\\" for Object.getPrototypeOf polyfill\\n    result[IE_PROTO] = O;\\n  } else result = NullProtoObject();\\n  return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\\n};\\n\",\"'use strict';\\nvar toString = require('..\u002Finternals\u002Fto-string');\\n\\nmodule.exports = function (argument, $default) {\\n  return argument === undefined ? arguments.length \u003C 2 ? '' : $default : toString(argument);\\n};\\n\",\"'use strict';\\nvar bind = require('..\u002Finternals\u002Ffunction-bind-context');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar tryToString = require('..\u002Finternals\u002Ftry-to-string');\\nvar isArrayIteratorMethod = require('..\u002Finternals\u002Fis-array-iterator-method');\\nvar lengthOfArrayLike = require('..\u002Finternals\u002Flength-of-array-like');\\nvar isPrototypeOf = require('..\u002Finternals\u002Fobject-is-prototype-of');\\nvar getIterator = require('..\u002Finternals\u002Fget-iterator');\\nvar getIteratorMethod = require('..\u002Finternals\u002Fget-iterator-method');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\n\\nvar $TypeError = TypeError;\\n\\nvar Result = function (stopped, result) {\\n  this.stopped = stopped;\\n  this.result = result;\\n};\\n\\nvar ResultPrototype = Result.prototype;\\n\\nmodule.exports = function (iterable, unboundFunction, options) {\\n  var that = options && options.that;\\n  var AS_ENTRIES = !!(options && options.AS_ENTRIES);\\n  var IS_RECORD = !!(options && options.IS_RECORD);\\n  var IS_ITERATOR = !!(options && options.IS_ITERATOR);\\n  var INTERRUPTED = !!(options && options.INTERRUPTED);\\n  var fn = bind(unboundFunction, that);\\n  var iterator, iterFn, index, length, result, next, step;\\n\\n  var stop = function (condition) {\\n    if (iterator) iteratorClose(iterator, 'normal', condition);\\n    return new Result(true, condition);\\n  };\\n\\n  var callFn = function (value) {\\n    if (AS_ENTRIES) {\\n      anObject(value);\\n      return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\\n    } return INTERRUPTED ? fn(value, stop) : fn(value);\\n  };\\n\\n  if (IS_RECORD) {\\n    iterator = iterable.iterator;\\n  } else if (IS_ITERATOR) {\\n    iterator = iterable;\\n  } else {\\n    iterFn = getIteratorMethod(iterable);\\n    if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');\\n    \u002F\u002F optimisation for array iterators\\n    if (isArrayIteratorMethod(iterFn)) {\\n      for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\\n        result = callFn(iterable[index]);\\n        if (result && isPrototypeOf(ResultPrototype, result)) return result;\\n      } return new Result(false);\\n    }\\n    iterator = getIterator(iterable, iterFn);\\n  }\\n\\n  next = IS_RECORD ? iterable.next : iterator.next;\\n  while (!(step = call(next, iterator)).done) {\\n    try {\\n      result = callFn(step.value);\\n    } catch (error) {\\n      iteratorClose(iterator, 'throw', error);\\n    }\\n    if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\\n  } return new Result(false);\\n};\\n\",\"'use strict';\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\nvar isSymbol = require('..\u002Finternals\u002Fis-symbol');\\nvar getMethod = require('..\u002Finternals\u002Fget-method');\\nvar ordinaryToPrimitive = require('..\u002Finternals\u002Fordinary-to-primitive');\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\n\\nvar $TypeError = TypeError;\\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\\n\\n\u002F\u002F `ToPrimitive` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-toprimitive\\nmodule.exports = function (input, pref) {\\n  if (!isObject(input) || isSymbol(input)) return input;\\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\\n  var result;\\n  if (exoticToPrim) {\\n    if (pref === undefined) pref = 'default';\\n    result = call(exoticToPrim, input, pref);\\n    if (!isObject(result) || isSymbol(result)) return result;\\n    throw new $TypeError(\\\"Can't convert object to primitive value\\\");\\n  }\\n  if (pref === undefined) pref = 'number';\\n  return ordinaryToPrimitive(input, pref);\\n};\\n\",\"'use strict';\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar toObject = require('..\u002Finternals\u002Fto-object');\\nvar sharedKey = require('..\u002Finternals\u002Fshared-key');\\nvar CORRECT_PROTOTYPE_GETTER = require('..\u002Finternals\u002Fcorrect-prototype-getter');\\n\\nvar IE_PROTO = sharedKey('IE_PROTO');\\nvar $Object = Object;\\nvar ObjectPrototype = $Object.prototype;\\n\\n\u002F\u002F `Object.getPrototypeOf` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.getprototypeof\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getprototypeof -- safe\\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\\n  var object = toObject(O);\\n  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\\n  var constructor = object.constructor;\\n  if (isCallable(constructor) && object instanceof constructor) {\\n    return constructor.prototype;\\n  } return object instanceof $Object ? ObjectPrototype : null;\\n};\\n\",\"'use strict';\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\n\\nvar replacement = \u002F#|\\\\.prototype\\\\.\u002F;\\n\\nvar isForced = function (feature, detection) {\\n  var value = data[normalize(feature)];\\n  return value === POLYFILL ? true\\n    : value === NATIVE ? false\\n    : isCallable(detection) ? fails(detection)\\n    : !!detection;\\n};\\n\\nvar normalize = isForced.normalize = function (string) {\\n  return String(string).replace(replacement, '.').toLowerCase();\\n};\\n\\nvar data = isForced.data = {};\\nvar NATIVE = isForced.NATIVE = 'N';\\nvar POLYFILL = isForced.POLYFILL = 'P';\\n\\nmodule.exports = isForced;\\n\",\"'use strict';\\nvar commonAlphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\\nvar base64Alphabet = commonAlphabet + '+\u002F';\\nvar base64UrlAlphabet = commonAlphabet + '-_';\\n\\nvar inverse = function (characters) {\\n  \u002F\u002F TODO: use `Object.create(null)` in `core-js@4`\\n  var result = {};\\n  var index = 0;\\n  for (; index \u003C 64; index++) result[characters.charAt(index)] = index;\\n  return result;\\n};\\n\\nmodule.exports = {\\n  i2c: base64Alphabet,\\n  c2i: inverse(base64Alphabet),\\n  i2cUrl: base64UrlAlphabet,\\n  c2iUrl: inverse(base64UrlAlphabet)\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\n\\nvar navigator = globalThis.navigator;\\nvar userAgent = navigator && navigator.userAgent;\\n\\nmodule.exports = userAgent ? String(userAgent) : '';\\n\",\"'use strict';\\n\u002F* eslint-disable no-proto -- safe *\u002F\\nvar uncurryThisAccessor = require('..\u002Finternals\u002Ffunction-uncurry-this-accessor');\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\nvar requireObjectCoercible = require('..\u002Finternals\u002Frequire-object-coercible');\\nvar aPossiblePrototype = require('..\u002Finternals\u002Fa-possible-prototype');\\n\\n\u002F\u002F `Object.setPrototypeOf` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.setprototypeof\\n\u002F\u002F Works with __proto__ only. Old v8 can't work with null proto objects.\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-setprototypeof -- safe\\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\\n  var CORRECT_SETTER = false;\\n  var test = {};\\n  var setter;\\n  try {\\n    setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\\n    setter(test, []);\\n    CORRECT_SETTER = test instanceof Array;\\n  } catch (error) { \u002F* empty *\u002F }\\n  return function setPrototypeOf(O, proto) {\\n    requireObjectCoercible(O);\\n    aPossiblePrototype(proto);\\n    if (!isObject(O)) return O;\\n    if (CORRECT_SETTER) setter(O, proto);\\n    else O.__proto__ = proto;\\n    return O;\\n  };\\n}() : undefined);\\n\",\"'use strict';\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\nvar setPrototypeOf = require('..\u002Finternals\u002Fobject-set-prototype-of');\\n\\n\u002F\u002F makes subclassing work correct for wrapped built-ins\\nmodule.exports = function ($this, dummy, Wrapper) {\\n  var NewTarget, NewTargetPrototype;\\n  if (\\n    \u002F\u002F it can work only with native `setPrototypeOf`\\n    setPrototypeOf &&\\n    \u002F\u002F we haven't completely correct pre-ES6 way for getting `new.target`, so use this\\n    isCallable(NewTarget = dummy.constructor) &&\\n    NewTarget !== Wrapper &&\\n    isObject(NewTargetPrototype = NewTarget.prototype) &&\\n    NewTargetPrototype !== Wrapper.prototype\\n  ) setPrototypeOf($this, NewTargetPrototype);\\n  return $this;\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar NATIVE_ARRAY_BUFFER = require('..\u002Finternals\u002Farray-buffer-basic-detection');\\nvar arrayBufferByteLength = require('..\u002Finternals\u002Farray-buffer-byte-length');\\n\\nvar DataView = globalThis.DataView;\\n\\nmodule.exports = function (O) {\\n  if (!NATIVE_ARRAY_BUFFER || arrayBufferByteLength(O) !== 0) return false;\\n  try {\\n    \u002F\u002F eslint-disable-next-line no-new -- thrower\\n    new DataView(O);\\n    return false;\\n  } catch (error) {\\n    return true;\\n  }\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\n\\nvar id = 0;\\nvar postfix = Math.random();\\nvar toString = uncurryThis(1.0.toString);\\n\\nmodule.exports = function (key) {\\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\\n};\\n\",\"'use strict';\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (argument) {\\n  if (typeof argument == 'string') return argument;\\n  throw new $TypeError('Argument is not a string');\\n};\\n\",\"'use strict';\\nvar isPossiblePrototype = require('..\u002Finternals\u002Fis-possible-prototype');\\n\\nvar $String = String;\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (argument) {\\n  if (isPossiblePrototype(argument)) return argument;\\n  throw new $TypeError(\\\"Can't set \\\" + $String(argument) + ' as a prototype');\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar store = require('..\u002Finternals\u002Fshared-store');\\n\\nvar functionToString = uncurryThis(Function.toString);\\n\\n\u002F\u002F this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\\nif (!isCallable(store.inspectSource)) {\\n  store.inspectSource = function (it) {\\n    return functionToString(it);\\n  };\\n}\\n\\nmodule.exports = store.inspectSource;\\n\",\"'use strict';\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertysymbols -- safe\\nexports.f = Object.getOwnPropertySymbols;\\n\",\"'use strict';\\nvar fails = require('..\u002Finternals\u002Ffails');\\n\\n\u002F\u002F Detect IE8's incomplete defineProperty implementation\\nmodule.exports = !fails(function () {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- required for testing\\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\\n});\\n\",\"'use strict';\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\n\\nmodule.exports = function (argument) {\\n  return isObject(argument) || argument === null;\\n};\\n\",\"'use strict';\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\n\\nvar $String = String;\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (argument) {\\n  if (argument === undefined || isObject(argument)) return argument;\\n  throw new $TypeError($String(argument) + ' is not an object or undefined');\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\n\\nvar document = globalThis.document;\\n\u002F\u002F typeof document.createElement is 'object' in old IE\\nvar EXISTS = isObject(document) && isObject(document.createElement);\\n\\nmodule.exports = function (it) {\\n  return EXISTS ? document.createElement(it) : {};\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar toObject = require('..\u002Finternals\u002Fto-object');\\nvar lengthOfArrayLike = require('..\u002Finternals\u002Flength-of-array-like');\\nvar setArrayLength = require('..\u002Finternals\u002Farray-set-length');\\nvar doesNotExceedSafeInteger = require('..\u002Finternals\u002Fdoes-not-exceed-safe-integer');\\nvar fails = require('..\u002Finternals\u002Ffails');\\n\\nvar INCORRECT_TO_LENGTH = fails(function () {\\n  return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\\n});\\n\\n\u002F\u002F V8 \u003C= 121 and Safari \u003C= 15.4; FF \u003C 23 throws InternalError\\n\u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=12681\\nvar properErrorOnNonWritableLength = function () {\\n  try {\\n    \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\\n    Object.defineProperty([], 'length', { writable: false }).push();\\n  } catch (error) {\\n    return error instanceof TypeError;\\n  }\\n};\\n\\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\\n\\n\u002F\u002F `Array.prototype.push` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-array.prototype.push\\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\\n  \u002F\u002F eslint-disable-next-line no-unused-vars -- required for `.length`\\n  push: function push(item) {\\n    var O = toObject(this);\\n    var len = lengthOfArrayLike(O);\\n    var argCount = arguments.length;\\n    doesNotExceedSafeInteger(len + argCount);\\n    for (var i = 0; i \u003C argCount; i++) {\\n      O[len] = arguments[i];\\n      len++;\\n    }\\n    setArrayLength(O, len);\\n    return len;\\n  }\\n});\\n\",\"'use strict';\\n\u002F\u002F we can't use just `it == null` since of `document.all` special case\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-IsHTMLDDA-internal-slot-aec\\nmodule.exports = function (it) {\\n  return it === null || it === undefined;\\n};\\n\",\"'use strict';\\nvar classof = require('..\u002Finternals\u002Fclassof');\\n\\nvar $TypeError = TypeError;\\n\\n\u002F\u002F Perform ? RequireInternalSlot(argument, [[TypedArrayName]])\\n\u002F\u002F If argument.[[TypedArrayName]] is not \\\"Uint8Array\\\", throw a TypeError exception\\nmodule.exports = function (argument) {\\n  if (classof(argument) === 'Uint8Array') return argument;\\n  throw new $TypeError('Argument is not an Uint8Array');\\n};\\n\",\"'use strict';\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\nvar Iterators = require('..\u002Finternals\u002Fiterators');\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\nvar ArrayPrototype = Array.prototype;\\n\\n\u002F\u002F check on default Array iterator\\nmodule.exports = function (it) {\\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\\n};\\n\",\"'use strict';\\n\u002F* global Bun, Deno -- detection *\u002F\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar userAgent = require('..\u002Finternals\u002Fenvironment-user-agent');\\nvar classof = require('..\u002Finternals\u002Fclassof-raw');\\n\\nvar userAgentStartsWith = function (string) {\\n  return userAgent.slice(0, string.length) === string;\\n};\\n\\nmodule.exports = (function () {\\n  if (userAgentStartsWith('Bun\u002F')) return 'BUN';\\n  if (userAgentStartsWith('Cloudflare-Workers')) return 'CLOUDFLARE';\\n  if (userAgentStartsWith('Deno\u002F')) return 'DENO';\\n  if (userAgentStartsWith('Node.js\u002F')) return 'NODE';\\n  if (globalThis.Bun && typeof Bun.version == 'string') return 'BUN';\\n  if (globalThis.Deno && typeof Deno.version == 'object') return 'DENO';\\n  if (classof(globalThis.process) === 'process') return 'NODE';\\n  if (globalThis.window && globalThis.document) return 'BROWSER';\\n  return 'REST';\\n})();\\n\",\"'use strict';\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\n\\nvar $TypeError = TypeError;\\n\\n\u002F\u002F `OrdinaryToPrimitive` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-ordinarytoprimitive\\nmodule.exports = function (input, pref) {\\n  var fn, val;\\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\\n  throw new $TypeError(\\\"Can't convert object to primitive value\\\");\\n};\\n\",\"'use strict';\\nvar classof = require('..\u002Finternals\u002Fclassof-raw');\\n\\n\u002F\u002F `IsArray` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-isarray\\n\u002F\u002F eslint-disable-next-line es\u002Fno-array-isarray -- safe\\nmodule.exports = Array.isArray || function isArray(argument) {\\n  return classof(argument) === 'Array';\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar getBuiltInNodeModule = require('..\u002Finternals\u002Fget-built-in-node-module');\\nvar PROPER_STRUCTURED_CLONE_TRANSFER = require('..\u002Finternals\u002Fstructured-clone-proper-transfer');\\n\\nvar structuredClone = globalThis.structuredClone;\\nvar $ArrayBuffer = globalThis.ArrayBuffer;\\nvar $MessageChannel = globalThis.MessageChannel;\\nvar detach = false;\\nvar WorkerThreads, channel, buffer, $detach;\\n\\nif (PROPER_STRUCTURED_CLONE_TRANSFER) {\\n  detach = function (transferable) {\\n    structuredClone(transferable, { transfer: [transferable] });\\n  };\\n} else if ($ArrayBuffer) try {\\n  if (!$MessageChannel) {\\n    WorkerThreads = getBuiltInNodeModule('worker_threads');\\n    if (WorkerThreads) $MessageChannel = WorkerThreads.MessageChannel;\\n  }\\n\\n  if ($MessageChannel) {\\n    channel = new $MessageChannel();\\n    buffer = new $ArrayBuffer(2);\\n\\n    $detach = function (transferable) {\\n      channel.port1.postMessage(null, [transferable]);\\n    };\\n\\n    if (buffer.byteLength === 2) {\\n      $detach(buffer);\\n      if (buffer.byteLength === 0) detach = $detach;\\n    }\\n  }\\n} catch (error) { \u002F* empty *\u002F }\\n\\nmodule.exports = detach;\\n\",\"'use strict';\\n\u002F* eslint-disable es\u002Fno-symbol -- required for testing *\u002F\\nvar V8_VERSION = require('..\u002Finternals\u002Fenvironment-v8-version');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\n\\nvar $String = globalThis.String;\\n\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertysymbols -- required for testing\\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\\n  var symbol = Symbol('symbol detection');\\n  \u002F\u002F Chrome 38 Symbol has incorrect toString conversion\\n  \u002F\u002F `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\\n  \u002F\u002F nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\\n  \u002F\u002F of course, fail.\\n  return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\\n    \u002F\u002F Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\\n    !Symbol.sham && V8_VERSION && V8_VERSION \u003C 41;\\n});\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar isArray = require('..\u002Finternals\u002Fis-array');\\n\\nvar $TypeError = TypeError;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\n\\n\u002F\u002F Safari \u003C 13 does not throw an error in this case\\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\\n  \u002F\u002F makes no sense without proper strict mode support\\n  if (this !== undefined) return true;\\n  try {\\n    \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\\n    Object.defineProperty([], 'length', { writable: false }).length = 1;\\n  } catch (error) {\\n    return error instanceof TypeError;\\n  }\\n}();\\n\\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\\n  if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\\n    throw new $TypeError('Cannot set read only .length');\\n  } return O.length = length;\\n} : function (O, length) {\\n  return O.length = length;\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\n\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fecma262\u002Fpull\u002F3467\\nmodule.exports = function (METHOD_NAME, ExpectedError) {\\n  var Iterator = globalThis.Iterator;\\n  var IteratorPrototype = Iterator && Iterator.prototype;\\n  var method = IteratorPrototype && IteratorPrototype[METHOD_NAME];\\n\\n  var CLOSED = false;\\n\\n  if (method) try {\\n    method.call({\\n      next: function () { return { done: true }; },\\n      'return': function () { CLOSED = true; }\\n    }, -1);\\n  } catch (error) {\\n    \u002F\u002F https:\u002F\u002Fbugs.webkit.org\u002Fshow_bug.cgi?id=291195\\n    if (!(error instanceof ExpectedError)) CLOSED = false;\\n  }\\n\\n  if (!CLOSED) return method;\\n};\\n\",\"'use strict';\\nvar check = function (it) {\\n  return it && it.Math === Math && it;\\n};\\n\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F86#issuecomment-115759028\\nmodule.exports =\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-global-this -- safe\\n  check(typeof globalThis == 'object' && globalThis) ||\\n  check(typeof window == 'object' && window) ||\\n  \u002F\u002F eslint-disable-next-line no-restricted-globals -- safe\\n  check(typeof self == 'object' && self) ||\\n  check(typeof global == 'object' && global) ||\\n  check(typeof this == 'object' && this) ||\\n  \u002F\u002F eslint-disable-next-line no-new-func -- fallback\\n  (function () { return this; })() || Function('return this')();\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar definePropertyModule = require('..\u002Finternals\u002Fobject-define-property');\\nvar createPropertyDescriptor = require('..\u002Finternals\u002Fcreate-property-descriptor');\\n\\nmodule.exports = function (object, key, value) {\\n  if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));\\n  else object[key] = value;\\n};\\n\",\"'use strict';\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-IsHTMLDDA-internal-slot\\nvar documentAll = typeof document == 'object' && document.all;\\n\\n\u002F\u002F `IsCallable` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iscallable\\n\u002F\u002F eslint-disable-next-line unicorn\u002Fno-typeof-undefined -- required for testing\\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\\n  return typeof argument == 'function' || argument === documentAll;\\n} : function (argument) {\\n  return typeof argument == 'function';\\n};\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar IE8_DOM_DEFINE = require('..\u002Finternals\u002Fie8-dom-define');\\nvar V8_PROTOTYPE_DEFINE_BUG = require('..\u002Finternals\u002Fv8-prototype-define-bug');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar toPropertyKey = require('..\u002Finternals\u002Fto-property-key');\\n\\nvar $TypeError = TypeError;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\\nvar $defineProperty = Object.defineProperty;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\nvar ENUMERABLE = 'enumerable';\\nvar CONFIGURABLE = 'configurable';\\nvar WRITABLE = 'writable';\\n\\n\u002F\u002F `Object.defineProperty` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.defineproperty\\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\\n  anObject(O);\\n  P = toPropertyKey(P);\\n  anObject(Attributes);\\n  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\\n    var current = $getOwnPropertyDescriptor(O, P);\\n    if (current && current[WRITABLE]) {\\n      O[P] = Attributes.value;\\n      Attributes = {\\n        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\\n        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\\n        writable: false\\n      };\\n    }\\n  } return $defineProperty(O, P, Attributes);\\n} : $defineProperty : function defineProperty(O, P, Attributes) {\\n  anObject(O);\\n  P = toPropertyKey(P);\\n  anObject(Attributes);\\n  if (IE8_DOM_DEFINE) try {\\n    return $defineProperty(O, P, Attributes);\\n  } catch (error) { \u002F* empty *\u002F }\\n  if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\\n  if ('value' in Attributes) O[P] = Attributes.value;\\n  return O;\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar getBuiltIn = require('..\u002Finternals\u002Fget-built-in');\\nvar createPropertyDescriptor = require('..\u002Finternals\u002Fcreate-property-descriptor');\\nvar defineProperty = require('..\u002Finternals\u002Fobject-define-property').f;\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar anInstance = require('..\u002Finternals\u002Fan-instance');\\nvar inheritIfRequired = require('..\u002Finternals\u002Finherit-if-required');\\nvar normalizeStringArgument = require('..\u002Finternals\u002Fnormalize-string-argument');\\nvar DOMExceptionConstants = require('..\u002Finternals\u002Fdom-exception-constants');\\nvar clearErrorStack = require('..\u002Finternals\u002Ferror-stack-clear');\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar IS_PURE = require('..\u002Finternals\u002Fis-pure');\\n\\nvar DOM_EXCEPTION = 'DOMException';\\nvar Error = getBuiltIn('Error');\\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION);\\n\\nvar $DOMException = function DOMException() {\\n  anInstance(this, DOMExceptionPrototype);\\n  var argumentsLength = arguments.length;\\n  var message = normalizeStringArgument(argumentsLength \u003C 1 ? undefined : arguments[0]);\\n  var name = normalizeStringArgument(argumentsLength \u003C 2 ? undefined : arguments[1], 'Error');\\n  var that = new NativeDOMException(message, name);\\n  var error = new Error(message);\\n  error.name = DOM_EXCEPTION;\\n  defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\\n  inheritIfRequired(that, this, $DOMException);\\n  return that;\\n};\\n\\nvar DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;\\n\\nvar ERROR_HAS_STACK = 'stack' in new Error(DOM_EXCEPTION);\\nvar DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);\\n\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(globalThis, DOM_EXCEPTION);\\n\\n\u002F\u002F Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002FJarred-Sumner\u002Fbun\u002Fissues\u002F399\\nvar BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);\\n\\nvar FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;\\n\\n\u002F\u002F `DOMException` constructor patch for `.stack` where it's required\\n\u002F\u002F https:\u002F\u002Fwebidl.spec.whatwg.org\u002F#es-DOMException-specialness\\n$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { \u002F\u002F TODO: fix export logic\\n  DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\\n});\\n\\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\\n\\nif (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {\\n  if (!IS_PURE) {\\n    defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException));\\n  }\\n\\n  for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\\n    var constant = DOMExceptionConstants[key];\\n    var constantName = constant.s;\\n    if (!hasOwn(PolyfilledDOMException, constantName)) {\\n      defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));\\n    }\\n  }\\n}\\n\",\"'use strict';\\nmodule.exports = {\\n  IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },\\n  DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },\\n  HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },\\n  WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 },\\n  InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 },\\n  NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 },\\n  NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 },\\n  NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 },\\n  NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 },\\n  InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 },\\n  InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 },\\n  SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 },\\n  InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 },\\n  NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 },\\n  InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 },\\n  ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 },\\n  TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 },\\n  SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 },\\n  NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 },\\n  AbortError: { s: 'ABORT_ERR', c: 20, m: 1 },\\n  URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 },\\n  QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 },\\n  TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 },\\n  InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 },\\n  DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 }\\n};\\n\",\"'use strict';\\nvar getBuiltIn = require('..\u002Finternals\u002Fget-built-in');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar getOwnPropertyNamesModule = require('..\u002Finternals\u002Fobject-get-own-property-names');\\nvar getOwnPropertySymbolsModule = require('..\u002Finternals\u002Fobject-get-own-property-symbols');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\n\\nvar concat = uncurryThis([].concat);\\n\\n\u002F\u002F all object keys, includes non-enumerable and symbols\\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\\n  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\\n};\\n\",\"'use strict';\\nvar isDetached = require('..\u002Finternals\u002Farray-buffer-is-detached');\\n\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (it) {\\n  if (isDetached(it)) throw new $TypeError('ArrayBuffer is detached');\\n  return it;\\n};\\n\",\"'use strict';\\n\u002F\u002F toObject with fallback for non-array-like ES3 strings\\nvar IndexedObject = require('..\u002Finternals\u002Findexed-object');\\nvar requireObjectCoercible = require('..\u002Finternals\u002Frequire-object-coercible');\\n\\nmodule.exports = function (it) {\\n  return IndexedObject(requireObjectCoercible(it));\\n};\\n\",\"'use strict';\\nvar toIntegerOrInfinity = require('..\u002Finternals\u002Fto-integer-or-infinity');\\n\\nvar max = Math.max;\\nvar min = Math.min;\\n\\n\u002F\u002F Helper for a popular repeating case of the spec:\\n\u002F\u002F Let integer be ? ToInteger(index).\\n\u002F\u002F If integer \u003C 0, let result be max((length + integer), 0); else let result be min(integer, length).\\nmodule.exports = function (index, length) {\\n  var integer = toIntegerOrInfinity(index);\\n  return integer \u003C 0 ? max(integer + length, 0) : min(integer, length);\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar anUint8Array = require('..\u002Finternals\u002Fan-uint8-array');\\nvar notDetached = require('..\u002Finternals\u002Farray-buffer-not-detached');\\n\\nvar numberToString = uncurryThis(1.0.toString);\\n\\n\u002F\u002F `Uint8Array.prototype.toHex` method\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-arraybuffer-base64\\nif (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {\\n  toHex: function toHex() {\\n    anUint8Array(this);\\n    notDetached(this.buffer);\\n    var result = '';\\n    for (var i = 0, length = this.length; i \u003C length; i++) {\\n      var hex = numberToString(this[i], 16);\\n      result += hex.length === 1 ? '0' + hex : hex;\\n    }\\n    return result;\\n  }\\n});\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar uncurryThisAccessor = require('..\u002Finternals\u002Ffunction-uncurry-this-accessor');\\nvar toIndex = require('..\u002Finternals\u002Fto-index');\\nvar notDetached = require('..\u002Finternals\u002Farray-buffer-not-detached');\\nvar arrayBufferByteLength = require('..\u002Finternals\u002Farray-buffer-byte-length');\\nvar detachTransferable = require('..\u002Finternals\u002Fdetach-transferable');\\nvar PROPER_STRUCTURED_CLONE_TRANSFER = require('..\u002Finternals\u002Fstructured-clone-proper-transfer');\\n\\nvar structuredClone = globalThis.structuredClone;\\nvar ArrayBuffer = globalThis.ArrayBuffer;\\nvar DataView = globalThis.DataView;\\nvar min = Math.min;\\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\\nvar DataViewPrototype = DataView.prototype;\\nvar slice = uncurryThis(ArrayBufferPrototype.slice);\\nvar isResizable = uncurryThisAccessor(ArrayBufferPrototype, 'resizable', 'get');\\nvar maxByteLength = uncurryThisAccessor(ArrayBufferPrototype, 'maxByteLength', 'get');\\nvar getInt8 = uncurryThis(DataViewPrototype.getInt8);\\nvar setInt8 = uncurryThis(DataViewPrototype.setInt8);\\n\\nmodule.exports = (PROPER_STRUCTURED_CLONE_TRANSFER || detachTransferable) && function (arrayBuffer, newLength, preserveResizability) {\\n  var byteLength = arrayBufferByteLength(arrayBuffer);\\n  var newByteLength = newLength === undefined ? byteLength : toIndex(newLength);\\n  var fixedLength = !isResizable || !isResizable(arrayBuffer);\\n  var newBuffer;\\n  notDetached(arrayBuffer);\\n  if (PROPER_STRUCTURED_CLONE_TRANSFER) {\\n    arrayBuffer = structuredClone(arrayBuffer, { transfer: [arrayBuffer] });\\n    if (byteLength === newByteLength && (preserveResizability || fixedLength)) return arrayBuffer;\\n  }\\n  if (byteLength >= newByteLength && (!preserveResizability || fixedLength)) {\\n    newBuffer = slice(arrayBuffer, 0, newByteLength);\\n  } else {\\n    var options = preserveResizability && !fixedLength && maxByteLength ? { maxByteLength: maxByteLength(arrayBuffer) } : undefined;\\n    newBuffer = new ArrayBuffer(newByteLength, options);\\n    var a = new DataView(arrayBuffer);\\n    var b = new DataView(newBuffer);\\n    var copyLength = min(newByteLength, byteLength);\\n    for (var i = 0; i \u003C copyLength; i++) setInt8(b, i, getInt8(a, i));\\n  }\\n  if (!PROPER_STRUCTURED_CLONE_TRANSFER) detachTransferable(arrayBuffer);\\n  return newBuffer;\\n};\\n\",\"'use strict';\\nvar store = require('..\u002Finternals\u002Fshared-store');\\n\\nmodule.exports = function (key, value) {\\n  return store[key] || (store[key] = value || {});\\n};\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar createElement = require('..\u002Finternals\u002Fdocument-create-element');\\n\\n\u002F\u002F Thanks to IE8 for its funny defineProperty\\nmodule.exports = !DESCRIPTORS && !fails(function () {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- required for testing\\n  return Object.defineProperty(createElement('div'), 'a', {\\n    get: function () { return 7; }\\n  }).a !== 7;\\n});\\n\",\"'use strict';\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar isNullOrUndefined = require('..\u002Finternals\u002Fis-null-or-undefined');\\n\\n\u002F\u002F `GetMethod` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-getmethod\\nmodule.exports = function (V, P) {\\n  var func = V[P];\\n  return isNullOrUndefined(func) ? undefined : aCallable(func);\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this-clause');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar NATIVE_BIND = require('..\u002Finternals\u002Ffunction-bind-native');\\n\\nvar bind = uncurryThis(uncurryThis.bind);\\n\\n\u002F\u002F optional \u002F simple context binding\\nmodule.exports = function (fn, that) {\\n  aCallable(fn);\\n  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (\u002F* ...args *\u002F) {\\n    return fn.apply(that, arguments);\\n  };\\n};\\n\",\"'use strict';\\nvar shared = require('..\u002Finternals\u002Fshared');\\nvar uid = require('..\u002Finternals\u002Fuid');\\n\\nvar keys = shared('keys');\\n\\nmodule.exports = function (key) {\\n  return keys[key] || (keys[key] = uid(key));\\n};\\n\",\"'use strict';\\nvar ENVIRONMENT = require('..\u002Finternals\u002Fenvironment');\\n\\nmodule.exports = ENVIRONMENT === 'NODE';\\n\",\"'use strict';\\nvar toLength = require('..\u002Finternals\u002Fto-length');\\n\\n\u002F\u002F `LengthOfArrayLike` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-lengthofarraylike\\nmodule.exports = function (obj) {\\n  return toLength(obj.length);\\n};\\n\",\"'use strict';\\nmodule.exports = {};\\n\",\"'use strict';\\nmodule.exports = false;\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar getOwnPropertyDescriptor = require('..\u002Finternals\u002Fobject-get-own-property-descriptor').f;\\nvar createNonEnumerableProperty = require('..\u002Finternals\u002Fcreate-non-enumerable-property');\\nvar defineBuiltIn = require('..\u002Finternals\u002Fdefine-built-in');\\nvar defineGlobalProperty = require('..\u002Finternals\u002Fdefine-global-property');\\nvar copyConstructorProperties = require('..\u002Finternals\u002Fcopy-constructor-properties');\\nvar isForced = require('..\u002Finternals\u002Fis-forced');\\n\\n\u002F*\\n  options.target         - name of the target object\\n  options.global         - target is the global object\\n  options.stat           - export as static methods of target\\n  options.proto          - export as prototype methods of target\\n  options.real           - real prototype method for the `pure` version\\n  options.forced         - export even if the native feature is available\\n  options.bind           - bind methods to the target, required for the `pure` version\\n  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version\\n  options.unsafe         - use the simple assignment of property instead of delete + defineProperty\\n  options.sham           - add a flag to not completely full polyfills\\n  options.enumerable     - export as enumerable property\\n  options.dontCallGetSet - prevent calling a getter on target\\n  options.name           - the .name of the function if it does not match the key\\n*\u002F\\nmodule.exports = function (options, source) {\\n  var TARGET = options.target;\\n  var GLOBAL = options.global;\\n  var STATIC = options.stat;\\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\\n  if (GLOBAL) {\\n    target = globalThis;\\n  } else if (STATIC) {\\n    target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\\n  } else {\\n    target = globalThis[TARGET] && globalThis[TARGET].prototype;\\n  }\\n  if (target) for (key in source) {\\n    sourceProperty = source[key];\\n    if (options.dontCallGetSet) {\\n      descriptor = getOwnPropertyDescriptor(target, key);\\n      targetProperty = descriptor && descriptor.value;\\n    } else targetProperty = target[key];\\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\\n    \u002F\u002F contained in target\\n    if (!FORCED && targetProperty !== undefined) {\\n      if (typeof sourceProperty == typeof targetProperty) continue;\\n      copyConstructorProperties(sourceProperty, targetProperty);\\n    }\\n    \u002F\u002F add a flag to not completely full polyfills\\n    if (options.sham || (targetProperty && targetProperty.sham)) {\\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\\n    }\\n    defineBuiltIn(target, key, sourceProperty, options);\\n  }\\n};\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar defineBuiltInAccessor = require('..\u002Finternals\u002Fdefine-built-in-accessor');\\nvar isDetached = require('..\u002Finternals\u002Farray-buffer-is-detached');\\n\\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\\n\\n\u002F\u002F `ArrayBuffer.prototype.detached` getter\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-get-arraybuffer.prototype.detached\\nif (DESCRIPTORS && !('detached' in ArrayBufferPrototype)) {\\n  defineBuiltInAccessor(ArrayBufferPrototype, 'detached', {\\n    configurable: true,\\n    get: function detached() {\\n      return isDetached(this);\\n    }\\n  });\\n}\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar definePropertyModule = require('..\u002Finternals\u002Fobject-define-property');\\nvar createPropertyDescriptor = require('..\u002Finternals\u002Fcreate-property-descriptor');\\n\\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\\n} : function (object, key, value) {\\n  object[key] = value;\\n  return object;\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\n\\nmodule.exports = function (object, key, method) {\\n  try {\\n    \u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\n    return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\\n  } catch (error) { \u002F* empty *\u002F }\\n};\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar V8_PROTOTYPE_DEFINE_BUG = require('..\u002Finternals\u002Fv8-prototype-define-bug');\\nvar definePropertyModule = require('..\u002Finternals\u002Fobject-define-property');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar toIndexedObject = require('..\u002Finternals\u002Fto-indexed-object');\\nvar objectKeys = require('..\u002Finternals\u002Fobject-keys');\\n\\n\u002F\u002F `Object.defineProperties` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.defineproperties\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperties -- safe\\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\\n  anObject(O);\\n  var props = toIndexedObject(Properties);\\n  var keys = objectKeys(Properties);\\n  var length = keys.length;\\n  var index = 0;\\n  var key;\\n  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\\n  return O;\\n};\\n\",\"'use strict';\\nvar $String = String;\\n\\nmodule.exports = function (argument) {\\n  try {\\n    return $String(argument);\\n  } catch (error) {\\n    return 'Object';\\n  }\\n};\\n\",\"'use strict';\\nvar $TypeError = TypeError;\\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; \u002F\u002F 2 ** 53 - 1 == 9007199254740991\\n\\nmodule.exports = function (it) {\\n  if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\\n  return it;\\n};\\n\",\"'use strict';\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar definePropertyModule = require('..\u002Finternals\u002Fobject-define-property');\\nvar makeBuiltIn = require('..\u002Finternals\u002Fmake-built-in');\\nvar defineGlobalProperty = require('..\u002Finternals\u002Fdefine-global-property');\\n\\nmodule.exports = function (O, key, value, options) {\\n  if (!options) options = {};\\n  var simple = options.enumerable;\\n  var name = options.name !== undefined ? options.name : key;\\n  if (isCallable(value)) makeBuiltIn(value, name, options);\\n  if (options.global) {\\n    if (simple) O[key] = value;\\n    else defineGlobalProperty(key, value);\\n  } else {\\n    try {\\n      if (!options.unsafe) delete O[key];\\n      else if (O[key]) simple = true;\\n    } catch (error) { \u002F* empty *\u002F }\\n    if (simple) O[key] = value;\\n    else definePropertyModule.f(O, key, {\\n      value: value,\\n      enumerable: false,\\n      configurable: !options.nonConfigurable,\\n      writable: !options.nonWritable\\n    });\\n  } return O;\\n};\\n\",\"'use strict';\\nvar TO_STRING_TAG_SUPPORT = require('..\u002Finternals\u002Fto-string-tag-support');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar classofRaw = require('..\u002Finternals\u002Fclassof-raw');\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\n\\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\\nvar $Object = Object;\\n\\n\u002F\u002F ES3 wrong here\\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\\n\\n\u002F\u002F fallback for IE11 Script Access Denied error\\nvar tryGet = function (it, key) {\\n  try {\\n    return it[key];\\n  } catch (error) { \u002F* empty *\u002F }\\n};\\n\\n\u002F\u002F getting tag from ES6+ `Object.prototype.toString`\\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\\n  var O, tag, result;\\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\\n    \u002F\u002F @@toStringTag case\\n    : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\\n    \u002F\u002F builtinTag case\\n    : CORRECT_ARGUMENTS ? classofRaw(O)\\n    \u002F\u002F ES3 arguments fallback\\n    : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\\n};\\n\",\"'use strict';\\nvar toPrimitive = require('..\u002Finternals\u002Fto-primitive');\\nvar isSymbol = require('..\u002Finternals\u002Fis-symbol');\\n\\n\u002F\u002F `ToPropertyKey` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-topropertykey\\nmodule.exports = function (argument) {\\n  var key = toPrimitive(argument, 'string');\\n  return isSymbol(key) ? key : key + '';\\n};\\n\",\"'use strict';\\nmodule.exports = function (bitmap, value) {\\n  return {\\n    enumerable: !(bitmap & 1),\\n    configurable: !(bitmap & 2),\\n    writable: !(bitmap & 4),\\n    value: value\\n  };\\n};\\n\",\"'use strict';\\n\u002F* eslint-disable es\u002Fno-symbol -- required for testing *\u002F\\nvar NATIVE_SYMBOL = require('..\u002Finternals\u002Fsymbol-constructor-detection');\\n\\nmodule.exports = NATIVE_SYMBOL &&\\n  !Symbol.sham &&\\n  typeof Symbol.iterator == 'symbol';\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar classof = require('..\u002Finternals\u002Fclassof-raw');\\n\\nvar $Object = Object;\\nvar split = uncurryThis(''.split);\\n\\n\u002F\u002F fallback for non-array-like ES3 and non-enumerable old V8 strings\\nmodule.exports = fails(function () {\\n  \u002F\u002F throws an error in rhino, see https:\u002F\u002Fgithub.com\u002Fmozilla\u002Frhino\u002Fissues\u002F346\\n  \u002F\u002F eslint-disable-next-line no-prototype-builtins -- safe\\n  return !$Object('z').propertyIsEnumerable(0);\\n}) ? function (it) {\\n  return classof(it) === 'String' ? split(it, '') : $Object(it);\\n} : $Object;\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar propertyIsEnumerableModule = require('..\u002Finternals\u002Fobject-property-is-enumerable');\\nvar createPropertyDescriptor = require('..\u002Finternals\u002Fcreate-property-descriptor');\\nvar toIndexedObject = require('..\u002Finternals\u002Fto-indexed-object');\\nvar toPropertyKey = require('..\u002Finternals\u002Fto-property-key');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar IE8_DOM_DEFINE = require('..\u002Finternals\u002Fie8-dom-define');\\n\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\n\\n\u002F\u002F `Object.getOwnPropertyDescriptor` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.getownpropertydescriptor\\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\\n  O = toIndexedObject(O);\\n  P = toPropertyKey(P);\\n  if (IE8_DOM_DEFINE) try {\\n    return $getOwnPropertyDescriptor(O, P);\\n  } catch (error) { \u002F* empty *\u002F }\\n  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar uncurryThisAccessor = require('..\u002Finternals\u002Ffunction-uncurry-this-accessor');\\nvar classof = require('..\u002Finternals\u002Fclassof-raw');\\n\\nvar ArrayBuffer = globalThis.ArrayBuffer;\\nvar TypeError = globalThis.TypeError;\\n\\n\u002F\u002F Includes\\n\u002F\u002F - Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).\\n\u002F\u002F - If IsSharedArrayBuffer(O) is true, throw a TypeError exception.\\nmodule.exports = ArrayBuffer && uncurryThisAccessor(ArrayBuffer.prototype, 'byteLength', 'get') || function (O) {\\n  if (classof(O) !== 'ArrayBuffer') throw new TypeError('ArrayBuffer expected');\\n  return O.byteLength;\\n};\\n\",\"'use strict';\\nvar classofRaw = require('..\u002Finternals\u002Fclassof-raw');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\n\\nmodule.exports = function (fn) {\\n  \u002F\u002F Nashorn bug:\\n  \u002F\u002F   https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F1128\\n  \u002F\u002F   https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F1130\\n  if (classofRaw(fn) === 'Function') return uncurryThis(fn);\\n};\\n\",\"'use strict';\\nvar IS_PURE = require('..\u002Finternals\u002Fis-pure');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar defineGlobalProperty = require('..\u002Finternals\u002Fdefine-global-property');\\n\\nvar SHARED = '__core-js_shared__';\\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\\n\\n(store.versions || (store.versions = [])).push({\\n  version: '3.42.0',\\n  mode: IS_PURE ? 'pure' : 'global',\\n  copyright: '© 2014-2025 Denis Pushkarev (zloirock.ru)',\\n  license: 'https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fv3.42.0\u002FLICENSE',\\n  source: 'https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js'\\n});\\n\",\"'use strict';\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\nvar create = require('..\u002Finternals\u002Fobject-create');\\nvar getPrototypeOf = require('..\u002Finternals\u002Fobject-get-prototype-of');\\nvar defineBuiltIn = require('..\u002Finternals\u002Fdefine-built-in');\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\nvar IS_PURE = require('..\u002Finternals\u002Fis-pure');\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\nvar BUGGY_SAFARI_ITERATORS = false;\\n\\n\u002F\u002F `%IteratorPrototype%` object\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-%iteratorprototype%-object\\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\\n\\n\u002F* eslint-disable es\u002Fno-array-prototype-keys -- safe *\u002F\\nif ([].keys) {\\n  arrayIterator = [].keys();\\n  \u002F\u002F Safari 8 has buggy iterators w\u002Fo `next`\\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\\n  else {\\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\\n  }\\n}\\n\\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\\n  var test = {};\\n  \u002F\u002F FF44- legacy iterators case\\n  return IteratorPrototype[ITERATOR].call(test) !== test;\\n});\\n\\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\\n\\n\u002F\u002F `%IteratorPrototype%[@@iterator]()` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-%iteratorprototype%-@@iterator\\nif (!isCallable(IteratorPrototype[ITERATOR])) {\\n  defineBuiltIn(IteratorPrototype, ITERATOR, function () {\\n    return this;\\n  });\\n}\\n\\nmodule.exports = {\\n  IteratorPrototype: IteratorPrototype,\\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\\n};\\n\",\"'use strict';\\nvar toIntegerOrInfinity = require('..\u002Finternals\u002Fto-integer-or-infinity');\\nvar toLength = require('..\u002Finternals\u002Fto-length');\\n\\nvar $RangeError = RangeError;\\n\\n\u002F\u002F `ToIndex` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-toindex\\nmodule.exports = function (it) {\\n  if (it === undefined) return 0;\\n  var number = toIntegerOrInfinity(it);\\n  var length = toLength(number);\\n  if (number !== length) throw new $RangeError('Wrong length or index');\\n  return length;\\n};\\n\",\"'use strict';\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar ownKeys = require('..\u002Finternals\u002Fown-keys');\\nvar getOwnPropertyDescriptorModule = require('..\u002Finternals\u002Fobject-get-own-property-descriptor');\\nvar definePropertyModule = require('..\u002Finternals\u002Fobject-define-property');\\n\\nmodule.exports = function (target, source, exceptions) {\\n  var keys = ownKeys(source);\\n  var defineProperty = definePropertyModule.f;\\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\\n  for (var i = 0; i \u003C keys.length; i++) {\\n    var key = keys[i];\\n    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\\n    }\\n  }\\n};\\n\",\"'use strict';\\nvar isNullOrUndefined = require('..\u002Finternals\u002Fis-null-or-undefined');\\n\\nvar $TypeError = TypeError;\\n\\n\u002F\u002F `RequireObjectCoercible` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-requireobjectcoercible\\nmodule.exports = function (it) {\\n  if (isNullOrUndefined(it)) throw new $TypeError(\\\"Can't call method on \\\" + it);\\n  return it;\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\n\\nvar aFunction = function (argument) {\\n  return isCallable(argument) ? argument : undefined;\\n};\\n\\nmodule.exports = function (namespace, method) {\\n  return arguments.length \u003C 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\\n};\\n\",\"'use strict';\\n\u002F\u002F eslint-disable-next-line es\u002Fno-typed-arrays -- safe\\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar $transfer = require('..\u002Finternals\u002Farray-buffer-transfer');\\n\\n\u002F\u002F `ArrayBuffer.prototype.transferToFixedLength` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-arraybuffer-transfer\u002F#sec-arraybuffer.prototype.transfertofixedlength\\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\\n  transferToFixedLength: function transferToFixedLength() {\\n    return $transfer(this, arguments.length ? arguments[0] : undefined, false);\\n  }\\n});\\n\",\"'use strict';\\nvar toIntegerOrInfinity = require('..\u002Finternals\u002Fto-integer-or-infinity');\\n\\nvar min = Math.min;\\n\\n\u002F\u002F `ToLength` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-tolength\\nmodule.exports = function (argument) {\\n  var len = toIntegerOrInfinity(argument);\\n  return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; \u002F\u002F 2 ** 53 - 1 == 9007199254740991\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar $transfer = require('..\u002Finternals\u002Farray-buffer-transfer');\\n\\n\u002F\u002F `ArrayBuffer.prototype.transfer` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-arraybuffer-transfer\u002F#sec-arraybuffer.prototype.transfer\\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\\n  transfer: function transfer() {\\n    return $transfer(this, arguments.length ? arguments[0] : undefined, true);\\n  }\\n});\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar anInstance = require('..\u002Finternals\u002Fan-instance');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar getPrototypeOf = require('..\u002Finternals\u002Fobject-get-prototype-of');\\nvar defineBuiltInAccessor = require('..\u002Finternals\u002Fdefine-built-in-accessor');\\nvar createProperty = require('..\u002Finternals\u002Fcreate-property');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\nvar IteratorPrototype = require('..\u002Finternals\u002Fiterators-core').IteratorPrototype;\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar IS_PURE = require('..\u002Finternals\u002Fis-pure');\\n\\nvar CONSTRUCTOR = 'constructor';\\nvar ITERATOR = 'Iterator';\\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\\n\\nvar $TypeError = TypeError;\\nvar NativeIterator = globalThis[ITERATOR];\\n\\n\u002F\u002F FF56- have non-standard global helper `Iterator`\\nvar FORCED = IS_PURE\\n  || !isCallable(NativeIterator)\\n  || NativeIterator.prototype !== IteratorPrototype\\n  \u002F\u002F FF44- non-standard `Iterator` passes previous tests\\n  || !fails(function () { NativeIterator({}); });\\n\\nvar IteratorConstructor = function Iterator() {\\n  anInstance(this, IteratorPrototype);\\n  if (getPrototypeOf(this) === IteratorPrototype) throw new $TypeError('Abstract class Iterator not directly constructable');\\n};\\n\\nvar defineIteratorPrototypeAccessor = function (key, value) {\\n  if (DESCRIPTORS) {\\n    defineBuiltInAccessor(IteratorPrototype, key, {\\n      configurable: true,\\n      get: function () {\\n        return value;\\n      },\\n      set: function (replacement) {\\n        anObject(this);\\n        if (this === IteratorPrototype) throw new $TypeError(\\\"You can't redefine this property\\\");\\n        if (hasOwn(this, key)) this[key] = replacement;\\n        else createProperty(this, key, replacement);\\n      }\\n    });\\n  } else IteratorPrototype[key] = value;\\n};\\n\\nif (!hasOwn(IteratorPrototype, TO_STRING_TAG)) defineIteratorPrototypeAccessor(TO_STRING_TAG, ITERATOR);\\n\\nif (FORCED || !hasOwn(IteratorPrototype, CONSTRUCTOR) || IteratorPrototype[CONSTRUCTOR] === Object) {\\n  defineIteratorPrototypeAccessor(CONSTRUCTOR, IteratorConstructor);\\n}\\n\\nIteratorConstructor.prototype = IteratorPrototype;\\n\\n\u002F\u002F `Iterator` constructor\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator\\n$({ global: true, constructor: true, forced: FORCED }, {\\n  Iterator: IteratorConstructor\\n});\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar shared = require('..\u002Finternals\u002Fshared');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar uid = require('..\u002Finternals\u002Fuid');\\nvar NATIVE_SYMBOL = require('..\u002Finternals\u002Fsymbol-constructor-detection');\\nvar USE_SYMBOL_AS_UID = require('..\u002Finternals\u002Fuse-symbol-as-uid');\\n\\nvar Symbol = globalThis.Symbol;\\nvar WellKnownSymbolsStore = shared('wks');\\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\\n\\nmodule.exports = function (name) {\\n  if (!hasOwn(WellKnownSymbolsStore, name)) {\\n    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\\n      ? Symbol[name]\\n      : createWellKnownSymbol('Symbol.' + name);\\n  } return WellKnownSymbolsStore[name];\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\n\\nvar $SyntaxError = SyntaxError;\\nvar $parseInt = parseInt;\\nvar fromCharCode = String.fromCharCode;\\nvar at = uncurryThis(''.charAt);\\nvar slice = uncurryThis(''.slice);\\nvar exec = uncurryThis(\u002F.\u002F.exec);\\n\\nvar codePoints = {\\n  '\\\\\\\\\\\"': '\\\"',\\n  '\\\\\\\\\\\\\\\\': '\\\\\\\\',\\n  '\\\\\\\\\u002F': '\u002F',\\n  '\\\\\\\\b': '\\\\b',\\n  '\\\\\\\\f': '\\\\f',\\n  '\\\\\\\\n': '\\\\n',\\n  '\\\\\\\\r': '\\\\r',\\n  '\\\\\\\\t': '\\\\t'\\n};\\n\\nvar IS_4_HEX_DIGITS = \u002F^[\\\\da-f]{4}$\u002Fi;\\n\u002F\u002F eslint-disable-next-line regexp\u002Fno-control-character -- safe\\nvar IS_C0_CONTROL_CODE = \u002F^[\\\\u0000-\\\\u001F]$\u002F;\\n\\nmodule.exports = function (source, i) {\\n  var unterminated = true;\\n  var value = '';\\n  while (i \u003C source.length) {\\n    var chr = at(source, i);\\n    if (chr === '\\\\\\\\') {\\n      var twoChars = slice(source, i, i + 2);\\n      if (hasOwn(codePoints, twoChars)) {\\n        value += codePoints[twoChars];\\n        i += 2;\\n      } else if (twoChars === '\\\\\\\\u') {\\n        i += 2;\\n        var fourHexDigits = slice(source, i, i + 4);\\n        if (!exec(IS_4_HEX_DIGITS, fourHexDigits)) throw new $SyntaxError('Bad Unicode escape at: ' + i);\\n        value += fromCharCode($parseInt(fourHexDigits, 16));\\n        i += 4;\\n      } else throw new $SyntaxError('Unknown escape sequence: \\\"' + twoChars + '\\\"');\\n    } else if (chr === '\\\"') {\\n      unterminated = false;\\n      i++;\\n      break;\\n    } else {\\n      if (exec(IS_C0_CONTROL_CODE, chr)) throw new $SyntaxError('Bad control character in string literal at: ' + i);\\n      value += chr;\\n      i++;\\n    }\\n  }\\n  if (unterminated) throw new $SyntaxError('Unterminated string at: ' + i);\\n  return { value: value, end: i };\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar getBuiltIn = require('..\u002Finternals\u002Fget-built-in');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\nvar isArray = require('..\u002Finternals\u002Fis-array');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar toString = require('..\u002Finternals\u002Fto-string');\\nvar lengthOfArrayLike = require('..\u002Finternals\u002Flength-of-array-like');\\nvar createProperty = require('..\u002Finternals\u002Fcreate-property');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar parseJSONString = require('..\u002Finternals\u002Fparse-json-string');\\nvar NATIVE_SYMBOL = require('..\u002Finternals\u002Fsymbol-constructor-detection');\\n\\nvar JSON = globalThis.JSON;\\nvar Number = globalThis.Number;\\nvar SyntaxError = globalThis.SyntaxError;\\nvar nativeParse = JSON && JSON.parse;\\nvar enumerableOwnProperties = getBuiltIn('Object', 'keys');\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\nvar at = uncurryThis(''.charAt);\\nvar slice = uncurryThis(''.slice);\\nvar exec = uncurryThis(\u002F.\u002F.exec);\\nvar push = uncurryThis([].push);\\n\\nvar IS_DIGIT = \u002F^\\\\d$\u002F;\\nvar IS_NON_ZERO_DIGIT = \u002F^[1-9]$\u002F;\\nvar IS_NUMBER_START = \u002F^[\\\\d-]$\u002F;\\nvar IS_WHITESPACE = \u002F^[\\\\t\\\\n\\\\r ]$\u002F;\\n\\nvar PRIMITIVE = 0;\\nvar OBJECT = 1;\\n\\nvar $parse = function (source, reviver) {\\n  source = toString(source);\\n  var context = new Context(source, 0, '');\\n  var root = context.parse();\\n  var value = root.value;\\n  var endIndex = context.skip(IS_WHITESPACE, root.end);\\n  if (endIndex \u003C source.length) {\\n    throw new SyntaxError('Unexpected extra character: \\\"' + at(source, endIndex) + '\\\" after the parsed data at: ' + endIndex);\\n  }\\n  return isCallable(reviver) ? internalize({ '': value }, '', reviver, root) : value;\\n};\\n\\nvar internalize = function (holder, name, reviver, node) {\\n  var val = holder[name];\\n  var unmodified = node && val === node.value;\\n  var context = unmodified && typeof node.source == 'string' ? { source: node.source } : {};\\n  var elementRecordsLen, keys, len, i, P;\\n  if (isObject(val)) {\\n    var nodeIsArray = isArray(val);\\n    var nodes = unmodified ? node.nodes : nodeIsArray ? [] : {};\\n    if (nodeIsArray) {\\n      elementRecordsLen = nodes.length;\\n      len = lengthOfArrayLike(val);\\n      for (i = 0; i \u003C len; i++) {\\n        internalizeProperty(val, i, internalize(val, '' + i, reviver, i \u003C elementRecordsLen ? nodes[i] : undefined));\\n      }\\n    } else {\\n      keys = enumerableOwnProperties(val);\\n      len = lengthOfArrayLike(keys);\\n      for (i = 0; i \u003C len; i++) {\\n        P = keys[i];\\n        internalizeProperty(val, P, internalize(val, P, reviver, hasOwn(nodes, P) ? nodes[P] : undefined));\\n      }\\n    }\\n  }\\n  return call(reviver, holder, name, val, context);\\n};\\n\\nvar internalizeProperty = function (object, key, value) {\\n  if (DESCRIPTORS) {\\n    var descriptor = getOwnPropertyDescriptor(object, key);\\n    if (descriptor && !descriptor.configurable) return;\\n  }\\n  if (value === undefined) delete object[key];\\n  else createProperty(object, key, value);\\n};\\n\\nvar Node = function (value, end, source, nodes) {\\n  this.value = value;\\n  this.end = end;\\n  this.source = source;\\n  this.nodes = nodes;\\n};\\n\\nvar Context = function (source, index) {\\n  this.source = source;\\n  this.index = index;\\n};\\n\\n\u002F\u002F https:\u002F\u002Fwww.json.org\u002Fjson-en.html\\nContext.prototype = {\\n  fork: function (nextIndex) {\\n    return new Context(this.source, nextIndex);\\n  },\\n  parse: function () {\\n    var source = this.source;\\n    var i = this.skip(IS_WHITESPACE, this.index);\\n    var fork = this.fork(i);\\n    var chr = at(source, i);\\n    if (exec(IS_NUMBER_START, chr)) return fork.number();\\n    switch (chr) {\\n      case '{':\\n        return fork.object();\\n      case '[':\\n        return fork.array();\\n      case '\\\"':\\n        return fork.string();\\n      case 't':\\n        return fork.keyword(true);\\n      case 'f':\\n        return fork.keyword(false);\\n      case 'n':\\n        return fork.keyword(null);\\n    } throw new SyntaxError('Unexpected character: \\\"' + chr + '\\\" at: ' + i);\\n  },\\n  node: function (type, value, start, end, nodes) {\\n    return new Node(value, end, type ? null : slice(this.source, start, end), nodes);\\n  },\\n  object: function () {\\n    var source = this.source;\\n    var i = this.index + 1;\\n    var expectKeypair = false;\\n    var object = {};\\n    var nodes = {};\\n    while (i \u003C source.length) {\\n      i = this.until(['\\\"', '}'], i);\\n      if (at(source, i) === '}' && !expectKeypair) {\\n        i++;\\n        break;\\n      }\\n      \u002F\u002F Parsing the key\\n      var result = this.fork(i).string();\\n      var key = result.value;\\n      i = result.end;\\n      i = this.until([':'], i) + 1;\\n      \u002F\u002F Parsing value\\n      i = this.skip(IS_WHITESPACE, i);\\n      result = this.fork(i).parse();\\n      createProperty(nodes, key, result);\\n      createProperty(object, key, result.value);\\n      i = this.until([',', '}'], result.end);\\n      var chr = at(source, i);\\n      if (chr === ',') {\\n        expectKeypair = true;\\n        i++;\\n      } else if (chr === '}') {\\n        i++;\\n        break;\\n      }\\n    }\\n    return this.node(OBJECT, object, this.index, i, nodes);\\n  },\\n  array: function () {\\n    var source = this.source;\\n    var i = this.index + 1;\\n    var expectElement = false;\\n    var array = [];\\n    var nodes = [];\\n    while (i \u003C source.length) {\\n      i = this.skip(IS_WHITESPACE, i);\\n      if (at(source, i) === ']' && !expectElement) {\\n        i++;\\n        break;\\n      }\\n      var result = this.fork(i).parse();\\n      push(nodes, result);\\n      push(array, result.value);\\n      i = this.until([',', ']'], result.end);\\n      if (at(source, i) === ',') {\\n        expectElement = true;\\n        i++;\\n      } else if (at(source, i) === ']') {\\n        i++;\\n        break;\\n      }\\n    }\\n    return this.node(OBJECT, array, this.index, i, nodes);\\n  },\\n  string: function () {\\n    var index = this.index;\\n    var parsed = parseJSONString(this.source, this.index + 1);\\n    return this.node(PRIMITIVE, parsed.value, index, parsed.end);\\n  },\\n  number: function () {\\n    var source = this.source;\\n    var startIndex = this.index;\\n    var i = startIndex;\\n    if (at(source, i) === '-') i++;\\n    if (at(source, i) === '0') i++;\\n    else if (exec(IS_NON_ZERO_DIGIT, at(source, i))) i = this.skip(IS_DIGIT, i + 1);\\n    else throw new SyntaxError('Failed to parse number at: ' + i);\\n    if (at(source, i) === '.') i = this.skip(IS_DIGIT, i + 1);\\n    if (at(source, i) === 'e' || at(source, i) === 'E') {\\n      i++;\\n      if (at(source, i) === '+' || at(source, i) === '-') i++;\\n      var exponentStartIndex = i;\\n      i = this.skip(IS_DIGIT, i);\\n      if (exponentStartIndex === i) throw new SyntaxError(\\\"Failed to parse number's exponent value at: \\\" + i);\\n    }\\n    return this.node(PRIMITIVE, Number(slice(source, startIndex, i)), startIndex, i);\\n  },\\n  keyword: function (value) {\\n    var keyword = '' + value;\\n    var index = this.index;\\n    var endIndex = index + keyword.length;\\n    if (slice(this.source, index, endIndex) !== keyword) throw new SyntaxError('Failed to parse value at: ' + index);\\n    return this.node(PRIMITIVE, value, index, endIndex);\\n  },\\n  skip: function (regex, i) {\\n    var source = this.source;\\n    for (; i \u003C source.length; i++) if (!exec(regex, at(source, i))) break;\\n    return i;\\n  },\\n  until: function (array, i) {\\n    i = this.skip(IS_WHITESPACE, i);\\n    var chr = at(this.source, i);\\n    for (var j = 0; j \u003C array.length; j++) if (array[j] === chr) return i;\\n    throw new SyntaxError('Unexpected character: \\\"' + chr + '\\\" at: ' + i);\\n  }\\n};\\n\\nvar NO_SOURCE_SUPPORT = fails(function () {\\n  var unsafeInt = '9007199254740993';\\n  var source;\\n  nativeParse(unsafeInt, function (key, value, context) {\\n    source = context.source;\\n  });\\n  return source !== unsafeInt;\\n});\\n\\nvar PROPER_BASE_PARSE = NATIVE_SYMBOL && !fails(function () {\\n  \u002F\u002F Safari 9 bug\\n  return 1 \u002F nativeParse('-0 \\\\t') !== -Infinity;\\n});\\n\\n\u002F\u002F `JSON.parse` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-json.parse\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-json-parse-with-source\\n$({ target: 'JSON', stat: true, forced: NO_SOURCE_SUPPORT }, {\\n  parse: function parse(text, reviver) {\\n    return PROPER_BASE_PARSE && !isCallable(reviver) ? nativeParse(text) : $parse(text, reviver);\\n  }\\n});\\n\",\"'use strict';\\nvar internalObjectKeys = require('..\u002Finternals\u002Fobject-keys-internal');\\nvar enumBugKeys = require('..\u002Finternals\u002Fenum-bug-keys');\\n\\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\\n\\n\u002F\u002F `Object.getOwnPropertyNames` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.getownpropertynames\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertynames -- safe\\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\\n  return internalObjectKeys(O, hiddenKeys);\\n};\\n\",\"'use strict';\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\n\\nvar $String = String;\\nvar $TypeError = TypeError;\\n\\n\u002F\u002F `Assert: Type(argument) is Object`\\nmodule.exports = function (argument) {\\n  if (isObject(argument)) return argument;\\n  throw new $TypeError($String(argument) + ' is not an object');\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\n\\nvar $Error = Error;\\nvar replace = uncurryThis(''.replace);\\n\\nvar TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd');\\n\u002F\u002F eslint-disable-next-line redos\u002Fno-vulnerable, sonarjs\u002Fslow-regex -- safe\\nvar V8_OR_CHAKRA_STACK_ENTRY = \u002F\\\\n\\\\s*at [^:]*:[^\\\\n]*\u002F;\\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\\n\\nmodule.exports = function (stack, dropEntries) {\\n  if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\\n    while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\\n  } return stack;\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\n\\nvar WeakMap = globalThis.WeakMap;\\n\\nmodule.exports = isCallable(WeakMap) && \u002Fnative code\u002F.test(String(WeakMap));\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar fails = require('..\u002Finternals\u002Ffails');\\n\\n\u002F\u002F V8 ~ Chrome 36-\\n\u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=3334\\nmodule.exports = DESCRIPTORS && fails(function () {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- required for testing\\n  return Object.defineProperty(function () { \u002F* empty *\u002F }, 'prototype', {\\n    value: 42,\\n    writable: false\\n  }).prototype !== 42;\\n});\\n\",\"'use strict';\\n\u002F\u002F IE8- don't enum bug keys\\nmodule.exports = [\\n  'constructor',\\n  'hasOwnProperty',\\n  'isPrototypeOf',\\n  'propertyIsEnumerable',\\n  'toLocaleString',\\n  'toString',\\n  'valueOf'\\n];\\n\",\"'use strict';\\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\n\\n\u002F\u002F Nashorn ~ JDK8 bug\\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\\n\\n\u002F\u002F `Object.prototype.propertyIsEnumerable` method implementation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.prototype.propertyisenumerable\\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\\n  var descriptor = getOwnPropertyDescriptor(this, V);\\n  return !!descriptor && descriptor.enumerable;\\n} : $propertyIsEnumerable;\\n\",\"'use strict';\\nvar requireObjectCoercible = require('..\u002Finternals\u002Frequire-object-coercible');\\n\\nvar $Object = Object;\\n\\n\u002F\u002F `ToObject` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-toobject\\nmodule.exports = function (argument) {\\n  return $Object(requireObjectCoercible(argument));\\n};\\n\",\"'use strict';\\nmodule.exports = function (exec) {\\n  try {\\n    return !!exec();\\n  } catch (error) {\\n    return true;\\n  }\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar anObjectOrUndefined = require('..\u002Finternals\u002Fan-object-or-undefined');\\nvar aString = require('..\u002Finternals\u002Fa-string');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar base64Map = require('..\u002Finternals\u002Fbase64-map');\\nvar getAlphabetOption = require('..\u002Finternals\u002Fget-alphabet-option');\\nvar notDetached = require('..\u002Finternals\u002Farray-buffer-not-detached');\\n\\nvar base64Alphabet = base64Map.c2i;\\nvar base64UrlAlphabet = base64Map.c2iUrl;\\n\\nvar SyntaxError = globalThis.SyntaxError;\\nvar TypeError = globalThis.TypeError;\\nvar at = uncurryThis(''.charAt);\\n\\nvar skipAsciiWhitespace = function (string, index) {\\n  var length = string.length;\\n  for (;index \u003C length; index++) {\\n    var chr = at(string, index);\\n    if (chr !== ' ' && chr !== '\\\\t' && chr !== '\\\\n' && chr !== '\\\\f' && chr !== '\\\\r') break;\\n  } return index;\\n};\\n\\nvar decodeBase64Chunk = function (chunk, alphabet, throwOnExtraBits) {\\n  var chunkLength = chunk.length;\\n\\n  if (chunkLength \u003C 4) {\\n    chunk += chunkLength === 2 ? 'AA' : 'A';\\n  }\\n\\n  var triplet = (alphabet[at(chunk, 0)] \u003C\u003C 18)\\n    + (alphabet[at(chunk, 1)] \u003C\u003C 12)\\n    + (alphabet[at(chunk, 2)] \u003C\u003C 6)\\n    + alphabet[at(chunk, 3)];\\n\\n  var chunkBytes = [\\n    (triplet >> 16) & 255,\\n    (triplet >> 8) & 255,\\n    triplet & 255\\n  ];\\n\\n  if (chunkLength === 2) {\\n    if (throwOnExtraBits && chunkBytes[1] !== 0) {\\n      throw new SyntaxError('Extra bits');\\n    }\\n    return [chunkBytes[0]];\\n  }\\n\\n  if (chunkLength === 3) {\\n    if (throwOnExtraBits && chunkBytes[2] !== 0) {\\n      throw new SyntaxError('Extra bits');\\n    }\\n    return [chunkBytes[0], chunkBytes[1]];\\n  }\\n\\n  return chunkBytes;\\n};\\n\\nvar writeBytes = function (bytes, elements, written) {\\n  var elementsLength = elements.length;\\n  for (var index = 0; index \u003C elementsLength; index++) {\\n    bytes[written + index] = elements[index];\\n  }\\n  return written + elementsLength;\\n};\\n\\n\u002F* eslint-disable max-statements, max-depth -- TODO *\u002F\\nmodule.exports = function (string, options, into, maxLength) {\\n  aString(string);\\n  anObjectOrUndefined(options);\\n  var alphabet = getAlphabetOption(options) === 'base64' ? base64Alphabet : base64UrlAlphabet;\\n  var lastChunkHandling = options ? options.lastChunkHandling : undefined;\\n\\n  if (lastChunkHandling === undefined) lastChunkHandling = 'loose';\\n\\n  if (lastChunkHandling !== 'loose' && lastChunkHandling !== 'strict' && lastChunkHandling !== 'stop-before-partial') {\\n    throw new TypeError('Incorrect `lastChunkHandling` option');\\n  }\\n\\n  if (into) notDetached(into.buffer);\\n\\n  var bytes = into || [];\\n  var written = 0;\\n  var read = 0;\\n  var chunk = '';\\n  var index = 0;\\n\\n  if (maxLength) while (true) {\\n    index = skipAsciiWhitespace(string, index);\\n    if (index === string.length) {\\n      if (chunk.length > 0) {\\n        if (lastChunkHandling === 'stop-before-partial') {\\n          break;\\n        }\\n        if (lastChunkHandling === 'loose') {\\n          if (chunk.length === 1) {\\n            throw new SyntaxError('Malformed padding: exactly one additional character');\\n          }\\n          written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, false), written);\\n        } else {\\n          throw new SyntaxError('Missing padding');\\n        }\\n      }\\n      read = string.length;\\n      break;\\n    }\\n    var chr = at(string, index);\\n    ++index;\\n    if (chr === '=') {\\n      if (chunk.length \u003C 2) {\\n        throw new SyntaxError('Padding is too early');\\n      }\\n      index = skipAsciiWhitespace(string, index);\\n      if (chunk.length === 2) {\\n        if (index === string.length) {\\n          if (lastChunkHandling === 'stop-before-partial') {\\n            break;\\n          }\\n          throw new SyntaxError('Malformed padding: only one =');\\n        }\\n        if (at(string, index) === '=') {\\n          ++index;\\n          index = skipAsciiWhitespace(string, index);\\n        }\\n      }\\n      if (index \u003C string.length) {\\n        throw new SyntaxError('Unexpected character after padding');\\n      }\\n      written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, lastChunkHandling === 'strict'), written);\\n      read = string.length;\\n      break;\\n    }\\n    if (!hasOwn(alphabet, chr)) {\\n      throw new SyntaxError('Unexpected character');\\n    }\\n    var remainingBytes = maxLength - written;\\n    if (remainingBytes === 1 && chunk.length === 2 || remainingBytes === 2 && chunk.length === 3) {\\n      \u002F\u002F special case: we can fit exactly the number of bytes currently represented by chunk, so we were just checking for `=`\\n      break;\\n    }\\n\\n    chunk += chr;\\n    if (chunk.length === 4) {\\n      written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, false), written);\\n      chunk = '';\\n      read = index;\\n      if (written === maxLength) {\\n        break;\\n      }\\n    }\\n  }\\n\\n  return { bytes: bytes, read: read, written: written };\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar toObject = require('..\u002Finternals\u002Fto-object');\\n\\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\\n\\n\u002F\u002F `HasOwnProperty` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-hasownproperty\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-hasown -- safe\\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\\n  return hasOwnProperty(toObject(it), key);\\n};\\n\",\"'use strict';\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar tryToString = require('..\u002Finternals\u002Ftry-to-string');\\n\\nvar $TypeError = TypeError;\\n\\n\u002F\u002F `Assert: IsCallable(argument) is true`\\nmodule.exports = function (argument) {\\n  if (isCallable(argument)) return argument;\\n  throw new $TypeError(tryToString(argument) + ' is not a function');\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar IS_NODE = require('..\u002Finternals\u002Fenvironment-is-node');\\n\\nmodule.exports = function (name) {\\n  if (IS_NODE) {\\n    try {\\n      return globalThis.process.getBuiltinModule(name);\\n    } catch (error) { \u002F* empty *\u002F }\\n    try {\\n      \u002F\u002F eslint-disable-next-line no-new-func -- safe\\n      return Function('return require(\\\"' + name + '\\\")')();\\n    } catch (error) { \u002F* empty *\u002F }\\n  }\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\n\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\\nvar defineProperty = Object.defineProperty;\\n\\nmodule.exports = function (key, value) {\\n  try {\\n    defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\\n  } catch (error) {\\n    globalThis[key] = value;\\n  } return value;\\n};\\n\",\"'use strict';\\nvar NATIVE_BIND = require('..\u002Finternals\u002Ffunction-bind-native');\\n\\nvar FunctionPrototype = Function.prototype;\\nvar call = FunctionPrototype.call;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind -- safe\\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\\n\\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\\n  return function () {\\n    return call.apply(fn, arguments);\\n  };\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar userAgent = require('..\u002Finternals\u002Fenvironment-user-agent');\\n\\nvar process = globalThis.process;\\nvar Deno = globalThis.Deno;\\nvar versions = process && process.versions || Deno && Deno.version;\\nvar v8 = versions && versions.v8;\\nvar match, version;\\n\\nif (v8) {\\n  match = v8.split('.');\\n  \u002F\u002F in old Chrome, versions of V8 isn't V8 = Chrome \u002F 10\\n  \u002F\u002F but their correct versions are not interesting for us\\n  version = match[0] > 0 && match[0] \u003C 4 ? 1 : +(match[0] + match[1]);\\n}\\n\\n\u002F\u002F BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\\n\u002F\u002F so check `userAgent` even if `.v8` exists, but 0\\nif (!version && userAgent) {\\n  match = userAgent.match(\u002FEdge\\\\\u002F(\\\\d+)\u002F);\\n  if (!match || match[1] >= 74) {\\n    match = userAgent.match(\u002FChrome\\\\\u002F(\\\\d+)\u002F);\\n    if (match) version = +match[1];\\n  }\\n}\\n\\nmodule.exports = version;\\n\",\"'use strict';\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar getMethod = require('..\u002Finternals\u002Fget-method');\\n\\nmodule.exports = function (iterator, kind, value) {\\n  var innerResult, innerError;\\n  anObject(iterator);\\n  try {\\n    innerResult = getMethod(iterator, 'return');\\n    if (!innerResult) {\\n      if (kind === 'throw') throw value;\\n      return value;\\n    }\\n    innerResult = call(innerResult, iterator);\\n  } catch (error) {\\n    innerError = true;\\n    innerResult = error;\\n  }\\n  if (kind === 'throw') throw value;\\n  if (innerError) throw innerResult;\\n  anObject(innerResult);\\n  return value;\\n};\\n\",\"'use strict';\\nvar NATIVE_BIND = require('..\u002Finternals\u002Ffunction-bind-native');\\n\\nvar call = Function.prototype.call;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind -- safe\\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\\n  return call.apply(call, arguments);\\n};\\n\",\"'use strict';\\nvar toIndexedObject = require('..\u002Finternals\u002Fto-indexed-object');\\nvar toAbsoluteIndex = require('..\u002Finternals\u002Fto-absolute-index');\\nvar lengthOfArrayLike = require('..\u002Finternals\u002Flength-of-array-like');\\n\\n\u002F\u002F `Array.prototype.{ indexOf, includes }` methods implementation\\nvar createMethod = function (IS_INCLUDES) {\\n  return function ($this, el, fromIndex) {\\n    var O = toIndexedObject($this);\\n    var length = lengthOfArrayLike(O);\\n    if (length === 0) return !IS_INCLUDES && -1;\\n    var index = toAbsoluteIndex(fromIndex, length);\\n    var value;\\n    \u002F\u002F Array#includes uses SameValueZero equality algorithm\\n    \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\\n    if (IS_INCLUDES && el !== el) while (length > index) {\\n      value = O[index++];\\n      \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\\n      if (value !== value) return true;\\n    \u002F\u002F Array#indexOf ignores holes, Array#includes - not\\n    } else for (;length > index; index++) {\\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\\n    } return !IS_INCLUDES && -1;\\n  };\\n};\\n\\nmodule.exports = {\\n  \u002F\u002F `Array.prototype.includes` method\\n  \u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-array.prototype.includes\\n  includes: createMethod(true),\\n  \u002F\u002F `Array.prototype.indexOf` method\\n  \u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-array.prototype.indexof\\n  indexOf: createMethod(false)\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar anObjectOrUndefined = require('..\u002Finternals\u002Fan-object-or-undefined');\\nvar anUint8Array = require('..\u002Finternals\u002Fan-uint8-array');\\nvar notDetached = require('..\u002Finternals\u002Farray-buffer-not-detached');\\nvar base64Map = require('..\u002Finternals\u002Fbase64-map');\\nvar getAlphabetOption = require('..\u002Finternals\u002Fget-alphabet-option');\\n\\nvar base64Alphabet = base64Map.i2c;\\nvar base64UrlAlphabet = base64Map.i2cUrl;\\n\\nvar charAt = uncurryThis(''.charAt);\\n\\n\u002F\u002F `Uint8Array.prototype.toBase64` method\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-arraybuffer-base64\\nif (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {\\n  toBase64: function toBase64(\u002F* options *\u002F) {\\n    var array = anUint8Array(this);\\n    var options = arguments.length ? anObjectOrUndefined(arguments[0]) : undefined;\\n    var alphabet = getAlphabetOption(options) === 'base64' ? base64Alphabet : base64UrlAlphabet;\\n    var omitPadding = !!options && !!options.omitPadding;\\n    notDetached(this.buffer);\\n\\n    var result = '';\\n    var i = 0;\\n    var length = array.length;\\n    var triplet;\\n\\n    var at = function (shift) {\\n      return charAt(alphabet, (triplet >> (6 * shift)) & 63);\\n    };\\n\\n    for (; i + 2 \u003C length; i += 3) {\\n      triplet = (array[i] \u003C\u003C 16) + (array[i + 1] \u003C\u003C 8) + array[i + 2];\\n      result += at(3) + at(2) + at(1) + at(0);\\n    }\\n    if (i + 2 === length) {\\n      triplet = (array[i] \u003C\u003C 16) + (array[i + 1] \u003C\u003C 8);\\n      result += at(3) + at(2) + at(1) + (omitPadding ? '' : '=');\\n    } else if (i + 1 === length) {\\n      triplet = array[i] \u003C\u003C 16;\\n      result += at(3) + at(2) + (omitPadding ? '' : '==');\\n    }\\n\\n    return result;\\n  }\\n});\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar aString = require('..\u002Finternals\u002Fa-string');\\nvar anUint8Array = require('..\u002Finternals\u002Fan-uint8-array');\\nvar notDetached = require('..\u002Finternals\u002Farray-buffer-not-detached');\\nvar $fromHex = require('..\u002Finternals\u002Fuint8-from-hex');\\n\\n\u002F\u002F `Uint8Array.prototype.setFromHex` method\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-arraybuffer-base64\\nif (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {\\n  setFromHex: function setFromHex(string) {\\n    anUint8Array(this);\\n    aString(string);\\n    notDetached(this.buffer);\\n    var read = $fromHex(string, this).read;\\n    return { read: read, written: read \u002F 2 };\\n  }\\n});\\n\",\"\u002F\u002F The module cache\\nvar __webpack_module_cache__ = {};\\n\\n\u002F\u002F The require function\\nfunction __webpack_require__(moduleId) {\\n\\t\u002F\u002F Check if module is in cache\\n\\tvar cachedModule = __webpack_module_cache__[moduleId];\\n\\tif (cachedModule !== undefined) {\\n\\t\\treturn cachedModule.exports;\\n\\t}\\n\\t\u002F\u002F Create a new module (and put it into the cache)\\n\\tvar module = __webpack_module_cache__[moduleId] = {\\n\\t\\t\u002F\u002F no module.id needed\\n\\t\\t\u002F\u002F no module.loaded needed\\n\\t\\texports: {}\\n\\t};\\n\\n\\t\u002F\u002F Execute the module function\\n\\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\\n\\n\\t\u002F\u002F Return the exports of the module\\n\\treturn module.exports;\\n}\\n\\n\",\"\\nvar Module = (() => {\\n  var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\\n  \\n  return (\\nfunction(moduleArg = {}) {\\n\\nvar d=moduleArg,k,n;d.ready=new Promise((a,b)=>{k=a;n=b});var p=Object.assign({},d),q=\\\"\\\";\\\"undefined\\\"!=typeof document&&document.currentScript&&(q=document.currentScript.src);_scriptDir&&(q=_scriptDir);q.startsWith(\\\"blob:\\\")?q=\\\"\\\":q=q.substr(0,q.replace(\u002F[?#].*\u002F,\\\"\\\").lastIndexOf(\\\"\u002F\\\")+1);var aa=d.print||console.log.bind(console),u=d.printErr||console.error.bind(console);Object.assign(d,p);p=null;var v;d.wasmBinary&&(v=d.wasmBinary);\\\"object\\\"!=typeof WebAssembly&&w(\\\"no native wasm support detected\\\");\\nvar x,y=!1,z,A,B,C;function D(){var a=x.buffer;d.HEAP8=z=new Int8Array(a);d.HEAP16=new Int16Array(a);d.HEAPU8=A=new Uint8Array(a);d.HEAPU16=new Uint16Array(a);d.HEAP32=B=new Int32Array(a);d.HEAPU32=C=new Uint32Array(a);d.HEAPF32=new Float32Array(a);d.HEAPF64=new Float64Array(a)}var E=[],F=[],G=[];function ba(){var a=d.preRun.shift();E.unshift(a)}var H=0,I=null,J=null;\\nfunction w(a){d.onAbort?.(a);a=\\\"Aborted(\\\"+a+\\\")\\\";u(a);y=!0;a=new WebAssembly.RuntimeError(a+\\\". Build with -sASSERTIONS for more info.\\\");n(a);throw a;}var K=a=>a.startsWith(\\\"data:application\u002Foctet-stream;base64,\\\"),L;L=\\\"data:application\u002Foctet-stream;base64,AGFzbQEAAAABzgZtYAJ\u002FfwBgA39\u002FfwF\u002FYAR\u002Ffn9\u002FAX5gAn9\u002FAX9gBX9+f39\u002FAX5gAX8Bf2ADf39\u002FAGAEf39\u002FfwF\u002FYAJ\u002FfgF+YAF\u002FAGABfAF8YAV\u002Ff39\u002FfwF\u002FYAJ\u002FfgBgAn9+AX9gAn9\u002FAX5gA39\u002FfgF\u002FYAN\u002Ffn8BfmAGf35\u002Ff39\u002FAX5gA39+fwBgA39+fwF\u002FYAZ\u002Ff39\u002Ff38Bf2AEf39\u002FfwBgBn9+fn9\u002FfwF+YAR\u002Ff35\u002FAX9gA39+fgF+YAN\u002Ff38BfmADf35+AX9gBH9\u002Ff38BfmAFf35+fn4AYAJ8fAF8YAF\u002FAX5gBH9\u002Ff34Bf2AFf35+f38BfmAFf39\u002Ff38AYAd\u002Ffn9+fn5\u002FAX9gBX9\u002Ff35+AX9gB39\u002Ff39\u002Ff38Bf2AAAGAFf35\u002Ffn8Bf2AEf35+fwBgBH9+fn8BfmAFf35+fn8Bf2AFf39\u002Ff38BfmAEf39+fgF\u002FYAF+AX9gBH9+f34BfmAEf35\u002FfwBgBH9+fn8Bf2AJf39\u002Ff39\u002Ff39\u002FAX9gCH9\u002Ff39\u002Ff39\u002FAX9gA39+fgBgBH9+f38Bf2AGf35\u002Ffn5\u002FAX9gBX9+fn9\u002FAGABfgF+YAd\u002Ffn9\u002Ff39\u002FAX5gAX8BfGADf39+AGAEf35\u002FfgF\u002FYAV\u002Ff35\u002FfwF\u002FYAR\u002Ffn5+AX9gBn9\u002Ff39\u002FfwF+YAN+f38Bf2AHf39\u002Ff39\u002FfwBgAnx\u002FAXxgA39\u002FfgF+YAJ+fwF\u002FYAN8fH8BfGAEf39+fwBgBH9+fn4BfmAAAX9gBn98f39\u002FfwF\u002FYAABfGAFf35\u002Ffn8BfmAGf39+fn5+AX9gAn5\u002FAGACf3wAYAV\u002Ff39\u002FfgF+YAR\u002Ff35\u002FAX5gBH9+f34AYAd\u002Ffn5+f39\u002FAX5gBH5+fn4Bf2AKf39\u002Ff39\u002Ff39\u002FfwF\u002FYAd\u002Ff39\u002Ff39+AX5gBX9+f39\u002FAGAHfH9\u002Ff39\u002FfwBgBX98f39\u002FAX5gAXwBf2AFf39+f38AYAZ\u002Ffn5+fn8Bf2AGf35\u002Ff39\u002FAX9gBH98f38Bf2AGf39\u002Ff39\u002FAGAEf39\u002FfgF+YAV\u002Ffn9\u002FfwF\u002FYAV\u002Ffn5+fgF\u002FYAJ\u002FfwF8YAV\u002Ffn5\u002FfwF\u002FYAV\u002Ff35+fgF+YAV\u002Ff35+fwF\u002FYAJ8fwF\u002FYAJ8fAF\u002FYAh\u002Ffn5+fn9+fgF+YAN\u002FfnwBfmAAAX5gB39\u002Ff35+fn8Bf2ACfn4BfGADfn5+AX9gA39\u002FfAACSQwBYQFhABUBYQFiACUBYQFjAAcBYQFkAAYBYQFlAEgBYQFmAAABYQFnAAEBYQFoADgBYQFpAAYBYQFqAAUBYQFrAAkBYQFsABUDkwmRCQwAAAUASQYGACYDAAEJAAAgOQEuCAwJAQMIAA0DDgkcAQUGDw0ADR4IDSAeADoGHgMFAQYLCA8HBgMAEAcDCAcBGhgFAwEOBS8NOwYABhMGAyEQCQ4cJwELCEo8AQEiExgPExwJAQEDBQ8FBwADOzwBCxcAAAE9Aw09DgMLCQ0FBQ0bPhMoECYpDwgNDEsGCQEHADABDwUCDwEQBw1MBgZNAzEFFANODy8GAwELAQEAAzImTxM\u002FFAkLGAMAKQUPEA0zACk0AFABCUADIT8DCQMJJAQPBQEeDw0ABgEIARlRFAYLAyEHAwY1AAEDBQsGUlMYBQ0qAEEAFRo6EA0vBgEAJwAFBUIBCgUGAQMGAQEBDQYIGAMGBQEFCw8EADMICQMPDzYADgIEVAEYDglVVhADAxcIAAsIBgEBAwEVB1dDHQoKAwUDAAUDCQYLWAUDAQsDAAYCGQgLBgcBGwUFAQUBAwcBA0QPWRANDgkVKBgADRkgFFoGEAUBAQYgBFsADQAHAwNCAxkDDgUsAS4HFwAZAQkDCgoFHQUHAQUDBRVcISQBCwcUXRQHAwcHAxgNCAsBAAIBAQMJAwMLDQEHAwcHAwABBwMwAyxeOQATLBcRAwYVCwMSAF8YKBkAExUUYGEECCtiAkUbAx4NAQIDDTIJDxYHAgc+AAEPF2MICA0IABAVAwADHAYLCQMBBR0KZAoDBRYLBgcFAwUxBTElFAAyAQUBAQABARQVBxQDBQcLBwcEAAIJAQFlAgIQEAACAQENBQgFAQICZgIIAgQmGg0IFAQDAQABDAEAAwUBAwEJAwULCQsAAQMUMDY2BGdEDjMACAAGBAQBDy0ACA4JAgAlAQABABYaBiwUBwwAFQEDCQkSCAMAEA4FBQUEaAIPAAAnBAcDABs3CwcDIBEBAwEABgEDCSkEBA4aEwAQCBdFAA4aAwUPDw8GAwcDAQ0QDw9pFw4JGhpGIQEJGQEZAQMDAwEuEgcAahxrAAADAwUVBSRAQzgeHCccBQMAbAYJAQoJHQUCAwMDFBUFAQkFBwUHAQMBBQEDJCQDBAcHBwECCwsCCwIGBgYGBgYGBhYGBgIEBAICAQ4BDgEOAQ4BDgIBDgEOAQ4BDgEOAgQEAgECAgIEAgIIBAIQAgIIAgQQEQICCAICAgICAgICAgICAgIKAgIKCgQRBAQCAgIEBAQCAgICAgIEBAQCAgICAgIEAgICJQICAgICAgIEAgICAgICAgQEAgICAgIEAgIEAgEEAgICBAICBAIEBAICAggIAgICAgQEGAgCAgQCAgICAgIEAgICBAQCAgIEAgIEAgIEAgIAAgI3AwICAgICBAICAhEEEQQCAgIRBBEREQICEgwSDAwMEgwEEQQEEAQEBAIRAjQtEyITHxcSDAICBBEIAgICAgACAgICEAgIAiITFwEAERkTHSIAARsbGwEAEgwSDAwMEgwSDAwMEgwSDBIMEgwMEgwSDAYZERERFhYZFhYIKh8jAUEDBQlGAQBHCgoKAhABCAoKCgoqARAfCgoKIwoKCgodKwoKCgoKARYWFgIABAcBcAGnA6cDBQcBAYACgIACBggBfwFBwOIICwdADQFtAgABbgCpBAFvAJwJAXAAjAUBcQDyBwFyAO4HAXMAngcBdACPAgF1ANQBAXYBAAF3APUIAXgA9AgBeQDzCAnTBgEAQQELpgOVA8ME8gjxCO8I7gjtCOwI6wjqCOgI5wjCCLwIrwiaCPEH8AfvB+cH1Qe7B+AClAeMB8oE+AbWBssGuQO8BrkGwAS+BLAGrgarBqYGmwmaCZkJnwSYCZAGkQmLCYcJhAn\u002FCPwI4wjpCMIF5gjwCMME5Qi4BeQIvgjiCMMIvQjbA7sIigWbCIcIhgiFCIMI\u002Fgf8B7oH2gbhCOAI3wjeCN0IngXcCNsI2gjZCNgI1wjWCNUI1AjTCNII0QjQCM8IzgjhA80I4QPMCMsIygjJCMEIugi5CLgIvwibBcgIxwiVA6UIpAijCKIIoQigCJ8IngidCJEIkAiPCOEDjgieBY0IjAiLCIoIxgjFCMQItwi2CLUItAizCLIIsQiwCK4IrQisCKsIqgipCKcIpgicCIIFgQWZCJgIlwiWCJUIlAiTCJII+AOJCIgI3gGECIIIgQiACP8H\u002FQf7B6cF+gf5B\u002FgH9wf4BPYH9Qf0B6kF8wftB+wH6wfqB+kH6AfmB+UH5AfjB+IHqAjhB+AH2ATfB94H3QfeBNwH2wfaB9kH1wTYB9cH1gfUB9MH0gfRB9AHzwfOB4gDzQfMB8sHygfJB8gHxwfGB8UHxAfDB8IHwQfAB\u002FEDvwe+B64F7QO9B7wH1QS5B7gHtwe2B7UHtAezB7IHsQewB9ME0gSvB64HrQesB6sHqgepB6gHpwemB6UHpAejB6IHoQegB58HnQecB5sHmgeZB5gHlweWB5UHkweSB5EHkAePB44HjQeLB4oHiQeIB4cHhgeFB4QHgweCB4EHiQmICY0JgAeACZUJkwmcBJAJjAmaBM4CwAiCCfsI+Qj\u002FBooJgQn6CJQJkgmPCZMCoQOWCYMJjgn+Bv0G\u002FAb7BvoG+Qb3BvYG9Qb0BvMG8gbxBvAG7wbuBu0G7AbrBuoG6QboBucG5gblBsgE5AbHBOMG4gbhBuAG3wbeBsYE3QbcBtsGxQTZBtgG1wbABr8Gvga9BtMG1QbRBs8GzQbKBsgGxgbEBsIG0gbUBtAGzgbMBskGxwbFBsMGwQbCBLsGuga4BrcGtga1BrQGswayBrEGrAavBq0GqgarBKkGqAanBvcDwgSXCYYJiwaFCZUDlQP+CP0I+Aj3CPYICtbbFpEJNQEBfwJAIAFCIIinQXVJDQAgAaciAiACKAIAIgJBAWs2AgAgAkEBSg0AIAAoAhAgARCXBQsLTQECfyAAKAJAIgJBgAJqIQMgAigCnAIgACgCBEcEQCADQcYBEA4gAyAAKAIEEBsgAiAAKAIENgKcAgsgAiACKAKEAjYCmAIgAyABEA4LJwEBfyMAQRBrIgIkACACIAE6AA8gACACQQ9qQQEQchogAkEQaiQAC\u002F0UAgd\u002FAn4jAEEQayICJAAgACAAQRBqIgMQgQIgACAAKAI4IgE2AjQgAiABNgIMIABBADYCMCAAIAAoAhQ2AgQDQCAAIAE2AhggACAAKAIIIgU2AhQCQAJAAn8CQAJAAkACQAJAAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEsAAAiBkH\u002FAXEiBA59ABcXFxcXFxcXBAMEBAIXFxcXFxcXFxcXFxcXFxcXFxcEEhgIBwwTGBcXCw0XDgkFChsbGxsbGxsbGxcXDxEQFhcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBxcGFxQHAQcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHFxUXC0EAIQQgASAAKAI8SQ0dIANBqn82AgAMHgsgACABQQFqEM0DDRsgAiAAKAI4NgIMDB0LIAFBAWogASABLQABQQpGGyEBCyACIAFBAWo2AgwMHQsgAiABQQFqNgIMDB0LAkACQCABLQABIgRBKkcEQCAEQS9GDQEgBEE9Rw0CIAIgAUECajYCDCADQYZ\u002FNgIADBwLIAFBAmohAQNAIAIgATYCDAJAA0ACQAJAAkACQCABLQAAIgRBCmsOBAEDAwIACyAEQSpHBEAgBA0DIAEgACgCPEkNBSAAQegaQQAQEwwgCyABLQABQS9HDQQgAiABQQJqNgIMDCQLIABBATYCMCAAIAAoAghBAWo2AgggAUEBaiEBDAQLIABBATYCMCABQQFqIQEMAwsgBMBBAE4NASABQQYgAkEMahBRIgRBfnFBqMAARgRAIABBATYCMCACKAIMIQEMAQsgAigCDCEBIARBf0cNAAsgAUEBaiEBDAELIAFBAWohAQwACwALIAFBAmohAUEADBULIAIgAUEBajYCDCADQS82AgAMGQtB3AAhBCABLQABQfUARw0XIAIgAUEBajYCBAJAIAJBBGpBARCXAiIBQQBOBEAgARCDAw0BCyACKAIMIQEMGAsgAiACKAIENgIMIAJBATYCCAwVCyACQQA2AgggAiABQQFqNgIMIAQhAQwUCyACIAFBAWoiBjYCDCACIAFBAmo2AgRB3AAhBQJAIAEtAAEiBEHcAEYEQCABLQACQfUARw0BIAJBBGpBARCXAiEFDAELIAQiBcBBAE4NACAGQQYgAkEEahBRIQULIAUQgwNFBEAgAEGT1gBBABATDBULIAIgAigCBDYCDCAAIAJBDGogAkEIaiAFQQEQ8AQiAUUNFCAAQal\u002FNgIQIAAgATYCIAwWC0EuIQQgAS0AASIFQS5GBEAgAS0AAkEuRw0VIAIgAUEDajYCDCADQaV\u002FNgIADBYLIAVBMGtB\u002FwFxQQpPDRQMEQsgAS0AAUE6a0F2SQ0QIAAoAkAtAG5BAXFFDRAgAEH52wBBABATDBILQSohBCABLQABIgVBKkcEQCAFQT1HDRMgAiABQQJqNgIMIANBhX82AgAMFAsgAS0AAkE9RgRAIAIgAUEDajYCDCADQZB\u002FNgIADBQLIAIgAUECajYCDCADQaN\u002FNgIADBMLQSUhBCABLQABQT1HDREgAiABQQJqNgIMIANBh382AgAMEgtBKyEEIAEtAAEiBUErRwRAIAVBPUcNESACIAFBAmo2AgwgA0GIfzYCAAwSCyACIAFBAmo2AgwgA0GVfzYCAAwRCyABLQABIgZBLUcEQCAGQT1HDRAgAiABQQJqNgIMIANBiX82AgAMEQsCQCAAKAJIRQ0AIAEtAAJBPkcNACAAKAIEIAVHDQsLIAIgAUECajYCDCADQZR\u002FNgIADBALAkACQAJAIAEtAAEiBUE8aw4CAQACCyACIAFBAmo2AgwgA0GafzYCAAwRCyABLQACQT1GBEAgAiABQQNqNgIMIANBin82AgAMEQsgAiABQQJqNgIMIANBln82AgAMEAsgBUEhRw0OIAAoAkhFDQ4gAS0AAkEtRw0OIAEtAANBLUYNCQwOC0E+IQQCQAJAIAEtAAFBPWsOAgABDwsgAiABQQJqNgIMIANBnH82AgAMDwsCQAJAAkAgAS0AAkE9aw4CAQACCyABLQADQT1GBEAgAiABQQRqNgIMIANBjH82AgAMEQsgAiABQQNqNgIMIANBmH82AgAMEAsgAiABQQNqNgIMIANBi382AgAMDwsgAiABQQJqNgIMIANBl382AgAMDgtBPSEEAkACQCABLQABQT1rDgIAAQ4LIAEtAAJBPUYEQCACIAFBA2o2AgwgA0GefzYCAAwPCyACIAFBAmo2AgwgA0GdfzYCAAwOCyACIAFBAmo2AgwgA0GkfzYCAAwNC0EhIQQgAS0AAUE9Rw0LIAEtAAJBPUYEQCACIAFBA2o2AgwgA0GgfzYCAAwNCyACIAFBAmo2AgwgA0GffzYCAAwMC0EmIQQgAS0AASIFQSZHBEAgBUE9Rw0LIAIgAUECajYCDCADQY1\u002FNgIADAwLIAEtAAJBPUYEQCACIAFBA2o2AgwgA0GRfzYCAAwMCyACIAFBAmo2AgwgA0GhfzYCAAwLC0HeACEEIAEtAAFBPUcNCSACIAFBAmo2AgwgA0GOfzYCAAwKC0H8ACEEIAEtAAEiBUH8AEcEQCAFQT1HDQkgAiABQQJqNgIMIANBj382AgAMCgsgAS0AAkE9RgRAIAIgAUEDajYCDCADQZJ\u002FNgIADAoLIAIgAUECajYCDCADQaJ\u002FNgIADAkLQT8hBCABLQABIgVBLkcEQCAFQT9HDQggAS0AAkE9RgRAIAIgAUEDajYCDCADQZN\u002FNgIADAoLIAIgAUECajYCDCADQaZ\u002FNgIADAkLIAEtAAJBMGtB\u002FwFxQQpJDQcgAiABQQJqNgIMIANBp382AgAMCAsgBkEATg0GIAFBBiACQQxqEFEiAUF+cUGowABGBEAgACgCCCEFDAoLIAEQqQMNCiABEIMDBEAgAkEANgIIDAULIABBzDFBABATDAULIAAgBEEBIAFBAWogAyACQQxqEP8CRQ0GDAQLQQELIQUDQAJ\u002FAkACQAJAAkAgBUUEQCACIAE2AgwMAQsgAS0AACIERQ0CAkAgBEEKaw4EDgAADgALIATAQQBODQMgAUEGIAJBDGoQUSIEQX5xQajAAEYNDSACKAIMIQEgBEF\u002FRg0BC0EBIQUMBAsgAUEBagwCCyABIAAoAjxPDQoLIAFBAWoLIQFBACEFDAALAAsCQCAAKAIAIAEgAkEMakEAQfQAEIACIghCgICAgHCDIglCgICAgMB+UgRAIAlCgICAgOAAUQ0DIAIoAgxBBiACQQhqEFEQyQFFDQELIAAoAgAgCBAMIABB8MMAQQAQEwwCCyAAIAg3AyAgAEGAfzYCEAwDCyAAIAJBDGogAkEIaiABQQAQ8AQiAUUNACAAIAE2AiAgAigCCCEBIABBADYCKCAAIAE2AiQgAEGDfzYCECAAEO8EDAILIANBqH82AgBBfwwCCyADIAQ2AgAgAiABQQFqNgIMCyAAIAIoAgw2AjhBAAshByACQRBqJAAgBw8LIABBATYCMCAAIAVBAWo2AggLIAIoAgwhAQwACwALFQAgAUHYAU4EQCAAKAIQIAEQhgULC7sHAgZ\u002FAX4jAEEgayIHJABCgICAgOAAIQsCQAJAAkACQAJAAkACQAJAAkACQCABQiCIpyIGQQFqDggDBQUAAQUFCQILIAAgAkGiwgAQtQEMBgsgACACQczoABC1AQwFCyAGQXlGDQEMAgsgAachBgwCCyABpyEGIAACfwJAIAJBAEgEQCACQf\u002F\u002F\u002F\u002F8HcSIFIAYpAgQiC6dB\u002F\u002F\u002F\u002F\u002FwdxTw0DIAZBEGohAiALQoCAgIAIg1ANASACIAVBAXRqLwEADAILIAJBMEcNAiAGKQIEQv\u002F\u002F\u002F\u002F8HgyELDAYLIAIgBWotAAALQf\u002F\u002FA3EQlAMhCwwECyAAIAEQiwSnIgZFDQILIAJB\u002F\u002F\u002F\u002F\u002FwdxIQkDQCAGKAIQIgVBMGohCiAFIAUoAhggAnFBf3NBAnRqKAIAIQUCQANAIAVFDQEgAiAKIAVBAWtBA3QiBWoiCCgCBEcEQCAIKAIAQf\u002F\u002F\u002Fx9xIQUMAQsLIAYoAhQgBWohBQJAAkACQAJAIAgoAgBBHnZBAWsOAwABAgMLIAUoAgAiAkUNBiACIAIoAgBBAWo2AgAgACACrUKAgICAcIQgA0EAQQAQNiELDAcLIAUoAgAoAhApAwAiC0KAgICAcINCgICAgMAAUQRAIAAgAhDRAQwFCyALQiCIp0F1SQ0GIAunIgAgACgCAEEBajYCAAwGCyAAIAYgAiAFIAgQwQJFDQIMAwsgBSkDACILQiCIp0F1SQ0EIAunIgAgACgCAEEBajYCAAwECwJAIAYtAAUiBUEEcUUNACAFQQhxBEAgAkEASARAIAYoAiggCUsEQCAAIAatQoCAgIBwhCAJEKYBIQsMBwsgBi8BBkEga0H\u002F\u002FwNxQfX\u002FA08NBQwCCyAGLwEGQRVrQf\u002F\u002FA3FBCksNASAAIAIQkwMiBUUNAUKAgICA4ABCgICAgDAgBUEASBshCwwFCyAAKAIQKAJEIAYvAQZBGGxqKAIUIgVFDQAgBSgCFCIIBEAgBiAGKAIAQQFqNgIAIAAgBq1CgICAgHCEIgEgAiADIAgRLQAhCyAAIAEQDAwFCyAFKAIAIgVFDQAgBiAGKAIAQQFqNgIAIAAgByAGrUKAgICAcIQiASACIAURFwAhBSAAIAEQDCAFQQBIDQIgBUUNACAHLQAAQRBxBEAgACAHKQMYEAwgACAHKQMQIANBAEEAEDYhCwwFCyAHKQMIIQsMBAsgBigCECgCLCIGDQALQoCAgIAwIQsgBEUNAiAAIAIQwAILQoCAgIDgACELDAELQoCAgIAwIQsLIAdBIGokACALCw0AIAAgASACQQQQyAILXwECfyMAQRBrIgQkACAAKAIAIQMgBCACNgIMIANBAyABIAJBABDkBSADIAMoAhApA4ABIAAoAgwgACgCCCAAKAJAIgAEfyAAKAJoQQBHQQF0BUEACxC0AiAEQRBqJAALDwAgACgCQEGAAmogARAmCysBAX8gACABIAIgA0KAgICAMEKAgICAMCAEQYDOAHIQaiEFIAAgAxAMIAULKwAgAUHYAU4EQCAAKAIQKAI4IAFBAnRqKAIAIgAgACgCAEEBajYCAAsgAQsPACAAIAAoAgAgARAWEDgLSgAgABDoAkUEQEF\u002FDwsgAkEASARAIAAQLSECCyAAIAFB\u002FwFxEA0gACACEDggACgCQCgCpAIgAkEUbGoiACAAKAIAQQFqNgIAIAILLQEBfwJAIAAoAgAiAUUNACAAKAIQIgBFDQAgASgCACAAQQAgASgCBBEBABoLCzEAIAFBAE4EQCAAQbYBEA0gACABEDggACgCQCIAKAKkAiABQRRsaiAAKAKEAjYCBAsLJwEBfyMAQRBrIgIkACACIAE2AgwgACACQQxqQQQQchogAkEQaiQACxcAIAAgASACQoCAgIAwIAMgBEECENIBCxgBAX4gASkDACEDIAEgAjcDACAAIAMQDAszAQF\u002FIAIEQCAAIQMDQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQQFrIgINAAsLIAALwQUCAn4GfyMAQeAAayIJJAAgA0EAIANBAEobIQsDQCAKIAtHBEAgACACIApBBHRqIgMoAgAQsAUhBiADLQAEIQdCgICAgDAhBAJAAkACQAJAAkACQAJAAkACQAJAIAMtAAUOCgECAgUHAwQIBQAGCyAAIAMoAggQsAUhCAJ+AkACQAJAIAMoAgxBAWoOAwIAAQkLIAAgACkDwAEiBCAIIARBABARDAILIAAgACgCKCkDECIEIAggBEEAEBEMAQsgACABIAggAUEAEBELIQQgACAIEBAgBkHLAUYEQEEBIQcMCAsgBkHUAUcNB0EAIQcMBwsCQCAGQcsBRgRAQQEhBwwBCyAGQdQBRw0AQQAhBwsgACABIAZBAiADIAcQgAMaDAcLIAAgASAGQoCAgIAwIAMoAggEfiAJIAMoAgA2AhAgCUEgaiIIQcAAQeEqIAlBEGoQSBogACADKAIIIAhBAEEKQQggAy0ABUECRhsgAy4BBhCCAQVCgICAgDALIgQgAygCDAR+IAkgAygCADYCACAJQSBqIghBwABB2iogCRBIGiAAIAMoAgwgCEEBQQtBCSADLQAFQQJGGyADLgEGEIIBBUKAgICAMAsiBSAHQYA6chBqGiAAIAQQDCAAIAUQDAwGCyADKQMIIgRCgICAgAh8Qv\u002F\u002F\u002F\u002F8PWARAIARC\u002F\u002F\u002F\u002F\u002Fw+DIQQMBQtCgICAgMB+IAS5vSIEQoCAgIDAgYD8\u002FwB9IARC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbIQQMBAtCgICAgMB+IAMpAwgiBEKAgICAwIGA\u002FP8AfSAEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGyEEDAMLIAAgASAGQQIgAyAHEIADGgwDCxABAAsgAzUCCCEECyAAIAEgBiAEIAcQFRoLIAAgBhAQIApBAWohCgwBCwsgCUHgAGokAAuMAgICfgF\u002FAkACQAJAAkACQAJAAkACQAJAQQcgAUIgiKciBCAEQQdrQW5JG0EKag4SAgAGBAAAAAAAAQMFAAAAAAEDAAsgAEGbHkEAEBJCgICAgOAADwsgBEF1SQ0GIAGnIgAgACgCAEEBajYCAAwGCyAAQSEQhgEhAgwECyAAQQQQhgEhAgwDCyAAIABBBRCGASICQTAgAacpAgRC\u002F\u002F\u002F\u002F\u002FweDQQAQFRoMAgsgAEEGEIYBIQIMAQsgAEEHEIYBIQILQoCAgIDgACEDIAJCgICAgHCDQoCAgIDgAFIEfiAEQXVPBEAgAaciBCAEKAIAQQFqNgIACyAAIAIgARC9ASACBUKAgICA4AALDwsgAQsyAQF\u002FAkAgAUIgiKdBdUkNACABpyICIAIoAgAiAkEBazYCACACQQFKDQAgACABEJcFCwsLACAAQeweQQAQEgujBAELfyAAKAIAIQUjAEEQayIIIAI2AgxBfyEJAkADQAJAIAggAiIDQQRqIgI2AgwgAygCACIHQX9GDQAgACgCBCEKA0AgASIEIApODQMgBCAEIAVqIgwtAAAiBkECdEHgrgFqIg0tAABqIgEgCkoNAyAGQcYBRgRAIAwoAAEhCQwBCwsgBiAHRwRAIAdBGHYgBkYgBiAHQRB2Qf8BcUZyIAYgB0H\u002FAXFGckUgBiAHQQh2Qf8BcUdxIAZFIAdBgAJJcnINAyAAIAY2AhALIARBAWohBAJAAkACQAJAAkACQAJAAkAgDS0AA0EFaw4YAAkACQkBCQkBCQkBAQECAgICBAUGBwkDCQsgBCAFai0AACEEIAggA0EIaiICNgIMIAMoAgQiA0F\u002FRgRAIAAgBDYCFAwJCyADIARGDQgMCQsgBCAFai8AACEEIAggA0EIaiICNgIMIAMoAgQiA0F\u002FRgRAIAAgBDYCFAwICyADIARGDQcMCAsgACAEIAVqKAAANgIYDAYLIAAgBCAFaiIDKAAANgIYIAAgAy8ABDYCHAwFCyAAIAQgBWooAAA2AiAMBAsgACAEIAVqIgMoAAA2AiAgACADLQAENgIcDAMLIAAgBCAFaiIDKAAANgIgIAAgAy8ABDYCHAwCCyAAIAQgBWoiAygAADYCICAAIAMoAAQ2AhggACADLQAINgIcDAELCyAAIAk2AgwgACABNgIIQQEhCwsgCwskAQF\u002FIAAoAhAiAkEQaiABIAIoAgARAwAiAUUEQCAAEHALIAELCwAgACABQQAQjQQLJwEBfyMAQRBrIgIkACACIAE7AQ4gACACQQ5qQQIQchogAkEQaiQAC9QBAgR\u002FAn5BfyECAkACQAJAAkACQAJAAkAgAUIgiKciA0EKag4RAwUFAgUFBQUFBAABAQEFBQYFCyABp0EARw8LIAGnDwsgAacpAgQhByAAIAEQDCAHQv\u002F\u002F\u002F\u002F8Hg0IAUg8LIAGnKAIMIQQgACABEAwgBEH\u002F\u002F\u002F\u002F\u002FB2pBfkkPCyABpywABSEFIAAgARAMIAVBAE4PCyADQQdrQW1NBEAgAUKAgICAwIGA\u002FP8AfEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0IBfUKAgICAgICA+P8AVA8LIAAgARAMQQEhAgsgAgs\u002FAQJ\u002FIwBBEGsiAiQAAn8gASAAKAIQRwRAIAIgATYCACAAQcyQASACEBNBfwwBCyAAEA8LIQMgAkEQaiQAIAMLCwAgACABQQEQ6QULGQAgAEEAEFAaIABCgICAgPD\u002F\u002F\u002F\u002F\u002FADcCBAvDCgIFfxF+IwBB4ABrIgUkACAEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002Fz+DIQwgAiAEhUKAgICAgICAgIB\u002FgyEKIAJC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP4MiDUIgiCEOIARCMIinQf\u002F\u002FAXEhBwJAAkAgAkIwiKdB\u002F\u002F8BcSIJQf\u002F\u002FAWtBgoB+TwRAIAdB\u002F\u002F8Ba0GBgH5LDQELIAFQIAJC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAIMiC0KAgICAgIDA\u002F\u002F8AVCALQoCAgICAgMD\u002F\u002FwBRG0UEQCACQoCAgICAgCCEIQoMAgsgA1AgBEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8AgyICQoCAgICAgMD\u002F\u002FwBUIAJCgICAgICAwP\u002F\u002FAFEbRQRAIARCgICAgICAIIQhCiADIQEMAgsgASALQoCAgICAgMD\u002F\u002FwCFhFAEQCACIAOEUARAQoCAgICAgOD\u002F\u002FwAhCkIAIQEMAwsgCkKAgICAgIDA\u002F\u002F8AhCEKQgAhAQwCCyADIAJCgICAgICAwP\u002F\u002FAIWEUARAIAEgC4QhGUIAIQEgGVAEQEKAgICAgIDg\u002F\u002F8AIQoMAwsgCkKAgICAgIDA\u002F\u002F8AhCEKDAILIAEgC4RQBEBCACEBDAILIAIgA4RQBEBCACEBDAILIAtC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP1gEQCAFQdAAaiABIA0gASANIA1QIgYbeSAGQQZ0rXynIgZBD2sQYkEQIAZrIQYgBSkDWCINQiCIIQ4gBSkDUCEBCyACQv\u002F\u002F\u002F\u002F\u002F\u002F\u002Fz9WDQAgBUFAayADIAwgAyAMIAxQIggbeSAIQQZ0rXynIghBD2sQYiAGIAhrQRBqIQYgBSkDSCEMIAUpA0AhAwsgA0IPhiILQoCA\u002Fv8PgyICIAFCIIgiBH4iECALQiCIIhMgAUL\u002F\u002F\u002F\u002F\u002FD4MiAX58Ig9CIIYiESABIAJ+fCILIBFUrSACIA1C\u002F\u002F\u002F\u002F\u002Fw+DIg1+IhUgBCATfnwiESAMQg+GIhIgA0IxiIRC\u002F\u002F\u002F\u002F\u002Fw+DIgMgAX58IhQgDyAQVK1CIIYgD0IgiIR8Ig8gAiAOQoCABIQiDH4iFiANIBN+fCIOIBJCIIhCgICAgAiEIgIgAX58IhAgAyAEfnwiEkIghnwiF3whASAHIAlqIAZqQf\u002F\u002FAGshBgJAIAIgBH4iGCAMIBN+fCIEIBhUrSAEIAQgAyANfnwiBFatfCACIAx+fCAEIAQgESAVVK0gESAUVq18fCIEVq18IAMgDH4iAyACIA1+fCICIANUrUIghiACQiCIhHwgBCACQiCGfCICIARUrXwgAiACIBAgElatIA4gFlStIA4gEFatfHxCIIYgEkIgiIR8IgJWrXwgAiACIA8gFFStIA8gF1atfHwiAlatfCIEQoCAgICAgMAAg1BFBEAgBkEBaiEGDAELIAtCP4ghGiAEQgGGIAJCP4iEIQQgAkIBhiABQj+IhCECIAtCAYYhCyAaIAFCAYaEIQELIAZB\u002F\u002F8BTgRAIApCgICAgICAwP\u002F\u002FAIQhCkIAIQEMAQsCfiAGQQBMBEBBASAGayIHQf8ATQRAIAVBMGogCyABIAZB\u002FwBqIgYQYiAFQSBqIAIgBCAGEGIgBUEQaiALIAEgBxCNAiAFIAIgBCAHEI0CIAUpAzAgBSkDOIRCAFKtIAUpAyAgBSkDEISEIQsgBSkDKCAFKQMYhCEBIAUpAwAhAiAFKQMIDAILQgAhAQwCCyAEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002Fz+DIAatQjCGhAsgCoQhCiALUCABQgBZIAFCgICAgICAgICAf1EbRQRAIAogAkIBfCIBUK18IQoMAQsgCyABQoCAgICAgICAgH+FhFBFBEAgAiEBDAELIAogAiACQgGDfCIBIAJUrXwhCgsgACABNwMAIAAgCjcDCCAFQeAAaiQACykBAX8gAgRAIAAhAwNAIAMgAToAACADQQFqIQMgAkEBayICDQALCyAACwwAIAAoAkBBfxDRAwtqAQJ\u002FAkAgACgC2AIiA0UNACAAKALgAiIEIAAoAtwCTg0AIAAoAugCIAFLDQAgACgC5AIgAkYNACADIARBA3RqIgMgAjYCBCADIAE2AgAgACABNgLoAiAAIARBAWo2AuACIAAgAjYC5AILCzUAIAAgAkEwIAJBABARIgJCgICAgHCDQoCAgIDgAFEEQCABQgA3AwBBfw8LIAAgASACEKEBC3kCAn8BfiABQiCIpyIDIAGnIgJBAEhyRQRAIAJBgICAgHhyDwsgA0F4RgRAIAAgACgCECACEMYCEBYPCyAAIAEQiQQiAUKAgICAcIMiBEKAgICA4ABRBEBBAA8LIARCgICAgIB\u002FUQRAIAAgARCIAg8LIAAgAacQkQQLGQAgAQRAIAAgAUEQa61CgICAgJB\u002FhBAMCwupAQEEfyAAQQA2AgQgAVAEQCAAQYCAgIB4NgIIIABBABBQGkEADwsCQCABQv\u002F\u002F\u002F\u002F8PWARAIABBARBQDQEgACgCECABIAGnZyICrYY+AgAgAEEgIAJrNgIIQQAPCyAAQQIQUA0AIAAoAhAiAyABpyIEIAFCIIinIgVnIgJ0NgIAIAMgBSACdCAEQQF2IAJBf3N2cjYCBCAAQcAAIAJrNgIIQQAPCyAAECpBIAsQACAAIAAoAigpAwhBARBHCxQBAn4gACABECUhAyAAIAEQDCADC0sBAn8gAUKAgICAcFoEfyABpyIDLwEGIgJBDUYEQEEBDwsgAkEsRgRAIAMoAiAtABAPCyAAKAIQKAJEIAJBGGxqKAIQQQBHBUEACwsjAQF+IAAgASACQoCAgIAwIAMgBEECENIBIQUgACABEAwgBQuDAgIDfwF+QoCAgIDgACEEIAAoAhQEfkKAgICA4AAFIAAoAgQhASAAKAIIIgJFBEAgACgCACgCECICQRBqIAEgAigCBBEAACAAQQA2AgQgACgCAEEvECkPCyAAKAIMIAJKBEAgACgCACgCECIDQRBqIAEgAiAAKAIQIgF0IAFrQRFqIAMoAggRAQAiAUUEQCAAKAIEIQELIAAgATYCBAsgASAAKAIQIgIEfyACBSABIAAoAghqQQA6ABAgACgCEAtBH3StIAEpAgRC\u002F\u002F\u002F\u002F\u002F3eDhCIENwIEIAEgBEKAgICAeIMgADUCCEL\u002F\u002F\u002F\u002F\u002FB4OENwIEIABBADYCBCABrUKAgICAkH+ECwsPACAAKAJAQYACaiABEBsLEwAgACABIAIgAyABQYCAARDQAQsNACAAIAEgAkEGEMgCCx8BAX8gACgCJCIBIAEoAgBBAWo2AgAgACABQQIQ5wULZwECfwJ\u002FIAAoAggiAiAAKAIMTgRAQX8gACACQQFqIAEQxAINARoLIAAgACgCCCIDQQFqNgIIIAAoAgRBEGohAgJAIAAoAhAEQCACIANBAXRqIAE7AQAMAQsgAiADaiABOgAAC0EACwt6AQN\u002FAkACQCAAIgFBA3FFDQAgAS0AAEUEQEEADwsDQCABQQFqIgFBA3FFDQEgAS0AAA0ACwwBCwNAIAEiAkEEaiEBIAIoAgAiA0F\u002FcyADQYGChAhrcUGAgYKEeHFFDQALA0AgAiIBQQFqIQIgAS0AAA0ACwsgASAAawsNACAAIAEgAkEAEJkDCywBAX8jAEEQayIDJAAgAyACNgIMIABB3ABqQYABIAEgAhDJAhogA0EQaiQAC+gDAQl\u002FIwBBIGsiBSQAIAEgAiABKAIMIAIoAgxJIgYbIgcoAgQgAiABIAYbIggoAgRzIQoCQAJAIAcoAgwiAkUEQAJAIAgoAggiAUH\u002F\u002F\u002F\u002F\u002FB0cEQCAHKAIIIgJB\u002F\u002F\u002F\u002F\u002FwdHDQELIAAQKkEAIQIMAwsgAUH+\u002F\u002F\u002F\u002FB0cgAkH+\u002F\u002F\u002F\u002FB0dxRQRAAkAgAUH+\u002F\u002F\u002F\u002FB0YEQCACQYCAgIB4Rg0BDAQLIAFBgICAgHhHIAJB\u002Fv\u002F\u002F\u002FwdHcg0DCyAAECpBASECDAMLIAAgChCAAUEAIQIMAgsgCCgCDCILIQkgAiEGIARBB3FBBkYEQCACIANBIWpBBXYiASABIAJKGyEGIAsgASABIAtKGyEJCwJ\u002FAkAgACAIRg0AIAAgB0YNACAADAELIAAoAgAhASAFQgA3AhggBUKAgICAgICAgIB\u002FNwIQIAUgATYCDCAAIQwgBUEMagshASAHKAIQIQAgCCgCECENAn8gASAGIAlqEFAEQCABECpBIAwBCyABKAIQIA0gC0ECdGogCUECdGsgCSAAIAJBAnRqIAZBAnRrIAYQ8AEgASAKNgIEIAEgBygCCCAIKAIIajYCCCABIAMgBBCbAgshAiABIAVBDGoiAEcNASAMIAAQvwQMAQsgACAKEH9BACECCyAFQSBqJAAgAgsKACAAIAFBARBHCygBAX8gAkIgiKdBdU8EQCACpyIDIAMoAgBBAWo2AgALIAAgASACEG0LlQUCA38BfgJAAkACQAJAAkACQANAIAIoAhAiBEEwaiEFIAQgBCgCGCADcUF\u002Fc0ECdGooAgAhBANAIARFDQQgAyAFIARBAWtBA3QiBmoiBCgCBEcEQCAEKAIAQf\u002F\u002F\u002Fx9xIQQMAQsLIAIoAhQgBmohBSAEKAIAIQYgAUUNASABQoCAgIAwNwMYIAFCgICAgDA3AxAgAUKAgICAMDcDCCABIAZBGnZBB3EiBjYCAAJAAkACQAJAIAQoAgBBHnZBAWsOAwABAgMLIAEgBkEQcjYCACAFKAIAIgAEQCAAIAAoAgBBAWo2AgAgASAArUKAgICAcIQ3AxALIAUoAgQiAEUNCSAAIAAoAgBBAWo2AgAgASAArUKAgICAcIQ3AxhBAQ8LIAUoAgAoAhApAwAiB0KAgICAcINCgICAgMAAUQ0EIAdCIIinQXVPBEAgB6ciACAAKAIAQQFqNgIACyABIAc3AwgMCAsgACACIAMgBSAEEMECRQ0BDAYLCyAFKQMAIgdCIIinQXVPBEAgB6ciACAAKAIAQQFqNgIACyABIAc3AwgMBQtBASEEIAZBgICAgHxxQYCAgIB4Rw0CIAUoAgAoAhA1AgRCIIZCgICAgMAAUg0CCyAAIAMQ0QEMAgtBACEEIAItAAUiBUEEcUUNACAFQQhxBEAgA0EATg0BIANB\u002F\u002F\u002F\u002F\u002FwdxIgMgAigCKCIFSSEEIAFFIAMgBU9yDQEgAUKAgICAMDcDGCABQoCAgIAwNwMQIAFBBzYCACABIAAgAq1CgICAgHCEIAMQpgE3AwgMAwsgACgCECgCRCACLwEGQRhsaigCFCIFRQ0AIAUoAgAiBUUNACAAIAEgAq1CgICAgHCEIAMgBREXACEECyAEDwtBfw8LQQELDQAgACABIAJBARDIAgsmAQF\u002FAkAgACgCEEGDf0cNACAAKAIgIAFHDQAgACgCJEUhAgsgAgsdACAAIAEpAxAQDCAAIAEpAxgQDCAAIAEpAwgQDAumAQEDfyAAKAIQIgMoAuABIAGnQQAgAUL\u002F\u002F\u002F\u002F\u002Fb1YbIgRBgYDc8XlsQf\u002F\u002Fo44GayIFQSAgAygC1AFrdkECdGohAwJAAkADQCADKAIAIgMEQAJAIAMoAhQgBUcNACADKAIsIARHDQAgAygCIEUNAwsgA0EoaiEDDAELCyAAIARBAhDyBCIDDQFCgICAgOAADwsgAyADKAIAQQFqNgIACyAAIAMgAhDnBQsqAQJ\u002FIwBBEGsiBCQAIAQgAzYCDCAAIAEgAiADEMkCIQUgBEEQaiQAIAULSAAgACABRwRAIAAgASgCDBBQBEAgABAqQSAPCyAAIAEoAgQ2AgQgACABKAIINgIIIAAoAhAgASgCECABKAIMQQJ0EB4aC0EACywAIAFCgICAgGCDQoCAgIAgUQRAIABB6z9BABASQoCAgIDgAA8LIAAgARAlC6sCAQR\u002FAkAgAiADTw0AIAMgAmshBSABQRBqIQQgAS0AB0GAAXEEQEEAIQMgBUEAIAVBAEobIQYgBCACQQF0aiEBQQAhAgNAIAIgBkZFBEAgAyABIAJBAXRqLwEAciEDIAJBAWohAgwBCwsCQCAAKAIIIAVqIgIgACgCDCIHSgRAQX8hBCAAIAIgAxDEAkUNAQwDCyAAKAIQIANBgAJIcg0AQX8hBCAAIAcQ4AMNAgsCQCAAKAIQRQRAQQAhAgNAIAIgBkYNAiAAKAIEIAAoAgggAmpqIAEgAkEBdGotAAA6ABAgAkEBaiECDAALAAsgACgCBCAAKAIIQQF0akEQaiABIAVBAXQQHhoLIAAgACgCCCAFajYCCEEADwsgACACIARqIAUQiwIhBAsgBAuJAQECfyABKAJ8IgRB\u002F\u002F8DTgRAIABBlyhBABA6QX8PC0F\u002FIQMgACABQfQAakEQIAFB+ABqIARBAWoQZAR\u002FQX8FIAEgASgCfCIDQQFqNgJ8IAEoAnQgA0EEdGoiA0IANwIAIANCADcCCCADIAAgAhAWNgIAIAMgAygCDEGAfnI2AgwgASgCfEEBawsLRwEBfyABQiCIp0F1TwRAIAGnIgMgAygCAEEBajYCAAsgAkIgiKdBdU8EQCACpyIDIAMoAgBBAWo2AgALIAAgASACQQEQtAEL+wQBAn8CQAJAIAFCgICAgHBUIAJC\u002F\u002F\u002F\u002F\u002Fw9Wcg0AIAKnIQMCQAJAAkACQAJAAkACQAJAAkACQAJAIAGnIgQvAQZBAmsOHgALCwsLCwALCwsLCwsLCwsLCwsCAQIDBAUGBwgJCgsLIAQoAiggA00NCiAEKAIkIANBA3RqKQMAIgFCIIinQXVJDQsgAaciACAAKAIAQQFqNgIAIAEPCyAEKAIoIANNDQkgBCgCJCADajAAAEL\u002F\u002F\u002F\u002F\u002FD4MPCyAEKAIoIANNDQggBCgCJCADajEAAA8LIAQoAiggA00NByAEKAIkIANBAXRqMgEAQv\u002F\u002F\u002F\u002F8Pgw8LIAQoAiggA00NBiAEKAIkIANBAXRqMwEADwsgBCgCKCADTQ0FIAQoAiQgA0ECdGo1AgAPCyAEKAIoIANNDQQgBCgCJCADQQJ0aigCACIAQQBOBEAgAK0PC0KAgICAwH4gALi9IgFCgICAgMCBgPz\u002FAH0gAUKAgICAgICA+P8AVhsPCyAEKAIoIANNDQMgACAEKAIkIANBA3RqKQMAEL8CDwsgBCgCKCADTQ0CIAAgBCgCJCADQQN0aikDABCIBA8LIAQoAiggA00NAUKAgICAwH4gBCgCJCADQQJ0aioCALu9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsPCyAEKAIoIANNDQBCgICAgMB+IAQoAiQgA0EDdGopAwAiAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGw8LIAAgAhAwIQMgACACEAwgA0UEQEKAgICA4AAPCyAAIAEgAyABQQAQESEBIAAgAxAQCyABC4IDAgR\u002FAn4CQCAAKQNwIgVQRSAFIAApA3ggACgCBCIBIAAoAiwiAmusfCIGV3FFBEAjAEEQayICJABBfyEBAkACfyAAIAAoAkgiA0EBayADcjYCSCAAKAIUIAAoAhxHBEAgAEEAQQAgACgCJBEBABoLIABBADYCHCAAQgA3AxAgACgCACIDQQRxBEAgACADQSByNgIAQX8MAQsgACAAKAIsIAAoAjBqIgQ2AgggACAENgIEIANBG3RBH3ULDQAgACACQQ9qQQEgACgCIBEBAEEBRw0AIAItAA8hAQsgAkEQaiQAIAEiA0EATg0BIAAoAgQhASAAKAIsIQILIABCfzcDcCAAIAE2AmggACAGIAIgAWusfDcDeEF\u002FDwsgBkIBfCEGIAAoAgQhASAAKAIIIQICQCAAKQNwIgVQDQAgBSAGfSIFIAIgAWusWQ0AIAEgBadqIQILIAAgAjYCaCAAIAYgACgCLCIAIAFrrHw3A3ggACABTwRAIAFBAWsgAzoAAAsgAwtPAQF\u002FAn9BACAAKAIMIAFGDQAaIAAoAgAiAigCACAAKAIQIAFBAnQgAigCBBEBACECIAEEQEF\u002FIAJFDQEaCyAAIAE2AgwgACACNgIQQQALC9EBAQZ\u002FIABBAWohBQJAAkAgAC0AACIDwCIHQQBOBEAgBSEBDAELQX8hBCAHQUBrQf8BcSIDQT1LDQEgA0ECdEGU9gFqKAIAIgYgAU4NASAGQQFrIQggACAGakEBaiEBIAcgBkHz9QFqLQAAcSEDQQAhAANAIAAgBkcEQCAFLAAAIgRBv39KBEBBfw8FIARBP3EgA0EGdHIhAyAAQQFqIQAgBUEBaiEFDAILAAsLQX8hBCADIAhBAnRBgPYBaigCAEkNAQsgAiABNgIAIAMhBAsgBAsLACAAIAFBABDpBQsJACAAQQEQrQELugEBAn8CQAJAIAJC\u002F\u002F\u002F\u002F\u002FwdYBEAgACABIAKnQYCAgIB4chBuIgRBAEwNASAAIAEgAhBOIgJCgICAgHCDQoCAgIDgAFINAkF\u002FIQQMAgsgACACEIsDIgVFBEBBfyEEDAELAkAgACABIAUQbiIEQQBMBEBCgICAgDAhAgwBCyAAIAEgBSABQQAQESICQoCAgIBwg0KAgICA4ABSDQBBfyEECyAAIAUQEAwBC0KAgICAMCECCyADIAI3AwAgBAsbAQF\u002FIAAgARA1BH9BAAUgAEH7OUEAEBJBfwsLYwEBfyACQiCIp0F1TwRAIAKnIgUgBSgCAEEBajYCAAsCQCAAIAEgAhDTBSIFDQACQCABKAIAIgBBAEgEQCAAIARqIgBBACAAQQBKGyEDDAELIAAgA0wNAQsgASADNgIACyAFCxgAIAAtAABBIHFFBEAgASACIAAQlwQaCwsPACAAKAJAQYACaiABEA4LrgIAAkACQAJAAkAgAkEDTARAAkACQAJAAkACQAJAAkACQAJAIAFB2ABrDgkAAQIDBAUGBwgKCyAAIAJBO2tB\u002FwFxEA4PCyAAIAJBN2tB\u002FwFxEA4PCyAAIAJBM2tB\u002FwFxEA4PCyAAIAJBL2tB\u002FwFxEA4PCyAAIAJBK2tB\u002FwFxEA4PCyAAIAJBJ2tB\u002FwFxEA4PCyAAIAJBI2tB\u002FwFxEA4PCyAAIAJBH2tB\u002FwFxEA4PCyAAIAJBG2tB\u002FwFxEA4PCyACQf8BSw0BAkACQAJAIAFB2ABrDgMAAQIECyAAQcIBEA4MBQsgAEHDARAODAQLIABBxAEQDgwDCyABQSJGDQELIAAgAUH\u002FAXEQDiAAIAJB\u002F\u002F8DcRAmDwsgACACQRJrQf8BcRAODwsgACACQf8BcRAOCzgBAX8CQAJAIAFCgICAgHBUDQAgAaciAy8BBiACRw0AIAMoAiAiAw0BCyAAIAIQigNBACEDCyADC0EBAX8gAQRAA0AgAiADRkUEQCAAIAEgA0EDdGooAgQQECADQQFqIQMMAQsLIAAoAhAiAEEQaiABIAAoAgQRAAALCywBAX8gACgCECICQRBqIAEgAigCABEDACICBEAgAkEAIAEQLA8LIAAQcCACC20BAX8jAEGAAmsiBSQAIARBgMAEcSACIANMckUEQCAFIAFB\u002FwFxIAIgA2siA0GAAiADQYACSSIBGxAsGiABRQRAA0AgACAFQYACEFcgA0GAAmsiA0H\u002FAUsNAAsLIAAgBSADEFcLIAVBgAJqJAALvgECAn4BfwJAAkAgAUKAgICAcINCgICAgDBRBEAgACgCKCACQQN0aikDACIDQiCIp0F0Sw0BDAILIAAgAUE8IAFBABARIgNCgICAgHCDQoCAgIDgAFEEQCADDwsgA0L\u002F\u002F\u002F\u002F\u002Fb1YNASAAIAMQDCAAIAEQ\u002FAIiBUUEQEKAgICA4AAPCyAFKAIoIAJBA3RqKQMAIgNCIIinQXVJDQELIAOnIgUgBSgCAEEBajYCAAsgACADIAIQRyEEIAAgAxAMIAQLDAAgAEHZ6gBBABASCw0AIAAgASABED0Q6gELdQEBfiAAIAEgBH4gAiADfnwgA0IgiCICIAFCIIgiBH58IANC\u002F\u002F\u002F\u002F\u002Fw+DIgMgAUL\u002F\u002F\u002F\u002F\u002FD4MiAX4iBUIgiCADIAR+fCIDQiCIfCABIAJ+IANC\u002F\u002F\u002F\u002F\u002Fw+DfCIBQiCIfDcDCCAAIAVC\u002F\u002F\u002F\u002F\u002Fw+DIAFCIIaENwMAC1ABAX4CQCADQcAAcQRAIAEgA0FAaq2GIQJCACEBDAELIANFDQAgAiADrSIEhiABQcAAIANrrYiEIQIgASAEhiEBCyAAIAE3AwAgACACNwMIC2QAAkACQCABQQBIDQAgACgCrAIgAUwNACAAKAKkAiABQRRsaiIAIAAoAgAgAmoiADYCACAAQQBIDQEgAA8LQdwXQajsAEHzpwFBr8MAEAAAC0HphQFBqOwAQfanAUGvwwAQAAALcAECfyAEIAMoAgBKBH8jAEEQayIFJAAgACABKAIAIAQgAygCAEEDbEECbSIAIAAgBEgbIgAgAmwgBUEMahCnASIEBH8gAyAFKAIMIAJuIABqNgIAIAEgBDYCAEEABUF\u002FCyEGIAVBEGokACAGBUEACwsLACAAIAFBARDaBQtjAQF\u002FIAJCIIinQXVPBEAgAqciBiAGKAIAQQFqNgIACwJAIAAgASACENIFIgANACABKQMAIgJCAFMEQCABIAIgBXwiAjcDAAsgAiADWQRAIAQiAyACWQ0BCyABIAM3AwALIAALYAAgACABIAJCgICAgAh8Qv\u002F\u002F\u002F\u002F8PWAR+IAJC\u002F\u002F\u002F\u002F\u002Fw+DBUKAgICAwH4gArm9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLIANBh4ABEJQBC0MBA38CQCACRQ0AA0AgAC0AACIEIAEtAAAiBUYEQCABQQFqIQEgAEEBaiEAIAJBAWsiAg0BDAILCyAEIAVrIQMLIAMLaQECfwJ\u002FIAAoAgAiA0ECaiIEIAAoAgRKBEBBfyAAIAQQ0QINARogACgCACEDCyAAIANBAWo2AgAgACgCCCIEIANBAnRqIAE2AgAgACAAKAIAIgBBAWo2AgAgBCAAQQJ0aiACNgIAQQALC60QAgx\u002FAX4jAEEQayIKJAACQAJAIAFC\u002F\u002F\u002F\u002F\u002F29YBEAgABAiDAELIAZBgDBxIg5FIAYgBkEIdiIQcSAQQX9zckEHcSIRQQdGcSESIAZBgMAAcSEMIAJB\u002F\u002F\u002F\u002F\u002FwdxIQ0gAachCQJAAkACQAJAAkADQCAJKAIQIgdBMGohCCAHIAcoAhggAnFBf3NBAnRqKAIAIQcCQANAIAdFDQEgAiAIIAdBAWtBA3QiC2oiBygCBEcEQCAHKAIAQf\u002F\u002F\u002Fx9xIQcMAQsLIAkoAhQgC2ohCCAKIAc2AgwgDEUgBygCACILQYCAgIACcUVyRQRAIANCIIinQXVPBEAgA6ciByAHKAIAQQFqNgIACyAAIApBCGogA0EAEL4CDQgCfiAKKAIIIgdBAE4EQCAHrQwBC0KAgICAwH4gB7i9IgNCgICAgMCBgPz\u002FAH0gA0KAgICAgICA+P8AVhsLIQMgCSgCECIHQTBqIQggByAHKAIYIAJxQX9zQQJ0aigCACEHAkADQCAHBEAgCCAHQQFrQQN0IgtqIgcoAgQgAkYNAiAHKAIAQf\u002F\u002F\u002Fx9xIQcMAQsLQdj1AEGo7ABB58YAQasLEAAACyAJKAIUIAtqIQggCiAHNgIMIAcoAgAhCwsgC0EadiIPIAYQjwNFDQYgD0EwcSIPQTBGBEAgACAJIAIgCCAHEMECRQ0CDAgLIAZBgPQAcUUNBSAOBEAgBKciDUEAIAAgBBA1GyECIAWnIg5BACAAIAUQNRshDAJAIAtBgICAgHxxQYCAgIAERwRAQX8hByAAIAkgCkEMahDTAQ0LAkAgCigCDCgCAEGAgICAfHFBgICAgHhGBEAgACgCECAIKAIAEOUBDAELIAAgCCkDABAMCyAKKAIMIgcgBygCAEH\u002F\u002F\u002F+\u002FAXFBgICAgARyNgIAIAhCADcDAAwBCyALQYCAgCBxDQAgBkGAEHEEQCACIAgoAgBHDQkLIAZBgCBxRQ0AIAwgCCgCBEcNCAsgBkGAEHEEQCAIKAIAIgcEQCAAIAetQoCAgIBwhBAMCyACRSAEQiCIp0F1SXJFBEAgDSANKAIAQQFqNgIACyAIIAI2AgALIAZBgCBxRQ0GIAgoAgQiAgRAIAAgAq1CgICAgHCEEAwLIAxFIAVCIIinQXVJckUEQCAOIA4oAgBBAWo2AgALIAggDDYCBAwGCyAPQSBGDQQgD0EQRgRAQX8hByAAIAkgCkEMahDTAQ0JIAgoAgAiAgRAIAAgAq1CgICAgHCEEAwLIAgoAgQiAgRAIAAgAq1CgICAgHCEEAwLIAooAgwiAiACKAIAQf\u002F\u002F\u002F78DcTYCACAIQoCAgIAwNwMAIAooAgwoAgAhCwwFCyAMRSALQYCAgOAAcXINBEEBIQcgACADIAgpAwAQTUUNBgwICyAKQQA2AgwgCS0ABUEIcUUNAiAJLwEGIgdBAkcNASACQQBODQIgDSAJKAIoTw0CIBJFBEAgACAJEI4DRQ0BDAcLC0EBIQcgDEUNBiAJKAIkIA1BA3RqIQIgA0IgiKdBdU8EQCADpyIGIAYoAgBBAWo2AgALIAAgAiADEB0MBgsgB0EVa0H\u002F\u002FwNxQQpLDQACQAJAIAJBAE4EQCAAIAIQ3wUiAUKAgICAcIMiE0KAgICAMFENA0F\u002FIQcgE0KAgICA4ABRDQggACABENkFIgJBAEgEQCAAIAEQDAwJCyACRQRAIAAgARAMIAAgBkGaDRB8IQcMCQtBACEHAkBBByABQiCIpyICIAJBB2tBbkkbIgJBdkcEQCACQQdHBEAgAg0CIAFCgICAgAiDQh+IpyEHDAILIAFCgICAgMCBgPz\u002FAHxCP4inIQcMAQsgAaciAigCCEUNACACKAIMQYCAgIB4RyEHCyAAIAEQDCAHRQ0BIAAgBkG7DRB8IQcMCAsgDSAJKAIoSQ0BCyAAIAZB2Q0QfCEHDAYLIA5FIBFBB0ZxRQRAIAAgBkHBJhB8IQcMBgtBASEHIAxFDQUgA0IgiKdBdU8EQCADpyICIAIoAgBBAWo2AgALIAAgASANrSADIAYQzwEhBwwFCyAAIAkgAiADIAQgBSAGEN0FIQcMBAsgC0GAgICAfHFBgICAgHhGBEACQCAMRQ0AIAgoAgAoAhAhAiAJLwEGQQtGBEAgACADIAIpAwAQTUUNBAwBCyADQiCIp0F1TwRAIAOnIgcgBygCAEEBajYCAAsgACACIAMQHQsgBkGCBHFBgARHDQEgCS8BBkELRgRAIAAgBkGc0QAQfCEHDAULQX8hByAAIAkgCkEMahDTAQ0EIAgoAgAiBygCECkDACIBQiCIp0F1TwRAIAGnIgIgAigCAEEBajYCACAIKAIAIQcLIAAoAhAgBxDlASAIIAE3AwAgCigCDCICIAIoAgBB\u002F\u002F\u002F\u002FvwNxNgIADAELIAtBgICAgAJxBEBBASECIAwEQCADQiCIp0F1TwRAIAOnIgIgAigCAEEBajYCAAsgACAJIAMgBhDeBSECCyAGQYIEcUGABEYEQCAKIAkoAhAiBkEwajYCDEF\u002FIQcgACAJIApBDGogBigCMEEadkE9cRCNAw0FCyACIQcMBAsgDARAIAAgCCkDABAMIANCIIinQXVPBEAgA6ciAiACKAIAQQFqNgIACyAIIAM3AwALIAZBgARxRQ0AQX8hByAAIAkgCkEMaiAKKAIMKAIAQRp2QT1xIAZBAnFyEI0DDQMLQX9BASAAIAkgCkEMaiAQQQVxIgBBf3MgCigCDCgCAEEadnEgACAGcXIQjQMbIQcMAgsgACAGQe\u002FYABB8IQcMAQtBfyEHCyAKQRBqJAAgBwtpAQN\u002FIwBBEGsiAyQAAkACQCABQoCAgIBwVA0AIAGnIgQvAQYhBSACBEAgBUEgRw0BDAILIAVBFWtB\u002F\u002F8DcUELSQ0BCyADQbgRQa4OIAIbNgIAIABB8iogAxASQQAhBAsgA0EQaiQAIAQLRgIBfwF+IAJC\u002F\u002F\u002F\u002F\u002FwdYBEAgACABIAIQTg8LIAAgAhCLAyIDRQRAQoCAgIDgAA8LIAAgASADIAFBABARIQQgACADEBAgBAv8AQICfwF8IwBBEGsiBCQAAkAgAkIgiKciA0ECTQRAIAEgAqe3OQMAQQAhAwwBCyADQQdrQW1NBEAgASACQoCAgIDAgYD8\u002FwB8NwMAQQAhAwwBCwJ\u002FIAAgAhCWASICQoCAgIBwg0KAgICA4ABRBEBEAAAAAAAA+H8hBUF\u002FDAELAnwCQAJAQQcgAkIgiKciAyADQQdrQW5JGyIDQXZHBEAgA0EHRg0CIAMNASACp7cMAwsgAqdBBGogBEEIahCxBCAAIAIQDCAEKwMIIQVBAAwDCxABAAsgAkKAgICAwIGA\u002FP8AfL8LIQVBAAshAyABIAU5AwALIARBEGokACADC90BAQN\u002FAkAgAUKAgICAcFoEQCABpyEDA0ACQCADLQAFQQRxRQ0AIAAoAhAoAkQgAy8BBkEYbGooAhQiBEUNACAEKAIQIgRFDQAgAyADKAIAQQFqNgIAIAAgA61CgICAgHCEIgEgAiAEERMAIQUgACABEAwgBQ8LIAMgAygCAEEBajYCACAAQQAgAyACEEMhBCAAIAOtQoCAgIBwhBAMIAQNAgJAIAMvAQZBFWtB\u002F\u002F8DcUEKSw0AIAAgAhCTAyIERQ0AIARBH3UPCyADKAIQKAIsIgMNAAsLQQAhBAsgBAvNCQIEfwV+IwBB8ABrIgYkACAEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDIQkCQAJAIAFQIgUgAkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8AgyIKQoCAgICAgMD\u002F\u002FwB9QoCAgICAgMCAgH9UIApQG0UEQCADQgBSIAlCgICAgICAwP\u002F\u002FAH0iC0KAgICAgIDAgIB\u002FViALQoCAgICAgMCAgH9RGw0BCyAFIApCgICAgICAwP\u002F\u002FAFQgCkKAgICAgIDA\u002F\u002F8AURtFBEAgAkKAgICAgIAghCEEIAEhAwwCCyADUCAJQoCAgICAgMD\u002F\u002FwBUIAlCgICAgICAwP\u002F\u002FAFEbRQRAIARCgICAgICAIIQhBAwCCyABIApCgICAgICAwP\u002F\u002FAIWEUARAQoCAgICAgOD\u002F\u002FwAgAiABIAOFIAIgBIVCgICAgICAgICAf4WEUCIFGyEEQgAgASAFGyEDDAILIAMgCUKAgICAgIDA\u002F\u002F8AhYRQDQEgASAKhFAEQCADIAmEQgBSDQIgASADgyEDIAIgBIMhBAwCCyADIAmEUEUNACABIQMgAiEEDAELIAMgASABIANUIAkgClYgCSAKURsiCBshCiAEIAIgCBsiDEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F8\u002FgyEJIAIgBCAIGyILQjCIp0H\u002F\u002FwFxIQcgDEIwiKdB\u002F\u002F8BcSIFRQRAIAZB4ABqIAogCSAKIAkgCVAiBRt5IAVBBnStfKciBUEPaxBiIAYpA2ghCSAGKQNgIQpBECAFayEFCyABIAMgCBshAyALQv\u002F\u002F\u002F\u002F\u002F\u002F\u002Fz+DIQEgBwR+IAEFIAZB0ABqIAMgASADIAEgAVAiBxt5IAdBBnStfKciB0EPaxBiQRAgB2shByAGKQNQIQMgBikDWAtCA4YgA0I9iIRCgICAgICAgASEIQEgCUIDhiAKQj2IhCENIAIgBIUhBAJ+IANCA4YiAiAFIAdGDQAaIAUgB2siB0H\u002FAEsEQEIAIQFCAQwBCyAGQUBrIAIgAUGAASAHaxBiIAZBMGogAiABIAcQjQIgBikDOCEBIAYpAzAgBikDQCAGKQNIhEIAUq2ECyEJIA1CgICAgICAgASEIQsgCkIDhiEKAkAgBEIAUwRAQgAhA0IAIQQgCSAKhSABIAuFhFANAiAKIAl9IQIgCyABfSAJIApWrX0iBEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FA1YNASAGQSBqIAIgBCACIAQgBFAiBxt5IAdBBnStfKdBDGsiBxBiIAUgB2shBSAGKQMoIQQgBikDICECDAELIAkgCnwiAiAJVK0gASALfHwiBEKAgICAgICACINQDQAgCUIBgyAEQj+GIAJCAYiEhCECIAVBAWohBSAEQgGIIQQLIAxCgICAgICAgICAf4MhAyAFQf\u002F\u002FAU4EQCADQoCAgICAgMD\u002F\u002FwCEIQRCACEDDAELQQAhBwJAIAVBAEoEQCAFIQcMAQsgBkEQaiACIAQgBUH\u002FAGoQYiAGIAIgBEEBIAVrEI0CIAYpAwAgBikDECAGKQMYhEIAUq2EIQIgBikDCCEECyAEQj2GIAJCA4iEIQEgBEIDiEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F8\u002FgyAHrUIwhoQgA4QhBAJAAkAgAqdBB3EiBUEERwRAIAQgASABIAVBBEutfCIDVq18IQQMAQsgBCABIAEgAUIBg3wiA1atfCEEDAELIAVFDQELCyAAIAM3AwAgACAENwMIIAZB8ABqJAALLAEBfyAAKAIQIgEtAIgBRQRAIAFBAToAiAEgAEHaC0EAEDogAUEAOgCIAQsLVQEDfyABIAJBBXUiBEsEQCAAIARBAnRqKAIAIQMLIAJBH3EiAgR\u002FIAEgBEEBaiIESwR\u002FIAAgBEECdGooAgAFQQALQQF0IAJBH3N0IAMgAnZyBSADCwtMAQJ\u002FAn8gACgCBCIDIAJqIgQgACgCCEsEf0F\u002FIAAgBBC8AQ0BGiAAKAIEBSADCyAAKAIAaiABIAIQHhogACAAKAIEIAJqNgIEQQALC5AFAQV\u002FIwBBEGsiBCQAIAQgACgCODYCDAJ\u002FIAEhAyAEKAIMIQACQANAIAAiAUEBaiEAAkAgAS0AACICQQlrIgVBF0sNAEEBIAV0IgVBjYCABHENASAFQRJxRQ0AIANFDQEMAgsCQCACQS9HBEAgAkE9Rw0BQaR\u002FQT0gAC0AAEE+RhsMBAsgAC0AACIBQSpHBEBBLyABQS9HDQQaQS8hASADDQMDQAJAAkAgAUEKaw4EBQEBBQALIAFFDQQLIAAtAAEhASAAQQFqIQAMAAsACwNAIAAiAUEBaiEAIAEtAAEiAkENRgRAIAMNBAwBCyACRQ0CIANBACACQQpGGw0DIAJBKkcNACABLQACQS9HDQALIAFBA2ohAAwBCwsgAhCDAwR\u002FAkACQAJAAkACQCACQeUAaw4FAQIEBAADCyAALQAAIgNB7gBGBH9Bt38gAS0AAhDJAUUNBxogAC0AAAUgAwtB7QBHDQMgAS0AAkHwAEcNAyABLQADQe8ARw0DIAEtAARB8gBHDQMgAS0ABUH0AEcNAyABLQAGEMkBDQMgBCABQQZqNgIMQU0MBgsgAC0AAEH4AEcNAiABLQACQfAARw0CIAEtAANB7wBHDQIgAS0ABEHyAEcNAiABLQAFQfQARw0CIAEtAAYQyQENAiAEIAFBBmo2AgxBSwwFCyAALQAAQfUARw0BIAEtAAJB7gBHDQEgAS0AA0HjAEcNASABLQAEQfQARw0BIAEtAAVB6QBHDQEgAS0ABkHvAEcNASABLQAHQe4ARw0BIAEtAAgQyQENAUFFDAQLIAJB7wBHDQAgAC0AAEHmAEcNACABLQACEMkBDQBBWQwDC0GDfwUgAgsMAQtBCgshBiAEQRBqJAAgBgusAgEHfyMAQRBrIgUkAAJAIAAoAkAiAUUEQAwBCwJAIAECfyABKALIASIEIAEoAsQBIgJIBEAgASgCzAEhAyAEDAELIARBAWoiAyACQQNsQQJtIgIgAiADSBsiBkEDdCECIAAoAgAhAwJAIAEoAswBIgcgAUHQAWpGBEAgA0EAIAIgBUEMahCnASIDRQ0DIAMgASgCzAEgASgCyAFBA3QQHhoMAQsgAyAHIAIgBUEMahCnASIDRQ0CCyAFKAIMIQIgASADNgLMASABIAJBA3YgBmo2AsQBIAEoAsgBC0EBajYCyAEgAyAEQQN0aiICIAEoArwBNgIAIAIgASgCwAE2AgQgAEG0ARANIAAgBEH\u002F\u002FwNxEBQgASAENgK8AQwBC0F\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\u002F\u002F\u002F\u002F\u002FB1gEQCAAIAEgAiADQYCAARDPAQ8LIAAgAhCLAyIERQRAIAAgAxAMQX8PCyAAIAEgBCADEDkhBiAAIAQQECAGC10BAn8jAEEQayIDJAACQCABQYCAAXFFBEAgAUGAgAJxRQ0BIAAoAhAoAowBIgFFDQEgAS0AKEEBcUUNAQsgA0EANgIMIABBBCACQQAQjgRBfyEECyADQRBqJAAgBAvfCgIUfwF+IwBBMGsiByQAIAFBADYCACACQQA2AgAgB0EANgIsIAdBADYCKCAEQTBxIQ8gBEEQcSERIAMoAhAiCkEwaiEFAkACQAJAAkADQCAKKAIgIAhKBEACQCAFKAIEIg5FDQBBACARIAUoAgBBgICAgAFxGyAEIAAgDhCRAyIJdkEBcUVyDQACQCAPRSAFKAIAQYCAgIB8cUGAgICAeEdyDQAgAygCFCAIQQN0aigCACgCEDUCBEIghkKAgICAwABSDQAgACAFKAIEENEBQX8hCAwECyAAIAdBJGogDhClAQRAIAxBAWohDAwBCyAJRQRAIAtBAWohCwwBCyANQQFqIQ0LIAVBCGohBSAIQQFqIQgMAQsLQQAhBQJAIAMtAAUiBkEEcUUNACAGQQhxBEAgBEEBcUUNASADKAIoIAxqIQwMAQsgAy8BBiIGQQVGBEAgBEEBcUUNAUEAIQggAykDICIZQoCAgIBwg0KAgICAkH9RBH8gGacoAgRB\u002F\u002F\u002F\u002F\u002FwdxBUEACyAMaiEMDAELIAAoAhAoAkQgBkEYbGooAhQiBkUNACAGKAIEIgZFDQBBfyEIIAAgB0EsaiAHQShqIAOtQoCAgIBwhCAGER8ADQFBACEJA0AgCSAHKAIoTw0BAkAgBCAAIAlBA3QiCiAHKAIsaigCBCIGEJEDdkEBcQRAAkAgD0UEQEEAIQ4MAQsgACAHIAMgBhBDIgZBAEgNAiAGBH8gBygCACEXIAAgBxBGIBdBAnZBAXEFQQALIQ4gBygCLCAKaiAONgIACyAFIBFFIA5BAEdyaiEFCyAJQQFqIQkMAQsLIAAgBygCLCAHKAIoEFsMAQsgAEEBIAsgDGoiDyANaiAFaiISIBJBAUwbQQN0ECQiEEUEQCAAIAcoAiwgBygCKBBbQX8hCAwBCyADKAIQIhVBMGohBUEAIQogDCEGIA8hC0EBIRRBACEIA0AgCCAVKAIgTkUEQAJAIAUoAgQiE0UNAEEAIBEgBSgCAEGAgICAAXEiDRsgBCAAIBMQkQMiCXZBAXFFcg0AIA1BHHYhFgJ\u002FIAAgB0EkaiATEKUBBEAgCkEBaiEOQQAhFCALIQ0gBgwBCyAJRQRAIAohDiALIQ0gBiEKIAZBAWoMAQsgC0EBaiENIAohDiALIQogBgshGCAAIBMQFiELIBAgCkEDdGoiBiAWNgIAIAYgCzYCBCAOIQogGCEGIA0hCwsgBUEIaiEFIAhBAWohCAwBCwsCQCADLQAFIglBBHFFDQACfyAJQQhxBEAgBEEBcUUNAiADKAIoDAELIAMvAQZBBUcEQEEAIQUDQCAHKAIsIQkgBSAHKAIoT0UEQAJAQQAgESAJIAVBA3RqIgMoAgAiDRsgBCAAIAMoAgQiCRCRA3ZBAXFFckUEQCAQIAtBA3RqIgMgDTYCACADIAk2AgQgC0EBaiELDAELIAAgCRAQCyAFQQFqIQUMAQsLIAAoAhAiA0EQaiAJIAMoAgQRAAAMAgsgBEEBcUUNAUEAIAMpAyAiGUKAgICAcINCgICAgJB\u002FUg0AGiAZpygCBEH\u002F\u002F\u002F\u002F\u002FB3ELIQhBACEFIAhBACAIQQBKGyEEA0AgBCAFRg0BIBAgCkEDdGoiA0EBNgIAIAMgBUGAgICAeHI2AgQgBUEBaiEFIApBAWohCgwACwALIAogDEcNASAGIA9HDQIgCyASRw0DIAxFIBRyRQRAIBAgDEEIQTcgABDXAQsgASAQNgIAIAIgEjYCAEEAIQgLIAdBMGokACAIDwtBqBdBqOwAQfU7QfvEABAAAAtB+xZBqOwAQfY7QfvEABAAAAtBxBdBqOwAQfc7QfvEABAAAAtfAgJ\u002FAX4gAqcoAiAiBC0AEQRAIAAQuAJBAA8LIAAgBCkDCCICIAMgAkEAEBEiBkKAgICAcIMiAkKAgICA4ABSBH8gAUKAgICAMCAGIAJCgICAgCBRGzcDACAEBUEACwsbACAAQQAQUBogACABNgIEIABB\u002Fv\u002F\u002F\u002Fwc2AggLGwAgAEEAEFAaIAAgATYCBCAAQYCAgIB4NgIICw4AIAAoAhAgASACEOUFCxYAIAAgASACIAMgBCAFIAApAzAQ\u002FAELDQAgACABIAEQPRCLAgt2AQJ\u002FIAAoAhQEQCAAKAIAIAEQDEF\u002FDwsCQCABQoCAgIBwg0KAgICAkH9RDQAgACgCACABEDQiAUKAgICAcINCgICAgOAAUg0AIAAQ9wJBfw8LIAAgAaciAkEAIAIoAgRB\u002F\u002F\u002F\u002F\u002FwdxEEshAyAAKAIAIAEQDCADC+QBAgN\u002FAn4CQCAAIAApAzBBDxBHIglCgICAgHCDQoCAgIDgAFENACAAIARBA3RBCGoQJCIGRQRAIAAgCRAMDAELIAYgAzsBBiAGIAQ6AAUgBiACOgAEIAYgATYCAEEAIQMgBEEAIARBAEobIQEgBkEIaiEEA0AgASADRwRAIAUgA0EDdCIHaikDACIKQiCIp0F1TwRAIAqnIgggCCgCAEEBajYCAAsgBCAHaiAKNwMAIANBAWohAwwBCwsgCUKAgICAcFoEQCAJpyAGNgIgCyAAIAlBLyACEJgDIAkPC0KAgICA4AALFgAgACAAKAIoIAFBA3RqKQMAIAEQRwuEAgEBfwJAIAAoAggiAiAAKAIMTg0AIAAoAhAEQCAAIAJBAWo2AgggACgCBCACQQF0aiABOwEQQQAPCyABQf8BSw0AIAAgAkEBajYCCCAAKAIEIAJqIAE6ABBBAA8LAn8gACgCCCICIAAoAgxOBEBBfyAAIAJBAWogARDEAg0BGgsCQCAAKAIQBEAgACAAKAIIIgJBAWo2AgggACgCBCACQQF0aiABOwEQDAELIAFB\u002FwFNBEAgACAAKAIIIgJBAWo2AgggAiAAKAIEaiABOgAQDAELQX8gACAAKAIMEOADDQEaIAAgACgCCCICQQFqNgIIIAAoAgQgAkEBdGogATsBEAtBAAsLEgAgACABIAIgAyAEQZIDELEDCzUBAX8gACgCACIBBEAgACgCFCABQQAgACgCEBEBABoLIABCADcCACAAQgA3AhAgAEIANwIICzUBAn9BfyEDIAAgAUEAEGsiAgR\u002FIAIoAiAoAgwoAiAtAAQEQCAAEF9Bfw8LIAIoAigFQX8LCwkAIABBARDsBAsNACAAQRpBJEEZEPEFC4gBAQJ\u002FQX8hAiAAKAIUBH9BfwUgAUKAgICAcINCgICAgJB\u002FUgRAIAAoAgAgARAlIgFCgICAgHCDQoCAgIDgAFEEQCAAEPcCQX8PCyAAIAGnIgJBACACKAIEQf\u002F\u002F\u002F\u002F8HcRBLIQMgACgCACABEAwgAw8LIAAgAaciAEEAIAAoAgRB\u002F\u002F\u002F\u002F\u002FwdxEEsLC54CAgN\u002FAX4gAiABKQIEIgenQf\u002F\u002F\u002F\u002F8HcSADR3JFBEAgASABKAIAQQFqNgIAIAGtQoCAgICQf4QPCyABQRBqIQUgB0KAgICACINQIAMgAmsiBEEATHJFBEAgAyACIAIgA0gbIQZBACEDIAIhAQNAIAEgBkZFBEAgBSABQQF0ai8BACADciEDIAFBAWohAQwBCwsgA0H\u002F\u002FwNxQYACTwRAIAAgBSACQQF0aiAEEJIDDwtBACEBIAAgBEEAEOkBIgBFBEBCgICAgOAADwsgAEEQaiEDA0AgASAERkUEQCABIANqIAUgASACakEBdGotAAA6AAAgAUEBaiEBDAELCyADIARqQQA6AAAgAK1CgICAgJB\u002FhA8LIAAgAiAFaiAEEJwDC0QBAn8CQCAAQoCAgIBwVA0AIACnIgMvAQZBAkcNACADLQAFQQhxRQ0AIAIgAygCKDYCACABIAMoAiQ2AgBBASEECyAEC9UBAgJ\u002FA34CfyACRQRAQoCAgIAwIQVBAAwBCyAAKAIQIgMpA4ABIQUgA0KAgICAIDcDgAFBfwshAwJAIAAgAUEGIAFBABARIgdCgICAgHCDIgZCgICAgCBRIAZCgICAgDBRckUEQEF\u002FIQQgBkKAgICA4ABRDQEgACAHIAFBAEEAEDYhAQJ\u002FIAMgAg0AGkF\u002FIAFCgICAgHCDQoCAgIDgAFENABogAyABQv\u002F\u002F\u002F\u002F9vVg0AGiAAECJBfwshBCAAIAEQDAwBCyADIQQLIAIEQCAAIAUQmAELIAQLxQECAX4CfyMAQRBrIgUkAEKAgICA4AAhBAJAAkAgACABIAJBAEEAIAVBDGoQkQUiAUKAgICAcINCgICAgOAAUQ0AIAUoAgwiBkECRwRAIAMgBjYCACABIQQMAgsgACABQeoAIAFBABARIgJCgICAgHCDQoCAgIDgAFENACADIAAgAhAnIgM2AgBCgICAgDAhBCADRQRAIAAgAUHBACABQQAQESEECyAAIAEQDAwBCyAAIAEQDCADQQA2AgALIAVBEGokACAEC4gDAgJ+An8jAEEQayIGJAACQCABQoCAgIBwVARAIAEhAwwBCyACQW9xIQUCQAJAAkAgAkEQcQ0AIAAgAUHLASABQQAQESIEQoCAgIBwgyIDQoCAgIAgUSADQoCAgIAwUXINACADQoCAgIDgAFENASAGIABBxwBBFiAFQQFGG0HJACAFGxApNwMIIAAgBCABQQEgBkEIahA2IQMgACAGKQMIEAwgA0KAgICAcINCgICAgOAAUQ0BIAAgARAMIANCgICAgHBUDQMgACADEAwgAEGLzwBBABASDAILIAVBAEchBUEAIQIDQCACQQJHBEAgACABQThBOiACIAVGGyABQQAQESIDQoCAgIBwg0KAgICA4ABRDQICQCAAIAMQNUUNACAAIAMgAUEAQQAQNiIDQoCAgIBwg0KAgICA4ABRDQMgA0L\u002F\u002F\u002F\u002F\u002Fb1YNACAAIAEQDAwFCyAAIAMQDCACQQFqIQIMAQsLIABBi88AQQAQEgsgACABEAwLQoCAgIDgACEDCyAGQRBqJAAgAwtBACAAIAEgAkEATgR+IAKtBUKAgICAwH4gAri9IgFCgICAgMCBgPz\u002FAH0gAUKAgICAgICA+P8AVhsLIAMgBBCUAQs3AQJ\u002FIAAgAhAwIQUgACACEAwgBUUEQCAAIAMQDEF\u002FDwsgACABIAUgAyAEEBUhBiAAIAUQECAGC\u002FEBAgJ\u002FAXwCfwNAAkACQAJ\u002FAkACQEEHIAJCIIinIgMgA0EHa0FuSRsOCAAAAAAEBAQBBAsgAqcMAQsgAkKAgICAwIGA\u002FP8AfCICQjSIp0H\u002FD3EiAEGdCEsNASACvyIFmUQAAAAAAADgQWMEQCAFqgwBC0GAgICAeAshA0EADAMLQQAhA0EAIABB0ghLDQIaQQAgAkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FB4NCgICAgICAgAiEIABBkwhrrYZCIIinIgNrIAMgAkIAUxshA0EADAILIAAgAhCWASICQoCAgIBwg0KAgICA4ABSDQALQQAhA0F\u002FCyEEIAEgAzYCACAECwsAIAAgAUEAENoFC80BAQN\u002FIwBBEGsiBCQAAkAgAUKAgICAcFQEQAwBCyABpyICLwEGQSxGBEACQCAAIARBCGogAUHiABB+IgNFDQAgBCkDCCIBQoCAgIBwg0KAgICAMFEEQCAAIAMpAwAQlwEhAgwDCyAAIAEgAykDCEEBIAMQNiIBQoCAgIBwg0KAgICA4ABRDQAgACABECchAiAAIAMpAwAQlwEiA0EASA0AIAIgA0YNAiAAQZ7YAEEAEBILQX8hAgwBCyACLQAFQQFxIQILIARBEGokACACCxkAIAAgACgCECIAKQOAARAMIAAgATcDgAELHgAgAEKAgICAcINCgICAgJB\u002FUQRAIACnIAEQjAQLCyQBAX8jAEEQayIDJAAgAyACNgIMIAAgASACEJMEIANBEGokAAsXACAAKAIMIAAoAghBACAAKAIQEQEAGgu0BQEHfyMAQZACayIFJAAgBUEAOgAQIAUgACgCBDYCACAFIAAoAhQ2AgQgBSAAKAIYNgIMIAUgACgCMDYCCCAAQRBqIQlBASEEAkACQANAQX4hCAJ\u002FAkACQAJAAkACQAJAAkACQAJAAkAgCSgCACIDQf4Aag4FAQkJCQcACwJAAkACQAJAAkAgA0Eoaw4CAQIACwJAIANBO2sOAwcNCQALAkAgA0HbAGsOAwENAwALAkAgA0H7AGsOAwENBAALIANBpX9GDQcgA0EvRg0JIANBqn9HDQwMEAsgBEH\u002FAU0NBAwOCyAEQQFrIgQgBUEQamotAABBKEcNDQwJCyAEQQFrIgQgBUEQamotAABB2wBHDQwMCAtB\u002FQAgBEEBayIEIAVBEGpqLQAAIghB+wBGDQkaQap\u002FIQMgCEHgAEcNDCAAIAkQgQIgAEEANgIwIAAgACgCFDYCBCAAIAAoAjgQzQMNDAsgACgCKEHgAEYNBkHgACEDIARB\u002FwFLDQoLIAVBEGogBGogAzoAACAEQQFqIQQMBQsgBiAEQQJGciEGQTsMBgsgBkECciAGIARBAkYbIQZBpX8MBQsgBkEEciEGQT0MBAtBfyEICyAHQYABaiIDQRVNQQBBASADdEGbgMABcRsNACAHQSlGIAdB3QBGciAHQdUAaiIDQQdNQQBBASADdEGHAXEbciAHQf0ARnINACAAIAAoAjggCGo2AjggABDnBA0ECyAJKAIAIQMLIAMgA0GDf0cNABpBWSAAQcQAEEUNABpBWUGDfyAAQS0QRRsLIQcgABAPDQEgBEEBSw0AC0FZIAAoAhAgAEHEABBFGyEDIAJFDQFBCiADIAAoAgQgACgCFEcbIQMMAQtBqn8hAwsgAQRAIAEgBjYCAAsgACAFEO0CIQAgBUGQAmokAEF\u002FIAMgABsLgQYBBX8gACgCACEFAkACQAJAAkACQAJAAkACQAJAAkAgA0EBaw4GAQEBAQIDAAsgBSABIAJBABDlAg8LIAEgAiABKALAAUEBEMkDIgRBAEgNAgJAIARB\u002F\u002F\u002F\u002F\u002FwNNBEAgASgCdCAEQQR0aiIEKAIEIgYgASgCvAEiB0YEQCADQQNHDQIgAS0AbkEBcQ0CIAQoAgxB8AFxQRBHDQIMBgsgBCgCDEHwAXFBMEcNBCAGQQJqIAdGDQEMBAsgASgCvAEgASgC8AFHDQMLIABBizJBABATDAQLIAUgASACQQMQ5QIPCwJAIAEgAiABKALAAUEAEMkDQQBODQAgASgCKARAAkAgASACEKACIgNFDQAgAy0ABEECcUUNACADKAIIIAEoArwBRw0AIAEoAiRBAUYNAgtBgICAgARBfyAFIAEgAhDmAhsPCyABIAIQ9wEiBEEATg0GIAUgASACEEwiBEEASA0GAkAgAkHOAEcNACABKAJIRQ0AIAEgBDYCmAELIAEoAnQgBEEEdGogASgCvAE2AggMBgsgAEGLMkEAEBMMAgsgASgCvAEhBiADQQJLDQAgBiABKALwAUcNACABIAIQ6QRBAEgNACAAQZrVAEEAEBMMAQtBACEEIAEoAnwiB0EAIAdBAEobIQgCQANAIAQgCEYNAQJAAkAgASgCdCAEQQR0aiIHKAIAIAJHDQAgBygCBA0AIAEgBygCCCAGEOgEDQELIARBAWohBAwBCwsgAEHv2QBBABATDAELAkAgASgCKEUNACABIAIQoAIiBEUNACABIAQoAgggBhDoBEUNACAAQd4yQQAQEwwBCyABKAIgRQ0CIAEoAiRBAUsNAiAGIAEoAvABRw0CIAUgASACEOYCIgANAQtBfw8LIAAgAC0ABEH5AXFBBkECIANBAkYbcjoABEGAgICABA8LIAUgASACQQEgA0EERkEBdCADQQNGGxDlAiIEQQBIDQAgASgCdCAEQQR0aiIAIAAoAgxBfHEgA0ECRnJBAnI2AgwgBA8LIAQLsgEBBX8CQAJAIAAoAkAiAigCmAIiA0EASA0AIAIoAoACIgQgA2oiBS0AACIGQcUBRwRAIAZBzQBHDQEgAkF\u002FNgKYAiACIAM2AoQCIABBzQAQDSAAIAEQFw8LIAQgAyAFKAABa0EBaiIDaiIELQAAQdYARw0BIAAoAgAgBCgAARAQIAIoAoACIANqIAAoAgAgARAWNgABIAJBfzYCmAILDwtBviJBqOwAQYewAUGc1AAQAAALGQAgACABIAJBASADIAQgBSAGIAcgCBD7AQukAQIBfwF+IAApAgQiBKdB\u002F\u002F\u002F\u002F\u002FwdxIQMCQAJAIARCgICAgAiDUEUEQCACIAMgAiADShshAyAAQRBqIQADQCACIANGDQIgACACQQF0ai8BACABRg0DIAJBAWohAgwACwALIAFB\u002FwFLDQAgAiADIAIgA0obIQMgAEEQaiEAA0AgAiADRg0BIAAgAmotAAAgAUYNAiACQQFqIQIMAAsAC0F\u002FIQILIAILIwEBfyAAIAEgAkIAQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8PQgAQZiEDIAAgAhAMIAMLigkCCn8BfiMAQZABayICJAAgACAAQRBqIgYQgQIgACAAKAI4IgE2AjQgAiABNgIEIAAgACgCFDYCBAJ\u002FAkADQAJAIAAgATYCGCAAIAAoAggiBzYCFCABLAAAIgVB\u002FwFxIgQhAwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBA57AAkJCQkJCQkJBgQFBQMJCQkJCQkJCQkJCQkJCQkJCQkGCQIJDgkJAQkJCQsJCgkHCAwMDAwMDAwMDAkJCQkJCQkODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODgkJCQkOCQ4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4OCQsgASAAKAI8SQ0MIAZBqn82AgAMDgtBJyEDIAAoAkxFDQsLIAAgA0EBIAFBAWogBiACQQRqEP8CRQ0MDBALIAFBAWogASABLQABQQpGGyEBCyACIAFBAWoiATYCBCAAIAdBAWo2AggMDQsgACgCTEUNBwsgAiABQQFqIgE2AgQMCwsgACgCTEUNBSABLQABIgNBL0YNCCADQSpHDQUgAUECaiEBA0AgAiABNgIEA0ACQAJAAkACQCABLQAAIgNBCmsOBAECAgMACyADQSpHBEAgAw0CIAEgACgCPEkNA0HoGiEBDA8LIAEtAAFBL0cNAiACIAFBAmoiATYCBAwPCyAAIAAoAghBAWo2AggMAQsgA8BBAE4NACABQQYgAkEEahBRIQkgAigCBCEBIAlBf0cNAQsLIAFBAWohAQwACwALIAEtAAFBOmtBdkkNAwwECyAFQQBODQNBzDEhAQwHCyABLQABQTprQXZJDQIMAQsgACgCTEUNASABLQABQTprQXZJDQELIAAoAgAgASACQQRqQQBBCiAAKAJMIgEbIAFBAEdBAnQQgAIiC0KAgICAcINCgICAgOAAUQ0GIAAgCzcDICAAQYB\u002FNgIQDAILIAYgBDYCACACIAFBAWo2AgQMAQsgAiABQQFqIgQ2AgQgAkGAATYCCCACIAJBEGoiAzYCDEEAIQECfwNAIAIoAghBBmshCAJAA0AgASADaiAFOgAAIAFBAWohASAELQAAIgfAIgVBAEgNASAHQQN2QRxxQbD\u002FAWooAgAgB3ZBAXFFDQEgBEEBaiEEIAEgCEkNAAtBACAAKAIAIAJBDGogAkEIaiACQRBqEK8FDQIaIAIoAgwhAwwBCwsgACgCACADIAEQnQMLIQEgAigCDCIDIAJBEGpHBEAgACgCACgCECIFQRBqIAMgBSgCBBEAAAsgAiAENgIEIAFFDQQgAEIANwIkIAAgATYCICAAQYN\u002FNgIQCyAAIAIoAgQ2AjhBAAwECyABQQJqIQEDQCACIAE2AgQDQAJAAkAgAS0AACIDBEAgA0EKaw4EBgEBBgELIAEgACgCPE8NBQwBCyADwEEATg0AIAFBBiACQQRqEFEhAyACKAIEIQEgA0F+cUGowABGDQQgA0F\u002FRw0BCwsgAUEBaiEBDAALAAsLIAAgAUEAEBMLIAZBqH82AgBBfwshCiACQZABaiQAIAoLEQAgACABIAEgAiADQQIQ\u002FgMLWQECfyMAQRBrIgMkAEF\u002FIQQgACADQQhqIAIQ4wFFBEBBACEEIAEgAykDCCICQoCAgICAgIAQWgR+IABBig9BABBEQX8hBEIABSACCzcDAAsgA0EQaiQAIAQLtgEBAX8jAEEQayIDJAACQAJAIAJBAEgEQCABIAJB\u002F\u002F\u002F\u002F\u002FwdxNgIAQQEhAgwBCyAAKAIQIgAoAiwgAk0NAQJ\u002FAkAgACgCOCACQQJ0aigCACIAKQIEQoCAgICAgICAQINCgICAgICAgIDAAFINACADQQxqIAAQ7QVFDQBBASADKAIMIgBBf0cNARoLQQAhAEEACyECIAEgADYCAAsgA0EQaiQAIAIPC0GmzgBBqOwAQcYYQZ4PEAAACzwAIAAgASACQQBOBH4gAq0FQoCAgIDAfiACuL0iAUKAgICAwIGA\u002FP8AfSABQoCAgICAgID4\u002FwBWGwsQTgtTAQF\u002FIAAoAhAiBEEQaiABIAIgBCgCCBEBACIBIAJFckUEQCAAEHAgAQ8LIAMEQCADIAEgACgCECgCDBEFACIAIAJrIgJBACAAIAJPGzYCAAsgAQsNACAAQQAgAUEAEJoDC\u002FkBAgN+An8jAEEQayIFJAACfiABvSIEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDIgJCgICAgICAgAh9Qv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002Fv\u002FwBYBEAgAkI8hiEDIAJCBIhCgICAgICAgIA8fAwBCyACQoCAgICAgID4\u002FwBaBEAgBEI8hiEDIARCBIhCgICAgICAwP\u002F\u002FAIQMAQsgAlAEQEIADAELIAUgAkIAIAKnZ0EgaiACQiCIp2cgAkKAgICAEFQbIgZBMWoQYiAFKQMAIQMgBSkDCEKAgICAgIDAAIVBjPgAIAZrrUIwhoQLIQIgACADNwMAIAAgAiAEQoCAgICAgICAgH+DhDcDCCAFQRBqJAALKgEBfyMAQRBrIgMkACADIAI2AgwgACABIAJBpANBABCUBBogA0EQaiQAC0cAIAAgAUkEQCAAIAEgAhAeGg8LIAIEQCAAIAJqIQAgASACaiEBA0AgAEEBayIAIAFBAWsiAS0AADoAACACQQFrIgINAAsLCyABAX4gACAAIAIgASADQQRBABCCASIFIAEgBBC\u002FASAFC4sMAQZ\u002FIwBBIGsiAyQAAkACQAJAAkACQAJ\u002FIAAoAhAiAkGDf0cEQEEAIAJBV0cNARogACgCQCIELQBsQQFxRQRAIABBl+AAQQAQEwwDCyAEKAJkRQRAIABB6jtBABATDAMLQX8hBSAAEA8NBQJAAkACQAJAIAAoAhAiBEEpaw4EAgEBAgALIARB3QBGIARBOmtBAklyIARB\u002FQBGcg0BCyAAKAIwDQBBACECIARBKkYEQCAAEA8NCEEBIQILIAAgARCtAUUNAQwHCyAAQQYQDUEAIQILIAAoAkAtAGwhASACBEAgABAtIQUgABAtIQIgAEGAAUH\u002FACABQQNGGxANIABBDhANIABBBhANIABBBhANIAAgBRAaIABBhgEQDSABQQNHIgdFBEAgAEGMARANCyAAQYMBEA0gAEHCABANIABB6gAQFyAAQesAQX8QGCEGIAAgAhAaQYoBIQQgACAHBH9BigEFIABBwQAQDSAAQcEAEBdBiwELEA0gAEEREA0gAEHrAEF\u002FEBghBCAAQQ4QDSAAQewAIAUQGBogACAEEBogAEEBEA0gAEECEDggAEGsARANIABB6wBBfxAYIQQgAUEDRyIFRQRAIABBjAEQDQsgAEGHARANIABBABBYIABB6wBBfxAYIQcgBUUEQCAAQYwBEA0LIABBgwEQDSAAQcIAEA0gAEHqABAXIABB6gAgAhAYGiAAQcEAEA0gAEHBABAXIAAgBxAaIABBDxANIABBDxANIABBDxANIABBARCwAiAAIAQQGiAAQYcBEA0gAEEBEFggAEHrAEF\u002FEBghBCABQQNHIgFFBEAgAEGMARANCyAAQYMBEA0gAEHCABANIABB6gAQFyAAQeoAIAIQGBogAEHsACAGEBgaIAAgBBAaIABBhwEQDSAAQQIQWCAAQesAQX8QGCEEIAFFBEAgAEGMARANCyAAIAQQGiAAQTAQDUEAIQUgAEEAEBcgAEEEEFggACAGEBogAEHBABANIABBwQAQFyAAQQ8QDSAAQQ8QDSAAQQ8QDQwGCyABQQNGBEAgAEGMARANCyAAQYkBEA0gAEHqAEF\u002FEBghASAAQQEQsAIMBAsgACgCIAshBEF\u002FIQUgAEGifyABQQRyEMADDQMgACgCECICQaZ\u002FRgRAIAFBe3EhBiAAEC0hAgNAIAAQDw0FIABBERANIABBsQEQDSAAQeoAIAIQGBogAEEOEA0gAEEIIAYQ9gENBSAAKAIQQaZ\u002FRg0ACyAAIAIQGiAAKAIQIQILIAJBP0YEQCAAEA8NBCAAQeoAQX8QGCECIAAQUw0EIABBOhAoDQQgAEHsAEF\u002FEBghBiAAIAIQGiAAIAFBAXEQrQENBCAAIAYQGiAAKAIQIQILIAJBPUciBiACQfsAaiIFQQtLcUUEQCAAEA8NASAAIANBHGogA0EYaiADQRRqIANBEGpBACAGIAIQrgFBAEgNASAAIAEQrQEEQCAAKAIAIAMoAhQQEAwCCwJAIAJBPUYEQEE8IQEgAygCFCECIAMoAhwiBUE8RwRAIAIhBCAFIQEMAgsgAiAERwRAIAIhBAwCCyAAIAQQngEMAQsgACAFQbDJAWotAAAQDSADKAIUIQQgAygCHCEBC0EAIQUgACABIAMoAhggBCADKAIQQQJBABDBAQwEC0EAIQUgAkHvAGpBAksNAyAAEA8NACAAIANBHGogA0EYaiADQRRqIANBEGogA0EMakEBIAIQrgFBAEgNACAAQREQDSACQZN\u002FRgRAIABBsQEQDQsgAEHrAEHqACACQZJ\u002FRhtBfxAYIQIgAEEOEA0gACABEK0BRQ0BIAAoAgAgAygCFBAQC0F\u002FIQUMAgsCQCADKAIcIgFBPEcNACADKAIUIARHDQAgACAEEJ4BCyADKAIMQQFrIgRBA08NAiAAIARBFWpB\u002FwFxEA0gACABIAMoAhggAygCFCADKAIQQQFBABDBASAAQewAQX8QGCEBIAAgAhAaIAMoAgwhBQNAIAUEQCAAQQ8QDSADIAMoAgxBAWsiBTYCDAwBCwsLIAAgARAaQQAhBQsgA0EgaiQAIAUPCxABAAuSBQEHfwJAAkACQCAAKAJAIgsoApgCIg5BAEgNAEECIQ0CQAJAIAsoAoACIA5qIgwtAAAiCEHHAGsOBAQCAgEACyAIQcEARg0CIAhBvwFHBEAgCEG4AUcNAiAMKAABIglBCEYNAiAMLwAFIQogCUE7RwRAIAlB8gBGDQMgCUHOAEcNBQsgCy0AbkEBcUUNBCAAQdDaAEEAEBNBfw8LIAwvAAUhCiAMKAABIQlBASENDAMLQQMhDQwCCyAHQbt\u002FRgRAIABBkd4AQQAQE0F\u002FDwsgB0F+cUGUf0YEQCAAQdjiAEEAEBNBfw8LIAdBX3FB2wBGBEAgAEGLHUEAEBNBfw8LIABBst4AQQAQE0F\u002FDwsgDCgAASEJQQEhDQtBfyEHIAtBfzYCmAIgCyAONgKEAgJAAkAgBgRAAkACQAJAAkAgCEHHAGsOBAEDAwIACwJAIAhBwQBHBEAgCEG\u002FAUYNASAIQbgBRw0EIAAQLSEHIABBuwEQDSAAIAkQFyAAIAcQOCAAIAoQFCALIAdBARBjGkE8IQggAEE8EA0MBwsgAEHCABANIAAgCRAXQcEAIQgMBgsgAEHAARANIAAgCRAXIAAgChAUQb8BIQgMBQsgAEHzABANIABBExANQccAIQgMAwsgAEHyABANIABBFBANQcoAIQgMAgsQAQALAkACQAJAIAhBxwBrDgQBBAQCAAsgCEG4AUcNAyAAEC0hByAAQbsBEA0gACAJEBcgACAHEDggACAKEBQgCyAHQQEQYxpBPCEIDAMLIABB8wAQDUHHACEIDAILIABB8gAQDUHKACEIDAELIAAgCBANCyABIAg2AgAgAiAKNgIAIAMgCTYCACAEIAc2AgAgBQRAIAUgDTYCAAtBAAtaAQN\u002FIwBBEGsiASQAAkAgACgCECIDQap\u002FRg0AIANBO0cEQCADQf0ARg0BIAAoAjANASABQTs2AgAgAEHMkAEgARATQX8hAgwBCyAAEA8hAgsgAUEQaiQAIAIL2QIBA38jAEFAaiIGJAACfyACIAEoAgBPBEAgBiACNgI0IAYgAzYCMCAAQdmKASAGQTBqEDpBfwwBCwJAIAEoAgQgBE4NACABIAQ2AgQgBEH\u002F\u002FwNIDQAgBiACNgIEIAYgAzYCACAAQYGLASAGEDpBfwwBCyABKAIIIAJBAXRqIgcvAQAiA0H\u002F\u002FwNHBEAgAyAERwRAIAYgAjYCKCAGIAQ2AiQgBiADNgIgIABBsooBIAZBIGoQOkF\u002FDAILQQAgASgCDCACQQJ0aigCACIBIAVGDQEaIAYgAjYCGCAGIAU2AhQgBiABNgIQIABBh4oBIAZBEGoQOkF\u002FDAELIAcgBDsBACABKAIMIAJBAnRqIAU2AgBBfyAAIAFBEGpBBCABQRhqIAEoAhRBAWoQZA0AGiABIAEoAhQiAEEBajYCFCABKAIQIABBAnRqIAI2AgBBAAshCCAGQUBrJAAgCAs7AAJ\u002FIAAgAUGAgARPBH9BfyAAIAFBgIAEa0EKdkGAsANqEIcBDQEaIAFB\u002FwdxQYC4A3IFIAELEIcBCwvBAQIGfwF+IwBBIGsiBSQAAn4CQCACQoCAgIBwg0KAgICAkH9SBEAgACACEDQiAkKAgICAcINCgICAgOAAUQ0BCyAAIAVBCGoiBCABED0iByADED0iCGogAqciBigCBCIJQf\u002F\u002F\u002F\u002F8HcWogCUEfdhCZAw0AIAQgASAHEIsCGiAEIAZBACAGKAIEQf\u002F\u002F\u002F\u002F8HcRBLGiAEIAMgCBCLAhogACACEAwgBBA3DAELIAAgAhAMQoCAgIDgAAshCiAFQSBqJAAgCgspAQF\u002FIAJCIIinQXVPBEAgAqciAyADKAIAQQFqNgIACyAAIAEgAhDTBQufBAMEfwJ8AX4jAEEwayIHJABBByACQiCIpyIEIARBB2tBbkkbIQVBACEEAkACQAJAAnwCQAJAAkACQAJAAkACQEEHIAFCIIinIgYgBkEHa0FuSRsiBkEKag4SCAkDAgkJCQkJBAUAAQEJCQkGCQsgBUEBRw0IIAGnIAKnRiEEDAkLIAUgBkYhBAwHCyAFQXlHDQYgAacgAqcQvAJFIQQMBgsgAacgAqdGIAVBeEZxIQQMBQsgBUF\u002FRw0EIAGnIAKnRiEEDAQLIAGntyEIIAVBB0cEQCAFDQQgAqe3DAILIAJCgICAgMCBgPz\u002FAHy\u002FDAELIAFCgICAgMCBgPz\u002FAHy\u002FIQggBQRAIAVBB0cNAyACQoCAgIDAgYD8\u002FwB8vwwBCyACp7cLIQkCQCADBEACQAJAIAi9IgFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAIMiAkKBgICAgICA+P8AWgRAIAm9Qv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoGAgICAgID4\u002FwBUIQQMAQsgCb0iCkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KBgICAgICA+P8AVA0BCyAEIAJCgICAgICAgPj\u002FAFZzIQQMBQsgA0ECRw0BCyAIIAlhIQQMAwsgASAKUSEEDAILIAVBdkcNACAAIAdBHGoiBiABEK0CIgMgACAHQQhqIAIQrQIiBRC9AiEEIAMgBkYEQCAGEBkLIAUgB0EIaiIDRw0AIAMQGQsgACABEAwgACACEAwLIAdBMGokACAECy8BAX8jAEHQAGsiAyQAIAMgACADQRBqIAEQgQE2AgAgACACIAMQEiADQdAAaiQACw0AIAAgASABED0QnQMLHQEBfyAAIAFB\u002FwFxEA4gACgCBCEDIAAgAhAbIAMLEgAgACABIAIgAyAEQZQDELEDC1IBAX8gACgCDCIDRQRAQQAPCyAAIAAoAghB\u002F\u002F\u002F\u002F\u002FwNBgYCAgHwgASABQYGAgIB8TBsiASABQf\u002F\u002F\u002F\u002F8DThtqNgIIIABB\u002F\u002F\u002F\u002F\u002FwMgAiADQQAQ3AILHwEBfyAAKAIMIgNFBEBBAA8LIAAgASACIANBABDcAgsgACABQgA3AgwgAUKAgICAgICAgIB\u002FNwIEIAEgADYCAAtmAQF\u002FAn9BACAAKAIIIgIgAU8NABpBfyAAKAIMDQAaIAAoAhQgACgCACACQQNsQQF2IgIgASABIAJJGyIBIAAoAhARAQAiAkUEQCAAQQE2AgxBfw8LIAAgATYCCCAAIAI2AgBBAAsLZwECfwJAIAFCgICAgHBUDQAgAaciAy8BBkEEayIEQR1LQQEgBHRBz4CAgAJxRXINACAAIAMpAyAQDCADIAI3AyAPCyAAIAIQDCABQoCAgIBwg0KAgICA4ABSBEAgAEHu0gBBABASCwshAQF\u002FIAAgASAAIAIQtgEiAiADIAQQFSEFIAAgAhAQIAULRwIBfgF\u002FIAApA8ABIQQgAUIgiKdBdU8EQCABpyIFIAUoAgBBAWo2AgALIAAgBCACIAFBAxC+ARogACABIAMQrAQgACABEAwLhAEBAX8CQCACRSABQoCAgIBwg0KAgICAkH9SckUEQCABpyIDIAMoAgBBAWo2AgBBBCECIAAoAgAgAxCRBCIDQQBKDQELIAFCIIinQXVPBEAgAaciAiACKAIAQQFqNgIAC0ECIQIgACABEMcDIgNBAE4NAEF\u002FDwsgACACEA0gACADEDhBAAv8AgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAFBxwBrDgQBDQ0CAAsgAUE8RwRAIAFBvwFHBEAgAUG4AUYNByABQcEARw0OC0EVIQQCQCAFQQJrDgMFBAAGC0EbIQQMBAsgACgCACADEBAgACAEEBoLQbMBIQQCQAJAAkAgBUEBaw4EBgABAgULQRYhBAwEC0EZIQQMAwtBHSEEDAILQRchAQJAIAVBAmsOAwkIAAoLQR8hAQwIC0EYIQQLIAAgBBANCwJAIAFBxwBrDgQDCAgHAAsgAUE8Rg0DIAFBwQBGDQggAUG\u002FAUYNASABQbgBRw0HCyAFQQJPDQggAEG9AUG5ASAGGxANDAkLIABBwQEQDQwICyAAQckAEA0PCyAAQT0QDQ8LQRohAQsgACABEA0LIABBywAQDQ8LEAEACyAAQcMAEA0gACADEDgPC0He9gBBqOwAQZy5AUGXzwAQAAALIAAgAxA4IAAgAkH\u002F\u002FwNxEBQLixMBCn8jAEFAaiIGJAAgBEEASARAIAAgBkEoakEAEJwBGiAGKAIoQQJxIQQLIAAQLSEKIAAQLSELIAAoAkAoAoQCIQ0CQCADBEAgAEEREA0gAEEGEA0gAEGsARANIABB6wAgChAYGiAAIAsQGgwBCyAAQewAIAoQGBogACALEBogAEEREA0LIAAoAkAoAoQCIQ4CQAJAAkACQAJAIAAoAhAiB0HbAEcEQCAHQfsARgRAQX8hByAAEA8NBiAAQfEAEA0gBARAIABBCxANIABBGxANCyABQUlGIAFBUUZyIQwgAUGxf0chDwNAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIQIgdBpX9HBEAgB0H9AEYNCyAAIAZBOGpBAEEBQQAQxgMiB0EASA0SIAZBuAE2AjAgBkEANgI0IAAoAkAiCSgCvAEhCCAGQX82AjwgBiAINgIsIAZBADYCCCAHDQIgABAPRQ0BIAYoAjghBwwGCyAERQRAIAAoAgBBuD9BABA6DBILQX8hByAAEA8NEgJAIAEEQCAGIAAgAhDFAyIINgI0IAhFDRQgBkG4ATYCMCAAKAJAKAK8ASEHIAZBfzYCPCAGIAc2AiwgBkEANgIIDAELIAAQogINEyAAIAZBMGogBkEsaiAGQTRqIAZBPGogBkEIakEAQfsAEK4BDRMLIAAoAhBB\u002FQBGDQIgAEHjFUEAEBMMEAsCQCAAKAIQQSByQfsARw0AIAAgBkEoakEAEJwBIgdBLEYgB0H9AEZyRSAHQT1HcQ0AAkAgBigCOCIHRQRAIAQEQCAAQfIAEA0gAEEYEA0gAEEHEA0gAEHRABANIABBGBANCyAAQcgAEA0MAQsgBARAIABBGxANIABBBxANIABBzAAQDSAAIAcQFyAAQRsQDQsgAEHCABANIAAgBxA4C0F\u002FIQcgACABIAJBAUF\u002FQQEQwgFBAEgNEiAAKAIQQf0ARg0KIABBLBAoRQ0LDBILAkACfyAGKAI4IgdFBEAgAEHzABANIARFBEBBEiEIDAMLQRghCSAAQRgQDSAAQQcQDSAAQdEAEA1BEgwBCyAERQRAQREhCAwCC0EbIQkgAEEbEA0gAEEHEA0gAEHMABANIAAgBxAXQRELIQggACAJEA0LIAAgCBANIAEEQCAGIAAgAhDFAyIINgI0IAhFDQUgB0UNBAwGCyAAEKICDQQMAgsCQCACBH8gACAGKAI4IgcQ5gQNBSAAKAJABSAJCy0AbkEBcUUNACAGKAI4IgdBzgBHIAdBO0dxDQAgAEGLHUEAEBMMBAsgBARAIABBGxANIABBBxANIABBzAAQDSAAIAYoAjgQFyAAQRsQDQsgAUEAIA8bRQRAIABBERANIABBuAEQDSAAIAYoAjgiBxAXIAAgACgCQC8BvAEQFAwCCyAGIAAoAgAgBigCOBAWIgc2AjQgAEHCABANIAAgBxA4DAYLIABBCxANIABB0wAQDSAAIAYoAggiB0ECdEEEaiAHQQV0QUBrckH8AXEQWAwECyAAIAZBMGogBkEsaiAGQTRqIAZBPGogBkEIakEAQfsAEK4BDQEgBigCCCEIAkACQCAHRQRAQR4hBwJAIAhBAWsOAwMCAAQLQSAhByAAQSAQDQwCCyAIQQFrIghBA08NBCAAIAhBAXRBG2pB\u002FwFxEA0MBAtBHCEHCyAAIAcQDQsgAEHHABANDAILIAAoAgAgBxAQDAoLIABBwQAQDSAAIAcQOAsgAUUNASAGKAI0IQcLIAAgByABEKMCDQcgBiAAKAJAKAK8ATYCLAsCQCAAKAIQQT1HBEAgBigCMCEHDAELIABBERANIABBBhANIABBrAEQDSAAQeoAQX8QGCEIIAAQDw0HIABBDhANIAAQUw0HIAYoAjAiB0G4AUcgB0E8R3FFBEAgACAGKAI0EJ4BCyAAIAgQGgsgACAHIAYoAiwgBigCNCAGKAI8QQEgDBDBASAAKAIQQf0ARg0AQX8hByAAQSwQKEUNAQwICwsgAEEOEA0gBARAIABBDhANC0F\u002FIQcgABAPRQ0CDAYLIABB4A9BABATDAQLIAAQDw0DIAYgACgCQCIEKAKwAjYCCCAEIAZBCGo2ArACIAZBfzYCHCAGQv\u002F\u002F\u002F\u002F8vNwIUIAZCgICAgHA3AgwgBCgCvAEhBCAGQQE2AiQgBiAENgIgIABB\u002FwAQDSABQUlGIAFBUUZyIQwDQAJAIAAoAhAiB0HdAEYNACAHIgRBpX9HIglFBEAgABAPDQZB7YcBIQggACgCECIEQSxGIARB3QBGcg0ECwJAAkAgBEH7AEYgBEHbAEZyRQRAIARBLEcNASAAQYIBEA0gAEEAEFggAEEOEA0gAEEOEA0MAgsgACAGQShqQQAQnAEiBEEsRiAEQd0ARnJFIARBPUdxDQACQCAJRQRAIARBPUYEQEHBzwAhCAwICyAAQQAQ5QQMAQsgAEGCARANIABBABBYIABBDhANCyAAIAEgAkEBIAYoAihBAnFBARDCAUEASA0HDAELIAZBADYCOCAGQQA2AjQCQCABBEAgBiAAIAIQxQMiBDYCNCAERQ0HIAAgBCABEKMCDQcgBkG4ATYCMCAGIAAoAkAoArwBNgIsDAELIAAQogINByAAIAZBMGogBkEsaiAGQTRqIAZBPGogBkE4akEAQdsAEK4BDQcLAkAgCUUEQCAAIAYoAjgQ5QQMAQsgAEGCARANIAAgBi0AOBBYIABBDhANIAAoAhBBPUcNACAAQREQDSAAQQYQDSAAQawBEA0gAEHqAEF\u002FEBghBCAAEA8NBiAAQQ4QDSAAEFMNBiAGKAIwIghBuAFHIAhBPEdxRQRAIAAgBigCNBCeAQsgACAEEBoLIAAgBigCMCAGKAIsIAYoAjQgBigCPEEBIAwQwQELIAAoAhBB3QBGDQAgB0Glf0YEQEGQ0wAhCAwECyAAQSwQKEUNAQwFCwsgAEGFARANIAAoAkAiASABKAKwAigCADYCsAIgABAPDQMLAkAgBUUNACAAKAIQQT1HDQBBfyEHIABB7ABBfxAYIQEgABAPDQQgACAKEBogAwRAIABBDhANCyAAEFMNBCAAQewAIAsQGBogACABEBpBASEHDAQLIANFBEAgAEHDPUEAEBMMAwsgACgCQCgCgAIgDWpBswEgDiANaxAsGiAAKAJAKAKkAiAKQRRsaiIAIAAoAgBBAWs2AgBBACEHDAMLIAAgCEEAEBMMAQsgACgCACAGKAI0EBALQX8hBwsgBkFAayQAIAcLKwAgACgCQCgCpAFBAE4EQCAAQQYQDSAAQdkAEA0gACAAKAJALwGkARAUCwsTACAAIAEgAiADIARBAEEAEN0BC6YBAQF\u002FIwBBEGsiAyQAIAMgAjcDCAJAIAAgAUGHASABQQAQESICQoCAgIBwg0KAgICA4ABRDQAgACACEDUEQCAAIAIgAUEBIANBCGoQNiICQv\u002F\u002F\u002F\u002F9vViACQoCAgICwf4NCgICAgCBRcg0BIAAgAhAMIABBpcEAQQAQEkKAgICA4AAhAgwBCyAAIAIQDCAAIAEgACADQQhqEIoFIQILIANBEGokACACC6MBAgN\u002FAX4gAEEQaiECIAEoAgAiBEEBaiEDAkAgACkCBCIFQoCAgIAIg1BFBEAgAiAEQQF0ai8BACIAQYD4A3FBgLADRyADIAWnQf\u002F\u002F\u002F\u002F8HcU5yDQEgAiADQQF0ai8BACICQYD4A3FBgLgDRw0BIABBCnRBgPg\u002FcSACQf8HcXJBgIAEaiEAIARBAmohAwwBCyACIARqLQAAIQALIAEgAzYCACAACxIAIAFB2AFOBEAgACABEIYFCwthACAAIAEgAkKAgICACHxC\u002F\u002F\u002F\u002F\u002Fw9YBH4gAkL\u002F\u002F\u002F\u002F\u002FD4MFQoCAgIDAfiACub0iAkKAgICAwIGA\u002FP8AfSACQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwsgAyAEQQdyEJQBCzkAIABB\u002FwBNBEAgAEEDdkH8\u002F\u002F\u002F\u002FAXFBsP8BaigCACAAdkEBcQ8LIABBfnFBjMAARiAAEJYGQQBHcgs1ACAAIAJBMCACQQAQESICQoCAgIBwg0KAgICA4ABRBEAgAUEANgIAQX8PCyAAIAEgAhCVAQufAwIEfgF\u002FAkACQCACBEAgACABQdcBIAFBABARIgNCgICAgHCDIgRCgICAgCBSBEAgBEKAgICA4ABRDQMgBEKAgICAMFINAgsgACABQcwBIAFBABARIgNCgICAgHCDQoCAgIDgAFENAiAAIAEgAxDkAyEEIAAgAxAMIARCgICAgHCDQoCAgIDgAFEEQCAEDwtCgICAgOAAIQMCQCAAIARB6wAgBEEAEBEiBUKAgICAcINCgICAgOAAUQ0AIABBMxCGASIBQoCAgIBwg0KAgICA4ABRBEAgACAFEAwMAQsgAEEQEFwiAkUEQCAAIAEQDCAAIAUQDAwBCyAEQiCIp0F1TwRAIASnIgcgBygCAEEBajYCAAsgAiAFNwMIIAIgBDcDACABQoCAgIBwWgRAIAGnIAI2AiALIAEhAwsgACAEEAwgAw8LIAAgAUHMASABQQAQESIDQoCAgIBwg0KAgICA4ABRDQELIAAgAxA1RQRAIAAgAxAMIABBjNkAQQAQEkKAgICA4AAPCyAAIAEgAxDkAyEGIAAgAxAMIAYhAwsgAwtRAQN\u002FAkADQCABQoCAgIBwVA0BIAGnIgIvAQYiBEEsRgRAIAIoAiAiAkUNAiACLQARBEAgABC4AkF\u002FDwsgAikDACEBDAELCyAEQQJGIQMLIAMLewEBf0F\u002FIQQCQCAAIAEQICIBQoCAgIBwg0KAgICA4ABRDQAgACABpyACEIQEIQQgACABEAwgBA0AIANBgIABcUUEQEEAIQQgA0GAgAJxRQ0BIAAoAhAoAowBIgJFDQEgAi0AKEEBcUUNAQsgAEGICkEAEBJBfyEECyAEC3sBAn8gASABKAIAQQFrIgI2AgACQCACDQAgAC0AaEECRg0AIAEoAggiAiABKAIMIgM2AgQgAyACNgIAIAFBADYCDCAAKAJcIQIgACABQQhqIgM2AlwgASACNgIMIAEgAEHYAGo2AgggAiADNgIAIAAtAGgNACAAEOYFCwvKBQEEfyMAQSBrIgckAAJAAkACQAJAAkAgAUKAgICAcFQgAkL\u002F\u002F\u002F\u002F\u002FD1ZyDQAgAqchBgJAAkACQAJAAkACQAJAAkACQCABpyIFLwEGQQJrDh4ACQkJCQkICQkJCQkJCQkJCQkJBwYGBQUEBAMDAgEJCyAFKAIoIgggBksNCiAGIAhHDQggBS0ABUEJcUEJRw0IIAUoAhAhBgNAAkAgBigCLCIIBEAgCCgCECEGAkAgCC8BBkEBaw4CAAIMCyAGLQARRQ0CDAsLIAAgBSADIAQQhgQhBAwOCyAILQAFQQhxDQALDAgLQX8hBCAAIAdBGGogAxBtDQtBASEEIAUoAiggBk0NCyAFKAIkIAZBA3RqIAcrAxg5AwAMCwtBfyEEIAAgB0EYaiADEG0NCkEBIQQgBSgCKCAGTQ0KIAUoAiQgBkECdGogBysDGLY4AgAMCgsgACAHQQhqIAMQhQQNBiAFKAIoIAZNDQggBSgCJCAGQQN0aiAHKQMINwMADAgLQX8hBCAAIAdBFGogAxCVAQ0IQQEhBCAFKAIoIAZNDQggBSgCJCAGQQJ0aiAHKAIUNgIADAgLQX8hBCAAIAdBFGogAxCVAQ0HIAUoAiggBk0NBkEBIQQgBSgCJCAGQQF0aiAHKAIUOwEADAcLQX8hBCAAIAdBFGogAxCVAQ0GQQEhBCAFKAIoIAZNDQYgBSgCJCAGaiAHKAIUOgAADAYLQX8hBCAAIAdBFGogAxDcBQ0FQQEhBCAFKAIoIAZNDQUgBSgCJCAGaiAHKAIUOgAADAULIAUoAiggBk0NACAAIAUoAiQgBkEDdGogAxAdDAMLIAAgAhAwIQUgACACEAwgBUUEQCAAIAMQDAwBCyAAIAEgBSADIAEgBBDQASEEIAAgBRAQDAMLQX8hBAwCCyAAIAUoAiQgBkEDdGogAxAdC0EBIQQLIAdBIGokACAEC+QMAgd\u002FAX4jAEEwayIJJAACQAJAAkACQAJAAn8CQAJAIARCIIinIgdBf0cEQCABQoCAgIBwWgRAIAGnIQcMAgsCQAJAAkAgB0ECaw4CAAECCyAAIAMQDCAAIAJBgcIAELUBQX8hBgwKCyAAIAMQDCAAIAJBpugAELUBQX8hBgwJCyAAIAEQiwSnIQcMAQsgBKciCCABpyIHRw0BAkADQCAHKAIQIghBMGohCiAIIAgoAhggAnFBf3NBAnRqKAIAIQYDQCAGRQRAIAchCEEADAYLIAIgCiAGQQFrQQN0IghqIgYoAgRHBEAgBigCAEH\u002F\u002F\u002F8fcSEGDAELCyAHKAIUIAhqIQggBigCACIKQYCAgMB+cUGAgIDAAEYEQCAAIAggAxAdDAgLAkAgCkGAgICAAnEEQCAHLwEGQQJHDQEgAkEwRw0DIAAgByADIAUQ3gUhBgwLCyAKQRp2QTBxIgpBMEcEQCAKQSBHBEAgCkEQRw0IIAAgCCgCBCAEIAMgBRCHBCEGDAwLIAcvAQZBC0YNByAAIAgoAgAoAhAgAxAdDAkLIAAgByACIAggBhDBAkUNAQwJCwtB6vAAQajsAEH7wQBB5MQAEAAAC0HzxgBBqOwAQfzBAEHkxAAQAAALQQEMAQtBAgshBgNAAkACQAJAAkACQAJAIAYOAgABAgsCQCAHLQAFIgZBBHFFDQACQCAGQQhxBEAgAkEASARAIAJB\u002F\u002F\u002F\u002F\u002FwdxIgYgBygCKE8NAiAHIAhHDQYgACAEIAatIAMgBRDPASEGDA4LIAcvAQZBFWtB\u002F\u002F8DcUEKSw0CIAAgAhCTAyIGRQ0CIAZBAEgNDCAHLwEGIQYMCgsgACgCECgCRCAHLwEGQRhsaigCFCIGRQ0BIAYoAhgiCgRAIAcgBygCAEEBajYCACAAIAetQoCAgIBwhCIBIAIgAyAEIAUgChE0ACEGIAAgARAMDAYLIAYoAgAiBkUNASAHIAcoAgBBAWo2AgAgACAJQRBqIAetQoCAgIBwhCINIAIgBhEXACEGIAAgDRAMIAZBAEgNBSAGRQ0BIAktABBBEHEEQCAAIAkpAygiAadBACABQoCAgIBwg0KAgICAMFIbIAQgAyAFEIcEIQYgACAJKQMgEAwgACAJKQMoEAwMDQsgACAJKQMYEAwgCS0AEEECcUUNCCAHIAhHDQQgACAEIAIgA0KAgICAMEKAgICAMEGAwAAQaiEGDAULIAcvAQYiBkEVa0H\u002F\u002FwNxQQtJDQgLIAcoAhAoAiwhB0EBIQYMBQsgB0UNAUECIQYMBAsDQCAHKAIQIgZBMGohCyAGIAYoAhggAnFBf3NBAnRqKAIAIQYDQCAGRQ0EIAIgCyAGQQFrQQN0IgZqIgooAgRHBEAgCigCAEH\u002F\u002F\u002F8fcSEGDAELCyAHKAIUIAZqIQsCQCAKKAIAIgZBGnZBMHEiDEEwRwRAIAxBEEcNASAAIAsoAgQgBCADIAUQhwQhBgwLC0F\u002FIQYgACAHIAIgCyAKEMECRQ0BDAoLCyAGQYCAgMAAcQ0CDAQLIAVBgIAEcQRAIAAgAxAMIAAgAhDAAkF\u002FIQYMCAsgCEUEQCAAIAMQDCAAIAVB7B4QfCEGDAgLIAgtAAUiBkEBcUUEQCAAIAMQDCAAIAVBhdgAEHwhBgwICwJAIAGnIgcgCEYEQCAGQQRxBEAgBkEIcUUgAkEATnINAiAHLwEGQQJHDQIgBygCKCACQf\u002F\u002F\u002F\u002F8HcUcNAiAAIAcgAyAFEIYEIQYMCgsgACAHIAJBBxB3IgJFDQggAiADNwMADAcLIAAgCUEQaiAIIAIQQyIGQQBIDQEgBkUNACAJLQAQQRBxBEAgACAJKQMgEAwgACAJKQMoEAwgACADEAwgACAFQdc\u002FEHwhBgwJCyAAIAkpAxgQDCAJLQAQQQJxRQ0EIAgvAQZBC0YNBCAAIAQgAiADQoCAgIAwQoCAgIAwQYDAABBqIQYMAQsgACAIIAIgA0KAgICAMEKAgICAMCAFQYfOAHIQ3QUhBgsgACADEAwMBgtBACEGDAALAAsgACADEAwgACAFIAIQ5wEhBgwDCyAGQf7\u002FA3FBHEYEQEF\u002FIQYgACAJQQhqIAMQhQRFDQEMAwsgACAAIAMQlgEiARAMQX8hBiABQoCAgIBwg0KAgICA4ABRDQILQQEhBgwBCyAAIAMQDEF\u002FIQYLIAlBMGokACAGCzwBAX8jAEHQAGsiAiQAIAIgAQR\u002FIAAgAkEQaiABEIEBBUHe2QALNgIAIABBveQAIAIQwwIgAkHQAGokAAuuwwEDLn8HfgJ8IwBBoAFrIgghDiAIJAAgACgCECEWQoCAgIDgACE1AkAgABB2DQACfwJAAkACQAJAAkAgAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAGQQRxRQ0BIAGnIgcoAmQhCCAHKAJAIhkoAiQhEyAZKAIgIhIoAjAhCSASLwEqIQwgB0EANgJkIAcgFigCjAE2AjggBygCSCEVIAcoAlghBiAHKAJMIREgFiAHQThqIhQ2AowBIBEgDEEDdGohFyAVIRggBiEMIAcoAhxFDQQMBQsgAaciGS8BBiIHQQ1GDQIgFigCRCAHQRhsaigCECIIDQELIABB+zlBABASDAULIAAgASACIAQgBSAGIAgRFgAhNQwECyAZKAIgIhIvAS4hCSASLwEqIRcgEi8BKCEHIA4gEi0AEDYCWCAOIA5ByABqIhU2AkwgDiAVNgJIIA4gATcDOCAOIAQ2AlQgGSgCJCETIAggByAHQQAgBCAHSCIIGyAGQQJxQQF2GyIGIAkgF2pqQQN0QQ9qQfD\u002F\u002FwFxayIYJAAgBSEVIAYEQCAHIAQgByAIGyIIQQAgCEEAShsiCGsiCUEAIAcgCU8bIREDQAJAIAggCkYEQANAIAggEUYNAiAYIAhBA3RqQoCAgIAwNwMAIAhBAWohCAwACwALIAUgCkEDdCIJaikDACIBQiCIp0F1TwRAIAGnIhUgFSgCAEEBajYCAAsgCSAYaiABNwMAIBFBAWohESAKQQFqIQoMAQsLIA4gBzYCVCAYIRULIA4gFTYCQCAOIBggBkEDdGoiETYCREEAIQgDQCAIIBdHBEAgESAIQQN0akKAgICAMDcDACAIQQFqIQgMAQsLIBIoAhQhBiAOIBYoAowBNgIwIBYgDkEwaiIUNgKMASASKAIwIQkgESAXQQN0aiIIIRcLQQAMAQtBAQshBwNAAkACQAJAAkAgB0UEQCAEQQN0ISMgA0KAgICAcIMhOyARQQhqIRogEUEQaiEbIBFBGGohHCAVQQhqIR0gFUEQaiEeIBVBGGohHyAUQRhqISQgAkIgiKciIEF+cSElIANCIIinISYgBK0hOiADpyEhIA5BMGohJyAOQegAaiEiIAghBwJAA0ACQCAGQQFqIQxCgICAgDAhNQJ\u002FAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ\u002FAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBi0AACIKQQFrDvUBAAElCZMBCgsMDQ4PEBESExQVGBYXGRobHCEiIyQdIB4fKScnKiorLNwB\u002FQEtLi8w\u002FAExMjM0NTY3ODk5Ojo7oAGjAT08PpABkQGSAZQBlQGWAZ4BnwGiAaEBpAGXAZgBmQGaAZsBpQGmAacBnAGcAZ0BnQE\u002FQEFCQ0RsbW5yc3V2dG9wcXd+fXqBAYIBgwGMAcsBzAHNAc4BzgHOAc4BzgHOAXh4eHmEAYYBiAGFAYcBigGJAYsBjQGOAdgB2gHbAdsB2QGwAa8BsgGxAbMBswG1AbQBqQG2AY8ByAHJAcoBqwGsAa0BqAGqAa4BtwG5AbgBvQG+Ab8BwAHHAcUBwQHCAcMBxAG6AbwBuwHUAcYB9gECAgICAgICAgIDBAUGB0VGR0hJSktMTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqawiAAX98eyYmJibPAdAB0QHSAdYBCyAIIAY1AAE3AwAgBkEFaiEMIAhBCGohBwz1AQsgEigCNCAMKAAAQQN0aikDACIBQiCIp0F1TwRAIAGnIgcgBygCAEEBajYCAAsgCCABNwMAIAZBBWohDCAIQQhqIQcM9AELIAggCkG1AWutNwMAIAhBCGohBwzzAQsgCCAGMAABQv\u002F\u002F\u002F\u002F8PgzcDACAGQQJqIQwgCEEIaiEHDPIBCyAIIAYyAAFC\u002F\u002F\u002F\u002F\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\u002F\u002F\u002F\u002F\u002Fb1YNAEKBgICAECE1IAFCgICAgHCDQoCAgIAwUQ0AIABB6ecAQQAQEgzNAQsgCCA1NwMAIAhBCGohBwzIAQsgO0KAgICAMFINwQEgCUHPjAFBABASDMsBCyAJIAhBEGspAwAgCEEIaykDABDOBSIHQQBIDcoBIAcNwAEgCUG0HkEAEBIMygELIAhBCGsiDSkDACI1Qv\u002F\u002F\u002F\u002F9vWA3BASAIQRBrIgcpAwAhASA1pyILKAIQIgpBMGohDyAKIAooAhhBf3NBAnRB1HlyaigCACEKAkACQANAIAoEQCAPIApBAWtBA3QiCmoiECgCBEHKAUYNAiAQKAIAQf\u002F\u002F\u002Fx9xIQoMAQsLIAlB+AAQzQUiNUKAgICAcINCgICAgOAAUQ3LASAJIAtBygFBBxB3IgpFBEAgCSA1EAwMzAELIDVCIIinQXVPBEAgNaciCyALKAIAQQFqNgIACyAKIDU3AwAMAQsgCygCFCAKaikDACI1QiCIp0F1SQ0AIDWnIgogCigCAEEBajYCAAsgCSA1EIgCIQoCQCABQoCAgIBwWgRAIAGnIg8oAhAiC0EwaiEQIAsgCygCGCAKcUF\u002Fc0ECdGooAgAhCwJAA0AgC0UNASAKIBAgC0EDdGoiC0EEaygCAEcEQCALQQhrKAIAQf\u002F\u002F\u002Fx9xIQsMAQsLIAkgChAQIAlBoBpBABASDMwBCyAJIA8gCkEHEHchCyAJIAoQECALRQ3LASALQoCAgIAwNwMADAELIAkgChAQCyAJIAcpAwAQDCAJIA0pAwAQDAzFAQsgCSAIQQhrIggpAwAQmAEMyAELIAZBBmohDCAGKAABIQcCQAJAAkACQAJAAkAgBi0ABSIKDgUAAQIDBAULIAlBgIABIAcQ5wEaDMwBCyAJIAcQzAUMywELIAkgBxDRAQzKAQsgCUG8jwFBABDDAgzJAQsgCUHE4ABBABASDMgBCyAOIAo2AhAgCUHX6wAgDkEQahA6DMcBCyAGLwABIQogBi8AAyENIBQgBkEFaiIMNgIgQX8hBwJ+IAkgCCAKQQN0ayILQQhrIg8pAwAgCSkDuAEQTQRAIAlCgICAgDAgCgR+IAspAwAFQoCAgIAwC0ECIA1BAWsQhwMMAQsgCSAPKQMAQoCAgIAwQoCAgIAwIAogC0EAENIBCyIBQoCAgIBwg0KAgICA4ABRDcYBA0AgByAKRwRAIAkgCyAHQQN0aikDABAMIAdBAWohBwwBCwsgCCAKQX9zQQN0aiIGIAE3AwAgBkEIaiEHDMIBCyAGQQNqIQwgBi8AASENIAkgDkHgAGogCEEIayIHKQMAEP0DIgpFDcUBAn4gCSAIQRBrIgspAwAgCSkDuAEQTQRAIAlCgICAgDAgDigCYAR+IAopAwAFQoCAgIAwC0ECIA1BAWsQhwMMAQsgCSALKQMAQoCAgIAwIA4oAmAgChAcCyEBIAkgCiAOKAJgEIYDIAFCgICAgHCDQoCAgIDgAFENxQEgCSALKQMAEAwgCSAHKQMAEAwgCyABNwMADMEBCyAIQRBrIgYgCUKAgICAMCAGKQMAIAhBCGsiBykDABDLBTcDAAzAAQsgCSAIQQhrIgcpAwAQ6AEiAUKAgICAcINCgICAgOAAUQ3DASAJIAcpAwAQDCAHIAE3AwAMuQELIAhBCGsiBykDACE1IAkQ0AUiCgR+IAkgChBSBUKAgICAIAshASAJIAoQECABQoCAgIBwg0KAgICA4ABRDcIBIAkgDkGAAWoQtwIiNkKAgICAcINCgICAgOAAUQRAIAkgARAMDMMBCyAOIA4pA4ABNwNgIA4gNTcDeCAOIAE3A3AgDiAOKQOIATcDaCAJQTRBBCAOQeAAahD4AiAJIAEQDCAJIA4pA4ABEAwgCSAOKQOIARAMIAkgBykDABAMIAcgNjcDAAy4AQsgBkEFaiEMIAkoAsgBKAIQIgdBMGohDSAHIAYoAAEiCiAHKAIYcUF\u002Fc0ECdGooAgAhBwJAAkADQCAHRQ0BIA0gB0EDdGoiB0EIayELIAogB0EEaygCAEcEQCALKAIAQf\u002F\u002F\u002Fx9xIQcMAQsLQQEhByALDQELIAkgCSkDwAEgChBuIgdBAEgNwgELIAggB0EAR61CgICAgBCENwMAIAhBCGohBwy9AQsgCkE3ayELIAZBBWohDCAJKALIASINKAIQIgdBMGohDyAHIAYoAAEiCiAHKAIYcUF\u002Fc0ECdGooAgAhBwJAAkADQCAHRQ0BIAogDyAHQQFrQQN0IgdqIhAoAgRHBEAgECgCAEH\u002F\u002F\u002F8fcSEHDAELCyANKAIUIAdqKQMAIjVCgICAgHCDIgFCgICAgMAAUQRAIAkgChDRAQzDAQsgNUIgiKdBdUkNASA1pyIHIAcoAgBBAWo2AgAMAQsgCSAJKQPAASIBIAogASALEBEiNUKAgICAcIMhAQsgAUKAgICA4ABRDcABIAggNTcDACAIQQhqIQcMvAELIAZBBWohDCAJIAYoAAEgCEEIayIHKQMAIApBOWsQygVBAEgNpwEMuwELIAZBBWohDCAGKAABIQogCEEQayIHKAIARQRAIAkgChDAAgy\u002FAQsgCSAKIAhBCGspAwBBAhDKBSIGQQBODboBIAZBHnZBAnEMuwELIAZBBmohDCAJKALAASINKAIQIgpBMGohDyAKIAYoAAEiByAKKAIYcUF\u002Fc0ECdGooAgAhCiAGLAAFIQsCQANAIApFDQEgDyAKQQN0aiIQQQhrIQogByAQQQRrKAIARwRAIAooAgBB\u002F\u002F\u002F\u002FH3EhCgwBCwsgC0EASARAIApFDbQBIAotAANBBHENtAEMtgELIApFDbEBIAtBwABJDbMBIAooAgAiCkGAgIAgcQ2zASAKQYCAgIB8cUGAgICABEYNsgEgCkGAgIDAAXFBgICAwAFGDbMBDLIBCyALQQBODbABDLIBCyAGLAAFIgdBAXFBBnIgB0ECcUEFciAHQQBOIgcbIRAgCUHAAUHIASAHG2ooAgAiCygCECINIAYoAAEiDyANKAIYcUF\u002Fc0ECdGooAgAhCkKAgICAMEKAgICAwAAgBxshASAGQQZqIQwgDUEwaiENAkADQCAKRQ0BIA0gCkEDdGoiCkEIayEHIA8gCkEEaygCAEcEQCAHKAIAQf\u002F\u002F\u002Fx9xIQoMAQsLIAcNswELIAstAAVBAXFFDbIBIAkgCyAPIBAQdyIHRQ28ASAHIAE3AwAMsgELIAZBBmohDCAJKQPAASIBpygCECIHQTBqIQ0gByAGKAABIgsgBygCGHFBf3NBAnRqKAIAIQogBi0ABSEPIAkgASALIAhBCGsiBykDAEKAgICAMEKAgICAMAJ\u002FAkADQCAKRQ0BIA0gCkEDdGoiEEEIayEKIAsgEEEEaygCAEcEQCAKKAIAQf\u002F\u002F\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\u002F\u002F\u002F8fcSEHDAELCyALKAIUIA9qNQIEQiCGQoCAgIDAAFEEQCAJIAoQ0QEMhQELIActAANBCHFFDQMgNUIgiKdBdEsNAQwCCyAJIAkpA8ABIAoQbiIHQQBIDYMBIAdFBEBCgICAgDAhNQwCCyAJKQPAASI1QiCIp0F1SQ0BIDWnIQsLIAsgCygCAEEBajYCAAsgCCA1NwMAIAggCSAKEFI3AwggCEEQaiEHDH0LIAlBgIABIAoQ5wENgAEgCEEQaiEHDHwLIAwgDCgAAGohDCAIIQcgCRB2RQ17DH8LIAwgDC4AAGohDCAIIQcgCRB2RQ16DH4LIAwgDCwAAGohDCAIIQcgCRB2RQ15DH0LIAZBBWohCgJ\u002FIAhBCGsiBykDACIBQv\u002F\u002F\u002F\u002F8\u002FWARAIAGnDAELIAkgARAnCwR\u002FIAogDCgAAGpBBGsFIAoLIQwgCRB2RQ14DGQLIAZBBWohCgJ\u002FIAhBCGsiBykDACIBQv\u002F\u002F\u002F\u002F8\u002FWARAIAGnDAELIAkgARAnCwR\u002FIAoFIAogDCgAAGpBBGsLIQwgCRB2RQ13DGMLIAZBAmohCgJ\u002FIAhBCGsiBykDACIBQv\u002F\u002F\u002F\u002F8\u002FWARAIAGnDAELIAkgARAnCwR\u002FIAogDCwAAGpBAWsFIAoLIQwgCRB2RQ12DGILIAZBAmohCgJ\u002FIAhBCGsiBykDACIBQv\u002F\u002F\u002F\u002F8\u002FWARAIAGnDAELIAkgARAnCwR\u002FIAoFIAogDCwAAGpBAWsLIQwgCRB2RQ11DGELIAggDCAGKAABaiASKAIUa61CgICAgNAAhDcDACAGQQVqIQwgCEEIaiEHDHQLIAYoAAEhKiAIIAYgEigCFGtBBWqtNwMAIAhBCGohByAqIAxqIQwMcwsCQCAIQQhrIgcpAwAiAUL\u002F\u002F\u002F\u002F\u002FD1YNACABpyIKIBIoAhhPDQAgEigCFCAKaiEMDHMLIAlB6s8AQQAQOgx2CyAIQQhrIg8pAwAiNUIgiKciB0EBaiIKQQRNQQBBASAKdEEZcRtFBEAgCSA1EMkFITULAkACQCAJQRgQJCILRQ0AIAlCgICAgCBBERBHIgFCgICAgHCDQoCAgIDgAFEEQCAJKAIQIgdBEGogCyAHKAIEEQAADAELIAtBADYCFCALIDU3AwAgC0IANwMIIAtBADsBECABpyALNgIgIAdBfnFBAkYNaQJAIDWnIg0tAAVBCHFFDQBBACEHIA0oAhAiCigCICIQQQAgEEEAShshECAKQTBqIQoDQCAHIBBGDQMgCi0AA0EQcQ0BIApBCGohCiAHQQFqIQcMAAsACyAJIA5B4ABqIA5BgAFqIA1BIRB9RQ1aIAEhNQsgCSA1EAwgD0KAgICA4AA3AwAMdgsgC0EBOgARIA1BKGohBgxmC0KBgICAECE3QoCAgIAwIQECQCAIQQhrKQMAIjZCgICAgHBUDQAgNqciDS8BBkERRw0AIA0oAiAhBwJAA0AgBygCCCIKIAcoAgxPBEAgBykDACI1QoCAgIAQhEKAgICAcINCgICAgDBRDQMgByAJIActABAEfiA1BSANKAIgIgspAwAiNUIgiKdBdU8EQCA1pyIKIAooAgBBAWo2AgALAkADQCAJIDUQwgIiNUKAgICAcIMiOUKAgICAIFENBSA5QoCAgIDgAFENeyAJIA5B4ABqIgogDkGAAWoiDyA1p0EREH1FBEAgCSAOKAJgIA4oAoABIhAQWyAQBEAgCSA1EAwgCy0AEQRAIAkgCiAPIAsoAgBBIRB9DX4gC0EAOgARIAsgDigCYDYCFCALIA4oAoABNgIMC0EAIQoDQCAKIAsoAgxPDQQgCkEDdCEPIApBAWohCiAJIDYgDyALKAIUaigCBEKAgICAIEEEEBVBAE4NAAsMfQsgCRB2RQ0BCwsgCSA1EAwMegsgB0EBOgAQIAcpAwALEMICIjU3AwAgNUKAgICAcIMiNUKAgICAIFENAyA1QoCAgIDgAFENeCAJEHYNeCAJIA5BnAFqIA5BmAFqIAcoAgBBIRB9DXggCSAHKAIUIAcoAgwQWyAHIA4oApwBNgIUIA4oApgBIQogB0EANgIIIAcgCjYCDAwBCwJAIActABEEQCAHIApBAWo2AgggCkGAgICAeHIhCwwBCyAHKAIUIApBA3RqIgsoAgAhKyALKAIEIQsgByAKQQFqNgIIIActABAEQCAJQQAgDSALEEMiCkEASA15IAoNAiAJIDYgC0KAgICAIEEEEBVBAEgNeQsgK0UNAQsgCUEAIAcoAgAgCxBDIgpBAEgNdyAKRQ0AC0KAgICAECE3IAkgCxBSIQEMAQsgCSA1EAwLIAggNzcDCCAIIAE3AwAgCEEQaiEHDHALIAkgCEEAEIUDDXMgCEKAgICA0AA3AwggCEEQaiEHDG8LIAYtAAEhByAOQQE2AmAgBkECaiEMQoGAgIAQIQEgCEF9IAdrQQN0aiIHKQMAIjZCgICAgHCDQoCAgIAwUQ1iIAkgNiAHKQMIIA5B4ABqEJEBIjVCgICAgHCDQoCAgIDgAFEEQEF\u002FIQogDkF\u002FNgJgDGILIA4oAmAiCg1hQoCAgIAQIQEMYgsgCSAIQQEQhQMNcSAIQoCAgIDQADcDCCAIQRBqIQcMbQsgCEEIayIHKQMAIgFC\u002F\u002F\u002F\u002F\u002F29YBEAgCUH6HkEAEBIMcQsgCSABIA5B4ABqEMgFIjVCgICAgHCDQoCAgIDgAFENcCAJIAEQDCAHIDU3AwAgCCAOKAJgQQBHrUKAgICAEIQ3AwAgCEEIaiEHDGwLIAhBCGspAwBC\u002F\u002F\u002F\u002F\u002F29WDWUgCUH6HkEAEBIMbwsgCSAIQRBrIgopAwAQDCAIQRhrIgcpAwAiAUKAgICAcINCgICAgDBRDWogCSABQQAQkAEEQCAKIQgMbwsgCSAHKQMAEAwMagsgCEEIayIHKQMAIQEDQAJAIAcgF00NACAHQQhrIggpAwAiNUKAgICAcINCgICAgNAAUQ0AIAkgNRAMIAghBwwBCwsgByAXRgRAIAlBtcgAQQAQOiAJIAEQDCAXIQgMbgsgB0EIayABNwMADGkLIAkgCEEYaykDACAIQSBrKQMAQQEgCEEIayIHEBwiAUKAgICAcINCgICAgOAAUQ1sIAkgBykDABAMIAcgATcDAAxiCyAGQQJqIQwgCCAJIAhBIGsiBykDACIBQRdBBiAGLQABIgpBAXEbIAFBABARIgFCgICAgHCDIjVCgICAgCBRIDVCgICAgDBRcgR+QoGAgIAQBSA1QoCAgIDgAFENbCAHKQMAITUCfiAKQQJxBEAgCSABIDVBAEEAEDYMAQsgCSABIDVBASAIQQhrEDYLIgFCgICAgHCDQoCAgIDgAFENbCAJIAhBCGsiBikDABAMIAYgATcDAEKAgICAEAs3AwAgCEEIaiEHDGcLAn8gCEEIayIGKQMAIgFC\u002F\u002F\u002F\u002F\u002Fz9YBEAgAadBAEcMAQsgCSABECcLIQcgBiAHRa1CgICAgBCENwMADGALIAZBBWohDCAJIAhBCGsiBykDACIBIAYoAAEgAUEAEBEiAUKAgICAcINCgICAgOAAUQ1pIAkgBykDABAMIAcgATcDAAxfCyAGQQVqIQwgCSAIQQhrKQMAIgEgBigAASABQQAQESIBQoCAgIBwg0KAgICA4ABRDWggCCABNwMAIAhBCGohBwxkCyAJIAhBEGsiBykDACIBIAYoAAEgCEEIaykDACABQYCAAhDQASEsIAkgBykDABAMIAZBBWohDCAsQQBODWMMTwsgBkEFaiEMIAkgBigAARDNBSIBQoCAgIBwg0KAgICA4ABRDWYgCCABNwMAIAhBCGohBwxiCyAIQQhrIQcCQCAIQRBrIgopAwAiAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAJECJCgICAgOAAITUMAQsgBykDACI1QoCAgIBwg0KAgICAgH9SBEAgCRD8A0KAgICA4AAhNQwBCyAJIDUQiAIhCCABpyINKAIQIgtBMGohDyALIAggCygCGHFBf3NBAnRqKAIAIQsCQANAIAsEQCAPIAtBAWtBA3QiC2oiECgCBCAIRg0CIBAoAgBB\u002F\u002F\u002F\u002FH3EhCwwBCwsgCSAIEMcFQoCAgIDgACE1DAELIA0oAhQgC2opAwAiNUIgiKdBdUkNACA1pyIIIAgoAgBBAWo2AgALIAkgBykDABAMIAkgCikDABAMIAogNTcDACA1QoCAgIBwg0KAgICA4ABSDWEMTQsgCEEQaykDACEBIAhBCGshCgJAAkAgCEEYayIHKQMAIjVC\u002F\u002F\u002F\u002F\u002F29YBEAgCRAiDAELIAopAwAiNkKAgICAcINCgICAgIB\u002FUgRAIAkQ\u002FAMMAQsgCSA2EIgCIQggNaciDSgCECILQTBqIQ8gCyAIIAsoAhhxQX9zQQJ0aigCACELA0AgCwRAIA8gC0EBa0EDdCILaiIQKAIEIAhGDQMgECgCAEH\u002F\u002F\u002F8fcSELDAELCyAJIAgQxwULIAkgARAMIAkgBykDABAMIAkgCikDABAMDE0LIAkgDSgCFCALaiABEB0gCSAHKQMAEAwgCSAKKQMAEAwMYAsgCEEIaykDACEBIAhBEGshBwJAAkAgCEEYaykDACI1Qv\u002F\u002F\u002F\u002F9vWARAIAkQIgwBCyAHKQMAIjZCgICAgHCDQoCAgICAf1IEQCAJEPwDDAELIAkgNhCIAiEIIDWnIgsoAhAiCkEwaiENIAogCCAKKAIYcUF\u002Fc0ECdGooAgAhCgJAA0AgCkUNASAIIA0gCkEDdGoiCkEEaygCAEcEQCAKQQhrKAIAQf\u002F\u002F\u002Fx9xIQoMAQsLIAkgCEH7IBC1AQwBCyAJIAsgCEEHEHciCA0BCyAJIAEQDCAJIAcpAwAQDAxMCyAIIAE3AwAgCSAHKQMAEAwMXwsgBkEFaiEMIAkgCEEQaykDACAGKAABIAhBCGsiBykDAEGHgAEQFUEATg1eDEoLIAZBBWohDCAIIQcgCSAIQQhrKQMAIAYoAAEQxgVBAE4NXQxhCyAIIQcgCSAIQQhrKQMAIAhBEGspAwAQxQVBAE4NXAxgCyAIQQhrIgcpAwAiAUL\u002F\u002F\u002F\u002F\u002Fb1ggAUKAgICAcINCgICAgCBScUUEQCAJIAhBEGspAwAgAUEBEIkCQQBIDWALIAkgARAMDFsLIAkgCEEIaykDACAIQRBrKQMAEPsDDFQLIAgCfyAKQdUARgRAQX0gCSAIQRBrKQMAEDAiBw0BGgxfCyAGQQVqIQwgBigAASEHQX4LQQN0aiEtQoCAgIAwITZBg84BIQYgCEEIayINKQMAIgEhOEKAgICAMCE3AkACQAJAIAwtAAAiD0EDcQ4CAgABC0KAgICAMCE4QYGaASEGIAEhNwwBC0KAgICAMCE4QYGqASEGIAEhNgsgLSkDACE5QeKRASELIAkgBxDEBSE1AkAgBkGAEHFFBEBB3ZEBIQsgBkGAIHFFDQELIAkgCyA1QeyWARCyASE1CwJ\u002FQX8gNUKAgICAcINCgICAgOAAUQ0AGkF\u002FIAkgAUE3IDVBARAVQQBIDQAaIAkgASA5EPsDIAkgOSAHIDggNyA2IAYgD0EEcXIQagshBiAJIA0pAwAQDCAMQQFqIQwgCCAKQdUARgR\u002FIAkgBxAQIAkgCEEQaykDABAMQX4FQX8LQQN0aiEHIAZBAE4NWSAGQR52QQJxDFoLIAZBBmohDCAIQQhrIg0pAwAhNyAIQRBrIQsgBigAASEPAkACQCAGLQAFQQFxBEBCgICAgCAhOCALKQMAIjZCgICAgHCDQoCAgIAgUQRAIAkpAzAiNkIgiKdBdEsNAgwDC0KAgICAMCE5QfwrIQcgNkKAgICAcFQNSyA2py0ABUEQcUUNSyAJIDZBPCA2QQAQESI4QoCAgIBwgyIBQoCAgIAgUQ0CIAFCgICAgOAAUQ1NIDhCgICAgHBaDQJB1sEAIQcMTAsgCSgCKCkDCCI4QiCIp0F1TwRAIDinIgcgBygCAEEBajYCAAsgCSkDMCI2QiCIp0F1SQ0BCyA2pyIHIAcoAgBBAWo2AgALQoCAgIDgACE5IAkgOBBBIgFCgICAgHCDQoCAgIDgAFENSiA3pyIHLQARQTBxDUBCgICAgOAAITUgCSA2QQ0QRyI5QoCAgIBwg0KAgICA4ABRDUdCgICAgDAhNyAJIDkgByATIBQQwwUiNUKAgICAcINCgICAgOAAUQ1HIAkgNSABEPsDIDVCgICAgHBaBEAgNaciECAQLQAFQRByOgAFCyAJIDVBMCAHMwEsQQEQFRoCQCAKQdcARgRAIAkgNSAIQRhrKQMAEMUFQQBIDUkMAQsgCSA1IA8QxgVBAEgNSAsgNUIgiKdBdU8EQCA1pyIHIAcoAgBBAWo2AgALIAkgAUE9IDVBg4ABEBVBAEgNRyABQiCIp0F1TwRAIAGnIgcgBygCAEEBajYCAAsgCSA1QTwgAUGAgAEQFUEASA1HIAkgOBAMIAkgNhAMIAsgNTcDACANIAE3AwAMUgsgCSAIQRBrIgopAwAgCEEIayIHKQMAEE4hASAJIAopAwAQDCAKIAE3AwAgAUKAgICAcINCgICAgOAAUg1XDEMLIAhBCGsiByAJIAhBEGspAwAgBykDABBOIgE3AwAgCCEHIAFCgICAgHCDQoCAgIDgAFINVgxaCyAIQQhrKQMAIQEgCEEQaykDACI1QoCAgIBwg0KAgICAMFEEQCAJIAEQMCIHRQ1aIAkgBxDAAiAJIAcQEAxaCyABQiCIp0F1TwRAIAGnIgcgBygCAEEBajYCAAsgCSA1IAEQTiIBQoCAgIBwg0KAgICA4ABRDVkgCCABNwMAIAhBCGohBwxVCyAJIAhBCGsiDSkDABAwIgpFDVggCSAIQRBrIgcpAwAgCiAIQRhrIgspAwBBABARIQEgCSAKEBAgAUKAgICAcINCgICAgOAAUQ1YIAkgDSkDABAMIAkgBykDABAMIAkgCykDABAMIAsgATcDAAxUCyAJIAhBGGsiBykDACAIQRBrKQMAIAhBCGspAwBBgIACEM8BIS4gCSAHKQMAEAwgLkEATg1TDD8LIAkoAhAoAowBIQoCfwJAIAhBGGsiBykDACI1QoCAgIBwg0KAgICAMFEEQAJAIApFDQAgCi0AKEEBcUUNACAJIAhBEGspAwAQMCIHRQ1aIAkgBxDAAiAJIAcQEAxaCyAJKQPAASI1QiCIp0F1TwRAIDWnIgYgBigCAEEBajYCAAsgByA1NwMADAELIApFDQBBgIAGIAooAihBAXENARoLQYCAAgshBiAJIDUgCEEQaykDACAIQQhrKQMAIAYQzwEhBiAJIAcpAwAQDCAGQQBODVIgBkEedkECcQxTCyAIQRhrIgopAwBC\u002F\u002F\u002F\u002F\u002F29YDU0gCSAIQRBrIg0pAwAQMCILRQ1VIAkgCikDACALIAhBCGspAwAgCEEgayIHKQMAQYCAAhDQASEGIAkgCxAQIAkgBykDABAMIAkgCikDABAMIAkgDSkDABAMIAZBAE4NUSAGQR52QQJxDFILIAhBGGspAwAhNSAIQRBrKQMAIgFCIIinQXVPBEAgAaciByAHKAIAQQFqNgIACyAJIDUgASAIQQhrIgcpAwBBh4ABEJQBQQBODVAMPAsgCEEQayINKQMAIjZCgICAgBBaBEAgCUH04QBBABA6DFQLIAkgCEEIayIHKQMAIgFBzAEgAUEAEBEiAUKAgICAcINCgICAgOAAUQ1TIAFBNUEBEIIEIQsgCSABEAwgCSAHKQMAQQAQywEiAUKAgICAcINCgICAgOAAUQ1TIAkgAUHrACABQQAQESI1QoCAgIBwg0KAgICA4ABRBEAgCSABEAwMVAsgNqchCgJAAkAgC0UNACA1QTZBABCCBEUNACAHKQMAIjYgDkHgAGogDkGAAWoQjwFFDQAgCSAOQZwBaiA2EMoBDT8gDigCnAEgDigCgAFHDQAgCEEYayEPQQAhCwNAIAsgDigCgAFPDQIgDykDACE3IA4oAmAgC0EDdGopAwAiNkIgiKdBdU8EQCA2pyIQIBAoAgBBAWo2AgALIAkgNyAKIDZBBxCTASEvIAtBAWohCyAKQQFqIQogL0EATg0ACww\u002FCyAIQRhrIQsDQCAJIAEgNSAOQZwBahCRASI2QoCAgIBwg0KAgICA4ABRDT8gDigCnAENASAJIAspAwAgCiA2QQcQkwFBAEgNPyAKQQFqIQoMAAsACyANIAqtNwMAIAkgARAMIAkgNRAMIAkgBykDABAMDE8LIAZBAmohDCAIIQcgCSAIIAYtAAEiCkF\u002FcyILQQN0QWByaikDACAIIAtBAXRBQHJBeHFqKQMAIAggCkEFdkF\u002Fc0EDdGopAwBBABDBBUUNTgxSCwJAIAhBCGsiBykDACIBQiCIpyILIAhBEGsiCikDACI1QiCIpyINckUEQCABxCA1xHwiAUKAgICACHxCgICAgBBUDQEMPAsgDUEHa0FtSyALQQdrQW1Lcg07IApCgICAgMB+IDVCgICAgMCBgPz\u002FAHy\u002FIAFCgICAgMCBgPz\u002FAHy\u002FoL0iAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGzcDAAxOCyAKIAFC\u002F\u002F\u002F\u002F\u002Fw+DNwMADE0LIAZBAmohDAJAIAhBCGsiBykDACI1IBEgBi0AAUEDdGoiCCkDACIBhEL\u002F\u002F\u002F\u002F\u002FD1gEQCA1xCABxHwiNUKAgICACHxC\u002F\u002F\u002F\u002F\u002Fw9WDQEgCCA1Qv\u002F\u002F\u002F\u002F8PgzcDAAxOCyABQoCAgIBwg0KAgICAkH9SDQAgCSA1QQIQkgEiNUKAgICAcINCgICAgOAAUQ05IAgpAwAiAUIgiKdBdU8EQCABpyIKIAooAgBBAWo2AgALIAkgASA1ELYCIgFCgICAgHCDQoCAgIDgAFENOSAJIAggARAdDE0LIAFCIIinQXVPBEAgAaciCiAKKAIAQQFqNgIACyAOIAE3AyAgDiAHKQMANwMoIAkgJxC\u002FBQ04IAkgCCAOKQMgEB0MTAsgCEEIayIHKQMAIgFCIIinIg0gCEEQayILKQMAIjVCIIinIg9yRQRAIDXEIAHEfSIBQoCAgIAIfEKAgICAEFoNBCALIAFC\u002F\u002F\u002F\u002F\u002Fw+DNwMADEwLIA9BB2tBbUsgDUEHa0FtS3INAyALQoCAgIDAfiA1QoCAgIDAgYD8\u002FwB8vyABQoCAgIDAgYD8\u002FwB8v6G9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhs3AwAMSwsCQAJ8IAhBCGsiBykDACIBQiCIpyINIAhBEGsiCykDACI1QiCIpyIPckUEQCABxCA1xH4iNkKAgICACHxCgICAgBBaBEAgNrkMAgsgNlBFIAEgNYRCgICAgAiDUHINAkQAAAAAAAAAgAwBCyAPQQdrQW1LIA1BB2tBbUtyDQQgNUKAgICAwIGA\u002FP8AfL8gAUKAgICAwIGA\u002FP8AfL+iCyE8IAtCgICAgMB+IDy9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhs3AwAMSwsgCyA2Qv\u002F\u002F\u002F\u002F8PgzcDAAxKCyAIQQhrIgcpAwAiASAIQRBrIgspAwAiNYRC\u002F\u002F\u002F\u002F\u002Fw9WDQEgFC0AKEEEcQ0BIAsCfiA1p7cgAae3oyI8vSIBAn8gPJlEAAAAAAAA4EFjBEAgPKoMAQtBgICAgHgLIga3vVEEQCAGrQwBC0KAgICAwH4gAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGws3AwAMSQsgCEEIayIHKQMAIgEgCEEQayILKQMAIjWEQv\u002F\u002F\u002F\u002F8PVg0AIDWnIg1BAEgNACABpyIPQQBMDQAgCyANIA9wrTcDAAxIC0IAITYjAEEQayIHJAACfwJAAkACQAJ8AkACQAJAIAhBEGsiCykDACI1QiCIp0EHa0FtSyAIQQhrIg0pAwAiAUIgiKdBB2tBbUtyRQRAIAcgAUKAgICAwIGA\u002FP8AfDcDACAHIDVCgICAgMCBgPz\u002FAHw3AwgMAQsgCSA1EGUiNUKAgICAcINCgICAgOAAUQ0FIAkgARBlIgFCgICAgHCDQoCAgIDgAFEEQCA1IQEMBgtBByABQiCIpyIPIA9BB2tBbkkbIg9BByA1QiCIpyIQIBBBB2tBbkkbIhByRQRAIAGnIQ0gNachDyALAn4CQAJAAkACQAJAAkACQAJAIApBmwFrDgYAAQILBAMLCyABxCA1xH4iAUIAUg0EIA0gD3JBAE4NBSALQoCAgIDA\u002Fv8DNwMADA0LIAtCgICAgMB+IA+3IA23o70iAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGzcDAAwMCyANQQBKIA9BAE5xRQRAIAsCfiAPtyANtxCZBCI8vSIBAn8gPJlEAAAAAAAA4EFjBEAgPKoMAQtBgICAgHgLIgq3vVEEQCAKrQwBC0KAgICAwH4gAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGws3AwAMDAsgDyANcK0hAQwCCyAPtyE8IAsCfgJ8IA23Ij29QoCAgICAgID4\u002FwCDQoCAgICAgID4\u002FwBRBEBEAAAAAAAA+H8gPJlEAAAAAAAA8D9hDQEaCyA8ID0QowMLIjy9IgECfyA8mUQAAAAAAADgQWMEQCA8qgwBC0GAgICAeAsiCre9UQRAIAqtDAELQoCAgIDAfiABQoCAgIDAgYD8\u002FwB9IAFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbCzcDAAwKCyA1xCABxH0hAQsgAUKAgICACHxC\u002F\u002F\u002F\u002F\u002Fw9WDQEgASE2CyA2Qv\u002F\u002F\u002F\u002F8PgwwBC0KAgICAwH4gAbm9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLNwMADAULIBBBdkcgD0F2R3FFBEAgCSAKIAsgNSABIAkoAhAoAqwCESMADQcMBQsgCSAHQQhqIDUQbQ0FIAkgByABEG0NBgsCQAJAAkACQCAKQZsBaw4GAAECBAUDBAsgBysDCCAHKwMAogwFCyAHKwMIIAcrAwCjDAQLIAcrAwggBysDABCZBAwDCyAHKwMIITwgBysDACI9vUKAgICAgICA+P8Ag0KAgICAgICA+P8AUQRARAAAAAAAAPh\u002FIDyZRAAAAAAAAPA\u002FYQ0DGgsgPCA9EKMDDAILEAEACyAHKwMIIAcrAwChCyE8IAtCgICAgMB+IDy9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhs3AwALQQAMAgsgCSABEAwLIAtCgICAgDA3AwAgDUKAgICAMDcDAEF\u002FCyEwIAdBEGokACAwDUsgCEEIayEHDEcLIAhBBGsoAgAiB0UgB0EHa0FuSXINQCAIIQcgCSAIQY4BEOEBRQ1GDEoLAkACfCAIQQhrIgcpAwAiAUIgiKciCkUEQEQAAAAAAAAAgCABpyIGRQ0BGkQAAAAAAADgQSAGQYCAgIB4Rg0BGiAHQgAgAX1C\u002F\u002F\u002F\u002F\u002Fw+DNwMADEILIApBB2tBbUsNASABQoCAgIDA\u002Fv8Dfb8LITwgB0KAgICAwH4gPL0iAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGzcDAAxACyAIIQcgCSAIQY0BEOEBRQ1FDEkLIAhBCGsiBykDACIBQv\u002F\u002F\u002F\u002F8PViABQv\u002F\u002F\u002F\u002F8HUXJFBEAgByABQgF8Qv\u002F\u002F\u002F\u002F8PgzcDAAw\u002FCyAIIQcgCSAIQZABEOEBRQ1EDEgLIAhBCGsiBykDACIBQv\u002F\u002F\u002F\u002F8PViABQoCAgIAIUXJFBEAgByABQgF9Qv\u002F\u002F\u002F\u002F8PgzcDAAw+CyAIIQcgCSAIQY8BEOEBRQ1DDEcLIAkgCEEIayIHKQMAEGUiAUKAgICAcINCgICAgOAAUQRAIAdCgICAgDA3AwAMRwsgByABNwMAIAFCIIinQXVPBEAgAaciByAHKAIAQQFqNgIACyAIIAE3AwAgCSAIQQhqIgcgCkECaxDhAUUNQgxGCyAGQQJqIQwgESAGLQABQQN0aiIHKQMAIgFC\u002F\u002F\u002F\u002F\u002Fw9WIAFC\u002F\u002F\u002F\u002F\u002FwdRckUEQCAHIAFCAXxC\u002F\u002F\u002F\u002F\u002Fw+DNwMADDwLIAFCIIinQXVPBEAgAaciCiAKKAIAQQFqNgIACyAOIAE3A2AgCSAiQZABEOEBDUUgCSAHIA4pA2AQHQw7CyAGQQJqIQwgESAGLQABQQN0aiIHKQMAIgFC\u002F\u002F\u002F\u002F\u002Fw9WIAFCgICAgAhRckUEQCAHIAFCAX1C\u002F\u002F\u002F\u002F\u002Fw+DNwMADDsLIAFCIIinQXVPBEAgAaciCiAKKAIAQQFqNgIACyAOIAE3A2AgCSAiQY8BEOEBDUQgCSAHIA4pA2AQHQw6CyAIQQhrIgcpAwAiAUL\u002F\u002F\u002F\u002F\u002FD1gEQCAHIAFC\u002F\u002F\u002F\u002F\u002Fw+FNwMADDoLIAghByMAQRBrIgokAAJ\u002FAkACQCAJIAhBCGsiCykDABBlIgFCgICAgHCDIjVCgICAgOAAUQ0AIDVCgICAgOB+UQRAIAkgC0GWASABIAkoAhAoAqgCER8ADQEMAgsgCSAKQQxqIAEQlQENACALIAo1AgxC\u002F\u002F\u002F\u002F\u002Fw+FNwMADAELIAtCgICAgDA3AwBBfwwBC0EACyExIApBEGokACAxRQ0\u002FDEMLIAhBCGsiBykDACIBIAhBEGsiCikDACI1hEL\u002F\u002F\u002F\u002F\u002FD1gEQCAKIDWnIAGndK03AwAMPwsgCSAIQaEBELUCRQ0+DEILIAhBCGsiBykDACIBIAhBEGsiCikDACI1hEL\u002F\u002F\u002F\u002F\u002FD1gEQCAKAn4gNacgAad2IgZBAE4EQCAGrQwBC0KAgICAwH4gBri9IgFCgICAgMCBgPz\u002FAH0gAUKAgICAgICA+P8AVhsLNwMADD4LIwBBEGsiCiQAIAhBCGsiDSkDACEBAn8CQAJAIAkgCEEQayILKQMAEGUiNUKAgICAcIMiNkKAgICA4ABRDQAgCSABEGUiAUKAgICAcIMiN0KAgICA4ABRBEAgNSEBDAELIDZCgICAgOB+UiA3QoCAgIDgflJxDQEgCUGlgAFBABASIAkgNRAMCyAJIAEQDCALQoCAgIAwNwMAIA1CgICAgDA3AwBBfwwBCyAJIApBDGogNRCVARogCSAKQQhqIAEQlQEaIAsCfiAKKAIMIAooAgh2IgtBAE4EQCALrQwBC0KAgICAwH4gC7i9IgFCgICAgMCBgPz\u002FAH0gAUKAgICAgICA+P8AVhsLNwMAQQALITIgCkEQaiQAIDJFDT0MQQsgCEEIayIHKQMAIgEgCEEQayIKKQMAIjWEQv\u002F\u002F\u002F\u002F8PWARAIAogNacgAad1rTcDAAw9CyAJIAhBogEQtQJFDTwMQAsgCEEIayIHKQMAIgEgCEEQayIKKQMAIjWEQv\u002F\u002F\u002F\u002F8PWARAIAogASA1gzcDAAw8CyAJIAhBrgEQtQJFDTsMPwsgCEEIayIHKQMAIAhBEGsiCikDAIQiAUL\u002F\u002F\u002F\u002F\u002FD1gEQCAKIAE3AwAMOwsgCSAIQbABELUCRQ06DD4LIAhBCGsiBykDACIBIAhBEGsiCikDACI1hEL\u002F\u002F\u002F\u002F\u002FD1gEQCAKIAEgNYU3AwAMOgsgCSAIQa8BELUCRQ05DD0LIAhBCGsiBykDACIBIAhBEGsiCikDACI1hEL\u002F\u002F\u002F\u002F\u002FD1gEQCAKIDWnIAGnSK1CgICAgBCENwMADDkLIAkgCEGkARCEA0UNOAw8CyAIQQhrIgcpAwAiASAIQRBrIgopAwAiNYRC\u002F\u002F\u002F\u002F\u002Fw9YBEAgCiA1pyABp0ytQoCAgIAQhDcDAAw4CyAJIAhBpQEQhANFDTcMOwsgCEEIayIHKQMAIgEgCEEQayIKKQMAIjWEQv\u002F\u002F\u002F\u002F8PWARAIAogNacgAadKrUKAgICAEIQ3AwAMNwsgCSAIQaYBEIQDRQ02DDoLIAhBCGsiBykDACIBIAhBEGsiCikDACI1hEL\u002F\u002F\u002F\u002F\u002FD1gEQCAKIDWnIAGnTq1CgICAgBCENwMADDYLIAkgCEGnARCEA0UNNQw5CyAIQQhrIgcpAwAiASAIQRBrIgopAwAiNYRC\u002F\u002F\u002F\u002F\u002Fw9YBEAgCiA1pyABp0atQoCAgIAQhDcDAAw1CyAJIAhBABC+BUUNNAw4CyAIQQhrIgcpAwAiASAIQRBrIgopAwAiNYRC\u002F\u002F\u002F\u002F\u002Fw9YBEAgCiA1pyABp0etQoCAgIAQhDcDAAw0CyAJIAhBARC+BUUNMww3CyAIQQhrIgcpAwAiASAIQRBrIgYpAwAiNYRC\u002F\u002F\u002F\u002F\u002Fw9YBEAgBiA1pyABp0atQoCAgIAQhDcDAAwzCyAJIAhBABC9BQwyCyAIQQhrIgcpAwAiASAIQRBrIgYpAwAiNYRC\u002F\u002F\u002F\u002F\u002Fw9YBEAgBiA1pyABp0etQoCAgIAQhDcDAAwyCyAJIAhBARC9BQwxCyAIQQhrIgcpAwAiAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAJQZ\u002FjAEEAEBIMNQsgCSAIQRBrIg0pAwAiNRAwIgpFDTQgCSABIAoQbiELIAkgChAQIAtBAEgNNCAJIDUQDCAJIAEQDCANIAtBAEetQoCAgIAQhDcDAAwwCyAIQRBrIg0pAwAiAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAJQZ\u002FjAEEAEBIMNAsgCEEIayIHKQMAIjVCgICAgHBaBEAgCSABIDUQzgUiC0EASA00DBsLIAkgNRAwIgpFDTMgAacoAhAiBkEwaiELIAYgBigCGCAKcUF\u002Fc0ECdGooAgAhCANAIAhFBEBBACEIDBsLIAsgCEEDdGoiBkEIayEIIAZBBGsoAgAgCkYNGiAIKAIAQf\u002F\u002F\u002Fx9xIQgMAAsACyAJIAhBEGsiCikDACIBIAhBCGsiBykDACI1EOIFIgtBAEgNMiAJIAEQDCAJIDUQDCAKIAtBAEetQoCAgIAQhDcDAAwuCyAJIAhBCGsiBikDACIBEPoDIQcgCSABEAwgBiAJIAcQKTcDAAwnCyAIQRBrIg0pAwAhASAJIAhBCGsiBykDACI1EDAiCkUNMCAJIAEgCkGAgAIQzQEhCyAJIAoQECALQQBIDTAgCSABEAwgCSA1EAwgDSALQQBHrUKAgICAEIQ3AwAMLAsgBkEFaiEMIAkgCSkDwAEgBigAAUEAEM0BIgdBAEgNLyAIIAdBAEetQoCAgIAQhDcDACAIQQhqIQcMKwsgCEEIayIHKQMAIgFC\u002F\u002F\u002F\u002F\u002F29WDSQgCSABECAiAUKAgICAcINCgICAgOAAUQ0uIAkgBykDABAMIAcgATcDAAwkCyAIQQhrIgcpAwAiAUIgiKdBCGoiCkEITUEAQQEgCnRBgwJxGw0jIAkgARCJBCIBQoCAgIBwg0KAgICA4ABRDS0gCSAHKQMAEAwgByABNwMADCMLIAhBEGspAwBCgICAgBCEQoCAgIBwg0KAgICAMFEEQCAJQfIJQQAQEgwtCyAIQQhrIgcpAwAiAUIgiKdBCGoiCkEITUEAQQEgCnRBgwJxGw0iIAkgARCJBCIBQoCAgIBwg0KAgICA4ABRDSwgCSAHKQMAEAwgByABNwMADCILIAZBCmohDCAGLQAJIQsgBigABSEPIAkgCEEIayIHKQMAIgEgBigAASINEG4iEEEASA0rAkAgEEUNACALBEBBACELIAkgAUHWASABQQAQESI1QoCAgIBwg0KAgICA4ABRDS0gNUKAgICAcFoEQCAJIAkgNSANIDVBABARECchCwsgCSA1EAwgC0EASA0tIAsNAQsCQAJAAkACQAJAAkACQCAKQfQAaw4GAAECAwQFBgsgCSABIA0gAUEAEBEiAUKAgICAcINCgICAgOAAUQ0yIAkgByABEB0MBQsgCSABIA0gCEEQayIIKQMAIAFBgIACENABITMgCSAHKQMAEAwgM0EATg0EDDELIAkgASANQQAQzQEiCkEASA0wIAkgBykDABAMIAcgCkEAR61CgICAgBCENwMADAMLIAggCSANEFI3AwAgCEEIaiEIDAILIAkgASANIAFBABARIgFCgICAgHCDQoCAgIDgAFENLiAIIAE3AwAgCEEIaiEIDAELIAkgASANIAFBABARIgFCgICAgHCDQoCAgIDgAFENLSAJIAcpAwAQDCAHQoCAgIAwNwMAIAggATcDACAIQQhqIQgLIAwgD2pBBWshDAwiCyAJIAcpAwAQDAwnCyAIQQhrKQMAIjVCgICAgHCDQoCAgIAwUQ0PDAULIAhBCGspAwAiNUKAgICAcINCgICAgCBRDQ4MBAsgCSAIQQhrKQMAIjUQ+gNBxgBGDQEMAwsgCSAIQQhrKQMAIjUQ+gNBG0cNAgsgCSA1EAwMCwsgCEEIaykDACI1QoCAgIBgg0KAgICAIFENCgsgCSA1EAwgCEEIa0KAgICAEDcDAAwaCyASKAIUIQcgDiAKNgIEIA4gB0F\u002FcyAMajYCACAJQYUQIA4QOgwjCyAGQQNqIQwMGAtCAyE1DCMLQgAhNQwiC0IBITUMIQtCAiE1DCALIAhBCGsiCCkDACE1DCALIAsgDigCYDYCFCAOQYABaiEGDA0LQaj2AEGo7ABBgfsAQasiEAAACyAIQQhrQoGAgIAQNwMADBALIAkgChAQIAhBAEchCwsgCSABEAwgCSA1EAwgDSALQQBHrUKAgICAEIQ3AwAMFAsgByEIDBcLIAkgCBC\u002FBUUNEgwWCyAJIAFBARCQARogCSABEAwgCSA1EAwMFQsgASE5DAILQoCAgIAwITgLIAkgB0EAEBILIAkgNhAMIAkgOBAMIAkgNxAMIAkgORAMIAkgNRAMIAtCgICAgDA3AwAgDUKAgICAMDcDAAwRCyAJIAcpAwAQDCAHQoCAgIAwNwMAIApBAEgNECAJIDUQDEKAgICAMCE1CyAIIAE3AwggCCA1NwMAIAhBEGohBwwLCyALIAYoAgA2AgwLIA8gATcDAAwDCyANLQAFQQFxDQELIAkgB0GDjwEQtQEMCwsgCSgCyAEoAhAiCkEwaiELIAogCigCGCAHcUF\u002Fc0ECdGooAgAhCgNAIApFDQEgCyAKQQN0aiINQQhrIQogByANQQRrKAIARwRAIAooAgBB\u002F\u002F\u002F\u002FH3EhCgwBCwsgCg0BCyAIIQcMBQsgCSAHEMwFDAgLIAkQIgwHCyAJIAEQDAsgCEKAgICA4AA3AwAgCEEIaiEIDAULIAsgBDYCKCALIAo2AiQgCSkDqAEiNUIgiKdBdU8EQCA1pyIGIAYoAgBBAWo2AgALIAkgAUHMASA1QQMQFRogCSABQc8AQoCAgIAwIAkpA7ABIjUgNUGAMBBqGiAIIAE3AwAgCEEIaiEHC0EACyE0IAchCCAMIQYgNEUNAQsLIAchCAtBASEHDAULAkAgFikDgAEiNUKAgICAcFQNACA1pyIGLwEGQQNHDQAgBigCECIGQTBqIQcgBiAGKAIYQX9zQQJ0QaR+cmooAgAhBgJAA0AgBkUNASAHIAZBA3RqIgpBCGshBiAKQQRrKAIAQTZHBEAgBigCAEH\u002F\u002F\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\u002FAU0EQCAAQXhxQezeBGohAQJ\u002FQcTeBCgCACIEQQEgAEEDdnQiAHFFBEBBxN4EIAAgBHI2AgAgAQwBCyABKAIICyEAIAEgAzYCCCAAIAM2AgwgAyABNgIMIAMgADYCCA8LQR8hAiAAQf\u002F\u002F\u002FwdNBEAgAEEmIABBCHZnIgFrdkEBcSABQQF0a0E+aiECCyADIAI2AhwgA0IANwIQIAJBAnRB9OAEaiEHAn8CQAJ\u002FQcjeBCgCACIBQQEgAnQiBHFFBEBByN4EIAEgBHI2AgBBGCECIAchBEEIDAELIABBGSACQQF2a0EAIAJBH0cbdCECIAcoAgAhBANAIAQiASgCBEF4cSAARg0CIAJBHXYhBCACQQF0IQIgASAEQQRxakEQaiIHKAIAIgQNAAtBGCECIAEhBEEICyEAIAMiAQwBCyABKAIIIgQgAzYCDEEIIQIgAUEIaiEHQRghAEEACyEFIAcgAzYCACACIANqIAQ2AgAgAyABNgIMIAAgA2ogBTYCAEHk3gRB5N4EKAIAQQFrIgBBfyAAGzYCAAsLqAEAAkAgAUGACE4EQCAARAAAAAAAAOB\u002FoiEAIAFB\u002Fw9JBEAgAUH\u002FB2shAQwCCyAARAAAAAAAAOB\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\u002FIQMMAQtBACEDCyAEQRBqJAAgAwt6AQN\u002FIAAoAkAiAQRAIAEoArwBIQIgAEG1ARANIAAgAkH\u002F\u002FwNxEBQgASABKALMASIDIAJBA3RqKAIAIgA2ArwBA0ACQCAAQQBIBEBBfyEADAELIAMgAEEDdGoiAigCBCIAQQBODQAgAigCACEADAELCyABIAA2AsABCwvgKgERfyMAQZABayIEJAAgACgCACENAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAhAiAkGDf0cNACAAKAIoDQEgAEEAEHNBOkcEQCAAKAIQIQIMAQsgDSAAKAIgEBYhCSAAKAJAQbACaiEDAkADQCADKAIAIgNFDQEgAygCBCAJRw0ACyAAQf7VAEEAEBMMGAsgABAPDRcgAEE6ECgNFyAAKAIQIgJBxwBqQQNJDQAgABAtIQUgBCAAKAJAIgIoArACNgJQIAIgBEHQAGo2ArACIARBfzYCZCAEQv\u002F\u002F\u002F\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\u002F\u002F\u002F\u002F8fNwJcIAQgAjYCWCAEIAk2AlQgAygCvAEhAyAEQQA2AmwgBCADNgJoIABB+wAQKA0aQX8hBQNAIAFBAEghAwNAAkACQAJAIAAoAhAiB0HBAGoOAgABAgsgAwR\u002FQX8FIABB7ABBfxAYCyEDIAAgARAaA0AgABAPDR8gAEEREA0gABCLAQ0fIABBOhAoDR8gAEGsARANIAAoAhBBv39GBEAgAEHrACADEBghAwwBCwsgAEHqAEF\u002FEBghASAAIAMQGgwDCyAAEA8NHSAAQToQKA0dIAVBAE4EQEGrGyEDDBMLIAFBAEgEQCAAQewAQX8QGCEBCyAAQbYBEA0gAEEAEDggACgCQCgChAJBBGshBQwCCyAHQf0ARwRAIAMEQEGCGyEDDBMLIABBBxDbAUUNAQwdCwsLIABB\u002FQAQKA0aAkAgBUEATgRAIAAoAkAiAygCgAIgBWogATYAACADKAKkAiABQRRsaiAFQQRqNgIEDAELIAAgARAaCyAAIAIQGiAAQQ4QDSAAKAJAIgEgASgCsAIoAgA2ArACDBcLIAAQwwEgABAPDRkgABAtIQIgABAtIQEgABAtIQMgABAtIQUgAEHtACACEBgaIAQgACgCQCIHKAKwAjYCUCAHIARB0ABqNgKwAiAEQv\u002F\u002F\u002F\u002F8fNwJcIARCgICAgHA3AlQgBygCvAEhByAEQQA2AmwgBCAHNgJoIAQgAzYCZCAAEOkCDRkgACgCQCIHIAcoArACKAIANgKwAiAAEOgCBEAgAEEOEA0gAEEGEA0gAEHuACADEBgaIABBDhANIABB7AAgBRAYGgsCQAJAAkAgACgCEEE9ag4CABABCyAAEA8NGyAAEHQaIAAgAhAaIAAoAhBB+wBGBEAgAEEOEA0MDwsgAEEoECgNGyAAKAIQIgJB+wBGIAJB2wBGcg0BAkAgAkGDf0YEQCAAKAIoRQ0BCyAAQfblAEEAEBMMHAsgDSAAKAIgEBYhAgJAIAAQD0UEQCAAIAJBQxCjAkEATg0BCyANIAIQEAwcCyAAQbkBEA0gACACEDggACAAKAJALwG8ARAUDA0LIABBvAxBABATDBoLIABBUUEAQQFBf0EBEMIBQQBODQsMGQsgABAPRQ0ZDBgLIAAoAkAtAG5BAXEEQCAAQcnGAEEAEBMMGAsgABAPDRcgABD4AQ0XIAAQdBogACAAKAJAQdUAQQAQnQEiAUEASA0XIABB8QAQDSAAQdkAEA0gACABQf\u002F\u002FA3EQFCAAEMMBIAAQpAINFwwUCyABQQFxRQ0BIAFBBHENByAAQQAQc0EqRg0BDAcLIAAoAigEQCAAENwBDBYLQVEhAgJAIAAgARDKAw4CABQWCyAAQYYBEEVFDQQgAEEBEHNBRUcNBCABQQRxDQYLIABBhBJBABATDBQLIAFBBHFFBEAgAEHIEUEAEBMMFAtBfyEBQQAhAyAAQQBBABDsAkUNFQwWCyAAEA8NEiAAEK8BRQ0TDBILIAQgACgCACAEQdAAaiAAKAIgEIEBNgIQIABB+yogBEEQahATDBELIAAQiwENEAJAIAAoAkAoAqQBQQBOBEAgAEHZABANIAAgACgCQC8BpAEQFAwBCyAAQQ4QDQsgABCvAUUNEQwQCyAAQYvIAEEAEBMMDwtBACEDIABBAUEAIAAoAhggACgCFBDEAQ0ODBALIABBKRAoDQ0LIABB7QAgARAYGiAAEHQaIAQgACgCQCICKAKwAjYCUCACIARB0ABqNgKwAiAEQv\u002F\u002F\u002F\u002F8fNwJcIARCgICAgHA3AlQgAigCvAEhAiAEQQA2AmwgBCACNgJoIAQgAzYCZCAAEOkCDQwgACgCQCICIAIoArACKAIANgKwAiAAENoBIAAQ2gEgABDoAgRAIABBDhANIABBBhANIABB7gAgAxAYGiAAQQ4QDSAAQewAIAUQGBoLIAEhAgsgACACEBogAEHuACADEBgaIABBLxANIAAgAxAaIAAoAhBBREYEQCAAEA8NDCAEIAAoAkAiAigCsAI2AlAgAiAEQdAAajYCsAIgBEF\u002FNgJkIARC\u002F\u002F\u002F\u002F\u002Fy83AlwgBEKAgICAcDcCVCACKAK8ASEDQQAhASAEQQA2AmwgBCADNgJoIAIoAqQBQQBOBEAgACgCACACQdIAEEwiAUEASA0NIABB2AAQDSAAIAAoAkAvAaQBEBQgAEHZABANIAAgAUH\u002F\u002FwNxEBQgABDDAQsgABDpAg0MIAAoAkAiAygCpAFBAE4EQCAAQdgAEA0gACABQf\u002F\u002FA3EQFCAAQdkAEA0gACAAKAJALwGkARAUIAAoAkAhAwsgAyADKAKwAigCADYCsAILIABB7wAQDSAAIAUQGgwMCyAAIANBABATDAoLIABB7AAgAxAYGiAFRQ0AIAAQDw0JCyAAEK8BRQ0JDAgLIAEhAgsgABAPDQYgAEEAIAJBABDMAw0GCyAAIAAoAkAoArwBIAYQoQILIABBOxAoDQQgABAtIQUgABAtIQMgABAtIQEgABAtIQcgBCAAKAJAIgIoArACNgIcIAIgBEEcajYCsAIgBEKAgICAcDcCLCAEIAM2AiggBCAHNgIkIAQgCTYCICACKAK8ASECIARBADYCOCAEIAI2AjQgASECIAAoAhBBO0cEQCAAIAUQGiAAEIsBDQUgAEHqACAHEBgaIAUhAgsgAEE7ECgNBAJAIAAoAhBBKUYEQCAEIAI2AihBACEFIAIhAwwBCyAAQewAIAEQGBogACgCQCgChAIhBSAAIAMQGiAAEIsBDQUgAEEOEA0gASACRg0AIABB7AAgAhAYGgsgAEEpECgNBCAAKAJAKAKEAiEKIAAgARAaIAAQpAINBCAAIAAoAkAoArwBIAYQoQICQCABIAJGIAIgA0ZyRQRAIAAoAkAiAUGAAmoiBiABKAKEAiIIIAogBWsiAmoQvAEaIAYgASgCgAIgBWogAhByGiABKAKAAiAFakGzASACECwaIAAoAkAiAiABKAKEAkEFazYCmAIgAyACKAKsAiIBIAEgA0gbIQYgCCAFayEIA0AgAyAGRg0CIAIoAqQCIANBFGxqIgsoAgQiASAFSCABIApOckUEQCALIAEgCGo2AgQLIANBAWohAwwACwALIABB7AAgAxAYGgsgACAHEBogACgCQCIBIAEoArACKAIANgKwAgwBCyAAQewAIBAQGBogACgCQCgChAIhDCAAIA8QGgJAIAAoAhAiAkE9Rw0AAkAgABAPRQRAIABBABCtAUUNAQsgCCAGEBAMBQsgBkUNACAAQbkBEA0gACAGEBcgACALLwG8ARAUCyAIIAYQEAJAAkACQCAAQcQAEEUiBgRAIARBATYCbCAEIAQoAmBBAmo2AmBB+MsAIQggAkE9Rg0BDAMLIAAoAhBBt39HDQEgAUUEQCAAQfSPAUEAEBMMBwsgAkE9Rw0CQYI\u002FIQggBUGxf0cNACALLQBuQQFxRSADQX9zcQ0CCyAEIAg2AgAgAEH4LiAEEBMMBQsgAEGTPUEAEBMMBAsgABAPDQMCQCAGBEAgABBTRQ0BDAULIAAQiwENBAsgACAAKAJAKAK8ASAOEKECIABB\u002FwBBgH8gARtB\u002FgAgBhtB\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\u002FIQggB0F\u002FNgK8ASAAEHRBAEgNBwtBACEJAkADQCAAKAIQIghBKUYNASAIQaV\u002FRyIORQRAIApBADYCACAAEA8NByAAKAIQIQgLAkACQAJAAkAgCEGDf0cEQCAIQfsARyAIQdsAR3ENBCAKQQA2AgACQCAORQRAIABBDRANIAcoAogBIQgMAQsgCyAHQQAQyAMhCCAAQdsAEA0LIAAgCEH\u002F\u002FwNxEBQgAEFRQbF\u002FIAQoAgAbQQFBAUF\u002FQQEQwgEiCEEASA0LIAggCXIhEkEBIQkgEkUEQCAHIAcoAowBQQFqNgKMAUEAIQkLIA5FDQEMAwsgACgCKA0JIAAoAiAiCEEtRgRAIActAGxBAUYNCgsgBCgCAARAIAAgByAIQQEQnQFBAEgNCwsgCyAHIAgQyAMiEUEASA0KIAAQDw0KIA4NASAAQQ0QDSAAIBFB\u002F\u002F8DcSIJEBQgBCgCAARAIABBERANIABBvQEQDSAAIAgQFyAAIAcvAbwBEBQLIABB3AAQDSAAIAkQFCAKQQA2AgALIAAoAhBBKUYNBCAAQSkQKBoMCQsCQCAAKAIQQT1GBEAgCkEANgIAIAAQDw0KIAAQLSEJIABB2wAQDSAAIBFB\u002F\u002F8DcSIOEBQgAEEREA0gAEEGEA0gAEGsARANIABB6gAgCRAYGiAAQQ4QDSAAEFMNCiAAIAgQngEgAEEREA0gAEHcABANIAAgDhAUIAAgCRAaQQEhCQwBCyAJRQRAIAcgBygCjAFBAWo2AowBCyAEKAIARQ0BIABB2wAQDSAAIBFB\u002F\u002F8DcRAUCyAAQb0BEA0gACAIEBcgACAHLwG8ARAUCyAAKAIQQSlGDQIgAEEsEChFDQEMBwsLIABB1DBBABATDAULAkACQCABQQRrDgIBAAILIAcoAogBQQFGDQEMAwsgBygCiAENAgsgBCgCAEUNACAHKALMASAHKAK8AUEDdGpBBGohCANAAkAgCCgCACIEQQBIDQAgBygCdCIIIARBBHQiBGoiCigCBCAHKAK8AUcNACAHIAooAgAiChD3AUEASARAIAsgByAKEExBAEgNBiAHKAJ0IQggAEG4ARANIAAgBCAIaiIKKAIAEBcgACAHLwG8ARAUIABBuQEQDSAAIAooAgAQFyAAQQAQFAsgBCAIakEIaiEIDAELCyAAQbUBEA0gACAHLwG8ARAUIAdBADYCvAEgByAHKALMASgCBDYCwAELIAAQDw0CIAJBfXFBAUYEQCAAQYgBEA0LIAdBATYCZCAAEHQaIAcgBygCvAE2AvABAkACQCAAKAIQQaR\u002FRw0AIAAQDw0EIAAoAhBB+wBGDQAgACAHIAwQ6gQNBCAAEFMNBCAAQS5BKCACGxANIActAG5BAnENASAHIAAoAjQgA2siAjYCkAMgByALIAMgAhCXAyICNgKMAyACDQEMBAsgAUEHRwRAIABB+wAQKA0ECyAAEKUFDQMgACAHIAwQ6gQNAwNAIAAoAhBB\u002FQBHBEAgABCkBUUNAQwFCwsgBy0AbkECcUUEQCAHIAAoAjggA2siAjYCkAMgByALIAMgAhCXAyICNgKMAyACRQ0ECyAAEA8NAyAAEOgCRQ0AIABBABCwAgsgACAHKAIENgJAIAAoAhAiAkGDf0cgAkHVAGpBLUtxRQRAIABBADYCKCAAQYN\u002FNgIQIAAQ7wQLIAcoAnAhAiAHIABCgICAgCAQxwMiAzYCCCABQQJPBEBBACEIIAFBCmtBfUsNBSAAQQMQDSAAIAMQOCACDQUgAEHNABANIABBABA4DAULIAFBAUYEQCAAQQMQDSAAIAMQOCAPBEACQCAAKAJAIgEoAigEQCALIAEgAhDmAiIBRQ0GIAFBADYCCCABIAEtAARB\u002FgFxIAAoAkAtAG5BAXFyOgAEDAELIAEgAhD3AUEATg0AIAsgASACEExBAEgNBQsgAEEREA0gAEG5ARANIAAgAhAXIABBABAUC0EAIQggDUEATgRAIAAoAkAoAnQgDUEEdGoiASABLQAMIANBCHRyNgIMIABBDhANDAYLIABBvQEQDSAAIAIQFyAAIAAoAkAvAbwBEBQMBQsCQAJAIAAoAkAiASgCKEUEQCAAIAEgAkEGEJ0BIgFBAEgNBSADQQh0IQIgACgCQCEAIAFBgICAgAJxBEAgACgCgAEgAUEEdGoiAEEMaiAALQAMIAJyNgIADAILIAAoAnQgAUEEdGoiACAALQAMIAJyNgIMDAELIAsgASACQf0AIAIbIgEQ5gIiAkUNBCACIAM2AgAgBQ0BC0EAIQgMBQtBACEIIAAgACgCQCgClAMgAUEWIAEgBUEBRxtBABD5AQ0EDAILIABB\u002Fi9BABATDAELIAAQ3AELIAAgBygCBDYCQCALIAcQ+wJBfyEIIAZFDQEgBkEANgIADAELIAsgDBAQCyAQQRBqJAAgCAuoAgIBfgJ\u002FIwBBEGsiAiQAAkAgAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECJCgICAgOAAIQUMAQsCQCAEDQAgAykDACIFQoCAgIBwVA0AIAWnIgYvAQZBLUcNACAGKAIgRQ0AIAAgBUE9IAVBABARIgVCgICAgHCDQoCAgIDgAFENASAAIAUgARBNIQcgACAFEAwgB0UNACADKQMAIgVCIIinQXVJDQEgBaciACAAKAIAQQFqNgIADAELIAAgAiABEIICIgFCgICAgHCDQoCAgIDgAFIEQCAAIAIgBEEDdGopAwBCgICAgDBBASADEBwhBSAAIAIpAwAQDCAAIAIpAwgQDCAFQoCAgIBwg0KAgICA4ABRBEAgACABEAwMAgsgACAFEAwLIAEhBQsgAkEQaiQAIAULDQAgACABIAJBABCaAwstAQF\u002FQQEhAQJAAkACQCAAQQ1rDgQCAQECAAsgAEEwRg0BCyAAQTRGIQELIAELnQMDAn4BfAJ\u002FAkACfgJAAkACQAJAIAFBCGsiBikDACIEQiCIp0EHa0FuSQ0AQX8hAUKAgICAMCEDIAAgBBBlIgRCgICAgHCDQoCAgIDgAFENBSAEQiCIpyIHQXZHBEAgBw0BIATEIQMCQAJAAkAgAkGNAWsOBAACAQEFCyAEQiCGUARAQQAhAUKAgICAwP7\u002FAyEDDAkLQgAgA30hAwwBCyADIAJBAXRBnwJrrHwhAwsgA0L\u002F\u002F\u002F\u002F\u002FD4MgA0KAgICACHxC\u002F\u002F\u002F\u002F\u002Fw9YDQUaQoCAgIDAfiADub0iA0KAgICAwIGA\u002FP8AfSADQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwwFCyAAIAYgAiAEIAAoAhAoAqgCER8ADQVBAA8LIARCgICAgMCBgPz\u002FAHy\u002FIQUCQCACQY0Baw4EAAMCAgELIAWaIQUMAgsQAQALIAJBAXRBnwJrtyAFoCEFC0KAgICAwH4gBb0iA0KAgICAwIGA\u002FP8AfSADQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwshA0EAIQELIAYgAzcDACABCzgBAX8gAEEYECQiAUUEQEKAgICA4AAPCyABQQE2AgAgACgC2AEgAUEEahC7ASABrUKAgICA4H6ECykBAX8gAkIgiKdBdU8EQCACpyIDIAMoAgBBAWo2AgALIAAgASACENIFCyYBAX8gAUIgiKdBdU8EQCABpyICIAIoAgBBAWo2AgALIAAgARAnC7UBAQJ\u002FAkACQCABRQ0AIAEoAgAiAkEATA0BIAEgAkEBayICNgIAIAINAAJAIAEtAAVBAXEEQCAAIAEpAxgQIQwBCyABKAIYIgIgASgCHCIDNgIEIAMgAjYCACABQgA3AhggASgCICICRQ0AIAAgAhDOAQsgASgCCCICIAEoAgwiAzYCBCADIAI2AgAgAUIANwIIIABBEGogASAAKAIEEQAACw8LQfeEAUGo7ABB\u002FShBvcwAEAAACyEAIAEgAkYEQCABEBkPCyAAIAFBBGutQoCAgIDgfoQQDAtFAQF\u002FAkAgAUGAgAFxRQRAIAFBgIACcUUNASAAKAIQKAKMASIBRQ0BIAEtAChBAXFFDQELIAAgAkGqDBC1AUF\u002FIQMLIAML\u002FgICA38CfiMAQRBrIgMkAAJAAkAgAUKAgICAcFoEQCABpyICLwEGQSxGBEACQCAAIANBCGogAUHgABB+IgJFDQAgAykDCCIBQoCAgIBwg0KAgICAMFEEQCAAIAIpAwAQ6AEhAQwFCyAAIAEgAikDCEEBIAIQNiIFQoCAgIBwg0KAgICA4ABRDQMCQAJAIAVCIIinQQFqDgQAAQEAAQsgACACKQMAEJcBIgRBAEgEQCAAIAUQDAwCCyAEDQRCgICAgOAAIQEgACACKQMAEOgBIgZCgICAgHCDQoCAgIDgAFEEQCAAIAUQDAwGCyAAIAYQDCAGpyAFp0YNBAsgACAFEAwgAEGr0gBBABASC0KAgICA4AAhAQwDCyACKAIQKAIsIgBFBEBCgICAgCAhAQwDCyAAIAAoAgBBAWo2AgAgAK1CgICAgHCEIQEMAgsgACABEIsEIgFCIIinQXVJDQEgAaciACAAKAIAQQFqNgIADAELIAUhAQsgA0EQaiQAIAELGgAgACgCECABIAIQ6AUiAUUEQCAAEHALIAELnwMCBH8CfiMAQSBrIgQkACABIAJqIQUgASEDA0ACQCADIAVPDQAgAywAAEEASA0AIANBAWohAwwBCwsCfgJAIAMgAWsiBkGAgICABE8EQCAAQeTIAEEAEDoMAQsgAyAFRgRAIAAgASACEJwDDAILIAAgBEEEaiIAIAIQPkUEQCAAIAEgBhCLAhoDQCADIAVJBEAgAywAACIAQQBOBEAgBEEEaiAAQf8BcRA8GiADQQFqIQMMAgUCQCADIAUgA2sgBEEcahBRIgFB\u002F\u002F8DTQRAIAQoAhwhAwwBCyABQf\u002F\u002FwwBNBEAgBCgCHCEDIARBBGogAUGAgARrQQp2QYCwA2oQhwEaIAFB\u002FwdxQYC4A3IhAQwBCwNAQf3\u002FAyEBIAMgBU8NASADLAAAQUBIBEAgA0EBaiEDDAELCwNAIAUgA0EBaiIDTQRAIAUhAwwCCyADLAAAQUBIDQALCyAEQQRqIAEQhwEaDAILAAsLIARBBGoQNwwCCyAEKAIEKAIQIgBBEGogBCgCCCAAKAIEEQAAC0KAgICA4AALIQggBEEgaiQAIAgL2wECAX8CfkEBIQQCQCAAQgBSIAFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAIMiBUKAgICAgIDA\u002F\u002F8AViAFQoCAgICAgMD\u002F\u002FwBRGw0AIAJCAFIgA0L\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8AgyIGQoCAgICAgMD\u002F\u002FwBWIAZCgICAgICAwP\u002F\u002FAFEbDQAgACAChCAFIAaEhFAEQEEADwsgASADg0IAWQRAQX8hBCAAIAJUIAEgA1MgASADURsNASAAIAKFIAEgA4WEQgBSDwtBfyEEIAAgAlYgASADVSABIANRGw0AIAAgAoUgASADhYRCAFIhBAsgBAuhAgEFfwNAAkACQAJAAkACfyACIAdMIgkgBCAGTHJFBEAgASAHQQJ0aigCACIIIAMgBkECdGooAgAiCUkEQCAIDAILIAggCUcNAyAGQQFqIQYgB0EBaiEHIAghCQwECyAJDQEgASAHQQJ0aigCAAshCSAHQQFqIQcMAgsgBCAGTA0CIAMgBkECdGooAgAhCQsgBkEBaiEGCwJ\u002FAkACQAJAAkAgBQ4DAwABAgsgBiAHcUEBcQwDCyAGIAdzQQFxDAILEAEACyAGIAdyQQFxCyAAKAIAIghBAXFGDQEgACgCBCAITARAIAAgCEEBahDRAgRAQX8PCyAAKAIAIQgLIAAgCEEBajYCACAAKAIIIAhBAnRqIAk2AgAMAQsLIAAQmAZBAAvmAQAgAAJ\u002FIAEoAggiAEH+\u002F\u002F\u002F\u002FB04EQEEAIAJBAXENARpB\u002F\u002F\u002F\u002F\u002FwcgAEH+\u002F\u002F\u002F\u002FB0cNARogASgCBEH\u002F\u002F\u002F\u002F\u002FB2oMAQtBACAAQQBMDQAaIABBH00EQEEAIAEoAhAgASgCDEECdGpBBGsoAgBBICAAa3YiAGsgACABKAIEGwwBCyACQQFxRQRAQf\u002F\u002F\u002F\u002F8HIAEoAgRFDQEaQYCAgIB4IABBIEcNARogASgCECABKAIMQQJ0akEEaygCABpBgICAgHgMAQtBACABKAIQIAEoAgwiAiACQQV0IABrEHEiAGsgACABKAIEGws2AgALEgAgACABIAIgAyAEQZMDELEDCw4AIABBACABQRByELoBC58BAgR\u002FAn4gAzUCACEJA0AgAiAFRkUEQCAAIAVBAnQiB2ogBq0gASAHajUCACAJfnwiCj4CACAFQQFqIQUgCkIgiKchBgwBCwsgACACQQJ0IgdqIAY2AgBBASAEIARBAU0bIQRBASEFA0AgBCAFRkUEQCAAIAVBAnQiBmoiCCAHaiAIIAEgAiADIAZqKAIAEL0ENgIAIAVBAWohBQwBCwsLWgEFfyADQQAgA0EAShshBgNAIAUgBkcEQCAAIAVBAnQiA2ogASADaigCACIHIAIgA2ooAgAiA2siCCAEazYCACADIAdLIAQgCEtyIQQgBUEBaiEFDAELCyAEC6sBAQh\u002FIAAoAggiAyABKAIIIgJHBEBBf0EBIAIgA0obDwsgASgCDCIFIAAoAgwiBiAFIAUgBkgbIgJrIQggBiACayEJAn8DQEEAIAJBAWsiAkEASA0BGkEAIQNBACEEIAIgCWoiByAGSQRAIAAoAhAgB0ECdGooAgAhBAsgAiAIaiIHIAVJBEAgASgCECAHQQJ0aigCACEDCyADIARGDQALQX9BASADIARLGwsLigEBA38jAEGQAWsiAyQAIAMgAjYCjAECfyADQYABIAEgAhDJAiIEQf8ATQRAIAAgAyAEEHIMAQtBfyAAIAQgACgCBGpBAWoQvAENABogAyACNgKMASAAKAIEIgUgACgCAGogACgCCCAFayABIAIQyQIaIAAgACgCBCAEajYCBEEACxogA0GQAWokAAtWAQF\u002FIAJCIIinQXVPBEAgAqciBSAFKAIAQQFqNgIACyAAIAFBPCACIAMQFRogAUIgiKdBdU8EQCABpyIDIAMoAgBBAWo2AgALIAAgAkE9IAEgBBAVGgucAQEEfyMAQRBrIgIkACACQSU6AApBASEDIAFBgAJOBEAgAkH1ADoACyACIAFBCHZBD3FByvgAai0AADoADSACIAFBDHZBD3FByvgAai0AADoADEEEIQMLIAJBCmoiBCADaiIFIAFBD3FByvgAai0AADoAASAFIAFBBHZBD3FByvgAai0AADoAACAAIAQgA0ECchCLAhogAkEQaiQAC7wEAQV\u002FIAFFBEAgACACQQRxQQhyENkBDwsCQAJAIAJBAXFFIAAoAhBBqX9HIAFBBEdycg0AIABBABBzQbd\u002FRw0AIAAoAgAgACgCIBAWIQECQAJAIAAQDw0AIAAoAhBBt39HDQAgABAPDQAgAEEDIAJBe3EQ9gFFDQELIAAoAgAgARAQQX8PCyAAQcIBEA0gACABEBcgACAAKAJALwG8ARAUIAAoAgAgARAQDAELQX8hAwJAIAAgAUEBayIEIgUgAhD2AQ0AIAJBe3EhBiACQQFxIQcDQCAAKAIQIQECQAJAAkACQAJAAkACQAJAAkACQCAEQQFrDgcBAgMEBQYHAAsgAUElRwRAQZsBIQIgAUEqRg0JIAFBL0cNDEGcASECDAkLQZ0BIQIMCAtBngEhAkEAIQMCQCABQStrDgMICgAKC0GfASECDAcLIAFB6gBqIgFBA08NCSABQd8AayECDAYLQQAhAwJAAkACQAJAIAFB5gBqDgMBCwIACwJAIAFByQBqDgIIAwALQaQBIQICQCABQTxrDgMJCwALC0GmASECDAgLQaUBIQIMBwtBpwEhAgwGC0GoASECDAULIAFB4wBqIgFBBE8NB0Gq2a7teiABQQN0diECDAQLQa4BIQIgAUEmRw0GDAMLQa8BIQIgAUHeAEcNBQwCC0GwASECIAFB\u002FABHDQQMAQtBqQEhAiAHRQ0CC0F\u002FIQMgABAPDQEgACAFIAYQ9gENASAAIAJB\u002FwFxEA0MAAsACyADDwtBAAtHAQJ\u002FIAAoAnwhAgJAA0AgAkEASgRAIAAoAnQgAkEBayICQQR0aiIDKAIAIAFHDQEgAygCBA0BDAILCyAAIAEQ6QQhAgsgAgspAQF\u002FQX8hAQJAIABBKBAoDQAgABCLAQ0AQX9BACAAQSkQKBshAQsgAQvQAQECfyAAKAIAIQUjAEHQAGsiBiQAAkAgASADELoFBEACQCAABEAgBiAFIAZBEGogAxCBATYCACAAQeKNASAGEBMMAQsgBSADQeKNARCBAwtBACEADAELQQAhACAFIAFBHGpBFCABQSRqIAEoAiBBAWoQZA0AIAEgASgCICIAQQFqNgIgIAEoAhwgAEEUbGoiAEIANwIAIABBADYCECAAQgA3AgggACAFIAIQFjYCDCAFIAMQFiEBIAAgBDYCCCAAIAE2AhALIAZB0ABqJAAgAAsaACAAQd4AQdgAIAEbEA4gACACQf\u002F\u002FA3EQJgu2AQECfwJAIAIgASgCBCIKRgRAIAMhCwwBCyAAIAogAiADIAQgBSAGIAcgCCAJEPsBIgVBAE4NAEF\u002FDwtBACECIAEoAsACIgNBACADQQBKGyEDAkADQCACIANHBEACQCAFIAEoAsgCIAJBA3RqIgovAQJHDQAgCi0AACIKQQF2QQFxIARHDQAgCyAKQQFxRg0DCyACQQFqIQIMAQsLIAAgASALIAQgBSAGIAcgCCAJENIDIQILIAILjgEBAX8gACAGQQwQRyIGQoCAgIBwg0KAgICA4ABSBEAgACAAKAIAQQFqNgIAIAanIgcgBTsBKiAHIAQ6ACkgByADOgAoIAcgATYCJCAHIAA2AiAgByAHLQAFQe8BcSAEQQJrQQRJQQR0cjoABSAAIAYgACACQeyWASACGxC2ASIBIAMQmAMgACABEBALIAYLjgIBAX4CQAJAAkACQCABQv\u002F\u002F\u002F\u002F9vWA0AIAAgAUE9IAFBABARIgFCgICAgHCDIgNCgICAgOAAUQRAIAEPCyADQoCAgIAwUQRAIAJCIIinQXVJDQMMBAsgAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAIAEQDAwBCyAAIAFB1QEgAUEAEBEhAyAAIAEQDAJAAkAgA0KAgICAcIMiAUKAgICAIFIEQCABQoCAgIDgAFENAiABQoCAgIAwUg0BCyACQiCIp0F1SQ0EDAULIANCgICAgHBaBEAgA6ctAAVBEHENAQsgACADEAwgAEGdLEEAEBIMAgsgAw8LIAAQIgtCgICAgOAAIQILIAIPCyACpyIAIAAoAgBBAWo2AgAgAgtwAQN\u002FIwBBEGsiAiQAIAAhAQNAAkAgASwAACIDQQBOBEAgA0H\u002FAXFBCWsiA0EXS0EBIAN0QZ+AgARxRXINASABQQFqIQEMAgsgAUEGIAJBDGoQURCpA0UNACACKAIMIQEMAQsLIAJBEGokACABIABrCxkAIAAgARAMIAFCgICAgHCDQoCAgIDgAFELuQ4DDX8DfgF8IwBB0ABrIgkkACAJIAE2AkxB3wBBgAIgBEEgcRshCwJAAkACQAJAAkACQAJAAkACQAJAIAEtAAAiBUEraw4DAQIAAgtBASENCyAJIAFBAWoiATYCTCAEQYAIcUUNASABLQAAIQULIAVB\u002FwFxQTBHDQACfwJAAkACQAJAAkAgAS0AASIGQfgARwRAIAZB7wBGDQIgBkHYAEcNAQsgA0FvcQ0DIAkgAUECaiIBNgJMQRAMBQsgA0UhCiADDQMgBkHPAEYNAQwDCyADDQkLIARBBHFFDQYgCSABQQJqIgE2AkxBACEKQQgMAgsgBkHvAEYNBwsCQAJAIAZB4gBHBEAgCiAGQcIARnENAUEBIQcgCkUgBkEwa0H\u002FAXFBCUtyDQVBCiEDQQAhCiAEQRBxRQ0JIAFBAWohBgNAIAEgB2ohECAHQQFqIQcgEC0AACIFQfgBcUEwRg0ACyAFQf4BcUE4Rw0CQYACIQtBASEKDAkLIApFDQcLIARBBHFFDQUgCSABQQJqIgE2AkxBACEKQQIMAQsgCSAGNgJMQQEhCkGAAiELIAYhAUEICyEDQoCAgIDAfiESIAEtAAAQjAEgA08NBgwFCyAEQYEDcQ0AAn8gCUHMAGohBUHRCyEGA0AgBi0AACIIBEAgCCABLQAARwRAQQAMAwUgBkEBaiEGIAFBAWohAQwCCwALCyAFBEAgBSABNgIAC0EBCw0BIAkoAkwhAQsgA0EKIAMbIQMMAgtEAAAAAAAA8P9EAAAAAAAA8H8gDRsiFb0iEgJ\u002FIBWZRAAAAAAAAOBBYwRAIBWqDAELQYCAgIB4CyIAt71RBEAgAK0hEgwECyASQoCAgIDAgYD8\u002FwB9IRIMAwtBCiEDC0EAIQoLIARBgANxIQ5BACEFIANBCkchDCABIQYDQAJAIAEgBWoiCC0AACIHwCEPIAcQjAEgA04EQCALIA9HDQEgDCAFQQFHckUEQCAIQQFrLQAAQTBGDQILIAgtAAEQjAEgA04NAQsgCSABIAVBAWoiBWoiBjYCTAwBCwtBACEMAkAgBEEBcQ0AAkAgB0EuRw0AIAVFBEAgCC0AARCMASADTg0BCyAJIAhBAWoiBjYCTEKAgICAwH4hEiALIAgsAAEiBUYNAgNAIAVB\u002FwFxEIwBIANOBEBBASEMIAsgBcBHDQIgBi0AARCMASADTg0CCyAJIAZBAWoiCDYCTCAGLQABIQUgCCEGDAALAAsgASAGTw0AAkAgBi0AACIFQeUARwRAIANBCkYgBUHFAEZxDQEgBUEgckHwAEcgA0EQS3INAkEBIAN0QYSCBHENAQwCCyADQQpHDQELQQEhDCAGQQFqIQUCQAJAAkAgBi0AAUEraw4DAAIBAgsgBkECaiEFDAELIAZBAmohBQsgBS0AAEE6a0F2SQ0AIAUhBgNAIAkgBiIFQQFqIgY2AkwgBS0AASIIwCERIAhBOmtBdUsNACARIAtHDQEgBS0AAkE6a0F1Sw0ACwsgASAGRgRAQoCAgIDAfiESDAELIAkhCAJ+AkACQAJAIAYgAWsiBkECaiILQcEATwRAIAAoAhAiBUEQaiALIAUoAgARAwAiCEUNAQtBACEFQQAhByANBEAgCEEtOgAAQQEhBwsgBkEAIAZBAEobIQYDQCAFIAZHBEAgASAFai0AACINQd8ARwRAIAcgCGogDToAACAHQQFqIQcLIAVBAWohBQwBCwsgByAIakEAOgAAAkAgBEHAAHEEQCAJKAJMIgEtAABB7gBGBEAgCSABQQFqNgJMDAULIANBCkcEQEKAgICAwH4gDA0GGgsgDkGAAUYNBCAORQ0BDAMLIA5BgAFGDQMgDg0CIANBCkYNAEKAgICAwH4gDA0EGgsCfAJAIAwgA0EKRnENACAIIAgtAAAiBEEtRmohAQNAIAEiBUEBaiEBIAUtAAAiB0EwRg0AC0KYs+bMmbPmzBkhEyADQQpGIgZFBEBBACADa6wgA6yAIRMLIAOtIRRBACEBQgAhEgNAAkAgB0H\u002FAXEiB0UNACAHEIwBIgcgA04NAAJAIBIgE1gEQCAHrSASIBR+fCESDAELIAYNAyABQQFqIQELIAUtAAEhByAFQQFqIQUMAQsLIBK6IRUgAQRAIAO3IAG3EKMDIBWiIRULIBWaIBUgBEEtRhsMAQsgCBCABgsiFb0iEgJ\u002FIBWZRAAAAAAAAOBBYwRAIBWqDAELQYCAgIB4CyIBt71RBEAgAa0MBAtCgICAgMB+IBJCgICAgMCBgPz\u002FAH0gEkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsMAwsgABBwQoCAgIDgACESDAMLEAEAC0KAgICAwH4gCiAMcg0AGiAAIAggAyAEQQAgACgCECgCpAIRKgALIRIgC0HBAEkNACAAKAIQIgBBEGogCCAAKAIEEQAACyACBEAgAiAJKAJMNgIACyAJQdAAaiQAIBILeQEBfwJAAkACQAJAAkAgASgCACICQYABag4FBAQEAgABCyAAKAIAIAEpAxAQDCAAKAIAIAEpAxgQDA8LIAJBqX9HDQELIAAoAgAgASgCEBAQDwsgAkHVAGpBLU0EQCAAKAIAIAEoAhAQEAsPCyAAKAIAIAEpAxAQDAv1AgIEfwJ+IwBBIGsiAyQAIANCgICAgDA3AxggA0KAgICAMDcDECADIABBO0ECQQBBAiADQRBqEIUBIgc3AwhCgICAgOAAIQggB0KAgICAcINCgICAgOAAUgRAAkAgAkKAgICAcINCgICAgDBRBEAgACACQQAgA0EIahCQBiECDAELIAAgAkEBIANBCGoQowEhAiADKQMIIQcLIAACfiAAIAJCgICAgHCDQoCAgIDgAFIEfgJ\u002FQQAgB0KAgICAcFQNABpBACAHpyIFLwEGQQ9HDQAaIAUoAiALQQhqIQYDQCAEQQJGBEBBACEEA0AgBEECRwRAIAYgBEEDdCIFaikDACIHQiCIp0F1TwRAIAenIgAgACgCAEEBajYCAAsgASAFaiAHNwMAIARBAWohBAwBCwsgAiEIIAMpAwgMAwsgBEEDdCEFIARBAWohBCAAIAUgBmopAwAQVUUNAAsgAykDCAUgBwsQDCACCxAMCyADQSBqJAAgCAsOACABIAAoAhBBOBCdAgtDACAAAn8CfyADBEAgASgCJCACQQN0akEEagwBC0EAIAEoAiAiA0UNARogAyABLwEoQQR0aiACQQR0agsoAgALENEBC00BA38gAkL\u002F\u002F\u002F\u002F\u002FB1gEQCAAIAEgAqdBgICAgHhyQYCAARDNAQ8LIAAgAhCLAyIDRQRAQX8PCyAAIAEgA0GAgAEQzQEhBSAAIAMQECAFC0MAIAAgASACQQBOBH4gAq0FQoCAgIDAfiACuL0iAUKAgICAwIGA\u002FP8AfSABQoCAgICAgID4\u002FwBWGwsgA0GAgAEQzwELIQEBfiAAIAEgACACELYBIgIgAUEAEBEhAyAAIAIQECADCw0AIAAoAhAgAacQxgILngQCBX8BfiMAQSBrIgYkAAJAAkACQAJAIAMEQCABQoCAgIBgg0KAgICAIFINAQwCCyABQoCAgIBwVA0BC0EBIQQCQAJAIAJCIIinIghBAWoOBAACAgECCyACpyEFCyABQv\u002F\u002F\u002F\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\u002FIQYgAEG\u002Ff0sNACAAQQtqIgBBeHEhBkHI3gQoAgAiB0UNAEEAIAZrIQMCQAJAAkACf0EAIAZBgAJJDQAaQR8gBkH\u002F\u002F\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\u002F\u002F\u002F8HTQRAIAJBJiACQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAAsgAyAANgIcIANCADcCECAAQQJ0QfTgBGohAQJAAkBByN4EKAIAIgVBASAAdCIEcUUEQEHI3gQgBCAFcjYCACABIAM2AgAMAQsgAkEZIABBAXZrQQAgAEEfRxt0IQAgASgCACEFA0AgBSIBKAIEQXhxIAJGDQIgAEEddiEFIABBAXQhACABIAVBBHFqIgQoAhAiBQ0ACyAEIAM2AhALIAMgATYCGEEIIQIgAyIBIQBBDAwBCyABKAIIIgAgAzYCDCABIAM2AgggAyAANgIIQQAhAEEYIQJBDAsgA2ogATYCACACIANqIAA2AgALQdDeBCgCACIAIAZNDQBB0N4EIAAgBmsiATYCAEHc3gRB3N4EKAIAIgAgBmoiAjYCACACIAFBAXI2AgQgACAGQQNyNgIEIABBCGohAAwEC0HE1ARBMDYCAEEAIQAMAwsgACACNgIAIAAgACgCBCAEajYCBCACQXggAmtBB3FqIgggBkEDcjYCBCABQXggAWtBB3FqIgQgBiAIaiIDayEHAkBB3N4EKAIAIARGBEBB3N4EIAM2AgBB0N4EQdDeBCgCACAHaiIANgIAIAMgAEEBcjYCBAwBC0HY3gQoAgAgBEYEQEHY3gQgAzYCAEHM3gRBzN4EKAIAIAdqIgA2AgAgAyAAQQFyNgIEIAAgA2ogADYCAAwBCyAEKAIEIgBBA3FBAUYEQCAAQXhxIQkgBCgCDCECAkAgAEH\u002FAU0EQCAEKAIIIgEgAkYEQEHE3gRBxN4EKAIAQX4gAEEDdndxNgIADAILIAEgAjYCDCACIAE2AggMAQsgBCgCGCEGAkAgAiAERwRAQdTeBCgCABogBCgCCCIAIAI2AgwgAiAANgIIDAELAkAgBCgCFCIABH8gBEEUagUgBCgCECIARQ0BIARBEGoLIQEDQCABIQUgACICQRRqIQEgACgCFCIADQAgAkEQaiEBIAIoAhAiAA0ACyAFQQA2AgAMAQtBACECCyAGRQ0AAkAgBCgCHCIAQQJ0QfTgBGoiASgCACAERgRAIAEgAjYCACACDQFByN4EQcjeBCgCAEF+IAB3cTYCAAwCCyAGQRBBFCAGKAIQIARGG2ogAjYCACACRQ0BCyACIAY2AhggBCgCECIABEAgAiAANgIQIAAgAjYCGAsgBCgCFCIARQ0AIAIgADYCFCAAIAI2AhgLIAcgCWohByAEIAlqIgQoAgQhAAsgBCAAQX5xNgIEIAMgB0EBcjYCBCADIAdqIAc2AgAgB0H\u002FAU0EQCAHQXhxQezeBGohAAJ\u002FQcTeBCgCACIBQQEgB0EDdnQiAnFFBEBBxN4EIAEgAnI2AgAgAAwBCyAAKAIICyEBIAAgAzYCCCABIAM2AgwgAyAANgIMIAMgATYCCAwBC0EfIQIgB0H\u002F\u002F\u002F8HTQRAIAdBJiAHQQh2ZyIAa3ZBAXEgAEEBdGtBPmohAgsgAyACNgIcIANCADcCECACQQJ0QfTgBGohAAJAAkBByN4EKAIAIgFBASACdCIFcUUEQEHI3gQgASAFcjYCACAAIAM2AgAMAQsgB0EZIAJBAXZrQQAgAkEfRxt0IQIgACgCACEBA0AgASIAKAIEQXhxIAdGDQIgAkEddiEBIAJBAXQhAiAAIAFBBHFqIgUoAhAiAQ0ACyAFIAM2AhALIAMgADYCGCADIAM2AgwgAyADNgIIDAELIAAoAggiASADNgIMIAAgAzYCCCADQQA2AhggAyAANgIMIAMgATYCCAsgCEEIaiEADAILAkAgCEUNAAJAIAUoAhwiAUECdEH04ARqIgIoAgAgBUYEQCACIAA2AgAgAA0BQcjeBCAHQX4gAXdxIgc2AgAMAgsgCEEQQRQgCCgCECAFRhtqIAA2AgAgAEUNAQsgACAINgIYIAUoAhAiAQRAIAAgATYCECABIAA2AhgLIAUoAhQiAUUNACAAIAE2AhQgASAANgIYCwJAIANBD00EQCAFIAMgBmoiAEEDcjYCBCAAIAVqIgAgACgCBEEBcjYCBAwBCyAFIAZBA3I2AgQgBSAGaiIEIANBAXI2AgQgAyAEaiADNgIAIANB\u002FwFNBEAgA0F4cUHs3gRqIQACf0HE3gQoAgAiAUEBIANBA3Z0IgJxRQRAQcTeBCABIAJyNgIAIAAMAQsgACgCCAshASAAIAQ2AgggASAENgIMIAQgADYCDCAEIAE2AggMAQtBHyEAIANB\u002F\u002F\u002F\u002FB00EQCADQSYgA0EIdmciAGt2QQFxIABBAXRrQT5qIQALIAQgADYCHCAEQgA3AhAgAEECdEH04ARqIQECQAJAIAdBASAAdCICcUUEQEHI3gQgAiAHcjYCACABIAQ2AgAgBCABNgIYDAELIANBGSAAQQF2a0EAIABBH0cbdCEAIAEoAgAhAQNAIAEiAigCBEF4cSADRg0CIABBHXYhASAAQQF0IQAgAiABQQRxaiIHKAIQIgENAAsgByAENgIQIAQgAjYCGAsgBCAENgIMIAQgBDYCCAwBCyACKAIIIgAgBDYCDCACIAQ2AgggBEEANgIYIAQgAjYCDCAEIAA2AggLIAVBCGohAAwBCwJAIAlFDQACQCACKAIcIgFBAnRB9OAEaiIFKAIAIAJGBEAgBSAANgIAIAANAUHI3gQgC0F+IAF3cTYCAAwCCyAJQRBBFCAJKAIQIAJGG2ogADYCACAARQ0BCyAAIAk2AhggAigCECIBBEAgACABNgIQIAEgADYCGAsgAigCFCIBRQ0AIAAgATYCFCABIAA2AhgLAkAgA0EPTQRAIAIgAyAGaiIAQQNyNgIEIAAgAmoiACAAKAIEQQFyNgIEDAELIAIgBkEDcjYCBCACIAZqIgUgA0EBcjYCBCADIAVqIAM2AgAgCARAIAhBeHFB7N4EaiEAQdjeBCgCACEBAn9BASAIQQN2dCIHIARxRQRAQcTeBCAEIAdyNgIAIAAMAQsgACgCCAshBCAAIAE2AgggBCABNgIMIAEgADYCDCABIAQ2AggLQdjeBCAFNgIAQczeBCADNgIACyACQQhqIQALIApBEGokACAAC1IBAn9BpNQEKAIAIgEgAEEHakF4cSICaiEAAkAgAkEAIAAgAU0bRQRAIAA\u002FAEEQdE0NASAAEAkNAQtBxNQEQTA2AgBBfw8LQaTUBCAANgIAIAELgwECBX8BfgJAIABCgICAgBBUBEAgACEHDAELA0AgAUEBayIBIAAgAEIKgCIHQgp+fadBMHI6AAAgAEL\u002F\u002F\u002F\u002F\u002FnwFWIQUgByEAIAUNAAsLIAenIgIEQANAIAFBAWsiASACIAJBCm4iA0EKbGtBMHI6AAAgAkEJSyEGIAMhAiAGDQALCyABC94BAQJ\u002FIAJBAEchAwJAAkACQCAAQQNxRSACRXINACABQf8BcSEEA0AgAC0AACAERg0CIAJBAWsiAkEARyEDIABBAWoiAEEDcUUNASACDQALCyADRQ0BIAFB\u002FwFxIgMgAC0AAEYgAkEESXJFBEAgA0GBgoQIbCEDA0AgACgCACADcyIEQX9zIARBgYKECGtxQYCBgoR4cQ0CIABBBGohACACQQRrIgJBA0sNAAsLIAJFDQELIAFB\u002FwFxIQEDQCABIAAtAABGBEAgAA8LIABBAWohACACQQFrIgINAAsLQQAL5QUDBHwBfwF+AkACQAJAAnwCQCAAvSIGQiCIp0H\u002F\u002F\u002F\u002F\u002FB3EiBUH60I2CBE8EQCAAvUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVg0FIAZCAFMEQEQAAAAAAADwvw8LIABE7zn6\u002FkIuhkBkRQ0BIABEAAAAAAAA4H+iDwsgBUHD3Nj+A0kNAiAFQbHFwv8DSw0AIAZCAFkEQEEBIQVEdjx5Ne856j0hASAARAAA4P5CLua\u002FoAwCC0F\u002FIQVEdjx5Ne856r0hASAARAAA4P5CLuY\u002FoAwBCwJ\u002FIABE\u002FoIrZUcV9z+iRAAAAAAAAOA\u002FIACmoCIBmUQAAAAAAADgQWMEQCABqgwBC0GAgICAeAsiBbciAkR2PHk17znqPaIhASAAIAJEAADg\u002FkIu5r+ioAsiACAAIAGhIgChIAGhIQEMAQsgBUGAgMDkA0kNAUEAIQULIAAgAEQAAAAAAADgP6IiA6IiAiACIAIgAiACIAJELcMJbrf9ir6iRDlS5obKz9A+oKJEt9uqnhnOFL+gokSFVf4ZoAFaP6CiRPQQEREREaG\u002FoKJEAAAAAAAA8D+gIgREAAAAAAAACEAgBCADoqEiA6FEAAAAAAAAGEAgACADoqGjoiEDIAVFBEAgACAAIAOiIAKhoQ8LIAAgAyABoaIgAaEgAqEhAQJAAkACQCAFQQFqDgMAAgECCyAAIAGhRAAAAAAAAOA\u002FokQAAAAAAADgv6APCyAARAAAAAAAANC\u002FYwRAIAEgAEQAAAAAAADgP6ChRAAAAAAAAADAog8LIAAgAaEiACAAoEQAAAAAAADwP6APCyAFQf8Haq1CNIa\u002FIQIgBUE5TwRAIAAgAaFEAAAAAAAA8D+gIgAgAKBEAAAAAAAA4H+iIAAgAqIgBUGACEYbRAAAAAAAAPC\u002FoA8LRAAAAAAAAPA\u002FIAVB\u002FwdzrUI0hr8iA6EgACABoaAgACABIAOgoUQAAAAAAADwP6AgBUETTRsgAqIhAAsgAAtZAQN\u002FQX8hASAAIAAoAgAiAkECaiIDENECBH9BfwUgACgCCCIBQQRqIAEgAkECdCICEKsBIAAoAggiAUEANgIAIAEgAmpBfzYCBCAAIAM2AgAgABCYBkEACwsbACAAIAFB\u002FwFxEA4gACACIAAoAgRrQQRrEBsLRAEBf0F\u002FIQMgACAAKAIEIAJqELwBBH9BfwUgACgCACABaiIDIAJqIAMgACgCBCABaxCrASAAIAAoAgQgAmo2AgRBAAsL7AQBBn8gACgCACIGQQFqIQJBCCEDAkACQAJAIAYtAAAiB0EwayIFQQhPBEBBfiEEAkACQAJAAkACQAJAIAdB7gBrDgsBCQkJAgkDBQQJBQALAkAgB0HiAGsOBQgJCQkACQtBDCEDDAcLQQohAwwGC0ENIQMMBQtBCSEDDAQLQQshAwwDCwJAIAFFDQAgAi0AAEH7AEcNACAGQQJqIQIgBi0AAiEFQQAhAwNAIAIhAUF\u002FIQQgBRCnBCICQQBIDQUgAiADQQR0ciIDQf\u002F\u002FwwBLDQUgAUEBaiICLQAAIgVB\u002FQBHDQALIAFBAmohAgwDCyAGQQJBBCAHQfgARhsiB2pBAWohBUEAIQNBACEEA0AgBCAHRwRAIAItAAAQpwQiBkEASARAQX8PBSAEQQFqIQQgAkEBaiECIAYgA0EEdHIhAwwCCwALCyABQQJHIANBgHhxQYCwA0dyDQEgBS0AAEHcAEcNASAFLQABQfUARw0BIAVBAmohAUEAIQJBACEEA0ACQCACQQRGDQAgASACai0AABCnBCIGQQBIDQAgAkEBaiECIAYgBEEEdHIhBAwBCwsgAkEERyAEQYC4A0lyIARB\u002F78DS3INASADQQp0QYD4P3EgBEH\u002FB3FyQYCABGohAyAFQQZqIQIMAgsgAUECRgRAQX8hBCAFDQNBACEDIAItAABBOmtBdkkNAgwDCyACLQAAQTBrIgFBB0sEQCAFIQMMAgsgBkECaiECIAEgBUEDdHIiA0EfSw0BIAYtAAJBMGsiAUEHSw0BIAZBA2ohAiABIANBA3RyIQMMAQsgBSECCyAAIAI2AgAgAyEECyAEC6MBAQV\u002FIAAoAgBBCGohAyACIgZBB3EhB0EgIQUDQCADKAIUIgQgASAFaiICSQRAIAMoAgxFBEAgACgCACEEIANCADcCDCADQoCAgICAgICAgH83AgQgAyAENgIACyADIAIQqwQgAyACNgIUIAIhBAsgACADEEkaIABBADYCBCAAIAEgByAEELYDRQRAIAVBAXYgBWohBQwBCwsgACABIAYQugEaC1ABA38gAkEAIAJBAEobIQICQANAIAIgBEYNASAAIARBAnRqIgMgAygCACIDIAFrNgIAIARBAWohBCABIANLIQVBASEBIAUNAAtBACEBCyABCysBAn8gAkEFdSIDQQBIIAEgA01yBH9BAAUgACADQQJ0aigCACACdkEBcQsLwgEBB38gACgCDCIEIQMCQANAIAMEQCAAKAIQIgcgA0ECdGpBBGsiBSgCAA0CIANBAWshAwwBCwsgAEGAgICAeDYCCCAAQQAQUBpBAA8LIAAgACgCCCADIARrQQV0ajYCCCAFKAIAZyIFBEBBICAFayEIQQAhBANAIAMgBEZFBEAgByAEQQJ0aiIJIAYgCHYgCSgCACIGIAV0cjYCACAEQQFqIQQMAQsLIAAgACgCCCAFazYCCAsgACABIAIgA0EAENwCCycBAn8gAUIAUwRAIABCACABfRAyIQMgAEEBNgIEIAMPCyAAIAEQMgskACAAQgA3AgAgACABNgIUIABCADcCCCAAIAJBhwMgAhs2AhALYwEBfwJAIAFCIIinIgJFIAJBC2pBEUtyDQACQCABQoCAgIBwVA0AIAGnIgIvAQZBBEcNACACKQMgIgFCIIinIgJFIAJBC2pBEUtyDQELIABBqzVBABASQoCAgIDgACEBCyABC80CAQJ\u002FIwBBEGsiAyQAIAMgAjcDCAJAAkAgACABEMwBIgRBAEgNACAERQRAIABCgICAgDBBASADQQhqEOACIQEMAgsgACABQT0gAUEAEBEiAkKAgICAcINCgICAgOAAUQRAIAIhAQwCCwJAAkAgAkKAgICAcFoEQAJAIAKnLQAFQRBxRQ0AIAAgAhD8AiIERQRAIAAgAhAMDAULIAAgBEYNACAAIAIgBCkDQBBNRQ0AIAAgAhAMDAILIAAgAkHVASACQQAQESEBIAAgAhAMIAFCgICAgHCDIgJCgICAgOAAUQ0EQoCAgIAwIAEgAkKAgICAIFEbIQILIAJCgICAgHCDQoCAgIAwUg0BCyAAQoCAgIAwQQEgA0EIahDgAiEBDAILIAAgAkEBIANBCGoQowEhASAAIAIQDAwBC0KAgICA4AAhAQsgA0EQaiQAIAELRwEEfyAAKAL0ASIDQQAgA0EAShshAwNAIAIgA0YEQEEADwsgAkEEdCEFIAJBAWohAiAFIAAoAvwBaiIEKAIMIAFHDQALIAQLNgADQCABIAJMRQRAIABBtQEQDSAAIAFB\u002F\u002F8DcRAUIAAoAkAoAswBIAFBA3RqKAIAIQEMAQsLCwkAIABBAhDEAwvZAQEBfyAAIAAoAkAiAyABAn8CQAJAAkACQAJAIAFBJ0YNACABQc4ARiABQTtGckUEQCABQcYARg0BIAFBLUcNAiADLQBsQQFHDQIgAEGIM0EAEBNBfw8LIAMtAG5BAXEEQCAAQe7aAEEAEBNBfw8LIAFBxgBHDQELIAJBsX9GDQMgAkFDRg0BIAJBUUcgAkFJR3ENAiAAQbvWAEEAEBNBfw8LIAJBsX9GDQIgAkFDRg0AQQEgAkFRRg0DGiACQUlHDQFBAgwDC0EFDAILEAEAC0EGCxCdAUEfdQsJACAAQQAQ2wEL6gEBBH8DQAJAIAIgA0wNACABIANqIgUtAAAiBkECdEHgrgFqIgctAAAhCAJAAkAgBkG2AUcEQCAGQcYBRw0BIAQgBSgAATYCAAwCCyAAIAUoAAEiBUEAEGMNAiAAKAKkAiAFQRRsaigCEEUNAUGL9QBBqOwAQdv0AUHM3AAQAAALIActAAMiBkEcSw0AQQEgBnQiBkGAgIAccUUEQCAGQYCAgOAAcUUEQCAGQYCAgIIBcUUNAiAAIAUoAAFBfxBjGgwCCyAAIAUoAAVBfxBjGgsgACgCACAFKAABEBALIAMgCGohAwwBCwsgAwtNAQF\u002FAkAgAkKAgICAcFQNACACpyIDLwEGQQpHDQAgAykDICICQiCIpyIDQQAgA0ELakESSRsNACAAIAEgAhBCDwsgAEGZH0EAEBJBfwsbAQJ+IAAgASACIAMgBBCzAiEGIAAgARAMIAYLLAAgACABKQMIECEgACABKQMQECEgACABKQMYECEgAEEQaiABIAAoAgQRAAAL3AQCCH8BfiMAQTBrIgUkAAJ\u002FQQAgAUKAgICAcFQNABpBACABpyIELwEGQS1HDQAaIAQoAiALIQcgBUIANwIoAkADQCAGQQJHBEACQCAAQSAQXCIIBEAgCEEIaiEJQQAhBANAIARBAkYNAiADIARBA3QiCmopAwAiDEIgiKdBdU8EQCAMpyILIAsoAgBBAWo2AgALIAkgCmogDDcDACAEQQFqIQQMAAsAC0F\u002FIQQgBkEBRw0DIAAoAhAgBSgCKBCoAgwDCyACIAZBA3RqKQMAIgxCgICAgDAgACAMEDUbIgxCIIinQXVPBEAgDKciBCAEKAIAQQFqNgIACyAIIAw3AxggBUEoaiAGQQJ0aiAINgIAIAZBAWohBgwBCwsCQCAHKAIAIgRFBEAgB0EEaiEDQQAhBANAIARBAkYNAiADIARBA3RqIgIoAgAiBiAFQShqIARBAnRqKAIAIgA2AgQgACACNgIEIAAgBjYCACACIAA2AgAgBEEBaiEEDAALAAsCQCAEQQJHDQBBAiEEIAcoAhQNACAAKAIQIgIoApgBIgNFDQAgACABIAcpAxhBASACKAKcASADETUAIAcoAgAhBAsgBSAFQShqIARBAWsiA0ECdGooAgAiAikDCDcDACAFIAIpAxA3AwggBSACKQMYNwMQQQAhBCAFIANBAEetQoCAgIAQhDcDGCAFIAcpAxg3AyAgAEE8QQUgBRD4AgNAIARBAkYNASAAKAIQIAVBKGogBEECdGooAgAQqAIgBEEBaiEEDAALAAsgB0EBNgIUQQAhBAsgBUEwaiQAIAQLxQEBBH8jAEEQayICJAAgACACQQhqIAEQ3wEhAyAAIAEQDAJAIANFBEBCgICAgOAAIQEMAQsgAiADIAMQ\u002FgEiBGoiBTYCDAJAIAIoAgggBEYEQCAAQgAQvwIhAQwBCyAAIAUgAkEMakEAQYUBEIACIQEgAiACKAIMEP4BIAIoAgxqIgQ2AgwgAUKAgICAcINCgICAgOAAUQ0AIAIoAgggBCADa0YNACAAIAEQDEKAgICAwH4hAQsgACADEDELIAJBEGokACABCwsAIABBuDtBABASCwwAIAAgARC1A0EfdgvQAgIBfwF+AkACQAJAAkACQAJAAkBBByACQiCIpyIDIANBB2tBbkkbIgMOCAAAAAQEBAQBAwsgACgC2AEgARC7ASABIALEEJwCDQEMBAsgACgC2AEgARC7AQJ\u002FIAJCgICAgMCBgPz\u002FAHwiBEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FB4MhAiAEQj+IpyEAAkACQCAEQjSIp0H\u002FD3EiAwRAIANB\u002Fw9HDQEgAlBFBEAgARAqQQAMBAsgASAAEH9BAAwDCyACUARAIAEgABCAAUEADAMLIAJCDIYiAiACeSIEhiECQQAgBKdrIQMMAQsgAkILhkKAgICAgICAgIB\u002FhCECCyABIANB\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\u002F\u002F\u002F8fcSEEDAELCyAEQf\u002F\u002F\u002F\u002F8DSw0AIAYoAhQgB2opAwAiEEKAgICAcINCgICAgJB\u002FUg0AIAAgEBCoASIERQ0AIARB8f8AIAQtAAAbIQIgBCEDCyAFIAI2AiAgBUHQAGpB6CogBUEgahDzASAAIAMQMQJAIAgoAggiAi8BBhDgAQRAIAIoAiAiBi8AESICQQt2QQFxIQogAkGACHFFDQFBfyEDAkAgBigCUCICRQ0AIAgoAiAgBigCFEF\u002Fc2ohDyACIAYoAkxqIQkgBigCRCEEQQAhDQNAIAQhAyACIAlPDQEgAkEBaiEHAn8gAi0AACICRQRAAkAgBUHoAGogByAJELsFIgtBAEgNACAFKAJoIQ5BACEEIwBBEGsiAiQAAkAgAkEMaiAHIAtqIgsgCRC7BSIHQQBIBEBBfyEHDAELIAIoAgwiBEEBdkEAIARBAXFrcyEECyAFIAQ2AmwgAkEQaiQAIAdBAEgNACAFKAJsIANqIQQgByALagwCCyAGKAJEIQMMAwsgAyACQQFrIgIgAkH\u002FAXFBBW4iDkEFbGtB\u002FwFxakEBayEEIAcLIQIgDSAOaiINIA9NDQALCyAFIAAgBigCQBCPBCICQZ6AASACGzYCECAFQdAAaiIEQdUqIAVBEGoQ8wEgACACEDEgA0F\u002FRwRAIAUgAzYCACAEQdPrACAFEPMBCyAFQdAAakEpEA4MAQtBACEKIAVB0ABqQbuJAUEAEPMBCyAFQdAAakEKEA4gCkUNAAsLIAVB0ABqQQAQDkKAgICAICEQIAUoAlxFBEAgACAFKAJQEGAhEAsgBUHQAGoQiQEgACABQTYgEEEDEBUaIAVB8ABqJAALjwMCA38EfiMAQRBrIgMkACABQQhrIgQpAwAhBgJ\u002FAkACQCAAIAFBEGsiASkDABBlIgdCgICAgHCDQoCAgIDgAFEEQCAAIAYQDAwBCyAAIAYQZSIGQoCAgIBwg0KAgICA4ABRBEAgACAHEAwMAQsgB0IgiCIIQvb\u002F\u002F\u002F8PUiAGQiCIIglC9v\u002F\u002F\u002Fw9ScUUEQCAIIAlSBEAgACAHEAwgACAGEAwgAEH2GUEAEBIMAgsgACACIAEgByAGIAAoAhAoAqwCESMADQEMAgsgACADQQxqIAcQlQEEQCAAIAYQDAwBCyAAIANBCGogBhCVAQ0AIAECfwJAAkACQAJAAkACQCACQa4Baw4DAQMCAAsCQCACQaEBaw4CBQAECyADKAIMIAMoAgh1DAULIAMoAgggAygCDHEMBAsgAygCCCADKAIMcgwDCyADKAIIIAMoAgxzDAILEAEACyADKAIMIAMoAgh0C603AwAMAQsgAUKAgICAMDcDACAEQoCAgIAwNwMAQX8MAQtBAAshBSADQRBqJAAgBQuGBQIHfwJ+AkAgAUKAgICAcINCgICAgJB\u002FUgRAQoCAgIDgACEKIAAgARA0IgFCgICAgHCDQoCAgIDgAFENAQsCQCACQoCAgIBwg0KAgICAkH9RDQBCgICAgOAAIQogACACEDQiAkKAgICAcINCgICAgOAAUg0AIAEhAgwBCwJAIAKnIgUpAgQiCkL\u002F\u002F\u002F\u002F\u002FB4NQDQAgAaciAykCBCELAkAgAygCAEEBRyAKIAuFQoCAgIAIg0IAUnINACADIAAoAhAoAgwRBQAgBSkCBCIKpyIEQf\u002F\u002F\u002F\u002F8HcSIHIAMpAgQiC6ciBkH\u002F\u002F\u002F\u002F\u002FB3EiCGogBEEfdnQgBkEfdiIJQRFzakkNACAFQRBqIQYgA0EQaiEEIAkEQCAEIAhBAXRqIAYgB0EBdBAeGiADIAMpAgQiCiAFKQIEfEL\u002F\u002F\u002F\u002F\u002FB4MgCkKAgICAeIOENwIEDAILIAQgCGogBiAHEB4aIAMgAykCBCIKIAUpAgR8Qv\u002F\u002F\u002F\u002F8HgyILIApCgICAgHiDhDcCBCAEIAunakEAOgAADAELAn4CQAJAIAunQf\u002F\u002F\u002F\u002F8HcSAKp0H\u002F\u002F\u002F\u002F\u002FB3FqIgdBgICAgARPBEAgAEHkyABBABA6DAELIAAgByAKIAuEpyIGQR92EOkBIggNAQtCgICAgOAADAELIAhBEGohBAJAIAZBAE4EQCAEIANBEGogAygCBEH\u002F\u002F\u002F\u002F\u002FB3EQHiIEIAMoAgRB\u002F\u002F\u002F\u002F\u002FwdxaiAFQRBqIAUoAgRB\u002F\u002F\u002F\u002F\u002FwdxEB4aIAQgB2pBADoAAAwBCyAEIAMgAygCBEH\u002F\u002F\u002F\u002F\u002FB3EQkwUgBCADKAIEQQF0aiAFIAUoAgRB\u002F\u002F\u002F\u002F\u002FwdxEJMFCyAIrUKAgICAkH+ECyEKIAAgARAMDAELIAEhCgsgACACEAwgCgsPACAAIAFCgICAgDAQggILCwAgAEGfCUEAEBILjgIBA38jAEEQayIFJAAgBSAAOQMIIAUgAUEBayIHNgIAIAZBgAFB9t8AIAUQSBogAyAGLQAAQS1GNgIAIAQgBi0AAToAACABQQJOBEAgBEEBaiAGQQNqIAcQHhoLIAEgBGpBADoAACACIQkgASAGaiABQQFKakECaiEBA0AgASICQQFqIQEgAiwAACIDEI8GDQALQQEhBAJAAkACQCADQf8BcUEraw4DAQIAAgtBACEECyABLAAAIQMgASECC0EAIQEgA0EwayIDQQlNBEADQCABQQpsIANrIQEgAiwAASEIIAJBAWohAiAIQTBrIgNBCkkNAAsLIAlBACABayABIAQbQQFqNgIAIAVBEGokAAuADAIHfwV+IwBBoANrIgUkAAJAIAG9IgxCgICAgICAgPj\u002FAINCgICAgICAgPj\u002FAFEEQCAMQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoGAgICAgID4\u002FwBaBEAgBUHOwrkCNgKgAgwCCyAFQaACaiICIQMgAUQAAAAAAAAAAGMEQCAFQS06AKACIAJBAXIhAwsgA0HZCy0AADoACCADQdELKQAANwAADAELAkACQAJAIARFBEACfiABmUQAAAAAAADgQ2MEQCABsAwBC0KAgICAgICAgIB\u002FCyINQoCAgICAgIAQfUKBgICAgICAYFQgDbkgAWJyDQEgBUEAOgDlASANIA1CP4ciDIUgDH0hDCACrSEOIAVB5QFqIQIDQCACIgNBAWsiAiAMIAwgDoAiDyAOfn2nIgRBMHIgBEHXAGogBEEKSRs6AAAgDCAOWiELIA8hDCALDQALIA1CAFMEQCADQQJrIgJBLToAAAsgBUGgAmogAhCHBgwEC0QAAAAAAAAAACABIAFEAAAAAAAAAABhGyEBIARBAkYEQEEAIQICQCAFQaACaiIEIAEgA0EBaiIHQQAQiQMgBWotAJ8CQTVHDQAgBCABIAdBgAgQiQMiBiAFQaABaiIIIAEgB0GAEBCJA0cNACAEIAggBhBoDQBBgAhBgBAgBS0AoAJBLUYbIQILIAVBoAJqIAEgAyACEIkDGgwECyAEQQNxQQFGDQELIAVBnwFqIQZBESEHQQEhAgNAIAIgB08EQEEAIQJBFSEDDAMLIAEgAiAHakEBdiIDIAVBHGogBUEgaiAFQaABakEAIAVBoAJqIggQuQIgCBCABiABYQRAQQEgAyADQQBKGyEHA0AgA0ECSA0CIAMgBmotAABBMEcEQCADIQcMAwUgA0EBayEDDAELAAsABSADQQFqIQIMAQsACwALQQAhAiABIANBAWoiByAFQRxqIgkgBUEYaiIKIAVBoAFqIgZBACAFQaACaiIIELkCAkAgAyAGai0AAEE1Rw0AIAEgByAJIAogBkGACCAIELkCIAEgByAFQRRqIAVBEGogBUEgaiIJQYAQIAgQuQIgBiAJIAcQaA0AIAUoAhwgBSgCFEcNAEGACEGAECAFKAIYGyECCyADIQcLIAEgByAFQRxqIAVBIGogBUGgAWogAiAFQaACaiICELkCIAUoAiAEQCAFQS06AKACIAJBAXIhAgsgBSgCHCEGAkAgBEEEcQ0AIAMgBkggBkEATHJFBEAgBiAHTgRAQQAhAyAGIAdrIgRBACAEQQBKGyEEIAIgBUGgAWogBxAeIAdqIQIDQCADIARHBEAgAkEwOgAAIANBAWohAyACQQFqIQIMAQsLIAJBADoAAAwDCyACIAVBoAFqIAYQHiAGaiICQS46AABBACEDIAcgBmsiBEEAIARBAEobIQQDQCACQQFqIQIgAyAERwRAIAIgBUGgAWogAyAGamotAAA6AAAgA0EBaiEDDAELCyACQQA6AAAMAgsgBkEFakEFSw0AIAJBsNwAOwAAQQAhA0EAIAZrIQQgAkECaiECA0AgAyAERwRAIAJBMDoAACADQQFqIQMgAkEBaiECDAELCyACIAVBoAFqIAcQHiAHakEAOgAADAELIAIgBS0AoAE6AAACQCAHQQJIBEAgAkEBaiECDAELIAJBLjoAASACQQJqIQJBASEDA0AgAyAHRg0BIAIgBUGgAWogA2otAAA6AAAgA0EBaiEDIAJBAWohAgwACwALIAJB5QA6AAAgBkEBayEDIAZBAEwEfyACQQFqBSACQSs6AAEgAkECagshAiAFIAM2AgAjAEEQayIEJAAgBCAFNgIMIwBBoAFrIgMkACADQQhqIgdBgNIEQZABEB4aIAMgAjYCNCADIAI2AhwgA0H\u002F\u002F\u002F\u002F\u002FB0F+IAJrIgYgBkH\u002F\u002F\u002F\u002F\u002FB0sbIgY2AjggAyACIAZqIgY2AiQgAyAGNgIYIAdB7usAIAUQkwQgAkF+RwRAIAMoAhwiAiACIAMoAhhGa0EAOgAACyADQaABaiQAIARBEGokAAsgACAFQaACahBgIRAgBUGgA2okACAQCykBAX8gAUIgiKdBdU8EQCABpyIDIAMoAgBBAWo2AgALIAAgASACEJIBC00BAX8CQCAAIAEgACgCBEH\u002F\u002F\u002F\u002F\u002FB3EiACABKAIEQf\u002F\u002F\u002F\u002F8HcSICIAAgAkgbEOoFIgENAEEAIQEgACACRg0AQX9BASAAIAJJGyEBCyABCwoAIAAgARC1A0ULiwMCA38BfCMAQSBrIgQkAAJAAkACQAJAAkAgAkIgiKciBUEDTwRAIAVBdkcNASAEQRxqIAKnQQRqIgNBARDtASAAKALYASAEQQhqIgUQuwEgBSAENQIcEDIaIAUgAxC9AiEGIAUQGSAAIAIQDCAGRQ0CDAQLIAKnIgNBAEgNASAEIAM2AhwMAwsgBUEHa0FtTQRAIAQCfyACQoCAgIDAgYD8\u002FwB8vyIHRAAAAAAAAPBBYyAHRAAAAAAAAAAAZnEEQCAHqwwBC0EACyIDNgIcIAcgA7hhDQMMAQsgAwRAQX8hAyAAIAIQlgEiAkKAgICAcINCgICAgOAAUQ0EIAAgBEEcaiACQQEQvgJFDQMMBAsgACAEQRxqIAIQdQRAIAAgAhAMDAILQX8hAyAAIAIQlgEiAkKAgICAcINCgICAgOAAUQ0DIAAgBEEEaiACQQAQvgINAyAEKAIEIAQoAhxGDQILIABBiscAQQAQRAtBfyEDDAELIAEgBCgCHDYCAEEAIQMLIARBIGokACADC0ABAX4gABDiASICQoCAgIBwg0KAgICA4ABSBEAgAqdBBGogARCcAkUEQCACDwsgACACEAwgABBwC0KAgICA4AALMgEBfyMAQdAAayICJAAgAiAAIAJBEGogARCBATYCACAAQbzpACACEMMCIAJB0ABqJAALoAECAX8BfiMAQRBrIgUkACAFIAQ2AgxBfyEEIAAgASAFQQxqENMBRQRAIAMoAgAiAEF8cSABIAIgAygCBCAAQQNxQQJ0QYS3AWooAgARGwAhBiADEOAFIAUoAgwiACAAKAIAQf\u002F\u002F\u002F\u002F8DcTYCACADQoCAgIAwIAYgBkKAgICAcINCgICAgOAAUSIAGzcDAEF\u002FQQAgABshBAsgBUEQaiQAIAQLFQECfiAAIAEQ6AEhAyAAIAEQDCADCw0AIAAgASACQQIQyAIL1QEBA38jAEEQayIFJABBfyEDAkAgACgCFA0AAkACQCABQYCAgIAETgRAIAAoAgBB5MgAQQAQOgwBCyABIAAoAgxBA2xBAm0iBCABIARKGyEBIAAoAhAiBCACQYACSHJFBEAgACABEOADIQMMAwsgACgCACAAKAIEIAEgBHQgBGtBEWogBUEMahCnASICDQELIAAQ9wIMAQsgBSgCDCEDIAAgAjYCBCAAQf\u002F\u002F\u002F\u002F8DIAMgACgCEHYgAWoiACAAQf\u002F\u002F\u002F\u002F8DThs2AgxBACEDCyAFQRBqJAAgAwsqAQF\u002FIAAoAhAiA0EQaiABIAIgAygCCBEBACIBIAJFckUEQCAAEHALIAELgQECAn8BfgJAIAEpAgQiBEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F79\u002FVgRAIAEoAgwhAAwBCyAAKAI0IARCIIinIAAoAiRBAWtxQQJ0aiECIAAoAjghAwNAIAMgAigCACIAQQJ0aigCACICIAFGDQEgAkEMaiECIAANAAtBxocBQajsAEH\u002FFEH4DhAAAAsgAAupBwIJfwF+AkACQAJAAn8gAkECTARAIAIgASkCBCIMQj6Ip0YEQCAAIAEQxgIiBEHXAUoNBSABIAEoAgBBAWs2AgAgBA8LIAAoAjQgACgCJEEBayABIAIQ6wVB\u002F\u002F\u002F\u002F\u002FwNxIgdxIgpBAnRqIQMgDKdB\u002F\u002F\u002F\u002F\u002FwdxIQUDQCACIAMoAgAiBEUNAhoCQCAAKAI4IARBAnRqKAIAIgMpAgQiDKdB\u002F\u002F\u002F\u002F\u002FwdxIAVHIAxCPoinIAJHciAMQiCIp0H\u002F\u002F\u002F\u002F\u002FA3EgB0dyDQAgAyABIAUQ6gUNACAEQdgBSA0EIAMgAygCAEEBajYCAAwECyADQQxqIQMMAAsACyACQQNHIQdBAwshBQJAIAAoAjwNAEEAIQQgAEEQaiILIAAoAjhB0wEgACgCLEEDbEECbSICIAJB0wFMGyICQQJ0IAAoAggRAQAiCEUNASAAKAIsIgkhAyAJRQRAIAtBECAAKAIAEQMAIgZFBEAgCyAIIAAoAgQRAAAMAwsgBkKAgICAgICAgEA3AgQgBkEBNgIAIAZBADYADCAIIAY2AgAgACAAKAIoQQFqNgIoQQEhAwsgACADNgI8IAAgCDYCOCAAIAI2AiwgCSACIAIgCUkbIQQgAkEBayEGA0AgAyAERg0BIAAoAjggA0ECdGpBASADQQFqIgJBAXRBAXIgAyAGRhs2AgAgAiEDDAALAAsCQCABBEAgASkCBCIMQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP1gEQCABIAwgBa1CPoaENwIEDAILIABBEGogDKciAkEfdSACQf\u002F\u002F\u002F\u002F8HcSACQR92dGpBEWogACgCABEDACICRQRAQQAhBAwECyACQQE2AgAgAiACKQIEQv\u002F\u002F\u002F\u002F93gyABKQIEQoCAgIAIg4QiDDcCBCACIAxCgICAgHiDIAEpAgRC\u002F\u002F\u002F\u002F\u002FweDhDcCBCACQRBqIAFBEGogASgCBCIDQf\u002F\u002F\u002F\u002F8HcSADQR92dCADQX9zQR92ahAeGiAAIAEQkAQgAiEBDAELIABBEGpBECAAKAIAEQMAIgFFBEBBAA8LIAFCgYCAgICAgICAfzcCAAsgACAAKAI4IAAoAjwiBEECdGoiAigCAEEBdjYCPCACIAE2AgAgASAENgIMIAEgATUCBCAHrUIghoQgBa1CPoaENwIEIAAgACgCKEEBajYCKCAFQQNGDQIgASAAKAI0IApBAnRqIgEoAgA2AgwgASAENgIAIAAoAiggACgCMEgNAiAAIAAoAiRBAXQQ1QUaDAILIAFFDQELIAAgARCQBCAEDwsgBAsmAQF\u002FIwBBEGsiBCQAIAQgAjYCDCAAIAMgASACEI4EIARBEGokAAunAQEDfyMAQaABayIEJAAgBCAAIARBngFqIAEbIgU2ApQBQX8hACAEIAFBAWsiBkEAIAEgBk8bNgKYASAEQQBBkAEQLCIEQX82AkwgBEGmAzYCJCAEQX82AlAgBCAEQZ8BajYCLCAEIARBlAFqNgJUAkAgAUEASARAQcTUBEE9NgIADAELIAVBADoAACAEIAIgA0GkA0GlAxCUBCEACyAEQaABaiQAIAALCQAgAL1CNIinC5kBAQN8IAAgAKIiAyADIAOioiADRHzVz1o62eU9okTrnCuK5uVavqCiIAMgA0R9\u002FrFX4x3HPqJE1WHBGaABKr+gokSm+BARERGBP6CgIQUgAyAAoiEEIAJFBEAgBCADIAWiRElVVVVVVcW\u002FoKIgAKAPCyAAIAMgAUQAAAAAAADgP6IgBSAEoqGiIAGhIARESVVVVVVVxT+ioKELkgEBA3xEAAAAAAAA8D8gACAAoiICRAAAAAAAAOA\u002FoiIDoSIERAAAAAAAAPA\u002FIAShIAOhIAIgAiACIAJEkBXLGaAB+j6iRHdRwRZswVa\u002FoKJETFVVVVVVpT+goiACIAKiIgMgA6IgAiACRNQ4iL7p+qi9okTEsbS9nu4hPqCiRK1SnIBPfpK+oKKgoiAAIAGioaCgC40BACAAIAAgACAAIABECff9DeE9Aj+iRIiyAXXg70k\u002FoKJEO49otSiCpL+gokRVRIgOVcHJP6CiRH1v6wMS1tS\u002FoKJEVVVVVVVVxT+gIACiIAAgACAAIABEgpIuscW4sz+iRFkBjRtsBua\u002FoKJEyIpZnOUqAECgokRLLYocJzoDwKCiRAAAAAAAAPA\u002FoKMLngMDAX4DfwN8AkACQAJAAkAgAL0iAUIAWQRAIAFCIIinIgJB\u002F\u002F8\u002FSw0BCyAAvUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag1AEQEQAAAAAAADwvyAAIACiow8LIAFCAFkNASAAIAChRAAAAAAAAAAAow8LIAJB\u002F\u002F+\u002F\u002FwdLDQJBgIDA\u002FwMhA0GBeCEEIAJBgIDA\u002FwNHBEAgAiEDDAILIAGnDQFEAAAAAAAAAAAPCyAARAAAAAAAAFBDor0iAUIgiKchA0HLdyEECyAEIANB4r4laiICQRR2arciBkQAAOD+Qi7mP6IgAUL\u002F\u002F\u002F\u002F\u002FD4MgAkH\u002F\u002Fz9xQZ7Bmv8Daq1CIIaEv0QAAAAAAADwv6AiACAAIABEAAAAAAAAAECgoyIFIAAgAEQAAAAAAADgP6KiIgcgBSAFoiIFIAWiIgAgACAARJ\u002FGeNAJmsM\u002FokSveI4dxXHMP6CiRAT6l5mZmdk\u002FoKIgBSAAIAAgAEREUj7fEvHCP6JE3gPLlmRGxz+gokRZkyKUJEnSP6CiRJNVVVVVVeU\u002FoKKgoKIgBkR2PHk17znqPaKgIAehoKAhAAsgAAvvAgEIfyMAQRBrIgQkACAEQfz7ADYCDCAEQvXXgICgjwU3AgQCQAJAIAFFDQADQCACQQNGBEAgAUEBcSIHRSABQQZxRXIhCQNAIAZB8gJGDQMCQAJAIAUgBkECdEGggAJqKAIAIgJBBHZBD3EiCHZBAXFFDQAgAkEPdiEBIAJBCHZB\u002FwBxIQMCQAJAAkAgCEEEaw4CAAECCyAJRQ0BIAEgB2ohCEEAIQIDQCACIANPDQMgAiAIaiEBIAJBAmohAiAAIAEgAUEBahBpRQ0ACwwDCyAJRQ0AIAFBAWohAyAHRQRAIAAgASADEGkNAwtBfyECIAAgAyABQQJqIgMQaQ0HIAdFDQEgACADIAFBA2oQaUUNAQwHCyAAIAEgASADahBpDQELIAZBAWohBgwBCwtBfyECDAMFIAEgAnZBAXEEQCAEQQRqIAJBAnRqKAIAIAVyIQULIAJBAWohAgwBCwALAAtBACECCyAEQRBqJAAgAguQAgEJfyMAQRBrIgQkAAJAIARBDGogAEHQzQNBHRCaBiIBQQBIDQAgAUGwzgNqIQIgBCgCDCEBA0AgASEGIAItAAAiB8AhCQJAIAdBP3EiAUEwSQRAIAJBAWohBQwBCwJ\u002FIAFBN00EQCACQQJqIQUgAUEIdCEBIAItAAEhCEGwoH8MAQsgAkEDaiEFIAItAAEgAUHI\u002F\u002F8HanJBCHQhCCACLQACIQFBsBALIQIgASACaiAIaiEBCyAFIAlBAE5qIQIgASAGakEBaiIBIABNDQALAkACQAJAIAdBBnYOAwABAwILIAJBAWstAAAhAwwCCyACQQFrLQAAIAAgBmtqIQMMAQtB5gEhAwsgBEEQaiQAIAMLUwEBfyABIAAoAgQiAkoEQCAAKAIMIAAoAgggASACQQNsQQJtIgIgASACShsiAUECdCAAKAIQEQEAIgJFBEBBfw8LIAAgATYCBCAAIAI2AggLQQALHwAgACABNgIMIABBADYCCCAAQgA3AgAgAEGaAzYCEAsqAQJ\u002FIwBBEGsiASQAIAFBBGogAEEBEJ0GGiABKAIEIQIgAUEQaiQAIAILawIBfgJ\u002FIAAoAgAhAwNAIAMtAAAiBEE6a0H\u002FAXFB9gFPBEAgAkIKfiAErUL\u002FAYN8QjB9IgJC\u002F\u002F\u002F\u002F\u002FwdUIgQgAXIEQCACQv\u002F\u002F\u002F\u002F8HIAQbIQIgA0EBaiEDDAIFQX8PCwALCyAAIAM2AgAgAqcLCwAgAEHaC0EAED8LFgAgACABQf8BcRAOIAAgAkH\u002FAXEQDgtfAQN\u002FIwBBIGsiBSQAIAAoAgAhBiAFQgA3AhggBUKAgICAgICAgIB\u002FNwIQIAUgBjYCDCAFQQxqIgYgAa0QMiEBIAAgBiACIAMgBBCvAyEHIAYQGSAFQSBqJAAgByABcgtXAQJ\u002FIwBBIGsiBSQAIAAoAgAhBiAFQgA3AhggBUKAgICAgICAgIB\u002FNwIQIAUgBjYCDCAFQQxqIgYgAhCcAhogACABIAYgAyAEEEAaIAYQGSAFQSBqJAALTAEEfyAAKAIMIQIDQAJAIAEgAkcEfyAAKAIQIAFBAnRqKAIAIgRFDQEgACgCCCAEaCABIAJrQQV0cmoFQQALDwsgAUEBaiEBDAALAAs5AQJ\u002FIAFBACABQQBKGyEBA0AgASACRgRAQQAPCyACQQJ0IQMgAkEBaiECIAAgA2ooAgBFDQALQQELPwECfwNAIAFFIAIgA01yRQRAIAAgA0ECdGoiBCABIAQoAgAiAWoiBDYCACABIARLIQEgA0EBaiEDDAELCyABC4AHAQx\u002FQQNBgICAgAJBAUEcIAJBBXZBP3EiBWt0IAVBP0YbIg5rIQ8CQAJAAkACQAJAAkACfyACQRBxBEBB\u002F\u002F\u002F\u002F\u002FwMgAUH\u002F\u002F\u002F\u002F\u002FA0YNARogACgCCCABagwBCyABIgYgAkEIcUUgACgCCCIFIA9Ocg0AGiAGQf\u002F\u002F\u002F\u002F8DRg0BIA5BA2sgBmogBWoLIQYgA0EFdCELIAJBB3EiDUEGRgRAIAAoAhAiCCADIAsgBkF\u002Fc2oQmgIhBwwDCyAAKAIQIQgCfyALQX8gBiAGQQBIG2tBAmsiDEEFdSIFQQBIBEBBAAwBC0EBIQlBASAIIAVBAnRqKAIAQX9BfiAMdEF\u002FcyAMQR9xQR9GG3ENABoDQCAFQQBKIQlBACAFQQBMDQEaIAggBUEBayIFQQJ0aigCAEUNAAtBAQsgCCADIAsgBkF\u002Fc2oQmgIiBXIhCgJAAkACQAJAAkAgDQ4HAAYBAQMCAwQLIAkgBUVyBEAgBUEARyEHDAYLIAggAyALIAZrEJoCIQcMBQsgCkEAIAAoAgQgDUECRkYbIQcMBAtBASEHIAoNBCAGQQBKDQYMBwsgBSEHIAoNAwwECxABAAtBtfgAQdjsAEGKBEGz4QAQAAALIApFDQELIARBEHIhBAsgBkEATARAIAdFDQIgAEEBEFAaIAAoAhBBgICAgHg2AgAgACAAKAIIIAZrQQFqNgIIIARBGHIPCyAHRQ0AIAsgBmsiBUEFdSIHIAMgAyAHSRshDUEBIQpBASAFdCEJIAchBQNAIAUgDUYEQCADIQUDQCAFQQFrIgUgB0hFBEAgCCAFQQJ0aiIJIApBH3QgCSgCACIKQQF2cjYCAAwBCwsgACAAKAIIQQFqNgIIDAILIAggBUECdGoiDCAMKAIAIgwgCWoiEDYCAEEBIQkgBUEBaiEFIAwgEEsNAAsLIA8gACgCCCIFSgRAIAJBCHFFDQEgBEEBdkEIcSAEciEECyAFIA5KBEAgACAAKAIEIAEgAhC3Aw8LQQAhBSALIAZrIgJBBXUiAUEATgRAIAJBH3EiAgRAIAggAUECdGoiBSAFKAIAQX9BICACa3RBf3MgAnRxNgIACyABIQULA0AgBSIBQQFqIQUgCCABQQJ0aiICKAIARQ0ACyABQQBKBEAgCCACIAMgAWsiA0ECdBCrAQsgACADEFAaIAQPCyAAIAAoAgQQgAEgBEEYcgukAgEBfwJ\u002FAn8gAUH\u002FAE0EQCAAIAE6AAAgAEEBagwBCwJAIAFB\u002Fw9NBEAgACABQQZ2QcABcjoAACAAIQIMAQsCfyABQf\u002F\u002FA00EQCAAIAFBDHZB4AFyOgAAIABBAWoMAQsCQCABQf\u002F\u002F\u002FwBNBEAgACABQRJ2QfABcjoAACAAIQIMAQsCfyABQf\u002F\u002F\u002Fx9NBEAgACABQRh2QfgBcjoAACAAQQFqDAELQQAgAUEASA0FGiAAIAFBHnZB\u002FAFyOgAAIAAgAUEYdkE\u002FcUGAAXI6AAEgAEECagsiAiABQRJ2QT9xQYABcjoAAAsgAiABQQx2QT9xQYABcjoAASACQQJqCyICIAFBBnZBP3FBgAFyOgAACyACIAFBP3FBgAFyOgABIAJBAmoLIABrCwsNACAAIAEgARA9EHIaC1IBAn8CfyAAKAIEIgMgAmoiBCAAKAIISwR\u002FQX8gACAEELwBDQEaIAAoAgQFIAMLIAAoAgAiA2ogASADaiACEB4aIAAgACgCBCACajYCBEEACxoLpAICBH8BfiMAQRBrIgUkAAJAIAAgAUECEF4iCEKAgICAcINCgICAgOAAUQ0AAkACQCACQQFHDQAgAykDACIBQiCIpyIEQQAgBEELakESSRsNACAAIAVBDGogAUEBEL4CDQEgACAIQTACfiAFKAIMIgJBAE4EQCACrQwBC0KAgICAwH4gAri9IgFCgICAgMCBgPz\u002FAH0gAUKAgICAgICA+P8AVhsLEDlBAEgNAQwCC0EAIQQgAkEAIAJBAEobIQIDQCACIARGDQIgAyAEQQN0aikDACIBQiCIp0F1TwRAIAGnIgYgBigCAEEBajYCAAsgACAIIAQgARCGAiEHIARBAWohBCAHQQBODQALCyAAIAgQDEKAgICA4AAhCAsgBUEQaiQAIAgLjwECA34BfyAAIAIpAwAiA0EAEGsiBkUEQEKAgICA4AAPCyAAIANCgICAgDAQ\u002FQEiA0KAgICAcIMiBEKAgICA4ABRBEAgAw8LIAJBCGohAiAEQoCAgIAwUQRAIABCgICAgDAgACACIAYvAQYQpgYPCyAAIANBASABIAFBAUwbQQFrIAIQvwMhBSAAIAMQDCAFC28CAX4CfyABQoCAgIAIWQRAIABBiscAQQAQREKAgICA4AAPCyAAEDsiAkKAgICAcINCgICAgOAAUSABQgBXckUEQCAAIAKnIgMgAaciBBDYBUEASARAIAAgAhAMQoCAgIDgAA8LIAMgBDYCKAsgAgs+ACAAKAIAIAEgAiADEOUCIgBBAE4EQCABKAJ0IABBBHRqIgEgBEEDdEEIcSABKAIMQXRxckEDcjYCDAsgAAtwAQJ\u002FIAEoAgBBAEgEQCABIAAQLTYCAAsgAEEREA0gAEGxARANIAJBACACQQBKGyECIABB6gBBfxAYIQQDQCACIANGRQRAIABBDhANIANBAWohAwwBCwsgAEEGEA0gAEHsACABKAIAEBgaIAAgBBAaC2gAIAAgASACEEwiAEEATgRAIAEoAnQgAEEEdGoiAiACKAIMQY9+cSADQQR0QfABcXI2AgwgAiABKAK8ASIDNgIEIAIgASgCwAE2AgggASgCzAEgA0EDdGogADYCBCABIAA2AsABCyAAC20BAX8gACABQfwBakEQIAFB+AFqIAEoAvQBQQFqEGRFBEAgASABKAL0ASIDQQFqNgL0ASABKAL8ASADQQR0aiIDQX82AgAgAyADLQAEQfgBcToABCADIAEoArwBNgIIIAMgACACEBY2AgwLIAMLEQAgACABIAIgA0EAQQAQggELYgECfwJAAkAgACgCQCIAKAKYAiIBQQBIDQAgACgCgAIgAWotAAAiAEEjayIBQQ1NQQBBASABdEHl8ABxGw0BAkAgAEHsAGsOBAIBAQIACyAAQewBa0ECSQ0BC0EBIQILIAILTgEBf0F\u002FIQECQCAAQfsAECgNACAAKAIQQf0ARwRAIAAQdBoDQCAAQQcQ2wENAiAAKAIQQf0ARw0ACyAAENoBC0F\u002FQQAgABAPGyEBCyABC5gBAQV\u002FIAEoAhQiBUEAIAVBAEobIQYgAUEQaiEEAkADQCADIAZHBEAgBCgCACADQQN0aigCACACRg0CIANBAWohAwwBCwtBfyEDIAAgBEEIIAFBGGogBUEBahBkDQAgASABKAIUIgRBAWo2AhQgASgCECEHIAAgAhAWIQEgByAEQQN0aiIAQQA2AgQgACABNgIAIAYhAwsgAwtlAQF\u002FIABB+wAQRUUEQCAAQbXmAEEAEBNBAA8LAkAgABAPDQAgACgCEEGBf0cEQCAAQaXmAEEAEBNBAA8LIAAoAgAgACkDIBAwIgFFDQAgABAPRQRAIAEPCyAAKAIAIAEQEAtBAAuKFQEafyMAQeAAayIEJAAgACgCACEIIAAoAkAhBiAEQQA2AkwgACgCGCEUIAYgBi0AbiIWQQFyOgBuAn8CQAJAIAAQDw0AAkACQCAAKAIQQYN\u002FRgRAIAAoAihFDQEgABDcAQwDCyABIAJBAkZyDQEgAEGV1wBBABATDAILIAggACgCIBAWIQkgABAPDQILIAFFBEAgCCAJQf0AIAkbEBYhCgsgABB0GgJ\u002FIAAoAhAiEkFMRgRAIAAQDw0DIAAQogINA0EBDAELIABBBhANQQALIQEgCQRAIAAgBiAJQQIQnQFBAEgNAgsgAEH7ABAoDQEgEkFMRiEXIAAQdBogAEECEA0gBigChAIhGCAAQQAQOCAAQdYAEA0gACAJQRZBLyAKGyAJGxAXIAAgARBYIAYoApgCIRkDQCADQQJGRQRAIARBEGogA0EUbGoiASADNgIQIAFBADYCCCABQgA3AgAgA0EBaiEDDAELCyAEQQA2AkRBCUEIIBJBTEYbIRUgEkFMRyEaAkACQANAAkACfwJAAn8CQCAAKAIQIgVBO0cEQCAFQf0ARg0FIAVBVkYhASABDQFBAAwCC0EAIQMgABAPRQ0FDAkLQQAhAyAAEA8NCAJAIAAoAhAiBUH7AEcEQCAFQTtrDgMDAQMBCyAAIARBEGogAUEUbGoiBSgCACIBBH8gAQUgACAFEMIDDQogBSgCAAs2AkAgAEEHQQAgACgCGCAAKAIUQQAgBEHQAGoQ3QFBAEgNCSAAEHQaIABBuAEQDSAAQQgQFyAAQQAQFCAAQRsQDSAAQSQQDSAAQQAQFCAAQQ4QDSAAENoBIAAgACgCQCgCBDYCQAwFCyAAQRsQDUEBCyENIAAoAhghEyAAIARBzABqQQFBAEEBEMYDIQsgBCgCTCIDIAtBAE4NARoMBwsgBEEsNgJMIAAoAhghE0EAIQ1BACEBQQAhC0EsCyIDQT1HIAFyQQEgC0Hv\u002F\u002F\u002F\u002FB3EiDxtFIANB+QBGciADQTxGIAFxcgRAIABB2dYAQQAQEwwGCyALQRBxIQ4CQAJAAkACQCALQe7\u002F\u002F\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\u002F\u002F\u002F\u002F\u002FB4MgAVcNACAEQoCAgIAIg0IAUg0BCyABQgF8DAELIAMgAT4CDCAAIANBDGoQxgEaIAM0AgwLIQUgA0EQaiQAIAULLgEBfwJAIAFCgICAgHBUDQAgAaciAi8BBkESRw0AIAJBIGoPCyAAQRIQigNBAAunBQIJfwJ+IwBBIGsiAyQAAkAgASkDQCILQoCAgIBwg0KAgICAMFEEQEKAgICA4AAhDCAAQQsQhgEiC0KAgICAcINCgICAgOAAUQ0BIANCADcDGCADQgA3AxAgA0IANwMIIAAgA0EIaiABQQAQlgUhBCAAKAIQIgJBEGogAygCCCACKAIEEQAAAkACQCAEBEAgAygCFCEGDAELIAunIQcgAygCHCIIQQAgCEEAShshCSADKAIUIQZBACEEAkADQCAEIAlHBEACQAJAAkAgBiAEQQxsaiICKAIIIgUEQCADIAE2AgAMAQsCQCAAIAMgA0EEaiABIAIoAgAQ3wMiBQ4EAAYGAgYLIAMoAgQhBQsgBSgCDEH+AEYEQCACQQI2AgQgAiADKAIAKAIQIAUoAgBBA3RqKAIENgIIDAILIAJBATYCBCAFKAIEIgoEQCACIAo2AggMAgsgAiADKAIAKAJIKAIkIAUoAgBBAnRqKAIANgIIDAELIAJBADYCBAsgBEEBaiEEDAELCyAGIAhBDEE+IAAQ1wFBACEEA0AgBCAJRg0DAkACQAJAIAYgBEEMbGoiAigCBEEBaw4CAAECCyACKAIIIQUgACAHIAIoAgBBJhB3IgJFDQQgBSAFKAIAQQFqNgIAIAIgBTYCAAwBCyAAIAsgAigCAEEBIAIoAghBBhCAA0EASA0DCyAEQQFqIQQMAAsACyAAIAUgASACKAIAEN4DCyAAKAIQIgFBEGogBiABKAIEEQAAIAAgCxAMDAILIAAoAhAiBEEQaiAGIAQoAgQRAAAgACALQdIBIABB\u002FwAQKUEAEBUaIAcgBy0ABUH+AXE6AAUgASALNwNACyALQiCIp0F1TwRAIAunIgAgACgCAEEBajYCAAsgCyEMCyADQSBqJAAgDAszAQF\u002FIAAoAgAoAhAiAUEQaiAAKAIEIAEoAgQRAAAgAEEANgIMIABCADcCBCAAQX82AhQLugECBH8BfiAAKAIQIQUgACACQQN0QRhqECQiBEUEQA8LIAQgAjYCECAEIAE2AgwgBCAANgIIQQAhACACQQAgAkEAShshASAEQRhqIQIDQCAAIAFHBEAgAyAAQQN0IgZqKQMAIghCIIinQXVPBEAgCKciByAHKAIAQQFqNgIACyACIAZqIAg3AwAgAEEBaiEADAELCyAFKAKgASIAIAQ2AgQgBCAFQaABajYCBCAEIAA2AgAgBSAENgKgAQvCAgICfgd\u002FAkACQCAAIAEgAxBeIgFCgICAgHCDQoCAgIDgAFENAAJAAkAgAqciBigCICIIKAIMKAIgIgktAARFBEAgAEKAgICAMCAGKAIoIgqtIgUgA0HKngFqMQAAhhD6AiIEQoCAgIBwg0KAgICA4ABRDQIgBigCICgCDCgCIC0ABEUNASAAIAQQDAsgABBfDAELAkAgBEKAgICAcFQNACAEpyILLwEGQRNHDQAgCygCICEHCyAAIAEgBEIAIAUQ4wMNACAGLwEGIANGDQJBACEDA0AgAyAKRg0CIAAgAiADEKYBIgRCgICAgHCDQoCAgIDgAFENASAAIAEgAyAEEIYCIQwgA0EBaiEDIAxBAE4NAAsLIAAgARAMQoCAgIDgACEBCyABDwsgBygCCCAJKAIIIAgoAhBqIAcoAgAQHhogAQsNACAAIAEgAkETEOUDC5sFAQN\u002FIAFBEGohAyABKAIUIQIDQCACIANGRQRAIAJBGGshBCACKAIEIQIgACAEEPsCDAELCyAAKAIQIAEoAoACIAEoAoQCIAEoAqACEJkFIAFBgAJqEIkBIAAoAhAiAkEQaiABKALMAiACKAIEEQAAIAAoAhAiAkEQaiABKAKkAiACKAIEEQAAIAAoAhAiAkEQaiABKALYAiACKAIEEQAAQQAhAgNAIAEoArQCIQMgAiABKAK4Ak5FBEAgACADIAJBA3RqKQMAEAwgAkEBaiECDAELCyAAKAIQIgJBEGogAyACKAIEEQAAIAAgASgCcBAQQQAhAgNAIAEoAnQhAyACIAEoAnxORQRAIAAgAyACQQR0aigCABAQIAJBAWohAgwBCwsgACgCECICQRBqIAMgAigCBBEAAEEAIQIDQCABKAKAASEDIAIgASgCiAFORQRAIAAgAyACQQR0aigCABAQIAJBAWohAgwBCwsgACgCECICQRBqIAMgAigCBBEAAEEAIQIDQCABKAL8ASEDIAIgASgC9AFORQRAIAAgAyACQQR0aigCDBAQIAJBAWohAgwBCwsgACgCECICQRBqIAMgAigCBBEAAEEAIQIDQCABKALIAiEDIAIgASgCwAJORQRAIAAgAyACQQN0aigCBBAQIAJBAWohAgwBCwsgACgCECICQRBqIAMgAigCBBEAACABKALMASICIAFB0AFqRwRAIAAoAhAiA0EQaiACIAMoAgQRAAALIAAgASgC7AIQECABQfQCahCJASAAKAIQIgJBEGogASgCjAMgAigCBBEAACABKAIEBEAgASgCGCICIAEoAhwiAzYCBCADIAI2AgAgAUIANwIYCyAAKAIQIgBBEGogASAAKAIEEQAAC4wBAQJ\u002FAkADQCABQoCAgIBwVA0BAkACQAJAAkACQAJAIAGnIgIvAQYiA0EMaw4FBQEDBwEACyADQSxGDQEgA0Ewaw4FAAYGBgAGCyACKAIgKAIwDwsgAigCICICRQ0EIAItABFFDQEgABC4AkEADwsgAigCICECCyACKQMAIQEMAQsLIAIoAiAhAAsgAAuLAQIEfgF\u002FIAAQOyIEQoCAgIBwg0KAgICA4ABSBEAgAUEAIAFBAEobrSEGA0AgAyAGUQRAIAQPCyACIAOnQQN0aikDACIFQiCIp0F1TwRAIAWnIgEgASgCAEEBajYCAAsgACAEIAMgBUEAEMgBIQcgA0IBfCEDIAdBAE4NAAsgACAEEAwLQoCAgIDgAAsRACAAIAEgAiADIARBAhD+AwuTBgEHfyMAQSBrIgckACAHIAM2AhwCfwJAIAAoAgAgB0EEakEgED4NACABQeAARyEKAkACQANAIAMgACgCPCILTw0BAkAgAy0AACIGQR9LDQAgACgCQEUEQEHTyQAhBiACDQQMBQsgCkUEQCAGQQ1HDQFBCiEGIANBAWogAyADLQABQQpGGyEDDAELIAZBCmsOBAIAAAIACyAHIANBAWoiCTYCHAJAAkACQAJAAkACQCAEIAEgBkcEfyAGQdwARg0BIAZBJEcNAkEkIQYgCg0FIAktAABB+wBHDQUgByADQQJqNgIcQSQFIAELNgIYIARBgX82AgAgBCAHQQRqEDc3AxAgBSAHKAIcNgIAQQAMCgtBASEGAkACQAJAAkAgCS0AACIIQQprDgQCAwMBAAsgCEHcAEYgCEEiRnIgCEEnRnINBCAIDQIgCSALTw0JIAcgA0ECajYCHEEAIQYMBgtBAkEBIAMtAAJBCkYbIQYLIAcgAyAGakEBaiIDNgIcIAFB4ABGDQYgACAAKAIIQQFqNgIIDAYLAkACQAJAIAhBMGtB\u002FwFxQQlNBEAgACgCQCIGRQ0CIAFB4ABHBEAgBi0AbkEBcUUNAgsCQCAIQTBHDQAgAy0AAkEwa0H\u002FAXFBCkkNACAHIANBAmo2AhxBACEGDAgLIAFB4ABGIAhBN0tyDQJBw9sAIQYgAg0LDAwLIAjAQQBODQAgCUEGIAcQUSIGQYCAxABPDQcgByAHKAIAIgM2AhwgBkH+\u002F\u002F8AcUGowABGDQgMBgsgB0EcakEBEJcCIgZBf0cNAQtBh8QAIQYgAg0IDAkLIAZBAE4NAyAHIAcoAhxBAWo2AhwMAgsgBsBBAE4NAiADQQYgBxBRIgZB\u002F\u002F\u002FDAEsNAyAHIAcoAgA2AhwMAgsgByADQQJqNgIcCyAIIQYLIAdBBGogBhCxAQ0EIAcoAhwhAwwBCwtBst8AIQYgAg0BDAILQa3JACEGIAJFDQELIAAgBkEAEBMLIAcoAgQoAhAiAEEQaiAHKAIIIAAoAgQRAABBfwshDCAHQSBqJAAgDAvMAQEDfwJAIAFCgICAgHBaBEAgAaciBygCECIGQTBqIQggBiAGKAIYIAJxQX9zQQJ0aigCACEGAkADQCAGRQ0BIAIgCCAGQQN0aiIGQQRrKAIARwRAIAZBCGsoAgBB\u002F\u002F\u002F\u002FH3EhBgwBCwsQAQALIAAgByACIAVBB3FBMHIQdyICRQRAQX8PC0EBIQYgACAAKAIAQQFqNgIAIAIgADYCACAAQQNxDQEgAiAENgIEIAIgACADcjYCAAsgBg8LQfiGAUGo7ABB8cgAQbwKEAAACzABAX8jAEHQAGsiAyQAIAMgACADQRBqIAEQgQE2AgAgACACIAMQigIgA0HQAGokAAtoAQF+AkACQCAAEDMiA0KAgICAcINCgICAgOAAUQRAIAEhAwwBCyAAIANBwQAgAUEHEBVBAEgNACAAIANB6gAgAkEAR61CgICAgBCEQQcQFUEATg0BCyAAIAMQDEKAgICA4AAhAwsgAwsrACAAQf8ATQRAIABBA3ZB\u002FP\u002F\u002F\u002FwFxQaD\u002FAWooAgAgAHZBAXEPCyAAEJ4EC7YFAwJ+A38CfCABQQhrIgcpAwAhAwJAAkAgACABQRBrIgYpAwBBARCSASIEQoCAgIBwg0KAgICA4ABRBEAgAyEEDAELIAAgA0EBEJIBIgNCgICAgHCDQoCAgIDgAFENAAJAQQcgBEIgiKciASABQQdrQW5JGyIBQXlHQQcgA0IgiKciBSAFQQdrQW5JGyIFQXlHckUEQCAEpyADpxC8AiEBAn8CQAJAAkACQCACQaQBaw4DAAECAwsgAUEfdgwDCyABQQBMDAILIAFBAEoMAQsgAUF\u002Fc0EfdgshAiAAIAQQDCAAIAMQDAwBCwJAQQEgAXRBhwFxRSABQQdLciAFQQdLckEBQQEgBXRBhwFxG0UNAAJAIAFBdkYgBUF5RnEgAUF5RiIBIAVBdkZxcgRAAkAgAQRAIAAgBBCqAiIEQoCAgIBwg0KAgICA4H5SDQELIAVBeUcNAiAAIAMQqgIiA0KAgICAcINCgICAgOB+UQ0CCyAAIAQQDCAAIAMQDEEAIQIMAwsgACAEEGUiBEKAgICAcINCgICAgOAAUQRAIAMhBAwECyAAIAMQZSIDQoCAgIBwg0KAgICA4ABRDQMLQQcgA0IgiKciASABQQdrQW5JGyIFQXZHBEBBByAEQiCIpyIBIAFBB2tBbkkbIgFBdkcNAQsgACACIAQgAyAAKAIQKAKwAhErACICQQBODQEMAwsgA0KAgICAwIGA\u002FP8AfL8gA6e3IAVBB0YbIQggBEKAgICAwIGA\u002FP8AfL8gBKe3IAFBB0YbIQkCQAJAAkACQCACQaQBaw4DAAECAwsgCCAJZCECDAMLIAggCWYhAgwCCyAIIAljIQIMAQsgCCAJZSECCyAGIAJBAEetQoCAgIAQhDcDAEEADwsgACAEEAwLIAZCgICAgDA3AwAgB0KAgICAMDcDAEF\u002FC20CAn4Cf0F\u002FIQUCQCAAIAFBCGsiBikDACIEIAIQywEiA0KAgICAcINCgICAgOAAUQ0AIAAgBBAMIAYgAzcDACAAIANB6wAgA0EAEBEiA0KAgICAcINCgICAgOAAUQ0AIAEgAzcDAEEAIQULIAULPAEBfwNAIAIgA0ZFBEAgACABIANBA3RqKQMAEAwgA0EBaiEDDAELCyAAKAIQIgBBEGogASAAKAIEEQAAC4UBAQJ\u002FIwBBEGsiBSQAAkAgAkKAgICAcINCgICAgJB\u002FUgRAIAJCIIinQXVJDQEgAqciACAAKAIAQQFqNgIADAELIAAgBUEMaiACEN8BIgZFBEBCgICAgOAAIQIMAQsgACABIAYgBSgCDEHJ\u002FwAgAyAEELMFIQIgACAGEDELIAVBEGokACACC7wBAgN+AX8jAEEQayICJABCgICAgOAAIQUCQCAAIAEQVQ0AIAMpAwAhBgJAAkAgAykDCCIHQiCIpyIDQQNHBEAgBEECRg0CIANBAkYNAQwCCyAEQQJGDQELIAAgASAGQQBBABAcIQUMAQsgACACQQxqIAcQ\u002FQMiA0UNACACKAIMIQgCfiAEQQFxBEAgACABIAYgCCADEP4CDAELIAAgASAGIAggAxAcCyEFIAAgAyAIEIYDCyACQRBqJAAgBQtLACMAQRBrIgMkACADIAE5AwggAyACNgIAIABBgAFB6M0AIAMQSCIAQYABTgRAQc7OAEGo7ABBqtkAQaqDARAAAAsgA0EQaiQAIAALHAAgACAAKAIQKAJEIAFBGGxqKAIEQePlABC1AQtzAQN\u002FIwBBMGsiAiQAAn8gAadBgICAgHhyIAFC\u002F\u002F\u002F\u002F\u002FwdYDQAaIAIgATcDACACQRBqIgNBGEHI4wAgAhBIGkEAIAAgAxBgIgFCgICAgHCDQoCAgIDgAFENABogACgCECABp0EBEMcCCyEEIAJBMGokACAECz0BAX8gASAAKALgASABKAIUQSAgACgC1AFrdkECdGoiAigCADYCKCACIAE2AgAgACAAKALcAUEBajYC3AELQwACf0EAIAIoAgAoAgBBGnYgA0YNABpBfyAAIAEgAhDTAQ0AGiACKAIAIgAgACgCAEH\u002F\u002F\u002F8fcSADQRp0cjYCAEEACwu8AQEEf0F\u002FIQICQCAAIAFBABDTAQ0AIAEoAigiBCABKAIQIgMoAiBqIgUgAygCHEsEQCAAIAFBEGogASAFENYFDQELIAEoAiQhA0EAIQIDQCACIARGRQRAIAAgASACQYCAgIB4ckEHEHcgAykDADcDACACQQFqIQIgA0EIaiEDDAELCyAAKAIQIgBBEGogASgCJCAAKAIEEQAAQQAhAiABQQA2AiggAUIANwMgIAEgAS0ABUH3AXE6AAULIAILeQEDfwJAAkAgAEEBcSICDQAgAUGBAnFBgQJGIAFBgAhxQQAgACABc0EEcRtyDQEgAiABQYD0AHFFcg0AIABBMHEiAkEQRiABQYAwcSIEQQBHcw0BIABBAnEgAUGCBHFBggRHciACQRBGcg0AIARFDQELQQEhAwsgAwuBAgEEfyAAQoCAgIBwg0KAgICA4ABRBH9BtNQEKAIAKAIQIgIpA4ABIQAgAkKAgICAIDcDgAFBtNQEKAIAIABBsNcAEOgDIQJBtNQEKAIAIQMCQCACRQRAIAMgABAMDAELIAMgAEHxxQAQ6AMhA0G01AQoAgAhBCADRQRAIAQgAhAxQbTUBCgCACAAEAwMAQsgBCAAQcjaABDoAyEEQbTUBCgCACEFIARFBEAgBSACEDFBtNQEKAIAIAMQMUG01AQoAgAgABAMDAELIAUgABAMIAIgBCADIAEQC0G01AQoAgAgAhAxQbTUBCgCACADEDFBtNQEKAIAIAQQMQtBAQVBAAsLYQIBfwF+AkAgAUEASA0AAkACQAJAIAAoAhAoAjggAUECdGooAgApAgQiA0I+iKdBAWsOAwMCAAELQQEhAgJAIANCIIinQf\u002F\u002F\u002F\u002F8DcQ4CAwABC0ECDwsQAQALQQEhAgsgAgszACAAIAJBARDpASIARQRAQoCAgIDgAA8LIABBEGogASACQQF0EB4aIACtQoCAgICQf4QLPQIBfwJ+IAAgARDfBSIDQoCAgIBwgyIEQoCAgIAwUgR\u002FIARCgICAgOAAUgRAIAAgAxAMQQEPC0F\u002FBUEACwtOAgF\u002FAn4jAEEQayICJAACfiABQf8BTQRAIAIgAToADyAAIAJBD2pBARCcAwwBCyACIAE7AQwgACACQQxqQQEQkgMLIQQgAkEQaiQAIAQLBABBAAspAQJ\u002FAkAgAEKAgICAcFQNACAApyICLwEGEOABRQ0AIAIoAiAhAQsgAQsiACAAIAJBAWoQJCIABEAgACABIAIQHiACakEAOgAACyAACyEAIAAgAUEwIAOtQQEQFRogACABQTcgACACEClBARAVGgtPAQF\u002FIAEgAjYCDCABIAA2AgAgAUEANgIUIAEgAzYCECABQQA2AgggASAAIAIgAxDpASIANgIEIAAEf0EABSABQX82AhQgAUEANgIMQX8LC8IEAgl\u002FAX4CQAJAAkACQAJAIAJCgICAgHCDQoCAgICQf1IEQCAAIAIQJSICQoCAgIBwg0KAgICA4ABRDQIgAqchBAwBCyACpyIEIAQoAgBBAWo2AgALIARBEGohByAEKQIEIg2nQf\u002F\u002F\u002F\u002F8HcSEGAkAgDUKAgICACINQBEBBACEEQQAhAwNAIAQgBkZFBEAgAyAEIAdqLQAAQQd2aiEDIARBAWohBAwBCwsgA0UEQCAHIQQgAQ0EDAYLIAAgAyAGakEAEOkBIghFDQIgCEEQaiEEQQAhAwNAIAMgBkYNAiADIAdqLAAAIgVBAE4EfyAEQQFqBSAEIAVBvwFxOgABIAVBwAFxQQZ2QUByIQUgBEECagshDCAEIAU6AAAgA0EBaiEDIAwhBAwACwALIAAgBkEDbEEAEOkBIghFDQEgCEEQaiEEA0AgBSIKIAZODQEgBUEBaiEFIAcgCkEBdGovAQAiCUH\u002FAE0EQCAEIAk6AAAgBEEBaiEEBQJAIAlBgPgDcUGAsANHIANyIAUgBk5yDQAgByAFQQF0ai8BACILQYD4A3FBgLgDRw0AIAlBCnRBgPg\u002FcSALQf8HcXJBgIAEaiEJIApBAmohBQsgBCAJEN0CIARqIQQLDAALAAsgBEEAOgAAIAggBCAIQRBqIgdrQf\u002F\u002F\u002F\u002F8Hca0gCCkCBEKAgICAeIOENwIEIAAgAhAMIAFFDQIgCCgCBEH\u002F\u002F\u002F\u002F\u002FB3EhBgwBC0EAIQZBACEHQQAhBCABRQ0CCyABIAY2AgALIAchBAsgBAuIAgIFfwF+IAEoAgwhAgJAAkACQCABKQIEIgdCgICAgICAgIBAWgRAIAAoAjghBAwBCwJAIAEgACgCOCIEIAAoAjQgB0IgiKcgACgCJEEBa3FBAnRqIgMoAgAiBUECdGooAgAiBkYEQCADIAI2AgAMAQsDQCAGIQMgBUUNAyAEIAMoAgwiBUECdGooAgAiBiABRw0ACyADIAI2AgwLIAUhAgsgBCACQQJ0aiAAKAI8QQF0QQFyNgIAIAAgAjYCPCAAQRBqIAEgACgCBBEAACAAIAAoAigiAEEBazYCKCAAQQBMDQEPC0HGhwFBqOwAQd8WQdIdEAAAC0HVhQFBqOwAQfMWQdIdEAAAC0YAIAJBAEwEQCAAQS8QKQ8LIAAgAkEAEOkBIgBFBEBCgICAgOAADwsgAEEQaiABIAIQHiACakEAOgAAIACtQoCAgICQf4QLnwICBH8BfgJAAkAgAgRAIAEsAABBOmtBdUsNAQsCfyAAKAIQIQQgASACQQEQ7gUiA0H\u002F\u002F\u002F\u002F\u002FA3EhBiAEKAI0IAQoAiRBAWsgA3FBAnRqIQMDQAJAAkAgAygCACIFRQ0AIAQoAjggBUECdGooAgAiAykCBCIHQoCAgIAIg0IAUiAHp0H\u002F\u002F\u002F\u002F\u002FB3EgAkdyIAdCIIinQf\u002F\u002F\u002F\u002F8DcSAGRyAHQoCAgICAgICAQINCgICAgICAgIDAAFJycg0BIANBEGogASACEGgNASAFQdgBSA0AIAMgAygCAEEBajYCAAsgBQwCCyADQQxqIQMMAAsACyIDDQELQQAhAyAAIAEgAhDqASIHQoCAgIBwg0KAgICA4ABRDQAgACAHpxCRBCEDCyADC5IDAQN\u002FIAAgACgCACIBQQFrIgI2AgACQCABQQFKDQAgAkUEQCAAKAIQIQJBACEBIABBABD2BSAAIAApA8ABEAwgACAAKQPIARAMIAAgACkDsAEQDCAAIAApA7gBEAwgACAAKQOoARAMIABB2ABqIQMDQCABQQhGBEBBACEBA0AgACgCKCEDIAEgAigCQE5FBEAgACADIAFBA3RqKQMAEAwgAUEBaiEBDAELCyACQRBqIAMgAigCBBEAACAAIAApA5gBEAwgACAAKQOgARAMIAAgACkDUBAMIAAgACkDQBAMIAAgACkDSBAMIAAgACkDOBAMIAAgACkDMBAMIAAoAiQiAQRAIAAoAhAgARCMAgsgACgCFCIBIAAoAhgiAjYCBCACIAE2AgAgAEIANwIUIAAoAggiASAAKAIMIgI2AgQgAiABNgIAIABCADcCCCAAKAIQIgFBEGogACABKAIEEQAADAMFIAAgAyABQQN0aikDABAMIAFBAWohAQwBCwALAAtBtoYBQajsAEHqEUGWFBAAAAsL8QEBA38CfwJAIAFB\u002FwFxIgIiAwRAIABBA3EEQANAIAAtAAAiBEUgAiAERnINAyAAQQFqIgBBA3ENAAsLAkAgACgCACICQX9zIAJBgYKECGtxQYCBgoR4cQ0AIANBgYKECGwhAwNAIAIgA3MiAkF\u002FcyACQYGChAhrcUGAgYKEeHENASAAKAIEIQIgAEEEaiEAIAJBgYKECGsgAkF\u002Fc3FBgIGChHhxRQ0ACwsgAUH\u002FAXEhAwNAIAAiAi0AACIEBEAgAEEBaiEAIAMgBEcNAQsLIAIMAgsgABA9IABqDAELIAALIgBBACAALQAAIAFB\u002FwFxRhsLrAEDAXwBfgF\u002FIAC9IgJCNIinQf8PcSIDQbIITQR8IANB\u002FQdNBEAgAEQAAAAAAAAAAKIPCwJ8IAAgAJogAkIAWRsiAEQAAAAAAAAwQ6BEAAAAAAAAMMOgIAChIgFEAAAAAAAA4D9kBEAgACABoEQAAAAAAADwv6AMAQsgACABoCIAIAFEAAAAAAAA4L9lRQ0AGiAARAAAAAAAAPA\u002FoAsiACAAmiACQgBZGwUgAAsL1AMDA38EfAF+IAC9IghCIIinIQECQAJ8AnwCQCABQfmE6v4DSyAIQgBZcUUEQCABQYCAwP97TwRARAAAAAAAAPD\u002FIABEAAAAAAAA8L9hDQQaIAAgAKFEAAAAAAAAAACjDwsgAUEBdEGAgIDKB0kNBCABQcX9yv57Tw0BRAAAAAAAAAAADAILIAFB\u002F\u002F+\u002F\u002FwdLDQMLIABEAAAAAAAA8D+gIgS9IghCIIinQeK+JWoiAUEUdkH\u002FB2shAyAAIAShRAAAAAAAAPA\u002FoCAAIAREAAAAAAAA8L+goSABQf\u002F\u002Fv4AESxsgBKNEAAAAAAAAAAAgAUH\u002F\u002F7+aBE0bIQYgCEL\u002F\u002F\u002F\u002F\u002FD4MgAUH\u002F\u002Fz9xQZ7Bmv8Daq1CIIaEv0QAAAAAAADwv6AhACADtwsiBEQAAOD+Qi7mP6IgACAAIABEAAAAAAAAAECgoyIFIAAgAEQAAAAAAADgP6KiIgcgBSAFoiIFIAWiIgAgACAARJ\u002FGeNAJmsM\u002FokSveI4dxXHMP6CiRAT6l5mZmdk\u002FoKIgBSAAIAAgAEREUj7fEvHCP6JE3gPLlmRGxz+gokRZkyKUJEnSP6CiRJNVVVVVVeU\u002FoKKgoKIgBER2PHk17znqPaIgBqCgIAehoKALDwsgAAvvAQEDfyAARQRAQaDUBCgCAARAQaDUBCgCABCiAyEBC0HY1AQoAgAEQEHY1AQoAgAQogMgAXIhAQtBmNUEKAIAIgAEQANAIAAoAkwaIAAoAhQgACgCHEcEQCAAEKIDIAFyIQELIAAoAjgiAA0ACwsgAQ8LIAAoAkxBAEghAgJAAkAgACgCFCAAKAIcRg0AIABBAEEAIAAoAiQRAQAaIAAoAhQNAEF\u002FIQEMAQsgACgCBCIBIAAoAggiA0cEQCAAIAEgA2usQQEgACgCKBEQABoLQQAhASAAQQA2AhwgAEIANwMQIABCADcCBCACDQALIAEL6w8DB3wIfwJ+RAAAAAAAAPA\u002FIQMCQAJAAkAgAb0iEUIgiKciD0H\u002F\u002F\u002F\u002F\u002FB3EiCSARpyIMckUNACAAvSISQiCIpyEKIBKnIhBFIApBgIDA\u002FwNGcQ0AIApB\u002F\u002F\u002F\u002F\u002FwdxIgtBgIDA\u002FwdLIAtBgIDA\u002FwdGIBBBAEdxciAJQYCAwP8HS3JFIAxFIAlBgIDA\u002FwdHcnFFBEAgACABoA8LAkACQAJAAkACQAJ\u002FQQAgEkIAWQ0AGkECIAlB\u002F\u002F\u002F\u002FmQRLDQAaQQAgCUGAgMD\u002FA0kNABogCUEUdiENIAlBgICAigRJDQFBACAMQbMIIA1rIg52Ig0gDnQgDEcNABpBAiANQQFxawshDiAMDQIgCUGAgMD\u002FB0cNASALQYCAwP8DayAQckUNBSALQYCAwP8DSQ0DIAFEAAAAAAAAAAAgEUIAWRsPCyAMDQEgCUGTCCANayIMdiINIAx0IAlHDQBBAiANQQFxayEOCyAJQYCAwP8DRgRAIBFCAFkEQCAADwtEAAAAAAAA8D8gAKMPCyAPQYCAgIAERgRAIAAgAKIPCyAPQYCAgP8DRyASQgBTcg0AIACfDwsgAJkhAiAQDQECQCAKQQBIBEAgCkGAgICAeEYgCkGAgMD\u002Fe0ZyIApBgIBARnINAQwDCyAKRSAKQYCAwP8HRnINACAKQYCAwP8DRw0CC0QAAAAAAADwPyACoyACIBFCAFMbIQMgEkIAWQ0CIA4gC0GAgMD\u002FA2tyRQRAIAMgA6EiACAAow8LIAOaIAMgDkEBRhsPC0QAAAAAAAAAACABmiARQgBZGw8LAkAgEkIAWQ0AAkACQCAODgIAAQILIAAgAKEiACAAow8LRAAAAAAAAPC\u002FIQMLAnwgCUGBgICPBE8EQCAJQYGAwJ8ETwRAIAtB\u002F\u002F+\u002F\u002FwNNBEBEAAAAAAAA8H9EAAAAAAAAAAAgEUIAUxsPC0QAAAAAAADwf0QAAAAAAAAAACAPQQBKGw8LIAtB\u002Fv+\u002F\u002FwNNBEAgA0ScdQCIPOQ3fqJEnHUAiDzkN36iIANEWfP4wh9upQGiRFnz+MIfbqUBoiARQgBTGw8LIAtBgYDA\u002FwNPBEAgA0ScdQCIPOQ3fqJEnHUAiDzkN36iIANEWfP4wh9upQGiRFnz+MIfbqUBoiAPQQBKGw8LIAJEAAAAAAAA8L+gIgBERN9d+AuuVD6iIAAgAKJEAAAAAAAA4D8gACAARAAAAAAAANC\u002FokRVVVVVVVXVP6CioaJE\u002FoIrZUcV97+ioCICIAIgAEQAAABgRxX3P6IiAqC9QoCAgIBwg78iACACoaEMAQsgAkQAAAAAAABAQ6IiACACIAtBgIDAAEkiCRshAiAAvUIgiKcgCyAJGyIMQf\u002F\u002FP3EiCkGAgMD\u002FA3IhCyAMQRR1Qcx3QYF4IAkbaiEMQQAhCQJAIApBj7EOSQ0AIApB+uwuSQRAQQEhCQwBCyAKQYCAgP8DciELIAxBAWohDAsgCUEDdCIKQaClBGorAwAgAr1C\u002F\u002F\u002F\u002F\u002Fw+DIAutQiCGhL8iBCAKQZClBGorAwAiBaEiBkQAAAAAAADwPyAFIASgoyIHoiICvUKAgICAcIO\u002FIgAgACAAoiIIRAAAAAAAAAhAoCAHIAYgACAJQRJ0IAtBAXZqQYCAoIACaq1CIIa\u002FIgaioSAAIAQgBiAFoaGioaIiBCACIACgoiACIAKiIgAgAKIgACAAIAAgACAARO9ORUoofso\u002FokRl28mTSobNP6CiRAFBHalgdNE\u002FoKJETSaPUVVV1T+gokT\u002Fq2\u002Fbtm3bP6CiRAMzMzMzM+M\u002FoKKgIgWgvUKAgICAcIO\u002FIgCiIgYgBCAAoiACIAUgAEQAAAAAAAAIwKAgCKGhoqAiAqC9QoCAgIBwg78iAET1AVsU4C8+vqIgAiAAIAahoUT9AzrcCcfuP6KgoCICIApBsKUEaisDACIEIAIgAEQAAADgCcfuP6IiAqCgIAy3IgWgvUKAgICAcIO\u002FIgAgBaEgBKEgAqGhCyECIAEgEUKAgICAcIO\u002FIgShIACiIAIgAaKgIgIgACAEoiIBoCIAvSIRpyEJAkAgEUIgiKciCkGAgMCEBE4EQCAKQYCAwIQEayAJcg0DIAJE\u002FoIrZUcVlzygIAAgAaFkRQ0BDAMLIApBgPj\u002F\u002FwdxQYCYw4QESQ0AIApBgOi8+wNqIAlyDQMgAiAAIAGhZUUNAAwDC0EAIQkgAwJ8IApB\u002F\u002F\u002F\u002F\u002FwdxIgtBgYCA\u002FwNPBH5BAEGAgMAAIAtBFHZB\u002FgdrdiAKaiIKQf\u002F\u002FP3FBgIDAAHJBkwggCkEUdkH\u002FD3EiC2t2IglrIAkgEUIAUxshCSACIAFBgIBAIAtB\u002FwdrdSAKca1CIIa\u002FoSIBoL0FIBELQoCAgIBwg78iAEQAAAAAQy7mP6IiAyACIAAgAaGhRO85+v5CLuY\u002FoiAARDlsqAxhXCC+oqAiAqAiACAAIAAgACAAoiIBIAEgASABIAFE0KS+cmk3Zj6iRPFr0sVBvbu+oKJELN4lr2pWET+gokSTvb4WbMFmv6CiRD5VVVVVVcU\u002FoKKhIgGiIAFEAAAAAAAAAMCgoyAAIAIgACADoaEiAKIgAKChoUQAAAAAAADwP6AiAL0iEUIgiKcgCUEUdGoiCkH\u002F\u002Fz9MBEAgACAJENUBDAELIBFC\u002F\u002F\u002F\u002F\u002Fw+DIAqtQiCGhL8LoiEDCyADDwsgA0ScdQCIPOQ3fqJEnHUAiDzkN36iDwsgA0RZ8\u002FjCH26lAaJEWfP4wh9upQGiCysAIABBgAFPBH8gAEHPAU0EQCAAQYAFag8LIABBAXRBosoDai8BAAUgAAsLiwIBA38jAEEQayIEJAACQCAEQQxqIAAgAiADEJoGIgJBAEgNACABIAJqIQMgBCgCDCEBA0AgA0EBaiECAkAgAy0AACIFQT9NBEAgBUEDdiABakEBaiIBIABLDQMgBCAFQQdxIAFqQQFqIgE2AgwgBkEBcyEGDAELIAXAQQBIBEAgBCABIAVqQf8AayIBNgIMDAELIAItAAAhAiAFQd8ATQRAIAQgBUEIdCACciABakH\u002F\u002FwBrIgE2AgwgA0ECaiECDAELIAQgAy0AAiAFQRB0IAJBCHRyciABakH\u002F\u002F\u002F8CayIBNgIMIANBA2ohAgsgACABSQ0BIAZBAXMhBiACIQMMAAsACyAEQRBqJAAgBgtMAQN\u002FIwBBEGsiAyQAAn8gAiABKAIAIgQtAABHBEAgAyACNgIAIABBzJABIAMQP0F\u002FDAELIAEgBEEBajYCAEEACyEFIANBEGokACAFCx4AIABBMGtBCkkgAEFfcUHBAGtBGklyIABB3wBGcguoAQECfyAAKAJAGgJAIAAoAgQhAyAAIAEQpQYNAANAIAAoAhgiAi0AAEH8AEcEQEEADwsgACACQQFqNgIYIAAoAgQhAiAAIANBBRCWAgRAIAAQ1QJBfw8LIAAoAgAgA2pBCToAACAAKAIAIANqIAIgA2tBBWo2AAEgAEEHQQAQtwEhAiAAIAEQpQYNASAAKAIAIAJqIAAoAgQgAmtBBGs2AAAMAAsAC0F\u002FC0gBA38CQANAIAFBCkYNASABQQJ0QfL+AWovAQAgAEoNASABQQF0IQMgAUEBaiEBIANBAXRB9P4Bai8BACAATQ0AC0EBDwtBAAvrAQECfyMAQSBrIgQkAAJ\u002FAkAgACABRwRAIAEoAgxFBEACQAJAAkAgASgCCEH+\u002F\u002F\u002F\u002FB2sOAgEAAgsgABAqQQAMBQsgASgCBA0DIABBABB\u002FQQAMBAsgAEEBEH9BAAwDCyABKAIEDQEgACgCACEFIARCADcCGCAEQoCAgICAgICAgH83AhAgBCAFNgIMIARBDGoiBUIBEDIaIAEgBRC9AgRAIABBABCAASAFEBlBAAwDCyAEQQxqEBkgACABIAIgA0GXA0EAEKoEDAILQentAEHY7ABBzSNBzsgAEAAACyAAECpBAAsaIARBIGokAAvxAgEEfyMAQUBqIgYkAAJAIAQgA2siCEEBRgRAAkAgA0UEQCABQgMQMhoMAQsgASADrRAyGiABQQE2AgQLIAIgA0EBdEEBcq0QMhogAiACKAIIQQJqNgIIIAAgARBJGgwBCyAAKAIAIQcgACABIAIgAyAIQQF2IANqIgNBARCrAyAGQgA3AjggBkKAgICAgICAgIB\u002FNwIwIAYgBzYCLCAGQgA3AiQgBkKAgICAgICAgIB\u002FNwIcIAYgBzYCGCAGQgA3AhAgBkKAgICAgICAgIB\u002FNwIIIAYgBzYCBCAGQSxqIgcgBkEYaiIIIAZBBGoiCSADIAQgBRCrAyAAIAAgCUH\u002F\u002F\u002F\u002F\u002FA0EBEEAaIAcgByABQf\u002F\u002F\u002F\u002F8DQQEQQBogACAAIAdB\u002F\u002F\u002F\u002F\u002FwNBARC4ARogBQRAIAEgASAIQf\u002F\u002F\u002F\u002F8DQQEQQBoLIAIgAiAGQQRqIgBB\u002F\u002F\u002F\u002F\u002FwNBARBAGiAGQSxqEBkgBkEYahAZIAAQGQsgBkFAayQAC60GAQ5\u002FIwBB8ABrIgckAAJAAkACfyACIAJBAWsiBXFFBEAgASgCDEEFdCABKAIIQSAgBWdrIglvIgVrIAlBACAFQQBKG2ohDSAJQSAgCUH\u002FAXFuIgxsIQ8gAQwBCyACEK4EIQogASgCACEFIAdCADcCGCAHQoCAgICAgICAgH83AhAgByAFNgIMIAdBDGogAyACQb7+AWotAAAiDGpBAWsgDG4iDRBQDQFBACEFIAcoAgwiBigCAEEAQQRBxAAgBygCGCIJQQFrZ0EBdGsgCUECSRsiC0EUbCAGKAIEEQEAIghFDQEDQCAFIAtGRQRAIAggBUEUbGoiD0IANwIMIA9CgICAgICAgICAfzcCBCAPIAY2AgAgBUEBaiEFDAELC0EAIQUgCCAHKAIcIAEgCUEAIAkgCkEgIApBAWtna0EAIApBAk8bEKgEIRIDQCAFIAtGRQRAIAggBUEUbGoQGSAFQQFqIQUMAQsLQQAhCSAGKAIAIAhBACAGKAIEEQEAGiASDQEgDCANbCADayEKQQEhDyAHQQxqCyEIQX8gCXRBf3MhEEEAIQsgAkEKRyERIAwhBQNAIAMgC00NAiAFIAxGBEAgDSAPayENAkAgCUUEQEEAIQUgDSAIKAIMSQRAIAgoAhAgDUECdGooAgAhBQsgDCEGIBFFBEADQCAGQQBMDQMgBkEBayIGIAdBIGpqIAUgBUEKbiIFQQpsa0EwcjoAAAwACwALA0AgBkEATA0CIAZBAWsiBiAHQSBqakEwQdcAIAUgBSACbiIFIAJsayIOQQpIGyAOajoAAAwACwALIAgoAhAgCCgCDCANEHEhBiAMIQUDQCAFQQBMDQEgBUEBayIFIAdBIGpqIAYgEHEiDkEwciAOQdcAaiAOQQpJGzoAACAGIAl2IQYMAAsACyAKIQVBACEKCwJAIAsgBCIGSQ0AIAMhBiAEIAtHDQAgAEEuEA4LIAAgB0EgaiAFaiAMIAVrIg4gBiALayIGIAYgDkobIgYQchogBiALaiELIAUgBmohBQwACwALIABBATYCDCAHQQxqIQgLIAEgCEcEQCAIEBkLIAdB8ABqJAAL9gEBBH8jAEEgayIHJAACQCACQQFGBEAgACABNQIAEDIhAwwBCyAEQQF0IANBAWoiCXZBAWpBAXYhCCAGIANBFGxqIgooAgxFBEAgCiAFIAhB\u002F\u002F\u002F\u002F\u002FwNBARDXAiIDDQELIAAgASAIQQJ0aiACIAhrIAkgBCAFIAYQrQMiAw0AIAAgACAKQf\u002F\u002F\u002F\u002F8DQQEQQCIDDQAgACgCACECIAdCADcCGCAHQoCAgICAgICAgH83AhAgByACNgIMIAdBDGoiAiABIAggCSAEIAUgBhCtAyIDRQRAIAAgACACQf\u002F\u002F\u002F\u002F8DQQEQuAEhAwsgB0EMahAZCyAHQSBqJAAgAwumAQEFf0F\u002FIQYCQCABKAIAIgRBAEgEQCAAKAIAIgUoAgAgACgCECAAKAIMIgNBAWoiByADQQNsQQF2IgMgAyAHSBsiA0ECdCAFKAIEEQEAIgVFDQEgACAFNgIQIAUgAyAAKAIMIgZrIgdBAnRqIAUgBkECdBCrASAAIAM2AgwgBCAHaiEECyAAKAIQIARBAnRqIAI2AgAgASAEQQFrNgIAQQAhBgsgBguEAQECfwJAIAAgAUcEQCACRQRAIABCARAyIQUMAgtBHiACZ2shBiAAIAEQSSEFA0AgBkEASA0CIAAgACAAIAMgBBBAIAVyIQUgAiAGdkEBcQRAIAAgACABIAMgBBBAIAVyIQULIAZBAWshBgwACwALQentAEHY7ABB7RFBlcYAEAAACyAFC\u002FgEAQt\u002FIwBBMGsiBSQAAkACQAJAIAAgAUYgACACRnJFBEAgASgCCEEASgRAIAEoAgQhBgsgAigCCEEASgRAIAIoAgQhCAsgBkUEQCABIQcMAgsgACgCACEEIAVCADcCFCAFQoCAgICAgICAgH83AgwgBSAENgIIIAVBCGoiBCEHIAQgAUIBQf\u002F\u002F\u002F\u002F8DQQEQekUNAUEAIQQMAgtBy4MBQdjsAEGwEkGlNxAAAAsCQCAIRQRAIAIhBAwBCyAAKAIAIQEgBUIANwIoIAVCgICAgICAgICAfzcCICAFIAE2AhwgBUEcaiIBIQQgASACQgFB\u002F\u002F\u002F\u002F\u002FwNBARB6DQELIABBAQJ\u002FIAYgCCADELMEIgIgA0ECR3JFBEAgBiAIckUEQCAHKAIIIgEgBCgCCCIJIAEgCUgbDAILIAZFBEAgBygCCAwCCyAEKAIIDAELIAcoAggiASAEKAIIIgkgASAJShsLIgEgAUEBTBtBH2oiCUEFdiIKEFANAEEAIQFBACACayELQQAgCGshCEEAIAZrIQYgBCgCDEEFdCAEKAIIayEMIAcoAgxBBXQgBygCCGshDQNAIAEgCkZFBEAgACgCECABQQJ0aiAHKAIQIAcoAgwgDSABQQV0Ig5qEHEgBnMgBCgCECAEKAIMIAwgDmoQcSAIcyADELMEIAtzNgIAIAFBAWohAQwBCwsgACACNgIEIAAgCUHg\u002F\u002F\u002F\u002FB3E2AgggAEH\u002F\u002F\u002F\u002F\u002FA0EBEJsCGkEAIQEgAkUNASAAIABCf0H\u002F\u002F\u002F\u002F\u002FA0EBEHpFDQELIAAQKkEgIQELIAVBCGoiACAHRgRAIAAQGQsgBUEcaiIAIARGBEAgABAZCyAFQTBqJAAgAQt9AQJ\u002FIwBBIGsiBiQAAkAgACABRyAAIAJHcUUEQCAAKAIAIQcgBkIANwIYIAZCgICAgICAgICAfzcCECAGIAc2AgwgBkEMaiIHIAEgAiADIAQgBRELACEBIAAgBxC\u002FBAwBCyAAIAEgAiADIAQgBRELACEBCyAGQSBqJAAgAQsgAQF+IAAgACACIAFBAUECQQAQggEiBCABIAMQvwEgBAvtCgIMfwN+IwBBEGsiDiQAIAQgBUEBayIGQQJ0aigCACEHAkACQCAFQQFGBEBBACEGIA5BADYCDAJAIANBAk0EQCAHrSESA0AgA0EATA0CIAEgA0EBayIDQQJ0IgBqIAAgAmo1AgAgBq1CIIaEIhMgEoAiFD4CACATIBIgFH59pyEGDAALAAsgB0F\u002Fc61CIIZC\u002F\u002F\u002F\u002F\u002Fw+EIAetgKchAANAIANBAWsiA0EASA0BIAEgA0ECdCIEaiAOQQxqIAYgAiAEaigCACAHIAAQuwQ2AgAgDigCDCEGDAALAAsgAiAGNgIADAELAkACQAJAAkAgAyAFayIIIAUgBSAIShtBMk4EQCAIBEAgACgCAEEAIAhBAWoiDSAIIAUgCEsbIglBAWoiC0ECdCAAKAIEEQEAIgpFIAAoAgBBACALQQN0IAAoAgQRAQAiB0VyDQUgBSAJSw0CIAkgBWshDEEAIQYDQCAGIAxGBEAgByAMQQJ0aiEMQQAhBgNAIAUgBkYNBiAMIAZBAnQiD2ogBCAPaigCADYCACAGQQFqIQYMAAsABSAHIAZBAnRqQQA2AgAgBkEBaiEGDAELAAsAC0HtgwFB2OwAQbULQaPaABAAAAsgCEEDTwRAIAdBf3OtQiCGQv\u002F\u002F\u002F\u002F8PhCAHrYCnIQsLIAIgCEECdGohAAJAAkACQANAIAZBAEgNASAGQQJ0IQMgBkEBayEGIAAgA2ooAgAiCSADIARqKAIAIgNGDQALIAEgCEECdGogAyAJTSIDNgIAIAMNAQwCCyABIAhBAnRqQQE2AgALIAAgACAEIAUQ8QEaCyACIAVBAnRqIQ8gB60hEkEAIQkDQCAIQQFrIghBAEgNBgJ\u002FQX8gByAPIAhBAnQiDGoiBigCACIATQ0AGiALBEAgDkEIaiAAIAZBBGsoAgAgByALELsEDAELIAZBBGs1AgAgAK1CIIaEIBKApwshACACIAxqIQ0gAK0hE0EAIQpBACEDA0AgAyAFRkUEQCANIANBAnQiEGoiESARNQIAIAqtIAQgEGo1AgAgE358fSIUPgIAQQAgFEIgiKdrIQogA0EBaiEDDAELCyAGIAYoAgAiAyAKazYCACADIApJBEADQCAAQQFrIQAgDSANIAQgBRC0A0UNACAGIAYoAgBBAWoiAzYCACADDQALCyABIAxqIAA2AgAMAAsACyAEIAUgCWtBAnRqIQxBACEGA0AgBiAJRkUEQCAHIAZBAnQiD2ogDCAPaigCADYCACAGQQFqIQYMAQsLIAdBASAJENsCRQ0AIApBACAJQQJ0IgYQLCAGakEBNgIADAELIAAgCiAHIAkQvAQNAQsgByAKIAsgAiADQQJ0aiAJQX9zQQJ0aiALEPABIAcgC0EDdGogCEF\u002Fc0ECdGohCEEAIQYDQCAGIA1GRQRAIAEgBkECdCIJaiAIIAlqKAIANgIAIAZBAWohBgwBCwsgACgCACAHQQAgACgCBBEBABogACgCACAKQQAgACgCBBEBABogACgCAEEAIANBAnRBBGogACgCBBEBACIDRQRAQX8hCQwDCyADIAEgDSAEIAUQ8AEgAiACIAMgBUEBahDxARogACgCACADQQAgACgCBBEBABogAiAFQQJ0aiEAA0AgBSEDAkAgACgCAA0AA0AgA0EATA0BIAIgA0EBayIDQQJ0IgZqKAIAIgggBCAGaigCACIGRg0ACyAGIAhLDQMLIAIgAiAEIAUQ8QEhAyAAIAAoAgAgA2s2AgAgAUEBIA0Q2wIaDAALAAsgCgRAIAAoAgAgCkEAIAAoAgQRAQAaC0F\u002FIQkgB0UNASAAKAIAIAdBACAAKAIEEQEAGgwBC0EAIQkLIA5BEGokACAJC04BBH8DQCADIAZHBEAgACAGQQJ0IgVqIAQgAiAFaigCACIHIAEgBWooAgBqIgVqIgQ2AgAgBSAHSSAEIAVJciEEIAZBAWohBgwBCwsgBAt0AQR\u002FQQIhAgJAIAAoAggiBEH\u002F\u002F\u002F\u002F\u002FB0YNACABKAIIIgVB\u002F\u002F\u002F\u002F\u002FwdGDQAgACgCBCIDIAEoAgRHBEAgBEGAgICAeEYEQEEAIQIgBUGAgICAeEYNAgtBASADQQF0aw8LQQAgACABEPIBIgBrIAAgAxshAgsgAguRAQEDfwJAIAAoAggiBEH9\u002F\u002F\u002F\u002FB0oNACACQQZGBEAgASADSA8LIARBgICAgHhGIAFBAmogA0pyDQAgACgCECIGIAAoAgwiBCABQX9zIgAgBEEFdGoiARCaAiACQXtxRXMhAiAAIANqIQADQCAARQ0BIABBAWshACAGIAQgAUEBayIBEJoCIAJGDQALQQEhBQsgBQviAQEDfwJAAkAgA0EDcUUgA0EHcSIEQQVGIAJB\u002F\u002F\u002F\u002F\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\u002FRhshBSACQXtxIQIgABAtIQQDQEF\u002FIQMgABAPDQEgAEEREA0gACAFIAQQGBogAEEOEA0CQCABQaF\u002FRgRAIABBCCACEPYBRQ0BDAMLIABBoX8gAhDAAw0CCyAAKAIQIgMgAUYNAAsgA0Gmf0YEQCAAQbcIQQAQE0F\u002FDwsgACAEEBpBACEDCyADC1cBBH8gACgCzAEgAkEDdGpBBGohAwNAAkBBfyEEIAMoAgAiBUF\u002FRg0AIAAoAnQgBUEEdGoiBigCBCACRw0AIAZBCGohAyAFIQQgBigCACABRw0BCwsgBAvcAQEBfyAAKAIAIAAoAkBBAEEAIAAoAgxBABDqAyICRQRAIAFBADYCAEF\u002FDwsgAkEANgJwIAJBADYCYCACQoCAgIAQNwJIIAJCATcCMCACQYAMOwFsIAJCATcCWCACQgE3AlAgASACNgIAIAAgAjYCQCAAIAEoAhAEfyACBSAAQQkQDSABIAEoAgAoApgCNgIMIABB6gBBfxAYIQEgAEG4ARANIABBCBAXIABBABAUIABBuAEQDSAAQfQAEBcgAEEAEBQgAEEtEA0gACABEBogACgCQAsoAgQ2AkBBAAuRAQEFfwJAAkAgACgCQCIBKAKYAiICQQBIDQAgASgCgAIiAyACaiIELQAAIgVBxQFHBEAgBUHNAEcNASABQX82ApgCIAEgAjYChAIgAEHOABANDwsgAiAEKAABayADaiIAQQFqLQAAQdYARw0BIABB1wA6AAEgAUF\u002FNgKYAgsPC0G+IkGo7ABBobABQeHkABAAAAugIwILfwF+IwBBIGsiBSQAIAFBAnEiB0EBdiEKQX4hAgJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIQIgRBgAFqDgcCAw8NAQEFAAsCQCAEQdUAag4MCQsMAQEBAQoBAQESAAsCQCAEQTtqDgoHAQEIAQEBARARAAsgBEEoRg0FIARBL0YNAyAEQdsARiAEQfsARnINDQsgACgCOCEBIAUgACgCGCICNgIEIAUgASACazYCACAAQYyNASAFEBMMFwsgACkDICINQv\u002F\u002F\u002F\u002F8PWARAIABBARANIAAgDacQOAwUCyAAIA1BABDAAUEATg0TDBYLQX8hAyAAIAApAyBBARDAAQ0WIAAQD0UNEwwWC0F\u002FIQILIAAgACgCOCACajYCOCAAKAIAKALoAUUEQCAAQaTlAEEAEBMMFAtBfyEDIAAQ5wQNFEEAIQIgACAAKQMgQQAQwAEaIAAoAgAiASAAKQMgIAApAyggASgC6AERGAAiDUKAgICAcINCgICAgOAAUQRAIAAoAkAiAQRAIAEoAmhBAEdBAXQhAgsgACgCACIBIAEoAhApA4ABIAAoAgwgACgCFCACELQCDBULIAAgDUEAEMABIQsgACgCACANEAwgCw0UIABBMxANIAAQD0UNEQwUCwJAIAFBBHFFDQBBACECIABBAEEBEJwBQaR\u002FRw0AQX8hAyAAQQNBACAAKAIYIAAoAhQQxAFFDRIMFAtBfyEDIAAQ+AFFDRAMEwtBfyEDQQAhAiAAQQJBACAAKAIYIAAoAhQQxAFFDRAMEgtBfyEDQQAhAiAAQQFBABDsAkUNDwwRC0F\u002FIQMgABAPDRAgAEEHEA0MDQtBfyEDIAAQDw0PIABBuAEQDSAAQQgQFwwKC0F\u002FIQMgABAPDQ4gAEEJEA0MCwtBfyEDIAAQDw0NIABBChANDAoLIAAoAigEQCAAENwBDAwLAkAgAUEEcSIHRQ0AIABBARBzQaR\u002FRw0AQX8hA0EAIQIgAEEDQQAgACgCGCAAKAIUEMQBRQ0LDA0LAkACQCAAQYYBEEVFDQAgAEEBEHNBCkYNACAAKAIUIQEgACgCGCEEQX8hAyAAEA8NDiAAKAIQIgZBRUYEQCAAQQJBAiAEIAEQxAFFDQwMDwtBhgEhAiAHRQ0BAkAgBkEoRgR\u002FIABBAEEBEJwBQaR\u002FRg0BIAAoAhAFIAYLQYN\u002FRw0CIAAoAigNAiAAQQEQc0Gkf0cNAgsgAEEDQQIgBCABEMQBRQ0LDA4LAkAgACgCICIBQc4ARw0AIAAoAkAoAlwNACAAQb0vQQAQEwwNCyAAKAIAIAEQFiECIAAQD0UNACAAKAIAIAIQEAwMCyAAQbgBEA0gACACEDggACAAKAJALwG8ARAUDAkLIAAgBUEYakEAEJwBQT1GBEAgAEEAQQBBACAFKAIYQQJxQQEQwgFBAE4NCQwLCyAAKAIQQfsARgRAQQAhASAFQQA2AhwgABAPDQYgAEELEA0CQANAIAAoAhAiAUH9AEYNAQJAAkAgAUGlf0YEQCAAEA8NECAAEFMNECAAQQcQDSAAQdMAEA0gAEEGEFggAEEOEA0gAEEOEA0MAQsgACgCFCEBIAAoAhghAyAAIAVBHGpBAUEBQQAQxgMiBEEASA0BAkACQCAEQQFGBEAgAEG4ARANIAAgBSgCHCIBEBcgACAAKAJALwG8ARAUDAELIAAoAhBBKEYEQAJ\u002FIARB\u002Fv\u002F\u002F\u002FwdxIgZBAkYEQCAEQQJqIQdBAAwBC0EGIQcgBEEDa0EAIARBBGtBA0kbCyECIAAgByACIAMgARDEAQ0EAkAgBSgCHCIBRQRAIABB1QAQDQwBCyAAQdQAEA0gACABEBcLIABBBCAEQQFrQQRyIAZBAkcbQf8BcRBYDAILIABBOhAoDQMgABBTDQMCQCAFKAIcIgFBxQBHBEAgAQ0BIAAQwwMgAEHRABANIABBDhANQQAhAQwDCyAJBEAgAEH41ABBABATQcUAIQEMDgsgAEHPABANQQEhCUHFACEBDAILIAAgARCeAQsgAEHMABANIAAgARAXCyAAKAIAIAEQEAsgBUEANgIcIAAoAhBBLEcNAiAAEA9FDQELCyAFKAIcIQEMBwtBACEBIABB\u002FQAQKEUNCQwGCyAAEA8NCkEAIQEDQCAAKAIQIgJB3QBGIAFBH0tyIAJBpX9GciACQSxGckUEQCAAEFMNDCABQQFqIQEgACgCECICQd0ARg0BIAJBLEcNBiAAEA9FDQEMDAsLIABBJhANIAAgAUH\u002F\u002FwNxEBRBACECA0AgACgCECEEAkACQAJAAkAgAUH\u002F\u002F\u002F\u002F\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\u002F\u002FA0YEQCAAQbYhQQAQEwwICyADQaV\u002FRwRAQX8hAyAAEFMNCSABQQFqIQEgACgCEEEpRg0CIABBLBAoRQ0BDAkLCyAFIAE2AhQgAEEmEA0gACABQf\u002F\u002FA3EQFCAAQQEQDSAAIAEQOANAAkACQCAAKAIQIgFBpX9HBEAgAUEpRg0CIAAQUw0KIABB0QAQDUGQASEBDAELQX8hAyAAEA8NCkHSACEBIAAQUw0KCyAAIAEQDSAAKAIQQSlGDQBBfyEDIABBLBAoRQ0BDAkLCyAAEA8NBiAAQQ4QDQJAAkACQAJAIAZBvAFrDgQBAwMBAAsgBkExRg0BIAZBxwBGDQAgBkHBAEcNAgsgAEEYEA0gAEEnEA0gACAHQQFGEBRBACECDAcLIABBMhANDAQLIAJFBEAgAEEnEA0gAEEBEBQMAwsgB0EBRgRAIABBGBANIABBJxANIABBARAUQQAhAgwGCyAAQQYQDSAAQRsQDSAAQScQDUEAIQIgAEEAEBQMBQsgBSABNgIUIAAQDw0FCwJAAkACQAJAIAZBvAFrDgQBAwMBAAsgBkExRg0BIAZBxwBGDQAgBkHBAEcNAgsgAEEkEA0gACAFLwEUEBRBACECDAULIABBMRANIAAgBS8BFBAUDAILAkACQAJAIAdBAWsOAgEAAgsgAEEhEA0gACAFLwEUEBQMAgsgAEEhEA0gACAFLwEUEBRBACECDAQLIABBIhANIAAgBS8BFBAUQQAhAgwDCyAAQREQDSAAQb0BEA0gAEEIEBdBACECIABBABAUIAAQ6wQMAgsgACAELwG8ARAUIARBATYCREEAIQIMAQtBACEBIAQoApgCIgNBAE4EQCAEKAKAAiADai0AACEBCyAHRQRAIAAgBUEcakEBEOQCC0F\u002FIQMgABAPDQIgABCLAQ0CIABB3QAQKA0CIAFBNEYEQCAAQcoAEA0FIABBxwAQDQsMAAsAC0F\u002FIQMLIAVBIGokACADC4EBAQF\u002FAkACQCAAKAIQQYN\u002FRw0AIAAoAigNACAAKAIgIQIgACgCQC0AbkEBcUUNASACQc4ARg0AIAJBO0cNAQsgAEGLHUEAEBNBAA8LIAAoAgAgAhAWIQICQAJAIAEEQCAAIAIQ5gQNAQsgABAPRQ0BCyAAKAIAIAIQEEEAIQILIAIL4gQBBH8CQAJAAkACfwJAAkACQAJAAkAgAkUNAAJAIABBwgAQRUUEQCAAQcMAEEVFDQELIAAoAgAgACgCIBAWIQUgABAPDQRBASEHAkACQCAAKAIQIghBKGsOBQQBAQEEAAsgCEE6RiAIQf0ARnINAwsgACgCACAFEBBBA0ECIAVBwwBGGyEGDAELIAAoAhBBKkYEQCAAEA8NCEEEIQYMAQsgAEGGARBFRQ0AIABBARBzQQpGDQAgACgCACAAKAIgEBYhBSAAEA8NA0EBIQcCQAJAIAAoAhAiCEEoaw4FAwEBAQMACyAIQTpGIAhB\u002FQBGcg0CCyAAKAIAIAUQEEEFIQYgACgCEEEqRw0AIAAQDw0HQQYhBgsgACgCECIFQYN\u002FRyAFQSdqQVJJcQ0BQQAhByAFQYN\u002FRgRAIAAoAihFIQcLIAAoAgAgACgCIBAWIQUgABAPDQILQQAgBiADRSAHRXJyDQMaIAAoAhAiAEE6RyACRSAAQShHcnEhBkEAIQQMBgsCQAJAAkAgBUGAAWoOAgEAAgsgACgCACAAKQMgEDAiBUUNBiAAEA8NAgwDCyAAKAIAIAApAyAQMCIFRQ0FIAAQD0UNAgwBCyAFQdsARwRAIARFIAVBqX9Hcg0EIAAoAgAgACgCIBAWIQUgABAPDQFBEAwDCyAAEA8NBCAAEIsBDQQgAEHdABAoDQRBACEFQQAMAgsgACgCACAFEBAMAwtBAAshBCAGQQJJDQIgACgCEEEoRg0CIAAoAgAgBRAQCyAAQeLUAEEAEBMLIAFBADYCAEF\u002FDwsgASAFNgIAIAQgBnILUwEBf0F\u002FIQIgACgCACAAKAJAIgBBtAJqQQggAEG8AmogACgCuAJBAWoQZEUEQCAAIAAoArgCIgJBAWo2ArgCIAAoArQCIAJBA3RqIAE3AwALIAILjgEBAn8gASgCiAEiBEH\u002F\u002FwNOBEAgAEGjIUEAEDpBfw8LQX8hAyAAIAFBgAFqQRAgAUGEAWogBEEBahBkBH9BfwUgASABKAKIASIDQQFqNgKIASABKAKAASADQQR0aiIDQgA3AgAgA0IANwIIIAMgACACEBY2AgAgAyADKAIMQYB+cjYCDCABKAKIAUEBawsLhgEBAn8CQANAIAJBAE4EQAJAIAAoAnQgAkEEdGoiBCgCACABRw0AIAQoAgwiBUECcQ0DIANFDQAgBUHwAXFBMEYNAwsgBCgCCCECDAELC0F\u002FIQIgACgCIEUNACAAKAIkDQAgACABEKACIgAEQEGAgICABCECIAAtAARBAnENAQtBfyECCyACC8ABAQR\u002FIwBBEGsiAiQAIABBJxBFBH8gAiAAKAIENgIAIAIgACgCFDYCBCACIAAoAhg2AgwgAiAAKAIwNgIIQX8Cf0F\u002FIAAQDw0AGgJAIAAoAhAiA0EvaiIEQQdNQQBBASAEdEHBAXEbIANB+wBGckUEQEEBIANB2wBGDQIaIANBg39HDQFBACAAKAIoDQIaCyABQQRxQQJ2IAAoAgQgACgCFEZyDAELQQALIAAgAhDtAhsFQQALIQUgAkEQaiQAIAULggIBB38CQAJAAkAgAkHOAEYgAkE7RnJFBEAgACgCACEFIAJBFkcNASAAKAJAIQYMAgsgAEGsywBBABATDAILIAAoAkAiBigCwAIiB0EAIAdBAEobIQcDQCAEIAdGDQEgBEEDdCEJIARBAWohBCAJIAYoAsgCaigCBCACRw0ACyAAQZPLAEEAEBMMAQsgBSAGIANB\u002FgBGQQAgASgCOCACQQFBAUEAENIDIgBBAEgNACAFIAFBNGpBDCABQTxqIAEoAjhBAWoQZA0AIAEgASgCOCICQQFqNgI4IAEoAjQhCiAFIAMQFiEDIAogAkEMbGoiASAANgIAIAEgAzYCBEEADwtBfwuqBAEIfyMAQRBrIgUkACAAKAJAIQcgACgCACEGIAJBsX9HIQlBvX9BvX9BuX8gAkFRRiIIGyACQUlGG0H\u002FAXEhCgJ\u002FAkACQANAAkACQCAAKAIQIgRBg39GBEAgACgCKARAIAAQ3AEMBgsgCEUgAkFJR3EgBiAAKAIgEBYiBEEnR3JFBEAgAEG2MkEAEBMMBQsgABAPDQQgACAEIAIQowINBCADBEAgACAAKAJAKAKUAyAEIARBABD5AUUNBQsCQCAAKAIQQT1GBEAgABAPDQYgCUUEQCAAQbgBEA0gACAEEBcgACAHLwG8ARAUIAAgBUEMaiAFQQhqIAUgBUEEakEAQQBBPRCuAUEASA0HIAAgARCtAQRAIAYgBSgCABAQDAgLIAAgBBCeASAAIAUoAgwgBSgCCCAFKAIAIAUoAgRBAEEAEMEBDAILIAAgARCtAQ0GIAAgBBCeASAAIAoQDSAAIAQQFyAAIAcvAbwBEBQMAQsgCEUEQCACQUlHDQEgAEG32QBBABATDAYLIABBBhANIABBvQEQDSAAIAQQFyAAIAcvAbwBEBQLIAYgBBAQDAELIARBIHJB+wBHDQEgACAFQQxqQQAQnAFBPUcNASAAQQYQDUF\u002FIAAgAkEAQQEgBSgCDEECcUEBEMIBQQBIDQUaC0EAIAAoAhBBLEcNBBogABAPRQ0BDAMLCyAAQeHmAEEAEBMMAQsgBiAEEBALQX8LIQsgBUEQaiQAIAsL\u002FQICBX8BfiMAQSBrIgIkAAJ\u002FAkAgACgCACACQQhqQSAQPg0AAkADQAJAIAEiBCAAKAI8Tw0AIAFBAWohAQJAAkACQAJAAkAgBC0AACIDQdwAaw4FAgMDAwEACyADQSRHDQJBJCEFIAEtAABB+wBHDQMgBEECaiEBCyAAIAM2AiggAEGCfzYCECACQQhqEDchByAAIAE2AjggACAHNwMgQQAMBwsgAkEIakHcABA8DQUgASAAKAI8Tw0CIARBAmohASAELQABIQMLAkACQAJAIANBCmsOBAECAgACCyABIAEtAABBCkZqIQELIAAgACgCCEEBajYCCEEKIQUMAQsgA0GAAUkEQCADIQUMAQsgAUEBa0EGIAJBBGoQUSIFQf\u002F\u002FwwBLDQMgAigCBCEBCyACQQhqIAUQsQFFDQEMAwsLIABBrckAQQAQEwwBCyAAQbLfAEEAEBMLIAIoAggoAhAiAEEQaiACKAIMIAAoAgQRAABBfwshBiACQSBqJAAgBgtpACABQQFqQQhNBEAgACABQcsAa0H\u002FAXEQDg8LIAFBgAFqQf8BTQRAIABBvQEQDiAAIAFB\u002FwFxEA4PCyABQYCAAmpB\u002F\u002F8DTQRAIABBvgEQDiAAIAFB\u002F\u002F8DcRAmDwsgAEEBEA4gACABEBsLaQEEfyAAKAIEIQYCQANAIAEgBk4NAQJAAkAgACgCACABaiIELQAAIgVBtgFHBEAgBUHGAUYNASAFQewARw0EIAQoAAEgAkcNBAwCCyAEKAABIAJGDQELIAFBBWohAQwBCwtBASEDCyADC\u002F8BAQZ\u002FIAAgAUF\u002FEGMaAkADQCAHQQpGBEBB7AAhBAwCCwJAIAFBAEgNACABIAAoAqwCTg0AIAAoAqQCIAFBFGxqKAIIIQUgACgCgAIhCANAAkACQCAFIAhqIgktAAAiBkG2AUYNACAGQcYBRwRAIAZBDkcNAgNAIAggBUEBaiIFai0AACIEQQ5GDQALIARBKUYNBiAGIQQMBgsgA0UNACADIAkoAAE2AgALIAUgBkECdEHgrgFqLQAAaiEFDAELCyAGIgRB7ABHDQIgB0EBaiEHIAkoAAEhAQwBCwtB3BdBqOwAQd\u002F4AUHpHBAAAAsgAiAENgIAIAAgAUEBEGMaIAELaAACQCABQQBODQBBfyEBIAAoAgAgAEGkAmpBFCAAQagCaiAAKAKsAkEBahBkDQAgACAAKAKsAiIBQQFqNgKsAiAAKAKkAiABQRRsaiIAQQA2AhAgAEJ\u002FNwIIIABCgICAgHA3AgALIAELpAEBAn8gASgCwAIiCkH\u002F\u002FwNOBEAgAEGwKEEAEDpBfw8LQX8hCSAAIAFByAJqQQggAUHEAmogCkEBahBkBH9BfwUgASABKALAAiIJQQFqNgLAAiABKALIAiAJQQN0aiIJIAQ7AQIgCSAHQQN0QQhxIAZBAnRBBHEgA0EBdEECcSACQQFxcnJyIAhBBHRyOgAAIAkgACAFEBY2AgQgASgCwAJBAWsLCzYAAkAgACABQQgQTCIAQQBIDQAgASgCYEUNACABKAJ0IABBBHRqIgEgASgCDEECcjYCDAsgAAt7AQN\u002FIwBBQGoiASQAIAEgAELoB383AzhBwN4ELQAAQQFxRQRAQcjUBEHM1ARB0NQEEANBwN4EQQE6AAALIAEpAzgiAKcgAEIgiKcgAUEMahAIIAFB1NQEQdDUBCABKAIsGygCADYCNCABKAIwIQMgAUFAayQAIANBRG0LqgQDBn4DfwF8IwBBEGsiDCQAQX8hCwJAIAAgDEEIaiABEKYCDQACfCAMKwMIIg69Qv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoGAgICAgID4\u002FwBaBEAgBARAQgAhAUQAAAAAAAAAAAwCC0EAIQsMAgsCfiAOmUQAAAAAAADgQ2MEQCAOsAwBC0KAgICAgICAgIB\u002FCyEBRAAAAAAAAAAAIANFDQAaQQAgARDUA2siAKxC4NQDfiABfCEBIAC3CyEOIAEgAUKAuJkpgSIBQj+HQoC4mSmDIAF8IgV9QoC4mSl\u002FIgdCkM4AfiIBIAFCyfbeAYEiAX0gAUI\u002Fh0K3iaF+g3xCyfbeAX9Csg98IQEgBaciAEHg1ANtIQQgAEHoB20hAyAHQgR8QgeBIghCP4dCB4MhCQNAAkAgByABEPcEfSIGQgBTBEBCfyEFDAELQgEhBSAGIAEQ9gQiCloNACAKQu0CfSEHIAggCXwhCCAAQYDd2wFtIQsgA0E8byENIATBQTxvIQQgACADQegHbGshAEIAIQUDQAJAIAVCC1ENACAGIAWnQQJ0QdDIAWo0AgAgB0IAIAVCAVEbfCIJUw0AIAVCAXwhBSAGIAl9IQYMAQsLIAIgDjkDQCACIAi5OQM4IAIgALc5AzAgAiANtzkDKCACIAS3OQMgIAIgC7c5AxggAiAFuTkDCCACIAG5OQMAIAIgBkIBfLk5AxBBASELDAILIAEgBXwhAQwACwALIAxBEGokACALCw0AIAAgASACQQEQ+gQLKAAgASgCBEEFRwRAIAFBBTYCBCAAKAIQIAEoAggQzgEgAUEANgIICwtmAgJ\u002FAX4jAEEQayIDJABBfyEEAkAgACABQgAQTiIFQoCAgIBwg0KAgICA4ABRDQAgACADQQxqIAUQlQENACAAIAFBACADKAIMIAJqIgCtEIYCQQBIDQAgAEUhBAsgA0EQaiQAIAQLtwEBAn8CQAJ8AkACQAJAAkACQEEHIABCIIinIgIgAkEHa0FuSRsiAkEIag4KAgEGBgYGBgIDAAQLIACnIQEMBQsgAKdBABDrBSEBDAQLIACnQdsYbCEBDAMLIACnQdsYbLcMAQsgAkEHRw0BRAAAAAAAAPh\u002FIABCgICAgMCBgPz\u002FAHwiAL8gAEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLvSIAQiCIIACFp0HbGGwhAQsgASACcwvzBwETfyMAQRBrIgwkAAJAIAAgAhAlIgJCgICAgHCDQoCAgIDgAFEEQEF\u002FIRQMAQtBfyEUQX8hBQJAIABBASACpyIEKAIEQf\u002F\u002F\u002F\u002F8HcSIKIApBAU0bQQJ0ECQiD0UNACAMQQA2AgxBACEFA0AgCCAKTg0BIA8gBUECdGogBCAMQQxqEMYBNgIAIAVBAWohBSAMKAIMIQgMAAsACyAAIAIQDCAFQQBIDQAgAyEKIAAoAhAhA0EAIQQjAEEgayIHJAAgByADQTgQnQJBfyEIAkAgByAFIgNBAnQiEBC8AQ0AAkAgCkUEQCADQQAgA0EAShshBgNAIAQgBkYNAiAEQQJ0IRUgBEEBaiEEIBUgD2ooAgBB\u002FwFNDQALCyAHIA8gAyAKQQF2EJUGIAcoAgwNASAHKAIAIglBBGohCyAHKAIEIg1BAnYiCEEBayERQQAhAwNAAkAgAyAISARAIAkgAyIEQQJ0aigCABDQAkUNAQNAIAQgEUYEQCAIIQMMAwsgCSAEQQFqIgVBAnRqKAIAIhIQ0AIiEwRAA0ACQCADIARKDQAgCSAEQQJ0aiIQKAIAIgYQ0AIgE0wNACAQIAY2AgQgBEEBayEEDAELCyALIARBAnRqIBI2AgAgBSEEDAEFIAUhAwwDCwALAAsgCkEBcSANQQhJcg0DQQEhDUEBIQMDQCAIIA1GBEAgAyEIDAUFIAkgDUECdGooAgAiCxDQAiEGIAMhBAJAAkADQCAEQQBMDQEgCSAEQQFrIgRBAnRqIhAoAgAiDhDQAiIFBEAgBSAGSCEWQYACIQYgFg0BDAILCwJAIAtB4SJrQRRLIA5BgCJrQRJLckUEQCALQRxsIA5BzARsakGcjaEBayEGDAELAkAgDkGA2AJrIgRBo9cASw0AIARB\u002F\u002F8DcUEccCALQacjayIEQRtLcg0AIAQgDmohBgwBC0GwByEEQQAhEQNAIAQgEUgNAiAHQRhqIAQgEWpBAm0iEkEBdEHA1QNqLwEAIgZBBnYiCkECdEHQ4wJqKAIAIhNBDnYiBSAGQT9xaiIGIAogBSATQQd2Qf8AcSATQQF2QT9xEJQGGiALIAcoAhxrIA4gBygCGCIFayAFIA5GGyIFQQBIBEAgEkEBayEEDAELIAUEQCASQQFqIREMAQsLIAZFDQELIBAgBjYCAAwBCyAJIANBAnRqIAs2AgAgA0EBaiEDCyANQQFqIQ0MAQsACwALIANBAWohAwwACwALIAcoAgAiCSAPIBAQHhogAyEICyAMIAk2AgggB0EgaiQAIAAoAhAiAEEQaiAPIAAoAgQRAAAgCEEASA0AIAEgDCgCCDYCACAIIRQLIAxBEGokACAUC6YDACMAQRBrIgQkACAFKAIAIQIgBCADKQMAIgE3AwgCQAJAAkACQAJAAkACQCACKAJUIgVBGHZBBGsOAgIAAQsgAi0AoAENAkH+OEGo7ABBzt8BQYbnABAAAAtBlf8AQajsAEHS3wFBhucAEAAACyACLQCgAQ0BIAIoAnRFDQIgAkEBOgCgASABQiCIp0F1TwRAIAGnIgMgAygCAEEBajYCACACKAJUIQULIAIgATcDqAEgAiAFQf\u002F\u002F\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\u002F\u002F\u002F\u002F\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\u002F\u002F\u002F\u002F8PWAR+IAZC\u002F\u002F\u002F\u002F\u002Fw+DBUKAgICAwH4gBrm9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLEDlBAEgNACAAIAUQDCAGQv\u002F\u002F\u002F\u002F8PgyAIQv\u002F\u002F\u002F\u002F8PWA0BGkKAgICAwH4gBrm9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsMAQsgACAFEAxCgICAgOAACyELIAxBEGokACALCxUBAn4gACABEIcFIQMgACABEAwgAwv5DgIKfgR\u002FIwBBEGsiECQAIBAgAjcDCAJAAkACfgJAAkACQAJAAkACQAJAAkACQAJAQQcgAkIgiKciDiAOQQdrQW5JGyIOQQdqDg8EAwMDAwMABQUFAwMDAwECCwJAAkACQAJAIAKnIg4vAQYiD0EEaw4DAQACAwtCgICAgDAhByAAIAIQNCICQoCAgIBwg0KAgICA4ABRDQsgACACEO4DIgJCgICAgHCDQoCAgIDgAFENCyABKAIoIAIQhAEhDgwOC0KAgICAMCEHIAAgAhCWASICQoCAgIBwg0KAgICA4ABRDQogASgCKCACEIQBIQ4MDQsgASgCKCAOKQMgEI0BIQ4gACACEAwMDAsgD0EhRg0HQoCAgIAwIQYgACABKQMIQQEgEEEIahDxAyIEQoCAgIDwAINCgICAgOAAUQ0GIAAgBBAnBEAgAEHJ3wBBABASDAcLIANCIIinQXVPBEAgA6ciDiAOKAIAQQFqNgIACyABKQMYIgRCIIinQXVPBEAgBKciDiAOKAIAQQFqNgIACwJAAkACQAJAIAAgAyAEELYCIghCgICAgHCDQoCAgIDgAFEEQEKAgICAMCEHDAELIAEpAxgiBEKAgICAcINCgICAgJB\u002FUQRAIASnKAIEQf\u002F\u002F\u002F\u002F8HcUUNAwsgCEIgiKdBdU8EQCAIpyIOIA4oAgBBAWo2AgALIABB65YBIAhB7JYBELIBIgdCgICAgHCDQoCAgIDgAFINAQtCgICAgDAhCQwICyAAQbCSARBgIglCgICAgHCDQoCAgIDgAFINAQwHCyABKQMgIgdCIIinQXVPBEAgB6ciDiAOKAIAQQJqNgIACyAHIQkLIAAgACABKQMIQQEgEEEIakEAEO0DEP8BDQUgACACEMwBIg5BAEgNBQJAAkAgDgRAIAAgECACEC8NCCABKAIoQdsAEDwaIBApAwAiCkIAIApCAFUbIQwgAUEoaiEOAkADQCAFIAxRDQEgBVBFBEAgASgCKEEsEDwaCyABKAIoIAcQjQEaIAAgAiAFEGwiC0KAgICAcINCgICAgOAAUQ0KIAAgBSIEQoCAgIAIWgR+QoCAgIDAfiAEub0iBEKAgICAwIGA\u002FP8AfSAEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwUgBAsQNCIEQoCAgIBwg0KAgICA4ABRDQ8gACABIAIgCyAEEPADIQsgACAEEAwgC0KAgICAcIMiDUKAgICA4ABRDQogBUIBfCEFQoCAgIAwIQQgACABQoCAgIAgIAsgDUKAgICAMFEbIAgQ7wNFDQALDA4LIApCAFcEQEHdACEPQoCAgIAwIQQMAwsgASkDGCIFQoCAgIBwg0KAgICAkH9SBEBB3QAhD0KAgICAMCEEDAILQd0AIQ9CgICAgDAhBCAFpygCBEH\u002F\u002F\u002F\u002F\u002FB3ENAQwCCwJAIAEpAxAiBkKAgICAcIMiBUKAgICAMFIEQCAGQiCIp0F1SQ0BIAanIg4gDigCAEEBajYCAAwBCyAAIAJBEUEAELICIgZCgICAgHCDIQULQoCAgIAwIQQgBUKAgICA4ABRDQwgACAQIAYQLw0MIAEoAihB+wAQPBpCACEFIBApAwAiBEIAIARCAFUbIQsgAUEoaiEOQQAhD0KAgICAMCEEA0AgBSALUgRAIAAgBBAMIAAgBiAFEGwiBEKAgICAcINCgICAgOAAUQ0OIARCIIinQXVPBEAgBKciESARKAIAQQFqNgIACyAAIAIgBBBOIgpCgICAgHCDQoCAgIDgAFENDiAAIAEgAiAKIAQQ8AMiCkKAgICAcIMiDEKAgICAMFIEQCAMQoCAgIDgAFENDyAPBEAgASgCKEEsEDwaCyAAIAQQ7gMiBEKAgICAcINCgICAgOAAUQRAIAAgChAMDBALIAEoAiggBxCNARogASgCKCAEEI0BGiABKAIoQToQPBogASgCKCAJEI0BGkEBIQ8gACABIAogCBDvAw0PCyAFQgF8IQUMAQsLIA9FBEBB\u002FQAhDwwCC0H9ACEPIAEoAhgoAgRB\u002F\u002F\u002F\u002F\u002FwdxRQ0BCyAOKAIAQQoQPBogDigCACADEI0BGgsgASgCKCAPEDwaQQAhDiAAIAAgASkDCCAQIBBBABCuBRD\u002FAQ0KIAAgAhAMIAAgBhAMIAAgBxAMIAAgCRAMIAAgCBAMIAAgBBAMDAsLQoCAgIAgIAIgAkKAgICAwIGA\u002FP8AfEKAgICAgICA+P8Ag0KAgICAgICA+P8AURshAgwDCyAOQXZGDQULIAAgAhAMQQAhDgwIC0KAgICAMCEHQoCAgIAwIQlCgICAgDAhBkKAgICAMCEEQoCAgIAwIQggACACEO4DIgJCgICAgHCDQoCAgIDgAFINAAwGCyABKAIoIAIQhAEhDgwGC0KAgICAMCEEDAQLQoCAgIAwIQdCgICAgDAMAgsgAEHeDEEAEBJCgICAgDAhBwtCgICAgDAhBkKAgICAMAshCUKAgICAMCEEQoCAgIAwIQgLIAAgAhAMIAAgBhAMIAAgBxAMIAAgCRAMIAAgCBAMIAAgBBAMQX8hDgsgEEEQaiQAIA4L\u002FAICAX8BfiMAQSBrIgUkACAFIAQ3AxgCQAJAAkAgA0KAgICAcINCgICAgOB+UiADQv\u002F\u002F\u002F\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\u002F\u002F\u002F\u002F\u002FB3EiBSAFQQpPGxCOASICNwMwDAELIAtCIIinQXVPBEAgC6ciBSAFKAIAQQFqNgIACyAEIAs3AzAgCyECCyAAIAMQDEKAgICA4AAhCiACQoCAgIBwg0KAgICA4ABRDQIgABAzIgxCgICAgHCDQoCAgIDgAFEEQEKAgICA4AAhDAwDCyABQiCIpyIFQXVPBEAgAaciByAHKAIAQQFqNgIACyAAIAxBLyABQQcQFUEASA0CIAVBdU8EQCABpyIFIAUoAgBBAWo2AgALQoCAgIAwIQogACAEQRhqIAwgASALEPADIgJCgICAgHCDIgFCgICAgDBRDQJCgICAgOAAIQogAUKAgICA4ABRBEAgASEKDAMLIAAgBEEYaiACIAsQ7wMhCCAEKAJAIQYgCA0CIAYQNyEKDAMLIAAgAxAMDAELQoCAgIDgACEKCyAGKAIAKAIQIgVBEGogBigCBCAFKAIEEQAAIAZBADYCBAsgACAMEAwgACAEKQM4EAwgACAEKQMwEAwgACAEKQMoEAwgACAEKQMgEAwgBEHgAGokACAKC7YBAgF\u002FAX4jAEHQAGsiBCQAIARBAEHQABAsIgQgAzYCDCAEIAA2AgAgBEKggICAEDcDECAEIAE2AjggBCABIAJqNgI8IARBATYCCCAEQQA2AkxCgICAgDAhBQJAAkAgBBCiAQ0AIAQQ9QMiBUKAgICAcINCgICAgOAAUQ0AIAQoAhBBqn9GDQEgBEGu4gBBABATCyAAIAUQDCAEIARBEGoQgQJCgICAgOAAIQULIARB0ABqJAAgBQtAAQJ\u002FIwBBEGsiAiQAAn8gASAAKAIQRwRAIAIgATYCACAAQcyQASACEBNBfwwBCyAAEKIBCyEDIAJBEGokACADC9AFAgJ+BX8jAEEQayIGJAAgACgCACEFAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIQIgRBgAFqDgQCAQUDAAsgBEGqf0YNAyAEQdsARwRAIARB+wBHDQVCgICAgCAhASAAEKIBDQlCgICAgOAAIQEgBRAzIgJCgICAgHCDQoCAgIDgAFENCQJAIAAoAhAiA0H9AEYNAANAAkAgA0GBf0YEQCAFIAApAyAQMCIDDQEMDAsgA0GDf0cNCiAAKAJMRQ0KIAUgACgCIBAWIQMLAkACQCAAEKIBDQAgAEE6EPQDDQAgABD1AyIBQoCAgIBwg0KAgICA4ABSDQELIAUgAxAQDAsLIAUgAiADIAFBBxAVIQcgBSADEBAgB0EASA0KIAAoAhBBLEcNASAAEKIBDQogACgCTEUgACgCECIDQf0AR3INAAsLIAIhASAAQf0AEPQDDQkMCgtCgICAgCAhASAAEKIBDQhCgICAgOAAIQEgBRA7IgJCgICAgHCDQoCAgIDgAFENCAJAIAAoAhBB3QBGDQADQCAAEPUDIgFCgICAgHCDQoCAgIDgAFENCSAFIAIgAyABQQcQkwFBAEgNCSAAKAIQQSxHDQEgABCiAQ0JIANBAWohAyAAKAJMRQ0AIAAoAhBB3QBHDQALCyACIQEgAEHdABD0Aw0IDAkLIAApAyAiAUIgiKdBdU8EQCABpyIEIAQoAgBBAWo2AgALIAEhAiAAEKIBDQcMCAsgACkDICIBIQIgABCiAQ0GDAcLIAAoAiBBAWsiBEECSw0BIARBA3RB4PQBaikDACIBIQIgABCiAQ0FDAYLIABB9RRBABATDAELIAAoAjghAyAGIAAoAhgiBDYCBCAGIAMgBGs2AgAgAEGzjQEgBhATC0KAgICAICEBDAILIABBrNQAQQAQEwsgAiEBCyAFIAEQDEKAgICA4AAhAgsgBkEQaiQAIAILVgECfgJ\u002FQQAgAUKAgICAcFQNABogACABQc0BIAFBABARIgJCgICAgHCDIgNCgICAgDBSBEBBfyADQoCAgIDgAFENARogACACECcPCyABpy8BBkESRgsLGAAgACgCECIAQRBqIAEgAiAAKAIIEQEAC7gBAgJ+A38jAEEQayIGJAACQAJAIAAgAUEtEFoEQCAAIAFCgICAgDAQ\u002FQEiBEKAgICAcINCgICAgOAAUQ0CIAAgBiAEEIICIQUgACAEEAwgBUKAgICAcINCgICAgOAAUQ0BIAAgASADIAYQqQIhCANAIAdBAkZFBEAgACAGIAdBA3RqKQMAEAwgB0EBaiEHDAELCyAIRQ0BIAAgBRAMC0KAgICA4AAhBAwBCyAFIQQLIAZBEGokACAEC6gBAQZ\u002FAkAgASgCVCICQYD+A3ENACABIAJBgAJyNgJUA0AgASgCFCADTARAQQAPCyABKAIQIANBA3RqIgcoAgAhBEF\u002FIQYgACABKAIEEI8EIgJFDQECQCAAIAQQjwQiBEUEQEEAIQUMAQsgACACIAQQuQUhBSAAIAIQMSAEIQILIAAgAhAxIAVFDQEgByAFNgIEIANBAWohAyAAIAUQ+QNBAE4NAAsLIAYLiAEBAn9BjQEhAgJAAkACQAJAAkACQAJAAkACQAJAQQcgAUIgiKciAyADQQdrQW5JG0EKag4SCQgHAggICAgIAwABBgQICAgACAtBxwAPC0HIAA8LQckADwsgAacsAAVBAE4NAQtBxgAPC0EbIQIgACABEDUNAwtBygAPC0HLAA8LQc0AIQILIAILbQECfwJAIAFCgICAgHBUDQAgAaciAy8BBhDgAUUNACADKAIgLQARQQhxRQ0AIAMoAigiBARAIAAgBK1CgICAgHCEEAwLQQAhACACQoCAgIBwWgRAIAKnIgAgACgCAEEBajYCAAsgAyAANgIoCwsMACAAQZHBAEEAEBILzAICBn8BfiMAQRBrIgYkAAJAIAJC\u002F\u002F\u002F\u002F\u002F29YBEAgAEGrH0EAEBIMAQsgACAGQQxqIAIQygENACAGKAIMIgRBgIAETwRAIABBoyFBABA6DAELIABBASAEIARBAU0bQQN0EFwiBUUNAAJAAkAgAqciBy8BBiIDQQhHIANBAkdxDQAgBy0ABUEIcUUNACAEIAcoAihHDQBBACEDA0AgAyAERg0CIANBA3QiCCAHKAIkaikDACICQiCIp0F1TwRAIAKnIgAgACgCAEEBajYCAAsgBSAIaiACNwMAIANBAWohAwwACwALQQAhAwNAIAMgBEYNASAAIAIgAxCmASIJQoCAgIBwg0KAgICA4ABRBEAgACAFIAMQhgNBACEDDAMFIAUgA0EDdGogCTcDACADQQFqIQMMAQsACwALIAEgBDYCACAFIQMLIAZBEGokACADC5wCAgJ\u002FAX4CfkKAgICA4AAgABB2DQAaAkACQCABQoCAgIBwWgRAIAGnIgctAAVBEHFFBEAgAEGdLEEAEBJCgICAgOAADwsgBUEBciEGIAcvAQYiBUENRg0CIAAoAhAoAkQgBUEYbGooAhAiBQ0BCyAAQfs5QQAQEkKAgICA4AAPCyAAIAEgAiADIAQgBiAFERYADwsgBygCIC0AEUEEcQRAIAAgAUKAgICAMCACIAMgBCAGENIBDwtCgICAgOAAIAAgAkEBEF4iCEKAgICAcINCgICAgOAAUQ0AGiAAIAEgCCACIAMgBCAGENIBIgFC\u002F\u002F\u002F\u002F\u002F29YIAFCgICAgHCDQoCAgIDgAFJxRQRAIAAgCBAMIAEPCyAAIAEQDCAICwvPAgEEfyABQRxqIQQgAUEYaiEGA0AgBiAEKAIAIgRHBEACQCAEQRJrLwEAIAJHDQAgBEETay0AAEEBdkEBcSADRw0AIARBGGsiACAAKAIAQQFqNgIAIAAPCyAEQQRqIQQMAQsLIABBKBAkIgRFBEBBAA8LIARBATYCACAAKAIQIQAgBEEDOgAEIAAoAlAiBSAEQQhqIgc2AgQgBCAAQdAAajYCDCAEIAU2AgggACAHNgJQIAQgAjsBBiAEIAQtAAVB\u002FAFxIANBAXRBAnFyOgAFIAEoAhgiACAEQRhqIgU2AgQgBCAGNgIcIAQgADYCGCABIAU2AhgCQCABLQAoQQhxBEAgBCABQThrIgA2AiAgACAAKAIAQQFqNgIADAELIARBADYCIAsgAwRAIAQgASgCECACQQN0ajYCECAEDwsgBCABKAIUIAJBA3RqNgIQIAQLjAICAX8BfgJAAkAgACABpyIELwARQQN2QQZxQZC3AWovAQAQhgEiBUKAgICAcINCgICAgOAAUQRADAELAkAgACAFIAQgAiADEMMFIgFCgICAgHCDQoCAgIDgAFENACAAIAEgBCgCHCICQS8gAhsgBC8BLBCYAyAELwARIgJBEHEEQCAAIAAoAihBqANB2AIgAkEwcUEwRhtqKQMAEEEiBUKAgICAcINCgICAgOAAUQ0BIAAgAUE8IAVBAhAVGiABDwsgAkEBcUUNAiABQoCAgIBwWgRAIAGnIgIgAi0ABUEQcjoABQsgACABQTxBAEEAQQIQgAMaIAEPCwsgACABEAxCgICAgOAAIQELIAELiAQBDX8jAEEgayIFJAAgA0EAIANBAEobIQ5BACEDA0ACQCADIA5GBEBBACEKDAELIAVBADYCGCAFQgA3AxAgBUIANwMIIAUgASADQQxsaiIEKAIENgIMIAUgBCgCCDYCECACIANqIQZBfyEKIANBAWohAyAEKAIAIQlBfyELAkAgBkH\u002F\u002FwNLDQACQCAGIAAoAkAiBEkEQCAAKAJEIgQgBkEYbGooAgBFDQEMAgtBNiAGQQFqIgcgBEEDbEEBdiIEIAQgB0gbIgQgBEE2TBsiB0EDdCEPIABBEGohDCAAQcwAaiEEIABByABqIRADQCAQIAQoAgAiCEcEQCAMIAgoAhQgDyAAKAIIEQEAIg1FDQMgACgCQCEEA0AgBCAHSARAIA0gBEEDdGpCgICAgCA3AwAgBEEBaiEEDAELCyAIIA02AhQgCEEEaiEEDAELCyAMIAAoAkQgB0EYbCAAKAIIEQEAIgRFDQEgBCAAKAJAIghBGGxqQQAgByAIa0EYbBAsGiAAIAc2AkAgACAENgJECyAEIAZBGGxqIgQgBjYCACAJQdgBTgRAIAAoAjggCUECdGooAgAiBiAGKAIAQQFqNgIACyAEIAk2AgQgBCAFKAIMNgIIIAQgBSgCEDYCDCAEIAUoAhQ2AhAgBCAFKAIYNgIUQQAhCwsgC0EATg0BCwsgBUEgaiQAIAoLNQECfwJAIABCgICAgHBUDQAgAKciBC8BBkEMRw0AIAQoAiQgAUcNACAELgEqIAJGIQMLIAMLUAEDfyAAKALgASABKAIUQSAgACgC1AFrdkECdGohAgNAIAIiAygCACIEQShqIQIgASAERw0ACyADIAEoAig2AgAgACAAKALcAUEBazYC3AELgAkBC38jAEEQayIIJAACQAJAAkACQAJAAkADQCABKAIQIgNBMGohBiADIAMoAhggAnFBf3MiCUECdGooAgAhBEEAIQMDQCAEBEAgCCAGIARBAWsiCkEDdGoiBTYCDCAFKAIAIQcgAiAFKAIERgRAQQAhBCAHQYCAgCBxRQ0JQX8hBCAAIAEgCEEMahDTAQ0JIAEoAhAhAgJAIAMEQCACIAMgBmtqIgNBMGogAygCMEGAgIBgcSAIKAIMKAIAQf\u002F\u002F\u002Fx9xcjYCACAIKAIMIQkMAQsgAiAJQQJ0aiAIKAIMIgkoAgBB\u002F\u002F\u002F\u002FH3E2AgALQQEhBCACIAIoAiRBAWo2AiQgACgCECABKAIUIApBA3RqIgMgCSgCAEEadhDUBSAAIAgoAgwoAgQQECAIKAIMIgUgBSgCAEH\u002F\u002F\u002F8fcTYCACAIKAIMQQA2AgQgA0KAgICAMDcDACACKAIkIgNBCEgNCSADIAIoAiBBAXZJDQkgASgCECIHLQAQDQVBAiAHKAIgIAcoAiRrIgIgAkECTBsiCiAHKAIcSw0GIAcoAhhBAWohBANAIAQiAkEBdiIEIApPDQALIAAgCkEDdCINIAJBAnQiBWpBMGoQJCIERQ0IIAJBAWshCyAHKAIIIgIgBygCDCIDNgIEIAMgAjYCACAHQgA3AgggBCAFaiAHQTAQHiEGIAAoAhAiAigCUCIDIAZBCGoiCTYCBCAGIAJB0ABqNgIMIAYgAzYCCCACIAk2AlBBACEDIARBACAFECwaIAdBMGohBCAGQTBqIQIgASgCFCEMQQAhCQNAIAkgBigCICIFT0UEQCAEKAIEIgUEQCACIAU2AgQgAiAEKAIAQYCAgGBxIgUgAigCAEH\u002F\u002F\u002F8fcXI2AgAgAiAFIAYgBCgCBCALcUF\u002Fc0ECdGoiBSgCAEH\u002F\u002F\u002F8fcXI2AgAgBSADQQFqIgU2AgAgDCADQQN0aiAMIAlBA3RqKQMANwMAIAUhAyACQQhqIQILIAlBAWohCSAEQQhqIQQMAQsLIAMgBSAGKAIka0cNByAGQQA2AiQgBiAKNgIcIAYgCzYCGCAGIAM2AiAgASAGNgIQIAAoAhAiAkEQaiAHIAcoAhhBf3NBAnRqIAIoAgQRAABBASEEIAAgASgCFCANEMUCIgBFDQkgASAANgIUDAkFIAdB\u002F\u002F\u002F\u002FH3EhBCAFIQMMAgsACwtBASEEIAEtAAUiA0EEcUUNBiADQQhxRQ0BIAAgCEEIaiACEKUBRQ0GIAgoAggiAyABKAIoIgVPDQYgAS8BBiIEQQhGIARBAkZyRQRAQQAhBAwHCyAFQQFrIANGBEAgACABKAIkIANBA3RqKQMAEAwgASADNgIoDAYLIAAgARCOA0UNAAtBfyEEDAULIAAoAhAoAkQgAS8BBkEYbGooAhQiA0UNBCADKAIIIgNFDQQgACABrUKAgICAcIQgAiADERMAIQQMBAtByuoAQajsAEG4I0HLKBAAAAtB9s0AQajsAEG8I0HLKBAAAAtB14gBQajsAEHhI0HLKBAAAAtBASEECyAIQRBqJAAgBAtQAQN\u002FIwBBIGsiAyQAAn8gACADQQxqIAIQ2wUiBEUEQCABQgA3AwBBfwwBCyABIARBARCwBBogACAEIANBDGoQ5gFBAAshBSADQSBqJAAgBQuQAQIDfwF+IAEoAhQiBSkDACIHQv\u002F\u002F\u002F\u002F8PViABKAIoIgZBAWoiBCAHp01yRQRAIAEoAhAtADNBCHFFBEAgACACEAwgACADQTAQ5wEPCyAFIAStNwMACwJAIAQgASgCIE0NACAAIAEgBBDYBUUNACAAIAIQDEF\u002FDwsgASgCJCAGQQN0aiACNwMAIAEgBDYCKEEBC7wBAQF\u002FIwBBEGsiBSQAIAUgAzcDCAJAIAEEQCABIAEoAgBBAWo2AgAgACABrUKAgICAcIQgAkEBIAVBCGoQNiECIAAgBSkDCBAMQX8hASACQoCAgIBwg0KAgICA4ABRDQEgACACEAxBASEBDAELIAAgAxAMIARBgIABcUUEQEEAIQEgBEGAgAJxRQ0BIAAoAhAoAowBIgRFDQEgBC0AKEEBcUUNAQsgAEHbCUEAEBJBfyEBCyAFQRBqJAAgAQs\u002FAQF+IAAQ4gEiAkKAgICAcINCgICAgOAAUgRAIAKnQQRqIAEQMkUEQCACDwsgACACEAwgABBwC0KAgICA4AALCwAgACABQQEQjQQL2wEBA38jAEEQayIEJAACQAJAIAFCgICAgHBUDQAgAaciAi8BBkEsRgRAAkAgACAEQQhqIAFB4wAQfiIDRQ0AIAQpAwgiAUKAgICAcINCgICAgDBRBEAgACADKQMAEIoEIQIMBAsgACABIAMpAwhBASADEDYiAUKAgICAcINCgICAgOAAUQ0AIAAgARAnIgJFDQIgACADKQMAEJcBIgNBAEgNACADRQ0DIABBnSVBABASC0F\u002FIQIMAgsgAiACLQAFQf4BcToABUEBIQIMAQtBACECCyAEQRBqJAAgAgt7AgJ\u002FAX5BiAIhAkKAgICAICEEAkACQAJAAkACQAJAAkBBByABQiCIpyIDIANBB2tBbkkbIgNBCmoODAUGBAMGBgYGBgYBAgALIANBB0cNBQtBICECDAMLQTAhAgwCC0EoIQIMAQtBOCECCyAAKAIoIAJqKQMAIQQLIAQLYAEBfCAAKQIEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP1gEQCABIAErAwhEAAAAAAAA8D8gACgCALciAqOgOQMIIAEgASsDECAAKAIEIgBBH3UgAEH\u002F\u002F\u002F\u002F\u002FB3EgAEEfdnRqQRFquCACo6A5AxALC\u002FgCAgF+A38jAEEwayIEJABB9e8AIQVCgICAgOAAIQMCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQEEHIAFCIIinIgYgBkEHa0FuSRtBCmoOEggJBgAJCQkJCgUBAgMECQkMBwkLIAZBdUkNCiABpyIAIAAoAgBBAWo2AgAMCgsgBCABPgIAIARBEGoiBUEgQe7rACAEEEgaDAgLIABBA0ECIAGnGxApIQMMCQsgAEEBECkhAwwICyAAQcYAECkhAwwHCyAAIAFBABC7AiIBQoCAgIBwg0KAgICA4ABRBEAgASEDDAcLIAAgASACEI0EIQMgACABEAwMBgsgAgRAIAZBdUkNBSABpyIAIAAoAgBBAWo2AgAMBQsgAEGNyQBBABASDAULIAAgAUKAgICAwIGA\u002FP8AfL9BCkEAQQAQugIhAwwECyAAIAEgACgCECgCoAIRCAAhAwwDC0Hi7wAhBQsgACAFEGAhAwwBCyABIQMLIARBMGokACADCzcAIAAgASACIAMCf0EAIAAoAhAiAC0AiAENABpBASAAKAKMASIARQ0AGiAAKQMIEJYDRQsQ5AULMQIBfwF+IAAgARApIgNCgICAgHCDQoCAgIDgAFIEQCAAIAMQqAEhAiAAIAMQDAsgAgtGAQF\u002FIAEgASgCACICQQFrNgIAIAJBAUwEQCABKQIEQoCAgICAgICAwABaBEAgACABEJsDDwsgAEEQaiABIAAoAgQRAAALC1kBA38jAEEQayICJAAgACgCECEAAn8CQCACQQxqIAEQ7QVFDQAgAigCDCIDQQBIDQAgACABEJAEIANBgICAgHhyDAELIAAgAUEBEMcCCyEEIAJBEGokACAEC0QBAX8jAEEQayIFJAAgBSABIAIgAyAEQoCAgICAgICAgH+FEG8gBSkDACEBIAAgBSkDCDcDCCAAIAE3AwAgBUEQaiQACxAAIAAgASACQQBBABCUBBoLxgIBBX8jAEHQAWsiBSQAIAUgAjYCzAEgBUGgAWoiAkEAQSgQLBogBSAFKALMATYCyAECQEEAIAEgBUHIAWogBUHQAGogAiADIAQQ\u002FQVBAEgEQEF\u002FIQQMAQsgACgCTEEASCEJIAAgACgCACIIQV9xNgIAAn8CQAJAIAAoAjBFBEAgAEHQADYCMCAAQQA2AhwgAEIANwMQIAAoAiwhBiAAIAU2AiwMAQsgACgCEA0BC0F\u002FIAAQmAQNARoLIAAgASAFQcgBaiAFQdAAaiAFQaABaiADIAQQ\u002FQULIQIgBgRAIABBAEEAIAAoAiQRAQAaIABBADYCMCAAIAY2AiwgAEEANgIcIAAoAhQhASAAQgA3AxAgAkF\u002FIAEbIQILIAAgACgCACIAIAhBIHFyNgIAQX8gAiAAQSBxGyEEIAkNAAsgBUHQAWokACAECzwBAX8gAEIANwNwIAAgACgCLCAAKAIEIgFrrDcDeCAAIAAoAggiACABa6xCAFdBAXIEfyAABSABCzYCaAtKAQJ\u002FAkAgAC0AACICRSACIAEtAAAiA0dyDQADQCABLQABIQMgAC0AASICRQ0BIAFBAWohASAAQQFqIQAgAiADRg0ACwsgAiADawvCAQEDfwJAIAEgAigCECIDBH8gAwUgAhCYBA0BIAIoAhALIAIoAhQiBGtLBEAgAiAAIAEgAigCJBEBAA8LAkACQCABRSACKAJQQQBIcg0AIAEhAwNAIAAgA2oiBUEBay0AAEEKRwRAIANBAWsiAw0BDAILCyACIAAgAyACKAIkEQEAIgQgA0kNAiABIANrIQEgAigCFCEEDAELIAAhBUEAIQMLIAQgBSABEB4aIAIgAigCFCABajYCFCABIANqIQQLIAQLWQEBfyAAIAAoAkgiAUEBayABcjYCSCAAKAIAIgFBCHEEQCAAIAFBIHI2AgBBfw8LIABCADcCBCAAIAAoAiwiATYCHCAAIAE2AhQgACABIAAoAjBqNgIQQQALiQQCBX4DfwJAAkAgAb0iBEIBhiIDUA0AIAG9IQYgAL0iBUI0iKdB\u002Fw9xIgdB\u002Fw9GDQAgBkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KBgICAgICA+P8AVA0BCyAAIAGiIgAgAKMPCyADIAVCAYYiAloEQCAARAAAAAAAAAAAoiAAIAIgA1EbDwsgBEI0iKdB\u002Fw9xIQgCfiAHRQRAQQAhByAFQgyGIgJCAFkEQANAIAdBAWshByACQgGGIgJCAFkNAAsLIAVBASAHa62GDAELIAVC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FweDQoCAgICAgIAIhAshAgJ+IAhFBEBBACEIIARCDIYiA0IAWQRAA0AgCEEBayEIIANCAYYiA0IAWQ0ACwsgBEEBIAhrrYYMAQsgBEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FB4NCgICAgICAgAiECyEEIAcgCEoEQANAAkAgAiAEfSIDQgBTDQAgAyICQgBSDQAgAEQAAAAAAAAAAKIPCyACQgGGIQIgB0EBayIHIAhKDQALIAghBwsCQCACIAR9IgNCAFMNACADIgJCAFINACAARAAAAAAAAAAAog8LAkAgAkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FB1YEQCACIQMMAQsDQCAHQQFrIQcgAkKAgICAgICABFQhCSACQgGGIgMhAiAJDQALCyAFQoCAgICAgICAgH+DIANCgICAgICAgAh9IAetQjSGhCADQQEgB2utiCAHQQBKG4S\u002FC8YEAwN8A38CfgJ8AkAgABDKAkH\u002FD3EiBUQAAAAAAACQPBDKAiIEa0QAAAAAAACAQBDKAiAEa0kEQCAFIQQMAQsgBCAFSwRAIABEAAAAAAAA8D+gDwtBACEERAAAAAAAAJBAEMoCIAVLDQBEAAAAAAAAAAAgAL0iB0KAgICAgICAeFENARpEAAAAAAAA8H8QygIgBU0EQCAARAAAAAAAAPA\u002FoA8LIAdCAFMEQEQAAAAAAAAAEBCMBg8LRAAAAAAAAABwEIwGDwtB4LwEKwMAIACiQei8BCsDACIBoCICIAGhIgFB+LwEKwMAoiABQfC8BCsDAKIgAKCgIgEgAaIiACAAoiABQZi9BCsDAKJBkL0EKwMAoKIgACABQYi9BCsDAKJBgL0EKwMAoKIgAr0iB6dBBHRB8A9xIgVB0L0EaisDACABoKCgIQEgBUHYvQRqKQMAIAdCLYZ8IQggBEUEQAJ8IAdCgICAgAiDUARAIAhCgICAgICAgIg\u002Ffb8iACABoiAAoEQAAAAAAAAAf6IMAQsgCEKAgICAgICA8D98vyICIAGiIgEgAqAiA0QAAAAAAADwP2MEfCMAQRBrIgQhBiAEQoCAgICAgIAINwMIIAYgBCsDCEQAAAAAAAAQAKI5AwhEAAAAAAAAAAAgA0QAAAAAAADwP6AiACABIAIgA6GgIANEAAAAAAAA8D8gAKGgoKBEAAAAAAAA8L+gIgAgAEQAAAAAAAAAAGEbBSADC0QAAAAAAAAQAKILDwsgCL8iACABoiAAoAsLuxgDGX8EfAF+IwBBMGsiCCQAAkACQAJAIAC9Ih9CIIinIgNB\u002F\u002F\u002F\u002F\u002FwdxIgZB+tS9gARNBEAgA0H\u002F\u002Fz9xQfvDJEYNASAGQfyyi4AETQRAIB9CAFkEQCABIABEAABAVPsh+b+gIgBEMWNiGmG00L2gIhs5AwAgASAAIBuhRDFjYhphtNC9oDkDCEEBIQMMBQsgASAARAAAQFT7Ifk\u002FoCIARDFjYhphtNA9oCIbOQMAIAEgACAboUQxY2IaYbTQPaA5AwhBfyEDDAQLIB9CAFkEQCABIABEAABAVPshCcCgIgBEMWNiGmG04L2gIhs5AwAgASAAIBuhRDFjYhphtOC9oDkDCEECIQMMBAsgASAARAAAQFT7IQlAoCIARDFjYhphtOA9oCIbOQMAIAEgACAboUQxY2IaYbTgPaA5AwhBfiEDDAMLIAZBu4zxgARNBEAgBkG8+9eABE0EQCAGQfyyy4AERg0CIB9CAFkEQCABIABEAAAwf3zZEsCgIgBEypSTp5EO6b2gIhs5AwAgASAAIBuhRMqUk6eRDum9oDkDCEEDIQMMBQsgASAARAAAMH982RJAoCIARMqUk6eRDuk9oCIbOQMAIAEgACAboUTKlJOnkQ7pPaA5AwhBfSEDDAQLIAZB+8PkgARGDQEgH0IAWQRAIAEgAEQAAEBU+yEZwKAiAEQxY2IaYbTwvaAiGzkDACABIAAgG6FEMWNiGmG08L2gOQMIQQQhAwwECyABIABEAABAVPshGUCgIgBEMWNiGmG08D2gIhs5AwAgASAAIBuhRDFjYhphtPA9oDkDCEF8IQMMAwsgBkH6w+SJBEsNAQsgACAARIPIyW0wX+Q\u002FokQAAAAAAAA4Q6BEAAAAAAAAOMOgIhxEAABAVPsh+b+ioCIbIBxEMWNiGmG00D2iIh2hIh5EGC1EVPsh6b9jIQICfyAcmUQAAAAAAADgQWMEQCAcqgwBC0GAgICAeAshAwJAIAIEQCADQQFrIQMgHEQAAAAAAADwv6AiHEQxY2IaYbTQPaIhHSAAIBxEAABAVPsh+b+ioCEbDAELIB5EGC1EVPsh6T9kRQ0AIANBAWohAyAcRAAAAAAAAPA\u002FoCIcRDFjYhphtNA9oiEdIAAgHEQAAEBU+yH5v6KgIRsLIAEgGyAdoSIAOQMAAkAgBkEUdiICIAC9QjSIp0H\u002FD3FrQRFIDQAgASAbIBxEAABgGmG00D2iIgChIh4gHERzcAMuihmjO6IgGyAeoSAAoaEiHaEiADkDACACIAC9QjSIp0H\u002FD3FrQTJIBEAgHiEbDAELIAEgHiAcRAAAAC6KGaM7oiIAoSIbIBxEwUkgJZqDezmiIB4gG6EgAKGhIh2hIgA5AwALIAEgGyAAoSAdoTkDCAwBCyAGQYCAwP8HTwRAIAEgACAAoSIAOQMAIAEgADkDCEEAIQMMAQsgH0L\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FB4NCgICAgICAgLDBAIS\u002FIQBBACEDQQEhAgNAIAhBEGogA0EDdGoCfyAAmUQAAAAAAADgQWMEQCAAqgwBC0GAgICAeAu3Ihs5AwAgACAboUQAAAAAAABwQaIhAEEBIQMgAiEWQQAhAiAWDQALIAggADkDIEECIQMDQCADIgJBAWshAyAIQRBqIg4gAkEDdGorAwBEAAAAAAAAAABhDQALQQAhBCMAQbAEayIFJAAgBkEUdkGWCGsiA0EDa0EYbSIGQQAgBkEAShsiEEFobCADaiEGQcSmBCgCACIJIAJBAWoiDEEBayIHakEATgRAIAkgDGohAyAQIAdrIQIDQCAFQcACaiAEQQN0aiACQQBIBHxEAAAAAAAAAAAFIAJBAnRB0KYEaigCALcLOQMAIAJBAWohAiAEQQFqIgQgA0cNAAsLIAZBGGshCkEAIQMgCUEAIAlBAEobIQQgDEEATCELA0ACQCALBEBEAAAAAAAAAAAhAAwBCyADIAdqIQ9BACECRAAAAAAAAAAAIQADQCAOIAJBA3RqKwMAIAVBwAJqIA8gAmtBA3RqKwMAoiAAoCEAIAJBAWoiAiAMRw0ACwsgBSADQQN0aiAAOQMAIAMgBEYhFyADQQFqIQMgF0UNAAtBLyAGayESQTAgBmshDyAGQRlrIRMgCSEDAkADQCAFIANBA3RqKwMAIQBBACECIAMhBCADQQBMIg1FBEADQCAFQeADaiACQQJ0agJ\u002FAn8gAEQAAAAAAABwPqIiG5lEAAAAAAAA4EFjBEAgG6oMAQtBgICAgHgLtyIbRAAAAAAAAHDBoiAAoCIAmUQAAAAAAADgQWMEQCAAqgwBC0GAgICAeAs2AgAgBSAEQQFrIgRBA3RqKwMAIBugIQAgAkEBaiICIANHDQALCwJ\u002FIAAgChDVASIAIABEAAAAAAAAwD+inEQAAAAAAAAgwKKgIgCZRAAAAAAAAOBBYwRAIACqDAELQYCAgIB4CyEHIAAgB7ehIQACQAJAAkACfyAKQQBMIhRFBEAgA0ECdCAFaiICIAIoAtwDIgIgAiAPdSICIA90ayIENgLcAyACIAdqIQcgBCASdQwBCyAKDQEgA0ECdCAFaigC3ANBF3ULIgtBAEwNAgwBC0ECIQsgAEQAAAAAAADgP2YNAEEAIQsMAQtBACECQQAhBCANRQRAA0AgBUHgA2ogAkECdGoiFSgCACENQf\u002F\u002F\u002FwchEQJ\u002FAkAgBA0AQYCAgAghESANDQBBAAwBCyAVIBEgDWs2AgBBAQshBCACQQFqIgIgA0cNAAsLAkAgFA0AQf\u002F\u002F\u002FwMhAgJAAkAgEw4CAQACC0H\u002F\u002F\u002F8BIQILIANBAnQgBWoiDSANKALcAyACcTYC3AMLIAdBAWohByALQQJHDQBEAAAAAAAA8D8gAKEhAEECIQsgBEUNACAARAAAAAAAAPA\u002FIAoQ1QGhIQALIABEAAAAAAAAAABhBEBBACEEIAMhAgJAIAMgCUwNAANAIAVB4ANqIAJBAWsiAkECdGooAgAgBHIhBCACIAlKDQALIARFDQAgCiEGA0AgBkEYayEGIAVB4ANqIANBAWsiA0ECdGooAgBFDQALDAMLQQEhAgNAIAIiBEEBaiECIAVB4ANqIAkgBGtBAnRqKAIARQ0ACyADIARqIQQDQCAFQcACaiADIAxqIgdBA3RqIANBAWoiAyAQakECdEHQpgRqKAIAtzkDAEEAIQJEAAAAAAAAAAAhACAMQQBKBEADQCAOIAJBA3RqKwMAIAVBwAJqIAcgAmtBA3RqKwMAoiAAoCEAIAJBAWoiAiAMRw0ACwsgBSADQQN0aiAAOQMAIAMgBEgNAAsgBCEDDAELCwJAIABBGCAGaxDVASIARAAAAAAAAHBBZgRAIAVB4ANqIANBAnRqAn8CfyAARAAAAAAAAHA+oiIbmUQAAAAAAADgQWMEQCAbqgwBC0GAgICAeAsiArdEAAAAAAAAcMGiIACgIgCZRAAAAAAAAOBBYwRAIACqDAELQYCAgIB4CzYCACADQQFqIQMMAQsCfyAAmUQAAAAAAADgQWMEQCAAqgwBC0GAgICAeAshAiAKIQYLIAVB4ANqIANBAnRqIAI2AgALRAAAAAAAAPA\u002FIAYQ1QEhAAJAIANBAEgNACADIQIDQCAFIAIiBEEDdGogACAFQeADaiACQQJ0aigCALeiOQMAIAJBAWshAiAARAAAAAAAAHA+oiEAIAQNAAsgA0EASA0AIAMhBANARAAAAAAAAAAAIQBBACECIAkgAyAEayIGIAYgCUobIgpBAE4EQANAIAJBA3RBoLwEaisDACAFIAIgBGpBA3RqKwMAoiAAoCEAIAIgCkchGCACQQFqIQIgGA0ACwsgBUGgAWogBkEDdGogADkDACAEQQBKIRkgBEEBayEEIBkNAAsLRAAAAAAAAAAAIQAgA0EATgRAIAMhAgNAIAIiBEEBayECIAAgBUGgAWogBEEDdGorAwCgIQAgBA0ACwsgCCAAmiAAIAsbOQMAIAUrA6ABIAChIQBBASECIANBAEoEQANAIAAgBUGgAWogAkEDdGorAwCgIQAgAiADRyEaIAJBAWohAiAaDQALCyAIIACaIAAgCxs5AwggBUGwBGokACAHQQdxIQMgCCsDACEAIB9CAFMEQCABIACaOQMAIAEgCCsDCJo5AwhBACADayEDDAELIAEgADkDACABIAgrAwg5AwgLIAhBMGokACADC\u002F4DAwN8A38BfiAAvSIHQiCIp0H\u002F\u002F\u002F\u002F\u002FB3EiBEGAgMCgBE8EQCAARBgtRFT7Ifk\u002FIACmIAC9Qv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGw8LAkACfyAEQf\u002F\u002F7\u002F4DTQRAQX8gBEGAgIDyA08NARoMAgsgAJkhACAEQf\u002F\u002Fy\u002F8DTQRAIARB\u002F\u002F+X\u002FwNNBEAgACAAoEQAAAAAAADwv6AgAEQAAAAAAAAAQKCjIQBBAAwCCyAARAAAAAAAAPC\u002FoCAARAAAAAAAAPA\u002FoKMhAEEBDAELIARB\u002F\u002F+NgARNBEAgAEQAAAAAAAD4v6AgAEQAAAAAAAD4P6JEAAAAAAAA8D+goyEAQQIMAQtEAAAAAAAA8L8gAKMhAEEDCyEGIAAgAKIiAiACoiIBIAEgASABIAFEL2xqLES0or+iRJr93lIt3q2\u002FoKJEbZp0r\u002FKws7+gokRxFiP+xnG8v6CiRMTrmJmZmcm\u002FoKIhAyACIAEgASABIAEgAUQR2iLjOq2QP6JE6w12JEt7qT+gokRRPdCgZg2xP6CiRG4gTMXNRbc\u002FoKJE\u002F4MAkiRJwj+gokQNVVVVVVXVP6CiIQEgBEH\u002F\u002F+\u002F+A00EQCAAIAAgAyABoKKhDwsgBkEDdCIEQcClBGorAwAgACADIAGgoiAEQeClBGorAwChIAChoSIAmiAAIAdCAFMbIQALIAALaQEEfyABED0hAwNAAkAgAC0AAEUEQEF\u002FIQIMAQsDQAJ\u002FIABBLBCfAyIERQRAIAAQPQwBCyAEIABrCyIFIANGBEAgACABIAMQaEUNAgsgACAFakEBaiEAIAQNAAsgAkEBaiECDAELCyACCxEAIABBoJQCQfCcAkEjEKUDC1sAIAAgASACIAMgBBDsAyIDRQRAQoCAgIDgAA8LQoCAgIDgACECIAAgA0EoahC3AiIBQoCAgIBwg0KAgICA4ABSBEAgACADEKwFIAEhAgsgACgCECADEM4BIAILkwUBBH8gBEEIdEGAHnEiByADQdDfAmotAAAiBnIhAyAEQQ92IQUCfwJAAkACQAJAAkACQAJAAkACQAJAAkACQCAEQQR2IghBD3EiBA4NAAAAAAECAwQFBgYIBwkLIAJBAkcgBEECSXIgAiAIQQFxR3ENCiABIAVrIANBAnRBoIACaigCAEEPdmohAQwKCyABIAVrIgNBAXEgAkEAR0YNCSADQQFzIAVqIQEMCQsgASAFayIDQQFGBEBBAUF\u002FIAIbIAFqIQEMCQsgAyACRUEBdEcNCEECQX4gAhsgAWohAQwICyABIAVrIQEgAg0GIABBmQc2AgQgACABIANBBXZB\u002FgBxQdDiAmovAQBqNgIAQQIPCyACQQFGDQYgAyACQQJGQQV0aiEBDAYLIAJBAUYNBSADQQF0QdDiAmovAQAgAkECRmohAQwFCyAEQQlrIAJBAEdHDQQgA0EBdEHQ4gJqLwEAIQEMBAsgAkUNAyAAIAZBP3FBAXRB0OICai8BADYCBCAAIANBBXZB\u002FgBxQdDiAmovAQAgASAFa2o2AgBBAg8LIAJBAUYNAiAAIAZBP3FBAXRB0OICai8BACIGNgIEIAAgA0EFdkH+AHFB0OICai8BACABIAVraiIBNgIAQQIgAkECRw0DGiAAIAEQ0wI2AgAgACAGENMCNgIEQQIPCyACQQFGDQEgACAHQQd2QdDiAmovAQAiATYCACAAIAZBD3FBAXRB0OICai8BACIDNgIIIAAgBkEDdkEecUHQ4gJqLwEAIgU2AgRBAyACQQJHDQIaIAAgARDTAjYCACAAIAUQ0wI2AgQgACADENMCNgIIQQMPCyABIAZBP3FBAXRB0OICai8BAGohAQsgACABNgIAQQELCxcAIAAgAUH\u002FAXEQDiAAIAJB\u002F\u002F8DcRAmC64ZARJ\u002FIwBBkAFrIggkACAIIAIoAgAiBDYCDAJAAkACQAJAAkACQAJAAkACQAJAIAQtAAAiCQRAIAlB3ABHDQUgBEEBaiIGIAAoAhxPDQEgCCAEQQJqIgU2AgwCQAJAAkACQAJAAkACQAJAAkACQAJAAkAgBC0AASIJQdMAaw4FBAEBAQYACwJAIAlB4wBrDgIIBwALAkAgCUHzAGsOBQMBAQEFAAsgCUHEAEYNASAJQdAARiAJQfAARnINCAsgACgCKCEBDA4LQQEhBwwEC0ECIQcMAwtBAyEHDAILQQQhBwwBC0EFIQcLIAdBAXRBDHFBwP8BaigCACIFLwEAIRQgASAAKAJAENICIAdBAXEhBiAFQQJqIQUgFEEBdCEDQQAhCQNAIAMgCUcEQCAFIAlBAXRqLwEAIQAgASgCACIEIAEoAgROBEAgASAEQQFqENECDQUgASgCACEECyABIARBAWo2AgAgASgCCCAEQQJ0aiAANgIAIAlBAWohCQwBCwtBgICAgAQhCSAGRQ0LIAEQlAINAgwLCwJAIAUtAAAiBUHfAXFBwQBrQf8BcUEaTwRAIAAoAighASADRSAFQd8ARiAFQTBrQf8BcUEKSXJFcg0BIAENDQsgCCAEQQNqNgIMIAVBH3EhCQwLCyABDQsgCCAGNgIMQdwAIQkMCgsgACgCKEUEQEEAIQEMBwsgBS0AAEH7AEcNBCAIQdAAaiEEAkACQANAAkAgBUEBaiEDIAUtAAEiBxCnA0UNACAEIAhB0ABqa0E+Sw0CIAQgBzoAACAEQQFqIQQgAyEFDAELCyAEQQA6AAAgCEEQaiEEAkAgB0E9Rw0AIAVBAmohAwNAIAMtAAAiBxCnA0UNASAEIAhBEGprQT9PBEAgAEGizwBBABA\u002FDBAFIAQgBzoAACAEQQFqIQQgA0EBaiEDDAELAAsACyAEQQA6AAAgB0H9AEcEQCAAQcGMAUEAED8MDgtBACEEAkACQCAIQdAAaiIFQdsWQQcQaEUNACAFQfHrAEEDEGhFDQBBASEEIAVBwyVBEhBoRQ0AIAgoAlBB88bhA0cNAQsgASAAKAJAENICQQAhBiMAQTBrIgskAAJ\u002FQX5BwKMCIAhBEGoQnQQiDkEASA0AGiABIQwgBARAIAEoAhAhByALIAEoAgwiBTYCKCALQQA2AiQgC0IANwIcIAsgBTYCFCALQQA2AhAgC0IANwIIIAsgB0GbAyAHGyIFNgIsIAsgBTYCGCALQRxqIQwLIA5BAWohEQJAAkADQCAGQZ8VTARAIAohByAGQZC2AmotAAAiCsAhFQJ\u002FIAZBAWoiBSAKQf8AcSIKQeAASQ0AGiAFQZC2AmotAAAhBSAKQe8ATQRAIApBCHQgBXJBoL8BayEKIAZBAmoMAQsgBkGStgJqLQAAIApBEHRyIAVBCHRyQaDfvwNrIQogBkEDagshBSAVQQBOBEAgByAKakEBaiEKIAUhBgwCCyAFQQFqIQYgByAKakEBaiEKIBEgBUGQtgJqLQAARw0BIAwgByAKEGlFDQEMAgsLQQAiByAERQ0CGiAOQTdGIRIgDkEYRyETQQAhBgNAIAZBuwZMBEAgByEFIAZBsMsCaiwAACINQf8BcSEKAn8gBkEBaiIHIA1BAE4NABogB0GwywJqLQAAIQcgDUG\u002Ff00EQCAKQQh0IAdyQYD\u002FAWshCiAGQQJqDAELIAZBsssCai0AACAKQRB0ciAHQQh0ckGA\u002F\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\u002FDAcLIABB4TdBABA\u002FDAYLIAAQ1QIMBQsgCCAGNgIMIAhBDGogAUEBdBCXAiIDQQBOBEAgAyEJDAMLAkAgA0F+Rw0AIAgoAgwiBC0AACIDRQ0AQdeHASADQRAQkgIgAUVyDQEMBAsgAQ0DIAgoAgwhBAsgCcBBAE4NACAEQQYgCEEMahBRIglBgIAESQ0BIAAoAigNASAAQcM1QQAQPwwDCyAIIARBAWo2AgwLIAIgCCgCDDYCAAwCCyAAQeU8QQAQPwtBfyEJCyAIQZABaiQAIAkLHwEBfyAAKAI8IgFBAEgEfyAAEKAGGiAAKAI8BSABCwu7AwEFfyMAQRBrIgMkACADIAEoAgAiBTYCDCAAIQQCfwNAAkACQAJAAkACQAJAIAUtAAAiAkHcAEcEQCACQT5HDQEgACAERg0GIARBADoAACABIAMoAgxBAWo2AgBBAAwICyADIAVBAWo2AgwgBS0AAUH1AEYNAQwFCyACwEEATg0CIAVBBiADQQxqEFEiAkGAeHFBgLADRw0BIAMoAgxBBiADQQhqEFEiBUGAeHFBgLgDRw0DIAMgAygCCDYCDCACQQp0IAVqQYC4\u002FxprIQIMAwsgA0EMakECEJcCIQILIAJB\u002F\u002F\u002FDAEsNAgwBCyADIAVBAWo2AgwLAkAgACAERgRAAn8gAkH\u002FAE0EQCACQQN2Qfz\u002F\u002F\u002F8BcUGg\u002FwFqKAIAIAJ2QQFxDAELIAIQngQLRQ0CDAELAn8gAkH\u002FAE0EQCACQQN2Qfz\u002F\u002F\u002F8BcUGw\u002FwFqKAIAIAJ2QQFxDAELIAJBfnFBjMAARiACEJYGQQBHcgtFDQELIAQgAGtB+QBKDQACfyACQf8ATQRAIAQgAjoAACAEQQFqDAELIAQgAhDdAiAEagshBCADKAIMIQUMAQsLQX8LIQYgA0EQaiQAIAYLMQEBf0EBIQECQAJAAkAgAEEKaw4EAgEBAgALIABBqMAARg0BCyAAQanAAEYhAQsgAQuoAgEDfwJAAkAgACgCMCIJQQFqIgogACgCLCIITQRAIAAoAighCAwBCyAAKAIgIAAoAihBCCAIQQNsQQF2IgggCEEITRsiCSAAKAIkbBD3AyIIRQRAQX8hCAwCCyAAIAg2AiggACAJNgIsIAAoAjAiCUEBaiEKCyAAIAo2AjAgCCAAKAIkIAlsaiIIIAc2AgQgCCAGOgAAIAggBDYCDCAIIAU2AgggCCADOgABIAhBEGohBCAAKAIMQQF0IQVBACEAA0AgACAFRkUEQCAEIABBAnQiBmogASAGaigCADYCACAAQQFqIQAMAQsLIAQgBUECdGohAUEAIQhBACEAA0AgACADRg0BIAEgAEECdCIEaiACIARqKAIANgIAIABBAWohAAwACwALIAgLDQAgAEEGQX9BBRDxBQvLBQIIfwN+IwBBMGsiCCQAAn8CQAJAAkACQAJAIAMOAwABAgMLQf2DAUHY7ABByxpBkOwAEAAACyABIAIoAhAgAigCDCIAIABBBXQgAigCCGsQcTYCAAwCCyACKAIQIgMgAigCDCIAIABBBXQgAigCCGsiAkEgahBxrUIghiADIAAgAhBxrYQhECAGQYCU69wDRgRAIAEgEEKAlOvcA4AiET4CBCABIBAgEUKAlOvcA359PgIADAILIAEgECAGrSIRgCISPgIEIAEgECARIBJ+fT4CAAwBCyACKAIAIQogCEIANwIoIAhCgICAgICAgICAfzcCICAIIAo2AhwgCEIANwIUIAhCgICAgICAgICAfzcCDCAIIAo2AgggAyAFQQF0IARBAWoiC3ZBAWpBAXYiCmshDCAAIARBAXRBAXJBFGxqIQ1BACEDIAAgBEEobGoiBCgCDEUEQCAEIAYgCkH\u002F\u002F\u002F\u002F\u002FA0EBENcCIAhBCGoiCUIBEDJyIA0gCSAEIApBAWogB2xBAmpBABCIAXIhCQsCQAJAIAhBHGoiDiACIA0gByAMbEEAEEAgCXIgDkEBEO8BciAIQQhqIgkgDiAEQf\u002F\u002F\u002F\u002F8DQQEQQHIgCSACIAlB\u002F\u002F\u002F\u002F\u002FwNBARDuAXJBIHENAANAAkAgCCgCDEUNACAIKAIURQ0AIAhBCGoiAiACIARB\u002F\u002F\u002F\u002F\u002FwNBARC4AQ0CIANBAWshAwwBCwsDQCAIQQhqIgIgBBDyAUEATgRAIAIgAiAEQf\u002F\u002F\u002F\u002F8DQQEQ7gENAiADQQFqIQMMAQsLIAMEQCAIQRxqIgIgAiADrEH\u002F\u002F\u002F\u002F\u002FA0EBEHoNAQsgACABIApBAnRqIAhBHGogDCALIAUgBiAHEKgEDQAgACABIAhBCGogCiALIAUgBiAHEKgERQ0BCyAIQRxqEBkgCEEIahAZQX8MAgsgCEEcahAZIAhBCGoQGQtBAAshDyAIQTBqJAAgDwsWAEH81QRB\u002FNQENgIAQbTVBEEqNgIAC4gBAQR\u002FAkACfwJAIANBB3EiCEEGRwRAQSAhBwNAIAAgASACIAdqIgkgBSAEEQcAIgZBLHENBCAGQRBxRQ0CIAdBAXQhByAAIAIgCCAJELYDRQ0AC0EQDAILIAAgASACIAUgBBEHABoLQQALIQYgACgCDCIBRQ0AIAAgAiADIAEgBhDcAiEGCyAGC48BAQN\u002FIwBBMGsiAiQAIAAoAgAhAyACQgA3AiggAkKAgICAgICAgIB\u002FNwIgIAIgAzYCHCACQgA3AhQgAkKAgICAgICAgIB\u002FNwIMIAIgAzYCCCAAIAJBHGoiBCACQQhqIgNBACABQQ9qQQNuQQFqQQAQqwMgACAAIAMgAUEAEIgBGiAEEBkgAxAZIAJBMGokAAsPACAAIAEgAkEAQQMQ9AELvQECBH8BfiAAIABBH3UiA3MgA2shAyAAQR92RSEFQQACfyABIAFBAWsiBHFFBEBBICAEZyIGayEEIAIEQEEfIAZrQQAgBRsgA2ogBG4MAgsgBEEAIAFBAk8bIANsDAELIAFBAmshASAFAn4gAgRAIAOtIgcgAUEDdCIBQZT4AWo1AgB+QiCIIAFBkPgBajUCACAHfnxCH4gMAQsgAUECdEGw+gFqNQIAIAOtfkIdiAunagsiAWsgASAAQQBIGwtAAQN\u002FQQEgAEG+\u002FgFqLQAAIgEgAUEBTRshA0EBIQIgACEBA0AgAiADRkUEQCACQQFqIQIgACABbCEBDAELCyABC1ABAn8DQCABLAAAIgQEQCAEIAAsAAAiA0EgciADIANBwQBrQRpJG0cEQEEADwUgAUEBaiEBIABBAWohAAwCCwALCyACBEAgAiAANgIAC0EBC4cDAgN+BH8CQCABKAIIIgZB\u002Fv\u002F\u002F\u002FwdOBEBBASEHIAJBAXENAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8AIQMgBkH+\u002F\u002F\u002F\u002FB0cNASABNAIEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwB8IQMMAQsgBkEATARADAELIAZBP00EQCABKAIQIAEoAgwiCEECdGoiCUEEaygCACECQgAgBkEgTQR+IAJBICAGa3atBSAIQQJPBH4gCUEIazUCAAVCAAsgAq1CIIaEQcAAIAZrrYgLIgN9IAMgASgCBBshAwwBCyACQQFxRQRAIAEoAgRFBEBC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FACEDQQEhBwwCC0KAgICAgICAgIB\u002FIQNBASEHIAZBwABHDQEgASgCECABKAIMIgFBAnRqIgJBBGs1AgBCIIYhBCABQQJPBH4gAkEIazUCAAVCAAsgBIRCgICAgICAgICAf1IhBwwBC0IAIAEoAhAiCCABKAIMIgIgAkEFdCAGayIGEHGtIAggAiAGQSBqEHGtQiCGhCIDfSADIAEoAgQbIQMLIAAgAzcDACAHC60CAgJ\u002FAn4jAEEgayICJAACQCAAKAIIQf\u002F\u002F\u002F\u002F8HRgRAQoCAgICAgID8\u002FwAhBAwBCyAAKAIAIQMgAkIANwIYIAJCgICAgICAgICAfzcCECACIAM2AgwgAkEMaiIDIAAQSRoCfiACKAIUIgBB\u002Ff\u002F\u002F\u002FwdMBEAgA0E1QcgEELoBGiACKAIUIQALQoCAgICAgID4\u002FwAgAEH+\u002F\u002F\u002F\u002FB0YNABpCACAAQYCAgIB4Rg0AGiACKAIcIQMCfiACKAIYQQJGBEAgAykCAAwBCyADNQIAQiCGCyEEIABBgnhMBEAgBEGOeCAAa62IIQRCAAwBCyAEQguIQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8HgyEEIABB\u002FgdqrUI0hgshBSAEIAWEIAI1AhBCP4aEIQQgAkEMahAZCyABIAQ3AwAgAkEgaiQACw0AIAAgASACQQIQsAMLIwACQAJAAkAgAg4CAAECCyAAIAFyDwsgACABcw8LIAAgAXEL4QgBEX8gAigCBCAFcyIFIAEoAgQiBnMhDQJAIAEgAhDyASIIIA1Fcg0AIAEoAghB\u002Ff\u002F\u002F\u002FwdKDQAgACAEQQdxQQJGEIABQQAPCyAFIAYgCEEASCIGGyEFIAEgAiAGGyEKAkACQAJAIAIgASAGGyIIKAIMIgcEQCAKKAIMIgsNAQsgCCgCCCIBQf7\u002F\u002F\u002F8HTgRAIAFB\u002F\u002F\u002F\u002F\u002FwdGBEAgABAqQQAPCyANRSAKKAIIQf7\u002F\u002F\u002F8HR3JFBEAgABAqQQEPCyAAIAUQf0EADwsgACAIEEkaIAAgBTYCBAwBCyAAIAU2AgQgACAIKAIIIgI2AgggAiAKKAIIIgZrIQ4CQCANRQRAQQAhBQwBC0EBIQUgDkEBSg0AIAdBBXRBAWshASALIAdrQQV0IAJqIAZrQR9rIQkgCigCECEPQQAhBQNAQQAhAiABQQV1IgYgB0kEQCAIKAIQIAZBAnRqKAIAIQILIA8gCyABIAlqEHEiBiACRgRAIAFBIGshASAFQSBqIQUMAQsLIAIgBnMiEWciDEEBaiEQAkAgEUECSQRAIAUgEGohBQwBCyAFIAJBf0EfIAxrdEF\u002FcyIFcWciAiAFIAZBf3NxZyIFIAIgBUgbIgJqIQUgAiAQayAMc0EfRw0BCwNAIAUhBkEAIQIgAUEgayIBQQV1IgUgB0kEQCAIKAIQIAVBAnRqKAIAIQILIA8gCyABIAlqEHEhDCACRQRAIAZBIGohBSAMQX9GDQELCyACZyIBIAxBf3NnIgIgASACSBsgBmohBQsgACADIAVqQSFqQQV2IgIgByAOQR9qQSBtIAtqIgEgASAHSBsiASABIAJKGyIGEFANAUEAIAgoAgwiFCAGayIPayICQR91IAJxIRUgBiABayEBQQAgDWshDCAKKAIMIhBBBXQhEUEAIBAgBmsiEkEFdCAOamtBBXUhEyANIQJBACELA0AgAUEATgRAAkBBACEBA0AgASAGRg0BQQAhBSAAKAIQIAFBAnRqIAIgASAPaiIHIAgoAgxJBH8gCCgCECAHQQJ0aigCAAVBAAsgCigCECAKKAIMIAEgEmpBBXQgDmoQcSAMcyIFaiICaiIHNgIAIAIgBUkgAiAHS3IhAiABQQFqIQEMAAsACwUgASASakEFdCAOaiEHAkACfwJAIAEgD2oiCUEATiAJIBRJcUUEQCAHQWFIIhZFBEBBACEFIAcgEUgNAgsgCUEfdSAVcSIBIBMgASATSBsgASAWGyEBQQAhBUEAIQkMAwsgCCgCECAJQQJ0aigCACEFQQAgB0FhSCAHIBFOcg0BGgsgCigCECAQIAcQcQshCSABQQFqIQELIAkgDHMiByAFaiIFIAdJIAUgAiAFaiIFS3IhAiAFIAtyIQsMAQsLIAAoAhAiASABKAIAIAtBAEdyNgIAIA0gAkVyDQAgACAGQQFqEFANASAAKAIQIAZBAnRqQQE2AgAgACAAKAIIQSBqNgIICyAAIAMgBBCbAg8LIAAQKkEgC6QEAQl\u002FIAAgAUcEQAJAAkAgASgCDEUEQAJAAkACQCABKAIIQf7\u002F\u002F\u002F8Haw4CAQACCyAAECoPCyABKAIEDQILIAAgARBJGg8LIAEoAgRFDQELIAAQKg8LIAEoAgAhBAJAAkAgACACQQF0QcMAakEGdiIGEFANACAEKAIAQQAgBkEDdCIHIAQoAgQRAQAiBUUNAEEBIQogByAFQQAgBkEBdCIIIAggASgCDCIFIAUgCEobIgtrQQJ0ECwiBWogC0ECdCIHayABKAIQIAEoAgxBAnRqIAdrIAcQHhogAS0ACEEBcQRAIAUgBSAIQQAQtgRFIQoLIAAoAhAhCSMAQSBrIgckACAHIQgCQAJAIAZBEEkNACAEKAIAQQAgBkEBdEF8cUEEaiAEKAIEEQEAIggNAEF\u002FIQkMAQsgBCAJIAUgBiAIIAUgBkECdGoQtwQhCSAHIAhGDQAgBCgCACAIQQAgBCgCBBEBABoLIAdBIGokACAJRQ0BIAQoAgAgBUEAIAQoAgQRAQAaCyAAECoPCwJAAkAgCgRAIAUgBkEBahDaAiEMIAQoAgAgBUEAIAQoAgQRAQAaIAwNASABKAIQIAEoAgwgC2sQ2gINAQwCCyAEKAIAIAVBACAEKAIEEQEAGgsgACgCECIGIAYoAgBBAXI2AgALIABBADYCBCAAIAEoAghBAWpBAXU2AgggACACIAMQugEaDwtB6e0AQdjsAEHmEEGfFhAAAAs8AQF\u002FA0AgAkEATEUEQCAAIAJBAWsiAkECdCIEaiADQR90IAEgBGooAgAiA0EBdnI2AgAMAQsLIANBAXELmAQCC38CfiMAQRBrIggkAAJAAkAgA0EBRgRAIAIoAgAhACAIQQxqIAIoAgQQuAQhAyAAQf\u002F\u002FA3GtIABBEHatIAg1AgxCEIaEIhEgESADQQF0rSISgCIRIBJ+fUIQhoQhEiADQRB0IQ8gEaciA0GAgARPBH4gEkKAgICAEH0FIBIgESARfkL\u002F\u002F\u002F\u002F\u002FD4N9CyERIA8gA2ohBiARQgBTBEAgESAGQQFrIgatQgGGfEIBfCERCyABIAY2AgAgAiARPgIAIBFCIIinIQYMAQtBfyEGIAAgASADQQF2IgdBAnRqIgogAiADQX5xIg5BAnRqIgwgAyAHayILIAQgCEEIahC3BA0BIAgoAggiCQRAIAwgDCAKIAsQ8QEaCyAAIAQgAiAHQQJ0Ig1qIgAgAyAKIAsQswMNASAEIA1qKAIAIAlqIQlBACEGA0AgBiAHRkUEQCABIAZBAnQiDWogBCANaigCADYCACAGQQFqIQYMAQsLIAlBAXYhBiABIAEgByAJQQFxELYEBH8gACAAIAogCxC0AwVBAAshECAKIAYgCxDbAhogECAMIAlBAU0EfyACIANBAnRqIgQgASAHIAEgBxDwASACIAIgBCAOEPEBBSAGCyADQQFxEJkCayIGQQBODQAgAUEBIAMQmQIaIAIgASADQQIQvQQgBmogAkEBIAMQ2wJqIQYLIAUgBjYCAEEAIQYLIAhBEGokACAGC5gBAQJ\u002FIAAgAUH\u002FAXEgAUEIdkH\u002FAXEgAUEXdkH+A3FBwPoBai8BACIAQQF0IgJBf3NBACABQRB2IAAgAGxrIgEgAksiAhsgAWpBCHRyIgEgACACaiICQQF0IgNuIgAgAGxrIAEgACADbGtBCHRqIgFBH3UgAkEIdCAAaiIAQQFrIgJBAXRBAXJxIAFqNgIAIAIgACABQQBIGws5AQJ\u002FIwBBEGsiASQAIAAEfyABQQxqIAAgAGciAEEecXQQuAQgAEEBdnYFQQALIQIgAUEQaiQAIAILsgQBBn8jAEEwayIEJAACQAJAIAAgAkYgACADRnJFBEAgASACRiABIANGcg0BIAAgAUYNAgJAAkAgAigCDCIFBEAgAygCDCIGDQELQQAhBSAAQQAQgAECQCACKAIIIgBB\u002F\u002F\u002F\u002F\u002FwdHBEAgAygCCCIDQf\u002F\u002F\u002F\u002F8HRw0BCyABECoMAgsgAEH+\u002F\u002F\u002F\u002FB0cgA0GAgICAeEdxRQRAIAEQKkEBIQUMAgsgASACEEkaIAFB\u002F\u002F\u002F\u002F\u002FwNBARC6ASEFDAELIAIoAgQgAygCBHMhByAEIAIoAggiCDYCJCACKAIQIQkgBCAFNgIoIAQgCTYCLCAEQQA2AiAgBCADKAIIIgU2AhAgAygCECEDIAQgBjYCFCAEIAM2AhggBEEANgIMAkAgBEEcaiIDIARBCGoQ8gFBAEgEQCAAQgAQMhogASADEEkaDAELIAAgBEEcaiIDIARBCGoiBkEBIAggBWsiBSAFQQFMG0EBakEBEIgBGiAAQQEQ7wEaIAEgACAGQf\u002F\u002F\u002F\u002F8DQQEQQBogASADIAFB\u002F\u002F\u002F\u002F\u002FwNBARDuARoLAkAgACgCCEH\u002F\u002F\u002F\u002F\u002FB0YNACABKAIIQf\u002F\u002F\u002F\u002F8HRg0AAkAgASgCDEUNAAsgASABKAIEIAIoAgRzNgIEIAAgBzYCBCABQf\u002F\u002F\u002F\u002F8DQQEQugEhBQwBCyAAECogARAqQSAhBQsgBEEwaiQAIAUPC0HU7QBB2OwAQd8NQe\u002FAABAAAAtBw+0AQdjsAEHgDUHvwAAQAAALQaY2QdjsAEHhDUHvwAAQAAALVQEBfiAAIAOtIAStIAEgAkEfdSIAa61+IAAgA3EgAmqtfEIgiKcgAWoiAK1Cf4V+IAKtIAGtQiCGhHwiBUIgiKciASADcSAFp2o2AgAgACABakEBaguyBQEMfwJAAkACQAJAAkACQCADQQJNBEAgACgCAEEAIANBAXQiB0EBciIIQQJ0IAAoAgQRAQAhBiAAKAIAQQAgA0ECdEEIaiAAKAIEEQEAIgVFIAZFcg0CA0AgBCAHRkUEQCAGIARBAnRqQQA2AgAgBEEBaiEEDAELCyAGIAdBAnRqQQE2AgAgACAFIAYgCCACIAMQswMNAiADQQFqIQJBACEEA0AgAiAERkUEQCABIARBAnQiB2ogBSAHaigCADYCACAEQQFqIQQMAQsLIAYgAxDaAg0BIAFBASACEJkCGgwBCyAAKAIAQQAgAyADQQFrQQF2IgdrIgggA2oiBEEBaiIMQQJ0IAAoAgQRAQAiBUUgACgCAEEAIAhBDGxBCGogACgCBBEBACIGRXINASAAIAEgB0ECdCIJaiIKIAIgCWogCBC8BA0CIAhBAXQhDiAFIAIgAyAKIAhBAWoiCRDwASAFIANBAnRqIQsgBSAEQQJ0aiENA0AgDSgCAARAIApBASAJEJkCGiALIAUgBSACIAMQ8QEgCRCZAhoMAQsLIAxBACAMQQBKGyEDQQAhAkEAIQQDQCADIARGRQRAIAUgBEECdGoiC0EAIAsoAgAiC2siDyACazYCACALQQBHIAIgD0tyIQIgBEEBaiEEDAELCyANIA0oAgBBAWo2AgAgBiAFIAdBAnRqIAwgB2sgCiAJEPABIAYgDiAHa0ECdGohAkEAIQQDQCAEIAdGRQRAIAEgBEECdCIDaiACIANqKAIANgIAIARBAWohBAwBCwsgCiAKIAYgDkECdGogCBC0AxoLQQAhBCAAKAIAIAVBACAAKAIEEQEAGgwDCyAFRQ0BCyAAKAIAIAVBACAAKAIEEQEAGgtBfyEEIAZFDQELIAAoAgAgBkEAIAAoAgQRAQAaCyAEC1QCA38CfiADrSEHQQAhAwNAIAIgA0ZFBEAgACADQQJ0IgVqIgYgBjUCACAErSABIAVqNQIAIAd+fHwiCD4CACAIQiCIpyEEIANBAWohAwwBCwsgBAuDBgIDfwd+IwBBIGsiBSQAQoCAgIDgACENAkAgACABIARBImoQXiIBQoCAgIBwg0KAgICA4ABRDQBCgICAgDAhCgJAAkACQAJAIABBHBBcIgZFDQAgBiAEQQF2QQFxNgIAIAYgBkEEaiIHNgIIIAYgBzYCBCABQoCAgIBwWgRAIAGnIAY2AiALIAZBATYCFCAGIABBCBAkIgc2AhBCgICAgDAhC0KAgICAMCEIIAdFDQIgByAHNgIEIAcgBzYCACAGQQQ2AhggAkEATA0DIAMpAwAiCEKAgICAEIRCgICAgHCDQoCAgIAwUQ0DIAAgAUHpAEHDACAEQQFxIgIbIAFBABARIgpCgICAgHCDQoCAgIDgAFENACAAIAoQNQ0BIABB8DlBABASC0KAgICAMCELQoCAgIAwIQgMAQsgACAIQQAQywEiCEKAgICAcINCgICAgOAAUQRADAELAkAgACAIQesAIAhBABARIgtCgICAgHCDQoCAgIDgAFENAAJAA0AgBSAAIAggCyAFQRRqEJEBIgk3AxggCUKAgICAcINCgICAgOAAUQ0CIAUoAhRFBEACQCACBEAgACAKIAFBASAFQRhqEBwiDkKAgICAcINCgICAgOAAUg0BIAAgBSkDGBAMDAULAkACQCAJQv\u002F\u002F\u002F\u002F9vWARAIAAQIkKAgICAMCEJDAELIAAgCUIAEE4iCUKAgICAcINCgICAgOAAUg0BC0KAgICAMCEMDAQLIAAgBSkDGEIBEE4iDEKAgICAcINCgICAgOAAUQ0DIAUgDDcDCCAFIAk3AwAgACAKIAFBAiAFEBwiDkKAgICAcINCgICAgOAAUQ0DIAAgCRAMIAAgDBAMCyAAIA4QDCAAIAUpAxgQDAwBCwsgACAJEAwgACALEAwgACAIEAwgACAKEAwMAwsgACAFKQMYEAwgACAJEAwgACAMEAwLIAhCgICAgHBUDQAgACAIQQEQkAEaCyAAIAsQDCAAIAgQDCAAIAoQDCAAIAEQDAwBCyABIQ0LIAVBIGokACANC0sBAn8gACABRwRAIAAoAhAiAgRAIAAoAgAiAygCACACQQAgAygCBBEBABoLIAAgASkCADcCACAAIAEoAhA2AhAgACABKQIINwIICwv0AQIDfgF\u002FAkAgAykDACIEQoCAgIBwWgRAIAMpAwgiBUL\u002F\u002F\u002F\u002F\u002Fb1YNAQsgABAiQoCAgIDgAA8LQoCAgIDgACEGIABCgICAgCBBLBBHIgFCgICAgHCDQoCAgIDgAFIEfiAAQRgQJCICRQRAIAAgARAMQoCAgIDgAA8LIASnIgMgAygCAEEBajYCACACIAQ3AwAgBaciByAHKAIAQQFqNgIAIAIgBTcDCCAAIAQQNSEAIAJBADoAESACIAA6ABAgAUKAgICAcFoEQCABpyIAIAI2AiAgACAALQAFQe8BcSADLQAFQRBxcjoABQsgAQVCgICAgOAACwsbACAAEBkgAEIANwIQIABCADcCCCAAQgA3AgALCQAgASACEPgFCxMAIABBEGogASACIAAoAggRAQALqAECAX8CfiAAvSIEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoGAgICAgID4\u002FwBaBEAgAb1C\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgYCAgICAgPj\u002FAFQPC0F\u002FIQICQCAAIAFjDQAgAb0iA0L\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVg0AQQEhAiAAIAFkDQBBACECIABEAAAAAAAAAABiDQAgBEIAUwRAIANCP4enQX9zDwsgA0I\u002FiKchAgsgAgvKBQIFfwN+IwBBMGsiAiQAIAIgATcDECACQQA2AgwgAiAANgIIIAIgAykDACIKNwMYAkACQCAKQoCAgIBwgyILQoCAgIAwUgRAQoCAgIDgACEJIAAgChBVDQELQoCAgIDgACEJIAAgARCKASIFQQBIDQACQCAFQQJJDQAgAaciAy8BBkEVayIEQf\u002F\u002FA3FBC08NAiACIARBAnRB\u002FP8PcSIEQZz1AWooAgA2AiBBASADLwEGQcqeAWotAAAiBnQhCCADKAIkIQcgC0KAgICAMFIEQCAAIAVBAnQQJCIERQ0CQQAhAwNAIAMgBUZFBEAgBCADQQJ0aiADNgIAIANBAWohAwwBCwsgAiAINgIoIAIgBzYCJCAEIAVBBEHLACACQQhqENcBAkACQAJAAkAgAigCDA4CAAEDCyAAIAUgBnQiAxAkIgYNAQsgACgCECIAQRBqIAQgACgCBBEAAAwECyAGIAcgAxAeIQZBACEDAkACQAJAAkACQCAIQQFrDggAAQkCCQkJAwkLA0AgAyAFRg0EIAMgB2ogBiAEIANBAnRqKAIAai0AADoAACADQQFqIQMMAAsACwNAIAMgBUYNAyAHIANBAXRqIAYgBCADQQJ0aigCAEEBdGovAQA7AQAgA0EBaiEDDAALAAsDQCADIAVGDQIgByADQQJ0IghqIAYgBCAIaigCAEECdGooAgA2AgAgA0EBaiEDDAALAAsDQCADIAVGDQEgByADQQN0aiAGIAQgA0ECdGooAgBBA3RqKQMANwMAIANBAWohAwwACwALIAAoAhAiA0EQaiAGIAMoAgQRAAALIAAoAhAiAEEQaiAEIAAoAgQRAAAMAQsgByAFIAggBEHI9QFqKAIAIAJBCGoQ1wEgAigCDA0BCyABQiCIp0F1TwRAIAGnIgAgACgCAEEBajYCAAsgASEJCyACQTBqJAAgCQ8LEAEAC+cCAQF+IAAgARCKASICQQBIBEBCgICAgOAADwsCQCACRQ0AAkACQAJAAkACQCABpyIALwEGQcqeAWotAAAOBAABAgMECyAAKAIkIgAgAmohAgNAIAAgAkEBayICTw0FIAAtAAAhAyAAIAItAAA6AAAgAiADOgAAIABBAWohAAwACwALIAAoAiQiACACQQF0aiECA0AgACACQQJrIgJPDQQgAC8BACEDIAAgAi8BADsBACACIAM7AQAgAEECaiEADAALAAsgACgCJCIAIAJBAnRqIQIDQCAAIAJBBGsiAk8NAyAAKAIAIQMgACACKAIANgIAIAIgAzYCACAAQQRqIQAMAAsACyAAKAIkIgAgAkEDdGohAgNAIAAgAkEIayICTw0CIAApAwAhBCAAIAIpAwA3AwAgAiAENwMAIABBCGohAAwACwALEAEACyABQiCIp0F1TwRAIAGnIgAgACgCAEEBajYCAAsgAQtRAgF\u002FAX5CgICAgOAAIQQgACABIAIQayIDBH4gAygCICIDKAIMKAIgLQAEBEAgAkUEQEIADwsgABBfQoCAgIDgAA8LIAM1AhAFQoCAgIDgAAsLNwAgACABIAIQayIARQRAQoCAgIDgAA8LIAAoAiAoAgwiACAAKAIAQQFqNgIAIACtQoCAgIBwhAsMACAAKAIQIAEQ5wML2gEBAn4CQAJAIAJFBEAgAUKAgICAcIMhBSAAQS8QKSEEDAELAn4gAUKAgICAcIMiBUKAgICAMFIgAykDACIEQoCAgIBwg0KAgICAgH9SckUEQCAAQbmMASAAIAAoAhAgBKcQxgIQKUGrjAEQsgEMAQsgACAEECULIgRCgICAgHCDQoCAgIDgAFENAQsgBUKAgICAMFENACAAIAFBBRBeIgFCgICAgHCDQoCAgIDgAFIEQCAAIAEgBBC9ASAAIAFBMCAEpykCBEL\u002F\u002F\u002F\u002F\u002FB4NBABAVGgsgASEECyAEC0YBAX8CQCAAKAIIIAJqIgMgACgCDEoEQCAAIAMgARDEAg0BCwNAIAJBAEwEQEEADwsgAkEBayECIAAgARCHAUUNAAsLQX8LlQECBX8BfiABKQIEIginQf\u002F\u002F\u002F\u002F8HcSIDRQRAIAIPCyAAKAIEQf\u002F\u002F\u002F\u002F8HcSEHAn8gCEKAgICACINQRQRAIAEvARAMAQsgAS0AEAshBSADQQFrIQYgByADayEEAkADQCACIARKDQEgACAFIAIQoAEiA0EASCADIARKcg0BIAAgASADQQFqIgJBASAGELwDDQALIAMPC0F\u002FC6cBAgN\u002FAX4CQAJAIAAgARD2AyIDQQBIDQAgA0UNAUGbHiECIAAgACABQe4AIAFBABARIgVCgICAgHCDIgFCgICAgCBRIAFCgICAgDBRcgR\u002FQZseBSABQoCAgIDgAFENASAAIAUQNCIBQoCAgIBwg0KAgICA4ABRDQFBACECIAGnQecAQQAQoAEhBCAAIAEQDCAEQQBODQJB2ssAC0EAEBILQX8hAgsgAguhAQIDfwF+AkACQCAAKQIEIgRCgICAgAiDUA0AIABBEGohAiAEp0H\u002F\u002F\u002F\u002F\u002FB3EhA0EAIQADQCAAIANODQECQCACIABBAXRqLwEAIgFBgPADcUGAsANHBEAgACEBDAELIAFB\u002F7cDSw0DIABBAWoiASADTg0DIAIgAUEBdGovAQBBgEBrQf\u002F\u002FA3FBgPgDSQ0DCyABQQFqIQAMAAsAC0F\u002FIQALIAALVQEBfwJAAkACQCABQiCIp0EBag4DAAECAQsgAaciAi8BBkEGRw0AIAIpAyAiAUKAgICAcINCgICAgBBRDQELIABBlMAAQQAQEkKAgICA4AAhAQsgAQsQAEHOkQEgAEELEJICQQBHC4kBAgN\u002FAX5BwZEBIQMCQAJAIAEpAgQiBqdB\u002F\u002F\u002F\u002F\u002FwdxIgUgAkwNACABQRBqIQQCfyAGQoCAgIAIg1BFBEAgBCACQQF0ai8BAAwBCyACIARqLQAAC0ElRw0AQcMbIQMgAkECaiAFTg0AIAEgAkEBakECEL0DIgJBAE4NAQsgACADEL4DQX8hAgsgAgtWAQF+IwBBEGsiAiQAIAAgAkEIaiADKQMAEEIEfkKAgICA4AAFIAIpAwhCgICAgICAgPj\u002FAINCgICAgICAgPj\u002FAFKtQoCAgIAQhAshBCACQRBqJAAgBAtWAQF+IwBBEGsiAiQAIAAgAkEIaiADKQMAEEIEfkKAgICA4AAFIAIpAwhC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFatQoCAgIAQhAshBCACQRBqJAAgBAvBAwIDfwR+IwBBMGsiCCQAIANCACADQgBVGyENIAVBAWshCiAGQoCAgIBwgyEOIAVBAEwhBUIAIQMDQAJAIAMgDVEEQCAEIQwMAQtCfyEMIAAgAiADIAhBKGoQVCIJQQBIDQACQCAJRQ0AIA5CgICAgDBSBEAgCCAIKQMoNwMAIAMhCyAIIAI3AxAgCCADQoCAgIAIWgR+QoCAgIDAfiADub0iC0KAgICAwIGA\u002FP8AfSALQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwUgCws3AwggCCAAIAYgB0EDIAgQHCILNwMoIAAgCCkDABAMIAAgCCkDCBAMIAtCgICAgHCDQoCAgIDgAFENAgsCQAJAAkAgBQ0AIAAgCCkDKCILEMwBIglBAEgNASAJRQ0AIAAgCEEgaiALEC9BAEgNASAAIAEgCyAIKQMgIAQgCkKAgICAMEKAgICAMBDUBCIEQgBTDQEgACALEAwMAwsgBEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FD1MNASAAQdXIAEEAEBIgCCkDKCELCyAAIAsQDAwCCyAAIAEgBCAIKQMoEGdBAEgNASAEQgF8IQQLIANCAXwhAwwBCwsgCEEwaiQAIAwLtQUCBH4GfyMAQTBrIggkACAIQgA3AhwgCCAANgIYIAggAykDACIENwMoQoCAgIAwIQYCQAJAAn8gBEKAgICAcINCgICAgDBSBEBBACECQQAgACAEEFUNARogCEEBNgIgC0EAIQICQCAAIAhBEGogACABECAiBhAvBEAMAQtCACEEA0AgCCkDECAFVQRAIAkgCk8EQCAAIAIgCiAKQQF2akEfakFwcSIKQRhsIAhBDGoQpwEiA0UNAyAIKAIMQRhuIApqIQogAyECC0EAIAAgBiAFIAIgCUEYbGoiCxBUIgNBAEgNAxoCQCADRQ0AIAs1AgRCIIZCgICAgDBRBEAgBEIBfCEEDAELIAsgBTcDECALQQA2AgggCUEBaiEJCyAFQgF8IQUMAQsLIAIgCUEYQcoAIAhBGGoQ1wFBACAIKAIcDQEaIAQgBEI\u002Fh0J\u002FhYMhBCAJrSEBQgAhBQNAAkAgASAFUgRAIAIgBaciCkEYbGoiAygCCCILBEAgACALrUKAgICAkH+EEAwLIAMpAwAhByAFIAMpAxBRBEAgACAHEAwMAgsgACAGIAUgBxB7QQBODQEgCkEBagwECyAAKAIQIgNBEGogAiADKAIEEQAAA0AgASAEUQRAIAgpAxAhAQNAIAEgBFcNCCAAIAYgBBCFAiEMIARCAXwhBCAMQQBODQALDAYLIAAgBiABQoCAgIAwEHshDSABQgF8IQEgDUEATg0ACwwECyAEQgF8IQQgBUIBfCEFDAALAAtBAAshAyAJIAMgAyAJSRshCQNAIAMgCUcEQCAAIAIgA0EYbGoiCikDABAMIAooAggiCgRAIAAgCq1CgICAgJB\u002FhBAMCyADQQFqIQMMAQsLIAAoAhAiA0EQaiACIAMoAgQRAAALIAAgBhAMQoCAgIDgACEGCyAIQTBqJAAgBgswACABQoCAgIAQhEKAgICAcINCgICAgDBRBEAgACABEDQPCyAAIAFBOUEAQQAQpwILmQIBAX4CQAJAAkAgAUKAgICAcIMiBEKAgICAMFIEQCAEQoCAgIAgUg0BIABBxMIAEGAhBAwCCyAAQYvpABBgIQQMAQsgACABECAiAUKAgICAcINCgICAgOAAUQ0BIAAgARDMASIDQQBIBEAgACABEAxCgICAgOAADwsCf0GTASADDQAaQZ0BIAAgARA1DQAaQZIBIAGnLwEGIgNBEktBASADdEH4jhBxRXINABogACgCECgCRCADQRhsaigCBAshAiAAIAFB0gEgAUEAEBEhBCAAIAEQDCAEQoCAgIBwgyIBQoCAgICQf1ENACABQoCAgIDgAFENASAAIAQQDCAAIAIQKSEECyAAQeeRASAEQa3wABCyASEBCyABC48EAQJ+IwBBIGsiAiQAIAMpAwAhBQJAAkACQCAEBEAgBUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECIMAwsgBaciBCAEKAIAQQFqNgIADAELIAAgBRAgIgUhASAFQoCAgIBwg0KAgICA4ABRDQILAkAgACADKQMIEDAiA0UNAEKAgICAMCEBAkACQCAFQoCAgIBwVA0AIAAgAiAFpyADEEMiBEEASA0CIARFDQAgABAzIgFCgICAgHCDQoCAgIDgAFENAQJAIAItAABBEHEEQCACKQMQIgZCIIinQXVPBEAgBqciBCAEKAIAQQFqNgIACyAAIAFBwgAgBkGHgAEQFUEASA0DIAIpAxgiBkIgiKdBdU8EQCAGpyIEIAQoAgBBAWo2AgALIAAgAUHDACAGQYeAARAVQQBODQEMAwsgAikDCCIGQiCIp0F1TwRAIAanIgQgBCgCAEEBajYCAAsgACABQcEAIAZBh4ABEBVBAEgNAiAAIAFBPyACNQIAQgGIQgGDQoCAgIAQhEGHgAEQFUEASA0CCyAAIAFBwAAgAjUCAEICiEIBg0KAgICAEIRBh4ABEBVBAEgNASAAIAFBPiACNQIAQgGDQoCAgIAQhEGHgAEQFUEASA0BIAAgAhBGCyAAIAMQECAAIAUQDAwDCyAAIAIQRiAAIAEQDAsgACADEBAgACAFEAwLQoCAgIDgACEBCyACQSBqJAAgAQtVAQF\u002FIwBBIGsiBSQAAkAgACAFIAMQhAVBAEgEQEF\u002FIQQMAQsgACABIAIgBSkDCCAFKQMQIAUpAxggBSgCACAEchBqIQQgACAFEEYLIAVBIGokACAEC4MCAgZ\u002FAX4jAEEQayIEJAACQCABQv\u002F\u002F\u002F\u002F9vWARAIAAQIkF\u002FIQMMAQtBfyEDIAAgAhAgIglCgICAgHCDQoCAgIDgAFENACAAIARBDGogBEEIaiAJp0ETEH0hA0KAgICAMCECIAQoAgghBiAEKAIMIQcCQAJAIANBAEgNAANAIAUgBkYEQEEAIQMMAwsgACACEAwgACAJIAcgBUEDdGoiCCgCBCAJQQAQESICQoCAgIBwg0KAgICA4ABRDQFBfyEDIAVBAWohBSAAIAEgCCgCBCACQYCAARDZBEEATg0ACwwBC0F\u002FIQMLIAAgByAGEFsgACAJEAwgACACEAwLIARBEGokACADC0gBAn8jAEEQayICJABBfyEDAkAgACACQQxqIAEQswENACACKAIMIgNBJWtBXEsNACAAQYSBAUEAEERBfyEDCyACQRBqJAAgAwt1AQF\u002FAkAgAUKAgICAcINCgICAgOB+UQRADAELAkAgAUKAgICAcFQNACABpyICLwEGQSFHDQAgAikDICIBQoCAgIBwg0KAgICA4H5SDQAMAQsgAEGTGkEAEBJCgICAgOAADwsgAaciACAAKAIAQQFqNgIAIAELvwEBAX8gASADai0AAEE8RgRAIAAgBEH\u002FAXEQDiAAIAVB\u002F\u002F8DcRAmIANBAWohAwsgASACKAIEIgBBBWsiAmoiBi0AAEG2AUYEQCAAIAFqLQAAQRZGBEAgBkEROgAAIABBBGshAgsgAEECaiEAIAEgAmoiBiAFOwABIAYgBEEBajoAACACQQNqIQIDQCAAIAJMRQRAIAEgAmpBswE6AAAgAkEBaiECDAELCyADDwtBvMMAQajsAEGz6gFBiM0AEAAAC84CAgd\u002FAX4jAEEwayICJAACQAJAIAMpAwAiAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCABQiCIp0F1SQ0BIAGnIgAgACgCAEEBajYCAAwBC0KAgICA4AAhDCAAIAEQigQiA0EASA0BIANFBEAgAEHt0ABBABASDAILIAAgAkEsaiACQShqIAGnIgZBAxB9DQEgAigCLCEHIAIoAighCEEAIQMCQANAIAMgCEcEQCAHIANBA3RqKAIEIQlBgIIBIQUCQCAERQ0AIAAgAkEIaiIKIAYgCRBDIgtBAEgNAyALRQ0AIAIoAgghBSAAIAoQRkGAhgFBgIIBIAVBAnEbIQULIAAgASAJQoCAgIAwQoCAgIAwQoCAgIAwIAUQakEASA0CIANBAWohAwwBCwsgACAHIAgQWyAGIAYoAgBBAWo2AgAMAQsgACAHIAgQWwwBCyABIQwLIAJBMGokACAMC0IBAX8CQCAAIAFqIgAtAAFBPUcNAEEBIQICQAJAIAAtAAAiAEEWaw4EAgEBAgALIABBswFGDQELIABBHUYhAgsgAguzAQEBf0F\u002FIQMCQCABKAJMRQ0AAkACQAJAAkAgAkHyAGsOAwIBAAMLIAEoArQBIgNBAE4NAyABIAAgAUH0ABBMIgA2ArQBIAAPCyABKAKwASIDQQBODQIgASAAIAFB8wAQTCIANgKwASAADwsgASgCrAEiA0EATg0BIAEgACABQfIAEEwiADYCrAEgAA8LIAJBCEcNACABKAKoASIDQQBODQAgASAAIAEQ0wMiAzYCqAELIAMLSwEBfyAAIAEoAgA2AkAgAEEpEA0gACAAKAJAKAIENgJAIABCgICAgCAQxwMhAiABKAIAIAI2AgggAEEDEA0gACACEDggAEHQABANC8gBAgN\u002FAX4jAEEQayIDJAAgACABECkiBkKAgICAcINCgICAgOAAUgRAAkACQCAAIANBDGogBhDfASIBRQ0AIAAgAhA9IgQgAygCDGpBAWoQJCIFRQ0AIAUgASADKAIMEB4iBSADKAIMaiACIAQQHhogBSADKAIMaiAEakEAOgAAIAAgBSADKAIMIARqEJ0DIQQgACgCECICQRBqIAUgAigCBBEAACAAIAEQMQwBCyAAIAEQMUEAIQQLIAAgBhAMCyADQRBqJAAgBAunAQEFfyMAQRBrIgMkACABpyIEKAIQIgJBMGohBSACIAIoAhhBf3NBAnRBvH5yaigCACECAkACQANAIAJFDQEgBSACQQN0aiIGQQhrIQIgBkEEaygCAEEwRwRAIAIoAgBB\u002F\u002F\u002F\u002FH3EhAgwBCwsgAyACNgIMIAJFDQAgACAEIANBDGogAigCAEEadkE8cRCNAw0BCyAEIAQtAAVB\u002FgFxOgAFCyADQRBqJAALsAUCCX8DfiMAQTBrIgQkACAAKAIAIQVCgICAgDAhDkKAgICAMCENAkAgAQRAQX8hAyAFEDsiDUKAgICAcINCgICAgOAAUQ0BIAAgDUEAEMABIQkgBSANEAwgCQ0BIAUQOyIOQoCAgIBwg0KAgICA4ABRDQEgBSANQfEAIA5BgIABEBVBAEgNAQsgAEEQaiEGQQAhAwJAAkADQCAGKAIAQYJ\u002FRgRAIAAoAhghCiAEIAYpAxg3AyggBCAGKQMQNwMgIAQgBikDCDcDGCAEIAYpAwA3AxAgCkEBaiEHIAApAyAhDAJAAkACQCABBEAgDEIgiKdBdU8EQCAMpyIIIAgoAgBBAWo2AgALIAUgDiADIAxBhIABEJMBQQBIDQIgBSANIAMCfiAAQeAAQQAgByAEQRBqIARBDGoQ\u002FwJFBEAgBCkDIAwBCyAEQoCAgIAwNwMgQoCAgIAwC0GEgAEQkwFBAEgNAiAAKAIoQeAARw0BIAUgDhDjBCAFIA0Q4wQgAiADQQFqNgIADAcLIAUgDBAMIABCgICAgDA3AyAgAEHgAEEBIAcgBEEQaiAEQQxqEP8CDQECQCAEKQMgIgynKAIEQf\u002F\u002F\u002F\u002F8HcUEBIAMbBEAgACAMQQEQwAEhCyAAKAIAIAwQDCALDQMgA0UEQCAAKAIoQeAARg0JIABBwgAQDSAAQd0AEBcLIANBAWohAwwBCyAAKAIAIAwQDAsgACgCKEHgAEYNBQsgABAPDQAgABCLAQ0AIAYoAgBB\u002FQBHBEAgAEHsPUEAEBMMAQsgACAGEIECIABBADYCMCAAIAAoAhQ2AgQgACAAKAI4EM0DRQ0BC0F\u002FIQMMBQsgA0EBaiEDDAELCyAAQYJ\u002FECghAwwCCyAAQSQQDSAAIANBAWtB\u002F\u002F8DcRAUCyAAEA8hAwsgBEEwaiQAIAMLbwEBfyAAQSYQDSAAQQAQFCAAQQEQDSAAQQAQOCAAIAAQLSICEBogAEGCARANIAAgAUECakH\u002FAXEQWCAAQesAQX8QGCEBIABB0QAQDSAAQZABEA0gAEHsACACEBgaIAAgARAaIABBDhANIABBDhANC50BAQd\u002FIAAoAkAiBCgCiAEiA0EAIANBAEobIQMCQANAAkAgAiADRgRAQQAhAyAEKAJ8IgJBACACQQBKGyEFQQAhAgNAIAIgBUYNBCACQQR0IQcgAkEBaiECIAcgBCgCdGooAgAgAUcNAAsMAQsgAkEEdCEIIAJBAWohAiAIIAQoAoABaigCACABRw0BCwsgAEG2E0EAEBNBfyEDCyADC4oFAgh\u002FAX4jAEFAaiIBJAAgACgCOCECQX8hCAJAIAAoAgAgAUEoakEgED4NAAJAIAAoAgAgAUEQakEBED4NACACQQFqIQNBACECAkADQCADIgUgACgCPE8NASACIQZBASECIANBAWohAwJAAkACQAJAAkACQAJAAkAgBS0AACIEQdsAaw4DBgMBAAsgBEEvRwRAIARBCmsOBAcCAgcCC0EvIQQgBg0FA0AgASADQQFqNgIMAkAgAywAACICQQBOBEAgAkH\u002FAXEhAgwBCyADQQYgAUEMahBRIgJBgIDEAE8NBgsgAhDJAQRAIAFBEGogAhCxAQ0LIAEoAgwhAwwBCwsgAEGEfzYCECAAIAFBKGoQNzcDICABQRBqEDchCSAAIAM2AjggACAJNwMoQQAhCAwKC0HdACEEQQAhAgwECyAEwEEATg0BIAVBBiABQQhqEFEiBEGAgMQATw0CIARB\u002Fv\u002F\u002FAHFBqMAARg0EIAEoAgghAwwBCyABQShqQdwAEDwNBiAFQQJqIQcCQCAFLQABIgQEQCAEQQprDgQFAQEFAQtBACEEIAYhAiAHIgMgACgCPE8NBgwDCyAEwEEATgRAIAYhAiAHIQMMAwtBB0EGQQAgA0EGIAFBDGoQUSIEQf7\u002F\u002FwBxQajAAEYbIARB\u002F\u002F\u002FDAEsiAhsiA0UEQCAHIAEoAgwgAhshAwwBCyADQQZrDgIDAQcLIAYhAgwBCyAAQbLfAEEAEBMMBAsgAUEoaiAEELEBRQ0BDAMLCyAAQa02QQAQEwwBCyAAQdI2QQAQEwsgASgCKCgCECIAQRBqIAEoAiwgACgCBBEAACABKAIQKAIQIgBBEGogASgCFCAAKAIEEQAACyABQUBrJAAgCAszAQF\u002FA0ACQCABQQBOBH8gASACRw0BQQEFQQALDwsgACgCzAEgAUEDdGooAgAhAQwACwALQwECfyAAKAKIASECQX8hAwJAA0AgAkEATA0BIAAoAoABIAJBAWsiAkEEdGooAgAgAUcNAAsgAkGAgICAAnIhAwsgAwuDAwEGfyABKAI4IQMCQAJAAkAgAS0AbkEBcQRAIANFBEBB7TAhAyABKAJADQMLQYDdACEDIAJBO0YgAkHOAEZyDQJBACECIAEoAogBIgNBACADQQBKGyEEA0AgAiAERg0CQdvcACEDIAEoAoABIAJBBHRqKAIAIgZBO0YgBkHOAEZyDQMgAkEBaiECDAALAAsgA0UNACABLwFsIgJBggxGDQAgAkEIdkEDaw4EAAICAAILQQAhBCABKAKIASICQQAgAkEAShshCEEAIQMDQCADIAhGDQJBACECAkAgASgCgAEiBSADQQR0aigCACIGRQ0AA0ACQCACIANGBEBBACECIAEoAnwiBUEAIAVBAEobIQUDQCACIAVGDQQgBiABKAJ0IAJBBHRqIgcoAgBGBEAgBygCBEUNAwsgAkEBaiECDAALAAsgAkEEdCEHIAJBAWohAiAFIAdqKAIAIAZHDQELC0GBEyEDDAILIANBAWohAwwACwALIAAgA0EAEBNBfyEECyAEC2EBAX8gAEG4ARANIABB9wAQFyAAIAAoAkAvAbwBEBQgAEEREA0gAEHqAEF\u002FEBghASAAQbgBEA0gAEEIEBcgAEEAEBQgAEEbEA0gAEEkEA0gAEEAEBQgACABEBogAEEOEA0LUQECf0F\u002FIQJBASEDA0ACQCAAIAEQrQENACADRQRAIAAoAkBBfzYCmAILIAAoAhBBLEcEQEEAIQIMAQsgABAPDQAgAEEOEA1BACEDDAELCyACC5sdAgR+BX8CfwJAIABBEGoiB0H4ASAAKAIAEQMAIgVFDQAgBUEFakEAQfMBECwaIAVBBToABCAFQQE2AgAgACgCUCIIIAVBCGoiCTYCBCAFIABB0ABqNgIMIAUgCDYCCCAAIAk2AlAgBSAHIAAoAkBBA3QgACgCABEDACIINgIoIAhFBEAgByAFIAAoAgQRAAAMAQsgBSAANgIQIAAoAkgiByAFQRRqIgk2AgQgBSAAQcgAajYCGCAFIAc2AhQgACAJNgJIIAUgAEHkAWo2AtgBIAAoAkAiAEEAIABBAEobIQADQCAAIAZHBEAgCCAGQQN0akKAgICAIDcDACAGQQFqIQYMAQsLIAVCgICAgCA3A1AgBUKAgICAIDcDSCAFQoCAgIAgNwNAIAUgBUHgAWoiADYC5AEgBSAANgLgASAFQoCAgIAgEEEhASAFKAIoIAE3AwhBACEGIAUgBUEQQeyWAUEAQQBBACABEPwBIgE3AzAgAUIgiKdBdU8EQCABpyIAIAAoAgBBAWo2AgALIAUoAiggATcDaCAFEDMhASAFKAIoIAE3AxggBSABQZDKAUEDEB8gBUHYAGohBwNAIAUoAighACAGQQhHBEAgBkECdEHAnQFqKAIAIQggBSAFIAApAxgQQSIBQTcgBSAIEPsEQQMQFRogBSABQTMgBUEvEClBAxAVGiAHIAZBA3RqIAE3AwAgBkEBaiEGDAELCyAFIAApAwhBAhBHIQEgBSgCKCABNwMQIAUgBSABp0EAIAFC\u002F\u002F\u002F\u002F\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\u002FASAAIARB\u002F\u002FEAIANBABC+ARogBkEBaiEGDAELCyAAIAEQDCAAIAIQDCAAEDMhASAAKAIoIAE3A4ACIAAgAUHg8QFBGBAfIABBuBFBJyAAKAIoKQOAAhCyAxogB0FAayQAAkAgACgCECIAKAJAQS5PBEAgACgCRCgCuAgNAQsgAEHQnAFBLUEJEIEEGiAAKAJEIgBBKDYC8AkgAEEpNgLACSAAQSk2AqgJIABBKjYCkAkgAEErNgL4CCAAQSs2AuAICyAFEDMhASAFKAIoIAE3A+gCIAUgAUGwvwFBBBAfIAVBLEHO0QBBAUECQQAQggEiAUIgiKdBdU8EQCABpyIAIAAoAgBBAWo2AgALIAUgATcDUCAFIAFB8L8BQQgQHyAFIAFBztEAIAUoAigpA+gCEL8BIAUgBSkDMBBBIQEgBSgCKCABNwOAAyAFQRVBzzpBAUEFQQIgBSkDOBD8ASEBIAUgBSgCKCkDgANB8MABQQEQHyAFIAEgBSgCKCkDgANBAEEBEPQBIAUgARAMIAUgBRAzIgE3A6ABIAUgAUGAwQFBARAfIAUgBSkDoAEQQSEBIAUoAiggATcDmAMgBSABQZDBAUEDEB8gBSAFKQOgARBBIQEgBSgCKCABNwOoAyAFIAFBwMEBQQQQHyAFIAUpAzAQQSEBIAUoAiggATcDoAMgBUEVQaM6QQFBBUEDIAUpAzgQ\u002FAEhASAFIAUoAigpA6ADQYDCAUEBEB8gBSAFKAIoIgApA6ADIAApA6gDQQFBARD0ASAFIAEgBSgCKCkDoANBAEEBEPQBIAUgARAMIAUoAhAiAEEtNgKwAiAAQS42AqwCIABBLzYCqAIgAEEwNgKkAiAAQTE2AqACIAUQMyEBIAUoAiggATcDiAIgBSABQcDJAUEDEB8gBSAFQZsbQTJBASAFKAIoKQOIAhCsAUHwyQFBAhAfCyAFC5YCAQR\u002FIAAoAhAhBiABKAIAIgUtABAEfyAGIAUQgwQgBSgCFCADakGBgNzxeWwgBGpBgYDc8XlsBUEACyEHAn8gBSgCICIIIAUoAhxOBEAgACABIAIgCEEBahDWBQRAQX8gBS0AEEUNAhogBiAFEIwDQX8PCyABKAIAIQULIAUtABAEQCAFIAc2AhQgBiAFEIwDCyAFIAUoAiAiAUEBajYCICAFIAFBA3RqIgEgACADEBYiADYCNCABIAEoAjBB\u002F\u002F\u002F\u002FH3EgBEEadHI2AjAgBSAFLQARIABBH3ZyOgARIAEgASgCMEGAgIBgcSAFIAAgBSgCGHFBf3NBAnRqIgAoAgBB\u002F\u002F\u002F\u002FH3FyNgIwIAAgBSgCIDYCAEEACwvoAQEDfwJAAkAgACgCICICQSVJDQAgAkEtTQRAIAAoAkAiAS0AbkEBcQ0BIAJBLUcNAiABLwFsIgNBAXENASADQYD+A3FBgAZHDQIgASgCZA0CIAEoAgQiAUUNAiABLQBsQQFxDQEMAgsgAkEuRw0BIAAoAkQNACAAKAJAIgEvAWwiA0ECcQ0AAkAgA0EIdkEDaw4FAAICAgECCyABKAJkDQEgASgCBCIBRQ0BIAEvAWwiAUECcQ0AIAFBgP4DcUGADkcNAQsgAAJ\u002FIAAoAiQEQCAAQQE2AihBg38MAQsgAkHWAGsLNgIQCwvkAgEFfyMAQaABayIFJAAgASgCACEHIAVBgAE2AgggBSAFQRBqNgIMIAQEfyAFQSM6ABBBAQVBAAshBAJ\u002FAkADQCAFIAc2ApwBAn8gA0H\u002FAEwEQCAFKAIMIgYgBGogAzoAACAEQQFqDAELIAUoAgwiBiAEaiADEN0CIARqCyEEIAUgBSgCnAEiAyIIQQFqNgKcAQJAIAMtAAAiA0HcAEYEQEHcACEDIAgtAAFB9QBHDQEgBUGcAWpBARCXAiEDIAJBATYCAAwBCyADwEEATg0AIAdBBiAFQZwBahBRIQMLIAMQyQFFDQEgBSgCnAEhByAEIAUoAghBBmtJDQAgACgCACAFQQxqIAVBCGogBUEQahCvBUUNAAsgBSgCDCEGQQAMAQsgACgCACAGIAQQnQMLIQkgBUEQaiAGRwRAIAAoAgAoAhAiAEEQaiAGIAAoAgQRAAALIAEgBzYCACAFQaABaiQAIAkLRQAgACgCzAEgAUEDdGpBBGohAQNAIAEoAgAiAUEASEUEQCAAKAJ0IAFBBHRqIgEgASgCDEEEcjYCDCABQQhqIQEMAQsLC6kDAQx\u002FAkAgACgCECIEKALcAUEBdEECaiAEKALYAUwNACAEQRBqIglBBCAEKALUASIDQQFqIgh0IgUgBCgCABEDACIHRQ0AQQEgCHQhCiAHQQAgBRAsIQcgBCgC2AEiBUEAIAVBAEobIQtBHyADayEMA0AgBCgC4AEhAyAGIAtGRQRAIAMgBkECdGooAgAhAwNAIAMEQCADKAIoIQ4gAyAHIAMoAhQgDHZBAnRqIg0oAgA2AiggDSADNgIAIA4hAwwBCwsgBkEBaiEGDAELCyAJIAMgBCgCBBEAACAEIAc2AuABIAQgCjYC2AEgBCAINgLUAQsgACACQQN0QUBrECQiA0UEQEEADwsgA0ECOgAUIANBATYCECAEKAJQIgUgA0EYaiIGNgIEIAMgBEHQAGo2AhwgAyAFNgIYIAQgBjYCUCABBEAgASABKAIAQQFqNgIACyADQgA3AgAgAyABNgI8IANCADcCMCADIAI2AiwgA0EDNgIoIANBATsBICADQgA3AgggAyABQYGA3PF5bEH\u002F\u002F6OOBms2AiQgACgCECADQRBqIgAQjAMgAAsNACAAIAFB6\u002F8AEOIEC+8CAQZ\u002FQQEhCSADIQcCQANAIAcoAswBIAVBA3RqQQRqIQYCQAJAA0AgBigCACIFQQBIDQEgBygCdCIIIAVBBHQiCmoiC0EIaiEGIAsoAgAgBEcNAAsgCCAKaigCDEEEdkEPcSEIQQEhBiAJBEBBACEGDAILIAAgAyAHQQAgBSAEQQFBAUEAEJ8BIgVBAE4NAQwDCyAHKAIEIgZFBEACQCAHKAIgRQ0AQQAhBSAHKALAAiIGQQAgBkEAShshBgNAIAUgBkYNASAEIAcoAsgCIAVBA3RqIggoAgRGBEAgCC0AACIJQQR2IQggAyAHRgRAQQEhBgwFC0EBIQYgACADIAdBACAJQQF2QQFxIAUgBCAJQQJ2QQFxIAlBA3ZBAXEgCBD7ASIFQQBIDQYMBAUgBUEBaiEFDAELAAsACyAAIARBn48BEIEDDAMLIAcoAgwhBUEAIQkgBiEHDAELCyABIAY2AgAgAiAINgIAIAUPC0F\u002FC4gYAQh\u002FIwBBEGsiDCQAIAxBfzYCDCACQQhGIgkgAkHyAGtBA0kiC3IhDSABKALMASADQQN0akEEaiEDAkACQAJAAkACQAJAA0AgAygCACIDQQBOBEAgAiABKAJ0IANBBHRqIgooAgAiDkYEQCAEQX1xQbkBRwRAIAMhCQwECyADIQkgCi0ADEEBcUUNAyAFQTAQDiAFIAAgAhAWEBsgBUEAEA4MBwsgCSAOQdUARyALcnJFBEAgBUHYABAOIAUgA0H\u002F\u002FwNxECYgACABIAIgBCAFIAxBDGpBARDYAQsgCkEIaiEDDAELC0F\u002FIQkgA0F+RwRAIAEgAhD3ASEJCyANRSAJQQBOckUEQCAAIAEgAhDgBCEJCwJAIAJBzgBHIAlBAE5yRQRAIAEoAkhFDQEgACABEPACIQkLIAlBAE4NAQsCQCABKAIsBEAgASgCcCACRg0BCyADQX5HDQMMBAsgACABIAIQ7wIiCUEASA0BCwJAAkACQAJAIARBtwFrDggCAgADAAECAgcLAkAgCUGAgICAAnEiAw0AIAEoAnQgCUEEdGotAAxBAXFFDQAgBUEwEA4gBSAAIAIQFhAbIAVBABAODAcLAkAgBEG5AWsOAwIDAAcLAkAgAw0AIAEoAnQgCUEEdGooAgxB8AFxQcAARw0AIAVBCxAOIAVB2AAQDiAFIAlB\u002F\u002F8DcRAmIAVBzAAQDiAFIAAgAhAWIgIQGyAFQQQQDiAFIAAgAhAWEBsMBwsCQCAMKAIMQX9HDQAgBiAHKAIEEN8ERQ0AIAUgBiAHIAgCfyADBEAgCUGAgICAAmshCUHbAAwBC0HiAEHYACABKAJ0IAlBBHRqLQAMQQJxGwsgCRDdBCEIDAcLIAMEQCAFQfsAEA4gBSAAIAIQFhAbIAUgCUH\u002F\u002FwNxECYMBwsgBUH6ABAOIAUgACACEBYQGyAFIAlB\u002F\u002F8DcRAmDAYLIAVBBhAOCyAJQYCAgIACcQRAIAVB3ABB3ABB2wAgBEG9AUYbIARBuQFGGxAOIAUgCUH\u002F\u002FwNxECYMBQsgBQJ\u002FAkACQCAEQbkBaw4FAAEBAQABC0HZACABKAJ0IAlBBHRqLQAMQQJxRQ0BGkHjAEHkAEHZACACQQhGGyAEQb0BRxsMAQtB2AAgASgCdCAJQQR0ai0ADEECcUUNABpB5QBB4gAgBEG+AUYbCxAOIAUgCUH\u002F\u002FwNxECYMBAsgBUEJEA4MAwsgA0F+Rg0BCyABKAKQAUEASCACQfIAa0EDSXIgAkEIRnINACAFQdgAEA4gBSABLwGQARAmIAAgASACIAQgBSAMQQxqQQAQ2AELIAEoApQBQQBIIAJB8gBrQQNJciACQQhGckUEQCAFQdgAEA4gBSABLwGUARAmIAAgASACIAQgBSAMQQxqQQAQ2AELIAJB8gBrQQNJIQsgAkEIRiEOIAJBzgBHIQ8gASEKAkACQAJAAkADQCAKIgMoAgQiCkUEQCADIQoMAgsgCigCzAEgAygCDEEDdGpBBGohAwNAIAMoAgAiA0EATgRAIAIgCigCdCADQQR0aiINKAIAIhBGBEAgBEF9cUG5AUcEQCADIQkMBgsgAyEJIA0tAAxBAXFFDQUgBUEwEA4gBSAAIAIQFhAbIAVBABAODAgFAkAgDiAQQdUARyALcnINACANIA0oAgxBBHI2AgwgACABIApBACADQdUAQQBBAEEAEJ8BIgNBAEgNACAFQd4AEA4gBSADQf\u002F\u002FA3EQJiAAIAEgAiAEIAUgDEEMakEBENgBCyANQQhqIQMMAgsACwsgCUEATg0CIANBfkYiA0UEQCAKIAIQ9wEiCUEATg0DCyALRSACQQhHcUUEQCAAIAogAhDgBCIJQQBODQMLAkACQCAPDQAgCigCSEUNACAAIAoQ8AIhCQwBCwJAIAooAixFDQAgCigCcCACRw0AIAAgCiACEO8CIQkMAQsCQCADDQAgDiAKKAKQASIDQQBIIAtycg0AIAooAnQgA0EEdGoiAyADKAIMQQRyNgIMIAAgASAKQQAgCigCkAEgAygCAEEAQQBBABCfASEDIAVB3gAQDiAFIANB\u002F\u002F8DcRAmIAAgASACIAQgBSAMQQxqQQAQ2AELIA4gCigClAEiA0EASCALcnJFBEAgCigCdCADQQR0aiIDIAMoAgxBBHI2AgwgACABIApBACAKKAKUASADKAIAQQBBAEEAEJ8BIQMgBUHeABAOIAUgA0H\u002F\u002FwNxECYgACABIAIgBCAFIAxBDGpBABDYAQsgCigCIEUNAQwCCwsgCUEATg0BCyAKKAIgRQ0CIAJB8gBrQQNJIQ4gAkEIRiEQQQAhAwNAAkACQCAKKALAAiADSgRAIAIgCigCyAIgA0EDdGoiDygCBCINRgRAIAEgCkYNBiAAIAEgCkEAIA8tAAAiCUEBdkEBcSADIAIgCUECdkEBcSAJQQN2QQFxIAlBBHYQ+wEhAwwGCyANQdMAa0ECTwRAIA1B1QBHIA5yDQMMAgsgDkUNAQwCCyAJQQBIDQUMAwsgEA0AIAMhCyABIApHBEAgACABIApBACAPLQAAQQF2QQFxIAMgDUEAQQBBABD7ASELCyAFQd4AEA4gBSALQf\u002F\u002FA3EQJiAAIAEgAiAEIAUgDEEMaiANQdUARhDYAQsgA0EBaiEDDAALAAsCfyAJQYCAgIACcQRAIAooAoABIAlBgICAgAJrIgNBBHRqIgkgCSgCDEEEcjYCDCAAIAEgCkEBIAMgAkEAQQBBABCfAQwBCyAJQQR0IgMgCigCdGoiCyALKAIMQQRyNgIMIAAgASAKQQAgCSACIAooAnQgA2ooAgwiA0EBcSADQQF2QQFxIANBBHZBD3EQnwELIgNBAEgNAQsCQCAFAn8CQAJAAkACQAJAIARBtwFrDgcBAQAGAAMBCAsgASgCyAIgA0EDdGotAAAiCUEEcQRAIAVBMBAOIAUgACACEBYQGyAFQQAQDgwIC0EAIQoCQCAEQbkBaw4DAgYACAsgCUHwAXFBwABGBEAgBUELEA4gBUHeABAOIAUgA0H\u002F\u002FwNxECYgBUHMABAOIAUgACACEBYiAhAbIAVBBBAOIAUgACACEBYQGwwICwJAIAwoAgxBf0cNACAGIAcoAgQQ3wRFDQAgBSAGIAcgCEHmAEHeACAJQQhxGyADEN0EIQgMCAsgBUH8ABAOIAUgACACEBYQGyAFIANB\u002F\u002F8DcRAmDAcLIARBvQFGIQogBEG5AWsOBQACAgIAAgtB3wAgASgCyAIgA0EDdGotAABBCHFFDQIaQegAQd8AIAJBCEYbQecAIAobDAILIAVBBhAOC0HmAEHeACABKALIAiADQQN0ai0AAEEIcRsLEA4gBSADQf\u002F\u002FA3EQJgwCCyAFQQkQDgwBCwJAAkACQAJAAkAgBEG3AWsOBwICAgQAAQMFCwJAIAwoAgxBf0cNACAGIAcoAgRqIgMtAAFBPUcNAAJAAkAgAy0AACIDQRlrDgUBAgICAQALIANBswFGDQAgA0EWRw0BCyABLQBuQQFxIgkEQCAFQTYQDiAFIAAgAhAWEBsLIAYgCGotAABBPEYEQCAFQTgQDiAFIAAgAhAWEBsgCEEBaiEICyAGIAcoAgQiB0EFayIDaiILLQAAQbYBRw0GIAYgB2otAAAhBAJAAkAgCQRAQTshCgJAAkACQAJAIARBGWsOBQIBAQEDAAtBFSEJIARBFkYNBCAEQbMBRg0FCxABAAtBGCEJDAILQRshCQwBC0E5IQpBESEJIARBFkcNAQsgCyAJOgAAIAdBBGshAwsgB0ECaiEEIAMgBmoiByAKOgAAIAcgACACEBY2AAEgA0EFaiEDA0AgAyAETg0GIAMgBmpBswE6AAAgA0EBaiEDDAALAAsgBUH9ABAOIAUgACACEBYQGwwECyAFQQYQDiAFQTgQDiAFIAAgAhAWEBsMAwsgBSAEQYABc0H\u002FAXEQDiAFIAAgAhAWEBsMAgsgBUE6EA4gBSAAIAIQFhAbDAELIAVBmgEQDiAFIAAgAhAWEBsLIAwoAgwiAEEATgRAIAVBtgEQDiAFIAAQGyABKAKkAiAAQRRsaiAFKAIENgIICyAMQRBqJAAgCA8LQbzDAEGo7ABB5OoBQcrMABAAAAshACAAQpADgVCtQu4CQu0CIABCA4NQGyAAQuQAgVCtfXwLWQEBfiAAQu0CfiAAQrEPfUICh3wgAELtDn0iASABQuQAgSIBfSABQj+HQpx\u002Fg3xCnH9\u002FfCAAQsEMfSIAIABCkAOBIgB9IABCP4dC8HyDfEKQA398QsrxK30LiwIDBX8BfAF+IwBB4ABrIgUkAEKAgICA4AAhCwJAIAAgASAFQRBqIARBD3EiCCAEQQh2QQ9xIgdFENUDIgZBAEgNACACIARBBHZBD3EgB2siBCACIARIGyIEQQAgBEEAShshCUEAIQQDQCAEIAlHBEAgACAFQQhqIAMgBEEDdGopAwAQQg0CIAVBEGogBCAHakEDdGogBSsDCCIKnTkDACAGQQAgCr1CgICAgICAgPj\u002FAINCgICAgICAgPj\u002FAFIbIQYgBEEBaiEEDAELC0QAAAAAAAD4fyEKIAAgASAGRSACQQBMcgR8RAAAAAAAAPh\u002FBSAFQRBqIAgQ6wMLEPkEIQsLIAVB4ABqJAAgCwvHAQEBfwJAAkAgAUKAgICAcFQNACABpyIDLwEGQQpHDQAgACADKQMgEAwgAwJ+IAK9IgECfyACmUQAAAAAAADgQWMEQCACqgwBC0GAgICAeAsiALe9UQRAIACtDAELQoCAgIDAfiABQoCAgIDAgYD8\u002FwB9IAFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\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\u002FAHxC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINQGxDyAiIARQRAQoCAgIAwDwsgACkDKCIBQiCIp0F1TwRAIAGnIgAgACgCAEEBajYCAAsgAQu7BQIDfgd\u002FIwBBEGsiCyQAQoCAgIDgACEHAkAgACABIARBImoQWiICRQ0AIAIoAgBFIAMpAwAiBUIAIAVCIIinQQdrQW5PGyAFIAVCgICAgMCBgPz\u002FAHxC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINQGyIFQv\u002F\u002F\u002F\u002F9vVnJFBEAgABAiDAELQoCAgIAwIQYgBEEBcUUEQCADKQMIIQYLAkAgACACIAUQ8gIiAwRAIAAgAykDKBAMDAELIABBMBAkIgNFDQEgAyACNgIIIANCATcDAAJAIAIoAgAEQCADIAWnIgQoAhg2AgwgBCADNgIYDAELIAVCIIinQXVJDQAgBaciBCAEKAIAQQFqNgIACyADIAU3AyAgAigCECIJIAIoAhQiBEEBayAFENkDcUEDdGoiCCgCACIKIANBGGoiDDYCBCADIAg2AhwgAyAKNgIYIAggDDYCACACKAIEIgggA0EQaiIKNgIEIAMgAkEEaiIMNgIUIAMgCDYCECACIAo2AgQgAiACKAIMQQFqIgg2AgwgCCACKAIYSQ0AIAAgCUEEIARBAXQgBEEBRhsiAEEDdCALQQxqEKcBIghFDQAgCygCDEEDdiAAaiEEQQAhAANAIAAgBEZFBEAgCCAAQQN0aiIJIAk2AgQgCSAJNgIAIABBAWohAAwBCwsgBEEBayEKIAJBCGohAANAIAwgACgCACIARwRAIABBDGsoAgBFBEAgCCAAKQMQENkDIApxQQN0aiIJKAIAIg0gAEEIaiIONgIEIAAgCTYCDCAAIA02AgggCSAONgIACyAAQQRqIQAMAQsLIAIgBDYCFCACIAg2AhAgAiAEQQF0NgIYCyAGQiCIp0F1TwRAIAanIgAgACgCAEEBajYCAAsgAyAGNwMoIAFCIIinQXVPBEAgAaciACAAKAIAQQFqNgIACyABIQcLIAtBEGokACAHCz8BAX8gAUEAIAFBAEobIQEDQAJAIAEgA0YEQEF\u002FIQMMAQsgACADQQN0aigCBCACRg0AIANBAWohAwwBCwsgAwv\u002FBAICfwR+AkAgAkL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECIMAQsCQCAAIAJBPhBuBH9CgICAgDAhBUKAgICAMCEGQoCAgIAwIQggACACQT4gAkEAEBEiB0KAgICAcINCgICAgOAAUQ0BQYECQYACIAAgBxAnGwVBAAshAyAAIAJBPxBuBEBCgICAgDAhBUKAgICAMCEGQoCAgIAwIQggACACQT8gAkEAEBEiB0KAgICAcINCgICAgOAAUQ0BQYIEQYAEIAAgBxAnGyADciEDCyAAIAJBwAAQbgRAQoCAgIAwIQVCgICAgDAhBkKAgICAMCEIIAAgAkHAACACQQAQESIHQoCAgIBwg0KAgICA4ABRDQFBhAhBgAggACAHECcbIANyIQMLQoCAgIAwIQYCQCAAIAJBwQAQbkUEQEKAgICAMCEIDAELQoCAgIAwIQUgACACQcEAIAJBABARIghCgICAgHCDQoCAgIDgAFEEQAwCCyADQYDAAHIhAwsCQAJAIAAgAkHCABBuRQ0AQoCAgIAwIQUgA0GAEHIhAyAAIAJBwgAgAkEAEBEiBkKAgICAcIMiB0KAgICAMFENAEG+MCEEIAdCgICAgOAAUQ0BIAAgBhA1RQ0BCwJAIAAgAkHDABBuRQRAQoCAgIAwIQUMAQsgA0GAIHIhAyAAIAJBwwAgAkEAEBEiBUKAgICAcIMiAkKAgICAMFENAEGvMCEEIAJCgICAgOAAUQ0BIAAgBRA1RQ0BCyADQYAwcQRAQb\u002FYACEEIANBgMQAcQ0BCyABIAU3AxggASAGNwMQIAEgCDcDCCABIAM2AgBBAA8LIAAgBEEAEBILIAAgCBAMIAAgBhAMIAAgBRAMC0F\u002FC7kDAgl\u002FA34jAEEgayIEJAAgBEEANgIMIARBADYCCAJAIAAgASACIAFBABARIg1CgICAgHCDQoCAgIDgAFEEQCANIQEMAQsCQAJAIA1CgICAgHBUDQAgACANEMwBIglBAEgNAQJAIAkEQCAAIARBDGogDRDKAUUNAQwDCyAAIARBCGogBEEMaiANp0EREH0hCyAEKAIIIQYgC0EASA0CCyAEKAIMIQgDQCAHIAhGDQECQCAJBEAgACAHEOwFIgVFDQQMAQsgACAGIAdBA3RqKAIEEBYhBQsCfwJAIAAgDSAFIAMQhQUiDkKAgICAcIMiD0KAgICAMFIEQCAPQoCAgIDgAFINASAAIAUQEAwFCyAAIA0gBUEAEM0BDAELIAAgDSAFIA5BBxAVCyEMIAAgBRAQIAdBAWohByAMQQBODQALDAELIAAgBiAIEFtBACEGIAAgAhBSIg5CgICAgHCDQoCAgIDgAFENACAEIA03AxggBCAONwMQIAAgAyABQQIgBEEQahAcIQEgACAOEAwgACANEAwMAQsgACAGIAQoAgwQWyAAIA0QDEKAgICA4AAhAQsgBEEgaiQAIAELMAEBfyAAKAI4IAFBAnRqKAIAIgEgASgCACICQQFrNgIAIAJBAUwEQCAAIAEQmwMLC44DAQR\u002FIwBBQGoiAyQAAkAgACABEEoiAUKAgICAcINCgICAgOAAUQ0AAkAgACADQSRqIgIgAaciBCgCBEH\u002F\u002F\u002F\u002F\u002FB3FBAmoQPg0AIAJBIhA8DQBBACECIANBADYCPANAIAQoAgRB\u002F\u002F\u002F\u002F\u002FwdxIAJKBEACQAJAAkACQAJAAkACQAJAAkACQCAEIANBPGoQxgEiAkEIaw4GBQIEAQYDAAsgAkEiRiACQdwARnINBgsgAkGA8P8AcUGAsANHIAJBIE9xDQYgAyACNgIAIANBEGoiAkEQQf4PIAMQSBogA0EkaiACEIMBDQoMBwtB9AAhAgwEC0HyACECDAMLQe4AIQIMAgtB4gAhAgwBC0HmACECCyADQSRqIgVB3AAQPA0EIAUgAhA8RQ0BDAQLIANBJGogAhCxAQ0DCyADKAI8IQIMAQsLIANBJGoiAkEiEDwNACAAIAEQDCACEDchAQwBCyAAIAEQDCADKAIkKAIQIgBBEGogAygCKCAAKAIEEQAAQoCAgIDgACEBCyADQUBrJAAgAQvdBgIMfwd+IwBBMGsiAiQAAn4CQAJAIAEpAygiDkKAgICAcINCgICAgJB\u002FUQRAIAEpAwgiEEKAgICAcINCgICAgJB\u002FUQ0BCyAAQcbJAEEAEBIMAQsgASkDICESIAEpAxghDyABKQMAIRMgACACQQxqQQAQPhogAkEANgIkAkAgD0KAgICAcINCgICAgDBSBEAgACACQSRqIA8QygENAQsgACACQShqIBMQygENACAAIAJBLGogASkDEBB1QQBIDQAgEKchCCASQoCAgIBwgyEQIAIoAiwiDCACKAIoaiENIA6nIgRBEGohByAEKAIEQf\u002F\u002F\u002F\u002F8HcSEKIAIoAiQhC0EAIQEDQAJAAkACQCAEQSQgARCgASIGQQBIDQAgBkEBaiIDIApPDQAgAkEMaiAEIAEgBhBLGiAGQQJqIQECQAJAAkACQAJ\u002FIAQpAgRCgICAgAiDUCIJRQRAIAcgA0EBdGovAQAMAQsgAyAHai0AAAsiA0Ekaw4EAAMFAQILIAJBDGpBJBA8GgwGCyACQQxqIAggDSAIKAIEQf\u002F\u002F\u002F\u002F8HcRBLGgwFCyADQeAARg0DCwJAIANBMGsiBUEJTQRAAkAgASAKTw0AAn8gCUUEQCAHIAFBAXRqLwEADAELIAEgB2otAAALIgNBMGtBCUsNACAGQQNqIAEgAyAFQQpsaiIBQTBLIAFBMGsiAyALSXEiCRshASADIAUgCRshBQsgBUUgBSALT3INASAAIA8gBa0QbCIOQoCAgIBwgyIRQoCAgIAwUQ0FIBFCgICAgOAAUQ0GIAJBDGogDhCEAUUNBQwGCyADQTxHIBBCgICAgDBRcg0AIARBPiABEKABIgNBAEgNACAAIAQgASADEI4BIg5CgICAgHCDQoCAgIDgAFENBSAAIBIgDhBOIg5CgICAgHCDIhFCgICAgDBSBEAgEUKAgICA4ABRDQYgAkEMaiAOEIQBDQYLIANBAWohAQwECyACQQxqIAQgBiABEEsaDAMLIAJBDGoiACAEIAEgBCgCBEH\u002F\u002F\u002F\u002F\u002FB3EQSxogABA3DAULIAJBDGogExCNAUUNAQwCCyACQQxqIAhBACAMEEsaDAALAAsgAigCDCgCECIAQRBqIAIoAhAgACgCBBEAAAtCgICAgOAACyEUIAJBMGokACAUC28BA38DQCAAKAIoIgFBAExFBEAgACABQQFrIgE2AiggACgCACAAKAIEIAFBA3RqKQMAEAwMAQsLIAAoAgQiASAAQQhqIgJHBEAgACgCACgCECIDQRBqIAEgAygCBBEAAAsgAEEENgIsIAAgAjYCBAu8CwIHfg1\u002FIwBBEGsiECQAAkAgACABEPUCIgJFBEBCgICAgOAAIQQMAQtCgICAgOAAIQQgACADKQMAECUiCEKAgICAcINCgICAgOAAUQ0AQQAhA0KAgICAICEFQoCAgIAwIQcCQAJAIAAgAUHWACABQQAQESIEQoCAgIBwg0KAgICA4ABRDQAgACAQQQhqIAQQoQENACACKAIEQRBqIgstAAAiDkEhcSIRRQRAIBBCADcDCAsCQCALLQABIgxBAE0NACAAIAxBA3QQJCIDDQBBACEDDAELAkACQCAQKQMIIgkgCKciFCkCBCIEQv\u002F\u002F\u002F\u002F8Hg1UNACADIAsgFEEQaiISIAmnIASnIgJB\u002F\u002F\u002F\u002F\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\u002F\u002F\u002F\u002F\u002F29WDQEgACABEAwgAEH6HkEAEBILIAVBADYCAAwBCyAFQQI2AgAgASEICyAGQRBqJAAgCAsNACAAIAEgAkEAELQBC18BAX8gAUEQaiEDAkAgAS0AB0GAAXEEQCAAIAMgAkEBdBAeGgwBC0EAIQEgAkEAIAJBAEobIQIDQCABIAJGDQEgACABQQF0aiABIANqLQAAOwEAIAFBAWohAQwACwALC6gBAQV\u002FIACnIgMoAhAiAUEwaiEEIAEgASgCGEF\u002Fc0ECdEGgfnJqKAIAIQEDQCABRQRAQQAPCyAEIAFBAWsiBUEDdGoiASgCACECIAEoAgRBN0cEQCACQf\u002F\u002F\u002Fx9xIQEMAQsLQQEhAQJAIAJB\u002F\u002F\u002F\u002F\u002FwNLDQAgAygCFCAFQQN0aikDACIAQoCAgIBwg0KAgICAkH9SDQAgAKcoAgRB\u002F\u002F\u002F\u002F\u002FwdxQQBHIQELIAEL1wMBBn8jAEEQayIHJAAgBUEEaiEJAkACQANAQQAhBiABQQA2AgAgAkEANgIAIAUoAggiCEEAIAhBAEobIQoDQCAGIApHBEACQCAFKAIAIAZBA3RqIgsoAgAgA0cNACALKAIEIARHDQBBAiEGDAULIAZBAWohBgwBCwsgACAFQQggCSAIQQFqEGQEQEF\u002FIQYMAwsgBSAFKAIIIgZBAWo2AgggBSgCACAGQQN0aiIGIAM2AgAgBiAAIAQQFiIINgIEIAMgCBC6BSIGBEAgBigCCEUNAiAGKAIMIgRB\u002FgBGDQIgAygCECAGKAIAQQN0aigCBCEDDAELCyAIQRZHBEBBACEEA0AgAygCLCAESgRAAkACQCAAIAdBDGogB0EIaiADKAIQIAMoAiggBEECdGooAgBBA3RqKAIEIAggBRCVBSIGQQFqDgUGAAEBBgELIAIoAgAiBgRAIAEoAgAgBygCDEYEQCAHKAIIKAIMIAYoAgxGDQILIAFBADYCACACQQA2AgBBAyEGDAYLIAEgBygCDDYCACACIAcoAgg2AgALIARBAWohBAwBCwtBACEGIAIoAgANAgtBASEGDAELIAEgAzYCACACIAY2AgBBACEGCyAHQRBqJAAgBguwAwELfyABKAIIIgVBACAFQQBKGyEGAkACQANAIAQgBkcEQCAEQQJ0IQ4gBEEBaiEEIA4gASgCAGooAgAgAkcNAQwCCwtBfyEHIAAgAUEEIAFBBGogBUEBahBkDQEgASABKAIIIgRBAWo2AgggASgCACAEQQJ0aiACNgIAIAFBEGohCiABQQxqIQhBACEFA0AgAigCICAFTARAQQAhBANAIAQgAigCLE4NAyAEQQJ0IQMgBEEBaiEEIAAgASACKAIQIAMgAigCKGooAgBBA3RqKAIEQQEQlgVFDQALDAMLAkAgA0EAIAIoAhwgBUEUbGoiBigCECILQRZGGw0AQQAhBCABKAIUIglBACAJQQBKGyEMAkADQCAEIAxHBEAgCCgCACAEQQxsaiINKAIAIAtGDQIgBEEBaiEEDAELCyAAIAhBDCAKIAlBAWoQZA0EIAEgASgCFCIEQQFqNgIUIAEoAgwgBEEMbGoiBCAGKAIQNgIAAkAgA0UEQCAGKAIIRQ0BCyAEQQA2AggMAgsgBCAGNgIIDAELIA1BADYCCAsgBUEBaiEFDAALAAtBACEHCyAHC6sCAQR\u002FIwBBEGsiAyQAAkACQAJAAkACQAJAAkACQCABQiCIpyICQQpqDgoCBAMABAQEBQEBBAsgAaciAikCBEKAgICAgICAgMAAVA0FIAAgAhCbAwwGCyAALQBoQQJGDQUgAaciAigCCCIEIAIoAgwiBTYCBCAFIAQ2AgAgAkEANgIMIAAoAlwhBCAAIAJBCGoiBTYCXCACIAQ2AgwgAiAAQdgAajYCCCAEIAU2AgAgAC0AaA0FIAAQ5gUMBQsgAaciAkEEahAZIABBEGogAiAAKAIEEQAADAQLIAAgAacQmwMMAwsgAyACNgIAIwBBEGsiACQAIAAgAzYCDEGQ0wRBv5MBIAMQkwQgAEEQaiQACxABAAsgAEEQaiACIAAoAgQRAAALIANBEGokAAt\u002FAQJ\u002FAkAgASgCSCICBEAgASgCZCIDRQ0BA0AgAiADT0UEQCAAIAIpAwAQISACQQhqIQIgASgCZCEDDAELCyAAQRBqIAEoAkggACgCBBEAACABQQA2AkgLIAAgASkDQBAhIAAgASkDEBAhDwtB5PUAQajsAEHwkgFBhtQAEAAAC2UBBH8DQCACIAVKBEAgASAFaiIGLQAAIgRBE2ogBCAEQbMBSxsgBCADG0ECdCIEQeCuAWotAAAhByAEQeOuAWotAABBF2tB\u002FwFxQQRNBEAgACAGKAABEMcBCyAFIAdqIQUMAQsLC0gBA38gAkEAIAJBAEobIQIDQCACIANGBEBBAA8LIAEgA2ohBCADQQF0IQUgA0EBaiEDIAAgBWovAQAgBC0AAGsiBEUNAAsgBAtYAQJ\u002FIAEEQAJAIAAoAgggACgCBCIDIAFqSQ0AIAEQjwIiAUUNACAAIANBCGo2AgQgACAAKAIAQQFqNgIAIAEhAgsgAg8LQc2HAUGo7ABBtQ1B9OsAEAAAC0wBA38gACgCIEEYaiEBAkADQCABIgMoAgAiAkUNASACQQxqIQEgACACRw0ACyADIAAoAgw2AgAPC0GC9gBBqOwAQbPvAkH4zAAQAAAL4wQBCX8gACAAQeAAaiIENgJkIAAgBDYCYCAAQdQAaiECIABB0ABqIQcgAEHkAGohBSAAKAJUIQMDQCAHIAMiAUYEQAJAAkADQAJAIAcgAigCACIBRgRAIAUhAQNAIAEoAgAiASAERg0CIAAgAUEIa0ENEN0DIAFBBGohAQwACwALIAFBCGsiAygCAEEATA0CIAFBBGsiAiACLQAAQQ9xOgAAIAAgA0EOEN0DIAFBBGohAgwBCwsgAEECOgBoIABB2ABqIQMDQCAEIAUoAgAiAUcEQCABQQRrLQAAQQ9xIgJBBEtBASACdEETcUVyBEAgASgCACICIAEoAgQiBzYCBCAHIAI2AgAgAUEANgIAIAMoAgAiAiABNgIEIAEgAzYCBCABIAI2AgAgAyABNgIADAIFIAAgAUEIaxCLBQwCCwALCyAAQQA6AGggAEEQaiEEIAAoAlwhAQNAIAEgA0cEQCABQQRrLQAAQQ9xIgVBBEtBASAFdEETcUVyDQMgASgCBCEJIAQgAUEIayAAKAIEEQAAIAkhAQwBCwsgACADNgJcIAAgAEHYAGo2AlgPC0HmhAFBqOwAQY0tQarAABAAAAtBzvMAQajsAEHFLUHjJxAAAAsgAUEEayIGLQAAQRBJBEAgASgCBCEDIAAgAUEIayIIQQ8Q3QMgBiAGLQAAQQ9xQRByOgAAIAgoAgANASABKAIAIgYgASgCBCIINgIEIAggBjYCACABQQA2AgAgBCgCACIGIAE2AgQgASAENgIEIAEgBjYCACAEIAE2AgAMAQsLQeuGAUGo7ABB6ixBs8wAEAAACxgBAX8gAacoAiAiAwRAIAAgAyACEQAACwsyACAAIAEQqgIiAUKAgICAcINCgICAgMB+UQR+IABB2cMAQQAQigJCgICAgOAABSABCwsMACAAIAEQtQNBAEwLSAEBfyMAQRBrIgIkAAJAIAFBIHEEQCAAEHAMAQsgAkH+N0GmO0H5ECABQQFxGyABQQJxGzYCACAAQZArIAIQRAsgAkEQaiQAC8oIAhN\u002FAX4jAEEgayILJABCgICAgOAAIRYCQCAAIAtBDGogARCuAiIHRQ0AIAcoAgQhECAHKAIIQYCAgIB4RgRAIAdBADYCBAsjAEGAAWsiAyQAIANB6ABqIgYgBygCACIMQZUDEJ0CAn8CQAJAIAcoAggiBUH\u002F\u002F\u002F\u002F\u002FB0YEQCAGQbvzABDeAgwBCyAHKAIEBEAgA0HoAGpBLRAOIAcoAgghBQsgBUH+\u002F\u002F\u002F\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\u002FcSACQcAAciAEKAIAQQBIGwtB\u002FwFxEA4LIAhBAWohCAwBCwshBgNAAkACQAJAAkACQAJAAkACQAJAAkACQCAPIAoiAkoEQCACIAIgDGoiCS0AACIEQQJ0QeCuAWotAAAiEGohCgJAAkACQAJAAkACQAJAAkACQAJAIARBswFrDhQWBQ8EAQEBAQIBAQEDAwMDDQwWCwALIARBEWsiAkEfSw0QQQEgAnRBgIDQjHxxDREgAkUNDSACQQVHDRAgA0F\u002FNgIYIANCyfqAgOABNwMQIANBnAZqIAogA0EQahAjRQ0TIANBwAZqIgQgAy0ArAYQDiADKAKkBiEKIAMoAqgGIgJBf0YgAiAGRnINFSABIAEoAtwCQQFqNgLcAiAEQcYBEA4gBCACEBsgAiEGDBULIAAgASAJKAABIgIgCS8ABSAEIANBwAZqQQBBACAKEPUEIQogACACEBAMFAsgCS8ACSEFIAkoAAEhAiABKAKkAiAJKAAFQRRsaiIEIAQoAgBBAWs2AgAgACABIAIgBUG7ASADQcAGaiAMIAQgChD1BCEKIAAgAhAQDBMLIAAgA0HYBmogA0HcBmogASAJKAABIgcgCS8ABSIJEPQEIgVBAEgNBSADKALcBiIIRQ0EAkACQAJAAkACQAJAIARBvwFrDgQAAAECAwsCQAJAAkAgCEEFaw4FAAECBgIFCyAEQcABRgRAIANBwAZqQREQDgsgA0HABmoiAiADKALYBiAFEPoBIAJBxAAQDgwGCyADQcAGaiICIAMoAtgGIAUQ+gEgAkEsEA4gBEHAAUYNBSACQQ8QDgwFCyAEQcABRgRAIANBwAZqQREQDgsgA0HABmoiAiADKALYBiAFEPoBIAJBLBAOIAJBJBAOIAJBABAmDAQLAkACQAJAIAhBBWsOBQABAQICBAsgA0HABmoiAiADKALYBiAFEPoBIAJBxQAQDgwFCyADQcAGaiICQTAQDiACIAAgBxAWEBsgAkEAEA4MBAsgACAHEPMEIgRFDQkgACADQdgGaiADQdwGaiABIAQgCRD0BCEFIAAgBBAQIAVBAEgNCSADKALcBkEIRw0HIANBwAZqIgIgAygC2AYgBRD6ASACQRsQDiACQR4QDiACQSwQDiACQR0QDiACQSQQDiACQQEQJiACQQ4QDgwDCyADQcAGaiICIAMoAtgGIAUQ+gEgAkGyARAODAILEAEACyADQcAGaiICQTAQDiACIAAgBxAWEBsgAkEAEA4LIAAgBxAQDBILIAkoAAEiAkEASA0BIAIgASgCrAJODQEgASgCpAIgAkEUbGogAygCxAYgEGo2AggMDwtBACEFQQAhAiAJLwABIhAgASgC8AFHDQoDQCABKAKIASACSgRAIAEoAoABIAJBBHRqIgcoAgxBAE4EQCADQcAGaiIEQQMQDiAEIAcoAgxBCHUQGyAEQdwAEA4gBCACQf\u002F\u002FA3EQJgsgAkEBaiECDAELCwNAIAEoAnwgBUoEQAJAIAEoAnQgBUEEdGoiBCgCBA0AIAQoAgxBAEgNACADQcAGaiICQQMQDiACIAQoAgxBCHUQGyACQdkAEA4gAiAFQf\u002F\u002FA3EQJgsgBUEBaiEFDAELCwJAIAEoApQDRQRAQX8hCQwBCyABQX8Q0QMhCSADQcAGaiICQQgQDiACQeoAEA4gAiAJEBsgASAJQQEQYxogASABKALQAkEBajYC0AILQQAhCANAAkACQCABKAL0ASAISgRAQQAhAiABKALAAiIEQQAgBEEAShshByABKAL8ASAIQQR0aiIELQAEIgVBAXEhCwJ\u002FA0AgAiAHRwRAIAEoAsgCIAJBA3RqKAIEIg4gBCgCDEYEQEEAIQsgAiEHQQIMAwsgDkHTAGtBAU0EQCADQcAGaiIFQd4AEA4gBSACQf\u002F\u002FA3EQJkEBIQsgAiEHQQEMAwUgAkEBaiECDAILAAsLIAEoAiRBAEchDiAFQQJxIhFFIAQoAgBBAE5xDQIgA0HABmoiAkE+EA4gAiAAIAQoAgwQFhAbIAJBgH9Bgn8gBUEEcRtBACARGyAOckGDAXEQDkEACyEFIAtFIAQoAgAiAkEASHENAgJAIAJBAE4EQCADQcAGaiICQQMQDiACIAQoAgAQGyAEKAIMQf0ARw0BIAJBzQAQDiACQRYQGwwBCyADQcAGakEGEA4LAkACQAJAIAVBAWsOAgEAAgsgA0HABmoiAkHfABAOIAIgB0H\u002F\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\u002FRgRAIAAgAiADKALEBkEEa0EEEO4CRQ0dCyADQcAGaiAHEA4gBCECDB0LIANCqYCAgHA3A3AgA0GcBmogBCADQfAAahAjRQ0TIAQhAiADKAKoBiIEQQBIDRwgAyAENgLYBgwcCyADQqyBgIBwNwOgASADQZwGaiAEIANBoAFqECMEQAJAIAMoAqgGIgJBAEgEQCADKALYBiECDAELIAMgAjYC2AYLIAEgAygCxAYgAhAuIANBwAZqQfMBEA4MGAsgA0F\u002FNgKYASADQq2BgICg7Ro3A5ABIANBnAZqIAQgA0GQAWoQI0UNAAJAIAMoAqgGIgVBAEgEQCADKALYBiEFDAELIAMgBTYC2AYLIAEgAygCxAYgBRAuIANBwAZqQfMBEA4gAygCrAZBAXMhBQwYCyADQurWgYBwNwOAASADQZwGaiAEIANBgAFqECNFDREgBUEKRiEJDA0LAkAgBigAASIGQYCAgIB4ckGAgICAeEYNACADQo2BgIBwNwPgASADQZwGaiAEIANB4AFqECNFDQAgAygCqAYiAkEATgRAIAMgAjYC2AYLIANCjoCAgHA3A9ABIANBnAZqIAMoAqQGIANB0AFqECMEQCADKAKoBiICQQBIDRcgAyACNgLYBgwXCyABIAMoAsQGIAMoAtgGEC4gA0HABmpBACAGaxDOAwwWCyADQo6AgIBwNwPAASADQZwGaiAEIANBwAFqECMEQCADKAKoBiICQQBIDRYgAyACNgLYBgwWCyADQurWgYBwNwOwASADQZwGaiAEIANBsAFqECMEQCAGQQBHIQkMDQsgASADKALEBiADKALYBhAuIANBwAZqIAYQzgMgBCECDBkLIAYoAAEiAkH\u002FAUoNDyABIAMoAsQGIAMoAtgGEC4gA0HABmoiBiAFQcMAa0H\u002FAXEQDiAGIAJB\u002FwFxEA4gBCECDBgLIAYoAAEhAiADQo6AgIBwNwPwASADQZwGaiAEIANB8AFqECMEQCAAIAIQECADKAKoBiICQQBIDRQgAyACNgLYBgwUCyACQS9HDQ4gASADKALEBiADKALYBhAuIANBwAZqQcEBEA4gBCECDBcLIANCyYCAgHA3A6gCIANC2Lb5gnA3A6ACIANBnAZqIgUgBCICIANBoAJqECMNFiADQX82ApgCIANCgYSQgJAJNwOQAiAFIAIgA0GQAmoQIw0WIANBfzYCiAIgA0KGjqjIkAk3A4ACIAUgAiADQYACahAjDRYMDQsgA0KOgICAcDcD8AIgA0GcBmogBCADQfACahAjBEAgAygCqAYiAkEASA0SIAMgAjYC2AYMEgsgA0KogICAcDcD4AIgA0GcBmogBCADQeACahAjBEACQCADKAKoBiICQQBIBEAgAygC2AYhAgwBCyADIAI2AtgGCyABIAMoAsQGIAIQLiADQcAGakEpEA4MEgsgA0Lq1oGAcDcD0AJBACEJIANBnAZqIgUgBCADQdACahAjDQggA0KsgYCAcDcDwAIgBSAEIANBwAJqECMEQAJAIAMoAqgGIgJBAEgEQCADKALYBiECDAELIAMgAjYC2AYLIAEgAygCxAYgAhAuIANBwAZqQfIBEA4MEgsgA0F\u002FNgK4AiADQq2BgICg7Ro3A7ACIANBnAZqIAQgA0GwAmoQI0UNDAJAIAMoAqgGIgVBAEgEQCADKALYBiEFDAELIAMgBTYC2AYLIAEgAygCxAYgBRAuIANBwAZqQfIBEA4gAygCrAZBAXMhBQwSCyADQX82AogDIANCw\u002FaAgOABNwOAAyADQZwGaiAEIANBgANqECNFDQsCQCADKAKoBiICQQBIBEAgAygC2AYhAgwBCyADIAI2AtgGCyABIAMoAsQGIAIQLiADQcAGaiICIAMtAKwGEA4gAiADKAK8BhAbDBALIANBfzYCuAMgA0LZuP2CcDcDsAMgA0GcBmogBCADQbADahAjRQ0KIAMoAqgGIgJBAE4EQCADIAI2AtgGCyADQo6AgIBwNwOgAyADKAKsBiIFQQFqIQYCQCADQZwGaiADKAKkBiICIANBoANqECMEfyADKAKoBiICQQBOBEAgAyACNgLYBgsgAyADKAKwBjYClANBfyEEIANBfzYCmAMgAyAFQQFrNgKQAyADQZwGaiADKAKkBiICIANBkANqECNFDQEgAygCpAYhAiADKAKoBgVBfwshBCAGIQULIAEgAygCxAYgAygC2AYQLiADQcAGaiAFIAMoArAGEFkgBEEASA0TIAMgBDYC2AYMEwsgBi8AASICQf8BSw0JIANCjoCAgHA3AswEIAMgAjYCyAQgA0KRpYKAkAs3A8AEAkAgA0GcBmoiBiAEIANBwARqECNFBEAgA0KOgICAcDcDsAQgAyACNgKsBCADQdkANgKoBCADQo+hgoCQAjcDoAQgBiAEIANBoARqECNFDQELAkAgAygCqAYiBUEASARAIAMoAtgGIQUMAQsgAyAFNgLYBgsgASADKALEBiAFEC4gA0HABmoiBEGUAUGTASADKAKsBkF9cUGQAUYbEA4gBCACQf8BcRAODA8LIANCjoCAgHA3ApQEIAMgAjYCkAQgA0KRgICAkAs3A4gEIANChICAgOATNwOABCADQZwGaiAEIANBgARqECMEQAJAIAMoAqgGIgVBAEgEQCADKALYBiEFDAELIAMgBTYC2AYLIAEgAygCxAYgBRAuAkAgAygCvAZBL0YEQCADQcAGakHBARAODAELIANBwAZqIgRBBBAOIAQgAygCvAYQGwsgA0HABmoiBEGVARAOIAQgAkH\u002FAXEQDgwPCyADQo6AgIBwNwL0AyADIAI2AvADIANCkYCAgJALNwPoAyADQoGAgIDgEzcD4AMgA0GcBmogBCADQeADahAjBEACQCADKAKoBiIFQQBIBEAgAygC2AYhBQwBCyADIAU2AtgGCyABIAMoAsQGIAUQLiADQcAGaiIEIAMoArQGEM4DIARBlQEQDiAEIAJB\u002FwFxEA4MDwsgA0KOgICAcDcD2AMgAyACNgLUAyADQdkANgLQAyADQp6BgICQAjcDyAMgA0LYtvmCcDcDwAMgA0GcBmogBCADQcADahAjBEACQCADKAKoBiIFQQBIBEAgAygC2AYhBQwBCyADIAU2AtgGCyABIAMoAsQGIAUQLiADQcAGaiIEIAMoAqwGIAMoArAGEFkgBEGVARAOIAQgAkH\u002FAXEQDgwPCyABIAMoAsQGIAMoAtgGEC4gA0HABmpB2AAgAhBZIAQhAgwSCyAGLwABIQIgASADKALEBiADKALYBhAuIANBwAZqIAUgAhBZIAQhAgwRCyADIAYvAAEiAjYC5AQgA0F\u002FNgLoBCADIAVBAWs2AuAEIANBnAZqIAQgA0HgBGoQIwRAAkAgAygCqAYiBEEASARAIAMoAtgGIQQMAQsgAyAENgLYBgsgASADKALEBiAEEC4gA0HABmogBUEBaiACEFkMDQsgASADKALEBiADKALYBhAuIANBwAZqIAUgAhBZIAQhAgwQCyABIAogCCAEIANB2AZqEKUCIQQMBgsgASgC1AIhCyABKALMAiEGQQAhCUEAIQgDQAJAIAkgC0gEQEEDIQogBigCACICQeoAa0EDTwRAIAJB7QFHDQJBASEKCwJAIAEoAqQCIAYoAgxBFGxqKAIMIAYoAggiBWsiBEGAf0ggBCAKQf8AakpyRQRAIAZBATYCBCACQe0BRgRAQewBIQIgBkHsATYCAAwCCyAGIAJBgAFqIgI2AgAMAQsgAkHsAEcgBEGAgAJqQf\u002F\u002FA0tyDQIgBkLtgYCAIDcCAEECIQpB7QEhAgsgAygCwAYgBWpBAWsgAjoAACAGKAIEIgIgAygCwAYgBWpqIgQgBCAKaiADKALEBiAFIApqIAJqaxCrASADIAMoAsQGIAprNgLEBkEAIQQgASgCrAIiAkEAIAJBAEobIQcgASgCpAIhAgNAIAQgB0YEQCABKALUAiELIAYhByAJIQQDQAJAIAsgBEEBaiIETARAQQAhAiABKALgAiIEQQAgBEEAShshBANAIAIgBEYNAiAFIAEoAtgCIAJBA3RqIgcoAgAiDEkEQCAHIAwgCms2AgALIAJBAWohAgwACwALIAciAkEQaiEHIAIoAhgiDCAFTA0BIAIgDCAKazYCGAwBCwsgCEEBaiEIDAMLIAUgAigCDCILSARAIAIgCyAKazYCDAsgAkEUaiECIARBAWohBAwACwALIAEoAswCIQIgCARAQQAhBQNAIAUgC0gEQCABKAKkAiACKAIMQRRsaigCDCACKAIIIgRrIQYCQAJAAkACQCACKAIEQQFrDgQAAQMCAwsgAygCwAYgBGogBjoAACABKALUAiELDAILIAMoAsAGIARqIAY7AAAMAQsgAygCwAYgBGogBjYAAAsgAkEQaiECIAVBAWohBQwBCwsgASgCzAIhAgsgACgCECIEQRBqIAIgBCgCBBEAACABQQA2AswCIAAoAhAiAkEQaiABKAKkAiACKAIEEQAAIAFBADYCpAIgASgC2AIhAgJAIAEtAG5BAnEEQCACIQUMAQtBACEFIAJFDQAgASgC8AIhByABKAIAIAFB9AJqIggQgwJBACECQQAhCgNAIAEoAtgCIQUgAiABKALgAk4NAQJAIAUgAkEDdGoiBigCBCIEQQBIIAQgB0ZyDQAgBigCACIGIAprIgVBAEgNAAJAIAQgB2siB0EBaiIKQQRLIAVBMktyRQRAIAggCiAFQQVsakEBakH\u002FAXEQDgwBCyAIQQAQDiAIIAUQsQUgCCAHQQF0IAdBH3VzELEFCyAGIQogBCEHCyACQQFqIQIMAAsACyAAKAIQIgJBEGogBSACKAIEEQAAIAFBADYC2AIgDRCJASANIAMpAtAGNwIQIA0gAykCyAY3AgggDSADKQLABjcCACABQQE2AqACIAEoAowCBEAgABBwDCALIAEoAoACIQcgAyABKAKEAiIENgKcBiADIAAgBEEBdBAkIgY2AqQGIAZFDR9BACECIARBACAEQQBKGyEFA0AgAiAFRwRAIAYgAkEBdGpB\u002F\u002F8DOwEAIAJBAWohAgwBCwsgA0EANgKsBiADIAAgBEECdBAkIgI2AqgGAkAgAkUNACADQgA3ArAGIANBADYCoAYgACADQZwGakEAQQBBAEF\u002FELABDQADQCADKAKsBiECAkACQAJAIAMoArAGIgRBAEoEQCADIARBAWsiBDYCsAYgByACIARBAnRqKAIAIgJqIgUtAAAiBkEKakH\u002FAXFBCk0EQCADIAI2AtQFIAMgBjYC0AUgAEG+iwEgA0HQBWoQOgwGCyACIAZBE2ogBiAGQbMBSxtBAnRB4K4BaiIKLQAAaiIJIAMoApwGSgRAIAMgAjYC5AUgAyAGNgLgBSAAQdmKASADQeAFahA6DAYLIAMoAqQGIgsgAkEBdGovAQAhDSAKLQABIQQCQAJAAkAgCi0AA0ENaw4DAAEAAgsgBS8AASAEaiEEDAELIAQgBmpB7gFrIQQLIAQgDUoEQCADIAI2AvQFIAMgBjYC8AUgAEGfiwEgA0HwBWoQOgwGCyADKAKoBiIMIAJBAnRqKAIAIQgCQCAKLQACIARrIA1qIgQgAygCoAZMDQAgAyAENgKgBiAEQf\u002F\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\u002F31xIAEvAVhBCHRBgAJxciIEOwARIAIgBEH\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\u002F\u002F8BSnINASAEQu2BgIAgNwIAIANBwAZqIgJB7QEQDiACQQAQJiAGIQIgACAHIAMoAsQGQQJrQQIQ7gINAwwCCyAFQeoAa0ECSyAPIAxBf3NqIgJBgAFqQf8BS3JFBEAgBEEBNgIEIAQgBUGAAWoiBDYCACADQcAGaiIFIARB\u002FwFxEA4gBSACQf8BcRAOIAYhAgwDCyAJIAJBgIACakH\u002F\u002FwNLcg0AIARC7YGAgCA3AgAgA0HABmoiBEHtARAOIAQgAkH\u002F\u002FwNxECYgBiECDAILIANBwAZqIgIgBUH\u002FAXEQDiACIAcoAgwgAygCxAZrEBsgBiECIAcoAgxBf0cNASAAIAcgAygCxAZBBGtBBBDuAg0BCwsgA0HABmoQiQEMDgtB3BdBqOwAQcX7AUGeJhAAAAsgCSgAASEGIAEgASgC3AJBAWo2AtwCDAgLIANBwAZqQccAEA4MCQsgCSgAASECIANBwAZqIgRBwQAQDiAEIAIQGwwICyADQX82AkggA0Lq1oGA4AE3A0AgA0GcBmogCiADQUBrECNFDQUCQCADKAK0BiIHQQBIDQAgByABKAKsAk4NACADKAKoBiEEIAMoAqQGIRggAygCrAYhDiAHIQUDQCABKAKAAiERIAEoAqQCIRJBACELA0ACQCALQRRGDQAgEiAFQRRsaigCBCECA0AgAiARaiITLQAAIgVBtgFGIAVBxgFGcgRAIAJBBWohAgwBBSAFQewARw0CIAtBAWohCyATKAABIQUMAwsACwALCyADQo6AgIBwNwM4IAMgDjYCNCADQRE2AjAgA0GcBmogAiADQTBqECMEQCADKAK0BiEFDAELCyADQX82AiQgAyAONgIgIANBnAZqIAIgA0EgahAjRQ0GIAEgASgC0AJBAWo2AtACIAEgB0F\u002FEGMaIAEgAygCtAYiBUEBEGMaIANBwAZqIgIgDkH\u002FAXEQDiACIAUQGyAYIQogBEF\u002FRiAEIAZGcg0IIAEgASgC3AJBAWo2AtwCIAJBxgEQDiACIAQQGyAEIQYMCAtBgRhBqOwAQbL3AUGFKBAAAAsgASgCzAEgCS8AASIFQQN0akEEaiECA0AgAigCACICQQBIDQcgASgCdCACQQR0aiIEKAIEIAVHDQcgBC0ADEEEcQRAIANBwAZqIgdB6QAQDiAHIAJB\u002F\u002F8DcRAmCyAEQQhqIQIMAAsACyABKALMASAQQQN0akEEaiECA0AgAigCACICQQBIDQYgASgCdCACQQR0aiIEKAIEIBBHDQYgASgCnAEgAkcEQCADQcAGaiIHIgUgBCgCDEEEdkEPcUEBa0EBTQR\u002FIAdBAxAOIAcgBCgCDEEIdRAbQdkABUHhAAsQDiAFIAJB\u002F\u002F8DcRAmCyAEQQhqIQIMAAsACwJAAkACQCAEQeoAaw4GBAQCBAEDAAsgBEExRgRAIAkvAAEhBCABIAkvAAMiBRDxBCADQcAGaiICQTEQDiACIAQQJiACIAEoAswBIAVBA3RqLwEEQQFqQf\u002F\u002FA3EQJgwHCyAEQTJHBEAgBEHNAEcNBSAJKAABRQ0HDAULIAEgCS8AASICEPEEIANBwAZqIgRBMhAOIAQgASgCzAEgAkEDdGovAQRBAWpB\u002F\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\u002FIAIrA\u002FABIgWZRAAAAAAAAOBBYwRAIAWqDAELQYCAgIB4CyEQAn8gAisD6AEiBZlEAAAAAAAA4EFjBEAgBaoMAQtBgICAgHgLIQkCfyACKwPgASIFmUQAAAAAAADgQWMEQCAFqgwBC0GAgICAeAshCgJ\u002FIAIrA9gBIgWZRAAAAAAAAOBBYwRAIAWqDAELQYCAgIB4CyEHAn8gAisD0AEiBZlEAAAAAAAA4EFjBEAgBaoMAQtBgICAgHgLIQsCfyACKwPIASIFmUQAAAAAAADgQWMEQCAFqgwBC0GAgICAeAshDCAEQQFxIQgCfyACKwPAASIFmUQAAAAAAADgQWMEQCAFqgwBC0GAgICAeAshBkEAIQMCQCAIRQ0AIARBD3EhCAJAAkACQAJAIA0OBAABAgMECyACIAY2AmAgAiALNgJUIAIgBkEfdkEEcjYCXCACIAxBA2xBoMgBajYCWCACIA9BA2xBgMgBajYCUCACQZACakHAAEGHkgEgAkHQAGoQSCEDDAMLIAIgBjYCgAEgAiALNgJ4IAIgBkEfdkEEcjYCfCACIAxBA2xBoMgBajYCdCACIA9BA2xBgMgBajYCcCACQZACaiIGQcAAQbbrACACQfAAahBIIQMgCEEDRw0CIAMgBmpBIDoAACADQQFqIQMMAgsgAiAGNgKgASACQZACaiIIQcAAQY7rAEGI6wAgBkGQzgBJGyACQaABahBIIQMgAiALNgKUASACIAxBAWo2ApABIAMgCGpBwAAgA2tBpvEAIAJBkAFqEEggA2ohAwwBCyACIAs2ArQBIAIgDEEBajYCsAEgAiAGNgK8ASACIAZBH3ZBBHI2ArgBIAJBkAJqIgZBwABBp+sAIAJBsAFqEEghAyAIQQNHDQAgAyAGakGswAA7AAAgA0ECaiEDCwJAIARBAnFFDQACQAJAAkACQCANDgQAAQIDBAsgAiAJNgIIIAIgCjYCBCACIAc2AgAgAkGQAmogA2pBwAAgA2tBkfIAIAIQSCADaiEDDAMLIAIgCTYCKCACIAo2AiQgAiAHNgIgIAJBkAJqIgcgA2pBwAAgA2tBkfIAIAJBIGoQSCADaiIDIAdqQS1BKyAOQQBIGzoAACACIA4gDkEfdSIEcyAEayIEQTxuIgY2AhAgAiAEIAZBPGxrNgIUIAcgA0EBaiIEakE\u002FIANrQZPrACACQRBqEEggBGohAwwCCyACIBA2AjwgAiAJNgI4IAIgCjYCNCACIAc2AjAgAkGQAmogA2pBwAAgA2tBsfAAIAJBMGoQSCADaiEDDAELIAIgCTYCSCACIAo2AkQgAkHBAEHQACAHQQxIGzYCTCACIAdBC2pBDG9BAWo2AkAgAkGQAmogA2pBwAAgA2tB5vQAIAJBQGsQSCADaiEDCyAAIAJBkAJqIAMQ6gEhEQsgAkHQAmokACARCzcCA38BfiMAQRBrIgAkACAAEI0GIAApAwAhAyAAKAIIIQIgAEEQaiQAIAJB6AdtrCADQugHfnwLhwEBAXwgACADKQMAEKgBIgJFBEBCgICAgOAADwsgAhAHIQQgACACEDEgBL0iAQJ\u002FIASZRAAAAAAAAOBBYwRAIASqDAELQYCAgIB4CyIAt71RBEAgAK0PC0KAgICAwH4gAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwvxAQIGfwF+IABBCBAkIgRFBEBBfw8LIARCATcCACACpyEGIAJCIIinQXVJIQgDQAJAAkAgA0ECRg0AIAAgACkDMCADQS5yEEciCUKAgICAcINCgICAgOAAUgRAIABBEBAkIgUNAiAAIAkQDAtBfyEHIANFDQAgACABKQMAEAwLIAAoAhAgBBD\u002FBCAHDwsgBCAEKAIAQQFqNgIAIAUgBDYCCCAIRQRAIAYgBigCAEEBajYCAAsgBSACNwMAIAlCgICAgHBaBEAgCacgBTYCIAsgACAJQS9BARCYAyABIANBA3RqIAk3AwAgA0EBaiEDDAALAAt\u002FAQV\u002FIABBEGohBCABQQxqIQUgASgCECECA0AgAiAFRkUEQCACKAIEIQYgACACKQMQECEgACACKQMYECEgACACKQMgECEgACACKQMoECEgBCACIAAoAgQRAAAgBiECDAELCyABKAIIIgMEQCAAIAMQzgELIAQgASAAKAIEEQAAC+EDAgR\u002FAn4jAEFAaiICJAAgAiAAIAEQsQIiBjcDOAJAAkAgASgCIARAIAZCgICAgHCDQoCAgIDgAFENASAAIAEpAyhCgICAgDBBASACQThqEBwhBiAAIAIpAzgQDCAAIAYQDAwCCyACIAEoAmRBCGsiAykDADcDKCADQoCAgIAwNwMAIAAgBhAMQQAhAyAAIAApA1AgACACQShqQQAQ3gEhBiAAIAIpAygQDCAGQoCAgIBwg0KAgICA4ABRDQADQAJAIANBAkcEQCACQRBqIANBA3RqIAAgACkDMCADQTFqEEciBzcDACAHQoCAgIBwg0KAgICA4ABSDQEgA0EBRgRAIAAgAikDEBAMCyAAIAYQDAwDCyACQoCAgIAwNwMIIAJCgICAgDA3AwAgACAGIAJBEGogAhCpAiEFIAAgBhAMQQAhAwNAIANBAkZFBEAgACACQRBqIANBA3RqKQMAEAwgA0EBaiEDDAELCyAFDQIMAwsgASABKAIAQQFqNgIAIAenIAE2AiAgA0EBaiEDDAALAAsgACgCECIDKQOAASEGIANCgICAgCA3A4ABIAIgBjcDMCAAIAEpAzBCgICAgDBBASACQTBqEBwhBiAAIAIpAzAQDCAAIAYQDAsgAkFAayQAC5UDAgh\u002FAX4jAEEwayIGJAACQCABQoCAgIBwVA0AIAGnIgQvAQZBLUcNACAEKAIgIgRFDQAgBCgCAA0AIAJCIIinQXVPBEAgAqciBSAFKAIAQQFqNgIACyAAIARBGGogAhAdIAQgA0EBaiIFNgIAAkAgBUECRw0AIAQoAhQNACAAKAIQIgUoApgBIgdFDQAgACABIAJBACAFKAKcASAHETUACyAEQQRqIgcgA0EDdGoiCCgCBCEEIANBAEetQoCAgIAQhCEBA0AgBCAIRkUEQCAEKAIEIQsgBiAEKQMINwMAIAYgBCkDEDcDCCAEKQMYIQwgBiACNwMgIAYgATcDGCAGIAw3AxAgAEE8QQUgBhD4AiAEKAIAIgkgBCgCBCIKNgIEIAogCTYCACAEQgA3AgAgACgCECAEEKgCIAshBAwBCwsgB0EBIANrQQN0aiIFKAIEIQQDQCAEIAVGDQEgBCgCACIHIAQoAgQiAzYCBCADIAc2AgAgBEIANwIAIAAoAhAgBBCoAiADIQQMAAsACyAGQTBqJAALigMCA34CfyMAQRBrIgIkAEKAgICAMCEGAkACQCAAIAJBCGogACABECAiARAvDQACQCACKQMIIgdCAFcEQAwBCyAHQgF9IQUCQAJAAkACQCABIAJBBGogAhCPAUUNACAHIAIoAgAiCK1SDQAgAachCSACKAIEIQMgBEUNASADKQMAIQYgAyADQQhqIAhBA3RBCGsQqwEMAgsCQCAEBEAgACABQgAQTiIGQoCAgIBwg0KAgICA4ABRDQYgACABQgBCASAFQQEQ8wJFDQEMBgsgACABIAUQbCIGQoCAgIBwg0KAgICA4ABRDQULIAAgASAFEIUCQQBODQIMBAsgAyAIQQN0akEIaykDACEGCyAJIAkoAihBAWs2AigLIAdCgYCAgAhUDQBCgICAgMB+IAW5vSIFQoCAgIDAgYD8\u002FwB9IAVC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbIQULIAAgAUEwIAUQOUEATg0BCyAAIAYQDEKAgICA4AAhBgsgACABEAwgAkEQaiQAIAYLbgEEf0F\u002FIQZBfyACKAIAIgRBAXYgBGogBEGp1arVeksbIQUCQAJAIAMgASgCACIHRgRAIAAgBRAkIgBFDQIgACADIAQQHhoMAQsgACAHIAUQxQIiAEUNAQsgASAANgIAIAIgBTYCAEEAIQYLIAYLfwEEfyABLQAAQdsARgRAIAFBAWoiAxA9QQFrIQIgACgCECgCOCEEQcsBIQEDQCABQdgBRwRAAkAgBCABQQJ0aigCACIFKAIEQf\u002F\u002F\u002F\u002F8HcSACRw0AIAVBEGogAyACEGgNACAAIAEQFg8LIAFBAWohAQwBCwsQAQALIAAgARC2AQswAANAIAFBgAFJRQRAIAAgAUGAAXJB\u002FwFxEA4gAUEHdiEBDAELCyAAIAFB\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\u002F\u002F\u002FwdxNgJUIABB4ABqIQAMAAsACyAFKAIQDQQgAygCVCIGQRh2IgRBBUtBASAEdEE0cUUiB3INBSAEQQVLIAdyDQYgBkGAgIBwcUGAgIAgRgRAIAMoAoABIQMLAkACQCADKQOIASIBQoCAgIBwg0KAgICAMFIEQCABQiCIp0F0Sw0BDAILIAMgACADQZABahC3AiICNwOIAUKAgICA4AAhASACQoCAgIBwg0KAgICA4ABRDQEgBUEANgIcAkAgACADQQAgBUEcaiIEIAVBEGoQtAVBAEgEQCAFKQMQIgGnIQYgAUIgiKdBdUkhBwNAIAQoAgAiBARAIAQoAlQiCEGAgIB4cUGAgIAYRw0NIARBAToAoAEgBCAIQf\u002F\u002F\u002FwdxQYCAgChyNgJUIAdFBEAgBiAGKAIAQQFqNgIACyAEIAM2AoABIAQgATcDqAEgBEHgAGohBAwBCwsgACABEAwgAy0AV0EYdEGAgIAoRw0MIAMtAKABRQ0NIAAgACADKQOYAUKAgICAMEEBIANBqAFqEBwQDAwBCyADKAJUIgRBgICAcHFBgICAIEcNDSADLQCgAQ0OIAMoAnRFBEAgBEGAgIAocUGAgIAoRw0QIAVCgICAgDA3AwggACAAIAMpA5ABQoCAgIAwQQEgBUEIahAcEAwLIAUoAhwNEAsgAykDiAEiAUIgiKdBdUkNAQsgAaciACAAKAIAQQFqNgIAC0KAgICA4AAgASABQoCAgIBwg0KAgICA4ABRGyECDAELIAAgARAMIABBiuYAQQAQEkKAgICA4AAhAgsgBUEgaiQAIAIPC0Gy+gBBqOwAQefcAUG+1wAQAAALQfr3AEGo7ABB7NwBQb7XABAAAAtB+fQAQajsAEHy3AFBvtcAEAAAC0Hc+gBBqOwAQfXcAUG+1wAQAAALQdz6AEGo7ABB0+EBQc3XABAAAAtB0PcAQajsAEHj4QFBzdcAEAAAC0G2+wBBqOwAQevhAUHN1wAQAAALQec4QajsAEHs4QFBzdcAEAAAC0GE+wBBqOwAQfLhAUHN1wAQAAALQeY4QajsAEHz4QFBzdcAEAAAC0G2+wBBqOwAQfbhAUHN1wAQAAALQfn0AEGo7ABB\u002FOEBQc3XABAAAAtTACMAQRBrIgQkAEKAgICAMCEBIAQgAkEASgR+IAMpAwAFQoCAgIAwCzcDCCAAIAAgBSkDCEKAgICAMEEBIARBCGoQHBAMIARBEGokAEKAgICAMAvuAwEFfyMAQRBrIgYkAAJAAkACQAJ\u002FIAAoAhAiBCgCqAEiA0UEQCACLQAAQS5HBEAgACACIAIQPRCXAwwCCyABEIUGIQVBACEDIAAgAhA9IAUgAWtBACAFGyIFakECahAkIgdFDQQgByABIAUQHiIBIAVqQQA6AAACQANAAkAgAi0AAEEuRw0AQQIhAwJAAkAgAi0AAUEuaw4CAAECCyACLQACQS9HDQEgAS0AAEUNAyABEIUGIgNBAWogASADGyIDQYaIARCWBEUNASADQYWIARCWBEUNASADIAEgA0lrQQA6AABBAyEDCyACIANqIQIMAQsLIAEtAABFDQAgARA9IAFqQS87AAALIAEQPSABaiACEIcGIAEhAgwCCyAAIAEgAiAEKAKwASADEQcACyICRQ0BCyAAIAIQtgEiAUUEQCAAKAIQIgBBEGogAiAAKAIEEQAADAELIAAgARDPBSIDBEAgACgCECIEQRBqIAIgBCgCBBEAACAAIAEQEAwCCyAAIAEQECAEKAKsASIBRQRAIAYgAjYCACAAQeiOASAGEMMCIAAoAhAiAEEQaiACIAAoAgQRAAAMAQsgACACIAQoArABIAERAQAhAyAAKAIQIgBBEGogAiAAKAIEEQAADAELQQAhAwsgBkEQaiQAIAMLRQEEfyAAKAIgIgNBACADQQBKGyEDA0AgAiADRgRAQQAPCyACQRRsIQUgAkEBaiECIAUgACgCHGoiBCgCECABRw0ACyAEC1wBBH8gASEDAkADQCACIANNIARBBEtyDQEgAywAACIGQf8AcSAEQQdsdCAFciEFIARBAWohBCADQQFqIQMgBkEASA0ACyAAIAU2AgAgAyABaw8LIABBADYCAEF\u002FC78BAgZ\u002FAX4gAUEYaiEFIAEoAhwhAgNAIAIgBUcEQCACKAIEIQcgAigCCCIDBEAgACADEM4BCyACQRJrLwEAIQMCQAJAIAJBE2siBC0AAEECcQRAIAEoAhAgA0EDdGopAwAiCEIgiKdBdEsNAQwCCyABKAIUIANBA3RqKQMAIghCIIinQXVJDQELIAinIgMgAygCAEEBajYCAAsgAiAINwMAIAJBCGsgAjYCACAEIAQtAABBAXI6AAAgByECDAELCwsrAQF\u002FIAFBEGsiAyAAIAMpAwAgAUEIaykDABCSBSACR61CgICAgBCENwMAC9YHAwR+Bn8CfCABQQhrIgspAwAhAyABQRBrIgopAwAhBQJAAkACQAJAAkACQAJAA0AgBUL\u002F\u002F\u002F\u002F\u002FD4MhBkEHIANCIIinIgkgCUEHa0FuSRsiB0F2RiEMAkACQAJAAkACQANAAkBBByAFIgRCIIinIgEgAUEHa0FuSRsiAUEKaiIIQRFLQQEgCHRBgYgIcUVyDQAgDEUEQCAHQQdGBEAgByEJDA4LIAcNAQsgASAHcg0MIASnIAOnRiEIDA4LIAEgB0YEQCAAIAQgA0EAELQBIQgMDgtBASEIIAFBAkYgB0EDRnEgB0ECRiABQQNGcXINDQJAAkACQAJAAkACQAJAIAFBeUYEQAJAIAcOAgYKAAtBeSEIIAchCSAHQQpqDgQBCwsPBAsgB0F5Rw0GQQAhCCAGIQUgAUEBag4JCwQHDw8PDw8EAQsgAUF5Rw0EIAAgBBCqAiIEQoCAgIBwg0KAgICA4H5SDQEMBAsgAUF2Rw0NIAAgAxCqAiIDQoCAgIBwg0KAgICA4H5RDQMLIAAgBBAMIAAgAxAMQQAhCAwRCyAHQQdHDQYLIAAgBBBlIgRCgICAgHCDQoCAgIDgAFENCyAEIQUgACADEGUiA0KAgICAcINCgICAgOAAUQ0MCyAAIAQgAxCSBSEIDA4LIAYhBSABQQFGDQALIAdBAUcNAQsgA0L\u002F\u002F\u002F\u002F\u002FD4MhAyAEIQUMBAsgASIIQX9HDQAgB0EKaiIBQRFNQQBBASABdEGBiAhxGw0BQX8hCCAHQX5xQXhGDQELIAdBf0cNASAIQX5xQXhGIAhBCmoiAUERTUEAQQEgAXRBgYgIcRtyDQBBfyEHDAELIAAgBEECEJIBIgVCgICAgHCDQoCAgIDgAFENBCAAIANBAhCSASIDQoCAgIBwg0KAgICA4ABSDQEMBQsLIAghCQsgB0F+cUECRiEIIAkhAQsCfyAEQoCAgIBwWgRAQQEgBKcsAAVBAEggCHENARoLQQAhByADQoCAgIBwWgR\u002FIAOnLAAFQQBIBUEACyABQX5xQQJGcQshCCAAIAQQDCAAIAMQDAwECyADIQULIAAgBRAMDAELAkACfAJ8IAFBB0YEQCAJQQAgCUEHRxsNAyAEQoCAgIDAgYD8\u002FwB8vyINIAlBB0YNARogA6e3DAILIAlBB0cgAXINAiAEp7cLIQ0gA0KAgICAwIGA\u002FP8AfL8LIQ4gDSAOYSEIDAILIABBqgEgBCADIAAoAhAoArACESsAIghBAE4NAQsgCkKAgICAMDcDACALQoCAgIAwNwMAQX8PCyAKIAIgCEetQoCAgIAQhDcDAEEAC\u002FQFAgJ+BH8jAEEQayIGJAACQAJAAkACQEEHIAFBEGsiBSkDACICQiCIpyIEIARBB2tBbkkbIgRBB0dBByABQQhrIgcpAwAiA0IgiKciASABQQdrQW5JGyIBQQdHckUEQCAFQoCAgIDAfiACQoCAgIDAgYD8\u002FwB8vyADQoCAgIDAgYD8\u002FwB8v6C9IgJCgICAgMCBgPz\u002FAH0gAkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhs3AwAMAQsgBEF\u002FRyABQX9HcUUEQCAAIAJBAhCSASICQoCAgIBwg0KAgICA4ABRDQIgACADQQIQkgEiA0KAgICAcINCgICAgOAAUQRAIAAgAhAMDAQLQQcgAkIgiKciBCAEQQdrQW5JGyEEQQcgA0IgiKciASABQQdrQW5JGyEBCyAEQXlHIAFBeUdxRQRAIAUgACACIAMQtgIiAjcDAEEAIQEgAkKAgICAcINCgICAgOAAUQ0DDAQLIAAgAhBlIgJCgICAgHCDQoCAgIDgAFENASAAIAMQZSIDQoCAgIBwg0KAgICA4ABRBEAgACACEAwMAwtBByADQiCIpyIBIAFBB2tBbkkbIgFBByACQiCIpyIEIARBB2tBbkkbIgRyRQRAIAUCfiADxCACxHwiAkKAgICACHxC\u002F\u002F\u002F\u002F\u002Fw9YBEAgAkL\u002F\u002F\u002F\u002F\u002FD4MMAQtCgICAgMB+IAK5vSICQoCAgIDAgYD8\u002FwB9IAJC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbCzcDAAwBCyAEQXZHIAFBdkdxRQRAIABBngEgBSACIAMgACgCECgCrAIRIwANAwwBCyAAIAZBCGogAhBtBEAgACADEAwMAwsgACAGIAMQbQ0CIAVCgICAgMB+IAYrAwggBisDAKC9IgJCgICAgMCBgPz\u002FAH0gAkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhs3AwALQQAhAQwCCyAAIAMQDAsgBUKAgICAMDcDACAHQoCAgIAwNwMAQX8hAQsgBkEQaiQAIAELtAMBCH8jAEEQayIEJAAgACAAKQOAARAhIABBEGohAyAAQaABaiEFIAAoAqQBIQEDQCABIAVHBEAgASgCBCEIIAFBGGohB0EAIQIDQCABKAIQIAJKBEAgACAHIAJBA3RqKQMAECEgAkEBaiECDAELCyADIAEgACgCBBEAACAIIQEMAQsLIAAgBTYCpAEgACAAQaABajYCoAEgABCdBSAAKAJUIABB0ABqRgRAQQAhAgNAAkAgACgCRCEBIAIgACgCQE4NACABIAJBGGxqIgEoAgAEQCAAIAEoAgQQxwELIAJBAWohAgwBCwsgAyABIAAoAgQRAAAgAEHkAWoiAUEIahDBBCABQSBqEMEEQQAhAgNAAkAgACgCOCEBIAIgACgCLE4NACABIAJBAnRqKAIAIgFBAXFFBEAgAyABIAAoAgQRAAALIAJBAWohAgwBCwsgAyABIAAoAgQRAAAgAyAAKAI0IAAoAgQRAAAgAyAAKALgASAAKAIEEQAAIAQgAykCCDcDCCAEIAMpAgA3AwAgBCAAIAAoAgQRAAAgBEEQaiQADwtBuogBQajsAEHHD0Hd0wAQAAALjgMBC38jAEEwayIHJAACQCACQoCAgIBwVA0AQRMhBQJAIAKnIgotAAVBBHFFDQAgACgCECgCRCAKLwEGQRhsaigCFCIIRQ0AQQNBEyAIKAIEGyEFC0F\u002FIQkgACAHQSxqIAdBKGogCiAFEH0NACADp0EAIANC\u002F\u002F\u002F\u002F\u002F29WGyEMIAcoAiwhCCAHKAIoIQsgBUEPSyENQQAhBQJAA0AgBSALRwRAAkACQCAMRQ0AIABBACAMIAggBUEDdGooAgQQQyIGRQ0AIAZBAE4NAQwECyANRQRAIAAgB0EIaiIOIAogCCAFQQN0aigCBBBDIgZBAEgNBCAGRQ0BIAcoAgghDyAAIA4QRiAPQQRxRQ0BCyAAIAIgCCAFQQN0aiIGKAIEIAJBABARIgNCgICAgHCDQoCAgIDgAFENAyAGKAIEIQYCfyAEBEAgACABIAYgAxA5DAELIAAgASAGIANBBxAVC0EASA0DCyAFQQFqIQUMAQsLIAAgCCALEFtBACEJDAELIAAgCCALEFsLIAdBMGokACAJC6YBAQF+AkACQAJ+IARBBHEEQEEpIQIgACABEEoMAQtBKCECIAAgARAgCyIBQoCAgIBwg0KAgICA4ABRDQAgACACEIYBIgVCgICAgHCDQoCAgIDgAFENACAAQRAQJCICBEAgAkEANgIMIAIgBEEDcTYCCCACIAE3AwAgBUKAgICAcFQNAiAFpyACNgIgDAILIAAgBRAMCyAAIAEQDEKAgICA4AAPCyAFC8QBAQR\u002FIAGnIgUgAjYCICAFQgA3AiQCQCACKAI8IgZFDQACQCAAIAZBAnQQXCIIRQ0AIAUgCDYCJEEAIQUDQCAFIAIoAjxODQIgAigCJCAFQQN0aiIHLwECIQYCQCAHLQAAIgdBAXEEQCAAIAQgBiAHQQF2QQFxEP8DIgYNAQwDCyADIAZBAnRqKAIAIgYgBigCAEEBajYCAAsgCCAFQQJ0aiAGNgIAIAVBAWohBQwACwALIAAgARAMQoCAgIDgACEBCyABC4IBAQJ+IAAgARApIQICQCABQQBIDQAgACgCECgCOCABQQJ0aigCACkCBCIDp0GAgICAeEYgA0KAgICA8P\u002F\u002F\u002Fz+DUCADQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002Fv39WcSADQoCAgICAgICAQINCgICAgICAgICAf1FyRXINACAAQa\u002FwACACQa3wABCyASECCyACC2QBAn8CQAJAIAFCgICAgHBUDQAgARCUBQ0AQX8hAyAAIAIQMCIERQ0BIAAgBBDEBSECIAAgBBAQIAJCgICAgHCDQoCAgIDgAFENASAAIAFBNyACQQEQFUEASA0BC0EAIQMLIAMLNQACQCACRSABQoCAgIBwVHINACABEJQFDQAgACABQTcgACACEClBARAVQQBODQBBfw8LQQALDAAgACABQbYVELUBC2gCAX8BfgJAIAAgAUHqACABQQAQESIEQoCAgIBwg0KAgICA4ABSBEAgACAEECchAyAAIAFBwQAgAUEAEBEiAUKAgICAcINCgICAgOAAUg0BC0EAIQNCgICAgOAAIQELIAIgAzYCACABCxQBAn4gACABECAhAyAAIAEQDCADC\u002FsBAgR\u002FAX4gACgCyAEiBSgCECIEQTBqIQYgBCAEKAIYIAFxQX9zQQJ0aigCACEEAkADQCAERQ0BIAEgBiAEQQFrIgdBA3RqIgQoAgRHBEAgBCgCAEH\u002F\u002F\u002F8fcSEEDAELCyAFKAIUIAdBA3RqIQUCQCADQQFGDQAgBTUCBEIghkKAgICAwABRBEAgACACEAwgACAEKAIEENEBQX8PCyAELQADQQhxDQAgACACEAwgAEGAgAEgARDnAQ8LIAAgBSACEB1BAA8LIAAgACkDwAEiCCABIAIgCAJ\u002FIAAoAhAoAowBIgMEQEGAgAYgAygCKEEBcQ0BGgtBgIACCxDQAQuKAQEBfwJAIAJCgICAgHCDQoCAgICQf1EgA0KAgICAcINCgICAgJB\u002FUXFFBEAgAEGl5gBBABASDAELIAAgAUESEF4iAUKAgICAcINCgICAgOAAUQ0AIAGnIgQgAz4CJCAEIAI+AiAgACABQdYAQgBBAhAVGiABDwsgACADEAwgACACEAxCgICAgOAACw0AIAAgAUHMjQEQgQMLZwEBfwJAIAFBAE4EQCAAKAIQIgIoAiwgAU0NASACKAI4IAFBAnRqKAIAIgEgASgCAEEBajYCACAAIAFBBBDmAw8LQYaJAUGo7ABB1RdBycAAEAAAC0GQzgBBqOwAQdYXQcnAABAAAAuxAgEEfwJAAkACQAJAIAJCgICAgHBUDQAgAqciAy8BBhDgAUUNACADKAIoIgRFDQAgBCgCECIDQTBqIQUgAyADKAIYQX9zQQJ0QdR5cmooAgAhAwNAIANFDQMgBSADQQFrIgNBA3RqIgYoAgRBygFHBEAgBigCAEH\u002F\u002F\u002F8fcSEDDAELCyABQoCAgIBwVA0AIAQoAhQgA0EDdGopAwAiAkKAgICAcINCgICAgIB\u002FUQ0BCyAAECIMAgsgACACEIgCIQMgAacoAhAiAEEwaiEEIAAgAyAAKAIYcUF\u002Fc0ECdGooAgAhAANAIABFBEBBAA8LIAQgAEEDdGoiBUEIayEAIAMgBUEEaygCAEYEQCAAQQBHDwUgACgCAEH\u002F\u002F\u002F8fcSEADAELAAsACyAAQZ3kAEEAEBILQX8LRAEBfyAAQeQBaiECIABB4AFqIQADfyAAIAIoAgAiAkYEQEEADwsgASACQQRrKAIARgR\u002FIAJBCGsFIAJBBGohAgwBCwsLiQECA38BfgJAIAAoAhAoAowBIgJFDQADQCABQQBMBEADQCACKQMIIgRCgICAgHBUDQMgBKciAS8BBhDgAUUNAyABKAIgIgEvABEiA0GAwABxRQRAIANBgAhxRQ0EIAAgASgCQBAWDwsgAigCACICDQAMAwsACyABQQFrIQEgAigCACICDQALC0EACykBAX8gAkIgiKdBdU8EQCACpyIDIAMoAgBBAWo2AgALIAAgASACEIUEC\u002FQBAwF+An8BfANAAkBBfyEEAkACQAJAQQcgAkIgiKciBSAFQQdrQW5JGw4IAAAAAAICAwECCyACxCEDQQAhBAwCC0EAIQQgAkKAgICAwIGA\u002FP8AfCICQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWDQFCgICAgICAgICAfyEDIAK\u002FIgZEAAAAAAAA4MNjDQFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FACEDIAZEAAAAAAAA4ENkDQEgBplEAAAAAAAA4ENjBEAgBrAhAwwCC0KAgICAgICAgIB\u002FIQMMAQsgACACEJYBIgJCgICAgHCDQoCAgIDgAFINAQsLIAEgAzcDACAEC+YBAgN\u002FAXwDQAJAQX8hBAJAAkACQEEHIAJCIIinIgUgBUEHa0FuSRsOCAAAAAACAgMBAgsgAqchA0EAIQQMAgtBACEEIAJCgICAgMCBgPz\u002FAHwiAkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVgRADAILQYCAgIB4IQMgAr8iBkQAAAAAAADgwWMNAUH\u002F\u002F\u002F\u002F\u002FByEDIAZEAADA\u002F\u002F\u002F\u002F30FkDQEgBplEAAAAAAAA4EFjBEAgBqohAwwCC0GAgICAeCEDDAELIAAgAhCWASICQoCAgIBwg0KAgICA4ABSDQELCyABIAM2AgAgBAttAAJAAkACQAJAAkAgAkEEdkEDcUEBaw4DAAECAwsgASgCACICBEAgACACrUKAgICAcIQQIQsgASgCBCIBRQ0DIAAgAa1CgICAgHCEECEPCyAAIAEoAgAQ5QEPCyABEOAFDwsgACABKQMAECELC\u002FUBAQl\u002FQX8hAiABIAFBAWtxRQRAIABBEGoiCCABQQJ0IgMgACgCABEDACIFBH8gBUEAIAMQLCEGIAFB\u002F\u002F\u002F\u002F\u002FwNqQf\u002F\u002F\u002F\u002F8DcSEJIAAoAjQhBwNAIAQgACgCJE9FBEAgByAEQQJ0aigCACECA0AgAgRAIAAoAjggAkECdGooAgAiAygCDCEKIAMgBiAJIAMoAghxQQJ0aiIDKAIANgIMIAMgAjYCACAKIQIMAQsLIARBAWohBAwBCwsgCCAHIAAoAgQRAAAgACABQQF0NgIwIAAgATYCJCAAIAY2AjRBAAVBfwsPC0GbhwFBqOwAQYcUQe3HABAAAAu0AwEHfyADIAEoAgAiBSgCHEEDbEECbSIEIAMgBEobIQcCQCACBEAgACACKAIUIAdBA3QQxQIiA0UNASACIAM2AhQLIAUoAhhBAWohAwNAIAMiAkEBdCEDIAIgB0kNAAsgACACQQJ0IgYgB0EDdGpBMGoQJCIIRQ0AIAUoAggiAyAFKAIMIgQ2AgQgBCADNgIAIAVCADcCCCAGIAhqIAUgBSgCIEEDdEEwahAeIQQgACgCECIDKAJQIgkgBEEIaiIKNgIEIAQgA0HQAGo2AgwgBCAJNgIIIAMgCjYCUAJAIAQoAhhBAWogAkcEQCAEIAJBAWsiCTYCGEEAIQMgCEEAIAYQLBogBEEwaiECA0AgAyAEKAIgTw0CAkAgAigCBCIGRQRAIANBAWohAwwBCyACIAIoAgBBgICAYHEgBCAGIAlxQX9zQQJ0aiIGKAIAQf\u002F\u002F\u002Fx9xcjYCACAGIANBAWoiAzYCAAsgAkEIaiECDAALAAsgCCAFIAJBAnRrIAYQHhoLIAAoAhAiAEEQaiAFIAUoAhhBf3NBAnRqIAAoAgQRAAAgASAENgIAIAQgBzYCHEEADwtBfwvbAQEDfwJAIAAgASgCGEEBakECdCICIAEoAhxBA3RqQTBqIgMQJCIERQRAQQAhAgwBCyAEIAEgASgCGEF\u002Fc0ECdGogAxAeIAJqIgJBATYCACAAKAIQIQEgAkECOgAEIAEoAlAiAyACQQhqIgQ2AgQgAiABQdAAajYCDCACIAM2AgggASAENgJQQQAhASACQQA6ABAgAigCLCIDBEAgAyADKAIAQQFqNgIACyACQTBqIQMDQCABIAIoAiBPDQEgACADKAIEEBYaIANBCGohAyABQQFqIQEMAAsACyACC2YBA38jAEEQayIDJAAgACABKAIkIAIgASgCIEEDbEEBdiIAIAAgAkgbIgBBA3QgA0EMahCnASICBH8gAygCDCEEIAEgAjYCJCABIARBA3YgAGo2AiBBAAVBfwshBSADQRBqJAAgBQtsAgN\u002FAXwjAEEQayICJAACfyABQiCIpyIDBEBBACADQQtqQRJJDQEaC0F\u002FIAAgAkEIaiABEEINABogAisDCCIFvUKAgICAgICA+P8Ag0KAgICAgICA+P8AUiAFnCAFYXELIQQgAkEQaiQAIAQL9QICA38BfiMAQRBrIgMkAAJAAkACQAJAAkADQAJAQoCAgIDAfiEGAkACQAJAQQcgAUIgiKciBCAEQQdrQW5JG0EKag4SAAYFAwYGBgYGAgcBAQkGBgcHBgsgAkEBRg0GIAAgARAMIABB6zRBABASDAcLIAFC\u002F\u002F\u002F\u002F\u002Fw+DIQYMBwtCgICAgOAAIQYgACABQQEQkgEiAUKAgICAcINCgICAgOAAUg0BDAYLCyAAIANBCGogARDfASECIAAgARAMIAJFDQMgAyACIAIQ\u002FgEiBGoiBTYCDEIAIQYCQCAEIAMoAghGDQAgACAFIANBDGpBAEEEEIACIgZCgICAgHCDQoCAgIDgAFENACADIAMoAgwQ\u002FgEgAygCDGoiBDYCDCADKAIIIAQgAmtGDQAgACAGEAxCgICAgMB+IQYLIAAgAhAxDAQLIAAgARAMIABBizVBABASDAILIAAgARAMDAILIAEhBgwBC0KAgICA4AAhBgsgA0EQaiQAIAYLsgEBAX8CQANAAkACQAJAAkACQEEHIAJCIIinIgMgA0EHa0FuSRsiA0EKag4EAQQEAgALAkAgA0EBag4DAwQABAsgACgC2AEgARC7ASABIALEEJwCGiABDwsgAqdBBGoPCyAAIAIQnwUiAkKAgICAcINCgICAgOAAUg0CDAMLIAAgAkEBEJIBIgJCgICAgHCDQoCAgIDgAFINAQwCCwsgACACEAwgAEHdGUEAEBJBAA8LQQAL7gEBAXwgAQJ\u002FAkADQAJAAkACQEEHIAJCIIinIgEgAUEHa0FuSRsOCAAAAAACAgIBAgtBACEAQf8BIAKnIgEgAUH\u002FAU4bIgFBACABQQBKGwwEC0EAIQAgAkKAgICAwIGA\u002FP8AfCICQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWDQIgAr8iA0QAAAAAAAAAAGMNAkH\u002FASADRAAAAAAA4G9AZA0DGgJ\u002FIAOeIgOZRAAAAAAAAOBBYwRAIAOqDAELQYCAgIB4CwwDCyAAIAIQlgEiAkKAgICAcINCgICAgOAAUg0AC0F\u002FIQALQQALNgIAIAALiQYCA38BfiMAQRBrIggkAAJAAkACQAJAAkAgAS0ABSIHQQRxRQ0AIAEvAQYiCUECRgRAAkAgB0EIcQRAAkAgAkEASARAIAggAkH\u002F\u002F\u002F\u002F\u002FB3EiCTYCDCAJIAEoAihHDQEgB0EBcUUNBiAGQYAwcSAGIAZBCHZxQQdxQQdHcg0BIANCIIinQXVPBEAgA6ciAiACKAIAQQFqNgIACyAAIAEgAyAGEIYEIQcMCQsgACAIQQxqIAIQpQFFDQQLQX8hByAAIAEQjgNFDQEMBwsgACAIQQxqIAIQpQFFDQILIAAgCEEIaiABKAIUIgkpAwAQdRogCCgCDEEBaiIHIAgoAghNDQEgASgCEC0AM0EIcUUEQCAAIAZBMBDnASEHDAYLIAggBzYCCCAAIAkgB0EATgR+IAetBUKAgICAwH4gB7i9IgpCgICAgMCBgPz\u002FAH0gCkKAgICAgICA+P8AVhsLEB0MAQsgCUEVa0H\u002F\u002FwNxQQpNBEAgACACEJMDIgdFDQEgB0EASA0EIAAgBkH7DRB8IQcMBQsgBkGAgAhxDQAgACgCECgCRCAJQRhsaigCFCIHRQ0AIAGtQoCAgIBwhCEKIAcoAgwiBwRAIAAgCiACIAMgBCAFIAYgBxEiACEHDAULIAAgChCXASIHQQBIDQMgB0UNAQsgAS0ABUEBcQ0BCyAAIAZBhdgAEHwhBwwCCyAAIAEgAiAGQQVxQRByIAZBB3EgBkGAMHEiAhsQdyIBRQ0AIAIEQCABQQA2AgACQCAGQYAQcUUNACAAIAQQNUUNACAEpyECIARCIIinQXVPBEAgAiACKAIAQQFqNgIACyABIAI2AgALIAFBADYCBEEBIQcgBkGAIHFFDQIgACAFEDVFDQIgBachACAFQiCIp0F1TwRAIAAgACgCAEEBajYCAAsgASAANgIEDAILAkAgBkGAwABxBEAgA0IgiKdBdU8EQCADpyIAIAAoAgBBAWo2AgALIAEgAzcDAAwBCyABQoCAgIAwNwMAC0EBIQcMAQtBfyEHCyAIQRBqJAAgBwu2BQEKfyMAQRBrIgUkAAJ\u002FQX8gACAFQQxqIAJBABC+Ag0AGiABKAIQLQAzQQhxRQRAIAAgA0EwEOcBDAELIAEtAAVBCHEEQCAFKAIMIgMgASgCKCIHSQRAIAMhBANAIAQgB0ZFBEAgACABKAIkIARBA3RqKQMAEAwgBEEBaiEEDAELCyABIAM2AigLIAEoAhQgA0EATgR+IAOtBUKAgICAwH4gA7i9IgJCgICAgMCBgPz\u002FAH0gAkKAgICAgICA+P8AVhsLNwMAQQEMAQsgACAFQQRqIAEoAhQpAwAQdRoCQAJAAkACQCAFKAIEIgYgBSgCDCIHSwRAIAEoAhAiCigCICIEIAYgB2tPBEAgBSgCBCEEA0AgBiAHTQ0FIAAgASAAIAZBAWsQ7AUiBhCEBCEMIAAgBhAQIAxFDQMgBEEBayIEIQYMAAsACyAFIAc2AgQgByEJIApBMGoiBiEIA0AgBCALTARAIAUgCTYCBEEAIQgDQCAEIAhMDQUCQCAGKAIEIgRFDQAgACAFQQhqIAQQpQFFDQAgBSgCCCAJSQ0AIAAgASAGKAIEEIQEGiABKAIQIgogCEEDdGpBMGohBgsgBkEIaiEGIAhBAWohCCAKKAIgIQQMAAsABQJAIAgoAgQiBEUNACAAIAVBCGogBBClAUUNACAFKAIIIgQgCUkNACAJIARBAWogCC0AA0EEcRshCQsgCEEIaiEIIAtBAWohCyAKKAIgIQQMAQsACwALIAUgBzYCBCAHIQYMAwsgBSAENgIECyAFKAIEIQYMAQsgBSAENgIECyAAIAEoAhQgBkEATgR+IAatBUKAgICAwH4gBri9IgJCgICAgMCBgPz\u002FAH0gAkKAgICAgICA+P8AVhsLEB1BASAFKAIEIAdNDQAaIAAgA0H72AAQfAshDSAFQRBqJAAgDQu5BAIFfwJ+IwBBEGsiBSQAAkAgAUEASARAIAFB\u002F\u002F\u002F\u002F\u002FwdxrSEHDAELAkAgASAAKAIQIgIoAixJBEACQCACKAI4IAFBAnRqKAIAIgEpAgQiB0KAgICAgICAgECDQoCAgICAgICAwABSDQAgB6dB\u002F\u002F\u002F\u002F\u002FwdxIQQCQCAHQoCAgIAIg1BFBEAgBEUNAgJAIAEvARAiAkEtRwRAIAFBEGohAwwBCyABQRJqIQMgAS8BEiECIARBAkcNAEKAgICAwP7\u002FAyEHIAJBMEYNBgsgAkE6a0F1Sw0BIAVB+QA7AQ4gBUHpgNADNgEKIAVC7oCYg5CNgDc3AQIgAkHJAEcgASAEQQF0akEQaiADa0EQR3INAiADQQJqIAVBAmpBDhBoRQ0BDAILIARFDQECQCABLQAQIgJBLUcEQCABQRBqIQMMAQsgAUERaiEDIAEtABEhAiAEQQJHDQBCgICAgMD+\u002FwMhByACQf8BcUEwRg0FCyACQf8BcSICQTprQXVLDQAgAkHJAEcgASAEakEQaiADa0EIR3INASADQQFqQdILQQcQaA0BCyABIAEoAgBBAWo2AgAgACABrUKAgICAkH+EEJYBIghCgICAgHCDQoCAgIDgAFENAiAAIAgQJSIHQoCAgIBwg0KAgICA4ABRBEAgACAIEAwMBAsgASAHpxC8AiEGIAAgBxAMIAZFDQIgACAIEAwLQoCAgIAwIQcMAgtBps4AQajsAEHgGEGTgwEQAAALIAghBwsgBUEQaiQAIAcLDQAgACgCAEF8cRCeAwufAgIEfwF+AkAgACACEDVFDQAgAqciBS8BBkEORgRAIAAgASAFKAIgKQMAEOIFDwsgAUKAgICAcFQNAAJAIAAgAkE8IAJBABARIgdC\u002F\u002F\u002F\u002F\u002F29YBEBBfyEEIAdCgICAgHCDQoCAgIDgAFENASAAQcweQQAQEgwBCyABpyEDIAenIQYDQAJAIAMoAhAoAiwiBUUEQCADLwEGQSxHDQMgAyADKAIAQQFqNgIAIAOtQoCAgIBwhCEBAkADQCAAIAEQwgIiAUKAgICAcIMiAkKAgICAIFENBSACQoCAgIDgAFENASABpyAGRgRAIAAgARAMDAQLIAAQdkUNAAsgACABEAwLQX8hBAwDCyAFIgMgBkcNAQsLQQEhBAsgACAHEAwLIAQLowECAn8CfiMAQRBrIgMkACADIAE3AwgCfwJAIAJCgICAgHBaBEAgACACQdQBIAJBABARIgZCgICAgHCDIgVCgICAgCBRIAVCgICAgDBRckUEQEF\u002FIAVCgICAgOAAUQ0DGiAAIAAgBiACQQEgA0EIahA2ECcMAwsgACACEDUNAQsgAEH84gBBABASQX8MAQsgACABIAIQ4QULIQQgA0EQaiQAIAQLmgUBCX8jAEEQayICJAAgAkEANgIMIAJCADcDACACQX82AggCQAJAIAJBwAJByJsBKAIAEQMAIgQEQCAEQQBBwAIQLCIAQdCbASkCADcCCCAAQcibASkCADcCACAAKAIMRQRAIABBATYCDAsgACACKQMANwMQIAAgAikDCDcDGCAAQYCAEDYCbCAAQeQBaiIBQQhqQQBBNBAsGiABIAA2AgAgAUECNgIEIABBAzYCuAIgAEEENgK0AiAAQQU2AqwCIABBBjYCqAIgAEEHNgKkAiAAQQg2AqACIAAgAEGgAWoiATYCpAEgACABNgKgASAAQQA6AGggACAAQdgAaiIBNgJcIAAgATYCWCAAIABB0ABqIgE2AlQgACABNgJQIAAgAEHIAGoiATYCTCAAIAE2AkggAEEANgI0IABBADYCJCAAQQA2AjwgAEIANwMoAkAgAEGAAhDVBQ0AIABBEGohCEHwngEhA0EBIQEDQCABQdgBRwRAIAAgAxA9IgVBABDoBSIGBH8gBkEQaiADIAUQHiAFakEAOgAAIAAgBkEEQQNBASABQcoBSxsgAUHKAUYbEMcCBUEAC0UNAiABQQFqIQEgAyAFakEBaiEDDAELCyAAQfCWAUEBQSsQgQRBAEgNACAAKAJEIgFBCTYC+AIgAUEKNgKwAiABQaybATYCnAIgAUGQmwE2AowBIAFB9JoBNgLUASABQQs2ApADIAFBDDYC4AIgAEEANgLcASAAQoSAgICAAjcC1AEgCEHAACAAKAIAEQMAIgENAiAAQQA2AuABCyAAEMAFC0EAIQQMAQsgAUEAQcAAECwhASAAQoCAgIAgNwOAASAAQYCAcDYCeCAAQoCAEDcDcCAAIAE2AuABCyACQRBqJAAgBAuBAQIBfgF\u002FIwBBgAJrIgYkACAGQYACIAIgAxDJAhoCQCAAIAAgAUEDdGopA1hBAxBHIgVCgICAgHCDQoCAgIDgAFEEQEKAgICAICEFDAELIAAgBUEzIAAgBhBgQQMQFRoLIAQEQCAAIAVBAEEAQQAQtAILIAAgBRCYASAGQYACaiQAC54DAgR\u002FAX4jAEEQayIGJAACQAJAAkACQCACQQBIBEAgBiACQf\u002F\u002F\u002F\u002F8HcTYCACABQcAAQcURIAYQSBoMAQsgACgCLCACTQ0CIAJFBEAgAUGhgAEoAAA2AAMgAUGegAEoAAA2AAAMAQsgACgCOCACQQJ0aigCACIEQQFxDQMgASECAkAgBEUNACAEKQIEIgdCgICAgAiDUARAIARBEGohAyAHpyEFQQAhAkEAIQADQCACIAVGRQRAIAAgAiADai0AAHIhACACQQFqIQIMAQsLIABBgAFIDQMLIARBEGohBUEAIQAgASECA0AgACAHp0H\u002F\u002F\u002F\u002F\u002FB3FPDQECfyAHQoCAgIAIg1BFBEAgBSAAQQF0ai8BAAwBCyAAIAVqLQAACyEDIAIgAWtBOUoNAQJ\u002FIANB\u002FwBNBEAgAiADOgAAIAJBAWoMAQsgAiADEN0CIAJqCyECIABBAWohACAEKQIEIQcMAAsACyACQQA6AAALIAEhAwsgBkEQaiQAIAMPC0GmzgBBqOwAQeYXQbLxABAAAAtBo4kBQajsAEHwF0Gy8QAQAAALVAECfyAAQQE6AGggAEHYAGohAgJAA0AgAiAAKAJcIgFHBEAgAUEIayIBKAIADQIgACABEIsFDAELCyAAQQA6AGgPC0GkhgFBqOwAQfEqQegWEAAAC8QDAQJ\u002FIAAoAhAiAygCFEEwaiADKAJsSwRAIAMQnQUgAyADKAIUIgNBAXYgA2o2AmwLAkAgAEEwECQiAwRAIANBADYCICADQQA2AhggA0EBOgAFIAMgAjsBBiADIAE2AhAgAyAAIAEoAhxBA3QQJCIENgIUIAQNASAAKAIQIgJBEGogAyACKAIEEQAACyAAKAIQIAEQjAJCgICAgOAADwsCQAJAAkACQAJAAkACQAJAIAJBAWsOIQcABgQEBAQCBgQGAQYGBgYGBQYGAgICAgICAgICAgIDBAYLIANBADYCKCADQgA3AyAgAyADLQAFQQxyOgAFIAEgACgCJEcEfyAAIANBMEEKEHcFIAQLQgA3AwAMBgsgBEKAgICAMDcDAAwFCyADQgA3AiQgAyADLQAFQQxyOgAFDAQLIANCADcCJAwDCyADQoCAgIAwNwMgDAELIANCADcDIAsgACgCECgCRCACQRhsaigCFEUNACADIAMtAAVBBHI6AAULIANBATYCACAAKAIQIQAgA0EAOgAEIAAoAlAiASADQQhqIgI2AgQgAyAAQdAAajYCDCADIAE2AgggACACNgJQIAOtQoCAgIBwhAtEACAAQRBqIAEgAnQgAmtBEWogACgCABEDACIABEAgAEEANgIMIABBATYCACAAIAFB\u002F\u002F\u002F\u002F\u002FwdxIAJBH3RyrTcCBAsgAAv1AQIBfwJ+IwBB0ABrIgMkAAJAAn4gAUEASARAIAMgAUH\u002F\u002F\u002F\u002F\u002FB3E2AgAgA0EQaiIBQcAAQcURIAMQSBogACABEGAMAQsgACgCECIAKAIsIAFNDQECQAJAIAAoAjgiACABQQJ0aigCACIBKQIEIgRCgICAgICAgIBAg0KAgICAgICAgMAAUQ0AIAJFDQEgBKdBgICAgHhHDQAgACgCvAEhAQsgASABKAIAQQFqNgIAIAGtQoCAgICQf4QMAQsgASABKAIAQQFqNgIAIAGtQoCAgICAf4QLIQUgA0HQAGokACAFDwtBps4AQajsAEGfGEH8zwAQAAALqwECAX4CfyABKQIEQoCAgIAIgyEDIAAtAAdBgAFxRQRAIANQBEAgAEEQaiABQRBqIAIQaA8LQQAgAUEQaiAAQRBqIAIQmgVrDwsgAUEQaiEEIABBEGohACADUARAIAAgBCACEJoFDwsgAkEAIAJBAEobIQVBACEBA0AgASAFRgRAQQAPCyABQQF0IQIgAUEBaiEBIAAgAmovAQAgAiAEai8BAGsiAkUNAAsgAgtsAgJ\u002FAX4gAEEQaiECIAApAgQiBKchAAJAIARCgICAgAiDUEUEQCAAQf\u002F\u002F\u002F\u002F8HcSEDQQAhAANAIAAgA0YNAiACIABBAXRqLwEAIAFBhwJsaiEBIABBAWohAAwACwALIAIgACABEO4FIQELIAELcAICfwF+IwBBEGsiAiQAAkAgAUEATgRAIAFBgICAgHhyIQMMAQsgAiABNgIAIAJBBWoiAUELQcURIAIQSBogACABEGAiBEKAgICAcINCgICAgOAAUQ0AIAAoAhAgBKdBARDHAiEDCyACQRBqJAAgAwvTAQIFfwF+AkAgASkCBCIHp0H\u002F\u002F\u002F\u002F\u002FB3EiBEELa0F2SQ0AAn8gB0KAgICACINQIgZFBEAgAS8BEAwBCyABLQAQCyIDQTBrIgJBCUsNAAJ\u002FAkAgA0EwRwRAIAFBEGohBUEBIQEDQCABIARGDQICfyAGRQRAIAUgAUEBdGovAQAMAQsgASAFai0AAAtBMGsiA0EJSw0EIAFBAWohASADrSACrUIKfnwiB6chAiAHQoCAgIAQVA0ACwwDC0EAIgIgBEEBRw0BGgsgACACNgIAQQELDwtBAAssAQF\u002FA0AgASADRkUEQCAAIANqLQAAIAJBhwJsaiECIANBAWohAwwBCwsgAgteAQF\u002FAkAgAUKAgICAcFQNACABpyIELwEGIANHDQAgBCgCICIERQ0AIAQpAwAiAUKAgICAYFoEQCAAIAGnIAIRAAALIAQpAwgiAUKAgICAYFQNACAAIAGnIAIRAAALC0oBAX8CQCABQoCAgIBwVA0AIAGnIgMvAQYgAkcNACADKAIgIgNFDQAgACADKQMAECEgACADKQMIECEgAEEQaiADIAAoAgQRAAALCzgBAX8gAEEwayIEQQpPBH8gAEHBAGsgA00EQCAAQTdrDwsgAiAAQdcAayAAQeEAayABTxsFIAQLC6IDAQJ\u002FIAAgASgCBBAQA0AgASgCECEDIAIgASgCFE5FBEAgACADIAJBA3RqKAIAEBAgAkEBaiECDAELCyAAKAIQIgJBEGogAyACKAIEEQAAQQAhAgNAAkAgASgCHCEDIAIgASgCIE4NACADIAJBFGxqIgMoAghFBEAgACgCECADKAIEEOUBCyAAIAMoAhAQECAAIAMoAgwQECACQQFqIQIMAQsLIAAoAhAiAkEQaiADIAIoAgQRAAAgACgCECICQRBqIAEoAiggAigCBBEAAEEAIQIDQCABKAI0IQMgAiABKAI4TkUEQCAAIAMgAkEMbGooAgQQECACQQFqIQIMAQsLIAAoAhAiAkEQaiADIAIoAgQRAAAgACgCECICQRBqIAEoAmQgAigCBBEAACAAIAEpA0AQDCAAIAEpA0gQDCAAIAEpA6gBEAwgACABKQOwARAMIAAgASkDiAEQDCAAIAEpA5ABEAwgACABKQOYARAMIAEoAggiAiABKAIMIgM2AgQgAyACNgIAIAFCADcCCCAAKAIQIgBBEGogASAAKAIEEQAAC9IDAgJ+An8jAEEgayIEJAACQCABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDIgNCgICAgICAwIA8fSADQoCAgICAgMD\u002FwwB9VARAIAFCBIYgAEI8iIQhAyAAQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FD4MiAEKBgICAgICAgAhaBEAgA0KBgICAgICAgMAAfCECDAILIANCgICAgICAgIBAfSECIABCgICAgICAgIAIUg0BIAIgA0IBg3whAgwBCyAAUCADQoCAgICAgMD\u002F\u002FwBUIANCgICAgICAwP\u002F\u002FAFEbRQRAIAFCBIYgAEI8iIRC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwODQoCAgICAgID8\u002FwCEIQIMAQtCgICAgICAgPj\u002FACECIANC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002Fv\u002F\u002FDAFYNAEIAIQIgA0IwiKciBUGR9wBJDQAgBEEQaiAAIAFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP4NCgICAgICAwACEIgIgBUGB9wBrEGIgBCAAIAJBgfgAIAVrEI0CIAQpAwhCBIYgBCkDACIAQjyIhCECIAQpAxAgBCkDGIRCAFKtIABC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Pg4QiAEKBgICAgICAgAhaBEAgAkIBfCECDAELIABCgICAgICAgIAIUg0AIAJCAYMgAnwhAgsgBEEgaiQAIAIgAUKAgICAgICAgIB\u002Fg4S\u002FC6oPAgV\u002FD34jAEHQAmsiBSQAIARC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP4MhCiACQv\u002F\u002F\u002F\u002F\u002F\u002F\u002Fz+DIQsgAiAEhUKAgICAgICAgIB\u002FgyEMIARCMIinQf\u002F\u002FAXEhCAJAAkAgAkIwiKdB\u002F\u002F8BcSIJQf\u002F\u002FAWtBgoB+TwRAIAhB\u002F\u002F8Ba0GBgH5LDQELIAFQIAJC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAIMiDUKAgICAgIDA\u002F\u002F8AVCANQoCAgICAgMD\u002F\u002FwBRG0UEQCACQoCAgICAgCCEIQwMAgsgA1AgBEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8AgyICQoCAgICAgMD\u002F\u002FwBUIAJCgICAgICAwP\u002F\u002FAFEbRQRAIARCgICAgICAIIQhDCADIQEMAgsgASANQoCAgICAgMD\u002F\u002FwCFhFAEQCADIAJCgICAgICAwP\u002F\u002FAIWEUARAQgAhAUKAgICAgIDg\u002F\u002F8AIQwMAwsgDEKAgICAgIDA\u002F\u002F8AhCEMQgAhAQwCCyADIAJCgICAgICAwP\u002F\u002FAIWEUARAQgAhAQwCCyABIA2EUARAQoCAgICAgOD\u002F\u002FwAgDCACIAOEUBshDEIAIQEMAgsgAiADhFAEQCAMQoCAgICAgMD\u002F\u002FwCEIQxCACEBDAILIA1C\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP1gEQCAFQcACaiABIAsgASALIAtQIgYbeSAGQQZ0rXynIgZBD2sQYkEQIAZrIQYgBSkDyAIhCyAFKQPAAiEBCyACQv\u002F\u002F\u002F\u002F\u002F\u002F\u002Fz9WDQAgBUGwAmogAyAKIAMgCiAKUCIHG3kgB0EGdK18pyIHQQ9rEGIgBiAHakEQayEGIAUpA7gCIQogBSkDsAIhAwsgBUGgAmogCkKAgICAgIDAAIQiEkIPhiADQjGIhCICQgBCgICAgLDmvIL1ACACfSIEQgAQYSAFQZACakIAIAUpA6gCfUIAIARCABBhIAVBgAJqIAUpA5gCQgGGIAUpA5ACQj+IhCIEQgAgAkIAEGEgBUHwAWogBEIAQgAgBSkDiAJ9QgAQYSAFQeABaiAFKQP4AUIBhiAFKQPwAUI\u002FiIQiBEIAIAJCABBhIAVB0AFqIARCAEIAIAUpA+gBfUIAEGEgBUHAAWogBSkD2AFCAYYgBSkD0AFCP4iEIgRCACACQgAQYSAFQbABaiAEQgBCACAFKQPIAX1CABBhIAVBoAFqIAJCACAFKQO4AUIBhiAFKQOwAUI\u002FiIRCAX0iAkIAEGEgBUGQAWogA0IPhkIAIAJCABBhIAVB8ABqIAJCAEIAIAUpA6gBIAUpA6ABIg0gBSkDmAF8IgQgDVStfCAEQgFWrXx9QgAQYSAFQYABakIBIAR9QgAgAkIAEGEgBiAJIAhraiEGAn8gBSkDcCITQgGGIg4gBSkDiAEiD0IBhiAFKQOAAUI\u002FiIR8IhBC5+wAfSIUQiCIIgIgC0KAgICAgIDAAIQiFUIBhiIWQiCIIgR+IhEgAUIBhiINQiCIIgogECAUVq0gDiAQVq0gBSkDeEIBhiATQj+IhCAPQj+IfHx8QgF9IhNCIIgiEH58Ig4gEVStIA4gDiATQv\u002F\u002F\u002F\u002F8PgyITIAFCP4giFyALQgGGhEL\u002F\u002F\u002F\u002F\u002FD4MiC358Ig5WrXwgBCAQfnwgBCATfiIRIAsgEH58Ig8gEVStQiCGIA9CIIiEfCAOIA4gD0IghnwiDlatfCAOIA4gFEL\u002F\u002F\u002F\u002F\u002FD4MiFCALfiIRIAIgCn58Ig8gEVStIA8gDyATIA1C\u002Fv\u002F\u002F\u002Fw+DIhF+fCIPVq18fCIOVq18IA4gBCAUfiIYIBAgEX58IgQgAiALfnwiCyAKIBN+fCIQQiCIIAsgEFatIAQgGFStIAQgC1atfHxCIIaEfCIEIA5UrXwgBCAPIAIgEX4iAiAKIBR+fCIKQiCIIAIgClatQiCGhHwiAiAPVK0gAiAQQiCGfCACVK18fCICIARUrXwiBEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAFgEQCAWIBeEIRUgBUHQAGogAiAEIAMgEhBhIAFCMYYgBSkDWH0gBSkDUCIBQgBSrX0hCkIAIAF9IQsgBkH+\u002FwBqDAELIAVB4ABqIARCP4YgAkIBiIQiAiAEQgGIIgQgAyASEGEgAUIwhiAFKQNofSAFKQNgIg1CAFKtfSEKQgAgDX0hCyABIQ0gBkH\u002F\u002FwBqCyIGQf\u002F\u002FAU4EQCAMQoCAgICAgMD\u002F\u002FwCEIQxCACEBDAELAn4gBkEASgRAIApCAYYgC0I\u002FiIQhASAEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002Fz+DIAatQjCGhCEKIAtCAYYMAQsgBkGPf0wEQEIAIQEMAgsgBUFAayACIARBASAGaxCNAiAFQTBqIA0gFSAGQfAAahBiIAVBIGogAyASIAUpA0AiAiAFKQNIIgoQYSAFKQM4IAUpAyhCAYYgBSkDICIBQj+IhH0gBSkDMCIEIAFCAYYiDVStfSEBIAQgDX0LIQQgBUEQaiADIBJCA0IAEGEgBSADIBJCBUIAEGEgCiACIAIgAyAEIAJCAYMiBHwiA1QgASADIARUrXwiASASViABIBJRG618IgJWrXwiBCACIAIgBEKAgICAgIDA\u002F\u002F8AVCADIAUpAxBWIAEgBSkDGCIEViABIARRG3GtfCICVq18IgQgAiAEQoCAgICAgMD\u002F\u002FwBUIAMgBSkDAFYgASAFKQMIIgNWIAEgA1Ebca18IgEgAlStfCAMhCEMCyAAIAE3AwAgACAMNwMIIAVB0AJqJAALwAECAX8CfkF\u002FIQMCQCAAQgBSIAFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAIMiBEKAgICAgIDA\u002F\u002F8AViAEQoCAgICAgMD\u002F\u002FwBRGw0AIAJC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAIMiBUKAgICAgIDA\u002F\u002F8AViAFQoCAgICAgMD\u002F\u002FwBScQ0AIAAgBCAFhIRQBEBBAA8LIAEgAoNCAFkEQCABIAJSIAEgAlNxDQEgACABIAKFhEIAUg8LIABCAFIgASACVSABIAJRGw0AIAAgASAChYRCAFIhAwsgAwtAAQN\u002FIABB4AFqIQQgACgC5AEhAwNAIAQgAyICRwRAIAIoAgQhAyABBEAgAi0ATQ0CCyAAIAJBCGsQ8gUMAQsLC7QLAQZ\u002FIAAgAWohBQJAAkAgACgCBCICQQFxDQAgAkECcUUNASAAKAIAIgIgAWohAQJAAkACQCAAIAJrIgBB2N4EKAIARwRAIAAoAgwhAyACQf8BTQRAIAJBA3YhAiAAKAIIIgQgA0cNAkHE3gRBxN4EKAIAQX4gAndxNgIADAULIAAoAhghBiAAIANHBEBB1N4EKAIAGiAAKAIIIgIgAzYCDCADIAI2AggMBAsgACgCFCIEBH8gAEEUagUgACgCECIERQ0DIABBEGoLIQIDQCACIQcgBCIDQRRqIQIgAygCFCIEDQAgA0EQaiECIAMoAhAiBA0ACyAHQQA2AgAMAwsgBSgCBCICQQNxQQNHDQNBzN4EIAE2AgAgBSACQX5xNgIEIAAgAUEBcjYCBCAFIAE2AgAPCyAEIAM2AgwgAyAENgIIDAILQQAhAwsgBkUNAAJAIAAoAhwiAkECdEH04ARqIgQoAgAgAEYEQCAEIAM2AgAgAw0BQcjeBEHI3gQoAgBBfiACd3E2AgAMAgsgBkEQQRQgBigCECAARhtqIAM2AgAgA0UNAQsgAyAGNgIYIAAoAhAiAgRAIAMgAjYCECACIAM2AhgLIAAoAhQiAkUNACADIAI2AhQgAiADNgIYCwJAAkACQAJAIAUoAgQiAkECcUUEQEHc3gQoAgAgBUYEQEHc3gQgADYCAEHQ3gRB0N4EKAIAIAFqIgE2AgAgACABQQFyNgIEIABB2N4EKAIARw0GQczeBEEANgIAQdjeBEEANgIADwtB2N4EKAIAIAVGBEBB2N4EIAA2AgBBzN4EQczeBCgCACABaiIBNgIAIAAgAUEBcjYCBCAAIAFqIAE2AgAPCyACQXhxIAFqIQEgBSgCDCEDIAJB\u002FwFNBEAgAkEDdiECIAUoAggiBCADRgRAQcTeBEHE3gQoAgBBfiACd3E2AgAMBQsgBCADNgIMIAMgBDYCCAwECyAFKAIYIQYgAyAFRwRAQdTeBCgCABogBSgCCCICIAM2AgwgAyACNgIIDAMLIAUoAhQiBAR\u002FIAVBFGoFIAUoAhAiBEUNAiAFQRBqCyECA0AgAiEHIAQiA0EUaiECIAMoAhQiBA0AIANBEGohAiADKAIQIgQNAAsgB0EANgIADAILIAUgAkF+cTYCBCAAIAFBAXI2AgQgACABaiABNgIADAMLQQAhAwsgBkUNAAJAIAUoAhwiAkECdEH04ARqIgQoAgAgBUYEQCAEIAM2AgAgAw0BQcjeBEHI3gQoAgBBfiACd3E2AgAMAgsgBkEQQRQgBigCECAFRhtqIAM2AgAgA0UNAQsgAyAGNgIYIAUoAhAiAgRAIAMgAjYCECACIAM2AhgLIAUoAhQiAkUNACADIAI2AhQgAiADNgIYCyAAIAFBAXI2AgQgACABaiABNgIAIABB2N4EKAIARw0AQczeBCABNgIADwsgAUH\u002FAU0EQCABQXhxQezeBGohAgJ\u002FQcTeBCgCACIDQQEgAUEDdnQiAXFFBEBBxN4EIAEgA3I2AgAgAgwBCyACKAIICyEBIAIgADYCCCABIAA2AgwgACACNgIMIAAgATYCCA8LQR8hAyABQf\u002F\u002F\u002FwdNBEAgAUEmIAFBCHZnIgJrdkEBcSACQQF0a0E+aiEDCyAAIAM2AhwgAEIANwIQIANBAnRB9OAEaiECAkACQEHI3gQoAgAiBEEBIAN0IgdxRQRAQcjeBCAEIAdyNgIAIAIgADYCACAAIAI2AhgMAQsgAUEZIANBAXZrQQAgA0EfRxt0IQMgAigCACECA0AgAiIEKAIEQXhxIAFGDQIgA0EddiECIANBAXQhAyAEIAJBBHFqIgdBEGooAgAiAg0ACyAHIAA2AhAgACAENgIYCyAAIAA2AgwgACAANgIIDwsgBCgCCCIBIAA2AgwgBCAANgIIIABBADYCGCAAIAQ2AgwgACABNgIICwuQCAELfyAARQRAIAEQjwIPCyABQUBPBEBBxNQEQTA2AgBBAA8LAn9BECABQQtqQXhxIAFBC0kbIQUgAEEIayIEKAIEIglBeHEhCAJAIAlBA3FFBEBBACAFQYACSQ0CGiAFQQRqIAhNBEAgBCECIAggBWtBpOIEKAIAQQF0TQ0CC0EADAILIAQgCGohBgJAIAUgCE0EQCAIIAVrIgNBEEkNASAEIAlBAXEgBXJBAnI2AgQgBCAFaiICIANBA3I2AgQgBiAGKAIEQQFyNgIEIAIgAxD3BQwBC0Hc3gQoAgAgBkYEQEHQ3gQoAgAgCGoiCCAFTQ0CIAQgCUEBcSAFckECcjYCBCAEIAVqIgMgCCAFayICQQFyNgIEQdDeBCACNgIAQdzeBCADNgIADAELQdjeBCgCACAGRgRAQczeBCgCACAIaiIDIAVJDQICQCADIAVrIgJBEE8EQCAEIAlBAXEgBXJBAnI2AgQgBCAFaiIIIAJBAXI2AgQgAyAEaiIDIAI2AgAgAyADKAIEQX5xNgIEDAELIAQgCUEBcSADckECcjYCBCADIARqIgIgAigCBEEBcjYCBEEAIQJBACEIC0HY3gQgCDYCAEHM3gQgAjYCAAwBCyAGKAIEIgNBAnENASADQXhxIAhqIgogBUkNASAKIAVrIQwgBigCDCEHAkAgA0H\u002FAU0EQCAGKAIIIgIgB0YEQEHE3gRBxN4EKAIAQX4gA0EDdndxNgIADAILIAIgBzYCDCAHIAI2AggMAQsgBigCGCELAkAgBiAHRwRAQdTeBCgCABogBigCCCICIAc2AgwgByACNgIIDAELAkAgBigCFCICBH8gBkEUagUgBigCECICRQ0BIAZBEGoLIQgDQCAIIQMgAiIHQRRqIQggAigCFCICDQAgB0EQaiEIIAcoAhAiAg0ACyADQQA2AgAMAQtBACEHCyALRQ0AAkAgBigCHCIDQQJ0QfTgBGoiAigCACAGRgRAIAIgBzYCACAHDQFByN4EQcjeBCgCAEF+IAN3cTYCAAwCCyALQRBBFCALKAIQIAZGG2ogBzYCACAHRQ0BCyAHIAs2AhggBigCECICBEAgByACNgIQIAIgBzYCGAsgBigCFCICRQ0AIAcgAjYCFCACIAc2AhgLIAxBD00EQCAEIAlBAXEgCnJBAnI2AgQgBCAKaiICIAIoAgRBAXI2AgQMAQsgBCAJQQFxIAVyQQJyNgIEIAQgBWoiAyAMQQNyNgIEIAQgCmoiAiACKAIEQQFyNgIEIAMgDBD3BQsgBCECCyACCyICBEAgAkEIag8LIAEQjwIiBEUEQEEADwsgBCAAQXxBeCAAQQRrKAIAIgJBA3EbIAJBeHFqIgIgASABIAJLGxAeGiAAENQBIAQLmQIAIABFBEBBAA8LAn8CQCAABH8gAUH\u002FAE0NAQJAQfzVBCgCACgCAEUEQCABQYB\u002FcUGAvwNGDQMMAQsgAUH\u002FD00EQCAAIAFBP3FBgAFyOgABIAAgAUEGdkHAAXI6AABBAgwECyABQYBAcUGAwANHIAFBgLADT3FFBEAgACABQT9xQYABcjoAAiAAIAFBDHZB4AFyOgAAIAAgAUEGdkE\u002FcUGAAXI6AAFBAwwECyABQYCABGtB\u002F\u002F8\u002FTQRAIAAgAUE\u002FcUGAAXI6AAMgACABQRJ2QfABcjoAACAAIAFBBnZBP3FBgAFyOgACIAAgAUEMdkE\u002FcUGAAXI6AAFBBAwECwtBxNQEQRk2AgBBfwVBAQsMAQsgACABOgAAQQELCxYAIABFBEBBAA8LQcTUBCAANgIAQX8LvAIAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACAkKCAkBAgMECgkKCggJBQYHCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCyACIAIoAgAiAUEEajYCACAAIAEyAQA3AwAPCyACIAIoAgAiAUEEajYCACAAIAEzAQA3AwAPCyACIAIoAgAiAUEEajYCACAAIAEwAAA3AwAPCyACIAIoAgAiAUEEajYCACAAIAExAAA3AwAPCyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAErAwA5AwAPCyAAIAIgAxEAAAsPCyACIAIoAgAiAUEEajYCACAAIAE0AgA3AwAPCyACIAIoAgAiAUEEajYCACAAIAE1AgA3AwAPCyACIAIoAgBBB2pBeHEiAUEIajYCACAAIAEpAwA3AwALcwEGfyAAKAIAIgMsAABBMGsiAUEJSwRAQQAPCwNAQX8hBCACQcyZs+YATQRAQX8gASACQQpsIgVqIAEgBUH\u002F\u002F\u002F\u002F\u002FB3NLGyEECyAAIANBAWoiBTYCACADLAABIQYgBCECIAUhAyAGQTBrIgFBCkkNAAsgAgvfEgIVfwF+IwBB0ABrIggkACAIIAE2AkwgCEE3aiEWIAhBOGohEQJAAkACQAJAA0BBACEHA0AgASENIAcgDkH\u002F\u002F\u002F\u002F\u002FB3NKDQIgByAOaiEOAkACQAJAIAEiBy0AACILBEADQAJAAkAgC0H\u002FAXEiAUUEQCAHIQEMAQsgAUElRw0BIAchCwNAIAstAAFBJUcEQCALIQEMAgsgB0EBaiEHIAstAAIhGSALQQJqIgEhCyAZQSVGDQALCyAHIA1rIgcgDkH\u002F\u002F\u002F\u002F\u002FB3MiF0oNCCAABEAgACANIAcQVwsgBw0GIAggATYCTCABQQFqIQdBfyEQAkAgASwAAUEwayIKQQlLDQAgAS0AAkEkRw0AIAFBA2ohB0EBIRIgCiEQCyAIIAc2AkxBACEMAkAgBywAACILQSBrIgFBH0sEQCAHIQoMAQsgByEKQQEgAXQiAUGJ0QRxRQ0AA0AgCCAHQQFqIgo2AkwgASAMciEMIAcsAAEiC0EgayIBQSBPDQEgCiEHQQEgAXQiAUGJ0QRxDQALCwJAIAtBKkYEQAJ\u002FAkAgCiwAAUEwayIBQQlLDQAgCi0AAkEkRw0AAn8gAEUEQCAEIAFBAnRqQQo2AgBBAAwBCyADIAFBA3RqKAIACyEPIApBA2ohAUEBDAELIBINBiAKQQFqIQEgAEUEQCAIIAE2AkxBACESQQAhDwwDCyACIAIoAgAiB0EEajYCACAHKAIAIQ9BAAshEiAIIAE2AkwgD0EATg0BQQAgD2shDyAMQYDAAHIhDAwBCyAIQcwAahD8BSIPQQBIDQkgCCgCTCEBC0EAIQdBfyEJAn9BACABLQAAQS5HDQAaIAEtAAFBKkYEQAJ\u002FAkAgASwAAkEwayIKQQlLDQAgAS0AA0EkRw0AIAFBBGohAQJ\u002FIABFBEAgBCAKQQJ0akEKNgIAQQAMAQsgAyAKQQN0aigCAAsMAQsgEg0GIAFBAmohAUEAIABFDQAaIAIgAigCACIKQQRqNgIAIAooAgALIQkgCCABNgJMIAlBAE4MAQsgCCABQQFqNgJMIAhBzABqEPwFIQkgCCgCTCEBQQELIRMDQCAHIRRBHCEKIAEiGCwAACIHQfsAa0FGSQ0KIAFBAWohASAHIBRBOmxqQd\u002FNBGotAAAiB0EBa0EISQ0ACyAIIAE2AkwCQCAHQRtHBEAgB0UNCyAQQQBOBEAgAEUEQCAEIBBBAnRqIAc2AgAMCwsgCCADIBBBA3RqKQMANwNADAILIABFDQcgCEFAayAHIAIgBhD7BQwBCyAQQQBODQpBACEHIABFDQcLIAAtAABBIHENCiAMQf\u002F\u002Fe3EiCyAMIAxBgMAAcRshDEEAIRBBqRAhFSARIQoCQAJAAkACfwJAAkACQAJAAn8CQAJAAkACQAJAAkACQCAYLAAAIgdBU3EgByAHQQ9xQQNGGyAHIBQbIgdB2ABrDiEEFBQUFBQUFBQOFA8GDg4OFAYUFBQUAgUDFBQJFAEUFAQACwJAIAdBwQBrDgcOFAsUDg4OAAsgB0HTAEYNCQwTCyAIKQNAIRxBqRAMBQtBACEHAkACQAJAAkACQAJAAkAgFEH\u002FAXEOCAABAgMEGgUGGgsgCCgCQCAONgIADBkLIAgoAkAgDjYCAAwYCyAIKAJAIA6sNwMADBcLIAgoAkAgDjsBAAwWCyAIKAJAIA46AAAMFQsgCCgCQCAONgIADBQLIAgoAkAgDqw3AwAMEwtBCCAJIAlBCE0bIQkgDEEIciEMQfgAIQcLIBEhASAHQSBxIQsgCCkDQCIcUEUEQANAIAFBAWsiASAcp0EPcUHw0QRqLQAAIAtyOgAAIBxCD1YhGiAcQgSIIRwgGg0ACwsgASENIAxBCHFFIAgpA0BQcg0DIAdBBHZBqRBqIRVBAiEQDAMLIBEhASAIKQNAIhxQRQRAA0AgAUEBayIBIBynQQdxQTByOgAAIBxCB1YhGyAcQgOIIRwgGw0ACwsgASENIAxBCHFFDQIgCSARIAFrIgFBAWogASAJSBshCQwCCyAIKQNAIhxCAFMEQCAIQgAgHH0iHDcDQEEBIRBBqRAMAQsgDEGAEHEEQEEBIRBBqhAMAQtBqxBBqRAgDEEBcSIQGwshFSAcIBEQkQIhDQsgEyAJQQBIcQ0PIAxB\u002F\u002F97cSAMIBMbIQwgCCkDQCIcQgBSIAlyRQRAIBEhDUEAIQkMDAsgCSAcUCARIA1raiIBIAEgCUgbIQkMCwsgCCgCQCIBQbSJASABGyINQf\u002F\u002F\u002F\u002F8HIAkgCUH\u002F\u002F\u002F\u002F\u002FB08bEIYGIgEgDWohCiAJQQBOBEAgCyEMIAEhCQwLCyALIQwgASEJIAotAAANDgwKCyAJBEAgCCgCQAwCC0EAIQcgAEEgIA9BACAMEF0MAgsgCEEANgIMIAggCCkDQD4CCCAIIAhBCGoiBzYCQEF\u002FIQkgBwshC0EAIQcDQAJAIAsoAgAiDUUNACAIQQRqIA0Q+QUiDUEASA0PIA0gCSAHa0sNACALQQRqIQsgByANaiIHIAlJDQELC0E9IQogB0EASA0MIABBICAPIAcgDBBdIAdFBEBBACEHDAELQQAhCiAIKAJAIQsDQCALKAIAIg1FDQEgCEEEaiIJIA0Q+QUiDSAKaiIKIAdLDQEgACAJIA0QVyALQQRqIQsgByAKSw0ACwsgAEEgIA8gByAMQYDAAHMQXSAPIAcgByAPSBshBwwICyATIAlBAEhxDQlBPSEKIAAgCCsDQCAPIAkgDCAHIAURRwAiB0EATg0HDAoLIAggCCkDQDwAN0EBIQkgFiENIAshDAwECyAHLQABIQsgB0EBaiEHDAALAAsgAA0IIBJFDQJBASEHA0AgBCAHQQJ0aigCACIABEAgAyAHQQN0aiAAIAIgBhD7BUEBIQ4gB0EBaiIHQQpHDQEMCgsLQQEhDiAHQQpPDQgDQCAEIAdBAnRqKAIADQEgB0EBaiIHQQpHDQALDAgLQRwhCgwFCyAJIAogDWsiCyAJIAtKGyIBIBBB\u002F\u002F\u002F\u002F\u002FwdzSg0DQT0hCiAPIAEgEGoiCSAJIA9IGyIHIBdKDQQgAEEgIAcgCSAMEF0gACAVIBAQVyAAQTAgByAJIAxBgIAEcxBdIABBMCABIAtBABBdIAAgDSALEFcgAEEgIAcgCSAMQYDAAHMQXSAIKAJMIQEMAQsLC0EAIQ4MAwtBPSEKC0HE1AQgCjYCAAtBfyEOCyAIQdAAaiQAIA4LfwIBfwF+IAC9IgNCNIinQf8PcSICQf8PRwR8IAJFBEAgASAARAAAAAAAAAAAYQR\u002FQQAFIABEAAAAAAAA8EOiIAEQ\u002FgUhACABKAIAQUBqCzYCACAADwsgASACQf4HazYCACADQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F+HgH+DQoCAgICAgIDwP4S\u002FBSAACwukAwMCfAJ\u002FAX4gAL0iB0KAgICAgP\u002F\u002F\u002F\u002F8Ag0KBgICA8ITl8j9UIgZFBEBEGC1EVPsh6T8gACAAmiAHQgBZIgUboUQHXBQzJqaBPCABIAGaIAUboaAhAEQAAAAAAAAAACEBCyAAIAAgACAAoiIEoiIDRGNVVVVVVdU\u002FoiAEIAMgBCAEoiIDIAMgAyADIANEc1Ng28t1876iRKaSN6CIfhQ\u002FoKJEAWXy8thEQz+gokQoA1bJIm1tP6CiRDfWBoT0ZJY\u002FoKJEev4QERERwT+gIAQgAyADIAMgAyADRNR6v3RwKvs+okTpp\u002FAyD7gSP6CiRGgQjRr3JjA\u002FoKJEFYPg\u002FsjbVz+gokSThG7p4yaCP6CiRP5Bsxu6oas\u002FoKKgoiABoKIgAaCgIgOgIQEgBkUEQEEBIAJBAXRrtyIEIAAgAyABIAGiIAEgBKCjoaAiACAAoKEiACAAmiAFGw8LIAIEfEQAAAAAAADwvyABoyIEIAS9QoCAgIBwg78iBCADIAG9QoCAgIBwg78iASAAoaGiIAQgAaJEAAAAAAAA8D+goKIgBKAFIAELC7cyAxZ\u002FB34CfCMAQRBrIhAkACMAQaABayIDJAAgAyAANgI8IAMgADYCFCADQX82AhggA0EQaiIAEJUEIAMhESMAQTBrIgskAEGQzgQoAgAhD0GEzgQoAgAhDQNAAn8gACgCBCIDIAAoAmhHBEAgACADQQFqNgIEIAMtAAAMAQsgABBPCyIFEI8GDQALQQEhAwJAAkAgBUEraw4DAAEAAQtBf0EBIAVBLUYbIQMgACgCBCICIAAoAmhHBEAgACACQQFqNgIEIAItAAAhBQwBCyAAEE8hBQsCQAJAAkAgBUFfcUHJAEYEQANAIARBB0YNAgJ\u002FIAAoAgQiAiAAKAJoRwRAIAAgAkEBajYCBCACLQAADAELIAAQTwshBSAEQckLaiEVIARBAWohBCAVLAAAIAVBIHJGDQALCyAEQQNHBEAgBEEIRiICDQEgBEEESQ0CIAINAQsgACkDcCIXQgBZBEAgACAAKAIEQQFrNgIECyAEQQRJDQAgF0IAUyECA0AgAkUEQCAAIAAoAgRBAWs2AgQLIARBAWsiBEEDSw0ACwtCACEXIwBBEGsiBCQAAn4gA7JDAACAf5S8IgNB\u002F\u002F\u002F\u002F\u002FwdxIgBBgICABGtB\u002F\u002F\u002F\u002F9wdNBEAgAK1CGYZCgICAgICAgMA\u002FfAwBCyADrUIZhkKAgICAgIDA\u002F\u002F8AhCAAQYCAgPwHTw0AGkIAIABFDQAaIAQgAK1CACAAZyIAQdEAahBiIAQpAwAhFyAEKQMIQoCAgICAgMAAhUGJ\u002FwAgAGutQjCGhAshGCALIBc3AwAgCyAYIANBgICAgHhxrUIghoQ3AwggBEEQaiQAIAspAwghFyALKQMAIRgMAQsCQAJAAkACQCAEDQBBACEEIAVBX3FBzgBHDQADQCAEQQJGDQICfyAAKAIEIgIgACgCaEcEQCAAIAJBAWo2AgQgAi0AAAwBCyAAEE8LIQUgBEGRwABqIRYgBEEBaiEEIBYsAAAgBUEgckYNAAsLIAQOBAIBAQABCwJAAn8gACgCBCIDIAAoAmhHBEAgACADQQFqNgIEIAMtAAAMAQsgABBPC0EoRgRAQQEhBAwBC0KAgICAgIDg\u002F\u002F8AIRcgACkDcEIAUw0DIAAgACgCBEEBazYCBAwDCwNAAn8gACgCBCIDIAAoAmhHBEAgACADQQFqNgIEIAMtAAAMAQsgABBPCyIDQTBrQQpJIANBwQBrQRpJciADQd8ARnJFIANB4QBrQRpPcUUEQCAEQQFqIQQMAQsLQoCAgICAgOD\u002F\u002FwAhFyADQSlGDQIgACkDcCIaQgBZBEAgACAAKAIEQQFrNgIECyAERQ0CA0AgGkIAWQRAIAAgACgCBEEBazYCBAsgBEEBayIEDQALDAILIAApA3BCAFkEQCAAIAAoAgRBAWs2AgQLQcTUBEEcNgIAIAAQlQQMAQsCQCAFQTBHDQACfyAAKAIEIgQgACgCaEcEQCAAIARBAWo2AgQgBC0AAAwBCyAAEE8LQV9xQdgARgRAIAMhBCMAQbADayICJAACfyAAKAIEIgMgACgCaEcEQCAAIANBAWo2AgQgAy0AAAwBCyAAEE8LIQMCQAJ\u002FA0AgA0EwRwRAAkAgA0EuRw0EIAAoAgQiAyAAKAJoRg0AIAAgA0EBajYCBCADLQAADAMLBSAAKAIEIgMgACgCaEcEf0EBIQkgACADQQFqNgIEIAMtAAAFQQEhCSAAEE8LIQMMAQsLIAAQTwshA0EBIQEgA0EwRw0AA0AgGkIBfSEaAn8gACgCBCIDIAAoAmhHBEAgACADQQFqNgIEIAMtAAAMAQsgABBPCyIDQTBGDQALQQEhCQtCgICAgICAwP8\u002FIRgDQAJAIAMhBgJAAkAgA0EwayIFQQpJDQAgA0EuRyIKIANBIHIiBkHhAGtBBUtxDQIgCg0AIAENAkEBIQEgFyEaDAELIAZB1wBrIAUgA0E5ShshAwJAIBdCB1cEQCADIAdBBHRqIQcMAQsgF0IcWARAIAJBMGogAxB4IAJBIGogHCAYQgBCgICAgICAwP0\u002FECsgAkEQaiACKQMwIAIpAzggAikDICIcIAIpAygiGBArIAIgAikDECACKQMYIBkgGxBvIAIpAwghGyACKQMAIRkMAQsgA0UgCHINACACQdAAaiAcIBhCAEKAgICAgICA\u002Fz8QKyACQUBrIAIpA1AgAikDWCAZIBsQbyACKQNIIRtBASEIIAIpA0AhGQsgF0IBfCEXQQEhCQsgACgCBCIDIAAoAmhHBH8gACADQQFqNgIEIAMtAAAFIAAQTwshAwwBCwsCfiAJRQRAIAApA3BCAFkEQAJAIAAgACgCBCIDQQFrNgIEIAAgA0ECazYCBCABRQ0AIAAgA0EDazYCBAsLIAJB4ABqIAS3RAAAAAAAAAAAohCpASACKQNgIRkgAikDaAwBCyAXQgdXBEAgFyEYA0AgB0EEdCEHIBhCAXwiGEIIUg0ACwsCQAJAAkAgA0FfcUHQAEYEQCAAEIEGIhhCgICAgICAgICAf1INAyAAKQNwQgBZDQEMAgtCACEYIAApA3BCAFMNAgsgACAAKAIEQQFrNgIEC0IAIRgLIAdFBEAgAkHwAGogBLdEAAAAAAAAAACiEKkBIAIpA3AhGSACKQN4DAELIBogFyABG0IChiAYfEIgfSIXQQAgD2utVQRAQcTUBEHEADYCACACQaABaiAEEHggAkGQAWogAikDoAEgAikDqAFCf0L\u002F\u002F\u002F\u002F\u002F\u002F\u002F+\u002F\u002F\u002F8AECsgAkGAAWogAikDkAEgAikDmAFCf0L\u002F\u002F\u002F\u002F\u002F\u002F\u002F+\u002F\u002F\u002F8AECsgAikDgAEhGSACKQOIAQwBCyAPQeIBa6wgF1cEQCAHQQBOBEADQCACQaADaiAZIBtCAEKAgICAgIDA\u002F79\u002FEG8gGSAbQoCAgICAgID\u002FPxD1BSEAIAJBkANqIBkgGyACKQOgAyAZIABBAE4iABsgAikDqAMgGyAAGxBvIBdCAX0hFyACKQOYAyEbIAIpA5ADIRkgB0EBdCAAciIHQQBODQALCwJ+IBcgD6x9QiB8IhinIgBBACAAQQBKGyANIBggDa1TGyIAQfEATgRAIAJBgANqIAQQeCACKQOIAyEaIAIpA4ADIRxCAAwBCyACQeACakQAAAAAAADwP0GQASAAaxDVARCpASACQdACaiAEEHggAkHwAmogAikD4AIgAikD6AIgAikD0AIiHCACKQPYAiIaEIQGIAIpA\u002FgCIR0gAikD8AILIRggAkHAAmogByAHQQFxRSAZIBtCAEIAEOsBQQBHIABBIEhxcSIAchCOAiACQbACaiAcIBogAikDwAIgAikDyAIQKyACQZACaiACKQOwAiACKQO4AiAYIB0QbyACQaACaiAcIBpCACAZIAAbQgAgGyAAGxArIAJBgAJqIAIpA6ACIAIpA6gCIAIpA5ACIAIpA5gCEG8gAkHwAWogAikDgAIgAikDiAIgGCAdEJIEIAIpA\u002FABIhggAikD+AEiGkIAQgAQ6wFFBEBBxNQEQcQANgIACyACQeABaiAYIBogF6cQgwYgAikD4AEhGSACKQPoAQwBC0HE1ARBxAA2AgAgAkHQAWogBBB4IAJBwAFqIAIpA9ABIAIpA9gBQgBCgICAgICAwAAQKyACQbABaiACKQPAASACKQPIAUIAQoCAgICAgMAAECsgAikDsAEhGSACKQO4AQshFyALIBk3AxAgCyAXNwMYIAJBsANqJAAgCykDGCEXIAspAxAhGAwCCyAAKQNwQgBTDQAgACAAKAIEQQFrNgIECyAAIQIgAyEJQQAhBCMAQZDGAGsiASQAQQAgD2siDCANayEUAkACfwNAIAVBMEcEQAJAIAVBLkcNBCACKAIEIgAgAigCaEYNACACIABBAWo2AgQgAC0AAAwDCwUgAigCBCIAIAIoAmhHBH8gAiAAQQFqNgIEIAAtAAAFIAIQTwshBUEBIQQMAQsLIAIQTwshBUEBIQYgBUEwRw0AA0AgF0IBfSEXAn8gAigCBCIAIAIoAmhHBEAgAiAAQQFqNgIEIAAtAAAMAQsgAhBPCyIFQTBGDQALQQEhBAsgAUEANgKQBgJ+AkACQAJAIAVBLkYiACAFQTBrIgNBCU1yBEADQAJAIABBAXEEQCAGRQRAIBghF0EBIQYMAgsgBEUhAAwECyAYQgF8IRggB0H8D0wEQCAKIBinIAVBMEYbIQogAUGQBmogB0ECdGoiACAIBH8gBSAAKAIAQQpsakEwawUgAws2AgBBASEEQQAgCEEBaiIAIABBCUYiABshCCAAIAdqIQcMAQsgBUEwRg0AIAEgASgCgEZBAXI2AoBGQdyPASEKCwJ\u002FIAIoAgQiACACKAJoRwRAIAIgAEEBajYCBCAALQAADAELIAIQTwsiBUEuRiIAIAVBMGsiA0EKSXINAAsLIBcgGCAGGyEXIARFIAVBX3FBxQBHckUEQAJAIAIQgQYiGUKAgICAgICAgIB\u002FUg0AQgAhGSACKQNwQgBTDQAgAiACKAIEQQFrNgIECyAXIBl8IRcMAwsgBEUhACAFQQBIDQELIAIpA3BCAFMNACACIAIoAgRBAWs2AgQLIABFDQBBxNQEQRw2AgAgAhCVBEIAIRdCAAwBCyABKAKQBiIARQRAIAEgCbdEAAAAAAAAAACiEKkBIAEpAwghFyABKQMADAELIBcgGFIgGEIJVXIgDUEeTEEAIAAgDXYbckUEQCABQTBqIAkQeCABQSBqIAAQjgIgAUEQaiABKQMwIAEpAzggASkDICABKQMoECsgASkDGCEXIAEpAxAMAQsgDEEBdq0gF1MEQEHE1ARBxAA2AgAgAUHgAGogCRB4IAFB0ABqIAEpA2AgASkDaEJ\u002FQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F7\u002F\u002F\u002FwAQKyABQUBrIAEpA1AgASkDWEJ\u002FQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F7\u002F\u002F\u002FwAQKyABKQNIIRcgASkDQAwBCyAPQeIBa6wgF1UEQEHE1ARBxAA2AgAgAUGQAWogCRB4IAFBgAFqIAEpA5ABIAEpA5gBQgBCgICAgICAwAAQKyABQfAAaiABKQOAASABKQOIAUIAQoCAgICAgMAAECsgASkDeCEXIAEpA3AMAQsgCARAIAhBCEwEQCABQZAGaiAHQQJ0aiIAKAIAIQYDQCAGQQpsIQYgCEEBaiIIQQlHDQALIAAgBjYCAAsgB0EBaiEHCwJAIBenIgggCkggCkEJTnIgCEERSnINACAIQQlGBEAgAUHAAWogCRB4IAFBsAFqIAEoApAGEI4CIAFBoAFqIAEpA8ABIAEpA8gBIAEpA7ABIAEpA7gBECsgASkDqAEhFyABKQOgAQwCCyAIQQhMBEAgAUGQAmogCRB4IAFBgAJqIAEoApAGEI4CIAFB8AFqIAEpA5ACIAEpA5gCIAEpA4ACIAEpA4gCECsgAUHgAWpBACAIa0ECdEGAzgRqKAIAEHggAUHQAWogASkD8AEgASkD+AEgASkD4AEgASkD6AEQ9AUgASkD2AEhFyABKQPQAQwCCyANIAhBfWxqQRtqIgBBHkxBACABKAKQBiIDIAB2Gw0AIAFB4AJqIAkQeCABQdACaiADEI4CIAFBwAJqIAEpA+ACIAEpA+gCIAEpA9ACIAEpA9gCECsgAUGwAmogCEECdEG4zQRqKAIAEHggAUGgAmogASkDwAIgASkDyAIgASkDsAIgASkDuAIQKyABKQOoAiEXIAEpA6ACDAELA0AgAUGQBmogByIAQQFrIgdBAnRqKAIARQ0AC0EAIQoCQCAIQQlvIgRFBEBBACEDDAELQQAhAyAEQQlqIAQgCEEASBshBAJAIABFBEBBACEADAELQYCU69wDQQAgBGtBAnRBgM4EaigCACICbSEHQQAhBUEAIQYDQCABQZAGaiIMIAZBAnRqIg4gBSAOKAIAIg4gAm4iEmoiBTYCACADQQFqQf8PcSADIAVFIAMgBkZxIgUbIQMgCEEJayAIIAUbIQggByAOIAIgEmxrbCEFIAZBAWoiBiAARw0ACyAFRQ0AIABBAnQgDGogBTYCACAAQQFqIQALIAggBGtBCWohCAsDQCABQZAGaiADQQJ0aiEMIAhBJEghDgJAA0AgDkUEQCAIQSRHDQIgDCgCAEHR6fkETw0CCyAAQf8PaiEHQQAhBANAIAAhAiAErSABQZAGaiAHQf8PcSIFQQJ0aiIANQIAQh2GfCIXQoGU69wDVAR\u002FQQAFIBcgF0KAlOvcA4AiGEKAlOvcA359IRcgGKcLIQQgACAXpyIANgIAIAIgAiACIAUgABsgAyAFRhsgBSACQQFrQf8PcSIGRxshACAFQQFrIQcgAyAFRw0ACyAKQR1rIQogAiEAIARFDQALIANBAWtB\u002Fw9xIgMgAEYEQCABQZAGaiICIABB\u002Fg9qQf8PcUECdGoiACAAKAIAIAZBAnQgAmooAgByNgIAIAYhAAsgCEEJaiEIIAFBkAZqIANBAnRqIAQ2AgAMAQsLAkADQCAAQQFqQf8PcSECIAFBkAZqIABBAWtB\u002Fw9xQQJ0aiEFA0BBCUEBIAhBLUobIQcCQANAIAMhBEEAIQYCQANAAkAgBCAGakH\u002FD3EiAyAARg0AIAFBkAZqIANBAnRqKAIAIgMgBkECdEHQzQRqKAIAIgxJDQAgAyAMSw0CIAZBAWoiBkEERw0BCwsgCEEkRw0AQgAhF0EAIQZCACEYA0AgACAEIAZqQf8PcSIDRgRAIABBAWpB\u002Fw9xIgBBAnQgAWpBADYCjAYLIAFBgAZqIAFBkAZqIANBAnRqKAIAEI4CIAFB8AVqIBcgGEIAQoCAgIDlmreOwAAQKyABQeAFaiABKQPwBSABKQP4BSABKQOABiABKQOIBhBvIAEpA+gFIRggASkD4AUhFyAGQQFqIgZBBEcNAAsgAUHQBWogCRB4IAFBwAVqIBcgGCABKQPQBSABKQPYBRArIAEpA8gFIRhCACEXIAEpA8AFIRkgCkHxAGoiByAPayICQQAgAkEAShsgDSACIA1IIgUbIgNB8ABMDQIMBQsgByAKaiEKIAQgACIDRg0AC0GAlOvcAyAHdiEMQX8gB3RBf3MhDkEAIQYgBCEDA0AgAUGQBmoiEiAEQQJ0aiITIAYgEygCACITIAd2aiIGNgIAIANBAWpB\u002Fw9xIAMgBkUgAyAERnEiBhshAyAIQQlrIAggBhshCCAOIBNxIAxsIQYgBEEBakH\u002FD3EiBCAARw0ACyAGRQ0BIAIgA0cEQCAAQQJ0IBJqIAY2AgAgAiEADAMLIAUgBSgCAEEBcjYCAAwBCwsLIAFBkAVqRAAAAAAAAPA\u002FQeEBIANrENUBEKkBIAFBsAVqIAEpA5AFIAEpA5gFIBkgGBCEBiABKQO4BSEbIAEpA7AFIRwgAUGABWpEAAAAAAAA8D9B8QAgA2sQ1QEQqQEgAUGgBWogGSAYIAEpA4AFIAEpA4gFEIIGIAFB8ARqIBkgGCABKQOgBSIXIAEpA6gFIhoQkgQgAUHgBGogHCAbIAEpA\u002FAEIAEpA\u002FgEEG8gASkD6AQhGCABKQPgBCEZCwJAIARBBGpB\u002Fw9xIgYgAEYNAAJAIAFBkAZqIAZBAnRqKAIAIgZB\u002F8m17gFNBEAgBkUgBEEFakH\u002FD3EgAEZxDQEgAUHwA2ogCbdEAAAAAAAA0D+iEKkBIAFB4ANqIBcgGiABKQPwAyABKQP4AxBvIAEpA+gDIRogASkD4AMhFwwBCyAGQYDKte4BRwRAIAFB0ARqIAm3RAAAAAAAAOg\u002FohCpASABQcAEaiAXIBogASkD0AQgASkD2AQQbyABKQPIBCEaIAEpA8AEIRcMAQsgCbchHiAAIARBBWpB\u002Fw9xRgRAIAFBkARqIB5EAAAAAAAA4D+iEKkBIAFBgARqIBcgGiABKQOQBCABKQOYBBBvIAEpA4gEIRogASkDgAQhFwwBCyABQbAEaiAeRAAAAAAAAOg\u002FohCpASABQaAEaiAXIBogASkDsAQgASkDuAQQbyABKQOoBCEaIAEpA6AEIRcLIANB7wBKDQAgAUHQA2ogFyAaQgBCgICAgICAwP8\u002FEIIGIAEpA9ADIAEpA9gDQgBCABDrAQ0AIAFBwANqIBcgGkIAQoCAgICAgMD\u002FPxBvIAEpA8gDIRogASkDwAMhFwsgAUGwA2ogGSAYIBcgGhBvIAFBoANqIAEpA7ADIAEpA7gDIBwgGxCSBCABKQOoAyEYIAEpA6ADIRkCQCAUQQJrIAdB\u002F\u002F\u002F\u002F\u002FwdxTg0AIAEgGEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8AgzcDmAMgASAZNwOQAyABQYADaiAZIBhCAEKAgICAgICA\u002Fz8QKyABKQOQAyABKQOYA0KAgICAgICAuMAAEPUFIQAgASkDiAMgGCAAQQBOIgQbIRggASkDgAMgGSAEGyEZIAUgAiADRyAAQQBIcnEgFyAaQgBCABDrAUEAR3FFIBQgBCAKaiIKQe4Aak5xDQBBxNQEQcQANgIACyABQfACaiAZIBggChCDBiABKQP4AiEXIAEpA\u002FACCyEYIAsgFzcDKCALIBg3AyAgAUGQxgBqJAAgCykDKCEXIAspAyAhGAsgESAYNwMAIBEgFzcDCCALQTBqJAAgESkDACEXIBAgESkDCDcDCCAQIBc3AwAgEUGgAWokACAQKQMAIBApAwgQ8wUhHyAQQRBqJAAgHwv9AwIEfwF+AkACQAJ\u002FAkACQAJ\u002FIAAoAgQiASAAKAJoRwRAIAAgAUEBajYCBCABLQAADAELIAAQTwsiAUEraw4DAAEAAQsgAUEtRgJ\u002FIAAoAgQiASAAKAJoRwRAIAAgAUEBajYCBCABLQAADAELIAAQTwsiAUE6ayICQXVLDQEaIAApA3BCAFMNAiAAIAAoAgRBAWs2AgQMAgsgAUE6ayECQQALIQMgAkF2SQ0AAkAgAUEwa0EKTw0AQQAhAgNAIAEgAkEKbGpBMGsiAkHMmbPmAEgCfyAAKAIEIgEgACgCaEcEQCAAIAFBAWo2AgQgAS0AAAwBCyAAEE8LIgFBMGsiBEEJTXENAAsgAqwhBSAEQQpPDQADQCABrSAFQgp+fCEFAn8gACgCBCIBIAAoAmhHBEAgACABQQFqNgIEIAEtAAAMAQsgABBPCyIBQTBrIgJBCU0gBUIwfSIFQq6PhdfHwuujAVNxDQALIAJBCk8NAANAAn8gACgCBCIBIAAoAmhHBEAgACABQQFqNgIEIAEtAAAMAQsgABBPC0Ewa0EKSQ0ACwsgACkDcEIAWQRAIAAgACgCBEEBazYCBAtCACAFfSAFIAMbIQUMAQtCgICAgICAgICAfyEFIAApA3BCAFMNACAAIAAoAgRBAWs2AgRCgICAgICAgICAfw8LIAULygYCBX8EfiMAQYABayIFJAACQAJAAkAgAyAEQgBCABDrAUUNAAJ\u002FIARC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP4MhCwJ\u002FIARCMIinQf\u002F\u002FAXEiBkH\u002F\u002FwFHBEBBBCAGDQEaQQJBAyADIAuEUBsMAgsgAyALhFALCyEJIAJCMIinIghB\u002F\u002F8BcSIHQf\u002F\u002FAUYNACAJDQELIAVBEGogASACIAMgBBArIAUgBSkDECICIAUpAxgiASACIAEQ9AUgBSkDCCECIAUpAwAhBAwBCyABIAJC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAIMiCyADIARC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAIMiChDrAUEATARAIAEgCyADIAoQ6wEEQCABIQQMAgsgBUHwAGogASACQgBCABArIAUpA3ghAiAFKQNwIQQMAQsgBEIwiKdB\u002F\u002F8BcSEGIAcEfiABBSAFQeAAaiABIAtCAEKAgICAgIDAu8AAECsgBSkDaCILQjCIp0H4AGshByAFKQNgCyEEIAZFBEAgBUHQAGogAyAKQgBCgICAgICAwLvAABArIAUpA1giCkIwiKdB+ABrIQYgBSkDUCEDCyAKQv\u002F\u002F\u002F\u002F\u002F\u002F\u002Fz+DQoCAgICAgMAAhCEMIAtC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP4NCgICAgICAwACEIQsgBiAHSARAA0ACfiALIAx9IAMgBFatfSIKQgBZBEAgCiAEIAN9IgSEUARAIAVBIGogASACQgBCABArIAUpAyghAiAFKQMgIQQMBQsgCkIBhiAEQj+IhAwBCyALQgGGIARCP4iECyELIARCAYYhBCAHQQFrIgcgBkoNAAsgBiEHCwJAIAsgDH0gAyAEVq19IgpCAFMEQCALIQoMAQsgCiAEIAN9IgSEQgBSDQAgBUEwaiABIAJCAEIAECsgBSkDOCECIAUpAzAhBAwBCyAKQv\u002F\u002F\u002F\u002F\u002F\u002F\u002Fz9YBEADQCAEQj+IIQ0gB0EBayEHIARCAYYhBCANIApCAYaEIgpCgICAgICAwABUDQALCyAIQYCAAnEhBiAHQQBMBEAgBUFAayAEIApC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP4MgB0H4AGogBnKtQjCGhEIAQoCAgICAgMDDPxArIAUpA0ghAiAFKQNAIQQMAQsgCkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F8\u002FgyAGIAdyrUIwhoQhAgsgACAENwMAIAAgAjcDCCAFQYABaiQAC78CAQF\u002FIwBB0ABrIgQkAAJAIANBgIABTgRAIARBIGogASACQgBCgICAgICAgP\u002F\u002FABArIAQpAyghAiAEKQMgIQEgA0H\u002F\u002FwFJBEAgA0H\u002F\u002FwBrIQMMAgsgBEEQaiABIAJCAEKAgICAgICA\u002F\u002F8AECtB\u002Ff8CIAMgA0H9\u002FwJOG0H+\u002FwFrIQMgBCkDGCECIAQpAxAhAQwBCyADQYGAf0oNACAEQUBrIAEgAkIAQoCAgICAgIA5ECsgBCkDSCECIAQpA0AhASADQfSAfksEQCADQY3\u002FAGohAwwBCyAEQTBqIAEgAkIAQoCAgICAgIA5ECtB6IF9IAMgA0HogX1MG0Ga\u002FgFqIQMgBCkDOCECIAQpAzAhAQsgBCABIAJCACADQf\u002F\u002FAGqtQjCGECsgACAEKQMINwMIIAAgBCkDADcDACAEQdAAaiQACzwAIAAgATcDACAAIAJC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP4MgAkKAgICAgIDA\u002F\u002F8Ag0IwiKcgBEIwiKdBgIACcXKtQjCGhDcDCAsxAQJ\u002FAn8gABA9QQFqIQEDQEEAIAFFDQEaIAAgAUEBayIBaiICLQAAQS9HDQALIAILCxcBAX8gAEEAIAEQkgIiAiAAayABIAIbC9EBAQF\u002FAkACQCAAIAFzQQNxBEAgAS0AACECDAELIAFBA3EEQANAIAAgAS0AACICOgAAIAJFDQMgAEEBaiEAIAFBAWoiAUEDcQ0ACwsgASgCACICQX9zIAJBgYKECGtxQYCBgoR4cQ0AA0AgACACNgIAIAEoAgQhAiAAQQRqIQAgAUEEaiEBIAJBgYKECGsgAkF\u002Fc3FBgIGChHhxRQ0ACwsgACACOgAAIAJB\u002FwFxRQ0AA0AgACABLQABIgI6AAEgAEEBaiEAIAFBAWohASACDQALCwtFAQJ8IAAgAiACoiIEOQMAIAEgAiACRAAAAAIAAKBBoiIDIAIgA6GgIgKhIgMgA6IgAiACoCADoiACIAKiIAShoKA5AwALMwAgAQJ\u002FIAIoAkxBAEgEQCAAIAEgAhCXBAwBCyAAIAEgAhCXBAsiAEYEQA8LIAAgAW4aC30BAn8jAEEQayIBJAAgAUEKOgAPAkACQCAAKAIQIgIEfyACBSAAEJgEDQIgACgCEAsgACgCFCICRg0AIAAoAlBBCkYNACAAIAJBAWo2AhQgAkEKOgAADAELIAAgAUEPakEBIAAoAiQRAQBBAUcNACABLQAPGgsgAUEQaiQAC9sBAQR\u002FIAAoAlQhAwJAIAAoAhQiBiAAKAIcIgVHBEAgACAFNgIUIAAgBSAGIAVrIgUQiwYgBUkNAQsCQCADKAIQQeEARwRAIAMoAgAhBAwBCyADIAMoAgQiBDYCAAsgAygCDCAEaiABIAMoAgggBGsiASACIAEgAkkbIgQQHhogAyADKAIAIARqIgE2AgAgASADKAIETQ0AIAMgATYCBAJ\u002FIAMoAggiAiABSwRAIAMoAgwgAWoMAQsgAkUNASAAKAIAQQRxRQ0BIAMoAgwgAmpBAWsLQQA6AAALIAQLGAEBfyMAQRBrIgEgADkDCCABKwMIIACiC3UCAnwBfiAAAn4QBCIBRAAAAAAAQI9AoyICmUQAAAAAAADgQ2MEQCACsAwBC0KAgICAgICAgIB\u002FCyIDNwMAIAACfyABIANC6Ad+uaFEAAAAAABAj0CiIgGZRAAAAAAAAOBBYwRAIAGqDAELQYCAgIB4CzYCCAsoACABRAAAAAAAAMB\u002FoiAARIvdGhVmIJbAoBCaBKJEAAAAAAAAwH+iCxAAIABBIEYgAEEJa0EFSXILjAMCAn4DfyMAQSBrIgIkAEKAgICA4AAhBAJAIAAgAykDACIFEFUNACAAIAFBLRBeIgFCgICAgHCDQoCAgIDgAFENACAAAn4CQCAAQSAQXCIGRQ0AQQAhAyAGQQA2AhQgBkEANgIAIAZBBGohCANAIANBAkZFBEAgCCADQQN0aiIHIAc2AgQgByAHNgIAIANBAWohAwwBCwsgBkKAgICAMDcDGCABQoCAgIBwWgRAIAGnIAY2AiALIAAgAkEQaiIDIAEQqgUNAAJAIAAgBUKAgICAMEECIAMQHCIFQoCAgIBwg0KAgICA4ABRBEAgACgCECIDKQOAASEEIANCgICAgCA3A4ABIAIgBDcDCCAAIAIpAxhCgICAgDBBASACQQhqEBwhBCAAIAIpAwgQDCAEQoCAgIBwg0KAgICA4ABRDQEgACAEEAwLIAAgBRAMIAAgAikDEBAMIAEhBCACKQMYDAILIAAgAikDEBAMIAAgAikDGBAMQoCAgIDgACEECyABCxAMCyACQSBqJAAgBAuLAgEHfyABQQJ0QaCDBGooAgAiAiABQQF0QfCEBGovAQBqIQhBACEBAkADQCACIAhPDQEgAkEBaiEGAkACQCACLQAAIgRBP00EQCADIARBA3ZqQQFqIQIgAQRAIAAgAyACEGkNAwsgAUEBcyEBIARBB3EgAmpBAWohBQwBCwJ\u002FIAMgBGpB\u002FwBrIATAQQBIDQAaIAYtAAAhBSAEQd8ATQRAIAJBAmohBiADIARBCHRqIAVqQf\u002F\u002FAGsMAQsgAkEDaiEGIAItAAIgAyAEQRB0aiAFQQh0ampB\u002F\u002F\u002F\u002FAmsLIQUgAyECCyABBEAgACACIAUQaQ0BCyABQQFzIQEgBiECIAUhAwwBCwtBfyEHCyAHC7UCAQp\u002FIAFBBnEhByABQQJ2QQFxIQoCQANAIANB6x5KDQEgAiEEIANBsOQDai0AACIFQR9xIQkCfyADQQFqIAVBBXYiAkEHRw0AGiADQQJqIQUgA0Gx5ANqLAAAIgJB\u002FwFxIQYgAkEATgRAIAZBB2ohAiAFDAELIAVBsOQDai0AACEFIAJBv39NBEAgBkEIdCAFckH5\u002FgFrIQIgA0EDagwBCyADQbPkA2otAAAgBkEQdHIgBUEIdHJB+f7+BWshAiADQQRqCyEDIAIgBGpBAWohAgJAAkAgCUEfRgRAIAdFDQMgB0EGRg0BIAQgCmohBANAIAIgBE0NBCAAIAQgBEEBahBpIQsgBEECaiEEIAtFDQALDAILIAEgCXZBAXFFDQILIAAgBCACEGlFDQELC0F\u002FIQgLIAgLOABB8NECIAEQnQQiAUEASARAQX4PCyAAIAFBHU0Ef0IBIAGthqcFIAFBAnRBmNYCaigCAAsQkgYLmgYBBH9BASEJIAJBAXRBwPkCai8BACECIAVFBEAgACACNgIAQQEPCyACQcCEA2ohBkESIQcCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAFQQFrDiIAAAAAAAAAAQECAgICAgQDAwMDAwMFBQUFBQUFBQYHCAkJCwsgBiABIANrIAVsQQF0aiEBQQAhAgNAIAIgBUYEQCAFDwsgACACQQJ0aiABIAJBAXRqLwAAIgM2AgAgAkEBaiECIAMNAAsMCwsgBUEHayIIIAEgA2tsIQcgBiAEIAhsQQF0aiEBQQAhAgNAIAIgCEYNCiAGIAdBAXQiA2ovAAAgASAHQQJ2ai0AACADQQZxdkEQdEGAgAxxciIDRQ0LIAAgAkECdGogAzYCACACQQFqIQIgB0EBaiEHDAALAAsgBiAFQQlrIgggASADa2xqIQFBACECA0AgAiAIRg0JIAAgAkECdGogASACai0AABCkAyIDNgIAIAJBAWohAiADDQALDAkLIAVBAXEgBUEQayICQQFLaiEIIAJBAXZBAmohCQsgASADayEBQQAhAgNAIAIgCUYEQCAJDwUgACACQQJ0aiAGIAJBAXRqLwAAIAFBACACIAhGG2o2AgAgAkEBaiECDAELAAsACyAFQRVrIQcLIAYgByABIANrbGpBAmohASAGLwAAIQNBACECA0AgAiAHRgRAIAcPBSAAIAJBAnRqQSAgAyABIAJqLQAAIgRqIARB\u002FwFGGzYCACACQQFqIQIMAQsACwALIAAgBiABIANrQQNsaiIBLwAAIgI2AgAgAkUNAyAAIAEtAAIQpAM2AgQMAgsgACAGLwACNgIIIAAgBi8AADYCACAAIAYgASADa0EBdGovAAQ2AgRBAw8LIAEgA2shAQJ\u002FIAVBIUYEQCAGIAFBfnFqIgJBAWohAyACLQAAEKQDDAELIAYgAUEBdkEDbGoiAkECaiEDIAIvAAALIQIgAEEgQSBBASACQZAIa0EgSRsgAkGAAkkbIAJqIAIgAUEBcRs2AgAgACADLQAAEKQDNgIEC0ECIQgLIAgPC0EAC7QCAQh\u002FIwBB0ABrIgckACACQQAgAkEAShshCwNAAkACQCAGIAtHBEAgASAGQQJ0aigCACIFQYDYAmsiAkGj1wBNDQFBugUhAkEAIQQCQANAIAIgBEgNASAFIAIgBGpBAm0iCEECdEHQ4wJqKAIAIglBDnYiCkkEQCAIQQFrIQIMAQsgBSAJQQd2Qf8AcSIEIApqTwRAIAhBAWohBAwBCwsgCUEBcSADSw0AIAcgBSAIIAogBCAJQQF2QT9xEJQGIgJFDQAgACAHIAIgAxCVBgwDCyAAIAUQGwwCCyAHQdAAaiQADwsgACACQf\u002F\u002FA3EiBUHMBG4iBEGAInIQGyAAIAIgBEHMBGxrQf\u002F\u002FA3FBHG5B4SJqEBsgBUEccCICRQ0AIAAgAkGnI2oQGwsgBkEBaiEGDAALAAsiAQF\u002FQQEhASAAEJ4EBH9BAQUgAEHgnQJBgKMCQRUQpQMLC00BBX8gACgCCCEDIABBADYCCCAAKAIAIQQgAEIANwIAIAAoAhAhBSAAKAIMIQcgACADIAQgASACQQAQ7AEhACAHIANBACAFEQEAGiAAC7EBAQd\u002FIAAoAggiA0EEaiEFIAAoAgAhBgNAIAFBAWoiAiAGTkUEQAJAIAMgAUECdGooAgAiByADIAJBAnRqKAIARgRAIAEhAgwBCwNAIAYgASICQQNqSgRAIAUgAUECdGooAgAgAyABQQJqIgFBAnRqKAIARg0BCwsgAyAEQQJ0aiIBIAc2AgAgASAFIAJBAnRqKAIANgIEIARBAmohBAsgAkECaiEBDAELCyAAIAQ2AgALEQAgAEHgjQJB0JMCQRcQpQMLzwEBA38gASACLwAAIAItAAJBEHRBgID8AHFySQRAIABBADYCAEEADwtBfyEFIAEgAiADQQFrIgRBA2xqIgMvAAAgAy0AAkEQdHJJBH9BACEDA0AgBCADa0ECSEUEQCADIARqQQJtIgUgBCACIAVBA2xqIgQvAAAgBC0AAkEQdEGAgPwAcXIgAUsiBhshBCADIAUgBhshAwwBCwsgACACIANBA2xqIgAvAAAgAC0AAiIAQRB0QYCA\u002FABxcjYCACADQQV0IABBBXZyQSBqBUF\u002FCwtuAQV\u002FQfECIQEDQCABIAJOBEAgACABIAJqQQF2IgNBAnRBoIACaigCACIEQQ92IgVJBEAgA0EBayEBDAILIAAgBEEIdkH\u002FAHEgBWpJBEBBAQ8FIANBAWohAgwCCwALCyAAQfCLAkHAjQJBBxClAwupAQECfyMAQRBrIgQkAAJ\u002FIAMEQCAEQQRqIABBAiABIAIQoARBAUYEQCAEKAIEDAILQYX2AyAAQYb2A0YNARpBkAcgAEHTP0YNARpBsAcgACAAQeM\u002FRhsMAQsgAEEgayAAIABB4QBrQRpJGyAAQf8ATQ0AGiAEQQRqIABBACABIAIQoAQhASAEKAIEIgIgACACQf8ASxsgACABQQFGGwshBSAEQRBqJAAgBQupAQEFfwJAIAFB\u002FwBLBEBB8QIhAwNAIAMgBEgNAiABIAMgBGpBAXYiBUECdEGggAJqKAIAIgZBD3YiB0kEQCAFQQFrIQMMAQsgASAGQQh2Qf8AcSAHak8EQCAFQQFqIQQMAQsLIAAgASACIAUgBhCgBA8LIAIEQCABQSByIAEgAUHBAGtBGkkbIQEMAQsgAUEgayABIAFB4QBrQRpJGyEBCyAAIAE2AgBBAQuRAgEDfyABKAIAIgJB\u002Fv8HTwRAIABBkClBABA\u002FQX8PCwJAIAJBAU0EQCAAQQJBfxC3ARoMAQsgASgCCCACQQJ0aiIEQQRrKAIAIgNBf0YEQCAEQQhrKAIAIQMLIAJBAXYhAiADQf\u002F\u002FA00EQCAAQRUgAhChBEEAIQIDQCACIAEoAgBODQIgACACQQJ0IgMgASgCCGovAQAQJiAAQX8gASgCCCADaigCBEEBayIDIANBfkYbQf\u002F\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\u002FwdxIAtB\u002FwdxQQp0ckGAgARqIQkMAgsgBUEBayIFLQAAIQsgCkEBayIKLQAAIQkMAgsgByEKCwJAIAVBAmsiBy8BACILQYD4A3FBgLgDRyAHIA5NciAMQQJHcg0AIAVBBGsiBS8BACIOQYD4A3FBgLADRw0AIAtB\u002FwdxIA5B\u002FwdxQQp0ckGAgARqIQsMAQsgByEFCyAAKAIYBH8gCSAAKAIcENYBIQkgCyAAKAIcENYBBSALCyAJRg0ACwwMC0G7GEG\u002F7ABBjhFB98UAEAAAC0GkGEG\u002F7ABBhRFB98UAEAAACyAEQQVqIgggCCAEKAABaiIKIAlBCUYiCxshBEF\u002FIQkgACABIAIgAyAKIAggCxsgB0EAQQAQpgRBAE4NDgwLCxABAAsgBEERaiIQIAQoAAFqIRIgBCgABSEOQQAhCiAEKAAJIgRB\u002F\u002F\u002F\u002F\u002FwdGIREDQAJAAkAgACABIAIgAyAQIAVBARCjBiIJQQFqDgIMAQALIAkhBSAEIApBAWoiCksgEXINAQsLIAogDkkNByASIQQgCiAOTQ0MIAAgASACIAMgCCAFQQMgCiAOaxCmBEEATg0MDAYLIAcgACgCACIJRg0GIAxFBEAgB0EBayEFIAghBAwMCyAHQQJrIQUgCCEEIAxBAkcNCyAFLwEAQYD4A3FBgLgDRyAFIAlNcg0LIAdBBGsiByAFIAcvAQBBgPgDcUGAsANGGyEFDAsLIAcgDU8NBQJAIAxFBEAgB0EBaiEFIActAAAhCAwBCyAHLwEAIghBgPgDcUGAsANHIAxBAkdyIA0gB0ECaiIFTXINACAFLwEAIglBgPgDcUGAuANHDQAgCEEKdEGA+D9xIAlB\u002FwdxckGAgARqIQggB0EEaiEFCyAELwABIQogACgCGARAIAggACgCHBDWASEICyAIIARBA2oiBygAAEkNBUEAIQkgCCAHIApBAWsiBEEDdGooAARLDQUDQCAEIAlJDQYgByAEIAlqQQF2IgtBA3RqIg4oAAAgCEsEQCALQQFrIQQMAQsgDigABCAISQRAIAtBAWohCQwBCwsgByAKQQN0aiEEDAoLIAcgDU8NBAJAIAxFBEAgB0EBaiEFIActAAAhCAwBCyAHLwEAIghBgPgDcUGAsANHIAxBAkdyIA0gB0ECaiIFTXINACAFLwEAIglBgPgDcUGAuANHDQAgCEEKdEGA+D9xIAlB\u002FwdxckGAgARqIQggB0EEaiEFCyAELwABIQogACgCGARAIAggACgCHBDWASEICyAIIARBA2oiBy8AAEkNBAJAIAcgCkEBayIEQQJ0ai8AAiIJQf\u002F\u002FA0YgCEH\u002F\u002FwNPcQ0AIAggCUsNBUEAIQkDQCAEIAlJDQYgByAEIAlqQQF2IgtBAnRqIg4vAAAgCEsEQCALQQFrIQQMAQsgDi8AAiAIQf\u002F\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\u002F\u002FA0wEQCAAQQEgBhChBAwBCyAAQQIgBhC3ARoLIAFFDQQgAEEbEA4MBAsgAEEEQQMgACgCMBsQDgsgECECDAILIAQgAkEBaiIHNgIcIABBBRAODAULIAIgCWohBUF\u002FIQICQCAIDQAgACgCKA0AIAAoAjQhDSAQIQILIABBGEEXIAZBIUYbQQAQtwEhBiAAIAU2AhggACADEKgDDQggBCAAKAIYNgIcIAAgBEEcakEpEKYDDQggAEEKEA4gACgCDA0IIAAoAgAgBmogACgCBCAGa0EEazYAAAsgBCgCHCEHIAJBAEgNAwJAAkACQAJAAkAgBy0AACIDQSprDgIBAgALIANBP0YNAiADQfsARw0HIActAAFBOmtBdUsNAyAAKAIoRQ0HDAgLIAdBAWohB0EAIQtB\u002F\u002F\u002F\u002F\u002FwchCgwFC0EBIQsgBCAHQQFqIgc2AhxB\u002F\u002F\u002F\u002F\u002FwchCgwEC0EBIQogBCAHQQFqIgc2AhxBACELDAMLIAQgB0EBajYCHCAEQRxqQQEQ1AIiCyEKAkAgBCgCHCIDLQAAIgVBLEcNACAEIANBAWo2AhxB\u002F\u002F\u002F\u002F\u002FwchCiADLQABIgVBOmtBdkkNACAEQRxqQQEQ1AIiCiALSA0FIAQoAhwtAAAhBQsgBUH\u002FAXFB\u002FQBGDQEgACgCKA0BCyAEIAc2AhwMAgsgACAEQRxqQf0AEKYDDQUgBCgCHCEHCwJAAkAgBy0AAEE\u002FRgRAIAQgB0EBaiIHNgIcIAAoAgQgAmshCUEAIQxBACEDDAELIAAoAgwhCAJAIApBAEwNACAIDQIgACgCBCACayEMIAAoAgAgAmohDkEAIQVBACEJA0AgBSAMSARAIAUgDmoiES0AACISQYCAAmotAAAhBkECIQMCQAJAAkACQCASQQFrDhYCAgICAwMGBgYGBgYGBgYGAwMGBgEABgtBAyEDCyARLwABIAN0IAZqIQYLIAlBAWohCQsgBSAGaiEFDAELCyAJQQBMDQAgAEEKEA4gACACQREQlgINAiAAKAIAIAJqQRw6AAAgACgCBCEGIAAoAgAgAmoiAyAJNgANIAMgCjYACSADIAs2AAUgAyAGIAJrQRFrNgABDAMLIAgNASAAKAIEIAJrIQkgACgCACACaiERQQAhBUEBIQgDQCAFIAlOBEBBASEMIAghAwwCCyAFIBFqIg4tAAAiEkGAgAJqLQAAIQZBASEMQQEhAwJAAkACQAJAIBJBAWsOGwICAgIDAwUFBQUDAwMFAwMDAwMDAAEFBQMFAwULIA4vAAFBAnQgBmohBgwBCyAOLwABQQN0IAZqIQYLQQAhCAsgBSAGaiEFDAALAAsgC0UEQCAAKAI0IA1HBEAgACACQQMQlgINAiAAKAIAIAJqQQ06AAAgACgCACACaiANOgABIAAoAgAgAmogAC0ANEEBazoAAiACQQNqIQILIApFBEAgACACNgIEDAMLIApB\u002F\u002F\u002F\u002F\u002FwdGIgZFIApBAUdxRQRAIAAgAiADQQVqEJYCDQIgACgCACACaiAMQQhyOgAAIAAoAgAgAmoiCCADQQF0QQVBACAGG2ogCWo2AAEgAwRAIAhBGToABSAAQRoQDgsgCkH\u002F\u002F\u002F\u002F\u002FB0cNAyAAQQcgAhCVAgwDCyAAIAIgA0EKahCWAg0BIAAoAgAgAmpBDzoAACAAKAIAIAJqIgYgDEEIcjoABSAGIAo2AAEgACgCACACaiIGIANBAXQgCWpBBWo2AAYgAwRAIAZBGToACiAAQRoQDgsgAEEOIAJBBWoQlQIgAEEQEA4MAgsgAyALQQFHIApB\u002F\u002F\u002F\u002F\u002FwdHcnJFBEAgACAMQQlzIAIQlQIMAgsgC0EBRwRAIAAgAkEFEJYCDQEgACgCACACakEPOgAAIAAoAgAgAmogCzYAASAAQQ4gAkEFaiICEJUCIABBEBAOCyAKQf\u002F\u002F\u002F\u002F8HRgRAIAAoAgQhBiAAIAxBCHIgA0EBdCAJakEFahC3ARoCQCADBEAgAEEZEA4gACACIAkQ3wIgAEEaEA4MAQsgACACIAkQ3wILIABBByAGEJUCDAILIAogC0wNASAAQQ8gCiALaxC3ARogACgCBCEGIAAgDEEIciADQQF0IAlqQQVqELcBGgJAIAMEQCAAQRkQDiAAIAIgCRDfAiAAQRoQDgwBCyAAIAIgCRDfAgsgAEEOIAYQlQIgAEEQEA4MAQsgABDVAgwECyAAIAc2AhggAUUNASAAIAAoAgQiAiAQayIQIAJqELwBDQMgACgCACATaiIDIBBqIAMgAiATaxCrASAAKAIAIgMgE2ogAiADaiAQEB4aDAELCyAAQegYQQAQPwwBCyAAQdEfQQAQPwtBfyEdCyAEQdAAaiQAIB0LoggCCH4EfyMAQRBrIg0kACAEQcqeAWotAAAiD60hCgJAAkAgAykDACIGQv\u002F\u002F\u002F\u002F9vWARAQoCAgIDgACEFIAAgDUEIaiAGEKQBDQJCACEGIABCgICAgDAgDSkDCCIIIAqGEPoCIgdCgICAgHCDQoCAgIDgAFENAgwBCwJAAkAgBqciDi8BBiICQRNrQf\u002F\u002FA3FBAU0EQCAOKAIgIQ5CgICAgOAAIQUgACANIAMpAwgQpAENBCAOLQAEDQICQCANKQMAIgZBfyAPdEF\u002FcyIPrYNQBEAgDigCACICrCIHIAZaDQELIABB\u002FhtBABBEDAULAkAgAykDECIIQoCAgIBwg0KAgICAMFEEQCACIA9xDQEgByAGfSAKiCEIDAMLIAAgDUEIaiAIEKQBDQUgDi0ABA0DIA40AgAgDSkDCCIIIAqGIAZ8Wg0CCyAAQbvHAEEAEEQMBAsgAkEVa0H\u002F\u002FwNxQQpNBEAgACABIAYgBBD5AiEFDAQLQoCAgIDgACEFIAAgASAEEF4iCEKAgICAcINCgICAgOAAUQ0DQoCAgIAwIQECfgJAAkAgACAGQcwBIAZBABARIgxCgICAgHCDIgVCgICAgCBRIAVCgICAgDBRckUEQCAFQoCAgIDgAFENAkIAIQUCQCAAEDsiB0KAgICAcINCgICAgOAAUQRAQoCAgIDgACEBDAELQoCAgIDgACEBQoCAgIAwIQsCQCAAIAYgDBDkAyIJQoCAgIBwg0KAgICA4ABRDQBBACEEIAAgCUHrACAJQQAQESILQoCAgIBwg0KAgICA4ABRDQADQCAAIAkgCyANQQhqEJEBIgZCgICAgHCDQoCAgIDgAFENASANKAIIBEAgACAGEAwgACALEAwgACAJEAwgBK0hBSAHIQEMAwsgACAHIAStIAZBgIABEMgBQQBIDQEgBEEBaiEEDAALAAsgACALEAwgACAJEAwgACAHEAwLIAAgDBAMIAFCgICAgHCDQoCAgIDgAFINAQwCCyAAIA1BCGogBhAvDQEgDiAOKAIAQQFqNgIAIA0pAwghBSAGIQELIABCgICAgDAgBSAKhhD6AiIHQoCAgIBwg0KAgICA4ABRDQAgACAIIAdCACAFEOMDDQBBACEEA0AgCCAErSAFWQ0CGiAAIAEgBBCmASIHQoCAgIBwg0KAgICA4ABRDQEgACAIIAQgBxCGAiEQIARBAWohBCAQQQBODQALCyAAIAEQDCAIIQFCgICAgOAACyEFIAAgARAMDAMLIAMpAwAiB0IgiKdBdUkNASAHpyICIAIoAgBBAWo2AgAMAQsgABBfDAELIAAgASAEEF4iAUKAgICAcINCgICAgOAAUQRAIAAgBxAMDAELIAAgASAHIAYgCBDjA0UEQCABIQUMAQsgACABEAwLIA1BEGokACAFC9IEAgZ\u002FAX4jAEEgayIFJAAgACgCACEEIAVCADcCGCAFQoCAgICAgICAgH83AhAgBSAENgIMIAVBDGoiBCABIAJBIGoiAUHmDxCqAyAEIAQgAyABQeYPEEAaAkAgBSgCFEH\u002F\u002F\u002F\u002F\u002FB0YEQCAAECoMAQsjAEEwayICJAACQCAFQQxqIgMgAEcEQCAAKAIAIQcgAkIANwIoIAJCgICAgICAgICAfzcCICACIAc2AhwCfyADKAIIIgZBAEgEQEF\u002FQQAgAygCBBsMAQsgAkEcaiIEQSBBARCYAiAEIAMgBEEgQQIQiAEaIAJBGGogBEEAEO0BIAMoAgghBiACKAIYCyEIIAJBHGoiBCABIAZBACAGQQBKG2ogAUEBayABQQFqQQF2ELkEIgZuQQFqIgkgBmpBAXRqQRpqIgFBBhCYAiAEIAQgCKwgAUEAENgCIAQgAyAEIAFBABDuARogBEEAIAZrQQEQuQEaIAJCADcCECACQoCAgICAgICAgH83AgggAiAHNgIEIABCARAyGiAJrSEKA0AgCqdBAEoEQCACQQRqIgMgChAyGiADIAJBHGogAyABQQAQiAEaIAAgACADIAFBABBAGiAAIABCASABQQAQehogCkIBfSEKDAELC0EAIQMgBkEAIAZBAEobIQQgAkEEahAZIAJBHGoQGQNAIAMgBEcEQCAAIAAgACABQeAPEEAaIANBAWohAwwBCwsgACAIQeEPELkBGiACQTBqJAAMAQtB6e0AQdjsAEHUIUGzxAAQAAALCyAFQQxqEBkgBUEgaiQAQRALrwEBAn8jAEEgayIEJAAgACgCACEFIARBCGogA0EAEO0BIAAgASAEKAIIIgEgAUEfdSIBcyABayIBIAJBwAAgAUEBa2dBAXRrQQAgAUECTxtqQQhqIgJB4A8QrwMhASADKAIEBEAgBEIANwIYIARCgICAgICAgICAfzcCECAEIAU2AgwgBEEMaiIDQgEQMhogACADIAAgAkHgDxCIASABciEBIAMQGQsgBEEgaiQAIAELkAYCCH8BfiMAQfAAayIDJAAgACABRwRAIAAoAgAhBCADQgA3AmggA0KAgICAgICAgIB\u002FNwJgIAMgBDYCXCADQdwAaiIFIAEQSRogA0IANwJUIANCgICAgICAgICAfzcCTCADIAQ2AkggAygCZCEGIANBADYCZCADQcgAaiIBQqrVqtUKEDIaIANBADYCUCAFIAEQrAIEQCADIAMoAmRBAWo2AmQgBkEBayEGCyADQcgAahAZIAJBAWpBAXYQuQQhBSADQgA3AlQgA0KAgICAgICAgIB\u002FNwJMIAMgBDYCSCADQgA3AkAgA0KAgICAgICAgIB\u002FNwI4IAMgBDYCNCADQdwAaiIBIAFCf0H\u002F\u002F\u002F\u002F\u002FA0EAEHoaIAVBACAFQQBKGyEJIAIgBWogAiAFQQF0bkEBaiIKQQF0akEgaiECQQAhAQNAIAEgCUZFBEAgA0HIAGoiByADQdwAaiIIQgEgAkEAEHoaIANBNGoiCyAHIAJBBhC1BCAHIAtCASACQQAQehogCCAIIAcgAkEAEIgBGiABQQFqIQEMAQsLIANCADcCLCADQoCAgICAgICAgH83AiQgAyAENgIgIANCADcCGCADQoCAgICAgICAgH83AhAgAyAENgIMIANBIGoiASADQdwAaiIEQgIgAkEAEHoaIAEgBCABIAJBABCIARogA0EMaiABIAEgAkEAEEAaIABCABAyGiAKrSEMA0AgDKdBAExFBEAgA0HIAGoiAUIBEDIaIANBNGoiBCAMQgGGQv7\u002F\u002F\u002F8Pg0IBhBAyGiABIAEgBCACQQAQiAEaIAAgACABIAJBABC4ARogACAAIANBDGogAkEAEEAaIAxCAX0hDAwBCwsgACAAQgEgAkEAEHoaIAAgACADQSBqIgEgAkEAEEAaIAEQGSADQQxqEBkgA0E0ahAZIANByABqEBkgACAFQQFqQQEQuQEaIANB3ABqIgEgAkEGEJgCIAEgASAGrCACQQAQ2AIgACAAIAEgAkEAELgBGiABEBkgA0HwAGokAEEQDwtB6e0AQdjsAEHtIkHDxAAQAAALEwAgACgCACABIAIgACgCBBEBAAsTACAAQbDqAEEAEBJCgICAgOAAC9YDAQd\u002FIAIoAgQgASgCBHMhBwJAAkACQAJAAkACQAJAIAEoAggiBkH9\u002F\u002F\u002F\u002FB0wEQCACKAIIIgVB\u002Ff\u002F\u002F\u002FwdKDQEgBkGAgICAeEcNBiAFQYCAgIB4Rg0EDAcLIAZB\u002F\u002F\u002F\u002F\u002FwdGDQEgAigCCCEFCyAFQf\u002F\u002F\u002F\u002F8HRw0BCyAAECpBAA8LIAZB\u002Fv\u002F\u002F\u002FwdHIgEgBUH+\u002F\u002F\u002F\u002FB0dyDQELIAAQKkEBDwsgAQ0BIAAgBxB\u002FQQAPCyAFQYCAgIB4RgRAIAAgBxB\u002FQQIPCwJAIAAoAgAiBSgCAEEAIAEoAgwiBiADQSFqQQV2IgggBiAIShsiCiACKAIMIghqIglBAnRBBGogBSgCBBEBACIGBEAgBkEAIAkgASgCDGtBAnQiCxAsIgYgC2ogASgCECABKAIMQQJ0EB4aIAAgCkEBahBQRQRAIAUgACgCECAGIAkgAigCECAIELMDRQ0CCyAFKAIAIAZBACAFKAIEEQEAGgsgABAqQSAPCyAGIAgQ2gIEQCAAKAIQIgUgBSgCAEEBcjYCAAsgACgCACIFKAIAIAZBACAFKAIEEQEAGiACKAIIIQIgASgCCCEBIAAgBzYCBCAAIAEgAmtBIGo2AgggACADIAQQmwIPCyAAIAcQgAFBAAsRACAAIAEgAiADIARBABC0BAtCAQF+IwBBEGsiAiQAQoCAgIDgACEEIAAgAkEIaiADKQMAEKQBRQRAIAAgASACKQMIQRQQ5QMhBAsgAkEQaiQAIAQLEQAgACABIAIgAyAEQQEQtAQLQAEBfiMAQRBrIgIkAEKAgICA4AAhBCAAIAJBCGogAykDABCkAUUEQCAAIAEgAikDCBD6AiEECyACQRBqJAAgBAs7AQF\u002FA0AgAgRAIAAtAAAhAyAAIAEtAAA6AAAgASADOgAAIAFBAWohASAAQQFqIQAgAkEBayECDAELCwsaACAALQAAIQIgACABLQAAOgAAIAEgAjoAAAtCAQF\u002FIAJBAXYhAgNAIAIEQCAALwEAIQMgACABLwEAOwEAIAEgAzsBACABQQJqIQEgAEECaiEAIAJBAWshAgwBCwsLGgAgAC8BACECIAAgAS8BADsBACABIAI7AQALQgEBfyACQQJ2IQIDQCACBEAgACgCACEDIAAgASgCADYCACABIAM2AgAgAUEEaiEBIABBBGohACACQQFrIQIMAQsLCxoAIAAoAgAhAiAAIAEoAgA2AgAgASACNgIAC0IBAX4gAkEDdiECA0AgAgRAIAApAwAhAyAAIAEpAwA3AwAgASADNwMAIAFBCGohASAAQQhqIQAgAkEBayECDAELCwscAQF+IAApAwAhAyAAIAEpAwA3AwAgASADNwMAC9QDAgF\u002FA34jAEEgayIGJAACQAJAAkAgBUEBcQRAQoCAgIDgACEHIAAgBkEYaiABQd8AEH4iBUUNAwJAIAUpAwAiAUKAgICAcFoEQCABpy0ABUEQcQ0BCyAAQZ0sQQAQEgwECyAGKQMYIghCgICAgHCDQoCAgIAwUQRAIAAgASACIAMgBBD+AiEHDAQLIAAgAyAEEP0CIglCgICAgHCDQoCAgIDgAFENAiAFKQMAIQEgBiACNwMQIAYgCTcDCCAGIAE3AwAgACAIIAUpAwhBAyAGEBwiAUL\u002F\u002F\u002F\u002F\u002Fb1YNASABQoCAgIBwg0KAgICA4ABRDQEgACABEAwgABAiDAILQoCAgIDgACEHIAAgBkEYaiABQdsAEH4iBUUNAiAGKQMYIQEgBS0AEEUEQCAAIAEQDCAAQfs5QQAQEgwDCyABQoCAgIBwg0KAgICAMFEEQCAAIAUpAwAgAiADIAQQHCEHDAMLIAAgAyAEEP0CIghCgICAgHCDQoCAgIDgAFIEQCAFKQMAIQcgBiAINwMQIAYgAjcDCCAGIAc3AwAgACABIAUpAwhBAyAGEBwhBwsgACABEAwgACAIEAwMAgsgASEHCyAAIAgQDCAAIAkQDAsgBkEgaiQAIAcLWgECfiACQQR2IQIDQCACBEAgACkDACEDIAAgASkDADcDACAAKQMIIQQgACABKQMINwMIIAEgBDcDCCABIAM3AwAgAUEQaiEBIABBEGohACACQQFrIQIMAQsLCzQBAn4gACkDACEDIAAgASkDADcDACAAKQMIIQQgACABKQMINwMIIAEgBDcDCCABIAM3AwALhAUCBH4BfyADKQMIIQYCQCAAIAMpAwAiBBD2AyICQQBOBEACQCABQoCAgIBwg0KAgICAMFINACAAKAIQKAKMASkDCCEBIAJFIAZCgICAgHCDQoCAgIAwUnINACAAIARBPSAEQQAQESIFQoCAgIBwg0KAgICA4ABRBEAgBQ8LIAAgBSABEE0hCCAAIAUQDCAIRQ0AIARCIIinQXVJDQIgBKciACAAKAIAQQFqNgIADAILAkACQAJAAkACQCAEQoCAgIBwVA0AIASnIgMvAQZBEkcNACADKAIgIgIgAigCAEEBajYCACACrUKAgICAkH+EIQUgBkKAgICAcINCgICAgDBSDQEgAygCJCICIAIoAgBBAWo2AgAgAq1CgICAgJB\u002FhCEEDAMLAkACQAJAIAIEQCAAIARB7QAgBEEAEBEiBUKAgICAcINCgICAgOAAUQRAQoCAgIAwIQYMCAsgBkKAgICAcINCgICAgDBRBEAgACAEQe4AIARBABARIgZCgICAgHCDQoCAgIDgAFINBAwICyAFIQQgBkIgiKdBdEsNAQwDCyAEQiCIp0F1TwRAIASnIgIgAigCAEEBajYCAAsgBkIgiKdBdUkNAQsgBqciAiACKAIAQQFqNgIACyAEIQULIAVCgICAgHCDQoCAgIAwUQRAIABBLxApIQUMAgsgACAFECUhByAAIAUQDCAHIgVCgICAgHCDQoCAgIDgAFENAwwBCyAAIAYQJSIGQoCAgIBwg0KAgICA4ABRDQILIAAgBSAGELkDIgRCgICAgHCDQoCAgIDgAFENASAAIAYQDAsgACABIAUgBBDLBQ8LIAAgBRAMIAAgBhAMC0KAgICA4AAPCyAEC68EAgR\u002FAX4jAEEgayIFJABCgICAgOAAIQkCQCAAIAFBIBBaIgdFDQAgBEHKngFqLQAAIQggACAFQQhqIAMpAwAQpAENACADKQMIIQEgBUIANwMYIAVBADYCFAJAIARBG0wEQCAAIAVBFGogARB1RQ0BDAILIARBHU0EQCAAIAVBGGogARDRBUUNAQwCCyAAIAUgARBCDQEgBEEeRgRAIAUgBSsDALY4AhQMAQsgBSAFKQMANwMYCyACQQNOBEAgACADKQMQEOQBQQFGIQYLIAcoAgwoAiAiAi0ABARAIAAQXwwBCyAHNQIUIAUpAwgiAUEBIAh0rHxUBEAgAEHd4QBBABBEDAELIAGnIAIoAgggBygCEGpqIQACQAJAAkACQAJAIARBFmsOCgAAAQECAgMDAgMECyAAIAUoAhQ6AABCgICAgDAhCQwECyAFKAIUIQQgACAEIARBCHQgBEGA\u002FgNxQQh2ckH\u002F\u002FwNxIAYbOwAAQoCAgIAwIQkMAwsgACAFKAIUIgAgAEEYdCAAQYD+A3FBCHRyIABBCHZBgP4DcSAAQRh2cnIgBhs2AABCgICAgDAhCQwCCyAAIAUpAxgiASABQjiGIAFCgP4Dg0IohoQgAUKAgPwHg0IYhiABQoCAgPgPg0IIhoSEIAFCCIhCgICA+A+DIAFCGIhCgID8B4OEIAFCKIhCgP4DgyABQjiIhISEIAYbNwAAQoCAgIAwIQkMAQsQAQALIAVBIGokACAJC5IHAgF+BH8jAEEQayIHJABCgICAgOAAIQUCQCAAIAFBIBBaIghFDQAgBEHKngFqLQAAIQkgACAHQQhqIAMpAwAQpAENACACQQJOBEAgACADKQMIEOQBQQFGIQYLIAgoAgwoAiAiAi0ABARAIAAQXwwBCyAINQIUIAcpAwgiAUEBIAl0rHxUBEAgAEHd4QBBABBEDAELIAGnIAIoAgggCCgCEGpqIQICQAJAAkACQAJAAkACQAJAAkACQAJAIARBFmsOCgoAAQIDBAUGBwgJCyACMQAAIQUMCgsgAi8AACIAIABBCHQgAEEIdnIgBhutw0L\u002F\u002F\u002F\u002F\u002FD4MhBQwJCyACLwAAIgAgAEEIdCAAQQh2ciAGG61C\u002F\u002F8DgyEFDAgLIAIoAAAiACAAQRh0IABBgP4DcUEIdHIgAEEIdkGA\u002FgNxIABBGHZyciAGG60hBQwHCyACKAAAIgAgAEEYdCAAQYD+A3FBCHRyIABBCHZBgP4DcSAAQRh2cnIgBhsiAEEATgRAIACtIQUMBwtCgICAgMB+IAC4vSIBQoCAgIDAgYD8\u002FwB9IAFCgICAgICAgPj\u002FAFYbIQUMBgsgACACKQAAIgEgAUI4hiABQoD+A4NCKIaEIAFCgID8B4NCGIYgAUKAgID4D4NCCIaEhCABQgiIQoCAgPgPgyABQhiIQoCA\u002FAeDhCABQiiIQoD+A4MgAUI4iISEhCAGGxC\u002FAiEFDAULIAAgAikAACIBIAFCOIYgAUKA\u002FgODQiiGhCABQoCA\u002FAeDQhiGIAFCgICA+A+DQgiGhIQgAUIIiEKAgID4D4MgAUIYiEKAgPwHg4QgAUIoiEKA\u002FgODIAFCOIiEhIQgBhsQiAQhBQwEC0KAgICAwH4gAigAACIAIABBGHQgAEGA\u002FgNxQQh0ciAAQQh2QYD+A3EgAEEYdnJyIAYbvru9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhshBQwDC0KAgICAwH4gAikAACIBIAFCOIYgAUKA\u002FgODQiiGhCABQoCA\u002FAeDQhiGIAFCgICA+A+DQgiGhIQgAUIIiEKAgID4D4MgAUIYiEKAgPwHg4QgAUIoiEKA\u002FgODIAFCOIiEhIQgBhsiAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGyEFDAILEAEACyACMAAAQv\u002F\u002F\u002F\u002F8PgyEFCyAHQRBqJAAgBQurAQIEfwF+IwBBEGsiBSQAIAUgAq03AwgCQCAAIAFBASAFQQhqEL8DIgFCgICAgHCDQoCAgIDgAFENACACQQAgAkEAShshAgNAIAIgBEYNASADIARBA3RqKQMAIghCIIinQXVPBEAgCKciBiAGKAIAQQFqNgIACyAAIAEgBCAIEIYCIQcgBEEBaiEEIAdBAE4NAAsgACABEAxCgICAgOAAIQELIAVBEGokACABC4EHAgl+BX8jAEEwayINJAAgAykDACEEIA1CgICAgDA3AxhBASEOAkACQAJ+IAJBAkgEQEKAgICAMCEKQoCAgIAwDAELQoCAgIAwIAMpAwgiCkKAgICAcINCgICAgDBRDQAaQoCAgIAwIQlCgICAgDAhBkKAgICAMCEHQoCAgIAwIQUgACAKEFUNAUEAIQ5CgICAgDAgAkECRg0AGiADKQMQCyELAkACQCAAIARBzAEgBEEAEBEiBkKAgICAcIMiBUKAgICAMFIEQCAFQoCAgIDgAFEEQEKAgICAMCEJQoCAgIAwIQZCgICAgDAhBwwDCyAAIAYQDCAAEDsiB0KAgICAcINCgICAgOAAUQRAQoCAgIAwIQlCgICAgDAhBkKAgICA4AAhBwwDCyAEQiCIp0F1TwRAIASnIgIgAigCAEEBajYCAAsgDSAENwMQIAAgDUEQakEIckEAEIUDIQ8gDSkDGCEJIA0pAxAhBiAPDQJCACEFA0AgACAGIAkgDUEEahCRASIEQoCAgIBwg0KAgICA4ABSBEAgDSgCBA0DIAAgByAFIAQQZyEQIAVCAXwhBSAQQQBODQELC0KAgICAMCEFIAZCgICAgHCDQoCAgIAwUQ0DIAAgBkEBEJABGgwDC0KAgICAMCEJQoCAgIAwIQZCgICAgDAhBSAAIAQQICIHQoCAgIBwg0KAgICA4ABRDQILIAAgDUEIaiAHEC9BAEgNACANAn4gDSkDCCIEQoCAgIAIfEL\u002F\u002F\u002F\u002F\u002FD1gEQCAEQv\u002F\u002F\u002F\u002F8PgwwBC0KAgICAwH4gBLm9IgVCgICAgMCBgPz\u002FAH0gBUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLIgg3AyAgACABQQEgDUEgahC\u002FAyEFIAAgCBAMAkAgBUKAgICAcINCgICAgOAAUQ0AQgAhCCAEQgAgBEIAVRshDANAIAggDFENBCAAIAcgCBBsIgRCgICAgHCDQoCAgIDgAFENAQJAIA4EQCAEIQEMAQsgDSAENwMgIA0gCEL\u002F\u002F\u002F\u002F\u002FD4M3AyggACAKIAtBAiANQSBqEBwhASAAIAQQDCABQoCAgIBwg0KAgICA4ABRDQILIAAgBSAIIAEQeyERIAhCAXwhCCARQQBODQALCwwBC0KAgICAMCEFCyAAIAUQDEKAgICA4AAhBQsgACAHEAwgACAGEAwgACAJEAwgDUEwaiQAIAULDwAgACsDACABKwMAEMQECzkBAX5CgICAgMB+IAEpAwAiAkKAgICAwIGA\u002FP8AfSACQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwsRACAAKgIAuyABKgIAuxDEBAs7AQF+QoCAgIDAfiABKgIAu70iAkKAgICAwIGA\u002FP8AfSACQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwsZAQJ+IAEpAwAiAyAAKQMAIgRUIAMgBFZrCwwAIAAgASkDABCIBAsZAQJ+IAEpAwAiAyAAKQMAIgRTIAMgBFVrCwwAIAAgASkDABC\u002FAgsXACABKAIAIgEgACgCACIASSAAIAFJaws9AQF+IAEoAgAiAEEATgRAIACtDwtCgICAgMB+IAC4vSICQoCAgIDAgYD8\u002FwB9IAJCgICAgICAgPj\u002FAFYbC9sFAwV\u002FA34BfCMAQUBqIgUkAAJAAnwCQAJAAkACQAJAIAJBACABQoCAgIBwgyILQoCAgIAwUhsiAg4CAgABCwJAIAMpAwAiCUKAgICAcFQNACAJpyIELwEGQQpHDQAgBCkDICIKQiCIpyIEQQAgBEELakESSRsNACAAIAUgChBCDQMMBAsgBSAAIAlBAhC7AiIJNwM4IAlCgICAgHCDQoCAgICQf1EEQCAAIAEgBCAFQThqEKkFIQogACAJEAwgCkKAgICAcINCgICAgOAAUQ0DIAAgBSAKEG1FDQQMAwsgACAFIAkQbUUNAwwCCyAFQQBBOBAsIgZCgICAgICAgPg\u002FNwMQQQcgAiACQQdOGyIHQQAgB0EAShshAgNAAkAgAiAERwRAIAAgBkE4aiADIARBA3QiCGopAwAQQg0EIAYrAzgiDL1CgICAgICAgPj\u002FAINCgICAgICAgPj\u002FAFINASAEIQILRAAAAAAAAPh\u002FIAIgB0cNBRogBkEBEOsDDAULIAYgCGogDJ05AwACQCAEDQAgBisDACIMRAAAAAAAAAAAZkUgDEQAAAAAAABZQGNFcg0AIAYgDEQAAAAAALCdQKA5AwALIARBAWohBAwACwALEKgFuQwCC0KAgICA4AAhAQwCCyAFKwMAIgydRAAAAAAAAAAAoEQAAAAAAAD4fyAMRAAA3MIIsj5DZRtEAAAAAAAA+H8gDEQAANzCCLI+w2YbCyEMAkAgACABQQoQXiIJQoCAgIBwg0KAgICA4ABRDQAgACAJAn4gDL0iAQJ\u002FIAyZRAAAAAAAAOBBYwRAIAyqDAELQYCAgIB4CyIEt71RBEAgBK0MAQtCgICAgMB+IAFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLEL0BIAtCgICAgDBSDQAgACAJIAQgBEETEKcFIQEgACAJEAwMAQsgCSEBCyAFQUBrJAAgAQsXACABKAIAIgEgACgCACIASCAAIAFIawsHACABNQIACw0AIAAvAQAgAS8BAGsLBwAgATMBAAsNACAALgEAIAEuAQBrCw4AIAEyAQBC\u002F\u002F\u002F\u002F\u002Fw+DCw0AIAAtAAAgAS0AAGsLBwAgATEAAAsNACAALAAAIAEsAABrCw4AIAEwAABC\u002F\u002F\u002F\u002F\u002Fw+DCxYAIAAgACkDwAEgAykDAEEDQX8QhwMLzQwEB38BfAF+AX0jAEEgayIGJABCgICAgOAAIQ0CQCAAIAEQigEiCUEASA0AQX8hBQJAAkACQCAJRQ0AQQEhCAJAAkAgBEEBRgRAQX8hCCAGIAlBAWsiBTYCHCACQQJIDQEgACAGQQhqIAMpAwgQQg0GIAYrAwgiDL1C\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgYCAgICAgPj\u002FAFoEQCAGQQA2AhwMAgsgDEQAAAAAAAAAAGYEQCAMIAW3Y0UNAiAGAn8gDJlEAAAAAAAA4EFjBEAgDKoMAQtBgICAgHgLNgIcDAILQX8hBSAMIAm3oCIMRAAAAAAAAAAAYw0EIAYCfyAMmUQAAAAAAADgQWMEQCAMqgwBC0GAgICAeAs2AhwMAQsgBkEANgIcIAJBAkgEQCAJIQIMAgsgACAGQRxqIAMpAwggCSICIAIQVg0FDAELQX8hAgsgAaciACgCICgCDCgCIC0ABARAQX8hBSAEQX9HDQJBf0EAIAM1AgRCIIZCgICAgDBSGyEFDAMLIAZCADcDEAJ\u002FQQcgAykDACIBQiCIpyIDIANBB2tBbkkbIgNBdkcEQCADQQdHBEBBfyEFIAMNAyAGIAHEIgE3AxAgAbkhDEEBIQdBAQwCCyAGAn4gAUKAgICAwIGA\u002FP8AfL8iDJlEAAAAAAAA4ENjBEAgDLAMAQtCgICAgICAgICAfwsiATcDEEEBIQcgDCABuWEMAQsgAachA0F\u002FIQUCfwJAAkAgAC8BBkEcaw4CAAEEC0EAIAZBEGogA0EEakEAELAERQ0BGgwDC0EBIQpCfyEBAkAgAygCDCIHQf\u002F\u002F\u002F\u002F8HRg0AAn5CACAHQQBMDQAaIAMoAggEQEIAIQEMAgsgB0HAAEsNASADKAIUIAMoAhAiA0ECdGoiCkEEaygCACILQSAgB2t2rSAHQSBNDQAaIANBAk8EfiAKQQhrNQIABUIACyALrUIghoRBwAAgB2utiAshAUEAIQoLIAYgATcDECAKDQJBAAshB0QAAAAAAAAAACEMQQALIQNBfyEFAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAC8BBkEVaw4LAQABAwQGBwsLCQoNCyADRQ0MIAYpAxAiDUKAAXxCgAJaDQwMAQsgA0UNCyAGKQMQIg1C\u002FwFWDQsLIAAoAiQhACAEQQFGBEAgDadB\u002F\u002F8DcSEDIAYoAhwhBQNAIAIgBUYNCyADIAAgBWotAABGDQwgBSAIaiEFDAALAAsgACAGKAIcIgJqIA2nQf\u002F\u002FA3EgCSACaxCSAiICRQ0KIAIgAGshBQwKCyADRQ0JIAYpAxAiDUKAgAJ8QoCABFoNCQwBCyADRQ0IIAYpAxAiDUL\u002F\u002FwNWDQgLIAAoAiQhACAGKAIcIQUgDadB\u002F\u002F8DcSEDA0AgAiAFRg0HIAAgBUEBdGovAQAgA0YNCCAFIAhqIQUMAAsACyADRQ0GIAYpAxAiDUKAgICACHxCgICAgBBaDQYMAQsgA0UNBSAGKQMQIg1C\u002F\u002F\u002F\u002F\u002Fw9WDQULIA2nIQMgACgCJCEAIAYoAhwhBQNAIAIgBUYNBCAAIAVBAnRqKAIAIANGDQUgBSAIaiEFDAALAAsgB0UNAyAMvUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KBgICAgICA+P8AWgRAIARBf0cNBSAAKAIkIQAgBigCHCEFA0AgAiAFRg0EIAAgBUECdGooAgBB\u002F\u002F\u002F\u002F\u002FwdxQYCAgPwHSw0FIAUgCGohBQwACwALIAwgDLYiDrtiDQMgACgCJCEAIAYoAhwhBQNAIAIgBUYNAyAAIAVBAnRqKgIAIA5bDQQgBSAIaiEFDAALAAsgB0UNAiAAKAIkIQAgDL1C\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgYCAgICAgPj\u002FAFoEQCAEQX9HDQQgBigCHCEFA0AgAiAFRg0DIAAgBUEDdGopAwBC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYNBCAFIAhqIQUMAAsACyAGKAIcIQUDQCACIAVGDQIgACAFQQN0aisDACAMYQ0DIAUgCGohBQwACwALIAcNASAAKAIkIQAgBigCHCEFIAYpAxAhAQNAIAIgBUYNASAAIAVBA3RqKQMAIAFRDQIgBSAIaiEFDAALAAtBfyEFCyAEQX9GDQELIAWtIQ0MAQsgBUEATq1CgICAgBCEIQ0LIAZBIGokACANC4MDAgR\u002FBH4jAEEgayIFJAACfiAAIAEQigEiCEEATgRAQSwhBwJAIAJBAEwgBHJFBEBCgICAgDAhCSADKQMAIgpCgICAgHCDQoCAgIAwUQ0BQoCAgIDgACAAIAoQJSIJQoCAgIBwg0KAgICA4ABRDQMaQX8hByAJpyIGKAIEQQFHDQEgBi0AECEHDAELQoCAgIAwIQkLIAAgBUEIakEAED4aQQAhAgJAA0AgAiAIRwRAAkAgAkUNACAHQQBOBEAgBUEIaiAHEDxFDQEMBAsgBUEIaiAGQQAgBigCBEH\u002F\u002F\u002F\u002F\u002FB3EQSw0DCyAAIAEgAhCmASILQoCAgIBwgyIKQoCAgIAgUSAKQoCAgIAwUXJFBEAgCkKAgICA4ABRDQMgBUEIaiAEBH4gACALENYEBSALCxCEAQ0DCyACQQFqIQIMAQsLIAAgCRAMIAVBCGoQNwwCCyAFKAIIKAIQIgJBEGogBSgCDCACKAIEEQAAIAAgCRAMC0KAgICA4AALIQwgBUEgaiQAIAwLXgEBfiAAIAFBABBrIgJFBEBCgICAgOAADwtCgICAgOAAIQQgAEKAgICAMCABIAIvAQYQ+QIiAUKAgICAcINCgICAgOAAUgRAIAAgASAAIAMQxQQhBCAAIAEQDAsgBAu9AgMDfwF+AXwjAEEgayIDJAAgAigCBEUEQCABKAIAIQUgAyACKAIAIgEgAigCHCAAKAIAIgAgAigCIGxqIAIoAhgRDgA3AxAgAyABIAIoAhwgBSACKAIgbGogAigCGBEOADcDGAJAIAEgAikDEEKAgICAMEECIANBEGoQHCIGQoCAgIBwg0KAgICA4ABRBEAgAkEBNgIEDAELAkACfyAGQv\u002F\u002F\u002F\u002F8PWARAIAanIgRBH3UgBEEAR3IMAQsgASADQQhqIAYQbUEASA0BIAMrAwgiB0QAAAAAAAAAAGQgB0QAAAAAAAAAAGNrCyIERQRAIAAgBUsgACAFSWshBAsgAigCCCgCICgCDCgCIC0ABEUNASACQQI2AgQMAQsgAkEBNgIECyABIAMpAxAQDCABIAMpAxgQDAsgA0EgaiQAIAQLoAICA38DfiMAQTBrIgIkAEKAgICA4AAhBwJAIAAgAUEAEGsiBUUNACAAIAJBDGogAykDACAFKAIoIgQgBBBWDQAgAiAENgIIIAMpAwgiCEKAgICAcINCgICAgDBSBEAgACACQQhqIAggBCAEEFYNASACKAIIIQQLIAIoAgwhAyAAIAFBABDHBCIIQoCAgIDwAINCgICAgOAAUQ0AIAUvAQYhBiAAIAgQDCAAIAFBABDIBCIJQoCAgIBwg0KAgICA4ABRDQAgBkHKngFqLQAAIQUgAiAJNwMYIAIgATcDECACIAQgA2siBEEAIARBAEobrTcDKCACIAinIAMgBXRqrTcDICAAQQQgAkEQahDhAiEHIAAgCRAMCyACQTBqJAAgBwvAAwIHfwR+IwBBIGsiAiQAQoCAgIAwIQsCQAJAIAAgARCKASIEQQBIDQAgACACQQxqIAMpAwAgBCAEEFYNACACIAQ2AgggAykDCCIMQoCAgIBwg0KAgICAMFIEQCAAIAJBCGogDCAEIAQQVg0BIAIoAgghBAsgAigCDCEDIAAgAUEAEGsiBkUNACAGLwEGIQkgAiAEIANrIgVBACAFQQBKGyIErSINNwMYIAIgATcDECAAQQIgAkEQahDhAiILQoCAgIBwg0KAgICA4ABRDQAgBUEATA0BIAlByp4Bai0AACEHIAAgARC6Aw0AIAAgCxC6Aw0AAkAgACALQQAQayIFRQ0AIAYvAQYiCCAFLwEGRw0AIAUoAiAoAhQgCEHKngFqLQAAIgh2IARJDQAgAyAEaiAGKAIgKAIUIAh2Sw0AIAUoAiQgBigCJCADIAd0aiAEIAd0EB4aDAILQgAhDANAIAwgDVENAiAAIAEgAyAMp2qtEE4iDkKAgICAcINCgICAgOAAUQ0BIAAgCyAMIA5BgIABEM8BIQogDEIBfCEMIApBAE4NAAsLIAAgCxAMQoCAgIDgACELCyACQSBqJAAgCwteAQF+IAAgAUEAEGsiAkUEQEKAgICA4AAPC0KAgICA4AAhBCAAQoCAgIAwIAEgAi8BBhD5AiIBQoCAgIBwg0KAgICA4ABSBEAgACABIAAgABDGBCEEIAAgARAMCyAEC7cCAgV+A38jAEEgayIKJABCgICAgDAhBQJAAkAgACABEIoBIgtBAEgNACAAIAMpAwAiCBBVDQBCgICAgDAhBiACQQJOBEAgAykDCCEGCyALQQFrQQAgBEF+cUECRiICGyEDQX9BASACGyEMQX8gCyACGyECA0AgAiADRwRAIAAgASADrSIHEE4iBUKAgICAcINCgICAgOAAUQ0CIAogATcDECAKIAc3AwggCiAFNwMAIAAgCCAGQQMgChAcIglCgICAgHCDQoCAgIDgAFENAiAAIAkQJwRAAkAgBEEBaw4DAAUABQsgACAFEAwgByEFDAQFIAAgBRAMIAMgDGohAwwCCwALC0KAgICAMEL\u002F\u002F\u002F\u002F\u002FDyAEQQFrQX1xGyEFDAELIAAgBRAMQoCAgIDgACEFCyAKQSBqJAAgBQubBQIEfwJ+IwBBIGsiBCQAQoCAgIDgACEJAkAgACABEIoBIgZBAEgNAAJAIAGnIgUvAQYiB0EVRgRAIAMpAwAiCEIgiKdBdU8EQCAIpyIHIAcoAgBBAWo2AgALIAAgBEEIaiAIENwFDQIgBCAENAIINwMQDAELIAdBG00EQCAAIARBCGogAykDABB1DQIgBCAENQIINwMQDAELIAdBHU0EQCAAIARBEGogAykDABDRBUUNAQwCCyAAIARBCGogAykDABBCDQEgBAJ+IAUvAQZBHkYEQCAEKwMItrytDAELIAQpAwgLNwMQCyAEQQA2AggCQCACQQFMBEAgBCAGNgIcDAELIAAgBEEIaiADKQMIIAYgBhBWDQEgBCAGNgIcIAJBAkYNACADKQMQIghCgICAgHCDQoCAgIAwUQ0AIAAgBEEcaiAIIAYgBhBWDQELIAUoAiAoAgwoAiAtAAQEQCAAEF8MAQsCQAJAAkACQAJAAkAgBS8BBkHKngFqLQAADgQAAQIDBAsgBCgCHCICIAQoAggiAEwNBCAFKAIkIABqIAQtABAgAiAAaxAsGgwECyAEKAIIIgAgBCgCHCICIAAgAkobIQIgBC8BECEDA0AgACACRg0EIAUoAiQgAEEBdGogAzsBACAAQQFqIQAMAAsACyAEKAIIIgAgBCgCHCICIAAgAkobIQIgBCgCECEDA0AgACACRg0DIAUoAiQgAEECdGogAzYCACAAQQFqIQAMAAsACyAEKAIIIgAgBCgCHCICIAAgAkobIQIDQCAAIAJGDQIgBSgCJCAAQQN0aiAEKQMQNwMAIABBAWohAAwACwALEAEACyABQiCIp0F1TwRAIAUgBSgCAEEBajYCAAsgASEJCyAEQSBqJAAgCQumAgIEfwJ+IwBBEGsiBSQAQoCAgIDgACEIAkAgACABEIoBIgRBAEgNACAAIAVBDGogAykDACAEIAQQVg0AIAAgBUEIaiADKQMIIAQgBBBWDQAgBSAENgIEAn8gBCACQQNIDQAaIAQgAykDECIJQoCAgIBwg0KAgICAMFENABogACAFQQRqIAkgBCAEEFYNASAFKAIECyAFKAIIIgdrIgYgBCAFKAIMIgNrIgIgAiAGShsiAkEASgRAIAGnIgYoAiAoAgwoAiAtAAQEQCAAEF8MAgsgBigCJCIAIAMgBi8BBkHKngFqLQAAIgN0aiAAIAcgA3RqIAIgA3QQqwELIAFCIIinQXVPBEAgAaciACAAKAIAQQFqNgIACyABIQgLIAVBEGokACAIC0oCAX4Bf0KAgICAMCECAkAgAUKAgICAcFQNACABpy8BBiIDQRVrQf\u002F\u002FA3FBCksNACAAIAAoAhAoAkQgA0EYbGooAgQQKSECCyACCywBAX5CgICAgOAAIQUgACABELoDBH5CgICAgOAABSAAIAEgACAAIAQQwgULC8EDAgR+BH8jAEEQayIIJABCgICAgDAhBUKAgICAMCEEIAJBAk4EQCADKQMIIQQLIAMpAwAhBkKAgICA4AAhBwJAIAAgAUEAEGsiAkUNACAAIAggBBDjAQ0AAkACQAJAAkACQCAIKQMAIgRCAFMEQAwBCyACKAIgKAIMKAIgLQAEDQQgACAGECAiBUKAgICAcINCgICAgOAAUQ0DIAWnIgMvAQYiCUEVa0H\u002F\u002FwNxQQpNBEAgAygCICIKKAIMKAIgIgstAAQNBSAEIAI1AiggAzUCKCIGfVUNASAJIAIvAQYiA0cNAiAEIANByp4BajEAACIBhqcgAigCICICKAIMKAIgKAIIIAIoAhBqaiALKAIIIAooAhBqIAYgAYanEKsBDAMLIAAgCEEIaiAFEC8NAyAEIAI1AiggCCkDCCIGfVcNAQsgAEGKxwBBABBEDAQLIASnIQJBACEDA0AgBiADrVcNASAAIAUgAxCmASIEQoCAgIBwg0KAgICA4ABRDQQgAiADaiEJIANBAWohAyAAIAEgCSAEEIYCQQBODQALDAMLQoCAgIAwIQcMAgsMAQsgABBfCyAAIAUQDCAIQRBqJAAgBwtRAgF\u002FAX5CgICAgOAAIQQgACABIAIQayIDBH4gAygCICIDKAIMKAIgLQAEBEAgAkUEQEIADwsgABBfQoCAgIDgAA8LIAM1AhQFQoCAgIDgAAsL2wECA34BfyMAQRBrIgIkAEKAgICA4AAhBAJAIAAgAUEAEGsiB0UNACAAIAJBCGogAykDABDjAQ0AIAIpAwgiBSAHNQIoIgYgBUI\u002Fh4N8IgVCAFkgBSAGU3FFBEAgAEHd4QBBABBEDAELIAAgAykDCEEBELsCIgZCgICAgHCDQoCAgIDgAFENACAAQoCAgIAwIAEgBy8BBhD5AiIBQoCAgIBwg0KAgICA4ABRBEAgACAGEAwMAQsgACABIAUgBhB7QQBOBEAgASEEDAELIAAgARAMCyACQRBqJAAgBAuNAQIDfgF\u002FIwBBEGsiAiQAQoCAgIDgACEFAkAgACABQQAQayIHRQ0AIAcoAiAoAgwoAiAtAAQEQCAAEF8MAQsgACACQQhqIAMpAwAQ4wENAEKAgICAMCEFIAIpAwgiBCAHNQIoIgYgBEI\u002Fh4N8IgRCAFMgBCAGWXINACAAIAEgBBBsIQULIAJBEGokACAFCx0AIAAgAUEAEGsiAEUEQEKAgICA4AAPCyAANQIoCz0BAX5CgICAgBAhASADKQMAIgRCgICAgHBaBH4gBKcvAQZBFWtB\u002F\u002F8DcUEMSa1CgICAgBCEBUKAgICAEAsL7gMCBX4CfyMAQSBrIgokAEKAgICA4AAhBQJAIAAgASAEEFoiC0UNACALLQAEBEAgABBfDAELIAAgCkEYaiADKQMAQgAgCzQCACIGIAYQZg0AIAogBjcDECADKQMIIgdCgICAgHCDQoCAgIAwUgRAIAAgCkEQaiAHQgAgBiAGEGYNASAKKQMQIQYLIAopAxghCSAAIAFCgICAgDAQ\u002FQEiB0KAgICAcIMiBUKAgICA4ABRBEAgByEFDAELIAYgCX0iBkIAIAZCAFUbIQgCQCAFQoCAgIAwUQRAIABCgICAgDAgCCAEEOUDIQUMAQsgCiAGQv\u002F\u002F\u002F\u002F8HVwR+IAhC\u002F\u002F\u002F\u002F\u002Fw+DBUKAgICAwH4gCLm9IgVCgICAgMCBgPz\u002FAH0gBUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLNwMIIAAgB0EBIApBCGoQowEhBSAAIAcQDCAAIAopAwgQDAsgBUKAgICAcINCgICAgOAAUQ0AAkAgACAFIAQQWiICRQ0AIAAgBSABEE0EQCAAQco0QQAQEgwBCwJAIAItAAQNACACNAIAIAhTBEAgAEHOwgBBABASDAILIAstAAQNACACKAIIIAsoAgggCadqIAinEB4aDAILIAAQXwsgACAFEAxCgICAgOAAIQULIApBIGokACAFC1EAIAAgASACEFoiAEUEQEKAgICA4AAPCyAAKAIAIgBBAE4EQCAArQ8LQoCAgIDAfiAAuL0iAUKAgICAwIGA\u002FP8AfSABQoCAgICAgID4\u002FwBWGwv\u002FAwICfwF+AkACQAJAAkACQAJAIAFCgICAgHBaBEAgAaciAi8BBkErRg0BCyAEQQE2AgAMAQsgAigCICEGIARBATYCACAGDQELIABBsS1BABASDAELIAYoAgQhAgJAAkACQAJ\u002FAkACQAJAAkAgBigCACIHQQFrDgQCAgcBAAsgBUUNAiAAIAYQyQQLQoCAgIAwIQEgBUEBaw4CAwQHCyADKQMAIgFCIIinQXVPBEAgAaciAyADKAIAQQFqNgIACwJAIAVBAkcNAEEBIQMgB0EBRw0AIAAgARCYASAGKAIEDAILIAIoAmQiAyAFrTcDACADQQhrIAE3AwAgAiADQQhqNgJkC0EAIQMgAgsiBSADNgIcIAZBAzYCACAAIAUQsQIhASAGQQE2AgAgBigCBCgCIARAIAAgBhDJBCABDwsgAUKAgICAEFoNBSACKAJkQQhrIgApAwAhCCAAQoCAgIAwNwMAIAFCAlEEQCAGQQI2AgAgBEECNgIAIAgPCyAEQQA2AgAgCA8LIAMpAwAiAUIgiKdBdUkNAyABpyIAIAAoAgBBAWo2AgAgAQ8LIAMpAwAiAUIgiKdBdU8EQCABpyICIAIoAgBBAWo2AgALIAAgARCYAQwBCyAAQY8tQQAQEgtCgICAgOAAIQELIAEPC0HW8QBBqOwAQaCUAUHEFBAAAAt3AQF+IAMpAwAiAUKAgICAcINCgICAgIB\u002FUgRAIABBkcEAQQAQEkKAgICA4AAPC0KAgICAMCEEIAGnIgApAgRCgICAgICAgIBAg0KAgICAgICAgIB\u002FUQR+IAAgACgCAEEBajYCACABQoCAgICQf4QFQoCAgIAwCws8AQF+QoCAgIDgACEBIAAgAykDABAlIgRCgICAgHCDQoCAgIDgAFIEfiAAIASnQQIQ5gMFQoCAgIDgAAsLVgIBfgF\u002FIAAgARC7AyIBQoCAgIBwg0KAgICA4ABRBEAgAQ8LQoCAgIAwIQIgAaciAygCBEGAgICAeEcEQCAAIAAoAhAgAxDGAhApIQILIAAgARAMIAILCQAgACABELsDC1sBAX4jAEEQayICJAAgAiAAIAEQuwMiATcDCAJAIAFCgICAgHCDQoCAgIDgAFEEQCABIQQMAQsgAEKAgICAMEEBIAJBCGoQygQhBCAAIAEQDAsgAkEQaiQAIAQLLQBCgICAgOAAIAAgAykDACADKQMIQQAQiQIiAEEAR61CgICAgBCEIABBAEgbC6ABAQN+IAMpAwAiBSEEIAJBBE4EQCADKQMYIQQLIAVC\u002F\u002F\u002F\u002F\u002F29YBEAgABAiQoCAgIDgAA8LIAMpAxAhAUKAgICA4AAhBgJAIAAgAykDCBAwIgJFDQAgAUIgiKdBdU8EQCABpyIDIAMoAgBBAWo2AgALIAAgBSACIAEgBEEAENABIQMgACACEBAgA0EASA0AIANBAEetQoCAgIAQhCEGCyAGCyoAIAMpAwAiAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECJCgICAgOAADwsgACABQQNBABCyAgtjAQF+IAMpAwAiBEL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECJCgICAgOAADwtCgICAgOAAIQECQCAAIAMpAwgQMCICRQ0AIAAgBCACEG4hAyAAIAIQECADQQBIDQAgA0EAR61CgICAgBCEIQELIAELYwEDfgJAAkAgAykDACIBQv\u002F\u002F\u002F\u002F9vWARAIAAQIgwBCyADKQMIIQUgASEEIAJBA04EQCADKQMQIQQLIAAgBRAwIgINAQtCgICAgOAADwsgACABIAIgBEEAEBEhBiAAIAIQECAGC2YBAX4gAykDACIEQv\u002F\u002F\u002F\u002F9vWARAIAAQIkKAgICA4AAPC0KAgICA4AAhAQJAIAAgAykDCBAwIgJFDQAgACAEIAJBABDNASEDIAAgAhAQIANBAEgNACADQQBHrUKAgICAEIQhAQsgAQuaAQIBfwJ+IwBBEGsiBCQAIAMpAwghBSADKQMAIgYhAQJAAkACQAJAIAJBA0gNACADKQMQIgFCgICAgHBaBEAgAactAAVBEHENAQsgAEGdLEEAEBIMAQsgACAEQQxqIAUQ\u002FQMiAg0BC0KAgICA4AAhAQwBCyAAIAYgASAEKAIMIgMgAhD+AiEBIAAgAiADEIYDCyAEQRBqJAAgAQt5AQF\u002FIAFCgICAgHCDQoCAgIAwUgRAIABBnSxBABASQoCAgIDgAA8LAn4CQCACRQ0AIAMpAwAiAUKAgICAcINCgICAgDBRDQBCgICAgOAAIAAgARAlIgFCgICAgHCDQoCAgIDgAFENARogAachBAsgACAEQQMQ5gMLCxUAIAAgAykDACADIANBCGpBAhCIAws3ACMAQRBrIgIkACAAIAJBDGogAykDABB1IQAgAigCDCEDIAJBEGokAEKAgICA4AAgA2etIAAbC04AIwBBEGsiAiQAQoCAgIDgACEBAkAgACACQQxqIAMpAwAQdQ0AIAAgAkEIaiADKQMIEHUNACACKAIIIAIoAgxsrSEBCyACQRBqJAAgAQsGACAAtrsLfwAgACAAKQPQASIBQgyIIAGFIgFCGYYgAYUiAUIbiCABhSIBNwPQAUKAgICAwH4gAUKdurP7lJL9oiV+QgyIQoCAgICAgID4P4S\u002FRAAAAAAAAPC\u002FoL0iAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwuIBAMFfAV\u002FAX4jAEEQayIKJAAgCkIANwMIAkACQCACQQBMDQBCgICAgOAAIQEgACAKQQhqIAMpAwAQQg0BQQEhCyAKKwMIIQQgAkEBRwRAA0AgAiALRg0CIAAgCiADIAtBA3RqKQMAEEINAyALQQFqIQsgCisDACEFIwBBIGsiCSQAAkAgBJkiByAFmSIGIAe9IAa9VCIMGyIEvSIOQjSIpyINQf8PRg0AIAYgByAMGyEFAkAgDlANACAFvUI0iKciDEH\u002FD0YNACAMIA1rQcEATgRAIAcgBqAhBAwCCwJ8IAxB\u002FgtPBEAgBEQAAAAAAAAwFKIhBCAFRAAAAAAAADAUoiEFRAAAAAAAALBrDAELRAAAAAAAAPA\u002FIA1BvARLDQAaIAREAAAAAAAAsGuiIQQgBUQAAAAAAACwa6IhBUQAAAAAAAAwFAshCCAJQRhqIAlBEGogBRCIBiAJQQhqIAkgBBCIBiAIIAkrAwAgCSsDEKAgCSsDCKAgCSsDGKCfoiEEDAELIAUhBAsgCUEgaiQADAALAAsgBJkhBAsgBL0iAQJ\u002FIASZRAAAAAAAAOBBYwRAIASqDAELQYCAgIB4CyIAt71RBEAgAK0hAQwBC0KAgICAwH4gAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGyEBCyAKQRBqJAAgAQtOACAAIABEAAAAAAAA8L9EAAAAAAAA8D8gAEQAAAAAAAAAAGMbIAC9Qv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGyAARAAAAAAAAAAAYRsLgwECAn4BfyAAvSIBQjSIp0H\u002FD3EiA0H+B00EQCABQoCAgICAgICAgH+DIQIgA0H+B0cgAUKAgICAgICA8L9\u002FUXJFBEAgAkKAgICAgICA+D+Evw8LIAK\u002FDwsgA0GyCE0EfCABQj+HIAF8QgFBswggA2uthiIBQgGIfEIAIAF9g78FIAALC4IFAwJ8BX8CfiMAQRBrIgkkAAJ+QoCAgIDA\u002Fv\u002F7\u002FwBCgICAgMD+\u002F3sgBBsgAkUNABoCfCADKQMAIgFC\u002F\u002F\u002F\u002F\u002Fw9YBEBBASACIAJBAUwbIQogAachCEEBIQcDQCAHIApHBEAgCLcgAyAHQQN0aikDACIBQoCAgIAQWg0DGiAIIAGnIgsgCCALShsgCCALIAggC0gbIAQbIQggB0EBaiEHDAELCyAIrQwCC0KAgICA4AAgACAJQQhqIAEQQg0BGkEBIQcgCSsDCAshBSAHIAIgAiAHSBshAgNAIAIgB0cEQEKAgICA4AAgACAJIAMgB0EDdGopAwAQQg0CGgJAIAW9IgxC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYNACAJKwMAIga9IgFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYEQCAGIQUMAQsgBUQAAAAAAAAAAGEgBkQAAAAAAAAAAGFxIQogBARAIAoEQCABIAyDvyEFDAILIAUgBSAGpSAGvUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsgBiAFvUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AWBshBQwBCyAKBEAgASAMhL8hBQwBCyAFIAUgBqQgBr1C\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbIAYgBb1C\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFgbIQULIAdBAWohBwwBCwsgBb0iAQJ\u002FIAWZRAAAAAAAAOBBYwRAIAWqDAELQYCAgIB4CyIAt71RBEAgAK0MAQtCgICAgMB+IAFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLIQ0gCUEQaiQAIA0L4wECAX4CfyMAQRBrIgIkAAJAIAAgAUEpEFoiA0UEQCAEQQA2AgBCgICAgOAAIQEMAQtCgICAgDAhAQJAIAMpAwAiBkKAgICAcINCgICAgDBSBEAgAiADKAIMIgU2AgwgBSAGpyIHKAIEQf\u002F\u002F\u002F\u002F8HcUkNASAAIAYQDCADQoCAgIAwNwMACyAEQQE2AgAMAQsgByACQQxqEMYBIQggAyACKAIMNgIMIARBADYCACAIQf\u002F\u002FA00EQCAAIAhB\u002F\u002F8DcRCUAyEBDAELIAAgByAFQQF0akEQakECEJIDIQELIAJBEGokACABC5EDAgN\u002FAn4jAEEgayICJABCgICAgOAAIQgCQCAAIAEQSiIBQoCAgIBwg0KAgICA4ABRDQAgACACQQhqIgVBBxA+GiAFQTwQPBogBSAEQQN0IgRB0OEBaigCACIGEIMBGiAEQdThAWooAgAiBARAIAVBIBA8GiAFIAQQgwEaIAVB2pEBEIMBGiAAIAMpAwAQSiIJQoCAgIBwg0KAgICA4ABRBEAgACABEAwgAigCCCgCECIAQRBqIAIoAgwgACgCBBEAAAwCCyAJpyIHQRBqIQVBACEEA0AgBCAHKQIEIginQf\u002F\u002F\u002F\u002F8HcU9FBEACQAJ\u002FIAhCgICAgAiDUEUEQCAFIARBAXRqLwEADAELIAQgBWotAAALIgNBIkYEQCACQQhqQcuAARCDARoMAQsgAkEIaiADEIcBGgsgBEEBaiEEDAELCyAAIAkQDCACQQhqQSIQPBoLIAJBCGoiAEE+EDwaIAAgARCEARogAEHnhwEQgwEaIAAgBhCDARogAkEIakE+EDwaIAAQNyEICyACQSBqJAAgCAugBAEHfyMAQTBrIgUkAAJAIAAgARBKIgFCgICAgHCDQoCAgIDgAFENACABpyIHKAIEQf\u002F\u002F\u002F\u002F8HcSICRQ0AAkAgACAFQRRqIAIQPg0AQQAhAiAFQQA2AhAgB0EQaiEIA0ACQCAHKAIEQf\u002F\u002F\u002F\u002F8HcSACSgRAAn8CQCAERSAHIAVBEGoQxgEiCUGjB0dyDQAgBSgCECIKQQFrIQIDQAJAIAJBAEwEQEEAIQYMAQsgAkEBayEDAkAgBy0AB0GAAXEEQCACQQFGIAggA0EBdGovAQAiBkGA+ANxQYC4A0dyDQEgCCACQQJrIgJBAXRqLwEAIgtBgNAAakH\u002F\u002FwNxQYAISw0BIAZB\u002FwdxIAtB\u002FwdxQQp0ckGAgARqIQYMAgsgAyAIai0AACEGCyADIQILIAYQmQYNAAsgBhCbBkUNACAFIAo2AiwCQANAIAUoAiwgBygCBEH\u002F\u002F\u002F\u002F\u002FB3FODQEgByAFQSxqEMYBIgIQmQYNAAsgAhCbBg0BCyAFQcIHNgIEQQEMAQsgBUEEaiAJIAQQnQYLIQZBACECIAZBACAGQQBKGyEDA0AgAiADRg0CIAJBAnQhBiACQQFqIQIgBUEUaiAGIAVBBGpqKAIAELEBRQ0ACwwDCyAAIAEQDCAFQRRqEDchAQwDCyAFKAIQIQIMAAsACyAAIAEQDCAFKAIUKAIQIgBBEGogBSgCGCAAKAIEEQAAQoCAgIDgACEBCyAFQTBqJAAgAQvOAgICfgd\u002FIwBBEGsiAiQAQoCAgIDgACEEAkAgACABEEoiAUKAgICAcINCgICAgOAAUQ0AIAAgAykDABAlIgVCgICAgHCDQoCAgIDgAFEEQCAAIAEQDAwBCyAAIAJBDGogAUEAENoDIQcgACABEAwgB0EASARAIAAgBRAMDAELIAAgAkEIaiAFQQAQ2gMhCCAAIAUQDCACKAIMIQkgCEEASARAIAAoAhAiAEEQaiAJIAAoAgQRAAAMAQsgByAIIAcgCEgiCxshDEEAIQMgAigCCCEKAkADQCADIAxHBEAgA0ECdCEGIANBAWohAyAGIAlqKAIAIAYgCmooAgBrIgZFDQEMAgsLQX9BASALG0EAIAcgCEcbIQYLIAAoAhAiA0EQaiAJIAMoAgQRAAAgACgCECIAQRBqIAogACgCBBEAACAGrSEECyACQRBqJAAgBAsJACAAIAEQhwULagACQAJAIAFCIIinIgJBf0cEQCACQXlHDQEMAgsgAaciAi8BBkEFRw0AIAIpAyAiAUKAgICAcINCgICAgJB\u002FUg0ADAELIABBxskAQQAQEkKAgICA4AAPCyABpyIAIAAoAgBBAWo2AgAgAQv1AQICfwJ+IAAgARBKIgFCgICAgHCDQoCAgIDgAFEEQCABDwsgAaciBigCBEH\u002F\u002F\u002F\u002F\u002FB3EhAgJAIARBAXFFDQAgBkEQaiEDA0AgAiAFRgRAIAIhBQwCCwJ\u002FIAYtAAdBgAFxBEAgAyAFQQF0ai8BAAwBCyADIAVqLQAACxCpA0UNASAFQQFqIQUMAAsACwJAIARBAnFFBEAgAiEDDAELIAZBEGohBANAIAIiAyAFTA0BIAJBAWshAgJ\u002FIAYtAAdBgAFxBEAgBCACQQF0ai8BAAwBCyACIARqLQAACxCpAw0ACwsgACAGIAUgAxCOASEIIAAgARAMIAgL6QMCBn8DfiMAQSBrIgUkAEKAgICA4AAhDAJAIAAgARBKIgFCgICAgHCDQoCAgIDgAFENAAJAAkAgACAFQQRqIAMpAwAQswENACAFKAIEIgcgAaciCSgCBEH\u002F\u002F\u002F\u002F\u002FB3EiCEwNAUEgIQpCgICAgDAhCwJAIAJBAkgNACADKQMIIg1CgICAgHCDQoCAgIAwUQ0AIAAgDRAlIgtCgICAgHCDQoCAgIDgAFENAQJAAkAgC6ciBikCBCINp0H\u002F\u002F\u002F\u002F\u002FB3EOAgABAgsgACALEAwMAwsCfyANQoCAgIAIg1BFBEAgBi8BEAwBCyAGLQAQCyEKQQAhBgsgB0GAgICABE8EQCAAQeTIAEEAEDoMAQsgACAFQQhqIgIgBxA+RQRAAkAgBARAIAIgCUEAIAgQSw0BCyAHIAhrIQMCQCAGBEADQCADQQBMDQIgAyADIAYoAgRB\u002F\u002F\u002F\u002F\u002FwdxIgIgAiADShsiAmshAyAFQQhqIAZBACACEEtFDQAMAwsACyAFQQhqIAogAxDLBA0BCyAERQRAIAVBCGogCUEAIAgQSw0BCyAAIAsQDCAAIAEQDCAFQQhqEDchDAwECyAFKAIIKAIQIgJBEGogBSgCDCACKAIEEQAACyAAIAsQDAsgACABEAwMAQsgASEMCyAFQSBqJAAgDAuCBgIFfgV\u002FIwBB0ABrIgIkAAJAAkACQAJAIAFCgICAgBCEQoCAgIBwg0KAgICAMFEEQCAAQZseQQAQEgwBCyADKQMIIQkgAykDACIFQoCAgIAQhEKAgICAcINCgICAgDBRDQIgBEUNASAAIAUQzQRBAE4NAQtCgICAgOAAIQYMAgsgACAFQc8BIAVBABARIgdCgICAgHCDIgZCgICAgCBRIAZCgICAgDBRcg0AIAZCgICAgOAAUQ0BIAIgCTcDKCACIAE3AyAgACAHIAVBAiACQSBqEDYhBgwBCyAAIAJBCGpBABA+GkKAgICA4AAhBkKAgICAMCEIAkAgACABECUiB0KAgICAcINCgICAgOAAUQRAQoCAgIAwIQUMAQsgACAFECUiBUKAgICAcINCgICAgOAAUQ0AIAAgCRA1Ig5FBEAgACAJECUiCEKAgICAcINCgICAgOAAUQ0BCyAHpyELIAWnIg0pAgQhAQNAAkACQCABQv\u002F\u002F\u002F\u002F8Hg1AEQEEAIQMgDEUNASAKIAsoAgRB\u002F\u002F\u002F\u002F\u002FwdxTw0CIApBAWohAwwBCyALIA0gChDMBCIDQQBODQAgDA0BIAIoAggoAhAiA0EQaiACKAIMIAMoAgQRAAAgACAFEAwgACAIEAwgByEGDAQLIAIgBTcDIAJ+IA4EQCACIAc3AzAgAiADrTcDKCAAIAAgCUKAgICAMEEDIAJBIGoQHBA0DAELIAIgCDcDSCACQoCAgIAwNwNAIAJCgICAgDA3AzggAiAHNwMoIAIgA603AzAgACACQSBqEIgFCyIBQoCAgIBwg0KAgICA4ABRDQIgAkEIaiIMIAsgCiADEEsaIAwgARCEARogDSkCBCIBp0H\u002F\u002F\u002F\u002F\u002FB3EgA2ohCkEBIQwgBA0BCwsgAkEIaiIDIAsgCiALKAIEQf\u002F\u002F\u002F\u002F8HcRBLGiAAIAUQDCAAIAgQDCAAIAcQDCADEDchBgwBCyACKAIIKAIQIgNBEGogAigCDCADKAIEEQAAIAAgBRAMIAAgCBAMIAAgBxAMCyACQdAAaiQAIAYLuAICA38DfiMAQSBrIgIkAEKAgICA4AAhBwJAAkACQCAAIAEQSiIBQoCAgIBwg0KAgICA4ABRDQAgACACIAMpAwAQ4wENACACKQMAIghCgICAgAhaBEAgAEHTGEEAEEQMAQsgCKciA0EBRg0BIAGnIgQpAgQiCaciBkH\u002F\u002F\u002F\u002F\u002FB3EiBUUNASAJQv\u002F\u002F\u002F\u002F8HgyAIfkKAgICABFoEQCAAQeTIAEEAEDoMAQsgACACQQhqIAMgBWwgBkEfdhCZAw0AAkAgBUEBRwRAA0AgA0EATA0CIAJBCGogBEEAIAUQSxogA0EBayEDDAALAAsgAkEIagJ\u002FIAQtAAdBgAFxBEAgBC8BEAwBCyAELQAQCyADEMsEGgsgACABEAwgAkEIahA3IQcMAgsgACABEAwMAQsgASEHCyACQSBqJAAgBwtYAQF+IAAgAykDABDkAUEAR61CgICAgBCEIQQgAUKAgICAcINCgICAgDBRBEAgBA8LIAAgAUEGEF4iAUKAgICAcINCgICAgOAAUgRAIAAgASAEEL0BCyABC8EBAgJ\u002FAn4jAEEQayIEJABCgICAgOAAIQYCQCAAIAEQSiIBQoCAgIBwg0KAgICA4ABRBEAgASEGDAELAkAgACAEQQxqIAMpAwAgAaciBSgCBEH\u002F\u002F\u002F\u002F\u002FB3EiAiACEFYNACAEIAI2AgggAykDCCIHQoCAgIBwg0KAgICAMFIEQCAAIARBCGogByACIAIQVg0BIAQoAgghAgsgACAFIAQoAgwiAyACIAMgAiADShsQjgEhBgsgACABEAwLIARBEGokACAGC8ABAgN\u002FAn4jAEEQayICJABCgICAgOAAIQcCQCAAIAEQSiIBQoCAgIBwg0KAgICA4ABRBEAgASEHDAELAkAgACACQQxqIAMpAwAgAaciBigCBEH\u002F\u002F\u002F\u002F\u002FB3EiBCAEEFYNACACIAQgAigCDCIFayIENgIIIAAgBiAFIAMpAwgiCEKAgICAcINCgICAgDBSBH8gACACQQhqIAggBEEAEFYNASACKAIIBSAECyAFahCOASEHCyAAIAEQDAsgAkEQaiQAIAcL0wECAn8CfiMAQRBrIgIkAEKAgICA4AAhBgJAIAAgARBKIgFCgICAgHCDQoCAgIDgAFEEQCABIQYMAQsCQCAAIAJBDGogAykDACABpyIFKAIEQf\u002F\u002F\u002F\u002F8HcUEAEFYNACACIAUoAgRB\u002F\u002F\u002F\u002F\u002FwdxIgQ2AgggAykDCCIHQoCAgIBwg0KAgICAMFIEQCAAIAJBCGogByAEQQAQVg0BIAIoAgghBAsgACAFIAIoAgwiAyAEIAMgBEgbIAMgBCADIARKGxCOASEGCyAAIAEQDAsgAkEQaiQAIAYLoQUCC34DfyMAQRBrIgIkAAJAIAFCgICAgBCEQoCAgIBwg0KAgICAMFEEQCAAQZseQQAQEkKAgICA4AAhBwwBCyADKQMIIQQCQCADKQMAIgVCgICAgHCDIglCgICAgBCEQoCAgIAwUQ0AIAAgBUHRASAFQQAQESIGQoCAgIBwgyIHQoCAgIAgUSAHQoCAgIAwUXINACAHQoCAgIDgAFENASACIAQ3AwggAiABNwMAIAAgBiAFQQIgAhA2IQcMAQtCgICAgOAAIQdCgICAgDAhCCAAAn5CgICAgDAgACABECUiCkKAgICAcINCgICAgOAAUQ0AGkKAgICA4AAgABA7IgFCgICAgHCDQoCAgIDgAFENABoCQAJAIARCgICAgHCDQoCAgIAwUQRAIAJBfzYCAAwBCyAAIAIgBBB1QQBIDQELIAqnIgMpAgQhCyAAIAUQJSIIQoCAgIBwg0KAgICA4ABRDQACQCACKAIAIhBFDQBCACEGAkAgCUKAgICAMFENACAIpyIRKQIEQv\u002F\u002F\u002F\u002F8HgyEFIAtC\u002F\u002F\u002F\u002F\u002FweDIgRQRQRAIAQgBX0gBVCtIgl9IQwgEK0hDUIAIQQDQAJAIAQgCXwiDiAMVQ0AIAMgESAOpxDMBCIPQQBIDQAgACADIASnIA8QjgEiBEKAgICAcINCgICAgOAAUQ0FIAAgASAGIARBABDIAUEASA0FIAUgD6x8IQQgBkIBfCIGIA1SDQEMBAsLIAZC\u002F\u002F\u002F\u002F\u002Fw+DIQYgBKchDwwBCyAFUA0BCyAAIAMgDyALp0H\u002F\u002F\u002F\u002F\u002FB3EQjgEiBUKAgICAcINCgICAgOAAUQ0BIAAgASAGIAVBABDIAUEASA0BCyAAIAoQDCAAIAgQDCABIQcMAgsgAQsQDCAAIAoQDCAAIAgQDAsgAkEQaiQAIAcLoAMBBH4jAEEwayICJAAgAiABNwMoAkAgAUKAgICAEIRCgICAgHCDQoCAgIAwUQRAIABBmx5BABASQoCAgIDgACEGDAELAkAgAykDACIFQoCAgIAQhEKAgICAcINCgICAgDBRDQBCgICAgOAAIQYgACAFIAQgBUEAEBEiB0KAgICAcIMiCEKAgICA4ABRDQECQCAEQc4BRw0AIAAgBRDNBEEATg0AIAAgBxAMDAILIAhCgICAgBCEQoCAgIAwUQ0AIAAgByAFQQEgAkEoahA2IQYMAQsgAiAAIAEQJSIHNwMIQoCAgIDgACEGIAdCgICAgHCDQoCAgIDgAFENACACIAU3AxACQAJAAn8gBEHOAUcEQEKAgICAMCEBQQEMAQsgAEH2ywAQYCIBQoCAgIBwg0KAgICA4ABRDQEgAiABNwMYQQILIQMgACAAKQNIIAMgAkEQahCjASEFIAAgARAMIAVCgICAgHCDQoCAgIDgAFINAQsgACAHEAwMAQsgACAFIARBASACQQhqEKcCIQYgACACKQMIEAwLIAJBMGokACAGC4sDAgd\u002FA34jAEEQayIGJAACQCAAIAEQSiIMQoCAgIBwg0KAgICA4ABRBEAgDCEBDAELAkAgACADKQMAEPYDIgUEQEKAgICA4AAhAUKAgICAMCENIAVBAEwNASAAQfrkAEEAEBIMAQtCgICAgOAAIQEgACADKQMAECUiDUKAgICAcINCgICAgOAAUQ0AIA2nIgcoAgQhCCAGIAynIgkoAgRB\u002F\u002F\u002F\u002F\u002FwdxIgVBACAEQQJGGzYCDAJAIAJBAkgNACADKQMIIg5CgICAgHCDQoCAgIAwUQ0AIAAgBkEMaiAOIAVBABBWDQELIAUgCEH\u002F\u002F\u002F\u002F\u002FB3EiBWshAiAGKAIMIQMCQAJAAkAgBA4CAgABCyACIANIIQpCgICAgBAhASADIQIgCkUNAQwCCyADIAVrIgMhAgtCgICAgBAhASADQQBIIAIgA0hyDQADQCAJIAcgA0EAIAUQvANFBEBCgYCAgBAhAQwCCyACIANHIQsgA0EBaiEDIAsNAAsLIAAgDBAMIAAgDRAMCyAGQRBqJAAgAQurAwMHfwJ+AXwjAEEQayIFJABCgICAgOAAIQwCQCAAIAEQSiIBQoCAgIBwg0KAgICA4ABRBEAgASEMDAELAkAgACADKQMAECUiDUKAgICAcINCgICAgOAAUQ0AIA2nIgkoAgRB\u002F\u002F\u002F\u002F\u002FwdxIQYgAaciCigCBEH\u002F\u002F\u002F\u002F\u002FB3EhBwJAIAQEQCAFIAcgBmsiCzYCDEF\u002FIQhBACEEIAJBAkgNASAAIAUgAykDCBBCDQIgBSsDACIOvUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVg0BIA5EAAAAAAAAAABlBEAgBUEANgIMDAILIA4gC7djRQ0BIAUCfyAOmUQAAAAAAADgQWMEQCAOqgwBC0GAgICAeAs2AgwMAQsgBUEANgIMIAJBAk4EQCAAIAVBDGogAykDCCAHQQAQVg0CCyAHIAZrIQRBASEIC0L\u002F\u002F\u002F\u002F\u002FDyEMIAYgB0sNACAEIAUoAgwiA2sgCGxBAEgNAANAAkAgCiAJIANBACAGELwDBH8gAyAERw0BQX8FIAMLrSEMDAILIAMgCGohAwwACwALIAAgARAMIAAgDRAMCyAFQRBqJAAgDAv4AQICfgF\u002FIwBBEGsiBiQAAkACQAJAIAJFBEAMAQsgAykDACIEQiCIp0F1TwRAIASnIgIgAigCAEEBajYCAAsgACAEEGUiBEKAgICAcIMiBUKAgICA4ABRDQEgBUKAgICA4H5SDQAgBKdBBGogBkEIahCxBCAAIAQQDEKAgICAwH4gBikDCCIEQoCAgIDAgYD8\u002FwB9IARC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbIQQLIAFCgICAgHCDQoCAgIAwUQ0AIAAgAUEEEF4iAUKAgICAcINCgICAgOAAUQ0BIAAgASAEEL0BDAELIAQhAQsgBkEQaiQAIAELgwICAn4Df0KAgICA4AAhBAJAIAAgARBKIgFCgICAgHCDQoCAgIDgAFENACABpyIDEM4EIgJBAEgEQCABIQQMAQsgACADQRBqIAMoAgRB\u002F\u002F\u002F\u002F\u002FwdxEJIDIQUgACABEAwgBUKAgICAcINCgICAgOAAUQ0AIAWnIgZBEGohAwNAIAYoAgRB\u002F\u002F\u002F\u002F\u002FwdxIgAgAkwEQCAFDwUCQCADIAJBAXRqIgcvAQAiCEGA8ANxQYCwA0YEQAJAIAhB\u002F7cDSw0AIAAgAkEBaiIATA0AIAMgAEEBdGovAQBBgEBrQf\u002F\u002FA3FB\u002F\u002FcDSw0CCyAHQf3\u002FAzsBAAsgAiEACyAAQQFqIQIMAQsACwALIAQLTAIBfgF\u002FQoCAgIDgACEEIAAgARBKIgFCgICAgHCDQoCAgIDgAFIEfiABpxDOBCEFIAAgARAMIAVBH3atQoCAgIAQhAVCgICAgOAACwuSAQIBfgJ\u002FIwBBEGsiAiQAQoCAgIDgACEEAkAgACABEEoiAUKAgICAcINCgICAgOAAUQRAIAEhBAwBCwJAIAAgAkEMaiIFIAMpAwAQswENAEKAgICAMCEEIAIoAgwiA0EASA0AIAMgAaciBigCBEH\u002F\u002F\u002F\u002F\u002FB3FPDQAgBiAFEMYBrSEECyAAIAEQDAsgAkEQaiQAIAQLaQICfwF+IAAgARBKIQEDQCACIARMIAFCgICAgHCDQoCAgIDgAFFyRQRAIAMgBEEDdGopAwAiBkIgiKdBdU8EQCAGpyIFIAUoAgBBAWo2AgALIARBAWohBCAAIAEgBhC2AiEBDAELCyABC7gBAgJ+AX8jAEEQayICJABCgICAgOAAIQQCQCAAIAEQSiIBQoCAgIBwg0KAgICA4ABRBEAgASEEDAELAkAgACACQQxqIAMpAwAQswENAEKAgICAwH4hBCACKAIMIgNBAEgNACADIAGnIgYpAgQiBadB\u002F\u002F\u002F\u002F\u002FwdxTw0AIAZBEGohBiAFQoCAgIAIg1BFBEAgBiADQQF0ajMBACEEDAELIAMgBmoxAAAhBAsgACABEAwLIAJBEGokACAEC\u002FQBAgF+AX8jAEEQayICJABCgICAgOAAIQUCQCAAIAEQSiIBQoCAgIBwg0KAgICA4ABRBEAgASEFDAELAkAgACACQQxqIAMpAwAQswENACABpyEGIARFIAIoAgwiA0EATnJFBEAgBigCBEH\u002F\u002F\u002F\u002F\u002FB3EgA2ohAwsCQCADQQBOBEAgAyAGKQIEIgWnQf\u002F\u002F\u002F\u002F8HcUkNAQtCgICAgDAhBSAEDQEgAEEvECkhBQwBCyAGQRBqIQQgAAJ\u002FIAVCgICAgAiDUEUEQCAEIANBAXRqLwEADAELIAMgBGotAAALQf\u002F\u002FA3EQlAMhBQsgACABEAwLIAJBEGokACAFC8wCAgJ\u002FB34jAEEgayIEJAAgACAEQQhqQQAQPhpCgICAgOAAIQlCgICAgDAhBgJAAkACQCAAIAMpAwAQICIHQoCAgIBwg0KAgICA4ABRDQAgACAAIAdB8QAgB0EAEBEQyQUiBkKAgICAcINCgICAgOAAUQ0AIAAgBCAGEC9BAEgNAEIAIQEgBCkDACIIQgAgCEIAVRshCiAIQgF9IQggAqwhCwNAIAEgClENAiAAIAAgBiABEGwQNCIMQoCAgIBwg0KAgICA4ABRDQEgBEEIaiIFIAwQhAEaIAEgCFkhAiABQgF8IQEgASALWSACcg0AIAUgAyABp0EDdGopAwAQjQFFDQALCyAAIAcQDCAAIAYQDCAEKAIIKAIQIgBBEGogBCgCDCAAKAIEEQAADAELIAAgBxAMIAAgBhAMIARBCGoQNyEJCyAEQSBqJAAgCQuFAgMDfwF8AX4jAEEgayIEJAACfgJAIAAgBCACED4NACACQQAgAkEAShshBgJAA0AgBSAGRwRAAkAgAyAFQQN0aikDACIBQv\u002F\u002F\u002F\u002F8PWARAIAGnIgJB\u002F\u002F\u002FDAE0NAQwECyAAIARBGGogARBCDQQgBCsDGCIHRAAAAAAAAAAAYyAHRAAAAAD\u002F\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\u002F\u002F\u002F\u002F\u002FA0sNACACKAIMIAZBA3RqKQMAIAQQmQEgCCgCICEFCyAGQQFqIQYgAUEIaiEBDAALAAsgCC0AEEUEQCAIKAIYIQEgACAAKQNoQgF8NwNoIAAgACkDcCABQQJ0IAgoAhxBA3RqQTRqrXw3A3ALAkACQAJAAkACQAJAAkACQAJAAkAgAkECay8BAEECaw4gAAkBAQEBAAkBCQIDBAUJBwYICAkJCQkJCQkJCQkJCQEJCyAAIAApA6gBQgF8NwOoASACQQNrLQAAQQhxRQ0JIAAgACkDsAFCAXw3A7ABIAIoAhxFDQkgACAAKQMgQgF8NwMgIAAgACkDECACKAIgQQN0rXw3AxAgACAAKQO4ASACNQIgfDcDuAFBACEBA0AgASACKAIgTw0KIAIoAhwgAUEDdGopAwAgBBCZASABQQFqIQEMAAsACyACKQMYIAQQmQEMCAsgACAAKQOgAUIBfDcDoAEMBwsgAigCHCILRQ0GIAIoAhghCCAAIAApAyBCAXw3AyAgACAAKQOAASAIKAI8IgVBAnStfDcDgAFBACEBA0AgASAFTg0HAkAgCyABQQJ0aigCACIGRQ0AIAACfkQAAAAAAADwPyAGKAIAtyIaoyAAKQMguaAiG5lEAAAAAAAA4ENjBEAgG7AMAQtCgICAgICAgICAfws3AyAgAAJ+RAAAAAAAAERAIBqjIAApA4ABuaAiGplEAAAAAAAA4ENjBEAgGrAMAQtCgICAgICAgICAfws3A4ABIAYoAhAiDSAGQRhqRw0AIA0pAwAgBBCZASAIKAI8IQULIAFBAWohAQwACwALIAIoAhgiBUEYaiEGQQAhAQNAIAUoAhAiCCABSgRAIAYgAUEDdGopAwAgBBCZASABQQFqIQEMAQsLIAAgACkDIEIBfDcDICAAIAApAxAgCEEDdEEYaq18NwMQDAULIAIoAhgiBUUNBCAFQQhqIQZBACEBA0AgBS0ABSIIIAFLBEAgBiABQQN0aikDACAEEJkBIAFBAWohAQwBCwsgACAAKQMgQgF8NwMgIAAgACkDECAIrUIDhnxCCHw3AxAMBAsgAigCGCAEEIwEIAIoAhwgBBCMBAwDCyACKAIYIgFFDQIgASkDACAEEJkBIAAgACkDIEIBfDcDICAAIAApAxBCGHw3AxAMAgsgAigCGCIBRQ0BIAAgACkDICIOQgF8NwMgIAAgACkDEEIcfCIPNwMQIAEoAghFDQEgACAOQgJ8NwMgIAAgDyABNAIAfDcDEAwBCyACKAIYRQ0AIAAgACkDIEIBfDcDIAsgAkEEaiEBDAELCyAAIAApA1AgACkDSCIPQjB+fCIQNwNQIAAgACkDECAJKALYASIBQQJ0rXwiETcDEEEAIQYgAUEAIAFBAEobIQIgACkDICEOA0AgAiAGRwRAIAkoAuABIAZBAnRqIQEDQCABKAIAIgEEQCABKAIYIQUgACAAKQNoQgF8NwNoIAAgACkDcCAFQQJ0IAEoAhxBA3RqQTRqrXw3A3AgAUEoaiEBDAELCyAGQQFqIQYMAQsLIAAgDkIDfCISNwMgIAAgCSgCKCIFrDcDKCAAIAkoAiwiAiAJKAIkakECdK0iDjcDMEEAIQEgAkEAIAJBAEobIQYDQCABIAZHBEAgCSgCOCABQQJ0aigCACICQQFxRQRAIAAgDiACKAIEIgJBH3UgAkH\u002F\u002F\u002F\u002F\u002FB3EgAkEfdnRqQRFqrXwiDjcDMAsgAUEBaiEBDAELCyAAAn4gBCsDCBCgAyIamUQAAAAAAADgQ2MEQCAasAwBC0KAgICAgICAgIB\u002FCyITNwM4IAACfiAEKwMQEKADIhqZRAAAAAAAAOBDYwRAIBqwDAELQoCAgICAgICAgH8LIhQ3A0AgACAEKQMYIhU3A3ggAAJ+IAQrAyAQoAMiGplEAAAAAAAA4ENjBEAgGrAMAQtCgICAgICAgICAfwsiFjcDgAEgACAEKQMoIhc3A4gBIAAgBCkDMCIYNwOQASAAIAQpAzgiGTcDmAEgBCsDACEaIAAgACkDcCAAKQNgIBkgFyAQIBF8IBR8IBZ8fHwgDnx8fDcDECAAAn4gGhCgAyAFt6AgE7mgIA+5oCAAKQNouaAgFbmgIBi5oCASuaAiGplEAAAAAAAA4ENjBEAgGrAMAQtCgICAgICAgICAfws3AyAgBEFAayQAQbDUBCgCACECQQAhAUEAIQYjAEHABmsiACQAIAAgBzQCCDcDmAQgAEEgNgKQBCADQamWASAAQZAEahCaASACBEAgAkEQaiEFA0AgAUEFRwRAIAUgAUEDdCIIQeSbAWooAgAiBCACKAIAEQMAIgkEQCAEIAkgAigCDBEFACIKTQRAIAAgCEHgmwFqKAIANgKIBCAAIAQ2AoAEIAAgCiAEazYChAQgA0HrkgEgAEGABGoQmgFBASEGCyAFIAkgAigCBBEAAAsgAUEBaiEBDAELCyAGRQRAQf2SAUEhIAMQiQYLIABB4ARqQQBB3AEQLBogAkHUAGohASACQdAAaiEEA0AgBCABKAIAIgFHBEAgAUEEay0AAEEPcUUEQCAAQeAEakE2IAFBAmsvAQAiBSAFQTZPG0ECdGoiBSAFKAIAQQFqNgIACyABQQRqIQEMAQsLQbiSAUESIAMQiQYgACgC4AQiAQRAIABBi9MANgL4AyAAQQA2AvQDIAAgATYC8AMgA0HakgEgAEHwA2oQmgELQQEhAQNAIAFBNkcEQAJAIABB4ARqIAFBAnRqKAIAIgRFDQAgASACKAJATg0AIAAgAiAAQaAEaiACKAJEIAFBGGxqKAIEEOUFNgLoAyAAIAE2AuQDIAAgBDYC4AMgA0HakgEgAEHgA2oQmgELIAFBAWohAQwBCwsgACgCuAYiAQRAIABBxTM2AtgDIABBADYC1AMgACABNgLQAyADQdqSASAAQdADahCaAQsCQAJAIAMoAkwiAUEATgRAIAFFDQFBtNUEKAIAIAFB\u002F\u002F\u002F\u002F\u002FwNxRw0BCwJAIAMoAlBBCkYNACADKAIUIgEgAygCEEYNACADIAFBAWo2AhQgAUEKOgAADAILIAMQigYMAQsgAyADKAJMIgFB\u002F\u002F\u002F\u002F\u002FwMgARs2AkwCQAJAIAMoAlBBCkYNACADKAIUIgEgAygCEEYNACADIAFBAWo2AhQgAUEKOgAADAELIAMQigYLIAMoAkwaIANBADYCTAsLIABB2\u002FgANgLIAyAAQdDxADYCxAMgAEH0+AA2AsADIANBy5IBIABBwANqEJoBIAcpAxgiDlBFBEAgACAHKQMAIg83A7ADIAAgDjcDqAMgACAPuSAOuaM5A7gDIABBwecANgKgAyADQf+UASAAQaADahCqASAHKQMgIQ4gBykDACEQIAcpAxAhDyAAQQg2AogDIAAgDzcDgAMgACAQIA99uSAOuaM5A5ADIAAgDjcD+AIgAEHS5wA2AvACIANBpZUBIABB8AJqEKoBCyAHKQMoIg5QRQRAIAAgBykDMCIPNwPgAiAAIA43A9gCIAAgD7kgDrmjOQPoAiAAQdUlNgLQAiADQdqUASAAQdACahCqAQsgBykDOCIOUEUEQCAAIAcpA0AiDzcDwAIgACAONwO4AiAAIA+5IA65ozkDyAIgAEG5JjYCsAIgA0HclQEgAEGwAmoQqgELIAcpA0giDlBFBEAgACAHKQNQIg83A6ACIAAgDjcDmAIgACAPuSAOuaM5A6gCIABBiyI2ApACIANBipQBIABBkAJqEKoBIAcpA1ghDiAHKQNIIQ8gACAHKQNgNwOAAiAAIA65IA+5ozkDiAIgACAONwP4ASAAQd4oNgLwASADQYqUASAAQfABahCqASAHKQNoIQ4gACAHKQNwIg83A+ABIAAgD7kgDrmjOQPoASAAIA43A9gBIABBxic2AtABIANBg5YBIABB0AFqEKoBCwJAIAcpA3giDlANACAAIAcpA4ABNwPAASAAIA43A7gBIABB\u002FiQ2ArABIANBrJMBIABBsAFqEJoBIAcpA3ghDiAAIAcpA4gBIg83A6ABIAAgD7kgDrmjOQOoASAAIA43A5gBIABBrtwANgKQASADQbGUASAAQZABahCqASAHKQOQASIOUA0AIAAgBykDmAEiDzcDgAEgACAONwN4IAAgD7kgDrmjOQOIASAAQbzTADYCcCADQbGUASAAQfAAahCqAQsgBykDoAEiDlBFBEAgACAONwNoIABBkSU2AmAgA0GfkwEgAEHgAGoQmgELAkAgBykDqAEiDlANACAAIA43A1ggAEHMIDYCUCADQZ+TASAAQdAAahCaASAHKQOwASIOUA0AIAAgDjcDSCAAQcUgNgJAIANBn5MBIABBQGsQmgEgBykDsAEhDyAAIAcpA7gBIg5CA4Y3AzAgACAOuSAPuaM5AzggACAONwMoIABB4CE2AiAgA0HfkwEgAEEgahCqAQsgBykDwAEiDlBFBEAgACAHKQPIATcDECAAIA43AwggAEGEIjYCACADQayTASAAEJoBCyAAQcAGaiQAIAMoAkwaIAMQogMaIAMgAygCDBEFABogAy0AAEEBcUUEQCADKAI4IQAgAygCNCIBBEAgASAANgI4CyAABEAgACABNgI0CyADQZjVBCgCAEYEQEGY1QQgADYCAAsgAygCYBDUASADENQBCyAMEAogDBDUAQsgB0HQAWokAAsJACAAIAEQzwQLLAAgACABEM8EIgFCgICAgHCDQoCAgIDgAFIEfiAAQQNBAiABpxsQKQUgAQsLkAECAXwBfiMAQRBrIgIkAAJ+IAMpAwAiAUIgiKciAwRAQoCAgIAQIANBC2pBEkkNARoLQoCAgIDgACAAIAJBCGogARBCDQAaIAIrAwgiBJlE\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP0NlIAS9QoCAgICAgID4\u002FwCDQoCAgICAgID4\u002FwBSIAScIARhcXGtQoCAgIAQhAshBSACQRBqJAAgBQsmAEKAgICA4AAgACADKQMAENkFIgBBAEetQoCAgIAQhCAAQQBIGwsvAQF+An4gAygCBCICBEBCgICAgBAiBCACQQtqQRJJDQEaCyAAIAQgAyADENIECwsvAQF+An4gAygCBCICBEBCgICAgBAiBCACQQtqQRJJDQEaCyAAIAQgAyADENMECwsJACAAIAEQngILowECAn4BfyMAQRBrIgIkAAJ+IAAgARCeAiIFQoCAgIBwg0KAgICA4ABRBEAgBQwBC0EKIQcCQAJAIAQNACADKQMAIgFCgICAgHCDQoCAgIAwUQ0AIAAgARDbBCIHQQBIDQELQoCAgIDgACAAIAJBCGogBRBtDQEaIAAgAisDCCAHQQBBABC6AgwBCyAAIAUQDEKAgICA4AALIQYgAkEQaiQAIAYLkAICAX4BfCMAQRBrIgIkAEKAgICA4AAhBAJAIAAgARCeAiIBQoCAgIBwg0KAgICA4ABRBEAgASEEDAELIAAgAiABEG0NAAJAAkAgAykDACIBQoCAgIBwg0KAgICAMFEEQCACKwMAIgW9IQEMAQsgACACQQxqIAEQswENAiACKwMAIgW9IgFCgICAgICAgPj\u002FAINCgICAgICAgPj\u002FAFINAQsgAEKAgICAwH4gAUKAgICAwIGA\u002FP8AfSAFvUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsQNCEEDAELIAIoAgwiA0HlAGtBm39NBEAgAEHrIUEAEEQMAQsgACAFQQogA0EBELoCIQQLIAJBEGokACAEC80BAgF+AnwjAEEQayICJABCgICAgOAAIQQCQCAAIAEQngIiAUKAgICAcINCgICAgOAAUQRAIAEhBAwBCyAAIAIgARBtDQAgACACQQxqIAMpAwAQswENACACKAIMIgNB5QBPBEAgAEHrIUEAEEQMAQsgAisDACIFmSIGRFDv4tbkGktEZgRAIABCgICAgMB+IAW9QoCAgIDAgYD8\u002FwB9IAa9QoCAgICAgID4\u002FwBWGxA0IQQMAQsgACAFQQogA0ECELoCIQQLIAJBEGokACAEC4sCAwF+AX8BfCMAQRBrIgIkAEKAgICA4AAhBAJAIAAgARCeAiIBQoCAgIBwg0KAgICA4ABRBEAgASEEDAELIAAgAiABEG0NACAAIAJBDGogAykDABCzAQ0AIAIrAwAiBr0iAUKAgICAgICA+P8Ag0KAgICAgICA+P8AUQRAIABCgICAgMB+IAFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsQNCEEDAELAn8gAzUCBEIghkKAgICAMFEEQEEEDAELIAIoAgwiA0HlAE8EQCAAQeshQQAQRAwCCyADQQFqIQVBBQshAyAAIAZBCiAFIAMQugIhBAsgAkEQaiQAIAQLjgECAX4Cf0KAgICAMCEBAkAgAkEDa0F+SQ0AQoCAgIDgACEBIAAgAykDAEKAgICAMEKAgICAMBDyAyIEQoCAgIBwg0KAgICA4ABRBEAgBA8LIAAgBBCoASEFIAAgBBAMIAVFDQAgBSACQQJGBH8gACADKQMIEOQBBUEACxAFIAAgBRAxQoCAgIAwIQELIAELtwICAX4DfyMAQRBrIgUkACAFQQA6AA9CgICAgDAhAQJAIAJBA2tBfkkNAAJAIAAgAykDABCoASIGRQ0AAkAgAkECRw0AIAAgAykDCEKAgICAMEKAgICAMBDyAyIEQoCAgIBwg0KAgICA4ABRBEAgACAGEDEgBCEBDAMLIAAgBBCoASEHIAAgBBAMIAcNACAAIAYQMQwBCyAGIAcgBUEPahAGIQIgACAGEDEgACAHEDEgAkUNAQJAIAUtAA9FBEAgACACIAIQPUGHgAEQ8wMhAQwBC0KAgICA4AAhAQJAIABBAxCGASIEQoCAgIBwg0KAgICA4ABRBEBCgICAgCAhBAwBCyAAIARBMyAAIAIQYEEDEBUaCyAAIAQQmAELIAIQ1AEMAQtCgICAgOAAIQELIAVBEGokACABC80CAQd\u002FIwBBIGsiBCQAIAAgAykDABAlIgFCgICAgHCDQoCAgIDgAFIEQCAAIARBCGpBABA+GiABpyIFQRBqIQYgBSgCBEH\u002F\u002F\u002F\u002F\u002FB3EiCEEDayEJIAhBBmshCkEAIQMDQCADIAhORQRAAkACfyAFKQIEQoCAgIAIg1AiB0UEQCAGIANBAXRqLwEADAELIAMgBmotAAALIgJBJUcNAAJAIAMgCkoNACADQQFqIQICfyAHRQRAIAYgAkEBdGovAQAMAQsgAiAGai0AAAtB9QBHDQAgBSADQQJqQQQQvQMiAkEASA0AIANBBWohAwwBC0ElIQIgAyAJSg0AIAUgA0EBakECEL0DIgJBJSACQQBOIgcbIQIgA0ECaiADIAcbIQMLIARBCGogAhCHARogA0EBaiEDDAELCyAAIAEQDCAEQQhqEDchAQsgBEEgaiQAIAEL5AEBBH8jAEEgayICJAAgACADKQMAECUiAUKAgICAcINCgICAgOAAUgRAIAAgAkEIaiABpyIFKAIEQf\u002F\u002F\u002F\u002F8HcRA+GiAFQRBqIQYgBSgCBEH\u002F\u002F\u002F\u002F\u002FB3EhB0EAIQMDQCADIAdGRQRAAkACQAJAIAUtAAdBgAFxRQRAIAMgBmotAAAhBAwBCyAGIANBAXRqLwEAIgRB\u002FwFLDQELQbDXASAEQcUAEJICRQ0AIAJBCGogBBCHARoMAQsgAkEIaiAEEPUBCyADQQFqIQMMAQsLIAAgARAMIAJBCGoQNyEBCyACQSBqJAAgAQvMBAIGfwF+IwBBIGsiBiQAAkAgACADKQMAECUiAUKAgICAcINCgICAgOAAUQ0AIAAgBkEIaiABpyIJKAIEQf\u002F\u002F\u002F\u002F8HcRA+GiAJQRBqIQhBACECAkADQCAJKQIEIgunQf\u002F\u002F\u002F\u002F8HcSIKIAJKBEAgAkEBaiEFAkACQCALQoCAgIAIgyILUARAIAIgCGotAAAhAwwBCyAIIAJBAXRqLwEAIgNB\u002FwFLDQELAkAgA0Ewa0EKSSADQd\u002F\u002FA3FBwQBrQRpJcg0AQaOMASADQQkQkgINACAEDQEgAxDQBEUNAQsgBkEIaiADEIcBGiAFIQIMAgsCfwJ\u002FAkAgA0GA+ANxIgdBgLADRwRAIAdBgLgDRw0BQboxIQcMBgtB3y4hByAFIApODQUCfyALUEUEQCAIIAVBAXRqLwEADAELIAUgCGotAAALIgVBgMADa0GAeEkNBSAGQQhqIAVB\u002FwdxIANBCnRBgPg\u002FcXJBgIAEaiIDQRJ2QfABchD1ASADQQx2QT9xQYABciEHIAJBAmoMAQsgA0H\u002FAE0EQCAGQQhqIAMQ9QEgBSECDAQLIANB\u002Fw9NBEAgBSECIANBBnZBwAFyDAILIANBDHZB4AFyIQcgBQshAiAGQQhqIAcQ9QEgA0EGdkE\u002FcUGAAXILIQcgBkEIaiIFIAcQ9QEgBSADQT9xQYABchD1AQwBCwsgACABEAwgBkEIahA3IQEMAQsgACAHEL4DIAAgARAMIAYoAggoAhAiAEEQaiAGKAIMIAAoAgQRAABCgICAgOAAIQELIAZBIGokACABC6EEAgZ\u002FAX4jAEEgayIFJAACQCAAIAMpAwAQJSIBQoCAgIBwg0KAgICA4ABRDQAgACAFQQhqQQAQPhogAaciCEEQaiEJQQAhAgNAAkACQAJAIAgpAgQiC6dB\u002F\u002F\u002F\u002F\u002FwdxIAJKBEACfyALQoCAgIAIg1BFBEAgCSACQQF0ai8BAAwBCyACIAlqLQAACyIDQSVGBEAgACAIIAIQ0QQiA0EASA0DIAJBA2ohBiADQf8ATQRAIAQEQCAGIQIMBgtBJSADIAMQ0AQiBxshAyACQQFqIAYgBxshAgwFCwJ\u002FIANB4P\u002F\u002F\u002FwdxQcABRgRAIANBH3EhA0GAASEHQQEMAQsgA0Hw\u002F\u002F\u002F\u002FB3FB4AFGBEAgA0EPcSEDQYAQIQdBAgwBCyADQfj\u002F\u002F\u002F8HcUHwAUcEQEEBIQdBACEDQQAMAQsgA0EHcSEDQYCABCEHQQMLIQIDQCACQQBMDQMgACAIIAYQ0QQiCkEASA0EIAZBA2ohBiAKQcABcUGAAUcEQEEAIQMMBAUgAkEBayECIApBP3EgA0EGdHIhAwwBCwALAAsgAkEBaiECDAMLIAAgARAMIAVBCGoQNyEBDAQLIAYhAiADIAdIIANB\u002F\u002F\u002FDAEpyRSADQYBwcUGAsANHcQ0BIABB9IABEL4DCyAAIAEQDCAFKAIIKAIQIgBBEGogBSgCDCAAKAIEEQAAQoCAgIDgACEBDAILIAVBCGogAxCxARoMAAsACyAFQSBqJAAgAQs5AQF+IAAgAykDABCoASICRQRAQoCAgIDgAA8LIAAgAhD+ASACakEAQQpBABCAAiEEIAAgAhAxIAQLhwEBAX8jAEEQayICJAACQCAAIAMpAwAQqAEiBEUEQEKAgICA4AAhAQwBCwJ+QoCAgIDgACAAIAJBDGogAykDCBB1DQAaIAIoAgwiAwRAQoCAgIDAfiADQSVrQV1JDQEaCyAAIAQQ\u002FgEgBGpBACADQYEIEIACCyEBIAAgBBAxCyACQRBqJAAgAQulAgIEfgN\u002FIwBBEGsiCCQAQoCAgIDgACEFAkACfgJAIAFCgICAgHBUDQAgAactAAVBEHFFDQAgCCACrTcDCCAAIAFBASAIQQhqEKMBDAELIAAQOwsiBEKAgICAcINCgICAgOAAUQ0AIAJBACACQQBKG60hB0IAIQECQANAIAEgB1IEQCADIAGnQQN0aikDACIGQiCIp0F1TwRAIAanIgkgCSgCAEEBajYCAAsgACAEIAEgBkGAgAEQyAEhCiABQgF8IQEgCkEATg0BDAILCyAAIARBMCACQQBOBH4gAq0FQoCAgIDAfiACuL0iAUKAgICAwIGA\u002FP8AfSABQoCAgICAgID4\u002FwBWGwsQOUEASA0AIAQhBQwBCyAAIAQQDAsgCEEQaiQAIAULsQkCBH8IfiMAQTBrIgQkACADKQMAIQggBEKAgICAMDcDGEEBIQUCQAJAAn4gAkECSARAQoCAgIAwIQ5CgICAgDAMAQtCgICAgDAgAykDCCIOQoCAgIBwg0KAgICAMFENABpCgICAgDAhDEKAgICAMCEJQoCAgIAwIQtCgICAgDAhCiAAIA4QVQ0BQQAhBUKAgICAMCACQQJGDQAaIAMpAxALIQ8CQAJAAkACQCAAIAhBzAEgCEEAEBEiCkKAgICAcIMiCUKAgICAMFIEQAJAAkAgCUKAgICA4ABRBEBCgICAgDAhDEKAgICAMCEJQoCAgIAwIQsMAQsgACAKEAwCfgJAIAFCgICAgHBUDQAgAactAAVBEHFFDQAgACABQQBBABCjAQwBCyAAEDsLIgtCgICAgHCDQoCAgIDgAFEEQEKAgICAMCEMQoCAgIAwIQkMAQsgCEIgiKdBdU8EQCAIpyICIAIoAgBBAWo2AgALIAQgCDcDECAAIARBEGpBCHJBABCFAyEGIAQpAxghDCAEKQMQIQkgBkUNAQtCgICAgDAhCgwGC0IAIQEDQCAAIAkgDCAEQQhqEJEBIghCgICAgHCDQoCAgIDgAFENAiAEKAIIBEBCgICAgDAhCgwGCwJAIAUEQCAIIQoMAQsgBCAINwMgIAQgAUL\u002F\u002F\u002F\u002F\u002FD4M3AyggACAOIA9BAiAEQSBqEBwhCiAAIAgQDCAKQoCAgIBwg0KAgICA4ABRDQMLIAAgCyABIAoQZ0EASA0CIAFCAXwhAQwACwALIAAgCBAgIgpCgICAgHCDQoCAgIDgAFENAiAAIARBCGogChAvQQBIDQIgBAJ+IAQpAwgiCEKAgICACHxC\u002F\u002F\u002F\u002F\u002Fw9YBEAgCEL\u002F\u002F\u002F\u002F\u002FD4MMAQtCgICAgMB+IAi5vSIJQoCAgIDAgYD8\u002FwB9IAlC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbCyINNwMgAn4CQCABQoCAgIBwVA0AIAGnLQAFQRBxRQ0AIAAgAUEBIARBIGoQowEMAQsgAEKAgICAMEEBIARBIGoQ4AILIQsgACANEAwgC0KAgICAcINCgICAgOAAUQRAQoCAgIAwIQwMAgtCACENIAhCACAIQgBVGyEBA0AgASANUQRAQoCAgIAwIQxCgICAgDAhCQwFC0KAgICAMCEMIAAgCiANEGwiCEKAgICAcINCgICAgOAAUQ0CAkAgBQRAIAghCQwBCyAEIAg3AyAgBCANQv\u002F\u002F\u002F\u002F8PgzcDKCAAIA4gD0ECIARBIGoQHCEJIAAgCBAMIAlCgICAgHCDQoCAgIDgAFENAwsgACALIA0gCRBnIQcgDUIBfCENIAdBAE4NAAsMAQtCgICAgDAhCiAJQoCAgIBwg0KAgICAMFENAyAAIAlBARCQARoMAwtCgICAgDAhCQwCC0KAgICAMCEMQoCAgIAwIQlCgICAgDAhCwwBCyAAIAtBMCABpyICQQBOBH4gAUL\u002F\u002F\u002F\u002F\u002FD4MFQoCAgIDAfiACuL0iAUKAgICAwIGA\u002FP8AfSABQoCAgICAgID4\u002FwBWGwsQOUEATg0BCyAAIAsQDEKAgICA4AAhCwsgACAKEAwgACAJEAwgACAMEAwgBEEwaiQAIAsLJgBCgICAgOAAIAAgAykDABDMASIAQQBHrUKAgICAEIQgAEEASBsLowICAX8EfiMAQRBrIgUkAEKAgICAMCEGAkACQCAAIAVBCGogACABECAiCRAvDQAgBUEBNgIEAkAgBARAIAMpAwAhCEKAgICAMCEHIAJBAk4EQCADKQMIIQcLIAAgCBBVRQ0BDAILIAJBAEwEQEKAgICAMCEIQoCAgIAwIQcMAQtCgICAgDAhCEKAgICAMCEHIAMpAwAiAUKAgICAcINCgICAgDBRDQAgACAFQQRqIAEQswFBAEgNAQsgACAJQgAQnwIiAUKAgICAcINCgICAgOAAUQRAIAEhBgwBCyABIQYgACABIAkgBSkDCEIAIAUoAgQgCCAHENQEQgBTDQAgCSEGDAELIAAgCRAMQoCAgIDgACEBCyAAIAYQDCAFQRBqJAAgAQv5AQIEfgF\u002FIwBBIGsiCCQAAkACQCAAIAhBGGogACABECAiARAvDQAgACAIQQhqIAMpAwBCACAIKQMYIgQgBBBmDQAgACAIQRBqIAMpAwhCACAEIAQQZg0AIAggBDcDAAJ+IAQgAkEDSA0AGiAEIAMpAxAiBUKAgICAcINCgICAgDBRDQAaIAAgCCAFQgAgBCAEEGYNASAIKQMACyEGIAAgASAIKQMIIgUgCCkDECIHIAYgB30iBiAEIAV9IgQgBCAGVRsiBEEBQX9BASAFIAQgB3xTGyAFIAdXGxDzAkUNAQsgACABEAxCgICAgOAAIQELIAhBIGokACABC+UHAgR\u002FCX4jAEEwayIFJABCgICAgOAAIQgCQAJAIAAgBUEgaiAAIAEQICIOEC8NACAFQgA3AxgCQCACQQBKBEAgACAFQRhqIAMpAwBCACAFKQMgIgsgCxBmDQIgBSALIAUpAxgiCn0iDDcDECACQQFGDQEgACAFQRBqIAMpAwhCACAMQgAQZg0CIAUpAxAhDAwBCyAFKQMgIQsLIAsgAkECa0EAIAJBAkobrSIPfCAMfSINQoCAgICAgIAQWQRAIABBiscAQQAQEgwBCyAAIA0Q4gIiAUKAgICAcINCgICAgOAAUQRAQQAhAkKAgICA4AAhCwwCCyANQgBXBEBBACECIAEhCEKAgICAMCELDAILIAGnKAIkIgQgDadBA3RqIQICQAJAAkACQCAOIAVBLGogBUEMahCPAQRAIAsgBTUCDFENAQsgCkIAIApCAFUbIQoMAQtCACEIIApCACAKQgBVGyEJIAUoAiwhBgNAAkAgCCAJUQRAIANBEGohA0IAIQgDQCAIIA9RDQIgAyAIp0EDdGopAwAiCkIgiKdBdU8EQCAKpyIHIAcoAgBBAWo2AgALIAQgCjcDACAEQQhqIQQgCEIBfCEIDAALAAsgBiAIp0EDdGopAwAiCkIgiKdBdU8EQCAKpyIHIAcoAgBBAWo2AgALIAQgCjcDACAEQQhqIQQgCEIBfCEIDAELCyAJIAx8IQgDQCAIIAtZDQIgBiAIp0EDdGopAwAiCUIgiKdBdU8EQCAJpyIDIAMoAgBBAWo2AgALIAQgCTcDACAEQQhqIQQgCEIBfCEIDAALAAsDQAJAIAkgClEEQCADQRBqIQNCACEJA0AgCSAPUQ0CIAMgCadBA3RqKQMAIhBCIIinQXVPBEAgEKciBiAGKAIAQQFqNgIACyAEIBA3AwAgBEEIaiEEIAlCAXwhCQwACwALIAAgDiAJIAQQVEF\u002FRg0DIARBCGohBCAJQgF8IQkMAQsLIAogDHwhCQNAIAkgC1kNASAAIA4gCSAEEFRBf0YNAiAEQQhqIQQgCUIBfCEJDAALAAsgAiAERgRAIAFCgICAgDAgACABQTAgDUKAgICACFoEfkKAgICAwH4gDbm9IghCgICAgMCBgPz\u002FAH0gCEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsFIA0LEDlBAEgiAxshC0KAgICA4AAgASADGyEIIAIhBAwDC0GJFkGo7ABB4rkCQfHqABAAAAsgASELDAELQQAhAkKAgICAMCELCwNAIAIgBEZFBEAgBEKAgICAMDcDACAEQQhqIQQMAQsLIAAgCxAMIAAgDhAMIAVBMGokACAIC8gIAgl+A38jAEEwayIOJABCgICAgDAhBQJAAkAgACAOQSBqIAAgARAgIgoQLw0AIAAgDkEYaiADKQMAQgAgDikDICIGIAYQZg0AAkAgBARAAkACQAJAIAIOAgIAAQsgBiAOKQMYfSEHQQAhAgwBCyAAIA5BEGogAykDCEIAIAYgDikDGH1CABBmDQMgAkECayECIA4pAxAhBwsgBiACrXwgB31CgICAgICAgBBTDQEgAEH0yABBABASDAILIA4gBjcDECAGIQEgAykDCCINQoCAgIBwg0KAgICAMFIEfiAAIA5BEGogDUIAIAEgARBmDQIgDikDEAUgAQsgDikDGH0iAUIAIAFCAFUbIQdBACECCyAAIAogB0KAgICACHxC\u002F\u002F\u002F\u002F\u002Fw9YBH4gB0L\u002F\u002F\u002F\u002F\u002FD4MFQoCAgIDAfiAHub0iAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwsiBRCfAiEBIAAgBRAMAkAgAUKAgICAcINCgICAgOAAUQ0AIA4pAxgiDSAHfCELAkACQCAKIA5BDGogDkEIahCPAUUgAUKAgICAcFRyDQAgAaciDy8BBkECRw0AIA0hBSAPLQAFQQhxRQ0BIAUgCyAONQIIIgggCCALVRsiCCAFIAhVGyAFfSEJIA4oAgwhEANAIAkgDFENAiAQIAWnQQN0aikDACIIQiCIp0F1TwRAIAinIg8gDygCAEEBajYCAAsgACABIAwgCEGAgAEQyAFBAEgNAyAMQgF8IQwgBUIBfCEFDAALAAsgDSEFCyAFIAsgBSALVRshCANAIAUgCFIEQCAAIAogBSAOQShqEFQiD0EASA0CIA8EQCAAIAEgCSAOKQMoQYCAARDIAUEASA0DCyAJQgF8IQkgBUIBfCEFDAELCyAAIAFBMCAJQoCAgIAIWgR+QoCAgIDAfiAJub0iBUKAgICAwIGA\u002FP8AfSAFQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwUgCQsQOUEASA0AIAQEQCAGIAKtIgt8IAd9IQwCQCAHIAtRDQAgACAKIAsgDXwgByANfCIFIAYgBX1Bf0EBIAcgC1MbEPMCQQBIDQIDQCAGIAxXDQEgACAKIAZCAX0iBhCFAkEATg0ACwwCCyADQRBqIQNCACEFA0AgBSALUgRAIAMgBadBA3RqKQMAIghCIIinQXVPBEAgCKciAiACKAIAQQFqNgIACyAFIA18IQYgBUIBfCEFIAAgCiAGIAgQe0EATg0BDAMLCyAMQoCAgIAIfEL\u002F\u002F\u002F\u002F\u002FD1gEfiAMQv\u002F\u002F\u002F\u002F8PgwVCgICAgMB+IAy5vSIFQoCAgIDAgYD8\u002FwB9IAVC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbCyEJIAEhBSAAIApBMCAJEDlBAEgNAgsgCiEFDAILIAEhBQsgACAKEAxCgICAgOAAIQELIAAgBRAMIA5BMGokACABC5MEAgN\u002FBn4jAEEgayICJABCgICAgDAhCgJAAkAgAykDACIIQoCAgIBwg0KAgICAMFENACAAIAgQNQ0AIABB+zlBABASQoCAgIDgACEJDAELQoCAgIDgACEJAkAgACACQRBqIAAgARAgIgsQLw0AIAAgAikDECIHEOICIghCgICAgHCDQoCAgIDgAFEEQEKAgICA4AAhCgwBCwJAIAdCAFUEQCAIpygCJCEEQgAhAQJAAkAgCyACQRxqIAJBDGoQjwFFDQAgByACNQIMUg0AIAIoAhwhBQNAIAEgB1ENAiAFIAGnQQN0aikDACIMQiCIp0F1TwRAIAynIgYgBigCAEEBajYCAAsgBCAMNwMAIARBCGohBCABQgF8IQEMAAsACwNAIAEgB1ENASAAIAsgASAEEFRBf0cEQCAEQQhqIQQgAUIBfCEBDAELCyAHIAEgASAHUxshCgNAIAEgClENAyAEQoCAgIAwNwMAIARBCGohBCABQgF8IQEMAAsACyAAIAhBMCAHQoCAgIAIWgR+QoCAgIDAfiAHub0iAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwUgBwsQOUEASA0BCyAAIAggBCADENUEIglCgICAgHCDQoCAgIDgAFENACAAIAkQDCAIIQkMAQsgCCEKCyAAIAoQDCAAIAsQDAsgAkEgaiQAIAkL5AIDAn4FfwF8IwBBIGsiBSQAAkAgAigCBA0AIAIoAgAhBgJAAkACfyACKAIIBEAgACkAACABKQAAUQ0CIAUgACkDADcDECAFIAEpAwA3AxggBiACKQMQQoCAgIAwQQIgBUEQahAcIgNCgICAgHCDQoCAgIDgAFENAyADQv\u002F\u002F\u002F\u002F8PWARAIAOnIgJBH3UgAkEAR3IMAgsgBiAFQQhqIAMQbUEASA0DIAUrAwgiCkQAAAAAAAAAAGQgCkQAAAAAAAAAAGNrDAELIAAoAggiCEUEQCAGIAApAwAQJSIDQoCAgIBwg0KAgICA4ABRDQMgACADpyIINgIICyABKAIIIgkEfyAIBSAGIAEpAwAQJSIDQoCAgIBwg0KAgICA4ABRDQMgASADpyIJNgIIIAAoAggLIAkQvAILIgcNAgsgACkDECIDIAEpAxAiBFUgAyAEU2shBwwBCyACQQE2AgQLIAVBIGokACAHC9MFAgd+A38jAEEQayINJAAgAUKAgICAcINCgICAgDBRBEAgACgCECgCjAEpAwghAQsCQCAAIAFBPCABQQAQESIGQoCAgIBwg0KAgICA4ABRDQACQCAGQv\u002F\u002F\u002F\u002F9vVg0AIAAgBhAMIAAgARD8AiIMRQRAQoCAgIDgACEGDAILAn8gBEEASARAIAwoAihBGGoMAQsgDCAEQQN0akHYAGoLKQMAIgZCIIinQXVJDQAgBqciDCAMKAIAQQFqNgIACyAAIAZBAxBHIQEgACAGEAxCgICAgOAAIQYgAUKAgICAcINCgICAgOAAUQ0AAkAgAyAEQQdGIgxBA3RqKQMAIgVCgICAgHCDQoCAgIAwUgRAIAAgBRAlIgVCgICAgHCDQoCAgIDgAFENASAAIAFBMyAFQQMQFRoLAkAgAkECQQEgDBsiAkwNACADIAJBA3RqKQMAIgVCgICAgHBUDQAgACAFQTQQbiICQQBIDQEgAkUNACAAIAVBNCAFQQAQESIFQoCAgIBwg0KAgICA4ABRDQEgACABQTQgBUEDEBUaCyAEQQdGBEBCgICAgOAAIQhCgICAgDAhBQJAAkAgACADKQMAQQAQywEiB0KAgICAcINCgICAgOAAUQRAQoCAgIAwIQkMAQsgACAHQesAIAdBABARIglCgICAgHCDQoCAgIDgAFENACAAEDsiBUKAgICAcINCgICAgOAAUQRAQoCAgIDgACEFDAELA0AgACAHIAkgDUEMahCRASILQoCAgIBwg0KAgICA4ABSBEAgDSgCDARAIAUhCAwECyAAIAUgCiALEGchDiAKQgF8IQogDkEATg0BCwsgACAHQQEQkAEaCyAAIAUQDAsgACAJEAwgACAHEAwgCEKAgICAcINCgICAgOAAUQ0BIAAgAUE1IAhBAxAVGgsgACABQQBBAEEBELQCIAEhBgwBCyAAIAEQDAsgDUEQaiQAIAYLrQMCBn4CfyMAQSBrIgMkAEKAgICAMCEGQoCAgIDgACEHAkAgACADQRBqIAAgARAgIggQLw0AIAAgAykDECIEEOICIgVCgICAgHCDQoCAgIDgAFEEQEKAgICA4AAhBgwBCwJAIARCAFUEQCAEQgF9IQEgBacoAiQhAgJAAkAgCCADQRxqIANBDGoQjwFFDQAgBCADNQIMUg0AIAMoAhwhCgNAIAFCAFMNAiAKIAGnQQN0aikDACIJQiCIp0F1TwRAIAmnIgsgCygCAEEBajYCAAsgAiAJNwMAIAJBCGohAiABQgF9IQEMAAsACwNAIAFCAFMNASAAIAggASACEFRBf0cEQCACQQhqIQIgAUIBfSEBDAELCwNAIAFCAFMNAyACQoCAgIAwNwMAIAJBCGohAiABQgF9IQEMAAsACyAAIAVBMCAEQoCAgIAIWgR+QoCAgIDAfiAEub0iAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwUgBAsQOUEASA0BCyAFIQcMAQsgBSEGCyAAIAYQDCAAIAgQDCADQSBqJAAgBwumAwICfgJ\u002FIwBBMGsiAiQAIAJCgICAgDA3AygCQAJ+QoCAgIAwIAAgAkEQaiAAIAEQICIBEC8NABogASACQRxqIAJBDGoQjwEhAyACKQMQIQUCQCADRQ0AIAUgAigCDCIDrVINACADQQJJDQJBACEAIAIoAhwhBgNAIAAgA0EBayIDTw0DIAYgAEEDdGoiBykDACEEIAcgBiADQQN0aiIHKQMANwMAIAcgBDcDACAAQQFqIQAMAAsACwNAIAQgBUIBfSIFWQ0CAkACQAJAIAAgASAEIAJBKGoQVCIDQQBIDQAgACABIAUgAkEgahBUIgZBAEgNAAJAAkAgBgRAIAAgASAEIAIpAyAQe0EASA0DIANFDQIgACABIAUgAikDKBB7QQBODQEMBQsgA0UNAyAAIAEgBBCFAkEASA0CIAAgASAFIAIpAygQe0EASA0ECyACQoCAgIAwNwMoDAILIAAgASAFEIUCQQBODQELIAIpAygMAwsgBEIBfCEEDAELC0KAgICAMAshBCAAIAQQDCAAIAEQDEKAgICA4AAhAQsgAkEwaiQAIAELhQEBAX5CgICAgOAAIQQgACABECAiAUKAgICAcINCgICAgOAAUgRAAn5CgICAgOAAIAAgAUHcACABQQAQESIEQoCAgIBwg0KAgICA4ABRDQAaIAAgBBA1RQRAIAAgBBAMIAAgASAAIAAQ1wQMAQsgACAEIAFBAEEAEDYLIQQgACABEAwLIAQLogMCAn8GfiMAQSBrIgUkAAJ+AkAgACAFIAAgARAgIgkQLw0AQSwhBgJAIAJBAEwgBHJFBEBCgICAgDAhB0EAIQIgAykDACIBQoCAgIBwg0KAgICAMFENASAAIAEQJSIHQoCAgIBwg0KAgICA4ABRDQJBfyEGIAenIgIoAgRBAUcNASACLQAQIQYMAQtCgICAgDAhB0EAIQILIAAgBUEIakEAED4aQgAhASAFKQMAIghCACAIQgBVGyELAkADQCABIAtSBEACQCABUA0AIAZBAE4EQCAFQQhqIAYQPBoMAQsgBUEIaiACQQAgAigCBEH\u002F\u002F\u002F\u002F\u002FB3EQSxoLIAAgCSABpxCmASIIQoCAgIBwgyIKQoCAgIAgUSAKQoCAgIAwUXJFBEAgCkKAgICA4ABRDQMgBUEIaiAEBH4gACAIENYEBSAICxCEAQ0DCyABQgF8IQEMAQsLIAAgBxAMIAAgCRAMIAVBCGoQNwwCCyAFKAIIKAIQIgJBEGogBSgCDCACKAIEEQAAIAAgBxAMCyAAIAkQDEKAgICA4AALIQwgBUEgaiQAIAwLvQICAX8DfiMAQSBrIgQkAAJ+AkACQAJAIAAgBEEQaiAAIAEQICIGEC8NACAEKQMQIgVCAFcNASAEIAVCAX0iATcDCCACQQJOBEAgACAEQQhqIAMpAwhCfyABIAUQZg0BIAQpAwghAQsDQCABQgBTDQIgACAGIAEgBEEYahBUIgJBAEgNASACBEAgAykDACIFQiCIp0F1TwRAIAWnIgIgAigCAEEBajYCAAsgACAFIAQpAxhBABC0AQ0ECyABQgF9IQEMAAsACyAAIAYQDEKAgICA4AAMAgtCfyEBCyAAIAYQDCABQv\u002F\u002F\u002F\u002F8PgyABQoCAgIAIfEL\u002F\u002F\u002F\u002F\u002FD1gNABpCgICAgMB+IAG5vSIBQoCAgIDAgYD8\u002FwB9IAFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbCyEHIARBIGokACAHC+cDAgJ\u002FB34jAEEgayIEJAACfgJAIAAgBEEQaiAAIAEQICIIEC8NAEJ\u002FIQkCQCAEKQMQIgdCAFcNAEIAIQEgBEIANwMIIAJBAk4EQCAAIARBCGogAykDCEIAIAcgBxBmDQIgBCkDCCEBCwJAAkAgCCAEQQRqIAQQjwFFDQAgASAENQIAIgYgASAGVRshBiAEKAIEIQIDQCABIAZRBEAgBiEBDAILIAMpAwAiCkIgiKdBdU8EQCAKpyIFIAUoAgBBAWo2AgALIAIgAadBA3RqKQMAIgtCIIinQXVPBEAgC6ciBSAFKAIAQQFqNgIACyAAIAogC0EAELQBDQIgAUIBfCEBDAALAAsgASAHIAEgB1UbIQcDQCABIAdRDQIgACAIIAEgBEEYahBUIgJBAEgNAyACBEAgAykDACIGQiCIp0F1TwRAIAanIgIgAigCAEEBajYCAAsgACAGIAQpAxhBABC0AQ0CCyABQgF8IQEMAAsACyABIQkLIAAgCBAMIAlC\u002F\u002F\u002F\u002F\u002Fw+DIAlCgICAgAh8Qv\u002F\u002F\u002F\u002F8PWA0BGkKAgICAwH4gCbm9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsMAQsgACAIEAxCgICAgOAACyEMIARBIGokACAMC+cDAgl+AX8jAEEwayIOJABCgICAgDAhBgJAAkAgACAOQQhqIAAgARAgIggQLwRAQoCAgIAwIQUMAQtCgICAgDAhBSAAIAMpAwAiChBVDQBCgICAgDAhCSACQQJOBEAgAykDCCEJCyAOKQMIIgVCAX1CACAEQX5xQQJGIgIbIQdCf0IBIAIbIQtCfyAFIAIbIQwDQCAHIAxSBEAgB0KAgICACHxC\u002F\u002F\u002F\u002F\u002Fw9YBH4gB0L\u002F\u002F\u002F\u002F\u002FD4MFQoCAgIDAfiAHub0iBUKAgICAwIGA\u002FP8AfSAFQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwsiBUKAgICAcINCgICAgOAAUQ0CIAAgCCAFEE4iBkKAgICAcINCgICAgOAAUQ0CIA4gATcDICAOIAU3AxggDiAGNwMQIAAgCiAJQQMgDkEQahAcIg1CgICAgHCDQoCAgIDgAFENAiAAIA0QJwRAAkACQCAEQQFrDgMAAQABCyAAIAYQDCAAIAgQDAwFCyAAIAUQDCAAIAgQDCAGIQUMBAUgACAGEAwgACAFEAwgByALfCEHDAILAAsLIAAgCBAMQoCAgIAwQv\u002F\u002F\u002F\u002F8PIARBAWtBfXEbIQUMAQsgACAFEAwgACAGEAwgACAIEAxCgICAgOAAIQULIA5BMGokACAFC6ICAgN+An8jAEEgayIHJAACQAJAIAAgB0EYaiAAIAEQICIFEC8NACAHQgA3AxACQCACQQFMBEAgBykDGCEEDAELIAcpAxghBCADKQMIIgFCgICAgHCDQoCAgIAwUgRAIAAgB0EQaiABQgAgBCAEEGYNAgsgByAENwMIIAJBAkYNACADKQMQIgFCgICAgHCDQoCAgIAwUQ0AIAAgB0EIaiABQgAgBCAEEGYNASAHKQMIIQQLIAcpAxAiASAEIAEgBFUbIQYDQCABIAZRDQIgAykDACIEQiCIp0F1TwRAIASnIgIgAigCAEEBajYCAAsgACAFIAEgBBB7IQggAUIBfCEBIAhBAE4NAAsLIAAgBRAMQoCAgIDgACEFCyAHQSBqJAAgBQvvBQIDfwl+IwBBQGoiBSQAQoCAgIAwIQsgBUKAgICAMDcDOCAFQoCAgIAwNwMwAkACQAJAIARBCHEiBwRAIAFCIIinQXVPBEAgAaciBiAGKAIAQQFqNgIACyAFIAAgARCKASIGrDcDCCAGQQBODQEMAgsgACAFQQhqIAAgARAgIgEQLw0BCyAAIAMpAwAiDxBVDQACQCACQQFMBEAgBSkDCCIMQgAgDEIAVRshCiAEQQFxIQQDQCAIIApRBEAgAEGODUEAEBIMBAsgDCAIQn+FfCAIIAQbIQkgCEIBfCEIIAcEQCAFIAAgASAJEGwiCTcDMCAJQoCAgIBwg0KAgICA4ABRDQQMAwsgACABIAkgBUEwahBUIgJBAEgNAyACRQ0ACyAFKQMwIQkMAQsgAykDCCIJQiCIp0F1TwRAIAmnIgIgAigCAEEBajYCAAsgBEEBcSEEIAUpAwghDAsgCCAMIAggDFUbIRADQCAIIBBRDQIgDCAIQn+FfCAIIAQbIQoCQAJAAkAgBwRAIAUgACABIAoQbCILNwM4IAtCgICAgHCDQoCAgIDgAFINAQwDCyAAIAEgCiAFQThqEFQiAkEASARAIAUpAzghCwwDCyACRQ0BCyAKQoCAgIAIfEL\u002F\u002F\u002F\u002F\u002FD1gEfiAKQv\u002F\u002F\u002F\u002F8PgwVCgICAgMB+IAq5vSILQoCAgIDAgYD8\u002FwB9IAtC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbCyENIAUpAzghCiANQoCAgIBwg0KAgICA4ABRBEAgCiELDAILIAUgATcDKCAFIA03AyAgBSAKNwMYIAUgCTcDEEKAgICAMCELIAAgD0KAgICAMEEEIAVBEGoQHCEOIAAgDRAMIAAgChAMIAVCgICAgDA3AzggDkKAgICAcINCgICAgOAAUQ0BIAAgCRAMIA4hCQsgCEIBfCEIDAELCyAFIAk3AzALIAAgBSkDMBAMIAAgCxAMQoCAgIDgACEJCyAAIAEQDCAFQUBrJAAgCQvlCAIDfwp+IwBBMGsiBSQAQoCAgIAwIQggBUKAgICAMDcDKAJAAkACQCAEQQhxIgcEQCABQiCIp0F1TwRAIAGnIgYgBigCAEEBajYCAAsgBSAAIAEQigEiBqw3AwggBkEATg0BQoCAgIDgACEJDAILQoCAgIDgACEJIAAgBUEIaiAAIAEQICIBEC8NAQsgAykDACEQQoCAgIAwIQ8gAkECTgRAIAMpAwghDwtCgICAgOAAIQkgACAQEFUNAAJAAkACQAJAAkACQAJAIAQODQUABgECBgYGBQAGAwQGC0KAgICAECEIDAULIAAgAQJ+IAUpAwgiCEKAgICACHxC\u002F\u002F\u002F\u002F\u002Fw9YBEAgCEL\u002F\u002F\u002F\u002F\u002FD4MMAQtCgICAgMB+IAi5vSIIQoCAgIDAgYD8\u002FwB9IAhC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbCxCfAiIIQoCAgIBwg0KAgICA4ABSDQQMBQsgACABQgAQnwIiCEKAgICAcINCgICAgOAAUg0DDAQLIAUgATcDECAFIAU1Agg3AxggAEECIAVBEGoQ4QIiCEKAgICAcINCgICAgOAAUg0CDAMLIAAQOyIIQoCAgIBwg0KAgICA4ABSDQFCgICAgOAAIQgMAgtCgYCAgBAhCAsgBSkDCCIJQgAgCUIAVRshEQNAIAogEVIEQAJAAkAgBwRAIAUgACABIAoQbCILNwMoQoCAgIDgACEJIAtCgICAgHCDQoCAgIDgAFINAQwFCyAAIAEgCiAFQShqEFQiAkEASARAQoCAgIDgACEJDAULIAJFDQELIAohCyAKQoCAgIAIWgRAQoCAgIDAfiAKub0iCUKAgICAwIGA\u002FP8AfSAJQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGyELC0KAgICA4AAhCSALQoCAgIBwg0KAgICA4ABRDQMgBSABNwMgIAUgCzcDGCAFIAUpAygiDjcDECAAIBAgD0EDIAVBEGoQHCEMIAAgCxAMIAxCgICAgHCDQoCAgIDgAFENAwJAAkACQAJAAkACQAJAIAQODQABBQIEBQUFAAEFAwQFCyAAIAwQJw0FQoCAgIAQIQkMCgsgACAMECdFDQRCgYCAgBAhCQwJCyAAIAggCiAMEGdBAE4NAwwHCyAAIAggCkL\u002F\u002F\u002F\u002F\u002FD4MgDEGAgAEQzwFBAE4NAgwGCyAAIAwQJ0UNASAOQiCIp0F1TwRAIA6nIgIgAigCAEEBajYCAAsgACAIIA0gDhBnQQBIDQUgDUIBfCENDAELIAAgDBAMCyAAIA4QDCAFQoCAgIAwNwMoCyAKQgF8IQoMAQsLIARBDEcEQCAIIQkMAgsgBSABNwMQIAUgDUL\u002F\u002F\u002F\u002F\u002FD4M3AxhCgICAgOAAIQkgAEECIAVBEGoiAhDhAiIKQoCAgIBwg0KAgICA4ABRDQAgBSAINwMQQoCAgIDgACAKIAAgACAKQcMAQQEgAhCzAhD\u002FARshCQsgACAIEAwLIAAgBSkDKBAMIAAgARAMIAVBMGokACAJC60EAgV+A38jAEEQayIJJABCgICAgDAhBgJAAkAgACABECAiCEKAgICAcINCgICAgOAAUQ0AIAAgCEIAEJ8CIgZCgICAgHCDQoCAgIDgAFENAEF\u002FIQpBfyACIAJBAEgbIQsCQANAIAogC0cEQCAIIQUgCkEATgRAIAMgCkEDdGopAwAhBQsCQAJAIAVCgICAgHBUDQACfyAAIAVB0wEgBUEAEBEiAUKAgICAcIMiB0KAgICAMFIEQCAHQoCAgIDgAFENByAAIAEQJwwBCyAAIAUQzAELIgJBAEgNBSACRQ0AIAAgCSAFEC8NBSAJKQMAIgcgBHxC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002Fw9VDQRCACEBIAdCACAHQgBVGyEHA0AgASAHUQ0CIAAgBSABIAlBCGoQVCICQQBIDQYgAgRAIAAgBiAEIAkpAwgQZ0EASA0HCyAEQgF8IQQgAUIBfCEBDAALAAsgBEL+\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FD1UNAyAFQiCIp0F1TwRAIAWnIgIgAigCAEEBajYCAAsgACAGIAQgBRBnQQBIDQQgBEIBfCEECyAKQQFqIQoMAQsLIAAgBkEwIARCgICAgAh8Qv\u002F\u002F\u002F\u002F8PWAR+IARC\u002F\u002F\u002F\u002F\u002Fw+DBUKAgICAwH4gBLm9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLEDlBAEgNAQwCCyAAQfTIAEEAEBILIAAgBhAMQoCAgIDgACEGCyAAIAgQDCAJQRBqJAAgBgvaBQIFfgN\u002FIwBBIGsiCSQAQoCAgIAwIQRCgICAgOAAIQYCQCAAIAlBEGogACABECAiCBAvDQAgACAJQQhqIAMpAwAQ4wENACAJKQMQIQUCQAJAIAkpAwgiAUIAUwRAIAEgBXwiAUIAUw0BCyABIAVTDQELIABB3eEAQQAQRAwBCyAAIAUQ4gIiB0KAgICAcINCgICAgOAAUQRAQoCAgIDgACEEDAELIAenKAIkIQJCACEEAkACQCAIIAlBHGogCUEEahCPAUUNACAFIAk1AgRSDQBCACEGIAkoAhwhCgNAIAEgBlIEQCAKIAanQQN0aikDACIEQiCIp0F1TwRAIASnIgsgCygCAEEBajYCAAsgAiAENwMAIAJBCGohAiAGQgF8IQYMAQsLIAMpAwgiBEIgiKdBdU8EQCAEpyIDIAMoAgBBAWo2AgALIAIgBDcDAANAIAFCAXwiASAFWQ0CIAogAadBA3RqKQMAIgRCIIinQXVPBEAgBKciAyADKAIAQQFqNgIACyACQQhqIgIgBDcDAAwACwALAkACQANAIAEgBFENASAAIAggBCACEFRBf0cEQCACQQhqIQIgBEIBfCEEDAELCyAEIQEMAQsgAykDCCIEQiCIp0F1TwRAIASnIgMgAygCAEEBajYCAAsgAiAENwMAA0AgAUIBfCIBIAVZDQIgACAIIAEgAkEIaiICEFRBf0cNAAsLA0AgASAFWQRAIAchBAwDBSACQoCAgIAwNwMAIAJBCGohAiABQgF8IQEgCSkDECEFDAELAAsACyAHQoCAgIAwIAAgB0EwIAVCgICAgAh8Qv\u002F\u002F\u002F\u002F8PWAR+IAVC\u002F\u002F\u002F\u002F\u002Fw+DBUKAgICAwH4gBbm9IgFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLEDlBAEgiAhshBEKAgICA4AAgByACGyEGCyAAIAQQDCAAIAgQDCAJQSBqJAAgBgvrAQEDfiMAQSBrIgIkAEKAgICA4AAhBAJAIAAgAkEQaiAAIAEQICIFEC8NACAAIAJBCGogAykDABDjAQ0AQoCAgIAwIQQgAikDCCIBIAIpAxAiBiABQj+Hg3wiAUIAUyABIAZZcg0AAkAgBSACQQRqIAIQjwFFDQAgASACNQIAWg0AIAIoAgQgAadBA3RqKQMAIgRCIIinQXVJDQEgBKciAyADKAIAQQFqNgIADAELQoCAgIDgACEEIAAgBSABIAJBGGoQVCIDQQBIDQAgAikDGEKAgICAMCADGyEECyAAIAUQDCACQSBqJAAgBAstAQF+QoCAgIAwIQICQCABEJYDIgBFDQAgAC0AEkEEcUUNACAANQJEIQILIAILMwIBfgF\u002FQoCAgIAwIQICQCABEJYDIgNFDQAgAy0AEkEEcUUNACAAIAMoAkAQKSECCyACCygAQoCAgIDgACAAIAMpAwAgARDhBSIAQQBHrUKAgICAEIQgAEEASBsLvAECAX4Cf0KAgICA4AAhBCAAIAEQVQR+QoCAgIDgAAVB9pEBIQICQCABpyIDLwEGEOABRQ0AAkAgAygCICIDLwARIgVBgAhxRQ0AIAMoAlQiBkUNACAAIAYgAygCSBDqAQ8LIAVBBHZBA3FBAWsiA0ECSw0AIANB\u002F\u002F8DcUECdEGQ9QFqKAIAIQILIAAgAiAAIAFBNyABQQAQESIBQoCAgIBwg0KAgICAMFEEfiAAQS8QKQUgAQtBnggQsgELC+EFAwN+B38DfAJAIAAgARBVDQAgACAAKQMwQQ4QRyIFQoCAgIBwg0KAgICA4ABRDQAgBaciCSABQoCAgIBwWgR\u002FIAGnLQAFQRBxBUEACyAJLQAFQe8BcXI6AAUCQCAAQQEgAiACQQFMGyIKQQFrIghBA3RBGGoQJCIHRQ0AIAFCIIinQXVPBEAgAaciAiACKAIAQQFqNgIACyAHIAE3AwAgAykDACIEQiCIp0F1TwRAIASnIgIgAigCAEEBajYCAAsgByAINgIQIAcgBDcDCCAHQRhqIQtBACECA0AgAiAIRwRAIAMgAkEBaiIMQQN0aikDACIEQiCIp0F1TwRAIASnIg0gDSgCAEEBajYCAAsgCyACQQN0aiAENwMAIAwhAgwBCwsgCSAHNgIgAn8gAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECJBfwwBCyAAQQAgAadBMBBDCyICQQBIDQACQCACRQ0AIAAgAUEwIAFBABARIgRCgICAgHCDQoCAgIDgAFENASAEQv\u002F\u002F\u002F\u002F8PWARAIASnIgIgCGtBACACIApOG60hBgwBCyAEQiCIp0EHa0FtTQRAAkAgBEKAgICAwIGA\u002FP8AfCIEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWDQAgBL+dIg8gCLciEGUNACAPIBChIQ4LIA69IgQCfyAOmUQAAAAAAADgQWMEQCAOqgwBC0GAgICAeAsiAre9UQRAIAKtIQYMAgtCgICAgMB+IARCgICAgMCBgPz\u002FAH0gBEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhshBgwBCyAAIAQQDAsgACAFQTAgBkEBEBUaIABBgJIBIAAgAUE3IAFBABARIgFCgICAgHCDIgRCgICAgJB\u002FUgR+IARCgICAgOAAUQ0BIAAgARAMIABBLxApBSABC0HslgEQsgEiAUKAgICAcINCgICAgOAAUQ0AIAAgBUE3IAFBARAVGiAFDwsgACAFEAwLQoCAgIDgAAswACACQQBMBEAgACABQoCAgIAwQQBBABAcDwsgACABIAMpAwAgAkEBayADQQhqEBwLgwICAX4BfyMAQSBrIgIkAEKAgICA4AAhBQJAAkAgACABECAiAUKAgICAcINCgICAgOAAUQ0AIAAgAykDABAwIgNFDQADQCAAIAIgAacgAxBDIgZBAE4EQCAGBEBCgICAgDAhBQJAIAItAABBEHFFDQAgAkEYQRAgBBtqKQMAIgVCIIinQXVJDQAgBaciBCAEKAIAQQFqNgIACyAAIAIQRgwECyAAIAEQwgIiAUKAgICAcIMiBUKAgICAIFEEQEKAgICAMCEFDAQLIAVCgICAgOAAUQ0DIAAQdkUNAQsLQoCAgIDgACEFDAELQQAhAwsgACADEBAgACABEAwgAkEgaiQAIAULsQEBA34gAykDCCEFIAMpAwAhBkKAgICA4AAhBwJAIAAgARAgIgFCgICAgHCDQoCAgIDgAFIEfiAAIAUQVQ0BIAAgBhAwIgJFDQEgACABIAJCgICAgDBCgICAgDAgBSAEGyAFQoCAgIAwIAQbQYWqAUGFmgEgBBsQaiEDIAAgARAMIAAgAhAQQoCAgIDgAEKAgICAMCADQQBIGwVCgICAgOAACw8LIAAgARAMQoCAgIDgAAtyAQF+QoCAgIAwIQMgAUKAgICAEIRCgICAgHCDQoCAgIAwUQRAIAAQIkKAgICA4AAPCyACQoCAgIBwg0KAgICAIFIgAkL\u002F\u002F\u002F\u002F\u002Fb1hxBH5CgICAgDAFQoCAgIDgAEKAgICAMCAAIAEgAkEBEIkCQQBIGwsLMgECfiAAIAEQICIBQoCAgIBwg0KAgICA4ABRBEAgAQ8LIAAgARDoASEDIAAgARAMIAMLoAECAn4BfyMAQSBrIgIkAEKAgICA4AAhBAJAAkAgACABECAiAUKAgICAcINCgICAgOAAUQ0AIAAgAykDABAwIgNFDQAgACACIAGnIAMQQyIGQQBIDQEgBkUEQEKAgICAECEEDAILIAI1AgAhBSAAIAIQRiAFQgKIQgGDQoCAgIAQhCEEDAELQQAhAwsgACADEBAgACABEAwgAkEgaiQAIAQLwQEBAn4CQAJ+QoCAgIAQIAMpAwAiBEKAgICAcFQNABpCgICAgOAAIAAgARAgIgFCgICAgHCDQoCAgIDgAFENABogBKciAiACKAIAQQFqNgIAIAGnIQIDQCAAIAQQwgIiBEKAgICAcIMiBUKAgICA4ABSBEAgAiAEp0YgBUKAgICAIFFyDQMgABB2RQ0BCwsgACAEEAwgACABEAxCgICAgOAACw8LIAAgBBAMIAAgARAMIAVCgICAgCBSrUKAgICAEIQLnwQCBn8CfiMAQSBrIgYkACAAIAZBCGoiBUEAED4aIAVBKBA8GiAEQX5xQQJGBEAgBUGdkgEQgwEaCyAGQQhqIgVBmjoQgwEaIARBfXFBAUYEQCAFQSoQPBoLIAZBCGpBrYwBEIMBGkEAIQUgAkEBayIHQQAgB0EAShshCAJAAkACQANAIAUgCEcEQCAFBEAgBkEIakEsEDwaCyAFQQN0IQkgBUEBaiEFIAZBCGogAyAJaikDABCNAUUNAQwCCwsgBkEIaiIFQbKSARCDARogAkEASgRAIAUgAyAHQQN0aikDABCNAQ0BCyAGQQhqIgJBtogBEIMBGkKAgICAMCEMIAIQNyILQoCAgIBwg0KAgICA4ABRDQEgACAAKQPAASALQQNBfxCHAyEMIAAgCxAMIAxCgICAgHCDQoCAgIDgAFENASABQoCAgIBwg0KAgICAMFENAiAAIAFBPCABQQAQESILQoCAgIBwg0KAgICA4ABRDQECQCALQv\u002F\u002F\u002F\u002F9vVg0AIAAgCxAMIAAgARD8AiICRQ0CIAIoAiggBEEBdEGQtwFqLwEAQQN0aikDACILQiCIp0F1SQ0AIAunIgIgAigCAEEBajYCAAsgACAMIAtBARCJAiEKIAAgCxAMIApBAE4NAgwBCyAGKAIIKAIQIgJBEGogBigCDCACKAIEEQAAQoCAgIAwIQwLIAAgDBAMQoCAgIDgACEMCyAGQSBqJAAgDAt6AQF+IAAgAykDABAwIgJFBEBCgICAgOAADwtCgICAgOAAIQQgACABECAiAUKAgICAcINCgICAgOAAUQRAIAAgAhAQIAEPCyAAQQAgAacgAhBDIQMgACACEBAgACABEAxCgICAgOAAIANBAEetQoCAgIAQhCADQQBIGwsIACAAIAEQIAsPACAAIAFBOEEAQQAQswILdAAgACADKQMAECAiAUKAgICAcINCgICAgOAAUgR+AkACQCAAIAMpAwgQMCICRQRAIAAgARAMDAELIABBACABpyACEEMhAyAAIAIQECAAIAEQDCADQQBODQELQoCAgIDgAA8LIANBAEetQoCAgIAQhAUgAQsL6wIBBn4jAEEQayICJAAgAykDACEBQoCAgIDgACEFIAAQMyIHQoCAgIBwg0KAgICA4ABSBEBCgICAgDAhBAJAIAAgAUEAEMsBIgFCgICAgHCDQoCAgIDgAFIEQAJAIAAgAUHrACABQQAQESIGQoCAgIBwg0KAgICA4ABRDQADQCAAIAEgBiACQQxqEJEBIgRCgICAgHCDQoCAgIDgAFENASACKAIMBEAgByEFDAQLAkACQCAEQv\u002F\u002F\u002F\u002F9vWARAIAAQIgwBCyAAIARCABBOIghCgICAgHCDQoCAgIDgAFENACAAIARCARBOIglCgICAgHCDQoCAgIDgAFEEQCAAIAgQDAwBCyAAIAcgCCAJQYeAARCUAUEATg0BCyAAIAQQDAwCCyAAIAQQDAwACwALIAFCgICAgHBaBEAgACABQQEQkAEaCyAGIQQLIAEhBiAHIQELIAAgBBAMIAAgBhAMIAAgARAMCyACQRBqJAAgBQtKAEEvIQIgACADKQMAIgFCgICAgHBaBH8gAacvAQYiAkEsRgRAQQ1BLCAAIAEQNRshAgsgACgCECgCRCACQRhsaigCBAVBLwsQKQvwAQIFfwF+IwBBMGsiAiQAQoGAgIAQIQECQCADKQMAIgpCgICAgHBUDQBCgICAgOAAIQEgACACQSxqIAJBKGogCqciCEEDEH0NACACKAIsIQYgAigCKCEHQQAhAwJAA0AgAyAHRwRAIAAgAkEIaiIJIAggBiADQQN0aigCBBBDIgVBAEgNAgJAIAVFDQAgACAJEEYgAigCCCIFQQFxRSAERSAFQQJxRXJxDQBCgICAgBAhAQwDCyADQQFqIQMMAQsLIAAgChCXASIDQQBIDQEgA0EBR61CgICAgBCEIQELIAAgBiAHEFsLIAJBMGokACABC78BAgF+AX9CgICAgDAhAQJAIAAgAykDABAgIgRCgICAgHCDQoCAgIDgAFENAEEBIAIgAkEBTBshBUEBIQIDQCACIAVGBEAgBA8LIAMgAkEDdGopAwAiAUKAgICAEIRCgICAgHCDQoCAgIAwUgRAIAAgARAgIgFCgICAgHCDQoCAgIDgAFENAiAAIAQgAUKAgICAMEEBEMEFDQIgACABEAwLIAJBAWohAgwACwALIAAgBBAMIAAgARAMQoCAgIDgAAsYACAAIAMpAwAgAykDCBBNrUKAgICAEIQL6AICA34DfyMAQSBrIgIkAEKAgICA4AAhBCAAIAMpAwAQICIFQoCAgIBwg0KAgICA4ABSBEACfgJAIAAgAkEcaiACQRhqIAWnQQMQfQRAQoCAgIAwIQEgAigCGCEHIAIoAhwhCAwBCyAAEDMhASACKAIYIQcgAigCHCEIIAFCgICAgHCDQoCAgIDgAFEEQEKAgICA4AAhAQwBC0EAIQMDQCADIAdHBEAgACAIIANBA3RqIgkoAgQQUiIEQoCAgIBwg0KAgICA4ABRDQIgAiAENwMIIAIgBTcDACAAIAUgACACQQAQ2AQhBiAAIAQQDCAGQoCAgIBwgyIEQoCAgIAwUgRAIARCgICAgOAAUQ0DIAAgASAJKAIEIAZBh4ABEBVBAEgNAwsgA0EBaiEDDAELCyAAIAggBxBbIAEMAQsgACAIIAcQWyAAIAUQDCABIQVCgICAgOAACyEEIAAgBRAMCyACQSBqJAAgBAuPAQACQAJAIAMpAwAiAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAEBEAgABAiDAMLIAFCIIinQXVJDQEgAaciACAAKAIAQQFqNgIAIAEPCyAAIAEQigQiAkEASA0BIAQEQCACQQBHrUKAgICAEIQPCyACRQRAIABB7dAAQQAQEgwCCyABpyIAIAAoAgBBAWo2AgALIAEPC0KAgICA4AALTwACQAJAIAMpAwAiAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAERQRAQoCAgIAQDwsgABAiDAELIAAgARCXASIAQQBODQELQoCAgIDgAA8LIABBAEetQoCAgIAQhAsQACAAIAMpAwBBAkEAELICCxAAIAAgAykDAEEBQQAQsgILRwEBfkKAgICA4AAhBCAAIAMpAwAiASADKQMIENoEBH5CgICAgOAABSABQiCIp0F1TwRAIAGnIgAgACgCAEEBajYCAAsgAQsLiwEBAn4gAykDACIBQv\u002F\u002F\u002F\u002F9vWARAIAAQIkKAgICA4AAPCyADKQMQIQZCgICAgOAAIQUCQCAAIAMpAwgQMCICRQ0AIAAgASACIAYgBEVBDnQQ2QQhAyAAIAIQECADQQBIDQAgBARAIANBAEetQoCAgIAQhA8LIAGnIgAgACgCAEEBajYCACABIQULIAULQQAgACADKQMAIgEgAykDCEEBEIkCQQBIBEBCgICAgOAADwsgAUIgiKdBdU8EQCABpyIAIAAoAgBBAWo2AgALIAELXQACQCABQoCAgIBwg0KAgICAMFENACAAKAIQKAKMASgCCCABp0YNACAAIAFBARBeDwsgAykDACIBQiCIpyICQQtqQRFLIAJBfnFBAkdyRQRAIAAQMw8LIAAgARAgCzYAIAMpAwAiAUIgiKciAkF\u002FRiAERSACQX5xQQJHcXJFBEAgABAiQoCAgIDgAA8LIAAgARDoAQuJAQEBfiADKQMAIgFC\u002F\u002F\u002F\u002F\u002F29WIAFCgICAgHCDQoCAgIAgUXJFBEAgAEHe0gBBABASQoCAgIDgAA8LAkAgACABEEEiAUKAgICAcINCgICAgOAAUgRAIAMpAwgiBEKAgICAcINCgICAgDBRDQEgACABIAQQ2gRFDQEgACABEAwLQoCAgIDgAA8LIAELnwIBA34gAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECJCgICAgOAADwtCgICAgOAAIQUCfiAAIAFBNyABQQAQESIEQoCAgIBwg0KAgICAMFEEQCAAQZQBECkMAQsgACAEEDQLIgRCgICAgHCDIgZCgICAgOAAUgR+An4gACABQTMgAUEAEBEiAUKAgICAcINCgICAgDBRBEAgAEEvECkMAQsgACABEDQLIgFCgICAgHCDIgVCgICAgOAAUQRAIAAgBBAMQoCAgIDgAA8LAkAgBkKAgICAkH9RBEAgBKcoAgRB\u002F\u002F\u002F\u002F\u002FwdxRQ0BCyAFQoCAgICQf1EEQCABpygCBEH\u002F\u002F\u002F\u002F\u002FB3FFDQELIABB7JYBIARBpJIBELIBIQQLIAAgBCABELYCBUKAgICA4AALC5UCAgF+An8jAEEwayICJABCgICAgOAAIQECQCAAIAJBKGogAykDABCkAQ0AIAAQ4gEiBUKAgICAcINCgICAgOAAUQ0AIAAgAkEUaiADKQMIEK4CIgZFBEAgACAFEAwMAQsgACgC2AEgAhC7ASACQgEQMhogAiACKQMoIgGnIgdBARC5ARogAiACQn9B\u002F\u002F\u002F\u002F\u002FwNBARB6GiAFp0EEaiIDIAYgAhCyBBoCQCAERSABUHINACACQgEQMhogAiAHQQFrQQEQuQEaIAMgAhDyAUEASA0AIAJCARAyGiACIAdBARC5ARogAyADIAJB\u002F\u002F\u002F\u002F\u002FwNBARDuARoLIAIQGSAAIAYgAkEUahDmASAFEK8CIQELIAJBMGokACABCwkAIAAgARDcBAt0AgJ+AX8gACABENwEIgFCgICAgHCDQoCAgIDgAFEEQCABDwtBCiEGAn4CQCACRQ0AIAMpAwAiBEKAgICAcINCgICAgDBRDQAgACAEENsEIgZBAE4NAEKAgICA4AAMAQsgACABIAYQogULIQUgACABEAwgBQvOAQIBfwJ+IwBBEGsiAiQAAkBBuNQEKQMAUA0AQbTUBCgCACAAIAAQPRDqASEDQbTUBCgCACABIAEQPUH9\u002FwAQ8wMiBEHA1AQoAgAQkAMEQEG01AQoAgAgBBAMQbTUBCgCACADEAwMAQsgAiAENwMIIAIgAzcDAEG01AQoAgBBuNQEKQMAQoCAgIAwQQIgAhAcIQNBtNQEKAIAIAIpAwAQDEG01AQoAgAgAikDCBAMIANBwNQEKAIAEJADGkG01AQoAgAgAxAMCyACQRBqJAALPQACfgJAIAEQlgMiAkUNACACLQAQQQFxDQBCgICAgDAgAi0AEUEBcQ0BGgsgAEGTIkEAEBJCgICAgOAACwsSACAAQZMiQQAQEkKAgICA4AAL1w4CB38BfiMAQdAAayIIJAAgCEEAQdAAECwiCCAENgIMIAggADYCACAIQQE2AgggCEKggICAEDcDECAIIAI2AjggCCACIANqIgI2AjwjAEEQayIHJAACQCAIKAI4IgMtAABBI0cNACADLQABQSFHDQAgByADQQJqIgM2AgwDQAJAIAIgA00NAAJAIAMtAAAiCUEKaw4EAQAAAQALIAnAQQBIBEAgA0EGIAdBDGoQUSEJIAcoAgwhAyAJQX5xQajAAEYNASAJQX9HDQILIAcgA0EBaiIDNgIMDAELCyAIIAM2AjgLIAdBEGokAAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAFQQNxIgdBAkYEQCAAKAIQKAKMASILRQ0EIAspAwgiDkL\u002F\u002F\u002F\u002F\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\u002FAINCgICAgICAgPj\u002FAFENAiAEQRBqIAZqIAedOQMAAkAgBQ0AIAQrAxAiB0QAAAAAAAAAAGZFIAdEAAAAAAAAWUBjRXINACAEIAdEAAAAAACwnUCgOQMQCyAFQQFqIQUMAQsLIARBEGpBABDrAyIHvSIBAn8gB5lEAAAAAAAA4EFjBEAgB6oMAQtBgICAgHgLIgW3vVEEQCAFrSEBDAELQoCAgIDAfiABQoCAgIDAgYD8\u002FwB9IAFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbIQELIARB0ABqJAAgAQtWABCoBSIBQoCAgIAIfEL\u002F\u002F\u002F\u002F\u002FD1gEQCABQv\u002F\u002F\u002F\u002F8Pgw8LQoCAgIDAfiABub0iAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwvvAQEDfiMAQRBrIgIkAEKAgICA4AAhBAJAIAAgACABECAiAUEBELsCIgVCgICAgHCDQoCAgIDgAFENACAFQiCIpyIDQQAgA0ELakESSRtFBEAgACACQQhqIAUQQkEASA0BQoCAgIAgIQQgAikDCEKAgICAgICA+P8Ag0KAgICAgICA+P8AUQ0BC0KAgICA4AAhBCAAIAFB48oAEIcCIgZCgICAgHCDQoCAgIDgAFENACAAIAYQNUUEQCAAQergAEEAEBIgACAGEAwMAQsgACAGIAFBAEEAEDYhBAsgACABEAwgACAFEAwgAkEQaiQAIAQLjAIDAXwBfgF\u002FIwBBEGsiAiQAQoCAgIDgACEFAkAgACACQQhqIgYgARCmAg0AIAAgBiADKQMAEEINACACAn4gAisDCCIEvUKAgICAgICA+P8Ag0KAgICAgICA+P8AUgRAIASdIgREAAAAAACwnUCgIAQgBEQAAAAAAABZQGMbIAQgBEQAAAAAAAAAAGYbIQQLIAS9IgUCfyAEmUQAAAAAAADgQWMEQCAEqgwBC0GAgICAeAsiA7e9UQRAIAOtDAELQoCAgIDAfiAFQoCAgIDAgYD8\u002FwB9IAVC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbCzcDACAAIAFBASACQREQ+AQhBQsgAkEQaiQAIAULigEDAX4BfAF\u002FIwBBEGsiAiQAQoCAgIDgACEEAkAgACACQQhqIgYgARCmAg0AIAAgBiADKQMAEEINACAAIAEgAisDCCIFnUQAAAAAAAAAAKBEAAAAAAAA+H8gBUQAANzCCLI+Q2UbRAAAAAAAAPh\u002FIAVEAADcwgiyPsNmGxD5BCEECyACQRBqJAAgBAvZAQIBfAF+IwBB0ABrIgIkAAJ+QoCAgIDgACAAIAEgAiAEQQ9xQQAQ1QMiAEEASA0AGkKAgICAwH4gAEUNABogBEGAAnEEQCACIAIrAwBEAAAAAACwncCgOQMACyACIARBBHZBD3FBA3RqKwMAIgW9IgECfyAFmUQAAAAAAADgQWMEQCAFqgwBC0GAgICAeAsiBLe9UQRAIAStDAELQoCAgIDAfiABQoCAgIDAgYD8\u002FwB9IAFC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFYbCyEGIAJB0ABqJAAgBguHAQIBfAF+IwBBEGsiAiQAAn5CgICAgOAAIAAgAkEIaiABEKYCDQAaQoCAgIDAfiACKwMIIgS9Qv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWDQAaAn4gBJ0iBJlEAAAAAAAA4ENjBEAgBLAMAQtCgICAgICAgICAfwsQ1AOtCyEFIAJBEGokACAFC4MBAQF+AkAgAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECIMAQsCQCADKQMAIgRCgICAgHCDQoCAgICQf1INACAAIAQQMCICRQ0BIAAgAhAQQREhAwJAAkACQCACQccAaw4DAgMBAAsgAkEWRw0CC0EQIQMLIAAgASADELsCDwsgAEGnGUEAEBILQoCAgIDgAAuYAQIBfAF+IwBBEGsiAiQAAn5CgICAgOAAIAAgAkEIaiABEKYCDQAaIAIrAwgiBL0iAQJ\u002FIASZRAAAAAAAAOBBYwRAIASqDAELQYCAgIB4CyIAt71RBEAgAK0MAQtCgICAgMB+IAFCgICAgMCBgPz\u002FAH0gAUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\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\u002F\u002F\u002F\u002F9vWARAIAAQIkKAgICA4AAhAQwBCyAAIAIgARCCAiIEQoCAgIBwg0KAgICA4ABRBEAgBCEBDAELIAAQMyIBQoCAgIBwg0KAgICA4ABRBEAgACACKQMAEAwgACACKQMIEAwgACAEEAxCgICAgOAAIQEMAQsgACABQYMBIARBBxAVGiAAIAFBgQEgAikDAEEHEBUaIAAgAUGCASACKQMIQQcQFRoLIAJBEGokACABC+UDAQV+IwBBMGsiAiQAAkAgAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECJCgICAgOAAIQUMAQsgACACQSBqIAEQggIiBUKAgICAcINCgICAgOAAUQ0AQoCAgIAwIQZCgICAgDAhBAJAAkAgACABQYEBIAFBABARIghCgICAgHCDQoCAgIDgAFENACAAIAgQVQ0AIAAgAykDAEEAEMsBIgRCgICAgHCDQoCAgIDgAFEEQAwBCyAAIARB6wAgBEEAEBEiBkKAgICAcINCgICAgOAAUQ0AA0AgAiAAIAQgBiACQRRqEJEBIgc3AxggB0KAgICAcINCgICAgOAAUQ0BIAIoAhQNAiAAIAggAUEBIAJBGGoQHCEHIAAgAikDGBAMIAdCgICAgHCDQoCAgIDgAFIEQCAAIAAgB0GAAUECIAJBIGoQpwIQ\u002FwFFDQELCyAAIARBARCQARoLIAAoAhAiAykDgAEhASADQoCAgIAgNwOAASACIAE3AwggACACKQMoQoCAgIAwQQEgAkEIahAcIQEgACACKQMIEAwgACAFIAEgAUKAgICAcINCgICAgOAAUSIDGxAMQoCAgIDgACAFIAMbIQULIAAgCBAMIAAgBhAMIAAgBBAMIAAgAikDIBAMIAAgAikDKBAMCyACQTBqJAAgBQvzAwIFfgF\u002FIwBBIGsiAiQAIAAgBSkDABDkASELIAIgBSkDECIINwMYIAUpAyAhCiAFKQMYIQkCQAJAIAAgAkEUaiAFKQMIEHUNAAJAIAsNACAFQoGAgIAQNwMAAkAgBEEDcSIFQQFGBEBCgICAgOAAIQEgABAzIgZCgICAgHCDQoCAgIDgAFENBAJAIABBoOcAQabqACAEQQRxIgQbEGAiB0KAgICAcINCgICAgOAAUQ0AIAAgBkGKASAHQQcQFUEASA0AIAMpAwAiB0IgiKdBdU8EQCAHpyIDIAMoAgBBAWo2AgALIAAgBkGLAUHBACAEGyAHQQcQFUEATg0CCyAAIAYQDAwECyADKQMAIgZCIIinQXVJDQAgBqciAyADKAIAQQFqNgIACyAAIAggAigCFCAGQQcQkwFBAEgNAUKAgICA4AAhASAAIApBfxDYAyIDQQBIDQIgA0UNAAJAIAVBAkYEQCACIAAgCBD+BCIGNwMIIAZCgICAgHCDQoCAgIDgAFENBCAAIAlCgICAgDBBASACQQhqEBwhASAAIAIpAwgQDAwBCyAAIAlCgICAgDBBASACQRhqEBwhAQsgAUKAgICAcINCgICAgOAAUQ0CIAAgARAMC0KAgICAMCEBDAELQoCAgIDgACEBCyACQSBqJAAgAQukCAINfgN\u002FIwBB8ABrIgIkACACQoCAgIAwNwNQAkAgAUL\u002F\u002F\u002F\u002F\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\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002Fw9RBEAgAEHOIUEAEBJCgICAgDAhBwwBCyACIAAgCCAMIAJBDGoQkQEiBzcDECAHQoCAgIBwg0KAgICA4ABRBEBBACEODAcLIAIoAgwEQCAGIQkMCgsgAiAHNwMgIAIgCiIBQoCAgIAIWgR+QoCAgIDAfiABub0iAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\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\u002FwB9IAFCgICAgICAgPj\u002FAFYbC1kBAX8gACABIARBImoQWiICRQRAQoCAgIDgAA8LIAJBBGohAyACKAIIIQQDfiADIARGBH5CgICAgDAFIARBEGshBSAEKAIEIQQgACgCECACIAUQgAUMAQsLC3UAIAAgASAEQSJqEFoiAkUEQEKAgICA4AAPCyAAIAIgAykDACIBQgAgAUIgiKdBB2tBbk8bIAEgAUKAgICAwIGA\u002FP8AfEL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag1AbEPICIgNFBEBCgICAgBAPCyAAKAIQIAIgAxCABUKBgICAEAthACAAIAEgBEEiahBaIgJFBEBCgICAgOAADwsgACACIAMpAwAiAUIAIAFCIIinQQdrQW5PGyABIAFCgICAgMCBgPz\u002FAHxC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\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\u002F\u002F\u002F\u002F\u002Fb1ZyRQRAIAAgAhAMDAELIAAgBCAHIAMQQyIDQQBIDQICQCADRQRAQQAhBSAJQoCAgIAwUQ0FDAELIAAgBBBGIAlCgICAgDBSDQAgBC0AAEEBcUUNAUEAIQUgBy0ABUEBcUUNAQwEC0F\u002FIQUgACAGKQMAEJcBIgZBAEgNAiAAIARBIGogAhCEBSEIIAAgAhAMIAhBAEgNAwJAIAMEQCAEKAIAIgVBgDpBgM4AIAQoAiAiA0EQcRsgA3IQjwNFDQEgA0EBcQ0DIAVBAXENASADQRJxDQMgBUECcQ0BDAMLIAZFDQAgBC0AIEEBcQ0CCyAAIARBIGoQRgsgAEGaK0EAEBJBfyEFDAILAkAgAQRAIAEgBCkDIDcDACABIAQpAzg3AxggASAEKQMwNwMQIAEgBCkDKDcDCAwBCyAAIARBIGoQRgtBASEFDAELIAAgAhAMCyAEQeAAaiQAIAULDQAgACABIAJBLBDvBQsLACAAIAFBLBDwBQsWACAAIAMpAwAgAykDCCADKQMQEPIDC9EBAgN+An8jAEEQayIHJAACQCAAIAdBDGogAykDABDfASIIRQRAQoCAgIDgACEEDAELIAAgCCAHKAIMQcn\u002FABDzAyEBIAAgCBAxAkAgAkECSCABQoCAgIBwg0KAgICA4ABRcg0AIAAgAykDCCIGEDVFDQBCgICAgOAAIQQCQCAAEDMiBUKAgICAcINCgICAgOAAUQRAIAEhBQwBCyAAIAVBLyABQQcQFUEASA0AIAAgBUEvIAYQhQUhBAsgACAFEAwMAQsgASEECyAHQRBqJAAgBAsQACAAIAMpAwBBESAEELICC6UDAQR+IwBBEGsiAyQAIAQCfwJAAkACQAJAIAAgAUEqEFoiAkUEQEKAgICAMCEBDAELIAIoAhgEQEKAgICAMCEBQQEMBQsgACACKQMAIgggAikDCCIGEMUBIgFCgICAgHCDIgdCgICAgOAAUg0BC0KAgICAMCEHDAELIAdCgICAgCBRBEAgAkEBNgIYQoCAgIAwIQFBAQwDCyACKAIQBEAgACAAIAFCABBOEDQiB0KAgICAcIMiCUKAgICA4ABRDQECQCAJQoCAgICQf1INACAHpygCBEH\u002F\u002F\u002F\u002F\u002FB3ENACAAIANBCGogACAIQdYAIAhBABAREKEBQQBIDQIgACAIQdYAAn4gBqcgAykDCCACKAIUEPQCIgZCgICAgAh8Qv\u002F\u002F\u002F\u002F8PWARAIAZC\u002F\u002F\u002F\u002F\u002Fw+DDAELQoCAgIDAfiAGub0iBkKAgICAwIGA\u002FP8AfSAGQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwsQOUEASA0CCyAAIAcQDAwCCyACQQE2AhgMAQsgACABEAwgACAHEAxCgICAgOAAIQELQQALNgIAIANBEGokACABCyAAIAFCIIinQXVPBEAgAaciACAAKAIAQQFqNgIACyABC\u002FEHAgR\u002FC34jAEEwayIEJAACQCABQv\u002F\u002F\u002F\u002F9vWARAIAAQIkKAgICA4AAhAQwBC0KAgICAMCEIAkACQCAAIAMpAwAQJSIPQoCAgIBwg0KAgICA4ABRBEBCgICAgDAhDEKAgICAMCEBQoCAgIAwIQ1CgICAgDAhEAwBCyAAIAEgACkDSBD9ASIQQoCAgIBwg0KAgICA4ABRBEBCgICAgDAhDEKAgICAMCEBQoCAgIAwIQ0MAQsCQAJAIAAgACABQe4AIAFBABAREDQiDUKAgICAcINCgICAgOAAUQ0AIA2nIgJB9QBBABCgASEGIAJB+QBBABCgAUEASARAIABB7JYBIA1B0A4QsgEiDUKAgICAcINCgICAgOAAUQ0BCyAEIA03AyggBCABNwMgIAAgEEECIARBIGoQowEiDEKAgICAcINCgICAgOAAUQ0BIAAQOyIBQoCAgIBwg0KAgICA4ABRBEBCgICAgOAAIQEMAwtBfyECAkAgAykDCCIJQoCAgIBwg0KAgICAMFENACAAIARBHGogCRB1QQBIDQMgBCgCHCICDQAMBAsCQAJAIA+nIgcpAgQiCKdB\u002F\u002F\u002F\u002F\u002FwdxIgUEQCAGQX9zQR92IQYgCEL\u002F\u002F\u002F\u002F\u002FB4MhESACrSESQgAhCUKAgICAMCEIQQAhAgNAIAKtIQogAiEDA0AgAyAFTw0DIAAgDEHWACADrSIOEDlBAEgNByAAIAgQDAJAIAAgDCAPEMUBIghCgICAgHCDIgtCgICAgCBRDQAgC0KAgICA4ABRDQggACAEQRBqIAAgDEHWACAMQQAQERChAQ0IIAQgBCkDECILIBEgCyARUxsiCzcDECAKIAtRDQAgACAHIAIgAxCOASIKQoCAgIBwg0KAgICA4ABRDQggACABIAkgChBnQQBIDQggCUIBfCIKIBJRDQkgACAEQQhqIAgQLw0IIAunIQJCASELIAlCASAEKQMIIg4gDkIBVxt8IQkDQCAJIApRDQMgACAAIAggCxBsEDQiDkKAgICAcINCgICAgOAAUQ0JIAAgASAKIA4QZ0EASA0JIAtCAXwhCyAKQgF8IgogElINAAsMCQsgByAOIAYQ9AKnIQMMAAsACwALIAAgDCAPEMUBIghCgICAgHCDIglCgICAgCBSDQFCACEJQQAhAgsgACAHIAIgBSACIAVJGyAFEI4BIgpCgICAgHCDQoCAgIDgAFENAyAAIAEgCSAKEGdBAEgNAwwECyAJQoCAgIDgAFINAwwCC0KAgICAMCEMC0KAgICAMCEBCyAAIAEQDEKAgICA4AAhAQsgACAPEAwgACAQEAwgACAMEAwgACANEAwgACAIEAwLIARBMGokACABC+ACAQd+IAFC\u002F\u002F\u002F\u002F\u002F29YBEAgABAiQoCAgIDgAA8LQoCAgIDgACEIQoCAgIAwIQYCQAJAAkAgACADKQMAECUiB0KAgICAcINCgICAgOAAUQRAQoCAgIAwIQQMAQsgACABQdYAIAFBABARIgRCgICAgHCDQoCAgIDgAFENACAAIARCABBNRQRAIAAgAUHWAEIAEDlBAEgNAQsgACABIAcQxQEiBUKAgICAcIMiCUKAgICA4ABRDQEgACABQdYAIAFBABARIgZCgICAgHCDQoCAgIDgAFENAQJAIAAgBiAEEE0EQCAAIAQQDAwBCyAAIAFB1gAgBBA5QQBODQBCgICAgDAhBAwCCyAAIAcQDCAAIAYQDEL\u002F\u002F\u002F\u002F\u002FDyEIIAlCgICAgCBRDQIgACAFQdgAIAVBABARIQogACAFEAwgCg8LQoCAgIAwIQULIAAgBRAMIAAgBxAMIAAgBhAMIAAgBBAMCyAIC84EAgZ+AX8jAEEgayICJAACQCABQv\u002F\u002F\u002F\u002F9vWARAIAAQIkKAgICA4AAhBwwBC0KAgICA4AAhB0KAgICAMCEIAkAgACADKQMAECUiCUKAgICAcINCgICAgOAAUQRAQoCAgIAwIQRCgICAgDAhBUKAgICAMCEGDAELAkACQCAAIAEgACkDSBD9ASIGQoCAgIBwg0KAgICA4ABRBEBCgICAgDAhBAwBCyAAIAAgAUHuACABQQAQERA0IgRCgICAgHCDQoCAgIDgAFINAQtCgICAgDAhBQwBCyACIAQ3AxggAiABNwMQIAAgBkECIAJBEGoQowEiBUKAgICAcINCgICAgOAAUQ0AIAAgAkEIaiAAIAFB1gAgAUEAEBEQoQENACAAIAVB1gACfiACKQMIIgFCgICAgAh8Qv\u002F\u002F\u002F\u002F8PWARAIAFC\u002F\u002F\u002F\u002F\u002Fw+DDAELQoCAgIDAfiABub0iAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwsQOUEASA0AQoCAgIDgACEIIABBKhCGASIBQoCAgIBwg0KAgICA4ABRDQAgAEEgECQiA0UEQCABIQgMAQsgAyAJNwMIIAMgBTcDACADIASnIgpB5wBBABCgAUF\u002Fc0EfdjYCECAKQfUAQQAQoAEhCiADQQA2AhggAyAKQX9zQR92NgIUIAFCgICAgHBaBEAgAacgAzYCIAsgACAGEAwgACAEEAwgASEHDAELIAAgCRAMIAAgBhAMIAAgBBAMIAAgBRAMIAAgCBAMCyACQSBqJAAgBwv+BAIIfgJ\u002FIwBBEGsiAiQAAkAgAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECJCgICAgOAAIQcMAQtCgICAgOAAIQdCgICAgDAhBQJAAkACQCAAIAMpAwAQJSIJQoCAgIBwg0KAgICA4ABRBEBCgICAgDAhCAwBCyAAIAFB7gAgAUEAEBEiCEKAgICAcINCgICAgOAAUQ0AIAAgCBA0IghCgICAgHCDQoCAgIDgAFENACAIp0HnAEEAEKABQX9GBEAgACABIAkQxQEhBwwDCyAAIAAgAUHwACABQQAQERAnIgxBAEgNACAAIAFB1gBCABA5QQBIDQAgABA7IgZCgICAgHCDQoCAgIDgAFEEQEKAgICA4AAhBgwCCyAJpyENA0ACQCAAIAUQDCAAIAEgCRDFASIFQoCAgIBwgyIEQoCAgIAgUQ0AIARCgICAgOAAUQ0DAkAgACAAIAVCABBOEDQiBEKAgICAcIMiC0KAgICAkH9SBEBBACEDIAtCgICAgOAAUQ0FDAELIASnKAIEQf\u002F\u002F\u002F\u002F8HcUUhAwsgACAGIAogBBB7QQBIDQMgCkIBfCEKIANFDQEgACACQQhqIAAgAUHWACABQQAQERChAUEASA0DIAAgAUHWAAJ+IA0gAikDCCAMEPQCIgRCgICAgAh8Qv\u002F\u002F\u002F\u002F8PWARAIARC\u002F\u002F\u002F\u002F\u002Fw+DDAELQoCAgIDAfiAEub0iBEKAgICAwIGA\u002FP8AfSAEQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGwsQOUEATg0BDAMLCyAKpwRAIAYhBwwDCyAAIAYQDEKAgICAICEHDAILQoCAgIAwIQYLIAAgBhAMCyAAIAUQDCAAIAgQDCAAIAkQDAsgAkEQaiQAIAcLjgEBAn8gASgCACICQQBKBEAgASACQQFrIgI2AgACQCACDQAgAS0ABEHwAXFBEEcNACABKAIIIgIgASgCDCIDNgIEIAMgAjYCACABQQA2AgggACgCYCICIAFBCGoiAzYCBCABIABB4ABqNgIMIAEgAjYCCCAAIAM2AmALDwtB5oQBQajsAEHWLEHN4wAQAAAL8BQCDn8OfiMAQZABayIEJAACQCABQv\u002F\u002F\u002F\u002F9vWARAIAAQIkKAgICA4AAhFQwBCyADKQMIIR4gACAEQThqQQAQPhogBEEANgIwIARCgICAgMAANwMoIAQgADYCACAEIARBCGoiBzYCBEKAgICA4AAhFUKAgICAMCEWQoCAgIAwIRdCgICAgDAhE0KAgICAMCEUQoCAgIAwIR1CgICAgDAhHAJAAkAgACADKQMAECUiGEKAgICAcINCgICAgOAAUQ0AIAAgHhA1IglFBEAgACAeECUiHUKAgICAcINCgICAgOAAUQ0BIB2nIQULAkACQCAAIAFB7gAgAUEAEBEiHEKAgICAcINCgICAgOAAUQ0AIAAgHBA0IhxCgICAgHCDQoCAgIDgAFENACAcp0HnAEEAEKABIgNBf0cEQCAAIAAgAUHwACABQQAQERAnIghBAEgNASAAIAFB1gBCABA5QQBIDQELIAVFIANBf0ZyDQEgBSkCBEL\u002F\u002F\u002F\u002F\u002FB4NCAFINAQJAIAAgAUE9IAFBABARIhJCgICAgHCDQoCAgIDgAFENACAAIBIgACkDSBBNIQ4gACASEAwgDkUNAiAAIAFBhwEgAUEAEBEiEkKAgICAcINCgICAgOAAUQ0AIBJBwgBBABCCBCEPIAAgEhAMIA9FDQILIAAgARD1AiICRQ0AQQAhAyAAIARB0ABqQQAQPhoCQCAAIBgQJSISQoCAgIBwg0KAgICA4ABRDQACQCACKAIEQRBqIgotAAAiAkEhcSILRQRAIARCADcDgAEMAQsgACABQdYAIAFBABARIhpCgICAgHCDQoCAgIDgAFENASAAIARBgAFqIBoQoQENAQsCQCAKLQABIgVBAE0NACAAIAVBA3QQJCIDDQBBACEDDAELIAJBEHEhDCACQQFxIQ0gEqciBUEQaiEJIAUpAgQiFKdBH3YhCCAEKQOAASETAkADQCATIBRC\u002F\u002F\u002F\u002F\u002FweDVQ0BAkAgAyAKIAkgE6cgFKdB\u002F\u002F\u002F\u002F\u002FwdxIAggABCkBiICQQFHBEAgAkEASA0BIAtFIAJBAkdxDQMgACABQdYAQgAQOUEASA0EDAMLIAMoAgAhECAEIAMoAgQgCWsgCHUiAjYCjAEgECAJayAIdSIHIAZKBEAgBEHQAGogBSAGIAcQSw0ECyANRQRAIAAgAUHWACACIgatEDlBAE4NAwwECwJAIAcgAiIGRw0AAkACQCAMRQ0AIAUpAgQiGkKAgICACINQDQAgByAap0H\u002F\u002F\u002F\u002F\u002FB3FJDQELIAQgB0EBaiIGNgKMAQwBCyAFIARBjAFqEMYBGiAEKAKMASEGCyAFKQIEIRQgBqwhEyACIQYMAQsLIABBuDhBABA6DAELIARB0ABqIgIgBSAGIAUoAgRB\u002F\u002F\u002F\u002F\u002FwdxEEsNACAAIBIQDCAAKAIQIgZBEGogAyAGKAIEEQAAIAIQNyEVDAELIAAgEhAMIAAoAhAiAkEQaiADIAIoAgQRAAAgBCgCUCgCECICQRBqIAQoAlQgAigCBBEAAAtCgICAgDAhE0KAgICAMCEUDAELIBinIQIgA0F\u002FRiEKAkADQAJAAkAgACABIBgQxQEiEkKAgICAcIMiFUKAgICAIFIEQCAVQoCAgIDgAFENAkKAgICA4AAhFSAEKAIwDQICQCAEKAIoIgMgBCgCLEgEQCAEKAIEIQUMAQsgAyADQQF1akEfakFvcSILQQN0IQMgBCgCACEGAkACQCAHIAQoAgQiBUYEQCAGQQAgAyAEQdAAahCnASIFRQ0BIAUgBykDADcDACAFIAcpAxg3AxggBSAHKQMQNwMQIAUgBykDCDcDCAwCCyAGIAUgAyAEQdAAahCnASIFDQELIAQQiQUgBCgCACASEAwgBEF\u002FNgIwDAQLIAQgBTYCBCAEIAQoAlBBA3YgC2o2AiwgBCgCKCEDCyAEIANBAWo2AiggBSADQQN0aiASNwMAIApFDQELIBhCIIinQXVJIQdBACEFQQAhAwNAIAQoAiggA0oEQCAAIARBjAFqIAQoAgQgA0EDdGopAwAiGxDKAUEASA0FIAAgFBAMQoCAgIDgACEVIAAgACAbQgAQThA0IhRCgICAgHCDQoCAgIDgAFENBiAAIARBgAFqIAAgG0HYACAbQQAQERChAQ0GAkAgBCkDgAEiEiACKQIEQv\u002F\u002F\u002F\u002F8HgyIBVQRAIAQgATcDgAEgASESDAELIBJCAFkNAEIAIRIgBEIANwOAAQsgACATEAwgABA7IhNCgICAgHCDQoCAgIDgAFEEQEKAgICA4AAhEwwHCyAUQiCIp0F1TwRAIBSnIgYgBigCAEEBajYCAAsgACATQgAgFEGHgAEQlAFBAEgNBkEBIAQoAowBIgYgBkEBTRsiBq0hH0IBIQEDQCABIB9SBEAgACAbIAEQbCIZQoCAgIBwgyIaQoCAgIAwUgRAIBpCgICAgOAAUQRAIBohFQwKCyAAIBkQNCIZQoCAgIBwg0KAgICA4ABRDQgLIAAgEyABIBkQZyERIAFCAXwhASARQQBODQEMCAsLIAAgFhAMIAAgG0GIASAbQQAQESIWQoCAgIBwgyIBQoCAgIDgAFENBgJAIAkEQCAAIBMgHyASQv\u002F\u002F\u002F\u002F8PgxBnQQBIDQggB0UEQCACIAIoAgBBAWo2AgALIAAgEyAGQQFqrSAYEGdBAEgNCCABQoCAgIAwUgRAIBZCIIinQXVPBEAgFqciCCAIKAIAQQFqNgIACyAAIBMgBkECaq0gFhBnQQBIDQkLIAQgEzcDWCAEQoCAgIAwNwNQIAAgFxAMIAAgACAeIAAgBEHQAGpBABCIAxA0IRcMAQtCgICAgDAhGSABQoCAgIAwUgRAIAAgFhAgIhlCgICAgHCDQoCAgIDgAFENCAsgBCAdNwN4IAQgGTcDcCAEIBM3A2ggBCAYNwNYIAQgFDcDUCAEIBJC\u002F\u002F\u002F\u002F\u002Fw+DNwNgIAAgFxAMIAAgBEHQAGoQiAUhFyAAIBkQDAsgF0KAgICAcINCgICAgOAAUQ0GIAWsIBJXBEAgBEE4aiIGIAIgBSASpxBLGiAGIBcQjQEaIBSnKQIEQv\u002F\u002F\u002F\u002F8HgyASfKchBQsgA0EBaiEDDAELCyAEQThqIgMgAiAFIAIoAgRB\u002F\u002F\u002F\u002F\u002FwdxEEsaIAMQNyEVDAULIAAgFBAMAn8CQCAAIAAgEkIAEE4QNCIUQoCAgIBwgyISQoCAgICQf1IEQCASQoCAgIDgAFINASASIRUMAwsgFKcoAgRB\u002F\u002F\u002F\u002F\u002FwdxDQAgACAEQdAAaiAAIAFB1gAgAUEAEBEQoQFBAEgNAiAAIAFB1gACfiACIAQpA1AgCBD0AiISQoCAgIAIfEL\u002F\u002F\u002F\u002F\u002FD1gEQCASQv\u002F\u002F\u002F\u002F8PgwwBC0KAgICAwH4gErm9IhJCgICAgMCBgPz\u002FAH0gEkL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag0KAgICAgICA+P8AVhsLEDkiA0EATg0AIANBHnZBAnEMAQtBAAtFDQELCwwBC0KAgICA4AAhFQsgBCgCOCgCECICQRBqIAQoAjwgAigCBBEAAAsgBBCJBSAAIB0QDCAAIBQQDCAAIBwQDCAAIBMQDCAAIBcQDCAAIBYQDCAAIBgQDAsgBEGQAWokACAVC6EBAQF+IwBBIGsiAiQAAn4CQCABQv\u002F\u002F\u002F\u002F9vWARAIAAQIgwBCyAAIAJBCGoiA0EAED4aIANBLxA8GgJAIAMgACABQe0AIAFBABAREIQBDQAgAkEIakEvEDwaIAMgACABQe4AIAFBABAREIQBDQAgAxA3DAILIAIoAggoAhAiAEEQaiACKAIMIAAoAgQRAAALQoCAgIDgAAshBCACQSBqJAAgBAtOAQJ+QoCAgIDgACEEIAAgASADKQMAEMUBIgFCgICAgHCDIgVCgICAgOAAUgR+IAAgARAMIAVCgICAgCBSrUKAgICAEIQFQoCAgIDgAAsL+AICA34BfwJAAkAgACABEPUCIgJFDQAgAykDCCEGAkACQAJAIAMpAwAiBEKAgICAcFQNACAEpyIDLwEGQRJHDQAgBkKAgICAcINCgICAgDBSBEAgAEHz6ABBABASQoCAgIDgAA8LIAMoAiAiByAHKAIAQQFqNgIAIAMoAiQiAyADKAIAQQFqNgIAIAetQoCAgICQf4QhBCADrUKAgICAkH+EIQUMAQtCgICAgDAhBQJ+IARCgICAgHCDQoCAgIAwUQRAIABBLxApDAELIAAgBBAlCyIEQoCAgIBwg0KAgICA4ABRDQEgACAEIAYQuQMiBUKAgICAcINCgICAgOAAUQ0BCyAAIAI1AgBCgICAgJB\u002FhBAMIAAgAjUCBEKAgICAkH+EEAwgAiAFPgIEIAIgBD4CACAAIAFB1gBCABA5QQBIDQEgAUIgiKdBdUkNAiABpyIAIAAoAgBBAWo2AgAMAgsgACAEEAwgACAFEAwLQoCAgIDgAA8LIAELagEBfyABQv\u002F\u002F\u002F\u002F9vWARAIAAQIkKAgICA4AAPCwJ+IAGnIgMvAQZBEkcEQEKAgICAMCAAIAEgACgCKCkDkAEQTQ0BGiAAQRIQigNCgICAgOAADwsgAiADKAIkLQAQcUEAR61CgICAgBCECwu8BAEJfyMAQSBrIgckAAJAAkACQAJAAkAgAUL\u002F\u002F\u002F\u002F\u002Fb1gEQCAAECIMAQsgACABIAAoAigpA5ABEE0NAiAAIAEQ9QIiAg0BC0KAgICA4AAhAQwDCyACKAIAIggoAgQiAkH\u002F\u002F\u002F\u002F\u002FB3EiAw0BCyAAQdyLARBgIQEMAQsgACAHQQhqIAMgAkEfdhCZAxogCEEQaiEGIAgoAgRB\u002F\u002F\u002F\u002F\u002FwdxIQlBACEAA0ACQAJAIAAgCUgEQCAAQQFqIQJBfyEFAkACfwJAAkACQAJAAkACQAJAAn8gCCkCBEKAgICACIMiAVAiCkUEQCAGIABBAXRqLwEADAELIAAgBmotAAALIgNB2wBrDgMDAQIACyACIQACQCADQQprDgQECwsFAAsgA0EvRw0HIARFDQVBASEEQS8hAwwHC0HcACEDIAIgCU4NBiAAQQJqIQAgCkUEQCAGIAJBAXRqLwEAIQUMCgsgAiAGai0AACEFDAkLQQAhBEHdACEDDAULQdsAIQMgBCACIAlOcg0GIABBAmohACABUARAQd0AQX8gAiAGai0AAEHdAEYiBBshBSAAIAIgBBshAEEBIQQMCAtBASEEQd0AQX8gBiACQQF0ai8BAEHdAEYiChshBSAAIAIgChshAAwHC0HuAAwCC0HyAAwBC0EAIQRBLwshBUHcACEDCyACIQAMAgsgB0EIahA3IQEMAwsgAiEAQQEhBAsgB0EIaiICIAMQhwEaIAVBAEgNACACIAUQhwEaDAALAAsgB0EgaiQAIAEL\u002FwICA38BfiMAQRBrIgQkAAJAIAFC\u002F\u002F\u002F\u002F\u002F29YBEAgABAiQoCAgIDgACEFDAELQoCAgIDgACEFIAAgACABQakpEIcCECciAkEASA0AIAIEfyAEQeQAOgAIIARBCWoFIARBCGoLIQIgACAAIAFB7wAgAUEAEBEQJyIDQQBIDQAgAwRAIAJB5wA6AAAgAkEBaiECCyAAIAAgAUGS0gAQhwIQJyIDQQBIDQAgAwRAIAJB6QA6AAAgAkEBaiECCyAAIAAgAUGy0wAQhwIQJyIDQQBIDQAgAwRAIAJB7QA6AAAgAkEBaiECCyAAIAAgAUGPwwAQhwIQJyIDQQBIDQAgAwRAIAJB8wA6AAAgAkEBaiECCyAAIAAgAUHwACABQQAQERAnIgNBAEgNACADBEAgAkH1ADoAACACQQFqIQILIAAgACABQdcMEIcCECciA0EASA0AIAAgBEEIaiIAIAMEfyACQfkAOgAAIAJBAWoFIAILIABrEOoBIQULIARBEGokACAFC6QDAgN\u002FAX4jAEEgayIEJAACQCAAIAEQSiIBQoCAgIBwg0KAgICA4ABRDQACQAJAIAAgBCABAn9BACACRQ0AGkEAIAMpAwAiB0KAgICAcINCgICAgDBRDQAaAkAgACAEQQRqIAcQ3wEiAgRAAkAgAi0AAEHOAEcNACACLQABQcYARw0AIAJBA0ECIAItAAJBywBGIgMbai0AACIFQcMAa0H\u002FAXFBAUsNACAEKAIEIAJBA2ogAkECaiADGyACa0EBakYNAgsgACACEDEgAEGywABBABBECyAAIAEQDAwCCyAAIAIQMSAFIANBAXRqQcMAawsQ2gMhAyAAIAEQDCADQQBODQELQoCAgIDgACEBDAELIAQoAgAhBUKAgICA4AAhAQJAIAAgBEEIaiADED4NAEEAIQICQANAIAIgA0YNASACQQJ0IQYgAkEBaiECIARBCGogBSAGaigCABCxAUUNAAsgBCgCCCgCECICQRBqIAQoAgwgAigCBBEAAAwBCyAEQQhqEDchAQsgACgCECIAQRBqIAUgACgCBBEAAAsgBEEgaiQAIAELgQICA38BfgJAAkAgAkEATg0AIAGnKQMgIgpCgICAgHCDQoCAgICQf1INACACQf\u002F\u002F\u002F\u002F8HcSIIIAqnIgcpAgQiCqdB\u002F\u002F\u002F\u002F\u002FwdxTw0AAkBBBCAGEI8DRQ0AQQEhAiAGQYDAAHFFDQIgA0KAgICAcINCgICAgJB\u002FUg0AIAOnIgkpAgQiAUL\u002F\u002F\u002F\u002F\u002FB4NCAVINACAHQRBqIQcCfyAKQoCAgIAIg1BFBEAgByAIQQF0ai8BAAwBCyAHIAhqLQAACwJ\u002FIAFCgICAgAiDUEUEQCAJLwEQDAELIAktABALRg0CCyAAIAZB79gAEHwPCyAAIAEgAiADIAQgBSAGQYCACHIQaiECCyACC0YAAn8CQCACQQBODQAgAacpAyAiAUKAgICAcINCgICAgJB\u002FUg0AQQAgAkH\u002F\u002F\u002F\u002F\u002FB3EgAacoAgRB\u002F\u002F\u002F\u002F\u002FwdxSQ0BGgtBAQsLswEBAn8CQCADQQBODQAgAqcpAyAiAkKAgICAcINCgICAgJB\u002FUg0AIANB\u002F\u002F\u002F\u002F\u002FwdxIgMgAqciBCkCBCICp0H\u002F\u002F\u002F\u002F\u002FB3FPDQBBASEFIAFFDQAgBEEQaiEEAn8gAkKAgICACINQRQRAIAQgA0EBdGovAQAMAQsgAyAEai0AAAshAyABQQQ2AgAgACADQf\u002F\u002FA3EQlAMhAiABQoCAgIAwNwMYIAFCgICAgDA3AxAgASACNwMICyAFCx8BAn4gACgCACkDeCIDIAEoAgApA3giBFUgAyAEU2sLbwECfyABIAEoAgAiAkEBajYCACACRQRAIAEoAggiAiABKAIMIgM2AgQgAyACNgIAIAFBADYCCCAAKAJQIgIgAUEIaiIDNgIEIAEgAEHQAGo2AgwgASACNgIIIAAgAzYCUCABIAEtAARBD3E6AAQLC+sDAQN\u002FIwBBIGsiAiQAAkACQAJAAkAgBSgCACIDLQBXQQRrDgICAAELQoCAgIAwIQEgAy0AoAENAkH+OEGo7ABB9N8BQYzqABAAAAtBlf8AQajsAEH33wFBjOoAEAAACwJAAkAgAy0AoAFFBEAgAygCdEUNAUEAIQUgA0EANgJ0IAAgAxCOBSACQQA2AhwgAkIANwIUIAAgAyACQRRqEI0FIQggAigCFCEEIAhBAEgEQEKAgICA4AAhAQwDCyAEIAIoAhgiA0EEQcEAQQAQ1wEgA0EAIANBAEobIQcDQCAFIAdGBEBCgICAgDAhAQwEBQJAIAQgBUECdGooAgAiAygCVCIGQYCAgHhxQYCAgChGBEAgAy0AoAENAUHnOEGo7ABBjeABQYzqABAAAAsgBkH\u002FAXEEQCAAIAMQkAUMAQsgACADIAJBCGoiBhCPBUEASARAIAMgAygCAEEBajYCACACIAOtQoCAgIBQhCIBNwMAIAAgASAFIAYgBSACENsDGiAAIAEQDCAAIAIpAwgQDAwBCyAAIAMQjgULIAVBAWohBQwBCwALAAtB\u002FThBqOwAQfjfAUGM6gAQAAALQY07QajsAEH53wFBjOoAEAAACyAAKAIQIgBBEGogBCAAKAIEEQAACyACQSBqJAAgAQvQAgIDfgJ\u002FIwBBEGsiBiQAIAFBBUYEQCACKQMQIQQgACACKQMYEOQBIQcgBiACKQMgIgM3AwgCfwJAAkAgBEKAgICAcINCgICAgDBRBEAgA0IgiKchASAHBEAgAUF1TwRAIAOnIgEgASgCAEEBajYCAAsgACADEJgBDAMLIAFBdUkNASADpyIBIAEoAgBBAWo2AgAMAQsgACAEQoCAgIAwQQEgBkEIahAcIQMLIAYgAzcDAEEAIANCgICAgHCDQoCAgIDgAFINARoLIAAoAhAiASkDgAEhAyABQoCAgIAgNwOAASAGIAM3AwBBAQshAUKAgICAMCEEIAAgAiABQQN0aikDACIFQoCAgIBwg0KAgICAMFIEfiAAIAVCgICAgDBBASAGEBwhBCAGKQMABSADCxAMIAZBEGokACAEDwtByYEBQajsAEHn9AJBi+0AEAAAC2kBAn8gAacoAhAiAEEwaiEDIAAgACgCGCACcUF\u002Fc0ECdGooAgAhAANAAkAgAEUEQEEAIQAMAQsgAyAAQQN0aiIEQQhrIQAgBEEEaygCACACRg0AIAAoAgBB\u002F\u002F\u002F\u002FH3EhAAwBCwsgAEEARwtDAAJ8IAG9QoCAgICAgID4\u002FwCDQoCAgICAgID4\u002FwBRBEBEAAAAAAAA+H8gAJlEAAAAAAAA8D9hDQEaCyAAIAEQowMLC2kBA38jAEEQayIHJAACfwJAIAGnIggtAAVBCHFFDQAgACAHQQxqIAIQpQFFDQAgBygCDCAIKAIoTw0AQX8gACAIEI4DDQEaCyAAIAEgAiADIAQgBSAGQYCACHIQagshCSAHQRBqJAAgCQsPACABIAEoAgBBAWo2AgALXAECfiACIAAoAgAQKSEDQQAhACADQoCAgIBwg0KAgICA4ABRIAIgASgCABApIgRCgICAgHCDQoCAgIDgAFFyRQRAIAOnIASnELwCIQALIAIgAxAMIAIgBBAMIAALawEBfgJAAkACQAJAAkAgAy0ABSIBDgQDAgIAAQsgACADKAIIEPsEDwsgAUEIRg0CCxABAAsgACADKAIMIAMoAgAgAy0ACCADLQAJIAMuAQYQggEPCyAAIAAQMyIEIAMoAgggAygCDBAfIAQLCQAgACADEPYCC1MBAX4gABAzIgRCgICAgHCDQoCAgIDgAFIEQCABIAEoAgBBAWo2AgAgACAEQT0gAa1CgICAgHCEQQMQFUEATgRAIAQPCyAAIAQQDAtCgICAgOAAC18BAX8CQCABRQRAIAJFDQEgACACEJsFDwsgAkUEQCAAIAAoAgBBAWs2AgAgACAAKAIEQQhrNgIEIAEQ1AEMAQsgACgCCCAAKAIEIAJqTwR\u002FIAEgAhD4BQVBAAsPC0EACyYAIAEEQCAAIAAoAgBBAWs2AgAgACAAKAIEQQhrNgIEIAEQ1AELCyUBAX8CQCABpygCICIDRQ0AIAMoAgQiA0UNACAAIAMgAhEAAAsLPwEBfwJAIAFCgICAgHBUDQAgAaciAi8BBkErRw0AIAIoAiAiAkUNACAAIAIQ5wMgAEEQaiACIAAoAgQRAAALC0cBAX8CQCABpygCICIDRQ0AIAMpAwAiAUKAgICAYFoEQCAAIAGnIAIRAAALIAMpAwgiAUKAgICAYFQNACAAIAGnIAIRAAALCzABAX8gAacoAiAiAgRAIAAgAikDABAhIAAgAikDCBAhIABBEGogAiAAKAIEEQAACwsnAQF\u002FIAGnKAIgIgIEQCAAIAIpAwAQISAAQRBqIAIgACgCBBEAAAsLWgECfyABpygCICICBEACQCACKQMAIgFCgICAgHBUDQAgAactAAVBAnENACACKAIMIgNFDQAgACADEOIDIAIpAwAhAQsgACABECEgAEEQaiACIAAoAgQRAAALC3gBA38CQCABpygCICIERQ0AIARBCGohAyAEQQRqIQUDQCADKAIAIgMgBUYNAQJAIAQoAgANACADKQMQIgFCgICAgGBUDQAgACABpyACEQAACyADKQMYIgFCgICAgGBaBEAgACABpyACEQAACyADQQRqIQMMAAsACwuaAQEHfyABpygCICIDBEAgAEEQaiEEIANBBGohBiADKAIIIQIDQCACIAZHBEAgAigCBCEIIAJBEGshBSACQQxrKAIARQRAAkAgAygCAARAIAUQnAUMAQsgACACKQMQECELIAAgAikDGBAhCyAEIAUgACgCBBEAACAIIQIMAQsLIAQgAygCECAAKAIEEQAAIAQgAyAAKAIEEQAACwsbAQF\u002FIAGnKAIgIgMEQCAAIAMoAgwgAhEAAAsLUgEDfyABpygCICICBEAgAigCBCIDBEAgAigCACIEIAM2AgQgAyAENgIAIAJCADcCAAsgACACNQIMQoCAgIBwhBAhIABBEGogAiAAKAIEEQAACwupAQEGfyABpygCICIDBEAgA0EMaiEFIAMoAhAhAgNAIAIgBUcEQCACKAIEIQcgAkIANwIAIAIoAgghBCAHIQIgBC8BBkEgRg0BIARCADcCJAwBCwsCQAJAIAMtAAVFDQAgACgCyAEiAkUNACAAKALQASADKAIIIAIRAAAMAQsgAygCGCICRQ0AIAAgAygCFCADKAIIIAIRBgALIABBEGogAyAAKAIEEQAACwspAQF\u002FIAAgAaciAjUCJEKAgICAkH+EECEgACACNQIgQoCAgICQf4QQIQshACABpygCICkDACIBQoCAgIBgWgRAIAAgAacgAhEAAAsLaQEDfyAAIAGnKAIgIgIpAwAQISACLQARRQRAA0AgAigCFCEEIAMgAigCDE9FBEAgACAEIANBA3RqKAIEEMcBIANBAWohAwwBCwsgAEEQaiAEIAAoAgQRAAALIABBEGogAiAAKAIEEQAAC2wBA38CQCABQoCAgIBwVA0AIAGnIgMvAQZBD0cNACADKAIgIgRFDQAgBEEIaiEFQQAhAwNAIAMgBC0ABU8NASAFIANBA3RqKQMAIgFCgICAgGBaBEAgACABpyACEQAACyADQQFqIQMMAAsACwtqAQN\u002FAkAgAUKAgICAcFQNACABpyICLwEGQQ9HDQAgAigCICIDRQ0AIANBCGohBEEAIQIDQCACIAMtAAVPRQRAIAAgBCACQQN0aikDABAhIAJBAWohAgwBCwsgAEEQaiADIAAoAgQRAAALC38BA38gAacoAiAiBCkDACIBQoCAgIBgWgRAIAAgAacgAhEAAAsgBCkDCCIBQoCAgIBgWgRAIAAgAacgAhEAAAsgBEEYaiEFA0AgBCgCECADSgRAIAUgA0EDdGopAwAiAUKAgICAYFoEQCAAIAGnIAIRAAALIANBAWohAwwBCwsLWQEDfyAAIAGnKAIgIgIpAwAQISAAIAIpAwgQISACQRhqIQQDQCADIAIoAhBORQRAIAAgBCADQQN0aikDABAhIANBAWohAwwBCwsgAEEQaiACIAAoAgQRAAALcgEEfyABpyIDKAIgIQQgAygCJCEFIAMoAigiAwRAIAAgAyACEQAACyAEBEACQCAFRQ0AQQAhAwNAIAMgBCgCPE4NASAFIANBAnRqKAIAIgYEQCAAIAYgAhEAAAsgA0EBaiEDDAALAAsgACAEIAIRAAALC3wBA38gAaciAigCKCIDBEAgACADrUKAgICAcIQQIQsgAigCICIDBEAgAigCJCIEBEBBACECA0AgAiADKAI8TkUEQCAAIAQgAkECdGooAgAQ5QEgAkEBaiECDAELCyAAQRBqIAQgACgCBBEAAAsgACADrUKAgICAYIQQIQsLEgAgAacoAiAiAARAIAAQngMLCx4AIAGnKQMgIgFCgICAgGBaBEAgACABpyACEQAACwsZACAAIAGnIgApAyAQISAAQoCAgIAwNwMgC0QBAn8gAachBANAIAQoAiggA0sEQCAEKAIkIANBA3RqKQMAIgFCgICAgGBaBEAgACABpyACEQAACyADQQFqIQMMAQsLC0YBA38gAachAwNAIAMoAiQhBCACIAMoAihPRQRAIAAgBCACQQN0aikDABAhIAJBAWohAgwBCwsgAEEQaiAEIAAoAgQRAAALEQAgAEEQaiACIAAoAgQRAAAL2wECAX8CfiMAQSBrIgMkACABQQNGBEAgAikDECEEIAIpAwghBQJAIAAgA0EQaiACKQMAEKoFQQBIBEBCgICAgOAAIQQMAQsgACAEIAVBAiADQRBqEBwiBEKAgICAcINCgICAgOAAUQRAIAAoAhAiASkDgAEhBCABQoCAgIAgNwOAASADIAQ3AwggACADKQMYQoCAgIAwQQEgA0EIahAcIQQgACADKQMIEAwLIAAgAykDEBAMIAAgAykDGBAMCyADQSBqJAAgBA8LQZuCAUGo7ABBy\u002FUCQaDtABAAAAuIAQIBfgF\u002FQQAhAkKAgICAMCEBA0ACQCACQQJHBH4gBSACQQN0IgRqIgc1AgRCIIZCgICAgDBRDQEgAEGyHEEAEBJCgICAgOAABUKAgICAMAsPCyADIARqKQMAIgZCIIinQXVPBEAgBqciBCAEKAIAQQFqNgIACyAHIAY3AwAgAkEBaiECDAALAAuVAQAjAEEQayICJAAgAiAAIAUoAhAQ9gIiATcDCAJAIAFCgICAgHCDQoCAgIDgAFEEQCAAKAIQIgMpA4ABIQEgA0KAgICAIDcDgAEgAiABNwMAIAAgAUEBIAIgAiAFELgFGgwBCyAAIAAgBSkDAEKAgICAMEEBIAJBCGoQHBAMIAAgAikDCBAMCyACQRBqJABCgICAgDALwQMCAn4BfyMAQSBrIgUkAAJAAkAgACABQSgQWiICRQ0AQoCAgIAwIQECQCACKQMAIgZCgICAgHCDQoCAgIAwUgRAAn8CQCAGpyIDLwEGQRVrQf\u002F\u002FA3FBCk0EQCADKAIgKAIMKAIgLQAERQ0BIAAQXwwFCyAAIAVBHGoiAyAGEMoBDQQgAwwBCyADQShqCyEIIAIoAgwiAyAIKAIASQ0BIAAgAikDABAMIAJCgICAgDA3AwALIARBATYCAAwCCyACIANBAWo2AgwgBEEANgIAIAIoAghFBEAgA0EATgRAIAOtIQEMAwtCgICAgMB+IAO4vSIBQoCAgIDAgYD8\u002FwB9IAFCgICAgICAgPj\u002FAFYbIQEMAgtCgICAgOAAIQEgACACKQMAIAMQpgEiBkKAgICAcINCgICAgOAAUQ0BIAIoAghBAUYEQCAGIQEMAgsgBSAGNwMIIAUgA0EATgR+IAOtBUKAgICAwH4gA7i9IgFCgICAgMCBgPz\u002FAH0gAUKAgICAgICA+P8AVhsLIgc3AwAgAEECIAUQ\u002FQIhASAAIAYQDCAAIAcQDAwBCyAEQQA2AgBCgICAgOAAIQELIAVBIGokACABC\u002FcBAgl\u002FAX4jACIHIQwgAacoAiAiCSgCECIIQQAgCEEAShshCiAJQRhqIQ0gByADIAhqIgtBA3RBD2pBcHFrIgckAAN+IAYgCkYEfkEAIQYgA0EAIANBAEobIQMgByAIQQN0aiEIA0AgAyAGRkUEQCAIIAZBA3QiCmogBCAKaikDADcDACAGQQFqIQYMAQsLAn4gBUEBcQRAIAAgASACEE0hAyAAIAkpAwAiASABIAIgAxsgCyAHEP4CDAELIAAgCSkDACAJKQMIIAsgBxAcCyEPIAwkACAPBSAHIAZBA3QiDmogDSAOaikDADcDACAGQQFqIQYMAQsLC7EBACAAQQgQXCIFBEAgBUEANgIAIAUgACABIAIgAyAEEOwDIgM2AgQCQCADRQRAIAVBBDYCAAwBCyAAIAMQsQIiAkKAgICAcINCgICAgOAAUQ0AIAAgAhAMIAAgAUErEF4iAUKAgICAcINCgICAgOAAUQ0AIAFCgICAgHBaBEAgAacgBTYCIAsgAQ8LIAAoAhAgBRDnAyAAKAIQIgBBEGogBSAAKAIEEQAAC0KAgICA4AAL+gMCBH8EfiMAQRBrIgEkAAJAAkAgAikDECIHQoCAgIBwg0KAgICAkH9SBEAgAEGBjAFBABASDAELIAIpAxghCCAAIAcQqAEiBUUEQEEAIQUMAQsgACAIEKgBIgZFDQAjAEEwayIDJAACQAJAAkAgACAFIAYQuQUiBEUNACAAIAQQ+QNBAEgEQCAAQQEQ9gUMAQsgBCAEKAIAQQFqNgIAIAAgBK1CgICAgFCEIgcgACkDwAFBAEEAELcFIghCgICAgHCDQoCAgIDgAFINAQsgACgCECIEKQOAASEHIARCgICAgCA3A4ABIAMgBzcDACAAIAAgAikDCEKAgICAMEEBIAMQHBAMIAAgAykDABAMDAELIAQgBCgCAEEBajYCACADIAIpAwA3AwAgAikDCCEJIAMgBzcDECADIAk3AwggAyAAQTlBAEEAQQMgAxCFASIJNwMgIAMgAEE6QQBBAEEDIAMQhQEiCjcDKCAAIAcQDCAAIAAgCCAAIANBIGoQ+AMQDCAAIAkQDCAAIAoQDCAAIAgQDAsgA0EwaiQAIAAgBhAxDAELIAAoAhAiAykDgAEhByADQoCAgIAgNwOAASABIAc3AwggACAAIAIpAwhCgICAgDBBASABQQhqEBwQDCAAIAEpAwgQDAsgACAFEDEgAUEQaiQAQoCAgIAwC9MGAgl\u002FAXwjAEFAaiIGJAAgAaciCC0AKSELIAgtACghCSAGIAAoAhAiDCgCjAE2AhAgDCAGQRBqNgKMASAIKAIgIQcgBiADNgI0IAYgATcDGCAGQQA2AjgCQCADIAlOBEAgBCEADAELIANBACADQQBKGyENIAYgCUEDdEEPakHwH3FrIgAkAANAIAogDUYEQCADIQQDQCAEIAlGRQRAIAAgBEEDdGpCgICAgDA3AwAgBEEBaiEEDAELCyAGIAk2AjQFIAAgCkEDdCIOaiAEIA5qKQMANwMAIApBAWohCgwBCwsLIAYgADYCICAIKAIkIQQCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgCw4NCwIAAQABBwgDBAUGCQoLIAVBAXENCkKAgICAMCECIAtBAkcNCgwLCyAFQQFxDQBCgICAgDAhAiALQQNGDQoLIAcgAiADIAAgCC4BKiAEEQQAIQEMCwsgByACIAQRCAAhAQwKCyAHIAIgACkDACAEERgAIQEMCQsgByACIAguASogBBEQACEBDAgLIAcgAiAAKQMAIAguASogBBEoACEBDAcLIAcgBkEIaiAAKQMAEEINBSAGKwMIIAQRCgAiD70iAQJ\u002FIA+ZRAAAAAAAAOBBYwRAIA+qDAELQYCAgIB4CyIAt71RBEAgAK0hAQwHC0KAgICAwH4gAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGyEBDAYLQoCAgIDgACEBIAcgBkEIaiAAKQMAEEINBSAHIAYgACkDCBBCDQUgBisDCCAGKwMAIAQRHQAiD70iAQJ\u002FIA+ZRAAAAAAAAOBBYwRAIA+qDAELQYCAgIB4CyIAt71RBEAgAK0hAQwGC0KAgICAwH4gAUKAgICAwIGA\u002FP8AfSABQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDQoCAgICAgID4\u002FwBWGyEBDAULIAcgAiADIAAgBkEIaiAILgEqIAQREQAiAUKAgICAcINCgICAgOAAUQ0EIAYoAggiAEECRg0EIAcgASAAEIIDIQEMBAsQAQALIAcgAiADIAAgBBECACEBDAILIAdBmRFBABASC0KAgICA4AAhAQsgDCAGKAIQNgKMASAGQUBrJAAgAQvVAQEGfyMAIgUhCwJAIAFCgICAgHBUDQAgAaciBi8BBkEPRw0AIAYoAiAhBwsgACACIAMgAyAHLQAEIgBIBH9BACEGIANBACADQQBKGyEJIAUgAEEDdEEPakHwH3FrIgUkAAN\u002FIAYgCUYEfyADIQQDfyAAIARGBH8gBQUgBSAEQQN0akKAgICAMDcDACAEQQFqIQQMAQsLBSAFIAZBA3QiCmogBCAKaikDADcDACAGQQFqIQYMAQsLBSAECyAHLwEGIAdBCGogBygCABERACEBIAskACABCw4AIAAQqwJCgICAgOAACwkAQoCAgIDAfgsPACAAIAMQDCAAEKsCQX8LFQAgACADEAwgACAEEAwgABCrAkF\u002FC2gBAX8jAEEQayIDJAAgASgCBCEBIAIgA0EMaiAAKAIEEKUBQQAgAiADQQhqIAEQpQEbRQRAQcszQajsAEGuOkG2NxAAAAsgAygCCCEAIAMoAgwhASADQRBqJABBfyAAIAFHIAAgAUsbCw4AIAAQqwJCgICAgOAACwkAIAAQqwJBfwsQACMAIABrQXBxIgAkACAACwYAIAAkAAsEACMAC6gBAQV\u002FIAAoAlQiAygCACEFIAMoAgQiBCAAKAIUIAAoAhwiB2siBiAEIAZJGyIGBEAgBSAHIAYQHhogAyADKAIAIAZqIgU2AgAgAyADKAIEIAZrIgQ2AgQLIAQgAiACIARLGyIEBEAgBSABIAQQHhogAyADKAIAIARqIgU2AgAgAyADKAIEIARrNgIECyAFQQA6AAAgACAAKAIsIgE2AhwgACABNgIUIAILKQAgASABKAIAQQdqQXhxIgFBEGo2AgAgACABKQMAIAEpAwgQ8wU5AwALpBgDE38BfAJ+IwBBsARrIgwkACAMQQA2AiwCQCABvSIaQgBTBEBBASEPQbMQIRMgAZoiAb0hGgwBCyAEQYAQcQRAQQEhD0G2ECETDAELQbkQQbQQIARBAXEiDxshEyAPRSEVCwJAIBpCgICAgICAgPj\u002FAINCgICAgICAgPj\u002FAFEEQCAAQSAgAiAPQQNqIgMgBEH\u002F\u002F3txEF0gACATIA8QVyAAQZDAAEHi9AAgBUEgcSIFG0H7ywBBxvgAIAUbIAEgAWIbQQMQVyAAQSAgAiADIARBgMAAcxBdIAMgAiACIANIGyEJDAELIAxBEGohEgJAAn8CQCABIAxBLGoQ\u002FgUiASABoCIBRAAAAAAAAAAAYgRAIAwgDCgCLCIGQQFrNgIsIAVBIHIiDkHhAEcNAQwDCyAFQSByIg5B4QBGDQIgDCgCLCEKQQYgAyADQQBIGwwBCyAMIAZBHWsiCjYCLCABRAAAAAAAALBBoiEBQQYgAyADQQBIGwshCyAMQTBqQaACQQAgCkEAThtqIg0hBwNAIAcCfyABRAAAAAAAAPBBYyABRAAAAAAAAAAAZnEEQCABqwwBC0EACyIDNgIAIAdBBGohByABIAO4oUQAAAAAZc3NQaIiAUQAAAAAAAAAAGINAAsCQCAKQQBMBEAgCiEDIAchBiANIQgMAQsgDSEIIAohAwNAQR0gAyADQR1OGyEDAkAgB0EEayIGIAhJDQAgA60hG0IAIRoDQCAGIBpC\u002F\u002F\u002F\u002F\u002Fw+DIAY1AgAgG4Z8IhogGkKAlOvcA4AiGkKAlOvcA359PgIAIAZBBGsiBiAITw0ACyAapyIGRQ0AIAhBBGsiCCAGNgIACwNAIAggByIGSQRAIAZBBGsiBygCAEUNAQsLIAwgDCgCLCADayIDNgIsIAYhByADQQBKDQALCyADQQBIBEAgC0EZakEJbkEBaiEQIA5B5gBGIREDQEEJQQAgA2siAyADQQlOGyEJAkAgBiAITQRAIAgoAgBFQQJ0IQcMAQtBgJTr3AMgCXYhFEF\u002FIAl0QX9zIRZBACEDIAghBwNAIAcgAyAHKAIAIhcgCXZqNgIAIBYgF3EgFGwhAyAHQQRqIgcgBkkNAAsgCCgCAEVBAnQhByADRQ0AIAYgAzYCACAGQQRqIQYLIAwgDCgCLCAJaiIDNgIsIA0gByAIaiIIIBEbIgcgEEECdGogBiAGIAdrQQJ1IBBKGyEGIANBAEgNAAsLQQAhAwJAIAYgCE0NACANIAhrQQJ1QQlsIQNBCiEHIAgoAgAiCUEKSQ0AA0AgA0EBaiEDIAkgB0EKbCIHTw0ACwsgCyADQQAgDkHmAEcbayAOQecARiALQQBHcWsiByAGIA1rQQJ1QQlsQQlrSARAIAxBMGpBBEGkAiAKQQBIG2ogB0GAyABqIglBCW0iEUECdGoiEEGAIGshCkEKIQcgCSARQQlsayIJQQdMBEADQCAHQQpsIQcgCUEBaiIJQQhHDQALCwJAIAooAgAiESARIAduIhQgB2xrIglFIBBB\u002FB9rIhYgBkZxDQACQCAUQQFxRQRARAAAAAAAAEBDIQEgB0GAlOvcA0cgCCAKT3INASAQQYQgay0AAEEBcUUNAQtEAQAAAAAAQEMhAQtEAAAAAAAA4D9EAAAAAAAA8D9EAAAAAAAA+D8gBiAWRhtEAAAAAAAA+D8gCSAHQQF2IhRGGyAJIBRJGyEZAkAgFQ0AIBMtAABBLUcNACAZmiEZIAGaIQELIAogESAJayIJNgIAIAEgGaAgAWENACAKIAcgCWoiAzYCACADQYCU69wDTwRAA0AgCkEANgIAIAggCkEEayIKSwRAIAhBBGsiCEEANgIACyAKIAooAgBBAWoiAzYCACADQf+T69wDSw0ACwsgDSAIa0ECdUEJbCEDQQohByAIKAIAIglBCkkNAANAIANBAWohAyAJIAdBCmwiB08NAAsLIApBBGoiByAGIAYgB0sbIQYLA0AgBiIHIAhNIglFBEAgBkEEayIGKAIARQ0BCwsCQCAOQecARwRAIARBCHEhCgwBCyADQX9zQX8gC0EBIAsbIgYgA0ogA0F7SnEiChsgBmohC0F\u002FQX4gChsgBWohBSAEQQhxIgoNAEF3IQYCQCAJDQAgB0EEaygCACIORQ0AQQohCUEAIQYgDkEKcA0AA0AgBiIKQQFqIQYgDiAJQQpsIglwRQ0ACyAKQX9zIQYLIAcgDWtBAnVBCWwhCSAFQV9xQcYARgRAQQAhCiALIAYgCWpBCWsiBkEAIAZBAEobIgYgBiALShshCwwBC0EAIQogCyADIAlqIAZqQQlrIgZBACAGQQBKGyIGIAYgC0obIQsLQX8hCSALQf3\u002F\u002F\u002F8HQf7\u002F\u002F\u002F8HIAogC3IiERtKDQEgCyARQQBHakEBaiEOAkAgBUFfcSIVQcYARgRAIAMgDkH\u002F\u002F\u002F\u002F\u002FB3NKDQMgA0EAIANBAEobIQYMAQsgEiADIANBH3UiBnMgBmutIBIQkQIiBmtBAUwEQANAIAZBAWsiBkEwOgAAIBIgBmtBAkgNAAsLIAZBAmsiECAFOgAAIAZBAWtBLUErIANBAEgbOgAAIBIgEGsiBiAOQf\u002F\u002F\u002F\u002F8Hc0oNAgsgBiAOaiIDIA9B\u002F\u002F\u002F\u002F\u002FwdzSg0BIABBICACIAMgD2oiBSAEEF0gACATIA8QVyAAQTAgAiAFIARBgIAEcxBdAkACQAJAIBVBxgBGBEAgDEEQaiIGQQhyIQMgBkEJciEKIA0gCCAIIA1LGyIJIQgDQCAINQIAIAoQkQIhBgJAIAggCUcEQCAGIAxBEGpNDQEDQCAGQQFrIgZBMDoAACAGIAxBEGpLDQALDAELIAYgCkcNACAMQTA6ABggAyEGCyAAIAYgCiAGaxBXIAhBBGoiCCANTQ0ACyARBEAgAEGGiAFBARBXCyALQQBMIAcgCE1yDQEDQCAINQIAIAoQkQIiBiAMQRBqSwRAA0AgBkEBayIGQTA6AAAgBiAMQRBqSw0ACwsgACAGQQkgCyALQQlOGxBXIAtBCWshBiAIQQRqIgggB08NAyALQQlKIRggBiELIBgNAAsMAgsCQCALQQBIDQAgByAIQQRqIAcgCEsbIQkgDEEQaiIGQQhyIQMgBkEJciENIAghBwNAIA0gBzUCACANEJECIgZGBEAgDEEwOgAYIAMhBgsCQCAHIAhHBEAgBiAMQRBqTQ0BA0AgBkEBayIGQTA6AAAgBiAMQRBqSw0ACwwBCyAAIAZBARBXIAZBAWohBiAKIAtyRQ0AIABBhogBQQEQVwsgACAGIA0gBmsiBiALIAYgC0gbEFcgCyAGayELIAdBBGoiByAJTw0BIAtBAE4NAAsLIABBMCALQRJqQRJBABBdIAAgECASIBBrEFcMAgsgCyEGCyAAQTAgBkEJakEJQQAQXQsgAEEgIAIgBSAEQYDAAHMQXSAFIAIgAiAFSBshCQwBCyATIAVBGnRBH3VBCXFqIQgCQCADQQtLDQBBDCADayEGRAAAAAAAADBAIRkDQCAZRAAAAAAAADBAoiEZIAZBAWsiBg0ACyAILQAAQS1GBEAgGSABmiAZoaCaIQEMAQsgASAZoCAZoSEBCyASIAwoAiwiBiAGQR91IgZzIAZrrSASEJECIgZGBEAgDEEwOgAPIAxBD2ohBgsgD0ECciELIAVBIHEhDSAMKAIsIQcgBkECayIKIAVBD2o6AAAgBkEBa0EtQSsgB0EASBs6AAAgBEEIcSEGIAxBEGohBwNAIAciBQJ\u002FIAGZRAAAAAAAAOBBYwRAIAGqDAELQYCAgIB4CyIHQfDRBGotAAAgDXI6AAAgBiADQQBKckUgASAHt6FEAAAAAAAAMECiIgFEAAAAAAAAAABhcSAFQQFqIgcgDEEQamtBAUdyRQRAIAVBLjoAASAFQQJqIQcLIAFEAAAAAAAAAABiDQALQX8hCUH9\u002F\u002F\u002F\u002FByALIBIgCmsiBmoiDWsgA0gNACAAQSAgAiANIANBAmogByAMQRBqIgdrIgUgBUECayADSBsgBSADGyIJaiIDIAQQXSAAIAggCxBXIABBMCACIAMgBEGAgARzEF0gACAHIAUQVyAAQTAgCSAFa0EAQQAQXSAAIAogBhBXIABBICACIAMgBEGAwABzEF0gAyACIAIgA0gbIQkLIAxBsARqJAAgCQsFACAAnQvNAQIBfAF\u002FAkAgAJkiAb1CIIinIgJB66eG\u002FwNPBEAgAkGBgNCBBE8EQEQAAAAAAAAAgCABo0QAAAAAAADwP6AhAQwCC0QAAAAAAADwP0QAAAAAAAAAQCABIAGgEJMCRAAAAAAAAABAoKOhIQEMAQsgAkGvscH+A08EQCABIAGgEJMCIgEgAUQAAAAAAAAAQKCjIQEMAQsgAkGAgMAASQ0AIAFEAAAAAAAAAMCiEJMCIgGaIAFEAAAAAAAAAECgoyEBCyABmiABIAC9QgBTGwuEAQECfyMAQRBrIgEkAAJAIAC9QiCIp0H\u002F\u002F\u002F\u002F\u002FB3EiAkH7w6T\u002FA00EQCACQYCAgPIDSQ0BIABEAAAAAAAAAABBABD\u002FBSEADAELIAJBgIDA\u002FwdPBEAgACAAoSEADAELIAAgARCbBCECIAErAwAgASsDCCACQQFxEP8FIQALIAFBEGokACAAC8EDAgN\u002FAX4jAEEgayICJAACQAJAIAFCgICAgHCDQoCAgIAwUgRAIABBnSxBABASDAELIAMpAwAiAUIgiKdBdU8EQCABpyIDIAMoAgBBAWo2AgALAkACQANAAkACQAJAAkBBByABQiCIpyIDIANBB2tBbkkbIgNBCmoODAgFBQEFBQUFBQIAAAMLIAAgAcQQvwIhAQwHCyAAIAEQnwUhAQwGCyAAIAFBARCSASIBQoCAgIBwg0KAgICA4ABSDQEMBQsLIANBB0YNAQsgACABEAwgAEHdGUEAEBIMAQsCQCAAIAJBDGogARCtAiIDRQ0AAn4gAygCCEH+\u002F\u002F\u002F\u002FB04EQCAAIAEQDCAAQbQZQQAQREKAgICA4AAMAQsgABDiASIHQoCAgIBwg0KAgICA4ABRDQEgB6dBBGoiBCADEEkhBSAEQQEQ7wEhBiAAIAEQDCAGIAVyIgRBIHEEQCAAIAcQDCAAEHBCgICAgOAADAELIARBEHEEQCAAIAcQDCAAQfAzQQAQREKAgICA4AAMAQsgBxCvAgshASADIAJBDGoiAEcNAiAAEBkMAgsgACABEAwLQoCAgIDgACEBCyACQSBqJAAgAQsEAEIAC9gCAQh\u002FIwBBIGsiAyQAIAMgACgCHCIENgIQIAAoAhQhBSADIAI2AhwgAyABNgIYIAMgBSAEayIBNgIUIAEgAmohBSADQRBqIQFBAiEHAn8CQAJAAkAgACgCPCABQQIgA0EMahACEPoFBEAgASEEDAELA0AgBSADKAIMIgZGDQIgBkEASARAIAEhBAwECyABIAYgASgCBCIISyIJQQN0aiIEIAYgCEEAIAkbayIIIAQoAgBqNgIAIAFBDEEEIAkbaiIBIAEoAgAgCGs2AgAgBSAGayEFIAAoAjwgBCIBIAcgCWsiByADQQxqEAIQ+gVFDQALCyAFQX9HDQELIAAgACgCLCIBNgIcIAAgATYCFCAAIAEgACgCMGo2AhAgAgwBCyAAQQA2AhwgAEIANwMQIAAgACgCAEEgcjYCAEEAIAdBAkYNABogAiAEKAIEawshCiADQSBqJAAgCgsLACAAIAFBChCiBQsFACAAnwuLAQICfAF\u002FRAAAAAAAAOA\u002FIACmIQICQCAAmSIBvUIgiKciA0HB3JiEBE0EQCABEJMCIQEgA0H\u002F\u002F7\u002F\u002FA00EQCADQYCAwPIDSQ0CIAIgASABoCABIAGiIAFEAAAAAAAA8D+go6GiDwsgAiABIAEgAUQAAAAAAADwP6CjoKIPCyABIAIgAqAQjgYhAAsgAAvHAQICfwF8IwBBEGsiASQAAkAgAL1CIIinQf\u002F\u002F\u002F\u002F8HcSICQfvDpP8DTQRAIAJBgIDA8gNJDQEgAEQAAAAAAAAAAEEAEMsCIQAMAQsgAkGAgMD\u002FB08EQCAAIAChIQAMAQsgACABEJsEIQIgASsDCCEAIAErAwAhAwJAAkACQAJAIAJBA3EOAwABAgMLIAMgAEEBEMsCIQAMAwsgAyAAEMwCIQAMAgsgAyAAQQEQywKaIQAMAQsgAyAAEMwCmiEACyABQRBqJAAgAAvnAwMGfAF+A38CQAJAAkACQCAAvSIHQgBZBEAgB0IgiKciCEH\u002F\u002Fz9LDQELIAC9Qv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FwCDUARARAAAAAAAAPC\u002FIAAgAKKjDwsgB0IAWQ0BIAAgAKFEAAAAAAAAAACjDwsgCEH\u002F\u002F7\u002F\u002FB0sNAkGAgMD\u002FAyEJQYF4IQogCEGAgMD\u002FA0cEQCAIIQkMAgsgB6cNAUQAAAAAAAAAAA8LIABEAAAAAAAAUEOivSIHQiCIpyEJQct3IQoLIAogCUHiviVqIghBFHZqtyIFRABgn1ATRNM\u002FoiIBIAdC\u002F\u002F\u002F\u002F\u002Fw+DIAhB\u002F\u002F8\u002FcUGewZr\u002FA2qtQiCGhL9EAAAAAAAA8L+gIgAgACAARAAAAAAAAOA\u002FoqIiA6G9QoCAgIBwg78iBEQAACAVe8vbP6IiAqAiBiACIAEgBqGgIAAgAEQAAAAAAAAAQKCjIgEgAyABIAGiIgIgAqIiASABIAFEn8Z40Amawz+iRK94jh3Fccw\u002FoKJEBPqXmZmZ2T+goiACIAEgASABRERSPt8S8cI\u002FokTeA8uWZEbHP6CiRFmTIpQkSdI\u002FoKJEk1VVVVVV5T+goqCgoiAAIAShIAOhoCIARAAAIBV7y9s\u002FoiAFRDYr8RHz\u002Flk9oiAAIASgRNWtmso4lLs9oqCgoKAhAAsgAAvEDgIQfwF+IAAQ4gEiFUKAgICAcINCgICAgOAAUgR+IwBBEGsiAyQAIBWnQQRqIQsjAEEwayIGJAAgA0EANgIMIAYgASIENgIsAkACQAJAIAIiCkERSCICBEAgAUGQwAAgBkEsahCvBA0BIAYoAiwhBAsCQAJAAkAgBC0AACIFQStrDgMBAgACC0EBIQ8LIAYgBEEBaiIBNgIsIAQtAAEhBSABIQQLAkACQAJAAn8CQCAFQf8BcUEwRgRAAkACQCAELQABIgFB+ABHBEAgAUHvAEYNAiABQdgARw0BCyAKQW9xRQRAIAYgBEECajYCLEEQDAULIAFB7wBGDQEgCkUhCAwDCyAKRSEIIAogAUHPAEdyDQIMBQsgCg0FDAQLIAJFDQIgBEH7ywAgBkEsahCvBEUNAiALIA8Qf0EAIQUMBwsCQCABQeIARwRAIAggAUHCAEZxDQEMAwsgCEUNAgsMAgshCiAELQACEIwBIApPDQMMAgsgCg0BC0EKIQoLAn8gCiAKQQFrIgFxBEAgCygCACEBIAZCADcCICAGQoCAgICAgICAgH83AhggBiABNgIUIAZBFGoMAQtBICABZ2tBACAKQQJPGyEMIAsLIQ0gBigCLCEFA0AgBS0AAEEwRgRAIAYgBUEBaiIFNgIsDAELC0EgIQIgDEUEQCAKQb7+AWotAAAhAgsgDUEBEFAaIAZBADYCKCACIQFBACEFAkACQAJAAkADQAJAAkAgBigCLCIILQAAIhFBLkcNACAEIAhPBEBBLiERIAgsAAEQjAEgCk4NAQsgDg0DQQEhDiAGIAhBAWoiBzYCLCAILQABIREgCSEQDAELIAghBwsgCiARwBCMASIISwRAIAYgB0EBajYCLCAJQQFqIQkgDARAIAEgDGsiB0EATARAIA0gBkEoaiAIQQAgB2t2IAVyEK4DDQYgCCAHQSBqIgF0QQAgBxshBQwDCyAIIAd0IAVyIQUgByEBDAILIAggBSAKbGohBSABQQFrIgENASANIAZBKGogBRCuAyESIAIhAUEAIQUgEkUNAQwDCwsgECAJIA4bIRALIAEgAkYNAiAMIAFFckUEQANAIAUgCmwhBSABQQFrIgENAAsLIA0gBkEoaiAFEK4DRQ0CIAwNAQsgDRAZCyALECpBICEFDAMLIA0oAhBBACAGKAIoIg5BAnRBBGoQLBogBigCLCIJIARHDQEgDA0AIA0QGQsgCxAqQQAhBQwBCyAJLQAAIQcCQAJ\u002FAn8CQAJAIApBCkYEQCAHIgFBIHJB5QBGDQEMAgtBwAAhASAHQcAARg0AIAxFBEBBACEIDAULIAciAUEgckHwAEYNAEEADAMLIAQgCU8NACAGIAlBAWoiCDYCLCABQd8BcSETQQEhBwJAAkACQCAJLQABQStrDgMAAgECCyAGIAlBAmoiCDYCLAwBCyAGIAlBAmoiCDYCLEEAIQcLIBNB0ABHIQlBACEFA0AgCCwAABCMASIBQQlNBEAgBUHMmbPmAE4EQCAHRQRAIAsgDxCAAUEYIQUMCAsgCyAPEH9BFCEFDAcFIAYgCEEBaiIINgIsIAEgBUEKbGohBQwCCwALCyAFQQAgBWsgBxsMAQtBASEJQQALIQggDEUNASAMQQEgCRsgCGwLIQEgDSAPNgIEIA0gASAMIBBsajYCCCANQf\u002F\u002F\u002F\u002F8DQQEQmwIhBQwBCwJAIA0oAgwiBCAOQQFqIglGBEAgCyAPEIABQQAhBQwBCyALKAIAIQEgBkIANwIMIAZCgICAgICAgICAfzcCBCAGIAE2AgAgDSgCECEOIAoQrgQhEUEAIQUCfwJAIAEoAgBBAEECQSIgBCAJayIEQQFrZ2sgBEECSRsiDEEUbCABKAIEEQEAIgcEQCAOIAlBAnRqIQ4gECACIARsayAIaiECA0AgBSAMRwRAIAcgBUEUbGoiCUIANwIMIAlCgICAgICAgICAfzcCBCAJIAE2AgAgBUEBaiEFDAELC0EAIQUgBiAOIARBACAEIBEgBxCtAyEUA0AgBSAMRwRAIAcgBUEUbGoQGSAFQQFqIQUMAQsLIAEoAgAgB0EAIAEoAgQRAQAaIBRFDQELIAsQKkEgDAELIAYgDzYCBCMAQSBrIgEkAAJAIAYoAgxFBEAgCyAGEEkhAgwBCyACRQRAIAsgBhBJIAtB\u002F\u002F\u002F\u002F\u002FwNBARC6AXIhAgwBCyALKAIAIQQgAUIANwIYIAFCgICAgICAgICAfzcCECABIAQ2AgwCfyABQQxqIgcgCiACIAJBH3UiBHMgBGtB\u002F\u002F\u002F\u002F\u002FwNBABDXAiEEIAJBAEgEQCALIAYgByAGKAIMQQV0QQAQiAEgBHIMAQsgCyAGIAFBDGpB\u002F\u002F\u002F\u002F\u002FwNBABBAIARyCyECIAFBDGoQGQsgAUEgaiQAIAILIQUgBhAZCyANEBkLIAZBMGokACADQRBqJAAgBUEgcQRAIAAgFRAMIAAQcEKAgICA4AAPCyAVEK8CBUKAgICA4AALC6EBAQR\u002FIAIgACgCVCIDKAIEIgQgAygCACIFayIGQQAgBCAGTxsiBEsEQCAAIAAoAgBBEHI2AgAgBCECCyABIAMoAgwgBWogAhAeGiADIAMoAgAgAmoiBTYCACAAIAAoAiwiATYCBCAAIAEgBCACayIEIAAoAjAiACAAIARLGyIAajYCCCABIAMoAgwgBWogABAeGiADIAMoAgAgAGo2AgAgAguNAQIBfwF+IwBBEGsiAyQAAn4CQCACQQNPDQAgACgCVCEAIANBADYCBCADIAAoAgA2AgggAyAAKAIENgIMQQAgA0EEaiACQQJ0aigCACICa6wgAVUNACAAKAIIIAJrrCABUw0AIAAgAiABp2oiADYCACAArQwBC0HE1ARBHDYCAEJ\u002FCyEEIANBEGokACAEC6YCAgF+BX8jAEEgayIHJAACfwJAIAJBjgFGBEAgAEGIiAFBABASDAELIAAQ4gEiBEKAgICAcINCgICAgOAAUQ0AIAAgB0EMaiADEK4CIgVFBEAgACAEEAwMAQsgBKciBkEEaiEIAkACQAJAAkACQCACQY0Baw4KAAIDAwICAgICAQILIAggBRBJIQIgBiAGKAIIQQFzNgIIDAMLIAggBUIBQf\u002F\u002F\u002F\u002F8DQQEQeiECIAYgBigCCEEBczYCCAwCCxABAAsgCCAFIAJBAXRBnwJrrEH\u002F\u002F\u002F\u002F\u002FA0EBEHohAgsgACAFIAdBDGoQ5gEgACADEAwgAgRAIAAgBBAMIAAgAhChBUF\u002FDAILIAEgBBCvAjcDAEEADAELIAAgAxAMQX8LIQkgB0EgaiQAIAkLBQAgAJwLBQAgAJkLkgEBAX8CfCAAmSIAvUIgiKciAUHB3Jj\u002FA00EQEQAAAAAAADwPyABQYCAwPIDSQ0BGiAAEJMCIgAgAKIgAEQAAAAAAADwP6AiACAAoKNEAAAAAAAA8D+gDwsgAUHB3JiEBE0EQCAAEJoEIgBEAAAAAAAA8D8gAKOgRAAAAAAAAOA\u002Fog8LIABEAAAAAAAA8D8QjgYLC8MSAhR\u002FAX4jAEFAaiIQJAACfwJAAkACQCAAEOIBIhlCgICAgHCDQoCAgIDgAFENACAAIBBBLGoiBiADEK4CIglFDQAgACAQQRhqIAQQrgIiDg0BIAAgCSAGEOYBCyAAIBkQDCAAIAMQDCAAIAQQDAwBCyAZp0EEaiEGAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAFBmwFrDhYBAgMKAAQFBQkJCQkJCQkJCQkJBggHCQsgBiAJIA5B\u002F\u002F\u002F\u002F\u002FwNBARDuASEBDAoLIAYgCSAOQf\u002F\u002F\u002F\u002F8DQQEQQCEBDAkLIAAoAtgBIBBBBGoiChC7ASAGIAogCSAOELoEIQEgChAZDAgLIwBBIGsiByQAIAYoAgAhASAHQgA3AhggB0KAgICAgICAgIB\u002FNwIQIAcgATYCDCAHQQxqIgogBiAJIA4QugQhFyAKEBkgB0EgaiQAIBdBAXEhAQwHC0EBIQEgDigCBA0GIAYhASAOIQgjAEFAaiIFJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgCSgCDARAIAgoAgwNAQsgCCgCCEGAgICAeEYEQCABQgEQMhoMCwsgCSgCCEH\u002F\u002F\u002F\u002F\u002FB0YNCSABQgEQMhoCQCAJIAEQ8gEiBkUEQCAIKAIIQf7\u002F\u002F\u002F8HTg0LDAELIAYNAgsgCSgCBEUNCiAIKAIIQf\u002F\u002F\u002F\u002F8HRg0JDAoLIAEoAgAhDCAFQgA3AiQgBUKAgICAgICAgIB\u002FNwIcIAUgDDYCGCAFQRhqIgYgCRBJGiAIENkCIRNBgYAEIQogCSgCBARAIBNBAEgEQCABECogBhAZQQEhBwwMCyAFIAUoAhxBAXM2AhwgE0UiFkEAcUGBgARzIQoLIAFCARAyGiAFQRhqIhEgARC9Ag0EIAVCADcCOCAFQoCAgICAgICAgH83AjAgBSAMNgIsIAVCADcCECAFQoCAgICAgICAgH83AgggBSAMNgIEIAVBLGoiFSARQSBBAhCqAyAFQQRqIgYgEUEgQQMQqgMgFSAVIAhBICAIKAIEQQJzEEAaIAYgBiAIQSAgCCgCBEEDcxBAGiMAQTBrIg0kAAJAIAYoAghBAEwNACANQgA3AiggDUKAgICAgICAgIB\u002FNwIgIA0gDDYCHCANQgA3AhQgDUKAgICAgICAgIB\u002FNwIMIA0gDDYCCCANQQhqIhJBIEEDEJgCIwBBIGsiFCQAIA1BHGoiCygCACEHIBRCADcCGCAUQoCAgICAgICAgH83AhAgFCAHNgIMIBRBDGoiDEGAgICAAkEBQRwgCkEFdkE\u002FcSIHa3QgB0E\u002FRhsiB60QMhogCyASIAxBIEEDEEAaIAwQGSAUQSBqJAAgCyAVEKwCBEAgCxAZIBIQGSABQQBB\u002F\u002F\u002F\u002F\u002FwMgChC3AyEPDAELIA1BCGoiEkEgQQIQmAIgDUEcaiIMIBJBASAHIApBHHRBH3VB\u002Fv\u002F\u002F\u002FwNxaiIHa6xBIEECENgCIAYgDBCsAgRAIAwQGSASEBkgCkEHcUEDRgRAIAFCARAyGiABQQMgB2s2AghBGCEPDAILIAFBABCAAUEYIQ8MAQsgDUEIahAZIA1BHGoQGQsgDUEwaiQAIA8hByAVEBkgBhAZIAcNBCATQQBODQJBACEMIAEoAgAhByARENkCIQsCQEEAIBNrIhJBIE8EQCALRQ0BDAULIAtBfyASdEF\u002Fc3ENBCALIBJ1IQwLIAUoAiggBSgCJCIGIAsgBSgCIGsgBkEFdGoQcUEHcUEBRw0DIAVCADcCOCAFQoCAgICAgICAgH83AjAgBSAHNgIsIAVBLGogBUEYahBJGiAFIAUoAjQgC2s2AjRBACEHA0AgByASRg0CIAcEQCAFQSxqIAEQSRoLIAdBAWohByMAQSBrIgskAAJAAkACQCAFQSxqIhEoAgxFBEACQAJAAkACQCARKAIIQf7\u002F\u002F\u002F8Haw4CAQACCyABECoMAgsgESgCBA0DCyABIBEQSRoLQQAhBgwDCyARKAIERQ0BCyABECpBASEGDAELIAEgESARKAIIQQFqQQJtQQEQtQQgAUEBEO8BGiABKAIAIQYgC0IANwIYIAtCgICAgICAgICAfzcCECALIAY2AgwgC0EMaiIPIAEgAUH\u002F\u002F\u002F\u002F\u002FA0EBEEAaIA8gDygCBEEBczYCBCAPIA8gEUH\u002F\u002F\u002F\u002F\u002FA0EBELgBGkEgIQYgDygCCEH\u002F\u002F\u002F\u002F\u002FB0cEQCAPKAIMQQBHQQR0IQYLIA8QGQsgC0EgaiQAIAZFDQALDAMLIAgoAghB\u002Fv\u002F\u002F\u002FwdrDgIGBwULIAEgASgCCCAMajYCCCAFQRhqIAEQSRogBSAIKAIQNgI8IAUgCCgCDDYCOCAFIAgoAgQ2AjAgBSAIKAIIIBNrNgI0IAVBLGohCAsgBSgCICIGIAVBGGoiBxDZAmtBAUYEQCAHIAggBkEBa6xBIEEBENgCIAUgB0EAEO0BIAFCARAyGiABIAUoAgAgChC5ASEHDAILIAVBBGogCEEAEO0BIAgoAgQNAiAFKAIEIgZB\u002F\u002F\u002F\u002F\u002FwFMBEAgASAFQRhqIAZB\u002F\u002F\u002F\u002F\u002FwNBARCvAyEHDAILIAVBGGoQGSABQQBB\u002F\u002F\u002F\u002F\u002FwMgChC3AyEHDAcLIAEgBUEYakH\u002F\u002F\u002F\u002F\u002FAyAKQZkDIAgQqgQhBwsgBUEYahAZIAEgFjYCBAwFC0GMP0HY7ABBtyVB7hAQAAALIAgQ2QJFIAkoAgRxIQYgCCgCBCAJKAIIQYCAgIB4RkYEQCABIAYQf0ECIQcgCCgCBEUNAwwECyABIAYQgAEMAgsgCCgCBCAGQQBKRgRAIAFBABCAAQwCCyABQQAQfwwBCyABECoLQQAhBwsgBUFAayQAIAchAQwGCyAQQQRqIA5BABDtASAQKAIEIgpBgICAgHhHIAFBogFHcUUEQCAQQQBBgYCAgHggCiAKQYGAgIB4TBsiCmsgCiABQaIBRhs2AgQLIAYgCRBJIAYgECgCBEEBELkBciEBIBAoAgRBAE4NBSAGQQIQ7wFBJHEgAXIhAQwFCyAGIAkgDhCyBCEBDAQLIAYgCSAOQQAQsAMhAQwDCyAGIAkgDkEBELADIQEMAgsQAQALIAYgCSAOQf\u002F\u002F\u002F\u002F8DQQEQuAEhAQsgACAJIBBBLGoQ5gEgACAOIBBBGGoQ5gEgACADEAwgACAEEAwgAQRAIAAgGRAMIAAgARChBQwBCyACIBkQrwI3AwBBAAwBC0F\u002FCyEYIBBBQGskACAYC8MBAgJ8An8jAEEQayIDJAACfCAAvUIgiKdB\u002F\u002F\u002F\u002F\u002FwdxIgRB+8Ok\u002FwNNBEBEAAAAAAAA8D8gBEGewZryA0kNARogAEQAAAAAAAAAABDMAgwBCyAAIAChIARBgIDA\u002FwdPDQAaIAAgAxCbBCEEIAMrAwghACADKwMAIQECQAJAAkACQCAEQQNxDgMAAQIDCyABIAAQzAIMAwsgASAAQQEQywKaDAILIAEgABDMApoMAQsgASAAQQEQywILIQIgA0EQaiQAIAILBQAgAJsLgwIDAnwCfwF+IAC9IgVCIIinQf\u002F\u002F\u002F\u002F8HcSIDQYCAwP8HTwRAIAAgAKAPC0GT8f3UAiEEAkAgA0H\u002F\u002Fz9NBEBBk\u002FH9ywIhBCAARAAAAAAAAFBDor0iBUIgiKdB\u002F\u002F\u002F\u002F\u002FwdxIgNFDQELIAVCgICAgICAgICAf4MgA0EDbiAEaq1CIIaEvyICIAKiIAIgAKOiIgEgASABoqIgAUTX7eTUALDCP6JE2VHnvstE6L+goiABIAFEwtZJSmDx+T+iRCAk8JLgKP6\u002FoKJEkuZhD+YD\u002Fj+goCACor1CgICAgHyDQoCAgIAIfL8iASAAIAEgAaKjIgAgAaEgASABoCAAoKOiIAGgIQALIAALewMBfAF+AX8gAJkhAQJAAnwgAL0iAkI0iKdB\u002Fw9xIgNB\u002FQdNBEAgA0HfB0kNAiABIAGgIgAgASAAokQAAAAAAADwPyABoaOgDAELIAFEAAAAAAAA8D8gAaGjIgAgAKALEKEDRAAAAAAAAOA\u002FoiEBCyABmiABIAJCAFMbC6gDAgV\u002FAX4gAL1C\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgYCAgICAgPj\u002FAFQgAb1C\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FAINCgICAgICAgPj\u002FAFhxRQRAIAAgAaAPCyABvSIHQiCIpyICQYCAwP8DayAHpyIFckUEQCAAEJwEDwsgAkEedkECcSIGIAC9IgdCP4inciEDAkAgB0IgiKdB\u002F\u002F\u002F\u002F\u002FwdxIgQgB6dyRQRAAkACQCADQQJrDgIAAQMLRBgtRFT7IQlADwtEGC1EVPshCcAPCyACQf\u002F\u002F\u002F\u002F8HcSICIAVyRQRARBgtRFT7Ifk\u002FIACmDwsCQCACQYCAwP8HRgRAIARBgIDA\u002FwdHDQEgA0EDdEGApgRqKwMADwsgBEGAgMD\u002FB0cgAkGAgIAgaiAET3FFBEBEGC1EVPsh+T8gAKYPCwJ8IAYEQEQAAAAAAAAAACAEQYCAgCBqIAJJDQEaCyAAIAGjmRCcBAshAAJAAkACQCADDgMEAAECCyAAmg8LRBgtRFT7IQlAIABEB1wUMyamobygoQ8LIABEB1wUMyamobygRBgtRFT7IQnAoA8LIANBA3RBoKYEaisDACEACyAAC9sBAQV\u002FIwBBMGsiBiQAQX8hBwJAIAAgBkEcaiIIIAIQrQIiBEUNAAJAIAAgBkEIaiADEK0CIgVFBEAgBCAIRw0BIAgQGQwBCwJ\u002FAkACQAJAAkACQAJAIAFBpAFrDgcFAAECBAQDBAsgBCAFEKAFDAULIAUgBBCsAgwECyAFIAQQoAUMAwsgBCAFEL0CDAILEAEACyAEIAUQrAILIQcgBkEcaiIBIARGBEAgARAZCyAGQQhqIgEgBUYEQCABEBkLIAAgAhAMDAELIAIhAwsgACADEAwgBkEwaiQAIAcLpgEDAXwBfwF+IACZIQECQCAAvSIDQjSIp0H\u002FD3EiAkGZCE8EQCABEM4CRO85+v5CLuY\u002FoCEBDAELIAJBgAhPBEAgASABoEQAAAAAAADwPyABIAAgAKJEAAAAAAAA8D+gn6CjoBDOAiEBDAELIAJB5QdJDQAgASAAIACiIgAgAEQAAAAAAADwP6CfRAAAAAAAAPA\u002FoKOgEKEDIQELIAGaIAEgA0IAUxsLuQIDAX8DfAF+IAC9IgVCIIinQf\u002F\u002F\u002F\u002F8HcSIBQYCAwP8DTwRAIAWnIAFBgIDA\u002FwNrckUEQCAARBgtRFT7Ifk\u002FokQAAAAAAABwOKAPC0QAAAAAAAAAACAAIAChow8LAkAgAUH\u002F\u002F\u002F\u002F+A00EQCABQYCAQGpBgICA8gNJDQEgACAAIACiEM0CoiAAoA8LRAAAAAAAAPA\u002FIACZoUQAAAAAAADgP6IiA58hACADEM0CIQQCfCABQbPmvP8DTwRARBgtRFT7Ifk\u002FIAAgBKIgAKAiACAAoEQHXBQzJqaRvKChDAELRBgtRFT7Iek\u002FIAC9QoCAgIBwg78iAiACoKEgACAAoCAEokQHXBQzJqaRPCADIAIgAqKhIAAgAqCjIgAgAKChoaFEGC1EVPsh6T+gCyIAmiAAIAVCAFMbIQALIAALdgEBfyAAvUI0iKdB\u002Fw9xIgFB\u002FwdNBEAgAEQAAAAAAADwv6AiACAAIACiIAAgAKCgn6AQoQMPCyABQZgITQRAIAAgAKBEAAAAAAAA8L8gACAAokQAAAAAAADwv6CfIACgo6AQzgIPCyAAEM4CRO85+v5CLuY\u002FoAuuAgMBfAF+AX8gAL0iAkIgiKdB\u002F\u002F\u002F\u002F\u002FwdxIgNBgIDA\u002FwNPBEAgAqcgA0GAgMD\u002FA2tyRQRARAAAAAAAAAAARBgtRFT7IQlAIAJCAFkbDwtEAAAAAAAAAAAgACAAoaMPCwJ8IANB\u002F\u002F\u002F\u002F\u002FgNNBEBEGC1EVPsh+T8gA0GBgIDjA0kNARpEB1wUMyamkTwgACAAIACiEM0CoqEgAKFEGC1EVPsh+T+gDwsgAkIAUwRARBgtRFT7Ifk\u002FIABEAAAAAAAA8D+gRAAAAAAAAOA\u002FoiIAnyIBIAEgABDNAqJEB1wUMyamkbygoKEiACAAoA8LRAAAAAAAAPA\u002FIAChRAAAAAAAAOA\u002FoiIAnyIBIAAQzQKiIAAgAb1CgICAgHCDvyIAIACioSABIACgo6AgAKAiACAAoAsLzgMDBXwBfgN\u002FAkACQAJAAkAgAL0iBkIAWQRAIAZCIIinIgdB\u002F\u002F8\u002FSw0BCyAAvUL\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Ag1AEQEQAAAAAAADwvyAAIACiow8LIAZCAFkNASAAIAChRAAAAAAAAAAAow8LIAdB\u002F\u002F+\u002F\u002FwdLDQJBgIDA\u002FwMhCEGBeCEJIAdBgIDA\u002FwNHBEAgByEIDAILIAanDQFEAAAAAAAAAAAPCyAARAAAAAAAAFBDor0iBkIgiKchCEHLdyEJCyAGQv\u002F\u002F\u002F\u002F8PgyAIQeK+JWoiB0H\u002F\u002Fz9xQZ7Bmv8Daq1CIIaEv0QAAAAAAADwv6AiACAAIABEAAAAAAAA4D+ioiIDob1CgICAgHCDvyIERAAAIGVHFfc\u002FoiIBIAkgB0EUdmq3IgKgIgUgASACIAWhoCAAIABEAAAAAAAAAECgoyIBIAMgASABoiICIAKiIgEgASABRJ\u002FGeNAJmsM\u002FokSveI4dxXHMP6CiRAT6l5mZmdk\u002FoKIgAiABIAEgAUREUj7fEvHCP6JE3gPLlmRGxz+gokRZkyKUJEnSP6CiRJNVVVVVVeU\u002FoKKgoKIgACAEoSADoaAiACAEoEQAou8u\u002FAXnPaIgAEQAACBlRxX3P6KgoKAhAAsgAAsXACAAKAIAIgAgASgCACIBSyAAIAFJawutAgIDfwF+IwBBIGsiBSQAAkAgAaciBygCICIGRQ0AIAYoAggiCCgCBA0AIAhBATYCBCAHLwEGQS5rIQcCQAJAIANBAEwEQEKAgICAMCEBDAELIAcgBCkDACIBQoCAgIBwVHINAAJAAkAgACABIAYpAwAQTQRAIABBoDhBABASDAELIAAgAUGAASABQQAQESICQoCAgIBwg0KAgICA4ABSDQELIAAoAhAiAykDgAEhASADQoCAgIAgNwOAASAAIAYpAwAgAUEBEK0FIAAgARAMDAMLIAAgAhA1DQEgACACEAwLIAAgBikDACABIAcQrQUMAQsgBikDACEJIAUgAjcDECAFIAE3AwggBSAJNwMAIABBM0EDIAUQ+AIgACACEAwLIAVBIGokAEKAgICAMAuYAQEBfyABpyIFLwEGQTFrIQYgBSgCICEFIANBAEwEfkKAgICAMAUgBCkDAAshASAFIAY2AhwgAUIgiKchAwJAIAYEQCADQXVPBEAgAaciAyADKAIAQQFqNgIACyAAIAEQmAEMAQsgA0F1TwRAIAGnIgMgAygCAEEBajYCAAsgBSgCZEEIayABNwMACyAAIAUQrAVCgICAgDALtQEBAX8CQCAAQRQQXCIFBEAgBUEANgIEIAUgBUEMaiIGNgIQIAUgBjYCDCAFIAAgASACIAMgBBDsAyIDNgIIAkAgA0UNACAAIAMQsQIiAkKAgICAcINCgICAgOAAUQ0AIAAgAhAMIAAgAUE1EF4iAUKAgICAcINCgICAgOAAUQ0AIAUgAaciADYCACABQoCAgIBwVA0CIAAgBTYCIAwCCyAAKAIQIAUQqwULQoCAgIDgAA8LIAELswMCBH8DfiMAQRBrIgUkAEKAgICA4AAhCgJAAn8CQCADKQMAIglCgICAgHBaBEAgCaciBC8BBkETa0H\u002F\u002FwNxQQJJDQELIABBExCKA0EADAELIAQoAiALIgRFDQAgBUIANwMIIAJBAk4EQCAAIAVBCGogAykDCBCkAQ0BCyAELQAEBEAgABBfDAELIAUpAwgiCCAEKAIAIgasVgRAIABBjRxBABBEDAELIAYgCKciB2shBgJAIAJBA0gNACADKQMQIghCgICAgHCDQoCAgIAwUQ0AIAAgBSAIEKQBDQEgBSkDACIIIAatVgRAIABByscAQQAQRAwCCyAIpyEGCyAAIAFBIBBeIgFCgICAgHCDQoCAgIDgAFENAAJAAkAgBC0ABARAIAAQXwwBCyAAQRgQJCICDQELIAAgARAMDAELIAIgAaciAzYCCCAJpyEAIAlCIIinQXVPBEAgACAAKAIAQQFqNgIACyACIAY2AhQgAiAHNgIQIAIgADYCDCAEKAIMIgAgAjYCBCACIARBDGo2AgQgAiAANgIAIAQgAjYCDCADIAI2AiAgASEKCyAFQRBqJAAgCgtaAgF\u002FAX4CQEGw1AQoAgAEQEG01AQoAgAhAgwBC0Gw1AQQ4wUiAjYCAEG01AQgAhDtBCICNgIACyACIAAgABA9Qd7\u002FABCyBSIDIAEQkAMaQbTUBCgCACADEAwLC77HBFEAQYAIC\u002FGOASgpe30AKCl7c3VwZXIoLi4uYXJndW1lbnRzKTt9ACgpIHsKICAgIFtuYXRpdmUgY29kZV0KfQBjYW5ub3QgbWl4ID8\u002FIHdpdGggJiYgb3IgfHwAcHJveHk6IHByb3BlcnR5IG5vdCBwcmVzZW50IGluIHRhcmdldCB3ZXJlIHJldHVybmVkIGJ5IG5vbiBleHRlbnNpYmxlIHByb3h5AHJldm9rZWQgcHJveHkAUHJveHkAYWRkX3Byb3BlcnR5AHByb3h5OiBjYW5ub3Qgc2V0IHByb3BlcnR5AG5vIHNldHRlciBmb3IgcHJvcGVydHkAdmFsdWUgaGFzIG5vIHByb3BlcnR5AGNvdWxkIG5vdCBkZWxldGUgcHJvcGVydHkAcHJveHk6IGR1cGxpY2F0ZSBwcm9wZXJ0eQBKU19EZWZpbmVBdXRvSW5pdFByb3BlcnR5AGhhc093blByb3BlcnR5AHByb3h5OiBpbmNvbnNpc3RlbnQgZGVsZXRlUHJvcGVydHkAcHJveHk6IGluY29uc2lzdGVudCBkZWZpbmVQcm9wZXJ0eQBKU19EZWZpbmVQcm9wZXJ0eQAhbXItPmVtcHR5AGluZmluaXR5AEluZmluaXR5AG91dCBvZiBtZW1vcnkAdW5rbm93biB1bmljb2RlIGdlbmVyYWwgY2F0ZWdvcnkAR2VuZXJhbF9DYXRlZ29yeQBldmVyeQBhbnkAYXBwbHkAJyVzJyBpcyByZWFkLW9ubHkAZXhwZWN0aW5nIGNhdGNoIG9yIGZpbmFsbHkAc3RpY2t5AGJpZ2ludCBhcmUgZm9yYmlkZGVuIGluIEpTT04uc3RyaW5naWZ5AHN1YmFycmF5AGVtcHR5IGFycmF5AG5vbiBpbnRlZ2VyIGluZGV4IGluIHR5cGVkIGFycmF5AG5lZ2F0aXZlIGluZGV4IGluIHR5cGVkIGFycmF5AG91dC1vZi1ib3VuZCBpbmRleCBpbiB0eXBlZCBhcnJheQBjYW5ub3QgY3JlYXRlIG51bWVyaWMgaW5kZXggaW4gdHlwZWQgYXJyYXkAaXNBcnJheQBUeXBlZEFycmF5AGdldERheQBnZXRVVENEYXkAZ3JvdXBCeQBtLT5kZnNfYW5jZXN0b3JfaW5kZXggPD0gbS0+ZGZzX2luZGV4AGpzX2dldF9hdG9tX2luZGV4AGludmFsaWQgYXJyYXkgaW5kZXgASlNfQXRvbUlzQXJyYXlJbmRleABmaW5kTGFzdEluZGV4AGZpbmRJbmRleABpbnZhbGlkIGV4cG9ydCBzeW50YXgAaW52YWxpZCBhc3NpZ25tZW50IHN5bnRheABtYXgAXHUlMDR4AGludmFsaWQgb3Bjb2RlOiBwYz0ldSBvcGNvZGU9MHglMDJ4AC0rICAgMFgweAAtMFgrMFggMFgtMHgrMHggMHgAbGluZSB0ZXJtaW5hdG9yIG5vdCBhbGxvd2VkIGFmdGVyIHRocm93AGJmX3BvdwBub3cAaW50ZWdlciBvdmVyZmxvdwBzdGFjayBvdmVyZmxvdwBtdXN0IGJlIGNhbGxlZCB3aXRoIG5ldwBpc1ZpZXcARGF0YVZpZXcAcmF3ACV1AGNsYXNzIGRlY2xhcmF0aW9ucyBjYW4ndCBhcHBlYXIgaW4gc2luZ2xlLXN0YXRlbWVudCBjb250ZXh0AGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBjYW4ndCBhcHBlYXIgaW4gc2luZ2xlLXN0YXRlbWVudCBjb250ZXh0AGxleGljYWwgZGVjbGFyYXRpb25zIGNhbid0IGFwcGVhciBpbiBzaW5nbGUtc3RhdGVtZW50IGNvbnRleHQAZHVwbGljYXRlIGFyZ3VtZW50IG5hbWVzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dABkdXBsaWNhdGUgcGFyYW1ldGVyIG5hbWVzIG5vdCBhbGxvd2VkIGluIHRoaXMgY29udGV4dABpbXBvcnQubWV0YSBub3Qgc3VwcG9ydGVkIGluIHRoaXMgY29udGV4dABKU19GcmVlQ29udGV4dABKU0NvbnRleHQAanNfbWFwX2l0ZXJhdG9yX25leHQAanNfZ2VuZXJhdG9yX25leHQAanNfYXN5bmNfZ2VuZXJhdG9yX3Jlc3VtZV9uZXh0AHVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0AHR0AGV4cG9ydGVkIHZhcmlhYmxlICclcycgZG9lcyBub3QgZXhpc3QAcHJpdmF0ZSBjbGFzcyBmaWVsZCAnJXMnIGRvZXMgbm90IGV4aXN0AHRlc3QAYXNzaWdubWVudCByZXN0IHByb3BlcnR5IG11c3QgYmUgbGFzdABwdmFsID09IGxhc3QAZmluZExhc3QAYmZfc3FydABzb3J0AGNicnQAdHJpbVN0YXJ0AHBhZFN0YXJ0AHVua25vd24gdW5pY29kZSBzY3JpcHQAU2NyaXB0AGh5cG90AGZyZWVfemVyb19yZWZjb3VudABzdHJfaW5kZXggPT0gbnVtX2tleXNfY291bnQgKyBzdHJfa2V5c19jb3VudABudW1faW5kZXggPT0gbnVtX2tleXNfY291bnQAc3ltX2luZGV4ID09IGF0b21fY291bnQAbGFiZWwgPj0gMCAmJiBsYWJlbCA8IHMtPmxhYmVsX2NvdW50AGxhYjEgPj0gMCAmJiBsYWIxIDwgcy0+bGFiZWxfY291bnQAdmFsIDwgcy0+Y2FwdHVyZV9jb3VudAB2YWwyIDwgcy0+Y2FwdHVyZV9jb3VudABpbnZhbGlkIHJlcGVhdCBjb3VudABpbnZhbGlkIHJlcGV0aXRpb24gY291bnQAZm9udABpbnZhbGlkIGNvZGUgcG9pbnQAZnJvbUNvZGVQb2ludABpbnZhbGlkIGhpbnQAY2Fubm90IGNvbnZlcnQgTmFOIG9yIEluZmluaXR5IHRvIGJpZ2ludABjYW5ub3QgY29udmVydCB0byBiaWdpbnQAYm90aCBvcGVyYW5kcyBtdXN0IGJlIGJpZ2ludABub3QgYSBiaWdpbnQAcHJpdmF0ZSBtZXRob2QgaXMgYWxyZWFkeSBwcmVzZW50AGVuY29kZVVSSUNvbXBvbmVudABkZWNvZGVVUklDb21wb25lbnQAdW5leHBlY3RlZCBlbmQgb2YgY29tbWVudABpbnZhbGlkIHN3aXRjaCBzdGF0ZW1lbnQAQmlnSW50AHBhcnNlSW50AGR1cGxpY2F0ZSBkZWZhdWx0AHNwbGl0AGV4cGVjdGluZyBoZXggZGlnaXQAdHJpbVJpZ2h0AHJlZHVjZVJpZ2h0AHVuc2hpZnQAdHJpbUxlZnQAaW52YWxpZCBvZmZzZXQAaW52YWxpZCBieXRlT2Zmc2V0AGdldFRpbWV6b25lT2Zmc2V0AHJlc29sdmluZyBmdW5jdGlvbiBhbHJlYWR5IHNldABwcm94eTogaW5jb25zaXN0ZW50IHNldABmaW5kX2p1bXBfdGFyZ2V0AGV4cGVjdGluZyB0YXJnZXQAaW52YWxpZCBkZXN0cnVjdHVyaW5nIHRhcmdldABwcm94eTogaW5jb25zaXN0ZW50IGdldABXZWFrU2V0AGNvbnN0cnVjdABKU19GcmVlQXRvbVN0cnVjdAB1c2Ugc3RyaWN0AFJlZmxlY3QAcmVqZWN0AG5vdCBhbiBBc3luY0dlbmVyYXRvciBvYmplY3QAY2Fubm90IGNvbnZlcnQgdG8gb2JqZWN0AGludmFsaWQgYnJhbmQgb24gb2JqZWN0AG9wZXJhbmQgJ3Byb3RvdHlwZScgcHJvcGVydHkgaXMgbm90IGFuIG9iamVjdABpdGVyYXRvciBtdXN0IHJldHVybiBhbiBvYmplY3QAbm90IGEgRGF0ZSBvYmplY3QAbm90IGEgb2JqZWN0AEpTT2JqZWN0AHBhcnNlRmxvYXQAZmxhdABub3RoaW5nIHRvIHJlcGVhdABjb25jYXQAY29kZVBvaW50QXQAY2hhckF0AGNoYXJDb2RlQXQAa2V5cwBwcm94eTogdGFyZ2V0IHByb3BlcnR5IG11c3QgYmUgcHJlc2VudCBpbiBwcm94eSBvd25LZXlzACAgZmFzdCBhcnJheXMAZXhwb3J0ICclcycgaW4gbW9kdWxlICclcycgaXMgYW1iaWd1b3VzAHByaXZhdGUgY2xhc3MgZmllbGQgJyVzJyBhbHJlYWR5IGV4aXN0cwB0b28gbWFueSBhcmd1bWVudHMAVG9vIG1hbnkgY2FsbCBhcmd1bWVudHMAdG9vIG1hbnkgZWxlbWVudHMAICBlbGVtZW50cwBpbnZhbGlkIG51bWJlciBvZiBkaWdpdHMAYmluYXJ5IG9iamVjdHMAaW52YWxpZCBwcm9wZXJ0eSBhY2Nlc3MAanNfb3BfZGVmaW5lX2NsYXNzAGZkLT5ieXRlX2NvZGUuYnVmW2RlZmluZV9jbGFzc19wb3NdID09IE9QX2RlZmluZV9jbGFzcwBfX2dldENsYXNzAHNldEhvdXJzAGdldEhvdXJzAHNldFVUQ0hvdXJzAGdldFVUQ0hvdXJzAGdhdGhlcl9hdmFpbGFibGVfYW5jZXN0b3JzAGdldE93blByb3BlcnR5RGVzY3JpcHRvcnMAd2l0aFJlc29sdmVycwB0b28gbWFueSBpbWJyaWNhdGVkIHF1YW50aWZpZXJzAHVuaWNvZGVfcHJvcF9vcHMAYWNvcwBmb3IgYXdhaXQgaXMgb25seSB2YWxpZCBpbiBhc3luY2hyb25vdXMgZnVuY3Rpb25zAG5ldy50YXJnZXQgb25seSBhbGxvd2VkIHdpdGhpbiBmdW5jdGlvbnMAYnl0ZWNvZGUgZnVuY3Rpb25zAEMgZnVuY3Rpb25zAHByb3h5OiBpbmNvbnNpc3RlbnQgcHJldmVudEV4dGVuc2lvbnMAU2NyaXB0X0V4dGVuc2lvbnMAYXRvbXMAcHJveHk6IHByb3BlcnRpZXMgbXVzdCBiZSBzdHJpbmdzIG9yIHN5bWJvbHMAZ2V0T3duUHJvcGVydHlTeW1ib2xzAHJlc29sdmVfbGFiZWxzAEpTX0V2YWxUaGlzAHN0cmluZ3MAaW52YWxpZCBkZXNjcmlwdG9yIGZsYWdzAGludmFsaWQgcmVndWxhciBleHByZXNzaW9uIGZsYWdzAHZhbHVlcwBzZXRNaW51dGVzAGdldE1pbnV0ZXMAc2V0VVRDTWludXRlcwBnZXRVVENNaW51dGVzAHRvbyBtYW55IGNhcHR1cmVzACAgc2hhcGVzAGdldE93blByb3BlcnR5TmFtZXMAZ2NfZnJlZV9jeWNsZXMAYWRkX2V2YWxfdmFyaWFibGVzAHJlc29sdmVfdmFyaWFibGVzAHRvbyBtYW55IGxvY2FsIHZhcmlhYmxlcwB0b28gbWFueSBjbG9zdXJlIHZhcmlhYmxlcwBjb21wYWN0X3Byb3BlcnRpZXMAICBwcm9wZXJ0aWVzAGRlZmluZVByb3BlcnRpZXMAZW50cmllcwBmcm9tRW50cmllcwB0b28gbWFueSByYW5nZXMAaW5jbHVkZXMAaGFzSW5kaWNlcwBzZXRNaWxsaXNlY29uZHMAZ2V0TWlsbGlzZWNvbmRzAHNldFVUQ01pbGxpc2Vjb25kcwBnZXRVVENNaWxsaXNlY29uZHMAc2V0U2Vjb25kcwBnZXRTZWNvbmRzAHNldFVUQ1NlY29uZHMAZ2V0VVRDU2Vjb25kcwBpdGFsaWNzAGFicwBwcm94eTogaW5jb25zaXN0ZW50IGhhcwAlLipzACAoJXMAc2V0ICVzAGdldCAlcwAgICAgYXQgJXMAbm90IGEgJXMAdW5zdXBwb3J0ZWQga2V5d29yZDogJXMAc3Vic3RyAHByb3h5OiBpbmNvbnNpc3RlbnQgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yAHN1cGVyKCkgaXMgb25seSB2YWxpZCBpbiBhIGRlcml2ZWQgY2xhc3MgY29uc3RydWN0b3IAcGFyZW50IGNsYXNzIG11c3QgYmUgY29uc3RydWN0b3IAbm90IGEgY29uc3RydWN0b3IAQXJyYXkgSXRlcmF0b3IAU2V0IEl0ZXJhdG9yAE1hcCBJdGVyYXRvcgBSZWdFeHAgU3RyaW5nIEl0ZXJhdG9yAG5vdCBhbiBBc3luYy1mcm9tLVN5bmMgSXRlcmF0b3IAY2Fubm90IGludm9rZSBhIHJ1bm5pbmcgZ2VuZXJhdG9yAG5vdCBhIGdlbmVyYXRvcgBBc3luY0dlbmVyYXRvcgBzeW50YXggZXJyb3IAU3ludGF4RXJyb3IARXZhbEVycm9yAEludGVybmFsRXJyb3IAQWdncmVnYXRlRXJyb3IAVHlwZUVycm9yAFJhbmdlRXJyb3IAUmVmZXJlbmNlRXJyb3IAVVJJRXJyb3IAZmxvb3IAZm9udGNvbG9yAGFuY2hvcgBmb3IAa2V5Rm9yAGV4cGVjdGluZyBzdXJyb2dhdGUgcGFpcgBhIGRlY2xhcmF0aW9uIGluIHRoZSBoZWFkIG9mIGEgZm9yLSVzIGxvb3AgY2FuJ3QgaGF2ZSBhbiBpbml0aWFsaXplcgAnYXJndW1lbnRzJyBpZGVudGlmaWVyIGlzIG5vdCBhbGxvd2VkIGluIGNsYXNzIGZpZWxkIGluaXRpYWxpemVyAGludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgZ2V0dGVyIG9yIHNldHRlcgBpbnZhbGlkIHNldHRlcgBpbnZhbGlkIGdldHRlcgBmaWx0ZXIAbWlzc2luZyBmb3JtYWwgcGFyYW1ldGVyACJ1c2Ugc3RyaWN0IiBub3QgYWxsb3dlZCBpbiBmdW5jdGlvbiB3aXRoIGRlZmF1bHQgb3IgZGVzdHJ1Y3R1cmluZyBwYXJhbWV0ZXIAaW52YWxpZCBjaGFyYWN0ZXIAdW5leHBlY3RlZCBjaGFyYWN0ZXIAcHJpdmF0ZSBjbGFzcyBmaWVsZCBmb3JiaWRkZW4gYWZ0ZXIgc3VwZXIAaW52YWxpZCByZWRlZmluaXRpb24gb2YgbGV4aWNhbCBpZGVudGlmaWVyACdsZXQnIGlzIG5vdCBhIHZhbGlkIGxleGljYWwgaWRlbnRpZmllcgBpbnZhbGlkIHJlZGVmaW5pdGlvbiBvZiBnbG9iYWwgaWRlbnRpZmllcgB5aWVsZCBpcyBhIHJlc2VydmVkIGlkZW50aWZpZXIAJyVzJyBpcyBhIHJlc2VydmVkIGlkZW50aWZpZXIAb3RoZXIAYXRvbTFfaXNfaW50ZWdlciAmJiBhdG9tMl9pc19pbnRlZ2VyAGNhbm5vdCBjb252ZXJ0IHRvIGJpZ2ludDogbm90IGFuIGludGVnZXIAaXNJbnRlZ2VyAGlzU2FmZUludGVnZXIAYnVmZmVyAFNoYXJlZEFycmF5QnVmZmVyAGNhbm5vdCB1c2UgaWRlbnRpY2FsIEFycmF5QnVmZmVyAGNhbm5vdCBjb252ZXJ0IGJpZ2ludCB0byBudW1iZXIAY2Fubm90IGNvbnZlcnQgc3ltYm9sIHRvIG51bWJlcgBub3QgYSBudW1iZXIAbGluZU51bWJlcgBtYWxmb3JtZWQgdW5pY29kZSBjaGFyAGNsZWFyAHNldFllYXIAZ2V0WWVhcgBzZXRGdWxsWWVhcgBnZXRGdWxsWWVhcgBzZXRVVENGdWxsWWVhcgBnZXRVVENGdWxsWWVhcgBxICE9IHIAdW5leHBlY3RlZCBsaW5lIHRlcm1pbmF0b3IgaW4gcmVnZXhwAHVuZXhwZWN0ZWQgZW5kIG9mIHJlZ2V4cABSZWdFeHAAc3VwAGludmFsaWQgZ3JvdXAAcG9wAGNvbnRpbnVlIG11c3QgYmUgaW5zaWRlIGxvb3AAYmZfbG9naWNfb3AAZHVtcABudW1fa2V5c19jbXAAdXNlIHN0cmlwAG1hcABmbGF0TWFwAFdlYWtNYXAAZXhwZWN0aW5nICd7JyBhZnRlciBccABsb2cxcABkaXZpc2lvbiBieSB6ZXJvADBvAGhhc093bgByZXR1cm4AcHJvbWlzZSBzZWxmIHJlc29sdXRpb24Ab3V0IG9mIG1lbW9yeSBpbiByZWdleHAgZXhlY3V0aW9uAGRlc2NyaXB0aW9uACFtLT5ldmFsX2hhc19leGNlcHRpb24AIW1vZHVsZS0+ZXZhbF9oYXNfZXhjZXB0aW9uAHByb3h5OiBkZWZpbmVQcm9wZXJ0eSBleGNlcHRpb24AanNfYXN5bmNfZ2VuZXJhdG9yX3Jlc29sdmVfZnVuY3Rpb24AanNfY3JlYXRlX2Z1bmN0aW9uAHNldC9hZGQgaXMgbm90IGEgZnVuY3Rpb24AcmV0dXJuIG5vdCBpbiBhIGZ1bmN0aW9uAEFzeW5jR2VuZXJhdG9yRnVuY3Rpb24AY2FsbEV4dGVybmFsRnVuY3Rpb24AQXN5bmNGdW5jdGlvbgBqc19pbm5lcl9tb2R1bGVfZXZhbHVhdGlvbgAhbS0+YXN5bmNfZXZhbHVhdGlvbgBtb2R1bGUtPmFzeW5jX2V2YWx1YXRpb24AaW52YWxpZCBvcGVyYXRpb24AdW5zdXBwb3J0ZWQgb3BlcmF0aW9uAGF3YWl0IGluIGRlZmF1bHQgZXhwcmVzc2lvbgB5aWVsZCBpbiBkZWZhdWx0IGV4cHJlc3Npb24AaW52YWxpZCBkZWNpbWFsIGVzY2FwZSBpbiByZWd1bGFyIGV4cHJlc3Npb24AYmFjayByZWZlcmVuY2Ugb3V0IG9mIHJhbmdlIGluIHJlZ3VsYXIgZXhwcmVzc2lvbgBpbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZSBpbiByZWd1bGFyIGV4cHJlc3Npb24AZXhwZWN0ZWQgJ29mJyBvciAnaW4nIGluIGZvciBjb250cm9sIGV4cHJlc3Npb24AdG9vIGNvbXBsaWNhdGVkIGRlc3RydWN0dXJpbmcgZXhwcmVzc2lvbgBleHBlY3RlZCAnfScgYWZ0ZXIgdGVtcGxhdGUgZXhwcmVzc2lvbgB0b1ByZWNpc2lvbgBhc2luAGpvaW4AbWluAGNvcHlXaXRoaW4AdGVtcGxhdGUgbGl0ZXJhbCBjYW5ub3QgYXBwZWFyIGluIGFuIG9wdGlvbmFsIGNoYWluAGNpcmN1bGFyIHByb3RvdHlwZSBjaGFpbgBhc3NpZ24AIXktPnNpZ24AaXNGcm96ZW4AKHBvcyArIGxlbikgPD0gYmNfYnVmX2xlbgB1bmV4cGVjdGVkIGVsbGlwc2lzIHRva2VuAHRoZW4Ac2V0dGVyIGlzIGZvcmJpZGRlbgBudWxsIG9yIHVuZGVmaW5lZCBhcmUgZm9yYmlkZGVuAGF0YW4AbmFuAG5vdCBhIGJvb2xlYW4AQm9vbGVhbgBnY19zY2FuAGJhZCBub3JtYWxpemF0aW9uIGZvcm0ASlNfTmV3U3ltYm9sRnJvbUF0b20AZnJvbQByYW5kb20AdHJpbQBiZl9kaXZyZW0AbS0+Y3ljbGVfcm9vdCA9PSBtAGltdWwAbm90IGEgc3ltYm9sAFN5bWJvbABSZWdFeHAgZXhlYyBtZXRob2QgbXVzdCByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwAcGFyZW50IHByb3RvdHlwZSBtdXN0IGJlIGFuIG9iamVjdCBvciBudWxsAGNhbm5vdCBzZXQgcHJvcGVydHkgJyVzJyBvZiBudWxsAGNhbm5vdCByZWFkIHByb3BlcnR5ICclcycgb2YgbnVsbABOdWxsAGZpbGwAbmV3IEFycmF5QnVmZmVyIGlzIHRvbyBzbWFsbABUeXBlZEFycmF5IGxlbmd0aCBpcyB0b28gc21hbGwAY2FsbABkb3RBbGwAbWF0Y2hBbGwAcmVwbGFjZUFsbABjZWlsAHVwZGF0ZV9sYWJlbABiY19idWZbcG9zXSA9PSBPUF9sYWJlbABldmFsAGludmFsaWQgYmlnaW50IGxpdGVyYWwAaW52YWxpZCBudW1iZXIgbGl0ZXJhbABtYWxmb3JtZWQgZXNjYXBlIHNlcXVlbmNlIGluIHN0cmluZyBsaXRlcmFsAGJmX2V4cF9pbnRlcm5hbABiZl9sb2dfaW50ZXJuYWwAYmZfZnRvYV9pbnRlcm5hbABKU19TZXRQcm9wZXJ0eUludGVybmFsAEpTX0dldE93blByb3BlcnR5TmFtZXNJbnRlcm5hbABfX0pTX0V2YWxJbnRlcm5hbAB0b0V4cG9uZW50aWFsAHNlYWwAZ2xvYmFsAGJsaW5rAHJldHVybiBpbiBhIHN0YXRpYyBpbml0aWFsaXplciBibG9jawBzdGFjawBscmVfZXhlY19iYWNrdHJhY2sAcy0+aXNfd2VhawBiZl9wb3dfdWkAc2V0TW9udGgAZ2V0TW9udGgAc2V0VVRDTW9udGgAZ2V0VVRDTW9udGgAaW52YWxpZCBrZXl3b3JkOiB3aXRoAHN0YXJ0c1dpdGgAZW5kc1dpdGgAcHJvcCA9PSBKU19BVE9NX2xlbmd0aABpbnZhbGlkIGFycmF5IGxlbmd0aABpbnZhbGlkIGFycmF5IGJ1ZmZlciBsZW5ndGgAaW52YWxpZCBsZW5ndGgAaW52YWxpZCBieXRlTGVuZ3RoAE1hdGgAcHVzaABhY29zaABKU19SZXNpemVBdG9tSGFzaABhc2luaABhdGFuaABicmVhayBtdXN0IGJlIGluc2lkZSBsb29wIG9yIHN3aXRjaABtYXRjaABuaXBfY2F0Y2gAc2VhcmNoAGZvckVhY2gAYmZfbG9nAEFycmF5IHRvbyBsb25nAHN0cmluZyB0b28gbG9uZwBBcnJheSBsb28gbG9uZwBzdWJzdHJpbmcAY2Fubm90IGNvbnZlcnQgc3ltYm9sIHRvIHN0cmluZwB1bmV4cGVjdGVkIGVuZCBvZiBzdHJpbmcAbm90IGEgc3RyaW5nAGludmFsaWQgY2hhcmFjdGVyIGluIGEgSlNPTiBzdHJpbmcAdG9TdHJpbmcAdG9EYXRlU3RyaW5nAHRvTG9jYWxlRGF0ZVN0cmluZwB0b1RpbWVTdHJpbmcAdG9Mb2NhbGVUaW1lU3RyaW5nAHRvTG9jYWxlU3RyaW5nAHRvR01UU3RyaW5nAEpTU3RyaW5nAHRvSVNPU3RyaW5nAHRvVVRDU3RyaW5nAGpzX2lubmVyX21vZHVsZV9saW5raW5nAGR1cGxpY2F0ZSBpbXBvcnQgYmluZGluZwBpbnZhbGlkIGltcG9ydCBiaW5kaW5nAHByb21pc2UgaXMgcGVuZGluZwBiaWcAcmVnZXhwIG11c3QgaGF2ZSB0aGUgJ2cnIGZsYWcAb2YAaW5mAEluZgBkaWZmID09IChpbnQ4X3QpZGlmZgBkaWZmID09IChpbnQxNl90KWRpZmYAaHJlZgBnY19kZWNyZWYAZnJlZV92YXJfcmVmAG9wdGltaXplX3Njb3BlX21ha2VfZ2xvYmFsX3JlZgByZXNldF93ZWFrX3JlZgBkZWxldGVfd2Vha19yZWYAb3B0aW1pemVfc2NvcGVfbWFrZV9yZWYAaW5kZXhPZgBsYXN0SW5kZXhPZgB2YWx1ZU9mAHNldFByb3RvdHlwZU9mAGdldFByb3RvdHlwZU9mAGlzUHJvdG90eXBlT2YAJS4qZgBmb250c2l6ZQBuZXdfc2l6ZSA8PSBzaC0+cHJvcF9zaXplAGRlc2NyIDwgcnQtPmF0b21fc2l6ZQBhdG9tIDwgcnQtPmF0b21fc2l6ZQBjb21wdXRlX3N0YWNrX3NpemUAbiA8IGJ1Zl9zaXplAG5vcm1hbGl6ZQBjcl9yZWdleHBfY2Fub25pY2FsaXplAGZyZWV6ZQByZXNvbHZlAHRvUHJpbWl0aXZlAHB1dF9sdmFsdWUAdW5rbm93biB1bmljb2RlIHByb3BlcnR5IHZhbHVlAHJlc3QgZWxlbWVudCBjYW5ub3QgaGF2ZSBhIGRlZmF1bHQgdmFsdWUAaW52YWxpZCByZXQgdmFsdWUAX19KU19BdG9tVG9WYWx1ZQBfX3F1b3RlAGlzRmluaXRlAGRlbGV0ZQBjcmVhdGUAc2V0RGF0ZQBnZXREYXRlAHNldFVUQ0RhdGUAZ2V0VVRDRGF0ZQBJbnZhbGlkIERhdGUAcmV2ZXJzZQBwYXJzZQBwcm94eSBwcmV2ZW50RXh0ZW5zaW9ucyBoYW5kbGVyIHJldHVybmVkIGZhbHNlAG1vZHVsZSBuYW1lc3BhY2UgcHJvcGVydGllcyBoYXZlIHdyaXRhYmxlID0gZmFsc2UAUHJvbWlzZQB0b0xvd2VyQ2FzZQB0b0xvY2FsZUxvd2VyQ2FzZQB0b1VwcGVyQ2FzZQB0b0xvY2FsZVVwcGVyQ2FzZQBpZ25vcmVDYXNlAGxvY2FsZUNvbXBhcmUAcHJveHk6IGluY29uc2lzdGVudCBwcm90b3R5cGUAcHJveHk6IGJhZCBwcm90b3R5cGUAbm90IGEgcHJvdG90eXBlAGludmFsaWQgb2JqZWN0IHR5cGUAdW5lc2NhcGUAbm9uZQByZXN0IGVsZW1lbnQgbXVzdCBiZSB0aGUgbGFzdCBvbmUAbXVsdGlsaW5lACAgcGMybGluZQBhc3luY19mdW5jX3Jlc3VtZQBzb21lAEpTX0ZyZWVSdW50aW1lAEpTUnVudGltZQBzZXRUaW1lAGdldFRpbWUAYXN5bmNfZnVuY19mcmVlX2ZyYW1lAHNldF9vYmplY3RfbmFtZQBleHBlY3RpbmcgcHJvcGVydHkgbmFtZQB1bmtub3duIHVuaWNvZGUgcHJvcGVydHkgbmFtZQBpbnZhbGlkIHByb3BlcnR5IG5hbWUAZHVwbGljYXRlIF9fcHJvdG9fXyBwcm9wZXJ0eSBuYW1lAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIHBhcmFtZXRlciBuYW1lAGV4cGVjdGluZyBncm91cCBuYW1lAGR1cGxpY2F0ZSBncm91cCBuYW1lAGludmFsaWQgZ3JvdXAgbmFtZQBkdXBsaWNhdGUgbGFiZWwgbmFtZQBpbnZhbGlkIGZpcnN0IGNoYXJhY3RlciBvZiBwcml2YXRlIG5hbWUAaW52YWxpZCBsZXhpY2FsIHZhcmlhYmxlIG5hbWUAaW52YWxpZCBtZXRob2QgbmFtZQBleHBlY3RpbmcgZmllbGQgbmFtZQBpbnZhbGlkIGZpZWxkIG5hbWUAY2xhc3Mgc3RhdGVtZW50IHJlcXVpcmVzIGEgbmFtZQBmaWxlTmFtZQBqc19saW5rX21vZHVsZQBqc19ldmFsdWF0ZV9tb2R1bGUAbW9kdWxlLT5jeWNsZV9yb290ID09IG1vZHVsZQBjb21waWxlAG9iamVjdCBpcyBub3QgZXh0ZW5zaWJsZQBwcm94eTogaW5jb25zaXN0ZW50IGlzRXh0ZW5zaWJsZQBjYW5ub3QgaGF2ZSBzZXR0ZXIvZ2V0dGVyIGFuZCB2YWx1ZSBvciB3cml0YWJsZQBwcm9wZXJ0eSBpcyBub3QgY29uZmlndXJhYmxlAHZhbHVlIGlzIG5vdCBpdGVyYWJsZQBwcm9wZXJ0eUlzRW51bWVyYWJsZQBtaXNzaW5nIGluaXRpYWxpemVyIGZvciBjb25zdCB2YXJpYWJsZQBsZXhpY2FsIHZhcmlhYmxlAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIGEgdmFyaWFibGUAcmV2b2NhYmxlAHN0cmlrZQBtcF9kaXZub3JtX2xhcmdlAGludmFsaWQgY2xhc3MgcmFuZ2UAbWVzc2FnZQBpbnZhbGlkIGx2YWx1ZSBpbiBzdHJpY3QgbW9kZQBpbnZhbGlkIHZhcmlhYmxlIG5hbWUgaW4gc3RyaWN0IG1vZGUAY2Fubm90IGRlbGV0ZSBhIGRpcmVjdCByZWZlcmVuY2UgaW4gc3RyaWN0IG1vZGUAb2N0YWwgZXNjYXBlIHNlcXVlbmNlcyBhcmUgbm90IGFsbG93ZWQgaW4gc3RyaWN0IG1vZGUAb2N0YWwgbGl0ZXJhbHMgYXJlIGRlcHJlY2F0ZWQgaW4gc3RyaWN0IG1vZGUAdW5pY29kZQAgIGJ5dGVjb2RlAEpTRnVuY3Rpb25CeXRlY29kZQBza2lwX2RlYWRfY29kZQBpbnZhbGlkIGFyZ3VtZW50IG5hbWUgaW4gc3RyaWN0IGNvZGUAaW52YWxpZCBmdW5jdGlvbiBuYW1lIGluIHN0cmljdCBjb2RlAGludmFsaWQgcmVkZWZpbml0aW9uIG9mIGdsb2JhbCBpZGVudGlmaWVyIGluIG1vZHVsZSBjb2RlAGltcG9ydC5tZXRhIG9ubHkgdmFsaWQgaW4gbW9kdWxlIGNvZGUAZnJvbUNoYXJDb2RlAGludmFsaWQgZm9yIGluL29mIGxlZnQgaGFuZC1zaWRlAGludmFsaWQgYXNzaWdubWVudCBsZWZ0LWhhbmQgc2lkZQByZWR1Y2UAc291cmNlACd0aGlzJyBjYW4gYmUgaW5pdGlhbGl6ZWQgb25seSBvbmNlAHByb3BlcnR5IGNvbnN0cnVjdG9yIGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UAaW52YWxpZCBVVEYtOCBzZXF1ZW5jZQBjaXJjdWxhciByZWZlcmVuY2UAc2xpY2UAc3BsaWNlAHJhY2UAcmVwbGFjZQAlKy4qZQB1bmV4cGVjdGVkICdhd2FpdCcga2V5d29yZAB1bmV4cGVjdGVkICd5aWVsZCcga2V5d29yZABtYXBfZGVjcmVmX3JlY29yZABpdGVyYXRvciBkb2VzIG5vdCBoYXZlIGEgdGhyb3cgbWV0aG9kAG9iamVjdCBuZWVkcyB0b0lTT1N0cmluZyBtZXRob2QAJ3N1cGVyJyBpcyBvbmx5IHZhbGlkIGluIGEgbWV0aG9kAGZyb3VuZABfX2JmX3JvdW5kAGJyZWFrL2NvbnRpbnVlIGxhYmVsIG5vdCBmb3VuZABvdXQgb2YgYm91bmQAZmluZABiaW5kAGludmFsaWQgaW5kZXggZm9yIGFwcGVuZABleHRyYW5lb3VzIGNoYXJhY3RlcnMgYXQgdGhlIGVuZAB1bmV4cGVjdGVkIGRhdGEgYXQgdGhlIGVuZAB1bmV4cGVjdGVkIGVuZABpbnZhbGlkIGluY3JlbWVudC9kZWNyZW1lbnQgb3BlcmFuZABpbnZhbGlkICdpbnN0YW5jZW9mJyByaWdodCBvcGVyYW5kAGludmFsaWQgJ2luJyBvcGVyYW5kAHRyaW1FbmQAcGFkRW5kAGJvbGQAJWxsZABnY19kZWNyZWZfY2hpbGQAcmVzb2x2ZV9zY29wZV9wcml2YXRlX2ZpZWxkAGNhbm5vdCBkZWxldGUgYSBwcml2YXRlIGNsYXNzIGZpZWxkAGV4cGVjdGluZyA8YnJhbmQ+IHByaXZhdGUgZmllbGQAJXMgaXMgbm90IGluaXRpYWxpemVkAGZpeGVkAHRvRml4ZWQAc2V0X29iamVjdF9uYW1lX2NvbXB1dGVkAHJlZ2V4IG5vdCBzdXBwb3J0ZWQAZXZhbCBpcyBub3Qgc3VwcG9ydGVkAFJlZ0V4cCBhcmUgbm90IHN1cHBvcnRlZAB0b1NvcnRlZABpbnRlcnJ1cHRlZAAhcy0+aXNfY29tcGxldGVkACVzIG9iamVjdCBleHBlY3RlZABpZGVudGlmaWVyIGV4cGVjdGVkAGJ5dGVjb2RlIGZ1bmN0aW9uIGV4cGVjdGVkAHN0cmluZyBleHBlY3RlZABmcm9tIGNsYXVzZSBleHBlY3RlZABmdW5jdGlvbiBuYW1lIGV4cGVjdGVkAHZhcmlhYmxlIG5hbWUgZXhwZWN0ZWQAbWV0YSBleHBlY3RlZABqc19hc3luY19tb2R1bGVfZXhlY3V0aW9uX3JlamVjdGVkAGpzX3NldF9tb2R1bGVfZXZhbHVhdGVkAG1lbW9yeSBhbGxvY2F0ZWQAbWVtb3J5IHVzZWQAdG9SZXZlcnNlZABkZXJpdmVkIGNsYXNzIGNvbnN0cnVjdG9yIG11c3QgcmV0dXJuIGFuIG9iamVjdCBvciB1bmRlZmluZWQAY2Fubm90IHNldCBwcm9wZXJ0eSAnJXMnIG9mIHVuZGVmaW5lZABjYW5ub3QgcmVhZCBwcm9wZXJ0eSAnJXMnIG9mIHVuZGVmaW5lZABmbGFncyBtdXN0IGJlIHVuZGVmaW5lZABVbmRlZmluZWQAcHJpdmF0ZSBjbGFzcyBmaWVsZCBpcyBhbHJlYWR5IGRlZmluZWQAJyVzJyBpcyBub3QgZGVmaW5lZABncm91cCBuYW1lIG5vdCBkZWZpbmVkAGlzV2VsbEZvcm1lZAB0b1dlbGxGb3JtZWQAYWxsU2V0dGxlZABqc19hc3luY19tb2R1bGVfZXhlY3V0aW9uX2Z1bGZpbGxlZABjYW5ub3QgYmUgY2FsbGVkAGlzU2VhbGVkACFzaC0+aXNfaGFzaGVkAEFycmF5QnVmZmVyIGlzIGRldGFjaGVkAGpzX2FycmF5X3RvU3BsaWNlZABhZGQAJSswN2QAJTA0ZAAlMDJkJTAyZABwJStkACVjJStkACUwMmQvJTAyZC8lMCpkACUuM3MgJS4zcyAlMDJkICUwKmQAcCVkACVjJWQAOiVkAGludmFsaWQgdGhyb3cgdmFyIHR5cGUgJWQAc2MAanNfZGVmX21hbGxvYwB0cnVuYwBnYwBleGVjAGJmX2ludGVnZXJfdG9fcmFkaXhfcmVjAC90bXAvcXVpY2tqcy9xdWlja2pzLmMAL3RtcC9xdWlja2pzL2xpYnJlZ2V4cC5jAC90bXAvcXVpY2tqcy9saWJiZi5jAC90bXAvcXVpY2tqcy9saWJ1bmljb2RlLmMAc3ViAHByb21pc2VfcmVhY3Rpb25fam9iAGpzX3Byb21pc2VfcmVzb2x2ZV90aGVuYWJsZV9qb2IAMGIAciAhPSBhICYmIHIgIT0gYgBxICE9IGEgJiYgcSAhPSBiAHJ3YQByICE9IGEAX19sb29rdXBTZXR0ZXJfXwBfX2RlZmluZVNldHRlcl9fAF9fbG9va3VwR2V0dGVyX18AX19kZWZpbmVHZXR0ZXJfXwBfX3Byb3RvX18AW1N5bWJvbC5zcGxpdF0AW1N5bWJvbC5zcGVjaWVzXQBbU3ltYm9sLml0ZXJhdG9yXQBbU3ltYm9sLmFzeW5jSXRlcmF0b3JdAFtTeW1ib2wubWF0Y2hBbGxdAFtTeW1ib2wubWF0Y2hdAFtTeW1ib2wuc2VhcmNoXQBbU3ltYm9sLnRvU3RyaW5nVGFnXQBbU3ltYm9sLnRvUHJpbWl0aXZlXQBbdW5zdXBwb3J0ZWQgdHlwZV0AW2Z1bmN0aW9uIGJ5dGVjb2RlXQBbU3ltYm9sLmhhc0luc3RhbmNlXQBbU3ltYm9sLnJlcGxhY2VdAFsAJTAyZDolMDJkOiUwMmQuJTAzZFoAUE9TSVRJVkVfSU5GSU5JVFkATkVHQVRJVkVfSU5GSU5JVFkAcC0+Y2xhc3NfaWQgPT0gSlNfQ0xBU1NfQVJSQVkAc3RhY2tfbGVuIDwgUE9QX1NUQUNLX0xFTl9NQVgALSUwMmQtJTAyZFQASlNfQXRvbUdldFN0clJUAG9wY29kZSA8IFJFT1BfQ09VTlQASlNfVkFMVUVfR0VUX1RBRyhmdW5jX3JldCkgPT0gSlNfVEFHX0lOVABCWVRFU19QRVJfRUxFTUVOVAAlMDJkOiUwMmQ6JTAyZCBHTVQASlNfVkFMVUVfR0VUX1RBRyhzZi0+Y3VyX2Z1bmMpID09IEpTX1RBR19PQkpFQ1QAdmFyX2tpbmQgPT0gSlNfVkFSX1BSSVZBVEVfU0VUVEVSAE1BWF9TQUZFX0lOVEVHRVIATUlOX1NBRkVfSU5URUdFUgBhc1VpbnROAGFzSW50TgBpc05hTgBEYXRlIHZhbHVlIGlzIE5hTgB0b0pTT04ARVBTSUxPTgBwLT5nY19vYmpfdHlwZSA9PSBKU19HQ19PQkpfVFlQRV9KU19PQkpFQ1QgfHwgcC0+Z2Nfb2JqX3R5cGUgPT0gSlNfR0NfT0JKX1RZUEVfRlVOQ1RJT05fQllURUNPREUgfHwgcC0+Z2Nfb2JqX3R5cGUgPT0gSlNfR0NfT0JKX1RZUEVfQVNZTkNfRlVOQ1RJT04ATkFOACUwMmQ6JTAyZDolMDJkICVjTQBzdGFja190b3AgPT0gTlVMTABzLT5sYWJlbF9zbG90c1tsYWJlbF0uZmlyc3RfcmVsb2MgPT0gTlVMTABsYWJlbF9zbG90c1tpXS5maXJzdF9yZWxvYyA9PSBOVUxMAHBycyAhPSBOVUxMAHNmLT5jdXJfc3AgIT0gTlVMTABzZiAhPSBOVUxMAG1yMSAhPSBOVUxMAHZhcl9raW5kICE9IEpTX1ZBUl9OT1JNQUwAYi0+ZnVuY19raW5kID09IEpTX0ZVTkNfTk9STUFMAGVuY29kZVVSSQBkZWNvZGVVUkkAUEkAc3BlY2lhbCA9PSBQVVRfTFZBTFVFX05PS0VFUCB8fCBzcGVjaWFsID09IFBVVF9MVkFMVUVfTk9LRUVQX0RFUFRIAHMtPnN0YXRlID09IEpTX0FTWU5DX0dFTkVSQVRPUl9TVEFURV9FWEVDVVRJTkcAbTEtPnN0YXR1cyA9PSBKU19NT0RVTEVfU1RBVFVTX0VWQUxVQVRJTkcAbTEtPnN0YXR1cyA9PSBKU19NT0RVTEVfU1RBVFVTX0xJTktJTkcAcHJlYyAhPSBCRl9QUkVDX0lORgBwcmVjMSAhPSBCRl9QUkVDX0lORgAwMTIzNDU2Nzg5QUJDREVGAFNJWkUATUFYX1ZBTFVFAE1JTl9WQUxVRQBOQU1FAGV2YWxfdHlwZSA9PSBKU19FVkFMX1RZUEVfR0xPQkFMIHx8IGV2YWxfdHlwZSA9PSBKU19FVkFMX1RZUEVfTU9EVUxFAExPRzJFAExPRzEwRQBzLT5zdGF0ZSA9PSBKU19BU1lOQ19HRU5FUkFUT1JfU1RBVEVfQVdBSVRJTkdfUkVUVVJOIHx8IHMtPnN0YXRlID09IEpTX0FTWU5DX0dFTkVSQVRPUl9TVEFURV9DT01QTEVURUQAbS0+c3RhdHVzID09IEpTX01PRFVMRV9TVEFUVVNfVU5MSU5LRUQgfHwgbS0+c3RhdHVzID09IEpTX01PRFVMRV9TVEFUVVNfTElOS0VEIHx8IG0tPnN0YXR1cyA9PSBKU19NT0RVTEVfU1RBVFVTX0VWQUxVQVRJTkdfQVNZTkMgfHwgbS0+c3RhdHVzID09IEpTX01PRFVMRV9TVEFUVVNfRVZBTFVBVEVEAG0xLT5zdGF0dXMgPT0gSlNfTU9EVUxFX1NUQVRVU19FVkFMVUFUSU5HIHx8IG0xLT5zdGF0dXMgPT0gSlNfTU9EVUxFX1NUQVRVU19FVkFMVUFUSU5HX0FTWU5DIHx8IG0xLT5zdGF0dXMgPT0gSlNfTU9EVUxFX1NUQVRVU19FVkFMVUFURUQAbTEtPnN0YXR1cyA9PSBKU19NT0RVTEVfU1RBVFVTX0xJTktJTkcgfHwgbTEtPnN0YXR1cyA9PSBKU19NT0RVTEVfU1RBVFVTX0xJTktFRCB8fCBtMS0+c3RhdHVzID09IEpTX01PRFVMRV9TVEFUVVNfRVZBTFVBVElOR19BU1lOQyB8fCBtMS0+c3RhdHVzID09IEpTX01PRFVMRV9TVEFUVVNfRVZBTFVBVEVEAG0tPnN0YXR1cyA9PSBKU19NT0RVTEVfU1RBVFVTX0xJTktFRABtLT5zdGF0dXMgPT0gSlNfTU9EVUxFX1NUQVRVU19VTkxJTktFRABVVEMAbS0+c3RhdHVzID09IEpTX01PRFVMRV9TVEFUVVNfRVZBTFVBVElOR19BU1lOQwBtb2R1bGUtPnN0YXR1cyA9PSBKU19NT0RVTEVfU1RBVFVTX0VWQUxVQVRJTkdfQVNZTkMAPGlucHV0PgA8aW5pdFNjcmlwdD4APGV2YWxTY3JpcHQ+ADxzZXQ+ADxhbm9ueW1vdXM+ADxjb21tRnVuPgA8Y2FsbEV4dGVybmFsRnVuY3Rpb24+ADxudWxsPgBiaWdpbnQgb3BlcmFuZHMgYXJlIGZvcmJpZGRlbiBmb3IgPj4+ACZxdW90OwBzZXRVaW50OABnZXRVaW50OABzZXRJbnQ4AGdldEludDgAbWFsZm9ybWVkIFVURi04AHJhZGl4IG11c3QgYmUgYmV0d2VlbiAyIGFuZCAzNgBzZXRVaW50MTYAZ2V0VWludDE2AHNldEludDE2AGdldEludDE2AGFyZ2MgPT0gNQBzZXRCaWdVaW50NjQAZ2V0QmlnVWludDY0AHNldEJpZ0ludDY0AGdldEJpZ0ludDY0AHNldEZsb2F0NjQAZ2V0RmxvYXQ2NABhcmdjID09IDMAYXRhbjIAbG9nMgBTUVJUMV8yAFNRUlQyAExOMgBjbHozMgBzZXRVaW50MzIAZ2V0VWludDMyAHNldEludDMyAGdldEludDMyAHNldEZsb2F0MzIAZ2V0RmxvYXQzMgBzdGFja19sZW4gPj0gMgBKU19BdG9tSXNOdW1lcmljSW5kZXgxAGpzX2ZjdnQxAEpTX0NvbXBhY3RCaWdJbnQxAGV4cG0xAHIgIT0gYTEgJiYgciAhPSBiMQBscy0+YWRkciA9PSAtMQBucSA+PSAxAHN0YWNrX2xlbiA+PSAxAHAtPmhlYWRlci5yZWZfY291bnQgPT0gMQBwLT5zaGFwZS0+aGVhZGVyLnJlZl9jb3VudCA9PSAxAHN0YWNrX2xlbiA9PSAxAGpzX2ZyZWVfc2hhcGUwAGxvZzEwAExOMTAAcC0+cmVmX2NvdW50ID4gMAB2YXJfcmVmLT5oZWFkZXIucmVmX2NvdW50ID4gMABtLT5wZW5kaW5nX2FzeW5jX2RlcGVuZGVuY2llcyA+IDAAc3RhY2tfc2l6ZSA+IDAAY3Bvb2xfaWR4ID49IDAAcnQtPmF0b21fY291bnQgPj0gMABscy0+cmVmX2NvdW50ID49IDAAcy0+aXNfZXZhbCB8fCBzLT5jbG9zdXJlX3Zhcl9jb3VudCA9PSAwAHAtPnJlZl9jb3VudCA9PSAwAGN0eC0+aGVhZGVyLnJlZl9jb3VudCA9PSAwAHNoLT5oZWFkZXIucmVmX2NvdW50ID09IDAAcC0+bWFyayA9PSAwAChwci0+dS5pbml0LnJlYWxtX2FuZF9pZCAmIDMpID09IDAAKG5ld19oYXNoX3NpemUgJiAobmV3X2hhc2hfc2l6ZSAtIDEpKSA9PSAwAGkgIT0gMABzaXplICE9IDAAXiRcLiorPygpW117fXwvADwvADAuAG1pc3NpbmcgYmluZGluZyBwYXR0ZXJuLi4uAGJpZ2ludCBhcmd1bWVudCB3aXRoIHVuYXJ5ICsAYXN5bmMgZnVuY3Rpb24gKgAKfSkAbGlzdF9lbXB0eSgmcnQtPmdjX29ial9saXN0KQBqID09IChzaC0+cHJvcF9jb3VudCAtIHNoLT5kZWxldGVkX3Byb3BfY291bnQpACFfX0pTX0F0b21Jc1RhZ2dlZEludChkZXNjcikAIWF0b21faXNfZnJlZShwKQAobnVsbCkAIChuYXRpdmUpAGpzX2NsYXNzX2hhc19ieXRlY29kZShwLT5jbGFzc19pZCkAbmlwX2NhdGNoOiBubyBjYXRjaCBvcCAocGM9JWQpAGluY29uc2lzdGVudCBjYXRjaCBwb3NpdGlvbjogJWQgJWQgKHBjPSVkKQBpbmNvbnNpc3RlbnQgc3RhY2sgc2l6ZTogJWQgJWQgKHBjPSVkKQBieXRlY29kZSBidWZmZXIgb3ZlcmZsb3cgKG9wPSVkLCBwYz0lZCkAc3RhY2sgb3ZlcmZsb3cgKG9wPSVkLCBwYz0lZCkAc3RhY2sgdW5kZXJmbG93IChvcD0lZCwgcGM9JWQpAGludmFsaWQgb3Bjb2RlIChvcD0lZCwgcGM9JWQpACg\u002FOikAaWR4IDwgY291bnRvZihjYXNlX2NvbnZfdGFibGUxKQBubyBmdW5jdGlvbiBmaWxlbmFtZSBmb3IgaW1wb3J0KCkALV8uIX4qJygpACBhbm9ueW1vdXMoAFN5bWJvbCgAZXhwZWN0aW5nICd9JwBjbGFzcyBjb25zdHJ1Y3RvcnMgbXVzdCBiZSBpbnZva2VkIHdpdGggJ25ldycAZXhwZWN0aW5nICdhcycAdW5leHBlY3RlZCB0b2tlbiBpbiBleHByZXNzaW9uOiAnJS4qcycAdW5leHBlY3RlZCB0b2tlbjogJyUuKnMnAHJlZGVjbGFyYXRpb24gb2YgJyVzJwBkdXBsaWNhdGUgZXhwb3J0ZWQgbmFtZSAnJXMnAGNpcmN1bGFyIHJlZmVyZW5jZSB3aGVuIGxvb2tpbmcgZm9yIGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnAENvdWxkIG5vdCBmaW5kIGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnAGNvdWxkIG5vdCBsb2FkIG1vZHVsZSAnJXMnAGNhbm5vdCBkZWZpbmUgdmFyaWFibGUgJyVzJwB1bmRlZmluZWQgcHJpdmF0ZSBmaWVsZCAnJXMnAHVuc3VwcG9ydGVkIHJlZmVyZW5jZSB0byAnc3VwZXInAGludmFsaWQgdXNlIG9mICdzdXBlcicAJ2ZvciBhd2FpdCcgbG9vcCBzaG91bGQgYmUgdXNlZCB3aXRoICdvZicAJ2ZvciBvZicgZXhwcmVzc2lvbiBjYW5ub3Qgc3RhcnQgd2l0aCAnYXN5bmMnAGV4cGVjdGluZyAnJWMnAHVucGFyZW50aGVzaXplZCB1bmFyeSBleHByZXNzaW9uIGNhbid0IGFwcGVhciBvbiB0aGUgbGVmdC1oYW5kIHNpZGUgb2YgJyoqJwBpbnZhbGlkIHVzZSBvZiAnaW1wb3J0KCknAGV4cGVjdGluZyAlJQA7Lz86QCY9KyQsIwA9IgBzZXQgAGdldCAAW29iamVjdCAAYXN5bmMgZnVuY3Rpb24gAGJvdW5kIAAlLjNzLCAlMDJkICUuM3MgJTAqZCAAYXN5bmMgADogACAgICAgICAgICAACikgewoACkpTT2JqZWN0IGNsYXNzZXMKACUtMjBzICU4cyAlOHMKACAgJTVkICAlMi4wZCAlcwoAICAlM3UgKyAlLTJ1ICAlcwoAICBtYWxsb2NfdXNhYmxlX3NpemUgdW5hdmFpbGFibGUKACUtMjBzICU4bGxkCgAlLTIwcyAlOGxsZCAlOGxsZAoAX19KU19GcmVlVmFsdWU6IHVua25vd24gdGFnPSVkCgAlLTIwcyAlOGxsZCAlOGxsZCAgKCUwLjFmIHBlciBmYXN0IGFycmF5KQoAJS0yMHMgJThsbGQgJThsbGQgICglMC4xZiBwZXIgb2JqZWN0KQoAJS0yMHMgJThsbGQgJThsbGQgICglMC4xZiBwZXIgZnVuY3Rpb24pCgAlLTIwcyAlOGxsZCAlOGxsZCAgKCUwLjFmIHBlciBhdG9tKQoAJS0yMHMgJThsbGQgJThsbGQgICglMC4xZiBwZXIgYmxvY2spCgAlLTIwcyAlOGxsZCAlOGxsZCAgKCVkIG92ZXJoZWFkLCAlMC4xZiBhdmVyYWdlIHNsYWNrKQoAJS0yMHMgJThsbGQgJThsbGQgICglMC4xZiBwZXIgc3RyaW5nKQoAJS0yMHMgJThsbGQgJThsbGQgICglMC4xZiBwZXIgc2hhcGUpCgBRdWlja0pTIG1lbW9yeSB1c2FnZSAtLSAxLjAuMCB2ZXJzaW9uLCAlZC1iaXQsIG1hbGxvYyBsaW1pdDogJWxsZAoKAAAAAJIAQfyWAQsNkwAAAEwAAABNAAAAlABBlJcBCz2VAAAATgAAAE8AAACWAAAATgAAAE8AAACXAAAATgAAAE8AAACYAAAATgAAAE8AAACZAAAATAAAAE0AAACZAEHclwELDZwAAABOAAAATwAAAJIAQfSXAQv9Ap0AAABQAAAAUQAAAJ0AAABSAAAAUwAAAJ0AAABUAAAAVQAAAJ0AAABWAAAAVwAAAJ4AAABSAAAAUwAAAJ8AAABYAAAAWQAAAKAAAABaAAAAAAAAAKEAAABbAAAAAAAAAKIAAABbAAAAAAAAAKMAAABcAAAAXQAAAKQAAABcAAAAXQAAAKUAAABcAAAAXQAAAKYAAABcAAAAXQAAAKcAAABcAAAAXQAAAKgAAABcAAAAXQAAAKkAAABcAAAAXQAAAKoAAABcAAAAXQAAAKsAAABcAAAAXQAAAKwAAABcAAAAXQAAAK0AAABcAAAAXQAAAK4AAABcAAAAXQAAAK8AAABOAAAATwAAALAAAABeAAAAXwAAALEAAABeAAAAXwAAALIAAABeAAAAXwAAALMAAABeAAAAXwAAALQAAABgAAAAYQAAALUAAABgAAAAYQAAALYAAABiAAAAYwAAALcAAABiAAAAYwAAALgAAABkAAAAZQAAALkAAABmAAAAZwBBgJsBCwFoAEGQmwELDWkAAAAAAAAAagAAAGsAQbybAQsBbABByJsBCw1tAAAAbgAAAG8AAABwAEHgmwELtxvsKQAAQAEAACUKAAD4AAAAuA8AADAAAABaJQAAEAAAADkuAABYAAAAkgAAAHEAAAByAAAAcwAAAHQAAAB1AAAAdgAAAHcAAAB4AAAAeQAAAFBdAAAQXgAAwF4AABBfAABQXwAAcF8AAAwLBQQCAgAAuwAAAHoAAAB7AAAAvAAAAHwAAAB9AAAAvQAAAHwAAAB9AAAAvgAAAFIAAABTAAAAvwAAAH4AAAB\u002FAAAAwAAAAH4AAAB\u002FAAAALwAAAIAAAACBAAAAwQAAAFIAAABTAAAAwgAAAIIAAACDAAAAAAAAAOkWAAAaFwAAJRcAAN0WAAAQFwAANBcAAPMWAAABFwAAY29weVdpdGhpbgBlbnRyaWVzAGZpbGwAZmluZABmaW5kSW5kZXgAZmluZExhc3QAZmluZExhc3RJbmRleABmbGF0AGZsYXRNYXAAaW5jbHVkZXMAa2V5cwB0b1JldmVyc2VkAHRvU29ydGVkAHRvU3BsaWNlZAB2YWx1ZXMAAAAAAAEBAgIDAwIDAAAAAAAAbnVsbABmYWxzZQB0cnVlAGlmAGVsc2UAcmV0dXJuAHZhcgB0aGlzAGRlbGV0ZQB2b2lkAHR5cGVvZgBuZXcAaW4AaW5zdGFuY2VvZgBkbwB3aGlsZQBmb3IAYnJlYWsAY29udGludWUAc3dpdGNoAGNhc2UAZGVmYXVsdAB0aHJvdwB0cnkAY2F0Y2gAZmluYWxseQBmdW5jdGlvbgBkZWJ1Z2dlcgB3aXRoAGNsYXNzAGNvbnN0AGVudW0AZXhwb3J0AGV4dGVuZHMAaW1wb3J0AHN1cGVyAGltcGxlbWVudHMAaW50ZXJmYWNlAGxldABwYWNrYWdlAHByaXZhdGUAcHJvdGVjdGVkAHB1YmxpYwBzdGF0aWMAeWllbGQAYXdhaXQAAGxlbmd0aABmaWxlTmFtZQBsaW5lTnVtYmVyAG1lc3NhZ2UAY2F1c2UAZXJyb3JzAHN0YWNrAG5hbWUAdG9TdHJpbmcAdG9Mb2NhbGVTdHJpbmcAdmFsdWVPZgBldmFsAHByb3RvdHlwZQBjb25zdHJ1Y3RvcgBjb25maWd1cmFibGUAd3JpdGFibGUAZW51bWVyYWJsZQB2YWx1ZQBnZXQAc2V0AG9mAF9fcHJvdG9fXwB1bmRlZmluZWQAbnVtYmVyAGJvb2xlYW4Ac3RyaW5nAG9iamVjdABzeW1ib2wAaW50ZWdlcgB1bmtub3duAGFyZ3VtZW50cwBjYWxsZWUAY2FsbGVyADxldmFsPgA8cmV0PgA8dmFyPgA8YXJnX3Zhcj4APHdpdGg+AGxhc3RJbmRleAB0YXJnZXQAaW5kZXgAaW5wdXQAZGVmaW5lUHJvcGVydGllcwBhcHBseQBqb2luAGNvbmNhdABzcGxpdABjb25zdHJ1Y3QAZ2V0UHJvdG90eXBlT2YAc2V0UHJvdG90eXBlT2YAaXNFeHRlbnNpYmxlAHByZXZlbnRFeHRlbnNpb25zAGhhcwBkZWxldGVQcm9wZXJ0eQBkZWZpbmVQcm9wZXJ0eQBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IAb3duS2V5cwBhZGQAZG9uZQBuZXh0AHZhbHVlcwBzb3VyY2UAZmxhZ3MAZ2xvYmFsAHVuaWNvZGUAcmF3AG5ldy50YXJnZXQAdGhpcy5hY3RpdmVfZnVuYwA8aG9tZV9vYmplY3Q+ADxjb21wdXRlZF9maWVsZD4APHN0YXRpY19jb21wdXRlZF9maWVsZD4APGNsYXNzX2ZpZWxkc19pbml0PgA8YnJhbmQ+ACNjb25zdHJ1Y3RvcgBhcwBmcm9tAG1ldGEAKmRlZmF1bHQqACoATW9kdWxlAHRoZW4AcmVzb2x2ZQByZWplY3QAcHJvbWlzZQBwcm94eQByZXZva2UAYXN5bmMAZXhlYwBncm91cHMAaW5kaWNlcwBzdGF0dXMAcmVhc29uAGdsb2JhbFRoaXMAYmlnaW50AG5vdC1lcXVhbAB0aW1lZC1vdXQAb2sAdG9KU09OAE9iamVjdABBcnJheQBFcnJvcgBOdW1iZXIAU3RyaW5nAEJvb2xlYW4AU3ltYm9sAEFyZ3VtZW50cwBNYXRoAEpTT04ARGF0ZQBGdW5jdGlvbgBHZW5lcmF0b3JGdW5jdGlvbgBGb3JJbkl0ZXJhdG9yAFJlZ0V4cABBcnJheUJ1ZmZlcgBTaGFyZWRBcnJheUJ1ZmZlcgBVaW50OENsYW1wZWRBcnJheQBJbnQ4QXJyYXkAVWludDhBcnJheQBJbnQxNkFycmF5AFVpbnQxNkFycmF5AEludDMyQXJyYXkAVWludDMyQXJyYXkAQmlnSW50NjRBcnJheQBCaWdVaW50NjRBcnJheQBGbG9hdDMyQXJyYXkARmxvYXQ2NEFycmF5AERhdGFWaWV3AEJpZ0ludABNYXAAU2V0AFdlYWtNYXAAV2Vha1NldABNYXAgSXRlcmF0b3IAU2V0IEl0ZXJhdG9yAEFycmF5IEl0ZXJhdG9yAFN0cmluZyBJdGVyYXRvcgBSZWdFeHAgU3RyaW5nIEl0ZXJhdG9yAEdlbmVyYXRvcgBQcm94eQBQcm9taXNlAFB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\u002F\u002F\u002F\u002F\u002F7g3AAABAwAA3RsAAAAAAACENQAAAwABAAEBAACYAAAATBUAAAMAAQABAQAAmgAAAB4oAAADAAEAAQEAAJsAAADaGgAAAwABAAABAACcAAAAVicAAAECAQCdAAAAAAAAAEYkAAADAAEAAQEAAJ4AAAB7EwAAAwABAAABAACfAAAACBAAAAMJAAB7EwAA\u002F\u002F\u002F\u002F\u002F143AAADCQAAexMAAP\u002F\u002F\u002F\u002F98FAAAAwAJAAABAACfAAAAuDcAAAEDAADEDgAAAAAAAGUOAAADAAIAAgEAAJgAAAC8DgAAAwACAAEBAACZAAAATBUAAAMAAgABAQAAmgAAAB4oAAADAAIAAQEAAJsAAAC4NwAAAQMAANkbAAAAAAAAhDUAAAMAAwABAQAAmAAAAEwVAAADAAMAAQEAAJoAAAAeKAAAAwADAAEBAACbAAAAuDcAAAEDAADADgAAAAAAAHAKAAADAAAAAAwAAKAAAAC4NwAAAQMAAEsWAAAAAAAAcAoAAAMAAQAADAAAoAAAALg3AAABAwAAPhYAAAAAAABKBwAAAwABAAIBAAChAAAATTcAAAEBAACTAAAAAAAAANIfAAADAAAAAgAAAKIAAAA5JAAAAwAAAAEAAACjAAAATwYAAAMAAAABAAAApAAAALg3AAABAwAAzigAAAAAAACDJwAAAwAAAAEBAAClAAAA9w4AAAMAAQABAQAApQAAAIshAAADAAAAAQEAAKYAAAABNQAAAwABAAEBAACmAAAAIAYAAAMAAgABAQAApgAAAOkvAAADAAAAAQAAAKcAAADfEQAAAwAAAAAAAACoAAAATTcAAAEBAACTAAAAAAAAALg3AAABAwAATx0AAAAAAABwNwAAAwAAAAAAAACpAAAAcAoAAAMAAAABAQAAqgAAABkcAAADAAEAAQEAAKoAAABoCAAAAwACAAEBAACqAAAAcAoAAAMAAAABAQAAqwAAABkcAAADAAEAAQEAAKsAAABoCAAAAwACAAEBAACrAAAAuDcAAAEDAADBFgAAAAAAALg3AAABAwAAIx0AAAAAAAC0JgAAAwAAAAAAAACsAAAA9iQAAAMAEwAAAQAArQAAAM03AAADAAAAAQAAAK4AAABvJQAAAwADAAABAACtAAAATiUAAAMJAABvJQAA\u002F\u002F\u002F\u002F\u002F2MlAAADACMAAAEAAK0AAAD\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\u002F\u002F\u002F\u002F\u002FCBAAAAMAAAAAAQAANQAAAHwUAAADAAIAAAEAADUAAAAmBwAAAwAAAAEAAAD2AAAAXiAAAAMAAAABAAAA9wAAAPglAAADAAAAAAAAAPgAAABNNwAAAQEAAJMAAAAAAAAAcAoAAAMAAAAADAAANgAAALg3AAABAwAALxYAAAAAAACiDQAAAwAAAAIAAAD5AAAAwQ8AAAMAAAABAAAA+gAAAKc5AAADAAAAAQAAAPsAAAAVKAAAAwAAAAEAAAD8AAAAUTsAAAMAAAABAQAA\u002FQAAAFUNAAADAAEAAQEAAP0AAABHOwAAAwAAAAEBAAD+AAAAQg0AAAMAAQABAQAA\u002FgAAAIQpAAADAAAAAQAAAP8AAACCKQAAAwAAAAEAAAAAAQAA0QUAAAAGAAAAAAAAAADwf7s5AAAABgAAAAAAAAAA+H+BNAAAAAcAQZDXAQtlOh0AAAMAAAACAAAAAQEAALEbAAADAAAAAgAAAAIBAABBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OUAqXystLi8AQYDYAQuWA6wiAAADAAAAAQAAAAMBAABZMgAAAwAAAAEAAAAEAQAAEx8AAAMAAAABAAAABQEAAPYkAAADAAAAAQEAAAYBAAA\u002FJQAAAwABAAABAAAGAQAAtCYAAAMAAAAAAAAABwEAAKINAAADCQAAog0AAAAAAADBDwAAAwkAAMEPAAAAAAAApzkAAAMAAAABAAAACAEAABUoAAADAAAAAQAAAAkBAAAZGgAAAwAAAAEAAAAKAQAAIxoAAAMAAAABAAAACwEAAGA8AAAABgAA\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F739qPAAAAAYAAAEAAAAAAAAAuzkAAAAGAAAAAAAAAAD4f1g4AAAABgAAAAAAAAAA8P9GOAAAAAYAAAAAAAAAAPB\u002FxjkAAAAGAAAAAAAAAACwPHY5AAAABgAA\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FP0OHOQAAAAYAAP\u002F\u002F\u002F\u002F\u002F\u002F\u002Fz\u002FD9iQAAAMAAAAAAAAADAEAALQmAAADAAAAAAAAAA0BAAAELwAAAwAAAAEAAAAOAQAAmQwAAAMAAAABAAAADwEAAMEIAAADAAAAAQAAABABAADDIwAAAQQAQaDbAQuSB+cPAAADAAEAAQEAABEBAAD9DwAAAwAAAAEAAAASAQAA9g8AAAMAAAABAQAAEQEAAOMPAAADAAAAAQAAABMBAADqDwAAAwAAAAEAAAAUAQAA5zQAAAMAAAAAAAAAFQEAAPQ0AAADAAAAAAAAABYBAACgJgAAAwAAAAEBAAAXAQAAqCYAAAMAAQABAQAAFwEAAKAUAAADAAAAAQEAABgBAABqIwAAAwACAAEBAAAYAQAAXyMAAAMAAQABAQAAGAEAAC8kAAADAM0AAQEAABkBAACWIQAAAwDOAAEBAAAZAQAAPyQAAAMA0AABAQAAGQEAAL0NAAADAAAAAgAAABoBAACDJAAAAwAAAAIAAAAbAQAAkxUAAAMAAAACAAAAHAEAANwvAAADAAAAAgAAAB0BAADcDwAAAwAAAAEAAAAeAQAA7i8AAAMAAAACAQAAHwEAAJ8hAAADAAEAAgEAAB8BAAC8MQAAAwABAAEBAAAgAQAAOwsAAAMAAAABAQAAIAEAAGogAAADAAMAAAEAACEBAAC0MQAAAwACAAABAAAhAQAA1w0AAAMJAAC0MQAA\u002F\u002F\u002F\u002F\u002FzELAAADAAEAAAEAACEBAAD1DQAAAwkAADELAAD\u002F\u002F\u002F\u002F\u002F9iQAAAMAAAAAAAAAIgEAALQmAAADAAAAAAAAACIBAAANKAAAAwAAAAEAAAAjAQAAHSkAAAMAAAABAAAAJAEAANYoAAADAAEAAAEAACUBAAD0KAAAAwAAAAABAAAlAQAA4igAAAMAAQAAAQAAJQEAAAApAAADAAAAAAEAACUBAABeNwAAAwAFAAABAAA1AAAATRcAAAMAAAABAQAAJgEAANYlAAADAAEAAAEAACYBAADGIgAAAwACAAABAAAmAQAAwzEAAAMAAwAAAQAAJgEAAFMyAAADAAQAAAEAACYBAABDFwAAAwAFAAEBAAAmAQAA7SYAAAMABgABAQAAJgEAACwVAAADAAcAAAEAACYBAADHIgAAAwAIAAEBAAAmAQAAhCEAAAMACQAAAQAAJgEAABwtAAADAAoAAAEAACYBAACHNgAAAwALAAABAAAmAQAAchsAAAMADAAAAQAAJgEAAO42AACwKwAA1iUAAAAAAADGIgAAAAAAAOM2AAAAAAAAjQoAAAAAAACBDAAARxcAAIEMAABWJwAAHSMAAAAAAADuNgAALiYAAIQhAAAAAAAAHC0AAAAAAACHNgAAAAAAAHIbAEHA4gELmhJwCgAAAwAAAAAMAAAnAQAAuDcAAAEDAABfFgAAAAAAAN0jAAADCAAAcHEAACwAAAApHwAAAwAAAAIBAAAoAQAA+gcAAAMAAQACAQAAKAEAADQVAAADAAAAAQYAACkBAAA9FwAAAwAAAAEGAAAqAQAAqiEAAAMAAAABBgAAKwEAALgwAAADAAAAAQYAACwBAAAiCwAAAwAAAAEGAAAtAQAAHhIAAAMAAAABBgAALgEAAB8fAAADAAAAAQYAAC8BAAALIAAAAwAAAAEGAAAwAQAAJUEAAAMAAAACBwAAMQEAAB8SAAADAAAAAQYAADIBAABnGwAAAwAAAAEGAAAzAQAAUSQAAAMAAAABBgAANAEAAHEIAAADAAAAAgcAADUBAAAgHwAAAwAAAAEGAAA2AQAADCAAAAMAAAABBgAANwEAAAI2AAADAAAAAQYAADgBAACQHwAAAwAAAAEGAAA5AQAA6CMAAAMAAAABBgAAOgEAAAAkAAADAAAAAQYAADsBAAAGJAAAAwAAAAEGAAA8AQAA5yMAAAMAAAABBgAAPQEAAP8jAAADAAAAAQYAAD4BAAAFJAAAAwAAAAEGAAA\u002FAQAAxUEAAAMAAAABBgAAQAEAAPgbAAADAAAAAQYAAEEBAAArQQAAAwAAAAEGAABCAQAAW0IAAAMAAAABBgAAQwEAACwLAAADAAAAAQYAAEQBAABiCwAAAwAAAAIAAABFAQAAYyAAAAMAAAAAAAAARgEAAKwwAAADAAAAAQYAAEcBAACMIAAAAwAAAAIAAABIAQAAQkEAAAMAAAABAAAASQEAALg3AAABAwAA3SMAAAAAAADJPAAAAAYAAGlXFIsKvwVAYUIAAAAGAAAWVbW7sWsCQD5BAAAABgAA7zn6\u002FkIu5j++PAAAAAYAAP6CK2VHFfc\u002FxDwAAAAGAAAO5SYVe8vbP1s7AAAABgAAGC1EVPshCUAwQQAAAAYAAM07f2aeoOY\u002FOEEAAAAGAADNO39mnqD2P+8OAAADCAAAQHQAAA4AAAAkBgAAAwAAAAMAAABKAQAAyA4AAAMAAAACAAAASwEAAJwFAAADAAEAAwEAAL8AAAB5BQAAAwAAAAIAAABMAQAAvA4AAAMAAAACAAAATQEAAK4VAAADAAEAAgEAAMYAAADLJgAAAwABAAEBAAC9AAAATBUAAAMAAAACAAAATgEAADIsAAADAAEAAQEAAMQAAAA9EAAAAwAAAAEAAABPAQAAsRIAAAMAAQABAQAAxQAAAGUOAAADAAAAAwAAAFABAAC8JgAAAwAAAAIAAABRAQAAuDcAAAEDAADvDgAAAAAAAPYkAAADAAAAAAAAAFIBAAC0JgAAAwAAAAAAAABTAQAAzTcAAAMAAAABAAAAUwEAALg3AAABAwAAniAAAAAAAABaHAAAAQEAAFQBAAAAAAAAVBcAAAMAAAABAAAAVQEAAFgXAAADAAAAAQAAAFYBAABwCgAAAwAAAAEMAABXAQAAGRwAAAMAAQABDAAAVwEAAGgIAAADAAIAAQwAAFcBAAC4NwAAAQMAAMYWAAAAAAAAuDcAAAEDAAAoHQAAAAAAANIjAAABAhMAWAEAAAAAAADcLwAAAwATAAIBAABZAQAAuDcAAAEDAABfGgAAAAAAALEIAAADAAAAAQAAAFoBAABNNwAAAQEAAJMAAAAAAAAA0iMAAAECFABYAQAAAAAAANwvAAADABQAAgEAAFkBAAC4NwAAAQMAADgaAAAAAAAATTcAAAEBAACTAAAAAAAAAMMjAAABAQAAWwEAAAAAAADnDwAAAwAAAAEAAABcAQAAWiMAAAMAAAACAAAAXQEAADEaAAABAgAAXgEAAAAAAADSIwAAAQIAAF8BAAAAAAAAFQ4AAAECAABgAQAAAAAAAGUOAAADAAAAAQAAAGEBAAB7EwAAAwABAAABAABiAQAAXjcAAAMJAAB7EwAA\u002F\u002F\u002F\u002F\u002FwgQAAADAAAAAAEAAGIBAAB8FAAAAwACAAABAABiAQAAuDcAAAEBAABjAQAAAAAAAC0fAAADAAAAAgAAAGQBAAAaBgAAAwAIAAEBAADjAAAA2CkAAAMACQABAQAA4wAAAEYkAAADAAoAAQEAAOMAAADNGwAAAwALAAEBAADjAAAATRgAAAMADAABAQAA4wAAAFQvAAADAAgAAQEAAOQAAADhDQAAAwAJAAEBAADkAAAASSEAAAMAAAABAAAAZQEAAOowAAADAAAAAQEAAGYBAADABwAAAwABAAEBAABmAQAAFgsAAAMAAgABAQAAZgEAALIHAAADAAMAAQEAAGYBAABfKAAAAwAAAAAAAABnAQAA3jMAAAMAAAAAAAAAaAEAANwvAAADAAAAAgAAAGkBAACFBgAAAwAAAAIAAABqAQAAJwsAAAMAAAABAAAAawEAAL0yAAADAAAAAQAAAGwBAAAkHwAAAwAAAAEBAABtAQAAPyUAAAMAAQAAAQAAbQEAAKAmAAADAAAAAQEAAG4BAACoJgAAAwABAAEBAABuAQAAoBQAAAMA\u002F\u002F8BAQAAbgEAAF4gAAADAAAAAQAAAG8BAAD4JQAAAwAAAAAAAABwAQAATTcAAAEBAACTAAAAAAAAADEaAAABAgEAXgEAAAAAAADSIwAAAQIBAF8BAAAAAAAAFQ4AAAECAQBgAQAAAAAAAGxAAAADABYAAQEAAHEBAABbQAAAAwAXAAEBAABxAQAAwEAAAAMAGAABAQAAcQEAAK1AAAADABkAAQEAAHEBAABlQQAAAwAaAAEBAABxAQAAUkEAAAMAGwABAQAAcQEAAPlAAAADABwAAQEAAHEBAADgQAAAAwAdAAEBAABxAQAAeUEAAAMAHgABAQAAcQEAABBBAAADAB8AAQEAAHEBAABkQAAAAwAWAAIBAAByAQAAUkAAAAMAFwACAQAAcgEAALdAAAADABgAAgEAAHIBAACjQAAAAwAZAAIBAAByAQAAXEEAAAMAGgACAQAAcgEAAEhBAAADABsAAgEAAHIBAADtQAAAAwAcAAIBAAByAQAA00AAAAMAHQACAQAAcgEAAG5BAAADAB4AAgEAAHIBAAAFQQAAAwAfAAIBAAByAQAAuDcAAAEDAAC4CABB5PQBC6UDAgAAAAAAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAAAAAAQAAAAEAAAArRAAA8EgAACVEAABzAQAAdAEAAHMBAAB1AQAAdgEAAHcBAAB4AQAAeQEAAHoBAAB7AQAAfAEAAH0BAAB+AQAAfQEAAH8BAACAAQAAgQEAAIIBAACDAQAAhAEAAIUBAACGAQAAHw8HAwEAAAAAAAAAgAAAAAAIAAAAAAEAAAAgAAAAAAQBAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAQAAAAEAAAABAAAAAQAAAAFAAAABQBBk\u002FgBC5UCgAAAAABgTsJQp\u002FTU1AAAAEAAAAAA0mggN8rlHgqNZIQxej4VuHUymC3EaVOdqqqqKquqqqowJ2EoVHpqaqEmiCbm\u002FfM+gxMAJUSnyLoGZ7QjCcfAgvEplyLtPciy\u002FX+eIStXraWIO8Mgqyl82gAAACAAAAAAfrVQH7OEWKzGLLIeb+KmihjhIR6yql0MIc2dHeQ0mEN4TCQdZQ16NokFtBwMPhesW9lLHA0r16ho1+obTM74mGk0kBvlcg8FP0M7GxVvsC51b+saOPxGnOs4oBoX\u002FTsOYjBZGlaMjbPD9BUa5qKVK9ww1hn53n3MmZmZGZqZmZmA7F8ZMZRginvuKBn5Ik8Lz2r0GBjjBoxGMsIYPZ8K3ABBs\u002FoBC7AEIEcDuDIAAABAJjxNSkcDuFL92dVZAAAAYI4GcGUmPE1q8KmzbkcDuHKOAGp2\u002FdnVeW0\u002FBX0AAACA337Mgo4GcIWuBe+HJjxNikXdjYzwqbOOAQXBkEcDuJJMeJqUjgBqltYJKJj92dWZj5R0m20\u002FBZ2zxoieAAAAoDeta6HffsyiIxYjpI4GcKUAAAAAgACAAIEAggCDAIQAhQCGAIcAiACJAIoAiwCMAI0AjgCPAJAAkACRAJIAkwCUAJUAlgCWAJcAmACZAJoAmwCbAJwAnQCeAJ8AoACgAKEAogCjAKMApAClAKYApwCnAKgAqQCqAKoAqwCsAK0ArQCuAK8AsACwALEAsgCyALMAtAC1ALUAtgC3ALcAuAC5ALkAugC7ALsAvAC9AL0AvgC\u002FAMAAwADBAMEAwgDDAMMAxADFAMUAxgDHAMcAyADJAMkAygDLAMsAzADMAM0AzgDOAM8A0ADQANEA0QDSANMA0wDUANQA1QDWANYA1wDXANgA2QDZANoA2gDbANsA3ADdAN0A3gDeAN8A4ADgAOEA4QDiAOIA4wDjAOQA5QDlAOYA5gDnAOcA6ADoAOkA6gDqAOsA6wDsAOwA7QDtAO4A7gDvAPAA8ADxAPEA8gDyAPMA8wD0APQA9QD1APYA9gD3APcA+AD4APkA+QD6APoA+wD7APwA\u002FAD9AP0A\u002FgD+AP8AIBQQDQwLCgoJCQgICAgIBwcHBwcHBwYGBgYGBgYGBgYGBgYAQfD+AQsqCgAJAA4AIAAhAKAAoQCAFoEWACALICggKiAvIDAgXyBgIAAwATD\u002F\u002FgD\u002FAEGk\u002FwELLRAAAAD+\u002F\u002F+H\u002Fv\u002F\u002FBwAAAAAQAP8D\u002Fv\u002F\u002Fh\u002F7\u002F\u002FwfMfwAAcH8AAOB\u002FAAABADAAOgBB4P8BCxEEADAAOgBBAFsAXwBgAGEAewBBgIACC7QNAQMFAQEBAQUFBQECAgMFBQEBAQICAwMFBQEBAREAAAAwmiAAAJowAHOBWgAwF2AAMAdsALOBbwAAF3AAAAd8AACBfwBAMIAAwwGYAJCBmABABpkAQJCcALSBpABALqUAMAG8AECGvABwgb8AAAHAADCBwABABMEAMAHDAECCwwAwgsQAQILFADABxwAwgccAMAHIAECCyAAwgckAMAHKAACBygAwAcsAMIHLAEACzAAAAc0AMAHOADCBzgAAAc8AMIHPAEAG0AAwAdMAQILTADCB1ABAAtYAMAHXAECC1wAwgtgAQITZADCB2wBAAtwAQALeAACB3wBQA+IAUIPjAFAD5QBAkOYAAIHuAEAS7wC0AfgAUIP4AEAC+gAwAfsAMIH7AEAo\u002FAAwARABQBIRATEBHQFAgh0BMIEeATEBHwEBgh8BQIIgATCBIQEwASIBMIEiAUAKIwEBASgBAYEoAQEBKQEAgSkBAAEqAQACKwEAgSwBAIEtAQEBLgEAATABAYEwAQCBMQEBgTIBAQEzAQABNAEAgTQBAQE1AQGBNQEBATYBAIE3AQGBOAEAATkBAIE6AQGBPgEAAUABAQFBAQCBQQEBgUMBAAFEAQCBRAEAAkUBAAFGAQABSQEBgU4BAQFPAXOBogFABLgBQAK7AQCDvQEwgb8BMAHDATADxAEwAcYBMALHAdAByAEwkcgBMInRAQAB1gEAg9YB0wHYAQCR2AFzAeEBAInhAQAB5gEAguYBMIHnAXMB6AFzgegBc4HqAXMB6wEAgesBQBjsAXMB+AFzgfgBAAH5AQCB+QGgAfoBc4H6AUCC+wEwgfwBQAL9ATCD\u002FgEwEAACMCAIAgAgGAIAECgCQCIwAkA2RQIwAWACQI5gAgCBZwJAYGgCMKaYAgCmsAK1gcMCMSZQCDGBYwgxgWYIACtoCACDfggRUNAJEAb4CSAG\u002FAl0AUAOdIFADnQBQQ50gUEOdAFCDnSBQg50AUMOgIFDDoABRA4wK0gOMINeDgGBvA4Bgb4OAQHHDkB+AA9AGD8PtQFLD7aBSw+2AUwPtoFMD7cBTQ+AgU0PMAFPD0BgUA8ACIAPMAiEDwAGiA8wBowPAAiQDzAIlA8ACJgPMAicDwAGoA8wBqQPsAGoDwCBqA\u002FTAakPAIGpD9MBqg8AgaoP0wGrDwCBqw8wgawPMIGtDzCBrg8wga8PAAiwDzAItA8AArgPAAS5DwACuw8BArwPAQK9DwECvg+3CMAPZwjED7gIyA9oCMwPuAjQD2gI1A8AAtgPuQHZD7GB2Q+5AdoPsQHbD9eB2w8wAtwPMALdD2EB3g9zAd8PuQHhD7KB4Q+6AeIPsgHjD9iB4w8wBOQPYgHmDwAC6A\u002FQAekP0IHpD7AB6w\u002FQgesPMALsDzAC7Q8BAvAP0wHxD9OB8Q+6AfIPAYHyD7AB8w\u002FTgfMPMAL0DzAC9Q8xAfYPugH5D7KB+Q+7AfoPsgH7D9mB+w8wAvwPMAL9D2IB\u002Fg+gAZMQoAGVEKCBlRAxAZkQAQGnEDEQsBABELgQQILBEDEaWxIBGmgSMTAAFgEwGBZAAjAWMAExFjCBMRYwATIWAIEyFgABMxZAhjMWMIE2FjABNxYwgTcWMAE4FkACORZAgjoWMAI\u002FFkBkQBZAhHUWQAJ5FgAmgBYAgZMWAIGWFkAuIFNAHEBTQA6RU0A+mVNAhLxTMIG+U0AKv1NAgsVTMIHGU0AEyFMBAcpTQBTLUzAB1VMwgdVTMAHWUzCB1lMwAddTMAHYUzCB2FMwAdlTMYHZU0AQ2lMxAeJTMIHiUzAB41NAhONTQALoU0AE61NAgvpTAYGpVSBQuFWyAYB9soGAfbIBgX3agYF92gGCfbOBgn2zAYN9u4GJfbsBin27gYp9vAGLfbuBi30xmpB\u002FAZqgfzEoAIIBKBSCMSRYggEkbIIxC7iCMQ++gjEHxoIxAsqCAYvLggGP0YIBh9mCAYLdgjEzQIYBM2CGMSBQjAEgYIwxICC3ASAwtzEigPQBIpH0AAAAAAAAAABAqYCOgPyA04CMgI2BjQKA4YCRhZoBAAERAAEECAEIMAgBFSAAOZkxnYRAlIDWgqaAQWKApoBLcoBMAvgCgI+AsEDbCIBB0ICMgI+M5AMBiQAUKBARAgEYCyRLJgEBhuWAYHm2gUCRgb2IlAWAmICiAICbEoJDNKIGgI1gXBUBEKmAiGDMRNSAxgEICQuAiwAGgMADDwaAmwMEABaAQVOBmICYgJ6AmICegJiAnoCYgJ6AmAdHM4mAky1BBL1QwZmFmYWZAEHAjQILFbkC4MAdIOUsILEHIcHWIUrxAYrxAQBB4I0CC+EFpgWAioCiAIDGAwADAYFB9kC\u002FGRiICIBA+oZAzgSAsKwAAQEAq4CKhYmKAKKAiZSPgOQ4iQOgAICdmtqKuYoYCJeXqoKrBg2HqLm2AAM7AoaJgYyAjoC5Ax+Ak4GZAYG4AwsJEoCdCoCKgbgDIAuAk4GVKIC5AQAfBoGKgZ2AvICLgLECgLYAFBAegYqBnIC5AQUEgZOBm4G4Cx+Ak4GcgMcGEIDZAYaKiOEBiIgAhsiBmgAAgLaNBAGEioCjiIDlGCgJgZgLgo+DjAENgI6A3YBCX4JDsYKcgZ2BnYG\u002FCDcBihAgrISygMCBoYD1E4GIBYJA2gmAuQAwAAE9iQimB56wg68AIASAp4iLgZ8ZCIK3AAoAgrk5gb+F0RCMBhgoEbG+jICh5EG8AIKKgoyCjIKMgYsngYkBAYSwIIkAjICPjLKgS4qB8IL8gI6A35+ugEHUgKMaJIDchdyCYG8VgEThhUENgOEYiQCbg8+BjaHNgJaC5hIPAgOAmAyAQJaBmZGMgKWHmIqtgq8BGYGQgJSBwSkJgYsHgKKAioCyABEMCICagI0MCIDjhIiC+AEDgGBPL4BAkpBCPI8Qi4+hAYBAqAYFgIqAogCAroCsgcKAlIJCAIBA4YBAlIREBCipgIhCRRAMg6cTgECkgUI8g0GCgc+CxYqwg\u002FqAtY6oAYGJgrAZCQOAiYCxgqMgh72Ai4GziIkZgN4RAA0BgECcAoeUgbgKgKQyhEDCORCAloDTKAMIgUDtHQiBmoHUOQCB6QABKIDkERiEQQKIAUD\u002FCAOAQI8ZC4CfiacpH4CIKYKtjAFBlTAogNGVDgEB+SoACDCAxwoAgEFagYqBsyQAgFTskIWOYDaZhLqGiINECoC+kL8IgWBAChgwgUydCINSW62BlkIfgoiPDp2DQJOCR7q2g7E4jYCVII5FTzCQDgEEhL2ggECfjUFvgLyDQfqEQ9+G7IdKroRsDACAnd\u002F\u002FQO8AQdCTAgtFvgUA\u002FgcAUgqgwQsAgg0APxCA1BdAzxog9RwAgCAAFqAAxqgAwqpgVv4gsQcBdRAB6xIhQRYBXBoBQx8BLs9BJeAB8AEOAEGglAIL1A7AmYWZroCJAwSWgJ6AQcmDi40mAIBAgCAJGAUAEACTgNKAQIqHQKWApQiFqMaaG6yqogjiAI4OgYkRgI8AnZzYioCXoIgLBJUYiAKAlpiGioSXBZCpubUQkQaJjo8fCYGVBgATEI+AjAiCjYGJBysJlQYBAQGeGICSgo+IAoCVBgEEEJGAjoGWgIo5CZUGAQQQnQiCjoCQACoQGggACgoSi5WAszgQloCPEJkRAYGdAzgQloCJBBCeCIGOgZCIAoCoCI8EF4KXLJGCl4CIAA65rwGLhrkIACCXAICJAYgBIICUg5+AvjijmoTyqpOAjysaAg4TjIuAkKUAIIGqgEFMAw4AA4GoA4GgAw4AA4GOgLgDgcKkj4\u002FVDYJCa4GQgJmEyoKKhpGMko2RjYwCjrOiA4DC2IaoAITFiZ6wnQyKq4OZtZaItNGA3K6Qh7WdjIGJq5mjqIKJo4GIhqoKqBgoCgRAv79BFQ2BpQ0PAAAAgJ6BtAYAEgYTDYOMIgbzgIyAj4zkAwGJAA0oAACAjwskGJCoSnZA5CsRi6UAIIG3MI+WiDAwMDAwMDCGQiWCmIg0DIPVHIDZA4SqgN2Qn6+PQf9Zv79gVozCrYFBDIKPiYGTro+egc+miIHmgb8hAASXjwIDgJacs42xvSoAgYqbiZaYnIaum4CPIImJIKiWEIeTlhCCsQARDAgAlxGKMospKYWIMDCqgI2F8pxgK6OLloOwYCEDQW2B6aWGiyQAiYCMBAABAYDroEFqkb+BtaeL8yBAhqOZhZmK2BUNDQqii4CZgJIBgI6BjaH6xLRBCpyCsK6fjJ2EpYmdgaMfBKlAnZGjg6ODp4ezi4qAjgYBgIqAjgYBwkE2iJWJh5coqYCIxCkAqwEQgZaJloiewJIBiZWJmcW3Kb+AjhgQnKmcgpyiOJuatYmViZKMke3ItrKMsoyjQVupKc2ciQeVqZGtlJqWi7S4CYCMrJ+YmaOcAQeiEIuvjYOUAICikYCYkoG+MAAYjoCJhq6lOQmVBgEEEJGAi4RAnbSRg5OCna+TCIBAt66og6Ovk4C6qoyAxpqkhkC4q\u002FO\u002FnjkBOAiXjgCA3TmmjwCAm4CJpzCUgIqtkoCRyEEGiICkkICwne8wCKWUgJgoCJ+NgEFGko4AjICh+4DOQ5nl7pBAw0pL4I5EL5CFT7hCRmAhuEI4hp6QzpCdka+Pg56UhJJCr7\u002F\u002FyiDBjL8IgJtX94dE1amIYCLmGDAIQSKOgJwRgI0fQYtJA+qEjIKIholXZdSAxgEICQuAiwAGgMADDwaAmwMEABaAQVOBmICYgJ6AmICegJiAnoCYgJ6AmAdHM54tQQS9QJGsiYaPgEFAnZGrQeObQvMwGAiOgEDEusMwRLMYmgEACICJAwAAKBgAAAIBAAgAAAAAAQALBgMDAICJgJAiBICQUUNgpt+fUDmFQN2BVoGNXTBMHkIdReFTSoRQXwAAAAD2AyCmBwCpCSCxCgC6CyA7DSDHDiBJEgCbFgCsGQDAHYCAICBwLQAAMgDapwBMqiDH1yD8\u002FSCdAiGWBQHzCAGzDCFzEWE0EwEbFyGKGgE0HyG\u002FagEjsaGt1AFv1wH\u002F52Fe7gHh6yKwIwMAAAAAAAAAr4mkgNaAQkfvloBA+oRBCKwAAQEAx4qvnijkMSkIGYmWgJ2a2oqOiaCIiICXGIgCBKqCu4epl4CgtRCRBokJiZCCtwAxCYKIgIkJiY0BgrcAIwkSgJOLEIqCtwA4EIKTCYmJKIK3ADEJFoKJCYmRgLoiEIOIgI2Jj4S2ADAQHoGKCYmQgrcAMBAegYoJiRCLg7YIMBCDiICJCYmQgsUDKAA9iQm8AYaLOInWAYiKMIm9DYmKAAADgbCTAYSKgKOIgOOTgImLGxARMoOMi4COQr6CiIhDn4ObgpyBnYG\u002Fn4gBiaAQikCOgPWLg4uJif+Ku4S4iYCcgYqFiZWNgI+whK6QiomQiIuCnYyBiauNr5OHiYWJ9RCUGCgKQMW\u002FQj6BkoD6jBiCi0v9gkCMgN+fQimF6IFgdYSJxAOJn4HPgUEPAgOAliOA0oGxkYmJhZGMipuHmIyrg66NjomKgImJro2LBwmJoIKxABEMCICoJIFA6zgJiWBPI4BC4I+PjxGXgkC\u002FiaSAQryAQOGAQJSEQSSJRVYQDIOnE4BApIFCPB+JQXCBz4LFirCD+YK0jp6KCYmDrIowrIkqo42AiSGrgIuCr407gIvRiygIQJyLhIkrtggxCYKIgIkJMoRAv5GIiRjQk4uJQNQxiJqB0ZCOidCMh4nSjoOJQPGOQKSJxSgJGACBi4n2MTKAm4mnMB+AiIqtj0GUOIePibeVgI35KgAIMAeJryAIJ4lBSIOICICvMoSMiVTlBY5gNgmJ1YmlhLqGmIlD9AC2M9CAioFgTKqBUmCtgZZCHSIvOYadg0CTgkWIsUH\u002FtoOxOI2AlSCORU8wkA4BBOOAQJ+GiIlBY4C8jUHxjUPVhuw0iVKViWwFBUDvAEGAowILhBP6BgBwCQDwCkBXDADwDWDHDyDqF0AFGwBBIAAMqIA3qiBQ\u002FiA6DSF0EQFaFCFEGYFaHaH1aiFF0kGv4iHwAQ4AQWRsYW0sQWRsbQBBaG9tLEFob20AQW5hdG9saWFuX0hpZXJvZ2x5cGhzLEhsdXcAQXJhYmljLEFyYWIAQXJtZW5pYW4sQXJtbgBBdmVzdGFuLEF2c3QAQmFsaW5lc2UsQmFsaQBCYW11bSxCYW11AEJhc3NhX1ZhaCxCYXNzAEJhdGFrLEJhdGsAQmVuZ2FsaSxCZW5nAEJoYWlrc3VraSxCaGtzAEJvcG9tb2ZvLEJvcG8AQnJhaG1pLEJyYWgAQnJhaWxsZSxCcmFpAEJ1Z2luZXNlLEJ1Z2kAQnVoaWQsQnVoZABDYW5hZGlhbl9BYm9yaWdpbmFsLENhbnMAQ2FyaWFuLENhcmkAQ2F1Y2FzaWFuX0FsYmFuaWFuLEFnaGIAQ2hha21hLENha20AQ2hhbSxDaGFtAENoZXJva2VlLENoZXIAQ2hvcmFzbWlhbixDaHJzAENvbW1vbixaeXl5AENvcHRpYyxDb3B0LFFhYWMAQ3VuZWlmb3JtLFhzdXgAQ3lwcmlvdCxDcHJ0AEN5cmlsbGljLEN5cmwAQ3lwcm9fTWlub2FuLENwbW4ARGVzZXJldCxEc3J0AERldmFuYWdhcmksRGV2YQBEaXZlc19Ba3VydSxEaWFrAERvZ3JhLERvZ3IARHVwbG95YW4sRHVwbABFZ3lwdGlhbl9IaWVyb2dseXBocyxFZ3lwAEVsYmFzYW4sRWxiYQBFbHltYWljLEVseW0ARXRoaW9waWMsRXRoaQBHZW9yZ2lhbixHZW9yAEdsYWdvbGl0aWMsR2xhZwBHb3RoaWMsR290aABHcmFudGhhLEdyYW4AR3JlZWssR3JlawBHdWphcmF0aSxHdWpyAEd1bmphbGFfR29uZGksR29uZwBHdXJtdWtoaSxHdXJ1AEhhbixIYW5pAEhhbmd1bCxIYW5nAEhhbmlmaV9Sb2hpbmd5YSxSb2hnAEhhbnVub28sSGFubwBIYXRyYW4sSGF0cgBIZWJyZXcsSGVicgBIaXJhZ2FuYSxIaXJhAEltcGVyaWFsX0FyYW1haWMsQXJtaQBJbmhlcml0ZWQsWmluaCxRYWFpAEluc2NyaXB0aW9uYWxfUGFobGF2aSxQaGxpAEluc2NyaXB0aW9uYWxfUGFydGhpYW4sUHJ0aQBKYXZhbmVzZSxKYXZhAEthaXRoaSxLdGhpAEthbm5hZGEsS25kYQBLYXRha2FuYSxLYW5hAEthd2ksS2F3aQBLYXlhaF9MaSxLYWxpAEtoYXJvc2h0aGksS2hhcgBLaG1lcixLaG1yAEtob2praSxLaG9qAEtoaXRhbl9TbWFsbF9TY3JpcHQsS2l0cwBLaHVkYXdhZGksU2luZABMYW8sTGFvbwBMYXRpbixMYXRuAExlcGNoYSxMZXBjAExpbWJ1LExpbWIATGluZWFyX0EsTGluYQBMaW5lYXJfQixMaW5iAExpc3UsTGlzdQBMeWNpYW4sTHljaQBMeWRpYW4sTHlkaQBNYWthc2FyLE1ha2EATWFoYWphbmksTWFoagBNYWxheWFsYW0sTWx5bQBNYW5kYWljLE1hbmQATWFuaWNoYWVhbixNYW5pAE1hcmNoZW4sTWFyYwBNYXNhcmFtX0dvbmRpLEdvbm0ATWVkZWZhaWRyaW4sTWVkZgBNZWV0ZWlfTWF5ZWssTXRlaQBNZW5kZV9LaWtha3VpLE1lbmQATWVyb2l0aWNfQ3Vyc2l2ZSxNZXJjAE1lcm9pdGljX0hpZXJvZ2x5cGhzLE1lcm8ATWlhbyxQbHJkAE1vZGksTW9kaQBNb25nb2xpYW4sTW9uZwBNcm8sTXJvbwBNdWx0YW5pLE11bHQATXlhbm1hcixNeW1yAE5hYmF0YWVhbixOYmF0AE5hZ19NdW5kYXJpLE5hZ20ATmFuZGluYWdhcmksTmFuZABOZXdfVGFpX0x1ZSxUYWx1AE5ld2EsTmV3YQBOa28sTmtvbwBOdXNodSxOc2h1AE55aWFrZW5nX1B1YWNodWVfSG1vbmcsSG1ucABPZ2hhbSxPZ2FtAE9sX0NoaWtpLE9sY2sAT2xkX0h1bmdhcmlhbixIdW5nAE9sZF9JdGFsaWMsSXRhbABPbGRfTm9ydGhfQXJhYmlhbixOYXJiAE9sZF9QZXJtaWMsUGVybQBPbGRfUGVyc2lhbixYcGVvAE9sZF9Tb2dkaWFuLFNvZ28AT2xkX1NvdXRoX0FyYWJpYW4sU2FyYgBPbGRfVHVya2ljLE9ya2gAT2xkX1V5Z2h1cixPdWdyAE9yaXlhLE9yeWEAT3NhZ2UsT3NnZQBPc21hbnlhLE9zbWEAUGFoYXdoX0htb25nLEhtbmcAUGFsbXlyZW5lLFBhbG0AUGF1X0Npbl9IYXUsUGF1YwBQaGFnc19QYSxQaGFnAFBob2VuaWNpYW4sUGhueABQc2FsdGVyX1BhaGxhdmksUGhscABSZWphbmcsUmpuZwBSdW5pYyxSdW5yAFNhbWFyaXRhbixTYW1yAFNhdXJhc2h0cmEsU2F1cgBTaGFyYWRhLFNocmQAU2hhdmlhbixTaGF3AFNpZGRoYW0sU2lkZABTaWduV3JpdGluZyxTZ253AFNpbmhhbGEsU2luaABTb2dkaWFuLFNvZ2QAU29yYV9Tb21wZW5nLFNvcmEAU295b21ibyxTb3lvAFN1bmRhbmVzZSxTdW5kAFN5bG90aV9OYWdyaSxTeWxvAFN5cmlhYyxTeXJjAFRhZ2Fsb2csVGdsZwBUYWdiYW53YSxUYWdiAFRhaV9MZSxUYWxlAFRhaV9UaGFtLExhbmEAVGFpX1ZpZXQsVGF2dABUYWtyaSxUYWtyAFRhbWlsLFRhbWwAVGFuZ3V0LFRhbmcAVGVsdWd1LFRlbHUAVGhhYW5hLFRoYWEAVGhhaSxUaGFpAFRpYmV0YW4sVGlidABUaWZpbmFnaCxUZm5nAFRpcmh1dGEsVGlyaABUYW5nc2EsVG5zYQBUb3RvLFRvdG8AVWdhcml0aWMsVWdhcgBWYWksVmFpaQBWaXRoa3VxaSxWaXRoAFdhbmNobyxXY2hvAFdhcmFuZ19DaXRpLFdhcmEAWWV6aWRpLFllemkAWWksWWlpaQBaYW5hYmF6YXJfU3F1YXJlLFphbmIAQZC2AgvyIMAZmUeFGZlHrhmAR44ZgEeEGZZHgBmeR4AZ4WBHphmER4QZgQ2TGeAPOIMsgBmCLAGDLIAZgCwDgCyAGYAsgBmCLACALACTLAC+LI0ajyzgJB2BOOBIHQClBQGxBQGCBQC2NQeaNQOFNQqEBIAZhQSAGY0EgBmCBIAZnwSAGYkEijiZBIA44AsEgBmhBI2LALuLAYKLrwSxlQ26ZgGCZq1\u002FAY5\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\u002FaVmAEylsDuFsGkFs\u002FgJOAZ4EwgEQKgTAN8AeXkwfin5PhdUQpiJNwEoaDPgCGPgCBPgCAPuC+NoI+DoA2HII2AYA+DYM+B+ErZ2ij4AojBIwjAogjBokjAYMjgxlwAfutOAGWOAjgExk74JUZCaYZAb0ZgjiQGYc4gRmGOJ0Zgzi8GRTFLGAZkxkLkxkL1hkImBlgJtQZAMYZAIEZAYAZAYEZAYMZAIsZAIAZAIYZAMAZAIMZAYcZAIYZAJsZAIMZAIQZAIAZAoYZAODzGQHgwxkBsRniK4QOhIQAjoRj755HBYVHYHSGKQCQKQGGKQCBKQCEKQS9HSCAHWAPrGgCjWgBiWgDgWhg356bELmfBICfYW+pYmKFhicAgycAgScAjicA4GRYAY9YKMsBA4kBA4EBYrDDGUu8GWBhgwQAmgQAgQQAgAQBgAQAiQQAgwQAgAQAgAQFgAQDgAQAgAQAgAQAggQAgQQAgAQBgAQAgAQAgAQAgAQAgAQAgQQAgAQBgwQAhgQAgwQAgwQAgAQAiQQAkAQEggQAhAQAkAQzgQRgrasZA+ADGQuOGQGOGQCOGQCkGQngTRk3mRmANoEZDKsZA4gZBoEZDYUZYDnjdxkDkBkCjBkC4BYZA94ZBYsZA4AZDosZA7cZB4kZBacZB50ZAYEZTeDzGQuNGQGMGQKIGQatGQCGGQeNGQOIGQaIGQbgMhkAthkkiRljpfCWfzAf79kwBeB9MAHwBiEwDfAM0DBrvuG9MGWB8ALqMATv\u002FzB6y\u002FCAGR3fGWAf4I84gsEAAAEsAQAAASwcAAwBR4CSAAACHW4AAh0pAQIdRwACHSmBAwAABgRmMouVoQ0AAAYEZjKLlaEAAwSLlQEAAAcBBGYyi5WhHwAACQEEUlNzfDKGiwkACgIEiwkACQMElaEFAAACBItiAAACBDKB+wAADQsgKy0vPUdRdIGSlJkADAsgKy0vPUdRdJKUmRAAABQLICIuVSstLz1QUWN0RYWKkZKUmQAVCyAiLlUrLS89SVBRY3RFhYqRkpSZCQQgIjxQdQAJAwsVinUACQIvX3UACQItQ4B1AA0CK5KAcQAJAj1jgs8ACQMVYI6AMAAAAihHhbgAAQQRM42MgEoAAQJdegAAAAJdeoRJAAAECyArPQABIAAECyArPQACICsAASABAgsgAAIggQACCyAAAiCBAAYgPVF0kpQAASABAiCBAQEgAAIggQACCyAGASAAAiBjAAILIAEBIAACCyADASAACAsgKz1jdJSZAAIgKwADICs9AQILIAABCwECICsAAWOARAABASw1AAACHYsAAAABi4GzAAACR12APwAAAyArR4zRAAACHSmBPAABBg0xMDY+ogAFDTEwNj4BAAABMAAACQYNMTA2PqIAAAAFDTEwNj4HBg0xMDY+ogMFDTEwNj4JAAMCDTABAAAFDTEwNj4EAjY+AAAABQ0xMDY+AwABAzA2PgEBMFgAAwI2PgIAAAI2PlkAAAYNMTA2PqIAAjY+gBIADwEwHwAjATA7ACcBMDcAMAEwDgALATAyAAABMFcAGAEwCQAEATBfAB4BMMAx7wAAAh0pgA8ABwIwR4CnAAIOICItL0M9PFBRXGNFkZkCDSAiLS9DPTxQXGNFkZkDCyAiLS9DPFBcRZGZgDYAAAILIAAAAAIgkjkAAANAR2CAHwAAAhA7wBLtAAECBGaAMQAAAgSVCQAAAgSVRgABBQ0xMDY+gJkABAYNMTA2PqIJAAACNj4sAAECNj6A3wABAx4cSwACHEsDACwDHEpLAgAIAhxLgR8AGwIEGod1AAACU3OHjQAAAiuSAAAAAiuSNgABAiuSjBIAAQIrkgAAAAIrksBcSwADASOWOwARATCeXQABATDOzS0AAAAAAENuLFVuYXNzaWduZWQATHUsVXBwZXJjYXNlX0xldHRlcgBMbCxMb3dlcmNhc2VfTGV0dGVyAEx0LFRpdGxlY2FzZV9MZXR0ZXIATG0sTW9kaWZpZXJfTGV0dGVyAExvLE90aGVyX0xldHRlcgBNbixOb25zcGFjaW5nX01hcmsATWMsU3BhY2luZ19NYXJrAE1lLEVuY2xvc2luZ19NYXJrAE5kLERlY2ltYWxfTnVtYmVyLGRpZ2l0AE5sLExldHRlcl9OdW1iZXIATm8sT3RoZXJfTnVtYmVyAFNtLE1hdGhfU3ltYm9sAFNjLEN1cnJlbmN5X1N5bWJvbABTayxNb2RpZmllcl9TeW1ib2wAU28sT3RoZXJfU3ltYm9sAFBjLENvbm5lY3Rvcl9QdW5jdHVhdGlvbgBQZCxEYXNoX1B1bmN0dWF0aW9uAFBzLE9wZW5fUHVuY3R1YXRpb24AUGUsQ2xvc2VfUHVuY3R1YXRpb24AUGksSW5pdGlhbF9QdW5jdHVhdGlvbgBQZixGaW5hbF9QdW5jdHVhdGlvbgBQbyxPdGhlcl9QdW5jdHVhdGlvbgBacyxTcGFjZV9TZXBhcmF0b3IAWmwsTGluZV9TZXBhcmF0b3IAWnAsUGFyYWdyYXBoX1NlcGFyYXRvcgBDYyxDb250cm9sLGNudHJsAENmLEZvcm1hdABDcyxTdXJyb2dhdGUAQ28sUHJpdmF0ZV9Vc2UATEMsQ2FzZWRfTGV0dGVyAEwsTGV0dGVyAE0sTWFyayxDb21iaW5pbmdfTWFyawBOLE51bWJlcgBTLFN5bWJvbABQLFB1bmN0dWF0aW9uLHB1bmN0AFosU2VwYXJhdG9yAEMsT3RoZXIAQZDXAguwCA4AAAA+AAAAwAEAAAAOAAAA8AAAAAB\u002FAAAAgAMBAAA8QVNDSUlfSGV4X0RpZ2l0LEFIZXgAQmlkaV9Db250cm9sLEJpZGlfQwBEYXNoAERlcHJlY2F0ZWQsRGVwAERpYWNyaXRpYyxEaWEARXh0ZW5kZXIsRXh0AEhleF9EaWdpdCxIZXgASURTX0JpbmFyeV9PcGVyYXRvcixJRFNCAElEU19UcmluYXJ5X09wZXJhdG9yLElEU1QASWRlb2dyYXBoaWMsSWRlbwBKb2luX0NvbnRyb2wsSm9pbl9DAExvZ2ljYWxfT3JkZXJfRXhjZXB0aW9uLExPRQBOb25jaGFyYWN0ZXJfQ29kZV9Qb2ludCxOQ2hhcgBQYXR0ZXJuX1N5bnRheCxQYXRfU3luAFBhdHRlcm5fV2hpdGVfU3BhY2UsUGF0X1dTAFF1b3RhdGlvbl9NYXJrLFFNYXJrAFJhZGljYWwAUmVnaW9uYWxfSW5kaWNhdG9yLFJJAFNlbnRlbmNlX1Rlcm1pbmFsLFNUZXJtAFNvZnRfRG90dGVkLFNEAFRlcm1pbmFsX1B1bmN0dWF0aW9uLFRlcm0AVW5pZmllZF9JZGVvZ3JhcGgsVUlkZW8AVmFyaWF0aW9uX1NlbGVjdG9yLFZTAFdoaXRlX1NwYWNlLHNwYWNlAEJpZGlfTWlycm9yZWQsQmlkaV9NAEVtb2ppAEVtb2ppX0NvbXBvbmVudCxFQ29tcABFbW9qaV9Nb2RpZmllcixFTW9kAEVtb2ppX01vZGlmaWVyX0Jhc2UsRUJhc2UARW1vamlfUHJlc2VudGF0aW9uLEVQcmVzAEV4dGVuZGVkX1BpY3RvZ3JhcGhpYyxFeHRQaWN0AERlZmF1bHRfSWdub3JhYmxlX0NvZGVfUG9pbnQsREkASURfU3RhcnQsSURTAENhc2VfSWdub3JhYmxlLENJAEFTQ0lJAEFscGhhYmV0aWMsQWxwaGEAQW55AEFzc2lnbmVkAENhc2VkAENoYW5nZXNfV2hlbl9DYXNlZm9sZGVkLENXQ0YAQ2hhbmdlc19XaGVuX0Nhc2VtYXBwZWQsQ1dDTQBDaGFuZ2VzX1doZW5fTG93ZXJjYXNlZCxDV0wAQ2hhbmdlc19XaGVuX05GS0NfQ2FzZWZvbGRlZCxDV0tDRgBDaGFuZ2VzX1doZW5fVGl0bGVjYXNlZCxDV1QAQ2hhbmdlc19XaGVuX1VwcGVyY2FzZWQsQ1dVAEdyYXBoZW1lX0Jhc2UsR3JfQmFzZQBHcmFwaGVtZV9FeHRlbmQsR3JfRXh0AElEX0NvbnRpbnVlLElEQwBMb3dlcmNhc2UsTG93ZXIATWF0aABVcHBlcmNhc2UsVXBwZXIAWElEX0NvbnRpbnVlLFhJREMAWElEX1N0YXJ0LFhJRFMAQdDfAgvyAgEAnAYHTQMEEACPCwAAEQAIAFNKUQBSAFMAOlRVAFdZP11cAEZhY0JkAGYAaABqAGwAbgAAQAAAAAAaAJMAACA1ACcAIQAkIioAE2ttACYkJxQWGBscPh4\u002FHzk9IiFBHkAlJSYoICpILEMuSzBMMkRCmQAAlY99foOEEoCCdncSe6N8eHmKkpimoIUAmqGTdTOVAI4AdJmYl5YAAJ4AnAChoBUuLzC0tU+qqRIUHiEiIio0NaanNh9JAACXAVraHTYFAMTDxsXIx8rJzMvE1UXWQtdG2M7Q0tTa2e72\u002Fg4HD4CfACGAo+0AwEDGYOfb5pnAAAAGYNwp\u002FRUSBhb43QYVEoQIxhb\u002F3wPAQABGYN7gbTc4ORUUFxYAGhkcGwBft2VERwBPYk5QAABIAAAAo6SlAAAAAAC2AABaAEcAW1ZYYF5waW9OADtnuAAAAABFqIqLjKusWFivlLBvsl1cX15hYGZnaGliY2Rla2ptbG9ucXAAQdDiAgtzmQMIAwEDpQMTAwADQgORA5cDqQNGAEkATABTAGkABwO8Ak4ASgAMAzUFUgVIADEDVABXAAoDWQBBAL4CCB+AHygfkB9oH6Afuh+GA7Mfyh+JA8MfoQP6H48D8x9EBUYFOwVOBT0FuANiBEqmYB7JA2sA5QBB0OMCC+YggQAoAJcAKgCBgCoAl8ArABWBLACXAC0AgUAtAJcALgAVQS4AmQEvABYgMABCCEAAQopEAEIESgCWAEwAF4FMAEICTQBCQ04AL8FPAELDUAC\u002FQFIAQgNTAEIJVQBCCFoAlgBeAEJDXgCBwF8AQgFoAELBawCFAXEAF8NxAERIcwBEg3cAQoN5AL4CewCXQXwAQgF9AEQEfgBCDoAAQoGHAESHiQCDBKwAFwO2AIMCuAAUAtAAlgDRAIAA3QCXgN4AgIDfAJcA4QA+QeEAgMDhAL4E4gCug+oAroLyAK0B9AAuwfQAA0H1AAMD\u002FACBQP4APgIAAb7AAQG+AQMBvkAGAb5ADgE+AhQBvsAVAb4BFwFEgR0BREEwAUQCNAFEgTUBRIM2AUSDOAFEhjoBRAE+AYXAYQGugogBL0KdAYQBsAGEwLQBhEBKAoRATAKEAE0CLgRWAi7BcgIgAXcChMB3AoTAjAKEgI0CrkGWAoSAlwKEANICLsHSAiAB1wKEAOUCroHyAoQAEgOEADADIsExAy6BMgOugVIDhIB2A64BdwOFwIwDhcCsAy8BtwOBAMMDhMDQA4RA0wOEgNQDhMDVA4QA1wOEQNoDhMDcAy5B3QOFwN0DhADeA4VA3gOEQOADhMDkA4RA5wOEgOgDhMDpA4QA6wOEQO4DhIAJBIEAPwSEhMEGhIDEBoTBzgYgAdAGhMDQBoMDSwcfxEwHgxdPB4EAXgeD0mYHRB2AB0KJjgdEGJMHQg2fBxaCpQeFgKYHvsCmB0QNqAdEoK4HIgHAB0SDwAciAcIHRIPCByIBxAdEgsQHIgHGB0SCxgc+EcgHRILQByIB0gdEgtIHIgHUB0SD1Ac+TNYHgEDcB76A3AeAwNwHvgDdB4BA3Qe+gN0HgMDdB74A3geAQN4HvoDeB4DA3ge+AN8HgEDfByAI4AcgCOQHIAjoB74F7AeAwO4HvgDvB5dA7weAgO8HF8HvBz5E8AeAQPIHvoDyB4DA8ge+A\u002FMHgMD0B66C9QeAwPYHPkP3B4DA+AeuA\u002FkHgMD6Bz4B+wcCgfsHvoP8B4BA\u002Fge+gP4HgMD+B74A\u002FweAQP8Hl4D\u002FBx4BAAiVhAAIgUAECJfABQiBAAkIl0AJCJmACQiBwAsIhcAMCLEADQiFgA0IscANCJcBDwiXwREIs8AVCIHAFwiVBRwIgcAeCBUCHwgfBSAIg4UiCBVEJQiXACoIGQFACIGAQAi\u002FwEAIGUFBCIHAQQi\u002FQEIILYVCCIFARQiXgEUIlUJGCJcASAiZQEgIl4BICIEASQiAgEkIgQBKCAKBSgiVBEsIH0JNCIFATgiZwE4IgwJPCJVCUQgZAVQIm4BUCBnGVAiXwFcIgQBYCJdAWAiZgFgIl8BYCIEAWQiXQFkImYBZCJvAWQiXAFoIgUBaCJeAWgiZwFoIlQJbCJdAXAiZgFwIl8BcCIEAXQiXQF0ImYBdCJvAXQiXAF4IgUBeCJeAXgiZwF4IFQJfCJlAYgg+gWYIvoBrCL5Bcwi+AIEIvkCCCL4Agwi+AYkIhQCLCLFAiwiFwIsIsQCMCL5AkAi+AJEIvsGRCL4BmAi+QpsIRAGdCEQBnghEAaAIRAGhCEQBogg+AqsIRAK4CCCCuggeQcoInwQYCSNFGgmXwBwJpQQdCStFHwmbwCEJoQQiCSVFJAmZwCYJJQ0nCR+NLQkfDTQJgYA6CbMAgwqZAJ0Kl0CdCpmAnQq+ALcKFQEfC4HAWwuBwKcLgcC8C60EwAutRMILrYTEC4PzxgstheALAx3jCy2I8QuBAAAMg4INDIQLEwyEQhkMIgEcDCLBHAwigR0MIkEeDCIBHwyEACUMI8EmDISAJwyFwCcMhAsrDIRCMQwiATQMIsE0DCKBNQwiQTYMIgE3DIQAPQwgwj0MhIA\u002FDIXAPwwtSkwMH0VRDJ\u002FKUwytFVkMA4dkDEEHgAyJgIMMKcGDDKlBhAyJAIUMKUGFDKnChQyJAIcMj0CHDI2AhwxBEogMAwKRDJkAlAyjRJQMI4OWDC0HmAyvhJsMocKdDLUAnwyzQJ8MhYCfDIMYoAwjQqwMI0WtDJfArwyhBLAMpUGyDJcAswyZQLMMl4CzDJnAswytF7QMhcC\u002FDLMBwAyxwMAMswDBDDFBwQy1wMEMswDCDLFBwgwzAcMMMYHDDIUAxAyxQMQMM4HEDIUAxQy1QMUMt4DFDLXAxQyxAMYMNUHGDLPAxgyxAccMs8DHDLUAyAyzQMgMsYHIDC9CyQwxQcoMtcDKDLEAywyzQMsMtYDLDLHAywwvAcwMtYDMDLPAzAy1AM0MsUDNDLWAzQyFwM0MsQLODLNAzwyxgM8MhcDPDLEB0AyzwNAMsQHRDLXA0QyzANIMhUDSDLWA0gyFwNIMMwHTDLGB0wyzQNQMhYDUDLHA1AyzANUMhUDVDLWA1QyxwNUMIQXWDCWF2AylAtsMmUDcDBeB3AyZAN0Ml0HdDCcB3gyFgt4MicDfDD8E4AyZAOIMm0DiDL+D4gwZQuQMBULlDD9D5gwxwecMhUDoDLGB6AyFQOkMB4HpDIkA6gyXQOoMGYLqDJ2A6wyNwOsMPwjsDAUB8AybgPAMl8HwDJuA8QyZwPEMFwXyDJmA9AwXwfQMGUH1DJfA9QybAPYMmUD2DBeC9gwZgfcMoQT4DCVF+gwlxfwMJUH\u002FDJnA\u002FwwDAacpgQDcKZWB\u002FCkDAf4pAwLXKoFA2iqCFEA+gn9KPoI\u002Faj4CoYo+EAGbPoIvnD6QxbM+lwHAPhnBwD4\u002FQcE+r8LEPoRBxz6tBMg+gUDKPgSDyj6gA8w+oALOPoSAzz4gAdA+IMHQPq6E0T6FwNM+LTHUPq3L9D4vifo+LQL\u002FPi8vAD+lghc\u002FscAYP68HGT+v\u002Fxw\u002FpYE8P69kPT8xIFQ\u002FMZtkPzEBfD+zg3w\u002FsUB+P72Afj+7wH4\u002FswB\u002FPwMFhD+tAYw\u002FFcOMPy1Gjj8DzJE\u002FlcaXP68BnD+FAJ0\u002FL4WdP606oD8vRL0\u002FH2\u002FAPx\u002FB1z+tX9g\u002FgQDoPx9P6D8fg\u002FA\u002FH4PyPx+D9D+fgfY\u002Fgwf4P4NN4EGRD+dBkoEmRJLAKkQSgUtEEsHSRBLCLkUSgW5FkgBORpKDV3QSw250Hw0AdR+NBnUfDQ11n4MTdR+JFXUfDRp1H40gdRUQJ3WfQy91n0UxdR8NNHUfjTp1lQNBdR9EQ3Wfg0V1H41HdZUHTnWfg1J1H41UdR8NW3UfjWF1Hw1odR+NbnUfDXV1H417dR8NgnUfjYh1Hw2PdR+NlXUfDZx1H42idQMBqXWfCKp1gUCudZ+DrnWBQLB1n4ywdYHAtnUtA7d1n4i4dYHAvHWfA711gcC+dZ8Mv3WBQMV1LYPFdZ8Ix3WBQMt1n4PLdYFAzXWfjM11gcDTdS0D1HWfiNV1gcDZdZ8D2nWBwNt1nwzcdYFA4nUtg+J1nwjkdYFA6HWfg+h1gUDqdZ+M6nWBwPB1LQTxdR+F83UfBfZ1H4X4dR8F+3Ufhf11nwQMeJ9BDnifBQ94A8IReK3QEngDARt4LQKAe61NgXsDQoh7gcCJey1FinsDBI17gYCQewPckXstBaB7rciie4NEqHutyKp7lwBAfCFFQHwlDUR8h4BKfBXBSnwXQUt8Hw1MfBeCUnyZgFN8l8BTfJeBWnyXAGR8LwGAfIGAgHwDFoR8wQSQfAMBlHwfBfx+rAEAvhDRAL6sRwm+EDkNviyHKb4sAi2+kDcuvpD\u002FSb4QvGm+AAAAACAAAABhAAIABAAGALwDCAAKAAwAFQCVAKUAuQDBAMMAxwDLANEA1wDdAOAA5gD4AAgBCgFzABABEgEUASABLAFEAU0BUwFiAWgBagF2AZIBlAGpAbsBxwHRAdUBuQLXATsA2QHbAbcA4QH8AQwCGAIdAiMCJwKjAzMCPwJCAksCTgJRAl0CYAJpAmwCbwJ1AngCgQKKApwCnwKjAq8CuQLFAskCzQLRAtUC5wLtAvEC9QL5Av0CBQMJAw0DEwMXAxsDIwMnAysDLwM1Az0DQQNJA00DUQMLD1cDWwNfA2MDZwNrA28DcwN5A30DgQOFA4kDjQORA5UDmQOdA6ED3BClA8kDzQPZA90D4QPvA\u002FEDPQRPBJkE8AQCBUoFZAVsBXAFcwWaBfoF\u002FgUHBgsGFAYYBh4GIgYoBo4GlAaYBp4GogarBqwD8watA\u002FYGrgP5Bq8D\u002FAbMA\u002F8GzQMCB84DBQcJBw0HEQeGAzIHNQe5AzcHOweIA1MHiQNWB5ADaweKA3cHsAOJB44DmQefB6MHjAO4B48Duwe0AL4HwAfCBxAgywcuAM0HzwcgANIH1gfbB98H5AfqB\u002FAHIAD2BxIiAQgFCAcIHQglCCcIQwAtCDAIkAE2CDkITgBFCEcITAhOCFEIWgCpA1oAUwhXCGAIaQBiCGUIbwh0CHoIfgiiCEkApAimCKkIVgCrCK0IsAi0CFgAtgi4CLsIwAjCCMUIdgDHCMkIzAjQCHgA0gjUCNcI2wjeCOQI5wjwCPMI9gj5CAIJBgkLCQ8JFAkXCRoJIwksCTsJPglBCUQJRwlKCVYJXAlgCWIJZAloCWoJcAl4CXwJgAmGCYkJjwmRCTAAkwmZCZwJngmhCaQJYS3Na5+fpgmxCbwJxwmVCqEKFQsgACcLMQuNC6ELpQupC60LsQu1C7kLvQvBC8ULIQw1DDkMPQxBDEUMSQxNDFEMVQxZDG8McQxzDKAMvAzcDOQM7Az0DPwMBA0MDRQNIg0uDXoNgg2FDYkNjQ2dDbENtQ28DcINxg0oDiwOMA4yDjYOPA4+DkEOQw5GDncOew6JDo4OlA6cDqMOqQ60Dr4Oxg7KDs8O2Q7dDuQO7A7zDvgOBA8KDxUPGw8iDygPMw89D0UPTA9RD1cPXg9jD2kPcA92D30Pgg+JD40Png+kD6kPrQ+4D74PyQ\u002FQD9YP2g\u002FhD+UP7w\u002F6DwAQBBAJEA8QExAaEB8QIxApEC8QMhA2EDkQPxBFEFkQYRB5EHwQgBCVEKEQsRDDEMsQzxDaEN4Q6hDyEPQQABEFERERQRFJEU0RUxFXEVoRbhFxEXURexF9EYERhBGMEZIRlhGcEaIRqBGrEW+nrxGyEbYRjQK+ERASDhMMFJAUlRRTFWwVchV4FX4VihWWFSsAoRW5Fb0VwRXFFckVzRXhFeUVSRZiFogWjhZMF1IXVxd3F3cYfRgRGdMZdxp\u002FGp0aohq2GsAaxhraGt8a5RrzGiMbMBs4GzwbUhvJG9sb3RvfG2QxIBwiHCQcJhwoHCocSBx+HMQc0hzXHOAc6Rz7HAQdCR0pHUQdRh1IHUodTB1OHVAdUh1yHXQddh14HXodgR2DHYUdhx2WHZgdmh2cHZ4doB2iHaQdph2oHaodrB2uHbAdsh22HfQDuB0HIrodAiK8HcQd9APGHQciyB0CIsod0h30A9QdByLWHQIi2B3gHfQD4h0HIuQdAiLmHe4d9APwHQci8h0CIvQd\u002Fh0AHgIeBB4GHggeCh4MHg4eFh45Hj0eQx5gHi0GaB50HiwGhB70HgAfEx8lHzgfOh8+H0QfSh9MH1AfUh9aH10fXx9lH2cftTBtH8Uf2x\u002FfH+Ef5h8zIEQgRSFVIVshVSJzIwBBwIQDC4ZJIIgghDIzIIEgpzFvMdA0MdAyM9A0QYBBgUGCQYNBiEGKAABDp0WARYFFgkWISYBJgUmCSYgAAE6DT4BPgU+CT4NPiAAAAABVgFWBVYJViFmBAAAAAGGAYYFhgmGDYYhhigAAY6dlgGWBZYJliGmAaYFpgmmIAABug2+Ab4Fvgm+Db4gAAAAAdYB1gXWCdYh5gQAAeYhBhEGGQahDgUOCQ4dDjESMRYRFhkWHRahFjEeCR4ZHh0enSIJJg0mESYZJqEmHSUppakqCS6dMgUynTIxMAABrIGtOgU6nToy8Am5PhE+GT4tSgVKnUoxTgVOCU6dTjFSnVIxVg1WEVYZVilWLVahXglmCWYhagVqHWoxPm1WbRAB9AUQAfgFkAH4BTEpMamxqTkpOam5qQQCMSQCMTwCMVQCM3ACE3ACB3ACM3ACAxACEJgKExgCER4xLjE+o6gGE6wGEtwGMkgKMagCMRFpEemR6R4FOAIDFAIHGAIHYAIFBj0GRRY9FkUmPSZFPj0+RUo9SkVWPVZFTplSmSIxBAIdFAKfWAITVAIRPAIcuAoRZAIRoAGYCagByAHkCewKBAncAeQAghiCHIIogqCCDIItjAmwAcwB4AJUCgIEAk4iBIMUggagAgZEDgZUDgZcDgZkDgQAAAJ8DgQAAAKUDgakDgcoDgQEDmAekB7AAtAC2ALgAygABA7gHxAe+AMQAyAClAw0TAAED0QDRB8YDwAO6A8EDwgMAAJgDtQMVBIAVBIgAAAATBIEGBIgaBIEYBIAjBIYYBIY4BIY1BIA1BIgAAAAzBIFWBIg6BIE4BIBDBIZ0BI8WBIYQBIYQBIgVBIbYBIgWBIgXBIgYBIQYBIgeBIjoBIgtBIgjBIQjBIgjBIsnBIgrBIhlBYIFJwYALAAtIS0ALiMtJwYATSFNoE0jTdUGVAYAAAAAwQZUBtIGVAYoCTwJMAk8CTMJPAkVCQAnAScCJwcnDCcNJxYnGie+CQkACRmhCbwJrwm8CTIKPAo4CjwKFgoAJgEmBiYrCjwKRwtWCz4LCQAJGSELPAuSC9cLvgsIAAkACBlGDFYMvwzVDMYM1QzCDAQACBM+DQgACQAIGdkNyg3KDQ8FEgAPFU0OMg7NDrIOmQ4SABIIQg+3D0wPtw9RD7cPVg+3D1sPtw9AD7UPcQ9yD3EPAANBD7IPgQ+zD4APsw+BD3EPgA+SD7cPnA+3D6EPtw+mD7cPqw+3D5APtQ8lEC4QBRs1GwAAAAAHGzUbAAAAAAkbNRsAAAAACxs1GwAAAAANGzUbERs1GzobNRsAAAAAPBs1Gz4bNRtCGzUbQQDGAEIAAABEAEUAjgFHAE8AIgJQAFIAVABVAFcAYQBQAlECAh1iAGQAZQBZAlsCXAJnAAAAawBtAEsBbwBUAhYdFx1wAHQAdQAdHW8CdgAlHbIDswO0A8YDxwNpAHIAdQB2ALIDswPBA8YDxwNSAmMAVQLwAFwCZgBfAmECZQJoAmkCagJ7HZ0CbQKFHZ8CcQJwAnICcwJ0AnUCeAKCAoMCqwGJAooCHB2LAowCegCQApECkgK4A0EApUIAh0IAo0IAsccAgUQAh0QAo0QAsUQAp0QArRIBgBIBgUUArUUAsCgChkYAh0cAhEgAh0gAo0gAiEgAp0gArkkAsM8AgUsAgUsAo0sAsUwAozYehEyxTK1NgU2HTaNOh06jTrFOrdUAgdUAiEwBgEwBgVAAgVAAh1IAh1IAo1oehFIAsVMAh1MAo1oBh2ABh2Ieh1QAh1QAo1QAsVQArVUApFUAsFUArWgBgWoBiFaDVqNXgFeBV4hXh1ejWIdYiFmHWoJao1qxaLF0iHeKeYphAL4CfwGHQQCjQQCJwgCBwgCAwgCJwgCDoB6CAgGBAgGAAgGJAgGDoB6GRQCjRQCJRQCDygCBygCAygCJygCDuB6CSQCJSQCjTwCjTwCJ1ACB1ACA1ACJ1ACDzB6CoAGBoAGAoAGJoAGDoAGjVQCjVQCJrwGBrwGArwGJrwGDrwGjWQCAWQCjWQCJWQCDsQMTAwAfgAAfgQAfwpEDEwMIH4AIH4EIH8K1AxMDEB+AEB+BlQMTAxgfgBgfgbcDk7cDlCAfgCEfgCAfgSEfgSAfwiEfwpcDk5cDlCgfgCkfgCgfgSkfgSgfwikfwrkDk7kDlDAfgDEfgDAfgTEfgTAfwjEfwpkDk5kDlDgfgDkfgDgfgTkfgTgfwjkfwr8Dk78DlEAfgEAfgZ8DEwNIH4BIH4HFAxMDUB+AUB+BUB\u002FCpQOUAAAAWR+AAAAAWR+BAAAAWR\u002FCyQOTyQOUYB+AYR+AYB+BYR+BYB\u002FCYR\u002FCqQOTqQOUaB+AaR+AaB+BaR+BaB\u002FCaR\u002FCsQOAtQOAtwOAuQOAvwOAxQOAyQOAAB9FAyAfRQNgH0UDsQOGsQOEcB\u002FFsQPFrAPFAAAAsQPCth\u002FFkQOGkQOEkQOAkQPFIJMgkyDCqADCdB\u002FFtwPFrgPFAAAAtwPCxh\u002FFlQOAlwOAlwPFvx+Avx+Bvx\u002FCuQOGuQOEygOAAAO5QspCmQaZBJkA\u002Fh+A\u002Fh+B\u002Fh\u002FCxQOGxQOEywOAAAPBE8EUxULLQqUGpQSlAKEDlKgAgIUDYAB8H8XJA8XOA8UAAADJA8L2H8WfA4CpA4CpA8UglAIgICAgICAgICAgILMuLi4uLjIgMiAyIAAAADUgNSA1IAAAACEhAAAghT8\u002FPyEhPzIgAAAAADBpAAA0NTY3ODkrPSgpbjAAKwASIj0AKAApAAAAYQBlAG8AeABZAmhrbG1ucHN0UnNhL2NhL3OwAENjL29jL3WwAEZIAB8AAAAg3wEBBCROb1BRUlJSU01URUxUTUsAxQBCQwBlRUYATW\u002FQBUZBWMADswOTA6ADESJEZGVpajHQNzHQOTHQMTAx0DMy0DMx0DUy0DUz0DU00DUx0DY10DYx0Dgz0Dg10Dg30Dgx0ElJSUlJSVZWSVZJSVZJSUlJWFhJWElJTENETWlpaWlpaWl2dml2aWl2aWlpaXh4aXhpaWxjZG0w0DOQIbiSIbiUIbjQIbjUIbjSIbgDIrgIIrgLIrgjIrgAAAAlIrgrIisiKyIAAAAuIi4iLiIAAAA8IrhDIrhFIrgAAABIIrg9ALgAAABhIrhNIrg8ALg+ALhkIrhlIrhyIrh2Irh6IriCIriGIriiIrioIripIrirIrh8IriRIriyIjgDCDAxADEAMAAyMCgAMQApACgAMQAwACkAKDIwKTEALgAxADAALgAyMC4oAGEAKQBBAGEAKyIAAAAAOjo9PT09PT3dKrhqVgBOACg2P1mFjKC6P1EAJixDV2yhtsGbUgBeen+dpsHO57ZTyFPjU9dWH1frWAJZClkVWSdZc1lQW4Bb+FsPXCJcOFxuXHFc213lXfFd\u002Fl1yXnpef170Xv5eC18TX1BfYV9zX8NfCGI2YktiL2U0ZYdll2WkZbll4GXlZfBmCGcoZyBrYmt5a7Nry2vUa9trD2wUbDRsa3AqcjZyO3I\u002FckdyWXJbcqxyhHOJc9x05nQYdR91KHUwdYt1knV2dn12rna\u002Fdu5223fid\u002FN3Onm4eb55dHrLevl6c3z4fDZ\u002FUX+Kf71\u002FAYAMgBKAM4B\u002FgImA44EABxAZKTg8i4+VTYZrhkCITIhjiH6Ji4nSiQCKN4xGjFWMeIydjGSNcI2zjauOyo6bj7CPtY+RkEmRxpHMkdGRd5WAlRyWtpa5luiWUZdel2KXaZfLl+2X85cBmKiY25jfmJaZmZmsmaia2JrfmiWbL5symzybWpvlnHWef56lngAWHigsVFhpbnuWpa3o9\u002FsSMAAAQVNEU0VTSzCZMAAAAABNMJkwAAAAAE8wmTAAAAAAUTCZMAAAAABTMJkwAAAAAFUwmTAAAAAAVzCZMAAAAABZMJkwAAAAAFswmTAAAAAAXTCZMAAAAABfMJkwAAAAAGEwmTBkMJkwAAAAAGYwmTAAAAAAaDCZMG8wmTByMJkwdTCZMHgwmTB7MJkwRjCZMCAAmTCdMJkwiDCKMKswmTAAAAAArTCZMAAAAACvMJkwAAAAALEwmTAAAAAAszCZMAAAAAC1MJkwAAAAALcwmTAAAAAAuTCZMAAAAAC7MJkwAAAAAL0wmTAAAAAAvzCZMAAAAADBMJkwxDCZMAAAAADGMJkwAAAAAMgwmTDPMJkw0jCZMNUwmTDYMJkw2zCZMKYwmTDvMJkw\u002FTCZMLMwyDAAEQABqgKsrQMEBbCxsrO0tRoGBwghCRFhERQRTAABs7S4ur\u002FDxQjJywkKDA4PExUXGBkaGx4iLDM43d5DREVwcXR9foCKjQBOjE4JTttWCk4tTgtOMnVZThlOAU4pWTBXuk4oACkAABECEQMRBREGEQcRCRELEQwRDhEPERARERESESgAABFhESkAKAACEWERKQAoAAURYREpACgACRFhESkAKAALEWERKQAoAA4RYREpACgADBFuESkAKAALEWkRDBFlEasRKQAoAAsRaRESEW4RKQAoACkAAE6MTglO21aUTm1RA05rUV1OQVMIZ2twNGwoZ9GRH1flZSpoCWc+eQ1UeXKhjF15tFLjTnxUZlvjdgFPx4xUU215EU\u002FqgfOBT1V8Xodlj3tQVEUyADEAMwAwAAARAAIDBQYHCQsMDg8QERIAEQBhAmEDYQVhBmEHYQlhC2EMYQ4RYREAEQ5htwBpCxEBYwBpCxFuEQBOjE4JTttWlE5tUQNOa1FdTkFTCGdrcDRsKGfRkR9X5WUqaAlnPnkNVHlyoYxdebRS2Hk3dXNZaZAqUXBT6GwFmBFPmVFjawpOLU4LTuZd81M7U5dbZlvjdgFPx4xUUxxZMwA2ADQAMAA1MDEACGcxADAACGdIZ2VyZ2VWTFREojAAAgQGCAkLDQ8RExUXGRsdHyIkJigpKissLTAzNjk8PT4\u002FQEJERkdISUpLTU5PUOROjFShMAEwWycBSjQAAVI5AaIwAFpJpDAAJ08MpDAATx0CBU+oMAARB1QhqDAAVANUpDAGTxUGWDwHAEarMAA+GB0AQj9RrDAAQUcARzKuMKwwrjAAHU6tMAA4PU8BPhNPrTDtMK0wAEADPDOtMABANE8bPq0wAEBCFhuwMAA5MKQwDEU8JE8LRxgASa8wAD5NHrEwAEsIAjoZAksspDARAAtHtTAAPgxHK7AwBzpDALkwAjoIAjoPB0MAtzAQABI0ETwTF6QwKh8kKwAguzAWQQA4DcQwDTgA0DAALBwbojAyABcmSa8wJQA8szAhACA4oTA0AEgiKKMwMgBZJacwLxwQAETVMAAUHq8wKQAQTTzaML0wuDAiExogMwwiOwEiRAAhRAekMDkATyTIMBQjANsw8zDJMBQqABIzIhIzKqQwOgALSaQwOgBHOh8rOkcLtzAnPAAwPK8wMAA+RN8w6jDQMA8aACwb4TCsMKwwNQAcRzVQHD+iMEJaJ0JaSUQAUcMwJwAFKOow6TDUMBcAKNYwFSYAFeww4DCyMDpBFgBBwzAsAAUwALlwMQAwALlwMgAwALlwaFBhZGFBVWJhcm9WcGNkbWQAbQCyAEkAVQBzXhBiLWaMVCdZY2sOZrtsKmgPXxpPPnlwAEFuAEG8A0FtAEFrAEFLAEJNAEJHAEJjYWxrY2FscABGbgBGvANGvANnbQBnawBnSAB6a0h6TUh6R0h6VEh6vAMTIW0AEyFkABMhawATIWYAbW4AbbwDbW0AbWMAbWsAbWMACgpPAApPbQCyAGMACApPCgpQAApQbQCzAGsAbQCzAG0AFSJzAG0AFSJzALIAUGFrUGFNUGFHUGFyYWRyYWTRc3IAYQBkABUicwCyAHAAc24Ac7wDc20Ac3AAVm4AVrwDVm0AVmsAVk0AVnAAV24AV7wDV20AV2sAV00AV2sAqQNNAKkDYS5tLkJxY2NjZEPRa2dDby5kQkd5aGFIUGluS0tLTWt0bG1sbmxvZ2x4bWJtaWxtb2xQSHAubS5QUE1QUnNyU3ZXYlbRbUHRbTEA5WUxADAA5WUyADAA5WUzADAA5WVnYWxKBEwEQ0ZRJgFTASenN6trAlKrSIz0ZsqOyIzRbjJO5VOcn5yfUVnRkYdVSFn2YWl2hX8\u002FhrqH+IiPkAJqG23ZcN5zPYRqkfGZgk51UwRrG3Ithh6eUF3rb82FZInJYtiBH4jKXhdnam38cs6Qhk+3Ud5SxGTTahBy53YBgAaGXIbvjTKXb5v6nYx4f3mgfcmDBJN\u002FntaK31gEX2B8foBicsp4woz3lthYYlwTatptD28vfTd+S5bSUouA3FHMURx6vn3xg3WWgIvPYgJq\u002Foo5TudbEmCHc3B1F1P7eL9PqV8NTsxseGUifcNTXlgBd0mEqoq6a7CPiGz+YuWCoGNlda5OaVHJUYFo53xvgtKKz5H1UkJUc1nsXsVl\u002Fm8qea2VapqXns6em1LGZndrYo90XpBhAGKaZCNvSXGJdMp59H1vgCaP7oQjkEqTF1KjUr1UyHDCiKqKyV71X3tjrms+fHVz5E75Vudbul0cYLJzaXSaf0aANJL2lkiXGJiLT655tJG4luFghk7aUO5bP1yZZQJqznFCdvyEfJCNn4hmLpaJUntn82dBbZxuCXRZdWt4EH1emG1RLmJ4litQGV3qbSqPi19EYRdoh3OGlilSD1RlXBNmTmeoaOVsBnTidXl\u002Fz4jhiMyR4pY\u002FU7puHVTQcZh0+oWjllecn56XZ8tt6IHLeiB7knzAcplwWIvATjaDOlIHUqZe02LWfIVbHm20ZjuPTIhNlouJ015AUcBVAAAAAFpYAAB0ZgAAAADeUSpzynY8eV55ZXmPeVaXvny9fwAAEoYAAPiKAAAAADiQ\u002FZDvmPyYKJm0nd6Qt5auT+dQTVHJUuRSUVOdVQZWaFZAWKhYZFxuXJRgaGGOYfJhT2XiZZFmhWh3bRpuIm9ucStyInSReD55SXlIeVB5VnldeY15jnlAeoF6wHv0fQl+QX5yfwWA7YF5gnmCV4QQiZaJAYs5i9OMCI22jziQ45b\u002FlzuYdWDuQhiCAiZOtVFoUYBPRVGAUcdS+lKdVVVVmVXiVVpYs1hEWVRZYlooW9Je2V5pX61f2GBOYQhhjmFgYfJhNGLEYxxkUmRWZXRmF2cbZ1ZneWu6a0Ft227LbiJvHnBucad3NXKvcipzcXQGdTt1HXYfdsp223b0dkp3QHfMeLF6wHt7fFt99H0+fwWAUoPvg3mHQYmGiZaJv4r4isuKAYv+iu2KOYuKiwiNOI9ykJmRdpJ8luOWVpfbl\u002F+XC5g7mBKbnJ9KKEQo1TOdOxhAOUBJUtBc035Dn46fKqACZmZmaWZsZmZpZmZsfwF0cwB0ZQUPEQ8ADwYZEQ8I2QW0BQAAAADyBbcF0AUSAAMECwwNGBrpBcEF6QXCBUn7wQVJ+8IF0AW3BdAFuAXQBbwF2AW8Bd4FvAXgBbwF4wW8BbkFLQMuAy8DMAMxAxwAGAYiBisG0AXcBXEGAAAKCgoKDQ0NDQ8PDw8JCQkJDg4ODggICAgzMzMzNTU1NRMTExMSEhISFRUVFRYWFhYcHBsbHR0XFycnICA4ODg4Pj4+PkJCQkJAQEBASUlKSkpKT09QUFBQTU1NTWFhYmJJBmRkZGR+fn19f38ugoJ8fICAh4eHhwAAJgYAAQABAK8ArwAiACIAoQChAKAAoACiAKIAqgCqAKoAIwAjACPMBgAAAAAmBgAGAAcAHwAjACQCBgIHAggCHwIjAiQEBgQHBAgEHwQjBCQFBgUfBSMFJAYHBh8HBgcfCAYIBwgfDQYNBw0IDR8PBw8fEAYQBxAIEB8RBxEfEh8TBhMfFAYUHxsGGwcbCBsfGyMbJBwHHB8cIxwkHQEdBh0HHQgdHh0fHSMdJB4GHgceCB4fHiMeJB8GHwcfCB8fHyMfJCAGIAcgCCAfICMgJCEGIR8hIyEkJAYkByQIJB8kIyQkCkoLSiNKIABMBlEGUQb\u002FAB8mBgALAAwAHwAgACMAJAILAgwCHwIgAiMCJAQLBAwEHyYGBCAEIwQkBQsFDAUfBSAFIwUkGyMbJBwjHCQdAR0eHR8dIx0kHh8eIx4kHwEfHyALIAwgHyAgICMgJCNKJAskDCQfJCAkIyQkAAYABwAIAB8AIQIGAgcCCAIfAiEEBgQHBAgEHwQhBR8GBwYfBwYHHwgGCB8NBg0HDQgNHw8HDwgPHxAGEAcQCBAfEQcSHxMGEx8UBhQfGwYbBxsIGx8cBxwfHQYdBx0IHR4dHx4GHgceCB4fHiEfBh8HHwgfHyAGIAcgCCAfICEhBiEfIUokBiQHJAgkHyQhAB8AIQIfAiEEHwQhBR8FIQ0fDSEOHw4hHR4dHx4fIB8gISQfJCFABk4GUQYnBhAiECMSIhIjEyITIwwiDCMNIg0jBiIGIwUiBSMHIgcjDiIOIw8iDyMNBQ0GDQcNHg0KDAoOCg8KECIQIxIiEiMTIhMjDCIMIw0iDSMGIgYjBSIFIwciByMOIg4jDyIPIw0FDQYNBw0eDQoMCg4KDwoNBQ0GDQcNHgwgDSAQHgwFDAYMBw0FDQYNBxAeER4AJAAkKgYAAhsAAwIAAwIAAxsABBsAGwIAGwMAGwQCGwMCGwMDGyADGx8JAwIJAgMJAh8JGwMJGwMJGwIJGxsJGxsLAwMLAwMLGxsKAxsKAxsKAiAKGwQKGwQKGxsKGxsMAx8MBBsMBBsNGwMNGwMNGxsNGyAPAhsPGxsPGxsPGx8QGxsQGyAQGx8XBBsXBBsYGwMYGxsaAxsaAyAaAx8aAgIaAgIaBBsaBBsaGwMaGwMbAwIbAxsbAyAbAgMbAhsbBAIbBBsoBh0EBh8dBB8dHR4FHR4FIR4EHR4EHR4EIR4dIh4dISIdHSIdHQAGIgIEIgIEIQIGIgIGIQIdIgIdIQQdIgQFIQQdIQsGIQ0FIgwFIg4FIhwEIhwdIiIFIiIEIiIdIh0dIhodIh4FIhodBRwFHREdIhsdIh4EBR0GIhwEHRsdHRwEHR4EBQQFIgUEIh0EIhkdIgAFIhsdHREEHQ0dHQsGIh4EIjUGAA+dDQ+dJwYAHR0gABwBCh4GHggOHRIeCgwhHRIdIyAhDB0eNQYADxQnBg4dIv8AHR0g\u002FxIdIyD\u002FIQwdHicGBR3\u002FBR0AHSAnBgqlAB0sAAEwAjA6ADsAIQA\u002FABYwFzAmIBMgEgEAX18oKXt9CDAMDQgJAgMAAQQFBgdbAF0APiA+ID4gPiBfAF8AXwAsAAEwLgAAADsAOgA\u002FACEAFCAoACkAewB9ABQwFTAjJiorLTw+PQBcJCVAQAb\u002FCwAL\u002FwwgAE0GQAb\u002FDgAO\u002Fw8AD\u002F8QABD\u002FEQAR\u002FxIAEiEGAAEBAgIDAwQEBQUFBQYGBwcHBwgICQkJCQoKCgoLCwsLDAwMDA0NDQ0ODg8PEBARERISEhITExMTFBQUFBUVFRUWFhYWFxcXFxgYGBgZGRkZICAgICEhISEiIiIiIyMjIyQkJCQlJSUlJiYmJicnKCgpKSkpIgYiACIAIgEiASIDIgMiBSIFIQCFKQEwAQsMAPrxoKKkpqji5ObC+6GjpaepqqyusLK0tri6vL7Aw8XHycrLzM3O0dTX2t3e3+Dh4+Xn6Onq6+zu8piZMTFPMVUxWzFhMaIAowCsAK8ApgClAKkgAAACJZAhkSGSIZMhoCXLJdAC0QLmAJkCUwIAAKMCZqulAqQCVgJXApEdWAJeAqkCZAJiAmACmwInAZwCZwKEAqoCqwJsAgTfjqduAgXfjgIG3\u002FgAdgJ3AnEAegII330CfgKAAqgCpgJnq6cCiAJxLAAAjwKhAqICmALAAcEBwgEK3x7fQQRAAAAAABSZELoQAAAAAJsQuhAFBaUQuhAFMREnETIRJxFVRxM+E0cTVxNVuRS6FLkUsBQAAAAAuRS9FFVQuBWvFbkVrxVVNRkwGQVX0WXRWNFl0V\u002FRbtFf0W\u002FRX9Fw0V\u002FRcdFf0XLRVVVVBbnRZdG60WXRu9Fu0bzRbtG70W\u002FRvNFv0VVVVUEAYQBBAGEAaQBBAGEAQQBDRAAARwAASksAAE5PUFEAU1RVVldYWVphYmNkAGZoAHAAQQBhAEFCAERFRkdKAFMAYQBBQgBERUZHAElKS0xNAE9TAGEAQQBhAEEAYQBBAGEAQQBhAEEAYQBBAGEAMQE3ApEDowOxA9EDJAAfBCAFkQOjA7ED0QMkAB8EIAWRA6MDsQPRAyQAHwQgBZEDowOxA9EDJAAfBCAFkQOjA7ED0QMkAB8EIAULDDAAMAAwADAAMAAwBDoEPgRLBE0ETgSJpjAEqSYouX+fAAECAwQFBgcICgsODxETFBUWFxgaG2EmJS97UaaxBCcGAAEFCCoGHggDDSAZGhscCQ8XCxgHCgABBAYMDhBEkHdFKAYsBgAARwYzBhcQERITAAYOAg80BioGKwYuBgAANgYAADoGLQYAAEoGAABEBgAARgYzBjkGAAA1BkIGAAA0BgAAAAAuBgAANgYAADoGAAC6BgAAbwYAACgGLAYAAEcGAAAAAC0GNwZKBkMGAABFBkYGMwY5BkEGNQZCBgAANAYqBisGLgYAADYGOAY6Bm4GAAChBicGAAEFCCAhCwYQIyoGGhscCQ8XCxgHCgABBAYMDhAoBiwGLwYAAEgGMgYtBjcGSgYqBhobHAkPFwsYBwoAAQQGDA4QMC4wACwAKABBACkAFDBTABUwQ1JDRFdaQQBIVk1WU0RTU1BQVldDTUNNRE1SREpLMDAAaGhLYldbzFPHMIxOGlnjiSlZpE4gZiFxmWVNUoxfjVGwZR1SQn0fdamM8Fg5VBRvlWJVYwBOCU5KkOZdLU7zUwdjcI1TYoF5enoIVIBuCWcIZzN1clK2VU2RFDAVMCxnCU6MTolbuXBTYtd23VJXZZdf71MwADhOBQAJIgFgT65Pu08CUHpQmVDnUM9QnjQ6Bk1RVFFkUXdRHAW5NGdRjVFLBZdRpFHMTqxRtVHfkfVRA1LfNDtSRlJyUndSFTUCACCAgAAIAADHUgACHTM+P1CCipOstri4uCwKcHDKU99TYwvrU\u002FFTBlSeVDhUSFRoVKJU9lQQVVNVY1WEVYRVmVWrVbNVwlUWVwZWF1dRVnRWB1LuWM5X9FcNWItXMlgxWKxY5BTyWPdYBlkaWSJZYlmoFuoW7FkbWida2FlmWu42\u002FDYIWz5bPlvIGcNb2FvnW\u002FNbGBv\u002FWwZcU18iXIE3YFxuXMBcjVzkHUNd5h1uXWtdfF3hXeJdLzj9XShePV5pXmI4gyF8OLBes162XspekqP+XjEjMSMBgiJfIl\u002FHOLgy2mFiX2tf4ziaX81f11\u002F5X4FgOjkcOZRg1CbHYAICAAAAAAAAAAgACgAAAggAgAgAAAiAKIACAAACSGEABAYEMkZqXGeWqq7I011iAFR38wwrPWP8Ymhjg2PkY\u002FErImTFY6ljLjppZH5knWR3ZGw6T2VsZQow42X4ZklmGTuRZgg75DqSUZVRAGecZq2A2UMXZxtnIWdeZ1NnwzNJO\u002FpnhWdSaIVobTSOaB9oFGmdO0Jpo2nqaahqozbbahg8IWunOFRrTjxya59rumu7a406Cx36Ok5svDy\u002FbM1sZ2wWbT5td21BbWlteG2FbR49NG0vbm5uMz3Lbsdu0T75bW5vXj+OP8ZvOXAecBtwlj1KcH1wd3CtcCUFRXFjQpxxq0MocjVyUHIIRoBylXI1RwIgAAAgAAAAAAiAAAACAoCKAAAgAAgKAICIgCAUSHpzi3OsPqVzuD64Pkd0XHRxdIV0ynQbPyR1Nkw+dZJMcHWfIRB2oU+4T0RQ\u002FD8IQPR281DyUBlRM1Eedx93H3dKdzlAi3dGQJZAHVROeIx4zHjjQCZWVnmaVsVWj3nreS9BQHpKek96fFmnWqda7noCQqtbxnvJeydCgFzSfKBC6HzjfAB9hl9jfQFDx30CfkV+NEMoYkdiWUPZYnp\u002FPmOVf\u002Fp\u002FBYDaZCNlYICoZXCAXzPVQ7KAA4ELRD6BtVqnZ7VnkzOcMwGCBIKej2tEkYKLgp2Cs1KxgrOCvYLmgjxr5YIdg2ODrYMjg72D54NXhFODyoPMg9yDNmxrbQIAACAiKqAKACCAKACoICAAAoAiAooIAKoAAAACAAAo1WwrRfGE84QWhcpzZIUsb11FYUWxb9Jwa0VQhlyGZ4ZphqmGiIYOh+KGeYcoh2uHhofXReGHAYj5RWCIY4hndteI3og1RvqIuzSueGZ5vkbHRqCK7YqKi1WMqHyrjMGMG413jS9\u002FBAjLjbyN8I3eCNSOOI\u002FShe2FlJDxkBGRLocbkTiS15LYknyS+ZMVlPqLi5WVSbeVd43mScOWsl0jl0WRGpJuSnZK4JcKlLJKlpQLmAuYKZi2leKYM0spmaeZwpn+mc5LMJsSm0Cc\u002FZzOTO1MZ53OoPhMBaEOopGiu55WTfme\u002Fp4Fnw+fFp87nwCmAoigAAAAAIAAKAAIoICggACAgAAKiIAAgAAgKgCAAEQgFSIAQdDNAwtXTQMAlwUgxgUA5wYARQcAnAgATQkAPAsAPQ0ANg8AOBAgOhkAyxog0xwAzx0A4iAALjAgK6kg7asAOQoBUQ8BcxEBdRMBKxchPxwhnrwhCOABROkBS+kBAEGwzgMLgweyz9QA6APcAOgA2ATcAcoD3AHKCtwEAQPcxwDwwALcwgHcgMID3MAA6AHcwEHpAOpB6QDqAOnMsOLEsNgA3MMA3MIA3gDcxQXcwQDcwQDeAOTASQpDE4AAF4BBGIDAANyAABKwF8dCHq9HG8EB3MQA3MEA3I8AI7A0xoHDANzAgcGAANzBANyiACSdwADcwQDcwQLcwAHcwADcwgDcwADcwADcwADcwbBvxgDcwIgA3JfDgMiAwoDEqgLcsAvAAtzDqcQE3M2AANzBANzBANzCAtxCG8IA3MEB3MSwCwAHjwAJgsAA3MGwNgAHjwAJr8CwDAAHjwAJsD0AB48ACbA9AAePAAmwTgAJsD0AB48ACYYAVABbsDQAB48ACbA8AQmPAAmwSwAJsDwBZwAJjANrsDsBdgAJjAN6sBsB3JoA3IAA3IAA2LAGQYGAAISEA4KBAIKAwQAJgMGwDQDcsD8AB4ABCbAhANyynsKzgwEJnQAJsGwACYnAsJoA5LBeAN7AANywqsAA3LAWAAmTx4EA3K\u002FEBdzBANyAAdzBAdzEANzDsDQAB44ACaXAANzGsAUBCbAJAAeKAQmwEgAHsGfCQQAE3MED3MBBAAUBgwDchcCCwbCVwQDcxgDcwQDqANYA3ADK5ADoAeQA3ADawADpANzAANyyn8EBAcMCAcGDwIIBAcAA3MABAQPcwLgDzcKwXAAJsC\u002FfsfkA2gDkAOgA3gHgsDgBCLhto8CDyZ\u002FBsB\u002FBsOMACaQACbBmAAma0bAIAtykAAmwLgAHiwAJsL7AgMEA3IHBhMGAwLADAAmwxQAJuEb\u002FABqy0MYG3MGznADcsLEA3LBkxLZhANyAwKfAAAEA3IMACbB0wADcsgzDsVLBsB8C3LAVAdzCANzAA9ywAMAA3MAA3LCPAAmoAAmNAAmwCAAJAAewFMKvAQmwDQAHsBsACYgAB7A5AAkAB7CBAAcACbAfAQePAAmXxoLEsJwACYIAB5bAsDIACQAHsMoACQAHsE0ACbBFAAkAB7BCAAmw3AAJAAew0QEJgwAHsGsACbAiAAmRAAmwIAAJsXQACbDRAAeAAQmwIAAJsXgBCbhDfAQBsArGtIgBBrhEewABuAyVAdgCAYIA4gTYhwfcgcQB3J3DsGPCuAWKxoDQgcaAwYDEsDPAsG\u002FGsUbAsAzDscsB6ADcwLOvBtywPMUABwBBwNUDC+IOAUrASQJKgAKBAoICgwLAAsICAAqEAkIkhQLAB4AJgglAJIAixAKCIoQihiLGAsgCygLMAocCiiLOAowikCKSIo4iiAKJAooCgiQAAwIDBAOLAoAkCAOECYYJWCQCCgYDmCKaIp4iAAkKA6AiDAMOA0AIEAMSA6IipiLACaQiqCKqIowCjQKOAkADQgNEA4ADjwKOJMIHiAmKCZAkRgOsIgAEsCJCCLIiAgS0IkAERAS2IkIEwiLAIsQixiLIIkAJwASRAsoixATMIsIE0CLOIpICkwKUApUCQAVCBQgKlgKUJEQFxAeMCY4JwAaSJEQICCMKI4AFDCOEBZAJkgkOI4IFEiOGBYgFFCOMBRYjmAmKBR4jkAUgI5oJjgUkIyIjmQKaApsCwAXCBcQFnAKsJMYFyAXGB5QJlgkAB6okJiPKBSojKCNAI0IjRCNGI8wFSiNII0wjTiNQI7gknQLOBb4kDApSIwAGvCS6JEAGVCNCBkQGViNYI6ACoQKiAqMCwQLDAgEKpAJDJKUCwQeBCYMJQSSBIsUCgyKFIocixwLJAssCzQKnAosizwKNIpEikyKPIqgCqQKqAoMkAQMDAwUDqwKBJAkDhQmHCVkkAwoHA5kimyKfIgEJCwOhIg0DDwNBCBEDEwOjIqciwQmlIqkiqyKAI6wCrQKuAkEDQwNFA68CjyTDB4kJiwmRJEcDrSIBBIQIsSJDCLMiAwS1IkEERQS3IkMEwyLBIsUixyLJIkEJwQSxAssixQTNIsME0SLPIrICswK0ArUCQQVDBQkKtgKVJEUFxQeNCY8JwQaTJEUICSMLI4EFDSOFBZEJkwkPI4MFEyOHBYkFFSONBRcjmQmLBR8jgSORBSEjmwmPBSUjIyO5AroCuwLBBcMFxQW8Aq0kxwXJBccHlQmXCQEHqyQnI8sFKyMpI0EjQyNFI0cjzQVLI0kjgiNNI08jUSO5JL0CzwW\u002FJA0KUyO\u002FAr0kgyO7JEEGVSNDBkUGVyNZIwExgAwALkYkRCRKJEgkAAhCCUQJBAiIIoYkhCSKJIgkriKYJJYknCSaJAAjBgoCIwQKRgnOB8oHyAfMB0ckRSRLJEkkAQhDCUUJBQiJIockhSSLJIkkryKZJJcknSSbJAEjBwoDIwUKRwnPB8sHyQfNB1AkTiRUJFIkUSRPJFUkUySUIpYilSKXIgQjBiMFIwcjGCMZIxojGyMsIy0jLiMvIwAkoiSgJKYkpCSoJKMkoSSnJKUkqSSwJK4ktCSyJLYksSSvJLUksyS3JIIIgAiBCAIIAwicIp0iCgoLCoMIQAuKLIEMiSyILEAlQSUALQcuAA1AJkEmgC4BDcgmySYAL4QvAg2DL4IvQA3YJtkmhjEEDUAnQScAMYYwBg2FMIQwQQ1AKAAyBw1PKFAogDKELAMuVyhCDYEsgCzAJMEkhiyDLMAoQw3AJcElQClEDcAmwSYFLgIuwClFDQUvBC+ADdAm0SaAL0Aqgg3gJuEmgDCBMMAqgw0EMAMwgQ3AJ8EngjBAK4QNRyhIKIQxgTEGLwgNgS8FMEYNgzCCMQAOAQ5AD4ARghEDDwAPwBEBD0ARAhIEEoEPQBLAD0ISgA9EEoQSgg+GEogSihLAEoISgRGDEUMQQBDBEUEQQREDEgUSwRBBEgAQQxLAEEUShRLCEIcSiRKLEsESgxKAEAARAREAEgESgBKBEkATQRNDE0ITRBPCEwAUwBNAFIAUwBRAFUEVQBcAF0EXwBcAGAIYARhAGIAYABnAGMEYARlAGUIZQRmAGcAZwhnBGYAcwBzAHYAfACACIAQgBiAIIEAggCCCIMAgwSAAIbgiuSIQIxEjHCMdI0wkViRNJFckjCSNJJ4knyQAJQIlBCXAKwElAyUFJcErwivDK8QrxSvGK8crgCWCJYQlyCuBJYMlhSXJK8oryyvMK80rzivPKwAmAiYBJgMmgCaCJoEmgybCJsQmxiYALMMmxSbHJgEsAiwDLAQsBSwGLAcsyibMJs4mCCzLJs0mzyYJLAosCywMLA0sDiwPLNIm1CbWJtMm1SbXJtom3CbeJtsm3SbfJgAnAicBJwMngCeCJ4EngycAKAIoBCgBKAMoBShCKEQoRihJKEsoTShALEooTChOKEEsQixDLEQsRSxGLEcsUShTKFUoSCxSKFQoVihJLEosSyxMLE0sTixPLIIsAS6AMYcsAS8CLwMvBi6FMQAwATACMEBGQUaARsBGwkbBRgBHQEeAR8BHwkcASUBJgEmCSQBKwkkDSgRKQEpBSoBKgUrASsFKwEvBSwBLAUtAS0FLwkvDS4BLgUuCS4NLAEwBTAJMA0wAVkBUQlREVEZUSFRKVExUTlRQVFJUVFRWVIBUglSEVMBUwVQAVQFVQFVBVYBVgVXAVcFVgFbAWABXAlcEVwZXCFcKVwxXDlcQVxJXFFcWV0BXQldEV4BXgVfAV8FXAFgBWEBYQViAWIFYAFkBWQJZA1lAWUCPQo+Aj8CPwY8AkAGQQZBAkEOQgJCBkMCQAEGw5AMLtiD6GBdWDVYSExYMFhE26QI2TDbhEhIWEw4QDuISEgwTDPoZFxZtDxYODwUUDBsPDg8MKw4CNg4LBRVLFuEPDMHiEAziAP8wAv8IAv8nvyIhAl9fISJhAiECQUIhAiECn38CX18hAl8\u002FAgU\u002FImUBAwIBAwIBAwL\u002FCAL\u002FCgIBAwJfIQL\u002FMqIhAiEiX0EC\u002FwDiPAXiE+QKbuQE7gaEzgQOBO4J5mh\u002FBA4\u002FIARCFgFgLgEWQQABACEC4QkA4QHiGz8CQUL\u002FEGI\u002FDF8\u002FAuEr4ij\u002FGg+GKP8v\u002FwYC\u002F1gA4R4gBLbiIRYRIC8NAOYlEQYWJhYmFgbgAOUTYGU24AO7TDYNNi\u002FmAxYbVuUYBOUC5g3pAnYlBuVbFgXGGw+mJCYPZiXpAkUvBfYGABsFBuUW5hMg5VHmAwXgBukC5RnmASQPVgQgBi3lDmYE5gEERgSGIPYHAOURRiAWAOUDgOUQDqUAO6DmAOUhBOYQG+YYB+UuBgcGBUfmAGcGJwXG5QImNukCFgTlBwYnAOUAICUg5Q4AxQAFQGUgBgVHZiAnICcGBeAAB2AlAEUmIOkCJS2rDw0FFgYgJgcApWAlIOUOAMUAJQAlACUgBgBHJmAmIEZABsBlAAXA6QImRQYW4AImBwDlAQBFAOUOAMUAJQCFIAYFR4YAJgcAJwYgBeAHJSYg6QIWDcAFpgAGJwDlACAlIOUOAMUAJQCFIAYFBwYHZiAnICcGwCYHYCUARSYg6QIPBavgAgYFAKVARQBlQCUABQAlQCVARUDlBGAnBidARwBHBiAFoAfgBukCS68ND4AGRwblAABFAOUPAOUIIAYFRmcARgBmwCYARSAFICUmIOkCwBbLDwUGJxblAABFAOUPAOUCAIUgBgUHBocABicAJybAJ6AlACUmIOkCACUH4AQmJ+UBAEUA5SEmBUdmAEcARwYFD2BFB8tFJiDpAusBD6UABicA5QpA5RAA5QEABSDFQAZgR0YABgDnAKDpAiAnFuAE5SgGJcZgDaUE5gAW6QI24B0lAAUAhQDlEAAFAOUCBiXmAQUghQAEAMYA6QIgZeAYBU\u002F2Bw8WTyav6QLrAg8GDwYPBhITEhMn5QAA5Rxg5gYHhhYmheYDAOYcAO8ABq8AL5ZvNuAd5SMnZgemByYnJgXpAralJyZlRgVHJcdFZuUFBicmpwYFB+kCRwYv4R4AAYABIOIjFgRC5YDBAGUgxQAFAGUg5SEAZSDlGQBlIMUABQBlIOUHAOUxAGUg5TsgRvYB6wxA5QjvAqDhTiCiIBHlgeQPFuUJF+USEhNA5UNWSuUAwOUKRgfgAeULJgc24AHlCibgBOUFAEUAJuAE5SwmB8bnAAYn5gNWBFYNBQYg6QKg6wKgthF2RhsG6QKg5RsE5S3AhSblGgYFgOU+4ALlFwBGZyZHYCcGp0ZgD0A26QLlFiCF4APlJGDlEqDpAgtA7xrlDyYnBiA25S0HBgfGAAYHBifmAKfmAiAG6QKg6QKg1gS2IOYGCOYI4ClmB+UnBgeGBwaHBiflAEDpAtbvAuYB7wE2ACYH5RYHZicmB0Yl6QLlJAYHJkcGB0Yn4AB25RznAOYAJyZAlukCQEXpAuUWpDbiAcDhIyBB9gDgAEYW5gUHxmUGpQYlByYFgOIk5DfiBQTiGuQd5jj\u002FgA7iAP9a4gDhAKIgoSDiAOEA4gDhAKIgoSDiAAABAAEAAQA\u002FwuEA4gYg4gDjAOIA4wDiAOMAggAiYQMOAk5CACJhA05iICJhAE7iAIFOIEIAImEDLgD3A5uxNhQVEjQVEhT2ABgZmxf2ARQVdjBWDBIT9gMMFhD2AhebAPsCCwQgq0wSEwTrAkwSEwDkBUDtGeAH5gVoBkjmBOAHLwFvAS8CQSJBAg8BLwyBrwEPAQ8BD2EPAmECZQIvIiGMP0IPDC8CD+sI6hs\u002FagsvYIyPLG8MLwwvDM8M7xcsLwwPDO8X7ICE7wASExIT7wwszxIT70kM7xbsEe8grO894BHvA+AN6zTvRusO74AvDO8BDO8u7ADvZwzvgHASExITEhMSExITEhMSE+sW7ySMEhPsFxITEhMSExITEhPsCO+AeOx7EhMSExITEhMSExITEhMSExITEhMSE+w3EhMSE+wYEhPsgHrvKOwNL6zvHyDvGADvYeEo4ihfISLfQQI\u002FAj+CJEEC\u002F1oCr39GP4B2CzbiHgACgAIg5TDABBbgBgblD+ABxQDFAMUAxQDFAMUAxQDFAOYYNhQVFBVWFBUWFBX2ARE2ERYUFTYUFRITEhMSExITlgT2AjF2ERYS9gUvVhITEhMSExITEeAa7xIA71HgBO+ATuAS7wRgF1YPBAUKEhMSExITEhMSEy8SExITEhMSExESMw\u002FqAWYnEYQvSgQFFi8A5U4gJi4kBRHlUhZEBYDlIwDlVgAva+8C5RjvHOAE5QjvFwDrAu8W6wAP6wfvGOsC7x\u002FrB++AuOWZOO845cARjQTlg+9A7y\u002FgAeUgpDblgIQEVuUI6QIl4Az\u002FJgUGSBbmAhYE\u002FxQkJuU+6gImtuAA7g\u002FkAS7\u002FBiL\u002FNgTiAJ\u002F\u002FAgQufwV\u002FIv8NYQKBAv8HQQI\u002FgD8AAgACf+AQRD8FJALFBkUGZQblDycmB28GQKsvDQ+g5Sx24AAn5SrnCCbgADbpAqDmCqVWBRYlBukC5RTmADblD+YDJ+ADFuUVQEYH5ScGJ2YnJkf2BQAE6QJgNoUGBOUB6QKFAOUhpicmJybgAUUG5QAGByDpAiB25QgEpU8FBwYH5SoGBUYlJoUmBQYF4BAlBDblAwcmJzYFJAcG4AKlIKUgpeABxQDFAOIjDmTiAQQuYOJI5RsnBicGJxYHBiDpAqDlqxzgBOUPYOUpYPyHeP2YeOWA5iDlYuAewuAEgoAFBuUCDOUFAIUABQAlACUA5WTuCeAI5YDjExLvCOU4IOUuwA\u002FgGOUEDU\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\u002FcC\u002FdiAAAAAA4AIBAAADAQDQAwEAgAUBAMUFAQDgBQEAMAYBAFAGAQBbBgEAcAYBAOCOAACQBgEAsAYBANAGAQDwBgEAEAcBAM8IAQDUCAEA4AgBACAJAQBACQEA0AoBACwLAQA4CwEAPQsBAFALAQCVCwEAmQsBALALAQAADAEAOgwBAFAMAQBvDAEAeAwBAIAMAQBQDQEAoA0BAKAOAQDNDgEA4A4BAAAPAQCwDwEAoBABALwQAQDAEAEAEBEBALARAQBQEgEAIIoAAOCGAEHwhAQLZBwAyACsAUUADwBBACAACwAMABMAlAIfABcAFgAdAL8BBQAKADcAFwCPAVwADAAFAAQARQAEAA8ARwA6AAsAHwAJAAQAxABPAPgALQANABYArQDvABwABABHAJEAnAAzAEwE4QIAQeCFBAv0BayA\u002FoBE24BSeoBICIFOBIBC4oBgzWaAQKiA1oAAAAAA3YBDcBGAmQmBXB+AmoKKgJ+Dl4GNgcCMGBEckQMBiQAUKBEJAgUTJMohGAgIACELC5EJAAYAKUEhg0CnCICXgJCAQbyBi4gkIQkUjQABhZeBuACAnIOIgUFVgZ6JQZKVvoOfgWDUYgADgEDSAIBg1MDUgMYBCAkLgIsABoDAAw8GgJsDBAAWgEFTgZiAmICegJiAnoCYgJ6AmICegJgHgbFV\u002FxiaAQAIgIkDAAAoGAAAAgEACAAAAAABAAsGAwMAgImAkCIEgJAAAAAAAAAAAENEgEJpjQABAQDHiq+MBo+A5DMZC4CigJ2P5YrkCogCA0CmixaFk7UJjgEiiYGcgrkxCYGJgImBnIK5IwkLgJ0KgIqCuTgQgZSBlROCuTEJgYiBiYGdgLoiEIKJgKeEuDAQF4GKgZyCuTAQF4GKgY6Ai4O5MBCCiYCJgZyCyigAh5GBvAGGkYDiASiBj4BAopKIioCj7YsAC5YbEBEyg4yLAImDRnOBnYGdgZ2BwZJAu4GhgPWLg4hA3YS4iYGTyYGKgrCEr467gp2ICbiKsZJBr41GwLNI9Z9geHOHoYFBYQeAloTXgbGPALiApYSbi6yDr4ukgMKNiweBrIKxABEMgKskgEDsh2BPMoBIVoRGhRAMg0MTg0GCgUFSgrSNrIGKgqyIiIC8gqOLkYG4gq+MjYHbiAgoCECciZaDuTEJgYmAiYFA0IwC6ZFA7DGGnIHRjgDpiuaNQQCMQPYoCQoAgECNMSuAm4mpIIORiq2NQZY4htKVgI35KgAIEAKAwSAIg0Fbg4gIgK8ygmBQDQC2M9yBYEyrgGAjYDCQDgEE44BItoBH55mFmYWZAAAAAECpgI6AQfSIMZ2E34CzgE2AgEwuvoyAoaRCsICMgI+MQNKPQ0+ZR5GBYHodgUDRgECAEoFDYYOIgGBcFQEQqYCIYNh0vWAhX49DRZlhzF+ZhZmFmQBB4IsEC0FJvYCXgEFlgJeA5YCXgEDpgJGB5oCXgPaAjoBNVIBE1YBQIIFgz22BU52Al4BBV4CLgEDwgEN\u002FgGC4MweEbC6s3wBBsIwECzdDToBODoFGUoFIroBQ\u002FYBgzjqAzohtAAYAnd\u002F\u002FQO9OD1iEgUiQgJSAT2uBQLaAQs6AT+CIRmeAAEHwjAQLE0X\u002FhUDWgLCAQX+Bz4BhB9mAjoAAQZCNBAs3Q3mASreA\u002FoBgIeaBYMvAhUGVgfMAAAAAAAAAgEEegQBDeYBgLR+BYMvAhUGVgfMAAAAAAAAAgABB0I0ECxZBwwgIgaSBTtyqCk6HPz+Hi4COgK6AAEHwjQQLpwRB74BBnoCegFrkg0C1AAAAgN4GBoCKCYGJEIGNgAAAAECfBgABAAESEILzgIuAQIQBAYCiAYBAu4ieKYTaCIGJgKMEAgQIB4CegKCCnIBCKIDXg0Leh\u002FsIgNIBgKERgED8gULUgP6Ap4GtgLWAiAMDA4CLgIgAJoCQgIgDAwOAi4BBQYDhgUZSgdSERRsQioCRgJuMgKGkQNWDQLUAAACAmQAAAAAAAIC3BQATBRECDBEAAAwVBQiPACCLEioICwAHgowGkoGagIyKgNYYEIoBDAoAEBECBgUchY+Pj4iAQKEIgUD3gUE01ZmaRSCA5oLkgEGegUDwgEEugNKAi0DVqYC0AILfCYDegLDdgo3fnoCnh66AQX9gcpuBQNGAQIASgUNhg4iAYE2VQQ0IAIGJAAAJgsOB6cIAlwQAAQGA66BBapG\u002FgbWnjIKZlZSBi4CSAxoAgECGCICfmUCDFQ0NChYGgIhHhyCpgIhgtOSDVLmGjYe\u002FhUI+1IDGAQgJC4CLAAaAwAMPBoCbAwQAFoBBU4FBI4GxSC+9TZEYmgEACICJAwAAKBgAAAIBAAgAAAAAAQALBgMDAICJgJAiBICQQkOKhJ6An5mCooDugoyrg4gxSZ2JYPwFQh1rBeFP\u002F6+JNZmFRhuAWfCBmYS2gwAArIBFW4CygE5AgEQEgEgIhbyApoCOgEGFgEwDAYCeC4CbgEG9gJKA7oBgzY+BpICJgECogE+egABBoJIECxdBSIBFKIBJAgCASCiBSMSFQriBbdzVgABBwJIEC4EE3QCAxgUDAYFB9kCeByWQC4CIgUD8hEDQgLaQgJoAAQBAhTuBQIULCoLCmtqKuYqhgf2HqImPm7yAjwKDm4DJgI+A7YCPgO2Aj4CugruAjwaA9oDtgI+A7YCPgOyBj4D7gPsogOqAjITKgZoAAAOBwRCBvYDvAIGnC4SYMICJgULAgkOzgUCyioiAQVqCQTg5gK+OgYrngI6ApYi1gUCJgb+F0ZgYKAqxvtiLpIpBvACCioKMgoyCjIFM74JBPIBB+YXog96AYHVxgIsIgJuB0YGNoeWC7IFAyYCakbiDo4DegIuAo4BAlILAg7KA44SIgv+BYE8vgEMAj0ENAICugKyBwoBC+4BEniipgIhDKYFCOoVB1ILFirCDQL+AqIDHgfeBvYDLgIiC54FAsYHQgI+AlzKEQMwCgPqBQPqB\u002FYD1gfKAQQyBQQELgECbgNKAkYDQgEGkgEEBAIHQgFaujmA2mYS6hkRXkM+BYD\u002F9GDCBXwCtgZZCHxIvOYadg06BvUDBhkF2gLyDRd+G7BCCAEC2gEIXgUNtgEG4gENZgELvgP6ASUKAt4BCYoBBjYDDgFOIgKqE5oHcgmBvFYBF9YBDwYCVgECIgOuAlIFgVHqASA+BS9mAQmeCRM6AYFCogUSbCIBgcVeBSAWCr4k1mYVg\u002FqiJNZmFYC\u002FvCYdgL\u002FGBAEHQlgQLpwFgMAWBmIiNgkPEWb+\u002FYFH\u002FYFj\u002FQW2B6WB1CYCaV\u002FeHRNWpiGAkZkGLYE0DYKbfn1A5hUDdgVaBjV0wTB5CHUXhU0qEUF9gIAuBTj+E+oRK7xGAYJD5CQCBAAAAAAAAAABg\u002Fc+fQg2BYP\u002F9gWD\u002F\u002FYFg\u002F\u002F2BYP\u002F9gWD\u002F\u002FYFg\u002F\u002F2BYP\u002F9gWD\u002F\u002FYFg\u002F\u002F2BYP\u002F9gWD\u002F\u002FYFg\u002F\u002F2BYP\u002F9gWD\u002F\u002FYFg\u002F\u002F2BYP\u002F9gQBBgJgEC0WgjomGmRiAmYOhMAAIAAsDAoCWgJ6AXxeXh46BkoCJQTBCz0CfQnWdRGtB\u002F\u002F9BgBOYjoBgzQyBQQSBiISRgOOAX4eBl4EAQdCYBAv0AaEDgECCgI6AX1uHmIFOBoBByIOMgmDOIINAvAOA2YFgLn+ZgNiLQNVh8eWZAAAAAKCAi4CPgEVIgECSgkCzgKqCQPWAvAACgUEkgUbjgUMVA4FDBIBAxYFAywSAQTmBQWGDQK0JgZyBQLuBwIFDu4GIgk3jgIyAlYFBrIBgdPuAQQ2BQOICgEF9gdWB3oBAl4FAkoJAj4FA+IBgUmUCgUCogIuAj4DAgErzgUT8hKuDQLyB9IP+gkCADYCPgdcIgeuAQaCBQXQMjuiBQPiCQgQAgED6gdaBQaOBQrOByYFgSyiBQISAwIGKgENSgGBOBYBd54AAQdCaBAumA+iBQMOAQRiAnYCzgJOAQT+A4QCAWQiAsoCMAoBAg4BAnIBBpIBA1YFLMYBhp6SBsYGxgbGBsYGxgbGBsYGxgbGBsYGxgbGBSIWAQTCBmYAAoICJAICKCoBDPQeAQgCAuIDHgI0AgkCzgKqKAEDqgbWOnoBBBIFE84FAqwOFQTaBQxSHQwSA+4LGgUCcEoCmGYFBOYFBYYNArQiCnIFAu4S9gUO7gYiCTeOAjAOAiQAKgUGrgWB0+oFBDIJA4oRBfYHVgd6AQJaCQJKC\u002FoCPgUD4gGBSYxCDQKiAiQCAigqAwAGARDmAr4BEhYBAxoBBNYFAl4XDhdiDQ7eEq4NAvIbvg\u002F6CQIANgI+B14TrgEGggouBQWUajuiBQPiCQgQAgED6gdYLgUGdgqyAQoSByYFFKoRgRfiBQISAwIKJgENRgWBOBYBd5oMAAAAAAAAAAGAz\u002F1m\u002Fv2BR\u002F2BaDQgAgYkAAAmCYQXVYKbfn1A5hUDdgVaBjV0wVB5TSoRQX1gKEIBg5e+PbQLvQO8AAAAAAACIhJGA44CZgFXegEl+ipwMgK6AT5+AAEGAngQLhwSngZEAgJsAgJwAgKyAjoBOfYNHXIFJm4GJgbWBjYFAsIBAvxoqAgoYGAADiCCAkSOICAA5ngsgiAmSIYghC5eBjzuTDoFEPI3JARgIFBwSjUGSlQ2AjTg1EBwBDBgCCYkpgYuSAwgACAMhKpeBigsYCQuqD4CnIAAUIhgUAED\u002FgEICGgiBjQmJqodBqokPYM48LIFAoYGRAICbAICcAAAIgWDXdoC4gLiAuIC4gAAAAKIFBInuA4BfjICLgEDXgJWA2YWOgUFugYuAQKWAmIoaQMaAQOaBiYCIgLkYhIgBAQkDAQAJAgIPFAAEi4oJAAiAkQGBkSgACgwBC4GKDAkECACBkwwoGQMBASgBAAAFAgWAiYGOAQMAAxCAioGvgoiAjYCNgEFzgUHOgpKBsgOARNmAi4BCWACAYb1pgEDJgECfgYuBjQGJypkBloCTAYiUgUCtoYHvCQKB0gqAQQaAvooolzEPiwEZA4GMCQeBiASCixcRAAMFAgXVr8UnCoOJEAEQgYlA4osYQRqugImAQLjvjIKIhq0Gh42DiIaIAKIFBIlf0oBA1IBg3SqAYPPVmUH6hEWvg2wGa99h8\u002FqEYCYcgEDagI+DYcx2gLsRAYL0CYqUkhAaAjAAl4BAyAuAlAOBQK0ShNKAj4KIgIqAQj4BBz2AiIkKt4C8CAiAkBCMQOSCqYgAQZCiBAuRAWAjGYFAzBoBgEIIgZSBsYuqgJKAjAeBkAwPBICUBggDAQYDgZuAogADEIC8gpeAjYBDWoGyA4BhxK2AQMmAQL0BicqZAJeAkwEggpSBQK2gi4iAxYCVi6oci5AQgsYAgEC6gb6MGJeRgJmBjIDV1K\u002FFKBIKG4oOiEDiixhBGq6AiYBAuO+MgoiGrQaHjYOIhogAQbCjBAvTAUCoA4BfjICLgEDXgJWA2YWOgUFugYuA3oDFgJiKGkDGgEDmgYmAiIC5GCiLgPGJ9YGKAAAoECiJgY4BAwADEICKhKyCiICNgI2AQXOBQc6CkoGyA4BE2YCLgEJYAIBhvWVA\u002F4yCnoC7hYuBjQGJkbiajomAkwGIA4hBsYRBPYdBCa\u002F\u002F84vUqouDt4eJhaeHndGLroCJgEG4QP9D\u002FQAAAABArIBCoIBCy4BLQYFGUoHUhEf6hJmEsI9Q84BgzJqPQO6AQJ+AzohgvKaDVM6HbC6ET\u002F8AQZalBAsa8D8AAAAAAAD4PwAAAAAAAAAABtDPQ+v9TD4AQbulBAtlQAO44j9Pu2EFZ6zdPxgtRFT7Iek\u002Fm\u002FaB0gtz7z8YLURU+yH5P+JlLyJ\u002FK3o8B1wUMyamgTy9y\u002FB6iAdwPAdcFDMmppE8GC1EVPsh6T8YLURU+yHpv9IhM3982QJA0iEzf3zZAsAAQa+mBAvoFYAYLURU+yEJQBgtRFT7IQnAAwAAAAQAAAAEAAAABgAAAIP5ogBETm4A\u002FCkVANFXJwDdNPUAYtvAADyZlQBBkEMAY1H+ALveqwC3YcUAOm4kANJNQgBJBuAACeouAByS0QDrHf4AKbEcAOg+pwD1NYIARLsuAJzphAC0JnAAQX5fANaROQBTgzkAnPQ5AItfhAAo+b0A+B87AN7\u002FlwAPmAUAES\u002FvAApaiwBtH20Az342AAnLJwBGT7cAnmY\u002FAC3qXwC6J3UA5evHAD178QD3OQcAklKKAPtr6gAfsV8ACF2NADADVgB7\u002FEYA8KtrACC8zwA29JoA46kdAF5hkQAIG+YAhZllAKAUXwCNQGgAgNj\u002FACdzTQAGBjEAylYVAMmocwB74mAAa4zAABnERwDNZ8MACejcAFmDKgCLdsQAphyWAESv3QAZV9EApT4FAAUH\u002FwAzfj8AwjLoAJhP3gC7fTIAJj3DAB5r7wCf+F4ANR86AH\u002FyygDxhx0AfJAhAGokfADVbvoAMC13ABU7QwC1FMYAwxmdAK3EwgAsTUEADABdAIZ9RgDjcS0Am8aaADNiAAC00nwAtKeXADdV1QDXPvYAoxAYAE12\u002FABknSoAcNerAGN8+AB6sFcAFxXnAMBJVgA71tkAp4Q4ACQjywDWincAWlQjAAAfuQDxChsAGc7fAJ8x\u002FwBmHmoAmVdhAKz7RwB+f9gAImW3ADLoiQDmv2AA78TNAGw2CQBdP9QAFt7XAFg73gDem5IA0iIoACiG6ADiWE0AxsoyAAjjFgDgfcsAF8BQAPMdpwAY4FsALhM0AIMSYgCDSAEA9Y5bAK2wfwAe6fIASEpDABBn0wCq3dgArl9CAGphzgAKKKQA05m0AAam8gBcd38Ao8KDAGE8iACKc3gAr4xaAG\u002FXvQAtpmMA9L\u002FLAI2B7wAmwWcAVcpFAMrZNgAoqNIAwmGNABLJdwAEJhQAEkabAMRZxADIxUQATbKRAAAX8wDUQ60AKUnlAP3VEAAAvvwAHpTMAHDO7gATPvUA7PGAALPnwwDH+CgAkwWUAMFxPgAuCbMAC0XzAIgSnACrIHsALrWfAEeSwgB7Mi8ADFVtAHKnkABr5x8AMcuWAHkWSgBBeeIA9N+JAOiUlwDi5oQAmTGXAIjtawBfXzYAu\u002F0OAEiatABnpGwAcXJCAI1dMgCfFbgAvOUJAI0xJQD3dDkAMAUcAA0MAQBLCGgALO5YAEeqkAB05wIAvdYkAPd9pgBuSHIAnxbvAI6UpgC0kfYA0VNRAM8K8gAgmDMA9Ut+ALJjaADdPl8AQF0DAIWJfwBVUikAN2TAAG3YEAAySDIAW0x1AE5x1ABFVG4ACwnBACr1aQAUZtUAJwedAF0EUAC0O9sA6nbFAIf5FwBJa30AHSe6AJZpKQDGzKwArRRUAJDiagCI2YkALHJQAASkvgB3B5QA8zBwAAD8JwDqcagAZsJJAGTgPQCX3YMAoz+XAEOU\u002FQANhowAMUHeAJI5nQDdcIwAF7fnAAjfOwAVNysAXICgAFqAkwAQEZIAD+jYAGyArwDb\u002F0sAOJAPAFkYdgBipRUAYcu7AMeJuQAQQL0A0vIEAEl1JwDrtvYA2yK7AAoUqgCJJi8AZIN2AAk7MwAOlBoAUTqqAB2jwgCv7a4AXCYSAG3CTQAtepwAwFaXAAM\u002FgwAJ8PYAK0CMAG0xmQA5tAcADCAVANjDWwD1ksQAxq1LAE7KpQCnN80A5qk2AKuSlADdQmgAGWPeAHaM7wBoi1IA\u002FNs3AK6hqwDfFTEAAK6hAAz72gBkTWYA7QW3ACllMABXVr8AR\u002F86AGr5uQB1vvMAKJPfAKuAMABmjPYABMsVAPoiBgDZ5B0APbOkAFcbjwA2zQkATkLpABO+pAAzI7UA8KoaAE9lqADSwaUACz8PAFt4zQAj+XYAe4sEAIkXcgDGplMAb27iAO\u002FrAACbSlgAxNq3AKpmugB2z88A0QIdALHxLQCMmcEAw613AIZI2gD3XaAAxoD0AKzwLwDd7JoAP1y8ANDebQCQxx8AKtu2AKMlOgAAr5oArVOTALZXBAApLbQAS4B+ANoHpwB2qg4Ae1mhABYSKgDcty0A+uX9AInb\u002FgCJvv0A5HZsAAap\u002FAA+gHAAhW4VAP2H\u002FwAoPgcAYWczACoYhgBNveoAs+evAI9tbgCVZzkAMb9bAITXSAAw3xYAxy1DACVhNQDJcM4AMMu4AL9s\u002FQCkAKIABWzkAFrdoAAhb0cAYhLSALlchABwYUkAa1bgAJlSAQBQVTcAHtW3ADPxxAATbl8AXTDkAIUuqQAdssMAoTI2AAi3pADqsdQAFvchAI9p5AAn\u002F3cADAOAAI1ALQBPzaAAIKWZALOi0wAvXQoAtPlCABHaywB9vtAAm9vBAKsXvQDKooEACGpcAC5VFwAnAFUAfxTwAOEHhgAUC2QAlkGNAIe+3gDa\u002FSoAayW2AHuJNAAF8\u002F4Aub+eAGhqTwBKKqgAT8RaAC34vADXWpgA9MeVAA1NjQAgOqYApFdfABQ\u002FsQCAOJUAzCABAHHdhgDJ3rYAv2D1AE1lEQABB2sAjLCsALLA0ABRVUgAHvsOAJVywwCjBjsAwEA1AAbcewDgRcwATin6ANbKyADo80EAfGTeAJtk2ADZvjEApJfDAHdY1ABp48UA8NoTALo6PABGGEYAVXVfANK99QBuksYArC5dAA5E7QAcPkIAYcSHACn96QDn1vMAInzKAG+RNQAI4MUA\u002F9eNAG5q4gCw\u002FcYAkwjBAHxddABrrbIAzW6dAD5yewDGEWoA98+pAClz3wC1yboAtwBRAOKyDQB0uiQA5X1gAHTYigANFSwAgRgMAH5mlAABKRYAn3p2AP39vgBWRe8A2X42AOzZEwCLurkAxJf8ADGoJwDxbsMAlMU2ANioVgC0qLUAz8wOABKJLQBvVzQALFaJAJnO4wDWILkAa16qAD4qnAARX8wA\u002FQtKAOH0+wCOO20A4oYsAOnUhAD8tKkA7+7RAC41yQAvOWEAOCFEABvZyACB\u002FAoA+0pqAC8c2ABTtIQATpmMAFQizAAqVdwAwMbWAAsZlgAacLgAaZVkACZaYAA\u002FUu4AfxEPAPS1EQD8y\u002FUANLwtADS87gDoXcwA3V5gAGeOmwCSM+8AyRe4AGFYmwDhV7wAUYPGANg+EADdcUgALRzdAK8YoQAhLEYAWfPXANl6mACeVMAAT4b6AFYG\u002FADlea4AiSI2ADitIgBnk9wAVeiqAIImOADK55sAUQ2kAJkzsQCp1w4AaQVIAGWy8AB\u002FiKcAiEyXAPnRNgAhkrMAe4JKAJjPIQBAn9wA3EdVAOF0OgBn60IA\u002Fp3fAF7UXwB7Z6QAuqx6AFX2ogAriCMAQbpVAFluCAAhKoYAOUeDAInj5gDlntQASftAAP9W6QAcD8oAxVmKAJT6KwDTwcUAD8XPANtargBHxYYAhUNiACGGOwAseZQAEGGHACpMewCALBoAQ78SAIgmkAB4PIkAqMTkAOXbewDEOsIAJvTqAPdnigANkr8AZaMrAD2TsQC9fAsApFHcACfdYwBp4d0AmpQZAKgplQBozigACe20AESfIABOmMoAcIJjAH58IwAPuTIAp\u002FWOABRW5wAh8QgAtZ0qAG9+TQClGVEAtfmrAILf1gCW3WEAFjYCAMQ6nwCDoqEAcu1tADmNegCCuKkAazJcAEYnWwAANO0A0gB3APz0VQABWU0A4HGAAEGjvAQLrQFA+yH5PwAAAAAtRHQ+AAAAgJhG+DwAAABgUcx4OwAAAICDG\u002FA5AAAAQCAlejgAAACAIoLjNgAAAAAd82k1\u002FoIrZUcVZ0AAAAAAAAA4QwAA+v5CLna\u002FOjuevJr3DL29\u002Ff\u002F\u002F\u002F\u002F\u002FfPzxUVVVVVcU\u002FkSsXz1VVpT8X0KRnERGBPwAAAAAAAMhC7zn6\u002FkIu5j8kxIL\u002Fvb\u002FOP7X0DNcIa6w\u002FzFBG0quygz+EOk6b4NdVPwBB3r0EC4MR8D9uv4gaTzubPDUz+6k99u8\u002FXdzYnBNgcbxhgHc+muzvP9FmhxB6XpC8hX9u6BXj7z8T9mc1UtKMPHSFFdOw2e8\u002F+o75I4DOi7ze9t0pa9DvP2HI5mFO92A8yJt1GEXH7z+Z0zNb5KOQPIPzxso+vu8\u002FbXuDXaaalzwPiflsWLXvP\u002Fzv\u002FZIatY4890dyK5Ks7z\u002FRnC9wPb4+PKLR0zLso+8\u002FC26QiTQDarwb0\u002F6vZpvvPw69LypSVpW8UVsS0AGT7z9V6k6M74BQvMwxbMC9iu8\u002FFvTVuSPJkbzgLamumoLvP69VXOnj04A8UY6lyJh67z9Ik6XqFRuAvHtRfTy4cu8\u002FPTLeVfAfj7zqjYw4+WrvP79TEz+MiYs8dctv61tj7z8m6xF2nNmWvNRcBITgW+8\u002FYC86PvfsmjyquWgxh1TvP504hsuC54+8Hdn8IlBN7z+Nw6ZEQW+KPNaMYog7Ru8\u002FfQTksAV6gDyW3H2RST\u002FvP5SoqOP9jpY8OGJ1bno47z99SHTyGF6HPD+msk\u002FOMe8\u002F8ucfmCtHgDzdfOJlRSvvP14IcT97uJa8gWP14d8k7z8xqwlt4feCPOHeH\u002FWdHu8\u002F+r9vGpshPbyQ2drQfxjvP7QKDHKCN4s8CwPkpoUS7z+Py86JkhRuPFYvPqmvDO8\u002FtquwTXVNgzwVtzEK\u002FgbvP0x0rOIBQoY8MdhM\u002FHAB7z9K+NNdOd2PPP8WZLII\u002FO4\u002FBFuOO4Cjhrzxn5JfxfbuP2hQS8ztSpK8y6k6N6fx7j+OLVEb+AeZvGbYBW2u7O4\u002F0jaUPujRcbz3n+U02+fuPxUbzrMZGZm85agTwy3j7j9tTCqnSJ+FPCI0Ekym3u4\u002FimkoemASk7wcgKwERdruP1uJF0iPp1i8Ki73IQrW7j8bmklnmyx8vJeoUNn10e4\u002FEazCYO1jQzwtiWFgCM7uP+9kBjsJZpY8VwAd7UHK7j95A6Ha4cxuPNA8wbWixu4\u002FMBIPP47\u002Fkzze09fwKsPuP7CvervOkHY8Jyo21dq\u002F7j934FTrvR2TPA3d\u002FZmyvO4\u002FjqNxADSUj7ynLJ12srnuP0mjk9zM3oe8QmbPotq27j9fOA+9xt54vIJPnVYrtO4\u002F9lx77EYShrwPkl3KpLHuP47X\u002FRgFNZM82ie1Nkev7j8Fm4ovt5h7PP3Hl9QSre4\u002FCVQc4uFjkDwpVEjdB6vuP+rGGVCFxzQ8t0ZZiiap7j81wGQr5jKUPEghrRVvp+4\u002Fn3aZYUrkjLwJ3Ha54aXuP6hN7zvFM4y8hVU6sH6k7j+u6SuJeFOEvCDDzDRGo+4\u002FWFhWeN3Ok7wlIlWCOKLuP2QZfoCqEFc8c6lM1FWh7j8oIl6\u002F77OTvM07f2aeoO4\u002Fgrk0h60Sary\u002F2gt1EqDuP+6pbbjvZ2O8LxplPLKf7j9RiOBUPdyAvISUUfl9n+4\u002Fzz5afmQfeLx0X+zodZ\u002FuP7B9i8BK7oa8dIGlSJqf7j+K5lUeMhmGvMlnQlbrn+4\u002F09QJXsuckDw\u002FXd5PaaDuPx2lTbncMnu8hwHrcxSh7j9rwGdU\u002FeyUPDLBMAHtoe4\u002FVWzWq+HrZTxiTs8286LuP0LPsy\u002FFoYi8Eho+VCek7j80NzvxtmmTvBPOTJmJpe4\u002FHv8ZOoRegLytxyNGGqfuP25XcthQ1JS87ZJEm9mo7j8Aig5bZ62QPJlmitnHqu4\u002FtOrwwS+3jTzboCpC5azuP\u002F\u002FnxZxgtmW8jES1FjKv7j9EX\u002FNZg\u002FZ7PDZ3FZmuse4\u002Fgz0epx8Jk7zG\u002F5ELW7TuPykebIu4qV285cXNsDe37j9ZuZB8+SNsvA9SyMtEuu4\u002Fqvn0IkNDkrxQTt6fgr3uP0uOZtdsyoW8ugfKcPHA7j8nzpEr\u002FK9xPJDwo4KRxO4\u002Fu3MK4TXSbTwjI+MZY8juP2MiYiIExYe8ZeVde2bM7j\u002FVMeLjhhyLPDMtSuyb0O4\u002FFbu809G7kbxdJT6yA9XuP9Ix7pwxzJA8WLMwE57Z7j+zWnNuhGmEPL\u002F9eVVr3u4\u002FtJ2Ol83fgrx689O\u002Fa+PuP4czy5J3Gow8rdNamZ\u002Fo7j\u002F62dFKj3uQvGa2jSkH7u4\u002Fuq7cVtnDVbz7FU+4ovPuP0D2pj0OpJC8OlnljXL57j80k6049NZovEde+\u002FJ2\u002F+4\u002FNYpYa+LukbxKBqEwsAXvP83dXwrX\u002F3Q80sFLkB4M7z+smJL6+72RvAke11vCEu8\u002FswyvMK5uczycUoXdmxnvP5T9n1wy4448etD\u002FX6sg7z+sWQnRj+CEPEvRVy7xJ+8\u002FZxpOOK\u002FNYzy15waUbS\u002FvP2gZkmwsa2c8aZDv3CA37z\u002FStcyDGIqAvPrDXVULP+8\u002Fb\u002Fr\u002FP12tj7x8iQdKLUfvP0mpdTiuDZC88okNCIdP7z+nBz2mhaN0PIek+9wYWO8\u002FDyJAIJ6RgryYg8kW42DvP6ySwdVQWo48hTLbA+Zp7z9LawGsWTqEPGC0AfMhc+8\u002FHz60ByHVgrxfm3szl3zvP8kNRzu5Kom8KaH1FEaG7z\u002FTiDpgBLZ0PPY\u002Fi+cukO8\u002FcXKdUezFgzyDTMf7UZrvP\u002FCR048S94+82pCkoq+k7z99dCPimK6NvPFnji1Ir+8\u002FCCCqQbzDjjwnWmHuG7rvPzLrqcOUK4Q8l7prNyvF7z\u002FuhdExqWSKPEBFblt20O8\u002F7eM75Lo3jrwUvpyt\u002FdvvP53NkU07iXc82JCegcHn7z+JzGBBwQVTPPFxjyvC8+8\u002F0XSeAFedvSqAcFIP\u002F\u002F8+JwoAAABkAAAA6AMAABAnAACghgEAQEIPAICWmAAA4fUFGAAAADUAAABxAAAAa\u002F\u002F\u002F\u002F877\u002F\u002F+Sv\u002F\u002F\u002FAAAAAAAAAAAZAAoAGRkZAAAAAAUAAAAAAAAJAAAAAAsAAAAAAAAAABkAEQoZGRkDCgcAAQAJCxgAAAkGCwAACwAGGQAAABkZGQBB8c4ECyEOAAAAAAAAAAAZAAoNGRkZAA0AAAIACQ4AAAAJAA4AAA4AQavPBAsBDABBt88ECxUTAAAAABMAAAAACQwAAAAAAAwAAAwAQeXPBAsBEABB8c8ECxUPAAAABA8AAAAACRAAAAAAABAAABAAQZ\u002FQBAsBEgBBq9AECx4RAAAAABEAAAAACRIAAAAAABIAABIAABoAAAAaGhoAQeLQBAsOGgAAABoaGgAAAAAAAAkAQZPRBAsBFABBn9EECxUXAAAAABcAAAAACRQAAAAAABQAABQAQc3RBAsBFgBB2dEECycVAAAAABUAAAAACRYAAAAAABYAABYAADAxMjM0NTY3ODlBQkNERUYAQaTSBAsCpgEAQczSBAsI\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8AQZDTBAsBBQBBnNMECwKhAQBBtNMECw6iAQAAowEAACgrAQAABABBzNMECwEBAEHc0wQLBf\u002F\u002F\u002F\u002F8KAEGg1AQLB5ApAQBAMQI=\\\";if(!K(L)){var M=L;L=d.locateFile?d.locateFile(M,q):q+M}\\nfunction ca(){var a=L;return Promise.resolve().then(()=>{if(a==L&&v)var b=new Uint8Array(v);else{if(K(a)){b=atob(a.slice(37));for(var c=new Uint8Array(b.length),e=0;e\u003Cb.length;++e)c[e]=b.charCodeAt(e);b=c}else b=void 0;if(!b)throw\\\"both async and sync fetching of the wasm failed\\\";}return b})}function da(a,b){return ca().then(c=>WebAssembly.instantiate(c,a)).then(c=>c).then(b,c=>{u(`failed to asynchronously prepare wasm: ${c}`);w(c)})}function ea(a,b){return da(a,b)}\\nvar N=a=>{for(;0\u003Ca.length;)a.shift()(d)},O=\\\"undefined\\\"!=typeof TextDecoder?new TextDecoder(\\\"utf8\\\"):void 0,P=(a,b)=>{for(var c=b+NaN,e=b;a[e]&&!(e>=c);)++e;if(16\u003Ce-b&&a.buffer&&O)return O.decode(a.subarray(b,e));for(c=\\\"\\\";b\u003Ce;){var f=a[b++];if(f&128){var g=a[b++]&63;if(192==(f&224))c+=String.fromCharCode((f&31)\u003C\u003C6|g);else{var l=a[b++]&63;f=224==(f&240)?(f&15)\u003C\u003C12|g\u003C\u003C6|l:(f&7)\u003C\u003C18|g\u003C\u003C12|l\u003C\u003C6|a[b++]&63;65536>f?c+=String.fromCharCode(f):(f-=65536,c+=String.fromCharCode(55296|f>>10,56320|f&1023))}}else c+=\\nString.fromCharCode(f)}return c},fa=[0,31,60,91,121,152,182,213,244,274,305,335],ha=[0,31,59,90,120,151,181,212,243,273,304,334],Q=a=>{for(var b=0,c=0;c\u003Ca.length;++c){var e=a.charCodeAt(c);127>=e?b++:2047>=e?b+=2:55296\u003C=e&&57343>=e?(b+=4,++c):b+=3}return b},R=(a,b,c)=>{var e=A;if(0\u003Cc){c=b+c-1;for(var f=0;f\u003Ca.length;++f){var g=a.charCodeAt(f);if(55296\u003C=g&&57343>=g){var l=a.charCodeAt(++f);g=65536+((g&1023)\u003C\u003C10)|l&1023}if(127>=g){if(b>=c)break;e[b++]=g}else{if(2047>=g){if(b+1>=c)break;e[b++]=192|g>>\\n6}else{if(65535>=g){if(b+2>=c)break;e[b++]=224|g>>12}else{if(b+3>=c)break;e[b++]=240|g>>18;e[b++]=128|g>>12&63}e[b++]=128|g>>6&63}e[b++]=128|g&63}}e[b]=0}},T=a=>{var b=Q(a)+1,c=S(b);c&&R(a,c,b);return c};function U(){}\\nvar ia=[null,[],[]],ka=(a,b,c,e)=>{var f={string:h=>{var r=0;if(null!==h&&void 0!==h&&0!==h){r=Q(h)+1;var Y=V(r);R(h,Y,r);r=Y}return r},array:h=>{var r=V(h.length);z.set(h,r);return r}};a=d[\\\"_\\\"+a];var g=[],l=0;if(e)for(var m=0;m\u003Ce.length;m++){var t=f[c[m]];t?(0===l&&(l=W()),g[m]=t(e[m])):g[m]=e[m]}c=a.apply(null,g);return c=function(h){0!==l&&ja(l);return\\\"string\\\"===b?h?P(A,h):\\\"\\\":\\\"boolean\\\"===b?!!h:h}(c)};\\nU=(a,b,c)=>{a=a?P(A,a):\\\"\\\";b=null!==b?JSON.parse(b?P(A,b):\\\"\\\"):[];try{const e=d.externalCall(a,b);return e?T(e):null}catch(e){return d.HEAPU8[c]=1,T(e.message)}};\\nvar la={a:(a,b,c,e)=>{w(`Assertion failed: ${a?P(A,a):\\\"\\\"}, at: `+[b?b?P(A,b):\\\"\\\":\\\"unknown filename\\\",c,e?e?P(A,e):\\\"\\\":\\\"unknown function\\\"])},i:function(a,b,c){a=new Date(1E3*(b+2097152>>>0\u003C4194305-!!a?(a>>>0)+4294967296*b:NaN));B[c>>2]=a.getSeconds();B[c+4>>2]=a.getMinutes();B[c+8>>2]=a.getHours();B[c+12>>2]=a.getDate();B[c+16>>2]=a.getMonth();B[c+20>>2]=a.getFullYear()-1900;B[c+24>>2]=a.getDay();b=a.getFullYear();B[c+28>>2]=(0!==b%4||0===b%100&&0!==b%400?ha:fa)[a.getMonth()]+a.getDate()-1|0;B[c+36>>\\n2]=-(60*a.getTimezoneOffset());b=(new Date(a.getFullYear(),6,1)).getTimezoneOffset();var e=(new Date(a.getFullYear(),0,1)).getTimezoneOffset();B[c+32>>2]=(b!=e&&a.getTimezoneOffset()==Math.min(e,b))|0},d:(a,b,c)=>{function e(t){return(t=t.toTimeString().match(\u002F\\\\(([A-Za-z ]+)\\\\)$\u002F))?t[1]:\\\"GMT\\\"}var f=(new Date).getFullYear(),g=new Date(f,0,1),l=new Date(f,6,1);f=g.getTimezoneOffset();var m=l.getTimezoneOffset();C[a>>2]=60*Math.max(f,m);B[b>>2]=Number(f!=m);a=e(g);b=e(l);a=T(a);b=T(b);m\u003Cf?(C[c>>2]=a,\\nC[c+4>>2]=b):(C[c>>2]=b,C[c+4>>2]=a)},b:()=>{w(\\\"\\\")},g:U,f:function(a,b){a=a?P(A,a):\\\"\\\";let c;try{c=window.JSON.parse(a)}catch(e){c=a}0!==b?window.alert(a):window.console.log(\\\"DUMP\\\",c)},e:()=>Date.now(),j:a=>{var b=A.length;a>>>=0;if(2147483648\u003Ca)return!1;for(var c=1;4>=c;c*=2){var e=b*(1+.2\u002Fc);e=Math.min(e,a+100663296);var f=Math;e=Math.max(a,e);a:{f=(f.min.call(f,2147483648,e+(65536-e%65536)%65536)-x.buffer.byteLength+65535)\u002F65536;try{x.grow(f);D();var g=1;break a}catch(l){}g=void 0}if(g)return!0}return!1},\\nc:(a,b,c,e)=>{for(var f=0,g=0;g\u003Cc;g++){var l=C[b>>2],m=C[b+4>>2];b+=8;for(var t=0;t\u003Cm;t++){var h=A[l+t],r=ia[a];0===h||10===h?((1===a?aa:u)(P(r,0)),r.length=0):r.push(h)}f+=m}C[e>>2]=f;return 0},k:function(a){a=a?P(A,a):\\\"\\\";window.console.log(a)},h:function(a){a=a?P(A,a):\\\"\\\";return Date.parse(a)},l:function(a,b,c,e){a=a?P(A,a):\\\"\\\";b=b?P(A,b):\\\"\\\";c=c?P(A,c):\\\"\\\";c=`Quickjs -- ${a}: ${b}\\\\n${c}`;0!==e?window.alert(c):window.console.error(c)}},X=function(){function a(c){X=c.exports;x=X.m;D();F.unshift(X.n);\\nH--;d.monitorRunDependencies?.(H);0==H&&(null!==I&&(clearInterval(I),I=null),J&&(c=J,J=null,c()));return X}var b={a:la};H++;d.monitorRunDependencies?.(H);if(d.instantiateWasm)try{return d.instantiateWasm(b,a)}catch(c){u(`Module.instantiateWasm callback failed with error: ${c}`),n(c)}ea(b,function(c){a(c.instance)}).catch(n);return{}}();d._evalInSandbox=(a,b)=>(d._evalInSandbox=X.o)(a,b);d._nukeSandbox=()=>(d._nukeSandbox=X.p)();d._init=(a,b)=>(d._init=X.q)(a,b);\\nd._commFun=(a,b)=>(d._commFun=X.r)(a,b);d._dumpMemoryUse=()=>(d._dumpMemoryUse=X.s)();var S=a=>(S=X.t)(a);d._free=a=>(d._free=X.u)(a);var W=()=>(W=X.w)(),ja=a=>(ja=X.x)(a),V=a=>(V=X.y)(a);d.ccall=ka;d.cwrap=(a,b,c,e)=>{var f=!c||c.every(g=>\\\"number\\\"===g||\\\"boolean\\\"===g);return\\\"string\\\"!==b&&f&&!e?d[\\\"_\\\"+a]:function(){return ka(a,b,c,arguments,e)}};d.stringToNewUTF8=T;var Z;J=function ma(){Z||na();Z||(J=ma)};\\nfunction na(){function a(){if(!Z&&(Z=!0,d.calledRun=!0,!y)){N(F);k(d);if(d.onRuntimeInitialized)d.onRuntimeInitialized();if(d.postRun)for(\\\"function\\\"==typeof d.postRun&&(d.postRun=[d.postRun]);d.postRun.length;){var b=d.postRun.shift();G.unshift(b)}N(G)}}if(!(0\u003CH)){if(d.preRun)for(\\\"function\\\"==typeof d.preRun&&(d.preRun=[d.preRun]);d.preRun.length;)ba();N(E);0\u003CH||(d.setStatus?(d.setStatus(\\\"Running...\\\"),setTimeout(function(){setTimeout(function(){d.setStatus(\\\"\\\")},1);a()},1)):a())}}\\nif(d.preInit)for(\\\"function\\\"==typeof d.preInit&&(d.preInit=[d.preInit]);0\u003Cd.preInit.length;)d.preInit.pop()();na();\\n\\n\\n  return moduleArg.ready\\n}\\n);\\n})();\\nexport default Module;\",\"\u002F* Copyright 2020 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F In mozilla-central, this file is loaded as non-module script,\\n\u002F\u002F so it mustn't have any dependencies.\\n\\n\u002F\u002F eslint-disable-next-line no-restricted-syntax\\nexport class SandboxSupportBase {\\n  \u002F**\\n   * @param {DOMWindow} - win\\n   *\u002F\\n  constructor(win) {\\n    this.win = win;\\n    this.timeoutIds = new Map();\\n\\n    \u002F\u002F Will be assigned after the sandbox is initialized\\n    this.commFun = null;\\n  }\\n\\n  destroy() {\\n    this.commFun = null;\\n    for (const id of this.timeoutIds.values()) {\\n      this.win.clearTimeout(id);\\n    }\\n    this.timeoutIds = null;\\n  }\\n\\n  \u002F**\\n   * @param {Object} val - Export a value in the sandbox.\\n   *\u002F\\n  exportValueToSandbox(val) {\\n    throw new Error(\\\"Not implemented\\\");\\n  }\\n\\n  \u002F**\\n   * @param {Object} val - Import a value from the sandbox.\\n   *\u002F\\n  importValueFromSandbox(val) {\\n    throw new Error(\\\"Not implemented\\\");\\n  }\\n\\n  \u002F**\\n   * @param {String} errorMessage - Create an error in the sandbox.\\n   *\u002F\\n  createErrorForSandbox(errorMessage) {\\n    throw new Error(\\\"Not implemented\\\");\\n  }\\n\\n  \u002F**\\n   * @param {String} name - Name of the function to call in the sandbox\\n   * @param {Array\u003CObject>} args - Arguments of the function.\\n   *\u002F\\n  callSandboxFunction(name, args) {\\n    if (!this.commFun) {\\n      return;\\n    }\\n    try {\\n      args = this.exportValueToSandbox(args);\\n      this.commFun(name, args);\\n    } catch (e) {\\n      this.win.console.error(e);\\n    }\\n  }\\n\\n  createSandboxExternals() {\\n    \u002F\u002F All the functions in externals object are called\\n    \u002F\u002F from the sandbox.\\n    const externals = {\\n      setTimeout: (callbackId, nMilliseconds) => {\\n        if (\\n          typeof callbackId !== \\\"number\\\" ||\\n          typeof nMilliseconds !== \\\"number\\\"\\n        ) {\\n          return;\\n        }\\n\\n        if (callbackId === 0) {\\n          \u002F\u002F This callbackId corresponds to the one used for userActivation.\\n          \u002F\u002F So here, we cancel the last userActivation.\\n          this.win.clearTimeout(this.timeoutIds.get(callbackId));\\n        }\\n\\n        const id = this.win.setTimeout(() => {\\n          this.timeoutIds.delete(callbackId);\\n          this.callSandboxFunction(\\\"timeoutCb\\\", {\\n            callbackId,\\n            interval: false,\\n          });\\n        }, nMilliseconds);\\n        this.timeoutIds.set(callbackId, id);\\n      },\\n      clearTimeout: callbackId => {\\n        this.win.clearTimeout(this.timeoutIds.get(callbackId));\\n        this.timeoutIds.delete(callbackId);\\n      },\\n      setInterval: (callbackId, nMilliseconds) => {\\n        if (\\n          typeof callbackId !== \\\"number\\\" ||\\n          typeof nMilliseconds !== \\\"number\\\"\\n        ) {\\n          return;\\n        }\\n        const id = this.win.setInterval(() => {\\n          this.callSandboxFunction(\\\"timeoutCb\\\", {\\n            callbackId,\\n            interval: true,\\n          });\\n        }, nMilliseconds);\\n        this.timeoutIds.set(callbackId, id);\\n      },\\n      clearInterval: callbackId => {\\n        this.win.clearInterval(this.timeoutIds.get(callbackId));\\n        this.timeoutIds.delete(callbackId);\\n      },\\n      alert: cMsg => {\\n        if (typeof cMsg !== \\\"string\\\") {\\n          return;\\n        }\\n        this.win.alert(cMsg);\\n      },\\n      confirm: cMsg => {\\n        if (typeof cMsg !== \\\"string\\\") {\\n          return false;\\n        }\\n        return this.win.confirm(cMsg);\\n      },\\n      prompt: (cQuestion, cDefault) => {\\n        if (typeof cQuestion !== \\\"string\\\" || typeof cDefault !== \\\"string\\\") {\\n          return null;\\n        }\\n        return this.win.prompt(cQuestion, cDefault);\\n      },\\n      parseURL: cUrl => {\\n        const url = new this.win.URL(cUrl);\\n        const props = [\\n          \\\"hash\\\",\\n          \\\"host\\\",\\n          \\\"hostname\\\",\\n          \\\"href\\\",\\n          \\\"origin\\\",\\n          \\\"password\\\",\\n          \\\"pathname\\\",\\n          \\\"port\\\",\\n          \\\"protocol\\\",\\n          \\\"search\\\",\\n          \\\"searchParams\\\",\\n          \\\"username\\\",\\n        ];\\n\\n        return Object.fromEntries(\\n          props.map(name => [name, url[name].toString()])\\n        );\\n      },\\n      send: data => {\\n        if (!data) {\\n          return;\\n        }\\n        const event = new this.win.CustomEvent(\\\"updatefromsandbox\\\", {\\n          detail: this.importValueFromSandbox(data),\\n        });\\n        this.win.dispatchEvent(event);\\n      },\\n    };\\n    Object.setPrototypeOf(externals, null);\\n\\n    return (name, args) => {\\n      try {\\n        const result = externals[name](...args);\\n        return this.exportValueToSandbox(result);\\n      } catch (error) {\\n        throw this.createErrorForSandbox(error?.toString() ?? \\\"\\\");\\n      }\\n    };\\n  }\\n}\\n\",\"\u002F* Copyright 2020 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport ModuleLoader from \\\"..\u002Fexternal\u002Fquickjs\u002Fquickjs-eval.js\\\";\\nimport { SandboxSupportBase } from \\\".\u002Fpdf.sandbox.external.js\\\";\\n\\nclass SandboxSupport extends SandboxSupportBase {\\n  exportValueToSandbox(val) {\\n    \u002F\u002F The communication with the Quickjs sandbox is based on strings\\n    \u002F\u002F So we use JSON.stringfy to serialize\\n    return JSON.stringify(val);\\n  }\\n\\n  importValueFromSandbox(val) {\\n    return val;\\n  }\\n\\n  createErrorForSandbox(errorMessage) {\\n    return new Error(errorMessage);\\n  }\\n}\\n\\nclass Sandbox {\\n  constructor(win, module) {\\n    this.support = new SandboxSupport(win, this);\\n\\n    \u002F\u002F The \\\"external\\\" functions created in pdf.sandbox.external.js\\n    \u002F\u002F are finally used here:\\n    \u002F\u002F https:\u002F\u002Fgithub.com\u002Fmozilla\u002Fpdf.js.quickjs\u002Fblob\u002Fmain\u002Fsrc\u002Fmyjs.js\\n    \u002F\u002F They're called from the sandbox only.\\n    module.externalCall = this.support.createSandboxExternals();\\n\\n    this._module = module;\\n\\n    \u002F\u002F 0 to display error using console.error\\n    \u002F\u002F else display error using window.alert\\n    this._alertOnError = 0;\\n  }\\n\\n  create(data) {\\n    if (PDFJSDev.test(\\\"TESTING\\\")) {\\n      this._module.ccall(\\\"nukeSandbox\\\", null, []);\\n    }\\n    const code = [PDFJSDev.eval(\\\"PDF_SCRIPTING_JS_SOURCE\\\")];\\n\\n    if (PDFJSDev.test(\\\"TESTING\\\")) {\\n      code.push(\\n        `globalThis.sendResultForTesting = callExternalFunction.bind(null, \\\"send\\\");`\\n      );\\n    } else {\\n      code.push(\\\"delete dump;\\\");\\n    }\\n\\n    let success = false;\\n    let buf = 0;\\n    try {\\n      const sandboxData = JSON.stringify(data);\\n      \u002F\u002F \\\"pdfjsScripting.initSandbox...\\\" MUST be the last line to be evaluated\\n      \u002F\u002F since the returned value is used for the communication.\\n      code.push(`pdfjsScripting.initSandbox({ data: ${sandboxData} })`);\\n      buf = this._module.stringToNewUTF8(code.join(\\\"\\\\n\\\"));\\n\\n      success = !!this._module.ccall(\\n        \\\"init\\\",\\n        \\\"number\\\",\\n        [\\\"number\\\", \\\"number\\\"],\\n        [buf, this._alertOnError]\\n      );\\n    } catch (error) {\\n      \u002F\u002F eslint-disable-next-line no-console\\n      console.error(error);\\n    } finally {\\n      if (buf) {\\n        this._module.ccall(\\\"free\\\", \\\"number\\\", [\\\"number\\\"], [buf]);\\n      }\\n    }\\n\\n    if (success) {\\n      this.support.commFun = this._module.cwrap(\\\"commFun\\\", null, [\\n        \\\"string\\\",\\n        \\\"string\\\",\\n      ]);\\n    } else {\\n      this.nukeSandbox();\\n      throw new Error(\\\"Cannot start sandbox\\\");\\n    }\\n  }\\n\\n  dispatchEvent(event) {\\n    this.support?.callSandboxFunction(\\\"dispatchEvent\\\", event);\\n  }\\n\\n  dumpMemoryUse() {\\n    this._module?.ccall(\\\"dumpMemoryUse\\\", null, []);\\n  }\\n\\n  nukeSandbox() {\\n    if (this._module !== null) {\\n      this.support.destroy();\\n      this.support = null;\\n      this._module.ccall(\\\"nukeSandbox\\\", null, []);\\n      this._module = null;\\n    }\\n  }\\n\\n  evalForTesting(code, key) {\\n    if (PDFJSDev.test(\\\"TESTING\\\")) {\\n      this._module.ccall(\\n        \\\"evalInSandbox\\\",\\n        null,\\n        [\\\"string\\\", \\\"int\\\"],\\n        [\\n          `try {\\n             sendResultForTesting([{ id: \\\"${key}\\\", result: ${code} }]);\\n          } catch (error) {\\n             sendResultForTesting([{ id: \\\"${key}\\\", result: error.message }]);\\n          }`,\\n          this._alertOnError,\\n        ]\\n      );\\n    } else {\\n      throw new Error(\\\"Not implemented: evalForTesting\\\");\\n    }\\n  }\\n}\\n\\nfunction QuickJSSandbox() {\\n  return ModuleLoader().then(module => new Sandbox(window, module));\\n}\\n\\nglobalThis.pdfjsSandbox = {\\n  QuickJSSandbox,\\n};\\n\\nexport { QuickJSSandbox };\\n\"],\"names\":[\"Module\",\"_scriptDir\",\"document\",\"currentScript\",\"src\",\"undefined\",\"moduleArg\",\"d\",\"k\",\"n\",\"ready\",\"Promise\",\"a\",\"b\",\"p\",\"Object\",\"assign\",\"q\",\"startsWith\",\"substr\",\"replace\",\"lastIndexOf\",\"aa\",\"print\",\"console\",\"log\",\"bind\",\"u\",\"printErr\",\"error\",\"v\",\"wasmBinary\",\"WebAssembly\",\"w\",\"x\",\"y\",\"z\",\"A\",\"B\",\"C\",\"D\",\"buffer\",\"HEAP8\",\"Int8Array\",\"HEAP16\",\"Int16Array\",\"HEAPU8\",\"Uint8Array\",\"HEAPU16\",\"Uint16Array\",\"HEAP32\",\"Int32Array\",\"HEAPU32\",\"Uint32Array\",\"HEAPF32\",\"Float32Array\",\"HEAPF64\",\"Float64Array\",\"E\",\"F\",\"G\",\"ba\",\"preRun\",\"shift\",\"unshift\",\"H\",\"I\",\"J\",\"onAbort\",\"RuntimeError\",\"K\",\"L\",\"M\",\"locateFile\",\"ca\",\"resolve\",\"then\",\"atob\",\"slice\",\"c\",\"length\",\"e\",\"charCodeAt\",\"da\",\"instantiate\",\"ea\",\"N\",\"O\",\"TextDecoder\",\"P\",\"NaN\",\"decode\",\"subarray\",\"f\",\"g\",\"String\",\"fromCharCode\",\"l\",\"fa\",\"ha\",\"Q\",\"R\",\"T\",\"S\",\"U\",\"ia\",\"ka\",\"string\",\"h\",\"r\",\"Y\",\"V\",\"array\",\"set\",\"m\",\"t\",\"W\",\"apply\",\"ja\",\"JSON\",\"parse\",\"externalCall\",\"message\",\"la\",\"i\",\"Date\",\"getSeconds\",\"getMinutes\",\"getHours\",\"getDate\",\"getMonth\",\"getFullYear\",\"getDay\",\"getTimezoneOffset\",\"Math\",\"min\",\"toTimeString\",\"match\",\"max\",\"Number\",\"window\",\"alert\",\"now\",\"j\",\"call\",\"byteLength\",\"grow\",\"push\",\"X\",\"exports\",\"monitorRunDependencies\",\"clearInterval\",\"instantiateWasm\",\"instance\",\"catch\",\"_evalInSandbox\",\"o\",\"_nukeSandbox\",\"_init\",\"_commFun\",\"_dumpMemoryUse\",\"s\",\"_free\",\"ccall\",\"cwrap\",\"every\",\"arguments\",\"stringToNewUTF8\",\"Z\",\"ma\",\"na\",\"calledRun\",\"onRuntimeInitialized\",\"postRun\",\"setStatus\",\"setTimeout\",\"preInit\",\"pop\",\"SandboxSupportBase\",\"constructor\",\"win\",\"timeoutIds\",\"Map\",\"commFun\",\"destroy\",\"id\",\"values\",\"clearTimeout\",\"exportValueToSandbox\",\"val\",\"Error\",\"importValueFromSandbox\",\"createErrorForSandbox\",\"errorMessage\",\"callSandboxFunction\",\"name\",\"args\",\"createSandboxExternals\",\"externals\",\"callbackId\",\"nMilliseconds\",\"get\",\"delete\",\"interval\",\"setInterval\",\"cMsg\",\"confirm\",\"prompt\",\"cQuestion\",\"cDefault\",\"parseURL\",\"cUrl\",\"url\",\"URL\",\"props\",\"fromEntries\",\"map\",\"toString\",\"send\",\"data\",\"event\",\"CustomEvent\",\"detail\",\"dispatchEvent\",\"setPrototypeOf\",\"result\",\"ModuleLoader\",\"SandboxSupport\",\"stringify\",\"Sandbox\",\"module\",\"support\",\"_module\",\"_alertOnError\",\"create\",\"code\",\"success\",\"buf\",\"sandboxData\",\"join\",\"nukeSandbox\",\"dumpMemoryUse\",\"evalForTesting\",\"key\",\"QuickJSSandbox\",\"globalThis\",\"pdfjsSandbox\"],\"sourceRoot\":\"\"}\n\\ No newline at end of file\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fbuild\u002Fpdf.worker.js \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fbuild\u002Fpdf.worker.js\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fbuild\u002Fpdf.worker.js\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fbuild\u002Fpdf.worker.js\t2026-02-24 09:27:28.000000000 +0000\n@@ -2,7 +2,7 @@\n  * @licstart The following is the entire license notice for the\n  * JavaScript code in this page\n  *\n- * Copyright 2023 Mozilla Foundation\n+ * Copyright 2024 Mozilla Foundation\n  *\n  * Licensed under the Apache License, Version 2.0 (the \"License\");\n  * you may not use this file except in compliance with the License.\n@@ -20,40 +20,5029 @@\n  * JavaScript code in this page\n  *\u002F\n \n-\u002F******\u002F \u002F\u002F The require scope\n-\u002F******\u002F var __webpack_require__ = {};\n-\u002F******\u002F \n+\u002F**\n+ * pdfjsVersion = 5.3.31\n+ * pdfjsBuild = 47ad820d9\n+ *\u002F\n+\u002F******\u002F var __webpack_modules__ = ({\n+\n+\u002F***\u002F 34:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isCallable = __webpack_require__(4901);\n+\n+module.exports = function (it) {\n+  return typeof it == 'object' ? it !== null : isCallable(it);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 81:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var call = __webpack_require__(9565);\n+var aCallable = __webpack_require__(9306);\n+var anObject = __webpack_require__(8551);\n+var tryToString = __webpack_require__(6823);\n+var getIteratorMethod = __webpack_require__(851);\n+\n+var $TypeError = TypeError;\n+\n+module.exports = function (argument, usingIterator) {\n+  var iteratorMethod = arguments.length \u003C 2 ? getIteratorMethod(argument) : usingIterator;\n+  if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n+  throw new $TypeError(tryToString(argument) + ' is not iterable');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 116:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var call = __webpack_require__(9565);\n+var iterate = __webpack_require__(2652);\n+var aCallable = __webpack_require__(9306);\n+var anObject = __webpack_require__(8551);\n+var getIteratorDirect = __webpack_require__(1767);\n+var iteratorClose = __webpack_require__(9539);\n+var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n+\n+var findWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('find', TypeError);\n+\n+\u002F\u002F `Iterator.prototype.find` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.find\n+$({ target: 'Iterator', proto: true, real: true, forced: findWithoutClosingOnEarlyError }, {\n+  find: function find(predicate) {\n+    anObject(this);\n+    try {\n+      aCallable(predicate);\n+    } catch (error) {\n+      iteratorClose(this, 'throw', error);\n+    }\n+\n+    if (findWithoutClosingOnEarlyError) return call(findWithoutClosingOnEarlyError, this, predicate);\n+\n+    var record = getIteratorDirect(this);\n+    var counter = 0;\n+    return iterate(record, function (value, stop) {\n+      if (predicate(value, counter++)) return stop(value);\n+    }, { IS_RECORD: true, INTERRUPTED: true }).result;\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 283:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+var fails = __webpack_require__(9039);\n+var isCallable = __webpack_require__(4901);\n+var hasOwn = __webpack_require__(9297);\n+var DESCRIPTORS = __webpack_require__(3724);\n+var CONFIGURABLE_FUNCTION_NAME = (__webpack_require__(350).CONFIGURABLE);\n+var inspectSource = __webpack_require__(3706);\n+var InternalStateModule = __webpack_require__(1181);\n+\n+var enforceInternalState = InternalStateModule.enforce;\n+var getInternalState = InternalStateModule.get;\n+var $String = String;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\n+var defineProperty = Object.defineProperty;\n+var stringSlice = uncurryThis(''.slice);\n+var replace = uncurryThis(''.replace);\n+var join = uncurryThis([].join);\n+\n+var CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n+  return defineProperty(function () { \u002F* empty *\u002F }, 'length', { value: 8 }).length !== 8;\n+});\n+\n+var TEMPLATE = String(String).split('String');\n+\n+var makeBuiltIn = module.exports = function (value, name, options) {\n+  if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n+    name = '[' + replace($String(name), \u002F^Symbol\\(([^)]*)\\).*$\u002F, '$1') + ']';\n+  }\n+  if (options && options.getter) name = 'get ' + name;\n+  if (options && options.setter) name = 'set ' + name;\n+  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n+    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n+    else value.name = name;\n+  }\n+  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n+    defineProperty(value, 'length', { value: options.arity });\n+  }\n+  try {\n+    if (options && hasOwn(options, 'constructor') && options.constructor) {\n+      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n+    \u002F\u002F in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n+    } else if (value.prototype) value.prototype = undefined;\n+  } catch (error) { \u002F* empty *\u002F }\n+  var state = enforceInternalState(value);\n+  if (!hasOwn(state, 'source')) {\n+    state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n+  } return value;\n+};\n+\n+\u002F\u002F add fake Function#toString for correct work wrapped methods \u002F constructors with methods like LoDash isNative\n+\u002F\u002F eslint-disable-next-line no-extend-native -- required\n+Function.prototype.toString = makeBuiltIn(function toString() {\n+  return isCallable(this) && getInternalState(this).source || inspectSource(this);\n+}, 'toString');\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 350:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var hasOwn = __webpack_require__(9297);\n+\n+var FunctionPrototype = Function.prototype;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n+\n+var EXISTS = hasOwn(FunctionPrototype, 'name');\n+\u002F\u002F additional protection from minified \u002F mangled \u002F dropped function names\n+var PROPER = EXISTS && (function something() { \u002F* empty *\u002F }).name === 'something';\n+var CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n+\n+module.exports = {\n+  EXISTS: EXISTS,\n+  PROPER: PROPER,\n+  CONFIGURABLE: CONFIGURABLE\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 397:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var getBuiltIn = __webpack_require__(7751);\n+\n+module.exports = getBuiltIn('document', 'documentElement');\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 421:\n+\u002F***\u002F ((module) => {\n+\n+\n+module.exports = {};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 507:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var call = __webpack_require__(9565);\n+\n+module.exports = function (record, fn, ITERATOR_INSTEAD_OF_RECORD) {\n+  var iterator = ITERATOR_INSTEAD_OF_RECORD ? record : record.iterator;\n+  var next = record.next;\n+  var step, result;\n+  while (!(step = call(next, iterator)).done) {\n+    result = fn(step.value);\n+    if (result !== undefined) return result;\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 531:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var call = __webpack_require__(9565);\n+var aCallable = __webpack_require__(9306);\n+var anObject = __webpack_require__(8551);\n+var getIteratorDirect = __webpack_require__(1767);\n+var getIteratorFlattenable = __webpack_require__(8646);\n+var createIteratorProxy = __webpack_require__(9462);\n+var iteratorClose = __webpack_require__(9539);\n+var IS_PURE = __webpack_require__(6395);\n+var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n+\n+var flatMapWithoutClosingOnEarlyError = !IS_PURE && iteratorHelperWithoutClosingOnEarlyError('flatMap', TypeError);\n+\n+var IteratorProxy = createIteratorProxy(function () {\n+  var iterator = this.iterator;\n+  var mapper = this.mapper;\n+  var result, inner;\n+\n+  while (true) {\n+    if (inner = this.inner) try {\n+      result = anObject(call(inner.next, inner.iterator));\n+      if (!result.done) return result.value;\n+      this.inner = null;\n+    } catch (error) { iteratorClose(iterator, 'throw', error); }\n+\n+    result = anObject(call(this.next, iterator));\n+\n+    if (this.done = !!result.done) return;\n+\n+    try {\n+      this.inner = getIteratorFlattenable(mapper(result.value, this.counter++), false);\n+    } catch (error) { iteratorClose(iterator, 'throw', error); }\n+  }\n+});\n+\n+\u002F\u002F `Iterator.prototype.flatMap` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.flatmap\n+$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE || flatMapWithoutClosingOnEarlyError }, {\n+  flatMap: function flatMap(mapper) {\n+    anObject(this);\n+    try {\n+      aCallable(mapper);\n+    } catch (error) {\n+      iteratorClose(this, 'throw', error);\n+    }\n+\n+    if (flatMapWithoutClosingOnEarlyError) return call(flatMapWithoutClosingOnEarlyError, this, mapper);\n+\n+    return new IteratorProxy(getIteratorDirect(this), {\n+      mapper: mapper,\n+      inner: null\n+    });\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 616:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var fails = __webpack_require__(9039);\n+\n+module.exports = !fails(function () {\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind -- safe\n+  var test = (function () { \u002F* empty *\u002F }).bind();\n+  \u002F\u002F eslint-disable-next-line no-prototype-builtins -- safe\n+  return typeof test != 'function' || test.hasOwnProperty('prototype');\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 655:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var classof = __webpack_require__(6955);\n+\n+var $String = String;\n+\n+module.exports = function (argument) {\n+  if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n+  return $String(argument);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 679:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isPrototypeOf = __webpack_require__(1625);\n+\n+var $TypeError = TypeError;\n+\n+module.exports = function (it, Prototype) {\n+  if (isPrototypeOf(Prototype, it)) return it;\n+  throw new $TypeError('Incorrect invocation');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 741:\n+\u002F***\u002F ((module) => {\n+\n+\n+var ceil = Math.ceil;\n+var floor = Math.floor;\n+\n+\u002F\u002F `Math.trunc` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-math.trunc\n+\u002F\u002F eslint-disable-next-line es\u002Fno-math-trunc -- safe\n+module.exports = Math.trunc || function trunc(x) {\n+  var n = +x;\n+  return (n > 0 ? floor : ceil)(n);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 757:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var getBuiltIn = __webpack_require__(7751);\n+var isCallable = __webpack_require__(4901);\n+var isPrototypeOf = __webpack_require__(1625);\n+var USE_SYMBOL_AS_UID = __webpack_require__(7040);\n+\n+var $Object = Object;\n+\n+module.exports = USE_SYMBOL_AS_UID ? function (it) {\n+  return typeof it == 'symbol';\n+} : function (it) {\n+  var $Symbol = getBuiltIn('Symbol');\n+  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 851:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var classof = __webpack_require__(6955);\n+var getMethod = __webpack_require__(5966);\n+var isNullOrUndefined = __webpack_require__(4117);\n+var Iterators = __webpack_require__(6269);\n+var wellKnownSymbol = __webpack_require__(8227);\n+\n+var ITERATOR = wellKnownSymbol('iterator');\n+\n+module.exports = function (it) {\n+  if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n+    || getMethod(it, '@@iterator')\n+    || Iterators[classof(it)];\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 944:\n+\u002F***\u002F ((module) => {\n+\n+\n+var $TypeError = TypeError;\n+\n+module.exports = function (options) {\n+  var alphabet = options && options.alphabet;\n+  if (alphabet === undefined || alphabet === 'base64' || alphabet === 'base64url') return alphabet || 'base64';\n+  throw new $TypeError('Incorrect `alphabet` option');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1072:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var internalObjectKeys = __webpack_require__(1828);\n+var enumBugKeys = __webpack_require__(8727);\n+\n+\u002F\u002F `Object.keys` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.keys\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-keys -- safe\n+module.exports = Object.keys || function keys(O) {\n+  return internalObjectKeys(O, enumBugKeys);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1103:\n+\u002F***\u002F ((module) => {\n+\n+\n+module.exports = function (exec) {\n+  try {\n+    return { error: false, value: exec() };\n+  } catch (error) {\n+    return { error: true, value: error };\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1148:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var call = __webpack_require__(9565);\n+var iterate = __webpack_require__(2652);\n+var aCallable = __webpack_require__(9306);\n+var anObject = __webpack_require__(8551);\n+var getIteratorDirect = __webpack_require__(1767);\n+var iteratorClose = __webpack_require__(9539);\n+var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n+\n+var everyWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('every', TypeError);\n+\n+\u002F\u002F `Iterator.prototype.every` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.every\n+$({ target: 'Iterator', proto: true, real: true, forced: everyWithoutClosingOnEarlyError }, {\n+  every: function every(predicate) {\n+    anObject(this);\n+    try {\n+      aCallable(predicate);\n+    } catch (error) {\n+      iteratorClose(this, 'throw', error);\n+    }\n+\n+    if (everyWithoutClosingOnEarlyError) return call(everyWithoutClosingOnEarlyError, this, predicate);\n+\n+    var record = getIteratorDirect(this);\n+    var counter = 0;\n+    return !iterate(record, function (value, stop) {\n+      if (!predicate(value, counter++)) return stop();\n+    }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1181:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var NATIVE_WEAK_MAP = __webpack_require__(8622);\n+var globalThis = __webpack_require__(4576);\n+var isObject = __webpack_require__(34);\n+var createNonEnumerableProperty = __webpack_require__(6699);\n+var hasOwn = __webpack_require__(9297);\n+var shared = __webpack_require__(7629);\n+var sharedKey = __webpack_require__(6119);\n+var hiddenKeys = __webpack_require__(421);\n+\n+var OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\n+var TypeError = globalThis.TypeError;\n+var WeakMap = globalThis.WeakMap;\n+var set, get, has;\n+\n+var enforce = function (it) {\n+  return has(it) ? get(it) : set(it, {});\n+};\n+\n+var getterFor = function (TYPE) {\n+  return function (it) {\n+    var state;\n+    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n+      throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n+    } return state;\n+  };\n+};\n+\n+if (NATIVE_WEAK_MAP || shared.state) {\n+  var store = shared.state || (shared.state = new WeakMap());\n+  \u002F* eslint-disable no-self-assign -- prototype methods protection *\u002F\n+  store.get = store.get;\n+  store.has = store.has;\n+  store.set = store.set;\n+  \u002F* eslint-enable no-self-assign -- prototype methods protection *\u002F\n+  set = function (it, metadata) {\n+    if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n+    metadata.facade = it;\n+    store.set(it, metadata);\n+    return metadata;\n+  };\n+  get = function (it) {\n+    return store.get(it) || {};\n+  };\n+  has = function (it) {\n+    return store.has(it);\n+  };\n+} else {\n+  var STATE = sharedKey('state');\n+  hiddenKeys[STATE] = true;\n+  set = function (it, metadata) {\n+    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n+    metadata.facade = it;\n+    createNonEnumerableProperty(it, STATE, metadata);\n+    return metadata;\n+  };\n+  get = function (it) {\n+    return hasOwn(it, STATE) ? it[STATE] : {};\n+  };\n+  has = function (it) {\n+    return hasOwn(it, STATE);\n+  };\n+}\n+\n+module.exports = {\n+  set: set,\n+  get: get,\n+  has: has,\n+  enforce: enforce,\n+  getterFor: getterFor\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1291:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var trunc = __webpack_require__(741);\n+\n+\u002F\u002F `ToIntegerOrInfinity` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-tointegerorinfinity\n+module.exports = function (argument) {\n+  var number = +argument;\n+  \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\n+  return number !== number || number === 0 ? 0 : trunc(number);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1548:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var fails = __webpack_require__(9039);\n+var V8 = __webpack_require__(9519);\n+var ENVIRONMENT = __webpack_require__(4215);\n+\n+var structuredClone = globalThis.structuredClone;\n+\n+module.exports = !!structuredClone && !fails(function () {\n+  \u002F\u002F prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation\n+  \u002F\u002F https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F679\n+  if ((ENVIRONMENT === 'DENO' && V8 > 92) || (ENVIRONMENT === 'NODE' && V8 > 94) || (ENVIRONMENT === 'BROWSER' && V8 > 97)) return false;\n+  var buffer = new ArrayBuffer(8);\n+  var clone = structuredClone(buffer, { transfer: [buffer] });\n+  return buffer.byteLength !== 0 || clone.byteLength !== 8;\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1549:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var globalThis = __webpack_require__(4576);\n+var $fromBase64 = __webpack_require__(9143);\n+var anUint8Array = __webpack_require__(4154);\n+\n+var Uint8Array = globalThis.Uint8Array;\n+\n+var INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS = !Uint8Array || !Uint8Array.prototype.setFromBase64 || !(function () {\n+  var target = new Uint8Array([255, 255, 255, 255, 255]);\n+  try {\n+    target.setFromBase64('MjYyZg===');\n+  } catch (error) {\n+    return target[0] === 50 && target[1] === 54 && target[2] === 50 && target[3] === 255 && target[4] === 255;\n+  }\n+})();\n+\n+\u002F\u002F `Uint8Array.prototype.setFromBase64` method\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-arraybuffer-base64\n+if (Uint8Array) $({ target: 'Uint8Array', proto: true, forced: INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS }, {\n+  setFromBase64: function setFromBase64(string \u002F* , options *\u002F) {\n+    anUint8Array(this);\n+\n+    var result = $fromBase64(string, arguments.length > 1 ? arguments[1] : undefined, this, this.length);\n+\n+    return { read: result.read, written: result.written };\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1625:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+\n+module.exports = uncurryThis({}.isPrototypeOf);\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1689:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var globalThis = __webpack_require__(4576);\n+var apply = __webpack_require__(8745);\n+var slice = __webpack_require__(7680);\n+var newPromiseCapabilityModule = __webpack_require__(6043);\n+var aCallable = __webpack_require__(9306);\n+var perform = __webpack_require__(1103);\n+\n+var Promise = globalThis.Promise;\n+\n+var ACCEPT_ARGUMENTS = false;\n+\u002F\u002F Avoiding the use of polyfills of the previous iteration of this proposal\n+\u002F\u002F that does not accept arguments of the callback\n+var FORCED = !Promise || !Promise['try'] || perform(function () {\n+  Promise['try'](function (argument) {\n+    ACCEPT_ARGUMENTS = argument === 8;\n+  }, 8);\n+}).error || !ACCEPT_ARGUMENTS;\n+\n+\u002F\u002F `Promise.try` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-promise.try\n+$({ target: 'Promise', stat: true, forced: FORCED }, {\n+  'try': function (callbackfn \u002F* , ...args *\u002F) {\n+    var args = arguments.length > 1 ? slice(arguments, 1) : [];\n+    var promiseCapability = newPromiseCapabilityModule.f(this);\n+    var result = perform(function () {\n+      return apply(aCallable(callbackfn), undefined, args);\n+    });\n+    (result.error ? promiseCapability.reject : promiseCapability.resolve)(result.value);\n+    return promiseCapability.promise;\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1698:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var union = __webpack_require__(4204);\n+var setMethodAcceptSetLike = __webpack_require__(4916);\n+\n+\u002F\u002F `Set.prototype.union` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.union\n+$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('union') }, {\n+  union: union\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1701:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var call = __webpack_require__(9565);\n+var aCallable = __webpack_require__(9306);\n+var anObject = __webpack_require__(8551);\n+var getIteratorDirect = __webpack_require__(1767);\n+var createIteratorProxy = __webpack_require__(9462);\n+var callWithSafeIterationClosing = __webpack_require__(6319);\n+var iteratorClose = __webpack_require__(9539);\n+var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n+var IS_PURE = __webpack_require__(6395);\n+\n+var mapWithoutClosingOnEarlyError = !IS_PURE && iteratorHelperWithoutClosingOnEarlyError('map', TypeError);\n+\n+var IteratorProxy = createIteratorProxy(function () {\n+  var iterator = this.iterator;\n+  var result = anObject(call(this.next, iterator));\n+  var done = this.done = !!result.done;\n+  if (!done) return callWithSafeIterationClosing(iterator, this.mapper, [result.value, this.counter++], true);\n+});\n+\n+\u002F\u002F `Iterator.prototype.map` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.map\n+$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE || mapWithoutClosingOnEarlyError }, {\n+  map: function map(mapper) {\n+    anObject(this);\n+    try {\n+      aCallable(mapper);\n+    } catch (error) {\n+      iteratorClose(this, 'throw', error);\n+    }\n+\n+    if (mapWithoutClosingOnEarlyError) return call(mapWithoutClosingOnEarlyError, this, mapper);\n+\n+    return new IteratorProxy(getIteratorDirect(this), {\n+      mapper: mapper\n+    });\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1767:\n+\u002F***\u002F ((module) => {\n+\n+\n+\u002F\u002F `GetIteratorDirect(obj)` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-iterator-helpers\u002F#sec-getiteratordirect\n+module.exports = function (obj) {\n+  return {\n+    iterator: obj,\n+    next: obj.next,\n+    done: false\n+  };\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1806:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var anObject = __webpack_require__(8551);\n+var iterate = __webpack_require__(2652);\n+var getIteratorDirect = __webpack_require__(1767);\n+\n+var push = [].push;\n+\n+\u002F\u002F `Iterator.prototype.toArray` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.toarray\n+$({ target: 'Iterator', proto: true, real: true }, {\n+  toArray: function toArray() {\n+    var result = [];\n+    iterate(getIteratorDirect(anObject(this)), push, { that: result, IS_RECORD: true });\n+    return result;\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1828:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+var hasOwn = __webpack_require__(9297);\n+var toIndexedObject = __webpack_require__(5397);\n+var indexOf = (__webpack_require__(9617).indexOf);\n+var hiddenKeys = __webpack_require__(421);\n+\n+var push = uncurryThis([].push);\n+\n+module.exports = function (object, names) {\n+  var O = toIndexedObject(object);\n+  var i = 0;\n+  var result = [];\n+  var key;\n+  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n+  \u002F\u002F Don't enum bug & hidden keys\n+  while (names.length > i) if (hasOwn(O, key = names[i++])) {\n+    ~indexOf(result, key) || push(result, key);\n+  }\n+  return result;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2106:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var makeBuiltIn = __webpack_require__(283);\n+var defineProperty = __webpack_require__(4913);\n+\n+module.exports = function (target, name, descriptor) {\n+  if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n+  if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n+  return defineProperty.f(target, name, descriptor);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2140:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var wellKnownSymbol = __webpack_require__(8227);\n+\n+var TO_STRING_TAG = wellKnownSymbol('toStringTag');\n+var test = {};\n+\n+test[TO_STRING_TAG] = 'z';\n+\n+module.exports = String(test) === '[object z]';\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2195:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+\n+var toString = uncurryThis({}.toString);\n+var stringSlice = uncurryThis(''.slice);\n+\n+module.exports = function (it) {\n+  return stringSlice(toString(it), 8, -1);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2211:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var fails = __webpack_require__(9039);\n+\n+module.exports = !fails(function () {\n+  function F() { \u002F* empty *\u002F }\n+  F.prototype.constructor = null;\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-object-getprototypeof -- required for testing\n+  return Object.getPrototypeOf(new F()) !== F.prototype;\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2303:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var uncurryThis = __webpack_require__(9504);\n+\n+var Uint8Array = globalThis.Uint8Array;\n+var SyntaxError = globalThis.SyntaxError;\n+var parseInt = globalThis.parseInt;\n+var min = Math.min;\n+var NOT_HEX = \u002F[^\\da-f]\u002Fi;\n+var exec = uncurryThis(NOT_HEX.exec);\n+var stringSlice = uncurryThis(''.slice);\n+\n+module.exports = function (string, into) {\n+  var stringLength = string.length;\n+  if (stringLength % 2 !== 0) throw new SyntaxError('String should be an even number of characters');\n+  var maxLength = into ? min(into.length, stringLength \u002F 2) : stringLength \u002F 2;\n+  var bytes = into || new Uint8Array(maxLength);\n+  var read = 0;\n+  var written = 0;\n+  while (written \u003C maxLength) {\n+    var hexits = stringSlice(string, read, read += 2);\n+    if (exec(NOT_HEX, hexits)) throw new SyntaxError('String should only contain hex characters');\n+    bytes[written++] = parseInt(hexits, 16);\n+  }\n+  return { bytes: bytes, read: read };\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2360:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+\u002F* global ActiveXObject -- old IE, WSH *\u002F\n+var anObject = __webpack_require__(8551);\n+var definePropertiesModule = __webpack_require__(6801);\n+var enumBugKeys = __webpack_require__(8727);\n+var hiddenKeys = __webpack_require__(421);\n+var html = __webpack_require__(397);\n+var documentCreateElement = __webpack_require__(4055);\n+var sharedKey = __webpack_require__(6119);\n+\n+var GT = '>';\n+var LT = '\u003C';\n+var PROTOTYPE = 'prototype';\n+var SCRIPT = 'script';\n+var IE_PROTO = sharedKey('IE_PROTO');\n+\n+var EmptyConstructor = function () { \u002F* empty *\u002F };\n+\n+var scriptTag = function (content) {\n+  return LT + SCRIPT + GT + content + LT + '\u002F' + SCRIPT + GT;\n+};\n+\n+\u002F\u002F Create object with fake `null` prototype: use ActiveX Object with cleared prototype\n+var NullProtoObjectViaActiveX = function (activeXDocument) {\n+  activeXDocument.write(scriptTag(''));\n+  activeXDocument.close();\n+  var temp = activeXDocument.parentWindow.Object;\n+  \u002F\u002F eslint-disable-next-line no-useless-assignment -- avoid memory leak\n+  activeXDocument = null;\n+  return temp;\n+};\n+\n+\u002F\u002F Create object with fake `null` prototype: use iframe Object with cleared prototype\n+var NullProtoObjectViaIFrame = function () {\n+  \u002F\u002F Thrash, waste and sodomy: IE GC bug\n+  var iframe = documentCreateElement('iframe');\n+  var JS = 'java' + SCRIPT + ':';\n+  var iframeDocument;\n+  iframe.style.display = 'none';\n+  html.appendChild(iframe);\n+  \u002F\u002F https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F475\n+  iframe.src = String(JS);\n+  iframeDocument = iframe.contentWindow.document;\n+  iframeDocument.open();\n+  iframeDocument.write(scriptTag('document.F=Object'));\n+  iframeDocument.close();\n+  return iframeDocument.F;\n+};\n+\n+\u002F\u002F Check for document.domain and active x support\n+\u002F\u002F No need to use active x approach when document.domain is not set\n+\u002F\u002F see https:\u002F\u002Fgithub.com\u002Fes-shims\u002Fes5-shim\u002Fissues\u002F150\n+\u002F\u002F variation of https:\u002F\u002Fgithub.com\u002Fkitcambridge\u002Fes5-shim\u002Fcommit\u002F4f738ac066346\n+\u002F\u002F avoid IE GC bug\n+var activeXDocument;\n+var NullProtoObject = function () {\n+  try {\n+    activeXDocument = new ActiveXObject('htmlfile');\n+  } catch (error) { \u002F* ignore *\u002F }\n+  NullProtoObject = typeof document != 'undefined'\n+    ? document.domain && activeXDocument\n+      ? NullProtoObjectViaActiveX(activeXDocument) \u002F\u002F old IE\n+      : NullProtoObjectViaIFrame()\n+    : NullProtoObjectViaActiveX(activeXDocument); \u002F\u002F WSH\n+  var length = enumBugKeys.length;\n+  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n+  return NullProtoObject();\n+};\n+\n+hiddenKeys[IE_PROTO] = true;\n+\n+\u002F\u002F `Object.create` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.create\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-create -- safe\n+module.exports = Object.create || function create(O, Properties) {\n+  var result;\n+  if (O !== null) {\n+    EmptyConstructor[PROTOTYPE] = anObject(O);\n+    result = new EmptyConstructor();\n+    EmptyConstructor[PROTOTYPE] = null;\n+    \u002F\u002F add \"__proto__\" for Object.getPrototypeOf polyfill\n+    result[IE_PROTO] = O;\n+  } else result = NullProtoObject();\n+  return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2475:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var isSupersetOf = __webpack_require__(8527);\n+var setMethodAcceptSetLike = __webpack_require__(4916);\n+\n+var INCORRECT = !setMethodAcceptSetLike('isSupersetOf', function (result) {\n+  return !result;\n+});\n+\n+\u002F\u002F `Set.prototype.isSupersetOf` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.issupersetof\n+$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n+  isSupersetOf: isSupersetOf\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2489:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var call = __webpack_require__(9565);\n+var aCallable = __webpack_require__(9306);\n+var anObject = __webpack_require__(8551);\n+var getIteratorDirect = __webpack_require__(1767);\n+var createIteratorProxy = __webpack_require__(9462);\n+var callWithSafeIterationClosing = __webpack_require__(6319);\n+var IS_PURE = __webpack_require__(6395);\n+var iteratorClose = __webpack_require__(9539);\n+var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n+\n+var filterWithoutClosingOnEarlyError = !IS_PURE && iteratorHelperWithoutClosingOnEarlyError('filter', TypeError);\n+\n+var IteratorProxy = createIteratorProxy(function () {\n+  var iterator = this.iterator;\n+  var predicate = this.predicate;\n+  var next = this.next;\n+  var result, done, value;\n+  while (true) {\n+    result = anObject(call(next, iterator));\n+    done = this.done = !!result.done;\n+    if (done) return;\n+    value = result.value;\n+    if (callWithSafeIterationClosing(iterator, predicate, [value, this.counter++], true)) return value;\n+  }\n+});\n+\n+\u002F\u002F `Iterator.prototype.filter` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.filter\n+$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE || filterWithoutClosingOnEarlyError }, {\n+  filter: function filter(predicate) {\n+    anObject(this);\n+    try {\n+      aCallable(predicate);\n+    } catch (error) {\n+      iteratorClose(this, 'throw', error);\n+    }\n+\n+    if (filterWithoutClosingOnEarlyError) return call(filterWithoutClosingOnEarlyError, this, predicate);\n+\n+    return new IteratorProxy(getIteratorDirect(this), {\n+      predicate: predicate\n+    });\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2529:\n+\u002F***\u002F ((module) => {\n+\n+\n+\u002F\u002F `CreateIterResultObject` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-createiterresultobject\n+module.exports = function (value, done) {\n+  return { value: value, done: done };\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2603:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var toString = __webpack_require__(655);\n+\n+module.exports = function (argument, $default) {\n+  return argument === undefined ? arguments.length \u003C 2 ? '' : $default : toString(argument);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2652:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var bind = __webpack_require__(6080);\n+var call = __webpack_require__(9565);\n+var anObject = __webpack_require__(8551);\n+var tryToString = __webpack_require__(6823);\n+var isArrayIteratorMethod = __webpack_require__(4209);\n+var lengthOfArrayLike = __webpack_require__(6198);\n+var isPrototypeOf = __webpack_require__(1625);\n+var getIterator = __webpack_require__(81);\n+var getIteratorMethod = __webpack_require__(851);\n+var iteratorClose = __webpack_require__(9539);\n+\n+var $TypeError = TypeError;\n+\n+var Result = function (stopped, result) {\n+  this.stopped = stopped;\n+  this.result = result;\n+};\n+\n+var ResultPrototype = Result.prototype;\n+\n+module.exports = function (iterable, unboundFunction, options) {\n+  var that = options && options.that;\n+  var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n+  var IS_RECORD = !!(options && options.IS_RECORD);\n+  var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n+  var INTERRUPTED = !!(options && options.INTERRUPTED);\n+  var fn = bind(unboundFunction, that);\n+  var iterator, iterFn, index, length, result, next, step;\n+\n+  var stop = function (condition) {\n+    if (iterator) iteratorClose(iterator, 'normal', condition);\n+    return new Result(true, condition);\n+  };\n+\n+  var callFn = function (value) {\n+    if (AS_ENTRIES) {\n+      anObject(value);\n+      return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n+    } return INTERRUPTED ? fn(value, stop) : fn(value);\n+  };\n+\n+  if (IS_RECORD) {\n+    iterator = iterable.iterator;\n+  } else if (IS_ITERATOR) {\n+    iterator = iterable;\n+  } else {\n+    iterFn = getIteratorMethod(iterable);\n+    if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');\n+    \u002F\u002F optimisation for array iterators\n+    if (isArrayIteratorMethod(iterFn)) {\n+      for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n+        result = callFn(iterable[index]);\n+        if (result && isPrototypeOf(ResultPrototype, result)) return result;\n+      } return new Result(false);\n+    }\n+    iterator = getIterator(iterable, iterFn);\n+  }\n+\n+  next = IS_RECORD ? iterable.next : iterator.next;\n+  while (!(step = call(next, iterator)).done) {\n+    try {\n+      result = callFn(step.value);\n+    } catch (error) {\n+      iteratorClose(iterator, 'throw', error);\n+    }\n+    if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n+  } return new Result(false);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2777:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var call = __webpack_require__(9565);\n+var isObject = __webpack_require__(34);\n+var isSymbol = __webpack_require__(757);\n+var getMethod = __webpack_require__(5966);\n+var ordinaryToPrimitive = __webpack_require__(4270);\n+var wellKnownSymbol = __webpack_require__(8227);\n+\n+var $TypeError = TypeError;\n+var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n+\n+\u002F\u002F `ToPrimitive` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-toprimitive\n+module.exports = function (input, pref) {\n+  if (!isObject(input) || isSymbol(input)) return input;\n+  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n+  var result;\n+  if (exoticToPrim) {\n+    if (pref === undefined) pref = 'default';\n+    result = call(exoticToPrim, input, pref);\n+    if (!isObject(result) || isSymbol(result)) return result;\n+    throw new $TypeError(\"Can't convert object to primitive value\");\n+  }\n+  if (pref === undefined) pref = 'number';\n+  return ordinaryToPrimitive(input, pref);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2787:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var hasOwn = __webpack_require__(9297);\n+var isCallable = __webpack_require__(4901);\n+var toObject = __webpack_require__(8981);\n+var sharedKey = __webpack_require__(6119);\n+var CORRECT_PROTOTYPE_GETTER = __webpack_require__(2211);\n+\n+var IE_PROTO = sharedKey('IE_PROTO');\n+var $Object = Object;\n+var ObjectPrototype = $Object.prototype;\n+\n+\u002F\u002F `Object.getPrototypeOf` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.getprototypeof\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getprototypeof -- safe\n+module.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n+  var object = toObject(O);\n+  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n+  var constructor = object.constructor;\n+  if (isCallable(constructor) && object instanceof constructor) {\n+    return constructor.prototype;\n+  } return object instanceof $Object ? ObjectPrototype : null;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2796:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var fails = __webpack_require__(9039);\n+var isCallable = __webpack_require__(4901);\n+\n+var replacement = \u002F#|\\.prototype\\.\u002F;\n+\n+var isForced = function (feature, detection) {\n+  var value = data[normalize(feature)];\n+  return value === POLYFILL ? true\n+    : value === NATIVE ? false\n+    : isCallable(detection) ? fails(detection)\n+    : !!detection;\n+};\n+\n+var normalize = isForced.normalize = function (string) {\n+  return String(string).replace(replacement, '.').toLowerCase();\n+};\n+\n+var data = isForced.data = {};\n+var NATIVE = isForced.NATIVE = 'N';\n+var POLYFILL = isForced.POLYFILL = 'P';\n+\n+module.exports = isForced;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2804:\n+\u002F***\u002F ((module) => {\n+\n+\n+var commonAlphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n+var base64Alphabet = commonAlphabet + '+\u002F';\n+var base64UrlAlphabet = commonAlphabet + '-_';\n+\n+var inverse = function (characters) {\n+  \u002F\u002F TODO: use `Object.create(null)` in `core-js@4`\n+  var result = {};\n+  var index = 0;\n+  for (; index \u003C 64; index++) result[characters.charAt(index)] = index;\n+  return result;\n+};\n+\n+module.exports = {\n+  i2c: base64Alphabet,\n+  c2i: inverse(base64Alphabet),\n+  i2cUrl: base64UrlAlphabet,\n+  c2iUrl: inverse(base64UrlAlphabet)\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2812:\n+\u002F***\u002F ((module) => {\n+\n+\n+var $TypeError = TypeError;\n+\n+module.exports = function (passed, required) {\n+  if (passed \u003C required) throw new $TypeError('Not enough arguments');\n+  return passed;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2839:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+\n+var navigator = globalThis.navigator;\n+var userAgent = navigator && navigator.userAgent;\n+\n+module.exports = userAgent ? String(userAgent) : '';\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2967:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+\u002F* eslint-disable no-proto -- safe *\u002F\n+var uncurryThisAccessor = __webpack_require__(6706);\n+var isObject = __webpack_require__(34);\n+var requireObjectCoercible = __webpack_require__(7750);\n+var aPossiblePrototype = __webpack_require__(3506);\n+\n+\u002F\u002F `Object.setPrototypeOf` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.setprototypeof\n+\u002F\u002F Works with __proto__ only. Old v8 can't work with null proto objects.\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-setprototypeof -- safe\n+module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n+  var CORRECT_SETTER = false;\n+  var test = {};\n+  var setter;\n+  try {\n+    setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n+    setter(test, []);\n+    CORRECT_SETTER = test instanceof Array;\n+  } catch (error) { \u002F* empty *\u002F }\n+  return function setPrototypeOf(O, proto) {\n+    requireObjectCoercible(O);\n+    aPossiblePrototype(proto);\n+    if (!isObject(O)) return O;\n+    if (CORRECT_SETTER) setter(O, proto);\n+    else O.__proto__ = proto;\n+    return O;\n+  };\n+}() : undefined);\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3167:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isCallable = __webpack_require__(4901);\n+var isObject = __webpack_require__(34);\n+var setPrototypeOf = __webpack_require__(2967);\n+\n+\u002F\u002F makes subclassing work correct for wrapped built-ins\n+module.exports = function ($this, dummy, Wrapper) {\n+  var NewTarget, NewTargetPrototype;\n+  if (\n+    \u002F\u002F it can work only with native `setPrototypeOf`\n+    setPrototypeOf &&\n+    \u002F\u002F we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n+    isCallable(NewTarget = dummy.constructor) &&\n+    NewTarget !== Wrapper &&\n+    isObject(NewTargetPrototype = NewTarget.prototype) &&\n+    NewTargetPrototype !== Wrapper.prototype\n+  ) setPrototypeOf($this, NewTargetPrototype);\n+  return $this;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3238:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var NATIVE_ARRAY_BUFFER = __webpack_require__(7811);\n+var arrayBufferByteLength = __webpack_require__(7394);\n+\n+var DataView = globalThis.DataView;\n+\n+module.exports = function (O) {\n+  if (!NATIVE_ARRAY_BUFFER || arrayBufferByteLength(O) !== 0) return false;\n+  try {\n+    \u002F\u002F eslint-disable-next-line no-new -- thrower\n+    new DataView(O);\n+    return false;\n+  } catch (error) {\n+    return true;\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3392:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+\n+var id = 0;\n+var postfix = Math.random();\n+var toString = uncurryThis(1.0.toString);\n+\n+module.exports = function (key) {\n+  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3440:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aSet = __webpack_require__(7080);\n+var SetHelpers = __webpack_require__(4402);\n+var clone = __webpack_require__(9286);\n+var size = __webpack_require__(5170);\n+var getSetRecord = __webpack_require__(3789);\n+var iterateSet = __webpack_require__(8469);\n+var iterateSimple = __webpack_require__(507);\n+\n+var has = SetHelpers.has;\n+var remove = SetHelpers.remove;\n+\n+\u002F\u002F `Set.prototype.difference` method\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\n+module.exports = function difference(other) {\n+  var O = aSet(this);\n+  var otherRec = getSetRecord(other);\n+  var result = clone(O);\n+  if (size(O) \u003C= otherRec.size) iterateSet(O, function (e) {\n+    if (otherRec.includes(e)) remove(result, e);\n+  });\n+  else iterateSimple(otherRec.getIterator(), function (e) {\n+    if (has(O, e)) remove(result, e);\n+  });\n+  return result;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3463:\n+\u002F***\u002F ((module) => {\n+\n+\n+var $TypeError = TypeError;\n+\n+module.exports = function (argument) {\n+  if (typeof argument == 'string') return argument;\n+  throw new $TypeError('Argument is not a string');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3506:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isPossiblePrototype = __webpack_require__(3925);\n+\n+var $String = String;\n+var $TypeError = TypeError;\n+\n+module.exports = function (argument) {\n+  if (isPossiblePrototype(argument)) return argument;\n+  throw new $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3579:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var call = __webpack_require__(9565);\n+var iterate = __webpack_require__(2652);\n+var aCallable = __webpack_require__(9306);\n+var anObject = __webpack_require__(8551);\n+var getIteratorDirect = __webpack_require__(1767);\n+var iteratorClose = __webpack_require__(9539);\n+var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n+\n+var someWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('some', TypeError);\n+\n+\u002F\u002F `Iterator.prototype.some` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.some\n+$({ target: 'Iterator', proto: true, real: true, forced: someWithoutClosingOnEarlyError }, {\n+  some: function some(predicate) {\n+    anObject(this);\n+    try {\n+      aCallable(predicate);\n+    } catch (error) {\n+      iteratorClose(this, 'throw', error);\n+    }\n+\n+    if (someWithoutClosingOnEarlyError) return call(someWithoutClosingOnEarlyError, this, predicate);\n+\n+    var record = getIteratorDirect(this);\n+    var counter = 0;\n+    return iterate(record, function (value, stop) {\n+      if (predicate(value, counter++)) return stop();\n+    }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3611:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var globalThis = __webpack_require__(4576);\n+var defineBuiltInAccessor = __webpack_require__(2106);\n+var DESCRIPTORS = __webpack_require__(3724);\n+\n+var $TypeError = TypeError;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\n+var defineProperty = Object.defineProperty;\n+var INCORRECT_VALUE = globalThis.self !== globalThis;\n+\n+\u002F\u002F `self` getter\n+\u002F\u002F https:\u002F\u002Fhtml.spec.whatwg.org\u002Fmultipage\u002Fwindow-object.html#dom-self\n+try {\n+  if (DESCRIPTORS) {\n+    \u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+    var descriptor = Object.getOwnPropertyDescriptor(globalThis, 'self');\n+    \u002F\u002F some engines have `self`, but with incorrect descriptor\n+    \u002F\u002F https:\u002F\u002Fgithub.com\u002Fdenoland\u002Fdeno\u002Fissues\u002F15765\n+    if (INCORRECT_VALUE || !descriptor || !descriptor.get || !descriptor.enumerable) {\n+      defineBuiltInAccessor(globalThis, 'self', {\n+        get: function self() {\n+          return globalThis;\n+        },\n+        set: function self(value) {\n+          if (this !== globalThis) throw new $TypeError('Illegal invocation');\n+          defineProperty(globalThis, 'self', {\n+            value: value,\n+            writable: true,\n+            configurable: true,\n+            enumerable: true\n+          });\n+        },\n+        configurable: true,\n+        enumerable: true\n+      });\n+    }\n+  } else $({ global: true, simple: true, forced: INCORRECT_VALUE }, {\n+    self: globalThis\n+  });\n+} catch (error) { \u002F* empty *\u002F }\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3650:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aSet = __webpack_require__(7080);\n+var SetHelpers = __webpack_require__(4402);\n+var clone = __webpack_require__(9286);\n+var getSetRecord = __webpack_require__(3789);\n+var iterateSimple = __webpack_require__(507);\n+\n+var add = SetHelpers.add;\n+var has = SetHelpers.has;\n+var remove = SetHelpers.remove;\n+\n+\u002F\u002F `Set.prototype.symmetricDifference` method\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\n+module.exports = function symmetricDifference(other) {\n+  var O = aSet(this);\n+  var keysIter = getSetRecord(other).getIterator();\n+  var result = clone(O);\n+  iterateSimple(keysIter, function (e) {\n+    if (has(O, e)) remove(result, e);\n+    else add(result, e);\n+  });\n+  return result;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3706:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+var isCallable = __webpack_require__(4901);\n+var store = __webpack_require__(7629);\n+\n+var functionToString = uncurryThis(Function.toString);\n+\n+\u002F\u002F this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\n+if (!isCallable(store.inspectSource)) {\n+  store.inspectSource = function (it) {\n+    return functionToString(it);\n+  };\n+}\n+\n+module.exports = store.inspectSource;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3717:\n+\u002F***\u002F ((__unused_webpack_module, exports) => {\n+\n+\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertysymbols -- safe\n+exports.f = Object.getOwnPropertySymbols;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3724:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var fails = __webpack_require__(9039);\n+\n+\u002F\u002F Detect IE8's incomplete defineProperty implementation\n+module.exports = !fails(function () {\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- required for testing\n+  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3789:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aCallable = __webpack_require__(9306);\n+var anObject = __webpack_require__(8551);\n+var call = __webpack_require__(9565);\n+var toIntegerOrInfinity = __webpack_require__(1291);\n+var getIteratorDirect = __webpack_require__(1767);\n+\n+var INVALID_SIZE = 'Invalid size';\n+var $RangeError = RangeError;\n+var $TypeError = TypeError;\n+var max = Math.max;\n+\n+var SetRecord = function (set, intSize) {\n+  this.set = set;\n+  this.size = max(intSize, 0);\n+  this.has = aCallable(set.has);\n+  this.keys = aCallable(set.keys);\n+};\n+\n+SetRecord.prototype = {\n+  getIterator: function () {\n+    return getIteratorDirect(anObject(call(this.keys, this.set)));\n+  },\n+  includes: function (it) {\n+    return call(this.has, this.set, it);\n+  }\n+};\n+\n+\u002F\u002F `GetSetRecord` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-set-methods\u002F#sec-getsetrecord\n+module.exports = function (obj) {\n+  anObject(obj);\n+  var numSize = +obj.size;\n+  \u002F\u002F NOTE: If size is undefined, then numSize will be NaN\n+  \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\n+  if (numSize !== numSize) throw new $TypeError(INVALID_SIZE);\n+  var intSize = toIntegerOrInfinity(numSize);\n+  if (intSize \u003C 0) throw new $RangeError(INVALID_SIZE);\n+  return new SetRecord(obj, intSize);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3838:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aSet = __webpack_require__(7080);\n+var size = __webpack_require__(5170);\n+var iterate = __webpack_require__(8469);\n+var getSetRecord = __webpack_require__(3789);\n+\n+\u002F\u002F `Set.prototype.isSubsetOf` method\n+\u002F\u002F https:\u002F\u002Ftc39.github.io\u002Fproposal-set-methods\u002F#Set.prototype.isSubsetOf\n+module.exports = function isSubsetOf(other) {\n+  var O = aSet(this);\n+  var otherRec = getSetRecord(other);\n+  if (size(O) > otherRec.size) return false;\n+  return iterate(O, function (e) {\n+    if (!otherRec.includes(e)) return false;\n+  }, true) !== false;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3853:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var isDisjointFrom = __webpack_require__(4449);\n+var setMethodAcceptSetLike = __webpack_require__(4916);\n+\n+var INCORRECT = !setMethodAcceptSetLike('isDisjointFrom', function (result) {\n+  return !result;\n+});\n+\n+\u002F\u002F `Set.prototype.isDisjointFrom` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.isdisjointfrom\n+$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n+  isDisjointFrom: isDisjointFrom\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3925:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isObject = __webpack_require__(34);\n+\n+module.exports = function (argument) {\n+  return isObject(argument) || argument === null;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3972:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isObject = __webpack_require__(34);\n+\n+var $String = String;\n+var $TypeError = TypeError;\n+\n+module.exports = function (argument) {\n+  if (argument === undefined || isObject(argument)) return argument;\n+  throw new $TypeError($String(argument) + ' is not an object or undefined');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4055:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var isObject = __webpack_require__(34);\n+\n+var document = globalThis.document;\n+\u002F\u002F typeof document.createElement is 'object' in old IE\n+var EXISTS = isObject(document) && isObject(document.createElement);\n+\n+module.exports = function (it) {\n+  return EXISTS ? document.createElement(it) : {};\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4114:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var toObject = __webpack_require__(8981);\n+var lengthOfArrayLike = __webpack_require__(6198);\n+var setArrayLength = __webpack_require__(4527);\n+var doesNotExceedSafeInteger = __webpack_require__(6837);\n+var fails = __webpack_require__(9039);\n+\n+var INCORRECT_TO_LENGTH = fails(function () {\n+  return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n+});\n+\n+\u002F\u002F V8 \u003C= 121 and Safari \u003C= 15.4; FF \u003C 23 throws InternalError\n+\u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=12681\n+var properErrorOnNonWritableLength = function () {\n+  try {\n+    \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\n+    Object.defineProperty([], 'length', { writable: false }).push();\n+  } catch (error) {\n+    return error instanceof TypeError;\n+  }\n+};\n+\n+var FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n+\n+\u002F\u002F `Array.prototype.push` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-array.prototype.push\n+$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n+  \u002F\u002F eslint-disable-next-line no-unused-vars -- required for `.length`\n+  push: function push(item) {\n+    var O = toObject(this);\n+    var len = lengthOfArrayLike(O);\n+    var argCount = arguments.length;\n+    doesNotExceedSafeInteger(len + argCount);\n+    for (var i = 0; i \u003C argCount; i++) {\n+      O[len] = arguments[i];\n+      len++;\n+    }\n+    setArrayLength(O, len);\n+    return len;\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4117:\n+\u002F***\u002F ((module) => {\n+\n+\n+\u002F\u002F we can't use just `it == null` since of `document.all` special case\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-IsHTMLDDA-internal-slot-aec\n+module.exports = function (it) {\n+  return it === null || it === undefined;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4154:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var classof = __webpack_require__(6955);\n+\n+var $TypeError = TypeError;\n+\n+\u002F\u002F Perform ? RequireInternalSlot(argument, [[TypedArrayName]])\n+\u002F\u002F If argument.[[TypedArrayName]] is not \"Uint8Array\", throw a TypeError exception\n+module.exports = function (argument) {\n+  if (classof(argument) === 'Uint8Array') return argument;\n+  throw new $TypeError('Argument is not an Uint8Array');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4204:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aSet = __webpack_require__(7080);\n+var add = (__webpack_require__(4402).add);\n+var clone = __webpack_require__(9286);\n+var getSetRecord = __webpack_require__(3789);\n+var iterateSimple = __webpack_require__(507);\n+\n+\u002F\u002F `Set.prototype.union` method\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\n+module.exports = function union(other) {\n+  var O = aSet(this);\n+  var keysIter = getSetRecord(other).getIterator();\n+  var result = clone(O);\n+  iterateSimple(keysIter, function (it) {\n+    add(result, it);\n+  });\n+  return result;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4209:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var wellKnownSymbol = __webpack_require__(8227);\n+var Iterators = __webpack_require__(6269);\n+\n+var ITERATOR = wellKnownSymbol('iterator');\n+var ArrayPrototype = Array.prototype;\n+\n+\u002F\u002F check on default Array iterator\n+module.exports = function (it) {\n+  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4215:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+\u002F* global Bun, Deno -- detection *\u002F\n+var globalThis = __webpack_require__(4576);\n+var userAgent = __webpack_require__(2839);\n+var classof = __webpack_require__(2195);\n+\n+var userAgentStartsWith = function (string) {\n+  return userAgent.slice(0, string.length) === string;\n+};\n+\n+module.exports = (function () {\n+  if (userAgentStartsWith('Bun\u002F')) return 'BUN';\n+  if (userAgentStartsWith('Cloudflare-Workers')) return 'CLOUDFLARE';\n+  if (userAgentStartsWith('Deno\u002F')) return 'DENO';\n+  if (userAgentStartsWith('Node.js\u002F')) return 'NODE';\n+  if (globalThis.Bun && typeof Bun.version == 'string') return 'BUN';\n+  if (globalThis.Deno && typeof Deno.version == 'object') return 'DENO';\n+  if (classof(globalThis.process) === 'process') return 'NODE';\n+  if (globalThis.window && globalThis.document) return 'BROWSER';\n+  return 'REST';\n+})();\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4270:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var call = __webpack_require__(9565);\n+var isCallable = __webpack_require__(4901);\n+var isObject = __webpack_require__(34);\n+\n+var $TypeError = TypeError;\n+\n+\u002F\u002F `OrdinaryToPrimitive` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-ordinarytoprimitive\n+module.exports = function (input, pref) {\n+  var fn, val;\n+  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n+  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n+  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n+  throw new $TypeError(\"Can't convert object to primitive value\");\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4376:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var classof = __webpack_require__(2195);\n+\n+\u002F\u002F `IsArray` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-isarray\n+\u002F\u002F eslint-disable-next-line es\u002Fno-array-isarray -- safe\n+module.exports = Array.isArray || function isArray(argument) {\n+  return classof(argument) === 'Array';\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4402:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+\n+\u002F\u002F eslint-disable-next-line es\u002Fno-set -- safe\n+var SetPrototype = Set.prototype;\n+\n+module.exports = {\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-set -- safe\n+  Set: Set,\n+  add: uncurryThis(SetPrototype.add),\n+  has: uncurryThis(SetPrototype.has),\n+  remove: uncurryThis(SetPrototype['delete']),\n+  proto: SetPrototype\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4449:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aSet = __webpack_require__(7080);\n+var has = (__webpack_require__(4402).has);\n+var size = __webpack_require__(5170);\n+var getSetRecord = __webpack_require__(3789);\n+var iterateSet = __webpack_require__(8469);\n+var iterateSimple = __webpack_require__(507);\n+var iteratorClose = __webpack_require__(9539);\n+\n+\u002F\u002F `Set.prototype.isDisjointFrom` method\n+\u002F\u002F https:\u002F\u002Ftc39.github.io\u002Fproposal-set-methods\u002F#Set.prototype.isDisjointFrom\n+module.exports = function isDisjointFrom(other) {\n+  var O = aSet(this);\n+  var otherRec = getSetRecord(other);\n+  if (size(O) \u003C= otherRec.size) return iterateSet(O, function (e) {\n+    if (otherRec.includes(e)) return false;\n+  }, true) !== false;\n+  var iterator = otherRec.getIterator();\n+  return iterateSimple(iterator, function (e) {\n+    if (has(O, e)) return iteratorClose(iterator, 'normal', false);\n+  }) !== false;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4483:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var getBuiltInNodeModule = __webpack_require__(9429);\n+var PROPER_STRUCTURED_CLONE_TRANSFER = __webpack_require__(1548);\n+\n+var structuredClone = globalThis.structuredClone;\n+var $ArrayBuffer = globalThis.ArrayBuffer;\n+var $MessageChannel = globalThis.MessageChannel;\n+var detach = false;\n+var WorkerThreads, channel, buffer, $detach;\n+\n+if (PROPER_STRUCTURED_CLONE_TRANSFER) {\n+  detach = function (transferable) {\n+    structuredClone(transferable, { transfer: [transferable] });\n+  };\n+} else if ($ArrayBuffer) try {\n+  if (!$MessageChannel) {\n+    WorkerThreads = getBuiltInNodeModule('worker_threads');\n+    if (WorkerThreads) $MessageChannel = WorkerThreads.MessageChannel;\n+  }\n+\n+  if ($MessageChannel) {\n+    channel = new $MessageChannel();\n+    buffer = new $ArrayBuffer(2);\n+\n+    $detach = function (transferable) {\n+      channel.port1.postMessage(null, [transferable]);\n+    };\n+\n+    if (buffer.byteLength === 2) {\n+      $detach(buffer);\n+      if (buffer.byteLength === 0) detach = $detach;\n+    }\n+  }\n+} catch (error) { \u002F* empty *\u002F }\n+\n+module.exports = detach;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4495:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+\u002F* eslint-disable es\u002Fno-symbol -- required for testing *\u002F\n+var V8_VERSION = __webpack_require__(9519);\n+var fails = __webpack_require__(9039);\n+var globalThis = __webpack_require__(4576);\n+\n+var $String = globalThis.String;\n+\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertysymbols -- required for testing\n+module.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n+  var symbol = Symbol('symbol detection');\n+  \u002F\u002F Chrome 38 Symbol has incorrect toString conversion\n+  \u002F\u002F `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n+  \u002F\u002F nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n+  \u002F\u002F of course, fail.\n+  return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n+    \u002F\u002F Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n+    !Symbol.sham && V8_VERSION && V8_VERSION \u003C 41;\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4527:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var isArray = __webpack_require__(4376);\n+\n+var $TypeError = TypeError;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n+\n+\u002F\u002F Safari \u003C 13 does not throw an error in this case\n+var SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n+  \u002F\u002F makes no sense without proper strict mode support\n+  if (this !== undefined) return true;\n+  try {\n+    \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\n+    Object.defineProperty([], 'length', { writable: false }).length = 1;\n+  } catch (error) {\n+    return error instanceof TypeError;\n+  }\n+}();\n+\n+module.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n+  if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n+    throw new $TypeError('Cannot set read only .length');\n+  } return O.length = length;\n+} : function (O, length) {\n+  return O.length = length;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4549:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fecma262\u002Fpull\u002F3467\n+module.exports = function (METHOD_NAME, ExpectedError) {\n+  var Iterator = globalThis.Iterator;\n+  var IteratorPrototype = Iterator && Iterator.prototype;\n+  var method = IteratorPrototype && IteratorPrototype[METHOD_NAME];\n+\n+  var CLOSED = false;\n+\n+  if (method) try {\n+    method.call({\n+      next: function () { return { done: true }; },\n+      'return': function () { CLOSED = true; }\n+    }, -1);\n+  } catch (error) {\n+    \u002F\u002F https:\u002F\u002Fbugs.webkit.org\u002Fshow_bug.cgi?id=291195\n+    if (!(error instanceof ExpectedError)) CLOSED = false;\n+  }\n+\n+  if (!CLOSED) return method;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4576:\n+\u002F***\u002F (function(module) {\n+\n+\n+var check = function (it) {\n+  return it && it.Math === Math && it;\n+};\n+\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F86#issuecomment-115759028\n+module.exports =\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-global-this -- safe\n+  check(typeof globalThis == 'object' && globalThis) ||\n+  check(typeof window == 'object' && window) ||\n+  \u002F\u002F eslint-disable-next-line no-restricted-globals -- safe\n+  check(typeof self == 'object' && self) ||\n+  check(typeof global == 'object' && global) ||\n+  check(typeof this == 'object' && this) ||\n+  \u002F\u002F eslint-disable-next-line no-new-func -- fallback\n+  (function () { return this; })() || Function('return this')();\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4603:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var defineBuiltIn = __webpack_require__(6840);\n+var uncurryThis = __webpack_require__(9504);\n+var toString = __webpack_require__(655);\n+var validateArgumentsLength = __webpack_require__(2812);\n+\n+var $URLSearchParams = URLSearchParams;\n+var URLSearchParamsPrototype = $URLSearchParams.prototype;\n+var append = uncurryThis(URLSearchParamsPrototype.append);\n+var $delete = uncurryThis(URLSearchParamsPrototype['delete']);\n+var forEach = uncurryThis(URLSearchParamsPrototype.forEach);\n+var push = uncurryThis([].push);\n+var params = new $URLSearchParams('a=1&a=2&b=3');\n+\n+params['delete']('a', 1);\n+\u002F\u002F `undefined` case is a Chromium 117 bug\n+\u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=14222\n+params['delete']('b', undefined);\n+\n+if (params + '' !== 'a=2') {\n+  defineBuiltIn(URLSearchParamsPrototype, 'delete', function (name \u002F* , value *\u002F) {\n+    var length = arguments.length;\n+    var $value = length \u003C 2 ? undefined : arguments[1];\n+    if (length && $value === undefined) return $delete(this, name);\n+    var entries = [];\n+    forEach(this, function (v, k) { \u002F\u002F also validates `this`\n+      push(entries, { key: k, value: v });\n+    });\n+    validateArgumentsLength(length, 1);\n+    var key = toString(name);\n+    var value = toString($value);\n+    var index = 0;\n+    var dindex = 0;\n+    var found = false;\n+    var entriesLength = entries.length;\n+    var entry;\n+    while (index \u003C entriesLength) {\n+      entry = entries[index++];\n+      if (found || entry.key === key) {\n+        found = true;\n+        $delete(this, entry.key);\n+      } else dindex++;\n+    }\n+    while (dindex \u003C entriesLength) {\n+      entry = entries[dindex++];\n+      if (!(entry.key === key && entry.value === value)) append(this, entry.key, entry.value);\n+    }\n+  }, { enumerable: true, unsafe: true });\n+}\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4628:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var newPromiseCapabilityModule = __webpack_require__(6043);\n+\n+\u002F\u002F `Promise.withResolvers` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-promise.withResolvers\n+$({ target: 'Promise', stat: true }, {\n+  withResolvers: function withResolvers() {\n+    var promiseCapability = newPromiseCapabilityModule.f(this);\n+    return {\n+      promise: promiseCapability.promise,\n+      resolve: promiseCapability.resolve,\n+      reject: promiseCapability.reject\n+    };\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4659:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var definePropertyModule = __webpack_require__(4913);\n+var createPropertyDescriptor = __webpack_require__(6980);\n+\n+module.exports = function (object, key, value) {\n+  if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));\n+  else object[key] = value;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4901:\n+\u002F***\u002F ((module) => {\n+\n+\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-IsHTMLDDA-internal-slot\n+var documentAll = typeof document == 'object' && document.all;\n+\n+\u002F\u002F `IsCallable` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iscallable\n+\u002F\u002F eslint-disable-next-line unicorn\u002Fno-typeof-undefined -- required for testing\n+module.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n+  return typeof argument == 'function' || argument === documentAll;\n+} : function (argument) {\n+  return typeof argument == 'function';\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4913:\n+\u002F***\u002F ((__unused_webpack_module, exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var IE8_DOM_DEFINE = __webpack_require__(5917);\n+var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(8686);\n+var anObject = __webpack_require__(8551);\n+var toPropertyKey = __webpack_require__(6969);\n+\n+var $TypeError = TypeError;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\n+var $defineProperty = Object.defineProperty;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n+var ENUMERABLE = 'enumerable';\n+var CONFIGURABLE = 'configurable';\n+var WRITABLE = 'writable';\n+\n+\u002F\u002F `Object.defineProperty` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.defineproperty\n+exports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n+  anObject(O);\n+  P = toPropertyKey(P);\n+  anObject(Attributes);\n+  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n+    var current = $getOwnPropertyDescriptor(O, P);\n+    if (current && current[WRITABLE]) {\n+      O[P] = Attributes.value;\n+      Attributes = {\n+        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n+        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n+        writable: false\n+      };\n+    }\n+  } return $defineProperty(O, P, Attributes);\n+} : $defineProperty : function defineProperty(O, P, Attributes) {\n+  anObject(O);\n+  P = toPropertyKey(P);\n+  anObject(Attributes);\n+  if (IE8_DOM_DEFINE) try {\n+    return $defineProperty(O, P, Attributes);\n+  } catch (error) { \u002F* empty *\u002F }\n+  if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n+  if ('value' in Attributes) O[P] = Attributes.value;\n+  return O;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4916:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var getBuiltIn = __webpack_require__(7751);\n+\n+var createSetLike = function (size) {\n+  return {\n+    size: size,\n+    has: function () {\n+      return false;\n+    },\n+    keys: function () {\n+      return {\n+        next: function () {\n+          return { done: true };\n+        }\n+      };\n+    }\n+  };\n+};\n+\n+var createSetLikeWithInfinitySize = function (size) {\n+  return {\n+    size: size,\n+    has: function () {\n+      return true;\n+    },\n+    keys: function () {\n+      throw new Error('e');\n+    }\n+  };\n+};\n+\n+module.exports = function (name, callback) {\n+  var Set = getBuiltIn('Set');\n+  try {\n+    new Set()[name](createSetLike(0));\n+    try {\n+      \u002F\u002F late spec change, early WebKit ~ Safari 17 implementation does not pass it\n+      \u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\u002Fpull\u002F88\n+      \u002F\u002F also covered engines with\n+      \u002F\u002F https:\u002F\u002Fbugs.webkit.org\u002Fshow_bug.cgi?id=272679\n+      new Set()[name](createSetLike(-1));\n+      return false;\n+    } catch (error2) {\n+      if (!callback) return true;\n+      \u002F\u002F early V8 implementation bug\n+      \u002F\u002F https:\u002F\u002Fissues.chromium.org\u002Fissues\u002F351332634\n+      try {\n+        new Set()[name](createSetLikeWithInfinitySize(-Infinity));\n+        return false;\n+      } catch (error) {\n+        var set = new Set();\n+        set.add(1);\n+        set.add(2);\n+        return callback(set[name](createSetLikeWithInfinitySize(Infinity)));\n+      }\n+    }\n+  } catch (error) {\n+    return false;\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4979:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var globalThis = __webpack_require__(4576);\n+var getBuiltIn = __webpack_require__(7751);\n+var createPropertyDescriptor = __webpack_require__(6980);\n+var defineProperty = (__webpack_require__(4913).f);\n+var hasOwn = __webpack_require__(9297);\n+var anInstance = __webpack_require__(679);\n+var inheritIfRequired = __webpack_require__(3167);\n+var normalizeStringArgument = __webpack_require__(2603);\n+var DOMExceptionConstants = __webpack_require__(5002);\n+var clearErrorStack = __webpack_require__(8574);\n+var DESCRIPTORS = __webpack_require__(3724);\n+var IS_PURE = __webpack_require__(6395);\n+\n+var DOM_EXCEPTION = 'DOMException';\n+var Error = getBuiltIn('Error');\n+var NativeDOMException = getBuiltIn(DOM_EXCEPTION);\n+\n+var $DOMException = function DOMException() {\n+  anInstance(this, DOMExceptionPrototype);\n+  var argumentsLength = arguments.length;\n+  var message = normalizeStringArgument(argumentsLength \u003C 1 ? undefined : arguments[0]);\n+  var name = normalizeStringArgument(argumentsLength \u003C 2 ? undefined : arguments[1], 'Error');\n+  var that = new NativeDOMException(message, name);\n+  var error = new Error(message);\n+  error.name = DOM_EXCEPTION;\n+  defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\n+  inheritIfRequired(that, this, $DOMException);\n+  return that;\n+};\n+\n+var DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;\n+\n+var ERROR_HAS_STACK = 'stack' in new Error(DOM_EXCEPTION);\n+var DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);\n+\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+var descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(globalThis, DOM_EXCEPTION);\n+\n+\u002F\u002F Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002FJarred-Sumner\u002Fbun\u002Fissues\u002F399\n+var BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);\n+\n+var FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;\n+\n+\u002F\u002F `DOMException` constructor patch for `.stack` where it's required\n+\u002F\u002F https:\u002F\u002Fwebidl.spec.whatwg.org\u002F#es-DOMException-specialness\n+$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { \u002F\u002F TODO: fix export logic\n+  DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\n+});\n+\n+var PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\n+var PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\n+\n+if (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {\n+  if (!IS_PURE) {\n+    defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException));\n+  }\n+\n+  for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\n+    var constant = DOMExceptionConstants[key];\n+    var constantName = constant.s;\n+    if (!hasOwn(PolyfilledDOMException, constantName)) {\n+      defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));\n+    }\n+  }\n+}\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5002:\n+\u002F***\u002F ((module) => {\n+\n+\n+module.exports = {\n+  IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },\n+  DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },\n+  HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },\n+  WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 },\n+  InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 },\n+  NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 },\n+  NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 },\n+  NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 },\n+  NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 },\n+  InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 },\n+  InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 },\n+  SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 },\n+  InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 },\n+  NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 },\n+  InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 },\n+  ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 },\n+  TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 },\n+  SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 },\n+  NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 },\n+  AbortError: { s: 'ABORT_ERR', c: 20, m: 1 },\n+  URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 },\n+  QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 },\n+  TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 },\n+  InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 },\n+  DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5024:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var symmetricDifference = __webpack_require__(3650);\n+var setMethodAcceptSetLike = __webpack_require__(4916);\n+\n+\u002F\u002F `Set.prototype.symmetricDifference` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.symmetricdifference\n+$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('symmetricDifference') }, {\n+  symmetricDifference: symmetricDifference\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5031:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var getBuiltIn = __webpack_require__(7751);\n+var uncurryThis = __webpack_require__(9504);\n+var getOwnPropertyNamesModule = __webpack_require__(8480);\n+var getOwnPropertySymbolsModule = __webpack_require__(3717);\n+var anObject = __webpack_require__(8551);\n+\n+var concat = uncurryThis([].concat);\n+\n+\u002F\u002F all object keys, includes non-enumerable and symbols\n+module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n+  var keys = getOwnPropertyNamesModule.f(anObject(it));\n+  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n+  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5169:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isDetached = __webpack_require__(3238);\n+\n+var $TypeError = TypeError;\n+\n+module.exports = function (it) {\n+  if (isDetached(it)) throw new $TypeError('ArrayBuffer is detached');\n+  return it;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5170:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThisAccessor = __webpack_require__(6706);\n+var SetHelpers = __webpack_require__(4402);\n+\n+module.exports = uncurryThisAccessor(SetHelpers.proto, 'size', 'get') || function (set) {\n+  return set.size;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5370:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var lengthOfArrayLike = __webpack_require__(6198);\n+\n+module.exports = function (Constructor, list, $length) {\n+  var index = 0;\n+  var length = arguments.length > 2 ? $length : lengthOfArrayLike(list);\n+  var result = new Constructor(length);\n+  while (length > index) result[index] = list[index++];\n+  return result;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5397:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+\u002F\u002F toObject with fallback for non-array-like ES3 strings\n+var IndexedObject = __webpack_require__(7055);\n+var requireObjectCoercible = __webpack_require__(7750);\n+\n+module.exports = function (it) {\n+  return IndexedObject(requireObjectCoercible(it));\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5610:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var toIntegerOrInfinity = __webpack_require__(1291);\n+\n+var max = Math.max;\n+var min = Math.min;\n+\n+\u002F\u002F Helper for a popular repeating case of the spec:\n+\u002F\u002F Let integer be ? ToInteger(index).\n+\u002F\u002F If integer \u003C 0, let result be max((length + integer), 0); else let result be min(integer, length).\n+module.exports = function (index, length) {\n+  var integer = toIntegerOrInfinity(index);\n+  return integer \u003C 0 ? max(integer + length, 0) : min(integer, length);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5623:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var globalThis = __webpack_require__(4576);\n+var uncurryThis = __webpack_require__(9504);\n+var anUint8Array = __webpack_require__(4154);\n+var notDetached = __webpack_require__(5169);\n+\n+var numberToString = uncurryThis(1.0.toString);\n+\n+\u002F\u002F `Uint8Array.prototype.toHex` method\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-arraybuffer-base64\n+if (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {\n+  toHex: function toHex() {\n+    anUint8Array(this);\n+    notDetached(this.buffer);\n+    var result = '';\n+    for (var i = 0, length = this.length; i \u003C length; i++) {\n+      var hex = numberToString(this[i], 16);\n+      result += hex.length === 1 ? '0' + hex : hex;\n+    }\n+    return result;\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5636:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var uncurryThis = __webpack_require__(9504);\n+var uncurryThisAccessor = __webpack_require__(6706);\n+var toIndex = __webpack_require__(7696);\n+var notDetached = __webpack_require__(5169);\n+var arrayBufferByteLength = __webpack_require__(7394);\n+var detachTransferable = __webpack_require__(4483);\n+var PROPER_STRUCTURED_CLONE_TRANSFER = __webpack_require__(1548);\n+\n+var structuredClone = globalThis.structuredClone;\n+var ArrayBuffer = globalThis.ArrayBuffer;\n+var DataView = globalThis.DataView;\n+var min = Math.min;\n+var ArrayBufferPrototype = ArrayBuffer.prototype;\n+var DataViewPrototype = DataView.prototype;\n+var slice = uncurryThis(ArrayBufferPrototype.slice);\n+var isResizable = uncurryThisAccessor(ArrayBufferPrototype, 'resizable', 'get');\n+var maxByteLength = uncurryThisAccessor(ArrayBufferPrototype, 'maxByteLength', 'get');\n+var getInt8 = uncurryThis(DataViewPrototype.getInt8);\n+var setInt8 = uncurryThis(DataViewPrototype.setInt8);\n+\n+module.exports = (PROPER_STRUCTURED_CLONE_TRANSFER || detachTransferable) && function (arrayBuffer, newLength, preserveResizability) {\n+  var byteLength = arrayBufferByteLength(arrayBuffer);\n+  var newByteLength = newLength === undefined ? byteLength : toIndex(newLength);\n+  var fixedLength = !isResizable || !isResizable(arrayBuffer);\n+  var newBuffer;\n+  notDetached(arrayBuffer);\n+  if (PROPER_STRUCTURED_CLONE_TRANSFER) {\n+    arrayBuffer = structuredClone(arrayBuffer, { transfer: [arrayBuffer] });\n+    if (byteLength === newByteLength && (preserveResizability || fixedLength)) return arrayBuffer;\n+  }\n+  if (byteLength >= newByteLength && (!preserveResizability || fixedLength)) {\n+    newBuffer = slice(arrayBuffer, 0, newByteLength);\n+  } else {\n+    var options = preserveResizability && !fixedLength && maxByteLength ? { maxByteLength: maxByteLength(arrayBuffer) } : undefined;\n+    newBuffer = new ArrayBuffer(newByteLength, options);\n+    var a = new DataView(arrayBuffer);\n+    var b = new DataView(newBuffer);\n+    var copyLength = min(newByteLength, byteLength);\n+    for (var i = 0; i \u003C copyLength; i++) setInt8(b, i, getInt8(a, i));\n+  }\n+  if (!PROPER_STRUCTURED_CLONE_TRANSFER) detachTransferable(arrayBuffer);\n+  return newBuffer;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5745:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var store = __webpack_require__(7629);\n+\n+module.exports = function (key, value) {\n+  return store[key] || (store[key] = value || {});\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5781:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var getBuiltIn = __webpack_require__(7751);\n+var validateArgumentsLength = __webpack_require__(2812);\n+var toString = __webpack_require__(655);\n+var USE_NATIVE_URL = __webpack_require__(7416);\n+\n+var URL = getBuiltIn('URL');\n+\n+\u002F\u002F `URL.parse` method\n+\u002F\u002F https:\u002F\u002Furl.spec.whatwg.org\u002F#dom-url-canparse\n+$({ target: 'URL', stat: true, forced: !USE_NATIVE_URL }, {\n+  parse: function parse(url) {\n+    var length = validateArgumentsLength(arguments.length, 1);\n+    var urlString = toString(url);\n+    var base = length \u003C 2 || arguments[1] === undefined ? undefined : toString(arguments[1]);\n+    try {\n+      return new URL(urlString, base);\n+    } catch (error) {\n+      return null;\n+    }\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5876:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var isSubsetOf = __webpack_require__(3838);\n+var setMethodAcceptSetLike = __webpack_require__(4916);\n+\n+var INCORRECT = !setMethodAcceptSetLike('isSubsetOf', function (result) {\n+  return result;\n+});\n+\n+\u002F\u002F `Set.prototype.isSubsetOf` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.issubsetof\n+$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n+  isSubsetOf: isSubsetOf\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5917:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var fails = __webpack_require__(9039);\n+var createElement = __webpack_require__(4055);\n+\n+\u002F\u002F Thanks to IE8 for its funny defineProperty\n+module.exports = !DESCRIPTORS && !fails(function () {\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- required for testing\n+  return Object.defineProperty(createElement('div'), 'a', {\n+    get: function () { return 7; }\n+  }).a !== 7;\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5966:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aCallable = __webpack_require__(9306);\n+var isNullOrUndefined = __webpack_require__(4117);\n+\n+\u002F\u002F `GetMethod` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-getmethod\n+module.exports = function (V, P) {\n+  var func = V[P];\n+  return isNullOrUndefined(func) ? undefined : aCallable(func);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6043:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aCallable = __webpack_require__(9306);\n+\n+var $TypeError = TypeError;\n+\n+var PromiseCapability = function (C) {\n+  var resolve, reject;\n+  this.promise = new C(function ($$resolve, $$reject) {\n+    if (resolve !== undefined || reject !== undefined) throw new $TypeError('Bad Promise constructor');\n+    resolve = $$resolve;\n+    reject = $$reject;\n+  });\n+  this.resolve = aCallable(resolve);\n+  this.reject = aCallable(reject);\n+};\n+\n+\u002F\u002F `NewPromiseCapability` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-newpromisecapability\n+module.exports.f = function (C) {\n+  return new PromiseCapability(C);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6080:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(7476);\n+var aCallable = __webpack_require__(9306);\n+var NATIVE_BIND = __webpack_require__(616);\n+\n+var bind = uncurryThis(uncurryThis.bind);\n+\n+\u002F\u002F optional \u002F simple context binding\n+module.exports = function (fn, that) {\n+  aCallable(fn);\n+  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (\u002F* ...args *\u002F) {\n+    return fn.apply(that, arguments);\n+  };\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6119:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var shared = __webpack_require__(5745);\n+var uid = __webpack_require__(3392);\n+\n+var keys = shared('keys');\n+\n+module.exports = function (key) {\n+  return keys[key] || (keys[key] = uid(key));\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6193:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var ENVIRONMENT = __webpack_require__(4215);\n+\n+module.exports = ENVIRONMENT === 'NODE';\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6198:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var toLength = __webpack_require__(8014);\n+\n+\u002F\u002F `LengthOfArrayLike` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-lengthofarraylike\n+module.exports = function (obj) {\n+  return toLength(obj.length);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6269:\n+\u002F***\u002F ((module) => {\n+\n+\n+module.exports = {};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6279:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var defineBuiltIn = __webpack_require__(6840);\n+\n+module.exports = function (target, src, options) {\n+  for (var key in src) defineBuiltIn(target, key, src[key], options);\n+  return target;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6319:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var anObject = __webpack_require__(8551);\n+var iteratorClose = __webpack_require__(9539);\n+\n+\u002F\u002F call something on iterator step with safe closing on error\n+module.exports = function (iterator, fn, value, ENTRIES) {\n+  try {\n+    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n+  } catch (error) {\n+    iteratorClose(iterator, 'throw', error);\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6395:\n+\u002F***\u002F ((module) => {\n+\n+\n+module.exports = false;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6518:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var getOwnPropertyDescriptor = (__webpack_require__(7347).f);\n+var createNonEnumerableProperty = __webpack_require__(6699);\n+var defineBuiltIn = __webpack_require__(6840);\n+var defineGlobalProperty = __webpack_require__(9433);\n+var copyConstructorProperties = __webpack_require__(7740);\n+var isForced = __webpack_require__(2796);\n+\n+\u002F*\n+  options.target         - name of the target object\n+  options.global         - target is the global object\n+  options.stat           - export as static methods of target\n+  options.proto          - export as prototype methods of target\n+  options.real           - real prototype method for the `pure` version\n+  options.forced         - export even if the native feature is available\n+  options.bind           - bind methods to the target, required for the `pure` version\n+  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version\n+  options.unsafe         - use the simple assignment of property instead of delete + defineProperty\n+  options.sham           - add a flag to not completely full polyfills\n+  options.enumerable     - export as enumerable property\n+  options.dontCallGetSet - prevent calling a getter on target\n+  options.name           - the .name of the function if it does not match the key\n+*\u002F\n+module.exports = function (options, source) {\n+  var TARGET = options.target;\n+  var GLOBAL = options.global;\n+  var STATIC = options.stat;\n+  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n+  if (GLOBAL) {\n+    target = globalThis;\n+  } else if (STATIC) {\n+    target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\n+  } else {\n+    target = globalThis[TARGET] && globalThis[TARGET].prototype;\n+  }\n+  if (target) for (key in source) {\n+    sourceProperty = source[key];\n+    if (options.dontCallGetSet) {\n+      descriptor = getOwnPropertyDescriptor(target, key);\n+      targetProperty = descriptor && descriptor.value;\n+    } else targetProperty = target[key];\n+    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n+    \u002F\u002F contained in target\n+    if (!FORCED && targetProperty !== undefined) {\n+      if (typeof sourceProperty == typeof targetProperty) continue;\n+      copyConstructorProperties(sourceProperty, targetProperty);\n+    }\n+    \u002F\u002F add a flag to not completely full polyfills\n+    if (options.sham || (targetProperty && targetProperty.sham)) {\n+      createNonEnumerableProperty(sourceProperty, 'sham', true);\n+    }\n+    defineBuiltIn(target, key, sourceProperty, options);\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6573:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var defineBuiltInAccessor = __webpack_require__(2106);\n+var isDetached = __webpack_require__(3238);\n+\n+var ArrayBufferPrototype = ArrayBuffer.prototype;\n+\n+\u002F\u002F `ArrayBuffer.prototype.detached` getter\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-get-arraybuffer.prototype.detached\n+if (DESCRIPTORS && !('detached' in ArrayBufferPrototype)) {\n+  defineBuiltInAccessor(ArrayBufferPrototype, 'detached', {\n+    configurable: true,\n+    get: function detached() {\n+      return isDetached(this);\n+    }\n+  });\n+}\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6699:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var definePropertyModule = __webpack_require__(4913);\n+var createPropertyDescriptor = __webpack_require__(6980);\n+\n+module.exports = DESCRIPTORS ? function (object, key, value) {\n+  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n+} : function (object, key, value) {\n+  object[key] = value;\n+  return object;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6706:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+var aCallable = __webpack_require__(9306);\n+\n+module.exports = function (object, key, method) {\n+  try {\n+    \u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+    return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n+  } catch (error) { \u002F* empty *\u002F }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6801:\n+\u002F***\u002F ((__unused_webpack_module, exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(8686);\n+var definePropertyModule = __webpack_require__(4913);\n+var anObject = __webpack_require__(8551);\n+var toIndexedObject = __webpack_require__(5397);\n+var objectKeys = __webpack_require__(1072);\n+\n+\u002F\u002F `Object.defineProperties` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.defineproperties\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperties -- safe\n+exports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n+  anObject(O);\n+  var props = toIndexedObject(Properties);\n+  var keys = objectKeys(Properties);\n+  var length = keys.length;\n+  var index = 0;\n+  var key;\n+  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n+  return O;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6823:\n+\u002F***\u002F ((module) => {\n+\n+\n+var $String = String;\n+\n+module.exports = function (argument) {\n+  try {\n+    return $String(argument);\n+  } catch (error) {\n+    return 'Object';\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6837:\n+\u002F***\u002F ((module) => {\n+\n+\n+var $TypeError = TypeError;\n+var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; \u002F\u002F 2 ** 53 - 1 == 9007199254740991\n+\n+module.exports = function (it) {\n+  if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n+  return it;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6840:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isCallable = __webpack_require__(4901);\n+var definePropertyModule = __webpack_require__(4913);\n+var makeBuiltIn = __webpack_require__(283);\n+var defineGlobalProperty = __webpack_require__(9433);\n+\n+module.exports = function (O, key, value, options) {\n+  if (!options) options = {};\n+  var simple = options.enumerable;\n+  var name = options.name !== undefined ? options.name : key;\n+  if (isCallable(value)) makeBuiltIn(value, name, options);\n+  if (options.global) {\n+    if (simple) O[key] = value;\n+    else defineGlobalProperty(key, value);\n+  } else {\n+    try {\n+      if (!options.unsafe) delete O[key];\n+      else if (O[key]) simple = true;\n+    } catch (error) { \u002F* empty *\u002F }\n+    if (simple) O[key] = value;\n+    else definePropertyModule.f(O, key, {\n+      value: value,\n+      enumerable: false,\n+      configurable: !options.nonConfigurable,\n+      writable: !options.nonWritable\n+    });\n+  } return O;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6955:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var TO_STRING_TAG_SUPPORT = __webpack_require__(2140);\n+var isCallable = __webpack_require__(4901);\n+var classofRaw = __webpack_require__(2195);\n+var wellKnownSymbol = __webpack_require__(8227);\n+\n+var TO_STRING_TAG = wellKnownSymbol('toStringTag');\n+var $Object = Object;\n+\n+\u002F\u002F ES3 wrong here\n+var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n+\n+\u002F\u002F fallback for IE11 Script Access Denied error\n+var tryGet = function (it, key) {\n+  try {\n+    return it[key];\n+  } catch (error) { \u002F* empty *\u002F }\n+};\n+\n+\u002F\u002F getting tag from ES6+ `Object.prototype.toString`\n+module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n+  var O, tag, result;\n+  return it === undefined ? 'Undefined' : it === null ? 'Null'\n+    \u002F\u002F @@toStringTag case\n+    : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n+    \u002F\u002F builtinTag case\n+    : CORRECT_ARGUMENTS ? classofRaw(O)\n+    \u002F\u002F ES3 arguments fallback\n+    : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6969:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var toPrimitive = __webpack_require__(2777);\n+var isSymbol = __webpack_require__(757);\n+\n+\u002F\u002F `ToPropertyKey` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-topropertykey\n+module.exports = function (argument) {\n+  var key = toPrimitive(argument, 'string');\n+  return isSymbol(key) ? key : key + '';\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6980:\n+\u002F***\u002F ((module) => {\n+\n+\n+module.exports = function (bitmap, value) {\n+  return {\n+    enumerable: !(bitmap & 1),\n+    configurable: !(bitmap & 2),\n+    writable: !(bitmap & 4),\n+    value: value\n+  };\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7040:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+\u002F* eslint-disable es\u002Fno-symbol -- required for testing *\u002F\n+var NATIVE_SYMBOL = __webpack_require__(4495);\n+\n+module.exports = NATIVE_SYMBOL &&\n+  !Symbol.sham &&\n+  typeof Symbol.iterator == 'symbol';\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7055:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+var fails = __webpack_require__(9039);\n+var classof = __webpack_require__(2195);\n+\n+var $Object = Object;\n+var split = uncurryThis(''.split);\n+\n+\u002F\u002F fallback for non-array-like ES3 and non-enumerable old V8 strings\n+module.exports = fails(function () {\n+  \u002F\u002F throws an error in rhino, see https:\u002F\u002Fgithub.com\u002Fmozilla\u002Frhino\u002Fissues\u002F346\n+  \u002F\u002F eslint-disable-next-line no-prototype-builtins -- safe\n+  return !$Object('z').propertyIsEnumerable(0);\n+}) ? function (it) {\n+  return classof(it) === 'String' ? split(it, '') : $Object(it);\n+} : $Object;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7080:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var has = (__webpack_require__(4402).has);\n+\n+\u002F\u002F Perform ? RequireInternalSlot(M, [[SetData]])\n+module.exports = function (it) {\n+  has(it);\n+  return it;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7347:\n+\u002F***\u002F ((__unused_webpack_module, exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var call = __webpack_require__(9565);\n+var propertyIsEnumerableModule = __webpack_require__(8773);\n+var createPropertyDescriptor = __webpack_require__(6980);\n+var toIndexedObject = __webpack_require__(5397);\n+var toPropertyKey = __webpack_require__(6969);\n+var hasOwn = __webpack_require__(9297);\n+var IE8_DOM_DEFINE = __webpack_require__(5917);\n+\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n+\n+\u002F\u002F `Object.getOwnPropertyDescriptor` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.getownpropertydescriptor\n+exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n+  O = toIndexedObject(O);\n+  P = toPropertyKey(P);\n+  if (IE8_DOM_DEFINE) try {\n+    return $getOwnPropertyDescriptor(O, P);\n+  } catch (error) { \u002F* empty *\u002F }\n+  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7394:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var uncurryThisAccessor = __webpack_require__(6706);\n+var classof = __webpack_require__(2195);\n+\n+var ArrayBuffer = globalThis.ArrayBuffer;\n+var TypeError = globalThis.TypeError;\n+\n+\u002F\u002F Includes\n+\u002F\u002F - Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).\n+\u002F\u002F - If IsSharedArrayBuffer(O) is true, throw a TypeError exception.\n+module.exports = ArrayBuffer && uncurryThisAccessor(ArrayBuffer.prototype, 'byteLength', 'get') || function (O) {\n+  if (classof(O) !== 'ArrayBuffer') throw new TypeError('ArrayBuffer expected');\n+  return O.byteLength;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7416:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var fails = __webpack_require__(9039);\n+var wellKnownSymbol = __webpack_require__(8227);\n+var DESCRIPTORS = __webpack_require__(3724);\n+var IS_PURE = __webpack_require__(6395);\n+\n+var ITERATOR = wellKnownSymbol('iterator');\n+\n+module.exports = !fails(function () {\n+  \u002F\u002F eslint-disable-next-line unicorn\u002Frelative-url-style -- required for testing\n+  var url = new URL('b?a=1&b=2&c=3', 'https:\u002F\u002Fa');\n+  var params = url.searchParams;\n+  var params2 = new URLSearchParams('a=1&a=2&b=3');\n+  var result = '';\n+  url.pathname = 'c%20d';\n+  params.forEach(function (value, key) {\n+    params['delete']('b');\n+    result += key + value;\n+  });\n+  params2['delete']('a', 2);\n+  \u002F\u002F `undefined` case is a Chromium 117 bug\n+  \u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=14222\n+  params2['delete']('b', undefined);\n+  return (IS_PURE && (!url.toJSON || !params2.has('a', 1) || params2.has('a', 2) || !params2.has('a', undefined) || params2.has('b')))\n+    || (!params.size && (IS_PURE || !DESCRIPTORS))\n+    || !params.sort\n+    || url.href !== 'https:\u002F\u002Fa\u002Fc%20d?a=1&c=3'\n+    || params.get('c') !== '3'\n+    || String(new URLSearchParams('?a=1')) !== 'a=1'\n+    || !params[ITERATOR]\n+    \u002F\u002F throws in Edge\n+    || new URL('https:\u002F\u002Fa@b').username !== 'a'\n+    || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n+    \u002F\u002F not punycoded in Edge\n+    || new URL('https:\u002F\u002Fтест').host !== 'xn--e1aybc'\n+    \u002F\u002F not escaped in Chrome 62-\n+    || new URL('https:\u002F\u002Fa#б').hash !== '#%D0%B1'\n+    \u002F\u002F fails in Chrome 66-\n+    || result !== 'a1c3'\n+    \u002F\u002F throws in Safari\n+    || new URL('https:\u002F\u002Fx', undefined).host !== 'x';\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7476:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var classofRaw = __webpack_require__(2195);\n+var uncurryThis = __webpack_require__(9504);\n+\n+module.exports = function (fn) {\n+  \u002F\u002F Nashorn bug:\n+  \u002F\u002F   https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F1128\n+  \u002F\u002F   https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F1130\n+  if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7566:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var defineBuiltIn = __webpack_require__(6840);\n+var uncurryThis = __webpack_require__(9504);\n+var toString = __webpack_require__(655);\n+var validateArgumentsLength = __webpack_require__(2812);\n+\n+var $URLSearchParams = URLSearchParams;\n+var URLSearchParamsPrototype = $URLSearchParams.prototype;\n+var getAll = uncurryThis(URLSearchParamsPrototype.getAll);\n+var $has = uncurryThis(URLSearchParamsPrototype.has);\n+var params = new $URLSearchParams('a=1');\n+\n+\u002F\u002F `undefined` case is a Chromium 117 bug\n+\u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=14222\n+if (params.has('a', 2) || !params.has('a', undefined)) {\n+  defineBuiltIn(URLSearchParamsPrototype, 'has', function has(name \u002F* , value *\u002F) {\n+    var length = arguments.length;\n+    var $value = length \u003C 2 ? undefined : arguments[1];\n+    if (length && $value === undefined) return $has(this, name);\n+    var values = getAll(this, name); \u002F\u002F also validates `this`\n+    validateArgumentsLength(length, 1);\n+    var value = toString($value);\n+    var index = 0;\n+    while (index \u003C values.length) {\n+      if (values[index++] === value) return true;\n+    } return false;\n+  }, { enumerable: true, unsafe: true });\n+}\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7588:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var call = __webpack_require__(9565);\n+var iterate = __webpack_require__(2652);\n+var aCallable = __webpack_require__(9306);\n+var anObject = __webpack_require__(8551);\n+var getIteratorDirect = __webpack_require__(1767);\n+var iteratorClose = __webpack_require__(9539);\n+var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n+\n+var forEachWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('forEach', TypeError);\n+\n+\u002F\u002F `Iterator.prototype.forEach` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.foreach\n+$({ target: 'Iterator', proto: true, real: true, forced: forEachWithoutClosingOnEarlyError }, {\n+  forEach: function forEach(fn) {\n+    anObject(this);\n+    try {\n+      aCallable(fn);\n+    } catch (error) {\n+      iteratorClose(this, 'throw', error);\n+    }\n+\n+    if (forEachWithoutClosingOnEarlyError) return call(forEachWithoutClosingOnEarlyError, this, fn);\n+\n+    var record = getIteratorDirect(this);\n+    var counter = 0;\n+    iterate(record, function (value) {\n+      fn(value, counter++);\n+    }, { IS_RECORD: true });\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7629:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var IS_PURE = __webpack_require__(6395);\n+var globalThis = __webpack_require__(4576);\n+var defineGlobalProperty = __webpack_require__(9433);\n+\n+var SHARED = '__core-js_shared__';\n+var store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n+\n+(store.versions || (store.versions = [])).push({\n+  version: '3.42.0',\n+  mode: IS_PURE ? 'pure' : 'global',\n+  copyright: '© 2014-2025 Denis Pushkarev (zloirock.ru)',\n+  license: 'https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fv3.42.0\u002FLICENSE',\n+  source: 'https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js'\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7642:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var difference = __webpack_require__(3440);\n+var setMethodAcceptSetLike = __webpack_require__(4916);\n+\n+var INCORRECT = !setMethodAcceptSetLike('difference', function (result) {\n+  return result.size === 0;\n+});\n+\n+\u002F\u002F `Set.prototype.difference` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.difference\n+$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n+  difference: difference\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7657:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var fails = __webpack_require__(9039);\n+var isCallable = __webpack_require__(4901);\n+var isObject = __webpack_require__(34);\n+var create = __webpack_require__(2360);\n+var getPrototypeOf = __webpack_require__(2787);\n+var defineBuiltIn = __webpack_require__(6840);\n+var wellKnownSymbol = __webpack_require__(8227);\n+var IS_PURE = __webpack_require__(6395);\n+\n+var ITERATOR = wellKnownSymbol('iterator');\n+var BUGGY_SAFARI_ITERATORS = false;\n+\n+\u002F\u002F `%IteratorPrototype%` object\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-%iteratorprototype%-object\n+var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n+\n+\u002F* eslint-disable es\u002Fno-array-prototype-keys -- safe *\u002F\n+if ([].keys) {\n+  arrayIterator = [].keys();\n+  \u002F\u002F Safari 8 has buggy iterators w\u002Fo `next`\n+  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n+  else {\n+    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n+    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n+  }\n+}\n+\n+var NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n+  var test = {};\n+  \u002F\u002F FF44- legacy iterators case\n+  return IteratorPrototype[ITERATOR].call(test) !== test;\n+});\n+\n+if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\n+else if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n+\n+\u002F\u002F `%IteratorPrototype%[@@iterator]()` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-%iteratorprototype%-@@iterator\n+if (!isCallable(IteratorPrototype[ITERATOR])) {\n+  defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n+    return this;\n+  });\n+}\n+\n+module.exports = {\n+  IteratorPrototype: IteratorPrototype,\n+  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7680:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+\n+module.exports = uncurryThis([].slice);\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7696:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var toIntegerOrInfinity = __webpack_require__(1291);\n+var toLength = __webpack_require__(8014);\n+\n+var $RangeError = RangeError;\n+\n+\u002F\u002F `ToIndex` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-toindex\n+module.exports = function (it) {\n+  if (it === undefined) return 0;\n+  var number = toIntegerOrInfinity(it);\n+  var length = toLength(number);\n+  if (number !== length) throw new $RangeError('Wrong length or index');\n+  return length;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7740:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var hasOwn = __webpack_require__(9297);\n+var ownKeys = __webpack_require__(5031);\n+var getOwnPropertyDescriptorModule = __webpack_require__(7347);\n+var definePropertyModule = __webpack_require__(4913);\n+\n+module.exports = function (target, source, exceptions) {\n+  var keys = ownKeys(source);\n+  var defineProperty = definePropertyModule.f;\n+  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n+  for (var i = 0; i \u003C keys.length; i++) {\n+    var key = keys[i];\n+    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n+      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n+    }\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7750:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isNullOrUndefined = __webpack_require__(4117);\n+\n+var $TypeError = TypeError;\n+\n+\u002F\u002F `RequireObjectCoercible` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-requireobjectcoercible\n+module.exports = function (it) {\n+  if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n+  return it;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7751:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var isCallable = __webpack_require__(4901);\n+\n+var aFunction = function (argument) {\n+  return isCallable(argument) ? argument : undefined;\n+};\n+\n+module.exports = function (namespace, method) {\n+  return arguments.length \u003C 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7811:\n+\u002F***\u002F ((module) => {\n+\n+\n+\u002F\u002F eslint-disable-next-line es\u002Fno-typed-arrays -- safe\n+module.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7936:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var $transfer = __webpack_require__(5636);\n+\n+\u002F\u002F `ArrayBuffer.prototype.transferToFixedLength` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-arraybuffer-transfer\u002F#sec-arraybuffer.prototype.transfertofixedlength\n+if ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n+  transferToFixedLength: function transferToFixedLength() {\n+    return $transfer(this, arguments.length ? arguments[0] : undefined, false);\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7979:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var anObject = __webpack_require__(8551);\n+\n+\u002F\u002F `RegExp.prototype.flags` getter implementation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-get-regexp.prototype.flags\n+module.exports = function () {\n+  var that = anObject(this);\n+  var result = '';\n+  if (that.hasIndices) result += 'd';\n+  if (that.global) result += 'g';\n+  if (that.ignoreCase) result += 'i';\n+  if (that.multiline) result += 'm';\n+  if (that.dotAll) result += 's';\n+  if (that.unicode) result += 'u';\n+  if (that.unicodeSets) result += 'v';\n+  if (that.sticky) result += 'y';\n+  return result;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8004:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var fails = __webpack_require__(9039);\n+var intersection = __webpack_require__(8750);\n+var setMethodAcceptSetLike = __webpack_require__(4916);\n+\n+var INCORRECT = !setMethodAcceptSetLike('intersection', function (result) {\n+  return result.size === 2 && result.has(1) && result.has(2);\n+}) || fails(function () {\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-array-from, es\u002Fno-set, es\u002Fno-set-prototype-intersection -- testing\n+  return String(Array.from(new Set([1, 2, 3]).intersection(new Set([3, 2])))) !== '3,2';\n+});\n+\n+\u002F\u002F `Set.prototype.intersection` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.intersection\n+$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n+  intersection: intersection\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8014:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var toIntegerOrInfinity = __webpack_require__(1291);\n+\n+var min = Math.min;\n+\n+\u002F\u002F `ToLength` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-tolength\n+module.exports = function (argument) {\n+  var len = toIntegerOrInfinity(argument);\n+  return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; \u002F\u002F 2 ** 53 - 1 == 9007199254740991\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8100:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var $transfer = __webpack_require__(5636);\n+\n+\u002F\u002F `ArrayBuffer.prototype.transfer` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-arraybuffer-transfer\u002F#sec-arraybuffer.prototype.transfer\n+if ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n+  transfer: function transfer() {\n+    return $transfer(this, arguments.length ? arguments[0] : undefined, true);\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8111:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var globalThis = __webpack_require__(4576);\n+var anInstance = __webpack_require__(679);\n+var anObject = __webpack_require__(8551);\n+var isCallable = __webpack_require__(4901);\n+var getPrototypeOf = __webpack_require__(2787);\n+var defineBuiltInAccessor = __webpack_require__(2106);\n+var createProperty = __webpack_require__(4659);\n+var fails = __webpack_require__(9039);\n+var hasOwn = __webpack_require__(9297);\n+var wellKnownSymbol = __webpack_require__(8227);\n+var IteratorPrototype = (__webpack_require__(7657).IteratorPrototype);\n+var DESCRIPTORS = __webpack_require__(3724);\n+var IS_PURE = __webpack_require__(6395);\n+\n+var CONSTRUCTOR = 'constructor';\n+var ITERATOR = 'Iterator';\n+var TO_STRING_TAG = wellKnownSymbol('toStringTag');\n+\n+var $TypeError = TypeError;\n+var NativeIterator = globalThis[ITERATOR];\n+\n+\u002F\u002F FF56- have non-standard global helper `Iterator`\n+var FORCED = IS_PURE\n+  || !isCallable(NativeIterator)\n+  || NativeIterator.prototype !== IteratorPrototype\n+  \u002F\u002F FF44- non-standard `Iterator` passes previous tests\n+  || !fails(function () { NativeIterator({}); });\n+\n+var IteratorConstructor = function Iterator() {\n+  anInstance(this, IteratorPrototype);\n+  if (getPrototypeOf(this) === IteratorPrototype) throw new $TypeError('Abstract class Iterator not directly constructable');\n+};\n+\n+var defineIteratorPrototypeAccessor = function (key, value) {\n+  if (DESCRIPTORS) {\n+    defineBuiltInAccessor(IteratorPrototype, key, {\n+      configurable: true,\n+      get: function () {\n+        return value;\n+      },\n+      set: function (replacement) {\n+        anObject(this);\n+        if (this === IteratorPrototype) throw new $TypeError(\"You can't redefine this property\");\n+        if (hasOwn(this, key)) this[key] = replacement;\n+        else createProperty(this, key, replacement);\n+      }\n+    });\n+  } else IteratorPrototype[key] = value;\n+};\n+\n+if (!hasOwn(IteratorPrototype, TO_STRING_TAG)) defineIteratorPrototypeAccessor(TO_STRING_TAG, ITERATOR);\n+\n+if (FORCED || !hasOwn(IteratorPrototype, CONSTRUCTOR) || IteratorPrototype[CONSTRUCTOR] === Object) {\n+  defineIteratorPrototypeAccessor(CONSTRUCTOR, IteratorConstructor);\n+}\n+\n+IteratorConstructor.prototype = IteratorPrototype;\n+\n+\u002F\u002F `Iterator` constructor\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator\n+$({ global: true, constructor: true, forced: FORCED }, {\n+  Iterator: IteratorConstructor\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8227:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var shared = __webpack_require__(5745);\n+var hasOwn = __webpack_require__(9297);\n+var uid = __webpack_require__(3392);\n+var NATIVE_SYMBOL = __webpack_require__(4495);\n+var USE_SYMBOL_AS_UID = __webpack_require__(7040);\n+\n+var Symbol = globalThis.Symbol;\n+var WellKnownSymbolsStore = shared('wks');\n+var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n+\n+module.exports = function (name) {\n+  if (!hasOwn(WellKnownSymbolsStore, name)) {\n+    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n+      ? Symbol[name]\n+      : createWellKnownSymbol('Symbol.' + name);\n+  } return WellKnownSymbolsStore[name];\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8237:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var iterate = __webpack_require__(2652);\n+var aCallable = __webpack_require__(9306);\n+var anObject = __webpack_require__(8551);\n+var getIteratorDirect = __webpack_require__(1767);\n+var iteratorClose = __webpack_require__(9539);\n+var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n+var apply = __webpack_require__(8745);\n+var fails = __webpack_require__(9039);\n+\n+var $TypeError = TypeError;\n+\n+\u002F\u002F https:\u002F\u002Fbugs.webkit.org\u002Fshow_bug.cgi?id=291651\n+var FAILS_ON_INITIAL_UNDEFINED = fails(function () {\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-iterator-prototype-reduce, es\u002Fno-array-prototype-keys, array-callback-return -- required for testing\n+  [].keys().reduce(function () { \u002F* empty *\u002F }, undefined);\n+});\n+\n+var reduceWithoutClosingOnEarlyError = !FAILS_ON_INITIAL_UNDEFINED && iteratorHelperWithoutClosingOnEarlyError('reduce', $TypeError);\n+\n+\u002F\u002F `Iterator.prototype.reduce` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.reduce\n+$({ target: 'Iterator', proto: true, real: true, forced: FAILS_ON_INITIAL_UNDEFINED || reduceWithoutClosingOnEarlyError }, {\n+  reduce: function reduce(reducer \u002F* , initialValue *\u002F) {\n+    anObject(this);\n+    try {\n+      aCallable(reducer);\n+    } catch (error) {\n+      iteratorClose(this, 'throw', error);\n+    }\n+\n+    var noInitial = arguments.length \u003C 2;\n+    var accumulator = noInitial ? undefined : arguments[1];\n+    if (reduceWithoutClosingOnEarlyError) {\n+      return apply(reduceWithoutClosingOnEarlyError, this, noInitial ? [reducer] : [reducer, accumulator]);\n+    }\n+    var record = getIteratorDirect(this);\n+    var counter = 0;\n+    iterate(record, function (value) {\n+      if (noInitial) {\n+        noInitial = false;\n+        accumulator = value;\n+      } else {\n+        accumulator = reducer(accumulator, value, counter);\n+      }\n+      counter++;\n+    }, { IS_RECORD: true });\n+    if (noInitial) throw new $TypeError('Reduce of empty iterator with no initial value');\n+    return accumulator;\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8469:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+var iterateSimple = __webpack_require__(507);\n+var SetHelpers = __webpack_require__(4402);\n+\n+var Set = SetHelpers.Set;\n+var SetPrototype = SetHelpers.proto;\n+var forEach = uncurryThis(SetPrototype.forEach);\n+var keys = uncurryThis(SetPrototype.keys);\n+var next = keys(new Set()).next;\n+\n+module.exports = function (set, fn, interruptible) {\n+  return interruptible ? iterateSimple({ iterator: keys(set), next: next }, fn) : forEach(set, fn);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8480:\n+\u002F***\u002F ((__unused_webpack_module, exports, __webpack_require__) => {\n+\n+\n+var internalObjectKeys = __webpack_require__(1828);\n+var enumBugKeys = __webpack_require__(8727);\n+\n+var hiddenKeys = enumBugKeys.concat('length', 'prototype');\n+\n+\u002F\u002F `Object.getOwnPropertyNames` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.getownpropertynames\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertynames -- safe\n+exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n+  return internalObjectKeys(O, hiddenKeys);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8527:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aSet = __webpack_require__(7080);\n+var has = (__webpack_require__(4402).has);\n+var size = __webpack_require__(5170);\n+var getSetRecord = __webpack_require__(3789);\n+var iterateSimple = __webpack_require__(507);\n+var iteratorClose = __webpack_require__(9539);\n+\n+\u002F\u002F `Set.prototype.isSupersetOf` method\n+\u002F\u002F https:\u002F\u002Ftc39.github.io\u002Fproposal-set-methods\u002F#Set.prototype.isSupersetOf\n+module.exports = function isSupersetOf(other) {\n+  var O = aSet(this);\n+  var otherRec = getSetRecord(other);\n+  if (size(O) \u003C otherRec.size) return false;\n+  var iterator = otherRec.getIterator();\n+  return iterateSimple(iterator, function (e) {\n+    if (!has(O, e)) return iteratorClose(iterator, 'normal', false);\n+  }) !== false;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8551:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isObject = __webpack_require__(34);\n+\n+var $String = String;\n+var $TypeError = TypeError;\n+\n+\u002F\u002F `Assert: Type(argument) is Object`\n+module.exports = function (argument) {\n+  if (isObject(argument)) return argument;\n+  throw new $TypeError($String(argument) + ' is not an object');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8574:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+\n+var $Error = Error;\n+var replace = uncurryThis(''.replace);\n+\n+var TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd');\n+\u002F\u002F eslint-disable-next-line redos\u002Fno-vulnerable, sonarjs\u002Fslow-regex -- safe\n+var V8_OR_CHAKRA_STACK_ENTRY = \u002F\\n\\s*at [^:]*:[^\\n]*\u002F;\n+var IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n+\n+module.exports = function (stack, dropEntries) {\n+  if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n+    while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n+  } return stack;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8622:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var isCallable = __webpack_require__(4901);\n+\n+var WeakMap = globalThis.WeakMap;\n+\n+module.exports = isCallable(WeakMap) && \u002Fnative code\u002F.test(String(WeakMap));\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8646:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var call = __webpack_require__(9565);\n+var anObject = __webpack_require__(8551);\n+var getIteratorDirect = __webpack_require__(1767);\n+var getIteratorMethod = __webpack_require__(851);\n+\n+module.exports = function (obj, stringHandling) {\n+  if (!stringHandling || typeof obj !== 'string') anObject(obj);\n+  var method = getIteratorMethod(obj);\n+  return getIteratorDirect(anObject(method !== undefined ? call(method, obj) : obj));\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8686:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var fails = __webpack_require__(9039);\n+\n+\u002F\u002F V8 ~ Chrome 36-\n+\u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=3334\n+module.exports = DESCRIPTORS && fails(function () {\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- required for testing\n+  return Object.defineProperty(function () { \u002F* empty *\u002F }, 'prototype', {\n+    value: 42,\n+    writable: false\n+  }).prototype !== 42;\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8721:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var uncurryThis = __webpack_require__(9504);\n+var defineBuiltInAccessor = __webpack_require__(2106);\n+\n+var URLSearchParamsPrototype = URLSearchParams.prototype;\n+var forEach = uncurryThis(URLSearchParamsPrototype.forEach);\n+\n+\u002F\u002F `URLSearchParams.prototype.size` getter\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Fwhatwg\u002Furl\u002Fpull\u002F734\n+if (DESCRIPTORS && !('size' in URLSearchParamsPrototype)) {\n+  defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\n+    get: function size() {\n+      var count = 0;\n+      forEach(this, function () { count++; });\n+      return count;\n+    },\n+    configurable: true,\n+    enumerable: true\n+  });\n+}\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8727:\n+\u002F***\u002F ((module) => {\n+\n+\n+\u002F\u002F IE8- don't enum bug keys\n+module.exports = [\n+  'constructor',\n+  'hasOwnProperty',\n+  'isPrototypeOf',\n+  'propertyIsEnumerable',\n+  'toLocaleString',\n+  'toString',\n+  'valueOf'\n+];\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8745:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var NATIVE_BIND = __webpack_require__(616);\n+\n+var FunctionPrototype = Function.prototype;\n+var apply = FunctionPrototype.apply;\n+var call = FunctionPrototype.call;\n+\n+\u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind, es\u002Fno-reflect -- safe\n+module.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n+  return call.apply(apply, arguments);\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8750:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aSet = __webpack_require__(7080);\n+var SetHelpers = __webpack_require__(4402);\n+var size = __webpack_require__(5170);\n+var getSetRecord = __webpack_require__(3789);\n+var iterateSet = __webpack_require__(8469);\n+var iterateSimple = __webpack_require__(507);\n+\n+var Set = SetHelpers.Set;\n+var add = SetHelpers.add;\n+var has = SetHelpers.has;\n+\n+\u002F\u002F `Set.prototype.intersection` method\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\n+module.exports = function intersection(other) {\n+  var O = aSet(this);\n+  var otherRec = getSetRecord(other);\n+  var result = new Set();\n+\n+  if (size(O) > otherRec.size) {\n+    iterateSimple(otherRec.getIterator(), function (e) {\n+      if (has(O, e)) add(result, e);\n+    });\n+  } else {\n+    iterateSet(O, function (e) {\n+      if (otherRec.includes(e)) add(result, e);\n+    });\n+  }\n+\n+  return result;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8773:\n+\u002F***\u002F ((__unused_webpack_module, exports) => {\n+\n+\n+var $propertyIsEnumerable = {}.propertyIsEnumerable;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n+\n+\u002F\u002F Nashorn ~ JDK8 bug\n+var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n+\n+\u002F\u002F `Object.prototype.propertyIsEnumerable` method implementation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.prototype.propertyisenumerable\n+exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n+  var descriptor = getOwnPropertyDescriptor(this, V);\n+  return !!descriptor && descriptor.enumerable;\n+} : $propertyIsEnumerable;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8981:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var requireObjectCoercible = __webpack_require__(7750);\n+\n+var $Object = Object;\n+\n+\u002F\u002F `ToObject` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-toobject\n+module.exports = function (argument) {\n+  return $Object(requireObjectCoercible(argument));\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9039:\n+\u002F***\u002F ((module) => {\n+\n+\n+module.exports = function (exec) {\n+  try {\n+    return !!exec();\n+  } catch (error) {\n+    return true;\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9143:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var uncurryThis = __webpack_require__(9504);\n+var anObjectOrUndefined = __webpack_require__(3972);\n+var aString = __webpack_require__(3463);\n+var hasOwn = __webpack_require__(9297);\n+var base64Map = __webpack_require__(2804);\n+var getAlphabetOption = __webpack_require__(944);\n+var notDetached = __webpack_require__(5169);\n+\n+var base64Alphabet = base64Map.c2i;\n+var base64UrlAlphabet = base64Map.c2iUrl;\n+\n+var SyntaxError = globalThis.SyntaxError;\n+var TypeError = globalThis.TypeError;\n+var at = uncurryThis(''.charAt);\n+\n+var skipAsciiWhitespace = function (string, index) {\n+  var length = string.length;\n+  for (;index \u003C length; index++) {\n+    var chr = at(string, index);\n+    if (chr !== ' ' && chr !== '\\t' && chr !== '\\n' && chr !== '\\f' && chr !== '\\r') break;\n+  } return index;\n+};\n+\n+var decodeBase64Chunk = function (chunk, alphabet, throwOnExtraBits) {\n+  var chunkLength = chunk.length;\n+\n+  if (chunkLength \u003C 4) {\n+    chunk += chunkLength === 2 ? 'AA' : 'A';\n+  }\n+\n+  var triplet = (alphabet[at(chunk, 0)] \u003C\u003C 18)\n+    + (alphabet[at(chunk, 1)] \u003C\u003C 12)\n+    + (alphabet[at(chunk, 2)] \u003C\u003C 6)\n+    + alphabet[at(chunk, 3)];\n+\n+  var chunkBytes = [\n+    (triplet >> 16) & 255,\n+    (triplet >> 8) & 255,\n+    triplet & 255\n+  ];\n+\n+  if (chunkLength === 2) {\n+    if (throwOnExtraBits && chunkBytes[1] !== 0) {\n+      throw new SyntaxError('Extra bits');\n+    }\n+    return [chunkBytes[0]];\n+  }\n+\n+  if (chunkLength === 3) {\n+    if (throwOnExtraBits && chunkBytes[2] !== 0) {\n+      throw new SyntaxError('Extra bits');\n+    }\n+    return [chunkBytes[0], chunkBytes[1]];\n+  }\n+\n+  return chunkBytes;\n+};\n+\n+var writeBytes = function (bytes, elements, written) {\n+  var elementsLength = elements.length;\n+  for (var index = 0; index \u003C elementsLength; index++) {\n+    bytes[written + index] = elements[index];\n+  }\n+  return written + elementsLength;\n+};\n+\n+\u002F* eslint-disable max-statements, max-depth -- TODO *\u002F\n+module.exports = function (string, options, into, maxLength) {\n+  aString(string);\n+  anObjectOrUndefined(options);\n+  var alphabet = getAlphabetOption(options) === 'base64' ? base64Alphabet : base64UrlAlphabet;\n+  var lastChunkHandling = options ? options.lastChunkHandling : undefined;\n+\n+  if (lastChunkHandling === undefined) lastChunkHandling = 'loose';\n+\n+  if (lastChunkHandling !== 'loose' && lastChunkHandling !== 'strict' && lastChunkHandling !== 'stop-before-partial') {\n+    throw new TypeError('Incorrect `lastChunkHandling` option');\n+  }\n+\n+  if (into) notDetached(into.buffer);\n+\n+  var bytes = into || [];\n+  var written = 0;\n+  var read = 0;\n+  var chunk = '';\n+  var index = 0;\n+\n+  if (maxLength) while (true) {\n+    index = skipAsciiWhitespace(string, index);\n+    if (index === string.length) {\n+      if (chunk.length > 0) {\n+        if (lastChunkHandling === 'stop-before-partial') {\n+          break;\n+        }\n+        if (lastChunkHandling === 'loose') {\n+          if (chunk.length === 1) {\n+            throw new SyntaxError('Malformed padding: exactly one additional character');\n+          }\n+          written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, false), written);\n+        } else {\n+          throw new SyntaxError('Missing padding');\n+        }\n+      }\n+      read = string.length;\n+      break;\n+    }\n+    var chr = at(string, index);\n+    ++index;\n+    if (chr === '=') {\n+      if (chunk.length \u003C 2) {\n+        throw new SyntaxError('Padding is too early');\n+      }\n+      index = skipAsciiWhitespace(string, index);\n+      if (chunk.length === 2) {\n+        if (index === string.length) {\n+          if (lastChunkHandling === 'stop-before-partial') {\n+            break;\n+          }\n+          throw new SyntaxError('Malformed padding: only one =');\n+        }\n+        if (at(string, index) === '=') {\n+          ++index;\n+          index = skipAsciiWhitespace(string, index);\n+        }\n+      }\n+      if (index \u003C string.length) {\n+        throw new SyntaxError('Unexpected character after padding');\n+      }\n+      written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, lastChunkHandling === 'strict'), written);\n+      read = string.length;\n+      break;\n+    }\n+    if (!hasOwn(alphabet, chr)) {\n+      throw new SyntaxError('Unexpected character');\n+    }\n+    var remainingBytes = maxLength - written;\n+    if (remainingBytes === 1 && chunk.length === 2 || remainingBytes === 2 && chunk.length === 3) {\n+      \u002F\u002F special case: we can fit exactly the number of bytes currently represented by chunk, so we were just checking for `=`\n+      break;\n+    }\n+\n+    chunk += chr;\n+    if (chunk.length === 4) {\n+      written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, false), written);\n+      chunk = '';\n+      read = index;\n+      if (written === maxLength) {\n+        break;\n+      }\n+    }\n+  }\n+\n+  return { bytes: bytes, read: read, written: written };\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9286:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var SetHelpers = __webpack_require__(4402);\n+var iterate = __webpack_require__(8469);\n+\n+var Set = SetHelpers.Set;\n+var add = SetHelpers.add;\n+\n+module.exports = function (set) {\n+  var result = new Set();\n+  iterate(set, function (it) {\n+    add(result, it);\n+  });\n+  return result;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9297:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+var toObject = __webpack_require__(8981);\n+\n+var hasOwnProperty = uncurryThis({}.hasOwnProperty);\n+\n+\u002F\u002F `HasOwnProperty` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-hasownproperty\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-hasown -- safe\n+module.exports = Object.hasOwn || function hasOwn(it, key) {\n+  return hasOwnProperty(toObject(it), key);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9306:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isCallable = __webpack_require__(4901);\n+var tryToString = __webpack_require__(6823);\n+\n+var $TypeError = TypeError;\n+\n+\u002F\u002F `Assert: IsCallable(argument) is true`\n+module.exports = function (argument) {\n+  if (isCallable(argument)) return argument;\n+  throw new $TypeError(tryToString(argument) + ' is not a function');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9429:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var IS_NODE = __webpack_require__(6193);\n+\n+module.exports = function (name) {\n+  if (IS_NODE) {\n+    try {\n+      return globalThis.process.getBuiltinModule(name);\n+    } catch (error) { \u002F* empty *\u002F }\n+    try {\n+      \u002F\u002F eslint-disable-next-line no-new-func -- safe\n+      return Function('return require(\"' + name + '\")')();\n+    } catch (error) { \u002F* empty *\u002F }\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9432:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var globalThis = __webpack_require__(4576);\n+var arrayFromConstructorAndList = __webpack_require__(5370);\n+var $fromBase64 = __webpack_require__(9143);\n+\n+var Uint8Array = globalThis.Uint8Array;\n+\n+\u002F\u002F `Uint8Array.fromBase64` method\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-arraybuffer-base64\n+if (Uint8Array) $({ target: 'Uint8Array', stat: true }, {\n+  fromBase64: function fromBase64(string \u002F* , options *\u002F) {\n+    var result = $fromBase64(string, arguments.length > 1 ? arguments[1] : undefined, null, 0x1FFFFFFFFFFFFF);\n+    return arrayFromConstructorAndList(Uint8Array, result.bytes);\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9433:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\n+var defineProperty = Object.defineProperty;\n+\n+module.exports = function (key, value) {\n+  try {\n+    defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\n+  } catch (error) {\n+    globalThis[key] = value;\n+  } return value;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9462:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var call = __webpack_require__(9565);\n+var create = __webpack_require__(2360);\n+var createNonEnumerableProperty = __webpack_require__(6699);\n+var defineBuiltIns = __webpack_require__(6279);\n+var wellKnownSymbol = __webpack_require__(8227);\n+var InternalStateModule = __webpack_require__(1181);\n+var getMethod = __webpack_require__(5966);\n+var IteratorPrototype = (__webpack_require__(7657).IteratorPrototype);\n+var createIterResultObject = __webpack_require__(2529);\n+var iteratorClose = __webpack_require__(9539);\n+\n+var TO_STRING_TAG = wellKnownSymbol('toStringTag');\n+var ITERATOR_HELPER = 'IteratorHelper';\n+var WRAP_FOR_VALID_ITERATOR = 'WrapForValidIterator';\n+var setInternalState = InternalStateModule.set;\n+\n+var createIteratorProxyPrototype = function (IS_ITERATOR) {\n+  var getInternalState = InternalStateModule.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER);\n+\n+  return defineBuiltIns(create(IteratorPrototype), {\n+    next: function next() {\n+      var state = getInternalState(this);\n+      \u002F\u002F for simplification:\n+      \u002F\u002F   for `%WrapForValidIteratorPrototype%.next` or with `state.returnHandlerResult` our `nextHandler` returns `IterResultObject`\n+      \u002F\u002F   for `%IteratorHelperPrototype%.next` - just a value\n+      if (IS_ITERATOR) return state.nextHandler();\n+      if (state.done) return createIterResultObject(undefined, true);\n+      try {\n+        var result = state.nextHandler();\n+        return state.returnHandlerResult ? result : createIterResultObject(result, state.done);\n+      } catch (error) {\n+        state.done = true;\n+        throw error;\n+      }\n+    },\n+    'return': function () {\n+      var state = getInternalState(this);\n+      var iterator = state.iterator;\n+      state.done = true;\n+      if (IS_ITERATOR) {\n+        var returnMethod = getMethod(iterator, 'return');\n+        return returnMethod ? call(returnMethod, iterator) : createIterResultObject(undefined, true);\n+      }\n+      if (state.inner) try {\n+        iteratorClose(state.inner.iterator, 'normal');\n+      } catch (error) {\n+        return iteratorClose(iterator, 'throw', error);\n+      }\n+      if (iterator) iteratorClose(iterator, 'normal');\n+      return createIterResultObject(undefined, true);\n+    }\n+  });\n+};\n+\n+var WrapForValidIteratorPrototype = createIteratorProxyPrototype(true);\n+var IteratorHelperPrototype = createIteratorProxyPrototype(false);\n+\n+createNonEnumerableProperty(IteratorHelperPrototype, TO_STRING_TAG, 'Iterator Helper');\n+\n+module.exports = function (nextHandler, IS_ITERATOR, RETURN_HANDLER_RESULT) {\n+  var IteratorProxy = function Iterator(record, state) {\n+    if (state) {\n+      state.iterator = record.iterator;\n+      state.next = record.next;\n+    } else state = record;\n+    state.type = IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER;\n+    state.returnHandlerResult = !!RETURN_HANDLER_RESULT;\n+    state.nextHandler = nextHandler;\n+    state.counter = 0;\n+    state.done = false;\n+    setInternalState(this, state);\n+  };\n+\n+  IteratorProxy.prototype = IS_ITERATOR ? WrapForValidIteratorPrototype : IteratorHelperPrototype;\n+\n+  return IteratorProxy;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9479:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var DESCRIPTORS = __webpack_require__(3724);\n+var defineBuiltInAccessor = __webpack_require__(2106);\n+var regExpFlags = __webpack_require__(7979);\n+var fails = __webpack_require__(9039);\n+\n+\u002F\u002F babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> \u002F.\u002Fd and it causes SyntaxError\n+var RegExp = globalThis.RegExp;\n+var RegExpPrototype = RegExp.prototype;\n+\n+var FORCED = DESCRIPTORS && fails(function () {\n+  var INDICES_SUPPORT = true;\n+  try {\n+    RegExp('.', 'd');\n+  } catch (error) {\n+    INDICES_SUPPORT = false;\n+  }\n+\n+  var O = {};\n+  \u002F\u002F modern V8 bug\n+  var calls = '';\n+  var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';\n+\n+  var addGetter = function (key, chr) {\n+    \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\n+    Object.defineProperty(O, key, { get: function () {\n+      calls += chr;\n+      return true;\n+    } });\n+  };\n+\n+  var pairs = {\n+    dotAll: 's',\n+    global: 'g',\n+    ignoreCase: 'i',\n+    multiline: 'm',\n+    sticky: 'y'\n+  };\n+\n+  if (INDICES_SUPPORT) pairs.hasIndices = 'd';\n+\n+  for (var key in pairs) addGetter(key, pairs[key]);\n+\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+  var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);\n+\n+  return result !== expected || calls !== expected;\n+});\n+\n+\u002F\u002F `RegExp.prototype.flags` getter\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-get-regexp.prototype.flags\n+if (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\n+  configurable: true,\n+  get: regExpFlags\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9504:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var NATIVE_BIND = __webpack_require__(616);\n+\n+var FunctionPrototype = Function.prototype;\n+var call = FunctionPrototype.call;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind -- safe\n+var uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n+\n+module.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n+  return function () {\n+    return call.apply(fn, arguments);\n+  };\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9519:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var userAgent = __webpack_require__(2839);\n+\n+var process = globalThis.process;\n+var Deno = globalThis.Deno;\n+var versions = process && process.versions || Deno && Deno.version;\n+var v8 = versions && versions.v8;\n+var match, version;\n+\n+if (v8) {\n+  match = v8.split('.');\n+  \u002F\u002F in old Chrome, versions of V8 isn't V8 = Chrome \u002F 10\n+  \u002F\u002F but their correct versions are not interesting for us\n+  version = match[0] > 0 && match[0] \u003C 4 ? 1 : +(match[0] + match[1]);\n+}\n+\n+\u002F\u002F BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n+\u002F\u002F so check `userAgent` even if `.v8` exists, but 0\n+if (!version && userAgent) {\n+  match = userAgent.match(\u002FEdge\\\u002F(\\d+)\u002F);\n+  if (!match || match[1] >= 74) {\n+    match = userAgent.match(\u002FChrome\\\u002F(\\d+)\u002F);\n+    if (match) version = +match[1];\n+  }\n+}\n+\n+module.exports = version;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9539:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var call = __webpack_require__(9565);\n+var anObject = __webpack_require__(8551);\n+var getMethod = __webpack_require__(5966);\n+\n+module.exports = function (iterator, kind, value) {\n+  var innerResult, innerError;\n+  anObject(iterator);\n+  try {\n+    innerResult = getMethod(iterator, 'return');\n+    if (!innerResult) {\n+      if (kind === 'throw') throw value;\n+      return value;\n+    }\n+    innerResult = call(innerResult, iterator);\n+  } catch (error) {\n+    innerError = true;\n+    innerResult = error;\n+  }\n+  if (kind === 'throw') throw value;\n+  if (innerError) throw innerResult;\n+  anObject(innerResult);\n+  return value;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9565:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var NATIVE_BIND = __webpack_require__(616);\n+\n+var call = Function.prototype.call;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind -- safe\n+module.exports = NATIVE_BIND ? call.bind(call) : function () {\n+  return call.apply(call, arguments);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9617:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var toIndexedObject = __webpack_require__(5397);\n+var toAbsoluteIndex = __webpack_require__(5610);\n+var lengthOfArrayLike = __webpack_require__(6198);\n+\n+\u002F\u002F `Array.prototype.{ indexOf, includes }` methods implementation\n+var createMethod = function (IS_INCLUDES) {\n+  return function ($this, el, fromIndex) {\n+    var O = toIndexedObject($this);\n+    var length = lengthOfArrayLike(O);\n+    if (length === 0) return !IS_INCLUDES && -1;\n+    var index = toAbsoluteIndex(fromIndex, length);\n+    var value;\n+    \u002F\u002F Array#includes uses SameValueZero equality algorithm\n+    \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\n+    if (IS_INCLUDES && el !== el) while (length > index) {\n+      value = O[index++];\n+      \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\n+      if (value !== value) return true;\n+    \u002F\u002F Array#indexOf ignores holes, Array#includes - not\n+    } else for (;length > index; index++) {\n+      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n+    } return !IS_INCLUDES && -1;\n+  };\n+};\n+\n+module.exports = {\n+  \u002F\u002F `Array.prototype.includes` method\n+  \u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-array.prototype.includes\n+  includes: createMethod(true),\n+  \u002F\u002F `Array.prototype.indexOf` method\n+  \u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-array.prototype.indexof\n+  indexOf: createMethod(false)\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9631:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var globalThis = __webpack_require__(4576);\n+var uncurryThis = __webpack_require__(9504);\n+var anObjectOrUndefined = __webpack_require__(3972);\n+var anUint8Array = __webpack_require__(4154);\n+var notDetached = __webpack_require__(5169);\n+var base64Map = __webpack_require__(2804);\n+var getAlphabetOption = __webpack_require__(944);\n+\n+var base64Alphabet = base64Map.i2c;\n+var base64UrlAlphabet = base64Map.i2cUrl;\n+\n+var charAt = uncurryThis(''.charAt);\n+\n+\u002F\u002F `Uint8Array.prototype.toBase64` method\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-arraybuffer-base64\n+if (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {\n+  toBase64: function toBase64(\u002F* options *\u002F) {\n+    var array = anUint8Array(this);\n+    var options = arguments.length ? anObjectOrUndefined(arguments[0]) : undefined;\n+    var alphabet = getAlphabetOption(options) === 'base64' ? base64Alphabet : base64UrlAlphabet;\n+    var omitPadding = !!options && !!options.omitPadding;\n+    notDetached(this.buffer);\n+\n+    var result = '';\n+    var i = 0;\n+    var length = array.length;\n+    var triplet;\n+\n+    var at = function (shift) {\n+      return charAt(alphabet, (triplet >> (6 * shift)) & 63);\n+    };\n+\n+    for (; i + 2 \u003C length; i += 3) {\n+      triplet = (array[i] \u003C\u003C 16) + (array[i + 1] \u003C\u003C 8) + array[i + 2];\n+      result += at(3) + at(2) + at(1) + at(0);\n+    }\n+    if (i + 2 === length) {\n+      triplet = (array[i] \u003C\u003C 16) + (array[i + 1] \u003C\u003C 8);\n+      result += at(3) + at(2) + at(1) + (omitPadding ? '' : '=');\n+    } else if (i + 1 === length) {\n+      triplet = array[i] \u003C\u003C 16;\n+      result += at(3) + at(2) + (omitPadding ? '' : '==');\n+    }\n+\n+    return result;\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9797:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var globalThis = __webpack_require__(4576);\n+var aString = __webpack_require__(3463);\n+var anUint8Array = __webpack_require__(4154);\n+var notDetached = __webpack_require__(5169);\n+var $fromHex = __webpack_require__(2303);\n+\n+\u002F\u002F `Uint8Array.prototype.setFromHex` method\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-arraybuffer-base64\n+if (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {\n+  setFromHex: function setFromHex(string) {\n+    anUint8Array(this);\n+    aString(string);\n+    notDetached(this.buffer);\n+    var read = $fromHex(string, this).read;\n+    return { read: read, written: read \u002F 2 };\n+  }\n+});\n+\n+\n+\u002F***\u002F })\n+\n+\u002F******\u002F });\n \u002F************************************************************************\u002F\n-\u002F******\u002F \u002F* webpack\u002Fruntime\u002Fdefine property getters *\u002F\n-\u002F******\u002F (() => {\n-\u002F******\u002F \t\u002F\u002F define getter functions for harmony exports\n-\u002F******\u002F \t__webpack_require__.d = (exports, definition) => {\n-\u002F******\u002F \t\tfor(var key in definition) {\n-\u002F******\u002F \t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n-\u002F******\u002F \t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n-\u002F******\u002F \t\t\t}\n-\u002F******\u002F \t\t}\n+\u002F******\u002F \u002F\u002F The module cache\n+\u002F******\u002F var __webpack_module_cache__ = {};\n+\u002F******\u002F \n+\u002F******\u002F \u002F\u002F The require function\n+\u002F******\u002F function __webpack_require__(moduleId) {\n+\u002F******\u002F \t\u002F\u002F Check if module is in cache\n+\u002F******\u002F \tvar cachedModule = __webpack_module_cache__[moduleId];\n+\u002F******\u002F \tif (cachedModule !== undefined) {\n+\u002F******\u002F \t\treturn cachedModule.exports;\n+\u002F******\u002F \t}\n+\u002F******\u002F \t\u002F\u002F Create a new module (and put it into the cache)\n+\u002F******\u002F \tvar module = __webpack_module_cache__[moduleId] = {\n+\u002F******\u002F \t\t\u002F\u002F no module.id needed\n+\u002F******\u002F \t\t\u002F\u002F no module.loaded needed\n+\u002F******\u002F \t\texports: {}\n \u002F******\u002F \t};\n-\u002F******\u002F })();\n \u002F******\u002F \n-\u002F******\u002F \u002F* webpack\u002Fruntime\u002FhasOwnProperty shorthand *\u002F\n-\u002F******\u002F (() => {\n-\u002F******\u002F \t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n-\u002F******\u002F })();\n+\u002F******\u002F \t\u002F\u002F Execute the module function\n+\u002F******\u002F \t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n+\u002F******\u002F \n+\u002F******\u002F \t\u002F\u002F Return the exports of the module\n+\u002F******\u002F \treturn module.exports;\n+\u002F******\u002F }\n \u002F******\u002F \n \u002F************************************************************************\u002F\n-var __webpack_exports__ = globalThis.pdfjsWorker = {};\n+var __webpack_exports__ = {};\n+\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array.push.js\n+var es_array_push = __webpack_require__(4114);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array-buffer.detached.js\n+var es_array_buffer_detached = __webpack_require__(6573);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array-buffer.transfer.js\n+var es_array_buffer_transfer = __webpack_require__(8100);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array-buffer.transfer-to-fixed-length.js\n+var es_array_buffer_transfer_to_fixed_length = __webpack_require__(7936);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.constructor.js\n+var es_iterator_constructor = __webpack_require__(8111);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.map.js\n+var es_iterator_map = __webpack_require__(1701);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.some.js\n+var es_iterator_some = __webpack_require__(3579);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.promise.with-resolvers.js\n+var es_promise_with_resolvers = __webpack_require__(4628);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.difference.v2.js\n+var es_set_difference_v2 = __webpack_require__(7642);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.intersection.v2.js\n+var es_set_intersection_v2 = __webpack_require__(8004);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.is-disjoint-from.v2.js\n+var es_set_is_disjoint_from_v2 = __webpack_require__(3853);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.is-subset-of.v2.js\n+var es_set_is_subset_of_v2 = __webpack_require__(5876);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.is-superset-of.v2.js\n+var es_set_is_superset_of_v2 = __webpack_require__(2475);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.symmetric-difference.v2.js\n+var es_set_symmetric_difference_v2 = __webpack_require__(5024);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.union.v2.js\n+var es_set_union_v2 = __webpack_require__(1698);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.uint8-array.set-from-base64.js\n+var esnext_uint8_array_set_from_base64 = __webpack_require__(1549);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.uint8-array.set-from-hex.js\n+var esnext_uint8_array_set_from_hex = __webpack_require__(9797);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.uint8-array.to-base64.js\n+var esnext_uint8_array_to_base64 = __webpack_require__(9631);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.uint8-array.to-hex.js\n+var esnext_uint8_array_to_hex = __webpack_require__(5623);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.self.js\n+var web_self = __webpack_require__(3611);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.reduce.js\n+var es_iterator_reduce = __webpack_require__(8237);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.promise.try.js\n+var es_promise_try = __webpack_require__(1689);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.uint8-array.from-base64.js\n+var esnext_uint8_array_from_base64 = __webpack_require__(9432);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.dom-exception.stack.js\n+var web_dom_exception_stack = __webpack_require__(4979);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.url.parse.js\n+var web_url_parse = __webpack_require__(5781);\n+;\u002F\u002F .\u002Fsrc\u002Fshared\u002Futil.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n-\u002F\u002F EXPORTS\n-__webpack_require__.d(__webpack_exports__, {\n-  WorkerMessageHandler: () => (\u002F* reexport *\u002F WorkerMessageHandler)\n-});\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fshared\u002Futil.js\n const isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\n-const IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\n const FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n-const MAX_IMAGE_SIZE_TO_CACHE = 10e6;\n const LINE_FACTOR = 1.35;\n const LINE_DESCENT_FACTOR = 0.35;\n const BASELINE_FACTOR = LINE_DESCENT_FACTOR \u002F LINE_FACTOR;\n@@ -65,6 +5054,7 @@\n   ANNOTATIONS_FORMS: 0x10,\n   ANNOTATIONS_STORAGE: 0x20,\n   ANNOTATIONS_DISABLE: 0x40,\n+  IS_EDITING: 0x80,\n   OPLIST: 0x100\n };\n const AnnotationMode = {\n@@ -80,7 +5070,8 @@\n   FREETEXT: 3,\n   HIGHLIGHT: 9,\n   STAMP: 13,\n-  INK: 15\n+  INK: 15,\n+  SIGNATURE: 101\n };\n const AnnotationEditorParamsType = {\n   RESIZE: 1,\n@@ -95,7 +5086,8 @@\n   HIGHLIGHT_DEFAULT_COLOR: 32,\n   HIGHLIGHT_THICKNESS: 33,\n   HIGHLIGHT_FREE: 34,\n-  HIGHLIGHT_SHOW_ALL: 35\n+  HIGHLIGHT_SHOW_ALL: 35,\n+  DRAW_STEP: 41\n };\n const PermissionFlag = {\n   PRINT: 0x04,\n@@ -228,10 +5220,6 @@\n   WARNINGS: 1,\n   INFOS: 5\n };\n-const CMapCompressionType = {\n-  NONE: 0,\n-  BINARY: 1\n-};\n const OPS = {\n   dependency: 1,\n   setLineWidth: 2,\n@@ -320,7 +5308,16 @@\n   paintImageXObjectRepeat: 88,\n   paintImageMaskXObjectRepeat: 89,\n   paintSolidColorImageMask: 90,\n-  constructPath: 91\n+  constructPath: 91,\n+  setStrokeTransparent: 92,\n+  setFillTransparent: 93,\n+  rawFillPath: 94\n+};\n+const DrawOPS = {\n+  moveTo: 0,\n+  lineTo: 1,\n+  curveTo: 2,\n+  closePath: 3\n };\n const PasswordResponses = {\n   NEED_PASSWORD: 1,\n@@ -369,26 +5366,32 @@\n   if (!url) {\n     return null;\n   }\n-  try {\n-    if (options && typeof url === \"string\") {\n-      if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n-        const dots = url.match(\u002F\\.\u002Fg);\n-        if (dots?.length >= 2) {\n-          url = `http:\u002F\u002F${url}`;\n-        }\n-      }\n-      if (options.tryConvertEncoding) {\n-        try {\n-          url = stringToUTF8String(url);\n-        } catch {}\n+  if (options && typeof url === \"string\") {\n+    if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n+      const dots = url.match(\u002F\\.\u002Fg);\n+      if (dots?.length >= 2) {\n+        url = `http:\u002F\u002F${url}`;\n       }\n     }\n-    const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n-    if (_isValidProtocol(absoluteUrl)) {\n-      return absoluteUrl;\n+    if (options.tryConvertEncoding) {\n+      try {\n+        url = stringToUTF8String(url);\n+      } catch {}\n     }\n-  } catch {}\n-  return null;\n+  }\n+  const absoluteUrl = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n+  return _isValidProtocol(absoluteUrl) ? absoluteUrl : null;\n+}\n+function updateUrlHash(url, hash, allowRel = false) {\n+  const res = URL.parse(url);\n+  if (res) {\n+    res.hash = hash;\n+    return res.href;\n+  }\n+  if (allowRel && createValidAbsoluteUrl(url, \"http:\u002F\u002Fexample.com\")) {\n+    return url.split(\"#\", 1)[0] + `${hash ? `#${hash}` : \"\"}`;\n+  }\n+  return \"\";\n }\n function shadow(obj, prop, value, nonSerializable = false) {\n   Object.defineProperty(obj, prop, {\n@@ -401,9 +5404,6 @@\n }\n const BaseException = function BaseExceptionClosure() {\n   function BaseException(message, name) {\n-    if (this.constructor === BaseException) {\n-      unreachable(\"Cannot initialize BaseException.\");\n-    }\n     this.message = message;\n     this.name = name;\n   }\n@@ -428,15 +5428,11 @@\n     super(msg, \"InvalidPDFException\");\n   }\n }\n-class MissingPDFException extends BaseException {\n-  constructor(msg) {\n-    super(msg, \"MissingPDFException\");\n-  }\n-}\n-class UnexpectedResponseException extends BaseException {\n-  constructor(msg, status) {\n-    super(msg, \"UnexpectedResponseException\");\n+class ResponseException extends BaseException {\n+  constructor(msg, status, missing) {\n+    super(msg, \"ResponseException\");\n     this.status = status;\n+    this.missing = missing;\n   }\n }\n class FormatError extends BaseException {\n@@ -483,13 +5479,6 @@\n function objectSize(obj) {\n   return Object.keys(obj).length;\n }\n-function objectFromMap(map) {\n-  const obj = Object.create(null);\n-  for (const [key, value] of map) {\n-    obj[key] = value;\n-  }\n-  return obj;\n-}\n function isLittleEndian() {\n   const buffer8 = new Uint8Array(4);\n   buffer8[0] = 1;\n@@ -514,14 +5503,20 @@\n   static get isOffscreenCanvasSupported() {\n     return shadow(this, \"isOffscreenCanvasSupported\", typeof OffscreenCanvas !== \"undefined\");\n   }\n+  static get isImageDecoderSupported() {\n+    return shadow(this, \"isImageDecoderSupported\", typeof ImageDecoder !== \"undefined\");\n+  }\n   static get platform() {\n-    if (typeof navigator !== \"undefined\" && typeof navigator?.platform === \"string\") {\n-      return shadow(this, \"platform\", {\n-        isMac: navigator.platform.includes(\"Mac\")\n-      });\n-    }\n+    const {\n+      platform,\n+      userAgent\n+    } = navigator;\n     return shadow(this, \"platform\", {\n-      isMac: false\n+      isAndroid: userAgent.includes(\"Android\"),\n+      isLinux: platform.includes(\"Linux\"),\n+      isMac: platform.includes(\"Mac\"),\n+      isWindows: platform.includes(\"Win\"),\n+      isFirefox: userAgent.includes(\"Firefox\")\n     });\n   }\n   static get isCSSRoundSupported() {\n@@ -580,39 +5575,87 @@\n   static transform(m1, m2) {\n     return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n   }\n-  static applyTransform(p, m) {\n-    const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n-    const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n-    return [xt, yt];\n+  static applyTransform(p, m, pos = 0) {\n+    const p0 = p[pos];\n+    const p1 = p[pos + 1];\n+    p[pos] = p0 * m[0] + p1 * m[2] + m[4];\n+    p[pos + 1] = p0 * m[1] + p1 * m[3] + m[5];\n+  }\n+  static applyTransformToBezier(p, transform, pos = 0) {\n+    const m0 = transform[0];\n+    const m1 = transform[1];\n+    const m2 = transform[2];\n+    const m3 = transform[3];\n+    const m4 = transform[4];\n+    const m5 = transform[5];\n+    for (let i = 0; i \u003C 6; i += 2) {\n+      const pI = p[pos + i];\n+      const pI1 = p[pos + i + 1];\n+      p[pos + i] = pI * m0 + pI1 * m2 + m4;\n+      p[pos + i + 1] = pI * m1 + pI1 * m3 + m5;\n+    }\n   }\n   static applyInverseTransform(p, m) {\n+    const p0 = p[0];\n+    const p1 = p[1];\n     const d = m[0] * m[3] - m[1] * m[2];\n-    const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) \u002F d;\n-    const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) \u002F d;\n-    return [xt, yt];\n-  }\n-  static getAxialAlignedBoundingBox(r, m) {\n-    const p1 = this.applyTransform(r, m);\n-    const p2 = this.applyTransform(r.slice(2, 4), m);\n-    const p3 = this.applyTransform([r[0], r[3]], m);\n-    const p4 = this.applyTransform([r[2], r[1]], m);\n-    return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];\n+    p[0] = (p0 * m[3] - p1 * m[2] + m[2] * m[5] - m[4] * m[3]) \u002F d;\n+    p[1] = (-p0 * m[1] + p1 * m[0] + m[4] * m[1] - m[5] * m[0]) \u002F d;\n+  }\n+  static axialAlignedBoundingBox(rect, transform, output) {\n+    const m0 = transform[0];\n+    const m1 = transform[1];\n+    const m2 = transform[2];\n+    const m3 = transform[3];\n+    const m4 = transform[4];\n+    const m5 = transform[5];\n+    const r0 = rect[0];\n+    const r1 = rect[1];\n+    const r2 = rect[2];\n+    const r3 = rect[3];\n+    let a0 = m0 * r0 + m4;\n+    let a2 = a0;\n+    let a1 = m0 * r2 + m4;\n+    let a3 = a1;\n+    let b0 = m3 * r1 + m5;\n+    let b2 = b0;\n+    let b1 = m3 * r3 + m5;\n+    let b3 = b1;\n+    if (m1 !== 0 || m2 !== 0) {\n+      const m1r0 = m1 * r0;\n+      const m1r2 = m1 * r2;\n+      const m2r1 = m2 * r1;\n+      const m2r3 = m2 * r3;\n+      a0 += m2r1;\n+      a3 += m2r1;\n+      a1 += m2r3;\n+      a2 += m2r3;\n+      b0 += m1r0;\n+      b3 += m1r0;\n+      b1 += m1r2;\n+      b2 += m1r2;\n+    }\n+    output[0] = Math.min(output[0], a0, a1, a2, a3);\n+    output[1] = Math.min(output[1], b0, b1, b2, b3);\n+    output[2] = Math.max(output[2], a0, a1, a2, a3);\n+    output[3] = Math.max(output[3], b0, b1, b2, b3);\n   }\n   static inverseTransform(m) {\n     const d = m[0] * m[3] - m[1] * m[2];\n     return [m[3] \u002F d, -m[1] \u002F d, -m[2] \u002F d, m[0] \u002F d, (m[2] * m[5] - m[4] * m[3]) \u002F d, (m[4] * m[1] - m[5] * m[0]) \u002F d];\n   }\n-  static singularValueDecompose2dScale(m) {\n-    const transpose = [m[0], m[2], m[1], m[3]];\n-    const a = m[0] * transpose[0] + m[1] * transpose[2];\n-    const b = m[0] * transpose[1] + m[1] * transpose[3];\n-    const c = m[2] * transpose[0] + m[3] * transpose[2];\n-    const d = m[2] * transpose[1] + m[3] * transpose[3];\n-    const first = (a + d) \u002F 2;\n-    const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) \u002F 2;\n-    const sx = first + second || 1;\n-    const sy = first - second || 1;\n-    return [Math.sqrt(sx), Math.sqrt(sy)];\n+  static singularValueDecompose2dScale(matrix, output) {\n+    const m0 = matrix[0];\n+    const m1 = matrix[1];\n+    const m2 = matrix[2];\n+    const m3 = matrix[3];\n+    const a = m0 ** 2 + m1 ** 2;\n+    const b = m0 * m2 + m1 * m3;\n+    const c = m2 ** 2 + m3 ** 2;\n+    const first = (a + c) \u002F 2;\n+    const second = Math.sqrt(first ** 2 - (a * c - b ** 2));\n+    output[0] = Math.sqrt(first + second || 1);\n+    output[1] = Math.sqrt(first - second || 1);\n   }\n   static normalizeRect(rect) {\n     const r = rect.slice(0);\n@@ -639,6 +5682,18 @@\n     }\n     return [xLow, yLow, xHigh, yHigh];\n   }\n+  static pointBoundingBox(x, y, minMax) {\n+    minMax[0] = Math.min(minMax[0], x);\n+    minMax[1] = Math.min(minMax[1], y);\n+    minMax[2] = Math.max(minMax[2], x);\n+    minMax[3] = Math.max(minMax[3], y);\n+  }\n+  static rectBoundingBox(x0, y0, x1, y1, minMax) {\n+    minMax[0] = Math.min(minMax[0], x0, x1);\n+    minMax[1] = Math.min(minMax[1], y0, y1);\n+    minMax[2] = Math.max(minMax[2], x0, x1);\n+    minMax[3] = Math.max(minMax[3], y0, y1);\n+  }\n   static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\n     if (t \u003C= 0 || t >= 1) {\n       return;\n@@ -670,21 +5725,16 @@\n     this.#getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, (-b - sqrtDelta) \u002F a2, minMax);\n   }\n   static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n-    if (minMax) {\n-      minMax[0] = Math.min(minMax[0], x0, x3);\n-      minMax[1] = Math.min(minMax[1], y0, y3);\n-      minMax[2] = Math.max(minMax[2], x0, x3);\n-      minMax[3] = Math.max(minMax[3], y0, y3);\n-    } else {\n-      minMax = [Math.min(x0, x3), Math.min(y0, y3), Math.max(x0, x3), Math.max(y0, y3)];\n-    }\n+    minMax[0] = Math.min(minMax[0], x0, x3);\n+    minMax[1] = Math.min(minMax[1], y0, y3);\n+    minMax[2] = Math.max(minMax[2], x0, x3);\n+    minMax[3] = Math.max(minMax[3], y0, y3);\n     this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-x0 + 3 * (x1 - x2) + x3), 6 * (x0 - 2 * x1 + x2), 3 * (x1 - x0), minMax);\n     this.#getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, 3 * (-y0 + 3 * (y1 - y2) + y3), 6 * (y0 - 2 * y1 + y2), 3 * (y1 - y0), minMax);\n-    return minMax;\n   }\n }\n const PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac];\n-function stringToPDFString(str) {\n+function stringToPDFString(str, keepEscapeSequence = false) {\n   if (str[0] >= \"\\xEF\") {\n     let encoding;\n     if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n@@ -707,7 +5757,7 @@\n         });\n         const buffer = stringToBytes(str);\n         const decoded = decoder.decode(buffer);\n-        if (!decoded.includes(\"\\x1b\")) {\n+        if (keepEscapeSequence || !decoded.includes(\"\\x1b\")) {\n           return decoded;\n         }\n         return decoded.replaceAll(\u002F\\x1b[^\\x1b]*(?:\\x1b|$)\u002Fg, \"\");\n@@ -719,7 +5769,7 @@\n   const strBuf = [];\n   for (let i = 0, ii = str.length; i \u003C ii; i++) {\n     const charCode = str.charCodeAt(i);\n-    if (charCode === 0x1b) {\n+    if (!keepEscapeSequence && charCode === 0x1b) {\n       while (++i \u003C ii && str.charCodeAt(i) !== 0x1b) {}\n       continue;\n     }\n@@ -759,33 +5809,121 @@\n   return str.replaceAll(NormalizeRegex, (_, p1, p2) => p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2));\n }\n function getUuid() {\n-  if (typeof crypto !== \"undefined\" && typeof crypto?.randomUUID === \"function\") {\n+  if (typeof crypto.randomUUID === \"function\") {\n     return crypto.randomUUID();\n   }\n   const buf = new Uint8Array(32);\n-  if (typeof crypto !== \"undefined\" && typeof crypto?.getRandomValues === \"function\") {\n-    crypto.getRandomValues(buf);\n-  } else {\n-    for (let i = 0; i \u003C 32; i++) {\n-      buf[i] = Math.floor(Math.random() * 255);\n-    }\n-  }\n+  crypto.getRandomValues(buf);\n   return bytesToString(buf);\n }\n const AnnotationPrefix = \"pdfjs_internal_id_\";\n-const FontRenderOps = {\n-  BEZIER_CURVE_TO: 0,\n-  MOVE_TO: 1,\n-  LINE_TO: 2,\n-  QUADRATIC_CURVE_TO: 3,\n-  RESTORE: 4,\n-  SAVE: 5,\n-  SCALE: 6,\n-  TRANSFORM: 7,\n-  TRANSLATE: 8\n-};\n+function _isValidExplicitDest(validRef, validName, dest) {\n+  if (!Array.isArray(dest) || dest.length \u003C 2) {\n+    return false;\n+  }\n+  const [page, zoom, ...args] = dest;\n+  if (!validRef(page) && !Number.isInteger(page)) {\n+    return false;\n+  }\n+  if (!validName(zoom)) {\n+    return false;\n+  }\n+  const argsLen = args.length;\n+  let allowNull = true;\n+  switch (zoom.name) {\n+    case \"XYZ\":\n+      if (argsLen \u003C 2 || argsLen > 3) {\n+        return false;\n+      }\n+      break;\n+    case \"Fit\":\n+    case \"FitB\":\n+      return argsLen === 0;\n+    case \"FitH\":\n+    case \"FitBH\":\n+    case \"FitV\":\n+    case \"FitBV\":\n+      if (argsLen > 1) {\n+        return false;\n+      }\n+      break;\n+    case \"FitR\":\n+      if (argsLen !== 4) {\n+        return false;\n+      }\n+      allowNull = false;\n+      break;\n+    default:\n+      return false;\n+  }\n+  for (const arg of args) {\n+    if (typeof arg === \"number\" || allowNull && arg === null) {\n+      continue;\n+    }\n+    return false;\n+  }\n+  return true;\n+}\n+function MathClamp(v, min, max) {\n+  return Math.min(Math.max(v, min), max);\n+}\n+function toHexUtil(arr) {\n+  if (Uint8Array.prototype.toHex) {\n+    return arr.toHex();\n+  }\n+  return Array.from(arr, num => hexNumbers[num]).join(\"\");\n+}\n+function toBase64Util(arr) {\n+  if (Uint8Array.prototype.toBase64) {\n+    return arr.toBase64();\n+  }\n+  return btoa(bytesToString(arr));\n+}\n+function fromBase64Util(str) {\n+  if (Uint8Array.fromBase64) {\n+    return Uint8Array.fromBase64(str);\n+  }\n+  return stringToBytes(atob(str));\n+}\n+if (typeof Math.sumPrecise !== \"function\") {\n+  Math.sumPrecise = function (numbers) {\n+    return numbers.reduce((a, b) => a + b, 0);\n+  };\n+}\n+if (typeof AbortSignal.any !== \"function\") {\n+  AbortSignal.any = function (iterable) {\n+    const ac = new AbortController();\n+    const {\n+      signal\n+    } = ac;\n+    for (const s of iterable) {\n+      if (s.aborted) {\n+        ac.abort(s.reason);\n+        return signal;\n+      }\n+    }\n+    for (const s of iterable) {\n+      s.addEventListener(\"abort\", () => {\n+        ac.abort(s.reason);\n+      }, {\n+        signal\n+      });\n+    }\n+    return signal;\n+  };\n+}\n+\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.every.js\n+var es_iterator_every = __webpack_require__(1148);\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fprimitives.js\n+\n+\n+\n+\n+\n+\n+\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fprimitives.js\n \n const CIRCULAR_REF = Symbol(\"CIRCULAR_REF\");\n const EOF = Symbol(\"EOF\");\n@@ -818,7 +5956,7 @@\n };\n class Dict {\n   constructor(xref = null) {\n-    this._map = Object.create(null);\n+    this._map = new Map();\n     this.xref = xref;\n     this.objId = null;\n     this.suppressEncryption = false;\n@@ -828,14 +5966,14 @@\n     this.xref = newXref;\n   }\n   get size() {\n-    return Object.keys(this._map).length;\n+    return this._map.size;\n   }\n   get(key1, key2, key3) {\n-    let value = this._map[key1];\n+    let value = this._map.get(key1);\n     if (value === undefined && key2 !== undefined) {\n-      value = this._map[key2];\n+      value = this._map.get(key2);\n       if (value === undefined && key3 !== undefined) {\n-        value = this._map[key3];\n+        value = this._map.get(key3);\n       }\n     }\n     if (value instanceof Ref && this.xref) {\n@@ -844,11 +5982,11 @@\n     return value;\n   }\n   async getAsync(key1, key2, key3) {\n-    let value = this._map[key1];\n+    let value = this._map.get(key1);\n     if (value === undefined && key2 !== undefined) {\n-      value = this._map[key2];\n+      value = this._map.get(key2);\n       if (value === undefined && key3 !== undefined) {\n-        value = this._map[key3];\n+        value = this._map.get(key3);\n       }\n     }\n     if (value instanceof Ref && this.xref) {\n@@ -857,11 +5995,11 @@\n     return value;\n   }\n   getArray(key1, key2, key3) {\n-    let value = this._map[key1];\n+    let value = this._map.get(key1);\n     if (value === undefined && key2 !== undefined) {\n-      value = this._map[key2];\n+      value = this._map.get(key2);\n       if (value === undefined && key3 !== undefined) {\n-        value = this._map[key3];\n+        value = this._map.get(key3);\n       }\n     }\n     if (value instanceof Ref && this.xref) {\n@@ -878,23 +6016,23 @@\n     return value;\n   }\n   getRaw(key) {\n-    return this._map[key];\n+    return this._map.get(key);\n   }\n   getKeys() {\n-    return Object.keys(this._map);\n+    return [...this._map.keys()];\n   }\n   getRawValues() {\n-    return Object.values(this._map);\n+    return [...this._map.values()];\n   }\n   set(key, value) {\n-    this._map[key] = value;\n+    this._map.set(key, value);\n   }\n   has(key) {\n-    return this._map[key] !== undefined;\n+    return this._map.has(key);\n   }\n-  forEach(callback) {\n-    for (const key in this._map) {\n-      callback(key, this.get(key));\n+  *[Symbol.iterator]() {\n+    for (const [key, value] of this._map) {\n+      yield [key, value instanceof Ref && this.xref ? this.xref.fetch(value, this.suppressEncryption) : value];\n     }\n   }\n   static get empty() {\n@@ -915,7 +6053,7 @@\n       if (!(dict instanceof Dict)) {\n         continue;\n       }\n-      for (const [key, value] of Object.entries(dict._map)) {\n+      for (const [key, value] of dict._map) {\n         let property = properties.get(key);\n         if (property === undefined) {\n           property = [];\n@@ -928,19 +6066,19 @@\n     }\n     for (const [name, values] of properties) {\n       if (values.length === 1 || !(values[0] instanceof Dict)) {\n-        mergedDict._map[name] = values[0];\n+        mergedDict._map.set(name, values[0]);\n         continue;\n       }\n       const subDict = new Dict(xref);\n       for (const dict of values) {\n-        for (const [key, value] of Object.entries(dict._map)) {\n-          if (subDict._map[key] === undefined) {\n-            subDict._map[key] = value;\n+        for (const [key, value] of dict._map) {\n+          if (!subDict._map.has(key)) {\n+            subDict._map.set(key, value);\n           }\n         }\n       }\n       if (subDict.size > 0) {\n-        mergedDict._map[name] = subDict;\n+        mergedDict._map.set(name, subDict);\n       }\n     }\n     properties.clear();\n@@ -953,6 +6091,9 @@\n     }\n     return dict;\n   }\n+  delete(key) {\n+    delete this._map[key];\n+  }\n }\n class Ref {\n   constructor(num, gen) {\n@@ -1026,6 +6167,9 @@\n   clear() {\n     this._map.clear();\n   }\n+  *values() {\n+    yield* this._map.values();\n+  }\n   *items() {\n     for (const [ref, value] of this._map) {\n       yield [Ref.fromString(ref), value];\n@@ -1045,14 +6189,9 @@\n   return v1.num === v2.num && v1.gen === v2.gen;\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fbase_stream.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fbase_stream.js\n \n class BaseStream {\n-  constructor() {\n-    if (this.constructor === BaseStream) {\n-      unreachable(\"Cannot initialize BaseStream.\");\n-    }\n-  }\n   get length() {\n     unreachable(\"Abstract getter `length` accessed\");\n   }\n@@ -1068,6 +6207,24 @@\n   getBytes(length) {\n     unreachable(\"Abstract method `getBytes` called\");\n   }\n+  async getImageData(length, decoderOptions) {\n+    return this.getBytes(length, decoderOptions);\n+  }\n+  async asyncGetBytes() {\n+    unreachable(\"Abstract method `asyncGetBytes` called\");\n+  }\n+  get isAsync() {\n+    return false;\n+  }\n+  get isAsyncDecoder() {\n+    return false;\n+  }\n+  get canAsyncDecodeImageFromBuffer() {\n+    return false;\n+  }\n+  async getTransferableImage() {\n+    return null;\n+  }\n   peekByte() {\n     const peekedByte = this.getByte();\n     if (peekedByte !== -1) {\n@@ -1118,11 +6275,34 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fcore_utils.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fcore_utils.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n \n const PDF_VERSION_REGEXP = \u002F^[1-9]\\.\\d$\u002F;\n+const MAX_INT_32 = 2 ** 31 - 1;\n+const MIN_INT_32 = -(2 ** 31);\n+const IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\n+const RESOURCES_KEYS_OPERATOR_LIST = [\"ColorSpace\", \"ExtGState\", \"Font\", \"Pattern\", \"Properties\", \"Shading\", \"XObject\"];\n+const RESOURCES_KEYS_TEXT_CONTENT = [\"ExtGState\", \"Font\", \"Properties\", \"XObject\"];\n function getLookupTableFactory(initializer) {\n   let lookup;\n   return function () {\n@@ -1177,6 +6357,13 @@\n   }\n   return data;\n }\n+async function fetchBinaryData(url) {\n+  const response = await fetch(url);\n+  if (!response.ok) {\n+    throw new Error(`Failed to fetch file \"${url}\" with \"${response.statusText}\".`);\n+  }\n+  return new Uint8Array(await response.arrayBuffer());\n+}\n function getInheritableProperty({\n   dict,\n   key,\n@@ -1200,34 +6387,45 @@\n   }\n   return values;\n }\n+function getParentToUpdate(dict, ref, xref) {\n+  const visited = new RefSet();\n+  const firstDict = dict;\n+  const result = {\n+    dict: null,\n+    ref: null\n+  };\n+  while (dict instanceof Dict && !visited.has(ref)) {\n+    visited.put(ref);\n+    if (dict.has(\"T\")) {\n+      break;\n+    }\n+    ref = dict.getRaw(\"Parent\");\n+    if (!(ref instanceof Ref)) {\n+      return result;\n+    }\n+    dict = xref.fetch(ref);\n+  }\n+  if (dict instanceof Dict && dict !== firstDict) {\n+    result.dict = dict;\n+    result.ref = ref;\n+  }\n+  return result;\n+}\n const ROMAN_NUMBER_MAP = [\"\", \"C\", \"CC\", \"CCC\", \"CD\", \"D\", \"DC\", \"DCC\", \"DCCC\", \"CM\", \"\", \"X\", \"XX\", \"XXX\", \"XL\", \"L\", \"LX\", \"LXX\", \"LXXX\", \"XC\", \"\", \"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\"];\n function toRomanNumerals(number, lowerCase = false) {\n   assert(Number.isInteger(number) && number > 0, \"The number should be a positive integer.\");\n-  const romanBuf = [];\n-  let pos;\n-  while (number >= 1000) {\n-    number -= 1000;\n-    romanBuf.push(\"M\");\n-  }\n-  pos = number \u002F 100 | 0;\n-  number %= 100;\n-  romanBuf.push(ROMAN_NUMBER_MAP[pos]);\n-  pos = number \u002F 10 | 0;\n-  number %= 10;\n-  romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);\n-  romanBuf.push(ROMAN_NUMBER_MAP[20 + number]);\n-  const romanStr = romanBuf.join(\"\");\n-  return lowerCase ? romanStr.toLowerCase() : romanStr;\n+  const roman = \"M\".repeat(number \u002F 1000 | 0) + ROMAN_NUMBER_MAP[number % 1000 \u002F 100 | 0] + ROMAN_NUMBER_MAP[10 + (number % 100 \u002F 10 | 0)] + ROMAN_NUMBER_MAP[20 + number % 10];\n+  return lowerCase ? roman.toLowerCase() : roman;\n }\n function log2(x) {\n-  if (x \u003C= 0) {\n-    return 0;\n-  }\n-  return Math.ceil(Math.log2(x));\n+  return x > 0 ? Math.ceil(Math.log2(x)) : 0;\n }\n function readInt8(data, offset) {\n   return data[offset] \u003C\u003C 24 >> 24;\n }\n+function readInt16(data, offset) {\n+  return (data[offset] \u003C\u003C 24 | data[offset + 1] \u003C\u003C 16) >> 16;\n+}\n function readUint16(data, offset) {\n   return data[offset] \u003C\u003C 8 | data[offset + 1];\n }\n@@ -1241,7 +6439,10 @@\n   return Array.isArray(arr) && (len === null || arr.length === len) && arr.every(x => typeof x === \"boolean\");\n }\n function isNumberArray(arr, len) {\n-  return Array.isArray(arr) && (len === null || arr.length === len) && arr.every(x => typeof x === \"number\");\n+  if (Array.isArray(arr)) {\n+    return (len === null || arr.length === len) && arr.every(x => typeof x === \"number\");\n+  }\n+  return ArrayBuffer.isView(arr) && !(arr instanceof BigInt64Array || arr instanceof BigUint64Array) && (len === null || arr.length === len);\n }\n function lookupMatrix(arr, fallback) {\n   return isNumberArray(arr, 6) ? arr : fallback;\n@@ -1325,7 +6526,7 @@\n       } else if (typeof js === \"string\") {\n         code = js;\n       }\n-      code &&= stringToPDFString(code).replaceAll(\"\\x00\", \"\");\n+      code &&= stringToPDFString(code, true).replaceAll(\"\\x00\", \"\");\n       if (code) {\n         list.push(code);\n       }\n@@ -1469,14 +6670,9 @@\n   const regex = new RegExp(\"^\\\\s*(\" + URL_OPEN_METHODS.join(\"|\").replaceAll(\".\", \"\\\\.\") + \")\\\\((?:'|\\\")([^'\\\"]*)(?:'|\\\")(?:,\\\\s*(\\\\w+)\\\\)|\\\\))\", \"i\");\n   const jsUrl = regex.exec(str);\n   if (jsUrl?.[2]) {\n-    const url = jsUrl[2];\n-    let newWindow = false;\n-    if (jsUrl[3] === \"true\" && jsUrl[1] === \"app.launchURL\") {\n-      newWindow = true;\n-    }\n     return {\n-      url,\n-      newWindow\n+      url: jsUrl[2],\n+      newWindow: jsUrl[1] === \"app.launchURL\" && jsUrl[3] === \"true\"\n     };\n   }\n   return null;\n@@ -1512,6 +6708,9 @@\n   }\n   return newAnnotationsByPage.size > 0 ? newAnnotationsByPage : null;\n }\n+function stringToAsciiOrUTF16BE(str) {\n+  return isAscii(str) ? str : stringToUTF16String(str, true);\n+}\n function isAscii(str) {\n   return \u002F^[\\x00-\\x7F]*$\u002F.test(str);\n }\n@@ -1519,7 +6718,7 @@\n   const buf = [];\n   for (let i = 0, ii = str.length; i \u003C ii; i++) {\n     const char = str.charCodeAt(i);\n-    buf.push((char >> 8 & 0xff).toString(16).padStart(2, \"0\"), (char & 0xff).toString(16).padStart(2, \"0\"));\n+    buf.push(hexNumbers[char >> 8 & 0xff], hexNumbers[char & 0xff]);\n   }\n   return buf.join(\"\");\n }\n@@ -1550,7 +6749,1120 @@\n   return Math.ceil(Math.ceil(Math.log2(1 + x)) \u002F 8);\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fstream.js\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.url-search-params.delete.js\n+var web_url_search_params_delete = __webpack_require__(4603);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.url-search-params.has.js\n+var web_url_search_params_has = __webpack_require__(7566);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.url-search-params.size.js\n+var web_url_search_params_size = __webpack_require__(8721);\n+;\u002F\u002F .\u002Fexternal\u002Fqcms\u002Fqcms_utils.js\n+\n+\n+\n+\n+\n+\n+\n+class QCMS {\n+  static #memoryArray = null;\n+  static _memory = null;\n+  static _mustAddAlpha = false;\n+  static _destBuffer = null;\n+  static _destOffset = 0;\n+  static _destLength = 0;\n+  static _cssColor = \"\";\n+  static _makeHexColor = null;\n+  static get _memoryArray() {\n+    const array = this.#memoryArray;\n+    if (array?.byteLength) {\n+      return array;\n+    }\n+    return this.#memoryArray = new Uint8Array(this._memory.buffer);\n+  }\n+}\n+function copy_result(ptr, len) {\n+  const {\n+    _mustAddAlpha,\n+    _destBuffer,\n+    _destOffset,\n+    _destLength,\n+    _memoryArray\n+  } = QCMS;\n+  if (len === _destLength) {\n+    _destBuffer.set(_memoryArray.subarray(ptr, ptr + len), _destOffset);\n+    return;\n+  }\n+  if (_mustAddAlpha) {\n+    for (let i = ptr, ii = ptr + len, j = _destOffset; i \u003C ii; i += 3, j += 4) {\n+      _destBuffer[j] = _memoryArray[i];\n+      _destBuffer[j + 1] = _memoryArray[i + 1];\n+      _destBuffer[j + 2] = _memoryArray[i + 2];\n+      _destBuffer[j + 3] = 255;\n+    }\n+  } else {\n+    for (let i = ptr, ii = ptr + len, j = _destOffset; i \u003C ii; i += 3, j += 4) {\n+      _destBuffer[j] = _memoryArray[i];\n+      _destBuffer[j + 1] = _memoryArray[i + 1];\n+      _destBuffer[j + 2] = _memoryArray[i + 2];\n+    }\n+  }\n+}\n+function copy_rgb(ptr) {\n+  const {\n+    _destBuffer,\n+    _destOffset,\n+    _memoryArray\n+  } = QCMS;\n+  _destBuffer[_destOffset] = _memoryArray[ptr];\n+  _destBuffer[_destOffset + 1] = _memoryArray[ptr + 1];\n+  _destBuffer[_destOffset + 2] = _memoryArray[ptr + 2];\n+}\n+function make_cssRGB(ptr) {\n+  const {\n+    _memoryArray\n+  } = QCMS;\n+  QCMS._cssColor = QCMS._makeHexColor(_memoryArray[ptr], _memoryArray[ptr + 1], _memoryArray[ptr + 2]);\n+}\n+\n+;\u002F\u002F .\u002Fexternal\u002Fqcms\u002Fqcms.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+let wasm;\n+const cachedTextDecoder = typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', {\n+  ignoreBOM: true,\n+  fatal: true\n+}) : {\n+  decode: () => {\n+    throw Error('TextDecoder not available');\n+  }\n+};\n+if (typeof TextDecoder !== 'undefined') {\n+  cachedTextDecoder.decode();\n+}\n+;\n+let cachedUint8ArrayMemory0 = null;\n+function getUint8ArrayMemory0() {\n+  if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n+    cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n+  }\n+  return cachedUint8ArrayMemory0;\n+}\n+function getStringFromWasm0(ptr, len) {\n+  ptr = ptr >>> 0;\n+  return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n+}\n+let WASM_VECTOR_LEN = 0;\n+function passArray8ToWasm0(arg, malloc) {\n+  const ptr = malloc(arg.length * 1, 1) >>> 0;\n+  getUint8ArrayMemory0().set(arg, ptr \u002F 1);\n+  WASM_VECTOR_LEN = arg.length;\n+  return ptr;\n+}\n+function qcms_convert_array(transformer, src) {\n+  const ptr0 = passArray8ToWasm0(src, wasm.__wbindgen_malloc);\n+  const len0 = WASM_VECTOR_LEN;\n+  wasm.qcms_convert_array(transformer, ptr0, len0);\n+}\n+function qcms_convert_one(transformer, src, css) {\n+  wasm.qcms_convert_one(transformer, src, css);\n+}\n+function qcms_convert_three(transformer, src1, src2, src3, css) {\n+  wasm.qcms_convert_three(transformer, src1, src2, src3, css);\n+}\n+function qcms_convert_four(transformer, src1, src2, src3, src4, css) {\n+  wasm.qcms_convert_four(transformer, src1, src2, src3, src4, css);\n+}\n+function qcms_transformer_from_memory(mem, in_type, intent) {\n+  const ptr0 = passArray8ToWasm0(mem, wasm.__wbindgen_malloc);\n+  const len0 = WASM_VECTOR_LEN;\n+  const ret = wasm.qcms_transformer_from_memory(ptr0, len0, in_type, intent);\n+  return ret >>> 0;\n+}\n+function qcms_drop_transformer(transformer) {\n+  wasm.qcms_drop_transformer(transformer);\n+}\n+const DataType = Object.freeze({\n+  RGB8: 0,\n+  \"0\": \"RGB8\",\n+  RGBA8: 1,\n+  \"1\": \"RGBA8\",\n+  BGRA8: 2,\n+  \"2\": \"BGRA8\",\n+  Gray8: 3,\n+  \"3\": \"Gray8\",\n+  GrayA8: 4,\n+  \"4\": \"GrayA8\",\n+  CMYK: 5,\n+  \"5\": \"CMYK\"\n+});\n+const Intent = Object.freeze({\n+  Perceptual: 0,\n+  \"0\": \"Perceptual\",\n+  RelativeColorimetric: 1,\n+  \"1\": \"RelativeColorimetric\",\n+  Saturation: 2,\n+  \"2\": \"Saturation\",\n+  AbsoluteColorimetric: 3,\n+  \"3\": \"AbsoluteColorimetric\"\n+});\n+async function __wbg_load(module, imports) {\n+  if (typeof Response === 'function' && module instanceof Response) {\n+    if (typeof WebAssembly.instantiateStreaming === 'function') {\n+      try {\n+        return await WebAssembly.instantiateStreaming(module, imports);\n+      } catch (e) {\n+        if (module.headers.get('Content-Type') != 'application\u002Fwasm') {\n+          console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application\u002Fwasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n+        } else {\n+          throw e;\n+        }\n+      }\n+    }\n+    const bytes = await module.arrayBuffer();\n+    return await WebAssembly.instantiate(bytes, imports);\n+  } else {\n+    const instance = await WebAssembly.instantiate(module, imports);\n+    if (instance instanceof WebAssembly.Instance) {\n+      return {\n+        instance,\n+        module\n+      };\n+    } else {\n+      return instance;\n+    }\n+  }\n+}\n+function __wbg_get_imports() {\n+  const imports = {};\n+  imports.wbg = {};\n+  imports.wbg.__wbg_copyresult_b08ee7d273f295dd = function (arg0, arg1) {\n+    copy_result(arg0 >>> 0, arg1 >>> 0);\n+  };\n+  imports.wbg.__wbg_copyrgb_d60ce17bb05d9b67 = function (arg0) {\n+    copy_rgb(arg0 >>> 0);\n+  };\n+  imports.wbg.__wbg_makecssRGB_893bf0cd9fdb302d = function (arg0) {\n+    make_cssRGB(arg0 >>> 0);\n+  };\n+  imports.wbg.__wbindgen_init_externref_table = function () {\n+    const table = wasm.__wbindgen_export_0;\n+    const offset = table.grow(4);\n+    table.set(0, undefined);\n+    table.set(offset + 0, undefined);\n+    table.set(offset + 1, null);\n+    table.set(offset + 2, true);\n+    table.set(offset + 3, false);\n+  };\n+  imports.wbg.__wbindgen_throw = function (arg0, arg1) {\n+    throw new Error(getStringFromWasm0(arg0, arg1));\n+  };\n+  return imports;\n+}\n+function __wbg_init_memory(imports, memory) {}\n+function __wbg_finalize_init(instance, module) {\n+  wasm = instance.exports;\n+  __wbg_init.__wbindgen_wasm_module = module;\n+  cachedUint8ArrayMemory0 = null;\n+  wasm.__wbindgen_start();\n+  return wasm;\n+}\n+function initSync(module) {\n+  if (wasm !== undefined) return wasm;\n+  if (typeof module !== 'undefined') {\n+    if (Object.getPrototypeOf(module) === Object.prototype) {\n+      ({\n+        module\n+      } = module);\n+    } else {\n+      console.warn('using deprecated parameters for `initSync()`; pass a single object instead');\n+    }\n+  }\n+  const imports = __wbg_get_imports();\n+  __wbg_init_memory(imports);\n+  if (!(module instanceof WebAssembly.Module)) {\n+    module = new WebAssembly.Module(module);\n+  }\n+  const instance = new WebAssembly.Instance(module, imports);\n+  return __wbg_finalize_init(instance, module);\n+}\n+async function __wbg_init(module_or_path) {\n+  if (wasm !== undefined) return wasm;\n+  if (typeof module_or_path !== 'undefined') {\n+    if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n+      ({\n+        module_or_path\n+      } = module_or_path);\n+    } else {\n+      console.warn('using deprecated parameters for the initialization function; pass a single object instead');\n+    }\n+  }\n+  const imports = __wbg_get_imports();\n+  if (typeof module_or_path === 'string' || typeof Request === 'function' && module_or_path instanceof Request || typeof URL === 'function' && module_or_path instanceof URL) {\n+    module_or_path = fetch(module_or_path);\n+  }\n+  __wbg_init_memory(imports);\n+  const {\n+    instance,\n+    module\n+  } = await __wbg_load(await module_or_path, imports);\n+  return __wbg_finalize_init(instance, module);\n+}\n+\n+\u002F* harmony default export *\u002F const qcms = ((\u002F* unused pure expression or super *\u002F null && (__wbg_init)));\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fcolorspace.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+function resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {\n+  const COMPONENTS = 3;\n+  alpha01 = alpha01 !== 1 ? 0 : alpha01;\n+  const xRatio = w1 \u002F w2;\n+  const yRatio = h1 \u002F h2;\n+  let newIndex = 0,\n+    oldIndex;\n+  const xScaled = new Uint16Array(w2);\n+  const w1Scanline = w1 * COMPONENTS;\n+  for (let i = 0; i \u003C w2; i++) {\n+    xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n+  }\n+  for (let i = 0; i \u003C h2; i++) {\n+    const py = Math.floor(i * yRatio) * w1Scanline;\n+    for (let j = 0; j \u003C w2; j++) {\n+      oldIndex = py + xScaled[j];\n+      dest[newIndex++] = src[oldIndex++];\n+      dest[newIndex++] = src[oldIndex++];\n+      dest[newIndex++] = src[oldIndex++];\n+      newIndex += alpha01;\n+    }\n+  }\n+}\n+function resizeRgbaImage(src, dest, w1, h1, w2, h2, alpha01) {\n+  const xRatio = w1 \u002F w2;\n+  const yRatio = h1 \u002F h2;\n+  let newIndex = 0;\n+  const xScaled = new Uint16Array(w2);\n+  if (alpha01 === 1) {\n+    for (let i = 0; i \u003C w2; i++) {\n+      xScaled[i] = Math.floor(i * xRatio);\n+    }\n+    const src32 = new Uint32Array(src.buffer);\n+    const dest32 = new Uint32Array(dest.buffer);\n+    const rgbMask = FeatureTest.isLittleEndian ? 0x00ffffff : 0xffffff00;\n+    for (let i = 0; i \u003C h2; i++) {\n+      const buf = src32.subarray(Math.floor(i * yRatio) * w1);\n+      for (let j = 0; j \u003C w2; j++) {\n+        dest32[newIndex++] |= buf[xScaled[j]] & rgbMask;\n+      }\n+    }\n+  } else {\n+    const COMPONENTS = 4;\n+    const w1Scanline = w1 * COMPONENTS;\n+    for (let i = 0; i \u003C w2; i++) {\n+      xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n+    }\n+    for (let i = 0; i \u003C h2; i++) {\n+      const buf = src.subarray(Math.floor(i * yRatio) * w1Scanline);\n+      for (let j = 0; j \u003C w2; j++) {\n+        const oldIndex = xScaled[j];\n+        dest[newIndex++] = buf[oldIndex];\n+        dest[newIndex++] = buf[oldIndex + 1];\n+        dest[newIndex++] = buf[oldIndex + 2];\n+      }\n+    }\n+  }\n+}\n+function copyRgbaImage(src, dest, alpha01) {\n+  if (alpha01 === 1) {\n+    const src32 = new Uint32Array(src.buffer);\n+    const dest32 = new Uint32Array(dest.buffer);\n+    const rgbMask = FeatureTest.isLittleEndian ? 0x00ffffff : 0xffffff00;\n+    for (let i = 0, ii = src32.length; i \u003C ii; i++) {\n+      dest32[i] |= src32[i] & rgbMask;\n+    }\n+  } else {\n+    let j = 0;\n+    for (let i = 0, ii = src.length; i \u003C ii; i += 4) {\n+      dest[j++] = src[i];\n+      dest[j++] = src[i + 1];\n+      dest[j++] = src[i + 2];\n+    }\n+  }\n+}\n+class ColorSpace {\n+  static #rgbBuf = new Uint8ClampedArray(3);\n+  constructor(name, numComps) {\n+    this.name = name;\n+    this.numComps = numComps;\n+  }\n+  getRgb(src, srcOffset, output = new Uint8ClampedArray(3)) {\n+    this.getRgbItem(src, srcOffset, output, 0);\n+    return output;\n+  }\n+  getRgbHex(src, srcOffset) {\n+    const buffer = this.getRgb(src, srcOffset, ColorSpace.#rgbBuf);\n+    return Util.makeHexColor(buffer[0], buffer[1], buffer[2]);\n+  }\n+  getRgbItem(src, srcOffset, dest, destOffset) {\n+    unreachable(\"Should not call ColorSpace.getRgbItem\");\n+  }\n+  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n+    unreachable(\"Should not call ColorSpace.getRgbBuffer\");\n+  }\n+  getOutputLength(inputLength, alpha01) {\n+    unreachable(\"Should not call ColorSpace.getOutputLength\");\n+  }\n+  isPassthrough(bits) {\n+    return false;\n+  }\n+  isDefaultDecode(decodeMap, bpc) {\n+    return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n+  }\n+  fillRgb(dest, originalWidth, originalHeight, width, height, actualHeight, bpc, comps, alpha01) {\n+    const count = originalWidth * originalHeight;\n+    let rgbBuf = null;\n+    const numComponentColors = 1 \u003C\u003C bpc;\n+    const needsResizing = originalHeight !== height || originalWidth !== width;\n+    if (this.isPassthrough(bpc)) {\n+      rgbBuf = comps;\n+    } else if (this.numComps === 1 && count > numComponentColors && this.name !== \"DeviceGray\" && this.name !== \"DeviceRGB\") {\n+      const allColors = bpc \u003C= 8 ? new Uint8Array(numComponentColors) : new Uint16Array(numComponentColors);\n+      for (let i = 0; i \u003C numComponentColors; i++) {\n+        allColors[i] = i;\n+      }\n+      const colorMap = new Uint8ClampedArray(numComponentColors * 3);\n+      this.getRgbBuffer(allColors, 0, numComponentColors, colorMap, 0, bpc, 0);\n+      if (!needsResizing) {\n+        let destPos = 0;\n+        for (let i = 0; i \u003C count; ++i) {\n+          const key = comps[i] * 3;\n+          dest[destPos++] = colorMap[key];\n+          dest[destPos++] = colorMap[key + 1];\n+          dest[destPos++] = colorMap[key + 2];\n+          destPos += alpha01;\n+        }\n+      } else {\n+        rgbBuf = new Uint8Array(count * 3);\n+        let rgbPos = 0;\n+        for (let i = 0; i \u003C count; ++i) {\n+          const key = comps[i] * 3;\n+          rgbBuf[rgbPos++] = colorMap[key];\n+          rgbBuf[rgbPos++] = colorMap[key + 1];\n+          rgbBuf[rgbPos++] = colorMap[key + 2];\n+        }\n+      }\n+    } else if (!needsResizing) {\n+      this.getRgbBuffer(comps, 0, width * actualHeight, dest, 0, bpc, alpha01);\n+    } else {\n+      rgbBuf = new Uint8ClampedArray(count * 3);\n+      this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, 0);\n+    }\n+    if (rgbBuf) {\n+      if (needsResizing) {\n+        resizeRgbImage(rgbBuf, dest, originalWidth, originalHeight, width, height, alpha01);\n+      } else {\n+        let destPos = 0,\n+          rgbPos = 0;\n+        for (let i = 0, ii = width * actualHeight; i \u003C ii; i++) {\n+          dest[destPos++] = rgbBuf[rgbPos++];\n+          dest[destPos++] = rgbBuf[rgbPos++];\n+          dest[destPos++] = rgbBuf[rgbPos++];\n+          destPos += alpha01;\n+        }\n+      }\n+    }\n+  }\n+  get usesZeroToOneRange() {\n+    return shadow(this, \"usesZeroToOneRange\", true);\n+  }\n+  static isDefaultDecode(decode, numComps) {\n+    if (!Array.isArray(decode)) {\n+      return true;\n+    }\n+    if (numComps * 2 !== decode.length) {\n+      warn(\"The decode map is not the correct length\");\n+      return true;\n+    }\n+    for (let i = 0, ii = decode.length; i \u003C ii; i += 2) {\n+      if (decode[i] !== 0 || decode[i + 1] !== 1) {\n+        return false;\n+      }\n+    }\n+    return true;\n+  }\n+}\n+class AlternateCS extends ColorSpace {\n+  constructor(numComps, base, tintFn) {\n+    super(\"Alternate\", numComps);\n+    this.base = base;\n+    this.tintFn = tintFn;\n+    this.tmpBuf = new Float32Array(base.numComps);\n+  }\n+  getRgbItem(src, srcOffset, dest, destOffset) {\n+    const tmpBuf = this.tmpBuf;\n+    this.tintFn(src, srcOffset, tmpBuf, 0);\n+    this.base.getRgbItem(tmpBuf, 0, dest, destOffset);\n+  }\n+  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n+    const tintFn = this.tintFn;\n+    const base = this.base;\n+    const scale = 1 \u002F ((1 \u003C\u003C bits) - 1);\n+    const baseNumComps = base.numComps;\n+    const usesZeroToOneRange = base.usesZeroToOneRange;\n+    const isPassthrough = (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0;\n+    let pos = isPassthrough ? destOffset : 0;\n+    const baseBuf = isPassthrough ? dest : new Uint8ClampedArray(baseNumComps * count);\n+    const numComps = this.numComps;\n+    const scaled = new Float32Array(numComps);\n+    const tinted = new Float32Array(baseNumComps);\n+    let i, j;\n+    for (i = 0; i \u003C count; i++) {\n+      for (j = 0; j \u003C numComps; j++) {\n+        scaled[j] = src[srcOffset++] * scale;\n+      }\n+      tintFn(scaled, 0, tinted, 0);\n+      if (usesZeroToOneRange) {\n+        for (j = 0; j \u003C baseNumComps; j++) {\n+          baseBuf[pos++] = tinted[j] * 255;\n+        }\n+      } else {\n+        base.getRgbItem(tinted, 0, baseBuf, pos);\n+        pos += baseNumComps;\n+      }\n+    }\n+    if (!isPassthrough) {\n+      base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);\n+    }\n+  }\n+  getOutputLength(inputLength, alpha01) {\n+    return this.base.getOutputLength(inputLength * this.base.numComps \u002F this.numComps, alpha01);\n+  }\n+}\n+class PatternCS extends ColorSpace {\n+  constructor(baseCS) {\n+    super(\"Pattern\", null);\n+    this.base = baseCS;\n+  }\n+  isDefaultDecode(decodeMap, bpc) {\n+    unreachable(\"Should not call PatternCS.isDefaultDecode\");\n+  }\n+}\n+class IndexedCS extends ColorSpace {\n+  constructor(base, highVal, lookup) {\n+    super(\"Indexed\", 1);\n+    this.base = base;\n+    this.highVal = highVal;\n+    const length = base.numComps * (highVal + 1);\n+    this.lookup = new Uint8Array(length);\n+    if (lookup instanceof BaseStream) {\n+      const bytes = lookup.getBytes(length);\n+      this.lookup.set(bytes);\n+    } else if (typeof lookup === \"string\") {\n+      for (let i = 0; i \u003C length; ++i) {\n+        this.lookup[i] = lookup.charCodeAt(i) & 0xff;\n+      }\n+    } else {\n+      throw new FormatError(`IndexedCS - unrecognized lookup table: ${lookup}`);\n+    }\n+  }\n+  getRgbItem(src, srcOffset, dest, destOffset) {\n+    const {\n+      base,\n+      highVal,\n+      lookup\n+    } = this;\n+    const start = MathClamp(Math.round(src[srcOffset]), 0, highVal) * base.numComps;\n+    base.getRgbBuffer(lookup, start, 1, dest, destOffset, 8, 0);\n+  }\n+  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n+    const {\n+      base,\n+      highVal,\n+      lookup\n+    } = this;\n+    const {\n+      numComps\n+    } = base;\n+    const outputDelta = base.getOutputLength(numComps, alpha01);\n+    for (let i = 0; i \u003C count; ++i) {\n+      const lookupPos = MathClamp(Math.round(src[srcOffset++]), 0, highVal) * numComps;\n+      base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01);\n+      destOffset += outputDelta;\n+    }\n+  }\n+  getOutputLength(inputLength, alpha01) {\n+    return this.base.getOutputLength(inputLength * this.base.numComps, alpha01);\n+  }\n+  isDefaultDecode(decodeMap, bpc) {\n+    if (!Array.isArray(decodeMap)) {\n+      return true;\n+    }\n+    if (decodeMap.length !== 2) {\n+      warn(\"Decode map length is not correct\");\n+      return true;\n+    }\n+    if (!Number.isInteger(bpc) || bpc \u003C 1) {\n+      warn(\"Bits per component is not correct\");\n+      return true;\n+    }\n+    return decodeMap[0] === 0 && decodeMap[1] === (1 \u003C\u003C bpc) - 1;\n+  }\n+}\n+class DeviceGrayCS extends ColorSpace {\n+  constructor() {\n+    super(\"DeviceGray\", 1);\n+  }\n+  getRgbItem(src, srcOffset, dest, destOffset) {\n+    const c = src[srcOffset] * 255;\n+    dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;\n+  }\n+  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n+    const scale = 255 \u002F ((1 \u003C\u003C bits) - 1);\n+    let j = srcOffset,\n+      q = destOffset;\n+    for (let i = 0; i \u003C count; ++i) {\n+      const c = scale * src[j++];\n+      dest[q++] = c;\n+      dest[q++] = c;\n+      dest[q++] = c;\n+      q += alpha01;\n+    }\n+  }\n+  getOutputLength(inputLength, alpha01) {\n+    return inputLength * (3 + alpha01);\n+  }\n+}\n+class DeviceRgbCS extends ColorSpace {\n+  constructor() {\n+    super(\"DeviceRGB\", 3);\n+  }\n+  getRgbItem(src, srcOffset, dest, destOffset) {\n+    dest[destOffset] = src[srcOffset] * 255;\n+    dest[destOffset + 1] = src[srcOffset + 1] * 255;\n+    dest[destOffset + 2] = src[srcOffset + 2] * 255;\n+  }\n+  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n+    if (bits === 8 && alpha01 === 0) {\n+      dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);\n+      return;\n+    }\n+    const scale = 255 \u002F ((1 \u003C\u003C bits) - 1);\n+    let j = srcOffset,\n+      q = destOffset;\n+    for (let i = 0; i \u003C count; ++i) {\n+      dest[q++] = scale * src[j++];\n+      dest[q++] = scale * src[j++];\n+      dest[q++] = scale * src[j++];\n+      q += alpha01;\n+    }\n+  }\n+  getOutputLength(inputLength, alpha01) {\n+    return inputLength * (3 + alpha01) \u002F 3 | 0;\n+  }\n+  isPassthrough(bits) {\n+    return bits === 8;\n+  }\n+}\n+class DeviceRgbaCS extends ColorSpace {\n+  constructor() {\n+    super(\"DeviceRGBA\", 4);\n+  }\n+  getOutputLength(inputLength, _alpha01) {\n+    return inputLength * 4;\n+  }\n+  isPassthrough(bits) {\n+    return bits === 8;\n+  }\n+  fillRgb(dest, originalWidth, originalHeight, width, height, actualHeight, bpc, comps, alpha01) {\n+    if (originalHeight !== height || originalWidth !== width) {\n+      resizeRgbaImage(comps, dest, originalWidth, originalHeight, width, height, alpha01);\n+    } else {\n+      copyRgbaImage(comps, dest, alpha01);\n+    }\n+  }\n+}\n+class DeviceCmykCS extends ColorSpace {\n+  constructor() {\n+    super(\"DeviceCMYK\", 4);\n+  }\n+  #toRgb(src, srcOffset, srcScale, dest, destOffset) {\n+    const c = src[srcOffset] * srcScale;\n+    const m = src[srcOffset + 1] * srcScale;\n+    const y = src[srcOffset + 2] * srcScale;\n+    const k = src[srcOffset + 3] * srcScale;\n+    dest[destOffset] = 255 + c * (-4.387332384609988 * c + 54.48615194189176 * m + 18.82290502165302 * y + 212.25662451639585 * k + -285.2331026137004) + m * (1.7149763477362134 * m - 5.6096736904047315 * y + -17.873870861415444 * k - 5.497006427196366) + y * (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) + k * (-21.86122147463605 * k - 189.48180835922747);\n+    dest[destOffset + 1] = 255 + c * (8.841041422036149 * c + 60.118027045597366 * m + 6.871425592049007 * y + 31.159100130055922 * k + -79.2970844816548) + m * (-15.310361306967817 * m + 17.575251261109482 * y + 131.35250912493976 * k - 190.9453302588951) + y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) + k * (-20.737325471181034 * k - 187.80453709719578);\n+    dest[destOffset + 2] = 255 + c * (0.8842522430003296 * c + 8.078677503112928 * m + 30.89978309703729 * y - 0.23883238689178934 * k + -14.183576799673286) + m * (10.49593273432072 * m + 63.02378494754052 * y + 50.606957656360734 * k - 112.23884253719248) + y * (0.03296041114873217 * y + 115.60384449646641 * k + -193.58209356861505) + k * (-22.33816807309886 * k - 180.12613974708367);\n+  }\n+  getRgbItem(src, srcOffset, dest, destOffset) {\n+    this.#toRgb(src, srcOffset, 1, dest, destOffset);\n+  }\n+  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n+    const scale = 1 \u002F ((1 \u003C\u003C bits) - 1);\n+    for (let i = 0; i \u003C count; i++) {\n+      this.#toRgb(src, srcOffset, scale, dest, destOffset);\n+      srcOffset += 4;\n+      destOffset += 3 + alpha01;\n+    }\n+  }\n+  getOutputLength(inputLength, alpha01) {\n+    return inputLength \u002F 4 * (3 + alpha01) | 0;\n+  }\n+}\n+class CalGrayCS extends ColorSpace {\n+  constructor(whitePoint, blackPoint, gamma) {\n+    super(\"CalGray\", 1);\n+    if (!whitePoint) {\n+      throw new FormatError(\"WhitePoint missing - required for color space CalGray\");\n+    }\n+    [this.XW, this.YW, this.ZW] = whitePoint;\n+    [this.XB, this.YB, this.ZB] = blackPoint || [0, 0, 0];\n+    this.G = gamma || 1;\n+    if (this.XW \u003C 0 || this.ZW \u003C 0 || this.YW !== 1) {\n+      throw new FormatError(`Invalid WhitePoint components for ${this.name}, no fallback available`);\n+    }\n+    if (this.XB \u003C 0 || this.YB \u003C 0 || this.ZB \u003C 0) {\n+      info(`Invalid BlackPoint for ${this.name}, falling back to default.`);\n+      this.XB = this.YB = this.ZB = 0;\n+    }\n+    if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) {\n+      warn(`${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` + `ZB: ${this.ZB}, only default values are supported.`);\n+    }\n+    if (this.G \u003C 1) {\n+      info(`Invalid Gamma: ${this.G} for ${this.name}, falling back to default.`);\n+      this.G = 1;\n+    }\n+  }\n+  #toRgb(src, srcOffset, dest, destOffset, scale) {\n+    const A = src[srcOffset] * scale;\n+    const AG = A ** this.G;\n+    const L = this.YW * AG;\n+    const val = Math.max(295.8 * L ** 0.3333333333333333 - 40.8, 0);\n+    dest[destOffset] = val;\n+    dest[destOffset + 1] = val;\n+    dest[destOffset + 2] = val;\n+  }\n+  getRgbItem(src, srcOffset, dest, destOffset) {\n+    this.#toRgb(src, srcOffset, dest, destOffset, 1);\n+  }\n+  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n+    const scale = 1 \u002F ((1 \u003C\u003C bits) - 1);\n+    for (let i = 0; i \u003C count; ++i) {\n+      this.#toRgb(src, srcOffset, dest, destOffset, scale);\n+      srcOffset += 1;\n+      destOffset += 3 + alpha01;\n+    }\n+  }\n+  getOutputLength(inputLength, alpha01) {\n+    return inputLength * (3 + alpha01);\n+  }\n+}\n+class CalRGBCS extends ColorSpace {\n+  static #BRADFORD_SCALE_MATRIX = new Float32Array([0.8951, 0.2664, -0.1614, -0.7502, 1.7135, 0.0367, 0.0389, -0.0685, 1.0296]);\n+  static #BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([0.9869929, -0.1470543, 0.1599627, 0.4323053, 0.5183603, 0.0492912, -0.0085287, 0.0400428, 0.9684867]);\n+  static #SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([3.2404542, -1.5371385, -0.4985314, -0.9692660, 1.8760108, 0.0415560, 0.0556434, -0.2040259, 1.0572252]);\n+  static #FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);\n+  static #tempNormalizeMatrix = new Float32Array(3);\n+  static #tempConvertMatrix1 = new Float32Array(3);\n+  static #tempConvertMatrix2 = new Float32Array(3);\n+  static #DECODE_L_CONSTANT = ((8 + 16) \u002F 116) ** 3 \u002F 8.0;\n+  constructor(whitePoint, blackPoint, gamma, matrix) {\n+    super(\"CalRGB\", 3);\n+    if (!whitePoint) {\n+      throw new FormatError(\"WhitePoint missing - required for color space CalRGB\");\n+    }\n+    const [XW, YW, ZW] = this.whitePoint = whitePoint;\n+    const [XB, YB, ZB] = this.blackPoint = blackPoint || new Float32Array(3);\n+    [this.GR, this.GG, this.GB] = gamma || new Float32Array([1, 1, 1]);\n+    [this.MXA, this.MYA, this.MZA, this.MXB, this.MYB, this.MZB, this.MXC, this.MYC, this.MZC] = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n+    if (XW \u003C 0 || ZW \u003C 0 || YW !== 1) {\n+      throw new FormatError(`Invalid WhitePoint components for ${this.name}, no fallback available`);\n+    }\n+    if (XB \u003C 0 || YB \u003C 0 || ZB \u003C 0) {\n+      info(`Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` + \"falling back to default.\");\n+      this.blackPoint = new Float32Array(3);\n+    }\n+    if (this.GR \u003C 0 || this.GG \u003C 0 || this.GB \u003C 0) {\n+      info(`Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` + `${this.name}, falling back to default.`);\n+      this.GR = this.GG = this.GB = 1;\n+    }\n+  }\n+  #matrixProduct(a, b, result) {\n+    result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n+    result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];\n+    result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];\n+  }\n+  #toFlat(sourceWhitePoint, LMS, result) {\n+    result[0] = LMS[0] * 1 \u002F sourceWhitePoint[0];\n+    result[1] = LMS[1] * 1 \u002F sourceWhitePoint[1];\n+    result[2] = LMS[2] * 1 \u002F sourceWhitePoint[2];\n+  }\n+  #toD65(sourceWhitePoint, LMS, result) {\n+    const D65X = 0.95047;\n+    const D65Y = 1;\n+    const D65Z = 1.08883;\n+    result[0] = LMS[0] * D65X \u002F sourceWhitePoint[0];\n+    result[1] = LMS[1] * D65Y \u002F sourceWhitePoint[1];\n+    result[2] = LMS[2] * D65Z \u002F sourceWhitePoint[2];\n+  }\n+  #sRGBTransferFunction(color) {\n+    if (color \u003C= 0.0031308) {\n+      return MathClamp(12.92 * color, 0, 1);\n+    }\n+    if (color >= 0.99554525) {\n+      return 1;\n+    }\n+    return MathClamp((1 + 0.055) * color ** (1 \u002F 2.4) - 0.055, 0, 1);\n+  }\n+  #decodeL(L) {\n+    if (L \u003C 0) {\n+      return -this.#decodeL(-L);\n+    }\n+    if (L > 8.0) {\n+      return ((L + 16) \u002F 116) ** 3;\n+    }\n+    return L * CalRGBCS.#DECODE_L_CONSTANT;\n+  }\n+  #compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {\n+    if (sourceBlackPoint[0] === 0 && sourceBlackPoint[1] === 0 && sourceBlackPoint[2] === 0) {\n+      result[0] = XYZ_Flat[0];\n+      result[1] = XYZ_Flat[1];\n+      result[2] = XYZ_Flat[2];\n+      return;\n+    }\n+    const zeroDecodeL = this.#decodeL(0);\n+    const X_DST = zeroDecodeL;\n+    const X_SRC = this.#decodeL(sourceBlackPoint[0]);\n+    const Y_DST = zeroDecodeL;\n+    const Y_SRC = this.#decodeL(sourceBlackPoint[1]);\n+    const Z_DST = zeroDecodeL;\n+    const Z_SRC = this.#decodeL(sourceBlackPoint[2]);\n+    const X_Scale = (1 - X_DST) \u002F (1 - X_SRC);\n+    const X_Offset = 1 - X_Scale;\n+    const Y_Scale = (1 - Y_DST) \u002F (1 - Y_SRC);\n+    const Y_Offset = 1 - Y_Scale;\n+    const Z_Scale = (1 - Z_DST) \u002F (1 - Z_SRC);\n+    const Z_Offset = 1 - Z_Scale;\n+    result[0] = XYZ_Flat[0] * X_Scale + X_Offset;\n+    result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;\n+    result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;\n+  }\n+  #normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {\n+    if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {\n+      result[0] = XYZ_In[0];\n+      result[1] = XYZ_In[1];\n+      result[2] = XYZ_In[2];\n+      return;\n+    }\n+    const LMS = result;\n+    this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n+    const LMS_Flat = CalRGBCS.#tempNormalizeMatrix;\n+    this.#toFlat(sourceWhitePoint, LMS, LMS_Flat);\n+    this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result);\n+  }\n+  #normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {\n+    const LMS = result;\n+    this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n+    const LMS_D65 = CalRGBCS.#tempNormalizeMatrix;\n+    this.#toD65(sourceWhitePoint, LMS, LMS_D65);\n+    this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result);\n+  }\n+  #toRgb(src, srcOffset, dest, destOffset, scale) {\n+    const A = MathClamp(src[srcOffset] * scale, 0, 1);\n+    const B = MathClamp(src[srcOffset + 1] * scale, 0, 1);\n+    const C = MathClamp(src[srcOffset + 2] * scale, 0, 1);\n+    const AGR = A === 1 ? 1 : A ** this.GR;\n+    const BGG = B === 1 ? 1 : B ** this.GG;\n+    const CGB = C === 1 ? 1 : C ** this.GB;\n+    const X = this.MXA * AGR + this.MXB * BGG + this.MXC * CGB;\n+    const Y = this.MYA * AGR + this.MYB * BGG + this.MYC * CGB;\n+    const Z = this.MZA * AGR + this.MZB * BGG + this.MZC * CGB;\n+    const XYZ = CalRGBCS.#tempConvertMatrix1;\n+    XYZ[0] = X;\n+    XYZ[1] = Y;\n+    XYZ[2] = Z;\n+    const XYZ_Flat = CalRGBCS.#tempConvertMatrix2;\n+    this.#normalizeWhitePointToFlat(this.whitePoint, XYZ, XYZ_Flat);\n+    const XYZ_Black = CalRGBCS.#tempConvertMatrix1;\n+    this.#compensateBlackPoint(this.blackPoint, XYZ_Flat, XYZ_Black);\n+    const XYZ_D65 = CalRGBCS.#tempConvertMatrix2;\n+    this.#normalizeWhitePointToD65(CalRGBCS.#FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65);\n+    const SRGB = CalRGBCS.#tempConvertMatrix1;\n+    this.#matrixProduct(CalRGBCS.#SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);\n+    dest[destOffset] = this.#sRGBTransferFunction(SRGB[0]) * 255;\n+    dest[destOffset + 1] = this.#sRGBTransferFunction(SRGB[1]) * 255;\n+    dest[destOffset + 2] = this.#sRGBTransferFunction(SRGB[2]) * 255;\n+  }\n+  getRgbItem(src, srcOffset, dest, destOffset) {\n+    this.#toRgb(src, srcOffset, dest, destOffset, 1);\n+  }\n+  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n+    const scale = 1 \u002F ((1 \u003C\u003C bits) - 1);\n+    for (let i = 0; i \u003C count; ++i) {\n+      this.#toRgb(src, srcOffset, dest, destOffset, scale);\n+      srcOffset += 3;\n+      destOffset += 3 + alpha01;\n+    }\n+  }\n+  getOutputLength(inputLength, alpha01) {\n+    return inputLength * (3 + alpha01) \u002F 3 | 0;\n+  }\n+}\n+class LabCS extends ColorSpace {\n+  constructor(whitePoint, blackPoint, range) {\n+    super(\"Lab\", 3);\n+    if (!whitePoint) {\n+      throw new FormatError(\"WhitePoint missing - required for color space Lab\");\n+    }\n+    [this.XW, this.YW, this.ZW] = whitePoint;\n+    [this.amin, this.amax, this.bmin, this.bmax] = range || [-100, 100, -100, 100];\n+    [this.XB, this.YB, this.ZB] = blackPoint || [0, 0, 0];\n+    if (this.XW \u003C 0 || this.ZW \u003C 0 || this.YW !== 1) {\n+      throw new FormatError(\"Invalid WhitePoint components, no fallback available\");\n+    }\n+    if (this.XB \u003C 0 || this.YB \u003C 0 || this.ZB \u003C 0) {\n+      info(\"Invalid BlackPoint, falling back to default\");\n+      this.XB = this.YB = this.ZB = 0;\n+    }\n+    if (this.amin > this.amax || this.bmin > this.bmax) {\n+      info(\"Invalid Range, falling back to defaults\");\n+      this.amin = -100;\n+      this.amax = 100;\n+      this.bmin = -100;\n+      this.bmax = 100;\n+    }\n+  }\n+  #fn_g(x) {\n+    return x >= 6 \u002F 29 ? x ** 3 : 108 \u002F 841 * (x - 4 \u002F 29);\n+  }\n+  #decode(value, high1, low2, high2) {\n+    return low2 + value * (high2 - low2) \u002F high1;\n+  }\n+  #toRgb(src, srcOffset, maxVal, dest, destOffset) {\n+    let Ls = src[srcOffset];\n+    let as = src[srcOffset + 1];\n+    let bs = src[srcOffset + 2];\n+    if (maxVal !== false) {\n+      Ls = this.#decode(Ls, maxVal, 0, 100);\n+      as = this.#decode(as, maxVal, this.amin, this.amax);\n+      bs = this.#decode(bs, maxVal, this.bmin, this.bmax);\n+    }\n+    if (as > this.amax) {\n+      as = this.amax;\n+    } else if (as \u003C this.amin) {\n+      as = this.amin;\n+    }\n+    if (bs > this.bmax) {\n+      bs = this.bmax;\n+    } else if (bs \u003C this.bmin) {\n+      bs = this.bmin;\n+    }\n+    const M = (Ls + 16) \u002F 116;\n+    const L = M + as \u002F 500;\n+    const N = M - bs \u002F 200;\n+    const X = this.XW * this.#fn_g(L);\n+    const Y = this.YW * this.#fn_g(M);\n+    const Z = this.ZW * this.#fn_g(N);\n+    let r, g, b;\n+    if (this.ZW \u003C 1) {\n+      r = X * 3.1339 + Y * -1.617 + Z * -0.4906;\n+      g = X * -0.9785 + Y * 1.916 + Z * 0.0333;\n+      b = X * 0.072 + Y * -0.229 + Z * 1.4057;\n+    } else {\n+      r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;\n+      g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;\n+      b = X * 0.0557 + Y * -0.204 + Z * 1.057;\n+    }\n+    dest[destOffset] = Math.sqrt(r) * 255;\n+    dest[destOffset + 1] = Math.sqrt(g) * 255;\n+    dest[destOffset + 2] = Math.sqrt(b) * 255;\n+  }\n+  getRgbItem(src, srcOffset, dest, destOffset) {\n+    this.#toRgb(src, srcOffset, false, dest, destOffset);\n+  }\n+  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n+    const maxVal = (1 \u003C\u003C bits) - 1;\n+    for (let i = 0; i \u003C count; i++) {\n+      this.#toRgb(src, srcOffset, maxVal, dest, destOffset);\n+      srcOffset += 3;\n+      destOffset += 3 + alpha01;\n+    }\n+  }\n+  getOutputLength(inputLength, alpha01) {\n+    return inputLength * (3 + alpha01) \u002F 3 | 0;\n+  }\n+  isDefaultDecode(decodeMap, bpc) {\n+    return true;\n+  }\n+  get usesZeroToOneRange() {\n+    return shadow(this, \"usesZeroToOneRange\", false);\n+  }\n+}\n+\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Ficc_colorspace.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+function fetchSync(url) {\n+  const xhr = new XMLHttpRequest();\n+  xhr.open(\"GET\", url, false);\n+  xhr.responseType = \"arraybuffer\";\n+  xhr.send(null);\n+  return xhr.response;\n+}\n+class IccColorSpace extends ColorSpace {\n+  #transformer;\n+  #convertPixel;\n+  static #useWasm = true;\n+  static #wasmUrl = null;\n+  static #finalizer = new FinalizationRegistry(transformer => {\n+    qcms_drop_transformer(transformer);\n+  });\n+  constructor(iccProfile, name, numComps) {\n+    if (!IccColorSpace.isUsable) {\n+      throw new Error(\"No ICC color space support\");\n+    }\n+    super(name, numComps);\n+    let inType;\n+    switch (numComps) {\n+      case 1:\n+        inType = DataType.Gray8;\n+        this.#convertPixel = (src, srcOffset, css) => qcms_convert_one(this.#transformer, src[srcOffset] * 255, css);\n+        break;\n+      case 3:\n+        inType = DataType.RGB8;\n+        this.#convertPixel = (src, srcOffset, css) => qcms_convert_three(this.#transformer, src[srcOffset] * 255, src[srcOffset + 1] * 255, src[srcOffset + 2] * 255, css);\n+        break;\n+      case 4:\n+        inType = DataType.CMYK;\n+        this.#convertPixel = (src, srcOffset, css) => qcms_convert_four(this.#transformer, src[srcOffset] * 255, src[srcOffset + 1] * 255, src[srcOffset + 2] * 255, src[srcOffset + 3] * 255, css);\n+        break;\n+      default:\n+        throw new Error(`Unsupported number of components: ${numComps}`);\n+    }\n+    this.#transformer = qcms_transformer_from_memory(iccProfile, inType, Intent.Perceptual);\n+    if (!this.#transformer) {\n+      throw new Error(\"Failed to create ICC color space\");\n+    }\n+    IccColorSpace.#finalizer.register(this, this.#transformer);\n+  }\n+  getRgbHex(src, srcOffset) {\n+    this.#convertPixel(src, srcOffset, true);\n+    return QCMS._cssColor;\n+  }\n+  getRgbItem(src, srcOffset, dest, destOffset) {\n+    QCMS._destBuffer = dest;\n+    QCMS._destOffset = destOffset;\n+    QCMS._destLength = 3;\n+    this.#convertPixel(src, srcOffset, false);\n+    QCMS._destBuffer = null;\n+  }\n+  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n+    src = src.subarray(srcOffset, srcOffset + count * this.numComps);\n+    if (bits !== 8) {\n+      const scale = 255 \u002F ((1 \u003C\u003C bits) - 1);\n+      for (let i = 0, ii = src.length; i \u003C ii; i++) {\n+        src[i] *= scale;\n+      }\n+    }\n+    QCMS._mustAddAlpha = alpha01 && dest.buffer === src.buffer;\n+    QCMS._destBuffer = dest;\n+    QCMS._destOffset = destOffset;\n+    QCMS._destLength = count * (3 + alpha01);\n+    qcms_convert_array(this.#transformer, src);\n+    QCMS._mustAddAlpha = false;\n+    QCMS._destBuffer = null;\n+  }\n+  getOutputLength(inputLength, alpha01) {\n+    return inputLength \u002F this.numComps * (3 + alpha01) | 0;\n+  }\n+  static setOptions({\n+    useWasm,\n+    useWorkerFetch,\n+    wasmUrl\n+  }) {\n+    if (!useWorkerFetch) {\n+      this.#useWasm = false;\n+      return;\n+    }\n+    this.#useWasm = useWasm;\n+    this.#wasmUrl = wasmUrl;\n+  }\n+  static get isUsable() {\n+    let isUsable = false;\n+    if (this.#useWasm) {\n+      if (this.#wasmUrl) {\n+        try {\n+          this._module = initSync({\n+            module: fetchSync(`${this.#wasmUrl}qcms_bg.wasm`)\n+          });\n+          isUsable = !!this._module;\n+          QCMS._memory = this._module.memory;\n+          QCMS._makeHexColor = Util.makeHexColor;\n+        } catch (e) {\n+          warn(`ICCBased color space: \"${e}\".`);\n+        }\n+      } else {\n+        warn(\"No ICC color space support due to missing `wasmUrl` API option\");\n+      }\n+    }\n+    return shadow(this, \"isUsable\", isUsable);\n+  }\n+}\n+class CmykICCBasedCS extends IccColorSpace {\n+  static #iccUrl;\n+  constructor() {\n+    const iccProfile = new Uint8Array(fetchSync(`${CmykICCBasedCS.#iccUrl}CGATS001Compat-v2-micro.icc`));\n+    super(iccProfile, \"DeviceCMYK\", 4);\n+  }\n+  static setOptions({\n+    iccUrl\n+  }) {\n+    this.#iccUrl = iccUrl;\n+  }\n+  static get isUsable() {\n+    let isUsable = false;\n+    if (IccColorSpace.isUsable) {\n+      if (this.#iccUrl) {\n+        isUsable = true;\n+      } else {\n+        warn(\"No CMYK ICC profile support due to missing `iccUrl` API option\");\n+      }\n+    }\n+    return shadow(this, \"isUsable\", isUsable);\n+  }\n+}\n+\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fstream.js\n+\n+\n+\n+\n+\n+\n+\n \n \n class Stream extends BaseStream {\n@@ -1618,7 +7930,23 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fchunked_stream.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fchunked_stream.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n \n@@ -1932,9 +8260,7 @@\n         }\n       }\n     }\n-    chunksToRequest.sort(function (a, b) {\n-      return a - b;\n-    });\n+    chunksToRequest.sort((a, b) => a - b);\n     return this._requestChunks(chunksToRequest);\n   }\n   groupChunks(chunks) {\n@@ -2045,202 +8371,749 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fcolorspace.js\n+;\u002F\u002F .\u002Fsrc\u002Fshared\u002Fimage_utils.js\n \n \n \n \n-function resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {\n-  const COMPONENTS = 3;\n-  alpha01 = alpha01 !== 1 ? 0 : alpha01;\n-  const xRatio = w1 \u002F w2;\n-  const yRatio = h1 \u002F h2;\n-  let newIndex = 0,\n-    oldIndex;\n-  const xScaled = new Uint16Array(w2);\n-  const w1Scanline = w1 * COMPONENTS;\n-  for (let i = 0; i \u003C w2; i++) {\n-    xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n+function convertToRGBA(params) {\n+  switch (params.kind) {\n+    case ImageKind.GRAYSCALE_1BPP:\n+      return convertBlackAndWhiteToRGBA(params);\n+    case ImageKind.RGB_24BPP:\n+      return convertRGBToRGBA(params);\n   }\n-  for (let i = 0; i \u003C h2; i++) {\n-    const py = Math.floor(i * yRatio) * w1Scanline;\n-    for (let j = 0; j \u003C w2; j++) {\n-      oldIndex = py + xScaled[j];\n-      dest[newIndex++] = src[oldIndex++];\n-      dest[newIndex++] = src[oldIndex++];\n-      dest[newIndex++] = src[oldIndex++];\n-      newIndex += alpha01;\n+  return null;\n+}\n+function convertBlackAndWhiteToRGBA({\n+  src,\n+  srcPos = 0,\n+  dest,\n+  width,\n+  height,\n+  nonBlackColor = 0xffffffff,\n+  inverseDecode = false\n+}) {\n+  const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n+  const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];\n+  const widthInSource = width >> 3;\n+  const widthRemainder = width & 7;\n+  const srcLength = src.length;\n+  dest = new Uint32Array(dest.buffer);\n+  let destPos = 0;\n+  for (let i = 0; i \u003C height; i++) {\n+    for (const max = srcPos + widthInSource; srcPos \u003C max; srcPos++) {\n+      const elem = srcPos \u003C srcLength ? src[srcPos] : 255;\n+      dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n+      dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n+      dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n+      dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n+      dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n+      dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n+      dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n+      dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n+    }\n+    if (widthRemainder === 0) {\n+      continue;\n+    }\n+    const elem = srcPos \u003C srcLength ? src[srcPos++] : 255;\n+    for (let j = 0; j \u003C widthRemainder; j++) {\n+      dest[destPos++] = elem & 1 \u003C\u003C 7 - j ? oneMapping : zeroMapping;\n     }\n   }\n+  return {\n+    srcPos,\n+    destPos\n+  };\n }\n-class ColorSpace {\n-  constructor(name, numComps) {\n-    if (this.constructor === ColorSpace) {\n-      unreachable(\"Cannot initialize ColorSpace.\");\n+function convertRGBToRGBA({\n+  src,\n+  srcPos = 0,\n+  dest,\n+  destPos = 0,\n+  width,\n+  height\n+}) {\n+  let i = 0;\n+  const len = width * height * 3;\n+  const len32 = len >> 2;\n+  const src32 = new Uint32Array(src.buffer, srcPos, len32);\n+  if (FeatureTest.isLittleEndian) {\n+    for (; i \u003C len32 - 2; i += 3, destPos += 4) {\n+      const s1 = src32[i];\n+      const s2 = src32[i + 1];\n+      const s3 = src32[i + 2];\n+      dest[destPos] = s1 | 0xff000000;\n+      dest[destPos + 1] = s1 >>> 24 | s2 \u003C\u003C 8 | 0xff000000;\n+      dest[destPos + 2] = s2 >>> 16 | s3 \u003C\u003C 16 | 0xff000000;\n+      dest[destPos + 3] = s3 >>> 8 | 0xff000000;\n+    }\n+    for (let j = i * 4, jj = srcPos + len; j \u003C jj; j += 3) {\n+      dest[destPos++] = src[j] | src[j + 1] \u003C\u003C 8 | src[j + 2] \u003C\u003C 16 | 0xff000000;\n+    }\n+  } else {\n+    for (; i \u003C len32 - 2; i += 3, destPos += 4) {\n+      const s1 = src32[i];\n+      const s2 = src32[i + 1];\n+      const s3 = src32[i + 2];\n+      dest[destPos] = s1 | 0xff;\n+      dest[destPos + 1] = s1 \u003C\u003C 24 | s2 >>> 8 | 0xff;\n+      dest[destPos + 2] = s2 \u003C\u003C 16 | s3 >>> 16 | 0xff;\n+      dest[destPos + 3] = s3 \u003C\u003C 8 | 0xff;\n+    }\n+    for (let j = i * 4, jj = srcPos + len; j \u003C jj; j += 3) {\n+      dest[destPos++] = src[j] \u003C\u003C 24 | src[j + 1] \u003C\u003C 16 | src[j + 2] \u003C\u003C 8 | 0xff;\n     }\n-    this.name = name;\n-    this.numComps = numComps;\n   }\n-  getRgb(src, srcOffset) {\n-    const rgb = new Uint8ClampedArray(3);\n-    this.getRgbItem(src, srcOffset, rgb, 0);\n-    return rgb;\n+  return {\n+    srcPos: srcPos + len,\n+    destPos\n+  };\n+}\n+function grayToRGBA(src, dest) {\n+  if (FeatureTest.isLittleEndian) {\n+    for (let i = 0, ii = src.length; i \u003C ii; i++) {\n+      dest[i] = src[i] * 0x10101 | 0xff000000;\n+    }\n+  } else {\n+    for (let i = 0, ii = src.length; i \u003C ii; i++) {\n+      dest[i] = src[i] * 0x1010100 | 0x000000ff;\n+    }\n   }\n-  getRgbItem(src, srcOffset, dest, destOffset) {\n-    unreachable(\"Should not call ColorSpace.getRgbItem\");\n+}\n+\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fimage_resizer.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+const MIN_IMAGE_DIM = 2048;\n+const MAX_IMAGE_DIM = 65537;\n+const MAX_ERROR = 128;\n+class ImageResizer {\n+  static #goodSquareLength = MIN_IMAGE_DIM;\n+  static #isImageDecoderSupported = FeatureTest.isImageDecoderSupported;\n+  constructor(imgData, isMask) {\n+    this._imgData = imgData;\n+    this._isMask = isMask;\n   }\n-  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n-    unreachable(\"Should not call ColorSpace.getRgbBuffer\");\n+  static get canUseImageDecoder() {\n+    return shadow(this, \"canUseImageDecoder\", this.#isImageDecoderSupported ? ImageDecoder.isTypeSupported(\"image\u002Fbmp\") : Promise.resolve(false));\n   }\n-  getOutputLength(inputLength, alpha01) {\n-    unreachable(\"Should not call ColorSpace.getOutputLength\");\n+  static needsToBeResized(width, height) {\n+    if (width \u003C= this.#goodSquareLength && height \u003C= this.#goodSquareLength) {\n+      return false;\n+    }\n+    const {\n+      MAX_DIM\n+    } = this;\n+    if (width > MAX_DIM || height > MAX_DIM) {\n+      return true;\n+    }\n+    const area = width * height;\n+    if (this._hasMaxArea) {\n+      return area > this.MAX_AREA;\n+    }\n+    if (area \u003C this.#goodSquareLength ** 2) {\n+      return false;\n+    }\n+    if (this._areGoodDims(width, height)) {\n+      this.#goodSquareLength = Math.max(this.#goodSquareLength, Math.floor(Math.sqrt(width * height)));\n+      return false;\n+    }\n+    this.#goodSquareLength = this._guessMax(this.#goodSquareLength, MAX_DIM, MAX_ERROR, 0);\n+    const maxArea = this.MAX_AREA = this.#goodSquareLength ** 2;\n+    return area > maxArea;\n   }\n-  isPassthrough(bits) {\n-    return false;\n+  static getReducePowerForJPX(width, height, componentsCount) {\n+    const area = width * height;\n+    const maxJPXArea = 2 ** 30 \u002F (componentsCount * 4);\n+    if (!this.needsToBeResized(width, height)) {\n+      if (area > maxJPXArea) {\n+        return Math.ceil(Math.log2(area \u002F maxJPXArea));\n+      }\n+      return 0;\n+    }\n+    const {\n+      MAX_DIM,\n+      MAX_AREA\n+    } = this;\n+    const minFactor = Math.max(width \u002F MAX_DIM, height \u002F MAX_DIM, Math.sqrt(area \u002F Math.min(maxJPXArea, MAX_AREA)));\n+    return Math.ceil(Math.log2(minFactor));\n   }\n-  isDefaultDecode(decodeMap, bpc) {\n-    return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n+  static get MAX_DIM() {\n+    return shadow(this, \"MAX_DIM\", this._guessMax(MIN_IMAGE_DIM, MAX_IMAGE_DIM, 0, 1));\n   }\n-  fillRgb(dest, originalWidth, originalHeight, width, height, actualHeight, bpc, comps, alpha01) {\n-    const count = originalWidth * originalHeight;\n-    let rgbBuf = null;\n-    const numComponentColors = 1 \u003C\u003C bpc;\n-    const needsResizing = originalHeight !== height || originalWidth !== width;\n-    if (this.isPassthrough(bpc)) {\n-      rgbBuf = comps;\n-    } else if (this.numComps === 1 && count > numComponentColors && this.name !== \"DeviceGray\" && this.name !== \"DeviceRGB\") {\n-      const allColors = bpc \u003C= 8 ? new Uint8Array(numComponentColors) : new Uint16Array(numComponentColors);\n-      for (let i = 0; i \u003C numComponentColors; i++) {\n-        allColors[i] = i;\n+  static get MAX_AREA() {\n+    this._hasMaxArea = true;\n+    return shadow(this, \"MAX_AREA\", this._guessMax(this.#goodSquareLength, this.MAX_DIM, MAX_ERROR, 0) ** 2);\n+  }\n+  static set MAX_AREA(area) {\n+    if (area >= 0) {\n+      this._hasMaxArea = true;\n+      shadow(this, \"MAX_AREA\", area);\n+    }\n+  }\n+  static setOptions({\n+    canvasMaxAreaInBytes = -1,\n+    isImageDecoderSupported = false\n+  }) {\n+    if (!this._hasMaxArea) {\n+      this.MAX_AREA = canvasMaxAreaInBytes >> 2;\n+    }\n+    this.#isImageDecoderSupported = isImageDecoderSupported;\n+  }\n+  static _areGoodDims(width, height) {\n+    try {\n+      const canvas = new OffscreenCanvas(width, height);\n+      const ctx = canvas.getContext(\"2d\");\n+      ctx.fillRect(0, 0, 1, 1);\n+      const opacity = ctx.getImageData(0, 0, 1, 1).data[3];\n+      canvas.width = canvas.height = 1;\n+      return opacity !== 0;\n+    } catch {\n+      return false;\n+    }\n+  }\n+  static _guessMax(start, end, tolerance, defaultHeight) {\n+    while (start + tolerance + 1 \u003C end) {\n+      const middle = Math.floor((start + end) \u002F 2);\n+      const height = defaultHeight || middle;\n+      if (this._areGoodDims(middle, height)) {\n+        start = middle;\n+      } else {\n+        end = middle;\n       }\n-      const colorMap = new Uint8ClampedArray(numComponentColors * 3);\n-      this.getRgbBuffer(allColors, 0, numComponentColors, colorMap, 0, bpc, 0);\n-      if (!needsResizing) {\n-        let destPos = 0;\n-        for (let i = 0; i \u003C count; ++i) {\n-          const key = comps[i] * 3;\n-          dest[destPos++] = colorMap[key];\n-          dest[destPos++] = colorMap[key + 1];\n-          dest[destPos++] = colorMap[key + 2];\n-          destPos += alpha01;\n+    }\n+    return start;\n+  }\n+  static async createImage(imgData, isMask = false) {\n+    return new ImageResizer(imgData, isMask)._createImage();\n+  }\n+  async _createImage() {\n+    const {\n+      _imgData: imgData\n+    } = this;\n+    const {\n+      width,\n+      height\n+    } = imgData;\n+    if (width * height * 4 > MAX_INT_32) {\n+      const result = this.#rescaleImageData();\n+      if (result) {\n+        return result;\n+      }\n+    }\n+    const data = this._encodeBMP();\n+    let decoder, imagePromise;\n+    if (await ImageResizer.canUseImageDecoder) {\n+      decoder = new ImageDecoder({\n+        data,\n+        type: \"image\u002Fbmp\",\n+        preferAnimation: false,\n+        transfer: [data.buffer]\n+      });\n+      imagePromise = decoder.decode().catch(reason => {\n+        warn(`BMP image decoding failed: ${reason}`);\n+        return createImageBitmap(new Blob([this._encodeBMP().buffer], {\n+          type: \"image\u002Fbmp\"\n+        }));\n+      }).finally(() => {\n+        decoder.close();\n+      });\n+    } else {\n+      imagePromise = createImageBitmap(new Blob([data.buffer], {\n+        type: \"image\u002Fbmp\"\n+      }));\n+    }\n+    const {\n+      MAX_AREA,\n+      MAX_DIM\n+    } = ImageResizer;\n+    const minFactor = Math.max(width \u002F MAX_DIM, height \u002F MAX_DIM, Math.sqrt(width * height \u002F MAX_AREA));\n+    const firstFactor = Math.max(minFactor, 2);\n+    const factor = Math.round(10 * (minFactor + 1.25)) \u002F 10 \u002F firstFactor;\n+    const N = Math.floor(Math.log2(factor));\n+    const steps = new Array(N + 2).fill(2);\n+    steps[0] = firstFactor;\n+    steps.splice(-1, 1, factor \u002F (1 \u003C\u003C N));\n+    let newWidth = width;\n+    let newHeight = height;\n+    const result = await imagePromise;\n+    let bitmap = result.image || result;\n+    for (const step of steps) {\n+      const prevWidth = newWidth;\n+      const prevHeight = newHeight;\n+      newWidth = Math.floor(newWidth \u002F step) - 1;\n+      newHeight = Math.floor(newHeight \u002F step) - 1;\n+      const canvas = new OffscreenCanvas(newWidth, newHeight);\n+      const ctx = canvas.getContext(\"2d\");\n+      ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n+      bitmap.close();\n+      bitmap = canvas.transferToImageBitmap();\n+    }\n+    imgData.data = null;\n+    imgData.bitmap = bitmap;\n+    imgData.width = newWidth;\n+    imgData.height = newHeight;\n+    return imgData;\n+  }\n+  #rescaleImageData() {\n+    const {\n+      _imgData: imgData\n+    } = this;\n+    const {\n+      data,\n+      width,\n+      height,\n+      kind\n+    } = imgData;\n+    const rgbaSize = width * height * 4;\n+    const K = Math.ceil(Math.log2(rgbaSize \u002F MAX_INT_32));\n+    const newWidth = width >> K;\n+    const newHeight = height >> K;\n+    let rgbaData;\n+    let maxHeight = height;\n+    try {\n+      rgbaData = new Uint8Array(rgbaSize);\n+    } catch {\n+      let n = Math.floor(Math.log2(rgbaSize + 1));\n+      while (true) {\n+        try {\n+          rgbaData = new Uint8Array(2 ** n - 1);\n+          break;\n+        } catch {\n+          n -= 1;\n         }\n-      } else {\n-        rgbBuf = new Uint8Array(count * 3);\n-        let rgbPos = 0;\n-        for (let i = 0; i \u003C count; ++i) {\n-          const key = comps[i] * 3;\n-          rgbBuf[rgbPos++] = colorMap[key];\n-          rgbBuf[rgbPos++] = colorMap[key + 1];\n-          rgbBuf[rgbPos++] = colorMap[key + 2];\n+      }\n+      maxHeight = Math.floor((2 ** n - 1) \u002F (width * 4));\n+      const newSize = width * maxHeight * 4;\n+      if (newSize \u003C rgbaData.length) {\n+        rgbaData = new Uint8Array(newSize);\n+      }\n+    }\n+    const src32 = new Uint32Array(rgbaData.buffer);\n+    const dest32 = new Uint32Array(newWidth * newHeight);\n+    let srcPos = 0;\n+    let newIndex = 0;\n+    const step = Math.ceil(height \u002F maxHeight);\n+    const remainder = height % maxHeight === 0 ? height : height % maxHeight;\n+    for (let k = 0; k \u003C step; k++) {\n+      const h = k \u003C step - 1 ? maxHeight : remainder;\n+      ({\n+        srcPos\n+      } = convertToRGBA({\n+        kind,\n+        src: data,\n+        dest: src32,\n+        width,\n+        height: h,\n+        inverseDecode: this._isMask,\n+        srcPos\n+      }));\n+      for (let i = 0, ii = h >> K; i \u003C ii; i++) {\n+        const buf = src32.subarray((i \u003C\u003C K) * width);\n+        for (let j = 0; j \u003C newWidth; j++) {\n+          dest32[newIndex++] = buf[j \u003C\u003C K];\n         }\n       }\n-    } else if (!needsResizing) {\n-      this.getRgbBuffer(comps, 0, width * actualHeight, dest, 0, bpc, alpha01);\n-    } else {\n-      rgbBuf = new Uint8ClampedArray(count * 3);\n-      this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, 0);\n     }\n-    if (rgbBuf) {\n-      if (needsResizing) {\n-        resizeRgbImage(rgbBuf, dest, originalWidth, originalHeight, width, height, alpha01);\n-      } else {\n-        let destPos = 0,\n-          rgbPos = 0;\n-        for (let i = 0, ii = width * actualHeight; i \u003C ii; i++) {\n-          dest[destPos++] = rgbBuf[rgbPos++];\n-          dest[destPos++] = rgbBuf[rgbPos++];\n-          dest[destPos++] = rgbBuf[rgbPos++];\n-          destPos += alpha01;\n+    if (ImageResizer.needsToBeResized(newWidth, newHeight)) {\n+      imgData.data = dest32;\n+      imgData.width = newWidth;\n+      imgData.height = newHeight;\n+      imgData.kind = ImageKind.RGBA_32BPP;\n+      return null;\n+    }\n+    const canvas = new OffscreenCanvas(newWidth, newHeight);\n+    const ctx = canvas.getContext(\"2d\", {\n+      willReadFrequently: true\n+    });\n+    ctx.putImageData(new ImageData(new Uint8ClampedArray(dest32.buffer), newWidth, newHeight), 0, 0);\n+    imgData.data = null;\n+    imgData.bitmap = canvas.transferToImageBitmap();\n+    imgData.width = newWidth;\n+    imgData.height = newHeight;\n+    return imgData;\n+  }\n+  _encodeBMP() {\n+    const {\n+      width,\n+      height,\n+      kind\n+    } = this._imgData;\n+    let data = this._imgData.data;\n+    let bitPerPixel;\n+    let colorTable = new Uint8Array(0);\n+    let maskTable = colorTable;\n+    let compression = 0;\n+    switch (kind) {\n+      case ImageKind.GRAYSCALE_1BPP:\n+        {\n+          bitPerPixel = 1;\n+          colorTable = new Uint8Array(this._isMask ? [255, 255, 255, 255, 0, 0, 0, 0] : [0, 0, 0, 0, 255, 255, 255, 255]);\n+          const rowLen = width + 7 >> 3;\n+          const rowSize = rowLen + 3 & -4;\n+          if (rowLen !== rowSize) {\n+            const newData = new Uint8Array(rowSize * height);\n+            let k = 0;\n+            for (let i = 0, ii = height * rowLen; i \u003C ii; i += rowLen, k += rowSize) {\n+              newData.set(data.subarray(i, i + rowLen), k);\n+            }\n+            data = newData;\n+          }\n+          break;\n+        }\n+      case ImageKind.RGB_24BPP:\n+        {\n+          bitPerPixel = 24;\n+          if (width & 3) {\n+            const rowLen = 3 * width;\n+            const rowSize = rowLen + 3 & -4;\n+            const extraLen = rowSize - rowLen;\n+            const newData = new Uint8Array(rowSize * height);\n+            let k = 0;\n+            for (let i = 0, ii = height * rowLen; i \u003C ii; i += rowLen) {\n+              const row = data.subarray(i, i + rowLen);\n+              for (let j = 0; j \u003C rowLen; j += 3) {\n+                newData[k++] = row[j + 2];\n+                newData[k++] = row[j + 1];\n+                newData[k++] = row[j];\n+              }\n+              k += extraLen;\n+            }\n+            data = newData;\n+          } else {\n+            for (let i = 0, ii = data.length; i \u003C ii; i += 3) {\n+              const tmp = data[i];\n+              data[i] = data[i + 2];\n+              data[i + 2] = tmp;\n+            }\n+          }\n+          break;\n         }\n+      case ImageKind.RGBA_32BPP:\n+        bitPerPixel = 32;\n+        compression = 3;\n+        maskTable = new Uint8Array(4 + 4 + 4 + 4 + 52);\n+        const view = new DataView(maskTable.buffer);\n+        if (FeatureTest.isLittleEndian) {\n+          view.setUint32(0, 0x000000ff, true);\n+          view.setUint32(4, 0x0000ff00, true);\n+          view.setUint32(8, 0x00ff0000, true);\n+          view.setUint32(12, 0xff000000, true);\n+        } else {\n+          view.setUint32(0, 0xff000000, true);\n+          view.setUint32(4, 0x00ff0000, true);\n+          view.setUint32(8, 0x0000ff00, true);\n+          view.setUint32(12, 0x000000ff, true);\n+        }\n+        break;\n+      default:\n+        throw new Error(\"invalid format\");\n+    }\n+    let i = 0;\n+    const headerLength = 40 + maskTable.length;\n+    const fileLength = 14 + headerLength + colorTable.length + data.length;\n+    const bmpData = new Uint8Array(fileLength);\n+    const view = new DataView(bmpData.buffer);\n+    view.setUint16(i, 0x4d42, true);\n+    i += 2;\n+    view.setUint32(i, fileLength, true);\n+    i += 4;\n+    view.setUint32(i, 0, true);\n+    i += 4;\n+    view.setUint32(i, 14 + headerLength + colorTable.length, true);\n+    i += 4;\n+    view.setUint32(i, headerLength, true);\n+    i += 4;\n+    view.setInt32(i, width, true);\n+    i += 4;\n+    view.setInt32(i, -height, true);\n+    i += 4;\n+    view.setUint16(i, 1, true);\n+    i += 2;\n+    view.setUint16(i, bitPerPixel, true);\n+    i += 2;\n+    view.setUint32(i, compression, true);\n+    i += 4;\n+    view.setUint32(i, 0, true);\n+    i += 4;\n+    view.setInt32(i, 0, true);\n+    i += 4;\n+    view.setInt32(i, 0, true);\n+    i += 4;\n+    view.setUint32(i, colorTable.length \u002F 4, true);\n+    i += 4;\n+    view.setUint32(i, 0, true);\n+    i += 4;\n+    bmpData.set(maskTable, i);\n+    i += maskTable.length;\n+    bmpData.set(colorTable, i);\n+    i += colorTable.length;\n+    bmpData.set(data, i);\n+    return bmpData;\n+  }\n+}\n+\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.filter.js\n+var es_iterator_filter = __webpack_require__(2489);\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fdecode_stream.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+const emptyBuffer = new Uint8Array(0);\n+class DecodeStream extends BaseStream {\n+  constructor(maybeMinBufferLength) {\n+    super();\n+    this._rawMinBufferLength = maybeMinBufferLength || 0;\n+    this.pos = 0;\n+    this.bufferLength = 0;\n+    this.eof = false;\n+    this.buffer = emptyBuffer;\n+    this.minBufferLength = 512;\n+    if (maybeMinBufferLength) {\n+      while (this.minBufferLength \u003C maybeMinBufferLength) {\n+        this.minBufferLength *= 2;\n       }\n     }\n   }\n-  get usesZeroToOneRange() {\n-    return shadow(this, \"usesZeroToOneRange\", true);\n+  get isEmpty() {\n+    while (!this.eof && this.bufferLength === 0) {\n+      this.readBlock();\n+    }\n+    return this.bufferLength === 0;\n   }\n-  static _cache(cacheKey, xref, localColorSpaceCache, parsedColorSpace) {\n-    if (!localColorSpaceCache) {\n-      throw new Error('ColorSpace._cache - expected \"localColorSpaceCache\" argument.');\n-    }\n-    if (!parsedColorSpace) {\n-      throw new Error('ColorSpace._cache - expected \"parsedColorSpace\" argument.');\n-    }\n-    let csName, csRef;\n-    if (cacheKey instanceof Ref) {\n-      csRef = cacheKey;\n-      cacheKey = xref.fetch(cacheKey);\n+  ensureBuffer(requested) {\n+    const buffer = this.buffer;\n+    if (requested \u003C= buffer.byteLength) {\n+      return buffer;\n     }\n-    if (cacheKey instanceof Name) {\n-      csName = cacheKey.name;\n+    let size = this.minBufferLength;\n+    while (size \u003C requested) {\n+      size *= 2;\n     }\n-    if (csName || csRef) {\n-      localColorSpaceCache.set(csName, csRef, parsedColorSpace);\n+    const buffer2 = new Uint8Array(size);\n+    buffer2.set(buffer);\n+    return this.buffer = buffer2;\n+  }\n+  getByte() {\n+    const pos = this.pos;\n+    while (this.bufferLength \u003C= pos) {\n+      if (this.eof) {\n+        return -1;\n+      }\n+      this.readBlock();\n     }\n+    return this.buffer[this.pos++];\n   }\n-  static getCached(cacheKey, xref, localColorSpaceCache) {\n-    if (!localColorSpaceCache) {\n-      throw new Error('ColorSpace.getCached - expected \"localColorSpaceCache\" argument.');\n+  getBytes(length, decoderOptions = null) {\n+    const pos = this.pos;\n+    let end;\n+    if (length) {\n+      this.ensureBuffer(pos + length);\n+      end = pos + length;\n+      while (!this.eof && this.bufferLength \u003C end) {\n+        this.readBlock(decoderOptions);\n+      }\n+      const bufEnd = this.bufferLength;\n+      if (end > bufEnd) {\n+        end = bufEnd;\n+      }\n+    } else {\n+      while (!this.eof) {\n+        this.readBlock(decoderOptions);\n+      }\n+      end = this.bufferLength;\n     }\n-    if (cacheKey instanceof Ref) {\n-      const localColorSpace = localColorSpaceCache.getByRef(cacheKey);\n-      if (localColorSpace) {\n-        return localColorSpace;\n+    this.pos = end;\n+    return this.buffer.subarray(pos, end);\n+  }\n+  async getImageData(length, decoderOptions) {\n+    if (!this.canAsyncDecodeImageFromBuffer) {\n+      if (this.isAsyncDecoder) {\n+        return this.decodeImage(null, decoderOptions);\n       }\n-      try {\n-        cacheKey = xref.fetch(cacheKey);\n-      } catch (ex) {\n-        if (ex instanceof MissingDataException) {\n-          throw ex;\n-        }\n+      return this.getBytes(length, decoderOptions);\n+    }\n+    const data = await this.stream.asyncGetBytes();\n+    return this.decodeImage(data, decoderOptions);\n+  }\n+  reset() {\n+    this.pos = 0;\n+  }\n+  makeSubStream(start, length, dict = null) {\n+    if (length === undefined) {\n+      while (!this.eof) {\n+        this.readBlock();\n+      }\n+    } else {\n+      const end = start + length;\n+      while (this.bufferLength \u003C= end && !this.eof) {\n+        this.readBlock();\n       }\n     }\n-    if (cacheKey instanceof Name) {\n-      const localColorSpace = localColorSpaceCache.getByName(cacheKey.name);\n-      if (localColorSpace) {\n-        return localColorSpace;\n+    return new Stream(this.buffer, start, length, dict);\n+  }\n+  getBaseStreams() {\n+    return this.str ? this.str.getBaseStreams() : null;\n+  }\n+}\n+class StreamsSequenceStream extends DecodeStream {\n+  constructor(streams, onError = null) {\n+    streams = streams.filter(s => s instanceof BaseStream);\n+    let maybeLength = 0;\n+    for (const stream of streams) {\n+      maybeLength += stream instanceof DecodeStream ? stream._rawMinBufferLength : stream.length;\n+    }\n+    super(maybeLength);\n+    this.streams = streams;\n+    this._onError = onError;\n+  }\n+  readBlock() {\n+    const streams = this.streams;\n+    if (streams.length === 0) {\n+      this.eof = true;\n+      return;\n+    }\n+    const stream = streams.shift();\n+    let chunk;\n+    try {\n+      chunk = stream.getBytes();\n+    } catch (reason) {\n+      if (this._onError) {\n+        this._onError(reason, stream.dict?.objId);\n+        return;\n       }\n+      throw reason;\n     }\n-    return null;\n+    const bufferLength = this.bufferLength;\n+    const newLength = bufferLength + chunk.length;\n+    const buffer = this.ensureBuffer(newLength);\n+    buffer.set(chunk, bufferLength);\n+    this.bufferLength = newLength;\n   }\n-  static async parseAsync({\n-    cs,\n-    xref,\n-    resources = null,\n-    pdfFunctionFactory,\n-    localColorSpaceCache\n-  }) {\n-    const parsedColorSpace = this._parse(cs, xref, resources, pdfFunctionFactory);\n-    this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\n-    return parsedColorSpace;\n+  getBaseStreams() {\n+    const baseStreamsBuf = [];\n+    for (const stream of this.streams) {\n+      const baseStreams = stream.getBaseStreams();\n+      if (baseStreams) {\n+        baseStreamsBuf.push(...baseStreams);\n+      }\n+    }\n+    return baseStreamsBuf.length > 0 ? baseStreamsBuf : null;\n   }\n+}\n+\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fcolorspace_utils.js\n+\n+\n+\n+\n+\n+class ColorSpaceUtils {\n   static parse({\n     cs,\n     xref,\n     resources = null,\n     pdfFunctionFactory,\n-    localColorSpaceCache\n+    globalColorSpaceCache,\n+    localColorSpaceCache,\n+    asyncIfNotCached = false\n   }) {\n-    const cachedColorSpace = this.getCached(cs, xref, localColorSpaceCache);\n-    if (cachedColorSpace) {\n-      return cachedColorSpace;\n-    }\n-    const parsedColorSpace = this._parse(cs, xref, resources, pdfFunctionFactory);\n-    this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\n-    return parsedColorSpace;\n+    const options = {\n+      xref,\n+      resources,\n+      pdfFunctionFactory,\n+      globalColorSpaceCache,\n+      localColorSpaceCache\n+    };\n+    let csName, csRef, parsedCS;\n+    if (cs instanceof Ref) {\n+      csRef = cs;\n+      const cachedCS = globalColorSpaceCache.getByRef(csRef) || localColorSpaceCache.getByRef(csRef);\n+      if (cachedCS) {\n+        return cachedCS;\n+      }\n+      cs = xref.fetch(cs);\n+    }\n+    if (cs instanceof Name) {\n+      csName = cs.name;\n+      const cachedCS = localColorSpaceCache.getByName(csName);\n+      if (cachedCS) {\n+        return cachedCS;\n+      }\n+    }\n+    try {\n+      parsedCS = this.#parse(cs, options);\n+    } catch (ex) {\n+      if (asyncIfNotCached && !(ex instanceof MissingDataException)) {\n+        return Promise.reject(ex);\n+      }\n+      throw ex;\n+    }\n+    if (csName || csRef) {\n+      localColorSpaceCache.set(csName, csRef, parsedCS);\n+      if (csRef) {\n+        globalColorSpaceCache.set(null, csRef, parsedCS);\n+      }\n+    }\n+    return asyncIfNotCached ? Promise.resolve(parsedCS) : parsedCS;\n   }\n-  static _parse(cs, xref, resources = null, pdfFunctionFactory) {\n+  static #subParse(cs, options) {\n+    const {\n+      globalColorSpaceCache\n+    } = options;\n+    let csRef;\n+    if (cs instanceof Ref) {\n+      csRef = cs;\n+      const cachedCS = globalColorSpaceCache.getByRef(csRef);\n+      if (cachedCS) {\n+        return cachedCS;\n+      }\n+    }\n+    const parsedCS = this.#parse(cs, options);\n+    if (csRef) {\n+      globalColorSpaceCache.set(null, csRef, parsedCS);\n+    }\n+    return parsedCS;\n+  }\n+  static #parse(cs, options) {\n+    const {\n+      xref,\n+      resources,\n+      pdfFunctionFactory,\n+      globalColorSpaceCache\n+    } = options;\n     cs = xref.fetchIfRef(cs);\n     if (cs instanceof Name) {\n       switch (cs.name) {\n         case \"G\":\n         case \"DeviceGray\":\n-          return this.singletons.gray;\n+          return this.gray;\n         case \"RGB\":\n         case \"DeviceRGB\":\n-          return this.singletons.rgb;\n+          return this.rgb;\n+        case \"DeviceRGBA\":\n+          return this.rgba;\n         case \"CMYK\":\n         case \"DeviceCMYK\":\n-          return this.singletons.cmyk;\n+          return this.cmyk;\n         case \"Pattern\":\n           return new PatternCS(null);\n         default:\n@@ -2250,14 +9123,15 @@\n               const resourcesCS = colorSpaces.get(cs.name);\n               if (resourcesCS) {\n                 if (resourcesCS instanceof Name) {\n-                  return this._parse(resourcesCS, xref, resources, pdfFunctionFactory);\n+                  return this.#parse(resourcesCS, options);\n                 }\n                 cs = resourcesCS;\n                 break;\n               }\n             }\n           }\n-          throw new FormatError(`Unrecognized ColorSpace: ${cs.name}`);\n+          warn(`Unrecognized ColorSpace: ${cs.name}`);\n+          return this.gray;\n       }\n     }\n     if (Array.isArray(cs)) {\n@@ -2266,13 +9140,13 @@\n       switch (mode) {\n         case \"G\":\n         case \"DeviceGray\":\n-          return this.singletons.gray;\n+          return this.gray;\n         case \"RGB\":\n         case \"DeviceRGB\":\n-          return this.singletons.rgb;\n+          return this.rgb;\n         case \"CMYK\":\n         case \"DeviceCMYK\":\n-          return this.singletons.cmyk;\n+          return this.cmyk;\n         case \"CalGray\":\n           params = xref.fetchIfRef(cs[1]);\n           whitePoint = params.getArray(\"WhitePoint\");\n@@ -2287,42 +9161,63 @@\n           const matrix = params.getArray(\"Matrix\");\n           return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);\n         case \"ICCBased\":\n+          const isRef = cs[1] instanceof Ref;\n+          if (isRef) {\n+            const cachedCS = globalColorSpaceCache.getByRef(cs[1]);\n+            if (cachedCS) {\n+              return cachedCS;\n+            }\n+          }\n           const stream = xref.fetchIfRef(cs[1]);\n           const dict = stream.dict;\n           numComps = dict.get(\"N\");\n-          const alt = dict.get(\"Alternate\");\n-          if (alt) {\n-            const altCS = this._parse(alt, xref, resources, pdfFunctionFactory);\n+          if (IccColorSpace.isUsable) {\n+            try {\n+              const iccCS = new IccColorSpace(stream.getBytes(), \"ICCBased\", numComps);\n+              if (isRef) {\n+                globalColorSpaceCache.set(null, cs[1], iccCS);\n+              }\n+              return iccCS;\n+            } catch (ex) {\n+              if (ex instanceof MissingDataException) {\n+                throw ex;\n+              }\n+              warn(`ICCBased color space (${cs[1]}): \"${ex}\".`);\n+            }\n+          }\n+          const altRaw = dict.getRaw(\"Alternate\");\n+          if (altRaw) {\n+            const altCS = this.#subParse(altRaw, options);\n             if (altCS.numComps === numComps) {\n               return altCS;\n             }\n             warn(\"ICCBased color space: Ignoring incorrect \u002FAlternate entry.\");\n           }\n           if (numComps === 1) {\n-            return this.singletons.gray;\n+            return this.gray;\n           } else if (numComps === 3) {\n-            return this.singletons.rgb;\n+            return this.rgb;\n           } else if (numComps === 4) {\n-            return this.singletons.cmyk;\n+            return this.cmyk;\n           }\n           break;\n         case \"Pattern\":\n           baseCS = cs[1] || null;\n           if (baseCS) {\n-            baseCS = this._parse(baseCS, xref, resources, pdfFunctionFactory);\n+            baseCS = this.#subParse(baseCS, options);\n           }\n           return new PatternCS(baseCS);\n         case \"I\":\n         case \"Indexed\":\n-          baseCS = this._parse(cs[1], xref, resources, pdfFunctionFactory);\n-          const hiVal = xref.fetchIfRef(cs[2]) + 1;\n+          baseCS = this.#subParse(cs[1], options);\n+          const hiVal = MathClamp(xref.fetchIfRef(cs[2]), 0, 255);\n           const lookup = xref.fetchIfRef(cs[3]);\n           return new IndexedCS(baseCS, hiVal, lookup);\n         case \"Separation\":\n         case \"DeviceN\":\n           const name = xref.fetchIfRef(cs[1]);\n           numComps = Array.isArray(name) ? name.length : 1;\n-          baseCS = this._parse(cs[2], xref, resources, pdfFunctionFactory);\n+          baseCS = this.#subParse(cs[2], options);\n           const tintFn = pdfFunctionFactory.create(cs[3]);\n           return new AlternateCS(numComps, baseCS, tintFn);\n         case \"Lab\":\n@@ -2332,525 +9227,2646 @@\n           const range = params.getArray(\"Range\");\n           return new LabCS(whitePoint, blackPoint, range);\n         default:\n-          throw new FormatError(`Unimplemented ColorSpace object: ${mode}`);\n+          warn(`Unimplemented ColorSpace object: ${mode}`);\n+          return this.gray;\n       }\n     }\n-    throw new FormatError(`Unrecognized ColorSpace object: ${cs}`);\n+    warn(`Unrecognized ColorSpace object: ${cs}`);\n+    return this.gray;\n   }\n-  static isDefaultDecode(decode, numComps) {\n-    if (!Array.isArray(decode)) {\n-      return true;\n+  static get gray() {\n+    return shadow(this, \"gray\", new DeviceGrayCS());\n+  }\n+  static get rgb() {\n+    return shadow(this, \"rgb\", new DeviceRgbCS());\n+  }\n+  static get rgba() {\n+    return shadow(this, \"rgba\", new DeviceRgbaCS());\n+  }\n+  static get cmyk() {\n+    if (CmykICCBasedCS.isUsable) {\n+      try {\n+        return shadow(this, \"cmyk\", new CmykICCBasedCS());\n+      } catch {\n+        warn(\"CMYK fallback: DeviceCMYK\");\n+      }\n     }\n-    if (numComps * 2 !== decode.length) {\n-      warn(\"The decode map is not the correct length\");\n-      return true;\n+    return shadow(this, \"cmyk\", new DeviceCmykCS());\n+  }\n+}\n+\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fjpg.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+class JpegError extends BaseException {\n+  constructor(msg) {\n+    super(msg, \"JpegError\");\n+  }\n+}\n+class DNLMarkerError extends BaseException {\n+  constructor(message, scanLines) {\n+    super(message, \"DNLMarkerError\");\n+    this.scanLines = scanLines;\n+  }\n+}\n+class EOIMarkerError extends BaseException {\n+  constructor(msg) {\n+    super(msg, \"EOIMarkerError\");\n+  }\n+}\n+const dctZigZag = new Uint8Array([0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63]);\n+const dctCos1 = 4017;\n+const dctSin1 = 799;\n+const dctCos3 = 3406;\n+const dctSin3 = 2276;\n+const dctCos6 = 1567;\n+const dctSin6 = 3784;\n+const dctSqrt2 = 5793;\n+const dctSqrt1d2 = 2896;\n+function buildHuffmanTable(codeLengths, values) {\n+  let k = 0,\n+    i,\n+    j,\n+    length = 16;\n+  while (length > 0 && !codeLengths[length - 1]) {\n+    length--;\n+  }\n+  const code = [{\n+    children: [],\n+    index: 0\n+  }];\n+  let p = code[0],\n+    q;\n+  for (i = 0; i \u003C length; i++) {\n+    for (j = 0; j \u003C codeLengths[i]; j++) {\n+      p = code.pop();\n+      p.children[p.index] = values[k];\n+      while (p.index > 0) {\n+        p = code.pop();\n+      }\n+      p.index++;\n+      code.push(p);\n+      while (code.length \u003C= i) {\n+        code.push(q = {\n+          children: [],\n+          index: 0\n+        });\n+        p.children[p.index] = q.children;\n+        p = q;\n+      }\n+      k++;\n     }\n-    for (let i = 0, ii = decode.length; i \u003C ii; i += 2) {\n-      if (decode[i] !== 0 || decode[i + 1] !== 1) {\n-        return false;\n+    if (i + 1 \u003C length) {\n+      code.push(q = {\n+        children: [],\n+        index: 0\n+      });\n+      p.children[p.index] = q.children;\n+      p = q;\n+    }\n+  }\n+  return code[0].children;\n+}\n+function getBlockBufferOffset(component, row, col) {\n+  return 64 * ((component.blocksPerLine + 1) * row + col);\n+}\n+function decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successivePrev, successive, parseDNLMarker = false) {\n+  const mcusPerLine = frame.mcusPerLine;\n+  const progressive = frame.progressive;\n+  const startOffset = offset;\n+  let bitsData = 0,\n+    bitsCount = 0;\n+  function readBit() {\n+    if (bitsCount > 0) {\n+      bitsCount--;\n+      return bitsData >> bitsCount & 1;\n+    }\n+    bitsData = data[offset++];\n+    if (bitsData === 0xff) {\n+      const nextByte = data[offset++];\n+      if (nextByte) {\n+        if (nextByte === 0xdc && parseDNLMarker) {\n+          offset += 2;\n+          const scanLines = readUint16(data, offset);\n+          offset += 2;\n+          if (scanLines > 0 && scanLines !== frame.scanLines) {\n+            throw new DNLMarkerError(\"Found DNL marker (0xFFDC) while parsing scan data\", scanLines);\n+          }\n+        } else if (nextByte === 0xd9) {\n+          if (parseDNLMarker) {\n+            const maybeScanLines = blockRow * (frame.precision === 8 ? 8 : 0);\n+            if (maybeScanLines > 0 && Math.round(frame.scanLines \u002F maybeScanLines) >= 5) {\n+              throw new DNLMarkerError(\"Found EOI marker (0xFFD9) while parsing scan data, \" + \"possibly caused by incorrect `scanLines` parameter\", maybeScanLines);\n+            }\n+          }\n+          throw new EOIMarkerError(\"Found EOI marker (0xFFD9) while parsing scan data\");\n+        }\n+        throw new JpegError(`unexpected marker ${(bitsData \u003C\u003C 8 | nextByte).toString(16)}`);\n       }\n     }\n-    return true;\n+    bitsCount = 7;\n+    return bitsData >>> 7;\n   }\n-  static get singletons() {\n-    return shadow(this, \"singletons\", {\n-      get gray() {\n-        return shadow(this, \"gray\", new DeviceGrayCS());\n-      },\n-      get rgb() {\n-        return shadow(this, \"rgb\", new DeviceRgbCS());\n-      },\n-      get cmyk() {\n-        return shadow(this, \"cmyk\", new DeviceCmykCS());\n+  function decodeHuffman(tree) {\n+    let node = tree;\n+    while (true) {\n+      node = node[readBit()];\n+      switch (typeof node) {\n+        case \"number\":\n+          return node;\n+        case \"object\":\n+          continue;\n       }\n-    });\n+      throw new JpegError(\"invalid huffman sequence\");\n+    }\n   }\n-}\n-class AlternateCS extends ColorSpace {\n-  constructor(numComps, base, tintFn) {\n-    super(\"Alternate\", numComps);\n-    this.base = base;\n-    this.tintFn = tintFn;\n-    this.tmpBuf = new Float32Array(base.numComps);\n+  function receive(length) {\n+    let n = 0;\n+    while (length > 0) {\n+      n = n \u003C\u003C 1 | readBit();\n+      length--;\n+    }\n+    return n;\n   }\n-  getRgbItem(src, srcOffset, dest, destOffset) {\n-    const tmpBuf = this.tmpBuf;\n-    this.tintFn(src, srcOffset, tmpBuf, 0);\n-    this.base.getRgbItem(tmpBuf, 0, dest, destOffset);\n+  function receiveAndExtend(length) {\n+    if (length === 1) {\n+      return readBit() === 1 ? 1 : -1;\n+    }\n+    const n = receive(length);\n+    if (n >= 1 \u003C\u003C length - 1) {\n+      return n;\n+    }\n+    return n + (-1 \u003C\u003C length) + 1;\n   }\n-  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n-    const tintFn = this.tintFn;\n-    const base = this.base;\n-    const scale = 1 \u002F ((1 \u003C\u003C bits) - 1);\n-    const baseNumComps = base.numComps;\n-    const usesZeroToOneRange = base.usesZeroToOneRange;\n-    const isPassthrough = (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0;\n-    let pos = isPassthrough ? destOffset : 0;\n-    const baseBuf = isPassthrough ? dest : new Uint8ClampedArray(baseNumComps * count);\n-    const numComps = this.numComps;\n-    const scaled = new Float32Array(numComps);\n-    const tinted = new Float32Array(baseNumComps);\n-    let i, j;\n-    for (i = 0; i \u003C count; i++) {\n-      for (j = 0; j \u003C numComps; j++) {\n-        scaled[j] = src[srcOffset++] * scale;\n+  function decodeBaseline(component, blockOffset) {\n+    const t = decodeHuffman(component.huffmanTableDC);\n+    const diff = t === 0 ? 0 : receiveAndExtend(t);\n+    component.blockData[blockOffset] = component.pred += diff;\n+    let k = 1;\n+    while (k \u003C 64) {\n+      const rs = decodeHuffman(component.huffmanTableAC);\n+      const s = rs & 15,\n+        r = rs >> 4;\n+      if (s === 0) {\n+        if (r \u003C 15) {\n+          break;\n+        }\n+        k += 16;\n+        continue;\n       }\n-      tintFn(scaled, 0, tinted, 0);\n-      if (usesZeroToOneRange) {\n-        for (j = 0; j \u003C baseNumComps; j++) {\n-          baseBuf[pos++] = tinted[j] * 255;\n+      k += r;\n+      const z = dctZigZag[k];\n+      component.blockData[blockOffset + z] = receiveAndExtend(s);\n+      k++;\n+    }\n+  }\n+  function decodeDCFirst(component, blockOffset) {\n+    const t = decodeHuffman(component.huffmanTableDC);\n+    const diff = t === 0 ? 0 : receiveAndExtend(t) \u003C\u003C successive;\n+    component.blockData[blockOffset] = component.pred += diff;\n+  }\n+  function decodeDCSuccessive(component, blockOffset) {\n+    component.blockData[blockOffset] |= readBit() \u003C\u003C successive;\n+  }\n+  let eobrun = 0;\n+  function decodeACFirst(component, blockOffset) {\n+    if (eobrun > 0) {\n+      eobrun--;\n+      return;\n+    }\n+    let k = spectralStart;\n+    const e = spectralEnd;\n+    while (k \u003C= e) {\n+      const rs = decodeHuffman(component.huffmanTableAC);\n+      const s = rs & 15,\n+        r = rs >> 4;\n+      if (s === 0) {\n+        if (r \u003C 15) {\n+          eobrun = receive(r) + (1 \u003C\u003C r) - 1;\n+          break;\n         }\n-      } else {\n-        base.getRgbItem(tinted, 0, baseBuf, pos);\n-        pos += baseNumComps;\n+        k += 16;\n+        continue;\n       }\n+      k += r;\n+      const z = dctZigZag[k];\n+      component.blockData[blockOffset + z] = receiveAndExtend(s) * (1 \u003C\u003C successive);\n+      k++;\n     }\n-    if (!isPassthrough) {\n-      base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);\n+  }\n+  let successiveACState = 0,\n+    successiveACNextValue;\n+  function decodeACSuccessive(component, blockOffset) {\n+    let k = spectralStart;\n+    const e = spectralEnd;\n+    let r = 0;\n+    let s;\n+    let rs;\n+    while (k \u003C= e) {\n+      const offsetZ = blockOffset + dctZigZag[k];\n+      const sign = component.blockData[offsetZ] \u003C 0 ? -1 : 1;\n+      switch (successiveACState) {\n+        case 0:\n+          rs = decodeHuffman(component.huffmanTableAC);\n+          s = rs & 15;\n+          r = rs >> 4;\n+          if (s === 0) {\n+            if (r \u003C 15) {\n+              eobrun = receive(r) + (1 \u003C\u003C r);\n+              successiveACState = 4;\n+            } else {\n+              r = 16;\n+              successiveACState = 1;\n+            }\n+          } else {\n+            if (s !== 1) {\n+              throw new JpegError(\"invalid ACn encoding\");\n+            }\n+            successiveACNextValue = receiveAndExtend(s);\n+            successiveACState = r ? 2 : 3;\n+          }\n+          continue;\n+        case 1:\n+        case 2:\n+          if (component.blockData[offsetZ]) {\n+            component.blockData[offsetZ] += sign * (readBit() \u003C\u003C successive);\n+          } else {\n+            r--;\n+            if (r === 0) {\n+              successiveACState = successiveACState === 2 ? 3 : 0;\n+            }\n+          }\n+          break;\n+        case 3:\n+          if (component.blockData[offsetZ]) {\n+            component.blockData[offsetZ] += sign * (readBit() \u003C\u003C successive);\n+          } else {\n+            component.blockData[offsetZ] = successiveACNextValue \u003C\u003C successive;\n+            successiveACState = 0;\n+          }\n+          break;\n+        case 4:\n+          if (component.blockData[offsetZ]) {\n+            component.blockData[offsetZ] += sign * (readBit() \u003C\u003C successive);\n+          }\n+          break;\n+      }\n+      k++;\n+    }\n+    if (successiveACState === 4) {\n+      eobrun--;\n+      if (eobrun === 0) {\n+        successiveACState = 0;\n+      }\n     }\n   }\n-  getOutputLength(inputLength, alpha01) {\n-    return this.base.getOutputLength(inputLength * this.base.numComps \u002F this.numComps, alpha01);\n+  let blockRow = 0;\n+  function decodeMcu(component, decode, mcu, row, col) {\n+    const mcuRow = mcu \u002F mcusPerLine | 0;\n+    const mcuCol = mcu % mcusPerLine;\n+    blockRow = mcuRow * component.v + row;\n+    const blockCol = mcuCol * component.h + col;\n+    const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n+    decode(component, blockOffset);\n   }\n-}\n-class PatternCS extends ColorSpace {\n-  constructor(baseCS) {\n-    super(\"Pattern\", null);\n-    this.base = baseCS;\n+  function decodeBlock(component, decode, mcu) {\n+    blockRow = mcu \u002F component.blocksPerLine | 0;\n+    const blockCol = mcu % component.blocksPerLine;\n+    const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n+    decode(component, blockOffset);\n   }\n-  isDefaultDecode(decodeMap, bpc) {\n-    unreachable(\"Should not call PatternCS.isDefaultDecode\");\n+  const componentsLength = components.length;\n+  let component, i, j, k, n;\n+  let decodeFn;\n+  if (progressive) {\n+    if (spectralStart === 0) {\n+      decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n+    } else {\n+      decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n+    }\n+  } else {\n+    decodeFn = decodeBaseline;\n   }\n-}\n-class IndexedCS extends ColorSpace {\n-  constructor(base, highVal, lookup) {\n-    super(\"Indexed\", 1);\n-    this.base = base;\n-    this.highVal = highVal;\n-    const length = base.numComps * highVal;\n-    this.lookup = new Uint8Array(length);\n-    if (lookup instanceof BaseStream) {\n-      const bytes = lookup.getBytes(length);\n-      this.lookup.set(bytes);\n-    } else if (typeof lookup === \"string\") {\n-      for (let i = 0; i \u003C length; ++i) {\n-        this.lookup[i] = lookup.charCodeAt(i) & 0xff;\n+  let mcu = 0,\n+    fileMarker;\n+  const mcuExpected = componentsLength === 1 ? components[0].blocksPerLine * components[0].blocksPerColumn : mcusPerLine * frame.mcusPerColumn;\n+  let h, v;\n+  while (mcu \u003C= mcuExpected) {\n+    const mcuToRead = resetInterval ? Math.min(mcuExpected - mcu, resetInterval) : mcuExpected;\n+    if (mcuToRead > 0) {\n+      for (i = 0; i \u003C componentsLength; i++) {\n+        components[i].pred = 0;\n+      }\n+      eobrun = 0;\n+      if (componentsLength === 1) {\n+        component = components[0];\n+        for (n = 0; n \u003C mcuToRead; n++) {\n+          decodeBlock(component, decodeFn, mcu);\n+          mcu++;\n+        }\n+      } else {\n+        for (n = 0; n \u003C mcuToRead; n++) {\n+          for (i = 0; i \u003C componentsLength; i++) {\n+            component = components[i];\n+            h = component.h;\n+            v = component.v;\n+            for (j = 0; j \u003C v; j++) {\n+              for (k = 0; k \u003C h; k++) {\n+                decodeMcu(component, decodeFn, mcu, j, k);\n+              }\n+            }\n+          }\n+          mcu++;\n+        }\n       }\n+    }\n+    bitsCount = 0;\n+    fileMarker = findNextFileMarker(data, offset);\n+    if (!fileMarker) {\n+      break;\n+    }\n+    if (fileMarker.invalid) {\n+      const partialMsg = mcuToRead > 0 ? \"unexpected\" : \"excessive\";\n+      warn(`decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`);\n+      offset = fileMarker.offset;\n+    }\n+    if (fileMarker.marker >= 0xffd0 && fileMarker.marker \u003C= 0xffd7) {\n+      offset += 2;\n     } else {\n-      throw new FormatError(`IndexedCS - unrecognized lookup table: ${lookup}`);\n+      break;\n     }\n   }\n-  getRgbItem(src, srcOffset, dest, destOffset) {\n-    const numComps = this.base.numComps;\n-    const start = src[srcOffset] * numComps;\n-    this.base.getRgbBuffer(this.lookup, start, 1, dest, destOffset, 8, 0);\n+  return offset - startOffset;\n+}\n+function quantizeAndInverse(component, blockBufferOffset, p) {\n+  const qt = component.quantizationTable,\n+    blockData = component.blockData;\n+  let v0, v1, v2, v3, v4, v5, v6, v7;\n+  let p0, p1, p2, p3, p4, p5, p6, p7;\n+  let t;\n+  if (!qt) {\n+    throw new JpegError(\"missing required Quantization Table.\");\n   }\n-  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n-    const base = this.base;\n-    const numComps = base.numComps;\n-    const outputDelta = base.getOutputLength(numComps, alpha01);\n-    const lookup = this.lookup;\n-    for (let i = 0; i \u003C count; ++i) {\n-      const lookupPos = src[srcOffset++] * numComps;\n-      base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01);\n-      destOffset += outputDelta;\n+  for (let row = 0; row \u003C 64; row += 8) {\n+    p0 = blockData[blockBufferOffset + row];\n+    p1 = blockData[blockBufferOffset + row + 1];\n+    p2 = blockData[blockBufferOffset + row + 2];\n+    p3 = blockData[blockBufferOffset + row + 3];\n+    p4 = blockData[blockBufferOffset + row + 4];\n+    p5 = blockData[blockBufferOffset + row + 5];\n+    p6 = blockData[blockBufferOffset + row + 6];\n+    p7 = blockData[blockBufferOffset + row + 7];\n+    p0 *= qt[row];\n+    if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n+      t = dctSqrt2 * p0 + 512 >> 10;\n+      p[row] = t;\n+      p[row + 1] = t;\n+      p[row + 2] = t;\n+      p[row + 3] = t;\n+      p[row + 4] = t;\n+      p[row + 5] = t;\n+      p[row + 6] = t;\n+      p[row + 7] = t;\n+      continue;\n     }\n+    p1 *= qt[row + 1];\n+    p2 *= qt[row + 2];\n+    p3 *= qt[row + 3];\n+    p4 *= qt[row + 4];\n+    p5 *= qt[row + 5];\n+    p6 *= qt[row + 6];\n+    p7 *= qt[row + 7];\n+    v0 = dctSqrt2 * p0 + 128 >> 8;\n+    v1 = dctSqrt2 * p4 + 128 >> 8;\n+    v2 = p2;\n+    v3 = p6;\n+    v4 = dctSqrt1d2 * (p1 - p7) + 128 >> 8;\n+    v7 = dctSqrt1d2 * (p1 + p7) + 128 >> 8;\n+    v5 = p3 \u003C\u003C 4;\n+    v6 = p5 \u003C\u003C 4;\n+    v0 = v0 + v1 + 1 >> 1;\n+    v1 = v0 - v1;\n+    t = v2 * dctSin6 + v3 * dctCos6 + 128 >> 8;\n+    v2 = v2 * dctCos6 - v3 * dctSin6 + 128 >> 8;\n+    v3 = t;\n+    v4 = v4 + v6 + 1 >> 1;\n+    v6 = v4 - v6;\n+    v7 = v7 + v5 + 1 >> 1;\n+    v5 = v7 - v5;\n+    v0 = v0 + v3 + 1 >> 1;\n+    v3 = v0 - v3;\n+    v1 = v1 + v2 + 1 >> 1;\n+    v2 = v1 - v2;\n+    t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12;\n+    v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12;\n+    v7 = t;\n+    t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12;\n+    v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12;\n+    v6 = t;\n+    p[row] = v0 + v7;\n+    p[row + 7] = v0 - v7;\n+    p[row + 1] = v1 + v6;\n+    p[row + 6] = v1 - v6;\n+    p[row + 2] = v2 + v5;\n+    p[row + 5] = v2 - v5;\n+    p[row + 3] = v3 + v4;\n+    p[row + 4] = v3 - v4;\n   }\n-  getOutputLength(inputLength, alpha01) {\n-    return this.base.getOutputLength(inputLength * this.base.numComps, alpha01);\n-  }\n-  isDefaultDecode(decodeMap, bpc) {\n-    if (!Array.isArray(decodeMap)) {\n-      return true;\n+  for (let col = 0; col \u003C 8; ++col) {\n+    p0 = p[col];\n+    p1 = p[col + 8];\n+    p2 = p[col + 16];\n+    p3 = p[col + 24];\n+    p4 = p[col + 32];\n+    p5 = p[col + 40];\n+    p6 = p[col + 48];\n+    p7 = p[col + 56];\n+    if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n+      t = dctSqrt2 * p0 + 8192 >> 14;\n+      if (t \u003C -2040) {\n+        t = 0;\n+      } else if (t >= 2024) {\n+        t = 255;\n+      } else {\n+        t = t + 2056 >> 4;\n+      }\n+      blockData[blockBufferOffset + col] = t;\n+      blockData[blockBufferOffset + col + 8] = t;\n+      blockData[blockBufferOffset + col + 16] = t;\n+      blockData[blockBufferOffset + col + 24] = t;\n+      blockData[blockBufferOffset + col + 32] = t;\n+      blockData[blockBufferOffset + col + 40] = t;\n+      blockData[blockBufferOffset + col + 48] = t;\n+      blockData[blockBufferOffset + col + 56] = t;\n+      continue;\n     }\n-    if (decodeMap.length !== 2) {\n-      warn(\"Decode map length is not correct\");\n-      return true;\n+    v0 = dctSqrt2 * p0 + 2048 >> 12;\n+    v1 = dctSqrt2 * p4 + 2048 >> 12;\n+    v2 = p2;\n+    v3 = p6;\n+    v4 = dctSqrt1d2 * (p1 - p7) + 2048 >> 12;\n+    v7 = dctSqrt1d2 * (p1 + p7) + 2048 >> 12;\n+    v5 = p3;\n+    v6 = p5;\n+    v0 = (v0 + v1 + 1 >> 1) + 4112;\n+    v1 = v0 - v1;\n+    t = v2 * dctSin6 + v3 * dctCos6 + 2048 >> 12;\n+    v2 = v2 * dctCos6 - v3 * dctSin6 + 2048 >> 12;\n+    v3 = t;\n+    v4 = v4 + v6 + 1 >> 1;\n+    v6 = v4 - v6;\n+    v7 = v7 + v5 + 1 >> 1;\n+    v5 = v7 - v5;\n+    v0 = v0 + v3 + 1 >> 1;\n+    v3 = v0 - v3;\n+    v1 = v1 + v2 + 1 >> 1;\n+    v2 = v1 - v2;\n+    t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12;\n+    v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12;\n+    v7 = t;\n+    t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12;\n+    v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12;\n+    v6 = t;\n+    p0 = v0 + v7;\n+    p7 = v0 - v7;\n+    p1 = v1 + v6;\n+    p6 = v1 - v6;\n+    p2 = v2 + v5;\n+    p5 = v2 - v5;\n+    p3 = v3 + v4;\n+    p4 = v3 - v4;\n+    if (p0 \u003C 16) {\n+      p0 = 0;\n+    } else if (p0 >= 4080) {\n+      p0 = 255;\n+    } else {\n+      p0 >>= 4;\n     }\n-    if (!Number.isInteger(bpc) || bpc \u003C 1) {\n-      warn(\"Bits per component is not correct\");\n-      return true;\n+    if (p1 \u003C 16) {\n+      p1 = 0;\n+    } else if (p1 >= 4080) {\n+      p1 = 255;\n+    } else {\n+      p1 >>= 4;\n     }\n-    return decodeMap[0] === 0 && decodeMap[1] === (1 \u003C\u003C bpc) - 1;\n+    if (p2 \u003C 16) {\n+      p2 = 0;\n+    } else if (p2 >= 4080) {\n+      p2 = 255;\n+    } else {\n+      p2 >>= 4;\n+    }\n+    if (p3 \u003C 16) {\n+      p3 = 0;\n+    } else if (p3 >= 4080) {\n+      p3 = 255;\n+    } else {\n+      p3 >>= 4;\n+    }\n+    if (p4 \u003C 16) {\n+      p4 = 0;\n+    } else if (p4 >= 4080) {\n+      p4 = 255;\n+    } else {\n+      p4 >>= 4;\n+    }\n+    if (p5 \u003C 16) {\n+      p5 = 0;\n+    } else if (p5 >= 4080) {\n+      p5 = 255;\n+    } else {\n+      p5 >>= 4;\n+    }\n+    if (p6 \u003C 16) {\n+      p6 = 0;\n+    } else if (p6 >= 4080) {\n+      p6 = 255;\n+    } else {\n+      p6 >>= 4;\n+    }\n+    if (p7 \u003C 16) {\n+      p7 = 0;\n+    } else if (p7 >= 4080) {\n+      p7 = 255;\n+    } else {\n+      p7 >>= 4;\n+    }\n+    blockData[blockBufferOffset + col] = p0;\n+    blockData[blockBufferOffset + col + 8] = p1;\n+    blockData[blockBufferOffset + col + 16] = p2;\n+    blockData[blockBufferOffset + col + 24] = p3;\n+    blockData[blockBufferOffset + col + 32] = p4;\n+    blockData[blockBufferOffset + col + 40] = p5;\n+    blockData[blockBufferOffset + col + 48] = p6;\n+    blockData[blockBufferOffset + col + 56] = p7;\n   }\n }\n-class DeviceGrayCS extends ColorSpace {\n-  constructor() {\n-    super(\"DeviceGray\", 1);\n+function buildComponentData(frame, component) {\n+  const blocksPerLine = component.blocksPerLine;\n+  const blocksPerColumn = component.blocksPerColumn;\n+  const computationBuffer = new Int16Array(64);\n+  for (let blockRow = 0; blockRow \u003C blocksPerColumn; blockRow++) {\n+    for (let blockCol = 0; blockCol \u003C blocksPerLine; blockCol++) {\n+      const offset = getBlockBufferOffset(component, blockRow, blockCol);\n+      quantizeAndInverse(component, offset, computationBuffer);\n+    }\n   }\n-  getRgbItem(src, srcOffset, dest, destOffset) {\n-    const c = src[srcOffset] * 255;\n-    dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;\n+  return component.blockData;\n+}\n+function findNextFileMarker(data, currentPos, startPos = currentPos) {\n+  const maxPos = data.length - 1;\n+  let newPos = startPos \u003C currentPos ? startPos : currentPos;\n+  if (currentPos >= maxPos) {\n+    return null;\n   }\n-  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n-    const scale = 255 \u002F ((1 \u003C\u003C bits) - 1);\n-    let j = srcOffset,\n-      q = destOffset;\n-    for (let i = 0; i \u003C count; ++i) {\n-      const c = scale * src[j++];\n-      dest[q++] = c;\n-      dest[q++] = c;\n-      dest[q++] = c;\n-      q += alpha01;\n+  const currentMarker = readUint16(data, currentPos);\n+  if (currentMarker >= 0xffc0 && currentMarker \u003C= 0xfffe) {\n+    return {\n+      invalid: null,\n+      marker: currentMarker,\n+      offset: currentPos\n+    };\n+  }\n+  let newMarker = readUint16(data, newPos);\n+  while (!(newMarker >= 0xffc0 && newMarker \u003C= 0xfffe)) {\n+    if (++newPos >= maxPos) {\n+      return null;\n     }\n+    newMarker = readUint16(data, newPos);\n   }\n-  getOutputLength(inputLength, alpha01) {\n-    return inputLength * (3 + alpha01);\n+  return {\n+    invalid: currentMarker.toString(16),\n+    marker: newMarker,\n+    offset: newPos\n+  };\n+}\n+function prepareComponents(frame) {\n+  const mcusPerLine = Math.ceil(frame.samplesPerLine \u002F 8 \u002F frame.maxH);\n+  const mcusPerColumn = Math.ceil(frame.scanLines \u002F 8 \u002F frame.maxV);\n+  for (const component of frame.components) {\n+    const blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine \u002F 8) * component.h \u002F frame.maxH);\n+    const blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines \u002F 8) * component.v \u002F frame.maxV);\n+    const blocksPerLineForMcu = mcusPerLine * component.h;\n+    const blocksPerColumnForMcu = mcusPerColumn * component.v;\n+    const blocksBufferSize = 64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);\n+    component.blockData = new Int16Array(blocksBufferSize);\n+    component.blocksPerLine = blocksPerLine;\n+    component.blocksPerColumn = blocksPerColumn;\n+  }\n+  frame.mcusPerLine = mcusPerLine;\n+  frame.mcusPerColumn = mcusPerColumn;\n+}\n+function readDataBlock(data, offset) {\n+  const length = readUint16(data, offset);\n+  offset += 2;\n+  let endOffset = offset + length - 2;\n+  const fileMarker = findNextFileMarker(data, endOffset, offset);\n+  if (fileMarker?.invalid) {\n+    warn(\"readDataBlock - incorrect length, current marker is: \" + fileMarker.invalid);\n+    endOffset = fileMarker.offset;\n   }\n+  const array = data.subarray(offset, endOffset);\n+  return {\n+    appData: array,\n+    oldOffset: offset,\n+    newOffset: offset + array.length\n+  };\n }\n-class DeviceRgbCS extends ColorSpace {\n-  constructor() {\n-    super(\"DeviceRGB\", 3);\n+function skipData(data, offset) {\n+  const length = readUint16(data, offset);\n+  offset += 2;\n+  const endOffset = offset + length - 2;\n+  const fileMarker = findNextFileMarker(data, endOffset, offset);\n+  if (fileMarker?.invalid) {\n+    return fileMarker.offset;\n   }\n-  getRgbItem(src, srcOffset, dest, destOffset) {\n-    dest[destOffset] = src[srcOffset] * 255;\n-    dest[destOffset + 1] = src[srcOffset + 1] * 255;\n-    dest[destOffset + 2] = src[srcOffset + 2] * 255;\n+  return endOffset;\n+}\n+class JpegImage {\n+  constructor({\n+    decodeTransform = null,\n+    colorTransform = -1\n+  } = {}) {\n+    this._decodeTransform = decodeTransform;\n+    this._colorTransform = colorTransform;\n   }\n-  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n-    if (bits === 8 && alpha01 === 0) {\n-      dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);\n-      return;\n+  static canUseImageDecoder(data, colorTransform = -1) {\n+    let exifOffsets = null;\n+    let offset = 0;\n+    let numComponents = null;\n+    let fileMarker = readUint16(data, offset);\n+    offset += 2;\n+    if (fileMarker !== 0xffd8) {\n+      throw new JpegError(\"SOI not found\");\n     }\n-    const scale = 255 \u002F ((1 \u003C\u003C bits) - 1);\n-    let j = srcOffset,\n-      q = destOffset;\n-    for (let i = 0; i \u003C count; ++i) {\n-      dest[q++] = scale * src[j++];\n-      dest[q++] = scale * src[j++];\n-      dest[q++] = scale * src[j++];\n-      q += alpha01;\n+    fileMarker = readUint16(data, offset);\n+    offset += 2;\n+    markerLoop: while (fileMarker !== 0xffd9) {\n+      switch (fileMarker) {\n+        case 0xffe1:\n+          const {\n+            appData,\n+            oldOffset,\n+            newOffset\n+          } = readDataBlock(data, offset);\n+          offset = newOffset;\n+          if (appData[0] === 0x45 && appData[1] === 0x78 && appData[2] === 0x69 && appData[3] === 0x66 && appData[4] === 0 && appData[5] === 0) {\n+            if (exifOffsets) {\n+              throw new JpegError(\"Duplicate EXIF-blocks found.\");\n+            }\n+            exifOffsets = {\n+              exifStart: oldOffset + 6,\n+              exifEnd: newOffset\n+            };\n+          }\n+          fileMarker = readUint16(data, offset);\n+          offset += 2;\n+          continue;\n+        case 0xffc0:\n+        case 0xffc1:\n+        case 0xffc2:\n+          numComponents = data[offset + (2 + 1 + 2 + 2)];\n+          break markerLoop;\n+        case 0xffff:\n+          if (data[offset] !== 0xff) {\n+            offset--;\n+          }\n+          break;\n+      }\n+      offset = skipData(data, offset);\n+      fileMarker = readUint16(data, offset);\n+      offset += 2;\n+    }\n+    if (numComponents === 4) {\n+      return null;\n     }\n+    if (numComponents === 3 && colorTransform === 0) {\n+      return null;\n+    }\n+    return exifOffsets || {};\n   }\n-  getOutputLength(inputLength, alpha01) {\n-    return inputLength * (3 + alpha01) \u002F 3 | 0;\n+  parse(data, {\n+    dnlScanLines = null\n+  } = {}) {\n+    let offset = 0;\n+    let jfif = null;\n+    let adobe = null;\n+    let frame, resetInterval;\n+    let numSOSMarkers = 0;\n+    const quantizationTables = [];\n+    const huffmanTablesAC = [],\n+      huffmanTablesDC = [];\n+    let fileMarker = readUint16(data, offset);\n+    offset += 2;\n+    if (fileMarker !== 0xffd8) {\n+      throw new JpegError(\"SOI not found\");\n+    }\n+    fileMarker = readUint16(data, offset);\n+    offset += 2;\n+    markerLoop: while (fileMarker !== 0xffd9) {\n+      let i, j, l;\n+      switch (fileMarker) {\n+        case 0xffe0:\n+        case 0xffe1:\n+        case 0xffe2:\n+        case 0xffe3:\n+        case 0xffe4:\n+        case 0xffe5:\n+        case 0xffe6:\n+        case 0xffe7:\n+        case 0xffe8:\n+        case 0xffe9:\n+        case 0xffea:\n+        case 0xffeb:\n+        case 0xffec:\n+        case 0xffed:\n+        case 0xffee:\n+        case 0xffef:\n+        case 0xfffe:\n+          const {\n+            appData,\n+            newOffset\n+          } = readDataBlock(data, offset);\n+          offset = newOffset;\n+          if (fileMarker === 0xffe0) {\n+            if (appData[0] === 0x4a && appData[1] === 0x46 && appData[2] === 0x49 && appData[3] === 0x46 && appData[4] === 0) {\n+              jfif = {\n+                version: {\n+                  major: appData[5],\n+                  minor: appData[6]\n+                },\n+                densityUnits: appData[7],\n+                xDensity: appData[8] \u003C\u003C 8 | appData[9],\n+                yDensity: appData[10] \u003C\u003C 8 | appData[11],\n+                thumbWidth: appData[12],\n+                thumbHeight: appData[13],\n+                thumbData: appData.subarray(14, 14 + 3 * appData[12] * appData[13])\n+              };\n+            }\n+          }\n+          if (fileMarker === 0xffee) {\n+            if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6f && appData[3] === 0x62 && appData[4] === 0x65) {\n+              adobe = {\n+                version: appData[5] \u003C\u003C 8 | appData[6],\n+                flags0: appData[7] \u003C\u003C 8 | appData[8],\n+                flags1: appData[9] \u003C\u003C 8 | appData[10],\n+                transformCode: appData[11]\n+              };\n+            }\n+          }\n+          break;\n+        case 0xffdb:\n+          const quantizationTablesLength = readUint16(data, offset);\n+          offset += 2;\n+          const quantizationTablesEnd = quantizationTablesLength + offset - 2;\n+          let z;\n+          while (offset \u003C quantizationTablesEnd) {\n+            const quantizationTableSpec = data[offset++];\n+            const tableData = new Uint16Array(64);\n+            if (quantizationTableSpec >> 4 === 0) {\n+              for (j = 0; j \u003C 64; j++) {\n+                z = dctZigZag[j];\n+                tableData[z] = data[offset++];\n+              }\n+            } else if (quantizationTableSpec >> 4 === 1) {\n+              for (j = 0; j \u003C 64; j++) {\n+                z = dctZigZag[j];\n+                tableData[z] = readUint16(data, offset);\n+                offset += 2;\n+              }\n+            } else {\n+              throw new JpegError(\"DQT - invalid table spec\");\n+            }\n+            quantizationTables[quantizationTableSpec & 15] = tableData;\n+          }\n+          break;\n+        case 0xffc0:\n+        case 0xffc1:\n+        case 0xffc2:\n+          if (frame) {\n+            throw new JpegError(\"Only single frame JPEGs supported\");\n+          }\n+          offset += 2;\n+          frame = {};\n+          frame.extended = fileMarker === 0xffc1;\n+          frame.progressive = fileMarker === 0xffc2;\n+          frame.precision = data[offset++];\n+          const sofScanLines = readUint16(data, offset);\n+          offset += 2;\n+          frame.scanLines = dnlScanLines || sofScanLines;\n+          frame.samplesPerLine = readUint16(data, offset);\n+          offset += 2;\n+          frame.components = [];\n+          frame.componentIds = {};\n+          const componentsCount = data[offset++];\n+          let maxH = 0,\n+            maxV = 0;\n+          for (i = 0; i \u003C componentsCount; i++) {\n+            const componentId = data[offset];\n+            const h = data[offset + 1] >> 4;\n+            const v = data[offset + 1] & 15;\n+            if (maxH \u003C h) {\n+              maxH = h;\n+            }\n+            if (maxV \u003C v) {\n+              maxV = v;\n+            }\n+            const qId = data[offset + 2];\n+            l = frame.components.push({\n+              h,\n+              v,\n+              quantizationId: qId,\n+              quantizationTable: null\n+            });\n+            frame.componentIds[componentId] = l - 1;\n+            offset += 3;\n+          }\n+          frame.maxH = maxH;\n+          frame.maxV = maxV;\n+          prepareComponents(frame);\n+          break;\n+        case 0xffc4:\n+          const huffmanLength = readUint16(data, offset);\n+          offset += 2;\n+          for (i = 2; i \u003C huffmanLength;) {\n+            const huffmanTableSpec = data[offset++];\n+            const codeLengths = new Uint8Array(16);\n+            let codeLengthSum = 0;\n+            for (j = 0; j \u003C 16; j++, offset++) {\n+              codeLengthSum += codeLengths[j] = data[offset];\n+            }\n+            const huffmanValues = new Uint8Array(codeLengthSum);\n+            for (j = 0; j \u003C codeLengthSum; j++, offset++) {\n+              huffmanValues[j] = data[offset];\n+            }\n+            i += 17 + codeLengthSum;\n+            (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] = buildHuffmanTable(codeLengths, huffmanValues);\n+          }\n+          break;\n+        case 0xffdd:\n+          offset += 2;\n+          resetInterval = readUint16(data, offset);\n+          offset += 2;\n+          break;\n+        case 0xffda:\n+          const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;\n+          offset += 2;\n+          const selectorsCount = data[offset++],\n+            components = [];\n+          for (i = 0; i \u003C selectorsCount; i++) {\n+            const index = data[offset++];\n+            const componentIndex = frame.componentIds[index];\n+            const component = frame.components[componentIndex];\n+            component.index = index;\n+            const tableSpec = data[offset++];\n+            component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\n+            component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\n+            components.push(component);\n+          }\n+          const spectralStart = data[offset++],\n+            spectralEnd = data[offset++],\n+            successiveApproximation = data[offset++];\n+          try {\n+            const processed = decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successiveApproximation >> 4, successiveApproximation & 15, parseDNLMarker);\n+            offset += processed;\n+          } catch (ex) {\n+            if (ex instanceof DNLMarkerError) {\n+              warn(`${ex.message} -- attempting to re-parse the JPEG image.`);\n+              return this.parse(data, {\n+                dnlScanLines: ex.scanLines\n+              });\n+            } else if (ex instanceof EOIMarkerError) {\n+              warn(`${ex.message} -- ignoring the rest of the image data.`);\n+              break markerLoop;\n+            }\n+            throw ex;\n+          }\n+          break;\n+        case 0xffdc:\n+          offset += 4;\n+          break;\n+        case 0xffff:\n+          if (data[offset] !== 0xff) {\n+            offset--;\n+          }\n+          break;\n+        default:\n+          const nextFileMarker = findNextFileMarker(data, offset - 2, offset - 3);\n+          if (nextFileMarker?.invalid) {\n+            warn(\"JpegImage.parse - unexpected data, current marker is: \" + nextFileMarker.invalid);\n+            offset = nextFileMarker.offset;\n+            break;\n+          }\n+          if (!nextFileMarker || offset >= data.length - 1) {\n+            warn(\"JpegImage.parse - reached the end of the image data \" + \"without finding an EOI marker (0xFFD9).\");\n+            break markerLoop;\n+          }\n+          throw new JpegError(\"JpegImage.parse - unknown marker: \" + fileMarker.toString(16));\n+      }\n+      fileMarker = readUint16(data, offset);\n+      offset += 2;\n+    }\n+    if (!frame) {\n+      throw new JpegError(\"JpegImage.parse - no frame data found.\");\n+    }\n+    this.width = frame.samplesPerLine;\n+    this.height = frame.scanLines;\n+    this.jfif = jfif;\n+    this.adobe = adobe;\n+    this.components = [];\n+    for (const component of frame.components) {\n+      const quantizationTable = quantizationTables[component.quantizationId];\n+      if (quantizationTable) {\n+        component.quantizationTable = quantizationTable;\n+      }\n+      this.components.push({\n+        index: component.index,\n+        output: buildComponentData(frame, component),\n+        scaleX: component.h \u002F frame.maxH,\n+        scaleY: component.v \u002F frame.maxV,\n+        blocksPerLine: component.blocksPerLine,\n+        blocksPerColumn: component.blocksPerColumn\n+      });\n+    }\n+    this.numComponents = this.components.length;\n+    return undefined;\n   }\n-  isPassthrough(bits) {\n-    return bits === 8;\n+  _getLinearizedBlockData(width, height, isSourcePDF = false) {\n+    const scaleX = this.width \u002F width,\n+      scaleY = this.height \u002F height;\n+    let component, componentScaleX, componentScaleY, blocksPerScanline;\n+    let x, y, i, j, k;\n+    let index;\n+    let offset = 0;\n+    let output;\n+    const numComponents = this.components.length;\n+    const dataLength = width * height * numComponents;\n+    const data = new Uint8ClampedArray(dataLength);\n+    const xScaleBlockOffset = new Uint32Array(width);\n+    const mask3LSB = 0xfffffff8;\n+    let lastComponentScaleX;\n+    for (i = 0; i \u003C numComponents; i++) {\n+      component = this.components[i];\n+      componentScaleX = component.scaleX * scaleX;\n+      componentScaleY = component.scaleY * scaleY;\n+      offset = i;\n+      output = component.output;\n+      blocksPerScanline = component.blocksPerLine + 1 \u003C\u003C 3;\n+      if (componentScaleX !== lastComponentScaleX) {\n+        for (x = 0; x \u003C width; x++) {\n+          j = 0 | x * componentScaleX;\n+          xScaleBlockOffset[x] = (j & mask3LSB) \u003C\u003C 3 | j & 7;\n+        }\n+        lastComponentScaleX = componentScaleX;\n+      }\n+      for (y = 0; y \u003C height; y++) {\n+        j = 0 | y * componentScaleY;\n+        index = blocksPerScanline * (j & mask3LSB) | (j & 7) \u003C\u003C 3;\n+        for (x = 0; x \u003C width; x++) {\n+          data[offset] = output[index + xScaleBlockOffset[x]];\n+          offset += numComponents;\n+        }\n+      }\n+    }\n+    let transform = this._decodeTransform;\n+    if (!isSourcePDF && numComponents === 4 && !transform) {\n+      transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]);\n+    }\n+    if (transform) {\n+      for (i = 0; i \u003C dataLength;) {\n+        for (j = 0, k = 0; j \u003C numComponents; j++, i++, k += 2) {\n+          data[i] = (data[i] * transform[k] >> 8) + transform[k + 1];\n+        }\n+      }\n+    }\n+    return data;\n   }\n-}\n-class DeviceCmykCS extends ColorSpace {\n-  constructor() {\n-    super(\"DeviceCMYK\", 4);\n+  get _isColorConversionNeeded() {\n+    if (this.adobe) {\n+      return !!this.adobe.transformCode;\n+    }\n+    if (this.numComponents === 3) {\n+      if (this._colorTransform === 0) {\n+        return false;\n+      } else if (this.components[0].index === 0x52 && this.components[1].index === 0x47 && this.components[2].index === 0x42) {\n+        return false;\n+      }\n+      return true;\n+    }\n+    if (this._colorTransform === 1) {\n+      return true;\n+    }\n+    return false;\n   }\n-  #toRgb(src, srcOffset, srcScale, dest, destOffset) {\n-    const c = src[srcOffset] * srcScale;\n-    const m = src[srcOffset + 1] * srcScale;\n-    const y = src[srcOffset + 2] * srcScale;\n-    const k = src[srcOffset + 3] * srcScale;\n-    dest[destOffset] = 255 + c * (-4.387332384609988 * c + 54.48615194189176 * m + 18.82290502165302 * y + 212.25662451639585 * k + -285.2331026137004) + m * (1.7149763477362134 * m - 5.6096736904047315 * y + -17.873870861415444 * k - 5.497006427196366) + y * (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) + k * (-21.86122147463605 * k - 189.48180835922747);\n-    dest[destOffset + 1] = 255 + c * (8.841041422036149 * c + 60.118027045597366 * m + 6.871425592049007 * y + 31.159100130055922 * k + -79.2970844816548) + m * (-15.310361306967817 * m + 17.575251261109482 * y + 131.35250912493976 * k - 190.9453302588951) + y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) + k * (-20.737325471181034 * k - 187.80453709719578);\n-    dest[destOffset + 2] = 255 + c * (0.8842522430003296 * c + 8.078677503112928 * m + 30.89978309703729 * y - 0.23883238689178934 * k + -14.183576799673286) + m * (10.49593273432072 * m + 63.02378494754052 * y + 50.606957656360734 * k - 112.23884253719248) + y * (0.03296041114873217 * y + 115.60384449646641 * k + -193.58209356861505) + k * (-22.33816807309886 * k - 180.12613974708367);\n+  _convertYccToRgb(data) {\n+    let Y, Cb, Cr;\n+    for (let i = 0, length = data.length; i \u003C length; i += 3) {\n+      Y = data[i];\n+      Cb = data[i + 1];\n+      Cr = data[i + 2];\n+      data[i] = Y - 179.456 + 1.402 * Cr;\n+      data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n+      data[i + 2] = Y - 226.816 + 1.772 * Cb;\n+    }\n+    return data;\n   }\n-  getRgbItem(src, srcOffset, dest, destOffset) {\n-    this.#toRgb(src, srcOffset, 1, dest, destOffset);\n+  _convertYccToRgba(data, out) {\n+    for (let i = 0, j = 0, length = data.length; i \u003C length; i += 3, j += 4) {\n+      const Y = data[i];\n+      const Cb = data[i + 1];\n+      const Cr = data[i + 2];\n+      out[j] = Y - 179.456 + 1.402 * Cr;\n+      out[j + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n+      out[j + 2] = Y - 226.816 + 1.772 * Cb;\n+      out[j + 3] = 255;\n+    }\n+    return out;\n   }\n-  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n-    const scale = 1 \u002F ((1 \u003C\u003C bits) - 1);\n-    for (let i = 0; i \u003C count; i++) {\n-      this.#toRgb(src, srcOffset, scale, dest, destOffset);\n-      srcOffset += 4;\n-      destOffset += 3 + alpha01;\n+  _convertYcckToRgb(data) {\n+    this._convertYcckToCmyk(data);\n+    return this._convertCmykToRgb(data);\n+  }\n+  _convertYcckToRgba(data) {\n+    this._convertYcckToCmyk(data);\n+    return this._convertCmykToRgba(data);\n+  }\n+  _convertYcckToCmyk(data) {\n+    let Y, Cb, Cr;\n+    for (let i = 0, length = data.length; i \u003C length; i += 4) {\n+      Y = data[i];\n+      Cb = data[i + 1];\n+      Cr = data[i + 2];\n+      data[i] = 434.456 - Y - 1.402 * Cr;\n+      data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;\n+      data[i + 2] = 481.816 - Y - 1.772 * Cb;\n     }\n+    return data;\n   }\n-  getOutputLength(inputLength, alpha01) {\n-    return inputLength \u002F 4 * (3 + alpha01) | 0;\n+  _convertCmykToRgb(data) {\n+    const count = data.length \u002F 4;\n+    ColorSpaceUtils.cmyk.getRgbBuffer(data, 0, count, data, 0, 8, 0);\n+    return data.subarray(0, count * 3);\n   }\n-}\n-class CalGrayCS extends ColorSpace {\n-  constructor(whitePoint, blackPoint, gamma) {\n-    super(\"CalGray\", 1);\n-    if (!whitePoint) {\n-      throw new FormatError(\"WhitePoint missing - required for color space CalGray\");\n+  _convertCmykToRgba(data) {\n+    ColorSpaceUtils.cmyk.getRgbBuffer(data, 0, data.length \u002F 4, data, 0, 8, 1);\n+    if (ColorSpaceUtils.cmyk instanceof DeviceCmykCS) {\n+      for (let i = 3, ii = data.length; i \u003C ii; i += 4) {\n+        data[i] = 255;\n+      }\n     }\n-    [this.XW, this.YW, this.ZW] = whitePoint;\n-    [this.XB, this.YB, this.ZB] = blackPoint || [0, 0, 0];\n-    this.G = gamma || 1;\n-    if (this.XW \u003C 0 || this.ZW \u003C 0 || this.YW !== 1) {\n-      throw new FormatError(`Invalid WhitePoint components for ${this.name}, no fallback available`);\n+    return data;\n+  }\n+  getData({\n+    width,\n+    height,\n+    forceRGBA = false,\n+    forceRGB = false,\n+    isSourcePDF = false\n+  }) {\n+    if (this.numComponents > 4) {\n+      throw new JpegError(\"Unsupported color mode\");\n     }\n-    if (this.XB \u003C 0 || this.YB \u003C 0 || this.ZB \u003C 0) {\n-      info(`Invalid BlackPoint for ${this.name}, falling back to default.`);\n-      this.XB = this.YB = this.ZB = 0;\n+    const data = this._getLinearizedBlockData(width, height, isSourcePDF);\n+    if (this.numComponents === 1 && (forceRGBA || forceRGB)) {\n+      const len = data.length * (forceRGBA ? 4 : 3);\n+      const rgbaData = new Uint8ClampedArray(len);\n+      let offset = 0;\n+      if (forceRGBA) {\n+        grayToRGBA(data, new Uint32Array(rgbaData.buffer));\n+      } else {\n+        for (const grayColor of data) {\n+          rgbaData[offset++] = grayColor;\n+          rgbaData[offset++] = grayColor;\n+          rgbaData[offset++] = grayColor;\n+        }\n+      }\n+      return rgbaData;\n+    } else if (this.numComponents === 3 && this._isColorConversionNeeded) {\n+      if (forceRGBA) {\n+        const rgbaData = new Uint8ClampedArray(data.length \u002F 3 * 4);\n+        return this._convertYccToRgba(data, rgbaData);\n+      }\n+      return this._convertYccToRgb(data);\n+    } else if (this.numComponents === 4) {\n+      if (this._isColorConversionNeeded) {\n+        if (forceRGBA) {\n+          return this._convertYcckToRgba(data);\n+        }\n+        if (forceRGB) {\n+          return this._convertYcckToRgb(data);\n+        }\n+        return this._convertYcckToCmyk(data);\n+      } else if (forceRGBA) {\n+        return this._convertCmykToRgba(data);\n+      } else if (forceRGB) {\n+        return this._convertCmykToRgb(data);\n+      }\n     }\n-    if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) {\n-      warn(`${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` + `ZB: ${this.ZB}, only default values are supported.`);\n+    return data;\n+  }\n+}\n+\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fjpeg_stream.js\n+\n+\n+\n+\n+\n+\n+\n+class JpegStream extends DecodeStream {\n+  static #isImageDecoderSupported = FeatureTest.isImageDecoderSupported;\n+  constructor(stream, maybeLength, params) {\n+    super(maybeLength);\n+    this.stream = stream;\n+    this.dict = stream.dict;\n+    this.maybeLength = maybeLength;\n+    this.params = params;\n+  }\n+  static get canUseImageDecoder() {\n+    return shadow(this, \"canUseImageDecoder\", this.#isImageDecoderSupported ? ImageDecoder.isTypeSupported(\"image\u002Fjpeg\") : Promise.resolve(false));\n+  }\n+  static setOptions({\n+    isImageDecoderSupported = false\n+  }) {\n+    this.#isImageDecoderSupported = isImageDecoderSupported;\n+  }\n+  get bytes() {\n+    return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n+  }\n+  ensureBuffer(requested) {}\n+  readBlock() {\n+    this.decodeImage();\n+  }\n+  get jpegOptions() {\n+    const jpegOptions = {\n+      decodeTransform: undefined,\n+      colorTransform: undefined\n+    };\n+    const decodeArr = this.dict.getArray(\"D\", \"Decode\");\n+    if ((this.forceRGBA || this.forceRGB) && Array.isArray(decodeArr)) {\n+      const bitsPerComponent = this.dict.get(\"BPC\", \"BitsPerComponent\") || 8;\n+      const decodeArrLength = decodeArr.length;\n+      const transform = new Int32Array(decodeArrLength);\n+      let transformNeeded = false;\n+      const maxValue = (1 \u003C\u003C bitsPerComponent) - 1;\n+      for (let i = 0; i \u003C decodeArrLength; i += 2) {\n+        transform[i] = (decodeArr[i + 1] - decodeArr[i]) * 256 | 0;\n+        transform[i + 1] = decodeArr[i] * maxValue | 0;\n+        if (transform[i] !== 256 || transform[i + 1] !== 0) {\n+          transformNeeded = true;\n+        }\n+      }\n+      if (transformNeeded) {\n+        jpegOptions.decodeTransform = transform;\n+      }\n     }\n-    if (this.G \u003C 1) {\n-      info(`Invalid Gamma: ${this.G} for ${this.name}, falling back to default.`);\n-      this.G = 1;\n+    if (this.params instanceof Dict) {\n+      const colorTransform = this.params.get(\"ColorTransform\");\n+      if (Number.isInteger(colorTransform)) {\n+        jpegOptions.colorTransform = colorTransform;\n+      }\n     }\n+    return shadow(this, \"jpegOptions\", jpegOptions);\n   }\n-  #toRgb(src, srcOffset, dest, destOffset, scale) {\n-    const A = src[srcOffset] * scale;\n-    const AG = A ** this.G;\n-    const L = this.YW * AG;\n-    const val = Math.max(295.8 * L ** 0.3333333333333333 - 40.8, 0);\n-    dest[destOffset] = val;\n-    dest[destOffset + 1] = val;\n-    dest[destOffset + 2] = val;\n-  }\n-  getRgbItem(src, srcOffset, dest, destOffset) {\n-    this.#toRgb(src, srcOffset, dest, destOffset, 1);\n+  #skipUselessBytes(data) {\n+    for (let i = 0, ii = data.length - 1; i \u003C ii; i++) {\n+      if (data[i] === 0xff && data[i + 1] === 0xd8) {\n+        if (i > 0) {\n+          data = data.subarray(i);\n+        }\n+        break;\n+      }\n+    }\n+    return data;\n   }\n-  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n-    const scale = 1 \u002F ((1 \u003C\u003C bits) - 1);\n-    for (let i = 0; i \u003C count; ++i) {\n-      this.#toRgb(src, srcOffset, dest, destOffset, scale);\n-      srcOffset += 1;\n-      destOffset += 3 + alpha01;\n+  decodeImage(bytes) {\n+    if (this.eof) {\n+      return this.buffer;\n     }\n+    bytes = this.#skipUselessBytes(bytes || this.bytes);\n+    const jpegImage = new JpegImage(this.jpegOptions);\n+    jpegImage.parse(bytes);\n+    const data = jpegImage.getData({\n+      width: this.drawWidth,\n+      height: this.drawHeight,\n+      forceRGBA: this.forceRGBA,\n+      forceRGB: this.forceRGB,\n+      isSourcePDF: true\n+    });\n+    this.buffer = data;\n+    this.bufferLength = data.length;\n+    this.eof = true;\n+    return this.buffer;\n   }\n-  getOutputLength(inputLength, alpha01) {\n-    return inputLength * (3 + alpha01);\n+  get canAsyncDecodeImageFromBuffer() {\n+    return this.stream.isAsync;\n+  }\n+  async getTransferableImage() {\n+    if (!(await JpegStream.canUseImageDecoder)) {\n+      return null;\n+    }\n+    const jpegOptions = this.jpegOptions;\n+    if (jpegOptions.decodeTransform) {\n+      return null;\n+    }\n+    let decoder;\n+    try {\n+      const bytes = this.canAsyncDecodeImageFromBuffer && (await this.stream.asyncGetBytes()) || this.bytes;\n+      if (!bytes) {\n+        return null;\n+      }\n+      let data = this.#skipUselessBytes(bytes);\n+      const useImageDecoder = JpegImage.canUseImageDecoder(data, jpegOptions.colorTransform);\n+      if (!useImageDecoder) {\n+        return null;\n+      }\n+      if (useImageDecoder.exifStart) {\n+        data = data.slice();\n+        data.fill(0x00, useImageDecoder.exifStart, useImageDecoder.exifEnd);\n+      }\n+      decoder = new ImageDecoder({\n+        data,\n+        type: \"image\u002Fjpeg\",\n+        preferAnimation: false\n+      });\n+      return (await decoder.decode()).image;\n+    } catch (reason) {\n+      warn(`getTransferableImage - failed: \"${reason}\".`);\n+      return null;\n+    } finally {\n+      decoder?.close();\n+    }\n   }\n }\n-class CalRGBCS extends ColorSpace {\n-  static #BRADFORD_SCALE_MATRIX = new Float32Array([0.8951, 0.2664, -0.1614, -0.7502, 1.7135, 0.0367, 0.0389, -0.0685, 1.0296]);\n-  static #BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([0.9869929, -0.1470543, 0.1599627, 0.4323053, 0.5183603, 0.0492912, -0.0085287, 0.0400428, 0.9684867]);\n-  static #SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([3.2404542, -1.5371385, -0.4985314, -0.9692660, 1.8760108, 0.0415560, 0.0556434, -0.2040259, 1.0572252]);\n-  static #FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);\n-  static #tempNormalizeMatrix = new Float32Array(3);\n-  static #tempConvertMatrix1 = new Float32Array(3);\n-  static #tempConvertMatrix2 = new Float32Array(3);\n-  static #DECODE_L_CONSTANT = ((8 + 16) \u002F 116) ** 3 \u002F 8.0;\n-  constructor(whitePoint, blackPoint, gamma, matrix) {\n-    super(\"CalRGB\", 3);\n-    if (!whitePoint) {\n-      throw new FormatError(\"WhitePoint missing - required for color space CalRGB\");\n+\n+;\u002F\u002F .\u002Fexternal\u002Fopenjpeg\u002Fopenjpeg.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+var OpenJPEG = (() => {\n+  return async function (moduleArg = {}) {\n+    var moduleRtn;\n+    var Module = moduleArg;\n+    var readyPromiseResolve, readyPromiseReject;\n+    var readyPromise = new Promise((resolve, reject) => {\n+      readyPromiseResolve = resolve;\n+      readyPromiseReject = reject;\n+    });\n+    var ENVIRONMENT_IS_WEB = true;\n+    var ENVIRONMENT_IS_WORKER = false;\n+    var arguments_ = [];\n+    var thisProgram = \".\u002Fthis.program\";\n+    var quit_ = (status, toThrow) => {\n+      throw toThrow;\n+    };\n+    var _scriptName = import.meta.url;\n+    var scriptDirectory = \"\";\n+    var readAsync, readBinary;\n+    if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n+      try {\n+        scriptDirectory = new URL(\".\", _scriptName).href;\n+      } catch {}\n+      readAsync = async url => {\n+        var response = await fetch(url, {\n+          credentials: \"same-origin\"\n+        });\n+        if (response.ok) {\n+          return response.arrayBuffer();\n+        }\n+        throw new Error(response.status + \" : \" + response.url);\n+      };\n+    } else {}\n+    var out = console.log.bind(console);\n+    var err = console.error.bind(console);\n+    var wasmBinary;\n+    var wasmMemory;\n+    var ABORT = false;\n+    var EXITSTATUS;\n+    var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAP64, HEAPU64, HEAPF64;\n+    var runtimeInitialized = false;\n+    function updateMemoryViews() {\n+      var b = wasmMemory.buffer;\n+      HEAP8 = new Int8Array(b);\n+      HEAP16 = new Int16Array(b);\n+      HEAPU8 = new Uint8Array(b);\n+      HEAPU16 = new Uint16Array(b);\n+      HEAP32 = new Int32Array(b);\n+      HEAPU32 = new Uint32Array(b);\n+      HEAPF32 = new Float32Array(b);\n+      HEAPF64 = new Float64Array(b);\n+      HEAP64 = new BigInt64Array(b);\n+      HEAPU64 = new BigUint64Array(b);\n     }\n-    const [XW, YW, ZW] = this.whitePoint = whitePoint;\n-    const [XB, YB, ZB] = this.blackPoint = blackPoint || new Float32Array(3);\n-    [this.GR, this.GG, this.GB] = gamma || new Float32Array([1, 1, 1]);\n-    [this.MXA, this.MYA, this.MZA, this.MXB, this.MYB, this.MZB, this.MXC, this.MYC, this.MZC] = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n-    if (XW \u003C 0 || ZW \u003C 0 || YW !== 1) {\n-      throw new FormatError(`Invalid WhitePoint components for ${this.name}, no fallback available`);\n+    function preRun() {\n+      if (Module[\"preRun\"]) {\n+        if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [Module[\"preRun\"]];\n+        while (Module[\"preRun\"].length) {\n+          addOnPreRun(Module[\"preRun\"].shift());\n+        }\n+      }\n+      callRuntimeCallbacks(onPreRuns);\n     }\n-    if (XB \u003C 0 || YB \u003C 0 || ZB \u003C 0) {\n-      info(`Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` + \"falling back to default.\");\n-      this.blackPoint = new Float32Array(3);\n+    function initRuntime() {\n+      runtimeInitialized = true;\n+      wasmExports[\"t\"]();\n     }\n-    if (this.GR \u003C 0 || this.GG \u003C 0 || this.GB \u003C 0) {\n-      info(`Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` + `${this.name}, falling back to default.`);\n-      this.GR = this.GG = this.GB = 1;\n+    function postRun() {\n+      if (Module[\"postRun\"]) {\n+        if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [Module[\"postRun\"]];\n+        while (Module[\"postRun\"].length) {\n+          addOnPostRun(Module[\"postRun\"].shift());\n+        }\n+      }\n+      callRuntimeCallbacks(onPostRuns);\n+    }\n+    var runDependencies = 0;\n+    var dependenciesFulfilled = null;\n+    function addRunDependency(id) {\n+      runDependencies++;\n+      Module[\"monitorRunDependencies\"]?.(runDependencies);\n+    }\n+    function removeRunDependency(id) {\n+      runDependencies--;\n+      Module[\"monitorRunDependencies\"]?.(runDependencies);\n+      if (runDependencies == 0) {\n+        if (dependenciesFulfilled) {\n+          var callback = dependenciesFulfilled;\n+          dependenciesFulfilled = null;\n+          callback();\n+        }\n+      }\n+    }\n+    function abort(what) {\n+      Module[\"onAbort\"]?.(what);\n+      what = \"Aborted(\" + what + \")\";\n+      err(what);\n+      ABORT = true;\n+      what += \". Build with -sASSERTIONS for more info.\";\n+      var e = new WebAssembly.RuntimeError(what);\n+      readyPromiseReject(e);\n+      throw e;\n+    }\n+    var wasmBinaryFile;\n+    function getWasmImports() {\n+      return {\n+        a: wasmImports\n+      };\n+    }\n+    async function createWasm() {\n+      function receiveInstance(instance, module) {\n+        wasmExports = instance.exports;\n+        wasmMemory = wasmExports[\"s\"];\n+        updateMemoryViews();\n+        removeRunDependency(\"wasm-instantiate\");\n+        return wasmExports;\n+      }\n+      addRunDependency(\"wasm-instantiate\");\n+      var info = getWasmImports();\n+      return new Promise((resolve, reject) => {\n+        Module[\"instantiateWasm\"](info, (mod, inst) => {\n+          resolve(receiveInstance(mod, inst));\n+        });\n+      });\n+    }\n+    class ExitStatus {\n+      name = \"ExitStatus\";\n+      constructor(status) {\n+        this.message = `Program terminated with exit(${status})`;\n+        this.status = status;\n+      }\n+    }\n+    var callRuntimeCallbacks = callbacks => {\n+      while (callbacks.length > 0) {\n+        callbacks.shift()(Module);\n+      }\n+    };\n+    var onPostRuns = [];\n+    var addOnPostRun = cb => onPostRuns.push(cb);\n+    var onPreRuns = [];\n+    var addOnPreRun = cb => onPreRuns.push(cb);\n+    var noExitRuntime = true;\n+    var __abort_js = () => abort(\"\");\n+    var runtimeKeepaliveCounter = 0;\n+    var __emscripten_runtime_keepalive_clear = () => {\n+      noExitRuntime = false;\n+      runtimeKeepaliveCounter = 0;\n+    };\n+    var timers = {};\n+    var handleException = e => {\n+      if (e instanceof ExitStatus || e == \"unwind\") {\n+        return EXITSTATUS;\n+      }\n+      quit_(1, e);\n+    };\n+    var keepRuntimeAlive = () => noExitRuntime || runtimeKeepaliveCounter > 0;\n+    var _proc_exit = code => {\n+      EXITSTATUS = code;\n+      if (!keepRuntimeAlive()) {\n+        Module[\"onExit\"]?.(code);\n+        ABORT = true;\n+      }\n+      quit_(code, new ExitStatus(code));\n+    };\n+    var exitJS = (status, implicit) => {\n+      EXITSTATUS = status;\n+      _proc_exit(status);\n+    };\n+    var _exit = exitJS;\n+    var maybeExit = () => {\n+      if (!keepRuntimeAlive()) {\n+        try {\n+          _exit(EXITSTATUS);\n+        } catch (e) {\n+          handleException(e);\n+        }\n+      }\n+    };\n+    var callUserCallback = func => {\n+      if (ABORT) {\n+        return;\n+      }\n+      try {\n+        func();\n+        maybeExit();\n+      } catch (e) {\n+        handleException(e);\n+      }\n+    };\n+    var _emscripten_get_now = () => performance.now();\n+    var __setitimer_js = (which, timeout_ms) => {\n+      if (timers[which]) {\n+        clearTimeout(timers[which].id);\n+        delete timers[which];\n+      }\n+      if (!timeout_ms) return 0;\n+      var id = setTimeout(() => {\n+        delete timers[which];\n+        callUserCallback(() => __emscripten_timeout(which, _emscripten_get_now()));\n+      }, timeout_ms);\n+      timers[which] = {\n+        id,\n+        timeout_ms\n+      };\n+      return 0;\n+    };\n+    function _copy_pixels_1(compG_ptr, nb_pixels) {\n+      compG_ptr >>= 2;\n+      const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels);\n+      const compG = HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels);\n+      imageData.set(compG);\n+    }\n+    function _copy_pixels_3(compR_ptr, compG_ptr, compB_ptr, nb_pixels) {\n+      compR_ptr >>= 2;\n+      compG_ptr >>= 2;\n+      compB_ptr >>= 2;\n+      const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels * 3);\n+      const compR = HEAP32.subarray(compR_ptr, compR_ptr + nb_pixels);\n+      const compG = HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels);\n+      const compB = HEAP32.subarray(compB_ptr, compB_ptr + nb_pixels);\n+      for (let i = 0; i \u003C nb_pixels; i++) {\n+        imageData[3 * i] = compR[i];\n+        imageData[3 * i + 1] = compG[i];\n+        imageData[3 * i + 2] = compB[i];\n+      }\n+    }\n+    function _copy_pixels_4(compR_ptr, compG_ptr, compB_ptr, compA_ptr, nb_pixels) {\n+      compR_ptr >>= 2;\n+      compG_ptr >>= 2;\n+      compB_ptr >>= 2;\n+      compA_ptr >>= 2;\n+      const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels * 4);\n+      const compR = HEAP32.subarray(compR_ptr, compR_ptr + nb_pixels);\n+      const compG = HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels);\n+      const compB = HEAP32.subarray(compB_ptr, compB_ptr + nb_pixels);\n+      const compA = HEAP32.subarray(compA_ptr, compA_ptr + nb_pixels);\n+      for (let i = 0; i \u003C nb_pixels; i++) {\n+        imageData[4 * i] = compR[i];\n+        imageData[4 * i + 1] = compG[i];\n+        imageData[4 * i + 2] = compB[i];\n+        imageData[4 * i + 3] = compA[i];\n+      }\n+    }\n+    var getHeapMax = () => 2147483648;\n+    var alignMemory = (size, alignment) => Math.ceil(size \u002F alignment) * alignment;\n+    var growMemory = size => {\n+      var b = wasmMemory.buffer;\n+      var pages = (size - b.byteLength + 65535) \u002F 65536 | 0;\n+      try {\n+        wasmMemory.grow(pages);\n+        updateMemoryViews();\n+        return 1;\n+      } catch (e) {}\n+    };\n+    var _emscripten_resize_heap = requestedSize => {\n+      var oldSize = HEAPU8.length;\n+      requestedSize >>>= 0;\n+      var maxHeapSize = getHeapMax();\n+      if (requestedSize > maxHeapSize) {\n+        return false;\n+      }\n+      for (var cutDown = 1; cutDown \u003C= 4; cutDown *= 2) {\n+        var overGrownHeapSize = oldSize * (1 + .2 \u002F cutDown);\n+        overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n+        var newSize = Math.min(maxHeapSize, alignMemory(Math.max(requestedSize, overGrownHeapSize), 65536));\n+        var replacement = growMemory(newSize);\n+        if (replacement) {\n+          return true;\n+        }\n+      }\n+      return false;\n+    };\n+    var ENV = {};\n+    var getExecutableName = () => thisProgram || \".\u002Fthis.program\";\n+    var getEnvStrings = () => {\n+      if (!getEnvStrings.strings) {\n+        var lang = (typeof navigator == \"object\" && navigator.languages && navigator.languages[0] || \"C\").replace(\"-\", \"_\") + \".UTF-8\";\n+        var env = {\n+          USER: \"web_user\",\n+          LOGNAME: \"web_user\",\n+          PATH: \"\u002F\",\n+          PWD: \"\u002F\",\n+          HOME: \"\u002Fhome\u002Fweb_user\",\n+          LANG: lang,\n+          _: getExecutableName()\n+        };\n+        for (var x in ENV) {\n+          if (ENV[x] === undefined) delete env[x];else env[x] = ENV[x];\n+        }\n+        var strings = [];\n+        for (var x in env) {\n+          strings.push(`${x}=${env[x]}`);\n+        }\n+        getEnvStrings.strings = strings;\n+      }\n+      return getEnvStrings.strings;\n+    };\n+    var stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => {\n+      if (!(maxBytesToWrite > 0)) return 0;\n+      var startIdx = outIdx;\n+      var endIdx = outIdx + maxBytesToWrite - 1;\n+      for (var i = 0; i \u003C str.length; ++i) {\n+        var u = str.charCodeAt(i);\n+        if (u >= 55296 && u \u003C= 57343) {\n+          var u1 = str.charCodeAt(++i);\n+          u = 65536 + ((u & 1023) \u003C\u003C 10) | u1 & 1023;\n+        }\n+        if (u \u003C= 127) {\n+          if (outIdx >= endIdx) break;\n+          heap[outIdx++] = u;\n+        } else if (u \u003C= 2047) {\n+          if (outIdx + 1 >= endIdx) break;\n+          heap[outIdx++] = 192 | u >> 6;\n+          heap[outIdx++] = 128 | u & 63;\n+        } else if (u \u003C= 65535) {\n+          if (outIdx + 2 >= endIdx) break;\n+          heap[outIdx++] = 224 | u >> 12;\n+          heap[outIdx++] = 128 | u >> 6 & 63;\n+          heap[outIdx++] = 128 | u & 63;\n+        } else {\n+          if (outIdx + 3 >= endIdx) break;\n+          heap[outIdx++] = 240 | u >> 18;\n+          heap[outIdx++] = 128 | u >> 12 & 63;\n+          heap[outIdx++] = 128 | u >> 6 & 63;\n+          heap[outIdx++] = 128 | u & 63;\n+        }\n+      }\n+      heap[outIdx] = 0;\n+      return outIdx - startIdx;\n+    };\n+    var stringToUTF8 = (str, outPtr, maxBytesToWrite) => stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);\n+    var _environ_get = (__environ, environ_buf) => {\n+      var bufSize = 0;\n+      var envp = 0;\n+      for (var string of getEnvStrings()) {\n+        var ptr = environ_buf + bufSize;\n+        HEAPU32[__environ + envp >> 2] = ptr;\n+        bufSize += stringToUTF8(string, ptr, Infinity) + 1;\n+        envp += 4;\n+      }\n+      return 0;\n+    };\n+    var lengthBytesUTF8 = str => {\n+      var len = 0;\n+      for (var i = 0; i \u003C str.length; ++i) {\n+        var c = str.charCodeAt(i);\n+        if (c \u003C= 127) {\n+          len++;\n+        } else if (c \u003C= 2047) {\n+          len += 2;\n+        } else if (c >= 55296 && c \u003C= 57343) {\n+          len += 4;\n+          ++i;\n+        } else {\n+          len += 3;\n+        }\n+      }\n+      return len;\n+    };\n+    var _environ_sizes_get = (penviron_count, penviron_buf_size) => {\n+      var strings = getEnvStrings();\n+      HEAPU32[penviron_count >> 2] = strings.length;\n+      var bufSize = 0;\n+      for (var string of strings) {\n+        bufSize += lengthBytesUTF8(string) + 1;\n+      }\n+      HEAPU32[penviron_buf_size >> 2] = bufSize;\n+      return 0;\n+    };\n+    var _fd_close = fd => 52;\n+    var INT53_MAX = 9007199254740992;\n+    var INT53_MIN = -9007199254740992;\n+    var bigintToI53Checked = num => num \u003C INT53_MIN || num > INT53_MAX ? NaN : Number(num);\n+    function _fd_seek(fd, offset, whence, newOffset) {\n+      offset = bigintToI53Checked(offset);\n+      return 70;\n+    }\n+    var printCharBuffers = [null, [], []];\n+    var UTF8Decoder = typeof TextDecoder != \"undefined\" ? new TextDecoder() : undefined;\n+    var UTF8ArrayToString = (heapOrArray, idx = 0, maxBytesToRead = NaN) => {\n+      var endIdx = idx + maxBytesToRead;\n+      var endPtr = idx;\n+      while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n+      if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {\n+        return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr));\n+      }\n+      var str = \"\";\n+      while (idx \u003C endPtr) {\n+        var u0 = heapOrArray[idx++];\n+        if (!(u0 & 128)) {\n+          str += String.fromCharCode(u0);\n+          continue;\n+        }\n+        var u1 = heapOrArray[idx++] & 63;\n+        if ((u0 & 224) == 192) {\n+          str += String.fromCharCode((u0 & 31) \u003C\u003C 6 | u1);\n+          continue;\n+        }\n+        var u2 = heapOrArray[idx++] & 63;\n+        if ((u0 & 240) == 224) {\n+          u0 = (u0 & 15) \u003C\u003C 12 | u1 \u003C\u003C 6 | u2;\n+        } else {\n+          u0 = (u0 & 7) \u003C\u003C 18 | u1 \u003C\u003C 12 | u2 \u003C\u003C 6 | heapOrArray[idx++] & 63;\n+        }\n+        if (u0 \u003C 65536) {\n+          str += String.fromCharCode(u0);\n+        } else {\n+          var ch = u0 - 65536;\n+          str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);\n+        }\n+      }\n+      return str;\n+    };\n+    var printChar = (stream, curr) => {\n+      var buffer = printCharBuffers[stream];\n+      if (curr === 0 || curr === 10) {\n+        (stream === 1 ? out : err)(UTF8ArrayToString(buffer));\n+        buffer.length = 0;\n+      } else {\n+        buffer.push(curr);\n+      }\n+    };\n+    var UTF8ToString = (ptr, maxBytesToRead) => ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : \"\";\n+    var _fd_write = (fd, iov, iovcnt, pnum) => {\n+      var num = 0;\n+      for (var i = 0; i \u003C iovcnt; i++) {\n+        var ptr = HEAPU32[iov >> 2];\n+        var len = HEAPU32[iov + 4 >> 2];\n+        iov += 8;\n+        for (var j = 0; j \u003C len; j++) {\n+          printChar(fd, HEAPU8[ptr + j]);\n+        }\n+        num += len;\n+      }\n+      HEAPU32[pnum >> 2] = num;\n+      return 0;\n+    };\n+    function _gray_to_rgba(compG_ptr, nb_pixels) {\n+      compG_ptr >>= 2;\n+      const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels * 4);\n+      const compG = HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels);\n+      for (let i = 0; i \u003C nb_pixels; i++) {\n+        imageData[4 * i] = imageData[4 * i + 1] = imageData[4 * i + 2] = compG[i];\n+        imageData[4 * i + 3] = 255;\n+      }\n+    }\n+    function _graya_to_rgba(compG_ptr, compA_ptr, nb_pixels) {\n+      compG_ptr >>= 2;\n+      compA_ptr >>= 2;\n+      const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels * 4);\n+      const compG = HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels);\n+      const compA = HEAP32.subarray(compA_ptr, compA_ptr + nb_pixels);\n+      for (let i = 0; i \u003C nb_pixels; i++) {\n+        imageData[4 * i] = imageData[4 * i + 1] = imageData[4 * i + 2] = compG[i];\n+        imageData[4 * i + 3] = compA[i];\n+      }\n+    }\n+    function _jsPrintWarning(message_ptr) {\n+      const message = UTF8ToString(message_ptr);\n+      (Module.warn || console.warn)(`OpenJPEG: ${message}`);\n     }\n+    function _rgb_to_rgba(compR_ptr, compG_ptr, compB_ptr, nb_pixels) {\n+      compR_ptr >>= 2;\n+      compG_ptr >>= 2;\n+      compB_ptr >>= 2;\n+      const imageData = Module.imageData = new Uint8ClampedArray(nb_pixels * 4);\n+      const compR = HEAP32.subarray(compR_ptr, compR_ptr + nb_pixels);\n+      const compG = HEAP32.subarray(compG_ptr, compG_ptr + nb_pixels);\n+      const compB = HEAP32.subarray(compB_ptr, compB_ptr + nb_pixels);\n+      for (let i = 0; i \u003C nb_pixels; i++) {\n+        imageData[4 * i] = compR[i];\n+        imageData[4 * i + 1] = compG[i];\n+        imageData[4 * i + 2] = compB[i];\n+        imageData[4 * i + 3] = 255;\n+      }\n+    }\n+    function _storeErrorMessage(message_ptr) {\n+      const message = UTF8ToString(message_ptr);\n+      if (!Module.errorMessages) {\n+        Module.errorMessages = message;\n+      } else {\n+        Module.errorMessages += \"\\n\" + message;\n+      }\n+    }\n+    var writeArrayToMemory = (array, buffer) => {\n+      HEAP8.set(array, buffer);\n+    };\n+    if (Module[\"noExitRuntime\"]) noExitRuntime = Module[\"noExitRuntime\"];\n+    if (Module[\"print\"]) out = Module[\"print\"];\n+    if (Module[\"printErr\"]) err = Module[\"printErr\"];\n+    if (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n+    if (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n+    if (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n+    Module[\"writeArrayToMemory\"] = writeArrayToMemory;\n+    var wasmImports = {\n+      l: __abort_js,\n+      k: __emscripten_runtime_keepalive_clear,\n+      m: __setitimer_js,\n+      g: _copy_pixels_1,\n+      f: _copy_pixels_3,\n+      e: _copy_pixels_4,\n+      n: _emscripten_resize_heap,\n+      p: _environ_get,\n+      q: _environ_sizes_get,\n+      b: _fd_close,\n+      o: _fd_seek,\n+      c: _fd_write,\n+      r: _gray_to_rgba,\n+      i: _graya_to_rgba,\n+      d: _jsPrintWarning,\n+      j: _proc_exit,\n+      h: _rgb_to_rgba,\n+      a: _storeErrorMessage\n+    };\n+    var wasmExports = await createWasm();\n+    var ___wasm_call_ctors = wasmExports[\"t\"];\n+    var _malloc = Module[\"_malloc\"] = wasmExports[\"u\"];\n+    var _free = Module[\"_free\"] = wasmExports[\"v\"];\n+    var _jp2_decode = Module[\"_jp2_decode\"] = wasmExports[\"w\"];\n+    var __emscripten_timeout = wasmExports[\"x\"];\n+    function run() {\n+      if (runDependencies > 0) {\n+        dependenciesFulfilled = run;\n+        return;\n+      }\n+      preRun();\n+      if (runDependencies > 0) {\n+        dependenciesFulfilled = run;\n+        return;\n+      }\n+      function doRun() {\n+        Module[\"calledRun\"] = true;\n+        if (ABORT) return;\n+        initRuntime();\n+        readyPromiseResolve(Module);\n+        Module[\"onRuntimeInitialized\"]?.();\n+        postRun();\n+      }\n+      if (Module[\"setStatus\"]) {\n+        Module[\"setStatus\"](\"Running...\");\n+        setTimeout(() => {\n+          setTimeout(() => Module[\"setStatus\"](\"\"), 1);\n+          doRun();\n+        }, 1);\n+      } else {\n+        doRun();\n+      }\n+    }\n+    function preInit() {\n+      if (Module[\"preInit\"]) {\n+        if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [Module[\"preInit\"]];\n+        while (Module[\"preInit\"].length > 0) {\n+          Module[\"preInit\"].shift()();\n+        }\n+      }\n+    }\n+    preInit();\n+    run();\n+    moduleRtn = readyPromise;\n+    return moduleRtn;\n+  };\n+})();\n+\u002F* harmony default export *\u002F const openjpeg = (OpenJPEG);\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fjpx.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+class JpxError extends BaseException {\n+  constructor(msg) {\n+    super(msg, \"JpxError\");\n   }\n-  #matrixProduct(a, b, result) {\n-    result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n-    result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];\n-    result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];\n+}\n+class JpxImage {\n+  static #buffer = null;\n+  static #handler = null;\n+  static #modulePromise = null;\n+  static #useWasm = true;\n+  static #useWorkerFetch = true;\n+  static #wasmUrl = null;\n+  static setOptions({\n+    handler,\n+    useWasm,\n+    useWorkerFetch,\n+    wasmUrl\n+  }) {\n+    this.#useWasm = useWasm;\n+    this.#useWorkerFetch = useWorkerFetch;\n+    this.#wasmUrl = wasmUrl;\n+    if (!useWorkerFetch) {\n+      this.#handler = handler;\n+    }\n   }\n-  #toFlat(sourceWhitePoint, LMS, result) {\n-    result[0] = LMS[0] * 1 \u002F sourceWhitePoint[0];\n-    result[1] = LMS[1] * 1 \u002F sourceWhitePoint[1];\n-    result[2] = LMS[2] * 1 \u002F sourceWhitePoint[2];\n+  static async #getJsModule(fallbackCallback) {\n+    const path = `${this.#wasmUrl}openjpeg_nowasm_fallback.js`;\n+    let instance = null;\n+    try {\n+      const mod = await import(\n+      \u002F*webpackIgnore: true*\u002F\n+      \u002F*@vite-ignore*\u002F\n+      path);\n+      instance = mod.default();\n+    } catch (e) {\n+      warn(`JpxImage#getJsModule: ${e}`);\n+    }\n+    fallbackCallback(instance);\n   }\n-  #toD65(sourceWhitePoint, LMS, result) {\n-    const D65X = 0.95047;\n-    const D65Y = 1;\n-    const D65Z = 1.08883;\n-    result[0] = LMS[0] * D65X \u002F sourceWhitePoint[0];\n-    result[1] = LMS[1] * D65Y \u002F sourceWhitePoint[1];\n-    result[2] = LMS[2] * D65Z \u002F sourceWhitePoint[2];\n+  static async #instantiateWasm(fallbackCallback, imports, successCallback) {\n+    const filename = \"openjpeg.wasm\";\n+    try {\n+      if (!this.#buffer) {\n+        if (this.#useWorkerFetch) {\n+          this.#buffer = await fetchBinaryData(`${this.#wasmUrl}${filename}`);\n+        } else {\n+          this.#buffer = await this.#handler.sendWithPromise(\"FetchBinaryData\", {\n+            type: \"wasmFactory\",\n+            filename\n+          });\n+        }\n+      }\n+      const results = await WebAssembly.instantiate(this.#buffer, imports);\n+      return successCallback(results.instance);\n+    } catch (reason) {\n+      warn(`JpxImage#instantiateWasm: ${reason}`);\n+      this.#getJsModule(fallbackCallback);\n+      return null;\n+    } finally {\n+      this.#handler = null;\n+    }\n   }\n-  #sRGBTransferFunction(color) {\n-    if (color \u003C= 0.0031308) {\n-      return this.#adjustToRange(0, 1, 12.92 * color);\n+  static async decode(bytes, {\n+    numComponents = 4,\n+    isIndexedColormap = false,\n+    smaskInData = false,\n+    reducePower = 0\n+  } = {}) {\n+    if (!this.#modulePromise) {\n+      const {\n+        promise,\n+        resolve\n+      } = Promise.withResolvers();\n+      const promises = [promise];\n+      if (!this.#useWasm) {\n+        this.#getJsModule(resolve);\n+      } else {\n+        promises.push(openjpeg({\n+          warn: warn,\n+          instantiateWasm: this.#instantiateWasm.bind(this, resolve)\n+        }));\n+      }\n+      this.#modulePromise = Promise.race(promises);\n     }\n-    if (color >= 0.99554525) {\n-      return 1;\n+    const module = await this.#modulePromise;\n+    if (!module) {\n+      throw new JpxError(\"OpenJPEG failed to initialize\");\n+    }\n+    let ptr;\n+    try {\n+      const size = bytes.length;\n+      ptr = module._malloc(size);\n+      module.writeArrayToMemory(bytes, ptr);\n+      const ret = module._jp2_decode(ptr, size, numComponents > 0 ? numComponents : 0, !!isIndexedColormap, !!smaskInData, reducePower);\n+      if (ret) {\n+        const {\n+          errorMessages\n+        } = module;\n+        if (errorMessages) {\n+          delete module.errorMessages;\n+          throw new JpxError(errorMessages);\n+        }\n+        throw new JpxError(\"Unknown error\");\n+      }\n+      const {\n+        imageData\n+      } = module;\n+      module.imageData = null;\n+      return imageData;\n+    } finally {\n+      if (ptr) {\n+        module._free(ptr);\n+      }\n     }\n-    return this.#adjustToRange(0, 1, (1 + 0.055) * color ** (1 \u002F 2.4) - 0.055);\n   }\n-  #adjustToRange(min, max, value) {\n-    return Math.max(min, Math.min(max, value));\n+  static cleanup() {\n+    this.#modulePromise = null;\n   }\n-  #decodeL(L) {\n-    if (L \u003C 0) {\n-      return -this.#decodeL(-L);\n+  static parseImageProperties(stream) {\n+    let newByte = stream.getByte();\n+    while (newByte >= 0) {\n+      const oldByte = newByte;\n+      newByte = stream.getByte();\n+      const code = oldByte \u003C\u003C 8 | newByte;\n+      if (code === 0xff51) {\n+        stream.skip(4);\n+        const Xsiz = stream.getInt32() >>> 0;\n+        const Ysiz = stream.getInt32() >>> 0;\n+        const XOsiz = stream.getInt32() >>> 0;\n+        const YOsiz = stream.getInt32() >>> 0;\n+        stream.skip(16);\n+        const Csiz = stream.getUint16();\n+        return {\n+          width: Xsiz - XOsiz,\n+          height: Ysiz - YOsiz,\n+          bitsPerComponent: 8,\n+          componentsCount: Csiz\n+        };\n+      }\n     }\n-    if (L > 8.0) {\n-      return ((L + 16) \u002F 116) ** 3;\n+    throw new JpxError(\"No size marker found in JPX stream\");\n+  }\n+}\n+\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Foperator_list.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+function addState(parentState, pattern, checkFn, iterateFn, processFn) {\n+  let state = parentState;\n+  for (let i = 0, ii = pattern.length - 1; i \u003C ii; i++) {\n+    const item = pattern[i];\n+    state = state[item] ||= [];\n+  }\n+  state[pattern.at(-1)] = {\n+    checkFn,\n+    iterateFn,\n+    processFn\n+  };\n+}\n+const InitialState = [];\n+addState(InitialState, [OPS.save, OPS.transform, OPS.paintInlineImageXObject, OPS.restore], null, function iterateInlineImageGroup(context, i) {\n+  const fnArray = context.fnArray;\n+  const iFirstSave = context.iCurr - 3;\n+  const pos = (i - iFirstSave) % 4;\n+  switch (pos) {\n+    case 0:\n+      return fnArray[i] === OPS.save;\n+    case 1:\n+      return fnArray[i] === OPS.transform;\n+    case 2:\n+      return fnArray[i] === OPS.paintInlineImageXObject;\n+    case 3:\n+      return fnArray[i] === OPS.restore;\n+  }\n+  throw new Error(`iterateInlineImageGroup - invalid pos: ${pos}`);\n+}, function foundInlineImageGroup(context, i) {\n+  const MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;\n+  const MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;\n+  const MAX_WIDTH = 1000;\n+  const IMAGE_PADDING = 1;\n+  const fnArray = context.fnArray,\n+    argsArray = context.argsArray;\n+  const curr = context.iCurr;\n+  const iFirstSave = curr - 3;\n+  const iFirstTransform = curr - 2;\n+  const iFirstPIIXO = curr - 1;\n+  const count = Math.min(Math.floor((i - iFirstSave) \u002F 4), MAX_IMAGES_IN_INLINE_IMAGES_BLOCK);\n+  if (count \u003C MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {\n+    return i - (i - iFirstSave) % 4;\n+  }\n+  let maxX = 0;\n+  const map = [];\n+  let maxLineHeight = 0;\n+  let currentX = IMAGE_PADDING,\n+    currentY = IMAGE_PADDING;\n+  for (let q = 0; q \u003C count; q++) {\n+    const transform = argsArray[iFirstTransform + (q \u003C\u003C 2)];\n+    const img = argsArray[iFirstPIIXO + (q \u003C\u003C 2)][0];\n+    if (currentX + img.width > MAX_WIDTH) {\n+      maxX = Math.max(maxX, currentX);\n+      currentY += maxLineHeight + 2 * IMAGE_PADDING;\n+      currentX = 0;\n+      maxLineHeight = 0;\n     }\n-    return L * CalRGBCS.#DECODE_L_CONSTANT;\n+    map.push({\n+      transform,\n+      x: currentX,\n+      y: currentY,\n+      w: img.width,\n+      h: img.height\n+    });\n+    currentX += img.width + 2 * IMAGE_PADDING;\n+    maxLineHeight = Math.max(maxLineHeight, img.height);\n   }\n-  #compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {\n-    if (sourceBlackPoint[0] === 0 && sourceBlackPoint[1] === 0 && sourceBlackPoint[2] === 0) {\n-      result[0] = XYZ_Flat[0];\n-      result[1] = XYZ_Flat[1];\n-      result[2] = XYZ_Flat[2];\n-      return;\n+  const imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;\n+  const imgHeight = currentY + maxLineHeight + IMAGE_PADDING;\n+  const imgData = new Uint8Array(imgWidth * imgHeight * 4);\n+  const imgRowSize = imgWidth \u003C\u003C 2;\n+  for (let q = 0; q \u003C count; q++) {\n+    const data = argsArray[iFirstPIIXO + (q \u003C\u003C 2)][0].data;\n+    const rowSize = map[q].w \u003C\u003C 2;\n+    let dataOffset = 0;\n+    let offset = map[q].x + map[q].y * imgWidth \u003C\u003C 2;\n+    imgData.set(data.subarray(0, rowSize), offset - imgRowSize);\n+    for (let k = 0, kk = map[q].h; k \u003C kk; k++) {\n+      imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);\n+      dataOffset += rowSize;\n+      offset += imgRowSize;\n+    }\n+    imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);\n+    while (offset >= 0) {\n+      data[offset - 4] = data[offset];\n+      data[offset - 3] = data[offset + 1];\n+      data[offset - 2] = data[offset + 2];\n+      data[offset - 1] = data[offset + 3];\n+      data[offset + rowSize] = data[offset + rowSize - 4];\n+      data[offset + rowSize + 1] = data[offset + rowSize - 3];\n+      data[offset + rowSize + 2] = data[offset + rowSize - 2];\n+      data[offset + rowSize + 3] = data[offset + rowSize - 1];\n+      offset -= imgRowSize;\n     }\n-    const zeroDecodeL = this.#decodeL(0);\n-    const X_DST = zeroDecodeL;\n-    const X_SRC = this.#decodeL(sourceBlackPoint[0]);\n-    const Y_DST = zeroDecodeL;\n-    const Y_SRC = this.#decodeL(sourceBlackPoint[1]);\n-    const Z_DST = zeroDecodeL;\n-    const Z_SRC = this.#decodeL(sourceBlackPoint[2]);\n-    const X_Scale = (1 - X_DST) \u002F (1 - X_SRC);\n-    const X_Offset = 1 - X_Scale;\n-    const Y_Scale = (1 - Y_DST) \u002F (1 - Y_SRC);\n-    const Y_Offset = 1 - Y_Scale;\n-    const Z_Scale = (1 - Z_DST) \u002F (1 - Z_SRC);\n-    const Z_Offset = 1 - Z_Scale;\n-    result[0] = XYZ_Flat[0] * X_Scale + X_Offset;\n-    result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;\n-    result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;\n   }\n-  #normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {\n-    if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {\n-      result[0] = XYZ_In[0];\n-      result[1] = XYZ_In[1];\n-      result[2] = XYZ_In[2];\n-      return;\n+  const img = {\n+    width: imgWidth,\n+    height: imgHeight\n+  };\n+  if (context.isOffscreenCanvasSupported) {\n+    const canvas = new OffscreenCanvas(imgWidth, imgHeight);\n+    const ctx = canvas.getContext(\"2d\");\n+    ctx.putImageData(new ImageData(new Uint8ClampedArray(imgData.buffer), imgWidth, imgHeight), 0, 0);\n+    img.bitmap = canvas.transferToImageBitmap();\n+    img.data = null;\n+  } else {\n+    img.kind = ImageKind.RGBA_32BPP;\n+    img.data = imgData;\n+  }\n+  fnArray.splice(iFirstSave, count * 4, OPS.paintInlineImageXObjectGroup);\n+  argsArray.splice(iFirstSave, count * 4, [img, map]);\n+  return iFirstSave + 1;\n+});\n+addState(InitialState, [OPS.save, OPS.transform, OPS.paintImageMaskXObject, OPS.restore], null, function iterateImageMaskGroup(context, i) {\n+  const fnArray = context.fnArray;\n+  const iFirstSave = context.iCurr - 3;\n+  const pos = (i - iFirstSave) % 4;\n+  switch (pos) {\n+    case 0:\n+      return fnArray[i] === OPS.save;\n+    case 1:\n+      return fnArray[i] === OPS.transform;\n+    case 2:\n+      return fnArray[i] === OPS.paintImageMaskXObject;\n+    case 3:\n+      return fnArray[i] === OPS.restore;\n+  }\n+  throw new Error(`iterateImageMaskGroup - invalid pos: ${pos}`);\n+}, function foundImageMaskGroup(context, i) {\n+  const MIN_IMAGES_IN_MASKS_BLOCK = 10;\n+  const MAX_IMAGES_IN_MASKS_BLOCK = 100;\n+  const MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;\n+  const fnArray = context.fnArray,\n+    argsArray = context.argsArray;\n+  const curr = context.iCurr;\n+  const iFirstSave = curr - 3;\n+  const iFirstTransform = curr - 2;\n+  const iFirstPIMXO = curr - 1;\n+  let count = Math.floor((i - iFirstSave) \u002F 4);\n+  if (count \u003C MIN_IMAGES_IN_MASKS_BLOCK) {\n+    return i - (i - iFirstSave) % 4;\n+  }\n+  let isSameImage = false;\n+  let iTransform, transformArgs;\n+  const firstPIMXOArg0 = argsArray[iFirstPIMXO][0];\n+  const firstTransformArg0 = argsArray[iFirstTransform][0],\n+    firstTransformArg1 = argsArray[iFirstTransform][1],\n+    firstTransformArg2 = argsArray[iFirstTransform][2],\n+    firstTransformArg3 = argsArray[iFirstTransform][3];\n+  if (firstTransformArg1 === firstTransformArg2) {\n+    isSameImage = true;\n+    iTransform = iFirstTransform + 4;\n+    let iPIMXO = iFirstPIMXO + 4;\n+    for (let q = 1; q \u003C count; q++, iTransform += 4, iPIMXO += 4) {\n+      transformArgs = argsArray[iTransform];\n+      if (argsArray[iPIMXO][0] !== firstPIMXOArg0 || transformArgs[0] !== firstTransformArg0 || transformArgs[1] !== firstTransformArg1 || transformArgs[2] !== firstTransformArg2 || transformArgs[3] !== firstTransformArg3) {\n+        if (q \u003C MIN_IMAGES_IN_MASKS_BLOCK) {\n+          isSameImage = false;\n+        } else {\n+          count = q;\n+        }\n+        break;\n+      }\n     }\n-    const LMS = result;\n-    this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n-    const LMS_Flat = CalRGBCS.#tempNormalizeMatrix;\n-    this.#toFlat(sourceWhitePoint, LMS, LMS_Flat);\n-    this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result);\n   }\n-  #normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {\n-    const LMS = result;\n-    this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n-    const LMS_D65 = CalRGBCS.#tempNormalizeMatrix;\n-    this.#toD65(sourceWhitePoint, LMS, LMS_D65);\n-    this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result);\n+  if (isSameImage) {\n+    count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);\n+    const positions = new Float32Array(count * 2);\n+    iTransform = iFirstTransform;\n+    for (let q = 0; q \u003C count; q++, iTransform += 4) {\n+      transformArgs = argsArray[iTransform];\n+      positions[q \u003C\u003C 1] = transformArgs[4];\n+      positions[(q \u003C\u003C 1) + 1] = transformArgs[5];\n+    }\n+    fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectRepeat);\n+    argsArray.splice(iFirstSave, count * 4, [firstPIMXOArg0, firstTransformArg0, firstTransformArg1, firstTransformArg2, firstTransformArg3, positions]);\n+  } else {\n+    count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);\n+    const images = [];\n+    for (let q = 0; q \u003C count; q++) {\n+      transformArgs = argsArray[iFirstTransform + (q \u003C\u003C 2)];\n+      const maskParams = argsArray[iFirstPIMXO + (q \u003C\u003C 2)][0];\n+      images.push({\n+        data: maskParams.data,\n+        width: maskParams.width,\n+        height: maskParams.height,\n+        interpolate: maskParams.interpolate,\n+        count: maskParams.count,\n+        transform: transformArgs\n+      });\n+    }\n+    fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectGroup);\n+    argsArray.splice(iFirstSave, count * 4, [images]);\n   }\n-  #toRgb(src, srcOffset, dest, destOffset, scale) {\n-    const A = this.#adjustToRange(0, 1, src[srcOffset] * scale);\n-    const B = this.#adjustToRange(0, 1, src[srcOffset + 1] * scale);\n-    const C = this.#adjustToRange(0, 1, src[srcOffset + 2] * scale);\n-    const AGR = A === 1 ? 1 : A ** this.GR;\n-    const BGG = B === 1 ? 1 : B ** this.GG;\n-    const CGB = C === 1 ? 1 : C ** this.GB;\n-    const X = this.MXA * AGR + this.MXB * BGG + this.MXC * CGB;\n-    const Y = this.MYA * AGR + this.MYB * BGG + this.MYC * CGB;\n-    const Z = this.MZA * AGR + this.MZB * BGG + this.MZC * CGB;\n-    const XYZ = CalRGBCS.#tempConvertMatrix1;\n-    XYZ[0] = X;\n-    XYZ[1] = Y;\n-    XYZ[2] = Z;\n-    const XYZ_Flat = CalRGBCS.#tempConvertMatrix2;\n-    this.#normalizeWhitePointToFlat(this.whitePoint, XYZ, XYZ_Flat);\n-    const XYZ_Black = CalRGBCS.#tempConvertMatrix1;\n-    this.#compensateBlackPoint(this.blackPoint, XYZ_Flat, XYZ_Black);\n-    const XYZ_D65 = CalRGBCS.#tempConvertMatrix2;\n-    this.#normalizeWhitePointToD65(CalRGBCS.#FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65);\n-    const SRGB = CalRGBCS.#tempConvertMatrix1;\n-    this.#matrixProduct(CalRGBCS.#SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);\n-    dest[destOffset] = this.#sRGBTransferFunction(SRGB[0]) * 255;\n-    dest[destOffset + 1] = this.#sRGBTransferFunction(SRGB[1]) * 255;\n-    dest[destOffset + 2] = this.#sRGBTransferFunction(SRGB[2]) * 255;\n+  return iFirstSave + 1;\n+});\n+addState(InitialState, [OPS.save, OPS.transform, OPS.paintImageXObject, OPS.restore], function (context) {\n+  const argsArray = context.argsArray;\n+  const iFirstTransform = context.iCurr - 2;\n+  return argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0;\n+}, function iterateImageGroup(context, i) {\n+  const fnArray = context.fnArray,\n+    argsArray = context.argsArray;\n+  const iFirstSave = context.iCurr - 3;\n+  const pos = (i - iFirstSave) % 4;\n+  switch (pos) {\n+    case 0:\n+      return fnArray[i] === OPS.save;\n+    case 1:\n+      if (fnArray[i] !== OPS.transform) {\n+        return false;\n+      }\n+      const iFirstTransform = context.iCurr - 2;\n+      const firstTransformArg0 = argsArray[iFirstTransform][0];\n+      const firstTransformArg3 = argsArray[iFirstTransform][3];\n+      if (argsArray[i][0] !== firstTransformArg0 || argsArray[i][1] !== 0 || argsArray[i][2] !== 0 || argsArray[i][3] !== firstTransformArg3) {\n+        return false;\n+      }\n+      return true;\n+    case 2:\n+      if (fnArray[i] !== OPS.paintImageXObject) {\n+        return false;\n+      }\n+      const iFirstPIXO = context.iCurr - 1;\n+      const firstPIXOArg0 = argsArray[iFirstPIXO][0];\n+      if (argsArray[i][0] !== firstPIXOArg0) {\n+        return false;\n+      }\n+      return true;\n+    case 3:\n+      return fnArray[i] === OPS.restore;\n   }\n-  getRgbItem(src, srcOffset, dest, destOffset) {\n-    this.#toRgb(src, srcOffset, dest, destOffset, 1);\n+  throw new Error(`iterateImageGroup - invalid pos: ${pos}`);\n+}, function (context, i) {\n+  const MIN_IMAGES_IN_BLOCK = 3;\n+  const MAX_IMAGES_IN_BLOCK = 1000;\n+  const fnArray = context.fnArray,\n+    argsArray = context.argsArray;\n+  const curr = context.iCurr;\n+  const iFirstSave = curr - 3;\n+  const iFirstTransform = curr - 2;\n+  const iFirstPIXO = curr - 1;\n+  const firstPIXOArg0 = argsArray[iFirstPIXO][0];\n+  const firstTransformArg0 = argsArray[iFirstTransform][0];\n+  const firstTransformArg3 = argsArray[iFirstTransform][3];\n+  const count = Math.min(Math.floor((i - iFirstSave) \u002F 4), MAX_IMAGES_IN_BLOCK);\n+  if (count \u003C MIN_IMAGES_IN_BLOCK) {\n+    return i - (i - iFirstSave) % 4;\n   }\n-  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n-    const scale = 1 \u002F ((1 \u003C\u003C bits) - 1);\n-    for (let i = 0; i \u003C count; ++i) {\n-      this.#toRgb(src, srcOffset, dest, destOffset, scale);\n-      srcOffset += 3;\n-      destOffset += 3 + alpha01;\n+  const positions = new Float32Array(count * 2);\n+  let iTransform = iFirstTransform;\n+  for (let q = 0; q \u003C count; q++, iTransform += 4) {\n+    const transformArgs = argsArray[iTransform];\n+    positions[q \u003C\u003C 1] = transformArgs[4];\n+    positions[(q \u003C\u003C 1) + 1] = transformArgs[5];\n+  }\n+  const args = [firstPIXOArg0, firstTransformArg0, firstTransformArg3, positions];\n+  fnArray.splice(iFirstSave, count * 4, OPS.paintImageXObjectRepeat);\n+  argsArray.splice(iFirstSave, count * 4, args);\n+  return iFirstSave + 1;\n+});\n+addState(InitialState, [OPS.beginText, OPS.setFont, OPS.setTextMatrix, OPS.showText, OPS.endText], null, function iterateShowTextGroup(context, i) {\n+  const fnArray = context.fnArray,\n+    argsArray = context.argsArray;\n+  const iFirstSave = context.iCurr - 4;\n+  const pos = (i - iFirstSave) % 5;\n+  switch (pos) {\n+    case 0:\n+      return fnArray[i] === OPS.beginText;\n+    case 1:\n+      return fnArray[i] === OPS.setFont;\n+    case 2:\n+      return fnArray[i] === OPS.setTextMatrix;\n+    case 3:\n+      if (fnArray[i] !== OPS.showText) {\n+        return false;\n+      }\n+      const iFirstSetFont = context.iCurr - 3;\n+      const firstSetFontArg0 = argsArray[iFirstSetFont][0];\n+      const firstSetFontArg1 = argsArray[iFirstSetFont][1];\n+      if (argsArray[i][0] !== firstSetFontArg0 || argsArray[i][1] !== firstSetFontArg1) {\n+        return false;\n+      }\n+      return true;\n+    case 4:\n+      return fnArray[i] === OPS.endText;\n+  }\n+  throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`);\n+}, function (context, i) {\n+  const MIN_CHARS_IN_BLOCK = 3;\n+  const MAX_CHARS_IN_BLOCK = 1000;\n+  const fnArray = context.fnArray,\n+    argsArray = context.argsArray;\n+  const curr = context.iCurr;\n+  const iFirstBeginText = curr - 4;\n+  const iFirstSetFont = curr - 3;\n+  const iFirstSetTextMatrix = curr - 2;\n+  const iFirstShowText = curr - 1;\n+  const iFirstEndText = curr;\n+  const firstSetFontArg0 = argsArray[iFirstSetFont][0];\n+  const firstSetFontArg1 = argsArray[iFirstSetFont][1];\n+  let count = Math.min(Math.floor((i - iFirstBeginText) \u002F 5), MAX_CHARS_IN_BLOCK);\n+  if (count \u003C MIN_CHARS_IN_BLOCK) {\n+    return i - (i - iFirstBeginText) % 5;\n+  }\n+  let iFirst = iFirstBeginText;\n+  if (iFirstBeginText >= 4 && fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] && fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] && fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] && fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] && argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 && argsArray[iFirstBeginText - 4][1] === firstSetFontArg1) {\n+    count++;\n+    iFirst -= 5;\n+  }\n+  let iEndText = iFirst + 4;\n+  for (let q = 1; q \u003C count; q++) {\n+    fnArray.splice(iEndText, 3);\n+    argsArray.splice(iEndText, 3);\n+    iEndText += 2;\n+  }\n+  return iEndText + 1;\n+});\n+addState(InitialState, [OPS.save, OPS.transform, OPS.constructPath, OPS.restore], context => {\n+  const argsArray = context.argsArray;\n+  const iFirstConstructPath = context.iCurr - 1;\n+  const op = argsArray[iFirstConstructPath][0];\n+  if (op !== OPS.stroke && op !== OPS.closeStroke && op !== OPS.fillStroke && op !== OPS.eoFillStroke && op !== OPS.closeFillStroke && op !== OPS.closeEOFillStroke) {\n+    return true;\n+  }\n+  const iFirstTransform = context.iCurr - 2;\n+  const transform = argsArray[iFirstTransform];\n+  return transform[0] === 1 && transform[1] === 0 && transform[2] === 0 && transform[3] === 1;\n+}, () => false, (context, i) => {\n+  const {\n+    fnArray,\n+    argsArray\n+  } = context;\n+  const curr = context.iCurr;\n+  const iFirstSave = curr - 3;\n+  const iFirstTransform = curr - 2;\n+  const iFirstConstructPath = curr - 1;\n+  const args = argsArray[iFirstConstructPath];\n+  const transform = argsArray[iFirstTransform];\n+  const [, [buffer], minMax] = args;\n+  if (minMax) {\n+    Util.scaleMinMax(transform, minMax);\n+    for (let k = 0, kk = buffer.length; k \u003C kk;) {\n+      switch (buffer[k++]) {\n+        case DrawOPS.moveTo:\n+        case DrawOPS.lineTo:\n+          Util.applyTransform(buffer, transform, k);\n+          k += 2;\n+          break;\n+        case DrawOPS.curveTo:\n+          Util.applyTransformToBezier(buffer, transform, k);\n+          k += 6;\n+          break;\n+      }\n     }\n   }\n-  getOutputLength(inputLength, alpha01) {\n-    return inputLength * (3 + alpha01) \u002F 3 | 0;\n+  fnArray.splice(iFirstSave, 4, OPS.constructPath);\n+  argsArray.splice(iFirstSave, 4, args);\n+  return iFirstSave + 1;\n+});\n+class NullOptimizer {\n+  constructor(queue) {\n+    this.queue = queue;\n+  }\n+  _optimize() {}\n+  push(fn, args) {\n+    this.queue.fnArray.push(fn);\n+    this.queue.argsArray.push(args);\n+    this._optimize();\n   }\n+  flush() {}\n+  reset() {}\n }\n-class LabCS extends ColorSpace {\n-  constructor(whitePoint, blackPoint, range) {\n-    super(\"Lab\", 3);\n-    if (!whitePoint) {\n-      throw new FormatError(\"WhitePoint missing - required for color space Lab\");\n-    }\n-    [this.XW, this.YW, this.ZW] = whitePoint;\n-    [this.amin, this.amax, this.bmin, this.bmax] = range || [-100, 100, -100, 100];\n-    [this.XB, this.YB, this.ZB] = blackPoint || [0, 0, 0];\n-    if (this.XW \u003C 0 || this.ZW \u003C 0 || this.YW !== 1) {\n-      throw new FormatError(\"Invalid WhitePoint components, no fallback available\");\n+class QueueOptimizer extends NullOptimizer {\n+  constructor(queue) {\n+    super(queue);\n+    this.state = null;\n+    this.context = {\n+      iCurr: 0,\n+      fnArray: queue.fnArray,\n+      argsArray: queue.argsArray,\n+      isOffscreenCanvasSupported: OperatorList.isOffscreenCanvasSupported\n+    };\n+    this.match = null;\n+    this.lastProcessed = 0;\n+  }\n+  _optimize() {\n+    const fnArray = this.queue.fnArray;\n+    let i = this.lastProcessed,\n+      ii = fnArray.length;\n+    let state = this.state;\n+    let match = this.match;\n+    if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) {\n+      this.lastProcessed = ii;\n+      return;\n     }\n-    if (this.XB \u003C 0 || this.YB \u003C 0 || this.ZB \u003C 0) {\n-      info(\"Invalid BlackPoint, falling back to default\");\n-      this.XB = this.YB = this.ZB = 0;\n+    const context = this.context;\n+    while (i \u003C ii) {\n+      if (match) {\n+        const iterate = (0, match.iterateFn)(context, i);\n+        if (iterate) {\n+          i++;\n+          continue;\n+        }\n+        i = (0, match.processFn)(context, i + 1);\n+        ii = fnArray.length;\n+        match = null;\n+        state = null;\n+        if (i >= ii) {\n+          break;\n+        }\n+      }\n+      state = (state || InitialState)[fnArray[i]];\n+      if (!state || Array.isArray(state)) {\n+        i++;\n+        continue;\n+      }\n+      context.iCurr = i;\n+      i++;\n+      if (state.checkFn && !(0, state.checkFn)(context)) {\n+        state = null;\n+        continue;\n+      }\n+      match = state;\n+      state = null;\n     }\n-    if (this.amin > this.amax || this.bmin > this.bmax) {\n-      info(\"Invalid Range, falling back to defaults\");\n-      this.amin = -100;\n-      this.amax = 100;\n-      this.bmin = -100;\n-      this.bmax = 100;\n+    this.state = state;\n+    this.match = match;\n+    this.lastProcessed = i;\n+  }\n+  flush() {\n+    while (this.match) {\n+      const length = this.queue.fnArray.length;\n+      this.lastProcessed = (0, this.match.processFn)(this.context, length);\n+      this.match = null;\n+      this.state = null;\n+      this._optimize();\n     }\n   }\n-  #fn_g(x) {\n-    return x >= 6 \u002F 29 ? x ** 3 : 108 \u002F 841 * (x - 4 \u002F 29);\n+  reset() {\n+    this.state = null;\n+    this.match = null;\n+    this.lastProcessed = 0;\n   }\n-  #decode(value, high1, low2, high2) {\n-    return low2 + value * (high2 - low2) \u002F high1;\n+}\n+class OperatorList {\n+  static CHUNK_SIZE = 1000;\n+  static CHUNK_SIZE_ABOUT = this.CHUNK_SIZE - 5;\n+  static isOffscreenCanvasSupported = false;\n+  constructor(intent = 0, streamSink) {\n+    this._streamSink = streamSink;\n+    this.fnArray = [];\n+    this.argsArray = [];\n+    this.optimizer = streamSink && !(intent & RenderingIntentFlag.OPLIST) ? new QueueOptimizer(this) : new NullOptimizer(this);\n+    this.dependencies = new Set();\n+    this._totalLength = 0;\n+    this.weight = 0;\n+    this._resolved = streamSink ? null : Promise.resolve();\n   }\n-  #toRgb(src, srcOffset, maxVal, dest, destOffset) {\n-    let Ls = src[srcOffset];\n-    let as = src[srcOffset + 1];\n-    let bs = src[srcOffset + 2];\n-    if (maxVal !== false) {\n-      Ls = this.#decode(Ls, maxVal, 0, 100);\n-      as = this.#decode(as, maxVal, this.amin, this.amax);\n-      bs = this.#decode(bs, maxVal, this.bmin, this.bmax);\n+  static setOptions({\n+    isOffscreenCanvasSupported\n+  }) {\n+    this.isOffscreenCanvasSupported = isOffscreenCanvasSupported;\n+  }\n+  get length() {\n+    return this.argsArray.length;\n+  }\n+  get ready() {\n+    return this._resolved || this._streamSink.ready;\n+  }\n+  get totalLength() {\n+    return this._totalLength + this.length;\n+  }\n+  addOp(fn, args) {\n+    this.optimizer.push(fn, args);\n+    this.weight++;\n+    if (this._streamSink) {\n+      if (this.weight >= OperatorList.CHUNK_SIZE) {\n+        this.flush();\n+      } else if (this.weight >= OperatorList.CHUNK_SIZE_ABOUT && (fn === OPS.restore || fn === OPS.endText)) {\n+        this.flush();\n+      }\n     }\n-    if (as > this.amax) {\n-      as = this.amax;\n-    } else if (as \u003C this.amin) {\n-      as = this.amin;\n+  }\n+  addImageOps(fn, args, optionalContent, hasMask = false) {\n+    if (hasMask) {\n+      this.addOp(OPS.save);\n+      this.addOp(OPS.setGState, [[[\"SMask\", false]]]);\n     }\n-    if (bs > this.bmax) {\n-      bs = this.bmax;\n-    } else if (bs \u003C this.bmin) {\n-      bs = this.bmin;\n+    if (optionalContent !== undefined) {\n+      this.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n     }\n-    const M = (Ls + 16) \u002F 116;\n-    const L = M + as \u002F 500;\n-    const N = M - bs \u002F 200;\n-    const X = this.XW * this.#fn_g(L);\n-    const Y = this.YW * this.#fn_g(M);\n-    const Z = this.ZW * this.#fn_g(N);\n-    let r, g, b;\n-    if (this.ZW \u003C 1) {\n-      r = X * 3.1339 + Y * -1.617 + Z * -0.4906;\n-      g = X * -0.9785 + Y * 1.916 + Z * 0.0333;\n-      b = X * 0.072 + Y * -0.229 + Z * 1.4057;\n-    } else {\n-      r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;\n-      g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;\n-      b = X * 0.0557 + Y * -0.204 + Z * 1.057;\n+    this.addOp(fn, args);\n+    if (optionalContent !== undefined) {\n+      this.addOp(OPS.endMarkedContent, []);\n+    }\n+    if (hasMask) {\n+      this.addOp(OPS.restore);\n     }\n-    dest[destOffset] = Math.sqrt(r) * 255;\n-    dest[destOffset + 1] = Math.sqrt(g) * 255;\n-    dest[destOffset + 2] = Math.sqrt(b) * 255;\n   }\n-  getRgbItem(src, srcOffset, dest, destOffset) {\n-    this.#toRgb(src, srcOffset, false, dest, destOffset);\n+  addDependency(dependency) {\n+    if (this.dependencies.has(dependency)) {\n+      return;\n+    }\n+    this.dependencies.add(dependency);\n+    this.addOp(OPS.dependency, [dependency]);\n   }\n-  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n-    const maxVal = (1 \u003C\u003C bits) - 1;\n-    for (let i = 0; i \u003C count; i++) {\n-      this.#toRgb(src, srcOffset, maxVal, dest, destOffset);\n-      srcOffset += 3;\n-      destOffset += 3 + alpha01;\n+  addDependencies(dependencies) {\n+    for (const dependency of dependencies) {\n+      this.addDependency(dependency);\n     }\n   }\n-  getOutputLength(inputLength, alpha01) {\n-    return inputLength * (3 + alpha01) \u002F 3 | 0;\n+  addOpList(opList) {\n+    if (!(opList instanceof OperatorList)) {\n+      warn('addOpList - ignoring invalid \"opList\" parameter.');\n+      return;\n+    }\n+    for (const dependency of opList.dependencies) {\n+      this.dependencies.add(dependency);\n+    }\n+    for (let i = 0, ii = opList.length; i \u003C ii; i++) {\n+      this.addOp(opList.fnArray[i], opList.argsArray[i]);\n+    }\n   }\n-  isDefaultDecode(decodeMap, bpc) {\n-    return true;\n+  getIR() {\n+    return {\n+      fnArray: this.fnArray,\n+      argsArray: this.argsArray,\n+      length: this.length\n+    };\n   }\n-  get usesZeroToOneRange() {\n-    return shadow(this, \"usesZeroToOneRange\", false);\n+  get _transfers() {\n+    const transfers = [];\n+    const {\n+      fnArray,\n+      argsArray,\n+      length\n+    } = this;\n+    for (let i = 0; i \u003C length; i++) {\n+      switch (fnArray[i]) {\n+        case OPS.paintInlineImageXObject:\n+        case OPS.paintInlineImageXObjectGroup:\n+        case OPS.paintImageMaskXObject:\n+          {\n+            const {\n+              bitmap,\n+              data\n+            } = argsArray[i][0];\n+            if (bitmap || data?.buffer) {\n+              transfers.push(bitmap || data.buffer);\n+            }\n+            break;\n+          }\n+        case OPS.constructPath:\n+          {\n+            const [, [data], minMax] = argsArray[i];\n+            if (data) {\n+              transfers.push(data.buffer, minMax.buffer);\n+            }\n+            break;\n+          }\n+        case OPS.paintFormXObjectBegin:\n+          const [matrix, bbox] = argsArray[i];\n+          if (matrix) {\n+            transfers.push(matrix.buffer);\n+          }\n+          if (bbox) {\n+            transfers.push(bbox.buffer);\n+          }\n+          break;\n+        case OPS.setTextMatrix:\n+          transfers.push(argsArray[i][0].buffer);\n+          break;\n+      }\n+    }\n+    return transfers;\n+  }\n+  flush(lastChunk = false, separateAnnots = null) {\n+    this.optimizer.flush();\n+    const length = this.length;\n+    this._totalLength += length;\n+    this._streamSink.enqueue({\n+      fnArray: this.fnArray,\n+      argsArray: this.argsArray,\n+      lastChunk,\n+      separateAnnots,\n+      length\n+    }, 1, this._transfers);\n+    this.dependencies.clear();\n+    this.fnArray.length = 0;\n+    this.argsArray.length = 0;\n+    this.weight = 0;\n+    this.optimizer.reset();\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fbinary_cmap.js\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.find.js\n+var es_iterator_find = __webpack_require__(116);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.regexp.flags.js\n+var es_regexp_flags = __webpack_require__(9479);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.for-each.js\n+var es_iterator_for_each = __webpack_require__(7588);\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fbinary_cmap.js\n+\n+\n+\n+\n+\n+\n+\n \n function hexToInt(a, size) {\n   let n = 0;\n@@ -3107,142 +12123,14 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fdecode_stream.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fascii_85_stream.js\n+\n+\n+\n+\n \n \n-const emptyBuffer = new Uint8Array(0);\n-class DecodeStream extends BaseStream {\n-  constructor(maybeMinBufferLength) {\n-    super();\n-    this._rawMinBufferLength = maybeMinBufferLength || 0;\n-    this.pos = 0;\n-    this.bufferLength = 0;\n-    this.eof = false;\n-    this.buffer = emptyBuffer;\n-    this.minBufferLength = 512;\n-    if (maybeMinBufferLength) {\n-      while (this.minBufferLength \u003C maybeMinBufferLength) {\n-        this.minBufferLength *= 2;\n-      }\n-    }\n-  }\n-  get isEmpty() {\n-    while (!this.eof && this.bufferLength === 0) {\n-      this.readBlock();\n-    }\n-    return this.bufferLength === 0;\n-  }\n-  ensureBuffer(requested) {\n-    const buffer = this.buffer;\n-    if (requested \u003C= buffer.byteLength) {\n-      return buffer;\n-    }\n-    let size = this.minBufferLength;\n-    while (size \u003C requested) {\n-      size *= 2;\n-    }\n-    const buffer2 = new Uint8Array(size);\n-    buffer2.set(buffer);\n-    return this.buffer = buffer2;\n-  }\n-  getByte() {\n-    const pos = this.pos;\n-    while (this.bufferLength \u003C= pos) {\n-      if (this.eof) {\n-        return -1;\n-      }\n-      this.readBlock();\n-    }\n-    return this.buffer[this.pos++];\n-  }\n-  getBytes(length, ignoreColorSpace = false) {\n-    const pos = this.pos;\n-    let end;\n-    if (length) {\n-      this.ensureBuffer(pos + length);\n-      end = pos + length;\n-      while (!this.eof && this.bufferLength \u003C end) {\n-        this.readBlock(ignoreColorSpace);\n-      }\n-      const bufEnd = this.bufferLength;\n-      if (end > bufEnd) {\n-        end = bufEnd;\n-      }\n-    } else {\n-      while (!this.eof) {\n-        this.readBlock(ignoreColorSpace);\n-      }\n-      end = this.bufferLength;\n-    }\n-    this.pos = end;\n-    return this.buffer.subarray(pos, end);\n-  }\n-  reset() {\n-    this.pos = 0;\n-  }\n-  makeSubStream(start, length, dict = null) {\n-    if (length === undefined) {\n-      while (!this.eof) {\n-        this.readBlock();\n-      }\n-    } else {\n-      const end = start + length;\n-      while (this.bufferLength \u003C= end && !this.eof) {\n-        this.readBlock();\n-      }\n-    }\n-    return new Stream(this.buffer, start, length, dict);\n-  }\n-  getBaseStreams() {\n-    return this.str ? this.str.getBaseStreams() : null;\n-  }\n-}\n-class StreamsSequenceStream extends DecodeStream {\n-  constructor(streams, onError = null) {\n-    let maybeLength = 0;\n-    for (const stream of streams) {\n-      maybeLength += stream instanceof DecodeStream ? stream._rawMinBufferLength : stream.length;\n-    }\n-    super(maybeLength);\n-    this.streams = streams;\n-    this._onError = onError;\n-  }\n-  readBlock() {\n-    const streams = this.streams;\n-    if (streams.length === 0) {\n-      this.eof = true;\n-      return;\n-    }\n-    const stream = streams.shift();\n-    let chunk;\n-    try {\n-      chunk = stream.getBytes();\n-    } catch (reason) {\n-      if (this._onError) {\n-        this._onError(reason, stream.dict?.objId);\n-        return;\n-      }\n-      throw reason;\n-    }\n-    const bufferLength = this.bufferLength;\n-    const newLength = bufferLength + chunk.length;\n-    const buffer = this.ensureBuffer(newLength);\n-    buffer.set(chunk, bufferLength);\n-    this.bufferLength = newLength;\n-  }\n-  getBaseStreams() {\n-    const baseStreamsBuf = [];\n-    for (const stream of this.streams) {\n-      const baseStreams = stream.getBaseStreams();\n-      if (baseStreams) {\n-        baseStreamsBuf.push(...baseStreams);\n-      }\n-    }\n-    return baseStreamsBuf.length > 0 ? baseStreamsBuf : null;\n-  }\n-}\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fascii_85_stream.js\n \n \n class Ascii85Stream extends DecodeStream {\n@@ -3309,7 +12197,7 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fascii_hex_stream.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fascii_hex_stream.js\n \n class AsciiHexStream extends DecodeStream {\n   constructor(str, maybeLength) {\n@@ -3360,7 +12248,10 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fccitt.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fccitt.js\n+\n+\n+\n \n const ccittEOL = -2;\n const ccittEOF = -1;\n@@ -3381,7 +12272,7 @@\n const blackTable3 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [6, 9], [6, 8], [5, 7], [5, 7], [4, 6], [4, 6], [4, 6], [4, 6], [4, 5], [4, 5], [4, 5], [4, 5], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2]];\n class CCITTFaxDecoder {\n   constructor(source, options = {}) {\n-    if (!source || typeof source.next !== \"function\") {\n+    if (typeof source?.next !== \"function\") {\n       throw new Error('CCITTFaxDecoder - invalid \"source\" parameter.');\n     }\n     this.source = source;\n@@ -3870,7 +12761,7 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fccitt_stream.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fccitt_stream.js\n \n \n \n@@ -3910,7 +12801,16 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fflate_stream.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fflate_stream.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n const codeLenCodeMap = new Int32Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n@@ -3940,6 +12840,52 @@\n     this.codeSize = 0;\n     this.codeBuf = 0;\n   }\n+  async getImageData(length, _decoderOptions) {\n+    const data = await this.asyncGetBytes();\n+    if (!data) {\n+      return this.getBytes(length);\n+    }\n+    if (data.length \u003C= length) {\n+      return data;\n+    }\n+    return data.subarray(0, length);\n+  }\n+  async asyncGetBytes() {\n+    this.str.reset();\n+    const bytes = this.str.getBytes();\n+    try {\n+      const {\n+        readable,\n+        writable\n+      } = new DecompressionStream(\"deflate\");\n+      const writer = writable.getWriter();\n+      await writer.ready;\n+      writer.write(bytes).then(async () => {\n+        await writer.ready;\n+        await writer.close();\n+      }).catch(() => {});\n+      const chunks = [];\n+      let totalLength = 0;\n+      for await (const chunk of readable) {\n+        chunks.push(chunk);\n+        totalLength += chunk.byteLength;\n+      }\n+      const data = new Uint8Array(totalLength);\n+      let offset = 0;\n+      for (const chunk of chunks) {\n+        data.set(chunk, offset);\n+        offset += chunk.byteLength;\n+      }\n+      return data;\n+    } catch {\n+      this.str = new Stream(bytes, 2, bytes.length, this.str.dict);\n+      this.reset();\n+      return null;\n+    }\n+  }\n+  get isAsync() {\n+    return true;\n+  }\n   getBits(bits) {\n     const str = this.str;\n     let codeSize = this.codeSize;\n@@ -4015,9 +12961,14 @@\n     this.eof = true;\n   }\n   readBlock() {\n-    let buffer, len;\n+    let buffer, hdr, len;\n     const str = this.str;\n-    let hdr = this.getBits(3);\n+    try {\n+      hdr = this.getBits(3);\n+    } catch (ex) {\n+      this.#endsStreamOnError(ex.message);\n+      return;\n+    }\n     if (hdr & 1) {\n       this.eof = true;\n     }\n@@ -4156,7 +13107,7 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Farithmetic_decoder.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Farithmetic_decoder.js\n const QeTable = [{\n   qe: 0x5601,\n   nmps: 1,\n@@ -4482,7 +13433,15 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fjbig2.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fjbig2.js\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n \n@@ -4515,8 +13474,6 @@\n     return shadow(this, \"contextCache\", cache);\n   }\n }\n-const MAX_INT_32 = 2 ** 31 - 1;\n-const MIN_INT_32 = -(2 ** 31);\n function decodeInteger(contextCache, procedure, decoder) {\n   const contexts = contextCache.getContexts(procedure);\n   let prev = 1;\n@@ -4782,9 +13739,7 @@\n   }\n   const useskip = !!skip;\n   const template = CodingTemplates[templateIndex].concat(at);\n-  template.sort(function (a, b) {\n-    return a.y - b.y || a.x - b.x;\n-  });\n+  template.sort((a, b) => a.y - b.y || a.x - b.x);\n   const templateLength = template.length;\n   const templateX = new Int8Array(templateLength);\n   const templateY = new Int8Array(templateLength);\n@@ -5067,9 +14022,7 @@\n   for (i = 0; i \u003C height; i++) {\n     row = new Uint8Array(width);\n     if (defaultPixelValue) {\n-      for (let j = 0; j \u003C width; j++) {\n-        row[j] = defaultPixelValue;\n-      }\n+      row.fill(defaultPixelValue);\n     }\n     bitmap.push(row);\n   }\n@@ -5222,9 +14175,7 @@\n   for (i = 0; i \u003C regionHeight; i++) {\n     row = new Uint8Array(regionWidth);\n     if (defaultPixelValue) {\n-      for (j = 0; j \u003C regionWidth; j++) {\n-        row[j] = defaultPixelValue;\n-      }\n+      row.fill(defaultPixelValue);\n     }\n     regionBitmap.push(row);\n   }\n@@ -5643,9 +14594,6 @@\n   }\n   return visitor.buffer;\n }\n-function parseJbig2(data) {\n-  throw new Error(\"Not implemented: parseJbig2\");\n-}\n class SimpleSegmentVisitor {\n   onPageInformation(info) {\n     this.currentPageInfo = info;\n@@ -6233,7 +15181,8 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fjbig2_stream.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fjbig2_stream.js\n+\n \n \n \n@@ -6252,9 +15201,13 @@\n   }\n   ensureBuffer(requested) {}\n   readBlock() {\n+    this.decodeImage();\n+  }\n+  decodeImage(bytes) {\n     if (this.eof) {\n-      return;\n+      return this.buffer;\n     }\n+    bytes ||= this.bytes;\n     const jbig2Image = new Jbig2Image();\n     const chunks = [];\n     if (this.params instanceof Dict) {\n@@ -6269,9 +15222,9 @@\n       }\n     }\n     chunks.push({\n-      data: this.bytes,\n+      data: bytes,\n       start: 0,\n-      end: this.bytes.length\n+      end: bytes.length\n     });\n     const data = jbig2Image.parseChunks(chunks);\n     const dataLength = data.length;\n@@ -6281,1202 +15234,19 @@\n     this.buffer = data;\n     this.bufferLength = dataLength;\n     this.eof = true;\n+    return this.buffer;\n   }\n-}\n-\n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fshared\u002Fimage_utils.js\n-\n-function convertToRGBA(params) {\n-  switch (params.kind) {\n-    case ImageKind.GRAYSCALE_1BPP:\n-      return convertBlackAndWhiteToRGBA(params);\n-    case ImageKind.RGB_24BPP:\n-      return convertRGBToRGBA(params);\n-  }\n-  return null;\n-}\n-function convertBlackAndWhiteToRGBA({\n-  src,\n-  srcPos = 0,\n-  dest,\n-  width,\n-  height,\n-  nonBlackColor = 0xffffffff,\n-  inverseDecode = false\n-}) {\n-  const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n-  const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];\n-  const widthInSource = width >> 3;\n-  const widthRemainder = width & 7;\n-  const srcLength = src.length;\n-  dest = new Uint32Array(dest.buffer);\n-  let destPos = 0;\n-  for (let i = 0; i \u003C height; i++) {\n-    for (const max = srcPos + widthInSource; srcPos \u003C max; srcPos++) {\n-      const elem = srcPos \u003C srcLength ? src[srcPos] : 255;\n-      dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n-      dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n-      dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n-      dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n-      dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n-      dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n-      dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n-      dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n-    }\n-    if (widthRemainder === 0) {\n-      continue;\n-    }\n-    const elem = srcPos \u003C srcLength ? src[srcPos++] : 255;\n-    for (let j = 0; j \u003C widthRemainder; j++) {\n-      dest[destPos++] = elem & 1 \u003C\u003C 7 - j ? oneMapping : zeroMapping;\n-    }\n-  }\n-  return {\n-    srcPos,\n-    destPos\n-  };\n-}\n-function convertRGBToRGBA({\n-  src,\n-  srcPos = 0,\n-  dest,\n-  destPos = 0,\n-  width,\n-  height\n-}) {\n-  let i = 0;\n-  const len32 = src.length >> 2;\n-  const src32 = new Uint32Array(src.buffer, srcPos, len32);\n-  if (FeatureTest.isLittleEndian) {\n-    for (; i \u003C len32 - 2; i += 3, destPos += 4) {\n-      const s1 = src32[i];\n-      const s2 = src32[i + 1];\n-      const s3 = src32[i + 2];\n-      dest[destPos] = s1 | 0xff000000;\n-      dest[destPos + 1] = s1 >>> 24 | s2 \u003C\u003C 8 | 0xff000000;\n-      dest[destPos + 2] = s2 >>> 16 | s3 \u003C\u003C 16 | 0xff000000;\n-      dest[destPos + 3] = s3 >>> 8 | 0xff000000;\n-    }\n-    for (let j = i * 4, jj = src.length; j \u003C jj; j += 3) {\n-      dest[destPos++] = src[j] | src[j + 1] \u003C\u003C 8 | src[j + 2] \u003C\u003C 16 | 0xff000000;\n-    }\n-  } else {\n-    for (; i \u003C len32 - 2; i += 3, destPos += 4) {\n-      const s1 = src32[i];\n-      const s2 = src32[i + 1];\n-      const s3 = src32[i + 2];\n-      dest[destPos] = s1 | 0xff;\n-      dest[destPos + 1] = s1 \u003C\u003C 24 | s2 >>> 8 | 0xff;\n-      dest[destPos + 2] = s2 \u003C\u003C 16 | s3 >>> 16 | 0xff;\n-      dest[destPos + 3] = s3 \u003C\u003C 8 | 0xff;\n-    }\n-    for (let j = i * 4, jj = src.length; j \u003C jj; j += 3) {\n-      dest[destPos++] = src[j] \u003C\u003C 24 | src[j + 1] \u003C\u003C 16 | src[j + 2] \u003C\u003C 8 | 0xff;\n-    }\n-  }\n-  return {\n-    srcPos,\n-    destPos\n-  };\n-}\n-function grayToRGBA(src, dest) {\n-  if (FeatureTest.isLittleEndian) {\n-    for (let i = 0, ii = src.length; i \u003C ii; i++) {\n-      dest[i] = src[i] * 0x10101 | 0xff000000;\n-    }\n-  } else {\n-    for (let i = 0, ii = src.length; i \u003C ii; i++) {\n-      dest[i] = src[i] * 0x1010100 | 0x000000ff;\n-    }\n+  get canAsyncDecodeImageFromBuffer() {\n+    return this.stream.isAsync;\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fjpg.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fjpx_stream.js\n \n \n \n-class JpegError extends BaseException {\n-  constructor(msg) {\n-    super(msg, \"JpegError\");\n-  }\n-}\n-class DNLMarkerError extends BaseException {\n-  constructor(message, scanLines) {\n-    super(message, \"DNLMarkerError\");\n-    this.scanLines = scanLines;\n-  }\n-}\n-class EOIMarkerError extends BaseException {\n-  constructor(msg) {\n-    super(msg, \"EOIMarkerError\");\n-  }\n-}\n-const dctZigZag = new Uint8Array([0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63]);\n-const dctCos1 = 4017;\n-const dctSin1 = 799;\n-const dctCos3 = 3406;\n-const dctSin3 = 2276;\n-const dctCos6 = 1567;\n-const dctSin6 = 3784;\n-const dctSqrt2 = 5793;\n-const dctSqrt1d2 = 2896;\n-function buildHuffmanTable(codeLengths, values) {\n-  let k = 0,\n-    i,\n-    j,\n-    length = 16;\n-  while (length > 0 && !codeLengths[length - 1]) {\n-    length--;\n-  }\n-  const code = [{\n-    children: [],\n-    index: 0\n-  }];\n-  let p = code[0],\n-    q;\n-  for (i = 0; i \u003C length; i++) {\n-    for (j = 0; j \u003C codeLengths[i]; j++) {\n-      p = code.pop();\n-      p.children[p.index] = values[k];\n-      while (p.index > 0) {\n-        p = code.pop();\n-      }\n-      p.index++;\n-      code.push(p);\n-      while (code.length \u003C= i) {\n-        code.push(q = {\n-          children: [],\n-          index: 0\n-        });\n-        p.children[p.index] = q.children;\n-        p = q;\n-      }\n-      k++;\n-    }\n-    if (i + 1 \u003C length) {\n-      code.push(q = {\n-        children: [],\n-        index: 0\n-      });\n-      p.children[p.index] = q.children;\n-      p = q;\n-    }\n-  }\n-  return code[0].children;\n-}\n-function getBlockBufferOffset(component, row, col) {\n-  return 64 * ((component.blocksPerLine + 1) * row + col);\n-}\n-function decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successivePrev, successive, parseDNLMarker = false) {\n-  const mcusPerLine = frame.mcusPerLine;\n-  const progressive = frame.progressive;\n-  const startOffset = offset;\n-  let bitsData = 0,\n-    bitsCount = 0;\n-  function readBit() {\n-    if (bitsCount > 0) {\n-      bitsCount--;\n-      return bitsData >> bitsCount & 1;\n-    }\n-    bitsData = data[offset++];\n-    if (bitsData === 0xff) {\n-      const nextByte = data[offset++];\n-      if (nextByte) {\n-        if (nextByte === 0xdc && parseDNLMarker) {\n-          offset += 2;\n-          const scanLines = readUint16(data, offset);\n-          offset += 2;\n-          if (scanLines > 0 && scanLines !== frame.scanLines) {\n-            throw new DNLMarkerError(\"Found DNL marker (0xFFDC) while parsing scan data\", scanLines);\n-          }\n-        } else if (nextByte === 0xd9) {\n-          if (parseDNLMarker) {\n-            const maybeScanLines = blockRow * (frame.precision === 8 ? 8 : 0);\n-            if (maybeScanLines > 0 && Math.round(frame.scanLines \u002F maybeScanLines) >= 5) {\n-              throw new DNLMarkerError(\"Found EOI marker (0xFFD9) while parsing scan data, \" + \"possibly caused by incorrect `scanLines` parameter\", maybeScanLines);\n-            }\n-          }\n-          throw new EOIMarkerError(\"Found EOI marker (0xFFD9) while parsing scan data\");\n-        }\n-        throw new JpegError(`unexpected marker ${(bitsData \u003C\u003C 8 | nextByte).toString(16)}`);\n-      }\n-    }\n-    bitsCount = 7;\n-    return bitsData >>> 7;\n-  }\n-  function decodeHuffman(tree) {\n-    let node = tree;\n-    while (true) {\n-      node = node[readBit()];\n-      switch (typeof node) {\n-        case \"number\":\n-          return node;\n-        case \"object\":\n-          continue;\n-      }\n-      throw new JpegError(\"invalid huffman sequence\");\n-    }\n-  }\n-  function receive(length) {\n-    let n = 0;\n-    while (length > 0) {\n-      n = n \u003C\u003C 1 | readBit();\n-      length--;\n-    }\n-    return n;\n-  }\n-  function receiveAndExtend(length) {\n-    if (length === 1) {\n-      return readBit() === 1 ? 1 : -1;\n-    }\n-    const n = receive(length);\n-    if (n >= 1 \u003C\u003C length - 1) {\n-      return n;\n-    }\n-    return n + (-1 \u003C\u003C length) + 1;\n-  }\n-  function decodeBaseline(component, blockOffset) {\n-    const t = decodeHuffman(component.huffmanTableDC);\n-    const diff = t === 0 ? 0 : receiveAndExtend(t);\n-    component.blockData[blockOffset] = component.pred += diff;\n-    let k = 1;\n-    while (k \u003C 64) {\n-      const rs = decodeHuffman(component.huffmanTableAC);\n-      const s = rs & 15,\n-        r = rs >> 4;\n-      if (s === 0) {\n-        if (r \u003C 15) {\n-          break;\n-        }\n-        k += 16;\n-        continue;\n-      }\n-      k += r;\n-      const z = dctZigZag[k];\n-      component.blockData[blockOffset + z] = receiveAndExtend(s);\n-      k++;\n-    }\n-  }\n-  function decodeDCFirst(component, blockOffset) {\n-    const t = decodeHuffman(component.huffmanTableDC);\n-    const diff = t === 0 ? 0 : receiveAndExtend(t) \u003C\u003C successive;\n-    component.blockData[blockOffset] = component.pred += diff;\n-  }\n-  function decodeDCSuccessive(component, blockOffset) {\n-    component.blockData[blockOffset] |= readBit() \u003C\u003C successive;\n-  }\n-  let eobrun = 0;\n-  function decodeACFirst(component, blockOffset) {\n-    if (eobrun > 0) {\n-      eobrun--;\n-      return;\n-    }\n-    let k = spectralStart;\n-    const e = spectralEnd;\n-    while (k \u003C= e) {\n-      const rs = decodeHuffman(component.huffmanTableAC);\n-      const s = rs & 15,\n-        r = rs >> 4;\n-      if (s === 0) {\n-        if (r \u003C 15) {\n-          eobrun = receive(r) + (1 \u003C\u003C r) - 1;\n-          break;\n-        }\n-        k += 16;\n-        continue;\n-      }\n-      k += r;\n-      const z = dctZigZag[k];\n-      component.blockData[blockOffset + z] = receiveAndExtend(s) * (1 \u003C\u003C successive);\n-      k++;\n-    }\n-  }\n-  let successiveACState = 0,\n-    successiveACNextValue;\n-  function decodeACSuccessive(component, blockOffset) {\n-    let k = spectralStart;\n-    const e = spectralEnd;\n-    let r = 0;\n-    let s;\n-    let rs;\n-    while (k \u003C= e) {\n-      const offsetZ = blockOffset + dctZigZag[k];\n-      const sign = component.blockData[offsetZ] \u003C 0 ? -1 : 1;\n-      switch (successiveACState) {\n-        case 0:\n-          rs = decodeHuffman(component.huffmanTableAC);\n-          s = rs & 15;\n-          r = rs >> 4;\n-          if (s === 0) {\n-            if (r \u003C 15) {\n-              eobrun = receive(r) + (1 \u003C\u003C r);\n-              successiveACState = 4;\n-            } else {\n-              r = 16;\n-              successiveACState = 1;\n-            }\n-          } else {\n-            if (s !== 1) {\n-              throw new JpegError(\"invalid ACn encoding\");\n-            }\n-            successiveACNextValue = receiveAndExtend(s);\n-            successiveACState = r ? 2 : 3;\n-          }\n-          continue;\n-        case 1:\n-        case 2:\n-          if (component.blockData[offsetZ]) {\n-            component.blockData[offsetZ] += sign * (readBit() \u003C\u003C successive);\n-          } else {\n-            r--;\n-            if (r === 0) {\n-              successiveACState = successiveACState === 2 ? 3 : 0;\n-            }\n-          }\n-          break;\n-        case 3:\n-          if (component.blockData[offsetZ]) {\n-            component.blockData[offsetZ] += sign * (readBit() \u003C\u003C successive);\n-          } else {\n-            component.blockData[offsetZ] = successiveACNextValue \u003C\u003C successive;\n-            successiveACState = 0;\n-          }\n-          break;\n-        case 4:\n-          if (component.blockData[offsetZ]) {\n-            component.blockData[offsetZ] += sign * (readBit() \u003C\u003C successive);\n-          }\n-          break;\n-      }\n-      k++;\n-    }\n-    if (successiveACState === 4) {\n-      eobrun--;\n-      if (eobrun === 0) {\n-        successiveACState = 0;\n-      }\n-    }\n-  }\n-  let blockRow = 0;\n-  function decodeMcu(component, decode, mcu, row, col) {\n-    const mcuRow = mcu \u002F mcusPerLine | 0;\n-    const mcuCol = mcu % mcusPerLine;\n-    blockRow = mcuRow * component.v + row;\n-    const blockCol = mcuCol * component.h + col;\n-    const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n-    decode(component, blockOffset);\n-  }\n-  function decodeBlock(component, decode, mcu) {\n-    blockRow = mcu \u002F component.blocksPerLine | 0;\n-    const blockCol = mcu % component.blocksPerLine;\n-    const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n-    decode(component, blockOffset);\n-  }\n-  const componentsLength = components.length;\n-  let component, i, j, k, n;\n-  let decodeFn;\n-  if (progressive) {\n-    if (spectralStart === 0) {\n-      decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n-    } else {\n-      decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n-    }\n-  } else {\n-    decodeFn = decodeBaseline;\n-  }\n-  let mcu = 0,\n-    fileMarker;\n-  const mcuExpected = componentsLength === 1 ? components[0].blocksPerLine * components[0].blocksPerColumn : mcusPerLine * frame.mcusPerColumn;\n-  let h, v;\n-  while (mcu \u003C= mcuExpected) {\n-    const mcuToRead = resetInterval ? Math.min(mcuExpected - mcu, resetInterval) : mcuExpected;\n-    if (mcuToRead > 0) {\n-      for (i = 0; i \u003C componentsLength; i++) {\n-        components[i].pred = 0;\n-      }\n-      eobrun = 0;\n-      if (componentsLength === 1) {\n-        component = components[0];\n-        for (n = 0; n \u003C mcuToRead; n++) {\n-          decodeBlock(component, decodeFn, mcu);\n-          mcu++;\n-        }\n-      } else {\n-        for (n = 0; n \u003C mcuToRead; n++) {\n-          for (i = 0; i \u003C componentsLength; i++) {\n-            component = components[i];\n-            h = component.h;\n-            v = component.v;\n-            for (j = 0; j \u003C v; j++) {\n-              for (k = 0; k \u003C h; k++) {\n-                decodeMcu(component, decodeFn, mcu, j, k);\n-              }\n-            }\n-          }\n-          mcu++;\n-        }\n-      }\n-    }\n-    bitsCount = 0;\n-    fileMarker = findNextFileMarker(data, offset);\n-    if (!fileMarker) {\n-      break;\n-    }\n-    if (fileMarker.invalid) {\n-      const partialMsg = mcuToRead > 0 ? \"unexpected\" : \"excessive\";\n-      warn(`decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`);\n-      offset = fileMarker.offset;\n-    }\n-    if (fileMarker.marker >= 0xffd0 && fileMarker.marker \u003C= 0xffd7) {\n-      offset += 2;\n-    } else {\n-      break;\n-    }\n-  }\n-  return offset - startOffset;\n-}\n-function quantizeAndInverse(component, blockBufferOffset, p) {\n-  const qt = component.quantizationTable,\n-    blockData = component.blockData;\n-  let v0, v1, v2, v3, v4, v5, v6, v7;\n-  let p0, p1, p2, p3, p4, p5, p6, p7;\n-  let t;\n-  if (!qt) {\n-    throw new JpegError(\"missing required Quantization Table.\");\n-  }\n-  for (let row = 0; row \u003C 64; row += 8) {\n-    p0 = blockData[blockBufferOffset + row];\n-    p1 = blockData[blockBufferOffset + row + 1];\n-    p2 = blockData[blockBufferOffset + row + 2];\n-    p3 = blockData[blockBufferOffset + row + 3];\n-    p4 = blockData[blockBufferOffset + row + 4];\n-    p5 = blockData[blockBufferOffset + row + 5];\n-    p6 = blockData[blockBufferOffset + row + 6];\n-    p7 = blockData[blockBufferOffset + row + 7];\n-    p0 *= qt[row];\n-    if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n-      t = dctSqrt2 * p0 + 512 >> 10;\n-      p[row] = t;\n-      p[row + 1] = t;\n-      p[row + 2] = t;\n-      p[row + 3] = t;\n-      p[row + 4] = t;\n-      p[row + 5] = t;\n-      p[row + 6] = t;\n-      p[row + 7] = t;\n-      continue;\n-    }\n-    p1 *= qt[row + 1];\n-    p2 *= qt[row + 2];\n-    p3 *= qt[row + 3];\n-    p4 *= qt[row + 4];\n-    p5 *= qt[row + 5];\n-    p6 *= qt[row + 6];\n-    p7 *= qt[row + 7];\n-    v0 = dctSqrt2 * p0 + 128 >> 8;\n-    v1 = dctSqrt2 * p4 + 128 >> 8;\n-    v2 = p2;\n-    v3 = p6;\n-    v4 = dctSqrt1d2 * (p1 - p7) + 128 >> 8;\n-    v7 = dctSqrt1d2 * (p1 + p7) + 128 >> 8;\n-    v5 = p3 \u003C\u003C 4;\n-    v6 = p5 \u003C\u003C 4;\n-    v0 = v0 + v1 + 1 >> 1;\n-    v1 = v0 - v1;\n-    t = v2 * dctSin6 + v3 * dctCos6 + 128 >> 8;\n-    v2 = v2 * dctCos6 - v3 * dctSin6 + 128 >> 8;\n-    v3 = t;\n-    v4 = v4 + v6 + 1 >> 1;\n-    v6 = v4 - v6;\n-    v7 = v7 + v5 + 1 >> 1;\n-    v5 = v7 - v5;\n-    v0 = v0 + v3 + 1 >> 1;\n-    v3 = v0 - v3;\n-    v1 = v1 + v2 + 1 >> 1;\n-    v2 = v1 - v2;\n-    t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12;\n-    v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12;\n-    v7 = t;\n-    t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12;\n-    v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12;\n-    v6 = t;\n-    p[row] = v0 + v7;\n-    p[row + 7] = v0 - v7;\n-    p[row + 1] = v1 + v6;\n-    p[row + 6] = v1 - v6;\n-    p[row + 2] = v2 + v5;\n-    p[row + 5] = v2 - v5;\n-    p[row + 3] = v3 + v4;\n-    p[row + 4] = v3 - v4;\n-  }\n-  for (let col = 0; col \u003C 8; ++col) {\n-    p0 = p[col];\n-    p1 = p[col + 8];\n-    p2 = p[col + 16];\n-    p3 = p[col + 24];\n-    p4 = p[col + 32];\n-    p5 = p[col + 40];\n-    p6 = p[col + 48];\n-    p7 = p[col + 56];\n-    if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n-      t = dctSqrt2 * p0 + 8192 >> 14;\n-      if (t \u003C -2040) {\n-        t = 0;\n-      } else if (t >= 2024) {\n-        t = 255;\n-      } else {\n-        t = t + 2056 >> 4;\n-      }\n-      blockData[blockBufferOffset + col] = t;\n-      blockData[blockBufferOffset + col + 8] = t;\n-      blockData[blockBufferOffset + col + 16] = t;\n-      blockData[blockBufferOffset + col + 24] = t;\n-      blockData[blockBufferOffset + col + 32] = t;\n-      blockData[blockBufferOffset + col + 40] = t;\n-      blockData[blockBufferOffset + col + 48] = t;\n-      blockData[blockBufferOffset + col + 56] = t;\n-      continue;\n-    }\n-    v0 = dctSqrt2 * p0 + 2048 >> 12;\n-    v1 = dctSqrt2 * p4 + 2048 >> 12;\n-    v2 = p2;\n-    v3 = p6;\n-    v4 = dctSqrt1d2 * (p1 - p7) + 2048 >> 12;\n-    v7 = dctSqrt1d2 * (p1 + p7) + 2048 >> 12;\n-    v5 = p3;\n-    v6 = p5;\n-    v0 = (v0 + v1 + 1 >> 1) + 4112;\n-    v1 = v0 - v1;\n-    t = v2 * dctSin6 + v3 * dctCos6 + 2048 >> 12;\n-    v2 = v2 * dctCos6 - v3 * dctSin6 + 2048 >> 12;\n-    v3 = t;\n-    v4 = v4 + v6 + 1 >> 1;\n-    v6 = v4 - v6;\n-    v7 = v7 + v5 + 1 >> 1;\n-    v5 = v7 - v5;\n-    v0 = v0 + v3 + 1 >> 1;\n-    v3 = v0 - v3;\n-    v1 = v1 + v2 + 1 >> 1;\n-    v2 = v1 - v2;\n-    t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12;\n-    v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12;\n-    v7 = t;\n-    t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12;\n-    v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12;\n-    v6 = t;\n-    p0 = v0 + v7;\n-    p7 = v0 - v7;\n-    p1 = v1 + v6;\n-    p6 = v1 - v6;\n-    p2 = v2 + v5;\n-    p5 = v2 - v5;\n-    p3 = v3 + v4;\n-    p4 = v3 - v4;\n-    if (p0 \u003C 16) {\n-      p0 = 0;\n-    } else if (p0 >= 4080) {\n-      p0 = 255;\n-    } else {\n-      p0 >>= 4;\n-    }\n-    if (p1 \u003C 16) {\n-      p1 = 0;\n-    } else if (p1 >= 4080) {\n-      p1 = 255;\n-    } else {\n-      p1 >>= 4;\n-    }\n-    if (p2 \u003C 16) {\n-      p2 = 0;\n-    } else if (p2 >= 4080) {\n-      p2 = 255;\n-    } else {\n-      p2 >>= 4;\n-    }\n-    if (p3 \u003C 16) {\n-      p3 = 0;\n-    } else if (p3 >= 4080) {\n-      p3 = 255;\n-    } else {\n-      p3 >>= 4;\n-    }\n-    if (p4 \u003C 16) {\n-      p4 = 0;\n-    } else if (p4 >= 4080) {\n-      p4 = 255;\n-    } else {\n-      p4 >>= 4;\n-    }\n-    if (p5 \u003C 16) {\n-      p5 = 0;\n-    } else if (p5 >= 4080) {\n-      p5 = 255;\n-    } else {\n-      p5 >>= 4;\n-    }\n-    if (p6 \u003C 16) {\n-      p6 = 0;\n-    } else if (p6 >= 4080) {\n-      p6 = 255;\n-    } else {\n-      p6 >>= 4;\n-    }\n-    if (p7 \u003C 16) {\n-      p7 = 0;\n-    } else if (p7 >= 4080) {\n-      p7 = 255;\n-    } else {\n-      p7 >>= 4;\n-    }\n-    blockData[blockBufferOffset + col] = p0;\n-    blockData[blockBufferOffset + col + 8] = p1;\n-    blockData[blockBufferOffset + col + 16] = p2;\n-    blockData[blockBufferOffset + col + 24] = p3;\n-    blockData[blockBufferOffset + col + 32] = p4;\n-    blockData[blockBufferOffset + col + 40] = p5;\n-    blockData[blockBufferOffset + col + 48] = p6;\n-    blockData[blockBufferOffset + col + 56] = p7;\n-  }\n-}\n-function buildComponentData(frame, component) {\n-  const blocksPerLine = component.blocksPerLine;\n-  const blocksPerColumn = component.blocksPerColumn;\n-  const computationBuffer = new Int16Array(64);\n-  for (let blockRow = 0; blockRow \u003C blocksPerColumn; blockRow++) {\n-    for (let blockCol = 0; blockCol \u003C blocksPerLine; blockCol++) {\n-      const offset = getBlockBufferOffset(component, blockRow, blockCol);\n-      quantizeAndInverse(component, offset, computationBuffer);\n-    }\n-  }\n-  return component.blockData;\n-}\n-function findNextFileMarker(data, currentPos, startPos = currentPos) {\n-  const maxPos = data.length - 1;\n-  let newPos = startPos \u003C currentPos ? startPos : currentPos;\n-  if (currentPos >= maxPos) {\n-    return null;\n-  }\n-  const currentMarker = readUint16(data, currentPos);\n-  if (currentMarker >= 0xffc0 && currentMarker \u003C= 0xfffe) {\n-    return {\n-      invalid: null,\n-      marker: currentMarker,\n-      offset: currentPos\n-    };\n-  }\n-  let newMarker = readUint16(data, newPos);\n-  while (!(newMarker >= 0xffc0 && newMarker \u003C= 0xfffe)) {\n-    if (++newPos >= maxPos) {\n-      return null;\n-    }\n-    newMarker = readUint16(data, newPos);\n-  }\n-  return {\n-    invalid: currentMarker.toString(16),\n-    marker: newMarker,\n-    offset: newPos\n-  };\n-}\n-class JpegImage {\n-  constructor({\n-    decodeTransform = null,\n-    colorTransform = -1\n-  } = {}) {\n-    this._decodeTransform = decodeTransform;\n-    this._colorTransform = colorTransform;\n-  }\n-  parse(data, {\n-    dnlScanLines = null\n-  } = {}) {\n-    function readDataBlock() {\n-      const length = readUint16(data, offset);\n-      offset += 2;\n-      let endOffset = offset + length - 2;\n-      const fileMarker = findNextFileMarker(data, endOffset, offset);\n-      if (fileMarker?.invalid) {\n-        warn(\"readDataBlock - incorrect length, current marker is: \" + fileMarker.invalid);\n-        endOffset = fileMarker.offset;\n-      }\n-      const array = data.subarray(offset, endOffset);\n-      offset += array.length;\n-      return array;\n-    }\n-    function prepareComponents(frame) {\n-      const mcusPerLine = Math.ceil(frame.samplesPerLine \u002F 8 \u002F frame.maxH);\n-      const mcusPerColumn = Math.ceil(frame.scanLines \u002F 8 \u002F frame.maxV);\n-      for (const component of frame.components) {\n-        const blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine \u002F 8) * component.h \u002F frame.maxH);\n-        const blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines \u002F 8) * component.v \u002F frame.maxV);\n-        const blocksPerLineForMcu = mcusPerLine * component.h;\n-        const blocksPerColumnForMcu = mcusPerColumn * component.v;\n-        const blocksBufferSize = 64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);\n-        component.blockData = new Int16Array(blocksBufferSize);\n-        component.blocksPerLine = blocksPerLine;\n-        component.blocksPerColumn = blocksPerColumn;\n-      }\n-      frame.mcusPerLine = mcusPerLine;\n-      frame.mcusPerColumn = mcusPerColumn;\n-    }\n-    let offset = 0;\n-    let jfif = null;\n-    let adobe = null;\n-    let frame, resetInterval;\n-    let numSOSMarkers = 0;\n-    const quantizationTables = [];\n-    const huffmanTablesAC = [],\n-      huffmanTablesDC = [];\n-    let fileMarker = readUint16(data, offset);\n-    offset += 2;\n-    if (fileMarker !== 0xffd8) {\n-      throw new JpegError(\"SOI not found\");\n-    }\n-    fileMarker = readUint16(data, offset);\n-    offset += 2;\n-    markerLoop: while (fileMarker !== 0xffd9) {\n-      let i, j, l;\n-      switch (fileMarker) {\n-        case 0xffe0:\n-        case 0xffe1:\n-        case 0xffe2:\n-        case 0xffe3:\n-        case 0xffe4:\n-        case 0xffe5:\n-        case 0xffe6:\n-        case 0xffe7:\n-        case 0xffe8:\n-        case 0xffe9:\n-        case 0xffea:\n-        case 0xffeb:\n-        case 0xffec:\n-        case 0xffed:\n-        case 0xffee:\n-        case 0xffef:\n-        case 0xfffe:\n-          const appData = readDataBlock();\n-          if (fileMarker === 0xffe0) {\n-            if (appData[0] === 0x4a && appData[1] === 0x46 && appData[2] === 0x49 && appData[3] === 0x46 && appData[4] === 0) {\n-              jfif = {\n-                version: {\n-                  major: appData[5],\n-                  minor: appData[6]\n-                },\n-                densityUnits: appData[7],\n-                xDensity: appData[8] \u003C\u003C 8 | appData[9],\n-                yDensity: appData[10] \u003C\u003C 8 | appData[11],\n-                thumbWidth: appData[12],\n-                thumbHeight: appData[13],\n-                thumbData: appData.subarray(14, 14 + 3 * appData[12] * appData[13])\n-              };\n-            }\n-          }\n-          if (fileMarker === 0xffee) {\n-            if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6f && appData[3] === 0x62 && appData[4] === 0x65) {\n-              adobe = {\n-                version: appData[5] \u003C\u003C 8 | appData[6],\n-                flags0: appData[7] \u003C\u003C 8 | appData[8],\n-                flags1: appData[9] \u003C\u003C 8 | appData[10],\n-                transformCode: appData[11]\n-              };\n-            }\n-          }\n-          break;\n-        case 0xffdb:\n-          const quantizationTablesLength = readUint16(data, offset);\n-          offset += 2;\n-          const quantizationTablesEnd = quantizationTablesLength + offset - 2;\n-          let z;\n-          while (offset \u003C quantizationTablesEnd) {\n-            const quantizationTableSpec = data[offset++];\n-            const tableData = new Uint16Array(64);\n-            if (quantizationTableSpec >> 4 === 0) {\n-              for (j = 0; j \u003C 64; j++) {\n-                z = dctZigZag[j];\n-                tableData[z] = data[offset++];\n-              }\n-            } else if (quantizationTableSpec >> 4 === 1) {\n-              for (j = 0; j \u003C 64; j++) {\n-                z = dctZigZag[j];\n-                tableData[z] = readUint16(data, offset);\n-                offset += 2;\n-              }\n-            } else {\n-              throw new JpegError(\"DQT - invalid table spec\");\n-            }\n-            quantizationTables[quantizationTableSpec & 15] = tableData;\n-          }\n-          break;\n-        case 0xffc0:\n-        case 0xffc1:\n-        case 0xffc2:\n-          if (frame) {\n-            throw new JpegError(\"Only single frame JPEGs supported\");\n-          }\n-          offset += 2;\n-          frame = {};\n-          frame.extended = fileMarker === 0xffc1;\n-          frame.progressive = fileMarker === 0xffc2;\n-          frame.precision = data[offset++];\n-          const sofScanLines = readUint16(data, offset);\n-          offset += 2;\n-          frame.scanLines = dnlScanLines || sofScanLines;\n-          frame.samplesPerLine = readUint16(data, offset);\n-          offset += 2;\n-          frame.components = [];\n-          frame.componentIds = {};\n-          const componentsCount = data[offset++];\n-          let maxH = 0,\n-            maxV = 0;\n-          for (i = 0; i \u003C componentsCount; i++) {\n-            const componentId = data[offset];\n-            const h = data[offset + 1] >> 4;\n-            const v = data[offset + 1] & 15;\n-            if (maxH \u003C h) {\n-              maxH = h;\n-            }\n-            if (maxV \u003C v) {\n-              maxV = v;\n-            }\n-            const qId = data[offset + 2];\n-            l = frame.components.push({\n-              h,\n-              v,\n-              quantizationId: qId,\n-              quantizationTable: null\n-            });\n-            frame.componentIds[componentId] = l - 1;\n-            offset += 3;\n-          }\n-          frame.maxH = maxH;\n-          frame.maxV = maxV;\n-          prepareComponents(frame);\n-          break;\n-        case 0xffc4:\n-          const huffmanLength = readUint16(data, offset);\n-          offset += 2;\n-          for (i = 2; i \u003C huffmanLength;) {\n-            const huffmanTableSpec = data[offset++];\n-            const codeLengths = new Uint8Array(16);\n-            let codeLengthSum = 0;\n-            for (j = 0; j \u003C 16; j++, offset++) {\n-              codeLengthSum += codeLengths[j] = data[offset];\n-            }\n-            const huffmanValues = new Uint8Array(codeLengthSum);\n-            for (j = 0; j \u003C codeLengthSum; j++, offset++) {\n-              huffmanValues[j] = data[offset];\n-            }\n-            i += 17 + codeLengthSum;\n-            (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] = buildHuffmanTable(codeLengths, huffmanValues);\n-          }\n-          break;\n-        case 0xffdd:\n-          offset += 2;\n-          resetInterval = readUint16(data, offset);\n-          offset += 2;\n-          break;\n-        case 0xffda:\n-          const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;\n-          offset += 2;\n-          const selectorsCount = data[offset++],\n-            components = [];\n-          for (i = 0; i \u003C selectorsCount; i++) {\n-            const index = data[offset++];\n-            const componentIndex = frame.componentIds[index];\n-            const component = frame.components[componentIndex];\n-            component.index = index;\n-            const tableSpec = data[offset++];\n-            component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\n-            component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\n-            components.push(component);\n-          }\n-          const spectralStart = data[offset++],\n-            spectralEnd = data[offset++],\n-            successiveApproximation = data[offset++];\n-          try {\n-            const processed = decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successiveApproximation >> 4, successiveApproximation & 15, parseDNLMarker);\n-            offset += processed;\n-          } catch (ex) {\n-            if (ex instanceof DNLMarkerError) {\n-              warn(`${ex.message} -- attempting to re-parse the JPEG image.`);\n-              return this.parse(data, {\n-                dnlScanLines: ex.scanLines\n-              });\n-            } else if (ex instanceof EOIMarkerError) {\n-              warn(`${ex.message} -- ignoring the rest of the image data.`);\n-              break markerLoop;\n-            }\n-            throw ex;\n-          }\n-          break;\n-        case 0xffdc:\n-          offset += 4;\n-          break;\n-        case 0xffff:\n-          if (data[offset] !== 0xff) {\n-            offset--;\n-          }\n-          break;\n-        default:\n-          const nextFileMarker = findNextFileMarker(data, offset - 2, offset - 3);\n-          if (nextFileMarker?.invalid) {\n-            warn(\"JpegImage.parse - unexpected data, current marker is: \" + nextFileMarker.invalid);\n-            offset = nextFileMarker.offset;\n-            break;\n-          }\n-          if (!nextFileMarker || offset >= data.length - 1) {\n-            warn(\"JpegImage.parse - reached the end of the image data \" + \"without finding an EOI marker (0xFFD9).\");\n-            break markerLoop;\n-          }\n-          throw new JpegError(\"JpegImage.parse - unknown marker: \" + fileMarker.toString(16));\n-      }\n-      fileMarker = readUint16(data, offset);\n-      offset += 2;\n-    }\n-    if (!frame) {\n-      throw new JpegError(\"JpegImage.parse - no frame data found.\");\n-    }\n-    this.width = frame.samplesPerLine;\n-    this.height = frame.scanLines;\n-    this.jfif = jfif;\n-    this.adobe = adobe;\n-    this.components = [];\n-    for (const component of frame.components) {\n-      const quantizationTable = quantizationTables[component.quantizationId];\n-      if (quantizationTable) {\n-        component.quantizationTable = quantizationTable;\n-      }\n-      this.components.push({\n-        index: component.index,\n-        output: buildComponentData(frame, component),\n-        scaleX: component.h \u002F frame.maxH,\n-        scaleY: component.v \u002F frame.maxV,\n-        blocksPerLine: component.blocksPerLine,\n-        blocksPerColumn: component.blocksPerColumn\n-      });\n-    }\n-    this.numComponents = this.components.length;\n-    return undefined;\n-  }\n-  _getLinearizedBlockData(width, height, isSourcePDF = false) {\n-    const scaleX = this.width \u002F width,\n-      scaleY = this.height \u002F height;\n-    let component, componentScaleX, componentScaleY, blocksPerScanline;\n-    let x, y, i, j, k;\n-    let index;\n-    let offset = 0;\n-    let output;\n-    const numComponents = this.components.length;\n-    const dataLength = width * height * numComponents;\n-    const data = new Uint8ClampedArray(dataLength);\n-    const xScaleBlockOffset = new Uint32Array(width);\n-    const mask3LSB = 0xfffffff8;\n-    let lastComponentScaleX;\n-    for (i = 0; i \u003C numComponents; i++) {\n-      component = this.components[i];\n-      componentScaleX = component.scaleX * scaleX;\n-      componentScaleY = component.scaleY * scaleY;\n-      offset = i;\n-      output = component.output;\n-      blocksPerScanline = component.blocksPerLine + 1 \u003C\u003C 3;\n-      if (componentScaleX !== lastComponentScaleX) {\n-        for (x = 0; x \u003C width; x++) {\n-          j = 0 | x * componentScaleX;\n-          xScaleBlockOffset[x] = (j & mask3LSB) \u003C\u003C 3 | j & 7;\n-        }\n-        lastComponentScaleX = componentScaleX;\n-      }\n-      for (y = 0; y \u003C height; y++) {\n-        j = 0 | y * componentScaleY;\n-        index = blocksPerScanline * (j & mask3LSB) | (j & 7) \u003C\u003C 3;\n-        for (x = 0; x \u003C width; x++) {\n-          data[offset] = output[index + xScaleBlockOffset[x]];\n-          offset += numComponents;\n-        }\n-      }\n-    }\n-    let transform = this._decodeTransform;\n-    if (!isSourcePDF && numComponents === 4 && !transform) {\n-      transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]);\n-    }\n-    if (transform) {\n-      for (i = 0; i \u003C dataLength;) {\n-        for (j = 0, k = 0; j \u003C numComponents; j++, i++, k += 2) {\n-          data[i] = (data[i] * transform[k] >> 8) + transform[k + 1];\n-        }\n-      }\n-    }\n-    return data;\n-  }\n-  get _isColorConversionNeeded() {\n-    if (this.adobe) {\n-      return !!this.adobe.transformCode;\n-    }\n-    if (this.numComponents === 3) {\n-      if (this._colorTransform === 0) {\n-        return false;\n-      } else if (this.components[0].index === 0x52 && this.components[1].index === 0x47 && this.components[2].index === 0x42) {\n-        return false;\n-      }\n-      return true;\n-    }\n-    if (this._colorTransform === 1) {\n-      return true;\n-    }\n-    return false;\n-  }\n-  _convertYccToRgb(data) {\n-    let Y, Cb, Cr;\n-    for (let i = 0, length = data.length; i \u003C length; i += 3) {\n-      Y = data[i];\n-      Cb = data[i + 1];\n-      Cr = data[i + 2];\n-      data[i] = Y - 179.456 + 1.402 * Cr;\n-      data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n-      data[i + 2] = Y - 226.816 + 1.772 * Cb;\n-    }\n-    return data;\n-  }\n-  _convertYccToRgba(data, out) {\n-    for (let i = 0, j = 0, length = data.length; i \u003C length; i += 3, j += 4) {\n-      const Y = data[i];\n-      const Cb = data[i + 1];\n-      const Cr = data[i + 2];\n-      out[j] = Y - 179.456 + 1.402 * Cr;\n-      out[j + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n-      out[j + 2] = Y - 226.816 + 1.772 * Cb;\n-      out[j + 3] = 255;\n-    }\n-    return out;\n-  }\n-  _convertYcckToRgb(data) {\n-    let Y, Cb, Cr, k;\n-    let offset = 0;\n-    for (let i = 0, length = data.length; i \u003C length; i += 4) {\n-      Y = data[i];\n-      Cb = data[i + 1];\n-      Cr = data[i + 2];\n-      k = data[i + 3];\n-      data[offset++] = -122.67195406894 + Cb * (-6.60635669420364e-5 * Cb + 0.000437130475926232 * Cr - 5.4080610064599e-5 * Y + 0.00048449797120281 * k - 0.154362151871126) + Cr * (-0.000957964378445773 * Cr + 0.000817076911346625 * Y - 0.00477271405408747 * k + 1.53380253221734) + Y * (0.000961250184130688 * Y - 0.00266257332283933 * k + 0.48357088451265) + k * (-0.000336197177618394 * k + 0.484791561490776);\n-      data[offset++] = 107.268039397724 + Cb * (2.19927104525741e-5 * Cb - 0.000640992018297945 * Cr + 0.000659397001245577 * Y + 0.000426105652938837 * k - 0.176491792462875) + Cr * (-0.000778269941513683 * Cr + 0.00130872261408275 * Y + 0.000770482631801132 * k - 0.151051492775562) + Y * (0.00126935368114843 * Y - 0.00265090189010898 * k + 0.25802910206845) + k * (-0.000318913117588328 * k - 0.213742400323665);\n-      data[offset++] = -20.810012546947 + Cb * (-0.000570115196973677 * Cb - 2.63409051004589e-5 * Cr + 0.0020741088115012 * Y - 0.00288260236853442 * k + 0.814272968359295) + Cr * (-1.53496057440975e-5 * Cr - 0.000132689043961446 * Y + 0.000560833691242812 * k - 0.195152027534049) + Y * (0.00174418132927582 * Y - 0.00255243321439347 * k + 0.116935020465145) + k * (-0.000343531996510555 * k + 0.24165260232407);\n-    }\n-    return data.subarray(0, offset);\n-  }\n-  _convertYcckToRgba(data) {\n-    for (let i = 0, length = data.length; i \u003C length; i += 4) {\n-      const Y = data[i];\n-      const Cb = data[i + 1];\n-      const Cr = data[i + 2];\n-      const k = data[i + 3];\n-      data[i] = -122.67195406894 + Cb * (-6.60635669420364e-5 * Cb + 0.000437130475926232 * Cr - 5.4080610064599e-5 * Y + 0.00048449797120281 * k - 0.154362151871126) + Cr * (-0.000957964378445773 * Cr + 0.000817076911346625 * Y - 0.00477271405408747 * k + 1.53380253221734) + Y * (0.000961250184130688 * Y - 0.00266257332283933 * k + 0.48357088451265) + k * (-0.000336197177618394 * k + 0.484791561490776);\n-      data[i + 1] = 107.268039397724 + Cb * (2.19927104525741e-5 * Cb - 0.000640992018297945 * Cr + 0.000659397001245577 * Y + 0.000426105652938837 * k - 0.176491792462875) + Cr * (-0.000778269941513683 * Cr + 0.00130872261408275 * Y + 0.000770482631801132 * k - 0.151051492775562) + Y * (0.00126935368114843 * Y - 0.00265090189010898 * k + 0.25802910206845) + k * (-0.000318913117588328 * k - 0.213742400323665);\n-      data[i + 2] = -20.810012546947 + Cb * (-0.000570115196973677 * Cb - 2.63409051004589e-5 * Cr + 0.0020741088115012 * Y - 0.00288260236853442 * k + 0.814272968359295) + Cr * (-1.53496057440975e-5 * Cr - 0.000132689043961446 * Y + 0.000560833691242812 * k - 0.195152027534049) + Y * (0.00174418132927582 * Y - 0.00255243321439347 * k + 0.116935020465145) + k * (-0.000343531996510555 * k + 0.24165260232407);\n-      data[i + 3] = 255;\n-    }\n-    return data;\n-  }\n-  _convertYcckToCmyk(data) {\n-    let Y, Cb, Cr;\n-    for (let i = 0, length = data.length; i \u003C length; i += 4) {\n-      Y = data[i];\n-      Cb = data[i + 1];\n-      Cr = data[i + 2];\n-      data[i] = 434.456 - Y - 1.402 * Cr;\n-      data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;\n-      data[i + 2] = 481.816 - Y - 1.772 * Cb;\n-    }\n-    return data;\n-  }\n-  _convertCmykToRgb(data) {\n-    let c, m, y, k;\n-    let offset = 0;\n-    for (let i = 0, length = data.length; i \u003C length; i += 4) {\n-      c = data[i];\n-      m = data[i + 1];\n-      y = data[i + 2];\n-      k = data[i + 3];\n-      data[offset++] = 255 + c * (-0.00006747147073602441 * c + 0.0008379262121013727 * m + 0.0002894718188643294 * y + 0.003264231057537806 * k - 1.1185611867203937) + m * (0.000026374107616089405 * m - 0.00008626949158638572 * y - 0.0002748769067499491 * k - 0.02155688794978967) + y * (-0.00003878099212869363 * y - 0.0003267808279485286 * k + 0.0686742238595345) - k * (0.0003361971776183937 * k + 0.7430659151342254);\n-      data[offset++] = 255 + c * (0.00013596372813588848 * c + 0.000924537132573585 * m + 0.00010567359618683593 * y + 0.0004791864687436512 * k - 0.3109689587515875) + m * (-0.00023545346108370344 * m + 0.0002702845253534714 * y + 0.0020200308977307156 * k - 0.7488052167015494) + y * (0.00006834815998235662 * y + 0.00015168452363460973 * k - 0.09751927774728933) - k * (0.0003189131175883281 * k + 0.7364883807733168);\n-      data[offset++] = 255 + c * (0.000013598650411385307 * c + 0.00012423956175490851 * m + 0.0004751985097583589 * y - 0.0000036729317476630422 * k - 0.05562186980264034) + m * (0.00016141380598724676 * m + 0.0009692239130725186 * y + 0.0007782692450036253 * k - 0.44015232367526463) + y * (5.068882914068769e-7 * y + 0.0017778369011375071 * k - 0.7591454649749609) - k * (0.0003435319965105553 * k + 0.7063770186160144);\n-    }\n-    return data.subarray(0, offset);\n-  }\n-  _convertCmykToRgba(data) {\n-    for (let i = 0, length = data.length; i \u003C length; i += 4) {\n-      const c = data[i];\n-      const m = data[i + 1];\n-      const y = data[i + 2];\n-      const k = data[i + 3];\n-      data[i] = 255 + c * (-0.00006747147073602441 * c + 0.0008379262121013727 * m + 0.0002894718188643294 * y + 0.003264231057537806 * k - 1.1185611867203937) + m * (0.000026374107616089405 * m - 0.00008626949158638572 * y - 0.0002748769067499491 * k - 0.02155688794978967) + y * (-0.00003878099212869363 * y - 0.0003267808279485286 * k + 0.0686742238595345) - k * (0.0003361971776183937 * k + 0.7430659151342254);\n-      data[i + 1] = 255 + c * (0.00013596372813588848 * c + 0.000924537132573585 * m + 0.00010567359618683593 * y + 0.0004791864687436512 * k - 0.3109689587515875) + m * (-0.00023545346108370344 * m + 0.0002702845253534714 * y + 0.0020200308977307156 * k - 0.7488052167015494) + y * (0.00006834815998235662 * y + 0.00015168452363460973 * k - 0.09751927774728933) - k * (0.0003189131175883281 * k + 0.7364883807733168);\n-      data[i + 2] = 255 + c * (0.000013598650411385307 * c + 0.00012423956175490851 * m + 0.0004751985097583589 * y - 0.0000036729317476630422 * k - 0.05562186980264034) + m * (0.00016141380598724676 * m + 0.0009692239130725186 * y + 0.0007782692450036253 * k - 0.44015232367526463) + y * (5.068882914068769e-7 * y + 0.0017778369011375071 * k - 0.7591454649749609) - k * (0.0003435319965105553 * k + 0.7063770186160144);\n-      data[i + 3] = 255;\n-    }\n-    return data;\n-  }\n-  getData({\n-    width,\n-    height,\n-    forceRGBA = false,\n-    forceRGB = false,\n-    isSourcePDF = false\n-  }) {\n-    if (this.numComponents > 4) {\n-      throw new JpegError(\"Unsupported color mode\");\n-    }\n-    const data = this._getLinearizedBlockData(width, height, isSourcePDF);\n-    if (this.numComponents === 1 && (forceRGBA || forceRGB)) {\n-      const len = data.length * (forceRGBA ? 4 : 3);\n-      const rgbaData = new Uint8ClampedArray(len);\n-      let offset = 0;\n-      if (forceRGBA) {\n-        grayToRGBA(data, new Uint32Array(rgbaData.buffer));\n-      } else {\n-        for (const grayColor of data) {\n-          rgbaData[offset++] = grayColor;\n-          rgbaData[offset++] = grayColor;\n-          rgbaData[offset++] = grayColor;\n-        }\n-      }\n-      return rgbaData;\n-    } else if (this.numComponents === 3 && this._isColorConversionNeeded) {\n-      if (forceRGBA) {\n-        const rgbaData = new Uint8ClampedArray(data.length \u002F 3 * 4);\n-        return this._convertYccToRgba(data, rgbaData);\n-      }\n-      return this._convertYccToRgb(data);\n-    } else if (this.numComponents === 4) {\n-      if (this._isColorConversionNeeded) {\n-        if (forceRGBA) {\n-          return this._convertYcckToRgba(data);\n-        }\n-        if (forceRGB) {\n-          return this._convertYcckToRgb(data);\n-        }\n-        return this._convertYcckToCmyk(data);\n-      } else if (forceRGBA) {\n-        return this._convertCmykToRgba(data);\n-      } else if (forceRGB) {\n-        return this._convertCmykToRgb(data);\n-      }\n-    }\n-    return data;\n-  }\n-}\n-\n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fjpeg_stream.js\n-\n-\n-\n-\n-class JpegStream extends DecodeStream {\n+class JpxStream extends DecodeStream {\n   constructor(stream, maybeLength, params) {\n-    let ch;\n-    while ((ch = stream.getByte()) !== -1) {\n-      if (ch === 0xff) {\n-        stream.skip(-1);\n-        break;\n-      }\n-    }\n     super(maybeLength);\n     this.stream = stream;\n     this.dict = stream.dict;\n@@ -7487,591 +15257,35 @@\n     return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n   }\n   ensureBuffer(requested) {}\n-  readBlock() {\n+  readBlock(decoderOptions) {\n+    unreachable(\"JpxStream.readBlock\");\n+  }\n+  get isAsyncDecoder() {\n+    return true;\n+  }\n+  async decodeImage(bytes, decoderOptions) {\n     if (this.eof) {\n-      return;\n+      return this.buffer;\n     }\n-    const jpegOptions = {\n-      decodeTransform: undefined,\n-      colorTransform: undefined\n-    };\n-    const decodeArr = this.dict.getArray(\"D\", \"Decode\");\n-    if ((this.forceRGBA || this.forceRGB) && Array.isArray(decodeArr)) {\n-      const bitsPerComponent = this.dict.get(\"BPC\", \"BitsPerComponent\") || 8;\n-      const decodeArrLength = decodeArr.length;\n-      const transform = new Int32Array(decodeArrLength);\n-      let transformNeeded = false;\n-      const maxValue = (1 \u003C\u003C bitsPerComponent) - 1;\n-      for (let i = 0; i \u003C decodeArrLength; i += 2) {\n-        transform[i] = (decodeArr[i + 1] - decodeArr[i]) * 256 | 0;\n-        transform[i + 1] = decodeArr[i] * maxValue | 0;\n-        if (transform[i] !== 256 || transform[i + 1] !== 0) {\n-          transformNeeded = true;\n-        }\n-      }\n-      if (transformNeeded) {\n-        jpegOptions.decodeTransform = transform;\n-      }\n-    }\n-    if (this.params instanceof Dict) {\n-      const colorTransform = this.params.get(\"ColorTransform\");\n-      if (Number.isInteger(colorTransform)) {\n-        jpegOptions.colorTransform = colorTransform;\n-      }\n-    }\n-    const jpegImage = new JpegImage(jpegOptions);\n-    jpegImage.parse(this.bytes);\n-    const data = jpegImage.getData({\n-      width: this.drawWidth,\n-      height: this.drawHeight,\n-      forceRGBA: this.forceRGBA,\n-      forceRGB: this.forceRGB,\n-      isSourcePDF: true\n-    });\n-    this.buffer = data;\n-    this.bufferLength = data.length;\n+    bytes ||= this.bytes;\n+    this.buffer = await JpxImage.decode(bytes, decoderOptions);\n+    this.bufferLength = this.buffer.length;\n     this.eof = true;\n+    return this.buffer;\n+  }\n+  get canAsyncDecodeImageFromBuffer() {\n+    return this.stream.isAsync;\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fexternal\u002Fopenjpeg\u002Fopenjpeg.js\n-var OpenJPEG = (() => {\n-  var _scriptName = typeof document != 'undefined' ? document.currentScript?.src : undefined;\n-  return function (moduleArg = {}) {\n-    var moduleRtn;\n-    var Module = Object.assign({}, moduleArg);\n-    var readyPromiseResolve, readyPromiseReject;\n-    var readyPromise = new Promise((resolve, reject) => {\n-      readyPromiseResolve = resolve;\n-      readyPromiseReject = reject;\n-    });\n-    var ENVIRONMENT_IS_WEB = true;\n-    var ENVIRONMENT_IS_WORKER = false;\n-    Module.decode = function (bytes, ignoreColorSpace) {\n-      const size = bytes.length;\n-      const ptr = Module._malloc(size);\n-      Module.HEAPU8.set(bytes, ptr);\n-      const ret = Module._jp2_decode(ptr, size, ignoreColorSpace ? 1 : 0);\n-      Module._free(ptr);\n-      if (ret) {\n-        const {\n-          errorMessages: errorMessages\n-        } = Module;\n-        if (errorMessages) {\n-          delete Module.errorMessages;\n-          return errorMessages;\n-        }\n-        return \"Unknown error\";\n-      }\n-      const {\n-        imageData: imageData\n-      } = Module;\n-      Module.imageData = null;\n-      return imageData;\n-    };\n-    var moduleOverrides = Object.assign({}, Module);\n-    var arguments_ = [];\n-    var thisProgram = \".\u002Fthis.program\";\n-    var quit_ = (status, toThrow) => {\n-      throw toThrow;\n-    };\n-    var scriptDirectory = \"\";\n-    var read_, readAsync, readBinary;\n-    if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n-      if (ENVIRONMENT_IS_WORKER) {\n-        scriptDirectory = self.location.href;\n-      } else if (typeof document != \"undefined\" && document.currentScript) {\n-        scriptDirectory = document.currentScript.src;\n-      }\n-      if (_scriptName) {\n-        scriptDirectory = _scriptName;\n-      }\n-      if (scriptDirectory.startsWith(\"blob:\")) {\n-        scriptDirectory = \"\";\n-      } else {\n-        scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(\u002F[?#].*\u002F, \"\").lastIndexOf(\"\u002F\") + 1);\n-      }\n-      read_ = url => {\n-        var xhr = new XMLHttpRequest();\n-        xhr.open(\"GET\", url, false);\n-        xhr.send(null);\n-        return xhr.responseText;\n-      };\n-      if (ENVIRONMENT_IS_WORKER) {\n-        readBinary = url => {\n-          var xhr = new XMLHttpRequest();\n-          xhr.open(\"GET\", url, false);\n-          xhr.responseType = \"arraybuffer\";\n-          xhr.send(null);\n-          return new Uint8Array(xhr.response);\n-        };\n-      }\n-      readAsync = (url, onload, onerror) => {\n-        var xhr = new XMLHttpRequest();\n-        xhr.open(\"GET\", url, true);\n-        xhr.responseType = \"arraybuffer\";\n-        xhr.onload = () => {\n-          if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n-            onload(xhr.response);\n-            return;\n-          }\n-          onerror();\n-        };\n-        xhr.onerror = onerror;\n-        xhr.send(null);\n-      };\n-    } else {}\n-    var out = Module[\"print\"] || console.log.bind(console);\n-    var err = Module[\"printErr\"] || console.error.bind(console);\n-    Object.assign(Module, moduleOverrides);\n-    moduleOverrides = null;\n-    if (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n-    if (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n-    if (Module[\"quit\"]) quit_ = Module[\"quit\"];\n-    var wasmBinary;\n-    if (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n-    function intArrayFromBase64(s) {\n-      var decoded = atob(s);\n-      var bytes = new Uint8Array(decoded.length);\n-      for (var i = 0; i \u003C decoded.length; ++i) {\n-        bytes[i] = decoded.charCodeAt(i);\n-      }\n-      return bytes;\n-    }\n-    function tryParseAsDataURI(filename) {\n-      if (!isDataURI(filename)) {\n-        return;\n-      }\n-      return intArrayFromBase64(filename.slice(dataURIPrefix.length));\n-    }\n-    var wasmMemory;\n-    var ABORT = false;\n-    var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n-    function updateMemoryViews() {\n-      var b = wasmMemory.buffer;\n-      Module[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n-      Module[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n-      Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n-      Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(b);\n-      Module[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n-      Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n-      Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(b);\n-      Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(b);\n-    }\n-    var __ATPRERUN__ = [];\n-    var __ATINIT__ = [];\n-    var __ATPOSTRUN__ = [];\n-    var runtimeInitialized = false;\n-    function preRun() {\n-      if (Module[\"preRun\"]) {\n-        if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [Module[\"preRun\"]];\n-        while (Module[\"preRun\"].length) {\n-          addOnPreRun(Module[\"preRun\"].shift());\n-        }\n-      }\n-      callRuntimeCallbacks(__ATPRERUN__);\n-    }\n-    function initRuntime() {\n-      runtimeInitialized = true;\n-      callRuntimeCallbacks(__ATINIT__);\n-    }\n-    function postRun() {\n-      if (Module[\"postRun\"]) {\n-        if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [Module[\"postRun\"]];\n-        while (Module[\"postRun\"].length) {\n-          addOnPostRun(Module[\"postRun\"].shift());\n-        }\n-      }\n-      callRuntimeCallbacks(__ATPOSTRUN__);\n-    }\n-    function addOnPreRun(cb) {\n-      __ATPRERUN__.unshift(cb);\n-    }\n-    function addOnInit(cb) {\n-      __ATINIT__.unshift(cb);\n-    }\n-    function addOnPostRun(cb) {\n-      __ATPOSTRUN__.unshift(cb);\n-    }\n-    var runDependencies = 0;\n-    var runDependencyWatcher = null;\n-    var dependenciesFulfilled = null;\n-    function addRunDependency(id) {\n-      runDependencies++;\n-      Module[\"monitorRunDependencies\"]?.(runDependencies);\n-    }\n-    function removeRunDependency(id) {\n-      runDependencies--;\n-      Module[\"monitorRunDependencies\"]?.(runDependencies);\n-      if (runDependencies == 0) {\n-        if (runDependencyWatcher !== null) {\n-          clearInterval(runDependencyWatcher);\n-          runDependencyWatcher = null;\n-        }\n-        if (dependenciesFulfilled) {\n-          var callback = dependenciesFulfilled;\n-          dependenciesFulfilled = null;\n-          callback();\n-        }\n-      }\n-    }\n-    var dataURIPrefix = \"data:application\u002Foctet-stream;base64,\";\n-    var isDataURI = filename => filename.startsWith(dataURIPrefix);\n-    function findWasmBinary() {\n-      var f = \"data:application\u002Foctet-stream;base64,AGFzbQEAAAABzgEaYAN\u002Ff38Bf2AEf39\u002FfwF\u002FYAF\u002FAGACf38AYAF\u002FAX9gA39\u002FfwBgAn9\u002FAX9gBH9\u002Ff38AYAN\u002Ffn8BfmACfn8Bf2AFf39\u002Ff38Bf2ACfn8BfmADf35\u002FAX9gAAF\u002FYAd\u002Ff39\u002Ff39\u002FAX9gBX9\u002Ff39\u002FAGAJf39\u002Ff39\u002Ff39\u002FAX9gC39\u002Ff39\u002Ff39\u002Ff39\u002FAX9gBn9\u002Ff39\u002FfwF\u002FYAZ\u002FfH9\u002Ff38Bf2AIf39\u002Ff39\u002Ff38AYAh\u002Ff39\u002Ff39\u002FfwF\u002FYAAAYAZ\u002Ff39\u002Ff38AYAd\u002Ff39\u002Ff39\u002FAGACfH8BfAIxCAFhAWEAAgFhAWIABAFhAWMABgFhAWQABgFhAWUAAQFhAWYABQFhAWcAAgFhAWgAAwO+AbwBBwIFAAYEAAUGBQEEDwUEFAIGAgYCAgAQEQQCCRICBQICAgQHBAINDAYCFQMHAAAEAwEWCgoDAAoGAQQEBQUNDgEBAwADBgIQBBcYAgcGAwcHAQECAAQEGQYHBA4PAAQCAgIABgAGAQEBAQEBAQEAAAAAAAYDAgICAwMDAwMAAxMIBA0AAwMABAgJCwgAAAEBAQEBAQEBDAEABAQFCg4BEhEBAAAGAwMBBQUFBQUFBQUBCwEBAQEBAQEBAQkEBQFwAWxsBQcBAYICgIACBggBfwFBgNgFCwcbBgFpAgABagA6AWsAjwEBbAAJAW0BAAFuAI4BCbIBAQBBAQtrSsMBuQFsbC+eAZMBkAGEAYMBggGBAYABf359S3p5eHd2dXRzcnFwb27CAcEBwAG\u002FAb4BvQE5vAG7ATk5ugG4AbcBtgG1AbQBswGyAbEBsAGqAZ8BnQGcAZsBmgGZAZgBlwGWAZUBlAGSAZEBQkNFS0F8TDFJe0g+P0ckIKIBoQGjAasBrwGsAaYBoAGkAaUBrQGuAWmnAagBqQFKjQGMAYUBhwGGAYkBiwGIAQqAuA28AYICAQN\u002FIwBBkARrIgQkAAJAIABFDQACQAJAAkACQCABQQFrDgQAAQQCBAsgAEEMaiEBDAILIABBEGohASAAQQRqIQAMAQsgAEEUaiEBIABBCGohAAsgASgCACIFRQ0AIAJFDQAgACgCACEGIARBAEGABBAOIgEgAzYCjAQjAEGgAWsiACQAIAAgATYClAEgAEH\u002FAzYCmAEgAEEAQZABEA4iAEF\u002FNgJMIABB5gA2AiQgAEF\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\u002F\u002F\u002F\u002FB3EhCgNAIAAgAUEBajYCACABLQAAIQkgACABQQJqIgY2AgAgACACQQFrNgIYIAEtAAEhASAAIAJBAmsiAjYCGCAEQf8BIAN0QX9zcSAJIAN0ckGA\u002FgMgA3RBf3NxIAEgA0EIcnRyIQQgA0EQaiEDIAYhASAFQQJqIgUgCkcNAAsLQQAhBSAMRQ0AIAAgBkEBajYCACAGLQAAIQEgACACQQFrNgIYIARB\u002FwEgA3RBf3NxIAEgA3RyIQQLIAAoAhQhASAAIARBGHYiCkH\u002FAUY2AhQgAEEHQQggARsiAUEHQQggBEH\u002FAXEiBkH\u002FAUYbaiICQQdBCCAEQQh2Qf8BcSIDQf8BRhtqIglBB0EIIARBEHZB\u002FwFxIgRB\u002FwFGGyAHamoiCDYCECAAIAApAwggAyABdCAEIAJ0ciAKIAl0ciAGcq0gB62GhCIONwMIIAhBH00EQAJAIAVBBE4EQCAAKAIAIgEoAgAhAiAAIAVBBGs2AhggACABQQRqNgIADAELQQAhA0F\u002FQQAgACgCHBshAiAFQQBMDQAgBUEBcSENIAAoAgAhAQJAIAVBAUYEQCABIQQMAQsgBUH+\u002F\u002F\u002F\u002FB3EhCUEAIQYDQCAAIAFBAWo2AgAgAS0AACELIAAgAUECaiIENgIAIAAgBUEBazYCGCABLQABIQEgACAFQQJrIgU2AhggAkH\u002FASADdEF\u002Fc3EgCyADdHJBgP4DIAN0QX9zcSABIANBCHJ0ciECIANBEGohAyAEIQEgBkECaiIGIAlHDQALCyANRQ0AIAAgBEEBajYCACAELQAAIQEgACAFQQFrNgIYIAJB\u002FwEgA3RBf3NxIAEgA3RyIQILIAAgAkEYdiIBQf8BRjYCFCAAQQdBCCAKQf8BRhsiBEEHQQggAkH\u002FAXEiBkH\u002FAUYbaiIFQQdBCCACQQh2Qf8BcSIDQf8BRhtqIgdBB0EIIAJBEHZB\u002FwFxIgJB\u002FwFGGyAIamo2AhAgACADIAR0IAIgBXRyIAEgB3RyIAZyrSAIrYYgDoQiDjcDCAsgDqcLawEBfyMAQYACayIFJAACQCACIANMDQAgBEGAwARxDQAgBSABIAIgA2siA0GAAiADQYACSSIBGxAOGiABRQRAA0AgACAFQYACEBEgA0GAAmsiA0H\u002FAUsNAAsLIAAgBSADEBELIAVBgAJqJAALMQAgAQJ\u002FIAIoAkxBAEgEQCAAIAEgAhA2DAELIAAgASACEDYLIgBGBEAPCyAAIAFuGgs3AQJ\u002FIwBBEGsiASQAIAAEfyABQQxqQRAgABBlIQBBACABKAIMIAAbBUEACyECIAFBEGokACACCxcAIAAgASACIAMgBCAFIAYgB0EBEB8aC2oBA38gAARAIAAoAhgiAQRAIAAoAhAiAgR\u002FQQAhAQNAIAAoAhggAUE0bGooAiwiAwRAIAMQCSAAKAIQIQILIAFBAWoiASACSQ0ACyAAKAIYBSABCxAJCyAAKAIcIgEEQCABEAkLIAAQCQsLoQEBBH8gAUEATARAQQAPCyAAKAIMIQIgACgCECEDA0AgASEFAkAgAw0AIAAgAkEIdEGA\u002FgNxIgI2AgwgAEEHQQggAkGA\u002FgNGGyIDNgIQIAAoAggiASAAKAIETw0AIAAgAUEBajYCCCAAIAIgAS0AAHIiAjYCDAsgACADQQFrIgM2AhAgAiADdkEBcSAFQQFrIgF0IARyIQQgBUEBSw0ACyAECx4AIAAoAgwEQCAAQQA2AigDQCAAKAIYQQBKDQALCwuTBAIGfwJ+AkACQANAIAAgAEEBa3ENASABQUdLDQEgAEEIIABBCEsiBxshAEGozgEpAwAiCAJ\u002FQQggAUEDakF8cSABQQhNGyIBQf8ATQRAIAFBA3ZBAWsMAQsgAWchAyABQR0gA2t2QQRzIANBAnRrQe4AaiABQf8fTQ0AGkE\u002FIAFBHiADa3ZBAnMgA0EBdGtBxwBqIgMgA0E\u002FTxsLIgOtiCIJQgBSBEADQCAJIAl6IgiIIQkCfiADIAinaiIDQQR0IgRBqMYBaigCACICIARBoMYBaiIFRwRAIAIgACABEDUiBA0GIAIoAgQiBCACKAIIIgY2AgggBiAENgIEIAIgBTYCCCACIAUoAgQ2AgQgBSACNgIEIAIoAgQgAjYCCCADQQFqIQMgCUIBiAwBC0GozgFBqM4BKQMAQn4gA62JgzcDACAJQgGFCyIJQgBSDQALQajOASkDACEIC0E\u002FIAh5p2shBQJAIAhQBEBBACECDAELIAVBBHQiBEGoxgFqKAIAIQIgCEKAgICABFQNAEHjACEDIAIgBEGgxgFqIgZGDQADQCADRQ0BIAIgACABEDUiBA0EIANBAWshAyACKAIIIgIgBkcNAAsLIAEgAEEwakEwIAcbahBmDQALIAJFDQAgAiAFQQR0QaDGAWoiA0YNAANAIAIgACABEDUiBA0CIAIoAggiAiADRw0ACwtBACEECyAEC5IVAQ9\u002FAkACQCAAKAIMRQRAQQEhDyAAKAIEQQBKDQEgACgCCEEBSg0BDAILQQEhDSAAKAIIQQBKDQAgACgCBEECSA0BCyAAKAIAIgggDUEFdGohBAJAIAAoAhAiByAAKAIUIgpPDQAgBCAHQQZ0aiEBAkAgCiAHa0EDcSIGRQRAIAchAgwBCyAHIQIDQCABIAH9AAQA\u002FQxYdp0\u002FWHadP1h2nT9Ydp0\u002F\u002FeYB\u002FQsEACABIAH9AAQQ\u002FQxYdp0\u002FWHadP1h2nT9Ydp0\u002F\u002FeYB\u002FQsEECABQUBrIQEgAkEBaiECIANBAWoiAyAGRw0ACwsgByAKa0F8Sw0AA0AgASAB\u002FQAEAP0MWHadP1h2nT9Ydp0\u002FWHadP\u002F3mAf0LBAAgASAB\u002FQAEEP0MWHadP1h2nT9Ydp0\u002FWHadP\u002F3mAf0LBBAgASAB\u002FQAEQP0MWHadP1h2nT9Ydp0\u002FWHadP\u002F3mAf0LBEAgASAB\u002FQAEUP0MWHadP1h2nT9Ydp0\u002FWHadP\u002F3mAf0LBFAgASAB\u002FQAEgAH9DFh2nT9Ydp0\u002FWHadP1h2nT\u002F95gH9CwSAASABIAH9AASQAf0MWHadP1h2nT9Ydp0\u002FWHadP\u002F3mAf0LBJABIAEgAf0ABMAB\u002FQxYdp0\u002FWHadP1h2nT9Ydp0\u002F\u002FeYB\u002FQsEwAEgASAB\u002FQAE0AH9DFh2nT9Ydp0\u002FWHadP1h2nT\u002F95gH9CwTQASABQYACaiEBIAJBBGoiAiAKRw0ACwsgCCAPQQV0aiEFAkAgACgCGCIGIAAoAhwiC08NACAFIAZBBnRqIQECQCALIAZrQQNxIghFBEAgBiECDAELQQAhAyAGIQIDQCABIAH9AAQA\u002FQwAGNA\u002FABjQPwAY0D8AGNA\u002F\u002FeYB\u002FQsEACABIAH9AAQQ\u002FQwAGNA\u002FABjQPwAY0D8AGNA\u002F\u002FeYB\u002FQsEECABQUBrIQEgAkEBaiECIANBAWoiAyAIRw0ACwsgBiALa0F8Sw0AA0AgASAB\u002FQAEAP0MABjQPwAY0D8AGNA\u002FABjQP\u002F3mAf0LBAAgASAB\u002FQAEEP0MABjQPwAY0D8AGNA\u002FABjQP\u002F3mAf0LBBAgASAB\u002FQAEQP0MABjQPwAY0D8AGNA\u002FABjQP\u002F3mAf0LBEAgASAB\u002FQAEUP0MABjQPwAY0D8AGNA\u002FABjQP\u002F3mAf0LBFAgASAB\u002FQAEgAH9DAAY0D8AGNA\u002FABjQPwAY0D\u002F95gH9CwSAASABIAH9AASQAf0MABjQPwAY0D8AGNA\u002FABjQP\u002F3mAf0LBJABIAEgAf0ABMAB\u002FQwAGNA\u002FABjQPwAY0D8AGNA\u002F\u002FeYB\u002FQsEwAEgASAB\u002FQAE0AH9DAAY0D8AGNA\u002FABjQPwAY0D\u002F95gH9CwTQASABQYACaiEBIAJBBGoiAiALRw0ACwsgCiAAKAIIIgkgACgCBCIOIA1rIgAgACAJShsiCCAIIApLGyEMIARBIGohAQJ\u002FIAdFBEAgDEUEQEEAIQMgAQwCCyAEIAT9AAQAIAX9AAQAIAT9AAQg\u002FeQB\u002FQxVE+M+VRPjPlUT4z5VE+M+\u002FeYB\u002FeUB\u002FQsEACAEIAT9AAQQIAX9AAQQIAT9AAQw\u002FeQB\u002FQxVE+M+VRPjPlUT4z5VE+M+\u002FeYB\u002FeUB\u002FQsEEEEBIQMgBEHgAGoMAQsgASAHIgNBBnRqCyECIAMgDEkEQANAIAJBIGsiACAA\u002FQAEACACQUBq\u002FQAEACAC\u002FQAEAP3kAf0MVRPjPlUT4z5VE+M+VRPjPv3mAf3lAf0LBAAgAkEQayIAIAD9AAQAIAJBMGv9AAQAIAL9AAQQ\u002FeQB\u002FQxVE+M+VRPjPlUT4z5VE+M+\u002FeYB\u002FeUB\u002FQsEACACQUBrIQIgA0EBaiIDIAxHDQALCyAIIApPIg1FBEAgAkEgayIAIAD9AAQAIAJBQGr9AAQA\u002FQxVE2M\u002FVRNjP1UTYz9VE2M\u002F\u002FeYB\u002FeUB\u002FQsEACACQRBrIgAgAP0ABAAgAkEwa\u002F0ABAD9DFUTYz9VE2M\u002FVRNjP1UTYz\u002F95gH95QH9CwQACyALIA4gCSAPayIAIAAgDkobIg4gCyAOSRshCSAFQSBqIQIgCQJ\u002FIAZFBEAgCUUEQCACIQNBAAwCCyAFIAX9AAQAIAT9AAQAIAX9AAQg\u002FeQB\u002FQx2BmI\u002FdgZiP3YGYj92BmI\u002F\u002FeYB\u002FeUB\u002FQsEACAFIAX9AAQQIAT9AAQQIAX9AAQw\u002FeQB\u002FQx2BmI\u002FdgZiP3YGYj92BmI\u002F\u002FeYB\u002FeUB\u002FQsEECAFQeAAaiEDQQEMAQsgAiAGQQZ0aiEDIAYLIgBLBEADQCADQSBrIgggCP0ABAAgA0FAav0ABAAgA\u002F0ABAD95AH9DHYGYj92BmI\u002FdgZiP3YGYj\u002F95gH95QH9CwQAIANBEGsiCCAI\u002FQAEACADQTBr\u002FQAEACAD\u002FQAEEP3kAf0MdgZiP3YGYj92BmI\u002FdgZiP\u002F3mAf3lAf0LBAAgA0FAayEDIABBAWoiACAJRw0ACwsgCyAOTSIIRQRAIANBIGsiACAA\u002FQAEACADQUBq\u002FQAEAP0MdgbiP3YG4j92BuI\u002FdgbiP\u002F3mAf3lAf0LBAAgA0EQayIAIAD9AAQAIANBMGv9AAQA\u002FQx2BuI\u002FdgbiP3YG4j92BuI\u002F\u002FeYB\u002FeUB\u002FQsEAAsCQCAHRQRAIAxFBEBBACEHDAILIAQgBP0ABAAgBf0ABAAgBP0ABCD95AH9DK4BWT2uAVk9rgFZPa4BWT395gH95AH9CwQAIAQgBP0ABBAgBf0ABBAgBP0ABDD95AH9DK4BWT2uAVk9rgFZPa4BWT395gH95AH9CwQQIARB4ABqIQFBASEHDAELIAEgB0EGdGohAQsgByAMSQRAA0AgAUEgayIAIAD9AAQAIAFBQGr9AAQAIAH9AAQA\u002FeQB\u002FQyuAVk9rgFZPa4BWT2uAVk9\u002FeYB\u002FeQB\u002FQsEACABQRBrIgAgAP0ABAAgAUEwa\u002F0ABAAgAf0ABBD95AH9DK4BWT2uAVk9rgFZPa4BWT395gH95AH9CwQAIAFBQGshASAHQQFqIgcgDEcNAAsLIA1FBEAgAUEgayIAIAD9AAQAIAFBQGr9AAQA\u002FQyuAdk9rgHZPa4B2T2uAdk9\u002FeYB\u002FeQB\u002FQsEACABQRBrIgAgAP0ABAAgAUEwa\u002F0ABAD9DK4B2T2uAdk9rgHZPa4B2T395gH95AH9CwQACwJAIAZFBEAgCUUEQEEAIQYMAgsgBSAF\u002FQAEACAE\u002FQAEACAF\u002FQAEIP3kAf0McwbLP3MGyz9zBss\u002FcwbLP\u002F3mAf3kAf0LBAAgBSAF\u002FQAEECAE\u002FQAEECAF\u002FQAEMP3kAf0McwbLP3MGyz9zBss\u002FcwbLP\u002F3mAf3kAf0LBBAgBUHgAGohAkEBIQYMAQsgAiAGQQZ0aiECCyAGIAlJBEADQCACQSBrIgAgAP0ABAAgAkFAav0ABAAgAv0ABAD95AH9DHMGyz9zBss\u002FcwbLP3MGyz\u002F95gH95AH9CwQAIAJBEGsiACAA\u002FQAEACACQTBr\u002FQAEACAC\u002FQAEEP3kAf0McwbLP3MGyz9zBss\u002FcwbLP\u002F3mAf3kAf0LBAAgAkFAayECIAZBAWoiBiAJRw0ACwsgCA0AIAJBIGsiACAA\u002FQAEACACQUBq\u002FQAEAP0McwZLQHMGS0BzBktAcwZLQP3mAf3kAf0LBAAgAkEQayIAIAD9AAQAIAJBMGv9AAQA\u002FQxzBktAcwZLQHMGS0BzBktA\u002FeYB\u002FeQB\u002FQsEAAsLXQEEfyAABEAgACgCFCIBIAAoAhAiAmwEQANAIAAoAhggA0ECdGooAgAiBARAIAQQCSAAKAIQIQIgACgCFCEBCyADQQFqIgMgASACbEkNAAsLIAAoAhgQCSAAEAkLC4UBAQJ\u002FAkACQCAAKAIEIgMgACgCACIERwRAIAAoAgghAwwBCyAAIANBCmoiBDYCBCAAKAIIIARBAnQQECIDRQ0BIAAgAzYCCCAAKAIAIQQLIAMgBEECdGogATYCACAAIARBAWo2AgBBAQ8LIAAoAggQCSAAQgA3AgAgAkEBQdIuQQAQCEEAC9gjAip\u002FA3sCQCAAKAIAIgkgA0kNACABIANPDQAgASAJTw0AIAAoAgQiCSAESQ0AIAIgBE8NACACIAlPDQAgBUEcayEoIAAoAggiGUECdCERIAdBAnQhDyAGQQJ0IR8gBUEEayEpIAIgACgCDG4hHiABIBluISMgBkEIRyEkIAIhHQNAIAAoAgwiCSEKIAIgHUYEQCAJIAIgCXBrIQoLIAogBCAdayIMIAogDEkbIhNBfHEhGyATQQNxIRYgE0F4cSEqIBNBB3EhJSATQQFrIRogGSAJQQJ0IApBAnRrQQRqbCEgIAZBAkYgE0EBRnEhKyAJIAprIBlsISYgKCAPIB0gAmsiDGwiCWohJyAJIClqISwgBSAJaiEtIAUgByAMbEECdGohHCAjISEgASEYA0AgGSAZICNsIAFraiAZIAEgGEYbIgwgAyAYayIJIAkgDEsbIRAgGSAMayEJICFBAnQiDSAAKAIYIAAoAhAgHmxBAnRqaigCACESAkACQCAIBEACQAJAAkACQAJAIBIEQCASICZBAnRqIAlBAnRqIQogGCABayENIAZBAUYNBCAcIAYgDWxBAnRqIQsgEEEBRg0DICsNAiAkDQEgEEEHTQ0BIBNFDQggJyANIB9saiAQQQV0aiEVIBIgICAQQQJ0aiAMQQJ0a2ohIiAQQXxxIQ1BACESDAULIAZBAUcEQCATRQ0IIBBBfHEhDSAQQQNxIQwgHCAYIAFrIAZsQQJ0aiELQQAhEiAQQQFrQQNJIRQDQAJAIBBFDQBBACEJQQAhCkEAIQ4gFEUEQANAIAsgBiAKbEECdGpBADYCACALIApBAXIgBmxBAnRqQQA2AgAgCyAKQQJyIAZsQQJ0akEANgIAIAsgCkEDciAGbEECdGpBADYCACAKQQRqIQogDkEEaiIOIA1HDQALCyAMRQ0AA0AgCyAGIApsQQJ0akEANgIAIApBAWohCiAJQQFqIgkgDEcNAAsLIAsgD2ohCyATIBJBAWoiEkcNAAsMCAsgE0UNByAQQQJ0IQwgHCAYIAFrQQJ0aiELQQAhCSAaQQdPBEADQCALQQAgDBAOIA9qQQAgDBAOIA9qQQAgDBAOIA9qQQAgDBAOIA9qQQAgDBAOIA9qQQAgDBAOIA9qQQAgDBAOIA9qQQAgDBAOIA9qIQsgCUEIaiIJICpHDQALC0EAIQkgJUUNBwNAIAtBACAMEA4gD2ohCyAJQQFqIgkgJUcNAAsMBwsgE0UNBiAQQXxxIRQgEEEDcSESQQAhDSAQQQFrQQNJIRcMBQtBACEJIBBBfHEiDgRAA0AgCyAJQQN0aiAKIAlBAnRqKAIANgIAIAsgCUEBciIUQQN0aiAKIBRBAnRqKAIANgIAIAsgCUECciIUQQN0aiAKIBRBAnRqKAIANgIAIAsgCUEDciIUQQN0aiAKIBRBAnRqKAIANgIAIAlBBGoiCSAOSQ0ACwsgCSAQTw0FAkAgECAJayIUQRBJDQAgLSANIB9sIg1qIAlBA3RqIBIgIGoiDiAQIAxrQQJ0akkEQCAOIAkgDGtBAnRqIA0gLGogEEEDdGpJDQELIAogCUECdGohDSAJ\u002FRH9DAAAAAABAAAAAgAAAAMAAAD9rgEhMyAJIBRBfHEiDGohCUEAIQ4DQCALIDNBAf2rASI0\u002FRsAQQJ0aiANIA5BAnRq\u002FQACACI1\u002FVoCAAAgCyA0\u002FRsBQQJ0aiA1\u002FVoCAAEgCyA0\u002FRsCQQJ0aiA1\u002FVoCAAIgCyA0\u002FRsDQQJ0aiA1\u002FVoCAAMgM\u002F0MBAAAAAQAAAAEAAAABAAAAP2uASEzIA5BBGoiDiAMRw0ACyAMIBRGDQYLQQAhDCAJIQ4gECAJa0EDcSINBEADQCALIA5BA3RqIAogDkECdGooAgA2AgAgDkEBaiEOIAxBAWoiDCANRw0ACwsgCSAQa0F8Sw0FA0AgCyAOQQN0aiAKIA5BAnRqKAIANgIAIAsgDkEBaiIJQQN0aiAKIAlBAnRqKAIANgIAIAsgDkECaiIJQQN0aiAKIAlBAnRqKAIANgIAIAsgDkEDaiIJQQN0aiAKIAlBAnRqKAIANgIAIA5BBGoiDiAQRw0ACwwFCyATRQ0EQQAhCSAaQQNPBEADQCALIAooAgA2AgAgCyAPaiIMIAogEWoiDSgCADYCACAMIA9qIgwgDSARaiINKAIANgIAIAwgD2oiDCANIBFqIg0oAgA2AgAgDSARaiEKIAwgD2ohCyAJQQRqIgkgG0cNAAsLQQAhCSAWRQ0EA0AgCyAKKAIANgIAIAogEWohCiALIA9qIQsgCUEBaiIJIBZHDQALDAQLIBwgDUECdGohCyAQQQRHBEAgE0UNBCAQQQJ0IQlBACEOIBpBA08EQANAIAsgCiAJEAshLyAKIBFqIg0gEWoiCyARaiISIBFqIQogLyAPaiANIAkQCyAPaiALIAkQCyAPaiASIAkQCyAPaiELIA5BBGoiDiAbRw0ACwtBACEOIBZFDQQDQCALIAogCRALITAgCiARaiEKIDAgD2ohCyAOQQFqIg4gFkcNAAsMBAsgE0UNA0EAIQkgGkEDTwRAA0AgCyAK\u002FQACAP0LAgAgCyAPaiIMIAogEWoiDf0AAgD9CwIAIAwgD2oiDCANIBFqIg39AAIA\u002FQsCACAMIA9qIgwgDSARaiIN\u002FQACAP0LAgAgDSARaiEKIAwgD2ohCyAJQQRqIgkgG0cNAAsLQQAhCSAWRQ0DA0AgCyAK\u002FQACAP0LAgAgCiARaiEKIAsgD2ohCyAJQQFqIgkgFkcNAAsMAwsDQEEAIQkgDQRAA0AgCyAJQQV0aiAKIAlBAnRqKAIANgIAIAsgCUEBciIMQQV0aiAKIAxBAnRqKAIANgIAIAsgCUECciIMQQV0aiAKIAxBAnRqKAIANgIAIAsgCUEDciIMQQV0aiAKIAxBAnRqKAIANgIAIAlBBGoiCSANSQ0ACwsCQCAJIBBPDQACQCAQIAlrIhRBCE8EQAJAIAsgCUEFdGogIiARIBJsak8NACAKIAlBAnRqIBUgDyASbGpPDQAgCSEMDAILIAn9Ef0MAAAAAAEAAAACAAAAAwAAAP2uASEzIAkgFEF8cSIXaiEMQQAhDgNAIAsgM0ED\u002FasBIjT9GwBBAnRqIAogCSAOakECdGr9AAIAIjX9WgIAACALIDT9GwFBAnRqIDX9WgIAASALIDT9GwJBAnRqIDX9WgIAAiALIDT9GwNBAnRqIDX9WgIAAyAz\u002FQwEAAAABAAAAAQAAAAEAAAA\u002Fa4BITMgDkEEaiIOIBdHDQALIBQgF0YNAgwBCyAJIQwLQQAhDiAQIAwiCWtBA3EiFARAA0AgCyAJQQV0aiAKIAlBAnRqKAIANgIAIAlBAWohCSAOQQFqIg4gFEcNAAsLIAwgEGtBfEsNAANAIAsgCUEFdGogCiAJQQJ0aigCADYCACALIAlBAWoiDEEFdGogCiAMQQJ0aigCADYCACALIAlBAmoiDEEFdGogCiAMQQJ0aigCADYCACALIAlBA2oiDEEFdGogCiAMQQJ0aigCADYCACAJQQRqIgkgEEcNAAsLIAogEWohCiALIA9qIQsgEyASQQFqIhJHDQALDAILIBJFBEBBASAAKAIIIAAoAgxsQQJ0EAwiEkUEQEEADwsgACgCGCAAKAIQIB5sQQJ0aiANaiASNgIACyASICZBAnRqIAlBAnRqIQsgGCABayEJAkACQAJAAkAgBkEBRwRAIBwgBiAJbEECdGohCiAQQQFGDQEgJA0CIBBBB00NAiATRQ0GICcgCSAfbGogEEEFdGohIiAgIBBBAnRqIAxBAnRrIS4gEEF8cSEUQQAhDANAQQAhCSAUBEADQCALIAlBAnRqIAogCUEFdGooAgA2AgAgCyAJQQFyIg1BAnRqIAogDUEFdGooAgA2AgAgCyAJQQJyIg1BAnRqIAogDUEFdGooAgA2AgAgCyAJQQNyIg1BAnRqIAogDUEFdGooAgA2AgAgCUEEaiIJIBRJDQALCwJAIAkgEE8NAAJAIBAgCWsiF0EITwRAAkAgCyAJQQJ0aiAiIAwgD2xqTw0AIAogCUEFdGogEiAuIAwgEWxqak8NACAJIQ0MAgsgCf0R\u002FQwAAAAAAQAAAAIAAAADAAAA\u002Fa4BITMgCSAXQXxxIhVqIQ1BACEOA0AgCyAJIA5qQQJ0aiAKIDNBA\u002F2rASI0\u002FRsDQQJ0aiAKIDT9GwJBAnRqIAogNP0bAUECdGogCiA0\u002FRsAQQJ0av0JAgD9VgIAAf1WAgAC\u002FVYCAAP9CwIAIDP9DAQAAAAEAAAABAAAAAQAAAD9rgEhMyAOQQRqIg4gFUcNAAsgFSAXRg0CDAELIAkhDQtBACEOIBAgDSIJa0EDcSIXBEADQCALIAlBAnRqIAogCUEFdGooAgA2AgAgCUEBaiEJIA5BAWoiDiAXRw0ACwsgDSAQa0F8Sw0AA0AgCyAJQQJ0aiAKIAlBBXRqKAIANgIAIAsgCUEBaiINQQJ0aiAKIA1BBXRqKAIANgIAIAsgCUECaiINQQJ0aiAKIA1BBXRqKAIANgIAIAsgCUEDaiINQQJ0aiAKIA1BBXRqKAIANgIAIAlBBGoiCSAQRw0ACwsgCyARaiELIAogD2ohCiATIAxBAWoiDEcNAAsMBgsgHCAJQQJ0aiEKIBBBBEYNAiATRQ0FIBBBAnQhCUEAIQ4gGkEDTwRAA0AgCyAKIAkQCyExIAogD2oiDSAPaiILIA9qIhIgD2ohCiAxIBFqIA0gCRALIBFqIAsgCRALIBFqIBIgCRALIBFqIQsgDkEEaiIOIBtHDQALC0EAIQ4gFkUNBQNAIAsgCiAJEAshMiAKIA9qIQogMiARaiELIA5BAWoiDiAWRw0ACwwFCyATRQ0EQQAhCSAaQQNPBEADQCALIAooAgA2AgAgCyARaiIMIAogD2oiDSgCADYCACAMIBFqIgwgDSAPaiINKAIANgIAIAwgEWoiDCANIA9qIg0oAgA2AgAgDCARaiELIA0gD2ohCiAJQQRqIgkgG0cNAAsLQQAhCSAWRQ0EA0AgCyAKKAIANgIAIAsgEWohCyAKIA9qIQogCUEBaiIJIBZHDQALDAQLIBNFDQMgEEF8cSEUIBBBA3EhEkEAIQ0gEEEBa0EDSSEXDAELIBNFDQJBACEJIBpBA08EQANAIAsgCv0AAgD9CwIAIAsgEWoiDCAKIA9qIg39AAIA\u002FQsCACAMIBFqIgwgDSAPaiIN\u002FQACAP0LAgAgDCARaiIMIA0gD2oiDf0AAgD9CwIAIA0gD2ohCiAMIBFqIQsgCUEEaiIJIBtHDQALC0EAIQkgFkUNAgNAIAsgCv0AAgD9CwIAIAogD2ohCiALIBFqIQsgCUEBaiIJIBZHDQALDAILA0ACQCAQRQ0AQQAhDkEAIQlBACEMIBdFBEADQCALIAlBAnRqIAogBiAJbEECdGooAgA2AgAgCyAJQQFyIhVBAnRqIAogBiAVbEECdGooAgA2AgAgCyAJQQJyIhVBAnRqIAogBiAVbEECdGooAgA2AgAgCyAJQQNyIhVBAnRqIAogBiAVbEECdGooAgA2AgAgCUEEaiEJIAxBBGoiDCAURw0ACwsgEkUNAANAIAsgCUECdGogCiAGIAlsQQJ0aigCADYCACAJQQFqIQkgDkEBaiIOIBJHDQALCyALIBFqIQsgCiAPaiEKIBMgDUEBaiINRw0ACwwBCwNAAkAgEEUNAEEAIQ5BACEJQQAhDCAXRQRAA0AgCyAGIAlsQQJ0aiAKIAlBAnRqKAIANgIAIAsgCUEBciIVIAZsQQJ0aiAKIBVBAnRqKAIANgIAIAsgCUECciIVIAZsQQJ0aiAKIBVBAnRqKAIANgIAIAsgCUEDciIVIAZsQQJ0aiAKIBVBAnRqKAIANgIAIAlBBGohCSAMQQRqIgwgFEcNAAsLIBJFDQADQCALIAYgCWxBAnRqIAogCUECdGooAgA2AgAgCUEBaiEJIA5BAWoiDiASRw0ACwsgCiARaiEKIAsgD2ohCyANQQFqIg0gE0cNAAsLICFBAWohISAQIBhqIhggA0kNAAsgHkEBaiEeIBMgHWoiHSAESQ0ACwtBAQvIMwUmfw9+AXsBfQF8IwBB0ABrIg8kACAPQZD\u002FAzYCKCAAKAJsIAAoAmhsIRcCfwJAAkACQCAAKAIIIgtBCEcEQEEAIAtBgAJHDQQaIA9B2f8DNgIoDAELIAAtAERBAXENACAXQQFxISIgF0F8cSENIBdBAWutQowsfiIxQiCIp0EARyEjIDGnISQgD0HNAGohJSAPQcwAaiEoIA9ByABqISkgF0EkSSEqQZD\u002FAyELAkACQAJAA0ACQCALQZP\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\u002FRwD\u002FQwAAAAAAAAAAAAAAAAAAAAA\u002FTgiQP0bAEEBcQRAIBxB2CtqIB1BAWo2AgALIED9GwFBAXEEQCAYQdgraiAWQQFqNgIACyBA\u002FRsCQQFxBEAgEUHYK2ogFEEBajYCAAsgQP0bA0EBcQRAIA5B2CtqIAxBAWo2AgALIAtBBGoiCyANRw0ACyAXIA0iC0YNAQsgC0EBciEMICIEQCATIAtBjCxsaiIOKALYKyILBEAgDkHYK2ogC0EBajYCAAsgDCELCyAMIBdGDQADQCATIAtBjCxsaiIOKALYKyIMBEAgDkHYK2ogDEEBajYCAAsgDkHk1wBqIg4oAgAiDARAIA4gDEEBajYCAAsgC0ECaiILIBdHDQALCyAKQQJBlcMAQQAQCAsgAC0AREEBcQ0AIAkgACgCEEECIAoQEkECRwRAAkAgACgCzAFBAWogF0cNACAXRQ0AIAAoApwBIQxBACELA0AgDCALQYwsbGoiCSgC1CtFBEAgCSgC2CtFDQgLIAtBAWoiCyAXRw0ACwsgCkEBQZYSQQAQCEEADAkLIAAoAhAgD0EoakECEAogDygCKCELIAAtAERBAXENAiALQdn\u002FA0cNAQwCCwsgDygCKCELCyALQdn\u002FA0cNAiAAKAIIQYACRg0CIABBgAI2AgggAEEANgLMAQwCCyALKAIYEAkgFigCKCAUQShsaiIAQQA2AhwgAEIANwIUIApBAUGFHUEAEAhBAAwECyAPIAs2AhAgCkEEQcLRACAPQRBqEAggACALNgLMASAPQdn\u002FAzYCKCAAQYACNgIICyAAKALMASELIAAoApwBIQkCQAJAIAAtAERBAXENAAJAAkAgCyAXTw0AIAkgC0GMLGxqIRMDQCATKALcKw0BIAAgC0EBaiILNgLMASATQYwsaiETIAsgF0cNAAsMAQsgCyAXRw0BCyAIQQA2AgAMAQsCQAJAIApBASAJIAtBjCxsaiIRKAK0KAR\u002FQZw0BSARLQCILEECcUUNAgJAIBEoAqgoIg1FBEBBACEMDAELIBEoAqwoIQlBACEMQQAhCyANQQRPBEAgDUF8cSEL\u002FQwAAAAAAAAAAAAAAAAAAAAAIUBBACESA0AgCSASQQN0aiIMQRxqIAxBFGogDEEMaiAM\u002FQkCBP1WAgAB\u002FVYCAAL9VgIAAyBA\u002Fa4BIUAgEkEEaiISIAtHDQALIEAgQCBA\u002FQ0ICQoLDA0ODwABAgMAAQID\u002Fa4BIkAgQCBA\u002FQ0EBQYHAAECAwABAgMAAQID\u002Fa4B\u002FRsAIQwgCyANRg0BCwNAIAkgC0EDdGooAgQgDGohDCALQQFqIgsgDUcNAAsLIBEgDBANIgk2ArQoIAkNAUGXHgtBABAIIApBAUH1PEEAEAhBAAwFCyARIAw2ArwoIBEoAqwoIQkgESgCqCgiDARAQQAhEkEAIQsDQCAJIAtBA3QiFGoiDigCACINBEAgESgCtCggEmogDSAOKAIEEAsaIBEoAqwoIBRqIgkoAgQhLyAJKAIAEAkgESgCrCgiCSAUakIANwIAIC8gEmohEiARKAKoKCEMCyALQQFqIgsgDEkNAAsLIBFBADYCqCggCRAJIBFBADYCrCggESARKAK0KDYCsCggESARKAK8KDYCuCgLAn9BACEoIAAoAtABIgsoAhwiJigCTCAAKALMASIJQYwsbGooAtArIRsgCygCGCIUKAIYIScgCygCFCgCACIeICYoAgQgJigCDCILIAkgCSAmKAIYIgluIgwgCWxrbGoiDiAUKAIAIgkgCSAOSRsiDTYCACAeQX8gCyAOaiIJIAkgDkkbIgsgFCgCCCIJIAkgC0sbIgk2AggCQCAJIA1KIA1BAE5xRQRAIApBAUGBM0EAEAgMAQsgHigCFCEQIB4gJigCCCAMICYoAhAiC2xqIg0gFCgCBCIJIAkgDUkbIgw2AgQgHkF\u002FIAsgDWoiCSAJIA1JGyILIBQoAgwiCSAJIAtLGyIJNgIMIAkgDEogDEEATnFFBEAgCkEBQdsyQQAQCAwBCwJAIBsoAgQEQCAeKAIQDQFBAQwDCyAKQQFB1ShBABAIDAELAkACQANAICdBADYCJCAQICc0AgAiNUIBfSIxIB40AgB8IDV\u002FPgIAIBAgJzQCBCI0QgF9IjIgHjQCBHwgNH8+AgQgECAxIB40Agh8IDV\u002FPgIIIB40AgwhMSAQICg2AhAgECAxIDJ8IDR\u002FPgIMIBAgGygCBCILNgIUIBBBASALICYoAlAiCWsgCSALSxs2AhggECgCNBAJIBBBADYCRCAQ\u002FQwAAAAAAAAAAAAAAAAAAAAA\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\u002FIAJBAUYEQEF\u002FIQZBAAwBC0F\u002FIQYgAkEBayIDQQFxIQ0CQCACQQJGBEBBACEFIAIhBAwBCyADQX5xIQtBACEFIAEhAyACIQQDQCAAIANBAWo2AgAgAy0AACEMIAAgA0ECaiIBNgIAIAAgBEEBazYCFCADLQABIQMgACAEQQJrIgQ2AhQgBkH\u002FASAFdEF\u002Fc3EgDCAFdHJBgP4DIAV0QX9zcSADIAVBCHJ0ciEGIAVBEGohBSABIQMgCEECaiIIIAtHDQALCyANBEAgACABQQFqIgM2AgAgAS0AACEBIAAgBEEBazYCFCAGQf8BIAV0QX9zcSABIAV0ciEGIAMhAQsgAkEDdEEIawshBSAAIAFBAWo2AgAgBkH\u002FASAFdEF\u002Fc3EgAS0AAEEPciAFdHIhBQsgACAHNgIUCyAAKAIYIQEgACAFQRh2IgdB\u002FwFGNgIYIAAgCSAFQRB2Qf8BcSIIQf8BRiIKIAVBCHZB\u002FwFxIgtB\u002FwFGIgwgASAFQf8BcSIEQf8BRiICampqIgFrQSBqIgM2AhAgACAAKQMIIARBB0EIIAIbdCALckEHQQggDBt0IAhyQQdBCCAKG3QgB3KtIAEgCWtBIGqthoQ3AwhBACEFIANBBkgNAQsgACgCHCIBQQJ0QbCdAWooAgAhAgJ+IAApAwgiDkIAUwRAQQwgAUEBaiABQQtOGyEEIANBAWshA0F\u002FIAJ0QX9zQQF0IQFCAQwBCyABQQFrQQAgAUEBShshBCAOQT8gAmutiKdBfyACdEF\u002Fc3FBAXRBAXIhASADIAJBAWoiAmshAyACrQshDyAAIAM2AhAgACAENgIcIAAgDiAPhjcDCCAAIAGsIAApAyhCQIOENwMoQQEhBSADQQZIDQAgACgCHCIBQQJ0QbCdAWooAgAhAgJ+IAApAwgiDkIAUwRAQQwgAUEBaiABQQtOGyEEIANBAWshA0F\u002FIAJ0QX9zQQF0IQFCAQwBCyABQQFrQQAgAUEBShshBCAOQT8gAmutiKdBfyACdEF\u002Fc3FBAXRBAXIhASADIAJBAWoiAmshAyACrQshDyAAIAM2AhAgACAENgIcIAAgDiAPhjcDCCAAIAApAyhC\u002F0CDIAGsQgeGhDcDKEECIQUgA0EGSA0AIAAoAhwiAUECdEGwnQFqKAIAIQICfiAAKQMIIg5CAFMEQEEMIAFBAWogAUELThshBCADQQFrIQNBfyACdEF\u002Fc0EBdCEBQgEMAQsgAUEBa0EAIAFBAUobIQQgDkE\u002FIAJrrYinQX8gAnRBf3NxQQF0QQFyIQEgAyACQQFqIgJrIQMgAq0LIQ8gACADNgIQIAAgBDYCHCAAIA4gD4Y3AwggACAAKQMoQv\u002F\u002FQIMgAaxCDoaENwMoQQMhBSADQQZIDQAgACgCHCIBQQJ0QbCdAWooAgAhAgJ+IAApAwgiDkIAUwRAQQwgAUEBaiABQQtOGyEEIANBAWshA0F\u002FIAJ0QX9zQQF0IQFCAQwBCyABQQFrQQAgAUEBShshBCAOQT8gAmutiKdBfyACdEF\u002Fc3FBAXRBAXIhASADIAJBAWoiAmshAyACrQshDyAAIAM2AhAgACAENgIcIAAgDiAPhjcDCCAAIAApAyhC\u002F\u002F\u002F\u002FQIMgAaxCFYaENwMoQQQhBSADQQZIDQAgACgCHCIBQQJ0QbCdAWooAgAhAgJ+IAApAwgiDkIAUwRAQQwgAUEBaiABQQtOGyEEIANBAWshA0F\u002FIAJ0QX9zQQF0IQFCAQwBCyABQQFrQQAgAUEBShshBCAOQT8gAmutiKdBfyACdEF\u002Fc3FBAXRBAXIhASADIAJBAWoiAmshAyACrQshDyAAIAM2AhAgACAENgIcIAAgDiAPhjcDCCAAIAApAyhC\u002F\u002F\u002F\u002F\u002F0CDIAGsQhyGhDcDKEEFIQUgA0EGSA0AIAAoAhwiAUECdEGwnQFqKAIAIQICfiAAKQMIIg5CAFMEQEEMIAFBAWogAUELThshBCADQQFrIQNBfyACdEF\u002Fc0EBdCEBQgEMAQsgAUEBa0EAIAFBAUobIQQgDkE\u002FIAJrrYinQX8gAnRBf3NxQQF0QQFyIQEgAyACQQFqIgJrIQMgAq0LIQ8gACADNgIQIAAgBDYCHCAAIA4gD4Y3AwggACAAKQMoQv\u002F\u002F\u002F\u002F\u002F\u002FQIMgAa1CI4aENwMoQQYhBSADQQZIDQAgACgCHCIBQQJ0QbCdAWooAgAhAgJ+IAApAwgiDkIAUwRAQQwgAUEBaiABQQtOGyEEIANBAWshA0F\u002FIAJ0QX9zQQF0IQFCAQwBCyABQQFrQQAgAUEBShshBCAOQT8gAmutiKdBfyACdEF\u002Fc3FBAXRBAXIhASADIAJBAWoiAmshAyACrQshDyAAIAM2AhAgACAENgIcIAAgDiAPhjcDCCAAIAApAyhC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FQIMgAa1CKoaENwMoQQchBSADQQZIDQAgACgCHCIBQQJ0QbCdAWooAgAhAgJ+IAApAwgiDkIAUwRAQQwgAUEBaiABQQtOGyEEIANBAWshA0F\u002FIAJ0QX9zQQF0IQFCAQwBCyABQQFrQQAgAUEBShshBCAOQT8gAmutiKdBfyACdEF\u002Fc3FBAXRBAXIhASADIAJBAWoiAmshAyACrQshDyAAIAM2AhAgACAENgIcIAAgDiAPhjcDCCAAIAApAyhC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F0CDIAGtQjGGhDcDKEEIIQULIAAgBUEBazYCICAAIAApAygiDkIHiDcDKCAOp0H\u002FAHELIgEBfyAABEAgACgCDCIBBEAgARAJIABBADYCDAsgABAJCwuFAQIFfwF+AkAgAEKAgICAEFQEQCAAIQcMAQsDQCABQQFrIgEgAEIKgCIHQvYBfiAAfKdBMHI6AAAgAEL\u002F\u002F\u002F\u002F\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\u002F\u002F\u002F\u002F\u002FBzYCBCAPQf\u002F\u002F\u002F\u002F8HNgIAIBcoAhAEQANAIA4EfyAOIBJBAnRqKAIABUEACyELIAk1AgQihgFCAX0iigEgDzUCCHwghgGAIYsBIAk1AgAihwFCAX0iiAEgDzUCEHwghwGAIYwBIIoBIA81Agx8IIYBgCGGASCIASAPNQIUfCCHAYAhhwEgASgCBCIIIA8oAhxLBEAgDyAINgIcIAEoAgQhCAsgCARAIIsBQv\u002F\u002F\u002F\u002F8PgyGKASCMAUL\u002F\u002F\u002F\u002F\u002FD4MhiwEghgFC\u002F\u002F\u002F\u002F\u002Fw+DIYgBIIcBQv\u002F\u002F\u002F\u002F8PgyGMASABQbAHaiEfIAFBrAZqISFBACEaA0AgHyAaQQJ0IhBqKAIAIQYgECAhaigCACERQQAhECALBEAgCyAGNgIEIAsgETYCACALQQhqIRALAkAgESAIQQFrIghqIgtBH0sNACAJKAIAIiJBfyALdksNACAPIA8oAgQiJyAiIAt0IgsgCyAnSxs2AgQLAkAgBiAIaiILQR9LDQAgCSgCBCIiQX8gC3ZLDQAgDyAPKAIAIicgIiALdCILIAsgJ0sbNgIAC0EAIQsgigFCfyAIrSKGAYZCf4UihwF8IIYBiCKNAUL\u002F\u002F\u002F\u002F\u002FD4NCASAGrSKJAYZ8QgF9IIkBiKcghwEgiAF8IIYBiKciIiAGdmtBfyAGdnFBACAiII0Bp0cbIQYghwEgiwF8IIYBiCKNAUL\u002F\u002F\u002F\u002F\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\u002FQkCoAH9VgIAAf1WAgAC\u002FVYCAAMgBkHgBGogBkHIA2ogBkGwAmogBv0JApgB\u002FVYCAAH9VgIAAv1WAgAD\u002FbEB\u002FbkBIAZB7ARqIAZB1ANqIAZBvAJqIAb9CQKkAf1WAgAB\u002FVYCAAL9VgIAAyAGQeQEaiAGQcwDaiAGQbQCaiAG\u002FQkCnAH9VgIAAf1WAgAC\u002FVYCAAP9sQH9uQEhgAEgAUEEaiIBIAhHDQALIIABIIABIIAB\u002FQ0ICQoLDA0ODwABAgMAAQID\u002FbkBIoABIIABIIAB\u002FQ0EBQYHAAECAwABAgMAAQID\u002FbkB\u002FRsAIQYgCCAKRg0BCwNAIAYgBygCoAEgBygCmAFrIgEgASAGSRsiASAHKAKkASAHKAKcAWsiBiABIAZLGyEGIAdBmAFqIQcgFUEBayIVDQALC0EAIQcgBkH\u002F\u002F\u002F8\u002FSw0CICUgBkEFdCISECwiDzYCECAPRQ0CICUgDzYCACAKBEAgECATayEQIBggEWshCCAbIBprIQEDQCAJKAIkIRMgJSAIIhU2AgggJSABIgc2AhggDCgCnAEhBiAMKAKkASEIIAwoAqABIQEgJSAMKAKYASIRQQJvNgIcICUgASARayIBIAdrNgIUAkAgFkECSCIaRSAIIAZrIghBAUtxRQRAQQAhBiAIRQ0BA0AgJUEQaiATIAYgEGxBAnRqEFYgBkEBaiIGIAhHDQALDAELIAggFiAIIBZJGyIRQQFrIRsgCCARbiEYQQAhBwNAQSQQDSIGRQ0FICX9AAIQIYABIAYgEzYCGCAGIBA2AhQgBiABNgIQIAYggAH9CwIAIAYgByAYbDYCHCAHIBtGIR8gBiAIIAdBAWoiByAYbCAfGzYCICAGIBIQLCIfNgIAIB9FBEBBACEHIA4QGiAGEAkgDxAJDAcLIA5BCiAGECYgByARRw0ACyAOEBoLICUgCCAVazYCBCAlIAwoApwBQQJvNgIMAkAgGkUgAUEBS3FFBEBBCCEHQQAhBiABQQhPBEADQCAlIBMgBkECdGogEEEIECsgByIGQQhqIgcgAU0NAAsLIAEgBk0NASAlIBMgBkECdGogECABIAZrECsMAQsgASAWIAEgFkkbIhVBAWshGCABIBVuIRFBACEHA0BBJBANIgZFDQUgJf0AAgAhgAEgBiATNgIYIAYgEDYCFCAGIAg2AhAgBiCAAf0LAgAgBiAHIBFsNgIcIAcgGEYhGiAGIAEgB0EBaiIHIBFsIBobNgIgIAYgEhAsIho2AgAgGkUEQEEAIQcgDhAaIAYQCSAPEAkMBwsgDkELIAYQJiAHIBVHDQALIA4QGgsgDEGYAWohDCAKQQFrIgoNAAsLQQEhByAPEAkMAgtBASEHIAkoAhwiCCAeQZgBbGoiNUGYAWsiXygCACA1QZABaygCAEYNASA1QZQBayJgKAIAIDVBjAFrKAIARg0BIAgoAgQhDiAIKAIMIQ8gCCgCACEWIAgoAgghECAJKAJEISEgCSgCQCEiIAkoAjwhKCAJKAI4ITAgCSAeEFUiOUUEQEEAIQcMAgsCQAJAIB5BAUcEQAJAAkAgHkEBayIKQQRJBEAgCiEBIAghBwwBCyAKQQNxIQEgCCAKQXxxIhVBmAFsaiEHA0AggAEgCCAMQZgBbGoiBkHoBGogBkHQA2ogBkG4AmogBv0JAqAB\u002FVYCAAH9VgIAAv1WAgADIAZB4ARqIAZByANqIAZBsAJqIAb9CQKYAf1WAgAB\u002FVYCAAL9VgIAA\u002F2xAf25ASAGQewEaiAGQdQDaiAGQbwCaiAG\u002FQkCpAH9VgIAAf1WAgAC\u002FVYCAAMgBkHkBGogBkHMA2ogBkG0AmogBv0JApwB\u002FVYCAAH9VgIAAv1WAgAD\u002FbEB\u002FbkBIYABIAxBBGoiDCAVRw0ACyCAASCAASCAAf0NCAkKCwwNDg8AAQIDAAECA\u002F25ASKAASCAASCAAf0NBAUGBwABAgMAAQIDAAECA\u002F25Af0bACEGIAogFUYNAQsDQCAGIAcoAqABIAcoApgBayIKIAYgCksbIgYgBygCpAEgBygCnAFrIgogBiAKSxshBiAHQZgBaiEHIAFBAWsiAQ0ACwsgBkGAgICAAU8NAiAGQQR0ECwiFEUNAgJAIB5FDQAgDyAOayESIBAgFmshGiAUQQRrITsgFEEEaiEkIBRBDGohKSAUQRxqIUMgFEEYaiEfIBRBFGohICAUQQxrIUQgFEEIaiEqIBRBEGohNiAUQRBrITcgFEEIayFBICGtIYYBICKtIYcBICitIYoBIDCtIYsBQQEhRgNAIAgoApwBIgFBAm8hRyAIKAKYASIHQQJvITwgCCgCpAEgAWsiJyASayEsIAgoAqABIAdrIi0gGmshLiAwIgwhByAoIgYhCiAiIgEhOiAhIg8hEQJAIAkoAhQiFSBGRg0AIBUgRmshFUEAIQpBACEHIAwEQEJ\u002FIBWtIogBhkJ\u002FhSCLAXwgiAGIpyEHCyAoBEBCfyAVrSKIAYZCf4UgigF8IIgBiKchCgtBACEPQQAhASAiBEBCfyAVrSKIAYZCf4UghwF8IIgBiKchAQsgIQRAQn8gFa0iiAGGQn+FIIYBfCCIAYinIQ8LQQAhOkEAIQxBASAVQQFrdCIOIDBJBEAgMCAOa61CfyAVrSKIAYZCf4V8IIgBiKchDAsgDiAiSQRAICIgDmutQn8gFa0iiAGGQn+FfCCIAYinIToLQQAhEUEAIQYgDiAoSQRAICggDmutQn8gFa0iiAGGQn+FfCCIAYinIQYLIA4gIU8NACAhIA5rrUJ\u002FIBWtIogBhkJ\u002FhXwgiAGIpyERC0F\u002FIDogCCgCtAEiFWsiDkEAIA4gOk0bIg5BAmoiFiAOIBZLGyIOIC4gDiAuSRsiNEF\u002FIAEgCCgC2AEiE2siDkEAIAEgDk8bIgFBAmoiDiABIA5LGyIBIBogASAaSRsiJiA8G0EBdCIBICYgNCA8G0EBdEEBciIOIAEgDksbIkggLUkhGCAMIBVrIgFBACABIAxNGyIBQQJrIgxBACABIAxPGyIQIAcgE2siAUEAIAEgB00bIgFBAmsiDEEAIAEgDE8bIhYgPBtBAXQiDCAWIBAgPBtBAXRBAXIiK0khLyAKIAgoArgBIhtrIhVBACAKIBVPGyIKQQJrIhVBACAKIBVPGyIVISMgBiAIKALcASIKayIOQQAgBiAOTxsiBkECayIOQQAgBiAOTxsiDiE9QX8gDyAbayIGQQAgBiAPTRsiBkECaiIPIAYgD0sbIgYgEiAGIBJJGyIbIT5BfyARIAprIgZBACAGIBFNGyIGQQJqIgogBiAKSxsiBiAsIAYgLEkbIhwhPyBHBEAgFSE9IBwhPiAbIT8gDiEjCyBIIC0gGBshSSAMICsgLxshGCASIBxqIVAgDiASaiFRICcEQCAUIBZBA3QiBmoiRUEEaiA7IC5BA3QiCmoiUiAWIC5IIgwbIVMgBiAkaiIGICYgLiAmIC5IGyIPIAcgEyAHIBNJG0ECIAEgAUECTxtqIgFqIhMgB2tBAmsiEUEDdCIraiAGSSApIAcgAWtBA3RqIgEgK2ogAUlyIBFB\u002F\u002F\u002F\u002F\u002FwFLciFUIDQgGkEBayAaIDRKGyEvQQAhESAaQQFKIC5BAEpyIVUgJCA8QQJ0IgFrIBBBA3RqIVYgASBFaiFXIBYgB0F\u002FcyATaiJKQXxxIjJqITggFkEBaiITIDJqIUIgGiA0aiFYIBAgGmohWSAW\u002FRH9DAAAAAABAAAAAgAAAAMAAAD9rgEhgwEgFCAYQQJ0aiFaIEEgGkEDdCIBaiFLIAEgO2ohTCAKIEFqIU0gGkUgLkEBRnEhWyAUIElBAnQiAWohXCABIDtqIV0gE\u002F0R\u002FQwAAAAAAQAAAAIAAAADAAAA\u002Fa4BIYQBIDsgFiAuIAwbQQN0aiFeA0ACQAJAIBEgG0kgESAVT3ENACARIFBJIBEgUU9xDQAgEUEBaiErDAELIC0gSEsEQCBdQQA2AgAgXEEANgIACyA5IBYgESAmIBFBAWoiKyBXQQJBABAXIDkgWSARIFggKyBWQQJBABAXAkACQAJAIDxFBEAgVUUNAyAWICZODQICQAJAIBZBAEoEQCBeKAIAIQcMAQsgJCgCACIHIQEgFkEASA0BCyAHIQEgUygCACEHCyBFIEUoAgAgASAHakECakECdWs2AgAgEyIHIA9ODQFBACEHIIQBIYABIIMBIYIBIBMhASAWIQogSkEUSSBUckUEQANAIBQggAFBAf2rASKBAf0bAEECdGoiASAUIIEB\u002FRsDQQJ0aiIGIBQggQH9GwJBAnRqIgogFCCBAf0bAUECdGoiDCAB\u002FQkCAP1WAgAB\u002FVYCAAL9VgIAAyAUIIIBQQH9qwH9DAEAAAABAAAAAQAAAAEAAAD9UCKFAf0bA0ECdGogFCCFAf0bAkECdGogFCCFAf0bAUECdGogFCCFAf0bAEECdGr9CQIA\u002FVYCAAH9VgIAAv1WAgADIBQggQH9DAEAAAABAAAAAQAAAAEAAAD9UCKBAf0bA0ECdGogFCCBAf0bAkECdGogFCCBAf0bAUECdGogFCCBAf0bAEECdGr9CQIA\u002FVYCAAH9VgIAAv1WAgAD\u002Fa4B\u002FQwCAAAAAgAAAAIAAAACAAAA\u002Fa4BQQL9rAH9sQEigQH9WgIAACAMIIEB\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\u002Fa4B\u002FQwCAAAAAgAAAAIAAAACAAAA\u002Fa4BQQL9rAH9sQH9CwIAIAEiBkEBaiIBIA9HDQALIA8hBwsgByAbTg0AA0AgB0EDdCEBIAcgLEghBgJAIAdBAEwEQCA2KAIAIQogB0EATgRAIBQgAUECdCIBaiIyIDIoAgAgCiABIDZqIEUgBhsoAgBqQQJqQQJ1azYCACABICRqIgogCigCACAgKAIAIAEgIGogPCAGGygCAGpBAmpBAnVrNgIAIAEgKmoiCiAKKAIAIB8oAgAgASAfaiA6IAYbKAIAakECakECdWs2AgAgQygCACABIENqICYgBhsoAgBqQQJqIQYgASApaiEBDAILIBQgAUECdCIBaiIGIAYoAgAgCkEBdEECakECdWs2AgAgASAkaiIGIAYoAgAgFCgCFEEBdEECakECdWs2AgAgASAqaiIGIAYoAgAgFCgCGEEBdEECakECdWs2AgAgASApaiEBIBQoAhxBAXRBAmohBgwBCyAUIAcgLCAGG0EDdEEEa0ECdCIKaigCACEyIAZFBEAgFCABQQJ0IgFqIgYgBigCACAyIEUoAgBqQQJqQQJ1azYCACABICRqIgYgBigCACAKICRqKAIAIDwoAgBqQQJqQQJ1azYCACABICpqIgYgBigCACAKICpqKAIAIDooAgBqQQJqQQJ1azYCACABIClqIQEgCiApaigCACAmKAIAakECaiEGDAELIBQgAUECdCIBaiIGIAYoAgAgMiAGKAIQakECakECdWs2AgAgASAkaiIGIAYoAgAgCiAkaigCACAGKAIQakECakECdWs2AgAgASAqaiIGIAYoAgAgCiAqaigCACAGKAIQakECakECdWs2AgAgCiApaigCACABIClqIgEoAhBqQQJqIQYLIAEgASgCACAGQQJ1azYCACAHQQFqIgcgG0cNAAsLIA4gHE4NACAMIA4iASIHSgRAA0AgFCABQQV0aiIHIAf9AAIgIAf9AAIA\u002Fa4BQQH9rAEgB\u002F0AAhD9rgH9CwIQIAFBAWoiASAMRw0ACyAMIQcLIAcgHE4NAANAIEMgB0EDdCIBQQJ0aiIyAn8gB0EASARAIBQoAgAhBiAHQX9HBEAgNiABQQJ0IgFqIgogCigCACAGajYCACABICBqIgYgBigCACAkKAIAajYCACABIB9qIgEgASgCACAqKAIAajYCACApKAIADAILIDYgAUECdCIBaiIKIAooAgAgVygCACAGakEBdWo2AgAgASAgaiIGIAYoAgAgVigCACAkKAIAakEBdWo2AgAgASAfaiIBIAEoAgAgVSgCACAqKAIAakEBdWo2AgAgVCgCACApKAIAakEBdQwBCyABID4gByASSBshBiASIAdBAWoiZkwEQCA2IAFBAnQiCmoiASABKAIAIGsoAgAgFCAGQQJ0aiIBKAIAakEBdWo2AgAgCiAgaiIGIAYoAgAgaigCACABKAIEakEBdWo2AgAgCiAfaiIGIAYoAgAgaSgCACABKAIIakEBdWo2AgAgaCgCACABKAIMakEBdQwBCyA2IAFBAnQiCmoiASABKAIAIBQgZkEFdGoiASgCACAUIAZBAnRqIgYoAgBqQQF1ajYCACAKICBqImYgZigCACABKAIEIAYoAgRqQQF1ajYCACAKIB9qIgogCigCACABKAIIIAYoAghqQQF1ajYCACABKAIMIAYoAgxqQQF1CyAyKAIAajYCACAHQQFqIgcgHEcNAAsLIDkgFiBdIBggSCBeQQFBBEEAEB8NAAsLDAILIBQQCUEBIQcLIDkgNUEQaygCACIBIF8oAgAiBmsgNUEMaygCACBgKAIAIgprIDVBCGsoAgAiCCAGayA1QQRrKAIAIAprIAkoAjRBASAIIAFrEBcgORAdDAMLIDkQHSAUEAlBACEHDAILIDkQHUEAIQcMAQtBACEHIA4QGiAPEAkLICVBIGokACAHDQEMBQsgASEIQQAhDv0MAAAAAAAAAAAAAAAAAAAAACGAASMAQUBqIhwkAAJAAn8CQCAZKAJABEAgCSgCHCIVIAkoAhhBmAFsaiIBQZgBaygCACEaIAFBkAFrKAIAIRsgFSgCBCEMIBUoAgwheiAVKAIAIRAgFSgCCCETQQEhByAZKAIsIh8oAgQhKyAIQQFGDQNBACEGIAhBAWsiFiEIIBUhAQJAIBZBBE8EQCAWQQNxIQggASAWQXxxIgpBmAFsaiEBQQAhBwNAIIABIBUgB0GYAWxqIgZB6ARqIAZB0ANqIAZBuAJqIAb9CQKgAf1WAgAB\u002FVYCAAL9VgIAAyAGQeAEaiAGQcgDaiAGQbACaiAG\u002FQkCmAH9VgIAAf1WAgAC\u002FVYCAAP9sQH9uQEgBkHsBGogBkHUA2ogBkG8AmogBv0JAqQB\u002FVYCAAH9VgIAAv1WAgADIAZB5ARqIAZBzANqIAZBtAJqIAb9CQKcAf1WAgAB\u002FVYCAAL9VgIAA\u002F2xAf25ASGAASAHQQRqIgcgCkcNAAsggAEggAEggAH9DQgJCgsMDQ4PAAECAwABAgP9uQEigAEggAEggAH9DQQFBgcAAQIDAAECAwABAgP9uQH9GwAhBiAKIBZGDQELA0AgBiABKAKgASABKAKYAWsiByAGIAdLGyIHIAEoAqQBIAEoApwBayIGIAYgB0kbIQYgAUGYAWohASAIQQFrIggNAAsLQQAhByAGQf\u002F\u002F\u002Fz9LDQMgHCAGQQV0IkYQFiIBNgIgIAFFDQMgHCABNgIAIBZFBEBBASEHIAEQCQwECyB6IAxrIQ8gEyAQayEOQQIgK0EBdiIBIAFBAk0bIUcgCSgCJCIKIBtBHGwiTSAaQRxsIl9raiEvIAogG0EYbCJgIBpBGGwiUmtqIT0gCiAbQRRsIlMgGkEUbCJUa2ohPiAKIBtBBHQiVSAaQQR0IlZraiE\u002FIAogG0EMbCJXIBpBDGwiWGtqITggGyAaayIQQQdsIUkgEEEGbCFFIBBBBWwhMiAQQQNsIUggEEEBdCFQIAogEEEDdCJRaiFCIAogEEECdCJBaiEUIBBBBXQhWSAQ\u002FREhhAEDQCAcIA82AgggHCAOIgE2AiggFSgCnAEhJCAVKAKkASEpIBUoAqABIR4gFSgCmAEhICAcQQA2AjggHCABNgI0IBxBADYCMCAcICBBAm8iGDYCLCAcIB4gIGsiDiABayITNgI8IBwgEzYCJAJAICtBAkgiWkUgKSAkayIPQQ9LcUUEQEEAIQcgCiEGIA9BCEkNASA\u002FIAYgUyAeQQJ0IgFqIFQgIEECdCIIamtqIjpJID4gBiABIFVqIAggVmpraiJDSXEgPSBDSSA\u002FIAYgASBgaiAIIFJqa2oiPElxciAvIENJID8gBiABIE1qIAggX2praiJESXFyIVsgPSBESSAvIDxJcSFcID4gREkgLyA6SXEhXSA8ID5LIDogPUtxIV4gQiAGIAEgV2ogCCBYamtqIkpJIDggBiABIFFqIAhraiJLSXEhYSAUIEpJIDggBiAbIB5qIBogIGprQQJ0aiJMSXEhYiAUIEtJIEIgTElxIWMgBiABIAhraiEqIA5BfHEhCCAcKAIgIhMgDkEFdGoiEUEQayElIBFBFGshLCARQRhrIS4gEUEcayE2IBFBBGshOSARQQhrITsgEUEMayE0QQAhGCATQQxqIiMgHiAgQX9zaiIMQQV0IgFqICNJIAxB\u002F\u002F\u002F\u002FP0siDCATQQRqIiEgAWogIUkgASATaiATSXJyIBNBCGoiIiABaiAiSXJyIA5ByAJJciFkIBNBFGoiKCABaiAoSSATQRBqIicgAWogJ0lyIAxyIBNBGGoiMCABaiAwSXIgE0EcaiItIAFqIC1JciAOQdQASXIhZQNAIAchDCAcQSBqIgEgBiAQQQgQNCABEBwCQCAORQ0AIBggWWwhB0EAIQECQAJAIGQNACBhIAYgNkkgEyAHICpqIjdJcSAGIAcgSmoiEkkgKiA4S3EgFCAqSSAGIAcgTGoiJklxIAYgByBLaiI1SSAqIEJLcXJyciAGIC5JICEgN0lxciAGICxJICIgN0lxciAGICVJICMgN0lxciBjciBiciATICZJIAcgFGoiNyA2SXFyICEgJkkgLiA3S3FyICIgJkkgLCA3S3FyICMgJkkgJSA3S3Fycg0AIBMgNUkgByBCaiImIDZJcQ0AICEgNUkgJiAuSXENACAiIDVJICYgLElxDQAgIyA1SSAlICZLcQ0AIAcgOGoiJiA2SSASIBNLcQ0AICYgLkkgEiAhS3ENACAmICxJIBIgIktxDQAgEiAjSyAlICZLcQ0AA0AgBiABQQJ0aiATIAFBBXRqIhL9CQIAIBIqAiD9IAEgEkFAayoCAP0gAiASKgJg\u002FSAD\u002FQsCACAGIAEgEGpBAnRqIBL9CQIEIBIqAiT9IAEgEioCRP0gAiASKgJk\u002FSAD\u002FQsCACAGIAEgUGpBAnRqIBL9CQIIIBIqAij9IAEgEioCSP0gAiASKgJo\u002FSAD\u002FQsCACAGIAEgSGpBAnRqIBL9CQIMIBIqAiz9IAEgEioCTP0gAiASKgJs\u002FSAD\u002FQsCACABQQRqIgEgCEcNAAsgCCIBIA5GDQELA0AgBiABQQJ0aiATIAFBBXRqIhIqAgA4AgAgBiABIBBqQQJ0aiASKgIEOAIAIAYgASBQakECdGogEioCCDgCACAGIAEgSGpBAnRqIBIqAgw4AgAgAUEBaiIBIA5HDQALC0EAIQECQCBlDQAgXCAHID5qIhIgNEkgJyAHIDpqIiZJcSBbIAcgP2oiNSA0SSAnIAcgQ2oiN0lxciAoIDdJIDUgO0lxciAwIDdJIDUgOUlxciAtIDdJIBEgNUtxciBeciBdcnIgEiA7SSAmIChLcXIgEiA5SSAmIDBLcXIgJiAtSyARIBJLcXJyDQAgByA9aiISIDRJICcgByA8aiImSXENACASIDtJICYgKEtxDQAgEiA5SSAmIDBLcQ0AICYgLUsgESASS3ENACAHIC9qIhIgNEkgJyAHIERqIgdJcQ0AIBIgO0kgByAoS3ENACASIDlJIAcgMEtxDQAgByAtSyARIBJLcQ0AA0AgBiABIEFqQQJ0aiATIAFBBXRqIgf9CQIQIAcqAjD9IAEgByoCUP0gAiAHKgJw\u002FSAD\u002FQsCACAGIAEgMmpBAnRqIAf9CQIUIAcqAjT9IAEgByoCVP0gAiAHKgJ0\u002FSAD\u002FQsCACAGIAEgRWpBAnRqIAf9CQIYIAcqAjj9IAEgByoCWP0gAiAHKgJ4\u002FSAD\u002FQsCACAGIAEgSWpBAnRqIAf9CQIcIAcqAjz9IAEgByoCXP0gAiAHKgJ8\u002FSAD\u002FQsCACABQQRqIgEgCEcNAAsgCCIBIA5GDQELA0AgBiABIEFqQQJ0aiATIAFBBXRqIgcqAhA4AgAgBiABIDJqQQJ0aiAHKgIUOAIAIAYgASBFakECdGogByoCGDgCACAGIAEgSWpBAnRqIAcqAhw4AgAgAUEBaiIBIA5HDQALCyAYQQFqIRggDEEIaiEHIAYgUUECdGohBiAMQQ9qIA9JDQALDAELIA8gD0EDdiIHICsgByArSRsiEm5BeHEhESAPQXhxIQdBACEIIAohBgNAQTAQDSIMRQ0EIAwgRhAWIiM2AgAgI0UEQCAfEBogDBAJQQAMBgsgDCAGNgIoIAwgEDYCJCAMIA42AiAgDCATNgIcIAxBADYCGCAMIAE2AhQgDEEANgIQIAwgGDYCDCAMIAE2AgggDCATNgIEIAwgByAIIBFsayARIAhBAWoiCCASRhsiIzYCLCAfQQwgDBAmIAYgECAjbEECdGohBiAIIBJHDQALIB8QGgsCQCAHIA9PDQAgHEEgaiIBIAYgECAPIAdrIhgQNCABEBwgDkUNACAcKAIgIiMgHkEFdEEBIBggGEEBTRsiEkECdGogIEEFdGtqQSBrIR4gEkEDcSEgIBJBfHEhDCBBIBJBAWtsISFBACEIA0AgIyAIQQV0aiETQQAhBwJAAkAgGEEESQ0AIB4gBiAIQQJ0IhFqIgEgBiARICFqaiIRIAEgEUkbSwRAICMgASARIAEgEUsbQQRqSQ0BCyAI\u002FREhgQH9DAAAAAABAAAAAgAAAAMAAAAhgAFBACEBA0AgBiCAASCEAf21ASCBAf2uASKCAf0bAEECdGogEyABQQJ0av0AAgAigwH9HwA4AgAgBiCCAf0bAUECdGoggwH9HwE4AgAgBiCCAf0bAkECdGoggwH9HwI4AgAgBiCCAf0bA0ECdGoggwH9HwM4AgAggAH9DAQAAAAEAAAABAAAAAQAAAD9rgEhgAEgAUEEaiIBIAxHDQALIAwiByASRg0BC0EAIREgByEBICAEQANAIAYgASAQbCAIakECdGogEyABQQJ0aioCADgCACABQQFqIQEgEUEBaiIRICBHDQALCyAHIBJrQXxLDQADQCAGIAEgEGwgCGpBAnRqIBMgAUECdGoqAgA4AgAgBiABQQFqIgcgEGwgCGpBAnRqIBMgB0ECdGoqAgA4AgAgBiABQQJqIgcgEGwgCGpBAnRqIBMgB0ECdGoqAgA4AgAgBiABQQNqIgcgEGwgCGpBAnRqIBMgB0ECdGoqAgA4AgAgGCABQQRqIgFHDQALCyAIQQFqIgggDkcNAAsLIBwgDyAcKAIIIgxrIhM2AgQgFSgCnAEhASAcQQA2AhAgHCAMNgIUIBxBADYCGCAcIBM2AhwgHCABQQJvIhg2AgwCQCBaRSAOQQ9LcUUEQCAKIQEgDkEISQ0BIA9BfnEhISAPQQFxISIgE0F+cSEoIBNBAXEhJyAMQX5xITAgDEEBcSEtICkgJEF\u002Fc2ohIyAcKAIAIhIgGEEFdCIHaiEgIBIgB2tBIGohHiAMIBBsQQJ0ISogDiEIA0BBACEGQQAhBwJAAkACQCAMDgICAQALA0AgICAGQQZ0aiIRIAEgBiAQbEECdGoiJf0AAgD9CwIAIBEgJf0AAhD9CwIQICAgBkEBciIRQQZ0aiIlIAEgECARbEECdGoiEf0AAhD9CwIQICUgEf0AAgD9CwIAIAZBAmohBiAHQQJqIgcgMEcNAAsLIC1FDQAgICAGQQZ0aiIHIAEgBiAQbEECdGoiBv0AAgD9CwIAIAcgBv0AAhD9CwIQCwJAIAwgD0YNACABICpqIQdBACEGQQAhESAMICNHBEADQCAeIAZBBnRqIiUgByAGIBBsQQJ0aiIs\u002FQACAP0LAgAgJSAs\u002FQACEP0LAhAgHiAGQQFyIiVBBnRqIiwgByAQICVsQQJ0aiIl\u002FQACEP0LAhAgLCAl\u002FQACAP0LAgAgBkECaiEGIBFBAmoiESAoRw0ACwsgJ0UNACAeIAZBBnRqIhEgByAGIBBsQQJ0aiIH\u002FQACAP0LAgAgESAH\u002FQACEP0LAhALIBwQHAJAIA9FDQBBACEGQQAhByAjBEADQCABIAYgEGxBAnRqIhEgEiAGQQV0aiIl\u002FQACAP0LAgAgESAl\u002FQACEP0LAhAgASAGQQFyIhEgEGxBAnRqIiUgEiARQQV0aiIR\u002FQACEP0LAhAgJSAR\u002FQACAP0LAgAgBkECaiEGIAdBAmoiByAhRw0ACwsgIkUNACABIAYgEGxBAnRqIgcgEiAGQQV0aiIG\u002FQACAP0LAgAgByAG\u002FQACEP0LAhALIAFBIGohASAIQQhrIghBB0sNAAsMAQtBASAOQQN2IgEgRyABIEdJGyIIIAhBAU0bIREgDiAIbkF4cSESIA5BeHEhIEEAIQcgCiEBA0BBMBANIgZFDQQgBiBGEBYiHjYCACAeRQRAIB8QGiAGEAlBAAwGCyAGIAE2AiggBiAQNgIkIAYgDzYCICAGIBM2AhwgBkEANgIYIAYgDDYCFCAGQQA2AhAgBiAYNgIMIAYgDDYCCCAGIBM2AgQgBiAgIAcgEmxrIBIgB0EBaiIHIAhGGyIeNgIsIB9BDSAGECYgASAeQQJ0aiEBIAcgEUcNAAsgHxAaCwJAIA5BB3EiEkUNACAYQQV0ISAgHCgCACEIAkAgDEUNACAIICBqIREgEkECdCEYQQAhBiAMQQFHBEAgDEF+cSEeQQAhBwNAIBEgBkEGdGogASAGIBBsQQJ0aiAYEAsaIBEgBkEBciIjQQZ0aiABIBAgI2xBAnRqIBgQCxogBkECaiEGIAdBAmoiByAeRw0ACwsgDEEBcUUNACARIAZBBnRqIAEgBiAQbEECdGogGBALGgsCQCAMIA9GDQAgCCAga0EgaiEHIAEgDCAQbEECdGohESASQQJ0IRhBACEGIAwgKSAkQX9zakcEQCATQX5xISBBACEMA0AgByAGQQZ0aiARIAYgEGxBAnRqIBgQCxogByAGQQFyIh5BBnRqIBEgECAebEECdGogGBALGiAGQQJqIQYgDEECaiIMICBHDQALCyATQQFxRQ0AIAcgBkEGdGogESAGIBBsQQJ0aiAYEAsaCyAcEBwgD0UNACASQQJ0IQdBACEGICRBAWogKUcEQCAPQX5xIQxBACERA0AgASAGIBBsQQJ0aiAIIAZBBXRqIAcQCxogASAGQQFyIhMgEGxBAnRqIAggE0EFdGogBxALGiAGQQJqIQYgEUECaiIRIAxHDQALCyAPQQFxRQ0AIAEgBiAQbEECdGogCCAGQQV0aiAHEAsaCyAVQZgBaiEVIBZBAWsiFg0AC0EBDAILQQEhByAJKAIcIgwgCEGYAWxqIiNBmAFrIi8oAgAgI0GQAWsoAgBGDQIgI0GUAWsiPSgCACAjQYwBaygCAEYNAiAMKAIEIQ8gDCgCDCEWIAwoAgAhECAMKAIIIRMgCSgCRCESIAkoAkAhESAJKAI8IRogCSgCOCEfIAkgCBBVIh5FBEBBACEHDAMLIAhBAUYEQCAeICNBEGsoAgAiASAvKAIAIgZrICNBDGsoAgAgPSgCACIKayAjQQhrKAIAIgggBmsgI0EEaygCACAKayAJKAI0QQEgCCABaxAXIB4QHQwDC0EAIQYCQAJAIAhBAWsiCkEESQRAIAohByAMIQEMAQsgCkEDcSEHIAwgCkF8cSIVQZgBbGohAQNAIIABIAwgDkGYAWxqIgZB6ARqIAZB0ANqIAZBuAJqIAb9CQKgAf1WAgAB\u002FVYCAAL9VgIAAyAGQeAEaiAGQcgDaiAGQbACaiAG\u002FQkCmAH9VgIAAf1WAgAC\u002FVYCAAP9sQH9uQEgBkHsBGogBkHUA2ogBkG8AmogBv0JAqQB\u002FVYCAAH9VgIAAv1WAgADIAZB5ARqIAZBzANqIAZBtAJqIAb9CQKcAf1WAgAB\u002FVYCAAL9VgIAA\u002F2xAf25ASGAASAOQQRqIg4gFUcNAAsggAEggAEggAH9DQgJCgsMDQ4PAAECAwABAgP9uQEigAEggAEggAH9DQQFBgcAAQIDAAECAwABAgP9uQH9GwAhBiAKIBVGDQELA0AgBiABKAKgASABKAKYAWsiCiAGIApLGyIGIAEoAqQBIAEoApwBayIKIAYgCksbIQYgAUGYAWohASAHQQFrIgcNAAsLAkAgBkGAgIDAAE8NACAcIAZBBXQQFiIhNgIgICFFDQAgHCAhNgIAAkAgCARAIBYgD2shCiATIBBrIQYgIUEgaiE+IAitIYcBIBKtIYoBIBGtIYsBIBqtIYgBIB+tIYwBIAkoAhQiQq0hjQFCASGGAQNAIBwgCjYCCCAcIAY2AiggDCgCpAEhByAMKAKgASEIIAwoApwBIQEgHCAMKAKYASIVQQJvIiI2AiwgHCABQQJvIj82AgwgHCAIIBVrIiAgBmsiKDYCJCAcIAcgAWsiEyAKayI4NgIEIB8iFiEIIBoiASEOIBEiByEYIBIiFSEPAkAghgEgjQFRDQAgQiCGAadrIRBBACEOQQAhCCAWBEBCfyAQrSKJAYZCf4UgjAF8IIkBiKchCAsgGgRAQn8gEK0iiQGGQn+FIIgBfCCJAYinIQ4LQQAhFUEAIQcgEQRAQn8gEK0iiQGGQn+FIIsBfCCJAYinIQcLIBIEQEJ\u002FIBCtIokBhkJ\u002FhSCKAXwgiQGIpyEVC0EAIRhBACEWQQEgEEEBa3QiGyAfSQRAIB8gG2utQn8gEK0iiQGGQn+FfCCJAYinIRYLIBEgG0sEQCARIBtrrUJ\u002FIBCtIokBhkJ\u002FhXwgiQGIpyEYC0EAIQ9BACEBIBogG0sEQCAaIBtrrUJ\u002FIBCtIokBhkJ\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\u002FVYCAAH9VgIAAv1WAgAD\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\u002FQwAAAAAAAAAAAAAAAAAAAAA\u002FQ0ABAgMAAAAAAAAAAAAAAAA\u002FVoAAAAgCkEEaiIKIANHDQALIH8hByADIgIgC0YNAgwBCyABIQZBACECC0EAIQogCyACIgFrQQdxIhYEQANAIAcgBigCADoAACABQQFqIQEgB0EBaiEHIAZBBGohBiAKQQFqIgogFkcNAAsLIAIgC2tBeEsNAANAIAcgBigCADoAACAHIAYoAgQ6AAEgByAGKAIIOgACIAcgBigCDDoAAyAHIAYoAhA6AAQgByAGKAIUOgAFIAcgBigCGDoABiAHIAYoAhw6AAcgB0EIaiEHIAZBIGohBiABQQhqIgEgC0cNAAsLIAYgDEECdGohASANQQFqIg0gCUcNAAsLIBdBzABqIRcgCEE0aiEIQQEhBiByQQFqInIgFSgCGCgCEEkNAAsLIAYLRQ0BIE8oAtwrIgFFDQAgARAJIE9CADcC3CsLIAAgAC0AREH+AXE6AEQgACAAKAIIQf9+cTYCCEEBIWcgBCkDCCKGAVAEfkIABSCGASAEKQM4fQtQIAAoAggiAUHAAEZxDQAgAUGAAkYNACAEIE5BCmpBAiAFEBJBAkcEQCAFQQFBAiAAKAK4ARtBlhJBABAIIAAoArgBRSFnDAELIE5BCmogTkEMakECEAogTigCDCIBQZD\u002FA0YNACABQdn\u002FA0YEQCAAQYACNgIIIABBADYCzAEMAQsgBCkDCCKGAVAEfkIABSCGASAEKQM4fQtQBEAgAEHAADYCCCAFQQJBrT5BABAIDAELQQAhZyAFQQFB7T1BABAICyBOQRBqJAAgZwsLACAABEAgABAJCwu0AQEBfyAAKAIMRQRAIAIgACgCJCABEQMADwsCQEEIEA0iA0UNACADIAI2AgQgAyABNgIAQQgQDSIBRQRAIAMQCQ8LIAEgAzYCACAAIAAoAgRB5ABsIgI2AigDQCAAKAIYIAJKDQALIAEgACgCFDYCBCAAIAE2AhQgACAAKAIYQQFqNgIYIAAoAhwiAUUNACABKAIAQQA2AgggACABKAIENgIcIAAgACgCIEEBazYCICABEAkLCy8BAX8gAARAIAAoAgQiAQRAIAAoAgAgARECAAsgACgCIBAJIABBADYCICAAEAkLCyoAIAAEQCAAKAIwIABBFEEQIAAoAkwbaigCABECACAAQQA2AjAgABAJCwv6AgEEfwJAIABFDQAgACgCrCgiAQRAIAAoAqgoIgIEQEEAIQEDQCAAKAKsKCABQQN0aigCACIDBEAgAxAJIAAoAqgoIQILIAFBAWoiASACSQ0ACyAAKAKsKCEBCyAAQQA2AqgoIAEQCSAAQQA2AqwoCyAAKAK0KCIBBEAgARAJIABBADYCtCgLIAAoAtArIgEEQCABEAkgAEEANgLQKwsgACgC7CsiAQRAIAEQCSAAQQA2AuwrCyAAKALoKyIBBEAgARAJIABBADYC6CsLIAAoAvwrIgEEQCABEAkgAEEANgKELCAAQgA3AvwrCyAAKALwKyIBBEAgACgC9CsiAwR\u002FQQAhAgNAIAEoAgwiBARAIAQQCSABQQA2AgwgACgC9CshAwsgAUEUaiEBIAJBAWoiAiADSQ0ACyAAKALwKwUgAQsQCSAAQQA2AvArCyAAKALkKyIBBEAgARAJIABBADYC5CsLIAAoAtwrIgFFDQAgARAJIABCADcC3CsLC8gHAhF\u002FAX4gACgCECIIQSBPBEAgACkDCKcPCwJAIAAoAhQiA0EETgRAIAAoAgAiAkEDaygCACEBIAAgA0EEayIDNgIUIAAgAkEEazYCAAwBCyADQQBMBEAMAQsgA0EBcSENIAAoAgAhAgJAIANBAUYEQEEYIQQMAQsgA0H+\u002F\u002F\u002F\u002FB3EhCUEYIQQDQCAAIAJBAWsiBjYCACACLQAAIQwgACACQQJrIgI2AgAgACADQQFrNgIUIAYtAAAhBiAAIANBAmsiAzYCFCAMIAR0IAFyIAYgBEEIa3RyIQEgBEEQayEEIAVBAmoiBSAJRw0ACwsgDQRAIAAgAkEBazYCACACLQAAIQ4gACADQQFrNgIUIA4gBHQgAXIhAQtBACEDCyAAKAIYIQIgACABQf8BcSIJQY8BSzYCGCAAQQdBCCABQYCAgPgHcUGAgID4B0YbQQggAhsiAkEIQQdBCCABQYCA\u002FANxQYCA\u002FANGGyABQf\u002F\u002F\u002F\u002F94TRtqIgRBCEEHQQggAUGA\u002FgFxQYD+AUYbIAFBEHZB\u002FwFxIgVBjwFNG2oiBkEIQQdBCCABQf8AcUH\u002FAEYbIAFBCHZB\u002FwFxIgdBjwFNGyAIamoiCjYCECAAIAApAwggBSACdCABQRh2ciAHIAR0ciAJIAZ0cq0gCK2GhCISNwMIIApBH00EQAJAIANBBE4EQCAAKAIAIgJBA2soAgAhASAAIANBBGs2AhQgACACQQRrNgIADAELIANBAEwEQEEAIQEMAQsgA0EBcSEQIAAoAgAhAgJAIANBAUYEQEEYIQRBACEBDAELIANB\u002Fv\u002F\u002F\u002FwdxIQZBGCEEQQAhAUEAIQUDQCAAIAJBAWsiBzYCACACLQAAIQ8gACACQQJrIgI2AgAgACADQQFrNgIUIActAAAhByAAIANBAmsiAzYCFCAPIAR0IAFyIAcgBEEIa3RyIQEgBEEQayEEIAVBAmoiBSAGRw0ACwsgEEUNACAAIAJBAWs2AgAgAi0AACERIAAgA0EBazYCFCARIAR0IAFyIQELIAAgAUH\u002FAXEiAkGPAUs2AhggAEEIQQdBCCABQYCAgPgHcUGAgID4B0YbIAlBjwFNGyIDQQhBB0EIIAFBgID8A3FBgID8A0YbIAFB\u002F\u002F\u002F\u002F\u002F3hNG2oiBEEIQQdBCCABQYD+AXFBgP4BRhsgAUEQdkH\u002FAXEiBUGPAU0baiIIQQhBB0EIIAFB\u002FwBxQf8ARhsgAUEIdkH\u002FAXEiCUGPAU0bIApqajYCECAAIAUgA3QgAUEYdnIgCSAEdHIgAiAIdHKtIAqthiAShCISNwMICyASpwvJFAIdfwZ7IAAoAggiCiAAKAIEaiEIAkAgACgCDEUEQCAIQQJIDQEgA0EATA0BIAAoAgAiBSAIQQRrIgZBAXYiDEECdCIJIAEgCkECdGoiByADQQJ0IgRqakEEakkgBSAMQQN0akEIaiIAIAdBBGpLcSAFIAEgBGogCWpBBGpJIAFBBGogAElxciESIAhBBEkiFCACQQFHciEVIAJBAUYgBkEFS3EhFiAIQfz\u002F\u002F\u002F8HcSETIAhBAXEhFyAKQQFqIQ8gCEEDcSERIAEgBWshGCAFIAhBAnRqIRkgBSAIQQFrIgBBAnRqIRogDEEBaiIbQXxxIhBBAXQhCyACIApsQQJ0IRwgAEEBdiACbEECdCEdA0AgASgCACABIBxqKAIAIglBAWpBAXVrIQcCQCAUBEAgCSEEQQAhBgwBC0EAIQYCQAJ\u002FQQAgFkUNABpBACASDQAaIAn9ESEiIAf9ESEh\u002FQwAAAAAAgAAAAQAAAAGAAAAISVBACEAA0AgASAAQQJ0av0AAgQhJCABIAAgD2pBAnRq\u002FQACACEjIAUgAEEDdGoiBCAh\u002FVoCAAMgBEEIaiAkICMgIiAj\u002FQ0MDQ4PEBESExQVFhcYGRobIiT9rgH9DAIAAAACAAAAAgAAAAIAAAD9rgFBAv2sAf2xASIi\u002FVoCAAAgBEEQaiAi\u002FVoCAAEgBEEYaiAi\u002FVoCAAIgBSAl\u002FQwBAAAAAQAAAAEAAAABAAAA\u002FVAiJv0bAEECdGogIiAhICL9DQwNDg8QERITFBUWFxgZGhv9rgFBAf2sASAk\u002Fa4BIiH9WgIAACAFICb9GwFBAnRqICH9WgIAASAFICb9GwJBAnRqICH9WgIAAiAFICb9GwNBAnRqICH9WgIAAyAl\u002FQwIAAAACAAAAAgAAAAIAAAA\u002Fa4BISUgIiEhICMhIiAAQQRqIgAgEEcNAAsgIv0bAyEEICH9GwMhByAQIBtGDQEgCyEGIAQhCSAQCyEAA0AgASAAQQFqIgogAmxBAnRqKAIAIR4gASAAIA9qIAJsQQJ0aigCACEEIAUgBkECdGoiDiAHNgIAIA4gByAeIAQgCWpBAmpBAnVrIgdqQQF1IAlqNgIEIAZBAmohBiAAIAxHIR8gBCEJIAohACAfDQALDAELIAshBgsgBSAGQQJ0aiAHNgIAQXwhACAXBH8gGiABIB1qKAIAIARBAWpBAXVrIgA2AgAgACAHakEBdSEHQXgFQXwLIBlqIAQgB2o2AgBBACEGQQAhAEEAIQQCQCAVIBggDUECdGpBEElyRQRAA0AgASAAQQJ0IgRqIAQgBWr9AAIA\u002FQsCACAAQQRqIgAgE0cNAAsgEyIEIAhGDQELIAQhACARBEADQCABIAAgAmxBAnRqIAUgAEECdGooAgA2AgAgAEEBaiEAIAZBAWoiBiARRw0ACwsgBCAIa0F8Sw0AA0AgASAAIAJsQQJ0aiAFIABBAnRqKAIANgIAIAEgAEEBaiIEIAJsQQJ0aiAFIARBAnRqKAIANgIAIAEgAEECaiIEIAJsQQJ0aiAFIARBAnRqKAIANgIAIAEgAEEDaiIEIAJsQQJ0aiAFIARBAnRqKAIANgIAIABBBGoiACAIRw0ACwsgAUEEaiEBIA1BAWoiDSADRw0ACwwBCwJAAkACQCAIQQFrDgIAAQILIANBAEwNAkEAIQICQCADQQRJBEAgASEADAELIAEgA0H8\u002F\u002F\u002F\u002FB3EiAkECdGohAANAIAEgBkECdGoiBCAE\u002FQACACIh\u002FRsAQQJt\u002FREgIf0bAUECbf0cASAh\u002FRsCQQJt\u002FRwCICH9GwNBAm39HAP9CwIAIAZBBGoiBiACRw0ACyACIANGDQMLA0AgACAAKAIAQQJtNgIAIABBBGohACACQQFqIgIgA0cNAAsMAgsgA0EATA0BIAAoAgAhCSACIApsQQJ0IQcDQCAJIAEoAgAgASAHaiIEKAIAQQFqQQF1ayIANgIEIAkgACAEKAIAaiIANgIAIAEgADYCACABIAJBAnRqIAkoAgQ2AgAgAUEEaiEBIAZBAWoiBiADRw0ACwwBCyAIQQNIDQAgA0EATA0AIAAoAgAiBSAIIAhBAXEiFEUiBmtBBGsiCUEBdiILQQJ0IgcgASADQQJ0IgBqakkgBSALQQN0akEMaiIEIAFBBGpLcSAFQQRqIAAgASAKQQJ0aiIAaiAHakEIakkgAEEIaiAESXFyIRUgAkEBRyAIQQRJciEWIAJBAUYgCUEFS3EhFyAIQfz\u002F\u002F\u002F8HcSEQIAhBA3EhESABIAVrIRggBSAIQQJ0akEEayEZIAUgCEECayIAQQJ0aiEaIAtBAWoiEkF8cSIMQQFyIRMgDEEBdEEBciELIAIgCmxBAnQhGyAAIAZrQQJJIRwgCEEBdkEBayACbEECdCEdA0AgBSABKAIAIAEgG2oiDyACQQJ0aigCACIJIA8oAgAiAGpBAmpBAnVrIgcgAGo2AgBBASEEAkAgHARAIAkhBgwBCwJAAn9BASAXRQ0AGkEBIBUNABogCf0RISEgB\u002F0RISJBACEAA0AgBSAAQQN0aiIHIAEgAEECdCIEav0AAgQgISAEIA9q\u002FQACCCIh\u002FQ0MDQ4PEBESExQVFhcYGRobIiQgIf2uAf0MAgAAAAIAAAACAAAAAgAAAP2uAUEC\u002FawB\u002FbEBIiMgIyAiICP9DQwNDg8QERITFBUWFxgZGhv9rgFBAf2sASAk\u002Fa4BIiT9DQQFBgcYGRobCAkKCxwdHh\u002F9CwIUIAcgIiAk\u002FQ0MDQ4PEBESEwABAgMUFRYXICP9DQABAgMEBQYHEBESEwwNDg\u002F9CwIEICMhIiAAQQRqIgAgDEcNAAsgIf0bAyEGICL9GwMhByAMIBJGDQEgCyEEIAYhCSATCyEAA0AgASAAIAJsQQJ0aigCACEeIA8gAEEBaiIKIAJsQQJ0aigCACEGIAUgBEECdGoiDiAHNgIAIA4gByAeIAYgCWpBAmpBAnVrIgdqQQF1IAlqNgIEIARBAmohBCAAIBJHISAgCiEAIAYhCSAgDQALDAELIAshBAsgGCANQQJ0aiEJIAUgBEECdGogBzYCAAJAIBRFBEAgGiABIB1qKAIAIAZBAWpBAXVrIgAgB2pBAXUgBmo2AgAMAQsgBiAHaiEACyAZIAA2AgBBACEGQQAhAEEAIQQCQCAWIAlBEElyRQRAA0AgASAAQQJ0IgRqIAQgBWr9AAIA\u002FQsCACAAQQRqIgAgEEcNAAsgECIEIAhGDQELIAQhACARBEADQCABIAAgAmxBAnRqIAUgAEECdGooAgA2AgAgAEEBaiEAIAZBAWoiBiARRw0ACwsgBCAIa0F8Sw0AA0AgASAAIAJsQQJ0aiAFIABBAnRqKAIANgIAIAEgAEEBaiIEIAJsQQJ0aiAFIARBAnRqKAIANgIAIAEgAEECaiIEIAJsQQJ0aiAFIARBAnRqKAIANgIAIAEgAEEDaiIEIAJsQQJ0aiAFIARBAnRqKAIANgIAIABBBGoiACAIRw0ACwsgAUEEaiEBIA1BAWoiDSADRw0ACwsLNwECfyMAQRBrIgEkACAABH8gAUEMakEgIAAQZSEAQQAgASgCDCAAGwVBAAshAiABQRBqJAAgAgsbAQF\u002FIAAEQCAAKAIIIgEEQCABEAkLIAAQCQsLMQECf0EBQQwQDCIABEAgAEEKNgIEIABBCkEEEAwiATYCCCABBEAgAA8LIAAQCQtBAAtTAQJ\u002FIABBADYCMCAAIAAoAiA2AiQgASAAKAIAIAAoAhwRCQAhBCAAKAJEIQIgBEUEQCAAIAJBBHI2AkRBAA8LIAAgATcDOCAAIAJBe3E2AkRBAQuGAwIFfwp+IwBBIGsiAyQAAkAgACgCECIFRQRAQQEhAgwBCwJAIAA0AgAiB0IAUw0AIAA0AgQiCEIAUw0AIAA0AggiCUIAUw0AIAA0AgwiCkIAUw0AIAAoAhghACAHQgF9IQwgCEIBfSENIAlCAX0hCSAKQgF9IQoDQCAAIAwgACgCACICrSIHfCAHgCILPgIQIAAgDSAAKAIEIgatIgd8IAeAIg4+AhRCASAANQIoIgeGIg9CAX0iCCAJIAKsIhB8IBB\u002FxHwgB4enIAggC8R8IAeHp2siAkEASARAIAMgAjYCBCADIAQ2AgAgAUEBQePkACADEAhBACECDAMLIAAgAjYCCCAIIAogBqwiC3wgC3\u002FEfCAHh6cgDsQgD3xCAX0gB4enayICQQBIBEAgAyACNgIUIAMgBDYCECABQQFBqOUAIANBEGoQCEEAIQIMAwsgACACNgIMIABBNGohAEEBIQIgBEEBaiIEIAVHDQALDAELIAFBAUGnM0EAEAgLIANBIGokACACC9cGAQZ\u002FIAAEQAJAIAAoAgAEQCAAKAIMIgEEQCABECkgACgCDBAJIABBADYCDAsgACgCECIBBEAgARAJIABCADcDEAsgACgCQBAJIABCADcCPAwBCyAAKAIsIgEEQCABEAkgAEEANgIsCyAAKAIgIgEEQCABEAkgAEIANwMgCyAAKAI0IgFFDQAgARAJIABCADcCNAsgACgC0AEQTiAAKAKcASIBBEAgACgCaCAAKAJsbCIDBH8DQCABECkgAUGMLGohASACQQFqIgIgA0cNAAsgACgCnAEFIAELEAkgAEEANgKcAQsgACgCdCIBBEAgACgCcCICBEBBACEBA0AgACgCdCABQQN0aigCACIDBEAgAxAJIAAoAnAhAgsgAUEBaiIBIAJJDQALIAAoAnQhAQsgAEEANgJwIAEQCSAAQQA2AnQLIAAoAogBEAkgAEEANgJ4IABBADYCiAEgACgCZBAJIABBADYCZCAALQC8AUECcUUEQCAAKAKoARAJCyAAQdAAakEAQfAAEA4aIAAoAsABEC0gAEEANgLAASAAKALEARAtIABBADYCwAEgACgCyAEiAQRAIAEoAhwiAgRAIAIQCSABQQA2AhwLIAEoAigiAgRAIAEoAiQEQANAIAIgBUEobCIDaigCJCIEBEAgBBAJIAEoAigiAiADakEANgIkCyACIANqKAIQIgQEQCAEEAkgASgCKCICIANqQQA2AhALIAIgA2ooAhgiBARAIAQQCSABKAIoIgIgA2pBADYCGAsgBUEBaiIFIAEoAiRJDQALCyACEAkgAUEANgIoCyABEAkLIABBADYCyAEgACgCSBAYIABBADYCSCAAKAJMEBggAEEANgJMIAAoAtQBIgMEQAJAIAMoAghFDQAgAygCDARAIANBADYCKANAIAMoAhhBAEoNAAsLIANBATYCECADKAIAEAkgAygCHCICRQ0AA0AgAigCBCEBIAIQCSADIAE2AhwgASICDQALCyADKAIkIgIEQCACKAIEIgVBAEoEQEEAIQEDQCACKAIAIAFBDGxqIgQoAggiBgRAIAQoAgQgBhECACACKAIEIQULIAFBAWoiASAFSA0ACwsgAigCABAJIAIQCQsgAxAJCyAAQQA2AtQBIAAQCQsL5gMCCH8EfiAAKAIUKAIAKAIUIAFBzABsaiIJKAIMIgggACgCGCgCGCABQTRsaiIKNQIEIhBCAX0iEiAANQI8fCAQgKciCyAIIAtJGyEMIAkoAggiCCAKNQIAIhFCAX0iEyAANQI4fCARgKciCiAIIApJGyEKIAkoAgQiCCASIAA1AjR8IBCApyILIAggC0sbIQsgCSgCACIIIBMgADUCMHwgEYCnIg0gCCANSxshDUEAIQggACgCICgC0CsgAUG4CGxqKAIUIQ4CQCAJKAIUQQAgAmtBfyACG2oiAkUEQCAKIQAgDSEIIAshAQwBCyADQQFxIAJBAWsiD3QiCSANSQRAIA0gCWutQn8gAq0iEIZCf4V8IBCIpyEIC0EAIQBBACEBIANBAXYgD3QiAyALSQRAIAsgA2utQn8gAq0iEIZCf4V8IBCIpyEBCyAJIApJBEAgCiAJa61CfyACrSIQhkJ\u002FhXwgEIinIQALIAMgDE8EQEEAIQwMAQsgDCADa61CfyACrSIQhkJ\u002FhXwgEIinIQwLQX8gAEECQQMgDkEBRhsiAmoiAyAAIANLGyAES0F\u002FIAIgDGoiACAAIAxJGyAFS3EgCCACayIAQQAgACAITRsgBklxIAEgAmsiAEEAIAAgAU0bIAdJcQuiAQEGfyAABEAgACgCBCICBEAgAhAJIABBADYCBAsgAQRAIAAhAgNAIAIoAsgBIgMEQEEAIQUgAigCxAEiBAR\u002FA0AgAygCDCIGBEAgBhAJIANBADYCDCACKALEASEECyADQRBqIQMgBUEBaiIFIARJDQALIAIoAsgBBSADCxAJIAJBADYCyAELIAJB8AFqIQIgB0EBaiIHIAFHDQALCyAAEAkLC9UZAhN\u002FA3sgACgCACIKIAAoAgwiDUEFdCIFaiEGIAogBWshFiAAKAIQIQUgACgCHCELIAAoAhQhCSAAKAIIIQ4CQAJAAkACQCADQQhJDQAgAUEPcQ0AIAZBD3FFDQELIAUgCU8NAgJAAkAgA0EBaw4CAAEDCwJAIAkgBWsiCEEYSQ0AIAEgBUECdGohByANQQV0IgQgCiAFQQZ0amogASAJQQJ0akkEQCAHIAogCUEGdGogBGpBPGtJDQELIAX9Ef0MAAAAAAEAAAACAAAAAwAAAP2uASEYIAUgCEF8cSIPaiEFQQAhBANAIAYgGEEE\u002FasBIhf9GwBBAnRqIAcgBEECdGr9AAIAIhn9HwA4AgAgBiAX\u002FRsBQQJ0aiAZ\u002FR8BOAIAIAYgF\u002F0bAkECdGogGf0fAjgCACAGIBf9GwNBAnRqIBn9HwM4AgAgGP0MBAAAAAQAAAAEAAAABAAAAP2uASEYIARBBGoiBCAPRw0ACyAIIA9GDQQLIAUhBCAJIAVrQQNxIgcEQEEAIQgDQCAGIARBBnRqIAEgBEECdGoqAgA4AgAgBEEBaiEEIAhBAWoiCCAHRw0ACwsgBSAJa0F8Sw0DA0AgBiAEQQZ0aiABIARBAnRqKgIAOAIAIAYgBEEBaiIFQQZ0aiABIAVBAnRqKgIAOAIAIAYgBEECaiIFQQZ0aiABIAVBAnRqKgIAOAIAIAYgBEEDaiIFQQZ0aiABIAVBAnRqKgIAOAIAIARBBGoiBCAJRw0ACwwDCyABIAJBAnRqIQgCQCAJIAVrIg9BPEkEQCAFIQQMAQsgCiAFQQZ0IA1BBXRqaiIEIAkgBUF\u002Fc2oiB0EGdCIQaiAESQRAIAUhBAwBCyAEQQRqIgQgEGogBEkEQCAFIQQMAQsgB0H\u002F\u002F\u002F8fSwRAIAUhBAwBCyANQQV0IgQgCiAFQQZ0amoiByABIAIgCWpBAnRqSSAKIAlBBnRqIARqQThrIgQgASACIAVqQQJ0aktxBEAgBSEEDAELIAcgASAJQQJ0akkgASAFQQJ0aiAESXEEQCAFIQQMAQsgBf0R\u002FQwAAAAAAQAAAAIAAAADAAAA\u002Fa4BIRggBSAPQXxxIhBqIQRBACEHA0AgBiAYQQT9qwEiF\u002F0bAEECdGoiESABIAUgB2pBAnQiDGr9AAIAIhn9HwA4AgAgBiAX\u002FRsBQQJ0aiITIBn9HwE4AgAgBiAX\u002FRsCQQJ0aiIUIBn9HwI4AgAgBiAX\u002FRsDQQJ0aiIVIBn9HwM4AgAgESAIIAxq\u002FQACACIX\u002FR8AOAIEIBMgF\u002F0fATgCBCAUIBf9HwI4AgQgFSAX\u002FR8DOAIEIBj9DAQAAAAEAAAABAAAAAQAAAD9rgEhGCAHQQRqIgcgEEcNAAsgDyAQRg0DCyAEQQFqIQUgCSAEa0EBcQRAIAYgBEEGdGoiByABIARBAnQiBGoqAgA4AgAgByAEIAhqKgIAOAIEIAUhBAsgBSAJRg0CA0AgBiAEQQZ0aiIFIAEgBEECdCIHaioCADgCACAFIAcgCGoqAgA4AgQgBiAEQQFqIgVBBnRqIgcgASAFQQJ0IgVqKgIAOAIAIAcgBSAIaioCADgCBCAEQQJqIgQgCUcNAAsMAgsgBSAJTw0BIAEgAkECdGohCANAIAYgBUEGdGoiBCABIAVBAnRqKgIAOAIAIAQgASACIAVqIgdBAnRqKgIAOAIEIAQgASACIAdqIgdBAnRqKgIAOAIIIAQgASACIAdqIgdBAnRqKgIAOAIMIAQgASACIAdqIgdBAnRqKgIAOAIQIAQgASACIAdqIgdBAnRqKgIAOAIUIAQgASACIAdqQQJ0IgdqKgIAOAIYIAQgByAIaioCADgCHCAFQQFqIgUgCUcNAAsMAQsgASACQQJ0aiEIIANBA0YhByADQQRGIQ8gA0EFRiEQIANBB0YhEQNAIAYgBUEGdGoiBCABIAVBAnRqKgIAOAIAIAQgASACIAVqIgxBAnRqKgIAOAIEIAQgASACIAxqIgxBAnRqKgIAOAIIAkAgBw0AIAQgASACIAxqIgxBAnRqKgIAOAIMIA8NACAEIAEgAiAMaiIMQQJ0aioCADgCECAQDQAgBCABIAIgDGoiDEECdGoqAgA4AhQgA0EGRg0AIAQgASACIAxqQQJ0IgxqKgIAOAIYIBENACAEIAggDGoqAgA4AhwLIAVBAWoiBSAJRw0ACwsgFkEgaiEGIAEgDkECdGohBCAAKAIYIQUCQAJAAkAgA0EISQ0AIARBD3ENACAGQQ9xRQ0BCyAFIAtPDQECQAJAAkAgA0EBaw4CAAECCwJAIAsgBWsiAEEcSQ0AIAogBUEGdEEgciANQQV0IgJraiABIAsgDmpBAnRqSQRAIAEgBSAOakECdGogC0EGdCACayAKakEca0kNAQsgBCAFQQJ0aiEDIAX9Ef0MAAAAAAEAAAACAAAAAwAAAP2uASEYIAUgAEF8cSIBaiEFQQAhAgNAIAYgGEEE\u002FasBIhf9GwBBAnRqIAMgAkECdGr9AAIAIhn9HwA4AgAgBiAX\u002FRsBQQJ0aiAZ\u002FR8BOAIAIAYgF\u002F0bAkECdGogGf0fAjgCACAGIBf9GwNBAnRqIBn9HwM4AgAgGP0MBAAAAAQAAAAEAAAABAAAAP2uASEYIAJBBGoiAiABRw0ACyAAIAFGDQQLIAUhAiALIAVrQQNxIgAEQEEAIQEDQCAGIAJBBnRqIAQgAkECdGoqAgA4AgAgAkEBaiECIAFBAWoiASAARw0ACwsgBSALa0F8Sw0DA0AgBiACQQZ0aiAEIAJBAnRqKgIAOAIAIAYgAkEBaiIAQQZ0aiAEIABBAnRqKgIAOAIAIAYgAkECaiIAQQZ0aiAEIABBAnRqKgIAOAIAIAYgAkEDaiIAQQZ0aiAEIABBAnRqKgIAOAIAIAJBBGoiAiALRw0ACwwDCyAEIAJBAnRqIQMCQCALIAVrIgBBxABJBEAgBSECDAELIAogBUEGdCIJQSByIA1BBXQiCGtqIgcgCyAFQX9zaiIPQQZ0IhBqIAdJBEAgBSECDAELIAogCUEkciAIa2oiCSAQaiAJSQRAIAUhAgwBCyAPQf\u002F\u002F\u002Fx9LBEAgBSECDAELIAogBUEGdEEgciANQQV0IglraiINIAEgCyAOaiIIIAJqQQJ0akkgC0EGdCAJayAKakEYayIJIAEgDkECdGogBUECdGoiCiACQQJ0aktxBEAgBSECDAELIA0gASAIQQJ0akkgCSAKS3EEQCAFIQIMAQsgBf0R\u002FQwAAAAAAQAAAAIAAAADAAAA\u002Fa4BIRggBSAAQXxxIglqIQJBACEBA0AgBiAYQQT9qwEiF\u002F0bAEECdGoiCiAEIAEgBWpBAnQiDWr9AAIAIhn9HwA4AgAgBiAX\u002FRsBQQJ0aiIOIBn9HwE4AgAgBiAX\u002FRsCQQJ0aiIIIBn9HwI4AgAgBiAX\u002FRsDQQJ0aiIHIBn9HwM4AgAgCiADIA1q\u002FQACACIX\u002FR8AOAIEIA4gF\u002F0fATgCBCAIIBf9HwI4AgQgByAX\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\u002FAn8CQAJ\u002FAkACQCABDgIAAwELIAMoAgAMAQsgAygCAEEBdgsiBUHiAE8EfyAGQuGAgICQDDcCBCAGIAU2AgAgBEECQdX4ACAGEAggBygCGAUgAQsEQCAFIgENAUEADAILIAUEQCAHQRxqIQFBACECA0AgACAGQQxqQQEQCiACQeAATQRAIAYoAgwhBCABIAJBA3RqIghBADYCBCAIIARBA3Y2AgALIABBAWohACACQQFqIgIgBUcNAAsLQQAhAiADKAIAIgAgBUkNAyAAIAVrDAILIAdBHGohBEEAIQIDQCAAIAZBDGpBAhAKIAJB4ABNBEAgBCACQQN0aiIFIAYoAgwiCEH\u002FD3E2AgQgBSAIQQt2NgIACyAAQQJqIQAgAkEBaiICIAFHDQALIAFBAXQLIQBBACECIAMoAgAiASAASQ0BIAEgAGsLNgIAQQEhAiAHKAIYQQFHDQAgB0EcaiEEIAf9CQIcIQwgBygCICED\u002FQwBAAAAAgAAAAMAAAAEAAAAIQtBACEBA0AgBCABQQN0aiIAQRhqIAwgC\u002F0M\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F2uASIK\u002FRsAQQNu\u002FREgCv0bAUEDbv0cASAK\u002FRsCQQNu\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\u002FQQAFIAZBfnEhCEEAIQYDQAJ\u002FQQAgBUUNABpBACAAIAEgAyAHKAIAEQAARQ0AGiAAIAEgAyAHKAIEEQAAQQBHCyEFIAdBCGohByAGQQJqIgYgCEcNAAsgBUEBcwshBgJAAkAgCwRAIAYNASAAIAEgAyAHKAIAEQAAQQBHIQULIARBADYCACAFQQFxRQ0BDAMLIARBADYCAAsgACgCSBAYQQAhBSAAQQA2AkgMAgsgBEEANgIACyAAIAIQQCEFCyAKQRBqJAAgBQvyAwEFfwJAAkAgACgCPCICRQRAIAEoAhANAUEBDwsgAkE0bBANIgVFDQEgASgCEARAIAEoAhghAgNAIAIgA0E0bCIEaigCLBAJIAEoAhgiAiAEakEANgIsIANBAWoiAyABKAIQIgRJDQALCyABIAAoAjwEfyAAKAJMKAIYIQNBACECA0AgBSACQTRsaiIEIAMgACgCQCACQQJ0aigCAEE0bCIGaiID\u002FQACAP0LAgAgBCADKAIwNgIwIAQgA\u002F0AAiD9CwIgIAQgA\u002F0AAhD9CwIQIAQgACgCTCgCGCIDIAZqIgYoAiQ2AiQgBCAGKAIsNgIsIAZBADYCLCACQQFqIgIgACgCPCIGSQ0ACyABKAIQBSAECwR\u002FIAAoAkwoAhghAkEAIQMDQCACIANBNGwiBGooAiwQCSAAKAJMKAIYIgIgBGpBADYCLCADQQFqIgMgASgCEEkNAAsgACgCPAUgBgs2AhAgASgCGBAJIAEgBTYCGEEBDwsgASgCGCEEIAAoAkwoAhghA0EAIQIDQCAEIAJBNGwiBWoiBCADIAVqKAIkNgIkIAQoAiwQCSABKAIYIgQgBWogACgCTCgCGCIDIAVqIgUoAiw2AiwgBUEANgIsIAJBAWoiAiABKAIQSQ0AC0EBDwsgACgCSBAYIABBADYCSEEAC84EAQh\u002FAkAgAkUNAAJAIAAoAqABIgVFDQAgACgCSCIERQ0AIAQoAhBFDQAgBCgCGCgCKCAFRw0AIAIoAhAiCEUNACACKAIYIgYoAigNACAGKAIsDQBBACEEIAhBCE8EQCAIQXhxIQkDQCAGIARBNGxqIAU2AiggBiAEQQFyQTRsaiAFNgIoIAYgBEECckE0bGogBTYCKCAGIARBA3JBNGxqIAU2AiggBiAEQQRyQTRsaiAFNgIoIAYgBEEFckE0bGogBTYCKCAGIARBBnJBNGxqIAU2AiggBiAEQQdyQTRsaiAFNgIoIARBCGohBCAKQQhqIgogCUcNAAsLIAhBB3EiCARAA0AgBiAEQTRsaiAFNgIoIARBAWohBCALQQFqIgsgCEcNAAsLIAIgAxAwDQBBAA8LIAAoAkwiBUUEQCAAQQFBJBAMIgU2AkwgBUUNAQsgAiAFEDggACgCwAFBFiADEB5FDQAgACgCwAEiBigCACEEIAYoAgghBQJAIAQEQEEBIQcgBEEBcSEIIARBAUYEf0EABSAEQX5xIQlBACEEA0ACf0EAIAdFDQAaQQAgACABIAMgBSgCABEAAEUNABogACABIAMgBSgCBBEAAEEARwshByAFQQhqIQUgBEECaiIEIAlHDQALIAdBAXMLIQQCQAJAIAgEQCAEDQEgACABIAMgBSgCABEAAEEARyEHCyAGQQA2AgAgB0EBcUUNAQwDCyAGQQA2AgALIAAoAkgQGCAAQQA2AkhBAA8LIAZBADYCAAsgACACEEAhBwsgBwv4BAEGfwJAQQFBMBAMIgIEfyACIAAoAsgBIgH9AAMA\u002FQsDACACIAEpAxA3AxAgAiABKAIYIgE2AhggAiABQRhsEA0iATYCHCABRQRAIAIQCUEADwsCQCAAKALIASgCHCIDBEAgASADIAIoAhhBGGwQCxoMAQsgARAJIAJBADYCHAsgAiAAKALIASgCJCIBNgIkIAIgAUEoEAwiATYCKCABRQRAIAIoAhwQCSACEAlBAA8LAkAgACgCyAEoAigEQCACKAIkRQ0BA0AgASAFQShsIgNqIAAoAsgBKAIoIANqKAIUIgE2AhQgAUEYbBANIQEgAigCKCIEIANqIgYgATYCGCABRQRAIAUEf0EAIQEDQCACKAIoIAFBKGxqKAIYEAkgAUEBaiIBIAVHDQALIAIoAigFIAQLEAkMBQsCQCAAKALIASgCKCADaigCGCIEBEAgASAEIAYoAhRBGGwQCxogAigCKCEBDAELIAEQCSACKAIoIgEgA2pBADYCGAsgASADaiAAKALIASgCKCADaigCBCIBNgIEIAFBGGwQDSEBIAIoAigiBCADaiIGIAE2AhAgAUUEQCAFBH9BACEBA0AgAUEobCIAIAIoAihqKAIYEAkgAigCKCAAaigCEBAJIAFBAWoiASAFRw0ACyACKAIoBSAECxAJDAULAkAgACgCyAEoAiggA2ooAhAiBARAIAEgBCAGKAIEQRhsEAsaIAIoAighAQwBCyABEAkgAigCKCIBIANqQQA2AhALIAEgA2pCADcCICAFQQFqIgUgAigCJEkNAAsMAQsgARAJIAJBADYCKAsgAgVBAAsPCyACKAIcEAkgAhAJQQALoAYCDn8BeyMAQRBrIggkACAAKAJIKAIQIQ0gCEEBQTgQDCIBNgIMAkAgAUUNACABIAAoAkgoAhAiCTYCGCABIAD9AAJU\u002FQsCACABIAAoAmg2AhAgACgCbCECIAFBADYCNCABIAI2AhQgASAAKAIMIgwoAgA2AiAgASAMKAIENgIkIAEgDCgCCDYCKCABIAwoAhA2AiwgASAJQbgIEAwiADYCMCAABEAgDQRAA0AgDkG4CGwiACABKAIwaiIFIAwoAtArIABqIgT9AAIAIg\u002F9CwIEIAUgBCgCEDYCFCAFIAQoAhQ2AhggD\u002F0bASIAQSBNBEAgBUG0B2ogBEGwB2ogABALGiAFQbAGaiAEQawGaiAEKAIEEAsaCyAFIAQoAhgiADYCHCAFIAQoAqQGNgKoBkEBIQYCQCAAQQFHBEAgBCgCBEEDbCIAQQNrQd8ASw0BIABBAmshBgsgBUGkA2ohCSAFQSBqIQogBEEcaiELQQAhAAJAIAZBCEkNACAEIAZBA3RqQRxqIApLBEAgCyAFIAZBAnRqQaQDakkNAQsgBkF8cSEAQQAhAgNAIAogAkECdCIDaiALIAJBA3RqIgdBHGogB0EUaiAHQQxqIAf9CQIE\u002FVYCAAH9VgIAAv1WAgAD\u002FQsCACADIAlqIAdBGGogB0EQaiAHQQhqIAf9CQIA\u002FVYCAAH9VgIAAv1WAgAD\u002FQsCACACQQRqIgIgAEcNAAsgACAGRg0BCyAAQQFyIQMgBkEBcQRAIAogAEECdCICaiALIABBA3RqIgAoAgQ2AgAgAiAJaiAAKAIANgIAIAMhAAsgAyAGRg0AA0AgCiAAQQJ0IgJqIAsgAEEDdGoiAygCBDYCACACIAlqIAMoAgA2AgAgCiAAQQFqIgNBAnQiAmogCyADQQN0aiIDKAIENgIAIAIgCWogAygCADYCACAAQQJqIgAgBkcNAAsLIAUgBCgCqAY2AqwGIA5BAWoiDiANRw0ACwsgASEDDAELIAhBDGoEQCAIKAIMIgEoAjAiAAR\u002FIAAQCSAIKAIMBSABCxAJIAhBADYCDAsLIAhBEGokACADC\u002FkEAQh\u002FIwBBgAJrIgMkACAABEBB\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\u002FQkCBP1WAgAB\u002FVYCAAL9VgIAAyAM\u002Fa4BIQwgA0EEaiIDIABHDQALIAwgDCAM\u002FQ0ICQoLDA0ODwABAgMAAQID\u002Fa4BIgwgDCAM\u002FQ0EBQYHAAECAwABAgMAAQID\u002Fa4B\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\u002FQQAFIAZBfnEhBkEAIQgDQAJ\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\u002FQwAAAAAAAAAAAAAAAAAAAAA\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\u002FhSAaQv\u002F\u002F\u002F\u002F8PgyAWhoNQDQQLIAAoAtwBIgStIhUgHiAdhoJCAFIEQCAEIA5HDQRCfyAdhkJ\u002FhSAcQv\u002F\u002F\u002F\u002F8PgyAWhoNQDQQLIAsoAggiBEUNAyALKAIMRQ0DIBynIgsgIKdGDQMgGqciCCAfp0YNAyAAIAAoAkQiBzYCKCAAIBUgG3wgF4CnIAp2IAsgCnZrIBkgInwgGICnIAF2IAggAXZrIARsajYCJEEBIQEMBQsgACgC3AEiASAAKALkASIEaiABIARwayENDAELIAAoAuABIgEgACgC6AEiBGogASAEcGshAkEAIQEMAwtBACEBDAELQQEhAQwACwALAAsACwNAAn8CQCABRQRAIAAgCEEBaiIINgIoDAELIAAgBjYC4AEgACgCcCAGTQ0HIAAoAmQhD0EADAELQQELIQEDQAJAAkACQAJAIAFFBEAgACAPNgLcASAPIAAoAmhPDQEgACAFNgIcIAUhBEEAIQEMBAsgACgCOCAITQRAIAAoAiAhB0EBIQEMBAsgACgCECAAKAIgbCAAKAIMIAhsaiAAKAIUIARsaiAAKAIYIAAoAiRsaiIBIAAoAghPBEAMCgsgACgCBCABQQF0aiIBLwEADQEMCwsgACgC4AEiASAAKALoASIGaiABIAZwayEGDAELQQAhAQwDC0EBIQEMAgsDQAJAAkACQAJAIAFFBEAgBCASTw0CIAAgACgCMCIHNgIgIA0gBEEEdGohCwwBCyAAIAdBAWoiBzYCIAsgACgCPCIBIAsoAggiAiABIAJJGyAHSwRAIAsoAgAiASABrSIeIAIgB0F\u002Fc2oiCq0iFoYiFyAWiKdHDQMgCygCBCICQn8gFoincSACRw0DIAKtIhUgFoYiGEIBfSIZIAA1AtgBfCAYgCEfIBkgACgC0AEiDq18IBiAIRogF0IBfSIbIAA1AtQBfCAXgCEgIBsgACgCzAEiDK18IBeAIRwgAUJ\u002FIAsoAgwgB0EEdGoiAygCACIJIApqrSIdiKdxIAFHDQMgAiAVIAMoAgQiASAKaq0iFYYiISAViKdHDQMgACgC4AEiAq0iIiAhgkIAUgRAIAIgDkcNBEJ\u002FIBWGQn+FIBpC\u002F\u002F\u002F\u002F\u002Fw+DIBaGg1ANBAsgACgC3AEiAq0iFSAeIB2GgkIAUgRAIAIgDEcNBEJ\u002FIB2GQn+FIBxC\u002F\u002F\u002F\u002F\u002Fw+DIBaGg1ANBAsgAygCCCICRQ0DIAMoAgxFDQMgHKciAyAgp0YNAyAapyIKIB+nRg0DIAAgACgCRCIINgIoIAAgFSAbfCAXgKcgCXYgAyAJdmsgGSAifCAYgKcgAXYgCiABdmsgAmxqNgIkQQEhAQwFCyAAIARBAWoiBDYCHAwBCyAAKALcASIBIAAoAuQBIgJqIAEgAnBrIQ9BACEBDAMLQQAhAQwBC0EBIQEMAAsACwALAAsDQAJ\u002FAkAgAUUEQCAAIAtBAWoiCzYCKAwBCyAAIAU2AiAgACgCPCAFTQ0GIAAoAmwhCEEADAELQQELIQEDQAJAAkACQAJAIAFFBEAgACAINgLgASAIIAAoAnBPDQEgACgCZCENQQAhAQwECyAAKAI4IAtNBEAgACgCHCEGQQEhAQwECyAAKAIQIAAoAiBsIAAoAgwgC2xqIAAoAhQgACgCHGxqIAAoAhggACgCJGxqIgEgACgCCE8EQAwJCyAAKAIEIAFBAXRqIgEvAQANAQwKCyAAKAIgQQFqIQUMAQtBACEBDAMLQQEhAQwCCwNAAkACQAJAAkAgAUUEQCAAIA02AtwBIA0gACgCaE8NAiAAIAQ2AhwgBCEGDAELIAAgBkEBaiIGNgIcCyAGIA5JBEAgACgCICIHIAAoAsgBIAZBBHRqIgEoAggiA08NAyABKAIAIgIgAq0iHiADIAdBf3NqIgqtIhaGIhcgFoinRw0DIAEoAgQiA0J\u002FIBaIp3EgA0cNAyADrSIVIBaGIhhCAX0iGSAANQLYAXwgGIAhHyAZIAAoAtABIg+tfCAYgCEaIBdCAX0iGyAANQLUAXwgF4AhICAbIAAoAswBIgmtfCAXgCEcIAJCfyABKAIMIAdBBHRqIgEoAgAiByAKaq0iHYincSACRw0DIAMgFSABKAIEIgIgCmqtIhWGIiEgFYinRw0DIAAoAuABIgOtIiIgIYJCAFIEQCADIA9HDQRCfyAVhkJ\u002FhSAaQv\u002F\u002F\u002F\u002F8PgyAWhoNQDQQLIAAoAtwBIgOtIhUgHiAdhoJCAFIEQCADIAlHDQRCfyAdhkJ\u002FhSAcQv\u002F\u002F\u002F\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\u002FAYMiDkL\u002FAVEiCTYCFAJAIApBA0YNACAAIAJBAmsiCDYCGAJ\u002FIAJBAkgEQCAEIQEgAwwBCyAAIARBAWoiATYCACAELQAACyEEIABBD0EQIA5C\u002FwFRGyIHNgIQIAAgBK0iDkL\u002FAYMiD0L\u002FAVEiCTYCFCAAIA5CCIYgDYQiDTcDCCAKQQJGBEAgASEEIAUhAiAIIQUMAQsgACACQQNrIgs2AhggAAJ\u002FIAJBA0gEQCABIQYgAwwBCyAAIAFBAWoiBjYCACABLQAAC60iDkL\u002FAYMiEEL\u002FAVEiCTYCFCAAQQdBCCAPQv8BURsgB2oiATYCECAAIA4gB62GIA2EIg03AwggCkEBRgRAIAYhBCABIQcgCCECIAshBQwBCyAAIAJBBGsiBTYCGCAAAn8gAkEESARAIAYhBCADDAELIAAgBkEBaiIENgIAIAYtAAALrSIOQv8Bg0L\u002FAVEiCTYCFCAAQQdBCCAQQv8BURsgAWoiBzYCECAAIA4gAa2GIA2EIg03AwggCyECCwJAIAJBBU4EQCAEKAIAIQMgACACQQVrNgIYIAAgBEEEajYCAAwBC0EAIQFBf0EAIAMbIQMgAkECSA0AA0AgACAEQQFqIgI2AgAgBC0AACEEIAAgBUEBayIGNgIYIANB\u002FwEgAXRBf3NxIAQgAXRyIQMgAUEIaiEBIAVBAUshDCACIQQgBiEFIAwNAAsLIAAgA0EYdiIBQf8BRjYCFCAAQQdBCCAJGyICQQdBCCADQf8BcSIEQf8BRhtqIgVBB0EIIANBCHZB\u002FwFxIgZB\u002FwFGG2oiCEEHQQggA0EQdkH\u002FAXEiA0H\u002FAUYbIAdqajYCECAAIAYgAnQgAyAFdHIgASAIdHIgBHKtIAethiANhDcDCAu2BQISfwJ+An8gACgCHCABQZgBbGoiAkGQAWsoAgAgAkGYAWsoAgBrIgMhBSACQYwBaygCACACQZQBaygCAGsiAiEGQcAAIAMgA0HAAE8bIQNBwAAgAiACQcAATxshBAJAIAVFDQAgBkUNACADRQ0AIARFDQBBfyAEbkECdiADSQ0AQQFBHBAMIgIgBDYCDCACIAM2AgggAiAGNgIEIAIgBTYCACACIAStIhQgBq18QgF9IBSAIhSnIgQ2AhQgAiADrSIVIAWtfEIBfSAVgCIVpyIDNgIQAkAgFEL\u002F\u002F\u002F\u002F\u002FD4MgFUL\u002F\u002F\u002F\u002F\u002FD4N+QiCIpw0AIAJBBCADIARsEAwiAzYCGCADRQ0AIAIMAgsgAhAJC0EACyIJRQRAQQAPCwJAIAEEQANAIA5BmAFsIg8gACgCHGoiBSgCGCICBEAgBUEcaiEQIAUoAhQhAyAFKAIQIQRBACEKA0AgAyAEbARAIBAgCkEkbGohBkEAIQsDQCAGKAIUIAtBKGxqIggoAhQiAiAIKAIQIgdsBEBBACEEA0AgCCgCGCAEQQZ0aiIDKAI8IhEEQCADKAIMIQcgAygCFCESIAMoAhAhDCADKAIIIhMgBigCAGshAyAGKAIQIg1BAXEEQCAAKAIcIA9qIgJBkAFrKAIAIANqIAJBmAFrKAIAayEDCyAHIAYoAgRrIQIgDUECcQRAIAIgACgCHCAPaiINQYwBaygCAGogDUGUAWsoAgBrIQILIAkgAyACIAMgDCATayIMaiASIAdrIAJqIBFBASAMQQAQH0UNCSAIKAIQIQcgCCgCFCECCyAEQQFqIgQgAiAHbEkNAAsgBSgCECEEIAUoAhQhAwsgC0EBaiILIAMgBGxJDQALIAUoAhghAgsgCkEBaiIKIAJJDQALCyAOQQFqIg4gAUcNAAsLIAkPCyAJEB1BAAvQDAIQfwZ7IAAoAggiCyAAKAIEaiEHAkAgACgCDEUEQCAHQQJIDQEgASgCACABIAtBAnRqIg0oAgAiBEEBakEBdWshAyAAKAIAIQYCQCAHQQRJBEAgBCECDAELIAdBBGsiAEEBdiIJQQFqIQwCQCAAQRZJBEBBASEADAELIAYgASALQQJ0aiIFIAlBAnQiAmpBCGpJIAYgCUEDdGpBCGoiACAFQQRqS3EEQEEBIQAMAQsgBiABIAJqQQhqSSABQQRqIABJcQRAQQEhAAwBCyAMQfz\u002F\u002F\u002F8HcSIFQQFyIQAgBUEBdCEIIAT9ESESIAP9ESET\u002FQwAAAAAAgAAAAQAAAAGAAAAIRZBACECA0AgASACQQJ0QQRyIgNq\u002FQACACEVIAMgDWr9AAIAIRQgBiACQQN0aiIDIBP9WgIAAyADQQhqIBUgFCASIBT9DQwNDg8QERITFBUWFxgZGhsiFf2uAf0MAgAAAAIAAAACAAAAAgAAAP2uAUEC\u002FawB\u002FbEBIhL9WgIAACADQRBqIBL9WgIAASADQRhqIBL9WgIAAiAGIBb9DAEAAAABAAAAAQAAAAEAAAD9UCIX\u002FRsAQQJ0aiASIBMgEv0NDA0ODxAREhMUFRYXGBkaG\u002F2uAUEB\u002FawBIBX9rgEiE\u002F1aAgAAIAYgF\u002F0bAUECdGogE\u002F1aAgABIAYgF\u002F0bAkECdGogE\u002F1aAgACIAYgF\u002F0bA0ECdGogE\u002F1aAgADIBb9DAgAAAAIAAAACAAAAAgAAAD9rgEhFiASIRMgFCESIAJBBGoiAiAFRw0ACyAS\u002FRsDIQIgE\u002F0bAyEDIAUgDEYNASACIQQLA0AgASAAQQJ0IgJqKAIAIQkgAiANaigCACECIAYgCEECdGoiBSADNgIAIAUgAyAJIAIgBGpBAmpBAnVrIgNqQQF1IARqNgIEIAhBAmohCCAAIAxHIRAgAiEEIABBAWohACAQDQALCyAGIAhBAnRqIAM2AgBBfCEAIAdBAXEEfyAGIAdBAWsiAEECdGogASAAQQF0aigCACACQQFqQQF1ayIANgIAIAAgA2pBAXUhA0F4BUF8CyAGIAdBAnQiAGpqIAIgA2o2AgAgASAGIAAQCxoPCwJAAkACQCAHQQFrDgIAAQILIAEgASgCAEECbTYCAA8LIAAoAgAiBCABKAIAIAEgC0ECdGoiAygCAEEBakEBdWsiADYCBCAEIAAgAygCAGo2AgAgASAEKQIANwIADwsgB0EDSA0AIAAoAgAiCiABKAIAIAEgC0ECdGoiDigCBCIEIA4oAgAiAGpBAmpBAnVrIgMgAGo2AgBBASEIAkAgB0ECayIGIAdBAXEiDEUiAGtBAkkEQCAEIQIMAQsgByAAa0EEayIAQQF2IgJBAWohDwJAAkAgAEEWSQ0AIApBBGoiBSABIAJBAnQiAGpBCGpJIAogAkEDdGpBDGoiAiABQQRqS3ENACAFIAAgASALQQJ0aiIAakEMakkgAEEIaiACSXENACAPQXxxIgVBAXIhACAFQQF0QQFyIQggBP0RIRMgA\u002F0RIRJBACECA0AgCiACQQN0aiIEIAEgAkECdCIDav0AAgQgEyADIA5q\u002FQACCCIT\u002FQ0MDQ4PEBESExQVFhcYGRobIhUgE\u002F2uAf0MAgAAAAIAAAACAAAAAgAAAP2uAUEC\u002FawB\u002FbEBIhQgFCASIBT9DQwNDg8QERITFBUWFxgZGhv9rgFBAf2sASAV\u002Fa4BIhX9DQQFBgcYGRobCAkKCxwdHh\u002F9CwIUIAQgEiAV\u002FQ0MDQ4PEBESEwABAgMUFRYXIBT9DQABAgMEBQYHEBESEwwNDg\u002F9CwIEIBQhEiACQQRqIgIgBUcNAAsgE\u002F0bAyECIBL9GwMhAyAFIA9GDQIgAiEEDAELQQEhAAsDQCABIABBAnRqKAIAIQ0gDiAAQQFqIgVBAnRqKAIAIQIgCiAIQQJ0aiIJIAM2AgAgCSADIA0gAiAEakECakECdWsiA2pBAXUgBGo2AgQgCEECaiEIIAAgD0chESACIQQgBSEAIBENAAsLIAogCEECdGogAzYCAAJAIAxFBEAgCiAGQQJ0aiABIAdBAXRqQQRrKAIAIAJBAWpBAXVrIgAgA2pBAXUgAmo2AgAMAQsgAiADaiEACyAKIAdBAnQiA2pBBGsgADYCACABIAogAxALGgsLoAcDA30DewJ\u002FIANBCE8EQCADQQN2IQsDQCAB\u002FQAEACEHIAAgAP0ABAAiCCAC\u002FQAEACIJ\u002FQy8dLM\u002FvHSzP7x0sz+8dLM\u002F\u002FeYB\u002FeQB\u002FQsEACABIAggB\u002F0MzzGwPs8xsD7PMbA+zzGwPv3mAf3lASAJ\u002FQzh0TY\u002F4dE2P+HRNj\u002Fh0TY\u002F\u002FeYB\u002FeUB\u002FQsEACACIAggB\u002F0M5dDiP+XQ4j\u002Fl0OI\u002F5dDiP\u002F3mAf3kAf0LBAAgAf0ABBAhByAAIAD9AAQQIgggAv0ABBAiCf0MvHSzP7x0sz+8dLM\u002FvHSzP\u002F3mAf3kAf0LBBAgASAIIAf9DM8xsD7PMbA+zzGwPs8xsD795gH95QEgCf0M4dE2P+HRNj\u002Fh0TY\u002F4dE2P\u002F3mAf3lAf0LBBAgAiAIIAf9DOXQ4j\u002Fl0OI\u002F5dDiP+XQ4j\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\u002F\u002F\u002F\u002FB3EhCANAIAcgC0YhASAHQQJqIQcgBCAGIAEbIgQhBiAEIQEgCUECaiIJIAhHDQALCyANRQRAIAQhBgwBCyAEIAEgAkEEdGogByAHIAtGckEBcSICGyEGIAQgASACGyEECyADQQFqIgMgDEcNAAsLIAVBADYCAAsgACgCCCIBRQ0AIAAoAgwhBCABQQRPBEAgAUF8cSECQQAhBQNAIARBADYCPCAEQucHNwI0IARBADYCLCAEQucHNwIkIARBADYCHCAEQucHNwIUIARBADYCDCAEQucHNwIEIARBQGshBCAFQQRqIgUgAkcNAAsLIAFBA3EiAUUNAEEAIQUDQCAEQQA2AgwgBELnBzcCBCAEQRBqIQQgBUEBaiIFIAFHDQALCyAKQYACaiQAIAALsQEBA38CQCAARQ0AIAAoAggiAUUNACAAKAIMIQAgAUEETwRAIAFBfHEhAwNAIABBADYCPCAAQucHNwI0IABBADYCLCAAQucHNwIkIABBADYCHCAAQucHNwIUIABBADYCDCAAQucHNwIEIABBQGshACACQQRqIgIgA0cNAAsLIAFBA3EiAUUNAEEAIQIDQCAAQQA2AgwgAELnBzcCBCAAQRBqIQAgAkEBaiICIAFHDQALCwv7BQEQfyMAQYACayIIJAACf0EBQRQQDCIGRQRAIAJBAUH0MEEAEAhBAAwBCyAGIAE2AgQgBiAANgIAIAggATYCACAIIAA2AoABA0AgCCAFIg1BAWoiBUECdCIHaiABQQFqQQJtIgM2AgAgCEGAAWogB2ogAEEBakECbSIHNgIAIAQgACABbCIJaiEEIAMhASAHIQAgCUEBSw0ACyAGIAQ2AgggBEUEQCAGEAlBAAwBCyAGIARBEBAMIgM2AgwgA0UEQCACQQFB2hpBABAIIAYQCUEADAELIAYgBigCCCILQQR0NgIQIAMhACANBEAgAyAGKAIEIAYoAgBsQQR0aiIEIQEDQAJAIAggDkECdCICaigCACIJQQBMDQAgCUEBayEMQQAhBwJAIAhBgAFqIAJqKAIAIgJBAEwEQEEAIQUgCUEBRwRAIAlB\u002Fv\u002F\u002F\u002FwdxIQoDQCAFIAxGIQ8gBUECaiEFIAEgBCAPGyIEIQEgB0ECaiIHIApHDQALCyAJQQFxDQEgBCEBDAILA0AgBCEFIAIhBANAAkAgACABNgIAIARBAUYEQCAAQRBqIQAgAUEQaiEBDAELIAAgATYCECABQRBqIQEgAEEgaiEAIARBAkohECAEQQJrIQQgEA0BCwsgASAFIAJBBHRqIAcgByAMRnJBAXEiChshBCABIAUgChshASAHQQFqIgcgCUcNAAsMAQsgASAEIAJBBHRqIAUgBSAMRnJBAXEiBRshESABIAQgBRshASARIQQLIA5BAWoiDiANRw0ACwsgAEEANgIAAkAgC0UNACALQQRPBEAgC0F8cSEAQQAhAQNAIANBADYCPCADQucHNwI0IANBADYCLCADQucHNwIkIANBADYCHCADQucHNwIUIANBADYCDCADQucHNwIEIANBQGshAyABQQRqIgEgAEcNAAsLIAtBA3EiAEUNAEEAIQEDQCADQQA2AgwgA0LnBzcCBCADQRBqIQMgAUEBaiIBIABHDQALCyAGCyESIAhBgAJqJAAgEgtTAQF\u002FAn8gAC0ADEH\u002FAUYEQCAAQoD+g4DwADcCDEEAIAAoAggiASAAKAIETw0BGiAAIAFBAWo2AgggACABLQAAQYD+A3I2AgwLIABBADYCEEEBCwtJAQF\u002FAkBBAUEsEAwiAQRAIAFBADYCEAJAIABBAEwEQCABQQFBCBAMIgA2AiQgAEUNAQwDCyABQQA2AgwLIAEQCQtBACEBCyABC34CAX8BfiAAvSIDQjSIp0H\u002FD3EiAkH\u002FD0cEfCACRQRAIAEgAEQAAAAAAAAAAGEEf0EABSAARAAAAAAAAPBDoiABEF8hACABKAIAQUBqCzYCACAADwsgASACQf4HazYCACADQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F+HgH+DQoCAgICAgIDwP4S\u002FBSAACwuRAgAgAEUEQEEADwsCfwJAIAFB\u002FwBNDQACQEGUzwEoAgAoAgBFBEAgAUGAf3FBgL8DRg0CDAELIAFB\u002Fw9NBEAgACABQT9xQYABcjoAASAAIAFBBnZBwAFyOgAAQQIMAwsgAUGAQHFBgMADRyABQYCwA09xRQRAIAAgAUE\u002FcUGAAXI6AAIgACABQQx2QeABcjoAACAAIAFBBnZBP3FBgAFyOgABQQMMAwsgAUGAgARrQf\u002F\u002FP00EQCAAIAFBP3FBgAFyOgADIAAgAUESdkHwAXI6AAAgACABQQZ2QT9xQYABcjoAAiAAIAFBDHZBP3FBgAFyOgABQQQMAwsLQZTGAUEZNgIAQX8MAQsgACABOgAAQQELC7wCAAJAAkACQAJAAkACQAJAAkACQAJAAkAgAUEJaw4SAAgJCggJAQIDBAoJCgoICQUGBwsgAiACKAIAIgFBBGo2AgAgACABKAIANgIADwsgAiACKAIAIgFBBGo2AgAgACABMgEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMwEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMAAANwMADwsgAiACKAIAIgFBBGo2AgAgACABMQAANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAwALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC3MBBn8gACgCACIDLAAAQTBrIgFBCUsEQEEADwsDQEF\u002FIQQgAkHMmbPmAE0EQEF\u002FIAEgAkEKbCIFaiABIAVB\u002F\u002F\u002F\u002F\u002FwdzSxshBAsgACADQQFqIgU2AgAgAywAASEGIAQhAiAFIQMgBkEwayIBQQpJDQALIAILtBQCFX8BfiMAQUBqIggkACAIIAE2AjwgCEEnaiEWIAhBKGohEQJAAkACQAJAA0BBACEHA0AgASENIAcgDkH\u002F\u002F\u002F\u002F\u002FB3NKDQIgByAOaiEOAkACQAJAAkAgASIHLQAAIgsEQANAAkACQCALQf8BcSIBRQRAIAchAQwBCyABQSVHDQEgByELA0AgCy0AAUElRwRAIAshAQwCCyAHQQFqIQcgCy0AAiEZIAtBAmoiASELIBlBJUYNAAsLIAcgDWsiByAOQf\u002F\u002F\u002F\u002F8HcyIXSg0JIAAEQCAAIA0gBxARCyAHDQcgCCABNgI8IAFBAWohB0F\u002FIRACQCABLAABQTBrIglBCUsNACABLQACQSRHDQAgAUEDaiEHQQEhEiAJIRALIAggBzYCPEEAIQwCQCAHLAAAIgtBIGsiAUEfSwRAIAchCQwBCyAHIQlBASABdCIBQYnRBHFFDQADQCAIIAdBAWoiCTYCPCABIAxyIQwgBywAASILQSBrIgFBIE8NASAJIQdBASABdCIBQYnRBHENAAsLAkAgC0EqRgRAAn8CQCAJLAABQTBrIgFBCUsNACAJLQACQSRHDQACfyAARQRAIAQgAUECdGpBCjYCAEEADAELIAMgAUEDdGooAgALIQ8gCUEDaiEBQQEMAQsgEg0GIAlBAWohASAARQRAIAggATYCPEEAIRJBACEPDAMLIAIgAigCACIHQQRqNgIAIAcoAgAhD0EACyESIAggATYCPCAPQQBODQFBACAPayEPIAxBgMAAciEMDAELIAhBPGoQYiIPQQBIDQogCCgCPCEBC0EAIQdBfyEKAn9BACABLQAAQS5HDQAaIAEtAAFBKkYEQAJ\u002FAkAgASwAAkEwayIJQQlLDQAgAS0AA0EkRw0AIAFBBGohAQJ\u002FIABFBEAgBCAJQQJ0akEKNgIAQQAMAQsgAyAJQQN0aigCAAsMAQsgEg0GIAFBAmohAUEAIABFDQAaIAIgAigCACIJQQRqNgIAIAkoAgALIQogCCABNgI8IApBAE4MAQsgCCABQQFqNgI8IAhBPGoQYiEKIAgoAjwhAUEBCyETA0AgByEUQRwhCSABIhgsAAAiB0H7AGtBRkkNCyABQQFqIQEgByAUQTpsakHPwAFqLQAAIgdBAWtBCEkNAAsgCCABNgI8AkAgB0EbRwRAIAdFDQwgEEEATgRAIABFBEAgBCAQQQJ0aiAHNgIADAwLIAggAyAQQQN0aikDADcDMAwCCyAARQ0IIAhBMGogByACIAYQYQwBCyAQQQBODQtBACEHIABFDQgLIAAtAABBIHENCyAMQf\u002F\u002Fe3EiCyAMIAxBgMAAcRshDEEAIRBBsAghFSARIQkCQAJAAn8CQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIBgsAAAiB0FTcSAHIAdBD3FBA0YbIAcgFBsiB0HYAGsOIQQWFhYWFhYWFhAWCQYQEBAWBhYWFhYCBQMWFgoWARYWBAALAkAgB0HBAGsOBxAWCxYQEBAACyAHQdMARg0LDBULIAgpAzAhHEGwCAwFC0EAIQcCQAJAAkACQAJAAkACQCAUQf8BcQ4IAAECAwQcBQYcCyAIKAIwIA42AgAMGwsgCCgCMCAONgIADBoLIAgoAjAgDqw3AwAMGQsgCCgCMCAOOwEADBgLIAgoAjAgDjoAAAwXCyAIKAIwIA42AgAMFgsgCCgCMCAOrDcDAAwVC0EIIAogCkEITRshCiAMQQhyIQxB+AAhBwsgESEBIAgpAzAiHEIAUgRAIAdBIHEhDQNAIAFBAWsiASAcp0EPcUHgxAFqLQAAIA1yOgAAIBxCD1YhGiAcQgSIIRwgGg0ACwsgASENIAgpAzBQDQMgDEEIcUUNAyAHQQR2QbAIaiEVQQIhEAwDCyARIQEgCCkDMCIcQgBSBEADQCABQQFrIgEgHKdBB3FBMHI6AAAgHEIHViEbIBxCA4ghHCAbDQALCyABIQ0gDEEIcUUNAiAKIBEgAWsiAUEBaiABIApIGyEKDAILIAgpAzAiHEIAUwRAIAhCACAcfSIcNwMwQQEhEEGwCAwBCyAMQYAQcQRAQQEhEEGxCAwBC0GyCEGwCCAMQQFxIhAbCyEVIBwgERAjIQ0LIBMgCkEASHENESAMQf\u002F\u002Fe3EgDCATGyEMAkAgCCkDMCIcQgBSDQAgCg0AIBEhDUEAIQoMDgsgCiAcUCARIA1raiIBIAEgCkgbIQoMDQsgCCkDMCEcDAsLAn9B\u002F\u002F\u002F\u002F\u002FwcgCiAKQf\u002F\u002F\u002F\u002F8HTxsiDCIHQQBHIQkCQAJAAkAgCCgCMCIBQYQMIAEbIg0iAUEDcUUNACAHRQ0AA0AgAS0AAEUNAiAHQQFrIgdBAEchCSABQQFqIgFBA3FFDQEgBw0ACwsgCUUNAQJAIAEtAABFDQAgB0EESQ0AA0BBgIKECCABKAIAIglrIAlyQYCBgoR4cUGAgYKEeEcNAiABQQRqIQEgB0EEayIHQQNLDQALCyAHRQ0BCwNAIAEgAS0AAEUNAhogAUEBaiEBIAdBAWsiBw0ACwtBAAsiASANayAMIAEbIgEgDWohCSAKQQBOBEAgCyEMIAEhCgwMCyALIQwgASEKIAktAAANDwwLCyAIKQMwIhxCAFINAUIAIRwMCQsgCgRAIAgoAjAMAgtBACEHIABBICAPQQAgDBAUDAILIAhBADYCDCAIIBw+AgggCCAIQQhqIgc2AjBBfyEKIAcLIQtBACEHA0ACQCALKAIAIg1FDQAgCEEEaiANEGAiDUEASA0PIA0gCiAHa0sNACALQQRqIQsgByANaiIHIApJDQELC0E9IQkgB0EASA0MIABBICAPIAcgDBAUIAdFBEBBACEHDAELQQAhCSAIKAIwIQsDQCALKAIAIg1FDQEgCEEEaiIKIA0QYCINIAlqIgkgB0sNASAAIAogDRARIAtBBGohCyAHIAlLDQALCyAAQSAgDyAHIAxBgMAAcxAUIA8gByAHIA9IGyEHDAgLIBMgCkEASHENCUE9IQkgACAIKwMwIA8gCiAMIAcgBRETACIHQQBODQcMCgsgBy0AASELIAdBAWohBwwACwALIAANCSASRQ0DQQEhBwNAIAQgB0ECdGooAgAiAARAIAMgB0EDdGogACACIAYQYUEBIQ4gB0EBaiIHQQpHDQEMCwsLQQEhDiAHQQpPDQkDQCAEIAdBAnRqKAIADQEgB0EBaiIHQQpHDQALDAkLQRwhCQwGCyAIIBw8ACdBASEKIBYhDSALIQwLIAogCSANayILIAogC0obIgogEEH\u002F\u002F\u002F\u002F\u002FB3NKDQNBPSEJIA8gCiAQaiIBIAEgD0gbIgcgF0oNBCAAQSAgByABIAwQFCAAIBUgEBARIABBMCAHIAEgDEGAgARzEBQgAEEwIAogC0EAEBQgACANIAsQESAAQSAgByABIAxBgMAAcxAUIAgoAjwhAQwBCwsLQQAhDgwDC0E9IQkLQZTGASAJNgIAC0F\u002FIQ4LIAhBQGskACAOC6gCAQR\u002FIwBB0AFrIgUkACAFIAI2AswBIAVBoAFqIgJBAEEoEA4aIAUgBSgCzAE2AsgBAkBBACABIAVByAFqIAVB0ABqIAIgAyAEEGNBAEgNACAAKAJMQQBIIQggACAAKAIAIgdBX3E2AgACfwJAAkAgACgCMEUEQCAAQdAANgIwIABBADYCHCAAQgA3AxAgACgCLCEGIAAgBTYCLAwBCyAAKAIQDQELQX8gABA3DQEaCyAAIAEgBUHIAWogBUHQAGogBUGgAWogAyAEEGMLIQEgBgR\u002FIABBAEEAIAAoAiQRAAAaIABBADYCMCAAIAY2AiwgAEEANgIcIAAoAhQaIABCADcDEEEABSABCxogACAAKAIAIAdBIHFyNgIAIAgNAAsgBUHQAWokAAsnAQF\u002FQRwhAyABQQNxBH9BHAUgACABIAIQGyIANgIAQQBBMCAAGwsL\u002FQMBBX8Cf0HwxAEoAgAiAiAAQQdqQXhxIgFBB2pBeHEiA2ohAAJAIANBACAAIAJNG0UEQCAAPwBBEHRNDQEgABABDQELQZTGAUEwNgIAQX8MAQtB8MQBIAA2AgAgAgsiAkF\u002FRwRAIAEgAmoiAEEEa0EQNgIAIABBEGsiA0EQNgIAAkACf0GgzgEoAgAiAQR\u002FIAEoAggFQQALIAJGBEAgAiACQQRrKAIAQX5xayIEQQRrKAIAIQUgASAANgIIIAQgBUF+cWsiACAAKAIAakEEay0AAEEBcQRAIAAoAgQiASAAKAIIIgQ2AgggBCABNgIEIAAgAyAAayIBNgIADAMLIAJBEGsMAQsgAkEQNgIAIAIgADYCCCACIAE2AgQgAkEQNgIMQaDOASACNgIAIAJBEGoLIgAgAyAAayIBNgIACyAAIAFBfHFqQQRrIAFBAXI2AgAgAAJ\u002FIAAoAgBBCGsiAUH\u002FAE0EQCABQQN2QQFrDAELIAFBHSABZyIDa3ZBBHMgA0ECdGtB7gBqIAFB\u002Fx9NDQAaQT8gAUEeIANrdkECcyADQQF0a0HHAGoiASABQT9PGwsiAUEEdCIDQaDGAWo2AgQgACADQajGAWoiAygCADYCCCADIAA2AgAgACgCCCAANgIEQajOAUGozgEpAwBCASABrYaENwMACyACQX9HC70BAQJ\u002FAkAgACgCTCIBQQBOBEAgAUUNAUHMzgEoAgAgAUH\u002F\u002F\u002F\u002F\u002FA3FHDQELAkAgACgCUEEKRg0AIAAoAhQiASAAKAIQRg0AIAAgAUEBajYCFCABQQo6AAAPCyAAEGgPCyAAQcwAaiIBIAEoAgAiAkH\u002F\u002F\u002F\u002F\u002FAyACGzYCAAJAAkAgACgCUEEKRg0AIAAoAhQiAiAAKAIQRg0AIAAgAkEBajYCFCACQQo6AAAMAQsgABBoCyABKAIAGiABQQA2AgALfAECfyMAQRBrIgEkACABQQo6AA8CQAJAIAAoAhAiAgR\u002FIAIFIAAQNw0CIAAoAhALIAAoAhQiAkYNACAAKAJQQQpGDQAgACACQQFqNgIUIAJBCjoAAAwBCyAAIAFBD2pBASAAKAIkEQAAQQFHDQAgAS0ADxoLIAFBEGokAAuwAgECfyAABEAgACgCABAxIABBADYCACAAKAJIIgEEQCABEAkgAEEANgJICyAAKAJEIgEEQCABEAkgAEEANgJECyAAKAJsIgEEQCABEAkgAEEANgJsCyAAKAJ0IgEEQCABKAIAIgIEQCACEAkgACgCdCIBQQA2AgALIAEQCSAAQQA2AnQLIAAoAngiAQRAIAEoAgwiAgRAIAIQCSAAKAJ4IgFBADYCDAsgASgCBCICBEAgAhAJIAAoAngiAUEANgIECyABKAIIIgIEQCACEAkgACgCeCIBQQA2AggLIAEoAgAiAgRAIAIQCSAAKAJ4IgFBADYCAAsgARAJIABBADYCeAsgACgCBCIBBEAgARAtIABBADYCBAsgACgCCCIBBEAgARAtIABBADYCCAsgABAJCwuGGwIefwV7IwBB8AFrIgkkAEEBIQ4CQCAAKAIAKAI8DQAgACgCgAENAAJAAkAgACgCdCIIRQRAIAAoAnghBAwBCyABKAIQIQMgCC8BBCEGAkAgACgCeCIERQ0AIAQoAgxFDQAgBC0AEiEDCwJAIAYEQCAIKAIAIQgDQCAIIAVBBmxqIgovAQAiByADTwRAIAkgAzYCtAEgCSAHNgKwASACQQFBsOYAIAlBsAFqEAhBACEODAYLAkAgCi8BBCIKRQ0AIApB\u002F\u002F8DRg0AIApBAWsiCiADSQ0AIAkgAzYCpAEgCSAKNgKgASACQQFBsOYAIAlBoAFqEAhBACEODAYLIAVBAWoiBSAGRw0ACwwBCyADDQIMAQsDQCADQQFrIQNBACEFA0AgCCAFQQZsai8BACADRwRAIAVBAWoiBSAGRw0BDAQLCyADDQALCwJAIARFDQAgBCgCDCIKRQ0AAkACQCAELQASIggEQEEAIQVBASEHA0AgASgCECIDIAogBUECdGovAQAiBE0EQCAJIAM2ApQBIAkgBDYCkAEgAkEBQbDmACAJQZABahAIQQAhBwsgBUEBaiIFIAhHDQALIAhBBBAMIgNFDQFBACEFA0ACQCAKIAVBAnRqIgQtAAIiBkECTwRAIAkgBjYCRCAJIAU2AkAgAkEBQdvZACAJQUBrEAhBACEHDAELIAggBC0AAyIETQRAIAkgBDYCgAEgAkEBQaPZACAJQYABahAIQQAhBwwBCyADIARBAnRqIQsCQCAGQQFHIgwNACALKAIARQ0AIAkgBDYCUCACQQFBl9UAIAlB0ABqEAhBACEHDAELAkAgBg0AIARFDQAgCSAENgJkIAkgBTYCYCACQQFBmtgAIAlB4ABqEAhBACEHDAELAkAgDA0AIAQgBUYNACAJIAQ2AnggCSAFNgJ0IAkgBTYCcCACQQFBvtgAIAlB8ABqEAhBACEHDAELIAtBATYCAAsgBUEBaiIFIAhHDQALQQAhBQNAAkACQCADIAVBAnQiBGooAgBFBEAgBCAKai0AAg0BCyAFQQFqIgUgCEcNAiAHRQ0BIAEoAhBBAUcNBUEAIQUDQCADIAVBAnRqKAIABEAgCCAFQQFqIgVHDQEMBwsLQQAhByACQQJB78QAQQAQCCAIQRBPBEAgCEHwAXEhB0EAIQQDQCAKIARBAnRqIgZBAToAAiAGIAQ6AAMgBkEBOgA+IAZBAToAOiAGQQE6ADYgBkEBOgAyIAZBAToALiAGQQE6ACogBkEBOgAmIAZBAToAIiAGQQE6AB4gBkEBOgAaIAZBAToAFiAGQQE6ABIgBkEBOgAOIAZBAToACiAGQQE6AAYgBiAEQQFyOgAHIAYgBEEPcjoAPyAGIARBDnI6ADsgBiAEQQ1yOgA3IAYgBEEMcjoAMyAGIARBC3I6AC8gBiAEQQpyOgArIAYgBEEJcjoAJyAGIARBCHI6ACMgBiAEQQdyOgAfIAYgBEEGcjoAGyAGIARBBXI6ABcgBiAEQQRyOgATIAYgBEEDcjoADyAGIARBAnI6AAsgBEEQaiIEIAdHDQALIAcgCEYNBgsDQCAKIAdBAnRqIgQgBzoAAyAEQQE6AAIgB0EBaiIHIAhHDQALDAULIAkgBTYCMCACQQFBo9IAIAlBMGoQCEEAIQcgBUEBaiIFIAhHDQELCyADEAlBACEODAULIAhBBBAMIgMNAQtBACEOIAJBAUGa2wBBABAIDAMLIAMQCQsCQCAAKAJ4IgNFDQAgAygCDCIPRQRAIAMoAgQQCSAAKAJ4KAIIEAkgACgCeCgCABAJIAAoAngiAygCDCIEBH8gBBAJIAAoAngFIAMLEAkgAEEANgJ4DAELIAEoAhghDQJAAkAgAy0AEiIKBEAgAygCACEUIAMoAgQhBiADKAIIIQhBACEFAkADQCANIA8gBUECdGovAQBBNGxqKAIsBEAgCiAFQQFqIgVHDQEMAgsLIAkgBTYCICACQQFB0ucAIAlBIGoQCEEAIQ4MBgsgCkE0bBANIgtFDQFBACEFA0AgDyAFQQJ0aiIDLwEAIQcgCyADLQACBH8gAy0AAwUgBQtBNGxqIgQgDSAHQTRsaiID\u002FQACAP0LAgAgBCADKAIwNgIwIAQgA\u002F0AAiD9CwIgIAQgA\u002F0AAhD9CwIQIAsgBUE0bGoiBCADKAIIIAMoAgxsQQJ0EBYiAzYCLCADRQRAIAVB\u002F\u002F8DcSIABEADQCALIABBAWsiAEE0bGooAiwQCSAADQALCyALEAlBACEOIAJBAUGe5wBBABAIDAcLIAQgBSAIai0AADYCGCAEIAUgBmotAAA2AiAgBUEBaiIFIApHDQALIAAoAngvARAiEEEBayESA0AgCyATQTRsaiIDKAIMIAMoAghsIQYgDSAPIBNBAnRqIgQvAQBBNGxqKAIsIQgCQCAELQACRQRAIAZFDQEgAygCLCEFQQAhB0EAIQQCQCAGQQRJDQAgBSAIa0EQSQ0AIAZBfHEhBEEAIQMDQCAFIANBAnQiDGogCCAMav0AAgD9CwIAIANBBGoiAyAERw0ACyAEIAZGDQILIAQhAyAGQQNxIgwEQANAIAUgA0ECdCIRaiAIIBFqKAIANgIAIANBAWohAyAHQQFqIgcgDEcNAAsLIAQgBmtBfEsNAQNAIAUgA0ECdCIEaiAEIAhqKAIANgIAIAUgBEEEaiIHaiAHIAhqKAIANgIAIAUgBEEIaiIHaiAHIAhqKAIANgIAIAUgBEEMaiIEaiAEIAhqKAIANgIAIANBBGoiAyAGRw0ACwwBCyAGRQ0AIBQgBC0AAyIDQQJ0aiEEIAsgA0E0bGooAiwhBUEAIQMgBkEBRwRAIAZBfnEhFUEAIQwDQCAFIANBAnQiB2ogBCAHIAhqKAIAIhEgEiAQIBFKG0EAIBFBAE4bIApsQQJ0aigCADYCACAFIAdBBHIiB2ogBCAHIAhqKAIAIgcgEiAHIBBIG0EAIAdBAE4bIApsQQJ0aigCADYCACADQQJqIQMgDEECaiIMIBVHDQALCyAGQQFxRQ0AIAUgA0ECdCIDaiAEIAMgCGooAgAiAyASIAMgEEgbQQAgA0EAThsgCmxBAnRqKAIANgIACyATQQFqIhMgCkcNAAsMAgsgCkE0bBANIgsNAQtBACEOIAJBAUGe5wBBABAIDAMLIAEoAhAiAwRAQQAhBQNAIA0gBUE0bGooAiwiBARAIAQQCQsgBUEBaiIFIANHDQALCyANEAkgASAKNgIQIAEgCzYCGAsgACgCdCIFRQ0BIAUoAgAhByAFLwEEIgsEQCAHQSpqIRIgB0EkaiETIAdBHmohESAHQRhqIRQgB0ESaiEVIAdBDGohFiAHQQZqIRcgC0ECayEYQQAhBUEBIQQDQAJAIAEoAhAiAyAHIAVBBmxqIg0vAQAiBk0EQCAJIAM2AhQgCSAGNgIQIAJBAkHMNyAJQRBqEAgMAQsgDS8BBCIIQQFqQf\u002F\u002FA3FBAU0EQCABKAIYIAZBNGxqIA0vAQI7ATAMAQsgCEEBayIKQf\u002F\u002FA3EiDyADTwRAIAkgAzYCBCAJIA82AgAgAkECQaM3IAkQCAwBCwJAIAYgD0YNACANLwECDQAgCSABKAIYIgggBkE0bGoiAygCMDYC6AEgCSAD\u002FQACIP0LA9gBIAkgA\u002F0AAhD9CwPIASAJIAP9AAIA\u002FQsDuAEgAyAIIA9BNGwiDGoiCCkCCDcCCCADIAgpAhA3AhAgAyAIKQIYNwIYIAMgCCkCIDcCICADIAgpAig3AiggAyAIKAIwNgIwIAMgCCkCADcCACABKAIYIAxqIgMgCf0AA7gB\u002FQsCACADIAn9AAPYAf0LAiAgAyAJ\u002FQADyAH9CwIQIAMgCSgC6AE2AjAgBUEBaiALTw0AIAQhCCAYIAVrQf\u002F\u002FA3EiA0EHTwRAIAQgA0EBaiIZQfj\u002FB3EiEGohCCAK\u002FRAhJCAG\u002FRAhI0EAIQwDQCAjICQgEiAEIAxqQQZsIgNqIhogAyATaiIbIAMgEWoiHCADIBRqIh0gAyAVaiIeIAMgFmoiHyADIBdqIiAgAyAHaiID\u002FQgBAP1VAQAB\u002FVUBAAL9VQEAA\u002F1VAQAE\u002FVUBAAX9VQEABv1VAQAHIiEgI\u002F0uICEgJP0tIiX9Tv1SISIgISAj\u002FS0gJf1QIiH9GQBBAXEEQCADICL9WQEAAAsgIf0ZAUEBcQRAICAgIv1ZAQABCyAh\u002FRkCQQFxBEAgHyAi\u002FVkBAAILICH9GQNBAXEEQCAeICL9WQEAAwsgIf0ZBEEBcQRAIB0gIv1ZAQAECyAh\u002FRkFQQFxBEAgHCAi\u002FVkBAAULICH9GQZBAXEEQCAbICL9WQEABgsgIf0ZB0EBcQRAIBogIv1ZAQAHCyAMQQhqIgwgEEcNAAsgECAZRg0BCwNAIAohAwJAIAYgByAIQQZsaiIMLwEAIhBHBEAgBiEDIA8gEEcNAQsgDCADOwEACyALIAhBAWoiCEH\u002F\u002FwNxRw0ACwsgASgCGCAGQTRsaiANLwECOwEwCyAEQQFqIQQgBUEBaiIFIAtHDQALIAAoAnQiBSgCACEHCyAHBH8gBxAJIAAoAnQFIAULEAkgAEEANgJ0DAELQQAhDiACQQFBosUAQQAQCAsgCUHwAWokACAOC+kBAQZ\u002FIwBBIGsiBCQAAn8CQCAAKAI8IgMEQEEBIQUDQCAAKAJMKAIYIAAoAkAgAkECdGooAgAiBkE0bGooAixFBEAgBCAGNgIQIAFBAkHaOSAEQRBqEAhBACEFIAAoAjwhAwsgAkEBaiICIANJDQALDAELQQEhBUEBIAAoAkwiAygCEEUNARoDQCADKAIYIAJBNGxqKAIsRQRAIAQgAjYCACABQQJB2jkgBBAIQQAhBSAAKAJMIQMLIAJBAWoiAiADKAIQSQ0ACwtBASAFDQAaIAFBAUG\u002FFUEAEAhBAAshByAEQSBqJAAgBwsEAEF\u002FC4YHAhZ\u002FAn4gACgCGCIQKAIQRQRAQQEPCyAQKAIYIQ0gACgCFCgCACgCFCELA0AgASANKAIkIgI2AiQgCygCHCIGIAJBmAFsaiEDAkACQAJ\u002FIAAoAkAiEQRAIAYgCygCGEGYAWxqIgJBkAFrKAIAIAJBmAFrKAIAayEMIANBDGohBiADQQRqIQQgAygCCCECIAMoAgAhBUEkDAELIANBlAFqIQYgA0GMAWohBCADKAKQASICIAMoAogBIgVrIQxBNAsgC2ooAgAiEkUNACAEKAIAIQcgBigCACEJIAIgBWshBiABKAIIIgNCfyABNQIoIhiGQn+FIhkgATUCEHwgGIinIghqIQQCfyAFIAhLBEAgBSAIayEOQQAhCEEAIAIgBE0NARogBiAEIAVrIgZrDAELIAggBWshCCACIARNBEAgBiAIayEGQQAhDkEADAELQQAhDiADIQYgAiAEawshFSAJIAdrIQIgASgCDCIEIBkgATUCFHwgGIinIgpqIQUCfyAHIApLBEAgByAKayEPQQAhCkEAIAUgCU8NARogAiAFIAdrIgJrDAELIAogB2shCiAFIAlPBEAgAiAKayECQQAhD0EADAELQQAhDyAEIQIgCSAFawshB0EAIQUgCEEASA0BIApBAEgNASAVQQBIDQEgB0EASA0BIAZBAEgNASACQQBIDQEgAyAPbCAOaiEHIAogDGwgCGohCQJAAkACQCABKAIsIggNACAJDQAgBw0AIAMgDEcNACADIAZHDQAgAiAERw0BIAEgC0EkQTQgERtqIgIoAgA2AiwgAkEANgIADAMLIAgNAQsgBEUNAiAErSADrX5CIIinDQIgAyAEbCIDQf\u002F\u002F\u002F\u002F8DSw0CIAEgA0ECdBAWIgM2AiwgA0UNAiAGIAEoAggiBEYgASgCDCIFIAJGcQ0AIANBACAEIAVsQQJ0EA4aCyACRQ0AIAJBAXEhFyAGQQJ0IQYgASgCLCAHQQJ0aiEEIBIgCUECdGohBSACQQFHBEAgAkH+\u002F\u002F\u002F\u002FB3EhB0EAIQIDQCAEIAUgBhALIRYgBSAMQQJ0IglqIgggCWohBSAWIAEoAghBAnRqIAggBhALIAEoAghBAnRqIQQgAkECaiICIAdHDQALCyAXRQ0AIAQgBSAGEAsaCyALQcwAaiELIA1BNGohDSABQTRqIQFBASEFIBRBAWoiFCAQKAIQSQ0BCwsgBQvVEgIJfwx+IwBBoAFrIgUkAAJAIAJBI00EQEEAIQIgA0EBQbYuQQAQCAwBCyACQSRrIgIgAkEDbiIJQQNsRwRAQQAhAiADQQFBti5BABAIDAELIAAoAkghBiABIAVBnAFqIgJBAhAKIAAgBSgCnAE7AVAgAUECaiAGQQhqQQQQCiABQQZqIAZBDGpBBBAKIAFBCmogBkEEEAogAUEOaiAGQQRqQQQQCiABQRJqIABB3ABqQQQQCiABQRZqIABB4ABqQQQQCiABQRpqIABB1ABqQQQQCiABQR5qIABB2ABqQQQQCiABQSJqIAJBAhAKAkACQAJAIAUoApwBIgJBgIABTQRAIAYgAjYCECACIAlHBEAgBSAJNgKEASAFIAI2AoABIANBAUGh8AAgBUGAAWoQCEEAIQIMBQsgBigCBCICIAYoAgwiCEkgBigCCCILIAYoAgAiBEtxRQRAIAUgCK0gAq19NwN4IAUgC60gBK19NwNwIANBAUHr7AAgBUHwAGoQCEEAIQIMBQsgACgCXCIHQQAgACgCYCIKG0UEQCAFIAo2AgQgBSAHNgIAIANBAUGT8QAgBRAIQQAhAgwFCwJAAkAgACgCVCIMIARLDQBBfyAHIAxqIgcgByAMSRsgBE0NACAAKAJYIgcgAksNAEF\u002FIAcgCmoiCiAHIApLGyACSw0BC0EAIQIgA0EBQdYUQQAQCAwFCwJAIAAoAuABDQAgACgC2AEiB0UNACAAKALcASIKRQ0AIAsgBGsiBCAHRiAIIAJrIgIgCkZxDQAgBSACNgJsIAUgBDYCaCAFIAo2AmQgBSAHNgJgIANBAUHT6AAgBUHgAGoQCEEAIQIMBQsgBiAJQTQQDCIENgIYIARFDQECQCAGKAIQRQ0AIAFBJGogBUGYAWoiAkEBEAogBCAFKAKYASIJQQd2Igo2AiAgBCAJQf8AcUEBaiIMNgIYIAAoAuABIQsgAUElaiACQQEQCiAEIAUoApgBNgIAIAFBJmogAkEBEAogBCAFKAKYASIINgIEQQAhAiAEKAIAIgdBgAJrQYF+SQRAQQAhCQwFC0EAIQkgCEGAAmtBgX5JDQQgBCgCGCIIQR9LDQMgBEEANgIkIAQgACgCoAE2AihBASEJIAYoAhBBAU0NAEEAIAogCxshCkEAIAwgCxshCyABQSdqIQEDQCABIAVBmAFqQQEQCiAEIAUoApgBIgdBB3YiCDYCVCAEIAdB\u002FwBxQQFqIgc2AkwCQCAAKALgAQ0AIAAtALwBQQRxDQAgByALRiAIIApGcQ0AIAUgCDYCVCAFIAc2AlAgBSAJNgJMIAUgCjYCSCAFIAs2AkQgBSAJNgJAIANBAkHX7gAgBUFAaxAICyABQQFqIAVBmAFqIghBARAKIAQgBSgCmAE2AjQgAUECaiAIQQEQCiAEIAUoApgBIgg2AjggBCgCNCIHQYACa0GBfkkNBSAIQYACa0GAfk0NBSAEKAJMIghBIE8NBCABQQNqIQEgBEEANgJYIAQgACgCoAE2AlwgBEE0aiEEIAlBAWoiCSAGKAIQSQ0ACwtBACECIAAoAlwiCEUNBCAAKAJgIgtFDQQgACAIrSINQgF9Ig8gBigCCCAAKAJUIgdrrXwgDYCnIgE2AmggACALrSIOQgF9IhAgBigCDCAAKAJYIgprrXwgDoCnIgQ2AmwCQAJAIAFFDQAgBEUNAEH\u002F\u002FwMgBG4gAU8NAQsgBSAENgIUIAUgATYCECADQQFBxekAIAVBEGoQCAwFCyABIARsIQkCQCAALQBEQQJxBEAgACAAKAIcIAdrIAhuNgIcIAAgACgCICAKayALbjYCICAAIA8gACgCJCAHa618IA2APgIkIAAgECAAKAIoIAprrXwgDoA+AigMAQsgACAENgIoIAAgATYCJCAAQgA3AhwLIAAgCUGMLBAMIgE2ApwBIAFFBEAgA0EBQc0dQQAQCAwFCyAGKAIQQbgIEAwhASAAKAIMIAE2AtArIAAoAgwoAtArRQRAIANBAUHNHUEAEAgMBQtBCkEUEAwhASAAKAIMIAE2AvArIAAoAgwiASgC8CtFBEAgA0EBQc0dQQAQCAwFCyABQQo2AvgrQQpBFBAMIQEgACgCDCABNgL8KyAAKAIMIgEoAvwrRQRAIANBAUHNHUEAEAgMBQsgAUEKNgKELAJAIAYoAhAiBEUNACAGKAIYIQhBACEBIARBAUcEQCAEQX5xIQsDQCAIIAFBNGxqIgcoAiBFBEAgACgCDCgC0CsgAUG4CGxqQQEgBygCGEEBa3Q2ArQICyAIIAFBAXIiB0E0bGoiCigCIEUEQCAAKAIMKALQKyAHQbgIbGpBASAKKAIYQQFrdDYCtAgLIAFBAmohASACQQJqIgIgC0cNAAsLIARBAXFFDQAgCCABQTRsaiICKAIgDQAgACgCDCgC0CsgAUG4CGxqQQEgAigCGEEBa3Q2ArQICyAJBEAgACgCnAEhAUEAIQIDQCABIAYoAhBBuAgQDCIENgLQKyAERQRAQQAhAiADQQFBzR1BABAIDAcLIAFBjCxqIQEgAkEBaiICIAlJDQALCyAAQQQ2AgggBigCECIDBEBBfyAAKAJYIgEgACgCYCICIAAoAmxBAWtsaiIEIAJqIgIgAiAESRsiAiAGKAIMIgQgAiAESRutIRBBfyAAKAJUIgIgACgCXCIEIAAoAmhBAWtsaiIAIARqIgQgACAESxsiACAGKAIIIgQgACAESRutIREgASAGKAIEIgAgACABSRutIRIgAiAGKAIAIgAgACACSRutIRMgBigCGCEAQQAhAQNAIAAgADUCBCINQgF9IhQgEnwgDYAiFT4CFCAAIAA1AgAiDkIBfSIWIBN8IA6AIhc+AhAgAEJ\u002FIAA1AigiD4ZCf4UiGCAQIBR8IA2AIBV9Qv\u002F\u002F\u002F\u002F8Pg3wgD4g+AgwgACARIBZ8IA6AIBd9Qv\u002F\u002F\u002F\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\u002FNgLUKyAFIANBAXJBjCxsakF\u002FNgLUKyAFIANBAnJBjCxsakF\u002FNgLUKyAFIANBA3JBjCxsakF\u002FNgLUKyAFIANBBHJBjCxsakF\u002FNgLUKyAFIANBBXJBjCxsakF\u002FNgLUKyAFIANBBnJBjCxsakF\u002FNgLUKyAFIANBB3JBjCxsakF\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\u002F\u002FQNNBEAgCCAENgIAIAJBAUHKECAIEAhBAAwFCwNAIAciBSgCACIDBEAgBUEMaiEHIAMgBEcNAQsLAkACQCADDQBBAiEGIAJBAkH1HEEAEAhBlhIhBwJAAkAgASAAKAIQQQIgAhASQQJHDQADQCAAKAIQIAhBLGpBAhAKQfC9ASEDIAgoAiwiBEGA\u002FgNPBEADQCADIgUoAgAiDARAIANBDGohAyAEIAxHDQELCyAFKAIEIAAoAghxRQRAQfwoIQcMAwsgDARAIAxBkP8DRgRAIAhBkP8DNgIoDAcLIAEpAzghECAAKALIASIDKAIYIgVBAWoiBCADKAIgIgdNBEAgAygCHCEHDAULIAMCfyAHs0MAAMhCkiIPQwAAgE9dIA9DAAAAAGBxBEAgD6kMAQtBAAsiBTYCICADKAIcIAVBGGwQECIHBEAgAyAHNgIcIAMoAhgiBUEBaiEEDAULIAMoAhwQCSADQQA2AiAgA0IANwMYQakdIQcMAwsgBkECaiEGCyABIAAoAhBBAiACEBJBAkYNAAsLIAJBASAHQQAQCCACQQFB\u002FscAQQAQCEEADAcLIAcgBUEYbGoiBSAGNgIQIAUgEKcgBmusNwMIIAVBADsBACADIAQ2AhggCCAMNgIoQfC9ASEEA0AgBCIFKAIAIgNFDQEgBEEMaiEEIAMgDEcNAAsLIAUoAgQgACgCCHFFBEAgAkEBQfwoQQAQCEEADAYLIAEgACgCEEECIAIQEkECRwRAIAJBAUGWEkEAEAhBAAwGCyAAKAIQIAhBJGpBAhAKIAgoAiQiBEEBTQRAIAJBAUGhLkEAEAhBAAwGCyAIIARBAmsiBzYCJCAAKAIQIQQgACgCFCAHSQRAIAQgBxAQIgRFBEAgACgCEBAJIABCADcDECACQQFB1CVBABAIQQAMBwsgACAENgIQIAAgCCgCJCIHNgIUCyABIAQgByACEBIiBCAIKAIkRwRAIAJBAUGWEkEAEAhBAAwGCyAAIAAoAhAgBCACIAUoAggRAQBFBEAgAkEBQagSQQAQCEEADAYLIAEpAzghECAIKAIkIQwCQCAAKALIASIFKAIYIgZBAWoiByAFKAIgIgRNBEAgBSgCHCEEDAELIAUCfyAEs0MAAMhCkiIPQwAAgE9dIA9DAAAAAGBxBEAgD6kMAQtBAAsiBDYCICAFKAIcIARBGGwQECIERQ0FIAUgBDYCHCAFKAIYIgZBAWohBwsgBCAGQRhsaiIEIAxBBGo2AhAgBCAQpyAMa0EEa6w3AwggBCADOwEAIAUgBzYCGCABIAAoAhBBAiACEBJBAkcEQCACQQFBlhJBABAIQQAMBgtBASAKIANB3P4DRhshCkEBIAsgA0HS\u002FgNGGyELQQEgDSADQdH+A0YbIQ0gACgCECAIQShqQQIQCiAIKAIoIgRBkP8DRw0BCwsgDQ0BCyACQQFBmCRBABAIQQAMAgsgC0UEQCACQQFBxiRBABAIQQAMAgsgCkUEQCACQQFB9CRBABAIQQAMAgtBACEDQQAhDSMAQRBrIgQkAEEBIQcCQCAALQC8AUEBcUUNAAJAIAAoAnAiC0UNAAJAA0AgACgCdCANQQN0aiIFKAIAIgoEQCADIAUoAgQiBmsiBUEAIAMgBU8bIQUgAyAGSQRAIAYgA2shCyADIApqIQoDQCALQQRJBEBBjishAwwFCyAKIARBDGpBBBAKIAQoAgwiA0F\u002FcyAJSQRAQfQqIQMMBQsgAyALQQRrIgZrIAUgAyAGSyIMGyEFIAMgCWohCSAGIANrIQsgCkEAIAMgDBtqQQRqIQogAyAGSQ0ACyAAKAJwIQsLIAUhAwsgDUEBaiINIAtJDQALIANFDQFBACEHIAJBAUHpFkEAEAgMAgtBACEHIAJBASADQQAQCAwBCyAAIAkQDSIDNgKIASADRQRAQQAhByACQQFBviBBABAIDAELIAAgCTYCfCAAKAJ0IQYCQCAAKAJwIgoEQEEAIQlBACEDQQAhBQNAIAYgBUEDdCINaiIMKAIAIgsEQCAAKAKIASADaiEKAn8gDCgCBCIGIAlNBEAgCiALIAYQCxogAyAGaiEDIAkgBmsMAQsgCiALIAkQCxogAyAJaiEDIAYgCWsiBgRAIAkgC2ohCQNAIAZBBEkNBiAJIARBCGpBBBAKIAlBBGohCSAAKAKIASADaiEKIAZBBGsiBiAEKAIIIgtJBEAgCiAJIAYQCxogAyAGaiEDIAQoAgggBmsMAwsgCiAJIAsQCxogBCgCCCIKIANqIQMgCSAKaiEJIAYgCmsiBg0ACwtBAAshCSAAKAJ0IA1qKAIAEAkgACgCdCIGIA1qQgA3AgAgACgCcCEKCyAFQQFqIgUgCkkNAAsgACgCfCEJIAAoAogBIQMLIAAgCTYCkAEgACADNgJ4IABBADYCcCAGEAkgAEEANgJ0DAELQQAhByACQQFBjitBABAICyAEQRBqJAAgB0UEQCACQQFBjz1BABAIQQAMAgsgAkEEQYfXAEEAEAggACgCyAEgASkDOEL+\u002F\u002F\u002F\u002FD3xC\u002F\u002F\u002F\u002F\u002Fw+DNwMIIABBCDYCCEEBDAELIAUoAhwQCSAFQQA2AiAgBUIANwMYIAJBAUGpHUEAEAhBAAshDiAIQTBqJAAgDgscACAAKAIIRSAAKALAAUEARyAAKALEAUEAR3FxCwQAQQALDwAgAARAIAAgATYCuAELC48BAQR\u002FIAAoAhgiAQRAIAAoAhwiA0E0biEEIANBNE8Ef0EAIQMDQCABKAIAIgIEQCACQQFrEAkgAUEANgIACyABKAIEIgIEQCACEAkgAUEANgIECyABKAIIIgIEQCACEAkgAUEANgIICyABQTRqIQEgA0EBaiIDIARHDQALIAAoAhgFIAELEAkgAEEANgIYCwuGAQEEfyAAKAIYIgEEQCAAKAIcIgJBwABPBH8gAkEGdiEEQQAhAgNAIAEoAgAiAwRAIAMQCSABQQA2AgALIAEoAgQiAwRAIAMQCSABQQA2AgQLIAEoAjwQCSABQQA2AjwgAUFAayEBIAJBAWoiAiAERw0ACyAAKAIYBSABCxAJIABBADYCGAsLPwEBfyAABEAgACgCdCIBBEAgARAJIABBADYCdAsgACgCeCIBBEAgARAJIABBADYCeAsgACgClAEQCSAAEAkLC8GmBQRcfwJ7Bn4BfSMAQeAAayIjJAAgACgCCCEaAkACQAJAAkAgACgCAEUEQCAaIBooAhAgGigCCGsgGigCFCAaKAIMa2xBAnQiBhAWIgM2AjwgA0UEQCAAKAIkGiAAKAIgQQFB0TxBABAIIAAoAiQaIABBHGohEAwDCyADQQAgBhAOGgwBCyAaKAI8IgNFDQAgAxAJIBpBADYCPAsgACgCECIyKAIcIDIoAhhBmAFsaiIDQZgBaygCACE1IANBkAFrKAIAITYgACgCFCEvIAAoAgwhMCAAKAIEITcgACgCHCgCAEUNAiAAQRxqIRACQAJ\u002FQQAgASgCBCIDQQBMDQAaIAEoAgAhBgJAA0AgBiAHQQxsaiIEKAIARQ0BIAdBAWoiByADRw0AC0EADAELIAQoAgQLIgQNAEEBQZwBEAwiBEUEQCAAKAIgQQFBkDBBABAIDAILIARBADYCjAEgASgCBCIDQf\u002F\u002F\u002F\u002F8HRwR\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\u002FwFRIg02ApgCAn8CQCABQQNxIgJBA0YNAEL\u002FASFhIA0EQEEAIActAABBjwFLDQIaCyAGQQNOBEAgBzEAACFhCyAPIAZBA2siDTYClAIgD0EPQRAgYEL\u002FAVEiCxsiAzYCkAIgDyAHIAZBAkpqIgE2AoACIA8gYUIPhCBhIAhBAUYbImFC\u002FwFRNgKYAiAPIGBCB0IIIAsbhiBhhCJgNwOIAiACQQJGDQAgYUL\u002FAVEEQEEAIAEtAABBjwFLDQIaC0L\u002FASFiIAZBBE4EQCABMQAAIWILIA8gBkEEayIHNgKUAiAPIAEgBkEDSmoiATYCgAIgDyBiQg+EIGIgDUEBRhsiYkL\u002FAVE2ApgCIA8gA0EHQQggYUL\u002FAVEiCBtqIgM2ApACIA8gYEIHQgggCBuGIGKEImA3A4gCIAJBAUYNAEL\u002FASFhIGJC\u002FwFRBEBBACABLQAAQY8BSw0CGgsgBkEFTgRAIAExAAAhYQsgDyAGQQVrNgKUAiAPIAEgBkEESmo2AoACIA8gYUIPhCBhIAdBAUYbImFC\u002FwFRNgKYAiAPIANBB0EIIGJC\u002FwFRIgEbaiIDNgKQAiAPIGBCB0IIIAEbhiBhhCJgNwOIAgsgDyBgQcAAIANrrYY3A4gCQQELRQRAICEEQEEAIQcgHUEBQd7UAEEAEAgMBQtBACEHIB1BAUHe1ABBABAIDAQLICsgJGshFSAPIAZBAmsiCzYC9AEgDyAFIBFqIgJBA2siAzYC4AEgDyACQQJrLQAAIhlBjwFLIg02AvgBIA8gGUEEdq0iYDcD6AEgD0EDQQQgYEIHg0IHURsiATYC8AEgA0EDcUEBaiIHIAsgByALSBshCAJAAkAgBkECTARAIA8gCyAIayICNgL0AQwBCyAPIAJBBGsiBzYC4AEgDyADLQAAIhdBjwFLIg02AvgBIA8gF60iYSABrYYgYIQiYDcD6AEgD0EIQQdBCCBhQv8Ag0L\u002FAFEbIBlBjwFNGyABaiIBNgLwAQJAIAhBAUYEQCAHIQMMAQsgDyACQQVrIgM2AuABIA8gBy0AACIZQY8BSyINNgL4ASAPIBmtImEgAa2GIGCEImA3A+gBIA9BCEEHQQggYUL\u002FAINC\u002FwBRGyAXQY8BTRsgAWoiATYC8AEgCEECRg0AIA8gAkEGayIHNgLgASAPIAMtAAAiF0GPAUsiDTYC+AEgDyAXrSJhIAGthiBghCJgNwPoASAPQQhBB0EIIGFC\u002FwCDQv8AURsgGUGPAU0bIAFqIgE2AvABIAhBA0YEQCAHIQMMAQsgDyACQQdrIgM2AuABIA8gBzEAACJhQo8BViINNgL4ASAPIGEgAa2GIGCEImA3A+gBIA9BCEEHQQggYUL\u002FAINC\u002FwBRGyAXQY8BTRsgAWoiATYC8AELIA8gCyAIayICNgL0ASABQSBLDQELAkAgAkEETgRAIANBA2soAgAhByAPIAJBBGs2AvQBIA8gA0EEazYC4AEMAQsgAkEATARAQQAhBwwBCyACQQFxIUcCQCACQQFGBEBBGCEIQQAhBwwBCyACQf7\u002F\u002F\u002F8HcSEXQRghCEEAIQdBACELA0AgDyADQQFrIh82AuABIAMtAAAhRiAPIANBAmsiAzYC4AEgDyACQQFrNgL0ASAfLQAAIR8gDyACQQJrIgI2AvQBIEYgCHQgB3IgHyAIQQhrdHIhByAIQRBrIQggC0ECaiILIBdHDQALCyBHRQ0AIA8gA0EBazYC4AEgAy0AACFIIA8gAkEBazYC9AEgSCAIdCAHciEHCyAPIAdB\u002FwFxIgNBjwFLNgL4ASAPQQdBCCAHQYCAgPgHcUGAgID4B0YbQQggDRsiAkEIQQdBCCAHQYCA\u002FANxQYCA\u002FANGGyAHQf\u002F\u002F\u002F\u002F94TRtqIghBCEEHQQggB0GA\u002FgFxQYD+AUYbIAdBEHZB\u002FwFxIg1BjwFNG2oiC0EIQQdBCCAHQf8AcUH\u002FAEYbIAdBCHZB\u002FwFxIhlBjwFNGyABamo2AvABIA8gDSACdCAHQRh2ciAZIAh0ciADIAt0cq0gAa2GIGCENwPoAQsgD0HAAWogESAFIAZrQf8BEFQCf0EAIAxBAkkNABogD0GgAWogEyAJQQAQVEEAIAxBAkYNABpCACFgQgAhYiAPQQE2ApgBIA9BADYCkAEgD0IANwOIASAPIAlBAWsiBjYClAEgDyAFIBFqIAlqIgNBAWsiATYCgAEgAUEDcSEFAkAgCUEATARAIAEhAwwBCyAPIANBAmsiAzYCgAEgATEAACFgCyAPIGA3A4gBIA8gYEKPAVYiETYCmAEgD0EHQQggYEL\u002FAINC\u002FwBRGyINNgKQAQJAIAVFDQAgDyAJQQJrIgI2ApQBAkAgCUECSARAIAMhBwwBCyAPIANBAWsiBzYCgAEgAzEAACFiCyAPIGJCjwFWIhE2ApgBIA8gYiANrYYgYIQiYTcDiAEgD0EIQQdBCCBiQv8Ag0L\u002FAFEbIGBCjwFYGyANaiINNgKQASAFQQFGBEAgByEDIGEhYCAGIQkgAiEGDAELIA8gCUEDayIINgKUAQJAIAlBA0gEQCAHIQEMAQsgDyAHQQFrIgE2AoABIAcxAAAhYwsgDyBjQo8BViIRNgKYASAPIGMgDa2GIGGEImA3A4gBIA9BCEEHQQggY0L\u002FAINC\u002FwBRGyBiQo8BWBsgDWoiDTYCkAEgBUECRgRAIAEhAyACIQkgCCEGDAELIA8gCUEEayIGNgKUAUIAIWICQCAJQQRIBEAgASEDDAELIA8gAUEBayIDNgKAASABMQAAIWILIA8gYkKPAVYiETYCmAEgDyBiIA2thiBghCJgNwOIASAPQQhBB0EIIGJC\u002FwCDQv8AURsgY0KPAVgbIA1qIg02ApABIAghCQsgDUEgTQRAAkAgCUEFTgRAIANBA2soAgAhByAPIAlBBWs2ApQBIA8gA0EEazYCgAEMAQtBACEHIAlBAkgNAEEYIQkDQCAPIANBAWsiATYCgAEgAy0AACFJIA8gBkEBayICNgKUASBJIAl0IAdyIQcgBkEBSyFKIAEhAyAJQQhrIQkgAiEGIEoNAAsLIA8gB0H\u002FAXEiAUGPAUs2ApgBIA9BB0EIIAdBgICA+AdxQYCAgPgHRhtBCCARGyIDQQhBB0EIIAdBgID8A3FBgID8A0YbIAdB\u002F\u002F\u002F\u002F\u002F3hNG2oiBkEIQQdBCCAHQYD+AXFBgP4BRhsgB0EQdkH\u002FAXEiCUGPAU0baiICQQhBB0EIIAdB\u002FwBxQf8ARhsgB0EIdkH\u002FAXEiCEGPAU0bIA1qajYCkAEgDyAJIAN0IAdBGHZyIAggBnRyIAEgAnRyrSANrYYgYIQ3A4gBC0EBCyExIBggEmshHyAWQQFqISwgFEEAOgDAECAUQcAQaiELIA9BgAJqECEhAiAVQQBKBEAgJkEBayETIBQhAyALIQhBACERIA4hBkEAIQ0DQCANIQUgEUEIdCAPQeABahAqQf8AcUEBdHJBsP0Aai8BACEBAkAgEQ0AIAFBACACQQJrIgdBf0YbIQEgAkEBSgRAIAchAgwBCyAPQYACahAhIQILIA8pA+gBIWQgDygC8AEhSyADIAMoAgAgAUEEdiIYQQNxIAFBAnZBMHFyICJ0ciIWNgIAIAFBBXZBB3EgAUEQcSIeQQR2ciERIEsgAUEHcSIHayENIGQgB62IImCnIQlBACEHIBUgBUECckoEQCARQQh0IAlB\u002FwBxQQF0ckGw\u002FQBqLwEAIQcCQCARDQAgB0EAIAJBAmsiCUF\u002FRhshByACQQFKBEAgCSECDAELIA9BgAJqECEhAgsgB0EEdkEBcSAHQQV2QQdxciERIA0gB0EHcSIJayENIGAgCa2IImCnIQkLIAMgB0ECdEGABnEgB0EwcXIgIkEEanQgFnI2AgACQCAHQQJ2QQJxIAFBA3ZBAXFyIhdBA0cNAEEEQQMgAkECayIWQX9GGyEXIAJBAUoEQCAWIQIMAQsgD0GAAmoQISECCwJ\u002FIBdFBEAgD0KBgICAEDcCeEEADAELIBdBAk0EQCAPQQEgCUEHcUHknQFqLQAAIhZBBXZBfyAWQQJ2QQdxIhl0QX9zIAkgFkEDcSIJdnFqQQFqIhYgF0EBRiIXGzYCfCAPIBZBASAXGzYCeCAJIBlqDAELIAkgCUEHcUHknQFqLQAAIhZBA3EiGXYhCSAXQQNGBEAgFkEFdkEBaiEXIBlBA0YEQCAPIAlBAXFBAnI2AnwgDyAXQX8gFkECdkEHcSIWdEF\u002FcyAJQQF2cWo2AnggFkEEagwCCyAPIBcgCSAJQQdxQeSdAWotAAAiCUEDcSISdiIgQX8gFkECdkEHcSIWdEF\u002Fc3FqNgJ4IA9BfyAJQQJ2QQdxIhd0QX9zICAgFnZxIAlBBXZqQQFqNgJ8IBYgGWogEmogF2oMAQsgDyAJIAlBB3FB5J0Bai0AACIJQQNxIhJ2IiBBfyAWQQJ2QQdxIhd0QX9zcSAWQQV2akEDajYCeCAPQX8gCUECdkEHcSIWdEF\u002FcyAgIBd2cSAJQQV2akEDajYCfCASIBlqIBdqIBZqCyEJAkAgLCAPKAJ4IhlPBEAgDygCfCISICxNDQELICEEQEEAIQcgHUEBQan2AEEAEAgMBwtBACEHIB1BAUGp9gBBABAIDAYLIA8gDSAJazYC8AEgDyBgIAmtiDcD6AEgB0HwAXEgGEEPcXJB\u002FwFB\u002FwEgBUEEaiINIBVrQQF0diANIBVMGyIJIAlB1QBxIB9BAUobIglBf3NxBEAgIQRAQQAhByAdQQFBv9oAQQAQCAwHC0EAIQcgHUEBQb\u002FaAEEAEAgMBgsCQAJAIB4EQCAPQcABahATIRcgDyAPKALQASAZIAFBE3RBH3VqIhZrNgLQASAPIA8pA8gBIBatiDcDyAEgF0F\u002FIBZ0QX9zcSABQQh2QQFxIBZ0ckEBckECaiATdCAXQR90ciEWDAELQQAhFiAJQQFxRQ0BCyAGIBY2AgALAkAgAUEgcQRAIA9BwAFqEBMhFyAPIA8oAtABIBkgAUESdEEfdWoiFms2AtABIA8gDykDyAEgFq2INwPIASAGIBVBAnRqIBdBfyAWdEF\u002Fc3EgAUEJdkEBcSAWdHJBAXIiFkECaiATdCAXQR90cjYCACAIQSAgFmdrIhYgCC0AAEH\u002FAHEiFyAWIBdLG0GAAXI6AAAMAQsgCUECcUUNACAGIBVBAnRqQQA2AgALIAZBBGohFwJAAkAgAUHAAHEEQCAPQcABahATIRggDyAPKALQASAZIAFBEXRBH3VqIhZrNgLQASAPIA8pA8gBIBatiDcDyAEgGEF\u002FIBZ0QX9zcSABQQp2QQFxIBZ0ckEBckECaiATdCAYQR90ciEWDAELQQAhFiAJQQRxRQ0BCyAXIBY2AgALIAhBADoAAQJAIAFBgAFxBEAgD0HAAWoQEyEYIA8gDygC0AEgGSABQRB0QR91aiIWazYC0AEgDyAPKQPIASAWrYg3A8gBIBcgFUECdGogGEF\u002FIBZ0QX9zcSABQQt2QQFxIBZ0ckEBciIBQQJqIBN0IBhBH3RyNgIAIAhBoH8gAWdrOgABDAELIAlBCHFFDQAgFyAVQQJ0akEANgIACyAGQQhqIQECQAJAIAdBEHEEQCAPQcABahATIRkgDyAPKALQASASIAdBE3RBH3VqIhZrNgLQASAPIA8pA8gBIBatiDcDyAEgGUF\u002FIBZ0QX9zcSAHQQh2QQFxIBZ0ckEBckECaiATdCAZQR90ciEXDAELQQAhFyAJQRBxRQ0BCyABIBc2AgALAkAgB0EgcQRAIA9BwAFqEBMhGSAPIA8oAtABIBIgB0ESdEEfdWoiFms2AtABIA8gDykDyAEgFq2INwPIASABIBVBAnRqIBlBfyAWdEF\u002Fc3EgB0EJdkEBcSAWdHJBAXIiAUECaiATdCAZQR90cjYCACAIQSAgAWdrIgEgCC0AAUH\u002FAHEiFiABIBZLG0GAAXI6AAEMAQsgCUEgcUUNACABIBVBAnRqQQA2AgALIAZBDGohAQJAAkAgB0HAAHEEQCAPQcABahATIRkgDyAPKALQASASIAdBEXRBH3VqIhZrNgLQASAPIA8pA8gBIBatiDcDyAEgGUF\u002FIBZ0QX9zcSAHQQp2QQFxIBZ0ckEBckECaiATdCAZQR90ciEXDAELQQAhFyAJQcAAcUUNAQsgASAXNgIACyAIQQJqIghBADoAAAJAIAdBgAFxBEAgD0HAAWoQEyEWIA8gDygC0AEgEiAHQRB0QR91aiIJazYC0AEgDyAPKQPIASAJrYg3A8gBIAEgFUECdGogFkF\u002FIAl0QX9zcSAHQQt2QQFxIAl0ckEBciIBQQJqIBN0IBZBH3RyNgIAIAhBoH8gAWdrOgAADAELIAlBgAFJDQAgASAVQQJ0akEANgIACyAiQRBzISIgAyAFQQRxaiEDIAZBEGohBiANIBVIDQALCyAKQQhxITggFEGwDGohKCAUQaAIaiEpIBRBkARqISUgH0EDTgRAIBVBA2whOSAVQQF0ITogJkEBayEgQQMgJkECayIBdCEtQQEgAXQhLiAVQQdqQQF2Qfz\u002F\u002F\u002F8HcUEEaiE9ICsgJEF\u002Fc2oiAUEDdiIDQQJ0Ij5BBGohOyADQQFqIj9B\u002FP\u002F\u002F\u002FwNxIhxBAnQhPCAcQQN0IRIgAUEYSSFAQQIhGQNAIBkhEyALLQAAIRYgC0EAOgAAICJBb3FBAnMhIgJAIBVBAEwEQCATQQJqIRkMAQsgJSAUIBNBBHEbIREgE0ECaiEZIA4gEyAVbEECdGohCEEAIQogCyEGQQAhDQNAIA0hBSAGLQABQQV2QQRxIAogFkEHdnJyIgNBCHQgD0HgAWoQKkH\u002FAHFBAXRyQbCNAWovAQAhAQJAIAMNACABQQAgAkECayIDQX9GGyEBIAJBAUoEQCADIQIMAQsgD0GAAmoQISECCyAPKQPoASFlIA8oAvABIUwgESARKAIAIAFBBHZBA3EgAUECdkEwcXIgInRyIgk2AgAgAUHAAHEiKkEFdiABQYABcSInQQZ2ciEKIEwgAUEHcSIDayEXIGUgA62IImCnIQ1BACEYAkAgFSAFQQJyTARAQQAhBwwBCyAKIAYtAAJBBXZBBHEgBi0AAUEHdnJyIgNBCHQgDUH\u002FAHFBAXRyQbCNAWovAQAhBwJAIAMNACAHQQAgAkECayIDQX9GGyEHIAJBAUoEQCADIQIMAQsgD0GAAmoQISECCyAHQQV2IAdBBnZyQQJxIQogFyAHQQdxIgNrIRcgYCADrYgiYKchDQsgESAHQQJ0QYAGcSAHQTBxciAiQQRqdCAJcjYCAEEBIQlBASEDAkAgB0ECdkECcSABQQN2QQFxciIeRQ0AIA0gDUEHcUHknQFqLQAAIgNBA3EiDXYhCSAeQQNHBEBBASAJQX8gA0ECdkEHcSIYdEF\u002Fc3EgA0EFdmpBAWoiAyAeQQFGIh4bIQkgA0EBIB4bIQMgDSAYaiEYDAELIAlBB3FB5J0Bai0AACIeQQNxIjMgDSADQQJ2QQdxIhtqaiAeQQJ2QQdxIg1qIRggCSAzdiIJQX8gG3RBf3NxIANBBXZqQQFqIQNBfyANdEF\u002FcyAJIBt2cSAeQQV2akEBaiEJCyAPIBcgGGs2AvABIA8gYCAYrYg3A+gBIAFB8AFxIg0gDUEBa3EEQCADIBZB\u002FwBxIhYgBi0AAUH\u002FAHEiFyAWIBdLGyIWQQJrIhdBACAWIBdPG2ohAwsgB0HwAXEiFyAXQQFrcQRAIAkgBi0AAUH\u002FAHEiFiAGLQACQf8AcSIYIBYgGEsbIhZBAmtBACAWQQJLG2ohCQsgAyAsTSAJICxNcUUEQCAhBEBBACEHIB1BAUGN9wBBABAIDAkLQQAhByAdQQFBjfcAQQAQCAwICyAGLQACIRYgBkEAOwABIBcgDUEEdnJB\u002FwFB\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\u002FQACACJfQQT9rQEgX0EE\u002FasBIF4gX\u002F0NDA0ODxAREhMUFRYXGBkaG0Ec\u002Fa0B\u002FVD9UCBf\u002FVAiXv0LAgAgCSBeIAP9AAIEQRz9qwH9UCJeQQH9rQH9DHd3d3d3d3d3d3d3d3d3d3f9TiBeQQH9qwH9DO7u7u7u7u7u7u7u7u7u7u79Tv1QIF79UCBf\u002FU\u002F9CwIAIF8hXiAHQQRqIgcgHEcNAAsgHCA\u002FRg0DIBIhAyBe\u002FRsDDAILIANFIRggKSAoIAMbIQUMAgsgBSEBIBYhBkEACyEHA0AgB0EcdiEJIAEgBigCACIHQQR2IAkgB0EEdHJyIAdyIgk2AgAgASAJIAYoAgRBHHRyIglBAXZB9+7duwdxIAlBAXRB7t27935xciAJciAHQX9zcTYCACABQQRqIQEgBkEEaiEGIANBCGoiAyAVSA0ACwsgE0EGSQ0AQQAhCUEAIREgFiEBICkgKCAYGyIbIQcgFCAlIBgbIhchBgJAIBVBAEwiDQ0AA0AgAUEEaiEDIAcoAgAhCCABKAIAIQEgByA4BH8gCAUgAUEEdCARQRx2ciABQQR2ciADKAIAQRx0ciABckEDdEGIkaLEeHEgCHILIAYoAgBBf3NxNgIAIAZBBGohBiAHQQRqIQcgASERIAMhASAJQQhqIgkgFUgNAAsgDQ0AIA4gE0EGayAVbEECdGohQUEAIR4gFyERA0BBACEDIBsoAgAiAQRAIBUgHmshQkEAIQdBACEKA0AgByFNIA9BoAFqEBMhBwJAIAogCkEEaiIGIEIgBiAeaiAVSBsiM04iQwRAQQAhBgwBCyARKAIAQX9zISogQSAKIB5yQQJ0aiEYQQAhBkEPIAoiCUECdCJEdCINIQgDQAJAIAEgCHFFDQAgCEGRosSIAXEiJyABcQRAIAdBAXEEQCADICdyIQNBMiAJQQJ0dCAqcSABciEBCyAHQQF2IQcgBkEBaiEGCyABICdBAXQiNHEEQCAHQQFxBEAgAyA0ciEDIAFB9AAgCUECdHQgKnFyIQELIAdBAXYhByAGQQFqIQYLIAEgJ0ECdCI0cQRAIAdBAXEEQCADIDRyIQMgAUHoASAJQQJ0dCAqcXIhAQsgB0EBdiEHIAZBAWohBgsgASAnQQN0IidxRQ0AIAdBAXEEQCADICdyIQMgAUHAASAJQQJ0dCAqcXIhAQsgBkEBaiEGIAdBAXYhBwsgCEEEdCEIIAlBAWoiCSAzSA0ACyADIER2Qf\u002F\u002FA3FFDQAgQw0AA0ACQCADIA1xRQ0AIA1BkaLEiAFxIgkgA3EEQCAYIBgoAgAgB0EfdHIgLXI2AgAgB0EBdiEHIAZBAWohBgsgCUEBdCADcQRAIBggFUECdGoiCCAIKAIAIAdBH3RyIC1yNgIAIAdBAXYhByAGQQFqIQYLIAlBAnQgA3EEQCAYIDpBAnRqIgggCCgCACAHQR90ciAtcjYCACAHQQF2IQcgBkEBaiEGCyAJQQN0IANxRQ0AIBggOUECdGoiCSAJKAIAIAdBH3RyIC1yNgIAIAZBAWohBiAHQQF2IQcLIA1BBHQhDSAYQQRqIRggCkEBaiIKIDNIDQALCyAPIA8oArABIAZrNgKwASAPIA8pA6gBIAatiDcDqAFBASEHQQQhCiBNQQFxRQ0ACyAbIBsoAgQgA0EbdkEOcSADQR12ciADQRx2ciARKAIEQX9zcXI2AgQLIBEoAgAgA3IiA0EDdkGRosSIAXEiAUEEdiABQQR0ciABciEGIB4EQCAFQQRrIgcgBygCACAWQQRrKAIAQX9zIAFBHHRxcjYCAAsgBSAFKAIAIAYgFigCAEF\u002Fc3FyNgIAIAUgBSgCBCAWKAIEQX9zIANBH3ZxcjYCBCAbQQRqIRsgEUEEaiERIAVBBGohBSAWQQRqIRYgHkEIaiIeIBVIDQALCyAXQQAgPRAOGgsgGSAfSA0ACwsCQCAMQQJJDQACQCAfQQNxQQFrIhZBAkkgMXEEQCAVQQBMDQFBASAmQQJrdCECIA4gH0H8\u002F\u002F8HcSAVbEECdGohESAlIBQgH0EEcRshBSAmQQFrIQhBACEKIBVBDGwhDCAVQQN0IQsDQCAPQYABahAqIQdBACEBIAUoAgAiAwRAIBEgCkECdGohAUEPIQZBACEJA0ACQCADIAZxRQ0AIAZBkaLEiAFxIg0gA3EEQCABIAEoAgAgB0F\u002Fc0EBcSAIdHMgAnI2AgAgB0EBdiEHCyANQQF0IANxBEAgASAVQQJ0aiIdIB0oAgAgB0F\u002Fc0EBcSAIdHMgAnI2AgAgB0EBdiEHCyANQQJ0IANxBEAgASALaiIdIB0oAgAgB0F\u002Fc0EBcSAIdHMgAnI2AgAgB0EBdiEHCyANQQN0IANxRQ0AIAEgDGoiDSANKAIAIAdBf3NBAXEgCHRzIAJyNgIAIAdBAXYhBwsgAUEEaiEBIAZBBHQhBiAJQQFqIglBCEcNAAsgA2khAQsgBUEEaiEFIA8gDygCkAEgAWs2ApABIA8gDykDiAEgAa2INwOIASAKQQhqIgogFUgNAAsLIBZBAUsNACAVQQBMDQAgJSAUIB9BBHEiARshCSAoICkgARshAkEAIQMCfwJAICsgJEF\u002Fc2oiAUE4SQ0AIAIgCSABQQF2Qfz\u002F\u002F\u002F8HcSIGQQRqIgdqSSAJIAIgB2oiB0lxDQAgAiAGIAlqQQhqSSAJQQRqIAdJcQ0AIAFBA3ZBAWoiDUH8\u002F\u002F\u002F\u002FA3EiCEEDdCEDIAkgCEECdCIBaiEGIAEgAmohAf0MAAAAAAAAAAAAAAAAAAAAACFeQQAhBwNAIAIgB0ECdCIWaiIRIAkgFmoiFv0AAgAiX0EE\u002Fa0BIF9BBP2rASBeIF\u002F9DQwNDg8QERITFBUWFxgZGhtBHP2tAf1Q\u002FVAgX\u002F1QIl79CwIAIBEgXiAW\u002FQACBEEc\u002FasB\u002FVAiXkEB\u002Fa0B\u002FQx3d3d3d3d3d3d3d3d3d3d3\u002FU4gXkEB\u002FasB\u002FQzu7u7u7u7u7u7u7u7u7u7u\u002FU79UCBe\u002FVAgX\u002F1P\u002FQsCACBfIV4gB0EEaiIHIAhHDQALIAggDUYNAiBe\u002FRsDDAELIAIhASAJIQZBAAshBwNAIAdBHHYhCSABIAYoAgAiB0EEdiAJIAdBBHRyciAHciIJNgIAIAEgCSAGKAIEQRx0ciIJQQF2Qffu3bsHcSAJQQF0Qe7du\u002Fd+cXIgCXIgB0F\u002Fc3E2AgAgAUEEaiEBIAZBBGohBiADQQhqIgMgFUgNAAsLIB8gH0EBakEDcWtBA2tBACAfQQZKGyIRIB9ODQBBAyAmQQJrdCEZICsgJEF\u002Fc2oiAUEDdiIDQQJ0IitBBGohHSADQQFqIgNB\u002FP\u002F\u002F\u002FwNxIhJBAnQhISASQQN0IRYgFUEMbCEsIBVBA3QhLSABQRhJISYgAyASRiEbA0ACQAJAAkACQAJ\u002FAkAgHyARayIBQQFrIgNBA08EQEF\u002FIRcgAUEFSA0FIBVBAEwNBiAlIBQgEUEEcSIBGyECICggKSABGyEJIDgEQEEAIQYgJg0EIAIgCSAdakkgAiAdaiAJS3ENBCACICFqIQEgCSAhaiEHA0AgCSAGQQJ0IgNqIgggCP0AAgAgAiADav0AAgD9T\u002F0LAgAgBkEEaiIGIBJHDQALIBYhBiAbDQYMBQsgFCAlIAEbIQ1BACEDICYNASAJIA0gHWpJIA0gCSAdaiIBSXENASAJIA0gK2pBCGpJIA1BBGogAUlxDQEgCSACIB1qSSABIAJLcQ0BIAIgIWohCCAJICFqIQEgDSAhaiEH\u002FQwAAAAAAAAAAAAAAAAAAAAAIV5BACEGA0AgCSAGQQJ0IgNqIgUgAyANaiIM\u002FQACACJfQQT9rQEgX0EE\u002FasBIF4gX\u002F0NDA0ODxAREhMUFRYXGBkaG0Ec\u002Fa0B\u002FVD9UCAM\u002FQACBEEc\u002FasB\u002FVAgX\u002F1QQQP9qwH9DIiIiIiIiIiIiIiIiIiIiIj9TiAF\u002FQACAP1QIAIgA2r9AAIA\u002FU\u002F9CwIAIF8hXiAGQQRqIgYgEkcNAAsgGw0FIBYhAyBe\u002FRsDDAILIANBAnRB7J0BaigCACEXDAQLIA0hByAJIQEgAiEIQQALIQYDQCAGQRx2IQkgASABKAIAIAcoAgAiBkEEdiAJIAZBBHRyciAHKAIEQRx0ciAGckEDdEGIkaLEeHFyIAgoAgBBf3NxNgIAIAhBBGohCCABQQRqIQEgB0EEaiEHIANBCGoiAyAVSA0ACwwCCyAJIQcgAiEBCwNAIAcgBygCACABKAIAQX9zcTYCACABQQRqIQEgB0EEaiEHIAZBCGoiBiAVSA0ACwsgFUEATA0AICUgFCARQQRxIgEbIQogKCApIAEbIQIgFCAlIAEbIRMgKSAoIAEbIR4gDiARIBVsQQJ0aiEuQQAhBQNAQQAhAyACKAIAIBdxIgEEQCAVIAVrISpBACEHQQAhDQNAIAchTiAPQaABahATIQcCQCANIA1BBGoiBiAqIAUgBmogFUgbIiROIicEQEEAIQYMAQsgFyAKKAIAQX9zcSEYIC4gBSANckECdGohC0EAIQZBDyANIglBAnQiHHQiICEIA0ACQCABIAhxRQ0AIAhBkaLEiAFxIiIgAXEEQCAHQQFxBEAgAyAiciEDQTIgCUECdHQgGHEgAXIhAQsgB0EBdiEHIAZBAWohBgsgASAiQQF0IjFxBEAgB0EBcQRAIAMgMXIhAyABQfQAIAlBAnR0IBhxciEBCyAHQQF2IQcgBkEBaiEGCyABICJBAnQiMXEEQCAHQQFxBEAgAyAxciEDIAFB6AEgCUECdHQgGHFyIQELIAdBAXYhByAGQQFqIQYLIAEgIkEDdCIicUUNACAHQQFxBEAgAyAiciEDIAFBwAEgCUECdHQgGHFyIQELIAZBAWohBiAHQQF2IQcLIAhBBHQhCCAJQQFqIgkgJEgNAAsgAyAcdkH\u002F\u002FwNxRQ0AICcNAANAAkAgAyAgcUUNACAgQZGixIgBcSIJIANxBEAgCyALKAIAIAdBH3RyIBlyNgIAIAdBAXYhByAGQQFqIQYLIAlBAXQgA3EEQCALIBVBAnRqIgggCCgCACAHQR90ciAZcjYCACAHQQF2IQcgBkEBaiEGCyAJQQJ0IANxBEAgCyAtaiIIIAgoAgAgB0EfdHIgGXI2AgAgB0EBdiEHIAZBAWohBgsgCUEDdCADcUUNACALICxqIgkgCSgCACAHQR90ciAZcjYCACAGQQFqIQYgB0EBdiEHCyAgQQR0ISAgC0EEaiELIA1BAWoiDSAkSA0ACwsgDyAPKAKwASAGazYCsAEgDyAPKQOoASAGrYg3A6gBQQEhB0EEIQ0gTkEBcUUNAAsgAiACKAIEIANBG3ZBDnEgA0EddnIgA0EcdnIgCigCBEF\u002Fc3FyNgIECyAKKAIAIANyIgNBA3ZBkaLEiAFxIgFBBHYgAUEEdHIgAXIhBiAFBEAgHkEEayIHIAcoAgAgE0EEaygCAEF\u002FcyABQRx0cXI2AgALIB4gHigCACAGIBMoAgBBf3NxcjYCACAeIB4oAgQgEygCBEF\u002FcyADQR92cXI2AgQgAkEEaiECIApBBGohCiAeQQRqIR4gE0EEaiETIAVBCGoiBSAVSA0ACwsgEUEEaiIRIB9IDQALC0EBIQcgH0EATA0DIBVBAEwNAyAVQfz\u002F\u002F\u002F8HcSIGQQJ0IQIgFUEESSEIQQAhCQNAIA4gCSAVbEECdGohAwJAAkAgCARAIAMhB0EAIQEMAQsgAiADaiEHQQAhAQNAIAMgAUECdGoiDSAN\u002FQACACJe\u002FQz\u002F\u002F\u002F9\u002F\u002F\u002F\u002F\u002Ff\u002F\u002F\u002F\u002F3\u002F\u002F\u002F\u002F9\u002F\u002FU4iX\u002F2hASBfIF79DAAAAAAAAAAAAAAAAAAAAAD9Of1S\u002FQsCACABQQRqIgEgBkcNAAsgBiIBIBVGDQELA0AgB0EAIAcoAgAiA0H\u002F\u002F\u002F\u002F\u002FB3EiDWsgDSADQQBIGzYCACAHQQRqIQcgAUEBaiIBIBVHDQALC0EBIQcgCUEBaiIJIB9HDQALDAMLICFFDQAgDyAaKAIYNgI0IA8gFjYCMCAdQQFB3cYAIA9BMGoQCAwBCyAPIAE2AhQgDyAWNgIQIB1BAUHdxgAgD0EQahAIQQAhBwwBC0EAIQcLIA9BsAJqJAAgBw0BDAMLIAQgAUEJdEHgqQFqNgJsAn8gBCgCdCEBAkACQCAaKAIQIBooAghrIgUgGigCFCAaKAIMayIJbCIDIAQoAoQBSwRAIAEQCSAEIANBAnQQFiIBNgJ0QQAgAUUNAxogBCADNgKEAQwBCyABRQ0BCyABQQAgA0ECdBAOGgsgBCgCeCEBAkAgBUECaiIGIAlBA2pBAnYiDEECamwiAyAEKAKIAU0EQCADQQJ0IQgMAQsgARAJIAQgA0ECdCIIEBYiATYCeCABDQBBAAwBCyAEIAM2AogBIAFBACAIEA4aAkAgBkUNACAEKAJ4IgchAQJAIAZBBE8EQCAHIAZBfHEiDUECdGohAUEAIQgDQCAHIAhBAnRq\u002FQwAACBJAAAgSQAAIEkAACBJ\u002FQsCACAIQQRqIgggDUcNAAsgBiANRg0BCwNAIAFBgICAyQQ2AgAgAUEEaiEBIA1BAWoiDSAGRw0ACwsgByAMQQFqIAZsQQJ0aiEDQQAhDQJAAkAgBkEESQRAIAMhAQwBCyADIAZBfHEiDUECdGohAUEAIQgDQCADIAhBAnRq\u002FQwAACBJAAAgSQAAIEkAACBJ\u002FQsCACAIQQRqIgggDUcNAAsgBiANRg0BCwNAIAFBgICAyQQ2AgAgAUEEaiEBIA1BAWoiDSAGRw0ACwsgCUEDcSIBRQ0AIAZFDQBBgICAyARBgICAwARBgICAgAQgAUECRhsgAUEBRhshCyAHIAYgDGxBAnRqIQNBACENAkAgBkEESQRAIAMhAQwBCyADIAZBfHEiDUECdGohASAL\u002FREhX0EAIQgDQCADIAhBAnRqIF\u002F9CwIAIAhBBGoiCCANRw0ACyAGIA1GDQELA0AgASALNgIAIAFBBGohASANQQFqIg0gBkcNAAsLIAQgCTYCgAEgBCAFNgJ8QQELRQ0CIBooAhwgEWoiGUEfTgRAICFFDQIgIyAZNgIQIB1BAkHWwAAgI0EQahAIDAMLIAQQU0EAIQEgBEHAqQE2AmQgBEHgngE2AmAgBEGAnwE2AhwCQAJAAkACQCAaKAI0IgdBAUsNACAEKAKQAUUNAiAHDQAMAQsgGigCBCEDIAdBBE8EQCAHQXxxIQJBACEGA0AgAyAGQQN0aiIBQRxqIAFBFGogAUEMaiAB\u002FQkCBP1WAgAB\u002FVYCAAL9VgIAAyBe\u002Fa4BIV4gBkEEaiIGIAJHDQALIF4gXiBe\u002FQ0ICQoLDA0ODwABAgMAAQID\u002Fa4BIl4gXiBe\u002FQ0EBQYHAAECAwABAgMAAQID\u002Fa4B\u002FRsAIQEgAiAHRg0BCwNAIAMgAkEDdGooAgQgAWohASACQQFqIgIgB0cNAAsLIAFBAmoiAyAEKAKYAUsEQCAEKAKUASADEBAiBkUNBSAEIAY2ApQBIAEgBmpBADsAACAEIAM2ApgBIBooAjQhBwsgBCgClAEhHiAHRQ0BIBooAgQhBkEAIQJBACEBA0AgAiAeaiAGIAFBA3QiA2oiBigCACAGKAIEEAsaIBooAgQiBiADaigCBCACaiECIAFBAWoiASAaKAI0SQ0ACwwBCyAHQQFHDQEgGigCBCgCACEeCyAaKAI8IgEEQCAEKAJ0ISwgBCABNgJ0CyAaKAIsBEAgFkEIcSElIARBHGohDyAWQQFxIS0gFkECcUUhLkECIR8DQCAeIChqIQEgGigCACApQRhsaiIgKAIAIQMCQCAtIB9BAkkgGSAaKAIcQQRrTHFxIiIEQCAEIAE2AhQgBCABIANqIgM2AhggBCADLwAAOwFwIANB\u002FwE6AAAgBCgCGEH\u002FAToAASAEQQA2AgggBEEANgIAIAQgATYCEAwBCyAEIAE2AhQgBCABIANqIgY2AhggBCAGLwAAOwFwIAZB\u002FwE6AAAgBCgCGEH\u002FAToAASAEIARBHGo2AmggBCABNgIQIARBADYCDCAEIAMEfyABLQAAQRB0BUGAgPwHCyIDNgIAQQEhBiABQQFqIQkgAS0AASEHAn8gAS0AAEH\u002FAUYEQCAHQZABTwRAIARBATYCDCADQYD+A3IMAgsgBCAJNgIQQQAhBiAHQQl0IANqDAELIAQgCTYCECAHQQh0IANyCyEBIAQgBjYCCCAEQYCAAjYCBCAEIAFBB3Q2AgALICAoAgAhKgJAIBlBAEwNACAgKAIIRQ0AICIgLnIhJ0EAISYDQAJAAkACQAJAAkAgH0EBaw4CAQIACyAiBEBBASAZdCIBQQF2IAFyIREgBCgCfCIFQQJ0Ig0gBCgCeGpBDGohASAEKAJ0IQZBACEIIAQoAoABIgNBBE8EQCAFRQ0FIAVBA2whAiAFQQF0IQxBACARayEJA0AgDEECdCELQQAhAwNAAkAgASIHKAIAIgFFDQACQCABQZCAgAFxDQAgAUHvA3FFDQAgBCgCACEBAkAgBCgCCCIQDQAgAUH\u002FAUYhCiAEKAIQIhAtAAAhAQJAIApFBEAgBCABNgIAIAQgEEEBajYCEAwBCyABQY8BTQRAIAQgATYCACAEIBBBAWo2AhBBByEQDAILQf8BIQEgBEH\u002FATYCAAtBCCEQCyAEIBBBAWsiEDYCCAJAIAEgEHZBAXFFDQACQCAQDQAgAUH\u002FAUYhCiAEKAIQIhAtAAAhAQJAIApFBEAgBCABNgIAIAQgEEEBajYCEAwBCyABQY8BTQRAIAQgATYCACAEIBBBAWo2AhBBByEQDAILQf8BIQEgBEH\u002FATYCAAtBCCEQCyAEIBBBAWsiEDYCCCAGIAkgESABIBB2QQFxIhAbNgIAIAQoAnwhASAHQQRrIgogCigCAEEgcjYCACAHIAcoAgRBCHI2AgQgByAHKAIAIBBBE3RyQRByNgIAICUNACAHQX4gAWtBAnRqIgEgASgCBEGAgAJyNgIEIAEgASgCACAQQR90ckGAgARyNgIAIAFBBGsiASABKAIAQYCACHI2AgALIAcgBygCAEGAgIABciIBNgIACwJAIAFBgIGACHENACABQfgecUUNACAEKAIAIQECQCAEKAIIIhANACABQf8BRiEKIAQoAhAiEC0AACEBAkAgCkUEQCAEIAE2AgAgBCAQQQFqNgIQDAELIAFBjwFNBEAgBCABNgIAIAQgEEEBajYCEEEHIRAMAgtB\u002FwEhASAEQf8BNgIAC0EIIRALIAQgEEEBayIQNgIIIAcCfyABIBB2QQFxRQRAIAcoAgAMAQsCQCAQDQAgAUH\u002FAUYhCiAEKAIQIhAtAAAhAQJAIApFBEAgBCABNgIAIAQgEEEBajYCEAwBCyABQY8BTQRAIAQgATYCACAEIBBBAWo2AhBBByEQDAILQf8BIQEgBEH\u002FATYCAAtBCCEQCyAEIBBBAWsiEDYCCCAGIA1qIAkgESABIBB2QQFxIgEbNgIAIAdBBGsiECAQKAIAQYACcjYCACAHIAcoAgRBwAByNgIEIAcoAgAgAUEWdHJBgAFyC0GAgIAIciIBNgIACwJAIAFBgIiAwABxDQAgAUHA9wFxRQ0AIAQoAgAhAQJAIAQoAggiEA0AIAFB\u002FwFGIQogBCgCECIQLQAAIQECQCAKRQRAIAQgATYCACAEIBBBAWo2AhAMAQsgAUGPAU0EQCAEIAE2AgAgBCAQQQFqNgIQQQchEAwCC0H\u002FASEBIARB\u002FwE2AgALQQghEAsgBCAQQQFrIhA2AgggBwJ\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\u002FASEBIARB\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\u002F\u002F\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\u002F\u002F\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\u002F\u002F\u002F+2e3E2AgALIAhBBGohAyALQQRqIQsgGEEBaiIYIBRHDQALIAhBDGohAyALIBtBAnRqIQsgEUEEaiIRIAQoAoABIgZBfHFJDQALDAELQQQgBkF8cSIDIANBBE0bQQFrIgNBfHFBBGohESAHIANBAXRBeHFqQRRqIQMLIAQgBTYCCCAEIAE2AgQgBCACNgIAIAQgCTYCaCAURQ0EIAYgEU0NBANAQQAhBSARIAQoAoABRwRAA0AgBCADIAsgBSAUbEECdGogDiAFQQAQUSAFQQFqIgUgBCgCgAEgEWtJDQALCyADIAMoAgBB\u002F\u002F\u002F\u002FtntxNgIAIAtBBGohCyADQQRqIQMgF0EBaiIXIBRHDQALDAQLQQQgBkF8cSIDIANBBE0bQQFrIgNBfHFBBGohESAHIANBAXRBeHFqQRRqIQMLIAQgBTYCCCAEIAE2AgQgBCACNgIAIAQgCTYCaCAURQ0CIAYgEU0NAgNAQQAhBSARIAQoAoABRwRAA0AgBCADIAsgBSAUbEECdGogDiAFQQEQUSAFQQFqIgUgBCgCgAEgEWtJDQALCyADIAMoAgBB\u002F\u002F\u002F\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\u002F\u002F\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\u002FRsDQQJt\u002FRwD\u002FQsCACAEQQRqIgQgAUcNAAsgASAGRg0GCwNAIAIgAUECdGoiAyADKAIAQQJtNgIAIAFBAWoiASAGRw0ACwwFCyAGRQ0EIDAqAiBDAAAAP5QhZkEAIQQCQCAGQQRJBEAgAiEBDAELIAIgBkF8cSIEQQJ0aiEBIGb9EyFeQQAhAwNAIAIgA0ECdGoiByBeIAf9AAIA\u002FfoB\u002FeYB\u002FQsCACADQQRqIgMgBEcNAAsgBCAGRg0FCwNAIAEgZiABKAIAspQ4AgAgAUEEaiEBIARBAWoiBCAGRw0ACwwECyA2IDVrIREgLygCFEEBRw0CIBZFDQMgMigCJCIGIAMgEWwiA0ECdGogCEECdGohCSANQXxxIgxBAWsiAUEEcSELIDYgDSA1amtBAnQhGiABQQJ2QQFqQf7\u002F\u002F\u002F8HcSEdIAMgCGpBAnQgBmogAmshCkEAIQggAUEDRyEUA0BBACEBAkAgDEUNACAIIA1sIQMgCSAIIBFsQQJ0aiEGQQAhByAUBEADQCAGIAFBAnRqIAIgASADakECdGr9AAIAIl79GwBBAm39ESBe\u002FRsBQQJt\u002FRwBIF79GwJBAm39HAIgXv0bA0ECbf0cA\u002F0LAgAgBiABQQRyIgRBAnRqIAIgAyAEakECdGr9AAIAIl79GwBBAm39ESBe\u002FRsBQQJt\u002FRwBIF79GwJBAm39HAIgXv0bA0ECbf0cA\u002F0LAgAgAUEIaiEBIAdBAmoiByAdRw0ACwsgCw0AIAYgAUECdGogAiABIANqQQJ0av0AAgAiXv0bAEECbf0RIF79GwFBAm39HAEgXv0bAkECbf0cAiBe\u002FRsDQQJt\u002FRwD\u002FQsCACABQQRqIQELAkAgASANTw0AIAggDWwhAyAJIAggEWxBAnRqIQcCQCANIAFrIhBBBEkEQCABIQQMAQsgCiAIIBpsakEQSQRAIAEhBAwBCyABIBBBfHEiBWohBEEAIQYDQCAHIAEgBmoiIUECdGogAiADICFqQQJ0av0AAgAiXv0bAEECbf0RIF79GwFBAm39HAEgXv0bAkECbf0cAiBe\u002FRsDQQJt\u002FRwD\u002FQsCACAGQQRqIgYgBUcNAAsgBSAQRg0BCyAEQQFqIQEgDSAEa0EBcQRAIAcgBEECdGogAiADIARqQQJ0aigCAEECbTYCACABIQQLIAEgDUYNAANAIAcgBEECdGogAiADIARqQQJ0aigCAEECbTYCACAHIARBAWoiAUECdGogAiABIANqQQJ0aigCAEECbTYCACAEQQJqIgQgDUcNAAsLIAhBAWoiCCAWRw0ACwwDCyAjIBk2AgAgHUECQdbAACAjEAgLIBAoAgBBADYCAAwBCyAWRQ0AIA1FDQAgMigCJCADIBFsQQJ0aiAIQQJ0aiEHIA1BfHEiA0ECdCEGIDAqAiBDAAAAP5QiZv0TIV5BACEQIA1BBEkhCANAAkACQCAIBEAgAiEJIAchAUEAIQQMAQsgBiAHaiEBIAIgBmohCUEAIQQDQCAHIARBAnQiBWogXiACIAVq\u002FQACAP36Af3mAf0LAgAgBEEEaiIEIANHDQALIAkhAiADIgQgDUYNAQsgCSECA0AgASBmIAIoAgCylDgCACABQQRqIQEgAkEEaiECIARBAWoiBCANRw0ACwsgByARQQJ0aiEHIBBBAWoiECAWRw0ACwsgABAJICNB4ABqJAAL1gQBCX8gACgCLEEITwRAIAAoAighBUEIIQoDQCAAKAIMQQV0IQggACgCACEEIAAoAiQhAwJAIAAoAhQiBiAAKAIQIgFNDQAgBCAIaiEHIAFBAWohAiAGIAFrQQFxBEAgByABQQZ0aiIJIAUgASADbEECdGoiAf0AAgD9CwIAIAkgAf0AAhD9CwIQIAIhAQsgAiAGRg0AA0AgByABQQZ0aiICIAUgASADbEECdGoiCf0AAgD9CwIAIAIgCf0AAhD9CwIQIAcgAUEBaiICQQZ0aiIJIAUgAiADbEECdGoiAv0AAhD9CwIQIAkgAv0AAgD9CwIAIAFBAmoiASAGRw0ACwsCQCAAKAIcIgYgACgCGCIBTQ0AIAQgCGtBIGohByAFIAAoAgggA2xBAnRqIQggAUEBaiECIAYgAWtBAXEEQCAHIAFBBnRqIgQgCCABIANsQQJ0aiIB\u002FQACAP0LAgAgBCAB\u002FQACEP0LAhAgAiEBCyACIAZGDQADQCAHIAFBBnRqIgIgCCABIANsQQJ0aiIE\u002FQACAP0LAgAgAiAE\u002FQACEP0LAhAgByABQQFqIgJBBnRqIgQgCCACIANsQQJ0aiIC\u002FQACEP0LAhAgBCAC\u002FQACAP0LAgAgAUECaiIBIAZHDQALCyAAEBxBACEBIAAoAiAEQANAIAUgACgCJCABbEECdGoiAiAAKAIAIAFBBXRqIgP9AAIA\u002FQsCACACIAP9AAIQ\u002FQsCECABQQFqIgEgACgCIEkNAAsLIAVBIGohBSAKQQhqIgogACgCLE0NAAsLIAAoAgAQCSAAEAkL9w0BJX8gACgCLEEITwRAIAAoAiQiCkEFdCEeIApBB2whFiAKQQZsIRcgCkEFbCEYIApBA2whGSAKQQF0IRogACgCKCIBIApBHGxqIR8gASAKQRhsaiEgIAEgCkEUbGohISABIApBBHRqISIgASAKQQxsaiEjIAEgCkEDdCIkaiElIAEgCkECdCIbaiEmQQghHANAIAAgASAAKAIkQQgQNCAAEBwCQCAAKAIgIgtFDQAgHSAebCEIIAAoAgAhBkEAIQQCQAJAIAtB6AJJDQAgBkEMaiIOIAtBAWsiAkEFdCIDaiAOSQ0AIAZBCGoiDyADaiAPSQ0AIAMgBmogBkkNACAGQQRqIhAgA2ogEEkNACACQf\u002F\u002F\u002Fz9LDQAgASAIICZqIgMgC0ECdCIFaiIMSSADIAEgBWoiB0lxDQAgASAIICVqIgIgBWoiDUkgAiAHSXENACABIAUgCCAjaiIJaiIFSSAHIAlLcQ0AIAYgB0kgASAGIAtBBXRqIhFBHGsiEklxDQAgASARQRhrIhNJIAcgEEtxDQAgASARQRRrIhRJIAcgD0txDQAgByAOSyABIBFBEGsiB0lxDQAgAyANSSACIAxJcQ0AIAMgBUkgCSAMSXENACADIBJJIAYgDElxDQAgAyATSSAMIBBLcQ0AIAMgFEkgDCAPS3ENACADIAdJIAwgDktxDQAgAiAFSSAJIA1JcQ0AIAIgEkkgBiANSXENACACIBNJIA0gEEtxDQAgAiAUSSANIA9LcQ0AIAIgB0kgDSAOS3ENACAJIBJJIAUgBktxDQAgCSATSSAFIBBLcQ0AIAkgFEkgBSAPS3ENACAHIAlLIAUgDktxDQAgC0H8\u002F\u002F\u002F\u002FAHEhBEEAIQMDQCABIANBAnRqIAYgA0EFdGoiAv0JAgAgAioCIP0gASACQUBrKgIA\u002FSACIAIqAmD9IAP9CwIAIAEgAyAKakECdGogAv0JAgQgAioCJP0gASACKgJE\u002FSACIAIqAmT9IAP9CwIAIAEgAyAaakECdGogAv0JAgggAioCKP0gASACKgJI\u002FSACIAIqAmj9IAP9CwIAIAEgAyAZakECdGogAv0JAgwgAioCLP0gASACKgJM\u002FSACIAIqAmz9IAP9CwIAIANBBGoiAyAERw0ACyAEIAtGDQELA0AgASAEQQJ0aiAGIARBBXRqIgMqAgA4AgAgASAEIApqQQJ0aiADKgIEOAIAIAEgBCAaakECdGogAyoCCDgCACABIAQgGWpBAnRqIAMqAgw4AgAgBEEBaiIEIAtHDQALCyAAKAIAIQZBACEEAkAgC0HcAEkNACAGQRxqIg8gC0EBayICQQV0IgNqIA9JDQAgBkEYaiIQIANqIBBJDQAgBkEQaiIRIANqIBFJDQAgBkEUaiISIANqIBJJDQAgAkH\u002F\u002F\u002F8\u002FSw0AIAggImoiAyAIICFqIgIgC0ECdCIFaiIMSSACIAMgBWoiB0lxDQAgAyAIICBqIgkgBWoiDUkgByAJS3ENACADIAggH2oiCCAFaiIFSSAHIAhLcQ0AIAMgBiALQQV0aiIOQQxrIhNJIAcgEUtxDQAgAyAOQQhrIhRJIAcgEktxDQAgAyAOQQRrIhVJIAcgEEtxDQAgAyAOSSAHIA9LcQ0AIAIgDUkgCSAMSXENACACIAVJIAggDElxDQAgAiATSSAMIBFLcQ0AIAIgFEkgDCASS3ENACACIBVJIAwgEEtxDQAgAiAOSSAMIA9LcQ0AIAggDUkgBSAJS3ENACAJIBNJIA0gEUtxDQAgCSAUSSANIBJLcQ0AIAkgFUkgDSAQS3ENACAJIA5JIA0gD0txDQAgCCATSSAFIBFLcQ0AIAggFEkgBSASS3ENACAIIBVJIAUgEEtxDQAgCCAOSSAFIA9LcQ0AIAtB\u002FP\u002F\u002F\u002FwBxIQRBACEDA0AgASADIBtqQQJ0aiAGIANBBXRqIgL9CQIQIAIqAjD9IAEgAioCUP0gAiACKgJw\u002FSAD\u002FQsCACABIAMgGGpBAnRqIAL9CQIUIAIqAjT9IAEgAioCVP0gAiACKgJ0\u002FSAD\u002FQsCACABIAMgF2pBAnRqIAL9CQIYIAIqAjj9IAEgAioCWP0gAiACKgJ4\u002FSAD\u002FQsCACABIAMgFmpBAnRqIAL9CQIcIAIqAjz9IAEgAioCXP0gAiACKgJ8\u002FSAD\u002FQsCACADQQRqIgMgBEcNAAsgBCALRg0BCwNAIAEgBCAbakECdGogBiAEQQV0aiIDKgIQOAIAIAEgBCAYakECdGogAyoCFDgCACABIAQgF2pBAnRqIAMqAhg4AgAgASAEIBZqQQJ0aiADKgIcOAIAIARBAWoiBCALRw0ACwsgHUEBaiEdIAEgJEECdGohASAcQQhqIhwgACgCLE0NAAsLIAAoAgAQCSAAEAkLcwECfyAAKAIcIgFBCGoiAyAAKAIgIgJNBEADQCAAIAAoAhggAUECdGogACgCFEEIECsgAyIBQQhqIgMgACgCICICTQ0ACwsgASACSQRAIAAgACgCGCABQQJ0aiAAKAIUIAIgAWsQKwsgACgCABAJIAAQCQtEACAAKAIcIgEgACgCIEkEQANAIAAgACgCGCAAKAIUIAFsQQJ0ahBWIAFBAWoiASAAKAIgSQ0ACwsgACgCABAJIAAQCQuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGEAsaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEEAsaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACC54FAgZ+BH8gASABKAIAQQdqQXhxIgFBEGo2AgAgACELIAEpAwAhAyABKQMIIQcjAEEgayIIJAAgB0L\u002F\u002F\u002F\u002F\u002F\u002F\u002F8\u002FgyEEAn4gB0IwiEL\u002F\u002FwGDIgWnIgpBgfgAa0H9D00EQCAEQgSGIANCPIiEIQIgCkGA+ABrrSEFAkAgA0L\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002Fw+DIgNCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyADQoCAgICAgICACFINACACQgGDIAJ8IQILQgAgAiACQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8HViIAGyECIACtIAV8DAELAkAgAyAEhFANACAFQv\u002F\u002FAVINACAEQgSGIANCPIiEQoCAgICAgIAEhCECQv8PDAELQv8PIApB\u002FocBSw0AGkIAQYD4AEGB+AAgBVAiARsiACAKayIJQfAASg0AGiADIQIgBCAEQoCAgICAgMAAhCABGyIGIQQCQEGAASAJayIBQcAAcQRAIAMgAUFAaq2GIQRCACECDAELIAFFDQAgBCABrSIFhiACQcAAIAFrrYiEIQQgAiAFhiECCyAIIAI3AxAgCCAENwMYAkAgCUHAAHEEQCAGIAlBQGqtiCEDQgAhBgwBCyAJRQ0AIAZBwAAgCWuthiADIAmtIgKIhCEDIAYgAoghBgsgCCADNwMAIAggBjcDCCAIKQMIQgSGIAgpAwAiAkI8iIQhAwJAIAAgCkcgCCkDECAIKQMYhEIAUnGtIAJC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Pg4QiAkKBgICAgICAgAhaBEAgA0IBfCEDDAELIAJCgICAgICAgIAIUg0AIANCAYMgA3whAwsgA0KAgICAgICACIUgAyADQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8HViIAGyECIACtCyEDIAhBIGokACALIAdCgICAgICAgICAf4MgA0I0hoQgAoS\u002FOQMAC4MYAxN\u002FAXwDfiMAQbAEayIMJAAgDEEANgIsAkAgAb0iGkIAUwRAQQEhEUG6CCETIAGaIgG9IRoMAQsgBEGAEHEEQEEBIRFBvQghEwwBC0HACEG7CCAEQQFxIhEbIRMgEUUhFQsCQCAaQoCAgICAgID4\u002FwCDQoCAgICAgID4\u002FwBRBEAgAEEgIAIgEUEDaiIDIARB\u002F\u002F97cRAUIAAgEyAREBEgAEG3CUH2CiAFQSBxIgUbQaAKQfoKIAUbIAEgAWIbQQMQESAAQSAgAiADIARBgMAAcxAUIAMgAiACIANIGyEKDAELIAxBEGohEgJAAn8CQCABIAxBLGoQXyIBIAGgIgFEAAAAAAAAAABiBEAgDCAMKAIsIgZBAWs2AiwgBUEgciIOQeEARw0BDAMLIAVBIHIiDkHhAEYNAiAMKAIsIQlBBiADIANBAEgbDAELIAwgBkEdayIJNgIsIAFEAAAAAAAAsEGiIQFBBiADIANBAEgbCyELIAxBMGpBoAJBACAJQQBOG2oiDSEHA0AgBwJ\u002FIAFEAAAAAAAA8EFjIAFEAAAAAAAAAABmcQRAIAGrDAELQQALIgM2AgAgB0EEaiEHIAEgA7ihRAAAAABlzc1BoiIBRAAAAAAAAAAAYg0ACwJAIAlBAEwEQCAJIQMgByEGIA0hCAwBCyANIQggCSEDA0BBHSADIANBHU8bIQMCQCAHQQRrIgYgCEkNACADrSEbQgAhGgNAIAYgGkL\u002F\u002F\u002F\u002F\u002FD4MgBjUCACAbhnwiHEKAlOvcA4AiGkKA7JSjDH4gHHw+AgAgBkEEayIGIAhPDQALIBqnIgZFDQAgCEEEayIIIAY2AgALA0AgCCAHIgZJBEAgBkEEayIHKAIARQ0BCwsgDCAMKAIsIANrIgM2AiwgBiEHIANBAEoNAAsLIANBAEgEQCALQRlqQQluQQFqIQ8gDkHmAEYhEANAQQlBACADayIDIANBCU8bIQoCQCAGIAhNBEAgCCgCAEVBAnQhBwwBC0GAlOvcAyAKdiEUQX8gCnRBf3MhFkEAIQMgCCEHA0AgByADIAcoAgAiFyAKdmo2AgAgFiAXcSAUbCEDIAdBBGoiByAGSQ0ACyAIKAIARUECdCEHIANFDQAgBiADNgIAIAZBBGohBgsgDCAMKAIsIApqIgM2AiwgDSAHIAhqIgggEBsiByAPQQJ0aiAGIAYgB2tBAnUgD0obIQYgA0EASA0ACwtBACEDAkAgBiAITQ0AIA0gCGtBAnVBCWwhA0EKIQcgCCgCACIKQQpJDQADQCADQQFqIQMgCiAHQQpsIgdPDQALCyALIANBACAOQeYARxtrIA5B5wBGIAtBAEdxayIHIAYgDWtBAnVBCWxBCWtIBEAgDEEwakGEYEGkYiAJQQBIG2ogB0GAyABqIgpBCW0iD0ECdGohCUEKIQcgD0F3bCAKaiIKQQdMBEADQCAHQQpsIQcgCkEBaiIKQQhHDQALCwJAIAkoAgAiECAQIAduIg8gB2wiCkYgCUEEaiIUIAZGcQ0AIBAgCmshEAJAIA9BAXFFBEBEAAAAAAAAQEMhASAHQYCU69wDRw0BIAggCU8NASAJQQRrLQAAQQFxRQ0BC0QBAAAAAABAQyEBC0QAAAAAAADgP0QAAAAAAADwP0QAAAAAAAD4PyAGIBRGG0QAAAAAAAD4PyAQIAdBAXYiFEYbIBAgFEkbIRkCQCAVDQAgEy0AAEEtRw0AIBmaIRkgAZohAQsgCSAKNgIAIAEgGaAgAWENACAJIAcgCmoiAzYCACADQYCU69wDTwRAA0AgCUEANgIAIAggCUEEayIJSwRAIAhBBGsiCEEANgIACyAJIAkoAgBBAWoiAzYCACADQf+T69wDSw0ACwsgDSAIa0ECdUEJbCEDQQohByAIKAIAIgpBCkkNAANAIANBAWohAyAKIAdBCmwiB08NAAsLIAlBBGoiByAGIAYgB0sbIQYLA0AgBiIHIAhNIgpFBEAgBkEEayIGKAIARQ0BCwsCQCAOQecARwRAIARBCHEhCQwBCyADQX9zQX8gC0EBIAsbIgYgA0ogA0F7SnEiCRsgBmohC0F\u002FQX4gCRsgBWohBSAEQQhxIgkNAEF3IQYCQCAKDQAgB0EEaygCACIORQ0AQQohCkEAIQYgDkEKcA0AA0AgBiIJQQFqIQYgDiAKQQpsIgpwRQ0ACyAJQX9zIQYLIAcgDWtBAnVBCWwhCiAFQV9xQcYARgRAQQAhCSALIAYgCmpBCWsiBkEAIAZBAEobIgYgBiALShshCwwBC0EAIQkgCyADIApqIAZqQQlrIgZBACAGQQBKGyIGIAYgC0obIQsLQX8hCiALQf3\u002F\u002F\u002F8HQf7\u002F\u002F\u002F8HIAkgC3IiEBtKDQEgCyAQQQBHakEBaiEOAkAgBUFfcSIVQcYARgRAIAMgDkH\u002F\u002F\u002F\u002F\u002FB3NKDQMgA0EAIANBAEobIQYMAQsgEiADIANBH3UiBnMgBmutIBIQIyIGa0EBTARAA0AgBkEBayIGQTA6AAAgEiAGa0ECSA0ACwsgBkECayIPIAU6AAAgBkEBa0EtQSsgA0EASBs6AAAgEiAPayIGIA5B\u002F\u002F\u002F\u002F\u002FwdzSg0CCyAGIA5qIgMgEUH\u002F\u002F\u002F\u002F\u002FB3NKDQEgAEEgIAIgAyARaiIDIAQQFCAAIBMgERARIABBMCACIAMgBEGAgARzEBQCQAJAAkAgFUHGAEYEQCAMQRBqQQlyIQUgDSAIIAggDUsbIgkhCANAIAg1AgAgBRAjIQYCQCAIIAlHBEAgBiAMQRBqTQ0BA0AgBkEBayIGQTA6AAAgBiAMQRBqSw0ACwwBCyAFIAZHDQAgBkEBayIGQTA6AAALIAAgBiAFIAZrEBEgCEEEaiIIIA1NDQALIBAEQCAAQYIMQQEQEQsgByAITQ0BIAtBAEwNAQNAIAg1AgAgBRAjIgYgDEEQaksEQANAIAZBAWsiBkEwOgAAIAYgDEEQaksNAAsLIAAgBkEJIAsgC0EJThsQESALQQlrIQYgCEEEaiIIIAdPDQMgC0EJSiEYIAYhCyAYDQALDAILAkAgC0EASA0AIAcgCEEEaiAHIAhLGyENIAxBEGpBCXIhBSAIIQcDQCAFIAc1AgAgBRAjIgZGBEAgBkEBayIGQTA6AAALAkAgByAIRwRAIAYgDEEQak0NAQNAIAZBAWsiBkEwOgAAIAYgDEEQaksNAAsMAQsgACAGQQEQESAGQQFqIQYgCSALckUNACAAQYIMQQEQEQsgACAGIAUgBmsiBiALIAYgC0gbEBEgCyAGayELIAdBBGoiByANTw0BIAtBAE4NAAsLIABBMCALQRJqQRJBABAUIAAgDyASIA9rEBEMAgsgCyEGCyAAQTAgBkEJakEJQQAQFAsgAEEgIAIgAyAEQYDAAHMQFCADIAIgAiADSBshCgwBCyATIAVBGnRBH3VBCXFqIQgCQCADQQtLDQBBDCADayEGRAAAAAAAADBAIRkDQCAZRAAAAAAAADBAoiEZIAZBAWsiBg0ACyAILQAAQS1GBEAgGSABmiAZoaCaIQEMAQsgASAZoCAZoSEBCyASIAwoAiwiByAHQR91IgZzIAZrrSASECMiBkYEQCAGQQFrIgZBMDoAAAsgEUECciELIAVBIHEhDSAGQQJrIgkgBUEPajoAACAGQQFrQS1BKyAHQQBIGzoAACAEQQhxIQYgDEEQaiEHA0AgByIFAn8gAZlEAAAAAAAA4EFjBEAgAaoMAQtBgICAgHgLIgdB4MQBai0AACANcjoAACABIAe3oUQAAAAAAAAwQKIhAQJAIAVBAWoiByAMQRBqa0EBRw0AAkAgBg0AIANBAEoNACABRAAAAAAAAAAAYQ0BCyAFQS46AAEgBUECaiEHCyABRAAAAAAAAAAAYg0AC0F\u002FIQpB\u002Ff\u002F\u002F\u002FwcgCyASIAlrIgZqIg1rIANIDQAgAEEgIAIgDSADQQJqIAcgDEEQaiIHayIFIAVBAmsgA0gbIAUgAxsiCmoiAyAEEBQgACAIIAsQESAAQTAgAiADIARBgIAEcxAUIAAgByAFEBEgAEEwIAogBWtBAEEAEBQgACAJIAYQESAAQSAgAiADIARBgMAAcxAUIAMgAiACIANIGyEKCyAMQbAEaiQAIAoLBABCAAsEAEEAC58DAQl\u002FQeYKIQACQANAIAAtAAAiAUUNASABQT1GDQEgAEEBaiIAQQNxDQALAkACQEGAgoQIIAAoAgAiAmsgAnJBgIGChHhxQYCBgoR4Rw0AA0BBgIKECCACQb369OkDcyIBayABckGAgYKEeHFBgIGChHhHDQEgACgCBCECIABBBGoiASEAIAJBgIKECCACa3JBgIGChHhxQYCBgoR4Rg0ACwwBCyAAIQELA0AgASIALQAAIgJFDQEgAEEBaiEBIAJBPUcNAAsLIAAiAUHmCkYEQEEADwsCQCABQeYKayIAQeYKai0AAA0AQbDOASgCACIERQ0AIAQoAgAiBUUNAANAAkACfyAFIQJB5gohBkEAIAAiAUUNABpB5gotAAAiAwR\u002FAkADQCADIAItAAAiB0cNASAHRQ0BIAFBAWsiAUUNASACQQFqIQIgBi0AASEDIAZBAWohBiADDQALQQAhAwsgAwVBAAsgAi0AAGsLRQRAIAAgBWoiAS0AAEE9Rg0BCyAEKAIEIQUgBEEEaiEEIAUNAQwCCwsgAUEBaiEICyAIC84CAQh\u002FIwBBIGsiAyQAIAMgACgCHCIENgIQIAAoAhQhBSADIAI2AhwgAyABNgIYIAMgBSAEayIBNgIUIAEgAmohBUECIQYgA0EQaiEBAn8DQAJAAkACQCAAKAI8IAEgBiADQQxqEAQiBAR\u002FQZTGASAENgIAQX8FQQALRQRAIAUgAygCDCIHRg0BIAdBAE4NAgwDCyAFQX9HDQILIAAgACgCLCIBNgIcIAAgATYCFCAAIAEgACgCMGo2AhAgAgwDCyABIAcgASgCBCIISyIJQQN0aiIEIAcgCEEAIAkbayIIIAQoAgBqNgIAIAFBDEEEIAkbaiIBIAEoAgAgCGs2AgAgBSAHayEFIAYgCWshBiAEIQEMAQsLIABBADYCHCAAQgA3AxAgACAAKAIAQSByNgIAQQAgBkECRg0AGiACIAEoAgRrCyEKIANBIGokACAKCwYAIAAQAAsGACAAEAYLzx0DDX8EewN+IwBB0MAAayIJJAAgCUEANgIQQQIhBAJAAkAgACgCACIDQY2UnNQARg0AIANB\u002F5\u002F9jwVHBEACQCADQYCAgOAARw0AIAAoAgRB6qCBgQJHDQAgACgCCEGNlJzUAEYNAgtBzQgQAEEBIQAMAgtBACEECwJ\u002FQQBBAUHgABAMIgNFDQAaIANBATYCTAJAAkACQAJAIAQOAwADAQMLIANBwwA2AlggA0HEADYCVCADQcUANgJQIANBxgA2AhAgA0HHADYCBCADQcgANgIcIANByQA2AhggA0HKADYCFCADQcsANgIAIANBzAA2AlwgA0HNADYCLCADQc4ANgIoIANBzwA2AiQgA0HQADYCICADQdEANgIMIANB0gA2AgggAxBGIgQ2AjAgBA0BDAILIANB0wA2AlggA0HUADYCVCADQdUANgJQIANB1gA2AhAgA0HXADYCBCADQdgANgJcIANB2QA2AiwgA0HaADYCKCADQdsANgIkIANB3AA2AiAgA0HdADYCHCADQd4ANgIYIANB3wA2AhQgA0HgADYCDCADQeEANgIIIANB4gA2AgAgAwJ\u002FQQFBiAEQDCIEBEAgBBBGIgU2AgACQCAFRQ0AIAT9DAAAAAAAAAAAAAAAAAAAAAD9CwJsIARBADoAfCAEEC4iBTYCBCAFRQ0AIAQQLiIFNgIIIAVFDQAgBAwCCyAEEGkLQQALIgQ2AjAgBEUNAQsgA0EBNgJIIANBATYCQCADQQA2AjwgA0IANwI0IANBATYCRCADDAELIAMQCUEACyIEBEAgBEEANgI8IARB4wA2AkgLIAQEQCAEQQA2AjggBEHkADYCRAsgBARAIARBADYCNCAEQeUANgJACyAJQRRqIgUiAwRAIANBAEG4wAAQDiIDQQA2ArhAIANCfzcCiEALIAkgATYCDCAJIAA2AgggCSAANgIEQQEhAEEAIQMCQCAJQQRqIgpFDQBBAUHIABAMIgEEfwJ\u002FIAFBgIDAADYCQCABQYCAwAAQDSIINgIgIAhFBEAgARAJQQAMAQsgASAINgIkIAFBAjYCHCABQQM2AhggAUEENgIUIAFBBTYCECABQQY2AiwgAUEINgIoIAEgASgCREECcjYCRCABCwVBAAsiAUUNACABBEAgAUEANgIEIAEgCjYCAAsgCjUCCCEUIAEEQCABIBQ3AwgLAkAgAUUNACABLQBEQQJxRQ0AIAFBPzYCEAsgAQRAIAFBwQA2AhgLIAEEQCABQcIANgIcCyABIQMLAn8CQCAERQ0AIAVFDQAgBCgCTEUEQCAEQTRqQQFBj8kAQQAQCEEADAILIAQoAjAgBSAEKAIYEQMAQQEhBwsgBwtFBEBBgQkQACADECcgBBAoDAELAn8gCUEQaiEFQQAhAQJAIANFDQAgBEUNACAEKAJMRQRAIARBNGpBAUHgyQBBABAIQQAMAgsgAyAEKAIwIAUgBEE0aiAEKAIAEQEAIQELIAELRQRAQZ0JEAAgAxAnIAQQKCAJKAIQEBgMAQsgCSgCECEAIAIEQEEIIAAoAhAiAUECdBAbIQUCQCABRQ0AQQAhACABQQNLBEAgAUF8cSEA\u002FQwAAAAAAQAAAAIAAAADAAAAIRADQCAFIAZBAnRqIBD9CwIAIBD9DAQAAAAEAAAABAAAAAQAAAD9rgEhECAGQQRqIgYgAEcNAAsgACABRg0BCwNAIAUgAEECdGogADYCACAAQQFqIgAgAUcNAAsLAn9BACAERQ0AGiAEKAJMRQRAIARBNGpBAUG1yABBABAIQQAMAQsgBCgCMCABIAUgBEE0aiAEKAIsEQEAC0UEQEHcCBAAIAMQJyAEECggCSgCEBAYIAUQCUEBIQAMAgsgBRAJIAkoAhAhAAtBACEBAkAgBEUNACADRQ0AIAQoAkxFDQAgBCgCMCADIAAgBEE0aiAEKAIEEQEAIQELAkAgAQRAQQAhAAJAIARFDQAgA0UNACAEKAJMRQ0AIAQoAjAgAyAEQTRqIAQoAhARAAAhAAsgAA0BC0GkChAAIAQQKCADECcgCSgCEBAYQQEhAAwBCyADECcgBBAoQQggCSgCECIKKAIMIAooAghsIgUgCigCECIHbCINEBshAwJAIAINACAHRQ0AIAooAhghDgNAIA4gC0E0bGoiBigCGCIAQQhHBEACQCAAQQdNBEAgBigCDCAGKAIIbCEBIAYoAiwhAiAGKAIgBEAgAUUNAkEBIABBAWt0rSEUQQAhACABQQRPBEAgAUF8cSEAIBT9EiEQQQAhBANAIAIgBEECdGoiCCAI\u002FQACACIS\u002FccBQQf9ywEiEf0dACAQ\u002FR0AIhV\u002F\u002FRIgEf0dASAQ\u002FR0BIhZ\u002F\u002FR4BIBIgEP0NCAkKCwwNDg8AAQIDAAECA\u002F3HAUEH\u002FcsBIhL9HQAgFX\u002F9EiAS\u002FR0BIBZ\u002F\u002FR4B\u002FQ0AAQIDCAkKCxAREhMYGRob\u002FQsCACAEQQRqIgQgAEcNAAsgACABRg0DCwNAIAIgAEECdGoiBCAENAIAQgeGIBR\u002FPgIAIABBAWoiACABRw0ACwwCCyABRQ0BQX8gAHRBf3OtIRRBACEAIAFBBE8EQCABQXxxIQAgFP0SIRBBACEEA0AgAiAEQQJ0aiIIIAj9AAIAIhL9yQH9DP8AAAAAAAAA\u002FwAAAAAAAAD91QEiEf0dACAQ\u002FR0AIhWA\u002FRIgEf0dASAQ\u002FR0BIhaA\u002FR4BIBIgEP0NCAkKCwwNDg8AAQIDAAECA\u002F3JAf0M\u002FwAAAAAAAAD\u002FAAAAAAAAAP3VASIS\u002FR0AIBWA\u002FRIgEv0dASAWgP0eAf0NAAECAwgJCgsQERITGBkaG\u002F0LAgAgBEEEaiIEIABHDQALIAAgAUYNAgsDQCACIABBAnRqIgQgBDUCAEL\u002FAX4gFIA+AgAgAEEBaiIAIAFHDQALDAELIABBCGshBCAGKAIMIAYoAghsIQIgBigCLCEIIAYoAiAEQCACRQ0BQQAhACACQQRPBEAgAkF8cSEAQQAhAQNAIAggAUECdGoiDCAM\u002FQACACAE\u002FawB\u002FQsCACABQQRqIgEgAEcNAAsgACACRg0CCwNAIAggAEECdGoiASABKAIAIAR1NgIAIABBAWoiACACRw0ACwwBCyACRQ0AQQAhACACQQRPBEAgAkF8cSEAQQAhAQNAIAggAUECdGoiDCAM\u002FQACACAE\u002Fa0B\u002FQsCACABQQRqIgEgAEcNAAsgACACRg0BCwNAIAggAEECdGoiASABKAIAIAR2NgIAIABBAWoiACACRw0ACwsgBkEINgIYCyALQQFqIgsgB0cNAAsLAkACQAJAAkAgB0EBaw4EAAMBAgMLIAVFDQIgCigCGCgCLCECQQAhBEEAIQECQCAFQQxJDQAgAiADIAVqSSACIAVBAnRqIANLcQ0AIAVBfHEhAUEAIQADQCAAIANqIAIgAEECdGr9AAIAIBD9DQAECAwAAAAAAAAAAAAAAAD9WgAAACAAQQRqIgAgAUcNAAsgASAFRg0DCyABIQAgBUEDcSIGBEADQCAAIANqIAIgAEECdGooAgA6AAAgAEEBaiEAIARBAWoiBCAGRw0ACwsgASAFa0F8Sw0CA0AgACADaiACIABBAnRqKAIAOgAAIAMgAEEBaiIBaiACIAFBAnRqKAIAOgAAIAMgAEECaiIBaiACIAFBAnRqKAIAOgAAIAMgAEEDaiIBaiACIAFBAnRqKAIAOgAAIABBBGoiACAFRw0ACwwCCyAFRQ0BIAooAhgiACgClAEhASAAKAJgIQIgACgCLCEEQQAhACAFQQFHBEAgBUEBcSEPIAVBfnEhBwNAIAMgAEEDbGoiBSAEIABBAnQiBmooAgA6AAAgBSACIAZqKAIAOgABIAUgASAGaigCADoAAiADIABBAXIiBkEDbGoiBSAEIAZBAnQiBmooAgA6AAAgBSACIAZqKAIAOgABIAUgASAGaigCADoAAiAAQQJqIgAgB0cNAAsgD0UNAgsgAyAAQQNsaiIFIAQgAEECdCIAaigCADoAACAFIAAgAmooAgA6AAEgBSAAIAFqKAIAOgACDAELIAVFDQAgCigCGCIEKALIASEAIAQoApQBIQEgBCgCYCECIAQoAiwhCEEAIQQCQCAFQdQASQ0AIAMgBUEBayIHQQJ0IgZqIANJDQAgA0EBaiILIAZqIAtJDQAgA0ECaiILIAZqIAtJDQAgBiADQQNqIgtqIAtJDQAgB0H\u002F\u002F\u002F\u002F\u002FA0sNACADIAggBUECdCIGakkgCCADIAZqIgdJcQ0AIAIgB0kgAyACIAZqSXENACABIAdJIAMgASAGaklxDQAgACAHSSADIAAgBmpJcQ0AIAVB\u002FP\u002F\u002F\u002FwdxIQT9DAAAAAABAAAAAgAAAAMAAAAhEkEAIQYDQCADIBJBAv2rASIQ\u002FRsAaiAIIAZBAnQiB2r9AAIAIhH9GwA6AAAgAyAQ\u002FRsBaiAR\u002FRsBOgAAIAMgEP0bAmogEf0bAjoAACADIBD9GwNqIBH9GwM6AAAgAyAQ\u002FQwBAAAAAQAAAAEAAAABAAAA\u002FVAiEf0bAGogAiAHav0AAgAiE\u002F0bADoAACADIBH9GwFqIBP9GwE6AAAgAyAR\u002FRsCaiAT\u002FRsCOgAAIAMgEf0bA2ogE\u002F0bAzoAACADIBD9DAIAAAACAAAAAgAAAAIAAAD9UCIR\u002FRsAaiABIAdq\u002FQACACIT\u002FRsAOgAAIAMgEf0bAWogE\u002F0bAToAACADIBH9GwJqIBP9GwI6AAAgAyAR\u002FRsDaiAT\u002FRsDOgAAIAMgEP0MAwAAAAMAAAADAAAAAwAAAP1QIhD9GwBqIAAgB2r9AAIAIhH9GwA6AAAgAyAQ\u002FRsBaiAR\u002FRsBOgAAIAMgEP0bAmogEf0bAjoAACADIBD9GwNqIBH9GwM6AAAgEv0MBAAAAAQAAAAEAAAABAAAAP2uASESIAZBBGoiBiAERw0ACyAEIAVGDQELA0AgAyAEQQJ0IgZqIgcgBiAIaigCADoAACAHIAIgBmooAgA6AAEgByABIAZqKAIAOgACIAcgACAGaigCADoAAyAEQQFqIgQgBUcNAAsLIAoQGCADIA0QByADEAlBACEACyAJQdDAAGokACAACwgAQQggABAbC6sCAgJ+An9CfyEDIAAtAERBCHFFBEAgACAAKAIgIgY2AiQCQAJAAkAgACAAKAIwIgUEfwNAIAYgBSAAKAIAIAAoAhQRAAAiBUF\u002FRg0CIAAgACgCJCAFaiIGNgIkIAAgACgCMCAFayIFNgIwIAUNAAsgACgCIAUgBgs2AiQgAUIAVQ0BQgAhAwwCCyAAIAAoAkRBCHI2AkQgAkEEQZH1AEEAEAggAEEANgIwIAAgACgCREEIcjYCREJ\u002FDwtCACEDA0AgASAAKAIAIAAoAhgRCwAiBEJ\u002FUQRAIAJBBEGC9QBBABAIIAAgACgCREEIcjYCRCAAIAApAzggA3w3AzhCfyADIANQGw8LIAMgBHwhAyABIAR9IgFCAFUNAAsLIAAgACkDOCADfDcDOAsgAwsjAQF\u002FIAEgASgCACABKAIIIgEgAKciAiABIAJJG2o2AgRBAQs8AgJ\u002FAX4gASgCACABKAIIaiIDIAEoAgQiAkYEQEJ\u002FDwsgASACIACnajYCBCADIAJrrCIEIAAgACAEVRsLmAMCAn4CfyAAKAIwIgUgAaciBk8EQCAAIAUgBms2AjAgACAAKAIkIAZqNgIkIAAgACkDOCABfDcDOCABDwsgAC0AREEEcQRAIABBADYCMCAAIAAoAiQgBWo2AiQgACAFrSIBIAApAzh8NwM4IAFCfyAFGw8LAkAgBUUEQAwBCyAAQQA2AjAgACAAKAIgNgIkIAEgBa0iA30hAQsgAUIAVQRAA0AgACkDCCAAKQM4IAEgA3x8VARAIAJBBEGr9QBBABAIIABBADYCMCAAIAAoAiA2AiQgACAAKQM4IAN8IgM3AzggACkDCCIBIAN9IQQgASAAKAIAIAAoAhwRCQAhBSAAKAJEIQIgACAFBH8gACABNwM4IAJBe3EFIAILQQRyNgJEQn8gBCABIANRGw8LIAEgACgCACAAKAIYEQsAIgRCf1EEQCACQQRBq\u002FUAQQAQCCAAIAAoAkRBBHI2AkQgACAAKQM4IAN8NwM4Qn8gAyADUBsPCyADIAR8IQMgASAEfSIBQgBVDQALCyAAIAApAzggA3w3AzggAwubAQEFf0EBIAIoAggiByAHQQFNGyEEIAIoAgQiAyACKAIAayEGA0AgBCIFQQF0IQQgBSAGayABSQ0ACyAFIAdHBEAgBRANIgNFBEBBfw8LIAIoAgAiBARAIAMgBCAGEAsaIAIoAgAQCQsgAiAFNgIIIAIgAzYCACACIAMgBmoiAzYCBAsgAyAAIAEQCxogAiACKAIEIAFqNgIEIAELRgECfyACKAIAIAIoAghqIgQgAigCBCIDRgRAQX8PCyAAIAMgBCADayIAIAEgACABSRsiABALGiACIAIoAgQgAGo2AgQgAAuqAgEEfyMAQRBrIgQkAAJAIAAoAnQNACACQQFNBEAgA0EBQfzBAEEAEAgMAQsgASAEQQxqQQIQCiAEKAIMIgZB\u002F\u002F8DcSIHRQRAIANBAUGdwgBBABAIDAELIAIgB0EGbEECakkEQCADQQFB\u002FMEAQQAQCAwBCyAGQQZsEA0iA0UNACAAQQgQDSICNgJ0IAJFBEAgAxAJDAELIAIgAzYCACACIAQvAQwiAjsBBCACRQRAQQEhBQwBC0EAIQIDQCABQQJqIARBDGoiBUECEAogAyACQQZsaiIGIAQoAgw7AQAgAUEEaiAFQQIQCiAGIAQoAgw7AQIgAUEGaiIBIAVBAhAKIAYgBCgCDDsBBEEBIQUgAkEBaiICIAAoAnQvAQRJDQALCyAEQRBqJAAgBQvwAQEFfyMAQRBrIgQkAAJ\u002FIAAoAngiBUUEQCADQQFBzsEAQQAQCEEADAELIAUoAgwEQCADQQFBttUAQQAQCEEADAELIAIgBS0AEiIFQQJ0IgZJBEAgA0EBQa3BAEEAEAhBAAwBC0EAIAYQDSICRQ0AGiAFBEBBACEDA0AgASAEQQxqIgdBAhAKIAIgA0ECdGoiBiAEKAIMOwEAIAFBAmogB0EBEAogBiAEKAIMOgACIAFBA2ogB0EBEAogBiAEKAIMOgADIAFBBGohASADQQFqIgMgBUcNAAsLIAAoAnggAjYCDEEBCyEIIARBEGokACAIC\u002FADAQl\u002FIwBBEGsiBSQAAkAgAkEDSQ0AIAAoAngNACABIAVBDGpBAhAKIAUvAQwiCUGBCGtB\u002F3dNBEAgBSAJNgIAIANBAUG0GiAFEAgMAQsgAUECaiAFQQxqQQEQCiAFLwEMIghFBEAgA0EBQdQXQQAQCAwBCyAIQQNqIAJLDQAgCCAJbEECdBANIgdFDQAgCBANIgpFBEAgBxAJDAELIAgQDSILRQRAIAcQCSAKEAkMAQtBFBANIgZFBEAgBxAJIAoQCSALEAkMAQsgAUEDaiEDIAYgCjYCCCAGIAs2AgQgBiAJOwEQIAYgBzYCACAFKAIMIQwgBkEANgIMIAYgDDoAEiAAIAY2AngDQCADIAVBDGpBARAKIAQgCmogBS0ADEH\u002FAHFBAWo6AAAgBCALaiAFKAIMQYABcUEHdjoAACADQQFqIQMgBEEBaiIEIAhHDQALIAlFBEBBASEEDAELQQAhBgNAQQAhBEEAIQADQCACQQQgBCAKai0AAEEHakEDdiIEIARBBE8bIgQgAyABa2pIBEBBACEEDAMLIAMgBUEMaiAEEAogByAFKAIMNgIAIAdBBGohByADIARqIQMgAEEBaiIAQf\u002F\u002FA3EiBCAISQ0AC0EBIQQgBkEBaiIGQf\u002F\u002FA3EgCUkNAAsLIAVBEGokACAEC5gBAQJ\u002FIwBBEGsiBSQAIAAoAhgiBEH\u002FAUcEQCAFIAQ2AgAgA0ECQeQTIAUQCAsCQAJAIAIgACgCFEYEQCACDQFBASEEDAILQQAhBCADQQFBy+wAQQAQCAwBC0EAIQIDQEEBIQQgASAAKAJIIAJBDGxqQQhqQQEQCiABQQFqIQEgAkEBaiICIAAoAhRJDQALCyAFQRBqJAAgBAuOBgEGfyMAQdAAayIEJAACQCACQQJNBEAgA0EBQavsAEEAEAgMAQsgAC0AfARAIANBBEHJ0gBBABAIQQEhBgwBC0EBIQYgASAAQShqQQEQCiABQQFqIABBNGpBARAKIAFBAmogAEEsakEBEAogAUEDaiEFAkACQAJAAkACQCAAKAIoIgdBAWsOAgABAgsgAkEGTQRAIAQgAjYCECADQQFB0PEAIARBEGoQCEEAIQYMBQsCQCACQQdGDQAgACgCMEEORg0AIAQgAjYCMCADQQJB0PEAIARBMGoQCAsgBSAAQTBqQQQQCiAAKAIwQQ5HDQNBJBANIgVFBEBBACEGIANBAUGzPEEAEAgMBQsgBUEONgIAIARBADYCQCAEQQA2AjggBEEANgJIIARBADYCPCAEQQA2AkQgBEEANgJMQbDqkAIhBiAEQbDqkAI2AjQgBUGAjJWiBDYCBAJ\u002FIAJBB0cEQCACQSNGBEAgAUEHaiAEQcwAakEEEAogAUELaiAEQcgAakEEEAogAUEPaiAEQcQAakEEEAogAUETaiAEQUBrQQQQCiABQRdqIARBPGpBBBAKIAFBG2ogBEE4akEEEAogAUEfaiAEQTRqQQQQCiAFQQA2AgQgBCgCNCEGIAQoAjghAiAEKAJAIQMgBCgCPCEHIAQoAkQhCCAEKAJMIQkgBCgCSAwCCyAEIAI2AiAgA0ECQfTxACAEQSBqEAgLQQAhAkEAIQNBACEHQQALIQEgBSAHNgIYIAUgCDYCECAFIAk2AgggBSAGNgIgIAUgAjYCHCAFIAM2AhQgBSABNgIMIABBADYCcCAAIAU2AmwMAwsgACACQQNrIgE2AnAgAEEBIAEQDCIDNgJsIANFDQEgAkEDTA0CQQAhAgNAIAUgBEHMAGpBARAKIAAoAmwgAmogBCgCTDoAACAFQQFqIQUgAkEBaiICIAFHDQALDAILIAdBA0kNAiAEIAc2AgAgA0EEQev3ACAEEAgMAgtBACEGIABBADYCcAwBC0EBIQYgAEEBOgB8CyAEQdAAaiQAIAYLtAMBA38jAEEgayIEJAACQCAAKAJIBEAgA0ECQY01QQAQCEEBIQIMAQsgAkEORwRAQQAhAiADQQFBiuwAQQAQCAwBCyABIABBEGpBBBAKIAFBBGogAEEMakEEEAogAUEIaiAAQRRqQQIQCiAAKAIMIQUCQCAEAn8gACgCECIGRQRAIAAoAhQMAQsgACgCFCICIAVFDQAaIAINAUEACzYCCCAEIAY2AgQgBCAFNgIAIANBAUHu6gAgBBAIQQAhAgwBCyACQYGAAWtB\u002F\u002F9+TQRAQQAhAiADQQFBmOoAQQAQCAwBCyAAIAJBDBAMIgI2AkggAkUEQEEAIQIgA0EBQb3qAEEAEAgMAQtBASECIAFBCmogAEEYakEBEAogAUELaiAAQRxqQQEQCiAAKAIcIgVBB0cEQCAEIAU2AhAgA0EEQa36ACAEQRBqEAgLIAFBDGogAEEgakEBEAogAUENaiAAQSRqQQEQCiAAKAIAIgEgAS0AvAFB+wFxIAAoAhhB\u002FwFGQQJ0cjoAvAEgACgCACIBIAAoAgw2AtgBIAEgACgCEDYC3AEgAEEBOgCFAQsgBEEgaiQAIAILugQBBn8jAEEQayIGJAACfyAALQBkQQJxRQRAIANBAUHs0wBBABAIQQAMAQsgAEEANgJoAkACQAJAIAIEQANAIAJBB00EQCADQQFBuRlBABAIDAULIAEgBkEMaiIFQQQQCiAGKAIMIQQgAUEEaiAFQQQQCkEIIQcgBigCDCEFAkACQAJAAkAgBA4CAQADCyACQRBJBEBB4RkhBAwHCyABQQhqIAZBCGpBBBAKIAYoAggEQEHLPiEEDAcLIAFBDGogBkEMakEEEAogBigCDCIEDQFBshghBAwGCyADQQFBshhBABAIDAYLQRAhBwsgBCAHSQRAIANBAUGGxABBABAIDAULIAIgBEkEQCADQQFBvsMAQQAQCEEADAYLAkACQCAAIAEgB2ogBCAHayADAn8CQAJAAkAgBUHx2L2bBkwEQCAFQePGwZMGRg0BIAVB5sqRmwZGDQMgBUHwwrWbBkcNBUHwwAEMBAsgBUHy2I2DB0YNAUHQwAEgBUHyyKHLBkYNAxogBUHy2L2bBkcNBEHYwAEMAwtB4MABDAILQejAAQwBC0H4wAELKAIEEQEADQFBAAwHCyAAIAAoAmhB\u002F\u002F\u002F\u002F\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\u002F\u002F\u002F8PUw0BIAJBAUHLPkEAEAgMBAsgASADQegAaiIEQQggAhASQQhHDQMgBCADQeQAakEEEAogAygCZEUNASACQQFByz5BABAIDAMLIAMgDadBCGo2AlgMAQsgCSADQdgAakEEEApBECEFCyADKAJcIgRB4+TA0wZGBEAgACgCZCIBQQRxBEAgACABQQhyNgJkDAILIAJBAUGtK0EAEAggBhAJQQAMBwsgAygCWCIHRQRAIAJBAUGyGEEAEAggBhAJQQAMBwsgBSAHSwRAIAMgBDYCBCADIAc2AgAgAkEBQYroACADEAgMBgsCQAJ\u002FAn8CQAJ\u002FAkACQAJAAkACQCAEQfHYvZsGTARAIARB48bBkwZGDQIgBEHmypGbBkYNBCAEQfDCtZsGRw0BQfDAAQwGCyAEQZ\u002FAwNIGTARAIARB8ti9mwZGDQVB0MABIARB8sihywZGDQYaIARB8PLRswZHDQFBuMABDAgLIARB8tiNgwdGDQIgBEGgwMDSBkYNBkHAwAEgBEHo5MDTBkYNBxoLIAAoAmQiBEEBcQ0IIAJBAUH8DkEAEAggBhAJQQAMDwtB4MABDAMLQejAAQwCC0H4wAEMAQtB2MABCyEKIAMgBEH\u002FAXE2AkwgAyAEQRh2NgJAIAMgBEEIdkH\u002FAXE2AkggAyAEQRB2Qf8BcTYCRCACQQJByQ4gA0FAaxAIIAcgBWsiBSAALQBkQQRxDQIaIAMgAygCXCIEQRh2NgIwIAMgBEH\u002FAXE2AjwgAyAEQRB2Qf8BcTYCNCADIARBCHZB\u002FwFxNgI4IAJBAkHaMyADQTBqEAggACAAKAJkQf\u002F\u002F\u002F\u002F8HcjYCZCABIAWtIg0gAiABKAIoEQgAIA1RDQcgAkEBQZIcQQAQCCAGEAlBAAwKC0GwwAELIQogByAFawshBSABKQMIIg1QBH5CAAUgDSABKQM4fQsgBa1TBEAgAygCWCEEIAMoAlwhACADIAEpAwgiDVAEfkIABSANIAEpAzh9Cz4CKCADIAU2AiQgAyAAQf8BcTYCICADIABBGHY2AhQgAyAENgIQIAMgAEEIdkH\u002FAXE2AhwgAyAAQRB2Qf8BcTYCGCACQQFB3fUAIANBEGoQCAwHCyAFIAhNBEAgBiEEDAQLIAUhCCAGIAUQECIEDQMgBhAJIAJBAUH\u002FD0EAEAhBAAwHCyAEQQJxRQRAIAJBAUHCD0EAEAggBhAJQQAMBwsgACAEQf\u002F\u002F\u002F\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\u002FCQELfyMAQRBrIgUkAAJ\u002FIAAoAghBEEYEQCAAKAKcASAAKALMAUGMLGxqDAELIAAoAgwLIQcCfyACQQFNBEAgA0EBQdgjQQAQCEEADAELIAEgBUEMakECEAogBSgCDARAIANBAkHwLEEAEAhBAQwBCyACQQZNBEAgA0EBQdgjQQAQCEEADAELIAFBAmogBUEIakEBEAogBygC\u002FCsiCSEAAkACQAJAIAcoAoAsIgZFDQAgBSgCCCEIA0AgACgCACAIRg0BIABBFGohACAEQQFqIgQgBkcNAAsMAQsgBCAGRw0BCyAHKAKELCAGRgR\u002FIAcgBkEKaiIANgKELCAJIABBFGwQECIARQRAIAcoAvwrEAkgB0EANgKELCAHQgA3AvwrIANBAUHyI0EAEAhBAAwDCyAHIAA2AvwrIAAgBygCgCwiBEEUbGpBACAHKAKELCAEa0EUbBAOGiAHKAL8KyEJIAcoAoAsBSAGC0EUbCAJaiEAQQEhCwsgACAFKAIINgIAIAFBA2ogBUEMakECEAogBSgCDARAIANBAkHwLEEAEAhBAQwBCyABQQVqIAVBBGpBAhAKIAUoAgQiBEECTwRAIANBAkGoF0EAEAhBAQwBCyACQQdrIQYgBARAIAFBB2ohAkEAIQkDQCAGQQJNBEAgA0EBQdgjQQAQCEEADAMLIAIgBUEMakEBEAogBSgCDEEBRwRAIANBAkGyKkEAEAhBAQwDCyACQQFqIAVBAhAKIAAgBSgCACIEQf\u002F\u002FAXEiATYCBCAGQQNrIgggBEEPdkEBaiIGIAFsQQJqIgpJBEAgA0EBQdgjQQAQCEEADAMLIAJBA2ohAkEAIQQgAQRAA0AgAiAFQQxqIAYQCiAEIAUoAgxHBEAgA0ECQdovQQAQCEEBDAULIAIgBmohAiAEQQFqIgQgACgCBEkNAAsLIAIgBUECEAogBSAFKAIAIgRB\u002F\u002F8BcSIBNgIAIAAoAgQgAUcEQCADQQJB2BhBABAIQQEMAwsgCCAKayIKIARBD3ZBAWoiBiABbEEDaiIMSQRAIANBAUHYI0EAEAhBAAwDCyACQQJqIQJBACEEIAEEQANAIAIgBUEMaiAGEAogBCAFKAIMRwRAIANBAkHaL0EAEAhBAQwFCyACIAZqIQIgBEEBaiIEIAAoAgRJDQALCyACIAVBDGpBAxAKIAUoAgwhBiAAQgA3AgggACAGQYCABHFFIAAtABBB\u002FgFxcjoAECAFIAZB\u002FwFxIgg2AggCQCAIRQ0AIAcoAvQrIg0EQCAHKALwKyEEQQAhAQNAIAggBCgCCEYEQCAAIAQ2AggMAwsgBEEUaiEEIAFBAWoiASANRw0ACwsgA0EBQdgjQQAQCEEADAMLIAUgBkEIdkH\u002FAXEiBjYCCAJAIAZFDQAgBygC9CsiCARAIAcoAvArIQRBACEBA0AgBiAEKAIIRgRAIAAgBDYCDAwDCyAEQRRqIQQgAUEBaiIBIAhHDQALCyADQQFB2CNBABAIQQAMAwsgCiAMayEGIAJBA2ohAiAJQQFqIgkgBSgCBEkNAAsLIAYEQCADQQFB2CNBABAIQQAMAQtBASALRQ0AGiAHIAcoAoAsQQFqNgKALEEBCyEOIAVBEGokACAOC\u002FUBAQV\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\u002FiBBABAIQQALC4ABAQF\u002FIwBBEGsiACQAQQEhBAJAIAJBAU0EQEEAIQQgA0EBQeQgQQAQCAwBCyABIABBDGpBARAKIAFBAWogAEEIakEBEAogAkECayAAKAIIIgFBBXZBAnEgAUEEdkEDcWpBAmpwRQ0AQQAhBCADQQFB5CBBABAICyAAQRBqJAAgBAsEAEEACwv5uwEcAEGACAuhdWNhbm5vdCBhbGxvY2F0ZSBvcGpfdGNkX3NlZ19kYXRhX2NodW5rX3QqIGFycmF5AC0rICAgMFgweAAtMFgrMFggMFgtMHgrMHggMHgAVW5rbm93biBmb3JtYXQARmFpbGVkIHRvIHNldCB0aGUgZGVjb2RlZCBjb21wb25lbnRzAEZhaWxlZCB0byBzZXR1cCB0aGUgZGVjb2RlcgBGYWlsZWQgdG8gcmVhZCB0aGUgaGVhZGVyAG5hbgAqbF90aWxlX2xlbiA+IFVJTlRfTUFYIC0gT1BKX0NPTU1PTl9DQkxLX0RBVEFfRVhUUkEgLSBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zb3RfbGVuZ3RoAGluZgBGYWlsZWQgdG8gZGVjb2RlIHRoZSBpbWFnZQBJbnZhbGlkIGFjY2VzcyB0byBwaS0+aW5jbHVkZQBBTExfQ1BVUwBPUEpfTlVNX1RIUkVBRFMATkFOAElORgBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zb3RfbGVuZ3RoID4gVUlOVF9NQVggLSBPUEpfQ09NTU9OX0NCTEtfREFUQV9FWFRSQQAJCQkgcHJlY2NpbnRzaXplICh3LGgpPQAJCQkgc3RlcHNpemVzIChtLGUpPQAuAChudWxsKQAoJWQsJWQpIAAlc30KAAkJIH0KAFtERVZdIER1bXAgYW4gaW1hZ2VfY29tcF9oZWFkZXIgc3RydWN0IHsKAFtERVZdIER1bXAgYW4gaW1hZ2VfaGVhZGVyIHN0cnVjdCB7CgBJbWFnZSBpbmZvIHsKAAkgZGVmYXVsdCB0aWxlIHsKACVzCSBjb21wb25lbnQgJWQgewoACQkgY29tcCAlZCB7CgAJIFRpbGUgaW5kZXg6IHsKAAkgTWFya2VyIGxpc3Q6IHsKAENvZGVzdHJlYW0gaW5kZXggZnJvbSBtYWluIGhlYWRlcjogewoAQ29kZXN0cmVhbSBpbmZvIGZyb20gbWFpbiBoZWFkZXI6IHsKAFN0cmVhbSBlcnJvciB3aGlsZSByZWFkaW5nIEpQMiBIZWFkZXIgYm94CgBGb3VuZCBhIG1pc3BsYWNlZCAnJWMlYyVjJWMnIGJveCBvdXRzaWRlIGpwMmggYm94CgBNYWxmb3JtZWQgSlAyIGZpbGUgZm9ybWF0OiBmaXJzdCBib3ggbXVzdCBiZSBKUEVHIDIwMDAgc2lnbmF0dXJlIGJveAoATWFsZm9ybWVkIEpQMiBmaWxlIGZvcm1hdDogc2Vjb25kIGJveCBtdXN0IGJlIGZpbGUgdHlwZSBib3gKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGhhbmRsZSBqcGVnMjAwMCBib3gKAE5vdCBlbm91Z2ggbWVtb3J5IHdpdGggRlRZUCBCb3gKAEEgbWFya2VyIElEIHdhcyBleHBlY3RlZCAoMHhmZi0tKSBpbnN0ZWFkIG9mICUuOHgKAAkJIG1jdD0leAoACQkJIGNibGtzdHk9JSN4CgAJCQkgY3N0eT0lI3gKAAkJIHByZz0lI3gKAEludGVnZXIgb3ZlcmZsb3cKAAkgdGR4PSV1LCB0ZHk9JXUKAAkgdHc9JXUsIHRoPSV1CgAJIHR4MD0ldSwgdHkwPSV1CgBJbnZhbGlkIGNvbXBvbmVudCBpbmRleDogJXUKAFN0cmVhbSB0b28gc2hvcnQKAE1hcmtlciBoYW5kbGVyIGZ1bmN0aW9uIGZhaWxlZCB0byByZWFkIHRoZSBtYXJrZXIgc2VnbWVudAoATm90IGVub3VnaCBtZW1vcnkgZm9yIGN1cnJlbnQgcHJlY2luY3QgY29kZWJsb2NrIGVsZW1lbnQKAEVycm9yIHJlYWRpbmcgU1BDb2QgU1BDb2MgZWxlbWVudAoARXJyb3IgcmVhZGluZyBTUWNkIG9yIFNRY2MgZWxlbWVudAoAQSBCUENDIGhlYWRlciBib3ggaXMgYXZhaWxhYmxlIGFsdGhvdWdoIEJQQyBnaXZlbiBieSB0aGUgSUhEUiBib3ggKCVkKSBpbmRpY2F0ZSBjb21wb25lbnRzIGJpdCBkZXB0aCBpcyBjb25zdGFudAoARXJyb3Igd2l0aCBTSVogbWFya2VyOiBpbGxlZ2FsIHRpbGUgb2Zmc2V0CgBJbnZhbGlkIHByZWNpbmN0CgBOb3QgZW5vdWdoIG1lbW9yeSB0byBoYW5kbGUgYmFuZCBwcmVjaW50cwoARmFpbGVkIHRvIGRlY29kZSBhbGwgdXNlZCBjb21wb25lbnRzCgBTaXplIG9mIGNvZGUgYmxvY2sgZGF0YSBleGNlZWRzIHN5c3RlbSBsaW1pdHMKAFNpemUgb2YgdGlsZSBkYXRhIGV4Y2VlZHMgc3lzdGVtIGxpbWl0cwoAQ2Fubm90IHRha2UgaW4gY2hhcmdlIG11bHRpcGxlIE1DVCBtYXJrZXJzCgBDb3JydXB0ZWQgUFBNIG1hcmtlcnMKAE5vdCBlbm91Z2ggbWVtb3J5IGZvciB0aWxlIHJlc29sdXRpb25zCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbXVsdGlwbGUgY29sbGVjdGlvbnMKAEludmFsaWQgUENMUiBib3guIFJlcG9ydHMgMCBwYWxldHRlIGNvbHVtbnMKAFdlIGRvIG5vdCBzdXBwb3J0IFJPSSBpbiBkZWNvZGluZyBIVCBjb2RlYmxvY2tzCgBDYW5ub3QgaGFuZGxlIGJveCBvZiB1bmRlZmluZWQgc2l6ZXMKAENhbm5vdCB0YWtlIGluIGNoYXJnZSBjb2xsZWN0aW9ucyB3aXRob3V0IHNhbWUgbnVtYmVyIG9mIGluZGl4ZXMKAEludmFsaWQgdGlsZWMtPndpbl94eHggdmFsdWVzCgBDYW5ub3QgaGFuZGxlIGJveCBvZiBsZXNzIHRoYW4gOCBieXRlcwoAQ2Fubm90IGhhbmRsZSBYTCBib3ggb2YgbGVzcyB0aGFuIDE2IGJ5dGVzCgBDb21wb25lbnQgaW5kZXggJXUgdXNlZCBzZXZlcmFsIHRpbWVzCgBJbnZhbGlkIFBDTFIgYm94LiBSZXBvcnRzICVkIGVudHJpZXMKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGNyZWF0ZSBUYWctdHJlZSBub2RlcwoAQ2Fubm90IHRha2UgaW4gY2hhcmdlIG1jdCBkYXRhIHdpdGhpbiBtdWx0aXBsZSBNQ1QgcmVjb3JkcwoAQ2Fubm90IGRlY29kZSB0aWxlLCBtZW1vcnkgZXJyb3IKAG9wal9qMmtfYXBwbHlfbmJfdGlsZV9wYXJ0c19jb3JyZWN0aW9uIGVycm9yCgBQcm9ibGVtIHdpdGggc2tpcHBpbmcgSlBFRzIwMDAgYm94LCBzdHJlYW0gZXJyb3IKAFByb2JsZW0gd2l0aCByZWFkaW5nIEpQRUcyMDAwIGJveCwgc3RyZWFtIGVycm9yCgBVbmtub3duIG1hcmtlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gYWRkIHRsIG1hcmtlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gYWRkIG1oIG1hcmtlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gdGFrZSBpbiBjaGFyZ2UgU0laIG1hcmtlcgoARXJyb3IgcmVhZGluZyBQUFQgbWFya2VyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byByZWFkIFBQVCBtYXJrZXIKAEVycm9yIHJlYWRpbmcgU09UIG1hcmtlcgoARXJyb3IgcmVhZGluZyBQTFQgbWFya2VyCgBFcnJvciByZWFkaW5nIE1DVCBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlYWQgTUNUIG1hcmtlcgoATm90IGVub3VnaCBzcGFjZSBmb3IgZXhwZWN0ZWQgU09QIG1hcmtlcgoARXhwZWN0ZWQgU09QIG1hcmtlcgoARXJyb3IgcmVhZGluZyBNQ08gbWFya2VyCgBFcnJvciByZWFkaW5nIFJHTiBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUFBNIG1hcmtlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gcmVhZCBQUE0gbWFya2VyCgBFcnJvciByZWFkaW5nIFRMTSBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUExNIG1hcmtlcgoATm90IGVub3VnaCBzcGFjZSBmb3IgZXhwZWN0ZWQgRVBIIG1hcmtlcgoARXhwZWN0ZWQgRVBIIG1hcmtlcgoARXJyb3IgcmVhZGluZyBDUkcgbWFya2VyCgBVbmtub3duIHByb2dyZXNzaW9uIG9yZGVyIGluIENPRCBtYXJrZXIKAFVua25vd24gU2NvZCB2YWx1ZSBpbiBDT0QgbWFya2VyCgBFcnJvciByZWFkaW5nIENPRCBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUUNEIG1hcmtlcgoAQ3Jyb3IgcmVhZGluZyBDQkQgbWFya2VyCgBFcnJvciByZWFkaW5nIFBPQyBtYXJrZXIKAEVycm9yIHJlYWRpbmcgQ09DIG1hcmtlcgoARXJyb3IgcmVhZGluZyBRQ0MgbWFya2VyCgBFcnJvciByZWFkaW5nIE1DQyBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlYWQgTUNDIG1hcmtlcgoAcmVxdWlyZWQgU0laIG1hcmtlciBub3QgZm91bmQgaW4gbWFpbiBoZWFkZXIKAHJlcXVpcmVkIENPRCBtYXJrZXIgbm90IGZvdW5kIGluIG1haW4gaGVhZGVyCgByZXF1aXJlZCBRQ0QgbWFya2VyIG5vdCBmb3VuZCBpbiBtYWluIGhlYWRlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gaGFuZGxlIGpwZWcyMDAwIGZpbGUgaGVhZGVyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byByZWFkIGhlYWRlcgoARXJyb3Igd2l0aCBKUCBTaWduYXR1cmUgOiBiYWQgbWFnaWMgbnVtYmVyCgBJbiBTT1QgbWFya2VyLCBUUFNvdCAoJWQpIGlzIG5vdCB2YWxpZCByZWdhcmRzIHRvIHRoZSBjdXJyZW50IG51bWJlciBvZiB0aWxlLXBhcnQgKCVkKSwgZ2l2aW5nIHVwCgBJbiBTT1QgbWFya2VyLCBUUFNvdCAoJWQpIGlzIG5vdCB2YWxpZCByZWdhcmRzIHRvIHRoZSBwcmV2aW91cyBudW1iZXIgb2YgdGlsZS1wYXJ0ICglZCksIGdpdmluZyB1cAoASW4gU09UIG1hcmtlciwgVFBTb3QgKCVkKSBpcyBub3QgdmFsaWQgcmVnYXJkcyB0byB0aGUgY3VycmVudCBudW1iZXIgb2YgdGlsZS1wYXJ0IChoZWFkZXIpICglZCksIGdpdmluZyB1cAoAdGlsZXMgcmVxdWlyZSBhdCBsZWFzdCBvbmUgcmVzb2x1dGlvbgoATWFya2VyIGlzIG5vdCBjb21wbGlhbnQgd2l0aCBpdHMgcG9zaXRpb24KAFByb2JsZW0gd2l0aCBzZWVrIGZ1bmN0aW9uCgBFcnJvciByZWFkaW5nIFNQQ29kIFNQQ29jIGVsZW1lbnQsIEludmFsaWQgY2Jsa3cvY2Jsa2ggY29tYmluYXRpb24KAEludmFsaWQgbXVsdGlwbGUgY29tcG9uZW50IHRyYW5zZm9ybWF0aW9uCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgY29sbGVjdGlvbnMgb3RoZXIgdGhhbiBhcnJheSBkZWNvcnJlbGF0aW9uCgBUb28gbGFyZ2UgdmFsdWUgZm9yIE5wcG0KAE5vdCBlbm91Z2ggYnl0ZXMgdG8gcmVhZCBOcHBtCgBiYWQgcGxhY2VkIGpwZWcgY29kZXN0cmVhbQoACSBNYWluIGhlYWRlciBzdGFydCBwb3NpdGlvbj0lbGxpCgkgTWFpbiBoZWFkZXIgZW5kIHBvc2l0aW9uPSVsbGkKAE1hcmtlciBzaXplIGluY29uc2lzdGVudCB3aXRoIHN0cmVhbSBsZW5ndGgKAFRpbGUgcGFydCBsZW5ndGggc2l6ZSBpbmNvbnNpc3RlbnQgd2l0aCBzdHJlYW0gbGVuZ3RoCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbXVsdGlwbGUgZGF0YSBzcGFubmluZwoAV3JvbmcgZmxhZwoARXJyb3Igd2l0aCBGVFlQIHNpZ25hdHVyZSBCb3ggc2l6ZQoARXJyb3Igd2l0aCBKUCBzaWduYXR1cmUgQm94IHNpemUKAEludmFsaWQgcHJlY2luY3Qgc2l6ZQoASW5jb25zaXN0ZW50IG1hcmtlciBzaXplCgBJbnZhbGlkIG1hcmtlciBzaXplCgBFcnJvciB3aXRoIFNJWiBtYXJrZXIgc2l6ZQoATm90IGVub3VnaCBtZW1vcnkgdG8gYWRkIGEgbmV3IHZhbGlkYXRpb24gcHJvY2VkdXJlCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBkZWNvZGUgdGlsZQoARmFpbGVkIHRvIGRlY29kZSB0aGUgY29kZXN0cmVhbSBpbiB0aGUgSlAyIGZpbGUKAENhbm5vdCB0YWtlIGluIGNoYXJnZSBjb2xsZWN0aW9ucyB3aXRoIGluZGl4IHNodWZmbGUKAENhbm5vdCBhbGxvY2F0ZSBUaWVyIDEgaGFuZGxlCgBObyBkZWNvZGVkIGFyZWEgcGFyYW1ldGVycywgc2V0IHRoZSBkZWNvZGVkIGFyZWEgdG8gdGhlIHdob2xlIGltYWdlCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBjcmVhdGUgVGFnLXRyZWUKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlaW5pdGlhbGl6ZSB0aGUgdGFnIHRyZWUKAEVycm9yIHJlYWRpbmcgU1BDb2QgU1BDb2MgZWxlbWVudCwgSW52YWxpZCB0cmFuc2Zvcm1hdGlvbiBmb3VuZAoARXJyb3IgcmVhZGluZyBTUENvZCBTUENvYyBlbGVtZW50LiBVbnN1cHBvcnRlZCBNaXhlZCBIVCBjb2RlLWJsb2NrIHN0eWxlIGZvdW5kCgBUaWxlIFkgY29vcmRpbmF0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQKAFRpbGUgWCBjb29yZGluYXRlcyBhcmUgbm90IHN1cHBvcnRlZAoASW1hZ2UgY29vcmRpbmF0ZXMgYWJvdmUgSU5UX01BWCBhcmUgbm90IHN1cHBvcnRlZAoASlBFRzIwMDAgSGVhZGVyIGJveCBub3QgcmVhZCB5ZXQsICclYyVjJWMlYycgYm94IHdpbGwgYmUgaWdub3JlZAoAb3BqX2oya19tZXJnZV9wcHQoKSBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZAoATm90IGVub3VnaCBtZW1vcnkgdG8gcmVhZCBTT1QgbWFya2VyLiBUaWxlIGluZGV4IGFsbG9jYXRpb24gZmFpbGVkCgBJZ25vcmluZyBpaGRyIGJveC4gRmlyc3QgaWhkciBib3ggYWxyZWFkeSByZWFkCgBacHB0ICV1IGFscmVhZHkgcmVhZAoAWnBwbSAldSBhbHJlYWR5IHJlYWQKAFBURVJNIGNoZWNrIGZhaWx1cmU6ICVkIHN5bnRoZXRpemVkIDB4RkYgbWFya2VycyByZWFkCgAJCQkgY2Jsa3c9Ml4lZAoACQkJIGNibGtoPTJeJWQKAAkJCSBxbnRzdHk9JWQKACVzIGR4PSVkLCBkeT0lZAoACQkJIHJvaXNoaWZ0PSVkCgAJCQkgbnVtZ2JpdHM9JWQKAAkJIG51bWxheWVycz0lZAoAJXMgbnVtY29tcHM9JWQKAG9wal9qcDJfYXBwbHlfY2RlZjogYWNuPSVkLCBudW1jb21wcz0lZAoAb3BqX2pwMl9hcHBseV9jZGVmOiBjbj0lZCwgbnVtY29tcHM9JWQKAAkJCSBudW1yZXNvbHV0aW9ucz0lZAoACQkgdHlwZT0lI3gsIHBvcz0lbGxpLCBsZW49JWQKACVzIHNnbmQ9JWQKAAkJCSBxbWZiaWQ9JWQKACVzIHByZWM9JWQKAAkJIG5iIG9mIHRpbGUtcGFydCBpbiB0aWxlIFslZF09JWQKACVzIHgxPSVkLCB5MT0lZAoAJXMgeDA9JWQsIHkwPSVkCgBGYWlsZWQgdG8gZGVjb2RlIHRpbGUgJWQvJWQKAFNldHRpbmcgZGVjb2RpbmcgYXJlYSB0byAlZCwlZCwlZCwlZAoARmFpbGVkIHRvIGRlY29kZSBjb21wb25lbnQgJWQKAEludmFsaWQgdmFsdWUgZm9yIG51bXJlc29sdXRpb25zIDogJWQsIG1heCB2YWx1ZSBpcyBzZXQgaW4gb3BlbmpwZWcuaCBhdCAlZAoASW52YWxpZCBjb21wb25lbnQgbnVtYmVyOiAlZCwgcmVnYXJkaW5nIHRoZSBudW1iZXIgb2YgY29tcG9uZW50cyAlZAoAVG9vIG1hbnkgUE9DcyAlZAoASW52YWxpZCB0aWxlIG51bWJlciAlZAoASW52YWxpZCB0aWxlIHBhcnQgaW5kZXggZm9yIHRpbGUgbnVtYmVyICVkLiBHb3QgJWQsIGV4cGVjdGVkICVkCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IG51bWJlciBvZiBjb21wb25lbnQgaXMgaWxsZWdhbCAtPiAlZAoATm90IGVub3VnaCBtZW1vcnkgZm9yIGNpZWxhYgoAQ2Fubm90IGFsbG9jYXRlIGNibGstPmRlY29kZWRfZGF0YQoARmFpbGVkIHRvIG1lcmdlIFBQVCBkYXRhCgBGYWlsZWQgdG8gbWVyZ2UgUFBNIGRhdGEKAEludmFsaWQgbnVtYmVyIG9mIGxheWVycyBpbiBDT0QgbWFya2VyIDogJWQgbm90IGluIHJhbmdlIFsxLTY1NTM1XQoAU3RyZWFtIHRvbyBzaG9ydCwgZXhwZWN0ZWQgU09UCgBVbmFibGUgdG8gc2V0IHQxIGhhbmRsZSBhcyBUTFMKAFN0cmVhbSBkb2VzIG5vdCBlbmQgd2l0aCBFT0MKAENhbm5vdCBoYW5kbGUgYm94IHNpemVzIGhpZ2hlciB0aGFuIDJeMzIKAG9wal9waV9uZXh0X2xyY3AoKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal9waV9uZXh0X3JsY3AoKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal9waV9uZXh0X2NwcmwoKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal9waV9uZXh0X3BjcmwoKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal9waV9uZXh0X3JwY2woKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal90MV9kZWNvZGVfY2JsaygpOiB1bnN1cHBvcnRlZCBicG5vX3BsdXNfb25lID0gJWQgPj0gMzEKAEZhaWxlZCB0byBkZWNvZGUgdGlsZSAxLzEKAEluc3VmZmljaWVudCBkYXRhIGZvciBDTUFQIGJveC4KAE5lZWQgdG8gcmVhZCBhIFBDTFIgYm94IGJlZm9yZSB0aGUgQ01BUCBib3guCgBJbnN1ZmZpY2llbnQgZGF0YSBmb3IgQ0RFRiBib3guCgBOdW1iZXIgb2YgY2hhbm5lbCBkZXNjcmlwdGlvbiBpcyBlcXVhbCB0byB6ZXJvIGluIENERUYgYm94LgoAU3RyZWFtIGVycm9yIHdoaWxlIHJlYWRpbmcgSlAyIEhlYWRlciBib3g6IG5vICdpaGRyJyBib3guCgBOb24gY29uZm9ybWFudCBjb2Rlc3RyZWFtIFRQc290PT1UTnNvdC4KAFN0cmVhbSBlcnJvciB3aGlsZSByZWFkaW5nIEpQMiBIZWFkZXIgYm94OiBib3ggbGVuZ3RoIGlzIGluY29uc2lzdGVudC4KAEJveCBsZW5ndGggaXMgaW5jb25zaXN0ZW50LgoAUmVzb2x1dGlvbiBmYWN0b3IgaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIHJlc29sdXRpb24gaW4gdGhlIGNvbXBvbmVudC4KAENvbXBvbmVudCBtYXBwaW5nIHNlZW1zIHdyb25nLiBUcnlpbmcgdG8gY29ycmVjdC4KAEluY29tcGxldGUgY2hhbm5lbCBkZWZpbml0aW9ucy4KAE1hbGZvcm1lZCBIVCBjb2RlYmxvY2suIEludmFsaWQgY29kZWJsb2NrIGxlbmd0aCB2YWx1ZXMuCgBXZSBkbyBub3Qgc3VwcG9ydCBtb3JlIHRoYW4gMyBjb2RpbmcgcGFzc2VzIGluIGFuIEhUIGNvZGVibG9jazsgVGhpcyBjb2RlYmxvY2tzIGhhcyAlZCBwYXNzZXMuCgBNYWxmb3JtZWQgSFQgY29kZWJsb2NrLiBEZWNvZGluZyB0aGlzIGNvZGVibG9jayBpcyBzdG9wcGVkLiBUaGVyZSBhcmUgJWQgemVybyBiaXRwbGFuZXMgaW4gJWQgYml0cGxhbmVzLgoAQ2Fubm90IHRha2UgaW4gY2hhcmdlIG11bHRpcGxlIHRyYW5zZm9ybWF0aW9uIHN0YWdlcy4KAFVua25vd24gbWFya2VyIGhhcyBiZWVuIGRldGVjdGVkIGFuZCBnZW5lcmF0ZWQgZXJyb3IuCgBDb2RlYyBwcm92aWRlZCB0byB0aGUgb3BqX3NldF9kZWNvZGVkX2NvbXBvbmVudHMgZnVuY3Rpb24gaXMgbm90IGEgZGVjb21wcmVzc29yIGhhbmRsZXIuCgBDb2RlYyBwcm92aWRlZCB0byB0aGUgb3BqX3NldHVwX2RlY29kZXIgZnVuY3Rpb24gaXMgbm90IGEgZGVjb21wcmVzc29yIGhhbmRsZXIuCgBDb2RlYyBwcm92aWRlZCB0byB0aGUgb3BqX3JlYWRfaGVhZGVyIGZ1bmN0aW9uIGlzIG5vdCBhIGRlY29tcHJlc3NvciBoYW5kbGVyLgoAVGlsZXMgZG9uJ3QgYWxsIGhhdmUgdGhlIHNhbWUgZGltZW5zaW9uLiBTa2lwIHRoZSBNQ1Qgc3RlcC4KAE51bWJlciBvZiBjb21wb25lbnRzICglZCkgaXMgaW5jb25zaXN0ZW50IHdpdGggYSBNQ1QuIFNraXAgdGhlIE1DVCBzdGVwLgoASlAyIGJveCB3aGljaCBhcmUgYWZ0ZXIgdGhlIGNvZGVzdHJlYW0gd2lsbCBub3QgYmUgcmVhZCBieSB0aGlzIGZ1bmN0aW9uLgoATWFsZm9ybWVkIEhUIGNvZGVibG9jay4gV2hlbiB0aGUgbnVtYmVyIG9mIHplcm8gcGxhbmVzIGJpdHBsYW5lcyBpcyBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIGJpdHBsYW5lcywgb25seSB0aGUgY2xlYW51cCBwYXNzIG1ha2VzIHNlbnNlLCBidXQgd2UgaGF2ZSAlZCBwYXNzZXMgaW4gdGhpcyBjb2RlYmxvY2suIFRoZXJlZm9yZSwgb25seSB0aGUgY2xlYW51cCBwYXNzIHdpbGwgYmUgZGVjb2RlZC4gVGhpcyBtZXNzYWdlIHdpbGwgbm90IGJlIGRpc3BsYXllZCBhZ2Fpbi4KAEltYWdlIGhhcyBsZXNzIGNvbXBvbmVudHMgdGhhbiBjb2Rlc3RyZWFtLgoATmVlZCB0byBkZWNvZGUgdGhlIG1haW4gaGVhZGVyIGJlZm9yZSBiZWdpbiB0byBkZWNvZGUgdGhlIHJlbWFpbmluZyBjb2Rlc3RyZWFtLgoAUHNvdCB2YWx1ZSBvZiB0aGUgY3VycmVudCB0aWxlLXBhcnQgaXMgZXF1YWwgdG8gemVybywgd2UgYXNzdW1pbmcgaXQgaXMgdGhlIGxhc3QgdGlsZS1wYXJ0IG9mIHRoZSBjb2Rlc3RyZWFtLgoAQSBtYWxmb3JtZWQgY29kZWJsb2NrIHRoYXQgaGFzIG1vcmUgdGhhbiBvbmUgY29kaW5nIHBhc3MsIGJ1dCB6ZXJvIGxlbmd0aCBmb3IgMm5kIGFuZCBwb3RlbnRpYWxseSB0aGUgM3JkIHBhc3MgaW4gYW4gSFQgY29kZWJsb2NrLgoACQkJIHRpbGUtcGFydFslZF06IHN0YXJfcG9zPSVsbGksIGVuZF9oZWFkZXI9JWxsaSwgZW5kX3Bvcz0lbGxpLgoAVGlsZSAldSBoYXMgVFBzb3QgPT0gMCBhbmQgVE5zb3QgPT0gMCwgYnV0IG5vIG90aGVyIHRpbGUtcGFydHMgd2VyZSBmb3VuZC4gRU9DIGlzIGFsc28gbWlzc2luZy4KAENvbXBvbmVudCAlZCBkb2Vzbid0IGhhdmUgYSBtYXBwaW5nLgoAQSBjb25mb3JtaW5nIEpQMiByZWFkZXIgc2hhbGwgaWdub3JlIGFsbCBDb2xvdXIgU3BlY2lmaWNhdGlvbiBib3hlcyBhZnRlciB0aGUgZmlyc3QsIHNvIHdlIGlnbm9yZSB0aGlzIG9uZS4KAFRoZSBzaWduYXR1cmUgYm94IG11c3QgYmUgdGhlIGZpcnN0IGJveCBpbiB0aGUgZmlsZS4KAFRoZSAgYm94IG11c3QgYmUgdGhlIGZpcnN0IGJveCBpbiB0aGUgZmlsZS4KAFRoZSBmdHlwIGJveCBtdXN0IGJlIHRoZSBzZWNvbmQgYm94IGluIHRoZSBmaWxlLgoARmFpbGVkIHRvIGRlY29kZS4KAE1hbGZvcm1lZCBIVCBjb2RlYmxvY2suIEluY29ycmVjdCBNRUwgc2VnbWVudCBzZXF1ZW5jZS4KAENvbXBvbmVudCAlZCBpcyBtYXBwZWQgdHdpY2UuCgBPbmx5IG9uZSBDTUFQIGJveCBpcyBhbGxvd2VkLgoAYXBwbHlfY29sb3JfdHJhbnNmb3JtcyA9IE9QSl9UUlVFIGlzIG5vdCBzdXBwb3J0ZWQuCgBXZSBuZWVkIGFuIGltYWdlIHByZXZpb3VzbHkgY3JlYXRlZC4KAElIRFIgYm94X21pc3NpbmcuIFJlcXVpcmVkLgoASlAySCBib3ggbWlzc2luZy4gUmVxdWlyZWQuCgBOb3Qgc3VyZSBob3cgdGhhdCBoYXBwZW5lZC4KAE1haW4gaGVhZGVyIGhhcyBiZWVuIGNvcnJlY3RseSBkZWNvZGVkLgoAVGlsZSAlZC8lZCBoYXMgYmVlbiBkZWNvZGVkLgoASGVhZGVyIG9mIHRpbGUgJWQgLyAlZCBoYXMgYmVlbiByZWFkLgoARW1wdHkgU09UIG1hcmtlciBkZXRlY3RlZDogUHNvdD0lZC4KAERpcmVjdCB1c2UgYXQgIyVkIGhvd2V2ZXIgcGNvbD0lZC4KAEltcGxlbWVudGF0aW9uIGxpbWl0YXRpb246IGZvciBwYWxldHRlIG1hcHBpbmcsIHBjb2xbJWRdIHNob3VsZCBiZSBlcXVhbCB0byAlZCwgYnV0IGlzIGVxdWFsIHRvICVkLgoASW52YWxpZCBjb21wb25lbnQvcGFsZXR0ZSBpbmRleCBmb3IgZGlyZWN0IG1hcHBpbmcgJWQuCgBJbnZhbGlkIHZhbHVlIGZvciBjbWFwWyVkXS5tdHlwID0gJWQuCgBQc290IHZhbHVlIGlzIG5vdCBjb3JyZWN0IHJlZ2FyZHMgdG8gdGhlIEpQRUcyMDAwIG5vcm06ICVkLgoATWFsZm9ybWVkIEhUIGNvZGVibG9jay4gVkxDIGNvZGUgcHJvZHVjZXMgc2lnbmlmaWNhbnQgc2FtcGxlcyBvdXRzaWRlIHRoZSBjb2RlYmxvY2sgYXJlYS4KAFVuZXhwZWN0ZWQgT09NLgoAMzIgYml0cyBhcmUgbm90IGVub3VnaCB0byBkZWNvZGUgdGhpcyBjb2RlYmxvY2ssIHNpbmNlIHRoZSBudW1iZXIgb2YgYml0cGxhbmUsICVkLCBpcyBsYXJnZXIgdGhhbiAzMC4KAEJvdHRvbSBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feTE9JWQpIHNob3VsZCBiZSA+IDAuCgBSaWdodCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDE9JWQpIHNob3VsZCBiZSA+IDAuCgBVcCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feTA9JWQpIHNob3VsZCBiZSA+PSAwLgoATGVmdCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDA9JWQpIHNob3VsZCBiZSA+PSAwLgoARXJyb3IgcmVhZGluZyBQUFQgbWFya2VyOiBwYWNrZXQgaGVhZGVyIGhhdmUgYmVlbiBwcmV2aW91c2x5IGZvdW5kIGluIHRoZSBtYWluIGhlYWRlciAoUFBNIG1hcmtlcikuCgBTdGFydCB0byByZWFkIGoyayBtYWluIGhlYWRlciAoJWxsZCkuCgBCb3R0b20gcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3kxPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChZc2l6PSVkKS4KAFVwIHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl95MD0lZCkgaXMgb3V0c2lkZSB0aGUgaW1hZ2UgYXJlYSAoWXNpej0lZCkuCgBSaWdodCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDE9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFhzaXo9JWQpLgoATGVmdCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDA9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFhzaXo9JWQpLgoAQm90dG9tIHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl95MT0lZCkgaXMgb3V0c2lkZSB0aGUgaW1hZ2UgYXJlYSAoWU9zaXo9JWQpLgoAVXAgcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3kwPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChZT3Npej0lZCkuCgBSaWdodCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDE9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFhPc2l6PSVkKS4KAExlZnQgcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3gwPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChYT3Npej0lZCkuCgBTaXplIHggb2YgdGhlIGRlY29kZWQgY29tcG9uZW50IGltYWdlIGlzIGluY29ycmVjdCAoY29tcFslZF0udz0lZCkuCgBTaXplIHkgb2YgdGhlIGRlY29kZWQgY29tcG9uZW50IGltYWdlIGlzIGluY29ycmVjdCAoY29tcFslZF0uaD0lZCkuCgBUaWxlIHJlYWQsIGRlY29kZWQgYW5kIHVwZGF0ZWQgaXMgbm90IHRoZSBkZXNpcmVkIG9uZSAoJWQgdnMgJWQpLgoASW52YWxpZCBjb21wb25lbnQgaW5kZXggJWQgKD49ICVkKS4KAG9wal9yZWFkX2hlYWRlcigpIHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlIG9wal9zZXRfZGVjb2RlZF9jb21wb25lbnRzKCkuCgBNZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlIGluIG9wal9qcDJfYXBwbHlfcGNscigpLgoAaW1hZ2UtPmNvbXBzWyVkXS5kYXRhID09IE5VTEwgaW4gb3BqX2pwMl9hcHBseV9wY2xyKCkuCgBpbnZhbGlkIGJveCBzaXplICVkICgleCkKAEZhaWwgdG8gcmVhZCB0aGUgY3VycmVudCBtYXJrZXIgc2VnbWVudCAoJSN4KQoARXJyb3Igd2l0aCBTSVogbWFya2VyOiBJSERSIHcoJXUpIGgoJXUpIHZzLiBTSVogdygldSkgaCgldSkKAEVycm9yIHJlYWRpbmcgQ09DIG1hcmtlciAoYmFkIG51bWJlciBvZiBjb21wb25lbnRzKQoASW52YWxpZCBudW1iZXIgb2YgdGlsZXMgOiAldSB4ICV1IChtYXhpbXVtIGZpeGVkIGJ5IGpwZWcyMDAwIG5vcm0gaXMgNjU1MzUgdGlsZXMpCgBJbnZhbGlkIG51bWJlciBvZiBjb21wb25lbnRzIChpaGRyKQoATm90IGVub3VnaCBtZW1vcnkgdG8gaGFuZGxlIGltYWdlIGhlYWRlciAoaWhkcikKAFdyb25nIHZhbHVlcyBmb3I6IHcoJWQpIGgoJWQpIG51bWNvbXBzKCVkKSAoaWhkcikKAEludmFsaWQgdmFsdWVzIGZvciBjb21wID0gJWQgOiBkeD0ldSBkeT0ldSAoc2hvdWxkIGJlIGJldHdlZW4gMSBhbmQgMjU1IGFjY29yZGluZyB0byB0aGUgSlBFRzIwMDAgbm9ybSkKAEJhZCBpbWFnZSBoZWFkZXIgYm94IChiYWQgc2l6ZSkKAEJhZCBDT0xSIGhlYWRlciBib3ggKGJhZCBzaXplKQoAQmFkIEJQQ0MgaGVhZGVyIGJveCAoYmFkIHNpemUpCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IG5lZ2F0aXZlIG9yIHplcm8gaW1hZ2Ugc2l6ZSAoJWxsZCB4ICVsbGQpCgBza2lwOiBzZWdtZW50IHRvbyBsb25nICglZCkgd2l0aCBtYXggKCVkKSBmb3IgY29kZWJsb2NrICVkIChwPSVkLCBiPSVkLCByPSVkLCBjPSVkKQoAcmVhZDogc2VnbWVudCB0b28gbG9uZyAoJWQpIHdpdGggbWF4ICglZCkgZm9yIGNvZGVibG9jayAlZCAocD0lZCwgYj0lZCwgcj0lZCwgYz0lZCkKAERlc3BpdGUgSlAyIEJQQyE9MjU1LCBwcmVjaXNpb24gYW5kL29yIHNnbmQgdmFsdWVzIGZvciBjb21wWyVkXSBpcyBkaWZmZXJlbnQgdGhhbiBjb21wWzBdOgogICAgICAgIFswXSBwcmVjKCVkKSBzZ25kKCVkKSBbJWRdIHByZWMoJWQpIHNnbmQoJWQpCgBiYWQgY29tcG9uZW50IG51bWJlciBpbiBSR04gKCVkIHdoZW4gdGhlcmUgYXJlIG9ubHkgJWQpCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IG51bWJlciBvZiBjb21wb25lbnQgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgcmVtYWluaW5nIG51bWJlciBvZiBwYXJhbWV0ZXJzICggJWQgdnMgJWQpCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IGludmFsaWQgdGlsZSBzaXplICh0ZHg6ICVkLCB0ZHk6ICVkKQoAQmFkIENPTFIgaGVhZGVyIGJveCAoYmFkIHNpemU6ICVkKQoAQmFkIENPTFIgaGVhZGVyIGJveCAoQ0lFTGFiLCBiYWQgc2l6ZTogJWQpCgBQVEVSTSBjaGVjayBmYWlsdXJlOiAlZCByZW1haW5pbmcgYnl0ZXMgaW4gY29kZSBibG9jayAoJWQgdXNlZCAvICVkKQoATWFsZm9ybWVkIEhUIGNvZGVibG9jay4gT25lIG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uIGlzIG5vdCBtZXQ6IDIgPD0gU2N1cCA8PSBtaW4oTGN1cCwgNDA3OSkKAEludmFsaWQgdmFsdWVzIGZvciBjb21wID0gJWQgOiBwcmVjPSV1IChzaG91bGQgYmUgYmV0d2VlbiAxIGFuZCAzOCBhY2NvcmRpbmcgdG8gdGhlIEpQRUcyMDAwIG5vcm0uIE9wZW5KcGVnIG9ubHkgc3VwcG9ydHMgdXAgdG8gMzEpCgBJbnZhbGlkIGJpdCBudW1iZXIgJWQgaW4gb3BqX3QyX3JlYWRfcGFja2V0X2hlYWRlcigpCgBTdHJlYW0gZXJyb3IhCgBFcnJvciBvbiB3cml0aW5nIHN0cmVhbSEKAFN0cmVhbSByZWFjaGVkIGl0cyBlbmQgIQoARXhwZWN0ZWQgYSBTT0MgbWFya2VyIAoASW52YWxpZCBib3ggc2l6ZSAlZCBmb3IgYm94ICclYyVjJWMlYycuIE5lZWQgJWQgYnl0ZXMsICVkIGJ5dGVzIHJlbWFpbmluZyAKAE1hbGZvcm1lZCBIVCBjb2RlYmxvY2suIERlY29kaW5nIHRoaXMgY29kZWJsb2NrIGlzIHN0b3BwZWQuIFVfcSBpcyBsYXJnZXIgdGhhbiB6ZXJvIGJpdHBsYW5lcyArIDEgCgBNYWxmb3JtZWQgSFQgY29kZWJsb2NrLiBEZWNvZGluZyB0aGlzIGNvZGVibG9jayBpcyBzdG9wcGVkLiBVX3EgaXNsYXJnZXIgdGhhbiBiaXRwbGFuZXMgKyAxIAoAQ09MUiBCT1ggbWV0aCB2YWx1ZSBpcyBub3QgYSByZWd1bGFyIHZhbHVlICglZCksIHNvIHdlIHdpbGwgaWdub3JlIHRoZSBlbnRpcmUgQ29sb3VyIFNwZWNpZmljYXRpb24gYm94LiAKAFdoaWxlIHJlYWRpbmcgQ0NQX1FOVFNUWSBlbGVtZW50IGluc2lkZSBRQ0Qgb3IgUUNDIG1hcmtlciBzZWdtZW50LCBudW1iZXIgb2Ygc3ViYmFuZHMgKCVkKSBpcyBncmVhdGVyIHRvIE9QSl9KMktfTUFYQkFORFMgKCVkKS4gU28gd2UgbGltaXQgdGhlIG51bWJlciBvZiBlbGVtZW50cyBzdG9yZWQgdG8gT1BKX0oyS19NQVhCQU5EUyAoJWQpIGFuZCBza2lwIHRoZSByZXN0LiAKAEpQMiBJSERSIGJveDogY29tcHJlc3Npb24gdHlwZSBpbmRpY2F0ZSB0aGF0IHRoZSBmaWxlIGlzIG5vdCBhIGNvbmZvcm1pbmcgSlAyIGZpbGUgKCVkKSAKAFRpbGUgaW5kZXggcHJvdmlkZWQgYnkgdGhlIHVzZXIgaXMgaW5jb3JyZWN0ICVkIChtYXggPSAlZCkgCgBFcnJvciBkZWNvZGluZyBjb21wb25lbnQgJWQuClRoZSBudW1iZXIgb2YgcmVzb2x1dGlvbnMgdG8gcmVtb3ZlICglZCkgaXMgZ3JlYXRlciBvciBlcXVhbCB0aGFuIHRoZSBudW1iZXIgb2YgcmVzb2x1dGlvbnMgb2YgdGhpcyBjb21wb25lbnQgKCVkKQpNb2RpZnkgdGhlIGNwX3JlZHVjZSBwYXJhbWV0ZXIuCgoASW1hZ2UgZGF0YSBoYXMgYmVlbiB1cGRhdGVkIHdpdGggdGlsZSAlZC4KCgBBsP0AC4AgIwClAEMAZgCDAO6oFADf2CMAvhBDAP\u002F1gwB+IFUAX1EjADUAQwBORIMAzsQUAM\u002FMIwD+4kMA\u002F5mDAJYAxQA\u002FMSMApQBDAF5EgwDOyBQA3xEjAP70QwD\u002F\u002FIMAngBVAHcAIwA1AEMA\u002F\u002FGDAK6IFAC3ACMA\u002FvhDAO\u002FkgwCOiMUAHxEjAKUAQwBmAIMA7qgUAN9UIwC+EEMA7yKDAH4gVQB\u002FIiMANQBDAE5EgwDOxBQAvxEjAP7iQwD3AIMAlgDFAD8iIwClAEMAXkSDAM7IFADXACMA\u002FvRDAP+6gwCeAFUAbwAjADUAQwD\u002F5oMArogUAK+iIwD++EMA5wCDAI6IxQAvIgIAxQCEAH4gAgDOxCQA9wACAP6iRABWAAIAngAUANcAAgC+EIQAZgACAK6IJADfEQIA7qhEADYAAgCOiBQAHxECAMUAhABuAAIAzogkAP+IAgD+uEQATkQCAJYAFAC3AAIA\u002FuSEAF5EAgCmACQA5wACAN5URAAuIgIAPgAUAHcAAgDFAIQAfiACAM7EJAD\u002F8QIA\u002FqJEAFYAAgCeABQAvxECAL4QhABmAAIArogkAO8iAgDuqEQANgACAI6IFAB\u002FIgIAxQCEAG4AAgDOiCQA7+QCAP64RABORAIAlgAUAK+iAgD+5IQAXkQCAKYAJADf2AIA3lREAC4iAgA+ABQAX1ECAFUAhABmAAIA3ogkAP8yAgD+EUQATkQCAK4AFAC3AAIAfjGEAF5RAgDGACQA1wACAO4gRAAeEQIAngAUAHcAAgBVAIQAXlQCAM5EJADnAAIA\u002FvFEADYAAgCmABQAX1UCAP50hAA+EQIAviAkAH90AgDexEQA\u002F\u002FgCAJYAFAAvIgIAVQCEAGYAAgDeiCQA9wACAP4RRABORAIArgAUAI+IAgB+MYQAXlECAMYAJADPyAIA7iBEAB4RAgCeABQAbwACAFUAhABeVAIAzkQkAN\u002FRAgD+8UQANgACAKYAFAB\u002FIgIA\u002FnSEAD4RAgC+ICQAvyICAN7ERADvIgIAlgAUAD8yAwDe1P30\u002F\u002FwUAD4RVQCPiAMAvjKFAOcAJQBeUf6qf3IDAM5E\u002FfjvRBQAfmRFAK+iAwCmAF1V35n98TYA\u002FvVvYgMA3tH99P\u002FmFAB+cVUAv7EDAK6IhQDf1SUATkT+8n9mAwDGAP347+IUAF5URQCfEQMAlgBdVc\u002FI\u002FfEeEe7IZwADAN7U\u002FfT\u002F8xQAPhFVAL8RAwC+MoUA39glAF5R\u002FqovIgMAzkT9+PcAFAB+ZEUAn5gDAKYAXVXXAP3xNgD+9W9EAwDe0f30\u002F7kUAH5xVQC3AAMAroiFAN\u002FcJQBORP7ydwADAMYA\u002Ffjv5BQAXlRFAH9zAwCWAF1Vv7j98R4R7sg\u002FMgIApQCEAH5AAgDeECQA3xECAP5yRABWAAIArqgUAL+yAgCWAIQAZgACAMYAJADnAAIA7shEAC4iAgCOiBQAdwACAKUAhABuAAIAzogkAPcAAgD+kUQANgACAK6iFACvqgIA\u002FriEAF4AAgC+ACQAz8QCAO5ERAD\u002F9AIAPiIUAB8RAgClAIQAfkACAN4QJAD\u002FmQIA\u002FnJEAFYAAgCuqBQAtwACAJYAhABmAAIAxgAkANcAAgDuyEQALiICAI6IFABPRAIApQCEAG4AAgDOiCQA7+ICAP6RRAA2AAIArqIUAH9EAgD+uIQAXgACAL4AJACfAAIA7kREAP92AgA+IhQAPzEDAMYAhQD\u002F2f3yfmT+8b+ZAwCuoiUA72b99FYA7uJ\u002FcwMAvphFAPcA\u002FfhmAP52n4gDAI6IFQDf1aUALiLemE9EAwC+soUA\u002F\u002Fz98m4ilgC3AAMArqolAN\u002FR\u002FfQ2AN7Ub2QDAK6oRQDv6v34XkTu6H9xAwA+MhUAz8SlAP\u002F6zog\u002FMQMAxgCFAP93\u002FfJ+ZP7xv7MDAK6iJQDnAP30VgDu4ncAAwC+mEUA7+T9+GYA\u002FnZ\u002FZgMAjogVANcApQAuIt6YPzMDAL6yhQD\u002Fdf3ybiKWAJ+RAwCuqiUA35n99DYA3tRfUQMArqhFAO\u002Fs\u002FfheRO7of3IDAD4yFQC\u002FsaUA\u002F\u002FPOiB8RAwDeVP3yHhEUAH5k\u002FvjPzAMAvpFFAO8iJQAuIv7zj4gDAMYAhQD3ABQAXhH+\u002FK+oAwCmADUA38j98T4x\u002FmZvZAMAzsj98v\u002F1FABmAP70v7oDAK4iRQDnACUAPjL+6n9zAwC+soUA31UUAFYAfnGfEQMAlgA1AM\u002FE\u002FfE+M+7oT0QDAN5U\u002FfIeERQAfmT++L+ZAwC+kUUA7+IlAC4i\u002FvN\u002FZgMAxgCFAO\u002FkFABeEf78n5gDAKYANQDXAP3xPjH+Zm8iAwDOyP3y\u002F7kUAGYA\u002FvS3AAMAriJFAN\u002FRJQA+Mv7qdwADAL6yhQDv7BQAVgB+cX9yAwCWADUAv7j98T4z7uhfVPzx3tH9+tcA\u002FPgWAP3\u002Ff3T89H5x\u002FfO\u002Fs\u002Fzy7+ru6E9E\u002FPGuIgUAv7j8+PcA\u002Fvx3APz0XhH99X91\u002FPLf2O7iPzP88b6y\u002FfrPiPz4\u002F\u002Fv9\u002F39z\u002FPRuAP3ztwD88u9m\u002Fvk\u002FMfzxngAFAL+6\u002FPj\u002F\u002Ff72ZwD89CYA\u002FfWPiPzy39ze1C8i\u002FPHe0f36z8T8+BYA\u002Ff9\u002Fcvz0fnH987+Z\u002FPLv7O7oRwD88a4iBQCnAPz4\u002F\u002Ff+\u002FFcA\u002FPReEf31lwD88t\u002FV7uI3APzxvrL9+scA\u002FPj\u002F\u002Fv3\u002Ff2b89G4A\u002FfOvqPzy5wD++T8y\u002FPGeAAUAv7H8+O\u002Fk\u002FvZfVPz0JgD99YcA\u002FPLfmd7UHxETAGUAQwDeAIMAjYgjAE5EEwClAEMAroiDADUAIwDXABMAxQBDAJ4AgwBVACMALiITAJUAQwB+AIMA\u002FhAjAHcAEwBlAEMAzoiDAI2IIwAeERMApQBDAF4AgwA1ACMA5wATAMUAQwC+AIMAVQAjAP8REwCVAEMAPgCDAO5AIwCvohMAZQBDAN4AgwCNiCMATkQTAKUAQwCuiIMANQAjAO9EEwDFAEMAngCDAFUAIwAuIhMAlQBDAH4AgwD+ECMAtwATAGUAQwDOiIMAjYgjAB4REwClAEMAXgCDADUAIwDPxBMAxQBDAL4AgwBVACMA9wATAJUAQwA+AIMA7kAjAG8AAQCEAAEAVgABABQAAQDXAAEAJAABAJYAAQBFAAEAdwABAIQAAQDGAAEAFAABAI+IAQAkAAEA9wABADUAAQAvIgEAhAABAP5AAQAUAAEAtwABACQAAQC\u002FAAEARQABAGcAAQCEAAEApgABABQAAQBPRAEAJAABAOcAAQA1AAEAPxEBAIQAAQBWAAEAFAABAM8AAQAkAAEAlgABAEUAAQBvAAEAhAABAMYAAQAUAAEAnwABACQAAQDvAAEANQABAD8yAQCEAAEA\u002FkABABQAAQCvAAEAJAABAP9EAQBFAAEAXwABAIQAAQCmAAEAFAABAH8AAQAkAAEA3wABADUAAQAfEQEAJAABAFYAAQCFAAEAvwABABQAAQD3AAEAxgABAHcAAQAkAAEA\u002F\u002FgBAEUAAQB\u002FAAEAFAABAN8AAQCmAAEAPzEBACQAAQAuIgEAhQABALcAAQAUAAEA70QBAK6iAQBnAAEAJAABAP9RAQBFAAEAlwABABQAAQDPAAEANgABAD8iAQAkAAEAVgABAIUAAQC\u002FsgEAFAABAO9AAQDGAAEAbwABACQAAQD\u002FcgEARQABAJ8AAQAUAAEA1wABAKYAAQBPRAEAJAABAC4iAQCFAAEAr6gBABQAAQDnAAEArqIBAF8AAQAkAAEA\u002F0QBAEUAAQCPiAEAFAABAK+qAQA2AAEAHxECAP74JABWAAIAtgCFAP9mAgDOABQAHhECAJYANQCvqAIA9gAkAD4xAgCmAEUAv7MCAL6yFAD\u002F9QIAZgB+UV9UAgD+8iQALiICAK4ihQDvRAIAxgAUAP\u002F0AgB2ADUAf0QCAN5AJAA+MgIAngBFANcAAgC+iBQA\u002F\u002FoCAF4R\u002FvFPRAIA\u002FvgkAFYAAgC2AIUA78gCAM4AFAAeEQIAlgA1AI+IAgD2ACQAPjECAKYARQDfRAIAvrIUAP+oAgBmAH5RbwACAP7yJAAuIgIAriKFAOcAAgDGABQA7+ICAHYANQB\u002FcgIA3kAkAD4yAgCeAEUAv7ECAL6IFAD\u002FcwIAXhH+8T8zAQCEAAEA7iABAMUAAQDPxAEARAABAP8yAQAVAAEAj4gBAIQAAQBmAAEAJQABAK8AAQBEAAEA7yIBAKYAAQBfAAEAhAABAE5EAQDFAAEAz8wBAEQAAQD3AAEAFQABAG8AAQCEAAEAVgABACUAAQCfAAEARAABAN8AAQD+MAEALyIBAIQAAQDuIAEAxQABAM\u002FIAQBEAAEA\u002FxEBABUAAQB3AAEAhAABAGYAAQAlAAEAfwABAEQAAQDnAAEApgABADcAAQCEAAEATkQBAMUAAQC3AAEARAABAL8AAQAVAAEAPwABAIQAAQBWAAEAJQABAJcAAQBEAAEA1wABAP4wAQAfEQIA7qhEAI6IAgDWAMUA\u002F\u002FMCAP78JQA+AAIAtgBVAN\u002FYAgD++EQAZgACAH4ghQD\u002FmQIA5gD1ADYAAgCmABUAnwACAP7yRAB2AAIAzkTFAP92AgD+8SUATkQCAK4AVQDPyAIA\u002FvREAF5EAgC+EIUA7+QCAN5U9QAeEQIAlgAVAC8iAgDuqEQAjogCANYAxQD\u002F+gIA\u002FvwlAD4AAgC2AFUAvxECAP74RABmAAIAfiCFAO8iAgDmAPUANgACAKYAFQB\u002FIgIA\u002FvJEAHYAAgDORMUA\u002F9UCAP7xJQBORAIArgBVAG8AAgD+9EQAXkQCAL4QhQDfEQIA3lT1AB4RAgCWABUAX1EDAPYAFAAeEUQAjoilAN\u002FUAwCuolUA\u002F3YkAD4itgCvqgMA5gAUAP\u002F1RABmAIUAz8wDAJ4AxQDvRCQANgD++H8xAwDu6BQA\u002F\u002FFEAHYApQDPxAMAfiJVAN\u002FRJABORP70X1EDANYAFADv4kQAXkSFAL8iAwCWAMUA38gkAC4i\u002FvJvIgMA9gAUAB4RRACOiKUAv7EDAK6iVQD\u002FMyQAPiK2AK+oAwDmABQA\u002F7lEAGYAhQC\u002FqAMAngDFAO\u002FkJAA2AP74b2QDAO7oFAD\u002F\u002FEQAdgClAM\u002FIAwB+IlUA7+okAE5E\u002FvR\u002FdAMA1gAUAP\u002F6RABeRIUAv7IDAJYAxQDfRCQALiL+8j8x8wD++v3xNgAEAL4ydQDfEfMA3lT98u\u002Fk1QB+cf78f3PzAP7z\u002FfgeEQQAlgBVAL+x8wDOALUA39j99GYA\u002FrlfVPMA\u002Fnb98SYABACmAHUAnwDzAK4A\u002FfL\u002F99UARgD+9X908wDmAP34FgAEAIYAVQCPiPMAxgC1AO\u002Fi\u002FfReEe6oPxHzAP76\u002FfE2AAQAvjJ1AN\u002FR8wDeVP3y\u002F\u002FvVAH5x\u002Fvx\u002FRPMA\u002FvP9+B4RBACWAFUAf3LzAM4AtQDvIv30ZgD+uU9E8wD+dv3xJgAEAKYAdQC\u002FEfMArgD98v\u002F\u002F1QBGAP71PzLzAOYA\u002FfgWAAQAhgBVAG8A8wDGALUAv7j99F4R7qgvIgBBvJ0BC6QeAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAwAAAAMAAAAEAAAABQAAALchQiFnIUIhERERETMzMzN3d3d3AAAAAAAAAAABVgAAAAAAACBPAAAwTwAAAVYAAAEAAAAwTwAAIE8AAAE0AAAAAAAAQE8AAMBPAAABNAAAAQAAAFBPAADQTwAAARgAAAAAAABgTwAAIFAAAAEYAAABAAAAcE8AADBQAADBCgAAAAAAAIBPAACAUAAAwQoAAAEAAACQTwAAkFAAACEFAAAAAAAAoE8AAKBSAAAhBQAAAQAAALBPAACwUgAAIQIAAAAAAADAUwAAIFMAACECAAABAAAA0FMAADBTAAABVgAAAAAAAOBPAADQTwAAAVYAAAEAAADwTwAAwE8AAAFUAAAAAAAAAFAAAMBQAAABVAAAAQAAABBQAADQUAAAAUgAAAAAAAAgUAAAwFAAAAFIAAABAAAAMFAAANBQAAABOAAAAAAAAEBQAADAUAAAATgAAAEAAABQUAAA0FAAAAEwAAAAAAAAYFAAACBRAAABMAAAAQAAAHBQAAAwUQAAASQAAAAAAACAUAAAQFEAAAEkAAABAAAAkFAAAFBRAAABHAAAAAAAAKBQAACAUQAAARwAAAEAAACwUAAAkFEAAAEWAAAAAAAAoFIAAKBRAAABFgAAAQAAALBSAACwUQAAAVYAAAAAAADgUAAA0FAAAAFWAAABAAAA8FAAAMBQAAABVAAAAAAAAABRAADAUAAAAVQAAAEAAAAQUQAA0FAAAAFRAAAAAAAAIFEAAOBQAAABUQAAAQAAADBRAADwUAAAAUgAAAAAAABAUQAAAFEAAAFIAAABAAAAUFEAABBRAAABOAAAAAAAAGBRAAAgUQAAATgAAAEAAABwUQAAMFEAAAE0AAAAAAAAgFEAAEBRAAABNAAAAQAAAJBRAABQUQAAATAAAAAAAACgUQAAYFEAAAEwAAABAAAAsFEAAHBRAAABKAAAAAAAAMBRAABgUQAAASgAAAEAAADQUQAAcFEAAAEkAAAAAAAA4FEAAIBRAAABJAAAAQAAAPBRAACQUQAAASIAAAAAAAAAUgAAoFEAAAEiAAABAAAAEFIAALBRAAABHAAAAAAAACBSAADAUQAAARwAAAEAAAAwUgAA0FEAAAEYAAAAAAAAQFIAAOBRAAABGAAAAQAAAFBSAADwUQAAARYAAAAAAABgUgAAAFIAAAEWAAABAAAAcFIAABBSAAABFAAAAAAAAIBSAAAgUgAAARQAAAEAAACQUgAAMFIAAAESAAAAAAAAoFIAAEBSAAABEgAAAQAAALBSAABQUgAAAREAAAAAAADAUgAAYFIAAAERAAABAAAA0FIAAHBSAADBCgAAAAAAAOBSAACAUgAAwQoAAAEAAADwUgAAkFIAAMEJAAAAAAAAAFMAAKBSAADBCQAAAQAAABBTAACwUgAAoQgAAAAAAAAgUwAAwFIAAKEIAAABAAAAMFMAANBSAAAhBQAAAAAAAEBTAADgUgAAIQUAAAEAAABQUwAA8FIAAEEEAAAAAAAAYFMAAABTAABBBAAAAQAAAHBTAAAQUwAAoQIAAAAAAACAUwAAIFMAAKECAAABAAAAkFMAADBTAAAhAgAAAAAAAKBTAABAUwAAIQIAAAEAAACwUwAAUFMAAEEBAAAAAAAAwFMAAGBTAABBAQAAAQAAANBTAABwUwAAEQEAAAAAAADgUwAAgFMAABEBAAABAAAA8FMAAJBTAACFAAAAAAAAAABUAACgUwAAhQAAAAEAAAAQVAAAsFMAAEkAAAAAAAAAIFQAAMBTAABJAAAAAQAAADBUAADQUwAAJQAAAAAAAABAVAAA4FMAACUAAAABAAAAUFQAAPBTAAAVAAAAAAAAAGBUAAAAVAAAFQAAAAEAAABwVAAAEFQAAAkAAAAAAAAAgFQAACBUAAAJAAAAAQAAAJBUAAAwVAAABQAAAAAAAACgVAAAQFQAAAUAAAABAAAAsFQAAFBUAAABAAAAAAAAAKBUAABgVAAAAQAAAAEAAACwVAAAcFQAAAFWAAAAAAAAwFQAAMBUAAABVgAAAQAAANBUAADQVAAAAAEDAwECAwMFBgcHBgYHBwABAwMBAgMDBQYHBwYGBwcFBgcHBgYHBwgICAgICAgIBQYHBwYGBwcICAgICAgICAECAwMCAgMDBgYHBwYGBwcBAgMDAgIDAwYGBwcGBgcHBgYHBwYGBwcICAgICAgICAYGBwcGBgcHCAgICAgICAgDAwQEAwMEBAcHBwcHBwcHAwMEBAMDBAQHBwcHBwcHBwcHBwcHBwcHCAgICAgICAgHBwcHBwcHBwgICAgICAgIAwMEBAMDBAQHBwcHBwcHBwMDBAQDAwQEBwcHBwcHBwcHBwcHBwcHBwgICAgICAgIBwcHBwcHBwcICAgICAgICAECAwMCAgMDBgYHBwYGBwcBAgMDAgIDAwYGBwcGBgcHBgYHBwYGBwcICAgICAgICAYGBwcGBgcHCAgICAgICAgCAgMDAgIDAwYGBwcGBgcHAgIDAwICAwMGBgcHBgYHBwYGBwcGBgcHCAgICAgICAgGBgcHBgYHBwgICAgICAgIAwMEBAMDBAQHBwcHBwcHBwMDBAQDAwQEBwcHBwcHBwcHBwcHBwcHBwgICAgICAgIBwcHBwcHBwcICAgICAgICAMDBAQDAwQEBwcHBwcHBwcDAwQEAwMEBAcHBwcHBwcHBwcHBwcHBwcICAgICAgICAcHBwcHBwcHCAgICAgICAgAAQUGAQIGBgMDBwcDAwcHAAEFBgECBgYDAwcHAwMHBwMDBwcDAwcHBAQHBwQEBwcDAwcHAwMHBwQEBwcEBAcHAQIGBgICBgYDAwcHAwMHBwECBgYCAgYGAwMHBwMDBwcDAwcHAwMHBwQEBwcEBAcHAwMHBwMDBwcEBAcHBAQHBwUGCAgGBggIBwcICAcHCAgFBggIBgYICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgGBggIBgYICAcHCAgHBwgIBgYICAYGCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIAQIGBgICBgYDAwcHAwMHBwECBgYCAgYGAwMHBwMDBwcDAwcHAwMHBwQEBwcEBAcHAwMHBwMDBwcEBAcHBAQHBwICBgYCAgYGAwMHBwMDBwcCAgYGAgIGBgMDBwcDAwcHAwMHBwMDBwcEBAcHBAQHBwMDBwcDAwcHBAQHBwQEBwcGBggIBgYICAcHCAgHBwgIBgYICAYGCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBgYICAYGCAgHBwgIBwcICAYGCAgGBggIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAABAwMBAgMDBQYHBwYGBwcAAQMDAQIDAwUGBwcGBgcHBQYHBwYGBwcICAgICAgICAUGBwcGBgcHCAgICAgICAgBAgMDAgIDAwYGBwcGBgcHAQIDAwICAwMGBgcHBgYHBwYGBwcGBgcHCAgICAgICAgGBgcHBgYHBwgICAgICAgIAwMEBAMDBAQHBwcHBwcHBwMDBAQDAwQEBwcHBwcHBwcHBwcHBwcHBwgICAgICAgIBwcHBwcHBwcICAgICAgICAMDBAQDAwQEBwcHBwcHBwcDAwQEAwMEBAcHBwcHBwcHBwcHBwcHBwcICAgICAgICAcHBwcHBwcHCAgICAgICAgBAgMDAgIDAwYGBwcGBgcHAQIDAwICAwMGBgcHBgYHBwYGBwcGBgcHCAgICAgICAgGBgcHBgYHBwgICAgICAgIAgIDAwICAwMGBgcHBgYHBwICAwMCAgMDBgYHBwYGBwcGBgcHBgYHBwgICAgICAgIBgYHBwYGBwcICAgICAgICAMDBAQDAwQEBwcHBwcHBwcDAwQEAwMEBAcHBwcHBwcHBwcHBwcHBwcICAgICAgICAcHBwcHBwcHCAgICAgICAgDAwQEAwMEBAcHBwcHBwcHAwMEBAMDBAQHBwcHBwcHBwcHBwcHBwcHCAgICAgICAgHBwcHBwcHBwgICAgICAgIAAMBBAMGBAcBBAIFBAcFBwADAQQDBgQHAQQCBQQHBQcBBAIFBAcFBwIFAgUFBwUHAQQCBQQHBQcCBQIFBQcFBwMGBAcGCAcIBAcFBwcIBwgDBgQHBggHCAQHBQcHCAcIBAcFBwcIBwgFBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgBBAIFBAcFBwIFAgUFBwUHAQQCBQQHBQcCBQIFBQcFBwIFAgUFBwUHAgUCBQUHBQcCBQIFBQcFBwIFAgUFBwUHBAcFBwcIBwgFBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAUHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAMGBAcGCAcIBAcFBwcIBwgDBgQHBggHCAQHBQcHCAcIBAcFBwcIBwgFBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgGCAcICAgICAcIBwgICAgIBggHCAgICAgHCAcICAgICAcIBwgICAgIBwgHCAgICAgHCAcICAgICAcIBwgICAgIBAcFBwcIBwgFBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAUHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAcIBwgICAgIBwgHCAgICAgHCAcICAgICAcIBwgICAgIBwgHCAgICAgHCAcICAgICAcIBwgICAgIBwgHCAgICAgJCQoKCQkKCgwMDQsMDA0LCQkKCgkJCgoMDAsNDAwLDQwMDQ0MDAsLDAkNCgkMCgsMDAsLDAwNDQwJCwoJDAoNCQkKCgkJCgoMDA0LDAwNCwkJCgoJCQoKDAwLDQwMCw0MDA0NDAwLCwwJDQoJDAoLDAwLCwwMDQ0MCQsKCQwKDQoKCgoKCgoKDQsNCw0LDQsKCgkJCgoJCQ0LDAwNCwwMDQ0NDQsLCwsNCg0KCgsKCw0NDAwLCwwMDQoMCQoLCQwKCgkJCgoJCQsNDAwLDQwMCgoKCgoKCgoLDQsNCw0LDQsLDAwNDQwMCwoMCQoNCQwLCwsLDQ0NDQsKCwoKDQoNAEHpuwELNwEAAQABAAEAAAEBAAABAQABAAEAAQABAAAAAAEBAQEAAAAAAAEAAQAAAAABAQEBAAAAAQABAQEAQam8AQs3AQABAAEAAQAAAQEAAAEBAAEAAQABAAEAAAAAAQEBAQAAAAAAAQABAAAAAAEBAQEAAAABAAEBAQBB6bwBCwcBAAEAAQABAEH5vAELlQIBAAEAAQABAAAAAAEBAQEAAAAAAAEAAQAAAAABAQEBAAAAAAABAAEBAQAAAQEAAAABAAEAAQABAQEBAQEBAQEAAQABAAEAAQAAAAABAQEBAAEAAAEBAAEAAAAAAQEBAQABAAEBAQEBAgAAAAQAAAAEAAAACAAAAJD\u002FAAAMAAAAGAAAAFL\u002FAAAUAAAAGQAAAFP\u002FAAAUAAAAGgAAAF7\u002FAAAUAAAAGwAAAFz\u002FAAAUAAAAHAAAAF3\u002FAAAUAAAAHQAAAF\u002F\u002FAAAUAAAAHgAAAFH\u002FAAACAAAAHwAAAFX\u002FAAAEAAAAIAAAAFf\u002FAAAEAAAAIQAAAFj\u002FAAAQAAAAIgAAAGD\u002FAAAEAAAAIwAAAGH\u002FAAAQAAAAJAAAAJH\u002FAEGYvwELZWP\u002FAAAEAAAAJQAAAGT\u002FAAAUAAAAJgAAAHT\u002FAAAUAAAAJwAAAHj\u002FAAAEAAAAKAAAAFD\u002FAAAEAAAAKQAAAFn\u002FAAAEAAAAKgAAAHX\u002FAAAUAAAAKwAAAHf\u002FAAAUAAAALAAAAAAAAAAUAEGQwAELNS0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAAICBQajYAAABweXRmNwAAAGgycGo4AEHQwAELMnJkaGk5AAAAcmxvYzoAAABjY3BiOwAAAHJsY3A8AAAAcGFtYz0AAABmZWRjPgAAAHhiAEGQwQELQRkACwAZGRkAAAAABQAAAAAAAAkAAAAACwAAAAAAAAAAGQAKChkZGQMKBwABAAkLGAAACQYLAAALAAYZAAAAGRkZAEHhwQELIQ4AAAAAAAAAABkACw0ZGRkADQAAAgAJDgAAAAkADgAADgBBm8IBCwEMAEGnwgELFRMAAAAAEwAAAAAJDAAAAAAADAAADABB1cIBCwEQAEHhwgELFQ8AAAAEDwAAAAAJEAAAAAAAEAAAEABBj8MBCwESAEGbwwELHhEAAAAAEQAAAAAJEgAAAAAAEgAAEgAAGgAAABoaGgBB0sMBCw4aAAAAGhoaAAAAAAAACQBBg8QBCwEUAEGPxAELFRcAAAAAFwAAAAAJFAAAAAAAFAAAFABBvcQBCwEWAEHJxAELJxUAAAAAFQAAAAAJFgAAAAAAFgAAFgAAMDEyMzQ1Njc4OUFCQ0RFRgBB8cQBCwhsAQAAAAAABQBBhMUBCwFpAEGcxQELDmoAAABrAAAA+GcAAAAEAEG0xQELAQEAQcTFAQsF\u002F\u002F\u002F\u002F\u002Fwo=\";\n-      return f;\n-    }\n-    var wasmBinaryFile;\n-    function getBinarySync(file) {\n-      if (file == wasmBinaryFile && wasmBinary) {\n-        return new Uint8Array(wasmBinary);\n-      }\n-      var binary = tryParseAsDataURI(file);\n-      if (binary) {\n-        return binary;\n-      }\n-      if (readBinary) {\n-        return readBinary(file);\n-      }\n-      throw 'sync fetching of the wasm failed: you can preload it to Module[\"wasmBinary\"] manually, or emcc.py will do that for you when generating HTML (but not JS)';\n-    }\n-    function instantiateSync(file, info) {\n-      var module;\n-      var binary = getBinarySync(file);\n-      module = new WebAssembly.Module(binary);\n-      var instance = new WebAssembly.Instance(module, info);\n-      return [instance, module];\n-    }\n-    function getWasmImports() {\n-      return {\n-        \"a\": wasmImports\n-      };\n-    }\n-    function createWasm() {\n-      var info = getWasmImports();\n-      function receiveInstance(instance, module) {\n-        wasmExports = instance.exports;\n-        wasmMemory = wasmExports[\"i\"];\n-        updateMemoryViews();\n-        addOnInit(wasmExports[\"j\"]);\n-        removeRunDependency(\"wasm-instantiate\");\n-        return wasmExports;\n-      }\n-      addRunDependency(\"wasm-instantiate\");\n-      if (Module[\"instantiateWasm\"]) {\n-        try {\n-          return Module[\"instantiateWasm\"](info, receiveInstance);\n-        } catch (e) {\n-          err(`Module.instantiateWasm callback failed with error: ${e}`);\n-          readyPromiseReject(e);\n-        }\n-      }\n-      if (!wasmBinaryFile) wasmBinaryFile = findWasmBinary();\n-      var result = instantiateSync(wasmBinaryFile, info);\n-      return receiveInstance(result[0]);\n-    }\n-    var callRuntimeCallbacks = callbacks => {\n-      while (callbacks.length > 0) {\n-        callbacks.shift()(Module);\n-      }\n-    };\n-    var noExitRuntime = Module[\"noExitRuntime\"] || true;\n-    var __emscripten_memcpy_js = (dest, src, num) => HEAPU8.copyWithin(dest, src, src + num);\n-    var getHeapMax = () => 2147483648;\n-    var growMemory = size => {\n-      var b = wasmMemory.buffer;\n-      var pages = (size - b.byteLength + 65535) \u002F 65536;\n-      try {\n-        wasmMemory.grow(pages);\n-        updateMemoryViews();\n-        return 1;\n-      } catch (e) {}\n-    };\n-    var _emscripten_resize_heap = requestedSize => {\n-      var oldSize = HEAPU8.length;\n-      requestedSize >>>= 0;\n-      var maxHeapSize = getHeapMax();\n-      if (requestedSize > maxHeapSize) {\n-        return false;\n-      }\n-      var alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple;\n-      for (var cutDown = 1; cutDown \u003C= 4; cutDown *= 2) {\n-        var overGrownHeapSize = oldSize * (1 + .2 \u002F cutDown);\n-        overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n-        var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));\n-        var replacement = growMemory(newSize);\n-        if (replacement) {\n-          return true;\n-        }\n-      }\n-      return false;\n-    };\n-    var ENV = {};\n-    var getExecutableName = () => thisProgram || \".\u002Fthis.program\";\n-    var getEnvStrings = () => {\n-      if (!getEnvStrings.strings) {\n-        var lang = (typeof navigator == \"object\" && navigator.languages && navigator.languages[0] || \"C\").replace(\"-\", \"_\") + \".UTF-8\";\n-        var env = {\n-          \"USER\": \"web_user\",\n-          \"LOGNAME\": \"web_user\",\n-          \"PATH\": \"\u002F\",\n-          \"PWD\": \"\u002F\",\n-          \"HOME\": \"\u002Fhome\u002Fweb_user\",\n-          \"LANG\": lang,\n-          \"_\": getExecutableName()\n-        };\n-        for (var x in ENV) {\n-          if (ENV[x] === undefined) delete env[x];else env[x] = ENV[x];\n-        }\n-        var strings = [];\n-        for (var x in env) {\n-          strings.push(`${x}=${env[x]}`);\n-        }\n-        getEnvStrings.strings = strings;\n-      }\n-      return getEnvStrings.strings;\n-    };\n-    var stringToAscii = (str, buffer) => {\n-      for (var i = 0; i \u003C str.length; ++i) {\n-        HEAP8[buffer++] = str.charCodeAt(i);\n-      }\n-      HEAP8[buffer] = 0;\n-    };\n-    var _environ_get = (__environ, environ_buf) => {\n-      var bufSize = 0;\n-      getEnvStrings().forEach((string, i) => {\n-        var ptr = environ_buf + bufSize;\n-        HEAPU32[__environ + i * 4 >> 2] = ptr;\n-        stringToAscii(string, ptr);\n-        bufSize += string.length + 1;\n-      });\n-      return 0;\n-    };\n-    var _environ_sizes_get = (penviron_count, penviron_buf_size) => {\n-      var strings = getEnvStrings();\n-      HEAPU32[penviron_count >> 2] = strings.length;\n-      var bufSize = 0;\n-      strings.forEach(string => bufSize += string.length + 1);\n-      HEAPU32[penviron_buf_size >> 2] = bufSize;\n-      return 0;\n-    };\n-    var printCharBuffers = [null, [], []];\n-    var UTF8Decoder = typeof TextDecoder != \"undefined\" ? new TextDecoder(\"utf8\") : undefined;\n-    var UTF8ArrayToString = (heapOrArray, idx, maxBytesToRead) => {\n-      var endIdx = idx + maxBytesToRead;\n-      var endPtr = idx;\n-      while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;\n-      if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {\n-        return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr));\n-      }\n-      var str = \"\";\n-      while (idx \u003C endPtr) {\n-        var u0 = heapOrArray[idx++];\n-        if (!(u0 & 128)) {\n-          str += String.fromCharCode(u0);\n-          continue;\n-        }\n-        var u1 = heapOrArray[idx++] & 63;\n-        if ((u0 & 224) == 192) {\n-          str += String.fromCharCode((u0 & 31) \u003C\u003C 6 | u1);\n-          continue;\n-        }\n-        var u2 = heapOrArray[idx++] & 63;\n-        if ((u0 & 240) == 224) {\n-          u0 = (u0 & 15) \u003C\u003C 12 | u1 \u003C\u003C 6 | u2;\n-        } else {\n-          u0 = (u0 & 7) \u003C\u003C 18 | u1 \u003C\u003C 12 | u2 \u003C\u003C 6 | heapOrArray[idx++] & 63;\n-        }\n-        if (u0 \u003C 65536) {\n-          str += String.fromCharCode(u0);\n-        } else {\n-          var ch = u0 - 65536;\n-          str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);\n-        }\n-      }\n-      return str;\n-    };\n-    var printChar = (stream, curr) => {\n-      var buffer = printCharBuffers[stream];\n-      if (curr === 0 || curr === 10) {\n-        (stream === 1 ? out : err)(UTF8ArrayToString(buffer, 0));\n-        buffer.length = 0;\n-      } else {\n-        buffer.push(curr);\n-      }\n-    };\n-    var UTF8ToString = (ptr, maxBytesToRead) => ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : \"\";\n-    var _fd_write = (fd, iov, iovcnt, pnum) => {\n-      var num = 0;\n-      for (var i = 0; i \u003C iovcnt; i++) {\n-        var ptr = HEAPU32[iov >> 2];\n-        var len = HEAPU32[iov + 4 >> 2];\n-        iov += 8;\n-        for (var j = 0; j \u003C len; j++) {\n-          printChar(fd, HEAPU8[ptr + j]);\n-        }\n-        num += len;\n-      }\n-      HEAPU32[pnum >> 2] = num;\n-      return 0;\n-    };\n-    function _jsPrintWarning(message_ptr) {\n-      const message = UTF8ToString(message_ptr);\n-      (Module.warn || console.warn)(`OpenJPEG: ${message}`);\n-    }\n-    function _setImageData(array_ptr, array_size) {\n-      Module.imageData = new Uint8ClampedArray(Module.HEAPU8.subarray(array_ptr, array_ptr + array_size));\n-    }\n-    function _storeErrorMessage(message_ptr) {\n-      const message = UTF8ToString(message_ptr);\n-      if (!Module.errorMessages) {\n-        Module.errorMessages = message;\n-      } else {\n-        Module.errorMessages += \"\\n\" + message;\n-      }\n-    }\n-    var wasmImports = {\n-      f: __emscripten_memcpy_js,\n-      b: _emscripten_resize_heap,\n-      c: _environ_get,\n-      d: _environ_sizes_get,\n-      e: _fd_write,\n-      g: _jsPrintWarning,\n-      h: _setImageData,\n-      a: _storeErrorMessage\n-    };\n-    var wasmExports = createWasm();\n-    var ___wasm_call_ctors = wasmExports[\"j\"];\n-    var _malloc = Module[\"_malloc\"] = wasmExports[\"k\"];\n-    var _free = Module[\"_free\"] = wasmExports[\"l\"];\n-    var _jp2_decode = Module[\"_jp2_decode\"] = wasmExports[\"n\"];\n-    var __emscripten_stack_restore = wasmExports[\"_emscripten_stack_restore\"];\n-    var __emscripten_stack_alloc = wasmExports[\"_emscripten_stack_alloc\"];\n-    var _emscripten_stack_get_current = wasmExports[\"emscripten_stack_get_current\"];\n-    var calledRun;\n-    dependenciesFulfilled = function runCaller() {\n-      if (!calledRun) run();\n-      if (!calledRun) dependenciesFulfilled = runCaller;\n-    };\n-    function run() {\n-      if (runDependencies > 0) {\n-        return;\n-      }\n-      preRun();\n-      if (runDependencies > 0) {\n-        return;\n-      }\n-      function doRun() {\n-        if (calledRun) return;\n-        calledRun = true;\n-        Module[\"calledRun\"] = true;\n-        if (ABORT) return;\n-        initRuntime();\n-        readyPromiseResolve(Module);\n-        if (Module[\"onRuntimeInitialized\"]) Module[\"onRuntimeInitialized\"]();\n-        postRun();\n-      }\n-      if (Module[\"setStatus\"]) {\n-        Module[\"setStatus\"](\"Running...\");\n-        setTimeout(function () {\n-          setTimeout(function () {\n-            Module[\"setStatus\"](\"\");\n-          }, 1);\n-          doRun();\n-        }, 1);\n-      } else {\n-        doRun();\n-      }\n-    }\n-    if (Module[\"preInit\"]) {\n-      if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [Module[\"preInit\"]];\n-      while (Module[\"preInit\"].length > 0) {\n-        Module[\"preInit\"].pop()();\n-      }\n-    }\n-    run();\n-    moduleRtn = Module;\n-    return moduleRtn;\n-  };\n-})();\n-\u002F* harmony default export *\u002F const openjpeg = (OpenJPEG);\n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fjpx.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Flzw_stream.js\n \n \n \n-class JpxError extends BaseException {\n-  constructor(msg) {\n-    super(msg, \"JpxError\");\n-  }\n-}\n-class JpxImage {\n-  static #module = null;\n-  static decode(data, ignoreColorSpace = false) {\n-    this.#module ||= openjpeg({\n-      warn: warn\n-    });\n-    const imageData = this.#module.decode(data, ignoreColorSpace);\n-    if (typeof imageData === \"string\") {\n-      throw new JpxError(imageData);\n-    }\n-    return imageData;\n-  }\n-  static cleanup() {\n-    this.#module = null;\n-  }\n-  static parseImageProperties(stream) {\n-    let newByte = stream.getByte();\n-    while (newByte >= 0) {\n-      const oldByte = newByte;\n-      newByte = stream.getByte();\n-      const code = oldByte \u003C\u003C 8 | newByte;\n-      if (code === 0xff51) {\n-        stream.skip(4);\n-        const Xsiz = stream.getInt32() >>> 0;\n-        const Ysiz = stream.getInt32() >>> 0;\n-        const XOsiz = stream.getInt32() >>> 0;\n-        const YOsiz = stream.getInt32() >>> 0;\n-        stream.skip(16);\n-        const Csiz = stream.getUint16();\n-        return {\n-          width: Xsiz - XOsiz,\n-          height: Ysiz - YOsiz,\n-          bitsPerComponent: 8,\n-          componentsCount: Csiz\n-        };\n-      }\n-    }\n-    throw new JpxError(\"No size marker found in JPX stream\");\n-  }\n-}\n-\n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fjpx_stream.js\n \n \n \n-class JpxStream extends DecodeStream {\n-  constructor(stream, maybeLength, params) {\n-    super(maybeLength);\n-    this.stream = stream;\n-    this.dict = stream.dict;\n-    this.maybeLength = maybeLength;\n-    this.params = params;\n-  }\n-  get bytes() {\n-    return shadow(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n-  }\n-  ensureBuffer(requested) {}\n-  readBlock(ignoreColorSpace) {\n-    if (this.eof) {\n-      return;\n-    }\n-    this.buffer = JpxImage.decode(this.bytes, ignoreColorSpace);\n-    this.bufferLength = this.buffer.length;\n-    this.eof = true;\n-  }\n-}\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Flzw_stream.js\n \n class LZWStream extends DecodeStream {\n   constructor(str, maybeLength, earlyChange) {\n@@ -8188,7 +15402,14 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fpredictor_stream.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fpredictor_stream.js\n+\n+\n+\n+\n+\n+\n+\n \n \n \n@@ -8375,7 +15596,7 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Frun_length_stream.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Frun_length_stream.js\n \n class RunLengthStream extends DecodeStream {\n   constructor(str, maybeLength) {\n@@ -8402,17 +15623,25 @@\n       }\n     } else {\n       n = 257 - n;\n-      const b = repeatHeader[1];\n       buffer = this.ensureBuffer(bufferLength + n + 1);\n-      for (let i = 0; i \u003C n; i++) {\n-        buffer[bufferLength++] = b;\n-      }\n+      buffer.fill(repeatHeader[1], bufferLength, bufferLength + n);\n+      bufferLength += n;\n     }\n     this.bufferLength = bufferLength;\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fparser.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fparser.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n \n@@ -8591,7 +15820,7 @@\n             warn(\"findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.\");\n             continue;\n           }\n-          const tmpLexer = new Lexer(new Stream(followingBytes.slice()), knownCommands);\n+          const tmpLexer = new Lexer(new Stream(stream.peekBytes(5 * n)), knownCommands);\n           tmpLexer._hexStringWarn = () => {};\n           let numArgs = 0;\n           while (true) {\n@@ -9080,7 +16309,7 @@\n     }\n     if (ch \u003C 0x30 || ch > 0x39) {\n       const msg = `Invalid number: ${String.fromCharCode(ch)} (charCode ${ch})`;\n-      if (isWhiteSpace(ch) || ch === -1) {\n+      if (isWhiteSpace(ch) || ch === 0x28 || ch === 0x3c || ch === -1) {\n         info(`Lexer.getNumber - \"${msg}\".`);\n         return 0;\n       }\n@@ -9281,8 +16510,8 @@\n     const strBuf = this.strBuf;\n     strBuf.length = 0;\n     let ch = this.currentChar;\n-    let isFirstHex = true;\n-    let firstDigit, secondDigit;\n+    let firstDigit = -1,\n+      digit = -1;\n     this._hexStringNumWarn = 0;\n     while (true) {\n       if (ch \u003C 0) {\n@@ -9295,26 +16524,21 @@\n         ch = this.nextChar();\n         continue;\n       } else {\n-        if (isFirstHex) {\n-          firstDigit = toHexDigit(ch);\n-          if (firstDigit === -1) {\n-            this._hexStringWarn(ch);\n-            ch = this.nextChar();\n-            continue;\n-          }\n+        digit = toHexDigit(ch);\n+        if (digit === -1) {\n+          this._hexStringWarn(ch);\n+        } else if (firstDigit === -1) {\n+          firstDigit = digit;\n         } else {\n-          secondDigit = toHexDigit(ch);\n-          if (secondDigit === -1) {\n-            this._hexStringWarn(ch);\n-            ch = this.nextChar();\n-            continue;\n-          }\n-          strBuf.push(String.fromCharCode(firstDigit \u003C\u003C 4 | secondDigit));\n+          strBuf.push(String.fromCharCode(firstDigit \u003C\u003C 4 | digit));\n+          firstDigit = -1;\n         }\n-        isFirstHex = !isFirstHex;\n         ch = this.nextChar();\n       }\n     }\n+    if (firstDigit !== -1) {\n+      strBuf.push(String.fromCharCode(firstDigit \u003C\u003C 4));\n+    }\n     return strBuf.join(\"\");\n   }\n   getObj() {\n@@ -9485,7 +16709,10 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fcmap.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fcmap.js\n+\n+\n+\n \n \n \n@@ -9883,7 +17110,7 @@\n   }\n   cMap.useCMap.forEach(function (key, value) {\n     if (!cMap.contains(key)) {\n-      cMap.mapOne(key, cMap.useCMap.lookup(key));\n+      cMap.mapOne(key, value);\n     }\n   });\n   return cMap;\n@@ -9902,17 +17129,14 @@\n   }\n   const {\n     cMapData,\n-    compressionType\n+    isCompressed\n   } = await fetchBuiltInCMap(name);\n   const cMap = new CMap(true);\n-  if (compressionType === CMapCompressionType.BINARY) {\n+  if (isCompressed) {\n     return new BinaryCMapReader().process(cMapData, cMap, useCMap => extendCMap(cMap, fetchBuiltInCMap, useCMap));\n   }\n-  if (compressionType === CMapCompressionType.NONE) {\n-    const lexer = new Lexer(new Stream(cMapData));\n-    return parseCMap(cMap, lexer, fetchBuiltInCMap, null);\n-  }\n-  throw new Error(`Invalid CMap \"compressionType\" value: ${compressionType}`);\n+  const lexer = new Lexer(new Stream(cMapData));\n+  return parseCMap(cMap, lexer, fetchBuiltInCMap, null);\n }\n class CMapFactory {\n   static async create({\n@@ -9933,12 +17157,7 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fcharsets.js\n-const ISOAdobeCharset = [\".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\", \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\", \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\", \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\", \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\", \"perthousand\", \"questiondown\", \"grave\", \"acute\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"AE\", \"ordfeminine\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\", \"dotlessi\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"onesuperior\", \"logicalnot\", \"mu\", \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\", \"onequarter\", \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\", \"twosuperior\", \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\", \"copyright\", \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\", \"Atilde\", \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\", \"Ocircumflex\", \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\", \"aacute\", \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\", \"ccedilla\", \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\", \"odieresis\", \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\", \"udieresis\", \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\"];\n-const ExpertCharset = [\".notdef\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\", \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\", \"Dotaccentsmall\", \"Macronsmall\", \"figuredash\", \"hypheninferior\", \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"onequarter\", \"onehalf\", \"threequarters\", \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\", \"Ydieresissmall\"];\n-const ExpertSubsetCharset = [\".notdef\", \"space\", \"dollaroldstyle\", \"dollarsuperior\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\", \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\", \"hyphensuperior\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"centoldstyle\", \"figuredash\", \"hypheninferior\", \"onequarter\", \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\", \"commainferior\"];\n-\n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fencodings.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fencodings.js\n const ExpertEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"\", \"\", \"\", \"isuperior\", \"\", \"\", \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"\", \"\", \"rsuperior\", \"ssuperior\", \"tsuperior\", \"\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\", \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"Tildesmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\", \"\", \"\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\", \"\", \"Dotaccentsmall\", \"\", \"\", \"Macronsmall\", \"\", \"\", \"figuredash\", \"hypheninferior\", \"\", \"\", \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"\", \"\", \"\", \"onequarter\", \"onehalf\", \"threequarters\", \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"zerosuperior\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\", \"Ydieresissmall\"];\n const MacExpertEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"centoldstyle\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"\", \"threequartersemdash\", \"\", \"questionsmall\", \"\", \"\", \"\", \"\", \"Ethsmall\", \"\", \"\", \"onequarter\", \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"\", \"\", \"\", \"\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\", \"parenrightinferior\", \"Circumflexsmall\", \"hypheninferior\", \"Gravesmall\", \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"Tildesmall\", \"\", \"\", \"asuperior\", \"centsuperior\", \"\", \"\", \"\", \"\", \"Aacutesmall\", \"Agravesmall\", \"Acircumflexsmall\", \"Adieresissmall\", \"Atildesmall\", \"Aringsmall\", \"Ccedillasmall\", \"Eacutesmall\", \"Egravesmall\", \"Ecircumflexsmall\", \"Edieresissmall\", \"Iacutesmall\", \"Igravesmall\", \"Icircumflexsmall\", \"Idieresissmall\", \"Ntildesmall\", \"Oacutesmall\", \"Ogravesmall\", \"Ocircumflexsmall\", \"Odieresissmall\", \"Otildesmall\", \"Uacutesmall\", \"Ugravesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"\", \"eightsuperior\", \"fourinferior\", \"threeinferior\", \"sixinferior\", \"eightinferior\", \"seveninferior\", \"Scaronsmall\", \"\", \"centinferior\", \"twoinferior\", \"\", \"Dieresissmall\", \"\", \"Caronsmall\", \"osuperior\", \"fiveinferior\", \"\", \"commainferior\", \"periodinferior\", \"Yacutesmall\", \"\", \"dollarinferior\", \"\", \"\", \"Thornsmall\", \"\", \"nineinferior\", \"zeroinferior\", \"Zcaronsmall\", \"AEsmall\", \"Oslashsmall\", \"questiondownsmall\", \"oneinferior\", \"Lslashsmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"Cedillasmall\", \"\", \"\", \"\", \"\", \"\", \"OEsmall\", \"figuredash\", \"hyphensuperior\", \"\", \"\", \"\", \"\", \"exclamdownsmall\", \"\", \"Ydieresissmall\", \"\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"ninesuperior\", \"zerosuperior\", \"\", \"esuperior\", \"rsuperior\", \"tsuperior\", \"\", \"\", \"isuperior\", \"ssuperior\", \"dsuperior\", \"\", \"\", \"\", \"\", \"\", \"lsuperior\", \"Ogoneksmall\", \"Brevesmall\", \"Macronsmall\", \"bsuperior\", \"nsuperior\", \"msuperior\", \"commasuperior\", \"periodsuperior\", \"Dotaccentsmall\", \"Ringsmall\", \"\", \"\", \"\", \"\"];\n const MacRomanEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"\", \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\", \"Odieresis\", \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\", \"atilde\", \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\", \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\", \"ograve\", \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\", \"ucircumflex\", \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\", \"section\", \"bullet\", \"paragraph\", \"germandbls\", \"registered\", \"copyright\", \"trademark\", \"acute\", \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\", \"plusminus\", \"lessequal\", \"greaterequal\", \"yen\", \"mu\", \"partialdiff\", \"summation\", \"product\", \"pi\", \"integral\", \"ordfeminine\", \"ordmasculine\", \"Omega\", \"ae\", \"oslash\", \"questiondown\", \"exclamdown\", \"logicalnot\", \"radical\", \"florin\", \"approxequal\", \"Delta\", \"guillemotleft\", \"guillemotright\", \"ellipsis\", \"space\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\", \"oe\", \"endash\", \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\", \"quoteright\", \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\", \"currency\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\", \"periodcentered\", \"quotesinglbase\", \"quotedblbase\", \"perthousand\", \"Acircumflex\", \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\", \"Ograve\", \"Uacute\", \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\"];\n@@ -9967,1476 +17186,7 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fcff_parser.js\n-\n-\n-\n-const MAX_SUBR_NESTING = 10;\n-const CFFStandardStrings = [\".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\", \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\", \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\", \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\", \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\", \"perthousand\", \"questiondown\", \"grave\", \"acute\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"AE\", \"ordfeminine\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\", \"dotlessi\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"onesuperior\", \"logicalnot\", \"mu\", \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\", \"onequarter\", \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\", \"twosuperior\", \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\", \"copyright\", \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\", \"Atilde\", \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\", \"Ocircumflex\", \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\", \"aacute\", \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\", \"ccedilla\", \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\", \"odieresis\", \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\", \"udieresis\", \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\", \"exclamsmall\", \"Hungarumlautsmall\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\", \"tsuperior\", \"ff\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\", \"Dotaccentsmall\", \"Macronsmall\", \"figuredash\", \"hypheninferior\", \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\", \"Ydieresissmall\", \"001.000\", \"001.001\", \"001.002\", \"001.003\", \"Black\", \"Bold\", \"Book\", \"Light\", \"Medium\", \"Regular\", \"Roman\", \"Semibold\"];\n-const NUM_STANDARD_CFF_STRINGS = 391;\n-const CharstringValidationData = [null, {\n-  id: \"hstem\",\n-  min: 2,\n-  stackClearing: true,\n-  stem: true\n-}, null, {\n-  id: \"vstem\",\n-  min: 2,\n-  stackClearing: true,\n-  stem: true\n-}, {\n-  id: \"vmoveto\",\n-  min: 1,\n-  stackClearing: true\n-}, {\n-  id: \"rlineto\",\n-  min: 2,\n-  resetStack: true\n-}, {\n-  id: \"hlineto\",\n-  min: 1,\n-  resetStack: true\n-}, {\n-  id: \"vlineto\",\n-  min: 1,\n-  resetStack: true\n-}, {\n-  id: \"rrcurveto\",\n-  min: 6,\n-  resetStack: true\n-}, null, {\n-  id: \"callsubr\",\n-  min: 1,\n-  undefStack: true\n-}, {\n-  id: \"return\",\n-  min: 0,\n-  undefStack: true\n-}, null, null, {\n-  id: \"endchar\",\n-  min: 0,\n-  stackClearing: true\n-}, null, null, null, {\n-  id: \"hstemhm\",\n-  min: 2,\n-  stackClearing: true,\n-  stem: true\n-}, {\n-  id: \"hintmask\",\n-  min: 0,\n-  stackClearing: true\n-}, {\n-  id: \"cntrmask\",\n-  min: 0,\n-  stackClearing: true\n-}, {\n-  id: \"rmoveto\",\n-  min: 2,\n-  stackClearing: true\n-}, {\n-  id: \"hmoveto\",\n-  min: 1,\n-  stackClearing: true\n-}, {\n-  id: \"vstemhm\",\n-  min: 2,\n-  stackClearing: true,\n-  stem: true\n-}, {\n-  id: \"rcurveline\",\n-  min: 8,\n-  resetStack: true\n-}, {\n-  id: \"rlinecurve\",\n-  min: 8,\n-  resetStack: true\n-}, {\n-  id: \"vvcurveto\",\n-  min: 4,\n-  resetStack: true\n-}, {\n-  id: \"hhcurveto\",\n-  min: 4,\n-  resetStack: true\n-}, null, {\n-  id: \"callgsubr\",\n-  min: 1,\n-  undefStack: true\n-}, {\n-  id: \"vhcurveto\",\n-  min: 4,\n-  resetStack: true\n-}, {\n-  id: \"hvcurveto\",\n-  min: 4,\n-  resetStack: true\n-}];\n-const CharstringValidationData12 = [null, null, null, {\n-  id: \"and\",\n-  min: 2,\n-  stackDelta: -1\n-}, {\n-  id: \"or\",\n-  min: 2,\n-  stackDelta: -1\n-}, {\n-  id: \"not\",\n-  min: 1,\n-  stackDelta: 0\n-}, null, null, null, {\n-  id: \"abs\",\n-  min: 1,\n-  stackDelta: 0\n-}, {\n-  id: \"add\",\n-  min: 2,\n-  stackDelta: -1,\n-  stackFn(stack, index) {\n-    stack[index - 2] = stack[index - 2] + stack[index - 1];\n-  }\n-}, {\n-  id: \"sub\",\n-  min: 2,\n-  stackDelta: -1,\n-  stackFn(stack, index) {\n-    stack[index - 2] = stack[index - 2] - stack[index - 1];\n-  }\n-}, {\n-  id: \"div\",\n-  min: 2,\n-  stackDelta: -1,\n-  stackFn(stack, index) {\n-    stack[index - 2] = stack[index - 2] \u002F stack[index - 1];\n-  }\n-}, null, {\n-  id: \"neg\",\n-  min: 1,\n-  stackDelta: 0,\n-  stackFn(stack, index) {\n-    stack[index - 1] = -stack[index - 1];\n-  }\n-}, {\n-  id: \"eq\",\n-  min: 2,\n-  stackDelta: -1\n-}, null, null, {\n-  id: \"drop\",\n-  min: 1,\n-  stackDelta: -1\n-}, null, {\n-  id: \"put\",\n-  min: 2,\n-  stackDelta: -2\n-}, {\n-  id: \"get\",\n-  min: 1,\n-  stackDelta: 0\n-}, {\n-  id: \"ifelse\",\n-  min: 4,\n-  stackDelta: -3\n-}, {\n-  id: \"random\",\n-  min: 0,\n-  stackDelta: 1\n-}, {\n-  id: \"mul\",\n-  min: 2,\n-  stackDelta: -1,\n-  stackFn(stack, index) {\n-    stack[index - 2] = stack[index - 2] * stack[index - 1];\n-  }\n-}, null, {\n-  id: \"sqrt\",\n-  min: 1,\n-  stackDelta: 0\n-}, {\n-  id: \"dup\",\n-  min: 1,\n-  stackDelta: 1\n-}, {\n-  id: \"exch\",\n-  min: 2,\n-  stackDelta: 0\n-}, {\n-  id: \"index\",\n-  min: 2,\n-  stackDelta: 0\n-}, {\n-  id: \"roll\",\n-  min: 3,\n-  stackDelta: -2\n-}, null, null, null, {\n-  id: \"hflex\",\n-  min: 7,\n-  resetStack: true\n-}, {\n-  id: \"flex\",\n-  min: 13,\n-  resetStack: true\n-}, {\n-  id: \"hflex1\",\n-  min: 9,\n-  resetStack: true\n-}, {\n-  id: \"flex1\",\n-  min: 11,\n-  resetStack: true\n-}];\n-class CFFParser {\n-  constructor(file, properties, seacAnalysisEnabled) {\n-    this.bytes = file.getBytes();\n-    this.properties = properties;\n-    this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n-  }\n-  parse() {\n-    const properties = this.properties;\n-    const cff = new CFF();\n-    this.cff = cff;\n-    const header = this.parseHeader();\n-    const nameIndex = this.parseIndex(header.endPos);\n-    const topDictIndex = this.parseIndex(nameIndex.endPos);\n-    const stringIndex = this.parseIndex(topDictIndex.endPos);\n-    const globalSubrIndex = this.parseIndex(stringIndex.endPos);\n-    const topDictParsed = this.parseDict(topDictIndex.obj.get(0));\n-    const topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);\n-    cff.header = header.obj;\n-    cff.names = this.parseNameIndex(nameIndex.obj);\n-    cff.strings = this.parseStringIndex(stringIndex.obj);\n-    cff.topDict = topDict;\n-    cff.globalSubrIndex = globalSubrIndex.obj;\n-    this.parsePrivateDict(cff.topDict);\n-    cff.isCIDFont = topDict.hasName(\"ROS\");\n-    const charStringOffset = topDict.getByName(\"CharStrings\");\n-    const charStringIndex = this.parseIndex(charStringOffset).obj;\n-    const fontMatrix = topDict.getByName(\"FontMatrix\");\n-    if (fontMatrix) {\n-      properties.fontMatrix = fontMatrix;\n-    }\n-    const fontBBox = topDict.getByName(\"FontBBox\");\n-    if (fontBBox) {\n-      properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n-      properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n-      properties.ascentScaled = true;\n-    }\n-    let charset, encoding;\n-    if (cff.isCIDFont) {\n-      const fdArrayIndex = this.parseIndex(topDict.getByName(\"FDArray\")).obj;\n-      for (let i = 0, ii = fdArrayIndex.count; i \u003C ii; ++i) {\n-        const dictRaw = fdArrayIndex.get(i);\n-        const fontDict = this.createDict(CFFTopDict, this.parseDict(dictRaw), cff.strings);\n-        this.parsePrivateDict(fontDict);\n-        cff.fdArray.push(fontDict);\n-      }\n-      encoding = null;\n-      charset = this.parseCharsets(topDict.getByName(\"charset\"), charStringIndex.count, cff.strings, true);\n-      cff.fdSelect = this.parseFDSelect(topDict.getByName(\"FDSelect\"), charStringIndex.count);\n-    } else {\n-      charset = this.parseCharsets(topDict.getByName(\"charset\"), charStringIndex.count, cff.strings, false);\n-      encoding = this.parseEncoding(topDict.getByName(\"Encoding\"), properties, cff.strings, charset.charset);\n-    }\n-    cff.charset = charset;\n-    cff.encoding = encoding;\n-    const charStringsAndSeacs = this.parseCharStrings({\n-      charStrings: charStringIndex,\n-      localSubrIndex: topDict.privateDict.subrsIndex,\n-      globalSubrIndex: globalSubrIndex.obj,\n-      fdSelect: cff.fdSelect,\n-      fdArray: cff.fdArray,\n-      privateDict: topDict.privateDict\n-    });\n-    cff.charStrings = charStringsAndSeacs.charStrings;\n-    cff.seacs = charStringsAndSeacs.seacs;\n-    cff.widths = charStringsAndSeacs.widths;\n-    return cff;\n-  }\n-  parseHeader() {\n-    let bytes = this.bytes;\n-    const bytesLength = bytes.length;\n-    let offset = 0;\n-    while (offset \u003C bytesLength && bytes[offset] !== 1) {\n-      ++offset;\n-    }\n-    if (offset >= bytesLength) {\n-      throw new FormatError(\"Invalid CFF header\");\n-    }\n-    if (offset !== 0) {\n-      info(\"cff data is shifted\");\n-      bytes = bytes.subarray(offset);\n-      this.bytes = bytes;\n-    }\n-    const major = bytes[0];\n-    const minor = bytes[1];\n-    const hdrSize = bytes[2];\n-    const offSize = bytes[3];\n-    const header = new CFFHeader(major, minor, hdrSize, offSize);\n-    return {\n-      obj: header,\n-      endPos: hdrSize\n-    };\n-  }\n-  parseDict(dict) {\n-    let pos = 0;\n-    function parseOperand() {\n-      let value = dict[pos++];\n-      if (value === 30) {\n-        return parseFloatOperand();\n-      } else if (value === 28) {\n-        value = dict[pos++];\n-        value = (value \u003C\u003C 24 | dict[pos++] \u003C\u003C 16) >> 16;\n-        return value;\n-      } else if (value === 29) {\n-        value = dict[pos++];\n-        value = value \u003C\u003C 8 | dict[pos++];\n-        value = value \u003C\u003C 8 | dict[pos++];\n-        value = value \u003C\u003C 8 | dict[pos++];\n-        return value;\n-      } else if (value >= 32 && value \u003C= 246) {\n-        return value - 139;\n-      } else if (value >= 247 && value \u003C= 250) {\n-        return (value - 247) * 256 + dict[pos++] + 108;\n-      } else if (value >= 251 && value \u003C= 254) {\n-        return -((value - 251) * 256) - dict[pos++] - 108;\n-      }\n-      warn('CFFParser_parseDict: \"' + value + '\" is a reserved command.');\n-      return NaN;\n-    }\n-    function parseFloatOperand() {\n-      let str = \"\";\n-      const eof = 15;\n-      const lookup = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \".\", \"E\", \"E-\", null, \"-\"];\n-      const length = dict.length;\n-      while (pos \u003C length) {\n-        const b = dict[pos++];\n-        const b1 = b >> 4;\n-        const b2 = b & 15;\n-        if (b1 === eof) {\n-          break;\n-        }\n-        str += lookup[b1];\n-        if (b2 === eof) {\n-          break;\n-        }\n-        str += lookup[b2];\n-      }\n-      return parseFloat(str);\n-    }\n-    let operands = [];\n-    const entries = [];\n-    pos = 0;\n-    const end = dict.length;\n-    while (pos \u003C end) {\n-      let b = dict[pos];\n-      if (b \u003C= 21) {\n-        if (b === 12) {\n-          b = b \u003C\u003C 8 | dict[++pos];\n-        }\n-        entries.push([b, operands]);\n-        operands = [];\n-        ++pos;\n-      } else {\n-        operands.push(parseOperand());\n-      }\n-    }\n-    return entries;\n-  }\n-  parseIndex(pos) {\n-    const cffIndex = new CFFIndex();\n-    const bytes = this.bytes;\n-    const count = bytes[pos++] \u003C\u003C 8 | bytes[pos++];\n-    const offsets = [];\n-    let end = pos;\n-    let i, ii;\n-    if (count !== 0) {\n-      const offsetSize = bytes[pos++];\n-      const startPos = pos + (count + 1) * offsetSize - 1;\n-      for (i = 0, ii = count + 1; i \u003C ii; ++i) {\n-        let offset = 0;\n-        for (let j = 0; j \u003C offsetSize; ++j) {\n-          offset \u003C\u003C= 8;\n-          offset += bytes[pos++];\n-        }\n-        offsets.push(startPos + offset);\n-      }\n-      end = offsets[count];\n-    }\n-    for (i = 0, ii = offsets.length - 1; i \u003C ii; ++i) {\n-      const offsetStart = offsets[i];\n-      const offsetEnd = offsets[i + 1];\n-      cffIndex.add(bytes.subarray(offsetStart, offsetEnd));\n-    }\n-    return {\n-      obj: cffIndex,\n-      endPos: end\n-    };\n-  }\n-  parseNameIndex(index) {\n-    const names = [];\n-    for (let i = 0, ii = index.count; i \u003C ii; ++i) {\n-      const name = index.get(i);\n-      names.push(bytesToString(name));\n-    }\n-    return names;\n-  }\n-  parseStringIndex(index) {\n-    const strings = new CFFStrings();\n-    for (let i = 0, ii = index.count; i \u003C ii; ++i) {\n-      const data = index.get(i);\n-      strings.add(bytesToString(data));\n-    }\n-    return strings;\n-  }\n-  createDict(Type, dict, strings) {\n-    const cffDict = new Type(strings);\n-    for (const [key, value] of dict) {\n-      cffDict.setByKey(key, value);\n-    }\n-    return cffDict;\n-  }\n-  parseCharString(state, data, localSubrIndex, globalSubrIndex) {\n-    if (!data || state.callDepth > MAX_SUBR_NESTING) {\n-      return false;\n-    }\n-    let stackSize = state.stackSize;\n-    const stack = state.stack;\n-    let length = data.length;\n-    for (let j = 0; j \u003C length;) {\n-      const value = data[j++];\n-      let validationCommand = null;\n-      if (value === 12) {\n-        const q = data[j++];\n-        if (q === 0) {\n-          data[j - 2] = 139;\n-          data[j - 1] = 22;\n-          stackSize = 0;\n-        } else {\n-          validationCommand = CharstringValidationData12[q];\n-        }\n-      } else if (value === 28) {\n-        stack[stackSize] = (data[j] \u003C\u003C 24 | data[j + 1] \u003C\u003C 16) >> 16;\n-        j += 2;\n-        stackSize++;\n-      } else if (value === 14) {\n-        if (stackSize >= 4) {\n-          stackSize -= 4;\n-          if (this.seacAnalysisEnabled) {\n-            state.seac = stack.slice(stackSize, stackSize + 4);\n-            return false;\n-          }\n-        }\n-        validationCommand = CharstringValidationData[value];\n-      } else if (value >= 32 && value \u003C= 246) {\n-        stack[stackSize] = value - 139;\n-        stackSize++;\n-      } else if (value >= 247 && value \u003C= 254) {\n-        stack[stackSize] = value \u003C 251 ? (value - 247 \u003C\u003C 8) + data[j] + 108 : -(value - 251 \u003C\u003C 8) - data[j] - 108;\n-        j++;\n-        stackSize++;\n-      } else if (value === 255) {\n-        stack[stackSize] = (data[j] \u003C\u003C 24 | data[j + 1] \u003C\u003C 16 | data[j + 2] \u003C\u003C 8 | data[j + 3]) \u002F 65536;\n-        j += 4;\n-        stackSize++;\n-      } else if (value === 19 || value === 20) {\n-        state.hints += stackSize >> 1;\n-        if (state.hints === 0) {\n-          data.copyWithin(j - 1, j, -1);\n-          j -= 1;\n-          length -= 1;\n-          continue;\n-        }\n-        j += state.hints + 7 >> 3;\n-        stackSize %= 2;\n-        validationCommand = CharstringValidationData[value];\n-      } else if (value === 10 || value === 29) {\n-        const subrsIndex = value === 10 ? localSubrIndex : globalSubrIndex;\n-        if (!subrsIndex) {\n-          validationCommand = CharstringValidationData[value];\n-          warn(\"Missing subrsIndex for \" + validationCommand.id);\n-          return false;\n-        }\n-        let bias = 32768;\n-        if (subrsIndex.count \u003C 1240) {\n-          bias = 107;\n-        } else if (subrsIndex.count \u003C 33900) {\n-          bias = 1131;\n-        }\n-        const subrNumber = stack[--stackSize] + bias;\n-        if (subrNumber \u003C 0 || subrNumber >= subrsIndex.count || isNaN(subrNumber)) {\n-          validationCommand = CharstringValidationData[value];\n-          warn(\"Out of bounds subrIndex for \" + validationCommand.id);\n-          return false;\n-        }\n-        state.stackSize = stackSize;\n-        state.callDepth++;\n-        const valid = this.parseCharString(state, subrsIndex.get(subrNumber), localSubrIndex, globalSubrIndex);\n-        if (!valid) {\n-          return false;\n-        }\n-        state.callDepth--;\n-        stackSize = state.stackSize;\n-        continue;\n-      } else if (value === 11) {\n-        state.stackSize = stackSize;\n-        return true;\n-      } else if (value === 0 && j === data.length) {\n-        data[j - 1] = 14;\n-        validationCommand = CharstringValidationData[14];\n-      } else if (value === 9) {\n-        data.copyWithin(j - 1, j, -1);\n-        j -= 1;\n-        length -= 1;\n-        continue;\n-      } else {\n-        validationCommand = CharstringValidationData[value];\n-      }\n-      if (validationCommand) {\n-        if (validationCommand.stem) {\n-          state.hints += stackSize >> 1;\n-          if (value === 3 || value === 23) {\n-            state.hasVStems = true;\n-          } else if (state.hasVStems && (value === 1 || value === 18)) {\n-            warn(\"CFF stem hints are in wrong order\");\n-            data[j - 1] = value === 1 ? 3 : 23;\n-          }\n-        }\n-        if (\"min\" in validationCommand) {\n-          if (!state.undefStack && stackSize \u003C validationCommand.min) {\n-            warn(\"Not enough parameters for \" + validationCommand.id + \"; actual: \" + stackSize + \", expected: \" + validationCommand.min);\n-            if (stackSize === 0) {\n-              data[j - 1] = 14;\n-              return true;\n-            }\n-            return false;\n-          }\n-        }\n-        if (state.firstStackClearing && validationCommand.stackClearing) {\n-          state.firstStackClearing = false;\n-          stackSize -= validationCommand.min;\n-          if (stackSize >= 2 && validationCommand.stem) {\n-            stackSize %= 2;\n-          } else if (stackSize > 1) {\n-            warn(\"Found too many parameters for stack-clearing command\");\n-          }\n-          if (stackSize > 0) {\n-            state.width = stack[stackSize - 1];\n-          }\n-        }\n-        if (\"stackDelta\" in validationCommand) {\n-          if (\"stackFn\" in validationCommand) {\n-            validationCommand.stackFn(stack, stackSize);\n-          }\n-          stackSize += validationCommand.stackDelta;\n-        } else if (validationCommand.stackClearing) {\n-          stackSize = 0;\n-        } else if (validationCommand.resetStack) {\n-          stackSize = 0;\n-          state.undefStack = false;\n-        } else if (validationCommand.undefStack) {\n-          stackSize = 0;\n-          state.undefStack = true;\n-          state.firstStackClearing = false;\n-        }\n-      }\n-    }\n-    if (length \u003C data.length) {\n-      data.fill(14, length);\n-    }\n-    state.stackSize = stackSize;\n-    return true;\n-  }\n-  parseCharStrings({\n-    charStrings,\n-    localSubrIndex,\n-    globalSubrIndex,\n-    fdSelect,\n-    fdArray,\n-    privateDict\n-  }) {\n-    const seacs = [];\n-    const widths = [];\n-    const count = charStrings.count;\n-    for (let i = 0; i \u003C count; i++) {\n-      const charstring = charStrings.get(i);\n-      const state = {\n-        callDepth: 0,\n-        stackSize: 0,\n-        stack: [],\n-        undefStack: true,\n-        hints: 0,\n-        firstStackClearing: true,\n-        seac: null,\n-        width: null,\n-        hasVStems: false\n-      };\n-      let valid = true;\n-      let localSubrToUse = null;\n-      let privateDictToUse = privateDict;\n-      if (fdSelect && fdArray.length) {\n-        const fdIndex = fdSelect.getFDIndex(i);\n-        if (fdIndex === -1) {\n-          warn(\"Glyph index is not in fd select.\");\n-          valid = false;\n-        }\n-        if (fdIndex >= fdArray.length) {\n-          warn(\"Invalid fd index for glyph index.\");\n-          valid = false;\n-        }\n-        if (valid) {\n-          privateDictToUse = fdArray[fdIndex].privateDict;\n-          localSubrToUse = privateDictToUse.subrsIndex;\n-        }\n-      } else if (localSubrIndex) {\n-        localSubrToUse = localSubrIndex;\n-      }\n-      if (valid) {\n-        valid = this.parseCharString(state, charstring, localSubrToUse, globalSubrIndex);\n-      }\n-      if (state.width !== null) {\n-        const nominalWidth = privateDictToUse.getByName(\"nominalWidthX\");\n-        widths[i] = nominalWidth + state.width;\n-      } else {\n-        const defaultWidth = privateDictToUse.getByName(\"defaultWidthX\");\n-        widths[i] = defaultWidth;\n-      }\n-      if (state.seac !== null) {\n-        seacs[i] = state.seac;\n-      }\n-      if (!valid) {\n-        charStrings.set(i, new Uint8Array([14]));\n-      }\n-    }\n-    return {\n-      charStrings,\n-      seacs,\n-      widths\n-    };\n-  }\n-  emptyPrivateDictionary(parentDict) {\n-    const privateDict = this.createDict(CFFPrivateDict, [], parentDict.strings);\n-    parentDict.setByKey(18, [0, 0]);\n-    parentDict.privateDict = privateDict;\n-  }\n-  parsePrivateDict(parentDict) {\n-    if (!parentDict.hasName(\"Private\")) {\n-      this.emptyPrivateDictionary(parentDict);\n-      return;\n-    }\n-    const privateOffset = parentDict.getByName(\"Private\");\n-    if (!Array.isArray(privateOffset) || privateOffset.length !== 2) {\n-      parentDict.removeByName(\"Private\");\n-      return;\n-    }\n-    const size = privateOffset[0];\n-    const offset = privateOffset[1];\n-    if (size === 0 || offset >= this.bytes.length) {\n-      this.emptyPrivateDictionary(parentDict);\n-      return;\n-    }\n-    const privateDictEnd = offset + size;\n-    const dictData = this.bytes.subarray(offset, privateDictEnd);\n-    const dict = this.parseDict(dictData);\n-    const privateDict = this.createDict(CFFPrivateDict, dict, parentDict.strings);\n-    parentDict.privateDict = privateDict;\n-    if (privateDict.getByName(\"ExpansionFactor\") === 0) {\n-      privateDict.setByName(\"ExpansionFactor\", 0.06);\n-    }\n-    if (!privateDict.getByName(\"Subrs\")) {\n-      return;\n-    }\n-    const subrsOffset = privateDict.getByName(\"Subrs\");\n-    const relativeOffset = offset + subrsOffset;\n-    if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {\n-      this.emptyPrivateDictionary(parentDict);\n-      return;\n-    }\n-    const subrsIndex = this.parseIndex(relativeOffset);\n-    privateDict.subrsIndex = subrsIndex.obj;\n-  }\n-  parseCharsets(pos, length, strings, cid) {\n-    if (pos === 0) {\n-      return new CFFCharset(true, CFFCharsetPredefinedTypes.ISO_ADOBE, ISOAdobeCharset);\n-    } else if (pos === 1) {\n-      return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT, ExpertCharset);\n-    } else if (pos === 2) {\n-      return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT_SUBSET, ExpertSubsetCharset);\n-    }\n-    const bytes = this.bytes;\n-    const start = pos;\n-    const format = bytes[pos++];\n-    const charset = [cid ? 0 : \".notdef\"];\n-    let id, count, i;\n-    length -= 1;\n-    switch (format) {\n-      case 0:\n-        for (i = 0; i \u003C length; i++) {\n-          id = bytes[pos++] \u003C\u003C 8 | bytes[pos++];\n-          charset.push(cid ? id : strings.get(id));\n-        }\n-        break;\n-      case 1:\n-        while (charset.length \u003C= length) {\n-          id = bytes[pos++] \u003C\u003C 8 | bytes[pos++];\n-          count = bytes[pos++];\n-          for (i = 0; i \u003C= count; i++) {\n-            charset.push(cid ? id++ : strings.get(id++));\n-          }\n-        }\n-        break;\n-      case 2:\n-        while (charset.length \u003C= length) {\n-          id = bytes[pos++] \u003C\u003C 8 | bytes[pos++];\n-          count = bytes[pos++] \u003C\u003C 8 | bytes[pos++];\n-          for (i = 0; i \u003C= count; i++) {\n-            charset.push(cid ? id++ : strings.get(id++));\n-          }\n-        }\n-        break;\n-      default:\n-        throw new FormatError(\"Unknown charset format\");\n-    }\n-    const end = pos;\n-    const raw = bytes.subarray(start, end);\n-    return new CFFCharset(false, format, charset, raw);\n-  }\n-  parseEncoding(pos, properties, strings, charset) {\n-    const encoding = Object.create(null);\n-    const bytes = this.bytes;\n-    let predefined = false;\n-    let format, i, ii;\n-    let raw = null;\n-    function readSupplement() {\n-      const supplementsCount = bytes[pos++];\n-      for (i = 0; i \u003C supplementsCount; i++) {\n-        const code = bytes[pos++];\n-        const sid = (bytes[pos++] \u003C\u003C 8) + (bytes[pos++] & 0xff);\n-        encoding[code] = charset.indexOf(strings.get(sid));\n-      }\n-    }\n-    if (pos === 0 || pos === 1) {\n-      predefined = true;\n-      format = pos;\n-      const baseEncoding = pos ? ExpertEncoding : StandardEncoding;\n-      for (i = 0, ii = charset.length; i \u003C ii; i++) {\n-        const index = baseEncoding.indexOf(charset[i]);\n-        if (index !== -1) {\n-          encoding[index] = i;\n-        }\n-      }\n-    } else {\n-      const dataStart = pos;\n-      format = bytes[pos++];\n-      switch (format & 0x7f) {\n-        case 0:\n-          const glyphsCount = bytes[pos++];\n-          for (i = 1; i \u003C= glyphsCount; i++) {\n-            encoding[bytes[pos++]] = i;\n-          }\n-          break;\n-        case 1:\n-          const rangesCount = bytes[pos++];\n-          let gid = 1;\n-          for (i = 0; i \u003C rangesCount; i++) {\n-            const start = bytes[pos++];\n-            const left = bytes[pos++];\n-            for (let j = start; j \u003C= start + left; j++) {\n-              encoding[j] = gid++;\n-            }\n-          }\n-          break;\n-        default:\n-          throw new FormatError(`Unknown encoding format: ${format} in CFF`);\n-      }\n-      const dataEnd = pos;\n-      if (format & 0x80) {\n-        bytes[dataStart] &= 0x7f;\n-        readSupplement();\n-      }\n-      raw = bytes.subarray(dataStart, dataEnd);\n-    }\n-    format &= 0x7f;\n-    return new CFFEncoding(predefined, format, encoding, raw);\n-  }\n-  parseFDSelect(pos, length) {\n-    const bytes = this.bytes;\n-    const format = bytes[pos++];\n-    const fdSelect = [];\n-    let i;\n-    switch (format) {\n-      case 0:\n-        for (i = 0; i \u003C length; ++i) {\n-          const id = bytes[pos++];\n-          fdSelect.push(id);\n-        }\n-        break;\n-      case 3:\n-        const rangesCount = bytes[pos++] \u003C\u003C 8 | bytes[pos++];\n-        for (i = 0; i \u003C rangesCount; ++i) {\n-          let first = bytes[pos++] \u003C\u003C 8 | bytes[pos++];\n-          if (i === 0 && first !== 0) {\n-            warn(\"parseFDSelect: The first range must have a first GID of 0\" + \" -- trying to recover.\");\n-            first = 0;\n-          }\n-          const fdIndex = bytes[pos++];\n-          const next = bytes[pos] \u003C\u003C 8 | bytes[pos + 1];\n-          for (let j = first; j \u003C next; ++j) {\n-            fdSelect.push(fdIndex);\n-          }\n-        }\n-        pos += 2;\n-        break;\n-      default:\n-        throw new FormatError(`parseFDSelect: Unknown format \"${format}\".`);\n-    }\n-    if (fdSelect.length !== length) {\n-      throw new FormatError(\"parseFDSelect: Invalid font data.\");\n-    }\n-    return new CFFFDSelect(format, fdSelect);\n-  }\n-}\n-class CFF {\n-  constructor() {\n-    this.header = null;\n-    this.names = [];\n-    this.topDict = null;\n-    this.strings = new CFFStrings();\n-    this.globalSubrIndex = null;\n-    this.encoding = null;\n-    this.charset = null;\n-    this.charStrings = null;\n-    this.fdArray = [];\n-    this.fdSelect = null;\n-    this.isCIDFont = false;\n-  }\n-  duplicateFirstGlyph() {\n-    if (this.charStrings.count >= 65535) {\n-      warn(\"Not enough space in charstrings to duplicate first glyph.\");\n-      return;\n-    }\n-    const glyphZero = this.charStrings.get(0);\n-    this.charStrings.add(glyphZero);\n-    if (this.isCIDFont) {\n-      this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]);\n-    }\n-  }\n-  hasGlyphId(id) {\n-    if (id \u003C 0 || id >= this.charStrings.count) {\n-      return false;\n-    }\n-    const glyph = this.charStrings.get(id);\n-    return glyph.length > 0;\n-  }\n-}\n-class CFFHeader {\n-  constructor(major, minor, hdrSize, offSize) {\n-    this.major = major;\n-    this.minor = minor;\n-    this.hdrSize = hdrSize;\n-    this.offSize = offSize;\n-  }\n-}\n-class CFFStrings {\n-  constructor() {\n-    this.strings = [];\n-  }\n-  get(index) {\n-    if (index >= 0 && index \u003C= NUM_STANDARD_CFF_STRINGS - 1) {\n-      return CFFStandardStrings[index];\n-    }\n-    if (index - NUM_STANDARD_CFF_STRINGS \u003C= this.strings.length) {\n-      return this.strings[index - NUM_STANDARD_CFF_STRINGS];\n-    }\n-    return CFFStandardStrings[0];\n-  }\n-  getSID(str) {\n-    let index = CFFStandardStrings.indexOf(str);\n-    if (index !== -1) {\n-      return index;\n-    }\n-    index = this.strings.indexOf(str);\n-    if (index !== -1) {\n-      return index + NUM_STANDARD_CFF_STRINGS;\n-    }\n-    return -1;\n-  }\n-  add(value) {\n-    this.strings.push(value);\n-  }\n-  get count() {\n-    return this.strings.length;\n-  }\n-}\n-class CFFIndex {\n-  constructor() {\n-    this.objects = [];\n-    this.length = 0;\n-  }\n-  add(data) {\n-    this.length += data.length;\n-    this.objects.push(data);\n-  }\n-  set(index, data) {\n-    this.length += data.length - this.objects[index].length;\n-    this.objects[index] = data;\n-  }\n-  get(index) {\n-    return this.objects[index];\n-  }\n-  get count() {\n-    return this.objects.length;\n-  }\n-}\n-class CFFDict {\n-  constructor(tables, strings) {\n-    this.keyToNameMap = tables.keyToNameMap;\n-    this.nameToKeyMap = tables.nameToKeyMap;\n-    this.defaults = tables.defaults;\n-    this.types = tables.types;\n-    this.opcodes = tables.opcodes;\n-    this.order = tables.order;\n-    this.strings = strings;\n-    this.values = Object.create(null);\n-  }\n-  setByKey(key, value) {\n-    if (!(key in this.keyToNameMap)) {\n-      return false;\n-    }\n-    if (value.length === 0) {\n-      return true;\n-    }\n-    for (const val of value) {\n-      if (isNaN(val)) {\n-        warn(`Invalid CFFDict value: \"${value}\" for key \"${key}\".`);\n-        return true;\n-      }\n-    }\n-    const type = this.types[key];\n-    if (type === \"num\" || type === \"sid\" || type === \"offset\") {\n-      value = value[0];\n-    }\n-    this.values[key] = value;\n-    return true;\n-  }\n-  setByName(name, value) {\n-    if (!(name in this.nameToKeyMap)) {\n-      throw new FormatError(`Invalid dictionary name \"${name}\"`);\n-    }\n-    this.values[this.nameToKeyMap[name]] = value;\n-  }\n-  hasName(name) {\n-    return this.nameToKeyMap[name] in this.values;\n-  }\n-  getByName(name) {\n-    if (!(name in this.nameToKeyMap)) {\n-      throw new FormatError(`Invalid dictionary name ${name}\"`);\n-    }\n-    const key = this.nameToKeyMap[name];\n-    if (!(key in this.values)) {\n-      return this.defaults[key];\n-    }\n-    return this.values[key];\n-  }\n-  removeByName(name) {\n-    delete this.values[this.nameToKeyMap[name]];\n-  }\n-  static createTables(layout) {\n-    const tables = {\n-      keyToNameMap: {},\n-      nameToKeyMap: {},\n-      defaults: {},\n-      types: {},\n-      opcodes: {},\n-      order: []\n-    };\n-    for (const entry of layout) {\n-      const key = Array.isArray(entry[0]) ? (entry[0][0] \u003C\u003C 8) + entry[0][1] : entry[0];\n-      tables.keyToNameMap[key] = entry[1];\n-      tables.nameToKeyMap[entry[1]] = key;\n-      tables.types[key] = entry[2];\n-      tables.defaults[key] = entry[3];\n-      tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]];\n-      tables.order.push(key);\n-    }\n-    return tables;\n-  }\n-}\n-const CFFTopDictLayout = [[[12, 30], \"ROS\", [\"sid\", \"sid\", \"num\"], null], [[12, 20], \"SyntheticBase\", \"num\", null], [0, \"version\", \"sid\", null], [1, \"Notice\", \"sid\", null], [[12, 0], \"Copyright\", \"sid\", null], [2, \"FullName\", \"sid\", null], [3, \"FamilyName\", \"sid\", null], [4, \"Weight\", \"sid\", null], [[12, 1], \"isFixedPitch\", \"num\", 0], [[12, 2], \"ItalicAngle\", \"num\", 0], [[12, 3], \"UnderlinePosition\", \"num\", -100], [[12, 4], \"UnderlineThickness\", \"num\", 50], [[12, 5], \"PaintType\", \"num\", 0], [[12, 6], \"CharstringType\", \"num\", 2], [[12, 7], \"FontMatrix\", [\"num\", \"num\", \"num\", \"num\", \"num\", \"num\"], [0.001, 0, 0, 0.001, 0, 0]], [13, \"UniqueID\", \"num\", null], [5, \"FontBBox\", [\"num\", \"num\", \"num\", \"num\"], [0, 0, 0, 0]], [[12, 8], \"StrokeWidth\", \"num\", 0], [14, \"XUID\", \"array\", null], [15, \"charset\", \"offset\", 0], [16, \"Encoding\", \"offset\", 0], [17, \"CharStrings\", \"offset\", 0], [18, \"Private\", [\"offset\", \"offset\"], null], [[12, 21], \"PostScript\", \"sid\", null], [[12, 22], \"BaseFontName\", \"sid\", null], [[12, 23], \"BaseFontBlend\", \"delta\", null], [[12, 31], \"CIDFontVersion\", \"num\", 0], [[12, 32], \"CIDFontRevision\", \"num\", 0], [[12, 33], \"CIDFontType\", \"num\", 0], [[12, 34], \"CIDCount\", \"num\", 8720], [[12, 35], \"UIDBase\", \"num\", null], [[12, 37], \"FDSelect\", \"offset\", null], [[12, 36], \"FDArray\", \"offset\", null], [[12, 38], \"FontName\", \"sid\", null]];\n-class CFFTopDict extends CFFDict {\n-  static get tables() {\n-    return shadow(this, \"tables\", this.createTables(CFFTopDictLayout));\n-  }\n-  constructor(strings) {\n-    super(CFFTopDict.tables, strings);\n-    this.privateDict = null;\n-  }\n-}\n-const CFFPrivateDictLayout = [[6, \"BlueValues\", \"delta\", null], [7, \"OtherBlues\", \"delta\", null], [8, \"FamilyBlues\", \"delta\", null], [9, \"FamilyOtherBlues\", \"delta\", null], [[12, 9], \"BlueScale\", \"num\", 0.039625], [[12, 10], \"BlueShift\", \"num\", 7], [[12, 11], \"BlueFuzz\", \"num\", 1], [10, \"StdHW\", \"num\", null], [11, \"StdVW\", \"num\", null], [[12, 12], \"StemSnapH\", \"delta\", null], [[12, 13], \"StemSnapV\", \"delta\", null], [[12, 14], \"ForceBold\", \"num\", 0], [[12, 17], \"LanguageGroup\", \"num\", 0], [[12, 18], \"ExpansionFactor\", \"num\", 0.06], [[12, 19], \"initialRandomSeed\", \"num\", 0], [20, \"defaultWidthX\", \"num\", 0], [21, \"nominalWidthX\", \"num\", 0], [19, \"Subrs\", \"offset\", null]];\n-class CFFPrivateDict extends CFFDict {\n-  static get tables() {\n-    return shadow(this, \"tables\", this.createTables(CFFPrivateDictLayout));\n-  }\n-  constructor(strings) {\n-    super(CFFPrivateDict.tables, strings);\n-    this.subrsIndex = null;\n-  }\n-}\n-const CFFCharsetPredefinedTypes = {\n-  ISO_ADOBE: 0,\n-  EXPERT: 1,\n-  EXPERT_SUBSET: 2\n-};\n-class CFFCharset {\n-  constructor(predefined, format, charset, raw) {\n-    this.predefined = predefined;\n-    this.format = format;\n-    this.charset = charset;\n-    this.raw = raw;\n-  }\n-}\n-class CFFEncoding {\n-  constructor(predefined, format, encoding, raw) {\n-    this.predefined = predefined;\n-    this.format = format;\n-    this.encoding = encoding;\n-    this.raw = raw;\n-  }\n-}\n-class CFFFDSelect {\n-  constructor(format, fdSelect) {\n-    this.format = format;\n-    this.fdSelect = fdSelect;\n-  }\n-  getFDIndex(glyphIndex) {\n-    if (glyphIndex \u003C 0 || glyphIndex >= this.fdSelect.length) {\n-      return -1;\n-    }\n-    return this.fdSelect[glyphIndex];\n-  }\n-}\n-class CFFOffsetTracker {\n-  constructor() {\n-    this.offsets = Object.create(null);\n-  }\n-  isTracking(key) {\n-    return key in this.offsets;\n-  }\n-  track(key, location) {\n-    if (key in this.offsets) {\n-      throw new FormatError(`Already tracking location of ${key}`);\n-    }\n-    this.offsets[key] = location;\n-  }\n-  offset(value) {\n-    for (const key in this.offsets) {\n-      this.offsets[key] += value;\n-    }\n-  }\n-  setEntryLocation(key, values, output) {\n-    if (!(key in this.offsets)) {\n-      throw new FormatError(`Not tracking location of ${key}`);\n-    }\n-    const data = output.data;\n-    const dataOffset = this.offsets[key];\n-    const size = 5;\n-    for (let i = 0, ii = values.length; i \u003C ii; ++i) {\n-      const offset0 = i * size + dataOffset;\n-      const offset1 = offset0 + 1;\n-      const offset2 = offset0 + 2;\n-      const offset3 = offset0 + 3;\n-      const offset4 = offset0 + 4;\n-      if (data[offset0] !== 0x1d || data[offset1] !== 0 || data[offset2] !== 0 || data[offset3] !== 0 || data[offset4] !== 0) {\n-        throw new FormatError(\"writing to an offset that is not empty\");\n-      }\n-      const value = values[i];\n-      data[offset0] = 0x1d;\n-      data[offset1] = value >> 24 & 0xff;\n-      data[offset2] = value >> 16 & 0xff;\n-      data[offset3] = value >> 8 & 0xff;\n-      data[offset4] = value & 0xff;\n-    }\n-  }\n-}\n-class CFFCompiler {\n-  constructor(cff) {\n-    this.cff = cff;\n-  }\n-  compile() {\n-    const cff = this.cff;\n-    const output = {\n-      data: [],\n-      length: 0,\n-      add(data) {\n-        try {\n-          this.data.push(...data);\n-        } catch {\n-          this.data = this.data.concat(data);\n-        }\n-        this.length = this.data.length;\n-      }\n-    };\n-    const header = this.compileHeader(cff.header);\n-    output.add(header);\n-    const nameIndex = this.compileNameIndex(cff.names);\n-    output.add(nameIndex);\n-    if (cff.isCIDFont) {\n-      if (cff.topDict.hasName(\"FontMatrix\")) {\n-        const base = cff.topDict.getByName(\"FontMatrix\");\n-        cff.topDict.removeByName(\"FontMatrix\");\n-        for (const subDict of cff.fdArray) {\n-          let matrix = base.slice(0);\n-          if (subDict.hasName(\"FontMatrix\")) {\n-            matrix = Util.transform(matrix, subDict.getByName(\"FontMatrix\"));\n-          }\n-          subDict.setByName(\"FontMatrix\", matrix);\n-        }\n-      }\n-    }\n-    const xuid = cff.topDict.getByName(\"XUID\");\n-    if (xuid?.length > 16) {\n-      cff.topDict.removeByName(\"XUID\");\n-    }\n-    cff.topDict.setByName(\"charset\", 0);\n-    let compiled = this.compileTopDicts([cff.topDict], output.length, cff.isCIDFont);\n-    output.add(compiled.output);\n-    const topDictTracker = compiled.trackers[0];\n-    const stringIndex = this.compileStringIndex(cff.strings.strings);\n-    output.add(stringIndex);\n-    const globalSubrIndex = this.compileIndex(cff.globalSubrIndex);\n-    output.add(globalSubrIndex);\n-    if (cff.encoding && cff.topDict.hasName(\"Encoding\")) {\n-      if (cff.encoding.predefined) {\n-        topDictTracker.setEntryLocation(\"Encoding\", [cff.encoding.format], output);\n-      } else {\n-        const encoding = this.compileEncoding(cff.encoding);\n-        topDictTracker.setEntryLocation(\"Encoding\", [output.length], output);\n-        output.add(encoding);\n-      }\n-    }\n-    const charset = this.compileCharset(cff.charset, cff.charStrings.count, cff.strings, cff.isCIDFont);\n-    topDictTracker.setEntryLocation(\"charset\", [output.length], output);\n-    output.add(charset);\n-    const charStrings = this.compileCharStrings(cff.charStrings);\n-    topDictTracker.setEntryLocation(\"CharStrings\", [output.length], output);\n-    output.add(charStrings);\n-    if (cff.isCIDFont) {\n-      topDictTracker.setEntryLocation(\"FDSelect\", [output.length], output);\n-      const fdSelect = this.compileFDSelect(cff.fdSelect);\n-      output.add(fdSelect);\n-      compiled = this.compileTopDicts(cff.fdArray, output.length, true);\n-      topDictTracker.setEntryLocation(\"FDArray\", [output.length], output);\n-      output.add(compiled.output);\n-      const fontDictTrackers = compiled.trackers;\n-      this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);\n-    }\n-    this.compilePrivateDicts([cff.topDict], [topDictTracker], output);\n-    output.add([0]);\n-    return output.data;\n-  }\n-  encodeNumber(value) {\n-    if (Number.isInteger(value)) {\n-      return this.encodeInteger(value);\n-    }\n-    return this.encodeFloat(value);\n-  }\n-  static get EncodeFloatRegExp() {\n-    return shadow(this, \"EncodeFloatRegExp\", \u002F\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)\u002F);\n-  }\n-  encodeFloat(num) {\n-    let value = num.toString();\n-    const m = CFFCompiler.EncodeFloatRegExp.exec(value);\n-    if (m) {\n-      const epsilon = parseFloat(\"1e\" + ((m[2] ? +m[2] : 0) + m[1].length));\n-      value = (Math.round(num * epsilon) \u002F epsilon).toString();\n-    }\n-    let nibbles = \"\";\n-    let i, ii;\n-    for (i = 0, ii = value.length; i \u003C ii; ++i) {\n-      const a = value[i];\n-      if (a === \"e\") {\n-        nibbles += value[++i] === \"-\" ? \"c\" : \"b\";\n-      } else if (a === \".\") {\n-        nibbles += \"a\";\n-      } else if (a === \"-\") {\n-        nibbles += \"e\";\n-      } else {\n-        nibbles += a;\n-      }\n-    }\n-    nibbles += nibbles.length & 1 ? \"f\" : \"ff\";\n-    const out = [30];\n-    for (i = 0, ii = nibbles.length; i \u003C ii; i += 2) {\n-      out.push(parseInt(nibbles.substring(i, i + 2), 16));\n-    }\n-    return out;\n-  }\n-  encodeInteger(value) {\n-    let code;\n-    if (value >= -107 && value \u003C= 107) {\n-      code = [value + 139];\n-    } else if (value >= 108 && value \u003C= 1131) {\n-      value -= 108;\n-      code = [(value >> 8) + 247, value & 0xff];\n-    } else if (value >= -1131 && value \u003C= -108) {\n-      value = -value - 108;\n-      code = [(value >> 8) + 251, value & 0xff];\n-    } else if (value >= -32768 && value \u003C= 32767) {\n-      code = [0x1c, value >> 8 & 0xff, value & 0xff];\n-    } else {\n-      code = [0x1d, value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff];\n-    }\n-    return code;\n-  }\n-  compileHeader(header) {\n-    return [header.major, header.minor, 4, header.offSize];\n-  }\n-  compileNameIndex(names) {\n-    const nameIndex = new CFFIndex();\n-    for (const name of names) {\n-      const length = Math.min(name.length, 127);\n-      let sanitizedName = new Array(length);\n-      for (let j = 0; j \u003C length; j++) {\n-        let char = name[j];\n-        if (char \u003C \"!\" || char > \"~\" || char === \"[\" || char === \"]\" || char === \"(\" || char === \")\" || char === \"{\" || char === \"}\" || char === \"\u003C\" || char === \">\" || char === \"\u002F\" || char === \"%\") {\n-          char = \"_\";\n-        }\n-        sanitizedName[j] = char;\n-      }\n-      sanitizedName = sanitizedName.join(\"\");\n-      if (sanitizedName === \"\") {\n-        sanitizedName = \"Bad_Font_Name\";\n-      }\n-      nameIndex.add(stringToBytes(sanitizedName));\n-    }\n-    return this.compileIndex(nameIndex);\n-  }\n-  compileTopDicts(dicts, length, removeCidKeys) {\n-    const fontDictTrackers = [];\n-    let fdArrayIndex = new CFFIndex();\n-    for (const fontDict of dicts) {\n-      if (removeCidKeys) {\n-        fontDict.removeByName(\"CIDFontVersion\");\n-        fontDict.removeByName(\"CIDFontRevision\");\n-        fontDict.removeByName(\"CIDFontType\");\n-        fontDict.removeByName(\"CIDCount\");\n-        fontDict.removeByName(\"UIDBase\");\n-      }\n-      const fontDictTracker = new CFFOffsetTracker();\n-      const fontDictData = this.compileDict(fontDict, fontDictTracker);\n-      fontDictTrackers.push(fontDictTracker);\n-      fdArrayIndex.add(fontDictData);\n-      fontDictTracker.offset(length);\n-    }\n-    fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);\n-    return {\n-      trackers: fontDictTrackers,\n-      output: fdArrayIndex\n-    };\n-  }\n-  compilePrivateDicts(dicts, trackers, output) {\n-    for (let i = 0, ii = dicts.length; i \u003C ii; ++i) {\n-      const fontDict = dicts[i];\n-      const privateDict = fontDict.privateDict;\n-      if (!privateDict || !fontDict.hasName(\"Private\")) {\n-        throw new FormatError(\"There must be a private dictionary.\");\n-      }\n-      const privateDictTracker = new CFFOffsetTracker();\n-      const privateDictData = this.compileDict(privateDict, privateDictTracker);\n-      let outputLength = output.length;\n-      privateDictTracker.offset(outputLength);\n-      if (!privateDictData.length) {\n-        outputLength = 0;\n-      }\n-      trackers[i].setEntryLocation(\"Private\", [privateDictData.length, outputLength], output);\n-      output.add(privateDictData);\n-      if (privateDict.subrsIndex && privateDict.hasName(\"Subrs\")) {\n-        const subrs = this.compileIndex(privateDict.subrsIndex);\n-        privateDictTracker.setEntryLocation(\"Subrs\", [privateDictData.length], output);\n-        output.add(subrs);\n-      }\n-    }\n-  }\n-  compileDict(dict, offsetTracker) {\n-    const out = [];\n-    for (const key of dict.order) {\n-      if (!(key in dict.values)) {\n-        continue;\n-      }\n-      let values = dict.values[key];\n-      let types = dict.types[key];\n-      if (!Array.isArray(types)) {\n-        types = [types];\n-      }\n-      if (!Array.isArray(values)) {\n-        values = [values];\n-      }\n-      if (values.length === 0) {\n-        continue;\n-      }\n-      for (let j = 0, jj = types.length; j \u003C jj; ++j) {\n-        const type = types[j];\n-        const value = values[j];\n-        switch (type) {\n-          case \"num\":\n-          case \"sid\":\n-            out.push(...this.encodeNumber(value));\n-            break;\n-          case \"offset\":\n-            const name = dict.keyToNameMap[key];\n-            if (!offsetTracker.isTracking(name)) {\n-              offsetTracker.track(name, out.length);\n-            }\n-            out.push(0x1d, 0, 0, 0, 0);\n-            break;\n-          case \"array\":\n-          case \"delta\":\n-            out.push(...this.encodeNumber(value));\n-            for (let k = 1, kk = values.length; k \u003C kk; ++k) {\n-              out.push(...this.encodeNumber(values[k]));\n-            }\n-            break;\n-          default:\n-            throw new FormatError(`Unknown data type of ${type}`);\n-        }\n-      }\n-      out.push(...dict.opcodes[key]);\n-    }\n-    return out;\n-  }\n-  compileStringIndex(strings) {\n-    const stringIndex = new CFFIndex();\n-    for (const string of strings) {\n-      stringIndex.add(stringToBytes(string));\n-    }\n-    return this.compileIndex(stringIndex);\n-  }\n-  compileCharStrings(charStrings) {\n-    const charStringsIndex = new CFFIndex();\n-    for (let i = 0; i \u003C charStrings.count; i++) {\n-      const glyph = charStrings.get(i);\n-      if (glyph.length === 0) {\n-        charStringsIndex.add(new Uint8Array([0x8b, 0x0e]));\n-        continue;\n-      }\n-      charStringsIndex.add(glyph);\n-    }\n-    return this.compileIndex(charStringsIndex);\n-  }\n-  compileCharset(charset, numGlyphs, strings, isCIDFont) {\n-    let out;\n-    const numGlyphsLessNotDef = numGlyphs - 1;\n-    if (isCIDFont) {\n-      out = new Uint8Array([2, 0, 0, numGlyphsLessNotDef >> 8 & 0xff, numGlyphsLessNotDef & 0xff]);\n-    } else {\n-      const length = 1 + numGlyphsLessNotDef * 2;\n-      out = new Uint8Array(length);\n-      out[0] = 0;\n-      let charsetIndex = 0;\n-      const numCharsets = charset.charset.length;\n-      let warned = false;\n-      for (let i = 1; i \u003C out.length; i += 2) {\n-        let sid = 0;\n-        if (charsetIndex \u003C numCharsets) {\n-          const name = charset.charset[charsetIndex++];\n-          sid = strings.getSID(name);\n-          if (sid === -1) {\n-            sid = 0;\n-            if (!warned) {\n-              warned = true;\n-              warn(`Couldn't find ${name} in CFF strings`);\n-            }\n-          }\n-        }\n-        out[i] = sid >> 8 & 0xff;\n-        out[i + 1] = sid & 0xff;\n-      }\n-    }\n-    return this.compileTypedArray(out);\n-  }\n-  compileEncoding(encoding) {\n-    return this.compileTypedArray(encoding.raw);\n-  }\n-  compileFDSelect(fdSelect) {\n-    const format = fdSelect.format;\n-    let out, i;\n-    switch (format) {\n-      case 0:\n-        out = new Uint8Array(1 + fdSelect.fdSelect.length);\n-        out[0] = format;\n-        for (i = 0; i \u003C fdSelect.fdSelect.length; i++) {\n-          out[i + 1] = fdSelect.fdSelect[i];\n-        }\n-        break;\n-      case 3:\n-        const start = 0;\n-        let lastFD = fdSelect.fdSelect[0];\n-        const ranges = [format, 0, 0, start >> 8 & 0xff, start & 0xff, lastFD];\n-        for (i = 1; i \u003C fdSelect.fdSelect.length; i++) {\n-          const currentFD = fdSelect.fdSelect[i];\n-          if (currentFD !== lastFD) {\n-            ranges.push(i >> 8 & 0xff, i & 0xff, currentFD);\n-            lastFD = currentFD;\n-          }\n-        }\n-        const numRanges = (ranges.length - 3) \u002F 3;\n-        ranges[1] = numRanges >> 8 & 0xff;\n-        ranges[2] = numRanges & 0xff;\n-        ranges.push(i >> 8 & 0xff, i & 0xff);\n-        out = new Uint8Array(ranges);\n-        break;\n-    }\n-    return this.compileTypedArray(out);\n-  }\n-  compileTypedArray(data) {\n-    return Array.from(data);\n-  }\n-  compileIndex(index, trackers = []) {\n-    const objects = index.objects;\n-    const count = objects.length;\n-    if (count === 0) {\n-      return [0, 0];\n-    }\n-    const data = [count >> 8 & 0xff, count & 0xff];\n-    let lastOffset = 1,\n-      i;\n-    for (i = 0; i \u003C count; ++i) {\n-      lastOffset += objects[i].length;\n-    }\n-    let offsetSize;\n-    if (lastOffset \u003C 0x100) {\n-      offsetSize = 1;\n-    } else if (lastOffset \u003C 0x10000) {\n-      offsetSize = 2;\n-    } else if (lastOffset \u003C 0x1000000) {\n-      offsetSize = 3;\n-    } else {\n-      offsetSize = 4;\n-    }\n-    data.push(offsetSize);\n-    let relativeOffset = 1;\n-    for (i = 0; i \u003C count + 1; i++) {\n-      if (offsetSize === 1) {\n-        data.push(relativeOffset & 0xff);\n-      } else if (offsetSize === 2) {\n-        data.push(relativeOffset >> 8 & 0xff, relativeOffset & 0xff);\n-      } else if (offsetSize === 3) {\n-        data.push(relativeOffset >> 16 & 0xff, relativeOffset >> 8 & 0xff, relativeOffset & 0xff);\n-      } else {\n-        data.push(relativeOffset >>> 24 & 0xff, relativeOffset >> 16 & 0xff, relativeOffset >> 8 & 0xff, relativeOffset & 0xff);\n-      }\n-      if (objects[i]) {\n-        relativeOffset += objects[i].length;\n-      }\n-    }\n-    for (i = 0; i \u003C count; i++) {\n-      if (trackers[i]) {\n-        trackers[i].offset(data.length);\n-      }\n-      data.push(...objects[i]);\n-    }\n-    return data;\n-  }\n-}\n-\n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fglyphlist.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fglyphlist.js\n \n const getGlyphsUnicode = getLookupTableFactory(function (t) {\n   t.A = 0x0041;\n@@ -15974,7 +21724,7 @@\n   t[\".notdef\"] = 0x0000;\n });\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Funicode.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Funicode.js\n \n const getSpecialPUASymbols = getLookupTableFactory(function (t) {\n   t[63721] = 0x00a9;\n@@ -16079,7 +21829,17 @@\n   CategoryCache.clear();\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Ffonts_utils.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Ffonts_utils.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n \n@@ -16162,8 +21922,1662 @@\n function normalizeFontName(name) {\n   return name.replaceAll(\u002F[,_]\u002Fg, \"-\").replaceAll(\u002F\\s\u002Fg, \"\");\n }\n+const getVerticalPresentationForm = getLookupTableFactory(t => {\n+  t[0x2013] = 0xfe32;\n+  t[0x2014] = 0xfe31;\n+  t[0x2025] = 0xfe30;\n+  t[0x2026] = 0xfe19;\n+  t[0x3001] = 0xfe11;\n+  t[0x3002] = 0xfe12;\n+  t[0x3008] = 0xfe3f;\n+  t[0x3009] = 0xfe40;\n+  t[0x300a] = 0xfe3d;\n+  t[0x300b] = 0xfe3e;\n+  t[0x300c] = 0xfe41;\n+  t[0x300d] = 0xfe42;\n+  t[0x300e] = 0xfe43;\n+  t[0x300f] = 0xfe44;\n+  t[0x3010] = 0xfe3b;\n+  t[0x3011] = 0xfe3c;\n+  t[0x3014] = 0xfe39;\n+  t[0x3015] = 0xfe3a;\n+  t[0x3016] = 0xfe17;\n+  t[0x3017] = 0xfe18;\n+  t[0xfe4f] = 0xfe34;\n+  t[0xff01] = 0xfe15;\n+  t[0xff08] = 0xfe35;\n+  t[0xff09] = 0xfe36;\n+  t[0xff0c] = 0xfe10;\n+  t[0xff1a] = 0xfe13;\n+  t[0xff1b] = 0xfe14;\n+  t[0xff1f] = 0xfe16;\n+  t[0xff3b] = 0xfe47;\n+  t[0xff3d] = 0xfe48;\n+  t[0xff3f] = 0xfe33;\n+  t[0xff5b] = 0xfe37;\n+  t[0xff5d] = 0xfe38;\n+});\n+const MAX_SIZE_TO_COMPILE = 1000;\n+function compileType3Glyph({\n+  data: img,\n+  width,\n+  height\n+}) {\n+  if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {\n+    return null;\n+  }\n+  const POINT_TO_PROCESS_LIMIT = 1000;\n+  const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n+  const width1 = width + 1;\n+  const points = new Uint8Array(width1 * (height + 1));\n+  let i, j, j0;\n+  const lineSize = width + 7 & ~7;\n+  const data = new Uint8Array(lineSize * height);\n+  let pos = 0;\n+  for (const elem of img) {\n+    let mask = 128;\n+    while (mask > 0) {\n+      data[pos++] = elem & mask ? 0 : 255;\n+      mask >>= 1;\n+    }\n+  }\n+  let count = 0;\n+  pos = 0;\n+  if (data[pos] !== 0) {\n+    points[0] = 1;\n+    ++count;\n+  }\n+  for (j = 1; j \u003C width; j++) {\n+    if (data[pos] !== data[pos + 1]) {\n+      points[j] = data[pos] ? 2 : 1;\n+      ++count;\n+    }\n+    pos++;\n+  }\n+  if (data[pos] !== 0) {\n+    points[j] = 2;\n+    ++count;\n+  }\n+  for (i = 1; i \u003C height; i++) {\n+    pos = i * lineSize;\n+    j0 = i * width1;\n+    if (data[pos - lineSize] !== data[pos]) {\n+      points[j0] = data[pos] ? 1 : 8;\n+      ++count;\n+    }\n+    let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n+    for (j = 1; j \u003C width; j++) {\n+      sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);\n+      if (POINT_TYPES[sum]) {\n+        points[j0 + j] = POINT_TYPES[sum];\n+        ++count;\n+      }\n+      pos++;\n+    }\n+    if (data[pos - lineSize] !== data[pos]) {\n+      points[j0 + j] = data[pos] ? 2 : 4;\n+      ++count;\n+    }\n+    if (count > POINT_TO_PROCESS_LIMIT) {\n+      return null;\n+    }\n+  }\n+  pos = lineSize * (height - 1);\n+  j0 = i * width1;\n+  if (data[pos] !== 0) {\n+    points[j0] = 8;\n+    ++count;\n+  }\n+  for (j = 1; j \u003C width; j++) {\n+    if (data[pos] !== data[pos + 1]) {\n+      points[j0 + j] = data[pos] ? 4 : 8;\n+      ++count;\n+    }\n+    pos++;\n+  }\n+  if (data[pos] !== 0) {\n+    points[j0 + j] = 4;\n+    ++count;\n+  }\n+  if (count > POINT_TO_PROCESS_LIMIT) {\n+    return null;\n+  }\n+  const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n+  const pathBuf = [];\n+  const {\n+    a,\n+    b,\n+    c,\n+    d,\n+    e,\n+    f\n+  } = new DOMMatrix().scaleSelf(1 \u002F width, -1 \u002F height).translateSelf(0, -height);\n+  for (i = 0; count && i \u003C= height; i++) {\n+    let p = i * width1;\n+    const end = p + width;\n+    while (p \u003C end && !points[p]) {\n+      p++;\n+    }\n+    if (p === end) {\n+      continue;\n+    }\n+    let x = p % width1;\n+    let y = i;\n+    pathBuf.push(DrawOPS.moveTo, a * x + c * y + e, b * x + d * y + f);\n+    const p0 = p;\n+    let type = points[p];\n+    do {\n+      const step = steps[type];\n+      do {\n+        p += step;\n+      } while (!points[p]);\n+      const pp = points[p];\n+      if (pp !== 5 && pp !== 10) {\n+        type = pp;\n+        points[p] = 0;\n+      } else {\n+        type = pp & 0x33 * type >> 4;\n+        points[p] &= type >> 2 | type \u003C\u003C 2;\n+      }\n+      x = p % width1;\n+      y = p \u002F width1 | 0;\n+      pathBuf.push(DrawOPS.lineTo, a * x + c * y + e, b * x + d * y + f);\n+      if (!points[p]) {\n+        --count;\n+      }\n+    } while (p0 !== p);\n+    --i;\n+  }\n+  return [OPS.rawFillPath, [new Float32Array(pathBuf)], new Float32Array([0, 0, width, height])];\n+}\n+\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.to-array.js\n+var es_iterator_to_array = __webpack_require__(1806);\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fcharsets.js\n+const ISOAdobeCharset = [\".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\", \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\", \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\", \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\", \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\", \"perthousand\", \"questiondown\", \"grave\", \"acute\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"AE\", \"ordfeminine\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\", \"dotlessi\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"onesuperior\", \"logicalnot\", \"mu\", \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\", \"onequarter\", \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\", \"twosuperior\", \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\", \"copyright\", \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\", \"Atilde\", \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\", \"Ocircumflex\", \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\", \"aacute\", \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\", \"ccedilla\", \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\", \"odieresis\", \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\", \"udieresis\", \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\"];\n+const ExpertCharset = [\".notdef\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\", \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\", \"Dotaccentsmall\", \"Macronsmall\", \"figuredash\", \"hypheninferior\", \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"onequarter\", \"onehalf\", \"threequarters\", \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\", \"Ydieresissmall\"];\n+const ExpertSubsetCharset = [\".notdef\", \"space\", \"dollaroldstyle\", \"dollarsuperior\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\", \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\", \"hyphensuperior\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"centoldstyle\", \"figuredash\", \"hypheninferior\", \"onequarter\", \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\", \"commainferior\"];\n+\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fcff_parser.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+const MAX_SUBR_NESTING = 10;\n+const CFFStandardStrings = [\".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\", \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\", \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\", \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\", \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\", \"perthousand\", \"questiondown\", \"grave\", \"acute\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"AE\", \"ordfeminine\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\", \"dotlessi\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"onesuperior\", \"logicalnot\", \"mu\", \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\", \"onequarter\", \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\", \"twosuperior\", \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\", \"copyright\", \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\", \"Atilde\", \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\", \"Ocircumflex\", \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\", \"aacute\", \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\", \"ccedilla\", \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\", \"odieresis\", \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\", \"udieresis\", \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\", \"exclamsmall\", \"Hungarumlautsmall\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\", \"tsuperior\", \"ff\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\", \"Dotaccentsmall\", \"Macronsmall\", \"figuredash\", \"hypheninferior\", \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\", \"Ydieresissmall\", \"001.000\", \"001.001\", \"001.002\", \"001.003\", \"Black\", \"Bold\", \"Book\", \"Light\", \"Medium\", \"Regular\", \"Roman\", \"Semibold\"];\n+const NUM_STANDARD_CFF_STRINGS = 391;\n+const CharstringValidationData = [null, {\n+  id: \"hstem\",\n+  min: 2,\n+  stackClearing: true,\n+  stem: true\n+}, null, {\n+  id: \"vstem\",\n+  min: 2,\n+  stackClearing: true,\n+  stem: true\n+}, {\n+  id: \"vmoveto\",\n+  min: 1,\n+  stackClearing: true\n+}, {\n+  id: \"rlineto\",\n+  min: 2,\n+  resetStack: true\n+}, {\n+  id: \"hlineto\",\n+  min: 1,\n+  resetStack: true\n+}, {\n+  id: \"vlineto\",\n+  min: 1,\n+  resetStack: true\n+}, {\n+  id: \"rrcurveto\",\n+  min: 6,\n+  resetStack: true\n+}, null, {\n+  id: \"callsubr\",\n+  min: 1,\n+  undefStack: true\n+}, {\n+  id: \"return\",\n+  min: 0,\n+  undefStack: true\n+}, null, null, {\n+  id: \"endchar\",\n+  min: 0,\n+  stackClearing: true\n+}, null, null, null, {\n+  id: \"hstemhm\",\n+  min: 2,\n+  stackClearing: true,\n+  stem: true\n+}, {\n+  id: \"hintmask\",\n+  min: 0,\n+  stackClearing: true\n+}, {\n+  id: \"cntrmask\",\n+  min: 0,\n+  stackClearing: true\n+}, {\n+  id: \"rmoveto\",\n+  min: 2,\n+  stackClearing: true\n+}, {\n+  id: \"hmoveto\",\n+  min: 1,\n+  stackClearing: true\n+}, {\n+  id: \"vstemhm\",\n+  min: 2,\n+  stackClearing: true,\n+  stem: true\n+}, {\n+  id: \"rcurveline\",\n+  min: 8,\n+  resetStack: true\n+}, {\n+  id: \"rlinecurve\",\n+  min: 8,\n+  resetStack: true\n+}, {\n+  id: \"vvcurveto\",\n+  min: 4,\n+  resetStack: true\n+}, {\n+  id: \"hhcurveto\",\n+  min: 4,\n+  resetStack: true\n+}, null, {\n+  id: \"callgsubr\",\n+  min: 1,\n+  undefStack: true\n+}, {\n+  id: \"vhcurveto\",\n+  min: 4,\n+  resetStack: true\n+}, {\n+  id: \"hvcurveto\",\n+  min: 4,\n+  resetStack: true\n+}];\n+const CharstringValidationData12 = [null, null, null, {\n+  id: \"and\",\n+  min: 2,\n+  stackDelta: -1\n+}, {\n+  id: \"or\",\n+  min: 2,\n+  stackDelta: -1\n+}, {\n+  id: \"not\",\n+  min: 1,\n+  stackDelta: 0\n+}, null, null, null, {\n+  id: \"abs\",\n+  min: 1,\n+  stackDelta: 0\n+}, {\n+  id: \"add\",\n+  min: 2,\n+  stackDelta: -1,\n+  stackFn(stack, index) {\n+    stack[index - 2] = stack[index - 2] + stack[index - 1];\n+  }\n+}, {\n+  id: \"sub\",\n+  min: 2,\n+  stackDelta: -1,\n+  stackFn(stack, index) {\n+    stack[index - 2] = stack[index - 2] - stack[index - 1];\n+  }\n+}, {\n+  id: \"div\",\n+  min: 2,\n+  stackDelta: -1,\n+  stackFn(stack, index) {\n+    stack[index - 2] = stack[index - 2] \u002F stack[index - 1];\n+  }\n+}, null, {\n+  id: \"neg\",\n+  min: 1,\n+  stackDelta: 0,\n+  stackFn(stack, index) {\n+    stack[index - 1] = -stack[index - 1];\n+  }\n+}, {\n+  id: \"eq\",\n+  min: 2,\n+  stackDelta: -1\n+}, null, null, {\n+  id: \"drop\",\n+  min: 1,\n+  stackDelta: -1\n+}, null, {\n+  id: \"put\",\n+  min: 2,\n+  stackDelta: -2\n+}, {\n+  id: \"get\",\n+  min: 1,\n+  stackDelta: 0\n+}, {\n+  id: \"ifelse\",\n+  min: 4,\n+  stackDelta: -3\n+}, {\n+  id: \"random\",\n+  min: 0,\n+  stackDelta: 1\n+}, {\n+  id: \"mul\",\n+  min: 2,\n+  stackDelta: -1,\n+  stackFn(stack, index) {\n+    stack[index - 2] = stack[index - 2] * stack[index - 1];\n+  }\n+}, null, {\n+  id: \"sqrt\",\n+  min: 1,\n+  stackDelta: 0\n+}, {\n+  id: \"dup\",\n+  min: 1,\n+  stackDelta: 1\n+}, {\n+  id: \"exch\",\n+  min: 2,\n+  stackDelta: 0\n+}, {\n+  id: \"index\",\n+  min: 2,\n+  stackDelta: 0\n+}, {\n+  id: \"roll\",\n+  min: 3,\n+  stackDelta: -2\n+}, null, null, null, {\n+  id: \"hflex\",\n+  min: 7,\n+  resetStack: true\n+}, {\n+  id: \"flex\",\n+  min: 13,\n+  resetStack: true\n+}, {\n+  id: \"hflex1\",\n+  min: 9,\n+  resetStack: true\n+}, {\n+  id: \"flex1\",\n+  min: 11,\n+  resetStack: true\n+}];\n+class CFFParser {\n+  constructor(file, properties, seacAnalysisEnabled) {\n+    this.bytes = file.getBytes();\n+    this.properties = properties;\n+    this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n+  }\n+  parse() {\n+    const properties = this.properties;\n+    const cff = new CFF();\n+    this.cff = cff;\n+    const header = this.parseHeader();\n+    const nameIndex = this.parseIndex(header.endPos);\n+    const topDictIndex = this.parseIndex(nameIndex.endPos);\n+    const stringIndex = this.parseIndex(topDictIndex.endPos);\n+    const globalSubrIndex = this.parseIndex(stringIndex.endPos);\n+    const topDictParsed = this.parseDict(topDictIndex.obj.get(0));\n+    const topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);\n+    cff.header = header.obj;\n+    cff.names = this.parseNameIndex(nameIndex.obj);\n+    cff.strings = this.parseStringIndex(stringIndex.obj);\n+    cff.topDict = topDict;\n+    cff.globalSubrIndex = globalSubrIndex.obj;\n+    this.parsePrivateDict(cff.topDict);\n+    cff.isCIDFont = topDict.hasName(\"ROS\");\n+    const charStringOffset = topDict.getByName(\"CharStrings\");\n+    const charStringIndex = this.parseIndex(charStringOffset).obj;\n+    const fontMatrix = topDict.getByName(\"FontMatrix\");\n+    if (fontMatrix) {\n+      properties.fontMatrix = fontMatrix;\n+    }\n+    const fontBBox = topDict.getByName(\"FontBBox\");\n+    if (fontBBox) {\n+      properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n+      properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n+      properties.ascentScaled = true;\n+    }\n+    let charset, encoding;\n+    if (cff.isCIDFont) {\n+      const fdArrayIndex = this.parseIndex(topDict.getByName(\"FDArray\")).obj;\n+      for (let i = 0, ii = fdArrayIndex.count; i \u003C ii; ++i) {\n+        const dictRaw = fdArrayIndex.get(i);\n+        const fontDict = this.createDict(CFFTopDict, this.parseDict(dictRaw), cff.strings);\n+        this.parsePrivateDict(fontDict);\n+        cff.fdArray.push(fontDict);\n+      }\n+      encoding = null;\n+      charset = this.parseCharsets(topDict.getByName(\"charset\"), charStringIndex.count, cff.strings, true);\n+      cff.fdSelect = this.parseFDSelect(topDict.getByName(\"FDSelect\"), charStringIndex.count);\n+    } else {\n+      charset = this.parseCharsets(topDict.getByName(\"charset\"), charStringIndex.count, cff.strings, false);\n+      encoding = this.parseEncoding(topDict.getByName(\"Encoding\"), properties, cff.strings, charset.charset);\n+    }\n+    cff.charset = charset;\n+    cff.encoding = encoding;\n+    const charStringsAndSeacs = this.parseCharStrings({\n+      charStrings: charStringIndex,\n+      localSubrIndex: topDict.privateDict.subrsIndex,\n+      globalSubrIndex: globalSubrIndex.obj,\n+      fdSelect: cff.fdSelect,\n+      fdArray: cff.fdArray,\n+      privateDict: topDict.privateDict\n+    });\n+    cff.charStrings = charStringsAndSeacs.charStrings;\n+    cff.seacs = charStringsAndSeacs.seacs;\n+    cff.widths = charStringsAndSeacs.widths;\n+    return cff;\n+  }\n+  parseHeader() {\n+    let bytes = this.bytes;\n+    const bytesLength = bytes.length;\n+    let offset = 0;\n+    while (offset \u003C bytesLength && bytes[offset] !== 1) {\n+      ++offset;\n+    }\n+    if (offset >= bytesLength) {\n+      throw new FormatError(\"Invalid CFF header\");\n+    }\n+    if (offset !== 0) {\n+      info(\"cff data is shifted\");\n+      bytes = bytes.subarray(offset);\n+      this.bytes = bytes;\n+    }\n+    const major = bytes[0];\n+    const minor = bytes[1];\n+    const hdrSize = bytes[2];\n+    const offSize = bytes[3];\n+    const header = new CFFHeader(major, minor, hdrSize, offSize);\n+    return {\n+      obj: header,\n+      endPos: hdrSize\n+    };\n+  }\n+  parseDict(dict) {\n+    let pos = 0;\n+    function parseOperand() {\n+      let value = dict[pos++];\n+      if (value === 30) {\n+        return parseFloatOperand();\n+      } else if (value === 28) {\n+        value = readInt16(dict, pos);\n+        pos += 2;\n+        return value;\n+      } else if (value === 29) {\n+        value = dict[pos++];\n+        value = value \u003C\u003C 8 | dict[pos++];\n+        value = value \u003C\u003C 8 | dict[pos++];\n+        value = value \u003C\u003C 8 | dict[pos++];\n+        return value;\n+      } else if (value >= 32 && value \u003C= 246) {\n+        return value - 139;\n+      } else if (value >= 247 && value \u003C= 250) {\n+        return (value - 247) * 256 + dict[pos++] + 108;\n+      } else if (value >= 251 && value \u003C= 254) {\n+        return -((value - 251) * 256) - dict[pos++] - 108;\n+      }\n+      warn('CFFParser_parseDict: \"' + value + '\" is a reserved command.');\n+      return NaN;\n+    }\n+    function parseFloatOperand() {\n+      let str = \"\";\n+      const eof = 15;\n+      const lookup = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \".\", \"E\", \"E-\", null, \"-\"];\n+      const length = dict.length;\n+      while (pos \u003C length) {\n+        const b = dict[pos++];\n+        const b1 = b >> 4;\n+        const b2 = b & 15;\n+        if (b1 === eof) {\n+          break;\n+        }\n+        str += lookup[b1];\n+        if (b2 === eof) {\n+          break;\n+        }\n+        str += lookup[b2];\n+      }\n+      return parseFloat(str);\n+    }\n+    let operands = [];\n+    const entries = [];\n+    pos = 0;\n+    const end = dict.length;\n+    while (pos \u003C end) {\n+      let b = dict[pos];\n+      if (b \u003C= 21) {\n+        if (b === 12) {\n+          b = b \u003C\u003C 8 | dict[++pos];\n+        }\n+        entries.push([b, operands]);\n+        operands = [];\n+        ++pos;\n+      } else {\n+        operands.push(parseOperand());\n+      }\n+    }\n+    return entries;\n+  }\n+  parseIndex(pos) {\n+    const cffIndex = new CFFIndex();\n+    const bytes = this.bytes;\n+    const count = bytes[pos++] \u003C\u003C 8 | bytes[pos++];\n+    const offsets = [];\n+    let end = pos;\n+    let i, ii;\n+    if (count !== 0) {\n+      const offsetSize = bytes[pos++];\n+      const startPos = pos + (count + 1) * offsetSize - 1;\n+      for (i = 0, ii = count + 1; i \u003C ii; ++i) {\n+        let offset = 0;\n+        for (let j = 0; j \u003C offsetSize; ++j) {\n+          offset \u003C\u003C= 8;\n+          offset += bytes[pos++];\n+        }\n+        offsets.push(startPos + offset);\n+      }\n+      end = offsets[count];\n+    }\n+    for (i = 0, ii = offsets.length - 1; i \u003C ii; ++i) {\n+      const offsetStart = offsets[i];\n+      const offsetEnd = offsets[i + 1];\n+      cffIndex.add(bytes.subarray(offsetStart, offsetEnd));\n+    }\n+    return {\n+      obj: cffIndex,\n+      endPos: end\n+    };\n+  }\n+  parseNameIndex(index) {\n+    const names = [];\n+    for (let i = 0, ii = index.count; i \u003C ii; ++i) {\n+      const name = index.get(i);\n+      names.push(bytesToString(name));\n+    }\n+    return names;\n+  }\n+  parseStringIndex(index) {\n+    const strings = new CFFStrings();\n+    for (let i = 0, ii = index.count; i \u003C ii; ++i) {\n+      const data = index.get(i);\n+      strings.add(bytesToString(data));\n+    }\n+    return strings;\n+  }\n+  createDict(Type, dict, strings) {\n+    const cffDict = new Type(strings);\n+    for (const [key, value] of dict) {\n+      cffDict.setByKey(key, value);\n+    }\n+    return cffDict;\n+  }\n+  parseCharString(state, data, localSubrIndex, globalSubrIndex) {\n+    if (!data || state.callDepth > MAX_SUBR_NESTING) {\n+      return false;\n+    }\n+    let stackSize = state.stackSize;\n+    const stack = state.stack;\n+    let length = data.length;\n+    for (let j = 0; j \u003C length;) {\n+      const value = data[j++];\n+      let validationCommand = null;\n+      if (value === 12) {\n+        const q = data[j++];\n+        if (q === 0) {\n+          data[j - 2] = 139;\n+          data[j - 1] = 22;\n+          stackSize = 0;\n+        } else {\n+          validationCommand = CharstringValidationData12[q];\n+        }\n+      } else if (value === 28) {\n+        stack[stackSize] = readInt16(data, j);\n+        j += 2;\n+        stackSize++;\n+      } else if (value === 14) {\n+        if (stackSize >= 4) {\n+          stackSize -= 4;\n+          if (this.seacAnalysisEnabled) {\n+            state.seac = stack.slice(stackSize, stackSize + 4);\n+            return false;\n+          }\n+        }\n+        validationCommand = CharstringValidationData[value];\n+      } else if (value >= 32 && value \u003C= 246) {\n+        stack[stackSize] = value - 139;\n+        stackSize++;\n+      } else if (value >= 247 && value \u003C= 254) {\n+        stack[stackSize] = value \u003C 251 ? (value - 247 \u003C\u003C 8) + data[j] + 108 : -(value - 251 \u003C\u003C 8) - data[j] - 108;\n+        j++;\n+        stackSize++;\n+      } else if (value === 255) {\n+        stack[stackSize] = (data[j] \u003C\u003C 24 | data[j + 1] \u003C\u003C 16 | data[j + 2] \u003C\u003C 8 | data[j + 3]) \u002F 65536;\n+        j += 4;\n+        stackSize++;\n+      } else if (value === 19 || value === 20) {\n+        state.hints += stackSize >> 1;\n+        if (state.hints === 0) {\n+          data.copyWithin(j - 1, j, -1);\n+          j -= 1;\n+          length -= 1;\n+          continue;\n+        }\n+        j += state.hints + 7 >> 3;\n+        stackSize %= 2;\n+        validationCommand = CharstringValidationData[value];\n+      } else if (value === 10 || value === 29) {\n+        const subrsIndex = value === 10 ? localSubrIndex : globalSubrIndex;\n+        if (!subrsIndex) {\n+          validationCommand = CharstringValidationData[value];\n+          warn(\"Missing subrsIndex for \" + validationCommand.id);\n+          return false;\n+        }\n+        let bias = 32768;\n+        if (subrsIndex.count \u003C 1240) {\n+          bias = 107;\n+        } else if (subrsIndex.count \u003C 33900) {\n+          bias = 1131;\n+        }\n+        const subrNumber = stack[--stackSize] + bias;\n+        if (subrNumber \u003C 0 || subrNumber >= subrsIndex.count || isNaN(subrNumber)) {\n+          validationCommand = CharstringValidationData[value];\n+          warn(\"Out of bounds subrIndex for \" + validationCommand.id);\n+          return false;\n+        }\n+        state.stackSize = stackSize;\n+        state.callDepth++;\n+        const valid = this.parseCharString(state, subrsIndex.get(subrNumber), localSubrIndex, globalSubrIndex);\n+        if (!valid) {\n+          return false;\n+        }\n+        state.callDepth--;\n+        stackSize = state.stackSize;\n+        continue;\n+      } else if (value === 11) {\n+        state.stackSize = stackSize;\n+        return true;\n+      } else if (value === 0 && j === data.length) {\n+        data[j - 1] = 14;\n+        validationCommand = CharstringValidationData[14];\n+      } else if (value === 9) {\n+        data.copyWithin(j - 1, j, -1);\n+        j -= 1;\n+        length -= 1;\n+        continue;\n+      } else {\n+        validationCommand = CharstringValidationData[value];\n+      }\n+      if (validationCommand) {\n+        if (validationCommand.stem) {\n+          state.hints += stackSize >> 1;\n+          if (value === 3 || value === 23) {\n+            state.hasVStems = true;\n+          } else if (state.hasVStems && (value === 1 || value === 18)) {\n+            warn(\"CFF stem hints are in wrong order\");\n+            data[j - 1] = value === 1 ? 3 : 23;\n+          }\n+        }\n+        if (\"min\" in validationCommand) {\n+          if (!state.undefStack && stackSize \u003C validationCommand.min) {\n+            warn(\"Not enough parameters for \" + validationCommand.id + \"; actual: \" + stackSize + \", expected: \" + validationCommand.min);\n+            if (stackSize === 0) {\n+              data[j - 1] = 14;\n+              return true;\n+            }\n+            return false;\n+          }\n+        }\n+        if (state.firstStackClearing && validationCommand.stackClearing) {\n+          state.firstStackClearing = false;\n+          stackSize -= validationCommand.min;\n+          if (stackSize >= 2 && validationCommand.stem) {\n+            stackSize %= 2;\n+          } else if (stackSize > 1) {\n+            warn(\"Found too many parameters for stack-clearing command\");\n+          }\n+          if (stackSize > 0) {\n+            state.width = stack[stackSize - 1];\n+          }\n+        }\n+        if (\"stackDelta\" in validationCommand) {\n+          if (\"stackFn\" in validationCommand) {\n+            validationCommand.stackFn(stack, stackSize);\n+          }\n+          stackSize += validationCommand.stackDelta;\n+        } else if (validationCommand.stackClearing) {\n+          stackSize = 0;\n+        } else if (validationCommand.resetStack) {\n+          stackSize = 0;\n+          state.undefStack = false;\n+        } else if (validationCommand.undefStack) {\n+          stackSize = 0;\n+          state.undefStack = true;\n+          state.firstStackClearing = false;\n+        }\n+      }\n+    }\n+    if (length \u003C data.length) {\n+      data.fill(14, length);\n+    }\n+    state.stackSize = stackSize;\n+    return true;\n+  }\n+  parseCharStrings({\n+    charStrings,\n+    localSubrIndex,\n+    globalSubrIndex,\n+    fdSelect,\n+    fdArray,\n+    privateDict\n+  }) {\n+    const seacs = [];\n+    const widths = [];\n+    const count = charStrings.count;\n+    for (let i = 0; i \u003C count; i++) {\n+      const charstring = charStrings.get(i);\n+      const state = {\n+        callDepth: 0,\n+        stackSize: 0,\n+        stack: [],\n+        undefStack: true,\n+        hints: 0,\n+        firstStackClearing: true,\n+        seac: null,\n+        width: null,\n+        hasVStems: false\n+      };\n+      let valid = true;\n+      let localSubrToUse = null;\n+      let privateDictToUse = privateDict;\n+      if (fdSelect && fdArray.length) {\n+        const fdIndex = fdSelect.getFDIndex(i);\n+        if (fdIndex === -1) {\n+          warn(\"Glyph index is not in fd select.\");\n+          valid = false;\n+        }\n+        if (fdIndex >= fdArray.length) {\n+          warn(\"Invalid fd index for glyph index.\");\n+          valid = false;\n+        }\n+        if (valid) {\n+          privateDictToUse = fdArray[fdIndex].privateDict;\n+          localSubrToUse = privateDictToUse.subrsIndex;\n+        }\n+      } else if (localSubrIndex) {\n+        localSubrToUse = localSubrIndex;\n+      }\n+      if (valid) {\n+        valid = this.parseCharString(state, charstring, localSubrToUse, globalSubrIndex);\n+      }\n+      if (state.width !== null) {\n+        const nominalWidth = privateDictToUse.getByName(\"nominalWidthX\");\n+        widths[i] = nominalWidth + state.width;\n+      } else {\n+        const defaultWidth = privateDictToUse.getByName(\"defaultWidthX\");\n+        widths[i] = defaultWidth;\n+      }\n+      if (state.seac !== null) {\n+        seacs[i] = state.seac;\n+      }\n+      if (!valid) {\n+        charStrings.set(i, new Uint8Array([14]));\n+      }\n+    }\n+    return {\n+      charStrings,\n+      seacs,\n+      widths\n+    };\n+  }\n+  emptyPrivateDictionary(parentDict) {\n+    const privateDict = this.createDict(CFFPrivateDict, [], parentDict.strings);\n+    parentDict.setByKey(18, [0, 0]);\n+    parentDict.privateDict = privateDict;\n+  }\n+  parsePrivateDict(parentDict) {\n+    if (!parentDict.hasName(\"Private\")) {\n+      this.emptyPrivateDictionary(parentDict);\n+      return;\n+    }\n+    const privateOffset = parentDict.getByName(\"Private\");\n+    if (!Array.isArray(privateOffset) || privateOffset.length !== 2) {\n+      parentDict.removeByName(\"Private\");\n+      return;\n+    }\n+    const size = privateOffset[0];\n+    const offset = privateOffset[1];\n+    if (size === 0 || offset >= this.bytes.length) {\n+      this.emptyPrivateDictionary(parentDict);\n+      return;\n+    }\n+    const privateDictEnd = offset + size;\n+    const dictData = this.bytes.subarray(offset, privateDictEnd);\n+    const dict = this.parseDict(dictData);\n+    const privateDict = this.createDict(CFFPrivateDict, dict, parentDict.strings);\n+    parentDict.privateDict = privateDict;\n+    if (privateDict.getByName(\"ExpansionFactor\") === 0) {\n+      privateDict.setByName(\"ExpansionFactor\", 0.06);\n+    }\n+    if (!privateDict.getByName(\"Subrs\")) {\n+      return;\n+    }\n+    const subrsOffset = privateDict.getByName(\"Subrs\");\n+    const relativeOffset = offset + subrsOffset;\n+    if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {\n+      this.emptyPrivateDictionary(parentDict);\n+      return;\n+    }\n+    const subrsIndex = this.parseIndex(relativeOffset);\n+    privateDict.subrsIndex = subrsIndex.obj;\n+  }\n+  parseCharsets(pos, length, strings, cid) {\n+    if (pos === 0) {\n+      return new CFFCharset(true, CFFCharsetPredefinedTypes.ISO_ADOBE, ISOAdobeCharset);\n+    } else if (pos === 1) {\n+      return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT, ExpertCharset);\n+    } else if (pos === 2) {\n+      return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT_SUBSET, ExpertSubsetCharset);\n+    }\n+    const bytes = this.bytes;\n+    const start = pos;\n+    const format = bytes[pos++];\n+    const charset = [cid ? 0 : \".notdef\"];\n+    let id, count, i;\n+    length -= 1;\n+    switch (format) {\n+      case 0:\n+        for (i = 0; i \u003C length; i++) {\n+          id = bytes[pos++] \u003C\u003C 8 | bytes[pos++];\n+          charset.push(cid ? id : strings.get(id));\n+        }\n+        break;\n+      case 1:\n+        while (charset.length \u003C= length) {\n+          id = bytes[pos++] \u003C\u003C 8 | bytes[pos++];\n+          count = bytes[pos++];\n+          for (i = 0; i \u003C= count; i++) {\n+            charset.push(cid ? id++ : strings.get(id++));\n+          }\n+        }\n+        break;\n+      case 2:\n+        while (charset.length \u003C= length) {\n+          id = bytes[pos++] \u003C\u003C 8 | bytes[pos++];\n+          count = bytes[pos++] \u003C\u003C 8 | bytes[pos++];\n+          for (i = 0; i \u003C= count; i++) {\n+            charset.push(cid ? id++ : strings.get(id++));\n+          }\n+        }\n+        break;\n+      default:\n+        throw new FormatError(\"Unknown charset format\");\n+    }\n+    const end = pos;\n+    const raw = bytes.subarray(start, end);\n+    return new CFFCharset(false, format, charset, raw);\n+  }\n+  parseEncoding(pos, properties, strings, charset) {\n+    const encoding = Object.create(null);\n+    const bytes = this.bytes;\n+    let predefined = false;\n+    let format, i, ii;\n+    let raw = null;\n+    function readSupplement() {\n+      const supplementsCount = bytes[pos++];\n+      for (i = 0; i \u003C supplementsCount; i++) {\n+        const code = bytes[pos++];\n+        const sid = (bytes[pos++] \u003C\u003C 8) + (bytes[pos++] & 0xff);\n+        encoding[code] = charset.indexOf(strings.get(sid));\n+      }\n+    }\n+    if (pos === 0 || pos === 1) {\n+      predefined = true;\n+      format = pos;\n+      const baseEncoding = pos ? ExpertEncoding : StandardEncoding;\n+      for (i = 0, ii = charset.length; i \u003C ii; i++) {\n+        const index = baseEncoding.indexOf(charset[i]);\n+        if (index !== -1) {\n+          encoding[index] = i;\n+        }\n+      }\n+    } else {\n+      const dataStart = pos;\n+      format = bytes[pos++];\n+      switch (format & 0x7f) {\n+        case 0:\n+          const glyphsCount = bytes[pos++];\n+          for (i = 1; i \u003C= glyphsCount; i++) {\n+            encoding[bytes[pos++]] = i;\n+          }\n+          break;\n+        case 1:\n+          const rangesCount = bytes[pos++];\n+          let gid = 1;\n+          for (i = 0; i \u003C rangesCount; i++) {\n+            const start = bytes[pos++];\n+            const left = bytes[pos++];\n+            for (let j = start; j \u003C= start + left; j++) {\n+              encoding[j] = gid++;\n+            }\n+          }\n+          break;\n+        default:\n+          throw new FormatError(`Unknown encoding format: ${format} in CFF`);\n+      }\n+      const dataEnd = pos;\n+      if (format & 0x80) {\n+        bytes[dataStart] &= 0x7f;\n+        readSupplement();\n+      }\n+      raw = bytes.subarray(dataStart, dataEnd);\n+    }\n+    format &= 0x7f;\n+    return new CFFEncoding(predefined, format, encoding, raw);\n+  }\n+  parseFDSelect(pos, length) {\n+    const bytes = this.bytes;\n+    const format = bytes[pos++];\n+    const fdSelect = [];\n+    let i;\n+    switch (format) {\n+      case 0:\n+        for (i = 0; i \u003C length; ++i) {\n+          const id = bytes[pos++];\n+          fdSelect.push(id);\n+        }\n+        break;\n+      case 3:\n+        const rangesCount = bytes[pos++] \u003C\u003C 8 | bytes[pos++];\n+        for (i = 0; i \u003C rangesCount; ++i) {\n+          let first = bytes[pos++] \u003C\u003C 8 | bytes[pos++];\n+          if (i === 0 && first !== 0) {\n+            warn(\"parseFDSelect: The first range must have a first GID of 0\" + \" -- trying to recover.\");\n+            first = 0;\n+          }\n+          const fdIndex = bytes[pos++];\n+          const next = bytes[pos] \u003C\u003C 8 | bytes[pos + 1];\n+          for (let j = first; j \u003C next; ++j) {\n+            fdSelect.push(fdIndex);\n+          }\n+        }\n+        pos += 2;\n+        break;\n+      default:\n+        throw new FormatError(`parseFDSelect: Unknown format \"${format}\".`);\n+    }\n+    if (fdSelect.length !== length) {\n+      throw new FormatError(\"parseFDSelect: Invalid font data.\");\n+    }\n+    return new CFFFDSelect(format, fdSelect);\n+  }\n+}\n+class CFF {\n+  constructor() {\n+    this.header = null;\n+    this.names = [];\n+    this.topDict = null;\n+    this.strings = new CFFStrings();\n+    this.globalSubrIndex = null;\n+    this.encoding = null;\n+    this.charset = null;\n+    this.charStrings = null;\n+    this.fdArray = [];\n+    this.fdSelect = null;\n+    this.isCIDFont = false;\n+  }\n+  duplicateFirstGlyph() {\n+    if (this.charStrings.count >= 65535) {\n+      warn(\"Not enough space in charstrings to duplicate first glyph.\");\n+      return;\n+    }\n+    const glyphZero = this.charStrings.get(0);\n+    this.charStrings.add(glyphZero);\n+    if (this.isCIDFont) {\n+      this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]);\n+    }\n+  }\n+  hasGlyphId(id) {\n+    if (id \u003C 0 || id >= this.charStrings.count) {\n+      return false;\n+    }\n+    const glyph = this.charStrings.get(id);\n+    return glyph.length > 0;\n+  }\n+}\n+class CFFHeader {\n+  constructor(major, minor, hdrSize, offSize) {\n+    this.major = major;\n+    this.minor = minor;\n+    this.hdrSize = hdrSize;\n+    this.offSize = offSize;\n+  }\n+}\n+class CFFStrings {\n+  constructor() {\n+    this.strings = [];\n+  }\n+  get(index) {\n+    if (index >= 0 && index \u003C= NUM_STANDARD_CFF_STRINGS - 1) {\n+      return CFFStandardStrings[index];\n+    }\n+    if (index - NUM_STANDARD_CFF_STRINGS \u003C= this.strings.length) {\n+      return this.strings[index - NUM_STANDARD_CFF_STRINGS];\n+    }\n+    return CFFStandardStrings[0];\n+  }\n+  getSID(str) {\n+    let index = CFFStandardStrings.indexOf(str);\n+    if (index !== -1) {\n+      return index;\n+    }\n+    index = this.strings.indexOf(str);\n+    if (index !== -1) {\n+      return index + NUM_STANDARD_CFF_STRINGS;\n+    }\n+    return -1;\n+  }\n+  add(value) {\n+    this.strings.push(value);\n+  }\n+  get count() {\n+    return this.strings.length;\n+  }\n+}\n+class CFFIndex {\n+  constructor() {\n+    this.objects = [];\n+    this.length = 0;\n+  }\n+  add(data) {\n+    this.length += data.length;\n+    this.objects.push(data);\n+  }\n+  set(index, data) {\n+    this.length += data.length - this.objects[index].length;\n+    this.objects[index] = data;\n+  }\n+  get(index) {\n+    return this.objects[index];\n+  }\n+  get count() {\n+    return this.objects.length;\n+  }\n+}\n+class CFFDict {\n+  constructor(tables, strings) {\n+    this.keyToNameMap = tables.keyToNameMap;\n+    this.nameToKeyMap = tables.nameToKeyMap;\n+    this.defaults = tables.defaults;\n+    this.types = tables.types;\n+    this.opcodes = tables.opcodes;\n+    this.order = tables.order;\n+    this.strings = strings;\n+    this.values = Object.create(null);\n+  }\n+  setByKey(key, value) {\n+    if (!(key in this.keyToNameMap)) {\n+      return false;\n+    }\n+    if (value.length === 0) {\n+      return true;\n+    }\n+    for (const val of value) {\n+      if (isNaN(val)) {\n+        warn(`Invalid CFFDict value: \"${value}\" for key \"${key}\".`);\n+        return true;\n+      }\n+    }\n+    const type = this.types[key];\n+    if (type === \"num\" || type === \"sid\" || type === \"offset\") {\n+      value = value[0];\n+    }\n+    this.values[key] = value;\n+    return true;\n+  }\n+  setByName(name, value) {\n+    if (!(name in this.nameToKeyMap)) {\n+      throw new FormatError(`Invalid dictionary name \"${name}\"`);\n+    }\n+    this.values[this.nameToKeyMap[name]] = value;\n+  }\n+  hasName(name) {\n+    return this.nameToKeyMap[name] in this.values;\n+  }\n+  getByName(name) {\n+    if (!(name in this.nameToKeyMap)) {\n+      throw new FormatError(`Invalid dictionary name ${name}\"`);\n+    }\n+    const key = this.nameToKeyMap[name];\n+    if (!(key in this.values)) {\n+      return this.defaults[key];\n+    }\n+    return this.values[key];\n+  }\n+  removeByName(name) {\n+    delete this.values[this.nameToKeyMap[name]];\n+  }\n+  static createTables(layout) {\n+    const tables = {\n+      keyToNameMap: {},\n+      nameToKeyMap: {},\n+      defaults: {},\n+      types: {},\n+      opcodes: {},\n+      order: []\n+    };\n+    for (const entry of layout) {\n+      const key = Array.isArray(entry[0]) ? (entry[0][0] \u003C\u003C 8) + entry[0][1] : entry[0];\n+      tables.keyToNameMap[key] = entry[1];\n+      tables.nameToKeyMap[entry[1]] = key;\n+      tables.types[key] = entry[2];\n+      tables.defaults[key] = entry[3];\n+      tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]];\n+      tables.order.push(key);\n+    }\n+    return tables;\n+  }\n+}\n+const CFFTopDictLayout = [[[12, 30], \"ROS\", [\"sid\", \"sid\", \"num\"], null], [[12, 20], \"SyntheticBase\", \"num\", null], [0, \"version\", \"sid\", null], [1, \"Notice\", \"sid\", null], [[12, 0], \"Copyright\", \"sid\", null], [2, \"FullName\", \"sid\", null], [3, \"FamilyName\", \"sid\", null], [4, \"Weight\", \"sid\", null], [[12, 1], \"isFixedPitch\", \"num\", 0], [[12, 2], \"ItalicAngle\", \"num\", 0], [[12, 3], \"UnderlinePosition\", \"num\", -100], [[12, 4], \"UnderlineThickness\", \"num\", 50], [[12, 5], \"PaintType\", \"num\", 0], [[12, 6], \"CharstringType\", \"num\", 2], [[12, 7], \"FontMatrix\", [\"num\", \"num\", \"num\", \"num\", \"num\", \"num\"], [0.001, 0, 0, 0.001, 0, 0]], [13, \"UniqueID\", \"num\", null], [5, \"FontBBox\", [\"num\", \"num\", \"num\", \"num\"], [0, 0, 0, 0]], [[12, 8], \"StrokeWidth\", \"num\", 0], [14, \"XUID\", \"array\", null], [15, \"charset\", \"offset\", 0], [16, \"Encoding\", \"offset\", 0], [17, \"CharStrings\", \"offset\", 0], [18, \"Private\", [\"offset\", \"offset\"], null], [[12, 21], \"PostScript\", \"sid\", null], [[12, 22], \"BaseFontName\", \"sid\", null], [[12, 23], \"BaseFontBlend\", \"delta\", null], [[12, 31], \"CIDFontVersion\", \"num\", 0], [[12, 32], \"CIDFontRevision\", \"num\", 0], [[12, 33], \"CIDFontType\", \"num\", 0], [[12, 34], \"CIDCount\", \"num\", 8720], [[12, 35], \"UIDBase\", \"num\", null], [[12, 37], \"FDSelect\", \"offset\", null], [[12, 36], \"FDArray\", \"offset\", null], [[12, 38], \"FontName\", \"sid\", null]];\n+class CFFTopDict extends CFFDict {\n+  static get tables() {\n+    return shadow(this, \"tables\", this.createTables(CFFTopDictLayout));\n+  }\n+  constructor(strings) {\n+    super(CFFTopDict.tables, strings);\n+    this.privateDict = null;\n+  }\n+}\n+const CFFPrivateDictLayout = [[6, \"BlueValues\", \"delta\", null], [7, \"OtherBlues\", \"delta\", null], [8, \"FamilyBlues\", \"delta\", null], [9, \"FamilyOtherBlues\", \"delta\", null], [[12, 9], \"BlueScale\", \"num\", 0.039625], [[12, 10], \"BlueShift\", \"num\", 7], [[12, 11], \"BlueFuzz\", \"num\", 1], [10, \"StdHW\", \"num\", null], [11, \"StdVW\", \"num\", null], [[12, 12], \"StemSnapH\", \"delta\", null], [[12, 13], \"StemSnapV\", \"delta\", null], [[12, 14], \"ForceBold\", \"num\", 0], [[12, 17], \"LanguageGroup\", \"num\", 0], [[12, 18], \"ExpansionFactor\", \"num\", 0.06], [[12, 19], \"initialRandomSeed\", \"num\", 0], [20, \"defaultWidthX\", \"num\", 0], [21, \"nominalWidthX\", \"num\", 0], [19, \"Subrs\", \"offset\", null]];\n+class CFFPrivateDict extends CFFDict {\n+  static get tables() {\n+    return shadow(this, \"tables\", this.createTables(CFFPrivateDictLayout));\n+  }\n+  constructor(strings) {\n+    super(CFFPrivateDict.tables, strings);\n+    this.subrsIndex = null;\n+  }\n+}\n+const CFFCharsetPredefinedTypes = {\n+  ISO_ADOBE: 0,\n+  EXPERT: 1,\n+  EXPERT_SUBSET: 2\n+};\n+class CFFCharset {\n+  constructor(predefined, format, charset, raw) {\n+    this.predefined = predefined;\n+    this.format = format;\n+    this.charset = charset;\n+    this.raw = raw;\n+  }\n+}\n+class CFFEncoding {\n+  constructor(predefined, format, encoding, raw) {\n+    this.predefined = predefined;\n+    this.format = format;\n+    this.encoding = encoding;\n+    this.raw = raw;\n+  }\n+}\n+class CFFFDSelect {\n+  constructor(format, fdSelect) {\n+    this.format = format;\n+    this.fdSelect = fdSelect;\n+  }\n+  getFDIndex(glyphIndex) {\n+    if (glyphIndex \u003C 0 || glyphIndex >= this.fdSelect.length) {\n+      return -1;\n+    }\n+    return this.fdSelect[glyphIndex];\n+  }\n+}\n+class CFFOffsetTracker {\n+  constructor() {\n+    this.offsets = Object.create(null);\n+  }\n+  isTracking(key) {\n+    return key in this.offsets;\n+  }\n+  track(key, location) {\n+    if (key in this.offsets) {\n+      throw new FormatError(`Already tracking location of ${key}`);\n+    }\n+    this.offsets[key] = location;\n+  }\n+  offset(value) {\n+    for (const key in this.offsets) {\n+      this.offsets[key] += value;\n+    }\n+  }\n+  setEntryLocation(key, values, output) {\n+    if (!(key in this.offsets)) {\n+      throw new FormatError(`Not tracking location of ${key}`);\n+    }\n+    const data = output.data;\n+    const dataOffset = this.offsets[key];\n+    const size = 5;\n+    for (let i = 0, ii = values.length; i \u003C ii; ++i) {\n+      const offset0 = i * size + dataOffset;\n+      const offset1 = offset0 + 1;\n+      const offset2 = offset0 + 2;\n+      const offset3 = offset0 + 3;\n+      const offset4 = offset0 + 4;\n+      if (data[offset0] !== 0x1d || data[offset1] !== 0 || data[offset2] !== 0 || data[offset3] !== 0 || data[offset4] !== 0) {\n+        throw new FormatError(\"writing to an offset that is not empty\");\n+      }\n+      const value = values[i];\n+      data[offset0] = 0x1d;\n+      data[offset1] = value >> 24 & 0xff;\n+      data[offset2] = value >> 16 & 0xff;\n+      data[offset3] = value >> 8 & 0xff;\n+      data[offset4] = value & 0xff;\n+    }\n+  }\n+}\n+class CFFCompiler {\n+  constructor(cff) {\n+    this.cff = cff;\n+  }\n+  compile() {\n+    const cff = this.cff;\n+    const output = {\n+      data: [],\n+      length: 0,\n+      add(data) {\n+        try {\n+          this.data.push(...data);\n+        } catch {\n+          this.data = this.data.concat(data);\n+        }\n+        this.length = this.data.length;\n+      }\n+    };\n+    const header = this.compileHeader(cff.header);\n+    output.add(header);\n+    const nameIndex = this.compileNameIndex(cff.names);\n+    output.add(nameIndex);\n+    if (cff.isCIDFont) {\n+      if (cff.topDict.hasName(\"FontMatrix\")) {\n+        const base = cff.topDict.getByName(\"FontMatrix\");\n+        cff.topDict.removeByName(\"FontMatrix\");\n+        for (const subDict of cff.fdArray) {\n+          let matrix = base.slice(0);\n+          if (subDict.hasName(\"FontMatrix\")) {\n+            matrix = Util.transform(matrix, subDict.getByName(\"FontMatrix\"));\n+          }\n+          subDict.setByName(\"FontMatrix\", matrix);\n+        }\n+      }\n+    }\n+    const xuid = cff.topDict.getByName(\"XUID\");\n+    if (xuid?.length > 16) {\n+      cff.topDict.removeByName(\"XUID\");\n+    }\n+    cff.topDict.setByName(\"charset\", 0);\n+    let compiled = this.compileTopDicts([cff.topDict], output.length, cff.isCIDFont);\n+    output.add(compiled.output);\n+    const topDictTracker = compiled.trackers[0];\n+    const stringIndex = this.compileStringIndex(cff.strings.strings);\n+    output.add(stringIndex);\n+    const globalSubrIndex = this.compileIndex(cff.globalSubrIndex);\n+    output.add(globalSubrIndex);\n+    if (cff.encoding && cff.topDict.hasName(\"Encoding\")) {\n+      if (cff.encoding.predefined) {\n+        topDictTracker.setEntryLocation(\"Encoding\", [cff.encoding.format], output);\n+      } else {\n+        const encoding = this.compileEncoding(cff.encoding);\n+        topDictTracker.setEntryLocation(\"Encoding\", [output.length], output);\n+        output.add(encoding);\n+      }\n+    }\n+    const charset = this.compileCharset(cff.charset, cff.charStrings.count, cff.strings, cff.isCIDFont);\n+    topDictTracker.setEntryLocation(\"charset\", [output.length], output);\n+    output.add(charset);\n+    const charStrings = this.compileCharStrings(cff.charStrings);\n+    topDictTracker.setEntryLocation(\"CharStrings\", [output.length], output);\n+    output.add(charStrings);\n+    if (cff.isCIDFont) {\n+      topDictTracker.setEntryLocation(\"FDSelect\", [output.length], output);\n+      const fdSelect = this.compileFDSelect(cff.fdSelect);\n+      output.add(fdSelect);\n+      compiled = this.compileTopDicts(cff.fdArray, output.length, true);\n+      topDictTracker.setEntryLocation(\"FDArray\", [output.length], output);\n+      output.add(compiled.output);\n+      const fontDictTrackers = compiled.trackers;\n+      this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);\n+    }\n+    this.compilePrivateDicts([cff.topDict], [topDictTracker], output);\n+    output.add([0]);\n+    return output.data;\n+  }\n+  encodeNumber(value) {\n+    if (Number.isInteger(value)) {\n+      return this.encodeInteger(value);\n+    }\n+    return this.encodeFloat(value);\n+  }\n+  static get EncodeFloatRegExp() {\n+    return shadow(this, \"EncodeFloatRegExp\", \u002F\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)\u002F);\n+  }\n+  encodeFloat(num) {\n+    let value = num.toString();\n+    const m = CFFCompiler.EncodeFloatRegExp.exec(value);\n+    if (m) {\n+      const epsilon = parseFloat(\"1e\" + ((m[2] ? +m[2] : 0) + m[1].length));\n+      value = (Math.round(num * epsilon) \u002F epsilon).toString();\n+    }\n+    let nibbles = \"\";\n+    let i, ii;\n+    for (i = 0, ii = value.length; i \u003C ii; ++i) {\n+      const a = value[i];\n+      if (a === \"e\") {\n+        nibbles += value[++i] === \"-\" ? \"c\" : \"b\";\n+      } else if (a === \".\") {\n+        nibbles += \"a\";\n+      } else if (a === \"-\") {\n+        nibbles += \"e\";\n+      } else {\n+        nibbles += a;\n+      }\n+    }\n+    nibbles += nibbles.length & 1 ? \"f\" : \"ff\";\n+    const out = [30];\n+    for (i = 0, ii = nibbles.length; i \u003C ii; i += 2) {\n+      out.push(parseInt(nibbles.substring(i, i + 2), 16));\n+    }\n+    return out;\n+  }\n+  encodeInteger(value) {\n+    let code;\n+    if (value >= -107 && value \u003C= 107) {\n+      code = [value + 139];\n+    } else if (value >= 108 && value \u003C= 1131) {\n+      value -= 108;\n+      code = [(value >> 8) + 247, value & 0xff];\n+    } else if (value >= -1131 && value \u003C= -108) {\n+      value = -value - 108;\n+      code = [(value >> 8) + 251, value & 0xff];\n+    } else if (value >= -32768 && value \u003C= 32767) {\n+      code = [0x1c, value >> 8 & 0xff, value & 0xff];\n+    } else {\n+      code = [0x1d, value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff];\n+    }\n+    return code;\n+  }\n+  compileHeader(header) {\n+    return [header.major, header.minor, 4, header.offSize];\n+  }\n+  compileNameIndex(names) {\n+    const nameIndex = new CFFIndex();\n+    for (const name of names) {\n+      const length = Math.min(name.length, 127);\n+      let sanitizedName = new Array(length);\n+      for (let j = 0; j \u003C length; j++) {\n+        let char = name[j];\n+        if (char \u003C \"!\" || char > \"~\" || char === \"[\" || char === \"]\" || char === \"(\" || char === \")\" || char === \"{\" || char === \"}\" || char === \"\u003C\" || char === \">\" || char === \"\u002F\" || char === \"%\") {\n+          char = \"_\";\n+        }\n+        sanitizedName[j] = char;\n+      }\n+      sanitizedName = sanitizedName.join(\"\");\n+      if (sanitizedName === \"\") {\n+        sanitizedName = \"Bad_Font_Name\";\n+      }\n+      nameIndex.add(stringToBytes(sanitizedName));\n+    }\n+    return this.compileIndex(nameIndex);\n+  }\n+  compileTopDicts(dicts, length, removeCidKeys) {\n+    const fontDictTrackers = [];\n+    let fdArrayIndex = new CFFIndex();\n+    for (const fontDict of dicts) {\n+      if (removeCidKeys) {\n+        fontDict.removeByName(\"CIDFontVersion\");\n+        fontDict.removeByName(\"CIDFontRevision\");\n+        fontDict.removeByName(\"CIDFontType\");\n+        fontDict.removeByName(\"CIDCount\");\n+        fontDict.removeByName(\"UIDBase\");\n+      }\n+      const fontDictTracker = new CFFOffsetTracker();\n+      const fontDictData = this.compileDict(fontDict, fontDictTracker);\n+      fontDictTrackers.push(fontDictTracker);\n+      fdArrayIndex.add(fontDictData);\n+      fontDictTracker.offset(length);\n+    }\n+    fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);\n+    return {\n+      trackers: fontDictTrackers,\n+      output: fdArrayIndex\n+    };\n+  }\n+  compilePrivateDicts(dicts, trackers, output) {\n+    for (let i = 0, ii = dicts.length; i \u003C ii; ++i) {\n+      const fontDict = dicts[i];\n+      const privateDict = fontDict.privateDict;\n+      if (!privateDict || !fontDict.hasName(\"Private\")) {\n+        throw new FormatError(\"There must be a private dictionary.\");\n+      }\n+      const privateDictTracker = new CFFOffsetTracker();\n+      const privateDictData = this.compileDict(privateDict, privateDictTracker);\n+      let outputLength = output.length;\n+      privateDictTracker.offset(outputLength);\n+      if (!privateDictData.length) {\n+        outputLength = 0;\n+      }\n+      trackers[i].setEntryLocation(\"Private\", [privateDictData.length, outputLength], output);\n+      output.add(privateDictData);\n+      if (privateDict.subrsIndex && privateDict.hasName(\"Subrs\")) {\n+        const subrs = this.compileIndex(privateDict.subrsIndex);\n+        privateDictTracker.setEntryLocation(\"Subrs\", [privateDictData.length], output);\n+        output.add(subrs);\n+      }\n+    }\n+  }\n+  compileDict(dict, offsetTracker) {\n+    const out = [];\n+    for (const key of dict.order) {\n+      if (!(key in dict.values)) {\n+        continue;\n+      }\n+      let values = dict.values[key];\n+      let types = dict.types[key];\n+      if (!Array.isArray(types)) {\n+        types = [types];\n+      }\n+      if (!Array.isArray(values)) {\n+        values = [values];\n+      }\n+      if (values.length === 0) {\n+        continue;\n+      }\n+      for (let j = 0, jj = types.length; j \u003C jj; ++j) {\n+        const type = types[j];\n+        const value = values[j];\n+        switch (type) {\n+          case \"num\":\n+          case \"sid\":\n+            out.push(...this.encodeNumber(value));\n+            break;\n+          case \"offset\":\n+            const name = dict.keyToNameMap[key];\n+            if (!offsetTracker.isTracking(name)) {\n+              offsetTracker.track(name, out.length);\n+            }\n+            out.push(0x1d, 0, 0, 0, 0);\n+            break;\n+          case \"array\":\n+          case \"delta\":\n+            out.push(...this.encodeNumber(value));\n+            for (let k = 1, kk = values.length; k \u003C kk; ++k) {\n+              out.push(...this.encodeNumber(values[k]));\n+            }\n+            break;\n+          default:\n+            throw new FormatError(`Unknown data type of ${type}`);\n+        }\n+      }\n+      out.push(...dict.opcodes[key]);\n+    }\n+    return out;\n+  }\n+  compileStringIndex(strings) {\n+    const stringIndex = new CFFIndex();\n+    for (const string of strings) {\n+      stringIndex.add(stringToBytes(string));\n+    }\n+    return this.compileIndex(stringIndex);\n+  }\n+  compileCharStrings(charStrings) {\n+    const charStringsIndex = new CFFIndex();\n+    for (let i = 0; i \u003C charStrings.count; i++) {\n+      const glyph = charStrings.get(i);\n+      if (glyph.length === 0) {\n+        charStringsIndex.add(new Uint8Array([0x8b, 0x0e]));\n+        continue;\n+      }\n+      charStringsIndex.add(glyph);\n+    }\n+    return this.compileIndex(charStringsIndex);\n+  }\n+  compileCharset(charset, numGlyphs, strings, isCIDFont) {\n+    let out;\n+    const numGlyphsLessNotDef = numGlyphs - 1;\n+    if (isCIDFont) {\n+      const nLeft = numGlyphsLessNotDef - 1;\n+      out = new Uint8Array([2, 0, 0, nLeft >> 8 & 0xff, nLeft & 0xff]);\n+    } else {\n+      const length = 1 + numGlyphsLessNotDef * 2;\n+      out = new Uint8Array(length);\n+      out[0] = 0;\n+      let charsetIndex = 0;\n+      const numCharsets = charset.charset.length;\n+      let warned = false;\n+      for (let i = 1; i \u003C out.length; i += 2) {\n+        let sid = 0;\n+        if (charsetIndex \u003C numCharsets) {\n+          const name = charset.charset[charsetIndex++];\n+          sid = strings.getSID(name);\n+          if (sid === -1) {\n+            sid = 0;\n+            if (!warned) {\n+              warned = true;\n+              warn(`Couldn't find ${name} in CFF strings`);\n+            }\n+          }\n+        }\n+        out[i] = sid >> 8 & 0xff;\n+        out[i + 1] = sid & 0xff;\n+      }\n+    }\n+    return this.compileTypedArray(out);\n+  }\n+  compileEncoding(encoding) {\n+    return this.compileTypedArray(encoding.raw);\n+  }\n+  compileFDSelect(fdSelect) {\n+    const format = fdSelect.format;\n+    let out, i;\n+    switch (format) {\n+      case 0:\n+        out = new Uint8Array(1 + fdSelect.fdSelect.length);\n+        out[0] = format;\n+        for (i = 0; i \u003C fdSelect.fdSelect.length; i++) {\n+          out[i + 1] = fdSelect.fdSelect[i];\n+        }\n+        break;\n+      case 3:\n+        const start = 0;\n+        let lastFD = fdSelect.fdSelect[0];\n+        const ranges = [format, 0, 0, start >> 8 & 0xff, start & 0xff, lastFD];\n+        for (i = 1; i \u003C fdSelect.fdSelect.length; i++) {\n+          const currentFD = fdSelect.fdSelect[i];\n+          if (currentFD !== lastFD) {\n+            ranges.push(i >> 8 & 0xff, i & 0xff, currentFD);\n+            lastFD = currentFD;\n+          }\n+        }\n+        const numRanges = (ranges.length - 3) \u002F 3;\n+        ranges[1] = numRanges >> 8 & 0xff;\n+        ranges[2] = numRanges & 0xff;\n+        ranges.push(i >> 8 & 0xff, i & 0xff);\n+        out = new Uint8Array(ranges);\n+        break;\n+    }\n+    return this.compileTypedArray(out);\n+  }\n+  compileTypedArray(data) {\n+    return Array.from(data);\n+  }\n+  compileIndex(index, trackers = []) {\n+    const objects = index.objects;\n+    const count = objects.length;\n+    if (count === 0) {\n+      return [0, 0];\n+    }\n+    const data = [count >> 8 & 0xff, count & 0xff];\n+    let lastOffset = 1,\n+      i;\n+    for (i = 0; i \u003C count; ++i) {\n+      lastOffset += objects[i].length;\n+    }\n+    let offsetSize;\n+    if (lastOffset \u003C 0x100) {\n+      offsetSize = 1;\n+    } else if (lastOffset \u003C 0x10000) {\n+      offsetSize = 2;\n+    } else if (lastOffset \u003C 0x1000000) {\n+      offsetSize = 3;\n+    } else {\n+      offsetSize = 4;\n+    }\n+    data.push(offsetSize);\n+    let relativeOffset = 1;\n+    for (i = 0; i \u003C count + 1; i++) {\n+      if (offsetSize === 1) {\n+        data.push(relativeOffset & 0xff);\n+      } else if (offsetSize === 2) {\n+        data.push(relativeOffset >> 8 & 0xff, relativeOffset & 0xff);\n+      } else if (offsetSize === 3) {\n+        data.push(relativeOffset >> 16 & 0xff, relativeOffset >> 8 & 0xff, relativeOffset & 0xff);\n+      } else {\n+        data.push(relativeOffset >>> 24 & 0xff, relativeOffset >> 16 & 0xff, relativeOffset >> 8 & 0xff, relativeOffset & 0xff);\n+      }\n+      if (objects[i]) {\n+        relativeOffset += objects[i].length;\n+      }\n+    }\n+    for (i = 0; i \u003C count; i++) {\n+      if (trackers[i]) {\n+        trackers[i].offset(data.length);\n+      }\n+      data.push(...objects[i]);\n+    }\n+    return data;\n+  }\n+}\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fstandard_fonts.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fstandard_fonts.js\n \n \n const getStdFontMap = getLookupTableFactory(function (t) {\n@@ -16220,6 +23634,7 @@\n   t.CourierNewPSMT = \"Courier\";\n   t[\"Helvetica-BoldItalic\"] = \"Helvetica-BoldOblique\";\n   t[\"Helvetica-Italic\"] = \"Helvetica-Oblique\";\n+  t[\"HelveticaLTStd-Bold\"] = \"Helvetica-Bold\";\n   t[\"Symbol-Bold\"] = \"Symbol\";\n   t[\"Symbol-BoldItalic\"] = \"Symbol\";\n   t[\"Symbol-Italic\"] = \"Symbol\";\n@@ -16272,6 +23687,10 @@\n   t[\"ComicSansMS-Bold\"] = \"Comic Sans MS-Bold\";\n   t[\"ComicSansMS-BoldItalic\"] = \"Comic Sans MS-BoldItalic\";\n   t[\"ComicSansMS-Italic\"] = \"Comic Sans MS-Italic\";\n+  t.GillSansMT = \"Helvetica\";\n+  t[\"GillSansMT-Bold\"] = \"Helvetica-Bold\";\n+  t[\"GillSansMT-BoldItalic\"] = \"Helvetica-BoldOblique\";\n+  t[\"GillSansMT-Italic\"] = \"Helvetica-Oblique\";\n   t.Impact = \"Helvetica\";\n   t[\"ItcSymbol-Bold\"] = \"Helvetica-Bold\";\n   t[\"ItcSymbol-BoldItalic\"] = \"Helvetica-BoldOblique\";\n@@ -16668,6 +24087,37 @@\n   t[337] = 9552;\n   t[493] = 1039;\n   t[494] = 1040;\n+  t[570] = 1040;\n+  t[571] = 1041;\n+  t[572] = 1042;\n+  t[573] = 1043;\n+  t[574] = 1044;\n+  t[575] = 1045;\n+  t[576] = 1046;\n+  t[577] = 1047;\n+  t[578] = 1048;\n+  t[579] = 1049;\n+  t[580] = 1050;\n+  t[581] = 1051;\n+  t[582] = 1052;\n+  t[583] = 1053;\n+  t[584] = 1054;\n+  t[585] = 1055;\n+  t[586] = 1056;\n+  t[587] = 1057;\n+  t[588] = 1058;\n+  t[589] = 1059;\n+  t[590] = 1060;\n+  t[591] = 1061;\n+  t[592] = 1062;\n+  t[593] = 1063;\n+  t[594] = 1064;\n+  t[595] = 1065;\n+  t[596] = 1066;\n+  t[597] = 1067;\n+  t[598] = 1068;\n+  t[599] = 1069;\n+  t[600] = 1070;\n   t[672] = 1488;\n   t[673] = 1489;\n   t[674] = 1490;\n@@ -16990,6 +24440,7 @@\n   t[896] = 91;\n   t[897] = 93;\n   t[923] = 64;\n+  t[940] = 163;\n   t[1004] = 48;\n   t[1005] = 49;\n   t[1006] = 50;\n@@ -17014,7 +24465,7 @@\n   return !!(getStdFontMap()[fontName] || getNonStdFontMap()[fontName] || getSerifFonts()[fontName] || getSymbolsFonts()[fontName]);\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fto_unicode_map.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fto_unicode_map.js\n \n class ToUnicodeMap {\n   constructor(cmap = []) {\n@@ -17025,7 +24476,7 @@\n   }\n   forEach(callback) {\n     for (const charCode in this._map) {\n-      callback(charCode, this._map[charCode].charCodeAt(0));\n+      callback(charCode, this._map[charCode].codePointAt(0));\n     }\n   }\n   has(i) {\n@@ -17082,7 +24533,7 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fcff_font.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fcff_font.js\n \n \n \n@@ -17184,27 +24635,24 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Ffont_renderer.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Ffont_renderer.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n \n \n \n \n-function getUint32(data, offset) {\n-  return (data[offset] \u003C\u003C 24 | data[offset + 1] \u003C\u003C 16 | data[offset + 2] \u003C\u003C 8 | data[offset + 3]) >>> 0;\n-}\n-function getUint16(data, offset) {\n-  return data[offset] \u003C\u003C 8 | data[offset + 1];\n-}\n-function getInt16(data, offset) {\n-  return (data[offset] \u003C\u003C 24 | data[offset + 1] \u003C\u003C 16) >> 16;\n-}\n-function getInt8(data, offset) {\n-  return data[offset] \u003C\u003C 24 >> 24;\n-}\n function getFloat214(data, offset) {\n-  return getInt16(data, offset) \u002F 16384;\n+  return readInt16(data, offset) \u002F 16384;\n }\n function getSubroutineBias(subrs) {\n   const numSubrs = subrs.length;\n@@ -17217,48 +24665,48 @@\n   return bias;\n }\n function parseCmap(data, start, end) {\n-  const offset = getUint16(data, start + 2) === 1 ? getUint32(data, start + 8) : getUint32(data, start + 16);\n-  const format = getUint16(data, start + offset);\n+  const offset = readUint16(data, start + 2) === 1 ? readUint32(data, start + 8) : readUint32(data, start + 16);\n+  const format = readUint16(data, start + offset);\n   let ranges, p, i;\n   if (format === 4) {\n-    getUint16(data, start + offset + 2);\n-    const segCount = getUint16(data, start + offset + 6) >> 1;\n+    readUint16(data, start + offset + 2);\n+    const segCount = readUint16(data, start + offset + 6) >> 1;\n     p = start + offset + 14;\n     ranges = [];\n     for (i = 0; i \u003C segCount; i++, p += 2) {\n       ranges[i] = {\n-        end: getUint16(data, p)\n+        end: readUint16(data, p)\n       };\n     }\n     p += 2;\n     for (i = 0; i \u003C segCount; i++, p += 2) {\n-      ranges[i].start = getUint16(data, p);\n+      ranges[i].start = readUint16(data, p);\n     }\n     for (i = 0; i \u003C segCount; i++, p += 2) {\n-      ranges[i].idDelta = getUint16(data, p);\n+      ranges[i].idDelta = readUint16(data, p);\n     }\n     for (i = 0; i \u003C segCount; i++, p += 2) {\n-      let idOffset = getUint16(data, p);\n+      let idOffset = readUint16(data, p);\n       if (idOffset === 0) {\n         continue;\n       }\n       ranges[i].ids = [];\n       for (let j = 0, jj = ranges[i].end - ranges[i].start + 1; j \u003C jj; j++) {\n-        ranges[i].ids[j] = getUint16(data, p + idOffset);\n+        ranges[i].ids[j] = readUint16(data, p + idOffset);\n         idOffset += 2;\n       }\n     }\n     return ranges;\n   } else if (format === 12) {\n-    const groups = getUint32(data, start + offset + 12);\n+    const groups = readUint32(data, start + offset + 12);\n     p = start + offset + 16;\n     ranges = [];\n     for (i = 0; i \u003C groups; i++) {\n-      start = getUint32(data, p);\n+      start = readUint32(data, p);\n       ranges.push({\n         start,\n-        end: getUint32(data, p + 4),\n-        idDelta: getUint32(data, p + 8) - start\n+        end: readUint32(data, p + 4),\n+        idDelta: readUint32(data, p + 8) - start\n       });\n       p += 12;\n     }\n@@ -17283,10 +24731,10 @@\n   let itemSize, itemDecode;\n   if (isGlyphLocationsLong) {\n     itemSize = 4;\n-    itemDecode = getUint32;\n+    itemDecode = readUint32;\n   } else {\n     itemSize = 2;\n-    itemDecode = (data, offset) => 2 * getUint16(data, offset);\n+    itemDecode = (data, offset) => 2 * readUint16(data, offset);\n   }\n   const glyphs = [];\n   let startOffset = itemDecode(loca, 0);\n@@ -17320,38 +24768,43 @@\n }\n function compileGlyf(code, cmds, font) {\n   function moveTo(x, y) {\n-    cmds.add(FontRenderOps.MOVE_TO, [x, y]);\n+    if (firstPoint) {\n+      cmds.add(\"L\", firstPoint);\n+    }\n+    firstPoint = [x, y];\n+    cmds.add(\"M\", [x, y]);\n   }\n   function lineTo(x, y) {\n-    cmds.add(FontRenderOps.LINE_TO, [x, y]);\n+    cmds.add(\"L\", [x, y]);\n   }\n   function quadraticCurveTo(xa, ya, x, y) {\n-    cmds.add(FontRenderOps.QUADRATIC_CURVE_TO, [xa, ya, x, y]);\n+    cmds.add(\"Q\", [xa, ya, x, y]);\n   }\n   let i = 0;\n-  const numberOfContours = getInt16(code, i);\n+  const numberOfContours = readInt16(code, i);\n   let flags;\n+  let firstPoint = null;\n   let x = 0,\n     y = 0;\n   i += 10;\n   if (numberOfContours \u003C 0) {\n     do {\n-      flags = getUint16(code, i);\n-      const glyphIndex = getUint16(code, i + 2);\n+      flags = readUint16(code, i);\n+      const glyphIndex = readUint16(code, i + 2);\n       i += 4;\n       let arg1, arg2;\n       if (flags & 0x01) {\n         if (flags & 0x02) {\n-          arg1 = getInt16(code, i);\n-          arg2 = getInt16(code, i + 2);\n+          arg1 = readInt16(code, i);\n+          arg2 = readInt16(code, i + 2);\n         } else {\n-          arg1 = getUint16(code, i);\n-          arg2 = getUint16(code, i + 2);\n+          arg1 = readUint16(code, i);\n+          arg2 = readUint16(code, i + 2);\n         }\n         i += 4;\n       } else if (flags & 0x02) {\n-        arg1 = getInt8(code, i++);\n-        arg2 = getInt8(code, i++);\n+        arg1 = readInt8(code, i++);\n+        arg2 = readInt8(code, i++);\n       } else {\n         arg1 = code[i++];\n         arg2 = code[i++];\n@@ -17383,21 +24836,21 @@\n       }\n       const subglyph = font.glyphs[glyphIndex];\n       if (subglyph) {\n-        cmds.add(FontRenderOps.SAVE);\n-        cmds.add(FontRenderOps.TRANSFORM, [scaleX, scale01, scale10, scaleY, x, y]);\n+        cmds.save();\n+        cmds.transform([scaleX, scale01, scale10, scaleY, x, y]);\n         if (!(flags & 0x02)) {}\n         compileGlyf(subglyph, cmds, font);\n-        cmds.add(FontRenderOps.RESTORE);\n+        cmds.restore();\n       }\n     } while (flags & 0x20);\n   } else {\n     const endPtsOfContours = [];\n     let j, jj;\n     for (j = 0; j \u003C numberOfContours; j++) {\n-      endPtsOfContours.push(getUint16(code, i));\n+      endPtsOfContours.push(readUint16(code, i));\n       i += 2;\n     }\n-    const instructionLength = getUint16(code, i);\n+    const instructionLength = readUint16(code, i);\n     i += 2 + instructionLength;\n     const numberOfPoints = endPtsOfContours.at(-1) + 1;\n     const points = [];\n@@ -17416,7 +24869,7 @@\n     for (j = 0; j \u003C numberOfPoints; j++) {\n       switch (points[j].flags & 0x12) {\n         case 0x00:\n-          x += getInt16(code, i);\n+          x += readInt16(code, i);\n           i += 2;\n           break;\n         case 0x02:\n@@ -17431,7 +24884,7 @@\n     for (j = 0; j \u003C numberOfPoints; j++) {\n       switch (points[j].flags & 0x24) {\n         case 0x00:\n-          y += getInt16(code, i);\n+          y += readInt16(code, i);\n           i += 2;\n           break;\n         case 0x04:\n@@ -17477,18 +24930,23 @@\n }\n function compileCharString(charStringCode, cmds, font, glyphId) {\n   function moveTo(x, y) {\n-    cmds.add(FontRenderOps.MOVE_TO, [x, y]);\n+    if (firstPoint) {\n+      cmds.add(\"L\", firstPoint);\n+    }\n+    firstPoint = [x, y];\n+    cmds.add(\"M\", [x, y]);\n   }\n   function lineTo(x, y) {\n-    cmds.add(FontRenderOps.LINE_TO, [x, y]);\n+    cmds.add(\"L\", [x, y]);\n   }\n   function bezierCurveTo(x1, y1, x2, y2, x, y) {\n-    cmds.add(FontRenderOps.BEZIER_CURVE_TO, [x1, y1, x2, y2, x, y]);\n+    cmds.add(\"C\", [x1, y1, x2, y2, x, y]);\n   }\n   const stack = [];\n   let x = 0,\n     y = 0;\n   let stems = 0;\n+  let firstPoint = null;\n   function parse(code) {\n     let i = 0;\n     while (i \u003C code.length) {\n@@ -17653,11 +25111,11 @@\n             const bchar = stack.pop();\n             y = stack.pop();\n             x = stack.pop();\n-            cmds.add(FontRenderOps.SAVE);\n-            cmds.add(FontRenderOps.TRANSLATE, [x, y]);\n+            cmds.save();\n+            cmds.translate(x, y);\n             let cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[StandardEncoding[achar]]));\n             compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId);\n-            cmds.add(FontRenderOps.RESTORE);\n+            cmds.restore();\n             cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[StandardEncoding[bchar]]));\n             compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId);\n           }\n@@ -17748,7 +25206,7 @@\n           }\n           break;\n         case 28:\n-          stack.push((code[i] \u003C\u003C 24 | code[i + 1] \u003C\u003C 16) >> 16);\n+          stack.push(readInt16(code, i));\n           i += 2;\n           break;\n         case 29:\n@@ -17823,28 +25281,42 @@\n   }\n   parse(charStringCode);\n }\n-const NOOP = [];\n+const NOOP = \"\";\n class Commands {\n   cmds = [];\n+  transformStack = [];\n+  currentTransform = [1, 0, 0, 1, 0, 0];\n   add(cmd, args) {\n     if (args) {\n-      if (!isNumberArray(args, null)) {\n-        warn(`Commands.add - \"${cmd}\" has at least one non-number arg: \"${args}\".`);\n-        const newArgs = args.map(arg => typeof arg === \"number\" ? arg : 0);\n-        this.cmds.push(cmd, ...newArgs);\n-      } else {\n-        this.cmds.push(cmd, ...args);\n+      const {\n+        currentTransform\n+      } = this;\n+      for (let i = 0, ii = args.length; i \u003C ii; i += 2) {\n+        Util.applyTransform(args, currentTransform, i);\n       }\n+      this.cmds.push(`${cmd}${args.join(\" \")}`);\n     } else {\n       this.cmds.push(cmd);\n     }\n   }\n+  transform(transf) {\n+    this.currentTransform = Util.transform(this.currentTransform, transf);\n+  }\n+  translate(x, y) {\n+    this.transform([1, 0, 0, 1, x, y]);\n+  }\n+  save() {\n+    this.transformStack.push(this.currentTransform.slice());\n+  }\n+  restore() {\n+    this.currentTransform = this.transformStack.pop() || [1, 0, 0, 1, 0, 0];\n+  }\n+  getSVG() {\n+    return this.cmds.join(\"\");\n+  }\n }\n class CompiledFont {\n   constructor(fontMatrix) {\n-    if (this.constructor === CompiledFont) {\n-      unreachable(\"Cannot initialize CompiledFont.\");\n-    }\n     this.fontMatrix = fontMatrix;\n     this.compiledGlyphs = Object.create(null);\n     this.compiledCharCodeToGlyphId = Object.create(null);\n@@ -17856,7 +25328,7 @@\n     } = lookupCmap(this.cmap, unicode);\n     let fn = this.compiledGlyphs[glyphId],\n       compileEx;\n-    if (!fn) {\n+    if (fn === undefined) {\n       try {\n         fn = this.compileGlyph(this.glyphs[glyphId], glyphId);\n       } catch (ex) {\n@@ -17872,7 +25344,7 @@\n     return fn;\n   }\n   compileGlyph(code, glyphId) {\n-    if (!code || code.length === 0 || code[0] === 14) {\n+    if (!code?.length || code[0] === 14) {\n       return NOOP;\n     }\n     let fontMatrix = this.fontMatrix;\n@@ -17885,13 +25357,12 @@\n         warn(\"Invalid fd index for glyph index.\");\n       }\n     }\n+    assert(isNumberArray(fontMatrix, 6), \"Expected a valid fontMatrix.\");\n     const cmds = new Commands();\n-    cmds.add(FontRenderOps.SAVE);\n-    cmds.add(FontRenderOps.TRANSFORM, fontMatrix.slice());\n-    cmds.add(FontRenderOps.SCALE);\n+    cmds.transform(fontMatrix.slice());\n     this.compileGlyphImpl(code, cmds, glyphId);\n-    cmds.add(FontRenderOps.RESTORE);\n-    return cmds.cmds;\n+    cmds.add(\"Z\");\n+    return cmds.getSVG();\n   }\n   compileGlyphImpl() {\n     unreachable(\"Children classes should implement this.\");\n@@ -17915,13 +25386,13 @@\n   }\n }\n class Type2Compiled extends CompiledFont {\n-  constructor(cffInfo, cmap, fontMatrix, glyphNameMap) {\n+  constructor(cffInfo, cmap, fontMatrix) {\n     super(fontMatrix || [0.001, 0, 0, 0.001, 0, 0]);\n     this.glyphs = cffInfo.glyphs;\n     this.gsubrs = cffInfo.gsubrs || [];\n     this.subrs = cffInfo.subrs || [];\n     this.cmap = cmap;\n-    this.glyphNameMap = glyphNameMap || getGlyphsUnicode();\n+    this.glyphNameMap = getGlyphsUnicode();\n     this.gsubrsBias = getSubroutineBias(this.gsubrs);\n     this.subrsBias = getSubroutineBias(this.subrs);\n     this.isCFFCIDFont = cffInfo.isCFFCIDFont;\n@@ -17936,11 +25407,11 @@\n   static create(font, seacAnalysisEnabled) {\n     const data = new Uint8Array(font.data);\n     let cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;\n-    const numTables = getUint16(data, 4);\n+    const numTables = readUint16(data, 4);\n     for (let i = 0, p = 12; i \u003C numTables; i++, p += 16) {\n       const tag = bytesToString(data.subarray(p, p + 4));\n-      const offset = getUint32(data, p + 8);\n-      const length = getUint32(data, p + 12);\n+      const offset = readUint32(data, p + 8);\n+      const length = readUint32(data, p + 12);\n       switch (tag) {\n         case \"cmap\":\n           cmap = parseCmap(data, offset, offset + length);\n@@ -17952,8 +25423,8 @@\n           loca = data.subarray(offset, offset + length);\n           break;\n         case \"head\":\n-          unitsPerEm = getUint16(data, offset + 18);\n-          indexToLocFormat = getUint16(data, offset + 50);\n+          unitsPerEm = readUint16(data, offset + 18);\n+          indexToLocFormat = readUint16(data, offset + 50);\n           break;\n         case \"CFF \":\n           cff = parseCff(data, offset, offset + length, seacAnalysisEnabled);\n@@ -17964,11 +25435,11 @@\n       const fontMatrix = !unitsPerEm ? font.fontMatrix : [1 \u002F unitsPerEm, 0, 0, 1 \u002F unitsPerEm, 0, 0];\n       return new TrueTypeCompiled(parseGlyfTable(glyf, loca, indexToLocFormat), cmap, fontMatrix);\n     }\n-    return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap);\n+    return new Type2Compiled(cff, cmap, font.fontMatrix);\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fmetrics.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fmetrics.js\n \n const getMetrics = getLookupTableFactory(function (t) {\n   t.Courier = 600;\n@@ -20995,7 +28466,18 @@\n   };\n });\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fglyf.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fglyf.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n const ON_CURVE_POINT = 1 \u003C\u003C 0;\n const X_SHORT_VECTOR = 1 \u003C\u003C 1;\n const Y_SHORT_VECTOR = 1 \u003C\u003C 2;\n@@ -21036,10 +28518,7 @@\n     }\n   }\n   getSize() {\n-    return this.glyphs.reduce((a, g) => {\n-      const size = g.getSize();\n-      return a + (size + 3 & ~3);\n-    }, 0);\n+    return Math.sumPrecise(this.glyphs.map(g => g.getSize() + 3 & ~3));\n   }\n   write() {\n     const totalSize = this.getSize();\n@@ -21114,7 +28593,7 @@\n     if (!this.header) {\n       return 0;\n     }\n-    const size = this.simple ? this.simple.getSize() : this.composites.reduce((a, c) => a + c.getSize(), 0);\n+    const size = this.simple ? this.simple.getSize() : Math.sumPrecise(this.composites.map(c => c.getSize()));\n     return this.header.getSize() + size;\n   }\n   write(pos, buf) {\n@@ -21526,7 +29005,15 @@\n   scale(x, factor) {}\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fopentype_file_builder.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fopentype_file_builder.js\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n function writeInt16(dest, offset, num) {\n@@ -21632,7 +29119,15 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Ftype1_parser.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Ftype1_parser.js\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n \n@@ -22197,7 +29692,8 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Ftype1_font.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Ftype1_font.js\n+\n \n \n \n@@ -22473,7 +29969,27 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Ffonts.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Ffonts.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n \n@@ -22493,8 +30009,8 @@\n \n const PRIVATE_USE_AREAS = [[0xe000, 0xf8ff], [0x100000, 0x10fffd]];\n const PDF_GLYPH_SPACE_UNITS = 1000;\n-const EXPORT_DATA_PROPERTIES = [\"ascent\", \"bbox\", \"black\", \"bold\", \"charProcOperatorList\", \"composite\", \"cssFontInfo\", \"data\", \"defaultVMetrics\", \"defaultWidth\", \"descent\", \"fallbackName\", \"fontMatrix\", \"isInvalidPDFjsFont\", \"isType3Font\", \"italic\", \"loadedName\", \"mimetype\", \"missingFile\", \"name\", \"remeasure\", \"subtype\", \"systemFontInfo\", \"type\", \"vertical\"];\n-const EXPORT_DATA_EXTRA_PROPERTIES = [\"cMap\", \"defaultEncoding\", \"differences\", \"isMonospace\", \"isSerifFont\", \"isSymbolicFont\", \"seacMap\", \"toFontChar\", \"toUnicode\", \"vmetrics\", \"widths\"];\n+const EXPORT_DATA_PROPERTIES = [\"ascent\", \"bbox\", \"black\", \"bold\", \"charProcOperatorList\", \"cssFontInfo\", \"data\", \"defaultVMetrics\", \"defaultWidth\", \"descent\", \"disableFontFace\", \"fallbackName\", \"fontExtraProperties\", \"fontMatrix\", \"isInvalidPDFjsFont\", \"isType3Font\", \"italic\", \"loadedName\", \"mimetype\", \"missingFile\", \"name\", \"remeasure\", \"systemFontInfo\", \"vertical\"];\n+const EXPORT_DATA_EXTRA_PROPERTIES = [\"cMap\", \"composite\", \"defaultEncoding\", \"differences\", \"isMonospace\", \"isSerifFont\", \"isSymbolicFont\", \"seacMap\", \"subtype\", \"toFontChar\", \"toUnicode\", \"type\", \"vmetrics\", \"widths\"];\n function adjustWidths(properties) {\n   if (!properties.fontMatrix) {\n     return;\n@@ -22762,6 +30278,7 @@\n   let nextAvailableFontCharCode = privateUseOffetStart;\n   let privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n   const isInPrivateArea = code => PRIVATE_USE_AREAS[0][0] \u003C= code && code \u003C= PRIVATE_USE_AREAS[0][1] || PRIVATE_USE_AREAS[1][0] \u003C= code && code \u003C= PRIVATE_USE_AREAS[1][1];\n+  let LIGATURE_TO_UNICODE = null;\n   for (const originalCharCode in charCodeToGlyphId) {\n     let glyphId = charCodeToGlyphId[originalCharCode];\n     if (!hasGlyph(glyphId)) {\n@@ -22782,7 +30299,20 @@\n     }\n     let unicode = toUnicode.get(originalCharCode);\n     if (typeof unicode === \"string\") {\n-      unicode = unicode.codePointAt(0);\n+      if (unicode.length === 1) {\n+        unicode = unicode.codePointAt(0);\n+      } else {\n+        if (!LIGATURE_TO_UNICODE) {\n+          LIGATURE_TO_UNICODE = new Map();\n+          for (let i = 0xfb00; i \u003C= 0xfb4f; i++) {\n+            const normalized = String.fromCharCode(i).normalize(\"NFKD\");\n+            if (normalized.length > 1) {\n+              LIGATURE_TO_UNICODE.set(normalized, i);\n+            }\n+          }\n+        }\n+        unicode = LIGATURE_TO_UNICODE.get(unicode) || unicode.codePointAt(0);\n+      }\n     }\n     if (unicode && !isInPrivateArea(unicode) && !usedGlyphIds.has(glyphId)) {\n       toUnicodeExtraMap.set(unicode, glyphId);\n@@ -22826,9 +30356,7 @@\n       glyphId: 0\n     });\n   }\n-  codes.sort(function fontGetRangesSort(a, b) {\n-    return a.fontCharCode - b.fontCharCode;\n-  });\n+  codes.sort((a, b) => a.fontCharCode - b.fontCharCode);\n   const ranges = [];\n   const length = codes.length;\n   for (let n = 0; n \u003C length;) {\n@@ -22997,7 +30525,7 @@\n     lastCharIndex = 255;\n   }\n   const bbox = properties.bbox || [0, 0, 0, 0];\n-  const unitsPerEm = override.unitsPerEm || 1 \u002F (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\n+  const unitsPerEm = override.unitsPerEm || (properties.fontMatrix ? 1 \u002F Math.max(...properties.fontMatrix.slice(0, 4).map(Math.abs)) : 1000);\n   const scale = properties.ascentScaled ? 1.0 : unitsPerEm \u002F PDF_GLYPH_SPACE_UNITS;\n   const typoAscent = override.ascent || Math.round(scale * (properties.ascent || bbox[3]));\n   let typoDescent = override.descent || Math.round(scale * (properties.descent || bbox[1]));\n@@ -23050,11 +30578,12 @@\n   return nameTable;\n }\n class Font {\n-  constructor(name, file, properties) {\n+  constructor(name, file, properties, evaluatorOptions) {\n     this.name = name;\n     this.psName = null;\n     this.mimetype = null;\n-    this.disableFontFace = false;\n+    this.disableFontFace = evaluatorOptions.disableFontFace;\n+    this.fontExtraProperties = evaluatorOptions.fontExtraProperties;\n     this.loadedName = properties.loadedName;\n     this.isType3Font = properties.isType3Font;\n     this.missingFile = false;\n@@ -23151,8 +30680,8 @@\n         case \"CIDFontType2\":\n           this.mimetype = \"font\u002Fopentype\";\n           data = this.checkAndRepair(name, file, properties);\n+          adjustWidths(properties);\n           if (this.isOpenType) {\n-            adjustWidths(properties);\n             type = \"OpenType\";\n           }\n           break;\n@@ -23178,14 +30707,13 @@\n     const renderer = FontRendererFactory.create(this, SEAC_ANALYSIS_ENABLED);\n     return shadow(this, \"renderer\", renderer);\n   }\n-  exportData(extraProperties = false) {\n-    const exportDataProperties = extraProperties ? [...EXPORT_DATA_PROPERTIES, ...EXPORT_DATA_EXTRA_PROPERTIES] : EXPORT_DATA_PROPERTIES;\n+  exportData() {\n+    const exportDataProps = this.fontExtraProperties ? [...EXPORT_DATA_PROPERTIES, ...EXPORT_DATA_EXTRA_PROPERTIES] : EXPORT_DATA_PROPERTIES;\n     const data = Object.create(null);\n-    let property, value;\n-    for (property of exportDataProperties) {\n-      value = this[property];\n+    for (const prop of exportDataProps) {\n+      const value = this[prop];\n       if (value !== undefined) {\n-        data[property] = value;\n+        data[prop] = value;\n       }\n     }\n     return data;\n@@ -23256,7 +30784,7 @@\n       this.toFontChar = buildToFontChar(SymbolSetEncoding, getGlyphsUnicode(), this.differences);\n     } else if (\u002FDingbats\u002Fi.test(fontName)) {\n       this.toFontChar = buildToFontChar(ZapfDingbatsEncoding, getDingbatsGlyphsUnicode(), this.differences);\n-    } else if (isStandardFont) {\n+    } else if (isStandardFont || isMappedToStandardFont) {\n       const map = buildToFontChar(this.defaultEncoding, getGlyphsUnicode(), this.differences);\n       if (type === \"CIDFontType2\" && !this.cidEncoding.startsWith(\"Identity-\") && !(this.toUnicode instanceof IdentityToUnicodeMap)) {\n         this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n@@ -23639,19 +31167,23 @@\n           hasShortCmap: false\n         };\n       }\n-      mappings.sort(function (a, b) {\n-        return a.charCode - b.charCode;\n-      });\n-      for (let i = 1; i \u003C mappings.length; i++) {\n-        if (mappings[i - 1].charCode === mappings[i].charCode) {\n-          mappings.splice(i, 1);\n-          i--;\n+      mappings.sort((a, b) => a.charCode - b.charCode);\n+      const finalMappings = [],\n+        seenCharCodes = new Set();\n+      for (const map of mappings) {\n+        const {\n+          charCode\n+        } = map;\n+        if (seenCharCodes.has(charCode)) {\n+          continue;\n         }\n+        seenCharCodes.add(charCode);\n+        finalMappings.push(map);\n       }\n       return {\n         platformId: potentialTable.platformId,\n         encodingId: potentialTable.encodingId,\n-        mappings,\n+        mappings: finalMappings,\n         hasShortCmap\n       };\n     }\n@@ -24106,7 +31638,7 @@\n           } else {\n             for (j = 0; j \u003C n; j++) {\n               b = data[i++];\n-              stack.push(b \u003C\u003C 8 | data[i++]);\n+              stack.push(signedInt16(b, data[i++]));\n             }\n           }\n         } else if (op === 0x2b && !tooComplexToFollowFunctions) {\n@@ -24311,7 +31843,6 @@\n       if (header.version === \"OTTO\" && !isComposite || !tables.head || !tables.hhea || !tables.maxp || !tables.post) {\n         cffFile = new Stream(tables[\"CFF \"].data);\n         cff = new CFFFont(cffFile, properties);\n-        adjustWidths(properties);\n         return this.convert(name, cff, properties);\n       }\n       delete tables.glyf;\n@@ -24691,7 +32222,7 @@\n       }\n       properties.seacMap = seacMap;\n     }\n-    const unitsPerEm = 1 \u002F (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\n+    const unitsPerEm = properties.fontMatrix ? 1 \u002F Math.max(...properties.fontMatrix.slice(0, 4).map(Math.abs)) : 1000;\n     const builder = new OpenTypeFileBuilder(\"\\x4F\\x54\\x54\\x4F\");\n     builder.addTable(\"CFF \", font.data);\n     builder.addTable(\"OS\u002F2\", createOS2Table(properties, newCharCodeToGlyphId));\n@@ -24719,6 +32250,36 @@\n     builder.addTable(\"post\", createPostTable(properties));\n     return builder.toArray();\n   }\n+  get _spaceWidth() {\n+    const possibleSpaceReplacements = [\"space\", \"minus\", \"one\", \"i\", \"I\"];\n+    let width;\n+    for (const glyphName of possibleSpaceReplacements) {\n+      if (glyphName in this.widths) {\n+        width = this.widths[glyphName];\n+        break;\n+      }\n+      const glyphsUnicodeMap = getGlyphsUnicode();\n+      const glyphUnicode = glyphsUnicodeMap[glyphName];\n+      let charcode = 0;\n+      if (this.composite && this.cMap.contains(glyphUnicode)) {\n+        charcode = this.cMap.lookup(glyphUnicode);\n+        if (typeof charcode === \"string\") {\n+          charcode = convertCidString(glyphUnicode, charcode);\n+        }\n+      }\n+      if (!charcode && this.toUnicode) {\n+        charcode = this.toUnicode.charCodeOf(glyphUnicode);\n+      }\n+      if (charcode \u003C= 0) {\n+        charcode = glyphUnicode;\n+      }\n+      width = this.widths[charcode];\n+      if (width) {\n+        break;\n+      }\n+    }\n+    return shadow(this, \"_spaceWidth\", width || this.defaultWidth);\n+  }\n   _charToGlyph(charcode, isSpace = false) {\n     let glyph = this._glyphCache[charcode];\n     if (glyph?.isSpace === isSpace) {\n@@ -24747,6 +32308,10 @@\n       const glyphName = this.differences[charcode] || this.defaultEncoding[charcode];\n       if ((glyphName === \".notdef\" || glyphName === \"\") && this.type === \"Type1\") {\n         fontCharCode = 0x20;\n+        if (glyphName === \"\") {\n+          width ||= this._spaceWidth;\n+          unicode = String.fromCharCode(fontCharCode);\n+        }\n       }\n       fontCharCode = mapSpecialUnicodeValues(fontCharCode);\n     }\n@@ -24771,6 +32336,12 @@\n         warn(`charToGlyph - invalid fontCharCode: ${fontCharCode}`);\n       }\n     }\n+    if (this.missingFile && this.vertical && fontChar.length === 1) {\n+      const vertical = getVerticalPresentationForm()[fontChar.charCodeAt(0)];\n+      if (vertical) {\n+        fontChar = unicode = String.fromCharCode(vertical);\n+      }\n+    }\n     glyph = new fonts_Glyph(charcode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont);\n     return this._glyphCache[charcode] = glyph;\n   }\n@@ -24870,14 +32441,22 @@\n   encodeString(chars) {\n     return [chars];\n   }\n-  exportData(extraProperties = false) {\n+  exportData() {\n     return {\n       error: this.error\n     };\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fpattern.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fpattern.js\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n \n@@ -24895,19 +32474,19 @@\n   constructor() {\n     unreachable(\"Cannot initialize Pattern.\");\n   }\n-  static parseShading(shading, xref, res, pdfFunctionFactory, localColorSpaceCache) {\n+  static parseShading(shading, xref, res, pdfFunctionFactory, globalColorSpaceCache, localColorSpaceCache) {\n     const dict = shading instanceof BaseStream ? shading.dict : shading;\n     const type = dict.get(\"ShadingType\");\n     try {\n       switch (type) {\n         case ShadingType.AXIAL:\n         case ShadingType.RADIAL:\n-          return new RadialAxialShading(dict, xref, res, pdfFunctionFactory, localColorSpaceCache);\n+          return new RadialAxialShading(dict, xref, res, pdfFunctionFactory, globalColorSpaceCache, localColorSpaceCache);\n         case ShadingType.FREE_FORM_MESH:\n         case ShadingType.LATTICE_FORM_MESH:\n         case ShadingType.COONS_PATCH_MESH:\n         case ShadingType.TENSOR_PATCH_MESH:\n-          return new MeshShading(shading, xref, res, pdfFunctionFactory, localColorSpaceCache);\n+          return new MeshShading(shading, xref, res, pdfFunctionFactory, globalColorSpaceCache, localColorSpaceCache);\n         default:\n           throw new FormatError(\"Unsupported ShadingType: \" + type);\n       }\n@@ -24922,17 +32501,12 @@\n }\n class BaseShading {\n   static SMALL_NUMBER = 1e-6;\n-  constructor() {\n-    if (this.constructor === BaseShading) {\n-      unreachable(\"Cannot initialize BaseShading.\");\n-    }\n-  }\n   getIR() {\n     unreachable(\"Abstract method `getIR` called.\");\n   }\n }\n class RadialAxialShading extends BaseShading {\n-  constructor(dict, xref, resources, pdfFunctionFactory, localColorSpaceCache) {\n+  constructor(dict, xref, resources, pdfFunctionFactory, globalColorSpaceCache, localColorSpaceCache) {\n     super();\n     this.shadingType = dict.get(\"ShadingType\");\n     let coordsLen = 0;\n@@ -24945,11 +32519,12 @@\n     if (!isNumberArray(this.coordsArr, coordsLen)) {\n       throw new FormatError(\"RadialAxialShading: Invalid \u002FCoords array.\");\n     }\n-    const cs = ColorSpace.parse({\n+    const cs = ColorSpaceUtils.parse({\n       cs: dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\"),\n       xref,\n       resources,\n       pdfFunctionFactory,\n+      globalColorSpaceCache,\n       localColorSpaceCache\n     });\n     this.bbox = lookupNormalRect(dict.getArray(\"BBox\"), null);\n@@ -24975,7 +32550,7 @@\n     this.extendStart = extendStart;\n     this.extendEnd = extendEnd;\n     const fnObj = dict.getRaw(\"Function\");\n-    const fn = pdfFunctionFactory.createFromArray(fnObj);\n+    const fn = pdfFunctionFactory.create(fnObj, true);\n     const NUMBER_OF_SAMPLES = 840;\n     const step = (t1 - t0) \u002F NUMBER_OF_SAMPLES;\n     const colorStops = this.colorStops = [];\n@@ -24985,56 +32560,60 @@\n     }\n     const color = new Float32Array(cs.numComps),\n       ratio = new Float32Array(1);\n-    let rgbColor;\n     let iBase = 0;\n     ratio[0] = t0;\n     fn(ratio, 0, color, 0);\n-    let rgbBase = cs.getRgb(color, 0);\n-    const cssColorBase = Util.makeHexColor(rgbBase[0], rgbBase[1], rgbBase[2]);\n-    colorStops.push([0, cssColorBase]);\n+    const rgbBuffer = new Uint8ClampedArray(3);\n+    cs.getRgb(color, 0, rgbBuffer);\n+    let [rBase, gBase, bBase] = rgbBuffer;\n+    colorStops.push([0, Util.makeHexColor(rBase, gBase, bBase)]);\n     let iPrev = 1;\n     ratio[0] = t0 + step;\n     fn(ratio, 0, color, 0);\n-    let rgbPrev = cs.getRgb(color, 0);\n-    let maxSlopeR = rgbPrev[0] - rgbBase[0] + 1;\n-    let maxSlopeG = rgbPrev[1] - rgbBase[1] + 1;\n-    let maxSlopeB = rgbPrev[2] - rgbBase[2] + 1;\n-    let minSlopeR = rgbPrev[0] - rgbBase[0] - 1;\n-    let minSlopeG = rgbPrev[1] - rgbBase[1] - 1;\n-    let minSlopeB = rgbPrev[2] - rgbBase[2] - 1;\n+    cs.getRgb(color, 0, rgbBuffer);\n+    let [rPrev, gPrev, bPrev] = rgbBuffer;\n+    let maxSlopeR = rPrev - rBase + 1;\n+    let maxSlopeG = gPrev - gBase + 1;\n+    let maxSlopeB = bPrev - bBase + 1;\n+    let minSlopeR = rPrev - rBase - 1;\n+    let minSlopeG = gPrev - gBase - 1;\n+    let minSlopeB = bPrev - bBase - 1;\n     for (let i = 2; i \u003C NUMBER_OF_SAMPLES; i++) {\n       ratio[0] = t0 + i * step;\n       fn(ratio, 0, color, 0);\n-      rgbColor = cs.getRgb(color, 0);\n+      cs.getRgb(color, 0, rgbBuffer);\n+      const [r, g, b] = rgbBuffer;\n       const run = i - iBase;\n-      maxSlopeR = Math.min(maxSlopeR, (rgbColor[0] - rgbBase[0] + 1) \u002F run);\n-      maxSlopeG = Math.min(maxSlopeG, (rgbColor[1] - rgbBase[1] + 1) \u002F run);\n-      maxSlopeB = Math.min(maxSlopeB, (rgbColor[2] - rgbBase[2] + 1) \u002F run);\n-      minSlopeR = Math.max(minSlopeR, (rgbColor[0] - rgbBase[0] - 1) \u002F run);\n-      minSlopeG = Math.max(minSlopeG, (rgbColor[1] - rgbBase[1] - 1) \u002F run);\n-      minSlopeB = Math.max(minSlopeB, (rgbColor[2] - rgbBase[2] - 1) \u002F run);\n+      maxSlopeR = Math.min(maxSlopeR, (r - rBase + 1) \u002F run);\n+      maxSlopeG = Math.min(maxSlopeG, (g - gBase + 1) \u002F run);\n+      maxSlopeB = Math.min(maxSlopeB, (b - bBase + 1) \u002F run);\n+      minSlopeR = Math.max(minSlopeR, (r - rBase - 1) \u002F run);\n+      minSlopeG = Math.max(minSlopeG, (g - gBase - 1) \u002F run);\n+      minSlopeB = Math.max(minSlopeB, (b - bBase - 1) \u002F run);\n       const slopesExist = minSlopeR \u003C= maxSlopeR && minSlopeG \u003C= maxSlopeG && minSlopeB \u003C= maxSlopeB;\n       if (!slopesExist) {\n-        const cssColor = Util.makeHexColor(rgbPrev[0], rgbPrev[1], rgbPrev[2]);\n+        const cssColor = Util.makeHexColor(rPrev, gPrev, bPrev);\n         colorStops.push([iPrev \u002F NUMBER_OF_SAMPLES, cssColor]);\n-        maxSlopeR = rgbColor[0] - rgbPrev[0] + 1;\n-        maxSlopeG = rgbColor[1] - rgbPrev[1] + 1;\n-        maxSlopeB = rgbColor[2] - rgbPrev[2] + 1;\n-        minSlopeR = rgbColor[0] - rgbPrev[0] - 1;\n-        minSlopeG = rgbColor[1] - rgbPrev[1] - 1;\n-        minSlopeB = rgbColor[2] - rgbPrev[2] - 1;\n+        maxSlopeR = r - rPrev + 1;\n+        maxSlopeG = g - gPrev + 1;\n+        maxSlopeB = b - bPrev + 1;\n+        minSlopeR = r - rPrev - 1;\n+        minSlopeG = g - gPrev - 1;\n+        minSlopeB = b - bPrev - 1;\n         iBase = iPrev;\n-        rgbBase = rgbPrev;\n+        rBase = rPrev;\n+        gBase = gPrev;\n+        bBase = bPrev;\n       }\n       iPrev = i;\n-      rgbPrev = rgbColor;\n+      rPrev = r;\n+      gPrev = g;\n+      bPrev = b;\n     }\n-    const cssColor = Util.makeHexColor(rgbPrev[0], rgbPrev[1], rgbPrev[2]);\n-    colorStops.push([1, cssColor]);\n+    colorStops.push([1, Util.makeHexColor(rPrev, gPrev, bPrev)]);\n     let background = \"transparent\";\n     if (dict.has(\"Background\")) {\n-      rgbColor = cs.getRgb(dict.get(\"Background\"), 0);\n-      background = Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]);\n+      background = cs.getRgbHex(dict.get(\"Background\"), 0);\n     }\n     if (!extendStart) {\n       colorStops.unshift([0, background]);\n@@ -25097,22 +32676,27 @@\n     return true;\n   }\n   readBits(n) {\n-    let buffer = this.buffer;\n-    let bufferLength = this.bufferLength;\n+    const {\n+      stream\n+    } = this;\n+    let {\n+      buffer,\n+      bufferLength\n+    } = this;\n     if (n === 32) {\n       if (bufferLength === 0) {\n-        return (this.stream.getByte() \u003C\u003C 24 | this.stream.getByte() \u003C\u003C 16 | this.stream.getByte() \u003C\u003C 8 | this.stream.getByte()) >>> 0;\n+        return stream.getInt32() >>> 0;\n       }\n-      buffer = buffer \u003C\u003C 24 | this.stream.getByte() \u003C\u003C 16 | this.stream.getByte() \u003C\u003C 8 | this.stream.getByte();\n-      const nextByte = this.stream.getByte();\n+      buffer = buffer \u003C\u003C 24 | stream.getByte() \u003C\u003C 16 | stream.getByte() \u003C\u003C 8 | stream.getByte();\n+      const nextByte = stream.getByte();\n       this.buffer = nextByte & (1 \u003C\u003C bufferLength) - 1;\n       return (buffer \u003C\u003C 8 - bufferLength | (nextByte & 0xff) >> bufferLength) >>> 0;\n     }\n     if (n === 8 && bufferLength === 0) {\n-      return this.stream.getByte();\n+      return stream.getByte();\n     }\n     while (bufferLength \u003C n) {\n-      buffer = buffer \u003C\u003C 8 | this.stream.getByte();\n+      buffer = buffer \u003C\u003C 8 | stream.getByte();\n       bufferLength += 8;\n     }\n     bufferLength -= n;\n@@ -25128,28 +32712,32 @@\n     return this.readBits(this.context.bitsPerFlag);\n   }\n   readCoordinate() {\n-    const bitsPerCoordinate = this.context.bitsPerCoordinate;\n+    const {\n+      bitsPerCoordinate,\n+      decode\n+    } = this.context;\n     const xi = this.readBits(bitsPerCoordinate);\n     const yi = this.readBits(bitsPerCoordinate);\n-    const decode = this.context.decode;\n     const scale = bitsPerCoordinate \u003C 32 ? 1 \u002F ((1 \u003C\u003C bitsPerCoordinate) - 1) : 2.3283064365386963e-10;\n     return [xi * scale * (decode[1] - decode[0]) + decode[0], yi * scale * (decode[3] - decode[2]) + decode[2]];\n   }\n   readComponents() {\n-    const numComps = this.context.numComps;\n-    const bitsPerComponent = this.context.bitsPerComponent;\n+    const {\n+      bitsPerComponent,\n+      colorFn,\n+      colorSpace,\n+      decode,\n+      numComps\n+    } = this.context;\n     const scale = bitsPerComponent \u003C 32 ? 1 \u002F ((1 \u003C\u003C bitsPerComponent) - 1) : 2.3283064365386963e-10;\n-    const decode = this.context.decode;\n     const components = this.tmpCompsBuf;\n     for (let i = 0, j = 4; i \u003C numComps; i++, j += 2) {\n       const ci = this.readBits(bitsPerComponent);\n       components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j];\n     }\n     const color = this.tmpCsCompsBuf;\n-    if (this.context.colorFn) {\n-      this.context.colorFn(components, 0, color, 0);\n-    }\n-    return this.context.colorSpace.getRgb(color, 0);\n+    colorFn?.(components, 0, color, 0);\n+    return colorSpace.getRgb(color, 0);\n   }\n }\n let bCache = Object.create(null);\n@@ -25172,7 +32760,7 @@\n   static MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3;\n   static MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20;\n   static TRIANGLE_DENSITY = 20;\n-  constructor(stream, xref, resources, pdfFunctionFactory, localColorSpaceCache) {\n+  constructor(stream, xref, resources, pdfFunctionFactory, globalColorSpaceCache, localColorSpaceCache) {\n     super();\n     if (!(stream instanceof BaseStream)) {\n       throw new FormatError(\"Mesh data is not a stream\");\n@@ -25180,16 +32768,17 @@\n     const dict = stream.dict;\n     this.shadingType = dict.get(\"ShadingType\");\n     this.bbox = lookupNormalRect(dict.getArray(\"BBox\"), null);\n-    const cs = ColorSpace.parse({\n+    const cs = ColorSpaceUtils.parse({\n       cs: dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\"),\n       xref,\n       resources,\n       pdfFunctionFactory,\n+      globalColorSpaceCache,\n       localColorSpaceCache\n     });\n     this.background = dict.has(\"Background\") ? cs.getRgb(dict.get(\"Background\"), 0) : null;\n     const fnObj = dict.getRaw(\"Function\");\n-    const fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null;\n+    const fn = fnObj ? pdfFunctionFactory.create(fnObj, true) : null;\n     this.coords = [];\n     this.colors = [];\n     this.figures = [];\n@@ -25549,9 +33138,9 @@\n     const figureMaxX = Math.max(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]);\n     const figureMaxY = Math.max(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]);\n     let splitXBy = Math.ceil((figureMaxX - figureMinX) * MeshShading.TRIANGLE_DENSITY \u002F (this.bounds[2] - this.bounds[0]));\n-    splitXBy = Math.max(MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT, Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy));\n+    splitXBy = MathClamp(splitXBy, MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT, MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT);\n     let splitYBy = Math.ceil((figureMaxY - figureMinY) * MeshShading.TRIANGLE_DENSITY \u002F (this.bounds[3] - this.bounds[1]));\n-    splitYBy = Math.max(MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT, Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy));\n+    splitYBy = MathClamp(splitYBy, MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT, MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT);\n     const verticesPerRow = splitXBy + 1;\n     const figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow);\n     const figureColors = new Int32Array((splitYBy + 1) * verticesPerRow);\n@@ -25695,7 +33284,7 @@\n   return [\"TilingPattern\", color, operatorList, matrix, bbox, xstep, ystep, paintType, tilingType];\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fcalibri_factors.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fcalibri_factors.js\n const CalibriBoldFactors = [1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566, 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.54657, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859, 0.92138, 0.83908, 0.7762, 0.73293, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356, 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.9121, 0.86943, 0.79795, 0.88198, 0.77958, 0.70864, 0.81055, 0.90399, 0.88653, 0.96017, 0.82577, 0.77892, 0.78257, 0.97507, 1.54657, 0.97507, 0.85284, 0.89552, 0.90176, 0.88762, 0.8785, 0.75241, 0.8785, 0.90518, 0.95015, 0.77618, 0.8785, 0.88401, 0.91916, 0.86304, 0.88401, 0.91488, 0.8785, 0.8801, 0.8785, 0.8785, 0.91343, 0.7173, 1.04106, 0.8785, 0.85075, 0.95794, 0.82616, 0.85162, 0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.12401, 0.96839, 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133, 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.73293, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506, 0.9121, 0.86943, 0.86943, 0.86943, 0.86943, 0.86943, 0.85284, 0.87508, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.8715, 0.75241, 0.90518, 0.90518, 0.90518, 0.90518, 0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.8785, 0.8801, 0.8801, 0.8801, 0.8801, 0.8801, 0.90747, 0.89049, 0.8785, 0.8785, 0.8785, 0.8785, 0.85162, 0.8785, 0.85162, 0.83908, 0.88762, 0.83908, 0.88762, 0.83908, 0.88762, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241, 0.87289, 0.83016, 0.88506, 0.93125, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.81921, 0.77618, 0.81921, 0.77618, 0.81921, 0.77618, 1, 1, 0.87356, 0.8785, 0.91075, 0.89608, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.76229, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.79468, 0.91926, 0.88175, 0.70823, 0.94903, 0.9121, 0.8785, 1, 1, 0.9121, 0.8785, 0.87802, 0.88656, 0.8785, 0.86943, 0.8801, 0.86943, 0.8801, 0.86943, 0.8801, 0.87402, 0.89291, 0.77958, 0.91343, 1, 1, 0.77958, 0.91343, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864, 0.7173, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.96017, 0.95794, 0.77892, 0.85162, 0.77892, 0.78257, 0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.88762, 0.77539, 0.8715, 0.87508, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528, 1, 1.15543, 0.70674, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.06303, 0.83908, 0.80352, 0.57184, 0.6965, 0.56289, 0.82001, 0.56029, 0.81235, 1.02988, 0.83908, 0.7762, 0.68156, 0.80367, 0.73133, 0.78257, 0.87356, 0.86943, 0.95958, 0.75727, 0.89019, 1.04924, 0.9121, 0.7648, 0.86943, 0.87356, 0.79795, 0.78275, 0.81055, 0.77892, 0.9762, 0.82577, 0.99819, 0.84896, 0.95958, 0.77892, 0.96108, 1.01407, 0.89049, 1.02988, 0.94211, 0.96108, 0.8936, 0.84021, 0.87842, 0.96399, 0.79109, 0.89049, 1.00813, 1.02988, 0.86077, 0.87445, 0.92099, 0.84723, 0.86513, 0.8801, 0.75638, 0.85714, 0.78216, 0.79586, 0.87965, 0.94211, 0.97747, 0.78287, 0.97926, 0.84971, 1.02988, 0.94211, 0.8801, 0.94211, 0.84971, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90264, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90518, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90548, 1, 1, 1, 1, 1, 1, 0.96017, 0.95794, 0.96017, 0.95794, 0.96017, 0.95794, 0.77892, 0.85162, 1, 1, 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.92794, 0.87012, 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71143, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171, 1.4956, 2.2807, 0.93835, 0.83406, 0.91133, 0.84107, 0.91133, 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90527, 1.81055, 0.90527, 1.81055, 1.31006, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\n const CalibriBoldMetrics = {\n   lineHeight: 1.2207,\n@@ -25717,7 +33306,7 @@\n   lineGap: 0.2207\n };\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fhelvetica_factors.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fhelvetica_factors.js\n const HelveticaBoldFactors = [0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977, 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998, 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026, 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026, 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1, 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 1.03374, 0.99977, 1.00026, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.00042, 0.99973, 0.99973, 1.0006, 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.03828, 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977, 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 1.00034, 0.99977, 1, 0.99997, 1.00026, 1.00078, 1.00036, 0.99973, 1.00013, 1.0006, 0.99977, 0.99977, 0.99988, 0.85148, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 1.00069, 1.00022, 0.99977, 1.00001, 0.99984, 1.00026, 1.00001, 1.00024, 1.00001, 0.9999, 1, 1.0006, 1.00001, 1.00041, 0.99962, 1.00026, 1.0006, 0.99995, 1.00041, 0.99942, 0.99973, 0.99927, 1.00082, 0.99902, 1.00026, 1.00087, 1.0006, 1.00069, 0.99973, 0.99867, 0.99973, 0.9993, 1.00026, 1.00049, 1.00056, 1, 0.99988, 0.99935, 0.99995, 0.99954, 1.00055, 0.99945, 1.00032, 1.0006, 0.99995, 1.00026, 0.99995, 1.00032, 1.00001, 1.00008, 0.99971, 1.00019, 0.9994, 1.00001, 1.0006, 1.00044, 0.99973, 1.00023, 1.00047, 1, 0.99942, 0.99561, 0.99989, 1.00035, 0.99977, 1.00035, 0.99977, 1.00019, 0.99944, 1.00001, 1.00021, 0.99926, 1.00035, 1.00035, 0.99942, 1.00048, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.99989, 1.00057, 1.00001, 0.99936, 1.00052, 1.00012, 0.99996, 1.00043, 1, 1.00035, 0.9994, 0.99976, 1.00035, 0.99973, 1.00052, 1.00041, 1.00119, 1.00037, 0.99973, 1.00002, 0.99986, 1.00041, 1.00041, 0.99902, 0.9996, 1.00034, 0.99999, 1.00026, 0.99999, 1.00026, 0.99973, 1.00052, 0.99973, 1, 0.99973, 1.00041, 1.00075, 0.9994, 1.0003, 0.99999, 1, 1.00041, 0.99955, 1, 0.99915, 0.99973, 0.99973, 1.00026, 1.00119, 0.99955, 0.99973, 1.0006, 0.99911, 1.0006, 1.00026, 0.99972, 1.00026, 0.99902, 1.00041, 0.99973, 0.99999, 1, 1, 1.00038, 1.0005, 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1, 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973, 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 1.00047, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1, 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\n const HelveticaBoldMetrics = {\n   lineHeight: 1.2,\n@@ -25739,7 +33328,7 @@\n   lineGap: 0.2\n };\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fliberationsans_widths.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fliberationsans_widths.js\n const LiberationSansBoldWidths = [365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333, 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611, 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 719, 722, 611, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611, 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 785, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 385, 611, 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778, 611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556, 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611, 500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 465, 722, 333, 853, 906, 474, 825, 927, 838, 278, 722, 722, 601, 719, 667, 611, 722, 778, 278, 722, 667, 833, 722, 644, 778, 722, 667, 600, 611, 667, 821, 667, 809, 802, 278, 667, 615, 451, 611, 278, 582, 615, 610, 556, 606, 475, 460, 611, 541, 278, 558, 556, 612, 556, 445, 611, 766, 619, 520, 684, 446, 582, 715, 576, 753, 845, 278, 582, 611, 582, 845, 667, 669, 885, 567, 711, 667, 278, 276, 556, 1094, 1062, 875, 610, 722, 622, 719, 722, 719, 722, 567, 712, 667, 904, 626, 719, 719, 610, 702, 833, 722, 778, 719, 667, 722, 611, 622, 854, 667, 730, 703, 1005, 1019, 870, 979, 719, 711, 1031, 719, 556, 618, 615, 417, 635, 556, 709, 497, 615, 615, 500, 635, 740, 604, 611, 604, 611, 556, 490, 556, 875, 556, 615, 581, 833, 844, 729, 854, 615, 552, 854, 583, 556, 556, 611, 417, 552, 556, 278, 281, 278, 969, 906, 611, 500, 615, 556, 604, 778, 611, 487, 447, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552, 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333, 333, 604, 333, 167, 396, 556, 556, 1094, 556, 885, 489, 1115, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333, 333, 333, 333, 333, 333];\n const LiberationSansBoldMapping = [-1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1];\n const LiberationSansBoldItalicWidths = [365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333, 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611, 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 740, 722, 611, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611, 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 782, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 396, 611, 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778, 611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556, 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611, 500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 722, 333, 854, 906, 473, 844, 930, 847, 278, 722, 722, 610, 671, 667, 611, 722, 778, 278, 722, 667, 833, 722, 657, 778, 718, 667, 590, 611, 667, 822, 667, 829, 781, 278, 667, 620, 479, 611, 278, 591, 620, 621, 556, 610, 479, 492, 611, 558, 278, 566, 556, 603, 556, 450, 611, 712, 605, 532, 664, 409, 591, 704, 578, 773, 834, 278, 591, 611, 591, 834, 667, 667, 886, 614, 719, 667, 278, 278, 556, 1094, 1042, 854, 622, 719, 677, 719, 722, 708, 722, 614, 722, 667, 927, 643, 719, 719, 615, 687, 833, 722, 778, 719, 667, 722, 611, 677, 781, 667, 729, 708, 979, 989, 854, 1000, 708, 719, 1042, 729, 556, 619, 604, 534, 618, 556, 736, 510, 611, 611, 507, 622, 740, 604, 611, 611, 611, 556, 889, 556, 885, 556, 646, 583, 889, 935, 707, 854, 594, 552, 865, 589, 556, 556, 611, 469, 563, 556, 278, 278, 278, 969, 906, 611, 507, 619, 556, 611, 778, 611, 575, 467, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552, 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333, 333, 604, 333, 167, 396, 556, 556, 1104, 556, 885, 516, 1146, 1000, 768, 600, 834, 834, 834, 834, 999, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333, 333, 333, 333, 333, 333];\n@@ -25749,7 +33338,7 @@\n const LiberationSansRegularWidths = [365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333, 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556, 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556, 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 615, 722, 556, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556, 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278, 278, 735, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 292, 556, 334, 556, 222, 722, 556, 722, 556, 722, 556, 604, 723, 556, 778, 556, 778, 556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500, 667, 500, 667, 500, 611, 278, 611, 375, 611, 278, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611, 500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 784, 838, 384, 774, 855, 752, 222, 667, 667, 551, 668, 667, 611, 722, 778, 278, 667, 668, 833, 722, 650, 778, 722, 667, 618, 611, 667, 798, 667, 835, 748, 278, 667, 578, 446, 556, 222, 547, 578, 575, 500, 557, 446, 441, 556, 556, 222, 500, 500, 576, 500, 448, 556, 690, 569, 482, 617, 395, 547, 648, 525, 713, 781, 222, 547, 556, 547, 781, 667, 667, 865, 542, 719, 667, 278, 278, 500, 1057, 1010, 854, 583, 722, 635, 719, 667, 656, 667, 542, 677, 667, 923, 604, 719, 719, 583, 656, 833, 722, 778, 719, 667, 722, 611, 635, 760, 667, 740, 667, 917, 938, 792, 885, 656, 719, 1010, 722, 556, 573, 531, 365, 583, 556, 669, 458, 559, 559, 438, 583, 688, 552, 556, 542, 556, 500, 458, 500, 823, 500, 573, 521, 802, 823, 625, 719, 521, 510, 750, 542, 556, 556, 556, 365, 510, 500, 222, 278, 222, 906, 812, 556, 438, 559, 500, 552, 778, 556, 489, 411, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552, 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333, 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1073, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 719, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324, 324, 316, 328, 398, 285];\n const LiberationSansRegularMapping = [-1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1];\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fmyriadpro_factors.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fmyriadpro_factors.js\n const MyriadProBoldFactors = [1.36898, 1, 1, 0.72706, 0.80479, 0.83734, 0.98894, 0.99793, 0.9897, 0.93884, 0.86209, 0.94292, 0.94292, 1.16661, 1.02058, 0.93582, 0.96694, 0.93582, 1.19137, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058, 0.72851, 0.78966, 0.90838, 0.83637, 0.82391, 0.96376, 0.80061, 0.86275, 0.8768, 0.95407, 1.0258, 0.73901, 0.85022, 0.83655, 1.0156, 0.95546, 0.92179, 0.87107, 0.92179, 0.82114, 0.8096, 0.89713, 0.94438, 0.95353, 0.94083, 0.91905, 0.90406, 0.9446, 0.94292, 1.18777, 0.94292, 1.02058, 0.89903, 0.90088, 0.94938, 0.97898, 0.81093, 0.97571, 0.94938, 1.024, 0.9577, 0.95933, 0.98621, 1.0474, 0.97455, 0.98981, 0.9672, 0.95933, 0.9446, 0.97898, 0.97407, 0.97646, 0.78036, 1.10208, 0.95442, 0.95298, 0.97579, 0.9332, 0.94039, 0.938, 0.80687, 1.01149, 0.80687, 1.02058, 0.80479, 0.99793, 0.99793, 0.99793, 0.99793, 1.01149, 1.00872, 0.90088, 0.91882, 1.0213, 0.8361, 1.02058, 0.62295, 0.54324, 0.89022, 1.08595, 1, 1, 0.90088, 1, 0.97455, 0.93582, 0.90088, 1, 1.05686, 0.8361, 0.99642, 0.99642, 0.99642, 0.72851, 0.90838, 0.90838, 0.90838, 0.90838, 0.90838, 0.90838, 0.868, 0.82391, 0.80061, 0.80061, 0.80061, 0.80061, 1.0258, 1.0258, 1.0258, 1.0258, 0.97484, 0.95546, 0.92179, 0.92179, 0.92179, 0.92179, 0.92179, 1.02058, 0.92179, 0.94438, 0.94438, 0.94438, 0.94438, 0.90406, 0.86958, 0.98225, 0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 0.9031, 0.81093, 0.94938, 0.94938, 0.94938, 0.94938, 0.98621, 0.98621, 0.98621, 0.98621, 0.93969, 0.95933, 0.9446, 0.9446, 0.9446, 0.9446, 0.9446, 1.08595, 0.9446, 0.95442, 0.95442, 0.95442, 0.95442, 0.94039, 0.97898, 0.94039, 0.90838, 0.94938, 0.90838, 0.94938, 0.90838, 0.94938, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.96376, 0.84313, 0.97484, 0.97571, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.8768, 0.9577, 0.8768, 0.9577, 0.8768, 0.9577, 1, 1, 0.95407, 0.95933, 0.97069, 0.95933, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 0.887, 1.01591, 0.73901, 1.0474, 1, 1, 0.97455, 0.83655, 0.98981, 1, 1, 0.83655, 0.73977, 0.83655, 0.73903, 0.84638, 1.033, 0.95546, 0.95933, 1, 1, 0.95546, 0.95933, 0.8271, 0.95417, 0.95933, 0.92179, 0.9446, 0.92179, 0.9446, 0.92179, 0.9446, 0.936, 0.91964, 0.82114, 0.97646, 1, 1, 0.82114, 0.97646, 0.8096, 0.78036, 0.8096, 0.78036, 1, 1, 0.8096, 0.78036, 1, 1, 0.89713, 0.77452, 0.89713, 1.10208, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94083, 0.97579, 0.90406, 0.94039, 0.90406, 0.9446, 0.938, 0.9446, 0.938, 0.9446, 0.938, 1, 0.99793, 0.90838, 0.94938, 0.868, 0.9031, 0.92179, 0.9446, 1, 1, 0.89713, 1.10208, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90989, 0.9358, 0.91945, 0.83181, 0.75261, 0.87992, 0.82976, 0.96034, 0.83689, 0.97268, 1.0078, 0.90838, 0.83637, 0.8019, 0.90157, 0.80061, 0.9446, 0.95407, 0.92436, 1.0258, 0.85022, 0.97153, 1.0156, 0.95546, 0.89192, 0.92179, 0.92361, 0.87107, 0.96318, 0.89713, 0.93704, 0.95638, 0.91905, 0.91709, 0.92796, 1.0258, 0.93704, 0.94836, 1.0373, 0.95933, 1.0078, 0.95871, 0.94836, 0.96174, 0.92601, 0.9498, 0.98607, 0.95776, 0.95933, 1.05453, 1.0078, 0.98275, 0.9314, 0.95617, 0.91701, 1.05993, 0.9446, 0.78367, 0.9553, 1, 0.86832, 1.0128, 0.95871, 0.99394, 0.87548, 0.96361, 0.86774, 1.0078, 0.95871, 0.9446, 0.95871, 0.86774, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.94083, 0.97579, 0.94083, 0.97579, 0.94083, 0.97579, 0.90406, 0.94039, 0.96694, 1, 0.89903, 1, 1, 1, 0.93582, 0.93582, 0.93582, 1, 0.908, 0.908, 0.918, 0.94219, 0.94219, 0.96544, 1, 1.285, 1, 1, 0.81079, 0.81079, 1, 1, 0.74854, 1, 1, 1, 1, 0.99793, 1, 1, 1, 0.65, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.17173, 1, 0.80535, 0.76169, 1.02058, 1.0732, 1.05486, 1, 1, 1.30692, 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.16161, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\n const MyriadProBoldMetrics = {\n   lineHeight: 1.2,\n@@ -25771,7 +33360,7 @@\n   lineGap: 0.2\n };\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fsegoeui_factors.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fsegoeui_factors.js\n const SegoeuiBoldFactors = [1.76738, 1, 1, 0.99297, 0.9824, 1.04016, 1.06497, 1.03424, 0.97529, 1.17647, 1.23203, 1.1085, 1.1085, 1.16939, 1.2107, 0.9754, 1.21408, 0.9754, 1.59578, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 0.81378, 0.81378, 1.2107, 1.2107, 1.2107, 0.71703, 0.97847, 0.97363, 0.88776, 0.8641, 1.02096, 0.79795, 0.85132, 0.914, 1.06085, 1.1406, 0.8007, 0.89858, 0.83693, 1.14889, 1.09398, 0.97489, 0.92094, 0.97489, 0.90399, 0.84041, 0.95923, 1.00135, 1, 1.06467, 0.98243, 0.90996, 0.99361, 1.1085, 1.56942, 1.1085, 1.2107, 0.74627, 0.94282, 0.96752, 1.01519, 0.86304, 1.01359, 0.97278, 1.15103, 1.01359, 0.98561, 1.02285, 1.02285, 1.00527, 1.02285, 1.0302, 0.99041, 1.0008, 1.01519, 1.01359, 1.02258, 0.79104, 1.16862, 0.99041, 0.97454, 1.02511, 0.99298, 0.96752, 0.95801, 0.94856, 1.16579, 0.94856, 1.2107, 0.9824, 1.03424, 1.03424, 1, 1.03424, 1.16579, 0.8727, 1.3871, 1.18622, 1.10818, 1.04478, 1.2107, 1.18622, 0.75155, 0.94994, 1.28826, 1.21408, 1.21408, 0.91056, 1, 0.91572, 0.9754, 0.64663, 1.18328, 1.24866, 1.04478, 1.14169, 1.15749, 1.17389, 0.71703, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.93506, 0.8641, 0.79795, 0.79795, 0.79795, 0.79795, 1.1406, 1.1406, 1.1406, 1.1406, 1.02096, 1.09398, 0.97426, 0.97426, 0.97426, 0.97426, 0.97426, 1.2107, 0.97489, 1.00135, 1.00135, 1.00135, 1.00135, 0.90996, 0.92094, 1.02798, 0.96752, 0.96752, 0.96752, 0.96752, 0.96752, 0.96752, 0.93136, 0.86304, 0.97278, 0.97278, 0.97278, 0.97278, 1.02285, 1.02285, 1.02285, 1.02285, 0.97122, 0.99041, 1, 1, 1, 1, 1, 1.28826, 1.0008, 0.99041, 0.99041, 0.99041, 0.99041, 0.96752, 1.01519, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.8641, 0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 1.02096, 1.03057, 1.02096, 1.03517, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.914, 1.01359, 0.914, 1.01359, 0.914, 1.01359, 1, 1, 1.06085, 0.98561, 1.06085, 1.00879, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 0.97138, 1.08692, 0.8007, 1.02285, 1, 1, 1.00527, 0.83693, 1.02285, 1, 1, 0.83693, 0.9455, 0.83693, 0.90418, 0.83693, 1.13005, 1.09398, 0.99041, 1, 1, 1.09398, 0.99041, 0.96692, 1.09251, 0.99041, 0.97489, 1.0008, 0.97489, 1.0008, 0.97489, 1.0008, 0.93994, 0.97931, 0.90399, 1.02258, 1, 1, 0.90399, 1.02258, 0.84041, 0.79104, 0.84041, 0.79104, 0.84041, 0.79104, 0.84041, 0.79104, 1, 1, 0.95923, 1.07034, 0.95923, 1.16862, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.06467, 1.02511, 0.90996, 0.96752, 0.90996, 0.99361, 0.95801, 0.99361, 0.95801, 0.99361, 0.95801, 1.07733, 1.03424, 0.97363, 0.96752, 0.93506, 0.93136, 0.97489, 1.0008, 1, 1, 0.95923, 1.16862, 1.15103, 1.15103, 1.01173, 1.03959, 0.75953, 0.81378, 0.79912, 1.15103, 1.21994, 0.95161, 0.87815, 1.01149, 0.81525, 0.7676, 0.98167, 1.01134, 1.02546, 0.84097, 1.03089, 1.18102, 0.97363, 0.88776, 0.85134, 0.97826, 0.79795, 0.99361, 1.06085, 0.97489, 1.1406, 0.89858, 1.0388, 1.14889, 1.09398, 0.86039, 0.97489, 1.0595, 0.92094, 0.94793, 0.95923, 0.90996, 0.99346, 0.98243, 1.02112, 0.95493, 1.1406, 0.90996, 1.03574, 1.02597, 1.0008, 1.18102, 1.06628, 1.03574, 1.0192, 1.01932, 1.00886, 0.97531, 1.0106, 1.0008, 1.13189, 1.18102, 1.02277, 0.98683, 1.0016, 0.99561, 1.07237, 1.0008, 0.90434, 0.99921, 0.93803, 0.8965, 1.23085, 1.06628, 1.04983, 0.96268, 1.0499, 0.98439, 1.18102, 1.06628, 1.0008, 1.06628, 0.98439, 0.79795, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.09466, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.97278, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.02065, 1, 1, 1, 1, 1, 1, 1.06467, 1.02511, 1.06467, 1.02511, 1.06467, 1.02511, 0.90996, 0.96752, 1, 1.21408, 0.89903, 1, 1, 0.75155, 1.04394, 1.04394, 1.04394, 1.04394, 0.98633, 0.98633, 0.98633, 0.73047, 0.73047, 1.20642, 0.91211, 1.25635, 1.222, 1.02956, 1.03372, 1.03372, 0.96039, 1.24633, 1, 1.12454, 0.93503, 1.03424, 1.19687, 1.03424, 1, 1, 1, 0.771, 1, 1, 1.15749, 1.15749, 1.15749, 1.10948, 0.86279, 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.16897, 1, 0.96085, 0.90137, 1.2107, 1.18416, 1.13973, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21172, 1.29004, 1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18874, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.09193, 1.09193, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\n const SegoeuiBoldMetrics = {\n   lineHeight: 1.33008,\n@@ -25793,7 +33382,10 @@\n   lineGap: 0\n };\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fxfa_fonts.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fxfa_fonts.js\n+\n+\n+\n \n \n \n@@ -25991,7 +33583,8 @@\n   return dict;\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fps_parser.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fps_parser.js\n+\n \n \n \n@@ -26180,14 +33773,18 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fimage_utils.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fimage_utils.js\n+\n+\n+\n+\n+\n+\n+\n \n \n class BaseLocalCache {\n   constructor(options) {\n-    if (this.constructor === BaseLocalCache) {\n-      unreachable(\"Cannot initialize BaseLocalCache.\");\n-    }\n     this._onlyRefs = options?.onlyRefs === true;\n     if (!this._onlyRefs) {\n       this._nameRefMap = new Map();\n@@ -26319,10 +33916,29 @@\n     this._imageCache.put(ref, data);\n   }\n }\n+class GlobalColorSpaceCache extends BaseLocalCache {\n+  constructor(options) {\n+    super({\n+      onlyRefs: true\n+    });\n+  }\n+  set(name = null, ref, data) {\n+    if (!ref) {\n+      throw new Error('GlobalColorSpaceCache.set - expected \"ref\" argument.');\n+    }\n+    if (this._imageCache.has(ref)) {\n+      return;\n+    }\n+    this._imageCache.put(ref, data);\n+  }\n+  clear() {\n+    this._imageCache.clear();\n+  }\n+}\n class GlobalImageCache {\n   static NUM_PAGES_THRESHOLD = 2;\n   static MIN_IMAGES_TO_CACHE = 10;\n-  static MAX_BYTE_SIZE = 5 * MAX_IMAGE_SIZE_TO_CACHE;\n+  static MAX_BYTE_SIZE = 5e7;\n   #decodeFailedSet = new RefSet();\n   constructor() {\n     this._refCache = new RefSetCache();\n@@ -26412,7 +34028,13 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Ffunction.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Ffunction.js\n+\n+\n+\n+\n+\n+\n \n \n \n@@ -26427,64 +34049,34 @@\n     this.xref = xref;\n     this.isEvalSupported = isEvalSupported !== false;\n   }\n-  create(fn) {\n-    const cachedFunction = this.getCached(fn);\n-    if (cachedFunction) {\n-      return cachedFunction;\n-    }\n-    const parsedFunction = PDFFunction.parse({\n-      xref: this.xref,\n-      isEvalSupported: this.isEvalSupported,\n-      fn: fn instanceof Ref ? this.xref.fetch(fn) : fn\n-    });\n-    this._cache(fn, parsedFunction);\n-    return parsedFunction;\n-  }\n-  createFromArray(fnObj) {\n-    const cachedFunction = this.getCached(fnObj);\n-    if (cachedFunction) {\n-      return cachedFunction;\n-    }\n-    const parsedFunction = PDFFunction.parseArray({\n-      xref: this.xref,\n-      isEvalSupported: this.isEvalSupported,\n-      fnObj: fnObj instanceof Ref ? this.xref.fetch(fnObj) : fnObj\n-    });\n-    this._cache(fnObj, parsedFunction);\n-    return parsedFunction;\n-  }\n-  getCached(cacheKey) {\n-    let fnRef;\n-    if (cacheKey instanceof Ref) {\n-      fnRef = cacheKey;\n-    } else if (cacheKey instanceof Dict) {\n-      fnRef = cacheKey.objId;\n-    } else if (cacheKey instanceof BaseStream) {\n-      fnRef = cacheKey.dict?.objId;\n+  create(fn, parseArray = false) {\n+    let fnRef, parsedFn;\n+    if (fn instanceof Ref) {\n+      fnRef = fn;\n+    } else if (fn instanceof Dict) {\n+      fnRef = fn.objId;\n+    } else if (fn instanceof BaseStream) {\n+      fnRef = fn.dict?.objId;\n     }\n     if (fnRef) {\n-      const localFunction = this._localFunctionCache.getByRef(fnRef);\n-      if (localFunction) {\n-        return localFunction;\n+      const cachedFn = this._localFunctionCache.getByRef(fnRef);\n+      if (cachedFn) {\n+        return cachedFn;\n       }\n     }\n-    return null;\n-  }\n-  _cache(cacheKey, parsedFunction) {\n-    if (!parsedFunction) {\n-      throw new Error('PDFFunctionFactory._cache - expected \"parsedFunction\" argument.');\n-    }\n-    let fnRef;\n-    if (cacheKey instanceof Ref) {\n-      fnRef = cacheKey;\n-    } else if (cacheKey instanceof Dict) {\n-      fnRef = cacheKey.objId;\n-    } else if (cacheKey instanceof BaseStream) {\n-      fnRef = cacheKey.dict?.objId;\n+    const fnObj = this.xref.fetchIfRef(fn);\n+    if (Array.isArray(fnObj)) {\n+      if (!parseArray) {\n+        throw new Error('PDFFunctionFactory.create - expected \"parseArray\" argument.');\n+      }\n+      parsedFn = PDFFunction.parseArray(this, fnObj);\n+    } else {\n+      parsedFn = PDFFunction.parse(this, fnObj);\n     }\n     if (fnRef) {\n-      this._localFunctionCache.set(null, fnRef, parsedFunction);\n+      this._localFunctionCache.set(null, fnRef, parsedFn);\n     }\n+    return parsedFn;\n   }\n   get _localFunctionCache() {\n     return shadow(this, \"_localFunctionCache\", new LocalFunctionCache());\n@@ -26525,64 +34117,30 @@\n     }\n     return array;\n   }\n-  static parse({\n-    xref,\n-    isEvalSupported,\n-    fn\n-  }) {\n+  static parse(factory, fn) {\n     const dict = fn.dict || fn;\n     const typeNum = dict.get(\"FunctionType\");\n     switch (typeNum) {\n       case 0:\n-        return this.constructSampled({\n-          xref,\n-          isEvalSupported,\n-          fn,\n-          dict\n-        });\n+        return this.constructSampled(factory, fn, dict);\n       case 1:\n         break;\n       case 2:\n-        return this.constructInterpolated({\n-          xref,\n-          isEvalSupported,\n-          dict\n-        });\n+        return this.constructInterpolated(factory, dict);\n       case 3:\n-        return this.constructStiched({\n-          xref,\n-          isEvalSupported,\n-          dict\n-        });\n+        return this.constructStiched(factory, dict);\n       case 4:\n-        return this.constructPostScript({\n-          xref,\n-          isEvalSupported,\n-          fn,\n-          dict\n-        });\n+        return this.constructPostScript(factory, fn, dict);\n     }\n     throw new FormatError(\"Unknown type of function\");\n   }\n-  static parseArray({\n-    xref,\n-    isEvalSupported,\n-    fnObj\n-  }) {\n-    if (!Array.isArray(fnObj)) {\n-      return this.parse({\n-        xref,\n-        isEvalSupported,\n-        fn: fnObj\n-      });\n-    }\n+  static parseArray(factory, fnObj) {\n+    const {\n+      xref\n+    } = factory;\n     const fnArray = [];\n     for (const fn of fnObj) {\n-      fnArray.push(this.parse({\n-        xref,\n-        isEvalSupported,\n-        fn: xref.fetchIfRef(fn)\n-      }));\n+      fnArray.push(this.parse(factory, xref.fetchIfRef(fn)));\n     }\n     return function (src, srcOffset, dest, destOffset) {\n       for (let i = 0, ii = fnArray.length; i \u003C ii; i++) {\n@@ -26590,12 +34148,7 @@\n       }\n     };\n   }\n-  static constructSampled({\n-    xref,\n-    isEvalSupported,\n-    fn,\n-    dict\n-  }) {\n+  static constructSampled(factory, fn, dict) {\n     function toMultiArray(arr) {\n       const inputLength = arr.length;\n       const out = [];\n@@ -26637,21 +34190,18 @@\n     const samples = this.getSampleArray(size, outputSize, bps, fn);\n     return function constructSampledFn(src, srcOffset, dest, destOffset) {\n       const cubeVertices = 1 \u003C\u003C inputSize;\n-      const cubeN = new Float64Array(cubeVertices);\n+      const cubeN = new Float64Array(cubeVertices).fill(1);\n       const cubeVertex = new Uint32Array(cubeVertices);\n       let i, j;\n-      for (j = 0; j \u003C cubeVertices; j++) {\n-        cubeN[j] = 1;\n-      }\n       let k = outputSize,\n         pos = 1;\n       for (i = 0; i \u003C inputSize; ++i) {\n         const domain_2i = domain[i][0];\n         const domain_2i_1 = domain[i][1];\n-        const xi = Math.min(Math.max(src[srcOffset + i], domain_2i), domain_2i_1);\n+        const xi = MathClamp(src[srcOffset + i], domain_2i, domain_2i_1);\n         let e = interpolate(xi, domain_2i, domain_2i_1, encode[i][0], encode[i][1]);\n         const size_i = size[i];\n-        e = Math.min(Math.max(e, 0), size_i - 1);\n+        e = MathClamp(e, 0, size_i - 1);\n         const e0 = e \u003C size_i - 1 ? Math.floor(e) : e - 1;\n         const n0 = e0 + 1 - e;\n         const n1 = e - e0;\n@@ -26675,15 +34225,11 @@\n           rj += samples[cubeVertex[i] + j] * cubeN[i];\n         }\n         rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);\n-        dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), range[j][1]);\n+        dest[destOffset + j] = MathClamp(rj, range[j][0], range[j][1]);\n       }\n     };\n   }\n-  static constructInterpolated({\n-    xref,\n-    isEvalSupported,\n-    dict\n-  }) {\n+  static constructInterpolated(factory, dict) {\n     const c0 = toNumberArray(dict.getArray(\"C0\")) || [0];\n     const c1 = toNumberArray(dict.getArray(\"C1\")) || [1];\n     const n = dict.get(\"N\");\n@@ -26699,11 +34245,7 @@\n       }\n     };\n   }\n-  static constructStiched({\n-    xref,\n-    isEvalSupported,\n-    dict\n-  }) {\n+  static constructStiched(factory, dict) {\n     const domain = toNumberArray(dict.getArray(\"Domain\"));\n     if (!domain) {\n       throw new FormatError(\"No domain\");\n@@ -26712,27 +34254,18 @@\n     if (inputSize !== 1) {\n       throw new FormatError(\"Bad domain for stiched function\");\n     }\n+    const {\n+      xref\n+    } = factory;\n     const fns = [];\n     for (const fn of dict.get(\"Functions\")) {\n-      fns.push(this.parse({\n-        xref,\n-        isEvalSupported,\n-        fn: xref.fetchIfRef(fn)\n-      }));\n+      fns.push(this.parse(factory, xref.fetchIfRef(fn)));\n     }\n     const bounds = toNumberArray(dict.getArray(\"Bounds\"));\n     const encode = toNumberArray(dict.getArray(\"Encode\"));\n     const tmpBuf = new Float32Array(1);\n     return function constructStichedFn(src, srcOffset, dest, destOffset) {\n-      const clip = function constructStichedFromIRClip(v, min, max) {\n-        if (v > max) {\n-          v = max;\n-        } else if (v \u003C min) {\n-          v = min;\n-        }\n-        return v;\n-      };\n-      const v = clip(src[srcOffset], domain[0], domain[1]);\n+      const v = MathClamp(src[srcOffset], domain[0], domain[1]);\n       const length = bounds.length;\n       let i;\n       for (i = 0; i \u003C length; ++i) {\n@@ -26754,12 +34287,7 @@\n       fns[i](tmpBuf, 0, dest, destOffset);\n     };\n   }\n-  static constructPostScript({\n-    xref,\n-    isEvalSupported,\n-    fn,\n-    dict\n-  }) {\n+  static constructPostScript(factory, fn, dict) {\n     const domain = toNumberArray(dict.getArray(\"Domain\"));\n     const range = toNumberArray(dict.getArray(\"Range\"));\n     if (!domain) {\n@@ -26771,7 +34299,7 @@\n     const lexer = new PostScriptLexer(fn);\n     const parser = new PostScriptParser(lexer);\n     const code = parser.parse();\n-    if (isEvalSupported && FeatureTest.isEvalSupported) {\n+    if (factory.isEvalSupported && FeatureTest.isEvalSupported) {\n       const compiled = new PostScriptCompiler().compile(code, domain, range);\n       if (compiled) {\n         return new Function(\"src\", \"srcOffset\", \"dest\", \"destOffset\", compiled);\n@@ -27442,7 +34970,7 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fbidi.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fbidi.js\n \n const baseTypes = [\"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"S\", \"B\", \"S\", \"WS\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"B\", \"B\", \"S\", \"WS\", \"ON\", \"ON\", \"ET\", \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ES\", \"CS\", \"ES\", \"CS\", \"CS\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"CS\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"CS\", \"ON\", \"ET\", \"ET\", \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"ON\", \"ON\", \"BN\", \"ON\", \"ON\", \"ET\", \"ET\", \"EN\", \"EN\", \"ON\", \"L\", \"ON\", \"ON\", \"ON\", \"EN\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\"];\n const arabicTypes = [\"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"ON\", \"ON\", \"AL\", \"ET\", \"ET\", \"AL\", \"CS\", \"AL\", \"ON\", \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"ET\", \"AN\", \"AN\", \"AL\", \"AL\", \"AL\", \"NSM\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\", \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\"];\n@@ -27461,11 +34989,6 @@\n   }\n   return j;\n }\n-function setValues(arr, start, end, value) {\n-  for (let j = start; j \u003C end; ++j) {\n-    arr[j] = value;\n-  }\n-}\n function reverseValues(arr, start, end) {\n   for (let i = start, j = end - 1; i \u003C j; ++i, --j) {\n     const temp = arr[i];\n@@ -27619,7 +35142,7 @@\n         after = \"R\";\n       }\n       if (before === after) {\n-        setValues(types, i, end, before);\n+        types.fill(before, i, end);\n       }\n       i = end - 1;\n     }\n@@ -27678,7 +35201,17 @@\n   return createBidiText(chars.join(\"\"), isLTR);\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Ffont_substitutions.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Ffont_substitutions.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n \n@@ -27771,1040 +35304,287 @@\n }], [\"ArialNarrow\", {\n   local: [\"Arial Narrow\", \"Liberation Sans Narrow\", \"Helvetica Condensed\", \"Nimbus Sans Narrow\", \"TeX Gyre Heros Cn\"],\n   style: NORMAL,\n-  fallback: \"Helvetica\"\n-}], [\"ArialNarrow-Bold\", {\n-  alias: \"ArialNarrow\",\n-  style: BOLD,\n-  fallback: \"Helvetica-Bold\"\n-}], [\"ArialNarrow-Italic\", {\n-  alias: \"ArialNarrow\",\n-  style: ITALIC,\n-  fallback: \"Helvetica-Oblique\"\n-}], [\"ArialNarrow-BoldItalic\", {\n-  alias: \"ArialNarrow\",\n-  style: BOLDITALIC,\n-  fallback: \"Helvetica-BoldOblique\"\n-}], [\"Calibri\", {\n-  local: [\"Calibri\", \"Carlito\"],\n-  style: NORMAL,\n-  fallback: \"Helvetica\"\n-}], [\"Calibri-Bold\", {\n-  alias: \"Calibri\",\n-  style: BOLD,\n-  fallback: \"Helvetica-Bold\"\n-}], [\"Calibri-Italic\", {\n-  alias: \"Calibri\",\n-  style: ITALIC,\n-  fallback: \"Helvetica-Oblique\"\n-}], [\"Calibri-BoldItalic\", {\n-  alias: \"Calibri\",\n-  style: BOLDITALIC,\n-  fallback: \"Helvetica-BoldOblique\"\n-}], [\"Wingdings\", {\n-  local: [\"Wingdings\", \"URW Dingbats\"],\n-  style: NORMAL\n-}], [\"Wingdings-Regular\", {\n-  alias: \"Wingdings\"\n-}], [\"Wingdings-Bold\", {\n-  alias: \"Wingdings\"\n-}]]);\n-const fontAliases = new Map([[\"Arial-Black\", \"ArialBlack\"]]);\n-function getStyleToAppend(style) {\n-  switch (style) {\n-    case BOLD:\n-      return \"Bold\";\n-    case ITALIC:\n-      return \"Italic\";\n-    case BOLDITALIC:\n-      return \"Bold Italic\";\n-    default:\n-      if (style?.weight === \"bold\") {\n-        return \"Bold\";\n-      }\n-      if (style?.style === \"italic\") {\n-        return \"Italic\";\n-      }\n-  }\n-  return \"\";\n-}\n-function getFamilyName(str) {\n-  const keywords = new Set([\"thin\", \"extralight\", \"ultralight\", \"demilight\", \"semilight\", \"light\", \"book\", \"regular\", \"normal\", \"medium\", \"demibold\", \"semibold\", \"bold\", \"extrabold\", \"ultrabold\", \"black\", \"heavy\", \"extrablack\", \"ultrablack\", \"roman\", \"italic\", \"oblique\", \"ultracondensed\", \"extracondensed\", \"condensed\", \"semicondensed\", \"normal\", \"semiexpanded\", \"expanded\", \"extraexpanded\", \"ultraexpanded\", \"bolditalic\"]);\n-  return str.split(\u002F[- ,+]+\u002Fg).filter(tok => !keywords.has(tok.toLowerCase())).join(\" \");\n-}\n-function generateFont({\n-  alias,\n-  local,\n-  path,\n-  fallback,\n-  style,\n-  ultimate\n-}, src, localFontPath, useFallback = true, usePath = true, append = \"\") {\n-  const result = {\n-    style: null,\n-    ultimate: null\n-  };\n-  if (local) {\n-    const extra = append ? ` ${append}` : \"\";\n-    for (const name of local) {\n-      src.push(`local(${name}${extra})`);\n-    }\n-  }\n-  if (alias) {\n-    const substitution = substitutionMap.get(alias);\n-    const aliasAppend = append || getStyleToAppend(style);\n-    Object.assign(result, generateFont(substitution, src, localFontPath, useFallback && !fallback, usePath && !path, aliasAppend));\n-  }\n-  if (style) {\n-    result.style = style;\n-  }\n-  if (ultimate) {\n-    result.ultimate = ultimate;\n-  }\n-  if (useFallback && fallback) {\n-    const fallbackInfo = substitutionMap.get(fallback);\n-    const {\n-      ultimate: fallbackUltimate\n-    } = generateFont(fallbackInfo, src, localFontPath, useFallback, usePath && !path, append);\n-    result.ultimate ||= fallbackUltimate;\n-  }\n-  if (usePath && path && localFontPath) {\n-    src.push(`url(${localFontPath}${path})`);\n-  }\n-  return result;\n-}\n-function getFontSubstitution(systemFontCache, idFactory, localFontPath, baseFontName, standardFontName, type) {\n-  if (baseFontName.startsWith(\"InvalidPDFjsFont_\")) {\n-    return null;\n-  }\n-  if ((type === \"TrueType\" || type === \"Type1\") && \u002F^[A-Z]{6}\\+\u002F.test(baseFontName)) {\n-    baseFontName = baseFontName.slice(7);\n-  }\n-  baseFontName = normalizeFontName(baseFontName);\n-  const key = baseFontName;\n-  let substitutionInfo = systemFontCache.get(key);\n-  if (substitutionInfo) {\n-    return substitutionInfo;\n-  }\n-  let substitution = substitutionMap.get(baseFontName);\n-  if (!substitution) {\n-    for (const [alias, subst] of fontAliases) {\n-      if (baseFontName.startsWith(alias)) {\n-        baseFontName = `${subst}${baseFontName.substring(alias.length)}`;\n-        substitution = substitutionMap.get(baseFontName);\n-        break;\n-      }\n-    }\n-  }\n-  let mustAddBaseFont = false;\n-  if (!substitution) {\n-    substitution = substitutionMap.get(standardFontName);\n-    mustAddBaseFont = true;\n-  }\n-  const loadedName = `${idFactory.getDocId()}_s${idFactory.createFontId()}`;\n-  if (!substitution) {\n-    if (!validateFontName(baseFontName)) {\n-      warn(`Cannot substitute the font because of its name: ${baseFontName}`);\n-      systemFontCache.set(key, null);\n-      return null;\n-    }\n-    const bold = \u002Fbold\u002Fgi.test(baseFontName);\n-    const italic = \u002Foblique|italic\u002Fgi.test(baseFontName);\n-    const style = bold && italic && BOLDITALIC || bold && BOLD || italic && ITALIC || NORMAL;\n-    substitutionInfo = {\n-      css: `\"${getFamilyName(baseFontName)}\",${loadedName}`,\n-      guessFallback: true,\n-      loadedName,\n-      baseFontName,\n-      src: `local(${baseFontName})`,\n-      style\n-    };\n-    systemFontCache.set(key, substitutionInfo);\n-    return substitutionInfo;\n-  }\n-  const src = [];\n-  if (mustAddBaseFont && validateFontName(baseFontName)) {\n-    src.push(`local(${baseFontName})`);\n-  }\n-  const {\n-    style,\n-    ultimate\n-  } = generateFont(substitution, src, localFontPath);\n-  const guessFallback = ultimate === null;\n-  const fallback = guessFallback ? \"\" : `,${ultimate}`;\n-  substitutionInfo = {\n-    css: `\"${getFamilyName(baseFontName)}\",${loadedName}${fallback}`,\n-    guessFallback,\n-    loadedName,\n-    baseFontName,\n-    src: src.join(\",\"),\n-    style\n-  };\n-  systemFontCache.set(key, substitutionInfo);\n-  return substitutionInfo;\n-}\n-\n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fimage_resizer.js\n-\n-const MIN_IMAGE_DIM = 2048;\n-const MAX_IMAGE_DIM = 65537;\n-const MAX_ERROR = 128;\n-class ImageResizer {\n-  constructor(imgData, isMask) {\n-    this._imgData = imgData;\n-    this._isMask = isMask;\n-  }\n-  static needsToBeResized(width, height) {\n-    if (width \u003C= this._goodSquareLength && height \u003C= this._goodSquareLength) {\n-      return false;\n-    }\n-    const {\n-      MAX_DIM\n-    } = this;\n-    if (width > MAX_DIM || height > MAX_DIM) {\n-      return true;\n-    }\n-    const area = width * height;\n-    if (this._hasMaxArea) {\n-      return area > this.MAX_AREA;\n-    }\n-    if (area \u003C this._goodSquareLength ** 2) {\n-      return false;\n-    }\n-    if (this._areGoodDims(width, height)) {\n-      this._goodSquareLength = Math.max(this._goodSquareLength, Math.floor(Math.sqrt(width * height)));\n-      return false;\n-    }\n-    this._goodSquareLength = this._guessMax(this._goodSquareLength, MAX_DIM, MAX_ERROR, 0);\n-    const maxArea = this.MAX_AREA = this._goodSquareLength ** 2;\n-    return area > maxArea;\n-  }\n-  static get MAX_DIM() {\n-    return shadow(this, \"MAX_DIM\", this._guessMax(MIN_IMAGE_DIM, MAX_IMAGE_DIM, 0, 1));\n-  }\n-  static get MAX_AREA() {\n-    this._hasMaxArea = true;\n-    return shadow(this, \"MAX_AREA\", this._guessMax(ImageResizer._goodSquareLength, this.MAX_DIM, MAX_ERROR, 0) ** 2);\n-  }\n-  static set MAX_AREA(area) {\n-    if (area >= 0) {\n-      this._hasMaxArea = true;\n-      shadow(this, \"MAX_AREA\", area);\n-    }\n-  }\n-  static setMaxArea(area) {\n-    if (!this._hasMaxArea) {\n-      this.MAX_AREA = area >> 2;\n-    }\n-  }\n-  static _areGoodDims(width, height) {\n-    try {\n-      const canvas = new OffscreenCanvas(width, height);\n-      const ctx = canvas.getContext(\"2d\");\n-      ctx.fillRect(0, 0, 1, 1);\n-      const opacity = ctx.getImageData(0, 0, 1, 1).data[3];\n-      canvas.width = canvas.height = 1;\n-      return opacity !== 0;\n-    } catch {\n-      return false;\n-    }\n-  }\n-  static _guessMax(start, end, tolerance, defaultHeight) {\n-    while (start + tolerance + 1 \u003C end) {\n-      const middle = Math.floor((start + end) \u002F 2);\n-      const height = defaultHeight || middle;\n-      if (this._areGoodDims(middle, height)) {\n-        start = middle;\n-      } else {\n-        end = middle;\n-      }\n-    }\n-    return start;\n-  }\n-  static async createImage(imgData, isMask = false) {\n-    return new ImageResizer(imgData, isMask)._createImage();\n-  }\n-  async _createImage() {\n-    const data = this._encodeBMP();\n-    const blob = new Blob([data.buffer], {\n-      type: \"image\u002Fbmp\"\n-    });\n-    const bitmapPromise = createImageBitmap(blob);\n-    const {\n-      MAX_AREA,\n-      MAX_DIM\n-    } = ImageResizer;\n-    const {\n-      _imgData: imgData\n-    } = this;\n-    const {\n-      width,\n-      height\n-    } = imgData;\n-    const minFactor = Math.max(width \u002F MAX_DIM, height \u002F MAX_DIM, Math.sqrt(width * height \u002F MAX_AREA));\n-    const firstFactor = Math.max(minFactor, 2);\n-    const factor = Math.round(10 * (minFactor + 1.25)) \u002F 10 \u002F firstFactor;\n-    const N = Math.floor(Math.log2(factor));\n-    const steps = new Array(N + 2).fill(2);\n-    steps[0] = firstFactor;\n-    steps.splice(-1, 1, factor \u002F (1 \u003C\u003C N));\n-    let newWidth = width;\n-    let newHeight = height;\n-    let bitmap = await bitmapPromise;\n-    for (const step of steps) {\n-      const prevWidth = newWidth;\n-      const prevHeight = newHeight;\n-      newWidth = Math.floor(newWidth \u002F step) - 1;\n-      newHeight = Math.floor(newHeight \u002F step) - 1;\n-      const canvas = new OffscreenCanvas(newWidth, newHeight);\n-      const ctx = canvas.getContext(\"2d\");\n-      ctx.drawImage(bitmap, 0, 0, prevWidth, prevHeight, 0, 0, newWidth, newHeight);\n-      bitmap = canvas.transferToImageBitmap();\n-    }\n-    imgData.data = null;\n-    imgData.bitmap = bitmap;\n-    imgData.width = newWidth;\n-    imgData.height = newHeight;\n-    return imgData;\n-  }\n-  _encodeBMP() {\n-    const {\n-      width,\n-      height,\n-      kind\n-    } = this._imgData;\n-    let data = this._imgData.data;\n-    let bitPerPixel;\n-    let colorTable = new Uint8Array(0);\n-    let maskTable = colorTable;\n-    let compression = 0;\n-    switch (kind) {\n-      case ImageKind.GRAYSCALE_1BPP:\n-        {\n-          bitPerPixel = 1;\n-          colorTable = new Uint8Array(this._isMask ? [255, 255, 255, 255, 0, 0, 0, 0] : [0, 0, 0, 0, 255, 255, 255, 255]);\n-          const rowLen = width + 7 >> 3;\n-          const rowSize = rowLen + 3 & -4;\n-          if (rowLen !== rowSize) {\n-            const newData = new Uint8Array(rowSize * height);\n-            let k = 0;\n-            for (let i = 0, ii = height * rowLen; i \u003C ii; i += rowLen, k += rowSize) {\n-              newData.set(data.subarray(i, i + rowLen), k);\n-            }\n-            data = newData;\n-          }\n-          break;\n-        }\n-      case ImageKind.RGB_24BPP:\n-        {\n-          bitPerPixel = 24;\n-          if (width & 3) {\n-            const rowLen = 3 * width;\n-            const rowSize = rowLen + 3 & -4;\n-            const extraLen = rowSize - rowLen;\n-            const newData = new Uint8Array(rowSize * height);\n-            let k = 0;\n-            for (let i = 0, ii = height * rowLen; i \u003C ii; i += rowLen) {\n-              const row = data.subarray(i, i + rowLen);\n-              for (let j = 0; j \u003C rowLen; j += 3) {\n-                newData[k++] = row[j + 2];\n-                newData[k++] = row[j + 1];\n-                newData[k++] = row[j];\n-              }\n-              k += extraLen;\n-            }\n-            data = newData;\n-          } else {\n-            for (let i = 0, ii = data.length; i \u003C ii; i += 3) {\n-              const tmp = data[i];\n-              data[i] = data[i + 2];\n-              data[i + 2] = tmp;\n-            }\n-          }\n-          break;\n-        }\n-      case ImageKind.RGBA_32BPP:\n-        bitPerPixel = 32;\n-        compression = 3;\n-        maskTable = new Uint8Array(4 + 4 + 4 + 4 + 52);\n-        const view = new DataView(maskTable.buffer);\n-        if (FeatureTest.isLittleEndian) {\n-          view.setUint32(0, 0x000000ff, true);\n-          view.setUint32(4, 0x0000ff00, true);\n-          view.setUint32(8, 0x00ff0000, true);\n-          view.setUint32(12, 0xff000000, true);\n-        } else {\n-          view.setUint32(0, 0xff000000, true);\n-          view.setUint32(4, 0x00ff0000, true);\n-          view.setUint32(8, 0x0000ff00, true);\n-          view.setUint32(12, 0x000000ff, true);\n-        }\n-        break;\n-      default:\n-        throw new Error(\"invalid format\");\n-    }\n-    let i = 0;\n-    const headerLength = 40 + maskTable.length;\n-    const fileLength = 14 + headerLength + colorTable.length + data.length;\n-    const bmpData = new Uint8Array(fileLength);\n-    const view = new DataView(bmpData.buffer);\n-    view.setUint16(i, 0x4d42, true);\n-    i += 2;\n-    view.setUint32(i, fileLength, true);\n-    i += 4;\n-    view.setUint32(i, 0, true);\n-    i += 4;\n-    view.setUint32(i, 14 + headerLength + colorTable.length, true);\n-    i += 4;\n-    view.setUint32(i, headerLength, true);\n-    i += 4;\n-    view.setInt32(i, width, true);\n-    i += 4;\n-    view.setInt32(i, -height, true);\n-    i += 4;\n-    view.setUint16(i, 1, true);\n-    i += 2;\n-    view.setUint16(i, bitPerPixel, true);\n-    i += 2;\n-    view.setUint32(i, compression, true);\n-    i += 4;\n-    view.setUint32(i, 0, true);\n-    i += 4;\n-    view.setInt32(i, 0, true);\n-    i += 4;\n-    view.setInt32(i, 0, true);\n-    i += 4;\n-    view.setUint32(i, colorTable.length \u002F 4, true);\n-    i += 4;\n-    view.setUint32(i, 0, true);\n-    i += 4;\n-    bmpData.set(maskTable, i);\n-    i += maskTable.length;\n-    bmpData.set(colorTable, i);\n-    i += colorTable.length;\n-    bmpData.set(data, i);\n-    return bmpData;\n-  }\n-}\n-ImageResizer._goodSquareLength = MIN_IMAGE_DIM;\n-\n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fshared\u002Fmurmurhash3.js\n-const SEED = 0xc3d2e1f0;\n-const MASK_HIGH = 0xffff0000;\n-const MASK_LOW = 0xffff;\n-class MurmurHash3_64 {\n-  constructor(seed) {\n-    this.h1 = seed ? seed & 0xffffffff : SEED;\n-    this.h2 = seed ? seed & 0xffffffff : SEED;\n-  }\n-  update(input) {\n-    let data, length;\n-    if (typeof input === \"string\") {\n-      data = new Uint8Array(input.length * 2);\n-      length = 0;\n-      for (let i = 0, ii = input.length; i \u003C ii; i++) {\n-        const code = input.charCodeAt(i);\n-        if (code \u003C= 0xff) {\n-          data[length++] = code;\n-        } else {\n-          data[length++] = code >>> 8;\n-          data[length++] = code & 0xff;\n-        }\n-      }\n-    } else if (ArrayBuffer.isView(input)) {\n-      data = input.slice();\n-      length = data.byteLength;\n-    } else {\n-      throw new Error(\"Invalid data format, must be a string or TypedArray.\");\n-    }\n-    const blockCounts = length >> 2;\n-    const tailLength = length - blockCounts * 4;\n-    const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n-    let k1 = 0,\n-      k2 = 0;\n-    let h1 = this.h1,\n-      h2 = this.h2;\n-    const C1 = 0xcc9e2d51,\n-      C2 = 0x1b873593;\n-    const C1_LOW = C1 & MASK_LOW,\n-      C2_LOW = C2 & MASK_LOW;\n-    for (let i = 0; i \u003C blockCounts; i++) {\n-      if (i & 1) {\n-        k1 = dataUint32[i];\n-        k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n-        k1 = k1 \u003C\u003C 15 | k1 >>> 17;\n-        k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n-        h1 ^= k1;\n-        h1 = h1 \u003C\u003C 13 | h1 >>> 19;\n-        h1 = h1 * 5 + 0xe6546b64;\n-      } else {\n-        k2 = dataUint32[i];\n-        k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;\n-        k2 = k2 \u003C\u003C 15 | k2 >>> 17;\n-        k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;\n-        h2 ^= k2;\n-        h2 = h2 \u003C\u003C 13 | h2 >>> 19;\n-        h2 = h2 * 5 + 0xe6546b64;\n-      }\n-    }\n-    k1 = 0;\n-    switch (tailLength) {\n-      case 3:\n-        k1 ^= data[blockCounts * 4 + 2] \u003C\u003C 16;\n-      case 2:\n-        k1 ^= data[blockCounts * 4 + 1] \u003C\u003C 8;\n-      case 1:\n-        k1 ^= data[blockCounts * 4];\n-        k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n-        k1 = k1 \u003C\u003C 15 | k1 >>> 17;\n-        k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n-        if (blockCounts & 1) {\n-          h1 ^= k1;\n-        } else {\n-          h2 ^= k1;\n-        }\n-    }\n-    this.h1 = h1;\n-    this.h2 = h2;\n-  }\n-  hexdigest() {\n-    let h1 = this.h1,\n-      h2 = this.h2;\n-    h1 ^= h2 >>> 1;\n-    h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n-    h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 \u003C\u003C 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n-    h1 ^= h2 >>> 1;\n-    h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n-    h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 \u003C\u003C 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n-    h1 ^= h2 >>> 1;\n-    return (h1 >>> 0).toString(16).padStart(8, \"0\") + (h2 >>> 0).toString(16).padStart(8, \"0\");\n-  }\n-}\n-\n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Foperator_list.js\n-\n-function addState(parentState, pattern, checkFn, iterateFn, processFn) {\n-  let state = parentState;\n-  for (let i = 0, ii = pattern.length - 1; i \u003C ii; i++) {\n-    const item = pattern[i];\n-    state = state[item] ||= [];\n-  }\n-  state[pattern.at(-1)] = {\n-    checkFn,\n-    iterateFn,\n-    processFn\n-  };\n-}\n-const InitialState = [];\n-addState(InitialState, [OPS.save, OPS.transform, OPS.paintInlineImageXObject, OPS.restore], null, function iterateInlineImageGroup(context, i) {\n-  const fnArray = context.fnArray;\n-  const iFirstSave = context.iCurr - 3;\n-  const pos = (i - iFirstSave) % 4;\n-  switch (pos) {\n-    case 0:\n-      return fnArray[i] === OPS.save;\n-    case 1:\n-      return fnArray[i] === OPS.transform;\n-    case 2:\n-      return fnArray[i] === OPS.paintInlineImageXObject;\n-    case 3:\n-      return fnArray[i] === OPS.restore;\n-  }\n-  throw new Error(`iterateInlineImageGroup - invalid pos: ${pos}`);\n-}, function foundInlineImageGroup(context, i) {\n-  const MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;\n-  const MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;\n-  const MAX_WIDTH = 1000;\n-  const IMAGE_PADDING = 1;\n-  const fnArray = context.fnArray,\n-    argsArray = context.argsArray;\n-  const curr = context.iCurr;\n-  const iFirstSave = curr - 3;\n-  const iFirstTransform = curr - 2;\n-  const iFirstPIIXO = curr - 1;\n-  const count = Math.min(Math.floor((i - iFirstSave) \u002F 4), MAX_IMAGES_IN_INLINE_IMAGES_BLOCK);\n-  if (count \u003C MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {\n-    return i - (i - iFirstSave) % 4;\n-  }\n-  let maxX = 0;\n-  const map = [];\n-  let maxLineHeight = 0;\n-  let currentX = IMAGE_PADDING,\n-    currentY = IMAGE_PADDING;\n-  for (let q = 0; q \u003C count; q++) {\n-    const transform = argsArray[iFirstTransform + (q \u003C\u003C 2)];\n-    const img = argsArray[iFirstPIIXO + (q \u003C\u003C 2)][0];\n-    if (currentX + img.width > MAX_WIDTH) {\n-      maxX = Math.max(maxX, currentX);\n-      currentY += maxLineHeight + 2 * IMAGE_PADDING;\n-      currentX = 0;\n-      maxLineHeight = 0;\n-    }\n-    map.push({\n-      transform,\n-      x: currentX,\n-      y: currentY,\n-      w: img.width,\n-      h: img.height\n-    });\n-    currentX += img.width + 2 * IMAGE_PADDING;\n-    maxLineHeight = Math.max(maxLineHeight, img.height);\n-  }\n-  const imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;\n-  const imgHeight = currentY + maxLineHeight + IMAGE_PADDING;\n-  const imgData = new Uint8Array(imgWidth * imgHeight * 4);\n-  const imgRowSize = imgWidth \u003C\u003C 2;\n-  for (let q = 0; q \u003C count; q++) {\n-    const data = argsArray[iFirstPIIXO + (q \u003C\u003C 2)][0].data;\n-    const rowSize = map[q].w \u003C\u003C 2;\n-    let dataOffset = 0;\n-    let offset = map[q].x + map[q].y * imgWidth \u003C\u003C 2;\n-    imgData.set(data.subarray(0, rowSize), offset - imgRowSize);\n-    for (let k = 0, kk = map[q].h; k \u003C kk; k++) {\n-      imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);\n-      dataOffset += rowSize;\n-      offset += imgRowSize;\n-    }\n-    imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);\n-    while (offset >= 0) {\n-      data[offset - 4] = data[offset];\n-      data[offset - 3] = data[offset + 1];\n-      data[offset - 2] = data[offset + 2];\n-      data[offset - 1] = data[offset + 3];\n-      data[offset + rowSize] = data[offset + rowSize - 4];\n-      data[offset + rowSize + 1] = data[offset + rowSize - 3];\n-      data[offset + rowSize + 2] = data[offset + rowSize - 2];\n-      data[offset + rowSize + 3] = data[offset + rowSize - 1];\n-      offset -= imgRowSize;\n-    }\n-  }\n-  const img = {\n-    width: imgWidth,\n-    height: imgHeight\n-  };\n-  if (context.isOffscreenCanvasSupported) {\n-    const canvas = new OffscreenCanvas(imgWidth, imgHeight);\n-    const ctx = canvas.getContext(\"2d\");\n-    ctx.putImageData(new ImageData(new Uint8ClampedArray(imgData.buffer), imgWidth, imgHeight), 0, 0);\n-    img.bitmap = canvas.transferToImageBitmap();\n-    img.data = null;\n-  } else {\n-    img.kind = ImageKind.RGBA_32BPP;\n-    img.data = imgData;\n-  }\n-  fnArray.splice(iFirstSave, count * 4, OPS.paintInlineImageXObjectGroup);\n-  argsArray.splice(iFirstSave, count * 4, [img, map]);\n-  return iFirstSave + 1;\n-});\n-addState(InitialState, [OPS.save, OPS.transform, OPS.paintImageMaskXObject, OPS.restore], null, function iterateImageMaskGroup(context, i) {\n-  const fnArray = context.fnArray;\n-  const iFirstSave = context.iCurr - 3;\n-  const pos = (i - iFirstSave) % 4;\n-  switch (pos) {\n-    case 0:\n-      return fnArray[i] === OPS.save;\n-    case 1:\n-      return fnArray[i] === OPS.transform;\n-    case 2:\n-      return fnArray[i] === OPS.paintImageMaskXObject;\n-    case 3:\n-      return fnArray[i] === OPS.restore;\n-  }\n-  throw new Error(`iterateImageMaskGroup - invalid pos: ${pos}`);\n-}, function foundImageMaskGroup(context, i) {\n-  const MIN_IMAGES_IN_MASKS_BLOCK = 10;\n-  const MAX_IMAGES_IN_MASKS_BLOCK = 100;\n-  const MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;\n-  const fnArray = context.fnArray,\n-    argsArray = context.argsArray;\n-  const curr = context.iCurr;\n-  const iFirstSave = curr - 3;\n-  const iFirstTransform = curr - 2;\n-  const iFirstPIMXO = curr - 1;\n-  let count = Math.floor((i - iFirstSave) \u002F 4);\n-  if (count \u003C MIN_IMAGES_IN_MASKS_BLOCK) {\n-    return i - (i - iFirstSave) % 4;\n-  }\n-  let isSameImage = false;\n-  let iTransform, transformArgs;\n-  const firstPIMXOArg0 = argsArray[iFirstPIMXO][0];\n-  const firstTransformArg0 = argsArray[iFirstTransform][0],\n-    firstTransformArg1 = argsArray[iFirstTransform][1],\n-    firstTransformArg2 = argsArray[iFirstTransform][2],\n-    firstTransformArg3 = argsArray[iFirstTransform][3];\n-  if (firstTransformArg1 === firstTransformArg2) {\n-    isSameImage = true;\n-    iTransform = iFirstTransform + 4;\n-    let iPIMXO = iFirstPIMXO + 4;\n-    for (let q = 1; q \u003C count; q++, iTransform += 4, iPIMXO += 4) {\n-      transformArgs = argsArray[iTransform];\n-      if (argsArray[iPIMXO][0] !== firstPIMXOArg0 || transformArgs[0] !== firstTransformArg0 || transformArgs[1] !== firstTransformArg1 || transformArgs[2] !== firstTransformArg2 || transformArgs[3] !== firstTransformArg3) {\n-        if (q \u003C MIN_IMAGES_IN_MASKS_BLOCK) {\n-          isSameImage = false;\n-        } else {\n-          count = q;\n-        }\n-        break;\n-      }\n-    }\n-  }\n-  if (isSameImage) {\n-    count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);\n-    const positions = new Float32Array(count * 2);\n-    iTransform = iFirstTransform;\n-    for (let q = 0; q \u003C count; q++, iTransform += 4) {\n-      transformArgs = argsArray[iTransform];\n-      positions[q \u003C\u003C 1] = transformArgs[4];\n-      positions[(q \u003C\u003C 1) + 1] = transformArgs[5];\n-    }\n-    fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectRepeat);\n-    argsArray.splice(iFirstSave, count * 4, [firstPIMXOArg0, firstTransformArg0, firstTransformArg1, firstTransformArg2, firstTransformArg3, positions]);\n-  } else {\n-    count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);\n-    const images = [];\n-    for (let q = 0; q \u003C count; q++) {\n-      transformArgs = argsArray[iFirstTransform + (q \u003C\u003C 2)];\n-      const maskParams = argsArray[iFirstPIMXO + (q \u003C\u003C 2)][0];\n-      images.push({\n-        data: maskParams.data,\n-        width: maskParams.width,\n-        height: maskParams.height,\n-        interpolate: maskParams.interpolate,\n-        count: maskParams.count,\n-        transform: transformArgs\n-      });\n-    }\n-    fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectGroup);\n-    argsArray.splice(iFirstSave, count * 4, [images]);\n-  }\n-  return iFirstSave + 1;\n-});\n-addState(InitialState, [OPS.save, OPS.transform, OPS.paintImageXObject, OPS.restore], function (context) {\n-  const argsArray = context.argsArray;\n-  const iFirstTransform = context.iCurr - 2;\n-  return argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0;\n-}, function iterateImageGroup(context, i) {\n-  const fnArray = context.fnArray,\n-    argsArray = context.argsArray;\n-  const iFirstSave = context.iCurr - 3;\n-  const pos = (i - iFirstSave) % 4;\n-  switch (pos) {\n-    case 0:\n-      return fnArray[i] === OPS.save;\n-    case 1:\n-      if (fnArray[i] !== OPS.transform) {\n-        return false;\n-      }\n-      const iFirstTransform = context.iCurr - 2;\n-      const firstTransformArg0 = argsArray[iFirstTransform][0];\n-      const firstTransformArg3 = argsArray[iFirstTransform][3];\n-      if (argsArray[i][0] !== firstTransformArg0 || argsArray[i][1] !== 0 || argsArray[i][2] !== 0 || argsArray[i][3] !== firstTransformArg3) {\n-        return false;\n-      }\n-      return true;\n-    case 2:\n-      if (fnArray[i] !== OPS.paintImageXObject) {\n-        return false;\n-      }\n-      const iFirstPIXO = context.iCurr - 1;\n-      const firstPIXOArg0 = argsArray[iFirstPIXO][0];\n-      if (argsArray[i][0] !== firstPIXOArg0) {\n-        return false;\n-      }\n-      return true;\n-    case 3:\n-      return fnArray[i] === OPS.restore;\n-  }\n-  throw new Error(`iterateImageGroup - invalid pos: ${pos}`);\n-}, function (context, i) {\n-  const MIN_IMAGES_IN_BLOCK = 3;\n-  const MAX_IMAGES_IN_BLOCK = 1000;\n-  const fnArray = context.fnArray,\n-    argsArray = context.argsArray;\n-  const curr = context.iCurr;\n-  const iFirstSave = curr - 3;\n-  const iFirstTransform = curr - 2;\n-  const iFirstPIXO = curr - 1;\n-  const firstPIXOArg0 = argsArray[iFirstPIXO][0];\n-  const firstTransformArg0 = argsArray[iFirstTransform][0];\n-  const firstTransformArg3 = argsArray[iFirstTransform][3];\n-  const count = Math.min(Math.floor((i - iFirstSave) \u002F 4), MAX_IMAGES_IN_BLOCK);\n-  if (count \u003C MIN_IMAGES_IN_BLOCK) {\n-    return i - (i - iFirstSave) % 4;\n-  }\n-  const positions = new Float32Array(count * 2);\n-  let iTransform = iFirstTransform;\n-  for (let q = 0; q \u003C count; q++, iTransform += 4) {\n-    const transformArgs = argsArray[iTransform];\n-    positions[q \u003C\u003C 1] = transformArgs[4];\n-    positions[(q \u003C\u003C 1) + 1] = transformArgs[5];\n-  }\n-  const args = [firstPIXOArg0, firstTransformArg0, firstTransformArg3, positions];\n-  fnArray.splice(iFirstSave, count * 4, OPS.paintImageXObjectRepeat);\n-  argsArray.splice(iFirstSave, count * 4, args);\n-  return iFirstSave + 1;\n-});\n-addState(InitialState, [OPS.beginText, OPS.setFont, OPS.setTextMatrix, OPS.showText, OPS.endText], null, function iterateShowTextGroup(context, i) {\n-  const fnArray = context.fnArray,\n-    argsArray = context.argsArray;\n-  const iFirstSave = context.iCurr - 4;\n-  const pos = (i - iFirstSave) % 5;\n-  switch (pos) {\n-    case 0:\n-      return fnArray[i] === OPS.beginText;\n-    case 1:\n-      return fnArray[i] === OPS.setFont;\n-    case 2:\n-      return fnArray[i] === OPS.setTextMatrix;\n-    case 3:\n-      if (fnArray[i] !== OPS.showText) {\n-        return false;\n-      }\n-      const iFirstSetFont = context.iCurr - 3;\n-      const firstSetFontArg0 = argsArray[iFirstSetFont][0];\n-      const firstSetFontArg1 = argsArray[iFirstSetFont][1];\n-      if (argsArray[i][0] !== firstSetFontArg0 || argsArray[i][1] !== firstSetFontArg1) {\n-        return false;\n-      }\n-      return true;\n-    case 4:\n-      return fnArray[i] === OPS.endText;\n-  }\n-  throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`);\n-}, function (context, i) {\n-  const MIN_CHARS_IN_BLOCK = 3;\n-  const MAX_CHARS_IN_BLOCK = 1000;\n-  const fnArray = context.fnArray,\n-    argsArray = context.argsArray;\n-  const curr = context.iCurr;\n-  const iFirstBeginText = curr - 4;\n-  const iFirstSetFont = curr - 3;\n-  const iFirstSetTextMatrix = curr - 2;\n-  const iFirstShowText = curr - 1;\n-  const iFirstEndText = curr;\n-  const firstSetFontArg0 = argsArray[iFirstSetFont][0];\n-  const firstSetFontArg1 = argsArray[iFirstSetFont][1];\n-  let count = Math.min(Math.floor((i - iFirstBeginText) \u002F 5), MAX_CHARS_IN_BLOCK);\n-  if (count \u003C MIN_CHARS_IN_BLOCK) {\n-    return i - (i - iFirstBeginText) % 5;\n-  }\n-  let iFirst = iFirstBeginText;\n-  if (iFirstBeginText >= 4 && fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] && fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] && fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] && fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] && argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 && argsArray[iFirstBeginText - 4][1] === firstSetFontArg1) {\n-    count++;\n-    iFirst -= 5;\n-  }\n-  let iEndText = iFirst + 4;\n-  for (let q = 1; q \u003C count; q++) {\n-    fnArray.splice(iEndText, 3);\n-    argsArray.splice(iEndText, 3);\n-    iEndText += 2;\n-  }\n-  return iEndText + 1;\n-});\n-class NullOptimizer {\n-  constructor(queue) {\n-    this.queue = queue;\n-  }\n-  _optimize() {}\n-  push(fn, args) {\n-    this.queue.fnArray.push(fn);\n-    this.queue.argsArray.push(args);\n-    this._optimize();\n-  }\n-  flush() {}\n-  reset() {}\n-}\n-class QueueOptimizer extends NullOptimizer {\n-  constructor(queue) {\n-    super(queue);\n-    this.state = null;\n-    this.context = {\n-      iCurr: 0,\n-      fnArray: queue.fnArray,\n-      argsArray: queue.argsArray,\n-      isOffscreenCanvasSupported: false\n-    };\n-    this.match = null;\n-    this.lastProcessed = 0;\n-  }\n-  set isOffscreenCanvasSupported(value) {\n-    this.context.isOffscreenCanvasSupported = value;\n-  }\n-  _optimize() {\n-    const fnArray = this.queue.fnArray;\n-    let i = this.lastProcessed,\n-      ii = fnArray.length;\n-    let state = this.state;\n-    let match = this.match;\n-    if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) {\n-      this.lastProcessed = ii;\n-      return;\n-    }\n-    const context = this.context;\n-    while (i \u003C ii) {\n-      if (match) {\n-        const iterate = (0, match.iterateFn)(context, i);\n-        if (iterate) {\n-          i++;\n-          continue;\n-        }\n-        i = (0, match.processFn)(context, i + 1);\n-        ii = fnArray.length;\n-        match = null;\n-        state = null;\n-        if (i >= ii) {\n-          break;\n-        }\n-      }\n-      state = (state || InitialState)[fnArray[i]];\n-      if (!state || Array.isArray(state)) {\n-        i++;\n-        continue;\n+  fallback: \"Helvetica\"\n+}], [\"ArialNarrow-Bold\", {\n+  alias: \"ArialNarrow\",\n+  style: BOLD,\n+  fallback: \"Helvetica-Bold\"\n+}], [\"ArialNarrow-Italic\", {\n+  alias: \"ArialNarrow\",\n+  style: ITALIC,\n+  fallback: \"Helvetica-Oblique\"\n+}], [\"ArialNarrow-BoldItalic\", {\n+  alias: \"ArialNarrow\",\n+  style: BOLDITALIC,\n+  fallback: \"Helvetica-BoldOblique\"\n+}], [\"Calibri\", {\n+  local: [\"Calibri\", \"Carlito\"],\n+  style: NORMAL,\n+  fallback: \"Helvetica\"\n+}], [\"Calibri-Bold\", {\n+  alias: \"Calibri\",\n+  style: BOLD,\n+  fallback: \"Helvetica-Bold\"\n+}], [\"Calibri-Italic\", {\n+  alias: \"Calibri\",\n+  style: ITALIC,\n+  fallback: \"Helvetica-Oblique\"\n+}], [\"Calibri-BoldItalic\", {\n+  alias: \"Calibri\",\n+  style: BOLDITALIC,\n+  fallback: \"Helvetica-BoldOblique\"\n+}], [\"Wingdings\", {\n+  local: [\"Wingdings\", \"URW Dingbats\"],\n+  style: NORMAL\n+}], [\"Wingdings-Regular\", {\n+  alias: \"Wingdings\"\n+}], [\"Wingdings-Bold\", {\n+  alias: \"Wingdings\"\n+}]]);\n+const fontAliases = new Map([[\"Arial-Black\", \"ArialBlack\"]]);\n+function getStyleToAppend(style) {\n+  switch (style) {\n+    case BOLD:\n+      return \"Bold\";\n+    case ITALIC:\n+      return \"Italic\";\n+    case BOLDITALIC:\n+      return \"Bold Italic\";\n+    default:\n+      if (style?.weight === \"bold\") {\n+        return \"Bold\";\n       }\n-      context.iCurr = i;\n-      i++;\n-      if (state.checkFn && !(0, state.checkFn)(context)) {\n-        state = null;\n-        continue;\n+      if (style?.style === \"italic\") {\n+        return \"Italic\";\n       }\n-      match = state;\n-      state = null;\n-    }\n-    this.state = state;\n-    this.match = match;\n-    this.lastProcessed = i;\n   }\n-  flush() {\n-    while (this.match) {\n-      const length = this.queue.fnArray.length;\n-      this.lastProcessed = (0, this.match.processFn)(this.context, length);\n-      this.match = null;\n-      this.state = null;\n-      this._optimize();\n+  return \"\";\n+}\n+function getFamilyName(str) {\n+  const keywords = new Set([\"thin\", \"extralight\", \"ultralight\", \"demilight\", \"semilight\", \"light\", \"book\", \"regular\", \"normal\", \"medium\", \"demibold\", \"semibold\", \"bold\", \"extrabold\", \"ultrabold\", \"black\", \"heavy\", \"extrablack\", \"ultrablack\", \"roman\", \"italic\", \"oblique\", \"ultracondensed\", \"extracondensed\", \"condensed\", \"semicondensed\", \"normal\", \"semiexpanded\", \"expanded\", \"extraexpanded\", \"ultraexpanded\", \"bolditalic\"]);\n+  return str.split(\u002F[- ,+]+\u002Fg).filter(tok => !keywords.has(tok.toLowerCase())).join(\" \");\n+}\n+function generateFont({\n+  alias,\n+  local,\n+  path,\n+  fallback,\n+  style,\n+  ultimate\n+}, src, localFontPath, useFallback = true, usePath = true, append = \"\") {\n+  const result = {\n+    style: null,\n+    ultimate: null\n+  };\n+  if (local) {\n+    const extra = append ? ` ${append}` : \"\";\n+    for (const name of local) {\n+      src.push(`local(${name}${extra})`);\n     }\n   }\n-  reset() {\n-    this.state = null;\n-    this.match = null;\n-    this.lastProcessed = 0;\n+  if (alias) {\n+    const substitution = substitutionMap.get(alias);\n+    const aliasAppend = append || getStyleToAppend(style);\n+    Object.assign(result, generateFont(substitution, src, localFontPath, useFallback && !fallback, usePath && !path, aliasAppend));\n   }\n-}\n-class OperatorList {\n-  static CHUNK_SIZE = 1000;\n-  static CHUNK_SIZE_ABOUT = this.CHUNK_SIZE - 5;\n-  constructor(intent = 0, streamSink) {\n-    this._streamSink = streamSink;\n-    this.fnArray = [];\n-    this.argsArray = [];\n-    this.optimizer = streamSink && !(intent & RenderingIntentFlag.OPLIST) ? new QueueOptimizer(this) : new NullOptimizer(this);\n-    this.dependencies = new Set();\n-    this._totalLength = 0;\n-    this.weight = 0;\n-    this._resolved = streamSink ? null : Promise.resolve();\n+  if (style) {\n+    result.style = style;\n   }\n-  set isOffscreenCanvasSupported(value) {\n-    this.optimizer.isOffscreenCanvasSupported = value;\n+  if (ultimate) {\n+    result.ultimate = ultimate;\n   }\n-  get length() {\n-    return this.argsArray.length;\n+  if (useFallback && fallback) {\n+    const fallbackInfo = substitutionMap.get(fallback);\n+    const {\n+      ultimate: fallbackUltimate\n+    } = generateFont(fallbackInfo, src, localFontPath, useFallback, usePath && !path, append);\n+    result.ultimate ||= fallbackUltimate;\n   }\n-  get ready() {\n-    return this._resolved || this._streamSink.ready;\n+  if (usePath && path && localFontPath) {\n+    src.push(`url(${localFontPath}${path})`);\n   }\n-  get totalLength() {\n-    return this._totalLength + this.length;\n+  return result;\n+}\n+function getFontSubstitution(systemFontCache, idFactory, localFontPath, baseFontName, standardFontName, type) {\n+  if (baseFontName.startsWith(\"InvalidPDFjsFont_\")) {\n+    return null;\n   }\n-  addOp(fn, args) {\n-    this.optimizer.push(fn, args);\n-    this.weight++;\n-    if (this._streamSink) {\n-      if (this.weight >= OperatorList.CHUNK_SIZE) {\n-        this.flush();\n-      } else if (this.weight >= OperatorList.CHUNK_SIZE_ABOUT && (fn === OPS.restore || fn === OPS.endText)) {\n-        this.flush();\n-      }\n-    }\n+  if ((type === \"TrueType\" || type === \"Type1\") && \u002F^[A-Z]{6}\\+\u002F.test(baseFontName)) {\n+    baseFontName = baseFontName.slice(7);\n   }\n-  addImageOps(fn, args, optionalContent) {\n-    if (optionalContent !== undefined) {\n-      this.addOp(OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n-    }\n-    this.addOp(fn, args);\n-    if (optionalContent !== undefined) {\n-      this.addOp(OPS.endMarkedContent, []);\n-    }\n+  baseFontName = normalizeFontName(baseFontName);\n+  const key = baseFontName;\n+  let substitutionInfo = systemFontCache.get(key);\n+  if (substitutionInfo) {\n+    return substitutionInfo;\n   }\n-  addDependency(dependency) {\n-    if (this.dependencies.has(dependency)) {\n-      return;\n+  let substitution = substitutionMap.get(baseFontName);\n+  if (!substitution) {\n+    for (const [alias, subst] of fontAliases) {\n+      if (baseFontName.startsWith(alias)) {\n+        baseFontName = `${subst}${baseFontName.substring(alias.length)}`;\n+        substitution = substitutionMap.get(baseFontName);\n+        break;\n+      }\n     }\n-    this.dependencies.add(dependency);\n-    this.addOp(OPS.dependency, [dependency]);\n   }\n-  addDependencies(dependencies) {\n-    for (const dependency of dependencies) {\n-      this.addDependency(dependency);\n-    }\n+  let mustAddBaseFont = false;\n+  if (!substitution) {\n+    substitution = substitutionMap.get(standardFontName);\n+    mustAddBaseFont = true;\n   }\n-  addOpList(opList) {\n-    if (!(opList instanceof OperatorList)) {\n-      warn('addOpList - ignoring invalid \"opList\" parameter.');\n-      return;\n-    }\n-    for (const dependency of opList.dependencies) {\n-      this.dependencies.add(dependency);\n-    }\n-    for (let i = 0, ii = opList.length; i \u003C ii; i++) {\n-      this.addOp(opList.fnArray[i], opList.argsArray[i]);\n+  const loadedName = `${idFactory.getDocId()}_s${idFactory.createFontId()}`;\n+  if (!substitution) {\n+    if (!validateFontName(baseFontName)) {\n+      warn(`Cannot substitute the font because of its name: ${baseFontName}`);\n+      systemFontCache.set(key, null);\n+      return null;\n     }\n-  }\n-  getIR() {\n-    return {\n-      fnArray: this.fnArray,\n-      argsArray: this.argsArray,\n-      length: this.length\n+    const bold = \u002Fbold\u002Fgi.test(baseFontName);\n+    const italic = \u002Foblique|italic\u002Fgi.test(baseFontName);\n+    const style = bold && italic && BOLDITALIC || bold && BOLD || italic && ITALIC || NORMAL;\n+    substitutionInfo = {\n+      css: `\"${getFamilyName(baseFontName)}\",${loadedName}`,\n+      guessFallback: true,\n+      loadedName,\n+      baseFontName,\n+      src: `local(${baseFontName})`,\n+      style\n     };\n+    systemFontCache.set(key, substitutionInfo);\n+    return substitutionInfo;\n   }\n-  get _transfers() {\n-    const transfers = [];\n-    const {\n-      fnArray,\n-      argsArray,\n-      length\n-    } = this;\n-    for (let i = 0; i \u003C length; i++) {\n-      switch (fnArray[i]) {\n-        case OPS.paintInlineImageXObject:\n-        case OPS.paintInlineImageXObjectGroup:\n-        case OPS.paintImageMaskXObject:\n-          const arg = argsArray[i][0];\n-          if (!arg.cached && arg.data?.buffer instanceof ArrayBuffer) {\n-            transfers.push(arg.data.buffer);\n-          }\n-          break;\n+  const src = [];\n+  if (mustAddBaseFont && validateFontName(baseFontName)) {\n+    src.push(`local(${baseFontName})`);\n+  }\n+  const {\n+    style,\n+    ultimate\n+  } = generateFont(substitution, src, localFontPath);\n+  const guessFallback = ultimate === null;\n+  const fallback = guessFallback ? \"\" : `,${ultimate}`;\n+  substitutionInfo = {\n+    css: `\"${getFamilyName(baseFontName)}\",${loadedName}${fallback}`,\n+    guessFallback,\n+    loadedName,\n+    baseFontName,\n+    src: src.join(\",\"),\n+    style\n+  };\n+  systemFontCache.set(key, substitutionInfo);\n+  return substitutionInfo;\n+}\n+\n+;\u002F\u002F .\u002Fsrc\u002Fshared\u002Fmurmurhash3.js\n+\n+\n+\n+\n+\n+\n+\n+const SEED = 0xc3d2e1f0;\n+const MASK_HIGH = 0xffff0000;\n+const MASK_LOW = 0xffff;\n+class MurmurHash3_64 {\n+  constructor(seed) {\n+    this.h1 = seed ? seed & 0xffffffff : SEED;\n+    this.h2 = seed ? seed & 0xffffffff : SEED;\n+  }\n+  update(input) {\n+    let data, length;\n+    if (typeof input === \"string\") {\n+      data = new Uint8Array(input.length * 2);\n+      length = 0;\n+      for (let i = 0, ii = input.length; i \u003C ii; i++) {\n+        const code = input.charCodeAt(i);\n+        if (code \u003C= 0xff) {\n+          data[length++] = code;\n+        } else {\n+          data[length++] = code >>> 8;\n+          data[length++] = code & 0xff;\n+        }\n       }\n+    } else if (ArrayBuffer.isView(input)) {\n+      data = input.slice();\n+      length = data.byteLength;\n+    } else {\n+      throw new Error(\"Invalid data format, must be a string or TypedArray.\");\n     }\n-    return transfers;\n+    const blockCounts = length >> 2;\n+    const tailLength = length - blockCounts * 4;\n+    const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n+    let k1 = 0,\n+      k2 = 0;\n+    let h1 = this.h1,\n+      h2 = this.h2;\n+    const C1 = 0xcc9e2d51,\n+      C2 = 0x1b873593;\n+    const C1_LOW = C1 & MASK_LOW,\n+      C2_LOW = C2 & MASK_LOW;\n+    for (let i = 0; i \u003C blockCounts; i++) {\n+      if (i & 1) {\n+        k1 = dataUint32[i];\n+        k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n+        k1 = k1 \u003C\u003C 15 | k1 >>> 17;\n+        k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n+        h1 ^= k1;\n+        h1 = h1 \u003C\u003C 13 | h1 >>> 19;\n+        h1 = h1 * 5 + 0xe6546b64;\n+      } else {\n+        k2 = dataUint32[i];\n+        k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;\n+        k2 = k2 \u003C\u003C 15 | k2 >>> 17;\n+        k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;\n+        h2 ^= k2;\n+        h2 = h2 \u003C\u003C 13 | h2 >>> 19;\n+        h2 = h2 * 5 + 0xe6546b64;\n+      }\n+    }\n+    k1 = 0;\n+    switch (tailLength) {\n+      case 3:\n+        k1 ^= data[blockCounts * 4 + 2] \u003C\u003C 16;\n+      case 2:\n+        k1 ^= data[blockCounts * 4 + 1] \u003C\u003C 8;\n+      case 1:\n+        k1 ^= data[blockCounts * 4];\n+        k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n+        k1 = k1 \u003C\u003C 15 | k1 >>> 17;\n+        k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n+        if (blockCounts & 1) {\n+          h1 ^= k1;\n+        } else {\n+          h2 ^= k1;\n+        }\n+    }\n+    this.h1 = h1;\n+    this.h2 = h2;\n   }\n-  flush(lastChunk = false, separateAnnots = null) {\n-    this.optimizer.flush();\n-    const length = this.length;\n-    this._totalLength += length;\n-    this._streamSink.enqueue({\n-      fnArray: this.fnArray,\n-      argsArray: this.argsArray,\n-      lastChunk,\n-      separateAnnots,\n-      length\n-    }, 1, this._transfers);\n-    this.dependencies.clear();\n-    this.fnArray.length = 0;\n-    this.argsArray.length = 0;\n-    this.weight = 0;\n-    this.optimizer.reset();\n+  hexdigest() {\n+    let h1 = this.h1,\n+      h2 = this.h2;\n+    h1 ^= h2 >>> 1;\n+    h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n+    h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 \u003C\u003C 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n+    h1 ^= h2 >>> 1;\n+    h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n+    h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 \u003C\u003C 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n+    h1 ^= h2 >>> 1;\n+    return (h1 >>> 0).toString(16).padStart(8, \"0\") + (h2 >>> 0).toString(16).padStart(8, \"0\");\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fimage.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fimage.js\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n \n@@ -28814,15 +35594,6 @@\n \n \n \n-function decodeAndClamp(value, addend, coefficient, max) {\n-  value = addend + value * coefficient;\n-  if (value \u003C 0) {\n-    value = 0;\n-  } else if (value > max) {\n-    value = max;\n-  }\n-  return value;\n-}\n function resizeImageMask(src, bpc, w1, h1, w2, h2) {\n   const length = w2 * h2;\n   let dest;\n@@ -28864,10 +35635,10 @@\n     mask = null,\n     isMask = false,\n     pdfFunctionFactory,\n+    globalColorSpaceCache,\n     localColorSpaceCache\n   }) {\n     this.image = image;\n-    let jpxDecode = false;\n     const dict = image.dict;\n     const filter = dict.get(\"F\", \"Filter\");\n     let filterName;\n@@ -28888,7 +35659,18 @@\n           bitsPerComponent: image.bitsPerComponent\n         } = JpxImage.parseImageProperties(image.stream));\n         image.stream.reset();\n-        jpxDecode = true;\n+        const reducePower = ImageResizer.getReducePowerForJPX(image.width, image.height, image.numComps);\n+        this.jpxDecoderOptions = {\n+          numComponents: 0,\n+          isIndexedColormap: false,\n+          smaskInData: dict.has(\"SMaskInData\"),\n+          reducePower\n+        };\n+        if (reducePower) {\n+          const factor = 2 ** reducePower;\n+          image.width = Math.ceil(image.width \u002F factor);\n+          image.height = Math.ceil(image.height \u002F factor);\n+        }\n         break;\n       case \"JBIG2Decode\":\n         image.bitsPerComponent = 1;\n@@ -28901,9 +35683,21 @@\n       warn(\"PDFImage - using the Width\u002FHeight of the image data, \" + \"rather than the image dictionary.\");\n       width = image.width;\n       height = image.height;\n-    }\n-    if (width \u003C 1 || height \u003C 1) {\n-      throw new FormatError(`Invalid image width: ${width} or height: ${height}`);\n+    } else {\n+      const validWidth = typeof width === \"number\" && width > 0,\n+        validHeight = typeof height === \"number\" && height > 0;\n+      if (!validWidth || !validHeight) {\n+        if (!image.fallbackDims) {\n+          throw new FormatError(`Invalid image width: ${width} or height: ${height}`);\n+        }\n+        warn(\"PDFImage - using the Width\u002FHeight of the parent image, for SMask\u002FMask data.\");\n+        if (!validWidth) {\n+          width = image.fallbackDims.width;\n+        }\n+        if (!validHeight) {\n+          height = image.fallbackDims.height;\n+        }\n+      }\n     }\n     this.width = width;\n     this.height = height;\n@@ -28924,31 +35718,41 @@\n     this.bpc = bitsPerComponent;\n     if (!this.imageMask) {\n       let colorSpace = dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\");\n-      if (!colorSpace) {\n-        info(\"JPX images (which do not require color spaces)\");\n-        switch (image.numComps) {\n-          case 1:\n-            colorSpace = Name.get(\"DeviceGray\");\n-            break;\n-          case 3:\n-            colorSpace = Name.get(\"DeviceRGB\");\n-            break;\n-          case 4:\n-            colorSpace = Name.get(\"DeviceCMYK\");\n-            break;\n-          default:\n-            throw new Error(`JPX images with ${image.numComps} color components not supported.`);\n+      const hasColorSpace = !!colorSpace;\n+      if (!hasColorSpace) {\n+        if (this.jpxDecoderOptions) {\n+          colorSpace = Name.get(\"DeviceRGBA\");\n+        } else {\n+          switch (image.numComps) {\n+            case 1:\n+              colorSpace = Name.get(\"DeviceGray\");\n+              break;\n+            case 3:\n+              colorSpace = Name.get(\"DeviceRGB\");\n+              break;\n+            case 4:\n+              colorSpace = Name.get(\"DeviceCMYK\");\n+              break;\n+            default:\n+              throw new Error(`Images with ${image.numComps} color components not supported.`);\n+          }\n         }\n+      } else if (this.jpxDecoderOptions?.smaskInData) {\n+        colorSpace = Name.get(\"DeviceRGBA\");\n       }\n-      this.colorSpace = ColorSpace.parse({\n+      this.colorSpace = ColorSpaceUtils.parse({\n         cs: colorSpace,\n         xref,\n         resources: isInline ? res : null,\n         pdfFunctionFactory,\n+        globalColorSpaceCache,\n         localColorSpaceCache\n       });\n       this.numComps = this.colorSpace.numComps;\n-      this.ignoreColorSpace = jpxDecode && this.colorSpace.name === \"Indexed\";\n+      if (this.jpxDecoderOptions) {\n+        this.jpxDecoderOptions.numComponents = hasColorSpace ? this.numComps : 0;\n+        this.jpxDecoderOptions.isIndexedColormap = this.colorSpace.name === \"Indexed\";\n+      }\n     }\n     this.decode = dict.getArray(\"D\", \"Decode\");\n     this.needsDecode = false;\n@@ -28966,12 +35770,17 @@\n       }\n     }\n     if (smask) {\n+      smask.fallbackDims ??= {\n+        width,\n+        height\n+      };\n       this.smask = new PDFImage({\n         xref,\n         res,\n         image: smask,\n         isInline,\n         pdfFunctionFactory,\n+        globalColorSpaceCache,\n         localColorSpaceCache\n       });\n     } else if (mask) {\n@@ -28981,6 +35790,10 @@\n         if (!imageMask) {\n           warn(\"Ignoring \u002FMask in image without \u002FImageMask.\");\n         } else {\n+          mask.fallbackDims ??= {\n+            width,\n+            height\n+          };\n           this.mask = new PDFImage({\n             xref,\n             res,\n@@ -28988,6 +35801,7 @@\n             isInline,\n             isMask: true,\n             pdfFunctionFactory,\n+            globalColorSpaceCache,\n             localColorSpaceCache\n           });\n         }\n@@ -29002,6 +35816,7 @@\n     image,\n     isInline = false,\n     pdfFunctionFactory,\n+    globalColorSpaceCache,\n     localColorSpaceCache\n   }) {\n     const imageData = image;\n@@ -29030,51 +35845,24 @@\n       smask: smaskData,\n       mask: maskData,\n       pdfFunctionFactory,\n+      globalColorSpaceCache,\n       localColorSpaceCache\n     });\n   }\n-  static createRawMask({\n-    imgArray,\n-    width,\n-    height,\n-    imageIsFromDecodeStream,\n-    inverseDecode,\n-    interpolate\n-  }) {\n-    const computedLength = (width + 7 >> 3) * height;\n-    const actualLength = imgArray.byteLength;\n-    const haveFullData = computedLength === actualLength;\n-    let data, i;\n-    if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {\n-      data = imgArray;\n-    } else if (!inverseDecode) {\n-      data = new Uint8Array(imgArray);\n-    } else {\n-      data = new Uint8Array(computedLength);\n-      data.set(imgArray);\n-      data.fill(0xff, actualLength);\n-    }\n-    if (inverseDecode) {\n-      for (i = 0; i \u003C actualLength; i++) {\n-        data[i] ^= 0xff;\n-      }\n-    }\n-    return {\n-      data,\n-      width,\n-      height,\n-      interpolate\n-    };\n-  }\n   static async createMask({\n-    imgArray,\n-    width,\n-    height,\n-    imageIsFromDecodeStream,\n-    inverseDecode,\n-    interpolate,\n+    image,\n     isOffscreenCanvasSupported = false\n   }) {\n+    const {\n+      dict\n+    } = image;\n+    const width = dict.get(\"W\", \"Width\");\n+    const height = dict.get(\"H\", \"Height\");\n+    const interpolate = dict.get(\"I\", \"Interpolate\");\n+    const decode = dict.getArray(\"D\", \"Decode\");\n+    const inverseDecode = decode?.[0] > 0;\n+    const computedLength = (width + 7 >> 3) * height;\n+    const imgArray = image.getBytes(computedLength);\n     const isSingleOpaquePixel = width === 1 && height === 1 && inverseDecode === (imgArray.length === 0 || !!(imgArray[0] & 128));\n     if (isSingleOpaquePixel) {\n       return {\n@@ -29121,14 +35909,29 @@\n         bitmap\n       };\n     }\n-    return this.createRawMask({\n-      imgArray,\n+    const actualLength = imgArray.byteLength;\n+    const haveFullData = computedLength === actualLength;\n+    let data;\n+    if (image instanceof DecodeStream && (!inverseDecode || haveFullData)) {\n+      data = imgArray;\n+    } else if (!inverseDecode) {\n+      data = new Uint8Array(imgArray);\n+    } else {\n+      data = new Uint8Array(computedLength);\n+      data.set(imgArray);\n+      data.fill(0xff, actualLength);\n+    }\n+    if (inverseDecode) {\n+      for (let i = 0; i \u003C actualLength; i++) {\n+        data[i] ^= 0xff;\n+      }\n+    }\n+    return {\n+      data,\n       width,\n       height,\n-      inverseDecode,\n-      imageIsFromDecodeStream,\n       interpolate\n-    });\n+    };\n   }\n   get drawWidth() {\n     return Math.max(this.width, this.smask?.width || 0, this.mask?.width || 0);\n@@ -29152,7 +35955,7 @@\n     let index = 0;\n     for (i = 0, ii = this.width * this.height; i \u003C ii; i++) {\n       for (let j = 0; j \u003C numComps; j++) {\n-        buffer[index] = decodeAndClamp(buffer[index], decodeAddends[j], decodeCoefficients[j], max);\n+        buffer[index] = MathClamp(decodeAddends[j] + buffer[index] * decodeCoefficients[j], 0, max);\n         index++;\n       }\n     }\n@@ -29232,7 +36035,7 @@\n     }\n     return output;\n   }\n-  fillOpacity(rgbaBuf, width, height, actualHeight, image) {\n+  async fillOpacity(rgbaBuf, width, height, actualHeight, image) {\n     const smask = this.smask;\n     const mask = this.mask;\n     let alphaBuf, sw, sh, i, ii, j;\n@@ -29240,7 +36043,7 @@\n       sw = smask.width;\n       sh = smask.height;\n       alphaBuf = new Uint8ClampedArray(sw * sh);\n-      smask.fillGrayBuffer(alphaBuf);\n+      await smask.fillGrayBuffer(alphaBuf);\n       if (sw !== width || sh !== height) {\n         alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh, width, height);\n       }\n@@ -29250,7 +36053,7 @@\n         sh = mask.height;\n         alphaBuf = new Uint8ClampedArray(sw * sh);\n         mask.numComps = 1;\n-        mask.fillGrayBuffer(alphaBuf);\n+        await mask.fillGrayBuffer(alphaBuf);\n         for (i = 0, ii = sw * sh; i \u003C ii; ++i) {\n           alphaBuf[i] = 255 - alphaBuf[i];\n         }\n@@ -29327,6 +36130,17 @@\n     const bpc = this.bpc;\n     const rowBytes = originalWidth * numComps * bpc + 7 >> 3;\n     const mustBeResized = isOffscreenCanvasSupported && ImageResizer.needsToBeResized(drawWidth, drawHeight);\n+    if (!this.smask && !this.mask && this.colorSpace.name === \"DeviceRGBA\") {\n+      imgData.kind = ImageKind.RGBA_32BPP;\n+      const imgArray = imgData.data = await this.getImageBytes(originalHeight * originalWidth * 4, {});\n+      if (isOffscreenCanvasSupported) {\n+        if (!mustBeResized) {\n+          return this.createBitmap(ImageKind.RGBA_32BPP, drawWidth, drawHeight, imgArray);\n+        }\n+        return ImageResizer.createImage(imgData, false);\n+      }\n+      return imgData;\n+    }\n     if (!forceRGBA) {\n       let kind;\n       if (this.colorSpace.name === \"DeviceGray\" && bpc === 1) {\n@@ -29335,7 +36149,11 @@\n         kind = ImageKind.RGB_24BPP;\n       }\n       if (kind && !this.smask && !this.mask && drawWidth === originalWidth && drawHeight === originalHeight) {\n-        const data = this.getImageBytes(originalHeight * rowBytes, {});\n+        const image = await this.#getImage(originalWidth, originalHeight);\n+        if (image) {\n+          return image;\n+        }\n+        const data = await this.getImageBytes(originalHeight * rowBytes, {});\n         if (isOffscreenCanvasSupported) {\n           if (mustBeResized) {\n             return ImageResizer.createImage({\n@@ -29377,7 +36195,11 @@\n               break;\n           }\n           if (isHandled) {\n-            const rgba = this.getImageBytes(imageLength, {\n+            const image = await this.#getImage(drawWidth, drawHeight);\n+            if (image) {\n+              return image;\n+            }\n+            const rgba = await this.getImageBytes(imageLength, {\n               drawWidth,\n               drawHeight,\n               forceRGBA: true\n@@ -29391,7 +36213,7 @@\n             case \"DeviceRGB\":\n             case \"DeviceCMYK\":\n               imgData.kind = ImageKind.RGB_24BPP;\n-              imgData.data = this.getImageBytes(imageLength, {\n+              imgData.data = await this.getImageBytes(imageLength, {\n                 drawWidth,\n                 drawHeight,\n                 forceRGB: true\n@@ -29404,7 +36226,7 @@\n         }\n       }\n     }\n-    const imgArray = this.getImageBytes(originalHeight * rowBytes, {\n+    const imgArray = await this.getImageBytes(originalHeight * rowBytes, {\n       internal: true\n     });\n     const actualHeight = 0 | imgArray.length \u002F rowBytes * drawHeight \u002F originalHeight;\n@@ -29435,7 +36257,7 @@\n       }\n       alpha01 = 1;\n       maybeUndoPreblend = true;\n-      this.fillOpacity(data, drawWidth, drawHeight, actualHeight, comps);\n+      await this.fillOpacity(data, drawWidth, drawHeight, actualHeight, comps);\n     }\n     if (this.needsDecode) {\n       this.decodeBuffer(comps);\n@@ -29461,7 +36283,7 @@\n     }\n     return imgData;\n   }\n-  fillGrayBuffer(buffer) {\n+  async fillGrayBuffer(buffer) {\n     const numComps = this.numComps;\n     if (numComps !== 1) {\n       throw new FormatError(`Reading gray scale from a color image: ${numComps}`);\n@@ -29470,7 +36292,7 @@\n     const height = this.height;\n     const bpc = this.bpc;\n     const rowBytes = width * numComps * bpc + 7 >> 3;\n-    const imgArray = this.getImageBytes(height * rowBytes, {\n+    const imgArray = await this.getImageBytes(height * rowBytes, {\n       internal: true\n     });\n     const comps = this.getComponents(imgArray);\n@@ -29524,7 +36346,20 @@\n       interpolate: this.interpolate\n     };\n   }\n-  getImageBytes(length, {\n+  async #getImage(width, height) {\n+    const bitmap = await this.image.getTransferableImage();\n+    if (!bitmap) {\n+      return null;\n+    }\n+    return {\n+      data: null,\n+      width,\n+      height,\n+      bitmap,\n+      interpolate: this.interpolate\n+    };\n+  }\n+  async getImageBytes(length, {\n     drawWidth,\n     drawHeight,\n     forceRGBA = false,\n@@ -29536,7 +36371,7 @@\n     this.image.drawHeight = drawHeight || this.height;\n     this.image.forceRGBA = !!forceRGBA;\n     this.image.forceRGB = !!forceRGB;\n-    const imageBytes = this.image.getBytes(length, this.ignoreColorSpace);\n+    const imageBytes = await this.image.getImageData(length, this.jpxDecoderOptions);\n     if (internal || this.image instanceof DecodeStream) {\n       return imageBytes;\n     }\n@@ -29545,7 +36380,25 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fevaluator.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fevaluator.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n \n@@ -29579,11 +36432,16 @@\n   ignoreErrors: false,\n   isEvalSupported: true,\n   isOffscreenCanvasSupported: false,\n+  isImageDecoderSupported: false,\n   canvasMaxAreaInBytes: -1,\n   fontExtraProperties: false,\n   useSystemFonts: true,\n+  useWasm: true,\n+  useWorkerFetch: true,\n   cMapUrl: null,\n-  standardFontDataUrl: null\n+  iccUrl: null,\n+  standardFontDataUrl: null,\n+  wasmUrl: null\n });\n const PatternType = {\n   TILING: 1,\n@@ -29649,9 +36507,19 @@\n   warn(`Unsupported blend mode: ${value.name}`);\n   return \"source-over\";\n }\n-function incrementCachedImageMaskCount(data) {\n-  if (data.fn === OPS.paintImageMaskXObject && data.args[0]?.count > 0) {\n-    data.args[0].count++;\n+function addCachedImageOps(opList, {\n+  objId,\n+  fn,\n+  args,\n+  optionalContent,\n+  hasMask\n+}) {\n+  if (objId) {\n+    opList.addDependency(objId);\n+  }\n+  opList.addImageOps(fn, args, optionalContent, hasMask);\n+  if (fn === OPS.paintImageMaskXObject && args[0]?.count > 0) {\n+    args[0].count++;\n   }\n }\n class TimeSlotManager {\n@@ -29681,6 +36549,7 @@\n     fontCache,\n     builtInCMapCache,\n     standardFontDataCache,\n+    globalColorSpaceCache,\n     globalImageCache,\n     systemFontCache,\n     options = null\n@@ -29692,13 +36561,13 @@\n     this.fontCache = fontCache;\n     this.builtInCMapCache = builtInCMapCache;\n     this.standardFontDataCache = standardFontDataCache;\n+    this.globalColorSpaceCache = globalColorSpaceCache;\n     this.globalImageCache = globalImageCache;\n     this.systemFontCache = systemFontCache;\n     this.options = options || DefaultPartialEvaluatorOptions;\n     this.type3FontRefs = null;\n     this._regionalImageCache = new RegionalImageCache();\n     this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this);\n-    ImageResizer.setMaxArea(this.options.canvasMaxAreaInBytes);\n   }\n   get _pdfFunctionFactory() {\n     const pdfFunctionFactory = new PDFFunctionFactory({\n@@ -29814,24 +36683,18 @@\n       return cachedData;\n     }\n     let data;\n-    if (this.options.cMapUrl !== null) {\n-      const url = `${this.options.cMapUrl}${name}.bcmap`;\n-      const response = await fetch(url);\n-      if (!response.ok) {\n-        throw new Error(`fetchBuiltInCMap: failed to fetch file \"${url}\" with \"${response.statusText}\".`);\n-      }\n+    if (this.options.useWorkerFetch) {\n       data = {\n-        cMapData: new Uint8Array(await response.arrayBuffer()),\n-        compressionType: CMapCompressionType.BINARY\n+        cMapData: await fetchBinaryData(`${this.options.cMapUrl}${name}.bcmap`),\n+        isCompressed: true\n       };\n     } else {\n-      data = await this.handler.sendWithPromise(\"FetchBuiltInCMap\", {\n+      data = await this.handler.sendWithPromise(\"FetchBinaryData\", {\n+        type: \"cMapReaderFactory\",\n         name\n       });\n     }\n-    if (data.compressionType !== CMapCompressionType.NONE) {\n-      this.builtInCMapCache.set(name, data);\n-    }\n+    this.builtInCMapCache.set(name, data);\n     return data;\n   }\n   async fetchStandardFontData(name) {\n@@ -29845,31 +36708,26 @@\n     const standardFontNameToFileName = getFontNameToFileMap(),\n       filename = standardFontNameToFileName[name];\n     let data;\n-    if (this.options.standardFontDataUrl !== null) {\n-      const url = `${this.options.standardFontDataUrl}${filename}`;\n-      const response = await fetch(url);\n-      if (!response.ok) {\n-        warn(`fetchStandardFontData: failed to fetch file \"${url}\" with \"${response.statusText}\".`);\n+    try {\n+      if (this.options.useWorkerFetch) {\n+        data = await fetchBinaryData(`${this.options.standardFontDataUrl}${filename}`);\n       } else {\n-        data = new Uint8Array(await response.arrayBuffer());\n-      }\n-    } else {\n-      try {\n-        data = await this.handler.sendWithPromise(\"FetchStandardFontData\", {\n+        data = await this.handler.sendWithPromise(\"FetchBinaryData\", {\n+          type: \"standardFontDataFactory\",\n           filename\n         });\n-      } catch (e) {\n-        warn(`fetchStandardFontData: failed to fetch file \"${filename}\" with \"${e}\".`);\n       }\n-    }\n-    if (!data) {\n+    } catch (ex) {\n+      warn(ex);\n       return null;\n     }\n     this.standardFontDataCache.set(name, data);\n     return new Stream(data);\n   }\n-  async buildFormXObject(resources, xobj, smask, operatorList, task, initialState, localColorSpaceCache) {\n-    const dict = xobj.dict;\n+  async buildFormXObject(resources, xobj, smask, operatorList, task, initialState, localColorSpaceCache, seenRefs) {\n+    const {\n+      dict\n+    } = xobj;\n     const matrix = lookupMatrix(dict.getArray(\"Matrix\"), null);\n     const bbox = lookupNormalRect(dict.getArray(\"BBox\"), null);\n     let optionalContent, groupOptions;\n@@ -29894,33 +36752,28 @@\n         groupOptions.isolated = group.get(\"I\") || false;\n         groupOptions.knockout = group.get(\"K\") || false;\n         if (group.has(\"CS\")) {\n-          const cs = group.getRaw(\"CS\");\n-          const cachedColorSpace = ColorSpace.getCached(cs, this.xref, localColorSpaceCache);\n-          if (cachedColorSpace) {\n-            colorSpace = cachedColorSpace;\n-          } else {\n-            colorSpace = await this.parseColorSpace({\n-              cs,\n-              resources,\n-              localColorSpaceCache\n-            });\n-          }\n+          const cs = this._getColorSpace(group.getRaw(\"CS\"), resources, localColorSpaceCache);\n+          colorSpace = cs instanceof ColorSpace ? cs : await this._handleColorSpace(cs);\n         }\n       }\n       if (smask?.backdrop) {\n-        colorSpace ||= ColorSpace.singletons.rgb;\n-        smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);\n+        colorSpace ||= ColorSpaceUtils.rgb;\n+        smask.backdrop = colorSpace.getRgbHex(smask.backdrop, 0);\n       }\n       operatorList.addOp(OPS.beginGroup, [groupOptions]);\n     }\n-    const args = group ? [matrix, null] : [matrix, bbox];\n+    const f32matrix = matrix && new Float32Array(matrix);\n+    const f32bbox = !group && bbox && new Float32Array(bbox) || null;\n+    const args = [f32matrix, f32bbox];\n     operatorList.addOp(OPS.paintFormXObjectBegin, args);\n+    const localResources = dict.get(\"Resources\");\n     await this.getOperatorList({\n       stream: xobj,\n       task,\n-      resources: dict.get(\"Resources\") || resources,\n+      resources: localResources instanceof Dict ? localResources : resources,\n       operatorList,\n-      initialState\n+      initialState,\n+      prevRefs: seenRefs\n     });\n     operatorList.addOp(OPS.paintFormXObjectEnd, []);\n     if (group) {\n@@ -29946,7 +36799,14 @@\n     localImageCache,\n     localColorSpaceCache\n   }) {\n-    const dict = image.dict;\n+    const {\n+      maxImageSize,\n+      ignoreErrors,\n+      isOffscreenCanvasSupported\n+    } = this.options;\n+    const {\n+      dict\n+    } = image;\n     const imageRef = dict.objId;\n     const w = dict.get(\"W\", \"Width\");\n     const h = dict.get(\"H\", \"Height\");\n@@ -29954,41 +36814,32 @@\n       warn(\"Image dimensions are missing, or not numbers.\");\n       return;\n     }\n-    const maxImageSize = this.options.maxImageSize;\n     if (maxImageSize !== -1 && w * h > maxImageSize) {\n       const msg = \"Image exceeded maximum allowed size and was removed.\";\n-      if (this.options.ignoreErrors) {\n-        warn(msg);\n-        return;\n+      if (!ignoreErrors) {\n+        throw new Error(msg);\n       }\n-      throw new Error(msg);\n+      warn(msg);\n+      return;\n     }\n     let optionalContent;\n     if (dict.has(\"OC\")) {\n       optionalContent = await this.parseMarkedContentProps(dict.get(\"OC\"), resources);\n     }\n     const imageMask = dict.get(\"IM\", \"ImageMask\") || false;\n-    let imgData, args;\n+    let imgData, fn, args;\n     if (imageMask) {\n-      const interpolate = dict.get(\"I\", \"Interpolate\");\n-      const bitStrideLength = w + 7 >> 3;\n-      const imgArray = image.getBytes(bitStrideLength * h);\n-      const decode = dict.getArray(\"D\", \"Decode\");\n-      if (this.parsingType3Font) {\n-        imgData = PDFImage.createRawMask({\n-          imgArray,\n-          width: w,\n-          height: h,\n-          imageIsFromDecodeStream: image instanceof DecodeStream,\n-          inverseDecode: decode?.[0] > 0,\n-          interpolate\n-        });\n-        imgData.cached = !!cacheKey;\n-        args = [imgData];\n-        operatorList.addImageOps(OPS.paintImageMaskXObject, args, optionalContent);\n+      imgData = await PDFImage.createMask({\n+        image,\n+        isOffscreenCanvasSupported: isOffscreenCanvasSupported && !this.parsingType3Font\n+      });\n+      if (imgData.isSingleOpaquePixel) {\n+        fn = OPS.paintSolidColorImageMask;\n+        args = [];\n+        operatorList.addImageOps(fn, args, optionalContent);\n         if (cacheKey) {\n           const cacheData = {\n-            fn: OPS.paintImageMaskXObject,\n+            fn,\n             args,\n             optionalContent\n           };\n@@ -29999,34 +36850,21 @@\n         }\n         return;\n       }\n-      imgData = await PDFImage.createMask({\n-        imgArray,\n-        width: w,\n-        height: h,\n-        imageIsFromDecodeStream: image instanceof DecodeStream,\n-        inverseDecode: decode?.[0] > 0,\n-        interpolate,\n-        isOffscreenCanvasSupported: this.options.isOffscreenCanvasSupported\n-      });\n-      if (imgData.isSingleOpaquePixel) {\n-        operatorList.addImageOps(OPS.paintSolidColorImageMask, [], optionalContent);\n-        if (cacheKey) {\n-          const cacheData = {\n-            fn: OPS.paintSolidColorImageMask,\n-            args: [],\n-            optionalContent\n-          };\n-          localImageCache.set(cacheKey, imageRef, cacheData);\n-          if (imageRef) {\n-            this._regionalImageCache.set(null, imageRef, cacheData);\n-          }\n+      if (this.parsingType3Font) {\n+        args = compileType3Glyph(imgData);\n+        if (args) {\n+          operatorList.addImageOps(OPS.constructPath, args, optionalContent);\n+          return;\n         }\n+        warn(\"Cannot compile Type3 glyph.\");\n+        operatorList.addImageOps(OPS.paintImageMaskXObject, [imgData], optionalContent);\n         return;\n       }\n       const objId = `mask_${this.idFactory.createObjId()}`;\n       operatorList.addDependency(objId);\n       imgData.dataLen = imgData.bitmap ? imgData.width * imgData.height * 4 : imgData.data.length;\n       this._sendImgData(objId, imgData);\n+      fn = OPS.paintImageMaskXObject;\n       args = [{\n         data: objId,\n         width: imgData.width,\n@@ -30034,10 +36872,11 @@\n         interpolate: imgData.interpolate,\n         count: 1\n       }];\n-      operatorList.addImageOps(OPS.paintImageMaskXObject, args, optionalContent);\n+      operatorList.addImageOps(fn, args, optionalContent);\n       if (cacheKey) {\n         const cacheData = {\n-          fn: OPS.paintImageMaskXObject,\n+          objId,\n+          fn,\n           args,\n           optionalContent\n         };\n@@ -30049,7 +36888,8 @@\n       return;\n     }\n     const SMALL_IMAGE_DIMENSIONS = 200;\n-    if (isInline && w + h \u003C SMALL_IMAGE_DIMENSIONS && !dict.has(\"SMask\") && !dict.has(\"Mask\")) {\n+    const hasMask = dict.has(\"SMask\") || dict.has(\"Mask\");\n+    if (isInline && w + h \u003C SMALL_IMAGE_DIMENSIONS && !hasMask) {\n       try {\n         const imageObj = new PDFImage({\n           xref: this.xref,\n@@ -30057,14 +36897,14 @@\n           image,\n           isInline,\n           pdfFunctionFactory: this._pdfFunctionFactory,\n+          globalColorSpaceCache: this.globalColorSpaceCache,\n           localColorSpaceCache\n         });\n         imgData = await imageObj.createImageData(true, false);\n-        operatorList.isOffscreenCanvasSupported = this.options.isOffscreenCanvasSupported;\n         operatorList.addImageOps(OPS.paintInlineImageXObject, [imgData], optionalContent);\n       } catch (reason) {\n         const msg = `Unable to decode inline image: \"${reason}\".`;\n-        if (!this.options.ignoreErrors) {\n+        if (!ignoreErrors) {\n           throw new Error(msg);\n         }\n         warn(msg);\n@@ -30072,7 +36912,8 @@\n       return;\n     }\n     let objId = `img_${this.idFactory.createObjId()}`,\n-      cacheGlobally = false;\n+      cacheGlobally = false,\n+      globalCacheData = null;\n     if (this.parsingType3Font) {\n       objId = `${this.idFactory.getDocId()}_type3_${objId}`;\n     } else if (cacheKey && imageRef) {\n@@ -30083,32 +36924,29 @@\n       }\n     }\n     operatorList.addDependency(objId);\n+    fn = OPS.paintImageXObject;\n     args = [objId, w, h];\n-    operatorList.addImageOps(OPS.paintImageXObject, args, optionalContent);\n+    operatorList.addImageOps(fn, args, optionalContent, hasMask);\n     if (cacheGlobally) {\n+      globalCacheData = {\n+        objId,\n+        fn,\n+        args,\n+        optionalContent,\n+        hasMask,\n+        byteSize: 0\n+      };\n       if (this.globalImageCache.hasDecodeFailed(imageRef)) {\n-        this.globalImageCache.setData(imageRef, {\n-          objId,\n-          fn: OPS.paintImageXObject,\n-          args,\n-          optionalContent,\n-          byteSize: 0\n-        });\n+        this.globalImageCache.setData(imageRef, globalCacheData);\n         this._sendImgData(objId, null, cacheGlobally);\n         return;\n       }\n-      if (w * h > 250000 || dict.has(\"SMask\") || dict.has(\"Mask\")) {\n+      if (w * h > 250000 || hasMask) {\n         const localLength = await this.handler.sendWithPromise(\"commonobj\", [objId, \"CopyLocalImage\", {\n           imageRef\n         }]);\n         if (localLength) {\n-          this.globalImageCache.setData(imageRef, {\n-            objId,\n-            fn: OPS.paintImageXObject,\n-            args,\n-            optionalContent,\n-            byteSize: 0\n-          });\n+          this.globalImageCache.setData(imageRef, globalCacheData);\n           this.globalImageCache.addByteSize(imageRef, localLength);\n           return;\n         }\n@@ -30120,9 +36958,10 @@\n       image,\n       isInline,\n       pdfFunctionFactory: this._pdfFunctionFactory,\n+      globalColorSpaceCache: this.globalColorSpaceCache,\n       localColorSpaceCache\n     }).then(async imageObj => {\n-      imgData = await imageObj.createImageData(false, this.options.isOffscreenCanvasSupported);\n+      imgData = await imageObj.createImageData(false, isOffscreenCanvasSupported);\n       imgData.dataLen = imgData.bitmap ? imgData.width * imgData.height * 4 : imgData.data.length;\n       imgData.ref = imageRef;\n       if (cacheGlobally) {\n@@ -30138,26 +36977,23 @@\n     });\n     if (cacheKey) {\n       const cacheData = {\n-        fn: OPS.paintImageXObject,\n+        objId,\n+        fn,\n         args,\n-        optionalContent\n+        optionalContent,\n+        hasMask\n       };\n       localImageCache.set(cacheKey, imageRef, cacheData);\n       if (imageRef) {\n         this._regionalImageCache.set(null, imageRef, cacheData);\n         if (cacheGlobally) {\n-          this.globalImageCache.setData(imageRef, {\n-            objId,\n-            fn: OPS.paintImageXObject,\n-            args,\n-            optionalContent,\n-            byteSize: 0\n-          });\n+          assert(globalCacheData, \"The global cache-data must be available.\");\n+          this.globalImageCache.setData(imageRef, globalCacheData);\n         }\n       }\n     }\n   }\n-  handleSMask(smask, resources, operatorList, task, stateManager, localColorSpaceCache) {\n+  handleSMask(smask, resources, operatorList, task, stateManager, localColorSpaceCache, seenRefs) {\n     const smaskContent = smask.get(\"G\");\n     const smaskOptions = {\n       subtype: smask.get(\"S\").name,\n@@ -30175,7 +37011,9 @@\n       }\n       smaskOptions.transferMap = transferMap;\n     }\n-    return this.buildFormXObject(resources, smaskContent, smaskOptions, operatorList, task, stateManager.state.clone(), localColorSpaceCache);\n+    return this.buildFormXObject(resources, smaskContent, smaskOptions, operatorList, task, stateManager.state.clone({\n+      newPath: true\n+    }), localColorSpaceCache, seenRefs);\n   }\n   handleTransferFunction(tr) {\n     let transferArray;\n@@ -30252,19 +37090,9 @@\n   }\n   async handleSetFont(resources, fontArgs, fontRef, operatorList, task, state, fallbackFontDict = null, cssFontInfo = null) {\n     const fontName = fontArgs?.[0] instanceof Name ? fontArgs[0].name : null;\n-    let translated = await this.loadFont(fontName, fontRef, resources, fallbackFontDict, cssFontInfo);\n+    const translated = await this.loadFont(fontName, fontRef, resources, task, fallbackFontDict, cssFontInfo);\n     if (translated.font.isType3Font) {\n-      try {\n-        await translated.loadType3Data(this, resources, task);\n-        operatorList.addDependencies(translated.type3Dependencies);\n-      } catch (reason) {\n-        translated = new TranslatedFont({\n-          loadedName: \"g_font_error\",\n-          font: new ErrorFont(`Type3 font load error: ${reason}`),\n-          dict: translated.font,\n-          evaluatorOptions: this.options\n-        });\n-      }\n+      operatorList.addDependencies(translated.type3Dependencies);\n     }\n     state.font = translated.font;\n     translated.send(this.handler);\n@@ -30275,7 +37103,7 @@\n     const glyphs = font.charsToGlyphs(chars);\n     if (font.data) {\n       const isAddToPathSet = !!(state.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG);\n-      if (isAddToPathSet || state.fillColorSpace.name === \"Pattern\" || font.disableFontFace || this.options.disableFontFace) {\n+      if (isAddToPathSet || state.fillColorSpace.name === \"Pattern\" || font.disableFontFace) {\n         PartialEvaluator.buildFontPaths(font, glyphs, this.handler, this.options);\n       }\n     }\n@@ -30300,18 +37128,24 @@\n     task,\n     stateManager,\n     localGStateCache,\n-    localColorSpaceCache\n+    localColorSpaceCache,\n+    seenRefs\n   }) {\n     const gStateRef = gState.objId;\n     let isSimpleGState = true;\n     const gStateObj = [];\n     let promise = Promise.resolve();\n-    for (const key of gState.getKeys()) {\n-      const value = gState.get(key);\n+    for (const [key, value] of gState) {\n       switch (key) {\n         case \"Type\":\n           break;\n         case \"LW\":\n+          if (typeof value !== \"number\") {\n+            warn(`Invalid LW (line width): ${value}`);\n+            break;\n+          }\n+          gStateObj.push([key, Math.abs(value)]);\n+          break;\n         case \"LC\":\n         case \"LJ\":\n         case \"ML\":\n@@ -30339,7 +37173,7 @@\n           }\n           if (value instanceof Dict) {\n             isSimpleGState = false;\n-            promise = promise.then(() => this.handleSMask(value, resources, operatorList, task, stateManager, localColorSpaceCache));\n+            promise = promise.then(() => this.handleSMask(value, resources, operatorList, task, stateManager, localColorSpaceCache, seenRefs));\n             gStateObj.push([key, true]);\n           } else {\n             warn(\"Unsupported SMask type\");\n@@ -30377,15 +37211,12 @@\n       localGStateCache.set(cacheKey, gStateRef, gStateObj);\n     }\n   }\n-  loadFont(fontName, font, resources, fallbackFontDict = null, cssFontInfo = null) {\n-    const errorFont = async () => {\n-      return new TranslatedFont({\n-        loadedName: \"g_font_error\",\n-        font: new ErrorFont(`Font \"${fontName}\" is not available.`),\n-        dict: font,\n-        evaluatorOptions: this.options\n-      });\n-    };\n+  loadFont(fontName, font, resources, task, fallbackFontDict = null, cssFontInfo = null) {\n+    const errorFont = async () => new TranslatedFont({\n+      loadedName: \"g_font_error\",\n+      font: new ErrorFont(`Font \"${fontName}\" is not available.`),\n+      dict: font\n+    });\n     let fontRef;\n     if (font) {\n       if (font instanceof Ref) {\n@@ -30467,98 +37298,130 @@\n       this.fontCache.put(font.cacheKey, promise);\n     }\n     font.loadedName = `${this.idFactory.getDocId()}_${fontID}`;\n-    this.translateFont(preEvaluatedFont).then(translatedFont => {\n-      resolve(new TranslatedFont({\n+    this.translateFont(preEvaluatedFont).then(async translatedFont => {\n+      const translated = new TranslatedFont({\n         loadedName: font.loadedName,\n         font: translatedFont,\n-        dict: font,\n-        evaluatorOptions: this.options\n-      }));\n+        dict: font\n+      });\n+      if (translatedFont.isType3Font) {\n+        try {\n+          await translated.loadType3Data(this, resources, task);\n+        } catch (reason) {\n+          throw new Error(`Type3 font load error: ${reason}`);\n+        }\n+      }\n+      resolve(translated);\n     }).catch(reason => {\n       warn(`loadFont - translateFont failed: \"${reason}\".`);\n       resolve(new TranslatedFont({\n         loadedName: font.loadedName,\n-        font: new ErrorFont(reason instanceof Error ? reason.message : reason),\n-        dict: font,\n-        evaluatorOptions: this.options\n+        font: new ErrorFont(reason?.message),\n+        dict: font\n       }));\n     });\n     return promise;\n   }\n-  buildPath(operatorList, fn, args, parsingText = false) {\n-    const lastIndex = operatorList.length - 1;\n-    if (!args) {\n-      args = [];\n-    }\n-    if (lastIndex \u003C 0 || operatorList.fnArray[lastIndex] !== OPS.constructPath) {\n-      if (parsingText) {\n-        warn(`Encountered path operator \"${fn}\" inside of a text object.`);\n-        operatorList.addOp(OPS.save, null);\n-      }\n-      let minMax;\n-      switch (fn) {\n-        case OPS.rectangle:\n-          const x = args[0] + args[2];\n-          const y = args[1] + args[3];\n-          minMax = [Math.min(args[0], x), Math.min(args[1], y), Math.max(args[0], x), Math.max(args[1], y)];\n-          break;\n-        case OPS.moveTo:\n-        case OPS.lineTo:\n-          minMax = [args[0], args[1], args[0], args[1]];\n+  buildPath(fn, args, state) {\n+    const {\n+      pathMinMax: minMax,\n+      pathBuffer\n+    } = state;\n+    switch (fn | 0) {\n+      case OPS.rectangle:\n+        {\n+          const x = state.currentPointX = args[0];\n+          const y = state.currentPointY = args[1];\n+          const width = args[2];\n+          const height = args[3];\n+          const xw = x + width;\n+          const yh = y + height;\n+          if (width === 0 || height === 0) {\n+            pathBuffer.push(DrawOPS.moveTo, x, y, DrawOPS.lineTo, xw, yh, DrawOPS.closePath);\n+          } else {\n+            pathBuffer.push(DrawOPS.moveTo, x, y, DrawOPS.lineTo, xw, y, DrawOPS.lineTo, xw, yh, DrawOPS.lineTo, x, yh, DrawOPS.closePath);\n+          }\n+          Util.rectBoundingBox(x, y, xw, yh, minMax);\n           break;\n-        default:\n-          minMax = [Infinity, Infinity, -Infinity, -Infinity];\n+        }\n+      case OPS.moveTo:\n+        {\n+          const x = state.currentPointX = args[0];\n+          const y = state.currentPointY = args[1];\n+          pathBuffer.push(DrawOPS.moveTo, x, y);\n+          Util.pointBoundingBox(x, y, minMax);\n           break;\n-      }\n-      operatorList.addOp(OPS.constructPath, [[fn], args, minMax]);\n-      if (parsingText) {\n-        operatorList.addOp(OPS.restore, null);\n-      }\n-    } else {\n-      const opArgs = operatorList.argsArray[lastIndex];\n-      opArgs[0].push(fn);\n-      opArgs[1].push(...args);\n-      const minMax = opArgs[2];\n-      switch (fn) {\n-        case OPS.rectangle:\n-          const x = args[0] + args[2];\n-          const y = args[1] + args[3];\n-          minMax[0] = Math.min(minMax[0], args[0], x);\n-          minMax[1] = Math.min(minMax[1], args[1], y);\n-          minMax[2] = Math.max(minMax[2], args[0], x);\n-          minMax[3] = Math.max(minMax[3], args[1], y);\n+        }\n+      case OPS.lineTo:\n+        {\n+          const x = state.currentPointX = args[0];\n+          const y = state.currentPointY = args[1];\n+          pathBuffer.push(DrawOPS.lineTo, x, y);\n+          Util.pointBoundingBox(x, y, minMax);\n           break;\n-        case OPS.moveTo:\n-        case OPS.lineTo:\n-          minMax[0] = Math.min(minMax[0], args[0]);\n-          minMax[1] = Math.min(minMax[1], args[1]);\n-          minMax[2] = Math.max(minMax[2], args[0]);\n-          minMax[3] = Math.max(minMax[3], args[1]);\n+        }\n+      case OPS.curveTo:\n+        {\n+          const startX = state.currentPointX;\n+          const startY = state.currentPointY;\n+          const [x1, y1, x2, y2, x, y] = args;\n+          state.currentPointX = x;\n+          state.currentPointY = y;\n+          pathBuffer.push(DrawOPS.curveTo, x1, y1, x2, y2, x, y);\n+          Util.bezierBoundingBox(startX, startY, x1, y1, x2, y2, x, y, minMax);\n           break;\n-      }\n+        }\n+      case OPS.curveTo2:\n+        {\n+          const startX = state.currentPointX;\n+          const startY = state.currentPointY;\n+          const [x1, y1, x, y] = args;\n+          state.currentPointX = x;\n+          state.currentPointY = y;\n+          pathBuffer.push(DrawOPS.curveTo, startX, startY, x1, y1, x, y);\n+          Util.bezierBoundingBox(startX, startY, startX, startY, x1, y1, x, y, minMax);\n+          break;\n+        }\n+      case OPS.curveTo3:\n+        {\n+          const startX = state.currentPointX;\n+          const startY = state.currentPointY;\n+          const [x1, y1, x, y] = args;\n+          state.currentPointX = x;\n+          state.currentPointY = y;\n+          pathBuffer.push(DrawOPS.curveTo, x1, y1, x, y, x, y);\n+          Util.bezierBoundingBox(startX, startY, x1, y1, x, y, x, y, minMax);\n+          break;\n+        }\n+      case OPS.closePath:\n+        pathBuffer.push(DrawOPS.closePath);\n+        break;\n     }\n   }\n-  parseColorSpace({\n-    cs,\n-    resources,\n-    localColorSpaceCache\n-  }) {\n-    return ColorSpace.parseAsync({\n+  _getColorSpace(cs, resources, localColorSpaceCache) {\n+    return ColorSpaceUtils.parse({\n       cs,\n       xref: this.xref,\n       resources,\n       pdfFunctionFactory: this._pdfFunctionFactory,\n-      localColorSpaceCache\n-    }).catch(reason => {\n-      if (reason instanceof AbortException) {\n+      globalColorSpaceCache: this.globalColorSpaceCache,\n+      localColorSpaceCache,\n+      asyncIfNotCached: true\n+    });\n+  }\n+  async _handleColorSpace(csPromise) {\n+    try {\n+      return await csPromise;\n+    } catch (ex) {\n+      if (ex instanceof AbortException) {\n         return null;\n       }\n       if (this.options.ignoreErrors) {\n-        warn(`parseColorSpace - ignoring ColorSpace: \"${reason}\".`);\n+        warn(`_handleColorSpace - ignoring ColorSpace: \"${ex}\".`);\n         return null;\n       }\n-      throw reason;\n-    });\n+      throw ex;\n+    }\n   }\n   parseShading({\n     shading,\n@@ -30572,7 +37435,7 @@\n     }\n     let patternIR;\n     try {\n-      const shadingFill = Pattern.parseShading(shading, this.xref, resources, this._pdfFunctionFactory, localColorSpaceCache);\n+      const shadingFill = Pattern.parseShading(shading, this.xref, resources, this._pdfFunctionFactory, this.globalColorSpaceCache, localColorSpaceCache);\n       patternIR = shadingFill.getIR();\n     } catch (reason) {\n       if (reason instanceof AbortException) {\n@@ -30604,7 +37467,7 @@\n       const localTilingPattern = rawPattern instanceof Ref && localTilingPatternCache.getByRef(rawPattern);\n       if (localTilingPattern) {\n         try {\n-          const color = cs.base ? cs.base.getRgb(args, 0) : null;\n+          const color = cs.base ? cs.base.getRgbHex(args, 0) : null;\n           const tilingPatternIR = getTilingPatternIR(localTilingPattern.operatorListIR, localTilingPattern.dict, color);\n           operatorList.addOp(fn, tilingPatternIR);\n           return undefined;\n@@ -30615,7 +37478,7 @@\n         const dict = pattern instanceof BaseStream ? pattern.dict : pattern;\n         const typeNum = dict.get(\"PatternType\");\n         if (typeNum === PatternType.TILING) {\n-          const color = cs.base ? cs.base.getRgb(args, 0) : null;\n+          const color = cs.base ? cs.base.getRgbHex(args, 0) : null;\n           return this.handleTilingType(fn, color, resources, pattern, dict, operatorList, task, localTilingPatternCache);\n         } else if (typeNum === PatternType.SHADING) {\n           const shading = dict.get(\"Shading\");\n@@ -30729,8 +37592,17 @@\n     resources,\n     operatorList,\n     initialState = null,\n-    fallbackFontDict = null\n+    fallbackFontDict = null,\n+    prevRefs = null\n   }) {\n+    const objId = stream.dict?.objId;\n+    const seenRefs = new RefSet(prevRefs);\n+    if (objId) {\n+      if (prevRefs?.has(objId)) {\n+        throw new Error(`getOperatorList - ignoring circular reference: ${objId}`);\n+      }\n+      seenRefs.put(objId);\n+    }\n     resources ||= Dict.empty;\n     initialState ||= new EvalState();\n     if (!operatorList) {\n@@ -30738,7 +37610,6 @@\n     }\n     const self = this;\n     const xref = this.xref;\n-    let parsingText = false;\n     const localImageCache = new LocalImageCache();\n     const localColorSpaceCache = new LocalColorSpaceCache();\n     const localGStateCache = new LocalGStateCache();\n@@ -30782,8 +37653,7 @@\n             if (isValidName) {\n               const localImage = localImageCache.getByName(name);\n               if (localImage) {\n-                operatorList.addImageOps(localImage.fn, localImage.args, localImage.optionalContent);\n-                incrementCachedImageMaskCount(localImage);\n+                addCachedImageOps(operatorList, localImage);\n                 args = null;\n                 continue;\n               }\n@@ -30794,17 +37664,9 @@\n               }\n               let xobj = xobjs.getRaw(name);\n               if (xobj instanceof Ref) {\n-                const localImage = localImageCache.getByRef(xobj) || self._regionalImageCache.getByRef(xobj);\n-                if (localImage) {\n-                  operatorList.addImageOps(localImage.fn, localImage.args, localImage.optionalContent);\n-                  incrementCachedImageMaskCount(localImage);\n-                  resolveXObject();\n-                  return;\n-                }\n-                const globalImage = self.globalImageCache.getData(xobj, self.pageIndex);\n-                if (globalImage) {\n-                  operatorList.addDependency(globalImage.objId);\n-                  operatorList.addImageOps(globalImage.fn, globalImage.args, globalImage.optionalContent);\n+                const cachedImage = localImageCache.getByRef(xobj) || self._regionalImageCache.getByRef(xobj) || self.globalImageCache.getData(xobj, self.pageIndex);\n+                if (cachedImage) {\n+                  addCachedImageOps(operatorList, cachedImage);\n                   resolveXObject();\n                   return;\n                 }\n@@ -30819,7 +37681,9 @@\n               }\n               if (type.name === \"Form\") {\n                 stateManager.save();\n-                self.buildFormXObject(resources, xobj, null, operatorList, task, stateManager.state.clone(), localColorSpaceCache).then(function () {\n+                self.buildFormXObject(resources, xobj, null, operatorList, task, stateManager.state.clone({\n+                  newPath: true\n+                }), localColorSpaceCache, seenRefs).then(function () {\n                   stateManager.restore();\n                   resolveXObject();\n                 }, rejectXObject);\n@@ -30852,25 +37716,18 @@\n             }));\n             return;\n           case OPS.setFont:\n-            var fontSize = args[1];\n+            const fontSize = args[1];\n             next(self.handleSetFont(resources, args, null, operatorList, task, stateManager.state, fallbackFontDict).then(function (loadedName) {\n               operatorList.addDependency(loadedName);\n               operatorList.addOp(OPS.setFont, [loadedName, fontSize]);\n             }));\n             return;\n-          case OPS.beginText:\n-            parsingText = true;\n-            break;\n-          case OPS.endText:\n-            parsingText = false;\n-            break;\n           case OPS.endInlineImage:\n-            var cacheKey = args[0].cacheKey;\n+            const cacheKey = args[0].cacheKey;\n             if (cacheKey) {\n               const localImage = localImageCache.getByName(cacheKey);\n               if (localImage) {\n-                operatorList.addImageOps(localImage.fn, localImage.args, localImage.optionalContent);\n-                incrementCachedImageMaskCount(localImage);\n+                addCachedImageOps(operatorList, localImage);\n                 args = null;\n                 continue;\n               }\n@@ -30897,8 +37754,8 @@\n               self.ensureStateFont(stateManager.state);\n               continue;\n             }\n-            var combinedGlyphs = [];\n-            var state = stateManager.state;\n+            const combinedGlyphs = [],\n+              state = stateManager.state;\n             for (const arrItem of args[0]) {\n               if (typeof arrItem === \"string\") {\n                 combinedGlyphs.push(...self.handleText(arrItem, state));\n@@ -30934,104 +37791,124 @@\n             break;\n           case OPS.setFillColorSpace:\n             {\n-              const cachedColorSpace = ColorSpace.getCached(args[0], xref, localColorSpaceCache);\n-              if (cachedColorSpace) {\n-                stateManager.state.fillColorSpace = cachedColorSpace;\n+              const fillCS = self._getColorSpace(args[0], resources, localColorSpaceCache);\n+              if (fillCS instanceof ColorSpace) {\n+                stateManager.state.fillColorSpace = fillCS;\n                 continue;\n               }\n-              next(self.parseColorSpace({\n-                cs: args[0],\n-                resources,\n-                localColorSpaceCache\n-              }).then(function (colorSpace) {\n-                if (colorSpace) {\n-                  stateManager.state.fillColorSpace = colorSpace;\n-                }\n+              next(self._handleColorSpace(fillCS).then(colorSpace => {\n+                stateManager.state.fillColorSpace = colorSpace || ColorSpaceUtils.gray;\n               }));\n               return;\n             }\n           case OPS.setStrokeColorSpace:\n             {\n-              const cachedColorSpace = ColorSpace.getCached(args[0], xref, localColorSpaceCache);\n-              if (cachedColorSpace) {\n-                stateManager.state.strokeColorSpace = cachedColorSpace;\n+              const strokeCS = self._getColorSpace(args[0], resources, localColorSpaceCache);\n+              if (strokeCS instanceof ColorSpace) {\n+                stateManager.state.strokeColorSpace = strokeCS;\n                 continue;\n               }\n-              next(self.parseColorSpace({\n-                cs: args[0],\n-                resources,\n-                localColorSpaceCache\n-              }).then(function (colorSpace) {\n-                if (colorSpace) {\n-                  stateManager.state.strokeColorSpace = colorSpace;\n-                }\n+              next(self._handleColorSpace(strokeCS).then(colorSpace => {\n+                stateManager.state.strokeColorSpace = colorSpace || ColorSpaceUtils.gray;\n               }));\n               return;\n             }\n           case OPS.setFillColor:\n             cs = stateManager.state.fillColorSpace;\n-            args = cs.getRgb(args, 0);\n+            args = [cs.getRgbHex(args, 0)];\n             fn = OPS.setFillRGBColor;\n             break;\n           case OPS.setStrokeColor:\n             cs = stateManager.state.strokeColorSpace;\n-            args = cs.getRgb(args, 0);\n+            args = [cs.getRgbHex(args, 0)];\n             fn = OPS.setStrokeRGBColor;\n             break;\n           case OPS.setFillGray:\n-            stateManager.state.fillColorSpace = ColorSpace.singletons.gray;\n-            args = ColorSpace.singletons.gray.getRgb(args, 0);\n+            stateManager.state.fillColorSpace = ColorSpaceUtils.gray;\n+            args = [ColorSpaceUtils.gray.getRgbHex(args, 0)];\n             fn = OPS.setFillRGBColor;\n             break;\n           case OPS.setStrokeGray:\n-            stateManager.state.strokeColorSpace = ColorSpace.singletons.gray;\n-            args = ColorSpace.singletons.gray.getRgb(args, 0);\n+            stateManager.state.strokeColorSpace = ColorSpaceUtils.gray;\n+            args = [ColorSpaceUtils.gray.getRgbHex(args, 0)];\n             fn = OPS.setStrokeRGBColor;\n             break;\n           case OPS.setFillCMYKColor:\n-            stateManager.state.fillColorSpace = ColorSpace.singletons.cmyk;\n-            args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n+            stateManager.state.fillColorSpace = ColorSpaceUtils.cmyk;\n+            args = [ColorSpaceUtils.cmyk.getRgbHex(args, 0)];\n             fn = OPS.setFillRGBColor;\n             break;\n           case OPS.setStrokeCMYKColor:\n-            stateManager.state.strokeColorSpace = ColorSpace.singletons.cmyk;\n-            args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n+            stateManager.state.strokeColorSpace = ColorSpaceUtils.cmyk;\n+            args = [ColorSpaceUtils.cmyk.getRgbHex(args, 0)];\n             fn = OPS.setStrokeRGBColor;\n             break;\n           case OPS.setFillRGBColor:\n-            stateManager.state.fillColorSpace = ColorSpace.singletons.rgb;\n-            args = ColorSpace.singletons.rgb.getRgb(args, 0);\n+            stateManager.state.fillColorSpace = ColorSpaceUtils.rgb;\n+            args = [ColorSpaceUtils.rgb.getRgbHex(args, 0)];\n             break;\n           case OPS.setStrokeRGBColor:\n-            stateManager.state.strokeColorSpace = ColorSpace.singletons.rgb;\n-            args = ColorSpace.singletons.rgb.getRgb(args, 0);\n+            stateManager.state.strokeColorSpace = ColorSpaceUtils.rgb;\n+            args = [ColorSpaceUtils.rgb.getRgbHex(args, 0)];\n             break;\n           case OPS.setFillColorN:\n-            cs = stateManager.state.fillColorSpace;\n+            cs = stateManager.state.patternFillColorSpace;\n+            if (!cs) {\n+              if (isNumberArray(args, null)) {\n+                args = [ColorSpaceUtils.gray.getRgbHex(args, 0)];\n+                fn = OPS.setFillRGBColor;\n+                break;\n+              }\n+              args = [];\n+              fn = OPS.setFillTransparent;\n+              break;\n+            }\n             if (cs.name === \"Pattern\") {\n               next(self.handleColorN(operatorList, OPS.setFillColorN, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache));\n               return;\n             }\n-            args = cs.getRgb(args, 0);\n+            args = [cs.getRgbHex(args, 0)];\n             fn = OPS.setFillRGBColor;\n             break;\n           case OPS.setStrokeColorN:\n-            cs = stateManager.state.strokeColorSpace;\n+            cs = stateManager.state.patternStrokeColorSpace;\n+            if (!cs) {\n+              if (isNumberArray(args, null)) {\n+                args = [ColorSpaceUtils.gray.getRgbHex(args, 0)];\n+                fn = OPS.setStrokeRGBColor;\n+                break;\n+              }\n+              args = [];\n+              fn = OPS.setStrokeTransparent;\n+              break;\n+            }\n             if (cs.name === \"Pattern\") {\n               next(self.handleColorN(operatorList, OPS.setStrokeColorN, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache));\n               return;\n             }\n-            args = cs.getRgb(args, 0);\n+            args = [cs.getRgbHex(args, 0)];\n             fn = OPS.setStrokeRGBColor;\n             break;\n           case OPS.shadingFill:\n-            var shadingRes = resources.get(\"Shading\");\n-            if (!shadingRes) {\n-              throw new FormatError(\"No shading resource found\");\n-            }\n-            var shading = shadingRes.get(args[0].name);\n-            if (!shading) {\n-              throw new FormatError(\"No shading object found\");\n+            let shading;\n+            try {\n+              const shadingRes = resources.get(\"Shading\");\n+              if (!shadingRes) {\n+                throw new FormatError(\"No shading resource found\");\n+              }\n+              shading = shadingRes.get(args[0].name);\n+              if (!shading) {\n+                throw new FormatError(\"No shading object found\");\n+              }\n+            } catch (reason) {\n+              if (reason instanceof AbortException) {\n+                continue;\n+              }\n+              if (self.options.ignoreErrors) {\n+                warn(`getOperatorList - ignoring Shading: \"${reason}\".`);\n+                continue;\n+              }\n+              throw reason;\n             }\n             const patternId = self.parseShading({\n               shading,\n@@ -31078,7 +37955,8 @@\n                 task,\n                 stateManager,\n                 localGStateCache,\n-                localColorSpaceCache\n+                localColorSpaceCache,\n+                seenRefs\n               }).then(resolveGState, rejectGState);\n             }).catch(function (reason) {\n               if (reason instanceof AbortException) {\n@@ -31091,6 +37969,16 @@\n               throw reason;\n             }));\n             return;\n+          case OPS.setLineWidth:\n+            {\n+              const [thickness] = args;\n+              if (typeof thickness !== \"number\") {\n+                warn(`Invalid setLineWidth: ${thickness}`);\n+                continue;\n+              }\n+              args[0] = Math.abs(thickness);\n+              break;\n+            }\n           case OPS.moveTo:\n           case OPS.lineTo:\n           case OPS.curveTo:\n@@ -31098,7 +37986,38 @@\n           case OPS.curveTo3:\n           case OPS.closePath:\n           case OPS.rectangle:\n-            self.buildPath(operatorList, fn, args, parsingText);\n+            self.buildPath(fn, args, stateManager.state);\n+            continue;\n+          case OPS.stroke:\n+          case OPS.closeStroke:\n+          case OPS.fill:\n+          case OPS.eoFill:\n+          case OPS.fillStroke:\n+          case OPS.eoFillStroke:\n+          case OPS.closeFillStroke:\n+          case OPS.closeEOFillStroke:\n+          case OPS.endPath:\n+            {\n+              const {\n+                state: {\n+                  pathBuffer,\n+                  pathMinMax\n+                }\n+              } = stateManager;\n+              if (fn === OPS.closeStroke || fn === OPS.closeFillStroke || fn === OPS.closeEOFillStroke) {\n+                pathBuffer.push(DrawOPS.closePath);\n+              }\n+              if (pathBuffer.length === 0) {\n+                operatorList.addOp(OPS.constructPath, [fn, [null], null]);\n+              } else {\n+                operatorList.addOp(OPS.constructPath, [fn, [new Float32Array(pathBuffer)], pathMinMax.slice()]);\n+                pathBuffer.length = 0;\n+                pathMinMax.set([Infinity, Infinity, -Infinity, -Infinity], 0);\n+              }\n+              continue;\n+            }\n+          case OPS.setTextMatrix:\n+            operatorList.addOp(fn, [new Float32Array(args)]);\n             continue;\n           case OPS.markPoint:\n           case OPS.markPointProps:\n@@ -31176,8 +38095,17 @@\n     lang = null,\n     markedContentData = null,\n     disableNormalization = false,\n-    keepWhiteSpace = false\n+    keepWhiteSpace = false,\n+    prevRefs = null\n   }) {\n+    const objId = stream.dict?.objId;\n+    const seenRefs = new RefSet(prevRefs);\n+    if (objId) {\n+      if (prevRefs?.has(objId)) {\n+        throw new Error(`getTextContent - ignoring circular reference: ${objId}`);\n+      }\n+      seenRefs.put(objId);\n+    }\n     resources ||= Dict.empty;\n     stateManager ||= new StateManager(new TextState());\n     if (includeMarkedContent) {\n@@ -31350,12 +38278,7 @@\n       };\n     }\n     async function handleSetFont(fontName, fontRef) {\n-      const translated = await self.loadFont(fontName, fontRef, resources);\n-      if (translated.font.isType3Font) {\n-        try {\n-          await translated.loadType3Data(self, resources, task);\n-        } catch {}\n-      }\n+      const translated = await self.loadFont(fontName, fontRef, resources, task);\n       textState.loadedName = translated.loadedName;\n       textState.font = translated.font;\n       textState.fontMatrix = translated.font.fontMatrix || FONT_IDENTITY_MATRIX;\n@@ -31662,6 +38585,8 @@\n       timeSlotManager.reset();\n       const operation = {};\n       let stop,\n+        name,\n+        isValidName,\n         args = [];\n       while (!(stop = timeSlotManager.check())) {\n         args.length = 0;\n@@ -31675,7 +38600,7 @@\n         args = operation.args;\n         switch (fn | 0) {\n           case OPS.setFont:\n-            var fontNameArg = args[0].name,\n+            const fontNameArg = args[0].name,\n               fontSizeArg = args[1];\n             if (textState.font && fontNameArg === textState.fontName && fontSizeArg === textState.fontSize) {\n               break;\n@@ -31786,11 +38711,9 @@\n             break;\n           case OPS.paintXObject:\n             flushTextContentItem();\n-            if (!xobjs) {\n-              xobjs = resources.get(\"XObject\") || Dict.empty;\n-            }\n-            var isValidName = args[0] instanceof Name;\n-            var name = args[0].name;\n+            xobjs ??= resources.get(\"XObject\") || Dict.empty;\n+            isValidName = args[0] instanceof Name;\n+            name = args[0].name;\n             if (isValidName && emptyXObjectCache.getByName(name)) {\n               break;\n             }\n@@ -31814,21 +38737,25 @@\n               if (!(xobj instanceof BaseStream)) {\n                 throw new FormatError(\"XObject should be a stream\");\n               }\n-              const type = xobj.dict.get(\"Subtype\");\n+              const {\n+                dict\n+              } = xobj;\n+              const type = dict.get(\"Subtype\");\n               if (!(type instanceof Name)) {\n                 throw new FormatError(\"XObject should have a Name subtype\");\n               }\n               if (type.name !== \"Form\") {\n-                emptyXObjectCache.set(name, xobj.dict.objId, true);\n+                emptyXObjectCache.set(name, dict.objId, true);\n                 resolveXObject();\n                 return;\n               }\n               const currentState = stateManager.state.clone();\n               const xObjStateManager = new StateManager(currentState);\n-              const matrix = lookupMatrix(xobj.dict.getArray(\"Matrix\"), null);\n+              const matrix = lookupMatrix(dict.getArray(\"Matrix\"), null);\n               if (matrix) {\n                 xObjStateManager.transform(matrix);\n               }\n+              const localResources = dict.get(\"Resources\");\n               enqueueChunk();\n               const sinkWrapper = {\n                 enqueueInvoked: false,\n@@ -31846,7 +38773,7 @@\n               self.getTextContent({\n                 stream: xobj,\n                 task,\n-                resources: xobj.dict.get(\"Resources\") || resources,\n+                resources: localResources instanceof Dict ? localResources : resources,\n                 stateManager: xObjStateManager,\n                 includeMarkedContent,\n                 sink: sinkWrapper,\n@@ -31855,10 +38782,11 @@\n                 lang,\n                 markedContentData,\n                 disableNormalization,\n-                keepWhiteSpace\n+                keepWhiteSpace,\n+                prevRefs: seenRefs\n               }).then(function () {\n                 if (!sinkWrapper.enqueueInvoked) {\n-                  emptyXObjectCache.set(name, xobj.dict.objId, true);\n+                  emptyXObjectCache.set(name, dict.objId, true);\n                 }\n                 resolveXObject();\n               }, rejectXObject);\n@@ -32231,6 +39159,9 @@\n             map[charCode] = String.fromCodePoint(token);\n             return;\n           }\n+          if (token.length % 2 !== 0) {\n+            token = \"\\u0000\" + token;\n+          }\n           const str = [];\n           for (let k = 0; k \u003C token.length; k += 2) {\n             const w1 = token.charCodeAt(k) \u003C\u003C 8 | token.charCodeAt(k + 1);\n@@ -32278,7 +39209,7 @@\n     let defaultVMetrics;\n     if (properties.composite) {\n       const dw = dict.get(\"DW\");\n-      defaultWidth = Number.isInteger(dw) ? dw : 1000;\n+      defaultWidth = typeof dw === \"number\" ? Math.ceil(dw) : 1000;\n       const widths = dict.get(\"W\");\n       if (Array.isArray(widths)) {\n         for (let i = 0, ii = widths.length; i \u003C ii; i++) {\n@@ -32568,10 +39499,7 @@\n     const isType3Font = type === \"Type3\";\n     if (!descriptor) {\n       if (isType3Font) {\n-        const bbox = lookupNormalRect(dict.getArray(\"FontBBox\"), [0, 0, 0, 0]);\n-        descriptor = new Dict(null);\n-        descriptor.set(\"FontName\", Name.get(type));\n-        descriptor.set(\"FontBBox\", bbox);\n+        descriptor = Dict.empty;\n       } else {\n         let baseFontName = dict.get(\"BaseFont\");\n         if (!(baseFontName instanceof Name)) {\n@@ -32623,7 +39551,7 @@\n         } else {\n           newProperties.widths = this.buildCharCodeToWidth(metrics.widths, newProperties);\n         }\n-        return new Font(baseFontName, file, newProperties);\n+        return new Font(baseFontName, file, newProperties, this.options);\n       }\n     }\n     let fontName = descriptor.get(\"FontName\");\n@@ -32636,25 +39564,36 @@\n     }\n     const fontNameStr = fontName?.name;\n     const baseFontStr = baseFont?.name;\n-    if (!isType3Font && fontNameStr !== baseFontStr) {\n+    if (isType3Font) {\n+      if (!fontNameStr) {\n+        fontName = Name.get(type);\n+      }\n+    } else if (fontNameStr !== baseFontStr) {\n       info(`The FontDescriptor's FontName is \"${fontNameStr}\" but ` + `should be the same as the Font's BaseFont \"${baseFontStr}\".`);\n       if (fontNameStr && baseFontStr && (baseFontStr.startsWith(fontNameStr) || !isKnownFontName(fontNameStr) && isKnownFontName(baseFontStr))) {\n         fontName = null;\n       }\n+      fontName ||= baseFont;\n     }\n-    fontName ||= baseFont;\n     if (!(fontName instanceof Name)) {\n       throw new FormatError(\"invalid font name\");\n     }\n     let fontFile, subtype, length1, length2, length3;\n     try {\n       fontFile = descriptor.get(\"FontFile\", \"FontFile2\", \"FontFile3\");\n+      if (fontFile) {\n+        if (!(fontFile instanceof BaseStream)) {\n+          throw new FormatError(\"FontFile should be a stream\");\n+        } else if (fontFile.isEmpty) {\n+          throw new FormatError(\"FontFile is empty\");\n+        }\n+      }\n     } catch (ex) {\n       if (!this.options.ignoreErrors) {\n         throw ex;\n       }\n       warn(`translateFont - fetching \"${fontName.name}\" font file: \"${ex}\".`);\n-      fontFile = new NullStream();\n+      fontFile = null;\n     }\n     let isInternalFont = false;\n     let glyphScaleFactors = null;\n@@ -32691,7 +39630,7 @@\n       }\n     }\n     const fontMatrix = lookupMatrix(dict.getArray(\"FontMatrix\"), FONT_IDENTITY_MATRIX);\n-    const bbox = lookupNormalRect(descriptor.getArray(\"FontBBox\") || dict.getArray(\"FontBBox\"), undefined);\n+    const bbox = lookupNormalRect(descriptor.getArray(\"FontBBox\") || dict.getArray(\"FontBBox\"), isType3Font ? [0, 0, 0, 0] : undefined);\n     let ascent = descriptor.get(\"Ascent\");\n     if (typeof ascent !== \"number\") {\n       ascent = undefined;\n@@ -32759,7 +39698,7 @@\n     }\n     const newProperties = await this.extractDataStructures(dict, properties);\n     this.extractWidths(dict, descriptor, newProperties);\n-    return new Font(fontName.name, fontFile, newProperties);\n+    return new Font(fontName.name, fontFile, newProperties, this.options);\n   }\n   static buildFontPaths(font, glyphs, handler, evaluatorOptions) {\n     function buildPath(fontChar) {\n@@ -32795,41 +39734,41 @@\n   }\n }\n class TranslatedFont {\n+  #sent = false;\n+  #type3Loaded = null;\n   constructor({\n     loadedName,\n     font,\n-    dict,\n-    evaluatorOptions\n+    dict\n   }) {\n     this.loadedName = loadedName;\n     this.font = font;\n     this.dict = dict;\n-    this._evaluatorOptions = evaluatorOptions || DefaultPartialEvaluatorOptions;\n-    this.type3Loaded = null;\n     this.type3Dependencies = font.isType3Font ? new Set() : null;\n-    this.sent = false;\n   }\n   send(handler) {\n-    if (this.sent) {\n+    if (this.#sent) {\n       return;\n     }\n-    this.sent = true;\n-    handler.send(\"commonobj\", [this.loadedName, \"Font\", this.font.exportData(this._evaluatorOptions.fontExtraProperties)]);\n+    this.#sent = true;\n+    handler.send(\"commonobj\", [this.loadedName, \"Font\", this.font.exportData()]);\n   }\n-  fallback(handler) {\n+  fallback(handler, evaluatorOptions) {\n     if (!this.font.data) {\n       return;\n     }\n     this.font.disableFontFace = true;\n-    PartialEvaluator.buildFontPaths(this.font, this.font.glyphCacheValues, handler, this._evaluatorOptions);\n+    PartialEvaluator.buildFontPaths(this.font, this.font.glyphCacheValues, handler, evaluatorOptions);\n   }\n   loadType3Data(evaluator, resources, task) {\n-    if (this.type3Loaded) {\n-      return this.type3Loaded;\n-    }\n-    if (!this.font.isType3Font) {\n-      throw new Error(\"Must be a Type3 font.\");\n+    if (this.#type3Loaded) {\n+      return this.#type3Loaded;\n     }\n+    const {\n+      font,\n+      type3Dependencies\n+    } = this;\n+    assert(font.isType3Font, \"Must be a Type3 font.\");\n     const type3Evaluator = evaluator.clone({\n       ignoreErrors: false\n     });\n@@ -32838,15 +39777,13 @@\n       type3FontRefs.put(this.dict.objId);\n     }\n     type3Evaluator.type3FontRefs = type3FontRefs;\n-    const translatedFont = this.font,\n-      type3Dependencies = this.type3Dependencies;\n     let loadCharProcsPromise = Promise.resolve();\n     const charProcs = this.dict.get(\"CharProcs\");\n     const fontResources = this.dict.get(\"Resources\") || resources;\n     const charProcOperatorList = Object.create(null);\n-    const fontBBox = Util.normalizeRect(translatedFont.bbox || [0, 0, 0, 0]),\n-      width = fontBBox[2] - fontBBox[0],\n-      height = fontBBox[3] - fontBBox[1];\n+    const [x0, y0, x1, y1] = font.bbox,\n+      width = x1 - x0,\n+      height = y1 - y0;\n     const fontBBoxSize = Math.hypot(width, height);\n     for (const key of charProcs.getKeys()) {\n       loadCharProcsPromise = loadCharProcsPromise.then(() => {\n@@ -32858,8 +39795,15 @@\n           resources: fontResources,\n           operatorList\n         }).then(() => {\n-          if (operatorList.fnArray[0] === OPS.setCharWidthAndBounds) {\n-            this._removeType3ColorOperators(operatorList, fontBBoxSize);\n+          switch (operatorList.fnArray[0]) {\n+            case OPS.setCharWidthAndBounds:\n+              this.#removeType3ColorOperators(operatorList, fontBBoxSize);\n+              break;\n+            case OPS.setCharWidth:\n+              if (!fontBBoxSize) {\n+                this.#guessType3FontBBox(operatorList);\n+              }\n+              break;\n           }\n           charProcOperatorList[key] = operatorList.getIR();\n           for (const dependency of operatorList.dependencies) {\n@@ -32872,16 +39816,16 @@\n         });\n       });\n     }\n-    this.type3Loaded = loadCharProcsPromise.then(() => {\n-      translatedFont.charProcOperatorList = charProcOperatorList;\n+    this.#type3Loaded = loadCharProcsPromise.then(() => {\n+      font.charProcOperatorList = charProcOperatorList;\n       if (this._bbox) {\n-        translatedFont.isCharBBox = true;\n-        translatedFont.bbox = this._bbox;\n+        font.isCharBBox = true;\n+        font.bbox = this._bbox;\n       }\n     });\n-    return this.type3Loaded;\n+    return this.#type3Loaded;\n   }\n-  _removeType3ColorOperators(operatorList, fontBBoxSize = NaN) {\n+  #removeType3ColorOperators(operatorList, fontBBoxSize = NaN) {\n     const charBBox = Util.normalizeRect(operatorList.argsArray[0].slice(2)),\n       width = charBBox[2] - charBBox[0],\n       height = charBBox[3] - charBBox[1];\n@@ -32890,13 +39834,8 @@\n       operatorList.fnArray.splice(0, 1);\n       operatorList.argsArray.splice(0, 1);\n     } else if (fontBBoxSize === 0 || Math.round(charBBoxSize \u002F fontBBoxSize) >= 10) {\n-      if (!this._bbox) {\n-        this._bbox = [Infinity, Infinity, -Infinity, -Infinity];\n-      }\n-      this._bbox[0] = Math.min(this._bbox[0], charBBox[0]);\n-      this._bbox[1] = Math.min(this._bbox[1], charBBox[1]);\n-      this._bbox[2] = Math.max(this._bbox[2], charBBox[2]);\n-      this._bbox[3] = Math.max(this._bbox[3], charBBox[3]);\n+      this._bbox ??= [Infinity, Infinity, -Infinity, -Infinity];\n+      Util.rectBoundingBox(...charBBox, this._bbox);\n     }\n     let i = 0,\n       ii = operatorList.length;\n@@ -32947,6 +39886,20 @@\n       i++;\n     }\n   }\n+  #guessType3FontBBox(operatorList) {\n+    let i = 1;\n+    const ii = operatorList.length;\n+    while (i \u003C ii) {\n+      switch (operatorList.fnArray[i]) {\n+        case OPS.constructPath:\n+          const minMax = operatorList.argsArray[i][2];\n+          this._bbox ??= [Infinity, Infinity, -Infinity, -Infinity];\n+          Util.rectBoundingBox(...minMax, this._bbox);\n+          break;\n+      }\n+      i++;\n+    }\n+  }\n }\n class StateManager {\n   constructor(initialState = new EvalState()) {\n@@ -33029,11 +39982,34 @@\n     this.ctm = new Float32Array(IDENTITY_MATRIX);\n     this.font = null;\n     this.textRenderingMode = TextRenderingMode.FILL;\n-    this.fillColorSpace = ColorSpace.singletons.gray;\n-    this.strokeColorSpace = ColorSpace.singletons.gray;\n+    this._fillColorSpace = this._strokeColorSpace = ColorSpaceUtils.gray;\n+    this.patternFillColorSpace = null;\n+    this.patternStrokeColorSpace = null;\n+    this.currentPointX = this.currentPointY = 0;\n+    this.pathMinMax = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]);\n+    this.pathBuffer = [];\n+  }\n+  get fillColorSpace() {\n+    return this._fillColorSpace;\n+  }\n+  set fillColorSpace(colorSpace) {\n+    this._fillColorSpace = this.patternFillColorSpace = colorSpace;\n   }\n-  clone() {\n-    return Object.create(this);\n+  get strokeColorSpace() {\n+    return this._strokeColorSpace;\n+  }\n+  set strokeColorSpace(colorSpace) {\n+    this._strokeColorSpace = this.patternStrokeColorSpace = colorSpace;\n+  }\n+  clone({\n+    newPath = false\n+  } = {}) {\n+    const clone = Object.create(this);\n+    if (newPath) {\n+      clone.pathBuffer = [];\n+      clone.pathMinMax = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]);\n+    }\n+    return clone;\n   }\n }\n class EvaluatorPreprocessor {\n@@ -33511,7 +40487,11 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fdefault_appearance.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fdefault_appearance.js\n+\n+\n+\n+\n \n \n \n@@ -33558,13 +40538,13 @@\n             }\n             break;\n           case OPS.setFillRGBColor:\n-            ColorSpace.singletons.rgb.getRgbItem(args, 0, result.fontColor, 0);\n+            ColorSpaceUtils.rgb.getRgbItem(args, 0, result.fontColor, 0);\n             break;\n           case OPS.setFillGray:\n-            ColorSpace.singletons.gray.getRgbItem(args, 0, result.fontColor, 0);\n+            ColorSpaceUtils.gray.getRgbItem(args, 0, result.fontColor, 0);\n             break;\n           case OPS.setFillCMYKColor:\n-            ColorSpace.singletons.cmyk.getRgbItem(args, 0, result.fontColor, 0);\n+            ColorSpaceUtils.cmyk.getRgbItem(args, 0, result.fontColor, 0);\n             break;\n         }\n       }\n@@ -33578,11 +40558,12 @@\n   return new DefaultAppearanceEvaluator(str).parse();\n }\n class AppearanceStreamEvaluator extends EvaluatorPreprocessor {\n-  constructor(stream, evaluatorOptions, xref) {\n+  constructor(stream, evaluatorOptions, xref, globalColorSpaceCache) {\n     super(stream);\n     this.stream = stream;\n     this.evaluatorOptions = evaluatorOptions;\n     this.xref = xref;\n+    this.globalColorSpaceCache = globalColorSpaceCache;\n     this.resources = stream.dict?.get(\"Resources\");\n   }\n   parse() {\n@@ -33595,7 +40576,7 @@\n       fontSize: 0,\n       fontName: \"\",\n       fontColor: new Uint8ClampedArray(3),\n-      fillColorSpace: ColorSpace.singletons.gray\n+      fillColorSpace: ColorSpaceUtils.gray\n     };\n     let breakLoop = false;\n     const stack = [];\n@@ -33635,11 +40616,12 @@\n             }\n             break;\n           case OPS.setFillColorSpace:\n-            result.fillColorSpace = ColorSpace.parse({\n+            result.fillColorSpace = ColorSpaceUtils.parse({\n               cs: args[0],\n               xref: this.xref,\n               resources: this.resources,\n               pdfFunctionFactory: this._pdfFunctionFactory,\n+              globalColorSpaceCache: this.globalColorSpaceCache,\n               localColorSpaceCache: this._localColorSpaceCache\n             });\n             break;\n@@ -33648,13 +40630,13 @@\n             cs.getRgbItem(args, 0, result.fontColor, 0);\n             break;\n           case OPS.setFillRGBColor:\n-            ColorSpace.singletons.rgb.getRgbItem(args, 0, result.fontColor, 0);\n+            ColorSpaceUtils.rgb.getRgbItem(args, 0, result.fontColor, 0);\n             break;\n           case OPS.setFillGray:\n-            ColorSpace.singletons.gray.getRgbItem(args, 0, result.fontColor, 0);\n+            ColorSpaceUtils.gray.getRgbItem(args, 0, result.fontColor, 0);\n             break;\n           case OPS.setFillCMYKColor:\n-            ColorSpace.singletons.cmyk.getRgbItem(args, 0, result.fontColor, 0);\n+            ColorSpaceUtils.cmyk.getRgbItem(args, 0, result.fontColor, 0);\n             break;\n           case OPS.showText:\n           case OPS.showSpacedText:\n@@ -33683,8 +40665,8 @@\n     return shadow(this, \"_pdfFunctionFactory\", pdfFunctionFactory);\n   }\n }\n-function parseAppearanceStream(stream, evaluatorOptions, xref) {\n-  return new AppearanceStreamEvaluator(stream, evaluatorOptions, xref).parse();\n+function parseAppearanceStream(stream, evaluatorOptions, xref, globalColorSpaceCache) {\n+  return new AppearanceStreamEvaluator(stream, evaluatorOptions, xref, globalColorSpaceCache).parse();\n }\n function getPdfColor(color, isFill) {\n   if (color[0] === color[1] && color[1] === color[2]) {\n@@ -33708,7 +40690,9 @@\n     this.lastChar = -Infinity;\n     this.fontFamily = fontFamily;\n     const canvas = new OffscreenCanvas(1, 1);\n-    this.ctxMeasure = canvas.getContext(\"2d\");\n+    this.ctxMeasure = canvas.getContext(\"2d\", {\n+      willReadFrequently: true\n+    });\n     if (!FakeUnicodeFont._fontNameId) {\n       FakeUnicodeFont._fontNameId = 1;\n     }\n@@ -33898,14 +40882,12 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fname_number_tree.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fname_number_tree.js\n+\n \n \n class NameOrNumberTree {\n   constructor(root, xref, type) {\n-    if (this.constructor === NameOrNumberTree) {\n-      unreachable(\"Cannot initialize NameOrNumberTree.\");\n-    }\n     this.root = root;\n     this.xref = xref;\n     this._type = type;\n@@ -33948,7 +40930,7 @@\n     }\n     return map;\n   }\n-  get(key) {\n+  getRaw(key) {\n     if (!this.root) {\n       return null;\n     }\n@@ -33997,12 +40979,15 @@\n         } else if (key > currentKey) {\n           l = m + 2;\n         } else {\n-          return xref.fetchIfRef(entries[m + 1]);\n+          return entries[m + 1];\n         }\n       }\n     }\n     return null;\n   }\n+  get(key) {\n+    return this.xref.fetchIfRef(this.getRaw(key));\n+  }\n }\n class NameTree extends NameOrNumberTree {\n   constructor(root, xref) {\n@@ -34015,7 +41000,7 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fcleanup_helper.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fcleanup_helper.js\n \n \n \n@@ -34027,7 +41012,7 @@\n   JpxImage.cleanup();\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Ffile_spec.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Ffile_spec.js\n \n \n \n@@ -34077,7 +41062,7 @@\n     let filename = \"\";\n     const item = pickPlatformItem(this.root);\n     if (item && typeof item === \"string\") {\n-      filename = stringToPDFString(item).replaceAll(\"\\\\\\\\\", \"\\\\\").replaceAll(\"\\\\\u002F\", \"\u002F\").replaceAll(\"\\\\\", \"\u002F\");\n+      filename = stringToPDFString(item, true).replaceAll(\"\\\\\\\\\", \"\\\\\").replaceAll(\"\\\\\u002F\", \"\u002F\").replaceAll(\"\\\\\", \"\u002F\");\n     }\n     return shadow(this, \"filename\", filename || \"unnamed\");\n   }\n@@ -34117,7 +41102,10 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fxml_parser.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fxml_parser.js\n+\n+\n+\n \n const XMLParserErrorCode = {\n   NoError: 0,\n@@ -34376,9 +41364,7 @@\n     if (!this.childNodes) {\n       return this.nodeValue || \"\";\n     }\n-    return this.childNodes.map(function (child) {\n-      return child.textContent;\n-    }).join(\"\");\n+    return this.childNodes.map(child => child.textContent).join(\"\");\n   }\n   get children() {\n     return this.childNodes || [];\n@@ -34535,7 +41521,11 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fmetadata_parser.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fmetadata_parser.js\n+\n+\n+\n+\n \n class MetadataParser {\n   constructor(data) {\n@@ -34633,1708 +41623,8 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fdecrypt_stream.js\n-\n-const chunkSize = 512;\n-class DecryptStream extends DecodeStream {\n-  constructor(str, maybeLength, decrypt) {\n-    super(maybeLength);\n-    this.str = str;\n-    this.dict = str.dict;\n-    this.decrypt = decrypt;\n-    this.nextChunk = null;\n-    this.initialized = false;\n-  }\n-  readBlock() {\n-    let chunk;\n-    if (this.initialized) {\n-      chunk = this.nextChunk;\n-    } else {\n-      chunk = this.str.getBytes(chunkSize);\n-      this.initialized = true;\n-    }\n-    if (!chunk || chunk.length === 0) {\n-      this.eof = true;\n-      return;\n-    }\n-    this.nextChunk = this.str.getBytes(chunkSize);\n-    const hasMoreData = this.nextChunk?.length > 0;\n-    const decrypt = this.decrypt;\n-    chunk = decrypt(chunk, !hasMoreData);\n-    const bufferLength = this.bufferLength,\n-      newLength = bufferLength + chunk.length,\n-      buffer = this.ensureBuffer(newLength);\n-    buffer.set(chunk, bufferLength);\n-    this.bufferLength = newLength;\n-  }\n-}\n-\n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fcrypto.js\n-\n-\n-\n-class ARCFourCipher {\n-  constructor(key) {\n-    this.a = 0;\n-    this.b = 0;\n-    const s = new Uint8Array(256);\n-    const keyLength = key.length;\n-    for (let i = 0; i \u003C 256; ++i) {\n-      s[i] = i;\n-    }\n-    for (let i = 0, j = 0; i \u003C 256; ++i) {\n-      const tmp = s[i];\n-      j = j + tmp + key[i % keyLength] & 0xff;\n-      s[i] = s[j];\n-      s[j] = tmp;\n-    }\n-    this.s = s;\n-  }\n-  encryptBlock(data) {\n-    let a = this.a,\n-      b = this.b;\n-    const s = this.s;\n-    const n = data.length;\n-    const output = new Uint8Array(n);\n-    for (let i = 0; i \u003C n; ++i) {\n-      a = a + 1 & 0xff;\n-      const tmp = s[a];\n-      b = b + tmp & 0xff;\n-      const tmp2 = s[b];\n-      s[a] = tmp2;\n-      s[b] = tmp;\n-      output[i] = data[i] ^ s[tmp + tmp2 & 0xff];\n-    }\n-    this.a = a;\n-    this.b = b;\n-    return output;\n-  }\n-  decryptBlock(data) {\n-    return this.encryptBlock(data);\n-  }\n-  encrypt(data) {\n-    return this.encryptBlock(data);\n-  }\n-}\n-const calculateMD5 = function calculateMD5Closure() {\n-  const r = new Uint8Array([7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]);\n-  const k = new Int32Array([-680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426, -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162, 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632, 643717713, -373897302, -701558691, 38016083, -660478335, -405537848, 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784, 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556, -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222, -722521979, 76029189, -640364487, -421815835, 530742520, -995338651, -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606, -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649, -145523070, -1120210379, 718787259, -343485551]);\n-  function hash(data, offset, length) {\n-    let h0 = 1732584193,\n-      h1 = -271733879,\n-      h2 = -1732584194,\n-      h3 = 271733878;\n-    const paddedLength = length + 72 & ~63;\n-    const padded = new Uint8Array(paddedLength);\n-    let i, j;\n-    for (i = 0; i \u003C length; ++i) {\n-      padded[i] = data[offset++];\n-    }\n-    padded[i++] = 0x80;\n-    const n = paddedLength - 8;\n-    while (i \u003C n) {\n-      padded[i++] = 0;\n-    }\n-    padded[i++] = length \u003C\u003C 3 & 0xff;\n-    padded[i++] = length >> 5 & 0xff;\n-    padded[i++] = length >> 13 & 0xff;\n-    padded[i++] = length >> 21 & 0xff;\n-    padded[i++] = length >>> 29 & 0xff;\n-    padded[i++] = 0;\n-    padded[i++] = 0;\n-    padded[i++] = 0;\n-    const w = new Int32Array(16);\n-    for (i = 0; i \u003C paddedLength;) {\n-      for (j = 0; j \u003C 16; ++j, i += 4) {\n-        w[j] = padded[i] | padded[i + 1] \u003C\u003C 8 | padded[i + 2] \u003C\u003C 16 | padded[i + 3] \u003C\u003C 24;\n-      }\n-      let a = h0,\n-        b = h1,\n-        c = h2,\n-        d = h3,\n-        f,\n-        g;\n-      for (j = 0; j \u003C 64; ++j) {\n-        if (j \u003C 16) {\n-          f = b & c | ~b & d;\n-          g = j;\n-        } else if (j \u003C 32) {\n-          f = d & b | ~d & c;\n-          g = 5 * j + 1 & 15;\n-        } else if (j \u003C 48) {\n-          f = b ^ c ^ d;\n-          g = 3 * j + 5 & 15;\n-        } else {\n-          f = c ^ (b | ~d);\n-          g = 7 * j & 15;\n-        }\n-        const tmp = d,\n-          rotateArg = a + f + k[j] + w[g] | 0,\n-          rotate = r[j];\n-        d = c;\n-        c = b;\n-        b = b + (rotateArg \u003C\u003C rotate | rotateArg >>> 32 - rotate) | 0;\n-        a = tmp;\n-      }\n-      h0 = h0 + a | 0;\n-      h1 = h1 + b | 0;\n-      h2 = h2 + c | 0;\n-      h3 = h3 + d | 0;\n-    }\n-    return new Uint8Array([h0 & 0xFF, h0 >> 8 & 0xFF, h0 >> 16 & 0xFF, h0 >>> 24 & 0xFF, h1 & 0xFF, h1 >> 8 & 0xFF, h1 >> 16 & 0xFF, h1 >>> 24 & 0xFF, h2 & 0xFF, h2 >> 8 & 0xFF, h2 >> 16 & 0xFF, h2 >>> 24 & 0xFF, h3 & 0xFF, h3 >> 8 & 0xFF, h3 >> 16 & 0xFF, h3 >>> 24 & 0xFF]);\n-  }\n-  return hash;\n-}();\n-class Word64 {\n-  constructor(highInteger, lowInteger) {\n-    this.high = highInteger | 0;\n-    this.low = lowInteger | 0;\n-  }\n-  and(word) {\n-    this.high &= word.high;\n-    this.low &= word.low;\n-  }\n-  xor(word) {\n-    this.high ^= word.high;\n-    this.low ^= word.low;\n-  }\n-  or(word) {\n-    this.high |= word.high;\n-    this.low |= word.low;\n-  }\n-  shiftRight(places) {\n-    if (places >= 32) {\n-      this.low = this.high >>> places - 32 | 0;\n-      this.high = 0;\n-    } else {\n-      this.low = this.low >>> places | this.high \u003C\u003C 32 - places;\n-      this.high = this.high >>> places | 0;\n-    }\n-  }\n-  shiftLeft(places) {\n-    if (places >= 32) {\n-      this.high = this.low \u003C\u003C places - 32;\n-      this.low = 0;\n-    } else {\n-      this.high = this.high \u003C\u003C places | this.low >>> 32 - places;\n-      this.low \u003C\u003C= places;\n-    }\n-  }\n-  rotateRight(places) {\n-    let low, high;\n-    if (places & 32) {\n-      high = this.low;\n-      low = this.high;\n-    } else {\n-      low = this.low;\n-      high = this.high;\n-    }\n-    places &= 31;\n-    this.low = low >>> places | high \u003C\u003C 32 - places;\n-    this.high = high >>> places | low \u003C\u003C 32 - places;\n-  }\n-  not() {\n-    this.high = ~this.high;\n-    this.low = ~this.low;\n-  }\n-  add(word) {\n-    const lowAdd = (this.low >>> 0) + (word.low >>> 0);\n-    let highAdd = (this.high >>> 0) + (word.high >>> 0);\n-    if (lowAdd > 0xffffffff) {\n-      highAdd += 1;\n-    }\n-    this.low = lowAdd | 0;\n-    this.high = highAdd | 0;\n-  }\n-  copyTo(bytes, offset) {\n-    bytes[offset] = this.high >>> 24 & 0xff;\n-    bytes[offset + 1] = this.high >> 16 & 0xff;\n-    bytes[offset + 2] = this.high >> 8 & 0xff;\n-    bytes[offset + 3] = this.high & 0xff;\n-    bytes[offset + 4] = this.low >>> 24 & 0xff;\n-    bytes[offset + 5] = this.low >> 16 & 0xff;\n-    bytes[offset + 6] = this.low >> 8 & 0xff;\n-    bytes[offset + 7] = this.low & 0xff;\n-  }\n-  assign(word) {\n-    this.high = word.high;\n-    this.low = word.low;\n-  }\n-}\n-const calculateSHA256 = function calculateSHA256Closure() {\n-  function rotr(x, n) {\n-    return x >>> n | x \u003C\u003C 32 - n;\n-  }\n-  function ch(x, y, z) {\n-    return x & y ^ ~x & z;\n-  }\n-  function maj(x, y, z) {\n-    return x & y ^ x & z ^ y & z;\n-  }\n-  function sigma(x) {\n-    return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);\n-  }\n-  function sigmaPrime(x) {\n-    return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);\n-  }\n-  function littleSigma(x) {\n-    return rotr(x, 7) ^ rotr(x, 18) ^ x >>> 3;\n-  }\n-  function littleSigmaPrime(x) {\n-    return rotr(x, 17) ^ rotr(x, 19) ^ x >>> 10;\n-  }\n-  const k = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];\n-  function hash(data, offset, length) {\n-    let h0 = 0x6a09e667,\n-      h1 = 0xbb67ae85,\n-      h2 = 0x3c6ef372,\n-      h3 = 0xa54ff53a,\n-      h4 = 0x510e527f,\n-      h5 = 0x9b05688c,\n-      h6 = 0x1f83d9ab,\n-      h7 = 0x5be0cd19;\n-    const paddedLength = Math.ceil((length + 9) \u002F 64) * 64;\n-    const padded = new Uint8Array(paddedLength);\n-    let i, j;\n-    for (i = 0; i \u003C length; ++i) {\n-      padded[i] = data[offset++];\n-    }\n-    padded[i++] = 0x80;\n-    const n = paddedLength - 8;\n-    while (i \u003C n) {\n-      padded[i++] = 0;\n-    }\n-    padded[i++] = 0;\n-    padded[i++] = 0;\n-    padded[i++] = 0;\n-    padded[i++] = length >>> 29 & 0xff;\n-    padded[i++] = length >> 21 & 0xff;\n-    padded[i++] = length >> 13 & 0xff;\n-    padded[i++] = length >> 5 & 0xff;\n-    padded[i++] = length \u003C\u003C 3 & 0xff;\n-    const w = new Uint32Array(64);\n-    for (i = 0; i \u003C paddedLength;) {\n-      for (j = 0; j \u003C 16; ++j) {\n-        w[j] = padded[i] \u003C\u003C 24 | padded[i + 1] \u003C\u003C 16 | padded[i + 2] \u003C\u003C 8 | padded[i + 3];\n-        i += 4;\n-      }\n-      for (j = 16; j \u003C 64; ++j) {\n-        w[j] = littleSigmaPrime(w[j - 2]) + w[j - 7] + littleSigma(w[j - 15]) + w[j - 16] | 0;\n-      }\n-      let a = h0,\n-        b = h1,\n-        c = h2,\n-        d = h3,\n-        e = h4,\n-        f = h5,\n-        g = h6,\n-        h = h7,\n-        t1,\n-        t2;\n-      for (j = 0; j \u003C 64; ++j) {\n-        t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j];\n-        t2 = sigma(a) + maj(a, b, c);\n-        h = g;\n-        g = f;\n-        f = e;\n-        e = d + t1 | 0;\n-        d = c;\n-        c = b;\n-        b = a;\n-        a = t1 + t2 | 0;\n-      }\n-      h0 = h0 + a | 0;\n-      h1 = h1 + b | 0;\n-      h2 = h2 + c | 0;\n-      h3 = h3 + d | 0;\n-      h4 = h4 + e | 0;\n-      h5 = h5 + f | 0;\n-      h6 = h6 + g | 0;\n-      h7 = h7 + h | 0;\n-    }\n-    return new Uint8Array([h0 >> 24 & 0xFF, h0 >> 16 & 0xFF, h0 >> 8 & 0xFF, h0 & 0xFF, h1 >> 24 & 0xFF, h1 >> 16 & 0xFF, h1 >> 8 & 0xFF, h1 & 0xFF, h2 >> 24 & 0xFF, h2 >> 16 & 0xFF, h2 >> 8 & 0xFF, h2 & 0xFF, h3 >> 24 & 0xFF, h3 >> 16 & 0xFF, h3 >> 8 & 0xFF, h3 & 0xFF, h4 >> 24 & 0xFF, h4 >> 16 & 0xFF, h4 >> 8 & 0xFF, h4 & 0xFF, h5 >> 24 & 0xFF, h5 >> 16 & 0xFF, h5 >> 8 & 0xFF, h5 & 0xFF, h6 >> 24 & 0xFF, h6 >> 16 & 0xFF, h6 >> 8 & 0xFF, h6 & 0xFF, h7 >> 24 & 0xFF, h7 >> 16 & 0xFF, h7 >> 8 & 0xFF, h7 & 0xFF]);\n-  }\n-  return hash;\n-}();\n-const calculateSHA512 = function calculateSHA512Closure() {\n-  function ch(result, x, y, z, tmp) {\n-    result.assign(x);\n-    result.and(y);\n-    tmp.assign(x);\n-    tmp.not();\n-    tmp.and(z);\n-    result.xor(tmp);\n-  }\n-  function maj(result, x, y, z, tmp) {\n-    result.assign(x);\n-    result.and(y);\n-    tmp.assign(x);\n-    tmp.and(z);\n-    result.xor(tmp);\n-    tmp.assign(y);\n-    tmp.and(z);\n-    result.xor(tmp);\n-  }\n-  function sigma(result, x, tmp) {\n-    result.assign(x);\n-    result.rotateRight(28);\n-    tmp.assign(x);\n-    tmp.rotateRight(34);\n-    result.xor(tmp);\n-    tmp.assign(x);\n-    tmp.rotateRight(39);\n-    result.xor(tmp);\n-  }\n-  function sigmaPrime(result, x, tmp) {\n-    result.assign(x);\n-    result.rotateRight(14);\n-    tmp.assign(x);\n-    tmp.rotateRight(18);\n-    result.xor(tmp);\n-    tmp.assign(x);\n-    tmp.rotateRight(41);\n-    result.xor(tmp);\n-  }\n-  function littleSigma(result, x, tmp) {\n-    result.assign(x);\n-    result.rotateRight(1);\n-    tmp.assign(x);\n-    tmp.rotateRight(8);\n-    result.xor(tmp);\n-    tmp.assign(x);\n-    tmp.shiftRight(7);\n-    result.xor(tmp);\n-  }\n-  function littleSigmaPrime(result, x, tmp) {\n-    result.assign(x);\n-    result.rotateRight(19);\n-    tmp.assign(x);\n-    tmp.rotateRight(61);\n-    result.xor(tmp);\n-    tmp.assign(x);\n-    tmp.shiftRight(6);\n-    result.xor(tmp);\n-  }\n-  const k = [new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd), new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc), new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019), new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118), new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe), new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2), new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1), new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694), new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3), new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65), new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483), new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5), new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210), new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4), new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725), new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70), new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926), new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df), new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8), new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b), new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001), new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30), new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910), new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8), new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53), new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8), new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb), new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3), new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60), new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec), new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9), new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b), new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207), new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178), new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6), new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b), new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493), new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c), new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a), new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)];\n-  function hash(data, offset, length, mode384 = false) {\n-    let h0, h1, h2, h3, h4, h5, h6, h7;\n-    if (!mode384) {\n-      h0 = new Word64(0x6a09e667, 0xf3bcc908);\n-      h1 = new Word64(0xbb67ae85, 0x84caa73b);\n-      h2 = new Word64(0x3c6ef372, 0xfe94f82b);\n-      h3 = new Word64(0xa54ff53a, 0x5f1d36f1);\n-      h4 = new Word64(0x510e527f, 0xade682d1);\n-      h5 = new Word64(0x9b05688c, 0x2b3e6c1f);\n-      h6 = new Word64(0x1f83d9ab, 0xfb41bd6b);\n-      h7 = new Word64(0x5be0cd19, 0x137e2179);\n-    } else {\n-      h0 = new Word64(0xcbbb9d5d, 0xc1059ed8);\n-      h1 = new Word64(0x629a292a, 0x367cd507);\n-      h2 = new Word64(0x9159015a, 0x3070dd17);\n-      h3 = new Word64(0x152fecd8, 0xf70e5939);\n-      h4 = new Word64(0x67332667, 0xffc00b31);\n-      h5 = new Word64(0x8eb44a87, 0x68581511);\n-      h6 = new Word64(0xdb0c2e0d, 0x64f98fa7);\n-      h7 = new Word64(0x47b5481d, 0xbefa4fa4);\n-    }\n-    const paddedLength = Math.ceil((length + 17) \u002F 128) * 128;\n-    const padded = new Uint8Array(paddedLength);\n-    let i, j;\n-    for (i = 0; i \u003C length; ++i) {\n-      padded[i] = data[offset++];\n-    }\n-    padded[i++] = 0x80;\n-    const n = paddedLength - 16;\n-    while (i \u003C n) {\n-      padded[i++] = 0;\n-    }\n-    padded[i++] = 0;\n-    padded[i++] = 0;\n-    padded[i++] = 0;\n-    padded[i++] = 0;\n-    padded[i++] = 0;\n-    padded[i++] = 0;\n-    padded[i++] = 0;\n-    padded[i++] = 0;\n-    padded[i++] = 0;\n-    padded[i++] = 0;\n-    padded[i++] = 0;\n-    padded[i++] = length >>> 29 & 0xff;\n-    padded[i++] = length >> 21 & 0xff;\n-    padded[i++] = length >> 13 & 0xff;\n-    padded[i++] = length >> 5 & 0xff;\n-    padded[i++] = length \u003C\u003C 3 & 0xff;\n-    const w = new Array(80);\n-    for (i = 0; i \u003C 80; i++) {\n-      w[i] = new Word64(0, 0);\n-    }\n-    let a = new Word64(0, 0),\n-      b = new Word64(0, 0),\n-      c = new Word64(0, 0);\n-    let d = new Word64(0, 0),\n-      e = new Word64(0, 0),\n-      f = new Word64(0, 0);\n-    let g = new Word64(0, 0),\n-      h = new Word64(0, 0);\n-    const t1 = new Word64(0, 0),\n-      t2 = new Word64(0, 0);\n-    const tmp1 = new Word64(0, 0),\n-      tmp2 = new Word64(0, 0);\n-    let tmp3;\n-    for (i = 0; i \u003C paddedLength;) {\n-      for (j = 0; j \u003C 16; ++j) {\n-        w[j].high = padded[i] \u003C\u003C 24 | padded[i + 1] \u003C\u003C 16 | padded[i + 2] \u003C\u003C 8 | padded[i + 3];\n-        w[j].low = padded[i + 4] \u003C\u003C 24 | padded[i + 5] \u003C\u003C 16 | padded[i + 6] \u003C\u003C 8 | padded[i + 7];\n-        i += 8;\n-      }\n-      for (j = 16; j \u003C 80; ++j) {\n-        tmp3 = w[j];\n-        littleSigmaPrime(tmp3, w[j - 2], tmp2);\n-        tmp3.add(w[j - 7]);\n-        littleSigma(tmp1, w[j - 15], tmp2);\n-        tmp3.add(tmp1);\n-        tmp3.add(w[j - 16]);\n-      }\n-      a.assign(h0);\n-      b.assign(h1);\n-      c.assign(h2);\n-      d.assign(h3);\n-      e.assign(h4);\n-      f.assign(h5);\n-      g.assign(h6);\n-      h.assign(h7);\n-      for (j = 0; j \u003C 80; ++j) {\n-        t1.assign(h);\n-        sigmaPrime(tmp1, e, tmp2);\n-        t1.add(tmp1);\n-        ch(tmp1, e, f, g, tmp2);\n-        t1.add(tmp1);\n-        t1.add(k[j]);\n-        t1.add(w[j]);\n-        sigma(t2, a, tmp2);\n-        maj(tmp1, a, b, c, tmp2);\n-        t2.add(tmp1);\n-        tmp3 = h;\n-        h = g;\n-        g = f;\n-        f = e;\n-        d.add(t1);\n-        e = d;\n-        d = c;\n-        c = b;\n-        b = a;\n-        tmp3.assign(t1);\n-        tmp3.add(t2);\n-        a = tmp3;\n-      }\n-      h0.add(a);\n-      h1.add(b);\n-      h2.add(c);\n-      h3.add(d);\n-      h4.add(e);\n-      h5.add(f);\n-      h6.add(g);\n-      h7.add(h);\n-    }\n-    let result;\n-    if (!mode384) {\n-      result = new Uint8Array(64);\n-      h0.copyTo(result, 0);\n-      h1.copyTo(result, 8);\n-      h2.copyTo(result, 16);\n-      h3.copyTo(result, 24);\n-      h4.copyTo(result, 32);\n-      h5.copyTo(result, 40);\n-      h6.copyTo(result, 48);\n-      h7.copyTo(result, 56);\n-    } else {\n-      result = new Uint8Array(48);\n-      h0.copyTo(result, 0);\n-      h1.copyTo(result, 8);\n-      h2.copyTo(result, 16);\n-      h3.copyTo(result, 24);\n-      h4.copyTo(result, 32);\n-      h5.copyTo(result, 40);\n-    }\n-    return result;\n-  }\n-  return hash;\n-}();\n-function calculateSHA384(data, offset, length) {\n-  return calculateSHA512(data, offset, length, true);\n-}\n-class NullCipher {\n-  decryptBlock(data) {\n-    return data;\n-  }\n-  encrypt(data) {\n-    return data;\n-  }\n-}\n-class AESBaseCipher {\n-  constructor() {\n-    if (this.constructor === AESBaseCipher) {\n-      unreachable(\"Cannot initialize AESBaseCipher.\");\n-    }\n-    this._s = new Uint8Array([0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16]);\n-    this._inv_s = new Uint8Array([0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d]);\n-    this._mix = new Uint32Array([0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]);\n-    this._mixCol = new Uint8Array(256);\n-    for (let i = 0; i \u003C 256; i++) {\n-      this._mixCol[i] = i \u003C 128 ? i \u003C\u003C 1 : i \u003C\u003C 1 ^ 0x1b;\n-    }\n-    this.buffer = new Uint8Array(16);\n-    this.bufferPosition = 0;\n-  }\n-  _expandKey(cipherKey) {\n-    unreachable(\"Cannot call `_expandKey` on the base class\");\n-  }\n-  _decrypt(input, key) {\n-    let t, u, v;\n-    const state = new Uint8Array(16);\n-    state.set(input);\n-    for (let j = 0, k = this._keySize; j \u003C 16; ++j, ++k) {\n-      state[j] ^= key[k];\n-    }\n-    for (let i = this._cyclesOfRepetition - 1; i >= 1; --i) {\n-      t = state[13];\n-      state[13] = state[9];\n-      state[9] = state[5];\n-      state[5] = state[1];\n-      state[1] = t;\n-      t = state[14];\n-      u = state[10];\n-      state[14] = state[6];\n-      state[10] = state[2];\n-      state[6] = t;\n-      state[2] = u;\n-      t = state[15];\n-      u = state[11];\n-      v = state[7];\n-      state[15] = state[3];\n-      state[11] = t;\n-      state[7] = u;\n-      state[3] = v;\n-      for (let j = 0; j \u003C 16; ++j) {\n-        state[j] = this._inv_s[state[j]];\n-      }\n-      for (let j = 0, k = i * 16; j \u003C 16; ++j, ++k) {\n-        state[j] ^= key[k];\n-      }\n-      for (let j = 0; j \u003C 16; j += 4) {\n-        const s0 = this._mix[state[j]];\n-        const s1 = this._mix[state[j + 1]];\n-        const s2 = this._mix[state[j + 2]];\n-        const s3 = this._mix[state[j + 3]];\n-        t = s0 ^ s1 >>> 8 ^ s1 \u003C\u003C 24 ^ s2 >>> 16 ^ s2 \u003C\u003C 16 ^ s3 >>> 24 ^ s3 \u003C\u003C 8;\n-        state[j] = t >>> 24 & 0xff;\n-        state[j + 1] = t >> 16 & 0xff;\n-        state[j + 2] = t >> 8 & 0xff;\n-        state[j + 3] = t & 0xff;\n-      }\n-    }\n-    t = state[13];\n-    state[13] = state[9];\n-    state[9] = state[5];\n-    state[5] = state[1];\n-    state[1] = t;\n-    t = state[14];\n-    u = state[10];\n-    state[14] = state[6];\n-    state[10] = state[2];\n-    state[6] = t;\n-    state[2] = u;\n-    t = state[15];\n-    u = state[11];\n-    v = state[7];\n-    state[15] = state[3];\n-    state[11] = t;\n-    state[7] = u;\n-    state[3] = v;\n-    for (let j = 0; j \u003C 16; ++j) {\n-      state[j] = this._inv_s[state[j]];\n-      state[j] ^= key[j];\n-    }\n-    return state;\n-  }\n-  _encrypt(input, key) {\n-    const s = this._s;\n-    let t, u, v;\n-    const state = new Uint8Array(16);\n-    state.set(input);\n-    for (let j = 0; j \u003C 16; ++j) {\n-      state[j] ^= key[j];\n-    }\n-    for (let i = 1; i \u003C this._cyclesOfRepetition; i++) {\n-      for (let j = 0; j \u003C 16; ++j) {\n-        state[j] = s[state[j]];\n-      }\n-      v = state[1];\n-      state[1] = state[5];\n-      state[5] = state[9];\n-      state[9] = state[13];\n-      state[13] = v;\n-      v = state[2];\n-      u = state[6];\n-      state[2] = state[10];\n-      state[6] = state[14];\n-      state[10] = v;\n-      state[14] = u;\n-      v = state[3];\n-      u = state[7];\n-      t = state[11];\n-      state[3] = state[15];\n-      state[7] = v;\n-      state[11] = u;\n-      state[15] = t;\n-      for (let j = 0; j \u003C 16; j += 4) {\n-        const s0 = state[j + 0];\n-        const s1 = state[j + 1];\n-        const s2 = state[j + 2];\n-        const s3 = state[j + 3];\n-        t = s0 ^ s1 ^ s2 ^ s3;\n-        state[j + 0] ^= t ^ this._mixCol[s0 ^ s1];\n-        state[j + 1] ^= t ^ this._mixCol[s1 ^ s2];\n-        state[j + 2] ^= t ^ this._mixCol[s2 ^ s3];\n-        state[j + 3] ^= t ^ this._mixCol[s3 ^ s0];\n-      }\n-      for (let j = 0, k = i * 16; j \u003C 16; ++j, ++k) {\n-        state[j] ^= key[k];\n-      }\n-    }\n-    for (let j = 0; j \u003C 16; ++j) {\n-      state[j] = s[state[j]];\n-    }\n-    v = state[1];\n-    state[1] = state[5];\n-    state[5] = state[9];\n-    state[9] = state[13];\n-    state[13] = v;\n-    v = state[2];\n-    u = state[6];\n-    state[2] = state[10];\n-    state[6] = state[14];\n-    state[10] = v;\n-    state[14] = u;\n-    v = state[3];\n-    u = state[7];\n-    t = state[11];\n-    state[3] = state[15];\n-    state[7] = v;\n-    state[11] = u;\n-    state[15] = t;\n-    for (let j = 0, k = this._keySize; j \u003C 16; ++j, ++k) {\n-      state[j] ^= key[k];\n-    }\n-    return state;\n-  }\n-  _decryptBlock2(data, finalize) {\n-    const sourceLength = data.length;\n-    let buffer = this.buffer,\n-      bufferLength = this.bufferPosition;\n-    const result = [];\n-    let iv = this.iv;\n-    for (let i = 0; i \u003C sourceLength; ++i) {\n-      buffer[bufferLength] = data[i];\n-      ++bufferLength;\n-      if (bufferLength \u003C 16) {\n-        continue;\n-      }\n-      const plain = this._decrypt(buffer, this._key);\n-      for (let j = 0; j \u003C 16; ++j) {\n-        plain[j] ^= iv[j];\n-      }\n-      iv = buffer;\n-      result.push(plain);\n-      buffer = new Uint8Array(16);\n-      bufferLength = 0;\n-    }\n-    this.buffer = buffer;\n-    this.bufferLength = bufferLength;\n-    this.iv = iv;\n-    if (result.length === 0) {\n-      return new Uint8Array(0);\n-    }\n-    let outputLength = 16 * result.length;\n-    if (finalize) {\n-      const lastBlock = result.at(-1);\n-      let psLen = lastBlock[15];\n-      if (psLen \u003C= 16) {\n-        for (let i = 15, ii = 16 - psLen; i >= ii; --i) {\n-          if (lastBlock[i] !== psLen) {\n-            psLen = 0;\n-            break;\n-          }\n-        }\n-        outputLength -= psLen;\n-        result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);\n-      }\n-    }\n-    const output = new Uint8Array(outputLength);\n-    for (let i = 0, j = 0, ii = result.length; i \u003C ii; ++i, j += 16) {\n-      output.set(result[i], j);\n-    }\n-    return output;\n-  }\n-  decryptBlock(data, finalize, iv = null) {\n-    const sourceLength = data.length;\n-    const buffer = this.buffer;\n-    let bufferLength = this.bufferPosition;\n-    if (iv) {\n-      this.iv = iv;\n-    } else {\n-      for (let i = 0; bufferLength \u003C 16 && i \u003C sourceLength; ++i, ++bufferLength) {\n-        buffer[bufferLength] = data[i];\n-      }\n-      if (bufferLength \u003C 16) {\n-        this.bufferLength = bufferLength;\n-        return new Uint8Array(0);\n-      }\n-      this.iv = buffer;\n-      data = data.subarray(16);\n-    }\n-    this.buffer = new Uint8Array(16);\n-    this.bufferLength = 0;\n-    this.decryptBlock = this._decryptBlock2;\n-    return this.decryptBlock(data, finalize);\n-  }\n-  encrypt(data, iv) {\n-    const sourceLength = data.length;\n-    let buffer = this.buffer,\n-      bufferLength = this.bufferPosition;\n-    const result = [];\n-    if (!iv) {\n-      iv = new Uint8Array(16);\n-    }\n-    for (let i = 0; i \u003C sourceLength; ++i) {\n-      buffer[bufferLength] = data[i];\n-      ++bufferLength;\n-      if (bufferLength \u003C 16) {\n-        continue;\n-      }\n-      for (let j = 0; j \u003C 16; ++j) {\n-        buffer[j] ^= iv[j];\n-      }\n-      const cipher = this._encrypt(buffer, this._key);\n-      iv = cipher;\n-      result.push(cipher);\n-      buffer = new Uint8Array(16);\n-      bufferLength = 0;\n-    }\n-    this.buffer = buffer;\n-    this.bufferLength = bufferLength;\n-    this.iv = iv;\n-    if (result.length === 0) {\n-      return new Uint8Array(0);\n-    }\n-    const outputLength = 16 * result.length;\n-    const output = new Uint8Array(outputLength);\n-    for (let i = 0, j = 0, ii = result.length; i \u003C ii; ++i, j += 16) {\n-      output.set(result[i], j);\n-    }\n-    return output;\n-  }\n-}\n-class AES128Cipher extends AESBaseCipher {\n-  constructor(key) {\n-    super();\n-    this._cyclesOfRepetition = 10;\n-    this._keySize = 160;\n-    this._rcon = new Uint8Array([0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d]);\n-    this._key = this._expandKey(key);\n-  }\n-  _expandKey(cipherKey) {\n-    const b = 176;\n-    const s = this._s;\n-    const rcon = this._rcon;\n-    const result = new Uint8Array(b);\n-    result.set(cipherKey);\n-    for (let j = 16, i = 1; j \u003C b; ++i) {\n-      let t1 = result[j - 3];\n-      let t2 = result[j - 2];\n-      let t3 = result[j - 1];\n-      let t4 = result[j - 4];\n-      t1 = s[t1];\n-      t2 = s[t2];\n-      t3 = s[t3];\n-      t4 = s[t4];\n-      t1 ^= rcon[i];\n-      for (let n = 0; n \u003C 4; ++n) {\n-        result[j] = t1 ^= result[j - 16];\n-        j++;\n-        result[j] = t2 ^= result[j - 16];\n-        j++;\n-        result[j] = t3 ^= result[j - 16];\n-        j++;\n-        result[j] = t4 ^= result[j - 16];\n-        j++;\n-      }\n-    }\n-    return result;\n-  }\n-}\n-class AES256Cipher extends AESBaseCipher {\n-  constructor(key) {\n-    super();\n-    this._cyclesOfRepetition = 14;\n-    this._keySize = 224;\n-    this._key = this._expandKey(key);\n-  }\n-  _expandKey(cipherKey) {\n-    const b = 240;\n-    const s = this._s;\n-    const result = new Uint8Array(b);\n-    result.set(cipherKey);\n-    let r = 1;\n-    let t1, t2, t3, t4;\n-    for (let j = 32, i = 1; j \u003C b; ++i) {\n-      if (j % 32 === 16) {\n-        t1 = s[t1];\n-        t2 = s[t2];\n-        t3 = s[t3];\n-        t4 = s[t4];\n-      } else if (j % 32 === 0) {\n-        t1 = result[j - 3];\n-        t2 = result[j - 2];\n-        t3 = result[j - 1];\n-        t4 = result[j - 4];\n-        t1 = s[t1];\n-        t2 = s[t2];\n-        t3 = s[t3];\n-        t4 = s[t4];\n-        t1 ^= r;\n-        if ((r \u003C\u003C= 1) >= 256) {\n-          r = (r ^ 0x1b) & 0xff;\n-        }\n-      }\n-      for (let n = 0; n \u003C 4; ++n) {\n-        result[j] = t1 ^= result[j - 32];\n-        j++;\n-        result[j] = t2 ^= result[j - 32];\n-        j++;\n-        result[j] = t3 ^= result[j - 32];\n-        j++;\n-        result[j] = t4 ^= result[j - 32];\n-        j++;\n-      }\n-    }\n-    return result;\n-  }\n-}\n-class PDF17 {\n-  checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {\n-    const hashData = new Uint8Array(password.length + 56);\n-    hashData.set(password, 0);\n-    hashData.set(ownerValidationSalt, password.length);\n-    hashData.set(userBytes, password.length + ownerValidationSalt.length);\n-    const result = calculateSHA256(hashData, 0, hashData.length);\n-    return isArrayEqual(result, ownerPassword);\n-  }\n-  checkUserPassword(password, userValidationSalt, userPassword) {\n-    const hashData = new Uint8Array(password.length + 8);\n-    hashData.set(password, 0);\n-    hashData.set(userValidationSalt, password.length);\n-    const result = calculateSHA256(hashData, 0, hashData.length);\n-    return isArrayEqual(result, userPassword);\n-  }\n-  getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n-    const hashData = new Uint8Array(password.length + 56);\n-    hashData.set(password, 0);\n-    hashData.set(ownerKeySalt, password.length);\n-    hashData.set(userBytes, password.length + ownerKeySalt.length);\n-    const key = calculateSHA256(hashData, 0, hashData.length);\n-    const cipher = new AES256Cipher(key);\n-    return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n-  }\n-  getUserKey(password, userKeySalt, userEncryption) {\n-    const hashData = new Uint8Array(password.length + 8);\n-    hashData.set(password, 0);\n-    hashData.set(userKeySalt, password.length);\n-    const key = calculateSHA256(hashData, 0, hashData.length);\n-    const cipher = new AES256Cipher(key);\n-    return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n-  }\n-}\n-class PDF20 {\n-  _hash(password, input, userBytes) {\n-    let k = calculateSHA256(input, 0, input.length).subarray(0, 32);\n-    let e = [0];\n-    let i = 0;\n-    while (i \u003C 64 || e.at(-1) > i - 32) {\n-      const combinedLength = password.length + k.length + userBytes.length,\n-        combinedArray = new Uint8Array(combinedLength);\n-      let writeOffset = 0;\n-      combinedArray.set(password, writeOffset);\n-      writeOffset += password.length;\n-      combinedArray.set(k, writeOffset);\n-      writeOffset += k.length;\n-      combinedArray.set(userBytes, writeOffset);\n-      const k1 = new Uint8Array(combinedLength * 64);\n-      for (let j = 0, pos = 0; j \u003C 64; j++, pos += combinedLength) {\n-        k1.set(combinedArray, pos);\n-      }\n-      const cipher = new AES128Cipher(k.subarray(0, 16));\n-      e = cipher.encrypt(k1, k.subarray(16, 32));\n-      const remainder = e.slice(0, 16).reduce((a, b) => a + b, 0) % 3;\n-      if (remainder === 0) {\n-        k = calculateSHA256(e, 0, e.length);\n-      } else if (remainder === 1) {\n-        k = calculateSHA384(e, 0, e.length);\n-      } else if (remainder === 2) {\n-        k = calculateSHA512(e, 0, e.length);\n-      }\n-      i++;\n-    }\n-    return k.subarray(0, 32);\n-  }\n-  checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {\n-    const hashData = new Uint8Array(password.length + 56);\n-    hashData.set(password, 0);\n-    hashData.set(ownerValidationSalt, password.length);\n-    hashData.set(userBytes, password.length + ownerValidationSalt.length);\n-    const result = this._hash(password, hashData, userBytes);\n-    return isArrayEqual(result, ownerPassword);\n-  }\n-  checkUserPassword(password, userValidationSalt, userPassword) {\n-    const hashData = new Uint8Array(password.length + 8);\n-    hashData.set(password, 0);\n-    hashData.set(userValidationSalt, password.length);\n-    const result = this._hash(password, hashData, []);\n-    return isArrayEqual(result, userPassword);\n-  }\n-  getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n-    const hashData = new Uint8Array(password.length + 56);\n-    hashData.set(password, 0);\n-    hashData.set(ownerKeySalt, password.length);\n-    hashData.set(userBytes, password.length + ownerKeySalt.length);\n-    const key = this._hash(password, hashData, userBytes);\n-    const cipher = new AES256Cipher(key);\n-    return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n-  }\n-  getUserKey(password, userKeySalt, userEncryption) {\n-    const hashData = new Uint8Array(password.length + 8);\n-    hashData.set(password, 0);\n-    hashData.set(userKeySalt, password.length);\n-    const key = this._hash(password, hashData, []);\n-    const cipher = new AES256Cipher(key);\n-    return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n-  }\n-}\n-class CipherTransform {\n-  constructor(stringCipherConstructor, streamCipherConstructor) {\n-    this.StringCipherConstructor = stringCipherConstructor;\n-    this.StreamCipherConstructor = streamCipherConstructor;\n-  }\n-  createStream(stream, length) {\n-    const cipher = new this.StreamCipherConstructor();\n-    return new DecryptStream(stream, length, function cipherTransformDecryptStream(data, finalize) {\n-      return cipher.decryptBlock(data, finalize);\n-    });\n-  }\n-  decryptString(s) {\n-    const cipher = new this.StringCipherConstructor();\n-    let data = stringToBytes(s);\n-    data = cipher.decryptBlock(data, true);\n-    return bytesToString(data);\n-  }\n-  encryptString(s) {\n-    const cipher = new this.StringCipherConstructor();\n-    if (cipher instanceof AESBaseCipher) {\n-      const strLen = s.length;\n-      const pad = 16 - strLen % 16;\n-      s += String.fromCharCode(pad).repeat(pad);\n-      const iv = new Uint8Array(16);\n-      if (typeof crypto !== \"undefined\") {\n-        crypto.getRandomValues(iv);\n-      } else {\n-        for (let i = 0; i \u003C 16; i++) {\n-          iv[i] = Math.floor(256 * Math.random());\n-        }\n-      }\n-      let data = stringToBytes(s);\n-      data = cipher.encrypt(data, iv);\n-      const buf = new Uint8Array(16 + data.length);\n-      buf.set(iv);\n-      buf.set(data, 16);\n-      return bytesToString(buf);\n-    }\n-    let data = stringToBytes(s);\n-    data = cipher.encrypt(data);\n-    return bytesToString(data);\n-  }\n-}\n-class CipherTransformFactory {\n-  static #defaultPasswordBytes = new Uint8Array([0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, 0x56, 0xff, 0xfa, 0x01, 0x08, 0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68, 0x3e, 0x80, 0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a]);\n-  #createEncryptionKey20(revision, password, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms) {\n-    if (password) {\n-      const passwordLength = Math.min(127, password.length);\n-      password = password.subarray(0, passwordLength);\n-    } else {\n-      password = [];\n-    }\n-    const pdfAlgorithm = revision === 6 ? new PDF20() : new PDF17();\n-    if (pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)) {\n-      return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption);\n-    } else if (password.length && pdfAlgorithm.checkOwnerPassword(password, ownerValidationSalt, uBytes, ownerPassword)) {\n-      return pdfAlgorithm.getOwnerKey(password, ownerKeySalt, uBytes, ownerEncryption);\n-    }\n-    return null;\n-  }\n-  #prepareKeyData(fileId, password, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata) {\n-    const hashDataSize = 40 + ownerPassword.length + fileId.length;\n-    const hashData = new Uint8Array(hashDataSize);\n-    let i = 0,\n-      j,\n-      n;\n-    if (password) {\n-      n = Math.min(32, password.length);\n-      for (; i \u003C n; ++i) {\n-        hashData[i] = password[i];\n-      }\n-    }\n-    j = 0;\n-    while (i \u003C 32) {\n-      hashData[i++] = CipherTransformFactory.#defaultPasswordBytes[j++];\n-    }\n-    for (j = 0, n = ownerPassword.length; j \u003C n; ++j) {\n-      hashData[i++] = ownerPassword[j];\n-    }\n-    hashData[i++] = flags & 0xff;\n-    hashData[i++] = flags >> 8 & 0xff;\n-    hashData[i++] = flags >> 16 & 0xff;\n-    hashData[i++] = flags >>> 24 & 0xff;\n-    for (j = 0, n = fileId.length; j \u003C n; ++j) {\n-      hashData[i++] = fileId[j];\n-    }\n-    if (revision >= 4 && !encryptMetadata) {\n-      hashData[i++] = 0xff;\n-      hashData[i++] = 0xff;\n-      hashData[i++] = 0xff;\n-      hashData[i++] = 0xff;\n-    }\n-    let hash = calculateMD5(hashData, 0, i);\n-    const keyLengthInBytes = keyLength >> 3;\n-    if (revision >= 3) {\n-      for (j = 0; j \u003C 50; ++j) {\n-        hash = calculateMD5(hash, 0, keyLengthInBytes);\n-      }\n-    }\n-    const encryptionKey = hash.subarray(0, keyLengthInBytes);\n-    let cipher, checkData;\n-    if (revision >= 3) {\n-      for (i = 0; i \u003C 32; ++i) {\n-        hashData[i] = CipherTransformFactory.#defaultPasswordBytes[i];\n-      }\n-      for (j = 0, n = fileId.length; j \u003C n; ++j) {\n-        hashData[i++] = fileId[j];\n-      }\n-      cipher = new ARCFourCipher(encryptionKey);\n-      checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));\n-      n = encryptionKey.length;\n-      const derivedKey = new Uint8Array(n);\n-      for (j = 1; j \u003C= 19; ++j) {\n-        for (let k = 0; k \u003C n; ++k) {\n-          derivedKey[k] = encryptionKey[k] ^ j;\n-        }\n-        cipher = new ARCFourCipher(derivedKey);\n-        checkData = cipher.encryptBlock(checkData);\n-      }\n-      for (j = 0, n = checkData.length; j \u003C n; ++j) {\n-        if (userPassword[j] !== checkData[j]) {\n-          return null;\n-        }\n-      }\n-    } else {\n-      cipher = new ARCFourCipher(encryptionKey);\n-      checkData = cipher.encryptBlock(CipherTransformFactory.#defaultPasswordBytes);\n-      for (j = 0, n = checkData.length; j \u003C n; ++j) {\n-        if (userPassword[j] !== checkData[j]) {\n-          return null;\n-        }\n-      }\n-    }\n-    return encryptionKey;\n-  }\n-  #decodeUserPassword(password, ownerPassword, revision, keyLength) {\n-    const hashData = new Uint8Array(32);\n-    let i = 0;\n-    const n = Math.min(32, password.length);\n-    for (; i \u003C n; ++i) {\n-      hashData[i] = password[i];\n-    }\n-    let j = 0;\n-    while (i \u003C 32) {\n-      hashData[i++] = CipherTransformFactory.#defaultPasswordBytes[j++];\n-    }\n-    let hash = calculateMD5(hashData, 0, i);\n-    const keyLengthInBytes = keyLength >> 3;\n-    if (revision >= 3) {\n-      for (j = 0; j \u003C 50; ++j) {\n-        hash = calculateMD5(hash, 0, hash.length);\n-      }\n-    }\n-    let cipher, userPassword;\n-    if (revision >= 3) {\n-      userPassword = ownerPassword;\n-      const derivedKey = new Uint8Array(keyLengthInBytes);\n-      for (j = 19; j >= 0; j--) {\n-        for (let k = 0; k \u003C keyLengthInBytes; ++k) {\n-          derivedKey[k] = hash[k] ^ j;\n-        }\n-        cipher = new ARCFourCipher(derivedKey);\n-        userPassword = cipher.encryptBlock(userPassword);\n-      }\n-    } else {\n-      cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes));\n-      userPassword = cipher.encryptBlock(ownerPassword);\n-    }\n-    return userPassword;\n-  }\n-  #buildObjectKey(num, gen, encryptionKey, isAes = false) {\n-    const key = new Uint8Array(encryptionKey.length + 9);\n-    const n = encryptionKey.length;\n-    let i;\n-    for (i = 0; i \u003C n; ++i) {\n-      key[i] = encryptionKey[i];\n-    }\n-    key[i++] = num & 0xff;\n-    key[i++] = num >> 8 & 0xff;\n-    key[i++] = num >> 16 & 0xff;\n-    key[i++] = gen & 0xff;\n-    key[i++] = gen >> 8 & 0xff;\n-    if (isAes) {\n-      key[i++] = 0x73;\n-      key[i++] = 0x41;\n-      key[i++] = 0x6c;\n-      key[i++] = 0x54;\n-    }\n-    const hash = calculateMD5(key, 0, i);\n-    return hash.subarray(0, Math.min(encryptionKey.length + 5, 16));\n-  }\n-  #buildCipherConstructor(cf, name, num, gen, key) {\n-    if (!(name instanceof Name)) {\n-      throw new FormatError(\"Invalid crypt filter name.\");\n-    }\n-    const self = this;\n-    const cryptFilter = cf.get(name.name);\n-    const cfm = cryptFilter?.get(\"CFM\");\n-    if (!cfm || cfm.name === \"None\") {\n-      return function () {\n-        return new NullCipher();\n-      };\n-    }\n-    if (cfm.name === \"V2\") {\n-      return function () {\n-        return new ARCFourCipher(self.#buildObjectKey(num, gen, key, false));\n-      };\n-    }\n-    if (cfm.name === \"AESV2\") {\n-      return function () {\n-        return new AES128Cipher(self.#buildObjectKey(num, gen, key, true));\n-      };\n-    }\n-    if (cfm.name === \"AESV3\") {\n-      return function () {\n-        return new AES256Cipher(key);\n-      };\n-    }\n-    throw new FormatError(\"Unknown crypto method\");\n-  }\n-  constructor(dict, fileId, password) {\n-    const filter = dict.get(\"Filter\");\n-    if (!isName(filter, \"Standard\")) {\n-      throw new FormatError(\"unknown encryption method\");\n-    }\n-    this.filterName = filter.name;\n-    this.dict = dict;\n-    const algorithm = dict.get(\"V\");\n-    if (!Number.isInteger(algorithm) || algorithm !== 1 && algorithm !== 2 && algorithm !== 4 && algorithm !== 5) {\n-      throw new FormatError(\"unsupported encryption algorithm\");\n-    }\n-    this.algorithm = algorithm;\n-    let keyLength = dict.get(\"Length\");\n-    if (!keyLength) {\n-      if (algorithm \u003C= 3) {\n-        keyLength = 40;\n-      } else {\n-        const cfDict = dict.get(\"CF\");\n-        const streamCryptoName = dict.get(\"StmF\");\n-        if (cfDict instanceof Dict && streamCryptoName instanceof Name) {\n-          cfDict.suppressEncryption = true;\n-          const handlerDict = cfDict.get(streamCryptoName.name);\n-          keyLength = handlerDict?.get(\"Length\") || 128;\n-          if (keyLength \u003C 40) {\n-            keyLength \u003C\u003C= 3;\n-          }\n-        }\n-      }\n-    }\n-    if (!Number.isInteger(keyLength) || keyLength \u003C 40 || keyLength % 8 !== 0) {\n-      throw new FormatError(\"invalid key length\");\n-    }\n-    const ownerBytes = stringToBytes(dict.get(\"O\")),\n-      userBytes = stringToBytes(dict.get(\"U\"));\n-    const ownerPassword = ownerBytes.subarray(0, 32);\n-    const userPassword = userBytes.subarray(0, 32);\n-    const flags = dict.get(\"P\");\n-    const revision = dict.get(\"R\");\n-    const encryptMetadata = (algorithm === 4 || algorithm === 5) && dict.get(\"EncryptMetadata\") !== false;\n-    this.encryptMetadata = encryptMetadata;\n-    const fileIdBytes = stringToBytes(fileId);\n-    let passwordBytes;\n-    if (password) {\n-      if (revision === 6) {\n-        try {\n-          password = utf8StringToString(password);\n-        } catch {\n-          warn(\"CipherTransformFactory: Unable to convert UTF8 encoded password.\");\n-        }\n-      }\n-      passwordBytes = stringToBytes(password);\n-    }\n-    let encryptionKey;\n-    if (algorithm !== 5) {\n-      encryptionKey = this.#prepareKeyData(fileIdBytes, passwordBytes, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata);\n-    } else {\n-      const ownerValidationSalt = ownerBytes.subarray(32, 40);\n-      const ownerKeySalt = ownerBytes.subarray(40, 48);\n-      const uBytes = userBytes.subarray(0, 48);\n-      const userValidationSalt = userBytes.subarray(32, 40);\n-      const userKeySalt = userBytes.subarray(40, 48);\n-      const ownerEncryption = stringToBytes(dict.get(\"OE\"));\n-      const userEncryption = stringToBytes(dict.get(\"UE\"));\n-      const perms = stringToBytes(dict.get(\"Perms\"));\n-      encryptionKey = this.#createEncryptionKey20(revision, passwordBytes, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms);\n-    }\n-    if (!encryptionKey && !password) {\n-      throw new PasswordException(\"No password given\", PasswordResponses.NEED_PASSWORD);\n-    } else if (!encryptionKey && password) {\n-      const decodedPassword = this.#decodeUserPassword(passwordBytes, ownerPassword, revision, keyLength);\n-      encryptionKey = this.#prepareKeyData(fileIdBytes, decodedPassword, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata);\n-    }\n-    if (!encryptionKey) {\n-      throw new PasswordException(\"Incorrect Password\", PasswordResponses.INCORRECT_PASSWORD);\n-    }\n-    this.encryptionKey = encryptionKey;\n-    if (algorithm >= 4) {\n-      const cf = dict.get(\"CF\");\n-      if (cf instanceof Dict) {\n-        cf.suppressEncryption = true;\n-      }\n-      this.cf = cf;\n-      this.stmf = dict.get(\"StmF\") || Name.get(\"Identity\");\n-      this.strf = dict.get(\"StrF\") || Name.get(\"Identity\");\n-      this.eff = dict.get(\"EFF\") || this.stmf;\n-    }\n-  }\n-  createCipherTransform(num, gen) {\n-    if (this.algorithm === 4 || this.algorithm === 5) {\n-      return new CipherTransform(this.#buildCipherConstructor(this.cf, this.strf, num, gen, this.encryptionKey), this.#buildCipherConstructor(this.cf, this.stmf, num, gen, this.encryptionKey));\n-    }\n-    const key = this.#buildObjectKey(num, gen, this.encryptionKey, false);\n-    const cipherConstructor = function () {\n-      return new ARCFourCipher(key);\n-    };\n-    return new CipherTransform(cipherConstructor, cipherConstructor);\n-  }\n-}\n-\n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fwriter.js\n-\n-\n-\n-\n-\n-\n-\n-async function writeObject(ref, obj, buffer, {\n-  encrypt = null\n-}) {\n-  const transform = encrypt?.createCipherTransform(ref.num, ref.gen);\n-  buffer.push(`${ref.num} ${ref.gen} obj\\n`);\n-  if (obj instanceof Dict) {\n-    await writeDict(obj, buffer, transform);\n-  } else if (obj instanceof BaseStream) {\n-    await writeStream(obj, buffer, transform);\n-  } else if (Array.isArray(obj) || ArrayBuffer.isView(obj)) {\n-    await writeArray(obj, buffer, transform);\n-  }\n-  buffer.push(\"\\nendobj\\n\");\n-}\n-async function writeDict(dict, buffer, transform) {\n-  buffer.push(\"\u003C\u003C\");\n-  for (const key of dict.getKeys()) {\n-    buffer.push(` \u002F${escapePDFName(key)} `);\n-    await writeValue(dict.getRaw(key), buffer, transform);\n-  }\n-  buffer.push(\">>\");\n-}\n-async function writeStream(stream, buffer, transform) {\n-  let bytes = stream.getBytes();\n-  const {\n-    dict\n-  } = stream;\n-  const [filter, params] = await Promise.all([dict.getAsync(\"Filter\"), dict.getAsync(\"DecodeParms\")]);\n-  const filterZero = Array.isArray(filter) ? await dict.xref.fetchIfRefAsync(filter[0]) : filter;\n-  const isFilterZeroFlateDecode = isName(filterZero, \"FlateDecode\");\n-  const MIN_LENGTH_FOR_COMPRESSING = 256;\n-  if (bytes.length >= MIN_LENGTH_FOR_COMPRESSING || isFilterZeroFlateDecode) {\n-    try {\n-      const cs = new CompressionStream(\"deflate\");\n-      const writer = cs.writable.getWriter();\n-      writer.write(bytes);\n-      writer.close();\n-      const buf = await new Response(cs.readable).arrayBuffer();\n-      bytes = new Uint8Array(buf);\n-      let newFilter, newParams;\n-      if (!filter) {\n-        newFilter = Name.get(\"FlateDecode\");\n-      } else if (!isFilterZeroFlateDecode) {\n-        newFilter = Array.isArray(filter) ? [Name.get(\"FlateDecode\"), ...filter] : [Name.get(\"FlateDecode\"), filter];\n-        if (params) {\n-          newParams = Array.isArray(params) ? [null, ...params] : [null, params];\n-        }\n-      }\n-      if (newFilter) {\n-        dict.set(\"Filter\", newFilter);\n-      }\n-      if (newParams) {\n-        dict.set(\"DecodeParms\", newParams);\n-      }\n-    } catch (ex) {\n-      info(`writeStream - cannot compress data: \"${ex}\".`);\n-    }\n-  }\n-  let string = bytesToString(bytes);\n-  if (transform) {\n-    string = transform.encryptString(string);\n-  }\n-  dict.set(\"Length\", string.length);\n-  await writeDict(dict, buffer, transform);\n-  buffer.push(\" stream\\n\", string, \"\\nendstream\");\n-}\n-async function writeArray(array, buffer, transform) {\n-  buffer.push(\"[\");\n-  let first = true;\n-  for (const val of array) {\n-    if (!first) {\n-      buffer.push(\" \");\n-    } else {\n-      first = false;\n-    }\n-    await writeValue(val, buffer, transform);\n-  }\n-  buffer.push(\"]\");\n-}\n-async function writeValue(value, buffer, transform) {\n-  if (value instanceof Name) {\n-    buffer.push(`\u002F${escapePDFName(value.name)}`);\n-  } else if (value instanceof Ref) {\n-    buffer.push(`${value.num} ${value.gen} R`);\n-  } else if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n-    await writeArray(value, buffer, transform);\n-  } else if (typeof value === \"string\") {\n-    if (transform) {\n-      value = transform.encryptString(value);\n-    }\n-    buffer.push(`(${escapeString(value)})`);\n-  } else if (typeof value === \"number\") {\n-    buffer.push(numberToString(value));\n-  } else if (typeof value === \"boolean\") {\n-    buffer.push(value.toString());\n-  } else if (value instanceof Dict) {\n-    await writeDict(value, buffer, transform);\n-  } else if (value instanceof BaseStream) {\n-    await writeStream(value, buffer, transform);\n-  } else if (value === null) {\n-    buffer.push(\"null\");\n-  } else {\n-    warn(`Unhandled value in writer: ${typeof value}, please file a bug.`);\n-  }\n-}\n-function writeInt(number, size, offset, buffer) {\n-  for (let i = size + offset - 1; i > offset - 1; i--) {\n-    buffer[i] = number & 0xff;\n-    number >>= 8;\n-  }\n-  return offset + size;\n-}\n-function writeString(string, offset, buffer) {\n-  for (let i = 0, len = string.length; i \u003C len; i++) {\n-    buffer[offset + i] = string.charCodeAt(i) & 0xff;\n-  }\n-}\n-function computeMD5(filesize, xrefInfo) {\n-  const time = Math.floor(Date.now() \u002F 1000);\n-  const filename = xrefInfo.filename || \"\";\n-  const md5Buffer = [time.toString(), filename, filesize.toString()];\n-  let md5BufferLen = md5Buffer.reduce((a, str) => a + str.length, 0);\n-  for (const value of Object.values(xrefInfo.info)) {\n-    md5Buffer.push(value);\n-    md5BufferLen += value.length;\n-  }\n-  const array = new Uint8Array(md5BufferLen);\n-  let offset = 0;\n-  for (const str of md5Buffer) {\n-    writeString(str, offset, array);\n-    offset += str.length;\n-  }\n-  return bytesToString(calculateMD5(array));\n-}\n-function writeXFADataForAcroform(str, newRefs) {\n-  const xml = new SimpleXMLParser({\n-    hasAttributes: true\n-  }).parseFromString(str);\n-  for (const {\n-    xfa\n-  } of newRefs) {\n-    if (!xfa) {\n-      continue;\n-    }\n-    const {\n-      path,\n-      value\n-    } = xfa;\n-    if (!path) {\n-      continue;\n-    }\n-    const nodePath = parseXFAPath(path);\n-    let node = xml.documentElement.searchNode(nodePath, 0);\n-    if (!node && nodePath.length > 1) {\n-      node = xml.documentElement.searchNode([nodePath.at(-1)], 0);\n-    }\n-    if (node) {\n-      node.childNodes = Array.isArray(value) ? value.map(val => new SimpleDOMNode(\"value\", val)) : [new SimpleDOMNode(\"#text\", value)];\n-    } else {\n-      warn(`Node not found for path: ${path}`);\n-    }\n-  }\n-  const buffer = [];\n-  xml.documentElement.dump(buffer);\n-  return buffer.join(\"\");\n-}\n-async function updateAcroform({\n-  xref,\n-  acroForm,\n-  acroFormRef,\n-  hasXfa,\n-  hasXfaDatasetsEntry,\n-  xfaDatasetsRef,\n-  needAppearances,\n-  newRefs\n-}) {\n-  if (hasXfa && !hasXfaDatasetsEntry && !xfaDatasetsRef) {\n-    warn(\"XFA - Cannot save it\");\n-  }\n-  if (!needAppearances && (!hasXfa || !xfaDatasetsRef || hasXfaDatasetsEntry)) {\n-    return;\n-  }\n-  const dict = acroForm.clone();\n-  if (hasXfa && !hasXfaDatasetsEntry) {\n-    const newXfa = acroForm.get(\"XFA\").slice();\n-    newXfa.splice(2, 0, \"datasets\");\n-    newXfa.splice(3, 0, xfaDatasetsRef);\n-    dict.set(\"XFA\", newXfa);\n-  }\n-  if (needAppearances) {\n-    dict.set(\"NeedAppearances\", true);\n-  }\n-  const buffer = [];\n-  await writeObject(acroFormRef, dict, buffer, xref);\n-  newRefs.push({\n-    ref: acroFormRef,\n-    data: buffer.join(\"\")\n-  });\n-}\n-function updateXFA({\n-  xfaData,\n-  xfaDatasetsRef,\n-  newRefs,\n-  xref\n-}) {\n-  if (xfaData === null) {\n-    const datasets = xref.fetchIfRef(xfaDatasetsRef);\n-    xfaData = writeXFADataForAcroform(datasets.getString(), newRefs);\n-  }\n-  const encrypt = xref.encrypt;\n-  if (encrypt) {\n-    const transform = encrypt.createCipherTransform(xfaDatasetsRef.num, xfaDatasetsRef.gen);\n-    xfaData = transform.encryptString(xfaData);\n-  }\n-  const data = `${xfaDatasetsRef.num} ${xfaDatasetsRef.gen} obj\\n` + `\u003C\u003C \u002FType \u002FEmbeddedFile \u002FLength ${xfaData.length}>>\\nstream\\n` + xfaData + \"\\nendstream\\nendobj\\n\";\n-  newRefs.push({\n-    ref: xfaDatasetsRef,\n-    data\n-  });\n-}\n-async function getXRefTable(xrefInfo, baseOffset, newRefs, newXref, buffer) {\n-  buffer.push(\"xref\\n\");\n-  const indexes = getIndexes(newRefs);\n-  let indexesPosition = 0;\n-  for (const {\n-    ref,\n-    data\n-  } of newRefs) {\n-    if (ref.num === indexes[indexesPosition]) {\n-      buffer.push(`${indexes[indexesPosition]} ${indexes[indexesPosition + 1]}\\n`);\n-      indexesPosition += 2;\n-    }\n-    if (data !== null) {\n-      buffer.push(`${baseOffset.toString().padStart(10, \"0\")} ${Math.min(ref.gen, 0xffff).toString().padStart(5, \"0\")} n\\r\\n`);\n-      baseOffset += data.length;\n-    } else {\n-      buffer.push(`0000000000 ${Math.min(ref.gen + 1, 0xffff).toString().padStart(5, \"0\")} f\\r\\n`);\n-    }\n-  }\n-  computeIDs(baseOffset, xrefInfo, newXref);\n-  buffer.push(\"trailer\\n\");\n-  await writeDict(newXref, buffer);\n-  buffer.push(\"\\nstartxref\\n\", baseOffset.toString(), \"\\n%%EOF\\n\");\n-}\n-function getIndexes(newRefs) {\n-  const indexes = [];\n-  for (const {\n-    ref\n-  } of newRefs) {\n-    if (ref.num === indexes.at(-2) + indexes.at(-1)) {\n-      indexes[indexes.length - 1] += 1;\n-    } else {\n-      indexes.push(ref.num, 1);\n-    }\n-  }\n-  return indexes;\n-}\n-async function getXRefStreamTable(xrefInfo, baseOffset, newRefs, newXref, buffer) {\n-  const xrefTableData = [];\n-  let maxOffset = 0;\n-  let maxGen = 0;\n-  for (const {\n-    ref,\n-    data\n-  } of newRefs) {\n-    let gen;\n-    maxOffset = Math.max(maxOffset, baseOffset);\n-    if (data !== null) {\n-      gen = Math.min(ref.gen, 0xffff);\n-      xrefTableData.push([1, baseOffset, gen]);\n-      baseOffset += data.length;\n-    } else {\n-      gen = Math.min(ref.gen + 1, 0xffff);\n-      xrefTableData.push([0, 0, gen]);\n-    }\n-    maxGen = Math.max(maxGen, gen);\n-  }\n-  newXref.set(\"Index\", getIndexes(newRefs));\n-  const offsetSize = getSizeInBytes(maxOffset);\n-  const maxGenSize = getSizeInBytes(maxGen);\n-  const sizes = [1, offsetSize, maxGenSize];\n-  newXref.set(\"W\", sizes);\n-  computeIDs(baseOffset, xrefInfo, newXref);\n-  const structSize = sizes.reduce((a, x) => a + x, 0);\n-  const data = new Uint8Array(structSize * xrefTableData.length);\n-  const stream = new Stream(data);\n-  stream.dict = newXref;\n-  let offset = 0;\n-  for (const [type, objOffset, gen] of xrefTableData) {\n-    offset = writeInt(type, sizes[0], offset, data);\n-    offset = writeInt(objOffset, sizes[1], offset, data);\n-    offset = writeInt(gen, sizes[2], offset, data);\n-  }\n-  await writeObject(xrefInfo.newRef, stream, buffer, {});\n-  buffer.push(\"startxref\\n\", baseOffset.toString(), \"\\n%%EOF\\n\");\n-}\n-function computeIDs(baseOffset, xrefInfo, newXref) {\n-  if (Array.isArray(xrefInfo.fileIds) && xrefInfo.fileIds.length > 0) {\n-    const md5 = computeMD5(baseOffset, xrefInfo);\n-    newXref.set(\"ID\", [xrefInfo.fileIds[0], md5]);\n-  }\n-}\n-function getTrailerDict(xrefInfo, newRefs, useXrefStream) {\n-  const newXref = new Dict(null);\n-  newXref.set(\"Prev\", xrefInfo.startXRef);\n-  const refForXrefTable = xrefInfo.newRef;\n-  if (useXrefStream) {\n-    newRefs.push({\n-      ref: refForXrefTable,\n-      data: \"\"\n-    });\n-    newXref.set(\"Size\", refForXrefTable.num + 1);\n-    newXref.set(\"Type\", Name.get(\"XRef\"));\n-  } else {\n-    newXref.set(\"Size\", refForXrefTable.num);\n-  }\n-  if (xrefInfo.rootRef !== null) {\n-    newXref.set(\"Root\", xrefInfo.rootRef);\n-  }\n-  if (xrefInfo.infoRef !== null) {\n-    newXref.set(\"Info\", xrefInfo.infoRef);\n-  }\n-  if (xrefInfo.encryptRef !== null) {\n-    newXref.set(\"Encrypt\", xrefInfo.encryptRef);\n-  }\n-  return newXref;\n-}\n-async function incrementalUpdate({\n-  originalData,\n-  xrefInfo,\n-  newRefs,\n-  xref = null,\n-  hasXfa = false,\n-  xfaDatasetsRef = null,\n-  hasXfaDatasetsEntry = false,\n-  needAppearances,\n-  acroFormRef = null,\n-  acroForm = null,\n-  xfaData = null,\n-  useXrefStream = false\n-}) {\n-  await updateAcroform({\n-    xref,\n-    acroForm,\n-    acroFormRef,\n-    hasXfa,\n-    hasXfaDatasetsEntry,\n-    xfaDatasetsRef,\n-    needAppearances,\n-    newRefs\n-  });\n-  if (hasXfa) {\n-    updateXFA({\n-      xfaData,\n-      xfaDatasetsRef,\n-      newRefs,\n-      xref\n-    });\n-  }\n-  const buffer = [];\n-  let baseOffset = originalData.length;\n-  const lastByte = originalData.at(-1);\n-  if (lastByte !== 0x0a && lastByte !== 0x0d) {\n-    buffer.push(\"\\n\");\n-    baseOffset += 1;\n-  }\n-  const newXref = getTrailerDict(xrefInfo, newRefs, useXrefStream);\n-  newRefs = newRefs.sort((a, b) => a.ref.num - b.ref.num);\n-  for (const {\n-    data\n-  } of newRefs) {\n-    if (data !== null) {\n-      buffer.push(data);\n-    }\n-  }\n-  await (useXrefStream ? getXRefStreamTable(xrefInfo, baseOffset, newRefs, newXref, buffer) : getXRefTable(xrefInfo, baseOffset, newRefs, newXref, buffer));\n-  const totalLength = buffer.reduce((a, str) => a + str.length, originalData.length);\n-  const array = new Uint8Array(totalLength);\n-  array.set(originalData);\n-  let offset = originalData.length;\n-  for (const str of buffer) {\n-    writeString(str, offset, array);\n-    offset += str.length;\n-  }\n-  return array;\n-}\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fstruct_tree.js\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fstruct_tree.js\n \n \n \n@@ -36348,7 +41638,8 @@\n   ELEMENT: 5\n };\n class StructTreeRoot {\n-  constructor(rootDict, rootRef) {\n+  constructor(xref, rootDict, rootRef) {\n+    this.xref = xref;\n     this.dict = rootDict;\n     this.ref = rootRef instanceof Ref ? rootRef : null;\n     this.roleMap = new Map();\n@@ -36377,12 +41668,11 @@\n     if (!(roleMapDict instanceof Dict)) {\n       return;\n     }\n-    roleMapDict.forEach((key, value) => {\n-      if (!(value instanceof Name)) {\n-        return;\n+    for (const [key, value] of roleMapDict) {\n+      if (value instanceof Name) {\n+        this.roleMap.set(key, value.name);\n       }\n-      this.roleMap.set(key, value.name);\n-    });\n+    }\n   }\n   static async canCreateStructureTree({\n     catalogRef,\n@@ -36426,9 +41716,9 @@\n     xref,\n     catalogRef,\n     pdfManager,\n-    newRefs\n+    changes\n   }) {\n-    const root = pdfManager.catalog.cloneDict();\n+    const root = await pdfManager.ensureCatalog(\"cloneDict\");\n     const cache = new RefSetCache();\n     cache.put(catalogRef, root);\n     const structTreeRootRef = xref.getNewTemporaryRef();\n@@ -36446,27 +41736,24 @@\n     const nextKey = await this.#writeKids({\n       newAnnotationsByPage,\n       structTreeRootRef,\n+      structTreeRoot: null,\n       kids,\n       nums,\n       xref,\n       pdfManager,\n+      changes,\n       cache\n     });\n     structTreeRoot.set(\"ParentTreeNextKey\", nextKey);\n     cache.put(parentTreeRef, parentTree);\n-    const buffer = [];\n     for (const [ref, obj] of cache.items()) {\n-      buffer.length = 0;\n-      await writeObject(ref, obj, buffer, xref);\n-      newRefs.push({\n-        ref,\n-        data: buffer.join(\"\")\n+      changes.put(ref, {\n+        data: obj\n       });\n     }\n   }\n   async canUpdateStructTree({\n     pdfManager,\n-    xref,\n     newAnnotationsByPage\n   }) {\n     if (!this.ref) {\n@@ -36488,7 +41775,7 @@\n       warn(\"Cannot update the struct tree: nums isn't an array.\");\n       return false;\n     }\n-    const numberTree = new NumberTree(parentTree, xref);\n+    const numberTree = new NumberTree(parentTree, this.xref);\n     for (const pageIndex of newAnnotationsByPage.keys()) {\n       const {\n         pageDict\n@@ -36509,13 +41796,15 @@\n       } = await pdfManager.getPage(pageIndex);\n       StructTreeRoot.#collectParents({\n         elements,\n-        xref: this.dict.xref,\n+        xref: this.xref,\n         pageDict,\n         numberTree\n       });\n       for (const element of elements) {\n         if (element.accessibilityData?.type) {\n-          element.parentTreeId = nextKey++;\n+          if (!(element.accessibilityData.structParent >= 0)) {\n+            element.parentTreeId = nextKey++;\n+          }\n           hasNothingToUpdate = false;\n         }\n       }\n@@ -36534,11 +41823,13 @@\n   async updateStructureTree({\n     newAnnotationsByPage,\n     pdfManager,\n-    newRefs\n+    changes\n   }) {\n-    const xref = this.dict.xref;\n+    const {\n+      ref: structTreeRootRef,\n+      xref\n+    } = this;\n     const structTreeRoot = this.dict.clone();\n-    const structTreeRootRef = this.ref;\n     const cache = new RefSetCache();\n     cache.put(structTreeRootRef, structTreeRoot);\n     let parentTreeRef = structTreeRoot.getRaw(\"ParentTree\");\n@@ -36562,44 +41853,49 @@\n     if (!numsRef) {\n       parentTree.set(\"Nums\", nums);\n     }\n-    const newNextkey = await StructTreeRoot.#writeKids({\n+    const newNextKey = await StructTreeRoot.#writeKids({\n       newAnnotationsByPage,\n       structTreeRootRef,\n+      structTreeRoot: this,\n       kids: null,\n       nums,\n       xref,\n       pdfManager,\n+      changes,\n       cache\n     });\n-    structTreeRoot.set(\"ParentTreeNextKey\", newNextkey);\n+    if (newNextKey === -1) {\n+      return;\n+    }\n+    structTreeRoot.set(\"ParentTreeNextKey\", newNextKey);\n     if (numsRef) {\n       cache.put(numsRef, nums);\n     }\n-    const buffer = [];\n     for (const [ref, obj] of cache.items()) {\n-      buffer.length = 0;\n-      await writeObject(ref, obj, buffer, xref);\n-      newRefs.push({\n-        ref,\n-        data: buffer.join(\"\")\n+      changes.put(ref, {\n+        data: obj\n       });\n     }\n   }\n   static async #writeKids({\n     newAnnotationsByPage,\n     structTreeRootRef,\n+    structTreeRoot,\n     kids,\n     nums,\n     xref,\n     pdfManager,\n+    changes,\n     cache\n   }) {\n     const objr = Name.get(\"OBJR\");\n-    let nextKey = -Infinity;\n+    let nextKey = -1;\n+    let structTreePageObjs;\n     for (const [pageIndex, elements] of newAnnotationsByPage) {\n+      const page = await pdfManager.getPage(pageIndex);\n       const {\n         ref: pageRef\n-      } = await pdfManager.getPage(pageIndex);\n+      } = page;\n       const isPageRef = pageRef instanceof Ref;\n       for (const {\n         accessibilityData,\n@@ -36611,32 +41907,29 @@\n           continue;\n         }\n         const {\n-          type,\n-          title,\n-          lang,\n-          alt,\n-          expanded,\n-          actualText\n+          structParent\n         } = accessibilityData;\n+        if (structTreeRoot && Number.isInteger(structParent) && structParent >= 0) {\n+          let objs = (structTreePageObjs ||= new Map()).get(pageIndex);\n+          if (objs === undefined) {\n+            const structTreePage = new StructTreePage(structTreeRoot, page.pageDict);\n+            objs = structTreePage.collectObjects(pageRef);\n+            structTreePageObjs.set(pageIndex, objs);\n+          }\n+          const objRef = objs?.get(structParent);\n+          if (objRef) {\n+            const tagDict = xref.fetch(objRef).clone();\n+            StructTreeRoot.#writeProperties(tagDict, accessibilityData);\n+            changes.put(objRef, {\n+              data: tagDict\n+            });\n+            continue;\n+          }\n+        }\n         nextKey = Math.max(nextKey, parentTreeId);\n         const tagRef = xref.getNewTemporaryRef();\n         const tagDict = new Dict(xref);\n-        tagDict.set(\"S\", Name.get(type));\n-        if (title) {\n-          tagDict.set(\"T\", title);\n-        }\n-        if (lang) {\n-          tagDict.set(\"Lang\", lang);\n-        }\n-        if (alt) {\n-          tagDict.set(\"Alt\", alt);\n-        }\n-        if (expanded) {\n-          tagDict.set(\"E\", expanded);\n-        }\n-        if (actualText) {\n-          tagDict.set(\"ActualText\", actualText);\n-        }\n+        StructTreeRoot.#writeProperties(tagDict, accessibilityData);\n         await this.#updateParentTag({\n           structTreeParent,\n           tagDict,\n@@ -36659,6 +41952,31 @@\n     }\n     return nextKey + 1;\n   }\n+  static #writeProperties(tagDict, {\n+    type,\n+    title,\n+    lang,\n+    alt,\n+    expanded,\n+    actualText\n+  }) {\n+    tagDict.set(\"S\", Name.get(type));\n+    if (title) {\n+      tagDict.set(\"T\", stringToAsciiOrUTF16BE(title));\n+    }\n+    if (lang) {\n+      tagDict.set(\"Lang\", stringToAsciiOrUTF16BE(lang));\n+    }\n+    if (alt) {\n+      tagDict.set(\"Alt\", stringToAsciiOrUTF16BE(alt));\n+    }\n+    if (expanded) {\n+      tagDict.set(\"E\", stringToAsciiOrUTF16BE(expanded));\n+    }\n+    if (actualText) {\n+      tagDict.set(\"ActualText\", stringToAsciiOrUTF16BE(actualText));\n+    }\n+  }\n   static #collectParents({\n     elements,\n     xref,\n@@ -36777,6 +42095,7 @@\n class StructElementNode {\n   constructor(tree, dict) {\n     this.tree = tree;\n+    this.xref = tree.xref;\n     this.dict = dict;\n     this.kids = [];\n     this.parseKids();\n@@ -36787,10 +42106,7 @@\n     const {\n       root\n     } = this.tree;\n-    if (root.roleMap.has(name)) {\n-      return root.roleMap.get(name);\n-    }\n-    return name;\n+    return root.roleMap.get(name) ?? name;\n   }\n   parseKids() {\n     let pageObjId = null;\n@@ -36801,7 +42117,7 @@\n     const kids = this.dict.get(\"K\");\n     if (Array.isArray(kids)) {\n       for (const kid of kids) {\n-        const element = this.parseKid(pageObjId, kid);\n+        const element = this.parseKid(pageObjId, this.xref.fetchIfRef(kid));\n         if (element) {\n           this.kids.push(element);\n         }\n@@ -36824,37 +42140,31 @@\n         pageObjId\n       });\n     }\n-    let kidDict = null;\n-    if (kid instanceof Ref) {\n-      kidDict = this.dict.xref.fetch(kid);\n-    } else if (kid instanceof Dict) {\n-      kidDict = kid;\n-    }\n-    if (!kidDict) {\n+    if (!(kid instanceof Dict)) {\n       return null;\n     }\n-    const pageRef = kidDict.getRaw(\"Pg\");\n+    const pageRef = kid.getRaw(\"Pg\");\n     if (pageRef instanceof Ref) {\n       pageObjId = pageRef.toString();\n     }\n-    const type = kidDict.get(\"Type\") instanceof Name ? kidDict.get(\"Type\").name : null;\n+    const type = kid.get(\"Type\") instanceof Name ? kid.get(\"Type\").name : null;\n     if (type === \"MCR\") {\n       if (this.tree.pageDict.objId !== pageObjId) {\n         return null;\n       }\n-      const kidRef = kidDict.getRaw(\"Stm\");\n+      const kidRef = kid.getRaw(\"Stm\");\n       return new StructElement({\n         type: StructElementType.STREAM_CONTENT,\n         refObjId: kidRef instanceof Ref ? kidRef.toString() : null,\n         pageObjId,\n-        mcid: kidDict.get(\"MCID\")\n+        mcid: kid.get(\"MCID\")\n       });\n     }\n     if (type === \"OBJR\") {\n       if (this.tree.pageDict.objId !== pageObjId) {\n         return null;\n       }\n-      const kidRef = kidDict.getRaw(\"Obj\");\n+      const kidRef = kid.getRaw(\"Obj\");\n       return new StructElement({\n         type: StructElementType.OBJECT,\n         refObjId: kidRef instanceof Ref ? kidRef.toString() : null,\n@@ -36863,7 +42173,7 @@\n     }\n     return new StructElement({\n       type: StructElementType.ELEMENT,\n-      dict: kidDict\n+      dict: kid\n     });\n   }\n }\n@@ -36886,12 +42196,35 @@\n class StructTreePage {\n   constructor(structTreeRoot, pageDict) {\n     this.root = structTreeRoot;\n-    this.rootDict = structTreeRoot ? structTreeRoot.dict : null;\n+    this.xref = structTreeRoot?.xref ?? null;\n+    this.rootDict = structTreeRoot?.dict ?? null;\n     this.pageDict = pageDict;\n     this.nodes = [];\n   }\n+  collectObjects(pageRef) {\n+    if (!this.root || !this.rootDict || !(pageRef instanceof Ref)) {\n+      return null;\n+    }\n+    const parentTree = this.rootDict.get(\"ParentTree\");\n+    if (!parentTree) {\n+      return null;\n+    }\n+    const ids = this.root.structParentIds?.get(pageRef);\n+    if (!ids) {\n+      return null;\n+    }\n+    const map = new Map();\n+    const numberTree = new NumberTree(parentTree, this.xref);\n+    for (const [elemId] of ids) {\n+      const obj = numberTree.getRaw(elemId);\n+      if (obj instanceof Ref) {\n+        map.set(elemId, obj);\n+      }\n+    }\n+    return map;\n+  }\n   parse(pageRef) {\n-    if (!this.root || !this.rootDict) {\n+    if (!this.root || !this.rootDict || !(pageRef instanceof Ref)) {\n       return;\n     }\n     const parentTree = this.rootDict.get(\"ParentTree\");\n@@ -36899,18 +42232,18 @@\n       return;\n     }\n     const id = this.pageDict.get(\"StructParents\");\n-    const ids = pageRef instanceof Ref && this.root.structParentIds?.get(pageRef);\n+    const ids = this.root.structParentIds?.get(pageRef);\n     if (!Number.isInteger(id) && !ids) {\n       return;\n     }\n     const map = new Map();\n-    const numberTree = new NumberTree(parentTree, this.rootDict.xref);\n+    const numberTree = new NumberTree(parentTree, this.xref);\n     if (Number.isInteger(id)) {\n       const parentArray = numberTree.get(id);\n       if (Array.isArray(parentArray)) {\n         for (const ref of parentArray) {\n           if (ref instanceof Ref) {\n-            this.addNode(this.rootDict.xref.fetch(ref), map);\n+            this.addNode(this.xref.fetch(ref), map);\n           }\n         }\n       }\n@@ -36921,7 +42254,7 @@\n     for (const [elemId, type] of ids) {\n       const obj = numberTree.get(elemId);\n       if (obj) {\n-        const elem = this.addNode(this.rootDict.xref.fetchIfRef(obj), map);\n+        const elem = this.addNode(this.xref.fetchIfRef(obj), map);\n         if (elem?.kids?.length === 1 && elem.kids[0].type === StructElementType.OBJECT) {\n           elem.kids[0].type = type;\n         }\n@@ -36933,13 +42266,16 @@\n       warn(\"StructTree MAX_DEPTH reached.\");\n       return null;\n     }\n+    if (!(dict instanceof Dict)) {\n+      return null;\n+    }\n     if (map.has(dict)) {\n       return map.get(dict);\n     }\n     const element = new StructElementNode(this, dict);\n     map.set(dict, element);\n     const parent = dict.get(\"P\");\n-    if (!parent || isName(parent.get(\"Type\"), \"StructTreeRoot\")) {\n+    if (!(parent instanceof Dict) || isName(parent.get(\"Type\"), \"StructTreeRoot\")) {\n       if (!this.addTopLevelNode(dict, element)) {\n         map.delete(dict);\n       }\n@@ -36996,10 +42332,26 @@\n       obj.role = node.role;\n       obj.children = [];\n       parent.children.push(obj);\n-      const alt = node.dict.get(\"Alt\");\n+      let alt = node.dict.get(\"Alt\");\n+      if (typeof alt !== \"string\") {\n+        alt = node.dict.get(\"ActualText\");\n+      }\n       if (typeof alt === \"string\") {\n         obj.alt = stringToPDFString(alt);\n       }\n+      const a = node.dict.get(\"A\");\n+      if (a instanceof Dict) {\n+        const bbox = lookupNormalRect(a.getArray(\"BBox\"), null);\n+        if (bbox) {\n+          obj.bbox = bbox;\n+        } else {\n+          const width = a.get(\"Width\");\n+          const height = a.get(\"Height\");\n+          if (typeof width === \"number\" && width > 0 && typeof height === \"number\" && height > 0) {\n+            obj.bbox = [0, 0, width, height];\n+          }\n+        }\n+      }\n       const lang = node.dict.get(\"Lang\");\n       if (typeof lang === \"string\") {\n         obj.lang = stringToPDFString(lang);\n@@ -37040,7 +42392,7 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fcatalog.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fcatalog.js\n \n \n \n@@ -37052,51 +42404,22 @@\n \n \n \n-function isValidExplicitDest(dest) {\n-  if (!Array.isArray(dest) || dest.length \u003C 2) {\n-    return false;\n-  }\n-  const [page, zoom, ...args] = dest;\n-  if (!(page instanceof Ref) && !Number.isInteger(page)) {\n-    return false;\n-  }\n-  if (!(zoom instanceof Name)) {\n-    return false;\n-  }\n-  let allowNull = true;\n-  switch (zoom.name) {\n-    case \"XYZ\":\n-      if (args.length !== 3) {\n-        return false;\n-      }\n-      break;\n-    case \"Fit\":\n-    case \"FitB\":\n-      return args.length === 0;\n-    case \"FitH\":\n-    case \"FitBH\":\n-    case \"FitV\":\n-    case \"FitBV\":\n-      if (args.length !== 1) {\n-        return false;\n-      }\n-      break;\n-    case \"FitR\":\n-      if (args.length !== 4) {\n-        return false;\n-      }\n-      allowNull = false;\n-      break;\n-    default:\n-      return false;\n-  }\n-  for (const arg of args) {\n-    if (!(typeof arg === \"number\" || allowNull && arg === null)) {\n-      return false;\n-    }\n-  }\n-  return true;\n-}\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+const isRef = v => v instanceof Ref;\n+const isValidExplicitDest = _isValidExplicitDest.bind(null, isRef, isName);\n function fetchDest(dest) {\n   if (dest instanceof Dict) {\n     dest = dest.get(\"D\");\n@@ -37110,7 +42433,7 @@\n       dest = dest.name;\n     }\n     if (typeof dest === \"string\") {\n-      return stringToPDFString(dest);\n+      return stringToPDFString(dest, true);\n     } else if (isValidExplicitDest(dest)) {\n       return JSON.stringify(dest);\n     }\n@@ -37118,29 +42441,32 @@\n   return null;\n }\n class Catalog {\n+  #actualNumPages = null;\n+  #catDict = null;\n+  builtInCMapCache = new Map();\n+  fontCache = new RefSetCache();\n+  globalColorSpaceCache = new GlobalColorSpaceCache();\n+  globalImageCache = new GlobalImageCache();\n+  nonBlendModesSet = new RefSet();\n+  pageDictCache = new RefSetCache();\n+  pageIndexCache = new RefSetCache();\n+  pageKidsCountCache = new RefSetCache();\n+  standardFontDataCache = new Map();\n+  systemFontCache = new Map();\n   constructor(pdfManager, xref) {\n     this.pdfManager = pdfManager;\n     this.xref = xref;\n-    this._catDict = xref.getCatalogObj();\n-    if (!(this._catDict instanceof Dict)) {\n+    this.#catDict = xref.getCatalogObj();\n+    if (!(this.#catDict instanceof Dict)) {\n       throw new FormatError(\"Catalog object is not a dictionary.\");\n     }\n     this.toplevelPagesDict;\n-    this._actualNumPages = null;\n-    this.fontCache = new RefSetCache();\n-    this.builtInCMapCache = new Map();\n-    this.standardFontDataCache = new Map();\n-    this.globalImageCache = new GlobalImageCache();\n-    this.pageKidsCountCache = new RefSetCache();\n-    this.pageIndexCache = new RefSetCache();\n-    this.nonBlendModesSet = new RefSet();\n-    this.systemFontCache = new Map();\n   }\n   cloneDict() {\n-    return this._catDict.clone();\n+    return this.#catDict.clone();\n   }\n   get version() {\n-    const version = this._catDict.get(\"Version\");\n+    const version = this.#catDict.get(\"Version\");\n     if (version instanceof Name) {\n       if (PDF_VERSION_REGEXP.test(version.name)) {\n         return shadow(this, \"version\", version.name);\n@@ -37150,17 +42476,17 @@\n     return shadow(this, \"version\", null);\n   }\n   get lang() {\n-    const lang = this._catDict.get(\"Lang\");\n+    const lang = this.#catDict.get(\"Lang\");\n     return shadow(this, \"lang\", lang && typeof lang === \"string\" ? stringToPDFString(lang) : null);\n   }\n   get needsRendering() {\n-    const needsRendering = this._catDict.get(\"NeedsRendering\");\n+    const needsRendering = this.#catDict.get(\"NeedsRendering\");\n     return shadow(this, \"needsRendering\", typeof needsRendering === \"boolean\" ? needsRendering : false);\n   }\n   get collection() {\n     let collection = null;\n     try {\n-      const obj = this._catDict.get(\"Collection\");\n+      const obj = this.#catDict.get(\"Collection\");\n       if (obj instanceof Dict && obj.size > 0) {\n         collection = obj;\n       }\n@@ -37175,7 +42501,7 @@\n   get acroForm() {\n     let acroForm = null;\n     try {\n-      const obj = this._catDict.get(\"AcroForm\");\n+      const obj = this.#catDict.get(\"AcroForm\");\n       if (obj instanceof Dict && obj.size > 0) {\n         acroForm = obj;\n       }\n@@ -37188,11 +42514,11 @@\n     return shadow(this, \"acroForm\", acroForm);\n   }\n   get acroFormRef() {\n-    const value = this._catDict.getRaw(\"AcroForm\");\n+    const value = this.#catDict.getRaw(\"AcroForm\");\n     return shadow(this, \"acroFormRef\", value instanceof Ref ? value : null);\n   }\n   get metadata() {\n-    const streamRef = this._catDict.getRaw(\"Metadata\");\n+    const streamRef = this.#catDict.getRaw(\"Metadata\");\n     if (!(streamRef instanceof Ref)) {\n       return shadow(this, \"metadata\", null);\n     }\n@@ -37220,7 +42546,7 @@\n   get markInfo() {\n     let markInfo = null;\n     try {\n-      markInfo = this._readMarkInfo();\n+      markInfo = this.#readMarkInfo();\n     } catch (ex) {\n       if (ex instanceof MissingDataException) {\n         throw ex;\n@@ -37229,8 +42555,8 @@\n     }\n     return shadow(this, \"markInfo\", markInfo);\n   }\n-  _readMarkInfo() {\n-    const obj = this._catDict.get(\"MarkInfo\");\n+  #readMarkInfo() {\n+    const obj = this.#catDict.get(\"MarkInfo\");\n     if (!(obj instanceof Dict)) {\n       return null;\n     }\n@@ -37250,7 +42576,7 @@\n   get structTreeRoot() {\n     let structTree = null;\n     try {\n-      structTree = this._readStructTreeRoot();\n+      structTree = this.#readStructTreeRoot();\n     } catch (ex) {\n       if (ex instanceof MissingDataException) {\n         throw ex;\n@@ -37259,18 +42585,18 @@\n     }\n     return shadow(this, \"structTreeRoot\", structTree);\n   }\n-  _readStructTreeRoot() {\n-    const rawObj = this._catDict.getRaw(\"StructTreeRoot\");\n+  #readStructTreeRoot() {\n+    const rawObj = this.#catDict.getRaw(\"StructTreeRoot\");\n     const obj = this.xref.fetchIfRef(rawObj);\n     if (!(obj instanceof Dict)) {\n       return null;\n     }\n-    const root = new StructTreeRoot(obj, rawObj);\n+    const root = new StructTreeRoot(this.xref, obj, rawObj);\n     root.init();\n     return root;\n   }\n   get toplevelPagesDict() {\n-    const pagesObj = this._catDict.get(\"Pages\");\n+    const pagesObj = this.#catDict.get(\"Pages\");\n     if (!(pagesObj instanceof Dict)) {\n       throw new FormatError(\"Invalid top-level pages dictionary.\");\n     }\n@@ -37279,7 +42605,7 @@\n   get documentOutline() {\n     let obj = null;\n     try {\n-      obj = this._readDocumentOutline();\n+      obj = this.#readDocumentOutline();\n     } catch (ex) {\n       if (ex instanceof MissingDataException) {\n         throw ex;\n@@ -37288,8 +42614,8 @@\n     }\n     return shadow(this, \"documentOutline\", obj);\n   }\n-  _readDocumentOutline() {\n-    let obj = this._catDict.get(\"Outlines\");\n+  #readDocumentOutline() {\n+    let obj = this.#catDict.get(\"Outlines\");\n     if (!(obj instanceof Dict)) {\n       return null;\n     }\n@@ -37334,7 +42660,7 @@\n       const count = outlineDict.get(\"Count\");\n       let rgbColor = blackColor;\n       if (isNumberArray(color, 3) && (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)) {\n-        rgbColor = ColorSpace.singletons.rgb.getRgb(color, 0);\n+        rgbColor = ColorSpaceUtils.rgb.getRgb(color, 0);\n       }\n       const outlineItem = {\n         action: data.action,\n@@ -37374,7 +42700,7 @@\n   get permissions() {\n     let permissions = null;\n     try {\n-      permissions = this._readPermissions();\n+      permissions = this.#readPermissions();\n     } catch (ex) {\n       if (ex instanceof MissingDataException) {\n         throw ex;\n@@ -37383,7 +42709,7 @@\n     }\n     return shadow(this, \"permissions\", permissions);\n   }\n-  _readPermissions() {\n+  #readPermissions() {\n     const encrypt = this.xref.trailer.get(\"Encrypt\");\n     if (!(encrypt instanceof Dict)) {\n       return null;\n@@ -37405,7 +42731,7 @@\n   get optionalContentConfig() {\n     let config = null;\n     try {\n-      const properties = this._catDict.get(\"OCProperties\");\n+      const properties = this.#catDict.get(\"OCProperties\");\n       if (!properties) {\n         return shadow(this, \"optionalContentConfig\", null);\n       }\n@@ -37417,17 +42743,14 @@\n       if (!Array.isArray(groupsData)) {\n         return shadow(this, \"optionalContentConfig\", null);\n       }\n-      const groups = [];\n-      const groupRefs = new RefSet();\n+      const groupRefCache = new RefSetCache();\n       for (const groupRef of groupsData) {\n-        if (!(groupRef instanceof Ref) || groupRefs.has(groupRef)) {\n+        if (!(groupRef instanceof Ref) || groupRefCache.has(groupRef)) {\n           continue;\n         }\n-        groupRefs.put(groupRef);\n-        groups.push(this.#readOptionalContentGroup(groupRef));\n+        groupRefCache.put(groupRef, this.#readOptionalContentGroup(groupRef));\n       }\n-      config = this.#readOptionalContentConfig(defaultConfig, groupRefs);\n-      config.groups = groups;\n+      config = this.#readOptionalContentConfig(defaultConfig, groupRefCache);\n     } catch (ex) {\n       if (ex instanceof MissingDataException) {\n         throw ex;\n@@ -37445,7 +42768,8 @@\n       usage: {\n         print: null,\n         view: null\n-      }\n+      },\n+      rbGroups: []\n     };\n     const name = group.get(\"Name\");\n     if (typeof name === \"string\") {\n@@ -37491,15 +42815,12 @@\n     }\n     return obj;\n   }\n-  #readOptionalContentConfig(config, contentGroupRefs) {\n+  #readOptionalContentConfig(config, groupRefCache) {\n     function parseOnOff(refs) {\n       const onParsed = [];\n       if (Array.isArray(refs)) {\n         for (const value of refs) {\n-          if (!(value instanceof Ref)) {\n-            continue;\n-          }\n-          if (contentGroupRefs.has(value)) {\n+          if (value instanceof Ref && groupRefCache.has(value)) {\n             onParsed.push(value.toString());\n           }\n         }\n@@ -37512,7 +42833,7 @@\n       }\n       const order = [];\n       for (const value of refs) {\n-        if (value instanceof Ref && contentGroupRefs.has(value)) {\n+        if (value instanceof Ref && groupRefCache.has(value)) {\n           parsedOrderRefs.put(value);\n           order.push(value.toString());\n           continue;\n@@ -37526,7 +42847,7 @@\n         return order;\n       }\n       const hiddenGroups = [];\n-      for (const groupRef of contentGroupRefs) {\n+      for (const [groupRef] of groupRefCache.items()) {\n         if (parsedOrderRefs.has(groupRef)) {\n           continue;\n         }\n@@ -37554,7 +42875,7 @@\n         return null;\n       }\n       const nestedOrder = parseOrder(value.slice(1), nestedLevels);\n-      if (!nestedOrder || !nestedOrder.length) {\n+      if (!nestedOrder?.length) {\n         return null;\n       }\n       return {\n@@ -37562,9 +42883,28 @@\n         order: nestedOrder\n       };\n     }\n+    function parseRBGroups(rbGroups) {\n+      if (!Array.isArray(rbGroups)) {\n+        return;\n+      }\n+      for (const value of rbGroups) {\n+        const rbGroup = xref.fetchIfRef(value);\n+        if (!Array.isArray(rbGroup) || !rbGroup.length) {\n+          continue;\n+        }\n+        const parsedRbGroup = new Set();\n+        for (const ref of rbGroup) {\n+          if (ref instanceof Ref && groupRefCache.has(ref) && !parsedRbGroup.has(ref.toString())) {\n+            parsedRbGroup.add(ref.toString());\n+            groupRefCache.get(ref).rbGroups.push(parsedRbGroup);\n+          }\n+        }\n+      }\n+    }\n     const xref = this.xref,\n       parsedOrderRefs = new RefSet(),\n       MAX_NESTED_LEVELS = 10;\n+    parseRBGroups(config.get(\"RBGroups\"));\n     return {\n       name: typeof config.get(\"Name\") === \"string\" ? stringToPDFString(config.get(\"Name\")) : null,\n       creator: typeof config.get(\"Creator\") === \"string\" ? stringToPDFString(config.get(\"Creator\")) : null,\n@@ -37572,14 +42912,14 @@\n       on: parseOnOff(config.get(\"ON\")),\n       off: parseOnOff(config.get(\"OFF\")),\n       order: parseOrder(config.get(\"Order\")),\n-      groups: null\n+      groups: [...groupRefCache]\n     };\n   }\n   setActualNumPages(num = null) {\n-    this._actualNumPages = num;\n+    this.#actualNumPages = num;\n   }\n   get hasActualNumPages() {\n-    return this._actualNumPages !== null;\n+    return this.#actualNumPages !== null;\n   }\n   get _pagesCount() {\n     const obj = this.toplevelPagesDict.get(\"Count\");\n@@ -37589,61 +42929,66 @@\n     return shadow(this, \"_pagesCount\", obj);\n   }\n   get numPages() {\n-    return this.hasActualNumPages ? this._actualNumPages : this._pagesCount;\n+    return this.#actualNumPages ?? this._pagesCount;\n   }\n   get destinations() {\n-    const obj = this._readDests(),\n+    const rawDests = this.#readDests(),\n       dests = Object.create(null);\n-    if (obj instanceof NameTree) {\n-      for (const [key, value] of obj.getAll()) {\n-        const dest = fetchDest(value);\n-        if (dest) {\n-          dests[stringToPDFString(key)] = dest;\n+    for (const obj of rawDests) {\n+      if (obj instanceof NameTree) {\n+        for (const [key, value] of obj.getAll()) {\n+          const dest = fetchDest(value);\n+          if (dest) {\n+            dests[stringToPDFString(key, true)] = dest;\n+          }\n         }\n-      }\n-    } else if (obj instanceof Dict) {\n-      obj.forEach(function (key, value) {\n-        const dest = fetchDest(value);\n-        if (dest) {\n-          dests[key] = dest;\n+      } else if (obj instanceof Dict) {\n+        for (const [key, value] of obj) {\n+          const dest = fetchDest(value);\n+          if (dest) {\n+            dests[stringToPDFString(key, true)] ||= dest;\n+          }\n         }\n-      });\n+      }\n     }\n     return shadow(this, \"destinations\", dests);\n   }\n   getDestination(id) {\n-    const obj = this._readDests();\n-    if (obj instanceof NameTree) {\n-      const dest = fetchDest(obj.get(id));\n-      if (dest) {\n-        return dest;\n-      }\n-      const allDest = this.destinations[id];\n-      if (allDest) {\n-        warn(`Found \"${id}\" at an incorrect position in the NameTree.`);\n-        return allDest;\n+    if (this.hasOwnProperty(\"destinations\")) {\n+      return this.destinations[id] ?? null;\n+    }\n+    const rawDests = this.#readDests();\n+    for (const obj of rawDests) {\n+      if (obj instanceof NameTree || obj instanceof Dict) {\n+        const dest = fetchDest(obj.get(id));\n+        if (dest) {\n+          return dest;\n+        }\n       }\n-    } else if (obj instanceof Dict) {\n-      const dest = fetchDest(obj.get(id));\n+    }\n+    if (rawDests.length) {\n+      const dest = this.destinations[id];\n       if (dest) {\n         return dest;\n       }\n     }\n     return null;\n   }\n-  _readDests() {\n-    const obj = this._catDict.get(\"Names\");\n+  #readDests() {\n+    const obj = this.#catDict.get(\"Names\");\n+    const rawDests = [];\n     if (obj?.has(\"Dests\")) {\n-      return new NameTree(obj.getRaw(\"Dests\"), this.xref);\n-    } else if (this._catDict.has(\"Dests\")) {\n-      return this._catDict.get(\"Dests\");\n+      rawDests.push(new NameTree(obj.getRaw(\"Dests\"), this.xref));\n     }\n-    return undefined;\n+    if (this.#catDict.has(\"Dests\")) {\n+      rawDests.push(this.#catDict.get(\"Dests\"));\n+    }\n+    return rawDests;\n   }\n   get pageLabels() {\n     let obj = null;\n     try {\n-      obj = this._readPageLabels();\n+      obj = this.#readPageLabels();\n     } catch (ex) {\n       if (ex instanceof MissingDataException) {\n         throw ex;\n@@ -37652,8 +42997,8 @@\n     }\n     return shadow(this, \"pageLabels\", obj);\n   }\n-  _readPageLabels() {\n-    const obj = this._catDict.getRaw(\"PageLabels\");\n+  #readPageLabels() {\n+    const obj = this.#catDict.getRaw(\"PageLabels\");\n     if (!obj) {\n       return null;\n     }\n@@ -37731,7 +43076,7 @@\n     return pageLabels;\n   }\n   get pageLayout() {\n-    const obj = this._catDict.get(\"PageLayout\");\n+    const obj = this.#catDict.get(\"PageLayout\");\n     let pageLayout = \"\";\n     if (obj instanceof Name) {\n       switch (obj.name) {\n@@ -37747,7 +43092,7 @@\n     return shadow(this, \"pageLayout\", pageLayout);\n   }\n   get pageMode() {\n-    const obj = this._catDict.get(\"PageMode\");\n+    const obj = this.#catDict.get(\"PageMode\");\n     let pageMode = \"UseNone\";\n     if (obj instanceof Name) {\n       switch (obj.name) {\n@@ -37763,13 +43108,12 @@\n     return shadow(this, \"pageMode\", pageMode);\n   }\n   get viewerPreferences() {\n-    const obj = this._catDict.get(\"ViewerPreferences\");\n+    const obj = this.#catDict.get(\"ViewerPreferences\");\n     if (!(obj instanceof Dict)) {\n       return shadow(this, \"viewerPreferences\", null);\n     }\n     let prefs = null;\n-    for (const key of obj.getKeys()) {\n-      const value = obj.get(key);\n+    for (const [key, value] of obj) {\n       let prefValue;\n       switch (key) {\n         case \"HideToolbar\":\n@@ -37873,15 +43217,13 @@\n         warn(`Bad value, for key \"${key}\", in ViewerPreferences: ${value}.`);\n         continue;\n       }\n-      if (!prefs) {\n-        prefs = Object.create(null);\n-      }\n+      prefs ??= Object.create(null);\n       prefs[key] = prefValue;\n     }\n     return shadow(this, \"viewerPreferences\", prefs);\n   }\n   get openAction() {\n-    const obj = this._catDict.get(\"OpenAction\");\n+    const obj = this.#catDict.get(\"OpenAction\");\n     const openAction = Object.create(null);\n     if (obj instanceof Dict) {\n       const destDict = new Dict(this.xref);\n@@ -37900,42 +43242,40 @@\n       } else if (resultObj.action) {\n         openAction.action = resultObj.action;\n       }\n-    } else if (Array.isArray(obj)) {\n+    } else if (isValidExplicitDest(obj)) {\n       openAction.dest = obj;\n     }\n     return shadow(this, \"openAction\", objectSize(openAction) > 0 ? openAction : null);\n   }\n   get attachments() {\n-    const obj = this._catDict.get(\"Names\");\n+    const obj = this.#catDict.get(\"Names\");\n     let attachments = null;\n     if (obj instanceof Dict && obj.has(\"EmbeddedFiles\")) {\n       const nameTree = new NameTree(obj.getRaw(\"EmbeddedFiles\"), this.xref);\n       for (const [key, value] of nameTree.getAll()) {\n         const fs = new FileSpec(value, this.xref);\n-        if (!attachments) {\n-          attachments = Object.create(null);\n-        }\n-        attachments[stringToPDFString(key)] = fs.serializable;\n+        attachments ??= Object.create(null);\n+        attachments[stringToPDFString(key, true)] = fs.serializable;\n       }\n     }\n     return shadow(this, \"attachments\", attachments);\n   }\n   get xfaImages() {\n-    const obj = this._catDict.get(\"Names\");\n+    const obj = this.#catDict.get(\"Names\");\n     let xfaImages = null;\n     if (obj instanceof Dict && obj.has(\"XFAImages\")) {\n       const nameTree = new NameTree(obj.getRaw(\"XFAImages\"), this.xref);\n       for (const [key, value] of nameTree.getAll()) {\n-        if (!xfaImages) {\n-          xfaImages = new Dict(this.xref);\n+        if (value instanceof BaseStream) {\n+          xfaImages ??= new Map();\n+          xfaImages.set(stringToPDFString(key, true), value.getBytes());\n         }\n-        xfaImages.set(stringToPDFString(key), value);\n       }\n     }\n     return shadow(this, \"xfaImages\", xfaImages);\n   }\n-  _collectJavaScript() {\n-    const obj = this._catDict.get(\"Names\");\n+  #collectJavaScript() {\n+    const obj = this.#catDict.get(\"Names\");\n     let javaScript = null;\n     function appendIfJavaScriptDict(name, jsDict) {\n       if (!(jsDict instanceof Dict)) {\n@@ -37950,7 +43290,7 @@\n       } else if (typeof js !== \"string\") {\n         return;\n       }\n-      js = stringToPDFString(js).replaceAll(\"\\x00\", \"\");\n+      js = stringToPDFString(js, true).replaceAll(\"\\x00\", \"\");\n       if (js) {\n         (javaScript ||= new Map()).set(name, js);\n       }\n@@ -37958,18 +43298,18 @@\n     if (obj instanceof Dict && obj.has(\"JavaScript\")) {\n       const nameTree = new NameTree(obj.getRaw(\"JavaScript\"), this.xref);\n       for (const [key, value] of nameTree.getAll()) {\n-        appendIfJavaScriptDict(stringToPDFString(key), value);\n+        appendIfJavaScriptDict(stringToPDFString(key, true), value);\n       }\n     }\n-    const openAction = this._catDict.get(\"OpenAction\");\n+    const openAction = this.#catDict.get(\"OpenAction\");\n     if (openAction) {\n       appendIfJavaScriptDict(\"OpenAction\", openAction);\n     }\n     return javaScript;\n   }\n   get jsActions() {\n-    const javaScript = this._collectJavaScript();\n-    let actions = collectActions(this.xref, this._catDict, DocumentActionEventType);\n+    const javaScript = this.#collectJavaScript();\n+    let actions = collectActions(this.xref, this.#catDict, DocumentActionEventType);\n     if (javaScript) {\n       actions ||= Object.create(null);\n       for (const [key, val] of javaScript) {\n@@ -37982,25 +43322,17 @@\n     }\n     return shadow(this, \"jsActions\", actions);\n   }\n-  async fontFallback(id, handler) {\n-    const translatedFonts = await Promise.all(this.fontCache);\n-    for (const translatedFont of translatedFonts) {\n-      if (translatedFont.loadedName === id) {\n-        translatedFont.fallback(handler);\n-        return;\n-      }\n-    }\n-  }\n   async cleanup(manuallyTriggered = false) {\n     clearGlobalCaches();\n+    this.globalColorSpaceCache.clear();\n     this.globalImageCache.clear(manuallyTriggered);\n     this.pageKidsCountCache.clear();\n     this.pageIndexCache.clear();\n+    this.pageDictCache.clear();\n     this.nonBlendModesSet.clear();\n-    const translatedFonts = await Promise.all(this.fontCache);\n     for (const {\n       dict\n-    } of translatedFonts) {\n+    } of await Promise.all(this.fontCache)) {\n       delete dict.cacheKey;\n     }\n     this.fontCache.clear();\n@@ -38011,13 +43343,14 @@\n   async getPageDict(pageIndex) {\n     const nodesToVisit = [this.toplevelPagesDict];\n     const visitedNodes = new RefSet();\n-    const pagesRef = this._catDict.getRaw(\"Pages\");\n+    const pagesRef = this.#catDict.getRaw(\"Pages\");\n     if (pagesRef instanceof Ref) {\n       visitedNodes.put(pagesRef);\n     }\n     const xref = this.xref,\n       pageKidsCountCache = this.pageKidsCountCache,\n-      pageIndexCache = this.pageIndexCache;\n+      pageIndexCache = this.pageIndexCache,\n+      pageDictCache = this.pageDictCache;\n     let currentPageIndex = 0;\n     while (nodesToVisit.length) {\n       const currentNode = nodesToVisit.pop();\n@@ -38031,7 +43364,7 @@\n           throw new FormatError(\"Pages tree contains circular reference.\");\n         }\n         visitedNodes.put(currentNode);\n-        const obj = await xref.fetchAsync(currentNode);\n+        const obj = await (pageDictCache.get(currentNode) || xref.fetchAsync(currentNode));\n         if (obj instanceof Dict) {\n           let type = obj.getRaw(\"Type\");\n           if (type instanceof Ref) {\n@@ -38092,7 +43425,11 @@\n         throw new FormatError(\"Page dictionary kids object is not an array.\");\n       }\n       for (let last = kids.length - 1; last >= 0; last--) {\n-        nodesToVisit.push(kids[last]);\n+        const lastKid = kids[last];\n+        nodesToVisit.push(lastKid);\n+        if (currentNode === this.toplevelPagesDict && lastKid instanceof Ref && !pageDictCache.has(lastKid)) {\n+          pageDictCache.put(lastKid, xref.fetchAsync(lastKid));\n+        }\n       }\n     }\n     throw new Error(`Page index ${pageIndex} not found.`);\n@@ -38106,7 +43443,7 @@\n       posInKids: 0\n     }];\n     const visitedNodes = new RefSet();\n-    const pagesRef = this._catDict.getRaw(\"Pages\");\n+    const pagesRef = this.#catDict.getRaw(\"Pages\");\n     if (pagesRef instanceof Ref) {\n       visitedNodes.put(pagesRef);\n     }\n@@ -38252,9 +43589,7 @@\n         if (!found) {\n           throw new FormatError(\"Kid reference not found in parent's kids.\");\n         }\n-        return Promise.all(kidPromises).then(function () {\n-          return [total, parentRef];\n-        });\n+        return Promise.all(kidPromises).then(() => [total, parentRef]);\n       });\n     }\n     let total = 0;\n@@ -38270,7 +43605,7 @@\n     return next(pageRef);\n   }\n   get baseUrl() {\n-    const uri = this._catDict.get(\"URI\");\n+    const uri = this.#catDict.get(\"URI\");\n     if (uri instanceof Dict) {\n       const base = uri.get(\"Base\");\n       if (typeof base === \"string\") {\n@@ -38374,7 +43709,7 @@\n             const relationship = target.get(\"R\");\n             const name = target.get(\"N\");\n             if (isName(relationship, \"C\") && typeof name === \"string\") {\n-              attachment = docAttachments[stringToPDFString(name)];\n+              attachment = docAttachments[stringToPDFString(name, true)];\n             }\n           }\n           if (attachment) {\n@@ -38429,7 +43764,7 @@\n           } else if (typeof jsAction === \"string\") {\n             js = jsAction;\n           }\n-          const jsURL = js && recoverJsURL(stringToPDFString(js));\n+          const jsURL = js && recoverJsURL(stringToPDFString(js, true));\n           if (jsURL) {\n             url = jsURL.url;\n             resultObj.newWindow = jsURL.newWindow;\n@@ -38460,7 +43795,7 @@\n         dest = dest.name;\n       }\n       if (typeof dest === \"string\") {\n-        resultObj.dest = stringToPDFString(dest);\n+        resultObj.dest = stringToPDFString(dest, true);\n       } else if (isValidExplicitDest(dest)) {\n         resultObj.dest = dest;\n       }\n@@ -38468,7 +43803,8 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fobject_loader.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fobject_loader.js\n+\n \n \n \n@@ -38491,21 +43827,17 @@\n   }\n }\n class ObjectLoader {\n+  refSet = new RefSet();\n   constructor(dict, keys, xref) {\n     this.dict = dict;\n     this.keys = keys;\n     this.xref = xref;\n-    this.refSet = null;\n   }\n   async load() {\n-    if (this.xref.stream.isDataLoaded) {\n-      return undefined;\n-    }\n     const {\n       keys,\n       dict\n     } = this;\n-    this.refSet = new RefSet();\n     const nodesToVisit = [];\n     for (const key of keys) {\n       const rawValue = dict.getRaw(key);\n@@ -38513,9 +43845,10 @@\n         nodesToVisit.push(rawValue);\n       }\n     }\n-    return this._walk(nodesToVisit);\n+    await this.#walk(nodesToVisit);\n+    this.refSet = null;\n   }\n-  async _walk(nodesToVisit) {\n+  async #walk(nodesToVisit) {\n     const nodesToRevisit = [];\n     const pendingRequests = [];\n     while (nodesToVisit.length) {\n@@ -38529,12 +43862,9 @@\n           currentNode = this.xref.fetch(currentNode);\n         } catch (ex) {\n           if (!(ex instanceof MissingDataException)) {\n-            warn(`ObjectLoader._walk - requesting all data: \"${ex}\".`);\n-            this.refSet = null;\n-            const {\n-              manager\n-            } = this.xref.stream;\n-            return manager.requestAllChunks();\n+            warn(`ObjectLoader.#walk - requesting all data: \"${ex}\".`);\n+            await this.xref.stream.manager.requestAllChunks();\n+            return;\n           }\n           nodesToRevisit.push(currentNode);\n           pendingRequests.push({\n@@ -38571,14 +43901,19 @@\n           this.refSet.remove(node);\n         }\n       }\n-      return this._walk(nodesToRevisit);\n+      await this.#walk(nodesToRevisit);\n     }\n-    this.refSet = null;\n-    return undefined;\n+  }\n+  static async load(obj, keys, xref) {\n+    if (xref.stream.isDataLoaded) {\n+      return;\n+    }\n+    const objLoader = new ObjectLoader(obj, keys, xref);\n+    await objLoader.load();\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fxfa\u002Fsymbol_utils.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fxfa\u002Fsymbol_utils.js\n const $acceptWhitespace = Symbol();\n const $addHTML = Symbol();\n const $appendChild = Symbol();\n@@ -38648,7 +43983,9 @@\n const $toStyle = Symbol();\n const $uid = Symbol(\"uid\");\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fxfa\u002Fnamespaces.js\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.flat-map.js\n+var es_iterator_flat_map = __webpack_require__(531);\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fxfa\u002Fnamespaces.js\n const $buildXFAObject = Symbol();\n const NamespaceIds = {\n   config: {\n@@ -38713,7 +44050,11 @@\n   }\n };\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fxfa\u002Futils.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fxfa\u002Futils.js\n+\n+\n+\n+\n \n const dimConverters = {\n   pt: x => x,\n@@ -38810,7 +44151,7 @@\n       den: 1\n     };\n   }\n-  const ratio = data.trim().split(\u002F\\s*:\\s*\u002F).map(x => parseFloat(x)).filter(x => !isNaN(x));\n+  const ratio = data.split(\":\", 2).map(x => parseFloat(x.trim())).filter(x => !isNaN(x));\n   if (ratio.length === 1) {\n     ratio.push(1);\n   }\n@@ -38844,7 +44185,7 @@\n       b\n     };\n   }\n-  const color = data.trim().split(\u002F\\s*,\\s*\u002F).map(c => Math.min(Math.max(0, parseInt(c.trim(), 10)), 255)).map(c => isNaN(c) ? 0 : c);\n+  const color = data.split(\",\", 3).map(c => MathClamp(parseInt(c.trim(), 10), 0, 255)).map(c => isNaN(c) ? 0 : c);\n   if (color.length \u003C 3) {\n     return {\n       r,\n@@ -38869,7 +44210,7 @@\n       height: def\n     };\n   }\n-  const bbox = data.trim().split(\u002F\\s*,\\s*\u002F).map(m => getMeasurement(m, \"-1\"));\n+  const bbox = data.split(\",\", 4).map(m => getMeasurement(m.trim(), \"-1\"));\n   if (bbox.length \u003C 4 || bbox[2] \u003C 0 || bbox[3] \u003C 0) {\n     return {\n       x: def,\n@@ -38910,7 +44251,17 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fxfa\u002Ffonts.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fxfa\u002Ffonts.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n \n@@ -39063,7 +44414,10 @@\n   };\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fxfa\u002Ftext.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fxfa\u002Ftext.js\n+\n+\n+\n \n const WIDTH_FACTOR = 1.02;\n class FontInfo {\n@@ -39273,7 +44627,12 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fxfa\u002Fsom.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fxfa\u002Fsom.js\n+\n+\n+\n+\n+\n \n \n const namePattern = \u002F^[^.[]+\u002F;\n@@ -39506,7 +44865,18 @@\n   return null;\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fxfa\u002Fxfa_object.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fxfa\u002Fxfa_object.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n \n@@ -40313,7 +45683,10 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fxfa\u002Fhtml_utils.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fxfa\u002Fhtml_utils.js\n+\n+\n+\n \n \n \n@@ -40371,10 +45744,10 @@\n       const colSpan = node.colSpan;\n       let w;\n       if (colSpan === -1) {\n-        w = extra.columnWidths.slice(extra.currentColumn).reduce((a, x) => a + x, 0);\n+        w = Math.sumPrecise(extra.columnWidths.slice(extra.currentColumn));\n         extra.currentColumn = 0;\n       } else {\n-        w = extra.columnWidths.slice(extra.currentColumn, extra.currentColumn + colSpan).reduce((a, x) => a + x, 0);\n+        w = Math.sumPrecise(extra.columnWidths.slice(extra.currentColumn, extra.currentColumn + colSpan));\n         extra.currentColumn = (extra.currentColumn + node.colSpan) % extra.columnWidths.length;\n       }\n       if (!isNaN(w)) {\n@@ -40572,9 +45945,9 @@\n     const colSpan = node.colSpan;\n     let width;\n     if (colSpan === -1) {\n-      width = extra.columnWidths.slice(extra.currentColumn).reduce((a, w) => a + w, 0);\n+      width = Math.sumPrecise(extra.columnWidths.slice(extra.currentColumn));\n     } else {\n-      width = extra.columnWidths.slice(extra.currentColumn, extra.currentColumn + colSpan).reduce((a, w) => a + w, 0);\n+      width = Math.sumPrecise(extra.columnWidths.slice(extra.currentColumn, extra.currentColumn + colSpan));\n     }\n     if (!isNaN(width)) {\n       node.w = width;\n@@ -40585,7 +45958,7 @@\n   }\n   if (node.layout === \"table\") {\n     if (node.w === \"\" && Array.isArray(node.columnWidths)) {\n-      node.w = node.columnWidths.reduce((a, x) => a + x, 0);\n+      node.w = Math.sumPrecise(node.columnWidths);\n     }\n   }\n }\n@@ -40817,7 +46190,9 @@\n   return absoluteUrl ? absoluteUrl.href : null;\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fxfa\u002Flayout.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fxfa\u002Flayout.js\n+\n+\n \n \n function createLine(node, children) {\n@@ -40900,14 +46275,14 @@\n       }\n     case \"table\":\n       {\n-        extra.width = Math.min(availableSpace.width, Math.max(extra.width, w));\n+        extra.width = MathClamp(w, extra.width, availableSpace.width);\n         extra.height += h;\n         extra.children.push(html);\n         break;\n       }\n     case \"tb\":\n       {\n-        extra.width = Math.min(availableSpace.width, Math.max(extra.width, w));\n+        extra.width = MathClamp(w, extra.width, availableSpace.width);\n         extra.height += h;\n         extra.children.push(html);\n         break;\n@@ -40933,7 +46308,7 @@\n       };\n     case \"rl-row\":\n     case \"row\":\n-      const width = node[$extra].columnWidths.slice(node[$extra].currentColumn).reduce((a, x) => a + x);\n+      const width = Math.sumPrecise(node[$extra].columnWidths.slice(node[$extra].currentColumn));\n       return {\n         width,\n         height: availableSpace.height - marginH\n@@ -41085,7 +46460,26 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fxfa\u002Ftemplate.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fxfa\u002Ftemplate.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n \n@@ -41975,7 +47369,7 @@\n     this.margin = null;\n   }\n   [$toHTML](availableSpace) {\n-    const style = toStyle(\"margin\");\n+    const style = toStyle(this, \"margin\");\n     const size = measureToString(this.size);\n     style.width = style.height = size;\n     let type;\n@@ -42056,7 +47450,7 @@\n     const field = ui[$getParent]();\n     const fontSize = field.font?.size || 10;\n     const optionStyle = {\n-      fontSize: `calc(${fontSize}px * var(--scale-factor))`\n+      fontSize: `calc(${fontSize}px * var(--total-scale-factor))`\n     };\n     const children = [];\n     if (field.items.children.length > 0) {\n@@ -42802,9 +48196,7 @@\n       class: []\n     };\n     setAccess(this, attributes.class);\n-    if (!this[$extra]) {\n-      this[$extra] = Object.create(null);\n-    }\n+    this[$extra] ||= Object.create(null);\n     Object.assign(this[$extra], {\n       children,\n       attributes,\n@@ -43149,9 +48541,7 @@\n         ui.attributes.tabindex = this[$tabIndex];\n       }\n     }\n-    if (!ui.attributes.style) {\n-      ui.attributes.style = Object.create(null);\n-    }\n+    ui.attributes.style ||= Object.create(null);\n     let aElement = null;\n     if (this.ui.button) {\n       if (ui.children.length === 1) {\n@@ -43230,9 +48620,7 @@\n     } else if (this.ui.checkButton) {\n       caption.attributes.class[0] = \"xfaCaptionForCheckButton\";\n     }\n-    if (!ui.attributes.class) {\n-      ui.attributes.class = [];\n-    }\n+    ui.attributes.class ||= [];\n     ui.children.splice(0, 0, caption);\n     switch (this.caption.placement) {\n       case \"left\":\n@@ -43514,12 +48902,12 @@\n     if (this.contentType && !MIMES.has(this.contentType.toLowerCase())) {\n       return HTMLResult.EMPTY;\n     }\n-    let buffer = this[$globalData].images && this[$globalData].images.get(this.href);\n+    let buffer = this[$globalData].images?.get(this.href);\n     if (!buffer && (this.href || !this[$content])) {\n       return HTMLResult.EMPTY;\n     }\n     if (!buffer && this.transferEncoding === \"base64\") {\n-      buffer = stringToBytes(atob(this[$content]));\n+      buffer = fromBase64Util(this[$content]);\n     }\n     if (!buffer) {\n       return HTMLResult.EMPTY;\n@@ -44033,11 +49421,9 @@\n     delete this[$extra];\n   }\n   [$getNextPage]() {\n-    if (!this[$extra]) {\n-      this[$extra] = {\n-        numberOfUse: 0\n-      };\n-    }\n+    this[$extra] ||= {\n+      numberOfUse: 0\n+    };\n     const parent = this[$getParent]();\n     if (parent.relation === \"orderedOccurrence\") {\n       if (this[$isUsable]()) {\n@@ -44054,11 +49440,9 @@\n     };\n   }\n   [$toHTML]() {\n-    if (!this[$extra]) {\n-      this[$extra] = {\n-        numberOfUse: 1\n-      };\n-    }\n+    this[$extra] ||= {\n+      numberOfUse: 1\n+    };\n     const children = [];\n     this[$extra].children = children;\n     const style = Object.create(null);\n@@ -44128,13 +49512,11 @@\n     return !this.occur || this.occur.max === -1 || this[$extra].numberOfUse \u003C this.occur.max;\n   }\n   [$getNextPage]() {\n-    if (!this[$extra]) {\n-      this[$extra] = {\n-        numberOfUse: 1,\n-        pageIndex: -1,\n-        pageSetIndex: -1\n-      };\n-    }\n+    this[$extra] ||= {\n+      numberOfUse: 1,\n+      pageIndex: -1,\n+      pageSetIndex: -1\n+    };\n     if (this.relation === \"orderedOccurrence\") {\n       if (this[$extra].pageIndex + 1 \u003C this.pageArea.children.length) {\n         this[$extra].pageIndex += 1;\n@@ -44212,7 +49594,7 @@\n       style.paddingLeft = measureToString(this.marginLeft);\n     }\n     if (this.marginRight !== \"\") {\n-      style.paddingight = measureToString(this.marginRight);\n+      style.paddingRight = measureToString(this.marginRight);\n     }\n     if (this.spaceAbove !== \"\") {\n       style.paddingTop = measureToString(this.spaceAbove);\n@@ -44792,9 +50174,7 @@\n       class: []\n     };\n     setAccess(this, attributes.class);\n-    if (!this[$extra]) {\n-      this[$extra] = Object.create(null);\n-    }\n+    this[$extra] ||= Object.create(null);\n     Object.assign(this[$extra], {\n       children,\n       line: null,\n@@ -45084,9 +50464,7 @@\n         breakBefore[$extra] = {};\n       }\n     }\n-    if (!pageArea) {\n-      pageArea = pageAreas[0];\n-    }\n+    pageArea ||= pageAreas[0];\n     pageArea[$extra] = {\n       numberOfUse: 1\n     };\n@@ -45269,12 +50647,7 @@\n   }\n   [$getExtra]() {\n     if (typeof this[$content] === \"string\") {\n-      return this[$content].split(\u002F[\\u2029\\u2028\\n]\u002F).reduce((acc, line) => {\n-        if (line) {\n-          acc.push(line);\n-        }\n-        return acc;\n-      }, []).join(\"\\n\");\n+      return this[$content].split(\u002F[\\u2029\\u2028\\n]\u002F).filter(line => !!line).join(\"\\n\");\n     }\n     return this[$content][$text]();\n   }\n@@ -45284,15 +50657,12 @@\n       if (this[$content].includes(\"\\u2029\")) {\n         html.name = \"div\";\n         html.children = [];\n-        this[$content].split(\"\\u2029\").map(para => para.split(\u002F[\\u2028\\n]\u002F).reduce((acc, line) => {\n-          acc.push({\n-            name: \"span\",\n-            value: line\n-          }, {\n-            name: \"br\"\n-          });\n-          return acc;\n-        }, [])).forEach(lines => {\n+        this[$content].split(\"\\u2029\").map(para => para.split(\u002F[\\u2028\\n]\u002F).flatMap(line => [{\n+          name: \"span\",\n+          value: line\n+        }, {\n+          name: \"br\"\n+        }])).forEach(lines => {\n           html.children.push({\n             name: \"p\",\n             children: lines\n@@ -45962,7 +51332,12 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fxfa\u002Fbind.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fxfa\u002Fbind.js\n+\n+\n+\n+\n+\n \n \n \n@@ -46383,7 +51758,8 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fxfa\u002Fdata.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fxfa\u002Fdata.js\n+\n \n class DataHandler {\n   constructor(root, data) {\n@@ -46432,7 +51808,13 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fxfa\u002Fconfig.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fxfa\u002Fconfig.js\n+\n+\n+\n+\n+\n+\n \n \n \n@@ -47156,7 +52538,7 @@\n     super(CONFIG_NS_ID, \"range\");\n   }\n   [$finalize]() {\n-    this[$content] = this[$content].trim().split(\u002F\\s*,\\s*\u002F, 2).map(range => range.split(\"-\").map(x => parseInt(x.trim(), 10))).filter(range => range.every(x => !isNaN(x))).map(range => {\n+    this[$content] = this[$content].split(\",\", 2).map(range => range.split(\"-\").map(x => parseInt(x.trim(), 10))).filter(range => range.every(x => !isNaN(x))).map(range => {\n       if (range.length === 1) {\n         range.push(range[0]);\n       }\n@@ -47392,7 +52774,7 @@\n     super(CONFIG_NS_ID, \"window\");\n   }\n   [$finalize]() {\n-    const pair = this[$content].trim().split(\u002F\\s*,\\s*\u002F, 2).map(x => parseInt(x, 10));\n+    const pair = this[$content].split(\",\", 2).map(x => parseInt(x.trim(), 10));\n     if (pair.some(x => isNaN(x))) {\n       this[$content] = [0, 0];\n       return;\n@@ -47859,7 +53241,7 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fxfa\u002Fconnection_set.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fxfa\u002Fconnection_set.js\n \n \n const CONNECTION_SET_NS_ID = NamespaceIds.connectionSet.id;\n@@ -48020,7 +53402,7 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fxfa\u002Fdatasets.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fxfa\u002Fdatasets.js\n \n \n \n@@ -48062,7 +53444,7 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fxfa\u002Flocale_set.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fxfa\u002Flocale_set.js\n \n \n \n@@ -48310,7 +53692,7 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fxfa\u002Fsignature.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fxfa\u002Fsignature.js\n \n \n const SIGNATURE_NS_ID = NamespaceIds.signature.id;\n@@ -48331,7 +53713,7 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fxfa\u002Fstylesheet.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fxfa\u002Fstylesheet.js\n \n \n const STYLESHEET_NS_ID = NamespaceIds.stylesheet.id;\n@@ -48352,7 +53734,7 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fxfa\u002Fxdp.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fxfa\u002Fxdp.js\n \n \n \n@@ -48386,7 +53768,17 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fxfa\u002Fxhtml.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fxfa\u002Fxhtml.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n \n@@ -48395,8 +53787,8 @@\n const XHTML_NS_ID = NamespaceIds.xhtml.id;\n const $richText = Symbol();\n const VALID_STYLES = new Set([\"color\", \"font\", \"font-family\", \"font-size\", \"font-stretch\", \"font-style\", \"font-weight\", \"margin\", \"margin-bottom\", \"margin-left\", \"margin-right\", \"margin-top\", \"letter-spacing\", \"line-height\", \"orphans\", \"page-break-after\", \"page-break-before\", \"page-break-inside\", \"tab-interval\", \"tab-stop\", \"text-align\", \"text-decoration\", \"text-indent\", \"vertical-align\", \"widows\", \"kerning-mode\", \"xfa-font-horizontal-scale\", \"xfa-font-vertical-scale\", \"xfa-spacerun\", \"xfa-tab-stops\"]);\n-const StyleMapping = new Map([[\"page-break-after\", \"breakAfter\"], [\"page-break-before\", \"breakBefore\"], [\"page-break-inside\", \"breakInside\"], [\"kerning-mode\", value => value === \"none\" ? \"none\" : \"normal\"], [\"xfa-font-horizontal-scale\", value => `scaleX(${Math.max(0, Math.min(parseInt(value) \u002F 100)).toFixed(2)})`], [\"xfa-font-vertical-scale\", value => `scaleY(${Math.max(0, Math.min(parseInt(value) \u002F 100)).toFixed(2)})`], [\"xfa-spacerun\", \"\"], [\"xfa-tab-stops\", \"\"], [\"font-size\", (value, original) => {\n-  value = original.fontSize = getMeasurement(value);\n+const StyleMapping = new Map([[\"page-break-after\", \"breakAfter\"], [\"page-break-before\", \"breakBefore\"], [\"page-break-inside\", \"breakInside\"], [\"kerning-mode\", value => value === \"none\" ? \"none\" : \"normal\"], [\"xfa-font-horizontal-scale\", value => `scaleX(${Math.max(0, parseInt(value) \u002F 100).toFixed(2)})`], [\"xfa-font-vertical-scale\", value => `scaleY(${Math.max(0, parseInt(value) \u002F 100).toFixed(2)})`], [\"xfa-spacerun\", \"\"], [\"xfa-tab-stops\", \"\"], [\"font-size\", (value, original) => {\n+  value = original.fontSize = Math.abs(getMeasurement(value));\n   return measureToString(0.99 * value);\n }], [\"letter-spacing\", value => measureToString(getMeasurement(value))], [\"line-height\", value => measureToString(getMeasurement(value))], [\"margin\", value => measureToString(getMeasurement(value))], [\"margin-bottom\", value => measureToString(getMeasurement(value))], [\"margin-left\", value => measureToString(getMeasurement(value))], [\"margin-right\", value => measureToString(getMeasurement(value))], [\"margin-top\", value => measureToString(getMeasurement(value))], [\"text-indent\", value => measureToString(getMeasurement(value))], [\"font-family\", value => value], [\"vertical-align\", value => measureToString(getMeasurement(value))]]);\n const spacesRegExp = \u002F\\s+\u002Fg;\n@@ -48439,7 +53831,7 @@\n     style.verticalAlign = measureToString(Math.sign(getMeasurement(style.verticalAlign)) * fontSize * VERTICAL_FACTOR);\n   }\n   if (richText && style.fontSize) {\n-    style.fontSize = `calc(${style.fontSize} * var(--scale-factor))`;\n+    style.fontSize = `calc(${style.fontSize} * var(--total-scale-factor))`;\n   }\n   fixTextIndent(style);\n   return style;\n@@ -48448,7 +53840,7 @@\n   if (!node.style) {\n     return \"\";\n   }\n-  return node.style.trim().split(\u002F\\s*;\\s*\u002F).filter(s => !!s).map(s => s.split(\u002F\\s*:\\s*\u002F, 2)).filter(([key, value]) => {\n+  return node.style.split(\";\").filter(s => !!s.trim()).map(s => s.split(\":\", 2).map(t => t.trim())).filter(([key, value]) => {\n     if (key === \"font-family\") {\n       node[$globalData].usedTypefaces.add(value);\n     }\n@@ -48785,7 +54177,7 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fxfa\u002Fsetup.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fxfa\u002Fsetup.js\n \n \n \n@@ -48807,7 +54199,7 @@\n   xhtml: XhtmlNamespace\n };\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fxfa\u002Funknown.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fxfa\u002Funknown.js\n \n \n class UnknownNamespace {\n@@ -48819,7 +54211,11 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fxfa\u002Fbuilder.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fxfa\u002Fbuilder.js\n+\n+\n+\n+\n \n \n \n@@ -48987,7 +54383,15 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fxfa\u002Fparser.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fxfa\u002Fparser.js\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n \n@@ -49045,9 +54449,7 @@\n         }\n       } else if (name.startsWith(\"xmlns:\")) {\n         const prefix = name.substring(\"xmlns:\".length);\n-        if (!prefixes) {\n-          prefixes = [];\n-        }\n+        prefixes ??= [];\n         prefixes.push({\n           prefix,\n           value\n@@ -49057,10 +54459,7 @@\n         if (i === -1) {\n           attributeObj[name] = value;\n         } else {\n-          let nsAttrs = attributeObj[$nsAttributes];\n-          if (!nsAttrs) {\n-            nsAttrs = attributeObj[$nsAttributes] = Object.create(null);\n-          }\n+          const nsAttrs = attributeObj[$nsAttributes] ??= Object.create(null);\n           const [ns, attrName] = [name.slice(0, i), name.slice(i + 1)];\n           const attrs = nsAttrs[ns] ||= Object.create(null);\n           attrs[attrName] = value;\n@@ -49119,7 +54518,12 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fxfa\u002Ffactory.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fxfa\u002Ffactory.js\n+\n+\n+\n+\n+\n \n \n \n@@ -49141,7 +54545,7 @@\n     }\n   }\n   isValid() {\n-    return this.root && this.form;\n+    return !!(this.root && this.form);\n   }\n   _createPagesHelper() {\n     const iterator = this.form[$toPages]();\n@@ -49260,7 +54664,20 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fannotation.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fannotation.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n \n@@ -49278,25 +54695,24 @@\n \n class AnnotationFactory {\n   static createGlobals(pdfManager) {\n-    return Promise.all([pdfManager.ensureCatalog(\"acroForm\"), pdfManager.ensureDoc(\"xfaDatasets\"), pdfManager.ensureCatalog(\"structTreeRoot\"), pdfManager.ensureCatalog(\"baseUrl\"), pdfManager.ensureCatalog(\"attachments\")]).then(([acroForm, xfaDatasets, structTreeRoot, baseUrl, attachments]) => {\n-      return {\n-        pdfManager,\n-        acroForm: acroForm instanceof Dict ? acroForm : Dict.empty,\n-        xfaDatasets,\n-        structTreeRoot,\n-        baseUrl,\n-        attachments\n-      };\n-    }, reason => {\n+    return Promise.all([pdfManager.ensureCatalog(\"acroForm\"), pdfManager.ensureDoc(\"xfaDatasets\"), pdfManager.ensureCatalog(\"structTreeRoot\"), pdfManager.ensureCatalog(\"baseUrl\"), pdfManager.ensureCatalog(\"attachments\"), pdfManager.ensureCatalog(\"globalColorSpaceCache\")]).then(([acroForm, xfaDatasets, structTreeRoot, baseUrl, attachments, globalColorSpaceCache]) => ({\n+      pdfManager,\n+      acroForm: acroForm instanceof Dict ? acroForm : Dict.empty,\n+      xfaDatasets,\n+      structTreeRoot,\n+      baseUrl,\n+      attachments,\n+      globalColorSpaceCache\n+    }), reason => {\n       warn(`createGlobals: \"${reason}\".`);\n       return null;\n     });\n   }\n-  static async create(xref, ref, annotationGlobals, idFactory, collectFields, pageRef) {\n+  static async create(xref, ref, annotationGlobals, idFactory, collectFields, orphanFields, pageRef) {\n     const pageIndex = collectFields ? await this._getPageIndex(xref, ref, annotationGlobals.pdfManager) : null;\n-    return annotationGlobals.pdfManager.ensure(this, \"_create\", [xref, ref, annotationGlobals, idFactory, collectFields, pageIndex, pageRef]);\n+    return annotationGlobals.pdfManager.ensure(this, \"_create\", [xref, ref, annotationGlobals, idFactory, collectFields, orphanFields, pageIndex, pageRef]);\n   }\n-  static _create(xref, ref, annotationGlobals, idFactory, collectFields = false, pageIndex = null, pageRef = null) {\n+  static _create(xref, ref, annotationGlobals, idFactory, collectFields = false, orphanFields = null, pageIndex = null, pageRef = null) {\n     const dict = xref.fetchIfRef(ref);\n     if (!(dict instanceof Dict)) {\n       return undefined;\n@@ -49316,6 +54732,7 @@\n       id,\n       annotationGlobals,\n       collectFields,\n+      orphanFields,\n       needAppearances: !collectFields && acroForm.get(\"NeedAppearances\") === true,\n       pageIndex,\n       evaluatorOptions: pdfManager.evaluatorOptions,\n@@ -49436,10 +54853,9 @@\n     }\n     return imagePromises;\n   }\n-  static async saveNewAnnotations(evaluator, task, annotations, imagePromises) {\n+  static async saveNewAnnotations(evaluator, task, annotations, imagePromises, changes) {\n     const xref = evaluator.xref;\n     let baseFontRef;\n-    const dependencies = [];\n     const promises = [];\n     const {\n       isOffscreenCanvasSupported\n@@ -49456,15 +54872,12 @@\n             baseFont.set(\"Type\", Name.get(\"Font\"));\n             baseFont.set(\"Subtype\", Name.get(\"Type1\"));\n             baseFont.set(\"Encoding\", Name.get(\"WinAnsiEncoding\"));\n-            const buffer = [];\n             baseFontRef = xref.getNewTemporaryRef();\n-            await writeObject(baseFontRef, baseFont, buffer, xref);\n-            dependencies.push({\n-              ref: baseFontRef,\n-              data: buffer.join(\"\")\n+            changes.put(baseFontRef, {\n+              data: baseFont\n             });\n           }\n-          promises.push(FreeTextAnnotation.createNewAnnotation(xref, annotation, dependencies, {\n+          promises.push(FreeTextAnnotation.createNewAnnotation(xref, annotation, changes, {\n             evaluator,\n             task,\n             baseFontRef\n@@ -49472,52 +54885,45 @@\n           break;\n         case AnnotationEditorType.HIGHLIGHT:\n           if (annotation.quadPoints) {\n-            promises.push(HighlightAnnotation.createNewAnnotation(xref, annotation, dependencies));\n+            promises.push(HighlightAnnotation.createNewAnnotation(xref, annotation, changes));\n           } else {\n-            promises.push(InkAnnotation.createNewAnnotation(xref, annotation, dependencies));\n+            promises.push(InkAnnotation.createNewAnnotation(xref, annotation, changes));\n           }\n           break;\n         case AnnotationEditorType.INK:\n-          promises.push(InkAnnotation.createNewAnnotation(xref, annotation, dependencies));\n+          promises.push(InkAnnotation.createNewAnnotation(xref, annotation, changes));\n           break;\n         case AnnotationEditorType.STAMP:\n-          if (!isOffscreenCanvasSupported) {\n-            break;\n-          }\n-          const image = await imagePromises.get(annotation.bitmapId);\n-          if (image.imageStream) {\n+          const image = isOffscreenCanvasSupported ? await imagePromises?.get(annotation.bitmapId) : null;\n+          if (image?.imageStream) {\n             const {\n               imageStream,\n               smaskStream\n             } = image;\n-            const buffer = [];\n             if (smaskStream) {\n               const smaskRef = xref.getNewTemporaryRef();\n-              await writeObject(smaskRef, smaskStream, buffer, xref);\n-              dependencies.push({\n-                ref: smaskRef,\n-                data: buffer.join(\"\")\n+              changes.put(smaskRef, {\n+                data: smaskStream\n               });\n               imageStream.dict.set(\"SMask\", smaskRef);\n-              buffer.length = 0;\n             }\n             const imageRef = image.imageRef = xref.getNewTemporaryRef();\n-            await writeObject(imageRef, imageStream, buffer, xref);\n-            dependencies.push({\n-              ref: imageRef,\n-              data: buffer.join(\"\")\n+            changes.put(imageRef, {\n+              data: imageStream\n             });\n             image.imageStream = image.smaskStream = null;\n           }\n-          promises.push(StampAnnotation.createNewAnnotation(xref, annotation, dependencies, {\n+          promises.push(StampAnnotation.createNewAnnotation(xref, annotation, changes, {\n             image\n           }));\n           break;\n+        case AnnotationEditorType.SIGNATURE:\n+          promises.push(StampAnnotation.createNewAnnotation(xref, annotation, changes, {}));\n+          break;\n       }\n     }\n     return {\n-      annotations: await Promise.all(promises),\n-      dependencies\n+      annotations: await Promise.all(promises)\n     };\n   }\n   static async printNewAnnotations(annotationGlobals, evaluator, task, annotations, imagePromises) {\n@@ -49558,11 +54964,8 @@\n           }));\n           break;\n         case AnnotationEditorType.STAMP:\n-          if (!options.isOffscreenCanvasSupported) {\n-            break;\n-          }\n-          const image = await imagePromises.get(annotation.bitmapId);\n-          if (image.imageStream) {\n+          const image = options.isOffscreenCanvasSupported ? await imagePromises?.get(annotation.bitmapId) : null;\n+          if (image?.imageStream) {\n             const {\n               imageStream,\n               smaskStream\n@@ -49578,6 +54981,11 @@\n             evaluatorOptions: options\n           }));\n           break;\n+        case AnnotationEditorType.SIGNATURE:\n+          promises.push(StampAnnotation.createNewPrintAnnotation(annotationGlobals, xref, annotation, {\n+            evaluatorOptions: options\n+          }));\n+          break;\n       }\n     }\n     return Promise.all(promises);\n@@ -49592,13 +55000,13 @@\n     case 0:\n       return null;\n     case 1:\n-      ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0);\n+      ColorSpaceUtils.gray.getRgbItem(color, 0, rgbColor, 0);\n       return rgbColor;\n     case 3:\n-      ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0);\n+      ColorSpaceUtils.rgb.getRgbItem(color, 0, rgbColor, 0);\n       return rgbColor;\n     case 4:\n-      ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0);\n+      ColorSpaceUtils.cmyk.getRgbItem(color, 0, rgbColor, 0);\n       return rgbColor;\n     default:\n       return defaultColor;\n@@ -49612,41 +55020,24 @@\n   if (!isNumberArray(quadPoints, null) || quadPoints.length === 0 || quadPoints.length % 8 > 0) {\n     return null;\n   }\n-  const quadPointsLists = [];\n-  for (let i = 0, ii = quadPoints.length \u002F 8; i \u003C ii; i++) {\n-    let minX = Infinity,\n-      maxX = -Infinity,\n-      minY = Infinity,\n-      maxY = -Infinity;\n-    for (let j = i * 8, jj = i * 8 + 8; j \u003C jj; j += 2) {\n-      const x = quadPoints[j];\n-      const y = quadPoints[j + 1];\n-      minX = Math.min(x, minX);\n-      maxX = Math.max(x, maxX);\n-      minY = Math.min(y, minY);\n-      maxY = Math.max(y, maxY);\n-    }\n+  const newQuadPoints = new Float32Array(quadPoints.length);\n+  for (let i = 0, ii = quadPoints.length; i \u003C ii; i += 8) {\n+    const [x1, y1, x2, y2, x3, y3, x4, y4] = quadPoints.slice(i, i + 8);\n+    const minX = Math.min(x1, x2, x3, x4);\n+    const maxX = Math.max(x1, x2, x3, x4);\n+    const minY = Math.min(y1, y2, y3, y4);\n+    const maxY = Math.max(y1, y2, y3, y4);\n     if (rect !== null && (minX \u003C rect[0] || maxX > rect[2] || minY \u003C rect[1] || maxY > rect[3])) {\n       return null;\n     }\n-    quadPointsLists.push([{\n-      x: minX,\n-      y: maxY\n-    }, {\n-      x: maxX,\n-      y: maxY\n-    }, {\n-      x: minX,\n-      y: minY\n-    }, {\n-      x: maxX,\n-      y: minY\n-    }]);\n+    newQuadPoints.set([minX, maxY, maxX, maxY, minX, minY, maxX, minY], i);\n   }\n-  return quadPointsLists;\n+  return newQuadPoints;\n }\n function getTransformMatrix(rect, bbox, matrix) {\n-  const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox(bbox, matrix);\n+  const minMax = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]);\n+  Util.axialAlignedBoundingBox(bbox, matrix, minMax);\n+  const [minX, minY, maxX, maxY] = minMax;\n   if (minX === maxX || minY === maxY) {\n     return [1, 0, 0, 1, rect[0], rect[1]];\n   }\n@@ -49659,8 +55050,14 @@\n     const {\n       dict,\n       xref,\n-      annotationGlobals\n+      annotationGlobals,\n+      ref,\n+      orphanFields\n     } = params;\n+    const parentRef = orphanFields?.get(ref);\n+    if (parentRef) {\n+      dict.set(\"Parent\", parentRef);\n+    }\n     this.setTitle(dict.get(\"T\"));\n     this.setContents(dict.get(\"Contents\"));\n     this.setModificationDate(dict.get(\"M\"));\n@@ -49680,11 +55077,6 @@\n     }\n     const isLocked = !!(this.flags & AnnotationFlag.LOCKED);\n     const isContentLocked = !!(this.flags & AnnotationFlag.LOCKEDCONTENTS);\n-    if (annotationGlobals.structTreeRoot) {\n-      let structParent = dict.get(\"StructParent\");\n-      structParent = Number.isInteger(structParent) && structParent >= 0 ? structParent : -1;\n-      annotationGlobals.structTreeRoot.addAnnotationIdToPage(params.pageRef, structParent);\n-    }\n     this.data = {\n       annotationFlags: this.flags,\n       borderStyle: this.borderStyle,\n@@ -49700,8 +55092,15 @@\n       subtype: params.subtype,\n       hasOwnCanvas: false,\n       noRotate: !!(this.flags & AnnotationFlag.NOROTATE),\n-      noHTML: isLocked && isContentLocked\n+      noHTML: isLocked && isContentLocked,\n+      isEditable: false,\n+      structParent: -1\n     };\n+    if (annotationGlobals.structTreeRoot) {\n+      let structParent = dict.get(\"StructParent\");\n+      this.data.structParent = structParent = Number.isInteger(structParent) && structParent >= 0 ? structParent : -1;\n+      annotationGlobals.structTreeRoot.addAnnotationIdToPage(params.pageRef, structParent);\n+    }\n     if (params.collectFields) {\n       const kids = dict.get(\"Kids\");\n       if (Array.isArray(kids)) {\n@@ -49719,6 +55118,10 @@\n       this.data.fieldName = this._constructFieldName(dict);\n       this.data.pageIndex = params.pageIndex;\n     }\n+    const it = dict.get(\"IT\");\n+    if (it instanceof Name) {\n+      this.data.it = it.name;\n+    }\n     this._isOffscreenCanvasSupported = params.evaluatorOptions.isOffscreenCanvasSupported;\n     this._fallbackFontDict = null;\n     this._needAppearances = false;\n@@ -49726,6 +55129,32 @@\n   _hasFlag(flags, flag) {\n     return !!(flags & flag);\n   }\n+  _buildFlags(noView, noPrint) {\n+    let {\n+      flags\n+    } = this;\n+    if (noView === undefined) {\n+      if (noPrint === undefined) {\n+        return undefined;\n+      }\n+      if (noPrint) {\n+        return flags & ~AnnotationFlag.PRINT;\n+      }\n+      return flags & ~AnnotationFlag.HIDDEN | AnnotationFlag.PRINT;\n+    }\n+    if (noView) {\n+      flags |= AnnotationFlag.PRINT;\n+      if (noPrint) {\n+        return flags & ~AnnotationFlag.NOVIEW | AnnotationFlag.HIDDEN;\n+      }\n+      return flags & ~AnnotationFlag.HIDDEN | AnnotationFlag.NOVIEW;\n+    }\n+    flags &= ~(AnnotationFlag.HIDDEN | AnnotationFlag.NOVIEW);\n+    if (noPrint) {\n+      return flags & ~AnnotationFlag.PRINT;\n+    }\n+    return flags | AnnotationFlag.PRINT;\n+  }\n   _isViewable(flags) {\n     return !this._hasFlag(flags, AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, AnnotationFlag.NOVIEW);\n   }\n@@ -49746,6 +55175,9 @@\n     }\n     return this.printable;\n   }\n+  mustBeViewedWhenEditing(isEditing, modifiedIds = null) {\n+    return isEditing ? !this.data.isEditable : !modifiedIds?.has(this.data.id);\n+  }\n   get viewable() {\n     if (this.data.quadPoints === null) {\n       return false;\n@@ -49916,18 +55348,14 @@\n       this.oc = oc;\n     }\n   }\n-  loadResources(keys, appearance) {\n-    return appearance.dict.getAsync(\"Resources\").then(resources => {\n-      if (!resources) {\n-        return undefined;\n-      }\n-      const objectLoader = new ObjectLoader(resources, keys, resources.xref);\n-      return objectLoader.load().then(function () {\n-        return resources;\n-      });\n-    });\n+  async loadResources(keys, appearance) {\n+    const resources = await appearance.dict.getAsync(\"Resources\");\n+    if (resources) {\n+      await ObjectLoader.load(resources, keys, resources.xref);\n+    }\n+    return resources;\n   }\n-  async getOperatorList(evaluator, task, intent, renderForms, annotationStorage) {\n+  async getOperatorList(evaluator, task, intent, annotationStorage) {\n     const {\n       hasOwnCanvas,\n       id,\n@@ -49935,7 +55363,7 @@\n     } = this.data;\n     let appearance = this.appearance;\n     const isUsingOwnCanvas = !!(hasOwnCanvas && intent & RenderingIntentFlag.DISPLAY);\n-    if (isUsingOwnCanvas && (rect[0] === rect[2] || rect[1] === rect[3])) {\n+    if (isUsingOwnCanvas && (this.width === 0 || this.height === 0)) {\n       this.data.hasOwnCanvas = false;\n       return {\n         opList: new OperatorList(),\n@@ -49955,7 +55383,7 @@\n       appearance.dict = new Dict();\n     }\n     const appearanceDict = appearance.dict;\n-    const resources = await this.loadResources([\"ExtGState\", \"ColorSpace\", \"Pattern\", \"Shading\", \"XObject\", \"Font\"], appearance);\n+    const resources = await this.loadResources(RESOURCES_KEYS_OPERATOR_LIST, appearance);\n     const bbox = lookupRect(appearanceDict.getArray(\"BBox\"), [0, 0, 1, 1]);\n     const matrix = lookupMatrix(appearanceDict.getArray(\"Matrix\"), IDENTITY_MATRIX);\n     const transform = getTransformMatrix(rect, bbox, matrix);\n@@ -49986,7 +55414,7 @@\n       separateCanvas: isUsingOwnCanvas\n     };\n   }\n-  async save(evaluator, task, annotationStorage) {\n+  async save(evaluator, task, annotationStorage, changes) {\n     return null;\n   }\n   get hasTextContent() {\n@@ -49996,7 +55424,7 @@\n     if (!this.appearance) {\n       return;\n     }\n-    const resources = await this.loadResources([\"ExtGState\", \"Font\", \"Properties\", \"XObject\"], this.appearance);\n+    const resources = await this.loadResources(RESOURCES_KEYS_TEXT_CONTENT, this.appearance);\n     const text = [];\n     const buffer = [];\n     let firstPosition = null;\n@@ -50047,8 +55475,10 @@\n     const transform = getTransformMatrix(rect, bbox, matrix);\n     transform[4] -= rect[0];\n     transform[5] -= rect[1];\n-    coords = Util.applyTransform(coords, transform);\n-    return Util.applyTransform(coords, matrix);\n+    const p = coords.slice();\n+    Util.applyTransform(p, transform);\n+    Util.applyTransform(p, matrix);\n+    return p;\n   }\n   getFieldObject() {\n     if (this.data.kidIds) {\n@@ -50102,10 +55532,17 @@\n     }\n     return fieldName.join(\".\");\n   }\n+  get width() {\n+    return this.data.rect[2] - this.data.rect[0];\n+  }\n+  get height() {\n+    return this.data.rect[3] - this.data.rect[1];\n+  }\n }\n class AnnotationBorderStyle {\n   constructor() {\n     this.width = 1;\n+    this.rawWidth = 1;\n     this.style = AnnotationBorderStyleType.SOLID;\n     this.dashArray = [3];\n     this.horizontalCornerRadius = 0;\n@@ -50118,6 +55555,7 @@\n     }\n     if (typeof width === \"number\") {\n       if (width > 0) {\n+        this.rawWidth = width;\n         const maxWidth = (rect[2] - rect[0]) \u002F 2;\n         const maxHeight = (rect[3] - rect[1]) \u002F 2;\n         if (maxWidth > 0 && maxHeight > 0 && (width > maxWidth || width > maxHeight)) {\n@@ -50253,10 +55691,7 @@\n     fillAlpha,\n     pointsCallback\n   }) {\n-    let minX = Number.MAX_VALUE;\n-    let minY = Number.MAX_VALUE;\n-    let maxX = Number.MIN_VALUE;\n-    let maxY = Number.MIN_VALUE;\n+    const bbox = this.data.rect = [Infinity, Infinity, -Infinity, -Infinity];\n     const buffer = [\"q\"];\n     if (extra) {\n       buffer.push(extra);\n@@ -50267,28 +55702,10 @@\n     if (fillColor) {\n       buffer.push(`${fillColor[0]} ${fillColor[1]} ${fillColor[2]} rg`);\n     }\n-    let pointsArray = this.data.quadPoints;\n-    if (!pointsArray) {\n-      pointsArray = [[{\n-        x: this.rectangle[0],\n-        y: this.rectangle[3]\n-      }, {\n-        x: this.rectangle[2],\n-        y: this.rectangle[3]\n-      }, {\n-        x: this.rectangle[0],\n-        y: this.rectangle[1]\n-      }, {\n-        x: this.rectangle[2],\n-        y: this.rectangle[1]\n-      }]];\n-    }\n-    for (const points of pointsArray) {\n-      const [mX, MX, mY, MY] = pointsCallback(buffer, points);\n-      minX = Math.min(minX, mX);\n-      maxX = Math.max(maxX, MX);\n-      minY = Math.min(minY, mY);\n-      maxY = Math.max(maxY, MY);\n+    const pointsArray = this.data.quadPoints || Float32Array.from([this.rectangle[0], this.rectangle[3], this.rectangle[2], this.rectangle[3], this.rectangle[0], this.rectangle[1], this.rectangle[2], this.rectangle[1]]);\n+    for (let i = 0, ii = pointsArray.length; i \u003C ii; i += 8) {\n+      const points = pointsCallback(buffer, pointsArray.subarray(i, i + 8));\n+      Util.rectBoundingBox(...points, bbox);\n     }\n     buffer.push(\"Q\");\n     const formDict = new Dict(xref);\n@@ -50314,26 +55731,22 @@\n     resources.set(\"XObject\", formDict);\n     const appearanceDict = new Dict(xref);\n     appearanceDict.set(\"Resources\", resources);\n-    const bbox = this.data.rect = [minX, minY, maxX, maxY];\n     appearanceDict.set(\"BBox\", bbox);\n     this.appearance = new StringStream(\"\u002FGS0 gs \u002FFm0 Do\");\n     this.appearance.dict = appearanceDict;\n     this._streams.push(this.appearance, appearanceStream);\n   }\n-  static async createNewAnnotation(xref, annotation, dependencies, params) {\n+  static async createNewAnnotation(xref, annotation, changes, params) {\n     const annotationRef = annotation.ref ||= xref.getNewTemporaryRef();\n     const ap = await this.createNewAppearanceStream(annotation, xref, params);\n-    const buffer = [];\n     let annotationDict;\n     if (ap) {\n       const apRef = xref.getNewTemporaryRef();\n       annotationDict = this.createNewDict(annotation, xref, {\n         apRef\n       });\n-      await writeObject(apRef, ap, buffer, xref);\n-      dependencies.push({\n-        ref: apRef,\n-        data: buffer.join(\"\")\n+      changes.put(apRef, {\n+        data: ap\n       });\n     } else {\n       annotationDict = this.createNewDict(annotation, xref, {});\n@@ -50341,18 +55754,18 @@\n     if (Number.isInteger(annotation.parentTreeId)) {\n       annotationDict.set(\"StructParent\", annotation.parentTreeId);\n     }\n-    buffer.length = 0;\n-    await writeObject(annotationRef, annotationDict, buffer, xref);\n+    changes.put(annotationRef, {\n+      data: annotationDict\n+    });\n     return {\n-      ref: annotationRef,\n-      data: buffer.join(\"\")\n+      ref: annotationRef\n     };\n   }\n   static async createNewPrintAnnotation(annotationGlobals, xref, annotation, params) {\n     const ap = await this.createNewAppearanceStream(annotation, xref, params);\n-    const annotationDict = this.createNewDict(annotation, xref, {\n+    const annotationDict = this.createNewDict(annotation, xref, ap ? {\n       ap\n-    });\n+    } : {});\n     const newAnnotation = new this.prototype.constructor({\n       dict: annotationDict,\n       xref,\n@@ -50435,6 +55848,7 @@\n     if (!Number.isInteger(data.fieldFlags) || data.fieldFlags \u003C 0) {\n       data.fieldFlags = 0;\n     }\n+    data.password = this.hasFieldFlag(AnnotationFieldFlag.PASSWORD);\n     data.readOnly = this.hasFieldFlag(AnnotationFieldFlag.READONLY);\n     data.required = this.hasFieldFlag(AnnotationFieldFlag.REQUIRED);\n     data.hidden = this._hasFlag(data.annotationFlags, AnnotationFlag.HIDDEN) || this._hasFlag(data.annotationFlags, AnnotationFlag.NOVIEW);\n@@ -50466,12 +55880,7 @@\n     if (rotation === undefined) {\n       rotation = this.rotation;\n     }\n-    if (rotation === 0) {\n-      return IDENTITY_MATRIX;\n-    }\n-    const width = this.data.rect[2] - this.data.rect[0];\n-    const height = this.data.rect[3] - this.data.rect[1];\n-    return getRotationMatrix(rotation, width, height);\n+    return rotation === 0 ? IDENTITY_MATRIX : getRotationMatrix(rotation, this.width, this.height);\n   }\n   getBorderAndBackgroundAppearances(annotationStorage) {\n     let rotation = annotationStorage?.get(this.data.id)?.rotation;\n@@ -50481,9 +55890,7 @@\n     if (!this.backgroundColor && !this.borderColor) {\n       return \"\";\n     }\n-    const width = this.data.rect[2] - this.data.rect[0];\n-    const height = this.data.rect[3] - this.data.rect[1];\n-    const rect = rotation === 0 || rotation === 180 ? `0 0 ${width} ${height} re` : `0 0 ${height} ${width} re`;\n+    const rect = rotation === 0 || rotation === 180 ? `0 0 ${this.width} ${this.height} re` : `0 0 ${this.height} ${this.width} re`;\n     let str = \"\";\n     if (this.backgroundColor) {\n       str = `${getPdfColor(this.backgroundColor, true)} ${rect} f `;\n@@ -50494,8 +55901,8 @@\n     }\n     return str;\n   }\n-  async getOperatorList(evaluator, task, intent, renderForms, annotationStorage) {\n-    if (renderForms && !(this instanceof SignatureWidgetAnnotation) && !this.data.noHTML && !this.data.hasOwnCanvas) {\n+  async getOperatorList(evaluator, task, intent, annotationStorage) {\n+    if (intent & RenderingIntentFlag.ANNOTATIONS_FORMS && !(this instanceof SignatureWidgetAnnotation) && !this.data.noHTML && !this.data.hasOwnCanvas) {\n       return {\n         opList: new OperatorList(),\n         separateForm: true,\n@@ -50503,11 +55910,11 @@\n       };\n     }\n     if (!this._hasText) {\n-      return super.getOperatorList(evaluator, task, intent, renderForms, annotationStorage);\n+      return super.getOperatorList(evaluator, task, intent, annotationStorage);\n     }\n     const content = await this._getAppearance(evaluator, task, intent, annotationStorage);\n     if (this.appearance && content === null) {\n-      return super.getOperatorList(evaluator, task, intent, renderForms, annotationStorage);\n+      return super.getOperatorList(evaluator, task, intent, annotationStorage);\n     }\n     const opList = new OperatorList();\n     if (!this._defaultAppearance || content === null) {\n@@ -50519,7 +55926,7 @@\n     }\n     const isUsingOwnCanvas = !!(this.data.hasOwnCanvas && intent & RenderingIntentFlag.DISPLAY);\n     const matrix = [1, 0, 0, 1, 0, 0];\n-    const bbox = [0, 0, this.data.rect[2] - this.data.rect[0], this.data.rect[3] - this.data.rect[1]];\n+    const bbox = [0, 0, this.width, this.height];\n     const transform = getTransformMatrix(this.data.rect, bbox, matrix);\n     let optionalContent;\n     if (this.oc) {\n@@ -50560,18 +55967,36 @@\n     return mk.size > 0 ? mk : null;\n   }\n   amendSavedDict(annotationStorage, dict) {}\n-  async save(evaluator, task, annotationStorage) {\n+  setValue(dict, value, xref, changes) {\n+    const {\n+      dict: parentDict,\n+      ref: parentRef\n+    } = getParentToUpdate(dict, this.ref, xref);\n+    if (!parentDict) {\n+      dict.set(\"V\", value);\n+    } else if (!changes.has(parentRef)) {\n+      const newParentDict = parentDict.clone();\n+      newParentDict.set(\"V\", value);\n+      changes.put(parentRef, {\n+        data: newParentDict\n+      });\n+      return newParentDict;\n+    }\n+    return null;\n+  }\n+  async save(evaluator, task, annotationStorage, changes) {\n     const storageEntry = annotationStorage?.get(this.data.id);\n+    const flags = this._buildFlags(storageEntry?.noView, storageEntry?.noPrint);\n     let value = storageEntry?.value,\n       rotation = storageEntry?.rotation;\n     if (value === this.data.fieldValue || value === undefined) {\n-      if (!this._hasValueFromXFA && rotation === undefined) {\n-        return null;\n+      if (!this._hasValueFromXFA && rotation === undefined && flags === undefined) {\n+        return;\n       }\n       value ||= this.data.fieldValue;\n     }\n-    if (rotation === undefined && !this._hasValueFromXFA && Array.isArray(value) && Array.isArray(this.data.fieldValue) && value.length === this.data.fieldValue.length && value.every((x, i) => x === this.data.fieldValue[i])) {\n-      return null;\n+    if (rotation === undefined && !this._hasValueFromXFA && Array.isArray(value) && Array.isArray(this.data.fieldValue) && isArrayEqual(value, this.data.fieldValue) && flags === undefined) {\n+      return;\n     }\n     if (rotation === undefined) {\n       rotation = this.rotation;\n@@ -50579,8 +56004,8 @@\n     let appearance = null;\n     if (!this._needAppearances) {\n       appearance = await this._getAppearance(evaluator, task, RenderingIntentFlag.SAVE, annotationStorage);\n-      if (appearance === null) {\n-        return null;\n+      if (appearance === null && flags === undefined) {\n+        return;\n       }\n     } else {}\n     let needAppearances = false;\n@@ -50593,7 +56018,7 @@\n     } = evaluator;\n     const originalDict = xref.fetchIfRef(this.ref);\n     if (!(originalDict instanceof Dict)) {\n-      return null;\n+      return;\n     }\n     const dict = new Dict(xref);\n     for (const key of originalDict.getKeys()) {\n@@ -50601,24 +56026,30 @@\n         dict.set(key, originalDict.getRaw(key));\n       }\n     }\n+    if (flags !== undefined) {\n+      dict.set(\"F\", flags);\n+      if (appearance === null && !needAppearances) {\n+        const ap = originalDict.getRaw(\"AP\");\n+        if (ap) {\n+          dict.set(\"AP\", ap);\n+        }\n+      }\n+    }\n     const xfa = {\n       path: this.data.fieldName,\n       value\n     };\n-    const encoder = val => isAscii(val) ? val : stringToUTF16String(val, true);\n-    dict.set(\"V\", Array.isArray(value) ? value.map(encoder) : encoder(value));\n-    this.amendSavedDict(annotationStorage, dict);\n+    const newParentDict = this.setValue(dict, Array.isArray(value) ? value.map(stringToAsciiOrUTF16BE) : stringToAsciiOrUTF16BE(value), xref, changes);\n+    this.amendSavedDict(annotationStorage, newParentDict || dict);\n     const maybeMK = this._getMKDict(rotation);\n     if (maybeMK) {\n       dict.set(\"MK\", maybeMK);\n     }\n-    const buffer = [];\n-    const changes = [{\n-      ref: this.ref,\n-      data: \"\",\n+    changes.put(this.ref, {\n+      data: dict,\n       xfa,\n       needAppearances\n-    }];\n+    });\n     if (appearance !== null) {\n       const newRef = xref.getNewTemporaryRef();\n       const AP = new Dict(xref);\n@@ -50629,28 +56060,22 @@\n       const appearanceDict = appearanceStream.dict = new Dict(xref);\n       appearanceDict.set(\"Subtype\", Name.get(\"Form\"));\n       appearanceDict.set(\"Resources\", resources);\n-      appearanceDict.set(\"BBox\", [0, 0, this.data.rect[2] - this.data.rect[0], this.data.rect[3] - this.data.rect[1]]);\n+      const bbox = rotation % 180 === 0 ? [0, 0, this.width, this.height] : [0, 0, this.height, this.width];\n+      appearanceDict.set(\"BBox\", bbox);\n       const rotationMatrix = this.getRotationMatrix(annotationStorage);\n       if (rotationMatrix !== IDENTITY_MATRIX) {\n         appearanceDict.set(\"Matrix\", rotationMatrix);\n       }\n-      await writeObject(newRef, appearanceStream, buffer, xref);\n-      changes.push({\n-        ref: newRef,\n-        data: buffer.join(\"\"),\n+      changes.put(newRef, {\n+        data: appearanceStream,\n         xfa: null,\n         needAppearances: false\n       });\n-      buffer.length = 0;\n     }\n     dict.set(\"M\", `D:${getModificationDate()}`);\n-    await writeObject(this.ref, dict, buffer, xref);\n-    changes[0].data = buffer.join(\"\");\n-    return changes;\n   }\n   async _getAppearance(evaluator, task, intent, annotationStorage) {\n-    const isPassword = this.hasFieldFlag(AnnotationFieldFlag.PASSWORD);\n-    if (isPassword) {\n+    if (this.data.password) {\n       return null;\n     }\n     const storageEntry = annotationStorage?.get(this.data.id);\n@@ -50675,7 +56100,7 @@\n       value = value[0];\n     }\n     assert(typeof value === \"string\", \"Expected `value` to be a string.\");\n-    value = value.trim();\n+    value = value.trimEnd();\n     if (this.data.combo) {\n       const option = this.data.options.find(({\n         exportValue\n@@ -50698,8 +56123,10 @@\n     }\n     const defaultPadding = 1;\n     const defaultHPadding = 2;\n-    let totalHeight = this.data.rect[3] - this.data.rect[1];\n-    let totalWidth = this.data.rect[2] - this.data.rect[0];\n+    let {\n+      width: totalWidth,\n+      height: totalHeight\n+    } = this;\n     if (rotation === 90 || rotation === 270) {\n       [totalWidth, totalHeight] = [totalHeight, totalWidth];\n     }\n@@ -50794,7 +56221,7 @@\n     return initialState.font;\n   }\n   _getTextWidth(text, font) {\n-    return font.charsToGlyphs(text).reduce((width, glyph) => width + glyph.width, 0) \u002F 1000;\n+    return Math.sumPrecise(font.charsToGlyphs(text).map(g => g.width)) \u002F 1000;\n   }\n   _computeFontSize(height, width, text, font, lineCount) {\n     let {\n@@ -50806,7 +56233,7 @@\n       const roundWithTwoDigits = x => Math.floor(x * 100) \u002F 100;\n       if (lineCount === -1) {\n         const textWidth = this._getTextWidth(text, font);\n-        fontSize = roundWithTwoDigits(Math.min(height \u002F LINE_FACTOR, textWidth > width ? width \u002F textWidth : Infinity));\n+        fontSize = roundWithTwoDigits(Math.min(height \u002F LINE_FACTOR, width \u002F textWidth));\n         numberOfLines = 1;\n       } else {\n         const lines = text.split(\u002F\\r\\n?|\\n\u002F);\n@@ -50912,9 +56339,16 @@\n class TextWidgetAnnotation extends WidgetAnnotation {\n   constructor(params) {\n     super(params);\n+    const {\n+      dict\n+    } = params;\n+    if (dict.has(\"PMD\")) {\n+      this.flags |= AnnotationFlag.HIDDEN;\n+      this.data.hidden = true;\n+      warn(\"Barcodes are not supported\");\n+    }\n     this.data.hasOwnCanvas = this.data.readOnly && !this.data.noHTML;\n     this._hasText = true;\n-    const dict = params.dict;\n     if (typeof this.data.fieldValue !== \"string\") {\n       this.data.fieldValue = \"\";\n     }\n@@ -50935,7 +56369,7 @@\n     }\n     this.data.maxLen = maximumLength;\n     this.data.multiLine = this.hasFieldFlag(AnnotationFieldFlag.MULTILINE);\n-    this.data.comb = this.hasFieldFlag(AnnotationFieldFlag.COMB) && !this.hasFieldFlag(AnnotationFieldFlag.MULTILINE) && !this.hasFieldFlag(AnnotationFieldFlag.PASSWORD) && !this.hasFieldFlag(AnnotationFieldFlag.FILESELECT) && this.data.maxLen !== 0;\n+    this.data.comb = this.hasFieldFlag(AnnotationFieldFlag.COMB) && !this.data.multiLine && !this.data.password && !this.hasFieldFlag(AnnotationFieldFlag.FILESELECT) && this.data.maxLen !== 0;\n     this.data.doNotScroll = this.hasFieldFlag(AnnotationFieldFlag.DONOTSCROLL);\n   }\n   get hasTextContent() {\n@@ -51023,13 +56457,28 @@\n     }\n     return chunks;\n   }\n+  async extractTextContent(evaluator, task, viewBox) {\n+    await super.extractTextContent(evaluator, task, viewBox);\n+    const text = this.data.textContent;\n+    if (!text) {\n+      return;\n+    }\n+    const allText = text.join(\"\\n\");\n+    if (allText === this.data.fieldValue) {\n+      return;\n+    }\n+    const regex = allText.replaceAll(\u002F([.*+?^${}()|[\\]\\\\])|(\\s+)\u002Fg, (_m, p1) => p1 ? `\\\\${p1}` : \"\\\\s+\");\n+    if (new RegExp(`^\\\\s*${regex}\\\\s*$`).test(this.data.fieldValue)) {\n+      this.data.textContent = this.data.fieldValue.split(\"\\n\");\n+    }\n+  }\n   getFieldObject() {\n     return {\n       id: this.data.id,\n       value: this.data.fieldValue,\n       defaultValue: this.data.defaultFieldValue || \"\",\n       multiline: this.data.multiLine,\n-      password: this.hasFieldFlag(AnnotationFieldFlag.PASSWORD),\n+      password: this.data.password,\n       charLimit: this.data.maxLen,\n       comb: this.data.comb,\n       editable: !this.data.readOnly,\n@@ -51050,9 +56499,11 @@\n     super(params);\n     this.checkedAppearance = null;\n     this.uncheckedAppearance = null;\n-    this.data.checkBox = !this.hasFieldFlag(AnnotationFieldFlag.RADIO) && !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n-    this.data.radioButton = this.hasFieldFlag(AnnotationFieldFlag.RADIO) && !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n-    this.data.pushButton = this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n+    const isRadio = this.hasFieldFlag(AnnotationFieldFlag.RADIO),\n+      isPushButton = this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n+    this.data.checkBox = !isRadio && !isPushButton;\n+    this.data.radioButton = isRadio && !isPushButton;\n+    this.data.pushButton = isPushButton;\n     this.data.isTooltipOnly = false;\n     if (this.data.checkBox) {\n       this._processCheckBox(params);\n@@ -51066,7 +56517,7 @@\n       warn(\"Invalid field flags for button widget annotation\");\n     }\n   }\n-  async getOperatorList(evaluator, task, intent, renderForms, annotationStorage) {\n+  async getOperatorList(evaluator, task, intent, annotationStorage) {\n     if (this.data.pushButton) {\n       return super.getOperatorList(evaluator, task, intent, false, annotationStorage);\n     }\n@@ -51078,7 +56529,7 @@\n       rotation = storageEntry ? storageEntry.rotation : null;\n     }\n     if (value === null && this.appearance) {\n-      return super.getOperatorList(evaluator, task, intent, renderForms, annotationStorage);\n+      return super.getOperatorList(evaluator, task, intent, annotationStorage);\n     }\n     if (value === null || value === undefined) {\n       value = this.data.checkBox ? this.data.fieldValue === this.data.exportValue : this.data.fieldValue === this.data.buttonValue;\n@@ -51091,7 +56542,7 @@\n         appearance.dict.set(\"Matrix\", this.getRotationMatrix(annotationStorage));\n       }\n       this.appearance = appearance;\n-      const operatorList = super.getOperatorList(evaluator, task, intent, renderForms, annotationStorage);\n+      const operatorList = super.getOperatorList(evaluator, task, intent, annotationStorage);\n       this.appearance = savedAppearance;\n       appearance.dict.set(\"Matrix\", savedMatrix);\n       return operatorList;\n@@ -51102,35 +56553,37 @@\n       separateCanvas: false\n     };\n   }\n-  async save(evaluator, task, annotationStorage) {\n+  async save(evaluator, task, annotationStorage, changes) {\n     if (this.data.checkBox) {\n-      return this._saveCheckbox(evaluator, task, annotationStorage);\n+      this._saveCheckbox(evaluator, task, annotationStorage, changes);\n+      return;\n     }\n     if (this.data.radioButton) {\n-      return this._saveRadioButton(evaluator, task, annotationStorage);\n+      this._saveRadioButton(evaluator, task, annotationStorage, changes);\n     }\n-    return null;\n   }\n-  async _saveCheckbox(evaluator, task, annotationStorage) {\n+  async _saveCheckbox(evaluator, task, annotationStorage, changes) {\n     if (!annotationStorage) {\n-      return null;\n+      return;\n     }\n     const storageEntry = annotationStorage.get(this.data.id);\n+    const flags = this._buildFlags(storageEntry?.noView, storageEntry?.noPrint);\n     let rotation = storageEntry?.rotation,\n       value = storageEntry?.value;\n-    if (rotation === undefined) {\n+    if (rotation === undefined && flags === undefined) {\n       if (value === undefined) {\n-        return null;\n+        return;\n       }\n       const defaultValue = this.data.fieldValue === this.data.exportValue;\n       if (defaultValue === value) {\n-        return null;\n+        return;\n       }\n     }\n-    const dict = evaluator.xref.fetchIfRef(this.ref);\n+    let dict = evaluator.xref.fetchIfRef(this.ref);\n     if (!(dict instanceof Dict)) {\n-      return null;\n+      return;\n     }\n+    dict = dict.clone();\n     if (rotation === undefined) {\n       rotation = this.rotation;\n     }\n@@ -51142,41 +56595,44 @@\n       value: value ? this.data.exportValue : \"\"\n     };\n     const name = Name.get(value ? this.data.exportValue : \"Off\");\n-    dict.set(\"V\", name);\n+    this.setValue(dict, name, evaluator.xref, changes);\n     dict.set(\"AS\", name);\n     dict.set(\"M\", `D:${getModificationDate()}`);\n+    if (flags !== undefined) {\n+      dict.set(\"F\", flags);\n+    }\n     const maybeMK = this._getMKDict(rotation);\n     if (maybeMK) {\n       dict.set(\"MK\", maybeMK);\n     }\n-    const buffer = [];\n-    await writeObject(this.ref, dict, buffer, evaluator.xref);\n-    return [{\n-      ref: this.ref,\n-      data: buffer.join(\"\"),\n-      xfa\n-    }];\n+    changes.put(this.ref, {\n+      data: dict,\n+      xfa,\n+      needAppearances: false\n+    });\n   }\n-  async _saveRadioButton(evaluator, task, annotationStorage) {\n+  async _saveRadioButton(evaluator, task, annotationStorage, changes) {\n     if (!annotationStorage) {\n-      return null;\n+      return;\n     }\n     const storageEntry = annotationStorage.get(this.data.id);\n+    const flags = this._buildFlags(storageEntry?.noView, storageEntry?.noPrint);\n     let rotation = storageEntry?.rotation,\n       value = storageEntry?.value;\n-    if (rotation === undefined) {\n+    if (rotation === undefined && flags === undefined) {\n       if (value === undefined) {\n-        return null;\n+        return;\n       }\n       const defaultValue = this.data.fieldValue === this.data.buttonValue;\n       if (defaultValue === value) {\n-        return null;\n+        return;\n       }\n     }\n-    const dict = evaluator.xref.fetchIfRef(this.ref);\n+    let dict = evaluator.xref.fetchIfRef(this.ref);\n     if (!(dict instanceof Dict)) {\n-      return null;\n+      return;\n     }\n+    dict = dict.clone();\n     if (value === undefined) {\n       value = this.data.fieldValue === this.data.buttonValue;\n     }\n@@ -51188,43 +56644,29 @@\n       value: value ? this.data.buttonValue : \"\"\n     };\n     const name = Name.get(value ? this.data.buttonValue : \"Off\");\n-    const buffer = [];\n-    let parentData = null;\n     if (value) {\n-      if (this.parent instanceof Ref) {\n-        const parent = evaluator.xref.fetch(this.parent);\n-        parent.set(\"V\", name);\n-        await writeObject(this.parent, parent, buffer, evaluator.xref);\n-        parentData = buffer.join(\"\");\n-        buffer.length = 0;\n-      } else if (this.parent instanceof Dict) {\n-        this.parent.set(\"V\", name);\n-      }\n+      this.setValue(dict, name, evaluator.xref, changes);\n     }\n     dict.set(\"AS\", name);\n     dict.set(\"M\", `D:${getModificationDate()}`);\n+    if (flags !== undefined) {\n+      dict.set(\"F\", flags);\n+    }\n     const maybeMK = this._getMKDict(rotation);\n     if (maybeMK) {\n       dict.set(\"MK\", maybeMK);\n     }\n-    await writeObject(this.ref, dict, buffer, evaluator.xref);\n-    const newRefs = [{\n-      ref: this.ref,\n-      data: buffer.join(\"\"),\n-      xfa\n-    }];\n-    if (parentData) {\n-      newRefs.push({\n-        ref: this.parent,\n-        data: parentData,\n-        xfa: null\n-      });\n-    }\n-    return newRefs;\n+    changes.put(this.ref, {\n+      data: dict,\n+      xfa,\n+      needAppearances: false\n+    });\n   }\n   _getDefaultCheckedAppearance(params, type) {\n-    const width = this.data.rect[2] - this.data.rect[0];\n-    const height = this.data.rect[3] - this.data.rect[1];\n+    const {\n+      width,\n+      height\n+    } = this;\n     const bbox = [0, 0, width, height];\n     const FONT_RATIO = 0.8;\n     const fontSize = Math.min(width, height) * FONT_RATIO;\n@@ -51277,7 +56719,7 @@\n       this.data.fieldValue = asValue;\n     }\n     const yes = this.data.fieldValue !== null && this.data.fieldValue !== \"Off\" ? this.data.fieldValue : \"Yes\";\n-    const exportValues = normalAppearance.getKeys();\n+    const exportValues = this._decodeFormValue(normalAppearance.getKeys());\n     if (exportValues.length === 0) {\n       exportValues.push(\"Off\", yes);\n     } else if (exportValues.length === 1) {\n@@ -51436,8 +56878,8 @@\n     if (!this.hasIndices) {\n       if (typeof this.data.fieldValue === \"string\") {\n         this.data.fieldValue = [this.data.fieldValue];\n-      } else if (!this.data.fieldValue) {\n-        this.data.fieldValue = [];\n+      } else {\n+        this.data.fieldValue ||= [];\n       }\n     } else {\n       this.data.fieldValue = [];\n@@ -51448,6 +56890,12 @@\n         }\n       }\n     }\n+    if (this.data.options.length === 0 && this.data.fieldValue.length > 0) {\n+      this.data.options = this.data.fieldValue.map(value => ({\n+        exportValue: value,\n+        displayValue: value\n+      }));\n+    }\n     this.data.combo = this.hasFieldFlag(AnnotationFieldFlag.COMBO);\n     this.data.multiSelect = this.hasFieldFlag(AnnotationFieldFlag.MULTISELECT);\n     this._hasText = true;\n@@ -51514,8 +56962,10 @@\n     }\n     const defaultPadding = 1;\n     const defaultHPadding = 2;\n-    let totalHeight = this.data.rect[3] - this.data.rect[1];\n-    let totalWidth = this.data.rect[2] - this.data.rect[0];\n+    let {\n+      width: totalWidth,\n+      height: totalHeight\n+    } = this;\n     if (rotation === 90 || rotation === 270) {\n       [totalWidth, totalHeight] = [totalHeight, totalWidth];\n     }\n@@ -51664,7 +57114,7 @@\n     } = params;\n     this.data.annotationType = AnnotationType.POPUP;\n     this.data.noHTML = false;\n-    if (this.data.rect[0] === this.data.rect[2] || this.data.rect[1] === this.data.rect[3]) {\n+    if (this.width === 0 || this.height === 0) {\n       this.data.rect = null;\n     }\n     let parentItem = dict.get(\"Parent\");\n@@ -51708,9 +57158,11 @@\n class FreeTextAnnotation extends MarkupAnnotation {\n   constructor(params) {\n     super(params);\n-    this.data.hasOwnCanvas = !this.data.noHTML;\n+    this.data.hasOwnCanvas = this.data.noRotate;\n+    this.data.isEditable = !this.data.noHTML;\n     this.data.noHTML = false;\n     const {\n+      annotationGlobals,\n       evaluatorOptions,\n       xref\n     } = params;\n@@ -51721,7 +57173,7 @@\n       const {\n         fontColor,\n         fontSize\n-      } = parseAppearanceStream(this.appearance, evaluatorOptions, xref);\n+      } = parseAppearanceStream(this.appearance, evaluatorOptions, xref, annotationGlobals.globalColorSpaceCache);\n       this.data.defaultAppearanceData.fontColor = fontColor;\n       this.data.defaultAppearanceData.fontSize = fontSize || 10;\n     } else {\n@@ -51759,24 +57211,30 @@\n     const {\n       color,\n       fontSize,\n+      oldAnnotation,\n       rect,\n       rotation,\n       user,\n       value\n     } = annotation;\n-    const freetext = new Dict(xref);\n+    const freetext = oldAnnotation || new Dict(xref);\n     freetext.set(\"Type\", Name.get(\"Annot\"));\n     freetext.set(\"Subtype\", Name.get(\"FreeText\"));\n-    freetext.set(\"CreationDate\", `D:${getModificationDate()}`);\n+    if (oldAnnotation) {\n+      freetext.set(\"M\", `D:${getModificationDate()}`);\n+      freetext.delete(\"RC\");\n+    } else {\n+      freetext.set(\"CreationDate\", `D:${getModificationDate()}`);\n+    }\n     freetext.set(\"Rect\", rect);\n     const da = `\u002FHelv ${fontSize} Tf ${getPdfColor(color, true)}`;\n     freetext.set(\"DA\", da);\n-    freetext.set(\"Contents\", isAscii(value) ? value : stringToUTF16String(value, true));\n+    freetext.set(\"Contents\", stringToAsciiOrUTF16BE(value));\n     freetext.set(\"F\", 4);\n     freetext.set(\"Border\", [0, 0, 0]);\n     freetext.set(\"Rotate\", rotation);\n     if (user) {\n-      freetext.set(\"T\", isAscii(user) ? user : stringToUTF16String(user, true));\n+      freetext.set(\"T\", stringToAsciiOrUTF16BE(user));\n     }\n     if (apRef || ap) {\n       const n = new Dict(xref);\n@@ -51935,7 +57393,7 @@\n         fillAlpha,\n         pointsCallback: (buffer, points) => {\n           buffer.push(`${lineCoordinates[0]} ${lineCoordinates[1]} m`, `${lineCoordinates[2]} ${lineCoordinates[3]} l`, \"S\");\n-          return [points[0].x - borderWidth, points[1].x + borderWidth, points[3].y - borderWidth, points[1].y + borderWidth];\n+          return [points[0] - borderWidth, points[7] - borderWidth, points[2] + borderWidth, points[3] + borderWidth];\n         }\n       });\n     }\n@@ -51968,17 +57426,17 @@\n         strokeAlpha,\n         fillAlpha,\n         pointsCallback: (buffer, points) => {\n-          const x = points[2].x + this.borderStyle.width \u002F 2;\n-          const y = points[2].y + this.borderStyle.width \u002F 2;\n-          const width = points[3].x - points[2].x - this.borderStyle.width;\n-          const height = points[1].y - points[3].y - this.borderStyle.width;\n+          const x = points[4] + this.borderStyle.width \u002F 2;\n+          const y = points[5] + this.borderStyle.width \u002F 2;\n+          const width = points[6] - points[4] - this.borderStyle.width;\n+          const height = points[3] - points[7] - this.borderStyle.width;\n           buffer.push(`${x} ${y} ${width} ${height} re`);\n           if (fillColor) {\n             buffer.push(\"B\");\n           } else {\n             buffer.push(\"S\");\n           }\n-          return [points[0].x, points[1].x, points[3].y, points[1].y];\n+          return [points[0], points[7], points[2], points[3]];\n         }\n       });\n     }\n@@ -52010,10 +57468,10 @@\n         strokeAlpha,\n         fillAlpha,\n         pointsCallback: (buffer, points) => {\n-          const x0 = points[0].x + this.borderStyle.width \u002F 2;\n-          const y0 = points[0].y - this.borderStyle.width \u002F 2;\n-          const x1 = points[3].x - this.borderStyle.width \u002F 2;\n-          const y1 = points[3].y + this.borderStyle.width \u002F 2;\n+          const x0 = points[0] + this.borderStyle.width \u002F 2;\n+          const y0 = points[1] - this.borderStyle.width \u002F 2;\n+          const x1 = points[6] - this.borderStyle.width \u002F 2;\n+          const y1 = points[7] + this.borderStyle.width \u002F 2;\n           const xMid = x0 + (x1 - x0) \u002F 2;\n           const yMid = y0 + (y1 - y0) \u002F 2;\n           const xOffset = (x1 - x0) \u002F 2 * controlPointsDistance;\n@@ -52024,7 +57482,7 @@\n           } else {\n             buffer.push(\"S\");\n           }\n-          return [points[0].x, points[1].x, points[3].y, points[1].y];\n+          return [points[0], points[7], points[2], points[3]];\n         }\n       });\n     }\n@@ -52040,7 +57498,7 @@\n     this.data.annotationType = AnnotationType.POLYLINE;\n     this.data.hasOwnCanvas = this.data.noRotate;\n     this.data.noHTML = false;\n-    this.data.vertices = [];\n+    this.data.vertices = null;\n     if (!(this instanceof PolygonAnnotation)) {\n       this.setLineEndings(dict.getArray(\"LE\"));\n       this.data.lineEndings = this.lineEndings;\n@@ -52049,23 +57507,15 @@\n     if (!isNumberArray(rawVertices, null)) {\n       return;\n     }\n-    for (let i = 0, ii = rawVertices.length; i \u003C ii; i += 2) {\n-      this.data.vertices.push({\n-        x: rawVertices[i],\n-        y: rawVertices[i + 1]\n-      });\n-    }\n+    const vertices = this.data.vertices = Float32Array.from(rawVertices);\n     if (!this.appearance) {\n       const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\n       const strokeAlpha = dict.get(\"CA\");\n       const borderWidth = this.borderStyle.width || 1,\n         borderAdjust = 2 * borderWidth;\n       const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n-      for (const vertex of this.data.vertices) {\n-        bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust);\n-        bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust);\n-        bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust);\n-        bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust);\n+      for (let i = 0, ii = vertices.length; i \u003C ii; i += 2) {\n+        Util.rectBoundingBox(vertices[i] - borderAdjust, vertices[i + 1] - borderAdjust, vertices[i] + borderAdjust, vertices[i + 1] + borderAdjust, bbox);\n       }\n       if (!Util.intersect(this.rectangle, bbox)) {\n         this.rectangle = bbox;\n@@ -52076,12 +57526,11 @@\n         strokeColor,\n         strokeAlpha,\n         pointsCallback: (buffer, points) => {\n-          const vertices = this.data.vertices;\n-          for (let i = 0, ii = vertices.length; i \u003C ii; i++) {\n-            buffer.push(`${vertices[i].x} ${vertices[i].y} ${i === 0 ? \"m\" : \"l\"}`);\n+          for (let i = 0, ii = vertices.length; i \u003C ii; i += 2) {\n+            buffer.push(`${vertices[i]} ${vertices[i + 1]} ${i === 0 ? \"m\" : \"l\"}`);\n           }\n           buffer.push(\"S\");\n-          return [points[0].x, points[1].x, points[3].y, points[1].y];\n+          return [points[0], points[7], points[2], points[3]];\n         }\n       });\n     }\n@@ -52110,23 +57559,25 @@\n     } = params;\n     this.data.annotationType = AnnotationType.INK;\n     this.data.inkLists = [];\n+    this.data.isEditable = !this.data.noHTML;\n+    this.data.noHTML = false;\n+    this.data.opacity = dict.get(\"CA\") || 1;\n     const rawInkLists = dict.getArray(\"InkList\");\n     if (!Array.isArray(rawInkLists)) {\n       return;\n     }\n     for (let i = 0, ii = rawInkLists.length; i \u003C ii; ++i) {\n-      this.data.inkLists.push([]);\n       if (!Array.isArray(rawInkLists[i])) {\n         continue;\n       }\n+      const inkList = new Float32Array(rawInkLists[i].length);\n+      this.data.inkLists.push(inkList);\n       for (let j = 0, jj = rawInkLists[i].length; j \u003C jj; j += 2) {\n         const x = xref.fetchIfRef(rawInkLists[i][j]),\n           y = xref.fetchIfRef(rawInkLists[i][j + 1]);\n         if (typeof x === \"number\" && typeof y === \"number\") {\n-          this.data.inkLists[i].push({\n-            x,\n-            y\n-          });\n+          inkList[j] = x;\n+          inkList[j + 1] = y;\n         }\n       }\n     }\n@@ -52136,12 +57587,9 @@\n       const borderWidth = this.borderStyle.width || 1,\n         borderAdjust = 2 * borderWidth;\n       const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n-      for (const inkLists of this.data.inkLists) {\n-        for (const vertex of inkLists) {\n-          bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust);\n-          bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust);\n-          bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust);\n-          bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust);\n+      for (const inkList of this.data.inkLists) {\n+        for (let i = 0, ii = inkList.length; i \u003C ii; i += 2) {\n+          Util.rectBoundingBox(inkList[i] - borderAdjust, inkList[i + 1] - borderAdjust, inkList[i] + borderAdjust, inkList[i + 1] + borderAdjust, bbox);\n         }\n       }\n       if (!Util.intersect(this.rectangle, bbox)) {\n@@ -52154,12 +57602,12 @@\n         strokeAlpha,\n         pointsCallback: (buffer, points) => {\n           for (const inkList of this.data.inkLists) {\n-            for (let i = 0, ii = inkList.length; i \u003C ii; i++) {\n-              buffer.push(`${inkList[i].x} ${inkList[i].y} ${i === 0 ? \"m\" : \"l\"}`);\n+            for (let i = 0, ii = inkList.length; i \u003C ii; i += 2) {\n+              buffer.push(`${inkList[i]} ${inkList[i + 1]} ${i === 0 ? \"m\" : \"l\"}`);\n             }\n             buffer.push(\"S\");\n           }\n-          return [points[0].x, points[1].x, points[3].y, points[1].y];\n+          return [points[0], points[7], points[2], points[3]];\n         }\n       });\n     }\n@@ -52169,29 +57617,34 @@\n     ap\n   }) {\n     const {\n+      oldAnnotation,\n       color,\n       opacity,\n       paths,\n       outlines,\n       rect,\n       rotation,\n-      thickness\n+      thickness,\n+      user\n     } = annotation;\n-    const ink = new Dict(xref);\n+    const ink = oldAnnotation || new Dict(xref);\n     ink.set(\"Type\", Name.get(\"Annot\"));\n     ink.set(\"Subtype\", Name.get(\"Ink\"));\n-    ink.set(\"CreationDate\", `D:${getModificationDate()}`);\n+    ink.set(oldAnnotation ? \"M\" : \"CreationDate\", `D:${getModificationDate()}`);\n     ink.set(\"Rect\", rect);\n-    ink.set(\"InkList\", outlines?.points || paths.map(p => p.points));\n+    ink.set(\"InkList\", outlines?.points || paths.points);\n     ink.set(\"F\", 4);\n     ink.set(\"Rotate\", rotation);\n+    if (user) {\n+      ink.set(\"T\", stringToAsciiOrUTF16BE(user));\n+    }\n     if (outlines) {\n       ink.set(\"IT\", Name.get(\"InkHighlight\"));\n     }\n     const bs = new Dict(xref);\n     ink.set(\"BS\", bs);\n     bs.set(\"W\", thickness);\n-    ink.set(\"C\", Array.from(color, c => c \u002F 255));\n+    ink.set(\"C\", getPdfColorArray(color));\n     ink.set(\"CA\", opacity);\n     const n = new Dict(xref);\n     ink.set(\"AP\", n);\n@@ -52217,23 +57670,21 @@\n     if (opacity !== 1) {\n       appearanceBuffer.push(\"\u002FR0 gs\");\n     }\n-    const buffer = [];\n-    for (const {\n-      bezier\n-    } of paths) {\n-      buffer.length = 0;\n-      buffer.push(`${numberToString(bezier[0])} ${numberToString(bezier[1])} m`);\n-      if (bezier.length === 2) {\n-        buffer.push(`${numberToString(bezier[0])} ${numberToString(bezier[1])} l S`);\n-      } else {\n-        for (let i = 2, ii = bezier.length; i \u003C ii; i += 6) {\n-          const curve = bezier.slice(i, i + 6).map(numberToString).join(\" \");\n-          buffer.push(`${curve} c`);\n+    for (const outline of paths.lines) {\n+      appearanceBuffer.push(`${numberToString(outline[4])} ${numberToString(outline[5])} m`);\n+      for (let i = 6, ii = outline.length; i \u003C ii; i += 6) {\n+        if (isNaN(outline[i])) {\n+          appearanceBuffer.push(`${numberToString(outline[i + 4])} ${numberToString(outline[i + 5])} l`);\n+        } else {\n+          const [c1x, c1y, c2x, c2y, x, y] = outline.slice(i, i + 6);\n+          appearanceBuffer.push([c1x, c1y, c2x, c2y, x, y].map(numberToString).join(\" \") + \" c\");\n         }\n-        buffer.push(\"S\");\n       }\n-      appearanceBuffer.push(buffer.join(\"\\n\"));\n+      if (outline.length === 6) {\n+        appearanceBuffer.push(`${numberToString(outline[4])} ${numberToString(outline[5])} l`);\n+      }\n     }\n+    appearanceBuffer.push(\"S\");\n     const appearance = appearanceBuffer.join(\"\\n\");\n     const appearanceStreamDict = new Dict(xref);\n     appearanceStreamDict.set(\"FormType\", 1);\n@@ -52267,11 +57718,11 @@\n     const appearanceBuffer = [`${getPdfColor(color, true)}`, \"\u002FR0 gs\"];\n     appearanceBuffer.push(`${numberToString(outline[4])} ${numberToString(outline[5])} m`);\n     for (let i = 6, ii = outline.length; i \u003C ii; i += 6) {\n-      if (isNaN(outline[i]) || outline[i] === null) {\n+      if (isNaN(outline[i])) {\n         appearanceBuffer.push(`${numberToString(outline[i + 4])} ${numberToString(outline[i + 5])} l`);\n       } else {\n-        const curve = outline.slice(i, i + 6).map(numberToString).join(\" \");\n-        appearanceBuffer.push(`${curve} c`);\n+        const [c1x, c1y, c2x, c2y, x, y] = outline.slice(i, i + 6);\n+        appearanceBuffer.push([c1x, c1y, c2x, c2y, x, y].map(numberToString).join(\" \") + \" c\");\n       }\n     }\n     appearanceBuffer.push(\"h f\");\n@@ -52306,6 +57757,9 @@\n       xref\n     } = params;\n     this.data.annotationType = AnnotationType.HIGHLIGHT;\n+    this.data.isEditable = !this.data.noHTML;\n+    this.data.noHTML = false;\n+    this.data.opacity = dict.get(\"CA\") || 1;\n     const quadPoints = this.data.quadPoints = getQuadPoints(dict, null);\n     if (quadPoints) {\n       const resources = this.appearance?.dict.get(\"Resources\");\n@@ -52321,8 +57775,8 @@\n           blendMode: \"Multiply\",\n           fillAlpha,\n           pointsCallback: (buffer, points) => {\n-            buffer.push(`${points[0].x} ${points[0].y} m`, `${points[1].x} ${points[1].y} l`, `${points[3].x} ${points[3].y} l`, `${points[2].x} ${points[2].y} l`, \"f\");\n-            return [points[0].x, points[1].x, points[3].y, points[1].y];\n+            buffer.push(`${points[0]} ${points[1]} m`, `${points[2]} ${points[3]} l`, `${points[6]} ${points[7]} l`, `${points[4]} ${points[5]} l`, \"f\");\n+            return [points[0], points[7], points[2], points[3]];\n           }\n         });\n       }\n@@ -52336,25 +57790,27 @@\n   }) {\n     const {\n       color,\n+      oldAnnotation,\n       opacity,\n       rect,\n       rotation,\n       user,\n       quadPoints\n     } = annotation;\n-    const highlight = new Dict(xref);\n+    const highlight = oldAnnotation || new Dict(xref);\n     highlight.set(\"Type\", Name.get(\"Annot\"));\n     highlight.set(\"Subtype\", Name.get(\"Highlight\"));\n+    highlight.set(oldAnnotation ? \"M\" : \"CreationDate\", `D:${getModificationDate()}`);\n     highlight.set(\"CreationDate\", `D:${getModificationDate()}`);\n     highlight.set(\"Rect\", rect);\n     highlight.set(\"F\", 4);\n     highlight.set(\"Border\", [0, 0, 0]);\n     highlight.set(\"Rotate\", rotation);\n     highlight.set(\"QuadPoints\", quadPoints);\n-    highlight.set(\"C\", Array.from(color, c => c \u002F 255));\n+    highlight.set(\"C\", getPdfColorArray(color));\n     highlight.set(\"CA\", opacity);\n     if (user) {\n-      highlight.set(\"T\", isAscii(user) ? user : stringToUTF16String(user, true));\n+      highlight.set(\"T\", stringToAsciiOrUTF16BE(user));\n     }\n     if (apRef || ap) {\n       const n = new Dict(xref);\n@@ -52424,8 +57880,8 @@\n           strokeColor,\n           strokeAlpha,\n           pointsCallback: (buffer, points) => {\n-            buffer.push(`${points[2].x} ${points[2].y + 1.3} m`, `${points[3].x} ${points[3].y + 1.3} l`, \"S\");\n-            return [points[0].x, points[1].x, points[3].y, points[1].y];\n+            buffer.push(`${points[4]} ${points[5] + 1.3} m`, `${points[6]} ${points[7] + 1.3} l`, \"S\");\n+            return [points[0], points[7], points[2], points[3]];\n           }\n         });\n       }\n@@ -52453,11 +57909,11 @@\n           strokeColor,\n           strokeAlpha,\n           pointsCallback: (buffer, points) => {\n-            const dy = (points[0].y - points[2].y) \u002F 6;\n+            const dy = (points[1] - points[5]) \u002F 6;\n             let shift = dy;\n-            let x = points[2].x;\n-            const y = points[2].y;\n-            const xEnd = points[3].x;\n+            let x = points[4];\n+            const y = points[5];\n+            const xEnd = points[6];\n             buffer.push(`${x} ${y + shift} m`);\n             do {\n               x += 2;\n@@ -52465,7 +57921,7 @@\n               buffer.push(`${x} ${y + shift} l`);\n             } while (x \u003C xEnd);\n             buffer.push(\"S\");\n-            return [points[2].x, xEnd, y - 2 * dy, y + 2 * dy];\n+            return [points[4], y - 2 * dy, xEnd, y + 2 * dy];\n           }\n         });\n       }\n@@ -52493,8 +57949,8 @@\n           strokeColor,\n           strokeAlpha,\n           pointsCallback: (buffer, points) => {\n-            buffer.push(`${(points[0].x + points[2].x) \u002F 2} ` + `${(points[0].y + points[2].y) \u002F 2} m`, `${(points[1].x + points[3].x) \u002F 2} ` + `${(points[1].y + points[3].y) \u002F 2} l`, \"S\");\n-            return [points[0].x, points[1].x, points[3].y, points[1].y];\n+            buffer.push(`${(points[0] + points[4]) \u002F 2} ` + `${(points[1] + points[5]) \u002F 2} m`, `${(points[2] + points[6]) \u002F 2} ` + `${(points[3] + points[7]) \u002F 2} l`, \"S\");\n+            return [points[0], points[7], points[2], points[3]];\n           }\n         });\n       }\n@@ -52504,12 +57960,29 @@\n   }\n }\n class StampAnnotation extends MarkupAnnotation {\n+  #savedHasOwnCanvas = null;\n   constructor(params) {\n     super(params);\n     this.data.annotationType = AnnotationType.STAMP;\n     this.data.hasOwnCanvas = this.data.noRotate;\n+    this.data.isEditable = !this.data.noHTML;\n     this.data.noHTML = false;\n   }\n+  mustBeViewedWhenEditing(isEditing, modifiedIds = null) {\n+    if (isEditing) {\n+      if (!this.data.isEditable) {\n+        return true;\n+      }\n+      this.#savedHasOwnCanvas ??= this.data.hasOwnCanvas;\n+      this.data.hasOwnCanvas = true;\n+      return true;\n+    }\n+    if (this.#savedHasOwnCanvas !== null) {\n+      this.data.hasOwnCanvas = this.#savedHasOwnCanvas;\n+      this.#savedHasOwnCanvas = null;\n+    }\n+    return !modifiedIds?.has(this.data.id);\n+  }\n   static async createImage(bitmap, xref) {\n     const {\n       width,\n@@ -52577,20 +58050,21 @@\n     ap\n   }) {\n     const {\n+      oldAnnotation,\n       rect,\n       rotation,\n       user\n     } = annotation;\n-    const stamp = new Dict(xref);\n+    const stamp = oldAnnotation || new Dict(xref);\n     stamp.set(\"Type\", Name.get(\"Annot\"));\n     stamp.set(\"Subtype\", Name.get(\"Stamp\"));\n-    stamp.set(\"CreationDate\", `D:${getModificationDate()}`);\n+    stamp.set(oldAnnotation ? \"M\" : \"CreationDate\", `D:${getModificationDate()}`);\n     stamp.set(\"Rect\", rect);\n     stamp.set(\"F\", 4);\n     stamp.set(\"Border\", [0, 0, 0]);\n     stamp.set(\"Rotate\", rotation);\n     if (user) {\n-      stamp.set(\"T\", isAscii(user) ? user : stringToUTF16String(user, true));\n+      stamp.set(\"T\", stringToAsciiOrUTF16BE(user));\n     }\n     if (apRef || ap) {\n       const n = new Dict(xref);\n@@ -52603,7 +58077,48 @@\n     }\n     return stamp;\n   }\n+  static async #createNewAppearanceStreamForDrawing(annotation, xref) {\n+    const {\n+      areContours,\n+      color,\n+      rect,\n+      lines,\n+      thickness\n+    } = annotation;\n+    const appearanceBuffer = [`${thickness} w 1 J 1 j`, `${getPdfColor(color, areContours)}`];\n+    for (const line of lines) {\n+      appearanceBuffer.push(`${numberToString(line[4])} ${numberToString(line[5])} m`);\n+      for (let i = 6, ii = line.length; i \u003C ii; i += 6) {\n+        if (isNaN(line[i])) {\n+          appearanceBuffer.push(`${numberToString(line[i + 4])} ${numberToString(line[i + 5])} l`);\n+        } else {\n+          const [c1x, c1y, c2x, c2y, x, y] = line.slice(i, i + 6);\n+          appearanceBuffer.push([c1x, c1y, c2x, c2y, x, y].map(numberToString).join(\" \") + \" c\");\n+        }\n+      }\n+      if (line.length === 6) {\n+        appearanceBuffer.push(`${numberToString(line[4])} ${numberToString(line[5])} l`);\n+      }\n+    }\n+    appearanceBuffer.push(areContours ? \"F\" : \"S\");\n+    const appearance = appearanceBuffer.join(\"\\n\");\n+    const appearanceStreamDict = new Dict(xref);\n+    appearanceStreamDict.set(\"FormType\", 1);\n+    appearanceStreamDict.set(\"Subtype\", Name.get(\"Form\"));\n+    appearanceStreamDict.set(\"Type\", Name.get(\"XObject\"));\n+    appearanceStreamDict.set(\"BBox\", rect);\n+    appearanceStreamDict.set(\"Length\", appearance.length);\n+    const ap = new StringStream(appearance);\n+    ap.dict = appearanceStreamDict;\n+    return ap;\n+  }\n   static async createNewAppearanceStream(annotation, xref, params) {\n+    if (annotation.oldAnnotation) {\n+      return null;\n+    }\n+    if (annotation.isSignature) {\n+      return this.#createNewAppearanceStreamForDrawing(annotation, xref);\n+    }\n     const {\n       rotation\n     } = annotation;\n@@ -52651,7 +58166,93 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fdataset_reader.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fcalculate_md5.js\n+\n+\n+\n+\n+\n+\n+\n+\n+const PARAMS = {\n+  get r() {\n+    return shadow(this, \"r\", new Uint8Array([7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]));\n+  },\n+  get k() {\n+    return shadow(this, \"k\", new Int32Array([-680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426, -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162, 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632, 643717713, -373897302, -701558691, 38016083, -660478335, -405537848, 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784, 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556, -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222, -722521979, 76029189, -640364487, -421815835, 530742520, -995338651, -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606, -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649, -145523070, -1120210379, 718787259, -343485551]));\n+  }\n+};\n+function calculateMD5(data, offset, length) {\n+  let h0 = 1732584193,\n+    h1 = -271733879,\n+    h2 = -1732584194,\n+    h3 = 271733878;\n+  const paddedLength = length + 72 & ~63;\n+  const padded = new Uint8Array(paddedLength);\n+  let i, j;\n+  for (i = 0; i \u003C length; ++i) {\n+    padded[i] = data[offset++];\n+  }\n+  padded[i++] = 0x80;\n+  const n = paddedLength - 8;\n+  if (i \u003C n) {\n+    i = n;\n+  }\n+  padded[i++] = length \u003C\u003C 3 & 0xff;\n+  padded[i++] = length >> 5 & 0xff;\n+  padded[i++] = length >> 13 & 0xff;\n+  padded[i++] = length >> 21 & 0xff;\n+  padded[i++] = length >>> 29 & 0xff;\n+  i += 3;\n+  const w = new Int32Array(16);\n+  const {\n+    k,\n+    r\n+  } = PARAMS;\n+  for (i = 0; i \u003C paddedLength;) {\n+    for (j = 0; j \u003C 16; ++j, i += 4) {\n+      w[j] = padded[i] | padded[i + 1] \u003C\u003C 8 | padded[i + 2] \u003C\u003C 16 | padded[i + 3] \u003C\u003C 24;\n+    }\n+    let a = h0,\n+      b = h1,\n+      c = h2,\n+      d = h3,\n+      f,\n+      g;\n+    for (j = 0; j \u003C 64; ++j) {\n+      if (j \u003C 16) {\n+        f = b & c | ~b & d;\n+        g = j;\n+      } else if (j \u003C 32) {\n+        f = d & b | ~d & c;\n+        g = 5 * j + 1 & 15;\n+      } else if (j \u003C 48) {\n+        f = b ^ c ^ d;\n+        g = 3 * j + 5 & 15;\n+      } else {\n+        f = c ^ (b | ~d);\n+        g = 7 * j & 15;\n+      }\n+      const tmp = d,\n+        rotateArg = a + f + k[j] + w[g] | 0,\n+        rotate = r[j];\n+      d = c;\n+      c = b;\n+      b = b + (rotateArg \u003C\u003C rotate | rotateArg >>> 32 - rotate) | 0;\n+      a = tmp;\n+    }\n+    h0 = h0 + a | 0;\n+    h1 = h1 + b | 0;\n+    h2 = h2 + c | 0;\n+    h3 = h3 + d | 0;\n+  }\n+  return new Uint8Array([h0 & 0xFF, h0 >> 8 & 0xFF, h0 >> 16 & 0xFF, h0 >>> 24 & 0xFF, h1 & 0xFF, h1 >> 8 & 0xFF, h1 >> 16 & 0xFF, h1 >>> 24 & 0xFF, h2 & 0xFF, h2 >> 8 & 0xFF, h2 >> 16 & 0xFF, h2 >>> 24 & 0xFF, h3 & 0xFF, h3 >> 8 & 0xFF, h3 >> 16 & 0xFF, h3 >>> 24 & 0xFF]);\n+}\n+\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fdataset_reader.js\n+\n+\n \n \n \n@@ -52708,7 +58309,1229 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fxref.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fcalculate_sha_other.js\n+\n+\n+\n+\n+\n+\n+\n+\n+class Word64 {\n+  constructor(highInteger, lowInteger) {\n+    this.high = highInteger | 0;\n+    this.low = lowInteger | 0;\n+  }\n+  and(word) {\n+    this.high &= word.high;\n+    this.low &= word.low;\n+  }\n+  xor(word) {\n+    this.high ^= word.high;\n+    this.low ^= word.low;\n+  }\n+  shiftRight(places) {\n+    if (places >= 32) {\n+      this.low = this.high >>> places - 32 | 0;\n+      this.high = 0;\n+    } else {\n+      this.low = this.low >>> places | this.high \u003C\u003C 32 - places;\n+      this.high = this.high >>> places | 0;\n+    }\n+  }\n+  rotateRight(places) {\n+    let low, high;\n+    if (places & 32) {\n+      high = this.low;\n+      low = this.high;\n+    } else {\n+      low = this.low;\n+      high = this.high;\n+    }\n+    places &= 31;\n+    this.low = low >>> places | high \u003C\u003C 32 - places;\n+    this.high = high >>> places | low \u003C\u003C 32 - places;\n+  }\n+  not() {\n+    this.high = ~this.high;\n+    this.low = ~this.low;\n+  }\n+  add(word) {\n+    const lowAdd = (this.low >>> 0) + (word.low >>> 0);\n+    let highAdd = (this.high >>> 0) + (word.high >>> 0);\n+    if (lowAdd > 0xffffffff) {\n+      highAdd += 1;\n+    }\n+    this.low = lowAdd | 0;\n+    this.high = highAdd | 0;\n+  }\n+  copyTo(bytes, offset) {\n+    bytes[offset] = this.high >>> 24 & 0xff;\n+    bytes[offset + 1] = this.high >> 16 & 0xff;\n+    bytes[offset + 2] = this.high >> 8 & 0xff;\n+    bytes[offset + 3] = this.high & 0xff;\n+    bytes[offset + 4] = this.low >>> 24 & 0xff;\n+    bytes[offset + 5] = this.low >> 16 & 0xff;\n+    bytes[offset + 6] = this.low >> 8 & 0xff;\n+    bytes[offset + 7] = this.low & 0xff;\n+  }\n+  assign(word) {\n+    this.high = word.high;\n+    this.low = word.low;\n+  }\n+}\n+const calculate_sha_other_PARAMS = {\n+  get k() {\n+    return shadow(this, \"k\", [new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd), new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc), new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019), new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118), new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe), new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2), new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1), new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694), new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3), new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65), new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483), new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5), new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210), new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4), new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725), new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70), new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926), new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df), new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8), new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b), new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001), new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30), new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910), new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8), new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53), new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8), new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb), new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3), new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60), new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec), new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9), new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b), new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207), new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178), new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6), new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b), new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493), new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c), new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a), new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)]);\n+  }\n+};\n+function ch(result, x, y, z, tmp) {\n+  result.assign(x);\n+  result.and(y);\n+  tmp.assign(x);\n+  tmp.not();\n+  tmp.and(z);\n+  result.xor(tmp);\n+}\n+function maj(result, x, y, z, tmp) {\n+  result.assign(x);\n+  result.and(y);\n+  tmp.assign(x);\n+  tmp.and(z);\n+  result.xor(tmp);\n+  tmp.assign(y);\n+  tmp.and(z);\n+  result.xor(tmp);\n+}\n+function sigma(result, x, tmp) {\n+  result.assign(x);\n+  result.rotateRight(28);\n+  tmp.assign(x);\n+  tmp.rotateRight(34);\n+  result.xor(tmp);\n+  tmp.assign(x);\n+  tmp.rotateRight(39);\n+  result.xor(tmp);\n+}\n+function sigmaPrime(result, x, tmp) {\n+  result.assign(x);\n+  result.rotateRight(14);\n+  tmp.assign(x);\n+  tmp.rotateRight(18);\n+  result.xor(tmp);\n+  tmp.assign(x);\n+  tmp.rotateRight(41);\n+  result.xor(tmp);\n+}\n+function littleSigma(result, x, tmp) {\n+  result.assign(x);\n+  result.rotateRight(1);\n+  tmp.assign(x);\n+  tmp.rotateRight(8);\n+  result.xor(tmp);\n+  tmp.assign(x);\n+  tmp.shiftRight(7);\n+  result.xor(tmp);\n+}\n+function littleSigmaPrime(result, x, tmp) {\n+  result.assign(x);\n+  result.rotateRight(19);\n+  tmp.assign(x);\n+  tmp.rotateRight(61);\n+  result.xor(tmp);\n+  tmp.assign(x);\n+  tmp.shiftRight(6);\n+  result.xor(tmp);\n+}\n+function calculateSHA512(data, offset, length, mode384 = false) {\n+  let h0, h1, h2, h3, h4, h5, h6, h7;\n+  if (!mode384) {\n+    h0 = new Word64(0x6a09e667, 0xf3bcc908);\n+    h1 = new Word64(0xbb67ae85, 0x84caa73b);\n+    h2 = new Word64(0x3c6ef372, 0xfe94f82b);\n+    h3 = new Word64(0xa54ff53a, 0x5f1d36f1);\n+    h4 = new Word64(0x510e527f, 0xade682d1);\n+    h5 = new Word64(0x9b05688c, 0x2b3e6c1f);\n+    h6 = new Word64(0x1f83d9ab, 0xfb41bd6b);\n+    h7 = new Word64(0x5be0cd19, 0x137e2179);\n+  } else {\n+    h0 = new Word64(0xcbbb9d5d, 0xc1059ed8);\n+    h1 = new Word64(0x629a292a, 0x367cd507);\n+    h2 = new Word64(0x9159015a, 0x3070dd17);\n+    h3 = new Word64(0x152fecd8, 0xf70e5939);\n+    h4 = new Word64(0x67332667, 0xffc00b31);\n+    h5 = new Word64(0x8eb44a87, 0x68581511);\n+    h6 = new Word64(0xdb0c2e0d, 0x64f98fa7);\n+    h7 = new Word64(0x47b5481d, 0xbefa4fa4);\n+  }\n+  const paddedLength = Math.ceil((length + 17) \u002F 128) * 128;\n+  const padded = new Uint8Array(paddedLength);\n+  let i, j;\n+  for (i = 0; i \u003C length; ++i) {\n+    padded[i] = data[offset++];\n+  }\n+  padded[i++] = 0x80;\n+  const n = paddedLength - 16;\n+  if (i \u003C n) {\n+    i = n;\n+  }\n+  i += 11;\n+  padded[i++] = length >>> 29 & 0xff;\n+  padded[i++] = length >> 21 & 0xff;\n+  padded[i++] = length >> 13 & 0xff;\n+  padded[i++] = length >> 5 & 0xff;\n+  padded[i++] = length \u003C\u003C 3 & 0xff;\n+  const w = new Array(80);\n+  for (i = 0; i \u003C 80; i++) {\n+    w[i] = new Word64(0, 0);\n+  }\n+  const {\n+    k\n+  } = calculate_sha_other_PARAMS;\n+  let a = new Word64(0, 0),\n+    b = new Word64(0, 0),\n+    c = new Word64(0, 0);\n+  let d = new Word64(0, 0),\n+    e = new Word64(0, 0),\n+    f = new Word64(0, 0);\n+  let g = new Word64(0, 0),\n+    h = new Word64(0, 0);\n+  const t1 = new Word64(0, 0),\n+    t2 = new Word64(0, 0);\n+  const tmp1 = new Word64(0, 0),\n+    tmp2 = new Word64(0, 0);\n+  let tmp3;\n+  for (i = 0; i \u003C paddedLength;) {\n+    for (j = 0; j \u003C 16; ++j) {\n+      w[j].high = padded[i] \u003C\u003C 24 | padded[i + 1] \u003C\u003C 16 | padded[i + 2] \u003C\u003C 8 | padded[i + 3];\n+      w[j].low = padded[i + 4] \u003C\u003C 24 | padded[i + 5] \u003C\u003C 16 | padded[i + 6] \u003C\u003C 8 | padded[i + 7];\n+      i += 8;\n+    }\n+    for (j = 16; j \u003C 80; ++j) {\n+      tmp3 = w[j];\n+      littleSigmaPrime(tmp3, w[j - 2], tmp2);\n+      tmp3.add(w[j - 7]);\n+      littleSigma(tmp1, w[j - 15], tmp2);\n+      tmp3.add(tmp1);\n+      tmp3.add(w[j - 16]);\n+    }\n+    a.assign(h0);\n+    b.assign(h1);\n+    c.assign(h2);\n+    d.assign(h3);\n+    e.assign(h4);\n+    f.assign(h5);\n+    g.assign(h6);\n+    h.assign(h7);\n+    for (j = 0; j \u003C 80; ++j) {\n+      t1.assign(h);\n+      sigmaPrime(tmp1, e, tmp2);\n+      t1.add(tmp1);\n+      ch(tmp1, e, f, g, tmp2);\n+      t1.add(tmp1);\n+      t1.add(k[j]);\n+      t1.add(w[j]);\n+      sigma(t2, a, tmp2);\n+      maj(tmp1, a, b, c, tmp2);\n+      t2.add(tmp1);\n+      tmp3 = h;\n+      h = g;\n+      g = f;\n+      f = e;\n+      d.add(t1);\n+      e = d;\n+      d = c;\n+      c = b;\n+      b = a;\n+      tmp3.assign(t1);\n+      tmp3.add(t2);\n+      a = tmp3;\n+    }\n+    h0.add(a);\n+    h1.add(b);\n+    h2.add(c);\n+    h3.add(d);\n+    h4.add(e);\n+    h5.add(f);\n+    h6.add(g);\n+    h7.add(h);\n+  }\n+  let result;\n+  if (!mode384) {\n+    result = new Uint8Array(64);\n+    h0.copyTo(result, 0);\n+    h1.copyTo(result, 8);\n+    h2.copyTo(result, 16);\n+    h3.copyTo(result, 24);\n+    h4.copyTo(result, 32);\n+    h5.copyTo(result, 40);\n+    h6.copyTo(result, 48);\n+    h7.copyTo(result, 56);\n+  } else {\n+    result = new Uint8Array(48);\n+    h0.copyTo(result, 0);\n+    h1.copyTo(result, 8);\n+    h2.copyTo(result, 16);\n+    h3.copyTo(result, 24);\n+    h4.copyTo(result, 32);\n+    h5.copyTo(result, 40);\n+  }\n+  return result;\n+}\n+function calculateSHA384(data, offset, length) {\n+  return calculateSHA512(data, offset, length, true);\n+}\n+\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fcalculate_sha256.js\n+\n+\n+\n+\n+\n+\n+\n+\n+const calculate_sha256_PARAMS = {\n+  get k() {\n+    return shadow(this, \"k\", [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2]);\n+  }\n+};\n+function rotr(x, n) {\n+  return x >>> n | x \u003C\u003C 32 - n;\n+}\n+function calculate_sha256_ch(x, y, z) {\n+  return x & y ^ ~x & z;\n+}\n+function calculate_sha256_maj(x, y, z) {\n+  return x & y ^ x & z ^ y & z;\n+}\n+function calculate_sha256_sigma(x) {\n+  return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);\n+}\n+function calculate_sha256_sigmaPrime(x) {\n+  return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);\n+}\n+function calculate_sha256_littleSigma(x) {\n+  return rotr(x, 7) ^ rotr(x, 18) ^ x >>> 3;\n+}\n+function calculate_sha256_littleSigmaPrime(x) {\n+  return rotr(x, 17) ^ rotr(x, 19) ^ x >>> 10;\n+}\n+function calculateSHA256(data, offset, length) {\n+  let h0 = 0x6a09e667,\n+    h1 = 0xbb67ae85,\n+    h2 = 0x3c6ef372,\n+    h3 = 0xa54ff53a,\n+    h4 = 0x510e527f,\n+    h5 = 0x9b05688c,\n+    h6 = 0x1f83d9ab,\n+    h7 = 0x5be0cd19;\n+  const paddedLength = Math.ceil((length + 9) \u002F 64) * 64;\n+  const padded = new Uint8Array(paddedLength);\n+  let i, j;\n+  for (i = 0; i \u003C length; ++i) {\n+    padded[i] = data[offset++];\n+  }\n+  padded[i++] = 0x80;\n+  const n = paddedLength - 8;\n+  if (i \u003C n) {\n+    i = n;\n+  }\n+  i += 3;\n+  padded[i++] = length >>> 29 & 0xff;\n+  padded[i++] = length >> 21 & 0xff;\n+  padded[i++] = length >> 13 & 0xff;\n+  padded[i++] = length >> 5 & 0xff;\n+  padded[i++] = length \u003C\u003C 3 & 0xff;\n+  const w = new Uint32Array(64);\n+  const {\n+    k\n+  } = calculate_sha256_PARAMS;\n+  for (i = 0; i \u003C paddedLength;) {\n+    for (j = 0; j \u003C 16; ++j) {\n+      w[j] = padded[i] \u003C\u003C 24 | padded[i + 1] \u003C\u003C 16 | padded[i + 2] \u003C\u003C 8 | padded[i + 3];\n+      i += 4;\n+    }\n+    for (j = 16; j \u003C 64; ++j) {\n+      w[j] = calculate_sha256_littleSigmaPrime(w[j - 2]) + w[j - 7] + calculate_sha256_littleSigma(w[j - 15]) + w[j - 16] | 0;\n+    }\n+    let a = h0,\n+      b = h1,\n+      c = h2,\n+      d = h3,\n+      e = h4,\n+      f = h5,\n+      g = h6,\n+      h = h7,\n+      t1,\n+      t2;\n+    for (j = 0; j \u003C 64; ++j) {\n+      t1 = h + calculate_sha256_sigmaPrime(e) + calculate_sha256_ch(e, f, g) + k[j] + w[j];\n+      t2 = calculate_sha256_sigma(a) + calculate_sha256_maj(a, b, c);\n+      h = g;\n+      g = f;\n+      f = e;\n+      e = d + t1 | 0;\n+      d = c;\n+      c = b;\n+      b = a;\n+      a = t1 + t2 | 0;\n+    }\n+    h0 = h0 + a | 0;\n+    h1 = h1 + b | 0;\n+    h2 = h2 + c | 0;\n+    h3 = h3 + d | 0;\n+    h4 = h4 + e | 0;\n+    h5 = h5 + f | 0;\n+    h6 = h6 + g | 0;\n+    h7 = h7 + h | 0;\n+  }\n+  return new Uint8Array([h0 >> 24 & 0xFF, h0 >> 16 & 0xFF, h0 >> 8 & 0xFF, h0 & 0xFF, h1 >> 24 & 0xFF, h1 >> 16 & 0xFF, h1 >> 8 & 0xFF, h1 & 0xFF, h2 >> 24 & 0xFF, h2 >> 16 & 0xFF, h2 >> 8 & 0xFF, h2 & 0xFF, h3 >> 24 & 0xFF, h3 >> 16 & 0xFF, h3 >> 8 & 0xFF, h3 & 0xFF, h4 >> 24 & 0xFF, h4 >> 16 & 0xFF, h4 >> 8 & 0xFF, h4 & 0xFF, h5 >> 24 & 0xFF, h5 >> 16 & 0xFF, h5 >> 8 & 0xFF, h5 & 0xFF, h6 >> 24 & 0xFF, h6 >> 16 & 0xFF, h6 >> 8 & 0xFF, h6 & 0xFF, h7 >> 24 & 0xFF, h7 >> 16 & 0xFF, h7 >> 8 & 0xFF, h7 & 0xFF]);\n+}\n+\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fdecrypt_stream.js\n+\n+const chunkSize = 512;\n+class DecryptStream extends DecodeStream {\n+  constructor(str, maybeLength, decrypt) {\n+    super(maybeLength);\n+    this.str = str;\n+    this.dict = str.dict;\n+    this.decrypt = decrypt;\n+    this.nextChunk = null;\n+    this.initialized = false;\n+  }\n+  readBlock() {\n+    let chunk;\n+    if (this.initialized) {\n+      chunk = this.nextChunk;\n+    } else {\n+      chunk = this.str.getBytes(chunkSize);\n+      this.initialized = true;\n+    }\n+    if (!chunk?.length) {\n+      this.eof = true;\n+      return;\n+    }\n+    this.nextChunk = this.str.getBytes(chunkSize);\n+    const hasMoreData = this.nextChunk?.length > 0;\n+    const decrypt = this.decrypt;\n+    chunk = decrypt(chunk, !hasMoreData);\n+    const bufferLength = this.bufferLength,\n+      newLength = bufferLength + chunk.length,\n+      buffer = this.ensureBuffer(newLength);\n+    buffer.set(chunk, bufferLength);\n+    this.bufferLength = newLength;\n+  }\n+}\n+\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fcrypto.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+class ARCFourCipher {\n+  constructor(key) {\n+    this.a = 0;\n+    this.b = 0;\n+    const s = new Uint8Array(256);\n+    const keyLength = key.length;\n+    for (let i = 0; i \u003C 256; ++i) {\n+      s[i] = i;\n+    }\n+    for (let i = 0, j = 0; i \u003C 256; ++i) {\n+      const tmp = s[i];\n+      j = j + tmp + key[i % keyLength] & 0xff;\n+      s[i] = s[j];\n+      s[j] = tmp;\n+    }\n+    this.s = s;\n+  }\n+  encryptBlock(data) {\n+    let a = this.a,\n+      b = this.b;\n+    const s = this.s;\n+    const n = data.length;\n+    const output = new Uint8Array(n);\n+    for (let i = 0; i \u003C n; ++i) {\n+      a = a + 1 & 0xff;\n+      const tmp = s[a];\n+      b = b + tmp & 0xff;\n+      const tmp2 = s[b];\n+      s[a] = tmp2;\n+      s[b] = tmp;\n+      output[i] = data[i] ^ s[tmp + tmp2 & 0xff];\n+    }\n+    this.a = a;\n+    this.b = b;\n+    return output;\n+  }\n+  decryptBlock(data) {\n+    return this.encryptBlock(data);\n+  }\n+  encrypt(data) {\n+    return this.encryptBlock(data);\n+  }\n+}\n+class NullCipher {\n+  decryptBlock(data) {\n+    return data;\n+  }\n+  encrypt(data) {\n+    return data;\n+  }\n+}\n+class AESBaseCipher {\n+  _s = new Uint8Array([0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16]);\n+  _inv_s = new Uint8Array([0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d]);\n+  _mix = new Uint32Array([0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]);\n+  _mixCol = new Uint8Array(256).map((_, i) => i \u003C 128 ? i \u003C\u003C 1 : i \u003C\u003C 1 ^ 0x1b);\n+  constructor() {\n+    this.buffer = new Uint8Array(16);\n+    this.bufferPosition = 0;\n+  }\n+  _expandKey(cipherKey) {\n+    unreachable(\"Cannot call `_expandKey` on the base class\");\n+  }\n+  _decrypt(input, key) {\n+    let t, u, v;\n+    const state = new Uint8Array(16);\n+    state.set(input);\n+    for (let j = 0, k = this._keySize; j \u003C 16; ++j, ++k) {\n+      state[j] ^= key[k];\n+    }\n+    for (let i = this._cyclesOfRepetition - 1; i >= 1; --i) {\n+      t = state[13];\n+      state[13] = state[9];\n+      state[9] = state[5];\n+      state[5] = state[1];\n+      state[1] = t;\n+      t = state[14];\n+      u = state[10];\n+      state[14] = state[6];\n+      state[10] = state[2];\n+      state[6] = t;\n+      state[2] = u;\n+      t = state[15];\n+      u = state[11];\n+      v = state[7];\n+      state[15] = state[3];\n+      state[11] = t;\n+      state[7] = u;\n+      state[3] = v;\n+      for (let j = 0; j \u003C 16; ++j) {\n+        state[j] = this._inv_s[state[j]];\n+      }\n+      for (let j = 0, k = i * 16; j \u003C 16; ++j, ++k) {\n+        state[j] ^= key[k];\n+      }\n+      for (let j = 0; j \u003C 16; j += 4) {\n+        const s0 = this._mix[state[j]];\n+        const s1 = this._mix[state[j + 1]];\n+        const s2 = this._mix[state[j + 2]];\n+        const s3 = this._mix[state[j + 3]];\n+        t = s0 ^ s1 >>> 8 ^ s1 \u003C\u003C 24 ^ s2 >>> 16 ^ s2 \u003C\u003C 16 ^ s3 >>> 24 ^ s3 \u003C\u003C 8;\n+        state[j] = t >>> 24 & 0xff;\n+        state[j + 1] = t >> 16 & 0xff;\n+        state[j + 2] = t >> 8 & 0xff;\n+        state[j + 3] = t & 0xff;\n+      }\n+    }\n+    t = state[13];\n+    state[13] = state[9];\n+    state[9] = state[5];\n+    state[5] = state[1];\n+    state[1] = t;\n+    t = state[14];\n+    u = state[10];\n+    state[14] = state[6];\n+    state[10] = state[2];\n+    state[6] = t;\n+    state[2] = u;\n+    t = state[15];\n+    u = state[11];\n+    v = state[7];\n+    state[15] = state[3];\n+    state[11] = t;\n+    state[7] = u;\n+    state[3] = v;\n+    for (let j = 0; j \u003C 16; ++j) {\n+      state[j] = this._inv_s[state[j]];\n+      state[j] ^= key[j];\n+    }\n+    return state;\n+  }\n+  _encrypt(input, key) {\n+    const s = this._s;\n+    let t, u, v;\n+    const state = new Uint8Array(16);\n+    state.set(input);\n+    for (let j = 0; j \u003C 16; ++j) {\n+      state[j] ^= key[j];\n+    }\n+    for (let i = 1; i \u003C this._cyclesOfRepetition; i++) {\n+      for (let j = 0; j \u003C 16; ++j) {\n+        state[j] = s[state[j]];\n+      }\n+      v = state[1];\n+      state[1] = state[5];\n+      state[5] = state[9];\n+      state[9] = state[13];\n+      state[13] = v;\n+      v = state[2];\n+      u = state[6];\n+      state[2] = state[10];\n+      state[6] = state[14];\n+      state[10] = v;\n+      state[14] = u;\n+      v = state[3];\n+      u = state[7];\n+      t = state[11];\n+      state[3] = state[15];\n+      state[7] = v;\n+      state[11] = u;\n+      state[15] = t;\n+      for (let j = 0; j \u003C 16; j += 4) {\n+        const s0 = state[j];\n+        const s1 = state[j + 1];\n+        const s2 = state[j + 2];\n+        const s3 = state[j + 3];\n+        t = s0 ^ s1 ^ s2 ^ s3;\n+        state[j] ^= t ^ this._mixCol[s0 ^ s1];\n+        state[j + 1] ^= t ^ this._mixCol[s1 ^ s2];\n+        state[j + 2] ^= t ^ this._mixCol[s2 ^ s3];\n+        state[j + 3] ^= t ^ this._mixCol[s3 ^ s0];\n+      }\n+      for (let j = 0, k = i * 16; j \u003C 16; ++j, ++k) {\n+        state[j] ^= key[k];\n+      }\n+    }\n+    for (let j = 0; j \u003C 16; ++j) {\n+      state[j] = s[state[j]];\n+    }\n+    v = state[1];\n+    state[1] = state[5];\n+    state[5] = state[9];\n+    state[9] = state[13];\n+    state[13] = v;\n+    v = state[2];\n+    u = state[6];\n+    state[2] = state[10];\n+    state[6] = state[14];\n+    state[10] = v;\n+    state[14] = u;\n+    v = state[3];\n+    u = state[7];\n+    t = state[11];\n+    state[3] = state[15];\n+    state[7] = v;\n+    state[11] = u;\n+    state[15] = t;\n+    for (let j = 0, k = this._keySize; j \u003C 16; ++j, ++k) {\n+      state[j] ^= key[k];\n+    }\n+    return state;\n+  }\n+  _decryptBlock2(data, finalize) {\n+    const sourceLength = data.length;\n+    let buffer = this.buffer,\n+      bufferLength = this.bufferPosition;\n+    const result = [];\n+    let iv = this.iv;\n+    for (let i = 0; i \u003C sourceLength; ++i) {\n+      buffer[bufferLength] = data[i];\n+      ++bufferLength;\n+      if (bufferLength \u003C 16) {\n+        continue;\n+      }\n+      const plain = this._decrypt(buffer, this._key);\n+      for (let j = 0; j \u003C 16; ++j) {\n+        plain[j] ^= iv[j];\n+      }\n+      iv = buffer;\n+      result.push(plain);\n+      buffer = new Uint8Array(16);\n+      bufferLength = 0;\n+    }\n+    this.buffer = buffer;\n+    this.bufferLength = bufferLength;\n+    this.iv = iv;\n+    if (result.length === 0) {\n+      return new Uint8Array(0);\n+    }\n+    let outputLength = 16 * result.length;\n+    if (finalize) {\n+      const lastBlock = result.at(-1);\n+      let psLen = lastBlock[15];\n+      if (psLen \u003C= 16) {\n+        for (let i = 15, ii = 16 - psLen; i >= ii; --i) {\n+          if (lastBlock[i] !== psLen) {\n+            psLen = 0;\n+            break;\n+          }\n+        }\n+        outputLength -= psLen;\n+        result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);\n+      }\n+    }\n+    const output = new Uint8Array(outputLength);\n+    for (let i = 0, j = 0, ii = result.length; i \u003C ii; ++i, j += 16) {\n+      output.set(result[i], j);\n+    }\n+    return output;\n+  }\n+  decryptBlock(data, finalize, iv = null) {\n+    const sourceLength = data.length;\n+    const buffer = this.buffer;\n+    let bufferLength = this.bufferPosition;\n+    if (iv) {\n+      this.iv = iv;\n+    } else {\n+      for (let i = 0; bufferLength \u003C 16 && i \u003C sourceLength; ++i, ++bufferLength) {\n+        buffer[bufferLength] = data[i];\n+      }\n+      if (bufferLength \u003C 16) {\n+        this.bufferLength = bufferLength;\n+        return new Uint8Array(0);\n+      }\n+      this.iv = buffer;\n+      data = data.subarray(16);\n+    }\n+    this.buffer = new Uint8Array(16);\n+    this.bufferLength = 0;\n+    this.decryptBlock = this._decryptBlock2;\n+    return this.decryptBlock(data, finalize);\n+  }\n+  encrypt(data, iv) {\n+    const sourceLength = data.length;\n+    let buffer = this.buffer,\n+      bufferLength = this.bufferPosition;\n+    const result = [];\n+    iv ||= new Uint8Array(16);\n+    for (let i = 0; i \u003C sourceLength; ++i) {\n+      buffer[bufferLength] = data[i];\n+      ++bufferLength;\n+      if (bufferLength \u003C 16) {\n+        continue;\n+      }\n+      for (let j = 0; j \u003C 16; ++j) {\n+        buffer[j] ^= iv[j];\n+      }\n+      const cipher = this._encrypt(buffer, this._key);\n+      iv = cipher;\n+      result.push(cipher);\n+      buffer = new Uint8Array(16);\n+      bufferLength = 0;\n+    }\n+    this.buffer = buffer;\n+    this.bufferLength = bufferLength;\n+    this.iv = iv;\n+    if (result.length === 0) {\n+      return new Uint8Array(0);\n+    }\n+    const outputLength = 16 * result.length;\n+    const output = new Uint8Array(outputLength);\n+    for (let i = 0, j = 0, ii = result.length; i \u003C ii; ++i, j += 16) {\n+      output.set(result[i], j);\n+    }\n+    return output;\n+  }\n+}\n+class AES128Cipher extends AESBaseCipher {\n+  _rcon = new Uint8Array([0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d]);\n+  constructor(key) {\n+    super();\n+    this._cyclesOfRepetition = 10;\n+    this._keySize = 160;\n+    this._key = this._expandKey(key);\n+  }\n+  _expandKey(cipherKey) {\n+    const b = 176;\n+    const s = this._s;\n+    const rcon = this._rcon;\n+    const result = new Uint8Array(b);\n+    result.set(cipherKey);\n+    for (let j = 16, i = 1; j \u003C b; ++i) {\n+      let t1 = result[j - 3];\n+      let t2 = result[j - 2];\n+      let t3 = result[j - 1];\n+      let t4 = result[j - 4];\n+      t1 = s[t1];\n+      t2 = s[t2];\n+      t3 = s[t3];\n+      t4 = s[t4];\n+      t1 ^= rcon[i];\n+      for (let n = 0; n \u003C 4; ++n) {\n+        result[j] = t1 ^= result[j - 16];\n+        j++;\n+        result[j] = t2 ^= result[j - 16];\n+        j++;\n+        result[j] = t3 ^= result[j - 16];\n+        j++;\n+        result[j] = t4 ^= result[j - 16];\n+        j++;\n+      }\n+    }\n+    return result;\n+  }\n+}\n+class AES256Cipher extends AESBaseCipher {\n+  constructor(key) {\n+    super();\n+    this._cyclesOfRepetition = 14;\n+    this._keySize = 224;\n+    this._key = this._expandKey(key);\n+  }\n+  _expandKey(cipherKey) {\n+    const b = 240;\n+    const s = this._s;\n+    const result = new Uint8Array(b);\n+    result.set(cipherKey);\n+    let r = 1;\n+    let t1, t2, t3, t4;\n+    for (let j = 32, i = 1; j \u003C b; ++i) {\n+      if (j % 32 === 16) {\n+        t1 = s[t1];\n+        t2 = s[t2];\n+        t3 = s[t3];\n+        t4 = s[t4];\n+      } else if (j % 32 === 0) {\n+        t1 = result[j - 3];\n+        t2 = result[j - 2];\n+        t3 = result[j - 1];\n+        t4 = result[j - 4];\n+        t1 = s[t1];\n+        t2 = s[t2];\n+        t3 = s[t3];\n+        t4 = s[t4];\n+        t1 ^= r;\n+        if ((r \u003C\u003C= 1) >= 256) {\n+          r = (r ^ 0x1b) & 0xff;\n+        }\n+      }\n+      for (let n = 0; n \u003C 4; ++n) {\n+        result[j] = t1 ^= result[j - 32];\n+        j++;\n+        result[j] = t2 ^= result[j - 32];\n+        j++;\n+        result[j] = t3 ^= result[j - 32];\n+        j++;\n+        result[j] = t4 ^= result[j - 32];\n+        j++;\n+      }\n+    }\n+    return result;\n+  }\n+}\n+class PDFBase {\n+  _hash(password, input, userBytes) {\n+    unreachable(\"Abstract method `_hash` called\");\n+  }\n+  checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {\n+    const hashData = new Uint8Array(password.length + 56);\n+    hashData.set(password, 0);\n+    hashData.set(ownerValidationSalt, password.length);\n+    hashData.set(userBytes, password.length + ownerValidationSalt.length);\n+    const result = this._hash(password, hashData, userBytes);\n+    return isArrayEqual(result, ownerPassword);\n+  }\n+  checkUserPassword(password, userValidationSalt, userPassword) {\n+    const hashData = new Uint8Array(password.length + 8);\n+    hashData.set(password, 0);\n+    hashData.set(userValidationSalt, password.length);\n+    const result = this._hash(password, hashData, []);\n+    return isArrayEqual(result, userPassword);\n+  }\n+  getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n+    const hashData = new Uint8Array(password.length + 56);\n+    hashData.set(password, 0);\n+    hashData.set(ownerKeySalt, password.length);\n+    hashData.set(userBytes, password.length + ownerKeySalt.length);\n+    const key = this._hash(password, hashData, userBytes);\n+    const cipher = new AES256Cipher(key);\n+    return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n+  }\n+  getUserKey(password, userKeySalt, userEncryption) {\n+    const hashData = new Uint8Array(password.length + 8);\n+    hashData.set(password, 0);\n+    hashData.set(userKeySalt, password.length);\n+    const key = this._hash(password, hashData, []);\n+    const cipher = new AES256Cipher(key);\n+    return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n+  }\n+}\n+class PDF17 extends PDFBase {\n+  _hash(password, input, userBytes) {\n+    return calculateSHA256(input, 0, input.length);\n+  }\n+}\n+class PDF20 extends PDFBase {\n+  _hash(password, input, userBytes) {\n+    let k = calculateSHA256(input, 0, input.length).subarray(0, 32);\n+    let e = [0];\n+    let i = 0;\n+    while (i \u003C 64 || e.at(-1) > i - 32) {\n+      const combinedLength = password.length + k.length + userBytes.length,\n+        combinedArray = new Uint8Array(combinedLength);\n+      let writeOffset = 0;\n+      combinedArray.set(password, writeOffset);\n+      writeOffset += password.length;\n+      combinedArray.set(k, writeOffset);\n+      writeOffset += k.length;\n+      combinedArray.set(userBytes, writeOffset);\n+      const k1 = new Uint8Array(combinedLength * 64);\n+      for (let j = 0, pos = 0; j \u003C 64; j++, pos += combinedLength) {\n+        k1.set(combinedArray, pos);\n+      }\n+      const cipher = new AES128Cipher(k.subarray(0, 16));\n+      e = cipher.encrypt(k1, k.subarray(16, 32));\n+      const remainder = Math.sumPrecise(e.slice(0, 16)) % 3;\n+      if (remainder === 0) {\n+        k = calculateSHA256(e, 0, e.length);\n+      } else if (remainder === 1) {\n+        k = calculateSHA384(e, 0, e.length);\n+      } else if (remainder === 2) {\n+        k = calculateSHA512(e, 0, e.length);\n+      }\n+      i++;\n+    }\n+    return k.subarray(0, 32);\n+  }\n+}\n+class CipherTransform {\n+  constructor(stringCipherConstructor, streamCipherConstructor) {\n+    this.StringCipherConstructor = stringCipherConstructor;\n+    this.StreamCipherConstructor = streamCipherConstructor;\n+  }\n+  createStream(stream, length) {\n+    const cipher = new this.StreamCipherConstructor();\n+    return new DecryptStream(stream, length, function cipherTransformDecryptStream(data, finalize) {\n+      return cipher.decryptBlock(data, finalize);\n+    });\n+  }\n+  decryptString(s) {\n+    const cipher = new this.StringCipherConstructor();\n+    let data = stringToBytes(s);\n+    data = cipher.decryptBlock(data, true);\n+    return bytesToString(data);\n+  }\n+  encryptString(s) {\n+    const cipher = new this.StringCipherConstructor();\n+    if (cipher instanceof AESBaseCipher) {\n+      const strLen = s.length;\n+      const pad = 16 - strLen % 16;\n+      s += String.fromCharCode(pad).repeat(pad);\n+      const iv = new Uint8Array(16);\n+      crypto.getRandomValues(iv);\n+      let data = stringToBytes(s);\n+      data = cipher.encrypt(data, iv);\n+      const buf = new Uint8Array(16 + data.length);\n+      buf.set(iv);\n+      buf.set(data, 16);\n+      return bytesToString(buf);\n+    }\n+    let data = stringToBytes(s);\n+    data = cipher.encrypt(data);\n+    return bytesToString(data);\n+  }\n+}\n+class CipherTransformFactory {\n+  static get _defaultPasswordBytes() {\n+    return shadow(this, \"_defaultPasswordBytes\", new Uint8Array([0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, 0x56, 0xff, 0xfa, 0x01, 0x08, 0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68, 0x3e, 0x80, 0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a]));\n+  }\n+  #createEncryptionKey20(revision, password, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms) {\n+    if (password) {\n+      const passwordLength = Math.min(127, password.length);\n+      password = password.subarray(0, passwordLength);\n+    } else {\n+      password = [];\n+    }\n+    const pdfAlgorithm = revision === 6 ? new PDF20() : new PDF17();\n+    if (pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)) {\n+      return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption);\n+    } else if (password.length && pdfAlgorithm.checkOwnerPassword(password, ownerValidationSalt, uBytes, ownerPassword)) {\n+      return pdfAlgorithm.getOwnerKey(password, ownerKeySalt, uBytes, ownerEncryption);\n+    }\n+    return null;\n+  }\n+  #prepareKeyData(fileId, password, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata) {\n+    const hashDataSize = 40 + ownerPassword.length + fileId.length;\n+    const hashData = new Uint8Array(hashDataSize);\n+    let i = 0,\n+      j,\n+      n;\n+    if (password) {\n+      n = Math.min(32, password.length);\n+      for (; i \u003C n; ++i) {\n+        hashData[i] = password[i];\n+      }\n+    }\n+    j = 0;\n+    while (i \u003C 32) {\n+      hashData[i++] = CipherTransformFactory._defaultPasswordBytes[j++];\n+    }\n+    hashData.set(ownerPassword, i);\n+    i += ownerPassword.length;\n+    hashData[i++] = flags & 0xff;\n+    hashData[i++] = flags >> 8 & 0xff;\n+    hashData[i++] = flags >> 16 & 0xff;\n+    hashData[i++] = flags >>> 24 & 0xff;\n+    hashData.set(fileId, i);\n+    i += fileId.length;\n+    if (revision >= 4 && !encryptMetadata) {\n+      hashData.fill(0xff, i, i + 4);\n+      i += 4;\n+    }\n+    let hash = calculateMD5(hashData, 0, i);\n+    const keyLengthInBytes = keyLength >> 3;\n+    if (revision >= 3) {\n+      for (j = 0; j \u003C 50; ++j) {\n+        hash = calculateMD5(hash, 0, keyLengthInBytes);\n+      }\n+    }\n+    const encryptionKey = hash.subarray(0, keyLengthInBytes);\n+    let cipher, checkData;\n+    if (revision >= 3) {\n+      i = 0;\n+      hashData.set(CipherTransformFactory._defaultPasswordBytes, i);\n+      i += 32;\n+      hashData.set(fileId, i);\n+      i += fileId.length;\n+      cipher = new ARCFourCipher(encryptionKey);\n+      checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));\n+      n = encryptionKey.length;\n+      const derivedKey = new Uint8Array(n);\n+      for (j = 1; j \u003C= 19; ++j) {\n+        for (let k = 0; k \u003C n; ++k) {\n+          derivedKey[k] = encryptionKey[k] ^ j;\n+        }\n+        cipher = new ARCFourCipher(derivedKey);\n+        checkData = cipher.encryptBlock(checkData);\n+      }\n+    } else {\n+      cipher = new ARCFourCipher(encryptionKey);\n+      checkData = cipher.encryptBlock(CipherTransformFactory._defaultPasswordBytes);\n+    }\n+    return checkData.every((data, k) => userPassword[k] === data) ? encryptionKey : null;\n+  }\n+  #decodeUserPassword(password, ownerPassword, revision, keyLength) {\n+    const hashData = new Uint8Array(32);\n+    let i = 0;\n+    const n = Math.min(32, password.length);\n+    for (; i \u003C n; ++i) {\n+      hashData[i] = password[i];\n+    }\n+    let j = 0;\n+    while (i \u003C 32) {\n+      hashData[i++] = CipherTransformFactory._defaultPasswordBytes[j++];\n+    }\n+    let hash = calculateMD5(hashData, 0, i);\n+    const keyLengthInBytes = keyLength >> 3;\n+    if (revision >= 3) {\n+      for (j = 0; j \u003C 50; ++j) {\n+        hash = calculateMD5(hash, 0, hash.length);\n+      }\n+    }\n+    let cipher, userPassword;\n+    if (revision >= 3) {\n+      userPassword = ownerPassword;\n+      const derivedKey = new Uint8Array(keyLengthInBytes);\n+      for (j = 19; j >= 0; j--) {\n+        for (let k = 0; k \u003C keyLengthInBytes; ++k) {\n+          derivedKey[k] = hash[k] ^ j;\n+        }\n+        cipher = new ARCFourCipher(derivedKey);\n+        userPassword = cipher.encryptBlock(userPassword);\n+      }\n+    } else {\n+      cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes));\n+      userPassword = cipher.encryptBlock(ownerPassword);\n+    }\n+    return userPassword;\n+  }\n+  #buildObjectKey(num, gen, encryptionKey, isAes = false) {\n+    const n = encryptionKey.length;\n+    const key = new Uint8Array(n + 9);\n+    key.set(encryptionKey);\n+    let i = n;\n+    key[i++] = num & 0xff;\n+    key[i++] = num >> 8 & 0xff;\n+    key[i++] = num >> 16 & 0xff;\n+    key[i++] = gen & 0xff;\n+    key[i++] = gen >> 8 & 0xff;\n+    if (isAes) {\n+      key[i++] = 0x73;\n+      key[i++] = 0x41;\n+      key[i++] = 0x6c;\n+      key[i++] = 0x54;\n+    }\n+    const hash = calculateMD5(key, 0, i);\n+    return hash.subarray(0, Math.min(n + 5, 16));\n+  }\n+  #buildCipherConstructor(cf, name, num, gen, key) {\n+    if (!(name instanceof Name)) {\n+      throw new FormatError(\"Invalid crypt filter name.\");\n+    }\n+    const self = this;\n+    const cryptFilter = cf.get(name.name);\n+    const cfm = cryptFilter?.get(\"CFM\");\n+    if (!cfm || cfm.name === \"None\") {\n+      return function () {\n+        return new NullCipher();\n+      };\n+    }\n+    if (cfm.name === \"V2\") {\n+      return function () {\n+        return new ARCFourCipher(self.#buildObjectKey(num, gen, key, false));\n+      };\n+    }\n+    if (cfm.name === \"AESV2\") {\n+      return function () {\n+        return new AES128Cipher(self.#buildObjectKey(num, gen, key, true));\n+      };\n+    }\n+    if (cfm.name === \"AESV3\") {\n+      return function () {\n+        return new AES256Cipher(key);\n+      };\n+    }\n+    throw new FormatError(\"Unknown crypto method\");\n+  }\n+  constructor(dict, fileId, password) {\n+    const filter = dict.get(\"Filter\");\n+    if (!isName(filter, \"Standard\")) {\n+      throw new FormatError(\"unknown encryption method\");\n+    }\n+    this.filterName = filter.name;\n+    this.dict = dict;\n+    const algorithm = dict.get(\"V\");\n+    if (!Number.isInteger(algorithm) || algorithm !== 1 && algorithm !== 2 && algorithm !== 4 && algorithm !== 5) {\n+      throw new FormatError(\"unsupported encryption algorithm\");\n+    }\n+    this.algorithm = algorithm;\n+    let keyLength = dict.get(\"Length\");\n+    if (!keyLength) {\n+      if (algorithm \u003C= 3) {\n+        keyLength = 40;\n+      } else {\n+        const cfDict = dict.get(\"CF\");\n+        const streamCryptoName = dict.get(\"StmF\");\n+        if (cfDict instanceof Dict && streamCryptoName instanceof Name) {\n+          cfDict.suppressEncryption = true;\n+          const handlerDict = cfDict.get(streamCryptoName.name);\n+          keyLength = handlerDict?.get(\"Length\") || 128;\n+          if (keyLength \u003C 40) {\n+            keyLength \u003C\u003C= 3;\n+          }\n+        }\n+      }\n+    }\n+    if (!Number.isInteger(keyLength) || keyLength \u003C 40 || keyLength % 8 !== 0) {\n+      throw new FormatError(\"invalid key length\");\n+    }\n+    const ownerBytes = stringToBytes(dict.get(\"O\")),\n+      userBytes = stringToBytes(dict.get(\"U\"));\n+    const ownerPassword = ownerBytes.subarray(0, 32);\n+    const userPassword = userBytes.subarray(0, 32);\n+    const flags = dict.get(\"P\");\n+    const revision = dict.get(\"R\");\n+    const encryptMetadata = (algorithm === 4 || algorithm === 5) && dict.get(\"EncryptMetadata\") !== false;\n+    this.encryptMetadata = encryptMetadata;\n+    const fileIdBytes = stringToBytes(fileId);\n+    let passwordBytes;\n+    if (password) {\n+      if (revision === 6) {\n+        try {\n+          password = utf8StringToString(password);\n+        } catch {\n+          warn(\"CipherTransformFactory: Unable to convert UTF8 encoded password.\");\n+        }\n+      }\n+      passwordBytes = stringToBytes(password);\n+    }\n+    let encryptionKey;\n+    if (algorithm !== 5) {\n+      encryptionKey = this.#prepareKeyData(fileIdBytes, passwordBytes, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata);\n+    } else {\n+      const ownerValidationSalt = ownerBytes.subarray(32, 40);\n+      const ownerKeySalt = ownerBytes.subarray(40, 48);\n+      const uBytes = userBytes.subarray(0, 48);\n+      const userValidationSalt = userBytes.subarray(32, 40);\n+      const userKeySalt = userBytes.subarray(40, 48);\n+      const ownerEncryption = stringToBytes(dict.get(\"OE\"));\n+      const userEncryption = stringToBytes(dict.get(\"UE\"));\n+      const perms = stringToBytes(dict.get(\"Perms\"));\n+      encryptionKey = this.#createEncryptionKey20(revision, passwordBytes, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms);\n+    }\n+    if (!encryptionKey) {\n+      if (!password) {\n+        throw new PasswordException(\"No password given\", PasswordResponses.NEED_PASSWORD);\n+      }\n+      const decodedPassword = this.#decodeUserPassword(passwordBytes, ownerPassword, revision, keyLength);\n+      encryptionKey = this.#prepareKeyData(fileIdBytes, decodedPassword, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata);\n+    }\n+    if (!encryptionKey) {\n+      throw new PasswordException(\"Incorrect Password\", PasswordResponses.INCORRECT_PASSWORD);\n+    }\n+    if (algorithm === 4 && encryptionKey.length \u003C 16) {\n+      this.encryptionKey = new Uint8Array(16);\n+      this.encryptionKey.set(encryptionKey);\n+    } else {\n+      this.encryptionKey = encryptionKey;\n+    }\n+    if (algorithm >= 4) {\n+      const cf = dict.get(\"CF\");\n+      if (cf instanceof Dict) {\n+        cf.suppressEncryption = true;\n+      }\n+      this.cf = cf;\n+      this.stmf = dict.get(\"StmF\") || Name.get(\"Identity\");\n+      this.strf = dict.get(\"StrF\") || Name.get(\"Identity\");\n+      this.eff = dict.get(\"EFF\") || this.stmf;\n+    }\n+  }\n+  createCipherTransform(num, gen) {\n+    if (this.algorithm === 4 || this.algorithm === 5) {\n+      return new CipherTransform(this.#buildCipherConstructor(this.cf, this.strf, num, gen, this.encryptionKey), this.#buildCipherConstructor(this.cf, this.stmf, num, gen, this.encryptionKey));\n+    }\n+    const key = this.#buildObjectKey(num, gen, this.encryptionKey, false);\n+    const cipherConstructor = function () {\n+      return new ARCFourCipher(key);\n+    };\n+    return new CipherTransform(cipherConstructor, cipherConstructor);\n+  }\n+}\n+\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fxref.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n \n@@ -52900,17 +59723,17 @@\n   }\n   processXRefStream(stream) {\n     if (!(\"streamState\" in this)) {\n-      const streamParameters = stream.dict;\n-      const byteWidths = streamParameters.get(\"W\");\n-      let range = streamParameters.get(\"Index\");\n-      if (!range) {\n-        range = [0, streamParameters.get(\"Size\")];\n-      }\n+      const {\n+        dict,\n+        pos\n+      } = stream;\n+      const byteWidths = dict.get(\"W\");\n+      const range = dict.get(\"Index\") || [0, dict.get(\"Size\")];\n       this.streamState = {\n         entryRanges: range,\n         byteWidths,\n         entryNum: 0,\n-        streamPos: stream.pos\n+        streamPos: pos\n       };\n     }\n     this.readXRefStream(stream);\n@@ -53193,6 +60016,26 @@\n     if (this.topDict) {\n       return this.topDict;\n     }\n+    if (!trailerDicts.length) {\n+      for (const [num, entry] of this.entries.entries()) {\n+        if (!entry) {\n+          continue;\n+        }\n+        const ref = Ref.get(num, entry.gen);\n+        let obj;\n+        try {\n+          obj = this.fetch(ref);\n+        } catch {\n+          continue;\n+        }\n+        if (obj instanceof BaseStream) {\n+          obj = obj.dict;\n+        }\n+        if (obj instanceof Dict && obj.has(\"Root\")) {\n+          return obj;\n+        }\n+      }\n+    }\n     throw new InvalidPDFException(\"Invalid PDF structure.\");\n   }\n   readXRef(recoveryMode = false) {\n@@ -53292,7 +60135,6 @@\n     }\n     let xrefEntry = this.getEntry(num);\n     if (xrefEntry === null) {\n-      this._cacheMap.set(num, xrefEntry);\n       return xrefEntry;\n     }\n     if (this._pendingRefs.has(ref)) {\n@@ -53434,7 +60276,25 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fdocument.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fdocument.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n \n@@ -53455,9 +60315,9 @@\n \n \n \n-const DEFAULT_USER_UNIT = 1.0;\n const LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];\n class Page {\n+  #resourcesPromise = null;\n   constructor({\n     pdfManager,\n     xref,\n@@ -53468,6 +60328,7 @@\n     fontCache,\n     builtInCMapCache,\n     standardFontDataCache,\n+    globalColorSpaceCache,\n     globalImageCache,\n     systemFontCache,\n     nonBlendModesSet,\n@@ -53481,11 +60342,11 @@\n     this.fontCache = fontCache;\n     this.builtInCMapCache = builtInCMapCache;\n     this.standardFontDataCache = standardFontDataCache;\n+    this.globalColorSpaceCache = globalColorSpaceCache;\n     this.globalImageCache = globalImageCache;\n     this.systemFontCache = systemFontCache;\n     this.nonBlendModesSet = nonBlendModesSet;\n     this.evaluatorOptions = pdfManager.evaluatorOptions;\n-    this.resourcesPromise = null;\n     this.xfaFactory = xfaFactory;\n     const idCounters = {\n       obj: 0\n@@ -53499,7 +60360,22 @@\n       }\n     };\n   }\n-  _getInheritableProperty(key, getArray = false) {\n+  #createPartialEvaluator(handler) {\n+    return new PartialEvaluator({\n+      xref: this.xref,\n+      handler,\n+      pageIndex: this.pageIndex,\n+      idFactory: this._localIdFactory,\n+      fontCache: this.fontCache,\n+      builtInCMapCache: this.builtInCMapCache,\n+      standardFontDataCache: this.standardFontDataCache,\n+      globalColorSpaceCache: this.globalColorSpaceCache,\n+      globalImageCache: this.globalImageCache,\n+      systemFontCache: this.systemFontCache,\n+      options: this.evaluatorOptions\n+    });\n+  }\n+  #getInheritableProperty(key, getArray = false) {\n     const value = getInheritableProperty({\n       dict: this.pageDict,\n       key,\n@@ -53521,14 +60397,14 @@\n     return this.pageDict.getArray(\"Contents\");\n   }\n   get resources() {\n-    const resources = this._getInheritableProperty(\"Resources\");\n+    const resources = this.#getInheritableProperty(\"Resources\");\n     return shadow(this, \"resources\", resources instanceof Dict ? resources : Dict.empty);\n   }\n-  _getBoundingBox(name) {\n+  #getBoundingBox(name) {\n     if (this.xfaData) {\n       return this.xfaData.bbox;\n     }\n-    const box = lookupNormalRect(this._getInheritableProperty(name, true), null);\n+    const box = lookupNormalRect(this.#getInheritableProperty(name, true), null);\n     if (box) {\n       if (box[2] - box[0] > 0 && box[3] - box[1] > 0) {\n         return box;\n@@ -53538,17 +60414,14 @@\n     return null;\n   }\n   get mediaBox() {\n-    return shadow(this, \"mediaBox\", this._getBoundingBox(\"MediaBox\") || LETTER_SIZE_MEDIABOX);\n+    return shadow(this, \"mediaBox\", this.#getBoundingBox(\"MediaBox\") || LETTER_SIZE_MEDIABOX);\n   }\n   get cropBox() {\n-    return shadow(this, \"cropBox\", this._getBoundingBox(\"CropBox\") || this.mediaBox);\n+    return shadow(this, \"cropBox\", this.#getBoundingBox(\"CropBox\") || this.mediaBox);\n   }\n   get userUnit() {\n-    let obj = this.pageDict.get(\"UserUnit\");\n-    if (typeof obj !== \"number\" || obj \u003C= 0) {\n-      obj = DEFAULT_USER_UNIT;\n-    }\n-    return shadow(this, \"userUnit\", obj);\n+    const obj = this.pageDict.get(\"UserUnit\");\n+    return shadow(this, \"userUnit\", typeof obj === \"number\" && obj > 0 ? obj : 1.0);\n   }\n   get view() {\n     const {\n@@ -53565,7 +60438,7 @@\n     return shadow(this, \"view\", mediaBox);\n   }\n   get rotate() {\n-    let rotate = this._getInheritableProperty(\"Rotate\") || 0;\n+    let rotate = this.#getInheritableProperty(\"Rotate\") || 0;\n     if (rotate % 90 !== 0) {\n       rotate = 0;\n     } else if (rotate >= 360) {\n@@ -53575,30 +60448,30 @@\n     }\n     return shadow(this, \"rotate\", rotate);\n   }\n-  _onSubStreamError(reason, objId) {\n+  #onSubStreamError(reason, objId) {\n     if (this.evaluatorOptions.ignoreErrors) {\n       warn(`getContentStream - ignoring sub-stream (${objId}): \"${reason}\".`);\n       return;\n     }\n     throw reason;\n   }\n-  getContentStream() {\n-    return this.pdfManager.ensure(this, \"content\").then(content => {\n-      if (content instanceof BaseStream) {\n-        return content;\n-      }\n-      if (Array.isArray(content)) {\n-        return new StreamsSequenceStream(content, this._onSubStreamError.bind(this));\n-      }\n-      return new NullStream();\n-    });\n+  async getContentStream() {\n+    const content = await this.pdfManager.ensure(this, \"content\");\n+    if (content instanceof BaseStream) {\n+      return content;\n+    }\n+    if (Array.isArray(content)) {\n+      return new StreamsSequenceStream(content, this.#onSubStreamError.bind(this));\n+    }\n+    return new NullStream();\n   }\n   get xfaData() {\n     return shadow(this, \"xfaData\", this.xfaFactory ? {\n       bbox: this.xfaFactory.getBoundingBox(this.pageIndex)\n     } : null);\n   }\n-  #replaceIdByRef(annotations, deletedAnnotations, existingAnnotations) {\n+  async #replaceIdByRef(annotations, deletedAnnotations, existingAnnotations) {\n+    const promises = [];\n     for (const annotation of annotations) {\n       if (annotation.id) {\n         const ref = Ref.fromString(annotation.id);\n@@ -53608,36 +60481,39 @@\n         }\n         if (annotation.deleted) {\n           deletedAnnotations.put(ref, ref);\n+          if (annotation.popupRef) {\n+            const popupRef = Ref.fromString(annotation.popupRef);\n+            if (popupRef) {\n+              deletedAnnotations.put(popupRef, popupRef);\n+            }\n+          }\n           continue;\n         }\n         existingAnnotations?.put(ref);\n         annotation.ref = ref;\n+        promises.push(this.xref.fetchAsync(ref).then(obj => {\n+          if (obj instanceof Dict) {\n+            annotation.oldAnnotation = obj.clone();\n+          }\n+        }, () => {\n+          warn(`Cannot fetch \\`oldAnnotation\\` for: ${ref}.`);\n+        }));\n         delete annotation.id;\n       }\n     }\n+    await Promise.all(promises);\n   }\n-  async saveNewAnnotations(handler, task, annotations, imagePromises) {\n+  async saveNewAnnotations(handler, task, annotations, imagePromises, changes) {\n     if (this.xfaFactory) {\n       throw new Error(\"XFA: Cannot save new annotations.\");\n     }\n-    const partialEvaluator = new PartialEvaluator({\n-      xref: this.xref,\n-      handler,\n-      pageIndex: this.pageIndex,\n-      idFactory: this._localIdFactory,\n-      fontCache: this.fontCache,\n-      builtInCMapCache: this.builtInCMapCache,\n-      standardFontDataCache: this.standardFontDataCache,\n-      globalImageCache: this.globalImageCache,\n-      systemFontCache: this.systemFontCache,\n-      options: this.evaluatorOptions\n-    });\n+    const partialEvaluator = this.#createPartialEvaluator(handler);\n     const deletedAnnotations = new RefSetCache();\n     const existingAnnotations = new RefSet();\n-    this.#replaceIdByRef(annotations, deletedAnnotations, existingAnnotations);\n+    await this.#replaceIdByRef(annotations, deletedAnnotations, existingAnnotations);\n     const pageDict = this.pageDict;\n     const annotationsArray = this.annotations.filter(a => !(a instanceof Ref && deletedAnnotations.has(a)));\n-    const newData = await AnnotationFactory.saveNewAnnotations(partialEvaluator, task, annotations, imagePromises);\n+    const newData = await AnnotationFactory.saveNewAnnotations(partialEvaluator, task, annotations, imagePromises, changes);\n     for (const {\n       ref\n     } of newData.annotations) {\n@@ -53645,84 +60521,57 @@\n         annotationsArray.push(ref);\n       }\n     }\n-    const savedDict = pageDict.get(\"Annots\");\n-    pageDict.set(\"Annots\", annotationsArray);\n-    const buffer = [];\n-    await writeObject(this.ref, pageDict, buffer, this.xref);\n-    if (savedDict) {\n-      pageDict.set(\"Annots\", savedDict);\n-    }\n-    const objects = newData.dependencies;\n-    objects.push({\n-      ref: this.ref,\n-      data: buffer.join(\"\")\n-    }, ...newData.annotations);\n+    const dict = pageDict.clone();\n+    dict.set(\"Annots\", annotationsArray);\n+    changes.put(this.ref, {\n+      data: dict\n+    });\n     for (const deletedRef of deletedAnnotations) {\n-      objects.push({\n-        ref: deletedRef,\n+      changes.put(deletedRef, {\n         data: null\n       });\n     }\n-    return objects;\n   }\n-  save(handler, task, annotationStorage) {\n-    const partialEvaluator = new PartialEvaluator({\n-      xref: this.xref,\n-      handler,\n-      pageIndex: this.pageIndex,\n-      idFactory: this._localIdFactory,\n-      fontCache: this.fontCache,\n-      builtInCMapCache: this.builtInCMapCache,\n-      standardFontDataCache: this.standardFontDataCache,\n-      globalImageCache: this.globalImageCache,\n-      systemFontCache: this.systemFontCache,\n-      options: this.evaluatorOptions\n-    });\n-    return this._parsedAnnotations.then(function (annotations) {\n-      const newRefsPromises = [];\n-      for (const annotation of annotations) {\n-        if (!annotation.mustBePrinted(annotationStorage)) {\n-          continue;\n-        }\n-        newRefsPromises.push(annotation.save(partialEvaluator, task, annotationStorage).catch(function (reason) {\n-          warn(\"save - ignoring annotation data during \" + `\"${task.name}\" task: \"${reason}\".`);\n-          return null;\n-        }));\n-      }\n-      return Promise.all(newRefsPromises).then(function (newRefs) {\n-        return newRefs.filter(newRef => !!newRef);\n-      });\n-    });\n+  async save(handler, task, annotationStorage, changes) {\n+    const partialEvaluator = this.#createPartialEvaluator(handler);\n+    const annotations = await this._parsedAnnotations;\n+    const promises = [];\n+    for (const annotation of annotations) {\n+      promises.push(annotation.save(partialEvaluator, task, annotationStorage, changes).catch(function (reason) {\n+        warn(\"save - ignoring annotation data during \" + `\"${task.name}\" task: \"${reason}\".`);\n+        return null;\n+      }));\n+    }\n+    return Promise.all(promises);\n   }\n-  loadResources(keys) {\n-    this.resourcesPromise ||= this.pdfManager.ensure(this, \"resources\");\n-    return this.resourcesPromise.then(() => {\n-      const objectLoader = new ObjectLoader(this.resources, keys, this.xref);\n-      return objectLoader.load();\n+  async loadResources(keys) {\n+    await (this.#resourcesPromise ??= this.pdfManager.ensure(this, \"resources\"));\n+    await ObjectLoader.load(this.resources, keys, this.xref);\n+  }\n+  async #getMergedResources(streamDict, keys) {\n+    const localResources = streamDict?.get(\"Resources\");\n+    if (!(localResources instanceof Dict && localResources.size)) {\n+      return this.resources;\n+    }\n+    await ObjectLoader.load(localResources, keys, this.xref);\n+    return Dict.merge({\n+      xref: this.xref,\n+      dictArray: [localResources, this.resources],\n+      mergeSubDicts: true\n     });\n   }\n-  getOperatorList({\n+  async getOperatorList({\n     handler,\n     sink,\n     task,\n     intent,\n     cacheKey,\n-    annotationStorage = null\n+    annotationStorage = null,\n+    modifiedIds = null\n   }) {\n     const contentStreamPromise = this.getContentStream();\n-    const resourcesPromise = this.loadResources([\"ColorSpace\", \"ExtGState\", \"Font\", \"Pattern\", \"Properties\", \"Shading\", \"XObject\"]);\n-    const partialEvaluator = new PartialEvaluator({\n-      xref: this.xref,\n-      handler,\n-      pageIndex: this.pageIndex,\n-      idFactory: this._localIdFactory,\n-      fontCache: this.fontCache,\n-      builtInCMapCache: this.builtInCMapCache,\n-      standardFontDataCache: this.standardFontDataCache,\n-      globalImageCache: this.globalImageCache,\n-      systemFontCache: this.systemFontCache,\n-      options: this.evaluatorOptions\n-    });\n+    const resourcesPromise = this.loadResources(RESOURCES_KEYS_OPERATOR_LIST);\n+    const partialEvaluator = this.#createPartialEvaluator(handler);\n     const newAnnotsByPage = !this.xfaFactory ? getNewAnnotationsMap(annotationStorage) : null;\n     const newAnnots = newAnnotsByPage?.get(this.pageIndex);\n     let newAnnotationsPromise = Promise.resolve(null);\n@@ -53757,90 +60606,88 @@\n         imagePromises = AnnotationFactory.generateImages(newAnnots, this.xref, isOffscreenCanvasSupported);\n       }\n       deletedAnnotations = new RefSet();\n-      this.#replaceIdByRef(newAnnots, deletedAnnotations, null);\n-      newAnnotationsPromise = annotationGlobalsPromise.then(annotationGlobals => {\n+      newAnnotationsPromise = Promise.all([annotationGlobalsPromise, this.#replaceIdByRef(newAnnots, deletedAnnotations, null)]).then(([annotationGlobals]) => {\n         if (!annotationGlobals) {\n           return null;\n         }\n         return AnnotationFactory.printNewAnnotations(annotationGlobals, partialEvaluator, task, newAnnots, imagePromises);\n       });\n     }\n-    const pageListPromise = Promise.all([contentStreamPromise, resourcesPromise]).then(([contentStream]) => {\n+    const pageListPromise = Promise.all([contentStreamPromise, resourcesPromise]).then(async ([contentStream]) => {\n+      const resources = await this.#getMergedResources(contentStream.dict, RESOURCES_KEYS_OPERATOR_LIST);\n       const opList = new OperatorList(intent, sink);\n       handler.send(\"StartRenderPage\", {\n-        transparency: partialEvaluator.hasBlendModes(this.resources, this.nonBlendModesSet),\n+        transparency: partialEvaluator.hasBlendModes(resources, this.nonBlendModesSet),\n         pageIndex: this.pageIndex,\n         cacheKey\n       });\n-      return partialEvaluator.getOperatorList({\n+      await partialEvaluator.getOperatorList({\n         stream: contentStream,\n         task,\n-        resources: this.resources,\n+        resources,\n         operatorList: opList\n-      }).then(function () {\n-        return opList;\n       });\n+      return opList;\n     });\n-    return Promise.all([pageListPromise, this._parsedAnnotations, newAnnotationsPromise]).then(function ([pageOpList, annotations, newAnnotations]) {\n-      if (newAnnotations) {\n-        annotations = annotations.filter(a => !(a.ref && deletedAnnotations.has(a.ref)));\n-        for (let i = 0, ii = newAnnotations.length; i \u003C ii; i++) {\n-          const newAnnotation = newAnnotations[i];\n-          if (newAnnotation.refToReplace) {\n-            const j = annotations.findIndex(a => a.ref && isRefsEqual(a.ref, newAnnotation.refToReplace));\n-            if (j >= 0) {\n-              annotations.splice(j, 1, newAnnotation);\n-              newAnnotations.splice(i--, 1);\n-              ii--;\n-            }\n+    let [pageOpList, annotations, newAnnotations] = await Promise.all([pageListPromise, this._parsedAnnotations, newAnnotationsPromise]);\n+    if (newAnnotations) {\n+      annotations = annotations.filter(a => !(a.ref && deletedAnnotations.has(a.ref)));\n+      for (let i = 0, ii = newAnnotations.length; i \u003C ii; i++) {\n+        const newAnnotation = newAnnotations[i];\n+        if (newAnnotation.refToReplace) {\n+          const j = annotations.findIndex(a => a.ref && isRefsEqual(a.ref, newAnnotation.refToReplace));\n+          if (j >= 0) {\n+            annotations.splice(j, 1, newAnnotation);\n+            newAnnotations.splice(i--, 1);\n+            ii--;\n           }\n         }\n-        annotations = annotations.concat(newAnnotations);\n-      }\n-      if (annotations.length === 0 || intent & RenderingIntentFlag.ANNOTATIONS_DISABLE) {\n-        pageOpList.flush(true);\n-        return {\n-          length: pageOpList.totalLength\n-        };\n       }\n-      const renderForms = !!(intent & RenderingIntentFlag.ANNOTATIONS_FORMS),\n-        intentAny = !!(intent & RenderingIntentFlag.ANY),\n-        intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\n-        intentPrint = !!(intent & RenderingIntentFlag.PRINT);\n-      const opListPromises = [];\n-      for (const annotation of annotations) {\n-        if (intentAny || intentDisplay && annotation.mustBeViewed(annotationStorage, renderForms) || intentPrint && annotation.mustBePrinted(annotationStorage)) {\n-          opListPromises.push(annotation.getOperatorList(partialEvaluator, task, intent, renderForms, annotationStorage).catch(function (reason) {\n-            warn(\"getOperatorList - ignoring annotation data during \" + `\"${task.name}\" task: \"${reason}\".`);\n-            return {\n-              opList: null,\n-              separateForm: false,\n-              separateCanvas: false\n-            };\n-          }));\n-        }\n+      annotations = annotations.concat(newAnnotations);\n+    }\n+    if (annotations.length === 0 || intent & RenderingIntentFlag.ANNOTATIONS_DISABLE) {\n+      pageOpList.flush(true);\n+      return {\n+        length: pageOpList.totalLength\n+      };\n+    }\n+    const renderForms = !!(intent & RenderingIntentFlag.ANNOTATIONS_FORMS),\n+      isEditing = !!(intent & RenderingIntentFlag.IS_EDITING),\n+      intentAny = !!(intent & RenderingIntentFlag.ANY),\n+      intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\n+      intentPrint = !!(intent & RenderingIntentFlag.PRINT);\n+    const opListPromises = [];\n+    for (const annotation of annotations) {\n+      if (intentAny || intentDisplay && annotation.mustBeViewed(annotationStorage, renderForms) && annotation.mustBeViewedWhenEditing(isEditing, modifiedIds) || intentPrint && annotation.mustBePrinted(annotationStorage)) {\n+        opListPromises.push(annotation.getOperatorList(partialEvaluator, task, intent, annotationStorage).catch(function (reason) {\n+          warn(\"getOperatorList - ignoring annotation data during \" + `\"${task.name}\" task: \"${reason}\".`);\n+          return {\n+            opList: null,\n+            separateForm: false,\n+            separateCanvas: false\n+          };\n+        }));\n       }\n-      return Promise.all(opListPromises).then(function (opLists) {\n-        let form = false,\n-          canvas = false;\n-        for (const {\n-          opList,\n-          separateForm,\n-          separateCanvas\n-        } of opLists) {\n-          pageOpList.addOpList(opList);\n-          form ||= separateForm;\n-          canvas ||= separateCanvas;\n-        }\n-        pageOpList.flush(true, {\n-          form,\n-          canvas\n-        });\n-        return {\n-          length: pageOpList.totalLength\n-        };\n-      });\n+    }\n+    const opLists = await Promise.all(opListPromises);\n+    let form = false,\n+      canvas = false;\n+    for (const {\n+      opList,\n+      separateForm,\n+      separateCanvas\n+    } of opLists) {\n+      pageOpList.addOpList(opList);\n+      form ||= separateForm;\n+      canvas ||= separateCanvas;\n+    }\n+    pageOpList.flush(true, {\n+      form,\n+      canvas\n     });\n+    return {\n+      length: pageOpList.totalLength\n+    };\n   }\n   async extractTextContent({\n     handler,\n@@ -53850,25 +60697,15 @@\n     sink\n   }) {\n     const contentStreamPromise = this.getContentStream();\n-    const resourcesPromise = this.loadResources([\"ExtGState\", \"Font\", \"Properties\", \"XObject\"]);\n+    const resourcesPromise = this.loadResources(RESOURCES_KEYS_TEXT_CONTENT);\n     const langPromise = this.pdfManager.ensureCatalog(\"lang\");\n     const [contentStream,, lang] = await Promise.all([contentStreamPromise, resourcesPromise, langPromise]);\n-    const partialEvaluator = new PartialEvaluator({\n-      xref: this.xref,\n-      handler,\n-      pageIndex: this.pageIndex,\n-      idFactory: this._localIdFactory,\n-      fontCache: this.fontCache,\n-      builtInCMapCache: this.builtInCMapCache,\n-      standardFontDataCache: this.standardFontDataCache,\n-      globalImageCache: this.globalImageCache,\n-      systemFontCache: this.systemFontCache,\n-      options: this.evaluatorOptions\n-    });\n+    const resources = await this.#getMergedResources(contentStream.dict, RESOURCES_KEYS_TEXT_CONTENT);\n+    const partialEvaluator = this.#createPartialEvaluator(handler);\n     return partialEvaluator.getTextContent({\n       stream: contentStream,\n       task,\n-      resources: this.resources,\n+      resources,\n       includeMarkedContent,\n       disableNormalization,\n       sink,\n@@ -53882,8 +60719,14 @@\n       return null;\n     }\n     await this._parsedAnnotations;\n-    const structTree = await this.pdfManager.ensure(this, \"_parseStructTree\", [structTreeRoot]);\n-    return structTree.serializable;\n+    try {\n+      const structTree = await this.pdfManager.ensure(this, \"_parseStructTree\", [structTreeRoot]);\n+      const data = await this.pdfManager.ensure(structTree, \"serializable\");\n+      return data;\n+    } catch (ex) {\n+      warn(`getStructTree: \"${ex}\".`);\n+      return null;\n+    }\n   }\n   _parseStructTree(structTreeRoot) {\n     const tree = new StructTreePage(structTreeRoot, this.pageDict);\n@@ -53907,18 +60750,7 @@\n         annotationsData.push(annotation.data);\n       }\n       if (annotation.hasTextContent && isVisible) {\n-        partialEvaluator ||= new PartialEvaluator({\n-          xref: this.xref,\n-          handler,\n-          pageIndex: this.pageIndex,\n-          idFactory: this._localIdFactory,\n-          fontCache: this.fontCache,\n-          builtInCMapCache: this.builtInCMapCache,\n-          standardFontDataCache: this.standardFontDataCache,\n-          globalImageCache: this.globalImageCache,\n-          systemFontCache: this.systemFontCache,\n-          options: this.evaluatorOptions\n-        });\n+        partialEvaluator ??= this.#createPartialEvaluator(handler);\n         textContentPromises.push(annotation.extractTextContent(partialEvaluator, task, [-Infinity, -Infinity, Infinity, Infinity]).catch(function (reason) {\n           warn(`getAnnotationsData - ignoring textContent during \"${task.name}\" task: \"${reason}\".`);\n         }));\n@@ -53928,7 +60760,7 @@\n     return annotationsData;\n   }\n   get annotations() {\n-    const annots = this._getInheritableProperty(\"Annots\");\n+    const annots = this.#getInheritableProperty(\"Annots\");\n     return shadow(this, \"annotations\", Array.isArray(annots) ? annots : []);\n   }\n   get _parsedAnnotations() {\n@@ -53936,13 +60768,14 @@\n       if (annots.length === 0) {\n         return annots;\n       }\n-      const annotationGlobals = await this.pdfManager.ensureDoc(\"annotationGlobals\");\n+      const [annotationGlobals, fieldObjects] = await Promise.all([this.pdfManager.ensureDoc(\"annotationGlobals\"), this.pdfManager.ensureDoc(\"fieldObjects\")]);\n       if (!annotationGlobals) {\n         return [];\n       }\n+      const orphanFields = fieldObjects?.orphanFields;\n       const annotationPromises = [];\n       for (const annotationRef of annots) {\n-        annotationPromises.push(AnnotationFactory.create(this.xref, annotationRef, annotationGlobals, this._localIdFactory, false, this.ref).catch(function (reason) {\n+        annotationPromises.push(AnnotationFactory.create(this.xref, annotationRef, annotationGlobals, this._localIdFactory, false, orphanFields, this.ref).catch(function (reason) {\n           warn(`_parsedAnnotations: \"${reason}\".`);\n           return null;\n         }));\n@@ -53981,8 +60814,6 @@\n const PDF_HEADER_SIGNATURE = new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d]);\n const STARTXREF_SIGNATURE = new Uint8Array([0x73, 0x74, 0x61, 0x72, 0x74, 0x78, 0x72, 0x65, 0x66]);\n const ENDOBJ_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a]);\n-const FINGERPRINT_FIRST_BYTES = 1024;\n-const EMPTY_FINGERPRINT = \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\n function find(stream, signature, limit = 1024, backwards = false) {\n   const signatureLength = signature.length;\n   const scanBytes = stream.peekBytes(limit);\n@@ -54021,6 +60852,8 @@\n   return false;\n }\n class PDFDocument {\n+  #pagePromises = new Map();\n+  #version = null;\n   constructor(pdfManager, stream) {\n     if (stream.length \u003C= 0) {\n       throw new InvalidPDFException(\"The PDF file is empty, i.e. its size is zero bytes.\");\n@@ -54028,8 +60861,6 @@\n     this.pdfManager = pdfManager;\n     this.stream = stream;\n     this.xref = new XRef(stream, pdfManager);\n-    this._pagePromises = new Map();\n-    this._version = null;\n     const idCounters = {\n       font: 0\n     };\n@@ -54124,7 +60955,7 @@\n       version += String.fromCharCode(ch);\n     }\n     if (PDF_VERSION_REGEXP.test(version)) {\n-      this._version = version;\n+      this.#version = version;\n     } else {\n       warn(`Invalid PDF header version: ${version}`);\n     }\n@@ -54145,7 +60976,7 @@\n     }\n     return shadow(this, \"numPages\", num);\n   }\n-  _hasOnlyDocumentSignatures(fields, recursionDepth = 0) {\n+  #hasOnlyDocumentSignatures(fields, recursionDepth = 0) {\n     const RECURSION_LIMIT = 10;\n     if (!Array.isArray(fields)) {\n       return false;\n@@ -54157,10 +60988,10 @@\n       }\n       if (field.has(\"Kids\")) {\n         if (++recursionDepth > RECURSION_LIMIT) {\n-          warn(\"_hasOnlyDocumentSignatures: maximum recursion depth reached\");\n+          warn(\"#hasOnlyDocumentSignatures: maximum recursion depth reached\");\n           return false;\n         }\n-        return this._hasOnlyDocumentSignatures(field.get(\"Kids\"), recursionDepth);\n+        return this.#hasOnlyDocumentSignatures(field.get(\"Kids\"), recursionDepth);\n       }\n       const isSignature = isName(field.get(\"FT\"), \"Sig\");\n       const rectangle = field.get(\"Rect\");\n@@ -54169,23 +61000,16 @@\n     });\n   }\n   get _xfaStreams() {\n-    const acroForm = this.catalog.acroForm;\n+    const {\n+      acroForm\n+    } = this.catalog;\n     if (!acroForm) {\n       return null;\n     }\n     const xfa = acroForm.get(\"XFA\");\n-    const entries = {\n-      \"xdp:xdp\": \"\",\n-      template: \"\",\n-      datasets: \"\",\n-      config: \"\",\n-      connectionSet: \"\",\n-      localeSet: \"\",\n-      stylesheet: \"\",\n-      \"\u002Fxdp:xdp\": \"\"\n-    };\n+    const entries = new Map([\"xdp:xdp\", \"template\", \"datasets\", \"config\", \"connectionSet\", \"localeSet\", \"stylesheet\", \"\u002Fxdp:xdp\"].map(e => [e, null]));\n     if (xfa instanceof BaseStream && !xfa.isEmpty) {\n-      entries[\"xdp:xdp\"] = xfa;\n+      entries.set(\"xdp:xdp\", xfa);\n       return entries;\n     }\n     if (!Array.isArray(xfa) || xfa.length === 0) {\n@@ -54200,14 +61024,14 @@\n       } else {\n         name = xfa[i];\n       }\n-      if (!entries.hasOwnProperty(name)) {\n+      if (!entries.has(name)) {\n         continue;\n       }\n       const data = this.xref.fetchIfRef(xfa[i + 1]);\n       if (!(data instanceof BaseStream) || data.isEmpty) {\n         continue;\n       }\n-      entries[name] = data;\n+      entries.set(name, data);\n     }\n     return entries;\n   }\n@@ -54217,7 +61041,7 @@\n       return shadow(this, \"xfaDatasets\", null);\n     }\n     for (const key of [\"datasets\", \"xdp:xdp\"]) {\n-      const stream = streams[key];\n+      const stream = streams.get(key);\n       if (!stream) {\n         continue;\n       }\n@@ -54240,7 +61064,7 @@\n       return null;\n     }\n     const data = Object.create(null);\n-    for (const [key, stream] of Object.entries(streams)) {\n+    for (const [key, stream] of streams) {\n       if (!stream) {\n         continue;\n       }\n@@ -54266,24 +61090,14 @@\n   get htmlForXfa() {\n     return this.xfaFactory ? this.xfaFactory.getPages() : null;\n   }\n-  async loadXfaImages() {\n-    const xfaImagesDict = await this.pdfManager.ensureCatalog(\"xfaImages\");\n-    if (!xfaImagesDict) {\n+  async #loadXfaImages() {\n+    const xfaImages = await this.pdfManager.ensureCatalog(\"xfaImages\");\n+    if (!xfaImages) {\n       return;\n     }\n-    const keys = xfaImagesDict.getKeys();\n-    const objectLoader = new ObjectLoader(xfaImagesDict, keys, this.xref);\n-    await objectLoader.load();\n-    const xfaImages = new Map();\n-    for (const key of keys) {\n-      const stream = xfaImagesDict.get(key);\n-      if (stream instanceof BaseStream) {\n-        xfaImages.set(key, stream.getBytes());\n-      }\n-    }\n     this.xfaFactory.setImages(xfaImages);\n   }\n-  async loadXfaFonts(handler, task) {\n+  async #loadXfaFonts(handler, task) {\n     const acroForm = await this.pdfManager.ensureCatalog(\"acroForm\");\n     if (!acroForm) {\n       return;\n@@ -54292,22 +61106,27 @@\n     if (!(resources instanceof Dict)) {\n       return;\n     }\n-    const objectLoader = new ObjectLoader(resources, [\"Font\"], this.xref);\n-    await objectLoader.load();\n+    await ObjectLoader.load(resources, [\"Font\"], this.xref);\n     const fontRes = resources.get(\"Font\");\n     if (!(fontRes instanceof Dict)) {\n       return;\n     }\n-    const options = Object.assign(Object.create(null), this.pdfManager.evaluatorOptions);\n-    options.useSystemFonts = false;\n+    const options = Object.assign(Object.create(null), this.pdfManager.evaluatorOptions, {\n+      useSystemFonts: false\n+    });\n+    const {\n+      builtInCMapCache,\n+      fontCache,\n+      standardFontDataCache\n+    } = this.catalog;\n     const partialEvaluator = new PartialEvaluator({\n       xref: this.xref,\n       handler,\n       pageIndex: -1,\n       idFactory: this._globalIdFactory,\n-      fontCache: this.catalog.fontCache,\n-      builtInCMapCache: this.catalog.builtInCMapCache,\n-      standardFontDataCache: this.catalog.standardFontDataCache,\n+      fontCache,\n+      builtInCMapCache,\n+      standardFontDataCache,\n       options\n     });\n     const operatorList = new OperatorList();\n@@ -54323,12 +61142,12 @@\n         return this;\n       }\n     };\n-    const fonts = new Map();\n-    fontRes.forEach((fontName, font) => {\n-      fonts.set(fontName, font);\n+    const parseFont = (fontName, fallbackFontDict, cssFontInfo) => partialEvaluator.handleSetFont(resources, [Name.get(fontName), 1], null, operatorList, task, initialState, fallbackFontDict, cssFontInfo).catch(reason => {\n+      warn(`loadXfaFonts: \"${reason}\".`);\n+      return null;\n     });\n     const promises = [];\n-    for (const [fontName, font] of fonts) {\n+    for (const [fontName, font] of fontRes) {\n       const descriptor = font.get(\"FontDescriptor\");\n       if (!(descriptor instanceof Dict)) {\n         continue;\n@@ -54345,10 +61164,7 @@\n       if (!validateCSSFont(cssFontInfo)) {\n         continue;\n       }\n-      promises.push(partialEvaluator.handleSetFont(resources, [Name.get(fontName), 1], null, operatorList, task, initialState, null, cssFontInfo).catch(function (reason) {\n-        warn(`loadXfaFonts: \"${reason}\".`);\n-        return null;\n-      }));\n+      promises.push(parseFont(fontName, null, cssFontInfo));\n     }\n     await Promise.all(promises);\n     const missingFonts = this.xfaFactory.setFonts(pdfFonts);\n@@ -54389,25 +61205,24 @@\n         italicAngle: 12\n       }]) {\n         const name = `${missing}-${fontInfo.name}`;\n-        const dict = getXfaFontDict(name);\n-        promises.push(partialEvaluator.handleSetFont(resources, [Name.get(name), 1], null, operatorList, task, initialState, dict, {\n+        promises.push(parseFont(name, getXfaFontDict(name), {\n           fontFamily: missing,\n           fontWeight: fontInfo.fontWeight,\n           italicAngle: fontInfo.italicAngle\n-        }).catch(function (reason) {\n-          warn(`loadXfaFonts: \"${reason}\".`);\n-          return null;\n         }));\n       }\n     }\n     await Promise.all(promises);\n     this.xfaFactory.appendFonts(pdfFonts, reallyMissingFonts);\n   }\n-  async serializeXfaData(annotationStorage) {\n+  loadXfaResources(handler, task) {\n+    return Promise.all([this.#loadXfaFonts(handler, task).catch(() => {}), this.#loadXfaImages()]);\n+  }\n+  serializeXfaData(annotationStorage) {\n     return this.xfaFactory ? this.xfaFactory.serializeData(annotationStorage) : null;\n   }\n   get version() {\n-    return this.catalog.version || this._version;\n+    return this.catalog.version || this.#version;\n   }\n   get formInfo() {\n     const formInfo = {\n@@ -54416,7 +61231,9 @@\n       hasXfa: false,\n       hasSignatures: false\n     };\n-    const acroForm = this.catalog.acroForm;\n+    const {\n+      acroForm\n+    } = this.catalog;\n     if (!acroForm) {\n       return shadow(this, \"formInfo\", formInfo);\n     }\n@@ -54428,7 +61245,7 @@\n       formInfo.hasXfa = Array.isArray(xfa) && xfa.length > 0 || xfa instanceof BaseStream && !xfa.isEmpty;\n       const sigFlags = acroForm.get(\"SigFlags\");\n       const hasSignatures = !!(sigFlags & 0x1);\n-      const hasOnlyDocumentSignatures = hasSignatures && this._hasOnlyDocumentSignatures(fields);\n+      const hasOnlyDocumentSignatures = hasSignatures && this.#hasOnlyDocumentSignatures(fields);\n       formInfo.hasAcroForm = hasFields && !hasOnlyDocumentSignatures;\n       formInfo.hasSignatures = hasSignatures;\n     } catch (ex) {\n@@ -54440,19 +61257,24 @@\n     return shadow(this, \"formInfo\", formInfo);\n   }\n   get documentInfo() {\n+    const {\n+      catalog,\n+      formInfo,\n+      xref\n+    } = this;\n     const docInfo = {\n       PDFFormatVersion: this.version,\n-      Language: this.catalog.lang,\n-      EncryptFilterName: this.xref.encrypt ? this.xref.encrypt.filterName : null,\n+      Language: catalog.lang,\n+      EncryptFilterName: xref.encrypt?.filterName ?? null,\n       IsLinearized: !!this.linearization,\n-      IsAcroFormPresent: this.formInfo.hasAcroForm,\n-      IsXFAPresent: this.formInfo.hasXfa,\n-      IsCollectionPresent: !!this.catalog.collection,\n-      IsSignaturesPresent: this.formInfo.hasSignatures\n+      IsAcroFormPresent: formInfo.hasAcroForm,\n+      IsXFAPresent: formInfo.hasXfa,\n+      IsCollectionPresent: !!catalog.collection,\n+      IsSignaturesPresent: formInfo.hasSignatures\n     };\n     let infoDict;\n     try {\n-      infoDict = this.xref.trailer.get(\"Info\");\n+      infoDict = xref.trailer.get(\"Info\");\n     } catch (err) {\n       if (err instanceof MissingDataException) {\n         throw err;\n@@ -54462,8 +61284,7 @@\n     if (!(infoDict instanceof Dict)) {\n       return shadow(this, \"documentInfo\", docInfo);\n     }\n-    for (const key of infoDict.getKeys()) {\n-      const value = infoDict.get(key);\n+    for (const [key, value] of infoDict) {\n       switch (key) {\n         case \"Title\":\n         case \"Author\":\n@@ -54504,9 +61325,7 @@\n             warn(`Bad value, for custom key \"${key}\", in Info: ${value}.`);\n             continue;\n           }\n-          if (!docInfo.Custom) {\n-            docInfo.Custom = Object.create(null);\n-          }\n+          docInfo.Custom ??= Object.create(null);\n           docInfo.Custom[key] = customValue;\n           continue;\n       }\n@@ -54515,30 +61334,24 @@\n     return shadow(this, \"documentInfo\", docInfo);\n   }\n   get fingerprints() {\n+    const FINGERPRINT_FIRST_BYTES = 1024;\n+    const EMPTY_FINGERPRINT = \"\\x00\".repeat(16);\n     function validate(data) {\n-      return typeof data === \"string\" && data.length > 0 && data !== EMPTY_FINGERPRINT;\n+      return typeof data === \"string\" && data.length === 16 && data !== EMPTY_FINGERPRINT;\n     }\n-    function hexString(hash) {\n-      const buf = [];\n-      for (const num of hash) {\n-        const hex = num.toString(16);\n-        buf.push(hex.padStart(2, \"0\"));\n-      }\n-      return buf.join(\"\");\n-    }\n-    const idArray = this.xref.trailer.get(\"ID\");\n+    const id = this.xref.trailer.get(\"ID\");\n     let hashOriginal, hashModified;\n-    if (Array.isArray(idArray) && validate(idArray[0])) {\n-      hashOriginal = stringToBytes(idArray[0]);\n-      if (idArray[1] !== idArray[0] && validate(idArray[1])) {\n-        hashModified = stringToBytes(idArray[1]);\n+    if (Array.isArray(id) && validate(id[0])) {\n+      hashOriginal = stringToBytes(id[0]);\n+      if (id[1] !== id[0] && validate(id[1])) {\n+        hashModified = stringToBytes(id[1]);\n       }\n     } else {\n       hashOriginal = calculateMD5(this.stream.getByteRange(0, FINGERPRINT_FIRST_BYTES), 0, FINGERPRINT_FIRST_BYTES);\n     }\n-    return shadow(this, \"fingerprints\", [hexString(hashOriginal), hashModified ? hexString(hashModified) : null]);\n+    return shadow(this, \"fingerprints\", [toHexUtil(hashOriginal), hashModified ? toHexUtil(hashModified) : null]);\n   }\n-  async _getLinearizationPage(pageIndex) {\n+  async #getLinearizationPage(pageIndex) {\n     const {\n       catalog,\n       linearization,\n@@ -54569,7 +61382,7 @@\n     }\n   }\n   getPage(pageIndex) {\n-    const cachedPromise = this._pagePromises.get(pageIndex);\n+    const cachedPromise = this.#pagePromises.get(pageIndex);\n     if (cachedPromise) {\n       return cachedPromise;\n     }\n@@ -54582,28 +61395,27 @@\n     if (xfaFactory) {\n       promise = Promise.resolve([Dict.empty, null]);\n     } else if (linearization?.pageFirst === pageIndex) {\n-      promise = this._getLinearizationPage(pageIndex);\n+      promise = this.#getLinearizationPage(pageIndex);\n     } else {\n       promise = catalog.getPageDict(pageIndex);\n     }\n-    promise = promise.then(([pageDict, ref]) => {\n-      return new Page({\n-        pdfManager: this.pdfManager,\n-        xref: this.xref,\n-        pageIndex,\n-        pageDict,\n-        ref,\n-        globalIdFactory: this._globalIdFactory,\n-        fontCache: catalog.fontCache,\n-        builtInCMapCache: catalog.builtInCMapCache,\n-        standardFontDataCache: catalog.standardFontDataCache,\n-        globalImageCache: catalog.globalImageCache,\n-        systemFontCache: catalog.systemFontCache,\n-        nonBlendModesSet: catalog.nonBlendModesSet,\n-        xfaFactory\n-      });\n-    });\n-    this._pagePromises.set(pageIndex, promise);\n+    promise = promise.then(([pageDict, ref]) => new Page({\n+      pdfManager: this.pdfManager,\n+      xref: this.xref,\n+      pageIndex,\n+      pageDict,\n+      ref,\n+      globalIdFactory: this._globalIdFactory,\n+      fontCache: catalog.fontCache,\n+      builtInCMapCache: catalog.builtInCMapCache,\n+      standardFontDataCache: catalog.standardFontDataCache,\n+      globalColorSpaceCache: catalog.globalColorSpaceCache,\n+      globalImageCache: catalog.globalImageCache,\n+      systemFontCache: catalog.systemFontCache,\n+      nonBlendModesSet: catalog.nonBlendModesSet,\n+      xfaFactory\n+    }));\n+    this.#pagePromises.set(pageIndex, promise);\n     return promise;\n   }\n   async checkFirstPage(recoveryMode = false) {\n@@ -54614,7 +61426,7 @@\n       await this.getPage(0);\n     } catch (reason) {\n       if (reason instanceof XRefEntryException) {\n-        this._pagePromises.delete(0);\n+        this.#pagePromises.delete(0);\n         await this.cleanup();\n         throw new XRefParseException();\n       }\n@@ -54643,7 +61455,7 @@\n       }\n       await this.getPage(numPages - 1);\n     } catch (reason) {\n-      this._pagePromises.delete(numPages - 1);\n+      this.#pagePromises.delete(numPages - 1);\n       await this.cleanup();\n       if (reason instanceof XRefEntryException && !recoveryMode) {\n         throw new XRefParseException();\n@@ -54675,24 +61487,34 @@\n             fontCache: catalog.fontCache,\n             builtInCMapCache: catalog.builtInCMapCache,\n             standardFontDataCache: catalog.standardFontDataCache,\n+            globalColorSpaceCache: this.globalColorSpaceCache,\n             globalImageCache: catalog.globalImageCache,\n             systemFontCache: catalog.systemFontCache,\n             nonBlendModesSet: catalog.nonBlendModesSet,\n             xfaFactory: null\n           }));\n         }\n-        this._pagePromises.set(pageIndex, promise);\n+        this.#pagePromises.set(pageIndex, promise);\n       }\n       catalog.setActualNumPages(pagesTree.size);\n     }\n   }\n-  fontFallback(id, handler) {\n-    return this.catalog.fontFallback(id, handler);\n+  async fontFallback(id, handler) {\n+    const {\n+      catalog,\n+      pdfManager\n+    } = this;\n+    for (const translatedFont of await Promise.all(catalog.fontCache)) {\n+      if (translatedFont.loadedName === id) {\n+        translatedFont.fallback(handler, pdfManager.evaluatorOptions);\n+        return;\n+      }\n+    }\n   }\n   async cleanup(manuallyTriggered = false) {\n     return this.catalog ? this.catalog.cleanup(manuallyTriggered) : clearGlobalCaches();\n   }\n-  async #collectFieldObjects(name, fieldRef, promises, annotationGlobals, visitedRefs) {\n+  async #collectFieldObjects(name, parentRef, fieldRef, promises, annotationGlobals, visitedRefs, orphanFields) {\n     const {\n       xref\n     } = this;\n@@ -54704,13 +61526,19 @@\n     if (!(field instanceof Dict)) {\n       return;\n     }\n+    let subtype = await field.getAsync(\"Subtype\");\n+    subtype = subtype instanceof Name ? subtype.name : null;\n+    switch (subtype) {\n+      case \"Link\":\n+        return;\n+    }\n     if (field.has(\"T\")) {\n       const partName = stringToPDFString(await field.getAsync(\"T\"));\n       name = name === \"\" ? partName : `${name}.${partName}`;\n     } else {\n       let obj = field;\n       while (true) {\n-        obj = obj.getRaw(\"Parent\");\n+        obj = obj.getRaw(\"Parent\") || parentRef;\n         if (obj instanceof Ref) {\n           if (visitedRefs.has(obj)) {\n             break;\n@@ -54727,10 +61555,13 @@\n         }\n       }\n     }\n+    if (parentRef && !field.has(\"Parent\") && isName(field.get(\"Subtype\"), \"Widget\")) {\n+      orphanFields.put(fieldRef, parentRef);\n+    }\n     if (!promises.has(name)) {\n       promises.set(name, []);\n     }\n-    promises.get(name).push(AnnotationFactory.create(xref, fieldRef, annotationGlobals, null, true, null).then(annotation => annotation?.getFieldObject()).catch(function (reason) {\n+    promises.get(name).push(AnnotationFactory.create(xref, fieldRef, annotationGlobals, null, true, orphanFields, null).then(annotation => annotation?.getFieldObject()).catch(function (reason) {\n       warn(`#collectFieldObjects: \"${reason}\".`);\n       return null;\n     }));\n@@ -54740,23 +61571,28 @@\n     const kids = await field.getAsync(\"Kids\");\n     if (Array.isArray(kids)) {\n       for (const kid of kids) {\n-        await this.#collectFieldObjects(name, kid, promises, annotationGlobals, visitedRefs);\n+        await this.#collectFieldObjects(name, fieldRef, kid, promises, annotationGlobals, visitedRefs, orphanFields);\n       }\n     }\n   }\n   get fieldObjects() {\n-    if (!this.formInfo.hasFields) {\n-      return shadow(this, \"fieldObjects\", Promise.resolve(null));\n-    }\n-    const promise = Promise.all([this.pdfManager.ensureDoc(\"annotationGlobals\"), this.pdfManager.ensureCatalog(\"acroForm\")]).then(async ([annotationGlobals, acroForm]) => {\n+    const promise = this.pdfManager.ensureDoc(\"formInfo\").then(async formInfo => {\n+      if (!formInfo.hasFields) {\n+        return null;\n+      }\n+      const annotationGlobals = await this.annotationGlobals;\n       if (!annotationGlobals) {\n         return null;\n       }\n+      const {\n+        acroForm\n+      } = annotationGlobals;\n       const visitedRefs = new RefSet();\n       const allFields = Object.create(null);\n       const fieldPromises = new Map();\n-      for (const fieldRef of await acroForm.getAsync(\"Fields\")) {\n-        await this.#collectFieldObjects(\"\", fieldRef, fieldPromises, annotationGlobals, visitedRefs);\n+      const orphanFields = new RefSetCache();\n+      for (const fieldRef of acroForm.get(\"Fields\")) {\n+        await this.#collectFieldObjects(\"\", null, fieldRef, fieldPromises, annotationGlobals, visitedRefs, orphanFields);\n       }\n       const allPromises = [];\n       for (const [name, promises] of fieldPromises) {\n@@ -54768,7 +61604,10 @@\n         }));\n       }\n       await Promise.all(allPromises);\n-      return allFields;\n+      return {\n+        allFields: objectSize(allFields) > 0 ? allFields : null,\n+        orphanFields\n+      };\n     });\n     return shadow(this, \"fieldObjects\", promise);\n   }\n@@ -54781,17 +61620,13 @@\n     if (catalogJsActions) {\n       return true;\n     }\n-    if (fieldObjects) {\n-      return Object.values(fieldObjects).some(fieldObject => fieldObject.some(object => object.actions !== null));\n+    if (fieldObjects?.allFields) {\n+      return Object.values(fieldObjects.allFields).some(fieldObject => fieldObject.some(object => object.actions !== null));\n     }\n     return false;\n   }\n   get calculationOrderIds() {\n-    const acroForm = this.catalog.acroForm;\n-    if (!acroForm?.has(\"CO\")) {\n-      return shadow(this, \"calculationOrderIds\", null);\n-    }\n-    const calculationOrder = acroForm.get(\"CO\");\n+    const calculationOrder = this.catalog.acroForm?.get(\"CO\");\n     if (!Array.isArray(calculationOrder) || calculationOrder.length === 0) {\n       return shadow(this, \"calculationOrderIds\", null);\n     }\n@@ -54801,17 +61636,19 @@\n         ids.push(id.toString());\n       }\n     }\n-    if (ids.length === 0) {\n-      return shadow(this, \"calculationOrderIds\", null);\n-    }\n-    return shadow(this, \"calculationOrderIds\", ids);\n+    return shadow(this, \"calculationOrderIds\", ids.length ? ids : null);\n   }\n   get annotationGlobals() {\n     return shadow(this, \"annotationGlobals\", AnnotationFactory.createGlobals(this.pdfManager));\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fpdf_manager.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fpdf_manager.js\n+\n+\n+\n+\n+\n \n \n \n@@ -54828,16 +61665,31 @@\n   return null;\n }\n class BasePdfManager {\n-  constructor(args) {\n-    if (this.constructor === BasePdfManager) {\n-      unreachable(\"Cannot initialize BasePdfManager.\");\n-    }\n-    this._docBaseUrl = parseDocBaseUrl(args.docBaseUrl);\n-    this._docId = args.docId;\n-    this._password = args.password;\n-    this.enableXfa = args.enableXfa;\n-    args.evaluatorOptions.isOffscreenCanvasSupported &&= FeatureTest.isOffscreenCanvasSupported;\n-    this.evaluatorOptions = Object.freeze(args.evaluatorOptions);\n+  constructor({\n+    docBaseUrl,\n+    docId,\n+    enableXfa,\n+    evaluatorOptions,\n+    handler,\n+    password\n+  }) {\n+    this._docBaseUrl = parseDocBaseUrl(docBaseUrl);\n+    this._docId = docId;\n+    this._password = password;\n+    this.enableXfa = enableXfa;\n+    evaluatorOptions.isOffscreenCanvasSupported &&= FeatureTest.isOffscreenCanvasSupported;\n+    evaluatorOptions.isImageDecoderSupported &&= FeatureTest.isImageDecoderSupported;\n+    this.evaluatorOptions = Object.freeze(evaluatorOptions);\n+    ImageResizer.setOptions(evaluatorOptions);\n+    JpegStream.setOptions(evaluatorOptions);\n+    OperatorList.setOptions(evaluatorOptions);\n+    const options = {\n+      ...evaluatorOptions,\n+      handler\n+    };\n+    JpxImage.setOptions(options);\n+    IccColorSpace.setOptions(options);\n+    CmykICCBasedCS.setOptions(options);\n   }\n   get docId() {\n     return this._docId;\n@@ -54848,9 +61700,6 @@\n   get docBaseUrl() {\n     return this._docBaseUrl;\n   }\n-  get catalog() {\n-    return this.pdfDocument.catalog;\n-  }\n   ensureDoc(prop, args) {\n     return this.ensure(this.pdfDocument, prop, args);\n   }\n@@ -54866,15 +61715,6 @@\n   fontFallback(id, handler) {\n     return this.pdfDocument.fontFallback(id, handler);\n   }\n-  loadXfaFonts(handler, task) {\n-    return this.pdfDocument.loadXfaFonts(handler, task);\n-  }\n-  loadXfaImages() {\n-    return this.pdfDocument.loadXfaImages();\n-  }\n-  serializeXfaData(annotationStorage) {\n-    return this.pdfDocument.serializeXfaData(annotationStorage);\n-  }\n   cleanup(manuallyTriggered = false) {\n     return this.pdfDocument.cleanup(manuallyTriggered);\n   }\n@@ -54961,15 +61801,15 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fshared\u002Fmessage_handler.js\n+;\u002F\u002F .\u002Fsrc\u002Fshared\u002Fmessage_handler.js\n+\n+\n \n const CallbackKind = {\n-  UNKNOWN: 0,\n   DATA: 1,\n   ERROR: 2\n };\n const StreamKind = {\n-  UNKNOWN: 0,\n   CANCEL: 1,\n   CANCEL_COMPLETE: 2,\n   CLOSE: 3,\n@@ -54979,26 +61819,30 @@\n   PULL_COMPLETE: 7,\n   START_COMPLETE: 8\n };\n-function wrapReason(reason) {\n-  if (!(reason instanceof Error || typeof reason === \"object\" && reason !== null)) {\n+function onFn() {}\n+function wrapReason(ex) {\n+  if (ex instanceof AbortException || ex instanceof InvalidPDFException || ex instanceof PasswordException || ex instanceof ResponseException || ex instanceof UnknownErrorException) {\n+    return ex;\n+  }\n+  if (!(ex instanceof Error || typeof ex === \"object\" && ex !== null)) {\n     unreachable('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n   }\n-  switch (reason.name) {\n+  switch (ex.name) {\n     case \"AbortException\":\n-      return new AbortException(reason.message);\n-    case \"MissingPDFException\":\n-      return new MissingPDFException(reason.message);\n+      return new AbortException(ex.message);\n+    case \"InvalidPDFException\":\n+      return new InvalidPDFException(ex.message);\n     case \"PasswordException\":\n-      return new PasswordException(reason.message, reason.code);\n-    case \"UnexpectedResponseException\":\n-      return new UnexpectedResponseException(reason.message, reason.status);\n+      return new PasswordException(ex.message, ex.code);\n+    case \"ResponseException\":\n+      return new ResponseException(ex.message, ex.status, ex.missing);\n     case \"UnknownErrorException\":\n-      return new UnknownErrorException(reason.message, reason.details);\n-    default:\n-      return new UnknownErrorException(reason.message, reason.toString());\n+      return new UnknownErrorException(ex.message, ex.details);\n   }\n+  return new UnknownErrorException(ex.message, ex.toString());\n }\n class MessageHandler {\n+  #messageAC = new AbortController();\n   constructor(sourceName, targetName, comObj) {\n     this.sourceName = sourceName;\n     this.targetName = targetName;\n@@ -55009,66 +61853,68 @@\n     this.streamControllers = Object.create(null);\n     this.callbackCapabilities = Object.create(null);\n     this.actionHandler = Object.create(null);\n-    this._onComObjOnMessage = event => {\n-      const data = event.data;\n-      if (data.targetName !== this.sourceName) {\n-        return;\n-      }\n-      if (data.stream) {\n-        this.#processStreamMessage(data);\n-        return;\n+    comObj.addEventListener(\"message\", this.#onMessage.bind(this), {\n+      signal: this.#messageAC.signal\n+    });\n+  }\n+  #onMessage({\n+    data\n+  }) {\n+    if (data.targetName !== this.sourceName) {\n+      return;\n+    }\n+    if (data.stream) {\n+      this.#processStreamMessage(data);\n+      return;\n+    }\n+    if (data.callback) {\n+      const callbackId = data.callbackId;\n+      const capability = this.callbackCapabilities[callbackId];\n+      if (!capability) {\n+        throw new Error(`Cannot resolve callback ${callbackId}`);\n       }\n-      if (data.callback) {\n-        const callbackId = data.callbackId;\n-        const capability = this.callbackCapabilities[callbackId];\n-        if (!capability) {\n-          throw new Error(`Cannot resolve callback ${callbackId}`);\n-        }\n-        delete this.callbackCapabilities[callbackId];\n-        if (data.callback === CallbackKind.DATA) {\n-          capability.resolve(data.data);\n-        } else if (data.callback === CallbackKind.ERROR) {\n-          capability.reject(wrapReason(data.reason));\n-        } else {\n-          throw new Error(\"Unexpected callback case\");\n-        }\n-        return;\n+      delete this.callbackCapabilities[callbackId];\n+      if (data.callback === CallbackKind.DATA) {\n+        capability.resolve(data.data);\n+      } else if (data.callback === CallbackKind.ERROR) {\n+        capability.reject(wrapReason(data.reason));\n+      } else {\n+        throw new Error(\"Unexpected callback case\");\n       }\n-      const action = this.actionHandler[data.action];\n-      if (!action) {\n-        throw new Error(`Unknown action from worker: ${data.action}`);\n-      }\n-      if (data.callbackId) {\n-        const cbSourceName = this.sourceName;\n-        const cbTargetName = data.sourceName;\n-        new Promise(function (resolve) {\n-          resolve(action(data.data));\n-        }).then(function (result) {\n-          comObj.postMessage({\n-            sourceName: cbSourceName,\n-            targetName: cbTargetName,\n-            callback: CallbackKind.DATA,\n-            callbackId: data.callbackId,\n-            data: result\n-          });\n-        }, function (reason) {\n-          comObj.postMessage({\n-            sourceName: cbSourceName,\n-            targetName: cbTargetName,\n-            callback: CallbackKind.ERROR,\n-            callbackId: data.callbackId,\n-            reason: wrapReason(reason)\n-          });\n+      return;\n+    }\n+    const action = this.actionHandler[data.action];\n+    if (!action) {\n+      throw new Error(`Unknown action from worker: ${data.action}`);\n+    }\n+    if (data.callbackId) {\n+      const sourceName = this.sourceName,\n+        targetName = data.sourceName,\n+        comObj = this.comObj;\n+      Promise.try(action, data.data).then(function (result) {\n+        comObj.postMessage({\n+          sourceName,\n+          targetName,\n+          callback: CallbackKind.DATA,\n+          callbackId: data.callbackId,\n+          data: result\n         });\n-        return;\n-      }\n-      if (data.streamId) {\n-        this.#createStreamSink(data);\n-        return;\n-      }\n-      action(data.data);\n-    };\n-    comObj.addEventListener(\"message\", this._onComObjOnMessage);\n+      }, function (reason) {\n+        comObj.postMessage({\n+          sourceName,\n+          targetName,\n+          callback: CallbackKind.ERROR,\n+          callbackId: data.callbackId,\n+          reason: wrapReason(reason)\n+        });\n+      });\n+      return;\n+    }\n+    if (data.streamId) {\n+      this.#createStreamSink(data);\n+      return;\n+    }\n+    action(data.data);\n   }\n   on(actionName, handler) {\n     const ah = this.actionHandler;\n@@ -55218,9 +62064,7 @@\n     streamSink.sinkCapability.resolve();\n     streamSink.ready = streamSink.sinkCapability.promise;\n     this.streamSinks[streamId] = streamSink;\n-    new Promise(function (resolve) {\n-      resolve(action(data.data, streamSink));\n-    }).then(function () {\n+    Promise.try(action, data.data, streamSink).then(function () {\n       comObj.postMessage({\n         sourceName,\n         targetName,\n@@ -55275,9 +62119,7 @@\n           streamSink.sinkCapability.resolve();\n         }\n         streamSink.desiredSize = data.desiredSize;\n-        new Promise(function (resolve) {\n-          resolve(streamSink.onPull?.());\n-        }).then(function () {\n+        Promise.try(streamSink.onPull || onFn).then(function () {\n           comObj.postMessage({\n             sourceName,\n             targetName,\n@@ -55328,9 +62170,8 @@\n         if (!streamSink) {\n           break;\n         }\n-        new Promise(function (resolve) {\n-          resolve(streamSink.onCancel?.(wrapReason(data.reason)));\n-        }).then(function () {\n+        const dataReason = wrapReason(data.reason);\n+        Promise.try(streamSink.onCancel || onFn, dataReason).then(function () {\n           comObj.postMessage({\n             sourceName,\n             targetName,\n@@ -55347,7 +62188,7 @@\n             reason: wrapReason(reason)\n           });\n         });\n-        streamSink.sinkCapability.reject(wrapReason(data.reason));\n+        streamSink.sinkCapability.reject(dataReason);\n         streamSink.isCancelled = true;\n         delete this.streamSinks[streamId];\n         break;\n@@ -55360,11 +62201,430 @@\n     delete this.streamControllers[streamId];\n   }\n   destroy() {\n-    this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n+    this.#messageAC?.abort();\n+    this.#messageAC = null;\n+  }\n+}\n+\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fwriter.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+async function writeObject(ref, obj, buffer, {\n+  encrypt = null\n+}) {\n+  const transform = encrypt?.createCipherTransform(ref.num, ref.gen);\n+  buffer.push(`${ref.num} ${ref.gen} obj\\n`);\n+  if (obj instanceof Dict) {\n+    await writeDict(obj, buffer, transform);\n+  } else if (obj instanceof BaseStream) {\n+    await writeStream(obj, buffer, transform);\n+  } else if (Array.isArray(obj) || ArrayBuffer.isView(obj)) {\n+    await writeArray(obj, buffer, transform);\n+  }\n+  buffer.push(\"\\nendobj\\n\");\n+}\n+async function writeDict(dict, buffer, transform) {\n+  buffer.push(\"\u003C\u003C\");\n+  for (const key of dict.getKeys()) {\n+    buffer.push(` \u002F${escapePDFName(key)} `);\n+    await writeValue(dict.getRaw(key), buffer, transform);\n+  }\n+  buffer.push(\">>\");\n+}\n+async function writeStream(stream, buffer, transform) {\n+  let bytes = stream.getBytes();\n+  const {\n+    dict\n+  } = stream;\n+  const [filter, params] = await Promise.all([dict.getAsync(\"Filter\"), dict.getAsync(\"DecodeParms\")]);\n+  const filterZero = Array.isArray(filter) ? await dict.xref.fetchIfRefAsync(filter[0]) : filter;\n+  const isFilterZeroFlateDecode = isName(filterZero, \"FlateDecode\");\n+  const MIN_LENGTH_FOR_COMPRESSING = 256;\n+  if (bytes.length >= MIN_LENGTH_FOR_COMPRESSING || isFilterZeroFlateDecode) {\n+    try {\n+      const cs = new CompressionStream(\"deflate\");\n+      const writer = cs.writable.getWriter();\n+      await writer.ready;\n+      writer.write(bytes).then(async () => {\n+        await writer.ready;\n+        await writer.close();\n+      }).catch(() => {});\n+      const buf = await new Response(cs.readable).arrayBuffer();\n+      bytes = new Uint8Array(buf);\n+      let newFilter, newParams;\n+      if (!filter) {\n+        newFilter = Name.get(\"FlateDecode\");\n+      } else if (!isFilterZeroFlateDecode) {\n+        newFilter = Array.isArray(filter) ? [Name.get(\"FlateDecode\"), ...filter] : [Name.get(\"FlateDecode\"), filter];\n+        if (params) {\n+          newParams = Array.isArray(params) ? [null, ...params] : [null, params];\n+        }\n+      }\n+      if (newFilter) {\n+        dict.set(\"Filter\", newFilter);\n+      }\n+      if (newParams) {\n+        dict.set(\"DecodeParms\", newParams);\n+      }\n+    } catch (ex) {\n+      info(`writeStream - cannot compress data: \"${ex}\".`);\n+    }\n+  }\n+  let string = bytesToString(bytes);\n+  if (transform) {\n+    string = transform.encryptString(string);\n+  }\n+  dict.set(\"Length\", string.length);\n+  await writeDict(dict, buffer, transform);\n+  buffer.push(\" stream\\n\", string, \"\\nendstream\");\n+}\n+async function writeArray(array, buffer, transform) {\n+  buffer.push(\"[\");\n+  let first = true;\n+  for (const val of array) {\n+    if (!first) {\n+      buffer.push(\" \");\n+    } else {\n+      first = false;\n+    }\n+    await writeValue(val, buffer, transform);\n+  }\n+  buffer.push(\"]\");\n+}\n+async function writeValue(value, buffer, transform) {\n+  if (value instanceof Name) {\n+    buffer.push(`\u002F${escapePDFName(value.name)}`);\n+  } else if (value instanceof Ref) {\n+    buffer.push(`${value.num} ${value.gen} R`);\n+  } else if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n+    await writeArray(value, buffer, transform);\n+  } else if (typeof value === \"string\") {\n+    if (transform) {\n+      value = transform.encryptString(value);\n+    }\n+    buffer.push(`(${escapeString(value)})`);\n+  } else if (typeof value === \"number\") {\n+    buffer.push(numberToString(value));\n+  } else if (typeof value === \"boolean\") {\n+    buffer.push(value.toString());\n+  } else if (value instanceof Dict) {\n+    await writeDict(value, buffer, transform);\n+  } else if (value instanceof BaseStream) {\n+    await writeStream(value, buffer, transform);\n+  } else if (value === null) {\n+    buffer.push(\"null\");\n+  } else {\n+    warn(`Unhandled value in writer: ${typeof value}, please file a bug.`);\n+  }\n+}\n+function writeInt(number, size, offset, buffer) {\n+  for (let i = size + offset - 1; i > offset - 1; i--) {\n+    buffer[i] = number & 0xff;\n+    number >>= 8;\n+  }\n+  return offset + size;\n+}\n+function writeString(string, offset, buffer) {\n+  const ii = string.length;\n+  for (let i = 0; i \u003C ii; i++) {\n+    buffer[offset + i] = string.charCodeAt(i) & 0xff;\n+  }\n+  return offset + ii;\n+}\n+function computeMD5(filesize, xrefInfo) {\n+  const time = Math.floor(Date.now() \u002F 1000);\n+  const filename = xrefInfo.filename || \"\";\n+  const md5Buffer = [time.toString(), filename, filesize.toString(), ...xrefInfo.infoMap.values()];\n+  const md5BufferLen = Math.sumPrecise(md5Buffer.map(str => str.length));\n+  const array = new Uint8Array(md5BufferLen);\n+  let offset = 0;\n+  for (const str of md5Buffer) {\n+    offset = writeString(str, offset, array);\n+  }\n+  return bytesToString(calculateMD5(array, 0, array.length));\n+}\n+function writeXFADataForAcroform(str, changes) {\n+  const xml = new SimpleXMLParser({\n+    hasAttributes: true\n+  }).parseFromString(str);\n+  for (const {\n+    xfa\n+  } of changes) {\n+    if (!xfa) {\n+      continue;\n+    }\n+    const {\n+      path,\n+      value\n+    } = xfa;\n+    if (!path) {\n+      continue;\n+    }\n+    const nodePath = parseXFAPath(path);\n+    let node = xml.documentElement.searchNode(nodePath, 0);\n+    if (!node && nodePath.length > 1) {\n+      node = xml.documentElement.searchNode([nodePath.at(-1)], 0);\n+    }\n+    if (node) {\n+      node.childNodes = Array.isArray(value) ? value.map(val => new SimpleDOMNode(\"value\", val)) : [new SimpleDOMNode(\"#text\", value)];\n+    } else {\n+      warn(`Node not found for path: ${path}`);\n+    }\n+  }\n+  const buffer = [];\n+  xml.documentElement.dump(buffer);\n+  return buffer.join(\"\");\n+}\n+async function updateAcroform({\n+  xref,\n+  acroForm,\n+  acroFormRef,\n+  hasXfa,\n+  hasXfaDatasetsEntry,\n+  xfaDatasetsRef,\n+  needAppearances,\n+  changes\n+}) {\n+  if (hasXfa && !hasXfaDatasetsEntry && !xfaDatasetsRef) {\n+    warn(\"XFA - Cannot save it\");\n+  }\n+  if (!needAppearances && (!hasXfa || !xfaDatasetsRef || hasXfaDatasetsEntry)) {\n+    return;\n+  }\n+  const dict = acroForm.clone();\n+  if (hasXfa && !hasXfaDatasetsEntry) {\n+    const newXfa = acroForm.get(\"XFA\").slice();\n+    newXfa.splice(2, 0, \"datasets\");\n+    newXfa.splice(3, 0, xfaDatasetsRef);\n+    dict.set(\"XFA\", newXfa);\n+  }\n+  if (needAppearances) {\n+    dict.set(\"NeedAppearances\", true);\n+  }\n+  changes.put(acroFormRef, {\n+    data: dict\n+  });\n+}\n+function updateXFA({\n+  xfaData,\n+  xfaDatasetsRef,\n+  changes,\n+  xref\n+}) {\n+  if (xfaData === null) {\n+    const datasets = xref.fetchIfRef(xfaDatasetsRef);\n+    xfaData = writeXFADataForAcroform(datasets.getString(), changes);\n+  }\n+  const xfaDataStream = new StringStream(xfaData);\n+  xfaDataStream.dict = new Dict(xref);\n+  xfaDataStream.dict.set(\"Type\", Name.get(\"EmbeddedFile\"));\n+  changes.put(xfaDatasetsRef, {\n+    data: xfaDataStream\n+  });\n+}\n+async function getXRefTable(xrefInfo, baseOffset, newRefs, newXref, buffer) {\n+  buffer.push(\"xref\\n\");\n+  const indexes = getIndexes(newRefs);\n+  let indexesPosition = 0;\n+  for (const {\n+    ref,\n+    data\n+  } of newRefs) {\n+    if (ref.num === indexes[indexesPosition]) {\n+      buffer.push(`${indexes[indexesPosition]} ${indexes[indexesPosition + 1]}\\n`);\n+      indexesPosition += 2;\n+    }\n+    if (data !== null) {\n+      buffer.push(`${baseOffset.toString().padStart(10, \"0\")} ${Math.min(ref.gen, 0xffff).toString().padStart(5, \"0\")} n\\r\\n`);\n+      baseOffset += data.length;\n+    } else {\n+      buffer.push(`0000000000 ${Math.min(ref.gen + 1, 0xffff).toString().padStart(5, \"0\")} f\\r\\n`);\n+    }\n+  }\n+  computeIDs(baseOffset, xrefInfo, newXref);\n+  buffer.push(\"trailer\\n\");\n+  await writeDict(newXref, buffer);\n+  buffer.push(\"\\nstartxref\\n\", baseOffset.toString(), \"\\n%%EOF\\n\");\n+}\n+function getIndexes(newRefs) {\n+  const indexes = [];\n+  for (const {\n+    ref\n+  } of newRefs) {\n+    if (ref.num === indexes.at(-2) + indexes.at(-1)) {\n+      indexes[indexes.length - 1] += 1;\n+    } else {\n+      indexes.push(ref.num, 1);\n+    }\n+  }\n+  return indexes;\n+}\n+async function getXRefStreamTable(xrefInfo, baseOffset, newRefs, newXref, buffer) {\n+  const xrefTableData = [];\n+  let maxOffset = 0;\n+  let maxGen = 0;\n+  for (const {\n+    ref,\n+    data\n+  } of newRefs) {\n+    let gen;\n+    maxOffset = Math.max(maxOffset, baseOffset);\n+    if (data !== null) {\n+      gen = Math.min(ref.gen, 0xffff);\n+      xrefTableData.push([1, baseOffset, gen]);\n+      baseOffset += data.length;\n+    } else {\n+      gen = Math.min(ref.gen + 1, 0xffff);\n+      xrefTableData.push([0, 0, gen]);\n+    }\n+    maxGen = Math.max(maxGen, gen);\n+  }\n+  newXref.set(\"Index\", getIndexes(newRefs));\n+  const offsetSize = getSizeInBytes(maxOffset);\n+  const maxGenSize = getSizeInBytes(maxGen);\n+  const sizes = [1, offsetSize, maxGenSize];\n+  newXref.set(\"W\", sizes);\n+  computeIDs(baseOffset, xrefInfo, newXref);\n+  const structSize = Math.sumPrecise(sizes);\n+  const data = new Uint8Array(structSize * xrefTableData.length);\n+  const stream = new Stream(data);\n+  stream.dict = newXref;\n+  let offset = 0;\n+  for (const [type, objOffset, gen] of xrefTableData) {\n+    offset = writeInt(type, sizes[0], offset, data);\n+    offset = writeInt(objOffset, sizes[1], offset, data);\n+    offset = writeInt(gen, sizes[2], offset, data);\n+  }\n+  await writeObject(xrefInfo.newRef, stream, buffer, {});\n+  buffer.push(\"startxref\\n\", baseOffset.toString(), \"\\n%%EOF\\n\");\n+}\n+function computeIDs(baseOffset, xrefInfo, newXref) {\n+  if (Array.isArray(xrefInfo.fileIds) && xrefInfo.fileIds.length > 0) {\n+    const md5 = computeMD5(baseOffset, xrefInfo);\n+    newXref.set(\"ID\", [xrefInfo.fileIds[0], md5]);\n+  }\n+}\n+function getTrailerDict(xrefInfo, changes, useXrefStream) {\n+  const newXref = new Dict(null);\n+  newXref.set(\"Prev\", xrefInfo.startXRef);\n+  const refForXrefTable = xrefInfo.newRef;\n+  if (useXrefStream) {\n+    changes.put(refForXrefTable, {\n+      data: \"\"\n+    });\n+    newXref.set(\"Size\", refForXrefTable.num + 1);\n+    newXref.set(\"Type\", Name.get(\"XRef\"));\n+  } else {\n+    newXref.set(\"Size\", refForXrefTable.num);\n+  }\n+  if (xrefInfo.rootRef !== null) {\n+    newXref.set(\"Root\", xrefInfo.rootRef);\n+  }\n+  if (xrefInfo.infoRef !== null) {\n+    newXref.set(\"Info\", xrefInfo.infoRef);\n+  }\n+  if (xrefInfo.encryptRef !== null) {\n+    newXref.set(\"Encrypt\", xrefInfo.encryptRef);\n+  }\n+  return newXref;\n+}\n+async function writeChanges(changes, xref, buffer = []) {\n+  const newRefs = [];\n+  for (const [ref, {\n+    data\n+  }] of changes.items()) {\n+    if (data === null || typeof data === \"string\") {\n+      newRefs.push({\n+        ref,\n+        data\n+      });\n+      continue;\n+    }\n+    await writeObject(ref, data, buffer, xref);\n+    newRefs.push({\n+      ref,\n+      data: buffer.join(\"\")\n+    });\n+    buffer.length = 0;\n+  }\n+  return newRefs.sort((a, b) => a.ref.num - b.ref.num);\n+}\n+async function incrementalUpdate({\n+  originalData,\n+  xrefInfo,\n+  changes,\n+  xref = null,\n+  hasXfa = false,\n+  xfaDatasetsRef = null,\n+  hasXfaDatasetsEntry = false,\n+  needAppearances,\n+  acroFormRef = null,\n+  acroForm = null,\n+  xfaData = null,\n+  useXrefStream = false\n+}) {\n+  await updateAcroform({\n+    xref,\n+    acroForm,\n+    acroFormRef,\n+    hasXfa,\n+    hasXfaDatasetsEntry,\n+    xfaDatasetsRef,\n+    needAppearances,\n+    changes\n+  });\n+  if (hasXfa) {\n+    updateXFA({\n+      xfaData,\n+      xfaDatasetsRef,\n+      changes,\n+      xref\n+    });\n+  }\n+  const newXref = getTrailerDict(xrefInfo, changes, useXrefStream);\n+  const buffer = [];\n+  const newRefs = await writeChanges(changes, xref, buffer);\n+  let baseOffset = originalData.length;\n+  const lastByte = originalData.at(-1);\n+  if (lastByte !== 0x0a && lastByte !== 0x0d) {\n+    buffer.push(\"\\n\");\n+    baseOffset += 1;\n+  }\n+  for (const {\n+    data\n+  } of newRefs) {\n+    if (data !== null) {\n+      buffer.push(data);\n+    }\n   }\n+  await (useXrefStream ? getXRefStreamTable(xrefInfo, baseOffset, newRefs, newXref, buffer) : getXRefTable(xrefInfo, baseOffset, newRefs, newXref, buffer));\n+  const totalLength = originalData.length + Math.sumPrecise(buffer.map(str => str.length));\n+  const array = new Uint8Array(totalLength);\n+  array.set(originalData);\n+  let offset = originalData.length;\n+  for (const str of buffer) {\n+    offset = writeString(str, offset, array);\n+  }\n+  return array;\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fworker_stream.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fworker_stream.js\n+\n \n class PDFWorkerStream {\n   constructor(msgHandler) {\n@@ -55471,7 +62731,27 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fcore\u002Fworker.js\n+;\u002F\u002F .\u002Fsrc\u002Fcore\u002Fworker.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n \n@@ -55504,21 +62784,24 @@\n   }\n }\n class WorkerMessageHandler {\n+  static {\n+    if (typeof window === \"undefined\" && !isNodeJS && typeof self !== \"undefined\" && typeof self.postMessage === \"function\" && \"onmessage\" in self) {\n+      this.initializeFromPort(self);\n+    }\n+  }\n   static setup(handler, port) {\n     let testMessageProcessed = false;\n-    handler.on(\"test\", function (data) {\n+    handler.on(\"test\", data => {\n       if (testMessageProcessed) {\n         return;\n       }\n       testMessageProcessed = true;\n       handler.send(\"test\", data instanceof Uint8Array);\n     });\n-    handler.on(\"configure\", function (data) {\n+    handler.on(\"configure\", data => {\n       setVerbosityLevel(data.verbosity);\n     });\n-    handler.on(\"GetDocRequest\", function (data) {\n-      return WorkerMessageHandler.createDocumentHandler(data, port);\n-    });\n+    handler.on(\"GetDocRequest\", data => this.createDocumentHandler(data, port));\n   }\n   static createDocumentHandler(docParams, port) {\n     let pdfManager;\n@@ -55530,16 +62813,16 @@\n       docId,\n       apiVersion\n     } = docParams;\n-    const workerVersion = \"4.3.136\";\n+    const workerVersion = \"5.3.31\";\n     if (apiVersion !== workerVersion) {\n       throw new Error(`The API version \"${apiVersion}\" does not match ` + `the Worker version \"${workerVersion}\".`);\n     }\n-    const enumerableProperties = [];\n-    for (const property in []) {\n-      enumerableProperties.push(property);\n+    const buildMsg = (type, prop) => `The \\`${type}.prototype\\` contains unexpected enumerable property ` + `\"${prop}\", thus breaking e.g. \\`for...in\\` iteration of ${type}s.`;\n+    for (const prop in {}) {\n+      throw new Error(buildMsg(\"Object\", prop));\n     }\n-    if (enumerableProperties.length) {\n-      throw new Error(\"The `Array.prototype` contains unexpected enumerable properties: \" + enumerableProperties.join(\", \") + \"; thus breaking e.g. `for...in` iteration of `Array`s.\");\n+    for (const prop in []) {\n+      throw new Error(buildMsg(\"Array\", prop));\n     }\n     const workerHandlerName = docId + \"_worker\";\n     let handler = new MessageHandler(workerHandlerName, docId, port);\n@@ -55563,9 +62846,10 @@\n       await pdfManager.ensureDoc(\"checkLastPage\", [recoveryMode]);\n       const isPureXfa = await pdfManager.ensureDoc(\"isPureXfa\");\n       if (isPureXfa) {\n-        const task = new WorkerTask(\"loadXfaFonts\");\n+        const task = new WorkerTask(\"loadXfaResources\");\n         startWorkerTask(task);\n-        await Promise.all([pdfManager.loadXfaFonts(handler, task).catch(reason => {}).then(() => finishWorkerTask(task)), pdfManager.loadXfaImages()]);\n+        await pdfManager.ensureDoc(\"loadXfaResources\", [handler, task]);\n+        finishWorkerTask(task);\n       }\n       const [numPages, fingerprints] = await Promise.all([pdfManager.ensureDoc(\"numPages\"), pdfManager.ensureDoc(\"fingerprints\")]);\n       const htmlForXfa = isPureXfa ? await pdfManager.ensureDoc(\"htmlForXfa\") : null;\n@@ -55575,7 +62859,7 @@\n         htmlForXfa\n       };\n     }\n-    function getPdfManager({\n+    async function getPdfManager({\n       data,\n       password,\n       disableAutoFetch,\n@@ -55597,27 +62881,16 @@\n         password,\n         rangeChunkSize\n       };\n-      const pdfManagerCapability = Promise.withResolvers();\n-      let newPdfManager;\n       if (data) {\n-        try {\n-          pdfManagerArgs.source = data;\n-          newPdfManager = new LocalPdfManager(pdfManagerArgs);\n-          pdfManagerCapability.resolve(newPdfManager);\n-        } catch (ex) {\n-          pdfManagerCapability.reject(ex);\n-        }\n-        return pdfManagerCapability.promise;\n-      }\n-      let pdfStream,\n-        cachedChunks = [];\n-      try {\n-        pdfStream = new PDFWorkerStream(handler);\n-      } catch (ex) {\n-        pdfManagerCapability.reject(ex);\n-        return pdfManagerCapability.promise;\n+        pdfManagerArgs.source = data;\n+        return new LocalPdfManager(pdfManagerArgs);\n       }\n-      const fullRequest = pdfStream.getFullReader();\n+      const pdfStream = new PDFWorkerStream(handler),\n+        fullRequest = pdfStream.getFullReader();\n+      const pdfManagerCapability = Promise.withResolvers();\n+      let newPdfManager,\n+        cachedChunks = [],\n+        loaded = 0;\n       fullRequest.headersReady.then(function () {\n         if (!fullRequest.isRangeSupported) {\n           return;\n@@ -55636,21 +62909,6 @@\n         pdfManagerCapability.reject(reason);\n         cancelXHRs = null;\n       });\n-      let loaded = 0;\n-      const flushChunks = function () {\n-        const pdfFile = arrayBuffersToBytes(cachedChunks);\n-        if (length && pdfFile.length !== length) {\n-          warn(\"reported HTTP length is different from actual\");\n-        }\n-        try {\n-          pdfManagerArgs.source = pdfFile;\n-          newPdfManager = new LocalPdfManager(pdfManagerArgs);\n-          pdfManagerCapability.resolve(newPdfManager);\n-        } catch (ex) {\n-          pdfManagerCapability.reject(ex);\n-        }\n-        cachedChunks = [];\n-      };\n       new Promise(function (resolve, reject) {\n         const readChunk = function ({\n           value,\n@@ -55660,7 +62918,14 @@\n             ensureNotTerminated();\n             if (done) {\n               if (!newPdfManager) {\n-                flushChunks();\n+                const pdfFile = arrayBuffersToBytes(cachedChunks);\n+                cachedChunks = [];\n+                if (length && pdfFile.length !== length) {\n+                  warn(\"reported HTTP length is different from actual\");\n+                }\n+                pdfManagerArgs.source = pdfFile;\n+                newPdfManager = new LocalPdfManager(pdfManagerArgs);\n+                pdfManagerCapability.resolve(newPdfManager);\n               }\n               cancelXHRs = null;\n               return;\n@@ -55687,7 +62952,7 @@\n         pdfManagerCapability.reject(e);\n         cancelXHRs = null;\n       });\n-      cancelXHRs = function (reason) {\n+      cancelXHRs = reason => {\n         pdfStream.cancelAllRequests(reason);\n       };\n       return pdfManagerCapability.promise;\n@@ -55714,10 +62979,8 @@\n             finishWorkerTask(task);\n             handler.send(\"DocException\", ex);\n           });\n-        } else if (ex instanceof InvalidPDFException || ex instanceof MissingPDFException || ex instanceof UnexpectedResponseException || ex instanceof UnknownErrorException) {\n-          handler.send(\"DocException\", ex);\n         } else {\n-          handler.send(\"DocException\", new UnknownErrorException(ex.message, ex.toString()));\n+          handler.send(\"DocException\", wrapReason(ex));\n         }\n       }\n       function pdfManagerReady() {\n@@ -55795,9 +63058,7 @@\n     handler.on(\"GetPageJSActions\", function ({\n       pageIndex\n     }) {\n-      return pdfManager.getPage(pageIndex).then(function (page) {\n-        return pdfManager.ensure(page, \"jsActions\");\n-      });\n+      return pdfManager.getPage(pageIndex).then(page => pdfManager.ensure(page, \"jsActions\"));\n     });\n     handler.on(\"GetOutline\", function (data) {\n       return pdfManager.ensureCatalog(\"documentOutline\");\n@@ -55815,9 +63076,7 @@\n       return pdfManager.ensureCatalog(\"markInfo\");\n     });\n     handler.on(\"GetData\", function (data) {\n-      return pdfManager.requestLoadedStream().then(function (stream) {\n-        return stream.bytes;\n-      });\n+      return pdfManager.requestLoadedStream().then(stream => stream.bytes);\n     });\n     handler.on(\"GetAnnotations\", function ({\n       pageIndex,\n@@ -55836,7 +63095,7 @@\n       });\n     });\n     handler.on(\"GetFieldObjects\", function (data) {\n-      return pdfManager.ensureDoc(\"fieldObjects\");\n+      return pdfManager.ensureDoc(\"fieldObjects\").then(fieldObjects => fieldObjects?.allFields || null);\n     });\n     handler.on(\"HasJSActions\", function (data) {\n       return pdfManager.ensureDoc(\"hasJSActions\");\n@@ -55851,6 +63110,7 @@\n       filename\n     }) {\n       const globalPromises = [pdfManager.requestLoadedStream(), pdfManager.ensureCatalog(\"acroForm\"), pdfManager.ensureCatalog(\"acroFormRef\"), pdfManager.ensureDoc(\"startXRef\"), pdfManager.ensureDoc(\"xref\"), pdfManager.ensureDoc(\"linearization\"), pdfManager.ensureCatalog(\"structTreeRoot\")];\n+      const changes = new RefSetCache();\n       const promises = [];\n       const newAnnotationsByPage = !isPureXfa ? getNewAnnotationsMap(annotationStorage) : null;\n       const [stream, acroForm, acroFormRef, startXRef, xref, linearization, _structTreeRoot] = await Promise.all(globalPromises);\n@@ -55867,7 +63127,6 @@\n           }\n         } else if (await _structTreeRoot.canUpdateStructTree({\n           pdfManager,\n-          xref,\n           newAnnotationsByPage\n         })) {\n           structTreeRoot = _structTreeRoot;\n@@ -55877,60 +63136,56 @@\n         for (const [pageIndex, annotations] of newAnnotationsByPage) {\n           newAnnotationPromises.push(pdfManager.getPage(pageIndex).then(page => {\n             const task = new WorkerTask(`Save (editor): page ${pageIndex}`);\n-            return page.saveNewAnnotations(handler, task, annotations, imagePromises).finally(function () {\n+            startWorkerTask(task);\n+            return page.saveNewAnnotations(handler, task, annotations, imagePromises, changes).finally(function () {\n               finishWorkerTask(task);\n             });\n           }));\n         }\n         if (structTreeRoot === null) {\n-          promises.push(Promise.all(newAnnotationPromises).then(async newRefs => {\n+          promises.push(Promise.all(newAnnotationPromises).then(async () => {\n             await StructTreeRoot.createStructureTree({\n               newAnnotationsByPage,\n               xref,\n               catalogRef,\n               pdfManager,\n-              newRefs\n+              changes\n             });\n-            return newRefs;\n           }));\n         } else if (structTreeRoot) {\n-          promises.push(Promise.all(newAnnotationPromises).then(async newRefs => {\n+          promises.push(Promise.all(newAnnotationPromises).then(async () => {\n             await structTreeRoot.updateStructureTree({\n               newAnnotationsByPage,\n               pdfManager,\n-              newRefs\n+              changes\n             });\n-            return newRefs;\n           }));\n         }\n       }\n       if (isPureXfa) {\n-        promises.push(pdfManager.serializeXfaData(annotationStorage));\n+        promises.push(pdfManager.ensureDoc(\"serializeXfaData\", [annotationStorage]));\n       } else {\n         for (let pageIndex = 0; pageIndex \u003C numPages; pageIndex++) {\n           promises.push(pdfManager.getPage(pageIndex).then(function (page) {\n             const task = new WorkerTask(`Save: page ${pageIndex}`);\n-            return page.save(handler, task, annotationStorage).finally(function () {\n+            startWorkerTask(task);\n+            return page.save(handler, task, annotationStorage, changes).finally(function () {\n               finishWorkerTask(task);\n             });\n           }));\n         }\n       }\n       const refs = await Promise.all(promises);\n-      let newRefs = [];\n       let xfaData = null;\n       if (isPureXfa) {\n         xfaData = refs[0];\n         if (!xfaData) {\n           return stream.bytes;\n         }\n-      } else {\n-        newRefs = refs.flat(2);\n-        if (newRefs.length === 0) {\n-          return stream.bytes;\n-        }\n+      } else if (changes.size === 0) {\n+        return stream.bytes;\n       }\n-      const needAppearances = acroFormRef && acroForm instanceof Dict && newRefs.some(ref => ref.needAppearances);\n+      const needAppearances = acroFormRef && acroForm instanceof Dict && changes.values().some(ref => ref.needAppearances);\n       const xfa = acroForm instanceof Dict && acroForm.get(\"XFA\") || null;\n       let xfaDatasetsRef = null;\n       let hasXfaDatasetsEntry = false;\n@@ -55949,21 +63204,21 @@\n       }\n       let newXrefInfo = Object.create(null);\n       if (xref.trailer) {\n-        const infoObj = Object.create(null);\n+        const infoMap = new Map();\n         const xrefInfo = xref.trailer.get(\"Info\") || null;\n         if (xrefInfo instanceof Dict) {\n-          xrefInfo.forEach((key, value) => {\n+          for (const [key, value] of xrefInfo) {\n             if (typeof value === \"string\") {\n-              infoObj[key] = stringToPDFString(value);\n+              infoMap.set(key, stringToPDFString(value));\n             }\n-          });\n+          }\n         }\n         newXrefInfo = {\n           rootRef: catalogRef,\n           encryptRef: xref.trailer.getRaw(\"Encrypt\") || null,\n           newRef: xref.getNewTemporaryRef(),\n           infoRef: xref.trailer.getRaw(\"Info\") || null,\n-          info: infoObj,\n+          infoMap,\n           fileIds: xref.trailer.get(\"ID\") || null,\n           startXRef: linearization ? startXRef : xref.lastXRefStreamPos ?? startXRef,\n           filename\n@@ -55972,7 +63227,7 @@\n       return incrementalUpdate({\n         originalData: stream.bytes,\n         xrefInfo: newXrefInfo,\n-        newRefs,\n+        changes,\n         xref,\n         hasXfa: !!xfa,\n         xfaDatasetsRef,\n@@ -55998,7 +63253,8 @@\n           task,\n           intent: data.intent,\n           cacheKey: data.cacheKey,\n-          annotationStorage: data.annotationStorage\n+          annotationStorage: data.annotationStorage,\n+          modifiedIds: data.modifiedIds\n         }).then(function (operatorListInfo) {\n           finishWorkerTask(task);\n           if (start) {\n@@ -56046,9 +63302,7 @@\n       });\n     });\n     handler.on(\"GetStructTree\", function (data) {\n-      return pdfManager.getPage(data.pageIndex).then(function (page) {\n-        return pdfManager.ensure(page, \"getStructTree\");\n-      });\n+      return pdfManager.getPage(data.pageIndex).then(page => pdfManager.ensure(page, \"getStructTree\"));\n     });\n     handler.on(\"FontFallback\", function (data) {\n       return pdfManager.fontFallback(data.id, handler);\n@@ -56067,9 +63321,7 @@\n       } else {\n         clearGlobalCaches();\n       }\n-      if (cancelXHRs) {\n-        cancelXHRs(new AbortException(\"Worker was terminated.\"));\n-      }\n+      cancelXHRs?.(new AbortException(\"Worker was terminated.\"));\n       for (const task of WorkerTasks) {\n         waitOn.push(task.finished);\n         task.terminate();\n@@ -56087,23 +63339,17 @@\n   }\n   static initializeFromPort(port) {\n     const handler = new MessageHandler(\"worker\", \"main\", port);\n-    WorkerMessageHandler.setup(handler, port);\n+    this.setup(handler, port);\n     handler.send(\"ready\", null);\n   }\n }\n-function isMessagePort(maybePort) {\n-  return typeof maybePort.postMessage === \"function\" && \"onmessage\" in maybePort;\n-}\n-if (typeof window === \"undefined\" && !isNodeJS && typeof self !== \"undefined\" && isMessagePort(self)) {\n-  WorkerMessageHandler.initializeFromPort(self);\n-}\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fsrc\u002Fpdf.worker.js\n+;\u002F\u002F .\u002Fsrc\u002Fpdf.worker.js\n \n-const pdfjsVersion = \"4.3.136\";\n-const pdfjsBuild = \"0cec64437\";\n+globalThis.pdfjsWorker = {\n+  WorkerMessageHandler: WorkerMessageHandler\n+};\n \n-var __webpack_exports__WorkerMessageHandler = __webpack_exports__.WorkerMessageHandler;\n-export { __webpack_exports__WorkerMessageHandler as WorkerMessageHandler };\n+export { WorkerMessageHandler };\n \n \u002F\u002F# sourceMappingURL=pdf.worker.js.map\n\\ No newline at end of file\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fbuild\u002Fpdf.worker.js.map \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fbuild\u002Fpdf.worker.js.map\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fbuild\u002Fpdf.worker.js.map\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fbuild\u002Fpdf.worker.js.map\t2026-02-24 09:27:28.000000000 +0000\n@@ -1 +1 @@\n-{\"version\":3,\"file\":\"pdf.worker.js\",\"mappings\":\"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E,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC7E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAC7E,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KA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\u002FB;EAGAkB,YAAYA,CAAA,EAAG;IACb,OAAO\u002FN,MAAM,CAACgO,MAAM,CAAC,IAAI,CAACnB,IAAI,CAAC;EACjC;EAEAoB,GAAGA,CAAClL,GAAG,EAAEjD,KAAK,EAAE;IAQd,IAAI,CAAC+M,IAAI,CAAC9J,GAAG,CAAC,GAAGjD,KAAK;EACxB;EAEAoO,GAAGA,CAACnL,GAAG,EAAE;IACP,OAAO,IAAI,CAAC8J,IAAI,CAAC9J,GAAG,CAAC,KAAKxB,SAAS;EACrC;EAEA4M,OAAOA,CAACC,QAAQ,EAAE;IAChB,KAAK,MAAMrL,GAAG,IAAI,IAAI,CAAC8J,IAAI,EAAE;MAC3BuB,QAAQ,CAACrL,GAAG,EAAE,IAAI,CAAC+H,GAAG,CAAC\u002FH,GAAG,CAAC,CAAC;IAC9B;EACF;EAEA,WAAWsL,KAAKA,CAAA,EAAG;IACjB,MAAMC,SAAS,GAAG,IAAI3B,IAAI,CAAC,IAAI,CAAC;IAEhC2B,SAAS,CAACL,GAAG,GAAG,CAAClL,GAAG,EAAEjD,KAAK,KAAK;MAC9BtB,WAAW,CAAC,gDAAgD,CAAC;IAC\u002FD,CAAC;IACD,OAAOmB,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE2O,SAAS,CAAC;EACzC;EAEA,OAAOC,KAAKA,CAAC;IAAE3B,IAAI;IAAE4B,SAAS;IAAEC,aAAa,GAAG;EAAM,CAAC,EAAE;IACvD,MAAMC,UAAU,GAAG,IAAI\u002FB,IAAI,CAACC,IAAI,CAAC;MAC\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\u002FK,QAAQ,CAAC,CAAC,CAAC;EAC\u002FB;EAEAwL,MAAMA,CAACT,GAAG,EAAE;IACV,IAAI,CAACK,IAAI,CAACK,MAAM,CAACV,GAAG,CAAC\u002FK,QAAQ,CAAC,CAAC,CAAC;EAClC;EAEA,CAAC2H,MAAM,CAAC+D,QAAQ,IAAI;IAClB,OAAO,IAAI,CAACN,IAAI,CAAC1B,MAAM,CAAC,CAAC;EAC3B;EAEAgB,KAAKA,CAAA,EAAG;IACN,IAAI,CAACU,IAAI,CAACV,KAAK,CAAC,CAAC;EACnB;AACF;AAEA,MAAMiB,WAAW,CAAC;EAChBxP,WAAWA,CAAA,EAAG;IACZ,IAAI,CAACoM,IAAI,GAAG,IAAIlC,GAAG,CAAC,CAAC;EACvB;EAEA,IAAIwC,IAAIA,CAAA,EAAG;IACT,OAAO,IAAI,CAACN,IAAI,CAACM,IAAI;EACvB;EAEArC,GAAGA,CAACuE,GAAG,EAAE;IACP,OAAO,IAAI,CAACxC,IAAI,CAAC\u002FB,GAAG,CAACuE,GAAG,CAAC\u002FK,QAAQ,CAAC,CAAC,CAAC;EACtC;EAEA4J,GAAGA,CAACmB,GAAG,EAAE;IACP,OAAO,IAAI,CAACxC,IAAI,CAACqB,GAAG,CAACmB,GAAG,CAAC\u002FK,QAAQ,CAAC,CAAC,CAAC;EACtC;EAEAsL,GAAGA,CAACP,GAAG,EAAEzP,GAAG,EAAE;IACZ,IAAI,CAACiN,IAAI,CAACoB,GAAG,CAACoB,GAAG,CAAC\u002FK,QAAQ,CAAC,CAAC,EAAE1E,GAAG,CAAC;EACpC;EAEAsQ,QAAQA,CAACb,GAAG,EAAEc,QAAQ,EAAE;IACtB,IAAI,CAACtD,IAAI,CAACoB,GAAG,CAACoB,GAAG,CAAC\u002FK,QAAQ,CAAC,CAAC,EAAE,IAAI,CAACwG,GAAG,CAACqF,QAAQ,CAAC,CAAC;EACnD;EAEA,CAAClE,MAAM,CAAC+D,QAAQ,IAAI;IAClB,OAAO,IAAI,CAACnD,IAAI,CAACmB,MAAM,CAAC,CAAC;EAC3B;EAEAgB,KAAKA,CAAA,EAAG;IACN,IAAI,CAACnC,IAAI,CAACmC,KAAK,CAAC,CAAC;EACnB;EAEA,CAACoB,KAAKA,CAAA,EAAG;IACP,KAAK,MAAM,CAACf,GAAG,EAAEvP,KAAK,CAAC,IAAI,IAAI,CAAC+M,IAAI,EAAE;MACpC,MAAM,CAACU,GAAG,CAAC6B,UAAU,CAACC,GAAG,CAAC,EAAEvP,KAAK,CAAC;IACpC;EACF;AACF;AAEA,SAASuQ,MAAMA,CAACC,CAAC,EAAE9P,IAAI,EAAE;EACvB,OAAO8P,CAAC,YAAY\u002FD,IAAI,KAAK\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\u002FU,IAAI,GAAG+U,EAAE;MACX;MACA\u002FU,IAAI,KAAK+H,iBAAiB,CAAC\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\u002FR,IAAI,CAAC+R,IAAI,CAAC\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\u002FB;MACA,OAAO\u002FX,KAAK,CAACY,QAAQ,CAACiP,GAAG,EAAEkI,MAAM,CAAC;IACpC;IAEA,IAAIxH,GAAG,GAAGV,GAAG,GAAG7R,MAAM;IACtB,IAAIuS,GAAG,GAAGwH,MAAM,EAAE;MAChBxH,GAAG,GAAGwH,MAAM;IACd;IACA,IAAIxH,GAAG,GAAG,IAAI,CAACgI,qBAAqB,EAAE;MACpC,IAAI,CAACY,WAAW,CAACtJ,GAAG,EAAEU,GAAG,CAAC;IAC5B;IAEA,IAAI,CAACV,GAAG,GAAGU,GAAG;IACd,OAAOvQ,KAAK,CAACY,QAAQ,CAACiP,GAAG,EAAEU,GAAG,CAAC;EACjC;EAEAF,YAAYA,CAACC,KAAK,EAAEC,GAAG,EAAE;IACvB,IAAID,KAAK,GAAG,CAAC,EAAE;MACbA,KAAK,GAAG,CAAC;IACX;IACA,IAAIC,GAAG,GAAG,IAAI,CAACA,GAAG,EAAE;MAClBA,GAAG,GAAG,IAAI,CAACA,GAAG;IAChB;IACA,IAAIA,GAAG,GAAG,IAAI,CAACgI,qBAAqB,EAAE;MACpC,IAAI,CAACY,WAAW,CAAC7I,KAAK,EAAEC,GAAG,CAAC;IAC9B;IACA,OAAO,IAAI,CAACvQ,KAAK,CAACY,QAAQ,CAAC0P,KAAK,EAAEC,GAAG,CAAC;EACxC;EAEAK,aAAaA,CAACC,KAAK,EAAE7S,MAAM,EAAEsP,IAAI,GAAG,IAAI,EAAE;IACxC,IAAItP,MAAM,EAAE;MACV,IAAI6S,KAAK,GAAG7S,MAAM,GAAG,IAAI,CAACua,qBAAqB,EAAE;QAC\u002FC,IAAI,CAACY,WAAW,CAACtI,KAAK,EAAEA,KAAK,GAAG7S,MAAM,CAAC;MACzC;IACF,CAAC,MAAM,IAAI6S,KAAK,IAAI,IAAI,CAAC0H,qBAAqB,EAAE;MAU9C,IAAI,CAACW,UAAU,CAACrI,KAAK,CAAC;IACxB;IAEA,SAASyI,sBAAsBA,CAAA,EAAG,CAAC;IACnCA,sBAAsB,CAACla,SAAS,GAAGV,MAAM,CAAC8C,MAAM,CAAC,IAAI,CAAC;IACtD8X,sBAAsB,CAACla,SAAS,CAACqZ,gBAAgB,GAAG,YAAY;MAC9D,MAAMN,SAAS,GAAG,IAAI,CAACA,SAAS;MAChC,MAAMU,UAAU,GAAGpY,IAAI,CAACqJ,KAAK,CAAC,IAAI,CAAC+G,KAAK,GAAGsH,SAAS,CAAC;MACrD,MAAMW,QAAQ,GAAGrY,IAAI,CAACqJ,KAAK,CAAC,CAAC,IAAI,CAACyG,GAAG,GAAG,CAAC,IAAI4H,SAAS,CAAC,GAAG,CAAC;MAC3D,MAAMoB,aAAa,GAAG,EAAE;MACxB,KAAK,IAAI5Y,KAAK,GAAGkY,UAAU,EAAElY,KAAK,GAAGmY,QAAQ,EAAE,EAAEnY,KAAK,EAAE;QACtD,IAAI,CAAC,IAAI,CAAC0X,aAAa,CAACzL,GAAG,CAACjM,KAAK,CAAC,EAAE;UAClC4Y,aAAa,CAAC1Y,IAAI,CAACF,KAAK,CAAC;QAC3B;MACF;MACA,OAAO4Y,aAAa;IACtB,CAAC;IACD7a,MAAM,CAACC,cAAc,CAAC2a,sBAAsB,CAACla,SAAS,EAAE,cAAc,EAAE;MACtEoK,GAAGA,CAAA,EAAG;QACJ,IAAI,IAAI,CAACmP,eAAe,KAAK,IAAI,CAACL,SAAS,EAAE;UAC3C,OAAO,IAAI;QACb;QACA,OAAO,IAAI,CAACG,gBAAgB,CAAC,CAAC,CAACza,MAAM,KAAK,CAAC;MAC7C,CAAC;MACDa,YAAY,EAAE;IAChB,CAAC,CAAC;IAEF,MAAM2a,SAAS,GAAG,IAAIF,sBAAsB,CAAC,CAAC;IAC9CE,SAAS,CAAC3J,GAAG,GAAG2J,SAAS,CAAC3I,KAAK,GAAGA,KAAK;IACvC2I,SAAS,CAACjJ,GAAG,GAAGM,KAAK,GAAG7S,MAAM,IAAI,IAAI,CAACuS,GAAG;IAC1CiJ,SAAS,CAAClM,IAAI,GAAGA,IAAI;IACrB,OAAOkM,SAAS;EAClB;EAEA1I,cAAcA,CAAA,EAAG;IACf,OAAO,CAAC,IAAI,CAAC;EACf;AACF;AAEA,MAAM2I,oBAAoB,CAAC;EACzBta,WAAWA,CAACua,gBAAgB,EAAEC,IAAI,EAAE;IAClC,IAAI,CAAC3b,MAAM,GAAG2b,IAAI,CAAC3b,MAAM;IACzB,IAAI,CAACma,SAAS,GAAGwB,IAAI,CAACC,cAAc;IACpC,IAAI,CAACC,MAAM,GAAG,IAAI3B,aAAa,CAAC,IAAI,CAACla,MAAM,EAAE,IAAI,CAACma,SAAS,EAAE,IAAI,CAAC;IAClE,IAAI,CAACuB,gBAAgB,GAAGA,gBAAgB;IACxC,IAAI,CAACI,gBAAgB,GAAGH,IAAI,CAACG,gBAAgB;IAC7C,IAAI,CAACC,UAAU,GAAGJ,IAAI,CAACI,UAAU;IAEjC,IAAI,CAACC,aAAa,GAAG,CAAC;IAEtB,IAAI,CAACC,sBAAsB,GAAG,IAAI5Q,GAAG,CAAC,CAAC;IACvC,IAAI,CAAC6Q,gBAAgB,GAAG,IAAI7Q,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC8Q,kBAAkB,GAAG,IAAI9Q,GAAG,CAAC,CAAC;IACnC,IAAI,CAACkP,qBAAqB,GAAG,CAAC;IAC9B,IAAI,CAAC6B,OAAO,GAAG,KAAK;IAEpB,IAAI,CAACC,uBAAuB,GAAGC,OAAO,CAACC,aAAa,CAAC,CAAC;EACxD;EAEAC,WAAWA,CAAClK,KAAK,EAAEC,GAAG,EAAE;IACtB,MAAMkK,WAAW,GAAG,IAAI,CAACf,gBAAgB,CAACgB,cAAc,CAACpK,KAAK,EAAEC,GAAG,CAAC;IACpE,IAAI,CAACkK,WAAW,CAACE,oBAAoB,EAAE;MACrCF,WAAW,CAACG,UAAU,GAAG,IAAI,CAACA,UAAU,CAACC,IAAI,CAAC,IAAI,CAAC;IACrD;IAEA,IAAInC,MAAM,GAAG,EAAE;MACboC,MAAM,GAAG,CAAC;IACZ,OAAO,IAAIR,OAAO,CAAC,CAACS,OAAO,EAAEC,MAAM,KAAK;MACtC,MAAMC,SAAS,GAAGA,CAAC;QAAEzc,KAAK;QAAE0c;MAAK,CAAC,KAAK;QACrC,IAAI;UACF,IAAIA,IAAI,EAAE;YACR,MAAMC,SAAS,GAAG5J,mBAAmB,CAACmH,MAAM,CAAC;YAC7CA,MAAM,GAAG,IAAI;YACbqC,OAAO,CAACI,SAAS,CAAC;YAClB;UACF;UAOAL,MAAM,IAAItc,KAAK,CAACkT,UAAU;UAE1B,IAAI+I,WAAW,CAACE,oBAAoB,EAAE;YACpC,IAAI,CAACC,UAAU,CAAC;cAAEE;YAAO,CAAC,CAAC;UAC7B;UAEApC,MAAM,CAAC7X,IAAI,CAACrC,KAAK,CAAC;UAClBic,WAAW,CAACW,IAAI,CAAC,CAAC,CAACC,IAAI,CAACJ,SAAS,EAAED,MAAM,CAAC;QAC5C,CAAC,CAAC,OAAOM,CAAC,EAAE;UACVN,MAAM,CAACM,CAAC,CAAC;QACX;MACF,CAAC;MACDb,WAAW,CAACW,IAAI,CAAC,CAAC,CAACC,IAAI,CAACJ,SAAS,EAAED,MAAM,CAAC;IAC5C,CAAC,CAAC,CAACK,IAAI,CAAC1J,IAAI,IAAI;MACd,IAAI,IAAI,CAACyI,OAAO,EAAE;QAChB;MACF;MACA,IAAI,CAACxB,aAAa,CAAC;QAAEjY,KAAK,EAAEgR,IAAI;QAAErB;MAAM,CAAC,CAAC;IAC5C,CAAC,CAAC;EACJ;EAMAiL,gBAAgBA,CAACC,OAAO,GAAG,KAAK,EAAE;IAChC,IAAI,CAACA,OAAO,EAAE;MACZ,MAAMjC,aAAa,GAAG,IAAI,CAACM,MAAM,CAACpB,gBAAgB,CAAC,CAAC;MACpD,IAAI,CAACgD,cAAc,CAAClC,aAAa,CAAC;IACpC;IACA,OAAO,IAAI,CAACc,uBAAuB,CAACqB,OAAO;EAC7C;EAEAD,cAAcA,CAAC\u002FC,MAAM,EAAE;IACrB,MAAMiD,SAAS,GAAG,IAAI,CAAC3B,aAAa,EAAE;IAEtC,MAAM4B,YAAY,GAAG,IAAIvN,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC4L,sBAAsB,CAACtN,GAAG,CAACgP,SAAS,EAAEC,YAAY,CAAC;IACxD,KAAK,MAAMjb,KAAK,IAAI+X,MAAM,EAAE;MAC1B,IAAI,CAAC,IAAI,CAACmB,MAAM,CAACR,QAAQ,CAAC1Y,KAAK,CAAC,EAAE;QAChCib,YAAY,CAACrN,GAAG,CAAC5N,KAAK,CAAC;MACzB;IACF;IAEA,IAAIib,YAAY,CAAC\u002FP,IAAI,KAAK,CAAC,EAAE;MAC3B,OAAOyO,OAAO,CAACS,OAAO,CAAC,CAAC;IAC1B;IAEA,MAAMc,UAAU,GAAGvB,OAAO,CAACC,aAAa,CAAC,CAAC;IAC1C,IAAI,CAACJ,kBAAkB,CAACxN,GAAG,CAACgP,SAAS,EAAEE,UAAU,CAAC;IAElD,MAAMC,eAAe,GAAG,EAAE;IAC1B,KAAK,MAAMnb,KAAK,IAAIib,YAAY,EAAE;MAChC,IAAIG,UAAU,GAAG,IAAI,CAAC7B,gBAAgB,CAAC1Q,GAAG,CAAC7I,KAAK,CAAC;MACjD,IAAI,CAACob,UAAU,EAAE;QACfA,UAAU,GAAG,EAAE;QACf,IAAI,CAAC7B,gBAAgB,CAACvN,GAAG,CAAChM,KAAK,EAAEob,UAAU,CAAC;QAE5CD,eAAe,CAACjb,IAAI,CAACF,KAAK,CAAC;MAC7B;MACAob,UAAU,CAAClb,IAAI,CAAC8a,SAAS,CAAC;IAC5B;IAEA,IAAIG,eAAe,CAAC9d,MAAM,GAAG,CAAC,EAAE;MAC9B,MAAMge,sBAAsB,GAAG,IAAI,CAACC,WAAW,CAACH,eAAe,CAAC;MAChE,KAAK,MAAMI,YAAY,IAAIF,sBAAsB,EAAE;QACjD,MAAM1L,KAAK,GAAG4L,YAAY,CAACrD,UAAU,GAAG,IAAI,CAACV,SAAS;QACtD,MAAM5H,GAAG,GAAG9P,IAAI,CAACC,GAAG,CAClBwb,YAAY,CAACpD,QAAQ,GAAG,IAAI,CAACX,SAAS,EACtC,IAAI,CAACna,MACP,CAAC;QACD,IAAI,CAACwc,WAAW,CAAClK,KAAK,EAAEC,GAAG,CAAC,CAAC4L,KAAK,CAACN,UAAU,CAACb,MAAM,CAAC;MACvD;IACF;IAEA,OAAOa,UAAU,CAACH,OAAO,CAACS,KAAK,CAACC,MAAM,IAAI;MACxC,IAAI,IAAI,CAAChC,OAAO,EAAE;QAChB;MACF;MACA,MAAMgC,MAAM;IACd,CAAC,CAAC;EACJ;EAEAC,SAASA,CAAA,EAAG;IACV,OAAO,IAAI,CAACxC,MAAM;EACpB;EAKAyC,YAAYA,CAAChM,KAAK,EAAEC,GAAG,EAAE;IACvBA,GAAG,GAAG9P,IAAI,CAACC,GAAG,CAAC6P,GAAG,EAAE,IAAI,CAACvS,MAAM,CAAC;IAEhC,MAAM6a,UAAU,GAAG,IAAI,CAAC0D,aAAa,CAACjM,KAAK,CAAC;IAC5C,MAAMwI,QAAQ,GAAG,IAAI,CAAC0D,WAAW,CAACjM,GAAG,CAAC;IAEtC,MAAMmI,MAAM,GAAG,EAAE;IACjB,KAAK,IAAI\u002FX,KAAK,GAAGkY,UAAU,EAAElY,KAAK,GAAGmY,QAAQ,EAAE,EAAEnY,KAAK,EAAE;MACtD+X,MAAM,CAAC7X,IAAI,CAACF,KAAK,CAAC;IACpB;IACA,OAAO,IAAI,CAAC8a,cAAc,CAAC\u002FC,MAAM,CAAC;EACpC;EAEA+D,aAAaA,CAACC,MAAM,GAAG,EAAE,EAAE;IACzB,MAAMZ,eAAe,GAAG,EAAE;IAC1B,KAAK,MAAMa,KAAK,IAAID,MAAM,EAAE;MAC1B,MAAM7D,UAAU,GAAG,IAAI,CAAC0D,aAAa,CAACI,KAAK,CAACrM,KAAK,CAAC;MAClD,MAAMwI,QAAQ,GAAG,IAAI,CAAC0D,WAAW,CAACG,KAAK,CAACpM,GAAG,CAAC;MAC5C,KAAK,IAAI5P,KAAK,GAAGkY,UAAU,EAAElY,KAAK,GAAGmY,QAAQ,EAAE,EAAEnY,KAAK,EAAE;QACtD,IAAI,CAACmb,eAAe,CAACvZ,QAAQ,CAAC5B,KAAK,CAAC,EAAE;UACpCmb,eAAe,CAACjb,IAAI,CAACF,KAAK,CAAC;QAC7B;MACF;IACF;IAEAmb,eAAe,CAACc,IAAI,CAAC,UAAU\u002FX,CAAC,EAAEvB,CAAC,EAAE;MACnC,OAAOuB,CAAC,GAAGvB,CAAC;IACd,CAAC,CAAC;IACF,OAAO,IAAI,CAACmY,cAAc,CAACK,eAAe,CAAC;EAC7C;EAMAG,WAAWA,CAACvD,MAAM,EAAE;IAClB,MAAMmE,aAAa,GAAG,EAAE;IACxB,IAAIhE,UAAU,GAAG,CAAC,CAAC;IACnB,IAAIiE,SAAS,GAAG,CAAC,CAAC;IAElB,KAAK,IAAIvc,CAAC,GAAG,CAAC,EAAEuH,EAAE,GAAG4Q,MAAM,CAAC1a,MAAM,EAAEuC,CAAC,GAAGuH,EAAE,EAAE,EAAEvH,CAAC,EAAE;MAC\u002FC,MAAMI,KAAK,GAAG+X,MAAM,CAACnY,CAAC,CAAC;MACvB,IAAIsY,UAAU,GAAG,CAAC,EAAE;QAClBA,UAAU,GAAGlY,KAAK;MACpB;MAEA,IAAImc,SAAS,IAAI,CAAC,IAAIA,SAAS,GAAG,CAAC,KAAKnc,KAAK,EAAE;QAC7Ckc,aAAa,CAAChc,IAAI,CAAC;UAAEgY,UAAU;UAAEC,QAAQ,EAAEgE,SAAS,GAAG;QAAE,CAAC,CAAC;QAC3DjE,UAAU,GAAGlY,KAAK;MACpB;MACA,IAAIJ,CAAC,GAAG,CAAC,KAAKmY,MAAM,CAAC1a,MAAM,EAAE;QAC3B6e,aAAa,CAAChc,IAAI,CAAC;UAAEgY,UAAU;UAAEC,QAAQ,EAAEnY,KAAK,GAAG;QAAE,CAAC,CAAC;MACzD;MAEAmc,SAAS,GAAGnc,KAAK;IACnB;IACA,OAAOkc,aAAa;EACtB;EAEAjC,UAAUA,CAACjB,IAAI,EAAE;IACf,IAAI,CAACI,UAAU,CAACgD,IAAI,CAAC,aAAa,EAAE;MAClCjC,MAAM,EAAE,IAAI,CAACjB,MAAM,CAAClB,eAAe,GAAG,IAAI,CAACR,SAAS,GAAGwB,IAAI,CAACmB,MAAM;MAClEkC,KAAK,EAAE,IAAI,CAAChf;IACd,CAAC,CAAC;EACJ;EAEA4a,aAAaA,CAACe,IAAI,EAAE;IAClB,MAAMhZ,KAAK,GAAGgZ,IAAI,CAAChZ,KAAK;IACxB,MAAMsc,aAAa,GAAGtD,IAAI,CAACrJ,KAAK,KAAKrQ,SAAS;IAC9C,MAAMqQ,KAAK,GAAG2M,aAAa,GAAG,IAAI,CAAC1E,qBAAqB,GAAGoB,IAAI,CAACrJ,KAAK;IACrE,MAAMC,GAAG,GAAGD,KAAK,GAAG3P,KAAK,CAAC+Q,UAAU;IAEpC,MAAMmH,UAAU,GAAGpY,IAAI,CAACqJ,KAAK,CAACwG,KAAK,GAAG,IAAI,CAAC6H,SAAS,CAAC;IACrD,MAAMW,QAAQ,GACZvI,GAAG,GAAG,IAAI,CAACvS,MAAM,GACbyC,IAAI,CAACqJ,KAAK,CAACyG,GAAG,GAAG,IAAI,CAAC4H,SAAS,CAAC,GAChC1X,IAAI,CAAC+R,IAAI,CAACjC,GAAG,GAAG,IAAI,CAAC4H,SAAS,CAAC;IAErC,IAAI8E,aAAa,EAAE;MACjB,IAAI,CAACpD,MAAM,CAACb,wBAAwB,CAACrY,KAAK,CAAC;MAC3C,IAAI,CAAC4X,qBAAqB,GAAGhI,GAAG;IAClC,CAAC,MAAM;MACL,IAAI,CAACsJ,MAAM,CAACjB,aAAa,CAACtI,KAAK,EAAE3P,KAAK,CAAC;IACzC;IAEA,IAAI,IAAI,CAACkZ,MAAM,CAACrK,YAAY,EAAE;MAC5B,IAAI,CAAC6K,uBAAuB,CAACU,OAAO,CAAC,IAAI,CAAClB,MAAM,CAAC;IACnD;IAEA,MAAMqD,cAAc,GAAG,EAAE;IACzB,KAAK,IAAInE,QAAQ,GAAGF,UAAU,EAAEE,QAAQ,GAAGD,QAAQ,EAAE,EAAEC,QAAQ,EAAE;MAE\u002FD,MAAMgD,UAAU,GAAG,IAAI,CAAC7B,gBAAgB,CAAC1Q,GAAG,CAACuP,QAAQ,CAAC;MACtD,IAAI,CAACgD,UAAU,EAAE;QACf;MACF;MACA,IAAI,CAAC7B,gBAAgB,CAACzL,MAAM,CAACsK,QAAQ,CAAC;MAEtC,KAAK,MAAM4C,SAAS,IAAII,UAAU,EAAE;QAClC,MAAMH,YAAY,GAAG,IAAI,CAAC3B,sBAAsB,CAACzQ,GAAG,CAACmS,SAAS,CAAC;QAC\u002FD,IAAIC,YAAY,CAAChP,GAAG,CAACmM,QAAQ,CAAC,EAAE;UAC9B6C,YAAY,CAACnN,MAAM,CAACsK,QAAQ,CAAC;QAC\u002FB;QAEA,IAAI6C,YAAY,CAAC\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\u002FC,IAAIsY,WAAW,YAAYzW,IAAI,EAAE;cAC\u002FB,MAAM0W,WAAW,GAAGD,WAAW,CAACtY,GAAG,CAAC2X,EAAE,CAACjiB,IAAI,CAAC;cAC5C,IAAI6iB,WAAW,EAAE;gBACf,IAAIA,WAAW,YAAY9W,IAAI,EAAE;kBAC\u002FB,OAAO,IAAI,CAACqW,MAAM,CAChBS,WAAW,EACXzW,IAAI,EACJ8V,SAAS,EACTC,kBACF,CAAC;gBACH;gBACAF,EAAE,GAAGY,WAAW;gBAChB;cACF;YACF;UACF;UACA,MAAM,IAAIliB,WAAW,CAAE,4BAA2BshB,EAAE,CAACjiB,IAAK,EAAC,CAAC;MAChE;IACF;IACA,IAAI2D,KAAK,CAACyJ,OAAO,CAAC6U,EAAE,CAAC,EAAE;MACrB,MAAMa,IAAI,GAAG1W,IAAI,CAACmW,UAAU,CAACN,EAAE,CAAC,CAAC,CAAC,CAAC,CAACjiB,IAAI;MACxC,IAAI+iB,MAAM,EAAEtD,QAAQ,EAAEuD,MAAM,EAAEC,UAAU,EAAEC,UAAU,EAAEC,KAAK;MAE3D,QAAQL,IAAI;QACV,KAAK,GAAG;QACR,KAAK,YAAY;UACf,OAAO,IAAI,CAACN,UAAU,CAACC,IAAI;QAC7B,KAAK,KAAK;QACV,KAAK,WAAW;UACd,OAAO,IAAI,CAACD,UAAU,CAAC5C,GAAG;QAC5B,KAAK,MAAM;QACX,KAAK,YAAY;UACf,OAAO,IAAI,CAAC4C,UAAU,CAACE,IAAI;QAC7B,KAAK,SAAS;UACZK,MAAM,GAAG3W,IAAI,CAACmW,UAAU,CAACN,EAAE,CAAC,CAAC,CAAC,CAAC;UAC\u002FBgB,UAAU,GAAGF,MAAM,CAAC5V,QAAQ,CAAC,YAAY,CAAC;UAC1C+V,UAAU,GAAGH,MAAM,CAAC5V,QAAQ,CAAC,YAAY,CAAC;UAC1CgW,KAAK,GAAGJ,MAAM,CAACzY,GAAG,CAAC,OAAO,CAAC;UAC3B,OAAO,IAAI8Y,SAAS,CAACH,UAAU,EAAEC,UAAU,EAAEC,KAAK,CAAC;QACrD,KAAK,QAAQ;UACXJ,MAAM,GAAG3W,IAAI,CAACmW,UAAU,CAACN,EAAE,CAAC,CAAC,CAAC,CAAC;UAC\u002FBgB,UAAU,GAAGF,MAAM,CAAC5V,QAAQ,CAAC,YAAY,CAAC;UAC1C+V,UAAU,GAAGH,MAAM,CAAC5V,QAAQ,CAAC,YAAY,CAAC;UAC1CgW,KAAK,GAAGJ,MAAM,CAAC5V,QAAQ,CAAC,OAAO,CAAC;UAChC,MAAMkW,MAAM,GAAGN,MAAM,CAAC5V,QAAQ,CAAC,QAAQ,CAAC;UACxC,OAAO,IAAImW,QAAQ,CAACL,UAAU,EAAEC,UAAU,EAAEC,KAAK,EAAEE,MAAM,CAAC;QAC5D,KAAK,UAAU;UACb,MAAM1I,MAAM,GAAGvO,IAAI,CAACmW,UAAU,CAACN,EAAE,CAAC,CAAC,CAAC,CAAC;UACrC,MAAM7T,IAAI,GAAGuM,MAAM,CAACvM,IAAI;UACxBqR,QAAQ,GAAGrR,IAAI,CAAC9D,GAAG,CAAC,GAAG,CAAC;UACxB,MAAMiZ,GAAG,GAAGnV,IAAI,CAAC9D,GAAG,CAAC,WAAW,CAAC;UACjC,IAAIiZ,GAAG,EAAE;YACP,MAAMC,KAAK,GAAG,IAAI,CAACpB,MAAM,CAACmB,GAAG,EAAEnX,IAAI,EAAE8V,SAAS,EAAEC,kBAAkB,CAAC;YAGnE,IAAIqB,KAAK,CAAC\u002FD,QAAQ,KAAKA,QAAQ,EAAE;cAC\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\u002FBL,IAAI,CAAC\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\u002FBP,IAAI,CAACW,MAAM,CACT\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\u002FB,IAAI,CAACA,YAAY,GAAGc,SAAS;EAC\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CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEG,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAED,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAED,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,E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EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EACd,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAClB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAClB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EACtC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EACtC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAC1C,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAC1C,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAClB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAClB,CAAC,CAAC,EAAE,GAAG,CAAC,EACR,CAAC,CAAC,EAAE,GAAG,CAAC,EACR,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAClB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAClB,CAAC,CAAC,EAAE,GAAG,CAAC,EACR,CAAC,CAAC,EAAE,GAAG,CAAC,EACR,CAAC,CAAC,EAAE,GAAG,CAAC,EACR,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EACtC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EACtC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EACtC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EACtC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EACtC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,E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AAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACtC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAC9C,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EACtB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EACtB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EACtB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EACtB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EACtB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EACtB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAC9C,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAC9C,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EACtB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EACtB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EACtB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EACtB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EACtC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EACtC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EACtC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EACtC,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EACpB,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EACpB,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EACpB,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EACtC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CACvC;AAGD,MAAMe,WAAW,GAAG,CAClB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EACtC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EACtC,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CACnC;AAGD,MAAMC,WAAW,GAAG,CAClB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACtC,CAAC,CAAC,EAAE,CAAC,CAAC,EACN,CAAC,CAAC,EAAE,CAAC,CAAC,EACN,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,C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AO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OA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\u002FN,MAAM,CAAC+N,GAAG,CAAC,GAAG\u002FN,MAAM,CAAC+N,GAAG,GAAG6kB,IAAI,CAAC;MAClC;IACF;EACF;AACF;;;ACxYA,MAAMC,OAAO,GAAG,CACd;EAAEC,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,CAAC;EAAEC,IAAI,EAAE,CAAC;EAAEC,UAAU,EAAE;AAAE,CAAC,EAC\u002FC;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,CAAC;EAAEC,IAAI,EAAE,CAAC;EAAEC,UAAU,EAAE;AAAE,CAAC,EAC\u002FC;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,CAAC;EAAEC,IAAI,EAAE,CAAC;EAAEC,UAAU,EAAE;AAAE,CAAC,EAC\u002FC;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,CAAC;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EAChD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,CAAC;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EAChD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,CAAC;EAAEC,IAAI,EAAE,CAAC;EAAEC,UAAU,EAAE;AAAE,CAAC,EAC\u002FC;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,CAAC;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EAChD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,CAAC;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EAChD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,CAClD;AAWD,MAAMC,iBAAiB,CAAC;EAEtB71B,WAAWA,CAACwS,IAAI,EAAEd,KAAK,EAAEN,GAAG,EAAE;IAC5B,IAAI,CAACoB,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACsjB,EAAE,GAAGpkB,KAAK;IACf,IAAI,CAACqkB,OAAO,GAAG3kB,GAAG;IAElB,IAAI,CAAC4kB,KAAK,GAAGxjB,IAAI,CAACd,KAAK,CAAC;IACxB,IAAI,CAACukB,IAAI,GAAG,CAAC;IAEb,IAAI,CAACC,MAAM,CAAC,CAAC;IAEb,IAAI,CAACF,KAAK,GAAK,IAAI,CAACA,KAAK,IAAI,CAAC,GAAI,MAAM,GAAM,IAAI,CAACC,IAAI,IAAI,CAAC,GAAI,IAAK;IACrE,IAAI,CAACA,IAAI,GAAI,IAAI,CAACA,IAAI,IAAI,CAAC,GAAI,MAAM;IACrC,IAAI,CAACE,EAAE,IAAI,CAAC;IACZ,IAAI,CAACzwB,CAAC,GAAG,MAAM;EACjB;EAGAwwB,MAAMA,CAAA,EAAG;IACP,MAAM1jB,IAAI,GAAG,IAAI,CAACA,IAAI;IACtB,IAAIsjB,EAAE,GAAG,IAAI,CAACA,EAAE;IAEhB,IAAItjB,IAAI,CAACsjB,EAAE,CAAC,KAAK,IAAI,EAAE;MACrB,IAAItjB,IAAI,CAACsjB,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE;QACvB,IAAI,CAACG,IAAI,IAAI,MAAM;QACnB,IAAI,CAACE,EAAE,GAAG,CAAC;MACb,CAAC,MAAM;QACLL,EAAE,EAAE;QACJ,IAAI,CAACG,IAAI,IAAIzjB,IAAI,CAACsjB,EAAE,CAAC,IAAI,CAAC;QAC1B,IAAI,CAACK,EAAE,GAAG,CAAC;QACX,IAAI,CAACL,EAAE,GAAGA,EAAE;MACd;IACF,CAAC,MAAM;MACLA,EAAE,EAAE;MACJ,IAAI,CAACG,IAAI,IAAIH,EAAE,GAAG,IAAI,CAACC,OAAO,GAAGvjB,IAAI,CAACsjB,EAAE,CAAC,IAAI,CAAC,GAAG,MAAM;MACvD,IAAI,CAACK,EAAE,GAAG,CAAC;MACX,IAAI,CAACL,EAAE,GAAGA,EAAE;IACd;IACA,IAAI,IAAI,CAACG,IAAI,GAAG,MAAM,EAAE;MACtB,IAAI,CAACD,KAAK,IAAI,IAAI,CAACC,IAAI,IAAI,EAAE;MAC7B,IAAI,CAACA,IAAI,IAAI,MAAM;IACrB;EACF;EAGAG,OAAOA,CAACC,QAAQ,EAAE3lB,GAAG,EAAE;IAGrB,IAAI4lB,QAAQ,GAAGD,QAAQ,CAAC3lB,GAAG,CAAC,IAAI,CAAC;MAC\u002FB6lB,MAAM,GAAGF,QAAQ,CAAC3lB,GAAG,CAAC,GAAG,CAAC;IAC5B,MAAM8lB,UAAU,GAAGhB,OAAO,CAACc,QAAQ,CAAC;IACpC,MAAMG,KAAK,GAAGD,UAAU,CAACf,EAAE;IAC3B,IAAI1wB,CAAC;IACL,IAAIW,CAAC,GAAG,IAAI,CAACA,CAAC,GAAG+wB,KAAK;IAEtB,IAAI,IAAI,CAACT,KAAK,GAAGS,KAAK,EAAE;MAEtB,IAAI\u002FwB,CAAC,GAAG+wB,KAAK,EAAE;QACb\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\u002FD,IAAIyD,GAAG,GAAG,CAAC;IACT\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\u002FB,MAAM,GAAGq\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\u002FB,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAIm\u002FB,eAAe,EAAEn\u002FB,CAAC,EAAE,EAAE;IACzC,MAAMs\u002FB,aAAa,GAAG,EAAE;IACxB,MAAM\u002FC,IAAI,GAAG0C,YAAY,GAAGj\u002FB,CAAC;IAC7B,MAAMw8B,IAAI,GAAGD,IAAI,GAAG0C,YAAY;IAChC,KAAK,IAAI54B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG64B,aAAa,EAAE74B,CAAC,EAAE,EAAE;MACtCi5B,aAAa,CAACh\u002FB,IAAI,CAAC47B,gBAAgB,CAAC71B,CAAC,CAAC,CAAChG,QAAQ,CAACk8B,IAAI,EAAEC,IAAI,CAAC,CAAC;IAC9D;IACA6C,QAAQ,CAAC\u002F+B,IAAI,CAACg\u002FB,aAAa,CAAC;EAC9B;EACA,OAAOD,QAAQ;AACjB;AAEA,SAASE,oBAAoBA,CAC3B\u002FH,GAAG,EACH6H,QAAQ,EACRtH,QAAQ,EACRyH,WAAW,EACXC,YAAY,EACZzC,iBAAiB,EACjB0C,UAAU,EACVnC,mBAAmB,EACnBoC,SAAS,EACTC,UAAU,EACVC,WAAW,EACXC,WAAW,EACXC,WAAW,EACXC,WAAW,EACXhJ,eAAe,EACf;EACA,MAAM9mB,IAAI,GAAG,IAAI;EACjB,IAAIwvB,UAAU,EAAE;IACd,MAAM,IAAIpK,UAAU,CAAC,uBAAuB,CAAC;EAC\u002FC;EACA,IAAIiI,mBAAmB,KAAK,CAAC,EAAE;IAC7B,MAAM,IAAIjI,UAAU,CACjB,aAAYiI,mBAAoB,uCACnC,CAAC;EACH;EAGA,MAAM0C,YAAY,GAAG,EAAE;EACvB,IAAIjgC,CAAC,EAAEke,CAAC,EAAEiS,GAAG;EACb,KAAKnwB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGy\u002FB,YAAY,EAAEz\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\u002FB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGk\u002FB,aAAa,EAAEl\u002FB,CAAC,EAAE,EAAE;UAClC2gC,SAAS,GAAGV,YAAY,CAAC55B,CAAC,GAAGrG,CAAC,CAAC;UAC\u002FB0gC,UAAU,GAAGpB,aAAa,CAACt\u002FB,CAAC,CAAC;UAC7B,KAAKke,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+gB,YAAY,EAAE\u002FgB,CAAC,EAAE,EAAE;YACjCyiB,SAAS,CAACv6B,CAAC,GAAG8X,CAAC,CAAC,IAAIwiB,UAAU,CAACxiB,CAAC,CAAC;UACnC;QACF;MACF,CAAC,MAAM;QACL,IAAI0iB,OAAO,EAAEC,OAAO;QACpB,KAAK7gC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGk\u002FB,aAAa,EAAEl\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\u002FC,MAAMsB,sBAAsB,GAAG\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\u002FN,GAAG,EACV0N,UAAU,CAAC\u002FtB,KAAK,EAChB+tB,UAAU,CAAC9tB,MAAM,EACjBmuB,MAAM,CAACxN,QAAQ,EACfwN,MAAM,CAAC7N,UAAU,EACjB,IAAI,EACJ6N,MAAM,CAAC5N,EAAE,EACTX,eACF,CAAC;IACD,IAAI,CAACiO,UAAU,CAACC,UAAU,EAAEjO,MAAM,CAAC;EACrC;EAEAuO,gCAAgCA,CAAA,EAAG;IACjC,IAAI,CAACF,wBAAwB,CAAC,GAAGG,SAAS,CAAC;EAC7C;EAEAC,kBAAkBA,CAChBjD,UAAU,EACVkD,cAAc,EACdC,gBAAgB,EAChBx0B,IAAI,EACJd,KAAK,EACLN,GAAG,EACH;IACA,IAAIyqB,aAAa,EAAEG,YAAY;IAC\u002FB,IAAI6H,UAAU,CAACrI,OAAO,EAAE;MACtBK,aAAa,GAAGoL,gCAAgC,CAC9CpD,UAAU,EACVmD,gBAAgB,EAChB,IAAI,CAACE,YACP,CAAC;MACDlL,YAAY,GAAG,IAAIhD,MAAM,CAACxmB,IAAI,EAAEd,KAAK,EAAEN,GAAG,CAAC;IAC7C;IAGA,IAAIsqB,OAAO,GAAG,IAAI,CAACA,OAAO;IAC1B,IAAI,CAACA,OAAO,EAAE;MACZ,IAAI,CAACA,OAAO,GAAGA,OAAO,GAAG,CAAC,CAAC;IAC7B;IAEA,MAAM6C,YAAY,GAAG,EAAE;IACvB,KAAK,MAAM4I,eAAe,IAAIH,gBAAgB,EAAE;MAC9C,MAAMI,eAAe,GAAG1L,OAAO,CAACyL,eAAe,CAAC;MAGhD,IAAIC,eAAe,EAAE;QACnB7I,YAAY,CAAC78B,IAAI,CAAC,GAAG0lC,eAAe,CAAC;MACvC;IACF;IAEA,MAAMhP,eAAe,GAAG,IAAIrB,eAAe,CAACvkB,IAAI,EAAEd,KAAK,EAAEN,GAAG,CAAC;IAC7DsqB,OAAO,CAACqL,cAAc,CAAC,GAAGxL,sBAAsB,CAC9CsI,UAAU,CAACrI,OAAO,EAClBqI,UAAU,CAACpI,UAAU,EACrB8C,YAAY,EACZsF,UAAU,CAAClI,kBAAkB,EAC7BkI,UAAU,CAACjI,uBAAuB,EAClCC,aAAa,EACbgI,UAAU,CAAC1K,QAAQ,EACnB0K,UAAU,CAAC9K,EAAE,EACb8K,UAAU,CAACQ,kBAAkB,EAC7BR,UAAU,CAAC9H,YAAY,EACvB3D,eAAe,EACf4D,YACF,CAAC;EACH;EAEAqL,qBAAqBA,CAACV,MAAM,EAAEK,gBAAgB,EAAEx0B,IAAI,EAAEd,KAAK,EAAEN,GAAG,EAAE;IAChE,MAAMk1B,UAAU,GAAGK,MAAM,CAACjpC,IAAI;IAC9B,IAAIm+B,aAAa,EAAEG,YAAY;IAG\u002FB,MAAMN,OAAO,GAAG,IAAI,CAACA,OAAO;IAC5B,MAAM6C,YAAY,GAAG,EAAE;IACvB,KAAK,MAAM4I,eAAe,IAAIH,gBAAgB,EAAE;MAC9C,MAAMI,eAAe,GAAG1L,OAAO,CAACyL,eAAe,CAAC;MAGhD,IAAIC,eAAe,EAAE;QACnB7I,YAAY,CAAC78B,IAAI,CAAC,GAAG0lC,eAAe,CAAC;MACvC;IACF;IACA,MAAMjL,gBAAgB,GAAG\u002FoB,IAAI,CAACmrB,YAAY,CAAC1\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\u002FQ,CAAC,EAAE,EAAE;IAC\u002FB,MAAM8pB,GAAG,GAAG,IAAIzvB,UAAU,CAACyW,KAAK,CAAC;IACjC8f,MAAM,CAAC32B,IAAI,CAAC6vB,GAAG,CAAC;IAChB,KAAK,IAAI\u002FpB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+Q,KAAK,EAAE\u002FQ,CAAC,EAAE,EAAE;MAC9B+pB,GAAG,CAAC\u002FpB,CAAC,CAAC,GAAGohC,MAAM,CAACxS,OAAO,CAAC,CAAC;IAC3B;IACAwS,MAAM,CAAClY,SAAS,CAAC,CAAC;EACpB;EACA,OAAO2H,MAAM;AACf;AAEA,SAASY,eAAeA,CAACrK,KAAK,EAAErW,KAAK,EAAEC,MAAM,EAAEmyB,UAAU,EAAE;EAGzD,MAAM7nB,MAAM,GAAG;IACbxsB,CAAC,EAAE,CAAC,CAAC;IACLu6B,OAAO,EAAEtY,KAAK;IACdwY,IAAI,EAAEvY,MAAM;IACZ2Y,QAAQ,EAAE,IAAI;IACdF,UAAU,EAAE0Z;EACd,CAAC;EACD,MAAMviC,OAAO,GAAG,IAAIioB,eAAe,CAACzB,KAAK,EAAE9L,MAAM,CAAC;EAClD,MAAMuV,MAAM,GAAG,EAAE;EACjB,IAAI2R,WAAW;IACbrc,GAAG,GAAG,KAAK;EAEb,KAAK,IAAIlmB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+Q,MAAM,EAAE\u002FQ,CAAC,EAAE,EAAE;IAC\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\u002FE,MAAM,CAAC,GAAG,CAAC;EAC\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\u002F+B,UAAU,CAAChB,IAAI,EAAE2\u002FB,UAAU,CAAC;EAClD,IAAII,aAAa,IAAI,MAAM,IAAIA,aAAa,IAAI,MAAM,EAAE;IACtD,OAAO;MACLxB,OAAO,EAAE,IAAI;MACbE,MAAM,EAAEsB,aAAa;MACrBh\u002FB,MAAM,EAAE4+B;IACV,CAAC;EACH;EACA,IAAIK,SAAS,GAAGh\u002FB,UAAU,CAAChB,IAAI,EAAE8\u002FB,MAAM,CAAC;EACxC,OAAO,EAAEE,SAAS,IAAI,MAAM,IAAIA,SAAS,IAAI,MAAM,CAAC,EAAE;IACpD,IAAI,EAAEF,MAAM,IAAID,MAAM,EAAE;MACtB,OAAO,IAAI;IACb;IACAG,SAAS,GAAGh\u002FB,UAAU,CAAChB,IAAI,EAAE8\u002FB,MAAM,CAAC;EACtC;EACA,OAAO;IACLvB,OAAO,EAAEwB,aAAa,CAAC1uC,QAAQ,CAAC,EAAE,CAAC;IACnCotC,MAAM,EAAEuB,SAAS;IACjBj\u002FB,MAAM,EAAE++B;EACV,CAAC;AACH;AAEA,MAAMG,SAAS,CAAC;EACdzyC,WAAWA,CAAC;IAAE0yC,eAAe,GAAG,IAAI;IAAEC,cAAc,GAAG,CAAC;EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;IAChE,IAAI,CAACC,gBAAgB,GAAGF,eAAe;IACvC,IAAI,CAACG,eAAe,GAAGF,cAAc;EACvC;EAEAvwB,KAAKA,CAAC5P,IAAI,EAAE;IAAEsgC,YAAY,GAAG;EAAK,CAAC,GAAG,CAAC,CAAC,EAAE;IACxC,SAASC,aAAaA,CAAA,EAAG;MACvB,MAAMl0C,MAAM,GAAG2U,UAAU,CAAChB,IAAI,EAAEe,MAAM,CAAC;MACvCA,MAAM,IAAI,CAAC;MACX,IAAIy\u002FB,SAAS,GAAGz\u002FB,MAAM,GAAG1U,MAAM,GAAG,CAAC;MAEnC,MAAM4xC,UAAU,GAAGK,kBAAkB,CAACt+B,IAAI,EAAEwgC,SAAS,EAAEz\u002FB,MAAM,CAAC;MAC9D,IAAIk9B,UAAU,EAAEM,OAAO,EAAE;QACvBjzC,IAAI,CACF,uDAAuD,GACrD2yC,UAAU,CAACM,OACf,CAAC;QACDiC,SAAS,GAAGvC,UAAU,CAACl9B,MAAM;MAC\u002FB;MAEA,MAAM0\u002FB,KAAK,GAAGzgC,IAAI,CAAC\u002FQ,QAAQ,CAAC8R,MAAM,EAAEy\u002FB,SAAS,CAAC;MAC9Cz\u002FB,MAAM,IAAI0\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\u002F8B,IAAI,CAACe,MAAM,EAAE,CAAC;cAC\u002FB;YACF,CAAC,MAAM,IAAIyhC,qBAAqB,IAAI,CAAC,KAAK,CAAC,EAAE;cAE3C,KAAK11B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,EAAE,EAAEA,CAAC,EAAE,EAAE;gBACvBiwB,CAAC,GAAG7C,SAAS,CAACptB,CAAC,CAAC;gBAChB21B,SAAS,CAAC1F,CAAC,CAAC,GAAG\u002F7B,UAAU,CAAChB,IAAI,EAAEe,MAAM,CAAC;gBACvCA,MAAM,IAAI,CAAC;cACb;YACF,CAAC,MAAM;cACL,MAAM,IAAI+4B,SAAS,CAAC,0BAA0B,CAAC;YACjD;YACAsH,kBAAkB,CAACoB,qBAAqB,GAAG,EAAE,CAAC,GAAGC,SAAS;UAC5D;UACA;QAEF,KAAK,MAAM;QACX,KAAK,MAAM;QACX,KAAK,MAAM;UACT,IAAIxH,KAAK,EAAE;YACT,MAAM,IAAInB,SAAS,CAAC,mCAAmC,CAAC;UAC1D;UACA\u002F4B,MAAM,IAAI,CAAC;UAEXk6B,KAAK,GAAG,CAAC,CAAC;UACVA,KAAK,CAACyH,QAAQ,GAAGzE,UAAU,KAAK,MAAM;UACtChD,KAAK,CAACS,WAAW,GAAGuC,UAAU,KAAK,MAAM;UACzChD,KAAK,CAACgB,SAAS,GAAGj8B,IAAI,CAACe,MAAM,EAAE,CAAC;UAChC,MAAM4hC,YAAY,GAAG3hC,UAAU,CAAChB,IAAI,EAAEe,MAAM,CAAC;UAC7CA,MAAM,IAAI,CAAC;UACXk6B,KAAK,CAACjB,SAAS,GAAGsG,YAAY,IAAIqC,YAAY;UAC9C1H,KAAK,CAAC0F,cAAc,GAAG3\u002FB,UAAU,CAAChB,IAAI,EAAEe,MAAM,CAAC;UAC\u002FCA,MAAM,IAAI,CAAC;UACXk6B,KAAK,CAACC,UAAU,GAAG,EAAE;UACrBD,KAAK,CAAC2H,YAAY,GAAG,CAAC,CAAC;UACvB,MAAMC,eAAe,GAAG7iC,IAAI,CAACe,MAAM,EAAE,CAAC;UACtC,IAAI6\u002FB,IAAI,GAAG,CAAC;YACVC,IAAI,GAAG,CAAC;UACV,KAAKjyC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGi0C,eAAe,EAAEj0C,CAAC,EAAE,EAAE;YACpC,MAAMk0C,WAAW,GAAG9iC,IAAI,CAACe,MAAM,CAAC;YAChC,MAAM88B,CAAC,GAAG79B,IAAI,CAACe,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC;YAC\u002FB,MAAM1D,CAAC,GAAG2C,IAAI,CAACe,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE;YAC\u002FB,IAAI6\u002FB,IAAI,GAAG\u002FC,CAAC,EAAE;cACZ+C,IAAI,GAAG\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\u002FD;IACA,IAAI,CAAC\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\u002FB,KAAK;IACLC,MAAM;IACNm\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\u002F\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\u002F\u002FC,MAAM,GAAC,CAAC,EAAC;QAAC+\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\u002FC,QAAQ,CAACy\u002FC,GAAG,EAACG,MAAM,CAAC,CAAC;MAAA;MAAC,IAAIx\u002FC,GAAG,GAAC,EAAE;MAAC,OAAMq\u002FC,GAAG,GAACG,MAAM,EAAC;QAAC,IAAIC,EAAE,GAACL,WAAW,CAACC,GAAG,EAAE,CAAC;QAAC,IAAG,EAAEI,EAAE,GAAC,GAAG,CAAC,EAAC;UAACz\u002FC,GAAG,IAAEb,MAAM,CAACC,YAAY,CAACqgD,EAAE,CAAC;UAAC;QAAQ;QAAC,IAAIC,EAAE,GAACN,WAAW,CAACC,GAAG,EAAE,CAAC,GAAC,EAAE;QAAC,IAAG,CAACI,EAAE,GAAC,GAAG,KAAG,GAAG,EAAC;UAACz\u002FC,GAAG,IAAEb,MAAM,CAACC,YAAY,CAAC,CAACqgD,EAAE,GAAC,EAAE,KAAG,CAAC,GAACC,EAAE,CAAC;UAAC;QAAQ;QAAC,IAAIC,EAAE,GAACP,WAAW,CAACC,GAAG,EAAE,CAAC,GAAC,EAAE;QAAC,IAAG,CAACI,EAAE,GAAC,GAAG,KAAG,GAAG,EAAC;UAACA,EAAE,GAAC,CAACA,EAAE,GAAC,EAAE,KAAG,EAAE,GAACC,EAAE,IAAE,CAAC,GAACC,EAAE;QAAA,CAAC,MAAI;UAACF,EAAE,GAAC,CAACA,EAAE,GAAC,CAAC,KAAG,EAAE,GAACC,EAAE,IAAE,EAAE,GAACC,EAAE,IAAE,CAAC,GAACP,WAAW,CAACC,GAAG,EAAE,CAAC,GAAC,EAAE;QAAA;QAAC,IAAGI,EAAE,GAAC,KAAK,EAAC;UAACz\u002FC,GAAG,IAAEb,MAAM,CAACC,YAAY,CAACqgD,EAAE,CAAC;QAAA,CAAC,MAAI;UAAC,IAAI3tC,EAAE,GAAC2tC,EAAE,GAAC,KAAK;UAACz\u002FC,GAAG,IAAEb,MAAM,CAACC,YAAY,CAAC,KAAK,GAAC0S,EAAE,IAAE,EAAE,EAAC,KAAK,GAACA,EAAE,GAAC,IAAI,CAAC;QAAA;MAAC;MAAC,OAAO9R,GAAG;IAAA,CAAC;IAAC,IAAI4\u002FC,SAAS,GAACA,CAAC\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\u002FB,CAAC,CAAC;YACxCA,CAAC,GAAG0\u002FB,mBAAmB,CAAC1\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\u002FC,KAAK,GAAG,CAAC7\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\u002FJ,SAAS,CAAC\u002FM,CAAC,CAAC;UAE1C,MAAM+E,EAAE,GAAGy\u002FC,cAAc,CAACvpD,MAAM;UAChC,IAAI8J,EAAE,KAAK,CAAC,EAAE;YACZ;UACF;UACA,KAAK,IAAIvH,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGuH,EAAE,EAAEvH,CAAC,EAAE,EAAE;YAC3BuS,EAAE,GAAGy0C,cAAc,CAAChnD,CAAC,CAAC;YACtB,IAAIuS,EAAE,KAAKq0C,GAAG,IAAII,cAAc,CAAChnD,CAAC,GAAG,CAAC,CAAC,KAAK4mD,GAAG,EAAE;cAW\u002FC;YACF;YACA,IAAIr0C,EAAE,KAAKm0C,EAAE,IAAIn0C,EAAE,KAAKo0C,EAAE,KAAKp0C,EAAE,GAAGk0C,KAAK,IAAIl0C,EAAE,GAAG,IAAI,CAAC,EAAE;cAGvDu0C,KAAK,GAAG,CAAC;cACT;YACF;UACF;UAEA,IAAIA,KAAK,KAAK,CAAC,EAAE;YACf;UACF;UACA,IAAI,CAACD,aAAa,EAAE;YAClBnqD,IAAI,CACF,kEACF,CAAC;YACD;UACF;UAGA,MAAMuqD,QAAQ,GAAG,IAAIC,KAAK,CACxB,IAAI5vC,MAAM,CAAC0vC,cAAc,CAACjjD,KAAK,CAAC,CAAC,CAAC,EAClC8iD,aACF,CAAC;UAEDI,QAAQ,CAACE,cAAc,GAAG,MAAM,CAAC,CAAC;UAClC,IAAIC,OAAO,GAAG,CAAC;UAEf,OAAO,IAAI,EAAE;YACX,MAAMC,OAAO,GAAGJ,QAAQ,CAACjB,MAAM,CAAC,CAAC;YAEjC,IAAIqB,OAAO,KAAKh9C,GAAG,EAAE;cACnBy8C,KAAK,GAAG,CAAC;cACT;YACF;YACA,IAAIO,OAAO,YAAY18C,GAAG,EAAE;cAC1B,MAAM28C,YAAY,GAAGT,aAAa,CAACQ,OAAO,CAACz8C,GAAG,CAAC;cAC\u002FC,IAAI,CAAC08C,YAAY,EAAE;gBAGjBR,KAAK,GAAG,CAAC;gBACT;cACF,CAAC,MAAM,IACLQ,YAAY,CAACC,YAAY,GACrBH,OAAO,IAAIE,YAAY,CAACF,OAAO,GAC\u002FBA,OAAO,KAAKE,YAAY,CAACF,OAAO,EACpC;gBACA;cACF;cACAA,OAAO,GAAG,CAAC;cACX;YACF;YACAA,OAAO,EAAE;UACX;UAEA,IAAIN,KAAK,KAAK,CAAC,EAAE;YACf;UACF;QACF,CAAC,MAAM;UACLA,KAAK,GAAG,CAAC;QACX;MACF;IACF;IAEA,IAAIv0C,EAAE,KAAK,CAAC,CAAC,EAAE;MACb7V,IAAI,CACF,8BAA8B,GAC5B,iEACJ,CAAC;MACD,IAAIqqD,UAAU,EAAE;QACdrqD,IAAI,CAAC,0DAA0D,CAAC;QAChE4c,MAAM,CAACpJ,IAAI,CAAC,EAAEoJ,MAAM,CAAChK,GAAG,GAAGy3C,UAAU,CAAC,CAAC;MACzC;IACF;IAEA,IAAInV,SAAS,GAAG,CAAC;IACjBt4B,MAAM,CAACpJ,IAAI,CAAC,CAAC0hC,SAAS,CAAC;IACvBr\u002FB,EAAE,GAAG+G,MAAM,CAAClK,QAAQ,CAAC,CAAC;IACtBkK,MAAM,CAACpJ,IAAI,CAAC0hC,SAAS,CAAC;IAItB,IAAI,CAACt\u002FB,YAAY,CAACC,EAAE,CAAC,EAAE;MACrBq\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\u002FvC,MAAM,CAAC\u002FJ,SAAS,CAACw5C,iBAAiB,CAAC;MACrD,MAAMO,UAAU,GAAGD,SAAS,CAAC5rD,MAAM,GAAGurD,eAAe;MAErD,IAAIM,UAAU,IAAI,CAAC,EAAE;QACnB;MACF;MACA,IAAIh6C,GAAG,GAAG,CAAC;MACX,OAAOA,GAAG,GAAGg6C,UAAU,EAAE;QACvB,IAAIprC,CAAC,GAAG,CAAC;QACT,OAAOA,CAAC,GAAGgrC,SAAS,IAAIG,SAAS,CAAC\u002F5C,GAAG,GAAG4O,CAAC,CAAC,KAAK+qC,aAAa,CAAC\u002FqC,CAAC,CAAC,EAAE;UAC\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\u002FpD,CAAC,CAAC,CAAC;QAC\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EAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EA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\u002FB,IAAI,GAAGu\u002FB,SAAS;EACzB;EAEAv6C,SAASA,CAAA,EAAG;IACV,IAAI26C,QAAQ,GAAG,CAAC;IAChB,IAAIjwC,IAAI,GAAG,KAAK;IAChB,MAAM5a,MAAM,GAAG,IAAI,CAACA,MAAM;IAC1BA,MAAM,CAACtC,MAAM,GAAG,CAAC;IAEjB,IAAI8U,EAAE,GAAG,IAAI,CAACq3C,QAAQ,CAAC,CAAC;IACxB,OAAO,IAAI,EAAE;MACX,IAAIiB,YAAY,GAAG,KAAK;MACxB,QAAQt4C,EAAE,GAAG,CAAC;QACZ,KAAK,CAAC,CAAC;UACL7V,IAAI,CAAC,qBAAqB,CAAC;UAC3Bie,IAAI,GAAG,IAAI;UACX;QACF,KAAK,IAAI;UACP,EAAEiwC,QAAQ;UACV7qD,MAAM,CAACO,IAAI,CAAC,GAAG,CAAC;UAChB;QACF,KAAK,IAAI;UACP,IAAI,EAAEsqD,QAAQ,KAAK,CAAC,EAAE;YACpB,IAAI,CAAChB,QAAQ,CAAC,CAAC;YACfjvC,IAAI,GAAG,IAAI;UACb,CAAC,MAAM;YACL5a,MAAM,CAACO,IAAI,CAAC,GAAG,CAAC;UAClB;UACA;QACF,KAAK,IAAI;UACPiS,EAAE,GAAG,IAAI,CAACq3C,QAAQ,CAAC,CAAC;UACpB,QAAQr3C,EAAE;YACR,KAAK,CAAC,CAAC;cACL7V,IAAI,CAAC,qBAAqB,CAAC;cAC3Bie,IAAI,GAAG,IAAI;cACX;YACF,KAAK,IAAI;cACP5a,MAAM,CAACO,IAAI,CAAC,IAAI,CAAC;cACjB;YACF,KAAK,IAAI;cACPP,MAAM,CAACO,IAAI,CAAC,IAAI,CAAC;cACjB;YACF,KAAK,IAAI;cACPP,MAAM,CAACO,IAAI,CAAC,IAAI,CAAC;cACjB;YACF,KAAK,IAAI;cACPP,MAAM,CAACO,IAAI,CAAC,IAAI,CAAC;cACjB;YACF,KAAK,IAAI;cACPP,MAAM,CAACO,IAAI,CAAC,IAAI,CAAC;cACjB;YACF,KAAK,IAAI;YACT,KAAK,IAAI;YACT,KAAK,IAAI;cACPP,MAAM,CAACO,IAAI,CAACV,MAAM,CAACC,YAAY,CAAC0S,EAAE,CAAC,CAAC;cACpC;YACF,KAAK,IAAI;YACT,KAAK,IAAI;YACT,KAAK,IAAI;YACT,KAAK,IAAI;YACT,KAAK,IAAI;YACT,KAAK,IAAI;YACT,KAAK,IAAI;YACT,KAAK,IAAI;cACP,IAAInM,CAAC,GAAGmM,EAAE,GAAG,IAAI;cACjBA,EAAE,GAAG,IAAI,CAACq3C,QAAQ,CAAC,CAAC;cACpBiB,YAAY,GAAG,IAAI;cACnB,IAAIt4C,EAAE,IAAgB,IAAI,IAAIA,EAAE,IAAgB,IAAI,EAAE;gBACpDnM,CAAC,GAAG,CAACA,CAAC,IAAI,CAAC,KAAKmM,EAAE,GAAG,IAAI,CAAC;gBAC1BA,EAAE,GAAG,IAAI,CAACq3C,QAAQ,CAAC,CAAC;gBACpB,IAAIr3C,EAAE,IAAgB,IAAI,IAAIA,EAAE,IAAgB,IAAI,EAAE;kBACpDs4C,YAAY,GAAG,KAAK;kBACpBzkD,CAAC,GAAG,CAACA,CAAC,IAAI,CAAC,KAAKmM,EAAE,GAAG,IAAI,CAAC;gBAC5B;cACF;cACAxS,MAAM,CAACO,IAAI,CAACV,MAAM,CAACC,YAAY,CAACuG,CAAC,CAAC,CAAC;cACnC;YACF,KAAK,IAAI;cACP,IAAI,IAAI,CAACgkD,QAAQ,CAAC,CAAC,KAAgB,IAAI,EAAE;gBACvC,IAAI,CAACR,QAAQ,CAAC,CAAC;cACjB;cACA;YACF,KAAK,IAAI;cACP;YACF;cACE7pD,MAAM,CAACO,IAAI,CAACV,MAAM,CAACC,YAAY,CAAC0S,EAAE,CAAC,CAAC;cACpC;UACJ;UACA;QACF;UACExS,MAAM,CAACO,IAAI,CAACV,MAAM,CAACC,YAAY,CAAC0S,EAAE,CAAC,CAAC;UACpC;MACJ;MACA,IAAIoI,IAAI,EAAE;QACR;MACF;MACA,IAAI,CAACkwC,YAAY,EAAE;QACjBt4C,EAAE,GAAG,IAAI,CAACq3C,QAAQ,CAAC,CAAC;MACtB;IACF;IACA,OAAO7pD,MAAM,CAACQ,IAAI,CAAC,EAAE,CAAC;EACxB;EAEAuqD,OAAOA,CAAA,EAAG;IACR,IAAIv4C,EAAE,EAAEw4C,UAAU;IAClB,MAAMhrD,MAAM,GAAG,IAAI,CAACA,MAAM;IAC1BA,MAAM,CAACtC,MAAM,GAAG,CAAC;IAEjB,OAAO,CAAC8U,EAAE,GAAG,IAAI,CAACq3C,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAACI,YAAY,CAACz3C,EAAE,CAAC,EAAE;MACvD,IAAIA,EAAE,KAAiB,IAAI,EAAE;QAC3BA,EAAE,GAAG,IAAI,CAACq3C,QAAQ,CAAC,CAAC;QACpB,IAAII,YAAY,CAACz3C,EAAE,CAAC,EAAE;UACpB7V,IAAI,CACF,iBAAiB,GACf,6DACJ,CAAC;UACDqD,MAAM,CAACO,IAAI,CAAC,GAAG,CAAC;UAChB;QACF;QACA,MAAM8F,CAAC,GAAG6jD,UAAU,CAAC13C,EAAE,CAAC;QACxB,IAAInM,CAAC,KAAK,CAAC,CAAC,EAAE;UACZ2kD,UAAU,GAAGx4C,EAAE;UACfA,EAAE,GAAG,IAAI,CAACq3C,QAAQ,CAAC,CAAC;UACpB,MAAMlkD,EAAE,GAAGukD,UAAU,CAAC13C,EAAE,CAAC;UACzB,IAAI7M,EAAE,KAAK,CAAC,CAAC,EAAE;YACbhJ,IAAI,CACD,iCAAgCkD,MAAM,CAACC,YAAY,CAAC0S,EAAE,CAAE,IAAG,GAC1D,wBACJ,CAAC;YACDxS,MAAM,CAACO,IAAI,CAAC,GAAG,EAAEV,MAAM,CAACC,YAAY,CAACkrD,UAAU,CAAC,CAAC;YACjD,IAAIf,YAAY,CAACz3C,EAAE,CAAC,EAAE;cACpB;YACF;YACAxS,MAAM,CAACO,IAAI,CAACV,MAAM,CAACC,YAAY,CAAC0S,EAAE,CAAC,CAAC;YACpC;UACF;UACAxS,MAAM,CAACO,IAAI,CAACV,MAAM,CAACC,YAAY,CAAEuG,CAAC,IAAI,CAAC,GAAIV,EAAE,CAAC,CAAC;QACjD,CAAC,MAAM;UACL3F,MAAM,CAACO,IAAI,CAAC,GAAG,EAAEV,MAAM,CAACC,YAAY,CAAC0S,EAAE,CAAC,CAAC;QAC3C;MACF,CAAC,MAAM;QACLxS,MAAM,CAACO,IAAI,CAACV,MAAM,CAACC,YAAY,CAAC0S,EAAE,CAAC,CAAC;MACtC;IACF;IACA,IAAIxS,MAAM,CAACtC,MAAM,GAAG,GAAG,EAAE;MACvBf,IAAI,CAAE,kDAAiDqD,MAAM,CAACtC,MAAO,EAAC,CAAC;IACzE;IACA,OAAOiN,IAAI,CAACzB,GAAG,CAAClJ,MAAM,CAACQ,IAAI,CAAC,EAAE,CAAC,CAAC;EAClC;EAKA4mD,cAAcA,CAAC50C,EAAE,EAAE;IACjB,MAAMy4C,uBAAuB,GAAG,CAAC;IAEjC,IAAI,IAAI,CAACd,iBAAiB,EAAE,KAAKc,uBAAuB,EAAE;MACxDtuD,IAAI,CAAC,wDAAwD,CAAC;MAC9D;IACF;IACA,IAAI,IAAI,CAACwtD,iBAAiB,GAAGc,uBAAuB,EAAE;MAIpD;IACF;IACAtuD,IAAI,CAAE,8CAA6C6V,EAAG,EAAC,CAAC;EAC1D;EAEA04C,YAAYA,CAAA,EAAG;IACb,MAAMlrD,MAAM,GAAG,IAAI,CAACA,MAAM;IAC1BA,MAAM,CAACtC,MAAM,GAAG,CAAC;IACjB,IAAI8U,EAAE,GAAG,IAAI,CAAC43C,WAAW;IACzB,IAAIe,UAAU,GAAG,IAAI;IACrB,IAAIt9B,UAAU,EAAEu9B,WAAW;IAC3B,IAAI,CAACjB,iBAAiB,GAAG,CAAC;IAE1B,OAAO,IAAI,EAAE;MACX,IAAI33C,EAAE,GAAG,CAAC,EAAE;QACV7V,IAAI,CAAC,yBAAyB,CAAC;QAC\u002FB;MACF,CAAC,MAAM,IAAI6V,EAAE,KAAiB,IAAI,EAAE;QAClC,IAAI,CAACq3C,QAAQ,CAAC,CAAC;QACf;MACF,CAAC,MAAM,IAAII,YAAY,CAACz3C,EAAE,CAAC,KAAK,CAAC,EAAE;QACjCA,EAAE,GAAG,IAAI,CAACq3C,QAAQ,CAAC,CAAC;QACpB;MACF,CAAC,MAAM;QACL,IAAIsB,UAAU,EAAE;UACdt9B,UAAU,GAAGq8B,UAAU,CAAC13C,EAAE,CAAC;UAC3B,IAAIqb,UAAU,KAAK,CAAC,CAAC,EAAE;YACrB,IAAI,CAACu5B,cAAc,CAAC50C,EAAE,CAAC;YACvBA,EAAE,GAAG,IAAI,CAACq3C,QAAQ,CAAC,CAAC;YACpB;UACF;QACF,CAAC,MAAM;UACLuB,WAAW,GAAGlB,UAAU,CAAC13C,EAAE,CAAC;UAC5B,IAAI44C,WAAW,KAAK,CAAC,CAAC,EAAE;YACtB,IAAI,CAAChE,cAAc,CAAC50C,EAAE,CAAC;YACvBA,EAAE,GAAG,IAAI,CAACq3C,QAAQ,CAAC,CAAC;YACpB;UACF;UACA7pD,MAAM,CAACO,IAAI,CAACV,MAAM,CAACC,YAAY,CAAE+tB,UAAU,IAAI,CAAC,GAAIu9B,WAAW,CAAC,CAAC;QACnE;QACAD,UAAU,GAAG,CAACA,UAAU;QACxB34C,EAAE,GAAG,IAAI,CAACq3C,QAAQ,CAAC,CAAC;MACtB;IACF;IACA,OAAO7pD,MAAM,CAACQ,IAAI,CAAC,EAAE,CAAC;EACxB;EAEAylD,MAAMA,CAAA,EAAG;IAEP,IAAIoF,OAAO,GAAG,KAAK;IACnB,IAAI74C,EAAE,GAAG,IAAI,CAAC43C,WAAW;IACzB,OAAO,IAAI,EAAE;MACX,IAAI53C,EAAE,GAAG,CAAC,EAAE;QACV,OAAOlI,GAAG;MACZ;MACA,IAAI+gD,OAAO,EAAE;QACX,IAAI74C,EAAE,KAAgB,IAAI,IAAIA,EAAE,KAAgB,IAAI,EAAE;UACpD64C,OAAO,GAAG,KAAK;QACjB;MACF,CAAC,MAAM,IAAI74C,EAAE,KAAiB,IAAI,EAAE;QAClC64C,OAAO,GAAG,IAAI;MAChB,CAAC,MAAM,IAAIpB,YAAY,CAACz3C,EAAE,CAAC,KAAK,CAAC,EAAE;QACjC;MACF;MACAA,EAAE,GAAG,IAAI,CAACq3C,QAAQ,CAAC,CAAC;IACtB;IAGA,QAAQr3C,EAAE,GAAG,CAAC;MACZ,KAAK,IAAI;MACT,KAAK,IAAI;MACT,KAAK,IAAI;MACT,KAAK,IAAI;MACT,KAAK,IAAI;MACT,KAAK,IAAI;MACT,KAAK,IAAI;MACT,KAAK,IAAI;MACT,KAAK,IAAI;MACT,KAAK,IAAI;MACT,KAAK,IAAI;MACT,KAAK,IAAI;MACT,KAAK,IAAI;QACP,OAAO,IAAI,CAAC83C,SAAS,CAAC,CAAC;MACzB,KAAK,IAAI;QACP,OAAO,IAAI,CAACp6C,SAAS,CAAC,CAAC;MACzB,KAAK,IAAI;QACP,OAAO,IAAI,CAAC66C,OAAO,CAAC,CAAC;MAEvB,KAAK,IAAI;QACP,IAAI,CAAClB,QAAQ,CAAC,CAAC;QACf,OAAOj\u002FC,GAAG,CAAC1B,GAAG,CAAC,GAAG,CAAC;MACrB,KAAK,IAAI;QACP,IAAI,CAAC2gD,QAAQ,CAAC,CAAC;QACf,OAAOj\u002FC,GAAG,CAAC1B,GAAG,CAAC,GAAG,CAAC;MAErB,KAAK,IAAI;QACPsJ,EAAE,GAAG,IAAI,CAACq3C,QAAQ,CAAC,CAAC;QACpB,IAAIr3C,EAAE,KAAK,IAAI,EAAE;UAEf,IAAI,CAACq3C,QAAQ,CAAC,CAAC;UACf,OAAOj\u002FC,GAAG,CAAC1B,GAAG,CAAC,IAAI,CAAC;QACtB;QACA,OAAO,IAAI,CAACgiD,YAAY,CAAC,CAAC;MAE5B,KAAK,IAAI;QACP14C,EAAE,GAAG,IAAI,CAACq3C,QAAQ,CAAC,CAAC;QACpB,IAAIr3C,EAAE,KAAK,IAAI,EAAE;UACf,IAAI,CAACq3C,QAAQ,CAAC,CAAC;UACf,OAAOj\u002FC,GAAG,CAAC1B,GAAG,CAAC,IAAI,CAAC;QACtB;QACA,OAAO0B,GAAG,CAAC1B,GAAG,CAAC,GAAG,CAAC;MACrB,KAAK,IAAI;QACP,IAAI,CAAC2gD,QAAQ,CAAC,CAAC;QACf,OAAOj\u002FC,GAAG,CAAC1B,GAAG,CAAC,GAAG,CAAC;MACrB,KAAK,IAAI;QACP,IAAI,CAAC2gD,QAAQ,CAAC,CAAC;QACf,OAAOj\u002FC,GAAG,CAAC1B,GAAG,CAAC,GAAG,CAAC;MACrB,KAAK,IAAI;QAKP,IAAI,CAAC2gD,QAAQ,CAAC,CAAC;QACf,MAAM,IAAItqD,WAAW,CAAE,sBAAqBiT,EAAG,EAAC,CAAC;IACrD;IAGA,IAAI9R,GAAG,GAAGb,MAAM,CAACC,YAAY,CAAC0S,EAAE,CAAC;IAGjC,IAAIA,EAAE,GAAG,IAAI,IAAIA,EAAE,GAAG,IAAI,EAAE;MAC1B,MAAM84C,MAAM,GAAG,IAAI,CAACjB,QAAQ,CAAC,CAAC;MAC9B,IAAIiB,MAAM,IAAI,IAAI,IAAIA,MAAM,IAAI,IAAI,EAAE;QACpC,IAAI,CAACzB,QAAQ,CAAC,CAAC;QACf,OAAOj\u002FC,GAAG,CAAC1B,GAAG,CAACxI,GAAG,CAAC;MACrB;IACF;IACA,MAAMomD,aAAa,GAAG,IAAI,CAACA,aAAa;IACxC,IAAIyE,iBAAiB,GAAGzE,aAAa,GAAGpmD,GAAG,CAAC,KAAKf,SAAS;IAC1D,OAAO,CAAC6S,EAAE,GAAG,IAAI,CAACq3C,QAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAACI,YAAY,CAACz3C,EAAE,CAAC,EAAE;MAGvD,MAAMg5C,eAAe,GAAG9qD,GAAG,GAAGb,MAAM,CAACC,YAAY,CAAC0S,EAAE,CAAC;MACrD,IAAI+4C,iBAAiB,IAAIzE,aAAa,CAAC0E,eAAe,CAAC,KAAK7rD,SAAS,EAAE;QACrE;MACF;MACA,IAAIe,GAAG,CAAChD,MAAM,KAAK,GAAG,EAAE;QACtB,MAAM,IAAI6B,WAAW,CAAE,2BAA0BmB,GAAG,CAAChD,MAAO,EAAC,CAAC;MAChE;MACAgD,GAAG,GAAG8qD,eAAe;MACrBD,iBAAiB,GAAGzE,aAAa,GAAGpmD,GAAG,CAAC,KAAKf,SAAS;IACxD;IACA,IAAIe,GAAG,KAAK,MAAM,EAAE;MAClB,OAAO,IAAI;IACb;IACA,IAAIA,GAAG,KAAK,OAAO,EAAE;MACnB,OAAO,KAAK;IACd;IACA,IAAIA,GAAG,KAAK,MAAM,EAAE;MAClB,OAAO,IAAI;IACb;IAEA,IAAIA,GAAG,KAAK,IAAI,EAAE;MAGhB,IAAI,CAAC2nD,mBAAmB,GAAG,IAAI,CAAC9uC,MAAM,CAAChK,GAAG;IAC5C;IAEA,OAAO3E,GAAG,CAAC1B,GAAG,CAACxI,GAAG,CAAC;EACrB;EAEAkpD,cAAcA,CAAA,EAAG;IACf,IAAIp3C,EAAE,GAAG,IAAI,CAAC43C,WAAW;IACzB,OAAO53C,EAAE,IAAI,CAAC,EAAE;MACd,IAAIA,EAAE,KAAgB,IAAI,EAAE;QAC1BA,EAAE,GAAG,IAAI,CAACq3C,QAAQ,CAAC,CAAC;QACpB,IAAIr3C,EAAE,KAAgB,IAAI,EAAE;UAC1B,IAAI,CAACq3C,QAAQ,CAAC,CAAC;QACjB;QACA;MACF,CAAC,MAAM,IAAIr3C,EAAE,KAAgB,IAAI,EAAE;QACjC,IAAI,CAACq3C,QAAQ,CAAC,CAAC;QACf;MACF;MACAr3C,EAAE,GAAG,IAAI,CAACq3C,QAAQ,CAAC,CAAC;IACtB;EACF;AACF;AAEA,MAAM4B,aAAa,CAAC;EAClB,OAAOvqD,MAAMA,CAACqY,MAAM,EAAE;IACpB,SAASmyC,MAAMA,CAACC,OAAO,EAAE\u002FsD,IAAI,EAAEgtD,cAAc,GAAG,KAAK,EAAE;MACrD,MAAM5tD,GAAG,GAAG2tD,OAAO,CAACziD,GAAG,CAACtK,IAAI,CAAC;MAC7B,IAAIxC,MAAM,CAACC,SAAS,CAAC2B,GAAG,CAAC,KAAK4tD,cAAc,GAAG5tD,GAAG,IAAI,CAAC,GAAGA,GAAG,GAAG,CAAC,CAAC,EAAE;QAClE,OAAOA,GAAG;MACZ;MACA,MAAM,IAAInB,KAAK,CACZ,QAAO+B,IAAK,mCAAkC,GAC7C,wBACJ,CAAC;IACH;IAEA,SAASitD,QAAQA,CAACF,OAAO,EAAE;MACzB,MAAMG,KAAK,GAAGH,OAAO,CAACziD,GAAG,CAAC,GAAG,CAAC;MAC9B,IAAI6iD,WAAW;MAEf,IACExpD,KAAK,CAACyJ,OAAO,CAAC8\u002FC,KAAK,CAAC,KACnB,CAACC,WAAW,GAAGD,KAAK,CAACpuD,MAAM,MAAM,CAAC,IAAIquD,WAAW,KAAK,CAAC,CAAC,EACzD;QACA,KAAK,IAAI\u002FiB,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAG+iB,WAAW,EAAE\u002FiB,KAAK,EAAE,EAAE;UAChD,MAAMgjB,IAAI,GAAGF,KAAK,CAAC9iB,KAAK,CAAC;UACzB,IAAI,EAAE5sC,MAAM,CAACC,SAAS,CAAC2vD,IAAI,CAAC,IAAIA,IAAI,GAAG,CAAC,CAAC,EAAE;YACzC,MAAM,IAAInvD,KAAK,CACZ,SAAQmsC,KAAM,+CACjB,CAAC;UACH;QACF;QACA,OAAO8iB,KAAK;MACd;MACA,MAAM,IAAIjvD,KAAK,CAAC,wDAAwD,CAAC;IAC3E;IAEA,MAAMovD,MAAM,GAAG,IAAIxG,MAAM,CAAC;MACxBC,KAAK,EAAE,IAAIyB,KAAK,CAAC5tC,MAAM,CAAC;MACxBvO,IAAI,EAAE;IACR,CAAC,CAAC;IACF,MAAMkhD,IAAI,GAAGD,MAAM,CAAChG,MAAM,CAAC,CAAC;IAC5B,MAAMkG,IAAI,GAAGF,MAAM,CAAChG,MAAM,CAAC,CAAC;IAC5B,MAAMmG,IAAI,GAAGH,MAAM,CAAChG,MAAM,CAAC,CAAC;IAC5B,MAAM0F,OAAO,GAAGM,MAAM,CAAChG,MAAM,CAAC,CAAC;IAC\u002FB,IAAIjoD,GAAG,EAAEN,MAAM;IACf,IACE,EACEtB,MAAM,CAACC,SAAS,CAAC6vD,IAAI,CAAC,IACtB9vD,MAAM,CAACC,SAAS,CAAC8vD,IAAI,CAAC,IACtBx9C,KAAK,CAACy9C,IAAI,EAAE,KAAK,CAAC,IAClBT,OAAO,YAAY5gD,IAAI,IACvB,QAAQ\u002FM,GAAG,GAAG2tD,OAAO,CAACziD,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,QAAQ,IACrDlL,GAAG,GAAG,CAAC,CACR,EACD;MACA,OAAO,IAAI;IACb,CAAC,MAAM,IAAI,CAACN,MAAM,GAAGguD,MAAM,CAACC,OAAO,EAAE,GAAG,CAAC,MAAMpyC,MAAM,CAAC7b,MAAM,EAAE;MAC5D,MAAM,IAAIb,KAAK,CACb,oDAAoD,GAClD,mCACJ,CAAC;IACH;IACA,OAAO;MACLa,MAAM;MACNouD,KAAK,EAAED,QAAQ,CAACF,OAAO,CAAC;MACxBU,iBAAiB,EAAEX,MAAM,CAACC,OAAO,EAAE,GAAG,CAAC;MACvCW,QAAQ,EAAEZ,MAAM,CAACC,OAAO,EAAE,GAAG,CAAC;MAC9BY,QAAQ,EAAEb,MAAM,CAACC,OAAO,EAAE,GAAG,CAAC;MAC9Ba,qBAAqB,EAAEd,MAAM,CAACC,OAAO,EAAE,GAAG,CAAC;MAC3Cc,SAAS,EAAEd,OAAO,CAACr\u002FC,GAAG,CAAC,GAAG,CAAC,GACvBo\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\u002FtD,WAAWA,CAAC2sB,QAAQ,EAAE\u002FoB,CAAC,EAAE;IACvB,KAAK,CAAC,CAAC;IAEP,IAAI,CAAC+oB,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACO,iBAAiB,CAACtpB,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;EACtC;EAEAwpB,WAAWA,CAAC+gC,GAAG,EAAEC,IAAI,EAAEC,MAAM,EAAE;IAC7BtwD,WAAW,CAAC,6BAA6B,CAAC;EAC5C;EAEAsvB,UAAUA,CAAC8gC,GAAG,EAAEC,IAAI,EAAEC,MAAM,EAAE;IAC5BtwD,WAAW,CAAC,4BAA4B,CAAC;EAC3C;EAEAwwD,iBAAiBA,CAACJ,GAAG,EAAEC,IAAI,EAAEnb,KAAK,EAAE;IAClCl1C,WAAW,CAAC,mCAAmC,CAAC;EAClD;EAEAovB,MAAMA,CAAC7O,GAAG,EAAEkwC,GAAG,EAAE;IACfzwD,WAAW,CAAC,2BAA2B,CAAC;EAC1C;EAEAgU,MAAMA,CAAC5R,IAAI,EAAE;IACX,OAAO5C,MAAM,CAACC,SAAS,CAAC2C,IAAI,CAAC,IAAIA,IAAI,IAAI,MAAM,GAAGA,IAAI,GAAGW,SAAS;EACpE;EAEA2tD,QAAQA,CAACtuD,IAAI,EAAE;IACb,OAAO5C,MAAM,CAACC,SAAS,CAAC2C,IAAI,CAAC,IAAIA,IAAI,IAAI,MAAM;EACjD;EAEAuN,OAAOA,CAACC,QAAQ,EAAE;IAChB,KAAK,IAAIvM,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAI,MAAM,EAAEA,CAAC,EAAE,EAAE;MAChCuM,QAAQ,CAACvM,CAAC,EAAEA,CAAC,CAAC;IAChB;EACF;EAEAstD,UAAUA,CAACrvD,KAAK,EAAE;IAChB,OAAO9B,MAAM,CAACC,SAAS,CAAC6B,KAAK,CAAC,IAAIA,KAAK,IAAI,MAAM,GAAGA,KAAK,GAAG,CAAC,CAAC;EAChE;EAEAuvD,MAAMA,CAAA,EAAG;IAEP,MAAMxsD,GAAG,GAAG,IAAIsB,KAAK,CAAC,OAAO,CAAC;IAC9B,KAAK,IAAItC,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAI,MAAM,EAAEA,CAAC,EAAE,EAAE;MAChCgB,GAAG,CAAChB,CAAC,CAAC,GAAGA,CAAC;IACZ;IACA,OAAOgB,GAAG;EACZ;EAEA,IAAIvD,MAAMA,CAAA,EAAG;IACX,OAAO,OAAO;EAChB;EAGA,IAAIqwD,cAAcA,CAAA,EAAG;IACnBnxD,WAAW,CAAC,mCAAmC,CAAC;EAClD;AACF;AAEA,SAASqxD,QAAQA,CAACvtD,GAAG,EAAE;EACrB,IAAI6D,CAAC,GAAG,CAAC;EACT,KAAK,IAAItE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGS,GAAG,CAAChD,MAAM,EAAEuC,CAAC,EAAE,EAAE;IACnCsE,CAAC,GAAIA,CAAC,IAAI,CAAC,GAAI7D,GAAG,CAACE,UAAU,CAACX,CAAC,CAAC;EAClC;EACA,OAAOsE,CAAC,KAAK,CAAC;AAChB;AAEA,SAAS2pD,YAAYA,CAAClwD,GAAG,EAAE;EACzB,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE;IAC3B,MAAM,IAAIuB,WAAW,CAAC,kCAAkC,CAAC;EAC3D;AACF;AAEA,SAAS4uD,SAASA,CAACnwD,GAAG,EAAE;EACtB,IAAI,CAAC5B,MAAM,CAACC,SAAS,CAAC2B,GAAG,CAAC,EAAE;IAC1B,MAAM,IAAIuB,WAAW,CAAC,+BAA+B,CAAC;EACxD;AACF;AAEA,SAAS6uD,WAAWA,CAAC\u002FiC,IAAI,EAAEq6B,KAAK,EAAE;EAChC,OAAO,IAAI,EAAE;IACX,IAAI1nD,GAAG,GAAG0nD,KAAK,CAACO,MAAM,CAAC,CAAC;IACxB,IAAIjoD,GAAG,KAAKsM,GAAG,EAAE;MACf;IACF;IACA,IAAIqE,KAAK,CAAC3Q,GAAG,EAAE,WAAW,CAAC,EAAE;MAC3B;IACF;IACAkwD,YAAY,CAAClwD,GAAG,CAAC;IACjB,MAAMmf,GAAG,GAAG8wC,QAAQ,CAACjwD,GAAG,CAAC;IACzBA,GAAG,GAAG0nD,KAAK,CAACO,MAAM,CAAC,CAAC;IAEpBiI,YAAY,CAAClwD,GAAG,CAAC;IACjB,MAAMqvD,GAAG,GAAGrvD,GAAG;IACfqtB,IAAI,CAACW,MAAM,CAAC7O,GAAG,EAAEkwC,GAAG,CAAC;EACvB;AACF;AAEA,SAASgB,YAAYA,CAAChjC,IAAI,EAAEq6B,KAAK,EAAE;EACjC,OAAO,IAAI,EAAE;IACX,IAAI1nD,GAAG,GAAG0nD,KAAK,CAACO,MAAM,CAAC,CAAC;IACxB,IAAIjoD,GAAG,KAAKsM,GAAG,EAAE;MACf;IACF;IACA,IAAIqE,KAAK,CAAC3Q,GAAG,EAAE,YAAY,CAAC,EAAE;MAC5B;IACF;IACAkwD,YAAY,CAAClwD,GAAG,CAAC;IACjB,MAAMgvD,GAAG,GAAGiB,QAAQ,CAACjwD,GAAG,CAAC;IACzBA,GAAG,GAAG0nD,KAAK,CAACO,MAAM,CAAC,CAAC;IACpBiI,YAAY,CAAClwD,GAAG,CAAC;IACjB,MAAMivD,IAAI,GAAGgB,QAAQ,CAACjwD,GAAG,CAAC;IAC1BA,GAAG,GAAG0nD,KAAK,CAACO,MAAM,CAAC,CAAC;IACpB,IAAI7pD,MAAM,CAACC,SAAS,CAAC2B,GAAG,CAAC,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE;MACpD,MAAMkvD,MAAM,GAAG9wD,MAAM,CAACC,SAAS,CAAC2B,GAAG,CAAC,GAAG6B,MAAM,CAACC,YAAY,CAAC9B,GAAG,CAAC,GAAGA,GAAG;MACrEqtB,IAAI,CAACa,UAAU,CAAC8gC,GAAG,EAAEC,IAAI,EAAEC,MAAM,CAAC;IACpC,CAAC,MAAM,IAAIv+C,KAAK,CAAC3Q,GAAG,EAAE,GAAG,CAAC,EAAE;MAC1BA,GAAG,GAAG0nD,KAAK,CAACO,MAAM,CAAC,CAAC;MACpB,MAAMnU,KAAK,GAAG,EAAE;MAChB,OAAO,CAACnjC,KAAK,CAAC3Q,GAAG,EAAE,GAAG,CAAC,IAAIA,GAAG,KAAKsM,GAAG,EAAE;QACtCwnC,KAAK,CAACvxC,IAAI,CAACvC,GAAG,CAAC;QACfA,GAAG,GAAG0nD,KAAK,CAACO,MAAM,CAAC,CAAC;MACtB;MACA56B,IAAI,CAAC+hC,iBAAiB,CAACJ,GAAG,EAAEC,IAAI,EAAEnb,KAAK,CAAC;IAC1C,CAAC,MAAM;MACL;IACF;EACF;EACA,MAAM,IAAIvyC,WAAW,CAAC,mBAAmB,CAAC;AAC5C;AAEA,SAAS+uD,YAAYA,CAACjjC,IAAI,EAAEq6B,KAAK,EAAE;EACjC,OAAO,IAAI,EAAE;IACX,IAAI1nD,GAAG,GAAG0nD,KAAK,CAACO,MAAM,CAAC,CAAC;IACxB,IAAIjoD,GAAG,KAAKsM,GAAG,EAAE;MACf;IACF;IACA,IAAIqE,KAAK,CAAC3Q,GAAG,EAAE,YAAY,CAAC,EAAE;MAC5B;IACF;IACAkwD,YAAY,CAAClwD,GAAG,CAAC;IACjB,MAAMmf,GAAG,GAAG8wC,QAAQ,CAACjwD,GAAG,CAAC;IACzBA,GAAG,GAAG0nD,KAAK,CAACO,MAAM,CAAC,CAAC;IACpBkI,SAAS,CAACnwD,GAAG,CAAC;IACd,MAAMqvD,GAAG,GAAGrvD,GAAG;IACfqtB,IAAI,CAACW,MAAM,CAAC7O,GAAG,EAAEkwC,GAAG,CAAC;EACvB;AACF;AAEA,SAASkB,aAAaA,CAACljC,IAAI,EAAEq6B,KAAK,EAAE;EAClC,OAAO,IAAI,EAAE;IACX,IAAI1nD,GAAG,GAAG0nD,KAAK,CAACO,MAAM,CAAC,CAAC;IACxB,IAAIjoD,GAAG,KAAKsM,GAAG,EAAE;MACf;IACF;IACA,IAAIqE,KAAK,CAAC3Q,GAAG,EAAE,aAAa,CAAC,EAAE;MAC7B;IACF;IACAkwD,YAAY,CAAClwD,GAAG,CAAC;IACjB,MAAMgvD,GAAG,GAAGiB,QAAQ,CAACjwD,GAAG,CAAC;IACzBA,GAAG,GAAG0nD,KAAK,CAACO,MAAM,CAAC,CAAC;IACpBiI,YAAY,CAAClwD,GAAG,CAAC;IACjB,MAAMivD,IAAI,GAAGgB,QAAQ,CAACjwD,GAAG,CAAC;IAC1BA,GAAG,GAAG0nD,KAAK,CAACO,MAAM,CAAC,CAAC;IACpBkI,SAAS,CAACnwD,GAAG,CAAC;IACd,MAAMkvD,MAAM,GAAGlvD,GAAG;IAClBqtB,IAAI,CAACY,WAAW,CAAC+gC,GAAG,EAAEC,IAAI,EAAEC,MAAM,CAAC;EACrC;AACF;AAEA,SAASsB,mBAAmBA,CAACnjC,IAAI,EAAEq6B,KAAK,EAAE;EACxC,OAAO,IAAI,EAAE;IACX,IAAI1nD,GAAG,GAAG0nD,KAAK,CAACO,MAAM,CAAC,CAAC;IACxB,IAAIjoD,GAAG,KAAKsM,GAAG,EAAE;MACf;IACF;IACA,IAAIqE,KAAK,CAAC3Q,GAAG,EAAE,mBAAmB,CAAC,EAAE;MACnC;IACF;IACA,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE;MAC3B;IACF;IACA,MAAMgvD,GAAG,GAAGiB,QAAQ,CAACjwD,GAAG,CAAC;IACzBA,GAAG,GAAG0nD,KAAK,CAACO,MAAM,CAAC,CAAC;IACpB,IAAI,OAAOjoD,GAAG,KAAK,QAAQ,EAAE;MAC3B;IACF;IACA,MAAMivD,IAAI,GAAGgB,QAAQ,CAACjwD,GAAG,CAAC;IAC1BqtB,IAAI,CAACU,iBAAiB,CAAC\u002FtB,GAAG,CAACN,MAAM,EAAEsvD,GAAG,EAAEC,IAAI,CAAC;EAC\u002FC;EACA,MAAM,IAAI1tD,WAAW,CAAC,0BAA0B,CAAC;AACnD;AAEA,SAASkvD,UAAUA,CAACpjC,IAAI,EAAEq6B,KAAK,EAAE;EAC\u002FB,MAAM1nD,GAAG,GAAG0nD,KAAK,CAACO,MAAM,CAAC,CAAC;EAC1B,IAAI7pD,MAAM,CAACC,SAAS,CAAC2B,GAAG,CAAC,EAAE;IACzBqtB,IAAI,CAACG,QAAQ,GAAG,CAAC,CAACxtB,GAAG;EACvB;AACF;AAEA,SAAS0wD,aAAaA,CAACrjC,IAAI,EAAEq6B,KAAK,EAAE;EAClC,MAAM1nD,GAAG,GAAG0nD,KAAK,CAACO,MAAM,CAAC,CAAC;EAC1B,IAAIjoD,GAAG,YAAY2M,IAAI,EAAE;IACvB0gB,IAAI,CAACzsB,IAAI,GAAGZ,GAAG,CAACY,IAAI;EACtB;AACF;AAEA,eAAe+vD,SAASA,CAACtjC,IAAI,EAAEq6B,KAAK,EAAEkJ,gBAAgB,EAAEnjC,OAAO,EAAE;EAC\u002FD,IAAIojC,QAAQ,EAAEC,eAAe;EAC7BC,OAAO,EAAE,OAAO,IAAI,EAAE;IACpB,IAAI;MACF,MAAM\u002FwD,GAAG,GAAG0nD,KAAK,CAACO,MAAM,CAAC,CAAC;MAC1B,IAAIjoD,GAAG,KAAKsM,GAAG,EAAE;QACf;MACF,CAAC,MAAM,IAAItM,GAAG,YAAY2M,IAAI,EAAE;QAC9B,IAAI3M,GAAG,CAACY,IAAI,KAAK,OAAO,EAAE;UACxB6vD,UAAU,CAACpjC,IAAI,EAAEq6B,KAAK,CAAC;QACzB,CAAC,MAAM,IAAI1nD,GAAG,CAACY,IAAI,KAAK,UAAU,EAAE;UAClC8vD,aAAa,CAACrjC,IAAI,EAAEq6B,KAAK,CAAC;QAC5B;QACAmJ,QAAQ,GAAG7wD,GAAG;MAChB,CAAC,MAAM,IAAIA,GAAG,YAAY4M,GAAG,EAAE;QAC7B,QAAQ5M,GAAG,CAAC6M,GAAG;UACb,KAAK,SAAS;YACZ,MAAMkkD,OAAO;UACf,KAAK,SAAS;YACZ,IAAIF,QAAQ,YAAYlkD,IAAI,EAAE;cAC5BmkD,eAAe,GAAGD,QAAQ,CAACjwD,IAAI;YACjC;YACA;UACF,KAAK,qBAAqB;YACxB4vD,mBAAmB,CAACnjC,IAAI,EAAEq6B,KAAK,CAAC;YAChC;UACF,KAAK,aAAa;YAChB0I,WAAW,CAAC\u002FiC,IAAI,EAAEq6B,KAAK,CAAC;YACxB;UACF,KAAK,cAAc;YACjB4I,YAAY,CAACjjC,IAAI,EAAEq6B,KAAK,CAAC;YACzB;UACF,KAAK,cAAc;YACjB2I,YAAY,CAAChjC,IAAI,EAAEq6B,KAAK,CAAC;YACzB;UACF,KAAK,eAAe;YAClB6I,aAAa,CAACljC,IAAI,EAAEq6B,KAAK,CAAC;YAC1B;QACJ;MACF;IACF,CAAC,CAAC,OAAOn+C,EAAE,EAAE;MACX,IAAIA,EAAE,YAAYsJ,oBAAoB,EAAE;QACtC,MAAMtJ,EAAE;MACV;MACA5K,IAAI,CAAC,qBAAqB,GAAG4K,EAAE,CAAC;MAChC;IACF;EACF;EAEA,IAAI,CAACkkB,OAAO,IAAIqjC,eAAe,EAAE;IAG\u002FBrjC,OAAO,GAAGqjC,eAAe;EAC3B;EACA,IAAIrjC,OAAO,EAAE;IACX,OAAOujC,UAAU,CAAC3jC,IAAI,EAAEujC,gBAAgB,EAAEnjC,OAAO,CAAC;EACpD;EACA,OAAOJ,IAAI;AACb;AAEA,eAAe2jC,UAAUA,CAAC3jC,IAAI,EAAEujC,gBAAgB,EAAEnjC,OAAO,EAAE;EACzDJ,IAAI,CAACI,OAAO,GAAG,MAAMwjC,iBAAiB,CAACxjC,OAAO,EAAEmjC,gBAAgB,CAAC;EAGjE,IAAIvjC,IAAI,CAAC0hC,kBAAkB,KAAK,CAAC,EAAE;IACjC,MAAMmC,kBAAkB,GAAG7jC,IAAI,CAACI,OAAO,CAACqhC,eAAe;IACvD,KAAK,IAAI7sD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGivD,kBAAkB,CAACxxD,MAAM,EAAEuC,CAAC,EAAE,EAAE;MAClDorB,IAAI,CAACyhC,eAAe,CAAC7sD,CAAC,CAAC,GAAGivD,kBAAkB,CAACjvD,CAAC,CAAC,CAAC+D,KAAK,CAAC,CAAC;IACzD;IACAqnB,IAAI,CAAC0hC,kBAAkB,GAAG1hC,IAAI,CAACI,OAAO,CAACshC,kBAAkB;EAC3D;EAGA1hC,IAAI,CAACI,OAAO,CAAClf,OAAO,CAAC,UAAUpL,GAAG,EAAEjD,KAAK,EAAE;IACzC,IAAI,CAACmtB,IAAI,CAACiiC,QAAQ,CAACnsD,GAAG,CAAC,EAAE;MACvBkqB,IAAI,CAACW,MAAM,CAAC7qB,GAAG,EAAEkqB,IAAI,CAACI,OAAO,CAAC7a,MAAM,CAACzP,GAAG,CAAC,CAAC;IAC5C;EACF,CAAC,CAAC;EAEF,OAAOkqB,IAAI;AACb;AAEA,eAAe4jC,iBAAiBA,CAACrwD,IAAI,EAAEgwD,gBAAgB,EAAE;EACvD,IAAIhwD,IAAI,KAAK,YAAY,EAAE;IACzB,OAAO,IAAIovD,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;EACnC,CAAC,MAAM,IAAIpvD,IAAI,KAAK,YAAY,EAAE;IAChC,OAAO,IAAIovD,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;EAClC;EACA,IAAI,CAACtB,cAAc,CAACzqD,QAAQ,CAACrD,IAAI,CAAC,EAAE;IAClC,MAAM,IAAI\u002FB,KAAK,CAAC,qBAAqB,GAAG+B,IAAI,CAAC;EAC\u002FC;EACA,IAAI,CAACgwD,gBAAgB,EAAE;IACrB,MAAM,IAAI\u002FxD,KAAK,CAAC,4CAA4C,CAAC;EAC\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K,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EACpE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EACpE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EACpE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EACrE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EACrE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAC1E,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EACxE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAC1E,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MA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\u002FB;IACF;IACA,OAAO\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\u002FB,EAAE,GACpB,YAAY,GACZs\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\u002FC;EAEAuU,SAASA,CAAC\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\u002FG,UAAU,SAASqG,OAAO,CAAC;EAC\u002FB,WAAWC,MAAMA,CAAA,EAAG;IAClB,OAAOp6D,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC26D,YAAY,CAACE,gBAAgB,CAAC,CAAC;EACpE;EAEA\u002F5D,WAAWA,CAACigD,OAAO,EAAE;IACnB,KAAK,CAAC+S,UAAU,CAACsG,MAAM,EAAErZ,OAAO,CAAC;IACjC,IAAI,CAAC0U,WAAW,GAAG,IAAI;EACzB;AACF;AAEA,MAAMqF,oBAAoB,GAAG,CAC3B,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,EAChC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,EAChC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,EACjC,CAAC,CAAC,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,CAAC,EACtC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,EACvC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,EACjC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,EAChC,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAC1B,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAC1B,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,EACtC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,EACtC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,EACjC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,EACrC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,CAAC,EAC1C,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,CAAC,EACzC,CAAC,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,EAC\u002FB,CAAC,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,EAC\u002FB,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAC9B;AAED,MAAM5C,cAAc,SAASiC,OAAO,CAAC;EACnC,WAAWC,MAAMA,CAAA,EAAG;IAClB,OAAOp6D,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC26D,YAAY,CAACG,oBAAoB,CAAC,CAAC;EACxE;EAEAh6D,WAAWA,CAACigD,OAAO,EAAE;IACnB,KAAK,CAACmX,cAAc,CAACkC,MAAM,EAAErZ,OAAO,CAAC;IACrC,IAAI,CAAC2U,UAAU,GAAG,IAAI;EACxB;AACF;AAEA,MAAMkD,yBAAyB,GAAG;EAChCC,SAAS,EAAE,CAAC;EACZC,MAAM,EAAE,CAAC;EACTC,aAAa,EAAE;AACjB,CAAC;AAED,MAAMJ,UAAU,CAAC;EACf73D,WAAWA,CAACo4D,UAAU,EAAEF,MAAM,EAAEpE,OAAO,EAAEqE,GAAG,EAAE;IAC5C,IAAI,CAACC,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACF,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACpE,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACqE,GAAG,GAAGA,GAAG;EAChB;AACF;AAEA,MAAMU,WAAW,CAAC;EAChB74D,WAAWA,CAACo4D,UAAU,EAAEF,MAAM,EAAE\u002FvD,QAAQ,EAAEgwD,GAAG,EAAE;IAC7C,IAAI,CAACC,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACF,MAAM,GAAGA,MAAM;IACpB,IAAI,CAAC\u002FvD,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACgwD,GAAG,GAAGA,GAAG;EAChB;AACF;AAEA,MAAMW,WAAW,CAAC;EAChB94D,WAAWA,CAACk4D,MAAM,EAAE9D,QAAQ,EAAE;IAC5B,IAAI,CAAC8D,MAAM,GAAGA,MAAM;IACpB,IAAI,CAAC9D,QAAQ,GAAGA,QAAQ;EAC1B;EAEA2C,UAAUA,CAACkD,UAAU,EAAE;IACrB,IAAIA,UAAU,GAAG,CAAC,IAAIA,UAAU,IAAI,IAAI,CAAC7F,QAAQ,CAACv1D,MAAM,EAAE;MACxD,OAAO,CAAC,CAAC;IACX;IACA,OAAO,IAAI,CAACu1D,QAAQ,CAAC6F,UAAU,CAAC;EAClC;AACF;AAIA,MAAMC,gBAAgB,CAAC;EACrBl6D,WAAWA,CAAA,EAAG;IACZ,IAAI,CAACy1D,OAAO,GAAGl2D,MAAM,CAAC8C,MAAM,CAAC,IAAI,CAAC;EACpC;EAEA83D,UAAUA,CAAC73D,GAAG,EAAE;IACd,OAAOA,GAAG,IAAI,IAAI,CAACmzD,OAAO;EAC5B;EAEA2E,KAAKA,CAAC93D,GAAG,EAAEk4C,QAAQ,EAAE;IACnB,IAAIl4C,GAAG,IAAI,IAAI,CAACmzD,OAAO,EAAE;MACvB,MAAM,IAAI\u002F0D,WAAW,CAAE,gCAA+B4B,GAAI,EAAC,CAAC;IAC9D;IACA,IAAI,CAACmzD,OAAO,CAACnzD,GAAG,CAAC,GAAGk4C,QAAQ;EAC9B;EAEAjnC,MAAMA,CAAClU,KAAK,EAAE;IACZ,KAAK,MAAMiD,GAAG,IAAI,IAAI,CAACmzD,OAAO,EAAE;MAC9B,IAAI,CAACA,OAAO,CAACnzD,GAAG,CAAC,IAAIjD,KAAK;IAC5B;EACF;EAEAg7D,gBAAgBA,CAAC\u002F3D,GAAG,EAAEiL,MAAM,EAAE4oC,MAAM,EAAE;IACpC,IAAI,EAAE7zC,GAAG,IAAI,IAAI,CAACmzD,OAAO,CAAC,EAAE;MAC1B,MAAM,IAAI\u002F0D,WAAW,CAAE,4BAA2B4B,GAAI,EAAC,CAAC;IAC1D;IACA,MAAMkQ,IAAI,GAAG2jC,MAAM,CAAC3jC,IAAI;IACxB,MAAM8nD,UAAU,GAAG,IAAI,CAAC7E,OAAO,CAACnzD,GAAG,CAAC;IACpC,MAAMoK,IAAI,GAAG,CAAC;IACd,KAAK,IAAItL,CAAC,GAAG,CAAC,EAAEuH,EAAE,GAAG4E,MAAM,CAAC1O,MAAM,EAAEuC,CAAC,GAAGuH,EAAE,EAAE,EAAEvH,CAAC,EAAE;MAC\u002FC,MAAMolC,OAAO,GAAGplC,CAAC,GAAGsL,IAAI,GAAG4tD,UAAU;MACrC,MAAMC,OAAO,GAAG\u002FzB,OAAO,GAAG,CAAC;MAC3B,MAAMg0B,OAAO,GAAGh0B,OAAO,GAAG,CAAC;MAC3B,MAAMi0B,OAAO,GAAGj0B,OAAO,GAAG,CAAC;MAC3B,MAAMk0B,OAAO,GAAGl0B,OAAO,GAAG,CAAC;MAE3B,IACEh0B,IAAI,CAACg0B,OAAO,CAAC,KAAK,IAAI,IACtBh0B,IAAI,CAAC+nD,OAAO,CAAC,KAAK,CAAC,IACnB\u002FnD,IAAI,CAACgoD,OAAO,CAAC,KAAK,CAAC,IACnBhoD,IAAI,CAACioD,OAAO,CAAC,KAAK,CAAC,IACnBjoD,IAAI,CAACkoD,OAAO,CAAC,KAAK,CAAC,EACnB;QACA,MAAM,IAAIh6D,WAAW,CAAC,wCAAwC,CAAC;MACjE;MACA,MAAMrB,KAAK,GAAGkO,MAAM,CAACnM,CAAC,CAAC;MACvBoR,IAAI,CAACg0B,OAAO,CAAC,GAAG,IAAI;MACpBh0B,IAAI,CAAC+nD,OAAO,CAAC,GAAIl7D,KAAK,IAAI,EAAE,GAAI,IAAI;MACpCmT,IAAI,CAACgoD,OAAO,CAAC,GAAIn7D,KAAK,IAAI,EAAE,GAAI,IAAI;MACpCmT,IAAI,CAACioD,OAAO,CAAC,GAAIp7D,KAAK,IAAI,CAAC,GAAI,IAAI;MACnCmT,IAAI,CAACkoD,OAAO,CAAC,GAAGr7D,KAAK,GAAG,IAAI;IAC9B;EACF;AACF;AAGA,MAAMs7D,WAAW,CAAC;EAChB36D,WAAWA,CAACmyD,GAAG,EAAE;IACf,IAAI,CAACA,GAAG,GAAGA,GAAG;EAChB;EAEAyI,OAAOA,CAAA,EAAG;IACR,MAAMzI,GAAG,GAAG,IAAI,CAACA,GAAG;IACpB,MAAMhc,MAAM,GAAG;MACb3jC,IAAI,EAAE,EAAE;MACR3T,MAAM,EAAE,CAAC;MACTuQ,GAAGA,CAACoD,IAAI,EAAE;QACR,IAAI;UAIF,IAAI,CAACA,IAAI,CAAC9Q,IAAI,CAAC,GAAG8Q,IAAI,CAAC;QACzB,CAAC,CAAC,MAAM;UACN,IAAI,CAACA,IAAI,GAAG,IAAI,CAACA,IAAI,CAAC4mB,MAAM,CAAC5mB,IAAI,CAAC;QACpC;QACA,IAAI,CAAC3T,MAAM,GAAG,IAAI,CAAC2T,IAAI,CAAC3T,MAAM;MAChC;IACF,CAAC;IAGD,MAAM6tB,MAAM,GAAG,IAAI,CAACmuC,aAAa,CAAC1I,GAAG,CAACzlC,MAAM,CAAC;IAC7CypB,MAAM,CAAC\u002FmC,GAAG,CAACsd,MAAM,CAAC;IAElB,MAAM4lC,SAAS,GAAG,IAAI,CAACwI,gBAAgB,CAAC3I,GAAG,CAACc,KAAK,CAAC;IAClD9c,MAAM,CAAC\u002FmC,GAAG,CAACkjD,SAAS,CAAC;IAErB,IAAIH,GAAG,CAACkB,SAAS,EAAE;MAajB,IAAIlB,GAAG,CAACW,OAAO,CAACQ,OAAO,CAAC,YAAY,CAAC,EAAE;QACrC,MAAMtvC,IAAI,GAAGmuC,GAAG,CAACW,OAAO,CAAChxC,SAAS,CAAC,YAAY,CAAC;QAChDqwC,GAAG,CAACW,OAAO,CAACwE,YAAY,CAAC,YAAY,CAAC;QACtC,KAAK,MAAMhpD,OAAO,IAAI6jD,GAAG,CAAC+B,OAAO,EAAE;UACjC,IAAI9wC,MAAM,GAAGY,IAAI,CAAC7e,KAAK,CAAC,CAAC,CAAC;UAC1B,IAAImJ,OAAO,CAACglD,OAAO,CAAC,YAAY,CAAC,EAAE;YACjClwC,MAAM,GAAGrf,IAAI,CAAC3L,SAAS,CAACgrB,MAAM,EAAE9U,OAAO,CAACwT,SAAS,CAAC,YAAY,CAAC,CAAC;UAClE;UACAxT,OAAO,CAACmpD,SAAS,CAAC,YAAY,EAAEr0C,MAAM,CAAC;QACzC;MACF;IACF;IAEA,MAAM23C,IAAI,GAAG5I,GAAG,CAACW,OAAO,CAAChxC,SAAS,CAAC,MAAM,CAAC;IAC1C,IAAIi5C,IAAI,EAAEl8D,MAAM,GAAG,EAAE,EAAE;MAErBszD,GAAG,CAACW,OAAO,CAACwE,YAAY,CAAC,MAAM,CAAC;IAClC;IAEAnF,GAAG,CAACW,OAAO,CAAC2E,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;IACnC,IAAIuD,QAAQ,GAAG,IAAI,CAACC,eAAe,CACjC,CAAC9I,GAAG,CAACW,OAAO,CAAC,EACb3c,MAAM,CAACt3C,MAAM,EACbszD,GAAG,CAACkB,SACN,CAAC;IACDld,MAAM,CAAC\u002FmC,GAAG,CAAC4rD,QAAQ,CAAC7kB,MAAM,CAAC;IAC3B,MAAM+kB,cAAc,GAAGF,QAAQ,CAACG,QAAQ,CAAC,CAAC,CAAC;IAE3C,MAAMzI,WAAW,GAAG,IAAI,CAAC0I,kBAAkB,CAACjJ,GAAG,CAAClS,OAAO,CAACA,OAAO,CAAC;IAChE9J,MAAM,CAAC\u002FmC,GAAG,CAACsjD,WAAW,CAAC;IAEvB,MAAMC,eAAe,GAAG,IAAI,CAAC0I,YAAY,CAAClJ,GAAG,CAACQ,eAAe,CAAC;IAC9Dxc,MAAM,CAAC\u002FmC,GAAG,CAACujD,eAAe,CAAC;IAG3B,IAAIR,GAAG,CAAChqD,QAAQ,IAAIgqD,GAAG,CAACW,OAAO,CAACQ,OAAO,CAAC,UAAU,CAAC,EAAE;MACnD,IAAInB,GAAG,CAAChqD,QAAQ,CAACiwD,UAAU,EAAE;QAC3B8C,cAAc,CAACb,gBAAgB,CAC7B,UAAU,EACV,CAAClI,GAAG,CAAChqD,QAAQ,CAAC+vD,MAAM,CAAC,EACrB\u002FhB,MACF,CAAC;MACH,CAAC,MAAM;QACL,MAAMhuC,QAAQ,GAAG,IAAI,CAACmzD,eAAe,CAACnJ,GAAG,CAAChqD,QAAQ,CAAC;QACnD+yD,cAAc,CAACb,gBAAgB,CAAC,UAAU,EAAE,CAAClkB,MAAM,CAACt3C,MAAM,CAAC,EAAEs3C,MAAM,CAAC;QACpEA,MAAM,CAAC\u002FmC,GAAG,CAACjH,QAAQ,CAAC;MACtB;IACF;IACA,MAAM2rD,OAAO,GAAG,IAAI,CAACyH,cAAc,CACjCpJ,GAAG,CAAC2B,OAAO,EACX3B,GAAG,CAACsC,WAAW,CAACz0C,KAAK,EACrBmyC,GAAG,CAAClS,OAAO,EACXkS,GAAG,CAACkB,SACN,CAAC;IACD6H,cAAc,CAACb,gBAAgB,CAAC,SAAS,EAAE,CAAClkB,MAAM,CAACt3C,MAAM,CAAC,EAAEs3C,MAAM,CAAC;IACnEA,MAAM,CAAC\u002FmC,GAAG,CAAC0kD,OAAO,CAAC;IAEnB,MAAMW,WAAW,GAAG,IAAI,CAAC+G,kBAAkB,CAACrJ,GAAG,CAACsC,WAAW,CAAC;IAC5DyG,cAAc,CAACb,gBAAgB,CAAC,aAAa,EAAE,CAAClkB,MAAM,CAACt3C,MAAM,CAAC,EAAEs3C,MAAM,CAAC;IACvEA,MAAM,CAAC\u002FmC,GAAG,CAACqlD,WAAW,CAAC;IAEvB,IAAItC,GAAG,CAACkB,SAAS,EAAE;MAGjB6H,cAAc,CAACb,gBAAgB,CAAC,UAAU,EAAE,CAAClkB,MAAM,CAACt3C,MAAM,CAAC,EAAEs3C,MAAM,CAAC;MACpE,MAAMie,QAAQ,GAAG,IAAI,CAACqH,eAAe,CAACtJ,GAAG,CAACiC,QAAQ,CAAC;MACnDje,MAAM,CAAC\u002FmC,GAAG,CAACglD,QAAQ,CAAC;MAGpB4G,QAAQ,GAAG,IAAI,CAACC,eAAe,CAAC9I,GAAG,CAAC+B,OAAO,EAAE\u002Fd,MAAM,CAACt3C,MAAM,EAAE,IAAI,CAAC;MACjEq8D,cAAc,CAACb,gBAAgB,CAAC,SAAS,EAAE,CAAClkB,MAAM,CAACt3C,MAAM,CAAC,EAAEs3C,MAAM,CAAC;MACnEA,MAAM,CAAC\u002FmC,GAAG,CAAC4rD,QAAQ,CAAC7kB,MAAM,CAAC;MAC3B,MAAMulB,gBAAgB,GAAGV,QAAQ,CAACG,QAAQ;MAE1C,IAAI,CAACQ,mBAAmB,CAACxJ,GAAG,CAAC+B,OAAO,EAAEwH,gBAAgB,EAAEvlB,MAAM,CAAC;IACjE;IAEA,IAAI,CAACwlB,mBAAmB,CAAC,CAACxJ,GAAG,CAACW,OAAO,CAAC,EAAE,CAACoI,cAAc,CAAC,EAAE\u002FkB,MAAM,CAAC;IAIjEA,MAAM,CAAC\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\u002F\u002FC,MAAM,CAAC1e,MAAM,GAAG,CAAC,IAAI,CAAC;QACzC0e,MAAM,CAAC,CAAC,CAAC,GAAI+\u002FC,SAAS,IAAI,CAAC,GAAI,IAAI;QACnC\u002F\u002FC,MAAM,CAAC,CAAC,CAAC,GAAG+\u002FC,SAAS,GAAG,IAAI;QAE5B\u002F\u002FC,MAAM,CAAC7b,IAAI,CAAEN,CAAC,IAAI,CAAC,GAAI,IAAI,EAAEA,CAAC,GAAG,IAAI,CAAC;QACtCg2C,GAAG,GAAG,IAAIt1C,UAAU,CAACyb,MAAM,CAAC;QAC5B;IACJ;IACA,OAAO,IAAI,CAAC4\u002FC,iBAAiB,CAAC\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\u002F+D,CAAC,CAACg\u002FD,SAAS,GAAG,MAAM;EACpBh\u002FD,CAAC,CAACi\u002FD,SAAS,GAAG,MAAM;EACpBj\u002FD,CAAC,CAACk\u002FD,cAAc,GAAG,MAAM;EACzBl\u002FD,CAAC,CAACm\u002FD,IAAI,GAAG,MAAM;EACfn\u002FD,CAAC,CAACo\u002FD,UAAU,GAAG,MAAM;EACrBp\u002FD,CAAC,CAACq\u002FD,SAAS,GAAG,MAAM;EACpBr\u002FD,CAAC,CAACs\u002FD,UAAU,GAAG,MAAM;EACrBt\u002FD,CAAC,CAACu\u002FD,MAAM,GAAG,MAAM;EACjBv\u002FD,CAAC,CAACw\u002FD,WAAW,GAAG,MAAM;EACtBx\u002FD,CAAC,CAACy\u002FD,UAAU,GAAG,MAAM;EACrBz\u002FD,CAAC,CAAC0\u002FD,UAAU,GAAG,MAAM;EACrB1\u002FD,CAAC,CAAC2\u002FD,UAAU,GAAG,MAAM;EACrB3\u002FD,CAAC,CAAC4\u002FD,cAAc,GAAG,MAAM;EACzB5\u002FD,CAAC,CAAC6\u002FD,iBAAiB,GAAG,MAAM;EAC5B7\u002FD,CAAC,CAAC8\u002FD,UAAU,GAAG,MAAM;EACrB9\u002FD,CAAC,CAAC+\u002FD,WAAW,GAAG,MAAM;EACtB\u002F\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\u002F+E,CAAC,CAACg\u002FE,MAAM,GAAG,MAAM;EACjBh\u002FE,CAAC,CAACi\u002FE,MAAM,GAAG,MAAM;EACjBj\u002FE,CAAC,CAACk\u002FE,CAAC,GAAG,MAAM;EACZl\u002FE,CAAC,CAACm\u002FE,MAAM,GAAG,MAAM;EACjBn\u002FE,CAAC,CAACo\u002FE,OAAO,GAAG,MAAM;EAClBp\u002FE,CAAC,CAACq\u002FE,WAAW,GAAG,MAAM;EACtBr\u002FE,CAAC,CAACs\u002FE,SAAS,GAAG,MAAM;EACpBt\u002FE,CAAC,CAACu\u002FE,UAAU,GAAG,MAAM;EACrBv\u002FE,CAAC,CAACw\u002FE,SAAS,GAAG,MAAM;EACpBx\u002FE,CAAC,CAACy\u002FE,MAAM,GAAG,MAAM;EACjBz\u002FE,CAAC,CAAC0\u002FE,UAAU,GAAG,MAAM;EACrB1\u002FE,CAAC,CAAC2\u002FE,MAAM,GAAG,MAAM;EACjB3\u002FE,CAAC,CAACvR,CAAC,GAAG,MAAM;EACZuR,CAAC,CAAC4\u002FE,OAAO,GAAG,MAAM;EAClB5\u002FE,CAAC,CAAC6\u002FE,SAAS,GAAG,MAAM;EACpB7\u002FE,CAAC,CAAC8\u002FE,UAAU,GAAG,MAAM;EACrB9\u002FE,CAAC,CAAC+\u002FE,WAAW,GAAG,MAAM;EACtB\u002F\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\u002FB\u002F9F,CAAC,CAACg+F,cAAc,GAAG,MAAM;EACzBh+F,CAAC,CAACi+F,YAAY,GAAG,MAAM;EACvBj+F,CAAC,CAACk+F,iBAAiB,GAAG,MAAM;EAC5Bl+F,CAAC,CAACm+F,aAAa,GAAG,MAAM;EACxBn+F,CAAC,CAACo+F,QAAQ,GAAG,MAAM;EACnBp+F,CAAC,CAACq+F,SAAS,GAAG,MAAM;EACpBr+F,CAAC,CAACs+F,mBAAmB,GAAG,MAAM;EAC9Bt+F,CAAC,CAAC2xB,EAAE,GAAG,MAAM;EACb3xB,CAAC,CAACu+F,MAAM,GAAG,MAAM;EACjBv+F,CAAC,CAACw+F,WAAW,GAAG,MAAM;EACtBx+F,CAAC,CAACy+F,OAAO,GAAG,MAAM;EAClBz+F,CAAC,CAAC0+F,OAAO,GAAG,MAAM;EAClB1+F,CAAC,CAAC2+F,SAAS,GAAG,MAAM;EACpB3+F,CAAC,CAAC4+F,UAAU,GAAG,MAAM;EACrB5+F,CAAC,CAAC6+F,MAAM,GAAG,MAAM;EACjB7+F,CAAC,CAAC8+F,UAAU,GAAG,MAAM;EACrB9+F,CAAC,CAAC++F,UAAU,GAAG,MAAM;EACrB\u002F+F,CAAC,CAACg\u002FF,mBAAmB,GAAG,MAAM;EAC9Bh\u002FF,CAAC,CAACi\u002FF,eAAe,GAAG,MAAM;EAC1Bj\u002FF,CAAC,CAACk\u002FF,kBAAkB,GAAG,MAAM;EAC7Bl\u002FF,CAAC,CAACm\u002FF,eAAe,GAAG,MAAM;EAC1Bn\u002FF,CAAC,CAACo\u002FF,mBAAmB,GAAG,MAAM;EAC9Bp\u002FF,CAAC,CAACq\u002FF,YAAY,GAAG,MAAM;EACvBr\u002FF,CAAC,CAACs\u002FF,WAAW,GAAG,MAAM;EACtBt\u002FF,CAAC,CAACu\u002FF,IAAI,GAAG,MAAM;EACfv\u002FF,CAAC,CAACw\u002FF,gBAAgB,GAAG,MAAM;EAC3Bx\u002FF,CAAC,CAACy\u002FF,UAAU,GAAG,MAAM;EACrBz\u002FF,CAAC,CAACjD,CAAC,GAAG,MAAM;EACZiD,CAAC,CAAC0\u002FF,SAAS,GAAG,MAAM;EACpB1\u002FF,CAAC,CAAC2\u002FF,SAAS,GAAG,MAAM;EACpB3\u002FF,CAAC,CAAC4\u002FF,kBAAkB,GAAG,MAAM;EAC7B5\u002FF,CAAC,CAAC6\u002FF,MAAM,GAAG,MAAM;EACjB7\u002FF,CAAC,CAAC8\u002FF,UAAU,GAAG,MAAM;EACrB9\u002FF,CAAC,CAAC+\u002FF,UAAU,GAAG,MAAM;EACrB\u002F\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\u002FB\u002F7G,CAAC,CAACg8G,gBAAgB,GAAG,MAAM;EAC3Bh8G,CAAC,CAACi8G,SAAS,GAAG,MAAM;EACpBj8G,CAAC,CAACk8G,SAAS,GAAG,MAAM;EACpBl8G,CAAC,CAACm8G,KAAK,GAAG,MAAM;EAChBn8G,CAAC,CAACo8G,SAAS,GAAG,MAAM;EACpBp8G,CAAC,CAACq8G,IAAI,GAAG,MAAM;EACfr8G,CAAC,CAACs8G,UAAU,GAAG,MAAM;EACrBt8G,CAAC,CAACu8G,SAAS,GAAG,MAAM;EACpBv8G,CAAC,CAACw8G,UAAU,GAAG,MAAM;EACrBx8G,CAAC,CAACy8G,eAAe,GAAG,MAAM;EAC1Bz8G,CAAC,CAAC08G,UAAU,GAAG,MAAM;EACrB18G,CAAC,CAAC28G,MAAM,GAAG,MAAM;EACjB38G,CAAC,CAAC48G,SAAS,GAAG,MAAM;EACpB58G,CAAC,CAAC68G,UAAU,GAAG,MAAM;EACrB78G,CAAC,CAAC88G,UAAU,GAAG,MAAM;EACrB98G,CAAC,CAAC+8G,SAAS,GAAG,MAAM;EACpB\u002F8G,CAAC,CAACg9G,UAAU,GAAG,MAAM;EACrBh9G,CAAC,CAACi9G,UAAU,GAAG,MAAM;EACrBj9G,CAAC,CAACk9G,KAAK,GAAG,MAAM;EAChBl9G,CAAC,CAACm9G,WAAW,GAAG,MAAM;EACtBn9G,CAAC,CAACo9G,YAAY,GAAG,MAAM;EACvBp9G,CAAC,CAACq9G,WAAW,GAAG,MAAM;EACtBr9G,CAAC,CAACs9G,2BAA2B,GAAG,MAAM;EACtCt9G,CAAC,CAACu9G,SAAS,GAAG,MAAM;EACpBv9G,CAAC,CAACw9G,cAAc,GAAG,MAAM;EACzBx9G,CAAC,CAACy9G,aAAa,GAAG,MAAM;EACxBz9G,CAAC,CAAC09G,cAAc,GAAG,MAAM;EACzB19G,CAAC,CAAC29G,aAAa,GAAG,MAAM;EACxB39G,CAAC,CAAC49G,aAAa,GAAG,MAAM;EACxB59G,CAAC,CAAC69G,eAAe,GAAG,MAAM;EAC1B79G,CAAC,CAAC89G,aAAa,GAAG,MAAM;EACxB99G,CAAC,CAAC+9G,gBAAgB,GAAG,MAAM;EAC3B\u002F9G,CAAC,CAACg+G,qBAAqB,GAAG,MAAM;EAChCh+G,CAAC,CAACi+G,aAAa,GAAG,MAAM;EACxBj+G,CAAC,CAACk+G,cAAc,GAAG,MAAM;EACzBl+G,CAAC,CAACm+G,aAAa,GAAG,MAAM;EACxBn+G,CAAC,CAACo+G,UAAU,GAAG,MAAM;EACrBp+G,CAAC,CAACq+G,WAAW,GAAG,MAAM;EACtBr+G,CAAC,CAACs+G,YAAY,GAAG,MAAM;EACvBt+G,CAAC,CAACu+G,UAAU,GAAG,MAAM;EACrBv+G,CAAC,CAACw+G,aAAa,GAAG,MAAM;EACxBx+G,CAAC,CAACy+G,SAAS,GAAG,MAAM;EACpBz+G,CAAC,CAAC0+G,cAAc,GAAG,MAAM;EACzB1+G,CAAC,CAAC2+G,iBAAiB,GAAG,MAAM;EAC5B3+G,CAAC,CAAC4+G,SAAS,GAAG,MAAM;EACpB5+G,CAAC,CAAC6+G,kBAAkB,GAAG,MAAM;EAC7B7+G,CAAC,CAAC8+G,eAAe,GAAG,MAAM;EAC1B9+G,CAAC,CAAC++G,OAAO,GAAG,MAAM;EAClB\u002F+G,CAAC,CAACg\u002FG,UAAU,GAAG,MAAM;EACrBh\u002FG,CAAC,CAAC6N,OAAO,GAAG,MAAM;EAClB7N,CAAC,CAACi\u002FG,YAAY,GAAG,MAAM;EACvBj\u002FG,CAAC,CAACk\u002FG,WAAW,GAAG,MAAM;EACtBl\u002FG,CAAC,CAACm\u002FG,YAAY,GAAG,MAAM;EACvBn\u002FG,CAAC,CAACo\u002FG,WAAW,GAAG,MAAM;EACtBp\u002FG,CAAC,CAACq\u002FG,QAAQ,GAAG,MAAM;EACnBr\u002FG,CAAC,CAACs\u002FG,gBAAgB,GAAG,MAAM;EAC3Bt\u002FG,CAAC,CAACu\u002FG,OAAO,GAAG,MAAM;EAClBv\u002FG,CAAC,CAACw\u002FG,YAAY,GAAG,MAAM;EACvBx\u002FG,CAAC,CAACy\u002FG,YAAY,GAAG,MAAM;EACvBz\u002FG,CAAC,CAAC0\u002FG,UAAU,GAAG,MAAM;EACrB1\u002FG,CAAC,CAAC2\u002FG,MAAM,GAAG,MAAM;EACjB3\u002FG,CAAC,CAAC4\u002FG,cAAc,GAAG,MAAM;EACzB5\u002FG,CAAC,CAAC6\u002FG,UAAU,GAAG,MAAM;EACrB7\u002FG,CAAC,CAAC8\u002FG,oBAAoB,GAAG,MAAM;EAC\u002FB9\u002FG,CAAC,CAAC+\u002FG,QAAQ,GAAG,MAAM;EACnB\u002F\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\u002FB\u002FyH,CAAC,CAACgzH,WAAW,GAAG,MAAM;EACtBhzH,CAAC,CAACizH,aAAa,GAAG,MAAM;EACxBjzH,CAAC,CAACkzH,aAAa,GAAG,MAAM;EACxBlzH,CAAC,CAACmzH,aAAa,GAAG,MAAM;EACxBnzH,CAAC,CAACozH,iBAAiB,GAAG,MAAM;EAC5BpzH,CAAC,CAACqzH,uBAAuB,GAAG,MAAM;EAClCrzH,CAAC,CAACszH,wBAAwB,GAAG,MAAM;EACnCtzH,CAAC,CAACuzH,qBAAqB,GAAG,MAAM;EAChCvzH,CAAC,CAACwzH,UAAU,GAAG,MAAM;EACrBxzH,CAAC,CAACyzH,YAAY,GAAG,MAAM;EACvBzzH,CAAC,CAAC0zH,YAAY,GAAG,MAAM;EACvB1zH,CAAC,CAAC2zH,YAAY,GAAG,MAAM;EACvB3zH,CAAC,CAAC4zH,gBAAgB,GAAG,MAAM;EAC3B5zH,CAAC,CAAC6zH,sBAAsB,GAAG,MAAM;EACjC7zH,CAAC,CAAC8zH,uBAAuB,GAAG,MAAM;EAClC9zH,CAAC,CAAC+zH,oBAAoB,GAAG,MAAM;EAC\u002FB\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\u002F+H,CAAC,CAACg\u002FH,UAAU,GAAG,MAAM;EACrBh\u002FH,CAAC,CAACi\u002FH,MAAM,GAAG,MAAM;EACjBj\u002FH,CAAC,CAACk\u002FH,UAAU,GAAG,MAAM;EACrBl\u002FH,CAAC,CAACm\u002FH,UAAU,GAAG,MAAM;EACrBn\u002FH,CAAC,CAACo\u002FH,eAAe,GAAG,MAAM;EAC1Bp\u002FH,CAAC,CAACq\u002FH,cAAc,GAAG,MAAM;EACzBr\u002FH,CAAC,CAACs\u002FH,eAAe,GAAG,MAAM;EAC1Bt\u002FH,CAAC,CAACu\u002FH,kBAAkB,GAAG,MAAM;EAC7Bv\u002FH,CAAC,CAACw\u002FH,eAAe,GAAG,MAAM;EAC1Bx\u002FH,CAAC,CAACy\u002FH,mBAAmB,GAAG,MAAM;EAC9Bz\u002FH,CAAC,CAAC0\u002FH,EAAE,GAAG,MAAM;EACb1\u002FH,CAAC,CAAC2\u002FH,SAAS,GAAG,MAAM;EACpB3\u002FH,CAAC,CAAC4\u002FH,kBAAkB,GAAG,MAAM;EAC7B5\u002FH,CAAC,CAAC6\u002FH,OAAO,GAAG,MAAM;EAClB7\u002FH,CAAC,CAAC8\u002FH,IAAI,GAAG,MAAM;EACf9\u002FH,CAAC,CAAC+\u002FH,UAAU,GAAG,MAAM;EACrB\u002F\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\u002F+I,CAAC,CAACg\u002FI,WAAW,GAAG,MAAM;EACtBh\u002FI,CAAC,CAACi\u002FI,QAAQ,GAAG,MAAM;EACnBj\u002FI,CAAC,CAACk\u002FI,UAAU,GAAG,MAAM;EACrBl\u002FI,CAAC,CAACm\u002FI,UAAU,GAAG,MAAM;EACrBn\u002FI,CAAC,CAACo\u002FI,mBAAmB,GAAG,MAAM;EAC9Bp\u002FI,CAAC,CAACq\u002FI,gBAAgB,GAAG,MAAM;EAC3Br\u002FI,CAAC,CAACs\u002FI,SAAS,GAAG,MAAM;EACpBt\u002FI,CAAC,CAACu\u002FI,QAAQ,GAAG,MAAM;EACnBv\u002FI,CAAC,CAACw\u002FI,UAAU,GAAG,MAAM;EACrBx\u002FI,CAAC,CAACy\u002FI,eAAe,GAAG,MAAM;EAC1Bz\u002FI,CAAC,CAAC0\u002FI,gBAAgB,GAAG,MAAM;EAC3B1\u002FI,CAAC,CAAC2\u002FI,qBAAqB,GAAG,MAAM;EAChC3\u002FI,CAAC,CAAC4\u002FI,iBAAiB,GAAG,MAAM;EAC5B5\u002FI,CAAC,CAAC6\u002FI,qBAAqB,GAAG,MAAM;EAChC7\u002FI,CAAC,CAAC8\u002FI,sBAAsB,GAAG,MAAM;EACjC9\u002FI,CAAC,CAAC+\u002FI,gBAAgB,GAAG,MAAM;EAC3B\u002F\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\u002F+J,CAAC,CAACg\u002FJ,cAAc,GAAG,MAAM;EACzBh\u002FJ,CAAC,CAACi\u002FJ,UAAU,GAAG,MAAM;EACrBj\u002FJ,CAAC,CAACk\u002FJ,UAAU,GAAG,MAAM;EACrBl\u002FJ,CAAC,CAACm\u002FJ,UAAU,GAAG,MAAM;EACrBn\u002FJ,CAAC,CAACo\u002FJ,mBAAmB,GAAG,MAAM;EAC9Bp\u002FJ,CAAC,CAACq\u002FJ,SAAS,GAAG,MAAM;EACpBr\u002FJ,CAAC,CAACs\u002FJ,MAAM,GAAG,MAAM;EACjBt\u002FJ,CAAC,CAACu\u002FJ,UAAU,GAAG,MAAM;EACrBv\u002FJ,CAAC,CAACw\u002FJ,OAAO,GAAG,MAAM;EAClBx\u002FJ,CAAC,CAACy\u002FJ,WAAW,GAAG,MAAM;EACtBz\u002FJ,CAAC,CAAC0\u002FJ,UAAU,GAAG,MAAM;EACrB1\u002FJ,CAAC,CAAC2\u002FJ,eAAe,GAAG,MAAM;EAC1B3\u002FJ,CAAC,CAAC4\u002FJ,gBAAgB,GAAG,MAAM;EAC3B5\u002FJ,CAAC,CAAC6\u002FJ,aAAa,GAAG,MAAM;EACxB7\u002FJ,CAAC,CAAC8\u002FJ,iBAAiB,GAAG,MAAM;EAC5B9\u002FJ,CAAC,CAAC+\u002FJ,yBAAyB,GAAG,MAAM;EACpC\u002F\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\u002FB\u002FnK,CAAC,CAACgoK,iBAAiB,GAAG,MAAM;EAC5BhoK,CAAC,CAACioK,iBAAiB,GAAG,MAAM;EAC5BjoK,CAAC,CAACkoK,oBAAoB,GAAG,MAAM;EAC\u002FBloK,CAAC,CAACmoK,KAAK,GAAG,MAAM;EAChBnoK,CAAC,CAACooK,SAAS,GAAG,MAAM;EACpBpoK,CAAC,CAACqoK,UAAU,GAAG,MAAM;EACrBroK,CAAC,CAACsoK,WAAW,GAAG,MAAM;EACtBtoK,CAAC,CAACuoK,OAAO,GAAG,MAAM;EAClBvoK,CAAC,CAACwoK,WAAW,GAAG,MAAM;EACtBxoK,CAAC,CAACyoK,WAAW,GAAG,MAAM;EACtBzoK,CAAC,CAAC0oK,gBAAgB,GAAG,MAAM;EAC3B1oK,CAAC,CAAC2oK,UAAU,GAAG,MAAM;EACrB3oK,CAAC,CAAC4oK,aAAa,GAAG,MAAM;EACxB5oK,CAAC,CAAC6oK,WAAW,GAAG,MAAM;EACtB7oK,CAAC,CAAC8oK,gBAAgB,GAAG,MAAM;EAC3B9oK,CAAC,CAAC+oK,kBAAkB,GAAG,MAAM;EAC7B\u002FoK,CAAC,CAACgpK,iBAAiB,GAAG,MAAM;EAC5BhpK,CAAC,CAACipK,UAAU,GAAG,MAAM;EACrBjpK,CAAC,CAACkpK,MAAM,GAAG,MAAM;EACjBlpK,CAAC,CAACmpK,YAAY,GAAG,MAAM;EACvBnpK,CAAC,CAACopK,KAAK,GAAG,MAAM;EAChBppK,CAAC,CAACqpK,QAAQ,GAAG,MAAM;EACnBrpK,CAAC,CAACspK,OAAO,GAAG,MAAM;EAClBtpK,CAAC,CAACupK,OAAO,GAAG,MAAM;EAClBvpK,CAAC,CAACwpK,OAAO,GAAG,MAAM;EAClBxpK,CAAC,CAACypK,WAAW,GAAG,MAAM;EACtBzpK,CAAC,CAAC0pK,iBAAiB,GAAG,MAAM;EAC5B1pK,CAAC,CAAC2pK,kBAAkB,GAAG,MAAM;EAC7B3pK,CAAC,CAAC4pK,eAAe,GAAG,MAAM;EAC1B5pK,CAAC,CAAC6pK,YAAY,GAAG,MAAM;EACvB7pK,CAAC,CAAC8pK,WAAW,GAAG,MAAM;EACtB9pK,CAAC,CAAC+pK,IAAI,GAAG,MAAM;EACf\u002FpK,CAAC,CAACgqK,UAAU,GAAG,MAAM;EACrBhqK,CAAC,CAACiqK,gBAAgB,GAAG,MAAM;EAC3BjqK,CAAC,CAACkqK,iBAAiB,GAAG,MAAM;EAC5BlqK,CAAC,CAACmqK,uBAAuB,GAAG,MAAM;EAClCnqK,CAAC,CAACoqK,gBAAgB,GAAG,MAAM;EAC3BpqK,CAAC,CAACqqK,sBAAsB,GAAG,MAAM;EACjCrqK,CAAC,CAACsqK,aAAa,GAAG,MAAM;EACxBtqK,CAAC,CAACuqK,UAAU,GAAG,MAAM;EACrBvqK,CAAC,CAACwqK,WAAW,GAAG,MAAM;EACtBxqK,CAAC,CAACyqK,iBAAiB,GAAG,MAAM;EAC5BzqK,CAAC,CAAC0qK,UAAU,GAAG,MAAM;EACrB1qK,CAAC,CAAC2qK,gBAAgB,GAAG,MAAM;EAC3B3qK,CAAC,CAAC4qK,KAAK,GAAG,MAAM;EAChB5qK,CAAC,CAAC6qK,KAAK,GAAG,MAAM;EAChB7qK,CAAC,CAAC8qK,MAAM,GAAG,MAAM;EACjB9qK,CAAC,CAAC+qK,UAAU,GAAG,MAAM;EACrB\u002FqK,CAAC,CAACgrK,sBAAsB,GAAG,MAAM;EACjChrK,CAAC,CAACirK,UAAU,GAAG,MAAM;EACrBjrK,CAAC,CAACkrK,UAAU,GAAG,MAAM;EACrBlrK,CAAC,CAACmrK,mBAAmB,GAAG,MAAM;EAC9BnrK,CAAC,CAACorK,WAAW,GAAG,MAAM;EACtBprK,CAAC,CAACqrK,eAAe,GAAG,MAAM;EAC1BrrK,CAAC,CAACsrK,OAAO,GAAG,MAAM;EAClBtrK,CAAC,CAACurK,YAAY,GAAG,MAAM;EACvBvrK,CAAC,CAACwrK,iBAAiB,GAAG,MAAM;EAC5BxrK,CAAC,CAACyrK,gBAAgB,GAAG,MAAM;EAC3BzrK,CAAC,CAAC0rK,eAAe,GAAG,MAAM;EAC1B1rK,CAAC,CAAC2rK,gBAAgB,GAAG,MAAM;EAC3B3rK,CAAC,CAAC4rK,gBAAgB,GAAG,MAAM;EAC3B5rK,CAAC,CAAC6rK,UAAU,GAAG,MAAM;EACrB7rK,CAAC,CAAC8rK,eAAe,GAAG,MAAM;EAC1B9rK,CAAC,CAAC+rK,eAAe,GAAG,MAAM;EAC1B\u002FrK,CAAC,CAACgsK,eAAe,GAAG,MAAM;EAC1BhsK,CAAC,CAACisK,gBAAgB,GAAG,MAAM;EAC3BjsK,CAAC,CAACksK,GAAG,GAAG,MAAM;EACdlsK,CAAC,CAACmsK,SAAS,GAAG,MAAM;EACpBnsK,CAAC,CAACosK,UAAU,GAAG,MAAM;EACrBpsK,CAAC,CAACqsK,SAAS,GAAG,MAAM;EACpBrsK,CAAC,CAACssK,yBAAyB,GAAG,MAAM;EACpCtsK,CAAC,CAACusK,OAAO,GAAG,MAAM;EAClBvsK,CAAC,CAACwsK,WAAW,GAAG,MAAM;EACtBxsK,CAAC,CAACysK,WAAW,GAAG,MAAM;EACtBzsK,CAAC,CAAC0sK,aAAa,GAAG,MAAM;EACxB1sK,CAAC,CAAC2sK,WAAW,GAAG,MAAM;EACtB3sK,CAAC,CAAC4sK,mBAAmB,GAAG,MAAM;EAC9B5sK,CAAC,CAAC6sK,WAAW,GAAG,MAAM;EACtB7sK,CAAC,CAAC8sK,YAAY,GAAG,MAAM;EACvB9sK,CAAC,CAAC+sK,WAAW,GAAG,MAAM;EACtB\u002FsK,CAAC,CAACgtK,QAAQ,GAAG,MAAM;EACnBhtK,CAAC,CAACitK,SAAS,GAAG,MAAM;EACpBjtK,CAAC,CAACktK,UAAU,GAAG,MAAM;EACrBltK,CAAC,CAACmtK,QAAQ,GAAG,MAAM;EACnBntK,CAAC,CAACotK,WAAW,GAAG,MAAM;EACtBptK,CAAC,CAACqtK,aAAa,GAAG,MAAM;EACxBrtK,CAAC,CAACstK,iCAAiC,GAAG,MAAM;EAC5CttK,CAAC,CAACutK,YAAY,GAAG,MAAM;EACvBvtK,CAAC,CAACwtK,aAAa,GAAG,MAAM;EACxBxtK,CAAC,CAACytK,OAAO,GAAG,MAAM;EAClBztK,CAAC,CAAC0tK,KAAK,GAAG,MAAM;EAChB1tK,CAAC,CAAC2tK,cAAc,GAAG,MAAM;EACzB3tK,CAAC,CAAC4tK,KAAK,GAAG,MAAM;EAChB5tK,CAAC,CAAC6tK,cAAc,GAAG,MAAM;EACzB7tK,CAAC,CAAC8tK,SAAS,GAAG,MAAM;EACpB9tK,CAAC,CAAC+tK,UAAU,GAAG,MAAM;EACrB\u002FtK,CAAC,CAACguK,cAAc,GAAG,MAAM;EACzBhuK,CAAC,CAACiuK,UAAU,GAAG,MAAM;EACrBjuK,CAAC,CAACkuK,gBAAgB,GAAG,MAAM;EAC3BluK,CAAC,CAACmuK,UAAU,GAAG,MAAM;EACrBnuK,CAAC,CAACouK,UAAU,GAAG,MAAM;EACrBpuK,CAAC,CAACquK,mBAAmB,GAAG,MAAM;EAC9BruK,CAAC,CAACsuK,qBAAqB,GAAG,MAAM;EAChCtuK,CAAC,CAACuuK,sBAAsB,GAAG,MAAM;EACjCvuK,CAAC,CAACwuK,UAAU,GAAG,MAAM;EACrBxuK,CAAC,CAACyuK,UAAU,GAAG,MAAM;EACrBzuK,CAAC,CAAC0uK,QAAQ,GAAG,MAAM;EACnB1uK,CAAC,CAAC2uK,SAAS,GAAG,MAAM;EACpB3uK,CAAC,CAAC4uK,KAAK,GAAG,MAAM;EAChB5uK,CAAC,CAAC6uK,eAAe,GAAG,MAAM;EAC1B7uK,CAAC,CAAC8uK,KAAK,GAAG,MAAM;EAChB9uK,CAAC,CAAC+uK,cAAc,GAAG,MAAM;EACzB\u002FuK,CAAC,CAACgvK,cAAc,GAAG,MAAM;EACzBhvK,CAAC,CAACivK,MAAM,GAAG,MAAM;EACjBjvK,CAAC,CAACkvK,cAAc,GAAG,MAAM;EACzBlvK,CAAC,CAACmvK,QAAQ,GAAG,MAAM;EACnBnvK,CAAC,CAACovK,QAAQ,GAAG,MAAM;EACnBpvK,CAAC,CAACqvK,4BAA4B,GAAG,MAAM;EACvCrvK,CAAC,CAACsvK,oBAAoB,GAAG,MAAM;EAC\u002FBtvK,CAAC,CAACuvK,QAAQ,GAAG,MAAM;EACnBvvK,CAAC,CAACwvK,QAAQ,GAAG,MAAM;EACnBxvK,CAAC,CAACyvK,eAAe,GAAG,MAAM;EAC1BzvK,CAAC,CAAC0vK,QAAQ,GAAG,MAAM;EACnB1vK,CAAC,CAAC2vK,SAAS,GAAG,MAAM;EACpB3vK,CAAC,CAAC4vK,QAAQ,GAAG,MAAM;EACnB5vK,CAAC,CAAC6vK,SAAS,GAAG,MAAM;EACpB7vK,CAAC,CAAC8vK,QAAQ,GAAG,MAAM;EACnB9vK,CAAC,CAAC+vK,cAAc,GAAG,MAAM;EACzB\u002FvK,CAAC,CAACgwK,8BAA8B,GAAG,MAAM;EACzChwK,CAAC,CAACiwK,+BAA+B,GAAG,MAAM;EAC1CjwK,CAAC,CAACkwK,+BAA+B,GAAG,MAAM;EAC1ClwK,CAAC,CAACmwK,kBAAkB,GAAG,MAAM;EAC7BnwK,CAAC,CAACowK,yBAAyB,GAAG,MAAM;EACpCpwK,CAAC,CAACqwK,QAAQ,GAAG,MAAM;EACnBrwK,CAAC,CAACswK,UAAU,GAAG,MAAM;EACrBtwK,CAAC,CAACuwK,OAAO,GAAG,MAAM;EAClBvwK,CAAC,CAACwwK,WAAW,GAAG,MAAM;EACtBxwK,CAAC,CAACywK,gBAAgB,GAAG,MAAM;EAC3BzwK,CAAC,CAAC0wK,gBAAgB,GAAG,MAAM;EAC3B1wK,CAAC,CAAC2wK,gBAAgB,GAAG,MAAM;EAC3B3wK,CAAC,CAAC4wK,iBAAiB,GAAG,MAAM;EAC5B5wK,CAAC,CAAC6wK,gBAAgB,GAAG,MAAM;EAC3B7wK,CAAC,CAAC8wK,gBAAgB,GAAG,MAAM;EAC3B9wK,CAAC,CAAC+wK,eAAe,GAAG,MAAM;EAC1B\u002FwK,CAAC,CAACgxK,iBAAiB,GAAG,MAAM;EAC5BhxK,CAAC,CAACixK,SAAS,GAAG,MAAM;EACpBjxK,CAAC,CAACkxK,QAAQ,GAAG,MAAM;EACnBlxK,CAAC,CAACmxK,iBAAiB,GAAG,MAAM;EAC5BnxK,CAAC,CAACoxK,oBAAoB,GAAG,MAAM;EAC\u002FBpxK,CAAC,CAACqxK,qBAAqB,GAAG,MAAM;EAChCrxK,CAAC,CAACsxK,MAAM,GAAG,MAAM;EACjBtxK,CAAC,CAACuxK,cAAc,GAAG,MAAM;EACzBvxK,CAAC,CAACwxK,aAAa,GAAG,MAAM;EACxBxxK,CAAC,CAACyxK,QAAQ,GAAG,MAAM;EACnBzxK,CAAC,CAAC0xK,QAAQ,GAAG,MAAM;EACnB1xK,CAAC,CAAC2xK,UAAU,GAAG,MAAM;EACrB3xK,CAAC,CAAC4xK,UAAU,GAAG,MAAM;EACrB5xK,CAAC,CAAC6xK,mBAAmB,GAAG,MAAM;EAC9B7xK,CAAC,CAAC8xK,WAAW,GAAG,MAAM;EACtB9xK,CAAC,CAAC+xK,SAAS,GAAG,MAAM;EACpB\u002FxK,CAAC,CAACgyK,GAAG,GAAG,MAAM;EACdhyK,CAAC,CAACiyK,QAAQ,GAAG,MAAM;EACnBjyK,CAAC,CAACkyK,gBAAgB,GAAG,MAAM;EAC3BlyK,CAAC,CAACmyK,eAAe,GAAG,MAAM;EAC1BnyK,CAAC,CAACoyK,QAAQ,GAAG,MAAM;EACnBpyK,CAAC,CAACqyK,eAAe,GAAG,MAAM;EAC1BryK,CAAC,CAACA,CAAC,GAAG,MAAM;EACZA,CAAC,CAACsyK,SAAS,GAAG,MAAM;EACpBtyK,CAAC,CAACuyK,QAAQ,GAAG,MAAM;EACnBvyK,CAAC,CAACwyK,QAAQ,GAAG,MAAM;EACnBxyK,CAAC,CAACyyK,MAAM,GAAG,MAAM;EACjBzyK,CAAC,CAAC0yK,UAAU,GAAG,MAAM;EACrB1yK,CAAC,CAAC2yK,UAAU,GAAG,MAAM;EACrB3yK,CAAC,CAAC4yK,SAAS,GAAG,MAAM;EACpB5yK,CAAC,CAAC6yK,cAAc,GAAG,MAAM;EACzB7yK,CAAC,CAAC8yK,gBAAgB,GAAG,MAAM;EAC3B9yK,CAAC,CAAC+yK,UAAU,GAAG,MAAM;EACrB\u002FyK,CAAC,CAACgzK,eAAe,GAAG,MAAM;EAC1BhzK,CAAC,CAACizK,gBAAgB,GAAG,MAAM;EAC3BjzK,CAAC,CAACkzK,UAAU,GAAG,MAAM;EACrBlzK,CAAC,CAACmzK,mBAAmB,GAAG,MAAM;EAC9BnzK,CAAC,CAACozK,aAAa,GAAG,MAAM;EACxBpzK,CAAC,CAACqzK,GAAG,GAAG,MAAM;EACdrzK,CAAC,CAACszK,GAAG,GAAG,MAAM;EACdtzK,CAAC,CAACuzK,QAAQ,GAAG,MAAM;EACnBvzK,CAAC,CAACwzK,SAAS,GAAG,MAAM;EACpBxzK,CAAC,CAACyzK,eAAe,GAAG,MAAM;EAC1BzzK,CAAC,CAAC0zK,SAAS,GAAG,MAAM;EACpB1zK,CAAC,CAAC2zK,IAAI,GAAG,MAAM;EACf3zK,CAAC,CAAC4zK,SAAS,GAAG,MAAM;EACpB5zK,CAAC,CAAC6zK,MAAM,GAAG,MAAM;EACjB7zK,CAAC,CAAC8zK,MAAM,GAAG,MAAM;EACjB9zK,CAAC,CAAC+zK,QAAQ,GAAG,MAAM;EACnB\u002FzK,CAAC,CAACg0K,WAAW,GAAG,MAAM;EACtBh0K,CAAC,CAACi0K,gBAAgB,GAAG,MAAM;EAC3Bj0K,CAAC,CAACk0K,kBAAkB,GAAG,MAAM;EAC7Bl0K,CAAC,CAACm0K,iBAAiB,GAAG,MAAM;EAC5Bn0K,CAAC,CAACo0K,OAAO,GAAG,MAAM;EAClBp0K,CAAC,CAACq0K,gBAAgB,GAAG,MAAM;EAC3Br0K,CAAC,CAACs0K,YAAY,GAAG,MAAM;EACvBt0K,CAAC,CAACu0K,SAAS,GAAG,MAAM;EACpBv0K,CAAC,CAACw0K,UAAU,GAAG,MAAM;EACrBx0K,CAAC,CAACy0K,SAAS,GAAG,MAAM;EACpBz0K,CAAC,CAAC00K,UAAU,GAAG,MAAM;EACrB10K,CAAC,CAAC20K,mBAAmB,GAAG,MAAM;EAC9B30K,CAAC,CAAC40K,SAAS,GAAG,MAAM;EACpB50K,CAAC,CAAC60K,cAAc,GAAG,MAAM;EACzB70K,CAAC,CAAC80K,mBAAmB,GAAG,MAAM;EAC9B90K,CAAC,CAAC+0K,oBAAoB,GAAG,MAAM;EAC\u002FB\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\u002F+K,CAAC,CAACg\u002FK,kBAAkB,GAAG,MAAM;EAC7Bh\u002FK,CAAC,CAACi\u002FK,eAAe,GAAG,MAAM;EAC1Bj\u002FK,CAAC,CAACk\u002FK,YAAY,GAAG,MAAM;EACvBl\u002FK,CAAC,CAACm\u002FK,SAAS,GAAG,MAAM;EACpBn\u002FK,CAAC,CAACo\u002FK,UAAU,GAAG,MAAM;EACrBp\u002FK,CAAC,CAACq\u002FK,OAAO,GAAG,MAAM;EAClBr\u002FK,CAAC,CAACs\u002FK,WAAW,GAAG,MAAM;EACtBt\u002FK,CAAC,CAACu\u002FK,WAAW,GAAG,MAAM;EACtBv\u002FK,CAAC,CAACw\u002FK,UAAU,GAAG,MAAM;EACrBx\u002FK,CAAC,CAACy\u002FK,eAAe,GAAG,MAAM;EAC1Bz\u002FK,CAAC,CAAC0\u002FK,iBAAiB,GAAG,MAAM;EAC5B1\u002FK,CAAC,CAAC2\u002FK,gBAAgB,GAAG,MAAM;EAC3B3\u002FK,CAAC,CAAC4\u002FK,WAAW,GAAG,MAAM;EACtB5\u002FK,CAAC,CAAC6\u002FK,QAAQ,GAAG,MAAM;EACnB7\u002FK,CAAC,CAAC8\u002FK,YAAY,GAAG,MAAM;EACvB9\u002FK,CAAC,CAAC+\u002FK,YAAY,GAAG,MAAM;EACvB\u002F\u002FK,CAAC,CAACggL,OAAO,GAAG,MAAM;EAClBhgL,CAAC,CAACigL,UAAU,GAAG,MAAM;EACrBjgL,CAAC,CAACkgL,UAAU,GAAG,MAAM;EACrBlgL,CAAC,CAACmgL,mBAAmB,GAAG,MAAM;EAC9BngL,CAAC,CAACogL,eAAe,GAAG,MAAM;EAC1BpgL,CAAC,CAACqgL,eAAe,GAAG,MAAM;EAC1BrgL,CAAC,CAACsgL,wBAAwB,GAAG,MAAM;EACnCtgL,CAAC,CAACugL,YAAY,GAAG,MAAM;EACvBvgL,CAAC,CAACwgL,WAAW,GAAG,MAAM;EACtBxgL,CAAC,CAACygL,YAAY,GAAG,MAAM;EACvBzgL,CAAC,CAAC0gL,WAAW,GAAG,MAAM;EACtB1gL,CAAC,CAAC2gL,YAAY,GAAG,MAAM;EACvB3gL,CAAC,CAAC4gL,cAAc,GAAG,MAAM;EACzB5gL,CAAC,CAAC6gL,WAAW,GAAG,MAAM;EACtB7gL,CAAC,CAAC8gL,YAAY,GAAG,MAAM;EACvB9gL,CAAC,CAAC+gL,GAAG,GAAG,MAAM;EACd\u002FgL,CAAC,CAACghL,SAAS,GAAG,MAAM;EACpBhhL,CAAC,CAACihL,UAAU,GAAG,MAAM;EACrBjhL,CAAC,CAACkhL,SAAS,GAAG,MAAM;EACpBlhL,CAAC,CAACmhL,yBAAyB,GAAG,MAAM;EACpCnhL,CAAC,CAACohL,OAAO,GAAG,MAAM;EAClBphL,CAAC,CAACqhL,cAAc,GAAG,MAAM;EACzBrhL,CAAC,CAACshL,YAAY,GAAG,MAAM;EACvBthL,CAAC,CAACuhL,oBAAoB,GAAG,MAAM;EAC\u002FBvhL,CAAC,CAACwhL,WAAW,GAAG,MAAM;EACtBxhL,CAAC,CAACyhL,WAAW,GAAG,MAAM;EACtBzhL,CAAC,CAAC0hL,aAAa,GAAG,MAAM;EACxB1hL,CAAC,CAAC2hL,WAAW,GAAG,MAAM;EACtB3hL,CAAC,CAAC4hL,mBAAmB,GAAG,MAAM;EAC9B5hL,CAAC,CAAC6hL,WAAW,GAAG,MAAM;EACtB7hL,CAAC,CAAC8hL,YAAY,GAAG,MAAM;EACvB9hL,CAAC,CAAC+hL,mBAAmB,GAAG,MAAM;EAC9B\u002FhL,CAAC,CAACgiL,WAAW,GAAG,MAAM;EACtBhiL,CAAC,CAACiiL,QAAQ,GAAG,MAAM;EACnBjiL,CAAC,CAACkiL,SAAS,GAAG,MAAM;EACpBliL,CAAC,CAACmiL,UAAU,GAAG,MAAM;EACrBniL,CAAC,CAACoiL,QAAQ,GAAG,MAAM;EACnBpiL,CAAC,CAACqiL,SAAS,GAAG,MAAM;EACpBriL,CAAC,CAACsiL,WAAW,GAAG,MAAM;EACtBtiL,CAAC,CAACuiL,OAAO,GAAG,MAAM;EAClBviL,CAAC,CAACwiL,SAAS,GAAG,MAAM;EACpBxiL,CAAC,CAACyiL,CAAC,GAAG,MAAM;EACZziL,CAAC,CAAC0iL,MAAM,GAAG,MAAM;EACjB1iL,CAAC,CAAC2iL,IAAI,GAAG,MAAM;EACf3iL,CAAC,CAAC4iL,QAAQ,GAAG,MAAM;EACnB5iL,CAAC,CAAC6iL,SAAS,GAAG,MAAM;EACpB7iL,CAAC,CAAC8iL,MAAM,GAAG,MAAM;EACjB9iL,CAAC,CAAC+iL,MAAM,GAAG,MAAM;EACjB\u002FiL,CAAC,CAACgjL,OAAO,GAAG,MAAM;EAClBhjL,CAAC,CAACijL,WAAW,GAAG,MAAM;EACtBjjL,CAAC,CAACkjL,gBAAgB,GAAG,MAAM;EAC3BljL,CAAC,CAACmjL,SAAS,GAAG,MAAM;EACpBnjL,CAAC,CAACojL,UAAU,GAAG,MAAM;EACrBpjL,CAAC,CAACqjL,SAAS,GAAG,MAAM;EACpBrjL,CAAC,CAACsjL,SAAS,GAAG,MAAM;EACpBtjL,CAAC,CAACujL,KAAK,GAAG,MAAM;EAChBvjL,CAAC,CAACwjL,SAAS,GAAG,MAAM;EACpBxjL,CAAC,CAACyjL,cAAc,GAAG,MAAM;EACzBzjL,CAAC,CAAC0jL,cAAc,GAAG,MAAM;EACzB1jL,CAAC,CAAC2jL,cAAc,GAAG,MAAM;EACzB3jL,CAAC,CAAC4jL,iBAAiB,GAAG,MAAM;EAC5B5jL,CAAC,CAAC6jL,cAAc,GAAG,MAAM;EACzB7jL,CAAC,CAAC8jL,eAAe,GAAG,MAAM;EAC1B9jL,CAAC,CAAC+jL,SAAS,GAAG,MAAM;EACpB\u002FjL,CAAC,CAACgkL,MAAM,GAAG,MAAM;EACjBhkL,CAAC,CAACikL,SAAS,GAAG,MAAM;EACpBjkL,CAAC,CAACkkL,SAAS,GAAG,MAAM;EACpBlkL,CAAC,CAACmkL,SAAS,GAAG,MAAM;EACpBnkL,CAAC,CAACokL,UAAU,GAAG,MAAM;EACrBpkL,CAAC,CAACqkL,KAAK,GAAG,MAAM;EAChBrkL,CAAC,CAACskL,UAAU,GAAG,MAAM;EACrBtkL,CAAC,CAACukL,aAAa,GAAG,MAAM;EACxBvkL,CAAC,CAACwkL,UAAU,GAAG,MAAM;EACrBxkL,CAAC,CAACykL,cAAc,GAAG,MAAM;EACzBzkL,CAAC,CAAC0kL,UAAU,GAAG,MAAM;EACrB1kL,CAAC,CAAC2kL,aAAa,GAAG,MAAM;EACxB3kL,CAAC,CAAC4kL,qBAAqB,GAAG,MAAM;EAChC5kL,CAAC,CAAC6kL,cAAc,GAAG,MAAM;EACzB7kL,CAAC,CAAC8kL,SAAS,GAAG,MAAM;EACpB9kL,CAAC,CAAC+kL,kBAAkB,GAAG,MAAM;EAC7B\u002FkL,CAAC,CAACglL,UAAU,GAAG,MAAM;EACrBhlL,CAAC,CAACilL,OAAO,GAAG,MAAM;EAClBjlL,CAAC,CAACklL,OAAO,GAAG,MAAM;EAClBllL,CAAC,CAACmlL,eAAe,GAAG,MAAM;EAC1BnlL,CAAC,CAAColL,eAAe,GAAG,MAAM;EAC1BplL,CAAC,CAACqlL,cAAc,GAAG,MAAM;EACzBrlL,CAAC,CAACslL,UAAU,GAAG,MAAM;EACrBtlL,CAAC,CAACulL,UAAU,GAAG,MAAM;EACrBvlL,CAAC,CAACwlL,aAAa,GAAG,MAAM;EACxBxlL,CAAC,CAACylL,mBAAmB,GAAG,MAAM;EAC9BzlL,CAAC,CAAC0lL,kBAAkB,GAAG,MAAM;EAC7B1lL,CAAC,CAAC2lL,cAAc,GAAG,MAAM;EACzB3lL,CAAC,CAAC4lL,KAAK,GAAG,MAAM;EAChB5lL,CAAC,CAAC6lL,SAAS,GAAG,MAAM;EACpB7lL,CAAC,CAAC8lL,OAAO,GAAG,MAAM;EAClB9lL,CAAC,CAAC+lL,MAAM,GAAG,MAAM;EACjB\u002FlL,CAAC,CAACgmL,OAAO,GAAG,MAAM;EAClBhmL,CAAC,CAACimL,cAAc,GAAG,MAAM;EACzBjmL,CAAC,CAACkmL,OAAO,GAAG,MAAM;EAClBlmL,CAAC,CAACmmL,eAAe,GAAG,MAAM;EAC1BnmL,CAAC,CAAComL,oBAAoB,GAAG,MAAM;EAC\u002FBpmL,CAAC,CAACqmL,YAAY,GAAG,MAAM;EACvBrmL,CAAC,CAACsmL,YAAY,GAAG,MAAM;EACvBtmL,CAAC,CAACumL,cAAc,GAAG,MAAM;EACzBvmL,CAAC,CAACwmL,SAAS,GAAG,MAAM;EACpBxmL,CAAC,CAACymL,WAAW,GAAG,MAAM;EACtBzmL,CAAC,CAAC0mL,KAAK,GAAG,MAAM;EAChB1mL,CAAC,CAAC2mL,cAAc,GAAG,MAAM;EACzB3mL,CAAC,CAAC4mL,cAAc,GAAG,MAAM;EACzB5mL,CAAC,CAAC6mL,cAAc,GAAG,MAAM;EACzB7mL,CAAC,CAAC8mL,uBAAuB,GAAG,MAAM;EAClC9mL,CAAC,CAAC+mL,iBAAiB,GAAG,MAAM;EAC5B\u002FmL,CAAC,CAACgnL,uBAAuB,GAAG,MAAM;EAClChnL,CAAC,CAACinL,MAAM,GAAG,MAAM;EACjBjnL,CAAC,CAACknL,WAAW,GAAG,MAAM;EACtBlnL,CAAC,CAACmnL,WAAW,GAAG,MAAM;EACtBnnL,CAAC,CAAConL,SAAS,GAAG,MAAM;EACpBpnL,CAAC,CAACqnL,MAAM,GAAG,MAAM;EACjBrnL,CAAC,CAACsnL,UAAU,GAAG,MAAM;EACrBtnL,CAAC,CAACunL,UAAU,GAAG,MAAM;EACrBvnL,CAAC,CAACwnL,eAAe,GAAG,MAAM;EAC1BxnL,CAAC,CAACynL,kBAAkB,GAAG,MAAM;EAC7BznL,CAAC,CAAC0nL,eAAe,GAAG,MAAM;EAC1B1nL,CAAC,CAAC2nL,mBAAmB,GAAG,MAAM;EAC9B3nL,CAAC,CAAC4nL,iBAAiB,GAAG,MAAM;EAC5B5nL,CAAC,CAAC6nL,cAAc,GAAG,MAAM;EACzB7nL,CAAC,CAAC8nL,kBAAkB,GAAG,MAAM;EAC7B9nL,CAAC,CAACyI,CAAC,GAAG,MAAM;EACZzI,CAAC,CAAC+nL,MAAM,GAAG,MAAM;EACjB\u002FnL,CAAC,CAACgoL,UAAU,GAAG,MAAM;EACrBhoL,CAAC,CAACioL,UAAU,GAAG,MAAM;EACrBjoL,CAAC,CAACkoL,UAAU,GAAG,MAAM;EACrBloL,CAAC,CAACmoL,GAAG,GAAG,MAAM;EACdnoL,CAAC,CAACooL,SAAS,GAAG,MAAM;EACpBpoL,CAAC,CAACqoL,WAAW,GAAG,MAAM;EACtBroL,CAAC,CAACsoL,eAAe,GAAG,MAAM;EAC1BtoL,CAAC,CAACuoL,SAAS,GAAG,MAAM;EACpBvoL,CAAC,CAACwoL,QAAQ,GAAG,MAAM;EACnBxoL,CAAC,CAACyoL,cAAc,GAAG,MAAM;EACzBzoL,CAAC,CAAC0oL,YAAY,GAAG,MAAM;EACvB1oL,CAAC,CAAC2oL,YAAY,GAAG,MAAM;EACvB3oL,CAAC,CAAC4oL,OAAO,GAAG,MAAM;EAClB5oL,CAAC,CAAC6oL,SAAS,GAAG,MAAM;EACpB7oL,CAAC,CAAC8oL,UAAU,GAAG,MAAM;EACrB9oL,CAAC,CAAC+oL,SAAS,GAAG,MAAM;EACpB\u002FoL,CAAC,CAACgpL,cAAc,GAAG,MAAM;EACzBhpL,CAAC,CAACipL,gBAAgB,GAAG,MAAM;EAC3BjpL,CAAC,CAACkpL,eAAe,GAAG,MAAM;EAC1BlpL,CAAC,CAACmpL,UAAU,GAAG,MAAM;EACrBnpL,CAAC,CAACopL,KAAK,GAAG,MAAM;EAChBppL,CAAC,CAACqpL,WAAW,GAAG,MAAM;EACtBrpL,CAAC,CAACspL,oBAAoB,GAAG,MAAM;EAC\u002FBtpL,CAAC,CAACupL,oBAAoB,GAAG,MAAM;EAC\u002FBvpL,CAAC,CAACwpL,kBAAkB,GAAG,MAAM;EAC7BxpL,CAAC,CAACypL,eAAe,GAAG,MAAM;EAC1BzpL,CAAC,CAAC0pL,WAAW,GAAG,MAAM;EACtB1pL,CAAC,CAAC2pL,KAAK,GAAG,MAAM;EAChB3pL,CAAC,CAAC4pL,UAAU,GAAG,MAAM;EACrB5pL,CAAC,CAAC6pL,aAAa,GAAG,MAAM;EACxB7pL,CAAC,CAAC8pL,UAAU,GAAG,MAAM;EACrB9pL,CAAC,CAAC+pL,cAAc,GAAG,MAAM;EACzB\u002FpL,CAAC,CAACgqL,cAAc,GAAG,MAAM;EACzBhqL,CAAC,CAACiqL,WAAW,GAAG,MAAM;EACtBjqL,CAAC,CAACkqL,eAAe,GAAG,MAAM;EAC1BlqL,CAAC,CAACmqL,UAAU,GAAG,MAAM;EACrBnqL,CAAC,CAACoqL,UAAU,GAAG,MAAM;EACrBpqL,CAAC,CAACqqL,uBAAuB,GAAG,MAAM;EAClCrqL,CAAC,CAACsqL,uBAAuB,GAAG,MAAM;EAClCtqL,CAAC,CAACuqL,cAAc,GAAG,MAAM;EACzBvqL,CAAC,CAACwqL,uBAAuB,GAAG,MAAM;EAClCxqL,CAAC,CAACyqL,UAAU,GAAG,MAAM;EACrBzqL,CAAC,CAAC0qL,MAAM,GAAG,MAAM;EACjB1qL,CAAC,CAAC2qL,MAAM,GAAG,MAAM;EACjB3qL,CAAC,CAAC4qL,OAAO,GAAG,MAAM;EAClB5qL,CAAC,CAAC6qL,UAAU,GAAG,MAAM;EACrB7qL,CAAC,CAAC8qL,UAAU,GAAG,MAAM;EACrB9qL,CAAC,CAAC+qL,CAAC,GAAG,MAAM;EACZ\u002FqL,CAAC,CAACgrL,MAAM,GAAG,MAAM;EACjBhrL,CAAC,CAACirL,SAAS,GAAG,MAAM;EACpBjrL,CAAC,CAACkrL,UAAU,GAAG,MAAM;EACrBlrL,CAAC,CAACmrL,UAAU,GAAG,MAAM;EACrBnrL,CAAC,CAACorL,mBAAmB,GAAG,MAAM;EAC9BprL,CAAC,CAACqrL,QAAQ,GAAG,MAAM;EACnBrrL,CAAC,CAACsrL,eAAe,GAAG,MAAM;EAC1BtrL,CAAC,CAACurL,eAAe,GAAG,MAAM;EAC1BvrL,CAAC,CAACwrL,WAAW,GAAG,MAAM;EACtBxrL,CAAC,CAACyrL,QAAQ,GAAG,MAAM;EACnBzrL,CAAC,CAAC0rL,sBAAsB,GAAG,MAAM;EACjC1rL,CAAC,CAAC2rL,SAAS,GAAG,MAAM;EACpB3rL,CAAC,CAAC4rL,cAAc,GAAG,MAAM;EACzB5rL,CAAC,CAAC6rL,mBAAmB,GAAG,MAAM;EAC9B7rL,CAAC,CAAC8rL,wBAAwB,GAAG,MAAM;EACnC9rL,CAAC,CAAC+rL,QAAQ,GAAG,MAAM;EACnB\u002FrL,CAAC,CAACgsL,OAAO,GAAG,MAAM;EAClBhsL,CAAC,CAACisL,WAAW,GAAG,MAAM;EACtBjsL,CAAC,CAACksL,SAAS,GAAG,MAAM;EACpBlsL,CAAC,CAACmsL,UAAU,GAAG,MAAM;EACrBnsL,CAAC,CAACosL,SAAS,GAAG,MAAM;EACpBpsL,CAAC,CAACqsL,UAAU,GAAG,MAAM;EACrBrsL,CAAC,CAACssL,WAAW,GAAG,MAAM;EACtBtsL,CAAC,CAACusL,UAAU,GAAG,MAAM;EACrBvsL,CAAC,CAACwsL,QAAQ,GAAG,MAAM;EACnBxsL,CAAC,CAACysL,SAAS,GAAG,MAAM;EACpBzsL,CAAC,CAAC0sL,MAAM,GAAG,MAAM;EACjB1sL,CAAC,CAAC2sL,WAAW,GAAG,MAAM;EACtB3sL,CAAC,CAAC4sL,WAAW,GAAG,MAAM;EACtB5sL,CAAC,CAAC6sL,kBAAkB,GAAG,MAAM;EAC7B7sL,CAAC,CAAC8sL,sBAAsB,GAAG,MAAM;EACjC9sL,CAAC,CAAC+sL,8BAA8B,GAAG,MAAM;EACzC\u002FsL,CAAC,CAACgtL,uBAAuB,GAAG,MAAM;EAClChtL,CAAC,CAACitL,+BAA+B,GAAG,MAAM;EAC1CjtL,CAAC,CAACktL,YAAY,GAAG,MAAM;EACvBltL,CAAC,CAACmtL,uCAAuC,GAAG,MAAM;EAClDntL,CAAC,CAACotL,8BAA8B,GAAG,MAAM;EACzCptL,CAAC,CAACqtL,yBAAyB,GAAG,MAAM;EACpCrtL,CAAC,CAACstL,8BAA8B,GAAG,MAAM;EACzCttL,CAAC,CAACutL,yBAAyB,GAAG,MAAM;EACpCvtL,CAAC,CAACwtL,0BAA0B,GAAG,MAAM;EACrCxtL,CAAC,CAACytL,2BAA2B,GAAG,MAAM;EACtCztL,CAAC,CAAC0tL,+BAA+B,GAAG,MAAM;EAC1C1tL,CAAC,CAAC2tL,0BAA0B,GAAG,MAAM;EACrC3tL,CAAC,CAAC4tL,gBAAgB,GAAG,MAAM;EAC3B5tL,CAAC,CAAC6tL,gBAAgB,GAAG,MAAM;EAC3B7tL,CAAC,CAAC8tL,WAAW,GAAG,MAAM;EACtB9tL,CAAC,CAAC+tL,SAAS,GAAG,MAAM;EACpB\u002FtL,CAAC,CAACguL,cAAc,GAAG,MAAM;EACzBhuL,CAAC,CAACiuL,6BAA6B,GAAG,MAAM;EACxCjuL,CAAC,CAACkuL,8BAA8B,GAAG,MAAM;EACzCluL,CAAC,CAACmuL,4BAA4B,GAAG,MAAM;EACvCnuL,CAAC,CAACouL,uBAAuB,GAAG,MAAM;EAClCpuL,CAAC,CAACquL,UAAU,GAAG,MAAM;EACrBruL,CAAC,CAACsuL,UAAU,GAAG,MAAM;EACrBtuL,CAAC,CAACuuL,QAAQ,GAAG,MAAM;EACnBvuL,CAAC,CAACwuL,UAAU,GAAG,MAAM;EACrBxuL,CAAC,CAACyuL,UAAU,GAAG,MAAM;EACrBzuL,CAAC,CAAC0uL,UAAU,GAAG,MAAM;EACrB1uL,CAAC,CAAC2uL,mBAAmB,GAAG,MAAM;EAC9B3uL,CAAC,CAAC4uL,GAAG,GAAG,MAAM;EACd5uL,CAAC,CAAC6uL,YAAY,GAAG,MAAM;EACvB7uL,CAAC,CAAC8uL,UAAU,GAAG,MAAM;EACrB9uL,CAAC,CAAC+uL,MAAM,GAAG,MAAM;EACjB\u002FuL,CAAC,CAACgvL,KAAK,GAAG,MAAM;EAChBhvL,CAAC,CAACivL,SAAS,GAAG,MAAM;EACpBjvL,CAAC,CAACkvL,OAAO,GAAG,MAAM;EAClBlvL,CAAC,CAACmvL,IAAI,GAAG,MAAM;EACfnvL,CAAC,CAACI,CAAC,GAAG,MAAM;EACZJ,CAAC,CAACovL,SAAS,GAAG,MAAM;EACpBpvL,CAAC,CAACqvL,SAAS,GAAG,MAAM;EACpBrvL,CAAC,CAACsvL,OAAO,GAAG,MAAM;EAClBtvL,CAAC,CAACuvL,SAAS,GAAG,MAAM;EACpBvvL,CAAC,CAACwvL,UAAU,GAAG,MAAM;EACrBxvL,CAAC,CAACyvL,WAAW,GAAG,MAAM;EACtBzvL,CAAC,CAAC0vL,EAAE,GAAG,MAAM;EACb1vL,CAAC,CAAC2vL,UAAU,GAAG,MAAM;EACrB3vL,CAAC,CAAC4vL,MAAM,GAAG,MAAM;EACjB5vL,CAAC,CAAC6vL,SAAS,GAAG,MAAM;EACpB7vL,CAAC,CAACK,CAAC,GAAG,MAAM;EACZL,CAAC,CAAC8vL,WAAW,GAAG,MAAM;EACtB9vL,CAAC,CAAC+vL,SAAS,GAAG,MAAM;EACpB\u002FvL,CAAC,CAACgwL,MAAM,GAAG,MAAM;EACjBhwL,CAAC,CAACiwL,MAAM,GAAG,MAAM;EACjBjwL,CAAC,CAACkwL,SAAS,GAAG,MAAM;EACpBlwL,CAAC,CAACmwL,UAAU,GAAG,MAAM;EACrBnwL,CAAC,CAACowL,UAAU,GAAG,MAAM;EACrBpwL,CAAC,CAACqwL,UAAU,GAAG,MAAM;EACrBrwL,CAAC,CAACswL,UAAU,GAAG,MAAM;EACrBtwL,CAAC,CAACuwL,mBAAmB,GAAG,MAAM;EAC9BvwL,CAAC,CAACwwL,QAAQ,GAAG,MAAM;EACnBxwL,CAAC,CAACywL,YAAY,GAAG,MAAM;EACvBzwL,CAAC,CAAC0wL,eAAe,GAAG,MAAM;EAC1B1wL,CAAC,CAAC2wL,eAAe,GAAG,MAAM;EAC1B3wL,CAAC,CAAC4wL,wBAAwB,GAAG,MAAM;EACnC5wL,CAAC,CAAC6wL,WAAW,GAAG,MAAM;EACtB7wL,CAAC,CAAC8wL,OAAO,GAAG,MAAM;EAClB9wL,CAAC,CAAC+wL,WAAW,GAAG,MAAM;EACtB\u002FwL,CAAC,CAACgxL,SAAS,GAAG,MAAM;EACpBhxL,CAAC,CAACixL,UAAU,GAAG,MAAM;EACrBjxL,CAAC,CAACkxL,SAAS,GAAG,MAAM;EACpBlxL,CAAC,CAACmxL,SAAS,GAAG,MAAM;EACpBnxL,CAAC,CAACoxL,eAAe,GAAG,MAAM;EAC1BpxL,CAAC,CAACqxL,oBAAoB,GAAG,MAAM;EAC\u002FBrxL,CAAC,CAACsxL,cAAc,GAAG,MAAM;EACzBtxL,CAAC,CAACuxL,mBAAmB,GAAG,MAAM;EAC9BvxL,CAAC,CAACwxL,wBAAwB,GAAG,MAAM;EACnCxxL,CAAC,CAACyxL,0BAA0B,GAAG,MAAM;EACrCzxL,CAAC,CAAC0xL,yBAAyB,GAAG,MAAM;EACpC1xL,CAAC,CAAC2xL,gBAAgB,GAAG,MAAM;EAC3B3xL,CAAC,CAAC4xL,eAAe,GAAG,MAAM;EAC1B5xL,CAAC,CAAC6xL,oBAAoB,GAAG,MAAM;EAC\u002FB7xL,CAAC,CAAC8xL,qBAAqB,GAAG,MAAM;EAChC9xL,CAAC,CAAC+xL,kBAAkB,GAAG,MAAM;EAC7B\u002FxL,CAAC,CAACgyL,uBAAuB,GAAG,MAAM;EAClChyL,CAAC,CAACiyL,QAAQ,GAAG,MAAM;EACnBjyL,CAAC,CAACkyL,GAAG,GAAG,MAAM;EACdlyL,CAAC,CAACmyL,YAAY,GAAG,MAAM;EACvBnyL,CAAC,CAACoyL,SAAS,GAAG,MAAM;EACpBpyL,CAAC,CAACqyL,iBAAiB,GAAG,MAAM;EAC5BryL,CAAC,CAACsyL,kBAAkB,GAAG,MAAM;EAC7BtyL,CAAC,CAACuyL,sBAAsB,GAAG,MAAM;EACjCvyL,CAAC,CAACwyL,YAAY,GAAG,MAAM;EACvBxyL,CAAC,CAACyyL,oBAAoB,GAAG,MAAM;EAC\u002FBzyL,CAAC,CAAC0yL,cAAc,GAAG,MAAM;EACzB1yL,CAAC,CAAC2yL,qBAAqB,GAAG,MAAM;EAChC3yL,CAAC,CAAC4yL,kBAAkB,GAAG,MAAM;EAC7B5yL,CAAC,CAAC6yL,WAAW,GAAG,MAAM;EACtB7yL,CAAC,CAAC8yL,MAAM,GAAG,MAAM;EACjB9yL,CAAC,CAAC+yL,KAAK,GAAG,MAAM;EAChB\u002FyL,CAAC,CAACgzL,UAAU,GAAG,MAAM;EACrBhzL,CAAC,CAACizL,UAAU,GAAG,MAAM;EACrBjzL,CAAC,CAACkzL,UAAU,GAAG,MAAM;EACrBlzL,CAAC,CAACmzL,QAAQ,GAAG,MAAM;EACnBnzL,CAAC,CAACozL,OAAO,GAAG,MAAM;EAClBpzL,CAAC,CAACqzL,YAAY,GAAG,MAAM;EACvBrzL,CAAC,CAACszL,UAAU,GAAG,MAAM;EACrBtzL,CAAC,CAACuzL,GAAG,GAAG,MAAM;EACdvzL,CAAC,CAACwzL,SAAS,GAAG,MAAM;EACpBxzL,CAAC,CAACyzL,eAAe,GAAG,MAAM;EAC1BzzL,CAAC,CAAC0zL,SAAS,GAAG,MAAM;EACpB1zL,CAAC,CAAC2zL,YAAY,GAAG,MAAM;EACvB3zL,CAAC,CAAC4zL,iBAAiB,GAAG,MAAM;EAC5B5zL,CAAC,CAAC6zL,UAAU,GAAG,MAAM;EACrB7zL,CAAC,CAAC8zL,SAAS,GAAG,MAAM;EACpB9zL,CAAC,CAAC+zL,UAAU,GAAG,MAAM;EACrB\u002FzL,CAAC,CAACg0L,mBAAmB,GAAG,MAAM;EAC9Bh0L,CAAC,CAACi0L,QAAQ,GAAG,MAAM;EACnBj0L,CAAC,CAACk0L,eAAe,GAAG,MAAM;EAC1Bl0L,CAAC,CAACm0L,eAAe,GAAG,MAAM;EAC1Bn0L,CAAC,CAACo0L,wBAAwB,GAAG,MAAM;EACnCp0L,CAAC,CAACq0L,QAAQ,GAAG,MAAM;EACnBr0L,CAAC,CAACs0L,WAAW,GAAG,MAAM;EACtBt0L,CAAC,CAACu0L,UAAU,GAAG,MAAM;EACrBv0L,CAAC,CAACw0L,SAAS,GAAG,MAAM;EACpBx0L,CAAC,CAACy0L,UAAU,GAAG,MAAM;EACrBz0L,CAAC,CAAC00L,MAAM,GAAG,MAAM;EACjB10L,CAAC,CAAC20L,aAAa,GAAG,MAAM;EACxB30L,CAAC,CAAC40L,qBAAqB,GAAG,MAAM;EAChC50L,CAAC,CAAC60L,EAAE,GAAG,MAAM;EACb70L,CAAC,CAAC80L,KAAK,GAAG,MAAM;EAChB90L,CAAC,CAAC+0L,SAAS,GAAG,MAAM;EACpB\u002F0L,CAAC,CAACg1L,MAAM,GAAG,MAAM;EACjBh1L,CAAC,CAACi1L,OAAO,GAAG,MAAM;EAClBj1L,CAAC,CAACk1L,UAAU,GAAG,MAAM;EACrBl1L,CAAC,CAACm1L,SAAS,GAAG,MAAM;EACpBn1L,CAAC,CAACo1L,UAAU,GAAG,MAAM;EACrBp1L,CAAC,CAACq1L,mBAAmB,GAAG,MAAM;EAC9Br1L,CAAC,CAACs1L,QAAQ,GAAG,MAAM;EACnBt1L,CAAC,CAACu1L,cAAc,GAAG,MAAM;EACzBv1L,CAAC,CAACw1L,sBAAsB,GAAG,MAAM;EACjCx1L,CAAC,CAACy1L,iBAAiB,GAAG,MAAM;EAC5Bz1L,CAAC,CAAC01L,yBAAyB,GAAG,MAAM;EACpC11L,CAAC,CAAC21L,eAAe,GAAG,MAAM;EAC1B31L,CAAC,CAAC41L,eAAe,GAAG,MAAM;EAC1B51L,CAAC,CAAC61L,wBAAwB,GAAG,MAAM;EACnC71L,CAAC,CAAC81L,UAAU,GAAG,MAAM;EACrB91L,CAAC,CAAC+1L,WAAW,GAAG,MAAM;EACtB\u002F1L,CAAC,CAACg2L,UAAU,GAAG,MAAM;EACrBh2L,CAAC,CAACi2L,OAAO,GAAG,MAAM;EAClBj2L,CAAC,CAACmoC,CAAC,GAAG,MAAM;EACZnoC,CAAC,CAACk2L,UAAU,GAAG,MAAM;EACrBl2L,CAAC,CAACm2L,MAAM,GAAG,MAAM;EACjBn2L,CAAC,CAACo2L,MAAM,GAAG,MAAM;EACjBp2L,CAAC,CAACq2L,UAAU,GAAG,MAAM;EACrBr2L,CAAC,CAACs2L,SAAS,GAAG,MAAM;EACpBt2L,CAAC,CAACu2L,cAAc,GAAG,MAAM;EACzBv2L,CAAC,CAACw2L,gBAAgB,GAAG,MAAM;EAC3Bx2L,CAAC,CAACy2L,UAAU,GAAG,MAAM;EACrBz2L,CAAC,CAAC02L,eAAe,GAAG,MAAM;EAC1B12L,CAAC,CAAC22L,UAAU,GAAG,MAAM;EACrB32L,CAAC,CAAC42L,eAAe,GAAG,MAAM;EAC1B52L,CAAC,CAAC62L,UAAU,GAAG,MAAM;EACrB72L,CAAC,CAAC82L,gBAAgB,GAAG,MAAM;EAC3B92L,CAAC,CAAC+2L,gBAAgB,GAAG,MAAM;EAC3B\u002F2L,CAAC,CAACg3L,WAAW,GAAG,MAAM;EACtBh3L,CAAC,CAACi3L,KAAK,GAAG,MAAM;EAChBj3L,CAAC,CAACk3L,WAAW,GAAG,MAAM;EACtBl3L,CAAC,CAACm3L,iBAAiB,GAAG,MAAM;EAC5Bn3L,CAAC,CAACo3L,WAAW,GAAG,MAAM;EACtBp3L,CAAC,CAACq3L,SAAS,GAAG,MAAM;EACpBr3L,CAAC,CAACs3L,MAAM,GAAG,MAAM;EACjBt3L,CAAC,CAACu3L,OAAO,GAAG,MAAM;EAClBv3L,CAAC,CAACw3L,WAAW,GAAG,MAAM;EACtBx3L,CAAC,CAACy3L,KAAK,GAAG,MAAM;EAChBz3L,CAAC,CAAC03L,IAAI,GAAG,MAAM;EACf13L,CAAC,CAAC23L,UAAU,GAAG,MAAM;EACrB33L,CAAC,CAAC43L,SAAS,GAAG,MAAM;EACpB53L,CAAC,CAAC63L,UAAU,GAAG,MAAM;EACrB73L,CAAC,CAAC83L,mBAAmB,GAAG,MAAM;EAC9B93L,CAAC,CAAC+3L,kBAAkB,GAAG,MAAM;EAC7B\u002F3L,CAAC,CAACg4L,UAAU,GAAG,MAAM;EACrBh4L,CAAC,CAACi4L,UAAU,GAAG,MAAM;EACrBj4L,CAAC,CAACk4L,IAAI,GAAG,MAAM;EACfl4L,CAAC,CAACm4L,UAAU,GAAG,MAAM;EACrBn4L,CAAC,CAACo4L,WAAW,GAAG,MAAM;EACtBp4L,CAAC,CAACq4L,QAAQ,GAAG,MAAM;EACnBr4L,CAAC,CAACs4L,YAAY,GAAG,MAAM;EACvBt4L,CAAC,CAACu4L,YAAY,GAAG,MAAM;EACvBv4L,CAAC,CAACw4L,cAAc,GAAG,MAAM;EACzBx4L,CAAC,CAACy4L,YAAY,GAAG,MAAM;EACvBz4L,CAAC,CAAC04L,aAAa,GAAG,MAAM;EACxB14L,CAAC,CAAC24L,YAAY,GAAG,MAAM;EACvB34L,CAAC,CAAC44L,WAAW,GAAG,MAAM;EACtB54L,CAAC,CAAC64L,YAAY,GAAG,MAAM;EACvB74L,CAAC,CAAC84L,QAAQ,GAAG,MAAM;EACnB94L,CAAC,CAAC+4L,eAAe,GAAG,MAAM;EAC1B\u002F4L,CAAC,CAACg5L,kBAAkB,GAAG,MAAM;EAC7Bh5L,CAAC,CAACi5L,cAAc,GAAG,MAAM;EACzBj5L,CAAC,CAACk5L,IAAI,GAAG,MAAM;EACfl5L,CAAC,CAACm5L,UAAU,GAAG,MAAM;EACrBn5L,CAAC,CAACo5L,WAAW,GAAG,MAAM;EACtBp5L,CAAC,CAACq5L,gBAAgB,GAAG,MAAM;EAC3Br5L,CAAC,CAACs5L,WAAW,GAAG,MAAM;EACtBt5L,CAAC,CAACu5L,oBAAoB,GAAG,MAAM;EAC\u002FBv5L,CAAC,CAACw5L,mBAAmB,GAAG,MAAM;EAC9Bx5L,CAAC,CAACy5L,UAAU,GAAG,MAAM;EACrBz5L,CAAC,CAAC05L,UAAU,GAAG,MAAM;EACrB15L,CAAC,CAAC25L,WAAW,GAAG,MAAM;EACtB35L,CAAC,CAAC45L,UAAU,GAAG,MAAM;EACrB55L,CAAC,CAAC65L,UAAU,GAAG,MAAM;EACrB75L,CAAC,CAAC85L,UAAU,GAAG,MAAM;EACrB95L,CAAC,CAAC+5L,UAAU,GAAG,MAAM;EACrB\u002F5L,CAAC,CAACg6L,MAAM,GAAG,MAAM;EACjBh6L,CAAC,CAACi6L,cAAc,GAAG,MAAM;EACzBj6L,CAAC,CAACk6L,OAAO,GAAG,MAAM;EAClBl6L,CAAC,CAACm6L,UAAU,GAAG,MAAM;EACrBn6L,CAAC,CAACo6L,UAAU,GAAG,MAAM;EACrBp6L,CAAC,CAAC,SAAS,CAAC,GAAG,MAAM;EAGrBA,CAAC,CAACq6L,iBAAiB,GAAG,MAAM;EAC5Br6L,CAAC,CAACs6L,iBAAiB,GAAG,MAAM;EAC5Bt6L,CAAC,CAACu6L,kBAAkB,GAAG,MAAM;EAC7Bv6L,CAAC,CAACw6L,kBAAkB,GAAG,MAAM;EAC7Bx6L,CAAC,CAACy6L,kBAAkB,GAAG,MAAM;EAC7Bz6L,CAAC,CAAC06L,kBAAkB,GAAG,MAAM;EAC7B16L,CAAC,CAAC26L,mBAAmB,GAAG,MAAM;EAC9B36L,CAAC,CAAC46L,mBAAmB,GAAG,MAAM;EAC9B56L,CAAC,CAAC66L,aAAa,GAAG,MAAM;EACxB76L,CAAC,CAAC86L,cAAc,GAAG,MAAM;EACzB96L,CAAC,CAAC+6L,gBAAgB,GAAG,MAAM;EAC3B\u002F6L,CAAC,CAACg7L,gBAAgB,GAAG,MAAM;EAC3Bh7L,CAAC,CAACi7L,cAAc,GAAG,MAAM;EACzBj7L,CAAC,CAACk7L,cAAc,GAAG,MAAM;EACzBl7L,CAAC,CAACm7L,iBAAiB,GAAG,MAAM;EAC5Bn7L,CAAC,CAACo7L,iBAAiB,GAAG,MAAM;EAC5Bp7L,CAAC,CAACq7L,cAAc,GAAG,MAAM;EACzBr7L,CAAC,CAACs7L,cAAc,GAAG,MAAM;EACzBt7L,CAAC,CAACu7L,YAAY,GAAG,MAAM;EACvBv7L,CAAC,CAACw7L,YAAY,GAAG,MAAM;EACvBx7L,CAAC,CAACy7L,aAAa,GAAG,MAAM;EACxBz7L,CAAC,CAAC07L,aAAa,GAAG,MAAM;EACxB17L,CAAC,CAAC27L,MAAM,GAAG,MAAM;EACjB37L,CAAC,CAAC47L,iBAAiB,GAAG,MAAM;EAC5B57L,CAAC,CAAC67L,kBAAkB,GAAG,MAAM;EAC7B77L,CAAC,CAAC87L,eAAe,GAAG,MAAM;EAC1B97L,CAAC,CAAC+7L,gBAAgB,GAAG,MAAM;EAC3B\u002F7L,CAAC,CAACg8L,YAAY,GAAG,MAAM;EACvBh8L,CAAC,CAACi8L,YAAY,GAAG,MAAM;EACvBj8L,CAAC,CAACk8L,aAAa,GAAG,MAAM;EACxBl8L,CAAC,CAACm8L,aAAa,GAAG,MAAM;EACxBn8L,CAAC,CAACo8L,aAAa,GAAG,MAAM;EACxBp8L,CAAC,CAACq8L,aAAa,GAAG,MAAM;EACxBr8L,CAAC,CAACs8L,cAAc,GAAG,MAAM;EACzBt8L,CAAC,CAACu8L,cAAc,GAAG,MAAM;EACzBv8L,CAAC,CAACw8L,cAAc,GAAG,MAAM;EACzBx8L,CAAC,CAACy8L,cAAc,GAAG,MAAM;EACzBz8L,CAAC,CAAC08L,eAAe,GAAG,MAAM;EAC1B18L,CAAC,CAAC28L,eAAe,GAAG,MAAM;EAC1B38L,CAAC,CAAC48L,eAAe,GAAG,MAAM;EAC1B58L,CAAC,CAAC68L,eAAe,GAAG,MAAM;EAC1B78L,CAAC,CAAC88L,gBAAgB,GAAG,MAAM;EAC3B98L,CAAC,CAAC+8L,gBAAgB,GAAG,MAAM;EAC3B\u002F8L,CAAC,CAACg9L,cAAc,GAAG,MAAM;EACzBh9L,CAAC,CAACi9L,cAAc,GAAG,MAAM;EACzBj9L,CAAC,CAACk9L,eAAe,GAAG,MAAM;EAC1Bl9L,CAAC,CAACm9L,eAAe,GAAG,MAAM;EAC1Bn9L,CAAC,CAACo9L,eAAe,GAAG,MAAM;EAC1Bp9L,CAAC,CAACq9L,eAAe,GAAG,MAAM;EAC1Br9L,CAAC,CAACs9L,gBAAgB,GAAG,MAAM;EAC3Bt9L,CAAC,CAACu9L,gBAAgB,GAAG,MAAM;EAC3Bv9L,CAAC,CAACw9L,gBAAgB,GAAG,MAAM;EAC3Bx9L,CAAC,CAACy9L,aAAa,GAAG,MAAM;EACxBz9L,CAAC,CAAC09L,qBAAqB,GAAG,MAAM;EAChC19L,CAAC,CAAC29L,kBAAkB,GAAG,MAAM;EAC7B39L,CAAC,CAAC49L,iBAAiB,GAAG,MAAM;EAC5B59L,CAAC,CAAC69L,cAAc,GAAG,MAAM;EACzB79L,CAAC,CAAC89L,mBAAmB,GAAG,MAAM;EAC9B99L,CAAC,CAAC+9L,gBAAgB,GAAG,MAAM;EAC3B\u002F9L,CAAC,CAACg+L,gBAAgB,GAAG,MAAM;EAC3Bh+L,CAAC,CAACi+L,aAAa,GAAG,MAAM;EACxBj+L,CAAC,CAACk+L,YAAY,GAAG,MAAM;EACvBl+L,CAAC,CAACm+L,YAAY,GAAG,MAAM;EACvBn+L,CAAC,CAACo+L,aAAa,GAAG,MAAM;EACxBp+L,CAAC,CAACq+L,aAAa,GAAG,MAAM;EACxBr+L,CAAC,CAACs+L,aAAa,GAAG,MAAM;EACxBt+L,CAAC,CAACu+L,aAAa,GAAG,MAAM;EACxBv+L,CAAC,CAACw+L,cAAc,GAAG,MAAM;EACzBx+L,CAAC,CAACy+L,cAAc,GAAG,MAAM;EACzBz+L,CAAC,CAAC0+L,OAAO,GAAG,MAAM;EAClB1+L,CAAC,CAAC2+L,QAAQ,GAAG,MAAM;EACnB3+L,CAAC,CAAC4+L,SAAS,GAAG,MAAM;EACpB5+L,CAAC,CAAC6+L,QAAQ,GAAG,MAAM;EACnB7+L,CAAC,CAAC8+L,eAAe,GAAG,MAAM;EAC1B9+L,CAAC,CAAC++L,YAAY,GAAG,MAAM;EACvB\u002F+L,CAAC,CAACg\u002FL,mBAAmB,GAAG,MAAM;EAC9Bh\u002FL,CAAC,CAACi\u002FL,gBAAgB,GAAG,MAAM;EAC3Bj\u002FL,CAAC,CAACk\u002FL,iBAAiB,GAAG,MAAM;EAC5Bl\u002FL,CAAC,CAACm\u002FL,cAAc,GAAG,MAAM;EACzBn\u002FL,CAAC,CAACo\u002FL,gBAAgB,GAAG,MAAM;EAC3Bp\u002FL,CAAC,CAACq\u002FL,aAAa,GAAG,MAAM;EACxBr\u002FL,CAAC,CAACs\u002FL,YAAY,GAAG,MAAM;EACvBt\u002FL,CAAC,CAACu\u002FL,YAAY,GAAG,MAAM;EACvBv\u002FL,CAAC,CAACw\u002FL,aAAa,GAAG,MAAM;EACxBx\u002FL,CAAC,CAACy\u002FL,aAAa,GAAG,MAAM;EACxBz\u002FL,CAAC,CAAC0\u002FL,aAAa,GAAG,MAAM;EACxB1\u002FL,CAAC,CAAC2\u002FL,aAAa,GAAG,MAAM;EACxB3\u002FL,CAAC,CAAC4\u002FL,cAAc,GAAG,MAAM;EACzB5\u002FL,CAAC,CAAC6\u002FL,cAAc,GAAG,MAAM;EACzB7\u002FL,CAAC,CAAC8\u002FL,KAAK,GAAG,MAAM;EAChB9\u002FL,CAAC,CAAC+\u002FL,cAAc,GAAG,MAAM;EACzB\u002F\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\u002FL,WAAW,CAAC,CAAC,EAAE;MACnCy\u002FL,OAAO,GAAG3mM,QAAQ,CAAC6mM,MAAM,EAAE,EAAE,CAAC;MAC9B,IAAIF,OAAO,IAAI,CAAC,EAAE;QAChB,OAAOA,OAAO;MAChB;IACF;EACF;EACA,OAAO,CAAC,CAAC;AACX;AAGA,MAAMG,aAAa,GAAG,CACpB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAChD,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAChC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAChC,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAChE,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAChC,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAChC,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAChD,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAChC,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAChE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAChE,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAChC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAChC,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,OAAO,EAAE,OAAO,CAAC,EAClB,CACE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CACzC,EACD,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAClD,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAChD,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAChE,CAAC,OAAO,EAAE,OAAO,CAAC,EAClB,CAAC,OAAO,EAAE,OAAO,CAAC,EAClB,CAAC,OAAO,EAAE,OAAO,CAAC,EAClB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EACtD,CAAC,OAAO,EAAE,OAAO,CAAC,EAClB,CAAC,OAAO,EAAE,OAAO,CAAC,EAClB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,EAClC,CAAC,OAAO,EAAE,OAAO,CAAC,EAClB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EACtD,CAAC,OAAO,EAAE,OAAO,CAAC,EAClB,CAAC,OAAO,EAAE,OAAO,CAAC,EAClB,CAAC,OAAO,EAAE,OAAO,CAAC,EAClB,CAAC,OAAO,EAAE,OAAO,CAAC,EAClB,CAAC,OAAO,EAAE,OAAO,CAAC,EAClB,CAAC,OAAO,EAAE,OAAO,CAAC,EAClB,CAAC,OAAO,EAAE,OAAO,CAAC,EAClB,CAAC,OAAO,EAAE,OAAO,CAAC,EAClB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EACpC,CAAC,OAAO,EAAE,OAAO,CAAC,EAClB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,OAAO,EAAE,OAAO,CAAC,EAClB,CAAC,OAAO,EAAE,OAAO,CAAC,EAClB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EACtD,CAAC,OAAO,EAAE,OAAO,EAAE,OA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\u002FCA,CAAC,CAACgyM,WAAW,GAAG,eAAe;EAC\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C,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;EACdA,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;EACdA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;EACdA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;EACdA,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;EACdA,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;EACdA,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;EACdA,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;EACdA,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;EACdA,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;EACdA,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;EACdA,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK;EACfA,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK;EACfA,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK;EACfA,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK;EACfA,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK;EACfA,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK;EACfA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK;EACfA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK;EACfA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;AAChB,CAAC,CAAC;AAKF,MAAM63M,oCAAoC,GAAGptM,qBAAqB,CAChE,UAAUzK,CAAC,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;AACd,CACF,CAAC;AAKD,MAAM83M,iCAAiC,GAAGrtM,qBAAqB,CAAC,UAAUzK,CAAC,EAAE;EAC3EA,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;EACTA,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;EACTA,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG;EACVA,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG;EACVA,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;EACZA,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;EACZA,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;EACZA,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;EACZA,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;EACZA,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;EACZA,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;EACZA,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;EACZA,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;EACZA,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;EACZA,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;EACZA,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;EACZA,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;AACd,CAAC,CAAC;AAEF,SAAS+3M,mBAAmBA,CAACp\u002FM,IAAI,EAAE;EACjC,MAAMq\u002FM,QAAQ,GAAGnH,iBAAiB,CAACl4M,IAAI,CAAC;EACxC,MAAMs\u002FM,UAAU,GAAGnH,aAAa,CAAC,CAAC;EAClC,OAAOmH,UAAU,CAACD,QAAQ,CAAC;AAC7B;AAEA,SAASE,eAAeA,CAACv\u002FM,IAAI,EAAE;EAC7B,MAAMq\u002FM,QAAQ,GAAGnH,iBAAiB,CAACl4M,IAAI,CAAC;EACxC,OAAO,CAAC,EACNm4M,aAAa,CAAC,CAAC,CAACkH,QAAQ,CAAC,IACzBnG,gBAAgB,CAAC,CAAC,CAACmG,QAAQ,CAAC,IAC5B3F,aAAa,CAAC,CAAC,CAAC2F,QAAQ,CAAC,IACzBP,eAAe,CAAC,CAAC,CAACO,QAAQ,CAAC,CAC5B;AACH;;;ACt3BgD;AAEhD,MAAMG,YAAY,CAAC;EACjBv\u002FM,WAAWA,CAACw\u002FM,IAAI,GAAG,EAAE,EAAE;IAGrB,IAAI,CAACpzM,IAAI,GAAGozM,IAAI;EAClB;EAEA,IAAI3gN,MAAMA,CAAA,EAAG;IACX,OAAO,IAAI,CAACuN,IAAI,CAACvN,MAAM;EACzB;EAEA6O,OAAOA,CAACC,QAAQ,EAAE;IAChB,KAAK,MAAM\u002FE,QAAQ,IAAI,IAAI,CAACwD,IAAI,EAAE;MAChCuB,QAAQ,CAAC\u002FE,QAAQ,EAAE,IAAI,CAACwD,IAAI,CAACxD,QAAQ,CAAC,CAAC7G,UAAU,CAAC,CAAC,CAAC,CAAC;IACvD;EACF;EAEA0L,GAAGA,CAACrM,CAAC,EAAE;IACL,OAAO,IAAI,CAACgL,IAAI,CAAChL,CAAC,CAAC,KAAKN,SAAS;EACnC;EAEAuJ,GAAGA,CAACjJ,CAAC,EAAE;IACL,OAAO,IAAI,CAACgL,IAAI,CAAChL,CAAC,CAAC;EACrB;EAEAstD,UAAUA,CAACrvD,KAAK,EAAE;IAGhB,MAAM+C,GAAG,GAAG,IAAI,CAACgK,IAAI;IACrB,IAAIhK,GAAG,CAACvD,MAAM,IAAI,OAAO,EAAE;MACzB,OAAOuD,GAAG,CAACusD,OAAO,CAACtvD,KAAK,CAAC;IAC3B;IACA,KAAK,MAAMuJ,QAAQ,IAAIxG,GAAG,EAAE;MAC1B,IAAIA,GAAG,CAACwG,QAAQ,CAAC,KAAKvJ,KAAK,EAAE;QAC3B,OAAOuJ,QAAQ,GAAG,CAAC;MACrB;IACF;IACA,OAAO,CAAC,CAAC;EACX;EAEA62M,KAAKA,CAACr9M,GAAG,EAAE;IACT,KAAK,MAAMwG,QAAQ,IAAIxG,GAAG,EAAE;MAC1B,IAAI,CAACgK,IAAI,CAACxD,QAAQ,CAAC,GAAGxG,GAAG,CAACwG,QAAQ,CAAC;IACrC;EACF;AACF;AAEA,MAAM82M,oBAAoB,CAAC;EACzB1\u002FM,WAAWA,CAAC2\u002FM,SAAS,EAAEC,QAAQ,EAAE;IAC\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\u002FB,MAAM\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\u002FM,QAAQ,EAAE5\u002FM,CAAC,EAAE,EAAEsD,CAAC,IAAI,CAAC,EAAE;MACrC6Y,MAAM,CAACnc,CAAC,CAAC,GAAG;QAAEgQ,GAAG,EAAER,SAAS,CAAC4B,IAAI,EAAE9N,CAAC;MAAE,CAAC;IACzC;IACAA,CAAC,IAAI,CAAC;IACN,KAAKtD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG4\u002FM,QAAQ,EAAE5\u002FM,CAAC,EAAE,EAAEsD,CAAC,IAAI,CAAC,EAAE;MACrC6Y,MAAM,CAACnc,CAAC,CAAC,CAACsQ,KAAK,GAAGd,SAAS,CAAC4B,IAAI,EAAE9N,CAAC,CAAC;IACtC;IACA,KAAKtD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG4\u002FM,QAAQ,EAAE5\u002FM,CAAC,EAAE,EAAEsD,CAAC,IAAI,CAAC,EAAE;MACrC6Y,MAAM,CAACnc,CAAC,CAAC,CAAC6\u002FM,OAAO,GAAGrwM,SAAS,CAAC4B,IAAI,EAAE9N,CAAC,CAAC;IACxC;IACA,KAAKtD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG4\u002FM,QAAQ,EAAE5\u002FM,CAAC,EAAE,EAAEsD,CAAC,IAAI,CAAC,EAAE;MACrC,IAAIw8M,QAAQ,GAAGtwM,SAAS,CAAC4B,IAAI,EAAE9N,CAAC,CAAC;MACjC,IAAIw8M,QAAQ,KAAK,CAAC,EAAE;QAClB;MACF;MACA3jM,MAAM,CAACnc,CAAC,CAAC,CAAC+\u002FM,GAAG,GAAG,EAAE;MAClB,KAAK,IAAI7hM,CAAC,GAAG,CAAC,EAAE8sB,EAAE,GAAG7uB,MAAM,CAACnc,CAAC,CAAC,CAACgQ,GAAG,GAAGmM,MAAM,CAACnc,CAAC,CAAC,CAACsQ,KAAK,GAAG,CAAC,EAAE4N,CAAC,GAAG8sB,EAAE,EAAE9sB,CAAC,EAAE,EAAE;QACrE\u002FB,MAAM,CAACnc,CAAC,CAAC,CAAC+\u002FM,GAAG,CAAC7hM,CAAC,CAAC,GAAG1O,SAAS,CAAC4B,IAAI,EAAE9N,CAAC,GAAGw8M,QAAQ,CAAC;QAChDA,QAAQ,IAAI,CAAC;MACf;IACF;IACA,OAAO3jM,MAAM;EACf,CAAC,MAAM,IAAI26C,MAAM,KAAK,EAAE,EAAE;IACxB,MAAMi+I,MAAM,GAAGsK,SAAS,CAACjuM,IAAI,EAAEd,KAAK,GAAG6B,MAAM,GAAG,EAAE,CAAC;IACnD7O,CAAC,GAAGgN,KAAK,GAAG6B,MAAM,GAAG,EAAE;IACvBgK,MAAM,GAAG,EAAE;IACX,KAAKnc,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+0M,MAAM,EAAE\u002F0M,CAAC,EAAE,EAAE;MAC3BsQ,KAAK,GAAG+uM,SAAS,CAACjuM,IAAI,EAAE9N,CAAC,CAAC;MAC1B6Y,MAAM,CAAC7b,IAAI,CAAC;QACVgQ,KAAK;QACLN,GAAG,EAAEqvM,SAAS,CAACjuM,IAAI,EAAE9N,CAAC,GAAG,CAAC,CAAC;QAC3Bu8M,OAAO,EAAER,SAAS,CAACjuM,IAAI,EAAE9N,CAAC,GAAG,CAAC,CAAC,GAAGgN;MACpC,CAAC,CAAC;MACFhN,CAAC,IAAI,EAAE;IACT;IACA,OAAO6Y,MAAM;EACf;EACA,MAAM,IAAI7c,WAAW,CAAE,qBAAoBw3D,MAAO,EAAC,CAAC;AACtD;AAEA,SAASkpJ,QAAQA,CAAC5uM,IAAI,EAAEd,KAAK,EAAEN,GAAG,EAAE8gD,mBAAmB,EAAE;EACvD,MAAMhkD,UAAU,GAAG,CAAC,CAAC;EACrB,MAAMk\u002FC,MAAM,GAAG,IAAI6E,SAAS,CAC1B,IAAIv5C,MAAM,CAAClG,IAAI,EAAEd,KAAK,EAAEN,GAAG,GAAGM,KAAK,CAAC,EACpCxD,UAAU,EACVgkD,mBACF,CAAC;EACD,MAAMC,GAAG,GAAG\u002FE,MAAM,CAAChrC,KAAK,CAAC,CAAC;EAC1B,OAAO;IACLi\u002FL,MAAM,EAAElvJ,GAAG,CAACsC,WAAW,CAAC2E,OAAO;IAC\u002FBuD,KAAK,EAAExK,GAAG,CAACW,OAAO,CAAC6B,WAAW,EAAEC,UAAU,EAAEwE,OAAO;IACnDkoJ,MAAM,EAAEnvJ,GAAG,CAACQ,eAAe,EAAEyG,OAAO;IACpCmoJ,YAAY,EAAEpvJ,GAAG,CAACkB,SAAS;IAC3Be,QAAQ,EAAEjC,GAAG,CAACiC,QAAQ;IACtBF,OAAO,EAAE\u002FB,GAAG,CAAC+B;EACf,CAAC;AACH;AAEA,SAASstJ,cAAcA,CAACC,IAAI,EAAEC,IAAI,EAAEC,oBAAoB,EAAE;EACxD,IAAIC,QAAQ,EAAEC,UAAU;EACxB,IAAIF,oBAAoB,EAAE;IACxBC,QAAQ,GAAG,CAAC;IACZC,UAAU,GAAGpB,SAAS;EACxB,CAAC,MAAM;IACLmB,QAAQ,GAAG,CAAC;IACZC,UAAU,GAAGA,CAACrvM,IAAI,EAAEe,MAAM,KAAK,CAAC,GAAG3C,SAAS,CAAC4B,IAAI,EAAEe,MAAM,CAAC;EAC5D;EACA,MAAM8tM,MAAM,GAAG,EAAE;EACjB,IAAIlzK,WAAW,GAAG0zK,UAAU,CAACH,IAAI,EAAE,CAAC,CAAC;EACrC,KAAK,IAAIpiM,CAAC,GAAGsiM,QAAQ,EAAEtiM,CAAC,GAAGoiM,IAAI,CAAC7iN,MAAM,EAAEygB,CAAC,IAAIsiM,QAAQ,EAAE;IACrD,MAAM5uK,SAAS,GAAG6uK,UAAU,CAACH,IAAI,EAAEpiM,CAAC,CAAC;IACrC+hM,MAAM,CAAC3\u002FM,IAAI,CAAC+\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\u002FmJ,KAAK,CAAC\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\u002FmB,CAAC,GAAGg8M,EAAE;cACN\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\u002FmB,CAAC,GAAGg8M,EAAE;YACN\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\u002FM,IAAI,EAAE\u002FvJ,mBAAmB,EAAE;IACvC,MAAM1\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\u002FE,CAAC,GAAG,GAAG;IACTl\u002FE,CAAC,CAACvR,CAAC,GAAG,GAAG;IACTuR,CAAC,CAAC0iB,CAAC,GAAG,GAAG;IACT1iB,CAAC,CAAC2iB,CAAC,GAAG,GAAG;IACT3iB,CAAC,CAAColG,WAAW,GAAG,GAAG;IACnBplG,CAAC,CAAC2\u002FF,SAAS,GAAG,GAAG;IACjB3\u002FF,CAAC,CAACylG,YAAY,GAAG,GAAG;IACpBzlG,CAAC,CAACq9F,WAAW,GAAG,GAAG;IACnBr9F,CAAC,CAACulL,UAAU,GAAG,GAAG;IAClBvlL,CAAC,CAACy4J,SAAS,GAAG,GAAG;IACjBz4J,CAAC,CAAC1B,CAAC,GAAG,GAAG;IACT0B,CAAC,CAACjD,CAAC,GAAG,GAAG;IACTiD,CAAC,CAACzB,CAAC,GAAG,GAAG;IACTyB,CAAC,CAACrC,CAAC,GAAG,GAAG;IACTqC,CAAC,CAAC+U,CAAC,GAAG,GAAG;IACT\u002FU,CAAC,CAACw2C,CAAC,GAAG,GAAG;IACTx2C,CAAC,CAAClD,CAAC,GAAG,GAAG;IACTkD,CAAC,CAACipC,CAAC,GAAG,GAAG;IACTjpC,CAAC,CAAChG,CAAC,GAAG,GAAG;IACTgG,CAAC,CAACkY,CAAC,GAAG,GAAG;IACTlY,CAAC,CAAC2d,CAAC,GAAG,GAAG;IACT3d,CAAC,CAAC4sC,CAAC,GAAG,GAAG;IACT5sC,CAAC,CAACzC,CAAC,GAAG,GAAG;IACTyC,CAAC,CAACxD,CAAC,GAAG,GAAG;IACTwD,CAAC,CAAC+iJ,CAAC,GAAG,GAAG;IACT\u002FiJ,CAAC,CAAC1C,CAAC,GAAG,GAAG;IACT0C,CAAC,CAACud,CAAC,GAAG,GAAG;IACTvd,CAAC,CAACnD,CAAC,GAAG,GAAG;IACTmD,CAAC,CAACkoC,CAAC,GAAG,GAAG;IACTloC,CAAC,CAACA,CAAC,GAAG,GAAG;IACTA,CAAC,CAACyiL,CAAC,GAAG,GAAG;IACTziL,CAAC,CAACyI,CAAC,GAAG,GAAG;IACTzI,CAAC,CAAC+qL,CAAC,GAAG,GAAG;IACT\u002FqL,CAAC,CAACI,CAAC,GAAG,GAAG;IACTJ,CAAC,CAACK,CAAC,GAAG,GAAG;IACTL,CAAC,CAACmoC,CAAC,GAAG,GAAG;IACTnoC,CAAC,CAACskG,SAAS,GAAG,GAAG;IACjBtkG,CAAC,CAACmgG,GAAG,GAAG,GAAG;IACXngG,CAAC,CAAC6kG,UAAU,GAAG,GAAG;IAClB7kG,CAAC,CAACu9F,UAAU,GAAG,GAAG;IAClBv9F,CAAC,CAAC4jH,UAAU,GAAG,GAAG;IAClB5jH,CAAC,CAAC6oG,IAAI,GAAG,GAAG;IACZ7oG,CAAC,CAACkxK,QAAQ,GAAG,GAAG;IAChBlxK,CAAC,CAAC2qH,QAAQ,GAAG,GAAG;IAChB3qH,CAAC,CAACkyL,GAAG,GAAG,GAAG;IACXlyL,CAAC,CAAC0oH,MAAM,GAAG,GAAG;IACd1oH,CAAC,CAACukK,OAAO,GAAG,GAAG;IACfvkK,CAAC,CAACoxG,QAAQ,GAAG,GAAG;IAChBpxG,CAAC,CAAC+4J,WAAW,GAAG,GAAG;IACnB\u002F4J,CAAC,CAACo4J,YAAY,GAAG,GAAG;IACpBp4J,CAAC,CAAC0wH,aAAa,GAAG,GAAG;IACrB1wH,CAAC,CAAC4wH,aAAa,GAAG,GAAG;IACrB5wH,CAAC,CAAC6wH,cAAc,GAAG,GAAG;IACtB7wH,CAAC,CAAC4lH,EAAE,GAAG,GAAG;IACV5lH,CAAC,CAACwoH,EAAE,GAAG,GAAG;IACVxoH,CAAC,CAACkgH,MAAM,GAAG,GAAG;IACdlgH,CAAC,CAACkyG,MAAM,GAAG,GAAG;IACdlyG,CAAC,CAACmyG,SAAS,GAAG,GAAG;IACjBnyG,CAAC,CAACyvJ,cAAc,GAAG,GAAG;IACtBzvJ,CAAC,CAAC6rJ,SAAS,GAAG,GAAG;IACjB7rJ,CAAC,CAAC4mG,MAAM,GAAG,GAAG;IACd5mG,CAAC,CAAC84J,cAAc,GAAG,GAAG;IACtB94J,CAAC,CAACm4J,YAAY,GAAG,GAAG;IACpBn4J,CAAC,CAACw4J,aAAa,GAAG,GAAG;IACrBx4J,CAAC,CAAC2wH,cAAc,GAAG,GAAG;IACtB3wH,CAAC,CAACq\u002FG,QAAQ,GAAG,IAAI;IACjBr\u002FG,CAAC,CAACiwJ,WAAW,GAAG,IAAI;IACpBjwJ,CAAC,CAAC63J,YAAY,GAAG,GAAG;IACpB73J,CAAC,CAACuvH,KAAK,GAAG,GAAG;IACbvvH,CAAC,CAAC8kF,KAAK,GAAG,GAAG;IACb9kF,CAAC,CAAC2rG,UAAU,GAAG,GAAG;IAClB3rG,CAAC,CAACo7K,KAAK,GAAG,GAAG;IACbp7K,CAAC,CAACuxI,MAAM,GAAG,GAAG;IACdvxI,CAAC,CAAC8lG,KAAK,GAAG,GAAG;IACb9lG,CAAC,CAACi5G,SAAS,GAAG,GAAG;IACjBj5G,CAAC,CAACk3G,QAAQ,GAAG,GAAG;IAChBl3G,CAAC,CAACk+J,IAAI,GAAG,GAAG;IACZl+J,CAAC,CAAC2oG,OAAO,GAAG,GAAG;IACf3oG,CAAC,CAACu5H,YAAY,GAAG,GAAG;IACpBv5H,CAAC,CAAC6kJ,MAAM,GAAG,GAAG;IACd7kJ,CAAC,CAAC6nG,KAAK,GAAG,GAAG;IACb7nG,CAAC,CAAC2\u002FG,MAAM,GAAG,IAAI;IACf3\u002FG,CAAC,CAACq2D,EAAE,GAAG,IAAI;IACXr2D,CAAC,CAACmpJ,WAAW,GAAG,GAAG;IACnBnpJ,CAAC,CAAC+rE,MAAM,GAAG,GAAG;IACd\u002FrE,CAAC,CAACyxE,MAAM,GAAG,GAAG;IACdzxE,CAAC,CAACkuE,EAAE,GAAG,IAAI;IACXluE,CAAC,CAACopJ,YAAY,GAAG,GAAG;IACpBppJ,CAAC,CAAC8lF,EAAE,GAAG,GAAG;IACV9lF,CAAC,CAACs5G,QAAQ,GAAG,GAAG;IAChBt5G,CAAC,CAAC4wI,MAAM,GAAG,GAAG;IACd5wI,CAAC,CAACwpJ,MAAM,GAAG,GAAG;IACdxpJ,CAAC,CAAC2kJ,EAAE,GAAG,GAAG;IACV3kJ,CAAC,CAAC2sH,UAAU,GAAG,GAAG;IAClB3sH,CAAC,CAAC0mE,SAAS,GAAG,GAAG;IACjB1mE,CAAC,CAAC46G,MAAM,GAAG,GAAG;IACd56G,CAAC,CAAC+jF,MAAM,GAAG,GAAG;IACd\u002FjF,CAAC,CAAC2kL,aAAa,GAAG,GAAG;IACrB3kL,CAAC,CAACq7G,MAAM,GAAG,GAAG;IACdr7G,CAAC,CAACwgF,SAAS,GAAG,GAAG;IACjBxgF,CAAC,CAAC23G,MAAM,GAAG,GAAG;IACd33G,CAAC,CAACmgF,MAAM,GAAG,GAAG;IACdngF,CAAC,CAACo3D,WAAW,GAAG,GAAG;IACnBp3D,CAAC,CAACkjF,MAAM,GAAG,GAAG;IACdljF,CAAC,CAACw7E,WAAW,GAAG,GAAG;IACnBx7E,CAAC,CAACgwL,MAAM,GAAG,GAAG;IACdhwL,CAAC,CAACikK,YAAY,GAAG,GAAG;IACpBjkK,CAAC,CAAC07G,WAAW,GAAG,GAAG;IACnB17G,CAAC,CAACi+E,KAAK,GAAG,GAAG;IACbj+E,CAAC,CAAC87E,SAAS,GAAG,GAAG;IACjB97E,CAAC,CAAC45F,OAAO,GAAG,GAAG;IACf55F,CAAC,CAACm7E,MAAM,GAAG,GAAG;IACdn7E,CAAC,CAAC8lL,OAAO,GAAG,GAAG;IACf9lL,CAAC,CAACi\u002FD,SAAS,GAAG,GAAG;IACjBj\u002FD,CAAC,CAACu8D,MAAM,GAAG,GAAG;IACdv8D,CAAC,CAACmtG,WAAW,GAAG,GAAG;IACnBntG,CAAC,CAACmwG,SAAS,GAAG,GAAG;IACjBnwG,CAAC,CAACggE,OAAO,GAAG,GAAG;IACfhgE,CAAC,CAACkoG,MAAM,GAAG,GAAG;IACdloG,CAAC,CAAC06F,KAAK,GAAG,GAAG;IACb16F,CAAC,CAACotE,YAAY,GAAG,GAAG;IACpBptE,CAAC,CAACyrI,MAAM,GAAG,GAAG;IACdzrI,CAAC,CAACw1F,MAAM,GAAG,GAAG;IACdx1F,CAAC,CAACy5E,YAAY,GAAG,GAAG;IACpBz5E,CAAC,CAACo6D,MAAM,GAAG,GAAG;IACdp6D,CAAC,CAACu+F,MAAM,GAAG,GAAG;IACdv+F,CAAC,CAACo\u002FD,UAAU,GAAG,GAAG;IAClBp\u002FD,CAAC,CAACwjK,MAAM,GAAG,GAAG;IACdxjK,CAAC,CAAC0jK,QAAQ,GAAG,GAAG;IAChB1jK,CAAC,CAACg6H,MAAM,GAAG,GAAG;IACdh6H,CAAC,CAAC0wI,OAAO,GAAG,GAAG;IACf1wI,CAAC,CAACyzE,MAAM,GAAG,GAAG;IACdzzE,CAAC,CAACojE,YAAY,GAAG,GAAG;IACpBpjE,CAAC,CAACijL,WAAW,GAAG,GAAG;IACnBjjL,CAAC,CAACwkF,WAAW,GAAG,GAAG;IACnBxkF,CAAC,CAAC44D,OAAO,GAAG,GAAG;IACf54D,CAAC,CAACs6J,MAAM,GAAG,GAAG;IACdt6J,CAAC,CAACmoG,QAAQ,GAAG,GAAG;IAChBnoG,CAAC,CAACkiF,UAAU,GAAG,GAAG;IAClBliF,CAAC,CAACk6E,KAAK,GAAG,GAAG;IACbl6E,CAAC,CAACywE,OAAO,GAAG,GAAG;IACfzwE,CAAC,CAACwzE,MAAM,GAAG,GAAG;IACdxzE,CAAC,CAACo3E,MAAM,GAAG,GAAG;IACdp3E,CAAC,CAAC00G,MAAM,GAAG,GAAG;IACd10G,CAAC,CAACo9E,OAAO,GAAG,GAAG;IACfp9E,CAAC,CAAC0mL,KAAK,GAAG,GAAG;IACb1mL,CAAC,CAACy6K,aAAa,GAAG,GAAG;IACrBz6K,CAAC,CAAC2vE,MAAM,GAAG,GAAG;IACd3vE,CAAC,CAACq4D,MAAM,GAAG,GAAG;IACdr4D,CAAC,CAAC22D,MAAM,GAAG,GAAG;IACd32D,CAAC,CAAC+4I,QAAQ,GAAG,GAAG;IAChB\u002F4I,CAAC,CAAC0iL,MAAM,GAAG,GAAG;IACd1iL,CAAC,CAACq5E,MAAM,GAAG,GAAG;IACdr5E,CAAC,CAACmtJ,WAAW,GAAG,GAAG;IACnBntJ,CAAC,CAACgxL,SAAS,GAAG,GAAG;IACjBhxL,CAAC,CAAC+sE,MAAM,GAAG,GAAG;IACd\u002FsE,CAAC,CAACu6H,WAAW,GAAG,GAAG;IACnBv6H,CAAC,CAACu+D,WAAW,GAAG,GAAG;IACnBv+D,CAAC,CAACylF,SAAS,GAAG,GAAG;IACjBzlF,CAAC,CAACo8G,SAAS,GAAG,GAAG;IACjBp8G,CAAC,CAACknG,MAAM,GAAG,GAAG;IACdlnG,CAAC,CAACg6I,MAAM,GAAG,GAAG;IACdh6I,CAAC,CAACklL,OAAO,GAAG,GAAG;IACfllL,CAAC,CAACgtE,MAAM,GAAG,GAAG;IACdhtE,CAAC,CAACimE,MAAM,GAAG,GAAG;IACdjmE,CAAC,CAAC4yJ,SAAS,GAAG,GAAG;IACjB5yJ,CAAC,CAACsmG,SAAS,GAAG,GAAG;IACjBtmG,CAAC,CAACi7J,UAAU,GAAG,GAAG;IAClBj7J,CAAC,CAAC+iE,MAAM,GAAG,GAAG;IACd\u002FiE,CAAC,CAAC+mE,UAAU,GAAG,GAAG;IAClB\u002FmE,CAAC,CAAC+xK,SAAS,GAAG,GAAG;IACjB\u002FxK,CAAC,CAACu\u002FD,MAAM,GAAG,GAAG;IACdv\u002FD,CAAC,CAACm5J,MAAM,GAAG,GAAG;IACdn5J,CAAC,CAACimJ,OAAO,GAAG,GAAG;IACfjmJ,CAAC,CAAC4hF,MAAM,GAAG,GAAG;IACd5hF,CAAC,CAAC6hF,MAAM,GAAG,GAAG;IACd7hF,CAAC,CAACgwH,YAAY,GAAG,GAAG;IACpBhwH,CAAC,CAACwhE,GAAG,GAAG,GAAG;IACXxhE,CAAC,CAACw6D,QAAQ,GAAG,GAAG;IAChBx6D,CAAC,CAAC8tI,YAAY,GAAG,GAAG;IACpB9tI,CAAC,CAAC6zK,MAAM,GAAG,GAAG;IACd7zK,CAAC,CAAC0gH,OAAO,GAAG,GAAG;IACf1gH,CAAC,CAACw9E,OAAO,GAAG,GAAG;IACfx9E,CAAC,CAACy2D,MAAM,GAAG,GAAG;IACdz2D,CAAC,CAAC+3D,SAAS,GAAG,GAAG;IACjB\u002F3D,CAAC,CAAC28G,MAAM,GAAG,GAAG;IACd38G,CAAC,CAACm2L,MAAM,GAAG,GAAG;IACdn2L,CAAC,CAACmhI,OAAO,GAAG,GAAG;IACfnhI,CAAC,CAACouE,MAAM,GAAG,GAAG;IACdpuE,CAAC,CAACgjJ,MAAM,GAAG,GAAG;IACdhjJ,CAAC,CAACq4F,OAAO,GAAG,GAAG;IACfr4F,CAAC,CAACohK,MAAM,GAAG,GAAG;IACdphK,CAAC,CAAC+9H,SAAS,GAAG,GAAG;IACjB\u002F9H,CAAC,CAAC4uE,WAAW,GAAG,GAAG;IACnB5uE,CAAC,CAACu8E,MAAM,GAAG,GAAG;IACdv8E,CAAC,CAAC48D,KAAK,GAAG,GAAG;IACb58D,CAAC,CAAC24K,KAAK,GAAG,GAAG;IACb34K,CAAC,CAACsiL,WAAW,GAAG,GAAG;IACnBtiL,CAAC,CAACsvE,SAAS,GAAG,GAAG;IACjBtvE,CAAC,CAACm4I,EAAE,GAAG,GAAG;IACVn4I,CAAC,CAAC0+H,MAAM,GAAG,GAAG;IACd1+H,CAAC,CAAC0lJ,aAAa,GAAG,GAAG;IACrB1lJ,CAAC,CAAC0gE,OAAO,GAAG,GAAG;IACf1gE,CAAC,CAAC80G,MAAM,GAAG,GAAG;IACd90G,CAAC,CAACs6K,aAAa,GAAG,GAAG;IACrBt6K,CAAC,CAAC03E,QAAQ,GAAG,GAAG;IAChB13E,CAAC,CAAC0tI,MAAM,GAAG,GAAG;IACd1tI,CAAC,CAAC+pE,YAAY,GAAG,GAAG;IACpB\u002FpE,CAAC,CAAC+qE,MAAM,GAAG,GAAG;IACd\u002FqE,CAAC,CAAC49K,SAAS,GAAG,IAAI;IAClB59K,CAAC,CAACs8G,UAAU,GAAG,GAAG;IAClBt8G,CAAC,CAAConE,MAAM,GAAG,GAAG;IACdpnE,CAAC,CAAC0nE,OAAO,GAAG,GAAG;IACf1nE,CAAC,CAACirE,MAAM,GAAG,GAAG;IACdjrE,CAAC,CAAC4nJ,OAAO,GAAG,GAAG;IACf5nJ,CAAC,CAACsuI,SAAS,GAAG,GAAG;IACjBtuI,CAAC,CAAC8jJ,WAAW,GAAG,GAAG;IACnB9jJ,CAAC,CAACshJ,MAAM,GAAG,GAAG;IACdthJ,CAAC,CAACg9E,aAAa,GAAG,GAAG;IACrBh9E,CAAC,CAACg+D,MAAM,GAAG,GAAG;IACdh+D,CAAC,CAACu\u002FG,OAAO,GAAG,GAAG;IACfv\u002FG,CAAC,CAAC4rH,MAAM,GAAG,GAAG;IACd5rH,CAAC,CAACsoJ,UAAU,GAAG,GAAG;IAClBtoJ,CAAC,CAACu3E,MAAM,GAAG,GAAG;IACdv3E,CAAC,CAACg4E,YAAY,GAAG,GAAG;IACpBh4E,CAAC,CAACswE,aAAa,GAAG,GAAG;IACrBtwE,CAAC,CAAC+1G,MAAM,GAAG,GAAG;IACd\u002F1G,CAAC,CAAC+kJ,MAAM,GAAG,GAAG;IACd\u002FkJ,CAAC,CAACu6D,MAAM,GAAG,GAAG;IACdv6D,CAAC,CAACgkL,MAAM,GAAG,GAAG;IACdhkL,CAAC,CAACq5J,OAAO,GAAG,GAAG;IACfr5J,CAAC,CAACm8D,MAAM,GAAG,GAAG;IACdn8D,CAAC,CAACy6J,YAAY,GAAG,GAAG;IACpBz6J,CAAC,CAAC+tE,MAAM,GAAG,GAAG;IACd\u002FtE,CAAC,CAACgqJ,MAAM,GAAG,GAAG;IACdhqJ,CAAC,CAAC4zE,YAAY,GAAG,GAAG;IACpB5zE,CAAC,CAACqrE,YAAY,GAAG,GAAG;IACpBrrE,CAAC,CAACo5D,MAAM,GAAG,GAAG;IACdp5D,CAAC,CAAC84D,OAAO,GAAG,GAAG;IACf94D,CAAC,CAAC+4D,KAAK,GAAG,GAAG;IACb\u002F4D,CAAC,CAAC+xE,MAAM,GAAG,GAAG;IACd\u002FxE,CAAC,CAAC23L,UAAU,GAAG,GAAG;IAClB33L,CAAC,CAACm+D,MAAM,GAAG,GAAG;IACdn+D,CAAC,CAAC+nE,OAAO,GAAG,GAAG;IACf\u002FnE,CAAC,CAACinI,YAAY,GAAG,GAAG;IACpBjnI,CAAC,CAACy2I,KAAK,GAAG,GAAG;IACbz2I,CAAC,CAACsmE,WAAW,GAAG,GAAG;IACnBtmE,CAAC,CAAC26I,MAAM,GAAG,GAAG;IACd36I,CAAC,CAACs0K,YAAY,GAAG,GAAG;IACpBt0K,CAAC,CAACkwI,UAAU,GAAG,GAAG;IAClBlwI,CAAC,CAACwkJ,SAAS,GAAG,GAAG;IACjBxkJ,CAAC,CAACwjL,SAAS,GAAG,GAAG;IACjBxjL,CAAC,CAACsgJ,QAAQ,GAAG,GAAG;IAChBtgJ,CAAC,CAACisH,YAAY,GAAG,GAAG;IACpBjsH,CAAC,CAAC4iH,GAAG,GAAG,GAAG;IACX5iH,CAAC,CAACs3L,MAAM,GAAG,GAAG;IACdt3L,CAAC,CAAC+6I,YAAY,GAAG,GAAG;IACpB\u002F6I,CAAC,CAACwoJ,WAAW,GAAG,GAAG;IACnBxoJ,CAAC,CAACggI,OAAO,GAAG,GAAG;IACfhgI,CAAC,CAAC4hE,IAAI,GAAG,GAAG;EACd,CAAC,CAAC;EAEF5hE,CAAC,CAAC,gBAAgB,CAAC,GAAGyK,qBAAqB,CAAC,UAAUzK,CAAC,EAAE;IACvDA,CAAC,CAAC4uK,KAAK,GAAG,GAAG;IACb5uK,CAAC,CAACyjH,MAAM,GAAG,GAAG;IACdzjH,CAAC,CAACk4J,QAAQ,GAAG,GAAG;IAChBl4J,CAAC,CAAC+hJ,UAAU,GAAG,GAAG;IAClB\u002FhJ,CAAC,CAACy4G,MAAM,GAAG,GAAG;IACdz4G,CAAC,CAACmvJ,OAAO,GAAG,GAAG;IACfnvJ,CAAC,CAACu4F,SAAS,GAAG,GAAG;IACjBv4F,CAAC,CAAC44J,UAAU,GAAG,GAAG;IAClB54J,CAAC,CAAC+rJ,SAAS,GAAG,GAAG;IACjB\u002FrJ,CAAC,CAACysJ,UAAU,GAAG,GAAG;IAClBzsJ,CAAC,CAAC89F,QAAQ,GAAG,GAAG;IAChB99F,CAAC,CAACyyJ,IAAI,GAAG,GAAG;IACZzyJ,CAAC,CAACgtG,KAAK,GAAG,GAAG;IACbhtG,CAAC,CAAC05H,MAAM,GAAG,GAAG;IACd15H,CAAC,CAACuvJ,MAAM,GAAG,GAAG;IACdvvJ,CAAC,CAAC0tK,KAAK,GAAG,GAAG;IACb1tK,CAAC,CAACk4L,IAAI,GAAG,GAAG;IACZl4L,CAAC,CAACgnJ,GAAG,GAAG,GAAG;IACXhnJ,CAAC,CAAC+gL,GAAG,GAAG,GAAG;IACX\u002FgL,CAAC,CAACm5K,KAAK,GAAG,GAAG;IACbn5K,CAAC,CAACipH,IAAI,GAAG,GAAG;IACZjpH,CAAC,CAACmnH,IAAI,GAAG,GAAG;IACZnnH,CAAC,CAACksK,GAAG,GAAG,GAAG;IACXlsK,CAAC,CAACimK,KAAK,GAAG,GAAG;IACbjmK,CAAC,CAACk9G,KAAK,GAAG,GAAG;IACbl9G,CAAC,CAAC88I,IAAI,GAAG,GAAG;IACZ98I,CAAC,CAACysG,KAAK,GAAG,GAAG;IACbzsG,CAAC,CAACylK,SAAS,GAAG,GAAG;IACjBzlK,CAAC,CAACquI,IAAI,GAAG,GAAG;IACZruI,CAAC,CAACmhH,KAAK,GAAG,GAAG;IACbnhH,CAAC,CAAC+vH,OAAO,GAAG,GAAG;IACf\u002FvH,CAAC,CAAC03J,QAAQ,GAAG,GAAG;IAChB13J,CAAC,CAAC2xB,EAAE,GAAG,GAAG;IACV3xB,CAAC,CAACme,CAAC,GAAG,GAAG;IACTne,CAAC,CAACsiB,CAAC,GAAG,GAAG;IACTtiB,CAAC,CAAC3Q,CAAC,GAAG,GAAG;IACT2Q,CAAC,CAACtR,CAAC,GAAG,GAAG;IACTsR,CAAC,CAACxR,CAAC,GAAG,GAAG;IACTwR,CAAC,CAAC7Q,CAAC,GAAG,GAAG;IACT6Q,CAAC,CAACke,CAAC,GAAG,GAAG;IACTle,CAAC,CAACskE,CAAC,GAAG,GAAG;IACTtkE,CAAC,CAACwgD,CAAC,GAAG,GAAG;IACTxgD,CAAC,CAAC0oE,CAAC,GAAG,GAAG;IACT1oE,CAAC,CAAC9Q,CAAC,GAAG,GAAG;IACT8Q,CAAC,CAACqe,CAAC,GAAG,GAAG;IACTre,CAAC,CAAC8jB,CAAC,GAAG,GAAG;IACT9jB,CAAC,CAAC+jB,CAAC,GAAG,GAAG;IACT\u002FjB,CAAC,CAACnQ,CAAC,GAAG,GAAG;IACTmQ,CAAC,CAACmyE,CAAC,GAAG,GAAG;IACTnyE,CAAC,CAACkzE,CAAC,GAAG,GAAG;IACTlzE,CAAC,CAACszE,CAAC,GAAG,GAAG;IACTtzE,CAAC,CAAC20E,CAAC,GAAG,GAAG;IACT30E,CAAC,CAACk5E,CAAC,GAAG,GAAG;IACTl5E,CAAC,CAACrR,CAAC,GAAG,GAAG;IACTqR,CAAC,CAAC5Q,CAAC,GAAG,GAAG;IACT4Q,CAAC,CAACk\u002FE,CAAC,GAAG,GAAG;IACTl\u002FE,CAAC,CAACvR,CAAC,GAAG,GAAG;IACTuR,CAAC,CAAC0iB,CAAC,GAAG,GAAG;IACT1iB,CAAC,CAAC2iB,CAAC,GAAG,GAAG;IACT3iB,CAAC,CAAColG,WAAW,GAAG,GAAG;IACnBplG,CAAC,CAAC2\u002FF,SAAS,GAAG,GAAG;IACjB3\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\u002FG,QAAQ,GAAG,IAAI;IACjBr\u002FG,CAAC,CAACiwJ,WAAW,GAAG,IAAI;IACpBjwJ,CAAC,CAAC63J,YAAY,GAAG,GAAG;IACpB73J,CAAC,CAACuvH,KAAK,GAAG,GAAG;IACbvvH,CAAC,CAAC8kF,KAAK,GAAG,GAAG;IACb9kF,CAAC,CAAC2rG,UAAU,GAAG,GAAG;IAClB3rG,CAAC,CAACo7K,KAAK,GAAG,GAAG;IACbp7K,CAAC,CAACuxI,MAAM,GAAG,GAAG;IACdvxI,CAAC,CAAC8lG,KAAK,GAAG,GAAG;IACb9lG,CAAC,CAACi5G,SAAS,GAAG,GAAG;IACjBj5G,CAAC,CAACk3G,QAAQ,GAAG,GAAG;IAChBl3G,CAAC,CAACk+J,IAAI,GAAG,GAAG;IACZl+J,CAAC,CAAC2oG,OAAO,GAAG,GAAG;IACf3oG,CAAC,CAACu5H,YAAY,GAAG,GAAG;IACpBv5H,CAAC,CAAC6kJ,MAAM,GAAG,GAAG;IACd7kJ,CAAC,CAAC6nG,KAAK,GAAG,GAAG;IACb7nG,CAAC,CAAC2\u002FG,MAAM,GAAG,IAAI;IACf3\u002FG,CAAC,CAACq2D,EAAE,GAAG,IAAI;IACXr2D,CAAC,CAACmpJ,WAAW,GAAG,GAAG;IACnBnpJ,CAAC,CAAC+rE,MAAM,GAAG,GAAG;IACd\u002FrE,CAAC,CAACyxE,MAAM,GAAG,GAAG;IACdzxE,CAAC,CAACkuE,EAAE,GAAG,IAAI;IACXluE,CAAC,CAACopJ,YAAY,GAAG,GAAG;IACpBppJ,CAAC,CAAC8lF,EAAE,GAAG,GAAG;IACV9lF,CAAC,CAACs5G,QAAQ,GAAG,GAAG;IAChBt5G,CAAC,CAAC4wI,MAAM,GAAG,GAAG;IACd5wI,CAAC,CAACwpJ,MAAM,GAAG,GAAG;IACdxpJ,CAAC,CAAC2kJ,EAAE,GAAG,GAAG;IACV3kJ,CAAC,CAAC2sH,UAAU,GAAG,GAAG;IAClB3sH,CAAC,CAAC0mE,SAAS,GAAG,GAAG;IACjB1mE,CAAC,CAAC46G,MAAM,GAAG,GAAG;IACd56G,CAAC,CAAC+jF,MAAM,GAAG,GAAG;IACd\u002FjF,CAAC,CAAC2kL,aAAa,GAAG,GAAG;IACrB3kL,CAAC,CAACq7G,MAAM,GAAG,GAAG;IACdr7G,CAAC,CAACwgF,SAAS,GAAG,GAAG;IACjBxgF,CAAC,CAAC23G,MAAM,GAAG,GAAG;IACd33G,CAAC,CAACmgF,MAAM,GAAG,GAAG;IACdngF,CAAC,CAACo3D,WAAW,GAAG,GAAG;IACnBp3D,CAAC,CAACkjF,MAAM,GAAG,GAAG;IACdljF,CAAC,CAACw7E,WAAW,GAAG,GAAG;IACnBx7E,CAAC,CAACgwL,MAAM,GAAG,GAAG;IACdhwL,CAAC,CAACikK,YAAY,GAAG,GAAG;IACpBjkK,CAAC,CAAC07G,WAAW,GAAG,GAAG;IACnB17G,CAAC,CAACi+E,KAAK,GAAG,GAAG;IACbj+E,CAAC,CAAC87E,SAAS,GAAG,GAAG;IACjB97E,CAAC,CAAC45F,OAAO,GAAG,GAAG;IACf55F,CAAC,CAACm7E,MAAM,GAAG,GAAG;IACdn7E,CAAC,CAAC8lL,OAAO,GAAG,GAAG;IACf9lL,CAAC,CAACi\u002FD,SAAS,GAAG,GAAG;IACjBj\u002FD,CAAC,CAACu8D,MAAM,GAAG,GAAG;IACdv8D,CAAC,CAACmtG,WAAW,GAAG,GAAG;IACnBntG,CAAC,CAACmwG,SAAS,GAAG,GAAG;IACjBnwG,CAAC,CAACggE,OAAO,GAAG,GAAG;IACfhgE,CAAC,CAACkoG,MAAM,GAAG,GAAG;IACdloG,CAAC,CAAC06F,KAAK,GAAG,GAAG;IACb16F,CAAC,CAACotE,YAAY,GAAG,GAAG;IACpBptE,CAAC,CAACyrI,MAAM,GAAG,GAAG;IACdzrI,CAAC,CAACw1F,MAAM,GAAG,GAAG;IACdx1F,CAAC,CAACy5E,YAAY,GAAG,GAAG;IACpBz5E,CAAC,CAACo6D,MAAM,GAAG,GAAG;IACdp6D,CAAC,CAACu+F,MAAM,GAAG,GAAG;IACdv+F,CAAC,CAACo\u002FD,UAAU,GAAG,GAAG;IAClBp\u002FD,CAAC,CAACwjK,MAAM,GAAG,GAAG;IACdxjK,CAAC,CAAC0jK,QAAQ,GAAG,GAAG;IAChB1jK,CAAC,CAACg6H,MAAM,GAAG,GAAG;IACdh6H,CAAC,CAAC0wI,OAAO,GAAG,GAAG;IACf1wI,CAAC,CAACyzE,MAAM,GAAG,GAAG;IACdzzE,CAAC,CAACojE,YAAY,GAAG,GAAG;IACpBpjE,CAAC,CAACijL,WAAW,GAAG,GAAG;IACnBjjL,CAAC,CAACwkF,WAAW,GAAG,GAAG;IACnBxkF,CAAC,CAAC44D,OAAO,GAAG,GAAG;IACf54D,CAAC,CAACs6J,MAAM,GAAG,GAAG;IACdt6J,CAAC,CAACmoG,QAAQ,GAAG,GAAG;IAChBnoG,CAAC,CAACkiF,UAAU,GAAG,GAAG;IAClBliF,CAAC,CAACk6E,KAAK,GAAG,GAAG;IACbl6E,CAAC,CAACywE,OAAO,GAAG,GAAG;IACfzwE,CAAC,CAACwzE,MAAM,GAAG,GAAG;IACdxzE,CAAC,CAACo3E,MAAM,GAAG,GAAG;IACdp3E,CAAC,CAAC00G,MAAM,GAAG,GAAG;IACd10G,CAAC,CAACo9E,OAAO,GAAG,GAAG;IACfp9E,CAAC,CAAC0mL,KAAK,GAAG,GAAG;IACb1mL,CAAC,CAACy6K,aAAa,GAAG,GAAG;IACrBz6K,CAAC,CAAC2vE,MAAM,GAAG,GAAG;IACd3vE,CAAC,CAACq4D,MAAM,GAAG,GAAG;IACdr4D,CAAC,CAAC22D,MAAM,GAAG,GAAG;IACd32D,CAAC,CAAC+4I,QAAQ,GAAG,GAAG;IAChB\u002F4I,CAAC,CAAC0iL,MAAM,GAAG,GAAG;IACd1iL,CAAC,CAACq5E,MAAM,GAAG,GAAG;IACdr5E,CAAC,CAACmtJ,WAAW,GAAG,GAAG;IACnBntJ,CAAC,CAACgxL,SAAS,GAAG,GAAG;IACjBhxL,CAAC,CAAC+sE,MAAM,GAAG,GAAG;IACd\u002FsE,CAAC,CAACu6H,WAAW,GAAG,GAAG;IACnBv6H,CAAC,CAACu+D,WAAW,GAAG,GAAG;IACnBv+D,CAAC,CAACylF,SAAS,GAAG,GAAG;IACjBzlF,CAAC,CAACo8G,SAAS,GAAG,GAAG;IACjBp8G,CAAC,CAACknG,MAAM,GAAG,GAAG;IACdlnG,CAAC,CAACg6I,MAAM,GAAG,GAAG;IACdh6I,CAAC,CAACklL,OAAO,GAAG,GAAG;IACfllL,CAAC,CAACgtE,MAAM,GAAG,GAAG;IACdhtE,CAAC,CAACimE,MAAM,GAAG,GAAG;IACdjmE,CAAC,CAAC4yJ,SAAS,GAAG,GAAG;IACjB5yJ,CAAC,CAACsmG,SAAS,GAAG,GAAG;IACjBtmG,CAAC,CAACi7J,UAAU,GAAG,GAAG;IAClBj7J,CAAC,CAAC+iE,MAAM,GAAG,GAAG;IACd\u002FiE,CAAC,CAAC+mE,UAAU,GAAG,GAAG;IAClB\u002FmE,CAAC,CAAC+xK,SAAS,GAAG,GAAG;IACjB\u002FxK,CAAC,CAACu\u002FD,MAAM,GAAG,GAAG;IACdv\u002FD,CAAC,CAACm5J,MAAM,GAAG,GAAG;IACdn5J,CAAC,CAACimJ,OAAO,GAAG,GAAG;IACfjmJ,CAAC,CAAC4hF,MAAM,GAAG,GAAG;IACd5hF,CAAC,CAAC6hF,MAAM,GAAG,GAAG;IACd7hF,CAAC,CAACgwH,YAAY,GAAG,GAAG;IACpBhwH,CAAC,CAACwhE,GAAG,GAAG,GAAG;IACXxhE,CAAC,CAACw6D,QAAQ,GAAG,GAAG;IAChBx6D,CAAC,CAAC8tI,YAAY,GAAG,GAAG;IACpB9tI,CAAC,CAAC6zK,MAAM,GAAG,GAAG;IACd7zK,CAAC,CAAC0gH,OAAO,GAAG,GAAG;IACf1gH,CAAC,CAACw9E,OAAO,GAAG,GAAG;IACfx9E,CAAC,CAACy2D,MAAM,GAAG,GAAG;IACdz2D,CAAC,CAAC+3D,SAAS,GAAG,GAAG;IACjB\u002F3D,CAAC,CAAC28G,MAAM,GAAG,GAAG;IACd38G,CAAC,CAACm2L,MAAM,GAAG,GAAG;IACdn2L,CAAC,CAACmhI,OAAO,GAAG,GAAG;IACfnhI,CAAC,CAACouE,MAAM,GAAG,GAAG;IACdpuE,CAAC,CAACgjJ,MAAM,GAAG,GAAG;IACdhjJ,CAAC,CAACq4F,OAAO,GAAG,GAAG;IACfr4F,CAAC,CAACohK,MAAM,GAAG,GAAG;IACdphK,CAAC,CAAC+9H,SAAS,GAAG,GAAG;IACjB\u002F9H,CAAC,CAAC4uE,WAAW,GAAG,GAAG;IACnB5uE,CAAC,CAACu8E,MAAM,GAAG,GAAG;IACdv8E,CAAC,CAAC48D,KAAK,GAAG,GAAG;IACb58D,CAAC,CAAC24K,KAAK,GAAG,GAAG;IACb34K,CAAC,CAACsiL,WAAW,GAAG,GAAG;IACnBtiL,CAAC,CAACsvE,SAAS,GAAG,GAAG;IACjBtvE,CAAC,CAACm4I,EAAE,GAAG,GAAG;IACVn4I,CAAC,CAAC0+H,MAAM,GAAG,GAAG;IACd1+H,CAAC,CAAC0lJ,aAAa,GAAG,GAAG;IACrB1lJ,CAAC,CAAC0gE,OAAO,GAAG,GAAG;IACf1gE,CAAC,CAAC80G,MAAM,GAAG,GAAG;IACd90G,CAAC,CAACs6K,aAAa,GAAG,GAAG;IACrBt6K,CAAC,CAAC03E,QAAQ,GAAG,GAAG;IAChB13E,CAAC,CAAC0tI,MAAM,GAAG,GAAG;IACd1tI,CAAC,CAAC+pE,YAAY,GAAG,GAAG;IACpB\u002FpE,CAAC,CAAC+qE,MAAM,GAAG,GAAG;IACd\u002FqE,CAAC,CAAC49K,SAAS,GAAG,IAAI;IAClB59K,CAAC,CAACs8G,UAAU,GAAG,GAAG;IAClBt8G,CAAC,CAAConE,MAAM,GAAG,GAAG;IACdpnE,CAAC,CAAC0nE,OAAO,GAAG,GAAG;IACf1nE,CAAC,CAACirE,MAAM,GAAG,GAAG;IACdjrE,CAAC,CAAC4nJ,OAAO,GAAG,GAAG;IACf5nJ,CAAC,CAACsuI,SAAS,GAAG,GAAG;IACjBtuI,CAAC,CAAC8jJ,WAAW,GAAG,GAAG;IACnB9jJ,CAAC,CAACshJ,MAAM,GAAG,GAAG;IACdthJ,CAAC,CAACg9E,aAAa,GAAG,GAAG;IACrBh9E,CAAC,CAACg+D,MAAM,GAAG,GAAG;IACdh+D,CAAC,CAACu\u002FG,OAAO,GAAG,GAAG;IACfv\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\u002FE,CAAC,GAAG,GAAG;IACTl\u002FE,CAAC,CAACvR,CAAC,GAAG,GAAG;IACTuR,CAAC,CAAC0iB,CAAC,GAAG,GAAG;IACT1iB,CAAC,CAAC2iB,CAAC,GAAG,GAAG;IACT3iB,CAAC,CAAColG,WAAW,GAAG,GAAG;IACnBplG,CAAC,CAAC2\u002FF,SAAS,GAAG,GAAG;IACjB3\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\u002FG,QAAQ,GAAG,IAAI;IACjBr\u002FG,CAAC,CAACiwJ,WAAW,GAAG,IAAI;IACpBjwJ,CAAC,CAAC63J,YAAY,GAAG,GAAG;IACpB73J,CAAC,CAACuvH,KAAK,GAAG,GAAG;IACbvvH,CAAC,CAAC8kF,KAAK,GAAG,GAAG;IACb9kF,CAAC,CAAC2rG,UAAU,GAAG,GAAG;IAClB3rG,CAAC,CAACo7K,KAAK,GAAG,GAAG;IACbp7K,CAAC,CAACuxI,MAAM,GAAG,GAAG;IACdvxI,CAAC,CAAC8lG,KAAK,GAAG,GAAG;IACb9lG,CAAC,CAACi5G,SAAS,GAAG,GAAG;IACjBj5G,CAAC,CAACk3G,QAAQ,GAAG,GAAG;IAChBl3G,CAAC,CAACk+J,IAAI,GAAG,GAAG;IACZl+J,CAAC,CAAC2oG,OAAO,GAAG,GAAG;IACf3oG,CAAC,CAACu5H,YAAY,GAAG,GAAG;IACpBv5H,CAAC,CAAC6kJ,MAAM,GAAG,GAAG;IACd7kJ,CAAC,CAAC6nG,KAAK,GAAG,GAAG;IACb7nG,CAAC,CAAC2\u002FG,MAAM,GAAG,IAAI;IACf3\u002FG,CAAC,CAACq2D,EAAE,GAAG,IAAI;IACXr2D,CAAC,CAACmpJ,WAAW,GAAG,GAAG;IACnBnpJ,CAAC,CAAC+rE,MAAM,GAAG,GAAG;IACd\u002FrE,CAAC,CAACyxE,MAAM,GAAG,GAAG;IACdzxE,CAAC,CAACkuE,EAAE,GAAG,IAAI;IACXluE,CAAC,CAACopJ,YAAY,GAAG,GAAG;IACpBppJ,CAAC,CAAC8lF,EAAE,GAAG,GAAG;IACV9lF,CAAC,CAACs5G,QAAQ,GAAG,GAAG;IAChBt5G,CAAC,CAAC4wI,MAAM,GAAG,GAAG;IACd5wI,CAAC,CAACwpJ,MAAM,GAAG,GAAG;IACdxpJ,CAAC,CAAC2kJ,EAAE,GAAG,GAAG;IACV3kJ,CAAC,CAAC2sH,UAAU,GAAG,GAAG;IAClB3sH,CAAC,CAAC0mE,SAAS,GAAG,GAAG;IACjB1mE,CAAC,CAAC46G,MAAM,GAAG,GAAG;IACd56G,CAAC,CAAC+jF,MAAM,GAAG,GAAG;IACd\u002FjF,CAAC,CAAC2kL,aAAa,GAAG,GAAG;IACrB3kL,CAAC,CAACq7G,MAAM,GAAG,GAAG;IACdr7G,CAAC,CAACwgF,SAAS,GAAG,GAAG;IACjBxgF,CAAC,CAAC23G,MAAM,GAAG,GAAG;IACd33G,CAAC,CAACmgF,MAAM,GAAG,GAAG;IACdngF,CAAC,CAACo3D,WAAW,GAAG,GAAG;IACnBp3D,CAAC,CAACkjF,MAAM,GAAG,GAAG;IACdljF,CAAC,CAACw7E,WAAW,GAAG,GAAG;IACnBx7E,CAAC,CAACgwL,MAAM,GAAG,GAAG;IACdhwL,CAAC,CAACikK,YAAY,GAAG,GAAG;IACpBjkK,CAAC,CAAC07G,WAAW,GAAG,GAAG;IACnB17G,CAAC,CAACi+E,KAAK,GAAG,GAAG;IACbj+E,CAAC,CAAC87E,SAAS,GAAG,GAAG;IACjB97E,CAAC,CAAC45F,OAAO,GAAG,GAAG;IACf55F,CAAC,CAACm7E,MAAM,GAAG,GAAG;IACdn7E,CAAC,CAAC8lL,OAAO,GAAG,GAAG;IACf9lL,CAAC,CAACi\u002FD,SAAS,GAAG,GAAG;IACjBj\u002FD,CAAC,CAACu8D,MAAM,GAAG,GAAG;IACdv8D,CAAC,CAACmtG,WAAW,GAAG,GAAG;IACnBntG,CAAC,CAACmwG,SAAS,GAAG,GAAG;IACjBnwG,CAAC,CAACggE,OAAO,GAAG,GAAG;IACfhgE,CAAC,CAACkoG,MAAM,GAAG,GAAG;IACdloG,CAAC,CAAC06F,KAAK,GAAG,GAAG;IACb16F,CAAC,CAACotE,YAAY,GAAG,GAAG;IACpBptE,CAAC,CAACyrI,MAAM,GAAG,GAAG;IACdzrI,CAAC,CAACw1F,MAAM,GAAG,GAAG;IACdx1F,CAAC,CAACy5E,YAAY,GAAG,GAAG;IACpBz5E,CAAC,CAACo6D,MAAM,GAAG,GAAG;IACdp6D,CAAC,CAACu+F,MAAM,GAAG,GAAG;IACdv+F,CAAC,CAACo\u002FD,UAAU,GAAG,GAAG;IAClBp\u002FD,CAAC,CAACwjK,MAAM,GAAG,GAAG;IACdxjK,CAAC,CAAC0jK,QAAQ,GAAG,GAAG;IAChB1jK,CAAC,CAACg6H,MAAM,GAAG,GAAG;IACdh6H,CAAC,CAAC0wI,OAAO,GAAG,GAAG;IACf1wI,CAAC,CAACyzE,MAAM,GAAG,GAAG;IACdzzE,CAAC,CAACojE,YAAY,GAAG,GAAG;IACpBpjE,CAAC,CAACijL,WAAW,GAAG,GAAG;IACnBjjL,CAAC,CAACwkF,WAAW,GAAG,GAAG;IACnBxkF,CAAC,CAAC44D,OAAO,GAAG,GAAG;IACf54D,CAAC,CAACs6J,MAAM,GAAG,GAAG;IACdt6J,CAAC,CAACmoG,QAAQ,GAAG,GAAG;IAChBnoG,CAAC,CAACkiF,UAAU,GAAG,GAAG;IAClBliF,CAAC,CAACk6E,KAAK,GAAG,GAAG;IACbl6E,CAAC,CAACywE,OAAO,GAAG,GAAG;IACfzwE,CAAC,CAACwzE,MAAM,GAAG,GAAG;IACdxzE,CAAC,CAACo3E,MAAM,GAAG,GAAG;IACdp3E,CAAC,CAAC00G,MAAM,GAAG,GAAG;IACd10G,CAAC,CAACo9E,OAAO,GAAG,GAAG;IACfp9E,CAAC,CAAC0mL,KAAK,GAAG,GAAG;IACb1mL,CAAC,CAACy6K,aAAa,GAAG,GAAG;IACrBz6K,CAAC,CAAC2vE,MAAM,GAAG,GAAG;IACd3vE,CAAC,CAACq4D,MAAM,GAAG,GAAG;IACdr4D,CAAC,CAAC22D,MAAM,GAAG,GAAG;IACd32D,CAAC,CAAC+4I,QAAQ,GAAG,GAAG;IAChB\u002F4I,CAAC,CAAC0iL,MAAM,GAAG,GAAG;IACd1iL,CAAC,CAACq5E,MAAM,GAAG,GAAG;IACdr5E,CAAC,CAACmtJ,WAAW,GAAG,GAAG;IACnBntJ,CAAC,CAACgxL,SAAS,GAAG,GAAG;IACjBhxL,CAAC,CAAC+sE,MAAM,GAAG,GAAG;IACd\u002FsE,CAAC,CAACu6H,WAAW,GAAG,GAAG;IACnBv6H,CAAC,CAACu+D,WAAW,GAAG,GAAG;IACnBv+D,CAAC,CAACylF,SAAS,GAAG,GAAG;IACjBzlF,CAAC,CAACo8G,SAAS,GAAG,GAAG;IACjBp8G,CAAC,CAACknG,MAAM,GAAG,GAAG;IACdlnG,CAAC,CAACg6I,MAAM,GAAG,GAAG;IACdh6I,CAAC,CAACklL,OAAO,GAAG,GAAG;IACfllL,CAAC,CAACgtE,MAAM,GAAG,GAAG;IACdhtE,CAAC,CAACimE,MAAM,GAAG,GAAG;IACdjmE,CAAC,CAAC4yJ,SAAS,GAAG,GAAG;IACjB5yJ,CAAC,CAACsmG,SAAS,GAAG,GAAG;IACjBtmG,CAAC,CAACi7J,UAAU,GAAG,GAAG;IAClBj7J,CAAC,CAAC+iE,MAAM,GAAG,GAAG;IACd\u002FiE,CAAC,CAAC+mE,UAAU,GAAG,GAAG;IAClB\u002FmE,CAAC,CAAC+xK,SAAS,GAAG,GAAG;IACjB\u002FxK,CAAC,CAACu\u002FD,MAAM,GAAG,GAAG;IACdv\u002FD,CAAC,CAACm5J,MAAM,GAAG,GAAG;IACdn5J,CAAC,CAACimJ,OAAO,GAAG,GAAG;IACfjmJ,CAAC,CAAC4hF,MAAM,GAAG,GAAG;IACd5hF,CAAC,CAAC6hF,MAAM,GAAG,GAAG;IACd7hF,CAAC,CAACgwH,YAAY,GAAG,GAAG;IACpBhwH,CAAC,CAACwhE,GAAG,GAAG,GAAG;IACXxhE,CAAC,CAACw6D,QAAQ,GAAG,GAAG;IAChBx6D,CAAC,CAAC8tI,YAAY,GAAG,GAAG;IACpB9tI,CAAC,CAAC6zK,MAAM,GAAG,GAAG;IACd7zK,CAAC,CAAC0gH,OAAO,GAAG,GAAG;IACf1gH,CAAC,CAACw9E,OAAO,GAAG,GAAG;IACfx9E,CAAC,CAACy2D,MAAM,GAAG,GAAG;IACdz2D,CAAC,CAAC+3D,SAAS,GAAG,GAAG;IACjB\u002F3D,CAAC,CAAC28G,MAAM,GAAG,GAAG;IACd38G,CAAC,CAACm2L,MAAM,GAAG,GAAG;IACdn2L,CAAC,CAACmhI,OAAO,GAAG,GAAG;IACfnhI,CAAC,CAACouE,MAAM,GAAG,GAAG;IACdpuE,CAAC,CAACgjJ,MAAM,GAAG,GAAG;IACdhjJ,CAAC,CAACq4F,OAAO,GAAG,GAAG;IACfr4F,CAAC,CAACohK,MAAM,GAAG,GAAG;IACdphK,CAAC,CAAC+9H,SAAS,GAAG,GAAG;IACjB\u002F9H,CAAC,CAAC4uE,WAAW,GAAG,GAAG;IACnB5uE,CAAC,CAACu8E,MAAM,GAAG,GAAG;IACdv8E,CAAC,CAAC48D,KAAK,GAAG,GAAG;IACb58D,CAAC,CAAC24K,KAAK,GAAG,GAAG;IACb34K,CAAC,CAACsiL,WAAW,GAAG,GAAG;IACnBtiL,CAAC,CAACsvE,SAAS,GAAG,GAAG;IACjBtvE,CAAC,CAACm4I,EAAE,GAAG,GAAG;IACVn4I,CAAC,CAAC0+H,MAAM,GAAG,GAAG;IACd1+H,CAAC,CAAC0lJ,aAAa,GAAG,GAAG;IACrB1lJ,CAAC,CAAC0gE,OAAO,GAAG,GAAG;IACf1gE,CAAC,CAAC80G,MAAM,GAAG,GAAG;IACd90G,CAAC,CAACs6K,aAAa,GAAG,GAAG;IACrBt6K,CAAC,CAAC03E,QAAQ,GAAG,GAAG;IAChB13E,CAAC,CAAC0tI,MAAM,GAAG,GAAG;IACd1tI,CAAC,CAAC+pE,YAAY,GAAG,GAAG;IACpB\u002FpE,CAAC,CAAC+qE,MAAM,GAAG,GAAG;IACd\u002FqE,CAAC,CAAC49K,SAAS,GAAG,IAAI;IAClB59K,CAAC,CAACs8G,UAAU,GAAG,GAAG;IAClBt8G,CAAC,CAAConE,MAAM,GAAG,GAAG;IACdpnE,CAAC,CAAC0nE,OAAO,GAAG,GAAG;IACf1nE,CAAC,CAACirE,MAAM,GAAG,GAAG;IACdjrE,CAAC,CAAC4nJ,OAAO,GAAG,GAAG;IACf5nJ,CAAC,CAACsuI,SAAS,GAAG,GAAG;IACjBtuI,CAAC,CAAC8jJ,WAAW,GAAG,GAAG;IACnB9jJ,CAAC,CAACshJ,MAAM,GAAG,GAAG;IACdthJ,CAAC,CAACg9E,aAAa,GAAG,GAAG;IACrBh9E,CAAC,CAACg+D,MAAM,GAAG,GAAG;IACdh+D,CAAC,CAACu\u002FG,OAAO,GAAG,GAAG;IACfv\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\u002FE,CAAC,GAAG,GAAG;IACTl\u002FE,CAAC,CAACvR,CAAC,GAAG,GAAG;IACTuR,CAAC,CAAC0iB,CAAC,GAAG,GAAG;IACT1iB,CAAC,CAAC2iB,CAAC,GAAG,GAAG;IACT3iB,CAAC,CAAColG,WAAW,GAAG,GAAG;IACnBplG,CAAC,CAAC2\u002FF,SAAS,GAAG,GAAG;IACjB3\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\u002FG,QAAQ,GAAG,IAAI;IACjBr\u002FG,CAAC,CAACiwJ,WAAW,GAAG,IAAI;IACpBjwJ,CAAC,CAAC63J,YAAY,GAAG,GAAG;IACpB73J,CAAC,CAACuvH,KAAK,GAAG,GAAG;IACbvvH,CAAC,CAAC8kF,KAAK,GAAG,GAAG;IACb9kF,CAAC,CAAC2rG,UAAU,GAAG,GAAG;IAClB3rG,CAAC,CAACo7K,KAAK,GAAG,GAAG;IACbp7K,CAAC,CAACuxI,MAAM,GAAG,GAAG;IACdvxI,CAAC,CAAC8lG,KAAK,GAAG,GAAG;IACb9lG,CAAC,CAACi5G,SAAS,GAAG,GAAG;IACjBj5G,CAAC,CAACk3G,QAAQ,GAAG,GAAG;IAChBl3G,CAAC,CAACk+J,IAAI,GAAG,GAAG;IACZl+J,CAAC,CAAC2oG,OAAO,GAAG,GAAG;IACf3oG,CAAC,CAACu5H,YAAY,GAAG,GAAG;IACpBv5H,CAAC,CAAC6kJ,MAAM,GAAG,GAAG;IACd7kJ,CAAC,CAAC6nG,KAAK,GAAG,GAAG;IACb7nG,CAAC,CAAC2\u002FG,MAAM,GAAG,IAAI;IACf3\u002FG,CAAC,CAACq2D,EAAE,GAAG,IAAI;IACXr2D,CAAC,CAACmpJ,WAAW,GAAG,GAAG;IACnBnpJ,CAAC,CAAC+rE,MAAM,GAAG,GAAG;IACd\u002FrE,CAAC,CAACyxE,MAAM,GAAG,GAAG;IACdzxE,CAAC,CAACkuE,EAAE,GAAG,IAAI;IACXluE,CAAC,CAACopJ,YAAY,GAAG,GAAG;IACpBppJ,CAAC,CAAC8lF,EAAE,GAAG,GAAG;IACV9lF,CAAC,CAACs5G,QAAQ,GAAG,GAAG;IAChBt5G,CAAC,CAAC4wI,MAAM,GAAG,GAAG;IACd5wI,CAAC,CAACwpJ,MAAM,GAAG,GAAG;IACdxpJ,CAAC,CAAC2kJ,EAAE,GAAG,GAAG;IACV3kJ,CAAC,CAAC2sH,UAAU,GAAG,GAAG;IAClB3sH,CAAC,CAAC0mE,SAAS,GAAG,GAAG;IACjB1mE,CAAC,CAAC46G,MAAM,GAAG,GAAG;IACd56G,CAAC,CAAC+jF,MAAM,GAAG,GAAG;IACd\u002FjF,CAAC,CAAC2kL,aAAa,GAAG,GAAG;IACrB3kL,CAAC,CAACq7G,MAAM,GAAG,GAAG;IACdr7G,CAAC,CAACwgF,SAAS,GAAG,GAAG;IACjBxgF,CAAC,CAAC23G,MAAM,GAAG,GAAG;IACd33G,CAAC,CAACmgF,MAAM,GAAG,GAAG;IACdngF,CAAC,CAACo3D,WAAW,GAAG,GAAG;IACnBp3D,CAAC,CAACkjF,MAAM,GAAG,GAAG;IACdljF,CAAC,CAACw7E,WAAW,GAAG,GAAG;IACnBx7E,CAAC,CAACgwL,MAAM,GAAG,GAAG;IACdhwL,CAAC,CAACikK,YAAY,GAAG,GAAG;IACpBjkK,CAAC,CAAC07G,WAAW,GAAG,GAAG;IACnB17G,CAAC,CAACi+E,KAAK,GAAG,GAAG;IACbj+E,CAAC,CAAC87E,SAAS,GAAG,GAAG;IACjB97E,CAAC,CAAC45F,OAAO,GAAG,GAAG;IACf55F,CAAC,CAACm7E,MAAM,GAAG,GAAG;IACdn7E,CAAC,CAAC8lL,OAAO,GAAG,GAAG;IACf9lL,CAAC,CAACi\u002FD,SAAS,GAAG,GAAG;IACjBj\u002FD,CAAC,CAACu8D,MAAM,GAAG,GAAG;IACdv8D,CAAC,CAACmtG,WAAW,GAAG,GAAG;IACnBntG,CAAC,CAACmwG,SAAS,GAAG,GAAG;IACjBnwG,CAAC,CAACggE,OAAO,GAAG,GAAG;IACfhgE,CAAC,CAACkoG,MAAM,GAAG,GAAG;IACdloG,CAAC,CAAC06F,KAAK,GAAG,GAAG;IACb16F,CAAC,CAACotE,YAAY,GAAG,GAAG;IACpBptE,CAAC,CAACyrI,MAAM,GAAG,GAAG;IACdzrI,CAAC,CAACw1F,MAAM,GAAG,GAAG;IACdx1F,CAAC,CAACy5E,YAAY,GAAG,GAAG;IACpBz5E,CAAC,CAACo6D,MAAM,GAAG,GAAG;IACdp6D,CAAC,CAACu+F,MAAM,GAAG,GAAG;IACdv+F,CAAC,CAACo\u002FD,UAAU,GAAG,GAAG;IAClBp\u002FD,CAAC,CAACwjK,MAAM,GAAG,GAAG;IACdxjK,CAAC,CAAC0jK,QAAQ,GAAG,GAAG;IAChB1jK,CAAC,CAACg6H,MAAM,GAAG,GAAG;IACdh6H,CAAC,CAAC0wI,OAAO,GAAG,GAAG;IACf1wI,CAAC,CAACyzE,MAAM,GAAG,GAAG;IACdzzE,CAAC,CAACojE,YAAY,GAAG,GAAG;IACpBpjE,CAAC,CAACijL,WAAW,GAAG,GAAG;IACnBjjL,CAAC,CAACwkF,WAAW,GAAG,GAAG;IACnBxkF,CAAC,CAAC44D,OAAO,GAAG,GAAG;IACf54D,CAAC,CAACs6J,MAAM,GAAG,GAAG;IACdt6J,CAAC,CAACmoG,QAAQ,GAAG,GAAG;IAChBnoG,CAAC,CAACkiF,UAAU,GAAG,GAAG;IAClBliF,CAAC,CAACk6E,KAAK,GAAG,GAAG;IACbl6E,CAAC,CAACywE,OAAO,GAAG,GAAG;IACfzwE,CAAC,CAACwzE,MAAM,GAAG,GAAG;IACdxzE,CAAC,CAACo3E,MAAM,GAAG,GAAG;IACdp3E,CAAC,CAAC00G,MAAM,GAAG,GAAG;IACd10G,CAAC,CAACo9E,OAAO,GAAG,GAAG;IACfp9E,CAAC,CAAC0mL,KAAK,GAAG,GAAG;IACb1mL,CAAC,CAACy6K,aAAa,GAAG,GAAG;IACrBz6K,CAAC,CAAC2vE,MAAM,GAAG,GAAG;IACd3vE,CAAC,CAACq4D,MAAM,GAAG,GAAG;IACdr4D,CAAC,CAAC22D,MAAM,GAAG,GAAG;IACd32D,CAAC,CAAC+4I,QAAQ,GAAG,GAAG;IAChB\u002F4I,CAAC,CAAC0iL,MAAM,GAAG,GAAG;IACd1iL,CAAC,CAACq5E,MAAM,GAAG,GAAG;IACdr5E,CAAC,CAACmtJ,WAAW,GAAG,GAAG;IACnBntJ,CAAC,CAACgxL,SAAS,GAAG,GAAG;IACjBhxL,CAAC,CAAC+sE,MAAM,GAAG,GAAG;IACd\u002FsE,CAAC,CAACu6H,WAAW,GAAG,GAAG;IACnBv6H,CAAC,CAACu+D,WAAW,GAAG,GAAG;IACnBv+D,CAAC,CAACylF,SAAS,GAAG,GAAG;IACjBzlF,CAAC,CAACo8G,SAAS,GAAG,GAAG;IACjBp8G,CAAC,CAACknG,MAAM,GAAG,GAAG;IACdlnG,CAAC,CAACg6I,MAAM,GAAG,GAAG;IACdh6I,CAAC,CAACklL,OAAO,GAAG,GAAG;IACfllL,CAAC,CAACgtE,MAAM,GAAG,GAAG;IACdhtE,CAAC,CAACimE,MAAM,GAAG,GAAG;IACdjmE,CAAC,CAAC4yJ,SAAS,GAAG,GAAG;IACjB5yJ,CAAC,CAACsmG,SAAS,GAAG,GAAG;IACjBtmG,CAAC,CAACi7J,UAAU,GAAG,GAAG;IAClBj7J,CAAC,CAAC+iE,MAAM,GAAG,GAAG;IACd\u002FiE,CAAC,CAAC+mE,UAAU,GAAG,GAAG;IAClB\u002FmE,CAAC,CAAC+xK,SAAS,GAAG,GAAG;IACjB\u002FxK,CAAC,CAACu\u002FD,MAAM,GAAG,GAAG;IACdv\u002FD,CAAC,CAACm5J,MAAM,GAAG,GAAG;IACdn5J,CAAC,CAACimJ,OAAO,GAAG,GAAG;IACfjmJ,CAAC,CAAC4hF,MAAM,GAAG,GAAG;IACd5hF,CAAC,CAAC6hF,MAAM,GAAG,GAAG;IACd7hF,CAAC,CAACgwH,YAAY,GAAG,GAAG;IACpBhwH,CAAC,CAACwhE,GAAG,GAAG,GAAG;IACXxhE,CAAC,CAACw6D,QAAQ,GAAG,GAAG;IAChBx6D,CAAC,CAAC8tI,YAAY,GAAG,GAAG;IACpB9tI,CAAC,CAAC6zK,MAAM,GAAG,GAAG;IACd7zK,CAAC,CAAC0gH,OAAO,GAAG,GAAG;IACf1gH,CAAC,CAACw9E,OAAO,GAAG,GAAG;IACfx9E,CAAC,CAACy2D,MAAM,GAAG,GAAG;IACdz2D,CAAC,CAAC+3D,SAAS,GAAG,GAAG;IACjB\u002F3D,CAAC,CAAC28G,MAAM,GAAG,GAAG;IACd38G,CAAC,CAACm2L,MAAM,GAAG,GAAG;IACdn2L,CAAC,CAACmhI,OAAO,GAAG,GAAG;IACfnhI,CAAC,CAACouE,MAAM,GAAG,GAAG;IACdpuE,CAAC,CAACgjJ,MAAM,GAAG,GAAG;IACdhjJ,CAAC,CAACq4F,OAAO,GAAG,GAAG;IACfr4F,CAAC,CAACohK,MAAM,GAAG,GAAG;IACdphK,CAAC,CAAC+9H,SAAS,GAAG,GAAG;IACjB\u002F9H,CAAC,CAAC4uE,WAAW,GAAG,GAAG;IACnB5uE,CAAC,CAACu8E,MAAM,GAAG,GAAG;IACdv8E,CAAC,CAAC48D,KAAK,GAAG,GAAG;IACb58D,CAAC,CAAC24K,KAAK,GAAG,GAAG;IACb34K,CAAC,CAACsiL,WAAW,GAAG,GAAG;IACnBtiL,CAAC,CAACsvE,SAAS,GAAG,GAAG;IACjBtvE,CAAC,CAACm4I,EAAE,GAAG,GAAG;IACVn4I,CAAC,CAAC0+H,MAAM,GAAG,GAAG;IACd1+H,CAAC,CAAC0lJ,aAAa,GAAG,GAAG;IACrB1lJ,CAAC,CAAC0gE,OAAO,GAAG,GAAG;IACf1gE,CAAC,CAAC80G,MAAM,GAAG,GAAG;IACd90G,CAAC,CAACs6K,aAAa,GAAG,GAAG;IACrBt6K,CAAC,CAAC03E,QAAQ,GAAG,GAAG;IAChB13E,CAAC,CAAC0tI,MAAM,GAAG,GAAG;IACd1tI,CAAC,CAAC+pE,YAAY,GAAG,GAAG;IACpB\u002FpE,CAAC,CAAC+qE,MAAM,GAAG,GAAG;IACd\u002FqE,CAAC,CAAC49K,SAAS,GAAG,IAAI;IAClB59K,CAAC,CAACs8G,UAAU,GAAG,GAAG;IAClBt8G,CAAC,CAAConE,MAAM,GAAG,GAAG;IACdpnE,CAAC,CAAC0nE,OAAO,GAAG,GAAG;IACf1nE,CAAC,CAACirE,MAAM,GAAG,GAAG;IACdjrE,CAAC,CAAC4nJ,OAAO,GAAG,GAAG;IACf5nJ,CAAC,CAACsuI,SAAS,GAAG,GAAG;IACjBtuI,CAAC,CAAC8jJ,WAAW,GAAG,GAAG;IACnB9jJ,CAAC,CAACshJ,MAAM,GAAG,GAAG;IACdthJ,CAAC,CAACg9E,aAAa,GAAG,GAAG;IACrBh9E,CAAC,CAACg+D,MAAM,GAAG,GAAG;IACdh+D,CAAC,CAACu\u002FG,OAAO,GAAG,GAAG;IACfv\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\u002FG,QAAQ,GAAG,IAAI;IACjBr\u002FG,CAAC,CAACo9F,WAAW,GAAG,GAAG;IACnBp9F,CAAC,CAAC+7F,YAAY,GAAG,IAAI;IACrB\u002F7F,CAAC,CAACgoG,cAAc,GAAG,GAAG;IACtBhoG,CAAC,CAACi4F,KAAK,GAAG,GAAG;IACbj4F,CAAC,CAACmnE,QAAQ,GAAG,GAAG;IAChBnnE,CAAC,CAACk0E,QAAQ,GAAG,GAAG;IAChBl0E,CAAC,CAACssL,WAAW,GAAG,GAAG;IACnBtsL,CAAC,CAACqrG,cAAc,GAAG,GAAG;IACtBrrG,CAAC,CAACurG,UAAU,GAAG,GAAG;IAClBvrG,CAAC,CAAC+\u002FG,QAAQ,GAAG,GAAG;IAChB\u002F\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\u002FE,CAAC,GAAG,GAAG;IACTl\u002FE,CAAC,CAACvR,CAAC,GAAG,GAAG;IACTuR,CAAC,CAAC0iB,CAAC,GAAG,GAAG;IACT1iB,CAAC,CAAC2iB,CAAC,GAAG,GAAG;IACT3iB,CAAC,CAAColG,WAAW,GAAG,GAAG;IACnBplG,CAAC,CAAC2\u002FF,SAAS,GAAG,GAAG;IACjB3\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\u002FG,QAAQ,GAAG,IAAI;IACjBr\u002FG,CAAC,CAACiwJ,WAAW,GAAG,IAAI;IACpBjwJ,CAAC,CAAC63J,YAAY,GAAG,GAAG;IACpB73J,CAAC,CAACuvH,KAAK,GAAG,GAAG;IACbvvH,CAAC,CAAC8kF,KAAK,GAAG,GAAG;IACb9kF,CAAC,CAAC2rG,UAAU,GAAG,GAAG;IAClB3rG,CAAC,CAACo7K,KAAK,GAAG,GAAG;IACbp7K,CAAC,CAACuxI,MAAM,GAAG,GAAG;IACdvxI,CAAC,CAAC8lG,KAAK,GAAG,GAAG;IACb9lG,CAAC,CAACi5G,SAAS,GAAG,GAAG;IACjBj5G,CAAC,CAACk3G,QAAQ,GAAG,GAAG;IAChBl3G,CAAC,CAACk+J,IAAI,GAAG,GAAG;IACZl+J,CAAC,CAAC2oG,OAAO,GAAG,GAAG;IACf3oG,CAAC,CAACu5H,YAAY,GAAG,GAAG;IACpBv5H,CAAC,CAAC6kJ,MAAM,GAAG,GAAG;IACd7kJ,CAAC,CAAC6nG,KAAK,GAAG,GAAG;IACb7nG,CAAC,CAAC2\u002FG,MAAM,GAAG,IAAI;IACf3\u002FG,CAAC,CAACq2D,EAAE,GAAG,GAAG;IACVr2D,CAAC,CAACmpJ,WAAW,GAAG,GAAG;IACnBnpJ,CAAC,CAAC+rE,MAAM,GAAG,GAAG;IACd\u002FrE,CAAC,CAACyxE,MAAM,GAAG,GAAG;IACdzxE,CAAC,CAACkuE,EAAE,GAAG,GAAG;IACVluE,CAAC,CAACopJ,YAAY,GAAG,GAAG;IACpBppJ,CAAC,CAAC8lF,EAAE,GAAG,GAAG;IACV9lF,CAAC,CAACs5G,QAAQ,GAAG,GAAG;IAChBt5G,CAAC,CAAC4wI,MAAM,GAAG,GAAG;IACd5wI,CAAC,CAACwpJ,MAAM,GAAG,GAAG;IACdxpJ,CAAC,CAAC2kJ,EAAE,GAAG,GAAG;IACV3kJ,CAAC,CAAC2sH,UAAU,GAAG,GAAG;IAClB3sH,CAAC,CAAC0mE,SAAS,GAAG,GAAG;IACjB1mE,CAAC,CAAC46G,MAAM,GAAG,GAAG;IACd56G,CAAC,CAAC+jF,MAAM,GAAG,GAAG;IACd\u002FjF,CAAC,CAAC2kL,aAAa,GAAG,GAAG;IACrB3kL,CAAC,CAACq7G,MAAM,GAAG,GAAG;IACdr7G,CAAC,CAACwgF,SAAS,GAAG,GAAG;IACjBxgF,CAAC,CAAC23G,MAAM,GAAG,GAAG;IACd33G,CAAC,CAACmgF,MAAM,GAAG,GAAG;IACdngF,CAAC,CAACo3D,WAAW,GAAG,GAAG;IACnBp3D,CAAC,CAACkjF,MAAM,GAAG,GAAG;IACdljF,CAAC,CAACw7E,WAAW,GAAG,GAAG;IACnBx7E,CAAC,CAACgwL,MAAM,GAAG,GAAG;IACdhwL,CAAC,CAACikK,YAAY,GAAG,GAAG;IACpBjkK,CAAC,CAAC07G,WAAW,GAAG,GAAG;IACnB17G,CAAC,CAACi+E,KAAK,GAAG,GAAG;IACbj+E,CAAC,CAAC87E,SAAS,GAAG,GAAG;IACjB97E,CAAC,CAAC45F,OAAO,GAAG,GAAG;IACf55F,CAAC,CAACm7E,MAAM,GAAG,GAAG;IACdn7E,CAAC,CAAC8lL,OAAO,GAAG,GAAG;IACf9lL,CAAC,CAACi\u002FD,SAAS,GAAG,GAAG;IACjBj\u002FD,CAAC,CAACu8D,MAAM,GAAG,GAAG;IACdv8D,CAAC,CAACmtG,WAAW,GAAG,GAAG;IACnBntG,CAAC,CAACmwG,SAAS,GAAG,GAAG;IACjBnwG,CAAC,CAACggE,OAAO,GAAG,GAAG;IACfhgE,CAAC,CAACkoG,MAAM,GAAG,GAAG;IACdloG,CAAC,CAAC06F,KAAK,GAAG,GAAG;IACb16F,CAAC,CAACotE,YAAY,GAAG,GAAG;IACpBptE,CAAC,CAACyrI,MAAM,GAAG,GAAG;IACdzrI,CAAC,CAACw1F,MAAM,GAAG,GAAG;IACdx1F,CAAC,CAACy5E,YAAY,GAAG,GAAG;IACpBz5E,CAAC,CAACo6D,MAAM,GAAG,GAAG;IACdp6D,CAAC,CAACu+F,MAAM,GAAG,GAAG;IACdv+F,CAAC,CAACo\u002FD,UAAU,GAAG,GAAG;IAClBp\u002FD,CAAC,CAACwjK,MAAM,GAAG,GAAG;IACdxjK,CAAC,CAAC0jK,QAAQ,GAAG,GAAG;IAChB1jK,CAAC,CAACg6H,MAAM,GAAG,GAAG;IACdh6H,CAAC,CAAC0wI,OAAO,GAAG,GAAG;IACf1wI,CAAC,CAACyzE,MAAM,GAAG,GAAG;IACdzzE,CAAC,CAACojE,YAAY,GAAG,GAAG;IACpBpjE,CAAC,CAACijL,WAAW,GAAG,GAAG;IACnBjjL,CAAC,CAACwkF,WAAW,GAAG,GAAG;IACnBxkF,CAAC,CAAC44D,OAAO,GAAG,GAAG;IACf54D,CAAC,CAACs6J,MAAM,GAAG,GAAG;IACdt6J,CAAC,CAACmoG,QAAQ,GAAG,GAAG;IAChBnoG,CAAC,CAACkiF,UAAU,GAAG,GAAG;IAClBliF,CAAC,CAACk6E,KAAK,GAAG,GAAG;IACbl6E,CAAC,CAACywE,OAAO,GAAG,GAAG;IACfzwE,CAAC,CAACwzE,MAAM,GAAG,GAAG;IACdxzE,CAAC,CAACo3E,MAAM,GAAG,GAAG;IACdp3E,CAAC,CAAC00G,MAAM,GAAG,GAAG;IACd10G,CAAC,CAACo9E,OAAO,GAAG,GAAG;IACfp9E,CAAC,CAAC0mL,KAAK,GAAG,GAAG;IACb1mL,CAAC,CAACy6K,aAAa,GAAG,GAAG;IACrBz6K,CAAC,CAAC2vE,MAAM,GAAG,GAAG;IACd3vE,CAAC,CAACq4D,MAAM,GAAG,GAAG;IACdr4D,CAAC,CAAC22D,MAAM,GAAG,GAAG;IACd32D,CAAC,CAAC+4I,QAAQ,GAAG,GAAG;IAChB\u002F4I,CAAC,CAAC0iL,MAAM,GAAG,GAAG;IACd1iL,CAAC,CAACq5E,MAAM,GAAG,GAAG;IACdr5E,CAAC,CAACmtJ,WAAW,GAAG,GAAG;IACnBntJ,CAAC,CAACgxL,SAAS,GAAG,GAAG;IACjBhxL,CAAC,CAAC+sE,MAAM,GAAG,GAAG;IACd\u002FsE,CAAC,CAACu6H,WAAW,GAAG,GAAG;IACnBv6H,CAAC,CAACu+D,WAAW,GAAG,GAAG;IACnBv+D,CAAC,CAACylF,SAAS,GAAG,GAAG;IACjBzlF,CAAC,CAACo8G,SAAS,GAAG,GAAG;IACjBp8G,CAAC,CAACknG,MAAM,GAAG,GAAG;IACdlnG,CAAC,CAACg6I,MAAM,GAAG,GAAG;IACdh6I,CAAC,CAACklL,OAAO,GAAG,GAAG;IACfllL,CAAC,CAACgtE,MAAM,GAAG,GAAG;IACdhtE,CAAC,CAACimE,MAAM,GAAG,GAAG;IACdjmE,CAAC,CAAC4yJ,SAAS,GAAG,GAAG;IACjB5yJ,CAAC,CAACsmG,SAAS,GAAG,GAAG;IACjBtmG,CAAC,CAACi7J,UAAU,GAAG,GAAG;IAClBj7J,CAAC,CAAC+iE,MAAM,GAAG,GAAG;IACd\u002FiE,CAAC,CAAC+mE,UAAU,GAAG,GAAG;IAClB\u002FmE,CAAC,CAAC+xK,SAAS,GAAG,GAAG;IACjB\u002FxK,CAAC,CAACu\u002FD,MAAM,GAAG,GAAG;IACdv\u002FD,CAAC,CAACm5J,MAAM,GAAG,GAAG;IACdn5J,CAAC,CAACimJ,OAAO,GAAG,GAAG;IACfjmJ,CAAC,CAAC4hF,MAAM,GAAG,GAAG;IACd5hF,CAAC,CAAC6hF,MAAM,GAAG,GAAG;IACd7hF,CAAC,CAACgwH,YAAY,GAAG,GAAG;IACpBhwH,CAAC,CAACwhE,GAAG,GAAG,GAAG;IACXxhE,CAAC,CAACw6D,QAAQ,GAAG,GAAG;IAChBx6D,CAAC,CAAC8tI,YAAY,GAAG,GAAG;IACpB9tI,CAAC,CAAC6zK,MAAM,GAAG,GAAG;IACd7zK,CAAC,CAAC0gH,OAAO,GAAG,GAAG;IACf1gH,CAAC,CAACw9E,OAAO,GAAG,GAAG;IACfx9E,CAAC,CAACy2D,MAAM,GAAG,GAAG;IACdz2D,CAAC,CAAC+3D,SAAS,GAAG,GAAG;IACjB\u002F3D,CAAC,CAAC28G,MAAM,GAAG,GAAG;IACd38G,CAAC,CAACm2L,MAAM,GAAG,GAAG;IACdn2L,CAAC,CAACmhI,OAAO,GAAG,GAAG;IACfnhI,CAAC,CAACouE,MAAM,GAAG,GAAG;IACdpuE,CAAC,CAACgjJ,MAAM,GAAG,GAAG;IACdhjJ,CAAC,CAACq4F,OAAO,GAAG,GAAG;IACfr4F,CAAC,CAACohK,MAAM,GAAG,GAAG;IACdphK,CAAC,CAAC+9H,SAAS,GAAG,GAAG;IACjB\u002F9H,CAAC,CAAC4uE,WAAW,GAAG,GAAG;IACnB5uE,CAAC,CAACu8E,MAAM,GAAG,GAAG;IACdv8E,CAAC,CAAC48D,KAAK,GAAG,GAAG;IACb58D,CAAC,CAAC24K,KAAK,GAAG,GAAG;IACb34K,CAAC,CAACsiL,WAAW,GAAG,GAAG;IACnBtiL,CAAC,CAACsvE,SAAS,GAAG,GAAG;IACjBtvE,CAAC,CAACm4I,EAAE,GAAG,GAAG;IACVn4I,CAAC,CAAC0+H,MAAM,GAAG,GAAG;IACd1+H,CAAC,CAAC0lJ,aAAa,GAAG,GAAG;IACrB1lJ,CAAC,CAAC0gE,OAAO,GAAG,GAAG;IACf1gE,CAAC,CAAC80G,MAAM,GAAG,GAAG;IACd90G,CAAC,CAACs6K,aAAa,GAAG,GAAG;IACrBt6K,CAAC,CAAC03E,QAAQ,GAAG,GAAG;IAChB13E,CAAC,CAAC0tI,MAAM,GAAG,GAAG;IACd1tI,CAAC,CAAC+pE,YAAY,GAAG,GAAG;IACpB\u002FpE,CAAC,CAAC+qE,MAAM,GAAG,GAAG;IACd\u002FqE,CAAC,CAAC49K,SAAS,GAAG,GAAG;IACjB59K,CAAC,CAACs8G,UAAU,GAAG,GAAG;IAClBt8G,CAAC,CAAConE,MAAM,GAAG,GAAG;IACdpnE,CAAC,CAAC0nE,OAAO,GAAG,GAAG;IACf1nE,CAAC,CAACirE,MAAM,GAAG,GAAG;IACdjrE,CAAC,CAAC4nJ,OAAO,GAAG,GAAG;IACf5nJ,CAAC,CAACsuI,SAAS,GAAG,GAAG;IACjBtuI,CAAC,CAAC8jJ,WAAW,GAAG,GAAG;IACnB9jJ,CAAC,CAACshJ,MAAM,GAAG,GAAG;IACdthJ,CAAC,CAACg9E,aAAa,GAAG,GAAG;IACrBh9E,CAAC,CAACg+D,MAAM,GAAG,GAAG;IACdh+D,CAAC,CAACu\u002FG,OAAO,GAAG,GAAG;IACfv\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\u002FE,CAAC,GAAG,IAAI;IACVl\u002FE,CAAC,CAACvR,CAAC,GAAG,GAAG;IACTuR,CAAC,CAAC0iB,CAAC,GAAG,GAAG;IACT1iB,CAAC,CAAC2iB,CAAC,GAAG,GAAG;IACT3iB,CAAC,CAAColG,WAAW,GAAG,GAAG;IACnBplG,CAAC,CAAC2\u002FF,SAAS,GAAG,GAAG;IACjB3\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\u002FG,QAAQ,GAAG,IAAI;IACjBr\u002FG,CAAC,CAACiwJ,WAAW,GAAG,IAAI;IACpBjwJ,CAAC,CAAC63J,YAAY,GAAG,GAAG;IACpB73J,CAAC,CAACuvH,KAAK,GAAG,GAAG;IACbvvH,CAAC,CAAC8kF,KAAK,GAAG,GAAG;IACb9kF,CAAC,CAAC2rG,UAAU,GAAG,GAAG;IAClB3rG,CAAC,CAACo7K,KAAK,GAAG,GAAG;IACbp7K,CAAC,CAACuxI,MAAM,GAAG,GAAG;IACdvxI,CAAC,CAAC8lG,KAAK,GAAG,GAAG;IACb9lG,CAAC,CAACi5G,SAAS,GAAG,GAAG;IACjBj5G,CAAC,CAACk3G,QAAQ,GAAG,GAAG;IAChBl3G,CAAC,CAACk+J,IAAI,GAAG,GAAG;IACZl+J,CAAC,CAAC2oG,OAAO,GAAG,GAAG;IACf3oG,CAAC,CAACu5H,YAAY,GAAG,GAAG;IACpBv5H,CAAC,CAAC6kJ,MAAM,GAAG,GAAG;IACd7kJ,CAAC,CAAC6nG,KAAK,GAAG,GAAG;IACb7nG,CAAC,CAAC2\u002FG,MAAM,GAAG,IAAI;IACf3\u002FG,CAAC,CAACq2D,EAAE,GAAG,IAAI;IACXr2D,CAAC,CAACmpJ,WAAW,GAAG,GAAG;IACnBnpJ,CAAC,CAAC+rE,MAAM,GAAG,GAAG;IACd\u002FrE,CAAC,CAACyxE,MAAM,GAAG,GAAG;IACdzxE,CAAC,CAACkuE,EAAE,GAAG,IAAI;IACXluE,CAAC,CAACopJ,YAAY,GAAG,GAAG;IACpBppJ,CAAC,CAAC8lF,EAAE,GAAG,GAAG;IACV9lF,CAAC,CAACs5G,QAAQ,GAAG,GAAG;IAChBt5G,CAAC,CAAC4wI,MAAM,GAAG,GAAG;IACd5wI,CAAC,CAACwpJ,MAAM,GAAG,GAAG;IACdxpJ,CAAC,CAAC2kJ,EAAE,GAAG,GAAG;IACV3kJ,CAAC,CAAC2sH,UAAU,GAAG,GAAG;IAClB3sH,CAAC,CAAC0mE,SAAS,GAAG,GAAG;IACjB1mE,CAAC,CAAC46G,MAAM,GAAG,GAAG;IACd56G,CAAC,CAAC+jF,MAAM,GAAG,GAAG;IACd\u002FjF,CAAC,CAAC2kL,aAAa,GAAG,GAAG;IACrB3kL,CAAC,CAACq7G,MAAM,GAAG,GAAG;IACdr7G,CAAC,CAACwgF,SAAS,GAAG,GAAG;IACjBxgF,CAAC,CAAC23G,MAAM,GAAG,GAAG;IACd33G,CAAC,CAACmgF,MAAM,GAAG,GAAG;IACdngF,CAAC,CAACo3D,WAAW,GAAG,GAAG;IACnBp3D,CAAC,CAACkjF,MAAM,GAAG,GAAG;IACdljF,CAAC,CAACw7E,WAAW,GAAG,GAAG;IACnBx7E,CAAC,CAACgwL,MAAM,GAAG,GAAG;IACdhwL,CAAC,CAACikK,YAAY,GAAG,GAAG;IACpBjkK,CAAC,CAAC07G,WAAW,GAAG,GAAG;IACnB17G,CAAC,CAACi+E,KAAK,GAAG,GAAG;IACbj+E,CAAC,CAAC87E,SAAS,GAAG,GAAG;IACjB97E,CAAC,CAAC45F,OAAO,GAAG,GAAG;IACf55F,CAAC,CAACm7E,MAAM,GAAG,GAAG;IACdn7E,CAAC,CAAC8lL,OAAO,GAAG,GAAG;IACf9lL,CAAC,CAACi\u002FD,SAAS,GAAG,GAAG;IACjBj\u002FD,CAAC,CAACu8D,MAAM,GAAG,GAAG;IACdv8D,CAAC,CAACmtG,WAAW,GAAG,GAAG;IACnBntG,CAAC,CAACmwG,SAAS,GAAG,GAAG;IACjBnwG,CAAC,CAACggE,OAAO,GAAG,GAAG;IACfhgE,CAAC,CAACkoG,MAAM,GAAG,GAAG;IACdloG,CAAC,CAAC06F,KAAK,GAAG,GAAG;IACb16F,CAAC,CAACotE,YAAY,GAAG,GAAG;IACpBptE,CAAC,CAACyrI,MAAM,GAAG,GAAG;IACdzrI,CAAC,CAACw1F,MAAM,GAAG,GAAG;IACdx1F,CAAC,CAACy5E,YAAY,GAAG,GAAG;IACpBz5E,CAAC,CAACo6D,MAAM,GAAG,GAAG;IACdp6D,CAAC,CAACu+F,MAAM,GAAG,GAAG;IACdv+F,CAAC,CAACo\u002FD,UAAU,GAAG,GAAG;IAClBp\u002FD,CAAC,CAACwjK,MAAM,GAAG,GAAG;IACdxjK,CAAC,CAAC0jK,QAAQ,GAAG,GAAG;IAChB1jK,CAAC,CAACg6H,MAAM,GAAG,GAAG;IACdh6H,CAAC,CAAC0wI,OAAO,GAAG,GAAG;IACf1wI,CAAC,CAACyzE,MAAM,GAAG,GAAG;IACdzzE,CAAC,CAACojE,YAAY,GAAG,GAAG;IACpBpjE,CAAC,CAACijL,WAAW,GAAG,GAAG;IACnBjjL,CAAC,CAACwkF,WAAW,GAAG,GAAG;IACnBxkF,CAAC,CAAC44D,OAAO,GAAG,GAAG;IACf54D,CAAC,CAACs6J,MAAM,GAAG,GAAG;IACdt6J,CAAC,CAACmoG,QAAQ,GAAG,GAAG;IAChBnoG,CAAC,CAACkiF,UAAU,GAAG,GAAG;IAClBliF,CAAC,CAACk6E,KAAK,GAAG,GAAG;IACbl6E,CAAC,CAACywE,OAAO,GAAG,GAAG;IACfzwE,CAAC,CAACwzE,MAAM,GAAG,GAAG;IACdxzE,CAAC,CAACo3E,MAAM,GAAG,GAAG;IACdp3E,CAAC,CAAC00G,MAAM,GAAG,GAAG;IACd10G,CAAC,CAACo9E,OAAO,GAAG,GAAG;IACfp9E,CAAC,CAAC0mL,KAAK,GAAG,GAAG;IACb1mL,CAAC,CAACy6K,aAAa,GAAG,GAAG;IACrBz6K,CAAC,CAAC2vE,MAAM,GAAG,GAAG;IACd3vE,CAAC,CAACq4D,MAAM,GAAG,GAAG;IACdr4D,CAAC,CAAC22D,MAAM,GAAG,GAAG;IACd32D,CAAC,CAAC+4I,QAAQ,GAAG,GAAG;IAChB\u002F4I,CAAC,CAAC0iL,MAAM,GAAG,GAAG;IACd1iL,CAAC,CAACq5E,MAAM,GAAG,GAAG;IACdr5E,CAAC,CAACmtJ,WAAW,GAAG,GAAG;IACnBntJ,CAAC,CAACgxL,SAAS,GAAG,GAAG;IACjBhxL,CAAC,CAAC+sE,MAAM,GAAG,GAAG;IACd\u002FsE,CAAC,CAACu6H,WAAW,GAAG,GAAG;IACnBv6H,CAAC,CAACu+D,WAAW,GAAG,GAAG;IACnBv+D,CAAC,CAACylF,SAAS,GAAG,GAAG;IACjBzlF,CAAC,CAACo8G,SAAS,GAAG,GAAG;IACjBp8G,CAAC,CAACknG,MAAM,GAAG,GAAG;IACdlnG,CAAC,CAACg6I,MAAM,GAAG,GAAG;IACdh6I,CAAC,CAACklL,OAAO,GAAG,GAAG;IACfllL,CAAC,CAACgtE,MAAM,GAAG,GAAG;IACdhtE,CAAC,CAACimE,MAAM,GAAG,GAAG;IACdjmE,CAAC,CAAC4yJ,SAAS,GAAG,GAAG;IACjB5yJ,CAAC,CAACsmG,SAAS,GAAG,GAAG;IACjBtmG,CAAC,CAACi7J,UAAU,GAAG,GAAG;IAClBj7J,CAAC,CAAC+iE,MAAM,GAAG,GAAG;IACd\u002FiE,CAAC,CAAC+mE,UAAU,GAAG,GAAG;IAClB\u002FmE,CAAC,CAAC+xK,SAAS,GAAG,GAAG;IACjB\u002FxK,CAAC,CAACu\u002FD,MAAM,GAAG,GAAG;IACdv\u002FD,CAAC,CAACm5J,MAAM,GAAG,GAAG;IACdn5J,CAAC,CAACimJ,OAAO,GAAG,GAAG;IACfjmJ,CAAC,CAAC4hF,MAAM,GAAG,GAAG;IACd5hF,CAAC,CAAC6hF,MAAM,GAAG,GAAG;IACd7hF,CAAC,CAACgwH,YAAY,GAAG,GAAG;IACpBhwH,CAAC,CAACwhE,GAAG,GAAG,GAAG;IACXxhE,CAAC,CAACw6D,QAAQ,GAAG,GAAG;IAChBx6D,CAAC,CAAC8tI,YAAY,GAAG,GAAG;IACpB9tI,CAAC,CAAC6zK,MAAM,GAAG,GAAG;IACd7zK,CAAC,CAAC0gH,OAAO,GAAG,GAAG;IACf1gH,CAAC,CAACw9E,OAAO,GAAG,GAAG;IACfx9E,CAAC,CAACy2D,MAAM,GAAG,GAAG;IACdz2D,CAAC,CAAC+3D,SAAS,GAAG,GAAG;IACjB\u002F3D,CAAC,CAAC28G,MAAM,GAAG,GAAG;IACd38G,CAAC,CAACm2L,MAAM,GAAG,GAAG;IACdn2L,CAAC,CAACmhI,OAAO,GAAG,GAAG;IACfnhI,CAAC,CAACouE,MAAM,GAAG,GAAG;IACdpuE,CAAC,CAACgjJ,MAAM,GAAG,GAAG;IACdhjJ,CAAC,CAACq4F,OAAO,GAAG,GAAG;IACfr4F,CAAC,CAACohK,MAAM,GAAG,GAAG;IACdphK,CAAC,CAAC+9H,SAAS,GAAG,GAAG;IACjB\u002F9H,CAAC,CAAC4uE,WAAW,GAAG,GAAG;IACnB5uE,CAAC,CAACu8E,MAAM,GAAG,GAAG;IACdv8E,CAAC,CAAC48D,KAAK,GAAG,GAAG;IACb58D,CAAC,CAAC24K,KAAK,GAAG,GAAG;IACb34K,CAAC,CAACsiL,WAAW,GAAG,GAAG;IACnBtiL,CAAC,CAACsvE,SAAS,GAAG,GAAG;IACjBtvE,CAAC,CAACm4I,EAAE,GAAG,GAAG;IACVn4I,CAAC,CAAC0+H,MAAM,GAAG,GAAG;IACd1+H,CAAC,CAAC0lJ,aAAa,GAAG,GAAG;IACrB1lJ,CAAC,CAAC0gE,OAAO,GAAG,GAAG;IACf1gE,CAAC,CAAC80G,MAAM,GAAG,GAAG;IACd90G,CAAC,CAACs6K,aAAa,GAAG,GAAG;IACrBt6K,CAAC,CAAC03E,QAAQ,GAAG,GAAG;IAChB13E,CAAC,CAAC0tI,MAAM,GAAG,GAAG;IACd1tI,CAAC,CAAC+pE,YAAY,GAAG,GAAG;IACpB\u002FpE,CAAC,CAAC+qE,MAAM,GAAG,GAAG;IACd\u002FqE,CAAC,CAAC49K,SAAS,GAAG,IAAI;IAClB59K,CAAC,CAACs8G,UAAU,GAAG,GAAG;IAClBt8G,CAAC,CAAConE,MAAM,GAAG,GAAG;IACdpnE,CAAC,CAAC0nE,OAAO,GAAG,GAAG;IACf1nE,CAAC,CAACirE,MAAM,GAAG,GAAG;IACdjrE,CAAC,CAAC4nJ,OAAO,GAAG,GAAG;IACf5nJ,CAAC,CAACsuI,SAAS,GAAG,GAAG;IACjBtuI,CAAC,CAAC8jJ,WAAW,GAAG,GAAG;IACnB9jJ,CAAC,CAACshJ,MAAM,GAAG,GAAG;IACdthJ,CAAC,CAACg9E,aAAa,GAAG,GAAG;IACrBh9E,CAAC,CAACg+D,MAAM,GAAG,GAAG;IACdh+D,CAAC,CAACu\u002FG,OAAO,GAAG,GAAG;IACfv\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\u002FE,CAAC,GAAG,GAAG;IACTl\u002FE,CAAC,CAACvR,CAAC,GAAG,GAAG;IACTuR,CAAC,CAAC0iB,CAAC,GAAG,GAAG;IACT1iB,CAAC,CAAC2iB,CAAC,GAAG,GAAG;IACT3iB,CAAC,CAAColG,WAAW,GAAG,GAAG;IACnBplG,CAAC,CAAC2\u002FF,SAAS,GAAG,GAAG;IACjB3\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\u002FG,QAAQ,GAAG,IAAI;IACjBr\u002FG,CAAC,CAACiwJ,WAAW,GAAG,IAAI;IACpBjwJ,CAAC,CAAC63J,YAAY,GAAG,GAAG;IACpB73J,CAAC,CAACuvH,KAAK,GAAG,GAAG;IACbvvH,CAAC,CAAC8kF,KAAK,GAAG,GAAG;IACb9kF,CAAC,CAAC2rG,UAAU,GAAG,GAAG;IAClB3rG,CAAC,CAACo7K,KAAK,GAAG,GAAG;IACbp7K,CAAC,CAACuxI,MAAM,GAAG,GAAG;IACdvxI,CAAC,CAAC8lG,KAAK,GAAG,GAAG;IACb9lG,CAAC,CAACi5G,SAAS,GAAG,GAAG;IACjBj5G,CAAC,CAACk3G,QAAQ,GAAG,GAAG;IAChBl3G,CAAC,CAACk+J,IAAI,GAAG,GAAG;IACZl+J,CAAC,CAAC2oG,OAAO,GAAG,GAAG;IACf3oG,CAAC,CAACu5H,YAAY,GAAG,GAAG;IACpBv5H,CAAC,CAAC6kJ,MAAM,GAAG,GAAG;IACd7kJ,CAAC,CAAC6nG,KAAK,GAAG,GAAG;IACb7nG,CAAC,CAAC2\u002FG,MAAM,GAAG,IAAI;IACf3\u002FG,CAAC,CAACq2D,EAAE,GAAG,GAAG;IACVr2D,CAAC,CAACmpJ,WAAW,GAAG,GAAG;IACnBnpJ,CAAC,CAAC+rE,MAAM,GAAG,GAAG;IACd\u002FrE,CAAC,CAACyxE,MAAM,GAAG,GAAG;IACdzxE,CAAC,CAACkuE,EAAE,GAAG,GAAG;IACVluE,CAAC,CAACopJ,YAAY,GAAG,GAAG;IACpBppJ,CAAC,CAAC8lF,EAAE,GAAG,GAAG;IACV9lF,CAAC,CAACs5G,QAAQ,GAAG,GAAG;IAChBt5G,CAAC,CAAC4wI,MAAM,GAAG,GAAG;IACd5wI,CAAC,CAACwpJ,MAAM,GAAG,GAAG;IACdxpJ,CAAC,CAAC2kJ,EAAE,GAAG,GAAG;IACV3kJ,CAAC,CAAC2sH,UAAU,GAAG,GAAG;IAClB3sH,CAAC,CAAC0mE,SAAS,GAAG,GAAG;IACjB1mE,CAAC,CAAC46G,MAAM,GAAG,GAAG;IACd56G,CAAC,CAAC+jF,MAAM,GAAG,GAAG;IACd\u002FjF,CAAC,CAAC2kL,aAAa,GAAG,GAAG;IACrB3kL,CAAC,CAACq7G,MAAM,GAAG,GAAG;IACdr7G,CAAC,CAACwgF,SAAS,GAAG,GAAG;IACjBxgF,CAAC,CAAC23G,MAAM,GAAG,GAAG;IACd33G,CAAC,CAACmgF,MAAM,GAAG,GAAG;IACdngF,CAAC,CAACo3D,WAAW,GAAG,GAAG;IACnBp3D,CAAC,CAACkjF,MAAM,GAAG,GAAG;IACdljF,CAAC,CAACw7E,WAAW,GAAG,GAAG;IACnBx7E,CAAC,CAACgwL,MAAM,GAAG,GAAG;IACdhwL,CAAC,CAACikK,YAAY,GAAG,GAAG;IACpBjkK,CAAC,CAAC07G,WAAW,GAAG,GAAG;IACnB17G,CAAC,CAACi+E,KAAK,GAAG,GAAG;IACbj+E,CAAC,CAAC87E,SAAS,GAAG,GAAG;IACjB97E,CAAC,CAAC45F,OAAO,GAAG,GAAG;IACf55F,CAAC,CAACm7E,MAAM,GAAG,GAAG;IACdn7E,CAAC,CAAC8lL,OAAO,GAAG,GAAG;IACf9lL,CAAC,CAACi\u002FD,SAAS,GAAG,GAAG;IACjBj\u002FD,CAAC,CAACu8D,MAAM,GAAG,GAAG;IACdv8D,CAAC,CAACmtG,WAAW,GAAG,GAAG;IACnBntG,CAAC,CAACmwG,SAAS,GAAG,GAAG;IACjBnwG,CAAC,CAACggE,OAAO,GAAG,GAAG;IACfhgE,CAAC,CAACkoG,MAAM,GAAG,GAAG;IACdloG,CAAC,CAAC06F,KAAK,GAAG,GAAG;IACb16F,CAAC,CAACotE,YAAY,GAAG,GAAG;IACpBptE,CAAC,CAACyrI,MAAM,GAAG,GAAG;IACdzrI,CAAC,CAACw1F,MAAM,GAAG,GAAG;IACdx1F,CAAC,CAACy5E,YAAY,GAAG,GAAG;IACpBz5E,CAAC,CAACo6D,MAAM,GAAG,GAAG;IACdp6D,CAAC,CAACu+F,MAAM,GAAG,GAAG;IACdv+F,CAAC,CAACo\u002FD,UAAU,GAAG,GAAG;IAClBp\u002FD,CAAC,CAACwjK,MAAM,GAAG,GAAG;IACdxjK,CAAC,CAAC0jK,QAAQ,GAAG,GAAG;IAChB1jK,CAAC,CAACg6H,MAAM,GAAG,GAAG;IACdh6H,CAAC,CAAC0wI,OAAO,GAAG,GAAG;IACf1wI,CAAC,CAACyzE,MAAM,GAAG,GAAG;IACdzzE,CAAC,CAACojE,YAAY,GAAG,GAAG;IACpBpjE,CAAC,CAACijL,WAAW,GAAG,GAAG;IACnBjjL,CAAC,CAACwkF,WAAW,GAAG,GAAG;IACnBxkF,CAAC,CAAC44D,OAAO,GAAG,GAAG;IACf54D,CAAC,CAACs6J,MAAM,GAAG,GAAG;IACdt6J,CAAC,CAACmoG,QAAQ,GAAG,GAAG;IAChBnoG,CAAC,CAACkiF,UAAU,GAAG,GAAG;IAClBliF,CAAC,CAACk6E,KAAK,GAAG,GAAG;IACbl6E,CAAC,CAACywE,OAAO,GAAG,GAAG;IACfzwE,CAAC,CAACwzE,MAAM,GAAG,GAAG;IACdxzE,CAAC,CAACo3E,MAAM,GAAG,GAAG;IACdp3E,CAAC,CAAC00G,MAAM,GAAG,GAAG;IACd10G,CAAC,CAACo9E,OAAO,GAAG,GAAG;IACfp9E,CAAC,CAAC0mL,KAAK,GAAG,GAAG;IACb1mL,CAAC,CAACy6K,aAAa,GAAG,GAAG;IACrBz6K,CAAC,CAAC2vE,MAAM,GAAG,GAAG;IACd3vE,CAAC,CAACq4D,MAAM,GAAG,GAAG;IACdr4D,CAAC,CAAC22D,MAAM,GAAG,GAAG;IACd32D,CAAC,CAAC+4I,QAAQ,GAAG,GAAG;IAChB\u002F4I,CAAC,CAAC0iL,MAAM,GAAG,GAAG;IACd1iL,CAAC,CAACq5E,MAAM,GAAG,GAAG;IACdr5E,CAAC,CAACmtJ,WAAW,GAAG,GAAG;IACnBntJ,CAAC,CAACgxL,SAAS,GAAG,GAAG;IACjBhxL,CAAC,CAAC+sE,MAAM,GAAG,GAAG;IACd\u002FsE,CAAC,CAACu6H,WAAW,GAAG,GAAG;IACnBv6H,CAAC,CAACu+D,WAAW,GAAG,GAAG;IACnBv+D,CAAC,CAACylF,SAAS,GAAG,GAAG;IACjBzlF,CAAC,CAACo8G,SAAS,GAAG,GAAG;IACjBp8G,CAAC,CAACknG,MAAM,GAAG,GAAG;IACdlnG,CAAC,CAACg6I,MAAM,GAAG,GAAG;IACdh6I,CAAC,CAACklL,OAAO,GAAG,GAAG;IACfllL,CAAC,CAACgtE,MAAM,GAAG,GAAG;IACdhtE,CAAC,CAACimE,MAAM,GAAG,GAAG;IACdjmE,CAAC,CAAC4yJ,SAAS,GAAG,GAAG;IACjB5yJ,CAAC,CAACsmG,SAAS,GAAG,GAAG;IACjBtmG,CAAC,CAACi7J,UAAU,GAAG,GAAG;IAClBj7J,CAAC,CAAC+iE,MAAM,GAAG,GAAG;IACd\u002FiE,CAAC,CAAC+mE,UAAU,GAAG,GAAG;IAClB\u002FmE,CAAC,CAAC+xK,SAAS,GAAG,GAAG;IACjB\u002FxK,CAAC,CAACu\u002FD,MAAM,GAAG,GAAG;IACdv\u002FD,CAAC,CAACm5J,MAAM,GAAG,GAAG;IACdn5J,CAAC,CAACimJ,OAAO,GAAG,GAAG;IACfjmJ,CAAC,CAAC4hF,MAAM,GAAG,GAAG;IACd5hF,CAAC,CAAC6hF,MAAM,GAAG,GAAG;IACd7hF,CAAC,CAACgwH,YAAY,GAAG,GAAG;IACpBhwH,CAAC,CAACwhE,GAAG,GAAG,GAAG;IACXxhE,CAAC,CAACw6D,QAAQ,GAAG,GAAG;IAChBx6D,CAAC,CAAC8tI,YAAY,GAAG,GAAG;IACpB9tI,CAAC,CAAC6zK,MAAM,GAAG,GAAG;IACd7zK,CAAC,CAAC0gH,OAAO,GAAG,GAAG;IACf1gH,CAAC,CAACw9E,OAAO,GAAG,GAAG;IACfx9E,CAAC,CAACy2D,MAAM,GAAG,GAAG;IACdz2D,CAAC,CAAC+3D,SAAS,GAAG,GAAG;IACjB\u002F3D,CAAC,CAAC28G,MAAM,GAAG,GAAG;IACd38G,CAAC,CAACm2L,MAAM,GAAG,GAAG;IACdn2L,CAAC,CAACmhI,OAAO,GAAG,GAAG;IACfnhI,CAAC,CAACouE,MAAM,GAAG,GAAG;IACdpuE,CAAC,CAACgjJ,MAAM,GAAG,GAAG;IACdhjJ,CAAC,CAACq4F,OAAO,GAAG,GAAG;IACfr4F,CAAC,CAACohK,MAAM,GAAG,GAAG;IACdphK,CAAC,CAAC+9H,SAAS,GAAG,GAAG;IACjB\u002F9H,CAAC,CAAC4uE,WAAW,GAAG,GAAG;IACnB5uE,CAAC,CAACu8E,MAAM,GAAG,GAAG;IACdv8E,CAAC,CAAC48D,KAAK,GAAG,GAAG;IACb58D,CAAC,CAAC24K,KAAK,GAAG,GAAG;IACb34K,CAAC,CAACsiL,WAAW,GAAG,GAAG;IACnBtiL,CAAC,CAACsvE,SAAS,GAAG,GAAG;IACjBtvE,CAAC,CAACm4I,EAAE,GAAG,GAAG;IACVn4I,CAAC,CAAC0+H,MAAM,GAAG,GAAG;IACd1+H,CAAC,CAAC0lJ,aAAa,GAAG,GAAG;IACrB1lJ,CAAC,CAAC0gE,OAAO,GAAG,GAAG;IACf1gE,CAAC,CAAC80G,MAAM,GAAG,GAAG;IACd90G,CAAC,CAACs6K,aAAa,GAAG,GAAG;IACrBt6K,CAAC,CAAC03E,QAAQ,GAAG,GAAG;IAChB13E,CAAC,CAAC0tI,MAAM,GAAG,GAAG;IACd1tI,CAAC,CAAC+pE,YAAY,GAAG,GAAG;IACpB\u002FpE,CAAC,CAAC+qE,MAAM,GAAG,GAAG;IACd\u002FqE,CAAC,CAAC49K,SAAS,GAAG,IAAI;IAClB59K,CAAC,CAACs8G,UAAU,GAAG,GAAG;IAClBt8G,CAAC,CAAConE,MAAM,GAAG,GAAG;IACdpnE,CAAC,CAAC0nE,OAAO,GAAG,GAAG;IACf1nE,CAAC,CAACirE,MAAM,GAAG,GAAG;IACdjrE,CAAC,CAAC4nJ,OAAO,GAAG,GAAG;IACf5nJ,CAAC,CAACsuI,SAAS,GAAG,GAAG;IACjBtuI,CAAC,CAAC8jJ,WAAW,GAAG,GAAG;IACnB9jJ,CAAC,CAACshJ,MAAM,GAAG,GAAG;IACdthJ,CAAC,CAACg9E,aAAa,GAAG,GAAG;IACrBh9E,CAAC,CAACg+D,MAAM,GAAG,GAAG;IACdh+D,CAAC,CAACu\u002FG,OAAO,GAAG,GAAG;IACfv\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\u002FE,CAAC,GAAG,GAAG;IACTl\u002FE,CAAC,CAACvR,CAAC,GAAG,GAAG;IACTuR,CAAC,CAAC0iB,CAAC,GAAG,GAAG;IACT1iB,CAAC,CAAC2iB,CAAC,GAAG,GAAG;IACT3iB,CAAC,CAAColG,WAAW,GAAG,GAAG;IACnBplG,CAAC,CAAC2\u002FF,SAAS,GAAG,GAAG;IACjB3\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\u002FG,QAAQ,GAAG,GAAG;IAChBr\u002FG,CAAC,CAACiwJ,WAAW,GAAG,IAAI;IACpBjwJ,CAAC,CAAC63J,YAAY,GAAG,GAAG;IACpB73J,CAAC,CAACuvH,KAAK,GAAG,GAAG;IACbvvH,CAAC,CAAC8kF,KAAK,GAAG,GAAG;IACb9kF,CAAC,CAAC2rG,UAAU,GAAG,GAAG;IAClB3rG,CAAC,CAACo7K,KAAK,GAAG,GAAG;IACbp7K,CAAC,CAACuxI,MAAM,GAAG,GAAG;IACdvxI,CAAC,CAAC8lG,KAAK,GAAG,GAAG;IACb9lG,CAAC,CAACi5G,SAAS,GAAG,GAAG;IACjBj5G,CAAC,CAACk3G,QAAQ,GAAG,GAAG;IAChBl3G,CAAC,CAACk+J,IAAI,GAAG,GAAG;IACZl+J,CAAC,CAAC2oG,OAAO,GAAG,GAAG;IACf3oG,CAAC,CAACu5H,YAAY,GAAG,GAAG;IACpBv5H,CAAC,CAAC6kJ,MAAM,GAAG,GAAG;IACd7kJ,CAAC,CAAC6nG,KAAK,GAAG,GAAG;IACb7nG,CAAC,CAAC2\u002FG,MAAM,GAAG,GAAG;IACd3\u002FG,CAAC,CAACq2D,EAAE,GAAG,GAAG;IACVr2D,CAAC,CAACmpJ,WAAW,GAAG,GAAG;IACnBnpJ,CAAC,CAAC+rE,MAAM,GAAG,GAAG;IACd\u002FrE,CAAC,CAACyxE,MAAM,GAAG,GAAG;IACdzxE,CAAC,CAACkuE,EAAE,GAAG,GAAG;IACVluE,CAAC,CAACopJ,YAAY,GAAG,GAAG;IACpBppJ,CAAC,CAAC8lF,EAAE,GAAG,GAAG;IACV9lF,CAAC,CAACs5G,QAAQ,GAAG,GAAG;IAChBt5G,CAAC,CAAC4wI,MAAM,GAAG,GAAG;IACd5wI,CAAC,CAACwpJ,MAAM,GAAG,GAAG;IACdxpJ,CAAC,CAAC2kJ,EAAE,GAAG,GAAG;IACV3kJ,CAAC,CAAC2sH,UAAU,GAAG,GAAG;IAClB3sH,CAAC,CAAC0mE,SAAS,GAAG,GAAG;IACjB1mE,CAAC,CAAC46G,MAAM,GAAG,GAAG;IACd56G,CAAC,CAAC+jF,MAAM,GAAG,GAAG;IACd\u002FjF,CAAC,CAAC2kL,aAAa,GAAG,GAAG;IACrB3kL,CAAC,CAACq7G,MAAM,GAAG,GAAG;IACdr7G,CAAC,CAACwgF,SAAS,GAAG,GAAG;IACjBxgF,CAAC,CAAC23G,MAAM,GAAG,GAAG;IACd33G,CAAC,CAACmgF,MAAM,GAAG,GAAG;IACdngF,CAAC,CAACo3D,WAAW,GAAG,GAAG;IACnBp3D,CAAC,CAACkjF,MAAM,GAAG,GAAG;IACdljF,CAAC,CAACw7E,WAAW,GAAG,GAAG;IACnBx7E,CAAC,CAACgwL,MAAM,GAAG,GAAG;IACdhwL,CAAC,CAACikK,YAAY,GAAG,GAAG;IACpBjkK,CAAC,CAAC07G,WAAW,GAAG,GAAG;IACnB17G,CAAC,CAACi+E,KAAK,GAAG,GAAG;IACbj+E,CAAC,CAAC87E,SAAS,GAAG,GAAG;IACjB97E,CAAC,CAAC45F,OAAO,GAAG,GAAG;IACf55F,CAAC,CAACm7E,MAAM,GAAG,GAAG;IACdn7E,CAAC,CAAC8lL,OAAO,GAAG,GAAG;IACf9lL,CAAC,CAACi\u002FD,SAAS,GAAG,GAAG;IACjBj\u002FD,CAAC,CAACu8D,MAAM,GAAG,GAAG;IACdv8D,CAAC,CAACmtG,WAAW,GAAG,GAAG;IACnBntG,CAAC,CAACmwG,SAAS,GAAG,GAAG;IACjBnwG,CAAC,CAACggE,OAAO,GAAG,GAAG;IACfhgE,CAAC,CAACkoG,MAAM,GAAG,GAAG;IACdloG,CAAC,CAAC06F,KAAK,GAAG,GAAG;IACb16F,CAAC,CAACotE,YAAY,GAAG,GAAG;IACpBptE,CAAC,CAACyrI,MAAM,GAAG,GAAG;IACdzrI,CAAC,CAACw1F,MAAM,GAAG,GAAG;IACdx1F,CAAC,CAACy5E,YAAY,GAAG,GAAG;IACpBz5E,CAAC,CAACo6D,MAAM,GAAG,GAAG;IACdp6D,CAAC,CAACu+F,MAAM,GAAG,GAAG;IACdv+F,CAAC,CAACo\u002FD,UAAU,GAAG,GAAG;IAClBp\u002FD,CAAC,CAACwjK,MAAM,GAAG,GAAG;IACdxjK,CAAC,CAAC0jK,QAAQ,GAAG,GAAG;IAChB1jK,CAAC,CAACg6H,MAAM,GAAG,GAAG;IACdh6H,CAAC,CAAC0wI,OAAO,GAAG,GAAG;IACf1wI,CAAC,CAACyzE,MAAM,GAAG,GAAG;IACdzzE,CAAC,CAACojE,YAAY,GAAG,GAAG;IACpBpjE,CAAC,CAACijL,WAAW,GAAG,GAAG;IACnBjjL,CAAC,CAACwkF,WAAW,GAAG,GAAG;IACnBxkF,CAAC,CAAC44D,OAAO,GAAG,GAAG;IACf54D,CAAC,CAACs6J,MAAM,GAAG,GAAG;IACdt6J,CAAC,CAACmoG,QAAQ,GAAG,GAAG;IAChBnoG,CAAC,CAACkiF,UAAU,GAAG,GAAG;IAClBliF,CAAC,CAACk6E,KAAK,GAAG,GAAG;IACbl6E,CAAC,CAACywE,OAAO,GAAG,GAAG;IACfzwE,CAAC,CAACwzE,MAAM,GAAG,GAAG;IACdxzE,CAAC,CAACo3E,MAAM,GAAG,GAAG;IACdp3E,CAAC,CAAC00G,MAAM,GAAG,GAAG;IACd10G,CAAC,CAACo9E,OAAO,GAAG,GAAG;IACfp9E,CAAC,CAAC0mL,KAAK,GAAG,GAAG;IACb1mL,CAAC,CAACy6K,aAAa,GAAG,GAAG;IACrBz6K,CAAC,CAAC2vE,MAAM,GAAG,GAAG;IACd3vE,CAAC,CAACq4D,MAAM,GAAG,GAAG;IACdr4D,CAAC,CAAC22D,MAAM,GAAG,GAAG;IACd32D,CAAC,CAAC+4I,QAAQ,GAAG,GAAG;IAChB\u002F4I,CAAC,CAAC0iL,MAAM,GAAG,GAAG;IACd1iL,CAAC,CAACq5E,MAAM,GAAG,GAAG;IACdr5E,CAAC,CAACmtJ,WAAW,GAAG,GAAG;IACnBntJ,CAAC,CAACgxL,SAAS,GAAG,GAAG;IACjBhxL,CAAC,CAAC+sE,MAAM,GAAG,GAAG;IACd\u002FsE,CAAC,CAACu6H,WAAW,GAAG,GAAG;IACnBv6H,CAAC,CAACu+D,WAAW,GAAG,GAAG;IACnBv+D,CAAC,CAACylF,SAAS,GAAG,GAAG;IACjBzlF,CAAC,CAACo8G,SAAS,GAAG,GAAG;IACjBp8G,CAAC,CAACknG,MAAM,GAAG,GAAG;IACdlnG,CAAC,CAACg6I,MAAM,GAAG,GAAG;IACdh6I,CAAC,CAACklL,OAAO,GAAG,GAAG;IACfllL,CAAC,CAACgtE,MAAM,GAAG,GAAG;IACdhtE,CAAC,CAACimE,MAAM,GAAG,GAAG;IACdjmE,CAAC,CAAC4yJ,SAAS,GAAG,GAAG;IACjB5yJ,CAAC,CAACsmG,SAAS,GAAG,GAAG;IACjBtmG,CAAC,CAACi7J,UAAU,GAAG,GAAG;IAClBj7J,CAAC,CAAC+iE,MAAM,GAAG,GAAG;IACd\u002FiE,CAAC,CAAC+mE,UAAU,GAAG,GAAG;IAClB\u002FmE,CAAC,CAAC+xK,SAAS,GAAG,GAAG;IACjB\u002FxK,CAAC,CAACu\u002FD,MAAM,GAAG,GAAG;IACdv\u002FD,CAAC,CAACm5J,MAAM,GAAG,GAAG;IACdn5J,CAAC,CAACimJ,OAAO,GAAG,GAAG;IACfjmJ,CAAC,CAAC4hF,MAAM,GAAG,GAAG;IACd5hF,CAAC,CAAC6hF,MAAM,GAAG,GAAG;IACd7hF,CAAC,CAACgwH,YAAY,GAAG,GAAG;IACpBhwH,CAAC,CAACwhE,GAAG,GAAG,GAAG;IACXxhE,CAAC,CAACw6D,QAAQ,GAAG,GAAG;IAChBx6D,CAAC,CAAC8tI,YAAY,GAAG,GAAG;IACpB9tI,CAAC,CAAC6zK,MAAM,GAAG,GAAG;IACd7zK,CAAC,CAAC0gH,OAAO,GAAG,GAAG;IACf1gH,CAAC,CAACw9E,OAAO,GAAG,GAAG;IACfx9E,CAAC,CAACy2D,MAAM,GAAG,GAAG;IACdz2D,CAAC,CAAC+3D,SAAS,GAAG,GAAG;IACjB\u002F3D,CAAC,CAAC28G,MAAM,GAAG,GAAG;IACd38G,CAAC,CAACm2L,MAAM,GAAG,GAAG;IACdn2L,CAAC,CAACmhI,OAAO,GAAG,GAAG;IACfnhI,CAAC,CAACouE,MAAM,GAAG,GAAG;IACdpuE,CAAC,CAACgjJ,MAAM,GAAG,GAAG;IACdhjJ,CAAC,CAACq4F,OAAO,GAAG,GAAG;IACfr4F,CAAC,CAACohK,MAAM,GAAG,GAAG;IACdphK,CAAC,CAAC+9H,SAAS,GAAG,GAAG;IACjB\u002F9H,CAAC,CAAC4uE,WAAW,GAAG,GAAG;IACnB5uE,CAAC,CAACu8E,MAAM,GAAG,GAAG;IACdv8E,CAAC,CAAC48D,KAAK,GAAG,GAAG;IACb58D,CAAC,CAAC24K,KAAK,GAAG,GAAG;IACb34K,CAAC,CAACsiL,WAAW,GAAG,GAAG;IACnBtiL,CAAC,CAACsvE,SAAS,GAAG,GAAG;IACjBtvE,CAAC,CAACm4I,EAAE,GAAG,GAAG;IACVn4I,CAAC,CAAC0+H,MAAM,GAAG,GAAG;IACd1+H,CAAC,CAAC0lJ,aAAa,GAAG,GAAG;IACrB1lJ,CAAC,CAAC0gE,OAAO,GAAG,GAAG;IACf1gE,CAAC,CAAC80G,MAAM,GAAG,GAAG;IACd90G,CAAC,CAACs6K,aAAa,GAAG,GAAG;IACrBt6K,CAAC,CAAC03E,QAAQ,GAAG,GAAG;IAChB13E,CAAC,CAAC0tI,MAAM,GAAG,GAAG;IACd1tI,CAAC,CAAC+pE,YAAY,GAAG,GAAG;IACpB\u002FpE,CAAC,CAAC+qE,MAAM,GAAG,GAAG;IACd\u002FqE,CAAC,CAAC49K,SAAS,GAAG,GAAG;IACjB59K,CAAC,CAACs8G,UAAU,GAAG,GAAG;IAClBt8G,CAAC,CAAConE,MAAM,GAAG,GAAG;IACdpnE,CAAC,CAAC0nE,OAAO,GAAG,GAAG;IACf1nE,CAAC,CAACirE,MAAM,GAAG,GAAG;IACdjrE,CAAC,CAAC4nJ,OAAO,GAAG,GAAG;IACf5nJ,CAAC,CAACsuI,SAAS,GAAG,GAAG;IACjBtuI,CAAC,CAAC8jJ,WAAW,GAAG,GAAG;IACnB9jJ,CAAC,CAACshJ,MAAM,GAAG,GAAG;IACdthJ,CAAC,CAACg9E,aAAa,GAAG,GAAG;IACrBh9E,CAAC,CAACg+D,MAAM,GAAG,GAAG;IACdh+D,CAAC,CAACu\u002FG,OAAO,GAAG,GAAG;IACfv\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\u002FB;AAEA,SAAS66M,UAAUA,CAAC\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\u002FM,QAAQ,CAACk\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\u002FvC,MAAM,CAAC\u002FJ,SAAS,CAACw5C,iBAAiB,CAAC;IACrDz1B,KAAK,GAAGq6L,SAAS,CAACtkK,SAAS,EAAE6kK,eAAe,EAAE,CAAC,CAAC;IAEhD,IAAI56L,KAAK,CAAC71B,MAAM,KAAK,CAAC,EAAE;MACtB;IACF;IACA6b,MAAM,CAAChK,GAAG,IAAIgkB,KAAK,CAAC71B,MAAM;IAE1B,IAAI61B,KAAK,CAACi2B,KAAK,EAAE;MACf+kK,YAAY,GAAGh1M,MAAM,CAAChK,GAAG,GAAG6+M,cAAc;MAC1C;IACF;EACF;EACA70M,MAAM,CAAChK,GAAG,GAAG6+M,cAAc;EAE3B,IAAIG,YAAY,EAAE;IAChB,OAAO;MACLh1M,MAAM,EAAE,IAAIhC,MAAM,CAACgC,MAAM,CAACnK,QAAQ,CAACm\u002FM,YAAY,CAAC,CAAC;MACjD7wN,MAAM,EAAE6wN;IACV,CAAC;EACH;EACA5xN,IAAI,CAAC,oEAAoE,CAAC;EAC1E,OAAO;IACL4c,MAAM,EAAE,IAAIhC,MAAM,CAACgC,MAAM,CAACnK,QAAQ,CAAC8+M,eAAe,CAAC,CAAC;IACpDxwN,MAAM,EAAEwwN;EACV,CAAC;AACH;AAEA,SAASM,aAAaA,CAACj1M,MAAM,EAAE20M,eAAe,EAAE;EAc9C,MAAMO,UAAU,GAAGl1M,MAAM,CAACnK,QAAQ,CAAC,CAAC;EACpC,IAAIq\u002FM,UAAU,CAAC\u002FwN,MAAM,KAAK,CAAC,EAAE;IAC3B,MAAM,IAAI6B,WAAW,CAAC,wCAAwC,CAAC;EACjE;EACA,OAAO;IACLga,MAAM,EAAE,IAAIhC,MAAM,CAACk3M,UAAU,CAAC;IAC9B\u002FwN,MAAM,EAAE+wN,UAAU,CAAC\u002FwN;EACrB,CAAC;AACH;AAKA,MAAMgxN,SAAS,CAAC;EACd7vN,WAAWA,CAACD,IAAI,EAAEg+C,IAAI,EAAE7vC,UAAU,EAAE;IAIlC,MAAM4hN,eAAe,GAAG,CAAC;IACzB,IAAIC,iBAAiB,GAAG7hN,UAAU,CAAC8hN,OAAO;IAC1C,IAAIC,gBAAgB,GAAG\u002FhN,UAAU,CAACgiN,OAAO;IACzC,IAAIC,SAAS,GAAGpyK,IAAI,CAACptC,SAAS,CAACm\u002FM,eAAe,CAAC;IAC\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\u002Fc,OAAO,KAAK,QAAQ,EAAE;MAC\u002FBA,OAAO,GAAGA,OAAO,CAAC5\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\u002FM,SAAS,CAACp\u002FM,CAAC,CAAC,GACZ++C,SAAS,CAAC\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\u002FB,IAAI,CAACmC,YAAY,GAAG\u002FoD,UAAU,CAAC+oD,YAAY;IAC3C,IAAI,CAACopJ,SAAS,GAAGnyM,UAAU,CAACmyM,SAAS;IACrC,IAAI,CAAC7zL,IAAI,GAAGte,UAAU,CAACse,IAAI;IAC3B,IAAI,CAAC+4L,SAAS,GAAGr3M,UAAU,CAACq3M,SAAS,GAAGmM,qBAAqB;IAC7D,IAAI,CAAC\u002F9J,MAAM,GAAGzlD,UAAU,CAACylD,MAAM,GAAG+9J,qBAAqB;IACvD,IAAI,CAAC99J,OAAO,GAAG1lD,UAAU,CAAC0lD,OAAO,GAAG89J,qBAAqB;IACzD,IAAI,CAAC0H,UAAU,GAAG,IAAI,CAACzlK,MAAM,GAAG,IAAI,CAACC,OAAO;IAC5C,IAAI,CAACH,UAAU,GAAGvlD,UAAU,CAACulD,UAAU;IACvC,IAAI,CAAC29J,IAAI,GAAGljN,UAAU,CAACkjN,IAAI;IAC3B,IAAI,CAAC7Q,eAAe,GAAGryM,UAAU,CAACqyM,eAAe;IAEjD,IAAI,CAAC4R,SAAS,GAAGjkN,UAAU,CAACikN,SAAS;IACrC,IAAI,CAAC+B,UAAU,GAAG,EAAE;IAEpB,IAAIhmN,UAAU,CAACngB,IAAI,KAAK,OAAO,EAAE;MAC\u002FB,KAAK,IAAI6a,QAAQ,GAAG,CAAC,EAAEA,QAAQ,GAAG,GAAG,EAAEA,QAAQ,EAAE,EAAE;QACjD,IAAI,CAACsrN,UAAU,CAACtrN,QAAQ,CAAC,GACvB,IAAI,CAACkvM,WAAW,CAAClvM,QAAQ,CAAC,IAAIsF,UAAU,CAACqyM,eAAe,CAAC33M,QAAQ,CAAC;MACtE;MACA;IACF;IAEA,IAAI,CAACywN,WAAW,GAAGnrN,UAAU,CAACmrN,WAAW,IAAI,EAAE;IAC\u002FC,IAAI,CAAC1sM,QAAQ,GAAG,CAAC,CAACze,UAAU,CAACye,QAAQ;IACrC,IAAI,IAAI,CAACA,QAAQ,EAAE;MACjB,IAAI,CAAC2sM,QAAQ,GAAGprN,UAAU,CAACorN,QAAQ;MACnC,IAAI,CAACC,eAAe,GAAGrrN,UAAU,CAACqrN,eAAe;IACnD;IAEA,IAAI,CAACx7K,IAAI,IAAIA,IAAI,CAAC3tC,OAAO,EAAE;MACzB,IAAI2tC,IAAI,EAAE;QAGRjgD,IAAI,CAAC,yBAAyB,GAAGiC,IAAI,GAAG,KAAK,GAAG,IAAI,CAACggN,UAAU,GAAG,GAAG,CAAC;MACxE;MACA,IAAI,CAACyZ,oBAAoB,CAACtrN,UAAU,CAAC;MACrC;IACF;IAKA,CAACngB,IAAI,EAAE6lO,OAAO,CAAC,GAAGD,eAAe,CAAC51K,IAAI,EAAE7vC,UAAU,CAAC;IAEnD,IAAIngB,IAAI,KAAK,IAAI,CAACA,IAAI,IAAI6lO,OAAO,KAAK,IAAI,CAACA,OAAO,EAAE;MAClDl2N,IAAI,CACF,iDAAiD,GAC9C,GAAE,IAAI,CAAC3P,IAAK,IAAG,IAAI,CAAC6lO,OAAQ,eAAc7lO,IAAK,IAAG6lO,OAAQ,GAC\u002FD,CAAC;IACH;IAEA,IAAIphN,IAAI;IACR,IAAI;MACF,QAAQzkB,IAAI;QACV,KAAK,SAAS;UACZ2P,IAAI,CAAC,gBAAgB,GAAGqC,IAAI,GAAG,2BAA2B,CAAC;QAE7D,KAAK,OAAO;QACZ,KAAK,cAAc;UACjB,IAAI,CAACm4N,QAAQ,GAAG,eAAe;UAE\u002FB,MAAM\u002FlK,GAAG,GACPyhK,OAAO,KAAK,QAAQ,IAAIA,OAAO,KAAK,eAAe,GAC\u002FC,IAAI\u002FT,OAAO,CAAC9hK,IAAI,EAAE7vC,UAAU,CAAC,GAC7B,IAAI2hN,SAAS,CAAC9vN,IAAI,EAAEg+C,IAAI,EAAE7vC,UAAU,CAAC;UAE3C2jN,YAAY,CAAC3jN,UAAU,CAAC;UAGxBsE,IAAI,GAAG,IAAI,CAACu5M,OAAO,CAAChsN,IAAI,EAAEoyD,GAAG,EAAEjkD,UAAU,CAAC;UAC1C;QAEF,KAAK,UAAU;QACf,KAAK,UAAU;QACf,KAAK,cAAc;UACjB,IAAI,CAACgqN,QAAQ,GAAG,eAAe;UAI\u002FB1lN,IAAI,GAAG,IAAI,CAACinN,cAAc,CAAC15N,IAAI,EAAEg+C,IAAI,EAAE7vC,UAAU,CAAC;UAClD,IAAI,IAAI,CAACwrN,UAAU,EAAE;YACnB7H,YAAY,CAAC3jN,UAAU,CAAC;YAExBngB,IAAI,GAAG,UAAU;UACnB;UACA;QAEF;UACE,MAAM,IAAI2S,WAAW,CAAE,QAAO3S,IAAK,mBAAkB,CAAC;MAC1D;IACF,CAAC,CAAC,OAAOouB,CAAC,EAAE;MACVre,IAAI,CAACqe,CAAC,CAAC;MACP,IAAI,CAACq9M,oBAAoB,CAACtrN,UAAU,CAAC;MACrC;IACF;IAEAokN,sBAAsB,CAACpkN,UAAU,CAAC;IAClC,IAAI,CAACsE,IAAI,GAAGA,IAAI;IAGhB,IAAI,CAACzkB,IAAI,GAAGA,IAAI;IAChB,IAAI,CAAC6lO,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACngK,UAAU,GAAGvlD,UAAU,CAACulD,UAAU;IACvC,IAAI,CAACqB,MAAM,GAAG5mD,UAAU,CAAC4mD,MAAM;IAC\u002FB,IAAI,CAACmC,YAAY,GAAG\u002FoD,UAAU,CAAC+oD,YAAY;IAC3C,IAAI,CAACk7J,SAAS,GAAGjkN,UAAU,CAACikN,SAAS;IACrC,IAAI,CAACpB,OAAO,GAAG7iN,UAAU,CAAC6iN,OAAO;EACnC;EAEA,IAAI4I,QAAQA,CAAA,EAAG;IACb,MAAMA,QAAQ,GAAG3U,mBAAmB,CAAC3iN,MAAM,CAAC,IAAI,EAAEo0M,qBAAqB,CAAC;IACxE,OAAOv3M,MAAM,CAAC,IAAI,EAAE,UAAU,EAAEy6N,QAAQ,CAAC;EAC3C;EAEAC,UAAUA,CAACC,eAAe,GAAG,KAAK,EAAE;IAClC,MAAMC,oBAAoB,GAAGD,eAAe,GACxC,CAAC,GAAGlI,sBAAsB,EAAE,GAAGC,4BAA4B,CAAC,GAC5DD,sBAAsB;IAE1B,MAAMn\u002FM,IAAI,GAAGjT,MAAM,CAAC8C,MAAM,CAAC,IAAI,CAAC;IAChC,IAAIgM,QAAQ,EAAEhP,KAAK;IACnB,KAAKgP,QAAQ,IAAIyrN,oBAAoB,EAAE;MACrCz6N,KAAK,GAAG,IAAI,CAACgP,QAAQ,CAAC;MAEtB,IAAIhP,KAAK,KAAKyB,SAAS,EAAE;QACvB0R,IAAI,CAACnE,QAAQ,CAAC,GAAGhP,KAAK;MACxB;IACF;IACA,OAAOmT,IAAI;EACb;EAEAgnN,oBAAoBA,CAACtrN,UAAU,EAAE;IAC\u002FB,IAAI,CAACmqN,WAAW,GAAG,IAAI;IAGvB,MAAM;MAAEt4N,IAAI;MAAEhS;IAAK,CAAC,GAAG,IAAI;IAC3B,IAAIqxN,QAAQ,GAAGnH,iBAAiB,CAACl4M,IAAI,CAAC;IACtC,MAAMs\u002FM,UAAU,GAAGnH,aAAa,CAAC,CAAC;MAChC6hB,aAAa,GAAG9gB,gBAAgB,CAAC,CAAC;IACpC,MAAM+gB,cAAc,GAAG,CAAC,CAAC3a,UAAU,CAACD,QAAQ,CAAC;IAC7C,MAAM6a,sBAAsB,GAAG,CAAC,EAC9BF,aAAa,CAAC3a,QAAQ,CAAC,IAAIC,UAAU,CAAC0a,aAAa,CAAC3a,QAAQ,CAAC,CAAC,CAC\u002FD;IAEDA,QAAQ,GAAGC,UAAU,CAACD,QAAQ,CAAC,IAAI2a,aAAa,CAAC3a,QAAQ,CAAC,IAAIA,QAAQ;IAEtE,MAAM8a,mBAAmB,GAAG5U,mBAAmB,CAAC,CAAC;IACjD,MAAM6U,OAAO,GAAGD,mBAAmB,CAAC9a,QAAQ,CAAC;IAC7C,IAAI+a,OAAO,EAAE;MACX,IAAIjjN,KAAK,CAAC,IAAI,CAACy8C,MAAM,CAAC,EAAE;QACtB,IAAI,CAACA,MAAM,GAAGwmK,OAAO,CAACxmK,MAAM,GAAG+9J,qBAAqB;MACtD;MACA,IAAIx6M,KAAK,CAAC,IAAI,CAAC08C,OAAO,CAAC,EAAE;QACvB,IAAI,CAACA,OAAO,GAAGumK,OAAO,CAACvmK,OAAO,GAAG89J,qBAAqB;MACxD;MACA,IAAIx6M,KAAK,CAAC,IAAI,CAACquM,SAAS,CAAC,EAAE;QACzB,IAAI,CAACA,SAAS,GAAG4U,OAAO,CAAC5U,SAAS,GAAGmM,qBAAqB;MAC5D;IACF;IAEA,IAAI,CAAC0I,IAAI,GAAG,QAAQ,CAAC9jN,IAAI,CAAC8oM,QAAQ,CAAC;IACnC,IAAI,CAACib,MAAM,GAAG,kBAAkB,CAAC\u002FjN,IAAI,CAAC8oM,QAAQ,CAAC;IAI\u002FC,IAAI,CAACluL,KAAK,GAAG,QAAQ,CAAC5a,IAAI,CAACvW,IAAI,CAAC;IAIhC,MAAMu6N,QAAQ,GAAG,SAAS,CAAChkN,IAAI,CAACvW,IAAI,CAAC;IAGrC,IAAI,CAACw6N,SAAS,GACZ,CAAC,CAACP,cAAc,IAAIM,QAAQ,KAAK\u002F6N,MAAM,CAAC2C,IAAI,CAAC,IAAI,CAAC4yD,MAAM,CAAC,CAACj2D,MAAM,GAAG,CAAC;IACtE,IACE,CAACm7N,cAAc,IAAIC,sBAAsB,KACzClsO,IAAI,KAAK,cAAc,IACvB,IAAI,CAACsrO,WAAW,CAAC36N,UAAU,CAAC,WAAW,CAAC,EACxC;MACA,MAAMyhN,WAAW,GAAGjyM,UAAU,CAACiyM,WAAW;MAG1C,MAAM\u002F9M,GAAG,GAAG,EAAE;MACd2xN,yBAAyB,CAAC3xN,GAAG,EAAE48M,2BAA2B,CAAC,CAAC,CAAC;MAE7D,IAAI,eAAe,CAAC1oM,IAAI,CAACvW,IAAI,CAAC,EAAE;QAC9Bg0N,yBAAyB,CAAC3xN,GAAG,EAAE68M,oCAAoC,CAAC,CAAC,CAAC;MACxE,CAAC,MAAM,IAAI,UAAU,CAAC3oM,IAAI,CAACvW,IAAI,CAAC,EAAE;QAChCg0N,yBAAyB,CAAC3xN,GAAG,EAAE88M,iCAAiC,CAAC,CAAC,CAAC;MACrE;MAIA,IAAIiB,WAAW,EAAE;QACf,KAAK,MAAMv3M,QAAQ,IAAIxG,GAAG,EAAE;UAC1B,MAAMw1D,GAAG,GAAGx1D,GAAG,CAACwG,QAAQ,CAAC;UACzB,IAAIu3M,WAAW,CAACvoJ,GAAG,CAAC,KAAK92D,SAAS,EAAE;YAClCsB,GAAG,CAAC,CAACwG,QAAQ,CAAC,GAAGu3M,WAAW,CAACvoJ,GAAG,CAAC;UACnC;QACF;QAGA,IACEuoJ,WAAW,CAACthN,MAAM,KAAK,IAAI,CAACszN,SAAS,CAACtzN,MAAM,IAC5CqP,UAAU,CAAC+jN,uBAAuB,IAClC,IAAI,CAACE,SAAS,YAAYzS,oBAAoB,EAC9C;UACA,IAAI,CAACyS,SAAS,CAACzkN,OAAO,CAAC,UAAU9E,QAAQ,EAAE4xN,eAAe,EAAE;YAC1D,MAAM5iK,GAAG,GAAGx1D,GAAG,CAACwG,QAAQ,CAAC;YACzB,IAAIu3M,WAAW,CAACvoJ,GAAG,CAAC,KAAK92D,SAAS,EAAE;cAClCsB,GAAG,CAAC,CAACwG,QAAQ,CAAC,GAAG4xN,eAAe;YAClC;UACF,CAAC,CAAC;QACJ;MACF;MAEA,IAAI,EAAE,IAAI,CAACrI,SAAS,YAAYzS,oBAAoB,CAAC,EAAE;QACrD,IAAI,CAACyS,SAAS,CAACzkN,OAAO,CAAC,UAAU9E,QAAQ,EAAE4xN,eAAe,EAAE;UAC1Dp4N,GAAG,CAAC,CAACwG,QAAQ,CAAC,GAAG4xN,eAAe;QAClC,CAAC,CAAC;MACJ;MACA,IAAI,CAACtG,UAAU,GAAG9xN,GAAG;MACrB,IAAI,CAAC+vN,SAAS,GAAG,IAAI5S,YAAY,CAACn9M,GAAG,CAAC;IACxC,CAAC,MAAM,IAAI,SAAS,CAACkU,IAAI,CAAC8oM,QAAQ,CAAC,EAAE;MACnC,IAAI,CAAC8U,UAAU,GAAGD,eAAe,CAC\u002FB\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\u002F9M,CAAC,EAAE,EAAE;UAC\u002FBo4L,OAAO,GAAG35J,IAAI,CAACntC,SAAS,CAAC,CAAC;UAC1B,MAAMhI,QAAQ,GAAG2gC,SAAS,GAAGjqB,CAAC;UAE9Bm9M,QAAQ,CAAC\u002F6N,IAAI,CAAC;YACZkH,QAAQ;YACR8uM;UACF,CAAC,CAAC;QACJ;MACF,CAAC,MAAM,IAAIx\u002FI,MAAM,KAAK,EAAE,EAAE;QACxBna,IAAI,CAACzsC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEpB,MAAMqsN,OAAO,GAAG5\u002FK,IAAI,CAAChtC,QAAQ,CAAC,CAAC,KAAK,CAAC;QACrC,KAAKuO,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGq+M,OAAO,EAAEr+M,CAAC,EAAE,EAAE;UAC5B,MAAMs+M,aAAa,GAAG7\u002FK,IAAI,CAAChtC,QAAQ,CAAC,CAAC,KAAK,CAAC;UAC3C,MAAM8sN,WAAW,GAAG9\u002FK,IAAI,CAAChtC,QAAQ,CAAC,CAAC,KAAK,CAAC;UACzC,IAAI+sN,SAAS,GAAG\u002F\u002FK,IAAI,CAAChtC,QAAQ,CAAC,CAAC,KAAK,CAAC;UAErC,KACE,IAAInI,QAAQ,GAAGg1N,aAAa,EAC5Bh1N,QAAQ,IAAIi1N,WAAW,EACvBj1N,QAAQ,EAAE,EACV;YACA6zN,QAAQ,CAAC\u002F6N,IAAI,CAAC;cACZkH,QAAQ;cACR8uM,OAAO,EAAEomB,SAAS;YACpB,CAAC,CAAC;UACJ;QACF;MACF,CAAC,MAAM;QACLhgO,IAAI,CAAC,qCAAqC,GAAGo6D,MAAM,CAAC;QACpD,OAAO;UACLqkK,UAAU,EAAE,CAAC,CAAC;UACdC,UAAU,EAAE,CAAC,CAAC;UACdC,QAAQ,EAAE,EAAE;UACZC,YAAY,EAAE;QAChB,CAAC;MACH;MAGAD,QAAQ,CAACh\u002FM,IAAI,CAAC,UAAU\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\u002FN,UAAU,GAAG,CAAC,CAAC;QAC\u002FDlwN,OAAO,CAACZ,GAAG,CAAC2sN,OAAO,CAAC3nN,IAAI,CAAC;QACzB,IAAIyrN,aAAa,EAAE;UAEjB7vN,OAAO,CAAC+rN,OAAO,CAACt7N,MAAM,CAAC,GAAGs7N,OAAO,CAAC3nN,IAAI,CAAC,CAAC,CAAC;UACzCpE,OAAO,CAAC+rN,OAAO,CAACt7N,MAAM,GAAG,CAAC,CAAC,GAAGs7N,OAAO,CAAC3nN,IAAI,CAAC,CAAC,CAAC;QAC\u002FC;QACA2nN,OAAO,CAAC3nN,IAAI,GAAGpE,OAAO;MACxB;IACF;IAEA,SAASmwN,aAAaA,CACpBjuM,MAAM,EACNkuM,WAAW,EACXC,SAAS,EACTlgN,IAAI,EACJmgN,SAAS,EACTC,UAAU,EACV;MACA,MAAMC,YAAY,GAAG;QACnB\u002F\u002FN,MAAM,EAAE,CAAC;QACTggO,kBAAkB,EAAE;MACtB,CAAC;MACD,IACEL,WAAW,GAAG,CAAC,IACfA,WAAW,IAAIluM,MAAM,CAACzxB,MAAM,IAC5B4\u002FN,SAAS,GAAGnuM,MAAM,CAACzxB,MAAM,IACzB4\u002FN,SAAS,GAAGD,WAAW,IAAI,EAAE,EAC7B;QAEA,OAAOI,YAAY;MACrB;MACA,MAAMnd,IAAI,GAAGnxL,MAAM,CAAC7uB,QAAQ,CAAC+8N,WAAW,EAAEC,SAAS,CAAC;MAGpD,MAAM9gM,IAAI,GAAGs1L,WAAW,CAACxR,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,CAAC;MAC1C,MAAMsG,IAAI,GAAGkL,WAAW,CAACxR,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,CAAC;MAC1C,MAAM7jL,IAAI,GAAGq1L,WAAW,CAACxR,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,CAAC;MAC1C,MAAMuG,IAAI,GAAGiL,WAAW,CAACxR,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,CAAC;MAE1C,IAAI9jL,IAAI,GAAGC,IAAI,EAAE;QACfo1L,gBAAgB,CAACvR,IAAI,EAAE,CAAC,EAAE7jL,IAAI,CAAC;QAC\u002FBo1L,gBAAgB,CAACvR,IAAI,EAAE,CAAC,EAAE9jL,IAAI,CAAC;MACjC;MACA,IAAIoqL,IAAI,GAAGC,IAAI,EAAE;QACfgL,gBAAgB,CAACvR,IAAI,EAAE,CAAC,EAAEuG,IAAI,CAAC;QAC\u002FBgL,gBAAgB,CAACvR,IAAI,EAAE,CAAC,EAAEsG,IAAI,CAAC;MACjC;MAEA,MAAM+W,aAAa,GAAG7L,WAAW,CAACxR,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,CAAC;MACnD,IAAIqd,aAAa,GAAG,CAAC,EAAE;QACrB,IAAIA,aAAa,GAAG,CAAC,CAAC,EAAE;UAKtB,OAAOF,YAAY;QACrB;QAEArgN,IAAI,CAAC\u002FQ,GAAG,CAACi0M,IAAI,EAAEid,SAAS,CAAC;QACzBE,YAAY,CAAC\u002F\u002FN,MAAM,GAAG4iN,IAAI,CAAC5iN,MAAM;QACjC,OAAO+\u002FN,YAAY;MACrB;MAEA,IAAIx9N,CAAC;QACHke,CAAC,GAAG,EAAE;QACNy\u002FM,UAAU,GAAG,CAAC;MAChB,KAAK39N,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG09N,aAAa,EAAE19N,CAAC,EAAE,EAAE;QAClC,MAAM6hN,QAAQ,GAAIxB,IAAI,CAACniM,CAAC,CAAC,IAAI,CAAC,GAAImiM,IAAI,CAACniM,CAAC,GAAG,CAAC,CAAC;QAC7Cy\u002FM,UAAU,GAAG9b,QAAQ,GAAG,CAAC;QACzB3jM,CAAC,IAAI,CAAC;MACR;MAEA,MAAM0\u002FM,iBAAiB,GAAG1\u002FM,CAAC;MAC3B,MAAM2\u002FM,kBAAkB,GAAIxd,IAAI,CAACniM,CAAC,CAAC,IAAI,CAAC,GAAImiM,IAAI,CAACniM,CAAC,GAAG,CAAC,CAAC;MACvDs\u002FM,YAAY,CAACC,kBAAkB,GAAGI,kBAAkB;MACpD3\u002FM,CAAC,IAAI,CAAC,GAAG2\u002FM,kBAAkB;MAC3B,MAAMC,eAAe,GAAG5\u002FM,CAAC;MAEzB,IAAI6\u002FM,iBAAiB,GAAG,CAAC;MACzB,KAAK\u002F9N,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG29N,UAAU,EAAE39N,CAAC,EAAE,EAAE;QAC\u002FB,MAAMqnN,IAAI,GAAGhH,IAAI,CAACniM,CAAC,EAAE,CAAC;QACtB,IAAImpM,IAAI,GAAG,IAAI,EAAE;UAEfhH,IAAI,CAACniM,CAAC,GAAG,CAAC,CAAC,GAAGmpM,IAAI,GAAG,IAAI;QAC3B;QACA,IAAI2W,OAAO,GAAG,CAAC;QACf,IAAI3W,IAAI,GAAG,CAAC,EAAE;UACZ2W,OAAO,GAAG,CAAC;QACb,CAAC,MAAM,IAAI3W,IAAI,GAAG,EAAE,EAAE;UACpB2W,OAAO,GAAG,CAAC;QACb;QACA,IAAIC,OAAO,GAAG,CAAC;QACf,IAAI5W,IAAI,GAAG,CAAC,EAAE;UACZ4W,OAAO,GAAG,CAAC;QACb,CAAC,MAAM,IAAI5W,IAAI,GAAG,EAAE,EAAE;UACpB4W,OAAO,GAAG,CAAC;QACb;QACA,MAAMC,QAAQ,GAAGF,OAAO,GAAGC,OAAO;QAClCF,iBAAiB,IAAIG,QAAQ;QAC7B,IAAI7W,IAAI,GAAG,CAAC,EAAE;UACZ,MAAM1F,MAAM,GAAGtB,IAAI,CAACniM,CAAC,EAAE,CAAC;UACxB,IAAIyjM,MAAM,KAAK,CAAC,EAAE;YAEhBtB,IAAI,CAACniM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;UAClB;UACAle,CAAC,IAAI2hN,MAAM;UACXoc,iBAAiB,IAAIpc,MAAM,GAAGuc,QAAQ;QACxC;MACF;MAEA,IAAIH,iBAAiB,KAAK,CAAC,EAAE;QAC3B,OAAOP,YAAY;MACrB;MACA,IAAIW,eAAe,GAAGjgN,CAAC,GAAG6\u002FM,iBAAiB;MAC3C,IAAII,eAAe,GAAG9d,IAAI,CAAC5iN,MAAM,EAAE;QAEjC,OAAO+\u002FN,YAAY;MACrB;MACA,IAAI,CAACD,UAAU,IAAIM,kBAAkB,GAAG,CAAC,EAAE;QACzC1gN,IAAI,CAAC\u002FQ,GAAG,CAACi0M,IAAI,CAAChgN,QAAQ,CAAC,CAAC,EAAEu9N,iBAAiB,CAAC,EAAEN,SAAS,CAAC;QACxDngN,IAAI,CAAC\u002FQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAEkxN,SAAS,GAAGM,iBAAiB,CAAC;QAC\u002FCzgN,IAAI,CAAC\u002FQ,GAAG,CACNi0M,IAAI,CAAChgN,QAAQ,CAACy9N,eAAe,EAAEK,eAAe,CAAC,EAC\u002FCb,SAAS,GAAGM,iBAAiB,GAAG,CAClC,CAAC;QACDO,eAAe,IAAIN,kBAAkB;QACrC,IAAIxd,IAAI,CAAC5iN,MAAM,GAAG0gO,eAAe,GAAG,CAAC,EAAE;UACrCA,eAAe,GAAIA,eAAe,GAAG,CAAC,GAAI,CAAC,CAAC;QAC9C;QACAX,YAAY,CAAC\u002F\u002FN,MAAM,GAAG0gO,eAAe;QACrC,OAAOX,YAAY;MACrB;MACA,IAAInd,IAAI,CAAC5iN,MAAM,GAAG0gO,eAAe,GAAG,CAAC,EAAE;QAErCA,eAAe,GAAIA,eAAe,GAAG,CAAC,GAAI,CAAC,CAAC;QAC5ChhN,IAAI,CAAC\u002FQ,GAAG,CAACi0M,IAAI,CAAChgN,QAAQ,CAAC,CAAC,EAAE89N,eAAe,CAAC,EAAEb,SAAS,CAAC;QACtDE,YAAY,CAAC\u002F\u002FN,MAAM,GAAG0gO,eAAe;QACrC,OAAOX,YAAY;MACrB;MAEArgN,IAAI,CAAC\u002FQ,GAAG,CAACi0M,IAAI,EAAEid,SAAS,CAAC;MACzBE,YAAY,CAAC\u002F\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\u002FL,MAAM,GAAG+sN,iBAAiB,EAAE;UAC9B\u002FsN,MAAM,GAAG+sN,iBAAiB;QAC5B;QACAE,WAAW,CAAC9+N,IAAI,CAAC;UACfyoC,KAAK,EAAE\u002FoC,CAAC;UACRmS,MAAM;UACNy\u002FB,SAAS,EAAE;QACb,CAAC,CAAC;MACJ;MACAwtL,WAAW,CAAC\u002FiN,IAAI,CAAC,CAAC\u002FX,CAAC,EAAEvB,CAAC,KAAKuB,CAAC,CAAC6N,MAAM,GAAGpP,CAAC,CAACoP,MAAM,CAAC;MAI\u002FC,KAAKnS,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG07D,SAAS,EAAE17D,CAAC,EAAE,EAAE;QAC9Bo\u002FN,WAAW,CAACp\u002FN,CAAC,CAAC,CAAC4xC,SAAS,GAAGwtL,WAAW,CAACp\u002FN,CAAC,GAAG,CAAC,CAAC,CAACmS,MAAM;MACtD;MAEAitN,WAAW,CAAC\u002FiN,IAAI,CAAC,CAAC\u002FX,CAAC,EAAEvB,CAAC,KAAKuB,CAAC,CAACykC,KAAK,GAAGhmC,CAAC,CAACgmC,KAAK,CAAC;MAG7C,KAAK\u002FoC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG07D,SAAS,EAAE17D,CAAC,EAAE,EAAE;QAC9B,MAAM;UAAEmS,MAAM;UAAEy\u002FB;QAAU,CAAC,GAAGwtL,WAAW,CAACp\u002FN,CAAC,CAAC;QAC5C,IAAImS,MAAM,KAAK,CAAC,IAAIy\u002FB,SAAS,KAAK,CAAC,EAAE;UACnC;QACF;QACA,MAAMytL,UAAU,GAAGD,WAAW,CAACp\u002FN,CAAC,GAAG,CAAC,CAAC,CAACmS,MAAM;QAC5C,IAAIktN,UAAU,KAAK,CAAC,EAAE;UACpB;QACF;QACAD,WAAW,CAACp\u002FN,CAAC,CAAC,CAAC4xC,SAAS,GAAGytL,UAAU;QACrC;MACF;MAKA,MAAM50M,IAAI,GAAG20M,WAAW,CAACznM,EAAE,CAAC,CAAC,CAAC,CAAC;MAC\u002FB,IAAIlN,IAAI,CAACtY,MAAM,KAAK,CAAC,IAAIsY,IAAI,CAACmnB,SAAS,KAAK,CAAC,EAAE;QAC7CnnB,IAAI,CAACmnB,SAAS,GAAGstL,iBAAiB;MACpC;MAEA,MAAMI,aAAa,GAAGnhO,MAAM,CAAC8C,MAAM,CAAC,IAAI,CAAC;MACzC,IAAIs+N,WAAW,GAAG,CAAC;MACnBd,UAAU,CAACO,QAAQ,EAAE,CAAC,EAAEO,WAAW,CAAC;MACpC,KAAKv\u002FN,CAAC,GAAG,CAAC,EAAEke,CAAC,GAAGsiM,QAAQ,EAAExgN,CAAC,GAAG07D,SAAS,EAAE17D,CAAC,EAAE,EAAEke,CAAC,IAAIsiM,QAAQ,EAAE;QAC3D,MAAMgd,YAAY,GAAGL,aAAa,CAChC8B,WAAW,EACXG,WAAW,CAACp\u002FN,CAAC,CAAC,CAACmS,MAAM,EACrBitN,WAAW,CAACp\u002FN,CAAC,CAAC,CAAC4xC,SAAS,EACxButL,WAAW,EACXI,WAAW,EACXhC,UACF,CAAC;QACD,MAAMnwM,SAAS,GAAGowM,YAAY,CAAC\u002F\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\u002F\u002FN,MAAM,GAAG,EAAE;UACb,OAAO8gN,IAAI,CAACvxM,GAAG,GAAGU,GAAG,EAAE;YACrB,MAAM+vN,YAAY,GAAGlf,IAAI,CAAC3xM,OAAO,CAAC,CAAC;YACnCnP,MAAM,CAACtC,MAAM,GAAGsiO,YAAY;YAC5B,KAAK\u002F\u002FN,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+\u002FN,YAAY,EAAE,EAAE\u002F\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CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3D,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1D,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EACnE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACpD,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC5D,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAClD,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EACpE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAG1D,SAASC,iBAAiBA,CAAC9uM,KAAK,EAAE+uM,SAAS,EAAE;MAC3C,IAAIpvN,IAAI,GAAGqgB,KAAK,CAACrgB,IAAI;MACrB,IAAIpR,CAAC,GAAG,CAAC;QACPke,CAAC;QACD1b,CAAC;QACDO,CAAC;QACD09N,MAAM;QACNt7K,EAAE;QACFu7K,QAAQ,GAAG,CAAC;QACZC,QAAQ,GAAG,CAAC;MACd,MAAM91M,KAAK,GAAG,EAAE;MAChB,MAAM+1M,SAAS,GAAG,EAAE;MACpB,MAAMC,eAAe,GAAG,EAAE;MAC1B,IAAIC,2BAA2B,GAAGN,SAAS,CAACM,2BAA2B;MACvE,IAAIC,MAAM,GAAG,KAAK;QAChBC,OAAO,GAAG,CAAC;QACXC,MAAM,GAAG,CAAC;MACZ,KAAK,IAAI15N,EAAE,GAAG6J,IAAI,CAAC3T,MAAM,EAAEuC,CAAC,GAAGuH,EAAE,GAAI;QACnC,MAAM25N,EAAE,GAAG9vN,IAAI,CAACpR,CAAC,EAAE,CAAC;QAGpB,IAAIkhO,EAAE,KAAK,IAAI,EAAE;UAEf1+N,CAAC,GAAG4O,IAAI,CAACpR,CAAC,EAAE,CAAC;UACb,IAAI+gO,MAAM,IAAIE,MAAM,EAAE;YACpBjhO,CAAC,IAAIwC,CAAC;UACR,CAAC,MAAM;YACL,KAAK0b,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG1b,CAAC,EAAE0b,CAAC,EAAE,EAAE;cACtB2M,KAAK,CAACvqB,IAAI,CAAC8Q,IAAI,CAACpR,CAAC,EAAE,CAAC,CAAC;YACvB;UACF;QACF,CAAC,MAAM,IAAIkhO,EAAE,KAAK,IAAI,EAAE;UAEtB1+N,CAAC,GAAG4O,IAAI,CAACpR,CAAC,EAAE,CAAC;UACb,IAAI+gO,MAAM,IAAIE,MAAM,EAAE;YACpBjhO,CAAC,IAAIwC,CAAC,GAAG,CAAC;UACZ,CAAC,MAAM;YACL,KAAK0b,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG1b,CAAC,EAAE0b,CAAC,EAAE,EAAE;cACtBnb,CAAC,GAAGqO,IAAI,CAACpR,CAAC,EAAE,CAAC;cACb6qB,KAAK,CAACvqB,IAAI,CAAEyC,CAAC,IAAI,CAAC,GAAIqO,IAAI,CAACpR,CAAC,EAAE,CAAC,CAAC;YAClC;UACF;QACF,CAAC,MAAM,IAAI,CAACkhO,EAAE,GAAG,IAAI,MAAM,IAAI,EAAE;UAE\u002FB1+N,CAAC,GAAG0+N,EAAE,GAAG,IAAI,GAAG,CAAC;UACjB,IAAIH,MAAM,IAAIE,MAAM,EAAE;YACpBjhO,CAAC,IAAIwC,CAAC;UACR,CAAC,MAAM;YACL,KAAK0b,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG1b,CAAC,EAAE0b,CAAC,EAAE,EAAE;cACtB2M,KAAK,CAACvqB,IAAI,CAAC8Q,IAAI,CAACpR,CAAC,EAAE,CAAC,CAAC;YACvB;UACF;QACF,CAAC,MAAM,IAAI,CAACkhO,EAAE,GAAG,IAAI,MAAM,IAAI,EAAE;UAE\u002FB1+N,CAAC,GAAG0+N,EAAE,GAAG,IAAI,GAAG,CAAC;UACjB,IAAIH,MAAM,IAAIE,MAAM,EAAE;YACpBjhO,CAAC,IAAIwC,CAAC,GAAG,CAAC;UACZ,CAAC,MAAM;YACL,KAAK0b,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG1b,CAAC,EAAE0b,CAAC,EAAE,EAAE;cACtBnb,CAAC,GAAGqO,IAAI,CAACpR,CAAC,EAAE,CAAC;cACb6qB,KAAK,CAACvqB,IAAI,CAAEyC,CAAC,IAAI,CAAC,GAAIqO,IAAI,CAACpR,CAAC,EAAE,CAAC,CAAC;YAClC;UACF;QACF,CAAC,MAAM,IAAIkhO,EAAE,KAAK,IAAI,IAAI,CAACJ,2BAA2B,EAAE;UAEtD,IAAI,CAACC,MAAM,IAAI,CAACE,MAAM,EAAE;YAEtBR,MAAM,GAAG51M,KAAK,CAAC8M,EAAE,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI7hB,KAAK,CAAC2qN,MAAM,CAAC,EAAE;cACjBnkO,IAAI,CAAC,0CAA0C,CAAC;YAClD,CAAC,MAAM;cACLkkO,SAAS,CAACW,aAAa,CAACV,MAAM,CAAC,GAAG,IAAI;cACtC,IAAIA,MAAM,IAAID,SAAS,CAACY,oBAAoB,EAAE;gBAC5C,MAAMC,cAAc,GAClBx2M,KAAK,CAACptB,MAAM,GAAG+iO,SAAS,CAACY,oBAAoB,CAACX,MAAM,CAAC;gBACvD,IAAIY,cAAc,GAAG,CAAC,EAAE;kBACtB3kO,IAAI,CAAC,yCAAyC,CAAC;kBAC\u002FC8jO,SAAS,CAACjD,UAAU,GAAG,KAAK;kBAC5B;gBACF;gBACA1yM,KAAK,CAACptB,MAAM,GAAG4jO,cAAc;cAC\u002FB,CAAC,MAAM,IACLZ,MAAM,IAAID,SAAS,CAACc,gBAAgB,IACpC,CAACT,eAAe,CAAC7+N,QAAQ,CAACy+N,MAAM,CAAC,EACjC;gBACAG,SAAS,CAACtgO,IAAI,CAAC;kBAAE8Q,IAAI;kBAAEpR,CAAC;kBAAEuhO,QAAQ,EAAE12M,KAAK,CAACptB,MAAM,GAAG;gBAAE,CAAC,CAAC;gBACvDojO,eAAe,CAACvgO,IAAI,CAACmgO,MAAM,CAAC;gBAC5Bt7K,EAAE,GAAGq7K,SAAS,CAACc,gBAAgB,CAACb,MAAM,CAAC;gBACvC,IAAI,CAACt7K,EAAE,EAAE;kBACPzoD,IAAI,CAAC,gCAAgC,CAAC;kBACtC8jO,SAAS,CAACjD,UAAU,GAAG,KAAK;kBAC5B;gBACF;gBACAnsN,IAAI,GAAG+zC,EAAE,CAAC\u002FzC,IAAI;gBACdpR,CAAC,GAAGmlD,EAAE,CAACnlD,CAAC;cACV;YACF;UACF;QACF,CAAC,MAAM,IAAIkhO,EAAE,KAAK,IAAI,IAAI,CAACJ,2BAA2B,EAAE;UAEtD,IAAIC,MAAM,IAAIE,MAAM,EAAE;YACpBvkO,IAAI,CAAC,8BAA8B,CAAC;YACpCokO,2BAA2B,GAAG,IAAI;UACpC;UACAC,MAAM,GAAG,IAAI;UAEbJ,QAAQ,GAAG3gO,CAAC;UACZygO,MAAM,GAAG51M,KAAK,CAACmhB,GAAG,CAAC,CAAC;UACpBw0L,SAAS,CAACc,gBAAgB,CAACb,MAAM,CAAC,GAAG;YAAErvN,IAAI;YAAEpR;UAAE,CAAC;QAClD,CAAC,MAAM,IAAIkhO,EAAE,KAAK,IAAI,EAAE;UAEtB,IAAIH,MAAM,EAAE;YACVA,MAAM,GAAG,KAAK;YACdL,QAAQ,GAAG1gO,CAAC;UACd,CAAC,MAAM;YACLmlD,EAAE,GAAGy7K,SAAS,CAAC50L,GAAG,CAAC,CAAC;YACpB,IAAI,CAACmZ,EAAE,EAAE;cACPzoD,IAAI,CAAC,oBAAoB,CAAC;cAC1B8jO,SAAS,CAACjD,UAAU,GAAG,KAAK;cAC5B;YACF;YACAkD,MAAM,GAAGI,eAAe,CAAC70L,GAAG,CAAC,CAAC;YAC9B56B,IAAI,GAAG+zC,EAAE,CAAC\u002FzC,IAAI;YACdpR,CAAC,GAAGmlD,EAAE,CAACnlD,CAAC;YACRwgO,SAAS,CAACY,oBAAoB,CAACX,MAAM,CAAC,GAAG51M,KAAK,CAACptB,MAAM,GAAG0nD,EAAE,CAACo8K,QAAQ;UACrE;QACF,CAAC,MAAM,IAAIL,EAAE,KAAK,IAAI,EAAE;UAEtB,IAAIH,MAAM,IAAIE,MAAM,EAAE;YACpBvkO,IAAI,CAAC,8BAA8B,CAAC;YACpCokO,2BAA2B,GAAG,IAAI;UACpC;UACAC,MAAM,GAAG,IAAI;UAEbJ,QAAQ,GAAG3gO,CAAC;QACd,CAAC,MAAM,IAAIkhO,EAAE,KAAK,IAAI,EAAE;UAEtB,EAAEF,OAAO;QACX,CAAC,MAAM,IAAIE,EAAE,KAAK,IAAI,EAAE;UAEtBD,MAAM,GAAGD,OAAO;QAClB,CAAC,MAAM,IAAIE,EAAE,KAAK,IAAI,EAAE;UAEtB,IAAID,MAAM,KAAKD,OAAO,EAAE;YACtBC,MAAM,GAAG,CAAC;UACZ;UACA,EAAED,OAAO;QACX,CAAC,MAAM,IAAIE,EAAE,KAAK,IAAI,EAAE;UAEtB,IAAI,CAACH,MAAM,IAAI,CAACE,MAAM,EAAE;YACtB,MAAM9uN,MAAM,GAAG0Y,KAAK,CAAC8M,EAAE,CAAC,CAAC,CAAC,CAAC;YAE3B,IAAIxlB,MAAM,GAAG,CAAC,EAAE;cACdnS,CAAC,IAAImS,MAAM,GAAG,CAAC;YACjB;UACF;QACF;QAEA,IAAI,CAAC4uN,MAAM,IAAI,CAACE,MAAM,EAAE;UACtB,IAAItwK,UAAU,GAAG,CAAC;UAClB,IAAIuwK,EAAE,IAAI,IAAI,EAAE;YACdvwK,UAAU,GAAG2vK,gBAAgB,CAACY,EAAE,CAAC;UACnC,CAAC,MAAM,IAAIA,EAAE,IAAI,IAAI,IAAIA,EAAE,IAAI,IAAI,EAAE;YACnCvwK,UAAU,GAAG,CAAC,CAAC;UACjB,CAAC,MAAM,IAAIuwK,EAAE,IAAI,IAAI,EAAE;YACrBvwK,UAAU,GAAG,CAAC,CAAC;UACjB;UACA,IAAIuwK,EAAE,IAAI,IAAI,IAAIA,EAAE,IAAI,IAAI,EAAE;YAC5B1+N,CAAC,GAAGqoB,KAAK,CAACmhB,GAAG,CAAC,CAAC;YACf,IAAI,CAACl2B,KAAK,CAACtT,CAAC,CAAC,EAAE;cACbmuD,UAAU,GAAG,CAACnuD,CAAC,GAAG,CAAC;YACrB;UACF;UACA,OAAOmuD,UAAU,GAAG,CAAC,IAAI9lC,KAAK,CAACptB,MAAM,GAAG,CAAC,EAAE;YACzCotB,KAAK,CAACmhB,GAAG,CAAC,CAAC;YACX2kB,UAAU,EAAE;UACd;UACA,OAAOA,UAAU,GAAG,CAAC,EAAE;YACrB9lC,KAAK,CAACvqB,IAAI,CAAC2zD,GAAG,CAAC;YACftD,UAAU,EAAE;UACd;QACF;MACF;MACA6vK,SAAS,CAACM,2BAA2B,GAAGA,2BAA2B;MACnE,MAAMU,OAAO,GAAG,CAACpwN,IAAI,CAAC;MACtB,IAAIpR,CAAC,GAAGoR,IAAI,CAAC3T,MAAM,EAAE;QACnB+jO,OAAO,CAAClhO,IAAI,CAAC,IAAII,UAAU,CAACV,CAAC,GAAGoR,IAAI,CAAC3T,MAAM,CAAC,CAAC;MAC\u002FC;MACA,IAAIkjO,QAAQ,GAAGD,QAAQ,EAAE;QACvBhkO,IAAI,CAAC,2CAA2C,CAAC;QAGjD8kO,OAAO,CAAClhO,IAAI,CAAC,IAAII,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;MAC5C;MACA+gO,WAAW,CAAChwM,KAAK,EAAE+vM,OAAO,CAAC;IAC7B;IAEA,SAASE,qBAAqBA,CAAClB,SAAS,EAAEmB,eAAe,EAAE;MACzD,IAAInB,SAAS,CAACM,2BAA2B,EAAE;QACzC;MACF;MACA,IAAIN,SAAS,CAACc,gBAAgB,CAAC7jO,MAAM,GAAGkkO,eAAe,EAAE;QACvDjlO,IAAI,CAAC,0CAA0C,CAAC;QAChD8jO,SAAS,CAACjD,UAAU,GAAG,KAAK;QAC5B;MACF;MACA,KAAK,IAAIr\u002FM,CAAC,GAAG,CAAC,EAAE8sB,EAAE,GAAGw1L,SAAS,CAACW,aAAa,CAAC1jO,MAAM,EAAEygB,CAAC,GAAG8sB,EAAE,EAAE9sB,CAAC,EAAE,EAAE;QAChE,IAAIA,CAAC,GAAGyjN,eAAe,EAAE;UACvBjlO,IAAI,CAAC,2BAA2B,GAAGwhB,CAAC,CAAC;UACrCsiN,SAAS,CAACjD,UAAU,GAAG,KAAK;UAC5B;QACF;QACA,IAAIiD,SAAS,CAACW,aAAa,CAACjjN,CAAC,CAAC,IAAI,CAACsiN,SAAS,CAACc,gBAAgB,CAACpjN,CAAC,CAAC,EAAE;UAChExhB,IAAI,CAAC,0BAA0B,GAAGwhB,CAAC,CAAC;UACpCsiN,SAAS,CAACjD,UAAU,GAAG,KAAK;UAC5B;QACF;MACF;IACF;IAEA,SAASkE,WAAWA,CAAChwM,KAAK,EAAE+vM,OAAO,EAAE;MACnC,IAAIA,OAAO,CAAC\u002FjO,MAAM,GAAG,CAAC,EAAE;QAEtB,IAAI2vB,SAAS,GAAG,CAAC;QACjB,IAAIlP,CAAC,EAAE8sB,EAAE;QACT,KAAK9sB,CAAC,GAAG,CAAC,EAAE8sB,EAAE,GAAGw2L,OAAO,CAAC\u002FjO,MAAM,EAAEygB,CAAC,GAAG8sB,EAAE,EAAE9sB,CAAC,EAAE,EAAE;UAC5CkP,SAAS,IAAIo0M,OAAO,CAACtjN,CAAC,CAAC,CAACzgB,MAAM;QAChC;QACA2vB,SAAS,GAAIA,SAAS,GAAG,CAAC,GAAI,CAAC,CAAC;QAChC,MAAMvH,MAAM,GAAG,IAAInlB,UAAU,CAAC0sB,SAAS,CAAC;QACxC,IAAI9d,GAAG,GAAG,CAAC;QACX,KAAK4O,CAAC,GAAG,CAAC,EAAE8sB,EAAE,GAAGw2L,OAAO,CAAC\u002FjO,MAAM,EAAEygB,CAAC,GAAG8sB,EAAE,EAAE9sB,CAAC,EAAE,EAAE;UAC5C2H,MAAM,CAACzZ,GAAG,CAACo1N,OAAO,CAACtjN,CAAC,CAAC,EAAE5O,GAAG,CAAC;UAC3BA,GAAG,IAAIkyN,OAAO,CAACtjN,CAAC,CAAC,CAACzgB,MAAM;QAC1B;QACAg0B,KAAK,CAACrgB,IAAI,GAAGyU,MAAM;QACnB4L,KAAK,CAACh0B,MAAM,GAAG2vB,SAAS;MAC1B;IACF;IAEA,SAASw0M,kBAAkBA,CAACC,IAAI,EAAEC,IAAI,EAAEC,GAAG,EAAEJ,eAAe,EAAE;MAC5D,MAAMnB,SAAS,GAAG;QAChBc,gBAAgB,EAAE,EAAE;QACpBH,aAAa,EAAE,EAAE;QACjBC,oBAAoB,EAAE,EAAE;QACxBN,2BAA2B,EAAE,KAAK;QAClCvD,UAAU,EAAE;MACd,CAAC;MACD,IAAIsE,IAAI,EAAE;QACRtB,iBAAiB,CAACsB,IAAI,EAAErB,SAAS,CAAC;MACpC;MACA,IAAIsB,IAAI,EAAE;QACRvB,iBAAiB,CAACuB,IAAI,EAAEtB,SAAS,CAAC;MACpC;MACA,IAAIqB,IAAI,EAAE;QACRH,qBAAqB,CAAClB,SAAS,EAAEmB,eAAe,CAAC;MACnD;MACA,IAAII,GAAG,IAAIA,GAAG,CAACtkO,MAAM,GAAG,CAAC,EAAE;QACzB,MAAMukO,OAAO,GAAG,IAAIthO,UAAU,CAACqhO,GAAG,CAACtkO,MAAM,GAAG,CAAC,CAAC;QAC9CukO,OAAO,CAAC51N,GAAG,CAAC21N,GAAG,CAAC3wN,IAAI,CAAC;QACrB2wN,GAAG,CAAC3wN,IAAI,GAAG4wN,OAAO;MACpB;MACA,OAAOxB,SAAS,CAACjD,UAAU;IAC7B;IAGA1c,IAAI,GAAG,IAAIvpM,MAAM,CAAC,IAAI5W,UAAU,CAACmgN,IAAI,CAAC1xM,QAAQ,CAAC,CAAC,CAAC,CAAC;IAElD,IAAImc,MAAM,EAAE4sC,MAAM;IAClB,IAAIi6J,wBAAwB,CAACtR,IAAI,CAAC,EAAE;MAClC,MAAMohB,OAAO,GAAGtH,0BAA0B,CAAC9Z,IAAI,EAAE,IAAI,CAACliN,IAAI,CAAC;MAC3D2sB,MAAM,GAAG22M,OAAO,CAAC32M,MAAM;MACvB4sC,MAAM,GAAG+pK,OAAO,CAAC\u002FpK,MAAM;IACzB,CAAC,MAAM;MACL5sC,MAAM,GAAGwuM,kBAAkB,CAACjZ,IAAI,CAAC;MACjC3oJ,MAAM,GAAGohK,UAAU,CAACzY,IAAI,EAAEv1L,MAAM,CAACy4L,SAAS,CAAC;IAC7C;IACA,IAAIhzJ,GAAG,EAAEmxK,OAAO;IAEhB,MAAMC,UAAU,GAAG,CAACjqK,MAAM,CAAC,MAAM,CAAC;IAClC,IAAI,CAACiqK,UAAU,EAAE;MACf,MAAMC,WAAW,GACft1N,UAAU,CAACmyM,SAAS,KACnBnyM,UAAU,CAACiyM,WAAW,EAAEthN,MAAM,GAAG,CAAC,IACjC,EAAEqP,UAAU,CAACse,IAAI,YAAY2iC,YAAY,CAAC,CAAC;MAE\u002FC,IACGziC,MAAM,CAACwnB,OAAO,KAAK,MAAM,IAAI,CAACsvL,WAAW,IAC1C,CAAClqK,MAAM,CAACqhK,IAAI,IACZ,CAACrhK,MAAM,CAACshK,IAAI,IACZ,CAACthK,MAAM,CAACwhK,IAAI,IACZ,CAACxhK,MAAM,CAACyhK,IAAI,EACZ;QAEAuI,OAAO,GAAG,IAAI5qN,MAAM,CAAC4gD,MAAM,CAAC,MAAM,CAAC,CAAC9mD,IAAI,CAAC;QACzC2\u002FC,GAAG,GAAG,IAAI0tJ,OAAO,CAACyjB,OAAO,EAAEp1N,UAAU,CAAC;QAEtC2jN,YAAY,CAAC3jN,UAAU,CAAC;QAExB,OAAO,IAAI,CAAC69M,OAAO,CAAChsN,IAAI,EAAEoyD,GAAG,EAAEjkD,UAAU,CAAC;MAC5C;MAEA,OAAOorD,MAAM,CAACmoJ,IAAI;MAClB,OAAOnoJ,MAAM,CAACooJ,IAAI;MAClB,OAAOpoJ,MAAM,CAAC2pK,IAAI;MAClB,OAAO3pK,MAAM,CAAC4pK,IAAI;MAClB,OAAO5pK,MAAM,CAAC,MAAM,CAAC;MACrB,IAAI,CAACogK,UAAU,GAAG,IAAI;IACxB,CAAC,MAAM;MACL,IAAI,CAACpgK,MAAM,CAACooJ,IAAI,EAAE;QAChB,MAAM,IAAIhhN,WAAW,CAAC,oCAAoC,CAAC;MAC7D;MACA,IAAI,CAAC44D,MAAM,CAACmoJ,IAAI,EAAE;QAChB3jN,IAAI,CAAC,0DAA0D,CAAC;QAEhEw7D,MAAM,CAACmoJ,IAAI,GAAG;UACZ2D,GAAG,EAAE,MAAM;UACX5yM,IAAI,EAAE,IAAI1Q,UAAU,CAAC,CAAC;QACxB,CAAC;MACH;MACA,IAAI,CAAC43N,UAAU,GAAG,KAAK;IACzB;IAEA,IAAI,CAACpgK,MAAM,CAACwhK,IAAI,EAAE;MAChB,MAAM,IAAIp6N,WAAW,CAAC,oCAAoC,CAAC;IAC7D;IAEAuhN,IAAI,CAACvxM,GAAG,GAAG,CAACuxM,IAAI,CAACvwM,KAAK,IAAI,CAAC,IAAI4nD,MAAM,CAACwhK,IAAI,CAACvnN,MAAM;IACjD,IAAI2gC,OAAO,GAAG+tK,IAAI,CAAClxM,QAAQ,CAAC,CAAC;IAC7B,MAAM+rD,SAAS,GAAGmlJ,IAAI,CAACrxM,SAAS,CAAC,CAAC;IAElC,IAAIsjC,OAAO,KAAK,UAAU,IAAIA,OAAO,KAAK,UAAU,EAAE;MAEpD,IAAIolB,MAAM,CAACwhK,IAAI,CAACj8N,MAAM,KAAK,CAAC,EAAE;QAC5Bq1C,OAAO,GAAG,SAAS;MACrB,CAAC,MAAM,IAAIolB,MAAM,CAACwhK,IAAI,CAACj8N,MAAM,IAAI,EAAE,EAAE;QACnCq1C,OAAO,GAAG,UAAU;MACtB,CAAC,MAAM;QACL,MAAM,IAAIxzC,WAAW,CAAE,yCAAwC,CAAC;MAClE;MACAwyN,WAAW,CAAC55J,MAAM,CAACwhK,IAAI,CAACtoN,IAAI,EAAE,CAAC,EAAE0hC,OAAO,CAAC;IAC3C;IAEA,IAAIhmC,UAAU,CAACu1N,YAAY,EAAE5kO,MAAM,KAAKi+D,SAAS,IAAIymK,UAAU,EAAE;MAC\u002FD,MAAM;QAAEE;MAAa,CAAC,GAAGv1N,UAAU;MACnC,MAAMyzM,oBAAoB,GAAGoR,KAAK,CAChCz5J,MAAM,CAACqhK,IAAI,CAACnoN,IAAI,CAAC,EAAE,CAAC,EACpB8mD,MAAM,CAACqhK,IAAI,CAACnoN,IAAI,CAAC,EAAE,CACrB,CAAC;MAED,MAAM6uM,MAAM,GAAG,IAAIkF,SAAS,CAAC;QAC3BC,SAAS,EAAEltJ,MAAM,CAACmoJ,IAAI,CAACjvM,IAAI;QAC3BmvM,oBAAoB;QACpB8E,SAAS,EAAEntJ,MAAM,CAACooJ,IAAI,CAAClvM,IAAI;QAC3BsqD;MACF,CAAC,CAAC;MACFukJ,MAAM,CAACl9L,KAAK,CAACs\u002FM,YAAY,CAAC;MAE1B,MAAM;QAAEhiB,IAAI;QAAEC,IAAI;QAAEwF;MAAe,CAAC,GAAG7F,MAAM,CAAC0F,KAAK,CAAC,CAAC;MACrDztJ,MAAM,CAACmoJ,IAAI,CAACjvM,IAAI,GAAGivM,IAAI;MACvBnoJ,MAAM,CAACooJ,IAAI,CAAClvM,IAAI,GAAGkvM,IAAI;MAEvB,IAAIwF,cAAc,KAAK,CAAC,CAACvF,oBAAoB,EAAE;QAC7CroJ,MAAM,CAACqhK,IAAI,CAACnoN,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;QACxB8mD,MAAM,CAACqhK,IAAI,CAACnoN,IAAI,CAAC,EAAE,CAAC,GAAG00M,cAAc,GAAG,CAAC,GAAG,CAAC;MAC\u002FC;MAEA,MAAMiT,OAAO,GAAG7gK,MAAM,CAACuhK,IAAI,CAACroN,IAAI;MAEhC,KAAK,IAAIpR,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG07D,SAAS,EAAE17D,CAAC,EAAE,EAAE;QAClC,MAAMke,CAAC,GAAG,CAAC,GAAGle,CAAC;QACf,MAAMsiO,YAAY,GAAGpiO,IAAI,CAACoW,KAAK,CAC7B+rN,YAAY,CAACriO,CAAC,CAAC,GAAG2xN,KAAK,CAACoH,OAAO,CAAC76M,CAAC,CAAC,EAAE66M,OAAO,CAAC76M,CAAC,GAAG,CAAC,CAAC,CACpD,CAAC;QACD66M,OAAO,CAAC76M,CAAC,CAAC,GAAIokN,YAAY,IAAI,CAAC,GAAI,IAAI;QACvCvJ,OAAO,CAAC76M,CAAC,GAAG,CAAC,CAAC,GAAGokN,YAAY,GAAG,IAAI;QACpC,MAAM7X,GAAG,GAAGvqN,IAAI,CAACoW,KAAK,CACpB+rN,YAAY,CAACriO,CAAC,CAAC,GAAG6xN,WAAW,CAACkH,OAAO,CAAC76M,CAAC,GAAG,CAAC,CAAC,EAAE66M,OAAO,CAAC76M,CAAC,GAAG,CAAC,CAAC,CAC9D,CAAC;QACD0zM,gBAAgB,CAACmH,OAAO,EAAE76M,CAAC,GAAG,CAAC,EAAEusM,GAAG,CAAC;MACvC;IACF;IAGA,IAAIqU,YAAY,GAAGpjK,SAAS,GAAG,CAAC;IAChC,IAAImhK,aAAa,GAAG,IAAI;IACxB,IAAIiC,YAAY,GAAG,MAAM,EAAE;MACzBjC,aAAa,GAAG,KAAK;MACrBiC,YAAY,GAAGpjK,SAAS;MACxBh\u002FD,IAAI,CAAC,qDAAqD,CAAC;IAC7D;IACA,IAAIilO,eAAe,GAAG,CAAC;IACvB,IAAInD,qBAAqB,GAAG,CAAC;IAC7B,IAAI1rL,OAAO,IAAI,UAAU,IAAIolB,MAAM,CAACwhK,IAAI,CAACj8N,MAAM,IAAI,EAAE,EAAE;MAErDojN,IAAI,CAACvxM,GAAG,IAAI,CAAC;MACb,MAAMizN,QAAQ,GAAG1hB,IAAI,CAACrxM,SAAS,CAAC,CAAC;MACjC,IAAI+yN,QAAQ,GAAG,CAAC,EAAE;QAEhBrqK,MAAM,CAACwhK,IAAI,CAACtoN,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;QACxB8mD,MAAM,CAACwhK,IAAI,CAACtoN,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;MAC1B;MACAyvM,IAAI,CAACvxM,GAAG,IAAI,CAAC;MACbqyN,eAAe,GAAG9gB,IAAI,CAACrxM,SAAS,CAAC,CAAC;MAClCqxM,IAAI,CAACvxM,GAAG,IAAI,CAAC;MACbkvN,qBAAqB,GAAG3d,IAAI,CAACrxM,SAAS,CAAC,CAAC;IAC1C;IAEA0oD,MAAM,CAACwhK,IAAI,CAACtoN,IAAI,CAAC,CAAC,CAAC,GAAG0tN,YAAY,IAAI,CAAC;IACvC5mK,MAAM,CAACwhK,IAAI,CAACtoN,IAAI,CAAC,CAAC,CAAC,GAAG0tN,YAAY,GAAG,GAAG;IAExC,MAAMvB,UAAU,GAAGqE,kBAAkB,CACnC1pK,MAAM,CAAC2pK,IAAI,EACX3pK,MAAM,CAAC4pK,IAAI,EACX5pK,MAAM,CAAC,MAAM,CAAC,EACdypK,eACF,CAAC;IACD,IAAI,CAACpE,UAAU,EAAE;MACf,OAAOrlK,MAAM,CAAC2pK,IAAI;MAClB,OAAO3pK,MAAM,CAAC4pK,IAAI;MAClB,OAAO5pK,MAAM,CAAC,MAAM,CAAC;IACvB;IAIAykK,eAAe,CACb9b,IAAI,EACJ3oJ,MAAM,CAACshK,IAAI,EACXthK,MAAM,CAACuhK,IAAI,EACXvhK,MAAM,CAACqhK,IAAI,EACXuF,YAAY,EACZjC,aACF,CAAC;IAED,IAAI,CAAC3kK,MAAM,CAACqhK,IAAI,EAAE;MAChB,MAAM,IAAIj6N,WAAW,CAAC,oCAAoC,CAAC;IAC7D;IAEA8+N,YAAY,CAAClmK,MAAM,CAACqhK,IAAI,EAAE79J,SAAS,EAAEymK,UAAU,GAAGjqK,MAAM,CAACooJ,IAAI,CAAC7iN,MAAM,GAAG,CAAC,CAAC;IAEzE,IAAI6hO,aAAa,GAAGnhO,MAAM,CAAC8C,MAAM,CAAC,IAAI,CAAC;IACvC,IAAIkhO,UAAU,EAAE;MACd,MAAM5hB,oBAAoB,GAAGoR,KAAK,CAChCz5J,MAAM,CAACqhK,IAAI,CAACnoN,IAAI,CAAC,EAAE,CAAC,EACpB8mD,MAAM,CAACqhK,IAAI,CAACnoN,IAAI,CAAC,EAAE,CACrB,CAAC;MACD,MAAMoxN,UAAU,GAAGjE,sBAAsB,CACvCrmK,MAAM,CAACooJ,IAAI,EACXpoJ,MAAM,CAACmoJ,IAAI,EACX3kJ,SAAS,EACT6kJ,oBAAoB,EACpBgd,UAAU,EACVV,aAAa,EACb2B,qBACF,CAAC;MACDc,aAAa,GAAGkD,UAAU,CAAClD,aAAa;MAIxC,IAAIxsL,OAAO,IAAI,UAAU,IAAIolB,MAAM,CAACwhK,IAAI,CAACj8N,MAAM,IAAI,EAAE,EAAE;QACrDy6D,MAAM,CAACwhK,IAAI,CAACtoN,IAAI,CAAC,EAAE,CAAC,GAAGoxN,UAAU,CAAChE,qBAAqB,IAAI,CAAC;QAC5DtmK,MAAM,CAACwhK,IAAI,CAACtoN,IAAI,CAAC,EAAE,CAAC,GAAGoxN,UAAU,CAAChE,qBAAqB,GAAG,GAAG;MAC\u002FD;IACF;IACA,IAAI,CAACtmK,MAAM,CAACshK,IAAI,EAAE;MAChB,MAAM,IAAIl6N,WAAW,CAAC,oCAAoC,CAAC;IAC7D;IAIA,IAAI44D,MAAM,CAACshK,IAAI,CAACpoN,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI8mD,MAAM,CAACshK,IAAI,CAACpoN,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;MAC5D8mD,MAAM,CAACshK,IAAI,CAACpoN,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI;MAC3B8mD,MAAM,CAACshK,IAAI,CAACpoN,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI;IAC7B;IAIA,MAAMqxN,eAAe,GAAG;MACtB3e,UAAU,EAAE6N,KAAK,CAACz5J,MAAM,CAACqhK,IAAI,CAACnoN,IAAI,CAAC,EAAE,CAAC,EAAE8mD,MAAM,CAACqhK,IAAI,CAACnoN,IAAI,CAAC,EAAE,CAAC,CAAC;MAC7Dw1M,IAAI,EAAEiL,WAAW,CAAC35J,MAAM,CAACqhK,IAAI,CAACnoN,IAAI,CAAC,EAAE,CAAC,EAAE8mD,MAAM,CAACqhK,IAAI,CAACnoN,IAAI,CAAC,EAAE,CAAC,CAAC;MAC7Du1M,IAAI,EAAEkL,WAAW,CAAC35J,MAAM,CAACqhK,IAAI,CAACnoN,IAAI,CAAC,EAAE,CAAC,EAAE8mD,MAAM,CAACqhK,IAAI,CAACnoN,IAAI,CAAC,EAAE,CAAC,CAAC;MAC7DmhD,MAAM,EAAEs\u002FJ,WAAW,CAAC35J,MAAM,CAACshK,IAAI,CAACpoN,IAAI,CAAC,CAAC,CAAC,EAAE8mD,MAAM,CAACshK,IAAI,CAACpoN,IAAI,CAAC,CAAC,CAAC,CAAC;MAC7DohD,OAAO,EAAEq\u002FJ,WAAW,CAAC35J,MAAM,CAACshK,IAAI,CAACpoN,IAAI,CAAC,CAAC,CAAC,EAAE8mD,MAAM,CAACshK,IAAI,CAACpoN,IAAI,CAAC,CAAC,CAAC,CAAC;MAC9DsxN,OAAO,EAAE7Q,WAAW,CAAC35J,MAAM,CAACshK,IAAI,CAACpoN,IAAI,CAAC,CAAC,CAAC,EAAE8mD,MAAM,CAACshK,IAAI,CAACpoN,IAAI,CAAC,CAAC,CAAC;IAC\u002FD,CAAC;IAGD,IAAI,CAACmhD,MAAM,GAAGkwK,eAAe,CAAClwK,MAAM,GAAGkwK,eAAe,CAAC3e,UAAU;IACjE,IAAI,CAACtxJ,OAAO,GAAGiwK,eAAe,CAACjwK,OAAO,GAAGiwK,eAAe,CAAC3e,UAAU;IACnE,IAAI,CAAC4e,OAAO,GAAGD,eAAe,CAACC,OAAO,GAAGD,eAAe,CAAC3e,UAAU;IAEnE,IAAI,IAAI,CAACzuM,WAAW,EAAE2iN,UAAU,EAAE;MAChC,IAAI,CAACA,UAAU,GAAG,IAAI,CAAC3iN,WAAW,CAAC0jN,OAAO,CAACf,UAAU;MACrD,IAAI,CAAC0K,OAAO,GAAG,IAAI,CAACrtN,WAAW,CAAC0jN,OAAO,CAAC2J,OAAO;IACjD,CAAC,MAAM;MACL,IAAI,CAAC1K,UAAU,GAAG,IAAI,CAACzlK,MAAM,GAAG,IAAI,CAACC,OAAO,GAAG,IAAI,CAACkwK,OAAO;IAC7D;IAGA,IAAIxqK,MAAM,CAACyhK,IAAI,EAAE;MACf+F,mBAAmB,CAACxnK,MAAM,CAACyhK,IAAI,EAAE7sN,UAAU,EAAE4uD,SAAS,CAAC;IACzD;IAGAxD,MAAM,CAACyhK,IAAI,GAAG;MACZ3V,GAAG,EAAE,MAAM;MACX5yM,IAAI,EAAE4kN,eAAe,CAAClpN,UAAU;IAClC,CAAC;IAED,MAAMupM,iBAAiB,GAAGl4M,MAAM,CAAC8C,MAAM,CAAC,IAAI,CAAC;IAG7C,SAASmyN,QAAQA,CAAC9c,OAAO,EAAE;MACzB,OAAO,CAACgpB,aAAa,CAAChpB,OAAO,CAAC;IAChC;IAEA,IAAIxpM,UAAU,CAACmyM,SAAS,EAAE;MACxB,MAAMF,WAAW,GAAGjyM,UAAU,CAACiyM,WAAW,IAAI,EAAE;MAChD,MAAM4jB,kBAAkB,GAAG5jB,WAAW,CAACthN,MAAM,KAAK,CAAC;MAEnDqP,UAAU,CAACse,IAAI,CAAC9e,OAAO,CAAC,UAAU9E,QAAQ,EAAEgvD,GAAG,EAAE;QAC\u002FC,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE;UAC3BA,GAAG,GAAGy8J,gBAAgB,CAACzrN,QAAQ,EAAEgvD,GAAG,EAAsB,IAAI,CAAC;QACjE;QACA,IAAIA,GAAG,GAAG,MAAM,EAAE;UAChB,MAAM,IAAIl3D,WAAW,CAAC,2BAA2B,CAAC;QACpD;QACA,IAAIg3M,OAAO,GAAG,CAAC,CAAC;QAChB,IAAIqsB,kBAAkB,EAAE;UACtBrsB,OAAO,GAAG9\u002FI,GAAG;QACf,CAAC,MAAM,IAAIuoJ,WAAW,CAACvoJ,GAAG,CAAC,KAAK92D,SAAS,EAAE;UACzC42M,OAAO,GAAGyI,WAAW,CAACvoJ,GAAG,CAAC;QAC5B;QAEA,IAAI8\u002FI,OAAO,IAAI,CAAC,IAAIA,OAAO,GAAG56I,SAAS,IAAI03J,QAAQ,CAAC9c,OAAO,CAAC,EAAE;UAC5DD,iBAAiB,CAAC7uM,QAAQ,CAAC,GAAG8uM,OAAO;QACvC;MACF,CAAC,CAAC;IACJ,CAAC,MAAM;MAGL,MAAMssB,SAAS,GAAG1H,aAAa,CAC7BhjK,MAAM,CAACkmJ,IAAI,EACXyC,IAAI,EACJ,IAAI,CAACtK,cAAc,EACnBzpM,UAAU,CAACgkN,WACb,CAAC;MACD,MAAM+R,cAAc,GAAGD,SAAS,CAACzH,UAAU;MAC3C,MAAM2H,cAAc,GAAGF,SAAS,CAACxH,UAAU;MAC3C,MAAM2H,YAAY,GAAGH,SAAS,CAACvH,QAAQ;MACvC,IAAIjkK,YAAY,GAAG,EAAE;QACnB4rK,cAAc,GAAG,KAAK;MACxB,IACEl2N,UAAU,CAACgkN,WAAW,KACrBhkN,UAAU,CAAC2pM,gBAAgB,KAAK,kBAAkB,IACjD3pM,UAAU,CAAC2pM,gBAAgB,KAAK,iBAAiB,CAAC,EACpD;QACAr\u002FI,YAAY,GAAGpH,WAAW,CAACljD,UAAU,CAAC2pM,gBAAgB,CAAC;MACzD;MAIA,IACE3pM,UAAU,CAACgkN,WAAW,IACtB,CAAC,IAAI,CAACva,cAAc,KAClBssB,cAAc,KAAK,CAAC,IAAIC,cAAc,KAAK,CAAC,IAC3CD,cAAc,KAAK,CAAC,IAAIC,cAAc,KAAK,CAAE,CAAC,EACjD;QACA,MAAM1uB,gBAAgB,GAAGh4I,gBAAgB,CAAC,CAAC;QAC3C,KAAK,IAAI50D,QAAQ,GAAG,CAAC,EAAEA,QAAQ,GAAG,GAAG,EAAEA,QAAQ,EAAE,EAAE;UACjD,IAAImvM,SAAS;UACb,IAAI,IAAI,CAACD,WAAW,CAAClvM,QAAQ,CAAC,KAAK9H,SAAS,EAAE;YAC5Ci3M,SAAS,GAAG,IAAI,CAACD,WAAW,CAAClvM,QAAQ,CAAC;UACxC,CAAC,MAAM,IAAI4vD,YAAY,CAAC35D,MAAM,IAAI25D,YAAY,CAAC5vD,QAAQ,CAAC,KAAK,EAAE,EAAE;YAC\u002FDmvM,SAAS,GAAGv\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\u002FBy\u002FJ,QAAQ,CAACllN,UAAU,CAAC4I,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,GACxC,UAAU,GACV,UAAU,GACV,UAAU,GACV,UACJ,CAAC;IAGD4tN,OAAO,CAACha,QAAQ,CACd,MAAM,EACN,kBAAkB,GAChB2I,YAAY,CAACnlN,UAAU,CAACylD,MAAM,CAAC,GAC\u002FB0\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\u002FCs\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\u002FqB,MAAM,IAAI+qB,YAAY;EAC\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\u002FL,GAAG,GAAG,CAAC,EAAEA,GAAG,IAAIy\u002FL,QAAQ,EAAEz\u002FL,GAAG,EAAE,EAAEvoB,CAAC,EAAE,EAAE;QAC7C,IACE,CAACwM,GAAG,KAAK,CAAC,IAAIA,GAAG,KAAK07M,QAAQ,MAC7B3\u002FL,GAAG,KAAK,CAAC,IAAIA,GAAG,KAAKy\u002FL,QAAQ,CAAC,EAC\u002FB;UACA;QACF;QACA,IAAIvlO,CAAC,GAAG,CAAC;UACPC,CAAC,GAAG,CAAC;QACP,IAAIkd,CAAC,GAAG,CAAC;QACT,KAAK,IAAIvjB,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;UAC3B,KAAK,IAAIke,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAEqF,CAAC,EAAE,EAAE;YAChC,MAAMhgB,CAAC,GAAG6oO,IAAI,CAACj8M,GAAG,CAAC,CAACnwB,CAAC,CAAC,GAAGqsO,IAAI,CAACngM,GAAG,CAAC,CAAChuB,CAAC,CAAC;YACrC9X,CAAC,IAAI8jO,MAAM,CAAC5yE,EAAE,CAAC\u002FzI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGhgB,CAAC;YACzB8C,CAAC,IAAI6jO,MAAM,CAAC5yE,EAAE,CAAC\u002FzI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGhgB,CAAC;UAC3B;QACF;QACAuoO,YAAY,CAACnoN,CAAC,CAAC,GAAGumN,MAAM,CAACzsO,MAAM;QAC\u002FBysO,MAAM,CAAC5pO,IAAI,CAAC,CAAC8F,CAAC,EAAEC,CAAC,CAAC,CAAC;QACnB0lO,YAAY,CAACpoN,CAAC,CAAC,GAAGqgC,MAAM,CAACvmD,MAAM;QAC\u002FB,MAAM6uO,QAAQ,GAAG,IAAI5rO,UAAU,CAAC,CAAC,CAAC;QAClC4rO,QAAQ,CAAC,CAAC,CAAC,GAAI,CAACN,EAAE,CAAC,CAAC,CAAC,IAAIL,QAAQ,GAAGz\u002FL,GAAG,CAAC,GAAG+\u002FL,EAAE,CAAC,CAAC,CAAC,GAAG\u002F\u002FL,GAAG,IAAIy\u002FL,QAAQ,GAAI,CAAC;QACvEW,QAAQ,CAAC,CAAC,CAAC,GAAI,CAACN,EAAE,CAAC,CAAC,CAAC,IAAIL,QAAQ,GAAGz\u002FL,GAAG,CAAC,GAAG+\u002FL,EAAE,CAAC,CAAC,CAAC,GAAG\u002F\u002FL,GAAG,IAAIy\u002FL,QAAQ,GAAI,CAAC;QACvEW,QAAQ,CAAC,CAAC,CAAC,GAAI,CAACN,EAAE,CAAC,CAAC,CAAC,IAAIL,QAAQ,GAAGz\u002FL,GAAG,CAAC,GAAG+\u002FL,EAAE,CAAC,CAAC,CAAC,GAAG\u002F\u002FL,GAAG,IAAIy\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\u002F\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E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC3E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EACtE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAC5E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC7E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAC7E,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC3E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CACtC;AACD,MAAMC,kBAAkB,GAAG;EAAElV,UAAU,EAAE,MAAM;EAAE0K,OAAO,EAAE;AAAO,CAAC;AAIlE,MAAMyK,wBAAwB,GAAG,CAC\u002FB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EACxE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EACxE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CA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E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC1E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAC7E,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAC3E,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC3E,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EACrE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC3E,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACxE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC3E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,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,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EACrE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAC1E,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EACxE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC7E,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EACxE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EACvE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EACxE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAC1E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAC5E,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EACxE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EACzE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAClD;AACD,MAAMC,oBAAoB,GAAG;EAAE1V,UAAU,EAAE,GAAG;EAAE0K,OAAO,EAAE;AAAI,CAAC;AAI9D,MAAMiL,0BAA0B,GAAG,CACjC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EACxE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EACrE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAC1E,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EACxE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAC3E,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EACzE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAC5E,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EACxE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAC5E,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,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,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAC5E,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EACxE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EACzE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACxE,OAAO,EAAE,OAAO,EAAE,OA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,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EACvE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,O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,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAC3E,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OA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AAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC5E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAC5E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC5E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CACxB;AAGD,MAAMC,yBAAyB,GAAG,CAChC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC3E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3E,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAC3D;AAGD,MAAMC,8BAA8B,GAAG,CACrC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC5E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAC5E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CACxB;AAGD,MAAMC,+BAA+B,GAAG,CACtC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC3E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3E,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAC3D;AAGD,MAAMC,0BAA0B,GAAG,CACjC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC5E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAC5E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CACxB;AAGD,MAAMC,2BAA2B,GAAG,CAClC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC3E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3E,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAC3D;AAGD,MAAMC,2BAA2B,GAAG,CAClC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC5E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAC5E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC5E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CACxB;AAGD,MAAMC,4BAA4B,GAAG,CACnC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC3E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,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,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAC1E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EACtE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CA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OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAC7E,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EACzE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAC1E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAC1E,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAC1E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACxE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAA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,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAC5E,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAC7E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC7E,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CA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AK,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAC3E,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAC7E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EACvE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAC5E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAA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AE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC3E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAC5E,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EA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OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EACvE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC1E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,E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O,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EACrE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EACxE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EACxE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAC7E,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EACvE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC7E,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EACtE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC3E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EACtE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAC5E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAC3E,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACvE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EACzE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC3E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CACvE;AACD,MAAMC,oBAAoB,GAAG;EAAEtX,UAAU,EAAE,OAAO;EAAE0K,OAAO,EAAE;AAAE,CAAC;AAIhE,MAAM6M,qBAAqB,GAAG,CAC5B,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAA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AAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC3E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAC3E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,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\u002FB\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\u002FB\u002FB,KAAK,GAAG4sB,KAAK,CAACwsN,UAAU,GAAGr3O,CAAC,CAAC;QAC7B,IAAIs3O,KAAK,GAAGl7N,KAAK,CAACpc,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI\u002FB,KAAK,GAAGq5O,KAAK,EAAE;UACjBr5O,KAAK,GAAGq5O,KAAK;QACf,CAAC,MAAM;UACLA,KAAK,GAAGl7N,KAAK,CAACpc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;UACxB,IAAI\u002FB,KAAK,GAAGq5O,KAAK,EAAE;YACjBr5O,KAAK,GAAGq5O,KAAK;UACf;QACF;QACAviM,MAAM,CAAC\u002F0C,CAAC,CAAC,GAAG\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E,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACrE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACpE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACnE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACrE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACrE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EACpE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACpE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACpE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACrE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACpE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CACtE;AASD,MAAMC,WAAW,GAAG,CAClB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EACvE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACxE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EACvE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EACpE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACpE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EACvE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IA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\u002F\u002FN,CAAC,GAAGs\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\u002FO,KAAK,EAAE;MACxBs\u002FO,YAAY,GAAGt\u002FO,KAAK;IACtB;IACA,IAAIu\u002FO,cAAc,GAAGv\u002FO,KAAK,IAAIm+O,KAAK,CAACn+O,KAAK,CAAC,EAAE;MAC1Cu\u002FO,cAAc,GAAGv\u002FO,KAAK;IACxB;EACF;EAGA,KAAKA,KAAK,GAAGs\u002FO,YAAY,EAAEt\u002FO,KAAK,IAAIu\u002FO,cAAc,EAAE,EAAEv\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\u002F+N,GAAG,EACHu\u002FN,aAAa,EACbC,WAAW,GAAG,IAAI,EAClBC,OAAO,GAAG,IAAI,EACdC,MAAM,GAAG,EAAE,EACX;EACA,MAAM\u002F2N,MAAM,GAAG;IACb81N,KAAK,EAAE,IAAI;IACXM,QAAQ,EAAE;EACZ,CAAC;EACD,IAAID,KAAK,EAAE;IACT,MAAMa,KAAK,GAAGD,MAAM,GAAI,IAAGA,MAAO,EAAC,GAAG,EAAE;IACxC,KAAK,MAAMj+O,IAAI,IAAIq9O,KAAK,EAAE;MACxB9+N,GAAG,CAAC5c,IAAI,CAAE,SAAQ3B,IAAK,GAAEk+O,KAAM,GAAE,CAAC;IACpC;EACF;EACA,IAAIX,KAAK,EAAE;IACT,MAAMY,YAAY,GAAGf,eAAe,CAAC9yO,GAAG,CAACizO,KAAK,CAAC;IAC\u002FC,MAAMa,WAAW,GAAGH,MAAM,IAAIR,gBAAgB,CAACT,KAAK,CAAC;IACrDx9O,MAAM,CAACy5C,MAAM,CACX\u002FxB,MAAM,EACN22N,YAAY,CACVM,YAAY,EACZ5\u002FN,GAAG,EACHu\u002FN,aAAa,EACOC,WAAW,IAAI,CAAC7pO,QAAQ,EAC5B8pO,OAAO,IAAI,CAAC1pO,IAAI,EAChC8pO,WACF,CACF,CAAC;EACH;EACA,IAAIpB,KAAK,EAAE;IACT91N,MAAM,CAAC81N,KAAK,GAAGA,KAAK;EACtB;EACA,IAAIM,QAAQ,EAAE;IACZp2N,MAAM,CAACo2N,QAAQ,GAAGA,QAAQ;EAC5B;EACA,IAAIS,WAAW,IAAI7pO,QAAQ,EAAE;IAC3B,MAAMmqO,YAAY,GAAGjB,eAAe,CAAC9yO,GAAG,CAAC4J,QAAQ,CAAC;IAClD,MAAM;MAAEopO,QAAQ,EAAEgB;IAAiB,CAAC,GAAGT,YAAY,CACjDQ,YAAY,EACZ9\u002FN,GAAG,EACHu\u002FN,aAAa,EACbC,WAAW,EACKC,OAAO,IAAI,CAAC1pO,IAAI,EAChC2pO,MACF,CAAC;IACD\u002F2N,MAAM,CAACo2N,QAAQ,KAAKgB,gBAAgB;EACtC;EACA,IAAIN,OAAO,IAAI1pO,IAAI,IAAIwpO,aAAa,EAAE;IACpCv\u002FN,GAAG,CAAC5c,IAAI,CAAE,OAAMm8O,aAAc,GAAExpO,IAAK,GAAE,CAAC;EAC1C;EAEA,OAAO4S,MAAM;AACf;AAwBA,SAASq3N,mBAAmBA,CAC1BC,eAAe,EACfC,SAAS,EACTX,aAAa,EACbY,YAAY,EACZC,gBAAgB,EAChB3wP,IAAI,EACJ;EACA,IAAI0wP,YAAY,CAAC\u002F\u002FO,UAAU,CAAC,mBAAmB,CAAC,EAAE;IAChD,OAAO,IAAI;EACb;EAEA,IACE,CAAC3Q,IAAI,KAAK,UAAU,IAAIA,IAAI,KAAK,OAAO,KACxC,aAAa,CAACuoB,IAAI,CAACmoO,YAAY,CAAC,EAChC;IAEAA,YAAY,GAAGA,YAAY,CAACt5O,KAAK,CAAC,CAAC,CAAC;EACtC;EAIAs5O,YAAY,GAAGxmC,iBAAiB,CAACwmC,YAAY,CAAC;EAE9C,MAAMn8O,GAAG,GAAGm8O,YAAY;EACxB,IAAIE,gBAAgB,GAAGJ,eAAe,CAACl0O,GAAG,CAAC\u002FH,GAAG,CAAC;EAC\u002FC,IAAIq8O,gBAAgB,EAAE;IACpB,OAAOA,gBAAgB;EACzB;EAGA,IAAIT,YAAY,GAAGf,eAAe,CAAC9yO,GAAG,CAACo0O,YAAY,CAAC;EACpD,IAAI,CAACP,YAAY,EAAE;IAGjB,KAAK,MAAM,CAACZ,KAAK,EAAEsB,KAAK,CAAC,IAAIrB,WAAW,EAAE;MACxC,IAAIkB,YAAY,CAAC\u002F\u002FO,UAAU,CAAC4+O,KAAK,CAAC,EAAE;QAClCmB,YAAY,GAAI,GAAEG,KAAM,GAAEH,YAAY,CAAC9pO,SAAS,CAAC2oO,KAAK,CAACz+O,MAAM,CAAE,EAAC;QAChEq\u002FO,YAAY,GAAGf,eAAe,CAAC9yO,GAAG,CAACo0O,YAAY,CAAC;QAChD;MACF;IACF;EACF;EAEA,IAAII,eAAe,GAAG,KAAK;EAC3B,IAAI,CAACX,YAAY,EAAE;IAEjBA,YAAY,GAAGf,eAAe,CAAC9yO,GAAG,CAACq0O,gBAAgB,CAAC;IACpDG,eAAe,GAAG,IAAI;EACxB;EAEA,MAAM9+B,UAAU,GAAI,GAAEy+B,SAAS,CAACM,QAAQ,CAAC,CAAE,KAAIN,SAAS,CAACO,YAAY,CAAC,CAAE,EAAC;EACzE,IAAI,CAACb,YAAY,EAAE;IACjB,IAAI,CAACjoO,gBAAgB,CAACwoO,YAAY,CAAC,EAAE;MACnC3gP,IAAI,CAAE,mDAAkD2gP,YAAa,EAAC,CAAC;MACvEF,eAAe,CAAC\u002FwO,GAAG,CAAClL,GAAG,EAAE,IAAI,CAAC;MAE9B,OAAO,IAAI;IACb;IAEA,MAAM83N,IAAI,GAAG,QAAQ,CAAC9jN,IAAI,CAACmoO,YAAY,CAAC;IACxC,MAAMpkB,MAAM,GAAG,kBAAkB,CAAC\u002FjN,IAAI,CAACmoO,YAAY,CAAC;IACpD,MAAM1B,KAAK,GACR3iB,IAAI,IAAIC,MAAM,IAAI6iB,UAAU,IAC5B9iB,IAAI,IAAI4iB,IAAK,IACb3iB,MAAM,IAAI4iB,MAAO,IAClBH,MAAM;IACR6B,gBAAgB,GAAG;MACjBxlB,GAAG,EAAG,IAAGskB,aAAa,CAACgB,YAAY,CAAE,KAAI1+B,UAAW,EAAC;MACrDmZ,aAAa,EAAE,IAAI;MACnBnZ,UAAU;MACV0+B,YAAY;MACZngO,GAAG,EAAG,SAAQmgO,YAAa,GAAE;MAC7B1B;IACF,CAAC;IACDwB,eAAe,CAAC\u002FwO,GAAG,CAAClL,GAAG,EAAEq8O,gBAAgB,CAAC;IAC1C,OAAOA,gBAAgB;EACzB;EAEA,MAAMrgO,GAAG,GAAG,EAAE;EAGd,IAAIugO,eAAe,IAAI5oO,gBAAgB,CAACwoO,YAAY,CAAC,EAAE;IACrDngO,GAAG,CAAC5c,IAAI,CAAE,SAAQ+8O,YAAa,GAAE,CAAC;EACpC;EACA,MAAM;IAAE1B,KAAK;IAAEM;EAAS,CAAC,GAAGO,YAAY,CAACM,YAAY,EAAE5\u002FN,GAAG,EAAEu\u002FN,aAAa,CAAC;EAC1E,MAAM3kB,aAAa,GAAGmkB,QAAQ,KAAK,IAAI;EACvC,MAAMppO,QAAQ,GAAGilN,aAAa,GAAG,EAAE,GAAI,IAAGmkB,QAAS,EAAC;EAEpDsB,gBAAgB,GAAG;IACjBxlB,GAAG,EAAG,IAAGskB,aAAa,CAACgB,YAAY,CAAE,KAAI1+B,UAAW,GAAE9rM,QAAS,EAAC;IAChEilN,aAAa;IACbnZ,UAAU;IACV0+B,YAAY;IACZngO,GAAG,EAAEA,GAAG,CAAC3c,IAAI,CAAC,GAAG,CAAC;IAClBo7O;EACF,CAAC;EACDwB,eAAe,CAAC\u002FwO,GAAG,CAAClL,GAAG,EAAEq8O,gBAAgB,CAAC;EAE1C,OAAOA,gBAAgB;AACzB;;;ACniBmE;AAEnE,MAAMK,aAAa,GAAG,IAAI;AAK1B,MAAMC,aAAa,GAAG,KAAK;AAC3B,MAAMC,SAAS,GAAG,GAAG;AAUrB,MAAMC,YAAY,CAAC;EACjBn\u002FO,WAAWA,CAACo\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\u002F\u002FO,IAAI,CAACqJ,KAAK,CAAC02O,QAAQ,GAAG1Y,IAAI,CAAC,GAAG,CAAC;MAC1C2Y,SAAS,GAAGhgP,IAAI,CAACqJ,KAAK,CAAC22O,SAAS,GAAG3Y,IAAI,CAAC,GAAG,CAAC;MAE5C,MAAMuX,MAAM,GAAG,IAAIl9O,eAAe,CAACq+O,QAAQ,EAAEC,SAAS,CAAC;MACvD,MAAMnB,GAAG,GAAGD,MAAM,CAACE,UAAU,CAAC,IAAI,CAAC;MACnCD,GAAG,CAACsB,SAAS,CACXppN,MAAM,EACN,CAAC,EACD,CAAC,EACDkpN,SAAS,EACTC,UAAU,EACV,CAAC,EACD,CAAC,EACDH,QAAQ,EACRC,SACF,CAAC;MACDjpN,MAAM,GAAG6nN,MAAM,CAACwB,qBAAqB,CAAC,CAAC;IACzC;IAEAtC,OAAO,CAAC5sO,IAAI,GAAG,IAAI;IACnB4sO,OAAO,CAAC\u002FmN,MAAM,GAAGA,MAAM;IACvB+mN,OAAO,CAAC7mO,KAAK,GAAG8oO,QAAQ;IACxBjC,OAAO,CAAC5mO,MAAM,GAAG8oO,SAAS;IAE1B,OAAOlC,OAAO;EAChB;EAEAyB,UAAUA,CAAA,EAAG;IACX,MAAM;MAAEtoO,KAAK;MAAEC,MAAM;MAAE4yB;IAAK,CAAC,GAAG,IAAI,CAACk0M,QAAQ;IAC7C,IAAI9sO,IAAI,GAAG,IAAI,CAAC8sO,QAAQ,CAAC9sO,IAAI;IAC7B,IAAImvO,WAAW;IACf,IAAIC,UAAU,GAAG,IAAI9\u002FO,UAAU,CAAC,CAAC,CAAC;IAClC,IAAI+\u002FO,SAAS,GAAGD,UAAU;IAC1B,IAAIE,WAAW,GAAG,CAAC;IAKnB,QAAQ12M,IAAI;MACV,KAAKx5C,SAAS,CAACC,cAAc;QAAE;UAC7B8vP,WAAW,GAAG,CAAC;UACfC,UAAU,GAAG,IAAI9\u002FO,UAAU,CACzB,IAAI,CAACy9O,OAAO,GACR,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAChC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CACrC,CAAC;UACD,MAAMwC,MAAM,GAAIxpO,KAAK,GAAG,CAAC,IAAK,CAAC;UAC\u002FB,MAAM6tB,OAAO,GAAI27M,MAAM,GAAG,CAAC,GAAI,CAAC,CAAC;UACjC,IAAIA,MAAM,KAAK37M,OAAO,EAAE;YACtB,MAAM47M,OAAO,GAAG,IAAIlgP,UAAU,CAACskC,OAAO,GAAG5tB,MAAM,CAAC;YAChD,IAAIuM,CAAC,GAAG,CAAC;YACT,KACE,IAAI3jB,CAAC,GAAG,CAAC,EAAEuH,EAAE,GAAG6P,MAAM,GAAGupO,MAAM,EAC\u002FB3gP,CAAC,GAAGuH,EAAE,EACNvH,CAAC,IAAI2gP,MAAM,EAAEh9N,CAAC,IAAIqhB,OAAO,EACzB;cACA47M,OAAO,CAACx0O,GAAG,CAACgF,IAAI,CAAC\u002FQ,QAAQ,CAACL,CAAC,EAAEA,CAAC,GAAG2gP,MAAM,CAAC,EAAEh9N,CAAC,CAAC;YAC9C;YACAvS,IAAI,GAAGwvO,OAAO;UAChB;UACA;QACF;MACA,KAAKpwP,SAAS,CAACE,SAAS;QAAE;UACxB6vP,WAAW,GAAG,EAAE;UAChB,IAAIppO,KAAK,GAAG,CAAC,EAAE;YACb,MAAMwpO,MAAM,GAAG,CAAC,GAAGxpO,KAAK;YACxB,MAAM6tB,OAAO,GAAI27M,MAAM,GAAG,CAAC,GAAI,CAAC,CAAC;YACjC,MAAME,QAAQ,GAAG77M,OAAO,GAAG27M,MAAM;YACjC,MAAMC,OAAO,GAAG,IAAIlgP,UAAU,CAACskC,OAAO,GAAG5tB,MAAM,CAAC;YAChD,IAAIuM,CAAC,GAAG,CAAC;YACT,KAAK,IAAI3jB,CAAC,GAAG,CAAC,EAAEuH,EAAE,GAAG6P,MAAM,GAAGupO,MAAM,EAAE3gP,CAAC,GAAGuH,EAAE,EAAEvH,CAAC,IAAI2gP,MAAM,EAAE;cACzD,MAAMxwN,GAAG,GAAG\u002Fe,IAAI,CAAC\u002FQ,QAAQ,CAACL,CAAC,EAAEA,CAAC,GAAG2gP,MAAM,CAAC;cACxC,KAAK,IAAIziO,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyiO,MAAM,EAAEziO,CAAC,IAAI,CAAC,EAAE;gBAClC0iO,OAAO,CAACj9N,CAAC,EAAE,CAAC,GAAGwM,GAAG,CAACjS,CAAC,GAAG,CAAC,CAAC;gBACzB0iO,OAAO,CAACj9N,CAAC,EAAE,CAAC,GAAGwM,GAAG,CAACjS,CAAC,GAAG,CAAC,CAAC;gBACzB0iO,OAAO,CAACj9N,CAAC,EAAE,CAAC,GAAGwM,GAAG,CAACjS,CAAC,CAAC;cACvB;cACAyF,CAAC,IAAIk9N,QAAQ;YACf;YACAzvO,IAAI,GAAGwvO,OAAO;UAChB,CAAC,MAAM;YACL,KAAK,IAAI5gP,CAAC,GAAG,CAAC,EAAEuH,EAAE,GAAG6J,IAAI,CAAC3T,MAAM,EAAEuC,CAAC,GAAGuH,EAAE,EAAEvH,CAAC,IAAI,CAAC,EAAE;cAEhD,MAAMyrB,GAAG,GAAGra,IAAI,CAACpR,CAAC,CAAC;cACnBoR,IAAI,CAACpR,CAAC,CAAC,GAAGoR,IAAI,CAACpR,CAAC,GAAG,CAAC,CAAC;cACrBoR,IAAI,CAACpR,CAAC,GAAG,CAAC,CAAC,GAAGyrB,GAAG;YACnB;UACF;UACA;QACF;MACA,KAAKj7B,SAAS,CAACG,UAAU;QACvB4vP,WAAW,GAAG,EAAE;QAChBG,WAAW,GAAG,CAAC;QACfD,SAAS,GAAG,IAAI\u002F\u002FO,UAAU,CACxB,CAAC,GACC,CAAC,GACD,CAAC,GACD,CAAC,GACD,EACJ,CAAC;QACD,MAAMogP,IAAI,GAAG,IAAIx7B,QAAQ,CAACm7B,SAAS,CAACl\u002FO,MAAM,CAAC;QAC3C,IAAIG,WAAW,CAACP,cAAc,EAAE;UAC9B2\u002FO,IAAI,CAAC\u002F6B,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC;UACnC+6B,IAAI,CAAC\u002F6B,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC;UACnC+6B,IAAI,CAAC\u002F6B,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC;UACnC+6B,IAAI,CAAC\u002F6B,SAAS,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC;QACtC,CAAC,MAAM;UACL+6B,IAAI,CAAC\u002F6B,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC;UACnC+6B,IAAI,CAAC\u002F6B,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC;UACnC+6B,IAAI,CAAC\u002F6B,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC;UACnC+6B,IAAI,CAAC\u002F6B,SAAS,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC;QACtC;QACA;MACF;QACE,MAAM,IAAInpN,KAAK,CAAC,gBAAgB,CAAC;IACrC;IAEA,IAAIoD,CAAC,GAAG,CAAC;IACT,MAAM+gP,YAAY,GAAG,EAAE,GAAGN,SAAS,CAAChjP,MAAM;IAC1C,MAAMujP,UAAU,GAAG,EAAE,GAAGD,YAAY,GAAGP,UAAU,CAAC\u002FiP,MAAM,GAAG2T,IAAI,CAAC3T,MAAM;IACtE,MAAMwjP,OAAO,GAAG,IAAIvgP,UAAU,CAACsgP,UAAU,CAAC;IAC1C,MAAMF,IAAI,GAAG,IAAIx7B,QAAQ,CAAC27B,OAAO,CAAC1\u002FO,MAAM,CAAC;IAGzCu\u002FO,IAAI,CAAC96B,SAAS,CAAChmN,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC;IAC\u002FBA,CAAC,IAAI,CAAC;IAGN8gP,IAAI,CAAC\u002F6B,SAAS,CAAC\u002FlN,CAAC,EAAEghP,UAAU,EAAE,IAAI,CAAC;IACnChhP,CAAC,IAAI,CAAC;IAGN8gP,IAAI,CAAC\u002F6B,SAAS,CAAC\u002FlN,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;IAC1BA,CAAC,IAAI,CAAC;IAGN8gP,IAAI,CAAC\u002F6B,SAAS,CAAC\u002FlN,CAAC,EAAE,EAAE,GAAG+gP,YAAY,GAAGP,UAAU,CAAC\u002FiP,MAAM,EAAE,IAAI,CAAC;IAC9DuC,CAAC,IAAI,CAAC;IAGN8gP,IAAI,CAAC\u002F6B,SAAS,CAAC\u002FlN,CAAC,EAAE+gP,YAAY,EAAE,IAAI,CAAC;IACrC\u002FgP,CAAC,IAAI,CAAC;IAGN8gP,IAAI,CAACI,QAAQ,CAAClhP,CAAC,EAAEmX,KAAK,EAAE,IAAI,CAAC;IAC7BnX,CAAC,IAAI,CAAC;IAIN8gP,IAAI,CAACI,QAAQ,CAAClhP,CAAC,EAAE,CAACoX,MAAM,EAAE,IAAI,CAAC;IAC\u002FBpX,CAAC,IAAI,CAAC;IAGN8gP,IAAI,CAAC96B,SAAS,CAAChmN,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;IAC1BA,CAAC,IAAI,CAAC;IAGN8gP,IAAI,CAAC96B,SAAS,CAAChmN,CAAC,EAAEugP,WAAW,EAAE,IAAI,CAAC;IACpCvgP,CAAC,IAAI,CAAC;IAGN8gP,IAAI,CAAC\u002F6B,SAAS,CAAC\u002FlN,CAAC,EAAE0gP,WAAW,EAAE,IAAI,CAAC;IACpC1gP,CAAC,IAAI,CAAC;IAGN8gP,IAAI,CAAC\u002F6B,SAAS,CAAC\u002FlN,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;IAC1BA,CAAC,IAAI,CAAC;IAGN8gP,IAAI,CAACI,QAAQ,CAAClhP,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;IACzBA,CAAC,IAAI,CAAC;IAGN8gP,IAAI,CAACI,QAAQ,CAAClhP,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;IACzBA,CAAC,IAAI,CAAC;IAGN8gP,IAAI,CAAC\u002F6B,SAAS,CAAC\u002FlN,CAAC,EAAEwgP,UAAU,CAAC\u002FiP,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC;IAC9CuC,CAAC,IAAI,CAAC;IAGN8gP,IAAI,CAAC\u002F6B,SAAS,CAAC\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\u002FuO,MAAM,CAAC;QAC\u002FC+uO,KAAK,CAAC\u002FuO,MAAM,CAACnJ,KAAK,CAAC,CAAC;QACpBq4O,SAAS,GAAG,IAAI;QAChB;MACF,KAAK,aAAa;QAChBH,KAAK,CAACvxM,gBAAgB,GAAG,CAAC;QAC1BuxM,KAAK,CAACjqO,QAAQ,GAAG,CAAC;QAClB;IACJ;IAEA,IAAIjH,KAAK,GAAGpK,IAAI,CAAC9D,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC;IAClC,IAAImO,MAAM,GAAGrK,IAAI,CAAC9D,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC;IAEpC,IACE9M,MAAM,CAACC,SAAS,CAACisP,KAAK,CAAClxO,KAAK,CAAC,IAC7BkxO,KAAK,CAAClxO,KAAK,GAAG,CAAC,IACfhb,MAAM,CAACC,SAAS,CAACisP,KAAK,CAACjxO,MAAM,CAAC,IAC9BixO,KAAK,CAACjxO,MAAM,GAAG,CAAC,KACfixO,KAAK,CAAClxO,KAAK,KAAKA,KAAK,IAAIkxO,KAAK,CAACjxO,MAAM,KAAKA,MAAM,CAAC,EAClD;MACA1a,IAAI,CACF,uDAAuD,GACrD,mCACJ,CAAC;MACDya,KAAK,GAAGkxO,KAAK,CAAClxO,KAAK;MACnBC,MAAM,GAAGixO,KAAK,CAACjxO,MAAM;IACvB;IACA,IAAID,KAAK,GAAG,CAAC,IAAIC,MAAM,GAAG,CAAC,EAAE;MAC3B,MAAM,IAAI9X,WAAW,CAClB,wBAAuB6X,KAAM,eAAcC,MAAO,EACrD,CAAC;IACH;IACA,IAAI,CAACD,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,MAAM,GAAGA,MAAM;IAEpB,IAAI,CAAC29N,WAAW,GAAGhoO,IAAI,CAAC9D,GAAG,CAAC,GAAG,EAAE,aAAa,CAAC;IAC\u002FC,IAAI,CAACw\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\u002FO,SAAS,EAAE;UACd\u002FrP,IAAI,CAAC,6CAA6C,CAAC;QACrD,CAAC,MAAM;UACL,IAAI,CAAC2oC,IAAI,GAAG,IAAI+iN,QAAQ,CAAC;YACvBr9O,IAAI;YACJi7N,GAAG;YACHqiB,KAAK,EAAEhjN,IAAI;YACXijN,QAAQ;YACRrK,MAAM,EAAE,IAAI;YACZn9N,kBAAkB;YAClBX;UACF,CAAC,CAAC;QACJ;MACF,CAAC,MAAM;QAEL,IAAI,CAACklB,IAAI,GAAGA,IAAI;MAClB;IACF;EACF;EAMA,aAAa2jN,UAAUA,CAAC;IACtBj+O,IAAI;IACJi7N,GAAG;IACHqiB,KAAK;IACLC,QAAQ,GAAG,KAAK;IAChBxnO,kBAAkB;IAClBX;EACF,CAAC,EAAE;IACD,MAAMs4B,SAAS,GAAG4vM,KAAK;IACvB,IAAIY,SAAS,GAAG,IAAI;IACpB,IAAIC,QAAQ,GAAG,IAAI;IAEnB,MAAMX,KAAK,GAAGF,KAAK,CAACt7O,IAAI,CAAC9D,GAAG,CAAC,OAAO,CAAC;IACrC,MAAMo8B,IAAI,GAAGgjN,KAAK,CAACt7O,IAAI,CAAC9D,GAAG,CAAC,MAAM,CAAC;IAEnC,IAAIs\u002FO,KAAK,EAAE;MACT,IAAIA,KAAK,YAAYx5O,UAAU,EAAE;QAC\u002FBk6O,SAAS,GAAGV,KAAK;MACnB,CAAC,MAAM;QACL7rP,IAAI,CAAC,4BAA4B,CAAC;MACpC;IACF,CAAC,MAAM,IAAI2oC,IAAI,EAAE;MACf,IAAIA,IAAI,YAAYt2B,UAAU,IAAIzM,KAAK,CAACyJ,OAAO,CAACs5B,IAAI,CAAC,EAAE;QACrD6jN,QAAQ,GAAG7jN,IAAI;MACjB,CAAC,MAAM;QACL3oC,IAAI,CAAC,2BAA2B,CAAC;MACnC;IACF;IAEA,OAAO,IAAI0rP,QAAQ,CAAC;MAClBr9O,IAAI;MACJi7N,GAAG;MACHqiB,KAAK,EAAE5vM,SAAS;MAChB6vM,QAAQ;MACRC,KAAK,EAAEU,SAAS;MAChB5jN,IAAI,EAAE6jN,QAAQ;MACdpoO,kBAAkB;MAClBX;IACF,CAAC,CAAC;EACJ;EAEA,OAAOgpO,aAAaA,CAAC;IACnBC,QAAQ;IACRjyO,KAAK;IACLC,MAAM;IACNiyO,uBAAuB;IACvBh\u002FM,aAAa;IACb0qM;EACF,CAAC,EAAE;IAMD,MAAMuU,cAAc,GAAG,CAAEnyO,KAAK,GAAG,CAAC,IAAK,CAAC,IAAIC,MAAM;IAClD,MAAMk3M,YAAY,GAAG86B,QAAQ,CAACj4O,UAAU;IACxC,MAAMo4O,YAAY,GAAGD,cAAc,KAAKh7B,YAAY;IACpD,IAAIl9M,IAAI,EAAEpR,CAAC;IAEX,IAAIqpP,uBAAuB,KAAK,CAACh\u002FM,aAAa,IAAIk\u002FM,YAAY,CAAC,EAAE;MAG\u002FDn4O,IAAI,GAAGg4O,QAAQ;IACjB,CAAC,MAAM,IAAI,CAAC\u002F+M,aAAa,EAAE;MACzBj5B,IAAI,GAAG,IAAI1Q,UAAU,CAAC0oP,QAAQ,CAAC;IACjC,CAAC,MAAM;MACLh4O,IAAI,GAAG,IAAI1Q,UAAU,CAAC4oP,cAAc,CAAC;MACrCl4O,IAAI,CAAChF,GAAG,CAACg9O,QAAQ,CAAC;MAClBh4O,IAAI,CAAC1Z,IAAI,CAAC,IAAI,EAAE42N,YAAY,CAAC;IAC\u002FB;IAMA,IAAIjkL,aAAa,EAAE;MACjB,KAAKrqC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGsuN,YAAY,EAAEtuN,CAAC,EAAE,EAAE;QACjCoR,IAAI,CAACpR,CAAC,CAAC,IAAI,IAAI;MACjB;IACF;IAEA,OAAO;MAAEoR,IAAI;MAAE+F,KAAK;MAAEC,MAAM;MAAE29N;IAAY,CAAC;EAC7C;EAEA,aAAayU,UAAUA,CAAC;IACtBJ,QAAQ;IACRjyO,KAAK;IACLC,MAAM;IACNiyO,uBAAuB;IACvBh\u002FM,aAAa;IACb0qM,WAAW;IACXpzO,0BAA0B,GAAG;EAC\u002FB,CAAC,EAAE;IACD,MAAM8nP,mBAAmB,GACvBtyO,KAAK,KAAK,CAAC,IACXC,MAAM,KAAK,CAAC,IACZizB,aAAa,MAAM++M,QAAQ,CAAC3rP,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE2rP,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;IAEpE,IAAIK,mBAAmB,EAAE;MACvB,OAAO;QAAEA;MAAoB,CAAC;IAChC;IAEA,IAAI9nP,0BAA0B,EAAE;MAC9B,IAAIo8O,YAAY,CAACK,gBAAgB,CAACjnO,KAAK,EAAEC,MAAM,CAAC,EAAE;QAChD,MAAMhG,IAAI,GAAG,IAAIoN,iBAAiB,CAACrH,KAAK,GAAGC,MAAM,GAAG,CAAC,CAAC;QACtD6yB,0BAA0B,CAAC;UACzB\u002FsB,GAAG,EAAEksO,QAAQ;UACbjsO,IAAI,EAAE\u002FL,IAAI;UACV+F,KAAK;UACLC,MAAM;UACNgzB,aAAa,EAAE,CAAC;UAChBC;QACF,CAAC,CAAC;QACF,OAAO0zM,YAAY,CAACwB,WAAW,CAAC;UAC9Bv1M,IAAI,EAAEx5C,SAAS,CAACG,UAAU;UAC1BygB,IAAI;UACJ+F,KAAK;UACLC,MAAM;UACN29N;QACF,CAAC,CAAC;MACJ;MAEA,MAAM+J,MAAM,GAAG,IAAIl9O,eAAe,CAACuV,KAAK,EAAEC,MAAM,CAAC;MACjD,MAAM2nO,GAAG,GAAGD,MAAM,CAACE,UAAU,CAAC,IAAI,CAAC;MACnC,MAAMhB,OAAO,GAAGe,GAAG,CAAC2K,eAAe,CAACvyO,KAAK,EAAEC,MAAM,CAAC;MAClD6yB,0BAA0B,CAAC;QACzB\u002FsB,GAAG,EAAEksO,QAAQ;QACbjsO,IAAI,EAAE6gO,OAAO,CAAC5sO,IAAI;QAClB+F,KAAK;QACLC,MAAM;QACNgzB,aAAa,EAAE,CAAC;QAChBC;MACF,CAAC,CAAC;MAEF00M,GAAG,CAAC8E,YAAY,CAAC7F,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;MAC\u002FB,MAAM\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\u002FB6rO,QAAQ,GAAG\u002FpP,CAAC,IAAI8pP,QAAQ,GAAG,CAAC,CAAC,CAAC;QAC9BE,QAAQ,GAAGhqP,CAAC,GAAG8pP,QAAQ;QAGvB,OAAO9pP,CAAC,GAAG+pP,QAAQ,EAAE;UACnB1gP,GAAG,GAAG9H,MAAM,CAACsoP,SAAS,EAAE,CAAC;UACzB90M,MAAM,CAAC\u002F0C,CAAC,CAAC,GAAIqJ,GAAG,IAAI,CAAC,GAAI,CAAC;UAC1B0rC,MAAM,CAAC\u002F0C,CAAC,GAAG,CAAC,CAAC,GAAIqJ,GAAG,IAAI,CAAC,GAAI,CAAC;UAC9B0rC,MAAM,CAAC\u002F0C,CAAC,GAAG,CAAC,CAAC,GAAIqJ,GAAG,IAAI,CAAC,GAAI,CAAC;UAC9B0rC,MAAM,CAAC\u002F0C,CAAC,GAAG,CAAC,CAAC,GAAIqJ,GAAG,IAAI,CAAC,GAAI,CAAC;UAC9B0rC,MAAM,CAAC\u002F0C,CAAC,GAAG,CAAC,CAAC,GAAIqJ,GAAG,IAAI,CAAC,GAAI,CAAC;UAC9B0rC,MAAM,CAAC\u002F0C,CAAC,GAAG,CAAC,CAAC,GAAIqJ,GAAG,IAAI,CAAC,GAAI,CAAC;UAC9B0rC,MAAM,CAAC\u002F0C,CAAC,GAAG,CAAC,CAAC,GAAIqJ,GAAG,IAAI,CAAC,GAAI,CAAC;UAC9B0rC,MAAM,CAAC\u002F0C,CAAC,GAAG,CAAC,CAAC,GAAGqJ,GAAG,GAAG,CAAC;UACvBrJ,CAAC,IAAI,CAAC;QACR;QAGA,IAAIA,CAAC,GAAGgqP,QAAQ,EAAE;UAChB3gP,GAAG,GAAG9H,MAAM,CAACsoP,SAAS,EAAE,CAAC;UACzBxkN,IAAI,GAAG,GAAG;UACV,OAAOrlC,CAAC,GAAGgqP,QAAQ,EAAE;YACnBj1M,MAAM,CAAC\u002F0C,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAEqJ,GAAG,GAAGg8B,IAAI,CAAC;YAC7BA,IAAI,KAAK,CAAC;UACZ;QACF;MACF;IACF,CAAC,MAAM;MAEL,IAAIxmB,IAAI,GAAG,CAAC;MACZxV,GAAG,GAAG,CAAC;MACP,KAAKrJ,CAAC,GAAG,CAAC,EAAEuH,EAAE,GAAG9J,MAAM,EAAEuC,CAAC,GAAGuH,EAAE,EAAE,EAAEvH,CAAC,EAAE;QACpC,IAAIA,CAAC,GAAG8pP,QAAQ,KAAK,CAAC,EAAE;UACtBzgP,GAAG,GAAG,CAAC;UACPwV,IAAI,GAAG,CAAC;QACV;QAEA,OAAOA,IAAI,GAAGM,GAAG,EAAE;UACjB9V,GAAG,GAAIA,GAAG,IAAI,CAAC,GAAI9H,MAAM,CAACsoP,SAAS,EAAE,CAAC;UACtChrO,IAAI,IAAI,CAAC;QACX;QAEA,MAAMorO,aAAa,GAAGprO,IAAI,GAAGM,GAAG;QAChC,IAAIlhB,KAAK,GAAGoL,GAAG,IAAI4gP,aAAa;QAChC,IAAIhsP,KAAK,GAAG,CAAC,EAAE;UACbA,KAAK,GAAG,CAAC;QACX,CAAC,MAAM,IAAIA,KAAK,GAAGiG,GAAG,EAAE;UACtBjG,KAAK,GAAGiG,GAAG;QACb;QACA6wC,MAAM,CAAC\u002F0C,CAAC,CAAC,GAAG\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\u002FO,WAAW,CAAC,sBAAsB,CAAC;MAC\u002FC;IACF;IAEA,IAAI8qP,QAAQ,EAAE;MACZ,KAAKpqP,CAAC,GAAG,CAAC,EAAEke,CAAC,GAAG,CAAC,EAAE3W,EAAE,GAAG4P,KAAK,GAAGoI,YAAY,EAAEvf,CAAC,GAAGuH,EAAE,EAAE,EAAEvH,CAAC,EAAEke,CAAC,IAAI,CAAC,EAAE;QACjEisO,OAAO,CAACjsO,CAAC,CAAC,GAAGksO,QAAQ,CAACpqP,CAAC,CAAC;MAC1B;IACF,CAAC,MAAM;MAEL,KAAKA,CAAC,GAAG,CAAC,EAAEke,CAAC,GAAG,CAAC,EAAE3W,EAAE,GAAG4P,KAAK,GAAGoI,YAAY,EAAEvf,CAAC,GAAGuH,EAAE,EAAE,EAAEvH,CAAC,EAAEke,CAAC,IAAI,CAAC,EAAE;QACjEisO,OAAO,CAACjsO,CAAC,CAAC,GAAG,GAAG;MAClB;IACF;EACF;EAEAwsO,YAAYA,CAACnpP,MAAM,EAAE4V,KAAK,EAAEC,MAAM,EAAE;IAOlC,MAAMsxO,KAAK,GAAG,IAAI,CAACH,KAAK,EAAEG,KAAK;IAC\u002FB,IAAI,CAACA,KAAK,EAAE;MACV;IACF;IACA,MAAMiC,QAAQ,GAAG,IAAI,CAAC9hB,UAAU,CAACxqN,MAAM,CAACqqO,KAAK,EAAE,CAAC,CAAC;IACjD,MAAMkC,MAAM,GAAGD,QAAQ,CAAC,CAAC,CAAC;IAC1B,MAAME,MAAM,GAAGF,QAAQ,CAAC,CAAC,CAAC;IAC1B,MAAMG,MAAM,GAAGH,QAAQ,CAAC,CAAC,CAAC;IAC1B,MAAMltP,MAAM,GAAG0Z,KAAK,GAAGC,MAAM,GAAG,CAAC;IACjC,KAAK,IAAIpX,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGvC,MAAM,EAAEuC,CAAC,IAAI,CAAC,EAAE;MAClC,MAAMm+F,KAAK,GAAG58F,MAAM,CAACvB,CAAC,GAAG,CAAC,CAAC;MAC3B,IAAIm+F,KAAK,KAAK,CAAC,EAAE;QAGf58F,MAAM,CAACvB,CAAC,CAAC,GAAG,GAAG;QACfuB,MAAM,CAACvB,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG;QACnBuB,MAAM,CAACvB,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG;QACnB;MACF;MACA,MAAM2jB,CAAC,GAAG,GAAG,GAAGw6E,KAAK;MACrB58F,MAAM,CAACvB,CAAC,CAAC,GAAG,CAACuB,MAAM,CAACvB,CAAC,CAAC,GAAG4qP,MAAM,IAAIjnO,CAAC,GAAGinO,MAAM;MAC7CrpP,MAAM,CAACvB,CAAC,GAAG,CAAC,CAAC,GAAG,CAACuB,MAAM,CAACvB,CAAC,GAAG,CAAC,CAAC,GAAG6qP,MAAM,IAAIlnO,CAAC,GAAGknO,MAAM;MACrDtpP,MAAM,CAACvB,CAAC,GAAG,CAAC,CAAC,GAAG,CAACuB,MAAM,CAACvB,CAAC,GAAG,CAAC,CAAC,GAAG8qP,MAAM,IAAInnO,CAAC,GAAGmnO,MAAM;IACvD;EACF;EAEA,MAAMpB,eAAeA,CAACnzM,SAAS,GAAG,KAAK,EAAE50C,0BAA0B,GAAG,KAAK,EAAE;IAC3E,MAAMw1C,SAAS,GAAG,IAAI,CAACA,SAAS;IAChC,MAAMC,UAAU,GAAG,IAAI,CAACA,UAAU;IAClC,MAAM4mM,OAAO,GAAG;MACd7mO,KAAK,EAAEggC,SAAS;MAChB\u002F\u002FB,MAAM,EAAEggC,UAAU;MAClB29L,WAAW,EAAE,IAAI,CAACA,WAAW;MAC7B\u002FqM,IAAI,EAAE,CAAC;MACP54B,IAAI,EAAE;IAER,CAAC;IAED,MAAMgN,QAAQ,GAAG,IAAI,CAACA,QAAQ;IAC9B,MAAMiB,aAAa,GAAG,IAAI,CAAClI,KAAK;IAChC,MAAMmI,cAAc,GAAG,IAAI,CAAClI,MAAM;IAClC,MAAM+H,GAAG,GAAG,IAAI,CAACA,GAAG;IAGpB,MAAM+kC,QAAQ,GAAI7kC,aAAa,GAAGjB,QAAQ,GAAGe,GAAG,GAAG,CAAC,IAAK,CAAC;IAC1D,MAAM4rO,aAAa,GACjBppP,0BAA0B,IAC1Bo8O,YAAY,CAACK,gBAAgB,CAACjnM,SAAS,EAAEC,UAAU,CAAC;IAEtD,IAAI,CAACb,SAAS,EAAE;MAQd,IAAIvM,IAAI;MACR,IAAI,IAAI,CAAC6+L,UAAU,CAAClqO,IAAI,KAAK,YAAY,IAAIwgB,GAAG,KAAK,CAAC,EAAE;QACtD6qB,IAAI,GAAGx5C,SAAS,CAACC,cAAc;MACjC,CAAC,MAAM,IACL,IAAI,CAACo4O,UAAU,CAAClqO,IAAI,KAAK,WAAW,IACpCwgB,GAAG,KAAK,CAAC,IACT,CAAC,IAAI,CAACwpO,WAAW,EACjB;QACA3+M,IAAI,GAAGx5C,SAAS,CAACE,SAAS;MAC5B;MACA,IACEs5C,IAAI,IACJ,CAAC,IAAI,CAACu+M,KAAK,IACX,CAAC,IAAI,CAACljN,IAAI,IACV8R,SAAS,KAAK93B,aAAa,IAC3B+3B,UAAU,KAAK93B,cAAc,EAC7B;QACA,MAAMlO,IAAI,GAAG,IAAI,CAAC45O,aAAa,CAAC1rO,cAAc,GAAG4kC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC9D,IAAIviD,0BAA0B,EAAE;UAC9B,IAAIopP,aAAa,EAAE;YACjB,OAAOhN,YAAY,CAACwB,WAAW,CAC7B;cACEnuO,IAAI;cACJ44B,IAAI;cACJ7yB,KAAK,EAAEggC,SAAS;cAChB\u002F\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\u002F\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\u002FB,MAAM\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\u002F\u002FO,OAAO,GAAG;EACZ,CAAC,EAAE;IACD,IAAI,CAAC2N,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACmiP,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACt2O,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAACwmO,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAAC+P,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAACC,gBAAgB,GAAGA,gBAAgB;IACxC,IAAI,CAACC,qBAAqB,GAAGA,qBAAqB;IAClD,IAAI,CAACC,gBAAgB,GAAGA,gBAAgB;IACxC,IAAI,CAACnQ,eAAe,GAAGA,eAAe;IACtC,IAAI,CAAC\u002F\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\u002FB,CAAC,CAAC,OAAO\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\u002FB,gBAAgB,CAC1B\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\u002FnQ,IAAI,EAAE+nQ,mBAAmB;QACzBj\u002FN,EAAE,EAAE6xN,eAAe,CAACr8O;MACtB,CAAC;IACH,CAAC,MAAM,IAAIypP,mBAAmB,KAAK,MAAM,EAAE;MACzC,MAAMC,UAAU,GAAGrN,eAAe,CAACr+O,GAAG,CAAC,IAAI,CAAC;MAC5C,IAAI3G,KAAK,CAACyJ,OAAO,CAAC4oP,UAAU,CAAC,EAAE;QAC7B,MAAM9uO,MAAM,GAAG,EAAE;QACjB,IAAI,CAACsuO,0BAA0B,CAACQ,UAAU,EAAE,CAAC,EAAE9uO,MAAM,CAAC;QACtD,IAAIA,MAAM,CAACpoB,MAAM,GAAG,CAAC,EAAE;UACrB,OAAO;YACL9Q,IAAI,EAAE,MAAM;YACZgoQ,UAAU,EAAE9uO;UACd,CAAC;QACH;MACF;MAEA,MAAM+uO,qBAAqB,GAAGtN,eAAe,CAACr+O,GAAG,CAAC,MAAM,CAAC;MACzD,IACE3G,KAAK,CAACyJ,OAAO,CAAC6oP,qBAAqB,CAAC,IACpCA,qBAAqB,YAAY9pP,IAAI,EACrC;QACA,MAAM+pP,QAAQ,GAAG,EAAE;QACnB,IAAIvyP,KAAK,CAACyJ,OAAO,CAAC6oP,qBAAqB,CAAC,EAAE;UACxC,KAAK,MAAME,GAAG,IAAIF,qBAAqB,EAAE;YACvCC,QAAQ,CAACv0P,IAAI,CAACw0P,GAAG,CAACryP,QAAQ,CAAC,CAAC,CAAC;UAC\u002FB;QACF,CAAC,MAAM;UAELoyP,QAAQ,CAACv0P,IAAI,CAACs0P,qBAAqB,CAAC3pP,KAAK,CAAC;QAC5C;QAEA,OAAO;UACLte,IAAI,EAAE+nQ,mBAAmB;UACzB30C,GAAG,EAAE80C,QAAQ;UACbE,MAAM,EACJzN,eAAe,CAACr+O,GAAG,CAAC,GAAG,CAAC,YAAYyB,IAAI,GACpC48O,eAAe,CAACr+O,GAAG,CAAC,GAAG,CAAC,CAACtK,IAAI,GAC7B,IAAI;UACVg2P,UAAU,EAAE;QACd,CAAC;MACH,CAAC,MAAM,IAAIC,qBAAqB,YAAYlpP,GAAG,EAAE;QAC\u002FC,OAAO;UACL\u002Fe,IAAI,EAAE+nQ,mBAAmB;UACzBj\u002FN,EAAE,EAAEm\u002FN,qBAAqB,CAACnyP,QAAQ,CAAC;QACrC,CAAC;MACH;IACF;IACA,OAAO,IAAI;EACb;EAEA+sP,eAAeA,CAAC;IACdl2O,MAAM;IACNw1O,IAAI;IACJjuO,SAAS;IACT+rN,YAAY;IACZmiB,YAAY,GAAG,IAAI;IACnB6C,gBAAgB,GAAG;EACrB,CAAC,EAAE;IAGD\u002FwO,SAAS,KAAK\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\u002FB,IAAI,CAACg5M,UAAU,CAAC\u002F4O,IAAI,CAAC,CAAC,CAAC,EAAEk3O,YAAY,CAACxpM,KAAK,CAAC;YACtD;UACF,KAAK1wD,GAAG,CAAC6C,cAAc;YACrB,IAAI,CAACq3P,YAAY,CAACxpM,KAAK,CAAC+5J,IAAI,EAAE;cAC5B1nK,IAAI,CAACq5M,eAAe,CAAClC,YAAY,CAACxpM,KAAK,CAAC;cACxC;YACF;YACA,IAAIqvM,cAAc,GAAG,EAAE;YACvB,IAAIrvM,KAAK,GAAGwpM,YAAY,CAACxpM,KAAK;YAC9B,KAAK,MAAMsvM,OAAO,IAAIh9O,IAAI,CAAC,CAAC,CAAC,EAAE;cAC7B,IAAI,OAAOg9O,OAAO,KAAK,QAAQ,EAAE;gBAC\u002FBD,cAAc,CAAC71P,IAAI,CAAC,GAAG64C,IAAI,CAACg5M,UAAU,CAACiE,OAAO,EAAEtvM,KAAK,CAAC,CAAC;cACzD,CAAC,MAAM,IAAI,OAAOsvM,OAAO,KAAK,QAAQ,EAAE;gBACtCD,cAAc,CAAC71P,IAAI,CAAC81P,OAAO,CAAC;cAC9B;YACF;YACAh9O,IAAI,CAAC,CAAC,CAAC,GAAG+8O,cAAc;YACxB\u002FyC,EAAE,GAAGhtN,GAAG,CAAC4C,QAAQ;YACjB;UACF,KAAK5C,GAAG,CAAC8C,gBAAgB;YACvB,IAAI,CAACo3P,YAAY,CAACxpM,KAAK,CAAC+5J,IAAI,EAAE;cAC5B1nK,IAAI,CAACq5M,eAAe,CAAClC,YAAY,CAACxpM,KAAK,CAAC;cACxC;YACF;YACA8lL,YAAY,CAACwa,KAAK,CAAChxP,GAAG,CAAC2C,QAAQ,CAAC;YAChCqgB,IAAI,CAAC,CAAC,CAAC,GAAG+\u002FB,IAAI,CAACg5M,UAAU,CAAC\u002F4O,IAAI,CAAC,CAAC,CAAC,EAAEk3O,YAAY,CAACxpM,KAAK,CAAC;YACtDs8J,EAAE,GAAGhtN,GAAG,CAAC4C,QAAQ;YACjB;UACF,KAAK5C,GAAG,CAAC+C,0BAA0B;YACjC,IAAI,CAACm3P,YAAY,CAACxpM,KAAK,CAAC+5J,IAAI,EAAE;cAC5B1nK,IAAI,CAACq5M,eAAe,CAAClC,YAAY,CAACxpM,KAAK,CAAC;cACxC;YACF;YACA8lL,YAAY,CAACwa,KAAK,CAAChxP,GAAG,CAAC2C,QAAQ,CAAC;YAChC6zO,YAAY,CAACwa,KAAK,CAAChxP,GAAG,CAACkC,cAAc,EAAE,CAAC8gB,IAAI,CAAC+T,KAAK,CAAC,CAAC,CAAC,CAAC;YACtDy\u002FM,YAAY,CAACwa,KAAK,CAAChxP,GAAG,CAACiC,cAAc,EAAE,CAAC+gB,IAAI,CAAC+T,KAAK,CAAC,CAAC,CAAC,CAAC;YACtD\u002FT,IAAI,CAAC,CAAC,CAAC,GAAG+\u002FB,IAAI,CAACg5M,UAAU,CAAC\u002F4O,IAAI,CAAC,CAAC,CAAC,EAAEk3O,YAAY,CAACxpM,KAAK,CAAC;YACtDs8J,EAAE,GAAGhtN,GAAG,CAAC4C,QAAQ;YACjB;UACF,KAAK5C,GAAG,CAACsC,oBAAoB;YAC3B43P,YAAY,CAACxpM,KAAK,CAACurM,iBAAiB,GAAGj5O,IAAI,CAAC,CAAC,CAAC;YAC9C;UAEF,KAAKhjB,GAAG,CAACmD,iBAAiB;YAAE;cAC1B,MAAM0nB,gBAAgB,GAAG9C,UAAU,CAACoC,SAAS,CAC3CnH,IAAI,CAAC,CAAC,CAAC,EACPrO,IAAI,EACJoV,oBACF,CAAC;cACD,IAAIc,gBAAgB,EAAE;gBACpBqvO,YAAY,CAACxpM,KAAK,CAACwrM,cAAc,GAAGrxO,gBAAgB;gBACpD;cACF;cAEAkO,IAAI,CACFgqB,IAAI,CACDm2M,eAAe,CAAC;gBACf1uO,EAAE,EAAExH,IAAI,CAAC,CAAC,CAAC;gBACXyH,SAAS;gBACTV;cACF,CAAC,CAAC,CACDrF,IAAI,CAAC,UAAU+tN,UAAU,EAAE;gBAC1B,IAAIA,UAAU,EAAE;kBACdynB,YAAY,CAACxpM,KAAK,CAACwrM,cAAc,GAAGzpB,UAAU;gBAChD;cACF,CAAC,CACL,CAAC;cACD;YACF;UACA,KAAKzyO,GAAG,CAACkD,mBAAmB;YAAE;cAC5B,MAAM2nB,gBAAgB,GAAG9C,UAAU,CAACoC,SAAS,CAC3CnH,IAAI,CAAC,CAAC,CAAC,EACPrO,IAAI,EACJoV,oBACF,CAAC;cACD,IAAIc,gBAAgB,EAAE;gBACpBqvO,YAAY,CAACxpM,KAAK,CAACuvM,gBAAgB,GAAGp1O,gBAAgB;gBACtD;cACF;cAEAkO,IAAI,CACFgqB,IAAI,CACDm2M,eAAe,CAAC;gBACf1uO,EAAE,EAAExH,IAAI,CAAC,CAAC,CAAC;gBACXyH,SAAS;gBACTV;cACF,CAAC,CAAC,CACDrF,IAAI,CAAC,UAAU+tN,UAAU,EAAE;gBAC1B,IAAIA,UAAU,EAAE;kBACdynB,YAAY,CAACxpM,KAAK,CAACuvM,gBAAgB,GAAGxtB,UAAU;gBAClD;cACF,CAAC,CACL,CAAC;cACD;YACF;UACA,KAAKzyO,GAAG,CAACsD,YAAY;YACnBknB,EAAE,GAAG0vO,YAAY,CAACxpM,KAAK,CAACwrM,cAAc;YACtCl5O,IAAI,GAAGwH,EAAE,CAACvC,MAAM,CAACjF,IAAI,EAAE,CAAC,CAAC;YACzBgqM,EAAE,GAAGhtN,GAAG,CAAC2D,eAAe;YACxB;UACF,KAAK3D,GAAG,CAACoD,cAAc;YACrBonB,EAAE,GAAG0vO,YAAY,CAACxpM,KAAK,CAACuvM,gBAAgB;YACxCj9O,IAAI,GAAGwH,EAAE,CAACvC,MAAM,CAACjF,IAAI,EAAE,CAAC,CAAC;YACzBgqM,EAAE,GAAGhtN,GAAG,CAAC0D,iBAAiB;YAC1B;UACF,KAAK1D,GAAG,CAACyD,WAAW;YAClBy2P,YAAY,CAACxpM,KAAK,CAACwrM,cAAc,GAAGn0O,UAAU,CAACgD,UAAU,CAACC,IAAI;YAC9DhI,IAAI,GAAG+E,UAAU,CAACgD,UAAU,CAACC,IAAI,CAAC\u002FC,MAAM,CAACjF,IAAI,EAAE,CAAC,CAAC;YACjDgqM,EAAE,GAAGhtN,GAAG,CAAC2D,eAAe;YACxB;UACF,KAAK3D,GAAG,CAACwD,aAAa;YACpB02P,YAAY,CAACxpM,KAAK,CAACuvM,gBAAgB,GAAGl4O,UAAU,CAACgD,UAAU,CAACC,IAAI;YAChEhI,IAAI,GAAG+E,UAAU,CAACgD,UAAU,CAACC,IAAI,CAAC\u002FC,MAAM,CAACjF,IAAI,EAAE,CAAC,CAAC;YACjDgqM,EAAE,GAAGhtN,GAAG,CAAC0D,iBAAiB;YAC1B;UACF,KAAK1D,GAAG,CAAC6D,gBAAgB;YACvBq2P,YAAY,CAACxpM,KAAK,CAACwrM,cAAc,GAAGn0O,UAAU,CAACgD,UAAU,CAACE,IAAI;YAC9DjI,IAAI,GAAG+E,UAAU,CAACgD,UAAU,CAACE,IAAI,CAAChD,MAAM,CAACjF,IAAI,EAAE,CAAC,CAAC;YACjDgqM,EAAE,GAAGhtN,GAAG,CAAC2D,eAAe;YACxB;UACF,KAAK3D,GAAG,CAAC4D,kBAAkB;YACzBs2P,YAAY,CAACxpM,KAAK,CAACuvM,gBAAgB,GAAGl4O,UAAU,CAACgD,UAAU,CAACE,IAAI;YAChEjI,IAAI,GAAG+E,UAAU,CAACgD,UAAU,CAACE,IAAI,CAAChD,MAAM,CAACjF,IAAI,EAAE,CAAC,CAAC;YACjDgqM,EAAE,GAAGhtN,GAAG,CAAC0D,iBAAiB;YAC1B;UACF,KAAK1D,GAAG,CAAC2D,eAAe;YACtBu2P,YAAY,CAACxpM,KAAK,CAACwrM,cAAc,GAAGn0O,UAAU,CAACgD,UAAU,CAAC5C,GAAG;YAC7DnF,IAAI,GAAG+E,UAAU,CAACgD,UAAU,CAAC5C,GAAG,CAACF,MAAM,CAACjF,IAAI,EAAE,CAAC,CAAC;YAChD;UACF,KAAKhjB,GAAG,CAAC0D,iBAAiB;YACxBw2P,YAAY,CAACxpM,KAAK,CAACuvM,gBAAgB,GAAGl4O,UAAU,CAACgD,UAAU,CAAC5C,GAAG;YAC\u002FDnF,IAAI,GAAG+E,UAAU,CAACgD,UAAU,CAAC5C,GAAG,CAACF,MAAM,CAACjF,IAAI,EAAE,CAAC,CAAC;YAChD;UACF,KAAKhjB,GAAG,CAACuD,aAAa;YACpBinB,EAAE,GAAG0vO,YAAY,CAACxpM,KAAK,CAACwrM,cAAc;YACtC,IAAI1xO,EAAE,CAACjiB,IAAI,KAAK,SAAS,EAAE;cACzBwwB,IAAI,CACFgqB,IAAI,CAAC46M,YAAY,CACfnnB,YAAY,EACZx2O,GAAG,CAACuD,aAAa,EACjByf,IAAI,EACJwH,EAAE,EACFye,QAAQ,EACRxe,SAAS,EACTiuO,IAAI,EACJ3uO,oBAAoB,EACpBixO,uBAAuB,EACvByC,wBACF,CACF,CAAC;cACD;YACF;YACAz6O,IAAI,GAAGwH,EAAE,CAACvC,MAAM,CAACjF,IAAI,EAAE,CAAC,CAAC;YACzBgqM,EAAE,GAAGhtN,GAAG,CAAC2D,eAAe;YACxB;UACF,KAAK3D,GAAG,CAACqD,eAAe;YACtBmnB,EAAE,GAAG0vO,YAAY,CAACxpM,KAAK,CAACuvM,gBAAgB;YACxC,IAAIz1O,EAAE,CAACjiB,IAAI,KAAK,SAAS,EAAE;cACzBwwB,IAAI,CACFgqB,IAAI,CAAC46M,YAAY,CACfnnB,YAAY,EACZx2O,GAAG,CAACqD,eAAe,EACnB2f,IAAI,EACJwH,EAAE,EACFye,QAAQ,EACRxe,SAAS,EACTiuO,IAAI,EACJ3uO,oBAAoB,EACpBixO,uBAAuB,EACvByC,wBACF,CACF,CAAC;cACD;YACF;YACAz6O,IAAI,GAAGwH,EAAE,CAACvC,MAAM,CAACjF,IAAI,EAAE,CAAC,CAAC;YACzBgqM,EAAE,GAAGhtN,GAAG,CAAC0D,iBAAiB;YAC1B;UAEF,KAAK1D,GAAG,CAAC8D,WAAW;YAClB,IAAIo8P,UAAU,GAAGz1O,SAAS,CAAC5X,GAAG,CAAC,SAAS,CAAC;YACzC,IAAI,CAACqtP,UAAU,EAAE;cACf,MAAM,IAAIh3P,WAAW,CAAC,2BAA2B,CAAC;YACpD;YAEA,IAAIymO,OAAO,GAAGuwB,UAAU,CAACrtP,GAAG,CAACmQ,IAAI,CAAC,CAAC,CAAC,CAACza,IAAI,CAAC;YAC1C,IAAI,CAAConO,OAAO,EAAE;cACZ,MAAM,IAAIzmO,WAAW,CAAC,yBAAyB,CAAC;YAClD;YACA,MAAMi3P,SAAS,GAAGp9M,IAAI,CAAC2sL,YAAY,CAAC;cAClCC,OAAO;cACPllN,SAAS;cACTV,oBAAoB;cACpB0zO;YACF,CAAC,CAAC;YACF,IAAI,CAAC0C,SAAS,EAAE;cACd;YACF;YACAn9O,IAAI,GAAG,CAACm9O,SAAS,CAAC;YAClBnzC,EAAE,GAAGhtN,GAAG,CAAC8D,WAAW;YACpB;UACF,KAAK9D,GAAG,CAACS,SAAS;YAChBg\u002FP,WAAW,GAAGz8O,IAAI,CAAC,CAAC,CAAC,YAAY1O,IAAI;YACrC\u002FL,IAAI,GAAGya,IAAI,CAAC,CAAC,CAAC,CAACza,IAAI;YAEnB,IAAIk3P,WAAW,EAAE;cACf,MAAMW,cAAc,GAAG9D,gBAAgB,CAAChyO,SAAS,CAAC\u002FhB,IAAI,CAAC;cACvD,IAAI63P,cAAc,EAAE;gBAClB,IAAIA,cAAc,CAAC\u002F4P,MAAM,GAAG,CAAC,EAAE;kBAC7BmvO,YAAY,CAACwa,KAAK,CAAChxP,GAAG,CAACS,SAAS,EAAE,CAAC2\u002FP,cAAc,CAAC,CAAC;gBACrD;gBACAp9O,IAAI,GAAG,IAAI;gBACX;cACF;YACF;YAEA+V,IAAI,CACF,IAAIpV,OAAO,CAAC,UAAU08O,aAAa,EAAEC,YAAY,EAAE;cACjD,IAAI,CAACb,WAAW,EAAE;gBAChB,MAAM,IAAIv2P,WAAW,CAAC,qCAAqC,CAAC;cAC9D;cAEA,MAAMq3P,SAAS,GAAG91O,SAAS,CAAC5X,GAAG,CAAC,WAAW,CAAC;cAC5C,IAAI,EAAE0tP,SAAS,YAAY7rP,IAAI,CAAC,EAAE;gBAChC,MAAM,IAAIxL,WAAW,CAAC,mCAAmC,CAAC;cAC5D;cAEA,MAAMmzP,MAAM,GAAGkE,SAAS,CAAC1tP,GAAG,CAACtK,IAAI,CAAC;cAIlC,IAAI,EAAE8zP,MAAM,YAAY3nP,IAAI,CAAC,EAAE;gBAC7B,MAAM,IAAIxL,WAAW,CAAC,gCAAgC,CAAC;cACzD;cAEA65C,IAAI,CACDtiD,SAAS,CAAC;gBACTgqB,SAAS;gBACT4xO,MAAM;gBACN7lB,YAAY;gBACZ1sN,QAAQ,EAAEvhB,IAAI;gBACdmwP,IAAI;gBACJwB,YAAY;gBACZoC,gBAAgB;gBAChBvyO;cACF,CAAC,CAAC,CACDrF,IAAI,CAAC27O,aAAa,EAAEC,YAAY,CAAC;YACtC,CAAC,CAAC,CAAC96O,KAAK,CAAC,UAAUC,MAAM,EAAE;cACzB,IAAIA,MAAM,YAAYtc,cAAc,EAAE;gBACpC;cACF;cACA,IAAI45C,IAAI,CAAC\u002F7C,OAAO,CAACwuP,YAAY,EAAE;gBAC7BlvP,IAAI,CAAE,0CAAyCmf,MAAO,IAAG,CAAC;gBAC1D;cACF;cACA,MAAMA,MAAM;YACd,CAAC,CACH,CAAC;YACD;UACF,KAAKzlB,GAAG,CAACa,MAAM;UACf,KAAKb,GAAG,CAACc,MAAM;UACf,KAAKd,GAAG,CAACe,OAAO;UAChB,KAAKf,GAAG,CAACgB,QAAQ;UACjB,KAAKhB,GAAG,CAACiB,QAAQ;UACjB,KAAKjB,GAAG,CAACkB,SAAS;UAClB,KAAKlB,GAAG,CAACmB,SAAS;YAChB4hD,IAAI,CAACq6M,SAAS,CAAC5mB,YAAY,EAAExpB,EAAE,EAAEhqM,IAAI,EAAEq6O,WAAW,CAAC;YACnD;UACF,KAAKr9P,GAAG,CAACmE,SAAS;UAClB,KAAKnE,GAAG,CAACoE,cAAc;UACvB,KAAKpE,GAAG,CAACwE,WAAW;UACpB,KAAKxE,GAAG,CAACyE,SAAS;YAOhB;UACF,KAAKzE,GAAG,CAACsE,uBAAuB;YAC9B,IAAI,EAAE0e,IAAI,CAAC,CAAC,CAAC,YAAY1O,IAAI,CAAC,EAAE;cAC9BhO,IAAI,CAAE,kDAAiD0c,IAAI,CAAC,CAAC,CAAE,EAAC,CAAC;cACjEwzN,YAAY,CAACwa,KAAK,CAAChxP,GAAG,CAACsE,uBAAuB,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;cAC7D;YACF;YACA,IAAI0e,IAAI,CAAC,CAAC,CAAC,CAACza,IAAI,KAAK,IAAI,EAAE;cACzBwwB,IAAI,CACFgqB,IAAI,CACD81M,uBAAuB,CAAC71O,IAAI,CAAC,CAAC,CAAC,EAAEyH,SAAS,CAAC,CAC3C\u002FF,IAAI,CAAC1J,IAAI,IAAI;gBACZw7N,YAAY,CAACwa,KAAK,CAAChxP,GAAG,CAACsE,uBAAuB,EAAE,CAC9C,IAAI,EACJ0W,IAAI,CACL,CAAC;cACJ,CAAC,CAAC,CACDwK,KAAK,CAACC,MAAM,IAAI;gBACf,IAAIA,MAAM,YAAYtc,cAAc,EAAE;kBACpC;gBACF;gBACA,IAAI45C,IAAI,CAAC\u002F7C,OAAO,CAACwuP,YAAY,EAAE;kBAC7BlvP,IAAI,CACD,wDAAuDmf,MAAO,IACjE,CAAC;kBACD+wN,YAAY,CAACwa,KAAK,CAAChxP,GAAG,CAACsE,uBAAuB,EAAE,CAC9C,IAAI,EACJ,IAAI,CACL,CAAC;kBACF;gBACF;gBACA,MAAMmhB,MAAM;cACd,CAAC,CACL,CAAC;cACD;YACF;YAEAzC,IAAI,GAAG,CACLA,IAAI,CAAC,CAAC,CAAC,CAACza,IAAI,EACZya,IAAI,CAAC,CAAC,CAAC,YAAYtO,IAAI,GAAGsO,IAAI,CAAC,CAAC,CAAC,CAACnQ,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CACrD;YAED;UACF,KAAK7S,GAAG,CAACqE,kBAAkB;UAC3B,KAAKrE,GAAG,CAACuE,gBAAgB;UACzB;YAIE,IAAIye,IAAI,KAAK,IAAI,EAAE;cACjB,KAAKpZ,CAAC,GAAG,CAAC,EAAEuH,EAAE,GAAG6R,IAAI,CAAC3b,MAAM,EAAEuC,CAAC,GAAGuH,EAAE,EAAEvH,CAAC,EAAE,EAAE;gBACzC,IAAIoZ,IAAI,CAACpZ,CAAC,CAAC,YAAY8K,IAAI,EAAE;kBAC3B;gBACF;cACF;cACA,IAAI9K,CAAC,GAAGuH,EAAE,EAAE;gBACV7K,IAAI,CAAC,uCAAuC,GAAG0mN,EAAE,CAAC;gBAClD;cACF;YACF;QACJ;QACAwpB,YAAY,CAACwa,KAAK,CAAChkC,EAAE,EAAEhqM,IAAI,CAAC;MAC9B;MACA,IAAIw8O,IAAI,EAAE;QACRzmO,IAAI,CAACm9N,QAAQ,CAAC;QACd;MACF;MAGAgJ,sBAAsB,CAAC,CAAC;MACxB96O,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAACoB,KAAK,CAACC,MAAM,IAAI;MACjB,IAAIA,MAAM,YAAYtc,cAAc,EAAE;QACpC;MACF;MACA,IAAI,IAAI,CAACnC,OAAO,CAACwuP,YAAY,EAAE;QAC7BlvP,IAAI,CACD,6CAA4CoyP,IAAI,CAACnwP,IAAK,IAAG,GACvD,UAASkd,MAAO,IACrB,CAAC;QAEDy5O,sBAAsB,CAAC,CAAC;QACxB;MACF;MACA,MAAMz5O,MAAM;IACd,CAAC,CAAC;EACJ;EAEA+6O,cAAcA,CAAC;IACbt9O,MAAM;IACNw1O,IAAI;IACJjuO,SAAS;IACTyvO,YAAY,GAAG,IAAI;IACnBuG,oBAAoB,GAAG,KAAK;IAC5BC,IAAI;IACJC,UAAU,GAAG,IAAIjpP,GAAG,CAAC,CAAC;IACtBkpP,OAAO;IACPl4M,IAAI,GAAG,IAAI;IACXm4M,iBAAiB,GAAG,IAAI;IACxBC,oBAAoB,GAAG,KAAK;IAC5BC,cAAc,GAAG;EACnB,CAAC,EAAE;IAGDt2O,SAAS,KAAK\u002FV,IAAI,CAAC0B,KAAK;IACxB8jP,YAAY,KAAK,IAAI4E,YAAY,CAAC,IAAIkC,SAAS,CAAC,CAAC,CAAC;IAElD,IAAIP,oBAAoB,EAAE;MACxBI,iBAAiB,KAAK;QAAE\u002F6P,KAAK,EAAE;MAAE,CAAC;IACpC;IAEA,MAAMm7P,WAAW,GAAG;MAClB9oP,KAAK,EAAE,EAAE;MACT+oP,MAAM,EAAEn5P,MAAM,CAAC8C,MAAM,CAAC,IAAI,CAAC;MAC3B69C;IACF,CAAC;IACD,MAAMy4M,eAAe,GAAG;MACtBC,WAAW,EAAE,KAAK;MAClB\u002F2P,GAAG,EAAE,EAAE;MACP66B,UAAU,EAAE,CAAC;MACbm8N,WAAW,EAAE,CAAC;MACdtgP,KAAK,EAAE,CAAC;MACRC,MAAM,EAAE,CAAC;MACTmU,QAAQ,EAAE,KAAK;MACfmsO,aAAa,EAAE,IAAI;MACnBC,gBAAgB,EAAE,CAAC;MACnBC,cAAc,EAAE,CAAC;MACjBC,cAAc,EAAE,CAAC;MACjBC,gBAAgB,EAAEnE,QAAQ;MAC1BoE,gBAAgB,EAAE,CAACpE,QAAQ;MAC3BqE,SAAS,EAAE,CAACrE,QAAQ;MACpB38P,SAAS,EAAE,IAAI;MACfgnN,QAAQ,EAAE,IAAI;MACdi6C,MAAM,EAAE;IACV,CAAC;IAkBD,MAAMC,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;IAC\u002FB,IAAIC,eAAe,GAAG,CAAC;IAQvB,SAASC,YAAYA,CAAC9kP,IAAI,EAAE;MAC1B,MAAM+kP,OAAO,GAAG,CAACF,eAAe,GAAG,CAAC,IAAI,CAAC;MACzC,MAAM9\u002FM,GAAG,GACP6\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\u002FB,IAAIpC,eAAe,CAACC,WAAW,EAAE;QAC\u002FB,OAAOD,eAAe;MACxB;MACA,MAAM;QAAE12C,IAAI;QAAElC;MAAW,CAAC,GAAGs6C,SAAS;MACtC,IAAI,CAAClC,UAAU,CAAC1qP,GAAG,CAACsyM,UAAU,CAAC,EAAE;QAC\u002FBo4C,UAAU,CAAC\u002FoP,GAAG,CAAC2wM,UAAU,CAAC;QAC1B04C,WAAW,CAACC,MAAM,CAAC34C,UAAU,CAAC,GAAG;UAC\u002FB7pM,UAAU,EAAE+rM,IAAI,CAACgX,YAAY;UAC7BtlK,MAAM,EAAEsuJ,IAAI,CAACtuJ,MAAM;UACnBC,OAAO,EAAEquJ,IAAI,CAACruJ,OAAO;UACrBjnC,QAAQ,EAAEs1L,IAAI,CAACt1L;QACjB,CAAC;QACD,IAAI4tB,IAAI,CAAC\u002F7C,OAAO,CAAC0uP,mBAAmB,IAAIjrC,IAAI,CAAC6W,cAAc,EAAE;UAC3D,MAAMikB,KAAK,GAAG0b,WAAW,CAACC,MAAM,CAAC34C,UAAU,CAAC;UAC5Cg9B,KAAK,CAACie,gBAAgB,GAAG\u002F4C,IAAI,CAAC6W,cAAc,CAACK,GAAG;UAChD4jB,KAAK,CAACke,0BAA0B,GAAGh5C,IAAI,CAAC6W,cAAc,CAAC\u002FY,UAAU;QACnE;MACF;MACA44C,eAAe,CAACv5C,QAAQ,GAAGW,UAAU;MAErC,MAAMm7C,GAAG,GAAIvC,eAAe,CAACvgQ,SAAS,GAAGmiQ,uBAAuB,CAAC,CAAE;MACnE,IAAI,CAACt4C,IAAI,CAACt1L,QAAQ,EAAE;QAClBgsO,eAAe,CAACpgP,KAAK,GAAGogP,eAAe,CAACj8N,UAAU,GAAG,CAAC;QACtDi8N,eAAe,CAACngP,MAAM,GAAGmgP,eAAe,CAACE,WAAW,GAAGv3P,IAAI,CAACinO,KAAK,CAC\u002FD2yB,GAAG,CAAC,CAAC,CAAC,EACNA,GAAG,CAAC,CAAC,CACP,CAAC;QACDvC,eAAe,CAAChsO,QAAQ,GAAG,KAAK;MAClC,CAAC,MAAM;QACLgsO,eAAe,CAACpgP,KAAK,GAAGogP,eAAe,CAACj8N,UAAU,GAAGp7B,IAAI,CAACinO,KAAK,CAC7D2yB,GAAG,CAAC,CAAC,CAAC,EACNA,GAAG,CAAC,CAAC,CACP,CAAC;QACDvC,eAAe,CAACngP,MAAM,GAAGmgP,eAAe,CAACE,WAAW,GAAG,CAAC;QACxDF,eAAe,CAAChsO,QAAQ,GAAG,IAAI;MACjC;MAEA,MAAMwuO,UAAU,GAAG75P,IAAI,CAACinO,KAAK,CAC3B8xB,SAAS,CAACe,cAAc,CAAC,CAAC,CAAC,EAC3Bf,SAAS,CAACe,cAAc,CAAC,CAAC,CAC5B,CAAC;MACD,MAAMC,SAAS,GAAG\u002F5P,IAAI,CAACinO,KAAK,CAAC8xB,SAAS,CAACQ,GAAG,CAAC,CAAC,CAAC,EAAER,SAAS,CAACQ,GAAG,CAAC,CAAC,CAAC,CAAC;MAChElC,eAAe,CAACI,gBAAgB,GAAGsC,SAAS,GAAGF,UAAU;MAEzD,MAAM;QAAE7D;MAAS,CAAC,GAAG+C,SAAS;MAC9B1B,eAAe,CAACO,gBAAgB,GAAG5B,QAAQ,GAAGsC,qBAAqB;MACnEjB,eAAe,CAACS,SAAS,GAAG9B,QAAQ,GAAGuC,kBAAkB;MACzDlB,eAAe,CAACQ,gBAAgB,GAAG7B,QAAQ,GAAGwC,qBAAqB;MACnEnB,eAAe,CAACK,cAAc,GAAG1B,QAAQ,GAAGyC,wBAAwB;MACpEpB,eAAe,CAACM,cAAc,GAAG3B,QAAQ,GAAG0C,wBAAwB;MACpErB,eAAe,CAACU,MAAM,GAAG,KAAK;MAE9BV,eAAe,CAACC,WAAW,GAAG,IAAI;MAClC,OAAOD,eAAe;IACxB;IAEA,SAAS2C,kBAAkBA,CAAA,EAAG;MAC5B,IAAI,CAAC3C,eAAe,CAACC,WAAW,EAAE;QAChC;MACF;MAEA,MAAMuC,UAAU,GAAG75P,IAAI,CAACinO,KAAK,CAC3B8xB,SAAS,CAACe,cAAc,CAAC,CAAC,CAAC,EAC3Bf,SAAS,CAACe,cAAc,CAAC,CAAC,CAC5B,CAAC;MACD,MAAMC,SAAS,GAAG\u002F5P,IAAI,CAACinO,KAAK,CAAC8xB,SAAS,CAACQ,GAAG,CAAC,CAAC,CAAC,EAAER,SAAS,CAACQ,GAAG,CAAC,CAAC,CAAC,CAAC;MAChE,MAAMU,WAAW,GAAGF,SAAS,GAAGF,UAAU;MAC1C,IAAII,WAAW,KAAK5C,eAAe,CAACI,gBAAgB,EAAE;QACpD;MACF;MAEA,IAAI,CAACJ,eAAe,CAAChsO,QAAQ,EAAE;QAC7BgsO,eAAe,CAACj8N,UAAU,IACxBi8N,eAAe,CAACpgP,KAAK,GAAGogP,eAAe,CAACI,gBAAgB;QAC1DJ,eAAe,CAACpgP,KAAK,GAAG,CAAC;MAC3B,CAAC,MAAM;QACLogP,eAAe,CAACE,WAAW,IACzBF,eAAe,CAACngP,MAAM,GAAGmgP,eAAe,CAACI,gBAAgB;QAC3DJ,eAAe,CAACngP,MAAM,GAAG,CAAC;MAC5B;MAEAmgP,eAAe,CAACI,gBAAgB,GAAGwC,WAAW;IAChD;IAEA,SAASC,gBAAgBA,CAACC,SAAS,EAAE;MACnC,IAAIC,IAAI,GAAGD,SAAS,CAAC55P,GAAG,CAACF,IAAI,CAAC,EAAE,CAAC;MACjC,IAAI,CAAC22P,oBAAoB,EAAE;QACzBoD,IAAI,GAAGzxP,gBAAgB,CAACyxP,IAAI,CAAC;MAC\u002FB;MACA,MAAMC,UAAU,GAAG1f,IAAI,CAACyf,IAAI,EAAE,CAAC,CAAC,EAAED,SAAS,CAAC9uO,QAAQ,CAAC;MACrD,OAAO;QACL9qB,GAAG,EAAE85P,UAAU,CAAC95P,GAAG;QACnBm6O,GAAG,EAAE2f,UAAU,CAAC3f,GAAG;QACnBzjO,KAAK,EAAEjX,IAAI,CAACsG,GAAG,CAAC6zP,SAAS,CAAC\u002F+N,UAAU,CAAC;QACrClkB,MAAM,EAAElX,IAAI,CAACsG,GAAG,CAAC6zP,SAAS,CAAC5C,WAAW,CAAC;QACvCzgQ,SAAS,EAAEqjQ,SAAS,CAACrjQ,SAAS;QAC9BgnN,QAAQ,EAAEq8C,SAAS,CAACr8C,QAAQ;QAC5Bi6C,MAAM,EAAEoC,SAAS,CAACpC;MACpB,CAAC;IACH;IAEA,eAAexG,aAAaA,CAACzzC,QAAQ,EAAE2zC,OAAO,EAAE;MAC9C,MAAME,UAAU,GAAG,MAAM14M,IAAI,CAAC24M,QAAQ,CAAC9zC,QAAQ,EAAE2zC,OAAO,EAAE9wO,SAAS,CAAC;MAEpE,IAAIgxO,UAAU,CAAChxC,IAAI,CAACmW,WAAW,EAAE;QAC\u002FB,IAAI;UACF,MAAM66B,UAAU,CAACE,aAAa,CAAC54M,IAAI,EAAEt4B,SAAS,EAAEiuO,IAAI,CAAC;QACvD,CAAC,CAAC,MAAM,CAGR;MACF;MAEAmK,SAAS,CAACt6C,UAAU,GAAGkzC,UAAU,CAAClzC,UAAU;MAC5Cs6C,SAAS,CAACp4C,IAAI,GAAGgxC,UAAU,CAAChxC,IAAI;MAChCo4C,SAAS,CAAC5mM,UAAU,GAAGw\u002FL,UAAU,CAAChxC,IAAI,CAACxuJ,UAAU,IAAIxlE,oBAAoB;IAC3E;IAEA,SAAS2tQ,oBAAoBA,CAACp0P,CAAC,EAAEC,CAAC,EAAE2b,MAAM,EAAE;MAC1C,MAAMe,KAAK,GAAG7iB,IAAI,CAACinO,KAAK,CAACnlN,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,CAAC;MAC9C,OAAO,CACL,CAACA,MAAM,CAAC,CAAC,CAAC,GAAG5b,CAAC,GAAG4b,MAAM,CAAC,CAAC,CAAC,GAAG3b,CAAC,IAAI0c,KAAK,EACvC,CAACf,MAAM,CAAC,CAAC,CAAC,GAAG5b,CAAC,GAAG4b,MAAM,CAAC,CAAC,CAAC,GAAG3b,CAAC,IAAI0c,KAAK,CACxC;IACH;IAEA,SAAS03O,uBAAuBA,CAACC,UAAU,EAAE;MAC3C,MAAMC,gBAAgB,GAAGxB,uBAAuB,CAAC,CAAC;MAClD,IAAIyB,IAAI,GAAGD,gBAAgB,CAAC,CAAC,CAAC;MAC9B,IAAIE,IAAI,GAAGF,gBAAgB,CAAC,CAAC,CAAC;MAG9B,IAAI1B,SAAS,CAACp4C,IAAI,EAAEt1L,QAAQ,EAAE;QAC5B,IACEqvO,IAAI,GAAG5D,OAAO,CAAC,CAAC,CAAC,IACjB4D,IAAI,GAAG5D,OAAO,CAAC,CAAC,CAAC,IACjB6D,IAAI,GAAGH,UAAU,GAAG1D,OAAO,CAAC,CAAC,CAAC,IAC9B6D,IAAI,GAAG7D,OAAO,CAAC,CAAC,CAAC,EACjB;UACA,OAAO,KAAK;QACd;MACF,CAAC,MAAM,IACL4D,IAAI,GAAGF,UAAU,GAAG1D,OAAO,CAAC,CAAC,CAAC,IAC9B4D,IAAI,GAAG5D,OAAO,CAAC,CAAC,CAAC,IACjB6D,IAAI,GAAG7D,OAAO,CAAC,CAAC,CAAC,IACjB6D,IAAI,GAAG7D,OAAO,CAAC,CAAC,CAAC,EACjB;QACA,OAAO,KAAK;MACd;MAEA,IAAI,CAACiC,SAAS,CAACp4C,IAAI,IAAI,CAAC02C,eAAe,CAACG,aAAa,EAAE;QACrD,OAAO,IAAI;MACb;MAEA,IAAIoD,QAAQ,GAAGvD,eAAe,CAACG,aAAa,CAAC,CAAC,CAAC;MAC\u002FC,IAAIqD,QAAQ,GAAGxD,eAAe,CAACG,aAAa,CAAC,CAAC,CAAC;MAE\u002FC,IAAIoD,QAAQ,KAAKF,IAAI,IAAIG,QAAQ,KAAKF,IAAI,EAAE;QAC1C,OAAO,IAAI;MACb;MAEA,IAAIG,MAAM,GAAG,CAAC,CAAC;MAEf,IACEL,gBAAgB,CAAC,CAAC,CAAC,IACnBA,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,IACzBA,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,EACzB;QACAK,MAAM,GAAGL,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG;MAC5C,CAAC,MAAM,IACLA,gBAAgB,CAAC,CAAC,CAAC,IACnBA,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,IACzBA,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,EACzB;QACAK,MAAM,GAAGL,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG;MAC7C;MAEA,QAAQK,MAAM;QACZ,KAAK,CAAC;UACJ;QACF,KAAK,EAAE;UACL,CAACJ,IAAI,EAAEC,IAAI,CAAC,GAAG,CAACA,IAAI,EAAED,IAAI,CAAC;UAC3B,CAACE,QAAQ,EAAEC,QAAQ,CAAC,GAAG,CAACA,QAAQ,EAAED,QAAQ,CAAC;UAC3C;QACF,KAAK,GAAG;UACN,CAACF,IAAI,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,QAAQ,CAAC,GAAG,CACjC,CAACH,IAAI,EACL,CAACC,IAAI,EACL,CAACC,QAAQ,EACT,CAACC,QAAQ,CACV;UACD;QACF,KAAK,GAAG;UACN,CAACH,IAAI,EAAEC,IAAI,CAAC,GAAG,CAAC,CAACA,IAAI,EAAE,CAACD,IAAI,CAAC;UAC7B,CAACE,QAAQ,EAAEC,QAAQ,CAAC,GAAG,CAAC,CAACA,QAAQ,EAAE,CAACD,QAAQ,CAAC;UAC7C;QACF;UAME,CAACF,IAAI,EAAEC,IAAI,CAAC,GAAGL,oBAAoB,CAACI,IAAI,EAAEC,IAAI,EAAEF,gBAAgB,CAAC;UACjE,CAACG,QAAQ,EAAEC,QAAQ,CAAC,GAAGP,oBAAoB,CACzCM,QAAQ,EACRC,QAAQ,EACRxD,eAAe,CAACG,aAClB,CAAC;MACL;MAEA,IAAIuB,SAAS,CAACp4C,IAAI,CAACt1L,QAAQ,EAAE;QAC3B,MAAM0vO,QAAQ,GAAG,CAACF,QAAQ,GAAGF,IAAI,IAAItD,eAAe,CAACI,gBAAgB;QACrE,MAAMuD,QAAQ,GAAGN,IAAI,GAAGE,QAAQ;QAIhC,MAAMK,eAAe,GAAGj7P,IAAI,CAAC+qB,IAAI,CAACssO,eAAe,CAACngP,MAAM,CAAC;QACzD,IAAI6jP,QAAQ,GAAGE,eAAe,GAAG5D,eAAe,CAACQ,gBAAgB,EAAE;UACjE,IACE73P,IAAI,CAACsG,GAAG,CAAC00P,QAAQ,CAAC,GAClB,GAAG,GAAG3D,eAAe,CAACpgP,KAAK,EAC3B;YACAikP,SAAS,CAAC,CAAC;YACX,OAAO,IAAI;UACb;UAEA7C,cAAc,CAAC,CAAC;UAChB8C,oBAAoB,CAAC,CAAC;UACtB,OAAO,IAAI;QACb;QAEA,IAAIn7P,IAAI,CAACsG,GAAG,CAAC00P,QAAQ,CAAC,GAAG3D,eAAe,CAACpgP,KAAK,EAAE;UAC9CikP,SAAS,CAAC,CAAC;UACX,OAAO,IAAI;QACb;QAEA,IAAIH,QAAQ,IAAIE,eAAe,GAAG5D,eAAe,CAACS,SAAS,EAAE;UAG3DO,cAAc,CAAC,CAAC;QAClB;QAEA,IAAI0C,QAAQ,IAAIE,eAAe,GAAG5D,eAAe,CAACO,gBAAgB,EAAE;UAClE,IAAIQ,mBAAmB,CAAC,CAAC,EAAE;YAIzBC,cAAc,CAAC,CAAC;YAChB8C,oBAAoB,CAAC,CAAC;YACtBnC,cAAc,CAAC;cAAE9hP,MAAM,EAAElX,IAAI,CAACsG,GAAG,CAACy0P,QAAQ;YAAE,CAAC,CAAC;UAChD,CAAC,MAAM;YACL1D,eAAe,CAACngP,MAAM,IAAI6jP,QAAQ;UACpC;QACF,CAAC,MAAM,IACL,CAACK,aAAa,CACZL,QAAQ,EACR1D,eAAe,CAACG,aAAa,EAC7ByD,eACF,CAAC,EACD;UACA,IAAI5D,eAAe,CAAC92P,GAAG,CAAChD,MAAM,KAAK,CAAC,EAAE;YACpC86P,cAAc,CAAC,CAAC;YAChBW,cAAc,CAAC;cAAE9hP,MAAM,EAAElX,IAAI,CAACsG,GAAG,CAACy0P,QAAQ;YAAE,CAAC,CAAC;UAChD,CAAC,MAAM;YACL1D,eAAe,CAACngP,MAAM,IAAI6jP,QAAQ;UACpC;QACF;QAEA,IAAI\u002F6P,IAAI,CAACsG,GAAG,CAAC00P,QAAQ,CAAC,GAAG3D,eAAe,CAACpgP,KAAK,GAAG0hP,oBAAoB,EAAE;UACrEwC,oBAAoB,CAAC,CAAC;QACxB;QAEA,OAAO,IAAI;MACb;MAEA,MAAMH,QAAQ,GAAG,CAACN,IAAI,GAAGE,QAAQ,IAAIvD,eAAe,CAACI,gBAAgB;MACrE,MAAMsD,QAAQ,GAAGJ,IAAI,GAAGE,QAAQ;MAIhC,MAAMI,eAAe,GAAGj7P,IAAI,CAAC+qB,IAAI,CAACssO,eAAe,CAACpgP,KAAK,CAAC;MACxD,IAAI+jP,QAAQ,GAAGC,eAAe,GAAG5D,eAAe,CAACQ,gBAAgB,EAAE;QACjE,IACE73P,IAAI,CAACsG,GAAG,CAACy0P,QAAQ,CAAC,GAClB,GAAG,GAAG1D,eAAe,CAACngP,MAAM,EAC5B;UACAgkP,SAAS,CAAC,CAAC;UACX,OAAO,IAAI;QACb;QAIA7C,cAAc,CAAC,CAAC;QAChB8C,oBAAoB,CAAC,CAAC;QACtB,OAAO,IAAI;MACb;MAEA,IAAIn7P,IAAI,CAACsG,GAAG,CAACy0P,QAAQ,CAAC,GAAG1D,eAAe,CAACngP,MAAM,EAAE;QAC\u002FCgkP,SAAS,CAAC,CAAC;QACX,OAAO,IAAI;MACb;MAEA,IAAIF,QAAQ,IAAIC,eAAe,GAAG5D,eAAe,CAACS,SAAS,EAAE;QAG3DO,cAAc,CAAC,CAAC;MAClB;MAEA,IAAI2C,QAAQ,IAAIC,eAAe,GAAG5D,eAAe,CAACO,gBAAgB,EAAE;QAClE,IAAIQ,mBAAmB,CAAC,CAAC,EAAE;UAIzBC,cAAc,CAAC,CAAC;UAChB8C,oBAAoB,CAAC,CAAC;UACtBnC,cAAc,CAAC;YAAE\u002FhP,KAAK,EAAEjX,IAAI,CAACsG,GAAG,CAAC00P,QAAQ;UAAE,CAAC,CAAC;QAC\u002FC,CAAC,MAAM;UACL3D,eAAe,CAACpgP,KAAK,IAAI+jP,QAAQ;QACnC;MACF,CAAC,MAAM,IACL,CAACI,aAAa,CAACJ,QAAQ,EAAE3D,eAAe,CAACG,aAAa,EAAEyD,eAAe,CAAC,EACxE;QACA,IAAI5D,eAAe,CAAC92P,GAAG,CAAChD,MAAM,KAAK,CAAC,EAAE;UACpC86P,cAAc,CAAC,CAAC;UAChBW,cAAc,CAAC;YAAE\u002FhP,KAAK,EAAEjX,IAAI,CAACsG,GAAG,CAAC00P,QAAQ;UAAE,CAAC,CAAC;QAC\u002FC,CAAC,MAAM;UACL3D,eAAe,CAACpgP,KAAK,IAAI+jP,QAAQ;QACnC;MACF;MAEA,IAAIh7P,IAAI,CAACsG,GAAG,CAACy0P,QAAQ,CAAC,GAAG1D,eAAe,CAACngP,MAAM,GAAGyhP,oBAAoB,EAAE;QACtEwC,oBAAoB,CAAC,CAAC;MACxB;MAEA,OAAO,IAAI;IACb;IAEA,SAASE,oBAAoBA,CAAC;MAAE72B,KAAK;MAAE82B;IAAa,CAAC,EAAE;MACrD,MAAM36C,IAAI,GAAGo4C,SAAS,CAACp4C,IAAI;MAC3B,IAAI,CAAC6jB,KAAK,EAAE;QAEV,MAAM+2B,WAAW,GAAGxC,SAAS,CAACwC,WAAW,GAAGD,YAAY;QACxD,IAAIC,WAAW,EAAE;UACf,IAAI,CAAC56C,IAAI,CAACt1L,QAAQ,EAAE;YAClB0tO,SAAS,CAACyC,mBAAmB,CAC3BD,WAAW,GAAGxC,SAAS,CAACI,UAAU,EAClC,CACF,CAAC;UACH,CAAC,MAAM;YACLJ,SAAS,CAACyC,mBAAmB,CAAC,CAAC,EAAE,CAACD,WAAW,CAAC;UAChD;QACF;QAEA,IAAItE,cAAc,EAAE;UAClBsD,uBAAuB,CAAC,CAAC,CAAC;QAC5B;QAEA;MACF;MAEA,MAAMx6C,MAAM,GAAGY,IAAI,CAAC4jB,aAAa,CAACC,KAAK,CAAC;MACxC,MAAM3hN,KAAK,GAAGk2O,SAAS,CAAC5mM,UAAU,CAAC,CAAC,CAAC,GAAG4mM,SAAS,CAAC\u002FC,QAAQ;MAE1D,KAAK,IAAIl2P,CAAC,GAAG,CAAC,EAAEuH,EAAE,GAAG04M,MAAM,CAACxiN,MAAM,EAAEuC,CAAC,GAAGuH,EAAE,EAAEvH,CAAC,EAAE,EAAE;QAC\u002FC,MAAM83D,KAAK,GAAGmoJ,MAAM,CAACjgN,CAAC,CAAC;QACvB,MAAM;UAAEg1M;QAAS,CAAC,GAAGl9I,KAAK;QAE1B,IAAIk9I,QAAQ,CAACG,qBAAqB,EAAE;UAClC;QACF;QACA,IAAIsmD,WAAW,GACbxC,SAAS,CAACwC,WAAW,IAAIz7P,CAAC,GAAG,CAAC,KAAKuH,EAAE,GAAGi0P,YAAY,GAAG,CAAC,CAAC;QAE3D,IAAId,UAAU,GAAG5iM,KAAK,CAAC3gD,KAAK;QAC5B,IAAI0pM,IAAI,CAACt1L,QAAQ,EAAE;UACjBmvO,UAAU,GAAG5iM,KAAK,CAACy5J,OAAO,GAAGz5J,KAAK,CAACy5J,OAAO,CAAC,CAAC,CAAC,GAAG,CAACmpC,UAAU;QAC7D;QACA,IAAIiB,SAAS,GAAGjB,UAAU,GAAG33O,KAAK;QAElC,IAAI,CAACo0O,cAAc,IAAIniD,QAAQ,CAACC,YAAY,EAAE;UAM5C,IAAI,CAAC4L,IAAI,CAACt1L,QAAQ,EAAE;YAClBkwO,WAAW,IAAIE,SAAS,GAAG1C,SAAS,CAAC2C,WAAW;YAChD3C,SAAS,CAACyC,mBAAmB,CAC3BD,WAAW,GAAGxC,SAAS,CAACI,UAAU,EAClC,CACF,CAAC;UACH,CAAC,MAAM;YACLoC,WAAW,IAAI,CAACE,SAAS,GAAG1C,SAAS,CAAC2C,WAAW;YACjD3C,SAAS,CAACyC,mBAAmB,CAAC,CAAC,EAAE,CAACD,WAAW,CAAC;UAChD;UACArD,YAAY,CAAC,GAAG,CAAC;UACjB;QACF;QAEA,IACE,CAACpjD,QAAQ,CAACE,oBAAoB,IAC9B,CAACulD,uBAAuB,CAACkB,SAAS,CAAC,EACnC;UAEA,IAAI,CAAC96C,IAAI,CAACt1L,QAAQ,EAAE;YAClB0tO,SAAS,CAACyC,mBAAmB,CAACC,SAAS,GAAG1C,SAAS,CAACI,UAAU,EAAE,CAAC,CAAC;UACpE,CAAC,MAAM;YACLJ,SAAS,CAACyC,mBAAmB,CAAC,CAAC,EAAEC,SAAS,CAAC;UAC7C;UACA;QACF;QAIA,MAAMtB,SAAS,GAAGV,qBAAqB,CAAC,CAAC;QACzC,IAAI3kD,QAAQ,CAACE,oBAAoB,EAAE;UACjCymD,SAAS,GAAG,CAAC;QACf;QAEA,IAAI,CAAC96C,IAAI,CAACt1L,QAAQ,EAAE;UAClBowO,SAAS,IAAI1C,SAAS,CAACI,UAAU;UACjCJ,SAAS,CAACyC,mBAAmB,CAACC,SAAS,EAAE,CAAC,CAAC;UAC3CtB,SAAS,CAACljP,KAAK,IAAIwkP,SAAS;QAC9B,CAAC,MAAM;UACL1C,SAAS,CAACyC,mBAAmB,CAAC,CAAC,EAAEC,SAAS,CAAC;UAC3CA,SAAS,GAAGz7P,IAAI,CAACsG,GAAG,CAACm1P,SAAS,CAAC;UAC\u002FBtB,SAAS,CAACjjP,MAAM,IAAIukP,SAAS;QAC\u002FB;QAEA,IAAIA,SAAS,EAAE;UAEbtB,SAAS,CAAC3C,aAAa,GAAGyB,uBAAuB,CAAC,CAAC;QACrD;QAEA,MAAM0C,YAAY,GAAG\u002FjM,KAAK,CAACu8I,OAAO;QAClC,IAAI+jD,YAAY,CAACyD,YAAY,CAAC,EAAE;UAM9BxB,SAAS,CAAC55P,GAAG,CAACH,IAAI,CAAC,GAAG,CAAC;QACzB;QACA+5P,SAAS,CAAC55P,GAAG,CAACH,IAAI,CAACu7P,YAAY,CAAC;QAEhC,IAAIJ,WAAW,EAAE;UACf,IAAI,CAAC56C,IAAI,CAACt1L,QAAQ,EAAE;YAClB0tO,SAAS,CAACyC,mBAAmB,CAC3BD,WAAW,GAAGxC,SAAS,CAACI,UAAU,EAClC,CACF,CAAC;UACH,CAAC,MAAM;YACLJ,SAAS,CAACyC,mBAAmB,CAAC,CAAC,EAAE,CAACD,WAAW,CAAC;UAChD;QACF;MACF;IACF;IAEA,SAASL,SAASA,CAAA,EAAG;MACnB7C,cAAc,CAAC,CAAC;MAChB,IAAIhB,eAAe,CAACC,WAAW,EAAE;QAC\u002FBD,eAAe,CAACU,MAAM,GAAG,IAAI;QAC7BoD,oBAAoB,CAAC,CAAC;MACxB,CAAC,MAAM;QACLhE,WAAW,CAAC9oP,KAAK,CAACjO,IAAI,CAAC;UACrBG,GAAG,EAAE,EAAE;UACPm6O,GAAG,EAAE,KAAK;UACVzjO,KAAK,EAAE,CAAC;UACRC,MAAM,EAAE,CAAC;UACTpgB,SAAS,EAAEmiQ,uBAAuB,CAAC,CAAC;UACpCn7C,QAAQ,EAAEi7C,SAAS,CAACt6C,UAAU;UAC9Bs5C,MAAM,EAAE;QACV,CAAC,CAAC;MACJ;IACF;IAEA,SAASqD,aAAaA,CAACnkP,KAAK,EAAE6wM,MAAM,EAAEmzC,eAAe,EAAE;MACrD,IACEA,eAAe,GAAG5D,eAAe,CAACK,cAAc,IAAIzgP,KAAK,IACzDA,KAAK,IAAIgkP,eAAe,GAAG5D,eAAe,CAACM,cAAc,EACzD;QACA,IAAIN,eAAe,CAACC,WAAW,EAAE;UAC\u002FBe,cAAc,CAAC,CAAC;UAChBhB,eAAe,CAAC92P,GAAG,CAACH,IAAI,CAAC,GAAG,CAAC;QAC\u002FB;QACA,OAAO,KAAK;MACd;MAEA,MAAM09M,QAAQ,GAAGu5C,eAAe,CAACv5C,QAAQ;MAEzC,IAAI5mM,MAAM,GAAG,CAAC;MACd,IAAImgP,eAAe,CAAChsO,QAAQ,EAAE;QAC5BnU,MAAM,GAAGD,KAAK;QACdA,KAAK,GAAG,CAAC;MACX;MAEAkkP,oBAAoB,CAAC,CAAC;MACtB9C,cAAc,CAAC,CAAC;MAChBW,cAAc,CAAC;QACb\u002FhP,KAAK,EAAEjX,IAAI,CAACsG,GAAG,CAAC2Q,KAAK,CAAC;QACtBC,MAAM,EAAElX,IAAI,CAACsG,GAAG,CAAC4Q,MAAM,CAAC;QACxBpgB,SAAS,EAAEgxN,MAAM,IAAImxC,uBAAuB,CAAC,CAAC;QAC9Cn7C;MACF,CAAC,CAAC;MAEF,OAAO,IAAI;IACb;IAEA,SAASq9C,oBAAoBA,CAAA,EAAG;MAC9B,IAAI,CAAC9D,eAAe,CAACC,WAAW,IAAI,CAACD,eAAe,CAAC92P,GAAG,EAAE;QACxD;MACF;MAGA,IAAI,CAAC82P,eAAe,CAAChsO,QAAQ,EAAE;QAC7BgsO,eAAe,CAACj8N,UAAU,IACxBi8N,eAAe,CAACpgP,KAAK,GAAGogP,eAAe,CAACI,gBAAgB;MAC5D,CAAC,MAAM;QACLJ,eAAe,CAACE,WAAW,IACzBF,eAAe,CAACngP,MAAM,GAAGmgP,eAAe,CAACI,gBAAgB;MAC7D;MAEAN,WAAW,CAAC9oP,KAAK,CAACjO,IAAI,CAAC85P,gBAAgB,CAAC7C,eAAe,CAAC,CAAC;MACzDA,eAAe,CAACC,WAAW,GAAG,KAAK;MACnCD,eAAe,CAAC92P,GAAG,CAAChD,MAAM,GAAG,CAAC;IAChC;IAEA,SAASq+P,YAAYA,CAACC,KAAK,GAAG,KAAK,EAAE;MACnC,MAAMt+P,MAAM,GAAG45P,WAAW,CAAC9oP,KAAK,CAAC9Q,MAAM;MACvC,IAAIA,MAAM,KAAK,CAAC,EAAE;QAChB;MACF;MACA,IAAIs+P,KAAK,IAAIt+P,MAAM,GAAG4uP,qBAAqB,EAAE;QAC3C;MACF;MACAyK,IAAI,CAAC\u002FO,OAAO,CAACsP,WAAW,EAAE55P,MAAM,CAAC;MACjC45P,WAAW,CAAC9oP,KAAK,GAAG,EAAE;MACtB8oP,WAAW,CAACC,MAAM,GAAGn5P,MAAM,CAAC8C,MAAM,CAAC,IAAI,CAAC;IAC1C;IAEA,MAAMo0P,eAAe,GAAG,IAAI1I,eAAe,CAAC,CAAC;IAE7C,OAAO,IAAI5yO,OAAO,CAAC,SAAS07O,WAAWA,CAACj7O,OAAO,EAAEC,MAAM,EAAE;MACvD,MAAM0U,IAAI,GAAG,SAAAA,CAAUhU,OAAO,EAAE;QAC9B2gP,YAAY,CAAe,IAAI,CAAC;QAChC\u002FhP,OAAO,CAAC27O,GAAG,CAAC,CAACv6O,OAAO,EAAE27O,IAAI,CAAC5P,KAAK,CAAC,CAAC,CAACpsO,IAAI,CAAC,YAAY;UAClD,IAAI;YACF26O,WAAW,CAACj7O,OAAO,EAAEC,MAAM,CAAC;UAC9B,CAAC,CAAC,OAAOnT,EAAE,EAAE;YACXmT,MAAM,CAACnT,EAAE,CAAC;UACZ;QACF,CAAC,EAAEmT,MAAM,CAAC;MACZ,CAAC;MACDq0O,IAAI,CAAC6G,mBAAmB,CAAC,CAAC;MAC1BN,eAAe,CAACllP,KAAK,CAAC,CAAC;MAEvB,MAAMmpO,SAAS,GAAG,CAAC,CAAC;MACpB,IAAIsc,IAAI;QACNx8O,IAAI,GAAG,EAAE;MACX,OAAO,EAAEw8O,IAAI,GAAGP,eAAe,CAAChiO,KAAK,CAAC,CAAC,CAAC,EAAE;QAIxCja,IAAI,CAAC3b,MAAM,GAAG,CAAC;QACf67O,SAAS,CAAClgO,IAAI,GAAGA,IAAI;QACrB,IAAI,CAAC+7O,YAAY,CAACt6O,IAAI,CAACy+N,SAAS,CAAC,EAAE;UACjC;QACF;QAEA,MAAM0iB,aAAa,GAAG\u002FC,SAAS;QAC\u002FBA,SAAS,GAAG3I,YAAY,CAACxpM,KAAK;QAC9B,MAAMs8J,EAAE,GAAGk2B,SAAS,CAACl2B,EAAE;QACvBhqM,IAAI,GAAGkgO,SAAS,CAAClgO,IAAI;QAErB,QAAQgqM,EAAE,GAAG,CAAC;UACZ,KAAKhtN,GAAG,CAACqC,OAAO;YAEd,IAAIwjQ,WAAW,GAAG7iP,IAAI,CAAC,CAAC,CAAC,CAACza,IAAI;cAC5Bu9P,WAAW,GAAG9iP,IAAI,CAAC,CAAC,CAAC;YACvB,IACE6\u002FO,SAAS,CAACp4C,IAAI,IACdo7C,WAAW,KAAKhD,SAAS,CAACj7C,QAAQ,IAClCk+C,WAAW,KAAKjD,SAAS,CAAC\u002FC,QAAQ,EAClC;cACA;YACF;YAEAmF,oBAAoB,CAAC,CAAC;YACtBpC,SAAS,CAACj7C,QAAQ,GAAGi+C,WAAW;YAChChD,SAAS,CAAC\u002FC,QAAQ,GAAGgG,WAAW;YAChC\u002FsO,IAAI,CAACsiO,aAAa,CAACwK,WAAW,EAAE,IAAI,CAAC,CAAC;YACtC;UACF,KAAK7lQ,GAAG,CAACuC,WAAW;YAClBsgQ,SAAS,CAACK,QAAQ,GAAGlgP,IAAI,CAAC,CAAC,CAAC;YAC5B;UACF,KAAKhjB,GAAG,CAACmC,SAAS;YAChB0gQ,SAAS,CAACI,UAAU,GAAGjgP,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG;YACpC;UACF,KAAKhjB,GAAG,CAACoC,UAAU;YACjBygQ,SAAS,CAACkD,OAAO,GAAG\u002FiP,IAAI,CAAC,CAAC,CAAC;YAC3B;UACF,KAAKhjB,GAAG,CAACwC,QAAQ;YACfqgQ,SAAS,CAACmD,uBAAuB,CAAChjP,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,CAAC;YACnD6\u002FO,SAAS,CAACS,UAAU,GAAGT,SAAS,CAACe,cAAc,CAACj2P,KAAK,CAAC,CAAC;YACvD;UACF,KAAK3N,GAAG,CAACyC,kBAAkB;YACzBogQ,SAAS,CAACkD,OAAO,GAAG,CAAC\u002FiP,IAAI,CAAC,CAAC,CAAC;YAC5B6\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\u002FB6\u002FO,SAAS,CAACwC,WAAW,GAAGriP,IAAI,CAAC,CAAC,CAAC;YAC\u002FB6\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\u002FCwtM,gBAAgB,GACdA,gBAAgB,YAAY\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\u002FP,IAAI,GAAG,CAACm\u002FP,OAAO;YAMf,IAAI\u002FhQ,MAAM,CAAC2Z,KAAK,CAAC\u002FW,IAAI,CAAC,IAAI5C,MAAM,CAACC,SAAS,CAACsR,QAAQ,CAACwwP,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE;cACjE,OAAO,IAAI,CAACF,oBAAoB,CAC9BlxP,UAAU,EACQ,IACpB,CAAC;YACH;UACF;UACA;QACF,KAAK,GAAG;UACNunM,OAAO,GAAGF,kBAAkB,CAACwC,SAAS,EAAEvC,gBAAgB,CAAC;UACzD,IAAIC,OAAO,KAAK,CAAC,CAAC,EAAE;YAClBt1M,IAAI,GAAGs1M,OAAO;UAChB;UACA;QACF;UAEE,QAAQsC,SAAS;YACf,KAAK,KAAK;YACV,KAAK,KAAK;YACV,KAAK,KAAK;cACRoa,SAAS,CAACnjK,QAAQ,CAAC,GAAG+oJ,SAAS,CAACtvM,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC;cACnD;UACJ;UACA;MACJ;MACA,IAAItI,IAAI,GAAG,CAAC,IAAIA,IAAI,IAAI,QAAQ,IAAI5C,MAAM,CAACC,SAAS,CAAC2C,IAAI,CAAC,EAAE;QAI1D,IAAI03M,gBAAgB,IAAI13M,IAAI,KAAK,CAAC6uD,QAAQ,EAAE;UAC1C,MAAMwJ,YAAY,GAAGpH,WAAW,CAACymJ,gBAAgB,CAAC;UAClD,IAAIr\u002FI,YAAY,KAAKu\u002FI,SAAS,GAAGv\u002FI,YAAY,CAACxJ,QAAQ,CAAC,CAAC,EAAE;YACxDmjK,SAAS,CAACnjK,QAAQ,CAAC,GAAGhuD,MAAM,CAACC,YAAY,CACvCu0M,gBAAgB,CAACuC,SAAS,CAC5B,CAAC;YACD;UACF;QACF;QACAoa,SAAS,CAACnjK,QAAQ,CAAC,GAAGhuD,MAAM,CAAC4kO,aAAa,CAACzlO,IAAI,CAAC;MAClD;IACF;IACA,OAAOgyN,SAAS;EAClB;EAQA,MAAM+sC,cAAcA,CAAChxP,UAAU,EAAE;IAC\u002FBA,UAAU,CAAC+jN,uBAAuB,GAAG\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\u002FC;IAEA,IAAI2\u002FM,SAAS,GAAG,KAAK;IACrB,IAAIi0C,IAAI;IACR,IAAIvmQ,IAAI,CAACgS,IAAI,KAAK,OAAO,EAAE;MAKzB,MAAM6gQ,EAAE,GAAGzyP,IAAI,CAAC9D,GAAG,CAAC,iBAAiB,CAAC;MACtC,IAAI,CAACu2P,EAAE,EAAE;QACP,MAAM,IAAIlgQ,WAAW,CAAC,oCAAoC,CAAC;MAC7D;MACAyN,IAAI,GAAGzK,KAAK,CAACyJ,OAAO,CAACyzP,EAAE,CAAC,GAAG,IAAI,CAACz0P,IAAI,CAACmW,UAAU,CAACs+O,EAAE,CAAC,CAAC,CAAC,CAAC,GAAGA,EAAE;MAE3D,IAAI,EAAEzyP,IAAI,YAAYjC,IAAI,CAAC,EAAE;QAC3B,MAAM,IAAIxL,WAAW,CAAC,sCAAsC,CAAC;MAC\u002FD;MACA3S,IAAI,GAAGogB,IAAI,CAAC9D,GAAG,CAAC,SAAS,CAAC;MAC1B,IAAI,EAAEtc,IAAI,YAAY+d,IAAI,CAAC,EAAE;QAC3B,MAAM,IAAIpL,WAAW,CAAC,sBAAsB,CAAC;MAC\u002FC;MACA2\u002FM,SAAS,GAAG,IAAI;IAClB;IAEA,IAAIV,SAAS,GAAGxxM,IAAI,CAAC9D,GAAG,CAAC,WAAW,CAAC;IACrC,IAAI,CAAC9M,MAAM,CAACC,SAAS,CAACmiN,SAAS,CAAC,EAAE;MAChCA,SAAS,GAAG,CAAC;IACf;IACA,IAAIC,QAAQ,GAAGzxM,IAAI,CAAC9D,GAAG,CAAC,UAAU,CAAC;IACnC,IAAI,CAAC9M,MAAM,CAACC,SAAS,CAACoiN,QAAQ,CAAC,EAAE;MAC\u002FBA,QAAQ,GAAGS,SAAS,GAAG,MAAM,GAAG,IAAI;IACtC;IACA,MAAMqxB,UAAU,GAAGvjO,IAAI,CAAC9D,GAAG,CAAC,gBAAgB,CAAC;IAC7C,MAAM8nN,SAAS,GAAGhkN,IAAI,CAAC9D,GAAG,CAAC,WAAW,CAAC,IAAIs2P,QAAQ,CAACt2P,GAAG,CAAC,WAAW,CAAC;IAEpE,IAAIqnO,UAAU,EAAE;MACd4iB,IAAI,GAAG,IAAI5R,cAAc,CAAC,CAAC;MAE3B,MAAMv6O,QAAQ,GAAGw4P,QAAQ,CAACvzP,MAAM,CAAC,UAAU,CAAC;MAC5C,IAAIjF,QAAQ,YAAY2D,IAAI,EAAE;QAC5BwoP,IAAI,CAAC1R,MAAM,CAACz6O,QAAQ,CAACpI,IAAI,CAAC;MAC5B,CAAC,MAAM,IAAIoI,QAAQ,YAAY2E,GAAG,EAAE;QAClCwnP,IAAI,CAAC1R,MAAM,CAACz6O,QAAQ,CAACtE,QAAQ,CAAC,CAAC,CAAC;MAClC,CAAC,MAAM,IAAIsE,QAAQ,YAAY+D,IAAI,EAAE;QACnC,KAAK,MAAM4I,KAAK,IAAI3M,QAAQ,CAACmF,YAAY,CAAC,CAAC,EAAE;UAC3C,IAAIwH,KAAK,YAAYhJ,IAAI,EAAE;YACzBwoP,IAAI,CAAC1R,MAAM,CAAC9tO,KAAK,CAAC\u002FU,IAAI,CAAC;UACzB,CAAC,MAAM,IAAI+U,KAAK,YAAYhI,GAAG,EAAE;YAC\u002FBwnP,IAAI,CAAC1R,MAAM,CAAC9tO,KAAK,CAACjR,QAAQ,CAAC,CAAC,CAAC;UAC\u002FB,CAAC,MAAM,IAAIH,KAAK,CAACyJ,OAAO,CAAC2H,KAAK,CAAC,EAAE;YAE\u002FB,MAAM+rP,UAAU,GAAG\u002FrP,KAAK,CAACjW,MAAM;cAC7BiiQ,OAAO,GAAG,IAAIp9P,KAAK,CAACm9P,UAAU,CAAC;YAEjC,KAAK,IAAIvhP,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGuhP,UAAU,EAAEvhP,CAAC,EAAE,EAAE;cACnC,MAAMyhP,SAAS,GAAGjsP,KAAK,CAACwK,CAAC,CAAC;cAC1B,IAAIyhP,SAAS,YAAYj1P,IAAI,EAAE;gBAC7Bg1P,OAAO,CAACxhP,CAAC,CAAC,GAAGyhP,SAAS,CAAChhQ,IAAI;cAC7B,CAAC,MAAM,IACL,OAAOghQ,SAAS,KAAK,QAAQ,IAC7BA,SAAS,YAAYj0P,GAAG,EACxB;gBACAg0P,OAAO,CAACxhP,CAAC,CAAC,GAAGyhP,SAAS,CAACl9P,QAAQ,CAAC,CAAC;cACnC;YACF;YACAywP,IAAI,CAAC1R,MAAM,CAACke,OAAO,CAACn\u002FP,IAAI,CAAC,CAAC,CAAC;UAC7B;QACF;MACF;MAEA2yP,IAAI,CAAC1R,MAAM,CAAE,GAAEjjC,SAAU,IAAGC,QAAS,EAAC,CAAC;MAEvC,IAAIuS,SAAS,YAAYhiN,UAAU,EAAE;QACnC,MAAMuK,MAAM,GAAGy3M,SAAS,CAACtwN,GAAG,IAAIswN,SAAS;QACzC,MAAM6uC,UAAU,GAAGtmP,MAAM,CAAC\u002FX,MAAM,GAC5B,IAAIb,UAAU,CAAC4Y,MAAM,CAAC\u002FX,MAAM,CAACA,MAAM,EAAE,CAAC,EAAE+X,MAAM,CAACgT,YAAY,CAAC,GAC5D,IAAI5rB,UAAU,CACZ4Y,MAAM,CAAC7Z,KAAK,CAAC8B,MAAM,EACnB+X,MAAM,CAAChJ,KAAK,EACZgJ,MAAM,CAACtJ,GAAG,GAAGsJ,MAAM,CAAChJ,KACtB,CAAC;QACL4iP,IAAI,CAAC1R,MAAM,CAACoe,UAAU,CAAC;MACzB,CAAC,MAAM,IAAI7uC,SAAS,YAAYrmN,IAAI,EAAE;QACpCwoP,IAAI,CAAC1R,MAAM,CAACzwB,SAAS,CAACpyN,IAAI,CAAC;MAC7B;MAEA,MAAM+0D,MAAM,GAAG3mD,IAAI,CAAC9D,GAAG,CAAC,QAAQ,CAAC,IAAIs2P,QAAQ,CAACt2P,GAAG,CAAC,QAAQ,CAAC;MAC3D,IAAI3G,KAAK,CAACyJ,OAAO,CAAC2nD,MAAM,CAAC,EAAE;QACzB,MAAMmsM,SAAS,GAAG,EAAE;QACpB,KAAK,MAAMnsP,KAAK,IAAIggD,MAAM,EAAE;UAC1B,IAAI,OAAOhgD,KAAK,KAAK,QAAQ,IAAIA,KAAK,YAAYhI,GAAG,EAAE;YACrDm0P,SAAS,CAACv\u002FP,IAAI,CAACoT,KAAK,CAACjR,QAAQ,CAAC,CAAC,CAAC;UAClC;QACF;QACAywP,IAAI,CAAC1R,MAAM,CAACqe,SAAS,CAACt\u002FP,IAAI,CAAC,CAAC,CAAC;MAC\u002FB;MAEA,IAAI0+M,SAAS,EAAE;QACbi0C,IAAI,CAAC1R,MAAM,CAAC,eAAe,CAAC;QAE5B,MAAMse,eAAe,GAAG\u002FyP,IAAI,CAAC9D,GAAG,CAAC,GAAG,CAAC,IAAIs2P,QAAQ,CAACt2P,GAAG,CAAC,GAAG,CAAC;QAC1D,IAAI3G,KAAK,CAACyJ,OAAO,CAAC+zP,eAAe,CAAC,EAAE;UAClC,MAAMD,SAAS,GAAG,EAAE;UACpB,KAAK,MAAMnsP,KAAK,IAAIosP,eAAe,EAAE;YACnC,IAAI,OAAOpsP,KAAK,KAAK,QAAQ,IAAIA,KAAK,YAAYhI,GAAG,EAAE;cACrDm0P,SAAS,CAACv\u002FP,IAAI,CAACoT,KAAK,CAACjR,QAAQ,CAAC,CAAC,CAAC;YAClC,CAAC,MAAM,IAAIH,KAAK,CAACyJ,OAAO,CAAC2H,KAAK,CAAC,EAAE;cAC\u002FB,MAAMqsP,YAAY,GAAG,EAAE;cACvB,KAAK,MAAMlsP,OAAO,IAAIH,KAAK,EAAE;gBAC3B,IAAI,OAAOG,OAAO,KAAK,QAAQ,IAAIA,OAAO,YAAYnI,GAAG,EAAE;kBACzDq0P,YAAY,CAACz\u002FP,IAAI,CAACuT,OAAO,CAACpR,QAAQ,CAAC,CAAC,CAAC;gBACvC;cACF;cACAo9P,SAAS,CAACv\u002FP,IAAI,CAAE,IAAGy\u002FP,YAAY,CAACx\u002FP,IAAI,CAAC,CAAE,GAAE,CAAC;YAC5C;UACF;UACA2yP,IAAI,CAAC1R,MAAM,CAACqe,SAAS,CAACt\u002FP,IAAI,CAAC,CAAC,CAAC;QAC\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\u002FB,mBAAmB,CAACs\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\u002FM,IAAI,CAAC;QAC\u002FCsgN,SAAS,GAAG,IAAI;MAClB;IACF,CAAC,MAAM,IAAI,CAAC+X,WAAW,EAAE;MACvB,MAAMsmB,gBAAgB,GAAGv\u002FB,mBAAmB,CAACC,QAAQ,CAACr\u002FM,IAAI,CAAC;MAC3D,IAAI2+O,gBAAgB,EAAE;QACpB8iB,QAAQ,GAAG,MAAM,IAAI,CAAC1R,qBAAqB,CAACpR,gBAAgB,CAAC;QAC7D9mC,cAAc,GAAG,CAAC,CAAC4pD,QAAQ;MAC7B;MACA,IAAI,CAAC5pD,cAAc,IAAI,IAAI,CAACp5M,OAAO,CAAC2uP,cAAc,EAAE;QAClDr0B,cAAc,GAAGwlB,mBAAmB,CAClC,IAAI,CAACC,eAAe,EACpB,IAAI,CAACC,SAAS,EACd,IAAI,CAAChgP,OAAO,CAAC6uP,mBAAmB,EAChCjuC,QAAQ,CAACr\u002FM,IAAI,EACb2+O,gBAAgB,EAChB3wP,IACF,CAAC;MACH;IACF;IAEA,MAAM0lE,UAAU,GAAGz\u002FC,YAAY,CAC7B7F,IAAI,CAACjB,QAAQ,CAAC,YAAY,CAAC,EAC3Bjf,oBACF,CAAC;IACD,MAAMmjO,IAAI,GAAGj9M,gBAAgB,CAC3Bu9N,UAAU,CAACxkO,QAAQ,CAAC,UAAU,CAAC,IAAIiB,IAAI,CAACjB,QAAQ,CAAC,UAAU,CAAC,EAC5DpM,SACF,CAAC;IACD,IAAI6yD,MAAM,GAAG+9K,UAAU,CAACrnO,GAAG,CAAC,QAAQ,CAAC;IACrC,IAAI,OAAOspD,MAAM,KAAK,QAAQ,EAAE;MAC9BA,MAAM,GAAG7yD,SAAS;IACpB;IACA,IAAI8yD,OAAO,GAAG89K,UAAU,CAACrnO,GAAG,CAAC,SAAS,CAAC;IACvC,IAAI,OAAOupD,OAAO,KAAK,QAAQ,EAAE;MAC\u002FBA,OAAO,GAAG9yD,SAAS;IACrB;IACA,IAAI0kN,OAAO,GAAGksB,UAAU,CAACrnO,GAAG,CAAC,SAAS,CAAC;IACvC,IAAI,OAAOm7M,OAAO,KAAK,QAAQ,EAAE;MAC\u002FBA,OAAO,GAAG,CAAC;IACb;IACA,IAAID,SAAS,GAAGmsB,UAAU,CAACrnO,GAAG,CAAC,WAAW,CAAC;IAC3C,IAAI,OAAOk7M,SAAS,KAAK,QAAQ,EAAE;MACjCA,SAAS,GAAG,CAAC;IACf;IACA,IAAIvnL,KAAK,GAAG0zM,UAAU,CAACrnO,GAAG,CAAC,OAAO,CAAC;IACnC,IAAI,CAAC9M,MAAM,CAACC,SAAS,CAACwgC,KAAK,CAAC,EAAE;MAC5BA,KAAK,GAAG,CAAC;IACX;IACA,IAAIlnB,WAAW,GAAG46N,UAAU,CAACrnO,GAAG,CAAC,aAAa,CAAC;IAC\u002FC,IAAI,OAAOyM,WAAW,KAAK,QAAQ,EAAE;MACnCA,WAAW,GAAG,CAAC;IACjB;IAEA,MAAM5I,UAAU,GAAG;MACjBngB,IAAI;MACJgS,IAAI,EAAEq\u002FM,QAAQ,CAACr\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\u002FD,MAAM2B,aAAa,GAAG,IAAI5\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\u002FB,GAAG,CAACK,aAAa;QAAE2wD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAC7D5jD,CAAC,EAAE;QAAE8xB,EAAE,EAAEr\u002FB,GAAG,CAACM,OAAO;QAAE0wD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MACvDo6M,EAAE,EAAE;QAAElsO,EAAE,EAAEr\u002FB,GAAG,CAACO,kBAAkB;QAAEywD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MACnEvnD,CAAC,EAAE;QAAEy1B,EAAE,EAAEr\u002FB,GAAG,CAACQ,WAAW;QAAEwwD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAC3Dq6M,EAAE,EAAE;QAAEnsO,EAAE,EAAEr\u002FB,GAAG,CAACS,SAAS;QAAEuwD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAC1DhkC,CAAC,EAAE;QAAEkS,EAAE,EAAEr\u002FB,GAAG,CAACU,IAAI;QAAEswD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MACpD2xB,CAAC,EAAE;QAAEzjD,EAAE,EAAEr\u002FB,GAAG,CAACW,OAAO;QAAEqwD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MACvDs6M,EAAE,EAAE;QAAEpsO,EAAE,EAAEr\u002FB,GAAG,CAACY,SAAS;QAAEowD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAG1DhkD,CAAC,EAAE;QAAEkyB,EAAE,EAAEr\u002FB,GAAG,CAACa,MAAM;QAAEmwD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MACtD3U,CAAC,EAAE;QAAEnd,EAAE,EAAEr\u002FB,GAAG,CAACc,MAAM;QAAEkwD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MACtDhjD,CAAC,EAAE;QAAEkxB,EAAE,EAAEr\u002FB,GAAG,CAACe,OAAO;QAAEiwD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MACvD94C,CAAC,EAAE;QAAEgnB,EAAE,EAAEr\u002FB,GAAG,CAACgB,QAAQ;QAAEgwD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MACxDlhD,CAAC,EAAE;QAAEovB,EAAE,EAAEr\u002FB,GAAG,CAACiB,QAAQ;QAAE+vD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MACxDtY,CAAC,EAAE;QAAExZ,EAAE,EAAEr\u002FB,GAAG,CAACkB,SAAS;QAAE8vD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MACzDvyC,EAAE,EAAE;QAAEygB,EAAE,EAAEr\u002FB,GAAG,CAACmB,SAAS;QAAE6vD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAC1DozB,CAAC,EAAE;QAAEllD,EAAE,EAAEr\u002FB,GAAG,CAACoB,MAAM;QAAE4vD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MACtDrZ,CAAC,EAAE;QAAEzY,EAAE,EAAEr\u002FB,GAAG,CAACqB,WAAW;QAAE2vD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAC3D\u002FK,CAAC,EAAE;QAAE\u002FmB,EAAE,EAAEr\u002FB,GAAG,CAACsB,IAAI;QAAE0vD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MACpDpyD,CAAC,EAAE;QAAEsgC,EAAE,EAAEr\u002FB,GAAG,CAACsB,IAAI;QAAE0vD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MACpD,IAAI,EAAE;QAAE9xB,EAAE,EAAEr\u002FB,GAAG,CAACuB,MAAM;QAAEyvD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MACzDj\u002FB,CAAC,EAAE;QAAEmN,EAAE,EAAEr\u002FB,GAAG,CAACwB,UAAU;QAAEwvD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAC1D,IAAI,EAAE;QAAE9xB,EAAE,EAAEr\u002FB,GAAG,CAACyB,YAAY;QAAEuvD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAC\u002FDxkD,CAAC,EAAE;QAAE0yB,EAAE,EAAEr\u002FB,GAAG,CAAC0B,eAAe;QAAEsvD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAC\u002FD,IAAI,EAAE;QAAE9xB,EAAE,EAAEr\u002FB,GAAG,CAAC2B,iBAAiB;QAAEqvD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MACpE\u002FkD,CAAC,EAAE;QAAEizB,EAAE,EAAEr\u002FB,GAAG,CAAC4B,OAAO;QAAEovD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAGvD29B,CAAC,EAAE;QAAEzvD,EAAE,EAAEr\u002FB,GAAG,CAAC6B,IAAI;QAAEmvD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MACpD,IAAI,EAAE;QAAE9xB,EAAE,EAAEr\u002FB,GAAG,CAAC8B,MAAM;QAAEkvD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAGzDu6M,EAAE,EAAE;QAAErsO,EAAE,EAAEr\u002FB,GAAG,CAAC+B,SAAS;QAAEivD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAC1Dw6M,EAAE,EAAE;QAAEtsO,EAAE,EAAEr\u002FB,GAAG,CAACgC,OAAO;QAAEgvD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MACxDy6M,EAAE,EAAE;QAAEvsO,EAAE,EAAEr\u002FB,GAAG,CAACiC,cAAc;QAAE+uD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAC\u002FD06M,EAAE,EAAE;QAAExsO,EAAE,EAAEr\u002FB,GAAG,CAACkC,cAAc;QAAE8uD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAC\u002FD26M,EAAE,EAAE;QAAEzsO,EAAE,EAAEr\u002FB,GAAG,CAACmC,SAAS;QAAE6uD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAC1D46M,EAAE,EAAE;QAAE1sO,EAAE,EAAEr\u002FB,GAAG,CAACoC,UAAU;QAAE4uD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAC3D66M,EAAE,EAAE;QAAE3sO,EAAE,EAAEr\u002FB,GAAG,CAACqC,OAAO;QAAE2uD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MACxD86M,EAAE,EAAE;QAAE5sO,EAAE,EAAEr\u002FB,GAAG,CAACsC,oBAAoB;QAAE0uD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MACrE+6M,EAAE,EAAE;QAAE7sO,EAAE,EAAEr\u002FB,GAAG,CAACuC,WAAW;QAAEyuD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAC5Dg7M,EAAE,EAAE;QAAE9sO,EAAE,EAAEr\u002FB,GAAG,CAACwC,QAAQ;QAAEwuD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MACzDi7M,EAAE,EAAE;QAAE\u002FsO,EAAE,EAAEr\u002FB,GAAG,CAACyC,kBAAkB;QAAEuuD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MACnEk7M,EAAE,EAAE;QAAEhtO,EAAE,EAAEr\u002FB,GAAG,CAAC0C,aAAa;QAAEsuD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAC9D,IAAI,EAAE;QAAE9xB,EAAE,EAAEr\u002FB,GAAG,CAAC2C,QAAQ;QAAEquD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAC3Dm7M,EAAE,EAAE;QAAEjtO,EAAE,EAAEr\u002FB,GAAG,CAAC4C,QAAQ;QAAEouD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MACzDo7M,EAAE,EAAE;QAAEltO,EAAE,EAAEr\u002FB,GAAG,CAAC6C,cAAc;QAAEmuD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAC\u002FD,GAAG,EAAE;QAAE9xB,EAAE,EAAEr\u002FB,GAAG,CAAC8C,gBAAgB;QAAEkuD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAClE,GAAG,EAAE;QACH9xB,EAAE,EAAEr\u002FB,GAAG,CAAC+C,0BAA0B;QAClCiuD,OAAO,EAAE,CAAC;QACVG,YAAY,EAAE;MAChB,CAAC;MAGDq7M,EAAE,EAAE;QAAEntO,EAAE,EAAEr\u002FB,GAAG,CAACgD,YAAY;QAAEguD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAC7Ds7M,EAAE,EAAE;QACFptO,EAAE,EAAEr\u002FB,GAAG,CAACiD,qBAAqB;QAC7B+tD,OAAO,EAAE,CAAC;QACVG,YAAY,EAAE;MAChB,CAAC;MAGDu7M,EAAE,EAAE;QAAErtO,EAAE,EAAEr\u002FB,GAAG,CAACkD,mBAAmB;QAAE8tD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MACpE3mC,EAAE,EAAE;QAAE6U,EAAE,EAAEr\u002FB,GAAG,CAACmD,iBAAiB;QAAE6tD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAClEw7M,EAAE,EAAE;QAAEttO,EAAE,EAAEr\u002FB,GAAG,CAACoD,cAAc;QAAE4tD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAK,CAAC;MAC9Dy7M,GAAG,EAAE;QAAEvtO,EAAE,EAAEr\u002FB,GAAG,CAACqD,eAAe;QAAE2tD,OAAO,EAAE,EAAE;QAAEG,YAAY,EAAE;MAAK,CAAC;MACjE07M,EAAE,EAAE;QAAExtO,EAAE,EAAEr\u002FB,GAAG,CAACsD,YAAY;QAAE0tD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAK,CAAC;MAC5D27M,GAAG,EAAE;QAAEztO,EAAE,EAAEr\u002FB,GAAG,CAACuD,aAAa;QAAEytD,OAAO,EAAE,EAAE;QAAEG,YAAY,EAAE;MAAK,CAAC;MAC\u002FDrjC,CAAC,EAAE;QAAEuR,EAAE,EAAEr\u002FB,GAAG,CAACwD,aAAa;QAAEwtD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAC7DzkD,CAAC,EAAE;QAAE2yB,EAAE,EAAEr\u002FB,GAAG,CAACyD,WAAW;QAAEutD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAC3D47M,EAAE,EAAE;QAAE1tO,EAAE,EAAEr\u002FB,GAAG,CAAC0D,iBAAiB;QAAEstD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAClE67M,EAAE,EAAE;QAAE3tO,EAAE,EAAEr\u002FB,GAAG,CAAC2D,eAAe;QAAEqtD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAChEryD,CAAC,EAAE;QAAEugC,EAAE,EAAEr\u002FB,GAAG,CAAC4D,kBAAkB;QAAEotD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAClE5jC,CAAC,EAAE;QAAE8R,EAAE,EAAEr\u002FB,GAAG,CAAC6D,gBAAgB;QAAEmtD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAGhE+iM,EAAE,EAAE;QAAE70N,EAAE,EAAEr\u002FB,GAAG,CAAC8D,WAAW;QAAEktD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAG5D87M,EAAE,EAAE;QAAE5tO,EAAE,EAAEr\u002FB,GAAG,CAAC+D,gBAAgB;QAAEitD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MACjE+7M,EAAE,EAAE;QAAE7tO,EAAE,EAAEr\u002FB,GAAG,CAACgE,cAAc;QAAEgtD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAC\u002FDg8M,EAAE,EAAE;QAAE9tO,EAAE,EAAEr\u002FB,GAAG,CAACiE,cAAc;QAAE+sD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAG\u002FDi8M,EAAE,EAAE;QAAE\u002FtO,EAAE,EAAEr\u002FB,GAAG,CAACkE,YAAY;QAAE8sD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAC7Dk8M,EAAE,EAAE;QAAEhuO,EAAE,EAAEr\u002FB,GAAG,CAACmE,SAAS;QAAE6sD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAC1D5xD,EAAE,EAAE;QAAE8\u002FB,EAAE,EAAEr\u002FB,GAAG,CAACoE,cAAc;QAAE4sD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAC\u002FDm8M,GAAG,EAAE;QAAEjuO,EAAE,EAAEr\u002FB,GAAG,CAACqE,kBAAkB;QAAE2sD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MACpEo8M,GAAG,EAAE;QACHluO,EAAE,EAAEr\u002FB,GAAG,CAACsE,uBAAuB;QAC\u002FB0sD,OAAO,EAAE,CAAC;QACVG,YAAY,EAAE;MAChB,CAAC;MACDq8M,GAAG,EAAE;QAAEnuO,EAAE,EAAEr\u002FB,GAAG,CAACuE,gBAAgB;QAAEysD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAGlEs8M,EAAE,EAAE;QAAEpuO,EAAE,EAAEr\u002FB,GAAG,CAACwE,WAAW;QAAEwsD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAC5Du8M,EAAE,EAAE;QAAEruO,EAAE,EAAEr\u002FB,GAAG,CAACyE,SAAS;QAAEusD,OAAO,EAAE,CAAC;QAAEG,YAAY,EAAE;MAAM,CAAC;MAG1Dw8M,EAAE,EAAE,IAAI;MACRC,EAAE,EAAE,IAAI;MACRC,IAAI,EAAE,IAAI;MACVC,EAAE,EAAE,IAAI;MACRC,GAAG,EAAE,IAAI;MACTC,IAAI,EAAE,IAAI;MACVC,KAAK,EAAE,IAAI;MACX98G,EAAE,EAAE,IAAI;MACR+8G,GAAG,EAAE,IAAI;MACTC,IAAI,EAAE;IACR,CAAC,CACH,CAAC;EACH;EAEA,OAAOC,oBAAoB,GAAG,EAAE;EAEhC5lQ,WAAWA,CAAC0a,MAAM,EAAEvO,IAAI,EAAEulP,YAAY,GAAG,IAAI4E,YAAY,CAAC,CAAC,EAAE;IAG3D,IAAI,CAAClpM,MAAM,GAAG,IAAIxG,MAAM,CAAC;MACvBC,KAAK,EAAE,IAAIyB,KAAK,CAAC5tC,MAAM,EAAE87O,qBAAqB,CAACsM,KAAK,CAAC;MACrD32P;IACF,CAAC,CAAC;IACF,IAAI,CAACulP,YAAY,GAAGA,YAAY;IAChC,IAAI,CAACmU,gBAAgB,GAAG,EAAE;IAC1B,IAAI,CAACC,SAAS,GAAG,KAAK;IACtB,IAAI,CAACC,kBAAkB,GAAG,CAAC;EAC7B;EAEA,IAAInP,gBAAgBA,CAAA,EAAG;IACrB,OAAO,IAAI,CAAClF,YAAY,CAACkR,UAAU,CAAC\u002FjQ,MAAM;EAC5C;EAuBAod,IAAIA,CAACy+N,SAAS,EAAE;IACd,IAAIlgO,IAAI,GAAGkgO,SAAS,CAAClgO,IAAI;IACzB,OAAO,IAAI,EAAE;MACX,MAAMrb,GAAG,GAAG,IAAI,CAACiuD,MAAM,CAAChG,MAAM,CAAC,CAAC;MAChC,IAAIjoD,GAAG,YAAY4M,GAAG,EAAE;QACtB,MAAMC,GAAG,GAAG7M,GAAG,CAAC6M,GAAG;QAEnB,MAAMg6P,MAAM,GAAGxP,qBAAqB,CAACsM,KAAK,CAAC92P,GAAG,CAAC;QAC\u002FC,IAAI,CAACg6P,MAAM,EAAE;UACXloQ,IAAI,CAAE,oBAAmBkO,GAAI,IAAG,CAAC;UACjC;QACF;QAEA,MAAMw4M,EAAE,GAAGwhD,MAAM,CAACnvO,EAAE;QACpB,MAAM2xB,OAAO,GAAGw9M,MAAM,CAACx9M,OAAO;QAC9B,IAAIy9M,UAAU,GAAGzrP,IAAI,KAAK,IAAI,GAAGA,IAAI,CAAC3b,MAAM,GAAG,CAAC;QAIhD,IAAI,CAAC,IAAI,CAACinQ,SAAS,EAAE;UACnB,IAAI,CAACC,kBAAkB,GAAG,CAAC;QAC7B;QACA,IAAI,CAACD,SAAS,GAAGthD,EAAE,IAAIhtN,GAAG,CAACa,MAAM,IAAImsN,EAAE,IAAIhtN,GAAG,CAAC4B,OAAO;QAEtD,IAAI,CAAC4sQ,MAAM,CAACr9M,YAAY,EAAE;UAExB,IAAIs9M,UAAU,KAAKz9M,OAAO,EAAE;YAC1B,MAAMq9M,gBAAgB,GAAG,IAAI,CAACA,gBAAgB;YAC9C,OAAOI,UAAU,GAAGz9M,OAAO,EAAE;cAC3Bq9M,gBAAgB,CAACnkQ,IAAI,CAAC8Y,IAAI,CAAC+T,KAAK,CAAC,CAAC,CAAC;cACnC03O,UAAU,EAAE;YACd;YACA,OAAOA,UAAU,GAAGz9M,OAAO,IAAIq9M,gBAAgB,CAAChnQ,MAAM,KAAK,CAAC,EAAE;cAC5D,IAAI2b,IAAI,KAAK,IAAI,EAAE;gBACjBA,IAAI,GAAG,EAAE;cACX;cACAA,IAAI,CAAC2iC,OAAO,CAAC0oN,gBAAgB,CAACz4N,GAAG,CAAC,CAAC,CAAC;cACpC64N,UAAU,EAAE;YACd;UACF;UAEA,IAAIA,UAAU,GAAGz9M,OAAO,EAAE;YACxB,MAAMxX,UAAU,GACb,WAAUhlC,GAAI,cAAaw8C,OAAQ,SAAQ,GAC3C,gBAAey9M,UAAW,QAAO;YAMpC,IACE,IAAI,CAACH,SAAS,IACd,EAAE,IAAI,CAACC,kBAAkB,GACvBvP,qBAAqB,CAACoP,oBAAoB,EAC5C;cACA,MAAM,IAAIllQ,WAAW,CAAE,WAAUswC,UAAW,EAAC,CAAC;YAChD;YAGAlzC,IAAI,CAAE,YAAWkzC,UAAW,EAAC,CAAC;YAC9B,IAAIx2B,IAAI,KAAK,IAAI,EAAE;cACjBA,IAAI,CAAC3b,MAAM,GAAG,CAAC;YACjB;YACA;UACF;QACF,CAAC,MAAM,IAAIonQ,UAAU,GAAGz9M,OAAO,EAAE;UAC\u002FB9qD,IAAI,CACD,WAAUsO,GAAI,kBAAiBw8C,OAAQ,UAAS,GAC9C,gBAAey9M,UAAW,QAC\u002FB,CAAC;QACH;QAGA,IAAI,CAACC,iBAAiB,CAAC1hD,EAAE,EAAEhqM,IAAI,CAAC;QAEhCkgO,SAAS,CAACl2B,EAAE,GAAGA,EAAE;QACjBk2B,SAAS,CAAClgO,IAAI,GAAGA,IAAI;QACrB,OAAO,IAAI;MACb;MACA,IAAIrb,GAAG,KAAKsM,GAAG,EAAE;QACf,OAAO,KAAK;MACd;MAEA,IAAItM,GAAG,KAAK,IAAI,EAAE;QAChB,IAAIqb,IAAI,KAAK,IAAI,EAAE;UACjBA,IAAI,GAAG,EAAE;QACX;QACAA,IAAI,CAAC9Y,IAAI,CAACvC,GAAG,CAAC;QACd,IAAIqb,IAAI,CAAC3b,MAAM,GAAG,EAAE,EAAE;UACpB,MAAM,IAAI6B,WAAW,CAAC,oBAAoB,CAAC;QAC7C;MACF;IACF;EACF;EAEAwlQ,iBAAiBA,CAAC1hD,EAAE,EAAEhqM,IAAI,EAAE;IAC1B,QAAQgqM,EAAE,GAAG,CAAC;MACZ,KAAKhtN,GAAG,CAACU,IAAI;QACX,IAAI,CAACw5P,YAAY,CAACx5P,IAAI,CAAC,CAAC;QACxB;MACF,KAAKV,GAAG,CAACW,OAAO;QACd,IAAI,CAACu5P,YAAY,CAACv5P,OAAO,CAAC,CAAC;QAC3B;MACF,KAAKX,GAAG,CAACY,SAAS;QAChB,IAAI,CAACs5P,YAAY,CAACt5P,SAAS,CAACoiB,IAAI,CAAC;QACjC;IACJ;EACF;AACF;;;AC3hKyB;AACoB;AAOlB;AACkB;AACU;AACC;AACL;AACR;AAE3C,MAAM2rP,0BAA0B,SAAS3P,qBAAqB,CAAC;EAC7Dx2P,WAAWA,CAAC6B,GAAG,EAAE;IACf,KAAK,CAAC,IAAIgX,YAAY,CAAChX,GAAG,CAAC,CAAC;EAC9B;EAEAugB,KAAKA,CAAA,EAAG;IACN,MAAMs4N,SAAS,GAAG;MAChBl2B,EAAE,EAAE,CAAC;MACLhqM,IAAI,EAAE;IACR,CAAC;IACD,MAAMyM,MAAM,GAAG;MACbqwO,QAAQ,EAAE,CAAC;MACXl4C,QAAQ,EAAE,EAAE;MACZgnD,SAAS,EAAgB,IAAIxmP,iBAAiB,CAAC,CAAC;IAClD,CAAC;IAED,IAAI;MACF,OAAO,IAAI,EAAE;QACX86N,SAAS,CAAClgO,IAAI,CAAC3b,MAAM,GAAG,CAAC;QAEzB,IAAI,CAAC,IAAI,CAACod,IAAI,CAACy+N,SAAS,CAAC,EAAE;UACzB;QACF;QACA,IAAI,IAAI,CAACkc,gBAAgB,KAAK,CAAC,EAAE;UAC\u002FB;QACF;QACA,MAAM;UAAEpyC,EAAE;UAAEhqM;QAAK,CAAC,GAAGkgO,SAAS;QAE9B,QAAQl2B,EAAE,GAAG,CAAC;UACZ,KAAKhtN,GAAG,CAACqC,OAAO;YACd,MAAM,CAACulN,QAAQ,EAAEk4C,QAAQ,CAAC,GAAG98O,IAAI;YACjC,IAAI4kM,QAAQ,YAAYtzM,IAAI,EAAE;cAC5Bmb,MAAM,CAACm4L,QAAQ,GAAGA,QAAQ,CAACr\u002FM,IAAI;YACjC;YACA,IAAI,OAAOu3P,QAAQ,KAAK,QAAQ,IAAIA,QAAQ,GAAG,CAAC,EAAE;cAChDrwO,MAAM,CAACqwO,QAAQ,GAAGA,QAAQ;YAC5B;YACA;UACF,KAAK9\u002FP,GAAG,CAAC2D,eAAe;YACtBokB,UAAU,CAACgD,UAAU,CAAC5C,GAAG,CAACE,UAAU,CAACrF,IAAI,EAAE,CAAC,EAAEyM,MAAM,CAACm\u002FO,SAAS,EAAE,CAAC,CAAC;YAClE;UACF,KAAK5uQ,GAAG,CAACyD,WAAW;YAClBskB,UAAU,CAACgD,UAAU,CAACC,IAAI,CAAC3C,UAAU,CAACrF,IAAI,EAAE,CAAC,EAAEyM,MAAM,CAACm\u002FO,SAAS,EAAE,CAAC,CAAC;YACnE;UACF,KAAK5uQ,GAAG,CAAC6D,gBAAgB;YACvBkkB,UAAU,CAACgD,UAAU,CAACE,IAAI,CAAC5C,UAAU,CAACrF,IAAI,EAAE,CAAC,EAAEyM,MAAM,CAACm\u002FO,SAAS,EAAE,CAAC,CAAC;YACnE;QACJ;MACF;IACF,CAAC,CAAC,OAAOnpP,MAAM,EAAE;MACfnf,IAAI,CAAE,8CAA6Cmf,MAAO,IAAG,CAAC;IAChE;IAEA,OAAOgK,MAAM;EACf;AACF;AAGA,SAASo\u002FO,sBAAsBA,CAACxkQ,GAAG,EAAE;EACnC,OAAO,IAAIskQ,0BAA0B,CAACtkQ,GAAG,CAAC,CAACugB,KAAK,CAAC,CAAC;AACpD;AAEA,MAAMkkP,yBAAyB,SAAS9P,qBAAqB,CAAC;EAC5Dx2P,WAAWA,CAAC0a,MAAM,EAAE44O,gBAAgB,EAAEnnP,IAAI,EAAE;IAC1C,KAAK,CAACuO,MAAM,CAAC;IACb,IAAI,CAACA,MAAM,GAAGA,MAAM;IACpB,IAAI,CAAC44O,gBAAgB,GAAGA,gBAAgB;IACxC,IAAI,CAACnnP,IAAI,GAAGA,IAAI;IAEhB,IAAI,CAAC8V,SAAS,GAAGvH,MAAM,CAACvM,IAAI,EAAE9D,GAAG,CAAC,WAAW,CAAC;EAChD;EAEA+X,KAAKA,CAAA,EAAG;IACN,MAAMs4N,SAAS,GAAG;MAChBl2B,EAAE,EAAE,CAAC;MACLhqM,IAAI,EAAE;IACR,CAAC;IACD,IAAIyM,MAAM,GAAG;MACXs0O,WAAW,EAAE,CAAC;MACdjE,QAAQ,EAAE,CAAC;MACXl4C,QAAQ,EAAE,EAAE;MACZgnD,SAAS,EAAgB,IAAIxmP,iBAAiB,CAAC,CAAC,CAAC;MACjD8zO,cAAc,EAAEn0O,UAAU,CAACgD,UAAU,CAACC;IACxC,CAAC;IACD,IAAI+jP,SAAS,GAAG,KAAK;IACrB,MAAMt6O,KAAK,GAAG,EAAE;IAEhB,IAAI;MACF,OAAO,IAAI,EAAE;QACXyuN,SAAS,CAAClgO,IAAI,CAAC3b,MAAM,GAAG,CAAC;QAEzB,IAAI0nQ,SAAS,IAAI,CAAC,IAAI,CAACtqP,IAAI,CAACy+N,SAAS,CAAC,EAAE;UACtC;QACF;QACA,MAAM;UAAEl2B,EAAE;UAAEhqM;QAAK,CAAC,GAAGkgO,SAAS;QAE9B,QAAQl2B,EAAE,GAAG,CAAC;UACZ,KAAKhtN,GAAG,CAACU,IAAI;YACX+zB,KAAK,CAACvqB,IAAI,CAAC;cACT65P,WAAW,EAAEt0O,MAAM,CAACs0O,WAAW;cAC\u002FBjE,QAAQ,EAAErwO,MAAM,CAACqwO,QAAQ;cACzBl4C,QAAQ,EAAEn4L,MAAM,CAACm4L,QAAQ;cACzBgnD,SAAS,EAAEn\u002FO,MAAM,CAACm\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\u002FM,SAAS,CAAC;QAC\u002FC,IAAI,CAACC,QAAQ,GAAGt+M,IAAI,CAACgE,GAAG,CAACnF,IAAI,EAAE,IAAI,CAACy\u002FM,QAAQ,CAAC;MAC\u002FC;IACF;IAEA,OAAO,IAAI,CAAC39L,SAAS;EACvB;EAEA,OAAO0lP,oBAAoBA,CAACzhQ,IAAI,EAAEoS,QAAQ,EAAEg\u002FO,QAAQ,EAAE;IAEpD,MAAM,CAACzwP,EAAE,EAAEI,EAAE,EAAEH,EAAE,EAAEI,EAAE,CAAC,GAAGhB,IAAI;IAC7B,IAAIisL,CAAC,GAAGrrL,EAAE,GAAGD,EAAE;IACf,IAAIwpC,CAAC,GAAGnpC,EAAE,GAAGD,EAAE;IAEf,IAAIqR,QAAQ,GAAG,GAAG,KAAK,CAAC,EAAE;MACxB,CAAC65K,CAAC,EAAE9hJ,CAAC,CAAC,GAAG,CAACA,CAAC,EAAE8hJ,CAAC,CAAC;IACjB;IACA,MAAMinC,UAAU,GAAGjrO,WAAW,GAAGmpQ,QAAQ;IACzC,MAAMsQ,WAAW,GAAGx5Q,mBAAmB,GAAGkpQ,QAAQ;IAElD,OAAO;MACLhsB,MAAM,EAAE,CAAC,CAAC,EAAEj7L,CAAC,GAAGu3N,WAAW,GAAGxuC,UAAU,CAAC;MACzChI,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAEj\u002FB,CAAC,EAAE9hJ,CAAC,CAAC;MAClBjtB,MAAM,EACJ9K,QAAQ,KAAK,CAAC,GAAGD,iBAAiB,CAACC,QAAQ,EAAE+3B,CAAC,EAAE+oL,UAAU,CAAC,GAAGt4N;IAClE,CAAC;EACH;EAEA+mQ,gBAAgBA,CAACnM,IAAI,EAAEx1P,IAAI,EAAEoS,QAAQ,EAAEg\u002FO,QAAQ,EAAEwQ,OAAO,EAAEC,WAAW,EAAE;IACrE,MAAM5nB,GAAG,GAAG,IAAI,CAACqnB,cAAc,CAAC,CAAC;IACjC,MAAMz+N,KAAK,GAAG,EAAE;IAChB,IAAI9I,QAAQ,GAAG,CAAC80N,QAAQ;IACxB,KAAK,MAAMzsN,IAAI,IAAIozN,IAAI,CAACnnP,KAAK,CAAC,UAAU,CAAC,EAAE;MACzCw0B,KAAK,CAACrnC,IAAI,CAAC4mC,IAAI,CAAC;MAGhB,MAAM0\u002FN,SAAS,GAAG7nB,GAAG,CAACunB,WAAW,CAACp\u002FN,IAAI,CAAC,CAAC\u002FvB,KAAK;MAC7C0nB,QAAQ,GAAG3+B,IAAI,CAACgE,GAAG,CAAC26B,QAAQ,EAAE+nO,SAAS,CAAC;MACxC,KAAK,MAAM7nQ,IAAI,IAAIyV,aAAa,CAAC0yB,IAAI,CAAC,EAAE;QACtC,MAAM5zB,IAAI,GAAG1T,MAAM,CAAC4kO,aAAa,CAACzlO,IAAI,CAAC;QACvC,IAAIoY,KAAK,GAAG,IAAI,CAACu8C,MAAM,CAACzqD,GAAG,CAAClK,IAAI,CAAC;QACjC,IAAIoY,KAAK,KAAKzX,SAAS,EAAE;UACvB,MAAMq5N,OAAO,GAAGgmB,GAAG,CAACunB,WAAW,CAAChzP,IAAI,CAAC;UACrC6D,KAAK,GAAGjX,IAAI,CAAC+R,IAAI,CAAC8mN,OAAO,CAAC5hN,KAAK,CAAC;UAChC,IAAI,CAACu8C,MAAM,CAACtnD,GAAG,CAACrN,IAAI,EAAEoY,KAAK,CAAC;UAC5B,IAAI,CAAConM,SAAS,GAAGr+M,IAAI,CAACC,GAAG,CAACpB,IAAI,EAAE,IAAI,CAACw\u002FM,SAAS,CAAC;UAC\u002FC,IAAI,CAACC,QAAQ,GAAGt+M,IAAI,CAACgE,GAAG,CAACnF,IAAI,EAAE,IAAI,CAACy\u002FM,QAAQ,CAAC;QAC\u002FC;MACF;IACF;IACA3\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\u002F0N,CAAC,GAAG\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\u002F5P,KAAK,EAAE;IAClB,MAAM\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\u002FB,IAAI,CAACA,YAAY,GAAGc,SAAS;EAC\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\u002FJ,UAAU,CAAC,EAAE,CAAC;IAC5B,KAAK\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EACtE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EACtE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EACtE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EACtE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EACtE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EACtE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EACtE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EACtE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EACtE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EACtE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EACtE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EACtE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EACtE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EACtE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EACtE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EACtE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EACtE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EACtE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EACtE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EACtE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EACtE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EACtE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EACtE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EACtE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EACtE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EACtE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EACtE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EACtE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EACtE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,IAAIA,MAAM,CAAC,UAAU,EAAE,UAA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\u002FN,CAAC,GAAG,IAAI6\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,CAAC,CAAC;IACX;IAEA,IAAIppB,MAAM;IACV,IAAI,CAAC6qP,OAAO,EAAE;MACZ7qP,MAAM,GAAG,IAAInlB,UAAU,CAAC,EAAE,CAAC;MAC3BguQ,EAAE,CAACkB,MAAM,CAAC\u002FpP,MAAM,EAAE,CAAC,CAAC;MACpBxI,EAAE,CAACuyP,MAAM,CAAC\u002FpP,MAAM,EAAE,CAAC,CAAC;MACpBtI,EAAE,CAACqyP,MAAM,CAAC\u002FpP,MAAM,EAAE,EAAE,CAAC;MACrB8oP,EAAE,CAACiB,MAAM,CAAC\u002FpP,MAAM,EAAE,EAAE,CAAC;MACrBuqP,EAAE,CAACR,MAAM,CAAC\u002FpP,MAAM,EAAE,EAAE,CAAC;MACrBwqP,EAAE,CAACT,MAAM,CAAC\u002FpP,MAAM,EAAE,EAAE,CAAC;MACrByqP,EAAE,CAACV,MAAM,CAAC\u002FpP,MAAM,EAAE,EAAE,CAAC;MACrB0qP,EAAE,CAACX,MAAM,CAAC\u002FpP,MAAM,EAAE,EAAE,CAAC;IACvB,CAAC,MAAM;MACLA,MAAM,GAAG,IAAInlB,UAAU,CAAC,EAAE,CAAC;MAC3BguQ,EAAE,CAACkB,MAAM,CAAC\u002FpP,MAAM,EAAE,CAAC,CAAC;MACpBxI,EAAE,CAACuyP,MAAM,CAAC\u002FpP,MAAM,EAAE,CAAC,CAAC;MACpBtI,EAAE,CAACqyP,MAAM,CAAC\u002FpP,MAAM,EAAE,EAAE,CAAC;MACrB8oP,EAAE,CAACiB,MAAM,CAAC\u002FpP,MAAM,EAAE,EAAE,CAAC;MACrBuqP,EAAE,CAACR,MAAM,CAAC\u002FpP,MAAM,EAAE,EAAE,CAAC;MACrBwqP,EAAE,CAACT,MAAM,CAAC\u002FpP,MAAM,EAAE,EAAE,CAAC;IACvB;IACA,OAAOA,MAAM;EACf;EAEA,OAAOqtO,IAAI;AACb,CAAC,CAAE,CAAC;AAEJ,SAASyd,eAAeA,CAACv\u002FP,IAAI,EAAEe,MAAM,EAAE1U,MAAM,EAAE;EAC7C,OAAO+yQ,eAAe,CAACp\u002FP,IAAI,EAAEe,MAAM,EAAE1U,MAAM,EAAkB,IAAI,CAAC;AACpE;AAEA,MAAMmzQ,UAAU,CAAC;EACftC,YAAYA,CAACl9P,IAAI,EAAE;IACjB,OAAOA,IAAI;EACb;EAEAm9P,OAAOA,CAACn9P,IAAI,EAAE;IACZ,OAAOA,IAAI;EACb;AACF;AAEA,MAAMy\u002FP,aAAa,CAAC;EAClBjyQ,WAAWA,CAAA,EAAG;IACZ,IAAI,IAAI,CAACA,WAAW,KAAKiyQ,aAAa,EAAE;MACtCl0Q,WAAW,CAAC,kCAAkC,CAAC;IACjD;IAEA,IAAI,CAACm0Q,EAAE,GAAG,IAAIpwQ,UAAU,CAAC,CACvB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CACvB,CAAC;IAEF,IAAI,CAACqwQ,MAAM,GAAG,IAAIrwQ,UAAU,CAAC,CAC3B,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CACvB,CAAC;IAEF,IAAI,CAACswQ,IAAI,GAAG,IAAI1vQ,WAAW,CAAC,CAC1B,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE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,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE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\u002FD,IACEsC,YAAY,CAAC\u002FB,iBAAiB,CAACL,QAAQ,EAAEM,kBAAkB,EAAEC,YAAY,CAAC,EAC1E;MACA,OAAO6B,YAAY,CAACzB,UAAU,CAACX,QAAQ,EAAEY,WAAW,EAAEC,cAAc,CAAC;IACvE,CAAC,MAAM,IACLb,QAAQ,CAACl1Q,MAAM,IACfs3Q,YAAY,CAACrC,kBAAkB,CAC7BC,QAAQ,EACRC,mBAAmB,EACnBgC,MAAM,EACN9B,aACF,CAAC,EACD;MACA,OAAOiC,YAAY,CAAC5B,WAAW,CAC7BR,QAAQ,EACRS,YAAY,EACZwB,MAAM,EACNvB,eACF,CAAC;IACH;IAEA,OAAO,IAAI;EACb;EAEA,CAAC2B,cAAcC,CACbC,MAAM,EACNvC,QAAQ,EACRG,aAAa,EACbI,YAAY,EACZt2O,KAAK,EACL+3O,QAAQ,EACRvG,SAAS,EACT+G,eAAe,EACf;IACA,MAAMC,YAAY,GAAG,EAAE,GAAGtC,aAAa,CAACr1Q,MAAM,GAAGy3Q,MAAM,CAACz3Q,MAAM;IAC9D,MAAMs1Q,QAAQ,GAAG,IAAIryQ,UAAU,CAAC00Q,YAAY,CAAC;IAC7C,IAAIp1Q,CAAC,GAAG,CAAC;MACPke,CAAC;MACD1b,CAAC;IACH,IAAImwQ,QAAQ,EAAE;MACZnwQ,CAAC,GAAGtC,IAAI,CAACC,GAAG,CAAC,EAAE,EAAEwyQ,QAAQ,CAACl1Q,MAAM,CAAC;MACjC,OAAOuC,CAAC,GAAGwC,CAAC,EAAE,EAAExC,CAAC,EAAE;QACjB+yQ,QAAQ,CAAC\u002FyQ,CAAC,CAAC,GAAG2yQ,QAAQ,CAAC3yQ,CAAC,CAAC;MAC3B;IACF;IACAke,CAAC,GAAG,CAAC;IACL,OAAOle,CAAC,GAAG,EAAE,EAAE;MACb+yQ,QAAQ,CAAC\u002FyQ,CAAC,EAAE,CAAC,GAAGu0Q,sBAAsB,CAAC,CAACC,oBAAoB,CAACt2P,CAAC,EAAE,CAAC;IACnE;IAEA,KAAKA,CAAC,GAAG,CAAC,EAAE1b,CAAC,GAAGswQ,aAAa,CAACr1Q,MAAM,EAAEygB,CAAC,GAAG1b,CAAC,EAAE,EAAE0b,CAAC,EAAE;MAChD60P,QAAQ,CAAC\u002FyQ,CAAC,EAAE,CAAC,GAAG8yQ,aAAa,CAAC50P,CAAC,CAAC;IAClC;IACA60P,QAAQ,CAAC\u002FyQ,CAAC,EAAE,CAAC,GAAG48B,KAAK,GAAG,IAAI;IAC5Bm2O,QAAQ,CAAC\u002FyQ,CAAC,EAAE,CAAC,GAAI48B,KAAK,IAAI,CAAC,GAAI,IAAI;IACnCm2O,QAAQ,CAAC\u002FyQ,CAAC,EAAE,CAAC,GAAI48B,KAAK,IAAI,EAAE,GAAI,IAAI;IACpCm2O,QAAQ,CAAC\u002FyQ,CAAC,EAAE,CAAC,GAAI48B,KAAK,KAAK,EAAE,GAAI,IAAI;IACrC,KAAK1e,CAAC,GAAG,CAAC,EAAE1b,CAAC,GAAG0yQ,MAAM,CAACz3Q,MAAM,EAAEygB,CAAC,GAAG1b,CAAC,EAAE,EAAE0b,CAAC,EAAE;MACzC60P,QAAQ,CAAC\u002FyQ,CAAC,EAAE,CAAC,GAAGk1Q,MAAM,CAACh3P,CAAC,CAAC;IAC3B;IACA,IAAIy2P,QAAQ,IAAI,CAAC,IAAI,CAACQ,eAAe,EAAE;MACrCpC,QAAQ,CAAC\u002FyQ,CAAC,EAAE,CAAC,GAAG,IAAI;MACpB+yQ,QAAQ,CAAC\u002FyQ,CAAC,EAAE,CAAC,GAAG,IAAI;MACpB+yQ,QAAQ,CAAC\u002FyQ,CAAC,EAAE,CAAC,GAAG,IAAI;MACpB+yQ,QAAQ,CAAC\u002FyQ,CAAC,EAAE,CAAC,GAAG,IAAI;IACtB;IACA,IAAIkzP,IAAI,GAAGsb,YAAY,CAACuE,QAAQ,EAAE,CAAC,EAAE\u002FyQ,CAAC,CAAC;IACvC,MAAMq1Q,gBAAgB,GAAGjH,SAAS,IAAI,CAAC;IACvC,IAAIuG,QAAQ,IAAI,CAAC,EAAE;MACjB,KAAKz2P,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,EAAE,EAAE,EAAEA,CAAC,EAAE;QACvBg1O,IAAI,GAAGsb,YAAY,CAACtb,IAAI,EAAE,CAAC,EAAEmiB,gBAAgB,CAAC;MAChD;IACF;IACA,MAAMC,aAAa,GAAGpiB,IAAI,CAAC7yP,QAAQ,CAAC,CAAC,EAAEg1Q,gBAAgB,CAAC;IACxD,IAAInD,MAAM,EAAEqD,SAAS;IAErB,IAAIZ,QAAQ,IAAI,CAAC,EAAE;MACjB,KAAK30Q,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,EAAE,EAAE,EAAEA,CAAC,EAAE;QACvB+yQ,QAAQ,CAAC\u002FyQ,CAAC,CAAC,GAAGu0Q,sBAAsB,CAAC,CAACC,oBAAoB,CAACx0Q,CAAC,CAAC;MAC\u002FD;MACA,KAAKke,CAAC,GAAG,CAAC,EAAE1b,CAAC,GAAG0yQ,MAAM,CAACz3Q,MAAM,EAAEygB,CAAC,GAAG1b,CAAC,EAAE,EAAE0b,CAAC,EAAE;QACzC60P,QAAQ,CAAC\u002FyQ,CAAC,EAAE,CAAC,GAAGk1Q,MAAM,CAACh3P,CAAC,CAAC;MAC3B;MACAg0P,MAAM,GAAG,IAAI\u002FD,aAAa,CAACmH,aAAa,CAAC;MACzCC,SAAS,GAAGrD,MAAM,CAAC7D,YAAY,CAACG,YAAY,CAACuE,QAAQ,EAAE,CAAC,EAAE\u002FyQ,CAAC,CAAC,CAAC;MAC7DwC,CAAC,GAAG8yQ,aAAa,CAAC73Q,MAAM;MACxB,MAAM+3Q,UAAU,GAAG,IAAI90Q,UAAU,CAAC8B,CAAC,CAAC;MACpC,KAAK0b,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAI,EAAE,EAAE,EAAEA,CAAC,EAAE;QACxB,KAAK,IAAIyF,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGnhB,CAAC,EAAE,EAAEmhB,CAAC,EAAE;UAC1B6xP,UAAU,CAAC7xP,CAAC,CAAC,GAAG2xP,aAAa,CAAC3xP,CAAC,CAAC,GAAGzF,CAAC;QACtC;QACAg0P,MAAM,GAAG,IAAI\u002FD,aAAa,CAACqH,UAAU,CAAC;QACtCD,SAAS,GAAGrD,MAAM,CAAC7D,YAAY,CAACkH,SAAS,CAAC;MAC5C;MACA,KAAKr3P,CAAC,GAAG,CAAC,EAAE1b,CAAC,GAAG+yQ,SAAS,CAAC93Q,MAAM,EAAEygB,CAAC,GAAG1b,CAAC,EAAE,EAAE0b,CAAC,EAAE;QAC5C,IAAIg1P,YAAY,CAACh1P,CAAC,CAAC,KAAKq3P,SAAS,CAACr3P,CAAC,CAAC,EAAE;UACpC,OAAO,IAAI;QACb;MACF;IACF,CAAC,MAAM;MACLg0P,MAAM,GAAG,IAAI\u002FD,aAAa,CAACmH,aAAa,CAAC;MACzCC,SAAS,GAAGrD,MAAM,CAAC7D,YAAY,CAC7BkG,sBAAsB,CAAC,CAACC,oBAC1B,CAAC;MACD,KAAKt2P,CAAC,GAAG,CAAC,EAAE1b,CAAC,GAAG+yQ,SAAS,CAAC93Q,MAAM,EAAEygB,CAAC,GAAG1b,CAAC,EAAE,EAAE0b,CAAC,EAAE;QAC5C,IAAIg1P,YAAY,CAACh1P,CAAC,CAAC,KAAKq3P,SAAS,CAACr3P,CAAC,CAAC,EAAE;UACpC,OAAO,IAAI;QACb;MACF;IACF;IACA,OAAOo3P,aAAa;EACtB;EAEA,CAACG,kBAAkBC,CAAC\u002FC,QAAQ,EAAEG,aAAa,EAAE6B,QAAQ,EAAEvG,SAAS,EAAE;IAChE,MAAM2E,QAAQ,GAAG,IAAIryQ,UAAU,CAAC,EAAE,CAAC;IACnC,IAAIV,CAAC,GAAG,CAAC;IACT,MAAMwC,CAAC,GAAGtC,IAAI,CAACC,GAAG,CAAC,EAAE,EAAEwyQ,QAAQ,CAACl1Q,MAAM,CAAC;IACvC,OAAOuC,CAAC,GAAGwC,CAAC,EAAE,EAAExC,CAAC,EAAE;MACjB+yQ,QAAQ,CAAC\u002FyQ,CAAC,CAAC,GAAG2yQ,QAAQ,CAAC3yQ,CAAC,CAAC;IAC3B;IACA,IAAIke,CAAC,GAAG,CAAC;IACT,OAAOle,CAAC,GAAG,EAAE,EAAE;MACb+yQ,QAAQ,CAAC\u002FyQ,CAAC,EAAE,CAAC,GAAGu0Q,sBAAsB,CAAC,CAACC,oBAAoB,CAACt2P,CAAC,EAAE,CAAC;IACnE;IACA,IAAIg1O,IAAI,GAAGsb,YAAY,CAACuE,QAAQ,EAAE,CAAC,EAAE\u002FyQ,CAAC,CAAC;IACvC,MAAMq1Q,gBAAgB,GAAGjH,SAAS,IAAI,CAAC;IACvC,IAAIuG,QAAQ,IAAI,CAAC,EAAE;MACjB,KAAKz2P,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,EAAE,EAAE,EAAEA,CAAC,EAAE;QACvBg1O,IAAI,GAAGsb,YAAY,CAACtb,IAAI,EAAE,CAAC,EAAEA,IAAI,CAACz1P,MAAM,CAAC;MAC3C;IACF;IAEA,IAAIy0Q,MAAM,EAAEgB,YAAY;IACxB,IAAIyB,QAAQ,IAAI,CAAC,EAAE;MACjBzB,YAAY,GAAGJ,aAAa;MAC5B,MAAM0C,UAAU,GAAG,IAAI90Q,UAAU,CAAC20Q,gBAAgB,CAAC;MACnD,KAAKn3P,CAAC,GAAG,EAAE,EAAEA,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;QACxB,KAAK,IAAIyF,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0xP,gBAAgB,EAAE,EAAE1xP,CAAC,EAAE;UACzC6xP,UAAU,CAAC7xP,CAAC,CAAC,GAAGuvO,IAAI,CAACvvO,CAAC,CAAC,GAAGzF,CAAC;QAC7B;QACAg0P,MAAM,GAAG,IAAI\u002FD,aAAa,CAACqH,UAAU,CAAC;QACtCtC,YAAY,GAAGhB,MAAM,CAAC7D,YAAY,CAAC6E,YAAY,CAAC;MAClD;IACF,CAAC,MAAM;MACLhB,MAAM,GAAG,IAAI\u002FD,aAAa,CAACjb,IAAI,CAAC7yP,QAAQ,CAAC,CAAC,EAAEg1Q,gBAAgB,CAAC,CAAC;MAC9DnC,YAAY,GAAGhB,MAAM,CAAC7D,YAAY,CAACyE,aAAa,CAAC;IACnD;IACA,OAAOI,YAAY;EACrB;EAEA,CAACyC,cAAcC,CAACvoQ,GAAG,EAAEC,GAAG,EAAEgoQ,aAAa,EAAEO,KAAK,GAAG,KAAK,EAAE;IACtD,MAAM30Q,GAAG,GAAG,IAAIR,UAAU,CAAC40Q,aAAa,CAAC73Q,MAAM,GAAG,CAAC,CAAC;IACpD,MAAM+E,CAAC,GAAG8yQ,aAAa,CAAC73Q,MAAM;IAC9B,IAAIuC,CAAC;IACL,KAAKA,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGwC,CAAC,EAAE,EAAExC,CAAC,EAAE;MACtBkB,GAAG,CAAClB,CAAC,CAAC,GAAGs1Q,aAAa,CAACt1Q,CAAC,CAAC;IAC3B;IACAkB,GAAG,CAAClB,CAAC,EAAE,CAAC,GAAGqN,GAAG,GAAG,IAAI;IACrBnM,GAAG,CAAClB,CAAC,EAAE,CAAC,GAAIqN,GAAG,IAAI,CAAC,GAAI,IAAI;IAC5BnM,GAAG,CAAClB,CAAC,EAAE,CAAC,GAAIqN,GAAG,IAAI,EAAE,GAAI,IAAI;IAC7BnM,GAAG,CAAClB,CAAC,EAAE,CAAC,GAAGsN,GAAG,GAAG,IAAI;IACrBpM,GAAG,CAAClB,CAAC,EAAE,CAAC,GAAIsN,GAAG,IAAI,CAAC,GAAI,IAAI;IAC5B,IAAIuoQ,KAAK,EAAE;MACT30Q,GAAG,CAAClB,CAAC,EAAE,CAAC,GAAG,IAAI;MACfkB,GAAG,CAAClB,CAAC,EAAE,CAAC,GAAG,IAAI;MACfkB,GAAG,CAAClB,CAAC,EAAE,CAAC,GAAG,IAAI;MACfkB,GAAG,CAAClB,CAAC,EAAE,CAAC,GAAG,IAAI;IACjB;IACA,MAAMkzP,IAAI,GAAGsb,YAAY,CAACttQ,GAAG,EAAE,CAAC,EAAElB,CAAC,CAAC;IACpC,OAAOkzP,IAAI,CAAC7yP,QAAQ,CAAC,CAAC,EAAEH,IAAI,CAACC,GAAG,CAACm1Q,aAAa,CAAC73Q,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;EACjE;EAEA,CAACq4Q,sBAAsBC,CAACC,EAAE,EAAEr3Q,IAAI,EAAE0O,GAAG,EAAEC,GAAG,EAAEpM,GAAG,EAAE;IAC\u002FC,IAAI,EAAEvC,IAAI,YAAY+L,IAAI,CAAC,EAAE;MAC3B,MAAM,IAAIpL,WAAW,CAAC,4BAA4B,CAAC;IACrD;IACA,MAAM65C,IAAI,GAAG,IAAI;IACjB,MAAM88N,WAAW,GAAGD,EAAE,CAAC\u002FsQ,GAAG,CAACtK,IAAI,CAACA,IAAI,CAAC;IACrC,MAAMu3Q,GAAG,GAAGD,WAAW,EAAEhtQ,GAAG,CAAC,KAAK,CAAC;IAEnC,IAAI,CAACitQ,GAAG,IAAIA,GAAG,CAACv3Q,IAAI,KAAK,MAAM,EAAE;MAC\u002FB,OAAO,YAAY;QACjB,OAAO,IAAIiyQ,UAAU,CAAC,CAAC;MACzB,CAAC;IACH;IACA,IAAIsF,GAAG,CAACv3Q,IAAI,KAAK,IAAI,EAAE;MACrB,OAAO,YAAY;QACjB,OAAO,IAAIwvQ,aAAa,CACtBh1N,IAAI,CAAC,CAACw8N,cAAc,CAACtoQ,GAAG,EAAEC,GAAG,EAAEpM,GAAG,EAAgB,KAAK,CACzD,CAAC;MACH,CAAC;IACH;IACA,IAAIg1Q,GAAG,CAACv3Q,IAAI,KAAK,OAAO,EAAE;MACxB,OAAO,YAAY;QACjB,OAAO,IAAIwzQ,YAAY,CACrBh5N,IAAI,CAAC,CAACw8N,cAAc,CAACtoQ,GAAG,EAAEC,GAAG,EAAEpM,GAAG,EAAgB,IAAI,CACxD,CAAC;MACH,CAAC;IACH;IACA,IAAIg1Q,GAAG,CAACv3Q,IAAI,KAAK,OAAO,EAAE;MACxB,OAAO,YAAY;QACjB,OAAO,IAAI6zQ,YAAY,CAACtxQ,GAAG,CAAC;MAC9B,CAAC;IACH;IACA,MAAM,IAAI5B,WAAW,CAAC,uBAAuB,CAAC;EAChD;EAEAV,WAAWA,CAACmO,IAAI,EAAEmoQ,MAAM,EAAEvC,QAAQ,EAAE;IAClC,MAAMtqN,MAAM,GAAGt7C,IAAI,CAAC9D,GAAG,CAAC,QAAQ,CAAC;IACjC,IAAI,CAACuF,MAAM,CAAC65C,MAAM,EAAE,UAAU,CAAC,EAAE;MAC\u002FB,MAAM,IAAI\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\u002FB,KAAK,CAAC;IAC\u002FB1\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\u002FsQ,OAAO,EAAE;EACjD,IAAI\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\u002FB,KAAK,CAAC;IAC\u002FB1\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\u002FD\u002F4B,IAAI,CAAE,qCAAoCka,SAAU,kBAAiB,CAAC;QACtE,OAAO,KAAK;MACd;IACF;IAEA,IAAI4lQ,kBAAkB,GAAG,IAAI;IAC7B,KAAK,MAAM,CAAC5lQ,SAAS,EAAE4lP,QAAQ,CAAC,IAAI9lP,oBAAoB,EAAE;MACxD,MAAM;QAAE8mQ;MAAS,CAAC,GAAG,MAAMlB,UAAU,CAACG,OAAO,CAAC7lQ,SAAS,CAAC;MACxD6kQ,cAAc,CAAC,CAACgC,cAAc,CAAC;QAC7BjhB,QAAQ;QACRzxP,IAAI,EAAE,IAAI,CAACgC,IAAI,CAAChC,IAAI;QACpByyQ,QAAQ;QACRD;MACF,CAAC,CAAC;MAEF,KAAK,MAAM1pQ,OAAO,IAAI2oP,QAAQ,EAAE;QAC9B,IAAI3oP,OAAO,CAAC6oQ,iBAAiB,EAAE\u002FvR,IAAI,EAAE;UAEnCknB,OAAO,CAAC8oQ,YAAY,GAAGJ,OAAO,EAAE;UAChCC,kBAAkB,GAAG,KAAK;QAC5B;MACF;IACF;IAEA,IAAIA,kBAAkB,EAAE;MACtB,KAAK,MAAMhgB,QAAQ,IAAI9lP,oBAAoB,CAACvK,MAAM,CAAC,CAAC,EAAE;QACpD,KAAK,MAAM0H,OAAO,IAAI2oP,QAAQ,EAAE;UAC9B,OAAO3oP,OAAO,CAAC8oQ,YAAY;UAC3B,OAAO9oQ,OAAO,CAAC6pQ,gBAAgB;QACjC;MACF;MACA,OAAO,KAAK;IACd;IAEA,OAAO,IAAI;EACb;EAEA,MAAMC,mBAAmBA,CAAC;IAAEjnQ,oBAAoB;IAAE4lQ,UAAU;IAAE7D;EAAQ,CAAC,EAAE;IACvE,MAAM1tQ,IAAI,GAAG,IAAI,CAACgC,IAAI,CAAChC,IAAI;IAC3B,MAAMkyQ,cAAc,GAAG,IAAI,CAAClwQ,IAAI,CAACK,KAAK,CAAC,CAAC;IACxC,MAAM2vQ,iBAAiB,GAAG,IAAI,CAACvvQ,GAAG;IAClC,MAAMqoB,KAAK,GAAG,IAAIznB,WAAW,CAAC,CAAC;IAC\u002FBynB,KAAK,CAAC9nB,GAAG,CAACgvQ,iBAAiB,EAAEE,cAAc,CAAC;IAE5C,IAAIC,aAAa,GAAGD,cAAc,CAACjxQ,MAAM,CAAC,YAAY,CAAC;IACvD,IAAImxQ,UAAU;IACd,IAAID,aAAa,YAAYxxQ,GAAG,EAAE;MAChCyxQ,UAAU,GAAGpyQ,IAAI,CAACY,KAAK,CAACuxQ,aAAa,CAAC;IACxC,CAAC,MAAM;MACLC,UAAU,GAAGD,aAAa;MAC1BA,aAAa,GAAGnyQ,IAAI,CAACiyQ,kBAAkB,CAAC,CAAC;MACzCC,cAAc,CAAC7wQ,GAAG,CAAC,YAAY,EAAE8wQ,aAAa,CAAC;IACjD;IACAC,UAAU,GAAGA,UAAU,CAAC\u002FvQ,KAAK,CAAC,CAAC;IAC\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\u002FN,IAAI,EAAE;UACRu\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\u002FxN,OAAO,CAAC\u002F\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\u002FB,IAAI+I,IAAI,GAAG\u002FI,MAAM,CAACnL,GAAG,CAAC,GAAG,CAAC;EAC1B,IAAIkU,IAAI,EAAE;IACR,IAAIA,IAAI,YAAYzS,IAAI,EAAE;MACxByS,IAAI,GAAGA,IAAI,CAACxe,IAAI;IAClB;IACA,IAAI,OAAOwe,IAAI,KAAK,QAAQ,EAAE;MAC5B,OAAOrW,iBAAiB,CAACqW,IAAI,CAAC;IAChC,CAAC,MAAM,IAAIqjQ,mBAAmB,CAACrjQ,IAAI,CAAC,EAAE;MACpC,OAAO2jQ,IAAI,CAACC,SAAS,CAAC5jQ,IAAI,CAAC;IAC7B;EACF;EACA,OAAO,IAAI;AACb;AAEA,MAAM6jQ,OAAO,CAAC;EACZpiR,WAAWA,CAAC09Q,UAAU,EAAEvxQ,IAAI,EAAE;IAC5B,IAAI,CAACuxQ,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACvxQ,IAAI,GAAGA,IAAI;IAEhB,IAAI,CAACk2Q,QAAQ,GAAGl2Q,IAAI,CAACm2Q,aAAa,CAAC,CAAC;IACpC,IAAI,EAAE,IAAI,CAACD,QAAQ,YAAYn2Q,IAAI,CAAC,EAAE;MACpC,MAAM,IAAIxL,WAAW,CAAC,qCAAqC,CAAC;IAC9D;IAGA,IAAI,CAAC6hR,iBAAiB;IAEtB,IAAI,CAACC,eAAe,GAAG,IAAI;IAE3B,IAAI,CAACj0B,SAAS,GAAG,IAAI\u002F+O,WAAW,CAAC,CAAC;IAClC,IAAI,CAACg\u002FO,gBAAgB,GAAG,IAAItkP,GAAG,CAAC,CAAC;IACjC,IAAI,CAACukP,qBAAqB,GAAG,IAAIvkP,GAAG,CAAC,CAAC;IACtC,IAAI,CAACwkP,gBAAgB,GAAG,IAAI9a,gBAAgB,CAAC,CAAC;IAC9C,IAAI,CAAC6uC,kBAAkB,GAAG,IAAIjzQ,WAAW,CAAC,CAAC;IAC3C,IAAI,CAACkzQ,cAAc,GAAG,IAAIlzQ,WAAW,CAAC,CAAC;IACvC,IAAI,CAAC2\u002FO,gBAAgB,GAAG,IAAIpgP,MAAM,CAAC,CAAC;IACpC,IAAI,CAACwvO,eAAe,GAAG,IAAIr0O,GAAG,CAAC,CAAC;EAClC;EAEAg0Q,SAASA,CAAA,EAAG;IACV,OAAO,IAAI,CAACmE,QAAQ,CAAC7zQ,KAAK,CAAC,CAAC;EAC9B;EAEA,IAAI0lC,OAAOA,CAAA,EAAG;IACZ,MAAMA,OAAO,GAAG,IAAI,CAACmuO,QAAQ,CAACh4Q,GAAG,CAAC,SAAS,CAAC;IAC5C,IAAI6pC,OAAO,YAAYpoC,IAAI,EAAE;MAC3B,IAAI8F,kBAAkB,CAAC0E,IAAI,CAAC49B,OAAO,CAACn0C,IAAI,CAAC,EAAE;QACzC,OAAOb,MAAM,CAAC,IAAI,EAAE,SAAS,EAAEg1C,OAAO,CAACn0C,IAAI,CAAC;MAC9C;MACAjC,IAAI,CAAE,gCAA+Bo2C,OAAO,CAACn0C,IAAK,EAAC,CAAC;IACtD;IACA,OAAOb,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC;EACtC;EAEA,IAAIghD,IAAIA,CAAA,EAAG;IACT,MAAMA,IAAI,GAAG,IAAI,CAACmiO,QAAQ,CAACh4Q,GAAG,CAAC,MAAM,CAAC;IACtC,OAAOnL,MAAM,CACX,IAAI,EACJ,MAAM,EACNghD,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,GAAGh4C,iBAAiB,CAACg4C,IAAI,CAAC,GAAG,IAC\u002FD,CAAC;EACH;EAMA,IAAIyiO,cAAcA,CAAA,EAAG;IACnB,MAAMA,cAAc,GAAG,IAAI,CAACN,QAAQ,CAACh4Q,GAAG,CAAC,gBAAgB,CAAC;IAC1D,OAAOnL,MAAM,CACX,IAAI,EACJ,gBAAgB,EAChB,OAAOyjR,cAAc,KAAK,SAAS,GAAGA,cAAc,GAAG,KACzD,CAAC;EACH;EAEA,IAAIC,UAAUA,CAAA,EAAG;IACf,IAAIA,UAAU,GAAG,IAAI;IACrB,IAAI;MACF,MAAMzjR,GAAG,GAAG,IAAI,CAACkjR,QAAQ,CAACh4Q,GAAG,CAAC,YAAY,CAAC;MAC3C,IAAIlL,GAAG,YAAY+M,IAAI,IAAI\u002FM,GAAG,CAACuN,IAAI,GAAG,CAAC,EAAE;QACvCk2Q,UAAU,GAAGzjR,GAAG;MAClB;IACF,CAAC,CAAC,OAAOuJ,EAAE,EAAE;MACX,IAAIA,EAAE,YAAYsJ,oBAAoB,EAAE;QACtC,MAAMtJ,EAAE;MACV;MACAhL,IAAI,CAAC,mEAAmE,CAAC;IAC3E;IACA,OAAOwB,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE0jR,UAAU,CAAC;EAC\u002FC;EAEA,IAAI1I,QAAQA,CAAA,EAAG;IACb,IAAIA,QAAQ,GAAG,IAAI;IACnB,IAAI;MACF,MAAM\u002F6Q,GAAG,GAAG,IAAI,CAACkjR,QAAQ,CAACh4Q,GAAG,CAAC,UAAU,CAAC;MACzC,IAAIlL,GAAG,YAAY+M,IAAI,IAAI\u002FM,GAAG,CAACuN,IAAI,GAAG,CAAC,EAAE;QACvCwtQ,QAAQ,GAAG\u002F6Q,GAAG;MAChB;IACF,CAAC,CAAC,OAAOuJ,EAAE,EAAE;MACX,IAAIA,EAAE,YAAYsJ,oBAAoB,EAAE;QACtC,MAAMtJ,EAAE;MACV;MACAhL,IAAI,CAAC,6DAA6D,CAAC;IACrE;IACA,OAAOwB,MAAM,CAAC,IAAI,EAAE,UAAU,EAAEg7Q,QAAQ,CAAC;EAC3C;EAEA,IAAIC,WAAWA,CAAA,EAAG;IAChB,MAAM96Q,KAAK,GAAG,IAAI,CAACgjR,QAAQ,CAACj1Q,MAAM,CAAC,UAAU,CAAC;IAC9C,OAAOlO,MAAM,CAAC,IAAI,EAAE,aAAa,EAAEG,KAAK,YAAYyN,GAAG,GAAGzN,KAAK,GAAG,IAAI,CAAC;EACzE;EAEA,IAAIwjR,QAAQA,CAAA,EAAG;IACb,MAAMC,SAAS,GAAG,IAAI,CAACT,QAAQ,CAACj1Q,MAAM,CAAC,UAAU,CAAC;IAClD,IAAI,EAAE01Q,SAAS,YAAYh2Q,GAAG,CAAC,EAAE;MAC\u002FB,OAAO5N,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC;IACvC;IAEA,IAAI2jR,QAAQ,GAAG,IAAI;IACnB,IAAI;MACF,MAAMnoQ,MAAM,GAAG,IAAI,CAACvO,IAAI,CAACY,KAAK,CAC5B+1Q,SAAS,EACkB,CAAC,IAAI,CAAC32Q,IAAI,CAACwjQ,OAAO,EAAE4G,eACjD,CAAC;MAED,IAAI77P,MAAM,YAAYvK,UAAU,IAAIuK,MAAM,CAACvM,IAAI,YAAYjC,IAAI,EAAE;QAC\u002FD,MAAMne,IAAI,GAAG2sB,MAAM,CAACvM,IAAI,CAAC9D,GAAG,CAAC,MAAM,CAAC;QACpC,MAAMupN,OAAO,GAAGl5M,MAAM,CAACvM,IAAI,CAAC9D,GAAG,CAAC,SAAS,CAAC;QAE1C,IAAIuF,MAAM,CAAC7hB,IAAI,EAAE,UAAU,CAAC,IAAI6hB,MAAM,CAACgkN,OAAO,EAAE,KAAK,CAAC,EAAE;UAKtD,MAAMphN,IAAI,GAAGzT,kBAAkB,CAAC2b,MAAM,CAACrJ,SAAS,CAAC,CAAC,CAAC;UACnD,IAAImB,IAAI,EAAE;YACRqwQ,QAAQ,GAAG,IAAIxU,cAAc,CAAC77P,IAAI,CAAC,CAAC03P,YAAY;UAClD;QACF;MACF;IACF,CAAC,CAAC,OAAOxhQ,EAAE,EAAE;MACX,IAAIA,EAAE,YAAYsJ,oBAAoB,EAAE;QACtC,MAAMtJ,EAAE;MACV;MACAhL,IAAI,CAAE,+BAA8BgL,EAAG,IAAG,CAAC;IAC7C;IACA,OAAOxJ,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE2jR,QAAQ,CAAC;EAC3C;EAEA,IAAIE,QAAQA,CAAA,EAAG;IACb,IAAIA,QAAQ,GAAG,IAAI;IACnB,IAAI;MACFA,QAAQ,GAAG,IAAI,CAACC,aAAa,CAAC,CAAC;IACjC,CAAC,CAAC,OAAOt6Q,EAAE,EAAE;MACX,IAAIA,EAAE,YAAYsJ,oBAAoB,EAAE;QACtC,MAAMtJ,EAAE;MACV;MACA5K,IAAI,CAAC,2BAA2B,CAAC;IACnC;IACA,OAAOoB,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE6jR,QAAQ,CAAC;EAC3C;EAKAC,aAAaA,CAAA,EAAG;IACd,MAAM7jR,GAAG,GAAG,IAAI,CAACkjR,QAAQ,CAACh4Q,GAAG,CAAC,UAAU,CAAC;IACzC,IAAI,EAAElL,GAAG,YAAY+M,IAAI,CAAC,EAAE;MAC1B,OAAO,IAAI;IACb;IAEA,MAAM62Q,QAAQ,GAAG;MACfE,MAAM,EAAE,KAAK;MACbC,cAAc,EAAE,KAAK;MACrBC,QAAQ,EAAE;IACZ,CAAC;IACD,KAAK,MAAM7gR,GAAG,IAAIygR,QAAQ,EAAE;MAC1B,MAAM1jR,KAAK,GAAGF,GAAG,CAACkL,GAAG,CAAC\u002FH,GAAG,CAAC;MAC1B,IAAI,OAAOjD,KAAK,KAAK,SAAS,EAAE;QAC9B0jR,QAAQ,CAACzgR,GAAG,CAAC,GAAGjD,KAAK;MACvB;IACF;IAEA,OAAO0jR,QAAQ;EACjB;EAEA,IAAI1E,cAAcA,CAAA,EAAG;IACnB,IAAI+E,UAAU,GAAG,IAAI;IACrB,IAAI;MACFA,UAAU,GAAG,IAAI,CAACC,mBAAmB,CAAC,CAAC;IACzC,CAAC,CAAC,OAAO36Q,EAAE,EAAE;MACX,IAAIA,EAAE,YAAYsJ,oBAAoB,EAAE;QACtC,MAAMtJ,EAAE;MACV;MACA5K,IAAI,CAAC,qCAAqC,CAAC;IAC7C;IACA,OAAOoB,MAAM,CAAC,IAAI,EAAE,gBAAgB,EAAEkkR,UAAU,CAAC;EACnD;EAKAC,mBAAmBA,CAAA,EAAG;IACpB,MAAMC,MAAM,GAAG,IAAI,CAACjB,QAAQ,CAACj1Q,MAAM,CAAC,gBAAgB,CAAC;IACrD,MAAMjO,GAAG,GAAG,IAAI,CAACgN,IAAI,CAACmW,UAAU,CAACghQ,MAAM,CAAC;IACxC,IAAI,EAAEnkR,GAAG,YAAY+M,IAAI,CAAC,EAAE;MAC1B,OAAO,IAAI;IACb;IAEA,MAAMy8P,IAAI,GAAG,IAAIkU,cAAc,CAAC19Q,GAAG,EAAEmkR,MAAM,CAAC;IAC5C3a,IAAI,CAACsU,IAAI,CAAC,CAAC;IACX,OAAOtU,IAAI;EACb;EAEA,IAAI4Z,iBAAiBA,CAAA,EAAG;IACtB,MAAMgB,QAAQ,GAAG,IAAI,CAAClB,QAAQ,CAACh4Q,GAAG,CAAC,OAAO,CAAC;IAC3C,IAAI,EAAEk5Q,QAAQ,YAAYr3Q,IAAI,CAAC,EAAE;MAC\u002FB,MAAM,IAAIxL,WAAW,CAAC,qCAAqC,CAAC;IAC9D;IACA,OAAOxB,MAAM,CAAC,IAAI,EAAE,mBAAmB,EAAEqkR,QAAQ,CAAC;EACpD;EAEA,IAAIC,eAAeA,CAAA,EAAG;IACpB,IAAIrkR,GAAG,GAAG,IAAI;IACd,IAAI;MACFA,GAAG,GAAG,IAAI,CAACskR,oBAAoB,CAAC,CAAC;IACnC,CAAC,CAAC,OAAO\u002F6Q,EAAE,EAAE;MACX,IAAIA,EAAE,YAAYsJ,oBAAoB,EAAE;QACtC,MAAMtJ,EAAE;MACV;MACA5K,IAAI,CAAC,kCAAkC,CAAC;IAC1C;IACA,OAAOoB,MAAM,CAAC,IAAI,EAAE,iBAAiB,EAAEC,GAAG,CAAC;EAC7C;EAKAskR,oBAAoBA,CAAA,EAAG;IACrB,IAAItkR,GAAG,GAAG,IAAI,CAACkjR,QAAQ,CAACh4Q,GAAG,CAAC,UAAU,CAAC;IACvC,IAAI,EAAElL,GAAG,YAAY+M,IAAI,CAAC,EAAE;MAC1B,OAAO,IAAI;IACb;IACA\u002FM,GAAG,GAAGA,GAAG,CAACiO,MAAM,CAAC,OAAO,CAAC;IACzB,IAAI,EAAEjO,GAAG,YAAY2N,GAAG,CAAC,EAAE;MACzB,OAAO,IAAI;IACb;IAEA,MAAM67P,IAAI,GAAG;MAAEh5P,KAAK,EAAE;IAAG,CAAC;IAC1B,MAAM23O,KAAK,GAAG,CAAC;MAAEnoP,GAAG;MAAE6P,MAAM,EAAE25P;IAAK,CAAC,CAAC;IAErC,MAAM1yN,SAAS,GAAG,IAAIlnC,MAAM,CAAC,CAAC;IAC9BknC,SAAS,CAAC9mC,GAAG,CAAChQ,GAAG,CAAC;IAClB,MAAMgN,IAAI,GAAG,IAAI,CAACA,IAAI;MACpBu3Q,UAAU,GAAG,IAAI9jQ,iBAAiB,CAAC,CAAC,CAAC;IAEvC,OAAO0nO,KAAK,CAACzoP,MAAM,GAAG,CAAC,EAAE;MACvB,MAAMuC,CAAC,GAAGkmP,KAAK,CAAC\u002F4N,KAAK,CAAC,CAAC;MACvB,MAAMo1P,WAAW,GAAGx3Q,IAAI,CAACmW,UAAU,CAAClhB,CAAC,CAACjC,GAAG,CAAC;MAC1C,IAAIwkR,WAAW,KAAK,IAAI,EAAE;QACxB;MACF;MACA,IAAI,CAACA,WAAW,CAACl2Q,GAAG,CAAC,OAAO,CAAC,EAAE;QAC7B3P,IAAI,CAAC,mCAAmC,CAAC;MAC3C;MAEA,MAAM0U,IAAI,GAAG;QAAEpU,GAAG,EAAE,IAAI;QAAEmgB,IAAI,EAAE,IAAI;QAAE\u002FI,MAAM,EAAE;MAAK,CAAC;MACpD4sQ,OAAO,CAACwB,mBAAmB,CAAC;QAC1BC,QAAQ,EAAEF,WAAW;QACrBG,SAAS,EAAEtxQ,IAAI;QACfuxQ,UAAU,EAAE,IAAI,CAACxlR,OAAO;QACxBylR,cAAc,EAAE,IAAI,CAACC;MACvB,CAAC,CAAC;MACF,MAAM5E,KAAK,GAAGsE,WAAW,CAACt5Q,GAAG,CAAC,OAAO,CAAC;MACtC,MAAM2zB,KAAK,GAAG2lP,WAAW,CAACt5Q,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;MACvC,MAAMwd,KAAK,GAAG87P,WAAW,CAACz2Q,QAAQ,CAAC,GAAG,CAAC;MACvC,MAAM8S,KAAK,GAAG2jQ,WAAW,CAACt5Q,GAAG,CAAC,OAAO,CAAC;MACtC,IAAIw+N,QAAQ,GAAG66C,UAAU;MAGzB,IACE3vQ,aAAa,CAAC8T,KAAK,EAAE,CAAC,CAAC,KACtBA,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAIA,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAIA,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EACpD;QACAghN,QAAQ,GAAGtpN,UAAU,CAACgD,UAAU,CAAC5C,GAAG,CAACF,MAAM,CAACoI,KAAK,EAAE,CAAC,CAAC;MACvD;MAEA,MAAMq8P,WAAW,GAAG;QAClB1uQ,MAAM,EAAEhD,IAAI,CAACgD,MAAM;QACnB2uQ,UAAU,EAAE3xQ,IAAI,CAAC2xQ,UAAU;QAC3B5lQ,IAAI,EAAE\u002FL,IAAI,CAAC+L,IAAI;QACfngB,GAAG,EAAEoU,IAAI,CAACpU,GAAG;QACbgmR,SAAS,EAAE5xQ,IAAI,CAAC4xQ,SAAS;QACzB7sQ,SAAS,EAAE\u002FE,IAAI,CAAC+E,SAAS;QACzB8sQ,WAAW,EAAE7xQ,IAAI,CAAC6xQ,WAAW;QAC7BhF,KAAK,EAAE,OAAOA,KAAK,KAAK,QAAQ,GAAGn3Q,iBAAiB,CAACm3Q,KAAK,CAAC,GAAG,EAAE;QAChEx3P,KAAK,EAAEghN,QAAQ;QACf7oN,KAAK,EAAEziB,MAAM,CAACC,SAAS,CAACwiB,KAAK,CAAC,GAAGA,KAAK,GAAGlf,SAAS;QAClDs5N,IAAI,EAAE,CAAC,EAAEp8L,KAAK,GAAG,CAAC,CAAC;QACnBq8L,MAAM,EAAE,CAAC,EAAEr8L,KAAK,GAAG,CAAC,CAAC;QACrBruB,KAAK,EAAE;MACT,CAAC;MAEDvO,CAAC,CAAC4N,MAAM,CAACW,KAAK,CAACjO,IAAI,CAACwiR,WAAW,CAAC;MAChC\u002FkR,GAAG,GAAGwkR,WAAW,CAACv2Q,MAAM,CAAC,OAAO,CAAC;MACjC,IAAIjO,GAAG,YAAY2N,GAAG,IAAI,CAACmpC,SAAS,CAACxoC,GAAG,CAACtO,GAAG,CAAC,EAAE;QAC7CmoP,KAAK,CAAC5lP,IAAI,CAAC;UAAEvC,GAAG;UAAE6P,MAAM,EAAEk1Q;QAAY,CAAC,CAAC;QACxCjuO,SAAS,CAAC9mC,GAAG,CAAChQ,GAAG,CAAC;MACpB;MACAA,GAAG,GAAGwkR,WAAW,CAACv2Q,MAAM,CAAC,MAAM,CAAC;MAChC,IAAIjO,GAAG,YAAY2N,GAAG,IAAI,CAACmpC,SAAS,CAACxoC,GAAG,CAACtO,GAAG,CAAC,EAAE;QAC7CmoP,KAAK,CAAC5lP,IAAI,CAAC;UAAEvC,GAAG;UAAE6P,MAAM,EAAE5N,CAAC,CAAC4N;QAAO,CAAC,CAAC;QACrCinC,SAAS,CAAC9mC,GAAG,CAAChQ,GAAG,CAAC;MACpB;IACF;IACA,OAAOwpQ,IAAI,CAACh5P,KAAK,CAAC9Q,MAAM,GAAG,CAAC,GAAG8pQ,IAAI,CAACh5P,KAAK,GAAG,IAAI;EAClD;EAEA,IAAI20Q,WAAWA,CAAA,EAAG;IAChB,IAAIA,WAAW,GAAG,IAAI;IACtB,IAAI;MACFA,WAAW,GAAG,IAAI,CAACC,gBAAgB,CAAC,CAAC;IACvC,CAAC,CAAC,OAAO77Q,EAAE,EAAE;MACX,IAAIA,EAAE,YAAYsJ,oBAAoB,EAAE;QACtC,MAAMtJ,EAAE;MACV;MACA5K,IAAI,CAAC,6BAA6B,CAAC;IACrC;IACA,OAAOoB,MAAM,CAAC,IAAI,EAAE,aAAa,EAAEolR,WAAW,CAAC;EACjD;EAKAC,gBAAgBA,CAAA,EAAG;IACjB,MAAM5U,OAAO,GAAG,IAAI,CAACxjQ,IAAI,CAACq4Q,OAAO,CAACn6Q,GAAG,CAAC,SAAS,CAAC;IAChD,IAAI,EAAEslQ,OAAO,YAAYzjQ,IAAI,CAAC,EAAE;MAC9B,OAAO,IAAI;IACb;IAEA,IAAI8xB,KAAK,GAAG2xO,OAAO,CAACtlQ,GAAG,CAAC,GAAG,CAAC;IAC5B,IAAI,OAAO2zB,KAAK,KAAK,QAAQ,EAAE;MAC7B,OAAO,IAAI;IACb;IAKAA,KAAK,IAAI,CAAC,IAAI,EAAE;IAEhB,MAAMsmP,WAAW,GAAG,EAAE;IACtB,KAAK,MAAMhiR,GAAG,IAAI7R,cAAc,EAAE;MAChC,MAAM4O,KAAK,GAAG5O,cAAc,CAAC6R,GAAG,CAAC;MACjC,IAAI07B,KAAK,GAAG3+B,KAAK,EAAE;QACjBilR,WAAW,CAAC5iR,IAAI,CAACrC,KAAK,CAAC;MACzB;IACF;IACA,OAAOilR,WAAW;EACpB;EAEA,IAAIG,qBAAqBA,CAAA,EAAG;IAC1B,IAAIC,MAAM,GAAG,IAAI;IACjB,IAAI;MACF,MAAMx2Q,UAAU,GAAG,IAAI,CAACm0Q,QAAQ,CAACh4Q,GAAG,CAAC,cAAc,CAAC;MACpD,IAAI,CAAC6D,UAAU,EAAE;QACf,OAAOhP,MAAM,CAAC,IAAI,EAAE,uBAAuB,EAAE,IAAI,CAAC;MACpD;MACA,MAAMylR,aAAa,GAAGz2Q,UAAU,CAAC7D,GAAG,CAAC,GAAG,CAAC;MACzC,IAAI,CAACs6Q,aAAa,EAAE;QAClB,OAAOzlR,MAAM,CAAC,IAAI,EAAE,uBAAuB,EAAE,IAAI,CAAC;MACpD;MACA,MAAM0lR,UAAU,GAAG12Q,UAAU,CAAC7D,GAAG,CAAC,MAAM,CAAC;MACzC,IAAI,CAAC3G,KAAK,CAACyJ,OAAO,CAACy3Q,UAAU,CAAC,EAAE;QAC9B,OAAO1lR,MAAM,CAAC,IAAI,EAAE,uBAAuB,EAAE,IAAI,CAAC;MACpD;MACA,MAAMi3M,MAAM,GAAG,EAAE;MACjB,MAAM0uE,SAAS,GAAG,IAAI91Q,MAAM,CAAC,CAAC;MAE9B,KAAK,MAAM+1Q,QAAQ,IAAIF,UAAU,EAAE;QACjC,IAAI,EAAEE,QAAQ,YAAYh4Q,GAAG,CAAC,IAAI+3Q,SAAS,CAACp3Q,GAAG,CAACq3Q,QAAQ,CAAC,EAAE;UACzD;QACF;QACAD,SAAS,CAAC11Q,GAAG,CAAC21Q,QAAQ,CAAC;QAEvB3uE,MAAM,CAACz0M,IAAI,CAAC,IAAI,CAAC,CAACqjR,wBAAwB,CAACD,QAAQ,CAAC,CAAC;MACvD;MACAJ,MAAM,GAAG,IAAI,CAAC,CAACM,yBAAyB,CAACL,aAAa,EAAEE,SAAS,CAAC;MAClEH,MAAM,CAACvuE,MAAM,GAAGA,MAAM;IACxB,CAAC,CAAC,OAAOztM,EAAE,EAAE;MACX,IAAIA,EAAE,YAAYsJ,oBAAoB,EAAE;QACtC,MAAMtJ,EAAE;MACV;MACA5K,IAAI,CAAE,2CAA0C4K,EAAG,EAAC,CAAC;IACvD;IACA,OAAOxJ,MAAM,CAAC,IAAI,EAAE,uBAAuB,EAAEwlR,MAAM,CAAC;EACtD;EAEA,CAACK,wBAAwBE,CAACH,QAAQ,EAAE;IAClC,MAAMx0B,KAAK,GAAG,IAAI,CAACnkP,IAAI,CAACY,KAAK,CAAC+3Q,QAAQ,CAAC;IACvC,MAAM3lR,GAAG,GAAG;MACV03B,EAAE,EAAEiuP,QAAQ,CAACjhR,QAAQ,CAAC,CAAC;MACvB9D,IAAI,EAAE,IAAI;MACVgoP,MAAM,EAAE,IAAI;MACZm9B,KAAK,EAAE;QACLC,KAAK,EAAE,IAAI;QACXjjC,IAAI,EAAE;MACR;IACF,CAAC;IAED,MAAMniP,IAAI,GAAGuwP,KAAK,CAACjmP,GAAG,CAAC,MAAM,CAAC;IAC9B,IAAI,OAAOtK,IAAI,KAAK,QAAQ,EAAE;MAC5BZ,GAAG,CAACY,IAAI,GAAGmI,iBAAiB,CAACnI,IAAI,CAAC;IACpC;IAEA,IAAIgoP,MAAM,GAAGuI,KAAK,CAACpjP,QAAQ,CAAC,QAAQ,CAAC;IACrC,IAAI,CAACxJ,KAAK,CAACyJ,OAAO,CAAC46O,MAAM,CAAC,EAAE;MAC1BA,MAAM,GAAG,CAACA,MAAM,CAAC;IACnB;IACA,IAAIA,MAAM,CAACj0O,KAAK,CAAC1S,CAAC,IAAIA,CAAC,YAAY0K,IAAI,CAAC,EAAE;MACxC3M,GAAG,CAAC4oP,MAAM,GAAGA,MAAM,CAAC3lP,GAAG,CAAChB,CAAC,IAAIA,CAAC,CAACrB,IAAI,CAAC;IACtC;IAEA,MAAMmlR,KAAK,GAAG50B,KAAK,CAACjmP,GAAG,CAAC,OAAO,CAAC;IAChC,IAAI,EAAE66Q,KAAK,YAAYh5Q,IAAI,CAAC,EAAE;MAC5B,OAAO\u002FM,GAAG;IACZ;IACA,MAAMimR,QAAQ,GAAGjmR,GAAG,CAAC+lR,KAAK;IAE1B,MAAMC,KAAK,GAAGD,KAAK,CAAC76Q,GAAG,CAAC,OAAO,CAAC;IAChC,IAAI86Q,KAAK,YAAYj5Q,IAAI,EAAE;MACzB,MAAMm5Q,UAAU,GAAGF,KAAK,CAAC96Q,GAAG,CAAC,YAAY,CAAC;MAC1C,IAAIg7Q,UAAU,YAAYv5Q,IAAI,EAAE;QAC9B,QAAQu5Q,UAAU,CAACtlR,IAAI;UACrB,KAAK,IAAI;UACT,KAAK,KAAK;YACRqlR,QAAQ,CAACD,KAAK,GAAG;cAAEE,UAAU,EAAEA,UAAU,CAACtlR;YAAK,CAAC;QACpD;MACF;IACF;IAEA,MAAMmiP,IAAI,GAAGgjC,KAAK,CAAC76Q,GAAG,CAAC,MAAM,CAAC;IAC9B,IAAI63O,IAAI,YAAYh2O,IAAI,EAAE;MACxB,MAAMo5Q,SAAS,GAAGpjC,IAAI,CAAC73O,GAAG,CAAC,WAAW,CAAC;MACvC,IAAIi7Q,SAAS,YAAYx5Q,IAAI,EAAE;QAC7B,QAAQw5Q,SAAS,CAACvlR,IAAI;UACpB,KAAK,IAAI;UACT,KAAK,KAAK;YACRqlR,QAAQ,CAACljC,IAAI,GAAG;cAAEojC,SAAS,EAAEA,SAAS,CAACvlR;YAAK,CAAC;QACjD;MACF;IACF;IAEA,OAAOZ,GAAG;EACZ;EAEA,CAAC6lR,yBAAyBO,CAACb,MAAM,EAAEc,gBAAgB,EAAE;IACnD,SAASC,UAAUA,CAACC,IAAI,EAAE;MACxB,MAAMC,QAAQ,GAAG,EAAE;MACnB,IAAIjiR,KAAK,CAACyJ,OAAO,CAACu4Q,IAAI,CAAC,EAAE;QACvB,KAAK,MAAMrmR,KAAK,IAAIqmR,IAAI,EAAE;UACxB,IAAI,EAAErmR,KAAK,YAAYyN,GAAG,CAAC,EAAE;YAC3B;UACF;UACA,IAAI04Q,gBAAgB,CAAC\u002F3Q,GAAG,CAACpO,KAAK,CAAC,EAAE;YAC\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\u002FI,CAAC,GAAG0iR,SAAS,CAAC\u002F8Q,GAAG,CAAC,GAAG,CAAC;UAC5B,IAAI,OAAO3F,CAAC,KAAK,QAAQ,EAAE;YACzB,MAAM,IAAIhE,WAAW,CAAC,yCAAyC,CAAC;UAClE;UACAwmR,MAAM,GAAGh\u002FQ,iBAAiB,CAACxD,CAAC,CAAC;QAC\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\u002FV,GAAG,YAAY+M,IAAI,IAAI\u002FM,GAAG,CAACsO,GAAG,CAAC,YAAY,CAAC,EAAE;MAChD,MAAM06Q,QAAQ,GAAG,IAAI9e,QAAQ,CAAClqQ,GAAG,CAACiO,MAAM,CAAC,YAAY,CAAC,EAAE,IAAI,CAACjB,IAAI,CAAC;MAClE,KAAK,MAAM,CAAC7J,GAAG,EAAEjD,KAAK,CAAC,IAAI8oR,QAAQ,CAACtf,MAAM,CAAC,CAAC,EAAE;QAC5C0f,sBAAsB,CAACrgR,iBAAiB,CAAC5F,GAAG,CAAC,EAAEjD,KAAK,CAAC;MACvD;IACF;IAEA,MAAM6oR,UAAU,GAAG,IAAI,CAAC7F,QAAQ,CAACh4Q,GAAG,CAAC,YAAY,CAAC;IAClD,IAAI69Q,UAAU,EAAE;MACdK,sBAAsB,CAAC,YAAY,EAAEL,UAAU,CAAC;IAClD;IAEA,OAAOI,UAAU;EACnB;EAEA,IAAIG,SAASA,CAAA,EAAG;IACd,MAAMH,UAAU,GAAG,IAAI,CAACD,kBAAkB,CAAC,CAAC;IAC5C,IAAIhzQ,OAAO,GAAGF,cAAc,CAC1B,IAAI,CAAChJ,IAAI,EACT,IAAI,CAACk2Q,QAAQ,EACb3rR,uBACF,CAAC;IAED,IAAI4xR,UAAU,EAAE;MACdjzQ,OAAO,KAAK9V,MAAM,CAAC8C,MAAM,CAAC,IAAI,CAAC;MAE\u002FB,KAAK,MAAM,CAACC,GAAG,EAAEojB,GAAG,CAAC,IAAI4iQ,UAAU,EAAE;QACnC,IAAIhmR,GAAG,IAAI+S,OAAO,EAAE;UAClBA,OAAO,CAAC\u002FS,GAAG,CAAC,CAACZ,IAAI,CAACgkB,GAAG,CAAC;QACxB,CAAC,MAAM;UACLrQ,OAAO,CAAC\u002FS,GAAG,CAAC,GAAG,CAACojB,GAAG,CAAC;QACtB;MACF;IACF;IACA,OAAOxmB,MAAM,CAAC,IAAI,EAAE,WAAW,EAAEmW,OAAO,CAAC;EAC3C;EAEA,MAAMqzQ,YAAYA,CAAC7xP,EAAE,EAAEy3N,OAAO,EAAE;IAC9B,MAAMq6B,eAAe,GAAG,MAAMxtQ,OAAO,CAAC27O,GAAG,CAAC,IAAI,CAACvI,SAAS,CAAC;IAEzD,KAAK,MAAMoG,cAAc,IAAIg0B,eAAe,EAAE;MAC5C,IAAIh0B,cAAc,CAAC50C,UAAU,KAAKlpL,EAAE,EAAE;QACpC89N,cAAc,CAAC1gP,QAAQ,CAACq6O,OAAO,CAAC;QAChC;MACF;IACF;EACF;EAEA,MAAMprM,OAAOA,CAAC0lO,iBAAiB,GAAG,KAAK,EAAE;IACvCrf,iBAAiB,CAAC,CAAC;IACnB,IAAI,CAAC7a,gBAAgB,CAACngP,KAAK,CAAkBq6Q,iBAAiB,CAAC;IAC\u002FD,IAAI,CAACnG,kBAAkB,CAACl0Q,KAAK,CAAC,CAAC;IAC\u002FB,IAAI,CAACm0Q,cAAc,CAACn0Q,KAAK,CAAC,CAAC;IAC3B,IAAI,CAAC4gP,gBAAgB,CAAC5gP,KAAK,CAAC,CAAC;IAE7B,MAAMo6Q,eAAe,GAAG,MAAMxtQ,OAAO,CAAC27O,GAAG,CAAC,IAAI,CAACvI,SAAS,CAAC;IAEzD,KAAK,MAAM;MAAEpgP;IAAK,CAAC,IAAIw6Q,eAAe,EAAE;MACtC,OAAOx6Q,IAAI,CAACmT,QAAQ;IACtB;IACA,IAAI,CAACitO,SAAS,CAAChgP,KAAK,CAAC,CAAC;IACtB,IAAI,CAACigP,gBAAgB,CAACjgP,KAAK,CAAC,CAAC;IAC7B,IAAI,CAACkgP,qBAAqB,CAAClgP,KAAK,CAAC,CAAC;IAClC,IAAI,CAACgwO,eAAe,CAAChwO,KAAK,CAAC,CAAC;EAC9B;EAEA,MAAMs6Q,WAAWA,CAAC7wQ,SAAS,EAAE;IAC3B,MAAM8wQ,YAAY,GAAG,CAAC,IAAI,CAACvG,iBAAiB,CAAC;IAC7C,MAAMwG,YAAY,GAAG,IAAIh6Q,MAAM,CAAC,CAAC;IAEjC,MAAMi6Q,QAAQ,GAAG,IAAI,CAAC3G,QAAQ,CAACj1Q,MAAM,CAAC,OAAO,CAAC;IAC9C,IAAI47Q,QAAQ,YAAYl8Q,GAAG,EAAE;MAC3Bi8Q,YAAY,CAAC55Q,GAAG,CAAC65Q,QAAQ,CAAC;IAC5B;IACA,MAAM78Q,IAAI,GAAG,IAAI,CAACA,IAAI;MACpBs2Q,kBAAkB,GAAG,IAAI,CAACA,kBAAkB;MAC5CC,cAAc,GAAG,IAAI,CAACA,cAAc;IACtC,IAAIuG,gBAAgB,GAAG,CAAC;IAExB,OAAOH,YAAY,CAACjqR,MAAM,EAAE;MAC1B,MAAMqqR,WAAW,GAAGJ,YAAY,CAAC17O,GAAG,CAAC,CAAC;MAEtC,IAAI87O,WAAW,YAAYp8Q,GAAG,EAAE;QAC9B,MAAMkT,KAAK,GAAGyiQ,kBAAkB,CAACp4Q,GAAG,CAAC6+Q,WAAW,CAAC;QAEjD,IAAIlpQ,KAAK,IAAI,CAAC,IAAIipQ,gBAAgB,GAAGjpQ,KAAK,IAAIhI,SAAS,EAAE;UACvDixQ,gBAAgB,IAAIjpQ,KAAK;UACzB;QACF;QAEA,IAAI+oQ,YAAY,CAACt7Q,GAAG,CAACy7Q,WAAW,CAAC,EAAE;UACjC,MAAM,IAAIxoR,WAAW,CAAC,yCAAyC,CAAC;QAClE;QACAqoR,YAAY,CAAC55Q,GAAG,CAAC+5Q,WAAW,CAAC;QAE7B,MAAM\u002FpR,GAAG,GAAG,MAAMgN,IAAI,CAACc,UAAU,CAACi8Q,WAAW,CAAC;QAC9C,IAAI\u002FpR,GAAG,YAAY+M,IAAI,EAAE;UACvB,IAAIne,IAAI,GAAGoR,GAAG,CAACiO,MAAM,CAAC,MAAM,CAAC;UAC7B,IAAIrf,IAAI,YAAY+e,GAAG,EAAE;YACvB\u002Fe,IAAI,GAAG,MAAMoe,IAAI,CAACc,UAAU,CAAClf,IAAI,CAAC;UACpC;UACA,IAAI6hB,MAAM,CAAC7hB,IAAI,EAAE,MAAM,CAAC,IAAI,CAACoR,GAAG,CAACsO,GAAG,CAAC,MAAM,CAAC,EAAE;YAI5C,IAAI,CAACg1Q,kBAAkB,CAACh1Q,GAAG,CAACy7Q,WAAW,CAAC,EAAE;cACxCzG,kBAAkB,CAACtzQ,GAAG,CAAC+5Q,WAAW,EAAE,CAAC,CAAC;YACxC;YAEA,IAAI,CAACxG,cAAc,CAACj1Q,GAAG,CAACy7Q,WAAW,CAAC,EAAE;cACpCxG,cAAc,CAACvzQ,GAAG,CAAC+5Q,WAAW,EAAED,gBAAgB,CAAC;YACnD;YAEA,IAAIA,gBAAgB,KAAKjxQ,SAAS,EAAE;cAClC,OAAO,CAAC7Y,GAAG,EAAE+pR,WAAW,CAAC;YAC3B;YACAD,gBAAgB,EAAE;YAClB;UACF;QACF;QACAH,YAAY,CAACpnR,IAAI,CAACvC,GAAG,CAAC;QACtB;MACF;MAGA,IAAI,EAAE+pR,WAAW,YAAYh9Q,IAAI,CAAC,EAAE;QAClC,MAAM,IAAIxL,WAAW,CACnB,+DACF,CAAC;MACH;MACA,MAAM;QAAE2L;MAAM,CAAC,GAAG68Q,WAAW;MAE7B,IAAIlpQ,KAAK,GAAGkpQ,WAAW,CAAC97Q,MAAM,CAAC,OAAO,CAAC;MACvC,IAAI4S,KAAK,YAAYlT,GAAG,EAAE;QACxBkT,KAAK,GAAG,MAAM7T,IAAI,CAACc,UAAU,CAAC+S,KAAK,CAAC;MACtC;MACA,IAAIziB,MAAM,CAACC,SAAS,CAACwiB,KAAK,CAAC,IAAIA,KAAK,IAAI,CAAC,EAAE;QAGzC,IAAI3T,KAAK,IAAI,CAACo2Q,kBAAkB,CAACh1Q,GAAG,CAACpB,KAAK,CAAC,EAAE;UAC3Co2Q,kBAAkB,CAACtzQ,GAAG,CAAC9C,KAAK,EAAE2T,KAAK,CAAC;QACtC;QAGA,IAAIipQ,gBAAgB,GAAGjpQ,KAAK,IAAIhI,SAAS,EAAE;UACzCixQ,gBAAgB,IAAIjpQ,KAAK;UACzB;QACF;MACF;MAEA,IAAI8oP,IAAI,GAAGogB,WAAW,CAAC97Q,MAAM,CAAC,MAAM,CAAC;MACrC,IAAI07P,IAAI,YAAYh8P,GAAG,EAAE;QACvBg8P,IAAI,GAAG,MAAM38P,IAAI,CAACc,UAAU,CAAC67P,IAAI,CAAC;MACpC;MACA,IAAI,CAACplQ,KAAK,CAACyJ,OAAO,CAAC27P,IAAI,CAAC,EAAE;QAIxB,IAAI\u002F6Q,IAAI,GAAGm7R,WAAW,CAAC97Q,MAAM,CAAC,MAAM,CAAC;QACrC,IAAIrf,IAAI,YAAY+e,GAAG,EAAE;UACvB\u002Fe,IAAI,GAAG,MAAMoe,IAAI,CAACc,UAAU,CAAClf,IAAI,CAAC;QACpC;QACA,IAAI6hB,MAAM,CAAC7hB,IAAI,EAAE,MAAM,CAAC,IAAI,CAACm7R,WAAW,CAACz7Q,GAAG,CAAC,MAAM,CAAC,EAAE;UACpD,IAAIw7Q,gBAAgB,KAAKjxQ,SAAS,EAAE;YAClC,OAAO,CAACkxQ,WAAW,EAAE,IAAI,CAAC;UAC5B;UACAD,gBAAgB,EAAE;UAClB;QACF;QAEA,MAAM,IAAIvoR,WAAW,CAAC,8CAA8C,CAAC;MACvE;MAKA,KAAK,IAAImrB,IAAI,GAAGi9O,IAAI,CAACjqQ,MAAM,GAAG,CAAC,EAAEgtB,IAAI,IAAI,CAAC,EAAEA,IAAI,EAAE,EAAE;QAClDi9P,YAAY,CAACpnR,IAAI,CAAConQ,IAAI,CAACj9O,IAAI,CAAC,CAAC;MAC\u002FB;IACF;IAEA,MAAM,IAAI7tB,KAAK,CAAE,cAAaga,SAAU,aAAY,CAAC;EACvD;EAMA,MAAMmxQ,eAAeA,CAACpiO,YAAY,GAAG,KAAK,EAAE;IAC1C,MAAM;MAAEimM;IAAa,CAAC,GAAG,IAAI,CAAC0wB,UAAU,CAACpqB,gBAAgB;IAEzD,MAAMhM,KAAK,GAAG,CAAC;MAAE4hC,WAAW,EAAE,IAAI,CAAC3G,iBAAiB;MAAE6G,SAAS,EAAE;IAAE,CAAC,CAAC;IACrE,MAAML,YAAY,GAAG,IAAIh6Q,MAAM,CAAC,CAAC;IAEjC,MAAMi6Q,QAAQ,GAAG,IAAI,CAAC3G,QAAQ,CAACj1Q,MAAM,CAAC,OAAO,CAAC;IAC9C,IAAI47Q,QAAQ,YAAYl8Q,GAAG,EAAE;MAC3Bi8Q,YAAY,CAAC55Q,GAAG,CAAC65Q,QAAQ,CAAC;IAC5B;IACA,MAAM5mR,GAAG,GAAG,IAAI8H,GAAG,CAAC,CAAC;MACnBiC,IAAI,GAAG,IAAI,CAACA,IAAI;MAChBu2Q,cAAc,GAAG,IAAI,CAACA,cAAc;IACtC,IAAI1qQ,SAAS,GAAG,CAAC;IAEjB,SAASqxQ,WAAWA,CAACzK,QAAQ,EAAEvB,OAAO,EAAE;MAEtC,IAAIA,OAAO,IAAI,CAACqF,cAAc,CAACj1Q,GAAG,CAAC4vQ,OAAO,CAAC,EAAE;QAC3CqF,cAAc,CAACvzQ,GAAG,CAACkuQ,OAAO,EAAErlQ,SAAS,CAAC;MACxC;MAEA5V,GAAG,CAACoL,GAAG,CAACwK,SAAS,EAAE,EAAE,CAAC4mQ,QAAQ,EAAEvB,OAAO,CAAC,CAAC;IAC3C;IACA,SAASiM,YAAYA,CAACjuO,KAAK,EAAE;MAC3B,IAAIA,KAAK,YAAYnpC,kBAAkB,IAAI,CAAC60C,YAAY,EAAE;QACxD,MAAM1L,KAAK;MACb;MACA,IAAI0L,YAAY,IAAIimM,YAAY,IAAIh1O,SAAS,KAAK,CAAC,EAAE;QAEnDla,IAAI,CAAE,mDAAkDu9C,KAAM,IAAG,CAAC;QAClEA,KAAK,GAAGnvC,IAAI,CAAC0B,KAAK;MACpB;MAEAxL,GAAG,CAACoL,GAAG,CAACwK,SAAS,EAAE,EAAE,CAACqjC,KAAK,EAAE,IAAI,CAAC,CAAC;IACrC;IAEA,OAAOisM,KAAK,CAACzoP,MAAM,GAAG,CAAC,EAAE;MACvB,MAAM0qR,SAAS,GAAGjiC,KAAK,CAACvuN,EAAE,CAAC,CAAC,CAAC,CAAC;MAC9B,MAAM;QAAEmwP,WAAW;QAAEE;MAAU,CAAC,GAAGG,SAAS;MAE5C,IAAIzgB,IAAI,GAAGogB,WAAW,CAAC97Q,MAAM,CAAC,MAAM,CAAC;MACrC,IAAI07P,IAAI,YAAYh8P,GAAG,EAAE;QACvB,IAAI;UACFg8P,IAAI,GAAG,MAAM38P,IAAI,CAACc,UAAU,CAAC67P,IAAI,CAAC;QACpC,CAAC,CAAC,OAAOpgQ,EAAE,EAAE;UACX4gR,YAAY,CAAC5gR,EAAE,CAAC;UAChB;QACF;MACF;MACA,IAAI,CAAChF,KAAK,CAACyJ,OAAO,CAAC27P,IAAI,CAAC,EAAE;QACxBwgB,YAAY,CACV,IAAI5oR,WAAW,CAAC,8CAA8C,CAChE,CAAC;QACD;MACF;MAEA,IAAI0oR,SAAS,IAAItgB,IAAI,CAACjqQ,MAAM,EAAE;QAC5ByoP,KAAK,CAACl6M,GAAG,CAAC,CAAC;QACX;MACF;MAEA,MAAMo8O,MAAM,GAAG1gB,IAAI,CAACsgB,SAAS,CAAC;MAC9B,IAAIjqR,GAAG;MACP,IAAIqqR,MAAM,YAAY18Q,GAAG,EAAE;QAEzB,IAAIi8Q,YAAY,CAACt7Q,GAAG,CAAC+7Q,MAAM,CAAC,EAAE;UAC5BF,YAAY,CACV,IAAI5oR,WAAW,CAAC,yCAAyC,CAC3D,CAAC;UACD;QACF;QACAqoR,YAAY,CAAC55Q,GAAG,CAACq6Q,MAAM,CAAC;QAExB,IAAI;UACFrqR,GAAG,GAAG,MAAMgN,IAAI,CAACc,UAAU,CAACu8Q,MAAM,CAAC;QACrC,CAAC,CAAC,OAAO9gR,EAAE,EAAE;UACX4gR,YAAY,CAAC5gR,EAAE,CAAC;UAChB;QACF;MACF,CAAC,MAAM;QAILvJ,GAAG,GAAGqqR,MAAM;MACd;MACA,IAAI,EAAErqR,GAAG,YAAY+M,IAAI,CAAC,EAAE;QAC1Bo9Q,YAAY,CACV,IAAI5oR,WAAW,CACb,+DACF,CACF,CAAC;QACD;MACF;MAEA,IAAI3S,IAAI,GAAGoR,GAAG,CAACiO,MAAM,CAAC,MAAM,CAAC;MAC7B,IAAIrf,IAAI,YAAY+e,GAAG,EAAE;QACvB,IAAI;UACF\u002Fe,IAAI,GAAG,MAAMoe,IAAI,CAACc,UAAU,CAAClf,IAAI,CAAC;QACpC,CAAC,CAAC,OAAO2a,EAAE,EAAE;UACX4gR,YAAY,CAAC5gR,EAAE,CAAC;UAChB;QACF;MACF;MACA,IAAIkH,MAAM,CAAC7hB,IAAI,EAAE,MAAM,CAAC,IAAI,CAACoR,GAAG,CAACsO,GAAG,CAAC,MAAM,CAAC,EAAE;QAC5C47Q,WAAW,CAAClqR,GAAG,EAAEqqR,MAAM,YAAY18Q,GAAG,GAAG08Q,MAAM,GAAG,IAAI,CAAC;MACzD,CAAC,MAAM;QACLliC,KAAK,CAAC5lP,IAAI,CAAC;UAAEwnR,WAAW,EAAE\u002FpR,GAAG;UAAEiqR,SAAS,EAAE;QAAE,CAAC,CAAC;MAChD;MACAG,SAAS,CAACH,SAAS,EAAE;IACvB;IACA,OAAOhnR,GAAG;EACZ;EAEAqnR,YAAYA,CAACpM,OAAO,EAAE;IACpB,MAAMqM,eAAe,GAAG,IAAI,CAAChH,cAAc,CAACr4Q,GAAG,CAACgzQ,OAAO,CAAC;IACxD,IAAIqM,eAAe,KAAK5oR,SAAS,EAAE;MACjC,OAAOqa,OAAO,CAACS,OAAO,CAAC8tQ,eAAe,CAAC;IACzC;IAKA,MAAMv9Q,IAAI,GAAG,IAAI,CAACA,IAAI;IAEtB,SAASw9Q,cAAcA,CAACtJ,MAAM,EAAE;MAC9B,IAAIxiQ,KAAK,GAAG,CAAC;QACXyiQ,SAAS;MAEX,OAAOn0Q,IAAI,CACRc,UAAU,CAACozQ,MAAM,CAAC,CAClBnkQ,IAAI,CAAC,UAAUwsB,IAAI,EAAE;QACpB,IACE14B,WAAW,CAACqwQ,MAAM,EAAEhD,OAAO,CAAC,IAC5B,CAACttQ,MAAM,CAAC24B,IAAI,EAAE,MAAM,CAAC,IACrB,EAAEA,IAAI,YAAYx8B,IAAI,IAAI,CAACw8B,IAAI,CAACj7B,GAAG,CAAC,MAAM,CAAC,IAAIi7B,IAAI,CAACj7B,GAAG,CAAC,UAAU,CAAC,CAAC,EACpE;UACA,MAAM,IAAI\u002FM,WAAW,CACnB,qDACF,CAAC;QACH;QACA,IAAI,CAACgoC,IAAI,EAAE;UACT,OAAO,IAAI;QACb;QACA,IAAI,EAAEA,IAAI,YAAYx8B,IAAI,CAAC,EAAE;UAC3B,MAAM,IAAIxL,WAAW,CAAC,4BAA4B,CAAC;QACrD;QACA4\u002FQ,SAAS,GAAG53O,IAAI,CAACt7B,MAAM,CAAC,QAAQ,CAAC;QACjC,OAAOs7B,IAAI,CAAC17B,QAAQ,CAAC,QAAQ,CAAC;MAChC,CAAC,CAAC,CACDkP,IAAI,CAAC,UAAUlN,MAAM,EAAE;QACtB,IAAI,CAACA,MAAM,EAAE;UACX,OAAO,IAAI;QACb;QACA,IAAI,EAAEA,MAAM,YAAY9C,IAAI,CAAC,EAAE;UAC7B,MAAM,IAAIxL,WAAW,CAAC,8BAA8B,CAAC;QACvD;QACA,OAAOsO,MAAM,CAAChC,QAAQ,CAAC,MAAM,CAAC;MAChC,CAAC,CAAC,CACDkP,IAAI,CAAC,UAAU4sP,IAAI,EAAE;QACpB,IAAI,CAACA,IAAI,EAAE;UACT,OAAO,IAAI;QACb;QAEA,MAAM8gB,WAAW,GAAG,EAAE;QACtB,IAAIj\u002FN,KAAK,GAAG,KAAK;QACjB,KAAK,MAAMo+M,GAAG,IAAID,IAAI,EAAE;UACtB,IAAI,EAAEC,GAAG,YAAYj8P,GAAG,CAAC,EAAE;YACzB,MAAM,IAAIpM,WAAW,CAAC,0BAA0B,CAAC;UACnD;UACA,IAAIsP,WAAW,CAAC+4P,GAAG,EAAEsX,MAAM,CAAC,EAAE;YAC5B11N,KAAK,GAAG,IAAI;YACZ;UACF;UACAi\u002FN,WAAW,CAACloR,IAAI,CACdyK,IAAI,CAACc,UAAU,CAAC87P,GAAG,CAAC,CAAC7sP,IAAI,CAAC,UAAU\u002Fc,GAAG,EAAE;YACvC,IAAI,EAAEA,GAAG,YAAY+M,IAAI,CAAC,EAAE;cAC1B,MAAM,IAAIxL,WAAW,CAAC,gCAAgC,CAAC;YACzD;YACA,IAAIvB,GAAG,CAACsO,GAAG,CAAC,OAAO,CAAC,EAAE;cACpBoQ,KAAK,IAAI1e,GAAG,CAACkL,GAAG,CAAC,OAAO,CAAC;YAC3B,CAAC,MAAM;cAELwT,KAAK,EAAE;YACT;UACF,CAAC,CACH,CAAC;QACH;QACA,IAAI,CAAC8sC,KAAK,EAAE;UACV,MAAM,IAAIjqD,WAAW,CAAC,2CAA2C,CAAC;QACpE;QACA,OAAOya,OAAO,CAAC27O,GAAG,CAAC8yB,WAAW,CAAC,CAAC1tQ,IAAI,CAAC,YAAY;UAC\u002FC,OAAO,CAAC2B,KAAK,EAAEyiQ,SAAS,CAAC;QAC3B,CAAC,CAAC;MACJ,CAAC,CAAC;IACN;IAEA,IAAIziQ,KAAK,GAAG,CAAC;IACb,MAAM0S,IAAI,GAAG3hB,GAAG,IACd+6Q,cAAc,CAAC\u002F6Q,GAAG,CAAC,CAACsN,IAAI,CAAC1B,IAAI,IAAI;MAC\u002FB,IAAI,CAACA,IAAI,EAAE;QACT,IAAI,CAACkoQ,cAAc,CAACvzQ,GAAG,CAACkuQ,OAAO,EAAEx\u002FP,KAAK,CAAC;QACvC,OAAOA,KAAK;MACd;MACA,MAAM,CAACmC,KAAK,EAAEsgQ,SAAS,CAAC,GAAG9lQ,IAAI;MAC\u002FBqD,KAAK,IAAImC,KAAK;MACd,OAAOuQ,IAAI,CAAC+vP,SAAS,CAAC;IACxB,CAAC,CAAC;IAEJ,OAAO\u002FvP,IAAI,CAAC8sP,OAAO,CAAC;EACtB;EAEA,IAAI9+Q,OAAOA,CAAA,EAAG;IACZ,MAAMsrR,GAAG,GAAG,IAAI,CAACxH,QAAQ,CAACh4Q,GAAG,CAAC,KAAK,CAAC;IACpC,IAAIw\u002FQ,GAAG,YAAY39Q,IAAI,EAAE;MACvB,MAAM8X,IAAI,GAAG6lQ,GAAG,CAACx\u002FQ,GAAG,CAAC,MAAM,CAAC;MAC5B,IAAI,OAAO2Z,IAAI,KAAK,QAAQ,EAAE;QAC5B,MAAMhlB,WAAW,GAAGV,sBAAsB,CAAC0lB,IAAI,EAAE,IAAI,EAAE;UACrDllB,kBAAkB,EAAE;QACtB,CAAC,CAAC;QACF,IAAIE,WAAW,EAAE;UACf,OAAOE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAEF,WAAW,CAACy7C,IAAI,CAAC;QAClD;MACF;IACF;IACA,OAAOv7C,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAACw+Q,UAAU,CAACqG,UAAU,CAAC;EAC5D;EAiBA,OAAOH,mBAAmBA,CAAC;IACzBC,QAAQ;IACRC,SAAS;IACTC,UAAU,GAAG,IAAI;IACjBC,cAAc,GAAG;EACnB,CAAC,EAAE;IACD,IAAI,EAAEH,QAAQ,YAAY33Q,IAAI,CAAC,EAAE;MAC\u002FBpO,IAAI,CAAC,uDAAuD,CAAC;MAC7D;IACF;IAEA,IAAI0X,MAAM,GAAGquQ,QAAQ,CAACx5Q,GAAG,CAAC,GAAG,CAAC;MAC5BjM,GAAG;MACHmgB,IAAI;IACN,IAAI,EAAE\u002FI,MAAM,YAAYtJ,IAAI,CAAC,EAAE;MAC7B,IAAI23Q,QAAQ,CAACp2Q,GAAG,CAAC,MAAM,CAAC,EAAE;QAGxB+H,MAAM,GAAGquQ,QAAQ,CAACx5Q,GAAG,CAAC,MAAM,CAAC;MAC\u002FB,CAAC,MAAM;QACLmL,MAAM,GAAGquQ,QAAQ,CAACx5Q,GAAG,CAAC,IAAI,CAAC;QAC3B,IAAImL,MAAM,YAAYtJ,IAAI,EAAE;UAC1B,IAAIsJ,MAAM,CAAC\u002FH,GAAG,CAAC,GAAG,CAAC,EAAE;YAEnB+H,MAAM,GAAGA,MAAM,CAACnL,GAAG,CAAC,GAAG,CAAC;UAC1B,CAAC,MAAM,IAAImL,MAAM,CAAC\u002FH,GAAG,CAAC,GAAG,CAAC,EAAE;YAE1B+H,MAAM,GAAGA,MAAM,CAACnL,GAAG,CAAC,GAAG,CAAC;UAC1B;QACF;MACF;IACF;IAEA,IAAImL,MAAM,YAAYtJ,IAAI,EAAE;MAC1B,MAAM49Q,UAAU,GAAGt0Q,MAAM,CAACnL,GAAG,CAAC,GAAG,CAAC;MAClC,IAAI,EAAEy\u002FQ,UAAU,YAAYh+Q,IAAI,CAAC,EAAE;QACjChO,IAAI,CAAC,yDAAyD,CAAC;QAC\u002FD;MACF;MACA,MAAMisR,UAAU,GAAGD,UAAU,CAAC\u002FpR,IAAI;MAElC,QAAQgqR,UAAU;QAChB,KAAK,WAAW;UACd,MAAM\u002FrP,KAAK,GAAGxoB,MAAM,CAACnL,GAAG,CAAC,OAAO,CAAC;UACjC,MAAM2\u002FQ,OAAO,GAAG,CAAC,CAAC,OAAOhsP,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;UACnE,MAAMszL,MAAM,GAAG,EAAE;UACjB,MAAMo0D,IAAI,GAAG,EAAE;UACf,KAAK,MAAMvmR,GAAG,IAAIqW,MAAM,CAACnL,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE;YAC5C,IAAIlL,GAAG,YAAY2N,GAAG,EAAE;cACtB44Q,IAAI,CAAChkR,IAAI,CAACvC,GAAG,CAAC0E,QAAQ,CAAC,CAAC,CAAC;YAC3B,CAAC,MAAM,IAAI,OAAO1E,GAAG,KAAK,QAAQ,EAAE;cAClCmyN,MAAM,CAAC5vN,IAAI,CAACwG,iBAAiB,CAAC\u002FI,GAAG,CAAC,CAAC;YACrC;UACF;UACA2kR,SAAS,CAACmG,SAAS,GAAG;YAAE34D,MAAM;YAAEo0D,IAAI;YAAEsE;UAAQ,CAAC;UAC\u002FC;QACF,KAAK,KAAK;UACR5rR,GAAG,GAAGoX,MAAM,CAACnL,GAAG,CAAC,KAAK,CAAC;UACvB,IAAIjM,GAAG,YAAY0N,IAAI,EAAE;YAEvB1N,GAAG,GAAG,GAAG,GAAGA,GAAG,CAAC2B,IAAI;UACtB;UACA;QAEF,KAAK,MAAM;UACTwe,IAAI,GAAG\u002FI,MAAM,CAACnL,GAAG,CAAC,GAAG,CAAC;UACtB;QAEF,KAAK,QAAQ;QAMb,KAAK,OAAO;UACV,MAAM6\u002FQ,OAAO,GAAG10Q,MAAM,CAACnL,GAAG,CAAC,GAAG,CAAC;UAC\u002FB,IAAI6\u002FQ,OAAO,YAAYh+Q,IAAI,EAAE;YAC3B,MAAM29P,EAAE,GAAG,IAAIH,QAAQ,CACrBwgB,OAAO,EACM,IAAI,EACG,IACtB,CAAC;YACD,MAAM;cAAE\u002Ff;YAAY,CAAC,GAAGN,EAAE,CAACK,YAAY;YACvC9rQ,GAAG,GAAG+rQ,WAAW;UACnB,CAAC,MAAM,IAAI,OAAO+f,OAAO,KAAK,QAAQ,EAAE;YACtC9rR,GAAG,GAAG8rR,OAAO;UACf;UAGA,MAAMC,UAAU,GAAGlI,eAAe,CAACzsQ,MAAM,CAAC;UAC1C,IAAI20Q,UAAU,IAAI,OAAO\u002FrR,GAAG,KAAK,QAAQ,EAAE;YACzCA,GAAG,GAAmBA,GAAG,CAACmW,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG41Q,UAAU;UAC\u002FD;UAEA,MAAM5yQ,SAAS,GAAG\u002FB,MAAM,CAACnL,GAAG,CAAC,WAAW,CAAC;UACzC,IAAI,OAAOkN,SAAS,KAAK,SAAS,EAAE;YAClCusQ,SAAS,CAACvsQ,SAAS,GAAGA,SAAS;UACjC;UACA;QAEF,KAAK,OAAO;UACV,MAAM6yQ,MAAM,GAAG50Q,MAAM,CAACnL,GAAG,CAAC,GAAG,CAAC;UAC9B,IAAI85Q,UAAU;UAEd,IAAIH,cAAc,IAAIoG,MAAM,YAAYl+Q,IAAI,EAAE;YAC5C,MAAMm+Q,YAAY,GAAGD,MAAM,CAAC\u002F\u002FQ,GAAG,CAAC,GAAG,CAAC;YACpC,MAAMtK,IAAI,GAAGqqR,MAAM,CAAC\u002F\u002FQ,GAAG,CAAC,GAAG,CAAC;YAE5B,IAAIuF,MAAM,CAACy6Q,YAAY,EAAE,GAAG,CAAC,IAAI,OAAOtqR,IAAI,KAAK,QAAQ,EAAE;cACzDokR,UAAU,GAAGH,cAAc,CAAC97Q,iBAAiB,CAACnI,IAAI,CAAC,CAAC;YACtD;UACF;UAEA,IAAIokR,UAAU,EAAE;YACdL,SAAS,CAACK,UAAU,GAAGA,UAAU;YAGjC,MAAMmG,cAAc,GAAGrI,eAAe,CAACzsQ,MAAM,CAAC;YAC9C,IAAI80Q,cAAc,EAAE;cAClBxG,SAAS,CAACwG,cAAc,GAAGA,cAAc;YAC3C;UACF,CAAC,MAAM;YACLxsR,IAAI,CAAE,qDAAoD,CAAC;UAC7D;UACA;QAEF,KAAK,OAAO;UACV,MAAMysR,WAAW,GAAG\u002F0Q,MAAM,CAACnL,GAAG,CAAC,GAAG,CAAC;UACnC,IAAIkgR,WAAW,YAAYz+Q,IAAI,EAAE;YAC\u002FBg4Q,SAAS,CAACtuQ,MAAM,GAAG+0Q,WAAW,CAACxqR,IAAI;UACrC;UACA;QAEF,KAAK,aAAa;UAChB,MAAMmoD,KAAK,GAAG1yC,MAAM,CAACnL,GAAG,CAAC,OAAO,CAAC;UACjC,MAAMmgR,UAAU,GAAGh1Q,MAAM,CAACnL,GAAG,CAAC,YAAY,CAAC;UAE3C,IAAI,CAAC3G,KAAK,CAACyJ,OAAO,CAAC+6C,KAAK,CAAC,IAAIA,KAAK,CAACrpD,MAAM,KAAK,CAAC,EAAE;YAC\u002FC;UACF;UACA,MAAM4rR,QAAQ,GAAG,EAAE;UAEnB,KAAK,MAAM1+O,IAAI,IAAImc,KAAK,EAAE;YACxB,IAAInc,IAAI,YAAYjgC,IAAI,EAAE;cACxB,QAAQigC,IAAI,CAAChsC,IAAI;gBACf,KAAK,IAAI;gBACT,KAAK,KAAK;gBACV,KAAK,QAAQ;kBACX0qR,QAAQ,CAAC\u002FoR,IAAI,CAACqqC,IAAI,CAAChsC,IAAI,CAAC;kBACxB;cACJ;YACF,CAAC,MAAM,IAAIgsC,IAAI,YAAYj\u002FB,GAAG,EAAE;cAC9B29Q,QAAQ,CAAC\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\u002FQ,MAAM,CAAC,CAAC;AAClC,MAAM+\u002FQ,QAAQ,GAAG\u002F\u002FQ,MAAM,CAAC,CAAC;AACzB,MAAMggR,YAAY,GAAGhgR,MAAM,CAAC,CAAC;AAC7B,MAAMigR,eAAe,GAAGjgR,MAAM,CAAC,CAAC;AAChC,MAAMkgR,MAAM,GAAGlgR,MAAM,CAAC,CAAC;AACvB,MAAMmgR,UAAU,GAAGngR,MAAM,CAAC,CAAC;AAC3B,MAAMogR,QAAQ,GAAGpgR,MAAM,CAAC,CAAC;AACzB,MAAMqgR,MAAM,GAAGrgR,MAAM,CAAC,CAAC;AACvB,MAAMsgR,SAAS,GAAGtgR,MAAM,CAAC,CAAC;AAC1B,MAAMugR,QAAQ,GAAGvgR,MAAM,CAAC,SAAS,CAAC;AAClC,MAAMwgR,KAAK,GAAGxgR,MAAM,CAAC,MAAM,CAAC;AAC5B,MAAMygR,KAAK,GAAGzgR,MAAM,CAAC,CAAC;AACtB,MAAM0gR,MAAM,GAAG1gR,MAAM,CAAC,OAAO,CAAC;AAC9B,MAAM2gR,SAAS,GAAG3gR,MAAM,CAAC,CAAC;AAC1B,MAAM4gR,UAAU,GAAG5gR,MAAM,CAAC,CAAC;AAC3B,MAAM6gR,eAAe,GAAG7gR,MAAM,CAAC,CAAC;AAChC,MAAM8gR,cAAc,GAAG9gR,MAAM,CAAC,CAAC;AAC\u002FB,MAAM+gR,kBAAkB,GAAG\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\u002FmR,IAAI,IAAI,EAAE;EAC\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\u002FmR,IAAI;IACtC,IAAIkoR,QAAQ,CAAC\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\u002F5B,UAAU;QAC\u002FB;QACAi6B,QAAQ,GAAG,IAAI;QACfC,WAAW,GAAG,KAAK;QAEnB;MACF;MAEAH,gBAAgB,IAAI\u002F5B,UAAU;MAC9Bg6B,iBAAiB,GAAGx0R,IAAI,CAACgE,GAAG,CAACs1P,WAAW,EAAEk7B,iBAAiB,CAAC;IAC9D;IAEAv9Q,KAAK,GAAGjX,IAAI,CAACgE,GAAG,CAACiT,KAAK,EAAEs9Q,gBAAgB,CAAC;IACzCr9Q,MAAM,IAAIs9Q,iBAAiB,GAAG,IAAI,CAACZ,WAAW;IAE9C,OAAO;MAAE38Q,KAAK,EAAEw7Q,YAAY,GAAGx7Q,KAAK;MAAEC,MAAM;MAAEu9Q;IAAS,CAAC;EAC1D;AACF;;;ACzR2B;AACiB;AAE5C,MAAMG,WAAW,GAAG,SAAS;AAC7B,MAAMC,YAAY,GAAG,SAAS;AAC9B,MAAMjqD,SAAS,GAAG;EAChBkqD,GAAG,EAAE,CAAC;EACNC,MAAM,EAAE,CAAC;EACTC,OAAO,EAAE,CAAC;EACVC,UAAU,EAAE,CAAC;EACbC,QAAQ,EAAE;AACZ,CAAC;AAED,MAAMC,SAAS,GAAG,IAAIvsR,GAAG,CAAC,CACxB,CAAC,OAAO,EAAE,CAACy+P,IAAI,EAAE+tB,OAAO,KAAM\u002FtB,IAAI,CAACgS,QAAQ,GAAGhS,IAAI,CAACgS,QAAQ,CAACnoQ,IAAI,GAAGm2P,IAAK,CAAC,EACzE,CACE,SAAS,EACT,CAACA,IAAI,EAAE+tB,OAAO,KACZ,CAAC\u002FtB,IAAI,CAACgS,QAAQ,GAAGhS,IAAI,CAACgS,QAAQ,CAACnoQ,IAAI,GAAGm2P,IAAI,EAAEmkB,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACjE,EACD,CAAC,WAAW,EAAE,CAACnkB,IAAI,EAAE+tB,OAAO,KAAK\u002FtB,IAAI,CAACxvO,QAAQ,CAAC,EAC\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\u002FDxuR,GAAG,CAAC\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\u002FCrf,KAAK,CAACw\u002FC,eAAe,GAAG,UAAU;IACpC;EACF,CAAC;EACDC,QAAQA,CAAC9zP,IAAI,EAAEq0M,KAAK,EAAE;IACpB,QAAQr0M,IAAI,CAAC8zP,QAAQ;MACnB,KAAK,WAAW;QACdz\u002FC,KAAK,CAAC0\u002FC,UAAU,GAAG,QAAQ;QAC3B;MACF,KAAK,QAAQ;MACb,KAAK,UAAU;QACb1\u002FC,KAAK,CAAC2\u002FC,OAAO,GAAG,MAAM;QACtB;IACJ;EACF,CAAC;EACDC,MAAMA,CAACj0P,IAAI,EAAEq0M,KAAK,EAAE;IAClB,IAAIr0M,IAAI,CAAC0lP,SAAS,CAAC,KAAK,MAAM,EAAE;MAC9B,QAAQ1lP,IAAI,CAACi0P,MAAM;QACjB,KAAK,YAAY;UACf5\u002FC,KAAK,CAAC6\u002FC,SAAS,GAAG,aAAa;UAC\u002FB;QACF,KAAK,OAAO;UAEV7\u002FC,KAAK,CAAC6\u002FC,SAAS,GAAG,MAAM;UACxB;QACF;UACE7\u002FC,KAAK,CAAC6\u002FC,SAAS,GAAGl0P,IAAI,CAACi0P,MAAM;MACjC;IACF,CAAC,MAAM;MACL,QAAQj0P,IAAI,CAACi0P,MAAM;QACjB,KAAK,MAAM;UACT5\u002FC,KAAK,CAAC8\u002FC,SAAS,GAAG,OAAO;UACzB;QACF,KAAK,QAAQ;UACX9\u002FC,KAAK,CAAC8\u002FC,SAAS,GAAG,QAAQ;UAC1B;QACF,KAAK,OAAO;UACV9\u002FC,KAAK,CAAC8\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\u002FC,SAAS,GAAG9\u002FC,KAAK,CAAC8\u002FC,SAAS;IACpD,OAAO9\u002FC,KAAK,CAAC8\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\u002F3P,IAAI,EAAE;EAC\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\u002FB,OAAO,KAAK;MACd;MAEA,OAAO\u002F3G,KAAK,CAACx9J,MAAM,GAAGuoR,KAAK;IAC7B,KAAK,OAAO;IACZ,KAAK,IAAI;MACP,IAAIr4P,IAAI,CAACykP,gBAAgB,CAAC,CAAC,CAAC,CAACjB,MAAM,CAAC,CAAC8U,eAAe,EAAE;QACpD,OAAO,IAAI;MACb;MAIA,IAAIt4P,IAAI,CAAC2H,CAAC,KAAK,EAAE,IAAI,CAAC3H,IAAI,CAAColP,aAAa,CAAC,CAAC,CAAC,EAAE;QAC3C,OAAOxsR,IAAI,CAACoW,KAAK,CAAC24B,CAAC,GAAG2lI,KAAK,CAACx9J,MAAM,CAAC,IAAIuoR,KAAK;MAC9C;MAIA,IAAIr4P,IAAI,CAACypJ,CAAC,KAAK,EAAE,IAAI7wL,IAAI,CAACoW,KAAK,CAACy6K,CAAC,GAAGnc,KAAK,CAACz9J,KAAK,CAAC,IAAIwoR,KAAK,EAAE;QACzD,OAAO\u002FqH,KAAK,CAACx9J,MAAM,GAAGuoR,KAAK;MAC7B;MAEA,IAAI\u002FxR,MAAM,CAAC++Q,iBAAiB,CAAC,CAAC,CAAC,EAAE;QAC\u002FB,OAAO,KAAK;MACd;MAEA,OAAO\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\u002FB,OAAO\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\u002FC,OAAO,IAAI;IACb,CAAC,MAAM,IAAI\u002FY,MAAM,IAAIA,MAAM,KAAK+Y,eAAe,EAAE;MAC\u002FCz6P,IAAI,CAACwjP,MAAM,CAAC,CAAC9B,MAAM,GAAGA,MAAM;MAC5B,OAAO,IAAI;IACb;IAEA,OAAO,KAAK;EACd;EAEA,IAAI,EAAEA,MAAM,YAAYkZ,WAAW,CAAC,EAAE;IACpClZ,MAAM,GAAG,IAAI;EACf;EAEA,MAAMmZ,QAAQ,GAAGnZ,MAAM,IAAIA,MAAM,CAAC8C,UAAU,CAAC,CAAC,CAAC;EAE\u002FC,IAAI\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\u002F8B,UAAU,CAAC+8B,WAAW,IAAI,EAAE;IAC\u002FC,IAAI,CAAC1rD,MAAM,GAAG00C,eAAe,CAAC\u002FlB,UAAU,CAAC3uB,MAAM,EAAE,CAC\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\u002FL,QAAQ,GAAG46D,eAAe,CAAC\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\u002FY,eAAe,CAAC\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\u002FlB,UAAU,CAAC0\u002FB,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACxE,IAAI,CAACl0Q,EAAE,GAAGw0O,UAAU,CAACx0O,EAAE,IAAI,EAAE;IAC7B,IAAI,CAACkkB,IAAI,GAAGq2O,eAAe,CAAC\u002FlB,UAAU,CAACtwN,IAAI,EAAE,CAC3C,aAAa,EACb,QAAQ,EACR,aAAa,EACb,SAAS,CACV,CAAC;IACF,IAAI,CAACiwP,SAAS,GAAGja,UAAU,CAAC;MAC1Bv+Q,IAAI,EAAE64P,UAAU,CAAC2\u002FB,SAAS;MAC1Bha,YAAY,EAAE,CAAC;MACfC,QAAQ,EAAEzpR,CAAC,IAAIA,CAAC,KAAK;IACvB,CAAC,CAAC;IACF,IAAI,CAAC6yR,GAAG,GAAGhvB,UAAU,CAACgvB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGjvB,UAAU,CAACivB,OAAO,IAAI,EAAE;IACvC,IAAI,CAACqE,MAAM,GAAG,IAAI;IAClB,IAAI,CAAC2G,MAAM,GAAG,IAAI;IAClB,IAAI,CAACrR,MAAM,GAAG,IAAI;EACpB;EAEA,CAAC3E,OAAO,EAAEwK,cAAc,EAAE;IAExB,MAAM\u002F8C,KAAK,GAAGuhD,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC;IAC\u002FC,MAAM2M,EAAE,GAAG,IAAI,CAAC\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\u002FBywP,gBAAgB,CAAC\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\u002FlB,UAAU,CAACzyQ,MAAM,EAAE,CAC\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\u002FD,IAAI,CAACiL,aAAa,GAAG\u002Fa,eAAe,CAAC\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\u002FlB,UAAU,CAACsxB,MAAM,EAAE,CAC\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\u002F\u002FF,CAAC,GAAGA,CAAC;IACZ;IACA,IAAI9hJ,CAAC,IAAI,IAAI,CAACA,CAAC,KAAK,EAAE,EAAE;MACtB,IAAI,CAACA,CAAC,GAAGA,CAAC;IACZ;IAEA0yP,oBAAoB,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAClC,eAAe,CAAC,IAAI,EAAE\u002FG,cAAc,CAAC,EAAE;MAC1C,IAAI,CAAC3nG,CAAC,GAAGq7G,MAAM;MACf,IAAI,CAACn9P,CAAC,GAAGo9P,MAAM;MACf,IAAI,CAAC\u002Fe,QAAQ,CAAC,CAAC,CAAC;MAChB,OAAOuD,UAAU,CAACC,OAAO;IAC3B;IACA8Q,sBAAsB,CAAC,IAAI,CAAC;IAE5B,MAAMjmD,KAAK,GAAGuhD,OAAO,CACnB,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,QACF,CAAC;IAEDxB,mBAAmB,CAAC,IAAI,EAAE\u002F\u002FC,KAAK,CAAC;IAEhC,IAAIA,KAAK,CAACk3C,MAAM,EAAE;MAChBl3C,KAAK,CAACsiD,OAAO,GAAGtiD,KAAK,CAACk3C,MAAM;MAC5B,OAAOl3C,KAAK,CAACk3C,MAAM;IACrB;IAEA,MAAM+K,UAAU,GAAG,CAAC,SAAS,CAAC;IAC9B,IAAI,IAAI,CAAC\u002F8E,IAAI,EAAE;MACb+8E,UAAU,CAACt9R,IAAI,CAAC,SAAS,CAAC;IAC5B;IACA,IAAIu9R,WAAW,CAAC,IAAI,CAAC,EAAE;MACrBD,UAAU,CAACt9R,IAAI,CAAC,cAAc,CAAC;IACjC;IAEA,MAAM2pQ,UAAU,GAAG;MACjBtuB,KAAK;MACLlmN,EAAE,EAAE,IAAI,CAAC44P,IAAI,CAAC;MACdiP,KAAK,EAAEM;IACT,CAAC;IAED,IAAI,IAAI,CAACj\u002FR,IAAI,EAAE;MACbsrQ,UAAU,CAACu6B,OAAO,GAAG,IAAI,CAAC7lS,IAAI;IAChC;IAEA,MAAMsyR,IAAI,GAAG;MACXtyR,IAAI,EAAE,KAAK;MACXsrQ,UAAU;MACV9iO,QAAQ,EAAE;IACZ,CAAC;IAED+5P,WAAW,CAAC,IAAI,EAAEj3B,UAAU,CAAC;IAE7B,MAAMj6C,IAAI,GAAG+sE,WAAW,CAAC,IAAI,EAAE9L,IAAI,EAAEyH,cAAc,CAAC;IAEpD,MAAMz6R,KAAK,GAAG,IAAI,CAACA,KAAK,GAAG,IAAI,CAACA,KAAK,CAACiwR,OAAO,CAAC,CAACwK,cAAc,CAAC,CAACzH,IAAI,GAAG,IAAI;IAC1E,IAAIhzR,KAAK,KAAK,IAAI,EAAE;MAClB,IAAI,CAAC8yL,CAAC,GAAGq7G,MAAM;MACf,IAAI,CAACn9P,CAAC,GAAGo9P,MAAM;MACf,IAAI,CAAC\u002Fe,QAAQ,CAAC,CAAC,CAAC;MAChB,OAAOuD,UAAU,CAACG,OAAO,CAACoM,aAAa,CAAC,IAAI,EAAEnM,IAAI,CAAC,EAAEjhE,IAAI,CAAC;IAC5D;IAEAihE,IAAI,CAAC9pP,QAAQ,CAAC7mC,IAAI,CAACrC,KAAK,CAAC;IACzBqgS,OAAO,CAAC,IAAI,EAAE3iD,KAAK,EAAE19O,KAAK,CAAC;IAE3B,IAAI,CAAC8yL,CAAC,GAAGq7G,MAAM;IACf,IAAI,CAACn9P,CAAC,GAAGo9P,MAAM;IAEf,IAAI,CAAC\u002Fe,QAAQ,CAAC,CAAC,CAAC;IAChB,OAAOuD,UAAU,CAACG,OAAO,CAACoM,aAAa,CAAC,IAAI,EAAEnM,IAAI,CAAC,EAAEjhE,IAAI,CAAC;EAC5D;AACF;AAEA,MAAMmzE,IAAI,SAASrL,SAAS,CAAC;EAC3Bl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC61B,cAAc,EAAE,MAAM,EAAsB,IAAI,CAAC;IACvD,IAAI,CAACwM,GAAG,GAAGtc,eAAe,CAAC\u002FlB,UAAU,CAACqiC,GAAG,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACvE,IAAI,CAAC72Q,EAAE,GAAGw0O,UAAU,CAACx0O,EAAE,IAAI,EAAE;IAC7B,IAAI,CAAC2lQ,QAAQ,GAAGpL,eAAe,CAAC\u002FlB,UAAU,CAACmxB,QAAQ,EAAE,CACnD,SAAS,EACT,QAAQ,EACR,UAAU,EACV,WAAW,CACZ,CAAC;IACF,IAAI,CAAC5jS,MAAM,GAAGw4R,eAAe,CAAC\u002FlB,UAAU,CAACzyQ,MAAM,EAAE,CAC\u002FC,OAAO,EACP,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,SAAS,EACT,QAAQ,CACT,CAAC;IACF,IAAI,CAAC8rS,SAAS,GAAGrT,cAAc,CAAChmB,UAAU,CAACq5B,SAAS,EAAE,OAAO,CAAC;IAC9D,IAAI,CAACrK,GAAG,GAAGhvB,UAAU,CAACgvB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGjvB,UAAU,CAACivB,OAAO,IAAI,EAAE;IACvC,IAAI,CAACzyQ,KAAK,GAAG,IAAI;IACjB,IAAI,CAACy9Q,MAAM,GAAG,IAAI;EACpB;EAEA,CAAC9V,QAAQ,IAAI;IAEX,MAAMzyC,KAAK,GAAGuhD,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC;IACzC\u002F+R,MAAM,CAACy5C,MAAM,CAAC+jM,KAAK,EAAE;MACnB4wD,OAAO,EAAE,IAAI,CAACD,GAAG;MACjBn1R,KAAK,EAAEyjR,eAAe,CAAC,IAAI,CAAC0I,SAAS,CAAC;MACtC78Q,KAAK,EAAE,IAAI,CAACA,KAAK,GAAG,IAAI,CAACA,KAAK,CAAC2nQ,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS;MACtDzyC,KAAK,EAAE;IACT,CAAC,CAAC;IAEF,IAAI,IAAI,CAACy\u002FC,QAAQ,KAAK,SAAS,EAAE;MAC\u002FBz\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\u002FlB,UAAU,CAACkjC,MAAM,EAAE,CAC\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\u002FlB,UAAU,CAACk0B,MAAM,EAAE,CAC\u002FC,MAAM,EACN,gBAAgB,EAChB,WAAW,EACX,UAAU,CACX,CAAC;IACF,IAAI,CAAC6P,SAAS,GAAG\u002FjC,UAAU,CAAC+jC,SAAS,IAAI,EAAE;IAC3C,IAAI,CAAClT,UAAU,GAAG9K,eAAe,CAAC\u002FlB,UAAU,CAAC6wB,UAAU,EAAE,CACvD,SAAS,EACT,cAAc,EACd,YAAY,EACZ,aAAa,EACb,cAAc,EACd,YAAY,EACZ,aAAa,EACb,WAAW,EACX,UAAU,CACX,CAAC;IACF,IAAI,CAACE,OAAO,GAAGrL,UAAU,CAAC;MACxBv+Q,IAAI,EAAE64P,UAAU,CAAC+wB,OAAO;MACxBpL,YAAY,EAAE,CAAC;MACfC,QAAQ,EAAErtR,CAAC,IAAIA,CAAC,IAAI,CAAC,IAAIA,CAAC,KAAK,CAAC;IAClC,CAAC,CAAC;IACF,IAAI,CAACysC,CAAC,GAAGg7N,UAAU,CAACh7N,CAAC,GAAGghP,cAAc,CAAChmB,UAAU,CAACh7N,CAAC,CAAC,GAAG,EAAE;IACzD,IAAI,CAACssP,MAAM,GAAGvL,eAAe,CAAC\u002FlB,UAAU,CAACsxB,MAAM,EAAE,CAC\u002FC,MAAM,EACN,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,OAAO,EACP,OAAO,CACR,CAAC;IACF,IAAI,CAAC9lQ,EAAE,GAAGw0O,UAAU,CAACx0O,EAAE,IAAI,EAAE;IAC7B,IAAI,CAACijC,MAAM,GAAGs3N,eAAe,CAAC\u002FlB,UAAU,CAACvxM,MAAM,EAAE,CAC\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\u002FlB,UAAU,CAACk0B,MAAM,EAAE,CAC\u002FC,MAAM,EACN,gBAAgB,EAChB,WAAW,EACX,UAAU,CACX,CAAC;IACF,IAAI,CAAC6P,SAAS,GAAG\u002FjC,UAAU,CAAC+jC,SAAS,IAAI,EAAE;IAC3C,IAAI,CAAClT,UAAU,GAAG9K,eAAe,CAAC\u002FlB,UAAU,CAAC6wB,UAAU,EAAE,CACvD,SAAS,EACT,cAAc,EACd,YAAY,EACZ,aAAa,EACb,cAAc,EACd,YAAY,EACZ,aAAa,EACb,WAAW,EACX,UAAU,CACX,CAAC;IACF,IAAI,CAACE,OAAO,GAAGrL,UAAU,CAAC;MACxBv+Q,IAAI,EAAE64P,UAAU,CAAC+wB,OAAO;MACxBpL,YAAY,EAAE,CAAC;MACfC,QAAQ,EAAErtR,CAAC,IAAIA,CAAC,IAAI,CAAC,IAAIA,CAAC,KAAK,CAAC;IAClC,CAAC,CAAC;IACF,IAAI,CAACysC,CAAC,GAAGg7N,UAAU,CAACh7N,CAAC,GAAGghP,cAAc,CAAChmB,UAAU,CAACh7N,CAAC,CAAC,GAAG,EAAE;IACzD,IAAI,CAACssP,MAAM,GAAGvL,eAAe,CAAC\u002FlB,UAAU,CAACsxB,MAAM,EAAE,CAC\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\u002F\u002FC,KAAK,CAAC;IAEhC,MAAMiiD,UAAU,GAAG,CAAC,UAAU,CAAC;IAE\u002FB,IAAI,IAAI,CAAC\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\u002FlB,UAAU,CAACunC,cAAc,EAAE,CAC\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\u002FlB,UAAU,CAAC2oC,MAAM,EAAE,CAC\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\u002FlB,UAAU,CAAC96O,IAAI,EAAE\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\u002FlB,UAAU,CAAC71P,MAAM,EAAE,CAC\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\u002FkB,eAAe,CAAC\u002FlB,UAAU,CAAC8qC,MAAM,EAAE,CAC\u002FC,MAAM,EACN,UAAU,EACV,WAAW,CACZ,CAAC;IACF,IAAI,CAACC,OAAO,GAAGhlB,eAAe,CAAC\u002FlB,UAAU,CAAC+qC,OAAO,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxE,IAAI,CAAC\u002Fb,GAAG,GAAGhvB,UAAU,CAACgvB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGjvB,UAAU,CAACivB,OAAO,IAAI,EAAE;EACzC;AACF;AAEA,MAAM+b,OAAO,SAASnd,SAAS,CAAC;EAC9Bl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC61B,cAAc,EAAE,SAAS,EAAsB,IAAI,CAAC;IAC1D,IAAI,CAACrqQ,EAAE,GAAGw0O,UAAU,CAACx0O,EAAE,IAAI,EAAE;IAC7B,IAAI,CAACwjQ,GAAG,GAAGhvB,UAAU,CAACgvB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGjvB,UAAU,CAACivB,OAAO,IAAI,EAAE;IACvC,IAAI,CAAC5+B,IAAI,GAAG,IAAI49B,cAAc,CAAC,CAAC;EAClC;AACF;AAEA,MAAMgd,WAAW,SAASpd,SAAS,CAAC;EAClCl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC61B,cAAc,EAAE,aAAa,EAAsB,IAAI,CAAC;IAC9D,IAAI,CAACiL,aAAa,GAAG\u002Fa,eAAe,CAAC\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\u002FR,SAAS,EAAE,CAAC,CAAC;QACb6\u002FR,YAAY,EAAE,CAAC;MACjB,CAAC;IACH;IAEA,IAAI,IAAI,CAACH,QAAQ,KAAK,mBAAmB,EAAE;MACzC,IAAI,IAAI,CAACxrB,MAAM,CAAC,CAACl0Q,SAAS,GAAG,CAAC,GAAG,IAAI,CAACurR,QAAQ,CAACh7P,QAAQ,CAAC1pC,MAAM,EAAE;QAC9D,IAAI,CAACqtR,MAAM,CAAC,CAACl0Q,SAAS,IAAI,CAAC;QAC3B,MAAMurR,QAAQ,GAAG,IAAI,CAACA,QAAQ,CAACh7P,QAAQ,CAAC,IAAI,CAAC2jP,MAAM,CAAC,CAACl0Q,SAAS,CAAC;QAC\u002FD,OAAOurR,QAAQ,CAACvW,YAAY,CAAC,CAAC,CAAC;MACjC;MAEA,IAAI,IAAI,CAACd,MAAM,CAAC,CAAC2rB,YAAY,GAAG,CAAC,GAAG,IAAI,CAACD,OAAO,CAACrvQ,QAAQ,CAAC1pC,MAAM,EAAE;QAChE,IAAI,CAACqtR,MAAM,CAAC,CAAC2rB,YAAY,IAAI,CAAC;QAC9B,OAAO,IAAI,CAACD,OAAO,CAACrvQ,QAAQ,CAAC,IAAI,CAAC2jP,MAAM,CAAC,CAAC2rB,YAAY,CAAC,CAAC7qB,YAAY,CAAC,CAAC,CAAC;MACzE;MAEA,IAAI,IAAI,CAACiB,SAAS,CAAC,CAAC,CAAC,EAAE;QACrB,IAAI,CAAC\u002FB,MAAM,CAAC,CAACurB,WAAW,IAAI,CAAC;QAC7B,IAAI,CAACvrB,MAAM,CAAC,CAACl0Q,SAAS,GAAG,CAAC,CAAC;QAC3B,IAAI,CAACk0Q,MAAM,CAAC,CAAC2rB,YAAY,GAAG,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC7qB,YAAY,CAAC,CAAC,CAAC;MAC7B;MAEA,MAAMh+Q,MAAM,GAAG,IAAI,CAACk+Q,UAAU,CAAC,CAAC,CAAC;MACjC,IAAIl+Q,MAAM,YAAY0nS,OAAO,EAAE;QAC7B,OAAO1nS,MAAM,CAACg+Q,YAAY,CAAC,CAAC,CAAC;MAC\u002FB;MAEA,IAAI,CAACrB,UAAU,CAAC,CAAC,CAAC;MAClB,OAAO,IAAI,CAACqB,YAAY,CAAC,CAAC,CAAC;IAC7B;IACA,MAAM8qB,UAAU,GAAG,IAAI,CAAC3qB,gBAAgB,CAAC,CAAC,CAAC,CAACjB,MAAM,CAAC,CAAC4rB,UAAU;IAC9D,MAAMC,MAAM,GAAGD,UAAU,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,KAAK;IACpD,MAAMh+R,QAAQ,GAAGg+R,UAAU,KAAK,CAAC,GAAG,OAAO,GAAG,MAAM;IAEpD,IAAIj2B,IAAI,GAAG,IAAI,CAAC0hB,QAAQ,CAACh7P,QAAQ,CAAC8qP,IAAI,CACpC3uR,CAAC,IAAIA,CAAC,CAAC2yS,SAAS,KAAKU,MAAM,IAAIrzS,CAAC,CAAC4yS,YAAY,KAAKx9R,QACpD,CAAC;IACD,IAAI+nQ,IAAI,EAAE;MACR,OAAOA,IAAI;IACb;IAEAA,IAAI,GAAG,IAAI,CAAC0hB,QAAQ,CAACh7P,QAAQ,CAAC8qP,IAAI,CAChC3uR,CAAC,IAAIA,CAAC,CAAC2yS,SAAS,KAAK,KAAK,IAAI3yS,CAAC,CAAC4yS,YAAY,KAAKx9R,QACnD,CAAC;IACD,IAAI+nQ,IAAI,EAAE;MACR,OAAOA,IAAI;IACb;IAEAA,IAAI,GAAG,IAAI,CAAC0hB,QAAQ,CAACh7P,QAAQ,CAAC8qP,IAAI,CAChC3uR,CAAC,IAAIA,CAAC,CAAC2yS,SAAS,KAAK,KAAK,IAAI3yS,CAAC,CAAC4yS,YAAY,KAAK,KACnD,CAAC;IACD,IAAIz1B,IAAI,EAAE;MACR,OAAOA,IAAI;IACb;IAEA,OAAO,IAAI,CAAC0hB,QAAQ,CAACh7P,QAAQ,CAAC,CAAC,CAAC;EAClC;AACF;AAEA,MAAMyvQ,IAAI,SAAS9e,SAAS,CAAC;EAC3Bl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC61B,cAAc,EAAE,MAAM,EAAsB,IAAI,CAAC;IACvD,IAAI,CAACvE,MAAM,GAAGvL,eAAe,CAAC\u002FlB,UAAU,CAACsxB,MAAM,EAAE,CAC\u002FC,MAAM,EACN,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,OAAO,EACP,OAAO,CACR,CAAC;IACF,IAAI,CAAC9lQ,EAAE,GAAGw0O,UAAU,CAACx0O,EAAE,IAAI,EAAE;IAC7B,IAAI,CAACuiM,UAAU,GAAGiyC,UAAU,CAACjyC,UAAU,GACnCi4D,cAAc,CAAChmB,UAAU,CAACjyC,UAAU,EAAE,KAAK,CAAC,GAC5C,EAAE;IACN,IAAI,CAAC2kE,UAAU,GAAG1yB,UAAU,CAAC0yB,UAAU,GACnC1M,cAAc,CAAChmB,UAAU,CAAC0yB,UAAU,EAAE,KAAK,CAAC,GAC5C,EAAE;IACN,IAAI,CAACC,WAAW,GAAG3yB,UAAU,CAAC2yB,WAAW,GACrC3M,cAAc,CAAChmB,UAAU,CAAC2yB,WAAW,EAAE,KAAK,CAAC,GAC7C,EAAE;IACN,IAAI,CAACia,OAAO,GAAGlnB,UAAU,CAAC;MACxBv+Q,IAAI,EAAE64P,UAAU,CAAC4sC,OAAO;MACxBjnB,YAAY,EAAE,CAAC;MACfC,QAAQ,EAAEzpR,CAAC,IAAIA,CAAC,IAAI;IACtB,CAAC,CAAC;IACF,IAAI,CAAC0wS,QAAQ,GAAG7sC,UAAU,CAAC6sC,QAAQ,IAAI,EAAE;IACzC,IAAI,CAACC,WAAW,GAAG9sC,UAAU,CAAC8sC,WAAW,GACrC9mB,cAAc,CAAChmB,UAAU,CAAC8sC,WAAW,EAAE,KAAK,CAAC,GAC7C,EAAE;IACN,IAAI,CAACta,UAAU,GAAGxyB,UAAU,CAACwyB,UAAU,GACnCxM,cAAc,CAAChmB,UAAU,CAACwyB,UAAU,EAAE,KAAK,CAAC,GAC5C,EAAE;IACN,IAAI,CAACC,UAAU,GAAGzyB,UAAU,CAACyyB,UAAU,GACnCzM,cAAc,CAAChmB,UAAU,CAACyyB,UAAU,EAAE,KAAK,CAAC,GAC5C,EAAE;IACN,IAAI,CAACsa,UAAU,GAAG\u002FsC,UAAU,CAAC+sC,UAAU,GACnC\u002FmB,cAAc,CAAC,IAAI,CAAC+mB,UAAU,CAAC,GAC\u002FB,EAAE;IACN,IAAI,CAACC,QAAQ,GAAG,CAAChtC,UAAU,CAACgtC,QAAQ,IAAI,EAAE,EACvCrpC,IAAI,CAAC,CAAC,CACNz6P,KAAK,CAAC,KAAK,CAAC,CACZnS,GAAG,CAAC,CAACoF,CAAC,EAAEpG,CAAC,KAAMA,CAAC,GAAG,CAAC,KAAK,CAAC,GAAGiwR,cAAc,CAAC7pR,CAAC,CAAC,GAAGA,CAAE,CAAC;IACvD,IAAI,CAAC43R,UAAU,GAAG\u002FzB,UAAU,CAAC+zB,UAAU,GACnC\u002FN,cAAc,CAAChmB,UAAU,CAAC+zB,UAAU,EAAE,KAAK,CAAC,GAC5C,EAAE;IACN,IAAI,CAAC\u002FE,GAAG,GAAGhvB,UAAU,CAACgvB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGjvB,UAAU,CAACivB,OAAO,IAAI,EAAE;IACvC,IAAI,CAACwF,MAAM,GAAG1O,eAAe,CAAC\u002FlB,UAAU,CAACy0B,MAAM,EAAE,CAC\u002FC,KAAK,EACL,QAAQ,EACR,QAAQ,CACT,CAAC;IACF,IAAI,CAACwY,MAAM,GAAGvnB,UAAU,CAAC;MACvBv+Q,IAAI,EAAE64P,UAAU,CAACitC,MAAM;MACvBtnB,YAAY,EAAE,CAAC;MACfC,QAAQ,EAAEzpR,CAAC,IAAIA,CAAC,IAAI;IACtB,CAAC,CAAC;IACF,IAAI,CAAC+wS,WAAW,GAAG,IAAI;EACzB;EAEA,CAAC\u002FoB,QAAQ,IAAI;IACX,MAAMzyC,KAAK,GAAGuhD,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;IACrC,IAAI,IAAI,CAACP,UAAU,KAAK,EAAE,EAAE;MAC1BhhD,KAAK,CAACy7D,WAAW,GAAGxc,eAAe,CAAC,IAAI,CAAC+B,UAAU,CAAC;IACtD;IACA,IAAI,IAAI,CAACC,WAAW,KAAK,EAAE,EAAE;MAC3BjhD,KAAK,CAAC07D,WAAW,GAAGzc,eAAe,CAAC,IAAI,CAACgC,WAAW,CAAC;IACvD;IACA,IAAI,IAAI,CAACH,UAAU,KAAK,EAAE,EAAE;MAC1B9gD,KAAK,CAAC27D,UAAU,GAAG1c,eAAe,CAAC,IAAI,CAAC6B,UAAU,CAAC;IACrD;IACA,IAAI,IAAI,CAACC,UAAU,KAAK,EAAE,EAAE;MAC1B\u002FgD,KAAK,CAAC47D,aAAa,GAAG3c,eAAe,CAAC,IAAI,CAAC8B,UAAU,CAAC;IACxD;IACA,IAAI,IAAI,CAACsB,UAAU,KAAK,EAAE,EAAE;MAC1BriD,KAAK,CAACqiD,UAAU,GAAGpD,eAAe,CAAC,IAAI,CAACoD,UAAU,CAAC;MACnDF,aAAa,CAACniD,KAAK,CAAC;IACtB;IAEA,IAAI,IAAI,CAAC3jB,UAAU,GAAG,CAAC,EAAE;MACvB2jB,KAAK,CAAC3jB,UAAU,GAAG4iE,eAAe,CAAC,IAAI,CAAC5iE,UAAU,CAAC;IACrD;IAEA,IAAI,IAAI,CAACg\u002FE,UAAU,KAAK,EAAE,EAAE;MAC1Br7D,KAAK,CAAC67D,OAAO,GAAG5c,eAAe,CAAC,IAAI,CAACoc,UAAU,CAAC;IAClD;IAEA,IAAI,IAAI,CAACC,QAAQ,CAACx5S,MAAM,GAAG,CAAC,EAAE,CAE9B;IAEA,IAAI,IAAI,CAACg6S,aAAa,EAAE;MACtBt5S,MAAM,CAACy5C,MAAM,CAAC+jM,KAAK,EAAE,IAAI,CAAC87D,aAAa,CAACrpB,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtD;IAEA,OAAOzyC,KAAK;EACd;AACF;AAEA,MAAM+7D,YAAY,SAAS5f,SAAS,CAAC;EACnCl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC61B,cAAc,EAAE,cAAc,EAAsB,IAAI,CAAC;IAC\u002FD,IAAI,CAACiL,aAAa,GAAG\u002Fa,eAAe,CAAC\u002FlB,UAAU,CAAC8gC,aAAa,EAAE,CAC7D,MAAM,EACN,KAAK,EACL,IAAI,CACL,CAAC;IACF,IAAI,CAACt1Q,EAAE,GAAGw0O,UAAU,CAACx0O,EAAE,IAAI,EAAE;IAC7B,IAAI,CAACkiR,YAAY,GAAG1tC,UAAU,CAAC0tC,YAAY,IAAI,GAAG;IAClD,IAAI,CAAC1e,GAAG,GAAGhvB,UAAU,CAACgvB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGjvB,UAAU,CAACivB,OAAO,IAAI,EAAE;IACvC,IAAI,CAACqE,MAAM,GAAG,IAAI;IAClB,IAAI,CAAC2G,MAAM,GAAG,IAAI;IAClB,IAAI,CAACrR,MAAM,GAAG,IAAI;EACpB;AACF;AAEA,MAAMhtD,gBAAO,SAASiyD,SAAS,CAAC;EAC9Bl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC61B,cAAc,EAAE,SAAS,EAAsB,IAAI,CAAC;IAC1D,IAAI,CAACrqQ,EAAE,GAAGw0O,UAAU,CAACx0O,EAAE,IAAI,EAAE;IAC7B,IAAI,CAAC9oC,IAAI,GAAGqjS,eAAe,CAAC\u002FlB,UAAU,CAACt9Q,IAAI,EAAE,CAC3C,YAAY,EACZ,eAAe,EACf,cAAc,EACd,eAAe,EACf,YAAY,EACZ,UAAU,CACX,CAAC;IACF,IAAI,CAACssS,GAAG,GAAGhvB,UAAU,CAACgvB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGjvB,UAAU,CAACivB,OAAO,IAAI,EAAE;IACvC,IAAI,CAACzyQ,KAAK,GAAG,IAAI;IACjB,IAAI,CAACy9Q,MAAM,GAAG,IAAI;EACpB;EAEA,CAAC9V,QAAQ,EAAE8lB,UAAU,EAAE;IACrBA,UAAU,GAAGA,UAAU,GAAGA,UAAU,CAAC9lB,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS;IAC5D,MAAM+lB,QAAQ,GAAG,IAAI,CAAC1tR,KAAK,GAAG,IAAI,CAACA,KAAK,CAAC2nQ,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS;IAChE,MAAMj3Q,KAAK,GAAG,CAAC;IACf,MAAMvM,GAAG,GAAG,2BAA2B;IACvC,MAAMo5C,MAAM,GAAI,GAAEkwP,UAAW,IAAGA,UAAW,IAAG\u002F8R,KAAM,MAAKg9R,QAAS,IAAGh9R,KAAM,MAAKg9R,QAAS,IACvF,CAAC,GAAGh9R,KACL,IAAG;IACJ,QAAQ,IAAI,CAACxqB,IAAI;MACf,KAAK,YAAY;QACf,OAAQ,GAAEie,GAAI,WAAUo5C,MAAO,KAAIp5C,GAAI,aAAYo5C,MAAO,GAAE;MAC9D,KAAK,eAAe;QAClB,OAAQ,GAAEp5C,GAAI,UAASo5C,MAAO,KAAIp5C,GAAI,WAAUo5C,MAAO,GAAE;MAC3D,KAAK,cAAc;QACjB,OAAQ,GAAEp5C,GAAI,UAASo5C,MAAO,GAAE;MAClC,KAAK,eAAe;QAClB,OAAQ,GAAEp5C,GAAI,WAAUo5C,MAAO,GAAE;MACnC,KAAK,YAAY;QACf,OAAQ,GAAEp5C,GAAI,WAAUo5C,MAAO,GAAE;MACnC,KAAK,UAAU;QACb,OAAQ,GAAEp5C,GAAI,aAAYo5C,MAAO,GAAE;IACvC;IAEA,OAAO,EAAE;EACX;AACF;AAEA,MAAM4zP,OAAO,SAASrd,YAAY,CAAC;EACjC37R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC61B,cAAc,EAAE,SAAS,CAAC;IAChC,IAAI,CAACrqQ,EAAE,GAAGw0O,UAAU,CAACx0O,EAAE,IAAI,EAAE;IAC7B,IAAI,CAACwjQ,GAAG,GAAGhvB,UAAU,CAACgvB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGjvB,UAAU,CAACivB,OAAO,IAAI,EAAE;EACzC;AACF;AAEA,MAAM2e,KAAK,SAAS\u002Ff,SAAS,CAAC;EAC5Bl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC61B,cAAc,EAAE,OAAO,EAAsB,IAAI,CAAC;IACxD,IAAI,CAAC2Q,gBAAgB,GAAG,IAAIvY,cAAc,CAAC,CAAC;IAC5C,IAAI,CAAC13L,GAAG,GAAG,IAAI03L,cAAc,CAAC,CAAC;IAC\u002FB,IAAI,CAAC35C,IAAI,GAAG,IAAI25C,cAAc,CAAC,CAAC;IAChC,IAAI,CAACiJ,MAAM,GAAG,IAAIjJ,cAAc,CAAC,CAAC;IAClC,IAAI,CAAC4f,OAAO,GAAG,IAAI5f,cAAc,CAAC,CAAC;IACnC,IAAI,CAAC0W,SAAS,GAAG,IAAI1W,cAAc,CAAC,CAAC;IACrC,IAAI,CAAC6f,OAAO,GAAG,IAAI7f,cAAc,CAAC,CAAC;IACnC,IAAI,CAACqT,OAAO,GAAG,IAAIrT,cAAc,CAAC,CAAC;IACnC,IAAI,CAACqF,MAAM,GAAG,IAAIrF,cAAc,CAAC,CAAC;IAClC,IAAI,CAACkO,KAAK,GAAG,IAAIlO,cAAc,CAAC,CAAC;IACjC,IAAI,CAAC8f,UAAU,GAAG,IAAI9f,cAAc,CAAC,CAAC;IACtC,IAAI,CAAC+f,WAAW,GAAG,IAAI\u002Ff,cAAc,CAAC,CAAC;IACvC,IAAI,CAACqX,MAAM,GAAG,IAAIrX,cAAc,CAAC,CAAC;IAClC,IAAI,CAAC+V,SAAS,GAAG,IAAI\u002FV,cAAc,CAAC,CAAC;IACrC,IAAI,CAAC+T,OAAO,GAAG,IAAI\u002FT,cAAc,CAAC,CAAC;IACnC,IAAI,CAACyU,WAAW,GAAG,IAAIzU,cAAc,CAAC,CAAC;IACvC,IAAI,CAACwY,YAAY,GAAG,IAAIxY,cAAc,CAAC,CAAC;IACxC,IAAI,CAAC8W,WAAW,GAAG,IAAI9W,cAAc,CAAC,CAAC;IACvC,IAAI,CAAC+W,UAAU,GAAG,IAAI\u002FW,cAAc,CAAC,CAAC;IACtC,IAAI,CAACzxQ,KAAK,GAAG,IAAIyxQ,cAAc,CAAC,CAAC;IACjC,IAAI,CAAC+S,IAAI,GAAG,IAAI\u002FS,cAAc,CAAC,CAAC;IAChC,IAAI,CAACgW,OAAO,GAAG,IAAIhW,cAAc,CAAC,CAAC;IACnC,IAAI,CAACoK,WAAW,GAAG,IAAIpK,cAAc,CAAC,CAAC;IACvC,IAAI,CAACmO,MAAM,GAAG,IAAInO,cAAc,CAAC,CAAC;IAClC,IAAI,CAAC\u002FvR,IAAI,GAAG,IAAI+vR,cAAc,CAAC,CAAC;IAChC,IAAI,CAACsT,QAAQ,GAAG,IAAItT,cAAc,CAAC,CAAC;IACpC,IAAI,CAACggB,YAAY,GAAG,IAAIhgB,cAAc,CAAC,CAAC;IACxC,IAAI,CAACuT,OAAO,GAAG,IAAIvT,cAAc,CAAC,CAAC;IACnC,IAAI,CAACigB,SAAS,GAAG,IAAIjgB,cAAc,CAAC,CAAC;IACrC,IAAI,CAACrvB,IAAI,GAAG,IAAIqvB,cAAc,CAAC,CAAC;IAChC,IAAI,CAAC4T,YAAY,GAAG,IAAI5T,cAAc,CAAC,CAAC;IACxC,IAAI,CAACyY,aAAa,GAAG,IAAIzY,cAAc,CAAC,CAAC;IACzC,IAAI,CAACiM,IAAI,GAAG,IAAIjM,cAAc,CAAC,CAAC;IAChC,IAAI,CAACgL,IAAI,GAAG,IAAIhL,cAAc,CAAC,CAAC;IAChC,IAAI,CAACnxR,QAAQ,GAAG,IAAImxR,cAAc,CAAC,CAAC;IACpC,IAAI,CAAC94E,SAAS,GAAG,IAAI84E,cAAc,CAAC,CAAC;IACrC,IAAI,CAAC3pB,OAAO,GAAG,IAAI2pB,cAAc,CAAC,CAAC;IACnC,IAAI,CAACkV,WAAW,GAAG,IAAIlV,cAAc,CAAC,CAAC;IACvC,IAAI,CAACsQ,UAAU,GAAG,IAAItQ,cAAc,CAAC,CAAC;IACtC,IAAI,CAAC+U,gBAAgB,GAAG,IAAI\u002FU,cAAc,CAAC,CAAC;IAC5C,IAAI,CAAC0Y,iBAAiB,GAAG,IAAI1Y,cAAc,CAAC,CAAC;IAC7C,IAAI,CAACzC,KAAK,GAAG,IAAIyC,cAAc,CAAC,CAAC;IACjC,IAAI,CAAC2E,MAAM,GAAG,IAAI3E,cAAc,CAAC,CAAC;IAClC,IAAI,CAACkM,QAAQ,GAAG,IAAIlM,cAAc,CAAC,CAAC;IACpC,IAAI,CAACmM,SAAS,GAAG,IAAInM,cAAc,CAAC,CAAC;IACrC,IAAI,CAAC9gD,OAAO,GAAG,IAAI8gD,cAAc,CAAC,CAAC;IACnC,IAAI,CAACgM,MAAM,GAAG,IAAIhM,cAAc,CAAC,CAAC;IAClC,IAAI,CAAC\u002FnE,KAAK,GAAG,IAAI+nE,cAAc,CAAC,CAAC;IACjC,IAAI,CAACxgS,IAAI,GAAG,IAAIwgS,cAAc,CAAC,CAAC;IAChC,IAAI,CAAC7vO,MAAM,GAAG,IAAI6vO,cAAc,CAAC,CAAC;IAClC,IAAI,CAACwT,KAAK,GAAG,IAAIxT,cAAc,CAAC,CAAC;IACjC,IAAI,CAACr3E,IAAI,GAAG,IAAIq3E,cAAc,CAAC,CAAC;IAChC,IAAI,CAACphO,MAAM,GAAG,IAAIohO,cAAc,CAAC,CAAC;IAClC,IAAI,CAAChrC,OAAO,GAAG,IAAIgrC,cAAc,CAAC,CAAC;IACnC,IAAI,CAACif,WAAW,GAAG,IAAIjf,cAAc,CAAC,CAAC;IACvC,IAAI,CAAC7vC,KAAK,GAAG,IAAI6vC,cAAc,CAAC,CAAC;IACjC,IAAI,CAACsX,SAAS,GAAG,IAAItX,cAAc,CAAC,CAAC;IACrC,IAAI,CAACyT,OAAO,GAAG,IAAIzT,cAAc,CAAC,CAAC;IACnC,IAAI,CAACuQ,OAAO,GAAG,IAAIvQ,cAAc,CAAC,CAAC;IACnC,IAAI,CAAC3pR,KAAK,GAAG,IAAI2pR,cAAc,CAAC,CAAC;IACjC,IAAI,CAACgU,IAAI,GAAG,IAAIhU,cAAc,CAAC,CAAC;IAChC,IAAI,CAACwQ,QAAQ,GAAG,IAAIxQ,cAAc,CAAC,CAAC;IACpC,IAAI,CAAChxP,IAAI,GAAG,IAAIgxP,cAAc,CAAC,CAAC;IAChC,IAAI,CAAC6X,MAAM,GAAG,IAAI7X,cAAc,CAAC,CAAC;IAClC,IAAI,CAAC2Y,YAAY,GAAG,IAAI3Y,cAAc,CAAC,CAAC;IACxC,IAAI,CAAC2U,QAAQ,GAAG,IAAI3U,cAAc,CAAC,CAAC;IACpC,IAAI,CAACrF,MAAM,GAAG,IAAIqF,cAAc,CAAC,CAAC;IAClC,IAAI,CAAC4Y,GAAG,GAAG,IAAI5Y,cAAc,CAAC,CAAC;IAC\u002FB,IAAI,CAACie,MAAM,GAAG,IAAIje,cAAc,CAAC,CAAC;IAClC,IAAI,CAACx5R,OAAO,GAAG,IAAIw5R,cAAc,CAAC,CAAC;IACnC,IAAI,CAACyX,WAAW,GAAG,IAAIzX,cAAc,CAAC,CAAC;IACvC,IAAI,CAACke,KAAK,GAAG,IAAIle,cAAc,CAAC,CAAC;IACjC,IAAI,CAACwd,GAAG,GAAG,IAAIxd,cAAc,CAAC,CAAC;IAC\u002FB,IAAI,CAACyQ,IAAI,GAAG,IAAIzQ,cAAc,CAAC,CAAC;IAChC,IAAI,CAACsL,QAAQ,GAAG,IAAItL,cAAc,CAAC,CAAC;IACpC,IAAI,CAACiK,QAAQ,GAAG,IAAIjK,cAAc,CAAC,CAAC;IACpC,IAAI,CAACse,OAAO,GAAG,IAAIte,cAAc,CAAC,CAAC;IACnC,IAAI,CAACE,IAAI,GAAG,IAAIF,cAAc,CAAC,CAAC;IAChC,IAAI,CAACkgB,YAAY,GAAG,IAAIlgB,cAAc,CAAC,CAAC;IACxC,IAAI,CAAC51C,OAAO,GAAG,IAAI41C,cAAc,CAAC,CAAC;IACnC,IAAI,CAACyN,OAAO,GAAG,IAAIzN,cAAc,CAAC,CAAC;IACnC,IAAI,CAAC8X,MAAM,GAAG,IAAI9X,cAAc,CAAC,CAAC;IAClC,IAAI,CAACr8Q,MAAM,GAAG,IAAIq8Q,cAAc,CAAC,CAAC;IAClC,IAAI,CAAC6Y,OAAO,GAAG,IAAI7Y,cAAc,CAAC,CAAC;IACnC,IAAI,CAAC3gS,SAAS,GAAG,IAAI2gS,cAAc,CAAC,CAAC;IACrC,IAAI,CAAC1qR,GAAG,GAAG,IAAI0qR,cAAc,CAAC,CAAC;IAC\u002FB,IAAI,CAACsP,MAAM,GAAG,IAAItP,cAAc,CAAC,CAAC;IAClC,IAAI,CAACiU,WAAW,GAAG,IAAIjU,cAAc,CAAC,CAAC;IACvC,IAAI,CAACmV,QAAQ,GAAG,IAAInV,cAAc,CAAC,CAAC;IACpC,IAAI,CAACrqE,SAAS,GAAG,IAAIqqE,cAAc,CAAC,CAAC;IACrC,IAAI,CAAC0Q,OAAO,GAAG,IAAI1Q,cAAc,CAAC,CAAC;IACnC,IAAI,CAAC+X,KAAK,GAAG,IAAI\u002FX,cAAc,CAAC,CAAC;IACjC,IAAI,CAACsJ,KAAK,GAAG,IAAItJ,cAAc,CAAC,CAAC;IACjC,IAAI,CAACgY,OAAO,GAAG,IAAIhY,cAAc,CAAC,CAAC;IACnC,IAAI,CAACoM,OAAO,GAAG,IAAIpM,cAAc,CAAC,CAAC;IACnC,IAAI,CAACqM,UAAU,GAAG,IAAIrM,cAAc,CAAC,CAAC;IACtC,IAAI,CAACmgB,SAAS,GAAG,IAAIngB,cAAc,CAAC,CAAC;IACrC,IAAI,CAAC2Q,UAAU,GAAG,IAAI3Q,cAAc,CAAC,CAAC;IACtC,IAAI,CAACoV,MAAM,GAAG,IAAIpV,cAAc,CAAC,CAAC;IAClC,IAAI,CAAC59B,IAAI,GAAG,IAAI49B,cAAc,CAAC,CAAC;IAChC,IAAI,CAAC6W,QAAQ,GAAG,IAAI7W,cAAc,CAAC,CAAC;IACpC,IAAI,CAAC7f,IAAI,GAAG,IAAI6f,cAAc,CAAC,CAAC;IAChC,IAAI,CAAC8Y,SAAS,GAAG,IAAI9Y,cAAc,CAAC,CAAC;IACrC,IAAI,CAACuJ,OAAO,GAAG,IAAIvJ,cAAc,CAAC,CAAC;IACnC,IAAI,CAAC+I,SAAS,GAAG,IAAI\u002FI,cAAc,CAAC,CAAC;IACrC,IAAI,CAACogB,QAAQ,GAAG,IAAIpgB,cAAc,CAAC,CAAC;IACpC,IAAI,CAAC2R,EAAE,GAAG,IAAI3R,cAAc,CAAC,CAAC;IAC9B,IAAI,CAACrI,QAAQ,GAAG,IAAIqI,cAAc,CAAC,CAAC;IACpC,IAAI,CAACj6R,KAAK,GAAG,IAAIi6R,cAAc,CAAC,CAAC;IACjC,IAAI,CAACqgB,SAAS,GAAG,IAAIrgB,cAAc,CAAC,CAAC;EACvC;AACF;AAEA,MAAMsgB,MAAM,SAAS1gB,SAAS,CAAC;EAC7Bl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC61B,cAAc,EAAE,QAAQ,EAAsB,IAAI,CAAC;IACzD,IAAI,CAACrqQ,EAAE,GAAGw0O,UAAU,CAACx0O,EAAE,IAAI,EAAE;IAC7B,IAAI,CAAC9oC,IAAI,GAAGqjS,eAAe,CAAC\u002FlB,UAAU,CAACt9Q,IAAI,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACpE,IAAI,CAACssS,GAAG,GAAGhvB,UAAU,CAACgvB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGjvB,UAAU,CAACivB,OAAO,IAAI,EAAE;IACvC,IAAI,CAACzyQ,KAAK,GAAG,IAAI;IACjB,IAAI,CAACy9Q,MAAM,GAAG,IAAI;EACpB;EAEA,CAAC9V,QAAQ,EAAE8lB,UAAU,EAAE;IACrBA,UAAU,GAAGA,UAAU,GAAGA,UAAU,CAAC9lB,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS;IAC5D,MAAM+lB,QAAQ,GAAG,IAAI,CAAC1tR,KAAK,GAAG,IAAI,CAACA,KAAK,CAAC2nQ,QAAQ,CAAC,CAAC,CAAC,GAAG,SAAS;IAChE,MAAMpqO,MAAM,GACV,IAAI,CAACr3D,IAAI,KAAK,QAAQ,GACjB,GAAEunT,UAAW,IAAGC,QAAS,EAAC,GAC1B,GAAEA,QAAS,IAAGD,UAAW,EAAC;IACjC,OAAQ,qCAAoClwP,MAAO,GAAE;EACvD;AACF;AAEA,MAAMy0P,MAAM,SAASle,YAAY,CAAC;EAChC37R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC61B,cAAc,EAAE,QAAQ,CAAC;IAC\u002FB,IAAI,CAACrqQ,EAAE,GAAGw0O,UAAU,CAACx0O,EAAE,IAAI,EAAE;IAC7B,IAAI,CAAC92B,IAAI,GAAGsrQ,UAAU,CAACtrQ,IAAI,IAAI,EAAE;IACjC,IAAI,CAACs6R,GAAG,GAAGhvB,UAAU,CAACgvB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGjvB,UAAU,CAACivB,OAAO,IAAI,EAAE;EACzC;AACF;AAEA,MAAMwf,OAAO,SAAS5gB,SAAS,CAAC;EAC9Bl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC61B,cAAc,EAAE,SAAS,EAAsB,IAAI,CAAC;IAC1D,IAAI,CAACrqQ,EAAE,GAAGw0O,UAAU,CAACx0O,EAAE,IAAI,EAAE;IAC7B,IAAI,CAAC9oC,IAAI,GAAGqjS,eAAe,CAAC\u002FlB,UAAU,CAACt9Q,IAAI,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACtE,IAAI,CAACssS,GAAG,GAAGhvB,UAAU,CAACgvB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGjvB,UAAU,CAACivB,OAAO,IAAI,EAAE;IACvC,IAAI,CAACr9Q,MAAM,GAAG,IAAIq8Q,cAAc,CAAC,CAAC;EACpC;AACF;AAEA,MAAMqY,SAAS,SAASzY,SAAS,CAAC;EAChCl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC61B,cAAc,EAAE,WAAW,EAAsB,IAAI,CAAC;IAC5D,IAAI,CAACnC,IAAI,GAAG3N,eAAe,CAAC\u002FlB,UAAU,CAAC0zB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACvE,IAAI,CAACloQ,EAAE,GAAGw0O,UAAU,CAACx0O,EAAE,IAAI,EAAE;IAC7B,IAAI,CAACwjQ,GAAG,GAAGhvB,UAAU,CAACgvB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGjvB,UAAU,CAACivB,OAAO,IAAI,EAAE;IACvC,IAAI,CAACmN,MAAM,GAAG,IAAInO,cAAc,CAAC,CAAC,CAAC;IACnC,IAAI,CAACgL,IAAI,GAAG,IAAIhL,cAAc,CAAC,CAAC,CAAC;IACjC,IAAI,CAACxgS,IAAI,GAAG,IAAI;EAClB;EAEA,CAACw2R,OAAO,IAAI;IACV,MAAMgV,IAAI,GAAG,IAAI,CAACA,IAAI,CAAC\u002F7P,QAAQ,CAAC1pC,MAAM,GAClC,IAAI,CAACylS,IAAI,CAAC\u002F7P,QAAQ,CAAC,CAAC,CAAC,GACrB,IAAIg8P,IAAI,CAAC,CAAC,CAAC,CAAC;IAChB,MAAMC,SAAS,GAAGF,IAAI,CAAC9U,QAAQ,CAAC,CAAC,CAAC;IAClC,MAAMzyC,KAAK,GAAGx9O,MAAM,CAAC8C,MAAM,CAAC,IAAI,CAAC;IACjC,IAAI,IAAI,CAACvJ,IAAI,EAAE0jS,QAAQ,KAAK,SAAS,EAAE;MACrCj9R,MAAM,CAACy5C,MAAM,CAAC+jM,KAAK,EAAE,IAAI,CAACjkP,IAAI,CAAC02R,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,MAAM;MACLzyC,KAAK,CAACjkP,IAAI,GAAG,aAAa;IAC5B;IACAikP,KAAK,CAAC0nD,WAAW,GAAGzI,eAAe,CACjCsI,IAAI,CAAC9H,QAAQ,KAAK,SAAS,GAAG8H,IAAI,CAACI,SAAS,GAAG,CACjD,CAAC;IACD3nD,KAAK,CAACnkP,MAAM,GAAG4rS,SAAS,CAAC38Q,KAAK;IAE9B,MAAM4\u002FQ,MAAM,GAAG,IAAI,CAACA,MAAM,CAACl\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\u002FB,IAAI,CAACw7Q,MAAM,GAAG\u002Fe,UAAU,CAAC+e,MAAM,IAAI,EAAE;EACvC;AACF;AAEA,MAAM+vB,QAAQ,SAASjhB,SAAS,CAAC;EAC\u002FBl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC61B,cAAc,EAAE,UAAU,EAAsB,IAAI,CAAC;IAC3D,IAAI,CAACrqQ,EAAE,GAAGw0O,UAAU,CAACx0O,EAAE,IAAI,EAAE;IAC7B,IAAI,CAAC6jN,SAAS,GAAG02C,eAAe,CAAC\u002FlB,UAAU,CAAC3wB,SAAS,EAAE,CACrD,MAAM,EACN,OAAO,EACP,QAAQ,CACT,CAAC;IACF,IAAI,CAAC9rO,GAAG,GAAGy8P,UAAU,CAACz8P,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACw7Q,MAAM,GAAG\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\u002FlB,UAAU,CAACk0B,MAAM,EAAE,CAC\u002FC,MAAM,EACN,gBAAgB,EAChB,WAAW,EACX,UAAU,CACX,CAAC;IACF,IAAI,CAACsb,UAAU,GAAG9pB,UAAU,CAAC;MAC3Bv+Q,IAAI,EAAE64P,UAAU,CAACwvC,UAAU;MAC3B7pB,YAAY,EAAE,CAAC;MACfC,QAAQ,EAAEzpR,CAAC,IAAIA,CAAC,KAAK;IACvB,CAAC,CAAC;IACF,IAAI,CAAC00R,UAAU,GAAG9K,eAAe,CAAC\u002FlB,UAAU,CAAC6wB,UAAU,EAAE,CACvD,SAAS,EACT,cAAc,EACd,YAAY,EACZ,aAAa,EACb,cAAc,EACd,YAAY,EACZ,aAAa,EACb,WAAW,EACX,UAAU,CACX,CAAC;IACF,IAAI,CAACE,OAAO,GAAGrL,UAAU,CAAC;MACxBv+Q,IAAI,EAAE64P,UAAU,CAAC+wB,OAAO;MACxBpL,YAAY,EAAE,CAAC;MACfC,QAAQ,EAAErtR,CAAC,IAAIA,CAAC,IAAI,CAAC,IAAIA,CAAC,KAAK,CAAC;IAClC,CAAC,CAAC;IACF,IAAI,CAACy4R,YAAY,GAAG,CAAChxB,UAAU,CAACgxB,YAAY,IAAI,EAAE,EAC\u002FCrtB,IAAI,CAAC,CAAC,CACNz6P,KAAK,CAAC,KAAK,CAAC,CACZnS,GAAG,CAACoF,CAAC,IAAKA,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,GAAG6pR,cAAc,CAAC7pR,CAAC,CAAE,CAAC;IAClD,IAAI,CAAC6oC,CAAC,GAAGg7N,UAAU,CAACh7N,CAAC,GAAGghP,cAAc,CAAChmB,UAAU,CAACh7N,CAAC,CAAC,GAAG,EAAE;IACzD,IAAI,CAACssP,MAAM,GAAGvL,eAAe,CAAC\u002FlB,UAAU,CAACsxB,MAAM,EAAE,CAC\u002FC,MAAM,EACN,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,OAAO,EACP,OAAO,CACR,CAAC;IACF,IAAI,CAAC9lQ,EAAE,GAAGw0O,UAAU,CAACx0O,EAAE,IAAI,EAAE;IAC7B,IAAI,CAACijC,MAAM,GAAGs3N,eAAe,CAAC\u002FlB,UAAU,CAACvxM,MAAM,EAAE,CAC\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\u002F\u002FP,IAAI,GAAG,IAAIquQ,QAAQ,CAAC;UACxB3sB,MAAM,EAAE,IAAI,CAACod,KAAK,CAACiB,cAAc;UACjCpB,MAAM,EAAE,IAAI,CAACG,KAAK,CAACgB,cAAc;UACjChkB,OAAO,EAAE,IAAI,CAACgjB,KAAK,CAACkB;QACtB,CAAC,CAAC;QACFhgQ,IAAI,CAAC0kP,WAAW,CAAC,GAAG,IAAI,CAACA,WAAW,CAAC;QACrC,IAAI,CAAC5B,YAAY,CAAC,CAAC9iP,IAAI,CAAC;QACxB,IAAI,CAACk8P,QAAQ,CAACljS,IAAI,CAACgnC,IAAI,CAAC;MAC1B;MAEA,IAAI,CAACkmP,YAAY,CAAC,CAAC,IAAI,CAAC4Y,KAAK,CAAC;MAC9B,IAAI,CAACA,KAAK,GAAG,IAAI;IACnB;IAEA,IAAI,IAAI,CAAChL,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAACA,QAAQ,KAAK,UAAU,EAAE;MAC9D,OAAOvK,UAAU,CAACE,KAAK;IACzB;IAEA,IACE,IAAI,CAACknB,WAAW,CAAC9wQ,QAAQ,CAAC1pC,MAAM,GAAG,CAAC,IACpC,IAAI,CAACu6S,UAAU,CAAC7wQ,QAAQ,CAAC1pC,MAAM,GAAG,CAAC,EACnC;MAGAf,IAAI,CACF,yEACF,CAAC;IACH;IAEA,IAAI,IAAI,CAACu7S,WAAW,CAAC9wQ,QAAQ,CAAC1pC,MAAM,IAAI,CAAC,EAAE;MACzC,MAAMw6S,WAAW,GAAG,IAAI,CAACA,WAAW,CAAC9wQ,QAAQ,CAAC,CAAC,CAAC;MAChD,IAAI06P,WAAW,CAACoW,WAAW,CAAC,EAAE;QAC5B,OAAOpnB,UAAU,CAACK,SAAS,CAAC+mB,WAAW,CAAC;MAC1C;IACF;IAEA,IAAI,IAAI,CAACntB,MAAM,CAAC,EAAE+uB,eAAe,EAAE;MACjC,OAAOhpB,UAAU,CAACE,KAAK;IACzB;IAGAiM,aAAa,CAAC,IAAI,CAAC;IACnB,MAAM71P,QAAQ,GAAG,EAAE;IACnB,MAAM8iO,UAAU,GAAG;MACjBx0O,EAAE,EAAE,IAAI,CAAC44P,IAAI,CAAC;MACdiP,KAAK,EAAE;IACT,CAAC;IAEDY,SAAS,CAAC,IAAI,EAAEj0B,UAAU,CAACqzB,KAAK,CAAC;IAEjC,IAAI,CAAC,IAAI,CAACxS,MAAM,CAAC,EAAE;MACjB,IAAI,CAACA,MAAM,CAAC,GAAG3sR,MAAM,CAAC8C,MAAM,CAAC,IAAI,CAAC;IACpC;IAEA9C,MAAM,CAACy5C,MAAM,CAAC,IAAI,CAACkzO,MAAM,CAAC,EAAE;MAC1B3jP,QAAQ;MACRD,IAAI,EAAE,IAAI;MACV+iO,UAAU;MACVk1B,OAAO,EAAE,CAAC;MACVC,YAAY,EAAE,CAAC;MACf1G,cAAc,EAAE;QACdvhR,KAAK,EAAEjX,IAAI,CAACC,GAAG,CAAC,IAAI,CAAC4wL,CAAC,IAAI4iE,QAAQ,EAAE+kC,cAAc,CAACvhR,KAAK,CAAC;QACzDC,MAAM,EAAElX,IAAI,CAACC,GAAG,CAAC,IAAI,CAAC8uC,CAAC,IAAI0kN,QAAQ,EAAE+kC,cAAc,CAACthR,MAAM;MAC5D,CAAC;MACDD,KAAK,EAAE,CAAC;MACRC,MAAM,EAAE,CAAC;MACTgpO,UAAU,EAAE,CAAC;MACb\u002FkN,YAAY,EAAE;IAChB,CAAC,CAAC;IAEF,MAAMksO,IAAI,GAAG,IAAI,CAACwkB,gBAAgB,CAAC,CAAC,CAAC;IACrC,MAAM+tB,oBAAoB,GAAGvyC,IAAI,CAACujB,MAAM,CAAC,CAAC8U,eAAe;IAEzD,MAAMwO,YAAY,GAAG,IAAI,CAAC1hB,aAAa,CAAC,CAAC,CAAC;IAC1C,IAAI,CAAC0hB,YAAY,EAAE;MACjBzM,oBAAoB,CAAC,IAAI,CAAC;IAC5B;IAEA,IAAI,CAAClC,eAAe,CAAC,IAAI,EAAE\u002FG,cAAc,CAAC,EAAE;MAC1C,OAAO7H,UAAU,CAACC,OAAO;IAC3B;IAEA,MAAMzoO,MAAM,GAAG,IAAIv6C,GAAG,CAAC,CACrB,MAAM,EACN,MAAM,EACN,WAAW,EACX,OAAO,EACP,SAAS,EACT,YAAY,CACb,CAAC;IAEF,IAAI,IAAI,CAAC4qD,MAAM,CAAC12D,QAAQ,CAAC,KAAK,CAAC,EAAE;MAC\u002FB,MAAMi5R,YAAY,GAAG,IAAI,CAACpP,iBAAiB,CAAC,CAAC,CAAC,CAACoP,YAAY;MAC3D,IAAI34R,KAAK,CAACyJ,OAAO,CAACkvR,YAAY,CAAC,IAAIA,YAAY,CAACx9R,MAAM,GAAG,CAAC,EAAE;QAC1D,IAAI,CAACqtR,MAAM,CAAC,CAACmQ,YAAY,GAAGA,YAAY;QACxC,IAAI,CAACnQ,MAAM,CAAC,CAACoQ,aAAa,GAAG,CAAC;MAChC;IACF;IAEA,MAAMv\u002FC,KAAK,GAAGuhD,OAAO,CACnB,IAAI,EACJ,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,QACF,CAAC;IACD,MAAMU,UAAU,GAAG,CAAC,YAAY,CAAC;IACjC,MAAM5xD,EAAE,GAAGixD,WAAW,CAAC,IAAI,CAAC;IAC5B,IAAIjxD,EAAE,EAAE;MACN4xD,UAAU,CAACt9R,IAAI,CAAC0rO,EAAE,CAAC;IACrB;IAEAi+B,UAAU,CAACtuB,KAAK,GAAGA,KAAK;IACxBsuB,UAAU,CAACqzB,KAAK,GAAGM,UAAU;IAE7B,IAAI,IAAI,CAACj\u002FR,IAAI,EAAE;MACbsrQ,UAAU,CAACu6B,OAAO,GAAG,IAAI,CAAC7lS,IAAI;IAChC;IAEA,IAAI,IAAI,CAAC6kS,QAAQ,EAAE;MACjB,MAAMuW,aAAa,GAAG,IAAI,CAACvW,QAAQ,CAAChY,SAAS,CAAC,CAAC,CAAC;MAChD,IAAIuuB,aAAa,CAACnE,SAAS,EAAE;QAC3BmE,aAAa,CAACnE,SAAS,GAAG,KAAK;QAC\u002FBnT,cAAc,CAAC,IAAI,EAAEsX,aAAa,CAAC9T,MAAM,EAAEvN,cAAc,CAAC;MAC5D;IACF;IAEA,IAAI,CAACnL,SAAS,CAAC,CAAC,CAAC;IACjB,MAAM8gB,MAAM,GAAG,IAAI,CAAC31O,MAAM,KAAK,OAAO,IAAI,IAAI,CAACA,MAAM,KAAK,OAAO;IACjE,MAAM41O,MAAM,GAAGD,MAAM,GAAGrO,4BAA4B,GAAG,CAAC;IACxD,OAAO,IAAI,CAAClV,MAAM,CAAC,CAACqU,OAAO,GAAGmP,MAAM,EAAE,IAAI,CAACxjB,MAAM,CAAC,CAACqU,OAAO,EAAE,EAAE;MAC5D,IAAIkP,MAAM,IAAI,IAAI,CAACvjB,MAAM,CAAC,CAACqU,OAAO,KAAKa,4BAA4B,GAAG,CAAC,EAAE;QAIvE,IAAI,CAAClV,MAAM,CAAC,CAACsU,YAAY,GAAG,CAAC;MAC\u002FB;MACA,MAAMv5Q,MAAM,GAAG,IAAI,CAACwkQ,eAAe,CAAC,CAAC;QACnChiO,MAAM;QACNugO,OAAO,EAAE;MACX,CAAC,CAAC;MACF,IAAI\u002FiQ,MAAM,CAACmrQ,OAAO,EAAE;QAClB;MACF;MACA,IAAInrQ,MAAM,CAACsrQ,OAAO,CAAC,CAAC,EAAE;QACpB,IAAI,CAAC7D,QAAQ,CAAC,CAAC,CAAC;QAChB,OAAOznQ,MAAM;MACf;MACA,IACEwoR,MAAM,IACN,IAAI,CAACvjB,MAAM,CAAC,CAACqU,OAAO,KAAK,CAAC,IAC1B,IAAI,CAACrU,MAAM,CAAC,CAACsU,YAAY,KAAK,CAAC,IAC\u002FB,CAAC73B,IAAI,CAACujB,MAAM,CAAC,CAAC8U,eAAe,EAC7B;QASA,IAAI,CAAC9U,MAAM,CAAC,CAACqU,OAAO,GAAGmP,MAAM;QAC7B;MACF;IACF;IAEA,IAAI,CAAChhB,QAAQ,CAAC,CAAC,CAAC;IAChB,IAAI,CAAC8gB,YAAY,EAAE;MACjBxM,sBAAsB,CAAC,IAAI,CAAC;IAC9B;IACAr6B,IAAI,CAACujB,MAAM,CAAC,CAAC8U,eAAe,GAAGka,oBAAoB;IAEnD,IAAI,IAAI,CAAChvB,MAAM,CAAC,CAACqU,OAAO,KAAKmP,MAAM,EAAE;MACnC,IAAI,IAAI,CAAC9K,QAAQ,EAAE;QACjB,IAAI,CAACzX,gBAAgB,CAAC,CAAC,CAAC,CAACjB,MAAM,CAAC,CAACkvB,YAAY,GAAG,IAAI,CAACxW,QAAQ;MAC\u002FD;MAEA,IAAI,CAAC4K,YAAY,EAAE;QAGjB,OAAO,IAAI,CAACtjB,MAAM,CAAC;MACrB;MACA,OAAO+F,UAAU,CAACC,OAAO;IAC3B;IAEA,IAAI,IAAI,CAAC0S,QAAQ,EAAE;MACjB,MAAMuW,aAAa,GAAG,IAAI,CAACvW,QAAQ,CAAChY,SAAS,CAAC,CAAC,CAAC;MAChD,IAAIuuB,aAAa,CAAClE,UAAU,EAAE;QAC5BkE,aAAa,CAAClE,UAAU,GAAG,KAAK;QAChCpT,cAAc,CAAC,IAAI,EAAEsX,aAAa,CAAC32B,OAAO,EAAEsV,cAAc,CAAC;MAC7D;IACF;IAEA,IAAIyD,OAAO,GAAG,CAAC;IACf,IAAIC,OAAO,GAAG,CAAC;IACf,IAAI,IAAI,CAACvJ,MAAM,EAAE;MACfsJ,OAAO,GAAG,IAAI,CAACtJ,MAAM,CAACwJ,SAAS,GAAG,IAAI,CAACxJ,MAAM,CAACyJ,UAAU;MACxDF,OAAO,GAAG,IAAI,CAACvJ,MAAM,CAAC0J,QAAQ,GAAG,IAAI,CAAC1J,MAAM,CAAC2J,WAAW;IAC1D;IAEA,MAAMrlR,KAAK,GAAGjX,IAAI,CAACgE,GAAG,CAAC,IAAI,CAAC4mR,MAAM,CAAC,CAAC3zQ,KAAK,GAAGglR,OAAO,EAAE,IAAI,CAACprG,CAAC,IAAI,CAAC,CAAC;IACjE,MAAM35K,MAAM,GAAGlX,IAAI,CAACgE,GAAG,CAAC,IAAI,CAAC4mR,MAAM,CAAC,CAAC1zQ,MAAM,GAAGglR,OAAO,EAAE,IAAI,CAACntP,CAAC,IAAI,CAAC,CAAC;IACnE,MAAM+gL,IAAI,GAAG,CAAC,IAAI,CAAC5pN,CAAC,EAAE,IAAI,CAACC,CAAC,EAAE8Q,KAAK,EAAEC,MAAM,CAAC;IAE5C,IAAI,IAAI,CAAC25K,CAAC,KAAK,EAAE,EAAE;MACjB4qD,KAAK,CAACxkO,KAAK,GAAGyjR,eAAe,CAACzjR,KAAK,CAAC;IACtC;IACA,IAAI,IAAI,CAAC83B,CAAC,KAAK,EAAE,EAAE;MACjB0sM,KAAK,CAACvkO,MAAM,GAAGwjR,eAAe,CAACxjR,MAAM,CAAC;IACxC;IAEA,IACE,CAACukO,KAAK,CAACxkO,KAAK,KAAK,KAAK,IAAIwkO,KAAK,CAACvkO,MAAM,KAAK,KAAK,KAChD+vB,QAAQ,CAAC1pC,MAAM,KAAK,CAAC,EACrB;MACA,OAAOozR,UAAU,CAACE,KAAK;IACzB;IAEA,MAAME,IAAI,GAAG;MACXtyR,IAAI,EAAE,KAAK;MACXsrQ,UAAU;MACV9iO;IACF,CAAC;IAED+5P,WAAW,CAAC,IAAI,EAAEj3B,UAAU,CAAC;IAE7B,MAAMpkP,MAAM,GAAGgrQ,UAAU,CAACG,OAAO,CAACoM,aAAa,CAAC,IAAI,EAAEnM,IAAI,CAAC,EAAEjhE,IAAI,CAAC;IAElE,IAAI,IAAI,CAACgoF,UAAU,CAAC7wQ,QAAQ,CAAC1pC,MAAM,IAAI,CAAC,EAAE;MACxC,MAAMu6S,UAAU,GAAG,IAAI,CAACA,UAAU,CAAC7wQ,QAAQ,CAAC,CAAC,CAAC;MAC9C,IAAI06P,WAAW,CAACmW,UAAU,CAAC,EAAE;QAC3B,IAAI,CAACltB,MAAM,CAAC,CAAC+uB,eAAe,GAAGh0R,MAAM;QACrC,OAAOgrQ,UAAU,CAACK,SAAS,CAAC8mB,UAAU,CAAC;MACzC;IACF;IAEA,OAAO,IAAI,CAACltB,MAAM,CAAC;IAEnB,OAAOjlQ,MAAM;EACf;AACF;AAEA,MAAMg7Q,UAAU,SAAS\u002FI,SAAS,CAAC;EACjCl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC61B,cAAc,EAAE,YAAY,EAAsB,IAAI,CAAC;IAC7D,IAAI,CAACrqQ,EAAE,GAAGw0O,UAAU,CAACx0O,EAAE,IAAI,EAAE;IAC7B,IAAI,CAAC92B,IAAI,GAAGsrQ,UAAU,CAACtrQ,IAAI,IAAI,EAAE;IACjC,IAAI,CAAC23S,QAAQ,GAAGtmB,eAAe,CAAC\u002FlB,UAAU,CAACqsC,QAAQ,EAAE,CACnD,SAAS,EACT,QAAQ,EACR,WAAW,CACZ,CAAC;IACF,IAAI,CAAClY,QAAQ,GAAG5N,WAAW,CAACvmB,UAAU,CAACm0B,QAAQ,CAAC;IAChD,IAAI,CAACnF,GAAG,GAAGhvB,UAAU,CAACgvB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGjvB,UAAU,CAACivB,OAAO,IAAI,EAAE;IACvC,IAAI,CAAC6e,OAAO,GAAG,IAAI;IACnB,IAAI,CAAC3R,KAAK,GAAG,IAAI;IACjB,IAAI,CAACv9B,IAAI,GAAG,IAAI;IAChB,IAAI,CAACq7B,MAAM,GAAG,IAAI;IAClB,IAAI,CAACkS,KAAK,GAAG,IAAI;IACjB,IAAI,CAAC5S,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACwU,UAAU,GAAG,IAAI9f,cAAc,CAAC,CAAC;IACtC,IAAI,CAAC+f,WAAW,GAAG,IAAI\u002Ff,cAAc,CAAC,CAAC;IACvC,IAAI,CAACoM,OAAO,GAAG,IAAIpM,cAAc,CAAC,CAAC;IACnC,IAAI,CAACqM,UAAU,GAAG,IAAIrM,cAAc,CAAC,CAAC;EAGxC;EAEA,EAAEvM,qBAAqB,IAAI;IAGzB,OAAOiV,oBAAoB,CAAC,IAAI,CAAC;EACnC;EAEA,CAAC\u002FU,iBAAiB,IAAI;IACpB,IAAIj+Q,MAAM,GAAG,IAAI,CAACk+Q,UAAU,CAAC,CAAC,CAAC;IAC\u002FB,OAAO,EAAEl+Q,MAAM,YAAY4rS,OAAO,CAAC,EAAE;MACnC5rS,MAAM,GAAGA,MAAM,CAACk+Q,UAAU,CAAC,CAAC,CAAC;IAC\u002FB;IACA,OAAOl+Q,MAAM;EACf;EAEA,CAAC0+Q,WAAW,IAAI;IACd,OAAO,IAAI;EACb;AACF;AAEA,MAAM2tB,SAAS,SAAS5f,aAAa,CAAC;EACpCz7R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC61B,cAAc,EAAE,WAAW,CAAC;IAClC,IAAI,CAACoa,SAAS,GAAGjwC,UAAU,CAACiwC,SAAS,IAAI,GAAG;IAC5C,IAAI,CAACzkR,EAAE,GAAGw0O,UAAU,CAACx0O,EAAE,IAAI,EAAE;IAC7B,IAAI,CAAC92B,IAAI,GAAGsrQ,UAAU,CAACtrQ,IAAI,IAAI,EAAE;IACjC,IAAI,CAACs6R,GAAG,GAAGhvB,UAAU,CAACgvB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGjvB,UAAU,CAACivB,OAAO,IAAI,EAAE;EACzC;EAEA,CAACnO,SAAS,IAAI;IACZ,IAAI,CAACJ,QAAQ,CAAC,GAAG,IAAI7hR,GAAG,CACtB,IAAI,CAAC6hR,QAAQ,CAAC,CAACx3Q,KAAK,CAAC,IAAI,CAAC+mS,SAAS,CAAC,CAACl5S,GAAG,CAACm5S,EAAE,IAAI;MAC7CA,EAAE,GAAGA,EAAE,CAAChnS,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;MACrBgnS,EAAE,CAAC,CAAC,CAAC,GAAGA,EAAE,CAAC,CAAC,CAAC,CAACvsC,IAAI,CAAC,CAAC;MACpB,OAAOusC,EAAE;IACX,CAAC,CACH,CAAC;EACH;AACF;AAEA,MAAMC,UAAU,SAAStiB,SAAS,CAAC;EACjCl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC61B,cAAc,EAAE,YAAY,EAAsB,IAAI,CAAC;IAC7D,IAAI,CAACrqQ,EAAE,GAAGw0O,UAAU,CAACx0O,EAAE,IAAI,EAAE;IAC7B,IAAI,CAAC9oC,IAAI,GAAGqjS,eAAe,CAAC\u002FlB,UAAU,CAACt9Q,IAAI,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACtE,IAAI,CAACssS,GAAG,GAAGhvB,UAAU,CAACgvB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGjvB,UAAU,CAACivB,OAAO,IAAI,EAAE;IACvC,IAAI,CAACmf,SAAS,GAAG,IAAIngB,cAAc,CAAC,CAAC;EACvC;AACF;AAEA,MAAMmiB,MAAM,SAASviB,SAAS,CAAC;EAC7Bl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC61B,cAAc,EAAE,QAAQ,EAAsB,IAAI,CAAC;IACzD,IAAI,CAACwa,QAAQ,GAAG3qB,UAAU,CAAC;MACzBv+Q,IAAI,EAAE64P,UAAU,CAACqwC,QAAQ;MACzB1qB,YAAY,EAAE,CAAC;MACfC,QAAQ,EAAEzpR,CAAC,IAAIA,CAAC,KAAK;IACvB,CAAC,CAAC;IACF,IAAI,CAAC0wD,MAAM,GAAGk5N,eAAe,CAAC\u002FlB,UAAU,CAACnzM,MAAM,EAAE,CAC\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\u002FhP,KAAK,GAAG,CAAC;YACnC\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\u002Fa,eAAe,CAAC\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\u002FjB,SAAS,CAAC;EAC\u002FBl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC61B,cAAc,EAAE,UAAU,EAAsB,IAAI,CAAC;IAC3D,IAAI,CAACgc,UAAU,GAAG9rB,eAAe,CAAC\u002FlB,UAAU,CAAC6xC,UAAU,EAAE,CACvD,SAAS,EACT,UAAU,EACV,OAAO,CACR,CAAC;IACF,IAAI,CAACrmR,EAAE,GAAGw0O,UAAU,CAACx0O,EAAE,IAAI,EAAE;IAC7B,IAAI,CAACsrQ,QAAQ,GAAG\u002FQ,eAAe,CAAC\u002FlB,UAAU,CAAC82B,QAAQ,EAAE,CACnD,UAAU,EACV,OAAO,EACP,SAAS,CACV,CAAC;IACF,IAAI,CAACgb,UAAU,GAAG\u002FrB,eAAe,CAAC\u002FlB,UAAU,CAAC8xC,UAAU,EAAE,CACvD,OAAO,EACP,UAAU,EACV,SAAS,CACV,CAAC;IACF,IAAI,CAAC9iB,GAAG,GAAGhvB,UAAU,CAACgvB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGjvB,UAAU,CAACivB,OAAO,IAAI,EAAE;IACvC,IAAI,CAACgL,MAAM,GAAG,IAAI;IAClB,IAAI,CAACxlS,OAAO,GAAG,IAAI;IACnB,IAAI,CAACinS,OAAO,GAAG,IAAI;IACnB,IAAI,CAAC6B,MAAM,GAAG,IAAI;EACpB;AACF;AAEA,MAAM7G,KAAK,SAAS7I,SAAS,CAAC;EAC5Bl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC61B,cAAc,EAAE,OAAO,EAAsB,IAAI,CAAC;IACxD,IAAI,CAACrqQ,EAAE,GAAGw0O,UAAU,CAACx0O,EAAE,IAAI,EAAE;IAC7B,IAAI,CAAC2\u002FL,QAAQ,GAAGu6D,UAAU,CAAC;MACzBv+Q,IAAI,EAAE64P,UAAU,CAAC70C,QAAQ;MACzBw6D,YAAY,EAAE,CAAC;MACfC,QAAQ,EAAEzpR,CAAC,IAAIA,CAAC,KAAK;IACvB,CAAC,CAAC;IACF,IAAI,CAACg4R,QAAQ,GAAG5N,WAAW,CAACvmB,UAAU,CAACm0B,QAAQ,CAAC;IAChD,IAAI,CAACnF,GAAG,GAAGhvB,UAAU,CAACgvB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGjvB,UAAU,CAACivB,OAAO,IAAI,EAAE;IAGvC,IAAI,CAAC14L,GAAG,GAAG,IAAI;IACf,IAAI,CAAC+qM,OAAO,GAAG,IAAI;IACnB,IAAI,CAACpjS,IAAI,GAAG,IAAI;IAChB,IAAI,CAACqjS,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACC,OAAO,GAAG,IAAI;IACnB,IAAI,CAAC5O,MAAM,GAAG,IAAI;IAClB,IAAI,CAAC6O,KAAK,GAAG,IAAI;IACjB,IAAI,CAACrjD,KAAK,GAAG,IAAI;IACjB,IAAI,CAACsjD,OAAO,GAAG,IAAI;IACnB,IAAI,CAACzkQ,IAAI,GAAG,IAAI;IAChB,IAAI,CAAC3vC,SAAS,GAAG,IAAI;IACrB,IAAI,CAAC+iQ,IAAI,GAAG,IAAI;IAChB,IAAI,CAAC+d,IAAI,GAAG,IAAI;EAClB;EAEA,CAACyV,SAAS,EAAE7vR,KAAK,EAAE;IACjB,MAAM2P,MAAM,GAAG,IAAI,CAACk+Q,UAAU,CAAC,CAAC,CAAC;IACjC,IAAIl+Q,MAAM,YAAY+gS,KAAK,EAAE;MAC3B,IAAI\u002FgS,MAAM,CAACi8R,EAAE,EAAE2F,SAAS,EAAE;QACxB,IAAI,CAAC,IAAI,CAACnnD,KAAK,EAAE;UACf,IAAI,CAACA,KAAK,GAAG,IAAIsqD,KAAK,CAAC,CAAC,CAAC,CAAC;UAC1B,IAAI,CAACvoB,YAAY,CAAC,CAAC,IAAI,CAAC\u002FhC,KAAK,CAAC;QAChC;QACA,IAAI,CAACA,KAAK,CAACsiC,QAAQ,CAAC,GAAG1sR,KAAK,CAAC0sR,QAAQ,CAAC;QACtC;MACF;IACF;IAEA,MAAMqxB,SAAS,GAAG\u002F9S,KAAK,CAAC+uR,SAAS,CAAC;IAClC,IAAI,IAAI,CAACgvB,SAAS,CAAC,KAAK,IAAI,EAAE;MAC5B,IAAI,CAACA,SAAS,CAAC,CAACrxB,QAAQ,CAAC,GAAG1sR,KAAK,CAAC0sR,QAAQ,CAAC;MAC3C;IACF;IAGA,KAAK,MAAMhsR,IAAI,IAAIR,MAAM,CAACq6R,mBAAmB,CAAC,IAAI,CAAC,EAAE;MACnD,MAAMz6R,GAAG,GAAG,IAAI,CAACY,IAAI,CAAC;MACtB,IAAIZ,GAAG,YAAY+5R,SAAS,EAAE;QAC5B,IAAI,CAACn5R,IAAI,CAAC,GAAG,IAAI;QACjB,IAAI,CAAC6uR,YAAY,CAAC,CAACzvR,GAAG,CAAC;MACzB;IACF;IAEA,IAAI,CAACE,KAAK,CAAC+uR,SAAS,CAAC,CAAC,GAAG\u002FuR,KAAK;IAC9B,IAAI,CAACmsR,YAAY,CAAC,CAACnsR,KAAK,CAAC;EAC3B;EAEA,CAAC+vR,KAAK,IAAI;IACR,IAAI,IAAI,CAAC6O,MAAM,EAAE;MACf,IAAI,OAAO,IAAI,CAACA,MAAM,CAAClS,QAAQ,CAAC,KAAK,QAAQ,EAAE;QAC7C,OAAO,IAAI,CAACkS,MAAM,CAAClS,QAAQ,CAAC,CAAC\u002Fc,IAAI,CAAC,CAAC;MACrC;MACA,OAAO,IAAI,CAACivB,MAAM,CAAClS,QAAQ,CAAC,CAACqD,KAAK,CAAC,CAAC,CAAC,CAACpgB,IAAI,CAAC,CAAC;IAC9C;IACA,KAAK,MAAMjvQ,IAAI,IAAIR,MAAM,CAACq6R,mBAAmB,CAAC,IAAI,CAAC,EAAE;MACnD,IAAI75R,IAAI,KAAK,OAAO,EAAE;QACpB;MACF;MACA,MAAMZ,GAAG,GAAG,IAAI,CAACY,IAAI,CAAC;MACtB,IAAIZ,GAAG,YAAY+5R,SAAS,EAAE;QAC5B,OAAO,CAAC\u002F5R,GAAG,CAAC4sR,QAAQ,CAAC,IAAI,EAAE,EAAEloR,QAAQ,CAAC,CAAC,CAACmrQ,IAAI,CAAC,CAAC;MAChD;IACF;IACA,OAAO,IAAI;EACb;EAEA,CAACsgB,OAAO,EAAEwK,cAAc,EAAE;IACxB,KAAK,MAAM\u002F5R,IAAI,IAAIR,MAAM,CAACq6R,mBAAmB,CAAC,IAAI,CAAC,EAAE;MACnD,MAAMz6R,GAAG,GAAG,IAAI,CAACY,IAAI,CAAC;MACtB,IAAI,EAAEZ,GAAG,YAAY+5R,SAAS,CAAC,EAAE;QAC\u002FB;MACF;MAEA,OAAO\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\u002FT,WAAW,CAAC+T,KAAK,CAAC;EAC\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\u002FJ,WAAW,CAAC+J,KAAK,CAAC;EAC\u002FB;EAEA,OAAO9zD,KAAKA,CAAC8zD,KAAK,EAAE;IAClB,OAAO,IAAIxJ,KAAK,CAACwJ,KAAK,CAAC;EACzB;EAEA,OAAO3M,SAASA,CAAC2M,KAAK,EAAE;IACtB,OAAO,IAAIpJ,SAAS,CAACoJ,KAAK,CAAC;EAC7B;EAEA,OAAOxQ,OAAOA,CAACwQ,KAAK,EAAE;IACpB,OAAO,IAAInJ,OAAO,CAACmJ,KAAK,CAAC;EAC3B;EAEA,OAAO1T,OAAOA,CAAC0T,KAAK,EAAE;IACpB,OAAO,IAAIlJ,OAAO,CAACkJ,KAAK,CAAC;EAC3B;EAEA,OAAO5tS,KAAKA,CAAC4tS,KAAK,EAAE;IAClB,OAAO,IAAIjJ,KAAK,CAACiJ,KAAK,CAAC;EACzB;EAEA,OAAOjQ,IAAIA,CAACiQ,KAAK,EAAE;IACjB,OAAO,IAAIhJ,IAAI,CAACgJ,KAAK,CAAC;EACxB;EAEA,OAAOzT,QAAQA,CAACyT,KAAK,EAAE;IACrB,OAAO,IAAI9I,QAAQ,CAAC8I,KAAK,CAAC;EAC5B;EAEA,OAAOj1Q,IAAIA,CAACi1Q,KAAK,EAAE;IACjB,OAAO,IAAIpI,IAAI,CAACoI,KAAK,CAAC;EACxB;EAEA,OAAOpM,MAAMA,CAACoM,KAAK,EAAE;IACnB,OAAO,IAAIlI,MAAM,CAACkI,KAAK,CAAC;EAC1B;EAEA,OAAOtL,YAAYA,CAACsL,KAAK,EAAE;IACzB,OAAO,IAAI\u002FH,YAAY,CAAC+H,KAAK,CAAC;EAChC;EAEA,OAAOtP,QAAQA,CAACsP,KAAK,EAAE;IACrB,OAAO,IAAI9H,QAAQ,CAAC8H,KAAK,CAAC;EAC5B;EAEA,OAAOtpB,MAAMA,CAACspB,KAAK,EAAE;IACnB,OAAO,IAAI7H,MAAM,CAAC6H,KAAK,CAAC;EAC1B;EAEA,OAAOrL,GAAGA,CAACqL,KAAK,EAAE;IAChB,OAAO,IAAI5H,GAAG,CAAC4H,KAAK,CAAC;EACvB;EAEA,OAAOhG,MAAMA,CAACgG,KAAK,EAAE;IACnB,OAAO,IAAI1H,MAAM,CAAC0H,KAAK,CAAC;EAC1B;EAEA,OAAOz9S,OAAOA,CAACy9S,KAAK,EAAE;IACpB,OAAO,IAAIlH,OAAO,CAACkH,KAAK,CAAC;EAC3B;EAEA,OAAOxM,WAAWA,CAACwM,KAAK,EAAE;IACxB,OAAO,IAAIjH,WAAW,CAACiH,KAAK,CAAC;EAC\u002FB;EAEA,OAAO\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\u002FS,OAAO,KAAKt\u002FS,KAAK,CAAC+uR,YAAY,CAAC,CAAC,CAAC,EAAE;UACrC,OAAO\u002FuR,KAAK;QACd;MACF;MACA,IACEq8R,QAAQ,CAAC9M,YAAY,CAAC,KAAKwB,YAAY,CAAChV,QAAQ,CAAC9jP,EAAE,IACnDokQ,QAAQ,CAAC7M,SAAS,CAAC,KAAK,MAAM,EAC9B;QACA;MACF;MACA6M,QAAQ,GAAGA,QAAQ,CAAC\u002FN,UAAU,CAAC,CAAC,CAAC;IACnC;IAEA,IAAI,CAACixB,MAAM,EAAE;MACX,OAAO,IAAI;IACb;IAIAnkB,SAAS,GAAG,IAAI,CAACxnR,IAAI,CAACq6Q,wBAAwB,CAAC,CAC7C9sR,IAAI,EACmB,IAAI,EACN,KACvB,CAAC;IAEDnB,KAAK,GAAGo7R,SAAS,CAACzpQ,IAAI,CAAC,CAAC,CAAClxB,KAAK;IAC9B,IAAIT,KAAK,EAAE;MACT,OAAOA,KAAK;IACd;IAGAo7R,SAAS,GAAG,IAAI,CAACxnR,IAAI,CAAC65Q,eAAe,CAAC,CAACtsR,IAAI,EAAuB,IAAI,CAAC;IACvEnB,KAAK,GAAGo7R,SAAS,CAACzpQ,IAAI,CAAC,CAAC,CAAClxB,KAAK;IAC9B,IAAIT,KAAK,GAAG+uR,YAAY,CAAC,CAAC,CAAC,EAAE;MAC3B,OAAO\u002FuR,KAAK;IACd;IAEA,OAAO,IAAI;EACb;EAEAw\u002FS,cAAcA,CAACJ,QAAQ,EAAE\u002FiB,QAAQ,EAAE;IAQjC,IAAI,CAAC+iB,QAAQ,CAACzkB,cAAc,CAAC,aAAa,CAAC,EAAE;MAC3C;IACF;IAEA,KAAK,MAAM;MAAE3qR,GAAG;MAAEw7Q,MAAM;MAAE6c;IAAW,CAAC,IAAI+W,QAAQ,CAACzQ,WAAW,CAAChlQ,QAAQ,EAAE;MACvE,IAAI0+P,UAAU,EAAE;QAGd;MACF;MACA,IAAI,CAACr4R,GAAG,EAAE;QACR;MACF;MAEA,MAAMwgP,KAAK,GAAGge,UAAU,CACtB,IAAI,CAACzE,IAAI,EACTsyB,QAAQ,EACRrsR,GAAG,EACH,KAAK,EACL,KACF,CAAC;MACD,IAAI,CAACwgP,KAAK,EAAE;QACVtxP,IAAI,CAAE,4BAA2B8Q,GAAI,GAAE,CAAC;QACxC;MACF;MACA,MAAM,CAAC85B,IAAI,CAAC,GAAG0mN,KAAK;MAEpB,IAAI,CAAC1mN,IAAI,CAACklP,aAAa,CAAC,CAAC,IAAI,CAACp7Q,IAAI,CAAC,EAAE;QACnC1U,IAAI,CAAE,0CAAyC,CAAC;QAChD;MACF;MAEA,MAAMugT,WAAW,GAAGjxC,UAAU,CAC5B,IAAI,CAACzE,IAAI,EACTq1C,QAAQ,EACR5zB,MAAM,EACN,KAAK,EACL,KACF,CAAC;MACD,IAAI,CAACi0B,WAAW,EAAE;QAChBvgT,IAAI,CAAE,yBAAwBssR,MAAO,GAAE,CAAC;QACxC;MACF;MACA,MAAM,CAACk0B,UAAU,CAAC,GAAGD,WAAW;MAEhC,IAAI,CAACC,UAAU,CAAC1wB,aAAa,CAAC,CAACowB,QAAQ,CAAC,EAAE;QACxClgT,IAAI,CAAE,0DAAyD,CAAC;QAChE;MACF;MAEA,MAAMygT,YAAY,GAAGD,UAAU,CAACpxB,UAAU,CAAC,CAAC,CAAC;MAC7C,IACEoxB,UAAU,YAAYpE,WAAW,IACjCqE,YAAY,YAAYrE,WAAW,EACnC;QACAp8S,IAAI,CACD,yEACH,CAAC;QACD;MACF;MAEA,IACEwgT,UAAU,YAAYtX,SAAS,IAC\u002FBuX,YAAY,YAAYvX,SAAS,EACjC;QACAlpS,IAAI,CACD,uEACH,CAAC;QACD;MACF;MAEA,MAAM8kO,OAAO,GAAGl6L,IAAI,CAAC0mP,KAAK,CAAC,CAAC,CAAC;MAC7B,MAAMrvR,IAAI,GAAGu+S,UAAU,CAAClwB,SAAS,CAAC;MAElC,IAAIkwB,UAAU,YAAYtjB,YAAY,EAAE;QACtC,MAAMuiB,KAAK,GAAGh+S,MAAM,CAAC8C,MAAM,CAAC,IAAI,CAAC;QACjCk7S,KAAK,CAACx9S,IAAI,CAAC,GAAG6iO,OAAO;QACrB,MAAMzjO,GAAG,GAAGq\u002FS,OAAO,CAACC,SAAS,CAC3Bl\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\u002FiB,QAAQ,EAAE;IAI\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\u002FlB,UAAU,CAACnzM,MAAM,EAAE,CAC\u002FC,MAAM,EACN,QAAQ,EACR,KAAK,EACL,aAAa,CACd,CAAC;EACJ;AACF;AAEA,MAAMopP,gBAAgB,SAAS7lB,aAAa,CAAC;EAC3Cz7R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC20C,YAAY,EAAE,kBAAkB,CAAC;EACzC;EAEA,CAAC7zB,SAAS,IAAI;IACZ,IAAI,CAACJ,QAAQ,CAAC,GAAG,IAAI7hR,GAAG,CACtB,IAAI,CAAC6hR,QAAQ,CAAC,CACX\u002Fc,IAAI,CAAC,CAAC,CACNz6P,KAAK,CAAC,KAAK,CAAC,CACZk1C,MAAM,CAACjiD,CAAC,IAAIA,CAAC,CAACpE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAC5BhB,GAAG,CAACoF,CAAC,IAAIA,CAAC,CAAC+M,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAC7B,CAAC;EACH;AACF;AAEA,MAAMgtS,KAAK,SAASroB,SAAS,CAAC;EAC5Bl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC20C,YAAY,EAAE,OAAO,EAAsB,IAAI,CAAC;IACtD,IAAI,CAACwB,aAAa,GAAG,IAAI;EAC3B;AACF;AAEA,MAAMC,MAAM,SAAS3lB,QAAQ,CAAC;EAC5B97R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC20C,YAAY,EAAE,QAAQ,CAAC;EAC\u002FB;AACF;AAEA,MAAM0B,MAAM,SAASxoB,SAAS,CAAC;EAC7Bl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC20C,YAAY,EAAE,QAAQ,EAAsB,IAAI,CAAC;IACvD,IAAI,CAACxtS,IAAI,GAAG,IAAI;IAChB,IAAI,CAAC46R,MAAM,GAAG,IAAI;IAClB,IAAI,CAACrd,SAAS,GAAG,IAAI;IACrB,IAAI,CAAC4xB,SAAS,GAAG,IAAI;IACrB,IAAI,CAACC,cAAc,GAAG,IAAI;IAC1B,IAAI,CAACzoR,QAAQ,GAAG,IAAI;IACpB,IAAI,CAAC0oR,mBAAmB,GAAG,IAAI;IAC\u002FB,IAAI,CAACC,cAAc,GAAG,IAAI;IAC1B,IAAI,CAACjkT,GAAG,GAAG,IAAIy7R,cAAc,CAAC,CAAC;EACjC;AACF;AAEA,MAAMyoB,QAAQ,SAAS7oB,SAAS,CAAC;EAC\u002FBl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC20C,YAAY,EAAE,UAAU,CAAC;IAC\u002FB,IAAI,CAAChF,KAAK,GAAG5pB,eAAe,CAAC\u002FlB,UAAU,CAAC2vC,KAAK,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;EAC3E;AACF;AAEA,MAAMgH,wBAAwB,SAASlmB,QAAQ,CAAC;EAC9C97R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC20C,YAAY,EAAE,0BAA0B,CAAC;EACjD;AACF;AAEA,MAAMiC,oBAAoB,SAASlmB,QAAQ,CAAC;EAC1C\u002F7R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC20C,YAAY,EAAE,sBAAsB,CAAC;EAC7C;AACF;AAEA,MAAMkC,WAAW,SAAShpB,SAAS,CAAC;EAClCl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC20C,YAAY,EAAE,aAAa,EAAsB,IAAI,CAAC;IAC5D,IAAI,CAACmC,wBAAwB,GAAG,IAAI;IACpC,IAAI,CAACC,oBAAoB,GAAG,IAAI;IAChC,IAAI,CAAC9kT,KAAK,GAAG,IAAI;IACjB,IAAI,CAACvP,IAAI,GAAG,IAAI;EAClB;AACF;AAEA,MAAMs0T,MAAM,SAASnpB,SAAS,CAAC;EAC7Bl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC20C,YAAY,EAAE,QAAQ,EAAsB,IAAI,CAAC;IACvD,IAAI,CAACsC,OAAO,GAAG,IAAI;IACnB,IAAI,CAACC,OAAO,GAAG,IAAI;IACnB,IAAI,CAACC,KAAK,GAAG,IAAI;IACjB,IAAI,CAACC,KAAK,GAAG,IAAInpB,cAAc,CAAC,CAAC;EACnC;AACF;AAEA,MAAMopB,WAAW,SAAShnB,YAAY,CAAC;EACrC17R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC20C,YAAY,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;EAChD;AACF;AAEA,MAAM2C,WAAW,SAAS7mB,QAAQ,CAAC;EACjC97R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC20C,YAAY,EAAE,aAAa,CAAC;EACpC;AACF;AAEA,MAAM4C,MAAM,SAAShnB,aAAa,CAAC;EACjC57R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC20C,YAAY,EAAE,QAAQ,EAAE,CAAC,EAAEp8S,CAAC,IAAIA,CAAC,IAAI,CAAC,CAAC;EAC\u002FC;AACF;AAEA,MAAMi\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\u002FB,IAAI,CAAC+pB,GAAG,GAAG,IAAI\u002FpB,cAAc,CAAC,CAAC;EACjC;AACF;AAEA,MAAMk1B,GAAG,SAASt1B,SAAS,CAAC;EAC1Bl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC20C,YAAY,EAAE,KAAK,EAAsB,IAAI,CAAC;IACpD,IAAI,CAACyO,OAAO,GAAG,IAAI;EACrB;AACF;AAEA,MAAMC,GAAG,SAASx1B,SAAS,CAAC;EAC1Bl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC20C,YAAY,EAAE,KAAK,EAAsB,IAAI,CAAC;IACpD,IAAI,CAAC2O,KAAK,GAAG,IAAI;IACjB,IAAI,CAAC9kC,GAAG,GAAG,IAAI;EACjB;AACF;AAEA,MAAM+kC,GAAG,SAAS11B,SAAS,CAAC;EAC1Bl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC20C,YAAY,EAAE,KAAK,EAAsB,IAAI,CAAC;IACpD,IAAI,CAACjgT,IAAI,GAAGsrQ,UAAU,CAACtrQ,IAAI,GAAGsrQ,UAAU,CAACtrQ,IAAI,CAACivQ,IAAI,CAAC,CAAC,GAAG,EAAE;IACzD,IAAI,CAAC22C,WAAW,GAAG,IAAI;IACvB,IAAI,CAACC,SAAS,GAAG,IAAI;IACrB,IAAI,CAAC\u002FwB,QAAQ,GAAG,IAAI;IACpB,IAAI,CAAC1E,GAAG,GAAG,IAAI;EACjB;AACF;AAEA,MAAM0+B,eAAe,CAAC;EACpB,QAAQn\u002FB,eAAe,EAAE3vR,IAAI,EAAEsrQ,UAAU,EAAE;IACzC,IAAIwjD,eAAe,CAACt1B,cAAc,CAACx5R,IAAI,CAAC,EAAE;MACxC,OAAO8uT,eAAe,CAAC9uT,IAAI,CAAC,CAACsrQ,UAAU,CAAC;IAC1C;IACA,OAAOvqQ,SAAS;EAClB;EAEA,OAAOwhT,OAAOA,CAAC\u002FE,KAAK,EAAE;IACpB,OAAO,IAAI0C,OAAO,CAAC1C,KAAK,CAAC;EAC3B;EAEA,OAAO2C,QAAQA,CAAC3C,KAAK,EAAE;IACrB,OAAO,IAAIgD,QAAQ,CAAChD,KAAK,CAAC;EAC5B;EAEA,OAAOkD,cAAcA,CAAClD,KAAK,EAAE;IAC3B,OAAO,IAAIkD,cAAc,CAAClD,KAAK,CAAC;EAClC;EAEA,OAAOmD,eAAeA,CAACnD,KAAK,EAAE;IAC5B,OAAO,IAAImD,eAAe,CAACnD,KAAK,CAAC;EACnC;EAEA,OAAOsO,cAAcA,CAACtO,KAAK,EAAE;IAC3B,OAAO,IAAIoD,cAAc,CAACpD,KAAK,CAAC;EAClC;EAEA,OAAOqQ,oBAAoBA,CAACrQ,KAAK,EAAE;IACjC,OAAO,IAAIqD,oBAAoB,CAACrD,KAAK,CAAC;EACxC;EAEA,OAAOyF,UAAUA,CAACzF,KAAK,EAAE;IACvB,OAAO,IAAIsD,UAAU,CAACtD,KAAK,CAAC;EAC9B;EAEA,OAAO8K,mBAAmBA,CAAC9K,KAAK,EAAE;IAChC,OAAO,IAAIuD,mBAAmB,CAACvD,KAAK,CAAC;EACvC;EAEA,OAAOkF,KAAKA,CAAClF,KAAK,EAAE;IAClB,OAAO,IAAIwD,KAAK,CAACxD,KAAK,CAAC;EACzB;EAEA,OAAOwH,WAAWA,CAACxH,KAAK,EAAE;IACxB,OAAO,IAAIyD,WAAW,CAACzD,KAAK,CAAC;EAC\u002FB;EAEA,OAAOyL,GAAGA,CAACzL,KAAK,EAAE;IAChB,OAAO,IAAI0D,GAAG,CAAC1D,KAAK,CAAC;EACvB;EAEA,OAAO59D,IAAIA,CAAC49D,KAAK,EAAE;IACjB,OAAO,IAAIlY,WAAI,CAACkY,KAAK,CAAC;EACxB;EAEA,OAAOlyC,UAAUA,CAACkyC,KAAK,EAAE;IACvB,OAAO,IAAI2D,UAAU,CAAC3D,KAAK,CAAC;EAC9B;EAEA,OAAO4C,QAAQA,CAAC5C,KAAK,EAAE;IACrB,OAAO,IAAI4D,QAAQ,CAAC5D,KAAK,CAAC;EAC5B;EAEA,OAAOv5R,IAAIA,CAACu5R,KAAK,EAAE;IACjB,OAAO,IAAI6D,IAAI,CAAC7D,KAAK,CAAC;EACxB;EAEA,OAAOoI,WAAWA,CAACpI,KAAK,EAAE;IACxB,OAAO,IAAI8D,WAAW,CAAC9D,KAAK,CAAC;EAC\u002FB;EAEA,OAAOyM,gBAAgBA,CAACzM,KAAK,EAAE;IAC7B,OAAO,IAAI+D,gBAAgB,CAAC\u002FD,KAAK,CAAC;EACpC;EAEA,OAAOtmR,KAAKA,CAACsmR,KAAK,EAAE;IAClB,OAAO,IAAIgE,KAAK,CAAChE,KAAK,CAAC;EACzB;EAEA,OAAO8L,MAAMA,CAAC9L,KAAK,EAAE;IACnB,OAAO,IAAIkE,MAAM,CAAClE,KAAK,CAAC;EAC1B;EAEA,OAAO6C,MAAMA,CAAC7C,KAAK,EAAE;IACnB,OAAO,IAAImE,MAAM,CAACnE,KAAK,CAAC;EAC1B;EAEA,OAAOuR,QAAQA,CAACvR,KAAK,EAAE;IACrB,OAAO,IAAIwE,QAAQ,CAACxE,KAAK,CAAC;EAC5B;EAEA,OAAO4E,wBAAwBA,CAAC5E,KAAK,EAAE;IACrC,OAAO,IAAIyE,wBAAwB,CAACzE,KAAK,CAAC;EAC5C;EAEA,OAAO6E,oBAAoBA,CAAC7E,KAAK,EAAE;IACjC,OAAO,IAAI0E,oBAAoB,CAAC1E,KAAK,CAAC;EACxC;EAEA,OAAOz7D,WAAWA,CAACy7D,KAAK,EAAE;IACxB,OAAO,IAAI2E,WAAW,CAAC3E,KAAK,CAAC;EAC\u002FB;EAEA,OAAO74B,MAAMA,CAAC64B,KAAK,EAAE;IACnB,OAAO,IAAI8E,MAAM,CAAC9E,KAAK,CAAC;EAC1B;EAEA,OAAO0L,WAAWA,CAAC1L,KAAK,EAAE;IACxB,OAAO,IAAImF,WAAW,CAACnF,KAAK,CAAC;EAC\u002FB;EAEA,OAAO+L,WAAWA,CAAC\u002FL,KAAK,EAAE;IACxB,OAAO,IAAIoF,WAAW,CAACpF,KAAK,CAAC;EAC\u002FB;EAEA,OAAO0M,MAAMA,CAAC1M,KAAK,EAAE;IACnB,OAAO,IAAIqF,MAAM,CAACrF,KAAK,CAAC;EAC1B;EAEA,OAAOn3B,OAAOA,CAACm3B,KAAK,EAAE;IACpB,OAAO,IAAIsF,OAAO,CAACtF,KAAK,CAAC;EAC3B;EAEA,OAAOgO,WAAWA,CAAChO,KAAK,EAAE;IACxB,OAAO,IAAIuF,WAAW,CAACvF,KAAK,CAAC;EAC\u002FB;EAEA,OAAO\u002FqS,IAAIA,CAAC+qS,KAAK,EAAE;IACjB,OAAO,IAAIwF,IAAI,CAACxF,KAAK,CAAC;EACxB;EAEA,OAAOoR,KAAKA,CAACpR,KAAK,EAAE;IAClB,OAAO,IAAIgG,KAAK,CAAChG,KAAK,CAAC;EACzB;EAEA,OAAOyH,eAAeA,CAACzH,KAAK,EAAE;IAC5B,OAAO,IAAIiG,eAAe,CAACjG,KAAK,CAAC;EACnC;EAEA,OAAO2J,WAAWA,CAAC3J,KAAK,EAAE;IACxB,OAAO,IAAImG,WAAW,CAACnG,KAAK,CAAC;EAC\u002FB;EAEA,OAAOgM,gBAAgBA,CAAChM,KAAK,EAAE;IAC7B,OAAO,IAAIoG,gBAAgB,CAACpG,KAAK,CAAC;EACpC;EAEA,OAAO+M,MAAMA,CAAC\u002FM,KAAK,EAAE;IACnB,OAAO,IAAIqG,MAAM,CAACrG,KAAK,CAAC;EAC1B;EAEA,OAAOsQ,YAAYA,CAACtQ,KAAK,EAAE;IACzB,OAAO,IAAIsG,YAAY,CAACtG,KAAK,CAAC;EAChC;EAEA,OAAOiD,aAAaA,CAACjD,KAAK,EAAE;IAC1B,OAAO,IAAIuG,aAAa,CAACvG,KAAK,CAAC;EACjC;EAEA,OAAOsH,KAAKA,CAACtH,KAAK,EAAE;IAClB,OAAO,IAAIwG,KAAK,CAACxG,KAAK,CAAC;EACzB;EAEA,OAAO5tC,OAAOA,CAAC4tC,KAAK,EAAE;IACpB,OAAO,IAAIzP,cAAO,CAACyP,KAAK,CAAC;EAC3B;EAEA,OAAO3T,UAAUA,CAAC2T,KAAK,EAAE;IACvB,OAAO,IAAIrP,iBAAU,CAACqP,KAAK,CAAC;EAC9B;EAEA,OAAOyG,eAAeA,CAACzG,KAAK,EAAE;IAC5B,OAAO,IAAI0G,eAAe,CAAC1G,KAAK,CAAC;EACnC;EAEA,OAAOuQ,OAAOA,CAACvQ,KAAK,EAAE;IACpB,OAAO,IAAI2G,OAAO,CAAC3G,KAAK,CAAC;EAC3B;EAEA,OAAO8I,MAAMA,CAAC9I,KAAK,EAAE;IACnB,OAAO,IAAI4G,MAAM,CAAC5G,KAAK,CAAC;EAC1B;EAEA,OAAO+I,WAAWA,CAAC\u002FI,KAAK,EAAE;IACxB,OAAO,IAAI+G,WAAW,CAAC\u002FG,KAAK,CAAC;EAC\u002FB;EAEA,OAAOiO,OAAOA,CAACjO,KAAK,EAAE;IACpB,OAAO,IAAImH,OAAO,CAACnH,KAAK,CAAC;EAC3B;EAEA,OAAO+F,SAASA,CAAC\u002FF,KAAK,EAAE;IACtB,OAAO,IAAIoH,SAAS,CAACpH,KAAK,CAAC;EAC7B;EAEA,OAAOqI,SAASA,CAACrI,KAAK,EAAE;IACtB,OAAO,IAAIqH,SAAS,CAACrH,KAAK,CAAC;EAC7B;EAEA,OAAO1oB,QAAQA,CAAC0oB,KAAK,EAAE;IACrB,OAAO,IAAIvpB,eAAQ,CAACupB,KAAK,CAAC;EAC5B;EAEA,OAAOiM,gBAAgBA,CAACjM,KAAK,EAAE;IAC7B,OAAO,IAAI2H,gBAAgB,CAAC3H,KAAK,CAAC;EACpC;EAEA,OAAOuP,WAAWA,CAACvP,KAAK,EAAE;IACxB,OAAO,IAAI4H,WAAW,CAAC5H,KAAK,CAAC;EAC\u002FB;EAEA,OAAOwP,OAAOA,CAACxP,KAAK,EAAE;IACpB,OAAO,IAAI6H,OAAO,CAAC7H,KAAK,CAAC;EAC3B;EAEA,OAAO2L,iBAAiBA,CAAC3L,KAAK,EAAE;IAC9B,OAAO,IAAI8H,iBAAiB,CAAC9H,KAAK,CAAC;EACrC;EAEA,OAAO0F,eAAeA,CAAC1F,KAAK,EAAE;IAC5B,OAAO,IAAI+H,eAAe,CAAC\u002FH,KAAK,CAAC;EACnC;EAEA,OAAO2M,gBAAgBA,CAAC3M,KAAK,EAAE;IAC7B,OAAO,IAAIgI,gBAAgB,CAAChI,KAAK,CAAC;EACpC;EAEA,OAAO+K,WAAWA,CAAC\u002FK,KAAK,EAAE;IACxB,OAAO,IAAIiI,WAAW,CAACjI,KAAK,CAAC;EAC\u002FB;EAEA,OAAOwK,GAAGA,CAACxK,KAAK,EAAE;IAChB,OAAO,IAAIkI,GAAG,CAAClI,KAAK,CAAC;EACvB;EAEA,OAAOgN,YAAYA,CAAChN,KAAK,EAAE;IACzB,OAAO,IAAImI,YAAY,CAACnI,KAAK,CAAC;EAChC;EAEA,OAAOzjP,MAAMA,CAACyjP,KAAK,EAAE;IACnB,OAAO,IAAIsI,MAAM,CAACtI,KAAK,CAAC;EAC1B;EAEA,OAAOjgT,KAAKA,CAACigT,KAAK,EAAE;IAClB,OAAO,IAAIuI,KAAK,CAACvI,KAAK,CAAC;EACzB;EAEA,OAAOgL,UAAUA,CAAChL,KAAK,EAAE;IACvB,OAAO,IAAIwI,UAAU,CAACxI,KAAK,CAAC;EAC9B;EAEA,OAAOnQ,MAAMA,CAACmQ,KAAK,EAAE;IACnB,OAAO,IAAIyI,MAAM,CAACzI,KAAK,CAAC;EAC1B;EAEA,OAAOxtB,SAASA,CAACwtB,KAAK,EAAE;IACtB,OAAO,IAAI0I,SAAS,CAAC1I,KAAK,CAAC;EAC7B;EAEA,OAAO1\u002FS,GAAGA,CAAC0\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\u002F\u002FR,KAAKA,CAAC+\u002FR,KAAK,EAAE;IAClB,OAAO,IAAI0N,KAAK,CAAC1N,KAAK,CAAC;EACzB;EAEA,OAAO97E,MAAMA,CAAC87E,KAAK,EAAE;IACnB,OAAO,IAAI2N,MAAM,CAAC3N,KAAK,CAAC;EAC1B;EAEA,OAAO\u002Fd,QAAQA,CAAC+d,KAAK,EAAE;IACrB,OAAO,IAAI4N,QAAQ,CAAC5N,KAAK,CAAC;EAC5B;EAEA,OAAO0P,MAAMA,CAAC1P,KAAK,EAAE;IACnB,OAAO,IAAI6N,MAAM,CAAC7N,KAAK,CAAC;EAC1B;EAEA,OAAOmL,YAAYA,CAACnL,KAAK,EAAE;IACzB,OAAO,IAAI8N,YAAY,CAAC9N,KAAK,CAAC;EAChC;EAEA,OAAOkO,UAAUA,CAAClO,KAAK,EAAE;IACvB,OAAO,IAAI+N,UAAU,CAAC\u002FN,KAAK,CAAC;EAC9B;EAEA,OAAO3U,MAAMA,CAAC2U,KAAK,EAAE;IACnB,OAAO,IAAIzmG,aAAM,CAACymG,KAAK,CAAC;EAC1B;EAEA,OAAOoL,WAAWA,CAACpL,KAAK,EAAE;IACxB,OAAO,IAAImO,WAAW,CAACnO,KAAK,CAAC;EAC\u002FB;EAEA,OAAOkJ,QAAQA,CAAClJ,KAAK,EAAE;IACrB,OAAO,IAAIoO,QAAQ,CAACpO,KAAK,CAAC;EAC5B;EAEA,OAAOqL,WAAWA,CAACrL,KAAK,EAAE;IACxB,OAAO,IAAIqO,WAAW,CAACrO,KAAK,CAAC;EAC\u002FB;EAEA,OAAO4K,MAAMA,CAAC5K,KAAK,EAAE;IACnB,OAAO,IAAIwO,MAAM,CAACxO,KAAK,CAAC;EAC1B;EAEA,OAAO4F,SAASA,CAAC5F,KAAK,EAAE;IACtB,OAAO,IAAIyO,SAAS,CAACzO,KAAK,CAAC;EAC7B;EAEA,OAAOgP,SAASA,CAAChP,KAAK,EAAE;IACtB,OAAO,IAAI0O,SAAS,CAAC1O,KAAK,CAAC;EAC7B;EAEA,OAAOsL,YAAYA,CAACtL,KAAK,EAAE;IACzB,OAAO,IAAI2O,YAAY,CAAC3O,KAAK,CAAC;EAChC;EAEA,OAAO+C,SAASA,CAAC\u002FC,KAAK,EAAE;IACtB,OAAO,IAAI4O,SAAS,CAAC5O,KAAK,CAAC;EAC7B;EAEA,OAAOuH,WAAWA,CAACvH,KAAK,EAAE;IACxB,OAAO,IAAI6O,WAAW,CAAC7O,KAAK,CAAC;EAC\u002FB;EAEA,OAAOqE,cAAcA,CAACrE,KAAK,EAAE;IAC3B,OAAO,IAAI8O,cAAc,CAAC9O,KAAK,CAAC;EAClC;EAEA,OAAOuL,MAAMA,CAACvL,KAAK,EAAE;IACnB,OAAO,IAAI+O,MAAM,CAAC\u002FO,KAAK,CAAC;EAC1B;EAEA,OAAOpkR,QAAQA,CAACokR,KAAK,EAAE;IACrB,OAAO,IAAI5G,eAAQ,CAAC4G,KAAK,CAAC;EAC5B;EAEA,OAAOiE,aAAaA,CAACjE,KAAK,EAAE;IAC1B,OAAO,IAAImP,aAAa,CAACnP,KAAK,CAAC;EACjC;EAEA,OAAO4I,SAASA,CAAC5I,KAAK,EAAE;IACtB,OAAO,IAAIiP,SAAS,CAACjP,KAAK,CAAC;EAC7B;EAEA,OAAO8G,EAAEA,CAAC9G,KAAK,EAAE;IACf,OAAO,IAAIkP,EAAE,CAAClP,KAAK,CAAC;EACtB;EAEA,OAAOiF,KAAKA,CAACjF,KAAK,EAAE;IAClB,OAAO,IAAIqP,KAAK,CAACrP,KAAK,CAAC;EACzB;EAEA,OAAOnlT,SAASA,CAACmlT,KAAK,EAAE;IACtB,OAAO,IAAIsP,SAAS,CAACtP,KAAK,CAAC;EAC7B;EAEA,OAAOxvT,IAAIA,CAACwvT,KAAK,EAAE;IACjB,OAAO,IAAIznP,IAAI,CAACynP,KAAK,CAAC;EACxB;EAEA,OAAO1zB,GAAGA,CAAC0zB,KAAK,EAAE;IAChB,OAAO,IAAI4P,GAAG,CAAC5P,KAAK,CAAC;EACvB;EAEA,OAAOtsB,QAAQA,CAACssB,KAAK,EAAE;IACrB,OAAO,IAAIN,eAAQ,CAACM,KAAK,CAAC;EAC5B;EAEA,OAAO8C,0BAA0BA,CAAC9C,KAAK,EAAE;IACvC,OAAO,IAAI6P,0BAA0B,CAAC7P,KAAK,CAAC;EAC9C;EAEA,OAAOsE,mBAAmBA,CAACtE,KAAK,EAAE;IAChC,OAAO,IAAI8P,mBAAmB,CAAC9P,KAAK,CAAC;EACvC;EAEA,OAAOrpQ,OAAOA,CAACqpQ,KAAK,EAAE;IACpB,OAAO,IAAI+P,OAAO,CAAC\u002FP,KAAK,CAAC;EAC3B;EAEA,OAAOuE,cAAcA,CAACvE,KAAK,EAAE;IAC3B,OAAO,IAAIgQ,cAAc,CAAChQ,KAAK,CAAC;EAClC;EAEA,OAAOz1B,iBAAiBA,CAACy1B,KAAK,EAAE;IAC9B,OAAO,IAAIoQ,iBAAiB,CAACpQ,KAAK,CAAC;EACrC;EAEA,OAAOkN,SAASA,CAAClN,KAAK,EAAE;IACtB,OAAO,IAAI4Q,SAAS,CAAC5Q,KAAK,CAAC;EAC7B;EAEA,OAAO2P,UAAUA,CAAC3P,KAAK,EAAE;IACvB,OAAO,IAAI6Q,UAAU,CAAC7Q,KAAK,CAAC;EAC9B;EAEA,OAAO6F,MAAMA,CAAC7F,KAAK,EAAE;IACnB,OAAO,IAAI8Q,MAAM,CAAC9Q,KAAK,CAAC;EAC1B;EAEA,OAAOptB,GAAGA,CAACotB,KAAK,EAAE;IAChB,OAAO,IAAIgR,GAAG,CAAChR,KAAK,CAAC;EACvB;EAEA,OAAOntB,GAAGA,CAACmtB,KAAK,EAAE;IAChB,OAAO,IAAIiR,GAAG,CAACjR,KAAK,CAAC;EACvB;EAEA,OAAO8F,GAAGA,CAAC9F,KAAK,EAAE;IAChB,OAAO,IAAImR,GAAG,CAACnR,KAAK,CAAC;EACvB;EAEA,OAAOmN,GAAGA,CAACnN,KAAK,EAAE;IAChB,OAAO,IAAIqR,GAAG,CAACrR,KAAK,CAAC;EACvB;AACF;;;ACn3DgE;AACU;AAE1E,MAAMwR,oBAAoB,GAAGp\u002FB,YAAY,CAACE,aAAa,CAACh5P,EAAE;AAE1D,MAAMm4R,aAAa,SAAS91B,SAAS,CAAC;EACpCl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC0jD,oBAAoB,EAAE,eAAe,EAAsB,IAAI,CAAC;IACtE,IAAI,CAACE,cAAc,GAAG,IAAI31B,cAAc,CAAC,CAAC;IAC1C,IAAI,CAAC41B,aAAa,GAAG,IAAI51B,cAAc,CAAC,CAAC;IACzC,IAAI,CAAC61B,aAAa,GAAG,IAAI71B,cAAc,CAAC,CAAC;EAC3C;AACF;AAEA,MAAM81B,oBAAoB,SAASl2B,SAAS,CAAC;EAC3Cl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC0jD,oBAAoB,EAAE,sBAAsB,CAAC;IACnD,IAAI,CAACl4R,EAAE,GAAGw0O,UAAU,CAACx0O,EAAE,IAAI,EAAE;IAC7B,IAAI,CAAC92B,IAAI,GAAGsrQ,UAAU,CAACtrQ,IAAI,IAAI,EAAE;IACjC,IAAI,CAACs6R,GAAG,GAAGhvB,UAAU,CAACgvB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGjvB,UAAU,CAACivB,OAAO,IAAI,EAAE;EACzC;AACF;AAEA,MAAM+0B,qBAAqB,SAASn2B,SAAS,CAAC;EAC5Cl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC0jD,oBAAoB,EAAE,uBAAuB,CAAC;IACpD,IAAI,CAACl4R,EAAE,GAAGw0O,UAAU,CAACx0O,EAAE,IAAI,EAAE;IAC7B,IAAI,CAAC92B,IAAI,GAAGsrQ,UAAU,CAACtrQ,IAAI,IAAI,EAAE;IACjC,IAAI,CAACs6R,GAAG,GAAGhvB,UAAU,CAACgvB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGjvB,UAAU,CAACivB,OAAO,IAAI,EAAE;EACzC;AACF;AAEA,MAAMg1B,SAAS,SAAS3zB,YAAY,CAAC;EACnC37R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC0jD,oBAAoB,EAAE,WAAW,CAAC;IACxC,IAAI,CAACl4R,EAAE,GAAGw0O,UAAU,CAACx0O,EAAE,IAAI,EAAE;IAC7B,IAAI,CAACjI,KAAK,GAAGy8O,UAAU,CAACz8O,KAAK,IAAI,EAAE;IACnC,IAAI,CAAC7uB,IAAI,GAAGsrQ,UAAU,CAACtrQ,IAAI,IAAI,EAAE;IACjC,IAAI,CAACo2C,MAAM,GAAGk1N,UAAU,CAACl1N,MAAM,IAAI,EAAE;IACrC,IAAI,CAACkkP,GAAG,GAAGhvB,UAAU,CAACgvB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGjvB,UAAU,CAACivB,OAAO,IAAI,EAAE;EACzC;AACF;AAEA,MAAMi1B,WAAW,SAAS5zB,YAAY,CAAC;EACrC37R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC0jD,oBAAoB,EAAE,aAAa,CAAC;IAC1C,IAAI,CAACl4R,EAAE,GAAGw0O,UAAU,CAACx0O,EAAE,IAAI,EAAE;IAC7B,IAAI,CAAC92B,IAAI,GAAGsrQ,UAAU,CAACtrQ,IAAI,IAAI,EAAE;IACjC,IAAI,CAACs6R,GAAG,GAAGhvB,UAAU,CAACgvB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGjvB,UAAU,CAACivB,OAAO,IAAI,EAAE;EACzC;AACF;AAEA,MAAMk1B,UAAU,SAAS7zB,YAAY,CAAC;EACpC37R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC0jD,oBAAoB,EAAE,YAAY,CAAC;IACzC,IAAI,CAACl4R,EAAE,GAAGw0O,UAAU,CAACx0O,EAAE,IAAI,EAAE;IAC7B,IAAI,CAAC92B,IAAI,GAAGsrQ,UAAU,CAACtrQ,IAAI,IAAI,EAAE;IACjC,IAAI,CAACs6R,GAAG,GAAGhvB,UAAU,CAACgvB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGjvB,UAAU,CAACivB,OAAO,IAAI,EAAE;EACzC;AACF;AAEA,MAAMm1B,WAAW,SAAS9zB,YAAY,CAAC;EACrC37R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC0jD,oBAAoB,EAAE,aAAa,CAAC;IAC1C,IAAI,CAACl4R,EAAE,GAAGw0O,UAAU,CAACx0O,EAAE,IAAI,EAAE;IAC7B,IAAI,CAAC92B,IAAI,GAAGsrQ,UAAU,CAACtrQ,IAAI,IAAI,EAAE;IACjC,IAAI,CAACs6R,GAAG,GAAGhvB,UAAU,CAACgvB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGjvB,UAAU,CAACivB,OAAO,IAAI,EAAE;EACzC;AACF;AAEA,MAAM6yB,kBAAG,SAASxxB,YAAY,CAAC;EAC7B37R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC0jD,oBAAoB,EAAE,KAAK,CAAC;IAClC,IAAI,CAACl4R,EAAE,GAAGw0O,UAAU,CAACx0O,EAAE,IAAI,EAAE;IAC7B,IAAI,CAAC92B,IAAI,GAAGsrQ,UAAU,CAACtrQ,IAAI,IAAI,EAAE;IACjC,IAAI,CAACs6R,GAAG,GAAGhvB,UAAU,CAACgvB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGjvB,UAAU,CAACivB,OAAO,IAAI,EAAE;EACzC;AACF;AAEA,MAAMo1B,WAAW,SAAS\u002FzB,YAAY,CAAC;EACrC37R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC0jD,oBAAoB,EAAE,aAAa,CAAC;IAC1C,IAAI,CAACl4R,EAAE,GAAGw0O,UAAU,CAACx0O,EAAE,IAAI,EAAE;IAC7B,IAAI,CAAC92B,IAAI,GAAGsrQ,UAAU,CAACtrQ,IAAI,IAAI,EAAE;IACjC,IAAI,CAACs6R,GAAG,GAAGhvB,UAAU,CAACgvB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGjvB,UAAU,CAACivB,OAAO,IAAI,EAAE;EACzC;AACF;AAEA,MAAMq1B,cAAc,SAASz2B,SAAS,CAAC;EACrCl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC0jD,oBAAoB,EAAE,gBAAgB,EAAsB,IAAI,CAAC;IACvE,IAAI,CAACa,eAAe,GAAGvkD,UAAU,CAACukD,eAAe,IAAI,EAAE;IACvD,IAAI,CAAC7vT,IAAI,GAAGsrQ,UAAU,CAACtrQ,IAAI,IAAI,EAAE;IACjC,IAAI,CAAC8vT,oBAAoB,GAAG,IAAI;IAChC,IAAI,CAACC,qBAAqB,GAAG,IAAI;IACjC,IAAI,CAACp1E,SAAS,GAAG,IAAI;IACrB,IAAI,CAACq1E,UAAU,GAAG,IAAI;IACtB,IAAI,CAACC,WAAW,GAAG,IAAI;IACvB,IAAI,CAACC,WAAW,GAAG,IAAI;EACzB;AACF;AAEA,MAAMC,aAAa,SAASh3B,SAAS,CAAC;EACpCl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC0jD,oBAAoB,EAAE,eAAe,EAAsB,IAAI,CAAC;IACtE,IAAI,CAACa,eAAe,GAAGvkD,UAAU,CAACukD,eAAe,IAAI,EAAE;IACvD,IAAI,CAAC7vT,IAAI,GAAGsrQ,UAAU,CAACtrQ,IAAI,IAAI,EAAE;IACjC,IAAI,CAAC8pR,GAAG,GAAG,IAAI;EACjB;AACF;AAEA,MAAMsmC,aAAa,SAASj3B,SAAS,CAAC;EACpCl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAC0jD,oBAAoB,EAAE,eAAe,EAAsB,IAAI,CAAC;IACtE,IAAI,CAACa,eAAe,GAAGvkD,UAAU,CAACukD,eAAe,IAAI,EAAE;IACvD,IAAI,CAAC7vT,IAAI,GAAGsrQ,UAAU,CAACtrQ,IAAI,IAAI,EAAE;IACjC,IAAI,CAACqwT,WAAW,GAAG,IAAI;IACvB,IAAI,CAACvmC,GAAG,GAAG,IAAI;EACjB;AACF;AAEA,MAAMwmC,sBAAsB,CAAC;EAC3B,QAAQ3gC,eAAe,EAAE3vR,IAAI,EAAEsrQ,UAAU,EAAE;IACzC,IAAIglD,sBAAsB,CAAC92B,cAAc,CAACx5R,IAAI,CAAC,EAAE;MAC\u002FC,OAAOswT,sBAAsB,CAACtwT,IAAI,CAAC,CAACsrQ,UAAU,CAAC;IACjD;IACA,OAAOvqQ,SAAS;EAClB;EAEA,OAAO+uR,aAAaA,CAAC0tB,KAAK,EAAE;IAC1B,OAAO,IAAIyR,aAAa,CAACzR,KAAK,CAAC;EACjC;EAEA,OAAOsS,oBAAoBA,CAACtS,KAAK,EAAE;IACjC,OAAO,IAAI6R,oBAAoB,CAAC7R,KAAK,CAAC;EACxC;EAEA,OAAOuS,qBAAqBA,CAACvS,KAAK,EAAE;IAClC,OAAO,IAAI8R,qBAAqB,CAAC9R,KAAK,CAAC;EACzC;EAEA,OAAO7iE,SAASA,CAAC6iE,KAAK,EAAE;IACtB,OAAO,IAAI+R,SAAS,CAAC\u002FR,KAAK,CAAC;EAC7B;EAEA,OAAO6S,WAAWA,CAAC7S,KAAK,EAAE;IACxB,OAAO,IAAIgS,WAAW,CAAChS,KAAK,CAAC;EAC\u002FB;EAEA,OAAOwS,UAAUA,CAACxS,KAAK,EAAE;IACvB,OAAO,IAAIiS,UAAU,CAACjS,KAAK,CAAC;EAC9B;EAEA,OAAOyS,WAAWA,CAACzS,KAAK,EAAE;IACxB,OAAO,IAAIkS,WAAW,CAAClS,KAAK,CAAC;EAC\u002FB;EAEA,OAAO1zB,GAAGA,CAAC0zB,KAAK,EAAE;IAChB,OAAO,IAAI4P,kBAAG,CAAC5P,KAAK,CAAC;EACvB;EAEA,OAAO0S,WAAWA,CAAC1S,KAAK,EAAE;IACxB,OAAO,IAAImS,WAAW,CAACnS,KAAK,CAAC;EAC\u002FB;EAEA,OAAO0R,cAAcA,CAAC1R,KAAK,EAAE;IAC3B,OAAO,IAAIoS,cAAc,CAACpS,KAAK,CAAC;EAClC;EAEA,OAAO2R,aAAaA,CAAC3R,KAAK,EAAE;IAC1B,OAAO,IAAI2S,aAAa,CAAC3S,KAAK,CAAC;EACjC;EAEA,OAAO4R,aAAaA,CAAC5R,KAAK,EAAE;IAC1B,OAAO,IAAI4S,aAAa,CAAC5S,KAAK,CAAC;EACjC;AACF;;;AClL2B;AACqC;AACT;AAEvD,MAAM+S,cAAc,GAAG3gC,YAAY,CAAChV,QAAQ,CAAC9jP,EAAE;AAE\u002FC,MAAMksR,aAAI,SAAS1pB,SAAS,CAAC;EAC3Br5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAACilD,cAAc,EAAE,MAAM,EAAEjlD,UAAU,CAAC;EAC3C;EAEA,CAACwiB,aAAa,IAAI;IAChB,OAAO,IAAI;EACb;AACF;AAEA,MAAM0iC,QAAQ,SAASr3B,SAAS,CAAC;EAC\u002FBl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAACilD,cAAc,EAAE,UAAU,EAAsB,IAAI,CAAC;IAC3D,IAAI,CAAC99S,IAAI,GAAG,IAAI;IAChB,IAAI,CAAC4nS,SAAS,GAAG,IAAI;EACvB;EAEA,CAAC9rB,QAAQ,EAAEphB,KAAK,EAAE;IAChB,MAAMntQ,IAAI,GAAGmtQ,KAAK,CAACkhB,SAAS,CAAC;IAC7B,IACGruR,IAAI,KAAK,MAAM,IAAImtQ,KAAK,CAACihB,YAAY,CAAC,KAAKmiC,cAAc,IACzDvwT,IAAI,KAAK,WAAW,IACnBmtQ,KAAK,CAACihB,YAAY,CAAC,KAAKwB,YAAY,CAAC1gE,SAAS,CAACp4L,EAAG,EACpD;MACA,IAAI,CAAC92B,IAAI,CAAC,GAAGmtQ,KAAK;IACpB;IACA,IAAI,CAACse,YAAY,CAAC,CAACte,KAAK,CAAC;EAC3B;AACF;AAEA,MAAMsjD,iBAAiB,CAAC;EACtB,QAAQ9gC,eAAe,EAAE3vR,IAAI,EAAEsrQ,UAAU,EAAE;IACzC,IAAImlD,iBAAiB,CAACj3B,cAAc,CAACx5R,IAAI,CAAC,EAAE;MAC1C,OAAOywT,iBAAiB,CAACzwT,IAAI,CAAC,CAACsrQ,UAAU,CAAC;IAC5C;IACA,OAAOvqQ,SAAS;EAClB;EAEA,OAAO65Q,QAAQA,CAACtP,UAAU,EAAE;IAC1B,OAAO,IAAIklD,QAAQ,CAACllD,UAAU,CAAC;EACjC;EAEA,OAAO74P,IAAIA,CAAC64P,UAAU,EAAE;IACtB,OAAO,IAAI03C,aAAI,CAAC13C,UAAU,CAAC;EAC7B;AACF;;;ACzDgE;AAMvC;AACgC;AAEzD,MAAMolD,gBAAgB,GAAG9gC,YAAY,CAACI,SAAS,CAACl5P,EAAE;AAElD,MAAM65R,eAAe,SAASx3B,SAAS,CAAC;EACtCl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAColD,gBAAgB,EAAE,iBAAiB,EAAsB,IAAI,CAAC;IACpE,IAAI,CAAC1wT,IAAI,GAAG,WAAW;IACvB,IAAI,CAAC4wT,QAAQ,GAAG,IAAIr3B,cAAc,CAAC,CAAC,CAAC;IACrC,IAAI,CAACs3B,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACC,aAAa,GAAG,IAAI;IACzB,IAAI,CAACC,UAAU,GAAG,IAAIx3B,cAAc,CAAC,CAAC,CAAC;EACzC;AACF;AAEA,MAAMy3B,cAAc,SAASp1B,YAAY,CAAC;EACxC37R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAColD,gBAAgB,EAAE,gBAAgB,CAAC;IACzC,IAAI,CAAC1wT,IAAI,GAAGqxR,eAAe,CAAC\u002FlB,UAAU,CAACtrQ,IAAI,EAAE,CAC3C,QAAQ,EACR,SAAS,EACT,SAAS,CACV,CAAC;EACJ;AACF;AAEA,MAAMixT,eAAe,SAAS93B,SAAS,CAAC;EACtCl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAColD,gBAAgB,EAAE,iBAAiB,EAAsB,IAAI,CAAC;IACpE,IAAI,CAACQ,cAAc,GAAG,IAAI33B,cAAc,CAAC,CAAC,CAAC;EAC7C;AACF;AAEA,MAAM43B,WAAW,SAASv1B,YAAY,CAAC;EACrC37R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAColD,gBAAgB,EAAE,aAAa,CAAC;IACtC,IAAI,CAAC1wT,IAAI,GAAGqxR,eAAe,CAAC\u002FlB,UAAU,CAACtrQ,IAAI,EAAE,CAC3C,MAAM,EACN,MAAM,EACN,KAAK,EACL,OAAO,CACR,CAAC;EACJ;AACF;AAEA,MAAMoxT,YAAY,SAASj4B,SAAS,CAAC;EACnCl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAColD,gBAAgB,EAAE,cAAc,EAAsB,IAAI,CAAC;IACjE,IAAI,CAACW,WAAW,GAAG,IAAI93B,cAAc,CAAC,CAAC,CAAC;EAC1C;AACF;AAEA,MAAM+3B,eAAe,SAAS51B,aAAa,CAAC;EAG1Cz7R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAColD,gBAAgB,EAAE,iBAAiB,CAAC;EAC5C;AACF;AAEA,MAAMa,GAAG,SAAS31B,YAAY,CAAC;EAC7B37R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAColD,gBAAgB,EAAE,KAAK,CAAC;EAChC;AACF;AAEA,MAAMc,QAAQ,SAASr4B,SAAS,CAAC;EAC\u002FBl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAColD,gBAAgB,EAAE,UAAU,EAAsB,IAAI,CAAC;IAC7D,IAAI,CAACe,IAAI,GAAGzgC,UAAU,CAAC;MACrBv+Q,IAAI,EAAE64P,UAAU,CAACmmD,IAAI;MACrBxgC,YAAY,EAAE,CAAC;MACfC,QAAQ,EAAEzpR,CAAC,IAAIA,CAAC,KAAK;IACvB,CAAC,CAAC;IACF,IAAI,CAACiqT,GAAG,GAAG,IAAIn4B,cAAc,CAAC,CAAC,CAAC;EAClC;AACF;AAEA,MAAMo4B,GAAG,SAAS\u002F1B,YAAY,CAAC;EAC7B37R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAColD,gBAAgB,EAAE,KAAK,CAAC;EAChC;AACF;AAEA,MAAMkB,QAAQ,SAASz4B,SAAS,CAAC;EAC\u002FBl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAColD,gBAAgB,EAAE,UAAU,EAAsB,IAAI,CAAC;IAC7D,IAAI,CAACmB,GAAG,GAAG,IAAIt4B,cAAc,CAAC,CAAC,CAAC;EAClC;AACF;AAEA,MAAM0sB,iBAAM,SAAS9sB,SAAS,CAAC;EAC7Bl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAColD,gBAAgB,EAAE,QAAQ,EAAsB,IAAI,CAAC;IAC3D,IAAI,CAACxmD,IAAI,GAAGoB,UAAU,CAACpB,IAAI,IAAI,EAAE;IACjC,IAAI,CAAClqQ,IAAI,GAAG,SAAS;IACrB,IAAI,CAAC8xT,eAAe,GAAG,IAAI;IAC3B,IAAI,CAACC,eAAe,GAAG,IAAI;IAC3B,IAAI,CAACC,YAAY,GAAG,IAAI;IACxB,IAAI,CAACC,eAAe,GAAG,IAAI;IAC3B,IAAI,CAACC,cAAc,GAAG,IAAI;IAC1B,IAAI,CAACC,aAAa,GAAG,IAAI;IACzB,IAAI,CAACC,YAAY,GAAG,IAAI;IACxB,IAAI,CAACC,SAAS,GAAG,IAAI;EACvB;AACF;AAEA,MAAMnM,oBAAS,SAAS\u002FsB,SAAS,CAAC;EAChCl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAColD,gBAAgB,EAAE,WAAW,EAAsB,IAAI,CAAC;IAC9D,IAAI,CAACrjB,MAAM,GAAG,IAAI9T,cAAc,CAAC,CAAC;EACpC;AACF;AAEA,MAAM+4B,QAAQ,SAAS12B,YAAY,CAAC;EAClC37R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAColD,gBAAgB,EAAE,UAAU,CAAC;EACrC;AACF;AAEA,MAAM6B,aAAa,SAASp5B,SAAS,CAAC;EACpCl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAColD,gBAAgB,EAAE,eAAe,EAAsB,IAAI,CAAC;IAClE,IAAI,CAAC8B,QAAQ,GAAG,IAAIj5B,cAAc,CAAC,CAAC,CAAC;EACvC;AACF;AAEA,MAAMk5B,KAAK,SAAS72B,YAAY,CAAC;EAC\u002FB37R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAColD,gBAAgB,EAAE,OAAO,CAAC;EAClC;AACF;AAEA,MAAMgC,UAAU,SAASv5B,SAAS,CAAC;EACjCl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAColD,gBAAgB,EAAE,YAAY,EAAsB,IAAI,CAAC;IAC\u002FD,IAAI,CAACe,IAAI,GAAGzgC,UAAU,CAAC;MACrBv+Q,IAAI,EAAE64P,UAAU,CAACmmD,IAAI;MACrBxgC,YAAY,EAAE,CAAC;MACfC,QAAQ,EAAEzpR,CAAC,IAAIA,CAAC,KAAK;IACvB,CAAC,CAAC;IACF,IAAI,CAACkrT,KAAK,GAAG,IAAIp5B,cAAc,CAAC,EAAE,CAAC;EACrC;AACF;AAEA,MAAMq5B,aAAa,SAASh3B,YAAY,CAAC;EACvC37R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAColD,gBAAgB,EAAE,eAAe,CAAC;IACxC,IAAI,CAAC1wT,IAAI,GAAGqxR,eAAe,CAAC\u002FlB,UAAU,CAACtrQ,IAAI,EAAE,CAC3C,MAAM,EACN,MAAM,EACN,KAAK,EACL,OAAO,CACR,CAAC;EACJ;AACF;AAEA,MAAM6yT,cAAc,SAAS15B,SAAS,CAAC;EACrCl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAColD,gBAAgB,EAAE,gBAAgB,EAAsB,IAAI,CAAC;IACnE,IAAI,CAACoC,aAAa,GAAG,IAAIv5B,cAAc,CAAC,CAAC,CAAC;EAC5C;AACF;AAEA,MAAMw5B,YAAY,SAASn3B,YAAY,CAAC;EACtC37R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAColD,gBAAgB,EAAE,cAAc,CAAC;IACvC,IAAI,CAAC1wT,IAAI,GAAGqxR,eAAe,CAAC\u002FlB,UAAU,CAACtrQ,IAAI,EAAE,CAC3C,SAAS,EACT,UAAU,EACV,SAAS,EACT,OAAO,EACP,MAAM,CACP,CAAC;EACJ;AACF;AAEA,MAAMgzT,aAAa,SAAS75B,SAAS,CAAC;EACpCl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAColD,gBAAgB,EAAE,eAAe,EAAsB,IAAI,CAAC;IAClE,IAAI,CAACuC,YAAY,GAAG,IAAI15B,cAAc,CAAC,CAAC,CAAC;EAC3C;AACF;AAEA,MAAM25B,WAAW,SAASt3B,YAAY,CAAC;EACrC37R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAColD,gBAAgB,EAAE,aAAa,CAAC;IACtC,IAAI,CAAC1wT,IAAI,GAAGqxR,eAAe,CAAC\u002FlB,UAAU,CAACtrQ,IAAI,EAAE,CAC3C,MAAM,EACN,MAAM,EACN,KAAK,EACL,OAAO,CACR,CAAC;EACJ;AACF;AAEA,MAAMmzT,YAAY,SAASh6B,SAAS,CAAC;EACnCl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAColD,gBAAgB,EAAE,cAAc,EAAsB,IAAI,CAAC;IACjE,IAAI,CAAC0C,WAAW,GAAG,IAAI75B,cAAc,CAAC,CAAC,CAAC;EAC1C;AACF;AAEA,MAAM85B,QAAQ,SAASl6B,SAAS,CAAC;EAC\u002FBl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAColD,gBAAgB,EAAE,UAAU,EAAsB,IAAI,CAAC;IAC7D,IAAI,CAAC1wT,IAAI,GAAGsrQ,UAAU,CAACtrQ,IAAI,GAAG,EAAE;EAClC;AACF;AAEA,MAAMszT,SAAS,SAASn6B,SAAS,CAAC;EAChCl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAAColD,gBAAgB,EAAE,WAAW,EAAsB,IAAI,CAAC;IAC9D,IAAI,CAAC6C,QAAQ,GAAG,IAAIh6B,cAAc,CAAC,CAAC;EACtC;AACF;AAEA,MAAMi6B,kBAAkB,CAAC;EACvB,QAAQ7jC,eAAe,EAAE3vR,IAAI,EAAEsrQ,UAAU,EAAE;IACzC,IAAIkoD,kBAAkB,CAACh6B,cAAc,CAACx5R,IAAI,CAAC,EAAE;MAC3C,OAAOwzT,kBAAkB,CAACxzT,IAAI,CAAC,CAACsrQ,UAAU,CAAC;IAC7C;IACA,OAAOvqQ,SAAS;EAClB;EAEA,OAAO+wT,eAAeA,CAACtU,KAAK,EAAE;IAC5B,OAAO,IAAImT,eAAe,CAACnT,KAAK,CAAC;EACnC;EAEA,OAAO0T,cAAcA,CAAC1T,KAAK,EAAE;IAC3B,OAAO,IAAIwT,cAAc,CAACxT,KAAK,CAAC;EAClC;EAEA,OAAOuU,eAAeA,CAACvU,KAAK,EAAE;IAC5B,OAAO,IAAIyT,eAAe,CAACzT,KAAK,CAAC;EACnC;EAEA,OAAO6T,WAAWA,CAAC7T,KAAK,EAAE;IACxB,OAAO,IAAI2T,WAAW,CAAC3T,KAAK,CAAC;EAC\u002FB;EAEA,OAAOwU,YAAYA,CAACxU,KAAK,EAAE;IACzB,OAAO,IAAI4T,YAAY,CAAC5T,KAAK,CAAC;EAChC;EAEA,OAAOyU,eAAeA,CAACzU,KAAK,EAAE;IAC5B,OAAO,IAAI8T,eAAe,CAAC9T,KAAK,CAAC;EACnC;EAEA,OAAOkU,GAAGA,CAAClU,KAAK,EAAE;IAChB,OAAO,IAAI+T,GAAG,CAAC\u002FT,KAAK,CAAC;EACvB;EAEA,OAAOoT,QAAQA,CAACpT,KAAK,EAAE;IACrB,OAAO,IAAIgU,QAAQ,CAAChU,KAAK,CAAC;EAC5B;EAEA,OAAOqU,GAAGA,CAACrU,KAAK,EAAE;IAChB,OAAO,IAAImU,GAAG,CAACnU,KAAK,CAAC;EACvB;EAEA,OAAOqT,QAAQA,CAACrT,KAAK,EAAE;IACrB,OAAO,IAAIoU,QAAQ,CAACpU,KAAK,CAAC;EAC5B;EAEA,OAAOnQ,MAAMA,CAACmQ,KAAK,EAAE;IACnB,OAAO,IAAIyI,iBAAM,CAACzI,KAAK,CAAC;EAC1B;EAEA,OAAOxtB,SAASA,CAACwtB,KAAK,EAAE;IACtB,OAAO,IAAI0I,oBAAS,CAAC1I,KAAK,CAAC;EAC7B;EAEA,OAAOgV,QAAQA,CAAChV,KAAK,EAAE;IACrB,OAAO,IAAI8U,QAAQ,CAAC9U,KAAK,CAAC;EAC5B;EAEA,OAAOsT,aAAaA,CAACtT,KAAK,EAAE;IAC1B,OAAO,IAAI+U,aAAa,CAAC\u002FU,KAAK,CAAC;EACjC;EAEA,OAAOmV,KAAKA,CAACnV,KAAK,EAAE;IAClB,OAAO,IAAIiV,KAAK,CAACjV,KAAK,CAAC;EACzB;EAEA,OAAOuT,UAAUA,CAACvT,KAAK,EAAE;IACvB,OAAO,IAAIkV,UAAU,CAAClV,KAAK,CAAC;EAC9B;EAEA,OAAOsV,aAAaA,CAACtV,KAAK,EAAE;IAC1B,OAAO,IAAIoV,aAAa,CAACpV,KAAK,CAAC;EACjC;EAEA,OAAO0U,cAAcA,CAAC1U,KAAK,EAAE;IAC3B,OAAO,IAAIqV,cAAc,CAACrV,KAAK,CAAC;EAClC;EAEA,OAAOyV,YAAYA,CAACzV,KAAK,EAAE;IACzB,OAAO,IAAIuV,YAAY,CAACvV,KAAK,CAAC;EAChC;EAEA,OAAO2U,aAAaA,CAAC3U,KAAK,EAAE;IAC1B,OAAO,IAAIwV,aAAa,CAACxV,KAAK,CAAC;EACjC;EAEA,OAAO4V,WAAWA,CAAC5V,KAAK,EAAE;IACxB,OAAO,IAAI0V,WAAW,CAAC1V,KAAK,CAAC;EAC\u002FB;EAEA,OAAO4U,YAAYA,CAAC5U,KAAK,EAAE;IACzB,OAAO,IAAI2V,YAAY,CAAC3V,KAAK,CAAC;EAChC;EAEA,OAAO+V,QAAQA,CAAC\u002FV,KAAK,EAAE;IACrB,OAAO,IAAI6V,QAAQ,CAAC7V,KAAK,CAAC;EAC5B;EAEA,OAAO6U,SAASA,CAAC7U,KAAK,EAAE;IACtB,OAAO,IAAI8V,SAAS,CAAC9V,KAAK,CAAC;EAC7B;AACF;;;ACvUgE;AACpB;AAE5C,MAAMiW,eAAe,GAAG7jC,YAAY,CAAC1gE,SAAS,CAACp4L,EAAE;AAEjD,MAAMujR,mBAAS,SAASlhB,SAAS,CAAC;EAChCl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAACmoD,eAAe,EAAE,WAAW,EAAsB,IAAI,CAAC;EAC\u002FD;AACF;AAEA,MAAMC,kBAAkB,CAAC;EACvB,QAAQ\u002FjC,eAAe,EAAE3vR,IAAI,EAAEsrQ,UAAU,EAAE;IACzC,IAAIooD,kBAAkB,CAACl6B,cAAc,CAACx5R,IAAI,CAAC,EAAE;MAC3C,OAAO0zT,kBAAkB,CAAC1zT,IAAI,CAAC,CAACsrQ,UAAU,CAAC;IAC7C;IACA,OAAOvqQ,SAAS;EAClB;EAEA,OAAOmuN,SAASA,CAACo8C,UAAU,EAAE;IAC3B,OAAO,IAAI+uC,mBAAS,CAAC\u002FuC,UAAU,CAAC;EAClC;AACF;;;ACtBgE;AACpB;AAE5C,MAAMqoD,gBAAgB,GAAG\u002FjC,YAAY,CAACO,UAAU,CAACr5P,EAAE;AAEnD,MAAM88R,UAAU,SAASz6B,SAAS,CAAC;EACjCl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAACqoD,gBAAgB,EAAE,YAAY,EAAsB,IAAI,CAAC;EACjE;AACF;AAEA,MAAME,mBAAmB,CAAC;EACxB,QAAQlkC,eAAe,EAAE3vR,IAAI,EAAEsrQ,UAAU,EAAE;IACzC,IAAIuoD,mBAAmB,CAACr6B,cAAc,CAACx5R,IAAI,CAAC,EAAE;MAC5C,OAAO6zT,mBAAmB,CAAC7zT,IAAI,CAAC,CAACsrQ,UAAU,CAAC;IAC9C;IACA,OAAOvqQ,SAAS;EAClB;EAEA,OAAOovR,UAAUA,CAAC7kB,UAAU,EAAE;IAC5B,OAAO,IAAIsoD,UAAU,CAACtoD,UAAU,CAAC;EACnC;AACF;;;ACtBgE;AACW;AACf;AAE5D,MAAMwoD,SAAS,GAAGlkC,YAAY,CAACS,GAAG,CAACv5P,EAAE;AAErC,MAAM23R,OAAG,SAASt1B,SAAS,CAAC;EAC1Bl5R,WAAWA,CAACqrQ,UAAU,EAAE;IACtB,KAAK,CAACwoD,SAAS,EAAE,KAAK,EAAsB,IAAI,CAAC;IACjD,IAAI,CAACC,IAAI,GAAGzoD,UAAU,CAACyoD,IAAI,IAAI,EAAE;IACjC,IAAI,CAAC1hB,SAAS,GAAG\u002FmC,UAAU,CAAC+mC,SAAS,IAAI,EAAE;IAC3C,IAAI,CAAC1tB,MAAM,GAAG,IAAI;IAClB,IAAI,CAACmL,aAAa,GAAG,IAAI;IACzB,IAAI,CAAClV,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACoV,SAAS,GAAG,IAAI;IACrB,IAAI,CAACG,UAAU,GAAG,IAAIoJ,cAAc,CAAC,CAAC;IACtC,IAAI,CAACngQ,QAAQ,GAAG,IAAI;EACtB;EAEA,CAACo1P,aAAa,EAAErhB,KAAK,EAAE;IACrB,MAAM0iB,EAAE,GAAGD,YAAY,CAACziB,KAAK,CAACkhB,SAAS,CAAC,CAAC;IACzC,OAAOwB,EAAE,IAAI1iB,KAAK,CAACihB,YAAY,CAAC,KAAKyB,EAAE,CAAC\u002F4P,EAAE;EAC5C;AACF;AAEA,MAAMk9R,YAAY,CAAC;EACjB,QAAQrkC,eAAe,EAAE3vR,IAAI,EAAEsrQ,UAAU,EAAE;IACzC,IAAI0oD,YAAY,CAACx6B,cAAc,CAACx5R,IAAI,CAAC,EAAE;MACrC,OAAOg0T,YAAY,CAACh0T,IAAI,CAAC,CAACsrQ,UAAU,CAAC;IACvC;IACA,OAAOvqQ,SAAS;EAClB;EAEA,OAAOsvR,GAAGA,CAAC\u002FkB,UAAU,EAAE;IACrB,OAAO,IAAImjD,OAAG,CAACnjD,UAAU,CAAC;EAC5B;AACF;;;ACtB2B;AACqC;AAMvC;AAC4C;AACzB;AAE5C,MAAM2oD,WAAW,GAAGrkC,YAAY,CAACW,KAAK,CAACz5P,EAAE;AACzC,MAAMo9R,SAAS,GAAGzoT,MAAM,CAAC,CAAC;AAE1B,MAAM0oT,YAAY,GAAG,IAAIhlT,GAAG,CAAC,CAC3B,OAAO,EACP,MAAM,EACN,aAAa,EACb,WAAW,EACX,cAAc,EACd,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,eAAe,EACf,aAAa,EACb,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,SAAS,EACT,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,QAAQ,EACR,cAAc,EACd,2BAA2B,EAC3B,yBAAyB,EACzB,cAAc,EACd,eAAe,CAChB,CAAC;AAEF,MAAMilT,YAAY,GAAG,IAAIjqT,GAAG,CAAC,CAC3B,CAAC,kBAAkB,EAAE,YAAY,CAAC,EAClC,CAAC,mBAAmB,EAAE,aAAa,CAAC,EACpC,CAAC,mBAAmB,EAAE,aAAa,CAAC,EACpC,CAAC,cAAc,EAAE7K,KAAK,IAAKA,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,QAAS,CAAC,EACjE,CACE,2BAA2B,EAC3BA,KAAK,IACF,UAASiC,IAAI,CAACgE,GAAG,CAAC,CAAC,EAAEhE,IAAI,CAACC,GAAG,CAACuN,QAAQ,CAACzP,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAACsY,OAAO,CAAC,CAAC,CAAE,GAAE,CACvE,EACD,CACE,yBAAyB,EACzBtY,KAAK,IACF,UAASiC,IAAI,CAACgE,GAAG,CAAC,CAAC,EAAEhE,IAAI,CAACC,GAAG,CAACuN,QAAQ,CAACzP,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAACsY,OAAO,CAAC,CAAC,CAAE,GAAE,CACvE,EACD,CAAC,cAAc,EAAE,EAAE,CAAC,EACpB,CAAC,eAAe,EAAE,EAAE,CAAC,EACrB,CACE,WAAW,EACX,CAACtY,KAAK,EAAE+0T,QAAQ,KAAK;EACnB\u002F0T,KAAK,GAAG+0T,QAAQ,CAAC98D,QAAQ,GAAG+5B,cAAc,CAAChyR,KAAK,CAAC;EACjD,OAAO28R,eAAe,CAAC,IAAI,GAAG38R,KAAK,CAAC;AACtC,CAAC,CACF,EACD,CAAC,gBAAgB,EAAEA,KAAK,IAAI28R,eAAe,CAAC3K,cAAc,CAAChyR,KAAK,CAAC,CAAC,CAAC,EACnE,CAAC,aAAa,EAAEA,KAAK,IAAI28R,eAAe,CAAC3K,cAAc,CAAChyR,KAAK,CAAC,CAAC,CAAC,EAChE,CAAC,QAAQ,EAAEA,KAAK,IAAI28R,eAAe,CAAC3K,cAAc,CAAChyR,KAAK,CAAC,CAAC,CAAC,EAC3D,CAAC,eAAe,EAAEA,KAAK,IAAI28R,eAAe,CAAC3K,cAAc,CAAChyR,KAAK,CAAC,CAAC,CAAC,EAClE,CAAC,aAAa,EAAEA,KAAK,IAAI28R,eAAe,CAAC3K,cAAc,CAAChyR,KAAK,CAAC,CAAC,CAAC,EAChE,CAAC,cAAc,EAAEA,KAAK,IAAI28R,eAAe,CAAC3K,cAAc,CAAChyR,KAAK,CAAC,CAAC,CAAC,EACjE,CAAC,YAAY,EAAEA,KAAK,IAAI28R,eAAe,CAAC3K,cAAc,CAAChyR,KAAK,CAAC,CAAC,CAAC,EAC\u002FD,CAAC,aAAa,EAAEA,KAAK,IAAI28R,eAAe,CAAC3K,cAAc,CAAChyR,KAAK,CAAC,CAAC,CAAC,EAChE,CAAC,aAAa,EAAEA,KAAK,IAAIA,KAAK,CAAC,EAC\u002FB,CAAC,gBAAgB,EAAEA,KAAK,IAAI28R,eAAe,CAAC3K,cAAc,CAAChyR,KAAK,CAAC,CAAC,CAAC,CACpE,CAAC;AAEF,MAAMg1T,YAAY,GAAG,MAAM;AAC3B,MAAMC,UAAU,GAAG,UAAU;AAC7B,MAAMC,qBAAqB,GAAG,QAAQ;AAEtC,SAASC,QAAQA,CAACC,QAAQ,EAAE\u002FrR,IAAI,EAAEgsR,QAAQ,EAAE;EAC1C,MAAM33E,KAAK,GAAGx9O,MAAM,CAAC8C,MAAM,CAAC,IAAI,CAAC;EACjC,IAAI,CAACoyT,QAAQ,EAAE;IACb,OAAO13E,KAAK;EACd;EACA,MAAMq3E,QAAQ,GAAG70T,MAAM,CAAC8C,MAAM,CAAC,IAAI,CAAC;EACpC,KAAK,MAAM,CAACC,GAAG,EAAEjD,KAAK,CAAC,IAAIo1T,QAAQ,CAAClgT,KAAK,CAAC,GAAG,CAAC,CAACnS,GAAG,CAACktC,CAAC,IAAIA,CAAC,CAAC\u002F6B,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE;IACxE,MAAM+vN,OAAO,GAAG6vF,YAAY,CAAC9pT,GAAG,CAAC\u002FH,GAAG,CAAC;IACrC,IAAIgiO,OAAO,KAAK,EAAE,EAAE;MAClB;IACF;IACA,IAAIqwF,QAAQ,GAAGt1T,KAAK;IACpB,IAAIilO,OAAO,EAAE;MACXqwF,QAAQ,GACN,OAAOrwF,OAAO,KAAK,QAAQ,GAAGA,OAAO,GAAGA,OAAO,CAACjlO,KAAK,EAAE+0T,QAAQ,CAAC;IACpE;IACA,IAAI9xT,GAAG,CAAC6wR,QAAQ,CAAC,OAAO,CAAC,EAAE;MACzBp2C,KAAK,CAAC3kP,SAAS,GAAG2kP,KAAK,CAAC3kP,SAAS,GAC5B,GAAE2kP,KAAK,CAACz6O,GAAG,CAAE,IAAGqyT,QAAS,EAAC,GAC3BA,QAAQ;IACd,CAAC,MAAM;MACL53E,KAAK,CAACz6O,GAAG,CAACmG,UAAU,CAAC,cAAc,EAAE,CAAC0B,CAAC,EAAE3C,CAAC,KAAKA,CAAC,CAACwO,WAAW,CAAC,CAAC,CAAC,CAAC,GAC9D2+S,QAAQ;IACZ;EACF;EAEA,IAAI53E,KAAK,CAAC7mO,UAAU,EAAE;IACpB+pR,aAAa,CACX;MACEvM,QAAQ,EAAE32C,KAAK,CAAC7mO,UAAU;MAC1Ba,MAAM,EAAEgmO,KAAK,CAAClmO,UAAU,IAAI,QAAQ;MACpC88Q,OAAO,EAAE52C,KAAK,CAACs2D,SAAS,IAAI,QAAQ;MACpC3mS,IAAI,EAAE0nT,QAAQ,CAAC98D,QAAQ,IAAI;IAC7B,CAAC,EACD5uN,IAAI,EACJA,IAAI,CAAC0kP,WAAW,CAAC,CAACyG,UAAU,EAC5B92C,KACF,CAAC;EACH;EAEA,IACE23E,QAAQ,IACR33E,KAAK,CAACk2D,aAAa,IACnBl2D,KAAK,CAACk2D,aAAa,KAAK,KAAK,IAC7Bl2D,KAAK,CAACua,QAAQ,EACd;IAOA,MAAMs9D,uBAAuB,GAAG,KAAK;IACrC,MAAMC,eAAe,GAAG,KAAK;IAC7B,MAAMv9D,QAAQ,GAAG+5B,cAAc,CAACt0C,KAAK,CAACua,QAAQ,CAAC;IAC\u002FCva,KAAK,CAACua,QAAQ,GAAG0kC,eAAe,CAAC1kC,QAAQ,GAAGs9D,uBAAuB,CAAC;IACpE73E,KAAK,CAACk2D,aAAa,GAAGjX,eAAe,CACnC16R,IAAI,CAAC+qB,IAAI,CAACglQ,cAAc,CAACt0C,KAAK,CAACk2D,aAAa,CAAC,CAAC,GAC5C37C,QAAQ,GACRu9D,eACJ,CAAC;EACH;EAEA,IAAIH,QAAQ,IAAI33E,KAAK,CAACua,QAAQ,EAAE;IAC9Bva,KAAK,CAACua,QAAQ,GAAI,QAAOva,KAAK,CAACua,QAAS,yBAAwB;EAClE;EAEA4nC,aAAa,CAACniD,KAAK,CAAC;EACpB,OAAOA,KAAK;AACd;AAEA,SAAS+3E,UAAUA,CAACpsR,IAAI,EAAE;EACxB,IAAI,CAACA,IAAI,CAACq0M,KAAK,EAAE;IACf,OAAO,EAAE;EACX;EAGA,OAAOr0M,IAAI,CAACq0M,KAAK,CACdiyB,IAAI,CAAC,CAAC,CACNz6P,KAAK,CAAC,SAAS,CAAC,CAChBk1C,MAAM,CAACna,CAAC,IAAI,CAAC,CAACA,CAAC,CAAC,CAChBltC,GAAG,CAACktC,CAAC,IAAIA,CAAC,CAAC\u002F6B,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAC\u002FBk1C,MAAM,CAAC,CAAC,CAACnnD,GAAG,EAAEjD,KAAK,CAAC,KAAK;IACxB,IAAIiD,GAAG,KAAK,aAAa,EAAE;MACzBomC,IAAI,CAAC0kP,WAAW,CAAC,CAAC2lB,aAAa,CAAC3jS,GAAG,CAAC\u002FP,KAAK,CAAC;IAC5C;IACA,OAAO60T,YAAY,CAACzmT,GAAG,CAACnL,GAAG,CAAC;EAC9B,CAAC,CAAC,CACDF,GAAG,CAACm5S,EAAE,IAAIA,EAAE,CAAC55S,IAAI,CAAC,GAAG,CAAC,CAAC,CACvBA,IAAI,CAAC,GAAG,CAAC;AACd;AAEA,MAAMozT,QAAQ,GAAG,IAAI7lT,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE1C,MAAM8lT,WAAW,SAAS37B,SAAS,CAAC;EAClCr5R,WAAWA,CAACqrQ,UAAU,EAAEtrQ,IAAI,EAAE;IAC5B,KAAK,CAACi0T,WAAW,EAAEj0T,IAAI,CAAC;IACxB,IAAI,CAACk0T,SAAS,CAAC,GAAG,KAAK;IACvB,IAAI,CAACl3E,KAAK,GAAGsuB,UAAU,CAACtuB,KAAK,IAAI,EAAE;EACrC;EAEA,CAAC2uC,MAAM,EAAEhnD,OAAO,EAAE;IAChB,KAAK,CAACgnD,MAAM,CAAC,CAAChnD,OAAO,CAAC;IACtB,IAAI,CAACqY,KAAK,GAAG+3E,UAAU,CAAC,IAAI,CAAC;EAC\u002FB;EAEA,CAACxpC,iBAAiB,IAAI;IACpB,OAAO,CAACypC,QAAQ,CAACtnT,GAAG,CAAC,IAAI,CAAC2gR,SAAS,CAAC,CAAC;EACvC;EAEA,CAACI,OAAO,EAAE3sR,GAAG,EAAE6yT,QAAQ,GAAG,KAAK,EAAE;IAC\u002FB,IAAI,CAACA,QAAQ,EAAE;MACb7yT,GAAG,GAAGA,GAAG,CAAC4G,UAAU,CAAC6rT,UAAU,EAAE,EAAE,CAAC;MACpC,IAAI,CAAC,IAAI,CAACv3E,KAAK,CAAC35O,QAAQ,CAAC,kBAAkB,CAAC,EAAE;QAC5CvB,GAAG,GAAGA,GAAG,CAAC4G,UAAU,CAAC4rT,YAAY,EAAE,GAAG,CAAC;MACzC;IACF,CAAC,MAAM;MACL,IAAI,CAACJ,SAAS,CAAC,GAAG,IAAI;IACxB;IAEA,IAAIpyT,GAAG,EAAE;MACP,IAAI,CAACkqR,QAAQ,CAAC,IAAIlqR,GAAG;IACvB;EACF;EAEA,CAAC4sR,WAAW,EAAE4O,OAAO,EAAE43B,OAAO,GAAG,IAAI,EAAE;IACrC,MAAMxhC,OAAO,GAAGl0R,MAAM,CAAC8C,MAAM,CAAC,IAAI,CAAC;IACnC,MAAM4xR,MAAM,GAAG;MACbE,GAAG,EAAE9+N,GAAG;MACR++N,MAAM,EAAE\u002F+N,GAAG;MACXjP,IAAI,EAAEiP,GAAG;MACTg\u002FN,KAAK,EAAEh\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\u002FL,WAAW,GAAG0\u002FL,KAAK,CAAC4zE,WAAW,GAAG,IAAI;UAC9C;UACAN,QAAQ,CAACr7T,IAAI,CACX46T,eAAe,CAACa,mBAAmB,CACjChxT,IAAI,EACJ6wT,UAAU,EACV70E,YAAY,EACZ;YAAEsB;UAAM,CACV,CACF,CAAC;UACD;MACJ;IACF;IAEA,OAAO;MACL1xO,WAAW,EAAE,MAAMoD,OAAO,CAAC27O,GAAG,CAACimE,QAAQ,CAAC;MACxC50E;IACF,CAAC;EACH;EAEA,aAAao1E,mBAAmBA,CAC9B5C,iBAAiB,EACjBziF,SAAS,EACTgY,IAAI,EACJn4O,WAAW,EACX6kT,aAAa,EACb;IACA,IAAI,CAAC7kT,WAAW,EAAE;MAChB,OAAO,IAAI;IACb;IAEA,MAAM;MAAEvZ,OAAO;MAAE2N;IAAK,CAAC,GAAG+rO,SAAS;IACnC,MAAM6kF,QAAQ,GAAG,EAAE;IACnB,KAAK,MAAMC,UAAU,IAAIjlT,WAAW,EAAE;MACpC,IAAIilT,UAAU,CAACC,OAAO,EAAE;QACtB;MACF;MACA,QAAQD,UAAU,CAACE,cAAc;QAC\u002FB,KAAK7tU,oBAAoB,CAACE,QAAQ;UAChCwtU,QAAQ,CAACr7T,IAAI,CACXg6T,kBAAkB,CAAC8B,wBAAwB,CACzC7C,iBAAiB,EACjBxuT,IAAI,EACJ6wT,UAAU,EACV;YACE9kF,SAAS;YACTgY,IAAI;YACJoD,gBAAgB,EAAE90P;UACpB,CACF,CACF,CAAC;UACD;QACF,KAAKnP,oBAAoB,CAACG,SAAS;UACjC,IAAIwtU,UAAU,CAACI,UAAU,EAAE;YACzBL,QAAQ,CAACr7T,IAAI,CACXw6T,mBAAmB,CAACsB,wBAAwB,CAC1C7C,iBAAiB,EACjBxuT,IAAI,EACJ6wT,UAAU,EACV;cACE1pE,gBAAgB,EAAE90P;YACpB,CACF,CACF,CAAC;UACH,CAAC,MAAM;YACLu+T,QAAQ,CAACr7T,IAAI,CACXu6T,aAAa,CAACuB,wBAAwB,CACpC7C,iBAAiB,EACjBxuT,IAAI,EACJ6wT,UAAU,EACV;cACE1pE,gBAAgB,EAAE90P;YACpB,CACF,CACF,CAAC;UACH;UACA;QACF,KAAKnP,oBAAoB,CAACK,GAAG;UAC3BqtU,QAAQ,CAACr7T,IAAI,CACXu6T,aAAa,CAACuB,wBAAwB,CACpC7C,iBAAiB,EACjBxuT,IAAI,EACJ6wT,UAAU,EACV;YACE1pE,gBAAgB,EAAE90P;UACpB,CACF,CACF,CAAC;UACD;QACF,KAAKnP,oBAAoB,CAACI,KAAK;UAC7B,IAAI,CAAC+O,OAAO,CAACuE,0BAA0B,EAAE;YACvC;UACF;UACA,MAAM0mP,KAAK,GAAG,MAAMmzE,aAAa,CAACvyT,GAAG,CAAC2yT,UAAU,CAACH,QAAQ,CAAC;UAC1D,IAAIpzE,KAAK,CAAC1\u002FL,WAAW,EAAE;YACrB,MAAM;cAAEA,WAAW;cAAEszQ;YAAY,CAAC,GAAG5zE,KAAK;YAC1C,IAAI4zE,WAAW,EAAE;cACftzQ,WAAW,CAAC57C,IAAI,CAACX,GAAG,CAAC,OAAO,EAAE6vT,WAAW,CAAC;YAC5C;YACA5zE,KAAK,CAACwH,QAAQ,GAAG,IAAIl5M,UAAU,CAACgS,WAAW,EAAEA,WAAW,CAAClrD,MAAM,CAAC;YAChE4qP,KAAK,CAAC1\u002FL,WAAW,GAAG0\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\u002FT,SAAS,EAAE;MACxB,OAAO,CAACo\u002FT,MAAM;IAChB;IACA,OAAO,IAAI,CAACC,QAAQ,IAAI,CAAC,IAAI,CAACN,QAAQ,CAAC,IAAI,CAAC7hS,KAAK,EAAEtqC,cAAc,CAACC,MAAM,CAAC;EAC3E;EAWAysU,aAAaA,CAACvoT,iBAAiB,EAAE;IAC\u002FB,MAAMwoT,OAAO,GAAGxoT,iBAAiB,EAAExN,GAAG,CAAC,IAAI,CAACmI,IAAI,CAACqkB,EAAE,CAAC,EAAEwpS,OAAO;IAC7D,IAAIA,OAAO,KAAKv\u002FT,SAAS,EAAE;MACzB,OAAO,CAACu\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\u002FB,IAAIA,EAAE,YAAY\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\u002F4P,MAAM,GAAG,EAAE;IACjB,IAAI0\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\u002FB,IAAI,CAACC,oBAAoB,GAAG,CAAC;EAC\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\u002F\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\u002FT,UAAU,CAACj\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\u002FjB,IAAI,CAAC8jB,gBAAgB,CAAC\u002FZ,OAAO,CAAC;UAChD48G,WAAW,CAAClnU,IAAI,CAAC;YACf4mC,IAAI,EAAE0jL,OAAO;YACb3K,MAAM;YACN2kB;UACF,CAAC,CAAC;QACJ;QAEA,MAAM6iG,QAAQ,GAAGC,KAAK,IAAI;UAExB,IAAIjwE,WAAW,GAAG,CAAC;UACnB,KAAK,MAAM5hO,KAAK,IAAI2xS,WAAW,EAAE;YAC\u002FB,MAAMrvT,MAAM,GAAG,IAAI,CAACwvT,UAAU,CAAC,IAAI,EAAE9mH,IAAI,EAAE6mH,KAAK,EAAEvwT,KAAK,EAAE0e,KAAK,CAAC;YAC\u002FD4hO,WAAW,IAAIt\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\u002FuM,KAAK,CAAC+uM,SAAS,IAAI\u002FjB,IAAI,CAAC8jB,gBAAgB,CAACz9L,IAAI,CAAC;IAChE,MAAMnkB,KAAK,GAAGmzO,QAAQ,GAAG,IAAI;IAC7B,MAAM\u002F9O,MAAM,GAAG,EAAE;IAEjB,IAAIowT,yBAAyB,GAAG,CAAC,CAAC;MAChCC,uBAAuB,GAAG,CAAC,CAAC;MAC5Bj0C,YAAY,GAAG,CAAC,CAAC;MACjBk0C,UAAU,GAAG,CAAC;MACdptS,YAAY,GAAG,CAAC;IAElB,KAAK,IAAIr7B,CAAC,GAAG,CAAC,EAAEuH,EAAE,GAAG04M,MAAM,CAACxiN,MAAM,EAAEuC,CAAC,GAAGuH,EAAE,EAAEvH,CAAC,EAAE,EAAE;MAC\u002FC,MAAM,CAACsQ,KAAK,EAAEN,GAAG,CAAC,GAAG40N,SAAS,CAAC5kO,CAAC,CAAC;MACjC,MAAM83D,KAAK,GAAGmoJ,MAAM,CAACjgN,CAAC,CAAC;MACvB,MAAM06P,UAAU,GAAG5iM,KAAK,CAAC3gD,KAAK,GAAG4L,KAAK;MACtC,IAAI+0C,KAAK,CAACu8I,OAAO,KAAK,GAAG,EAAE;QACzB,IAAIh5K,YAAY,GAAGq\u002FN,UAAU,GAAGvjP,KAAK,EAAE;UAErCgB,MAAM,CAAC7X,IAAI,CAAC4mC,IAAI,CAAC3zB,SAAS,CAACk1T,UAAU,EAAEn4T,KAAK,CAAC,CAAC;UAC9Cm4T,UAAU,GAAGn4T,KAAK;UAClB+qB,YAAY,GAAGq\u002FN,UAAU;UACzB6tE,yBAAyB,GAAG,CAAC,CAAC;UAC9Bh0C,YAAY,GAAG,CAAC,CAAC;QACnB,CAAC,MAAM;UACLl5P,YAAY,IAAIq\u002FN,UAAU;UAC1B6tE,yBAAyB,GAAGj4T,KAAK;UACjCk4T,uBAAuB,GAAGx4T,GAAG;UAC7BukR,YAAY,GAAGv0R,CAAC;QAClB;MACF,CAAC,MAAM,IAAIq7B,YAAY,GAAGq\u002FN,UAAU,GAAGvjP,KAAK,EAAE;QAE5C,IAAIoxT,yBAAyB,KAAK,CAAC,CAAC,EAAE;UACpCpwT,MAAM,CAAC7X,IAAI,CAAC4mC,IAAI,CAAC3zB,SAAS,CAACk1T,UAAU,EAAED,uBAAuB,CAAC,CAAC;UAChEC,UAAU,GAAGD,uBAAuB;UACpCxoU,CAAC,GAAGu0R,YAAY,GAAG,CAAC;UACpBg0C,yBAAyB,GAAG,CAAC,CAAC;UAC9BltS,YAAY,GAAG,CAAC;QAClB,CAAC,MAAM;UAELljB,MAAM,CAAC7X,IAAI,CAAC4mC,IAAI,CAAC3zB,SAAS,CAACk1T,UAAU,EAAEn4T,KAAK,CAAC,CAAC;UAC9Cm4T,UAAU,GAAGn4T,KAAK;UAClB+qB,YAAY,GAAGq\u002FN,UAAU;QAC3B;MACF,CAAC,MAAM;QACLr\u002FN,YAAY,IAAIq\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\u002FT,gBAAgB,GAAGD,gBAAgB,CAAC\u002FgU,GAAG,CAAC,GAAG,CAAC;IAClD,IAAI,EAAEghU,gBAAgB,YAAYn\u002FT,IAAI,CAAC,EAAE;MACvC;IACF;IAIA,MAAMo\u002FT,OAAO,GAAG,IAAI,CAACnG,gBAAgB,CAACriT,MAAM,CAAC3U,IAAI,CAAC9D,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5D,IAAI,OAAOihU,OAAO,KAAK,QAAQ,EAAE;MAC\u002FB,IAAI,CAAC94T,IAAI,CAAC0yT,UAAU,GAAGoG,OAAO;IAChC;IAEA,MAAMC,GAAG,GACP,IAAI,CAAC\u002F4T,IAAI,CAAC0yT,UAAU,KAAK,IAAI,IAAI,IAAI,CAAC1yT,IAAI,CAAC0yT,UAAU,KAAK,KAAK,GAC3D,IAAI,CAAC1yT,IAAI,CAAC0yT,UAAU,GACpB,KAAK;IAEX,MAAMsG,YAAY,GAAGH,gBAAgB,CAACh+T,OAAO,CAAC,CAAC;IAC\u002FC,IAAIm+T,YAAY,CAAC3sU,MAAM,KAAK,CAAC,EAAE;MAC7B2sU,YAAY,CAAC9pU,IAAI,CAAC,KAAK,EAAE6pU,GAAG,CAAC;IAC\u002FB,CAAC,MAAM,IAAIC,YAAY,CAAC3sU,MAAM,KAAK,CAAC,EAAE;MACpC,IAAI2sU,YAAY,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE;QAC7BA,YAAY,CAAC9pU,IAAI,CAAC6pU,GAAG,CAAC;MACxB,CAAC,MAAM;QACLC,YAAY,CAACruR,OAAO,CAAC,KAAK,CAAC;MAC7B;IACF,CAAC,MAAM,IAAIquR,YAAY,CAACpoU,QAAQ,CAACmoU,GAAG,CAAC,EAAE;MACrCC,YAAY,CAAC3sU,MAAM,GAAG,CAAC;MACvB2sU,YAAY,CAAC9pU,IAAI,CAAC,KAAK,EAAE6pU,GAAG,CAAC;IAC\u002FB,CAAC,MAAM;MACL,MAAME,QAAQ,GAAGD,YAAY,CAACn4C,IAAI,CAACxjR,CAAC,IAAIA,CAAC,KAAK,KAAK,CAAC;MACpD27T,YAAY,CAAC3sU,MAAM,GAAG,CAAC;MACvB2sU,YAAY,CAAC9pU,IAAI,CAAC,KAAK,EAAE+pU,QAAQ,CAAC;IACpC;IAIA,IAAI,CAACD,YAAY,CAACpoU,QAAQ,CAAC,IAAI,CAACoP,IAAI,CAAC0yT,UAAU,CAAC,EAAE;MAChD,IAAI,CAAC1yT,IAAI,CAAC0yT,UAAU,GAAG,KAAK;IAC9B;IAEA,IAAI,CAAC1yT,IAAI,CAACw0T,WAAW,GAAGwE,YAAY,CAAC,CAAC,CAAC;IAEvC,MAAMvB,iBAAiB,GAAGoB,gBAAgB,CAAChhU,GAAG,CAAC,IAAI,CAACmI,IAAI,CAACw0T,WAAW,CAAC;IACrE,IAAI,CAACiD,iBAAiB,GACpBA,iBAAiB,YAAY95T,UAAU,GAAG85T,iBAAiB,GAAG,IAAI;IACpE,MAAMC,mBAAmB,GAAGmB,gBAAgB,CAAChhU,GAAG,CAAC,KAAK,CAAC;IACvD,IAAI,CAAC6\u002FT,mBAAmB,GACtBA,mBAAmB,YAAY\u002F5T,UAAU,GAAG+5T,mBAAmB,GAAG,IAAI;IAExE,IAAI,IAAI,CAACD,iBAAiB,EAAE;MAC1B,IAAI,CAACtL,QAAQ,CAACj9T,IAAI,CAAC,IAAI,CAACuoU,iBAAiB,CAAC;IAC5C,CAAC,MAAM;MACL,IAAI,CAACe,4BAA4B,CAACloT,MAAM,EAAE,OAAO,CAAC;IACpD;IACA,IAAI,IAAI,CAAConT,mBAAmB,EAAE;MAC5B,IAAI,CAACvL,QAAQ,CAACj9T,IAAI,CAAC,IAAI,CAACwoU,mBAAmB,CAAC;IAC9C;IACA,IAAI,CAACvK,iBAAiB,GAAG,IAAI,CAAC3sE,gBAAgB;IAC9C,IAAI,IAAI,CAACxgP,IAAI,CAAC4yT,iBAAiB,KAAK,IAAI,EAAE;MACxC,IAAI,CAAC5yT,IAAI,CAAC4yT,iBAAiB,GAAG,KAAK;IACrC;EACF;EAEAoF,mBAAmBA,CAAC1nT,MAAM,EAAE;IAC1B,IAAI,CAACtQ,IAAI,CAACk4T,WAAW,GAAG,IAAI;IAI5B,MAAMgB,WAAW,GAAG5oT,MAAM,CAAC3U,IAAI,CAAC9D,GAAG,CAAC,QAAQ,CAAC;IAC7C,IAAIqhU,WAAW,YAAYx\u002FT,IAAI,EAAE;MAC\u002FB,IAAI,CAAC8C,MAAM,GAAG8T,MAAM,CAAC3U,IAAI,CAACf,MAAM,CAAC,QAAQ,CAAC;MAC1C,MAAMu+T,gBAAgB,GAAGD,WAAW,CAACrhU,GAAG,CAAC,GAAG,CAAC;MAC7C,IAAIshU,gBAAgB,YAAY7\u002FT,IAAI,EAAE;QACpC,IAAI,CAAC0G,IAAI,CAAC0yT,UAAU,GAAG,IAAI,CAACC,gBAAgB,CAACwG,gBAAgB,CAAC;MAChE;IACF;IAGA,MAAMlK,gBAAgB,GAAG3+S,MAAM,CAAC3U,IAAI,CAAC9D,GAAG,CAAC,IAAI,CAAC;IAC9C,IAAI,EAAEo3T,gBAAgB,YAAYv1T,IAAI,CAAC,EAAE;MACvC;IACF;IACA,MAAMm\u002FT,gBAAgB,GAAG5J,gBAAgB,CAACp3T,GAAG,CAAC,GAAG,CAAC;IAClD,IAAI,EAAEghU,gBAAgB,YAAYn\u002FT,IAAI,CAAC,EAAE;MACvC;IACF;IACA,KAAK,MAAM5J,GAAG,IAAI+oU,gBAAgB,CAACh+T,OAAO,CAAC,CAAC,EAAE;MAC5C,IAAI\u002FK,GAAG,KAAK,KAAK,EAAE;QACjB,IAAI,CAACkQ,IAAI,CAACk4T,WAAW,GAAG,IAAI,CAACvF,gBAAgB,CAAC7iU,GAAG,CAAC;QAClD;MACF;IACF;IAEA,MAAM2nU,iBAAiB,GAAGoB,gBAAgB,CAAChhU,GAAG,CAAC,IAAI,CAACmI,IAAI,CAACk4T,WAAW,CAAC;IACrE,IAAI,CAACT,iBAAiB,GACpBA,iBAAiB,YAAY95T,UAAU,GAAG85T,iBAAiB,GAAG,IAAI;IACpE,MAAMC,mBAAmB,GAAGmB,gBAAgB,CAAChhU,GAAG,CAAC,KAAK,CAAC;IACvD,IAAI,CAAC6\u002FT,mBAAmB,GACtBA,mBAAmB,YAAY\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\u002FBypS,aAAa,GAAG,IAAI,CAAC\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\u002F4B,GAAG,EAAE;UACtC3G,GAAG,CAAC\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\u002FB,IAAIuF,MAAM,CAAC0zT,EAAE,EAAE\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\u002FD,IAAI,CAACo8P,UAAU,GAAGk\u002FD,eAAe,CAAC5\u002FD,gBAAgB,CAChD,IAAI,CAACo3D,SAAS,CAACp9T,GAAG,EAClB,IAAI,CAAClJ,SAAS,EACd,IAAI,CAAC2f,QAAQ,EACbg\u002FO,QAAQ,EACR8O,SAAS,EACT2B,WACF,CAAC;QACD,IAAI,CAAC42D,QAAQ,CAACj9T,IAAI,CAAC,IAAI,CAAC6mQ,UAAU,CAAC;MACrC,CAAC,MAAM;QACLzqQ,IAAI,CACF,4FACF,CAAC;MACH;IACF;EACF;EAEA,IAAIqkU,cAAcA,CAAA,EAAG;IACnB,OAAO,IAAI,CAAC0K,cAAc;EAC5B;EAEA,OAAO9H,aAAaA,CAAC\u002FH,UAAU,EAAE7wT,IAAI,EAAE;IAAE24T,KAAK;IAAEr8D;EAAG,CAAC,EAAE;IACpD,MAAM;MAAE5gP,KAAK;MAAEyvO,QAAQ;MAAEpxP,IAAI;MAAEoS,QAAQ;MAAEw0T,IAAI;MAAEztU;IAAM,CAAC,GAAG29T,UAAU;IACnE,MAAM+P,QAAQ,GAAG,IAAI7gU,IAAI,CAACC,IAAI,CAAC;IAC\u002FB4gU,QAAQ,CAACv\u002FT,GAAG,CAAC,MAAM,EAAE1B,IAAI,CAACzB,GAAG,CAAC,OAAO,CAAC,CAAC;IACvC0iU,QAAQ,CAACv\u002FT,GAAG,CAAC,SAAS,EAAE1B,IAAI,CAACzB,GAAG,CAAC,UAAU,CAAC,CAAC;IAC7C0iU,QAAQ,CAACv\u002FT,GAAG,CAAC,cAAc,EAAG,KAAIlE,mBAAmB,CAAC,CAAE,EAAC,CAAC;IAC1DyjU,QAAQ,CAACv\u002FT,GAAG,CAAC,MAAM,EAAEtH,IAAI,CAAC;IAC1B,MAAM8mU,EAAE,GAAI,SAAQ11E,QAAS,OAAMoP,WAAW,CAAC7+O,KAAK,EAAe,IAAI,CAAE,EAAC;IAC1EklT,QAAQ,CAACv\u002FT,GAAG,CAAC,IAAI,EAAEw\u002FT,EAAE,CAAC;IACtBD,QAAQ,CAACv\u002FT,GAAG,CACV,UAAU,EACVyK,OAAO,CAAC5Y,KAAK,CAAC,GACVA,KAAK,GACL8Y,mBAAmB,CAAC9Y,KAAK,EAAoB,IAAI,CACvD,CAAC;IACD0tU,QAAQ,CAACv\u002FT,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IACpBu\u002FT,QAAQ,CAACv\u002FT,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACjCu\u002FT,QAAQ,CAACv\u002FT,GAAG,CAAC,QAAQ,EAAE8K,QAAQ,CAAC;IAEhC,IAAIw0T,IAAI,EAAE;MACRC,QAAQ,CAACv\u002FT,GAAG,CACV,GAAG,EACHyK,OAAO,CAAC60T,IAAI,CAAC,GAAGA,IAAI,GAAG30T,mBAAmB,CAAC20T,IAAI,EAAoB,IAAI,CACzE,CAAC;IACH;IAEA,IAAIhI,KAAK,IAAIr8D,EAAE,EAAE;MACf,MAAM7kQ,CAAC,GAAG,IAAIsI,IAAI,CAACC,IAAI,CAAC;MACxB4gU,QAAQ,CAACv\u002FT,GAAG,CAAC,IAAI,EAAE5J,CAAC,CAAC;MAErB,IAAIkhU,KAAK,EAAE;QACTlhU,CAAC,CAAC4J,GAAG,CAAC,GAAG,EAAEs3T,KAAK,CAAC;MACnB,CAAC,MAAM;QACLlhU,CAAC,CAAC4J,GAAG,CAAC,GAAG,EAAEi7P,EAAE,CAAC;MAChB;IACF;IAEA,OAAOskE,QAAQ;EACjB;EAEA,aAAanI,yBAAyBA,CAAC5H,UAAU,EAAE7wT,IAAI,EAAE2W,MAAM,EAAE;IAC\u002FD,MAAM;MAAEykP,WAAW;MAAErvB,SAAS;MAAEgY;IAAK,CAAC,GAAGptO,MAAM;IAC\u002FC,MAAM;MAAE+E,KAAK;MAAEyvO,QAAQ;MAAEpxP,IAAI;MAAEoS,QAAQ;MAAEjZ;IAAM,CAAC,GAAG29T,UAAU;IAE7D,MAAM\u002F6S,SAAS,GAAG,IAAI\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\u002FD,CAAC;IACD,MAAMh\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\u002FmB,CAAC,GAAGknU,IAAI;YACjB\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\u002FCs\u002FO,KAAK,CAACn8O,GAAG,CAAC,OAAO,EAAE+K,KAAK,CAAC;MACzBoxO,KAAK,CAACn8O,GAAG,CAAC,QAAQ,EAAEgL,MAAM,CAAC;MAE3B6kT,WAAW,GAAG,IAAI3kT,MAAM,CAACy2T,WAAW,EAAE,CAAC,EAAE,CAAC,EAAExlF,KAAK,CAAC;IACpD;IACA,MAAM5\u002FL,WAAW,GAAG,IAAIrxC,MAAM,CAAC,MAAMo2T,iBAAiB,EAAE,CAAC,EAAE,CAAC,EAAErlF,KAAK,CAAC;IAEpE,OAAO;MACL1\u002FL,WAAW;MACXszQ,WAAW;MACX9kT,KAAK;MACLC;IACF,CAAC;EACH;EAEA,OAAOusT,aAAaA,CAAC\u002FH,UAAU,EAAE7wT,IAAI,EAAE;IAAE24T,KAAK;IAAEr8D;EAAG,CAAC,EAAE;IACpD,MAAM;MAAEviQ,IAAI;MAAEoS,QAAQ;MAAEw0T;IAAK,CAAC,GAAG9P,UAAU;IAC3C,MAAMoS,KAAK,GAAG,IAAIljU,IAAI,CAACC,IAAI,CAAC;IAC5BijU,KAAK,CAAC5hU,GAAG,CAAC,MAAM,EAAE1B,IAAI,CAACzB,GAAG,CAAC,OAAO,CAAC,CAAC;IACpC+kU,KAAK,CAAC5hU,GAAG,CAAC,SAAS,EAAE1B,IAAI,CAACzB,GAAG,CAAC,OAAO,CAAC,CAAC;IACvC+kU,KAAK,CAAC5hU,GAAG,CAAC,cAAc,EAAG,KAAIlE,mBAAmB,CAAC,CAAE,EAAC,CAAC;IACvD8lU,KAAK,CAAC5hU,GAAG,CAAC,MAAM,EAAEtH,IAAI,CAAC;IACvBkpU,KAAK,CAAC5hU,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IACjB4hU,KAAK,CAAC5hU,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B4hU,KAAK,CAAC5hU,GAAG,CAAC,QAAQ,EAAE8K,QAAQ,CAAC;IAE7B,IAAIw0T,IAAI,EAAE;MACRsC,KAAK,CAAC5hU,GAAG,CACP,GAAG,EACHyK,OAAO,CAAC60T,IAAI,CAAC,GAAGA,IAAI,GAAG30T,mBAAmB,CAAC20T,IAAI,EAAoB,IAAI,CACzE,CAAC;IACH;IAEA,IAAIhI,KAAK,IAAIr8D,EAAE,EAAE;MACf,MAAM7kQ,CAAC,GAAG,IAAIsI,IAAI,CAACC,IAAI,CAAC;MACxBijU,KAAK,CAAC5hU,GAAG,CAAC,IAAI,EAAE5J,CAAC,CAAC;MAElB,IAAIkhU,KAAK,EAAE;QACTlhU,CAAC,CAAC4J,GAAG,CAAC,GAAG,EAAEs3T,KAAK,CAAC;MACnB,CAAC,MAAM;QACLlhU,CAAC,CAAC4J,GAAG,CAAC,GAAG,EAAEi7P,EAAE,CAAC;MAChB;IACF;IAEA,OAAO2mE,KAAK;EACd;EAEA,aAAaxK,yBAAyBA,CAAC5H,UAAU,EAAE7wT,IAAI,EAAE2W,MAAM,EAAE;IAC\u002FD,MAAM;MAAExK;IAAS,CAAC,GAAG0kT,UAAU;IAC\u002FB,MAAM;MAAE\u002FrE,QAAQ;MAAE14O,KAAK;MAAEC;IAAO,CAAC,GAAGsK,MAAM,CAAC2mO,KAAK;IAChD,MAAMxnO,SAAS,GAAG,IAAI\u002FV,IAAI,CAACC,IAAI,CAAC;IAChC,MAAMkjU,OAAO,GAAG,IAAInjU,IAAI,CAACC,IAAI,CAAC;IAC9B8V,SAAS,CAACzU,GAAG,CAAC,SAAS,EAAE6hU,OAAO,CAAC;IACjCA,OAAO,CAAC7hU,GAAG,CAAC,KAAK,EAAEyjP,QAAQ,CAAC;IAC5B,MAAMsX,UAAU,GAAI,KAAIhwP,KAAM,QAAOC,MAAO,mBAAkB;IAE9D,MAAMgwP,oBAAoB,GAAG,IAAIt8P,IAAI,CAACC,IAAI,CAAC;IAC3Cq8P,oBAAoB,CAACh7P,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IACvCg7P,oBAAoB,CAACh7P,GAAG,CAAC,SAAS,EAAE1B,IAAI,CAACzB,GAAG,CAAC,MAAM,CAAC,CAAC;IACrDm+P,oBAAoB,CAACh7P,GAAG,CAAC,MAAM,EAAE1B,IAAI,CAACzB,GAAG,CAAC,SAAS,CAAC,CAAC;IACrDm+P,oBAAoB,CAACh7P,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE+K,KAAK,EAAEC,MAAM,CAAC,CAAC;IACvDgwP,oBAAoB,CAACh7P,GAAG,CAAC,WAAW,EAAEyU,SAAS,CAAC;IAEhD,IAAI3J,QAAQ,EAAE;MACZ,MAAM8K,MAAM,GAAG\u002FK,iBAAiB,CAACC,QAAQ,EAAEC,KAAK,EAAEC,MAAM,CAAC;MACzDgwP,oBAAoB,CAACh7P,GAAG,CAAC,QAAQ,EAAE4V,MAAM,CAAC;IAC5C;IAEA,MAAMqlP,EAAE,GAAG,IAAI5vP,YAAY,CAAC0vP,UAAU,CAAC;IACvCE,EAAE,CAACt6P,IAAI,GAAGq6P,oBAAoB;IAE9B,OAAOC,EAAE;EACX;AACF;AAEA,MAAM8zD,wBAAwB,SAAS4G,gBAAgB,CAAC;EACtDnjU,WAAWA,CAAC8iB,MAAM,EAAE;IAClB,KAAK,CAACA,MAAM,CAAC;IAEb,MAAM;MAAE3U,IAAI;MAAEhC;IAAK,CAAC,GAAG2W,MAAM;IAC7B,MAAMi7B,IAAI,GAAG,IAAI2rN,QAAQ,CAACv7P,IAAI,CAAC9D,GAAG,CAAC,IAAI,CAAC,EAAE8B,IAAI,CAAC;IAE\u002FC,IAAI,CAACqG,IAAI,CAAC0qT,cAAc,GAAGlrU,cAAc,CAACa,cAAc;IACxD,IAAI,CAAC2f,IAAI,CAAC4sT,YAAY,GAAG,IAAI,CAAC5sT,IAAI,CAAC6sT,QAAQ;IAC3C,IAAI,CAAC7sT,IAAI,CAAC8sT,MAAM,GAAG,KAAK;IACxB,IAAI,CAAC9sT,IAAI,CAACurC,IAAI,GAAGA,IAAI,CAACmsN,YAAY;IAElC,MAAMnqQ,IAAI,GAAGoO,IAAI,CAAC9D,GAAG,CAAC,MAAM,CAAC;IAC7B,IAAI,CAACmI,IAAI,CAACzS,IAAI,GACZA,IAAI,YAAY+L,IAAI,GAAG5D,iBAAiB,CAACnI,IAAI,CAACA,IAAI,CAAC,GAAG,SAAS;IAEjE,MAAM+jU,SAAS,GAAG31T,IAAI,CAAC9D,GAAG,CAAC,IAAI,CAAC;IAChC,IAAI,CAACmI,IAAI,CAACsxT,SAAS,GACjB,OAAOA,SAAS,KAAK,QAAQ,IAAIA,SAAS,IAAI,CAAC,IAAIA,SAAS,IAAI,CAAC,GAC7DA,SAAS,GACT,IAAI;EACZ;AACF;;;ACh2J6D;AACd;AACG;AAElD,SAASwL,YAAYA,CAACztU,GAAG,EAAE;EACzB,IAAI;IACF,OAAO9C,kBAAkB,CAAC8C,GAAG,CAAC;EAChC,CAAC,CAAC,OAAO6G,EAAE,EAAE;IACX5K,IAAI,CAAE,2BAA0B4K,EAAG,IAAG,CAAC;IACvC,OAAO7G,GAAG;EACZ;AACF;AAEA,MAAM0tU,gBAAgB,SAAS9hE,eAAe,CAAC;EAC7CztQ,WAAWA,CAACxB,OAAO,EAAE;IACnB,KAAK,CAACA,OAAO,CAAC;IACd,IAAI,CAACkqC,IAAI,GAAG,IAAI;EAClB;EAEAsjO,YAAYA,CAACjsQ,IAAI,EAAE;IACjB,MAAM2oC,IAAI,GAAG,KAAK,CAACsjO,YAAY,CAACjsQ,IAAI,CAAC;IACrC,IAAI2oC,IAAI,IAAI3oC,IAAI,KAAK,cAAc,EAAE;MACnC,IAAI,CAAC2oC,IAAI,GAAGA,IAAI;MAGhB,MAAM,IAAI1qC,KAAK,CAAC,4BAA4B,CAAC;IAC\u002FC;EACF;AACF;AAEA,MAAMwxU,aAAa,CAAC;EAClBxvU,WAAWA,CAACwS,IAAI,EAAE;IAChB,IAAIA,IAAI,CAACmoQ,QAAQ,EAAE;MACjB,IAAI,CAACjyO,IAAI,GAAG,IAAI+kO,eAAe,CAAC;QAAEC,aAAa,EAAE;MAAK,CAAC,CAAC,CAACO,eAAe,CACtEz7P,IAAI,CAACmoQ,QACP,CAAC,CAACzM,eAAe;IACnB,CAAC,MAAM;MACL,MAAM9gN,MAAM,GAAG,IAAImiR,gBAAgB,CAAC;QAAE7hE,aAAa,EAAE;MAAK,CAAC,CAAC;MAC5D,IAAI;QACFtgN,MAAM,CAAC6gN,eAAe,CAACz7P,IAAI,CAAC,SAAS,CAAC,CAAC;MACzC,CAAC,CAAC,MAAM,CAAC;MACT,IAAI,CAACk2B,IAAI,GAAG0kB,MAAM,CAAC1kB,IAAI;IACzB;EACF;EAEA48R,QAAQA,CAACjxT,IAAI,EAAE;IACb,IAAI,CAAC,IAAI,CAACq0B,IAAI,IAAI,CAACr0B,IAAI,EAAE;MACvB,OAAO,EAAE;IACX;IACA,MAAMq0B,IAAI,GAAG,IAAI,CAACA,IAAI,CAAC0kO,UAAU,CAACh5P,YAAY,CAACC,IAAI,CAAC,EAAE,CAAC,CAAC;IAExD,IAAI,CAACq0B,IAAI,EAAE;MACT,OAAO,EAAE;IACX;IAEA,MAAM9iC,KAAK,GAAG8iC,IAAI,CAACokO,UAAU;IAC7B,IAAIlnQ,KAAK,EAAEgnQ,QAAQ,KAAK,OAAO,EAAE;MAC\u002FB,OAAOlkO,IAAI,CAACH,QAAQ,CAACnmC,GAAG,CAAC8qQ,KAAK,IAAIoiE,YAAY,CAACpiE,KAAK,CAACzU,WAAW,CAAC,CAAC;IACpE;IAEA,OAAO62E,YAAY,CAAC5mS,IAAI,CAAC+vN,WAAW,CAAC;EACvC;AACF;;;ACvD2B;AACmD;AAClC;AAMnB;AACqB;AACO;AAErD,MAAMg3E,IAAI,CAAC;EACT,CAACC,eAAe,GAAG,IAAI;EAEvB1vU,WAAWA,CAAC0a,MAAM,EAAEgjQ,UAAU,EAAE;IAC9B,IAAI,CAAChjQ,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACgjQ,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACtvQ,OAAO,GAAG,EAAE;IACjB,IAAI,CAACuhU,SAAS,GAAG,IAAIzgU,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC0gU,SAAS,GAAG,IAAI1lU,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC2lU,YAAY,GAAG,IAAI9gU,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC+gU,oBAAoB,GAAG,IAAI;IAChC,IAAI,CAACC,mBAAmB,GAAG,IAAI;IAC\u002FB,IAAI,CAACC,oBAAoB,GAAG,IAAI;EAClC;EAEA7oE,mBAAmBA,CAAChoQ,GAAG,EAAE;IAGvB,IAAI,IAAI,CAAC2wU,oBAAoB,KAAK,IAAI,EAAE;MACtC,IAAI,CAACA,oBAAoB,GAAG,IAAI,CAAC1hU,OAAO,CAACvP,MAAM,IAAI,CAAC;IACtD;IACA,MAAM4P,GAAG,GAAG,IAAI,CAACqhU,oBAAoB,EAAE;IACvC,IAAI,CAACF,SAAS,CAACpiU,GAAG,CAACiB,GAAG,EAAEtP,GAAG,CAAC;IAC5B,OAAO2N,GAAG,CAACzC,GAAG,CAACoE,GAAG,EAAE,CAAC,CAAC;EACxB;EAEA2vQ,kBAAkBA,CAAA,EAAG;IAInB,IAAI,IAAI,CAAC2xD,mBAAmB,KAAK,IAAI,EAAE;MACrC,IAAI,CAACA,mBAAmB,GAAG,IAAI,CAAC3hU,OAAO,CAACvP,MAAM,IAAI,CAAC;MACnD,IAAI,IAAI,CAACixU,oBAAoB,EAAE;QAC7B,IAAI,CAACE,oBAAoB,GAAG,IAAI9lU,GAAG,CAAC,CAAC;QACrC,KACE,IAAI9I,CAAC,GAAG,IAAI,CAAC2uU,mBAAmB,EAChC3uU,CAAC,GAAG,IAAI,CAAC0uU,oBAAoB,EAC7B1uU,CAAC,EAAE,EACH;UAGA,IAAI,CAAC4uU,oBAAoB,CAACxiU,GAAG,CAACpM,CAAC,EAAE,IAAI,CAACwuU,SAAS,CAACvlU,GAAG,CAACjJ,CAAC,CAAC,CAAC;UACvD,IAAI,CAACwuU,SAAS,CAACtgU,MAAM,CAAClO,CAAC,CAAC;QAC1B;MACF;IACF;IACA,OAAO0L,GAAG,CAACzC,GAAG,CAAC,IAAI,CAAC0lU,mBAAmB,EAAE,EAAE,CAAC,CAAC;EAC\u002FC;EAEAE,oBAAoBA,CAAA,EAAG;IAErB,IAAI,CAACF,mBAAmB,GAAG,IAAI;IAC\u002FB,IAAI,IAAI,CAACC,oBAAoB,EAAE;MAC7B,KAAK,MAAM,CAACvhU,GAAG,EAAEtP,GAAG,CAAC,IAAI,IAAI,CAAC6wU,oBAAoB,EAAE;QAClD,IAAI,CAACJ,SAAS,CAACpiU,GAAG,CAACiB,GAAG,EAAEtP,GAAG,CAAC;MAC9B;IACF;IACA,IAAI,CAAC6wU,oBAAoB,GAAG,IAAI;EAClC;EAEAE,YAAYA,CAACn0D,SAAS,EAAE;IAGtB,IAAI,CAACo0D,cAAc,GAAG,CAACp0D,SAAS,CAAC;EACnC;EAEA35P,KAAKA,CAAC2kC,YAAY,GAAG,KAAK,EAAE;IAC1B,IAAIqpR,WAAW;IACf,IAAI,CAACrpR,YAAY,EAAE;MACjBqpR,WAAW,GAAG,IAAI,CAACC,QAAQ,CAAC,CAAC;IAC\u002FB,CAAC,MAAM;MACLvyU,IAAI,CAAC,0BAA0B,CAAC;MAChCsyU,WAAW,GAAG,IAAI,CAACE,YAAY,CAAC,CAAC;IACnC;IACAF,WAAW,CAAC5jU,UAAU,CAAC,IAAI,CAAC;IAC5B,IAAI,CAACg4Q,OAAO,GAAG4rD,WAAW;IAE1B,IAAIzgE,OAAO;IACX,IAAI;MACFA,OAAO,GAAGygE,WAAW,CAAC\u002FlU,GAAG,CAAC,SAAS,CAAC;IACtC,CAAC,CAAC,OAAO3B,EAAE,EAAE;MACX,IAAIA,EAAE,YAAYsJ,oBAAoB,EAAE;QACtC,MAAMtJ,EAAE;MACV;MACA5K,IAAI,CAAE,8CAA6C4K,EAAG,IAAG,CAAC;IAC5D;IACA,IAAIinQ,OAAO,YAAYzjQ,IAAI,EAAE;MAC3B,MAAMi1M,GAAG,GAAGivH,WAAW,CAAC\u002FlU,GAAG,CAAC,IAAI,CAAC;MACjC,MAAMisQ,MAAM,GAAGn1D,GAAG,EAAEtiN,MAAM,GAAGsiN,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE;MAKxCwuD,OAAO,CAACrjQ,kBAAkB,GAAG,IAAI;MACjC,IAAI,CAACqjQ,OAAO,GAAG,IAAIgG,sBAAsB,CACvChG,OAAO,EACP2G,MAAM,EACN,IAAI,CAACoH,UAAU,CAAC3J,QAClB,CAAC;IACH;IAGA,IAAIpL,IAAI;IACR,IAAI;MACFA,IAAI,GAAGynE,WAAW,CAAC\u002FlU,GAAG,CAAC,MAAM,CAAC;IAChC,CAAC,CAAC,OAAO3B,EAAE,EAAE;MACX,IAAIA,EAAE,YAAYsJ,oBAAoB,EAAE;QACtC,MAAMtJ,EAAE;MACV;MACA5K,IAAI,CAAE,2CAA0C4K,EAAG,IAAG,CAAC;IACzD;IACA,IAAIigQ,IAAI,YAAYz8P,IAAI,EAAE;MACxB,IAAI;QACF,MAAMgzC,KAAK,GAAGypN,IAAI,CAACt+P,GAAG,CAAC,OAAO,CAAC;QAC\u002FB,IAAI60C,KAAK,YAAYhzC,IAAI,EAAE;UACzB,IAAI,CAACy8P,IAAI,GAAGA,IAAI;UAChB;QACF;MACF,CAAC,CAAC,OAAOjgQ,EAAE,EAAE;QACX,IAAIA,EAAE,YAAYsJ,oBAAoB,EAAE;UACtC,MAAMtJ,EAAE;QACV;QACA5K,IAAI,CAAE,4CAA2C4K,EAAG,IAAG,CAAC;MAC1D;IACF;IAEA,IAAI,CAACq+C,YAAY,EAAE;MACjB,MAAM,IAAI50C,kBAAkB,CAAC,CAAC;IAChC;IAEA,MAAM,IAAI7R,mBAAmB,CAAC,yBAAyB,CAAC;EAC1D;EAEAiwU,gBAAgBA,CAACnjR,MAAM,EAAE;IACvB,IAAI,EAAE,YAAY,IAAI,IAAI,CAAC,EAAE;MAG3B,IAAI,CAACojR,UAAU,GAAG;QAChBC,QAAQ,EAAE,CAAC;QACXC,SAAS,EAAEtjR,MAAM,CAACvG,KAAK,CAACnsC,MAAM,CAAChK,GAAG;QAClCigU,UAAU,EAAEvjR,MAAM,CAACjG,IAAI;QACvBypR,UAAU,EAAExjR,MAAM,CAAC\u002FF;MACrB,CAAC;IACH;IAEA,MAAMloD,GAAG,GAAG,IAAI,CAAC0xU,aAAa,CAACzjR,MAAM,CAAC;IAGtC,IAAI,CAACt9C,KAAK,CAAC3Q,GAAG,EAAE,SAAS,CAAC,EAAE;MAC1B,MAAM,IAAIuB,WAAW,CACnB,uDACF,CAAC;IACH;IAUA,IAAIyN,IAAI,GAAGi\u002FC,MAAM,CAAChG,MAAM,CAAC,CAAC;IAG1B,IAAI,EAAEj5C,IAAI,YAAYjC,IAAI,CAAC,IAAIiC,IAAI,CAACA,IAAI,EAAE;MACxCA,IAAI,GAAGA,IAAI,CAACA,IAAI;IAClB;IACA,IAAI,EAAEA,IAAI,YAAYjC,IAAI,CAAC,EAAE;MAC3B,MAAM,IAAIxL,WAAW,CACnB,wDACF,CAAC;IACH;IACA,OAAO,IAAI,CAAC8vU,UAAU;IAEtB,OAAOriU,IAAI;EACb;EAEA0iU,aAAaA,CAACzjR,MAAM,EAAE;IAWpB,MAAM1yC,MAAM,GAAG0yC,MAAM,CAACvG,KAAK,CAACnsC,MAAM;IAClC,MAAM81T,UAAU,GAAG,IAAI,CAACA,UAAU;IAClC91T,MAAM,CAAChK,GAAG,GAAG8\u002FT,UAAU,CAACE,SAAS;IACjCtjR,MAAM,CAACjG,IAAI,GAAGqpR,UAAU,CAACG,UAAU;IACnCvjR,MAAM,CAAC\u002FF,IAAI,GAAGmpR,UAAU,CAACI,UAAU;IAGnC,IAAIzxU,GAAG;IAEP,OAAO,IAAI,EAAE;MACX,IAAI,EAAE,eAAe,IAAIqxU,UAAU,CAAC,IAAI,EAAE,YAAY,IAAIA,UAAU,CAAC,EAAE;QACrE,IAAI1gU,KAAK,CAAE3Q,GAAG,GAAGiuD,MAAM,CAAChG,MAAM,CAAC,CAAC,EAAG,SAAS,CAAC,EAAE;UAC7C;QACF;QACAopR,UAAU,CAACM,aAAa,GAAG3xU,GAAG;QAC9BqxU,UAAU,CAACnzG,UAAU,GAAGjwK,MAAM,CAAChG,MAAM,CAAC,CAAC;MACzC;MAEA,IAAIxhD,KAAK,GAAG4qU,UAAU,CAACM,aAAa;MACpC,MAAM9wT,KAAK,GAAGwwT,UAAU,CAACnzG,UAAU;MACnC,IAAI,CAAC9\u002FN,MAAM,CAACC,SAAS,CAACoI,KAAK,CAAC,IAAI,CAACrI,MAAM,CAACC,SAAS,CAACwiB,KAAK,CAAC,EAAE;QACxD,MAAM,IAAItf,WAAW,CACnB,sDACF,CAAC;MACH;MAEA,KAAK,IAAIU,CAAC,GAAGovU,UAAU,CAACC,QAAQ,EAAErvU,CAAC,GAAG4e,KAAK,EAAE5e,CAAC,EAAE,EAAE;QAChDovU,UAAU,CAACE,SAAS,GAAGh2T,MAAM,CAAChK,GAAG;QACjC8\u002FT,UAAU,CAACC,QAAQ,GAAGrvU,CAAC;QACvBovU,UAAU,CAACG,UAAU,GAAGvjR,MAAM,CAACjG,IAAI;QACnCqpR,UAAU,CAACI,UAAU,GAAGxjR,MAAM,CAAC\u002FF,IAAI;QAEnC,MAAMvyC,KAAK,GAAG,CAAC,CAAC;QAChBA,KAAK,CAACvB,MAAM,GAAG65C,MAAM,CAAChG,MAAM,CAAC,CAAC;QAC9BtyC,KAAK,CAACpG,GAAG,GAAG0+C,MAAM,CAAChG,MAAM,CAAC,CAAC;QAC3B,MAAMr5D,IAAI,GAAGq\u002FD,MAAM,CAAChG,MAAM,CAAC,CAAC;QAE5B,IAAIr5D,IAAI,YAAYge,GAAG,EAAE;UACvB,QAAQhe,IAAI,CAACie,GAAG;YACd,KAAK,GAAG;cACN8I,KAAK,CAACi8T,IAAI,GAAG,IAAI;cACjB;YACF,KAAK,GAAG;cACNj8T,KAAK,CAACk8T,YAAY,GAAG,IAAI;cACzB;UACJ;QACF;QAGA,IACE,CAACzzU,MAAM,CAACC,SAAS,CAACsX,KAAK,CAACvB,MAAM,CAAC,IAC\u002FB,CAAChW,MAAM,CAACC,SAAS,CAACsX,KAAK,CAACpG,GAAG,CAAC,IAC5B,EAAEoG,KAAK,CAACi8T,IAAI,IAAIj8T,KAAK,CAACk8T,YAAY,CAAC,EACnC;UACA,MAAM,IAAItwU,WAAW,CAClB,qCAAoCkF,KAAM,KAAIoa,KAAM,EACvD,CAAC;QACH;QAIA,IAAI5e,CAAC,KAAK,CAAC,IAAI0T,KAAK,CAACi8T,IAAI,IAAInrU,KAAK,KAAK,CAAC,EAAE;UACxCA,KAAK,GAAG,CAAC;QACX;QAEA,IAAI,CAAC,IAAI,CAACwI,OAAO,CAAChN,CAAC,GAAGwE,KAAK,CAAC,EAAE;UAC5B,IAAI,CAACwI,OAAO,CAAChN,CAAC,GAAGwE,KAAK,CAAC,GAAGkP,KAAK;QACjC;MACF;MAEA07T,UAAU,CAACC,QAAQ,GAAG,CAAC;MACvBD,UAAU,CAACE,SAAS,GAAGh2T,MAAM,CAAChK,GAAG;MACjC8\u002FT,UAAU,CAACG,UAAU,GAAGvjR,MAAM,CAACjG,IAAI;MACnCqpR,UAAU,CAACI,UAAU,GAAGxjR,MAAM,CAAC\u002FF,IAAI;MACnC,OAAOmpR,UAAU,CAACM,aAAa;MAC\u002FB,OAAON,UAAU,CAACnzG,UAAU;IAC9B;IAGA,IAAI,IAAI,CAACjvN,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAACA,OAAO,CAAC,CAAC,CAAC,CAAC2iU,IAAI,EAAE;MAC5C,MAAM,IAAIrwU,WAAW,CAAC,6CAA6C,CAAC;IACtE;IACA,OAAOvB,GAAG;EACZ;EAEA8xU,iBAAiBA,CAACv2T,MAAM,EAAE;IACxB,IAAI,EAAE,aAAa,IAAI,IAAI,CAAC,EAAE;MAG5B,MAAMw2T,gBAAgB,GAAGx2T,MAAM,CAACvM,IAAI;MACpC,MAAMgjU,UAAU,GAAGD,gBAAgB,CAAC7mU,GAAG,CAAC,GAAG,CAAC;MAC5C,IAAImT,KAAK,GAAG0zT,gBAAgB,CAAC7mU,GAAG,CAAC,OAAO,CAAC;MACzC,IAAI,CAACmT,KAAK,EAAE;QACVA,KAAK,GAAG,CAAC,CAAC,EAAE0zT,gBAAgB,CAAC7mU,GAAG,CAAC,MAAM,CAAC,CAAC;MAC3C;MAEA,IAAI,CAAC+mU,WAAW,GAAG;QACjBC,WAAW,EAAE7zT,KAAK;QAClB2zT,UAAU;QACVV,QAAQ,EAAE,CAAC;QACXC,SAAS,EAAEh2T,MAAM,CAAChK;MACpB,CAAC;IACH;IACA,IAAI,CAAC4gU,cAAc,CAAC52T,MAAM,CAAC;IAC3B,OAAO,IAAI,CAAC02T,WAAW;IAEvB,OAAO12T,MAAM,CAACvM,IAAI;EACpB;EAEAmjU,cAAcA,CAAC52T,MAAM,EAAE;IACrB,MAAM02T,WAAW,GAAG,IAAI,CAACA,WAAW;IACpC12T,MAAM,CAAChK,GAAG,GAAG0gU,WAAW,CAACV,SAAS;IAElC,MAAM,CAACa,cAAc,EAAEC,gBAAgB,EAAEC,oBAAoB,CAAC,GAC5DL,WAAW,CAACD,UAAU;IAExB,MAAME,WAAW,GAAGD,WAAW,CAACC,WAAW;IAC3C,OAAOA,WAAW,CAACxyU,MAAM,GAAG,CAAC,EAAE;MAC7B,MAAM,CAAC+G,KAAK,EAAEhC,CAAC,CAAC,GAAGytU,WAAW;MAE9B,IAAI,CAAC9zU,MAAM,CAACC,SAAS,CAACoI,KAAK,CAAC,IAAI,CAACrI,MAAM,CAACC,SAAS,CAACoG,CAAC,CAAC,EAAE;QACpD,MAAM,IAAIlD,WAAW,CAAE,8BAA6BkF,KAAM,KAAIhC,CAAE,EAAC,CAAC;MACpE;MACA,IACE,CAACrG,MAAM,CAACC,SAAS,CAAC+zU,cAAc,CAAC,IACjC,CAACh0U,MAAM,CAACC,SAAS,CAACg0U,gBAAgB,CAAC,IACnC,CAACj0U,MAAM,CAACC,SAAS,CAACi0U,oBAAoB,CAAC,EACvC;QACA,MAAM,IAAI\u002FwU,WAAW,CAClB,qCAAoCkF,KAAM,KAAIhC,CAAE,EACnD,CAAC;MACH;MACA,KAAK,IAAIxC,CAAC,GAAGgwU,WAAW,CAACX,QAAQ,EAAErvU,CAAC,GAAGwC,CAAC,EAAE,EAAExC,CAAC,EAAE;QAC7CgwU,WAAW,CAACX,QAAQ,GAAGrvU,CAAC;QACxBgwU,WAAW,CAACV,SAAS,GAAGh2T,MAAM,CAAChK,GAAG;QAElC,IAAI3iB,IAAI,GAAG,CAAC;UACVwlB,MAAM,GAAG,CAAC;UACVm+T,UAAU,GAAG,CAAC;QAChB,KAAK,IAAIpyT,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGiyT,cAAc,EAAE,EAAEjyT,CAAC,EAAE;UACvC,MAAMqyT,QAAQ,GAAGj3T,MAAM,CAACpK,OAAO,CAAC,CAAC;UACjC,IAAIqhU,QAAQ,KAAK,CAAC,CAAC,EAAE;YACnB,MAAM,IAAIjxU,WAAW,CAAC,iCAAiC,CAAC;UAC1D;UACA3S,IAAI,GAAIA,IAAI,IAAI,CAAC,GAAI4jV,QAAQ;QAC\u002FB;QAEA,IAAIJ,cAAc,KAAK,CAAC,EAAE;UACxBxjV,IAAI,GAAG,CAAC;QACV;QACA,KAAK,IAAIuxB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGkyT,gBAAgB,EAAE,EAAElyT,CAAC,EAAE;UACzC,MAAMsyT,UAAU,GAAGl3T,MAAM,CAACpK,OAAO,CAAC,CAAC;UACnC,IAAIshU,UAAU,KAAK,CAAC,CAAC,EAAE;YACrB,MAAM,IAAIlxU,WAAW,CAAC,mCAAmC,CAAC;UAC5D;UACA6S,MAAM,GAAIA,MAAM,IAAI,CAAC,GAAIq+T,UAAU;QACrC;QACA,KAAK,IAAItyT,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGmyT,oBAAoB,EAAE,EAAEnyT,CAAC,EAAE;UAC7C,MAAMuyT,cAAc,GAAGn3T,MAAM,CAACpK,OAAO,CAAC,CAAC;UACvC,IAAIuhU,cAAc,KAAK,CAAC,CAAC,EAAE;YACzB,MAAM,IAAInxU,WAAW,CAAC,uCAAuC,CAAC;UAChE;UACAgxU,UAAU,GAAIA,UAAU,IAAI,CAAC,GAAIG,cAAc;QACjD;QACA,MAAM\u002F8T,KAAK,GAAG,CAAC,CAAC;QAChBA,KAAK,CAACvB,MAAM,GAAGA,MAAM;QACrBuB,KAAK,CAACpG,GAAG,GAAGgjU,UAAU;QACtB,QAAQ3jV,IAAI;UACV,KAAK,CAAC;YACJ+mB,KAAK,CAACi8T,IAAI,GAAG,IAAI;YACjB;UACF,KAAK,CAAC;YACJj8T,KAAK,CAACk8T,YAAY,GAAG,IAAI;YACzB;UACF,KAAK,CAAC;YACJ;UACF;YACE,MAAM,IAAItwU,WAAW,CAAE,4BAA2B3S,IAAK,EAAC,CAAC;QAC7D;QACA,IAAI,CAAC,IAAI,CAACqgB,OAAO,CAACxI,KAAK,GAAGxE,CAAC,CAAC,EAAE;UAC5B,IAAI,CAACgN,OAAO,CAACxI,KAAK,GAAGxE,CAAC,CAAC,GAAG0T,KAAK;QACjC;MACF;MAEAs8T,WAAW,CAACX,QAAQ,GAAG,CAAC;MACxBW,WAAW,CAACV,SAAS,GAAGh2T,MAAM,CAAChK,GAAG;MAClC2gU,WAAW,CAAC\u002FkH,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1B;EACF;EAEAgkH,YAAYA,CAAA,EAAG;IAGb,MAAMwB,GAAG,GAAG,GAAG;MACbhqR,EAAE,GAAG,GAAG;MACRC,EAAE,GAAG,GAAG;MACRF,KAAK,GAAG,IAAI;IACd,MAAMkqR,OAAO,GAAG,IAAI;MAClBC,EAAE,GAAG,IAAI;IAEX,SAASC,SAASA,CAACz\u002FT,IAAI,EAAEe,MAAM,EAAE;MAC\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\u002FM,KAAK,CAAC,EAAG;QACtC,MAAMv\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\u002FV,IAAI,GAAG+V,SAAS,GAAG\u002FV,IAAI,CAAC0B,KAC\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\u002FB\u002FlF,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBC,gBAAgB,EAAE,IAAI,CAACA,gBAAgB;MACvCC,qBAAqB,EAAE,IAAI,CAACA,qBAAqB;MACjDC,gBAAgB,EAAE,IAAI,CAACA,gBAAgB;MACvCnQ,eAAe,EAAE,IAAI,CAACA,eAAe;MACrC\u002F\u002FO,OAAO,EAAE,IAAI,CAAC80P;IAChB,CAAC,CAAC;IAEF,MAAM2hF,kBAAkB,GAAG,IAAIzlU,WAAW,CAAC,CAAC;IAC5C,MAAM0lU,mBAAmB,GAAG,IAAInmU,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,CAACgmU,cAAc,CAACh9T,WAAW,EAAEk9T,kBAAkB,EAAEC,mBAAmB,CAAC;IAE1E,MAAMt2D,QAAQ,GAAG,IAAI,CAACA,QAAQ;IAC9B,MAAMw2D,gBAAgB,GAAG,IAAI,CAACr9T,WAAW,CAAC0xC,MAAM,CAC9C\u002FjD,CAAC,IAAI,EAAEA,CAAC,YAAYoH,GAAG,IAAImoU,kBAAkB,CAACxnU,GAAG,CAAC\u002FH,CAAC,CAAC,CACtD,CAAC;IACD,MAAMs8O,OAAO,GAAG,MAAMs4E,iBAAiB,CAACwC,kBAAkB,CACxDqY,gBAAgB,EAChBjlF,IAAI,EACJn4O,WAAW,EACX6kT,aACF,CAAC;IAED,KAAK,MAAM;MAAEhuT;IAAI,CAAC,IAAIozO,OAAO,CAACjqO,WAAW,EAAE;MAEzC,IAAInJ,GAAG,YAAY9B,GAAG,IAAI,CAACooU,mBAAmB,CAACznU,GAAG,CAACmB,GAAG,CAAC,EAAE;QACvDwmU,gBAAgB,CAAC1zU,IAAI,CAACkN,GAAG,CAAC;MAC5B;IACF;IAEA,MAAMymU,SAAS,GAAGz2D,QAAQ,CAACv0Q,GAAG,CAAC,QAAQ,CAAC;IACxCu0Q,QAAQ,CAACpxQ,GAAG,CAAC,QAAQ,EAAE4nU,gBAAgB,CAAC;IACxC,MAAMzyU,MAAM,GAAG,EAAE;IACjB,MAAMy1Q,WAAW,CAAC,IAAI,CAACxpQ,GAAG,EAAEgwQ,QAAQ,EAAEj8Q,MAAM,EAAE,IAAI,CAACwJ,IAAI,CAAC;IACxD,IAAIkpU,SAAS,EAAE;MACbz2D,QAAQ,CAACpxQ,GAAG,CAAC,QAAQ,EAAE6nU,SAAS,CAAC;IACnC;IAEA,MAAMj8Q,OAAO,GAAG4oL,OAAO,CAACmG,YAAY;IACpC\u002FuL,OAAO,CAAC13D,IAAI,CACV;MAAEkN,GAAG,EAAE,IAAI,CAACA,GAAG;MAAE4D,IAAI,EAAE7P,MAAM,CAAChB,IAAI,CAAC,EAAE;IAAE,CAAC,EACxC,GAAGqgP,OAAO,CAACjqO,WACb,CAAC;IACD,KAAK,MAAMu9T,UAAU,IAAIL,kBAAkB,EAAE;MAC3C77Q,OAAO,CAAC13D,IAAI,CAAC;QAAEkN,GAAG,EAAE0mU,UAAU;QAAE9iU,IAAI,EAAE;MAAK,CAAC,CAAC;IAC\u002FC;IAEA,OAAO4mD,OAAO;EAChB;EAEAlhE,IAAIA,CAACo2P,OAAO,EAAE4B,IAAI,EAAEr4O,iBAAiB,EAAE;IACrC,MAAMs9T,gBAAgB,GAAG,IAAI9mF,gBAAgB,CAAC;MAC5CliP,IAAI,EAAE,IAAI,CAACA,IAAI;MACfmiP,OAAO;MACPt2O,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBwmO,SAAS,EAAE,IAAI,CAAC81F,eAAe;MAC\u002FB\u002FlF,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBC,gBAAgB,EAAE,IAAI,CAACA,gBAAgB;MACvCC,qBAAqB,EAAE,IAAI,CAACA,qBAAqB;MACjDC,gBAAgB,EAAE,IAAI,CAACA,gBAAgB;MACvCnQ,eAAe,EAAE,IAAI,CAACA,eAAe;MACrC\u002F\u002FO,OAAO,EAAE,IAAI,CAAC80P;IAChB,CAAC,CAAC;IAIF,OAAO,IAAI,CAACiiF,kBAAkB,CAACr5T,IAAI,CAAC,UAAUnE,WAAW,EAAE;MACzD,MAAMy9T,eAAe,GAAG,EAAE;MAC1B,KAAK,MAAMxY,UAAU,IAAIjlT,WAAW,EAAE;QACpC,IAAI,CAACilT,UAAU,CAACoD,aAAa,CAACvoT,iBAAiB,CAAC,EAAE;UAChD;QACF;QACA29T,eAAe,CAAC9zU,IAAI,CAClBs7T,UAAU,CACP9kU,IAAI,CAACi9U,gBAAgB,EAAEjlF,IAAI,EAAEr4O,iBAAiB,CAAC,CAC\u002FCmF,KAAK,CAAC,UAAUC,MAAM,EAAE;UACvBnf,IAAI,CACF,yCAAyC,GACtC,IAAGoyP,IAAI,CAACnwP,IAAK,YAAWkd,MAAO,IACpC,CAAC;UACD,OAAO,IAAI;QACb,CAAC,CACL,CAAC;MACH;MAEA,OAAO9B,OAAO,CAAC27O,GAAG,CAAC0+E,eAAe,CAAC,CAACt5T,IAAI,CAAC,UAAU29P,OAAO,EAAE;QAC1D,OAAOA,OAAO,CAACpwN,MAAM,CAACiyN,MAAM,IAAI,CAAC,CAACA,MAAM,CAAC;MAC3C,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ;EAEAkmD,aAAaA,CAAC1\u002FT,IAAI,EAAE;IAElB,IAAI,CAACkyU,gBAAgB,KAAK,IAAI,CAAC12D,UAAU,CAACo9C,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC;IAEnE,OAAO,IAAI,CAACsZ,gBAAgB,CAACl4T,IAAI,CAAC,MAAM;MACtC,MAAM2lT,YAAY,GAAG,IAAI92C,YAAY,CAAC,IAAI,CAAC9oQ,SAAS,EAAE\u002Ff,IAAI,EAAE,IAAI,CAACiK,IAAI,CAAC;MACtE,OAAO01T,YAAY,CAAC52C,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC;EACJ;EAEAr6B,eAAeA,CAAC;IACdtC,OAAO;IACP4J,IAAI;IACJhI,IAAI;IACJnI,MAAM;IACNzmO,QAAQ;IACRzJ,iBAAiB,GAAG;EACtB,CAAC,EAAE;IACD,MAAM49T,oBAAoB,GAAG,IAAI,CAACX,gBAAgB,CAAC,CAAC;IACpD,MAAMV,gBAAgB,GAAG,IAAI,CAACxS,aAAa,CAAC,CAC1C,YAAY,EACZ,WAAW,EACX,MAAM,EACN,SAAS,EACT,YAAY,EACZ,SAAS,EACT,SAAS,CACV,CAAC;IAEF,MAAMuT,gBAAgB,GAAG,IAAI9mF,gBAAgB,CAAC;MAC5CliP,IAAI,EAAE,IAAI,CAACA,IAAI;MACfmiP,OAAO;MACPt2O,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBwmO,SAAS,EAAE,IAAI,CAAC81F,eAAe;MAC\u002FB\u002FlF,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBC,gBAAgB,EAAE,IAAI,CAACA,gBAAgB;MACvCC,qBAAqB,EAAE,IAAI,CAACA,qBAAqB;MACjDC,gBAAgB,EAAE,IAAI,CAACA,gBAAgB;MACvCnQ,eAAe,EAAE,IAAI,CAACA,eAAe;MACrC\u002F\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\u002FH,CAAC,CAACkJ,GAAG,CAAC,CAC\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\u002F1R,IAAI,CAAC,GAAG,MAAM\u002FkC,OAAO,CAAC27O,GAAG,CAAC,CAChD2+E,oBAAoB,EACpBrB,gBAAgB,EAChBuC,WAAW,CACZ,CAAC;IACF,MAAMxB,gBAAgB,GAAG,IAAI9mF,gBAAgB,CAAC;MAC5CliP,IAAI,EAAE,IAAI,CAACA,IAAI;MACfmiP,OAAO;MACPt2O,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBwmO,SAAS,EAAE,IAAI,CAAC81F,eAAe;MAC\u002FB\u002FlF,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBC,gBAAgB,EAAE,IAAI,CAACA,gBAAgB;MACvCC,qBAAqB,EAAE,IAAI,CAACA,qBAAqB;MACjDC,gBAAgB,EAAE,IAAI,CAACA,gBAAgB;MACvCnQ,eAAe,EAAE,IAAI,CAACA,eAAe;MACrC\u002F\u002FO,OAAO,EAAE,IAAI,CAAC80P;IAChB,CAAC,CAAC;IAEF,OAAO6hF,gBAAgB,CAACn9E,cAAc,CAAC;MACrCt9O,MAAM,EAAEu7T,aAAa;MACrB\u002FlF,IAAI;MACJjuO,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBg2O,oBAAoB;MACpBK,oBAAoB;MACpBJ,IAAI;MACJE,OAAO,EAAE,IAAI,CAAClW,IAAI;MAClBhiM;IACF,CAAC,CAAC;EACJ;EAEA,MAAM02R,aAAaA,CAAA,EAAG;IACpB,MAAMv4D,cAAc,GAClB,MAAM,IAAI,CAACX,UAAU,CAAC88C,aAAa,CAAC,gBAAgB,CAAC;IACvD,IAAI,CAACn8C,cAAc,EAAE;MACnB,OAAO,IAAI;IACb;IAEA,MAAM,IAAI,CAACk3D,kBAAkB;IAE7B,MAAMnyD,UAAU,GAAG,MAAM,IAAI,CAAC1F,UAAU,CAACo9C,MAAM,CAAC,IAAI,EAAE,kBAAkB,EAAE,CACxEz8C,cAAc,CACf,CAAC;IACF,OAAO+E,UAAU,CAAClZ,YAAY;EAChC;EAKA2sE,gBAAgBA,CAACx4D,cAAc,EAAE;IAC\u002FB,MAAM1vO,IAAI,GAAG,IAAI2yO,cAAc,CAACjD,cAAc,EAAE,IAAI,CAACO,QAAQ,CAAC;IAC9DjwO,IAAI,CAACvsB,KAAK,CAAC,IAAI,CAACxT,GAAG,CAAC;IACpB,OAAO+\u002FB,IAAI;EACb;EAEA,MAAMmoS,kBAAkBA,CAACxoF,OAAO,EAAE4B,IAAI,EAAEnI,MAAM,EAAE;IAC9C,MAAMhwO,WAAW,GAAG,MAAM,IAAI,CAACw9T,kBAAkB;IACjD,IAAIx9T,WAAW,CAAClZ,MAAM,KAAK,CAAC,EAAE;MAC5B,OAAOkZ,WAAW;IACpB;IAEA,MAAMg\u002FT,eAAe,GAAG,EAAE;MACxBC,mBAAmB,GAAG,EAAE;IAC1B,IAAI7B,gBAAgB;IAEpB,MAAMmB,SAAS,GAAG,CAAC,EAAEvuF,MAAM,GAAGz5P,mBAAmB,CAACC,GAAG,CAAC;MACpDgoV,aAAa,GAAG,CAAC,EAAExuF,MAAM,GAAGz5P,mBAAmB,CAACE,OAAO,CAAC;MACxDgoV,WAAW,GAAG,CAAC,EAAEzuF,MAAM,GAAGz5P,mBAAmB,CAACG,KAAK,CAAC;IAEtD,KAAK,MAAMuuU,UAAU,IAAIjlT,WAAW,EAAE;MAGpC,MAAMk\u002FT,SAAS,GAAGX,SAAS,IAAKC,aAAa,IAAIvZ,UAAU,CAACmD,QAAS;MACrE,IAAI8W,SAAS,IAAKT,WAAW,IAAIxZ,UAAU,CAACsD,SAAU,EAAE;QACtDyW,eAAe,CAACr1U,IAAI,CAACs7T,UAAU,CAACxqT,IAAI,CAAC;MACvC;MAEA,IAAIwqT,UAAU,CAACmF,cAAc,IAAI8U,SAAS,EAAE;QAC1C9B,gBAAgB,KAAK,IAAI9mF,gBAAgB,CAAC;UACxCliP,IAAI,EAAE,IAAI,CAACA,IAAI;UACfmiP,OAAO;UACPt2O,SAAS,EAAE,IAAI,CAACA,SAAS;UACzBwmO,SAAS,EAAE,IAAI,CAAC81F,eAAe;UAC\u002FB\u002FlF,SAAS,EAAE,IAAI,CAACA,SAAS;UACzBC,gBAAgB,EAAE,IAAI,CAACA,gBAAgB;UACvCC,qBAAqB,EAAE,IAAI,CAACA,qBAAqB;UACjDC,gBAAgB,EAAE,IAAI,CAACA,gBAAgB;UACvCnQ,eAAe,EAAE,IAAI,CAACA,eAAe;UACrC\u002F\u002FO,OAAO,EAAE,IAAI,CAAC80P;QAChB,CAAC,CAAC;QAEF0jF,mBAAmB,CAACt1U,IAAI,CACtBs7T,UAAU,CACPoF,kBAAkB,CAAC+S,gBAAgB,EAAEjlF,IAAI,EAAE,CAC1C,CAAC6E,QAAQ,EACT,CAACA,QAAQ,EACTA,QAAQ,EACRA,QAAQ,CACT,CAAC,CACD\u002F3O,KAAK,CAAC,UAAUC,MAAM,EAAE;UACvBnf,IAAI,CACD,qDAAoDoyP,IAAI,CAACnwP,IAAK,YAAWkd,MAAO,IACnF,CAAC;QACH,CAAC,CACL,CAAC;MACH;IACF;IAEA,MAAM9B,OAAO,CAAC27O,GAAG,CAACkgF,mBAAmB,CAAC;IACtC,OAAOD,eAAe;EACxB;EAEA,IAAIh\u002FT,WAAWA,CAAA,EAAG;IAChB,MAAMm\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\u002FvC,MAAM,CAAC\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\u002FC,IAAI,EAAEiV,SAAS,YAAY\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\u002FBC,WAAW,EAAE+9Q,QAAQ,CAAC\u002F9Q;QACxB,CACF,CAAC,CACAkG,KAAK,CAAC,UAAUC,MAAM,EAAE;UACvBnf,IAAI,CAAE,kBAAiBmf,MAAO,IAAG,CAAC;UAClC,OAAO,IAAI;QACb,CAAC,CACL,CAAC;MACH;IACF;IAEA,MAAM9B,OAAO,CAAC27O,GAAG,CAACimE,QAAQ,CAAC;IAC3B,IAAI,CAACoX,UAAU,CAACpa,WAAW,CAACtnC,QAAQ,EAAEG,kBAAkB,CAAC;EAC3D;EAEA,MAAMymD,gBAAgBA,CAACxhU,iBAAiB,EAAE;IACxC,OAAO,IAAI,CAACs8T,UAAU,GAClB,IAAI,CAACA,UAAU,CAACla,aAAa,CAACpiT,iBAAiB,CAAC,GAChD,IAAI;EACV;EAMA,IAAIq8B,OAAOA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC+pO,OAAO,CAAC\u002FpO,OAAO,IAAI,IAAI,CAAC8jS,QAAQ;EAC9C;EAEA,IAAIc,QAAQA,CAAA,EAAG;IACb,MAAMA,QAAQ,GAAG;MACfQ,SAAS,EAAE,KAAK;MAChBP,WAAW,EAAE,KAAK;MAClB3+D,MAAM,EAAE,KAAK;MACbm\u002FD,aAAa,EAAE;IACjB,CAAC;IACD,MAAMr\u002FD,QAAQ,GAAG,IAAI,CAAC+D,OAAO,CAAC\u002FD,QAAQ;IACtC,IAAI,CAACA,QAAQ,EAAE;MACb,OAAOh7Q,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE45U,QAAQ,CAAC;IAC3C;IAEA,IAAI;MACF,MAAMxnH,MAAM,GAAG4oD,QAAQ,CAAC7vQ,GAAG,CAAC,QAAQ,CAAC;MACrC,MAAMivU,SAAS,GAAG51U,KAAK,CAACyJ,OAAO,CAACmkN,MAAM,CAAC,IAAIA,MAAM,CAACzyN,MAAM,GAAG,CAAC;MAC5Di6U,QAAQ,CAACQ,SAAS,GAAGA,SAAS;MAI9B,MAAMv\u002FD,GAAG,GAAGG,QAAQ,CAAC7vQ,GAAG,CAAC,KAAK,CAAC;MAC\u002FByuU,QAAQ,CAAC1+D,MAAM,GACZ12Q,KAAK,CAACyJ,OAAO,CAAC4sQ,GAAG,CAAC,IAAIA,GAAG,CAACl7Q,MAAM,GAAG,CAAC,IACpCk7Q,GAAG,YAAY5pQ,UAAU,IAAI,CAAC4pQ,GAAG,CAAC3pQ,OAAQ;MAS7C,MAAMopU,QAAQ,GAAGt\u002FD,QAAQ,CAAC7vQ,GAAG,CAAC,UAAU,CAAC;MACzC,MAAMkvU,aAAa,GAAG,CAAC,EAAEC,QAAQ,GAAG,GAAG,CAAC;MACxC,MAAMC,yBAAyB,GAC7BF,aAAa,IAAI,IAAI,CAAChB,0BAA0B,CAACjnH,MAAM,CAAC;MAC1DwnH,QAAQ,CAACC,WAAW,GAAGO,SAAS,IAAI,CAACG,yBAAyB;MAC9DX,QAAQ,CAACS,aAAa,GAAGA,aAAa;IACxC,CAAC,CAAC,OAAO7wU,EAAE,EAAE;MACX,IAAIA,EAAE,YAAYsJ,oBAAoB,EAAE;QACtC,MAAMtJ,EAAE;MACV;MACA5K,IAAI,CAAE,mCAAkC4K,EAAG,IAAG,CAAC;IACjD;IACA,OAAOxJ,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE45U,QAAQ,CAAC;EAC3C;EAEA,IAAIY,YAAYA,CAAA,EAAG;IACjB,MAAMC,OAAO,GAAG;MACdC,gBAAgB,EAAE,IAAI,CAAC1lS,OAAO;MAC9B2lS,QAAQ,EAAE,IAAI,CAAC57D,OAAO,CAAC\u002F9N,IAAI;MAC3B45R,iBAAiB,EAAE,IAAI,CAAC3tU,IAAI,CAACwjQ,OAAO,GAChC,IAAI,CAACxjQ,IAAI,CAACwjQ,OAAO,CAAChmN,UAAU,GAC5B,IAAI;MACRowR,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC5B,aAAa;MAClC6B,iBAAiB,EAAE,IAAI,CAAClB,QAAQ,CAACC,WAAW;MAC5CkB,YAAY,EAAE,IAAI,CAACnB,QAAQ,CAAC1+D,MAAM;MAClC8\u002FD,mBAAmB,EAAE,CAAC,CAAC,IAAI,CAACj8D,OAAO,CAAC2E,UAAU;MAC9Cu3D,mBAAmB,EAAE,IAAI,CAACrB,QAAQ,CAACS;IACrC,CAAC;IAED,IAAIa,QAAQ;IACZ,IAAI;MACFA,QAAQ,GAAG,IAAI,CAACjuU,IAAI,CAACq4Q,OAAO,CAACn6Q,GAAG,CAAC,MAAM,CAAC;IAC1C,CAAC,CAAC,OAAO6T,GAAG,EAAE;MACZ,IAAIA,GAAG,YAAYlM,oBAAoB,EAAE;QACvC,MAAMkM,GAAG;MACX;MACAxgB,IAAI,CAAC,iDAAiD,CAAC;IACzD;IACA,IAAI,EAAE08U,QAAQ,YAAYluU,IAAI,CAAC,EAAE;MAC\u002FB,OAAOhN,MAAM,CAAC,IAAI,EAAE,cAAc,EAAEy6U,OAAO,CAAC;IAC9C;IAEA,KAAK,MAAMr3U,GAAG,IAAI83U,QAAQ,CAAC\u002FsU,OAAO,CAAC,CAAC,EAAE;MACpC,MAAMhO,KAAK,GAAG+6U,QAAQ,CAAC\u002FvU,GAAG,CAAC\u002FH,GAAG,CAAC;MAE\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\u002FB,OAAO,CAAC1\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\u002FB,OAAO,CAAC1\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\u002FT,YAAYA,CAAA,EAAG;IACjB,MAAMr\u002FT,OAAO,GAAG,IAAI,CAACmhQ,UAAU,CAAC+8C,SAAS,CAAC,oBAAoB,CAAC;IAC\u002FD,OAAOv7T,MAAM,CAAC,IAAI,EAAE,cAAc,EAAEqd,OAAO,CAAC;EAC9C;EAKA,MAAMs\u002FT,kBAAkBA,CAAA,EAAG;IACzB,MAAM,CAACC,gBAAgB,EAAEN,YAAY,CAAC,GAAG,MAAMrgU,OAAO,CAAC27O,GAAG,CAAC,CACzD,IAAI,CAAC4mB,UAAU,CAAC88C,aAAa,CAAC,WAAW,CAAC,EAC1C,IAAI,CAAC98C,UAAU,CAAC+8C,SAAS,CAAC,cAAc,CAAC,CAC1C,CAAC;IAEF,IAAIqhB,gBAAgB,EAAE;MACpB,OAAO,IAAI;IACb;IACA,IAAIN,YAAY,EAAE;MAChB,OAAOj8U,MAAM,CAACgO,MAAM,CAACiuU,YAAY,CAAC,CAAC3jD,IAAI,CAACkkD,WAAW,IACjDA,WAAW,CAAClkD,IAAI,CAACliC,MAAM,IAAIA,MAAM,CAACtgP,OAAO,KAAK,IAAI,CACpD,CAAC;IACH;IACA,OAAO,KAAK;EACd;EAEA,IAAI2mU,mBAAmBA,CAAA,EAAG;IACxB,MAAM9hE,QAAQ,GAAG,IAAI,CAAC+D,OAAO,CAAC\u002FD,QAAQ;IACtC,IAAI,CAACA,QAAQ,EAAEzsQ,GAAG,CAAC,IAAI,CAAC,EAAE;MACxB,OAAOvO,MAAM,CAAC,IAAI,EAAE,qBAAqB,EAAE,IAAI,CAAC;IAClD;IAEA,MAAM+8U,gBAAgB,GAAG\u002FhE,QAAQ,CAAC7vQ,GAAG,CAAC,IAAI,CAAC;IAC3C,IAAI,CAAC3G,KAAK,CAACyJ,OAAO,CAAC8uU,gBAAgB,CAAC,IAAIA,gBAAgB,CAACp9U,MAAM,KAAK,CAAC,EAAE;MACrE,OAAOK,MAAM,CAAC,IAAI,EAAE,qBAAqB,EAAE,IAAI,CAAC;IAClD;IAEA,MAAMiiN,GAAG,GAAG,EAAE;IACd,KAAK,MAAMtqL,EAAE,IAAIolT,gBAAgB,EAAE;MACjC,IAAIplT,EAAE,YAAY\u002FpB,GAAG,EAAE;QACrBq0M,GAAG,CAACz\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\u002FB,OAAOA,KAAK,CAAC6B,KAAK,CAAC\u002FB,GAAG,EAAEqb,IAAI,CAAC;IAC\u002FB;IACA,OAAOnb,KAAK;EACd;EAEA8d,YAAYA,CAAChM,KAAK,EAAEC,GAAG,EAAE;IACvB,OAAO+J,OAAO,CAACS,OAAO,CAAC,CAAC;EAC1B;EAEA6gU,mBAAmBA,CAACpgU,OAAO,GAAG,KAAK,EAAE;IACnC,OAAO,IAAI,CAACygU,oBAAoB;EAClC;EAEAF,SAASA,CAAC3\u002FT,MAAM,EAAE,CAAC;AACrB;AAEA,MAAM8\u002FT,iBAAiB,SAASZ,cAAc,CAAC;EAC7Cn8U,WAAWA,CAACwa,IAAI,EAAE;IAChB,KAAK,CAACA,IAAI,CAAC;IAEX,IAAI,CAACwiU,aAAa,GAAG,IAAI1iU,oBAAoB,CAACE,IAAI,CAAC8V,MAAM,EAAE;MACzD1V,UAAU,EAAEJ,IAAI,CAAC8zO,OAAO;MACxBzvP,MAAM,EAAE2b,IAAI,CAAC3b,MAAM;MACnB8b,gBAAgB,EAAEH,IAAI,CAACG,gBAAgB;MACvCF,cAAc,EAAED,IAAI,CAACC;IACvB,CAAC,CAAC;IACF,IAAI,CAAC8hU,WAAW,GAAG,IAAIzE,WAAW,CAAC,IAAI,EAAE,IAAI,CAACkF,aAAa,CAAC9\u002FT,SAAS,CAAC,CAAC,CAAC;EAC1E;EAEA,MAAM49S,MAAMA,CAAC37T,GAAG,EAAEC,IAAI,EAAEob,IAAI,EAAE;IAC5B,IAAI;MACF,MAAMnb,KAAK,GAAGF,GAAG,CAACC,IAAI,CAAC;MACvB,IAAI,OAAOC,KAAK,KAAK,UAAU,EAAE;QAC\u002FB,OAAOA,KAAK,CAAC6B,KAAK,CAAC\u002FB,GAAG,EAAEqb,IAAI,CAAC;MAC\u002FB;MACA,OAAOnb,KAAK;IACd,CAAC,CAAC,OAAOqJ,EAAE,EAAE;MACX,IAAI,EAAEA,EAAE,YAAYsJ,oBAAoB,CAAC,EAAE;QACzC,MAAMtJ,EAAE;MACV;MACA,MAAM,IAAI,CAACyU,YAAY,CAACzU,EAAE,CAACyI,KAAK,EAAEzI,EAAE,CAAC0I,GAAG,CAAC;MACzC,OAAO,IAAI,CAAC0pT,MAAM,CAAC37T,GAAG,EAAEC,IAAI,EAAEob,IAAI,CAAC;IACrC;EACF;EAEA2C,YAAYA,CAAChM,KAAK,EAAEC,GAAG,EAAE;IACvB,OAAO,IAAI,CAAC4rU,aAAa,CAAC7\u002FT,YAAY,CAAChM,KAAK,EAAEC,GAAG,CAAC;EACpD;EAEAqrU,mBAAmBA,CAACpgU,OAAO,GAAG,KAAK,EAAE;IACnC,OAAO,IAAI,CAAC2gU,aAAa,CAAC5gU,gBAAgB,CAACC,OAAO,CAAC;EACrD;EAEAqgU,mBAAmBA,CAACl7U,KAAK,EAAE;IACzB,IAAI,CAACw7U,aAAa,CAACvjU,aAAa,CAAC;MAAEjY;IAAM,CAAC,CAAC;EAC7C;EAEAo7U,SAASA,CAAC3\u002FT,MAAM,EAAE;IAChB,IAAI,CAAC+\u002FT,aAAa,CAAC7+T,KAAK,CAAClB,MAAM,CAAC;EAClC;AACF;;;ACpLmB;AAEnB,MAAMggU,YAAY,GAAG;EACnBC,OAAO,EAAE,CAAC;EACVC,IAAI,EAAE,CAAC;EACPp8C,KAAK,EAAE;AACT,CAAC;AAED,MAAMq8C,UAAU,GAAG;EACjBF,OAAO,EAAE,CAAC;EACVG,MAAM,EAAE,CAAC;EACTC,eAAe,EAAE,CAAC;EAClBC,KAAK,EAAE,CAAC;EACRC,OAAO,EAAE,CAAC;EACVz8C,KAAK,EAAE,CAAC;EACR08C,IAAI,EAAE,CAAC;EACPC,aAAa,EAAE,CAAC;EAChBC,cAAc,EAAE;AAClB,CAAC;AAED,SAASC,UAAUA,CAAC3gU,MAAM,EAAE;EAC1B,IACE,EACEA,MAAM,YAAYjf,KAAK,IACtB,OAAOif,MAAM,KAAK,QAAQ,IAAIA,MAAM,KAAK,IAAK,CAChD,EACD;IACAlf,WAAW,CACT,gEACF,CAAC;EACH;EACA,QAAQkf,MAAM,CAACld,IAAI;IACjB,KAAK,gBAAgB;MACnB,OAAO,IAAIY,cAAc,CAACsc,MAAM,CAACnd,OAAO,CAAC;IAC3C,KAAK,qBAAqB;MACxB,OAAO,IAAIS,mBAAmB,CAAC0c,MAAM,CAACnd,OAAO,CAAC;IAChD,KAAK,mBAAmB;MACtB,OAAO,IAAII,iBAAiB,CAAC+c,MAAM,CAACnd,OAAO,EAAEmd,MAAM,CAAC9c,IAAI,CAAC;IAC3D,KAAK,6BAA6B;MAChC,OAAO,IAAIK,2BAA2B,CAACyc,MAAM,CAACnd,OAAO,EAAEmd,MAAM,CAACxc,MAAM,CAAC;IACvE,KAAK,uBAAuB;MAC1B,OAAO,IAAIL,qBAAqB,CAAC6c,MAAM,CAACnd,OAAO,EAAEmd,MAAM,CAAC5c,OAAO,CAAC;IAClE;MACE,OAAO,IAAID,qBAAqB,CAAC6c,MAAM,CAACnd,OAAO,EAAEmd,MAAM,CAACpZ,QAAQ,CAAC,CAAC,CAAC;EACvE;AACF;AAEA,MAAMg6U,cAAc,CAAC;EACnB79U,WAAWA,CAAC89U,UAAU,EAAEC,UAAU,EAAEC,MAAM,EAAE;IAC1C,IAAI,CAACF,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACC,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACC,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACC,UAAU,GAAG,CAAC;IACnB,IAAI,CAACC,QAAQ,GAAG,CAAC;IACjB,IAAI,CAACC,WAAW,GAAG5+U,MAAM,CAAC8C,MAAM,CAAC,IAAI,CAAC;IACtC,IAAI,CAAC+7U,iBAAiB,GAAG7+U,MAAM,CAAC8C,MAAM,CAAC,IAAI,CAAC;IAC5C,IAAI,CAACg8U,oBAAoB,GAAG9+U,MAAM,CAAC8C,MAAM,CAAC,IAAI,CAAC;IAC\u002FC,IAAI,CAACi8U,aAAa,GAAG\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\u002F0D,UAAU,CAAC,EAAE;MAClB,MAAM,IAAI\u002FrR,KAAK,CAAE,0CAAyC+rR,UAAW,GAAE,CAAC;IAC1E;IACA+0D,EAAE,CAAC\u002F0D,UAAU,CAAC,GAAGz7B,OAAO;EAC1B;EAQA1wO,IAAIA,CAACmsQ,UAAU,EAAEv3Q,IAAI,EAAEw2O,SAAS,EAAE;IAChC,IAAI,CAACg1F,MAAM,CAACW,WAAW,CACrB;MACEb,UAAU,EAAE,IAAI,CAACA,UAAU;MAC3BC,UAAU,EAAE,IAAI,CAACA,UAAU;MAC3BvoU,MAAM,EAAEu0Q,UAAU;MAClBv3Q;IACF,CAAC,EACDw2O,SACF,CAAC;EACH;EAUA6G,eAAeA,CAACk6B,UAAU,EAAEv3Q,IAAI,EAAEw2O,SAAS,EAAE;IAC3C,MAAMi1F,UAAU,GAAG,IAAI,CAACA,UAAU,EAAE;IACpC,MAAMvhU,UAAU,GAAGvB,OAAO,CAACC,aAAa,CAAC,CAAC;IAC1C,IAAI,CAACijU,oBAAoB,CAACJ,UAAU,CAAC,GAAGvhU,UAAU;IAClD,IAAI;MACF,IAAI,CAACshU,MAAM,CAACW,WAAW,CACrB;QACEb,UAAU,EAAE,IAAI,CAACA,UAAU;QAC3BC,UAAU,EAAE,IAAI,CAACA,UAAU;QAC3BvoU,MAAM,EAAEu0Q,UAAU;QAClBk0D,UAAU;QACVzrU;MACF,CAAC,EACDw2O,SACF,CAAC;IACH,CAAC,CAAC,OAAOtgP,EAAE,EAAE;MACXgU,UAAU,CAACb,MAAM,CAACnT,EAAE,CAAC;IACvB;IACA,OAAOgU,UAAU,CAACH,OAAO;EAC3B;EAYAwiU,cAAcA,CAACh1D,UAAU,EAAEv3Q,IAAI,EAAEwsU,gBAAgB,EAAEh2F,SAAS,EAAE;IAC5D,MAAMk1F,QAAQ,GAAG,IAAI,CAACA,QAAQ,EAAE;MAC9BJ,UAAU,GAAG,IAAI,CAACA,UAAU;MAC5BC,UAAU,GAAG,IAAI,CAACA,UAAU;MAC5BC,MAAM,GAAG,IAAI,CAACA,MAAM;IAEtB,OAAO,IAAIiB,cAAc,CACvB;MACEvtU,KAAK,EAAEwtU,UAAU,IAAI;QACnB,MAAMC,eAAe,GAAGhkU,OAAO,CAACC,aAAa,CAAC,CAAC;QAC\u002FC,IAAI,CAACgjU,iBAAiB,CAACF,QAAQ,CAAC,GAAG;UACjCgB,UAAU;UACVE,SAAS,EAAED,eAAe;UAC1BE,QAAQ,EAAE,IAAI;UACdC,UAAU,EAAE,IAAI;UAChB9yE,QAAQ,EAAE;QACZ,CAAC;QACDwxE,MAAM,CAACW,WAAW,CAChB;UACEb,UAAU;UACVC,UAAU;UACVvoU,MAAM,EAAEu0Q,UAAU;UAClBm0D,QAAQ;UACR1rU,IAAI;UACJyrP,WAAW,EAAEihF,UAAU,CAACjhF;QAC1B,CAAC,EACDjV,SACF,CAAC;QAED,OAAOm2F,eAAe,CAAC5iU,OAAO;MAChC,CAAC;MAEDgjU,IAAI,EAAEL,UAAU,IAAI;QAClB,MAAMM,cAAc,GAAGrkU,OAAO,CAACC,aAAa,CAAC,CAAC;QAC9C,IAAI,CAACgjU,iBAAiB,CAACF,QAAQ,CAAC,CAACmB,QAAQ,GAAGG,cAAc;QAC1DxB,MAAM,CAACW,WAAW,CAAC;UACjBb,UAAU;UACVC,UAAU;UACVrjU,MAAM,EAAE0iU,UAAU,CAACK,IAAI;UACvBS,QAAQ;UACRjgF,WAAW,EAAEihF,UAAU,CAACjhF;QAC1B,CAAC,CAAC;QAGF,OAAOuhF,cAAc,CAACjjU,OAAO;MAC\u002FB,CAAC;MAEDkjU,MAAM,EAAExiU,MAAM,IAAI;QAChBhf,MAAM,CAACgf,MAAM,YAAYjf,KAAK,EAAE,iCAAiC,CAAC;QAClE,MAAM0hV,gBAAgB,GAAGvkU,OAAO,CAACC,aAAa,CAAC,CAAC;QAChD,IAAI,CAACgjU,iBAAiB,CAACF,QAAQ,CAAC,CAACoB,UAAU,GAAGI,gBAAgB;QAC9D,IAAI,CAACtB,iBAAiB,CAACF,QAAQ,CAAC,CAAC1xE,QAAQ,GAAG,IAAI;QAChDwxE,MAAM,CAACW,WAAW,CAAC;UACjBb,UAAU;UACVC,UAAU;UACVrjU,MAAM,EAAE0iU,UAAU,CAACC,MAAM;UACzBa,QAAQ;UACRjhU,MAAM,EAAE2gU,UAAU,CAAC3gU,MAAM;QAC3B,CAAC,CAAC;QAEF,OAAOyiU,gBAAgB,CAACnjU,OAAO;MACjC;IACF,CAAC,EACDyiU,gBACF,CAAC;EACH;EAEA,CAACJ,gBAAgBe,CAACntU,IAAI,EAAE;IACtB,MAAM0rU,QAAQ,GAAG1rU,IAAI,CAAC0rU,QAAQ;MAC5BJ,UAAU,GAAG,IAAI,CAACA,UAAU;MAC5BC,UAAU,GAAGvrU,IAAI,CAACsrU,UAAU;MAC5BE,MAAM,GAAG,IAAI,CAACA,MAAM;IACtB,MAAMzjS,IAAI,GAAG,IAAI;MACf\u002FkC,MAAM,GAAG,IAAI,CAAC8oU,aAAa,CAAC9rU,IAAI,CAACgD,MAAM,CAAC;IAE1C,MAAMwyO,UAAU,GAAG;MACjBmB,OAAOA,CAAC3nP,KAAK,EAAEkL,IAAI,GAAG,CAAC,EAAEs8O,SAAS,EAAE;QAClC,IAAI,IAAI,CAAC42F,WAAW,EAAE;UACpB;QACF;QACA,MAAMC,eAAe,GAAG,IAAI,CAAC5hF,WAAW;QACxC,IAAI,CAACA,WAAW,IAAIvxP,IAAI;QAIxB,IAAImzU,eAAe,GAAG,CAAC,IAAI,IAAI,CAAC5hF,WAAW,IAAI,CAAC,EAAE;UAChD,IAAI,CAAC6hF,cAAc,GAAG3kU,OAAO,CAACC,aAAa,CAAC,CAAC;UAC7C,IAAI,CAACktO,KAAK,GAAG,IAAI,CAACw3F,cAAc,CAACvjU,OAAO;QAC1C;QACAyhU,MAAM,CAACW,WAAW,CAChB;UACEb,UAAU;UACVC,UAAU;UACVrjU,MAAM,EAAE0iU,UAAU,CAACI,OAAO;UAC1BU,QAAQ;UACR18U;QACF,CAAC,EACDwnP,SACF,CAAC;MACH,CAAC;MAED+vB,KAAKA,CAAA,EAAG;QACN,IAAI,IAAI,CAAC6mE,WAAW,EAAE;UACpB;QACF;QACA,IAAI,CAACA,WAAW,GAAG,IAAI;QACvB5B,MAAM,CAACW,WAAW,CAAC;UACjBb,UAAU;UACVC,UAAU;UACVrjU,MAAM,EAAE0iU,UAAU,CAACG,KAAK;UACxBW;QACF,CAAC,CAAC;QACF,OAAO3jS,IAAI,CAAC4jS,WAAW,CAACD,QAAQ,CAAC;MACnC,CAAC;MAED7iS,KAAKA,CAACp+B,MAAM,EAAE;QACZhf,MAAM,CAACgf,MAAM,YAAYjf,KAAK,EAAE,gCAAgC,CAAC;QACjE,IAAI,IAAI,CAAC4hV,WAAW,EAAE;UACpB;QACF;QACA,IAAI,CAACA,WAAW,GAAG,IAAI;QACvB5B,MAAM,CAACW,WAAW,CAAC;UACjBb,UAAU;UACVC,UAAU;UACVrjU,MAAM,EAAE0iU,UAAU,CAACr8C,KAAK;UACxBm9C,QAAQ;UACRjhU,MAAM,EAAE2gU,UAAU,CAAC3gU,MAAM;QAC3B,CAAC,CAAC;MACJ,CAAC;MAED6iU,cAAc,EAAE3kU,OAAO,CAACC,aAAa,CAAC,CAAC;MACvC2kU,MAAM,EAAE,IAAI;MACZC,QAAQ,EAAE,IAAI;MACdJ,WAAW,EAAE,KAAK;MAClB3hF,WAAW,EAAEzrP,IAAI,CAACyrP,WAAW;MAC7B3V,KAAK,EAAE;IACT,CAAC;IAEDN,UAAU,CAAC83F,cAAc,CAAClkU,OAAO,CAAC,CAAC;IACnCosO,UAAU,CAACM,KAAK,GAAGN,UAAU,CAAC83F,cAAc,CAACvjU,OAAO;IACpD,IAAI,CAAC4hU,WAAW,CAACD,QAAQ,CAAC,GAAGl2F,UAAU;IAEvC,IAAI7sO,OAAO,CAAC,UAAUS,OAAO,EAAE;MAC7BA,OAAO,CAACpG,MAAM,CAAChD,IAAI,CAACA,IAAI,EAAEw1O,UAAU,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC9rO,IAAI,CACL,YAAY;MACV8hU,MAAM,CAACW,WAAW,CAAC;QACjBb,UAAU;QACVC,UAAU;QACVrjU,MAAM,EAAE0iU,UAAU,CAACO,cAAc;QACjCO,QAAQ;QACR9rD,OAAO,EAAE;MACX,CAAC,CAAC;IACJ,CAAC,EACD,UAAUn1Q,MAAM,EAAE;MAChB+gU,MAAM,CAACW,WAAW,CAAC;QACjBb,UAAU;QACVC,UAAU;QACVrjU,MAAM,EAAE0iU,UAAU,CAACO,cAAc;QACjCO,QAAQ;QACRjhU,MAAM,EAAE2gU,UAAU,CAAC3gU,MAAM;MAC3B,CAAC,CAAC;IACJ,CACF,CAAC;EACH;EAEA,CAACuhU,oBAAoByB,CAACztU,IAAI,EAAE;IAC1B,MAAM0rU,QAAQ,GAAG1rU,IAAI,CAAC0rU,QAAQ;MAC5BJ,UAAU,GAAG,IAAI,CAACA,UAAU;MAC5BC,UAAU,GAAGvrU,IAAI,CAACsrU,UAAU;MAC5BE,MAAM,GAAG,IAAI,CAACA,MAAM;IACtB,MAAMkC,gBAAgB,GAAG,IAAI,CAAC9B,iBAAiB,CAACF,QAAQ,CAAC;MACvDl2F,UAAU,GAAG,IAAI,CAACm2F,WAAW,CAACD,QAAQ,CAAC;IAEzC,QAAQ1rU,IAAI,CAACkI,MAAM;MACjB,KAAK0iU,UAAU,CAACO,cAAc;QAC5B,IAAInrU,IAAI,CAAC4\u002FQ,OAAO,EAAE;UAChB8tD,gBAAgB,CAACd,SAAS,CAACxjU,OAAO,CAAC,CAAC;QACtC,CAAC,MAAM;UACLskU,gBAAgB,CAACd,SAAS,CAACvjU,MAAM,CAAC+hU,UAAU,CAACprU,IAAI,CAACyK,MAAM,CAAC,CAAC;QAC5D;QACA;MACF,KAAKmgU,UAAU,CAACM,aAAa;QAC3B,IAAIlrU,IAAI,CAAC4\u002FQ,OAAO,EAAE;UAChB8tD,gBAAgB,CAACb,QAAQ,CAACzjU,OAAO,CAAC,CAAC;QACrC,CAAC,MAAM;UACLskU,gBAAgB,CAACb,QAAQ,CAACxjU,MAAM,CAAC+hU,UAAU,CAACprU,IAAI,CAACyK,MAAM,CAAC,CAAC;QAC3D;QACA;MACF,KAAKmgU,UAAU,CAACK,IAAI;QAElB,IAAI,CAACz1F,UAAU,EAAE;UACfg2F,MAAM,CAACW,WAAW,CAAC;YACjBb,UAAU;YACVC,UAAU;YACVrjU,MAAM,EAAE0iU,UAAU,CAACM,aAAa;YAChCQ,QAAQ;YACR9rD,OAAO,EAAE;UACX,CAAC,CAAC;UACF;QACF;QAGA,IAAIpqC,UAAU,CAACiW,WAAW,IAAI,CAAC,IAAIzrP,IAAI,CAACyrP,WAAW,GAAG,CAAC,EAAE;UACvDjW,UAAU,CAAC83F,cAAc,CAAClkU,OAAO,CAAC,CAAC;QACrC;QAEAosO,UAAU,CAACiW,WAAW,GAAGzrP,IAAI,CAACyrP,WAAW;QAEzC,IAAI9iP,OAAO,CAAC,UAAUS,OAAO,EAAE;UAC7BA,OAAO,CAACosO,UAAU,CAAC+3F,MAAM,GAAG,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC7jU,IAAI,CACL,YAAY;UACV8hU,MAAM,CAACW,WAAW,CAAC;YACjBb,UAAU;YACVC,UAAU;YACVrjU,MAAM,EAAE0iU,UAAU,CAACM,aAAa;YAChCQ,QAAQ;YACR9rD,OAAO,EAAE;UACX,CAAC,CAAC;QACJ,CAAC,EACD,UAAUn1Q,MAAM,EAAE;UAChB+gU,MAAM,CAACW,WAAW,CAAC;YACjBb,UAAU;YACVC,UAAU;YACVrjU,MAAM,EAAE0iU,UAAU,CAACM,aAAa;YAChCQ,QAAQ;YACRjhU,MAAM,EAAE2gU,UAAU,CAAC3gU,MAAM;UAC3B,CAAC,CAAC;QACJ,CACF,CAAC;QACD;MACF,KAAKmgU,UAAU,CAACI,OAAO;QACrBv\u002FU,MAAM,CAACiiV,gBAAgB,EAAE,uCAAuC,CAAC;QACjE,IAAIA,gBAAgB,CAAC1zE,QAAQ,EAAE;UAC7B;QACF;QACA0zE,gBAAgB,CAAChB,UAAU,CAAC\u002F1F,OAAO,CAAC32O,IAAI,CAAChR,KAAK,CAAC;QAC\u002FC;MACF,KAAK47U,UAAU,CAACG,KAAK;QACnBt\u002FU,MAAM,CAACiiV,gBAAgB,EAAE,qCAAqC,CAAC;QAC\u002FD,IAAIA,gBAAgB,CAAC1zE,QAAQ,EAAE;UAC7B;QACF;QACA0zE,gBAAgB,CAAC1zE,QAAQ,GAAG,IAAI;QAChC0zE,gBAAgB,CAAChB,UAAU,CAACnmE,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,CAAConE,sBAAsB,CAACD,gBAAgB,EAAEhC,QAAQ,CAAC;QACxD;MACF,KAAKd,UAAU,CAACr8C,KAAK;QACnB9iS,MAAM,CAACiiV,gBAAgB,EAAE,qCAAqC,CAAC;QAC\u002FDA,gBAAgB,CAAChB,UAAU,CAAC7jS,KAAK,CAACuiS,UAAU,CAACprU,IAAI,CAACyK,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,CAACkjU,sBAAsB,CAACD,gBAAgB,EAAEhC,QAAQ,CAAC;QACxD;MACF,KAAKd,UAAU,CAACE,eAAe;QAC7B,IAAI9qU,IAAI,CAAC4\u002FQ,OAAO,EAAE;UAChB8tD,gBAAgB,CAACZ,UAAU,CAAC1jU,OAAO,CAAC,CAAC;QACvC,CAAC,MAAM;UACLskU,gBAAgB,CAACZ,UAAU,CAACzjU,MAAM,CAAC+hU,UAAU,CAACprU,IAAI,CAACyK,MAAM,CAAC,CAAC;QAC7D;QACA,IAAI,CAAC,CAACkjU,sBAAsB,CAACD,gBAAgB,EAAEhC,QAAQ,CAAC;QACxD;MACF,KAAKd,UAAU,CAACC,MAAM;QACpB,IAAI,CAACr1F,UAAU,EAAE;UACf;QACF;QAEA,IAAI7sO,OAAO,CAAC,UAAUS,OAAO,EAAE;UAC7BA,OAAO,CAACosO,UAAU,CAACg4F,QAAQ,GAAGpC,UAAU,CAACprU,IAAI,CAACyK,MAAM,CAAC,CAAC,CAAC;QACzD,CAAC,CAAC,CAACf,IAAI,CACL,YAAY;UACV8hU,MAAM,CAACW,WAAW,CAAC;YACjBb,UAAU;YACVC,UAAU;YACVrjU,MAAM,EAAE0iU,UAAU,CAACE,eAAe;YAClCY,QAAQ;YACR9rD,OAAO,EAAE;UACX,CAAC,CAAC;QACJ,CAAC,EACD,UAAUn1Q,MAAM,EAAE;UAChB+gU,MAAM,CAACW,WAAW,CAAC;YACjBb,UAAU;YACVC,UAAU;YACVrjU,MAAM,EAAE0iU,UAAU,CAACE,eAAe;YAClCY,QAAQ;YACRjhU,MAAM,EAAE2gU,UAAU,CAAC3gU,MAAM;UAC3B,CAAC,CAAC;QACJ,CACF,CAAC;QACD+qO,UAAU,CAAC83F,cAAc,CAACjkU,MAAM,CAAC+hU,UAAU,CAACprU,IAAI,CAACyK,MAAM,CAAC,CAAC;QACzD+qO,UAAU,CAAC43F,WAAW,GAAG,IAAI;QAC7B,OAAO,IAAI,CAACzB,WAAW,CAACD,QAAQ,CAAC;QACjC;MACF;QACE,MAAM,IAAIlgV,KAAK,CAAC,wBAAwB,CAAC;IAC7C;EACF;EAEA,MAAM,CAACmiV,sBAAsBC,CAACF,gBAAgB,EAAEhC,QAAQ,EAAE;IAGxD,MAAM\u002FiU,OAAO,CAACklU,UAAU,CAAC,CACvBH,gBAAgB,CAACd,SAAS,EAAE7iU,OAAO,EACnC2jU,gBAAgB,CAACb,QAAQ,EAAE9iU,OAAO,EAClC2jU,gBAAgB,CAACZ,UAAU,EAAE\u002FiU,OAAO,CACrC,CAAC;IACF,OAAO,IAAI,CAAC6hU,iBAAiB,CAACF,QAAQ,CAAC;EACzC;EAEAoC,OAAOA,CAAA,EAAG;IACR,IAAI,CAACtC,MAAM,CAACuC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAChC,kBAAkB,CAAC;EACrE;AACF;;;ACpgB2C;AAG3C,MAAMiC,eAAe,CAAC;EACpBxgV,WAAWA,CAAC4a,UAAU,EAAE;IACtB,IAAI,CAAC6lU,WAAW,GAAG7lU,UAAU;IAC7B,IAAI,CAAC8lU,cAAc,GAAG,IAAI;IAC1B,IAAI,CAACC,kBAAkB,GAAG,IAAI;IAC9B,IAAI,CAACC,oBAAoB,GAAG,EAAE;EAChC;EAEAC,aAAaA,CAAA,EAAG;IACd5iV,MAAM,CACJ,CAAC,IAAI,CAAC0iV,kBAAkB,EACxB,wDACF,CAAC;IACD,IAAI,CAACA,kBAAkB,GAAG,IAAIG,qBAAqB,CAAC,IAAI,CAACL,WAAW,CAAC;IACrE,OAAO,IAAI,CAACE,kBAAkB;EAChC;EAEAplU,cAAcA,CAACpK,KAAK,EAAEC,GAAG,EAAE;IACzB,MAAMw3B,MAAM,GAAG,IAAIm4S,0BAA0B,CAAC5vU,KAAK,EAAEC,GAAG,EAAE,IAAI,CAACqvU,WAAW,CAAC;IAC3E,IAAI,CAACG,oBAAoB,CAACl\u002FU,IAAI,CAACknC,MAAM,CAAC;IACtC,OAAOA,MAAM;EACf;EAEAxqB,iBAAiBA,CAACnB,MAAM,EAAE;IACxB,IAAI,CAAC0jU,kBAAkB,EAAElB,MAAM,CAACxiU,MAAM,CAAC;IAEvC,KAAK,MAAM2rB,MAAM,IAAI,IAAI,CAACg4S,oBAAoB,CAACz7U,KAAK,CAAC,CAAC,CAAC,EAAE;MACvDyjC,MAAM,CAAC62S,MAAM,CAACxiU,MAAM,CAAC;IACvB;EACF;AACF;AAGA,MAAM6jU,qBAAqB,CAAC;EAC1B9gV,WAAWA,CAAC4a,UAAU,EAAE;IACtB,IAAI,CAAC6lU,WAAW,GAAG7lU,UAAU;IAC7B,IAAI,CAACa,UAAU,GAAG,IAAI;IAEtB,IAAI,CAACilU,cAAc,GAAG,IAAI;IAC1B,IAAI,CAACM,iBAAiB,GAAG,KAAK;IAC9B,IAAI,CAACC,qBAAqB,GAAG,KAAK;IAElC,MAAMC,cAAc,GAAG,IAAI,CAACT,WAAW,CAAC1B,cAAc,CAAC,WAAW,CAAC;IACnE,IAAI,CAACoC,OAAO,GAAGD,cAAc,CAACE,SAAS,CAAC,CAAC;IAEzC,IAAI,CAACC,aAAa,GAAG,IAAI,CAACZ,WAAW,CAClC5wF,eAAe,CAAC,oBAAoB,CAAC,CACrC3zO,IAAI,CAAC1J,IAAI,IAAI;MACZ,IAAI,CAACyuU,qBAAqB,GAAGzuU,IAAI,CAACgJ,oBAAoB;MACtD,IAAI,CAACwlU,iBAAiB,GAAGxuU,IAAI,CAAC8uU,gBAAgB;MAC9C,IAAI,CAACZ,cAAc,GAAGluU,IAAI,CAACqgU,aAAa;IAC1C,CAAC,CAAC;EACN;EAEA,IAAI0O,YAAYA,CAAA,EAAG;IACjB,OAAO,IAAI,CAACF,aAAa;EAC3B;EAEA,IAAIxO,aAAaA,CAAA,EAAG;IAClB,OAAO,IAAI,CAAC6N,cAAc;EAC5B;EAEA,IAAIllU,oBAAoBA,CAAA,EAAG;IACzB,OAAO,IAAI,CAACylU,qBAAqB;EACnC;EAEA,IAAIK,gBAAgBA,CAAA,EAAG;IACrB,OAAO,IAAI,CAACN,iBAAiB;EAC\u002FB;EAEA,MAAM\u002FkU,IAAIA,CAAA,EAAG;IACX,MAAM;MAAE5c,KAAK;MAAE0c;IAAK,CAAC,GAAG,MAAM,IAAI,CAAColU,OAAO,CAACllU,IAAI,CAAC,CAAC;IACjD,IAAIF,IAAI,EAAE;MACR,OAAO;QAAE1c,KAAK,EAAEyB,SAAS;QAAEib,IAAI,EAAE;MAAK,CAAC;IACzC;IAGA,OAAO;MAAE1c,KAAK,EAAEA,KAAK,CAACsD,MAAM;MAAEoZ,IAAI,EAAE;IAAM,CAAC;EAC7C;EAEA0jU,MAAMA,CAACxiU,MAAM,EAAE;IACb,IAAI,CAACkkU,OAAO,CAAC1B,MAAM,CAACxiU,MAAM,CAAC;EAC7B;AACF;AAGA,MAAM8jU,0BAA0B,CAAC;EAC\u002FB\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\u002F0U,GAAG,EAAE\u002FK,QAAQ,CAAC,CAAC,IAAI,IAAI;YAC\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\",\"sources\":[\"webpack:\u002F\u002Fpdf.js\u002Fwebpack\u002Fbootstrap\",\"webpack:\u002F\u002Fpdf.js\u002Fwebpack\u002Fruntime\u002Fdefine property getters\",\"webpack:\u002F\u002Fpdf.js\u002Fwebpack\u002Fruntime\u002FhasOwnProperty shorthand\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fshared\u002Futil.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fprimitives.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fbase_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fcore_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fstream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fchunked_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fcolorspace.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fbinary_cmap.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fdecode_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fascii_85_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fascii_hex_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fccitt.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fccitt_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fflate_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Farithmetic_decoder.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fjbig2.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fjbig2_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fshared\u002Fimage_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fjpg.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fjpeg_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fexternal\u002Fopenjpeg\u002Fopenjpeg.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fjpx.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fjpx_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Flzw_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fpredictor_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Frun_length_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fparser.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fcmap.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fcharsets.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fencodings.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fcff_parser.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fglyphlist.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Funicode.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Ffonts_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fstandard_fonts.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fto_unicode_map.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fcff_font.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Ffont_renderer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fmetrics.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fglyf.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fopentype_file_builder.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Ftype1_parser.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Ftype1_font.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Ffonts.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fpattern.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fcalibri_factors.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fhelvetica_factors.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fliberationsans_widths.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fmyriadpro_factors.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fsegoeui_factors.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa_fonts.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fps_parser.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fimage_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Ffunction.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fbidi.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Ffont_substitutions.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fimage_resizer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fshared\u002Fmurmurhash3.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Foperator_list.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fimage.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fevaluator.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fdefault_appearance.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fname_number_tree.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fcleanup_helper.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Ffile_spec.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxml_parser.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fmetadata_parser.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fdecrypt_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fcrypto.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fwriter.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fstruct_tree.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fcatalog.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fobject_loader.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fsymbol_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fnamespaces.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Futils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Ffonts.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Ftext.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fsom.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fxfa_object.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fhtml_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Flayout.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Ftemplate.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fbind.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fdata.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fconfig.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fconnection_set.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fdatasets.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Flocale_set.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fsignature.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fstylesheet.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fxdp.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fxhtml.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fsetup.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Funknown.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fbuilder.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fparser.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Ffactory.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fannotation.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fdataset_reader.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxref.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fdocument.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fpdf_manager.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fshared\u002Fmessage_handler.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fworker_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fworker.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fpdf.worker.js\"],\"sourcesContent\":[\"\u002F\u002F The require scope\\nvar __webpack_require__ = {};\\n\\n\",\"\u002F\u002F define getter functions for harmony exports\\n__webpack_require__.d = (exports, definition) => {\\n\\tfor(var key in definition) {\\n\\t\\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\\n\\t\\t\\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\\n\\t\\t}\\n\\t}\\n};\",\"__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\u002F* globals process *\u002F\\n\\n\u002F\u002F NW.js \u002F Electron is a browser context, but copies some Node.js objects; see\\n\u002F\u002F http:\u002F\u002Fdocs.nwjs.io\u002Fen\u002Flatest\u002FFor%20Users\u002FAdvanced\u002FJavaScript%20Contexts%20in%20NW.js\u002F#access-nodejs-and-nwjs-api-in-browser-context\\n\u002F\u002F https:\u002F\u002Fwww.electronjs.org\u002Fdocs\u002Fapi\u002Fprocess#processversionselectron-readonly\\n\u002F\u002F https:\u002F\u002Fwww.electronjs.org\u002Fdocs\u002Fapi\u002Fprocess#processtype-readonly\\nconst isNodeJS =\\n  (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) &&\\n  typeof process === \\\"object\\\" &&\\n  process + \\\"\\\" === \\\"[object process]\\\" &&\\n  !process.versions.nw &&\\n  !(process.versions.electron && process.type && process.type !== \\\"browser\\\");\\n\\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\\n\\nconst MAX_IMAGE_SIZE_TO_CACHE = 10e6; \u002F\u002F Ten megabytes.\\n\\n\u002F\u002F Represent the percentage of the height of a single-line field over\\n\u002F\u002F the font size. Acrobat seems to use this value.\\nconst LINE_FACTOR = 1.35;\\nconst LINE_DESCENT_FACTOR = 0.35;\\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR \u002F LINE_FACTOR;\\n\\n\u002F**\\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\\n * how these flags are being used:\\n *  - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\\n *    `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\\n *  - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\\n *    annotations are rendered onto the canvas (i.e. by being included in the\\n *    operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\\n *    and their `annotationMode`-option.\\n *  - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\\n *    `OperatorList`-constructor (on the worker-thread).\\n *\u002F\\nconst RenderingIntentFlag = {\\n  ANY: 0x01,\\n  DISPLAY: 0x02,\\n  PRINT: 0x04,\\n  SAVE: 0x08,\\n  ANNOTATIONS_FORMS: 0x10,\\n  ANNOTATIONS_STORAGE: 0x20,\\n  ANNOTATIONS_DISABLE: 0x40,\\n  OPLIST: 0x100,\\n};\\n\\nconst AnnotationMode = {\\n  DISABLE: 0,\\n  ENABLE: 1,\\n  ENABLE_FORMS: 2,\\n  ENABLE_STORAGE: 3,\\n};\\n\\nconst AnnotationEditorPrefix = \\\"pdfjs_internal_editor_\\\";\\n\\nconst AnnotationEditorType = {\\n  DISABLE: -1,\\n  NONE: 0,\\n  FREETEXT: 3,\\n  HIGHLIGHT: 9,\\n  STAMP: 13,\\n  INK: 15,\\n};\\n\\nconst AnnotationEditorParamsType = {\\n  RESIZE: 1,\\n  CREATE: 2,\\n  FREETEXT_SIZE: 11,\\n  FREETEXT_COLOR: 12,\\n  FREETEXT_OPACITY: 13,\\n  INK_COLOR: 21,\\n  INK_THICKNESS: 22,\\n  INK_OPACITY: 23,\\n  HIGHLIGHT_COLOR: 31,\\n  HIGHLIGHT_DEFAULT_COLOR: 32,\\n  HIGHLIGHT_THICKNESS: 33,\\n  HIGHLIGHT_FREE: 34,\\n  HIGHLIGHT_SHOW_ALL: 35,\\n};\\n\\n\u002F\u002F Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\\nconst PermissionFlag = {\\n  PRINT: 0x04,\\n  MODIFY_CONTENTS: 0x08,\\n  COPY: 0x10,\\n  MODIFY_ANNOTATIONS: 0x20,\\n  FILL_INTERACTIVE_FORMS: 0x100,\\n  COPY_FOR_ACCESSIBILITY: 0x200,\\n  ASSEMBLE: 0x400,\\n  PRINT_HIGH_QUALITY: 0x800,\\n};\\n\\nconst TextRenderingMode = {\\n  FILL: 0,\\n  STROKE: 1,\\n  FILL_STROKE: 2,\\n  INVISIBLE: 3,\\n  FILL_ADD_TO_PATH: 4,\\n  STROKE_ADD_TO_PATH: 5,\\n  FILL_STROKE_ADD_TO_PATH: 6,\\n  ADD_TO_PATH: 7,\\n  FILL_STROKE_MASK: 3,\\n  ADD_TO_PATH_FLAG: 4,\\n};\\n\\nconst ImageKind = {\\n  GRAYSCALE_1BPP: 1,\\n  RGB_24BPP: 2,\\n  RGBA_32BPP: 3,\\n};\\n\\nconst AnnotationType = {\\n  TEXT: 1,\\n  LINK: 2,\\n  FREETEXT: 3,\\n  LINE: 4,\\n  SQUARE: 5,\\n  CIRCLE: 6,\\n  POLYGON: 7,\\n  POLYLINE: 8,\\n  HIGHLIGHT: 9,\\n  UNDERLINE: 10,\\n  SQUIGGLY: 11,\\n  STRIKEOUT: 12,\\n  STAMP: 13,\\n  CARET: 14,\\n  INK: 15,\\n  POPUP: 16,\\n  FILEATTACHMENT: 17,\\n  SOUND: 18,\\n  MOVIE: 19,\\n  WIDGET: 20,\\n  SCREEN: 21,\\n  PRINTERMARK: 22,\\n  TRAPNET: 23,\\n  WATERMARK: 24,\\n  THREED: 25,\\n  REDACT: 26,\\n};\\n\\nconst AnnotationReplyType = {\\n  GROUP: \\\"Group\\\",\\n  REPLY: \\\"R\\\",\\n};\\n\\nconst AnnotationFlag = {\\n  INVISIBLE: 0x01,\\n  HIDDEN: 0x02,\\n  PRINT: 0x04,\\n  NOZOOM: 0x08,\\n  NOROTATE: 0x10,\\n  NOVIEW: 0x20,\\n  READONLY: 0x40,\\n  LOCKED: 0x80,\\n  TOGGLENOVIEW: 0x100,\\n  LOCKEDCONTENTS: 0x200,\\n};\\n\\nconst AnnotationFieldFlag = {\\n  READONLY: 0x0000001,\\n  REQUIRED: 0x0000002,\\n  NOEXPORT: 0x0000004,\\n  MULTILINE: 0x0001000,\\n  PASSWORD: 0x0002000,\\n  NOTOGGLETOOFF: 0x0004000,\\n  RADIO: 0x0008000,\\n  PUSHBUTTON: 0x0010000,\\n  COMBO: 0x0020000,\\n  EDIT: 0x0040000,\\n  SORT: 0x0080000,\\n  FILESELECT: 0x0100000,\\n  MULTISELECT: 0x0200000,\\n  DONOTSPELLCHECK: 0x0400000,\\n  DONOTSCROLL: 0x0800000,\\n  COMB: 0x1000000,\\n  RICHTEXT: 0x2000000,\\n  RADIOSINUNISON: 0x2000000,\\n  COMMITONSELCHANGE: 0x4000000,\\n};\\n\\nconst AnnotationBorderStyleType = {\\n  SOLID: 1,\\n  DASHED: 2,\\n  BEVELED: 3,\\n  INSET: 4,\\n  UNDERLINE: 5,\\n};\\n\\nconst AnnotationActionEventType = {\\n  E: \\\"Mouse Enter\\\",\\n  X: \\\"Mouse Exit\\\",\\n  D: \\\"Mouse Down\\\",\\n  U: \\\"Mouse Up\\\",\\n  Fo: \\\"Focus\\\",\\n  Bl: \\\"Blur\\\",\\n  PO: \\\"PageOpen\\\",\\n  PC: \\\"PageClose\\\",\\n  PV: \\\"PageVisible\\\",\\n  PI: \\\"PageInvisible\\\",\\n  K: \\\"Keystroke\\\",\\n  F: \\\"Format\\\",\\n  V: \\\"Validate\\\",\\n  C: \\\"Calculate\\\",\\n};\\n\\nconst DocumentActionEventType = {\\n  WC: \\\"WillClose\\\",\\n  WS: \\\"WillSave\\\",\\n  DS: \\\"DidSave\\\",\\n  WP: \\\"WillPrint\\\",\\n  DP: \\\"DidPrint\\\",\\n};\\n\\nconst PageActionEventType = {\\n  O: \\\"PageOpen\\\",\\n  C: \\\"PageClose\\\",\\n};\\n\\nconst VerbosityLevel = {\\n  ERRORS: 0,\\n  WARNINGS: 1,\\n  INFOS: 5,\\n};\\n\\nconst CMapCompressionType = {\\n  NONE: 0,\\n  BINARY: 1,\\n};\\n\\n\u002F\u002F All the possible operations for an operator list.\\nconst OPS = {\\n  \u002F\u002F Intentionally start from 1 so it is easy to spot bad operators that will be\\n  \u002F\u002F 0's.\\n  \u002F\u002F PLEASE NOTE: We purposely keep any removed operators commented out, since\\n  \u002F\u002F              re-numbering the list would risk breaking third-party users.\\n  dependency: 1,\\n  setLineWidth: 2,\\n  setLineCap: 3,\\n  setLineJoin: 4,\\n  setMiterLimit: 5,\\n  setDash: 6,\\n  setRenderingIntent: 7,\\n  setFlatness: 8,\\n  setGState: 9,\\n  save: 10,\\n  restore: 11,\\n  transform: 12,\\n  moveTo: 13,\\n  lineTo: 14,\\n  curveTo: 15,\\n  curveTo2: 16,\\n  curveTo3: 17,\\n  closePath: 18,\\n  rectangle: 19,\\n  stroke: 20,\\n  closeStroke: 21,\\n  fill: 22,\\n  eoFill: 23,\\n  fillStroke: 24,\\n  eoFillStroke: 25,\\n  closeFillStroke: 26,\\n  closeEOFillStroke: 27,\\n  endPath: 28,\\n  clip: 29,\\n  eoClip: 30,\\n  beginText: 31,\\n  endText: 32,\\n  setCharSpacing: 33,\\n  setWordSpacing: 34,\\n  setHScale: 35,\\n  setLeading: 36,\\n  setFont: 37,\\n  setTextRenderingMode: 38,\\n  setTextRise: 39,\\n  moveText: 40,\\n  setLeadingMoveText: 41,\\n  setTextMatrix: 42,\\n  nextLine: 43,\\n  showText: 44,\\n  showSpacedText: 45,\\n  nextLineShowText: 46,\\n  nextLineSetSpacingShowText: 47,\\n  setCharWidth: 48,\\n  setCharWidthAndBounds: 49,\\n  setStrokeColorSpace: 50,\\n  setFillColorSpace: 51,\\n  setStrokeColor: 52,\\n  setStrokeColorN: 53,\\n  setFillColor: 54,\\n  setFillColorN: 55,\\n  setStrokeGray: 56,\\n  setFillGray: 57,\\n  setStrokeRGBColor: 58,\\n  setFillRGBColor: 59,\\n  setStrokeCMYKColor: 60,\\n  setFillCMYKColor: 61,\\n  shadingFill: 62,\\n  beginInlineImage: 63,\\n  beginImageData: 64,\\n  endInlineImage: 65,\\n  paintXObject: 66,\\n  markPoint: 67,\\n  markPointProps: 68,\\n  beginMarkedContent: 69,\\n  beginMarkedContentProps: 70,\\n  endMarkedContent: 71,\\n  beginCompat: 72,\\n  endCompat: 73,\\n  paintFormXObjectBegin: 74,\\n  paintFormXObjectEnd: 75,\\n  beginGroup: 76,\\n  endGroup: 77,\\n  \u002F\u002F beginAnnotations: 78,\\n  \u002F\u002F endAnnotations: 79,\\n  beginAnnotation: 80,\\n  endAnnotation: 81,\\n  \u002F\u002F paintJpegXObject: 82,\\n  paintImageMaskXObject: 83,\\n  paintImageMaskXObjectGroup: 84,\\n  paintImageXObject: 85,\\n  paintInlineImageXObject: 86,\\n  paintInlineImageXObjectGroup: 87,\\n  paintImageXObjectRepeat: 88,\\n  paintImageMaskXObjectRepeat: 89,\\n  paintSolidColorImageMask: 90,\\n  constructPath: 91,\\n};\\n\\nconst PasswordResponses = {\\n  NEED_PASSWORD: 1,\\n  INCORRECT_PASSWORD: 2,\\n};\\n\\nlet verbosity = VerbosityLevel.WARNINGS;\\n\\nfunction setVerbosityLevel(level) {\\n  if (Number.isInteger(level)) {\\n    verbosity = level;\\n  }\\n}\\n\\nfunction getVerbosityLevel() {\\n  return verbosity;\\n}\\n\\n\u002F\u002F A notice for devs. These are good for things that are helpful to devs, such\\n\u002F\u002F as warning that Workers were disabled, which is important to devs but not\\n\u002F\u002F end users.\\nfunction info(msg) {\\n  if (verbosity >= VerbosityLevel.INFOS) {\\n    console.log(`Info: ${msg}`);\\n  }\\n}\\n\\n\u002F\u002F Non-fatal warnings.\\nfunction warn(msg) {\\n  if (verbosity >= VerbosityLevel.WARNINGS) {\\n    console.log(`Warning: ${msg}`);\\n  }\\n}\\n\\nfunction unreachable(msg) {\\n  throw new Error(msg);\\n}\\n\\nfunction assert(cond, msg) {\\n  if (!cond) {\\n    unreachable(msg);\\n  }\\n}\\n\\n\u002F\u002F Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\\nfunction _isValidProtocol(url) {\\n  switch (url?.protocol) {\\n    case \\\"http:\\\":\\n    case \\\"https:\\\":\\n    case \\\"ftp:\\\":\\n    case \\\"mailto:\\\":\\n    case \\\"tel:\\\":\\n      return true;\\n    default:\\n      return false;\\n  }\\n}\\n\\n\u002F**\\n * Attempts to create a valid absolute URL.\\n *\\n * @param {URL|string} url - An absolute, or relative, URL.\\n * @param {URL|string} [baseUrl] - An absolute URL.\\n * @param {Object} [options]\\n * @returns Either a valid {URL}, or `null` otherwise.\\n *\u002F\\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\\n  if (!url) {\\n    return null;\\n  }\\n  try {\\n    if (options && typeof url === \\\"string\\\") {\\n      \u002F\u002F Let URLs beginning with \\\"www.\\\" default to using the \\\"http:\u002F\u002F\\\" protocol.\\n      if (options.addDefaultProtocol && url.startsWith(\\\"www.\\\")) {\\n        const dots = url.match(\u002F\\\\.\u002Fg);\\n        \u002F\u002F Avoid accidentally matching a *relative* URL pointing to a file named\\n        \u002F\u002F e.g. \\\"www.pdf\\\" or similar.\\n        if (dots?.length >= 2) {\\n          url = `http:\u002F\u002F${url}`;\\n        }\\n      }\\n\\n      \u002F\u002F According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\\n      \u002F\u002F in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\\n      if (options.tryConvertEncoding) {\\n        try {\\n          url = stringToUTF8String(url);\\n        } catch {}\\n      }\\n    }\\n\\n    const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\\n    if (_isValidProtocol(absoluteUrl)) {\\n      return absoluteUrl;\\n    }\\n  } catch {\\n    \u002F* `new URL()` will throw on incorrect data. *\u002F\\n  }\\n  return null;\\n}\\n\\nfunction shadow(obj, prop, value, nonSerializable = false) {\\n  if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n    assert(\\n      prop in obj,\\n      `shadow: Property \\\"${prop && prop.toString()}\\\" not found in object.`\\n    );\\n  }\\n  Object.defineProperty(obj, prop, {\\n    value,\\n    enumerable: !nonSerializable,\\n    configurable: true,\\n    writable: false,\\n  });\\n  return value;\\n}\\n\\n\u002F**\\n * @type {any}\\n *\u002F\\nconst BaseException = (function BaseExceptionClosure() {\\n  \u002F\u002F eslint-disable-next-line no-shadow\\n  function BaseException(message, name) {\\n    if (this.constructor === BaseException) {\\n      unreachable(\\\"Cannot initialize BaseException.\\\");\\n    }\\n    this.message = message;\\n    this.name = name;\\n  }\\n  BaseException.prototype = new Error();\\n  BaseException.constructor = BaseException;\\n\\n  return BaseException;\\n})();\\n\\nclass PasswordException extends BaseException {\\n  constructor(msg, code) {\\n    super(msg, \\\"PasswordException\\\");\\n    this.code = code;\\n  }\\n}\\n\\nclass UnknownErrorException extends BaseException {\\n  constructor(msg, details) {\\n    super(msg, \\\"UnknownErrorException\\\");\\n    this.details = details;\\n  }\\n}\\n\\nclass InvalidPDFException extends BaseException {\\n  constructor(msg) {\\n    super(msg, \\\"InvalidPDFException\\\");\\n  }\\n}\\n\\nclass MissingPDFException extends BaseException {\\n  constructor(msg) {\\n    super(msg, \\\"MissingPDFException\\\");\\n  }\\n}\\n\\nclass UnexpectedResponseException extends BaseException {\\n  constructor(msg, status) {\\n    super(msg, \\\"UnexpectedResponseException\\\");\\n    this.status = status;\\n  }\\n}\\n\\n\u002F**\\n * Error caused during parsing PDF data.\\n *\u002F\\nclass FormatError extends BaseException {\\n  constructor(msg) {\\n    super(msg, \\\"FormatError\\\");\\n  }\\n}\\n\\n\u002F**\\n * Error used to indicate task cancellation.\\n *\u002F\\nclass AbortException extends BaseException {\\n  constructor(msg) {\\n    super(msg, \\\"AbortException\\\");\\n  }\\n}\\n\\nfunction bytesToString(bytes) {\\n  if (typeof bytes !== \\\"object\\\" || bytes?.length === undefined) {\\n    unreachable(\\\"Invalid argument for bytesToString\\\");\\n  }\\n  const length = bytes.length;\\n  const MAX_ARGUMENT_COUNT = 8192;\\n  if (length \u003C MAX_ARGUMENT_COUNT) {\\n    return String.fromCharCode.apply(null, bytes);\\n  }\\n  const strBuf = [];\\n  for (let i = 0; i \u003C length; i += MAX_ARGUMENT_COUNT) {\\n    const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\\n    const chunk = bytes.subarray(i, chunkEnd);\\n    strBuf.push(String.fromCharCode.apply(null, chunk));\\n  }\\n  return strBuf.join(\\\"\\\");\\n}\\n\\nfunction stringToBytes(str) {\\n  if (typeof str !== \\\"string\\\") {\\n    unreachable(\\\"Invalid argument for stringToBytes\\\");\\n  }\\n  const length = str.length;\\n  const bytes = new Uint8Array(length);\\n  for (let i = 0; i \u003C length; ++i) {\\n    bytes[i] = str.charCodeAt(i) & 0xff;\\n  }\\n  return bytes;\\n}\\n\\nfunction string32(value) {\\n  if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n    assert(\\n      typeof value === \\\"number\\\" && Math.abs(value) \u003C 2 ** 32,\\n      `string32: Unexpected input \\\"${value}\\\".`\\n    );\\n  }\\n  return String.fromCharCode(\\n    (value >> 24) & 0xff,\\n    (value >> 16) & 0xff,\\n    (value >> 8) & 0xff,\\n    value & 0xff\\n  );\\n}\\n\\nfunction objectSize(obj) {\\n  return Object.keys(obj).length;\\n}\\n\\n\u002F\u002F Ensure that the returned Object has a `null` prototype; hence why\\n\u002F\u002F `Object.fromEntries(...)` is not used.\\nfunction objectFromMap(map) {\\n  const obj = Object.create(null);\\n  for (const [key, value] of map) {\\n    obj[key] = value;\\n  }\\n  return obj;\\n}\\n\\n\u002F\u002F Checks the endianness of the platform.\\nfunction isLittleEndian() {\\n  const buffer8 = new Uint8Array(4);\\n  buffer8[0] = 1;\\n  const view32 = new Uint32Array(buffer8.buffer, 0, 1);\\n  return view32[0] === 1;\\n}\\n\\n\u002F\u002F Checks if it's possible to eval JS expressions.\\nfunction isEvalSupported() {\\n  try {\\n    new Function(\\\"\\\"); \u002F\u002F eslint-disable-line no-new, no-new-func\\n    return true;\\n  } catch {\\n    return false;\\n  }\\n}\\n\\nclass FeatureTest {\\n  static get isLittleEndian() {\\n    return shadow(this, \\\"isLittleEndian\\\", isLittleEndian());\\n  }\\n\\n  static get isEvalSupported() {\\n    return shadow(this, \\\"isEvalSupported\\\", isEvalSupported());\\n  }\\n\\n  static get isOffscreenCanvasSupported() {\\n    return shadow(\\n      this,\\n      \\\"isOffscreenCanvasSupported\\\",\\n      typeof OffscreenCanvas !== \\\"undefined\\\"\\n    );\\n  }\\n\\n  static get platform() {\\n    if (\\n      (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) ||\\n      (typeof navigator !== \\\"undefined\\\" &&\\n        typeof navigator?.platform === \\\"string\\\")\\n    ) {\\n      return shadow(this, \\\"platform\\\", {\\n        isMac: navigator.platform.includes(\\\"Mac\\\"),\\n      });\\n    }\\n    return shadow(this, \\\"platform\\\", { isMac: false });\\n  }\\n\\n  static get isCSSRoundSupported() {\\n    return shadow(\\n      this,\\n      \\\"isCSSRoundSupported\\\",\\n      globalThis.CSS?.supports?.(\\\"width: round(1.5px, 1px)\\\")\\n    );\\n  }\\n}\\n\\nconst hexNumbers = Array.from(Array(256).keys(), n =>\\n  n.toString(16).padStart(2, \\\"0\\\")\\n);\\n\\nclass Util {\\n  static makeHexColor(r, g, b) {\\n    return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\\n  }\\n\\n  \u002F\u002F Apply a scaling matrix to some min\u002Fmax values.\\n  \u002F\u002F If a scaling factor is negative then min and max must be\\n  \u002F\u002F swapped.\\n  static scaleMinMax(transform, minMax) {\\n    let temp;\\n    if (transform[0]) {\\n      if (transform[0] \u003C 0) {\\n        temp = minMax[0];\\n        minMax[0] = minMax[2];\\n        minMax[2] = temp;\\n      }\\n      minMax[0] *= transform[0];\\n      minMax[2] *= transform[0];\\n\\n      if (transform[3] \u003C 0) {\\n        temp = minMax[1];\\n        minMax[1] = minMax[3];\\n        minMax[3] = temp;\\n      }\\n      minMax[1] *= transform[3];\\n      minMax[3] *= transform[3];\\n    } else {\\n      temp = minMax[0];\\n      minMax[0] = minMax[1];\\n      minMax[1] = temp;\\n      temp = minMax[2];\\n      minMax[2] = minMax[3];\\n      minMax[3] = temp;\\n\\n      if (transform[1] \u003C 0) {\\n        temp = minMax[1];\\n        minMax[1] = minMax[3];\\n        minMax[3] = temp;\\n      }\\n      minMax[1] *= transform[1];\\n      minMax[3] *= transform[1];\\n\\n      if (transform[2] \u003C 0) {\\n        temp = minMax[0];\\n        minMax[0] = minMax[2];\\n        minMax[2] = temp;\\n      }\\n      minMax[0] *= transform[2];\\n      minMax[2] *= transform[2];\\n    }\\n    minMax[0] += transform[4];\\n    minMax[1] += transform[5];\\n    minMax[2] += transform[4];\\n    minMax[3] += transform[5];\\n  }\\n\\n  \u002F\u002F Concatenates two transformation matrices together and returns the result.\\n  static transform(m1, m2) {\\n    return [\\n      m1[0] * m2[0] + m1[2] * m2[1],\\n      m1[1] * m2[0] + m1[3] * m2[1],\\n      m1[0] * m2[2] + m1[2] * m2[3],\\n      m1[1] * m2[2] + m1[3] * m2[3],\\n      m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\\n      m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\\n    ];\\n  }\\n\\n  \u002F\u002F For 2d affine transforms\\n  static applyTransform(p, m) {\\n    const xt = p[0] * m[0] + p[1] * m[2] + m[4];\\n    const yt = p[0] * m[1] + p[1] * m[3] + m[5];\\n    return [xt, yt];\\n  }\\n\\n  static applyInverseTransform(p, m) {\\n    const d = m[0] * m[3] - m[1] * m[2];\\n    const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) \u002F d;\\n    const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) \u002F d;\\n    return [xt, yt];\\n  }\\n\\n  \u002F\u002F Applies the transform to the rectangle and finds the minimum axially\\n  \u002F\u002F aligned bounding box.\\n  static getAxialAlignedBoundingBox(r, m) {\\n    const p1 = this.applyTransform(r, m);\\n    const p2 = this.applyTransform(r.slice(2, 4), m);\\n    const p3 = this.applyTransform([r[0], r[3]], m);\\n    const p4 = this.applyTransform([r[2], r[1]], m);\\n    return [\\n      Math.min(p1[0], p2[0], p3[0], p4[0]),\\n      Math.min(p1[1], p2[1], p3[1], p4[1]),\\n      Math.max(p1[0], p2[0], p3[0], p4[0]),\\n      Math.max(p1[1], p2[1], p3[1], p4[1]),\\n    ];\\n  }\\n\\n  static inverseTransform(m) {\\n    const d = m[0] * m[3] - m[1] * m[2];\\n    return [\\n      m[3] \u002F d,\\n      -m[1] \u002F d,\\n      -m[2] \u002F d,\\n      m[0] \u002F d,\\n      (m[2] * m[5] - m[4] * m[3]) \u002F d,\\n      (m[4] * m[1] - m[5] * m[0]) \u002F d,\\n    ];\\n  }\\n\\n  \u002F\u002F This calculation uses Singular Value Decomposition.\\n  \u002F\u002F The SVD can be represented with formula A = USV. We are interested in the\\n  \u002F\u002F matrix S here because it represents the scale values.\\n  static singularValueDecompose2dScale(m) {\\n    const transpose = [m[0], m[2], m[1], m[3]];\\n\\n    \u002F\u002F Multiply matrix m with its transpose.\\n    const a = m[0] * transpose[0] + m[1] * transpose[2];\\n    const b = m[0] * transpose[1] + m[1] * transpose[3];\\n    const c = m[2] * transpose[0] + m[3] * transpose[2];\\n    const d = m[2] * transpose[1] + m[3] * transpose[3];\\n\\n    \u002F\u002F Solve the second degree polynomial to get roots.\\n    const first = (a + d) \u002F 2;\\n    const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) \u002F 2;\\n    const sx = first + second || 1;\\n    const sy = first - second || 1;\\n\\n    \u002F\u002F Scale values are the square roots of the eigenvalues.\\n    return [Math.sqrt(sx), Math.sqrt(sy)];\\n  }\\n\\n  \u002F\u002F Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) \u003C (x2,y2)\\n  \u002F\u002F For coordinate systems whose origin lies in the bottom-left, this\\n  \u002F\u002F means normalization to (BL,TR) ordering. For systems with origin in the\\n  \u002F\u002F top-left, this means (TL,BR) ordering.\\n  static normalizeRect(rect) {\\n    const r = rect.slice(0); \u002F\u002F clone rect\\n    if (rect[0] > rect[2]) {\\n      r[0] = rect[2];\\n      r[2] = rect[0];\\n    }\\n    if (rect[1] > rect[3]) {\\n      r[1] = rect[3];\\n      r[3] = rect[1];\\n    }\\n    return r;\\n  }\\n\\n  \u002F\u002F Returns a rectangle [x1, y1, x2, y2] corresponding to the\\n  \u002F\u002F intersection of rect1 and rect2. If no intersection, returns 'null'\\n  \u002F\u002F The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\\n  static intersect(rect1, rect2) {\\n    const xLow = Math.max(\\n      Math.min(rect1[0], rect1[2]),\\n      Math.min(rect2[0], rect2[2])\\n    );\\n    const xHigh = Math.min(\\n      Math.max(rect1[0], rect1[2]),\\n      Math.max(rect2[0], rect2[2])\\n    );\\n    if (xLow > xHigh) {\\n      return null;\\n    }\\n    const yLow = Math.max(\\n      Math.min(rect1[1], rect1[3]),\\n      Math.min(rect2[1], rect2[3])\\n    );\\n    const yHigh = Math.min(\\n      Math.max(rect1[1], rect1[3]),\\n      Math.max(rect2[1], rect2[3])\\n    );\\n    if (yLow > yHigh) {\\n      return null;\\n    }\\n\\n    return [xLow, yLow, xHigh, yHigh];\\n  }\\n\\n  static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\\n    if (t \u003C= 0 || t >= 1) {\\n      return;\\n    }\\n    const mt = 1 - t;\\n    const tt = t * t;\\n    const ttt = tt * t;\\n    const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\\n    const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\\n    minMax[0] = Math.min(minMax[0], x);\\n    minMax[1] = Math.min(minMax[1], y);\\n    minMax[2] = Math.max(minMax[2], x);\\n    minMax[3] = Math.max(minMax[3], y);\\n  }\\n\\n  static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\\n    if (Math.abs(a) \u003C 1e-12) {\\n      if (Math.abs(b) >= 1e-12) {\\n        this.#getExtremumOnCurve(\\n          x0,\\n          x1,\\n          x2,\\n          x3,\\n          y0,\\n          y1,\\n          y2,\\n          y3,\\n          -c \u002F b,\\n          minMax\\n        );\\n      }\\n      return;\\n    }\\n\\n    const delta = b ** 2 - 4 * c * a;\\n    if (delta \u003C 0) {\\n      return;\\n    }\\n    const sqrtDelta = Math.sqrt(delta);\\n    const a2 = 2 * a;\\n    this.#getExtremumOnCurve(\\n      x0,\\n      x1,\\n      x2,\\n      x3,\\n      y0,\\n      y1,\\n      y2,\\n      y3,\\n      (-b + sqrtDelta) \u002F a2,\\n      minMax\\n    );\\n    this.#getExtremumOnCurve(\\n      x0,\\n      x1,\\n      x2,\\n      x3,\\n      y0,\\n      y1,\\n      y2,\\n      y3,\\n      (-b - sqrtDelta) \u002F a2,\\n      minMax\\n    );\\n  }\\n\\n  \u002F\u002F From https:\u002F\u002Fgithub.com\u002Fadobe-webplatform\u002FSnap.svg\u002Fblob\u002Fb365287722a72526000ac4bfcf0ce4cac2faa015\u002Fsrc\u002Fpath.js#L852\\n  static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\\n    if (minMax) {\\n      minMax[0] = Math.min(minMax[0], x0, x3);\\n      minMax[1] = Math.min(minMax[1], y0, y3);\\n      minMax[2] = Math.max(minMax[2], x0, x3);\\n      minMax[3] = Math.max(minMax[3], y0, y3);\\n    } else {\\n      minMax = [\\n        Math.min(x0, x3),\\n        Math.min(y0, y3),\\n        Math.max(x0, x3),\\n        Math.max(y0, y3),\\n      ];\\n    }\\n    this.#getExtremum(\\n      x0,\\n      x1,\\n      x2,\\n      x3,\\n      y0,\\n      y1,\\n      y2,\\n      y3,\\n      3 * (-x0 + 3 * (x1 - x2) + x3),\\n      6 * (x0 - 2 * x1 + x2),\\n      3 * (x1 - x0),\\n      minMax\\n    );\\n    this.#getExtremum(\\n      x0,\\n      x1,\\n      x2,\\n      x3,\\n      y0,\\n      y1,\\n      y2,\\n      y3,\\n      3 * (-y0 + 3 * (y1 - y2) + y3),\\n      6 * (y0 - 2 * y1 + y2),\\n      3 * (y1 - y0),\\n      minMax\\n    );\\n    return minMax;\\n  }\\n}\\n\\nconst PDFStringTranslateTable = [\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\\n  0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\\n  0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\\n  0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\\n  0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\\n  0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\\n];\\n\\nfunction stringToPDFString(str) {\\n  \u002F\u002F See section 7.9.2.2 Text String Type.\\n  \u002F\u002F The string can contain some language codes bracketed with 0x0b,\\n  \u002F\u002F so we must remove them.\\n  if (str[0] >= \\\"\\\\xEF\\\") {\\n    let encoding;\\n    if (str[0] === \\\"\\\\xFE\\\" && str[1] === \\\"\\\\xFF\\\") {\\n      encoding = \\\"utf-16be\\\";\\n      if (str.length % 2 === 1) {\\n        str = str.slice(0, -1);\\n      }\\n    } else if (str[0] === \\\"\\\\xFF\\\" && str[1] === \\\"\\\\xFE\\\") {\\n      encoding = \\\"utf-16le\\\";\\n      if (str.length % 2 === 1) {\\n        str = str.slice(0, -1);\\n      }\\n    } else if (str[0] === \\\"\\\\xEF\\\" && str[1] === \\\"\\\\xBB\\\" && str[2] === \\\"\\\\xBF\\\") {\\n      encoding = \\\"utf-8\\\";\\n    }\\n\\n    if (encoding) {\\n      try {\\n        const decoder = new TextDecoder(encoding, { fatal: true });\\n        const buffer = stringToBytes(str);\\n        const decoded = decoder.decode(buffer);\\n        if (!decoded.includes(\\\"\\\\x1b\\\")) {\\n          return decoded;\\n        }\\n        return decoded.replaceAll(\u002F\\\\x1b[^\\\\x1b]*(?:\\\\x1b|$)\u002Fg, \\\"\\\");\\n      } catch (ex) {\\n        warn(`stringToPDFString: \\\"${ex}\\\".`);\\n      }\\n    }\\n  }\\n  \u002F\u002F ISO Latin 1\\n  const strBuf = [];\\n  for (let i = 0, ii = str.length; i \u003C ii; i++) {\\n    const charCode = str.charCodeAt(i);\\n    if (charCode === 0x1b) {\\n      \u002F\u002F eslint-disable-next-line no-empty\\n      while (++i \u003C ii && str.charCodeAt(i) !== 0x1b) {}\\n      continue;\\n    }\\n    const code = PDFStringTranslateTable[charCode];\\n    strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\\n  }\\n  return strBuf.join(\\\"\\\");\\n}\\n\\nfunction stringToUTF8String(str) {\\n  return decodeURIComponent(escape(str));\\n}\\n\\nfunction utf8StringToString(str) {\\n  return unescape(encodeURIComponent(str));\\n}\\n\\nfunction isArrayEqual(arr1, arr2) {\\n  if (arr1.length !== arr2.length) {\\n    return false;\\n  }\\n  for (let i = 0, ii = arr1.length; i \u003C ii; i++) {\\n    if (arr1[i] !== arr2[i]) {\\n      return false;\\n    }\\n  }\\n  return true;\\n}\\n\\nfunction getModificationDate(date = new Date()) {\\n  const buffer = [\\n    date.getUTCFullYear().toString(),\\n    (date.getUTCMonth() + 1).toString().padStart(2, \\\"0\\\"),\\n    date.getUTCDate().toString().padStart(2, \\\"0\\\"),\\n    date.getUTCHours().toString().padStart(2, \\\"0\\\"),\\n    date.getUTCMinutes().toString().padStart(2, \\\"0\\\"),\\n    date.getUTCSeconds().toString().padStart(2, \\\"0\\\"),\\n  ];\\n\\n  return buffer.join(\\\"\\\");\\n}\\n\\nlet NormalizeRegex = null;\\nlet NormalizationMap = null;\\nfunction normalizeUnicode(str) {\\n  if (!NormalizeRegex) {\\n    \u002F\u002F In order to generate the following regex:\\n    \u002F\u002F  - create a PDF containing all the chars in the range 0000-FFFF with\\n    \u002F\u002F    a NFKC which is different of the char.\\n    \u002F\u002F  - copy and paste all those chars and get the ones where NFKC is\\n    \u002F\u002F    required.\\n    \u002F\u002F It appears that most the chars here contain some ligatures.\\n    NormalizeRegex =\\n      \u002F([\\\\u00a0\\\\u00b5\\\\u037e\\\\u0eb3\\\\u2000-\\\\u200a\\\\u202f\\\\u2126\\\\ufb00-\\\\ufb04\\\\ufb06\\\\ufb20-\\\\ufb36\\\\ufb38-\\\\ufb3c\\\\ufb3e\\\\ufb40-\\\\ufb41\\\\ufb43-\\\\ufb44\\\\ufb46-\\\\ufba1\\\\ufba4-\\\\ufba9\\\\ufbae-\\\\ufbb1\\\\ufbd3-\\\\ufbdc\\\\ufbde-\\\\ufbe7\\\\ufbea-\\\\ufbf8\\\\ufbfc-\\\\ufbfd\\\\ufc00-\\\\ufc5d\\\\ufc64-\\\\ufcf1\\\\ufcf5-\\\\ufd3d\\\\ufd88\\\\ufdf4\\\\ufdfa-\\\\ufdfb\\\\ufe71\\\\ufe77\\\\ufe79\\\\ufe7b\\\\ufe7d]+)|(\\\\ufb05+)\u002Fgu;\\n    NormalizationMap = new Map([[\\\"ﬅ\\\", \\\"ſt\\\"]]);\\n  }\\n  return str.replaceAll(NormalizeRegex, (_, p1, p2) =>\\n    p1 ? p1.normalize(\\\"NFKC\\\") : NormalizationMap.get(p2)\\n  );\\n}\\n\\nfunction getUuid() {\\n  if (\\n    (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) ||\\n    (typeof crypto !== \\\"undefined\\\" && typeof crypto?.randomUUID === \\\"function\\\")\\n  ) {\\n    return crypto.randomUUID();\\n  }\\n  const buf = new Uint8Array(32);\\n  if (\\n    typeof crypto !== \\\"undefined\\\" &&\\n    typeof crypto?.getRandomValues === \\\"function\\\"\\n  ) {\\n    crypto.getRandomValues(buf);\\n  } else {\\n    for (let i = 0; i \u003C 32; i++) {\\n      buf[i] = Math.floor(Math.random() * 255);\\n    }\\n  }\\n  return bytesToString(buf);\\n}\\n\\nconst AnnotationPrefix = \\\"pdfjs_internal_id_\\\";\\n\\nconst FontRenderOps = {\\n  BEZIER_CURVE_TO: 0,\\n  MOVE_TO: 1,\\n  LINE_TO: 2,\\n  QUADRATIC_CURVE_TO: 3,\\n  RESTORE: 4,\\n  SAVE: 5,\\n  SCALE: 6,\\n  TRANSFORM: 7,\\n  TRANSLATE: 8,\\n};\\n\\nexport {\\n  AbortException,\\n  AnnotationActionEventType,\\n  AnnotationBorderStyleType,\\n  AnnotationEditorParamsType,\\n  AnnotationEditorPrefix,\\n  AnnotationEditorType,\\n  AnnotationFieldFlag,\\n  AnnotationFlag,\\n  AnnotationMode,\\n  AnnotationPrefix,\\n  AnnotationReplyType,\\n  AnnotationType,\\n  assert,\\n  BaseException,\\n  BASELINE_FACTOR,\\n  bytesToString,\\n  CMapCompressionType,\\n  createValidAbsoluteUrl,\\n  DocumentActionEventType,\\n  FeatureTest,\\n  FONT_IDENTITY_MATRIX,\\n  FontRenderOps,\\n  FormatError,\\n  getModificationDate,\\n  getUuid,\\n  getVerbosityLevel,\\n  IDENTITY_MATRIX,\\n  ImageKind,\\n  info,\\n  InvalidPDFException,\\n  isArrayEqual,\\n  isNodeJS,\\n  LINE_DESCENT_FACTOR,\\n  LINE_FACTOR,\\n  MAX_IMAGE_SIZE_TO_CACHE,\\n  MissingPDFException,\\n  normalizeUnicode,\\n  objectFromMap,\\n  objectSize,\\n  OPS,\\n  PageActionEventType,\\n  PasswordException,\\n  PasswordResponses,\\n  PermissionFlag,\\n  RenderingIntentFlag,\\n  setVerbosityLevel,\\n  shadow,\\n  string32,\\n  stringToBytes,\\n  stringToPDFString,\\n  stringToUTF8String,\\n  TextRenderingMode,\\n  UnexpectedResponseException,\\n  UnknownErrorException,\\n  unreachable,\\n  utf8StringToString,\\n  Util,\\n  VerbosityLevel,\\n  warn,\\n};\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { assert, shadow, unreachable } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nconst CIRCULAR_REF = Symbol(\\\"CIRCULAR_REF\\\");\\nconst EOF = Symbol(\\\"EOF\\\");\\n\\nlet CmdCache = Object.create(null);\\nlet NameCache = Object.create(null);\\nlet RefCache = Object.create(null);\\n\\nfunction clearPrimitiveCaches() {\\n  CmdCache = Object.create(null);\\n  NameCache = Object.create(null);\\n  RefCache = Object.create(null);\\n}\\n\\nclass Name {\\n  constructor(name) {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      typeof name !== \\\"string\\\"\\n    ) {\\n      unreachable('Name: The \\\"name\\\" must be a string.');\\n    }\\n    this.name = name;\\n  }\\n\\n  static get(name) {\\n    \u002F\u002F eslint-disable-next-line no-restricted-syntax\\n    return (NameCache[name] ||= new Name(name));\\n  }\\n}\\n\\nclass Cmd {\\n  constructor(cmd) {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      typeof cmd !== \\\"string\\\"\\n    ) {\\n      unreachable('Cmd: The \\\"cmd\\\" must be a string.');\\n    }\\n    this.cmd = cmd;\\n  }\\n\\n  static get(cmd) {\\n    \u002F\u002F eslint-disable-next-line no-restricted-syntax\\n    return (CmdCache[cmd] ||= new Cmd(cmd));\\n  }\\n}\\n\\nconst nonSerializable = function nonSerializableClosure() {\\n  return nonSerializable; \u002F\u002F Creating closure on some variable.\\n};\\n\\nclass Dict {\\n  constructor(xref = null) {\\n    \u002F\u002F Map should only be used internally, use functions below to access.\\n    this._map = Object.create(null);\\n    this.xref = xref;\\n    this.objId = null;\\n    this.suppressEncryption = false;\\n    this.__nonSerializable__ = nonSerializable; \u002F\u002F Disable cloning of the Dict.\\n  }\\n\\n  assignXref(newXref) {\\n    this.xref = newXref;\\n  }\\n\\n  get size() {\\n    return Object.keys(this._map).length;\\n  }\\n\\n  \u002F\u002F Automatically dereferences Ref objects.\\n  get(key1, key2, key3) {\\n    let value = this._map[key1];\\n    if (value === undefined && key2 !== undefined) {\\n      if (\\n        (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n        key2.length \u003C key1.length\\n      ) {\\n        unreachable(\\\"Dict.get: Expected keys to be ordered by length.\\\");\\n      }\\n      value = this._map[key2];\\n      if (value === undefined && key3 !== undefined) {\\n        if (\\n          (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n          key3.length \u003C key2.length\\n        ) {\\n          unreachable(\\\"Dict.get: Expected keys to be ordered by length.\\\");\\n        }\\n        value = this._map[key3];\\n      }\\n    }\\n    if (value instanceof Ref && this.xref) {\\n      return this.xref.fetch(value, this.suppressEncryption);\\n    }\\n    return value;\\n  }\\n\\n  \u002F\u002F Same as get(), but returns a promise and uses fetchIfRefAsync().\\n  async getAsync(key1, key2, key3) {\\n    let value = this._map[key1];\\n    if (value === undefined && key2 !== undefined) {\\n      if (\\n        (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n        key2.length \u003C key1.length\\n      ) {\\n        unreachable(\\\"Dict.getAsync: Expected keys to be ordered by length.\\\");\\n      }\\n      value = this._map[key2];\\n      if (value === undefined && key3 !== undefined) {\\n        if (\\n          (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n          key3.length \u003C key2.length\\n        ) {\\n          unreachable(\\\"Dict.getAsync: Expected keys to be ordered by length.\\\");\\n        }\\n        value = this._map[key3];\\n      }\\n    }\\n    if (value instanceof Ref && this.xref) {\\n      return this.xref.fetchAsync(value, this.suppressEncryption);\\n    }\\n    return value;\\n  }\\n\\n  \u002F\u002F Same as get(), but dereferences all elements if the result is an Array.\\n  getArray(key1, key2, key3) {\\n    let value = this._map[key1];\\n    if (value === undefined && key2 !== undefined) {\\n      if (\\n        (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n        key2.length \u003C key1.length\\n      ) {\\n        unreachable(\\\"Dict.getArray: Expected keys to be ordered by length.\\\");\\n      }\\n      value = this._map[key2];\\n      if (value === undefined && key3 !== undefined) {\\n        if (\\n          (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n          key3.length \u003C key2.length\\n        ) {\\n          unreachable(\\\"Dict.getArray: Expected keys to be ordered by length.\\\");\\n        }\\n        value = this._map[key3];\\n      }\\n    }\\n    if (value instanceof Ref && this.xref) {\\n      value = this.xref.fetch(value, this.suppressEncryption);\\n    }\\n\\n    if (Array.isArray(value)) {\\n      value = value.slice(); \u002F\u002F Ensure that we don't modify the Dict data.\\n      for (let i = 0, ii = value.length; i \u003C ii; i++) {\\n        if (value[i] instanceof Ref && this.xref) {\\n          value[i] = this.xref.fetch(value[i], this.suppressEncryption);\\n        }\\n      }\\n    }\\n    return value;\\n  }\\n\\n  \u002F\u002F No dereferencing.\\n  getRaw(key) {\\n    return this._map[key];\\n  }\\n\\n  getKeys() {\\n    return Object.keys(this._map);\\n  }\\n\\n  \u002F\u002F No dereferencing.\\n  getRawValues() {\\n    return Object.values(this._map);\\n  }\\n\\n  set(key, value) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      if (typeof key !== \\\"string\\\") {\\n        unreachable('Dict.set: The \\\"key\\\" must be a string.');\\n      } else if (value === undefined) {\\n        unreachable('Dict.set: The \\\"value\\\" cannot be undefined.');\\n      }\\n    }\\n    this._map[key] = value;\\n  }\\n\\n  has(key) {\\n    return this._map[key] !== undefined;\\n  }\\n\\n  forEach(callback) {\\n    for (const key in this._map) {\\n      callback(key, this.get(key));\\n    }\\n  }\\n\\n  static get empty() {\\n    const emptyDict = new Dict(null);\\n\\n    emptyDict.set = (key, value) => {\\n      unreachable(\\\"Should not call `set` on the empty dictionary.\\\");\\n    };\\n    return shadow(this, \\\"empty\\\", emptyDict);\\n  }\\n\\n  static merge({ xref, dictArray, mergeSubDicts = false }) {\\n    const mergedDict = new Dict(xref),\\n      properties = new Map();\\n\\n    for (const dict of dictArray) {\\n      if (!(dict instanceof Dict)) {\\n        continue;\\n      }\\n      for (const [key, value] of Object.entries(dict._map)) {\\n        let property = properties.get(key);\\n        if (property === undefined) {\\n          property = [];\\n          properties.set(key, property);\\n        } else if (!mergeSubDicts || !(value instanceof Dict)) {\\n          \u002F\u002F Ignore additional entries, if either:\\n          \u002F\u002F  - This is a \\\"shallow\\\" merge, where only the first element matters.\\n          \u002F\u002F  - The value is *not* a `Dict`, since other types cannot be merged.\\n          continue;\\n        }\\n        property.push(value);\\n      }\\n    }\\n    for (const [name, values] of properties) {\\n      if (values.length === 1 || !(values[0] instanceof Dict)) {\\n        mergedDict._map[name] = values[0];\\n        continue;\\n      }\\n      const subDict = new Dict(xref);\\n\\n      for (const dict of values) {\\n        for (const [key, value] of Object.entries(dict._map)) {\\n          if (subDict._map[key] === undefined) {\\n            subDict._map[key] = value;\\n          }\\n        }\\n      }\\n      if (subDict.size > 0) {\\n        mergedDict._map[name] = subDict;\\n      }\\n    }\\n    properties.clear();\\n\\n    return mergedDict.size > 0 ? mergedDict : Dict.empty;\\n  }\\n\\n  clone() {\\n    const dict = new Dict(this.xref);\\n    for (const key of this.getKeys()) {\\n      dict.set(key, this.getRaw(key));\\n    }\\n    return dict;\\n  }\\n}\\n\\nclass Ref {\\n  constructor(num, gen) {\\n    this.num = num;\\n    this.gen = gen;\\n  }\\n\\n  toString() {\\n    \u002F\u002F This function is hot, so we make the string as compact as possible.\\n    \u002F\u002F |this.gen| is almost always zero, so we treat that case specially.\\n    if (this.gen === 0) {\\n      return `${this.num}R`;\\n    }\\n    return `${this.num}R${this.gen}`;\\n  }\\n\\n  static fromString(str) {\\n    const ref = RefCache[str];\\n    if (ref) {\\n      return ref;\\n    }\\n    const m = \u002F^(\\\\d+)R(\\\\d*)$\u002F.exec(str);\\n    if (!m || m[1] === \\\"0\\\") {\\n      return null;\\n    }\\n\\n    \u002F\u002F eslint-disable-next-line no-restricted-syntax\\n    return (RefCache[str] = new Ref(\\n      parseInt(m[1]),\\n      !m[2] ? 0 : parseInt(m[2])\\n    ));\\n  }\\n\\n  static get(num, gen) {\\n    const key = gen === 0 ? `${num}R` : `${num}R${gen}`;\\n    \u002F\u002F eslint-disable-next-line no-restricted-syntax\\n    return (RefCache[key] ||= new Ref(num, gen));\\n  }\\n}\\n\\n\u002F\u002F The reference is identified by number and generation.\\n\u002F\u002F This structure stores only one instance of the reference.\\nclass RefSet {\\n  constructor(parent = null) {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      parent &&\\n      !(parent instanceof RefSet)\\n    ) {\\n      unreachable('RefSet: Invalid \\\"parent\\\" value.');\\n    }\\n    this._set = new Set(parent?._set);\\n  }\\n\\n  has(ref) {\\n    return this._set.has(ref.toString());\\n  }\\n\\n  put(ref) {\\n    this._set.add(ref.toString());\\n  }\\n\\n  remove(ref) {\\n    this._set.delete(ref.toString());\\n  }\\n\\n  [Symbol.iterator]() {\\n    return this._set.values();\\n  }\\n\\n  clear() {\\n    this._set.clear();\\n  }\\n}\\n\\nclass RefSetCache {\\n  constructor() {\\n    this._map = new Map();\\n  }\\n\\n  get size() {\\n    return this._map.size;\\n  }\\n\\n  get(ref) {\\n    return this._map.get(ref.toString());\\n  }\\n\\n  has(ref) {\\n    return this._map.has(ref.toString());\\n  }\\n\\n  put(ref, obj) {\\n    this._map.set(ref.toString(), obj);\\n  }\\n\\n  putAlias(ref, aliasRef) {\\n    this._map.set(ref.toString(), this.get(aliasRef));\\n  }\\n\\n  [Symbol.iterator]() {\\n    return this._map.values();\\n  }\\n\\n  clear() {\\n    this._map.clear();\\n  }\\n\\n  *items() {\\n    for (const [ref, value] of this._map) {\\n      yield [Ref.fromString(ref), value];\\n    }\\n  }\\n}\\n\\nfunction isName(v, name) {\\n  return v instanceof Name && (name === undefined || v.name === name);\\n}\\n\\nfunction isCmd(v, cmd) {\\n  return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);\\n}\\n\\nfunction isDict(v, type) {\\n  return (\\n    v instanceof Dict && (type === undefined || isName(v.get(\\\"Type\\\"), type))\\n  );\\n}\\n\\nfunction isRefsEqual(v1, v2) {\\n  if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n    assert(\\n      v1 instanceof Ref && v2 instanceof Ref,\\n      \\\"isRefsEqual: Both parameters should be `Ref`s.\\\"\\n    );\\n  }\\n  return v1.num === v2.num && v1.gen === v2.gen;\\n}\\n\\nexport {\\n  CIRCULAR_REF,\\n  clearPrimitiveCaches,\\n  Cmd,\\n  Dict,\\n  EOF,\\n  isCmd,\\n  isDict,\\n  isName,\\n  isRefsEqual,\\n  Name,\\n  Ref,\\n  RefSet,\\n  RefSetCache,\\n};\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { bytesToString, shadow, unreachable } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nclass BaseStream {\\n  constructor() {\\n    if (this.constructor === BaseStream) {\\n      unreachable(\\\"Cannot initialize BaseStream.\\\");\\n    }\\n  }\\n\\n  \u002F\u002F eslint-disable-next-line getter-return\\n  get length() {\\n    unreachable(\\\"Abstract getter `length` accessed\\\");\\n  }\\n\\n  \u002F\u002F eslint-disable-next-line getter-return\\n  get isEmpty() {\\n    unreachable(\\\"Abstract getter `isEmpty` accessed\\\");\\n  }\\n\\n  get isDataLoaded() {\\n    return shadow(this, \\\"isDataLoaded\\\", true);\\n  }\\n\\n  getByte() {\\n    unreachable(\\\"Abstract method `getByte` called\\\");\\n  }\\n\\n  getBytes(length) {\\n    unreachable(\\\"Abstract method `getBytes` called\\\");\\n  }\\n\\n  peekByte() {\\n    const peekedByte = this.getByte();\\n    if (peekedByte !== -1) {\\n      this.pos--;\\n    }\\n    return peekedByte;\\n  }\\n\\n  peekBytes(length) {\\n    const bytes = this.getBytes(length);\\n    this.pos -= bytes.length;\\n    return bytes;\\n  }\\n\\n  getUint16() {\\n    const b0 = this.getByte();\\n    const b1 = this.getByte();\\n    if (b0 === -1 || b1 === -1) {\\n      return -1;\\n    }\\n    return (b0 \u003C\u003C 8) + b1;\\n  }\\n\\n  getInt32() {\\n    const b0 = this.getByte();\\n    const b1 = this.getByte();\\n    const b2 = this.getByte();\\n    const b3 = this.getByte();\\n    return (b0 \u003C\u003C 24) + (b1 \u003C\u003C 16) + (b2 \u003C\u003C 8) + b3;\\n  }\\n\\n  getByteRange(begin, end) {\\n    unreachable(\\\"Abstract method `getByteRange` called\\\");\\n  }\\n\\n  getString(length) {\\n    return bytesToString(this.getBytes(length));\\n  }\\n\\n  skip(n) {\\n    this.pos += n || 1;\\n  }\\n\\n  reset() {\\n    unreachable(\\\"Abstract method `reset` called\\\");\\n  }\\n\\n  moveStart() {\\n    unreachable(\\\"Abstract method `moveStart` called\\\");\\n  }\\n\\n  makeSubStream(start, length, dict = null) {\\n    unreachable(\\\"Abstract method `makeSubStream` called\\\");\\n  }\\n\\n  \u002F**\\n   * @returns {Array | null}\\n   *\u002F\\n  getBaseStreams() {\\n    return null;\\n  }\\n}\\n\\nexport { BaseStream };\\n\",\"\u002F* Copyright 2019 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  AnnotationEditorPrefix,\\n  assert,\\n  BaseException,\\n  objectSize,\\n  stringToPDFString,\\n  Util,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { Dict, isName, Ref, RefSet } from \\\".\u002Fprimitives.js\\\";\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\n\\nconst PDF_VERSION_REGEXP = \u002F^[1-9]\\\\.\\\\d$\u002F;\\n\\nfunction getLookupTableFactory(initializer) {\\n  let lookup;\\n  return function () {\\n    if (initializer) {\\n      lookup = Object.create(null);\\n      initializer(lookup);\\n      initializer = null;\\n    }\\n    return lookup;\\n  };\\n}\\n\\nclass MissingDataException extends BaseException {\\n  constructor(begin, end) {\\n    super(`Missing data [${begin}, ${end})`, \\\"MissingDataException\\\");\\n    this.begin = begin;\\n    this.end = end;\\n  }\\n}\\n\\nclass ParserEOFException extends BaseException {\\n  constructor(msg) {\\n    super(msg, \\\"ParserEOFException\\\");\\n  }\\n}\\n\\nclass XRefEntryException extends BaseException {\\n  constructor(msg) {\\n    super(msg, \\\"XRefEntryException\\\");\\n  }\\n}\\n\\nclass XRefParseException extends BaseException {\\n  constructor(msg) {\\n    super(msg, \\\"XRefParseException\\\");\\n  }\\n}\\n\\n\u002F**\\n * Combines multiple ArrayBuffers into a single Uint8Array.\\n * @param {Array\u003CArrayBuffer>} arr - An array of ArrayBuffers.\\n * @returns {Uint8Array}\\n *\u002F\\nfunction arrayBuffersToBytes(arr) {\\n  if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n    for (const item of arr) {\\n      assert(\\n        item instanceof ArrayBuffer,\\n        \\\"arrayBuffersToBytes - expected an ArrayBuffer.\\\"\\n      );\\n    }\\n  }\\n  const length = arr.length;\\n  if (length === 0) {\\n    return new Uint8Array(0);\\n  }\\n  if (length === 1) {\\n    return new Uint8Array(arr[0]);\\n  }\\n  let dataLength = 0;\\n  for (let i = 0; i \u003C length; i++) {\\n    dataLength += arr[i].byteLength;\\n  }\\n  const data = new Uint8Array(dataLength);\\n  let pos = 0;\\n  for (let i = 0; i \u003C length; i++) {\\n    const item = new Uint8Array(arr[i]);\\n    data.set(item, pos);\\n    pos += item.byteLength;\\n  }\\n  return data;\\n}\\n\\n\u002F**\\n * Get the value of an inheritable property.\\n *\\n * If the PDF specification explicitly lists a property in a dictionary as\\n * inheritable, then the value of the property may be present in the dictionary\\n * itself or in one or more parents of the dictionary.\\n *\\n * If the key is not found in the tree, `undefined` is returned. Otherwise,\\n * the value for the key is returned or, if `stopWhenFound` is `false`, a list\\n * of values is returned.\\n *\\n * @param {Dict} dict - Dictionary from where to start the traversal.\\n * @param {string} key - The key of the property to find the value for.\\n * @param {boolean} getArray - Whether or not the value should be fetched as an\\n *   array. The default value is `false`.\\n * @param {boolean} stopWhenFound - Whether or not to stop the traversal when\\n *   the key is found. If set to `false`, we always walk up the entire parent\\n *   chain, for example to be able to find `\\\\Resources` placed on multiple\\n *   levels of the tree. The default value is `true`.\\n *\u002F\\nfunction getInheritableProperty({\\n  dict,\\n  key,\\n  getArray = false,\\n  stopWhenFound = true,\\n}) {\\n  let values;\\n  const visited = new RefSet();\\n\\n  while (dict instanceof Dict && !(dict.objId && visited.has(dict.objId))) {\\n    if (dict.objId) {\\n      visited.put(dict.objId);\\n    }\\n    const value = getArray ? dict.getArray(key) : dict.get(key);\\n    if (value !== undefined) {\\n      if (stopWhenFound) {\\n        return value;\\n      }\\n      (values ||= []).push(value);\\n    }\\n    dict = dict.get(\\\"Parent\\\");\\n  }\\n  return values;\\n}\\n\\n\u002F\u002F prettier-ignore\\nconst ROMAN_NUMBER_MAP = [\\n  \\\"\\\", \\\"C\\\", \\\"CC\\\", \\\"CCC\\\", \\\"CD\\\", \\\"D\\\", \\\"DC\\\", \\\"DCC\\\", \\\"DCCC\\\", \\\"CM\\\",\\n  \\\"\\\", \\\"X\\\", \\\"XX\\\", \\\"XXX\\\", \\\"XL\\\", \\\"L\\\", \\\"LX\\\", \\\"LXX\\\", \\\"LXXX\\\", \\\"XC\\\",\\n  \\\"\\\", \\\"I\\\", \\\"II\\\", \\\"III\\\", \\\"IV\\\", \\\"V\\\", \\\"VI\\\", \\\"VII\\\", \\\"VIII\\\", \\\"IX\\\"\\n];\\n\\n\u002F**\\n * Converts positive integers to (upper case) Roman numerals.\\n * @param {number} number - The number that should be converted.\\n * @param {boolean} lowerCase - Indicates if the result should be converted\\n *   to lower case letters. The default value is `false`.\\n * @returns {string} The resulting Roman number.\\n *\u002F\\nfunction toRomanNumerals(number, lowerCase = false) {\\n  assert(\\n    Number.isInteger(number) && number > 0,\\n    \\\"The number should be a positive integer.\\\"\\n  );\\n  const romanBuf = [];\\n  let pos;\\n  \u002F\u002F Thousands\\n  while (number >= 1000) {\\n    number -= 1000;\\n    romanBuf.push(\\\"M\\\");\\n  }\\n  \u002F\u002F Hundreds\\n  pos = (number \u002F 100) | 0;\\n  number %= 100;\\n  romanBuf.push(ROMAN_NUMBER_MAP[pos]);\\n  \u002F\u002F Tens\\n  pos = (number \u002F 10) | 0;\\n  number %= 10;\\n  romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);\\n  \u002F\u002F Ones\\n  romanBuf.push(ROMAN_NUMBER_MAP[20 + number]); \u002F\u002F eslint-disable-line unicorn\u002Fno-array-push-push\\n\\n  const romanStr = romanBuf.join(\\\"\\\");\\n  return lowerCase ? romanStr.toLowerCase() : romanStr;\\n}\\n\\n\u002F\u002F Calculate the base 2 logarithm of the number `x`. This differs from the\\n\u002F\u002F native function in the sense that it returns the ceiling value and that it\\n\u002F\u002F returns 0 instead of `Infinity`\u002F`NaN` for `x` values smaller than\u002Fequal to 0.\\nfunction log2(x) {\\n  if (x \u003C= 0) {\\n    return 0;\\n  }\\n  return Math.ceil(Math.log2(x));\\n}\\n\\nfunction readInt8(data, offset) {\\n  return (data[offset] \u003C\u003C 24) >> 24;\\n}\\n\\nfunction readUint16(data, offset) {\\n  return (data[offset] \u003C\u003C 8) | data[offset + 1];\\n}\\n\\nfunction readUint32(data, offset) {\\n  return (\\n    ((data[offset] \u003C\u003C 24) |\\n      (data[offset + 1] \u003C\u003C 16) |\\n      (data[offset + 2] \u003C\u003C 8) |\\n      data[offset + 3]) >>>\\n    0\\n  );\\n}\\n\\n\u002F\u002F Checks if ch is one of the following characters: SPACE, TAB, CR or LF.\\nfunction isWhiteSpace(ch) {\\n  return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a;\\n}\\n\\n\u002F**\\n * Checks if something is an Array containing only boolean values,\\n * and (optionally) checks its length.\\n * @param {any} arr\\n * @param {number | null} len\\n * @returns {boolean}\\n *\u002F\\nfunction isBooleanArray(arr, len) {\\n  return (\\n    Array.isArray(arr) &&\\n    (len === null || arr.length === len) &&\\n    arr.every(x => typeof x === \\\"boolean\\\")\\n  );\\n}\\n\\n\u002F**\\n * Checks if something is an Array containing only numbers,\\n * and (optionally) checks its length.\\n * @param {any} arr\\n * @param {number | null} len\\n * @returns {boolean}\\n *\u002F\\nfunction isNumberArray(arr, len) {\\n  return (\\n    Array.isArray(arr) &&\\n    (len === null || arr.length === len) &&\\n    arr.every(x => typeof x === \\\"number\\\")\\n  );\\n}\\n\\n\u002F\u002F Returns the matrix, or the fallback value if it's invalid.\\nfunction lookupMatrix(arr, fallback) {\\n  return isNumberArray(arr, 6) ? arr : fallback;\\n}\\n\\n\u002F\u002F Returns the rectangle, or the fallback value if it's invalid.\\nfunction lookupRect(arr, fallback) {\\n  return isNumberArray(arr, 4) ? arr : fallback;\\n}\\n\\n\u002F\u002F Returns the normalized rectangle, or the fallback value if it's invalid.\\nfunction lookupNormalRect(arr, fallback) {\\n  return isNumberArray(arr, 4) ? Util.normalizeRect(arr) : fallback;\\n}\\n\\n\u002F**\\n * AcroForm field names use an array like notation to refer to\\n * repeated XFA elements e.g. foo.bar[nnn].\\n * see: XFA Spec Chapter 3 - Repeated Elements\\n *\\n * @param {string} path - XFA path name.\\n * @returns {Array} - Array of Objects with the name and pos of\\n * each part of the path.\\n *\u002F\\nfunction parseXFAPath(path) {\\n  const positionPattern = \u002F(.+)\\\\[(\\\\d+)\\\\]$\u002F;\\n  return path.split(\\\".\\\").map(component => {\\n    const m = component.match(positionPattern);\\n    if (m) {\\n      return { name: m[1], pos: parseInt(m[2], 10) };\\n    }\\n    return { name: component, pos: 0 };\\n  });\\n}\\n\\nfunction escapePDFName(str) {\\n  const buffer = [];\\n  let start = 0;\\n  for (let i = 0, ii = str.length; i \u003C ii; i++) {\\n    const char = str.charCodeAt(i);\\n    \u002F\u002F Whitespace or delimiters aren't regular chars, so escape them.\\n    if (\\n      char \u003C 0x21 ||\\n      char > 0x7e ||\\n      char === 0x23 \u002F* # *\u002F ||\\n      char === 0x28 \u002F* ( *\u002F ||\\n      char === 0x29 \u002F* ) *\u002F ||\\n      char === 0x3c \u002F* \u003C *\u002F ||\\n      char === 0x3e \u002F* > *\u002F ||\\n      char === 0x5b \u002F* [ *\u002F ||\\n      char === 0x5d \u002F* ] *\u002F ||\\n      char === 0x7b \u002F* { *\u002F ||\\n      char === 0x7d \u002F* } *\u002F ||\\n      char === 0x2f \u002F* \u002F *\u002F ||\\n      char === 0x25 \u002F* % *\u002F\\n    ) {\\n      if (start \u003C i) {\\n        buffer.push(str.substring(start, i));\\n      }\\n      buffer.push(`#${char.toString(16)}`);\\n      start = i + 1;\\n    }\\n  }\\n\\n  if (buffer.length === 0) {\\n    return str;\\n  }\\n\\n  if (start \u003C str.length) {\\n    buffer.push(str.substring(start, str.length));\\n  }\\n\\n  return buffer.join(\\\"\\\");\\n}\\n\\n\u002F\u002F Replace \\\"(\\\", \\\")\\\", \\\"\\\\n\\\", \\\"\\\\r\\\" and \\\"\\\\\\\" by \\\"\\\\(\\\", \\\"\\\\)\\\", \\\"\\\\\\\\n\\\", \\\"\\\\\\\\r\\\" and \\\"\\\\\\\\\\\"\\n\u002F\u002F in order to write it in a PDF file.\\nfunction escapeString(str) {\\n  return str.replaceAll(\u002F([()\\\\\\\\\\\\n\\\\r])\u002Fg, match => {\\n    if (match === \\\"\\\\n\\\") {\\n      return \\\"\\\\\\\\n\\\";\\n    } else if (match === \\\"\\\\r\\\") {\\n      return \\\"\\\\\\\\r\\\";\\n    }\\n    return `\\\\\\\\${match}`;\\n  });\\n}\\n\\nfunction _collectJS(entry, xref, list, parents) {\\n  if (!entry) {\\n    return;\\n  }\\n\\n  let parent = null;\\n  if (entry instanceof Ref) {\\n    if (parents.has(entry)) {\\n      \u002F\u002F If we've already found entry then we've a cycle.\\n      return;\\n    }\\n    parent = entry;\\n    parents.put(parent);\\n    entry = xref.fetch(entry);\\n  }\\n  if (Array.isArray(entry)) {\\n    for (const element of entry) {\\n      _collectJS(element, xref, list, parents);\\n    }\\n  } else if (entry instanceof Dict) {\\n    if (isName(entry.get(\\\"S\\\"), \\\"JavaScript\\\")) {\\n      const js = entry.get(\\\"JS\\\");\\n      let code;\\n      if (js instanceof BaseStream) {\\n        code = js.getString();\\n      } else if (typeof js === \\\"string\\\") {\\n        code = js;\\n      }\\n      code &&= stringToPDFString(code).replaceAll(\\\"\\\\x00\\\", \\\"\\\");\\n      if (code) {\\n        list.push(code);\\n      }\\n    }\\n    _collectJS(entry.getRaw(\\\"Next\\\"), xref, list, parents);\\n  }\\n\\n  if (parent) {\\n    parents.remove(parent);\\n  }\\n}\\n\\nfunction collectActions(xref, dict, eventType) {\\n  const actions = Object.create(null);\\n  const additionalActionsDicts = getInheritableProperty({\\n    dict,\\n    key: \\\"AA\\\",\\n    stopWhenFound: false,\\n  });\\n  if (additionalActionsDicts) {\\n    \u002F\u002F additionalActionsDicts contains dicts from ancestors\\n    \u002F\u002F as they're found in the tree from bottom to top.\\n    \u002F\u002F So the dicts are visited in reverse order to guarantee\\n    \u002F\u002F that actions from elder ancestors will be overwritten\\n    \u002F\u002F by ones from younger ancestors.\\n    for (let i = additionalActionsDicts.length - 1; i >= 0; i--) {\\n      const additionalActions = additionalActionsDicts[i];\\n      if (!(additionalActions instanceof Dict)) {\\n        continue;\\n      }\\n      for (const key of additionalActions.getKeys()) {\\n        const action = eventType[key];\\n        if (!action) {\\n          continue;\\n        }\\n        const actionDict = additionalActions.getRaw(key);\\n        const parents = new RefSet();\\n        const list = [];\\n        _collectJS(actionDict, xref, list, parents);\\n        if (list.length > 0) {\\n          actions[action] = list;\\n        }\\n      }\\n    }\\n  }\\n  \u002F\u002F Collect the Action if any (we may have one on pushbutton).\\n  if (dict.has(\\\"A\\\")) {\\n    const actionDict = dict.get(\\\"A\\\");\\n    const parents = new RefSet();\\n    const list = [];\\n    _collectJS(actionDict, xref, list, parents);\\n    if (list.length > 0) {\\n      actions.Action = list;\\n    }\\n  }\\n  return objectSize(actions) > 0 ? actions : null;\\n}\\n\\nconst XMLEntities = {\\n  \u002F* \u003C *\u002F 0x3c: \\\"&lt;\\\",\\n  \u002F* > *\u002F 0x3e: \\\"&gt;\\\",\\n  \u002F* & *\u002F 0x26: \\\"&amp;\\\",\\n  \u002F* \\\" *\u002F 0x22: \\\"&quot;\\\",\\n  \u002F* ' *\u002F 0x27: \\\"&apos;\\\",\\n};\\n\\nfunction* codePointIter(str) {\\n  for (let i = 0, ii = str.length; i \u003C ii; i++) {\\n    const char = str.codePointAt(i);\\n    if (char > 0xd7ff && (char \u003C 0xe000 || char > 0xfffd)) {\\n      \u002F\u002F char is represented by two u16\\n      i++;\\n    }\\n    yield char;\\n  }\\n}\\n\\nfunction encodeToXmlString(str) {\\n  const buffer = [];\\n  let start = 0;\\n  for (let i = 0, ii = str.length; i \u003C ii; i++) {\\n    const char = str.codePointAt(i);\\n    if (0x20 \u003C= char && char \u003C= 0x7e) {\\n      \u002F\u002F ascii\\n      const entity = XMLEntities[char];\\n      if (entity) {\\n        if (start \u003C i) {\\n          buffer.push(str.substring(start, i));\\n        }\\n        buffer.push(entity);\\n        start = i + 1;\\n      }\\n    } else {\\n      if (start \u003C i) {\\n        buffer.push(str.substring(start, i));\\n      }\\n      buffer.push(`&#x${char.toString(16).toUpperCase()};`);\\n      if (char > 0xd7ff && (char \u003C 0xe000 || char > 0xfffd)) {\\n        \u002F\u002F char is represented by two u16\\n        i++;\\n      }\\n      start = i + 1;\\n    }\\n  }\\n\\n  if (buffer.length === 0) {\\n    return str;\\n  }\\n  if (start \u003C str.length) {\\n    buffer.push(str.substring(start, str.length));\\n  }\\n  return buffer.join(\\\"\\\");\\n}\\n\\nfunction validateFontName(fontFamily, mustWarn = false) {\\n  \u002F\u002F See https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FCSS\u002Fstring.\\n  const m = \u002F^(\\\"|').*(\\\"|')$\u002F.exec(fontFamily);\\n  if (m && m[1] === m[2]) {\\n    const re = new RegExp(`[^\\\\\\\\\\\\\\\\]${m[1]}`);\\n    if (re.test(fontFamily.slice(1, -1))) {\\n      if (mustWarn) {\\n        warn(`FontFamily contains unescaped ${m[1]}: ${fontFamily}.`);\\n      }\\n      return false;\\n    }\\n  } else {\\n    \u002F\u002F See https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FCSS\u002Fcustom-ident.\\n    for (const ident of fontFamily.split(\u002F[ \\\\t]+\u002F)) {\\n      if (\u002F^(\\\\d|(-(\\\\d|-)))\u002F.test(ident) || !\u002F^[\\\\w-\\\\\\\\]+$\u002F.test(ident)) {\\n        if (mustWarn) {\\n          warn(`FontFamily contains invalid \u003Ccustom-ident>: ${fontFamily}.`);\\n        }\\n        return false;\\n      }\\n    }\\n  }\\n  return true;\\n}\\n\\nfunction validateCSSFont(cssFontInfo) {\\n  \u002F\u002F See https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FCSS\u002Ffont-style.\\n  const DEFAULT_CSS_FONT_OBLIQUE = \\\"14\\\";\\n  \u002F\u002F See https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FCSS\u002Ffont-weight.\\n  const DEFAULT_CSS_FONT_WEIGHT = \\\"400\\\";\\n  const CSS_FONT_WEIGHT_VALUES = new Set([\\n    \\\"100\\\",\\n    \\\"200\\\",\\n    \\\"300\\\",\\n    \\\"400\\\",\\n    \\\"500\\\",\\n    \\\"600\\\",\\n    \\\"700\\\",\\n    \\\"800\\\",\\n    \\\"900\\\",\\n    \\\"1000\\\",\\n    \\\"normal\\\",\\n    \\\"bold\\\",\\n    \\\"bolder\\\",\\n    \\\"lighter\\\",\\n  ]);\\n\\n  const { fontFamily, fontWeight, italicAngle } = cssFontInfo;\\n\\n  if (!validateFontName(fontFamily, true)) {\\n    return false;\\n  }\\n\\n  const weight = fontWeight ? fontWeight.toString() : \\\"\\\";\\n  cssFontInfo.fontWeight = CSS_FONT_WEIGHT_VALUES.has(weight)\\n    ? weight\\n    : DEFAULT_CSS_FONT_WEIGHT;\\n\\n  const angle = parseFloat(italicAngle);\\n  cssFontInfo.italicAngle =\\n    isNaN(angle) || angle \u003C -90 || angle > 90\\n      ? DEFAULT_CSS_FONT_OBLIQUE\\n      : italicAngle.toString();\\n\\n  return true;\\n}\\n\\nfunction recoverJsURL(str) {\\n  \u002F\u002F Attempt to recover valid URLs from `JS` entries with certain\\n  \u002F\u002F white-listed formats:\\n  \u002F\u002F  - window.open('http:\u002F\u002Fexample.com')\\n  \u002F\u002F  - app.launchURL('http:\u002F\u002Fexample.com', true)\\n  \u002F\u002F  - xfa.host.gotoURL('http:\u002F\u002Fexample.com')\\n  const URL_OPEN_METHODS = [\\\"app.launchURL\\\", \\\"window.open\\\", \\\"xfa.host.gotoURL\\\"];\\n  const regex = new RegExp(\\n    \\\"^\\\\\\\\s*(\\\" +\\n      URL_OPEN_METHODS.join(\\\"|\\\").replaceAll(\\\".\\\", \\\"\\\\\\\\.\\\") +\\n      \\\")\\\\\\\\((?:'|\\\\\\\")([^'\\\\\\\"]*)(?:'|\\\\\\\")(?:,\\\\\\\\s*(\\\\\\\\w+)\\\\\\\\)|\\\\\\\\))\\\",\\n    \\\"i\\\"\\n  );\\n\\n  const jsUrl = regex.exec(str);\\n  if (jsUrl?.[2]) {\\n    const url = jsUrl[2];\\n    let newWindow = false;\\n\\n    if (jsUrl[3] === \\\"true\\\" && jsUrl[1] === \\\"app.launchURL\\\") {\\n      newWindow = true;\\n    }\\n    return { url, newWindow };\\n  }\\n\\n  return null;\\n}\\n\\nfunction numberToString(value) {\\n  if (Number.isInteger(value)) {\\n    return value.toString();\\n  }\\n\\n  const roundedValue = Math.round(value * 100);\\n  if (roundedValue % 100 === 0) {\\n    return (roundedValue \u002F 100).toString();\\n  }\\n\\n  if (roundedValue % 10 === 0) {\\n    return value.toFixed(1);\\n  }\\n\\n  return value.toFixed(2);\\n}\\n\\nfunction getNewAnnotationsMap(annotationStorage) {\\n  if (!annotationStorage) {\\n    return null;\\n  }\\n  const newAnnotationsByPage = new Map();\\n  \u002F\u002F The concept of page in a XFA is very different, so\\n  \u002F\u002F editing is just not implemented.\\n  for (const [key, value] of annotationStorage) {\\n    if (!key.startsWith(AnnotationEditorPrefix)) {\\n      continue;\\n    }\\n    let annotations = newAnnotationsByPage.get(value.pageIndex);\\n    if (!annotations) {\\n      annotations = [];\\n      newAnnotationsByPage.set(value.pageIndex, annotations);\\n    }\\n    annotations.push(value);\\n  }\\n  return newAnnotationsByPage.size > 0 ? newAnnotationsByPage : null;\\n}\\n\\nfunction isAscii(str) {\\n  return \u002F^[\\\\x00-\\\\x7F]*$\u002F.test(str);\\n}\\n\\nfunction stringToUTF16HexString(str) {\\n  const buf = [];\\n  for (let i = 0, ii = str.length; i \u003C ii; i++) {\\n    const char = str.charCodeAt(i);\\n    buf.push(\\n      ((char >> 8) & 0xff).toString(16).padStart(2, \\\"0\\\"),\\n      (char & 0xff).toString(16).padStart(2, \\\"0\\\")\\n    );\\n  }\\n  return buf.join(\\\"\\\");\\n}\\n\\nfunction stringToUTF16String(str, bigEndian = false) {\\n  const buf = [];\\n  if (bigEndian) {\\n    buf.push(\\\"\\\\xFE\\\\xFF\\\");\\n  }\\n  for (let i = 0, ii = str.length; i \u003C ii; i++) {\\n    const char = str.charCodeAt(i);\\n    buf.push(\\n      String.fromCharCode((char >> 8) & 0xff),\\n      String.fromCharCode(char & 0xff)\\n    );\\n  }\\n  return buf.join(\\\"\\\");\\n}\\n\\nfunction getRotationMatrix(rotation, width, height) {\\n  switch (rotation) {\\n    case 90:\\n      return [0, 1, -1, 0, width, 0];\\n    case 180:\\n      return [-1, 0, 0, -1, width, height];\\n    case 270:\\n      return [0, -1, 1, 0, 0, height];\\n    default:\\n      throw new Error(\\\"Invalid rotation\\\");\\n  }\\n}\\n\\n\u002F**\\n * Get the number of bytes to use to represent the given positive integer.\\n * If n is zero, the function returns 0 which means that we don't need to waste\\n * a byte to represent it.\\n * @param {number} x - a positive integer.\\n * @returns {number}\\n *\u002F\\nfunction getSizeInBytes(x) {\\n  \u002F\u002F n bits are required for numbers up to 2^n - 1.\\n  \u002F\u002F So for a number x, we need ceil(log2(1 + x)) bits.\\n  return Math.ceil(Math.ceil(Math.log2(1 + x)) \u002F 8);\\n}\\n\\nexport {\\n  arrayBuffersToBytes,\\n  codePointIter,\\n  collectActions,\\n  encodeToXmlString,\\n  escapePDFName,\\n  escapeString,\\n  getInheritableProperty,\\n  getLookupTableFactory,\\n  getNewAnnotationsMap,\\n  getRotationMatrix,\\n  getSizeInBytes,\\n  isAscii,\\n  isBooleanArray,\\n  isNumberArray,\\n  isWhiteSpace,\\n  log2,\\n  lookupMatrix,\\n  lookupNormalRect,\\n  lookupRect,\\n  MissingDataException,\\n  numberToString,\\n  ParserEOFException,\\n  parseXFAPath,\\n  PDF_VERSION_REGEXP,\\n  readInt8,\\n  readUint16,\\n  readUint32,\\n  recoverJsURL,\\n  stringToUTF16HexString,\\n  stringToUTF16String,\\n  toRomanNumerals,\\n  validateCSSFont,\\n  validateFontName,\\n  XRefEntryException,\\n  XRefParseException,\\n};\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { stringToBytes } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nclass Stream extends BaseStream {\\n  constructor(arrayBuffer, start, length, dict) {\\n    super();\\n\\n    this.bytes =\\n      arrayBuffer instanceof Uint8Array\\n        ? arrayBuffer\\n        : new Uint8Array(arrayBuffer);\\n    this.start = start || 0;\\n    this.pos = this.start;\\n    this.end = start + length || this.bytes.length;\\n    this.dict = dict;\\n  }\\n\\n  get length() {\\n    return this.end - this.start;\\n  }\\n\\n  get isEmpty() {\\n    return this.length === 0;\\n  }\\n\\n  getByte() {\\n    if (this.pos >= this.end) {\\n      return -1;\\n    }\\n    return this.bytes[this.pos++];\\n  }\\n\\n  getBytes(length) {\\n    const bytes = this.bytes;\\n    const pos = this.pos;\\n    const strEnd = this.end;\\n\\n    if (!length) {\\n      return bytes.subarray(pos, strEnd);\\n    }\\n    let end = pos + length;\\n    if (end > strEnd) {\\n      end = strEnd;\\n    }\\n    this.pos = end;\\n    return bytes.subarray(pos, end);\\n  }\\n\\n  getByteRange(begin, end) {\\n    if (begin \u003C 0) {\\n      begin = 0;\\n    }\\n    if (end > this.end) {\\n      end = this.end;\\n    }\\n    return this.bytes.subarray(begin, end);\\n  }\\n\\n  reset() {\\n    this.pos = this.start;\\n  }\\n\\n  moveStart() {\\n    this.start = this.pos;\\n  }\\n\\n  makeSubStream(start, length, dict = null) {\\n    return new Stream(this.bytes.buffer, start, length, dict);\\n  }\\n}\\n\\nclass StringStream extends Stream {\\n  constructor(str) {\\n    super(stringToBytes(str));\\n  }\\n}\\n\\nclass NullStream extends Stream {\\n  constructor() {\\n    super(new Uint8Array(0));\\n  }\\n}\\n\\nexport { NullStream, Stream, StringStream };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { arrayBuffersToBytes, MissingDataException } from \\\".\u002Fcore_utils.js\\\";\\nimport { assert } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { Stream } from \\\".\u002Fstream.js\\\";\\n\\nclass ChunkedStream extends Stream {\\n  constructor(length, chunkSize, manager) {\\n    super(\\n      \u002F* arrayBuffer = *\u002F new Uint8Array(length),\\n      \u002F* start = *\u002F 0,\\n      \u002F* length = *\u002F length,\\n      \u002F* dict = *\u002F null\\n    );\\n\\n    this.chunkSize = chunkSize;\\n    this._loadedChunks = new Set();\\n    this.numChunks = Math.ceil(length \u002F chunkSize);\\n    this.manager = manager;\\n    this.progressiveDataLength = 0;\\n    this.lastSuccessfulEnsureByteChunk = -1; \u002F\u002F Single-entry cache\\n  }\\n\\n  \u002F\u002F If a particular stream does not implement one or more of these methods,\\n  \u002F\u002F an error should be thrown.\\n  getMissingChunks() {\\n    const chunks = [];\\n    for (let chunk = 0, n = this.numChunks; chunk \u003C n; ++chunk) {\\n      if (!this._loadedChunks.has(chunk)) {\\n        chunks.push(chunk);\\n      }\\n    }\\n    return chunks;\\n  }\\n\\n  get numChunksLoaded() {\\n    return this._loadedChunks.size;\\n  }\\n\\n  get isDataLoaded() {\\n    return this.numChunksLoaded === this.numChunks;\\n  }\\n\\n  onReceiveData(begin, chunk) {\\n    const chunkSize = this.chunkSize;\\n    if (begin % chunkSize !== 0) {\\n      throw new Error(`Bad begin offset: ${begin}`);\\n    }\\n\\n    \u002F\u002F Using `this.length` is inaccurate here since `this.start` can be moved\\n    \u002F\u002F (see the `moveStart` method).\\n    const end = begin + chunk.byteLength;\\n    if (end % chunkSize !== 0 && end !== this.bytes.length) {\\n      throw new Error(`Bad end offset: ${end}`);\\n    }\\n\\n    this.bytes.set(new Uint8Array(chunk), begin);\\n    const beginChunk = Math.floor(begin \u002F chunkSize);\\n    const endChunk = Math.floor((end - 1) \u002F chunkSize) + 1;\\n\\n    for (let curChunk = beginChunk; curChunk \u003C endChunk; ++curChunk) {\\n      \u002F\u002F Since a value can only occur *once* in a `Set`, there's no need to\\n      \u002F\u002F manually check `Set.prototype.has()` before adding the value here.\\n      this._loadedChunks.add(curChunk);\\n    }\\n  }\\n\\n  onReceiveProgressiveData(data) {\\n    let position = this.progressiveDataLength;\\n    const beginChunk = Math.floor(position \u002F this.chunkSize);\\n\\n    this.bytes.set(new Uint8Array(data), position);\\n    position += data.byteLength;\\n    this.progressiveDataLength = position;\\n    const endChunk =\\n      position >= this.end\\n        ? this.numChunks\\n        : Math.floor(position \u002F this.chunkSize);\\n\\n    for (let curChunk = beginChunk; curChunk \u003C endChunk; ++curChunk) {\\n      \u002F\u002F Since a value can only occur *once* in a `Set`, there's no need to\\n      \u002F\u002F manually check `Set.prototype.has()` before adding the value here.\\n      this._loadedChunks.add(curChunk);\\n    }\\n  }\\n\\n  ensureByte(pos) {\\n    if (pos \u003C this.progressiveDataLength) {\\n      return;\\n    }\\n\\n    const chunk = Math.floor(pos \u002F this.chunkSize);\\n    if (chunk > this.numChunks) {\\n      return;\\n    }\\n    if (chunk === this.lastSuccessfulEnsureByteChunk) {\\n      return;\\n    }\\n\\n    if (!this._loadedChunks.has(chunk)) {\\n      throw new MissingDataException(pos, pos + 1);\\n    }\\n    this.lastSuccessfulEnsureByteChunk = chunk;\\n  }\\n\\n  ensureRange(begin, end) {\\n    if (begin >= end) {\\n      return;\\n    }\\n    if (end \u003C= this.progressiveDataLength) {\\n      return;\\n    }\\n\\n    const beginChunk = Math.floor(begin \u002F this.chunkSize);\\n    if (beginChunk > this.numChunks) {\\n      return;\\n    }\\n    const endChunk = Math.min(\\n      Math.floor((end - 1) \u002F this.chunkSize) + 1,\\n      this.numChunks\\n    );\\n    for (let chunk = beginChunk; chunk \u003C endChunk; ++chunk) {\\n      if (!this._loadedChunks.has(chunk)) {\\n        throw new MissingDataException(begin, end);\\n      }\\n    }\\n  }\\n\\n  nextEmptyChunk(beginChunk) {\\n    const numChunks = this.numChunks;\\n    for (let i = 0; i \u003C numChunks; ++i) {\\n      const chunk = (beginChunk + i) % numChunks; \u002F\u002F Wrap around to beginning.\\n      if (!this._loadedChunks.has(chunk)) {\\n        return chunk;\\n      }\\n    }\\n    return null;\\n  }\\n\\n  hasChunk(chunk) {\\n    return this._loadedChunks.has(chunk);\\n  }\\n\\n  getByte() {\\n    const pos = this.pos;\\n    if (pos >= this.end) {\\n      return -1;\\n    }\\n    if (pos >= this.progressiveDataLength) {\\n      this.ensureByte(pos);\\n    }\\n    return this.bytes[this.pos++];\\n  }\\n\\n  getBytes(length) {\\n    const bytes = this.bytes;\\n    const pos = this.pos;\\n    const strEnd = this.end;\\n\\n    if (!length) {\\n      if (strEnd > this.progressiveDataLength) {\\n        this.ensureRange(pos, strEnd);\\n      }\\n      return bytes.subarray(pos, strEnd);\\n    }\\n\\n    let end = pos + length;\\n    if (end > strEnd) {\\n      end = strEnd;\\n    }\\n    if (end > this.progressiveDataLength) {\\n      this.ensureRange(pos, end);\\n    }\\n\\n    this.pos = end;\\n    return bytes.subarray(pos, end);\\n  }\\n\\n  getByteRange(begin, end) {\\n    if (begin \u003C 0) {\\n      begin = 0;\\n    }\\n    if (end > this.end) {\\n      end = this.end;\\n    }\\n    if (end > this.progressiveDataLength) {\\n      this.ensureRange(begin, end);\\n    }\\n    return this.bytes.subarray(begin, end);\\n  }\\n\\n  makeSubStream(start, length, dict = null) {\\n    if (length) {\\n      if (start + length > this.progressiveDataLength) {\\n        this.ensureRange(start, start + length);\\n      }\\n    } else if (start >= this.progressiveDataLength) {\\n      \u002F\u002F When the `length` is undefined you do *not*, under any circumstances,\\n      \u002F\u002F want to fallback on calling `this.ensureRange(start, this.end)` since\\n      \u002F\u002F that would force the *entire* PDF file to be loaded, thus completely\\n      \u002F\u002F breaking the whole purpose of using streaming and\u002For range requests.\\n      \u002F\u002F\\n      \u002F\u002F However, not doing any checking here could very easily lead to wasted\\n      \u002F\u002F time\u002Fresources during e.g. parsing, since `MissingDataException`s will\\n      \u002F\u002F require data to be re-parsed, which we attempt to minimize by at least\\n      \u002F\u002F checking that the *beginning* of the data is available here.\\n      this.ensureByte(start);\\n    }\\n\\n    function ChunkedStreamSubstream() {}\\n    ChunkedStreamSubstream.prototype = Object.create(this);\\n    ChunkedStreamSubstream.prototype.getMissingChunks = function () {\\n      const chunkSize = this.chunkSize;\\n      const beginChunk = Math.floor(this.start \u002F chunkSize);\\n      const endChunk = Math.floor((this.end - 1) \u002F chunkSize) + 1;\\n      const missingChunks = [];\\n      for (let chunk = beginChunk; chunk \u003C endChunk; ++chunk) {\\n        if (!this._loadedChunks.has(chunk)) {\\n          missingChunks.push(chunk);\\n        }\\n      }\\n      return missingChunks;\\n    };\\n    Object.defineProperty(ChunkedStreamSubstream.prototype, \\\"isDataLoaded\\\", {\\n      get() {\\n        if (this.numChunksLoaded === this.numChunks) {\\n          return true;\\n        }\\n        return this.getMissingChunks().length === 0;\\n      },\\n      configurable: true,\\n    });\\n\\n    const subStream = new ChunkedStreamSubstream();\\n    subStream.pos = subStream.start = start;\\n    subStream.end = start + length || this.end;\\n    subStream.dict = dict;\\n    return subStream;\\n  }\\n\\n  getBaseStreams() {\\n    return [this];\\n  }\\n}\\n\\nclass ChunkedStreamManager {\\n  constructor(pdfNetworkStream, args) {\\n    this.length = args.length;\\n    this.chunkSize = args.rangeChunkSize;\\n    this.stream = new ChunkedStream(this.length, this.chunkSize, this);\\n    this.pdfNetworkStream = pdfNetworkStream;\\n    this.disableAutoFetch = args.disableAutoFetch;\\n    this.msgHandler = args.msgHandler;\\n\\n    this.currRequestId = 0;\\n\\n    this._chunksNeededByRequest = new Map();\\n    this._requestsByChunk = new Map();\\n    this._promisesByRequest = new Map();\\n    this.progressiveDataLength = 0;\\n    this.aborted = false;\\n\\n    this._loadedStreamCapability = Promise.withResolvers();\\n  }\\n\\n  sendRequest(begin, end) {\\n    const rangeReader = this.pdfNetworkStream.getRangeReader(begin, end);\\n    if (!rangeReader.isStreamingSupported) {\\n      rangeReader.onProgress = this.onProgress.bind(this);\\n    }\\n\\n    let chunks = [],\\n      loaded = 0;\\n    return new Promise((resolve, reject) => {\\n      const readChunk = ({ value, done }) => {\\n        try {\\n          if (done) {\\n            const chunkData = arrayBuffersToBytes(chunks);\\n            chunks = null;\\n            resolve(chunkData);\\n            return;\\n          }\\n          if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n            assert(\\n              value instanceof ArrayBuffer,\\n              \\\"readChunk (sendRequest) - expected an ArrayBuffer.\\\"\\n            );\\n          }\\n          loaded += value.byteLength;\\n\\n          if (rangeReader.isStreamingSupported) {\\n            this.onProgress({ loaded });\\n          }\\n\\n          chunks.push(value);\\n          rangeReader.read().then(readChunk, reject);\\n        } catch (e) {\\n          reject(e);\\n        }\\n      };\\n      rangeReader.read().then(readChunk, reject);\\n    }).then(data => {\\n      if (this.aborted) {\\n        return; \u002F\u002F Ignoring any data after abort.\\n      }\\n      this.onReceiveData({ chunk: data, begin });\\n    });\\n  }\\n\\n  \u002F**\\n   * Get all the chunks that are not yet loaded and group them into\\n   * contiguous ranges to load in as few requests as possible.\\n   *\u002F\\n  requestAllChunks(noFetch = false) {\\n    if (!noFetch) {\\n      const missingChunks = this.stream.getMissingChunks();\\n      this._requestChunks(missingChunks);\\n    }\\n    return this._loadedStreamCapability.promise;\\n  }\\n\\n  _requestChunks(chunks) {\\n    const requestId = this.currRequestId++;\\n\\n    const chunksNeeded = new Set();\\n    this._chunksNeededByRequest.set(requestId, chunksNeeded);\\n    for (const chunk of chunks) {\\n      if (!this.stream.hasChunk(chunk)) {\\n        chunksNeeded.add(chunk);\\n      }\\n    }\\n\\n    if (chunksNeeded.size === 0) {\\n      return Promise.resolve();\\n    }\\n\\n    const capability = Promise.withResolvers();\\n    this._promisesByRequest.set(requestId, capability);\\n\\n    const chunksToRequest = [];\\n    for (const chunk of chunksNeeded) {\\n      let requestIds = this._requestsByChunk.get(chunk);\\n      if (!requestIds) {\\n        requestIds = [];\\n        this._requestsByChunk.set(chunk, requestIds);\\n\\n        chunksToRequest.push(chunk);\\n      }\\n      requestIds.push(requestId);\\n    }\\n\\n    if (chunksToRequest.length > 0) {\\n      const groupedChunksToRequest = this.groupChunks(chunksToRequest);\\n      for (const groupedChunk of groupedChunksToRequest) {\\n        const begin = groupedChunk.beginChunk * this.chunkSize;\\n        const end = Math.min(\\n          groupedChunk.endChunk * this.chunkSize,\\n          this.length\\n        );\\n        this.sendRequest(begin, end).catch(capability.reject);\\n      }\\n    }\\n\\n    return capability.promise.catch(reason => {\\n      if (this.aborted) {\\n        return; \u002F\u002F Ignoring any pending requests after abort.\\n      }\\n      throw reason;\\n    });\\n  }\\n\\n  getStream() {\\n    return this.stream;\\n  }\\n\\n  \u002F**\\n   * Loads any chunks in the requested range that are not yet loaded.\\n   *\u002F\\n  requestRange(begin, end) {\\n    end = Math.min(end, this.length);\\n\\n    const beginChunk = this.getBeginChunk(begin);\\n    const endChunk = this.getEndChunk(end);\\n\\n    const chunks = [];\\n    for (let chunk = beginChunk; chunk \u003C endChunk; ++chunk) {\\n      chunks.push(chunk);\\n    }\\n    return this._requestChunks(chunks);\\n  }\\n\\n  requestRanges(ranges = []) {\\n    const chunksToRequest = [];\\n    for (const range of ranges) {\\n      const beginChunk = this.getBeginChunk(range.begin);\\n      const endChunk = this.getEndChunk(range.end);\\n      for (let chunk = beginChunk; chunk \u003C endChunk; ++chunk) {\\n        if (!chunksToRequest.includes(chunk)) {\\n          chunksToRequest.push(chunk);\\n        }\\n      }\\n    }\\n\\n    chunksToRequest.sort(function (a, b) {\\n      return a - b;\\n    });\\n    return this._requestChunks(chunksToRequest);\\n  }\\n\\n  \u002F**\\n   * Groups a sorted array of chunks into as few contiguous larger\\n   * chunks as possible.\\n   *\u002F\\n  groupChunks(chunks) {\\n    const groupedChunks = [];\\n    let beginChunk = -1;\\n    let prevChunk = -1;\\n\\n    for (let i = 0, ii = chunks.length; i \u003C ii; ++i) {\\n      const chunk = chunks[i];\\n      if (beginChunk \u003C 0) {\\n        beginChunk = chunk;\\n      }\\n\\n      if (prevChunk >= 0 && prevChunk + 1 !== chunk) {\\n        groupedChunks.push({ beginChunk, endChunk: prevChunk + 1 });\\n        beginChunk = chunk;\\n      }\\n      if (i + 1 === chunks.length) {\\n        groupedChunks.push({ beginChunk, endChunk: chunk + 1 });\\n      }\\n\\n      prevChunk = chunk;\\n    }\\n    return groupedChunks;\\n  }\\n\\n  onProgress(args) {\\n    this.msgHandler.send(\\\"DocProgress\\\", {\\n      loaded: this.stream.numChunksLoaded * this.chunkSize + args.loaded,\\n      total: this.length,\\n    });\\n  }\\n\\n  onReceiveData(args) {\\n    const chunk = args.chunk;\\n    const isProgressive = args.begin === undefined;\\n    const begin = isProgressive ? this.progressiveDataLength : args.begin;\\n    const end = begin + chunk.byteLength;\\n\\n    const beginChunk = Math.floor(begin \u002F this.chunkSize);\\n    const endChunk =\\n      end \u003C this.length\\n        ? Math.floor(end \u002F this.chunkSize)\\n        : Math.ceil(end \u002F this.chunkSize);\\n\\n    if (isProgressive) {\\n      this.stream.onReceiveProgressiveData(chunk);\\n      this.progressiveDataLength = end;\\n    } else {\\n      this.stream.onReceiveData(begin, chunk);\\n    }\\n\\n    if (this.stream.isDataLoaded) {\\n      this._loadedStreamCapability.resolve(this.stream);\\n    }\\n\\n    const loadedRequests = [];\\n    for (let curChunk = beginChunk; curChunk \u003C endChunk; ++curChunk) {\\n      \u002F\u002F The server might return more chunks than requested.\\n      const requestIds = this._requestsByChunk.get(curChunk);\\n      if (!requestIds) {\\n        continue;\\n      }\\n      this._requestsByChunk.delete(curChunk);\\n\\n      for (const requestId of requestIds) {\\n        const chunksNeeded = this._chunksNeededByRequest.get(requestId);\\n        if (chunksNeeded.has(curChunk)) {\\n          chunksNeeded.delete(curChunk);\\n        }\\n\\n        if (chunksNeeded.size > 0) {\\n          continue;\\n        }\\n        loadedRequests.push(requestId);\\n      }\\n    }\\n\\n    \u002F\u002F If there are no pending requests, automatically fetch the next\\n    \u002F\u002F unfetched chunk of the PDF file.\\n    if (!this.disableAutoFetch && this._requestsByChunk.size === 0) {\\n      let nextEmptyChunk;\\n      if (this.stream.numChunksLoaded === 1) {\\n        \u002F\u002F This is a special optimization so that after fetching the first\\n        \u002F\u002F chunk, rather than fetching the second chunk, we fetch the last\\n        \u002F\u002F chunk.\\n        const lastChunk = this.stream.numChunks - 1;\\n        if (!this.stream.hasChunk(lastChunk)) {\\n          nextEmptyChunk = lastChunk;\\n        }\\n      } else {\\n        nextEmptyChunk = this.stream.nextEmptyChunk(endChunk);\\n      }\\n      if (Number.isInteger(nextEmptyChunk)) {\\n        this._requestChunks([nextEmptyChunk]);\\n      }\\n    }\\n\\n    for (const requestId of loadedRequests) {\\n      const capability = this._promisesByRequest.get(requestId);\\n      this._promisesByRequest.delete(requestId);\\n      capability.resolve();\\n    }\\n\\n    this.msgHandler.send(\\\"DocProgress\\\", {\\n      loaded: this.stream.numChunksLoaded * this.chunkSize,\\n      total: this.length,\\n    });\\n  }\\n\\n  onError(err) {\\n    this._loadedStreamCapability.reject(err);\\n  }\\n\\n  getBeginChunk(begin) {\\n    return Math.floor(begin \u002F this.chunkSize);\\n  }\\n\\n  getEndChunk(end) {\\n    return Math.floor((end - 1) \u002F this.chunkSize) + 1;\\n  }\\n\\n  abort(reason) {\\n    this.aborted = true;\\n    this.pdfNetworkStream?.cancelAllRequests(reason);\\n\\n    for (const capability of this._promisesByRequest.values()) {\\n      capability.reject(reason);\\n    }\\n  }\\n}\\n\\nexport { ChunkedStream, ChunkedStreamManager };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  assert,\\n  FormatError,\\n  info,\\n  shadow,\\n  unreachable,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { Dict, Name, Ref } from \\\".\u002Fprimitives.js\\\";\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { MissingDataException } from \\\".\u002Fcore_utils.js\\\";\\n\\n\u002F**\\n * Resizes an RGB image with 3 components.\\n * @param {TypedArray} src - The source buffer.\\n * @param {TypedArray} dest - The destination buffer.\\n * @param {number} w1 - Original width.\\n * @param {number} h1 - Original height.\\n * @param {number} w2 - New width.\\n * @param {number} h2 - New height.\\n * @param {number} alpha01 - Size reserved for the alpha channel.\\n *\u002F\\nfunction resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {\\n  const COMPONENTS = 3;\\n  alpha01 = alpha01 !== 1 ? 0 : alpha01;\\n  const xRatio = w1 \u002F w2;\\n  const yRatio = h1 \u002F h2;\\n  let newIndex = 0,\\n    oldIndex;\\n  const xScaled = new Uint16Array(w2);\\n  const w1Scanline = w1 * COMPONENTS;\\n\\n  for (let i = 0; i \u003C w2; i++) {\\n    xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\\n  }\\n  for (let i = 0; i \u003C h2; i++) {\\n    const py = Math.floor(i * yRatio) * w1Scanline;\\n    for (let j = 0; j \u003C w2; j++) {\\n      oldIndex = py + xScaled[j];\\n      dest[newIndex++] = src[oldIndex++];\\n      dest[newIndex++] = src[oldIndex++];\\n      dest[newIndex++] = src[oldIndex++];\\n      newIndex += alpha01;\\n    }\\n  }\\n}\\n\\nclass ColorSpace {\\n  constructor(name, numComps) {\\n    if (this.constructor === ColorSpace) {\\n      unreachable(\\\"Cannot initialize ColorSpace.\\\");\\n    }\\n    this.name = name;\\n    this.numComps = numComps;\\n  }\\n\\n  \u002F**\\n   * Converts the color value to the RGB color. The color components are\\n   * located in the src array starting from the srcOffset. Returns the array\\n   * of the rgb components, each value ranging from [0,255].\\n   *\u002F\\n  getRgb(src, srcOffset) {\\n    const rgb = new Uint8ClampedArray(3);\\n    this.getRgbItem(src, srcOffset, rgb, 0);\\n    return rgb;\\n  }\\n\\n  \u002F**\\n   * Converts the color value to the RGB color, similar to the getRgb method.\\n   * The result placed into the dest array starting from the destOffset.\\n   *\u002F\\n  getRgbItem(src, srcOffset, dest, destOffset) {\\n    unreachable(\\\"Should not call ColorSpace.getRgbItem\\\");\\n  }\\n\\n  \u002F**\\n   * Converts the specified number of the color values to the RGB colors.\\n   * The colors are located in the src array starting from the srcOffset.\\n   * The result is placed into the dest array starting from the destOffset.\\n   * The src array items shall be in [0,2^bits) range, the dest array items\\n   * will be in [0,255] range. alpha01 indicates how many alpha components\\n   * there are in the dest array; it will be either 0 (RGB array) or 1 (RGBA\\n   * array).\\n   *\u002F\\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\\n    unreachable(\\\"Should not call ColorSpace.getRgbBuffer\\\");\\n  }\\n\\n  \u002F**\\n   * Determines the number of bytes required to store the result of the\\n   * conversion done by the getRgbBuffer method. As in getRgbBuffer,\\n   * |alpha01| is either 0 (RGB output) or 1 (RGBA output).\\n   *\u002F\\n  getOutputLength(inputLength, alpha01) {\\n    unreachable(\\\"Should not call ColorSpace.getOutputLength\\\");\\n  }\\n\\n  \u002F**\\n   * Returns true if source data will be equal the result\u002Foutput data.\\n   *\u002F\\n  isPassthrough(bits) {\\n    return false;\\n  }\\n\\n  \u002F**\\n   * Refer to the static `ColorSpace.isDefaultDecode` method below.\\n   *\u002F\\n  isDefaultDecode(decodeMap, bpc) {\\n    return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\\n  }\\n\\n  \u002F**\\n   * Fills in the RGB colors in the destination buffer.  alpha01 indicates\\n   * how many alpha components there are in the dest array; it will be either\\n   * 0 (RGB array) or 1 (RGBA array).\\n   *\u002F\\n  fillRgb(\\n    dest,\\n    originalWidth,\\n    originalHeight,\\n    width,\\n    height,\\n    actualHeight,\\n    bpc,\\n    comps,\\n    alpha01\\n  ) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'ColorSpace.fillRgb: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    const count = originalWidth * originalHeight;\\n    let rgbBuf = null;\\n    const numComponentColors = 1 \u003C\u003C bpc;\\n    const needsResizing = originalHeight !== height || originalWidth !== width;\\n\\n    if (this.isPassthrough(bpc)) {\\n      rgbBuf = comps;\\n    } else if (\\n      this.numComps === 1 &&\\n      count > numComponentColors &&\\n      this.name !== \\\"DeviceGray\\\" &&\\n      this.name !== \\\"DeviceRGB\\\"\\n    ) {\\n      \u002F\u002F Optimization: create a color map when there is just one component and\\n      \u002F\u002F we are converting more colors than the size of the color map. We\\n      \u002F\u002F don't build the map if the colorspace is gray or rgb since those\\n      \u002F\u002F methods are faster than building a map. This mainly offers big speed\\n      \u002F\u002F ups for indexed and alternate colorspaces.\\n      \u002F\u002F\\n      \u002F\u002F TODO it may be worth while to cache the color map. While running\\n      \u002F\u002F testing I never hit a cache so I will leave that out for now (perhaps\\n      \u002F\u002F we are reparsing colorspaces too much?).\\n      const allColors =\\n        bpc \u003C= 8\\n          ? new Uint8Array(numComponentColors)\\n          : new Uint16Array(numComponentColors);\\n      for (let i = 0; i \u003C numComponentColors; i++) {\\n        allColors[i] = i;\\n      }\\n      const colorMap = new Uint8ClampedArray(numComponentColors * 3);\\n      this.getRgbBuffer(\\n        allColors,\\n        0,\\n        numComponentColors,\\n        colorMap,\\n        0,\\n        bpc,\\n        \u002F* alpha01 = *\u002F 0\\n      );\\n\\n      if (!needsResizing) {\\n        \u002F\u002F Fill in the RGB values directly into |dest|.\\n        let destPos = 0;\\n        for (let i = 0; i \u003C count; ++i) {\\n          const key = comps[i] * 3;\\n          dest[destPos++] = colorMap[key];\\n          dest[destPos++] = colorMap[key + 1];\\n          dest[destPos++] = colorMap[key + 2];\\n          destPos += alpha01;\\n        }\\n      } else {\\n        rgbBuf = new Uint8Array(count * 3);\\n        let rgbPos = 0;\\n        for (let i = 0; i \u003C count; ++i) {\\n          const key = comps[i] * 3;\\n          rgbBuf[rgbPos++] = colorMap[key];\\n          rgbBuf[rgbPos++] = colorMap[key + 1];\\n          rgbBuf[rgbPos++] = colorMap[key + 2];\\n        }\\n      }\\n    } else if (!needsResizing) {\\n      \u002F\u002F Fill in the RGB values directly into |dest|.\\n      this.getRgbBuffer(comps, 0, width * actualHeight, dest, 0, bpc, alpha01);\\n    } else {\\n      rgbBuf = new Uint8ClampedArray(count * 3);\\n      this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, \u002F* alpha01 = *\u002F 0);\\n    }\\n\\n    if (rgbBuf) {\\n      if (needsResizing) {\\n        resizeRgbImage(\\n          rgbBuf,\\n          dest,\\n          originalWidth,\\n          originalHeight,\\n          width,\\n          height,\\n          alpha01\\n        );\\n      } else {\\n        let destPos = 0,\\n          rgbPos = 0;\\n        for (let i = 0, ii = width * actualHeight; i \u003C ii; i++) {\\n          dest[destPos++] = rgbBuf[rgbPos++];\\n          dest[destPos++] = rgbBuf[rgbPos++];\\n          dest[destPos++] = rgbBuf[rgbPos++];\\n          destPos += alpha01;\\n        }\\n      }\\n    }\\n  }\\n\\n  \u002F**\\n   * True if the colorspace has components in the default range of [0, 1].\\n   * This should be true for all colorspaces except for lab color spaces\\n   * which are [0,100], [-128, 127], [-128, 127].\\n   *\u002F\\n  get usesZeroToOneRange() {\\n    return shadow(this, \\\"usesZeroToOneRange\\\", true);\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  static _cache(cacheKey, xref, localColorSpaceCache, parsedColorSpace) {\\n    if (!localColorSpaceCache) {\\n      throw new Error(\\n        'ColorSpace._cache - expected \\\"localColorSpaceCache\\\" argument.'\\n      );\\n    }\\n    if (!parsedColorSpace) {\\n      throw new Error(\\n        'ColorSpace._cache - expected \\\"parsedColorSpace\\\" argument.'\\n      );\\n    }\\n    let csName, csRef;\\n    if (cacheKey instanceof Ref) {\\n      csRef = cacheKey;\\n\\n      \u002F\u002F If parsing succeeded, we know that this call cannot throw.\\n      cacheKey = xref.fetch(cacheKey);\\n    }\\n    if (cacheKey instanceof Name) {\\n      csName = cacheKey.name;\\n    }\\n    if (csName || csRef) {\\n      localColorSpaceCache.set(csName, csRef, parsedColorSpace);\\n    }\\n  }\\n\\n  static getCached(cacheKey, xref, localColorSpaceCache) {\\n    if (!localColorSpaceCache) {\\n      throw new Error(\\n        'ColorSpace.getCached - expected \\\"localColorSpaceCache\\\" argument.'\\n      );\\n    }\\n    if (cacheKey instanceof Ref) {\\n      const localColorSpace = localColorSpaceCache.getByRef(cacheKey);\\n      if (localColorSpace) {\\n        return localColorSpace;\\n      }\\n\\n      try {\\n        cacheKey = xref.fetch(cacheKey);\\n      } catch (ex) {\\n        if (ex instanceof MissingDataException) {\\n          throw ex;\\n        }\\n        \u002F\u002F Any errors should be handled during parsing, rather than here.\\n      }\\n    }\\n    if (cacheKey instanceof Name) {\\n      const localColorSpace = localColorSpaceCache.getByName(cacheKey.name);\\n      if (localColorSpace) {\\n        return localColorSpace;\\n      }\\n    }\\n    return null;\\n  }\\n\\n  static async parseAsync({\\n    cs,\\n    xref,\\n    resources = null,\\n    pdfFunctionFactory,\\n    localColorSpaceCache,\\n  }) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        !this.getCached(cs, xref, localColorSpaceCache),\\n        \\\"Expected `ColorSpace.getCached` to have been manually checked \\\" +\\n          \\\"before calling `ColorSpace.parseAsync`.\\\"\\n      );\\n    }\\n    const parsedColorSpace = this._parse(\\n      cs,\\n      xref,\\n      resources,\\n      pdfFunctionFactory\\n    );\\n\\n    \u002F\u002F Attempt to cache the parsed ColorSpace, by name and\u002For reference.\\n    this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\\n\\n    return parsedColorSpace;\\n  }\\n\\n  static parse({\\n    cs,\\n    xref,\\n    resources = null,\\n    pdfFunctionFactory,\\n    localColorSpaceCache,\\n  }) {\\n    const cachedColorSpace = this.getCached(cs, xref, localColorSpaceCache);\\n    if (cachedColorSpace) {\\n      return cachedColorSpace;\\n    }\\n    const parsedColorSpace = this._parse(\\n      cs,\\n      xref,\\n      resources,\\n      pdfFunctionFactory\\n    );\\n\\n    \u002F\u002F Attempt to cache the parsed ColorSpace, by name and\u002For reference.\\n    this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\\n\\n    return parsedColorSpace;\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  static _parse(cs, xref, resources = null, pdfFunctionFactory) {\\n    cs = xref.fetchIfRef(cs);\\n    if (cs instanceof Name) {\\n      switch (cs.name) {\\n        case \\\"G\\\":\\n        case \\\"DeviceGray\\\":\\n          return this.singletons.gray;\\n        case \\\"RGB\\\":\\n        case \\\"DeviceRGB\\\":\\n          return this.singletons.rgb;\\n        case \\\"CMYK\\\":\\n        case \\\"DeviceCMYK\\\":\\n          return this.singletons.cmyk;\\n        case \\\"Pattern\\\":\\n          return new PatternCS(\u002F* baseCS = *\u002F null);\\n        default:\\n          if (resources instanceof Dict) {\\n            const colorSpaces = resources.get(\\\"ColorSpace\\\");\\n            if (colorSpaces instanceof Dict) {\\n              const resourcesCS = colorSpaces.get(cs.name);\\n              if (resourcesCS) {\\n                if (resourcesCS instanceof Name) {\\n                  return this._parse(\\n                    resourcesCS,\\n                    xref,\\n                    resources,\\n                    pdfFunctionFactory\\n                  );\\n                }\\n                cs = resourcesCS;\\n                break;\\n              }\\n            }\\n          }\\n          throw new FormatError(`Unrecognized ColorSpace: ${cs.name}`);\\n      }\\n    }\\n    if (Array.isArray(cs)) {\\n      const mode = xref.fetchIfRef(cs[0]).name;\\n      let params, numComps, baseCS, whitePoint, blackPoint, gamma;\\n\\n      switch (mode) {\\n        case \\\"G\\\":\\n        case \\\"DeviceGray\\\":\\n          return this.singletons.gray;\\n        case \\\"RGB\\\":\\n        case \\\"DeviceRGB\\\":\\n          return this.singletons.rgb;\\n        case \\\"CMYK\\\":\\n        case \\\"DeviceCMYK\\\":\\n          return this.singletons.cmyk;\\n        case \\\"CalGray\\\":\\n          params = xref.fetchIfRef(cs[1]);\\n          whitePoint = params.getArray(\\\"WhitePoint\\\");\\n          blackPoint = params.getArray(\\\"BlackPoint\\\");\\n          gamma = params.get(\\\"Gamma\\\");\\n          return new CalGrayCS(whitePoint, blackPoint, gamma);\\n        case \\\"CalRGB\\\":\\n          params = xref.fetchIfRef(cs[1]);\\n          whitePoint = params.getArray(\\\"WhitePoint\\\");\\n          blackPoint = params.getArray(\\\"BlackPoint\\\");\\n          gamma = params.getArray(\\\"Gamma\\\");\\n          const matrix = params.getArray(\\\"Matrix\\\");\\n          return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);\\n        case \\\"ICCBased\\\":\\n          const stream = xref.fetchIfRef(cs[1]);\\n          const dict = stream.dict;\\n          numComps = dict.get(\\\"N\\\");\\n          const alt = dict.get(\\\"Alternate\\\");\\n          if (alt) {\\n            const altCS = this._parse(alt, xref, resources, pdfFunctionFactory);\\n            \u002F\u002F Ensure that the number of components are correct,\\n            \u002F\u002F and also (indirectly) that it is not a PatternCS.\\n            if (altCS.numComps === numComps) {\\n              return altCS;\\n            }\\n            warn(\\\"ICCBased color space: Ignoring incorrect \u002FAlternate entry.\\\");\\n          }\\n          if (numComps === 1) {\\n            return this.singletons.gray;\\n          } else if (numComps === 3) {\\n            return this.singletons.rgb;\\n          } else if (numComps === 4) {\\n            return this.singletons.cmyk;\\n          }\\n          break;\\n        case \\\"Pattern\\\":\\n          baseCS = cs[1] || null;\\n          if (baseCS) {\\n            baseCS = this._parse(baseCS, xref, resources, pdfFunctionFactory);\\n          }\\n          return new PatternCS(baseCS);\\n        case \\\"I\\\":\\n        case \\\"Indexed\\\":\\n          baseCS = this._parse(cs[1], xref, resources, pdfFunctionFactory);\\n          const hiVal = xref.fetchIfRef(cs[2]) + 1;\\n          const lookup = xref.fetchIfRef(cs[3]);\\n          return new IndexedCS(baseCS, hiVal, lookup);\\n        case \\\"Separation\\\":\\n        case \\\"DeviceN\\\":\\n          const name = xref.fetchIfRef(cs[1]);\\n          numComps = Array.isArray(name) ? name.length : 1;\\n          baseCS = this._parse(cs[2], xref, resources, pdfFunctionFactory);\\n          const tintFn = pdfFunctionFactory.create(cs[3]);\\n          return new AlternateCS(numComps, baseCS, tintFn);\\n        case \\\"Lab\\\":\\n          params = xref.fetchIfRef(cs[1]);\\n          whitePoint = params.getArray(\\\"WhitePoint\\\");\\n          blackPoint = params.getArray(\\\"BlackPoint\\\");\\n          const range = params.getArray(\\\"Range\\\");\\n          return new LabCS(whitePoint, blackPoint, range);\\n        default:\\n          throw new FormatError(`Unimplemented ColorSpace object: ${mode}`);\\n      }\\n    }\\n    throw new FormatError(`Unrecognized ColorSpace object: ${cs}`);\\n  }\\n\\n  \u002F**\\n   * Checks if a decode map matches the default decode map for a color space.\\n   * This handles the general decode maps where there are two values per\\n   * component, e.g. [0, 1, 0, 1, 0, 1] for a RGB color.\\n   * This does not handle Lab, Indexed, or Pattern decode maps since they are\\n   * slightly different.\\n   * @param {Array} decode - Decode map (usually from an image).\\n   * @param {number} numComps - Number of components the color space has.\\n   *\u002F\\n  static isDefaultDecode(decode, numComps) {\\n    if (!Array.isArray(decode)) {\\n      return true;\\n    }\\n    if (numComps * 2 !== decode.length) {\\n      warn(\\\"The decode map is not the correct length\\\");\\n      return true;\\n    }\\n    for (let i = 0, ii = decode.length; i \u003C ii; i += 2) {\\n      if (decode[i] !== 0 || decode[i + 1] !== 1) {\\n        return false;\\n      }\\n    }\\n    return true;\\n  }\\n\\n  static get singletons() {\\n    return shadow(this, \\\"singletons\\\", {\\n      get gray() {\\n        return shadow(this, \\\"gray\\\", new DeviceGrayCS());\\n      },\\n      get rgb() {\\n        return shadow(this, \\\"rgb\\\", new DeviceRgbCS());\\n      },\\n      get cmyk() {\\n        return shadow(this, \\\"cmyk\\\", new DeviceCmykCS());\\n      },\\n    });\\n  }\\n}\\n\\n\u002F**\\n * Alternate color space handles both Separation and DeviceN color spaces.  A\\n * Separation color space is actually just a DeviceN with one color component.\\n * Both color spaces use a tinting function to convert colors to a base color\\n * space.\\n *\\n * The default color is `new Float32Array(new Array(numComps).fill(1))`.\\n *\u002F\\nclass AlternateCS extends ColorSpace {\\n  constructor(numComps, base, tintFn) {\\n    super(\\\"Alternate\\\", numComps);\\n    this.base = base;\\n    this.tintFn = tintFn;\\n    this.tmpBuf = new Float32Array(base.numComps);\\n  }\\n\\n  getRgbItem(src, srcOffset, dest, destOffset) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'AlternateCS.getRgbItem: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    const tmpBuf = this.tmpBuf;\\n    this.tintFn(src, srcOffset, tmpBuf, 0);\\n    this.base.getRgbItem(tmpBuf, 0, dest, destOffset);\\n  }\\n\\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'AlternateCS.getRgbBuffer: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    const tintFn = this.tintFn;\\n    const base = this.base;\\n    const scale = 1 \u002F ((1 \u003C\u003C bits) - 1);\\n    const baseNumComps = base.numComps;\\n    const usesZeroToOneRange = base.usesZeroToOneRange;\\n    const isPassthrough =\\n      (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0;\\n    let pos = isPassthrough ? destOffset : 0;\\n    const baseBuf = isPassthrough\\n      ? dest\\n      : new Uint8ClampedArray(baseNumComps * count);\\n    const numComps = this.numComps;\\n\\n    const scaled = new Float32Array(numComps);\\n    const tinted = new Float32Array(baseNumComps);\\n    let i, j;\\n\\n    for (i = 0; i \u003C count; i++) {\\n      for (j = 0; j \u003C numComps; j++) {\\n        scaled[j] = src[srcOffset++] * scale;\\n      }\\n      tintFn(scaled, 0, tinted, 0);\\n      if (usesZeroToOneRange) {\\n        for (j = 0; j \u003C baseNumComps; j++) {\\n          baseBuf[pos++] = tinted[j] * 255;\\n        }\\n      } else {\\n        base.getRgbItem(tinted, 0, baseBuf, pos);\\n        pos += baseNumComps;\\n      }\\n    }\\n\\n    if (!isPassthrough) {\\n      base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);\\n    }\\n  }\\n\\n  getOutputLength(inputLength, alpha01) {\\n    return this.base.getOutputLength(\\n      (inputLength * this.base.numComps) \u002F this.numComps,\\n      alpha01\\n    );\\n  }\\n}\\n\\nclass PatternCS extends ColorSpace {\\n  constructor(baseCS) {\\n    super(\\\"Pattern\\\", null);\\n    this.base = baseCS;\\n  }\\n\\n  isDefaultDecode(decodeMap, bpc) {\\n    unreachable(\\\"Should not call PatternCS.isDefaultDecode\\\");\\n  }\\n}\\n\\n\u002F**\\n * The default color is `new Uint8Array([0])`.\\n *\u002F\\nclass IndexedCS extends ColorSpace {\\n  constructor(base, highVal, lookup) {\\n    super(\\\"Indexed\\\", 1);\\n    this.base = base;\\n    this.highVal = highVal;\\n\\n    const length = base.numComps * highVal;\\n    this.lookup = new Uint8Array(length);\\n\\n    if (lookup instanceof BaseStream) {\\n      const bytes = lookup.getBytes(length);\\n      this.lookup.set(bytes);\\n    } else if (typeof lookup === \\\"string\\\") {\\n      for (let i = 0; i \u003C length; ++i) {\\n        this.lookup[i] = lookup.charCodeAt(i) & 0xff;\\n      }\\n    } else {\\n      throw new FormatError(`IndexedCS - unrecognized lookup table: ${lookup}`);\\n    }\\n  }\\n\\n  getRgbItem(src, srcOffset, dest, destOffset) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'IndexedCS.getRgbItem: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    const numComps = this.base.numComps;\\n    const start = src[srcOffset] * numComps;\\n    this.base.getRgbBuffer(this.lookup, start, 1, dest, destOffset, 8, 0);\\n  }\\n\\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'IndexedCS.getRgbBuffer: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    const base = this.base;\\n    const numComps = base.numComps;\\n    const outputDelta = base.getOutputLength(numComps, alpha01);\\n    const lookup = this.lookup;\\n\\n    for (let i = 0; i \u003C count; ++i) {\\n      const lookupPos = src[srcOffset++] * numComps;\\n      base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01);\\n      destOffset += outputDelta;\\n    }\\n  }\\n\\n  getOutputLength(inputLength, alpha01) {\\n    return this.base.getOutputLength(inputLength * this.base.numComps, alpha01);\\n  }\\n\\n  isDefaultDecode(decodeMap, bpc) {\\n    if (!Array.isArray(decodeMap)) {\\n      return true;\\n    }\\n    if (decodeMap.length !== 2) {\\n      warn(\\\"Decode map length is not correct\\\");\\n      return true;\\n    }\\n    if (!Number.isInteger(bpc) || bpc \u003C 1) {\\n      warn(\\\"Bits per component is not correct\\\");\\n      return true;\\n    }\\n    return decodeMap[0] === 0 && decodeMap[1] === (1 \u003C\u003C bpc) - 1;\\n  }\\n}\\n\\n\u002F**\\n * The default color is `new Float32Array([0])`.\\n *\u002F\\nclass DeviceGrayCS extends ColorSpace {\\n  constructor() {\\n    super(\\\"DeviceGray\\\", 1);\\n  }\\n\\n  getRgbItem(src, srcOffset, dest, destOffset) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'DeviceGrayCS.getRgbItem: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    const c = src[srcOffset] * 255;\\n    dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;\\n  }\\n\\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'DeviceGrayCS.getRgbBuffer: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    const scale = 255 \u002F ((1 \u003C\u003C bits) - 1);\\n    let j = srcOffset,\\n      q = destOffset;\\n    for (let i = 0; i \u003C count; ++i) {\\n      const c = scale * src[j++];\\n      dest[q++] = c;\\n      dest[q++] = c;\\n      dest[q++] = c;\\n      q += alpha01;\\n    }\\n  }\\n\\n  getOutputLength(inputLength, alpha01) {\\n    return inputLength * (3 + alpha01);\\n  }\\n}\\n\\n\u002F**\\n * The default color is `new Float32Array([0, 0, 0])`.\\n *\u002F\\nclass DeviceRgbCS extends ColorSpace {\\n  constructor() {\\n    super(\\\"DeviceRGB\\\", 3);\\n  }\\n\\n  getRgbItem(src, srcOffset, dest, destOffset) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'DeviceRgbCS.getRgbItem: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    dest[destOffset] = src[srcOffset] * 255;\\n    dest[destOffset + 1] = src[srcOffset + 1] * 255;\\n    dest[destOffset + 2] = src[srcOffset + 2] * 255;\\n  }\\n\\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'DeviceRgbCS.getRgbBuffer: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    if (bits === 8 && alpha01 === 0) {\\n      dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);\\n      return;\\n    }\\n    const scale = 255 \u002F ((1 \u003C\u003C bits) - 1);\\n    let j = srcOffset,\\n      q = destOffset;\\n    for (let i = 0; i \u003C count; ++i) {\\n      dest[q++] = scale * src[j++];\\n      dest[q++] = scale * src[j++];\\n      dest[q++] = scale * src[j++];\\n      q += alpha01;\\n    }\\n  }\\n\\n  getOutputLength(inputLength, alpha01) {\\n    return ((inputLength * (3 + alpha01)) \u002F 3) | 0;\\n  }\\n\\n  isPassthrough(bits) {\\n    return bits === 8;\\n  }\\n}\\n\\n\u002F**\\n * The default color is `new Float32Array([0, 0, 0, 1])`.\\n *\u002F\\nclass DeviceCmykCS extends ColorSpace {\\n  constructor() {\\n    super(\\\"DeviceCMYK\\\", 4);\\n  }\\n\\n  \u002F\u002F The coefficients below was found using numerical analysis: the method of\\n  \u002F\u002F steepest descent for the sum((f_i - color_value_i)^2) for r\u002Fg\u002Fb colors,\\n  \u002F\u002F where color_value is the tabular value from the table of sampled RGB colors\\n  \u002F\u002F from CMYK US Web Coated (SWOP) colorspace, and f_i is the corresponding\\n  \u002F\u002F CMYK color conversion using the estimation below:\\n  \u002F\u002F   f(A, B,.. N) = Acc+Bcm+Ccy+Dck+c+Fmm+Gmy+Hmk+Im+Jyy+Kyk+Ly+Mkk+Nk+255\\n  #toRgb(src, srcOffset, srcScale, dest, destOffset) {\\n    const c = src[srcOffset] * srcScale;\\n    const m = src[srcOffset + 1] * srcScale;\\n    const y = src[srcOffset + 2] * srcScale;\\n    const k = src[srcOffset + 3] * srcScale;\\n\\n    dest[destOffset] =\\n      255 +\\n      c *\\n        (-4.387332384609988 * c +\\n          54.48615194189176 * m +\\n          18.82290502165302 * y +\\n          212.25662451639585 * k +\\n          -285.2331026137004) +\\n      m *\\n        (1.7149763477362134 * m -\\n          5.6096736904047315 * y +\\n          -17.873870861415444 * k -\\n          5.497006427196366) +\\n      y *\\n        (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) +\\n      k * (-21.86122147463605 * k - 189.48180835922747);\\n\\n    dest[destOffset + 1] =\\n      255 +\\n      c *\\n        (8.841041422036149 * c +\\n          60.118027045597366 * m +\\n          6.871425592049007 * y +\\n          31.159100130055922 * k +\\n          -79.2970844816548) +\\n      m *\\n        (-15.310361306967817 * m +\\n          17.575251261109482 * y +\\n          131.35250912493976 * k -\\n          190.9453302588951) +\\n      y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) +\\n      k * (-20.737325471181034 * k - 187.80453709719578);\\n\\n    dest[destOffset + 2] =\\n      255 +\\n      c *\\n        (0.8842522430003296 * c +\\n          8.078677503112928 * m +\\n          30.89978309703729 * y -\\n          0.23883238689178934 * k +\\n          -14.183576799673286) +\\n      m *\\n        (10.49593273432072 * m +\\n          63.02378494754052 * y +\\n          50.606957656360734 * k -\\n          112.23884253719248) +\\n      y *\\n        (0.03296041114873217 * y +\\n          115.60384449646641 * k +\\n          -193.58209356861505) +\\n      k * (-22.33816807309886 * k - 180.12613974708367);\\n  }\\n\\n  getRgbItem(src, srcOffset, dest, destOffset) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'DeviceCmykCS.getRgbItem: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    this.#toRgb(src, srcOffset, 1, dest, destOffset);\\n  }\\n\\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'DeviceCmykCS.getRgbBuffer: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    const scale = 1 \u002F ((1 \u003C\u003C bits) - 1);\\n    for (let i = 0; i \u003C count; i++) {\\n      this.#toRgb(src, srcOffset, scale, dest, destOffset);\\n      srcOffset += 4;\\n      destOffset += 3 + alpha01;\\n    }\\n  }\\n\\n  getOutputLength(inputLength, alpha01) {\\n    return ((inputLength \u002F 4) * (3 + alpha01)) | 0;\\n  }\\n}\\n\\n\u002F**\\n * CalGrayCS: Based on \\\"PDF Reference, Sixth Ed\\\", p.245\\n *\\n * The default color is `new Float32Array([0])`.\\n *\u002F\\nclass CalGrayCS extends ColorSpace {\\n  constructor(whitePoint, blackPoint, gamma) {\\n    super(\\\"CalGray\\\", 1);\\n\\n    if (!whitePoint) {\\n      throw new FormatError(\\n        \\\"WhitePoint missing - required for color space CalGray\\\"\\n      );\\n    }\\n    \u002F\u002F Translate arguments to spec variables.\\n    [this.XW, this.YW, this.ZW] = whitePoint;\\n    [this.XB, this.YB, this.ZB] = blackPoint || [0, 0, 0];\\n    this.G = gamma || 1;\\n\\n    \u002F\u002F Validate variables as per spec.\\n    if (this.XW \u003C 0 || this.ZW \u003C 0 || this.YW !== 1) {\\n      throw new FormatError(\\n        `Invalid WhitePoint components for ${this.name}, no fallback available`\\n      );\\n    }\\n\\n    if (this.XB \u003C 0 || this.YB \u003C 0 || this.ZB \u003C 0) {\\n      info(`Invalid BlackPoint for ${this.name}, falling back to default.`);\\n      this.XB = this.YB = this.ZB = 0;\\n    }\\n\\n    if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) {\\n      warn(\\n        `${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` +\\n          `ZB: ${this.ZB}, only default values are supported.`\\n      );\\n    }\\n\\n    if (this.G \u003C 1) {\\n      info(\\n        `Invalid Gamma: ${this.G} for ${this.name}, falling back to default.`\\n      );\\n      this.G = 1;\\n    }\\n  }\\n\\n  #toRgb(src, srcOffset, dest, destOffset, scale) {\\n    \u002F\u002F A represents a gray component of a calibrated gray space.\\n    \u002F\u002F A \u003C---> AG in the spec\\n    const A = src[srcOffset] * scale;\\n    const AG = A ** this.G;\\n\\n    \u002F\u002F Computes L as per spec. ( = this.YW * AG )\\n    \u002F\u002F Except if other than default BlackPoint values are used.\\n    const L = this.YW * AG;\\n    \u002F\u002F http:\u002F\u002Fwww.poynton.com\u002Fnotes\u002Fcolour_and_gamma\u002FColorFAQ.html, Ch 4.\\n    \u002F\u002F Convert values to rgb range [0, 255].\\n    const val = Math.max(295.8 * L ** 0.3333333333333333 - 40.8, 0);\\n    dest[destOffset] = val;\\n    dest[destOffset + 1] = val;\\n    dest[destOffset + 2] = val;\\n  }\\n\\n  getRgbItem(src, srcOffset, dest, destOffset) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'CalGrayCS.getRgbItem: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    this.#toRgb(src, srcOffset, dest, destOffset, 1);\\n  }\\n\\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'CalGrayCS.getRgbBuffer: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    const scale = 1 \u002F ((1 \u003C\u003C bits) - 1);\\n\\n    for (let i = 0; i \u003C count; ++i) {\\n      this.#toRgb(src, srcOffset, dest, destOffset, scale);\\n      srcOffset += 1;\\n      destOffset += 3 + alpha01;\\n    }\\n  }\\n\\n  getOutputLength(inputLength, alpha01) {\\n    return inputLength * (3 + alpha01);\\n  }\\n}\\n\\n\u002F**\\n * CalRGBCS: Based on \\\"PDF Reference, Sixth Ed\\\", p.247\\n *\\n * The default color is `new Float32Array([0, 0, 0])`.\\n *\u002F\\nclass CalRGBCS extends ColorSpace {\\n  \u002F\u002F See http:\u002F\u002Fwww.brucelindbloom.com\u002Findex.html?Eqn_ChromAdapt.html for these\\n  \u002F\u002F matrices.\\n  \u002F\u002F prettier-ignore\\n  static #BRADFORD_SCALE_MATRIX = new Float32Array([\\n    0.8951, 0.2664, -0.1614,\\n    -0.7502, 1.7135, 0.0367,\\n    0.0389, -0.0685, 1.0296]);\\n\\n  \u002F\u002F prettier-ignore\\n  static #BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([\\n    0.9869929, -0.1470543, 0.1599627,\\n    0.4323053, 0.5183603, 0.0492912,\\n    -0.0085287, 0.0400428, 0.9684867]);\\n\\n  \u002F\u002F See http:\u002F\u002Fwww.brucelindbloom.com\u002Findex.html?Eqn_RGB_XYZ_Matrix.html.\\n  \u002F\u002F prettier-ignore\\n  static #SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([\\n    3.2404542, -1.5371385, -0.4985314,\\n    -0.9692660, 1.8760108, 0.0415560,\\n    0.0556434, -0.2040259, 1.0572252]);\\n\\n  static #FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);\\n\\n  static #tempNormalizeMatrix = new Float32Array(3);\\n\\n  static #tempConvertMatrix1 = new Float32Array(3);\\n\\n  static #tempConvertMatrix2 = new Float32Array(3);\\n\\n  static #DECODE_L_CONSTANT = ((8 + 16) \u002F 116) ** 3 \u002F 8.0;\\n\\n  constructor(whitePoint, blackPoint, gamma, matrix) {\\n    super(\\\"CalRGB\\\", 3);\\n\\n    if (!whitePoint) {\\n      throw new FormatError(\\n        \\\"WhitePoint missing - required for color space CalRGB\\\"\\n      );\\n    }\\n    \u002F\u002F Translate arguments to spec variables.\\n    const [XW, YW, ZW] = (this.whitePoint = whitePoint);\\n    const [XB, YB, ZB] = (this.blackPoint = blackPoint || new Float32Array(3));\\n\\n    [this.GR, this.GG, this.GB] = gamma || new Float32Array([1, 1, 1]);\\n    [\\n      this.MXA,\\n      this.MYA,\\n      this.MZA,\\n      this.MXB,\\n      this.MYB,\\n      this.MZB,\\n      this.MXC,\\n      this.MYC,\\n      this.MZC,\\n    ] = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\\n\\n    \u002F\u002F Validate variables as per spec.\\n    if (XW \u003C 0 || ZW \u003C 0 || YW !== 1) {\\n      throw new FormatError(\\n        `Invalid WhitePoint components for ${this.name}, no fallback available`\\n      );\\n    }\\n\\n    if (XB \u003C 0 || YB \u003C 0 || ZB \u003C 0) {\\n      info(\\n        `Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` +\\n          \\\"falling back to default.\\\"\\n      );\\n      this.blackPoint = new Float32Array(3);\\n    }\\n\\n    if (this.GR \u003C 0 || this.GG \u003C 0 || this.GB \u003C 0) {\\n      info(\\n        `Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` +\\n          `${this.name}, falling back to default.`\\n      );\\n      this.GR = this.GG = this.GB = 1;\\n    }\\n  }\\n\\n  #matrixProduct(a, b, result) {\\n    result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\\n    result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];\\n    result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];\\n  }\\n\\n  #toFlat(sourceWhitePoint, LMS, result) {\\n    result[0] = (LMS[0] * 1) \u002F sourceWhitePoint[0];\\n    result[1] = (LMS[1] * 1) \u002F sourceWhitePoint[1];\\n    result[2] = (LMS[2] * 1) \u002F sourceWhitePoint[2];\\n  }\\n\\n  #toD65(sourceWhitePoint, LMS, result) {\\n    const D65X = 0.95047;\\n    const D65Y = 1;\\n    const D65Z = 1.08883;\\n\\n    result[0] = (LMS[0] * D65X) \u002F sourceWhitePoint[0];\\n    result[1] = (LMS[1] * D65Y) \u002F sourceWhitePoint[1];\\n    result[2] = (LMS[2] * D65Z) \u002F sourceWhitePoint[2];\\n  }\\n\\n  #sRGBTransferFunction(color) {\\n    \u002F\u002F See http:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSRGB.\\n    if (color \u003C= 0.0031308) {\\n      return this.#adjustToRange(0, 1, 12.92 * color);\\n    }\\n    \u002F\u002F Optimization:\\n    \u002F\u002F If color is close enough to 1, skip calling the following transform\\n    \u002F\u002F since calling Math.pow is expensive. If color is larger than\\n    \u002F\u002F the threshold, the final result is larger than 254.5 since\\n    \u002F\u002F ((1 + 0.055) * 0.99554525 ** (1 \u002F 2.4) - 0.055) * 255 ===\\n    \u002F\u002F 254.50000003134699\\n    if (color >= 0.99554525) {\\n      return 1;\\n    }\\n    return this.#adjustToRange(0, 1, (1 + 0.055) * color ** (1 \u002F 2.4) - 0.055);\\n  }\\n\\n  #adjustToRange(min, max, value) {\\n    return Math.max(min, Math.min(max, value));\\n  }\\n\\n  #decodeL(L) {\\n    if (L \u003C 0) {\\n      return -this.#decodeL(-L);\\n    }\\n    if (L > 8.0) {\\n      return ((L + 16) \u002F 116) ** 3;\\n    }\\n    return L * CalRGBCS.#DECODE_L_CONSTANT;\\n  }\\n\\n  #compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {\\n    \u002F\u002F In case the blackPoint is already the default blackPoint then there is\\n    \u002F\u002F no need to do compensation.\\n    if (\\n      sourceBlackPoint[0] === 0 &&\\n      sourceBlackPoint[1] === 0 &&\\n      sourceBlackPoint[2] === 0\\n    ) {\\n      result[0] = XYZ_Flat[0];\\n      result[1] = XYZ_Flat[1];\\n      result[2] = XYZ_Flat[2];\\n      return;\\n    }\\n\\n    \u002F\u002F For the blackPoint calculation details, please see\\n    \u002F\u002F http:\u002F\u002Fwww.adobe.com\u002Fcontent\u002Fdam\u002FAdobe\u002Fen\u002Fdevnet\u002Fphotoshop\u002Fsdk\u002F\\n    \u002F\u002F AdobeBPC.pdf.\\n    \u002F\u002F The destination blackPoint is the default blackPoint [0, 0, 0].\\n    const zeroDecodeL = this.#decodeL(0);\\n\\n    const X_DST = zeroDecodeL;\\n    const X_SRC = this.#decodeL(sourceBlackPoint[0]);\\n\\n    const Y_DST = zeroDecodeL;\\n    const Y_SRC = this.#decodeL(sourceBlackPoint[1]);\\n\\n    const Z_DST = zeroDecodeL;\\n    const Z_SRC = this.#decodeL(sourceBlackPoint[2]);\\n\\n    const X_Scale = (1 - X_DST) \u002F (1 - X_SRC);\\n    const X_Offset = 1 - X_Scale;\\n\\n    const Y_Scale = (1 - Y_DST) \u002F (1 - Y_SRC);\\n    const Y_Offset = 1 - Y_Scale;\\n\\n    const Z_Scale = (1 - Z_DST) \u002F (1 - Z_SRC);\\n    const Z_Offset = 1 - Z_Scale;\\n\\n    result[0] = XYZ_Flat[0] * X_Scale + X_Offset;\\n    result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;\\n    result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;\\n  }\\n\\n  #normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {\\n    \u002F\u002F In case the whitePoint is already flat then there is no need to do\\n    \u002F\u002F normalization.\\n    if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {\\n      result[0] = XYZ_In[0];\\n      result[1] = XYZ_In[1];\\n      result[2] = XYZ_In[2];\\n      return;\\n    }\\n\\n    const LMS = result;\\n    this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\\n\\n    const LMS_Flat = CalRGBCS.#tempNormalizeMatrix;\\n    this.#toFlat(sourceWhitePoint, LMS, LMS_Flat);\\n\\n    this.#matrixProduct(\\n      CalRGBCS.#BRADFORD_SCALE_INVERSE_MATRIX,\\n      LMS_Flat,\\n      result\\n    );\\n  }\\n\\n  #normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {\\n    const LMS = result;\\n    this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\\n\\n    const LMS_D65 = CalRGBCS.#tempNormalizeMatrix;\\n    this.#toD65(sourceWhitePoint, LMS, LMS_D65);\\n\\n    this.#matrixProduct(\\n      CalRGBCS.#BRADFORD_SCALE_INVERSE_MATRIX,\\n      LMS_D65,\\n      result\\n    );\\n  }\\n\\n  #toRgb(src, srcOffset, dest, destOffset, scale) {\\n    \u002F\u002F A, B and C represent a red, green and blue components of a calibrated\\n    \u002F\u002F rgb space.\\n    const A = this.#adjustToRange(0, 1, src[srcOffset] * scale);\\n    const B = this.#adjustToRange(0, 1, src[srcOffset + 1] * scale);\\n    const C = this.#adjustToRange(0, 1, src[srcOffset + 2] * scale);\\n\\n    \u002F\u002F A \u003C---> AGR in the spec\\n    \u002F\u002F B \u003C---> BGG in the spec\\n    \u002F\u002F C \u003C---> CGB in the spec\\n    const AGR = A === 1 ? 1 : A ** this.GR;\\n    const BGG = B === 1 ? 1 : B ** this.GG;\\n    const CGB = C === 1 ? 1 : C ** this.GB;\\n\\n    \u002F\u002F Computes intermediate variables L, M, N as per spec.\\n    \u002F\u002F To decode X, Y, Z values map L, M, N directly to them.\\n    const X = this.MXA * AGR + this.MXB * BGG + this.MXC * CGB;\\n    const Y = this.MYA * AGR + this.MYB * BGG + this.MYC * CGB;\\n    const Z = this.MZA * AGR + this.MZB * BGG + this.MZC * CGB;\\n\\n    \u002F\u002F The following calculations are based on this document:\\n    \u002F\u002F http:\u002F\u002Fwww.adobe.com\u002Fcontent\u002Fdam\u002FAdobe\u002Fen\u002Fdevnet\u002Fphotoshop\u002Fsdk\u002F\\n    \u002F\u002F AdobeBPC.pdf.\\n    const XYZ = CalRGBCS.#tempConvertMatrix1;\\n    XYZ[0] = X;\\n    XYZ[1] = Y;\\n    XYZ[2] = Z;\\n    const XYZ_Flat = CalRGBCS.#tempConvertMatrix2;\\n\\n    this.#normalizeWhitePointToFlat(this.whitePoint, XYZ, XYZ_Flat);\\n\\n    const XYZ_Black = CalRGBCS.#tempConvertMatrix1;\\n    this.#compensateBlackPoint(this.blackPoint, XYZ_Flat, XYZ_Black);\\n\\n    const XYZ_D65 = CalRGBCS.#tempConvertMatrix2;\\n    this.#normalizeWhitePointToD65(\\n      CalRGBCS.#FLAT_WHITEPOINT_MATRIX,\\n      XYZ_Black,\\n      XYZ_D65\\n    );\\n\\n    const SRGB = CalRGBCS.#tempConvertMatrix1;\\n    this.#matrixProduct(CalRGBCS.#SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);\\n\\n    \u002F\u002F Convert the values to rgb range [0, 255].\\n    dest[destOffset] = this.#sRGBTransferFunction(SRGB[0]) * 255;\\n    dest[destOffset + 1] = this.#sRGBTransferFunction(SRGB[1]) * 255;\\n    dest[destOffset + 2] = this.#sRGBTransferFunction(SRGB[2]) * 255;\\n  }\\n\\n  getRgbItem(src, srcOffset, dest, destOffset) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'CalRGBCS.getRgbItem: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    this.#toRgb(src, srcOffset, dest, destOffset, 1);\\n  }\\n\\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'CalRGBCS.getRgbBuffer: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    const scale = 1 \u002F ((1 \u003C\u003C bits) - 1);\\n\\n    for (let i = 0; i \u003C count; ++i) {\\n      this.#toRgb(src, srcOffset, dest, destOffset, scale);\\n      srcOffset += 3;\\n      destOffset += 3 + alpha01;\\n    }\\n  }\\n\\n  getOutputLength(inputLength, alpha01) {\\n    return ((inputLength * (3 + alpha01)) \u002F 3) | 0;\\n  }\\n}\\n\\n\u002F**\\n * LabCS: Based on \\\"PDF Reference, Sixth Ed\\\", p.250\\n *\\n * The default color is `new Float32Array([0, 0, 0])`.\\n *\u002F\\nclass LabCS extends ColorSpace {\\n  constructor(whitePoint, blackPoint, range) {\\n    super(\\\"Lab\\\", 3);\\n\\n    if (!whitePoint) {\\n      throw new FormatError(\\n        \\\"WhitePoint missing - required for color space Lab\\\"\\n      );\\n    }\\n    \u002F\u002F Translate args to spec variables\\n    [this.XW, this.YW, this.ZW] = whitePoint;\\n    [this.amin, this.amax, this.bmin, this.bmax] = range || [\\n      -100, 100, -100, 100,\\n    ];\\n\\n    \u002F\u002F These are here just for completeness - the spec doesn't offer any\\n    \u002F\u002F formulas that use BlackPoint in Lab\\n    [this.XB, this.YB, this.ZB] = blackPoint || [0, 0, 0];\\n\\n    \u002F\u002F Validate vars as per spec\\n    if (this.XW \u003C 0 || this.ZW \u003C 0 || this.YW !== 1) {\\n      throw new FormatError(\\n        \\\"Invalid WhitePoint components, no fallback available\\\"\\n      );\\n    }\\n\\n    if (this.XB \u003C 0 || this.YB \u003C 0 || this.ZB \u003C 0) {\\n      info(\\\"Invalid BlackPoint, falling back to default\\\");\\n      this.XB = this.YB = this.ZB = 0;\\n    }\\n\\n    if (this.amin > this.amax || this.bmin > this.bmax) {\\n      info(\\\"Invalid Range, falling back to defaults\\\");\\n      this.amin = -100;\\n      this.amax = 100;\\n      this.bmin = -100;\\n      this.bmax = 100;\\n    }\\n  }\\n\\n  \u002F\u002F Function g(x) from spec\\n  #fn_g(x) {\\n    return x >= 6 \u002F 29 ? x ** 3 : (108 \u002F 841) * (x - 4 \u002F 29);\\n  }\\n\\n  #decode(value, high1, low2, high2) {\\n    return low2 + (value * (high2 - low2)) \u002F high1;\\n  }\\n\\n  \u002F\u002F If decoding is needed maxVal should be 2^bits per component - 1.\\n  #toRgb(src, srcOffset, maxVal, dest, destOffset) {\\n    \u002F\u002F XXX: Lab input is in the range of [0, 100], [amin, amax], [bmin, bmax]\\n    \u002F\u002F not the usual [0, 1]. If a command like setFillColor is used the src\\n    \u002F\u002F values will already be within the correct range. However, if we are\\n    \u002F\u002F converting an image we have to map the values to the correct range given\\n    \u002F\u002F above.\\n    \u002F\u002F Ls,as,bs \u003C---> L*,a*,b* in the spec\\n    let Ls = src[srcOffset];\\n    let as = src[srcOffset + 1];\\n    let bs = src[srcOffset + 2];\\n    if (maxVal !== false) {\\n      Ls = this.#decode(Ls, maxVal, 0, 100);\\n      as = this.#decode(as, maxVal, this.amin, this.amax);\\n      bs = this.#decode(bs, maxVal, this.bmin, this.bmax);\\n    }\\n\\n    \u002F\u002F Adjust limits of 'as' and 'bs'\\n    if (as > this.amax) {\\n      as = this.amax;\\n    } else if (as \u003C this.amin) {\\n      as = this.amin;\\n    }\\n    if (bs > this.bmax) {\\n      bs = this.bmax;\\n    } else if (bs \u003C this.bmin) {\\n      bs = this.bmin;\\n    }\\n\\n    \u002F\u002F Computes intermediate variables X,Y,Z as per spec\\n    const M = (Ls + 16) \u002F 116;\\n    const L = M + as \u002F 500;\\n    const N = M - bs \u002F 200;\\n\\n    const X = this.XW * this.#fn_g(L);\\n    const Y = this.YW * this.#fn_g(M);\\n    const Z = this.ZW * this.#fn_g(N);\\n\\n    let r, g, b;\\n    \u002F\u002F Using different conversions for D50 and D65 white points,\\n    \u002F\u002F per http:\u002F\u002Fwww.color.org\u002Fsrgb.pdf\\n    if (this.ZW \u003C 1) {\\n      \u002F\u002F Assuming D50 (X=0.9642, Y=1.00, Z=0.8249)\\n      r = X * 3.1339 + Y * -1.617 + Z * -0.4906;\\n      g = X * -0.9785 + Y * 1.916 + Z * 0.0333;\\n      b = X * 0.072 + Y * -0.229 + Z * 1.4057;\\n    } else {\\n      \u002F\u002F Assuming D65 (X=0.9505, Y=1.00, Z=1.0888)\\n      r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;\\n      g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;\\n      b = X * 0.0557 + Y * -0.204 + Z * 1.057;\\n    }\\n    \u002F\u002F Convert the color values to the [0,255] range (clamping is automatic).\\n    dest[destOffset] = Math.sqrt(r) * 255;\\n    dest[destOffset + 1] = Math.sqrt(g) * 255;\\n    dest[destOffset + 2] = Math.sqrt(b) * 255;\\n  }\\n\\n  getRgbItem(src, srcOffset, dest, destOffset) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'LabCS.getRgbItem: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    this.#toRgb(src, srcOffset, false, dest, destOffset);\\n  }\\n\\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'LabCS.getRgbBuffer: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    const maxVal = (1 \u003C\u003C bits) - 1;\\n    for (let i = 0; i \u003C count; i++) {\\n      this.#toRgb(src, srcOffset, maxVal, dest, destOffset);\\n      srcOffset += 3;\\n      destOffset += 3 + alpha01;\\n    }\\n  }\\n\\n  getOutputLength(inputLength, alpha01) {\\n    return ((inputLength * (3 + alpha01)) \u002F 3) | 0;\\n  }\\n\\n  isDefaultDecode(decodeMap, bpc) {\\n    \u002F\u002F XXX: Decoding is handled with the lab conversion because of the strange\\n    \u002F\u002F ranges that are used.\\n    return true;\\n  }\\n\\n  get usesZeroToOneRange() {\\n    return shadow(this, \\\"usesZeroToOneRange\\\", false);\\n  }\\n}\\n\\nexport { ColorSpace };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { FormatError } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nfunction hexToInt(a, size) {\\n  let n = 0;\\n  for (let i = 0; i \u003C= size; i++) {\\n    n = (n \u003C\u003C 8) | a[i];\\n  }\\n  return n >>> 0;\\n}\\n\\nfunction hexToStr(a, size) {\\n  \u002F\u002F This code is hot. Special-case some common values to avoid creating an\\n  \u002F\u002F object with subarray().\\n  if (size === 1) {\\n    return String.fromCharCode(a[0], a[1]);\\n  }\\n  if (size === 3) {\\n    return String.fromCharCode(a[0], a[1], a[2], a[3]);\\n  }\\n  return String.fromCharCode(...a.subarray(0, size + 1));\\n}\\n\\nfunction addHex(a, b, size) {\\n  let c = 0;\\n  for (let i = size; i >= 0; i--) {\\n    c += a[i] + b[i];\\n    a[i] = c & 255;\\n    c >>= 8;\\n  }\\n}\\n\\nfunction incHex(a, size) {\\n  let c = 1;\\n  for (let i = size; i >= 0 && c > 0; i--) {\\n    c += a[i];\\n    a[i] = c & 255;\\n    c >>= 8;\\n  }\\n}\\n\\nconst MAX_NUM_SIZE = 16;\\nconst MAX_ENCODED_NUM_SIZE = 19; \u002F\u002F ceil(MAX_NUM_SIZE * 7 \u002F 8)\\n\\nclass BinaryCMapStream {\\n  constructor(data) {\\n    this.buffer = data;\\n    this.pos = 0;\\n    this.end = data.length;\\n    this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);\\n  }\\n\\n  readByte() {\\n    if (this.pos >= this.end) {\\n      return -1;\\n    }\\n    return this.buffer[this.pos++];\\n  }\\n\\n  readNumber() {\\n    let n = 0;\\n    let last;\\n    do {\\n      const b = this.readByte();\\n      if (b \u003C 0) {\\n        throw new FormatError(\\\"unexpected EOF in bcmap\\\");\\n      }\\n      last = !(b & 0x80);\\n      n = (n \u003C\u003C 7) | (b & 0x7f);\\n    } while (!last);\\n    return n;\\n  }\\n\\n  readSigned() {\\n    const n = this.readNumber();\\n    return n & 1 ? ~(n >>> 1) : n >>> 1;\\n  }\\n\\n  readHex(num, size) {\\n    num.set(this.buffer.subarray(this.pos, this.pos + size + 1));\\n    this.pos += size + 1;\\n  }\\n\\n  readHexNumber(num, size) {\\n    let last;\\n    const stack = this.tmpBuf;\\n    let sp = 0;\\n    do {\\n      const b = this.readByte();\\n      if (b \u003C 0) {\\n        throw new FormatError(\\\"unexpected EOF in bcmap\\\");\\n      }\\n      last = !(b & 0x80);\\n      stack[sp++] = b & 0x7f;\\n    } while (!last);\\n    let i = size,\\n      buffer = 0,\\n      bufferSize = 0;\\n    while (i >= 0) {\\n      while (bufferSize \u003C 8 && stack.length > 0) {\\n        buffer |= stack[--sp] \u003C\u003C bufferSize;\\n        bufferSize += 7;\\n      }\\n      num[i] = buffer & 255;\\n      i--;\\n      buffer >>= 8;\\n      bufferSize -= 8;\\n    }\\n  }\\n\\n  readHexSigned(num, size) {\\n    this.readHexNumber(num, size);\\n    const sign = num[size] & 1 ? 255 : 0;\\n    let c = 0;\\n    for (let i = 0; i \u003C= size; i++) {\\n      c = ((c & 1) \u003C\u003C 8) | num[i];\\n      num[i] = (c >> 1) ^ sign;\\n    }\\n  }\\n\\n  readString() {\\n    const len = this.readNumber(),\\n      buf = new Array(len);\\n    for (let i = 0; i \u003C len; i++) {\\n      buf[i] = this.readNumber();\\n    }\\n    return String.fromCharCode(...buf);\\n  }\\n}\\n\\nclass BinaryCMapReader {\\n  async process(data, cMap, extend) {\\n    const stream = new BinaryCMapStream(data);\\n    const header = stream.readByte();\\n    cMap.vertical = !!(header & 1);\\n\\n    let useCMap = null;\\n    const start = new Uint8Array(MAX_NUM_SIZE);\\n    const end = new Uint8Array(MAX_NUM_SIZE);\\n    const char = new Uint8Array(MAX_NUM_SIZE);\\n    const charCode = new Uint8Array(MAX_NUM_SIZE);\\n    const tmp = new Uint8Array(MAX_NUM_SIZE);\\n    let code;\\n\\n    let b;\\n    while ((b = stream.readByte()) >= 0) {\\n      const type = b >> 5;\\n      if (type === 7) {\\n        \u002F\u002F metadata, e.g. comment or usecmap\\n        switch (b & 0x1f) {\\n          case 0:\\n            stream.readString(); \u002F\u002F skipping comment\\n            break;\\n          case 1:\\n            useCMap = stream.readString();\\n            break;\\n        }\\n        continue;\\n      }\\n      const sequence = !!(b & 0x10);\\n      const dataSize = b & 15;\\n\\n      if (dataSize + 1 > MAX_NUM_SIZE) {\\n        throw new Error(\\\"BinaryCMapReader.process: Invalid dataSize.\\\");\\n      }\\n\\n      const ucs2DataSize = 1;\\n      const subitemsCount = stream.readNumber();\\n      switch (type) {\\n        case 0: \u002F\u002F codespacerange\\n          stream.readHex(start, dataSize);\\n          stream.readHexNumber(end, dataSize);\\n          addHex(end, start, dataSize);\\n          cMap.addCodespaceRange(\\n            dataSize + 1,\\n            hexToInt(start, dataSize),\\n            hexToInt(end, dataSize)\\n          );\\n          for (let i = 1; i \u003C subitemsCount; i++) {\\n            incHex(end, dataSize);\\n            stream.readHexNumber(start, dataSize);\\n            addHex(start, end, dataSize);\\n            stream.readHexNumber(end, dataSize);\\n            addHex(end, start, dataSize);\\n            cMap.addCodespaceRange(\\n              dataSize + 1,\\n              hexToInt(start, dataSize),\\n              hexToInt(end, dataSize)\\n            );\\n          }\\n          break;\\n        case 1: \u002F\u002F notdefrange\\n          stream.readHex(start, dataSize);\\n          stream.readHexNumber(end, dataSize);\\n          addHex(end, start, dataSize);\\n          stream.readNumber(); \u002F\u002F code\\n          \u002F\u002F undefined range, skipping\\n          for (let i = 1; i \u003C subitemsCount; i++) {\\n            incHex(end, dataSize);\\n            stream.readHexNumber(start, dataSize);\\n            addHex(start, end, dataSize);\\n            stream.readHexNumber(end, dataSize);\\n            addHex(end, start, dataSize);\\n            stream.readNumber(); \u002F\u002F code\\n            \u002F\u002F nop\\n          }\\n          break;\\n        case 2: \u002F\u002F cidchar\\n          stream.readHex(char, dataSize);\\n          code = stream.readNumber();\\n          cMap.mapOne(hexToInt(char, dataSize), code);\\n          for (let i = 1; i \u003C subitemsCount; i++) {\\n            incHex(char, dataSize);\\n            if (!sequence) {\\n              stream.readHexNumber(tmp, dataSize);\\n              addHex(char, tmp, dataSize);\\n            }\\n            code = stream.readSigned() + (code + 1);\\n            cMap.mapOne(hexToInt(char, dataSize), code);\\n          }\\n          break;\\n        case 3: \u002F\u002F cidrange\\n          stream.readHex(start, dataSize);\\n          stream.readHexNumber(end, dataSize);\\n          addHex(end, start, dataSize);\\n          code = stream.readNumber();\\n          cMap.mapCidRange(\\n            hexToInt(start, dataSize),\\n            hexToInt(end, dataSize),\\n            code\\n          );\\n          for (let i = 1; i \u003C subitemsCount; i++) {\\n            incHex(end, dataSize);\\n            if (!sequence) {\\n              stream.readHexNumber(start, dataSize);\\n              addHex(start, end, dataSize);\\n            } else {\\n              start.set(end);\\n            }\\n            stream.readHexNumber(end, dataSize);\\n            addHex(end, start, dataSize);\\n            code = stream.readNumber();\\n            cMap.mapCidRange(\\n              hexToInt(start, dataSize),\\n              hexToInt(end, dataSize),\\n              code\\n            );\\n          }\\n          break;\\n        case 4: \u002F\u002F bfchar\\n          stream.readHex(char, ucs2DataSize);\\n          stream.readHex(charCode, dataSize);\\n          cMap.mapOne(\\n            hexToInt(char, ucs2DataSize),\\n            hexToStr(charCode, dataSize)\\n          );\\n          for (let i = 1; i \u003C subitemsCount; i++) {\\n            incHex(char, ucs2DataSize);\\n            if (!sequence) {\\n              stream.readHexNumber(tmp, ucs2DataSize);\\n              addHex(char, tmp, ucs2DataSize);\\n            }\\n            incHex(charCode, dataSize);\\n            stream.readHexSigned(tmp, dataSize);\\n            addHex(charCode, tmp, dataSize);\\n            cMap.mapOne(\\n              hexToInt(char, ucs2DataSize),\\n              hexToStr(charCode, dataSize)\\n            );\\n          }\\n          break;\\n        case 5: \u002F\u002F bfrange\\n          stream.readHex(start, ucs2DataSize);\\n          stream.readHexNumber(end, ucs2DataSize);\\n          addHex(end, start, ucs2DataSize);\\n          stream.readHex(charCode, dataSize);\\n          cMap.mapBfRange(\\n            hexToInt(start, ucs2DataSize),\\n            hexToInt(end, ucs2DataSize),\\n            hexToStr(charCode, dataSize)\\n          );\\n          for (let i = 1; i \u003C subitemsCount; i++) {\\n            incHex(end, ucs2DataSize);\\n            if (!sequence) {\\n              stream.readHexNumber(start, ucs2DataSize);\\n              addHex(start, end, ucs2DataSize);\\n            } else {\\n              start.set(end);\\n            }\\n            stream.readHexNumber(end, ucs2DataSize);\\n            addHex(end, start, ucs2DataSize);\\n            stream.readHex(charCode, dataSize);\\n            cMap.mapBfRange(\\n              hexToInt(start, ucs2DataSize),\\n              hexToInt(end, ucs2DataSize),\\n              hexToStr(charCode, dataSize)\\n            );\\n          }\\n          break;\\n        default:\\n          throw new Error(`BinaryCMapReader.process - unknown type: ${type}`);\\n      }\\n    }\\n\\n    if (useCMap) {\\n      return extend(useCMap);\\n    }\\n    return cMap;\\n  }\\n}\\n\\nexport { BinaryCMapReader };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { Stream } from \\\".\u002Fstream.js\\\";\\n\\n\u002F\u002F Lots of DecodeStreams are created whose buffers are never used.  For these\\n\u002F\u002F we share a single empty buffer. This is (a) space-efficient and (b) avoids\\n\u002F\u002F having special cases that would be required if we used |null| for an empty\\n\u002F\u002F buffer.\\nconst emptyBuffer = new Uint8Array(0);\\n\\n\u002F\u002F Super class for the decoding streams.\\nclass DecodeStream extends BaseStream {\\n  constructor(maybeMinBufferLength) {\\n    super();\\n    this._rawMinBufferLength = maybeMinBufferLength || 0;\\n\\n    this.pos = 0;\\n    this.bufferLength = 0;\\n    this.eof = false;\\n    this.buffer = emptyBuffer;\\n    this.minBufferLength = 512;\\n    if (maybeMinBufferLength) {\\n      \u002F\u002F Compute the first power of two that is as big as maybeMinBufferLength.\\n      while (this.minBufferLength \u003C maybeMinBufferLength) {\\n        this.minBufferLength *= 2;\\n      }\\n    }\\n  }\\n\\n  get isEmpty() {\\n    while (!this.eof && this.bufferLength === 0) {\\n      this.readBlock();\\n    }\\n    return this.bufferLength === 0;\\n  }\\n\\n  ensureBuffer(requested) {\\n    const buffer = this.buffer;\\n    if (requested \u003C= buffer.byteLength) {\\n      return buffer;\\n    }\\n    let size = this.minBufferLength;\\n    while (size \u003C requested) {\\n      size *= 2;\\n    }\\n    const buffer2 = new Uint8Array(size);\\n    buffer2.set(buffer);\\n    return (this.buffer = buffer2);\\n  }\\n\\n  getByte() {\\n    const pos = this.pos;\\n    while (this.bufferLength \u003C= pos) {\\n      if (this.eof) {\\n        return -1;\\n      }\\n      this.readBlock();\\n    }\\n    return this.buffer[this.pos++];\\n  }\\n\\n  getBytes(length, ignoreColorSpace = false) {\\n    const pos = this.pos;\\n    let end;\\n\\n    if (length) {\\n      this.ensureBuffer(pos + length);\\n      end = pos + length;\\n\\n      while (!this.eof && this.bufferLength \u003C end) {\\n        this.readBlock(ignoreColorSpace);\\n      }\\n      const bufEnd = this.bufferLength;\\n      if (end > bufEnd) {\\n        end = bufEnd;\\n      }\\n    } else {\\n      while (!this.eof) {\\n        this.readBlock(ignoreColorSpace);\\n      }\\n      end = this.bufferLength;\\n    }\\n\\n    this.pos = end;\\n    return this.buffer.subarray(pos, end);\\n  }\\n\\n  reset() {\\n    this.pos = 0;\\n  }\\n\\n  makeSubStream(start, length, dict = null) {\\n    if (length === undefined) {\\n      while (!this.eof) {\\n        this.readBlock();\\n      }\\n    } else {\\n      const end = start + length;\\n      while (this.bufferLength \u003C= end && !this.eof) {\\n        this.readBlock();\\n      }\\n    }\\n    return new Stream(this.buffer, start, length, dict);\\n  }\\n\\n  getBaseStreams() {\\n    return this.str ? this.str.getBaseStreams() : null;\\n  }\\n}\\n\\nclass StreamsSequenceStream extends DecodeStream {\\n  constructor(streams, onError = null) {\\n    let maybeLength = 0;\\n    for (const stream of streams) {\\n      maybeLength +=\\n        stream instanceof DecodeStream\\n          ? stream._rawMinBufferLength\\n          : stream.length;\\n    }\\n    super(maybeLength);\\n\\n    this.streams = streams;\\n    this._onError = onError;\\n  }\\n\\n  readBlock() {\\n    const streams = this.streams;\\n    if (streams.length === 0) {\\n      this.eof = true;\\n      return;\\n    }\\n    const stream = streams.shift();\\n    let chunk;\\n    try {\\n      chunk = stream.getBytes();\\n    } catch (reason) {\\n      if (this._onError) {\\n        this._onError(reason, stream.dict?.objId);\\n        return;\\n      }\\n      throw reason;\\n    }\\n    const bufferLength = this.bufferLength;\\n    const newLength = bufferLength + chunk.length;\\n    const buffer = this.ensureBuffer(newLength);\\n    buffer.set(chunk, bufferLength);\\n    this.bufferLength = newLength;\\n  }\\n\\n  getBaseStreams() {\\n    const baseStreamsBuf = [];\\n    for (const stream of this.streams) {\\n      const baseStreams = stream.getBaseStreams();\\n      if (baseStreams) {\\n        baseStreamsBuf.push(...baseStreams);\\n      }\\n    }\\n    return baseStreamsBuf.length > 0 ? baseStreamsBuf : null;\\n  }\\n}\\n\\nexport { DecodeStream, StreamsSequenceStream };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { DecodeStream } from \\\".\u002Fdecode_stream.js\\\";\\nimport { isWhiteSpace } from \\\".\u002Fcore_utils.js\\\";\\n\\nclass Ascii85Stream extends DecodeStream {\\n  constructor(str, maybeLength) {\\n    \u002F\u002F Most streams increase in size when decoded, but Ascii85 streams\\n    \u002F\u002F typically shrink by ~20%.\\n    if (maybeLength) {\\n      maybeLength *= 0.8;\\n    }\\n    super(maybeLength);\\n\\n    this.str = str;\\n    this.dict = str.dict;\\n    this.input = new Uint8Array(5);\\n  }\\n\\n  readBlock() {\\n    const TILDA_CHAR = 0x7e; \u002F\u002F '~'\\n    const Z_LOWER_CHAR = 0x7a; \u002F\u002F 'z'\\n    const EOF = -1;\\n\\n    const str = this.str;\\n\\n    let c = str.getByte();\\n    while (isWhiteSpace(c)) {\\n      c = str.getByte();\\n    }\\n\\n    if (c === EOF || c === TILDA_CHAR) {\\n      this.eof = true;\\n      return;\\n    }\\n\\n    const bufferLength = this.bufferLength;\\n    let buffer, i;\\n\\n    \u002F\u002F special code for z\\n    if (c === Z_LOWER_CHAR) {\\n      buffer = this.ensureBuffer(bufferLength + 4);\\n      for (i = 0; i \u003C 4; ++i) {\\n        buffer[bufferLength + i] = 0;\\n      }\\n      this.bufferLength += 4;\\n    } else {\\n      const input = this.input;\\n      input[0] = c;\\n      for (i = 1; i \u003C 5; ++i) {\\n        c = str.getByte();\\n        while (isWhiteSpace(c)) {\\n          c = str.getByte();\\n        }\\n\\n        input[i] = c;\\n\\n        if (c === EOF || c === TILDA_CHAR) {\\n          break;\\n        }\\n      }\\n      buffer = this.ensureBuffer(bufferLength + i - 1);\\n      this.bufferLength += i - 1;\\n\\n      \u002F\u002F partial ending;\\n      if (i \u003C 5) {\\n        for (; i \u003C 5; ++i) {\\n          input[i] = 0x21 + 84;\\n        }\\n        this.eof = true;\\n      }\\n      let t = 0;\\n      for (i = 0; i \u003C 5; ++i) {\\n        t = t * 85 + (input[i] - 0x21);\\n      }\\n\\n      for (i = 3; i >= 0; --i) {\\n        buffer[bufferLength + i] = t & 0xff;\\n        t >>= 8;\\n      }\\n    }\\n  }\\n}\\n\\nexport { Ascii85Stream };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { DecodeStream } from \\\".\u002Fdecode_stream.js\\\";\\n\\nclass AsciiHexStream extends DecodeStream {\\n  constructor(str, maybeLength) {\\n    \u002F\u002F Most streams increase in size when decoded, but AsciiHex streams shrink\\n    \u002F\u002F by 50%.\\n    if (maybeLength) {\\n      maybeLength *= 0.5;\\n    }\\n    super(maybeLength);\\n\\n    this.str = str;\\n    this.dict = str.dict;\\n\\n    this.firstDigit = -1;\\n  }\\n\\n  readBlock() {\\n    const UPSTREAM_BLOCK_SIZE = 8000;\\n    const bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE);\\n    if (!bytes.length) {\\n      this.eof = true;\\n      return;\\n    }\\n\\n    const maxDecodeLength = (bytes.length + 1) >> 1;\\n    const buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);\\n    let bufferLength = this.bufferLength;\\n\\n    let firstDigit = this.firstDigit;\\n    for (const ch of bytes) {\\n      let digit;\\n      if (ch >= \u002F* '0' = *\u002F 0x30 && ch \u003C= \u002F* '9' = *\u002F 0x39) {\\n        digit = ch & 0x0f;\\n      } else if (\\n        (ch >= \u002F* 'A' = *\u002F 0x41 && ch \u003C= \u002F* 'Z' = *\u002F 0x46) ||\\n        (ch >= \u002F* 'a' = *\u002F 0x61 && ch \u003C= \u002F* 'z' = *\u002F 0x66)\\n      ) {\\n        digit = (ch & 0x0f) + 9;\\n      } else if (ch === \u002F* '>' = *\u002F 0x3e) {\\n        this.eof = true;\\n        break;\\n      } else {\\n        \u002F\u002F Probably whitespace, ignoring.\\n        continue;\\n      }\\n      if (firstDigit \u003C 0) {\\n        firstDigit = digit;\\n      } else {\\n        buffer[bufferLength++] = (firstDigit \u003C\u003C 4) | digit;\\n        firstDigit = -1;\\n      }\\n    }\\n    if (firstDigit >= 0 && this.eof) {\\n      \u002F\u002F incomplete byte\\n      buffer[bufferLength++] = firstDigit \u003C\u003C 4;\\n      firstDigit = -1;\\n    }\\n    this.firstDigit = firstDigit;\\n    this.bufferLength = bufferLength;\\n  }\\n}\\n\\nexport { AsciiHexStream };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\u002F* Copyright 1996-2003 Glyph & Cog, LLC\\n *\\n * The CCITT stream implementation contained in this file is a JavaScript port\\n * of XPDF's implementation, made available under the Apache 2.0 open source\\n * license.\\n *\u002F\\n\\nimport { FormatError, info } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\n\u002F**\\n * @typedef {Object} CCITTFaxDecoderSource\\n * @property {function} next - Method that return one byte of data for decoding,\\n *   or -1 when EOF is reached.\\n *\u002F\\n\\nconst ccittEOL = -2;\\nconst ccittEOF = -1;\\nconst twoDimPass = 0;\\nconst twoDimHoriz = 1;\\nconst twoDimVert0 = 2;\\nconst twoDimVertR1 = 3;\\nconst twoDimVertL1 = 4;\\nconst twoDimVertR2 = 5;\\nconst twoDimVertL2 = 6;\\nconst twoDimVertR3 = 7;\\nconst twoDimVertL3 = 8;\\n\\n\u002F\u002F prettier-ignore\\nconst twoDimTable = [\\n  [-1, -1], [-1, -1],                   \u002F\u002F 000000x\\n  [7, twoDimVertL3],                    \u002F\u002F 0000010\\n  [7, twoDimVertR3],                    \u002F\u002F 0000011\\n  [6, twoDimVertL2], [6, twoDimVertL2], \u002F\u002F 000010x\\n  [6, twoDimVertR2], [6, twoDimVertR2], \u002F\u002F 000011x\\n  [4, twoDimPass], [4, twoDimPass],     \u002F\u002F 0001xxx\\n  [4, twoDimPass], [4, twoDimPass],\\n  [4, twoDimPass], [4, twoDimPass],\\n  [4, twoDimPass], [4, twoDimPass],\\n  [3, twoDimHoriz], [3, twoDimHoriz],   \u002F\u002F 001xxxx\\n  [3, twoDimHoriz], [3, twoDimHoriz],\\n  [3, twoDimHoriz], [3, twoDimHoriz],\\n  [3, twoDimHoriz], [3, twoDimHoriz],\\n  [3, twoDimHoriz], [3, twoDimHoriz],\\n  [3, twoDimHoriz], [3, twoDimHoriz],\\n  [3, twoDimHoriz], [3, twoDimHoriz],\\n  [3, twoDimHoriz], [3, twoDimHoriz],\\n  [3, twoDimVertL1], [3, twoDimVertL1], \u002F\u002F 010xxxx\\n  [3, twoDimVertL1], [3, twoDimVertL1],\\n  [3, twoDimVertL1], [3, twoDimVertL1],\\n  [3, twoDimVertL1], [3, twoDimVertL1],\\n  [3, twoDimVertL1], [3, twoDimVertL1],\\n  [3, twoDimVertL1], [3, twoDimVertL1],\\n  [3, twoDimVertL1], [3, twoDimVertL1],\\n  [3, twoDimVertL1], [3, twoDimVertL1],\\n  [3, twoDimVertR1], [3, twoDimVertR1], \u002F\u002F 011xxxx\\n  [3, twoDimVertR1], [3, twoDimVertR1],\\n  [3, twoDimVertR1], [3, twoDimVertR1],\\n  [3, twoDimVertR1], [3, twoDimVertR1],\\n  [3, twoDimVertR1], [3, twoDimVertR1],\\n  [3, twoDimVertR1], [3, twoDimVertR1],\\n  [3, twoDimVertR1], [3, twoDimVertR1],\\n  [3, twoDimVertR1], [3, twoDimVertR1],\\n  [1, twoDimVert0], [1, twoDimVert0],   \u002F\u002F 1xxxxxx\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0]\\n];\\n\\n\u002F\u002F prettier-ignore\\nconst whiteTable1 = [\\n  [-1, -1],                               \u002F\u002F 00000\\n  [12, ccittEOL],                         \u002F\u002F 00001\\n  [-1, -1], [-1, -1],                     \u002F\u002F 0001x\\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1], \u002F\u002F 001xx\\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1], \u002F\u002F 010xx\\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1], \u002F\u002F 011xx\\n  [11, 1792], [11, 1792],                 \u002F\u002F 1000x\\n  [12, 1984],                             \u002F\u002F 10010\\n  [12, 2048],                             \u002F\u002F 10011\\n  [12, 2112],                             \u002F\u002F 10100\\n  [12, 2176],                             \u002F\u002F 10101\\n  [12, 2240],                             \u002F\u002F 10110\\n  [12, 2304],                             \u002F\u002F 10111\\n  [11, 1856], [11, 1856],                 \u002F\u002F 1100x\\n  [11, 1920], [11, 1920],                 \u002F\u002F 1101x\\n  [12, 2368],                             \u002F\u002F 11100\\n  [12, 2432],                             \u002F\u002F 11101\\n  [12, 2496],                             \u002F\u002F 11110\\n  [12, 2560]                              \u002F\u002F 11111\\n];\\n\\n\u002F\u002F prettier-ignore\\nconst whiteTable2 = [\\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],     \u002F\u002F 0000000xx\\n  [8, 29], [8, 29],                           \u002F\u002F 00000010x\\n  [8, 30], [8, 30],                           \u002F\u002F 00000011x\\n  [8, 45], [8, 45],                           \u002F\u002F 00000100x\\n  [8, 46], [8, 46],                           \u002F\u002F 00000101x\\n  [7, 22], [7, 22], [7, 22], [7, 22],         \u002F\u002F 0000011xx\\n  [7, 23], [7, 23], [7, 23], [7, 23],         \u002F\u002F 0000100xx\\n  [8, 47], [8, 47],                           \u002F\u002F 00001010x\\n  [8, 48], [8, 48],                           \u002F\u002F 00001011x\\n  [6, 13], [6, 13], [6, 13], [6, 13],         \u002F\u002F 000011xxx\\n  [6, 13], [6, 13], [6, 13], [6, 13],\\n  [7, 20], [7, 20], [7, 20], [7, 20],         \u002F\u002F 0001000xx\\n  [8, 33], [8, 33],                           \u002F\u002F 00010010x\\n  [8, 34], [8, 34],                           \u002F\u002F 00010011x\\n  [8, 35], [8, 35],                           \u002F\u002F 00010100x\\n  [8, 36], [8, 36],                           \u002F\u002F 00010101x\\n  [8, 37], [8, 37],                           \u002F\u002F 00010110x\\n  [8, 38], [8, 38],                           \u002F\u002F 00010111x\\n  [7, 19], [7, 19], [7, 19], [7, 19],         \u002F\u002F 0001100xx\\n  [8, 31], [8, 31],                           \u002F\u002F 00011010x\\n  [8, 32], [8, 32],                           \u002F\u002F 00011011x\\n  [6, 1], [6, 1], [6, 1], [6, 1],             \u002F\u002F 000111xxx\\n  [6, 1], [6, 1], [6, 1], [6, 1],\\n  [6, 12], [6, 12], [6, 12], [6, 12],         \u002F\u002F 001000xxx\\n  [6, 12], [6, 12], [6, 12], [6, 12],\\n  [8, 53], [8, 53],                           \u002F\u002F 00100100x\\n  [8, 54], [8, 54],                           \u002F\u002F 00100101x\\n  [7, 26], [7, 26], [7, 26], [7, 26],         \u002F\u002F 0010011xx\\n  [8, 39], [8, 39],                           \u002F\u002F 00101000x\\n  [8, 40], [8, 40],                           \u002F\u002F 00101001x\\n  [8, 41], [8, 41],                           \u002F\u002F 00101010x\\n  [8, 42], [8, 42],                           \u002F\u002F 00101011x\\n  [8, 43], [8, 43],                           \u002F\u002F 00101100x\\n  [8, 44], [8, 44],                           \u002F\u002F 00101101x\\n  [7, 21], [7, 21], [7, 21], [7, 21],         \u002F\u002F 0010111xx\\n  [7, 28], [7, 28], [7, 28], [7, 28],         \u002F\u002F 0011000xx\\n  [8, 61], [8, 61],                           \u002F\u002F 00110010x\\n  [8, 62], [8, 62],                           \u002F\u002F 00110011x\\n  [8, 63], [8, 63],                           \u002F\u002F 00110100x\\n  [8, 0], [8, 0],                             \u002F\u002F 00110101x\\n  [8, 320], [8, 320],                         \u002F\u002F 00110110x\\n  [8, 384], [8, 384],                         \u002F\u002F 00110111x\\n  [5, 10], [5, 10], [5, 10], [5, 10],         \u002F\u002F 00111xxxx\\n  [5, 10], [5, 10], [5, 10], [5, 10],\\n  [5, 10], [5, 10], [5, 10], [5, 10],\\n  [5, 10], [5, 10], [5, 10], [5, 10],\\n  [5, 11], [5, 11], [5, 11], [5, 11],         \u002F\u002F 01000xxxx\\n  [5, 11], [5, 11], [5, 11], [5, 11],\\n  [5, 11], [5, 11], [5, 11], [5, 11],\\n  [5, 11], [5, 11], [5, 11], [5, 11],\\n  [7, 27], [7, 27], [7, 27], [7, 27],         \u002F\u002F 0100100xx\\n  [8, 59], [8, 59],                           \u002F\u002F 01001010x\\n  [8, 60], [8, 60],                           \u002F\u002F 01001011x\\n  [9, 1472],                                  \u002F\u002F 010011000\\n  [9, 1536],                                  \u002F\u002F 010011001\\n  [9, 1600],                                  \u002F\u002F 010011010\\n  [9, 1728],                                  \u002F\u002F 010011011\\n  [7, 18], [7, 18], [7, 18], [7, 18],         \u002F\u002F 0100111xx\\n  [7, 24], [7, 24], [7, 24], [7, 24],         \u002F\u002F 0101000xx\\n  [8, 49], [8, 49],                           \u002F\u002F 01010010x\\n  [8, 50], [8, 50],                           \u002F\u002F 01010011x\\n  [8, 51], [8, 51],                           \u002F\u002F 01010100x\\n  [8, 52], [8, 52],                           \u002F\u002F 01010101x\\n  [7, 25], [7, 25], [7, 25], [7, 25],         \u002F\u002F 0101011xx\\n  [8, 55], [8, 55],                           \u002F\u002F 01011000x\\n  [8, 56], [8, 56],                           \u002F\u002F 01011001x\\n  [8, 57], [8, 57],                           \u002F\u002F 01011010x\\n  [8, 58], [8, 58],                           \u002F\u002F 01011011x\\n  [6, 192], [6, 192], [6, 192], [6, 192],     \u002F\u002F 010111xxx\\n  [6, 192], [6, 192], [6, 192], [6, 192],\\n  [6, 1664], [6, 1664], [6, 1664], [6, 1664], \u002F\u002F 011000xxx\\n  [6, 1664], [6, 1664], [6, 1664], [6, 1664],\\n  [8, 448], [8, 448],                         \u002F\u002F 01100100x\\n  [8, 512], [8, 512],                         \u002F\u002F 01100101x\\n  [9, 704],                                   \u002F\u002F 011001100\\n  [9, 768],                                   \u002F\u002F 011001101\\n  [8, 640], [8, 640],                         \u002F\u002F 01100111x\\n  [8, 576], [8, 576],                         \u002F\u002F 01101000x\\n  [9, 832],                                   \u002F\u002F 011010010\\n  [9, 896],                                   \u002F\u002F 011010011\\n  [9, 960],                                   \u002F\u002F 011010100\\n  [9, 1024],                                  \u002F\u002F 011010101\\n  [9, 1088],                                  \u002F\u002F 011010110\\n  [9, 1152],                                  \u002F\u002F 011010111\\n  [9, 1216],                                  \u002F\u002F 011011000\\n  [9, 1280],                                  \u002F\u002F 011011001\\n  [9, 1344],                                  \u002F\u002F 011011010\\n  [9, 1408],                                  \u002F\u002F 011011011\\n  [7, 256], [7, 256], [7, 256], [7, 256],     \u002F\u002F 0110111xx\\n  [4, 2], [4, 2], [4, 2], [4, 2],             \u002F\u002F 0111xxxxx\\n  [4, 2], [4, 2], [4, 2], [4, 2],\\n  [4, 2], [4, 2], [4, 2], [4, 2],\\n  [4, 2], [4, 2], [4, 2], [4, 2],\\n  [4, 2], [4, 2], [4, 2], [4, 2],\\n  [4, 2], [4, 2], [4, 2], [4, 2],\\n  [4, 2], [4, 2], [4, 2], [4, 2],\\n  [4, 2], [4, 2], [4, 2], [4, 2],\\n  [4, 3], [4, 3], [4, 3], [4, 3],             \u002F\u002F 1000xxxxx\\n  [4, 3], [4, 3], [4, 3], [4, 3],\\n  [4, 3], [4, 3], [4, 3], [4, 3],\\n  [4, 3], [4, 3], [4, 3], [4, 3],\\n  [4, 3], [4, 3], [4, 3], [4, 3],\\n  [4, 3], [4, 3], [4, 3], [4, 3],\\n  [4, 3], [4, 3], [4, 3], [4, 3],\\n  [4, 3], [4, 3], [4, 3], [4, 3],\\n  [5, 128], [5, 128], [5, 128], [5, 128],     \u002F\u002F 10010xxxx\\n  [5, 128], [5, 128], [5, 128], [5, 128],\\n  [5, 128], [5, 128], [5, 128], [5, 128],\\n  [5, 128], [5, 128], [5, 128], [5, 128],\\n  [5, 8], [5, 8], [5, 8], [5, 8],             \u002F\u002F 10011xxxx\\n  [5, 8], [5, 8], [5, 8], [5, 8],\\n  [5, 8], [5, 8], [5, 8], [5, 8],\\n  [5, 8], [5, 8], [5, 8], [5, 8],\\n  [5, 9], [5, 9], [5, 9], [5, 9],             \u002F\u002F 10100xxxx\\n  [5, 9], [5, 9], [5, 9], [5, 9],\\n  [5, 9], [5, 9], [5, 9], [5, 9],\\n  [5, 9], [5, 9], [5, 9], [5, 9],\\n  [6, 16], [6, 16], [6, 16], [6, 16],         \u002F\u002F 101010xxx\\n  [6, 16], [6, 16], [6, 16], [6, 16],\\n  [6, 17], [6, 17], [6, 17], [6, 17],         \u002F\u002F 101011xxx\\n  [6, 17], [6, 17], [6, 17], [6, 17],\\n  [4, 4], [4, 4], [4, 4], [4, 4],             \u002F\u002F 1011xxxxx\\n  [4, 4], [4, 4], [4, 4], [4, 4],\\n  [4, 4], [4, 4], [4, 4], [4, 4],\\n  [4, 4], [4, 4], [4, 4], [4, 4],\\n  [4, 4], [4, 4], [4, 4], [4, 4],\\n  [4, 4], [4, 4], [4, 4], [4, 4],\\n  [4, 4], [4, 4], [4, 4], [4, 4],\\n  [4, 4], [4, 4], [4, 4], [4, 4],\\n  [4, 5], [4, 5], [4, 5], [4, 5],             \u002F\u002F 1100xxxxx\\n  [4, 5], [4, 5], [4, 5], [4, 5],\\n  [4, 5], [4, 5], [4, 5], [4, 5],\\n  [4, 5], [4, 5], [4, 5], [4, 5],\\n  [4, 5], [4, 5], [4, 5], [4, 5],\\n  [4, 5], [4, 5], [4, 5], [4, 5],\\n  [4, 5], [4, 5], [4, 5], [4, 5],\\n  [4, 5], [4, 5], [4, 5], [4, 5],\\n  [6, 14], [6, 14], [6, 14], [6, 14],         \u002F\u002F 110100xxx\\n  [6, 14], [6, 14], [6, 14], [6, 14],\\n  [6, 15], [6, 15], [6, 15], [6, 15],         \u002F\u002F 110101xxx\\n  [6, 15], [6, 15], [6, 15], [6, 15],\\n  [5, 64], [5, 64], [5, 64], [5, 64],         \u002F\u002F 11011xxxx\\n  [5, 64], [5, 64], [5, 64], [5, 64],\\n  [5, 64], [5, 64], [5, 64], [5, 64],\\n  [5, 64], [5, 64], [5, 64], [5, 64],\\n  [4, 6], [4, 6], [4, 6], [4, 6],             \u002F\u002F 1110xxxxx\\n  [4, 6], [4, 6], [4, 6], [4, 6],\\n  [4, 6], [4, 6], [4, 6], [4, 6],\\n  [4, 6], [4, 6], [4, 6], [4, 6],\\n  [4, 6], [4, 6], [4, 6], [4, 6],\\n  [4, 6], [4, 6], [4, 6], [4, 6],\\n  [4, 6], [4, 6], [4, 6], [4, 6],\\n  [4, 6], [4, 6], [4, 6], [4, 6],\\n  [4, 7], [4, 7], [4, 7], [4, 7],             \u002F\u002F 1111xxxxx\\n  [4, 7], [4, 7], [4, 7], [4, 7],\\n  [4, 7], [4, 7], [4, 7], [4, 7],\\n  [4, 7], [4, 7], [4, 7], [4, 7],\\n  [4, 7], [4, 7], [4, 7], [4, 7],\\n  [4, 7], [4, 7], [4, 7], [4, 7],\\n  [4, 7], [4, 7], [4, 7], [4, 7],\\n  [4, 7], [4, 7], [4, 7], [4, 7]\\n];\\n\\n\u002F\u002F prettier-ignore\\nconst blackTable1 = [\\n  [-1, -1], [-1, -1],                             \u002F\u002F 000000000000x\\n  [12, ccittEOL], [12, ccittEOL],                 \u002F\u002F 000000000001x\\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         \u002F\u002F 00000000001xx\\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         \u002F\u002F 00000000010xx\\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         \u002F\u002F 00000000011xx\\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         \u002F\u002F 00000000100xx\\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         \u002F\u002F 00000000101xx\\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         \u002F\u002F 00000000110xx\\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         \u002F\u002F 00000000111xx\\n  [11, 1792], [11, 1792], [11, 1792], [11, 1792], \u002F\u002F 00000001000xx\\n  [12, 1984], [12, 1984],                         \u002F\u002F 000000010010x\\n  [12, 2048], [12, 2048],                         \u002F\u002F 000000010011x\\n  [12, 2112], [12, 2112],                         \u002F\u002F 000000010100x\\n  [12, 2176], [12, 2176],                         \u002F\u002F 000000010101x\\n  [12, 2240], [12, 2240],                         \u002F\u002F 000000010110x\\n  [12, 2304], [12, 2304],                         \u002F\u002F 000000010111x\\n  [11, 1856], [11, 1856], [11, 1856], [11, 1856], \u002F\u002F 00000001100xx\\n  [11, 1920], [11, 1920], [11, 1920], [11, 1920], \u002F\u002F 00000001101xx\\n  [12, 2368], [12, 2368],                         \u002F\u002F 000000011100x\\n  [12, 2432], [12, 2432],                         \u002F\u002F 000000011101x\\n  [12, 2496], [12, 2496],                         \u002F\u002F 000000011110x\\n  [12, 2560], [12, 2560],                         \u002F\u002F 000000011111x\\n  [10, 18], [10, 18], [10, 18], [10, 18],         \u002F\u002F 0000001000xxx\\n  [10, 18], [10, 18], [10, 18], [10, 18],\\n  [12, 52], [12, 52],                             \u002F\u002F 000000100100x\\n  [13, 640],                                      \u002F\u002F 0000001001010\\n  [13, 704],                                      \u002F\u002F 0000001001011\\n  [13, 768],                                      \u002F\u002F 0000001001100\\n  [13, 832],                                      \u002F\u002F 0000001001101\\n  [12, 55], [12, 55],                             \u002F\u002F 000000100111x\\n  [12, 56], [12, 56],                             \u002F\u002F 000000101000x\\n  [13, 1280],                                     \u002F\u002F 0000001010010\\n  [13, 1344],                                     \u002F\u002F 0000001010011\\n  [13, 1408],                                     \u002F\u002F 0000001010100\\n  [13, 1472],                                     \u002F\u002F 0000001010101\\n  [12, 59], [12, 59],                             \u002F\u002F 000000101011x\\n  [12, 60], [12, 60],                             \u002F\u002F 000000101100x\\n  [13, 1536],                                     \u002F\u002F 0000001011010\\n  [13, 1600],                                     \u002F\u002F 0000001011011\\n  [11, 24], [11, 24], [11, 24], [11, 24],         \u002F\u002F 00000010111xx\\n  [11, 25], [11, 25], [11, 25], [11, 25],         \u002F\u002F 00000011000xx\\n  [13, 1664],                                     \u002F\u002F 0000001100100\\n  [13, 1728],                                     \u002F\u002F 0000001100101\\n  [12, 320], [12, 320],                           \u002F\u002F 000000110011x\\n  [12, 384], [12, 384],                           \u002F\u002F 000000110100x\\n  [12, 448], [12, 448],                           \u002F\u002F 000000110101x\\n  [13, 512],                                      \u002F\u002F 0000001101100\\n  [13, 576],                                      \u002F\u002F 0000001101101\\n  [12, 53], [12, 53],                             \u002F\u002F 000000110111x\\n  [12, 54], [12, 54],                             \u002F\u002F 000000111000x\\n  [13, 896],                                      \u002F\u002F 0000001110010\\n  [13, 960],                                      \u002F\u002F 0000001110011\\n  [13, 1024],                                     \u002F\u002F 0000001110100\\n  [13, 1088],                                     \u002F\u002F 0000001110101\\n  [13, 1152],                                     \u002F\u002F 0000001110110\\n  [13, 1216],                                     \u002F\u002F 0000001110111\\n  [10, 64], [10, 64], [10, 64], [10, 64],         \u002F\u002F 0000001111xxx\\n  [10, 64], [10, 64], [10, 64], [10, 64]\\n];\\n\\n\u002F\u002F prettier-ignore\\nconst blackTable2 = [\\n  [8, 13], [8, 13], [8, 13], [8, 13],     \u002F\u002F 00000100xxxx\\n  [8, 13], [8, 13], [8, 13], [8, 13],\\n  [8, 13], [8, 13], [8, 13], [8, 13],\\n  [8, 13], [8, 13], [8, 13], [8, 13],\\n  [11, 23], [11, 23],                     \u002F\u002F 00000101000x\\n  [12, 50],                               \u002F\u002F 000001010010\\n  [12, 51],                               \u002F\u002F 000001010011\\n  [12, 44],                               \u002F\u002F 000001010100\\n  [12, 45],                               \u002F\u002F 000001010101\\n  [12, 46],                               \u002F\u002F 000001010110\\n  [12, 47],                               \u002F\u002F 000001010111\\n  [12, 57],                               \u002F\u002F 000001011000\\n  [12, 58],                               \u002F\u002F 000001011001\\n  [12, 61],                               \u002F\u002F 000001011010\\n  [12, 256],                              \u002F\u002F 000001011011\\n  [10, 16], [10, 16], [10, 16], [10, 16], \u002F\u002F 0000010111xx\\n  [10, 17], [10, 17], [10, 17], [10, 17], \u002F\u002F 0000011000xx\\n  [12, 48],                               \u002F\u002F 000001100100\\n  [12, 49],                               \u002F\u002F 000001100101\\n  [12, 62],                               \u002F\u002F 000001100110\\n  [12, 63],                               \u002F\u002F 000001100111\\n  [12, 30],                               \u002F\u002F 000001101000\\n  [12, 31],                               \u002F\u002F 000001101001\\n  [12, 32],                               \u002F\u002F 000001101010\\n  [12, 33],                               \u002F\u002F 000001101011\\n  [12, 40],                               \u002F\u002F 000001101100\\n  [12, 41],                               \u002F\u002F 000001101101\\n  [11, 22], [11, 22],                     \u002F\u002F 00000110111x\\n  [8, 14], [8, 14], [8, 14], [8, 14],     \u002F\u002F 00000111xxxx\\n  [8, 14], [8, 14], [8, 14], [8, 14],\\n  [8, 14], [8, 14], [8, 14], [8, 14],\\n  [8, 14], [8, 14], [8, 14], [8, 14],\\n  [7, 10], [7, 10], [7, 10], [7, 10],     \u002F\u002F 0000100xxxxx\\n  [7, 10], [7, 10], [7, 10], [7, 10],\\n  [7, 10], [7, 10], [7, 10], [7, 10],\\n  [7, 10], [7, 10], [7, 10], [7, 10],\\n  [7, 10], [7, 10], [7, 10], [7, 10],\\n  [7, 10], [7, 10], [7, 10], [7, 10],\\n  [7, 10], [7, 10], [7, 10], [7, 10],\\n  [7, 10], [7, 10], [7, 10], [7, 10],\\n  [7, 11], [7, 11], [7, 11], [7, 11],     \u002F\u002F 0000101xxxxx\\n  [7, 11], [7, 11], [7, 11], [7, 11],\\n  [7, 11], [7, 11], [7, 11], [7, 11],\\n  [7, 11], [7, 11], [7, 11], [7, 11],\\n  [7, 11], [7, 11], [7, 11], [7, 11],\\n  [7, 11], [7, 11], [7, 11], [7, 11],\\n  [7, 11], [7, 11], [7, 11], [7, 11],\\n  [7, 11], [7, 11], [7, 11], [7, 11],\\n  [9, 15], [9, 15], [9, 15], [9, 15],     \u002F\u002F 000011000xxx\\n  [9, 15], [9, 15], [9, 15], [9, 15],\\n  [12, 128],                              \u002F\u002F 000011001000\\n  [12, 192],                              \u002F\u002F 000011001001\\n  [12, 26],                               \u002F\u002F 000011001010\\n  [12, 27],                               \u002F\u002F 000011001011\\n  [12, 28],                               \u002F\u002F 000011001100\\n  [12, 29],                               \u002F\u002F 000011001101\\n  [11, 19], [11, 19],                     \u002F\u002F 00001100111x\\n  [11, 20], [11, 20],                     \u002F\u002F 00001101000x\\n  [12, 34],                               \u002F\u002F 000011010010\\n  [12, 35],                               \u002F\u002F 000011010011\\n  [12, 36],                               \u002F\u002F 000011010100\\n  [12, 37],                               \u002F\u002F 000011010101\\n  [12, 38],                               \u002F\u002F 000011010110\\n  [12, 39],                               \u002F\u002F 000011010111\\n  [11, 21], [11, 21],                     \u002F\u002F 00001101100x\\n  [12, 42],                               \u002F\u002F 000011011010\\n  [12, 43],                               \u002F\u002F 000011011011\\n  [10, 0], [10, 0], [10, 0], [10, 0],     \u002F\u002F 0000110111xx\\n  [7, 12], [7, 12], [7, 12], [7, 12],     \u002F\u002F 0000111xxxxx\\n  [7, 12], [7, 12], [7, 12], [7, 12],\\n  [7, 12], [7, 12], [7, 12], [7, 12],\\n  [7, 12], [7, 12], [7, 12], [7, 12],\\n  [7, 12], [7, 12], [7, 12], [7, 12],\\n  [7, 12], [7, 12], [7, 12], [7, 12],\\n  [7, 12], [7, 12], [7, 12], [7, 12],\\n  [7, 12], [7, 12], [7, 12], [7, 12]\\n];\\n\\n\u002F\u002F prettier-ignore\\nconst blackTable3 = [\\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1], \u002F\u002F 0000xx\\n  [6, 9],                                 \u002F\u002F 000100\\n  [6, 8],                                 \u002F\u002F 000101\\n  [5, 7], [5, 7],                         \u002F\u002F 00011x\\n  [4, 6], [4, 6], [4, 6], [4, 6],         \u002F\u002F 0010xx\\n  [4, 5], [4, 5], [4, 5], [4, 5],         \u002F\u002F 0011xx\\n  [3, 1], [3, 1], [3, 1], [3, 1],         \u002F\u002F 010xxx\\n  [3, 1], [3, 1], [3, 1], [3, 1],\\n  [3, 4], [3, 4], [3, 4], [3, 4],         \u002F\u002F 011xxx\\n  [3, 4], [3, 4], [3, 4], [3, 4],\\n  [2, 3], [2, 3], [2, 3], [2, 3],         \u002F\u002F 10xxxx\\n  [2, 3], [2, 3], [2, 3], [2, 3],\\n  [2, 3], [2, 3], [2, 3], [2, 3],\\n  [2, 3], [2, 3], [2, 3], [2, 3],\\n  [2, 2], [2, 2], [2, 2], [2, 2],         \u002F\u002F 11xxxx\\n  [2, 2], [2, 2], [2, 2], [2, 2],\\n  [2, 2], [2, 2], [2, 2], [2, 2],\\n  [2, 2], [2, 2], [2, 2], [2, 2]\\n];\\n\\n\u002F**\\n * @param {CCITTFaxDecoderSource} source - The data which should be decoded.\\n * @param {Object} [options] - Decoding options.\\n *\u002F\\nclass CCITTFaxDecoder {\\n  constructor(source, options = {}) {\\n    if (!source || typeof source.next !== \\\"function\\\") {\\n      throw new Error('CCITTFaxDecoder - invalid \\\"source\\\" parameter.');\\n    }\\n    this.source = source;\\n    this.eof = false;\\n\\n    this.encoding = options.K || 0;\\n    this.eoline = options.EndOfLine || false;\\n    this.byteAlign = options.EncodedByteAlign || false;\\n    this.columns = options.Columns || 1728;\\n    this.rows = options.Rows || 0;\\n    this.eoblock = options.EndOfBlock ?? true;\\n    this.black = options.BlackIs1 || false;\\n\\n    this.codingLine = new Uint32Array(this.columns + 1);\\n    this.refLine = new Uint32Array(this.columns + 2);\\n\\n    this.codingLine[0] = this.columns;\\n    this.codingPos = 0;\\n\\n    this.row = 0;\\n    this.nextLine2D = this.encoding \u003C 0;\\n    this.inputBits = 0;\\n    this.inputBuf = 0;\\n    this.outputBits = 0;\\n    this.rowsDone = false;\\n\\n    let code1;\\n    while ((code1 = this._lookBits(12)) === 0) {\\n      this._eatBits(1);\\n    }\\n    if (code1 === 1) {\\n      this._eatBits(12);\\n    }\\n    if (this.encoding > 0) {\\n      this.nextLine2D = !this._lookBits(1);\\n      this._eatBits(1);\\n    }\\n  }\\n\\n  readNextChar() {\\n    if (this.eof) {\\n      return -1;\\n    }\\n    const refLine = this.refLine;\\n    const codingLine = this.codingLine;\\n    const columns = this.columns;\\n\\n    let refPos, blackPixels, bits, i;\\n\\n    if (this.outputBits === 0) {\\n      if (this.rowsDone) {\\n        this.eof = true;\\n      }\\n      if (this.eof) {\\n        return -1;\\n      }\\n      this.err = false;\\n\\n      let code1, code2, code3;\\n      if (this.nextLine2D) {\\n        for (i = 0; codingLine[i] \u003C columns; ++i) {\\n          refLine[i] = codingLine[i];\\n        }\\n        refLine[i++] = columns;\\n        refLine[i] = columns;\\n        codingLine[0] = 0;\\n        this.codingPos = 0;\\n        refPos = 0;\\n        blackPixels = 0;\\n\\n        while (codingLine[this.codingPos] \u003C columns) {\\n          code1 = this._getTwoDimCode();\\n          switch (code1) {\\n            case twoDimPass:\\n              this._addPixels(refLine[refPos + 1], blackPixels);\\n              if (refLine[refPos + 1] \u003C columns) {\\n                refPos += 2;\\n              }\\n              break;\\n            case twoDimHoriz:\\n              code1 = code2 = 0;\\n              if (blackPixels) {\\n                do {\\n                  code1 += code3 = this._getBlackCode();\\n                } while (code3 >= 64);\\n                do {\\n                  code2 += code3 = this._getWhiteCode();\\n                } while (code3 >= 64);\\n              } else {\\n                do {\\n                  code1 += code3 = this._getWhiteCode();\\n                } while (code3 >= 64);\\n                do {\\n                  code2 += code3 = this._getBlackCode();\\n                } while (code3 >= 64);\\n              }\\n              this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\\n              if (codingLine[this.codingPos] \u003C columns) {\\n                this._addPixels(\\n                  codingLine[this.codingPos] + code2,\\n                  blackPixels ^ 1\\n                );\\n              }\\n              while (\\n                refLine[refPos] \u003C= codingLine[this.codingPos] &&\\n                refLine[refPos] \u003C columns\\n              ) {\\n                refPos += 2;\\n              }\\n              break;\\n            case twoDimVertR3:\\n              this._addPixels(refLine[refPos] + 3, blackPixels);\\n              blackPixels ^= 1;\\n              if (codingLine[this.codingPos] \u003C columns) {\\n                ++refPos;\\n                while (\\n                  refLine[refPos] \u003C= codingLine[this.codingPos] &&\\n                  refLine[refPos] \u003C columns\\n                ) {\\n                  refPos += 2;\\n                }\\n              }\\n              break;\\n            case twoDimVertR2:\\n              this._addPixels(refLine[refPos] + 2, blackPixels);\\n              blackPixels ^= 1;\\n              if (codingLine[this.codingPos] \u003C columns) {\\n                ++refPos;\\n                while (\\n                  refLine[refPos] \u003C= codingLine[this.codingPos] &&\\n                  refLine[refPos] \u003C columns\\n                ) {\\n                  refPos += 2;\\n                }\\n              }\\n              break;\\n            case twoDimVertR1:\\n              this._addPixels(refLine[refPos] + 1, blackPixels);\\n              blackPixels ^= 1;\\n              if (codingLine[this.codingPos] \u003C columns) {\\n                ++refPos;\\n                while (\\n                  refLine[refPos] \u003C= codingLine[this.codingPos] &&\\n                  refLine[refPos] \u003C columns\\n                ) {\\n                  refPos += 2;\\n                }\\n              }\\n              break;\\n            case twoDimVert0:\\n              this._addPixels(refLine[refPos], blackPixels);\\n              blackPixels ^= 1;\\n              if (codingLine[this.codingPos] \u003C columns) {\\n                ++refPos;\\n                while (\\n                  refLine[refPos] \u003C= codingLine[this.codingPos] &&\\n                  refLine[refPos] \u003C columns\\n                ) {\\n                  refPos += 2;\\n                }\\n              }\\n              break;\\n            case twoDimVertL3:\\n              this._addPixelsNeg(refLine[refPos] - 3, blackPixels);\\n              blackPixels ^= 1;\\n              if (codingLine[this.codingPos] \u003C columns) {\\n                if (refPos > 0) {\\n                  --refPos;\\n                } else {\\n                  ++refPos;\\n                }\\n                while (\\n                  refLine[refPos] \u003C= codingLine[this.codingPos] &&\\n                  refLine[refPos] \u003C columns\\n                ) {\\n                  refPos += 2;\\n                }\\n              }\\n              break;\\n            case twoDimVertL2:\\n              this._addPixelsNeg(refLine[refPos] - 2, blackPixels);\\n              blackPixels ^= 1;\\n              if (codingLine[this.codingPos] \u003C columns) {\\n                if (refPos > 0) {\\n                  --refPos;\\n                } else {\\n                  ++refPos;\\n                }\\n                while (\\n                  refLine[refPos] \u003C= codingLine[this.codingPos] &&\\n                  refLine[refPos] \u003C columns\\n                ) {\\n                  refPos += 2;\\n                }\\n              }\\n              break;\\n            case twoDimVertL1:\\n              this._addPixelsNeg(refLine[refPos] - 1, blackPixels);\\n              blackPixels ^= 1;\\n              if (codingLine[this.codingPos] \u003C columns) {\\n                if (refPos > 0) {\\n                  --refPos;\\n                } else {\\n                  ++refPos;\\n                }\\n                while (\\n                  refLine[refPos] \u003C= codingLine[this.codingPos] &&\\n                  refLine[refPos] \u003C columns\\n                ) {\\n                  refPos += 2;\\n                }\\n              }\\n              break;\\n            case ccittEOF:\\n              this._addPixels(columns, 0);\\n              this.eof = true;\\n              break;\\n            default:\\n              info(\\\"bad 2d code\\\");\\n              this._addPixels(columns, 0);\\n              this.err = true;\\n          }\\n        }\\n      } else {\\n        codingLine[0] = 0;\\n        this.codingPos = 0;\\n        blackPixels = 0;\\n        while (codingLine[this.codingPos] \u003C columns) {\\n          code1 = 0;\\n          if (blackPixels) {\\n            do {\\n              code1 += code3 = this._getBlackCode();\\n            } while (code3 >= 64);\\n          } else {\\n            do {\\n              code1 += code3 = this._getWhiteCode();\\n            } while (code3 >= 64);\\n          }\\n          this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\\n          blackPixels ^= 1;\\n        }\\n      }\\n\\n      let gotEOL = false;\\n\\n      if (this.byteAlign) {\\n        this.inputBits &= ~7;\\n      }\\n\\n      if (!this.eoblock && this.row === this.rows - 1) {\\n        this.rowsDone = true;\\n      } else {\\n        code1 = this._lookBits(12);\\n        if (this.eoline) {\\n          while (code1 !== ccittEOF && code1 !== 1) {\\n            this._eatBits(1);\\n            code1 = this._lookBits(12);\\n          }\\n        } else {\\n          while (code1 === 0) {\\n            this._eatBits(1);\\n            code1 = this._lookBits(12);\\n          }\\n        }\\n        if (code1 === 1) {\\n          this._eatBits(12);\\n          gotEOL = true;\\n        } else if (code1 === ccittEOF) {\\n          this.eof = true;\\n        }\\n      }\\n\\n      if (!this.eof && this.encoding > 0 && !this.rowsDone) {\\n        this.nextLine2D = !this._lookBits(1);\\n        this._eatBits(1);\\n      }\\n\\n      if (this.eoblock && gotEOL && this.byteAlign) {\\n        code1 = this._lookBits(12);\\n        if (code1 === 1) {\\n          this._eatBits(12);\\n          if (this.encoding > 0) {\\n            this._lookBits(1);\\n            this._eatBits(1);\\n          }\\n          if (this.encoding >= 0) {\\n            for (i = 0; i \u003C 4; ++i) {\\n              code1 = this._lookBits(12);\\n              if (code1 !== 1) {\\n                info(\\\"bad rtc code: \\\" + code1);\\n              }\\n              this._eatBits(12);\\n              if (this.encoding > 0) {\\n                this._lookBits(1);\\n                this._eatBits(1);\\n              }\\n            }\\n          }\\n          this.eof = true;\\n        }\\n      } else if (this.err && this.eoline) {\\n        while (true) {\\n          code1 = this._lookBits(13);\\n          if (code1 === ccittEOF) {\\n            this.eof = true;\\n            return -1;\\n          }\\n          if (code1 >> 1 === 1) {\\n            break;\\n          }\\n          this._eatBits(1);\\n        }\\n        this._eatBits(12);\\n        if (this.encoding > 0) {\\n          this._eatBits(1);\\n          this.nextLine2D = !(code1 & 1);\\n        }\\n      }\\n\\n      this.outputBits =\\n        codingLine[0] > 0\\n          ? codingLine[(this.codingPos = 0)]\\n          : codingLine[(this.codingPos = 1)];\\n      this.row++;\\n    }\\n\\n    let c;\\n    if (this.outputBits >= 8) {\\n      c = this.codingPos & 1 ? 0 : 0xff;\\n      this.outputBits -= 8;\\n      if (this.outputBits === 0 && codingLine[this.codingPos] \u003C columns) {\\n        this.codingPos++;\\n        this.outputBits =\\n          codingLine[this.codingPos] - codingLine[this.codingPos - 1];\\n      }\\n    } else {\\n      bits = 8;\\n      c = 0;\\n      do {\\n        if (typeof this.outputBits !== \\\"number\\\") {\\n          throw new FormatError(\\n            'Invalid \u002FCCITTFaxDecode data, \\\"outputBits\\\" must be a number.'\\n          );\\n        }\\n\\n        if (this.outputBits > bits) {\\n          c \u003C\u003C= bits;\\n          if (!(this.codingPos & 1)) {\\n            c |= 0xff >> (8 - bits);\\n          }\\n          this.outputBits -= bits;\\n          bits = 0;\\n        } else {\\n          c \u003C\u003C= this.outputBits;\\n          if (!(this.codingPos & 1)) {\\n            c |= 0xff >> (8 - this.outputBits);\\n          }\\n          bits -= this.outputBits;\\n          this.outputBits = 0;\\n          if (codingLine[this.codingPos] \u003C columns) {\\n            this.codingPos++;\\n            this.outputBits =\\n              codingLine[this.codingPos] - codingLine[this.codingPos - 1];\\n          } else if (bits > 0) {\\n            c \u003C\u003C= bits;\\n            bits = 0;\\n          }\\n        }\\n      } while (bits);\\n    }\\n    if (this.black) {\\n      c ^= 0xff;\\n    }\\n    return c;\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _addPixels(a1, blackPixels) {\\n    const codingLine = this.codingLine;\\n    let codingPos = this.codingPos;\\n\\n    if (a1 > codingLine[codingPos]) {\\n      if (a1 > this.columns) {\\n        info(\\\"row is wrong length\\\");\\n        this.err = true;\\n        a1 = this.columns;\\n      }\\n      if ((codingPos & 1) ^ blackPixels) {\\n        ++codingPos;\\n      }\\n\\n      codingLine[codingPos] = a1;\\n    }\\n    this.codingPos = codingPos;\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _addPixelsNeg(a1, blackPixels) {\\n    const codingLine = this.codingLine;\\n    let codingPos = this.codingPos;\\n\\n    if (a1 > codingLine[codingPos]) {\\n      if (a1 > this.columns) {\\n        info(\\\"row is wrong length\\\");\\n        this.err = true;\\n        a1 = this.columns;\\n      }\\n      if ((codingPos & 1) ^ blackPixels) {\\n        ++codingPos;\\n      }\\n\\n      codingLine[codingPos] = a1;\\n    } else if (a1 \u003C codingLine[codingPos]) {\\n      if (a1 \u003C 0) {\\n        info(\\\"invalid code\\\");\\n        this.err = true;\\n        a1 = 0;\\n      }\\n      while (codingPos > 0 && a1 \u003C codingLine[codingPos - 1]) {\\n        --codingPos;\\n      }\\n      codingLine[codingPos] = a1;\\n    }\\n\\n    this.codingPos = codingPos;\\n  }\\n\\n  \u002F**\\n   * This function returns the code found from the table.\\n   * The start and end parameters set the boundaries for searching the table.\\n   * The limit parameter is optional. Function returns an array with three\\n   * values. The first array element indicates whether a valid code is being\\n   * returned. The second array element is the actual code. The third array\\n   * element indicates whether EOF was reached.\\n   * @private\\n   *\u002F\\n  _findTableCode(start, end, table, limit) {\\n    const limitValue = limit || 0;\\n    for (let i = start; i \u003C= end; ++i) {\\n      let code = this._lookBits(i);\\n      if (code === ccittEOF) {\\n        return [true, 1, false];\\n      }\\n      if (i \u003C end) {\\n        code \u003C\u003C= end - i;\\n      }\\n      if (!limitValue || code >= limitValue) {\\n        const p = table[code - limitValue];\\n        if (p[0] === i) {\\n          this._eatBits(i);\\n          return [true, p[1], true];\\n        }\\n      }\\n    }\\n    return [false, 0, false];\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _getTwoDimCode() {\\n    let code = 0;\\n    let p;\\n    if (this.eoblock) {\\n      code = this._lookBits(7);\\n      p = twoDimTable[code];\\n      if (p?.[0] > 0) {\\n        this._eatBits(p[0]);\\n        return p[1];\\n      }\\n    } else {\\n      const result = this._findTableCode(1, 7, twoDimTable);\\n      if (result[0] && result[2]) {\\n        return result[1];\\n      }\\n    }\\n    info(\\\"Bad two dim code\\\");\\n    return ccittEOF;\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _getWhiteCode() {\\n    let code = 0;\\n    let p;\\n    if (this.eoblock) {\\n      code = this._lookBits(12);\\n      if (code === ccittEOF) {\\n        return 1;\\n      }\\n\\n      p = code >> 5 === 0 ? whiteTable1[code] : whiteTable2[code >> 3];\\n\\n      if (p[0] > 0) {\\n        this._eatBits(p[0]);\\n        return p[1];\\n      }\\n    } else {\\n      let result = this._findTableCode(1, 9, whiteTable2);\\n      if (result[0]) {\\n        return result[1];\\n      }\\n\\n      result = this._findTableCode(11, 12, whiteTable1);\\n      if (result[0]) {\\n        return result[1];\\n      }\\n    }\\n    info(\\\"bad white code\\\");\\n    this._eatBits(1);\\n    return 1;\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _getBlackCode() {\\n    let code, p;\\n    if (this.eoblock) {\\n      code = this._lookBits(13);\\n      if (code === ccittEOF) {\\n        return 1;\\n      }\\n      if (code >> 7 === 0) {\\n        p = blackTable1[code];\\n      } else if (code >> 9 === 0 && code >> 7 !== 0) {\\n        p = blackTable2[(code >> 1) - 64];\\n      } else {\\n        p = blackTable3[code >> 7];\\n      }\\n\\n      if (p[0] > 0) {\\n        this._eatBits(p[0]);\\n        return p[1];\\n      }\\n    } else {\\n      let result = this._findTableCode(2, 6, blackTable3);\\n      if (result[0]) {\\n        return result[1];\\n      }\\n\\n      result = this._findTableCode(7, 12, blackTable2, 64);\\n      if (result[0]) {\\n        return result[1];\\n      }\\n\\n      result = this._findTableCode(10, 13, blackTable1);\\n      if (result[0]) {\\n        return result[1];\\n      }\\n    }\\n    info(\\\"bad black code\\\");\\n    this._eatBits(1);\\n    return 1;\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _lookBits(n) {\\n    let c;\\n    while (this.inputBits \u003C n) {\\n      if ((c = this.source.next()) === -1) {\\n        if (this.inputBits === 0) {\\n          return ccittEOF;\\n        }\\n        return (this.inputBuf \u003C\u003C (n - this.inputBits)) & (0xffff >> (16 - n));\\n      }\\n      this.inputBuf = (this.inputBuf \u003C\u003C 8) | c;\\n      this.inputBits += 8;\\n    }\\n    return (this.inputBuf >> (this.inputBits - n)) & (0xffff >> (16 - n));\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _eatBits(n) {\\n    if ((this.inputBits -= n) \u003C 0) {\\n      this.inputBits = 0;\\n    }\\n  }\\n}\\n\\nexport { CCITTFaxDecoder };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { CCITTFaxDecoder } from \\\".\u002Fccitt.js\\\";\\nimport { DecodeStream } from \\\".\u002Fdecode_stream.js\\\";\\nimport { Dict } from \\\".\u002Fprimitives.js\\\";\\n\\nclass CCITTFaxStream extends DecodeStream {\\n  constructor(str, maybeLength, params) {\\n    super(maybeLength);\\n\\n    this.str = str;\\n    this.dict = str.dict;\\n\\n    if (!(params instanceof Dict)) {\\n      params = Dict.empty;\\n    }\\n\\n    const source = {\\n      next() {\\n        return str.getByte();\\n      },\\n    };\\n    this.ccittFaxDecoder = new CCITTFaxDecoder(source, {\\n      K: params.get(\\\"K\\\"),\\n      EndOfLine: params.get(\\\"EndOfLine\\\"),\\n      EncodedByteAlign: params.get(\\\"EncodedByteAlign\\\"),\\n      Columns: params.get(\\\"Columns\\\"),\\n      Rows: params.get(\\\"Rows\\\"),\\n      EndOfBlock: params.get(\\\"EndOfBlock\\\"),\\n      BlackIs1: params.get(\\\"BlackIs1\\\"),\\n    });\\n  }\\n\\n  readBlock() {\\n    while (!this.eof) {\\n      const c = this.ccittFaxDecoder.readNextChar();\\n      if (c === -1) {\\n        this.eof = true;\\n        return;\\n      }\\n      this.ensureBuffer(this.bufferLength + 1);\\n      this.buffer[this.bufferLength++] = c;\\n    }\\n  }\\n}\\n\\nexport { CCITTFaxStream };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\u002F* Copyright 1996-2003 Glyph & Cog, LLC\\n *\\n * The flate stream implementation contained in this file is a JavaScript port\\n * of XPDF's implementation, made available under the Apache 2.0 open source\\n * license.\\n *\u002F\\n\\nimport { FormatError, info } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { DecodeStream } from \\\".\u002Fdecode_stream.js\\\";\\n\\nconst codeLenCodeMap = new Int32Array([\\n  16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15,\\n]);\\n\\nconst lengthDecode = new Int32Array([\\n  0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a,\\n  0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f,\\n  0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073,\\n  0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102,\\n]);\\n\\nconst distDecode = new Int32Array([\\n  0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d,\\n  0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1,\\n  0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01,\\n  0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001,\\n]);\\n\\nconst fixedLitCodeTab = [\\n  new Int32Array([\\n    0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0,\\n    0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0,\\n    0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0,\\n    0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0,\\n    0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8,\\n    0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8,\\n    0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8,\\n    0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8,\\n    0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4,\\n    0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4,\\n    0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4,\\n    0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4,\\n    0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc,\\n    0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec,\\n    0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc,\\n    0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc,\\n    0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2,\\n    0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2,\\n    0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2,\\n    0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2,\\n    0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca,\\n    0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea,\\n    0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da,\\n    0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa,\\n    0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6,\\n    0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6,\\n    0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6,\\n    0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6,\\n    0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce,\\n    0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee,\\n    0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de,\\n    0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe,\\n    0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1,\\n    0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1,\\n    0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1,\\n    0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1,\\n    0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9,\\n    0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9,\\n    0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9,\\n    0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9,\\n    0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5,\\n    0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5,\\n    0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5,\\n    0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5,\\n    0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd,\\n    0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed,\\n    0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd,\\n    0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd,\\n    0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3,\\n    0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3,\\n    0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3,\\n    0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3,\\n    0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb,\\n    0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb,\\n    0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db,\\n    0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb,\\n    0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7,\\n    0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7,\\n    0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7,\\n    0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7,\\n    0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf,\\n    0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef,\\n    0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df,\\n    0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff,\\n  ]),\\n  9,\\n];\\n\\nconst fixedDistCodeTab = [\\n  new Int32Array([\\n    0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c,\\n    0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000,\\n    0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d,\\n    0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000,\\n  ]),\\n  5,\\n];\\n\\nclass FlateStream extends DecodeStream {\\n  constructor(str, maybeLength) {\\n    super(maybeLength);\\n\\n    this.str = str;\\n    this.dict = str.dict;\\n\\n    const cmf = str.getByte();\\n    const flg = str.getByte();\\n    if (cmf === -1 || flg === -1) {\\n      throw new FormatError(`Invalid header in flate stream: ${cmf}, ${flg}`);\\n    }\\n    if ((cmf & 0x0f) !== 0x08) {\\n      throw new FormatError(\\n        `Unknown compression method in flate stream: ${cmf}, ${flg}`\\n      );\\n    }\\n    if (((cmf \u003C\u003C 8) + flg) % 31 !== 0) {\\n      throw new FormatError(`Bad FCHECK in flate stream: ${cmf}, ${flg}`);\\n    }\\n    if (flg & 0x20) {\\n      throw new FormatError(`FDICT bit set in flate stream: ${cmf}, ${flg}`);\\n    }\\n\\n    this.codeSize = 0;\\n    this.codeBuf = 0;\\n  }\\n\\n  getBits(bits) {\\n    const str = this.str;\\n    let codeSize = this.codeSize;\\n    let codeBuf = this.codeBuf;\\n\\n    let b;\\n    while (codeSize \u003C bits) {\\n      if ((b = str.getByte()) === -1) {\\n        throw new FormatError(\\\"Bad encoding in flate stream\\\");\\n      }\\n      codeBuf |= b \u003C\u003C codeSize;\\n      codeSize += 8;\\n    }\\n    b = codeBuf & ((1 \u003C\u003C bits) - 1);\\n    this.codeBuf = codeBuf >> bits;\\n    this.codeSize = codeSize -= bits;\\n\\n    return b;\\n  }\\n\\n  getCode(table) {\\n    const str = this.str;\\n    const codes = table[0];\\n    const maxLen = table[1];\\n    let codeSize = this.codeSize;\\n    let codeBuf = this.codeBuf;\\n\\n    let b;\\n    while (codeSize \u003C maxLen) {\\n      if ((b = str.getByte()) === -1) {\\n        \u002F\u002F premature end of stream. code might however still be valid.\\n        \u002F\u002F codeSize \u003C codeLen check below guards against incomplete codeVal.\\n        break;\\n      }\\n      codeBuf |= b \u003C\u003C codeSize;\\n      codeSize += 8;\\n    }\\n    const code = codes[codeBuf & ((1 \u003C\u003C maxLen) - 1)];\\n    const codeLen = code >> 16;\\n    const codeVal = code & 0xffff;\\n    if (codeLen \u003C 1 || codeSize \u003C codeLen) {\\n      throw new FormatError(\\\"Bad encoding in flate stream\\\");\\n    }\\n    this.codeBuf = codeBuf >> codeLen;\\n    this.codeSize = codeSize - codeLen;\\n    return codeVal;\\n  }\\n\\n  generateHuffmanTable(lengths) {\\n    const n = lengths.length;\\n\\n    \u002F\u002F find max code length\\n    let maxLen = 0;\\n    let i;\\n    for (i = 0; i \u003C n; ++i) {\\n      if (lengths[i] > maxLen) {\\n        maxLen = lengths[i];\\n      }\\n    }\\n\\n    \u002F\u002F build the table\\n    const size = 1 \u003C\u003C maxLen;\\n    const codes = new Int32Array(size);\\n    for (\\n      let len = 1, code = 0, skip = 2;\\n      len \u003C= maxLen;\\n      ++len, code \u003C\u003C= 1, skip \u003C\u003C= 1\\n    ) {\\n      for (let val = 0; val \u003C n; ++val) {\\n        if (lengths[val] === len) {\\n          \u002F\u002F bit-reverse the code\\n          let code2 = 0;\\n          let t = code;\\n          for (i = 0; i \u003C len; ++i) {\\n            code2 = (code2 \u003C\u003C 1) | (t & 1);\\n            t >>= 1;\\n          }\\n\\n          \u002F\u002F fill the table entries\\n          for (i = code2; i \u003C size; i += skip) {\\n            codes[i] = (len \u003C\u003C 16) | val;\\n          }\\n          ++code;\\n        }\\n      }\\n    }\\n\\n    return [codes, maxLen];\\n  }\\n\\n  #endsStreamOnError(err) {\\n    info(err);\\n    this.eof = true;\\n  }\\n\\n  readBlock() {\\n    let buffer, len;\\n    const str = this.str;\\n    \u002F\u002F read block header\\n    let hdr = this.getBits(3);\\n    if (hdr & 1) {\\n      this.eof = true;\\n    }\\n    hdr >>= 1;\\n\\n    if (hdr === 0) {\\n      \u002F\u002F uncompressed block\\n      let b;\\n\\n      if ((b = str.getByte()) === -1) {\\n        this.#endsStreamOnError(\\\"Bad block header in flate stream\\\");\\n        return;\\n      }\\n      let blockLen = b;\\n      if ((b = str.getByte()) === -1) {\\n        this.#endsStreamOnError(\\\"Bad block header in flate stream\\\");\\n        return;\\n      }\\n      blockLen |= b \u003C\u003C 8;\\n      if ((b = str.getByte()) === -1) {\\n        this.#endsStreamOnError(\\\"Bad block header in flate stream\\\");\\n        return;\\n      }\\n      let check = b;\\n      if ((b = str.getByte()) === -1) {\\n        this.#endsStreamOnError(\\\"Bad block header in flate stream\\\");\\n        return;\\n      }\\n      check |= b \u003C\u003C 8;\\n      if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) {\\n        \u002F\u002F Ignoring error for bad \\\"empty\\\" block (see issue 1277)\\n        throw new FormatError(\\\"Bad uncompressed block length in flate stream\\\");\\n      }\\n\\n      this.codeBuf = 0;\\n      this.codeSize = 0;\\n\\n      const bufferLength = this.bufferLength,\\n        end = bufferLength + blockLen;\\n      buffer = this.ensureBuffer(end);\\n      this.bufferLength = end;\\n\\n      if (blockLen === 0) {\\n        if (str.peekByte() === -1) {\\n          this.eof = true;\\n        }\\n      } else {\\n        const block = str.getBytes(blockLen);\\n        buffer.set(block, bufferLength);\\n        if (block.length \u003C blockLen) {\\n          this.eof = true;\\n        }\\n      }\\n      return;\\n    }\\n\\n    let litCodeTable;\\n    let distCodeTable;\\n    if (hdr === 1) {\\n      \u002F\u002F compressed block, fixed codes\\n      litCodeTable = fixedLitCodeTab;\\n      distCodeTable = fixedDistCodeTab;\\n    } else if (hdr === 2) {\\n      \u002F\u002F compressed block, dynamic codes\\n      const numLitCodes = this.getBits(5) + 257;\\n      const numDistCodes = this.getBits(5) + 1;\\n      const numCodeLenCodes = this.getBits(4) + 4;\\n\\n      \u002F\u002F build the code lengths code table\\n      const codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);\\n\\n      let i;\\n      for (i = 0; i \u003C numCodeLenCodes; ++i) {\\n        codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);\\n      }\\n      const codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);\\n\\n      \u002F\u002F build the literal and distance code tables\\n      len = 0;\\n      i = 0;\\n      const codes = numLitCodes + numDistCodes;\\n      const codeLengths = new Uint8Array(codes);\\n      let bitsLength, bitsOffset, what;\\n      while (i \u003C codes) {\\n        const code = this.getCode(codeLenCodeTab);\\n        if (code === 16) {\\n          bitsLength = 2;\\n          bitsOffset = 3;\\n          what = len;\\n        } else if (code === 17) {\\n          bitsLength = 3;\\n          bitsOffset = 3;\\n          what = len = 0;\\n        } else if (code === 18) {\\n          bitsLength = 7;\\n          bitsOffset = 11;\\n          what = len = 0;\\n        } else {\\n          codeLengths[i++] = len = code;\\n          continue;\\n        }\\n\\n        let repeatLength = this.getBits(bitsLength) + bitsOffset;\\n        while (repeatLength-- > 0) {\\n          codeLengths[i++] = what;\\n        }\\n      }\\n\\n      litCodeTable = this.generateHuffmanTable(\\n        codeLengths.subarray(0, numLitCodes)\\n      );\\n      distCodeTable = this.generateHuffmanTable(\\n        codeLengths.subarray(numLitCodes, codes)\\n      );\\n    } else {\\n      throw new FormatError(\\\"Unknown block type in flate stream\\\");\\n    }\\n\\n    buffer = this.buffer;\\n    let limit = buffer ? buffer.length : 0;\\n    let pos = this.bufferLength;\\n    while (true) {\\n      let code1 = this.getCode(litCodeTable);\\n      if (code1 \u003C 256) {\\n        if (pos + 1 >= limit) {\\n          buffer = this.ensureBuffer(pos + 1);\\n          limit = buffer.length;\\n        }\\n        buffer[pos++] = code1;\\n        continue;\\n      }\\n      if (code1 === 256) {\\n        this.bufferLength = pos;\\n        return;\\n      }\\n      code1 -= 257;\\n      code1 = lengthDecode[code1];\\n      let code2 = code1 >> 16;\\n      if (code2 > 0) {\\n        code2 = this.getBits(code2);\\n      }\\n      len = (code1 & 0xffff) + code2;\\n      code1 = this.getCode(distCodeTable);\\n      code1 = distDecode[code1];\\n      code2 = code1 >> 16;\\n      if (code2 > 0) {\\n        code2 = this.getBits(code2);\\n      }\\n      const dist = (code1 & 0xffff) + code2;\\n      if (pos + len >= limit) {\\n        buffer = this.ensureBuffer(pos + len);\\n        limit = buffer.length;\\n      }\\n      for (let k = 0; k \u003C len; ++k, ++pos) {\\n        buffer[pos] = buffer[pos - dist];\\n      }\\n    }\\n  }\\n}\\n\\nexport { FlateStream };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F Table C-2\\nconst QeTable = [\\n  { qe: 0x5601, nmps: 1, nlps: 1, switchFlag: 1 },\\n  { qe: 0x3401, nmps: 2, nlps: 6, switchFlag: 0 },\\n  { qe: 0x1801, nmps: 3, nlps: 9, switchFlag: 0 },\\n  { qe: 0x0ac1, nmps: 4, nlps: 12, switchFlag: 0 },\\n  { qe: 0x0521, nmps: 5, nlps: 29, switchFlag: 0 },\\n  { qe: 0x0221, nmps: 38, nlps: 33, switchFlag: 0 },\\n  { qe: 0x5601, nmps: 7, nlps: 6, switchFlag: 1 },\\n  { qe: 0x5401, nmps: 8, nlps: 14, switchFlag: 0 },\\n  { qe: 0x4801, nmps: 9, nlps: 14, switchFlag: 0 },\\n  { qe: 0x3801, nmps: 10, nlps: 14, switchFlag: 0 },\\n  { qe: 0x3001, nmps: 11, nlps: 17, switchFlag: 0 },\\n  { qe: 0x2401, nmps: 12, nlps: 18, switchFlag: 0 },\\n  { qe: 0x1c01, nmps: 13, nlps: 20, switchFlag: 0 },\\n  { qe: 0x1601, nmps: 29, nlps: 21, switchFlag: 0 },\\n  { qe: 0x5601, nmps: 15, nlps: 14, switchFlag: 1 },\\n  { qe: 0x5401, nmps: 16, nlps: 14, switchFlag: 0 },\\n  { qe: 0x5101, nmps: 17, nlps: 15, switchFlag: 0 },\\n  { qe: 0x4801, nmps: 18, nlps: 16, switchFlag: 0 },\\n  { qe: 0x3801, nmps: 19, nlps: 17, switchFlag: 0 },\\n  { qe: 0x3401, nmps: 20, nlps: 18, switchFlag: 0 },\\n  { qe: 0x3001, nmps: 21, nlps: 19, switchFlag: 0 },\\n  { qe: 0x2801, nmps: 22, nlps: 19, switchFlag: 0 },\\n  { qe: 0x2401, nmps: 23, nlps: 20, switchFlag: 0 },\\n  { qe: 0x2201, nmps: 24, nlps: 21, switchFlag: 0 },\\n  { qe: 0x1c01, nmps: 25, nlps: 22, switchFlag: 0 },\\n  { qe: 0x1801, nmps: 26, nlps: 23, switchFlag: 0 },\\n  { qe: 0x1601, nmps: 27, nlps: 24, switchFlag: 0 },\\n  { qe: 0x1401, nmps: 28, nlps: 25, switchFlag: 0 },\\n  { qe: 0x1201, nmps: 29, nlps: 26, switchFlag: 0 },\\n  { qe: 0x1101, nmps: 30, nlps: 27, switchFlag: 0 },\\n  { qe: 0x0ac1, nmps: 31, nlps: 28, switchFlag: 0 },\\n  { qe: 0x09c1, nmps: 32, nlps: 29, switchFlag: 0 },\\n  { qe: 0x08a1, nmps: 33, nlps: 30, switchFlag: 0 },\\n  { qe: 0x0521, nmps: 34, nlps: 31, switchFlag: 0 },\\n  { qe: 0x0441, nmps: 35, nlps: 32, switchFlag: 0 },\\n  { qe: 0x02a1, nmps: 36, nlps: 33, switchFlag: 0 },\\n  { qe: 0x0221, nmps: 37, nlps: 34, switchFlag: 0 },\\n  { qe: 0x0141, nmps: 38, nlps: 35, switchFlag: 0 },\\n  { qe: 0x0111, nmps: 39, nlps: 36, switchFlag: 0 },\\n  { qe: 0x0085, nmps: 40, nlps: 37, switchFlag: 0 },\\n  { qe: 0x0049, nmps: 41, nlps: 38, switchFlag: 0 },\\n  { qe: 0x0025, nmps: 42, nlps: 39, switchFlag: 0 },\\n  { qe: 0x0015, nmps: 43, nlps: 40, switchFlag: 0 },\\n  { qe: 0x0009, nmps: 44, nlps: 41, switchFlag: 0 },\\n  { qe: 0x0005, nmps: 45, nlps: 42, switchFlag: 0 },\\n  { qe: 0x0001, nmps: 45, nlps: 43, switchFlag: 0 },\\n  { qe: 0x5601, nmps: 46, nlps: 46, switchFlag: 0 },\\n];\\n\\n\u002F**\\n * This class implements the QM Coder decoding as defined in\\n *   JPEG 2000 Part I Final Committee Draft Version 1.0\\n *   Annex C.3 Arithmetic decoding procedure\\n * available at http:\u002F\u002Fwww.jpeg.org\u002Fpublic\u002Ffcd15444-1.pdf\\n *\\n * The arithmetic decoder is used in conjunction with context models to decode\\n * JPEG2000 and JBIG2 streams.\\n *\u002F\\nclass ArithmeticDecoder {\\n  \u002F\u002F C.3.5 Initialisation of the decoder (INITDEC)\\n  constructor(data, start, end) {\\n    this.data = data;\\n    this.bp = start;\\n    this.dataEnd = end;\\n\\n    this.chigh = data[start];\\n    this.clow = 0;\\n\\n    this.byteIn();\\n\\n    this.chigh = ((this.chigh \u003C\u003C 7) & 0xffff) | ((this.clow >> 9) & 0x7f);\\n    this.clow = (this.clow \u003C\u003C 7) & 0xffff;\\n    this.ct -= 7;\\n    this.a = 0x8000;\\n  }\\n\\n  \u002F\u002F C.3.4 Compressed data input (BYTEIN)\\n  byteIn() {\\n    const data = this.data;\\n    let bp = this.bp;\\n\\n    if (data[bp] === 0xff) {\\n      if (data[bp + 1] > 0x8f) {\\n        this.clow += 0xff00;\\n        this.ct = 8;\\n      } else {\\n        bp++;\\n        this.clow += data[bp] \u003C\u003C 9;\\n        this.ct = 7;\\n        this.bp = bp;\\n      }\\n    } else {\\n      bp++;\\n      this.clow += bp \u003C this.dataEnd ? data[bp] \u003C\u003C 8 : 0xff00;\\n      this.ct = 8;\\n      this.bp = bp;\\n    }\\n    if (this.clow > 0xffff) {\\n      this.chigh += this.clow >> 16;\\n      this.clow &= 0xffff;\\n    }\\n  }\\n\\n  \u002F\u002F C.3.2 Decoding a decision (DECODE)\\n  readBit(contexts, pos) {\\n    \u002F\u002F Contexts are packed into 1 byte:\\n    \u002F\u002F highest 7 bits carry cx.index, lowest bit carries cx.mps\\n    let cx_index = contexts[pos] >> 1,\\n      cx_mps = contexts[pos] & 1;\\n    const qeTableIcx = QeTable[cx_index];\\n    const qeIcx = qeTableIcx.qe;\\n    let d;\\n    let a = this.a - qeIcx;\\n\\n    if (this.chigh \u003C qeIcx) {\\n      \u002F\u002F exchangeLps\\n      if (a \u003C qeIcx) {\\n        a = qeIcx;\\n        d = cx_mps;\\n        cx_index = qeTableIcx.nmps;\\n      } else {\\n        a = qeIcx;\\n        d = 1 ^ cx_mps;\\n        if (qeTableIcx.switchFlag === 1) {\\n          cx_mps = d;\\n        }\\n        cx_index = qeTableIcx.nlps;\\n      }\\n    } else {\\n      this.chigh -= qeIcx;\\n      if ((a & 0x8000) !== 0) {\\n        this.a = a;\\n        return cx_mps;\\n      }\\n      \u002F\u002F exchangeMps\\n      if (a \u003C qeIcx) {\\n        d = 1 ^ cx_mps;\\n        if (qeTableIcx.switchFlag === 1) {\\n          cx_mps = d;\\n        }\\n        cx_index = qeTableIcx.nlps;\\n      } else {\\n        d = cx_mps;\\n        cx_index = qeTableIcx.nmps;\\n      }\\n    }\\n    \u002F\u002F C.3.3 renormD;\\n    do {\\n      if (this.ct === 0) {\\n        this.byteIn();\\n      }\\n\\n      a \u003C\u003C= 1;\\n      this.chigh = ((this.chigh \u003C\u003C 1) & 0xffff) | ((this.clow >> 15) & 1);\\n      this.clow = (this.clow \u003C\u003C 1) & 0xffff;\\n      this.ct--;\\n    } while ((a & 0x8000) === 0);\\n    this.a = a;\\n\\n    contexts[pos] = (cx_index \u003C\u003C 1) | cx_mps;\\n    return d;\\n  }\\n}\\n\\nexport { ArithmeticDecoder };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { BaseException, shadow } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { log2, readInt8, readUint16, readUint32 } from \\\".\u002Fcore_utils.js\\\";\\nimport { ArithmeticDecoder } from \\\".\u002Farithmetic_decoder.js\\\";\\nimport { CCITTFaxDecoder } from \\\".\u002Fccitt.js\\\";\\n\\nclass Jbig2Error extends BaseException {\\n  constructor(msg) {\\n    super(msg, \\\"Jbig2Error\\\");\\n  }\\n}\\n\\n\u002F\u002F Utility data structures\\nclass ContextCache {\\n  getContexts(id) {\\n    if (id in this) {\\n      return this[id];\\n    }\\n    return (this[id] = new Int8Array(1 \u003C\u003C 16));\\n  }\\n}\\n\\nclass DecodingContext {\\n  constructor(data, start, end) {\\n    this.data = data;\\n    this.start = start;\\n    this.end = end;\\n  }\\n\\n  get decoder() {\\n    const decoder = new ArithmeticDecoder(this.data, this.start, this.end);\\n    return shadow(this, \\\"decoder\\\", decoder);\\n  }\\n\\n  get contextCache() {\\n    const cache = new ContextCache();\\n    return shadow(this, \\\"contextCache\\\", cache);\\n  }\\n}\\n\\nconst MAX_INT_32 = 2 ** 31 - 1;\\nconst MIN_INT_32 = -(2 ** 31);\\n\\n\u002F\u002F Annex A. Arithmetic Integer Decoding Procedure\\n\u002F\u002F A.2 Procedure for decoding values\\nfunction decodeInteger(contextCache, procedure, decoder) {\\n  const contexts = contextCache.getContexts(procedure);\\n  let prev = 1;\\n\\n  function readBits(length) {\\n    let v = 0;\\n    for (let i = 0; i \u003C length; i++) {\\n      const bit = decoder.readBit(contexts, prev);\\n      prev = prev \u003C 256 ? (prev \u003C\u003C 1) | bit : (((prev \u003C\u003C 1) | bit) & 511) | 256;\\n      v = (v \u003C\u003C 1) | bit;\\n    }\\n    return v >>> 0;\\n  }\\n\\n  const sign = readBits(1);\\n  \u002F\u002F prettier-ignore\\n  \u002F* eslint-disable no-nested-ternary *\u002F\\n  const value = readBits(1) ?\\n                  (readBits(1) ?\\n                    (readBits(1) ?\\n                      (readBits(1) ?\\n                        (readBits(1) ?\\n                          (readBits(32) + 4436) :\\n                        readBits(12) + 340) :\\n                      readBits(8) + 84) :\\n                    readBits(6) + 20) :\\n                  readBits(4) + 4) :\\n                readBits(2);\\n  \u002F* eslint-enable no-nested-ternary *\u002F\\n  let signedValue;\\n  if (sign === 0) {\\n    signedValue = value;\\n  } else if (value > 0) {\\n    signedValue = -value;\\n  }\\n  \u002F\u002F Ensure that the integer value doesn't underflow or overflow.\\n  if (signedValue >= MIN_INT_32 && signedValue \u003C= MAX_INT_32) {\\n    return signedValue;\\n  }\\n  return null;\\n}\\n\\n\u002F\u002F A.3 The IAID decoding procedure\\nfunction decodeIAID(contextCache, decoder, codeLength) {\\n  const contexts = contextCache.getContexts(\\\"IAID\\\");\\n\\n  let prev = 1;\\n  for (let i = 0; i \u003C codeLength; i++) {\\n    const bit = decoder.readBit(contexts, prev);\\n    prev = (prev \u003C\u003C 1) | bit;\\n  }\\n  if (codeLength \u003C 31) {\\n    return prev & ((1 \u003C\u003C codeLength) - 1);\\n  }\\n  return prev & 0x7fffffff;\\n}\\n\\n\u002F\u002F 7.3 Segment types\\nconst SegmentTypes = [\\n  \\\"SymbolDictionary\\\",\\n  null,\\n  null,\\n  null,\\n  \\\"IntermediateTextRegion\\\",\\n  null,\\n  \\\"ImmediateTextRegion\\\",\\n  \\\"ImmediateLosslessTextRegion\\\",\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  \\\"PatternDictionary\\\",\\n  null,\\n  null,\\n  null,\\n  \\\"IntermediateHalftoneRegion\\\",\\n  null,\\n  \\\"ImmediateHalftoneRegion\\\",\\n  \\\"ImmediateLosslessHalftoneRegion\\\",\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  \\\"IntermediateGenericRegion\\\",\\n  null,\\n  \\\"ImmediateGenericRegion\\\",\\n  \\\"ImmediateLosslessGenericRegion\\\",\\n  \\\"IntermediateGenericRefinementRegion\\\",\\n  null,\\n  \\\"ImmediateGenericRefinementRegion\\\",\\n  \\\"ImmediateLosslessGenericRefinementRegion\\\",\\n  null,\\n  null,\\n  null,\\n  null,\\n  \\\"PageInformation\\\",\\n  \\\"EndOfPage\\\",\\n  \\\"EndOfStripe\\\",\\n  \\\"EndOfFile\\\",\\n  \\\"Profiles\\\",\\n  \\\"Tables\\\",\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  \\\"Extension\\\",\\n];\\n\\nconst CodingTemplates = [\\n  [\\n    { x: -1, y: -2 },\\n    { x: 0, y: -2 },\\n    { x: 1, y: -2 },\\n    { x: -2, y: -1 },\\n    { x: -1, y: -1 },\\n    { x: 0, y: -1 },\\n    { x: 1, y: -1 },\\n    { x: 2, y: -1 },\\n    { x: -4, y: 0 },\\n    { x: -3, y: 0 },\\n    { x: -2, y: 0 },\\n    { x: -1, y: 0 },\\n  ],\\n  [\\n    { x: -1, y: -2 },\\n    { x: 0, y: -2 },\\n    { x: 1, y: -2 },\\n    { x: 2, y: -2 },\\n    { x: -2, y: -1 },\\n    { x: -1, y: -1 },\\n    { x: 0, y: -1 },\\n    { x: 1, y: -1 },\\n    { x: 2, y: -1 },\\n    { x: -3, y: 0 },\\n    { x: -2, y: 0 },\\n    { x: -1, y: 0 },\\n  ],\\n  [\\n    { x: -1, y: -2 },\\n    { x: 0, y: -2 },\\n    { x: 1, y: -2 },\\n    { x: -2, y: -1 },\\n    { x: -1, y: -1 },\\n    { x: 0, y: -1 },\\n    { x: 1, y: -1 },\\n    { x: -2, y: 0 },\\n    { x: -1, y: 0 },\\n  ],\\n  [\\n    { x: -3, y: -1 },\\n    { x: -2, y: -1 },\\n    { x: -1, y: -1 },\\n    { x: 0, y: -1 },\\n    { x: 1, y: -1 },\\n    { x: -4, y: 0 },\\n    { x: -3, y: 0 },\\n    { x: -2, y: 0 },\\n    { x: -1, y: 0 },\\n  ],\\n];\\n\\nconst RefinementTemplates = [\\n  {\\n    coding: [\\n      { x: 0, y: -1 },\\n      { x: 1, y: -1 },\\n      { x: -1, y: 0 },\\n    ],\\n    reference: [\\n      { x: 0, y: -1 },\\n      { x: 1, y: -1 },\\n      { x: -1, y: 0 },\\n      { x: 0, y: 0 },\\n      { x: 1, y: 0 },\\n      { x: -1, y: 1 },\\n      { x: 0, y: 1 },\\n      { x: 1, y: 1 },\\n    ],\\n  },\\n  {\\n    coding: [\\n      { x: -1, y: -1 },\\n      { x: 0, y: -1 },\\n      { x: 1, y: -1 },\\n      { x: -1, y: 0 },\\n    ],\\n    reference: [\\n      { x: 0, y: -1 },\\n      { x: -1, y: 0 },\\n      { x: 0, y: 0 },\\n      { x: 1, y: 0 },\\n      { x: 0, y: 1 },\\n      { x: 1, y: 1 },\\n    ],\\n  },\\n];\\n\\n\u002F\u002F See 6.2.5.7 Decoding the bitmap.\\nconst ReusedContexts = [\\n  0x9b25, \u002F\u002F 10011 0110010 0101\\n  0x0795, \u002F\u002F 0011 110010 101\\n  0x00e5, \u002F\u002F 001 11001 01\\n  0x0195, \u002F\u002F 011001 0101\\n];\\n\\nconst RefinementReusedContexts = [\\n  0x0020, \u002F\u002F '000' + '0' (coding) + '00010000' + '0' (reference)\\n  0x0008, \u002F\u002F '0000' + '001000'\\n];\\n\\nfunction decodeBitmapTemplate0(width, height, decodingContext) {\\n  const decoder = decodingContext.decoder;\\n  const contexts = decodingContext.contextCache.getContexts(\\\"GB\\\");\\n  const bitmap = [];\\n  let contextLabel, i, j, pixel, row, row1, row2;\\n\\n  \u002F\u002F ...ooooo....\\n  \u002F\u002F ..ooooooo... Context template for current pixel (X)\\n  \u002F\u002F .ooooX...... (concatenate values of 'o'-pixels to get contextLabel)\\n  const OLD_PIXEL_MASK = 0x7bf7; \u002F\u002F 01111 0111111 0111\\n\\n  for (i = 0; i \u003C height; i++) {\\n    row = bitmap[i] = new Uint8Array(width);\\n    row1 = i \u003C 1 ? row : bitmap[i - 1];\\n    row2 = i \u003C 2 ? row : bitmap[i - 2];\\n\\n    \u002F\u002F At the beginning of each row:\\n    \u002F\u002F Fill contextLabel with pixels that are above\u002Fright of (X)\\n    contextLabel =\\n      (row2[0] \u003C\u003C 13) |\\n      (row2[1] \u003C\u003C 12) |\\n      (row2[2] \u003C\u003C 11) |\\n      (row1[0] \u003C\u003C 7) |\\n      (row1[1] \u003C\u003C 6) |\\n      (row1[2] \u003C\u003C 5) |\\n      (row1[3] \u003C\u003C 4);\\n\\n    for (j = 0; j \u003C width; j++) {\\n      row[j] = pixel = decoder.readBit(contexts, contextLabel);\\n\\n      \u002F\u002F At each pixel: Clear contextLabel pixels that are shifted\\n      \u002F\u002F out of the context, then add new ones.\\n      contextLabel =\\n        ((contextLabel & OLD_PIXEL_MASK) \u003C\u003C 1) |\\n        (j + 3 \u003C width ? row2[j + 3] \u003C\u003C 11 : 0) |\\n        (j + 4 \u003C width ? row1[j + 4] \u003C\u003C 4 : 0) |\\n        pixel;\\n    }\\n  }\\n\\n  return bitmap;\\n}\\n\\n\u002F\u002F 6.2 Generic Region Decoding Procedure\\nfunction decodeBitmap(\\n  mmr,\\n  width,\\n  height,\\n  templateIndex,\\n  prediction,\\n  skip,\\n  at,\\n  decodingContext\\n) {\\n  if (mmr) {\\n    const input = new Reader(\\n      decodingContext.data,\\n      decodingContext.start,\\n      decodingContext.end\\n    );\\n    return decodeMMRBitmap(input, width, height, false);\\n  }\\n\\n  \u002F\u002F Use optimized version for the most common case\\n  if (\\n    templateIndex === 0 &&\\n    !skip &&\\n    !prediction &&\\n    at.length === 4 &&\\n    at[0].x === 3 &&\\n    at[0].y === -1 &&\\n    at[1].x === -3 &&\\n    at[1].y === -1 &&\\n    at[2].x === 2 &&\\n    at[2].y === -2 &&\\n    at[3].x === -2 &&\\n    at[3].y === -2\\n  ) {\\n    return decodeBitmapTemplate0(width, height, decodingContext);\\n  }\\n\\n  const useskip = !!skip;\\n  const template = CodingTemplates[templateIndex].concat(at);\\n\\n  \u002F\u002F Sorting is non-standard, and it is not required. But sorting increases\\n  \u002F\u002F the number of template bits that can be reused from the previous\\n  \u002F\u002F contextLabel in the main loop.\\n  template.sort(function (a, b) {\\n    return a.y - b.y || a.x - b.x;\\n  });\\n\\n  const templateLength = template.length;\\n  const templateX = new Int8Array(templateLength);\\n  const templateY = new Int8Array(templateLength);\\n  const changingTemplateEntries = [];\\n  let reuseMask = 0,\\n    minX = 0,\\n    maxX = 0,\\n    minY = 0;\\n  let c, k;\\n\\n  for (k = 0; k \u003C templateLength; k++) {\\n    templateX[k] = template[k].x;\\n    templateY[k] = template[k].y;\\n    minX = Math.min(minX, template[k].x);\\n    maxX = Math.max(maxX, template[k].x);\\n    minY = Math.min(minY, template[k].y);\\n    \u002F\u002F Check if the template pixel appears in two consecutive context labels,\\n    \u002F\u002F so it can be reused. Otherwise, we add it to the list of changing\\n    \u002F\u002F template entries.\\n    if (\\n      k \u003C templateLength - 1 &&\\n      template[k].y === template[k + 1].y &&\\n      template[k].x === template[k + 1].x - 1\\n    ) {\\n      reuseMask |= 1 \u003C\u003C (templateLength - 1 - k);\\n    } else {\\n      changingTemplateEntries.push(k);\\n    }\\n  }\\n  const changingEntriesLength = changingTemplateEntries.length;\\n\\n  const changingTemplateX = new Int8Array(changingEntriesLength);\\n  const changingTemplateY = new Int8Array(changingEntriesLength);\\n  const changingTemplateBit = new Uint16Array(changingEntriesLength);\\n  for (c = 0; c \u003C changingEntriesLength; c++) {\\n    k = changingTemplateEntries[c];\\n    changingTemplateX[c] = template[k].x;\\n    changingTemplateY[c] = template[k].y;\\n    changingTemplateBit[c] = 1 \u003C\u003C (templateLength - 1 - k);\\n  }\\n\\n  \u002F\u002F Get the safe bounding box edges from the width, height, minX, maxX, minY\\n  const sbb_left = -minX;\\n  const sbb_top = -minY;\\n  const sbb_right = width - maxX;\\n\\n  const pseudoPixelContext = ReusedContexts[templateIndex];\\n  let row = new Uint8Array(width);\\n  const bitmap = [];\\n\\n  const decoder = decodingContext.decoder;\\n  const contexts = decodingContext.contextCache.getContexts(\\\"GB\\\");\\n\\n  let ltp = 0,\\n    j,\\n    i0,\\n    j0,\\n    contextLabel = 0,\\n    bit,\\n    shift;\\n  for (let i = 0; i \u003C height; i++) {\\n    if (prediction) {\\n      const sltp = decoder.readBit(contexts, pseudoPixelContext);\\n      ltp ^= sltp;\\n      if (ltp) {\\n        bitmap.push(row); \u002F\u002F duplicate previous row\\n        continue;\\n      }\\n    }\\n    row = new Uint8Array(row);\\n    bitmap.push(row);\\n    for (j = 0; j \u003C width; j++) {\\n      if (useskip && skip[i][j]) {\\n        row[j] = 0;\\n        continue;\\n      }\\n      \u002F\u002F Are we in the middle of a scanline, so we can reuse contextLabel\\n      \u002F\u002F bits?\\n      if (j >= sbb_left && j \u003C sbb_right && i >= sbb_top) {\\n        \u002F\u002F If yes, we can just shift the bits that are reusable and only\\n        \u002F\u002F fetch the remaining ones.\\n        contextLabel = (contextLabel \u003C\u003C 1) & reuseMask;\\n        for (k = 0; k \u003C changingEntriesLength; k++) {\\n          i0 = i + changingTemplateY[k];\\n          j0 = j + changingTemplateX[k];\\n          bit = bitmap[i0][j0];\\n          if (bit) {\\n            bit = changingTemplateBit[k];\\n            contextLabel |= bit;\\n          }\\n        }\\n      } else {\\n        \u002F\u002F compute the contextLabel from scratch\\n        contextLabel = 0;\\n        shift = templateLength - 1;\\n        for (k = 0; k \u003C templateLength; k++, shift--) {\\n          j0 = j + templateX[k];\\n          if (j0 >= 0 && j0 \u003C width) {\\n            i0 = i + templateY[k];\\n            if (i0 >= 0) {\\n              bit = bitmap[i0][j0];\\n              if (bit) {\\n                contextLabel |= bit \u003C\u003C shift;\\n              }\\n            }\\n          }\\n        }\\n      }\\n      const pixel = decoder.readBit(contexts, contextLabel);\\n      row[j] = pixel;\\n    }\\n  }\\n  return bitmap;\\n}\\n\\n\u002F\u002F 6.3.2 Generic Refinement Region Decoding Procedure\\nfunction decodeRefinement(\\n  width,\\n  height,\\n  templateIndex,\\n  referenceBitmap,\\n  offsetX,\\n  offsetY,\\n  prediction,\\n  at,\\n  decodingContext\\n) {\\n  let codingTemplate = RefinementTemplates[templateIndex].coding;\\n  if (templateIndex === 0) {\\n    codingTemplate = codingTemplate.concat([at[0]]);\\n  }\\n  const codingTemplateLength = codingTemplate.length;\\n  const codingTemplateX = new Int32Array(codingTemplateLength);\\n  const codingTemplateY = new Int32Array(codingTemplateLength);\\n  let k;\\n  for (k = 0; k \u003C codingTemplateLength; k++) {\\n    codingTemplateX[k] = codingTemplate[k].x;\\n    codingTemplateY[k] = codingTemplate[k].y;\\n  }\\n\\n  let referenceTemplate = RefinementTemplates[templateIndex].reference;\\n  if (templateIndex === 0) {\\n    referenceTemplate = referenceTemplate.concat([at[1]]);\\n  }\\n  const referenceTemplateLength = referenceTemplate.length;\\n  const referenceTemplateX = new Int32Array(referenceTemplateLength);\\n  const referenceTemplateY = new Int32Array(referenceTemplateLength);\\n  for (k = 0; k \u003C referenceTemplateLength; k++) {\\n    referenceTemplateX[k] = referenceTemplate[k].x;\\n    referenceTemplateY[k] = referenceTemplate[k].y;\\n  }\\n  const referenceWidth = referenceBitmap[0].length;\\n  const referenceHeight = referenceBitmap.length;\\n\\n  const pseudoPixelContext = RefinementReusedContexts[templateIndex];\\n  const bitmap = [];\\n\\n  const decoder = decodingContext.decoder;\\n  const contexts = decodingContext.contextCache.getContexts(\\\"GR\\\");\\n\\n  let ltp = 0;\\n  for (let i = 0; i \u003C height; i++) {\\n    if (prediction) {\\n      const sltp = decoder.readBit(contexts, pseudoPixelContext);\\n      ltp ^= sltp;\\n      if (ltp) {\\n        throw new Jbig2Error(\\\"prediction is not supported\\\");\\n      }\\n    }\\n    const row = new Uint8Array(width);\\n    bitmap.push(row);\\n    for (let j = 0; j \u003C width; j++) {\\n      let i0, j0;\\n      let contextLabel = 0;\\n      for (k = 0; k \u003C codingTemplateLength; k++) {\\n        i0 = i + codingTemplateY[k];\\n        j0 = j + codingTemplateX[k];\\n        if (i0 \u003C 0 || j0 \u003C 0 || j0 >= width) {\\n          contextLabel \u003C\u003C= 1; \u002F\u002F out of bound pixel\\n        } else {\\n          contextLabel = (contextLabel \u003C\u003C 1) | bitmap[i0][j0];\\n        }\\n      }\\n      for (k = 0; k \u003C referenceTemplateLength; k++) {\\n        i0 = i + referenceTemplateY[k] - offsetY;\\n        j0 = j + referenceTemplateX[k] - offsetX;\\n        if (i0 \u003C 0 || i0 >= referenceHeight || j0 \u003C 0 || j0 >= referenceWidth) {\\n          contextLabel \u003C\u003C= 1; \u002F\u002F out of bound pixel\\n        } else {\\n          contextLabel = (contextLabel \u003C\u003C 1) | referenceBitmap[i0][j0];\\n        }\\n      }\\n      const pixel = decoder.readBit(contexts, contextLabel);\\n      row[j] = pixel;\\n    }\\n  }\\n\\n  return bitmap;\\n}\\n\\n\u002F\u002F 6.5.5 Decoding the symbol dictionary\\nfunction decodeSymbolDictionary(\\n  huffman,\\n  refinement,\\n  symbols,\\n  numberOfNewSymbols,\\n  numberOfExportedSymbols,\\n  huffmanTables,\\n  templateIndex,\\n  at,\\n  refinementTemplateIndex,\\n  refinementAt,\\n  decodingContext,\\n  huffmanInput\\n) {\\n  if (huffman && refinement) {\\n    throw new Jbig2Error(\\\"symbol refinement with Huffman is not supported\\\");\\n  }\\n\\n  const newSymbols = [];\\n  let currentHeight = 0;\\n  let symbolCodeLength = log2(symbols.length + numberOfNewSymbols);\\n\\n  const decoder = decodingContext.decoder;\\n  const contextCache = decodingContext.contextCache;\\n  let tableB1, symbolWidths;\\n  if (huffman) {\\n    tableB1 = getStandardTable(1); \u002F\u002F standard table B.1\\n    symbolWidths = [];\\n    symbolCodeLength = Math.max(symbolCodeLength, 1); \u002F\u002F 6.5.8.2.3\\n  }\\n\\n  while (newSymbols.length \u003C numberOfNewSymbols) {\\n    const deltaHeight = huffman\\n      ? huffmanTables.tableDeltaHeight.decode(huffmanInput)\\n      : decodeInteger(contextCache, \\\"IADH\\\", decoder); \u002F\u002F 6.5.6\\n    currentHeight += deltaHeight;\\n    let currentWidth = 0,\\n      totalWidth = 0;\\n    const firstSymbol = huffman ? symbolWidths.length : 0;\\n    while (true) {\\n      const deltaWidth = huffman\\n        ? huffmanTables.tableDeltaWidth.decode(huffmanInput)\\n        : decodeInteger(contextCache, \\\"IADW\\\", decoder); \u002F\u002F 6.5.7\\n      if (deltaWidth === null) {\\n        break; \u002F\u002F OOB\\n      }\\n      currentWidth += deltaWidth;\\n      totalWidth += currentWidth;\\n      let bitmap;\\n      if (refinement) {\\n        \u002F\u002F 6.5.8.2 Refinement\u002Faggregate-coded symbol bitmap\\n        const numberOfInstances = decodeInteger(contextCache, \\\"IAAI\\\", decoder);\\n        if (numberOfInstances > 1) {\\n          bitmap = decodeTextRegion(\\n            huffman,\\n            refinement,\\n            currentWidth,\\n            currentHeight,\\n            0,\\n            numberOfInstances,\\n            1, \u002F\u002F strip size\\n            symbols.concat(newSymbols),\\n            symbolCodeLength,\\n            0, \u002F\u002F transposed\\n            0, \u002F\u002F ds offset\\n            1, \u002F\u002F top left 7.4.3.1.1\\n            0, \u002F\u002F OR operator\\n            huffmanTables,\\n            refinementTemplateIndex,\\n            refinementAt,\\n            decodingContext,\\n            0,\\n            huffmanInput\\n          );\\n        } else {\\n          const symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);\\n          const rdx = decodeInteger(contextCache, \\\"IARDX\\\", decoder); \u002F\u002F 6.4.11.3\\n          const rdy = decodeInteger(contextCache, \\\"IARDY\\\", decoder); \u002F\u002F 6.4.11.4\\n          const symbol =\\n            symbolId \u003C symbols.length\\n              ? symbols[symbolId]\\n              : newSymbols[symbolId - symbols.length];\\n          bitmap = decodeRefinement(\\n            currentWidth,\\n            currentHeight,\\n            refinementTemplateIndex,\\n            symbol,\\n            rdx,\\n            rdy,\\n            false,\\n            refinementAt,\\n            decodingContext\\n          );\\n        }\\n        newSymbols.push(bitmap);\\n      } else if (huffman) {\\n        \u002F\u002F Store only symbol width and decode a collective bitmap when the\\n        \u002F\u002F height class is done.\\n        symbolWidths.push(currentWidth);\\n      } else {\\n        \u002F\u002F 6.5.8.1 Direct-coded symbol bitmap\\n        bitmap = decodeBitmap(\\n          false,\\n          currentWidth,\\n          currentHeight,\\n          templateIndex,\\n          false,\\n          null,\\n          at,\\n          decodingContext\\n        );\\n        newSymbols.push(bitmap);\\n      }\\n    }\\n    if (huffman && !refinement) {\\n      \u002F\u002F 6.5.9 Height class collective bitmap\\n      const bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput);\\n      huffmanInput.byteAlign();\\n      let collectiveBitmap;\\n      if (bitmapSize === 0) {\\n        \u002F\u002F Uncompressed collective bitmap\\n        collectiveBitmap = readUncompressedBitmap(\\n          huffmanInput,\\n          totalWidth,\\n          currentHeight\\n        );\\n      } else {\\n        \u002F\u002F MMR collective bitmap\\n        const originalEnd = huffmanInput.end;\\n        const bitmapEnd = huffmanInput.position + bitmapSize;\\n        huffmanInput.end = bitmapEnd;\\n        collectiveBitmap = decodeMMRBitmap(\\n          huffmanInput,\\n          totalWidth,\\n          currentHeight,\\n          false\\n        );\\n        huffmanInput.end = originalEnd;\\n        huffmanInput.position = bitmapEnd;\\n      }\\n      const numberOfSymbolsDecoded = symbolWidths.length;\\n      if (firstSymbol === numberOfSymbolsDecoded - 1) {\\n        \u002F\u002F collectiveBitmap is a single symbol.\\n        newSymbols.push(collectiveBitmap);\\n      } else {\\n        \u002F\u002F Divide collectiveBitmap into symbols.\\n        let i,\\n          y,\\n          xMin = 0,\\n          xMax,\\n          bitmapWidth,\\n          symbolBitmap;\\n        for (i = firstSymbol; i \u003C numberOfSymbolsDecoded; i++) {\\n          bitmapWidth = symbolWidths[i];\\n          xMax = xMin + bitmapWidth;\\n          symbolBitmap = [];\\n          for (y = 0; y \u003C currentHeight; y++) {\\n            symbolBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\\n          }\\n          newSymbols.push(symbolBitmap);\\n          xMin = xMax;\\n        }\\n      }\\n    }\\n  }\\n\\n  \u002F\u002F 6.5.10 Exported symbols\\n  const exportedSymbols = [],\\n    flags = [];\\n  let currentFlag = false,\\n    i,\\n    ii;\\n  const totalSymbolsLength = symbols.length + numberOfNewSymbols;\\n  while (flags.length \u003C totalSymbolsLength) {\\n    let runLength = huffman\\n      ? tableB1.decode(huffmanInput)\\n      : decodeInteger(contextCache, \\\"IAEX\\\", decoder);\\n    while (runLength--) {\\n      flags.push(currentFlag);\\n    }\\n    currentFlag = !currentFlag;\\n  }\\n  for (i = 0, ii = symbols.length; i \u003C ii; i++) {\\n    if (flags[i]) {\\n      exportedSymbols.push(symbols[i]);\\n    }\\n  }\\n  for (let j = 0; j \u003C numberOfNewSymbols; i++, j++) {\\n    if (flags[i]) {\\n      exportedSymbols.push(newSymbols[j]);\\n    }\\n  }\\n  return exportedSymbols;\\n}\\n\\nfunction decodeTextRegion(\\n  huffman,\\n  refinement,\\n  width,\\n  height,\\n  defaultPixelValue,\\n  numberOfSymbolInstances,\\n  stripSize,\\n  inputSymbols,\\n  symbolCodeLength,\\n  transposed,\\n  dsOffset,\\n  referenceCorner,\\n  combinationOperator,\\n  huffmanTables,\\n  refinementTemplateIndex,\\n  refinementAt,\\n  decodingContext,\\n  logStripSize,\\n  huffmanInput\\n) {\\n  if (huffman && refinement) {\\n    throw new Jbig2Error(\\\"refinement with Huffman is not supported\\\");\\n  }\\n\\n  \u002F\u002F Prepare bitmap\\n  const bitmap = [];\\n  let i, row;\\n  for (i = 0; i \u003C height; i++) {\\n    row = new Uint8Array(width);\\n    if (defaultPixelValue) {\\n      for (let j = 0; j \u003C width; j++) {\\n        row[j] = defaultPixelValue;\\n      }\\n    }\\n    bitmap.push(row);\\n  }\\n\\n  const decoder = decodingContext.decoder;\\n  const contextCache = decodingContext.contextCache;\\n\\n  let stripT = huffman\\n    ? -huffmanTables.tableDeltaT.decode(huffmanInput)\\n    : -decodeInteger(contextCache, \\\"IADT\\\", decoder); \u002F\u002F 6.4.6\\n  let firstS = 0;\\n  i = 0;\\n  while (i \u003C numberOfSymbolInstances) {\\n    const deltaT = huffman\\n      ? huffmanTables.tableDeltaT.decode(huffmanInput)\\n      : decodeInteger(contextCache, \\\"IADT\\\", decoder); \u002F\u002F 6.4.6\\n    stripT += deltaT;\\n\\n    const deltaFirstS = huffman\\n      ? huffmanTables.tableFirstS.decode(huffmanInput)\\n      : decodeInteger(contextCache, \\\"IAFS\\\", decoder); \u002F\u002F 6.4.7\\n    firstS += deltaFirstS;\\n    let currentS = firstS;\\n    do {\\n      let currentT = 0; \u002F\u002F 6.4.9\\n      if (stripSize > 1) {\\n        currentT = huffman\\n          ? huffmanInput.readBits(logStripSize)\\n          : decodeInteger(contextCache, \\\"IAIT\\\", decoder);\\n      }\\n      const t = stripSize * stripT + currentT;\\n      const symbolId = huffman\\n        ? huffmanTables.symbolIDTable.decode(huffmanInput)\\n        : decodeIAID(contextCache, decoder, symbolCodeLength);\\n      const applyRefinement =\\n        refinement &&\\n        (huffman\\n          ? huffmanInput.readBit()\\n          : decodeInteger(contextCache, \\\"IARI\\\", decoder));\\n      let symbolBitmap = inputSymbols[symbolId];\\n      let symbolWidth = symbolBitmap[0].length;\\n      let symbolHeight = symbolBitmap.length;\\n      if (applyRefinement) {\\n        const rdw = decodeInteger(contextCache, \\\"IARDW\\\", decoder); \u002F\u002F 6.4.11.1\\n        const rdh = decodeInteger(contextCache, \\\"IARDH\\\", decoder); \u002F\u002F 6.4.11.2\\n        const rdx = decodeInteger(contextCache, \\\"IARDX\\\", decoder); \u002F\u002F 6.4.11.3\\n        const rdy = decodeInteger(contextCache, \\\"IARDY\\\", decoder); \u002F\u002F 6.4.11.4\\n        symbolWidth += rdw;\\n        symbolHeight += rdh;\\n        symbolBitmap = decodeRefinement(\\n          symbolWidth,\\n          symbolHeight,\\n          refinementTemplateIndex,\\n          symbolBitmap,\\n          (rdw >> 1) + rdx,\\n          (rdh >> 1) + rdy,\\n          false,\\n          refinementAt,\\n          decodingContext\\n        );\\n      }\\n\\n      let increment = 0;\\n      if (!transposed) {\\n        if (referenceCorner > 1) {\\n          currentS += symbolWidth - 1;\\n        } else {\\n          increment = symbolWidth - 1;\\n        }\\n      } else if (!(referenceCorner & 1)) {\\n        currentS += symbolHeight - 1;\\n      } else {\\n        increment = symbolHeight - 1;\\n      }\\n\\n      const offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1);\\n      const offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0);\\n      let s2, t2, symbolRow;\\n      if (transposed) {\\n        \u002F\u002F Place Symbol Bitmap from T1,S1\\n        for (s2 = 0; s2 \u003C symbolHeight; s2++) {\\n          row = bitmap[offsetS + s2];\\n          if (!row) {\\n            continue;\\n          }\\n          symbolRow = symbolBitmap[s2];\\n          \u002F\u002F To ignore Parts of Symbol bitmap which goes\\n          \u002F\u002F outside bitmap region\\n          const maxWidth = Math.min(width - offsetT, symbolWidth);\\n          switch (combinationOperator) {\\n            case 0: \u002F\u002F OR\\n              for (t2 = 0; t2 \u003C maxWidth; t2++) {\\n                row[offsetT + t2] |= symbolRow[t2];\\n              }\\n              break;\\n            case 2: \u002F\u002F XOR\\n              for (t2 = 0; t2 \u003C maxWidth; t2++) {\\n                row[offsetT + t2] ^= symbolRow[t2];\\n              }\\n              break;\\n            default:\\n              throw new Jbig2Error(\\n                `operator ${combinationOperator} is not supported`\\n              );\\n          }\\n        }\\n      } else {\\n        for (t2 = 0; t2 \u003C symbolHeight; t2++) {\\n          row = bitmap[offsetT + t2];\\n          if (!row) {\\n            continue;\\n          }\\n          symbolRow = symbolBitmap[t2];\\n          switch (combinationOperator) {\\n            case 0: \u002F\u002F OR\\n              for (s2 = 0; s2 \u003C symbolWidth; s2++) {\\n                row[offsetS + s2] |= symbolRow[s2];\\n              }\\n              break;\\n            case 2: \u002F\u002F XOR\\n              for (s2 = 0; s2 \u003C symbolWidth; s2++) {\\n                row[offsetS + s2] ^= symbolRow[s2];\\n              }\\n              break;\\n            default:\\n              throw new Jbig2Error(\\n                `operator ${combinationOperator} is not supported`\\n              );\\n          }\\n        }\\n      }\\n      i++;\\n      const deltaS = huffman\\n        ? huffmanTables.tableDeltaS.decode(huffmanInput)\\n        : decodeInteger(contextCache, \\\"IADS\\\", decoder); \u002F\u002F 6.4.8\\n      if (deltaS === null) {\\n        break; \u002F\u002F OOB\\n      }\\n      currentS += increment + deltaS + dsOffset;\\n    } while (true);\\n  }\\n  return bitmap;\\n}\\n\\nfunction decodePatternDictionary(\\n  mmr,\\n  patternWidth,\\n  patternHeight,\\n  maxPatternIndex,\\n  template,\\n  decodingContext\\n) {\\n  const at = [];\\n  if (!mmr) {\\n    at.push({\\n      x: -patternWidth,\\n      y: 0,\\n    });\\n    if (template === 0) {\\n      at.push(\\n        {\\n          x: -3,\\n          y: -1,\\n        },\\n        {\\n          x: 2,\\n          y: -2,\\n        },\\n        {\\n          x: -2,\\n          y: -2,\\n        }\\n      );\\n    }\\n  }\\n  const collectiveWidth = (maxPatternIndex + 1) * patternWidth;\\n  const collectiveBitmap = decodeBitmap(\\n    mmr,\\n    collectiveWidth,\\n    patternHeight,\\n    template,\\n    false,\\n    null,\\n    at,\\n    decodingContext\\n  );\\n  \u002F\u002F Divide collective bitmap into patterns.\\n  const patterns = [];\\n  for (let i = 0; i \u003C= maxPatternIndex; i++) {\\n    const patternBitmap = [];\\n    const xMin = patternWidth * i;\\n    const xMax = xMin + patternWidth;\\n    for (let y = 0; y \u003C patternHeight; y++) {\\n      patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\\n    }\\n    patterns.push(patternBitmap);\\n  }\\n  return patterns;\\n}\\n\\nfunction decodeHalftoneRegion(\\n  mmr,\\n  patterns,\\n  template,\\n  regionWidth,\\n  regionHeight,\\n  defaultPixelValue,\\n  enableSkip,\\n  combinationOperator,\\n  gridWidth,\\n  gridHeight,\\n  gridOffsetX,\\n  gridOffsetY,\\n  gridVectorX,\\n  gridVectorY,\\n  decodingContext\\n) {\\n  const skip = null;\\n  if (enableSkip) {\\n    throw new Jbig2Error(\\\"skip is not supported\\\");\\n  }\\n  if (combinationOperator !== 0) {\\n    throw new Jbig2Error(\\n      `operator \\\"${combinationOperator}\\\" is not supported in halftone region`\\n    );\\n  }\\n\\n  \u002F\u002F Prepare bitmap.\\n  const regionBitmap = [];\\n  let i, j, row;\\n  for (i = 0; i \u003C regionHeight; i++) {\\n    row = new Uint8Array(regionWidth);\\n    if (defaultPixelValue) {\\n      for (j = 0; j \u003C regionWidth; j++) {\\n        row[j] = defaultPixelValue;\\n      }\\n    }\\n    regionBitmap.push(row);\\n  }\\n\\n  const numberOfPatterns = patterns.length;\\n  const pattern0 = patterns[0];\\n  const patternWidth = pattern0[0].length,\\n    patternHeight = pattern0.length;\\n  const bitsPerValue = log2(numberOfPatterns);\\n  const at = [];\\n  if (!mmr) {\\n    at.push({\\n      x: template \u003C= 1 ? 3 : 2,\\n      y: -1,\\n    });\\n    if (template === 0) {\\n      at.push(\\n        {\\n          x: -3,\\n          y: -1,\\n        },\\n        {\\n          x: 2,\\n          y: -2,\\n        },\\n        {\\n          x: -2,\\n          y: -2,\\n        }\\n      );\\n    }\\n  }\\n  \u002F\u002F Annex C. Gray-scale Image Decoding Procedure.\\n  const grayScaleBitPlanes = [];\\n  let mmrInput, bitmap;\\n  if (mmr) {\\n    \u002F\u002F MMR bit planes are in one continuous stream. Only EOFB codes indicate\\n    \u002F\u002F the end of each bitmap, so EOFBs must be decoded.\\n    mmrInput = new Reader(\\n      decodingContext.data,\\n      decodingContext.start,\\n      decodingContext.end\\n    );\\n  }\\n  for (i = bitsPerValue - 1; i >= 0; i--) {\\n    if (mmr) {\\n      bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true);\\n    } else {\\n      bitmap = decodeBitmap(\\n        false,\\n        gridWidth,\\n        gridHeight,\\n        template,\\n        false,\\n        skip,\\n        at,\\n        decodingContext\\n      );\\n    }\\n    grayScaleBitPlanes[i] = bitmap;\\n  }\\n  \u002F\u002F 6.6.5.2 Rendering the patterns.\\n  let mg, ng, bit, patternIndex, patternBitmap, x, y, patternRow, regionRow;\\n  for (mg = 0; mg \u003C gridHeight; mg++) {\\n    for (ng = 0; ng \u003C gridWidth; ng++) {\\n      bit = 0;\\n      patternIndex = 0;\\n      for (j = bitsPerValue - 1; j >= 0; j--) {\\n        bit ^= grayScaleBitPlanes[j][mg][ng]; \u002F\u002F Gray decoding\\n        patternIndex |= bit \u003C\u003C j;\\n      }\\n      patternBitmap = patterns[patternIndex];\\n      x = (gridOffsetX + mg * gridVectorY + ng * gridVectorX) >> 8;\\n      y = (gridOffsetY + mg * gridVectorX - ng * gridVectorY) >> 8;\\n      \u002F\u002F Draw patternBitmap at (x, y).\\n      if (\\n        x >= 0 &&\\n        x + patternWidth \u003C= regionWidth &&\\n        y >= 0 &&\\n        y + patternHeight \u003C= regionHeight\\n      ) {\\n        for (i = 0; i \u003C patternHeight; i++) {\\n          regionRow = regionBitmap[y + i];\\n          patternRow = patternBitmap[i];\\n          for (j = 0; j \u003C patternWidth; j++) {\\n            regionRow[x + j] |= patternRow[j];\\n          }\\n        }\\n      } else {\\n        let regionX, regionY;\\n        for (i = 0; i \u003C patternHeight; i++) {\\n          regionY = y + i;\\n          if (regionY \u003C 0 || regionY >= regionHeight) {\\n            continue;\\n          }\\n          regionRow = regionBitmap[regionY];\\n          patternRow = patternBitmap[i];\\n          for (j = 0; j \u003C patternWidth; j++) {\\n            regionX = x + j;\\n            if (regionX >= 0 && regionX \u003C regionWidth) {\\n              regionRow[regionX] |= patternRow[j];\\n            }\\n          }\\n        }\\n      }\\n    }\\n  }\\n  return regionBitmap;\\n}\\n\\nfunction readSegmentHeader(data, start) {\\n  const segmentHeader = {};\\n  segmentHeader.number = readUint32(data, start);\\n  const flags = data[start + 4];\\n  const segmentType = flags & 0x3f;\\n  if (!SegmentTypes[segmentType]) {\\n    throw new Jbig2Error(\\\"invalid segment type: \\\" + segmentType);\\n  }\\n  segmentHeader.type = segmentType;\\n  segmentHeader.typeName = SegmentTypes[segmentType];\\n  segmentHeader.deferredNonRetain = !!(flags & 0x80);\\n\\n  const pageAssociationFieldSize = !!(flags & 0x40);\\n  const referredFlags = data[start + 5];\\n  let referredToCount = (referredFlags >> 5) & 7;\\n  const retainBits = [referredFlags & 31];\\n  let position = start + 6;\\n  if (referredFlags === 7) {\\n    referredToCount = readUint32(data, position - 1) & 0x1fffffff;\\n    position += 3;\\n    let bytes = (referredToCount + 7) >> 3;\\n    retainBits[0] = data[position++];\\n    while (--bytes > 0) {\\n      retainBits.push(data[position++]);\\n    }\\n  } else if (referredFlags === 5 || referredFlags === 6) {\\n    throw new Jbig2Error(\\\"invalid referred-to flags\\\");\\n  }\\n\\n  segmentHeader.retainBits = retainBits;\\n\\n  let referredToSegmentNumberSize = 4;\\n  if (segmentHeader.number \u003C= 256) {\\n    referredToSegmentNumberSize = 1;\\n  } else if (segmentHeader.number \u003C= 65536) {\\n    referredToSegmentNumberSize = 2;\\n  }\\n  const referredTo = [];\\n  let i, ii;\\n  for (i = 0; i \u003C referredToCount; i++) {\\n    let number;\\n    if (referredToSegmentNumberSize === 1) {\\n      number = data[position];\\n    } else if (referredToSegmentNumberSize === 2) {\\n      number = readUint16(data, position);\\n    } else {\\n      number = readUint32(data, position);\\n    }\\n    referredTo.push(number);\\n    position += referredToSegmentNumberSize;\\n  }\\n  segmentHeader.referredTo = referredTo;\\n  if (!pageAssociationFieldSize) {\\n    segmentHeader.pageAssociation = data[position++];\\n  } else {\\n    segmentHeader.pageAssociation = readUint32(data, position);\\n    position += 4;\\n  }\\n  segmentHeader.length = readUint32(data, position);\\n  position += 4;\\n\\n  if (segmentHeader.length === 0xffffffff) {\\n    \u002F\u002F 7.2.7 Segment data length, unknown segment length\\n    if (segmentType === 38) {\\n      \u002F\u002F ImmediateGenericRegion\\n      const genericRegionInfo = readRegionSegmentInformation(data, position);\\n      const genericRegionSegmentFlags =\\n        data[position + RegionSegmentInformationFieldLength];\\n      const genericRegionMmr = !!(genericRegionSegmentFlags & 1);\\n      \u002F\u002F searching for the segment end\\n      const searchPatternLength = 6;\\n      const searchPattern = new Uint8Array(searchPatternLength);\\n      if (!genericRegionMmr) {\\n        searchPattern[0] = 0xff;\\n        searchPattern[1] = 0xac;\\n      }\\n      searchPattern[2] = (genericRegionInfo.height >>> 24) & 0xff;\\n      searchPattern[3] = (genericRegionInfo.height >> 16) & 0xff;\\n      searchPattern[4] = (genericRegionInfo.height >> 8) & 0xff;\\n      searchPattern[5] = genericRegionInfo.height & 0xff;\\n      for (i = position, ii = data.length; i \u003C ii; i++) {\\n        let j = 0;\\n        while (j \u003C searchPatternLength && searchPattern[j] === data[i + j]) {\\n          j++;\\n        }\\n        if (j === searchPatternLength) {\\n          segmentHeader.length = i + searchPatternLength;\\n          break;\\n        }\\n      }\\n      if (segmentHeader.length === 0xffffffff) {\\n        throw new Jbig2Error(\\\"segment end was not found\\\");\\n      }\\n    } else {\\n      throw new Jbig2Error(\\\"invalid unknown segment length\\\");\\n    }\\n  }\\n  segmentHeader.headerEnd = position;\\n  return segmentHeader;\\n}\\n\\nfunction readSegments(header, data, start, end) {\\n  const segments = [];\\n  let position = start;\\n  while (position \u003C end) {\\n    const segmentHeader = readSegmentHeader(data, position);\\n    position = segmentHeader.headerEnd;\\n    const segment = {\\n      header: segmentHeader,\\n      data,\\n    };\\n    if (!header.randomAccess) {\\n      segment.start = position;\\n      position += segmentHeader.length;\\n      segment.end = position;\\n    }\\n    segments.push(segment);\\n    if (segmentHeader.type === 51) {\\n      break; \u002F\u002F end of file is found\\n    }\\n  }\\n  if (header.randomAccess) {\\n    for (let i = 0, ii = segments.length; i \u003C ii; i++) {\\n      segments[i].start = position;\\n      position += segments[i].header.length;\\n      segments[i].end = position;\\n    }\\n  }\\n  return segments;\\n}\\n\\n\u002F\u002F 7.4.1 Region segment information field\\nfunction readRegionSegmentInformation(data, start) {\\n  return {\\n    width: readUint32(data, start),\\n    height: readUint32(data, start + 4),\\n    x: readUint32(data, start + 8),\\n    y: readUint32(data, start + 12),\\n    combinationOperator: data[start + 16] & 7,\\n  };\\n}\\nconst RegionSegmentInformationFieldLength = 17;\\n\\nfunction processSegment(segment, visitor) {\\n  const header = segment.header;\\n\\n  const data = segment.data,\\n    end = segment.end;\\n  let position = segment.start;\\n  let args, at, i, atLength;\\n  switch (header.type) {\\n    case 0: \u002F\u002F SymbolDictionary\\n      \u002F\u002F 7.4.2 Symbol dictionary segment syntax\\n      const dictionary = {};\\n      const dictionaryFlags = readUint16(data, position); \u002F\u002F 7.4.2.1.1\\n      dictionary.huffman = !!(dictionaryFlags & 1);\\n      dictionary.refinement = !!(dictionaryFlags & 2);\\n      dictionary.huffmanDHSelector = (dictionaryFlags >> 2) & 3;\\n      dictionary.huffmanDWSelector = (dictionaryFlags >> 4) & 3;\\n      dictionary.bitmapSizeSelector = (dictionaryFlags >> 6) & 1;\\n      dictionary.aggregationInstancesSelector = (dictionaryFlags >> 7) & 1;\\n      dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256);\\n      dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512);\\n      dictionary.template = (dictionaryFlags >> 10) & 3;\\n      dictionary.refinementTemplate = (dictionaryFlags >> 12) & 1;\\n      position += 2;\\n      if (!dictionary.huffman) {\\n        atLength = dictionary.template === 0 ? 4 : 1;\\n        at = [];\\n        for (i = 0; i \u003C atLength; i++) {\\n          at.push({\\n            x: readInt8(data, position),\\n            y: readInt8(data, position + 1),\\n          });\\n          position += 2;\\n        }\\n        dictionary.at = at;\\n      }\\n      if (dictionary.refinement && !dictionary.refinementTemplate) {\\n        at = [];\\n        for (i = 0; i \u003C 2; i++) {\\n          at.push({\\n            x: readInt8(data, position),\\n            y: readInt8(data, position + 1),\\n          });\\n          position += 2;\\n        }\\n        dictionary.refinementAt = at;\\n      }\\n      dictionary.numberOfExportedSymbols = readUint32(data, position);\\n      position += 4;\\n      dictionary.numberOfNewSymbols = readUint32(data, position);\\n      position += 4;\\n      args = [\\n        dictionary,\\n        header.number,\\n        header.referredTo,\\n        data,\\n        position,\\n        end,\\n      ];\\n      break;\\n    case 6: \u002F\u002F ImmediateTextRegion\\n    case 7: \u002F\u002F ImmediateLosslessTextRegion\\n      const textRegion = {};\\n      textRegion.info = readRegionSegmentInformation(data, position);\\n      position += RegionSegmentInformationFieldLength;\\n      const textRegionSegmentFlags = readUint16(data, position);\\n      position += 2;\\n      textRegion.huffman = !!(textRegionSegmentFlags & 1);\\n      textRegion.refinement = !!(textRegionSegmentFlags & 2);\\n      textRegion.logStripSize = (textRegionSegmentFlags >> 2) & 3;\\n      textRegion.stripSize = 1 \u003C\u003C textRegion.logStripSize;\\n      textRegion.referenceCorner = (textRegionSegmentFlags >> 4) & 3;\\n      textRegion.transposed = !!(textRegionSegmentFlags & 64);\\n      textRegion.combinationOperator = (textRegionSegmentFlags >> 7) & 3;\\n      textRegion.defaultPixelValue = (textRegionSegmentFlags >> 9) & 1;\\n      textRegion.dsOffset = (textRegionSegmentFlags \u003C\u003C 17) >> 27;\\n      textRegion.refinementTemplate = (textRegionSegmentFlags >> 15) & 1;\\n      if (textRegion.huffman) {\\n        const textRegionHuffmanFlags = readUint16(data, position);\\n        position += 2;\\n        textRegion.huffmanFS = textRegionHuffmanFlags & 3;\\n        textRegion.huffmanDS = (textRegionHuffmanFlags >> 2) & 3;\\n        textRegion.huffmanDT = (textRegionHuffmanFlags >> 4) & 3;\\n        textRegion.huffmanRefinementDW = (textRegionHuffmanFlags >> 6) & 3;\\n        textRegion.huffmanRefinementDH = (textRegionHuffmanFlags >> 8) & 3;\\n        textRegion.huffmanRefinementDX = (textRegionHuffmanFlags >> 10) & 3;\\n        textRegion.huffmanRefinementDY = (textRegionHuffmanFlags >> 12) & 3;\\n        textRegion.huffmanRefinementSizeSelector = !!(\\n          textRegionHuffmanFlags & 0x4000\\n        );\\n      }\\n      if (textRegion.refinement && !textRegion.refinementTemplate) {\\n        at = [];\\n        for (i = 0; i \u003C 2; i++) {\\n          at.push({\\n            x: readInt8(data, position),\\n            y: readInt8(data, position + 1),\\n          });\\n          position += 2;\\n        }\\n        textRegion.refinementAt = at;\\n      }\\n      textRegion.numberOfSymbolInstances = readUint32(data, position);\\n      position += 4;\\n      args = [textRegion, header.referredTo, data, position, end];\\n      break;\\n    case 16: \u002F\u002F PatternDictionary\\n      \u002F\u002F 7.4.4. Pattern dictionary segment syntax\\n      const patternDictionary = {};\\n      const patternDictionaryFlags = data[position++];\\n      patternDictionary.mmr = !!(patternDictionaryFlags & 1);\\n      patternDictionary.template = (patternDictionaryFlags >> 1) & 3;\\n      patternDictionary.patternWidth = data[position++];\\n      patternDictionary.patternHeight = data[position++];\\n      patternDictionary.maxPatternIndex = readUint32(data, position);\\n      position += 4;\\n      args = [patternDictionary, header.number, data, position, end];\\n      break;\\n    case 22: \u002F\u002F ImmediateHalftoneRegion\\n    case 23: \u002F\u002F ImmediateLosslessHalftoneRegion\\n      \u002F\u002F 7.4.5 Halftone region segment syntax\\n      const halftoneRegion = {};\\n      halftoneRegion.info = readRegionSegmentInformation(data, position);\\n      position += RegionSegmentInformationFieldLength;\\n      const halftoneRegionFlags = data[position++];\\n      halftoneRegion.mmr = !!(halftoneRegionFlags & 1);\\n      halftoneRegion.template = (halftoneRegionFlags >> 1) & 3;\\n      halftoneRegion.enableSkip = !!(halftoneRegionFlags & 8);\\n      halftoneRegion.combinationOperator = (halftoneRegionFlags >> 4) & 7;\\n      halftoneRegion.defaultPixelValue = (halftoneRegionFlags >> 7) & 1;\\n      halftoneRegion.gridWidth = readUint32(data, position);\\n      position += 4;\\n      halftoneRegion.gridHeight = readUint32(data, position);\\n      position += 4;\\n      halftoneRegion.gridOffsetX = readUint32(data, position) & 0xffffffff;\\n      position += 4;\\n      halftoneRegion.gridOffsetY = readUint32(data, position) & 0xffffffff;\\n      position += 4;\\n      halftoneRegion.gridVectorX = readUint16(data, position);\\n      position += 2;\\n      halftoneRegion.gridVectorY = readUint16(data, position);\\n      position += 2;\\n      args = [halftoneRegion, header.referredTo, data, position, end];\\n      break;\\n    case 38: \u002F\u002F ImmediateGenericRegion\\n    case 39: \u002F\u002F ImmediateLosslessGenericRegion\\n      const genericRegion = {};\\n      genericRegion.info = readRegionSegmentInformation(data, position);\\n      position += RegionSegmentInformationFieldLength;\\n      const genericRegionSegmentFlags = data[position++];\\n      genericRegion.mmr = !!(genericRegionSegmentFlags & 1);\\n      genericRegion.template = (genericRegionSegmentFlags >> 1) & 3;\\n      genericRegion.prediction = !!(genericRegionSegmentFlags & 8);\\n      if (!genericRegion.mmr) {\\n        atLength = genericRegion.template === 0 ? 4 : 1;\\n        at = [];\\n        for (i = 0; i \u003C atLength; i++) {\\n          at.push({\\n            x: readInt8(data, position),\\n            y: readInt8(data, position + 1),\\n          });\\n          position += 2;\\n        }\\n        genericRegion.at = at;\\n      }\\n      args = [genericRegion, data, position, end];\\n      break;\\n    case 48: \u002F\u002F PageInformation\\n      const pageInfo = {\\n        width: readUint32(data, position),\\n        height: readUint32(data, position + 4),\\n        resolutionX: readUint32(data, position + 8),\\n        resolutionY: readUint32(data, position + 12),\\n      };\\n      if (pageInfo.height === 0xffffffff) {\\n        delete pageInfo.height;\\n      }\\n      const pageSegmentFlags = data[position + 16];\\n      readUint16(data, position + 17); \u002F\u002F pageStripingInformation\\n      pageInfo.lossless = !!(pageSegmentFlags & 1);\\n      pageInfo.refinement = !!(pageSegmentFlags & 2);\\n      pageInfo.defaultPixelValue = (pageSegmentFlags >> 2) & 1;\\n      pageInfo.combinationOperator = (pageSegmentFlags >> 3) & 3;\\n      pageInfo.requiresBuffer = !!(pageSegmentFlags & 32);\\n      pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64);\\n      args = [pageInfo];\\n      break;\\n    case 49: \u002F\u002F EndOfPage\\n      break;\\n    case 50: \u002F\u002F EndOfStripe\\n      break;\\n    case 51: \u002F\u002F EndOfFile\\n      break;\\n    case 53: \u002F\u002F Tables\\n      args = [header.number, data, position, end];\\n      break;\\n    case 62: \u002F\u002F 7.4.15 defines 2 extension types which\\n      \u002F\u002F are comments and can be ignored.\\n      break;\\n    default:\\n      throw new Jbig2Error(\\n        `segment type ${header.typeName}(${header.type}) is not implemented`\\n      );\\n  }\\n  const callbackName = \\\"on\\\" + header.typeName;\\n  if (callbackName in visitor) {\\n    \u002F\u002F eslint-disable-next-line prefer-spread\\n    visitor[callbackName].apply(visitor, args);\\n  }\\n}\\n\\nfunction processSegments(segments, visitor) {\\n  for (let i = 0, ii = segments.length; i \u003C ii; i++) {\\n    processSegment(segments[i], visitor);\\n  }\\n}\\n\\nfunction parseJbig2Chunks(chunks) {\\n  const visitor = new SimpleSegmentVisitor();\\n  for (let i = 0, ii = chunks.length; i \u003C ii; i++) {\\n    const chunk = chunks[i];\\n    const segments = readSegments({}, chunk.data, chunk.start, chunk.end);\\n    processSegments(segments, visitor);\\n  }\\n  return visitor.buffer;\\n}\\n\\nfunction parseJbig2(data) {\\n  if (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"IMAGE_DECODERS\\\")) {\\n    throw new Error(\\\"Not implemented: parseJbig2\\\");\\n  }\\n  const end = data.length;\\n  let position = 0;\\n\\n  if (\\n    data[position] !== 0x97 ||\\n    data[position + 1] !== 0x4a ||\\n    data[position + 2] !== 0x42 ||\\n    data[position + 3] !== 0x32 ||\\n    data[position + 4] !== 0x0d ||\\n    data[position + 5] !== 0x0a ||\\n    data[position + 6] !== 0x1a ||\\n    data[position + 7] !== 0x0a\\n  ) {\\n    throw new Jbig2Error(\\\"parseJbig2 - invalid header.\\\");\\n  }\\n\\n  const header = Object.create(null);\\n  position += 8;\\n  const flags = data[position++];\\n  header.randomAccess = !(flags & 1);\\n  if (!(flags & 2)) {\\n    header.numberOfPages = readUint32(data, position);\\n    position += 4;\\n  }\\n\\n  const segments = readSegments(header, data, position, end);\\n  const visitor = new SimpleSegmentVisitor();\\n  processSegments(segments, visitor);\\n\\n  const { width, height } = visitor.currentPageInfo;\\n  const bitPacked = visitor.buffer;\\n  const imgData = new Uint8ClampedArray(width * height);\\n  let q = 0,\\n    k = 0;\\n  for (let i = 0; i \u003C height; i++) {\\n    let mask = 0,\\n      buffer;\\n    for (let j = 0; j \u003C width; j++) {\\n      if (!mask) {\\n        mask = 128;\\n        buffer = bitPacked[k++];\\n      }\\n      imgData[q++] = buffer & mask ? 0 : 255;\\n      mask >>= 1;\\n    }\\n  }\\n\\n  return { imgData, width, height };\\n}\\n\\nclass SimpleSegmentVisitor {\\n  onPageInformation(info) {\\n    this.currentPageInfo = info;\\n    const rowSize = (info.width + 7) >> 3;\\n    const buffer = new Uint8ClampedArray(rowSize * info.height);\\n    \u002F\u002F The contents of ArrayBuffers are initialized to 0.\\n    \u002F\u002F Fill the buffer with 0xFF only if info.defaultPixelValue is set\\n    if (info.defaultPixelValue) {\\n      buffer.fill(0xff);\\n    }\\n    this.buffer = buffer;\\n  }\\n\\n  drawBitmap(regionInfo, bitmap) {\\n    const pageInfo = this.currentPageInfo;\\n    const width = regionInfo.width,\\n      height = regionInfo.height;\\n    const rowSize = (pageInfo.width + 7) >> 3;\\n    const combinationOperator = pageInfo.combinationOperatorOverride\\n      ? regionInfo.combinationOperator\\n      : pageInfo.combinationOperator;\\n    const buffer = this.buffer;\\n    const mask0 = 128 >> (regionInfo.x & 7);\\n    let offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);\\n    let i, j, mask, offset;\\n    switch (combinationOperator) {\\n      case 0: \u002F\u002F OR\\n        for (i = 0; i \u003C height; i++) {\\n          mask = mask0;\\n          offset = offset0;\\n          for (j = 0; j \u003C width; j++) {\\n            if (bitmap[i][j]) {\\n              buffer[offset] |= mask;\\n            }\\n            mask >>= 1;\\n            if (!mask) {\\n              mask = 128;\\n              offset++;\\n            }\\n          }\\n          offset0 += rowSize;\\n        }\\n        break;\\n      case 2: \u002F\u002F XOR\\n        for (i = 0; i \u003C height; i++) {\\n          mask = mask0;\\n          offset = offset0;\\n          for (j = 0; j \u003C width; j++) {\\n            if (bitmap[i][j]) {\\n              buffer[offset] ^= mask;\\n            }\\n            mask >>= 1;\\n            if (!mask) {\\n              mask = 128;\\n              offset++;\\n            }\\n          }\\n          offset0 += rowSize;\\n        }\\n        break;\\n      default:\\n        throw new Jbig2Error(\\n          `operator ${combinationOperator} is not supported`\\n        );\\n    }\\n  }\\n\\n  onImmediateGenericRegion(region, data, start, end) {\\n    const regionInfo = region.info;\\n    const decodingContext = new DecodingContext(data, start, end);\\n    const bitmap = decodeBitmap(\\n      region.mmr,\\n      regionInfo.width,\\n      regionInfo.height,\\n      region.template,\\n      region.prediction,\\n      null,\\n      region.at,\\n      decodingContext\\n    );\\n    this.drawBitmap(regionInfo, bitmap);\\n  }\\n\\n  onImmediateLosslessGenericRegion() {\\n    this.onImmediateGenericRegion(...arguments);\\n  }\\n\\n  onSymbolDictionary(\\n    dictionary,\\n    currentSegment,\\n    referredSegments,\\n    data,\\n    start,\\n    end\\n  ) {\\n    let huffmanTables, huffmanInput;\\n    if (dictionary.huffman) {\\n      huffmanTables = getSymbolDictionaryHuffmanTables(\\n        dictionary,\\n        referredSegments,\\n        this.customTables\\n      );\\n      huffmanInput = new Reader(data, start, end);\\n    }\\n\\n    \u002F\u002F Combines exported symbols from all referred segments\\n    let symbols = this.symbols;\\n    if (!symbols) {\\n      this.symbols = symbols = {};\\n    }\\n\\n    const inputSymbols = [];\\n    for (const referredSegment of referredSegments) {\\n      const referredSymbols = symbols[referredSegment];\\n      \u002F\u002F referredSymbols is undefined when we have a reference to a Tables\\n      \u002F\u002F segment instead of a SymbolDictionary.\\n      if (referredSymbols) {\\n        inputSymbols.push(...referredSymbols);\\n      }\\n    }\\n\\n    const decodingContext = new DecodingContext(data, start, end);\\n    symbols[currentSegment] = decodeSymbolDictionary(\\n      dictionary.huffman,\\n      dictionary.refinement,\\n      inputSymbols,\\n      dictionary.numberOfNewSymbols,\\n      dictionary.numberOfExportedSymbols,\\n      huffmanTables,\\n      dictionary.template,\\n      dictionary.at,\\n      dictionary.refinementTemplate,\\n      dictionary.refinementAt,\\n      decodingContext,\\n      huffmanInput\\n    );\\n  }\\n\\n  onImmediateTextRegion(region, referredSegments, data, start, end) {\\n    const regionInfo = region.info;\\n    let huffmanTables, huffmanInput;\\n\\n    \u002F\u002F Combines exported symbols from all referred segments\\n    const symbols = this.symbols;\\n    const inputSymbols = [];\\n    for (const referredSegment of referredSegments) {\\n      const referredSymbols = symbols[referredSegment];\\n      \u002F\u002F referredSymbols is undefined when we have a reference to a Tables\\n      \u002F\u002F segment instead of a SymbolDictionary.\\n      if (referredSymbols) {\\n        inputSymbols.push(...referredSymbols);\\n      }\\n    }\\n    const symbolCodeLength = log2(inputSymbols.length);\\n    if (region.huffman) {\\n      huffmanInput = new Reader(data, start, end);\\n      huffmanTables = getTextRegionHuffmanTables(\\n        region,\\n        referredSegments,\\n        this.customTables,\\n        inputSymbols.length,\\n        huffmanInput\\n      );\\n    }\\n\\n    const decodingContext = new DecodingContext(data, start, end);\\n    const bitmap = decodeTextRegion(\\n      region.huffman,\\n      region.refinement,\\n      regionInfo.width,\\n      regionInfo.height,\\n      region.defaultPixelValue,\\n      region.numberOfSymbolInstances,\\n      region.stripSize,\\n      inputSymbols,\\n      symbolCodeLength,\\n      region.transposed,\\n      region.dsOffset,\\n      region.referenceCorner,\\n      region.combinationOperator,\\n      huffmanTables,\\n      region.refinementTemplate,\\n      region.refinementAt,\\n      decodingContext,\\n      region.logStripSize,\\n      huffmanInput\\n    );\\n    this.drawBitmap(regionInfo, bitmap);\\n  }\\n\\n  onImmediateLosslessTextRegion() {\\n    this.onImmediateTextRegion(...arguments);\\n  }\\n\\n  onPatternDictionary(dictionary, currentSegment, data, start, end) {\\n    let patterns = this.patterns;\\n    if (!patterns) {\\n      this.patterns = patterns = {};\\n    }\\n    const decodingContext = new DecodingContext(data, start, end);\\n    patterns[currentSegment] = decodePatternDictionary(\\n      dictionary.mmr,\\n      dictionary.patternWidth,\\n      dictionary.patternHeight,\\n      dictionary.maxPatternIndex,\\n      dictionary.template,\\n      decodingContext\\n    );\\n  }\\n\\n  onImmediateHalftoneRegion(region, referredSegments, data, start, end) {\\n    \u002F\u002F HalftoneRegion refers to exactly one PatternDictionary.\\n    const patterns = this.patterns[referredSegments[0]];\\n    const regionInfo = region.info;\\n    const decodingContext = new DecodingContext(data, start, end);\\n    const bitmap = decodeHalftoneRegion(\\n      region.mmr,\\n      patterns,\\n      region.template,\\n      regionInfo.width,\\n      regionInfo.height,\\n      region.defaultPixelValue,\\n      region.enableSkip,\\n      region.combinationOperator,\\n      region.gridWidth,\\n      region.gridHeight,\\n      region.gridOffsetX,\\n      region.gridOffsetY,\\n      region.gridVectorX,\\n      region.gridVectorY,\\n      decodingContext\\n    );\\n    this.drawBitmap(regionInfo, bitmap);\\n  }\\n\\n  onImmediateLosslessHalftoneRegion() {\\n    this.onImmediateHalftoneRegion(...arguments);\\n  }\\n\\n  onTables(currentSegment, data, start, end) {\\n    let customTables = this.customTables;\\n    if (!customTables) {\\n      this.customTables = customTables = {};\\n    }\\n    customTables[currentSegment] = decodeTablesSegment(data, start, end);\\n  }\\n}\\n\\nclass HuffmanLine {\\n  constructor(lineData) {\\n    if (lineData.length === 2) {\\n      \u002F\u002F OOB line.\\n      this.isOOB = true;\\n      this.rangeLow = 0;\\n      this.prefixLength = lineData[0];\\n      this.rangeLength = 0;\\n      this.prefixCode = lineData[1];\\n      this.isLowerRange = false;\\n    } else {\\n      \u002F\u002F Normal, upper range or lower range line.\\n      \u002F\u002F Upper range lines are processed like normal lines.\\n      this.isOOB = false;\\n      this.rangeLow = lineData[0];\\n      this.prefixLength = lineData[1];\\n      this.rangeLength = lineData[2];\\n      this.prefixCode = lineData[3];\\n      this.isLowerRange = lineData[4] === \\\"lower\\\";\\n    }\\n  }\\n}\\n\\nclass HuffmanTreeNode {\\n  constructor(line) {\\n    this.children = [];\\n    if (line) {\\n      \u002F\u002F Leaf node\\n      this.isLeaf = true;\\n      this.rangeLength = line.rangeLength;\\n      this.rangeLow = line.rangeLow;\\n      this.isLowerRange = line.isLowerRange;\\n      this.isOOB = line.isOOB;\\n    } else {\\n      \u002F\u002F Intermediate or root node\\n      this.isLeaf = false;\\n    }\\n  }\\n\\n  buildTree(line, shift) {\\n    const bit = (line.prefixCode >> shift) & 1;\\n    if (shift \u003C= 0) {\\n      \u002F\u002F Create a leaf node.\\n      this.children[bit] = new HuffmanTreeNode(line);\\n    } else {\\n      \u002F\u002F Create an intermediate node and continue recursively.\\n      let node = this.children[bit];\\n      if (!node) {\\n        this.children[bit] = node = new HuffmanTreeNode(null);\\n      }\\n      node.buildTree(line, shift - 1);\\n    }\\n  }\\n\\n  decodeNode(reader) {\\n    if (this.isLeaf) {\\n      if (this.isOOB) {\\n        return null;\\n      }\\n      const htOffset = reader.readBits(this.rangeLength);\\n      return this.rangeLow + (this.isLowerRange ? -htOffset : htOffset);\\n    }\\n    const node = this.children[reader.readBit()];\\n    if (!node) {\\n      throw new Jbig2Error(\\\"invalid Huffman data\\\");\\n    }\\n    return node.decodeNode(reader);\\n  }\\n}\\n\\nclass HuffmanTable {\\n  constructor(lines, prefixCodesDone) {\\n    if (!prefixCodesDone) {\\n      this.assignPrefixCodes(lines);\\n    }\\n    \u002F\u002F Create Huffman tree.\\n    this.rootNode = new HuffmanTreeNode(null);\\n    for (let i = 0, ii = lines.length; i \u003C ii; i++) {\\n      const line = lines[i];\\n      if (line.prefixLength > 0) {\\n        this.rootNode.buildTree(line, line.prefixLength - 1);\\n      }\\n    }\\n  }\\n\\n  decode(reader) {\\n    return this.rootNode.decodeNode(reader);\\n  }\\n\\n  assignPrefixCodes(lines) {\\n    \u002F\u002F Annex B.3 Assigning the prefix codes.\\n    const linesLength = lines.length;\\n    let prefixLengthMax = 0;\\n    for (let i = 0; i \u003C linesLength; i++) {\\n      prefixLengthMax = Math.max(prefixLengthMax, lines[i].prefixLength);\\n    }\\n\\n    const histogram = new Uint32Array(prefixLengthMax + 1);\\n    for (let i = 0; i \u003C linesLength; i++) {\\n      histogram[lines[i].prefixLength]++;\\n    }\\n    let currentLength = 1,\\n      firstCode = 0,\\n      currentCode,\\n      currentTemp,\\n      line;\\n    histogram[0] = 0;\\n\\n    while (currentLength \u003C= prefixLengthMax) {\\n      firstCode = (firstCode + histogram[currentLength - 1]) \u003C\u003C 1;\\n      currentCode = firstCode;\\n      currentTemp = 0;\\n      while (currentTemp \u003C linesLength) {\\n        line = lines[currentTemp];\\n        if (line.prefixLength === currentLength) {\\n          line.prefixCode = currentCode;\\n          currentCode++;\\n        }\\n        currentTemp++;\\n      }\\n      currentLength++;\\n    }\\n  }\\n}\\n\\nfunction decodeTablesSegment(data, start, end) {\\n  \u002F\u002F Decodes a Tables segment, i.e., a custom Huffman table.\\n  \u002F\u002F Annex B.2 Code table structure.\\n  const flags = data[start];\\n  const lowestValue = readUint32(data, start + 1) & 0xffffffff;\\n  const highestValue = readUint32(data, start + 5) & 0xffffffff;\\n  const reader = new Reader(data, start + 9, end);\\n\\n  const prefixSizeBits = ((flags >> 1) & 7) + 1;\\n  const rangeSizeBits = ((flags >> 4) & 7) + 1;\\n  const lines = [];\\n  let prefixLength,\\n    rangeLength,\\n    currentRangeLow = lowestValue;\\n\\n  \u002F\u002F Normal table lines\\n  do {\\n    prefixLength = reader.readBits(prefixSizeBits);\\n    rangeLength = reader.readBits(rangeSizeBits);\\n    lines.push(\\n      new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0])\\n    );\\n    currentRangeLow += 1 \u003C\u003C rangeLength;\\n  } while (currentRangeLow \u003C highestValue);\\n\\n  \u002F\u002F Lower range table line\\n  prefixLength = reader.readBits(prefixSizeBits);\\n  lines.push(new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, \\\"lower\\\"]));\\n\\n  \u002F\u002F Upper range table line\\n  prefixLength = reader.readBits(prefixSizeBits);\\n  lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0]));\\n\\n  if (flags & 1) {\\n    \u002F\u002F Out-of-band table line\\n    prefixLength = reader.readBits(prefixSizeBits);\\n    lines.push(new HuffmanLine([prefixLength, 0]));\\n  }\\n\\n  return new HuffmanTable(lines, false);\\n}\\n\\nconst standardTablesCache = {};\\n\\nfunction getStandardTable(number) {\\n  \u002F\u002F Annex B.5 Standard Huffman tables.\\n  let table = standardTablesCache[number];\\n  if (table) {\\n    return table;\\n  }\\n  let lines;\\n  switch (number) {\\n    case 1:\\n      lines = [\\n        [0, 1, 4, 0x0],\\n        [16, 2, 8, 0x2],\\n        [272, 3, 16, 0x6],\\n        [65808, 3, 32, 0x7], \u002F\u002F upper\\n      ];\\n      break;\\n    case 2:\\n      lines = [\\n        [0, 1, 0, 0x0],\\n        [1, 2, 0, 0x2],\\n        [2, 3, 0, 0x6],\\n        [3, 4, 3, 0xe],\\n        [11, 5, 6, 0x1e],\\n        [75, 6, 32, 0x3e], \u002F\u002F upper\\n        [6, 0x3f], \u002F\u002F OOB\\n      ];\\n      break;\\n    case 3:\\n      lines = [\\n        [-256, 8, 8, 0xfe],\\n        [0, 1, 0, 0x0],\\n        [1, 2, 0, 0x2],\\n        [2, 3, 0, 0x6],\\n        [3, 4, 3, 0xe],\\n        [11, 5, 6, 0x1e],\\n        [-257, 8, 32, 0xff, \\\"lower\\\"],\\n        [75, 7, 32, 0x7e], \u002F\u002F upper\\n        [6, 0x3e], \u002F\u002F OOB\\n      ];\\n      break;\\n    case 4:\\n      lines = [\\n        [1, 1, 0, 0x0],\\n        [2, 2, 0, 0x2],\\n        [3, 3, 0, 0x6],\\n        [4, 4, 3, 0xe],\\n        [12, 5, 6, 0x1e],\\n        [76, 5, 32, 0x1f], \u002F\u002F upper\\n      ];\\n      break;\\n    case 5:\\n      lines = [\\n        [-255, 7, 8, 0x7e],\\n        [1, 1, 0, 0x0],\\n        [2, 2, 0, 0x2],\\n        [3, 3, 0, 0x6],\\n        [4, 4, 3, 0xe],\\n        [12, 5, 6, 0x1e],\\n        [-256, 7, 32, 0x7f, \\\"lower\\\"],\\n        [76, 6, 32, 0x3e], \u002F\u002F upper\\n      ];\\n      break;\\n    case 6:\\n      lines = [\\n        [-2048, 5, 10, 0x1c],\\n        [-1024, 4, 9, 0x8],\\n        [-512, 4, 8, 0x9],\\n        [-256, 4, 7, 0xa],\\n        [-128, 5, 6, 0x1d],\\n        [-64, 5, 5, 0x1e],\\n        [-32, 4, 5, 0xb],\\n        [0, 2, 7, 0x0],\\n        [128, 3, 7, 0x2],\\n        [256, 3, 8, 0x3],\\n        [512, 4, 9, 0xc],\\n        [1024, 4, 10, 0xd],\\n        [-2049, 6, 32, 0x3e, \\\"lower\\\"],\\n        [2048, 6, 32, 0x3f], \u002F\u002F upper\\n      ];\\n      break;\\n    case 7:\\n      lines = [\\n        [-1024, 4, 9, 0x8],\\n        [-512, 3, 8, 0x0],\\n        [-256, 4, 7, 0x9],\\n        [-128, 5, 6, 0x1a],\\n        [-64, 5, 5, 0x1b],\\n        [-32, 4, 5, 0xa],\\n        [0, 4, 5, 0xb],\\n        [32, 5, 5, 0x1c],\\n        [64, 5, 6, 0x1d],\\n        [128, 4, 7, 0xc],\\n        [256, 3, 8, 0x1],\\n        [512, 3, 9, 0x2],\\n        [1024, 3, 10, 0x3],\\n        [-1025, 5, 32, 0x1e, \\\"lower\\\"],\\n        [2048, 5, 32, 0x1f], \u002F\u002F upper\\n      ];\\n      break;\\n    case 8:\\n      lines = [\\n        [-15, 8, 3, 0xfc],\\n        [-7, 9, 1, 0x1fc],\\n        [-5, 8, 1, 0xfd],\\n        [-3, 9, 0, 0x1fd],\\n        [-2, 7, 0, 0x7c],\\n        [-1, 4, 0, 0xa],\\n        [0, 2, 1, 0x0],\\n        [2, 5, 0, 0x1a],\\n        [3, 6, 0, 0x3a],\\n        [4, 3, 4, 0x4],\\n        [20, 6, 1, 0x3b],\\n        [22, 4, 4, 0xb],\\n        [38, 4, 5, 0xc],\\n        [70, 5, 6, 0x1b],\\n        [134, 5, 7, 0x1c],\\n        [262, 6, 7, 0x3c],\\n        [390, 7, 8, 0x7d],\\n        [646, 6, 10, 0x3d],\\n        [-16, 9, 32, 0x1fe, \\\"lower\\\"],\\n        [1670, 9, 32, 0x1ff], \u002F\u002F upper\\n        [2, 0x1], \u002F\u002F OOB\\n      ];\\n      break;\\n    case 9:\\n      lines = [\\n        [-31, 8, 4, 0xfc],\\n        [-15, 9, 2, 0x1fc],\\n        [-11, 8, 2, 0xfd],\\n        [-7, 9, 1, 0x1fd],\\n        [-5, 7, 1, 0x7c],\\n        [-3, 4, 1, 0xa],\\n        [-1, 3, 1, 0x2],\\n        [1, 3, 1, 0x3],\\n        [3, 5, 1, 0x1a],\\n        [5, 6, 1, 0x3a],\\n        [7, 3, 5, 0x4],\\n        [39, 6, 2, 0x3b],\\n        [43, 4, 5, 0xb],\\n        [75, 4, 6, 0xc],\\n        [139, 5, 7, 0x1b],\\n        [267, 5, 8, 0x1c],\\n        [523, 6, 8, 0x3c],\\n        [779, 7, 9, 0x7d],\\n        [1291, 6, 11, 0x3d],\\n        [-32, 9, 32, 0x1fe, \\\"lower\\\"],\\n        [3339, 9, 32, 0x1ff], \u002F\u002F upper\\n        [2, 0x0], \u002F\u002F OOB\\n      ];\\n      break;\\n    case 10:\\n      lines = [\\n        [-21, 7, 4, 0x7a],\\n        [-5, 8, 0, 0xfc],\\n        [-4, 7, 0, 0x7b],\\n        [-3, 5, 0, 0x18],\\n        [-2, 2, 2, 0x0],\\n        [2, 5, 0, 0x19],\\n        [3, 6, 0, 0x36],\\n        [4, 7, 0, 0x7c],\\n        [5, 8, 0, 0xfd],\\n        [6, 2, 6, 0x1],\\n        [70, 5, 5, 0x1a],\\n        [102, 6, 5, 0x37],\\n        [134, 6, 6, 0x38],\\n        [198, 6, 7, 0x39],\\n        [326, 6, 8, 0x3a],\\n        [582, 6, 9, 0x3b],\\n        [1094, 6, 10, 0x3c],\\n        [2118, 7, 11, 0x7d],\\n        [-22, 8, 32, 0xfe, \\\"lower\\\"],\\n        [4166, 8, 32, 0xff], \u002F\u002F upper\\n        [2, 0x2], \u002F\u002F OOB\\n      ];\\n      break;\\n    case 11:\\n      lines = [\\n        [1, 1, 0, 0x0],\\n        [2, 2, 1, 0x2],\\n        [4, 4, 0, 0xc],\\n        [5, 4, 1, 0xd],\\n        [7, 5, 1, 0x1c],\\n        [9, 5, 2, 0x1d],\\n        [13, 6, 2, 0x3c],\\n        [17, 7, 2, 0x7a],\\n        [21, 7, 3, 0x7b],\\n        [29, 7, 4, 0x7c],\\n        [45, 7, 5, 0x7d],\\n        [77, 7, 6, 0x7e],\\n        [141, 7, 32, 0x7f], \u002F\u002F upper\\n      ];\\n      break;\\n    case 12:\\n      lines = [\\n        [1, 1, 0, 0x0],\\n        [2, 2, 0, 0x2],\\n        [3, 3, 1, 0x6],\\n        [5, 5, 0, 0x1c],\\n        [6, 5, 1, 0x1d],\\n        [8, 6, 1, 0x3c],\\n        [10, 7, 0, 0x7a],\\n        [11, 7, 1, 0x7b],\\n        [13, 7, 2, 0x7c],\\n        [17, 7, 3, 0x7d],\\n        [25, 7, 4, 0x7e],\\n        [41, 8, 5, 0xfe],\\n        [73, 8, 32, 0xff], \u002F\u002F upper\\n      ];\\n      break;\\n    case 13:\\n      lines = [\\n        [1, 1, 0, 0x0],\\n        [2, 3, 0, 0x4],\\n        [3, 4, 0, 0xc],\\n        [4, 5, 0, 0x1c],\\n        [5, 4, 1, 0xd],\\n        [7, 3, 3, 0x5],\\n        [15, 6, 1, 0x3a],\\n        [17, 6, 2, 0x3b],\\n        [21, 6, 3, 0x3c],\\n        [29, 6, 4, 0x3d],\\n        [45, 6, 5, 0x3e],\\n        [77, 7, 6, 0x7e],\\n        [141, 7, 32, 0x7f], \u002F\u002F upper\\n      ];\\n      break;\\n    case 14:\\n      lines = [\\n        [-2, 3, 0, 0x4],\\n        [-1, 3, 0, 0x5],\\n        [0, 1, 0, 0x0],\\n        [1, 3, 0, 0x6],\\n        [2, 3, 0, 0x7],\\n      ];\\n      break;\\n    case 15:\\n      lines = [\\n        [-24, 7, 4, 0x7c],\\n        [-8, 6, 2, 0x3c],\\n        [-4, 5, 1, 0x1c],\\n        [-2, 4, 0, 0xc],\\n        [-1, 3, 0, 0x4],\\n        [0, 1, 0, 0x0],\\n        [1, 3, 0, 0x5],\\n        [2, 4, 0, 0xd],\\n        [3, 5, 1, 0x1d],\\n        [5, 6, 2, 0x3d],\\n        [9, 7, 4, 0x7d],\\n        [-25, 7, 32, 0x7e, \\\"lower\\\"],\\n        [25, 7, 32, 0x7f], \u002F\u002F upper\\n      ];\\n      break;\\n    default:\\n      throw new Jbig2Error(`standard table B.${number} does not exist`);\\n  }\\n\\n  for (let i = 0, ii = lines.length; i \u003C ii; i++) {\\n    lines[i] = new HuffmanLine(lines[i]);\\n  }\\n  table = new HuffmanTable(lines, true);\\n  standardTablesCache[number] = table;\\n  return table;\\n}\\n\\nclass Reader {\\n  constructor(data, start, end) {\\n    this.data = data;\\n    this.start = start;\\n    this.end = end;\\n    this.position = start;\\n    this.shift = -1;\\n    this.currentByte = 0;\\n  }\\n\\n  readBit() {\\n    if (this.shift \u003C 0) {\\n      if (this.position >= this.end) {\\n        throw new Jbig2Error(\\\"end of data while reading bit\\\");\\n      }\\n      this.currentByte = this.data[this.position++];\\n      this.shift = 7;\\n    }\\n    const bit = (this.currentByte >> this.shift) & 1;\\n    this.shift--;\\n    return bit;\\n  }\\n\\n  readBits(numBits) {\\n    let result = 0,\\n      i;\\n    for (i = numBits - 1; i >= 0; i--) {\\n      result |= this.readBit() \u003C\u003C i;\\n    }\\n    return result;\\n  }\\n\\n  byteAlign() {\\n    this.shift = -1;\\n  }\\n\\n  next() {\\n    if (this.position >= this.end) {\\n      return -1;\\n    }\\n    return this.data[this.position++];\\n  }\\n}\\n\\nfunction getCustomHuffmanTable(index, referredTo, customTables) {\\n  \u002F\u002F Returns a Tables segment that has been earlier decoded.\\n  \u002F\u002F See 7.4.2.1.6 (symbol dictionary) or 7.4.3.1.6 (text region).\\n  let currentIndex = 0;\\n  for (let i = 0, ii = referredTo.length; i \u003C ii; i++) {\\n    const table = customTables[referredTo[i]];\\n    if (table) {\\n      if (index === currentIndex) {\\n        return table;\\n      }\\n      currentIndex++;\\n    }\\n  }\\n  throw new Jbig2Error(\\\"can't find custom Huffman table\\\");\\n}\\n\\nfunction getTextRegionHuffmanTables(\\n  textRegion,\\n  referredTo,\\n  customTables,\\n  numberOfSymbols,\\n  reader\\n) {\\n  \u002F\u002F 7.4.3.1.7 Symbol ID Huffman table decoding\\n\\n  \u002F\u002F Read code lengths for RUNCODEs 0...34.\\n  const codes = [];\\n  for (let i = 0; i \u003C= 34; i++) {\\n    const codeLength = reader.readBits(4);\\n    codes.push(new HuffmanLine([i, codeLength, 0, 0]));\\n  }\\n  \u002F\u002F Assign Huffman codes for RUNCODEs.\\n  const runCodesTable = new HuffmanTable(codes, false);\\n\\n  \u002F\u002F Read a Huffman code using the assignment above.\\n  \u002F\u002F Interpret the RUNCODE codes and the additional bits (if any).\\n  codes.length = 0;\\n  for (let i = 0; i \u003C numberOfSymbols; ) {\\n    const codeLength = runCodesTable.decode(reader);\\n    if (codeLength >= 32) {\\n      let repeatedLength, numberOfRepeats, j;\\n      switch (codeLength) {\\n        case 32:\\n          if (i === 0) {\\n            throw new Jbig2Error(\\\"no previous value in symbol ID table\\\");\\n          }\\n          numberOfRepeats = reader.readBits(2) + 3;\\n          repeatedLength = codes[i - 1].prefixLength;\\n          break;\\n        case 33:\\n          numberOfRepeats = reader.readBits(3) + 3;\\n          repeatedLength = 0;\\n          break;\\n        case 34:\\n          numberOfRepeats = reader.readBits(7) + 11;\\n          repeatedLength = 0;\\n          break;\\n        default:\\n          throw new Jbig2Error(\\\"invalid code length in symbol ID table\\\");\\n      }\\n      for (j = 0; j \u003C numberOfRepeats; j++) {\\n        codes.push(new HuffmanLine([i, repeatedLength, 0, 0]));\\n        i++;\\n      }\\n    } else {\\n      codes.push(new HuffmanLine([i, codeLength, 0, 0]));\\n      i++;\\n    }\\n  }\\n  reader.byteAlign();\\n  const symbolIDTable = new HuffmanTable(codes, false);\\n\\n  \u002F\u002F 7.4.3.1.6 Text region segment Huffman table selection\\n\\n  let customIndex = 0,\\n    tableFirstS,\\n    tableDeltaS,\\n    tableDeltaT;\\n\\n  switch (textRegion.huffmanFS) {\\n    case 0:\\n    case 1:\\n      tableFirstS = getStandardTable(textRegion.huffmanFS + 6);\\n      break;\\n    case 3:\\n      tableFirstS = getCustomHuffmanTable(\\n        customIndex,\\n        referredTo,\\n        customTables\\n      );\\n      customIndex++;\\n      break;\\n    default:\\n      throw new Jbig2Error(\\\"invalid Huffman FS selector\\\");\\n  }\\n\\n  switch (textRegion.huffmanDS) {\\n    case 0:\\n    case 1:\\n    case 2:\\n      tableDeltaS = getStandardTable(textRegion.huffmanDS + 8);\\n      break;\\n    case 3:\\n      tableDeltaS = getCustomHuffmanTable(\\n        customIndex,\\n        referredTo,\\n        customTables\\n      );\\n      customIndex++;\\n      break;\\n    default:\\n      throw new Jbig2Error(\\\"invalid Huffman DS selector\\\");\\n  }\\n\\n  switch (textRegion.huffmanDT) {\\n    case 0:\\n    case 1:\\n    case 2:\\n      tableDeltaT = getStandardTable(textRegion.huffmanDT + 11);\\n      break;\\n    case 3:\\n      tableDeltaT = getCustomHuffmanTable(\\n        customIndex,\\n        referredTo,\\n        customTables\\n      );\\n      customIndex++;\\n      break;\\n    default:\\n      throw new Jbig2Error(\\\"invalid Huffman DT selector\\\");\\n  }\\n\\n  if (textRegion.refinement) {\\n    \u002F\u002F Load tables RDW, RDH, RDX and RDY.\\n    throw new Jbig2Error(\\\"refinement with Huffman is not supported\\\");\\n  }\\n\\n  return {\\n    symbolIDTable,\\n    tableFirstS,\\n    tableDeltaS,\\n    tableDeltaT,\\n  };\\n}\\n\\nfunction getSymbolDictionaryHuffmanTables(\\n  dictionary,\\n  referredTo,\\n  customTables\\n) {\\n  \u002F\u002F 7.4.2.1.6 Symbol dictionary segment Huffman table selection\\n\\n  let customIndex = 0,\\n    tableDeltaHeight,\\n    tableDeltaWidth;\\n  switch (dictionary.huffmanDHSelector) {\\n    case 0:\\n    case 1:\\n      tableDeltaHeight = getStandardTable(dictionary.huffmanDHSelector + 4);\\n      break;\\n    case 3:\\n      tableDeltaHeight = getCustomHuffmanTable(\\n        customIndex,\\n        referredTo,\\n        customTables\\n      );\\n      customIndex++;\\n      break;\\n    default:\\n      throw new Jbig2Error(\\\"invalid Huffman DH selector\\\");\\n  }\\n\\n  switch (dictionary.huffmanDWSelector) {\\n    case 0:\\n    case 1:\\n      tableDeltaWidth = getStandardTable(dictionary.huffmanDWSelector + 2);\\n      break;\\n    case 3:\\n      tableDeltaWidth = getCustomHuffmanTable(\\n        customIndex,\\n        referredTo,\\n        customTables\\n      );\\n      customIndex++;\\n      break;\\n    default:\\n      throw new Jbig2Error(\\\"invalid Huffman DW selector\\\");\\n  }\\n\\n  let tableBitmapSize, tableAggregateInstances;\\n  if (dictionary.bitmapSizeSelector) {\\n    tableBitmapSize = getCustomHuffmanTable(\\n      customIndex,\\n      referredTo,\\n      customTables\\n    );\\n    customIndex++;\\n  } else {\\n    tableBitmapSize = getStandardTable(1);\\n  }\\n\\n  if (dictionary.aggregationInstancesSelector) {\\n    tableAggregateInstances = getCustomHuffmanTable(\\n      customIndex,\\n      referredTo,\\n      customTables\\n    );\\n  } else {\\n    tableAggregateInstances = getStandardTable(1);\\n  }\\n\\n  return {\\n    tableDeltaHeight,\\n    tableDeltaWidth,\\n    tableBitmapSize,\\n    tableAggregateInstances,\\n  };\\n}\\n\\nfunction readUncompressedBitmap(reader, width, height) {\\n  const bitmap = [];\\n  for (let y = 0; y \u003C height; y++) {\\n    const row = new Uint8Array(width);\\n    bitmap.push(row);\\n    for (let x = 0; x \u003C width; x++) {\\n      row[x] = reader.readBit();\\n    }\\n    reader.byteAlign();\\n  }\\n  return bitmap;\\n}\\n\\nfunction decodeMMRBitmap(input, width, height, endOfBlock) {\\n  \u002F\u002F MMR is the same compression algorithm as the PDF filter\\n  \u002F\u002F CCITTFaxDecode with \u002FK -1.\\n  const params = {\\n    K: -1,\\n    Columns: width,\\n    Rows: height,\\n    BlackIs1: true,\\n    EndOfBlock: endOfBlock,\\n  };\\n  const decoder = new CCITTFaxDecoder(input, params);\\n  const bitmap = [];\\n  let currentByte,\\n    eof = false;\\n\\n  for (let y = 0; y \u003C height; y++) {\\n    const row = new Uint8Array(width);\\n    bitmap.push(row);\\n    let shift = -1;\\n    for (let x = 0; x \u003C width; x++) {\\n      if (shift \u003C 0) {\\n        currentByte = decoder.readNextChar();\\n        if (currentByte === -1) {\\n          \u002F\u002F Set the rest of the bits to zero.\\n          currentByte = 0;\\n          eof = true;\\n        }\\n        shift = 7;\\n      }\\n      row[x] = (currentByte >> shift) & 1;\\n      shift--;\\n    }\\n  }\\n\\n  if (endOfBlock && !eof) {\\n    \u002F\u002F Read until EOFB has been consumed.\\n    const lookForEOFLimit = 5;\\n    for (let i = 0; i \u003C lookForEOFLimit; i++) {\\n      if (decoder.readNextChar() === -1) {\\n        break;\\n      }\\n    }\\n  }\\n\\n  return bitmap;\\n}\\n\\nclass Jbig2Image {\\n  parseChunks(chunks) {\\n    return parseJbig2Chunks(chunks);\\n  }\\n\\n  parse(data) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"IMAGE_DECODERS\\\")) {\\n      throw new Error(\\\"Not implemented: Jbig2Image.parse\\\");\\n    }\\n    const { imgData, width, height } = parseJbig2(data);\\n    this.width = width;\\n    this.height = height;\\n    return imgData;\\n  }\\n}\\n\\nexport { Jbig2Error, Jbig2Image };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { DecodeStream } from \\\".\u002Fdecode_stream.js\\\";\\nimport { Dict } from \\\".\u002Fprimitives.js\\\";\\nimport { Jbig2Image } from \\\".\u002Fjbig2.js\\\";\\nimport { shadow } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\n\u002F**\\n * For JBIG2's we use a library to decode these images and\\n * the stream behaves like all the other DecodeStreams.\\n *\u002F\\nclass Jbig2Stream extends DecodeStream {\\n  constructor(stream, maybeLength, params) {\\n    super(maybeLength);\\n\\n    this.stream = stream;\\n    this.dict = stream.dict;\\n    this.maybeLength = maybeLength;\\n    this.params = params;\\n  }\\n\\n  get bytes() {\\n    \u002F\u002F If `this.maybeLength` is null, we'll get the entire stream.\\n    return shadow(this, \\\"bytes\\\", this.stream.getBytes(this.maybeLength));\\n  }\\n\\n  ensureBuffer(requested) {\\n    \u002F\u002F No-op, since `this.readBlock` will always parse the entire image and\\n    \u002F\u002F directly insert all of its data into `this.buffer`.\\n  }\\n\\n  readBlock() {\\n    if (this.eof) {\\n      return;\\n    }\\n    const jbig2Image = new Jbig2Image();\\n\\n    const chunks = [];\\n    if (this.params instanceof Dict) {\\n      const globalsStream = this.params.get(\\\"JBIG2Globals\\\");\\n      if (globalsStream instanceof BaseStream) {\\n        const globals = globalsStream.getBytes();\\n        chunks.push({ data: globals, start: 0, end: globals.length });\\n      }\\n    }\\n    chunks.push({ data: this.bytes, start: 0, end: this.bytes.length });\\n    const data = jbig2Image.parseChunks(chunks);\\n    const dataLength = data.length;\\n\\n    \u002F\u002F JBIG2 had black as 1 and white as 0, inverting the colors\\n    for (let i = 0; i \u003C dataLength; i++) {\\n      data[i] ^= 0xff;\\n    }\\n    this.buffer = data;\\n    this.bufferLength = dataLength;\\n    this.eof = true;\\n  }\\n}\\n\\nexport { Jbig2Stream };\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { FeatureTest, ImageKind } from \\\".\u002Futil.js\\\";\\n\\nfunction convertToRGBA(params) {\\n  switch (params.kind) {\\n    case ImageKind.GRAYSCALE_1BPP:\\n      return convertBlackAndWhiteToRGBA(params);\\n    case ImageKind.RGB_24BPP:\\n      return convertRGBToRGBA(params);\\n  }\\n\\n  return null;\\n}\\n\\nfunction convertBlackAndWhiteToRGBA({\\n  src,\\n  srcPos = 0,\\n  dest,\\n  width,\\n  height,\\n  nonBlackColor = 0xffffffff,\\n  inverseDecode = false,\\n}) {\\n  const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\\n  const [zeroMapping, oneMapping] = inverseDecode\\n    ? [nonBlackColor, black]\\n    : [black, nonBlackColor];\\n  const widthInSource = width >> 3;\\n  const widthRemainder = width & 7;\\n  const srcLength = src.length;\\n  dest = new Uint32Array(dest.buffer);\\n  let destPos = 0;\\n\\n  for (let i = 0; i \u003C height; i++) {\\n    for (const max = srcPos + widthInSource; srcPos \u003C max; srcPos++) {\\n      const elem = srcPos \u003C srcLength ? src[srcPos] : 255;\\n      dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\\n      dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\\n      dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\\n      dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\\n      dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\\n      dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\\n      dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\\n      dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\\n    }\\n    if (widthRemainder === 0) {\\n      continue;\\n    }\\n    const elem = srcPos \u003C srcLength ? src[srcPos++] : 255;\\n    for (let j = 0; j \u003C widthRemainder; j++) {\\n      dest[destPos++] = elem & (1 \u003C\u003C (7 - j)) ? oneMapping : zeroMapping;\\n    }\\n  }\\n  return { srcPos, destPos };\\n}\\n\\nfunction convertRGBToRGBA({\\n  src,\\n  srcPos = 0,\\n  dest,\\n  destPos = 0,\\n  width,\\n  height,\\n}) {\\n  let i = 0;\\n  const len32 = src.length >> 2;\\n  const src32 = new Uint32Array(src.buffer, srcPos, len32);\\n\\n  if (FeatureTest.isLittleEndian) {\\n    \u002F\u002F It's a way faster to do the shuffle manually instead of working\\n    \u002F\u002F component by component with some Uint8 arrays.\\n    for (; i \u003C len32 - 2; i += 3, destPos += 4) {\\n      const s1 = src32[i]; \u002F\u002F R2B1G1R1\\n      const s2 = src32[i + 1]; \u002F\u002F G3R3B2G2\\n      const s3 = src32[i + 2]; \u002F\u002F B4G4R4B3\\n\\n      dest[destPos] = s1 | 0xff000000;\\n      dest[destPos + 1] = (s1 >>> 24) | (s2 \u003C\u003C 8) | 0xff000000;\\n      dest[destPos + 2] = (s2 >>> 16) | (s3 \u003C\u003C 16) | 0xff000000;\\n      dest[destPos + 3] = (s3 >>> 8) | 0xff000000;\\n    }\\n\\n    for (let j = i * 4, jj = src.length; j \u003C jj; j += 3) {\\n      dest[destPos++] =\\n        src[j] | (src[j + 1] \u003C\u003C 8) | (src[j + 2] \u003C\u003C 16) | 0xff000000;\\n    }\\n  } else {\\n    for (; i \u003C len32 - 2; i += 3, destPos += 4) {\\n      const s1 = src32[i]; \u002F\u002F R1G1B1R2\\n      const s2 = src32[i + 1]; \u002F\u002F G2B2R3G3\\n      const s3 = src32[i + 2]; \u002F\u002F B3R4G4B4\\n\\n      dest[destPos] = s1 | 0xff;\\n      dest[destPos + 1] = (s1 \u003C\u003C 24) | (s2 >>> 8) | 0xff;\\n      dest[destPos + 2] = (s2 \u003C\u003C 16) | (s3 >>> 16) | 0xff;\\n      dest[destPos + 3] = (s3 \u003C\u003C 8) | 0xff;\\n    }\\n\\n    for (let j = i * 4, jj = src.length; j \u003C jj; j += 3) {\\n      dest[destPos++] =\\n        (src[j] \u003C\u003C 24) | (src[j + 1] \u003C\u003C 16) | (src[j + 2] \u003C\u003C 8) | 0xff;\\n    }\\n  }\\n\\n  return { srcPos, destPos };\\n}\\n\\nfunction grayToRGBA(src, dest) {\\n  if (FeatureTest.isLittleEndian) {\\n    for (let i = 0, ii = src.length; i \u003C ii; i++) {\\n      dest[i] = (src[i] * 0x10101) | 0xff000000;\\n    }\\n  } else {\\n    for (let i = 0, ii = src.length; i \u003C ii; i++) {\\n      dest[i] = (src[i] * 0x1010100) | 0x000000ff;\\n    }\\n  }\\n}\\n\\nexport { convertBlackAndWhiteToRGBA, convertToRGBA, grayToRGBA };\\n\",\"\u002F* Copyright 2014 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the 'License');\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an 'AS IS' BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { assert, BaseException, warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { grayToRGBA } from \\\"..\u002Fshared\u002Fimage_utils.js\\\";\\nimport { readUint16 } from \\\".\u002Fcore_utils.js\\\";\\n\\nclass JpegError extends BaseException {\\n  constructor(msg) {\\n    super(msg, \\\"JpegError\\\");\\n  }\\n}\\n\\nclass DNLMarkerError extends BaseException {\\n  constructor(message, scanLines) {\\n    super(message, \\\"DNLMarkerError\\\");\\n    this.scanLines = scanLines;\\n  }\\n}\\n\\nclass EOIMarkerError extends BaseException {\\n  constructor(msg) {\\n    super(msg, \\\"EOIMarkerError\\\");\\n  }\\n}\\n\\n\u002F**\\n * This code was forked from https:\u002F\u002Fgithub.com\u002Fnotmasteryet\u002Fjpgjs.\\n * The original version was created by GitHub user notmasteryet.\\n *\\n * - The JPEG specification can be found in the ITU CCITT Recommendation T.81\\n *   (www.w3.org\u002FGraphics\u002FJPEG\u002Fitu-t81.pdf)\\n * - The JFIF specification can be found in the JPEG File Interchange Format\\n *   (www.w3.org\u002FGraphics\u002FJPEG\u002Fjfif3.pdf)\\n * - The Adobe Application-Specific JPEG markers in the\\n *   Supporting the DCT Filters in PostScript Level 2, Technical Note #5116\\n *   (partners.adobe.com\u002Fpublic\u002Fdeveloper\u002Fen\u002Fps\u002Fsdk\u002F5116.DCT_Filter.pdf)\\n *\u002F\\n\\n\u002F\u002F prettier-ignore\\nconst dctZigZag = new Uint8Array([\\n   0,\\n   1,  8,\\n  16,  9,  2,\\n   3, 10, 17, 24,\\n  32, 25, 18, 11, 4,\\n   5, 12, 19, 26, 33, 40,\\n  48, 41, 34, 27, 20, 13,  6,\\n   7, 14, 21, 28, 35, 42, 49, 56,\\n  57, 50, 43, 36, 29, 22, 15,\\n  23, 30, 37, 44, 51, 58,\\n  59, 52, 45, 38, 31,\\n  39, 46, 53, 60,\\n  61, 54, 47,\\n  55, 62,\\n  63\\n]);\\n\\nconst dctCos1 = 4017; \u002F\u002F cos(pi\u002F16)\\nconst dctSin1 = 799; \u002F\u002F sin(pi\u002F16)\\nconst dctCos3 = 3406; \u002F\u002F cos(3*pi\u002F16)\\nconst dctSin3 = 2276; \u002F\u002F sin(3*pi\u002F16)\\nconst dctCos6 = 1567; \u002F\u002F cos(6*pi\u002F16)\\nconst dctSin6 = 3784; \u002F\u002F sin(6*pi\u002F16)\\nconst dctSqrt2 = 5793; \u002F\u002F sqrt(2)\\nconst dctSqrt1d2 = 2896; \u002F\u002F sqrt(2) \u002F 2\\n\\nfunction buildHuffmanTable(codeLengths, values) {\\n  let k = 0,\\n    i,\\n    j,\\n    length = 16;\\n  while (length > 0 && !codeLengths[length - 1]) {\\n    length--;\\n  }\\n  const code = [{ children: [], index: 0 }];\\n  let p = code[0],\\n    q;\\n  for (i = 0; i \u003C length; i++) {\\n    for (j = 0; j \u003C codeLengths[i]; j++) {\\n      p = code.pop();\\n      p.children[p.index] = values[k];\\n      while (p.index > 0) {\\n        p = code.pop();\\n      }\\n      p.index++;\\n      code.push(p);\\n      while (code.length \u003C= i) {\\n        code.push((q = { children: [], index: 0 }));\\n        p.children[p.index] = q.children;\\n        p = q;\\n      }\\n      k++;\\n    }\\n    if (i + 1 \u003C length) {\\n      \u002F\u002F p here points to last code\\n      code.push((q = { children: [], index: 0 }));\\n      p.children[p.index] = q.children;\\n      p = q;\\n    }\\n  }\\n  return code[0].children;\\n}\\n\\nfunction getBlockBufferOffset(component, row, col) {\\n  return 64 * ((component.blocksPerLine + 1) * row + col);\\n}\\n\\nfunction decodeScan(\\n  data,\\n  offset,\\n  frame,\\n  components,\\n  resetInterval,\\n  spectralStart,\\n  spectralEnd,\\n  successivePrev,\\n  successive,\\n  parseDNLMarker = false\\n) {\\n  const mcusPerLine = frame.mcusPerLine;\\n  const progressive = frame.progressive;\\n\\n  const startOffset = offset;\\n  let bitsData = 0,\\n    bitsCount = 0;\\n\\n  function readBit() {\\n    if (bitsCount > 0) {\\n      bitsCount--;\\n      return (bitsData >> bitsCount) & 1;\\n    }\\n    bitsData = data[offset++];\\n    if (bitsData === 0xff) {\\n      const nextByte = data[offset++];\\n      if (nextByte) {\\n        if (nextByte === \u002F* DNL = *\u002F 0xdc && parseDNLMarker) {\\n          offset += 2; \u002F\u002F Skip marker length.\\n\\n          const scanLines = readUint16(data, offset);\\n          offset += 2;\\n          if (scanLines > 0 && scanLines !== frame.scanLines) {\\n            throw new DNLMarkerError(\\n              \\\"Found DNL marker (0xFFDC) while parsing scan data\\\",\\n              scanLines\\n            );\\n          }\\n        } else if (nextByte === \u002F* EOI = *\u002F 0xd9) {\\n          if (parseDNLMarker) {\\n            \u002F\u002F NOTE: only 8-bit JPEG images are supported in this decoder.\\n            const maybeScanLines = blockRow * (frame.precision === 8 ? 8 : 0);\\n            \u002F\u002F Heuristic to attempt to handle corrupt JPEG images with too\\n            \u002F\u002F large `scanLines` parameter, by falling back to the currently\\n            \u002F\u002F parsed number of scanLines when it's at least (approximately)\\n            \u002F\u002F one \\\"half\\\" order of magnitude smaller than expected (fixes\\n            \u002F\u002F issue10880.pdf, issue10989.pdf, issue15492.pdf).\\n            if (\\n              maybeScanLines > 0 &&\\n              Math.round(frame.scanLines \u002F maybeScanLines) >= 5\\n            ) {\\n              throw new DNLMarkerError(\\n                \\\"Found EOI marker (0xFFD9) while parsing scan data, \\\" +\\n                  \\\"possibly caused by incorrect `scanLines` parameter\\\",\\n                maybeScanLines\\n              );\\n            }\\n          }\\n          throw new EOIMarkerError(\\n            \\\"Found EOI marker (0xFFD9) while parsing scan data\\\"\\n          );\\n        }\\n        throw new JpegError(\\n          `unexpected marker ${((bitsData \u003C\u003C 8) | nextByte).toString(16)}`\\n        );\\n      }\\n      \u002F\u002F unstuff 0\\n    }\\n    bitsCount = 7;\\n    return bitsData >>> 7;\\n  }\\n\\n  function decodeHuffman(tree) {\\n    let node = tree;\\n    while (true) {\\n      node = node[readBit()];\\n      switch (typeof node) {\\n        case \\\"number\\\":\\n          return node;\\n        case \\\"object\\\":\\n          continue;\\n      }\\n      throw new JpegError(\\\"invalid huffman sequence\\\");\\n    }\\n  }\\n\\n  function receive(length) {\\n    let n = 0;\\n    while (length > 0) {\\n      n = (n \u003C\u003C 1) | readBit();\\n      length--;\\n    }\\n    return n;\\n  }\\n\\n  function receiveAndExtend(length) {\\n    if (length === 1) {\\n      return readBit() === 1 ? 1 : -1;\\n    }\\n    const n = receive(length);\\n    if (n >= 1 \u003C\u003C (length - 1)) {\\n      return n;\\n    }\\n    return n + (-1 \u003C\u003C length) + 1;\\n  }\\n\\n  function decodeBaseline(component, blockOffset) {\\n    const t = decodeHuffman(component.huffmanTableDC);\\n    const diff = t === 0 ? 0 : receiveAndExtend(t);\\n    component.blockData[blockOffset] = component.pred += diff;\\n    let k = 1;\\n    while (k \u003C 64) {\\n      const rs = decodeHuffman(component.huffmanTableAC);\\n      const s = rs & 15,\\n        r = rs >> 4;\\n      if (s === 0) {\\n        if (r \u003C 15) {\\n          break;\\n        }\\n        k += 16;\\n        continue;\\n      }\\n      k += r;\\n      const z = dctZigZag[k];\\n      component.blockData[blockOffset + z] = receiveAndExtend(s);\\n      k++;\\n    }\\n  }\\n\\n  function decodeDCFirst(component, blockOffset) {\\n    const t = decodeHuffman(component.huffmanTableDC);\\n    const diff = t === 0 ? 0 : receiveAndExtend(t) \u003C\u003C successive;\\n    component.blockData[blockOffset] = component.pred += diff;\\n  }\\n\\n  function decodeDCSuccessive(component, blockOffset) {\\n    component.blockData[blockOffset] |= readBit() \u003C\u003C successive;\\n  }\\n\\n  let eobrun = 0;\\n  function decodeACFirst(component, blockOffset) {\\n    if (eobrun > 0) {\\n      eobrun--;\\n      return;\\n    }\\n    let k = spectralStart;\\n    const e = spectralEnd;\\n    while (k \u003C= e) {\\n      const rs = decodeHuffman(component.huffmanTableAC);\\n      const s = rs & 15,\\n        r = rs >> 4;\\n      if (s === 0) {\\n        if (r \u003C 15) {\\n          eobrun = receive(r) + (1 \u003C\u003C r) - 1;\\n          break;\\n        }\\n        k += 16;\\n        continue;\\n      }\\n      k += r;\\n      const z = dctZigZag[k];\\n      component.blockData[blockOffset + z] =\\n        receiveAndExtend(s) * (1 \u003C\u003C successive);\\n      k++;\\n    }\\n  }\\n\\n  let successiveACState = 0,\\n    successiveACNextValue;\\n  function decodeACSuccessive(component, blockOffset) {\\n    let k = spectralStart;\\n    const e = spectralEnd;\\n    let r = 0;\\n    let s;\\n    let rs;\\n    while (k \u003C= e) {\\n      const offsetZ = blockOffset + dctZigZag[k];\\n      const sign = component.blockData[offsetZ] \u003C 0 ? -1 : 1;\\n      switch (successiveACState) {\\n        case 0: \u002F\u002F initial state\\n          rs = decodeHuffman(component.huffmanTableAC);\\n          s = rs & 15;\\n          r = rs >> 4;\\n          if (s === 0) {\\n            if (r \u003C 15) {\\n              eobrun = receive(r) + (1 \u003C\u003C r);\\n              successiveACState = 4;\\n            } else {\\n              r = 16;\\n              successiveACState = 1;\\n            }\\n          } else {\\n            if (s !== 1) {\\n              throw new JpegError(\\\"invalid ACn encoding\\\");\\n            }\\n            successiveACNextValue = receiveAndExtend(s);\\n            successiveACState = r ? 2 : 3;\\n          }\\n          continue;\\n        case 1: \u002F\u002F skipping r zero items\\n        case 2:\\n          if (component.blockData[offsetZ]) {\\n            component.blockData[offsetZ] += sign * (readBit() \u003C\u003C successive);\\n          } else {\\n            r--;\\n            if (r === 0) {\\n              successiveACState = successiveACState === 2 ? 3 : 0;\\n            }\\n          }\\n          break;\\n        case 3: \u002F\u002F set value for a zero item\\n          if (component.blockData[offsetZ]) {\\n            component.blockData[offsetZ] += sign * (readBit() \u003C\u003C successive);\\n          } else {\\n            component.blockData[offsetZ] = successiveACNextValue \u003C\u003C successive;\\n            successiveACState = 0;\\n          }\\n          break;\\n        case 4: \u002F\u002F eob\\n          if (component.blockData[offsetZ]) {\\n            component.blockData[offsetZ] += sign * (readBit() \u003C\u003C successive);\\n          }\\n          break;\\n      }\\n      k++;\\n    }\\n    if (successiveACState === 4) {\\n      eobrun--;\\n      if (eobrun === 0) {\\n        successiveACState = 0;\\n      }\\n    }\\n  }\\n\\n  let blockRow = 0;\\n  function decodeMcu(component, decode, mcu, row, col) {\\n    const mcuRow = (mcu \u002F mcusPerLine) | 0;\\n    const mcuCol = mcu % mcusPerLine;\\n    blockRow = mcuRow * component.v + row;\\n    const blockCol = mcuCol * component.h + col;\\n    const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\\n    decode(component, blockOffset);\\n  }\\n\\n  function decodeBlock(component, decode, mcu) {\\n    blockRow = (mcu \u002F component.blocksPerLine) | 0;\\n    const blockCol = mcu % component.blocksPerLine;\\n    const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\\n    decode(component, blockOffset);\\n  }\\n\\n  const componentsLength = components.length;\\n  let component, i, j, k, n;\\n  let decodeFn;\\n  if (progressive) {\\n    if (spectralStart === 0) {\\n      decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\\n    } else {\\n      decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\\n    }\\n  } else {\\n    decodeFn = decodeBaseline;\\n  }\\n\\n  let mcu = 0,\\n    fileMarker;\\n  const mcuExpected =\\n    componentsLength === 1\\n      ? components[0].blocksPerLine * components[0].blocksPerColumn\\n      : mcusPerLine * frame.mcusPerColumn;\\n\\n  let h, v;\\n  while (mcu \u003C= mcuExpected) {\\n    \u002F\u002F reset interval stuff\\n    const mcuToRead = resetInterval\\n      ? Math.min(mcuExpected - mcu, resetInterval)\\n      : mcuExpected;\\n\\n    \u002F\u002F The `mcuToRead === 0` case should only occur when all of the expected\\n    \u002F\u002F MCU data has been already parsed, i.e. when `mcu === mcuExpected`, but\\n    \u002F\u002F some corrupt JPEG images contain more data than intended and we thus\\n    \u002F\u002F want to skip over any extra RSTx markers below (fixes issue11794.pdf).\\n    if (mcuToRead > 0) {\\n      for (i = 0; i \u003C componentsLength; i++) {\\n        components[i].pred = 0;\\n      }\\n      eobrun = 0;\\n\\n      if (componentsLength === 1) {\\n        component = components[0];\\n        for (n = 0; n \u003C mcuToRead; n++) {\\n          decodeBlock(component, decodeFn, mcu);\\n          mcu++;\\n        }\\n      } else {\\n        for (n = 0; n \u003C mcuToRead; n++) {\\n          for (i = 0; i \u003C componentsLength; i++) {\\n            component = components[i];\\n            h = component.h;\\n            v = component.v;\\n            for (j = 0; j \u003C v; j++) {\\n              for (k = 0; k \u003C h; k++) {\\n                decodeMcu(component, decodeFn, mcu, j, k);\\n              }\\n            }\\n          }\\n          mcu++;\\n        }\\n      }\\n    }\\n\\n    \u002F\u002F find marker\\n    bitsCount = 0;\\n    fileMarker = findNextFileMarker(data, offset);\\n    if (!fileMarker) {\\n      break; \u002F\u002F Reached the end of the image data without finding any marker.\\n    }\\n    if (fileMarker.invalid) {\\n      \u002F\u002F Some bad images seem to pad Scan blocks with e.g. zero bytes, skip\\n      \u002F\u002F past those to attempt to find a valid marker (fixes issue4090.pdf).\\n      const partialMsg = mcuToRead > 0 ? \\\"unexpected\\\" : \\\"excessive\\\";\\n      warn(\\n        `decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`\\n      );\\n      offset = fileMarker.offset;\\n    }\\n    if (fileMarker.marker >= 0xffd0 && fileMarker.marker \u003C= 0xffd7) {\\n      \u002F\u002F RSTx\\n      offset += 2;\\n    } else {\\n      break;\\n    }\\n  }\\n\\n  return offset - startOffset;\\n}\\n\\n\u002F\u002F A port of poppler's IDCT method which in turn is taken from:\\n\u002F\u002F   Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz,\\n\u002F\u002F   'Practical Fast 1-D DCT Algorithms with 11 Multiplications',\\n\u002F\u002F   IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989,\\n\u002F\u002F   988-991.\\nfunction quantizeAndInverse(component, blockBufferOffset, p) {\\n  const qt = component.quantizationTable,\\n    blockData = component.blockData;\\n  let v0, v1, v2, v3, v4, v5, v6, v7;\\n  let p0, p1, p2, p3, p4, p5, p6, p7;\\n  let t;\\n\\n  if (!qt) {\\n    throw new JpegError(\\\"missing required Quantization Table.\\\");\\n  }\\n\\n  \u002F\u002F inverse DCT on rows\\n  for (let row = 0; row \u003C 64; row += 8) {\\n    \u002F\u002F gather block data\\n    p0 = blockData[blockBufferOffset + row];\\n    p1 = blockData[blockBufferOffset + row + 1];\\n    p2 = blockData[blockBufferOffset + row + 2];\\n    p3 = blockData[blockBufferOffset + row + 3];\\n    p4 = blockData[blockBufferOffset + row + 4];\\n    p5 = blockData[blockBufferOffset + row + 5];\\n    p6 = blockData[blockBufferOffset + row + 6];\\n    p7 = blockData[blockBufferOffset + row + 7];\\n\\n    \u002F\u002F dequant p0\\n    p0 *= qt[row];\\n\\n    \u002F\u002F check for all-zero AC coefficients\\n    if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\\n      t = (dctSqrt2 * p0 + 512) >> 10;\\n      p[row] = t;\\n      p[row + 1] = t;\\n      p[row + 2] = t;\\n      p[row + 3] = t;\\n      p[row + 4] = t;\\n      p[row + 5] = t;\\n      p[row + 6] = t;\\n      p[row + 7] = t;\\n      continue;\\n    }\\n    \u002F\u002F dequant p1 ... p7\\n    p1 *= qt[row + 1];\\n    p2 *= qt[row + 2];\\n    p3 *= qt[row + 3];\\n    p4 *= qt[row + 4];\\n    p5 *= qt[row + 5];\\n    p6 *= qt[row + 6];\\n    p7 *= qt[row + 7];\\n\\n    \u002F\u002F stage 4\\n    v0 = (dctSqrt2 * p0 + 128) >> 8;\\n    v1 = (dctSqrt2 * p4 + 128) >> 8;\\n    v2 = p2;\\n    v3 = p6;\\n    v4 = (dctSqrt1d2 * (p1 - p7) + 128) >> 8;\\n    v7 = (dctSqrt1d2 * (p1 + p7) + 128) >> 8;\\n    v5 = p3 \u003C\u003C 4;\\n    v6 = p5 \u003C\u003C 4;\\n\\n    \u002F\u002F stage 3\\n    v0 = (v0 + v1 + 1) >> 1;\\n    v1 = v0 - v1;\\n    t = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8;\\n    v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8;\\n    v3 = t;\\n    v4 = (v4 + v6 + 1) >> 1;\\n    v6 = v4 - v6;\\n    v7 = (v7 + v5 + 1) >> 1;\\n    v5 = v7 - v5;\\n\\n    \u002F\u002F stage 2\\n    v0 = (v0 + v3 + 1) >> 1;\\n    v3 = v0 - v3;\\n    v1 = (v1 + v2 + 1) >> 1;\\n    v2 = v1 - v2;\\n    t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\\n    v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\\n    v7 = t;\\n    t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\\n    v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\\n    v6 = t;\\n\\n    \u002F\u002F stage 1\\n    p[row] = v0 + v7;\\n    p[row + 7] = v0 - v7;\\n    p[row + 1] = v1 + v6;\\n    p[row + 6] = v1 - v6;\\n    p[row + 2] = v2 + v5;\\n    p[row + 5] = v2 - v5;\\n    p[row + 3] = v3 + v4;\\n    p[row + 4] = v3 - v4;\\n  }\\n\\n  \u002F\u002F inverse DCT on columns\\n  for (let col = 0; col \u003C 8; ++col) {\\n    p0 = p[col];\\n    p1 = p[col + 8];\\n    p2 = p[col + 16];\\n    p3 = p[col + 24];\\n    p4 = p[col + 32];\\n    p5 = p[col + 40];\\n    p6 = p[col + 48];\\n    p7 = p[col + 56];\\n\\n    \u002F\u002F check for all-zero AC coefficients\\n    if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\\n      t = (dctSqrt2 * p0 + 8192) >> 14;\\n      \u002F\u002F Convert to 8-bit.\\n      if (t \u003C -2040) {\\n        t = 0;\\n      } else if (t >= 2024) {\\n        t = 255;\\n      } else {\\n        t = (t + 2056) >> 4;\\n      }\\n      blockData[blockBufferOffset + col] = t;\\n      blockData[blockBufferOffset + col + 8] = t;\\n      blockData[blockBufferOffset + col + 16] = t;\\n      blockData[blockBufferOffset + col + 24] = t;\\n      blockData[blockBufferOffset + col + 32] = t;\\n      blockData[blockBufferOffset + col + 40] = t;\\n      blockData[blockBufferOffset + col + 48] = t;\\n      blockData[blockBufferOffset + col + 56] = t;\\n      continue;\\n    }\\n\\n    \u002F\u002F stage 4\\n    v0 = (dctSqrt2 * p0 + 2048) >> 12;\\n    v1 = (dctSqrt2 * p4 + 2048) >> 12;\\n    v2 = p2;\\n    v3 = p6;\\n    v4 = (dctSqrt1d2 * (p1 - p7) + 2048) >> 12;\\n    v7 = (dctSqrt1d2 * (p1 + p7) + 2048) >> 12;\\n    v5 = p3;\\n    v6 = p5;\\n\\n    \u002F\u002F stage 3\\n    \u002F\u002F Shift v0 by 128.5 \u003C\u003C 5 here, so we don't need to shift p0...p7 when\\n    \u002F\u002F converting to UInt8 range later.\\n    v0 = ((v0 + v1 + 1) >> 1) + 4112;\\n    v1 = v0 - v1;\\n    t = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12;\\n    v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12;\\n    v3 = t;\\n    v4 = (v4 + v6 + 1) >> 1;\\n    v6 = v4 - v6;\\n    v7 = (v7 + v5 + 1) >> 1;\\n    v5 = v7 - v5;\\n\\n    \u002F\u002F stage 2\\n    v0 = (v0 + v3 + 1) >> 1;\\n    v3 = v0 - v3;\\n    v1 = (v1 + v2 + 1) >> 1;\\n    v2 = v1 - v2;\\n    t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\\n    v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\\n    v7 = t;\\n    t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\\n    v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\\n    v6 = t;\\n\\n    \u002F\u002F stage 1\\n    p0 = v0 + v7;\\n    p7 = v0 - v7;\\n    p1 = v1 + v6;\\n    p6 = v1 - v6;\\n    p2 = v2 + v5;\\n    p5 = v2 - v5;\\n    p3 = v3 + v4;\\n    p4 = v3 - v4;\\n\\n    \u002F\u002F Convert to 8-bit integers.\\n    if (p0 \u003C 16) {\\n      p0 = 0;\\n    } else if (p0 >= 4080) {\\n      p0 = 255;\\n    } else {\\n      p0 >>= 4;\\n    }\\n    if (p1 \u003C 16) {\\n      p1 = 0;\\n    } else if (p1 >= 4080) {\\n      p1 = 255;\\n    } else {\\n      p1 >>= 4;\\n    }\\n    if (p2 \u003C 16) {\\n      p2 = 0;\\n    } else if (p2 >= 4080) {\\n      p2 = 255;\\n    } else {\\n      p2 >>= 4;\\n    }\\n    if (p3 \u003C 16) {\\n      p3 = 0;\\n    } else if (p3 >= 4080) {\\n      p3 = 255;\\n    } else {\\n      p3 >>= 4;\\n    }\\n    if (p4 \u003C 16) {\\n      p4 = 0;\\n    } else if (p4 >= 4080) {\\n      p4 = 255;\\n    } else {\\n      p4 >>= 4;\\n    }\\n    if (p5 \u003C 16) {\\n      p5 = 0;\\n    } else if (p5 >= 4080) {\\n      p5 = 255;\\n    } else {\\n      p5 >>= 4;\\n    }\\n    if (p6 \u003C 16) {\\n      p6 = 0;\\n    } else if (p6 >= 4080) {\\n      p6 = 255;\\n    } else {\\n      p6 >>= 4;\\n    }\\n    if (p7 \u003C 16) {\\n      p7 = 0;\\n    } else if (p7 >= 4080) {\\n      p7 = 255;\\n    } else {\\n      p7 >>= 4;\\n    }\\n\\n    \u002F\u002F store block data\\n    blockData[blockBufferOffset + col] = p0;\\n    blockData[blockBufferOffset + col + 8] = p1;\\n    blockData[blockBufferOffset + col + 16] = p2;\\n    blockData[blockBufferOffset + col + 24] = p3;\\n    blockData[blockBufferOffset + col + 32] = p4;\\n    blockData[blockBufferOffset + col + 40] = p5;\\n    blockData[blockBufferOffset + col + 48] = p6;\\n    blockData[blockBufferOffset + col + 56] = p7;\\n  }\\n}\\n\\nfunction buildComponentData(frame, component) {\\n  const blocksPerLine = component.blocksPerLine;\\n  const blocksPerColumn = component.blocksPerColumn;\\n  const computationBuffer = new Int16Array(64);\\n\\n  for (let blockRow = 0; blockRow \u003C blocksPerColumn; blockRow++) {\\n    for (let blockCol = 0; blockCol \u003C blocksPerLine; blockCol++) {\\n      const offset = getBlockBufferOffset(component, blockRow, blockCol);\\n      quantizeAndInverse(component, offset, computationBuffer);\\n    }\\n  }\\n  return component.blockData;\\n}\\n\\nfunction findNextFileMarker(data, currentPos, startPos = currentPos) {\\n  const maxPos = data.length - 1;\\n  let newPos = startPos \u003C currentPos ? startPos : currentPos;\\n\\n  if (currentPos >= maxPos) {\\n    return null; \u002F\u002F Don't attempt to read non-existent data and just return.\\n  }\\n  const currentMarker = readUint16(data, currentPos);\\n  if (currentMarker >= 0xffc0 && currentMarker \u003C= 0xfffe) {\\n    return {\\n      invalid: null,\\n      marker: currentMarker,\\n      offset: currentPos,\\n    };\\n  }\\n  let newMarker = readUint16(data, newPos);\\n  while (!(newMarker >= 0xffc0 && newMarker \u003C= 0xfffe)) {\\n    if (++newPos >= maxPos) {\\n      return null; \u002F\u002F Don't attempt to read non-existent data and just return.\\n    }\\n    newMarker = readUint16(data, newPos);\\n  }\\n  return {\\n    invalid: currentMarker.toString(16),\\n    marker: newMarker,\\n    offset: newPos,\\n  };\\n}\\n\\nclass JpegImage {\\n  constructor({ decodeTransform = null, colorTransform = -1 } = {}) {\\n    this._decodeTransform = decodeTransform;\\n    this._colorTransform = colorTransform;\\n  }\\n\\n  parse(data, { dnlScanLines = null } = {}) {\\n    function readDataBlock() {\\n      const length = readUint16(data, offset);\\n      offset += 2;\\n      let endOffset = offset + length - 2;\\n\\n      const fileMarker = findNextFileMarker(data, endOffset, offset);\\n      if (fileMarker?.invalid) {\\n        warn(\\n          \\\"readDataBlock - incorrect length, current marker is: \\\" +\\n            fileMarker.invalid\\n        );\\n        endOffset = fileMarker.offset;\\n      }\\n\\n      const array = data.subarray(offset, endOffset);\\n      offset += array.length;\\n      return array;\\n    }\\n\\n    function prepareComponents(frame) {\\n      const mcusPerLine = Math.ceil(frame.samplesPerLine \u002F 8 \u002F frame.maxH);\\n      const mcusPerColumn = Math.ceil(frame.scanLines \u002F 8 \u002F frame.maxV);\\n      for (const component of frame.components) {\\n        const blocksPerLine = Math.ceil(\\n          (Math.ceil(frame.samplesPerLine \u002F 8) * component.h) \u002F frame.maxH\\n        );\\n        const blocksPerColumn = Math.ceil(\\n          (Math.ceil(frame.scanLines \u002F 8) * component.v) \u002F frame.maxV\\n        );\\n        const blocksPerLineForMcu = mcusPerLine * component.h;\\n        const blocksPerColumnForMcu = mcusPerColumn * component.v;\\n\\n        const blocksBufferSize =\\n          64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);\\n        component.blockData = new Int16Array(blocksBufferSize);\\n        component.blocksPerLine = blocksPerLine;\\n        component.blocksPerColumn = blocksPerColumn;\\n      }\\n      frame.mcusPerLine = mcusPerLine;\\n      frame.mcusPerColumn = mcusPerColumn;\\n    }\\n\\n    let offset = 0;\\n    let jfif = null;\\n    let adobe = null;\\n    let frame, resetInterval;\\n    let numSOSMarkers = 0;\\n    const quantizationTables = [];\\n    const huffmanTablesAC = [],\\n      huffmanTablesDC = [];\\n\\n    let fileMarker = readUint16(data, offset);\\n    offset += 2;\\n    if (fileMarker !== \u002F* SOI (Start of Image) = *\u002F 0xffd8) {\\n      throw new JpegError(\\\"SOI not found\\\");\\n    }\\n    fileMarker = readUint16(data, offset);\\n    offset += 2;\\n\\n    markerLoop: while (fileMarker !== \u002F* EOI (End of Image) = *\u002F 0xffd9) {\\n      let i, j, l;\\n      switch (fileMarker) {\\n        case 0xffe0: \u002F\u002F APP0 (Application Specific)\\n        case 0xffe1: \u002F\u002F APP1\\n        case 0xffe2: \u002F\u002F APP2\\n        case 0xffe3: \u002F\u002F APP3\\n        case 0xffe4: \u002F\u002F APP4\\n        case 0xffe5: \u002F\u002F APP5\\n        case 0xffe6: \u002F\u002F APP6\\n        case 0xffe7: \u002F\u002F APP7\\n        case 0xffe8: \u002F\u002F APP8\\n        case 0xffe9: \u002F\u002F APP9\\n        case 0xffea: \u002F\u002F APP10\\n        case 0xffeb: \u002F\u002F APP11\\n        case 0xffec: \u002F\u002F APP12\\n        case 0xffed: \u002F\u002F APP13\\n        case 0xffee: \u002F\u002F APP14\\n        case 0xffef: \u002F\u002F APP15\\n        case 0xfffe: \u002F\u002F COM (Comment)\\n          const appData = readDataBlock();\\n\\n          if (fileMarker === 0xffe0) {\\n            \u002F\u002F 'JFIF\\\\x00'\\n            if (\\n              appData[0] === 0x4a &&\\n              appData[1] === 0x46 &&\\n              appData[2] === 0x49 &&\\n              appData[3] === 0x46 &&\\n              appData[4] === 0\\n            ) {\\n              jfif = {\\n                version: { major: appData[5], minor: appData[6] },\\n                densityUnits: appData[7],\\n                xDensity: (appData[8] \u003C\u003C 8) | appData[9],\\n                yDensity: (appData[10] \u003C\u003C 8) | appData[11],\\n                thumbWidth: appData[12],\\n                thumbHeight: appData[13],\\n                thumbData: appData.subarray(\\n                  14,\\n                  14 + 3 * appData[12] * appData[13]\\n                ),\\n              };\\n            }\\n          }\\n          \u002F\u002F TODO APP1 - Exif\\n          if (fileMarker === 0xffee) {\\n            \u002F\u002F 'Adobe'\\n            if (\\n              appData[0] === 0x41 &&\\n              appData[1] === 0x64 &&\\n              appData[2] === 0x6f &&\\n              appData[3] === 0x62 &&\\n              appData[4] === 0x65\\n            ) {\\n              adobe = {\\n                version: (appData[5] \u003C\u003C 8) | appData[6],\\n                flags0: (appData[7] \u003C\u003C 8) | appData[8],\\n                flags1: (appData[9] \u003C\u003C 8) | appData[10],\\n                transformCode: appData[11],\\n              };\\n            }\\n          }\\n          break;\\n\\n        case 0xffdb: \u002F\u002F DQT (Define Quantization Tables)\\n          const quantizationTablesLength = readUint16(data, offset);\\n          offset += 2;\\n          const quantizationTablesEnd = quantizationTablesLength + offset - 2;\\n          let z;\\n          while (offset \u003C quantizationTablesEnd) {\\n            const quantizationTableSpec = data[offset++];\\n            const tableData = new Uint16Array(64);\\n            if (quantizationTableSpec >> 4 === 0) {\\n              \u002F\u002F 8 bit values\\n              for (j = 0; j \u003C 64; j++) {\\n                z = dctZigZag[j];\\n                tableData[z] = data[offset++];\\n              }\\n            } else if (quantizationTableSpec >> 4 === 1) {\\n              \u002F\u002F 16 bit values\\n              for (j = 0; j \u003C 64; j++) {\\n                z = dctZigZag[j];\\n                tableData[z] = readUint16(data, offset);\\n                offset += 2;\\n              }\\n            } else {\\n              throw new JpegError(\\\"DQT - invalid table spec\\\");\\n            }\\n            quantizationTables[quantizationTableSpec & 15] = tableData;\\n          }\\n          break;\\n\\n        case 0xffc0: \u002F\u002F SOF0 (Start of Frame, Baseline DCT)\\n        case 0xffc1: \u002F\u002F SOF1 (Start of Frame, Extended DCT)\\n        case 0xffc2: \u002F\u002F SOF2 (Start of Frame, Progressive DCT)\\n          if (frame) {\\n            throw new JpegError(\\\"Only single frame JPEGs supported\\\");\\n          }\\n          offset += 2; \u002F\u002F Skip marker length.\\n\\n          frame = {};\\n          frame.extended = fileMarker === 0xffc1;\\n          frame.progressive = fileMarker === 0xffc2;\\n          frame.precision = data[offset++];\\n          const sofScanLines = readUint16(data, offset);\\n          offset += 2;\\n          frame.scanLines = dnlScanLines || sofScanLines;\\n          frame.samplesPerLine = readUint16(data, offset);\\n          offset += 2;\\n          frame.components = [];\\n          frame.componentIds = {};\\n          const componentsCount = data[offset++];\\n          let maxH = 0,\\n            maxV = 0;\\n          for (i = 0; i \u003C componentsCount; i++) {\\n            const componentId = data[offset];\\n            const h = data[offset + 1] >> 4;\\n            const v = data[offset + 1] & 15;\\n            if (maxH \u003C h) {\\n              maxH = h;\\n            }\\n            if (maxV \u003C v) {\\n              maxV = v;\\n            }\\n            const qId = data[offset + 2];\\n            l = frame.components.push({\\n              h,\\n              v,\\n              quantizationId: qId,\\n              quantizationTable: null, \u002F\u002F See comment below.\\n            });\\n            frame.componentIds[componentId] = l - 1;\\n            offset += 3;\\n          }\\n          frame.maxH = maxH;\\n          frame.maxV = maxV;\\n          prepareComponents(frame);\\n          break;\\n\\n        case 0xffc4: \u002F\u002F DHT (Define Huffman Tables)\\n          const huffmanLength = readUint16(data, offset);\\n          offset += 2;\\n          for (i = 2; i \u003C huffmanLength; ) {\\n            const huffmanTableSpec = data[offset++];\\n            const codeLengths = new Uint8Array(16);\\n            let codeLengthSum = 0;\\n            for (j = 0; j \u003C 16; j++, offset++) {\\n              codeLengthSum += codeLengths[j] = data[offset];\\n            }\\n            const huffmanValues = new Uint8Array(codeLengthSum);\\n            for (j = 0; j \u003C codeLengthSum; j++, offset++) {\\n              huffmanValues[j] = data[offset];\\n            }\\n            i += 17 + codeLengthSum;\\n\\n            (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[\\n              huffmanTableSpec & 15\\n            ] = buildHuffmanTable(codeLengths, huffmanValues);\\n          }\\n          break;\\n\\n        case 0xffdd: \u002F\u002F DRI (Define Restart Interval)\\n          offset += 2; \u002F\u002F Skip marker length.\\n\\n          resetInterval = readUint16(data, offset);\\n          offset += 2;\\n          break;\\n\\n        case 0xffda: \u002F\u002F SOS (Start of Scan)\\n          \u002F\u002F A DNL marker (0xFFDC), if it exists, is only allowed at the end\\n          \u002F\u002F of the first scan segment and may only occur once in an image.\\n          \u002F\u002F Furthermore, to prevent an infinite loop, do *not* attempt to\\n          \u002F\u002F parse DNL markers during re-parsing of the JPEG scan data.\\n          const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;\\n\\n          offset += 2; \u002F\u002F Skip marker length.\\n\\n          const selectorsCount = data[offset++],\\n            components = [];\\n          for (i = 0; i \u003C selectorsCount; i++) {\\n            const index = data[offset++];\\n            const componentIndex = frame.componentIds[index];\\n            const component = frame.components[componentIndex];\\n            component.index = index;\\n            const tableSpec = data[offset++];\\n            component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\\n            component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\\n            components.push(component);\\n          }\\n          const spectralStart = data[offset++],\\n            spectralEnd = data[offset++],\\n            successiveApproximation = data[offset++];\\n          try {\\n            const processed = decodeScan(\\n              data,\\n              offset,\\n              frame,\\n              components,\\n              resetInterval,\\n              spectralStart,\\n              spectralEnd,\\n              successiveApproximation >> 4,\\n              successiveApproximation & 15,\\n              parseDNLMarker\\n            );\\n            offset += processed;\\n          } catch (ex) {\\n            if (ex instanceof DNLMarkerError) {\\n              warn(`${ex.message} -- attempting to re-parse the JPEG image.`);\\n              return this.parse(data, { dnlScanLines: ex.scanLines });\\n            } else if (ex instanceof EOIMarkerError) {\\n              warn(`${ex.message} -- ignoring the rest of the image data.`);\\n              break markerLoop;\\n            }\\n            throw ex;\\n          }\\n          break;\\n\\n        case 0xffdc: \u002F\u002F DNL (Define Number of Lines)\\n          \u002F\u002F Ignore the marker, since it's being handled in `decodeScan`.\\n          offset += 4;\\n          break;\\n\\n        case 0xffff: \u002F\u002F Fill bytes\\n          if (data[offset] !== 0xff) {\\n            \u002F\u002F Avoid skipping a valid marker.\\n            offset--;\\n          }\\n          break;\\n\\n        default:\\n          \u002F\u002F Could be incorrect encoding -- the last 0xFF byte of the previous\\n          \u002F\u002F block could have been eaten by the encoder, hence we fallback to\\n          \u002F\u002F `startPos = offset - 3` when looking for the next valid marker.\\n          const nextFileMarker = findNextFileMarker(\\n            data,\\n            \u002F* currentPos = *\u002F offset - 2,\\n            \u002F* startPos = *\u002F offset - 3\\n          );\\n          if (nextFileMarker?.invalid) {\\n            warn(\\n              \\\"JpegImage.parse - unexpected data, current marker is: \\\" +\\n                nextFileMarker.invalid\\n            );\\n            offset = nextFileMarker.offset;\\n            break;\\n          }\\n          if (!nextFileMarker || offset >= data.length - 1) {\\n            warn(\\n              \\\"JpegImage.parse - reached the end of the image data \\\" +\\n                \\\"without finding an EOI marker (0xFFD9).\\\"\\n            );\\n            break markerLoop;\\n          }\\n          throw new JpegError(\\n            \\\"JpegImage.parse - unknown marker: \\\" + fileMarker.toString(16)\\n          );\\n      }\\n      fileMarker = readUint16(data, offset);\\n      offset += 2;\\n    }\\n\\n    if (!frame) {\\n      throw new JpegError(\\\"JpegImage.parse - no frame data found.\\\");\\n    }\\n    this.width = frame.samplesPerLine;\\n    this.height = frame.scanLines;\\n    this.jfif = jfif;\\n    this.adobe = adobe;\\n    this.components = [];\\n    for (const component of frame.components) {\\n      \u002F\u002F Prevent errors when DQT markers are placed after SOF{n} markers,\\n      \u002F\u002F by assigning the `quantizationTable` entry after the entire image\\n      \u002F\u002F has been parsed (fixes issue7406.pdf).\\n      const quantizationTable = quantizationTables[component.quantizationId];\\n      if (quantizationTable) {\\n        component.quantizationTable = quantizationTable;\\n      }\\n\\n      this.components.push({\\n        index: component.index,\\n        output: buildComponentData(frame, component),\\n        scaleX: component.h \u002F frame.maxH,\\n        scaleY: component.v \u002F frame.maxV,\\n        blocksPerLine: component.blocksPerLine,\\n        blocksPerColumn: component.blocksPerColumn,\\n      });\\n    }\\n    this.numComponents = this.components.length;\\n    return undefined;\\n  }\\n\\n  _getLinearizedBlockData(width, height, isSourcePDF = false) {\\n    const scaleX = this.width \u002F width,\\n      scaleY = this.height \u002F height;\\n\\n    let component, componentScaleX, componentScaleY, blocksPerScanline;\\n    let x, y, i, j, k;\\n    let index;\\n    let offset = 0;\\n    let output;\\n    const numComponents = this.components.length;\\n    const dataLength = width * height * numComponents;\\n    const data = new Uint8ClampedArray(dataLength);\\n    const xScaleBlockOffset = new Uint32Array(width);\\n    const mask3LSB = 0xfffffff8; \u002F\u002F used to clear the 3 LSBs\\n    let lastComponentScaleX;\\n\\n    for (i = 0; i \u003C numComponents; i++) {\\n      component = this.components[i];\\n      componentScaleX = component.scaleX * scaleX;\\n      componentScaleY = component.scaleY * scaleY;\\n      offset = i;\\n      output = component.output;\\n      blocksPerScanline = (component.blocksPerLine + 1) \u003C\u003C 3;\\n      \u002F\u002F Precalculate the `xScaleBlockOffset`. Since it doesn't depend on the\\n      \u002F\u002F component data, that's only necessary when `componentScaleX` changes.\\n      if (componentScaleX !== lastComponentScaleX) {\\n        for (x = 0; x \u003C width; x++) {\\n          j = 0 | (x * componentScaleX);\\n          xScaleBlockOffset[x] = ((j & mask3LSB) \u003C\u003C 3) | (j & 7);\\n        }\\n        lastComponentScaleX = componentScaleX;\\n      }\\n      \u002F\u002F linearize the blocks of the component\\n      for (y = 0; y \u003C height; y++) {\\n        j = 0 | (y * componentScaleY);\\n        index = (blocksPerScanline * (j & mask3LSB)) | ((j & 7) \u003C\u003C 3);\\n        for (x = 0; x \u003C width; x++) {\\n          data[offset] = output[index + xScaleBlockOffset[x]];\\n          offset += numComponents;\\n        }\\n      }\\n    }\\n\\n    \u002F\u002F decodeTransform contains pairs of multiplier (-256..256) and additive\\n    let transform = this._decodeTransform;\\n\\n    \u002F\u002F In PDF files, JPEG images with CMYK colour spaces are usually inverted\\n    \u002F\u002F (this can be observed by extracting the raw image data).\\n    \u002F\u002F Since the conversion algorithms (see below) were written primarily for\\n    \u002F\u002F the PDF use-cases, attempting to use `JpegImage` to parse standalone\\n    \u002F\u002F JPEG (CMYK) images may thus result in inverted images (see issue 9513).\\n    \u002F\u002F\\n    \u002F\u002F Unfortunately it's not (always) possible to tell, from the image data\\n    \u002F\u002F alone, if it needs to be inverted. Thus in an attempt to provide better\\n    \u002F\u002F out-of-box behaviour when `JpegImage` is used standalone, default to\\n    \u002F\u002F inverting JPEG (CMYK) images if and only if the image data does *not*\\n    \u002F\u002F come from a PDF file and no `decodeTransform` was passed by the user.\\n    if (!isSourcePDF && numComponents === 4 && !transform) {\\n      transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]);\\n    }\\n\\n    if (transform) {\\n      for (i = 0; i \u003C dataLength; ) {\\n        for (j = 0, k = 0; j \u003C numComponents; j++, i++, k += 2) {\\n          data[i] = ((data[i] * transform[k]) >> 8) + transform[k + 1];\\n        }\\n      }\\n    }\\n    return data;\\n  }\\n\\n  get _isColorConversionNeeded() {\\n    if (this.adobe) {\\n      \u002F\u002F The adobe transform marker overrides any previous setting.\\n      return !!this.adobe.transformCode;\\n    }\\n    if (this.numComponents === 3) {\\n      if (this._colorTransform === 0) {\\n        \u002F\u002F If the Adobe transform marker is not present and the image\\n        \u002F\u002F dictionary has a 'ColorTransform' entry, explicitly set to `0`,\\n        \u002F\u002F then the colours should *not* be transformed.\\n        return false;\\n      } else if (\\n        this.components[0].index === \u002F* \\\"R\\\" = *\u002F 0x52 &&\\n        this.components[1].index === \u002F* \\\"G\\\" = *\u002F 0x47 &&\\n        this.components[2].index === \u002F* \\\"B\\\" = *\u002F 0x42\\n      ) {\\n        \u002F\u002F If the three components are indexed as RGB in ASCII\\n        \u002F\u002F then the colours should *not* be transformed.\\n        return false;\\n      }\\n      return true;\\n    }\\n    \u002F\u002F `this.numComponents !== 3`\\n    if (this._colorTransform === 1) {\\n      \u002F\u002F If the Adobe transform marker is not present and the image\\n      \u002F\u002F dictionary has a 'ColorTransform' entry, explicitly set to `1`,\\n      \u002F\u002F then the colours should be transformed.\\n      return true;\\n    }\\n    return false;\\n  }\\n\\n  _convertYccToRgb(data) {\\n    let Y, Cb, Cr;\\n    for (let i = 0, length = data.length; i \u003C length; i += 3) {\\n      Y = data[i];\\n      Cb = data[i + 1];\\n      Cr = data[i + 2];\\n      data[i] = Y - 179.456 + 1.402 * Cr;\\n      data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\\n      data[i + 2] = Y - 226.816 + 1.772 * Cb;\\n    }\\n    return data;\\n  }\\n\\n  _convertYccToRgba(data, out) {\\n    for (let i = 0, j = 0, length = data.length; i \u003C length; i += 3, j += 4) {\\n      const Y = data[i];\\n      const Cb = data[i + 1];\\n      const Cr = data[i + 2];\\n      out[j] = Y - 179.456 + 1.402 * Cr;\\n      out[j + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\\n      out[j + 2] = Y - 226.816 + 1.772 * Cb;\\n      out[j + 3] = 255;\\n    }\\n    return out;\\n  }\\n\\n  _convertYcckToRgb(data) {\\n    let Y, Cb, Cr, k;\\n    let offset = 0;\\n    for (let i = 0, length = data.length; i \u003C length; i += 4) {\\n      Y = data[i];\\n      Cb = data[i + 1];\\n      Cr = data[i + 2];\\n      k = data[i + 3];\\n\\n      data[offset++] =\\n        -122.67195406894 +\\n        Cb *\\n          (-6.60635669420364e-5 * Cb +\\n            0.000437130475926232 * Cr -\\n            5.4080610064599e-5 * Y +\\n            0.00048449797120281 * k -\\n            0.154362151871126) +\\n        Cr *\\n          (-0.000957964378445773 * Cr +\\n            0.000817076911346625 * Y -\\n            0.00477271405408747 * k +\\n            1.53380253221734) +\\n        Y *\\n          (0.000961250184130688 * Y -\\n            0.00266257332283933 * k +\\n            0.48357088451265) +\\n        k * (-0.000336197177618394 * k + 0.484791561490776);\\n\\n      data[offset++] =\\n        107.268039397724 +\\n        Cb *\\n          (2.19927104525741e-5 * Cb -\\n            0.000640992018297945 * Cr +\\n            0.000659397001245577 * Y +\\n            0.000426105652938837 * k -\\n            0.176491792462875) +\\n        Cr *\\n          (-0.000778269941513683 * Cr +\\n            0.00130872261408275 * Y +\\n            0.000770482631801132 * k -\\n            0.151051492775562) +\\n        Y *\\n          (0.00126935368114843 * Y -\\n            0.00265090189010898 * k +\\n            0.25802910206845) +\\n        k * (-0.000318913117588328 * k - 0.213742400323665);\\n\\n      data[offset++] =\\n        -20.810012546947 +\\n        Cb *\\n          (-0.000570115196973677 * Cb -\\n            2.63409051004589e-5 * Cr +\\n            0.0020741088115012 * Y -\\n            0.00288260236853442 * k +\\n            0.814272968359295) +\\n        Cr *\\n          (-1.53496057440975e-5 * Cr -\\n            0.000132689043961446 * Y +\\n            0.000560833691242812 * k -\\n            0.195152027534049) +\\n        Y *\\n          (0.00174418132927582 * Y -\\n            0.00255243321439347 * k +\\n            0.116935020465145) +\\n        k * (-0.000343531996510555 * k + 0.24165260232407);\\n    }\\n    \u002F\u002F Ensure that only the converted RGB data is returned.\\n    return data.subarray(0, offset);\\n  }\\n\\n  _convertYcckToRgba(data) {\\n    for (let i = 0, length = data.length; i \u003C length; i += 4) {\\n      const Y = data[i];\\n      const Cb = data[i + 1];\\n      const Cr = data[i + 2];\\n      const k = data[i + 3];\\n\\n      data[i] =\\n        -122.67195406894 +\\n        Cb *\\n          (-6.60635669420364e-5 * Cb +\\n            0.000437130475926232 * Cr -\\n            5.4080610064599e-5 * Y +\\n            0.00048449797120281 * k -\\n            0.154362151871126) +\\n        Cr *\\n          (-0.000957964378445773 * Cr +\\n            0.000817076911346625 * Y -\\n            0.00477271405408747 * k +\\n            1.53380253221734) +\\n        Y *\\n          (0.000961250184130688 * Y -\\n            0.00266257332283933 * k +\\n            0.48357088451265) +\\n        k * (-0.000336197177618394 * k + 0.484791561490776);\\n\\n      data[i + 1] =\\n        107.268039397724 +\\n        Cb *\\n          (2.19927104525741e-5 * Cb -\\n            0.000640992018297945 * Cr +\\n            0.000659397001245577 * Y +\\n            0.000426105652938837 * k -\\n            0.176491792462875) +\\n        Cr *\\n          (-0.000778269941513683 * Cr +\\n            0.00130872261408275 * Y +\\n            0.000770482631801132 * k -\\n            0.151051492775562) +\\n        Y *\\n          (0.00126935368114843 * Y -\\n            0.00265090189010898 * k +\\n            0.25802910206845) +\\n        k * (-0.000318913117588328 * k - 0.213742400323665);\\n\\n      data[i + 2] =\\n        -20.810012546947 +\\n        Cb *\\n          (-0.000570115196973677 * Cb -\\n            2.63409051004589e-5 * Cr +\\n            0.0020741088115012 * Y -\\n            0.00288260236853442 * k +\\n            0.814272968359295) +\\n        Cr *\\n          (-1.53496057440975e-5 * Cr -\\n            0.000132689043961446 * Y +\\n            0.000560833691242812 * k -\\n            0.195152027534049) +\\n        Y *\\n          (0.00174418132927582 * Y -\\n            0.00255243321439347 * k +\\n            0.116935020465145) +\\n        k * (-0.000343531996510555 * k + 0.24165260232407);\\n      data[i + 3] = 255;\\n    }\\n    return data;\\n  }\\n\\n  _convertYcckToCmyk(data) {\\n    let Y, Cb, Cr;\\n    for (let i = 0, length = data.length; i \u003C length; i += 4) {\\n      Y = data[i];\\n      Cb = data[i + 1];\\n      Cr = data[i + 2];\\n      data[i] = 434.456 - Y - 1.402 * Cr;\\n      data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;\\n      data[i + 2] = 481.816 - Y - 1.772 * Cb;\\n      \u002F\u002F K in data[i + 3] is unchanged\\n    }\\n    return data;\\n  }\\n\\n  _convertCmykToRgb(data) {\\n    let c, m, y, k;\\n    let offset = 0;\\n    for (let i = 0, length = data.length; i \u003C length; i += 4) {\\n      c = data[i];\\n      m = data[i + 1];\\n      y = data[i + 2];\\n      k = data[i + 3];\\n\\n      data[offset++] =\\n        255 +\\n        c *\\n          (-0.00006747147073602441 * c +\\n            0.0008379262121013727 * m +\\n            0.0002894718188643294 * y +\\n            0.003264231057537806 * k -\\n            1.1185611867203937) +\\n        m *\\n          (0.000026374107616089405 * m -\\n            0.00008626949158638572 * y -\\n            0.0002748769067499491 * k -\\n            0.02155688794978967) +\\n        y *\\n          (-0.00003878099212869363 * y -\\n            0.0003267808279485286 * k +\\n            0.0686742238595345) -\\n        k * (0.0003361971776183937 * k + 0.7430659151342254);\\n\\n      data[offset++] =\\n        255 +\\n        c *\\n          (0.00013596372813588848 * c +\\n            0.000924537132573585 * m +\\n            0.00010567359618683593 * y +\\n            0.0004791864687436512 * k -\\n            0.3109689587515875) +\\n        m *\\n          (-0.00023545346108370344 * m +\\n            0.0002702845253534714 * y +\\n            0.0020200308977307156 * k -\\n            0.7488052167015494) +\\n        y *\\n          (0.00006834815998235662 * y +\\n            0.00015168452363460973 * k -\\n            0.09751927774728933) -\\n        k * (0.0003189131175883281 * k + 0.7364883807733168);\\n\\n      data[offset++] =\\n        255 +\\n        c *\\n          (0.000013598650411385307 * c +\\n            0.00012423956175490851 * m +\\n            0.0004751985097583589 * y -\\n            0.0000036729317476630422 * k -\\n            0.05562186980264034) +\\n        m *\\n          (0.00016141380598724676 * m +\\n            0.0009692239130725186 * y +\\n            0.0007782692450036253 * k -\\n            0.44015232367526463) +\\n        y *\\n          (5.068882914068769e-7 * y +\\n            0.0017778369011375071 * k -\\n            0.7591454649749609) -\\n        k * (0.0003435319965105553 * k + 0.7063770186160144);\\n    }\\n    \u002F\u002F Ensure that only the converted RGB data is returned.\\n    return data.subarray(0, offset);\\n  }\\n\\n  _convertCmykToRgba(data) {\\n    for (let i = 0, length = data.length; i \u003C length; i += 4) {\\n      const c = data[i];\\n      const m = data[i + 1];\\n      const y = data[i + 2];\\n      const k = data[i + 3];\\n\\n      data[i] =\\n        255 +\\n        c *\\n          (-0.00006747147073602441 * c +\\n            0.0008379262121013727 * m +\\n            0.0002894718188643294 * y +\\n            0.003264231057537806 * k -\\n            1.1185611867203937) +\\n        m *\\n          (0.000026374107616089405 * m -\\n            0.00008626949158638572 * y -\\n            0.0002748769067499491 * k -\\n            0.02155688794978967) +\\n        y *\\n          (-0.00003878099212869363 * y -\\n            0.0003267808279485286 * k +\\n            0.0686742238595345) -\\n        k * (0.0003361971776183937 * k + 0.7430659151342254);\\n\\n      data[i + 1] =\\n        255 +\\n        c *\\n          (0.00013596372813588848 * c +\\n            0.000924537132573585 * m +\\n            0.00010567359618683593 * y +\\n            0.0004791864687436512 * k -\\n            0.3109689587515875) +\\n        m *\\n          (-0.00023545346108370344 * m +\\n            0.0002702845253534714 * y +\\n            0.0020200308977307156 * k -\\n            0.7488052167015494) +\\n        y *\\n          (0.00006834815998235662 * y +\\n            0.00015168452363460973 * k -\\n            0.09751927774728933) -\\n        k * (0.0003189131175883281 * k + 0.7364883807733168);\\n\\n      data[i + 2] =\\n        255 +\\n        c *\\n          (0.000013598650411385307 * c +\\n            0.00012423956175490851 * m +\\n            0.0004751985097583589 * y -\\n            0.0000036729317476630422 * k -\\n            0.05562186980264034) +\\n        m *\\n          (0.00016141380598724676 * m +\\n            0.0009692239130725186 * y +\\n            0.0007782692450036253 * k -\\n            0.44015232367526463) +\\n        y *\\n          (5.068882914068769e-7 * y +\\n            0.0017778369011375071 * k -\\n            0.7591454649749609) -\\n        k * (0.0003435319965105553 * k + 0.7063770186160144);\\n      data[i + 3] = 255;\\n    }\\n    return data;\\n  }\\n\\n  getData({\\n    width,\\n    height,\\n    forceRGBA = false,\\n    forceRGB = false,\\n    isSourcePDF = false,\\n  }) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        isSourcePDF === true,\\n        'JpegImage.getData: Unexpected \\\"isSourcePDF\\\" value for PDF files.'\\n      );\\n    }\\n    if (this.numComponents > 4) {\\n      throw new JpegError(\\\"Unsupported color mode\\\");\\n    }\\n    \u002F\u002F Type of data: Uint8ClampedArray(width * height * numComponents)\\n    const data = this._getLinearizedBlockData(width, height, isSourcePDF);\\n\\n    if (this.numComponents === 1 && (forceRGBA || forceRGB)) {\\n      const len = data.length * (forceRGBA ? 4 : 3);\\n      const rgbaData = new Uint8ClampedArray(len);\\n      let offset = 0;\\n      if (forceRGBA) {\\n        grayToRGBA(data, new Uint32Array(rgbaData.buffer));\\n      } else {\\n        for (const grayColor of data) {\\n          rgbaData[offset++] = grayColor;\\n          rgbaData[offset++] = grayColor;\\n          rgbaData[offset++] = grayColor;\\n        }\\n      }\\n      return rgbaData;\\n    } else if (this.numComponents === 3 && this._isColorConversionNeeded) {\\n      if (forceRGBA) {\\n        const rgbaData = new Uint8ClampedArray((data.length \u002F 3) * 4);\\n        return this._convertYccToRgba(data, rgbaData);\\n      }\\n      return this._convertYccToRgb(data);\\n    } else if (this.numComponents === 4) {\\n      if (this._isColorConversionNeeded) {\\n        if (forceRGBA) {\\n          return this._convertYcckToRgba(data);\\n        }\\n        if (forceRGB) {\\n          return this._convertYcckToRgb(data);\\n        }\\n        return this._convertYcckToCmyk(data);\\n      } else if (forceRGBA) {\\n        return this._convertCmykToRgba(data);\\n      } else if (forceRGB) {\\n        return this._convertCmykToRgb(data);\\n      }\\n    }\\n    return data;\\n  }\\n}\\n\\nexport { JpegError, JpegImage };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { DecodeStream } from \\\".\u002Fdecode_stream.js\\\";\\nimport { Dict } from \\\".\u002Fprimitives.js\\\";\\nimport { JpegImage } from \\\".\u002Fjpg.js\\\";\\nimport { shadow } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\n\u002F**\\n * For JPEG's we use a library to decode these images and the stream behaves\\n * like all the other DecodeStreams.\\n *\u002F\\nclass JpegStream extends DecodeStream {\\n  constructor(stream, maybeLength, params) {\\n    \u002F\u002F Some images may contain 'junk' before the SOI (start-of-image) marker.\\n    \u002F\u002F Note: this seems to mainly affect inline images.\\n    let ch;\\n    while ((ch = stream.getByte()) !== -1) {\\n      \u002F\u002F Find the first byte of the SOI marker (0xFFD8).\\n      if (ch === 0xff) {\\n        stream.skip(-1); \u002F\u002F Reset the stream position to the SOI.\\n        break;\\n      }\\n    }\\n    super(maybeLength);\\n\\n    this.stream = stream;\\n    this.dict = stream.dict;\\n    this.maybeLength = maybeLength;\\n    this.params = params;\\n  }\\n\\n  get bytes() {\\n    \u002F\u002F If `this.maybeLength` is null, we'll get the entire stream.\\n    return shadow(this, \\\"bytes\\\", this.stream.getBytes(this.maybeLength));\\n  }\\n\\n  ensureBuffer(requested) {\\n    \u002F\u002F No-op, since `this.readBlock` will always parse the entire image and\\n    \u002F\u002F directly insert all of its data into `this.buffer`.\\n  }\\n\\n  readBlock() {\\n    if (this.eof) {\\n      return;\\n    }\\n    const jpegOptions = {\\n      decodeTransform: undefined,\\n      colorTransform: undefined,\\n    };\\n\\n    \u002F\u002F Checking if values need to be transformed before conversion.\\n    const decodeArr = this.dict.getArray(\\\"D\\\", \\\"Decode\\\");\\n    if ((this.forceRGBA || this.forceRGB) && Array.isArray(decodeArr)) {\\n      const bitsPerComponent = this.dict.get(\\\"BPC\\\", \\\"BitsPerComponent\\\") || 8;\\n      const decodeArrLength = decodeArr.length;\\n      const transform = new Int32Array(decodeArrLength);\\n      let transformNeeded = false;\\n      const maxValue = (1 \u003C\u003C bitsPerComponent) - 1;\\n      for (let i = 0; i \u003C decodeArrLength; i += 2) {\\n        transform[i] = ((decodeArr[i + 1] - decodeArr[i]) * 256) | 0;\\n        transform[i + 1] = (decodeArr[i] * maxValue) | 0;\\n        if (transform[i] !== 256 || transform[i + 1] !== 0) {\\n          transformNeeded = true;\\n        }\\n      }\\n      if (transformNeeded) {\\n        jpegOptions.decodeTransform = transform;\\n      }\\n    }\\n    \u002F\u002F Fetching the 'ColorTransform' entry, if it exists.\\n    if (this.params instanceof Dict) {\\n      const colorTransform = this.params.get(\\\"ColorTransform\\\");\\n      if (Number.isInteger(colorTransform)) {\\n        jpegOptions.colorTransform = colorTransform;\\n      }\\n    }\\n    const jpegImage = new JpegImage(jpegOptions);\\n\\n    jpegImage.parse(this.bytes);\\n    const data = jpegImage.getData({\\n      width: this.drawWidth,\\n      height: this.drawHeight,\\n      forceRGBA: this.forceRGBA,\\n      forceRGB: this.forceRGB,\\n      isSourcePDF: true,\\n    });\\n    this.buffer = data;\\n    this.bufferLength = data.length;\\n    this.eof = true;\\n  }\\n}\\n\\nexport { JpegStream };\\n\",\"\\nvar OpenJPEG = (() => {\\n  var _scriptName = typeof document != 'undefined' ? document.currentScript?.src : undefined;\\n  \\n  return (\\nfunction(moduleArg = {}) {\\n  var moduleRtn;\\n\\nvar Module=Object.assign({},moduleArg);var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=true;var ENVIRONMENT_IS_WORKER=false;Module.decode=function(bytes,ignoreColorSpace){const size=bytes.length;const ptr=Module._malloc(size);Module.HEAPU8.set(bytes,ptr);const ret=Module._jp2_decode(ptr,size,ignoreColorSpace?1:0);Module._free(ptr);if(ret){const{errorMessages:errorMessages}=Module;if(errorMessages){delete Module.errorMessages;return errorMessages}return\\\"Unknown error\\\"}const{imageData:imageData}=Module;Module.imageData=null;return imageData};var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram=\\\".\u002Fthis.program\\\";var quit_=(status,toThrow)=>{throw toThrow};var scriptDirectory=\\\"\\\";var read_,readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=\\\"undefined\\\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith(\\\"blob:\\\")){scriptDirectory=\\\"\\\"}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(\u002F[?#].*\u002F,\\\"\\\").lastIndexOf(\\\"\u002F\\\")+1)}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open(\\\"GET\\\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open(\\\"GET\\\",url,false);xhr.responseType=\\\"arraybuffer\\\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open(\\\"GET\\\",url,true);xhr.responseType=\\\"arraybuffer\\\";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}}else{}var out=Module[\\\"print\\\"]||console.log.bind(console);var err=Module[\\\"printErr\\\"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module[\\\"arguments\\\"])arguments_=Module[\\\"arguments\\\"];if(Module[\\\"thisProgram\\\"])thisProgram=Module[\\\"thisProgram\\\"];if(Module[\\\"quit\\\"])quit_=Module[\\\"quit\\\"];var wasmBinary;if(Module[\\\"wasmBinary\\\"])wasmBinary=Module[\\\"wasmBinary\\\"];function intArrayFromBase64(s){var decoded=atob(s);var bytes=new Uint8Array(decoded.length);for(var i=0;i\u003Cdecoded.length;++i){bytes[i]=decoded.charCodeAt(i)}return bytes}function tryParseAsDataURI(filename){if(!isDataURI(filename)){return}return intArrayFromBase64(filename.slice(dataURIPrefix.length))}var wasmMemory;var ABORT=false;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module[\\\"HEAP8\\\"]=HEAP8=new Int8Array(b);Module[\\\"HEAP16\\\"]=HEAP16=new Int16Array(b);Module[\\\"HEAPU8\\\"]=HEAPU8=new Uint8Array(b);Module[\\\"HEAPU16\\\"]=HEAPU16=new Uint16Array(b);Module[\\\"HEAP32\\\"]=HEAP32=new Int32Array(b);Module[\\\"HEAPU32\\\"]=HEAPU32=new Uint32Array(b);Module[\\\"HEAPF32\\\"]=HEAPF32=new Float32Array(b);Module[\\\"HEAPF64\\\"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module[\\\"preRun\\\"]){if(typeof Module[\\\"preRun\\\"]==\\\"function\\\")Module[\\\"preRun\\\"]=[Module[\\\"preRun\\\"]];while(Module[\\\"preRun\\\"].length){addOnPreRun(Module[\\\"preRun\\\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module[\\\"postRun\\\"]){if(typeof Module[\\\"postRun\\\"]==\\\"function\\\")Module[\\\"postRun\\\"]=[Module[\\\"postRun\\\"]];while(Module[\\\"postRun\\\"].length){addOnPostRun(Module[\\\"postRun\\\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;Module[\\\"monitorRunDependencies\\\"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module[\\\"monitorRunDependencies\\\"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}var dataURIPrefix=\\\"data:application\u002Foctet-stream;base64,\\\";var isDataURI=filename=>filename.startsWith(dataURIPrefix);function findWasmBinary(){var f=\\\"data:application\u002Foctet-stream;base64,AGFzbQEAAAABzgEaYAN\u002Ff38Bf2AEf39\u002FfwF\u002FYAF\u002FAGACf38AYAF\u002FAX9gA39\u002FfwBgAn9\u002FAX9gBH9\u002Ff38AYAN\u002Ffn8BfmACfn8Bf2AFf39\u002Ff38Bf2ACfn8BfmADf35\u002FAX9gAAF\u002FYAd\u002Ff39\u002Ff39\u002FAX9gBX9\u002Ff39\u002FAGAJf39\u002Ff39\u002Ff39\u002FAX9gC39\u002Ff39\u002Ff39\u002Ff39\u002FAX9gBn9\u002Ff39\u002FfwF\u002FYAZ\u002FfH9\u002Ff38Bf2AIf39\u002Ff39\u002Ff38AYAh\u002Ff39\u002Ff39\u002FfwF\u002FYAAAYAZ\u002Ff39\u002Ff38AYAd\u002Ff39\u002Ff39\u002FAGACfH8BfAIxCAFhAWEAAgFhAWIABAFhAWMABgFhAWQABgFhAWUAAQFhAWYABQFhAWcAAgFhAWgAAwO+AbwBBwIFAAYEAAUGBQEEDwUEFAIGAgYCAgAQEQQCCRICBQICAgQHBAINDAYCFQMHAAAEAwEWCgoDAAoGAQQEBQUNDgEBAwADBgIQBBcYAgcGAwcHAQECAAQEGQYHBA4PAAQCAgIABgAGAQEBAQEBAQEAAAAAAAYDAgICAwMDAwMAAxMIBA0AAwMABAgJCwgAAAEBAQEBAQEBDAEABAQFCg4BEhEBAAAGAwMBBQUFBQUFBQUBCwEBAQEBAQEBAQkEBQFwAWxsBQcBAYICgIACBggBfwFBgNgFCwcbBgFpAgABagA6AWsAjwEBbAAJAW0BAAFuAI4BCbIBAQBBAQtrSsMBuQFsbC+eAZMBkAGEAYMBggGBAYABf359S3p5eHd2dXRzcnFwb27CAcEBwAG\u002FAb4BvQE5vAG7ATk5ugG4AbcBtgG1AbQBswGyAbEBsAGqAZ8BnQGcAZsBmgGZAZgBlwGWAZUBlAGSAZEBQkNFS0F8TDFJe0g+P0ckIKIBoQGjAasBrwGsAaYBoAGkAaUBrQGuAWmnAagBqQFKjQGMAYUBhwGGAYkBiwGIAQqAuA28AYICAQN\u002FIwBBkARrIgQkAAJAIABFDQACQAJAAkACQCABQQFrDgQAAQQCBAsgAEEMaiEBDAILIABBEGohASAAQQRqIQAMAQsgAEEUaiEBIABBCGohAAsgASgCACIFRQ0AIAJFDQAgACgCACEGIARBAEGABBAOIgEgAzYCjAQjAEGgAWsiACQAIAAgATYClAEgAEH\u002FAzYCmAEgAEEAQZABEA4iAEF\u002FNgJMIABB5gA2AiQgAEF\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\u002F\u002F\u002F\u002FB3EhCgNAIAAgAUEBajYCACABLQAAIQkgACABQQJqIgY2AgAgACACQQFrNgIYIAEtAAEhASAAIAJBAmsiAjYCGCAEQf8BIAN0QX9zcSAJIAN0ckGA\u002FgMgA3RBf3NxIAEgA0EIcnRyIQQgA0EQaiEDIAYhASAFQQJqIgUgCkcNAAsLQQAhBSAMRQ0AIAAgBkEBajYCACAGLQAAIQEgACACQQFrNgIYIARB\u002FwEgA3RBf3NxIAEgA3RyIQQLIAAoAhQhASAAIARBGHYiCkH\u002FAUY2AhQgAEEHQQggARsiAUEHQQggBEH\u002FAXEiBkH\u002FAUYbaiICQQdBCCAEQQh2Qf8BcSIDQf8BRhtqIglBB0EIIARBEHZB\u002FwFxIgRB\u002FwFGGyAHamoiCDYCECAAIAApAwggAyABdCAEIAJ0ciAKIAl0ciAGcq0gB62GhCIONwMIIAhBH00EQAJAIAVBBE4EQCAAKAIAIgEoAgAhAiAAIAVBBGs2AhggACABQQRqNgIADAELQQAhA0F\u002FQQAgACgCHBshAiAFQQBMDQAgBUEBcSENIAAoAgAhAQJAIAVBAUYEQCABIQQMAQsgBUH+\u002F\u002F\u002F\u002FB3EhCUEAIQYDQCAAIAFBAWo2AgAgAS0AACELIAAgAUECaiIENgIAIAAgBUEBazYCGCABLQABIQEgACAFQQJrIgU2AhggAkH\u002FASADdEF\u002Fc3EgCyADdHJBgP4DIAN0QX9zcSABIANBCHJ0ciECIANBEGohAyAEIQEgBkECaiIGIAlHDQALCyANRQ0AIAAgBEEBajYCACAELQAAIQEgACAFQQFrNgIYIAJB\u002FwEgA3RBf3NxIAEgA3RyIQILIAAgAkEYdiIBQf8BRjYCFCAAQQdBCCAKQf8BRhsiBEEHQQggAkH\u002FAXEiBkH\u002FAUYbaiIFQQdBCCACQQh2Qf8BcSIDQf8BRhtqIgdBB0EIIAJBEHZB\u002FwFxIgJB\u002FwFGGyAIamo2AhAgACADIAR0IAIgBXRyIAEgB3RyIAZyrSAIrYYgDoQiDjcDCAsgDqcLawEBfyMAQYACayIFJAACQCACIANMDQAgBEGAwARxDQAgBSABIAIgA2siA0GAAiADQYACSSIBGxAOGiABRQRAA0AgACAFQYACEBEgA0GAAmsiA0H\u002FAUsNAAsLIAAgBSADEBELIAVBgAJqJAALMQAgAQJ\u002FIAIoAkxBAEgEQCAAIAEgAhA2DAELIAAgASACEDYLIgBGBEAPCyAAIAFuGgs3AQJ\u002FIwBBEGsiASQAIAAEfyABQQxqQRAgABBlIQBBACABKAIMIAAbBUEACyECIAFBEGokACACCxcAIAAgASACIAMgBCAFIAYgB0EBEB8aC2oBA38gAARAIAAoAhgiAQRAIAAoAhAiAgR\u002FQQAhAQNAIAAoAhggAUE0bGooAiwiAwRAIAMQCSAAKAIQIQILIAFBAWoiASACSQ0ACyAAKAIYBSABCxAJCyAAKAIcIgEEQCABEAkLIAAQCQsLoQEBBH8gAUEATARAQQAPCyAAKAIMIQIgACgCECEDA0AgASEFAkAgAw0AIAAgAkEIdEGA\u002FgNxIgI2AgwgAEEHQQggAkGA\u002FgNGGyIDNgIQIAAoAggiASAAKAIETw0AIAAgAUEBajYCCCAAIAIgAS0AAHIiAjYCDAsgACADQQFrIgM2AhAgAiADdkEBcSAFQQFrIgF0IARyIQQgBUEBSw0ACyAECx4AIAAoAgwEQCAAQQA2AigDQCAAKAIYQQBKDQALCwuTBAIGfwJ+AkACQANAIAAgAEEBa3ENASABQUdLDQEgAEEIIABBCEsiBxshAEGozgEpAwAiCAJ\u002FQQggAUEDakF8cSABQQhNGyIBQf8ATQRAIAFBA3ZBAWsMAQsgAWchAyABQR0gA2t2QQRzIANBAnRrQe4AaiABQf8fTQ0AGkE\u002FIAFBHiADa3ZBAnMgA0EBdGtBxwBqIgMgA0E\u002FTxsLIgOtiCIJQgBSBEADQCAJIAl6IgiIIQkCfiADIAinaiIDQQR0IgRBqMYBaigCACICIARBoMYBaiIFRwRAIAIgACABEDUiBA0GIAIoAgQiBCACKAIIIgY2AgggBiAENgIEIAIgBTYCCCACIAUoAgQ2AgQgBSACNgIEIAIoAgQgAjYCCCADQQFqIQMgCUIBiAwBC0GozgFBqM4BKQMAQn4gA62JgzcDACAJQgGFCyIJQgBSDQALQajOASkDACEIC0E\u002FIAh5p2shBQJAIAhQBEBBACECDAELIAVBBHQiBEGoxgFqKAIAIQIgCEKAgICABFQNAEHjACEDIAIgBEGgxgFqIgZGDQADQCADRQ0BIAIgACABEDUiBA0EIANBAWshAyACKAIIIgIgBkcNAAsLIAEgAEEwakEwIAcbahBmDQALIAJFDQAgAiAFQQR0QaDGAWoiA0YNAANAIAIgACABEDUiBA0CIAIoAggiAiADRw0ACwtBACEECyAEC5IVAQ9\u002FAkACQCAAKAIMRQRAQQEhDyAAKAIEQQBKDQEgACgCCEEBSg0BDAILQQEhDSAAKAIIQQBKDQAgACgCBEECSA0BCyAAKAIAIgggDUEFdGohBAJAIAAoAhAiByAAKAIUIgpPDQAgBCAHQQZ0aiEBAkAgCiAHa0EDcSIGRQRAIAchAgwBCyAHIQIDQCABIAH9AAQA\u002FQxYdp0\u002FWHadP1h2nT9Ydp0\u002F\u002FeYB\u002FQsEACABIAH9AAQQ\u002FQxYdp0\u002FWHadP1h2nT9Ydp0\u002F\u002FeYB\u002FQsEECABQUBrIQEgAkEBaiECIANBAWoiAyAGRw0ACwsgByAKa0F8Sw0AA0AgASAB\u002FQAEAP0MWHadP1h2nT9Ydp0\u002FWHadP\u002F3mAf0LBAAgASAB\u002FQAEEP0MWHadP1h2nT9Ydp0\u002FWHadP\u002F3mAf0LBBAgASAB\u002FQAEQP0MWHadP1h2nT9Ydp0\u002FWHadP\u002F3mAf0LBEAgASAB\u002FQAEUP0MWHadP1h2nT9Ydp0\u002FWHadP\u002F3mAf0LBFAgASAB\u002FQAEgAH9DFh2nT9Ydp0\u002FWHadP1h2nT\u002F95gH9CwSAASABIAH9AASQAf0MWHadP1h2nT9Ydp0\u002FWHadP\u002F3mAf0LBJABIAEgAf0ABMAB\u002FQxYdp0\u002FWHadP1h2nT9Ydp0\u002F\u002FeYB\u002FQsEwAEgASAB\u002FQAE0AH9DFh2nT9Ydp0\u002FWHadP1h2nT\u002F95gH9CwTQASABQYACaiEBIAJBBGoiAiAKRw0ACwsgCCAPQQV0aiEFAkAgACgCGCIGIAAoAhwiC08NACAFIAZBBnRqIQECQCALIAZrQQNxIghFBEAgBiECDAELQQAhAyAGIQIDQCABIAH9AAQA\u002FQwAGNA\u002FABjQPwAY0D8AGNA\u002F\u002FeYB\u002FQsEACABIAH9AAQQ\u002FQwAGNA\u002FABjQPwAY0D8AGNA\u002F\u002FeYB\u002FQsEECABQUBrIQEgAkEBaiECIANBAWoiAyAIRw0ACwsgBiALa0F8Sw0AA0AgASAB\u002FQAEAP0MABjQPwAY0D8AGNA\u002FABjQP\u002F3mAf0LBAAgASAB\u002FQAEEP0MABjQPwAY0D8AGNA\u002FABjQP\u002F3mAf0LBBAgASAB\u002FQAEQP0MABjQPwAY0D8AGNA\u002FABjQP\u002F3mAf0LBEAgASAB\u002FQAEUP0MABjQPwAY0D8AGNA\u002FABjQP\u002F3mAf0LBFAgASAB\u002FQAEgAH9DAAY0D8AGNA\u002FABjQPwAY0D\u002F95gH9CwSAASABIAH9AASQAf0MABjQPwAY0D8AGNA\u002FABjQP\u002F3mAf0LBJABIAEgAf0ABMAB\u002FQwAGNA\u002FABjQPwAY0D8AGNA\u002F\u002FeYB\u002FQsEwAEgASAB\u002FQAE0AH9DAAY0D8AGNA\u002FABjQPwAY0D\u002F95gH9CwTQASABQYACaiEBIAJBBGoiAiALRw0ACwsgCiAAKAIIIgkgACgCBCIOIA1rIgAgACAJShsiCCAIIApLGyEMIARBIGohAQJ\u002FIAdFBEAgDEUEQEEAIQMgAQwCCyAEIAT9AAQAIAX9AAQAIAT9AAQg\u002FeQB\u002FQxVE+M+VRPjPlUT4z5VE+M+\u002FeYB\u002FeUB\u002FQsEACAEIAT9AAQQIAX9AAQQIAT9AAQw\u002FeQB\u002FQxVE+M+VRPjPlUT4z5VE+M+\u002FeYB\u002FeUB\u002FQsEEEEBIQMgBEHgAGoMAQsgASAHIgNBBnRqCyECIAMgDEkEQANAIAJBIGsiACAA\u002FQAEACACQUBq\u002FQAEACAC\u002FQAEAP3kAf0MVRPjPlUT4z5VE+M+VRPjPv3mAf3lAf0LBAAgAkEQayIAIAD9AAQAIAJBMGv9AAQAIAL9AAQQ\u002FeQB\u002FQxVE+M+VRPjPlUT4z5VE+M+\u002FeYB\u002FeUB\u002FQsEACACQUBrIQIgA0EBaiIDIAxHDQALCyAIIApPIg1FBEAgAkEgayIAIAD9AAQAIAJBQGr9AAQA\u002FQxVE2M\u002FVRNjP1UTYz9VE2M\u002F\u002FeYB\u002FeUB\u002FQsEACACQRBrIgAgAP0ABAAgAkEwa\u002F0ABAD9DFUTYz9VE2M\u002FVRNjP1UTYz\u002F95gH95QH9CwQACyALIA4gCSAPayIAIAAgDkobIg4gCyAOSRshCSAFQSBqIQIgCQJ\u002FIAZFBEAgCUUEQCACIQNBAAwCCyAFIAX9AAQAIAT9AAQAIAX9AAQg\u002FeQB\u002FQx2BmI\u002FdgZiP3YGYj92BmI\u002F\u002FeYB\u002FeUB\u002FQsEACAFIAX9AAQQIAT9AAQQIAX9AAQw\u002FeQB\u002FQx2BmI\u002FdgZiP3YGYj92BmI\u002F\u002FeYB\u002FeUB\u002FQsEECAFQeAAaiEDQQEMAQsgAiAGQQZ0aiEDIAYLIgBLBEADQCADQSBrIgggCP0ABAAgA0FAav0ABAAgA\u002F0ABAD95AH9DHYGYj92BmI\u002FdgZiP3YGYj\u002F95gH95QH9CwQAIANBEGsiCCAI\u002FQAEACADQTBr\u002FQAEACAD\u002FQAEEP3kAf0MdgZiP3YGYj92BmI\u002FdgZiP\u002F3mAf3lAf0LBAAgA0FAayEDIABBAWoiACAJRw0ACwsgCyAOTSIIRQRAIANBIGsiACAA\u002FQAEACADQUBq\u002FQAEAP0MdgbiP3YG4j92BuI\u002FdgbiP\u002F3mAf3lAf0LBAAgA0EQayIAIAD9AAQAIANBMGv9AAQA\u002FQx2BuI\u002FdgbiP3YG4j92BuI\u002F\u002FeYB\u002FeUB\u002FQsEAAsCQCAHRQRAIAxFBEBBACEHDAILIAQgBP0ABAAgBf0ABAAgBP0ABCD95AH9DK4BWT2uAVk9rgFZPa4BWT395gH95AH9CwQAIAQgBP0ABBAgBf0ABBAgBP0ABDD95AH9DK4BWT2uAVk9rgFZPa4BWT395gH95AH9CwQQIARB4ABqIQFBASEHDAELIAEgB0EGdGohAQsgByAMSQRAA0AgAUEgayIAIAD9AAQAIAFBQGr9AAQAIAH9AAQA\u002FeQB\u002FQyuAVk9rgFZPa4BWT2uAVk9\u002FeYB\u002FeQB\u002FQsEACABQRBrIgAgAP0ABAAgAUEwa\u002F0ABAAgAf0ABBD95AH9DK4BWT2uAVk9rgFZPa4BWT395gH95AH9CwQAIAFBQGshASAHQQFqIgcgDEcNAAsLIA1FBEAgAUEgayIAIAD9AAQAIAFBQGr9AAQA\u002FQyuAdk9rgHZPa4B2T2uAdk9\u002FeYB\u002FeQB\u002FQsEACABQRBrIgAgAP0ABAAgAUEwa\u002F0ABAD9DK4B2T2uAdk9rgHZPa4B2T395gH95AH9CwQACwJAIAZFBEAgCUUEQEEAIQYMAgsgBSAF\u002FQAEACAE\u002FQAEACAF\u002FQAEIP3kAf0McwbLP3MGyz9zBss\u002FcwbLP\u002F3mAf3kAf0LBAAgBSAF\u002FQAEECAE\u002FQAEECAF\u002FQAEMP3kAf0McwbLP3MGyz9zBss\u002FcwbLP\u002F3mAf3kAf0LBBAgBUHgAGohAkEBIQYMAQsgAiAGQQZ0aiECCyAGIAlJBEADQCACQSBrIgAgAP0ABAAgAkFAav0ABAAgAv0ABAD95AH9DHMGyz9zBss\u002FcwbLP3MGyz\u002F95gH95AH9CwQAIAJBEGsiACAA\u002FQAEACACQTBr\u002FQAEACAC\u002FQAEEP3kAf0McwbLP3MGyz9zBss\u002FcwbLP\u002F3mAf3kAf0LBAAgAkFAayECIAZBAWoiBiAJRw0ACwsgCA0AIAJBIGsiACAA\u002FQAEACACQUBq\u002FQAEAP0McwZLQHMGS0BzBktAcwZLQP3mAf3kAf0LBAAgAkEQayIAIAD9AAQAIAJBMGv9AAQA\u002FQxzBktAcwZLQHMGS0BzBktA\u002FeYB\u002FeQB\u002FQsEAAsLXQEEfyAABEAgACgCFCIBIAAoAhAiAmwEQANAIAAoAhggA0ECdGooAgAiBARAIAQQCSAAKAIQIQIgACgCFCEBCyADQQFqIgMgASACbEkNAAsLIAAoAhgQCSAAEAkLC4UBAQJ\u002FAkACQCAAKAIEIgMgACgCACIERwRAIAAoAgghAwwBCyAAIANBCmoiBDYCBCAAKAIIIARBAnQQECIDRQ0BIAAgAzYCCCAAKAIAIQQLIAMgBEECdGogATYCACAAIARBAWo2AgBBAQ8LIAAoAggQCSAAQgA3AgAgAkEBQdIuQQAQCEEAC9gjAip\u002FA3sCQCAAKAIAIgkgA0kNACABIANPDQAgASAJTw0AIAAoAgQiCSAESQ0AIAIgBE8NACACIAlPDQAgBUEcayEoIAAoAggiGUECdCERIAdBAnQhDyAGQQJ0IR8gBUEEayEpIAIgACgCDG4hHiABIBluISMgBkEIRyEkIAIhHQNAIAAoAgwiCSEKIAIgHUYEQCAJIAIgCXBrIQoLIAogBCAdayIMIAogDEkbIhNBfHEhGyATQQNxIRYgE0F4cSEqIBNBB3EhJSATQQFrIRogGSAJQQJ0IApBAnRrQQRqbCEgIAZBAkYgE0EBRnEhKyAJIAprIBlsISYgKCAPIB0gAmsiDGwiCWohJyAJIClqISwgBSAJaiEtIAUgByAMbEECdGohHCAjISEgASEYA0AgGSAZICNsIAFraiAZIAEgGEYbIgwgAyAYayIJIAkgDEsbIRAgGSAMayEJICFBAnQiDSAAKAIYIAAoAhAgHmxBAnRqaigCACESAkACQCAIBEACQAJAAkACQAJAIBIEQCASICZBAnRqIAlBAnRqIQogGCABayENIAZBAUYNBCAcIAYgDWxBAnRqIQsgEEEBRg0DICsNAiAkDQEgEEEHTQ0BIBNFDQggJyANIB9saiAQQQV0aiEVIBIgICAQQQJ0aiAMQQJ0a2ohIiAQQXxxIQ1BACESDAULIAZBAUcEQCATRQ0IIBBBfHEhDSAQQQNxIQwgHCAYIAFrIAZsQQJ0aiELQQAhEiAQQQFrQQNJIRQDQAJAIBBFDQBBACEJQQAhCkEAIQ4gFEUEQANAIAsgBiAKbEECdGpBADYCACALIApBAXIgBmxBAnRqQQA2AgAgCyAKQQJyIAZsQQJ0akEANgIAIAsgCkEDciAGbEECdGpBADYCACAKQQRqIQogDkEEaiIOIA1HDQALCyAMRQ0AA0AgCyAGIApsQQJ0akEANgIAIApBAWohCiAJQQFqIgkgDEcNAAsLIAsgD2ohCyATIBJBAWoiEkcNAAsMCAsgE0UNByAQQQJ0IQwgHCAYIAFrQQJ0aiELQQAhCSAaQQdPBEADQCALQQAgDBAOIA9qQQAgDBAOIA9qQQAgDBAOIA9qQQAgDBAOIA9qQQAgDBAOIA9qQQAgDBAOIA9qQQAgDBAOIA9qQQAgDBAOIA9qIQsgCUEIaiIJICpHDQALC0EAIQkgJUUNBwNAIAtBACAMEA4gD2ohCyAJQQFqIgkgJUcNAAsMBwsgE0UNBiAQQXxxIRQgEEEDcSESQQAhDSAQQQFrQQNJIRcMBQtBACEJIBBBfHEiDgRAA0AgCyAJQQN0aiAKIAlBAnRqKAIANgIAIAsgCUEBciIUQQN0aiAKIBRBAnRqKAIANgIAIAsgCUECciIUQQN0aiAKIBRBAnRqKAIANgIAIAsgCUEDciIUQQN0aiAKIBRBAnRqKAIANgIAIAlBBGoiCSAOSQ0ACwsgCSAQTw0FAkAgECAJayIUQRBJDQAgLSANIB9sIg1qIAlBA3RqIBIgIGoiDiAQIAxrQQJ0akkEQCAOIAkgDGtBAnRqIA0gLGogEEEDdGpJDQELIAogCUECdGohDSAJ\u002FRH9DAAAAAABAAAAAgAAAAMAAAD9rgEhMyAJIBRBfHEiDGohCUEAIQ4DQCALIDNBAf2rASI0\u002FRsAQQJ0aiANIA5BAnRq\u002FQACACI1\u002FVoCAAAgCyA0\u002FRsBQQJ0aiA1\u002FVoCAAEgCyA0\u002FRsCQQJ0aiA1\u002FVoCAAIgCyA0\u002FRsDQQJ0aiA1\u002FVoCAAMgM\u002F0MBAAAAAQAAAAEAAAABAAAAP2uASEzIA5BBGoiDiAMRw0ACyAMIBRGDQYLQQAhDCAJIQ4gECAJa0EDcSINBEADQCALIA5BA3RqIAogDkECdGooAgA2AgAgDkEBaiEOIAxBAWoiDCANRw0ACwsgCSAQa0F8Sw0FA0AgCyAOQQN0aiAKIA5BAnRqKAIANgIAIAsgDkEBaiIJQQN0aiAKIAlBAnRqKAIANgIAIAsgDkECaiIJQQN0aiAKIAlBAnRqKAIANgIAIAsgDkEDaiIJQQN0aiAKIAlBAnRqKAIANgIAIA5BBGoiDiAQRw0ACwwFCyATRQ0EQQAhCSAaQQNPBEADQCALIAooAgA2AgAgCyAPaiIMIAogEWoiDSgCADYCACAMIA9qIgwgDSARaiINKAIANgIAIAwgD2oiDCANIBFqIg0oAgA2AgAgDSARaiEKIAwgD2ohCyAJQQRqIgkgG0cNAAsLQQAhCSAWRQ0EA0AgCyAKKAIANgIAIAogEWohCiALIA9qIQsgCUEBaiIJIBZHDQALDAQLIBwgDUECdGohCyAQQQRHBEAgE0UNBCAQQQJ0IQlBACEOIBpBA08EQANAIAsgCiAJEAshLyAKIBFqIg0gEWoiCyARaiISIBFqIQogLyAPaiANIAkQCyAPaiALIAkQCyAPaiASIAkQCyAPaiELIA5BBGoiDiAbRw0ACwtBACEOIBZFDQQDQCALIAogCRALITAgCiARaiEKIDAgD2ohCyAOQQFqIg4gFkcNAAsMBAsgE0UNA0EAIQkgGkEDTwRAA0AgCyAK\u002FQACAP0LAgAgCyAPaiIMIAogEWoiDf0AAgD9CwIAIAwgD2oiDCANIBFqIg39AAIA\u002FQsCACAMIA9qIgwgDSARaiIN\u002FQACAP0LAgAgDSARaiEKIAwgD2ohCyAJQQRqIgkgG0cNAAsLQQAhCSAWRQ0DA0AgCyAK\u002FQACAP0LAgAgCiARaiEKIAsgD2ohCyAJQQFqIgkgFkcNAAsMAwsDQEEAIQkgDQRAA0AgCyAJQQV0aiAKIAlBAnRqKAIANgIAIAsgCUEBciIMQQV0aiAKIAxBAnRqKAIANgIAIAsgCUECciIMQQV0aiAKIAxBAnRqKAIANgIAIAsgCUEDciIMQQV0aiAKIAxBAnRqKAIANgIAIAlBBGoiCSANSQ0ACwsCQCAJIBBPDQACQCAQIAlrIhRBCE8EQAJAIAsgCUEFdGogIiARIBJsak8NACAKIAlBAnRqIBUgDyASbGpPDQAgCSEMDAILIAn9Ef0MAAAAAAEAAAACAAAAAwAAAP2uASEzIAkgFEF8cSIXaiEMQQAhDgNAIAsgM0ED\u002FasBIjT9GwBBAnRqIAogCSAOakECdGr9AAIAIjX9WgIAACALIDT9GwFBAnRqIDX9WgIAASALIDT9GwJBAnRqIDX9WgIAAiALIDT9GwNBAnRqIDX9WgIAAyAz\u002FQwEAAAABAAAAAQAAAAEAAAA\u002Fa4BITMgDkEEaiIOIBdHDQALIBQgF0YNAgwBCyAJIQwLQQAhDiAQIAwiCWtBA3EiFARAA0AgCyAJQQV0aiAKIAlBAnRqKAIANgIAIAlBAWohCSAOQQFqIg4gFEcNAAsLIAwgEGtBfEsNAANAIAsgCUEFdGogCiAJQQJ0aigCADYCACALIAlBAWoiDEEFdGogCiAMQQJ0aigCADYCACALIAlBAmoiDEEFdGogCiAMQQJ0aigCADYCACALIAlBA2oiDEEFdGogCiAMQQJ0aigCADYCACAJQQRqIgkgEEcNAAsLIAogEWohCiALIA9qIQsgEyASQQFqIhJHDQALDAILIBJFBEBBASAAKAIIIAAoAgxsQQJ0EAwiEkUEQEEADwsgACgCGCAAKAIQIB5sQQJ0aiANaiASNgIACyASICZBAnRqIAlBAnRqIQsgGCABayEJAkACQAJAAkAgBkEBRwRAIBwgBiAJbEECdGohCiAQQQFGDQEgJA0CIBBBB00NAiATRQ0GICcgCSAfbGogEEEFdGohIiAgIBBBAnRqIAxBAnRrIS4gEEF8cSEUQQAhDANAQQAhCSAUBEADQCALIAlBAnRqIAogCUEFdGooAgA2AgAgCyAJQQFyIg1BAnRqIAogDUEFdGooAgA2AgAgCyAJQQJyIg1BAnRqIAogDUEFdGooAgA2AgAgCyAJQQNyIg1BAnRqIAogDUEFdGooAgA2AgAgCUEEaiIJIBRJDQALCwJAIAkgEE8NAAJAIBAgCWsiF0EITwRAAkAgCyAJQQJ0aiAiIAwgD2xqTw0AIAogCUEFdGogEiAuIAwgEWxqak8NACAJIQ0MAgsgCf0R\u002FQwAAAAAAQAAAAIAAAADAAAA\u002Fa4BITMgCSAXQXxxIhVqIQ1BACEOA0AgCyAJIA5qQQJ0aiAKIDNBA\u002F2rASI0\u002FRsDQQJ0aiAKIDT9GwJBAnRqIAogNP0bAUECdGogCiA0\u002FRsAQQJ0av0JAgD9VgIAAf1WAgAC\u002FVYCAAP9CwIAIDP9DAQAAAAEAAAABAAAAAQAAAD9rgEhMyAOQQRqIg4gFUcNAAsgFSAXRg0CDAELIAkhDQtBACEOIBAgDSIJa0EDcSIXBEADQCALIAlBAnRqIAogCUEFdGooAgA2AgAgCUEBaiEJIA5BAWoiDiAXRw0ACwsgDSAQa0F8Sw0AA0AgCyAJQQJ0aiAKIAlBBXRqKAIANgIAIAsgCUEBaiINQQJ0aiAKIA1BBXRqKAIANgIAIAsgCUECaiINQQJ0aiAKIA1BBXRqKAIANgIAIAsgCUEDaiINQQJ0aiAKIA1BBXRqKAIANgIAIAlBBGoiCSAQRw0ACwsgCyARaiELIAogD2ohCiATIAxBAWoiDEcNAAsMBgsgHCAJQQJ0aiEKIBBBBEYNAiATRQ0FIBBBAnQhCUEAIQ4gGkEDTwRAA0AgCyAKIAkQCyExIAogD2oiDSAPaiILIA9qIhIgD2ohCiAxIBFqIA0gCRALIBFqIAsgCRALIBFqIBIgCRALIBFqIQsgDkEEaiIOIBtHDQALC0EAIQ4gFkUNBQNAIAsgCiAJEAshMiAKIA9qIQogMiARaiELIA5BAWoiDiAWRw0ACwwFCyATRQ0EQQAhCSAaQQNPBEADQCALIAooAgA2AgAgCyARaiIMIAogD2oiDSgCADYCACAMIBFqIgwgDSAPaiINKAIANgIAIAwgEWoiDCANIA9qIg0oAgA2AgAgDCARaiELIA0gD2ohCiAJQQRqIgkgG0cNAAsLQQAhCSAWRQ0EA0AgCyAKKAIANgIAIAsgEWohCyAKIA9qIQogCUEBaiIJIBZHDQALDAQLIBNFDQMgEEF8cSEUIBBBA3EhEkEAIQ0gEEEBa0EDSSEXDAELIBNFDQJBACEJIBpBA08EQANAIAsgCv0AAgD9CwIAIAsgEWoiDCAKIA9qIg39AAIA\u002FQsCACAMIBFqIgwgDSAPaiIN\u002FQACAP0LAgAgDCARaiIMIA0gD2oiDf0AAgD9CwIAIA0gD2ohCiAMIBFqIQsgCUEEaiIJIBtHDQALC0EAIQkgFkUNAgNAIAsgCv0AAgD9CwIAIAogD2ohCiALIBFqIQsgCUEBaiIJIBZHDQALDAILA0ACQCAQRQ0AQQAhDkEAIQlBACEMIBdFBEADQCALIAlBAnRqIAogBiAJbEECdGooAgA2AgAgCyAJQQFyIhVBAnRqIAogBiAVbEECdGooAgA2AgAgCyAJQQJyIhVBAnRqIAogBiAVbEECdGooAgA2AgAgCyAJQQNyIhVBAnRqIAogBiAVbEECdGooAgA2AgAgCUEEaiEJIAxBBGoiDCAURw0ACwsgEkUNAANAIAsgCUECdGogCiAGIAlsQQJ0aigCADYCACAJQQFqIQkgDkEBaiIOIBJHDQALCyALIBFqIQsgCiAPaiEKIBMgDUEBaiINRw0ACwwBCwNAAkAgEEUNAEEAIQ5BACEJQQAhDCAXRQRAA0AgCyAGIAlsQQJ0aiAKIAlBAnRqKAIANgIAIAsgCUEBciIVIAZsQQJ0aiAKIBVBAnRqKAIANgIAIAsgCUECciIVIAZsQQJ0aiAKIBVBAnRqKAIANgIAIAsgCUEDciIVIAZsQQJ0aiAKIBVBAnRqKAIANgIAIAlBBGohCSAMQQRqIgwgFEcNAAsLIBJFDQADQCALIAYgCWxBAnRqIAogCUECdGooAgA2AgAgCUEBaiEJIA5BAWoiDiASRw0ACwsgCiARaiEKIAsgD2ohCyANQQFqIg0gE0cNAAsLICFBAWohISAQIBhqIhggA0kNAAsgHkEBaiEeIBMgHWoiHSAESQ0ACwtBAQvIMwUmfw9+AXsBfQF8IwBB0ABrIg8kACAPQZD\u002FAzYCKCAAKAJsIAAoAmhsIRcCfwJAAkACQCAAKAIIIgtBCEcEQEEAIAtBgAJHDQQaIA9B2f8DNgIoDAELIAAtAERBAXENACAXQQFxISIgF0F8cSENIBdBAWutQowsfiIxQiCIp0EARyEjIDGnISQgD0HNAGohJSAPQcwAaiEoIA9ByABqISkgF0EkSSEqQZD\u002FAyELAkACQAJAA0ACQCALQZP\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\u002FRwD\u002FQwAAAAAAAAAAAAAAAAAAAAA\u002FTgiQP0bAEEBcQRAIBxB2CtqIB1BAWo2AgALIED9GwFBAXEEQCAYQdgraiAWQQFqNgIACyBA\u002FRsCQQFxBEAgEUHYK2ogFEEBajYCAAsgQP0bA0EBcQRAIA5B2CtqIAxBAWo2AgALIAtBBGoiCyANRw0ACyAXIA0iC0YNAQsgC0EBciEMICIEQCATIAtBjCxsaiIOKALYKyILBEAgDkHYK2ogC0EBajYCAAsgDCELCyAMIBdGDQADQCATIAtBjCxsaiIOKALYKyIMBEAgDkHYK2ogDEEBajYCAAsgDkHk1wBqIg4oAgAiDARAIA4gDEEBajYCAAsgC0ECaiILIBdHDQALCyAKQQJBlcMAQQAQCAsgAC0AREEBcQ0AIAkgACgCEEECIAoQEkECRwRAAkAgACgCzAFBAWogF0cNACAXRQ0AIAAoApwBIQxBACELA0AgDCALQYwsbGoiCSgC1CtFBEAgCSgC2CtFDQgLIAtBAWoiCyAXRw0ACwsgCkEBQZYSQQAQCEEADAkLIAAoAhAgD0EoakECEAogDygCKCELIAAtAERBAXENAiALQdn\u002FA0cNAQwCCwsgDygCKCELCyALQdn\u002FA0cNAiAAKAIIQYACRg0CIABBgAI2AgggAEEANgLMAQwCCyALKAIYEAkgFigCKCAUQShsaiIAQQA2AhwgAEIANwIUIApBAUGFHUEAEAhBAAwECyAPIAs2AhAgCkEEQcLRACAPQRBqEAggACALNgLMASAPQdn\u002FAzYCKCAAQYACNgIICyAAKALMASELIAAoApwBIQkCQAJAIAAtAERBAXENAAJAAkAgCyAXTw0AIAkgC0GMLGxqIRMDQCATKALcKw0BIAAgC0EBaiILNgLMASATQYwsaiETIAsgF0cNAAsMAQsgCyAXRw0BCyAIQQA2AgAMAQsCQAJAIApBASAJIAtBjCxsaiIRKAK0KAR\u002FQZw0BSARLQCILEECcUUNAgJAIBEoAqgoIg1FBEBBACEMDAELIBEoAqwoIQlBACEMQQAhCyANQQRPBEAgDUF8cSEL\u002FQwAAAAAAAAAAAAAAAAAAAAAIUBBACESA0AgCSASQQN0aiIMQRxqIAxBFGogDEEMaiAM\u002FQkCBP1WAgAB\u002FVYCAAL9VgIAAyBA\u002Fa4BIUAgEkEEaiISIAtHDQALIEAgQCBA\u002FQ0ICQoLDA0ODwABAgMAAQID\u002Fa4BIkAgQCBA\u002FQ0EBQYHAAECAwABAgMAAQID\u002Fa4B\u002FRsAIQwgCyANRg0BCwNAIAkgC0EDdGooAgQgDGohDCALQQFqIgsgDUcNAAsLIBEgDBANIgk2ArQoIAkNAUGXHgtBABAIIApBAUH1PEEAEAhBAAwFCyARIAw2ArwoIBEoAqwoIQkgESgCqCgiDARAQQAhEkEAIQsDQCAJIAtBA3QiFGoiDigCACINBEAgESgCtCggEmogDSAOKAIEEAsaIBEoAqwoIBRqIgkoAgQhLyAJKAIAEAkgESgCrCgiCSAUakIANwIAIC8gEmohEiARKAKoKCEMCyALQQFqIgsgDEkNAAsLIBFBADYCqCggCRAJIBFBADYCrCggESARKAK0KDYCsCggESARKAK8KDYCuCgLAn9BACEoIAAoAtABIgsoAhwiJigCTCAAKALMASIJQYwsbGooAtArIRsgCygCGCIUKAIYIScgCygCFCgCACIeICYoAgQgJigCDCILIAkgCSAmKAIYIgluIgwgCWxrbGoiDiAUKAIAIgkgCSAOSRsiDTYCACAeQX8gCyAOaiIJIAkgDkkbIgsgFCgCCCIJIAkgC0sbIgk2AggCQCAJIA1KIA1BAE5xRQRAIApBAUGBM0EAEAgMAQsgHigCFCEQIB4gJigCCCAMICYoAhAiC2xqIg0gFCgCBCIJIAkgDUkbIgw2AgQgHkF\u002FIAsgDWoiCSAJIA1JGyILIBQoAgwiCSAJIAtLGyIJNgIMIAkgDEogDEEATnFFBEAgCkEBQdsyQQAQCAwBCwJAIBsoAgQEQCAeKAIQDQFBAQwDCyAKQQFB1ShBABAIDAELAkACQANAICdBADYCJCAQICc0AgAiNUIBfSIxIB40AgB8IDV\u002FPgIAIBAgJzQCBCI0QgF9IjIgHjQCBHwgNH8+AgQgECAxIB40Agh8IDV\u002FPgIIIB40AgwhMSAQICg2AhAgECAxIDJ8IDR\u002FPgIMIBAgGygCBCILNgIUIBBBASALICYoAlAiCWsgCSALSxs2AhggECgCNBAJIBBBADYCRCAQ\u002FQwAAAAAAAAAAAAAAAAAAAAA\u002FQsCNCALQZgBbCEMAkAgECgCHCIJRQRAIBAgDBANIgk2AhwgCUUNBSAQIAw2AiAgCUEAIAwQDhoMAQsgDCAQKAIgTQ0AIAkgDBAQIgtFBEAgCkEBQYAXQQAQCCAQKAIcEAkgEEIANwIcDAULIBAgCzYCHCALIBAoAiAiCWpBACAMIAlrEA4aIBAgDDYCIAsgECgCFCILBEAgG0GwB2ohHSAbQawGaiEYIBtBHGohKyAQKAIcIRpBACEsA0AgGkJ\u002FIAtBAWsiCa0iM4ZCf4UiMiAQNAIAfCAzh6ciFjYCACAaIDIgEDQCBHwgM4enIhE2AgQgGiAyIBA0Agh8IDOHIjGnIhQ2AgggGiAyIBA0Agx8IDOHIjSnIg42AgwgMcRCASAYICxBAnQiDGooAgAiH60iMYZ8QgF9IDGHpyAfdCINQQBIDQQgNMRCfyAMIB1qKAIAIiCtIjGGQn+FfCAxh6cgIHQiDEEASA0EIBogDEF\u002FICB0IBFxIhNrICB1QQAgDiARRxsiDDYCFCAaIA1BfyAfdCAWcSIiayAfdUEAIBQgFkcbIg02AhACQCANRQ0AIA2tIAytfkIgiFANAAwECyAMIA1sIiNB58yZM08NAyAjQShsISEgGiAsBH8gIEEBayEgIB9BAWshHyATrEIBfEIBiKchEyAirEIBfEIBiKchIkEDBUEBCzYCGCAaQRxqIRVCASALrSI2hiE3Qn8gGygCDCILICAgCyAgSRsiLa0iPIZCf4UhPUJ\u002FIBsoAggiCyAfIAsgH0kbIhKtIj6GQn+FIT9BACEpA0ACfiAsRQRAIDIgEDQCBHwgM4chOCAyIBA0AgB8IDOHITlBACELIDIiMSE6IDMMAQsgNyApQQFqIgtBAXatIDOGQn+FfCI6IBA0AgR8IDaHITggNyALQQFxrSAzhkJ\u002FhXwiMSAQNAIAfCA2hyE5IDYLITsgEDQCCCE1IBA0AgwhNCAVIDg+AgQgFSA5PgIAIBUgCzYCECAVIDQgOnwgO4c+AgwgFSAxIDV8IDuHPgIIQQAhDQJAIBsoAhRFDQAgC0UNAEECQQEgC0EDRhshDQsgKygCBCEMRAAAAAAAAPA\u002FIUICQCAnKAIYIA1qICsoAgBrIgtBgAhOBEBEAAAAAAAA4H8hQiALQf8PSQRAIAtB\u002FwdrIQsMAgtEAAAAAAAA8H8hQkH9FyALIAtB\u002FRdPG0H+D2shCwwBCyALQYF4Sg0ARAAAAAAAAGADIUIgC0G4cEsEQCALQckHaiELDAELRAAAAAAAAAAAIUJB8GggCyALQfBoTRtBkg9qIQsLIBUgQiALQf8Haq1CNIa\u002FoiAMt0QAAAAAAABAP6JEAAAAAAAA8D+gorY4AiAgFSArKAIAIBsoAqQGakEBazYCHCAVKAIUIQsCQAJAAkAgI0UNACALDQAgFSAhEA0iCzYCFCALRQRAIApBAUGUFUEAEAgMCgsgC0EAICEQDhogFSAhNgIYDAELICEgFSgCGEsEQCALICEQECIMRQRAIApBAUGUFUEAEAggFSgCFBAJIBVCADcCFAwKCyAVIAw2AhQgDCAVKAIYIgtqQQAgISALaxAOGiAVICE2AhgLICNFDQELIBUoAhQhC0EAISQDQCALICQgJCAaKAIQIgxuIhYgDGxrIg4gH3QgImoiDSAVKAIAIgwgDCANSBsiETYCACALIBYgIHQgE2oiDSAVKAIEIgwgDCANSBsiFDYCBCALIA5BAWogH3QgImoiDSAVKAIIIgwgDCANShsiDjYCCCALIBZBAWogIHQgE2oiDSAVKAIMIgwgDCANShsiDDYCDCALID8gDqx8ID6HpyARIBJ1IhZrIBJ0IBJ1Ig02AhAgCyA9IAysfCA8h6cgFCAtdSIRayAtdCAtdSIMNgIUIAwgDWwiJa1CBoZCIIhCAFIEQCAKQQFB5RVBABAIDAkLICVBBnQhDgJAAn8CQCALKAIYIgwNACAlRQ0AIAsgDhANIgw2AhggDEUNCyAMQQAgDhAOGiALQRxqDAELIA4gCygCHE0NASAMIA4QECINRQRAIAsoAhgQCSALQgA3AhggCkEBQeMSQQAQCAwLCyALIA02AhggDSALKAIcIgxqQQAgDiAMaxAOGiALQRxqCyAONgIACyALKAIUIQ4gCygCECENIAsCfyALKAIgIgxFBEAgDSAOIAoQXAwBCyAMIA0gDiAKEFoLNgIgIAsoAhQhDiALKAIQIQ0gCwJ\u002FIAsoAiQiDEUEQCANIA4gChBcDAELIAwgDSAOIAoQWgs2AiQgJQRAQQAhFwNAIBcgCygCECIObiEcAkAgCygCGCAXQQZ0aiIZKAIAIhQEQCAZKAI4IQ0gGSgCBCEMIBkoAjAhKiAZKAI8EAkgGf0MAAAAAAAAAAAAAAAAAAAAAP0LAiggGUIANwI4IBn9DAAAAAAAAAAAAAAAAAAAAAD9CwIYIBn9DAAAAAAAAAAAAAAAAAAAAAD9CwIIIBkgFDYCACAZICo2AjAgKgRAIBRBACAqQRhsEA4aCyAZIA02AjggGSAMNgIEDAELIBlBCkEYEAwiDDYCACAMRQ0LIBlBCjYCMAsgGSAXIA4gHGxrIBZqIhQgEnQiDSALKAIAIgwgDCANSBs2AgggGSARIBxqIg4gLXQiDSALKAIEIgwgDCANSBs2AgwgGSAUQQFqIBJ0Ig0gCygCCCIMIAwgDUobNgIQIBkgDkEBaiAtdCINIAsoAgwiDCAMIA1KGzYCFCAXQQFqIhcgJUcNAAsLIAtBKGohCyAkQQFqIiQgI0cNAAsLICtBCGohKyAVQSRqIRUgKUEBaiIpIBooAhhJDQALIBpBmAFqIRogCSELICxBAWoiLCAQKAIUSQ0ACwsgJ0E0aiEnIBBBzABqIRAgG0G4CGohGyAoQQFqIiggHigCEEkNAAtBAQwDCyAKQQFBlBZBABAIDAELIApBAUGzEUEAEAgLQQALRQRAIApBAUHCG0EAEAhBAAwECyAAKALMASEJIA8gACgCaCAAKAJsbDYCBCAPIAlBAWo2AgAgCkEEQc7XACAPEAggASAAKALMATYCACAIQQE2AgAgAgRAIAIgACgC0AFBABBNIgE2AgBBACABQX9GDQQaCyADIAAoAtABKAIUKAIAIgEoAgA2AgAgBCABKAIENgIAIAUgASgCCDYCACAGIAEoAgw2AgAgByABKAIQNgIAIAAgACgCCEGAAXI2AggLQQEMAgsgCkEBIBJBABAICyAKQQFB5BtBABAIQQALITAgD0HQAGokACAwC94QAg1\u002FAn4CQCAAKAIgIgUNAAJAIAAoAhAiCUEFSgRAIAkhAwwBCwJAAkAgACgCFCICQQVOBEAgACgCACIBKAIAIQUgACABQQRqNgIAIAJBBGshBwwBCyACQQBMBEBBfyEFDAILIAAoAgAhAQJ\u002FIAJBAUYEQEF\u002FIQZBAAwBC0F\u002FIQYgAkEBayIDQQFxIQ0CQCACQQJGBEBBACEFIAIhBAwBCyADQX5xIQtBACEFIAEhAyACIQQDQCAAIANBAWo2AgAgAy0AACEMIAAgA0ECaiIBNgIAIAAgBEEBazYCFCADLQABIQMgACAEQQJrIgQ2AhQgBkH\u002FASAFdEF\u002Fc3EgDCAFdHJBgP4DIAV0QX9zcSADIAVBCHJ0ciEGIAVBEGohBSABIQMgCEECaiIIIAtHDQALCyANBEAgACABQQFqIgM2AgAgAS0AACEBIAAgBEEBazYCFCAGQf8BIAV0QX9zcSABIAV0ciEGIAMhAQsgAkEDdEEIawshBSAAIAFBAWo2AgAgBkH\u002FASAFdEF\u002Fc3EgAS0AAEEPciAFdHIhBQsgACAHNgIUCyAAKAIYIQEgACAFQRh2IgdB\u002FwFGNgIYIAAgCSAFQRB2Qf8BcSIIQf8BRiIKIAVBCHZB\u002FwFxIgtB\u002FwFGIgwgASAFQf8BcSIEQf8BRiICampqIgFrQSBqIgM2AhAgACAAKQMIIARBB0EIIAIbdCALckEHQQggDBt0IAhyQQdBCCAKG3QgB3KtIAEgCWtBIGqthoQ3AwhBACEFIANBBkgNAQsgACgCHCIBQQJ0QbCdAWooAgAhAgJ+IAApAwgiDkIAUwRAQQwgAUEBaiABQQtOGyEEIANBAWshA0F\u002FIAJ0QX9zQQF0IQFCAQwBCyABQQFrQQAgAUEBShshBCAOQT8gAmutiKdBfyACdEF\u002Fc3FBAXRBAXIhASADIAJBAWoiAmshAyACrQshDyAAIAM2AhAgACAENgIcIAAgDiAPhjcDCCAAIAGsIAApAyhCQIOENwMoQQEhBSADQQZIDQAgACgCHCIBQQJ0QbCdAWooAgAhAgJ+IAApAwgiDkIAUwRAQQwgAUEBaiABQQtOGyEEIANBAWshA0F\u002FIAJ0QX9zQQF0IQFCAQwBCyABQQFrQQAgAUEBShshBCAOQT8gAmutiKdBfyACdEF\u002Fc3FBAXRBAXIhASADIAJBAWoiAmshAyACrQshDyAAIAM2AhAgACAENgIcIAAgDiAPhjcDCCAAIAApAyhC\u002F0CDIAGsQgeGhDcDKEECIQUgA0EGSA0AIAAoAhwiAUECdEGwnQFqKAIAIQICfiAAKQMIIg5CAFMEQEEMIAFBAWogAUELThshBCADQQFrIQNBfyACdEF\u002Fc0EBdCEBQgEMAQsgAUEBa0EAIAFBAUobIQQgDkE\u002FIAJrrYinQX8gAnRBf3NxQQF0QQFyIQEgAyACQQFqIgJrIQMgAq0LIQ8gACADNgIQIAAgBDYCHCAAIA4gD4Y3AwggACAAKQMoQv\u002F\u002FQIMgAaxCDoaENwMoQQMhBSADQQZIDQAgACgCHCIBQQJ0QbCdAWooAgAhAgJ+IAApAwgiDkIAUwRAQQwgAUEBaiABQQtOGyEEIANBAWshA0F\u002FIAJ0QX9zQQF0IQFCAQwBCyABQQFrQQAgAUEBShshBCAOQT8gAmutiKdBfyACdEF\u002Fc3FBAXRBAXIhASADIAJBAWoiAmshAyACrQshDyAAIAM2AhAgACAENgIcIAAgDiAPhjcDCCAAIAApAyhC\u002F\u002F\u002F\u002FQIMgAaxCFYaENwMoQQQhBSADQQZIDQAgACgCHCIBQQJ0QbCdAWooAgAhAgJ+IAApAwgiDkIAUwRAQQwgAUEBaiABQQtOGyEEIANBAWshA0F\u002FIAJ0QX9zQQF0IQFCAQwBCyABQQFrQQAgAUEBShshBCAOQT8gAmutiKdBfyACdEF\u002Fc3FBAXRBAXIhASADIAJBAWoiAmshAyACrQshDyAAIAM2AhAgACAENgIcIAAgDiAPhjcDCCAAIAApAyhC\u002F\u002F\u002F\u002F\u002F0CDIAGsQhyGhDcDKEEFIQUgA0EGSA0AIAAoAhwiAUECdEGwnQFqKAIAIQICfiAAKQMIIg5CAFMEQEEMIAFBAWogAUELThshBCADQQFrIQNBfyACdEF\u002Fc0EBdCEBQgEMAQsgAUEBa0EAIAFBAUobIQQgDkE\u002FIAJrrYinQX8gAnRBf3NxQQF0QQFyIQEgAyACQQFqIgJrIQMgAq0LIQ8gACADNgIQIAAgBDYCHCAAIA4gD4Y3AwggACAAKQMoQv\u002F\u002F\u002F\u002F\u002F\u002FQIMgAa1CI4aENwMoQQYhBSADQQZIDQAgACgCHCIBQQJ0QbCdAWooAgAhAgJ+IAApAwgiDkIAUwRAQQwgAUEBaiABQQtOGyEEIANBAWshA0F\u002FIAJ0QX9zQQF0IQFCAQwBCyABQQFrQQAgAUEBShshBCAOQT8gAmutiKdBfyACdEF\u002Fc3FBAXRBAXIhASADIAJBAWoiAmshAyACrQshDyAAIAM2AhAgACAENgIcIAAgDiAPhjcDCCAAIAApAyhC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002FQIMgAa1CKoaENwMoQQchBSADQQZIDQAgACgCHCIBQQJ0QbCdAWooAgAhAgJ+IAApAwgiDkIAUwRAQQwgAUEBaiABQQtOGyEEIANBAWshA0F\u002FIAJ0QX9zQQF0IQFCAQwBCyABQQFrQQAgAUEBShshBCAOQT8gAmutiKdBfyACdEF\u002Fc3FBAXRBAXIhASADIAJBAWoiAmshAyACrQshDyAAIAM2AhAgACAENgIcIAAgDiAPhjcDCCAAIAApAyhC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F0CDIAGtQjGGhDcDKEEIIQULIAAgBUEBazYCICAAIAApAygiDkIHiDcDKCAOp0H\u002FAHELIgEBfyAABEAgACgCDCIBBEAgARAJIABBADYCDAsgABAJCwuFAQIFfwF+AkAgAEKAgICAEFQEQCAAIQcMAQsDQCABQQFrIgEgAEIKgCIHQvYBfiAAfKdBMHI6AAAgAEL\u002F\u002F\u002F\u002F\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\u002F\u002F\u002F\u002F\u002FBzYCBCAPQf\u002F\u002F\u002F\u002F8HNgIAIBcoAhAEQANAIA4EfyAOIBJBAnRqKAIABUEACyELIAk1AgQihgFCAX0iigEgDzUCCHwghgGAIYsBIAk1AgAihwFCAX0iiAEgDzUCEHwghwGAIYwBIIoBIA81Agx8IIYBgCGGASCIASAPNQIUfCCHAYAhhwEgASgCBCIIIA8oAhxLBEAgDyAINgIcIAEoAgQhCAsgCARAIIsBQv\u002F\u002F\u002F\u002F8PgyGKASCMAUL\u002F\u002F\u002F\u002F\u002FD4MhiwEghgFC\u002F\u002F\u002F\u002F\u002Fw+DIYgBIIcBQv\u002F\u002F\u002F\u002F8PgyGMASABQbAHaiEfIAFBrAZqISFBACEaA0AgHyAaQQJ0IhBqKAIAIQYgECAhaigCACERQQAhECALBEAgCyAGNgIEIAsgETYCACALQQhqIRALAkAgESAIQQFrIghqIgtBH0sNACAJKAIAIiJBfyALdksNACAPIA8oAgQiJyAiIAt0IgsgCyAnSxs2AgQLAkAgBiAIaiILQR9LDQAgCSgCBCIiQX8gC3ZLDQAgDyAPKAIAIicgIiALdCILIAsgJ0sbNgIAC0EAIQsgigFCfyAIrSKGAYZCf4UihwF8IIYBiCKNAUL\u002F\u002F\u002F\u002F\u002FD4NCASAGrSKJAYZ8QgF9IIkBiKcghwEgiAF8IIYBiKciIiAGdmtBfyAGdnFBACAiII0Bp0cbIQYghwEgiwF8IIYBiCKNAUL\u002F\u002F\u002F\u002F\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\u002FQkCoAH9VgIAAf1WAgAC\u002FVYCAAMgBkHgBGogBkHIA2ogBkGwAmogBv0JApgB\u002FVYCAAH9VgIAAv1WAgAD\u002FbEB\u002FbkBIAZB7ARqIAZB1ANqIAZBvAJqIAb9CQKkAf1WAgAB\u002FVYCAAL9VgIAAyAGQeQEaiAGQcwDaiAGQbQCaiAG\u002FQkCnAH9VgIAAf1WAgAC\u002FVYCAAP9sQH9uQEhgAEgAUEEaiIBIAhHDQALIIABIIABIIAB\u002FQ0ICQoLDA0ODwABAgMAAQID\u002FbkBIoABIIABIIAB\u002FQ0EBQYHAAECAwABAgMAAQID\u002FbkB\u002FRsAIQYgCCAKRg0BCwNAIAYgBygCoAEgBygCmAFrIgEgASAGSRsiASAHKAKkASAHKAKcAWsiBiABIAZLGyEGIAdBmAFqIQcgFUEBayIVDQALC0EAIQcgBkH\u002F\u002F\u002F8\u002FSw0CICUgBkEFdCISECwiDzYCECAPRQ0CICUgDzYCACAKBEAgECATayEQIBggEWshCCAbIBprIQEDQCAJKAIkIRMgJSAIIhU2AgggJSABIgc2AhggDCgCnAEhBiAMKAKkASEIIAwoAqABIQEgJSAMKAKYASIRQQJvNgIcICUgASARayIBIAdrNgIUAkAgFkECSCIaRSAIIAZrIghBAUtxRQRAQQAhBiAIRQ0BA0AgJUEQaiATIAYgEGxBAnRqEFYgBkEBaiIGIAhHDQALDAELIAggFiAIIBZJGyIRQQFrIRsgCCARbiEYQQAhBwNAQSQQDSIGRQ0FICX9AAIQIYABIAYgEzYCGCAGIBA2AhQgBiABNgIQIAYggAH9CwIAIAYgByAYbDYCHCAHIBtGIR8gBiAIIAdBAWoiByAYbCAfGzYCICAGIBIQLCIfNgIAIB9FBEBBACEHIA4QGiAGEAkgDxAJDAcLIA5BCiAGECYgByARRw0ACyAOEBoLICUgCCAVazYCBCAlIAwoApwBQQJvNgIMAkAgGkUgAUEBS3FFBEBBCCEHQQAhBiABQQhPBEADQCAlIBMgBkECdGogEEEIECsgByIGQQhqIgcgAU0NAAsLIAEgBk0NASAlIBMgBkECdGogECABIAZrECsMAQsgASAWIAEgFkkbIhVBAWshGCABIBVuIRFBACEHA0BBJBANIgZFDQUgJf0AAgAhgAEgBiATNgIYIAYgEDYCFCAGIAg2AhAgBiCAAf0LAgAgBiAHIBFsNgIcIAcgGEYhGiAGIAEgB0EBaiIHIBFsIBobNgIgIAYgEhAsIho2AgAgGkUEQEEAIQcgDhAaIAYQCSAPEAkMBwsgDkELIAYQJiAHIBVHDQALIA4QGgsgDEGYAWohDCAKQQFrIgoNAAsLQQEhByAPEAkMAgtBASEHIAkoAhwiCCAeQZgBbGoiNUGYAWsiXygCACA1QZABaygCAEYNASA1QZQBayJgKAIAIDVBjAFrKAIARg0BIAgoAgQhDiAIKAIMIQ8gCCgCACEWIAgoAgghECAJKAJEISEgCSgCQCEiIAkoAjwhKCAJKAI4ITAgCSAeEFUiOUUEQEEAIQcMAgsCQAJAIB5BAUcEQAJAAkAgHkEBayIKQQRJBEAgCiEBIAghBwwBCyAKQQNxIQEgCCAKQXxxIhVBmAFsaiEHA0AggAEgCCAMQZgBbGoiBkHoBGogBkHQA2ogBkG4AmogBv0JAqAB\u002FVYCAAH9VgIAAv1WAgADIAZB4ARqIAZByANqIAZBsAJqIAb9CQKYAf1WAgAB\u002FVYCAAL9VgIAA\u002F2xAf25ASAGQewEaiAGQdQDaiAGQbwCaiAG\u002FQkCpAH9VgIAAf1WAgAC\u002FVYCAAMgBkHkBGogBkHMA2ogBkG0AmogBv0JApwB\u002FVYCAAH9VgIAAv1WAgAD\u002FbEB\u002FbkBIYABIAxBBGoiDCAVRw0ACyCAASCAASCAAf0NCAkKCwwNDg8AAQIDAAECA\u002F25ASKAASCAASCAAf0NBAUGBwABAgMAAQIDAAECA\u002F25Af0bACEGIAogFUYNAQsDQCAGIAcoAqABIAcoApgBayIKIAYgCksbIgYgBygCpAEgBygCnAFrIgogBiAKSxshBiAHQZgBaiEHIAFBAWsiAQ0ACwsgBkGAgICAAU8NAiAGQQR0ECwiFEUNAgJAIB5FDQAgDyAOayESIBAgFmshGiAUQQRrITsgFEEEaiEkIBRBDGohKSAUQRxqIUMgFEEYaiEfIBRBFGohICAUQQxrIUQgFEEIaiEqIBRBEGohNiAUQRBrITcgFEEIayFBICGtIYYBICKtIYcBICitIYoBIDCtIYsBQQEhRgNAIAgoApwBIgFBAm8hRyAIKAKYASIHQQJvITwgCCgCpAEgAWsiJyASayEsIAgoAqABIAdrIi0gGmshLiAwIgwhByAoIgYhCiAiIgEhOiAhIg8hEQJAIAkoAhQiFSBGRg0AIBUgRmshFUEAIQpBACEHIAwEQEJ\u002FIBWtIogBhkJ\u002FhSCLAXwgiAGIpyEHCyAoBEBCfyAVrSKIAYZCf4UgigF8IIgBiKchCgtBACEPQQAhASAiBEBCfyAVrSKIAYZCf4UghwF8IIgBiKchAQsgIQRAQn8gFa0iiAGGQn+FIIYBfCCIAYinIQ8LQQAhOkEAIQxBASAVQQFrdCIOIDBJBEAgMCAOa61CfyAVrSKIAYZCf4V8IIgBiKchDAsgDiAiSQRAICIgDmutQn8gFa0iiAGGQn+FfCCIAYinIToLQQAhEUEAIQYgDiAoSQRAICggDmutQn8gFa0iiAGGQn+FfCCIAYinIQYLIA4gIU8NACAhIA5rrUJ\u002FIBWtIogBhkJ\u002FhXwgiAGIpyERC0F\u002FIDogCCgCtAEiFWsiDkEAIA4gOk0bIg5BAmoiFiAOIBZLGyIOIC4gDiAuSRsiNEF\u002FIAEgCCgC2AEiE2siDkEAIAEgDk8bIgFBAmoiDiABIA5LGyIBIBogASAaSRsiJiA8G0EBdCIBICYgNCA8G0EBdEEBciIOIAEgDksbIkggLUkhGCAMIBVrIgFBACABIAxNGyIBQQJrIgxBACABIAxPGyIQIAcgE2siAUEAIAEgB00bIgFBAmsiDEEAIAEgDE8bIhYgPBtBAXQiDCAWIBAgPBtBAXRBAXIiK0khLyAKIAgoArgBIhtrIhVBACAKIBVPGyIKQQJrIhVBACAKIBVPGyIVISMgBiAIKALcASIKayIOQQAgBiAOTxsiBkECayIOQQAgBiAOTxsiDiE9QX8gDyAbayIGQQAgBiAPTRsiBkECaiIPIAYgD0sbIgYgEiAGIBJJGyIbIT5BfyARIAprIgZBACAGIBFNGyIGQQJqIgogBiAKSxsiBiAsIAYgLEkbIhwhPyBHBEAgFSE9IBwhPiAbIT8gDiEjCyBIIC0gGBshSSAMICsgLxshGCASIBxqIVAgDiASaiFRICcEQCAUIBZBA3QiBmoiRUEEaiA7IC5BA3QiCmoiUiAWIC5IIgwbIVMgBiAkaiIGICYgLiAmIC5IGyIPIAcgEyAHIBNJG0ECIAEgAUECTxtqIgFqIhMgB2tBAmsiEUEDdCIraiAGSSApIAcgAWtBA3RqIgEgK2ogAUlyIBFB\u002F\u002F\u002F\u002F\u002FwFLciFUIDQgGkEBayAaIDRKGyEvQQAhESAaQQFKIC5BAEpyIVUgJCA8QQJ0IgFrIBBBA3RqIVYgASBFaiFXIBYgB0F\u002FcyATaiJKQXxxIjJqITggFkEBaiITIDJqIUIgGiA0aiFYIBAgGmohWSAW\u002FRH9DAAAAAABAAAAAgAAAAMAAAD9rgEhgwEgFCAYQQJ0aiFaIEEgGkEDdCIBaiFLIAEgO2ohTCAKIEFqIU0gGkUgLkEBRnEhWyAUIElBAnQiAWohXCABIDtqIV0gE\u002F0R\u002FQwAAAAAAQAAAAIAAAADAAAA\u002Fa4BIYQBIDsgFiAuIAwbQQN0aiFeA0ACQAJAIBEgG0kgESAVT3ENACARIFBJIBEgUU9xDQAgEUEBaiErDAELIC0gSEsEQCBdQQA2AgAgXEEANgIACyA5IBYgESAmIBFBAWoiKyBXQQJBABAXIDkgWSARIFggKyBWQQJBABAXAkACQAJAIDxFBEAgVUUNAyAWICZODQICQAJAIBZBAEoEQCBeKAIAIQcMAQsgJCgCACIHIQEgFkEASA0BCyAHIQEgUygCACEHCyBFIEUoAgAgASAHakECakECdWs2AgAgEyIHIA9ODQFBACEHIIQBIYABIIMBIYIBIBMhASAWIQogSkEUSSBUckUEQANAIBQggAFBAf2rASKBAf0bAEECdGoiASAUIIEB\u002FRsDQQJ0aiIGIBQggQH9GwJBAnRqIgogFCCBAf0bAUECdGoiDCAB\u002FQkCAP1WAgAB\u002FVYCAAL9VgIAAyAUIIIBQQH9qwH9DAEAAAABAAAAAQAAAAEAAAD9UCKFAf0bA0ECdGogFCCFAf0bAkECdGogFCCFAf0bAUECdGogFCCFAf0bAEECdGr9CQIA\u002FVYCAAH9VgIAAv1WAgADIBQggQH9DAEAAAABAAAAAQAAAAEAAAD9UCKBAf0bA0ECdGogFCCBAf0bAkECdGogFCCBAf0bAUECdGogFCCBAf0bAEECdGr9CQIA\u002FVYCAAH9VgIAAv1WAgAD\u002Fa4B\u002FQwCAAAAAgAAAAIAAAACAAAA\u002Fa4BQQL9rAH9sQEigQH9WgIAACAMIIEB\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\u002Fa4B\u002FQwCAAAAAgAAAAIAAAACAAAA\u002Fa4BQQL9rAH9sQH9CwIAIAEiBkEBaiIBIA9HDQALIA8hBwsgByAbTg0AA0AgB0EDdCEBIAcgLEghBgJAIAdBAEwEQCA2KAIAIQogB0EATgRAIBQgAUECdCIBaiIyIDIoAgAgCiABIDZqIEUgBhsoAgBqQQJqQQJ1azYCACABICRqIgogCigCACAgKAIAIAEgIGogPCAGGygCAGpBAmpBAnVrNgIAIAEgKmoiCiAKKAIAIB8oAgAgASAfaiA6IAYbKAIAakECakECdWs2AgAgQygCACABIENqICYgBhsoAgBqQQJqIQYgASApaiEBDAILIBQgAUECdCIBaiIGIAYoAgAgCkEBdEECakECdWs2AgAgASAkaiIGIAYoAgAgFCgCFEEBdEECakECdWs2AgAgASAqaiIGIAYoAgAgFCgCGEEBdEECakECdWs2AgAgASApaiEBIBQoAhxBAXRBAmohBgwBCyAUIAcgLCAGG0EDdEEEa0ECdCIKaigCACEyIAZFBEAgFCABQQJ0IgFqIgYgBigCACAyIEUoAgBqQQJqQQJ1azYCACABICRqIgYgBigCACAKICRqKAIAIDwoAgBqQQJqQQJ1azYCACABICpqIgYgBigCACAKICpqKAIAIDooAgBqQQJqQQJ1azYCACABIClqIQEgCiApaigCACAmKAIAakECaiEGDAELIBQgAUECdCIBaiIGIAYoAgAgMiAGKAIQakECakECdWs2AgAgASAkaiIGIAYoAgAgCiAkaigCACAGKAIQakECakECdWs2AgAgASAqaiIGIAYoAgAgCiAqaigCACAGKAIQakECakECdWs2AgAgCiApaigCACABIClqIgEoAhBqQQJqIQYLIAEgASgCACAGQQJ1azYCACAHQQFqIgcgG0cNAAsLIA4gHE4NACAMIA4iASIHSgRAA0AgFCABQQV0aiIHIAf9AAIgIAf9AAIA\u002Fa4BQQH9rAEgB\u002F0AAhD9rgH9CwIQIAFBAWoiASAMRw0ACyAMIQcLIAcgHE4NAANAIEMgB0EDdCIBQQJ0aiIyAn8gB0EASARAIBQoAgAhBiAHQX9HBEAgNiABQQJ0IgFqIgogCigCACAGajYCACABICBqIgYgBigCACAkKAIAajYCACABIB9qIgEgASgCACAqKAIAajYCACApKAIADAILIDYgAUECdCIBaiIKIAooAgAgVygCACAGakEBdWo2AgAgASAgaiIGIAYoAgAgVigCACAkKAIAakEBdWo2AgAgASAfaiIBIAEoAgAgVSgCACAqKAIAakEBdWo2AgAgVCgCACApKAIAakEBdQwBCyABID4gByASSBshBiASIAdBAWoiZkwEQCA2IAFBAnQiCmoiASABKAIAIGsoAgAgFCAGQQJ0aiIBKAIAakEBdWo2AgAgCiAgaiIGIAYoAgAgaigCACABKAIEakEBdWo2AgAgCiAfaiIGIAYoAgAgaSgCACABKAIIakEBdWo2AgAgaCgCACABKAIMakEBdQwBCyA2IAFBAnQiCmoiASABKAIAIBQgZkEFdGoiASgCACAUIAZBAnRqIgYoAgBqQQF1ajYCACAKICBqImYgZigCACABKAIEIAYoAgRqQQF1ajYCACAKIB9qIgogCigCACABKAIIIAYoAghqQQF1ajYCACABKAIMIAYoAgxqQQF1CyAyKAIAajYCACAHQQFqIgcgHEcNAAsLIDkgFiBdIBggSCBeQQFBBEEAEB8NAAsLDAILIBQQCUEBIQcLIDkgNUEQaygCACIBIF8oAgAiBmsgNUEMaygCACBgKAIAIgprIDVBCGsoAgAiCCAGayA1QQRrKAIAIAprIAkoAjRBASAIIAFrEBcgORAdDAMLIDkQHSAUEAlBACEHDAILIDkQHUEAIQcMAQtBACEHIA4QGiAPEAkLICVBIGokACAHDQEMBQsgASEIQQAhDv0MAAAAAAAAAAAAAAAAAAAAACGAASMAQUBqIhwkAAJAAn8CQCAZKAJABEAgCSgCHCIVIAkoAhhBmAFsaiIBQZgBaygCACEaIAFBkAFrKAIAIRsgFSgCBCEMIBUoAgwheiAVKAIAIRAgFSgCCCETQQEhByAZKAIsIh8oAgQhKyAIQQFGDQNBACEGIAhBAWsiFiEIIBUhAQJAIBZBBE8EQCAWQQNxIQggASAWQXxxIgpBmAFsaiEBQQAhBwNAIIABIBUgB0GYAWxqIgZB6ARqIAZB0ANqIAZBuAJqIAb9CQKgAf1WAgAB\u002FVYCAAL9VgIAAyAGQeAEaiAGQcgDaiAGQbACaiAG\u002FQkCmAH9VgIAAf1WAgAC\u002FVYCAAP9sQH9uQEgBkHsBGogBkHUA2ogBkG8AmogBv0JAqQB\u002FVYCAAH9VgIAAv1WAgADIAZB5ARqIAZBzANqIAZBtAJqIAb9CQKcAf1WAgAB\u002FVYCAAL9VgIAA\u002F2xAf25ASGAASAHQQRqIgcgCkcNAAsggAEggAEggAH9DQgJCgsMDQ4PAAECAwABAgP9uQEigAEggAEggAH9DQQFBgcAAQIDAAECAwABAgP9uQH9GwAhBiAKIBZGDQELA0AgBiABKAKgASABKAKYAWsiByAGIAdLGyIHIAEoAqQBIAEoApwBayIGIAYgB0kbIQYgAUGYAWohASAIQQFrIggNAAsLQQAhByAGQf\u002F\u002F\u002Fz9LDQMgHCAGQQV0IkYQFiIBNgIgIAFFDQMgHCABNgIAIBZFBEBBASEHIAEQCQwECyB6IAxrIQ8gEyAQayEOQQIgK0EBdiIBIAFBAk0bIUcgCSgCJCIKIBtBHGwiTSAaQRxsIl9raiEvIAogG0EYbCJgIBpBGGwiUmtqIT0gCiAbQRRsIlMgGkEUbCJUa2ohPiAKIBtBBHQiVSAaQQR0IlZraiE\u002FIAogG0EMbCJXIBpBDGwiWGtqITggGyAaayIQQQdsIUkgEEEGbCFFIBBBBWwhMiAQQQNsIUggEEEBdCFQIAogEEEDdCJRaiFCIAogEEECdCJBaiEUIBBBBXQhWSAQ\u002FREhhAEDQCAcIA82AgggHCAOIgE2AiggFSgCnAEhJCAVKAKkASEpIBUoAqABIR4gFSgCmAEhICAcQQA2AjggHCABNgI0IBxBADYCMCAcICBBAm8iGDYCLCAcIB4gIGsiDiABayITNgI8IBwgEzYCJAJAICtBAkgiWkUgKSAkayIPQQ9LcUUEQEEAIQcgCiEGIA9BCEkNASA\u002FIAYgUyAeQQJ0IgFqIFQgIEECdCIIamtqIjpJID4gBiABIFVqIAggVmpraiJDSXEgPSBDSSA\u002FIAYgASBgaiAIIFJqa2oiPElxciAvIENJID8gBiABIE1qIAggX2praiJESXFyIVsgPSBESSAvIDxJcSFcID4gREkgLyA6SXEhXSA8ID5LIDogPUtxIV4gQiAGIAEgV2ogCCBYamtqIkpJIDggBiABIFFqIAhraiJLSXEhYSAUIEpJIDggBiAbIB5qIBogIGprQQJ0aiJMSXEhYiAUIEtJIEIgTElxIWMgBiABIAhraiEqIA5BfHEhCCAcKAIgIhMgDkEFdGoiEUEQayElIBFBFGshLCARQRhrIS4gEUEcayE2IBFBBGshOSARQQhrITsgEUEMayE0QQAhGCATQQxqIiMgHiAgQX9zaiIMQQV0IgFqICNJIAxB\u002F\u002F\u002F\u002FP0siDCATQQRqIiEgAWogIUkgASATaiATSXJyIBNBCGoiIiABaiAiSXJyIA5ByAJJciFkIBNBFGoiKCABaiAoSSATQRBqIicgAWogJ0lyIAxyIBNBGGoiMCABaiAwSXIgE0EcaiItIAFqIC1JciAOQdQASXIhZQNAIAchDCAcQSBqIgEgBiAQQQgQNCABEBwCQCAORQ0AIBggWWwhB0EAIQECQAJAIGQNACBhIAYgNkkgEyAHICpqIjdJcSAGIAcgSmoiEkkgKiA4S3EgFCAqSSAGIAcgTGoiJklxIAYgByBLaiI1SSAqIEJLcXJyciAGIC5JICEgN0lxciAGICxJICIgN0lxciAGICVJICMgN0lxciBjciBiciATICZJIAcgFGoiNyA2SXFyICEgJkkgLiA3S3FyICIgJkkgLCA3S3FyICMgJkkgJSA3S3Fycg0AIBMgNUkgByBCaiImIDZJcQ0AICEgNUkgJiAuSXENACAiIDVJICYgLElxDQAgIyA1SSAlICZLcQ0AIAcgOGoiJiA2SSASIBNLcQ0AICYgLkkgEiAhS3ENACAmICxJIBIgIktxDQAgEiAjSyAlICZLcQ0AA0AgBiABQQJ0aiATIAFBBXRqIhL9CQIAIBIqAiD9IAEgEkFAayoCAP0gAiASKgJg\u002FSAD\u002FQsCACAGIAEgEGpBAnRqIBL9CQIEIBIqAiT9IAEgEioCRP0gAiASKgJk\u002FSAD\u002FQsCACAGIAEgUGpBAnRqIBL9CQIIIBIqAij9IAEgEioCSP0gAiASKgJo\u002FSAD\u002FQsCACAGIAEgSGpBAnRqIBL9CQIMIBIqAiz9IAEgEioCTP0gAiASKgJs\u002FSAD\u002FQsCACABQQRqIgEgCEcNAAsgCCIBIA5GDQELA0AgBiABQQJ0aiATIAFBBXRqIhIqAgA4AgAgBiABIBBqQQJ0aiASKgIEOAIAIAYgASBQakECdGogEioCCDgCACAGIAEgSGpBAnRqIBIqAgw4AgAgAUEBaiIBIA5HDQALC0EAIQECQCBlDQAgXCAHID5qIhIgNEkgJyAHIDpqIiZJcSBbIAcgP2oiNSA0SSAnIAcgQ2oiN0lxciAoIDdJIDUgO0lxciAwIDdJIDUgOUlxciAtIDdJIBEgNUtxciBeciBdcnIgEiA7SSAmIChLcXIgEiA5SSAmIDBLcXIgJiAtSyARIBJLcXJyDQAgByA9aiISIDRJICcgByA8aiImSXENACASIDtJICYgKEtxDQAgEiA5SSAmIDBLcQ0AICYgLUsgESASS3ENACAHIC9qIhIgNEkgJyAHIERqIgdJcQ0AIBIgO0kgByAoS3ENACASIDlJIAcgMEtxDQAgByAtSyARIBJLcQ0AA0AgBiABIEFqQQJ0aiATIAFBBXRqIgf9CQIQIAcqAjD9IAEgByoCUP0gAiAHKgJw\u002FSAD\u002FQsCACAGIAEgMmpBAnRqIAf9CQIUIAcqAjT9IAEgByoCVP0gAiAHKgJ0\u002FSAD\u002FQsCACAGIAEgRWpBAnRqIAf9CQIYIAcqAjj9IAEgByoCWP0gAiAHKgJ4\u002FSAD\u002FQsCACAGIAEgSWpBAnRqIAf9CQIcIAcqAjz9IAEgByoCXP0gAiAHKgJ8\u002FSAD\u002FQsCACABQQRqIgEgCEcNAAsgCCIBIA5GDQELA0AgBiABIEFqQQJ0aiATIAFBBXRqIgcqAhA4AgAgBiABIDJqQQJ0aiAHKgIUOAIAIAYgASBFakECdGogByoCGDgCACAGIAEgSWpBAnRqIAcqAhw4AgAgAUEBaiIBIA5HDQALCyAYQQFqIRggDEEIaiEHIAYgUUECdGohBiAMQQ9qIA9JDQALDAELIA8gD0EDdiIHICsgByArSRsiEm5BeHEhESAPQXhxIQdBACEIIAohBgNAQTAQDSIMRQ0EIAwgRhAWIiM2AgAgI0UEQCAfEBogDBAJQQAMBgsgDCAGNgIoIAwgEDYCJCAMIA42AiAgDCATNgIcIAxBADYCGCAMIAE2AhQgDEEANgIQIAwgGDYCDCAMIAE2AgggDCATNgIEIAwgByAIIBFsayARIAhBAWoiCCASRhsiIzYCLCAfQQwgDBAmIAYgECAjbEECdGohBiAIIBJHDQALIB8QGgsCQCAHIA9PDQAgHEEgaiIBIAYgECAPIAdrIhgQNCABEBwgDkUNACAcKAIgIiMgHkEFdEEBIBggGEEBTRsiEkECdGogIEEFdGtqQSBrIR4gEkEDcSEgIBJBfHEhDCBBIBJBAWtsISFBACEIA0AgIyAIQQV0aiETQQAhBwJAAkAgGEEESQ0AIB4gBiAIQQJ0IhFqIgEgBiARICFqaiIRIAEgEUkbSwRAICMgASARIAEgEUsbQQRqSQ0BCyAI\u002FREhgQH9DAAAAAABAAAAAgAAAAMAAAAhgAFBACEBA0AgBiCAASCEAf21ASCBAf2uASKCAf0bAEECdGogEyABQQJ0av0AAgAigwH9HwA4AgAgBiCCAf0bAUECdGoggwH9HwE4AgAgBiCCAf0bAkECdGoggwH9HwI4AgAgBiCCAf0bA0ECdGoggwH9HwM4AgAggAH9DAQAAAAEAAAABAAAAAQAAAD9rgEhgAEgAUEEaiIBIAxHDQALIAwiByASRg0BC0EAIREgByEBICAEQANAIAYgASAQbCAIakECdGogEyABQQJ0aioCADgCACABQQFqIQEgEUEBaiIRICBHDQALCyAHIBJrQXxLDQADQCAGIAEgEGwgCGpBAnRqIBMgAUECdGoqAgA4AgAgBiABQQFqIgcgEGwgCGpBAnRqIBMgB0ECdGoqAgA4AgAgBiABQQJqIgcgEGwgCGpBAnRqIBMgB0ECdGoqAgA4AgAgBiABQQNqIgcgEGwgCGpBAnRqIBMgB0ECdGoqAgA4AgAgGCABQQRqIgFHDQALCyAIQQFqIgggDkcNAAsLIBwgDyAcKAIIIgxrIhM2AgQgFSgCnAEhASAcQQA2AhAgHCAMNgIUIBxBADYCGCAcIBM2AhwgHCABQQJvIhg2AgwCQCBaRSAOQQ9LcUUEQCAKIQEgDkEISQ0BIA9BfnEhISAPQQFxISIgE0F+cSEoIBNBAXEhJyAMQX5xITAgDEEBcSEtICkgJEF\u002Fc2ohIyAcKAIAIhIgGEEFdCIHaiEgIBIgB2tBIGohHiAMIBBsQQJ0ISogDiEIA0BBACEGQQAhBwJAAkACQCAMDgICAQALA0AgICAGQQZ0aiIRIAEgBiAQbEECdGoiJf0AAgD9CwIAIBEgJf0AAhD9CwIQICAgBkEBciIRQQZ0aiIlIAEgECARbEECdGoiEf0AAhD9CwIQICUgEf0AAgD9CwIAIAZBAmohBiAHQQJqIgcgMEcNAAsLIC1FDQAgICAGQQZ0aiIHIAEgBiAQbEECdGoiBv0AAgD9CwIAIAcgBv0AAhD9CwIQCwJAIAwgD0YNACABICpqIQdBACEGQQAhESAMICNHBEADQCAeIAZBBnRqIiUgByAGIBBsQQJ0aiIs\u002FQACAP0LAgAgJSAs\u002FQACEP0LAhAgHiAGQQFyIiVBBnRqIiwgByAQICVsQQJ0aiIl\u002FQACEP0LAhAgLCAl\u002FQACAP0LAgAgBkECaiEGIBFBAmoiESAoRw0ACwsgJ0UNACAeIAZBBnRqIhEgByAGIBBsQQJ0aiIH\u002FQACAP0LAgAgESAH\u002FQACEP0LAhALIBwQHAJAIA9FDQBBACEGQQAhByAjBEADQCABIAYgEGxBAnRqIhEgEiAGQQV0aiIl\u002FQACAP0LAgAgESAl\u002FQACEP0LAhAgASAGQQFyIhEgEGxBAnRqIiUgEiARQQV0aiIR\u002FQACEP0LAhAgJSAR\u002FQACAP0LAgAgBkECaiEGIAdBAmoiByAhRw0ACwsgIkUNACABIAYgEGxBAnRqIgcgEiAGQQV0aiIG\u002FQACAP0LAgAgByAG\u002FQACEP0LAhALIAFBIGohASAIQQhrIghBB0sNAAsMAQtBASAOQQN2IgEgRyABIEdJGyIIIAhBAU0bIREgDiAIbkF4cSESIA5BeHEhIEEAIQcgCiEBA0BBMBANIgZFDQQgBiBGEBYiHjYCACAeRQRAIB8QGiAGEAlBAAwGCyAGIAE2AiggBiAQNgIkIAYgDzYCICAGIBM2AhwgBkEANgIYIAYgDDYCFCAGQQA2AhAgBiAYNgIMIAYgDDYCCCAGIBM2AgQgBiAgIAcgEmxrIBIgB0EBaiIHIAhGGyIeNgIsIB9BDSAGECYgASAeQQJ0aiEBIAcgEUcNAAsgHxAaCwJAIA5BB3EiEkUNACAYQQV0ISAgHCgCACEIAkAgDEUNACAIICBqIREgEkECdCEYQQAhBiAMQQFHBEAgDEF+cSEeQQAhBwNAIBEgBkEGdGogASAGIBBsQQJ0aiAYEAsaIBEgBkEBciIjQQZ0aiABIBAgI2xBAnRqIBgQCxogBkECaiEGIAdBAmoiByAeRw0ACwsgDEEBcUUNACARIAZBBnRqIAEgBiAQbEECdGogGBALGgsCQCAMIA9GDQAgCCAga0EgaiEHIAEgDCAQbEECdGohESASQQJ0IRhBACEGIAwgKSAkQX9zakcEQCATQX5xISBBACEMA0AgByAGQQZ0aiARIAYgEGxBAnRqIBgQCxogByAGQQFyIh5BBnRqIBEgECAebEECdGogGBALGiAGQQJqIQYgDEECaiIMICBHDQALCyATQQFxRQ0AIAcgBkEGdGogESAGIBBsQQJ0aiAYEAsaCyAcEBwgD0UNACASQQJ0IQdBACEGICRBAWogKUcEQCAPQX5xIQxBACERA0AgASAGIBBsQQJ0aiAIIAZBBXRqIAcQCxogASAGQQFyIhMgEGxBAnRqIAggE0EFdGogBxALGiAGQQJqIQYgEUECaiIRIAxHDQALCyAPQQFxRQ0AIAEgBiAQbEECdGogCCAGQQV0aiAHEAsaCyAVQZgBaiEVIBZBAWsiFg0AC0EBDAILQQEhByAJKAIcIgwgCEGYAWxqIiNBmAFrIi8oAgAgI0GQAWsoAgBGDQIgI0GUAWsiPSgCACAjQYwBaygCAEYNAiAMKAIEIQ8gDCgCDCEWIAwoAgAhECAMKAIIIRMgCSgCRCESIAkoAkAhESAJKAI8IRogCSgCOCEfIAkgCBBVIh5FBEBBACEHDAMLIAhBAUYEQCAeICNBEGsoAgAiASAvKAIAIgZrICNBDGsoAgAgPSgCACIKayAjQQhrKAIAIgggBmsgI0EEaygCACAKayAJKAI0QQEgCCABaxAXIB4QHQwDC0EAIQYCQAJAIAhBAWsiCkEESQRAIAohByAMIQEMAQsgCkEDcSEHIAwgCkF8cSIVQZgBbGohAQNAIIABIAwgDkGYAWxqIgZB6ARqIAZB0ANqIAZBuAJqIAb9CQKgAf1WAgAB\u002FVYCAAL9VgIAAyAGQeAEaiAGQcgDaiAGQbACaiAG\u002FQkCmAH9VgIAAf1WAgAC\u002FVYCAAP9sQH9uQEgBkHsBGogBkHUA2ogBkG8AmogBv0JAqQB\u002FVYCAAH9VgIAAv1WAgADIAZB5ARqIAZBzANqIAZBtAJqIAb9CQKcAf1WAgAB\u002FVYCAAL9VgIAA\u002F2xAf25ASGAASAOQQRqIg4gFUcNAAsggAEggAEggAH9DQgJCgsMDQ4PAAECAwABAgP9uQEigAEggAEggAH9DQQFBgcAAQIDAAECAwABAgP9uQH9GwAhBiAKIBVGDQELA0AgBiABKAKgASABKAKYAWsiCiAGIApLGyIGIAEoAqQBIAEoApwBayIKIAYgCksbIQYgAUGYAWohASAHQQFrIgcNAAsLAkAgBkGAgIDAAE8NACAcIAZBBXQQFiIhNgIgICFFDQAgHCAhNgIAAkAgCARAIBYgD2shCiATIBBrIQYgIUEgaiE+IAitIYcBIBKtIYoBIBGtIYsBIBqtIYgBIB+tIYwBIAkoAhQiQq0hjQFCASGGAQNAIBwgCjYCCCAcIAY2AiggDCgCpAEhByAMKAKgASEIIAwoApwBIQEgHCAMKAKYASIVQQJvIiI2AiwgHCABQQJvIj82AgwgHCAIIBVrIiAgBmsiKDYCJCAcIAcgAWsiEyAKayI4NgIEIB8iFiEIIBoiASEOIBEiByEYIBIiFSEPAkAghgEgjQFRDQAgQiCGAadrIRBBACEOQQAhCCAWBEBCfyAQrSKJAYZCf4UgjAF8IIkBiKchCAsgGgRAQn8gEK0iiQGGQn+FIIgBfCCJAYinIQ4LQQAhFUEAIQcgEQRAQn8gEK0iiQGGQn+FIIsBfCCJAYinIQcLIBIEQEJ\u002FIBCtIokBhkJ\u002FhSCKAXwgiQGIpyEVC0EAIRhBACEWQQEgEEEBa3QiGyAfSQRAIB8gG2utQn8gEK0iiQGGQn+FfCCJAYinIRYLIBEgG0sEQCARIBtrrUJ\u002FIBCtIokBhkJ\u002FhXwgiQGIpyEYC0EAIQ9BACEBIBogG0sEQCAaIBtrrUJ\u002FIBCtIokBhkJ\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\u002FVYCAAH9VgIAAv1WAgAD\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\u002FQwAAAAAAAAAAAAAAAAAAAAA\u002FQ0ABAgMAAAAAAAAAAAAAAAA\u002FVoAAAAgCkEEaiIKIANHDQALIH8hByADIgIgC0YNAgwBCyABIQZBACECC0EAIQogCyACIgFrQQdxIhYEQANAIAcgBigCADoAACABQQFqIQEgB0EBaiEHIAZBBGohBiAKQQFqIgogFkcNAAsLIAIgC2tBeEsNAANAIAcgBigCADoAACAHIAYoAgQ6AAEgByAGKAIIOgACIAcgBigCDDoAAyAHIAYoAhA6AAQgByAGKAIUOgAFIAcgBigCGDoABiAHIAYoAhw6AAcgB0EIaiEHIAZBIGohBiABQQhqIgEgC0cNAAsLIAYgDEECdGohASANQQFqIg0gCUcNAAsLIBdBzABqIRcgCEE0aiEIQQEhBiByQQFqInIgFSgCGCgCEEkNAAsLIAYLRQ0BIE8oAtwrIgFFDQAgARAJIE9CADcC3CsLIAAgAC0AREH+AXE6AEQgACAAKAIIQf9+cTYCCEEBIWcgBCkDCCKGAVAEfkIABSCGASAEKQM4fQtQIAAoAggiAUHAAEZxDQAgAUGAAkYNACAEIE5BCmpBAiAFEBJBAkcEQCAFQQFBAiAAKAK4ARtBlhJBABAIIAAoArgBRSFnDAELIE5BCmogTkEMakECEAogTigCDCIBQZD\u002FA0YNACABQdn\u002FA0YEQCAAQYACNgIIIABBADYCzAEMAQsgBCkDCCKGAVAEfkIABSCGASAEKQM4fQtQBEAgAEHAADYCCCAFQQJBrT5BABAIDAELQQAhZyAFQQFB7T1BABAICyBOQRBqJAAgZwsLACAABEAgABAJCwu0AQEBfyAAKAIMRQRAIAIgACgCJCABEQMADwsCQEEIEA0iA0UNACADIAI2AgQgAyABNgIAQQgQDSIBRQRAIAMQCQ8LIAEgAzYCACAAIAAoAgRB5ABsIgI2AigDQCAAKAIYIAJKDQALIAEgACgCFDYCBCAAIAE2AhQgACAAKAIYQQFqNgIYIAAoAhwiAUUNACABKAIAQQA2AgggACABKAIENgIcIAAgACgCIEEBazYCICABEAkLCy8BAX8gAARAIAAoAgQiAQRAIAAoAgAgARECAAsgACgCIBAJIABBADYCICAAEAkLCyoAIAAEQCAAKAIwIABBFEEQIAAoAkwbaigCABECACAAQQA2AjAgABAJCwv6AgEEfwJAIABFDQAgACgCrCgiAQRAIAAoAqgoIgIEQEEAIQEDQCAAKAKsKCABQQN0aigCACIDBEAgAxAJIAAoAqgoIQILIAFBAWoiASACSQ0ACyAAKAKsKCEBCyAAQQA2AqgoIAEQCSAAQQA2AqwoCyAAKAK0KCIBBEAgARAJIABBADYCtCgLIAAoAtArIgEEQCABEAkgAEEANgLQKwsgACgC7CsiAQRAIAEQCSAAQQA2AuwrCyAAKALoKyIBBEAgARAJIABBADYC6CsLIAAoAvwrIgEEQCABEAkgAEEANgKELCAAQgA3AvwrCyAAKALwKyIBBEAgACgC9CsiAwR\u002FQQAhAgNAIAEoAgwiBARAIAQQCSABQQA2AgwgACgC9CshAwsgAUEUaiEBIAJBAWoiAiADSQ0ACyAAKALwKwUgAQsQCSAAQQA2AvArCyAAKALkKyIBBEAgARAJIABBADYC5CsLIAAoAtwrIgFFDQAgARAJIABCADcC3CsLC8gHAhF\u002FAX4gACgCECIIQSBPBEAgACkDCKcPCwJAIAAoAhQiA0EETgRAIAAoAgAiAkEDaygCACEBIAAgA0EEayIDNgIUIAAgAkEEazYCAAwBCyADQQBMBEAMAQsgA0EBcSENIAAoAgAhAgJAIANBAUYEQEEYIQQMAQsgA0H+\u002F\u002F\u002F\u002FB3EhCUEYIQQDQCAAIAJBAWsiBjYCACACLQAAIQwgACACQQJrIgI2AgAgACADQQFrNgIUIAYtAAAhBiAAIANBAmsiAzYCFCAMIAR0IAFyIAYgBEEIa3RyIQEgBEEQayEEIAVBAmoiBSAJRw0ACwsgDQRAIAAgAkEBazYCACACLQAAIQ4gACADQQFrNgIUIA4gBHQgAXIhAQtBACEDCyAAKAIYIQIgACABQf8BcSIJQY8BSzYCGCAAQQdBCCABQYCAgPgHcUGAgID4B0YbQQggAhsiAkEIQQdBCCABQYCA\u002FANxQYCA\u002FANGGyABQf\u002F\u002F\u002F\u002F94TRtqIgRBCEEHQQggAUGA\u002FgFxQYD+AUYbIAFBEHZB\u002FwFxIgVBjwFNG2oiBkEIQQdBCCABQf8AcUH\u002FAEYbIAFBCHZB\u002FwFxIgdBjwFNGyAIamoiCjYCECAAIAApAwggBSACdCABQRh2ciAHIAR0ciAJIAZ0cq0gCK2GhCISNwMIIApBH00EQAJAIANBBE4EQCAAKAIAIgJBA2soAgAhASAAIANBBGs2AhQgACACQQRrNgIADAELIANBAEwEQEEAIQEMAQsgA0EBcSEQIAAoAgAhAgJAIANBAUYEQEEYIQRBACEBDAELIANB\u002Fv\u002F\u002F\u002FwdxIQZBGCEEQQAhAUEAIQUDQCAAIAJBAWsiBzYCACACLQAAIQ8gACACQQJrIgI2AgAgACADQQFrNgIUIActAAAhByAAIANBAmsiAzYCFCAPIAR0IAFyIAcgBEEIa3RyIQEgBEEQayEEIAVBAmoiBSAGRw0ACwsgEEUNACAAIAJBAWs2AgAgAi0AACERIAAgA0EBazYCFCARIAR0IAFyIQELIAAgAUH\u002FAXEiAkGPAUs2AhggAEEIQQdBCCABQYCAgPgHcUGAgID4B0YbIAlBjwFNGyIDQQhBB0EIIAFBgID8A3FBgID8A0YbIAFB\u002F\u002F\u002F\u002F\u002F3hNG2oiBEEIQQdBCCABQYD+AXFBgP4BRhsgAUEQdkH\u002FAXEiBUGPAU0baiIIQQhBB0EIIAFB\u002FwBxQf8ARhsgAUEIdkH\u002FAXEiCUGPAU0bIApqajYCECAAIAUgA3QgAUEYdnIgCSAEdHIgAiAIdHKtIAqthiAShCISNwMICyASpwvJFAIdfwZ7IAAoAggiCiAAKAIEaiEIAkAgACgCDEUEQCAIQQJIDQEgA0EATA0BIAAoAgAiBSAIQQRrIgZBAXYiDEECdCIJIAEgCkECdGoiByADQQJ0IgRqakEEakkgBSAMQQN0akEIaiIAIAdBBGpLcSAFIAEgBGogCWpBBGpJIAFBBGogAElxciESIAhBBEkiFCACQQFHciEVIAJBAUYgBkEFS3EhFiAIQfz\u002F\u002F\u002F8HcSETIAhBAXEhFyAKQQFqIQ8gCEEDcSERIAEgBWshGCAFIAhBAnRqIRkgBSAIQQFrIgBBAnRqIRogDEEBaiIbQXxxIhBBAXQhCyACIApsQQJ0IRwgAEEBdiACbEECdCEdA0AgASgCACABIBxqKAIAIglBAWpBAXVrIQcCQCAUBEAgCSEEQQAhBgwBC0EAIQYCQAJ\u002FQQAgFkUNABpBACASDQAaIAn9ESEiIAf9ESEh\u002FQwAAAAAAgAAAAQAAAAGAAAAISVBACEAA0AgASAAQQJ0av0AAgQhJCABIAAgD2pBAnRq\u002FQACACEjIAUgAEEDdGoiBCAh\u002FVoCAAMgBEEIaiAkICMgIiAj\u002FQ0MDQ4PEBESExQVFhcYGRobIiT9rgH9DAIAAAACAAAAAgAAAAIAAAD9rgFBAv2sAf2xASIi\u002FVoCAAAgBEEQaiAi\u002FVoCAAEgBEEYaiAi\u002FVoCAAIgBSAl\u002FQwBAAAAAQAAAAEAAAABAAAA\u002FVAiJv0bAEECdGogIiAhICL9DQwNDg8QERITFBUWFxgZGhv9rgFBAf2sASAk\u002Fa4BIiH9WgIAACAFICb9GwFBAnRqICH9WgIAASAFICb9GwJBAnRqICH9WgIAAiAFICb9GwNBAnRqICH9WgIAAyAl\u002FQwIAAAACAAAAAgAAAAIAAAA\u002Fa4BISUgIiEhICMhIiAAQQRqIgAgEEcNAAsgIv0bAyEEICH9GwMhByAQIBtGDQEgCyEGIAQhCSAQCyEAA0AgASAAQQFqIgogAmxBAnRqKAIAIR4gASAAIA9qIAJsQQJ0aigCACEEIAUgBkECdGoiDiAHNgIAIA4gByAeIAQgCWpBAmpBAnVrIgdqQQF1IAlqNgIEIAZBAmohBiAAIAxHIR8gBCEJIAohACAfDQALDAELIAshBgsgBSAGQQJ0aiAHNgIAQXwhACAXBH8gGiABIB1qKAIAIARBAWpBAXVrIgA2AgAgACAHakEBdSEHQXgFQXwLIBlqIAQgB2o2AgBBACEGQQAhAEEAIQQCQCAVIBggDUECdGpBEElyRQRAA0AgASAAQQJ0IgRqIAQgBWr9AAIA\u002FQsCACAAQQRqIgAgE0cNAAsgEyIEIAhGDQELIAQhACARBEADQCABIAAgAmxBAnRqIAUgAEECdGooAgA2AgAgAEEBaiEAIAZBAWoiBiARRw0ACwsgBCAIa0F8Sw0AA0AgASAAIAJsQQJ0aiAFIABBAnRqKAIANgIAIAEgAEEBaiIEIAJsQQJ0aiAFIARBAnRqKAIANgIAIAEgAEECaiIEIAJsQQJ0aiAFIARBAnRqKAIANgIAIAEgAEEDaiIEIAJsQQJ0aiAFIARBAnRqKAIANgIAIABBBGoiACAIRw0ACwsgAUEEaiEBIA1BAWoiDSADRw0ACwwBCwJAAkACQCAIQQFrDgIAAQILIANBAEwNAkEAIQICQCADQQRJBEAgASEADAELIAEgA0H8\u002F\u002F\u002F\u002FB3EiAkECdGohAANAIAEgBkECdGoiBCAE\u002FQACACIh\u002FRsAQQJt\u002FREgIf0bAUECbf0cASAh\u002FRsCQQJt\u002FRwCICH9GwNBAm39HAP9CwIAIAZBBGoiBiACRw0ACyACIANGDQMLA0AgACAAKAIAQQJtNgIAIABBBGohACACQQFqIgIgA0cNAAsMAgsgA0EATA0BIAAoAgAhCSACIApsQQJ0IQcDQCAJIAEoAgAgASAHaiIEKAIAQQFqQQF1ayIANgIEIAkgACAEKAIAaiIANgIAIAEgADYCACABIAJBAnRqIAkoAgQ2AgAgAUEEaiEBIAZBAWoiBiADRw0ACwwBCyAIQQNIDQAgA0EATA0AIAAoAgAiBSAIIAhBAXEiFEUiBmtBBGsiCUEBdiILQQJ0IgcgASADQQJ0IgBqakkgBSALQQN0akEMaiIEIAFBBGpLcSAFQQRqIAAgASAKQQJ0aiIAaiAHakEIakkgAEEIaiAESXFyIRUgAkEBRyAIQQRJciEWIAJBAUYgCUEFS3EhFyAIQfz\u002F\u002F\u002F8HcSEQIAhBA3EhESABIAVrIRggBSAIQQJ0akEEayEZIAUgCEECayIAQQJ0aiEaIAtBAWoiEkF8cSIMQQFyIRMgDEEBdEEBciELIAIgCmxBAnQhGyAAIAZrQQJJIRwgCEEBdkEBayACbEECdCEdA0AgBSABKAIAIAEgG2oiDyACQQJ0aigCACIJIA8oAgAiAGpBAmpBAnVrIgcgAGo2AgBBASEEAkAgHARAIAkhBgwBCwJAAn9BASAXRQ0AGkEBIBUNABogCf0RISEgB\u002F0RISJBACEAA0AgBSAAQQN0aiIHIAEgAEECdCIEav0AAgQgISAEIA9q\u002FQACCCIh\u002FQ0MDQ4PEBESExQVFhcYGRobIiQgIf2uAf0MAgAAAAIAAAACAAAAAgAAAP2uAUEC\u002FawB\u002FbEBIiMgIyAiICP9DQwNDg8QERITFBUWFxgZGhv9rgFBAf2sASAk\u002Fa4BIiT9DQQFBgcYGRobCAkKCxwdHh\u002F9CwIUIAcgIiAk\u002FQ0MDQ4PEBESEwABAgMUFRYXICP9DQABAgMEBQYHEBESEwwNDg\u002F9CwIEICMhIiAAQQRqIgAgDEcNAAsgIf0bAyEGICL9GwMhByAMIBJGDQEgCyEEIAYhCSATCyEAA0AgASAAIAJsQQJ0aigCACEeIA8gAEEBaiIKIAJsQQJ0aigCACEGIAUgBEECdGoiDiAHNgIAIA4gByAeIAYgCWpBAmpBAnVrIgdqQQF1IAlqNgIEIARBAmohBCAAIBJHISAgCiEAIAYhCSAgDQALDAELIAshBAsgGCANQQJ0aiEJIAUgBEECdGogBzYCAAJAIBRFBEAgGiABIB1qKAIAIAZBAWpBAXVrIgAgB2pBAXUgBmo2AgAMAQsgBiAHaiEACyAZIAA2AgBBACEGQQAhAEEAIQQCQCAWIAlBEElyRQRAA0AgASAAQQJ0IgRqIAQgBWr9AAIA\u002FQsCACAAQQRqIgAgEEcNAAsgECIEIAhGDQELIAQhACARBEADQCABIAAgAmxBAnRqIAUgAEECdGooAgA2AgAgAEEBaiEAIAZBAWoiBiARRw0ACwsgBCAIa0F8Sw0AA0AgASAAIAJsQQJ0aiAFIABBAnRqKAIANgIAIAEgAEEBaiIEIAJsQQJ0aiAFIARBAnRqKAIANgIAIAEgAEECaiIEIAJsQQJ0aiAFIARBAnRqKAIANgIAIAEgAEEDaiIEIAJsQQJ0aiAFIARBAnRqKAIANgIAIABBBGoiACAIRw0ACwsgAUEEaiEBIA1BAWoiDSADRw0ACwsLNwECfyMAQRBrIgEkACAABH8gAUEMakEgIAAQZSEAQQAgASgCDCAAGwVBAAshAiABQRBqJAAgAgsbAQF\u002FIAAEQCAAKAIIIgEEQCABEAkLIAAQCQsLMQECf0EBQQwQDCIABEAgAEEKNgIEIABBCkEEEAwiATYCCCABBEAgAA8LIAAQCQtBAAtTAQJ\u002FIABBADYCMCAAIAAoAiA2AiQgASAAKAIAIAAoAhwRCQAhBCAAKAJEIQIgBEUEQCAAIAJBBHI2AkRBAA8LIAAgATcDOCAAIAJBe3E2AkRBAQuGAwIFfwp+IwBBIGsiAyQAAkAgACgCECIFRQRAQQEhAgwBCwJAIAA0AgAiB0IAUw0AIAA0AgQiCEIAUw0AIAA0AggiCUIAUw0AIAA0AgwiCkIAUw0AIAAoAhghACAHQgF9IQwgCEIBfSENIAlCAX0hCSAKQgF9IQoDQCAAIAwgACgCACICrSIHfCAHgCILPgIQIAAgDSAAKAIEIgatIgd8IAeAIg4+AhRCASAANQIoIgeGIg9CAX0iCCAJIAKsIhB8IBB\u002FxHwgB4enIAggC8R8IAeHp2siAkEASARAIAMgAjYCBCADIAQ2AgAgAUEBQePkACADEAhBACECDAMLIAAgAjYCCCAIIAogBqwiC3wgC3\u002FEfCAHh6cgDsQgD3xCAX0gB4enayICQQBIBEAgAyACNgIUIAMgBDYCECABQQFBqOUAIANBEGoQCEEAIQIMAwsgACACNgIMIABBNGohAEEBIQIgBEEBaiIEIAVHDQALDAELIAFBAUGnM0EAEAgLIANBIGokACACC9cGAQZ\u002FIAAEQAJAIAAoAgAEQCAAKAIMIgEEQCABECkgACgCDBAJIABBADYCDAsgACgCECIBBEAgARAJIABCADcDEAsgACgCQBAJIABCADcCPAwBCyAAKAIsIgEEQCABEAkgAEEANgIsCyAAKAIgIgEEQCABEAkgAEIANwMgCyAAKAI0IgFFDQAgARAJIABCADcCNAsgACgC0AEQTiAAKAKcASIBBEAgACgCaCAAKAJsbCIDBH8DQCABECkgAUGMLGohASACQQFqIgIgA0cNAAsgACgCnAEFIAELEAkgAEEANgKcAQsgACgCdCIBBEAgACgCcCICBEBBACEBA0AgACgCdCABQQN0aigCACIDBEAgAxAJIAAoAnAhAgsgAUEBaiIBIAJJDQALIAAoAnQhAQsgAEEANgJwIAEQCSAAQQA2AnQLIAAoAogBEAkgAEEANgJ4IABBADYCiAEgACgCZBAJIABBADYCZCAALQC8AUECcUUEQCAAKAKoARAJCyAAQdAAakEAQfAAEA4aIAAoAsABEC0gAEEANgLAASAAKALEARAtIABBADYCwAEgACgCyAEiAQRAIAEoAhwiAgRAIAIQCSABQQA2AhwLIAEoAigiAgRAIAEoAiQEQANAIAIgBUEobCIDaigCJCIEBEAgBBAJIAEoAigiAiADakEANgIkCyACIANqKAIQIgQEQCAEEAkgASgCKCICIANqQQA2AhALIAIgA2ooAhgiBARAIAQQCSABKAIoIgIgA2pBADYCGAsgBUEBaiIFIAEoAiRJDQALCyACEAkgAUEANgIoCyABEAkLIABBADYCyAEgACgCSBAYIABBADYCSCAAKAJMEBggAEEANgJMIAAoAtQBIgMEQAJAIAMoAghFDQAgAygCDARAIANBADYCKANAIAMoAhhBAEoNAAsLIANBATYCECADKAIAEAkgAygCHCICRQ0AA0AgAigCBCEBIAIQCSADIAE2AhwgASICDQALCyADKAIkIgIEQCACKAIEIgVBAEoEQEEAIQEDQCACKAIAIAFBDGxqIgQoAggiBgRAIAQoAgQgBhECACACKAIEIQULIAFBAWoiASAFSA0ACwsgAigCABAJIAIQCQsgAxAJCyAAQQA2AtQBIAAQCQsL5gMCCH8EfiAAKAIUKAIAKAIUIAFBzABsaiIJKAIMIgggACgCGCgCGCABQTRsaiIKNQIEIhBCAX0iEiAANQI8fCAQgKciCyAIIAtJGyEMIAkoAggiCCAKNQIAIhFCAX0iEyAANQI4fCARgKciCiAIIApJGyEKIAkoAgQiCCASIAA1AjR8IBCApyILIAggC0sbIQsgCSgCACIIIBMgADUCMHwgEYCnIg0gCCANSxshDUEAIQggACgCICgC0CsgAUG4CGxqKAIUIQ4CQCAJKAIUQQAgAmtBfyACG2oiAkUEQCAKIQAgDSEIIAshAQwBCyADQQFxIAJBAWsiD3QiCSANSQRAIA0gCWutQn8gAq0iEIZCf4V8IBCIpyEIC0EAIQBBACEBIANBAXYgD3QiAyALSQRAIAsgA2utQn8gAq0iEIZCf4V8IBCIpyEBCyAJIApJBEAgCiAJa61CfyACrSIQhkJ\u002FhXwgEIinIQALIAMgDE8EQEEAIQwMAQsgDCADa61CfyACrSIQhkJ\u002FhXwgEIinIQwLQX8gAEECQQMgDkEBRhsiAmoiAyAAIANLGyAES0F\u002FIAIgDGoiACAAIAxJGyAFS3EgCCACayIAQQAgACAITRsgBklxIAEgAmsiAEEAIAAgAU0bIAdJcQuiAQEGfyAABEAgACgCBCICBEAgAhAJIABBADYCBAsgAQRAIAAhAgNAIAIoAsgBIgMEQEEAIQUgAigCxAEiBAR\u002FA0AgAygCDCIGBEAgBhAJIANBADYCDCACKALEASEECyADQRBqIQMgBUEBaiIFIARJDQALIAIoAsgBBSADCxAJIAJBADYCyAELIAJB8AFqIQIgB0EBaiIHIAFHDQALCyAAEAkLC9UZAhN\u002FA3sgACgCACIKIAAoAgwiDUEFdCIFaiEGIAogBWshFiAAKAIQIQUgACgCHCELIAAoAhQhCSAAKAIIIQ4CQAJAAkACQCADQQhJDQAgAUEPcQ0AIAZBD3FFDQELIAUgCU8NAgJAAkAgA0EBaw4CAAEDCwJAIAkgBWsiCEEYSQ0AIAEgBUECdGohByANQQV0IgQgCiAFQQZ0amogASAJQQJ0akkEQCAHIAogCUEGdGogBGpBPGtJDQELIAX9Ef0MAAAAAAEAAAACAAAAAwAAAP2uASEYIAUgCEF8cSIPaiEFQQAhBANAIAYgGEEE\u002FasBIhf9GwBBAnRqIAcgBEECdGr9AAIAIhn9HwA4AgAgBiAX\u002FRsBQQJ0aiAZ\u002FR8BOAIAIAYgF\u002F0bAkECdGogGf0fAjgCACAGIBf9GwNBAnRqIBn9HwM4AgAgGP0MBAAAAAQAAAAEAAAABAAAAP2uASEYIARBBGoiBCAPRw0ACyAIIA9GDQQLIAUhBCAJIAVrQQNxIgcEQEEAIQgDQCAGIARBBnRqIAEgBEECdGoqAgA4AgAgBEEBaiEEIAhBAWoiCCAHRw0ACwsgBSAJa0F8Sw0DA0AgBiAEQQZ0aiABIARBAnRqKgIAOAIAIAYgBEEBaiIFQQZ0aiABIAVBAnRqKgIAOAIAIAYgBEECaiIFQQZ0aiABIAVBAnRqKgIAOAIAIAYgBEEDaiIFQQZ0aiABIAVBAnRqKgIAOAIAIARBBGoiBCAJRw0ACwwDCyABIAJBAnRqIQgCQCAJIAVrIg9BPEkEQCAFIQQMAQsgCiAFQQZ0IA1BBXRqaiIEIAkgBUF\u002Fc2oiB0EGdCIQaiAESQRAIAUhBAwBCyAEQQRqIgQgEGogBEkEQCAFIQQMAQsgB0H\u002F\u002F\u002F8fSwRAIAUhBAwBCyANQQV0IgQgCiAFQQZ0amoiByABIAIgCWpBAnRqSSAKIAlBBnRqIARqQThrIgQgASACIAVqQQJ0aktxBEAgBSEEDAELIAcgASAJQQJ0akkgASAFQQJ0aiAESXEEQCAFIQQMAQsgBf0R\u002FQwAAAAAAQAAAAIAAAADAAAA\u002Fa4BIRggBSAPQXxxIhBqIQRBACEHA0AgBiAYQQT9qwEiF\u002F0bAEECdGoiESABIAUgB2pBAnQiDGr9AAIAIhn9HwA4AgAgBiAX\u002FRsBQQJ0aiITIBn9HwE4AgAgBiAX\u002FRsCQQJ0aiIUIBn9HwI4AgAgBiAX\u002FRsDQQJ0aiIVIBn9HwM4AgAgESAIIAxq\u002FQACACIX\u002FR8AOAIEIBMgF\u002F0fATgCBCAUIBf9HwI4AgQgFSAX\u002FR8DOAIEIBj9DAQAAAAEAAAABAAAAAQAAAD9rgEhGCAHQQRqIgcgEEcNAAsgDyAQRg0DCyAEQQFqIQUgCSAEa0EBcQRAIAYgBEEGdGoiByABIARBAnQiBGoqAgA4AgAgByAEIAhqKgIAOAIEIAUhBAsgBSAJRg0CA0AgBiAEQQZ0aiIFIAEgBEECdCIHaioCADgCACAFIAcgCGoqAgA4AgQgBiAEQQFqIgVBBnRqIgcgASAFQQJ0IgVqKgIAOAIAIAcgBSAIaioCADgCBCAEQQJqIgQgCUcNAAsMAgsgBSAJTw0BIAEgAkECdGohCANAIAYgBUEGdGoiBCABIAVBAnRqKgIAOAIAIAQgASACIAVqIgdBAnRqKgIAOAIEIAQgASACIAdqIgdBAnRqKgIAOAIIIAQgASACIAdqIgdBAnRqKgIAOAIMIAQgASACIAdqIgdBAnRqKgIAOAIQIAQgASACIAdqIgdBAnRqKgIAOAIUIAQgASACIAdqQQJ0IgdqKgIAOAIYIAQgByAIaioCADgCHCAFQQFqIgUgCUcNAAsMAQsgASACQQJ0aiEIIANBA0YhByADQQRGIQ8gA0EFRiEQIANBB0YhEQNAIAYgBUEGdGoiBCABIAVBAnRqKgIAOAIAIAQgASACIAVqIgxBAnRqKgIAOAIEIAQgASACIAxqIgxBAnRqKgIAOAIIAkAgBw0AIAQgASACIAxqIgxBAnRqKgIAOAIMIA8NACAEIAEgAiAMaiIMQQJ0aioCADgCECAQDQAgBCABIAIgDGoiDEECdGoqAgA4AhQgA0EGRg0AIAQgASACIAxqQQJ0IgxqKgIAOAIYIBENACAEIAggDGoqAgA4AhwLIAVBAWoiBSAJRw0ACwsgFkEgaiEGIAEgDkECdGohBCAAKAIYIQUCQAJAAkAgA0EISQ0AIARBD3ENACAGQQ9xRQ0BCyAFIAtPDQECQAJAAkAgA0EBaw4CAAECCwJAIAsgBWsiAEEcSQ0AIAogBUEGdEEgciANQQV0IgJraiABIAsgDmpBAnRqSQRAIAEgBSAOakECdGogC0EGdCACayAKakEca0kNAQsgBCAFQQJ0aiEDIAX9Ef0MAAAAAAEAAAACAAAAAwAAAP2uASEYIAUgAEF8cSIBaiEFQQAhAgNAIAYgGEEE\u002FasBIhf9GwBBAnRqIAMgAkECdGr9AAIAIhn9HwA4AgAgBiAX\u002FRsBQQJ0aiAZ\u002FR8BOAIAIAYgF\u002F0bAkECdGogGf0fAjgCACAGIBf9GwNBAnRqIBn9HwM4AgAgGP0MBAAAAAQAAAAEAAAABAAAAP2uASEYIAJBBGoiAiABRw0ACyAAIAFGDQQLIAUhAiALIAVrQQNxIgAEQEEAIQEDQCAGIAJBBnRqIAQgAkECdGoqAgA4AgAgAkEBaiECIAFBAWoiASAARw0ACwsgBSALa0F8Sw0DA0AgBiACQQZ0aiAEIAJBAnRqKgIAOAIAIAYgAkEBaiIAQQZ0aiAEIABBAnRqKgIAOAIAIAYgAkECaiIAQQZ0aiAEIABBAnRqKgIAOAIAIAYgAkEDaiIAQQZ0aiAEIABBAnRqKgIAOAIAIAJBBGoiAiALRw0ACwwDCyAEIAJBAnRqIQMCQCALIAVrIgBBxABJBEAgBSECDAELIAogBUEGdCIJQSByIA1BBXQiCGtqIgcgCyAFQX9zaiIPQQZ0IhBqIAdJBEAgBSECDAELIAogCUEkciAIa2oiCSAQaiAJSQRAIAUhAgwBCyAPQf\u002F\u002F\u002Fx9LBEAgBSECDAELIAogBUEGdEEgciANQQV0IglraiINIAEgCyAOaiIIIAJqQQJ0akkgC0EGdCAJayAKakEYayIJIAEgDkECdGogBUECdGoiCiACQQJ0aktxBEAgBSECDAELIA0gASAIQQJ0akkgCSAKS3EEQCAFIQIMAQsgBf0R\u002FQwAAAAAAQAAAAIAAAADAAAA\u002Fa4BIRggBSAAQXxxIglqIQJBACEBA0AgBiAYQQT9qwEiF\u002F0bAEECdGoiCiAEIAEgBWpBAnQiDWr9AAIAIhn9HwA4AgAgBiAX\u002FRsBQQJ0aiIOIBn9HwE4AgAgBiAX\u002FRsCQQJ0aiIIIBn9HwI4AgAgBiAX\u002FRsDQQJ0aiIHIBn9HwM4AgAgCiADIA1q\u002FQACACIX\u002FR8AOAIEIA4gF\u002F0fATgCBCAIIBf9HwI4AgQgByAX\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\u002FAn8CQAJ\u002FAkACQCABDgIAAwELIAMoAgAMAQsgAygCAEEBdgsiBUHiAE8EfyAGQuGAgICQDDcCBCAGIAU2AgAgBEECQdX4ACAGEAggBygCGAUgAQsEQCAFIgENAUEADAILIAUEQCAHQRxqIQFBACECA0AgACAGQQxqQQEQCiACQeAATQRAIAYoAgwhBCABIAJBA3RqIghBADYCBCAIIARBA3Y2AgALIABBAWohACACQQFqIgIgBUcNAAsLQQAhAiADKAIAIgAgBUkNAyAAIAVrDAILIAdBHGohBEEAIQIDQCAAIAZBDGpBAhAKIAJB4ABNBEAgBCACQQN0aiIFIAYoAgwiCEH\u002FD3E2AgQgBSAIQQt2NgIACyAAQQJqIQAgAkEBaiICIAFHDQALIAFBAXQLIQBBACECIAMoAgAiASAASQ0BIAEgAGsLNgIAQQEhAiAHKAIYQQFHDQAgB0EcaiEEIAf9CQIcIQwgBygCICED\u002FQwBAAAAAgAAAAMAAAAEAAAAIQtBACEBA0AgBCABQQN0aiIAQRhqIAwgC\u002F0M\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F2uASIK\u002FRsAQQNu\u002FREgCv0bAUEDbv0cASAK\u002FRsCQQNu\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\u002FQQAFIAZBfnEhCEEAIQYDQAJ\u002FQQAgBUUNABpBACAAIAEgAyAHKAIAEQAARQ0AGiAAIAEgAyAHKAIEEQAAQQBHCyEFIAdBCGohByAGQQJqIgYgCEcNAAsgBUEBcwshBgJAAkAgCwRAIAYNASAAIAEgAyAHKAIAEQAAQQBHIQULIARBADYCACAFQQFxRQ0BDAMLIARBADYCAAsgACgCSBAYQQAhBSAAQQA2AkgMAgsgBEEANgIACyAAIAIQQCEFCyAKQRBqJAAgBQvyAwEFfwJAAkAgACgCPCICRQRAIAEoAhANAUEBDwsgAkE0bBANIgVFDQEgASgCEARAIAEoAhghAgNAIAIgA0E0bCIEaigCLBAJIAEoAhgiAiAEakEANgIsIANBAWoiAyABKAIQIgRJDQALCyABIAAoAjwEfyAAKAJMKAIYIQNBACECA0AgBSACQTRsaiIEIAMgACgCQCACQQJ0aigCAEE0bCIGaiID\u002FQACAP0LAgAgBCADKAIwNgIwIAQgA\u002F0AAiD9CwIgIAQgA\u002F0AAhD9CwIQIAQgACgCTCgCGCIDIAZqIgYoAiQ2AiQgBCAGKAIsNgIsIAZBADYCLCACQQFqIgIgACgCPCIGSQ0ACyABKAIQBSAECwR\u002FIAAoAkwoAhghAkEAIQMDQCACIANBNGwiBGooAiwQCSAAKAJMKAIYIgIgBGpBADYCLCADQQFqIgMgASgCEEkNAAsgACgCPAUgBgs2AhAgASgCGBAJIAEgBTYCGEEBDwsgASgCGCEEIAAoAkwoAhghA0EAIQIDQCAEIAJBNGwiBWoiBCADIAVqKAIkNgIkIAQoAiwQCSABKAIYIgQgBWogACgCTCgCGCIDIAVqIgUoAiw2AiwgBUEANgIsIAJBAWoiAiABKAIQSQ0AC0EBDwsgACgCSBAYIABBADYCSEEAC84EAQh\u002FAkAgAkUNAAJAIAAoAqABIgVFDQAgACgCSCIERQ0AIAQoAhBFDQAgBCgCGCgCKCAFRw0AIAIoAhAiCEUNACACKAIYIgYoAigNACAGKAIsDQBBACEEIAhBCE8EQCAIQXhxIQkDQCAGIARBNGxqIAU2AiggBiAEQQFyQTRsaiAFNgIoIAYgBEECckE0bGogBTYCKCAGIARBA3JBNGxqIAU2AiggBiAEQQRyQTRsaiAFNgIoIAYgBEEFckE0bGogBTYCKCAGIARBBnJBNGxqIAU2AiggBiAEQQdyQTRsaiAFNgIoIARBCGohBCAKQQhqIgogCUcNAAsLIAhBB3EiCARAA0AgBiAEQTRsaiAFNgIoIARBAWohBCALQQFqIgsgCEcNAAsLIAIgAxAwDQBBAA8LIAAoAkwiBUUEQCAAQQFBJBAMIgU2AkwgBUUNAQsgAiAFEDggACgCwAFBFiADEB5FDQAgACgCwAEiBigCACEEIAYoAgghBQJAIAQEQEEBIQcgBEEBcSEIIARBAUYEf0EABSAEQX5xIQlBACEEA0ACf0EAIAdFDQAaQQAgACABIAMgBSgCABEAAEUNABogACABIAMgBSgCBBEAAEEARwshByAFQQhqIQUgBEECaiIEIAlHDQALIAdBAXMLIQQCQAJAIAgEQCAEDQEgACABIAMgBSgCABEAAEEARyEHCyAGQQA2AgAgB0EBcUUNAQwDCyAGQQA2AgALIAAoAkgQGCAAQQA2AkhBAA8LIAZBADYCAAsgACACEEAhBwsgBwv4BAEGfwJAQQFBMBAMIgIEfyACIAAoAsgBIgH9AAMA\u002FQsDACACIAEpAxA3AxAgAiABKAIYIgE2AhggAiABQRhsEA0iATYCHCABRQRAIAIQCUEADwsCQCAAKALIASgCHCIDBEAgASADIAIoAhhBGGwQCxoMAQsgARAJIAJBADYCHAsgAiAAKALIASgCJCIBNgIkIAIgAUEoEAwiATYCKCABRQRAIAIoAhwQCSACEAlBAA8LAkAgACgCyAEoAigEQCACKAIkRQ0BA0AgASAFQShsIgNqIAAoAsgBKAIoIANqKAIUIgE2AhQgAUEYbBANIQEgAigCKCIEIANqIgYgATYCGCABRQRAIAUEf0EAIQEDQCACKAIoIAFBKGxqKAIYEAkgAUEBaiIBIAVHDQALIAIoAigFIAQLEAkMBQsCQCAAKALIASgCKCADaigCGCIEBEAgASAEIAYoAhRBGGwQCxogAigCKCEBDAELIAEQCSACKAIoIgEgA2pBADYCGAsgASADaiAAKALIASgCKCADaigCBCIBNgIEIAFBGGwQDSEBIAIoAigiBCADaiIGIAE2AhAgAUUEQCAFBH9BACEBA0AgAUEobCIAIAIoAihqKAIYEAkgAigCKCAAaigCEBAJIAFBAWoiASAFRw0ACyACKAIoBSAECxAJDAULAkAgACgCyAEoAiggA2ooAhAiBARAIAEgBCAGKAIEQRhsEAsaIAIoAighAQwBCyABEAkgAigCKCIBIANqQQA2AhALIAEgA2pCADcCICAFQQFqIgUgAigCJEkNAAsMAQsgARAJIAJBADYCKAsgAgVBAAsPCyACKAIcEAkgAhAJQQALoAYCDn8BeyMAQRBrIggkACAAKAJIKAIQIQ0gCEEBQTgQDCIBNgIMAkAgAUUNACABIAAoAkgoAhAiCTYCGCABIAD9AAJU\u002FQsCACABIAAoAmg2AhAgACgCbCECIAFBADYCNCABIAI2AhQgASAAKAIMIgwoAgA2AiAgASAMKAIENgIkIAEgDCgCCDYCKCABIAwoAhA2AiwgASAJQbgIEAwiADYCMCAABEAgDQRAA0AgDkG4CGwiACABKAIwaiIFIAwoAtArIABqIgT9AAIAIg\u002F9CwIEIAUgBCgCEDYCFCAFIAQoAhQ2AhggD\u002F0bASIAQSBNBEAgBUG0B2ogBEGwB2ogABALGiAFQbAGaiAEQawGaiAEKAIEEAsaCyAFIAQoAhgiADYCHCAFIAQoAqQGNgKoBkEBIQYCQCAAQQFHBEAgBCgCBEEDbCIAQQNrQd8ASw0BIABBAmshBgsgBUGkA2ohCSAFQSBqIQogBEEcaiELQQAhAAJAIAZBCEkNACAEIAZBA3RqQRxqIApLBEAgCyAFIAZBAnRqQaQDakkNAQsgBkF8cSEAQQAhAgNAIAogAkECdCIDaiALIAJBA3RqIgdBHGogB0EUaiAHQQxqIAf9CQIE\u002FVYCAAH9VgIAAv1WAgAD\u002FQsCACADIAlqIAdBGGogB0EQaiAHQQhqIAf9CQIA\u002FVYCAAH9VgIAAv1WAgAD\u002FQsCACACQQRqIgIgAEcNAAsgACAGRg0BCyAAQQFyIQMgBkEBcQRAIAogAEECdCICaiALIABBA3RqIgAoAgQ2AgAgAiAJaiAAKAIANgIAIAMhAAsgAyAGRg0AA0AgCiAAQQJ0IgJqIAsgAEEDdGoiAygCBDYCACACIAlqIAMoAgA2AgAgCiAAQQFqIgNBAnQiAmogCyADQQN0aiIDKAIENgIAIAIgCWogAygCADYCACAAQQJqIgAgBkcNAAsLIAUgBCgCqAY2AqwGIA5BAWoiDiANRw0ACwsgASEDDAELIAhBDGoEQCAIKAIMIgEoAjAiAAR\u002FIAAQCSAIKAIMBSABCxAJIAhBADYCDAsLIAhBEGokACADC\u002FkEAQh\u002FIwBBgAJrIgMkACAABEBB\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\u002FQkCBP1WAgAB\u002FVYCAAL9VgIAAyAM\u002Fa4BIQwgA0EEaiIDIABHDQALIAwgDCAM\u002FQ0ICQoLDA0ODwABAgMAAQID\u002Fa4BIgwgDCAM\u002FQ0EBQYHAAECAwABAgMAAQID\u002Fa4B\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\u002FQQAFIAZBfnEhBkEAIQgDQAJ\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\u002FQwAAAAAAAAAAAAAAAAAAAAA\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\u002FhSAaQv\u002F\u002F\u002F\u002F8PgyAWhoNQDQQLIAAoAtwBIgStIhUgHiAdhoJCAFIEQCAEIA5HDQRCfyAdhkJ\u002FhSAcQv\u002F\u002F\u002F\u002F8PgyAWhoNQDQQLIAsoAggiBEUNAyALKAIMRQ0DIBynIgsgIKdGDQMgGqciCCAfp0YNAyAAIAAoAkQiBzYCKCAAIBUgG3wgF4CnIAp2IAsgCnZrIBkgInwgGICnIAF2IAggAXZrIARsajYCJEEBIQEMBQsgACgC3AEiASAAKALkASIEaiABIARwayENDAELIAAoAuABIgEgACgC6AEiBGogASAEcGshAkEAIQEMAwtBACEBDAELQQEhAQwACwALAAsACwNAAn8CQCABRQRAIAAgCEEBaiIINgIoDAELIAAgBjYC4AEgACgCcCAGTQ0HIAAoAmQhD0EADAELQQELIQEDQAJAAkACQAJAIAFFBEAgACAPNgLcASAPIAAoAmhPDQEgACAFNgIcIAUhBEEAIQEMBAsgACgCOCAITQRAIAAoAiAhB0EBIQEMBAsgACgCECAAKAIgbCAAKAIMIAhsaiAAKAIUIARsaiAAKAIYIAAoAiRsaiIBIAAoAghPBEAMCgsgACgCBCABQQF0aiIBLwEADQEMCwsgACgC4AEiASAAKALoASIGaiABIAZwayEGDAELQQAhAQwDC0EBIQEMAgsDQAJAAkACQAJAIAFFBEAgBCASTw0CIAAgACgCMCIHNgIgIA0gBEEEdGohCwwBCyAAIAdBAWoiBzYCIAsgACgCPCIBIAsoAggiAiABIAJJGyAHSwRAIAsoAgAiASABrSIeIAIgB0F\u002Fc2oiCq0iFoYiFyAWiKdHDQMgCygCBCICQn8gFoincSACRw0DIAKtIhUgFoYiGEIBfSIZIAA1AtgBfCAYgCEfIBkgACgC0AEiDq18IBiAIRogF0IBfSIbIAA1AtQBfCAXgCEgIBsgACgCzAEiDK18IBeAIRwgAUJ\u002FIAsoAgwgB0EEdGoiAygCACIJIApqrSIdiKdxIAFHDQMgAiAVIAMoAgQiASAKaq0iFYYiISAViKdHDQMgACgC4AEiAq0iIiAhgkIAUgRAIAIgDkcNBEJ\u002FIBWGQn+FIBpC\u002F\u002F\u002F\u002F\u002Fw+DIBaGg1ANBAsgACgC3AEiAq0iFSAeIB2GgkIAUgRAIAIgDEcNBEJ\u002FIB2GQn+FIBxC\u002F\u002F\u002F\u002F\u002Fw+DIBaGg1ANBAsgAygCCCICRQ0DIAMoAgxFDQMgHKciAyAgp0YNAyAapyIKIB+nRg0DIAAgACgCRCIINgIoIAAgFSAbfCAXgKcgCXYgAyAJdmsgGSAifCAYgKcgAXYgCiABdmsgAmxqNgIkQQEhAQwFCyAAIARBAWoiBDYCHAwBCyAAKALcASIBIAAoAuQBIgJqIAEgAnBrIQ9BACEBDAMLQQAhAQwBC0EBIQEMAAsACwALAAsDQAJ\u002FAkAgAUUEQCAAIAtBAWoiCzYCKAwBCyAAIAU2AiAgACgCPCAFTQ0GIAAoAmwhCEEADAELQQELIQEDQAJAAkACQAJAIAFFBEAgACAINgLgASAIIAAoAnBPDQEgACgCZCENQQAhAQwECyAAKAI4IAtNBEAgACgCHCEGQQEhAQwECyAAKAIQIAAoAiBsIAAoAgwgC2xqIAAoAhQgACgCHGxqIAAoAhggACgCJGxqIgEgACgCCE8EQAwJCyAAKAIEIAFBAXRqIgEvAQANAQwKCyAAKAIgQQFqIQUMAQtBACEBDAMLQQEhAQwCCwNAAkACQAJAAkAgAUUEQCAAIA02AtwBIA0gACgCaE8NAiAAIAQ2AhwgBCEGDAELIAAgBkEBaiIGNgIcCyAGIA5JBEAgACgCICIHIAAoAsgBIAZBBHRqIgEoAggiA08NAyABKAIAIgIgAq0iHiADIAdBf3NqIgqtIhaGIhcgFoinRw0DIAEoAgQiA0J\u002FIBaIp3EgA0cNAyADrSIVIBaGIhhCAX0iGSAANQLYAXwgGIAhHyAZIAAoAtABIg+tfCAYgCEaIBdCAX0iGyAANQLUAXwgF4AhICAbIAAoAswBIgmtfCAXgCEcIAJCfyABKAIMIAdBBHRqIgEoAgAiByAKaq0iHYincSACRw0DIAMgFSABKAIEIgIgCmqtIhWGIiEgFYinRw0DIAAoAuABIgOtIiIgIYJCAFIEQCADIA9HDQRCfyAVhkJ\u002FhSAaQv\u002F\u002F\u002F\u002F8PgyAWhoNQDQQLIAAoAtwBIgOtIhUgHiAdhoJCAFIEQCADIAlHDQRCfyAdhkJ\u002FhSAcQv\u002F\u002F\u002F\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\u002FAYMiDkL\u002FAVEiCTYCFAJAIApBA0YNACAAIAJBAmsiCDYCGAJ\u002FIAJBAkgEQCAEIQEgAwwBCyAAIARBAWoiATYCACAELQAACyEEIABBD0EQIA5C\u002FwFRGyIHNgIQIAAgBK0iDkL\u002FAYMiD0L\u002FAVEiCTYCFCAAIA5CCIYgDYQiDTcDCCAKQQJGBEAgASEEIAUhAiAIIQUMAQsgACACQQNrIgs2AhggAAJ\u002FIAJBA0gEQCABIQYgAwwBCyAAIAFBAWoiBjYCACABLQAAC60iDkL\u002FAYMiEEL\u002FAVEiCTYCFCAAQQdBCCAPQv8BURsgB2oiATYCECAAIA4gB62GIA2EIg03AwggCkEBRgRAIAYhBCABIQcgCCECIAshBQwBCyAAIAJBBGsiBTYCGCAAAn8gAkEESARAIAYhBCADDAELIAAgBkEBaiIENgIAIAYtAAALrSIOQv8Bg0L\u002FAVEiCTYCFCAAQQdBCCAQQv8BURsgAWoiBzYCECAAIA4gAa2GIA2EIg03AwggCyECCwJAIAJBBU4EQCAEKAIAIQMgACACQQVrNgIYIAAgBEEEajYCAAwBC0EAIQFBf0EAIAMbIQMgAkECSA0AA0AgACAEQQFqIgI2AgAgBC0AACEEIAAgBUEBayIGNgIYIANB\u002FwEgAXRBf3NxIAQgAXRyIQMgAUEIaiEBIAVBAUshDCACIQQgBiEFIAwNAAsLIAAgA0EYdiIBQf8BRjYCFCAAQQdBCCAJGyICQQdBCCADQf8BcSIEQf8BRhtqIgVBB0EIIANBCHZB\u002FwFxIgZB\u002FwFGG2oiCEEHQQggA0EQdkH\u002FAXEiA0H\u002FAUYbIAdqajYCECAAIAYgAnQgAyAFdHIgASAIdHIgBHKtIAethiANhDcDCAu2BQISfwJ+An8gACgCHCABQZgBbGoiAkGQAWsoAgAgAkGYAWsoAgBrIgMhBSACQYwBaygCACACQZQBaygCAGsiAiEGQcAAIAMgA0HAAE8bIQNBwAAgAiACQcAATxshBAJAIAVFDQAgBkUNACADRQ0AIARFDQBBfyAEbkECdiADSQ0AQQFBHBAMIgIgBDYCDCACIAM2AgggAiAGNgIEIAIgBTYCACACIAStIhQgBq18QgF9IBSAIhSnIgQ2AhQgAiADrSIVIAWtfEIBfSAVgCIVpyIDNgIQAkAgFEL\u002F\u002F\u002F\u002F\u002FD4MgFUL\u002F\u002F\u002F\u002F\u002FD4N+QiCIpw0AIAJBBCADIARsEAwiAzYCGCADRQ0AIAIMAgsgAhAJC0EACyIJRQRAQQAPCwJAIAEEQANAIA5BmAFsIg8gACgCHGoiBSgCGCICBEAgBUEcaiEQIAUoAhQhAyAFKAIQIQRBACEKA0AgAyAEbARAIBAgCkEkbGohBkEAIQsDQCAGKAIUIAtBKGxqIggoAhQiAiAIKAIQIgdsBEBBACEEA0AgCCgCGCAEQQZ0aiIDKAI8IhEEQCADKAIMIQcgAygCFCESIAMoAhAhDCADKAIIIhMgBigCAGshAyAGKAIQIg1BAXEEQCAAKAIcIA9qIgJBkAFrKAIAIANqIAJBmAFrKAIAayEDCyAHIAYoAgRrIQIgDUECcQRAIAIgACgCHCAPaiINQYwBaygCAGogDUGUAWsoAgBrIQILIAkgAyACIAMgDCATayIMaiASIAdrIAJqIBFBASAMQQAQH0UNCSAIKAIQIQcgCCgCFCECCyAEQQFqIgQgAiAHbEkNAAsgBSgCECEEIAUoAhQhAwsgC0EBaiILIAMgBGxJDQALIAUoAhghAgsgCkEBaiIKIAJJDQALCyAOQQFqIg4gAUcNAAsLIAkPCyAJEB1BAAvQDAIQfwZ7IAAoAggiCyAAKAIEaiEHAkAgACgCDEUEQCAHQQJIDQEgASgCACABIAtBAnRqIg0oAgAiBEEBakEBdWshAyAAKAIAIQYCQCAHQQRJBEAgBCECDAELIAdBBGsiAEEBdiIJQQFqIQwCQCAAQRZJBEBBASEADAELIAYgASALQQJ0aiIFIAlBAnQiAmpBCGpJIAYgCUEDdGpBCGoiACAFQQRqS3EEQEEBIQAMAQsgBiABIAJqQQhqSSABQQRqIABJcQRAQQEhAAwBCyAMQfz\u002F\u002F\u002F8HcSIFQQFyIQAgBUEBdCEIIAT9ESESIAP9ESET\u002FQwAAAAAAgAAAAQAAAAGAAAAIRZBACECA0AgASACQQJ0QQRyIgNq\u002FQACACEVIAMgDWr9AAIAIRQgBiACQQN0aiIDIBP9WgIAAyADQQhqIBUgFCASIBT9DQwNDg8QERITFBUWFxgZGhsiFf2uAf0MAgAAAAIAAAACAAAAAgAAAP2uAUEC\u002FawB\u002FbEBIhL9WgIAACADQRBqIBL9WgIAASADQRhqIBL9WgIAAiAGIBb9DAEAAAABAAAAAQAAAAEAAAD9UCIX\u002FRsAQQJ0aiASIBMgEv0NDA0ODxAREhMUFRYXGBkaG\u002F2uAUEB\u002FawBIBX9rgEiE\u002F1aAgAAIAYgF\u002F0bAUECdGogE\u002F1aAgABIAYgF\u002F0bAkECdGogE\u002F1aAgACIAYgF\u002F0bA0ECdGogE\u002F1aAgADIBb9DAgAAAAIAAAACAAAAAgAAAD9rgEhFiASIRMgFCESIAJBBGoiAiAFRw0ACyAS\u002FRsDIQIgE\u002F0bAyEDIAUgDEYNASACIQQLA0AgASAAQQJ0IgJqKAIAIQkgAiANaigCACECIAYgCEECdGoiBSADNgIAIAUgAyAJIAIgBGpBAmpBAnVrIgNqQQF1IARqNgIEIAhBAmohCCAAIAxHIRAgAiEEIABBAWohACAQDQALCyAGIAhBAnRqIAM2AgBBfCEAIAdBAXEEfyAGIAdBAWsiAEECdGogASAAQQF0aigCACACQQFqQQF1ayIANgIAIAAgA2pBAXUhA0F4BUF8CyAGIAdBAnQiAGpqIAIgA2o2AgAgASAGIAAQCxoPCwJAAkACQCAHQQFrDgIAAQILIAEgASgCAEECbTYCAA8LIAAoAgAiBCABKAIAIAEgC0ECdGoiAygCAEEBakEBdWsiADYCBCAEIAAgAygCAGo2AgAgASAEKQIANwIADwsgB0EDSA0AIAAoAgAiCiABKAIAIAEgC0ECdGoiDigCBCIEIA4oAgAiAGpBAmpBAnVrIgMgAGo2AgBBASEIAkAgB0ECayIGIAdBAXEiDEUiAGtBAkkEQCAEIQIMAQsgByAAa0EEayIAQQF2IgJBAWohDwJAAkAgAEEWSQ0AIApBBGoiBSABIAJBAnQiAGpBCGpJIAogAkEDdGpBDGoiAiABQQRqS3ENACAFIAAgASALQQJ0aiIAakEMakkgAEEIaiACSXENACAPQXxxIgVBAXIhACAFQQF0QQFyIQggBP0RIRMgA\u002F0RIRJBACECA0AgCiACQQN0aiIEIAEgAkECdCIDav0AAgQgEyADIA5q\u002FQACCCIT\u002FQ0MDQ4PEBESExQVFhcYGRobIhUgE\u002F2uAf0MAgAAAAIAAAACAAAAAgAAAP2uAUEC\u002FawB\u002FbEBIhQgFCASIBT9DQwNDg8QERITFBUWFxgZGhv9rgFBAf2sASAV\u002Fa4BIhX9DQQFBgcYGRobCAkKCxwdHh\u002F9CwIUIAQgEiAV\u002FQ0MDQ4PEBESEwABAgMUFRYXIBT9DQABAgMEBQYHEBESEwwNDg\u002F9CwIEIBQhEiACQQRqIgIgBUcNAAsgE\u002F0bAyECIBL9GwMhAyAFIA9GDQIgAiEEDAELQQEhAAsDQCABIABBAnRqKAIAIQ0gDiAAQQFqIgVBAnRqKAIAIQIgCiAIQQJ0aiIJIAM2AgAgCSADIA0gAiAEakECakECdWsiA2pBAXUgBGo2AgQgCEECaiEIIAAgD0chESACIQQgBSEAIBENAAsLIAogCEECdGogAzYCAAJAIAxFBEAgCiAGQQJ0aiABIAdBAXRqQQRrKAIAIAJBAWpBAXVrIgAgA2pBAXUgAmo2AgAMAQsgAiADaiEACyAKIAdBAnQiA2pBBGsgADYCACABIAogAxALGgsLoAcDA30DewJ\u002FIANBCE8EQCADQQN2IQsDQCAB\u002FQAEACEHIAAgAP0ABAAiCCAC\u002FQAEACIJ\u002FQy8dLM\u002FvHSzP7x0sz+8dLM\u002F\u002FeYB\u002FeQB\u002FQsEACABIAggB\u002F0MzzGwPs8xsD7PMbA+zzGwPv3mAf3lASAJ\u002FQzh0TY\u002F4dE2P+HRNj\u002Fh0TY\u002F\u002FeYB\u002FeUB\u002FQsEACACIAggB\u002F0M5dDiP+XQ4j\u002Fl0OI\u002F5dDiP\u002F3mAf3kAf0LBAAgAf0ABBAhByAAIAD9AAQQIgggAv0ABBAiCf0MvHSzP7x0sz+8dLM\u002FvHSzP\u002F3mAf3kAf0LBBAgASAIIAf9DM8xsD7PMbA+zzGwPs8xsD795gH95QEgCf0M4dE2P+HRNj\u002Fh0TY\u002F4dE2P\u002F3mAf3lAf0LBBAgAiAIIAf9DOXQ4j\u002Fl0OI\u002F5dDiP+XQ4j\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\u002F\u002F\u002F\u002FB3EhCANAIAcgC0YhASAHQQJqIQcgBCAGIAEbIgQhBiAEIQEgCUECaiIJIAhHDQALCyANRQRAIAQhBgwBCyAEIAEgAkEEdGogByAHIAtGckEBcSICGyEGIAQgASACGyEECyADQQFqIgMgDEcNAAsLIAVBADYCAAsgACgCCCIBRQ0AIAAoAgwhBCABQQRPBEAgAUF8cSECQQAhBQNAIARBADYCPCAEQucHNwI0IARBADYCLCAEQucHNwIkIARBADYCHCAEQucHNwIUIARBADYCDCAEQucHNwIEIARBQGshBCAFQQRqIgUgAkcNAAsLIAFBA3EiAUUNAEEAIQUDQCAEQQA2AgwgBELnBzcCBCAEQRBqIQQgBUEBaiIFIAFHDQALCyAKQYACaiQAIAALsQEBA38CQCAARQ0AIAAoAggiAUUNACAAKAIMIQAgAUEETwRAIAFBfHEhAwNAIABBADYCPCAAQucHNwI0IABBADYCLCAAQucHNwIkIABBADYCHCAAQucHNwIUIABBADYCDCAAQucHNwIEIABBQGshACACQQRqIgIgA0cNAAsLIAFBA3EiAUUNAEEAIQIDQCAAQQA2AgwgAELnBzcCBCAAQRBqIQAgAkEBaiICIAFHDQALCwv7BQEQfyMAQYACayIIJAACf0EBQRQQDCIGRQRAIAJBAUH0MEEAEAhBAAwBCyAGIAE2AgQgBiAANgIAIAggATYCACAIIAA2AoABA0AgCCAFIg1BAWoiBUECdCIHaiABQQFqQQJtIgM2AgAgCEGAAWogB2ogAEEBakECbSIHNgIAIAQgACABbCIJaiEEIAMhASAHIQAgCUEBSw0ACyAGIAQ2AgggBEUEQCAGEAlBAAwBCyAGIARBEBAMIgM2AgwgA0UEQCACQQFB2hpBABAIIAYQCUEADAELIAYgBigCCCILQQR0NgIQIAMhACANBEAgAyAGKAIEIAYoAgBsQQR0aiIEIQEDQAJAIAggDkECdCICaigCACIJQQBMDQAgCUEBayEMQQAhBwJAIAhBgAFqIAJqKAIAIgJBAEwEQEEAIQUgCUEBRwRAIAlB\u002Fv\u002F\u002F\u002FwdxIQoDQCAFIAxGIQ8gBUECaiEFIAEgBCAPGyIEIQEgB0ECaiIHIApHDQALCyAJQQFxDQEgBCEBDAILA0AgBCEFIAIhBANAAkAgACABNgIAIARBAUYEQCAAQRBqIQAgAUEQaiEBDAELIAAgATYCECABQRBqIQEgAEEgaiEAIARBAkohECAEQQJrIQQgEA0BCwsgASAFIAJBBHRqIAcgByAMRnJBAXEiChshBCABIAUgChshASAHQQFqIgcgCUcNAAsMAQsgASAEIAJBBHRqIAUgBSAMRnJBAXEiBRshESABIAQgBRshASARIQQLIA5BAWoiDiANRw0ACwsgAEEANgIAAkAgC0UNACALQQRPBEAgC0F8cSEAQQAhAQNAIANBADYCPCADQucHNwI0IANBADYCLCADQucHNwIkIANBADYCHCADQucHNwIUIANBADYCDCADQucHNwIEIANBQGshAyABQQRqIgEgAEcNAAsLIAtBA3EiAEUNAEEAIQEDQCADQQA2AgwgA0LnBzcCBCADQRBqIQMgAUEBaiIBIABHDQALCyAGCyESIAhBgAJqJAAgEgtTAQF\u002FAn8gAC0ADEH\u002FAUYEQCAAQoD+g4DwADcCDEEAIAAoAggiASAAKAIETw0BGiAAIAFBAWo2AgggACABLQAAQYD+A3I2AgwLIABBADYCEEEBCwtJAQF\u002FAkBBAUEsEAwiAQRAIAFBADYCEAJAIABBAEwEQCABQQFBCBAMIgA2AiQgAEUNAQwDCyABQQA2AgwLIAEQCQtBACEBCyABC34CAX8BfiAAvSIDQjSIp0H\u002FD3EiAkH\u002FD0cEfCACRQRAIAEgAEQAAAAAAAAAAGEEf0EABSAARAAAAAAAAPBDoiABEF8hACABKAIAQUBqCzYCACAADwsgASACQf4HazYCACADQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F+HgH+DQoCAgICAgIDwP4S\u002FBSAACwuRAgAgAEUEQEEADwsCfwJAIAFB\u002FwBNDQACQEGUzwEoAgAoAgBFBEAgAUGAf3FBgL8DRg0CDAELIAFB\u002Fw9NBEAgACABQT9xQYABcjoAASAAIAFBBnZBwAFyOgAAQQIMAwsgAUGAQHFBgMADRyABQYCwA09xRQRAIAAgAUE\u002FcUGAAXI6AAIgACABQQx2QeABcjoAACAAIAFBBnZBP3FBgAFyOgABQQMMAwsgAUGAgARrQf\u002F\u002FP00EQCAAIAFBP3FBgAFyOgADIAAgAUESdkHwAXI6AAAgACABQQZ2QT9xQYABcjoAAiAAIAFBDHZBP3FBgAFyOgABQQQMAwsLQZTGAUEZNgIAQX8MAQsgACABOgAAQQELC7wCAAJAAkACQAJAAkACQAJAAkACQAJAAkAgAUEJaw4SAAgJCggJAQIDBAoJCgoICQUGBwsgAiACKAIAIgFBBGo2AgAgACABKAIANgIADwsgAiACKAIAIgFBBGo2AgAgACABMgEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMwEANwMADwsgAiACKAIAIgFBBGo2AgAgACABMAAANwMADwsgAiACKAIAIgFBBGo2AgAgACABMQAANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAwALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC3MBBn8gACgCACIDLAAAQTBrIgFBCUsEQEEADwsDQEF\u002FIQQgAkHMmbPmAE0EQEF\u002FIAEgAkEKbCIFaiABIAVB\u002F\u002F\u002F\u002F\u002FwdzSxshBAsgACADQQFqIgU2AgAgAywAASEGIAQhAiAFIQMgBkEwayIBQQpJDQALIAILtBQCFX8BfiMAQUBqIggkACAIIAE2AjwgCEEnaiEWIAhBKGohEQJAAkACQAJAA0BBACEHA0AgASENIAcgDkH\u002F\u002F\u002F\u002F\u002FB3NKDQIgByAOaiEOAkACQAJAAkAgASIHLQAAIgsEQANAAkACQCALQf8BcSIBRQRAIAchAQwBCyABQSVHDQEgByELA0AgCy0AAUElRwRAIAshAQwCCyAHQQFqIQcgCy0AAiEZIAtBAmoiASELIBlBJUYNAAsLIAcgDWsiByAOQf\u002F\u002F\u002F\u002F8HcyIXSg0JIAAEQCAAIA0gBxARCyAHDQcgCCABNgI8IAFBAWohB0F\u002FIRACQCABLAABQTBrIglBCUsNACABLQACQSRHDQAgAUEDaiEHQQEhEiAJIRALIAggBzYCPEEAIQwCQCAHLAAAIgtBIGsiAUEfSwRAIAchCQwBCyAHIQlBASABdCIBQYnRBHFFDQADQCAIIAdBAWoiCTYCPCABIAxyIQwgBywAASILQSBrIgFBIE8NASAJIQdBASABdCIBQYnRBHENAAsLAkAgC0EqRgRAAn8CQCAJLAABQTBrIgFBCUsNACAJLQACQSRHDQACfyAARQRAIAQgAUECdGpBCjYCAEEADAELIAMgAUEDdGooAgALIQ8gCUEDaiEBQQEMAQsgEg0GIAlBAWohASAARQRAIAggATYCPEEAIRJBACEPDAMLIAIgAigCACIHQQRqNgIAIAcoAgAhD0EACyESIAggATYCPCAPQQBODQFBACAPayEPIAxBgMAAciEMDAELIAhBPGoQYiIPQQBIDQogCCgCPCEBC0EAIQdBfyEKAn9BACABLQAAQS5HDQAaIAEtAAFBKkYEQAJ\u002FAkAgASwAAkEwayIJQQlLDQAgAS0AA0EkRw0AIAFBBGohAQJ\u002FIABFBEAgBCAJQQJ0akEKNgIAQQAMAQsgAyAJQQN0aigCAAsMAQsgEg0GIAFBAmohAUEAIABFDQAaIAIgAigCACIJQQRqNgIAIAkoAgALIQogCCABNgI8IApBAE4MAQsgCCABQQFqNgI8IAhBPGoQYiEKIAgoAjwhAUEBCyETA0AgByEUQRwhCSABIhgsAAAiB0H7AGtBRkkNCyABQQFqIQEgByAUQTpsakHPwAFqLQAAIgdBAWtBCEkNAAsgCCABNgI8AkAgB0EbRwRAIAdFDQwgEEEATgRAIABFBEAgBCAQQQJ0aiAHNgIADAwLIAggAyAQQQN0aikDADcDMAwCCyAARQ0IIAhBMGogByACIAYQYQwBCyAQQQBODQtBACEHIABFDQgLIAAtAABBIHENCyAMQf\u002F\u002Fe3EiCyAMIAxBgMAAcRshDEEAIRBBsAghFSARIQkCQAJAAn8CQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAIBgsAAAiB0FTcSAHIAdBD3FBA0YbIAcgFBsiB0HYAGsOIQQWFhYWFhYWFhAWCQYQEBAWBhYWFhYCBQMWFgoWARYWBAALAkAgB0HBAGsOBxAWCxYQEBAACyAHQdMARg0LDBULIAgpAzAhHEGwCAwFC0EAIQcCQAJAAkACQAJAAkACQCAUQf8BcQ4IAAECAwQcBQYcCyAIKAIwIA42AgAMGwsgCCgCMCAONgIADBoLIAgoAjAgDqw3AwAMGQsgCCgCMCAOOwEADBgLIAgoAjAgDjoAAAwXCyAIKAIwIA42AgAMFgsgCCgCMCAOrDcDAAwVC0EIIAogCkEITRshCiAMQQhyIQxB+AAhBwsgESEBIAgpAzAiHEIAUgRAIAdBIHEhDQNAIAFBAWsiASAcp0EPcUHgxAFqLQAAIA1yOgAAIBxCD1YhGiAcQgSIIRwgGg0ACwsgASENIAgpAzBQDQMgDEEIcUUNAyAHQQR2QbAIaiEVQQIhEAwDCyARIQEgCCkDMCIcQgBSBEADQCABQQFrIgEgHKdBB3FBMHI6AAAgHEIHViEbIBxCA4ghHCAbDQALCyABIQ0gDEEIcUUNAiAKIBEgAWsiAUEBaiABIApIGyEKDAILIAgpAzAiHEIAUwRAIAhCACAcfSIcNwMwQQEhEEGwCAwBCyAMQYAQcQRAQQEhEEGxCAwBC0GyCEGwCCAMQQFxIhAbCyEVIBwgERAjIQ0LIBMgCkEASHENESAMQf\u002F\u002Fe3EgDCATGyEMAkAgCCkDMCIcQgBSDQAgCg0AIBEhDUEAIQoMDgsgCiAcUCARIA1raiIBIAEgCkgbIQoMDQsgCCkDMCEcDAsLAn9B\u002F\u002F\u002F\u002F\u002FwcgCiAKQf\u002F\u002F\u002F\u002F8HTxsiDCIHQQBHIQkCQAJAAkAgCCgCMCIBQYQMIAEbIg0iAUEDcUUNACAHRQ0AA0AgAS0AAEUNAiAHQQFrIgdBAEchCSABQQFqIgFBA3FFDQEgBw0ACwsgCUUNAQJAIAEtAABFDQAgB0EESQ0AA0BBgIKECCABKAIAIglrIAlyQYCBgoR4cUGAgYKEeEcNAiABQQRqIQEgB0EEayIHQQNLDQALCyAHRQ0BCwNAIAEgAS0AAEUNAhogAUEBaiEBIAdBAWsiBw0ACwtBAAsiASANayAMIAEbIgEgDWohCSAKQQBOBEAgCyEMIAEhCgwMCyALIQwgASEKIAktAAANDwwLCyAIKQMwIhxCAFINAUIAIRwMCQsgCgRAIAgoAjAMAgtBACEHIABBICAPQQAgDBAUDAILIAhBADYCDCAIIBw+AgggCCAIQQhqIgc2AjBBfyEKIAcLIQtBACEHA0ACQCALKAIAIg1FDQAgCEEEaiANEGAiDUEASA0PIA0gCiAHa0sNACALQQRqIQsgByANaiIHIApJDQELC0E9IQkgB0EASA0MIABBICAPIAcgDBAUIAdFBEBBACEHDAELQQAhCSAIKAIwIQsDQCALKAIAIg1FDQEgCEEEaiIKIA0QYCINIAlqIgkgB0sNASAAIAogDRARIAtBBGohCyAHIAlLDQALCyAAQSAgDyAHIAxBgMAAcxAUIA8gByAHIA9IGyEHDAgLIBMgCkEASHENCUE9IQkgACAIKwMwIA8gCiAMIAcgBRETACIHQQBODQcMCgsgBy0AASELIAdBAWohBwwACwALIAANCSASRQ0DQQEhBwNAIAQgB0ECdGooAgAiAARAIAMgB0EDdGogACACIAYQYUEBIQ4gB0EBaiIHQQpHDQEMCwsLQQEhDiAHQQpPDQkDQCAEIAdBAnRqKAIADQEgB0EBaiIHQQpHDQALDAkLQRwhCQwGCyAIIBw8ACdBASEKIBYhDSALIQwLIAogCSANayILIAogC0obIgogEEH\u002F\u002F\u002F\u002F\u002FB3NKDQNBPSEJIA8gCiAQaiIBIAEgD0gbIgcgF0oNBCAAQSAgByABIAwQFCAAIBUgEBARIABBMCAHIAEgDEGAgARzEBQgAEEwIAogC0EAEBQgACANIAsQESAAQSAgByABIAxBgMAAcxAUIAgoAjwhAQwBCwsLQQAhDgwDC0E9IQkLQZTGASAJNgIAC0F\u002FIQ4LIAhBQGskACAOC6gCAQR\u002FIwBB0AFrIgUkACAFIAI2AswBIAVBoAFqIgJBAEEoEA4aIAUgBSgCzAE2AsgBAkBBACABIAVByAFqIAVB0ABqIAIgAyAEEGNBAEgNACAAKAJMQQBIIQggACAAKAIAIgdBX3E2AgACfwJAAkAgACgCMEUEQCAAQdAANgIwIABBADYCHCAAQgA3AxAgACgCLCEGIAAgBTYCLAwBCyAAKAIQDQELQX8gABA3DQEaCyAAIAEgBUHIAWogBUHQAGogBUGgAWogAyAEEGMLIQEgBgR\u002FIABBAEEAIAAoAiQRAAAaIABBADYCMCAAIAY2AiwgAEEANgIcIAAoAhQaIABCADcDEEEABSABCxogACAAKAIAIAdBIHFyNgIAIAgNAAsgBUHQAWokAAsnAQF\u002FQRwhAyABQQNxBH9BHAUgACABIAIQGyIANgIAQQBBMCAAGwsL\u002FQMBBX8Cf0HwxAEoAgAiAiAAQQdqQXhxIgFBB2pBeHEiA2ohAAJAIANBACAAIAJNG0UEQCAAPwBBEHRNDQEgABABDQELQZTGAUEwNgIAQX8MAQtB8MQBIAA2AgAgAgsiAkF\u002FRwRAIAEgAmoiAEEEa0EQNgIAIABBEGsiA0EQNgIAAkACf0GgzgEoAgAiAQR\u002FIAEoAggFQQALIAJGBEAgAiACQQRrKAIAQX5xayIEQQRrKAIAIQUgASAANgIIIAQgBUF+cWsiACAAKAIAakEEay0AAEEBcQRAIAAoAgQiASAAKAIIIgQ2AgggBCABNgIEIAAgAyAAayIBNgIADAMLIAJBEGsMAQsgAkEQNgIAIAIgADYCCCACIAE2AgQgAkEQNgIMQaDOASACNgIAIAJBEGoLIgAgAyAAayIBNgIACyAAIAFBfHFqQQRrIAFBAXI2AgAgAAJ\u002FIAAoAgBBCGsiAUH\u002FAE0EQCABQQN2QQFrDAELIAFBHSABZyIDa3ZBBHMgA0ECdGtB7gBqIAFB\u002Fx9NDQAaQT8gAUEeIANrdkECcyADQQF0a0HHAGoiASABQT9PGwsiAUEEdCIDQaDGAWo2AgQgACADQajGAWoiAygCADYCCCADIAA2AgAgACgCCCAANgIEQajOAUGozgEpAwBCASABrYaENwMACyACQX9HC70BAQJ\u002FAkAgACgCTCIBQQBOBEAgAUUNAUHMzgEoAgAgAUH\u002F\u002F\u002F\u002F\u002FA3FHDQELAkAgACgCUEEKRg0AIAAoAhQiASAAKAIQRg0AIAAgAUEBajYCFCABQQo6AAAPCyAAEGgPCyAAQcwAaiIBIAEoAgAiAkH\u002F\u002F\u002F\u002F\u002FAyACGzYCAAJAAkAgACgCUEEKRg0AIAAoAhQiAiAAKAIQRg0AIAAgAkEBajYCFCACQQo6AAAMAQsgABBoCyABKAIAGiABQQA2AgALfAECfyMAQRBrIgEkACABQQo6AA8CQAJAIAAoAhAiAgR\u002FIAIFIAAQNw0CIAAoAhALIAAoAhQiAkYNACAAKAJQQQpGDQAgACACQQFqNgIUIAJBCjoAAAwBCyAAIAFBD2pBASAAKAIkEQAAQQFHDQAgAS0ADxoLIAFBEGokAAuwAgECfyAABEAgACgCABAxIABBADYCACAAKAJIIgEEQCABEAkgAEEANgJICyAAKAJEIgEEQCABEAkgAEEANgJECyAAKAJsIgEEQCABEAkgAEEANgJsCyAAKAJ0IgEEQCABKAIAIgIEQCACEAkgACgCdCIBQQA2AgALIAEQCSAAQQA2AnQLIAAoAngiAQRAIAEoAgwiAgRAIAIQCSAAKAJ4IgFBADYCDAsgASgCBCICBEAgAhAJIAAoAngiAUEANgIECyABKAIIIgIEQCACEAkgACgCeCIBQQA2AggLIAEoAgAiAgRAIAIQCSAAKAJ4IgFBADYCAAsgARAJIABBADYCeAsgACgCBCIBBEAgARAtIABBADYCBAsgACgCCCIBBEAgARAtIABBADYCCAsgABAJCwuGGwIefwV7IwBB8AFrIgkkAEEBIQ4CQCAAKAIAKAI8DQAgACgCgAENAAJAAkAgACgCdCIIRQRAIAAoAnghBAwBCyABKAIQIQMgCC8BBCEGAkAgACgCeCIERQ0AIAQoAgxFDQAgBC0AEiEDCwJAIAYEQCAIKAIAIQgDQCAIIAVBBmxqIgovAQAiByADTwRAIAkgAzYCtAEgCSAHNgKwASACQQFBsOYAIAlBsAFqEAhBACEODAYLAkAgCi8BBCIKRQ0AIApB\u002F\u002F8DRg0AIApBAWsiCiADSQ0AIAkgAzYCpAEgCSAKNgKgASACQQFBsOYAIAlBoAFqEAhBACEODAYLIAVBAWoiBSAGRw0ACwwBCyADDQIMAQsDQCADQQFrIQNBACEFA0AgCCAFQQZsai8BACADRwRAIAVBAWoiBSAGRw0BDAQLCyADDQALCwJAIARFDQAgBCgCDCIKRQ0AAkACQCAELQASIggEQEEAIQVBASEHA0AgASgCECIDIAogBUECdGovAQAiBE0EQCAJIAM2ApQBIAkgBDYCkAEgAkEBQbDmACAJQZABahAIQQAhBwsgBUEBaiIFIAhHDQALIAhBBBAMIgNFDQFBACEFA0ACQCAKIAVBAnRqIgQtAAIiBkECTwRAIAkgBjYCRCAJIAU2AkAgAkEBQdvZACAJQUBrEAhBACEHDAELIAggBC0AAyIETQRAIAkgBDYCgAEgAkEBQaPZACAJQYABahAIQQAhBwwBCyADIARBAnRqIQsCQCAGQQFHIgwNACALKAIARQ0AIAkgBDYCUCACQQFBl9UAIAlB0ABqEAhBACEHDAELAkAgBg0AIARFDQAgCSAENgJkIAkgBTYCYCACQQFBmtgAIAlB4ABqEAhBACEHDAELAkAgDA0AIAQgBUYNACAJIAQ2AnggCSAFNgJ0IAkgBTYCcCACQQFBvtgAIAlB8ABqEAhBACEHDAELIAtBATYCAAsgBUEBaiIFIAhHDQALQQAhBQNAAkACQCADIAVBAnQiBGooAgBFBEAgBCAKai0AAg0BCyAFQQFqIgUgCEcNAiAHRQ0BIAEoAhBBAUcNBUEAIQUDQCADIAVBAnRqKAIABEAgCCAFQQFqIgVHDQEMBwsLQQAhByACQQJB78QAQQAQCCAIQRBPBEAgCEHwAXEhB0EAIQQDQCAKIARBAnRqIgZBAToAAiAGIAQ6AAMgBkEBOgA+IAZBAToAOiAGQQE6ADYgBkEBOgAyIAZBAToALiAGQQE6ACogBkEBOgAmIAZBAToAIiAGQQE6AB4gBkEBOgAaIAZBAToAFiAGQQE6ABIgBkEBOgAOIAZBAToACiAGQQE6AAYgBiAEQQFyOgAHIAYgBEEPcjoAPyAGIARBDnI6ADsgBiAEQQ1yOgA3IAYgBEEMcjoAMyAGIARBC3I6AC8gBiAEQQpyOgArIAYgBEEJcjoAJyAGIARBCHI6ACMgBiAEQQdyOgAfIAYgBEEGcjoAGyAGIARBBXI6ABcgBiAEQQRyOgATIAYgBEEDcjoADyAGIARBAnI6AAsgBEEQaiIEIAdHDQALIAcgCEYNBgsDQCAKIAdBAnRqIgQgBzoAAyAEQQE6AAIgB0EBaiIHIAhHDQALDAULIAkgBTYCMCACQQFBo9IAIAlBMGoQCEEAIQcgBUEBaiIFIAhHDQELCyADEAlBACEODAULIAhBBBAMIgMNAQtBACEOIAJBAUGa2wBBABAIDAMLIAMQCQsCQCAAKAJ4IgNFDQAgAygCDCIPRQRAIAMoAgQQCSAAKAJ4KAIIEAkgACgCeCgCABAJIAAoAngiAygCDCIEBH8gBBAJIAAoAngFIAMLEAkgAEEANgJ4DAELIAEoAhghDQJAAkAgAy0AEiIKBEAgAygCACEUIAMoAgQhBiADKAIIIQhBACEFAkADQCANIA8gBUECdGovAQBBNGxqKAIsBEAgCiAFQQFqIgVHDQEMAgsLIAkgBTYCICACQQFB0ucAIAlBIGoQCEEAIQ4MBgsgCkE0bBANIgtFDQFBACEFA0AgDyAFQQJ0aiIDLwEAIQcgCyADLQACBH8gAy0AAwUgBQtBNGxqIgQgDSAHQTRsaiID\u002FQACAP0LAgAgBCADKAIwNgIwIAQgA\u002F0AAiD9CwIgIAQgA\u002F0AAhD9CwIQIAsgBUE0bGoiBCADKAIIIAMoAgxsQQJ0EBYiAzYCLCADRQRAIAVB\u002F\u002F8DcSIABEADQCALIABBAWsiAEE0bGooAiwQCSAADQALCyALEAlBACEOIAJBAUGe5wBBABAIDAcLIAQgBSAIai0AADYCGCAEIAUgBmotAAA2AiAgBUEBaiIFIApHDQALIAAoAngvARAiEEEBayESA0AgCyATQTRsaiIDKAIMIAMoAghsIQYgDSAPIBNBAnRqIgQvAQBBNGxqKAIsIQgCQCAELQACRQRAIAZFDQEgAygCLCEFQQAhB0EAIQQCQCAGQQRJDQAgBSAIa0EQSQ0AIAZBfHEhBEEAIQMDQCAFIANBAnQiDGogCCAMav0AAgD9CwIAIANBBGoiAyAERw0ACyAEIAZGDQILIAQhAyAGQQNxIgwEQANAIAUgA0ECdCIRaiAIIBFqKAIANgIAIANBAWohAyAHQQFqIgcgDEcNAAsLIAQgBmtBfEsNAQNAIAUgA0ECdCIEaiAEIAhqKAIANgIAIAUgBEEEaiIHaiAHIAhqKAIANgIAIAUgBEEIaiIHaiAHIAhqKAIANgIAIAUgBEEMaiIEaiAEIAhqKAIANgIAIANBBGoiAyAGRw0ACwwBCyAGRQ0AIBQgBC0AAyIDQQJ0aiEEIAsgA0E0bGooAiwhBUEAIQMgBkEBRwRAIAZBfnEhFUEAIQwDQCAFIANBAnQiB2ogBCAHIAhqKAIAIhEgEiAQIBFKG0EAIBFBAE4bIApsQQJ0aigCADYCACAFIAdBBHIiB2ogBCAHIAhqKAIAIgcgEiAHIBBIG0EAIAdBAE4bIApsQQJ0aigCADYCACADQQJqIQMgDEECaiIMIBVHDQALCyAGQQFxRQ0AIAUgA0ECdCIDaiAEIAMgCGooAgAiAyASIAMgEEgbQQAgA0EAThsgCmxBAnRqKAIANgIACyATQQFqIhMgCkcNAAsMAgsgCkE0bBANIgsNAQtBACEOIAJBAUGe5wBBABAIDAMLIAEoAhAiAwRAQQAhBQNAIA0gBUE0bGooAiwiBARAIAQQCQsgBUEBaiIFIANHDQALCyANEAkgASAKNgIQIAEgCzYCGAsgACgCdCIFRQ0BIAUoAgAhByAFLwEEIgsEQCAHQSpqIRIgB0EkaiETIAdBHmohESAHQRhqIRQgB0ESaiEVIAdBDGohFiAHQQZqIRcgC0ECayEYQQAhBUEBIQQDQAJAIAEoAhAiAyAHIAVBBmxqIg0vAQAiBk0EQCAJIAM2AhQgCSAGNgIQIAJBAkHMNyAJQRBqEAgMAQsgDS8BBCIIQQFqQf\u002F\u002FA3FBAU0EQCABKAIYIAZBNGxqIA0vAQI7ATAMAQsgCEEBayIKQf\u002F\u002FA3EiDyADTwRAIAkgAzYCBCAJIA82AgAgAkECQaM3IAkQCAwBCwJAIAYgD0YNACANLwECDQAgCSABKAIYIgggBkE0bGoiAygCMDYC6AEgCSAD\u002FQACIP0LA9gBIAkgA\u002F0AAhD9CwPIASAJIAP9AAIA\u002FQsDuAEgAyAIIA9BNGwiDGoiCCkCCDcCCCADIAgpAhA3AhAgAyAIKQIYNwIYIAMgCCkCIDcCICADIAgpAig3AiggAyAIKAIwNgIwIAMgCCkCADcCACABKAIYIAxqIgMgCf0AA7gB\u002FQsCACADIAn9AAPYAf0LAiAgAyAJ\u002FQADyAH9CwIQIAMgCSgC6AE2AjAgBUEBaiALTw0AIAQhCCAYIAVrQf\u002F\u002FA3EiA0EHTwRAIAQgA0EBaiIZQfj\u002FB3EiEGohCCAK\u002FRAhJCAG\u002FRAhI0EAIQwDQCAjICQgEiAEIAxqQQZsIgNqIhogAyATaiIbIAMgEWoiHCADIBRqIh0gAyAVaiIeIAMgFmoiHyADIBdqIiAgAyAHaiID\u002FQgBAP1VAQAB\u002FVUBAAL9VQEAA\u002F1VAQAE\u002FVUBAAX9VQEABv1VAQAHIiEgI\u002F0uICEgJP0tIiX9Tv1SISIgISAj\u002FS0gJf1QIiH9GQBBAXEEQCADICL9WQEAAAsgIf0ZAUEBcQRAICAgIv1ZAQABCyAh\u002FRkCQQFxBEAgHyAi\u002FVkBAAILICH9GQNBAXEEQCAeICL9WQEAAwsgIf0ZBEEBcQRAIB0gIv1ZAQAECyAh\u002FRkFQQFxBEAgHCAi\u002FVkBAAULICH9GQZBAXEEQCAbICL9WQEABgsgIf0ZB0EBcQRAIBogIv1ZAQAHCyAMQQhqIgwgEEcNAAsgECAZRg0BCwNAIAohAwJAIAYgByAIQQZsaiIMLwEAIhBHBEAgBiEDIA8gEEcNAQsgDCADOwEACyALIAhBAWoiCEH\u002F\u002FwNxRw0ACwsgASgCGCAGQTRsaiANLwECOwEwCyAEQQFqIQQgBUEBaiIFIAtHDQALIAAoAnQiBSgCACEHCyAHBH8gBxAJIAAoAnQFIAULEAkgAEEANgJ0DAELQQAhDiACQQFBosUAQQAQCAsgCUHwAWokACAOC+kBAQZ\u002FIwBBIGsiBCQAAn8CQCAAKAI8IgMEQEEBIQUDQCAAKAJMKAIYIAAoAkAgAkECdGooAgAiBkE0bGooAixFBEAgBCAGNgIQIAFBAkHaOSAEQRBqEAhBACEFIAAoAjwhAwsgAkEBaiICIANJDQALDAELQQEhBUEBIAAoAkwiAygCEEUNARoDQCADKAIYIAJBNGxqKAIsRQRAIAQgAjYCACABQQJB2jkgBBAIQQAhBSAAKAJMIQMLIAJBAWoiAiADKAIQSQ0ACwtBASAFDQAaIAFBAUG\u002FFUEAEAhBAAshByAEQSBqJAAgBwsEAEF\u002FC4YHAhZ\u002FAn4gACgCGCIQKAIQRQRAQQEPCyAQKAIYIQ0gACgCFCgCACgCFCELA0AgASANKAIkIgI2AiQgCygCHCIGIAJBmAFsaiEDAkACQAJ\u002FIAAoAkAiEQRAIAYgCygCGEGYAWxqIgJBkAFrKAIAIAJBmAFrKAIAayEMIANBDGohBiADQQRqIQQgAygCCCECIAMoAgAhBUEkDAELIANBlAFqIQYgA0GMAWohBCADKAKQASICIAMoAogBIgVrIQxBNAsgC2ooAgAiEkUNACAEKAIAIQcgBigCACEJIAIgBWshBiABKAIIIgNCfyABNQIoIhiGQn+FIhkgATUCEHwgGIinIghqIQQCfyAFIAhLBEAgBSAIayEOQQAhCEEAIAIgBE0NARogBiAEIAVrIgZrDAELIAggBWshCCACIARNBEAgBiAIayEGQQAhDkEADAELQQAhDiADIQYgAiAEawshFSAJIAdrIQIgASgCDCIEIBkgATUCFHwgGIinIgpqIQUCfyAHIApLBEAgByAKayEPQQAhCkEAIAUgCU8NARogAiAFIAdrIgJrDAELIAogB2shCiAFIAlPBEAgAiAKayECQQAhD0EADAELQQAhDyAEIQIgCSAFawshB0EAIQUgCEEASA0BIApBAEgNASAVQQBIDQEgB0EASA0BIAZBAEgNASACQQBIDQEgAyAPbCAOaiEHIAogDGwgCGohCQJAAkACQCABKAIsIggNACAJDQAgBw0AIAMgDEcNACADIAZHDQAgAiAERw0BIAEgC0EkQTQgERtqIgIoAgA2AiwgAkEANgIADAMLIAgNAQsgBEUNAiAErSADrX5CIIinDQIgAyAEbCIDQf\u002F\u002F\u002F\u002F8DSw0CIAEgA0ECdBAWIgM2AiwgA0UNAiAGIAEoAggiBEYgASgCDCIFIAJGcQ0AIANBACAEIAVsQQJ0EA4aCyACRQ0AIAJBAXEhFyAGQQJ0IQYgASgCLCAHQQJ0aiEEIBIgCUECdGohBSACQQFHBEAgAkH+\u002F\u002F\u002F\u002FB3EhB0EAIQIDQCAEIAUgBhALIRYgBSAMQQJ0IglqIgggCWohBSAWIAEoAghBAnRqIAggBhALIAEoAghBAnRqIQQgAkECaiICIAdHDQALCyAXRQ0AIAQgBSAGEAsaCyALQcwAaiELIA1BNGohDSABQTRqIQFBASEFIBRBAWoiFCAQKAIQSQ0BCwsgBQvVEgIJfwx+IwBBoAFrIgUkAAJAIAJBI00EQEEAIQIgA0EBQbYuQQAQCAwBCyACQSRrIgIgAkEDbiIJQQNsRwRAQQAhAiADQQFBti5BABAIDAELIAAoAkghBiABIAVBnAFqIgJBAhAKIAAgBSgCnAE7AVAgAUECaiAGQQhqQQQQCiABQQZqIAZBDGpBBBAKIAFBCmogBkEEEAogAUEOaiAGQQRqQQQQCiABQRJqIABB3ABqQQQQCiABQRZqIABB4ABqQQQQCiABQRpqIABB1ABqQQQQCiABQR5qIABB2ABqQQQQCiABQSJqIAJBAhAKAkACQAJAIAUoApwBIgJBgIABTQRAIAYgAjYCECACIAlHBEAgBSAJNgKEASAFIAI2AoABIANBAUGh8AAgBUGAAWoQCEEAIQIMBQsgBigCBCICIAYoAgwiCEkgBigCCCILIAYoAgAiBEtxRQRAIAUgCK0gAq19NwN4IAUgC60gBK19NwNwIANBAUHr7AAgBUHwAGoQCEEAIQIMBQsgACgCXCIHQQAgACgCYCIKG0UEQCAFIAo2AgQgBSAHNgIAIANBAUGT8QAgBRAIQQAhAgwFCwJAAkAgACgCVCIMIARLDQBBfyAHIAxqIgcgByAMSRsgBE0NACAAKAJYIgcgAksNAEF\u002FIAcgCmoiCiAHIApLGyACSw0BC0EAIQIgA0EBQdYUQQAQCAwFCwJAIAAoAuABDQAgACgC2AEiB0UNACAAKALcASIKRQ0AIAsgBGsiBCAHRiAIIAJrIgIgCkZxDQAgBSACNgJsIAUgBDYCaCAFIAo2AmQgBSAHNgJgIANBAUHT6AAgBUHgAGoQCEEAIQIMBQsgBiAJQTQQDCIENgIYIARFDQECQCAGKAIQRQ0AIAFBJGogBUGYAWoiAkEBEAogBCAFKAKYASIJQQd2Igo2AiAgBCAJQf8AcUEBaiIMNgIYIAAoAuABIQsgAUElaiACQQEQCiAEIAUoApgBNgIAIAFBJmogAkEBEAogBCAFKAKYASIINgIEQQAhAiAEKAIAIgdBgAJrQYF+SQRAQQAhCQwFC0EAIQkgCEGAAmtBgX5JDQQgBCgCGCIIQR9LDQMgBEEANgIkIAQgACgCoAE2AihBASEJIAYoAhBBAU0NAEEAIAogCxshCkEAIAwgCxshCyABQSdqIQEDQCABIAVBmAFqQQEQCiAEIAUoApgBIgdBB3YiCDYCVCAEIAdB\u002FwBxQQFqIgc2AkwCQCAAKALgAQ0AIAAtALwBQQRxDQAgByALRiAIIApGcQ0AIAUgCDYCVCAFIAc2AlAgBSAJNgJMIAUgCjYCSCAFIAs2AkQgBSAJNgJAIANBAkHX7gAgBUFAaxAICyABQQFqIAVBmAFqIghBARAKIAQgBSgCmAE2AjQgAUECaiAIQQEQCiAEIAUoApgBIgg2AjggBCgCNCIHQYACa0GBfkkNBSAIQYACa0GAfk0NBSAEKAJMIghBIE8NBCABQQNqIQEgBEEANgJYIAQgACgCoAE2AlwgBEE0aiEEIAlBAWoiCSAGKAIQSQ0ACwtBACECIAAoAlwiCEUNBCAAKAJgIgtFDQQgACAIrSINQgF9Ig8gBigCCCAAKAJUIgdrrXwgDYCnIgE2AmggACALrSIOQgF9IhAgBigCDCAAKAJYIgprrXwgDoCnIgQ2AmwCQAJAIAFFDQAgBEUNAEH\u002F\u002FwMgBG4gAU8NAQsgBSAENgIUIAUgATYCECADQQFBxekAIAVBEGoQCAwFCyABIARsIQkCQCAALQBEQQJxBEAgACAAKAIcIAdrIAhuNgIcIAAgACgCICAKayALbjYCICAAIA8gACgCJCAHa618IA2APgIkIAAgECAAKAIoIAprrXwgDoA+AigMAQsgACAENgIoIAAgATYCJCAAQgA3AhwLIAAgCUGMLBAMIgE2ApwBIAFFBEAgA0EBQc0dQQAQCAwFCyAGKAIQQbgIEAwhASAAKAIMIAE2AtArIAAoAgwoAtArRQRAIANBAUHNHUEAEAgMBQtBCkEUEAwhASAAKAIMIAE2AvArIAAoAgwiASgC8CtFBEAgA0EBQc0dQQAQCAwFCyABQQo2AvgrQQpBFBAMIQEgACgCDCABNgL8KyAAKAIMIgEoAvwrRQRAIANBAUHNHUEAEAgMBQsgAUEKNgKELAJAIAYoAhAiBEUNACAGKAIYIQhBACEBIARBAUcEQCAEQX5xIQsDQCAIIAFBNGxqIgcoAiBFBEAgACgCDCgC0CsgAUG4CGxqQQEgBygCGEEBa3Q2ArQICyAIIAFBAXIiB0E0bGoiCigCIEUEQCAAKAIMKALQKyAHQbgIbGpBASAKKAIYQQFrdDYCtAgLIAFBAmohASACQQJqIgIgC0cNAAsLIARBAXFFDQAgCCABQTRsaiICKAIgDQAgACgCDCgC0CsgAUG4CGxqQQEgAigCGEEBa3Q2ArQICyAJBEAgACgCnAEhAUEAIQIDQCABIAYoAhBBuAgQDCIENgLQKyAERQRAQQAhAiADQQFBzR1BABAIDAcLIAFBjCxqIQEgAkEBaiICIAlJDQALCyAAQQQ2AgggBigCECIDBEBBfyAAKAJYIgEgACgCYCICIAAoAmxBAWtsaiIEIAJqIgIgAiAESRsiAiAGKAIMIgQgAiAESRutIRBBfyAAKAJUIgIgACgCXCIEIAAoAmhBAWtsaiIAIARqIgQgACAESxsiACAGKAIIIgQgACAESRutIREgASAGKAIEIgAgACABSRutIRIgAiAGKAIAIgAgACACSRutIRMgBigCGCEAQQAhAQNAIAAgADUCBCINQgF9IhQgEnwgDYAiFT4CFCAAIAA1AgAiDkIBfSIWIBN8IA6AIhc+AhAgAEJ\u002FIAA1AigiD4ZCf4UiGCAQIBR8IA2AIBV9Qv\u002F\u002F\u002F\u002F8Pg3wgD4g+AgwgACARIBZ8IA6AIBd9Qv\u002F\u002F\u002F\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\u002FNgLUKyAFIANBAXJBjCxsakF\u002FNgLUKyAFIANBAnJBjCxsakF\u002FNgLUKyAFIANBA3JBjCxsakF\u002FNgLUKyAFIANBBHJBjCxsakF\u002FNgLUKyAFIANBBXJBjCxsakF\u002FNgLUKyAFIANBBnJBjCxsakF\u002FNgLUKyAFIANBB3JBjCxsakF\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\u002F\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\u002F\u002F\u002F\u002FD3xC\u002F\u002F\u002F\u002F\u002Fw+DNwMIIABBCDYCCEEBDAELIAUoAhwQCSAFQQA2AiAgBUIANwMYIAJBAUGpHUEAEAhBAAshDiAIQTBqJAAgDgscACAAKAIIRSAAKALAAUEARyAAKALEAUEAR3FxCwQAQQALDwAgAARAIAAgATYCuAELC48BAQR\u002FIAAoAhgiAQRAIAAoAhwiA0E0biEEIANBNE8Ef0EAIQMDQCABKAIAIgIEQCACQQFrEAkgAUEANgIACyABKAIEIgIEQCACEAkgAUEANgIECyABKAIIIgIEQCACEAkgAUEANgIICyABQTRqIQEgA0EBaiIDIARHDQALIAAoAhgFIAELEAkgAEEANgIYCwuGAQEEfyAAKAIYIgEEQCAAKAIcIgJBwABPBH8gAkEGdiEEQQAhAgNAIAEoAgAiAwRAIAMQCSABQQA2AgALIAEoAgQiAwRAIAMQCSABQQA2AgQLIAEoAjwQCSABQQA2AjwgAUFAayEBIAJBAWoiAiAERw0ACyAAKAIYBSABCxAJIABBADYCGAsLPwEBfyAABEAgACgCdCIBBEAgARAJIABBADYCdAsgACgCeCIBBEAgARAJIABBADYCeAsgACgClAEQCSAAEAkLC8GmBQRcfwJ7Bn4BfSMAQeAAayIjJAAgACgCCCEaAkACQAJAAkAgACgCAEUEQCAaIBooAhAgGigCCGsgGigCFCAaKAIMa2xBAnQiBhAWIgM2AjwgA0UEQCAAKAIkGiAAKAIgQQFB0TxBABAIIAAoAiQaIABBHGohEAwDCyADQQAgBhAOGgwBCyAaKAI8IgNFDQAgAxAJIBpBADYCPAsgACgCECIyKAIcIDIoAhhBmAFsaiIDQZgBaygCACE1IANBkAFrKAIAITYgACgCFCEvIAAoAgwhMCAAKAIEITcgACgCHCgCAEUNAiAAQRxqIRACQAJ\u002FQQAgASgCBCIDQQBMDQAaIAEoAgAhBgJAA0AgBiAHQQxsaiIEKAIARQ0BIAdBAWoiByADRw0AC0EADAELIAQoAgQLIgQNAEEBQZwBEAwiBEUEQCAAKAIgQQFBkDBBABAIDAILIARBADYCjAEgASgCBCIDQf\u002F\u002F\u002F\u002F8HRwR\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\u002FwFRIg02ApgCAn8CQCABQQNxIgJBA0YNAEL\u002FASFhIA0EQEEAIActAABBjwFLDQIaCyAGQQNOBEAgBzEAACFhCyAPIAZBA2siDTYClAIgD0EPQRAgYEL\u002FAVEiCxsiAzYCkAIgDyAHIAZBAkpqIgE2AoACIA8gYUIPhCBhIAhBAUYbImFC\u002FwFRNgKYAiAPIGBCB0IIIAsbhiBhhCJgNwOIAiACQQJGDQAgYUL\u002FAVEEQEEAIAEtAABBjwFLDQIaC0L\u002FASFiIAZBBE4EQCABMQAAIWILIA8gBkEEayIHNgKUAiAPIAEgBkEDSmoiATYCgAIgDyBiQg+EIGIgDUEBRhsiYkL\u002FAVE2ApgCIA8gA0EHQQggYUL\u002FAVEiCBtqIgM2ApACIA8gYEIHQgggCBuGIGKEImA3A4gCIAJBAUYNAEL\u002FASFhIGJC\u002FwFRBEBBACABLQAAQY8BSw0CGgsgBkEFTgRAIAExAAAhYQsgDyAGQQVrNgKUAiAPIAEgBkEESmo2AoACIA8gYUIPhCBhIAdBAUYbImFC\u002FwFRNgKYAiAPIANBB0EIIGJC\u002FwFRIgEbaiIDNgKQAiAPIGBCB0IIIAEbhiBhhCJgNwOIAgsgDyBgQcAAIANrrYY3A4gCQQELRQRAICEEQEEAIQcgHUEBQd7UAEEAEAgMBQtBACEHIB1BAUHe1ABBABAIDAQLICsgJGshFSAPIAZBAmsiCzYC9AEgDyAFIBFqIgJBA2siAzYC4AEgDyACQQJrLQAAIhlBjwFLIg02AvgBIA8gGUEEdq0iYDcD6AEgD0EDQQQgYEIHg0IHURsiATYC8AEgA0EDcUEBaiIHIAsgByALSBshCAJAAkAgBkECTARAIA8gCyAIayICNgL0AQwBCyAPIAJBBGsiBzYC4AEgDyADLQAAIhdBjwFLIg02AvgBIA8gF60iYSABrYYgYIQiYDcD6AEgD0EIQQdBCCBhQv8Ag0L\u002FAFEbIBlBjwFNGyABaiIBNgLwAQJAIAhBAUYEQCAHIQMMAQsgDyACQQVrIgM2AuABIA8gBy0AACIZQY8BSyINNgL4ASAPIBmtImEgAa2GIGCEImA3A+gBIA9BCEEHQQggYUL\u002FAINC\u002FwBRGyAXQY8BTRsgAWoiATYC8AEgCEECRg0AIA8gAkEGayIHNgLgASAPIAMtAAAiF0GPAUsiDTYC+AEgDyAXrSJhIAGthiBghCJgNwPoASAPQQhBB0EIIGFC\u002FwCDQv8AURsgGUGPAU0bIAFqIgE2AvABIAhBA0YEQCAHIQMMAQsgDyACQQdrIgM2AuABIA8gBzEAACJhQo8BViINNgL4ASAPIGEgAa2GIGCEImA3A+gBIA9BCEEHQQggYUL\u002FAINC\u002FwBRGyAXQY8BTRsgAWoiATYC8AELIA8gCyAIayICNgL0ASABQSBLDQELAkAgAkEETgRAIANBA2soAgAhByAPIAJBBGs2AvQBIA8gA0EEazYC4AEMAQsgAkEATARAQQAhBwwBCyACQQFxIUcCQCACQQFGBEBBGCEIQQAhBwwBCyACQf7\u002F\u002F\u002F8HcSEXQRghCEEAIQdBACELA0AgDyADQQFrIh82AuABIAMtAAAhRiAPIANBAmsiAzYC4AEgDyACQQFrNgL0ASAfLQAAIR8gDyACQQJrIgI2AvQBIEYgCHQgB3IgHyAIQQhrdHIhByAIQRBrIQggC0ECaiILIBdHDQALCyBHRQ0AIA8gA0EBazYC4AEgAy0AACFIIA8gAkEBazYC9AEgSCAIdCAHciEHCyAPIAdB\u002FwFxIgNBjwFLNgL4ASAPQQdBCCAHQYCAgPgHcUGAgID4B0YbQQggDRsiAkEIQQdBCCAHQYCA\u002FANxQYCA\u002FANGGyAHQf\u002F\u002F\u002F\u002F94TRtqIghBCEEHQQggB0GA\u002FgFxQYD+AUYbIAdBEHZB\u002FwFxIg1BjwFNG2oiC0EIQQdBCCAHQf8AcUH\u002FAEYbIAdBCHZB\u002FwFxIhlBjwFNGyABamo2AvABIA8gDSACdCAHQRh2ciAZIAh0ciADIAt0cq0gAa2GIGCENwPoAQsgD0HAAWogESAFIAZrQf8BEFQCf0EAIAxBAkkNABogD0GgAWogEyAJQQAQVEEAIAxBAkYNABpCACFgQgAhYiAPQQE2ApgBIA9BADYCkAEgD0IANwOIASAPIAlBAWsiBjYClAEgDyAFIBFqIAlqIgNBAWsiATYCgAEgAUEDcSEFAkAgCUEATARAIAEhAwwBCyAPIANBAmsiAzYCgAEgATEAACFgCyAPIGA3A4gBIA8gYEKPAVYiETYCmAEgD0EHQQggYEL\u002FAINC\u002FwBRGyINNgKQAQJAIAVFDQAgDyAJQQJrIgI2ApQBAkAgCUECSARAIAMhBwwBCyAPIANBAWsiBzYCgAEgAzEAACFiCyAPIGJCjwFWIhE2ApgBIA8gYiANrYYgYIQiYTcDiAEgD0EIQQdBCCBiQv8Ag0L\u002FAFEbIGBCjwFYGyANaiINNgKQASAFQQFGBEAgByEDIGEhYCAGIQkgAiEGDAELIA8gCUEDayIINgKUAQJAIAlBA0gEQCAHIQEMAQsgDyAHQQFrIgE2AoABIAcxAAAhYwsgDyBjQo8BViIRNgKYASAPIGMgDa2GIGGEImA3A4gBIA9BCEEHQQggY0L\u002FAINC\u002FwBRGyBiQo8BWBsgDWoiDTYCkAEgBUECRgRAIAEhAyACIQkgCCEGDAELIA8gCUEEayIGNgKUAUIAIWICQCAJQQRIBEAgASEDDAELIA8gAUEBayIDNgKAASABMQAAIWILIA8gYkKPAVYiETYCmAEgDyBiIA2thiBghCJgNwOIASAPQQhBB0EIIGJC\u002FwCDQv8AURsgY0KPAVgbIA1qIg02ApABIAghCQsgDUEgTQRAAkAgCUEFTgRAIANBA2soAgAhByAPIAlBBWs2ApQBIA8gA0EEazYCgAEMAQtBACEHIAlBAkgNAEEYIQkDQCAPIANBAWsiATYCgAEgAy0AACFJIA8gBkEBayICNgKUASBJIAl0IAdyIQcgBkEBSyFKIAEhAyAJQQhrIQkgAiEGIEoNAAsLIA8gB0H\u002FAXEiAUGPAUs2ApgBIA9BB0EIIAdBgICA+AdxQYCAgPgHRhtBCCARGyIDQQhBB0EIIAdBgID8A3FBgID8A0YbIAdB\u002F\u002F\u002F\u002F\u002F3hNG2oiBkEIQQdBCCAHQYD+AXFBgP4BRhsgB0EQdkH\u002FAXEiCUGPAU0baiICQQhBB0EIIAdB\u002FwBxQf8ARhsgB0EIdkH\u002FAXEiCEGPAU0bIA1qajYCkAEgDyAJIAN0IAdBGHZyIAggBnRyIAEgAnRyrSANrYYgYIQ3A4gBC0EBCyExIBggEmshHyAWQQFqISwgFEEAOgDAECAUQcAQaiELIA9BgAJqECEhAiAVQQBKBEAgJkEBayETIBQhAyALIQhBACERIA4hBkEAIQ0DQCANIQUgEUEIdCAPQeABahAqQf8AcUEBdHJBsP0Aai8BACEBAkAgEQ0AIAFBACACQQJrIgdBf0YbIQEgAkEBSgRAIAchAgwBCyAPQYACahAhIQILIA8pA+gBIWQgDygC8AEhSyADIAMoAgAgAUEEdiIYQQNxIAFBAnZBMHFyICJ0ciIWNgIAIAFBBXZBB3EgAUEQcSIeQQR2ciERIEsgAUEHcSIHayENIGQgB62IImCnIQlBACEHIBUgBUECckoEQCARQQh0IAlB\u002FwBxQQF0ckGw\u002FQBqLwEAIQcCQCARDQAgB0EAIAJBAmsiCUF\u002FRhshByACQQFKBEAgCSECDAELIA9BgAJqECEhAgsgB0EEdkEBcSAHQQV2QQdxciERIA0gB0EHcSIJayENIGAgCa2IImCnIQkLIAMgB0ECdEGABnEgB0EwcXIgIkEEanQgFnI2AgACQCAHQQJ2QQJxIAFBA3ZBAXFyIhdBA0cNAEEEQQMgAkECayIWQX9GGyEXIAJBAUoEQCAWIQIMAQsgD0GAAmoQISECCwJ\u002FIBdFBEAgD0KBgICAEDcCeEEADAELIBdBAk0EQCAPQQEgCUEHcUHknQFqLQAAIhZBBXZBfyAWQQJ2QQdxIhl0QX9zIAkgFkEDcSIJdnFqQQFqIhYgF0EBRiIXGzYCfCAPIBZBASAXGzYCeCAJIBlqDAELIAkgCUEHcUHknQFqLQAAIhZBA3EiGXYhCSAXQQNGBEAgFkEFdkEBaiEXIBlBA0YEQCAPIAlBAXFBAnI2AnwgDyAXQX8gFkECdkEHcSIWdEF\u002FcyAJQQF2cWo2AnggFkEEagwCCyAPIBcgCSAJQQdxQeSdAWotAAAiCUEDcSISdiIgQX8gFkECdkEHcSIWdEF\u002Fc3FqNgJ4IA9BfyAJQQJ2QQdxIhd0QX9zICAgFnZxIAlBBXZqQQFqNgJ8IBYgGWogEmogF2oMAQsgDyAJIAlBB3FB5J0Bai0AACIJQQNxIhJ2IiBBfyAWQQJ2QQdxIhd0QX9zcSAWQQV2akEDajYCeCAPQX8gCUECdkEHcSIWdEF\u002FcyAgIBd2cSAJQQV2akEDajYCfCASIBlqIBdqIBZqCyEJAkAgLCAPKAJ4IhlPBEAgDygCfCISICxNDQELICEEQEEAIQcgHUEBQan2AEEAEAgMBwtBACEHIB1BAUGp9gBBABAIDAYLIA8gDSAJazYC8AEgDyBgIAmtiDcD6AEgB0HwAXEgGEEPcXJB\u002FwFB\u002FwEgBUEEaiINIBVrQQF0diANIBVMGyIJIAlB1QBxIB9BAUobIglBf3NxBEAgIQRAQQAhByAdQQFBv9oAQQAQCAwHC0EAIQcgHUEBQb\u002FaAEEAEAgMBgsCQAJAIB4EQCAPQcABahATIRcgDyAPKALQASAZIAFBE3RBH3VqIhZrNgLQASAPIA8pA8gBIBatiDcDyAEgF0F\u002FIBZ0QX9zcSABQQh2QQFxIBZ0ckEBckECaiATdCAXQR90ciEWDAELQQAhFiAJQQFxRQ0BCyAGIBY2AgALAkAgAUEgcQRAIA9BwAFqEBMhFyAPIA8oAtABIBkgAUESdEEfdWoiFms2AtABIA8gDykDyAEgFq2INwPIASAGIBVBAnRqIBdBfyAWdEF\u002Fc3EgAUEJdkEBcSAWdHJBAXIiFkECaiATdCAXQR90cjYCACAIQSAgFmdrIhYgCC0AAEH\u002FAHEiFyAWIBdLG0GAAXI6AAAMAQsgCUECcUUNACAGIBVBAnRqQQA2AgALIAZBBGohFwJAAkAgAUHAAHEEQCAPQcABahATIRggDyAPKALQASAZIAFBEXRBH3VqIhZrNgLQASAPIA8pA8gBIBatiDcDyAEgGEF\u002FIBZ0QX9zcSABQQp2QQFxIBZ0ckEBckECaiATdCAYQR90ciEWDAELQQAhFiAJQQRxRQ0BCyAXIBY2AgALIAhBADoAAQJAIAFBgAFxBEAgD0HAAWoQEyEYIA8gDygC0AEgGSABQRB0QR91aiIWazYC0AEgDyAPKQPIASAWrYg3A8gBIBcgFUECdGogGEF\u002FIBZ0QX9zcSABQQt2QQFxIBZ0ckEBciIBQQJqIBN0IBhBH3RyNgIAIAhBoH8gAWdrOgABDAELIAlBCHFFDQAgFyAVQQJ0akEANgIACyAGQQhqIQECQAJAIAdBEHEEQCAPQcABahATIRkgDyAPKALQASASIAdBE3RBH3VqIhZrNgLQASAPIA8pA8gBIBatiDcDyAEgGUF\u002FIBZ0QX9zcSAHQQh2QQFxIBZ0ckEBckECaiATdCAZQR90ciEXDAELQQAhFyAJQRBxRQ0BCyABIBc2AgALAkAgB0EgcQRAIA9BwAFqEBMhGSAPIA8oAtABIBIgB0ESdEEfdWoiFms2AtABIA8gDykDyAEgFq2INwPIASABIBVBAnRqIBlBfyAWdEF\u002Fc3EgB0EJdkEBcSAWdHJBAXIiAUECaiATdCAZQR90cjYCACAIQSAgAWdrIgEgCC0AAUH\u002FAHEiFiABIBZLG0GAAXI6AAEMAQsgCUEgcUUNACABIBVBAnRqQQA2AgALIAZBDGohAQJAAkAgB0HAAHEEQCAPQcABahATIRkgDyAPKALQASASIAdBEXRBH3VqIhZrNgLQASAPIA8pA8gBIBatiDcDyAEgGUF\u002FIBZ0QX9zcSAHQQp2QQFxIBZ0ckEBckECaiATdCAZQR90ciEXDAELQQAhFyAJQcAAcUUNAQsgASAXNgIACyAIQQJqIghBADoAAAJAIAdBgAFxBEAgD0HAAWoQEyEWIA8gDygC0AEgEiAHQRB0QR91aiIJazYC0AEgDyAPKQPIASAJrYg3A8gBIAEgFUECdGogFkF\u002FIAl0QX9zcSAHQQt2QQFxIAl0ckEBciIBQQJqIBN0IBZBH3RyNgIAIAhBoH8gAWdrOgAADAELIAlBgAFJDQAgASAVQQJ0akEANgIACyAiQRBzISIgAyAFQQRxaiEDIAZBEGohBiANIBVIDQALCyAKQQhxITggFEGwDGohKCAUQaAIaiEpIBRBkARqISUgH0EDTgRAIBVBA2whOSAVQQF0ITogJkEBayEgQQMgJkECayIBdCEtQQEgAXQhLiAVQQdqQQF2Qfz\u002F\u002F\u002F8HcUEEaiE9ICsgJEF\u002Fc2oiAUEDdiIDQQJ0Ij5BBGohOyADQQFqIj9B\u002FP\u002F\u002F\u002FwNxIhxBAnQhPCAcQQN0IRIgAUEYSSFAQQIhGQNAIBkhEyALLQAAIRYgC0EAOgAAICJBb3FBAnMhIgJAIBVBAEwEQCATQQJqIRkMAQsgJSAUIBNBBHEbIREgE0ECaiEZIA4gEyAVbEECdGohCEEAIQogCyEGQQAhDQNAIA0hBSAGLQABQQV2QQRxIAogFkEHdnJyIgNBCHQgD0HgAWoQKkH\u002FAHFBAXRyQbCNAWovAQAhAQJAIAMNACABQQAgAkECayIDQX9GGyEBIAJBAUoEQCADIQIMAQsgD0GAAmoQISECCyAPKQPoASFlIA8oAvABIUwgESARKAIAIAFBBHZBA3EgAUECdkEwcXIgInRyIgk2AgAgAUHAAHEiKkEFdiABQYABcSInQQZ2ciEKIEwgAUEHcSIDayEXIGUgA62IImCnIQ1BACEYAkAgFSAFQQJyTARAQQAhBwwBCyAKIAYtAAJBBXZBBHEgBi0AAUEHdnJyIgNBCHQgDUH\u002FAHFBAXRyQbCNAWovAQAhBwJAIAMNACAHQQAgAkECayIDQX9GGyEHIAJBAUoEQCADIQIMAQsgD0GAAmoQISECCyAHQQV2IAdBBnZyQQJxIQogFyAHQQdxIgNrIRcgYCADrYgiYKchDQsgESAHQQJ0QYAGcSAHQTBxciAiQQRqdCAJcjYCAEEBIQlBASEDAkAgB0ECdkECcSABQQN2QQFxciIeRQ0AIA0gDUEHcUHknQFqLQAAIgNBA3EiDXYhCSAeQQNHBEBBASAJQX8gA0ECdkEHcSIYdEF\u002Fc3EgA0EFdmpBAWoiAyAeQQFGIh4bIQkgA0EBIB4bIQMgDSAYaiEYDAELIAlBB3FB5J0Bai0AACIeQQNxIjMgDSADQQJ2QQdxIhtqaiAeQQJ2QQdxIg1qIRggCSAzdiIJQX8gG3RBf3NxIANBBXZqQQFqIQNBfyANdEF\u002FcyAJIBt2cSAeQQV2akEBaiEJCyAPIBcgGGs2AvABIA8gYCAYrYg3A+gBIAFB8AFxIg0gDUEBa3EEQCADIBZB\u002FwBxIhYgBi0AAUH\u002FAHEiFyAWIBdLGyIWQQJrIhdBACAWIBdPG2ohAwsgB0HwAXEiFyAXQQFrcQRAIAkgBi0AAUH\u002FAHEiFiAGLQACQf8AcSIYIBYgGEsbIhZBAmtBACAWQQJLG2ohCQsgAyAsTSAJICxNcUUEQCAhBEBBACEHIB1BAUGN9wBBABAIDAkLQQAhByAdQQFBjfcAQQAQCAwICyAGLQACIRYgBkEAOwABIBcgDUEEdnJB\u002FwFB\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\u002FQACACJfQQT9rQEgX0EE\u002FasBIF4gX\u002F0NDA0ODxAREhMUFRYXGBkaG0Ec\u002Fa0B\u002FVD9UCBf\u002FVAiXv0LAgAgCSBeIAP9AAIEQRz9qwH9UCJeQQH9rQH9DHd3d3d3d3d3d3d3d3d3d3f9TiBeQQH9qwH9DO7u7u7u7u7u7u7u7u7u7u79Tv1QIF79UCBf\u002FU\u002F9CwIAIF8hXiAHQQRqIgcgHEcNAAsgHCA\u002FRg0DIBIhAyBe\u002FRsDDAILIANFIRggKSAoIAMbIQUMAgsgBSEBIBYhBkEACyEHA0AgB0EcdiEJIAEgBigCACIHQQR2IAkgB0EEdHJyIAdyIgk2AgAgASAJIAYoAgRBHHRyIglBAXZB9+7duwdxIAlBAXRB7t27935xciAJciAHQX9zcTYCACABQQRqIQEgBkEEaiEGIANBCGoiAyAVSA0ACwsgE0EGSQ0AQQAhCUEAIREgFiEBICkgKCAYGyIbIQcgFCAlIBgbIhchBgJAIBVBAEwiDQ0AA0AgAUEEaiEDIAcoAgAhCCABKAIAIQEgByA4BH8gCAUgAUEEdCARQRx2ciABQQR2ciADKAIAQRx0ciABckEDdEGIkaLEeHEgCHILIAYoAgBBf3NxNgIAIAZBBGohBiAHQQRqIQcgASERIAMhASAJQQhqIgkgFUgNAAsgDQ0AIA4gE0EGayAVbEECdGohQUEAIR4gFyERA0BBACEDIBsoAgAiAQRAIBUgHmshQkEAIQdBACEKA0AgByFNIA9BoAFqEBMhBwJAIAogCkEEaiIGIEIgBiAeaiAVSBsiM04iQwRAQQAhBgwBCyARKAIAQX9zISogQSAKIB5yQQJ0aiEYQQAhBkEPIAoiCUECdCJEdCINIQgDQAJAIAEgCHFFDQAgCEGRosSIAXEiJyABcQRAIAdBAXEEQCADICdyIQNBMiAJQQJ0dCAqcSABciEBCyAHQQF2IQcgBkEBaiEGCyABICdBAXQiNHEEQCAHQQFxBEAgAyA0ciEDIAFB9AAgCUECdHQgKnFyIQELIAdBAXYhByAGQQFqIQYLIAEgJ0ECdCI0cQRAIAdBAXEEQCADIDRyIQMgAUHoASAJQQJ0dCAqcXIhAQsgB0EBdiEHIAZBAWohBgsgASAnQQN0IidxRQ0AIAdBAXEEQCADICdyIQMgAUHAASAJQQJ0dCAqcXIhAQsgBkEBaiEGIAdBAXYhBwsgCEEEdCEIIAlBAWoiCSAzSA0ACyADIER2Qf\u002F\u002FA3FFDQAgQw0AA0ACQCADIA1xRQ0AIA1BkaLEiAFxIgkgA3EEQCAYIBgoAgAgB0EfdHIgLXI2AgAgB0EBdiEHIAZBAWohBgsgCUEBdCADcQRAIBggFUECdGoiCCAIKAIAIAdBH3RyIC1yNgIAIAdBAXYhByAGQQFqIQYLIAlBAnQgA3EEQCAYIDpBAnRqIgggCCgCACAHQR90ciAtcjYCACAHQQF2IQcgBkEBaiEGCyAJQQN0IANxRQ0AIBggOUECdGoiCSAJKAIAIAdBH3RyIC1yNgIAIAZBAWohBiAHQQF2IQcLIA1BBHQhDSAYQQRqIRggCkEBaiIKIDNIDQALCyAPIA8oArABIAZrNgKwASAPIA8pA6gBIAatiDcDqAFBASEHQQQhCiBNQQFxRQ0ACyAbIBsoAgQgA0EbdkEOcSADQR12ciADQRx2ciARKAIEQX9zcXI2AgQLIBEoAgAgA3IiA0EDdkGRosSIAXEiAUEEdiABQQR0ciABciEGIB4EQCAFQQRrIgcgBygCACAWQQRrKAIAQX9zIAFBHHRxcjYCAAsgBSAFKAIAIAYgFigCAEF\u002Fc3FyNgIAIAUgBSgCBCAWKAIEQX9zIANBH3ZxcjYCBCAbQQRqIRsgEUEEaiERIAVBBGohBSAWQQRqIRYgHkEIaiIeIBVIDQALCyAXQQAgPRAOGgsgGSAfSA0ACwsCQCAMQQJJDQACQCAfQQNxQQFrIhZBAkkgMXEEQCAVQQBMDQFBASAmQQJrdCECIA4gH0H8\u002F\u002F8HcSAVbEECdGohESAlIBQgH0EEcRshBSAmQQFrIQhBACEKIBVBDGwhDCAVQQN0IQsDQCAPQYABahAqIQdBACEBIAUoAgAiAwRAIBEgCkECdGohAUEPIQZBACEJA0ACQCADIAZxRQ0AIAZBkaLEiAFxIg0gA3EEQCABIAEoAgAgB0F\u002Fc0EBcSAIdHMgAnI2AgAgB0EBdiEHCyANQQF0IANxBEAgASAVQQJ0aiIdIB0oAgAgB0F\u002Fc0EBcSAIdHMgAnI2AgAgB0EBdiEHCyANQQJ0IANxBEAgASALaiIdIB0oAgAgB0F\u002Fc0EBcSAIdHMgAnI2AgAgB0EBdiEHCyANQQN0IANxRQ0AIAEgDGoiDSANKAIAIAdBf3NBAXEgCHRzIAJyNgIAIAdBAXYhBwsgAUEEaiEBIAZBBHQhBiAJQQFqIglBCEcNAAsgA2khAQsgBUEEaiEFIA8gDygCkAEgAWs2ApABIA8gDykDiAEgAa2INwOIASAKQQhqIgogFUgNAAsLIBZBAUsNACAVQQBMDQAgJSAUIB9BBHEiARshCSAoICkgARshAkEAIQMCfwJAICsgJEF\u002Fc2oiAUE4SQ0AIAIgCSABQQF2Qfz\u002F\u002F\u002F8HcSIGQQRqIgdqSSAJIAIgB2oiB0lxDQAgAiAGIAlqQQhqSSAJQQRqIAdJcQ0AIAFBA3ZBAWoiDUH8\u002F\u002F\u002F\u002FA3EiCEEDdCEDIAkgCEECdCIBaiEGIAEgAmohAf0MAAAAAAAAAAAAAAAAAAAAACFeQQAhBwNAIAIgB0ECdCIWaiIRIAkgFmoiFv0AAgAiX0EE\u002Fa0BIF9BBP2rASBeIF\u002F9DQwNDg8QERITFBUWFxgZGhtBHP2tAf1Q\u002FVAgX\u002F1QIl79CwIAIBEgXiAW\u002FQACBEEc\u002FasB\u002FVAiXkEB\u002Fa0B\u002FQx3d3d3d3d3d3d3d3d3d3d3\u002FU4gXkEB\u002FasB\u002FQzu7u7u7u7u7u7u7u7u7u7u\u002FU79UCBe\u002FVAgX\u002F1P\u002FQsCACBfIV4gB0EEaiIHIAhHDQALIAggDUYNAiBe\u002FRsDDAELIAIhASAJIQZBAAshBwNAIAdBHHYhCSABIAYoAgAiB0EEdiAJIAdBBHRyciAHciIJNgIAIAEgCSAGKAIEQRx0ciIJQQF2Qffu3bsHcSAJQQF0Qe7du\u002Fd+cXIgCXIgB0F\u002Fc3E2AgAgAUEEaiEBIAZBBGohBiADQQhqIgMgFUgNAAsLIB8gH0EBakEDcWtBA2tBACAfQQZKGyIRIB9ODQBBAyAmQQJrdCEZICsgJEF\u002Fc2oiAUEDdiIDQQJ0IitBBGohHSADQQFqIgNB\u002FP\u002F\u002F\u002FwNxIhJBAnQhISASQQN0IRYgFUEMbCEsIBVBA3QhLSABQRhJISYgAyASRiEbA0ACQAJAAkACQAJ\u002FAkAgHyARayIBQQFrIgNBA08EQEF\u002FIRcgAUEFSA0FIBVBAEwNBiAlIBQgEUEEcSIBGyECICggKSABGyEJIDgEQEEAIQYgJg0EIAIgCSAdakkgAiAdaiAJS3ENBCACICFqIQEgCSAhaiEHA0AgCSAGQQJ0IgNqIgggCP0AAgAgAiADav0AAgD9T\u002F0LAgAgBkEEaiIGIBJHDQALIBYhBiAbDQYMBQsgFCAlIAEbIQ1BACEDICYNASAJIA0gHWpJIA0gCSAdaiIBSXENASAJIA0gK2pBCGpJIA1BBGogAUlxDQEgCSACIB1qSSABIAJLcQ0BIAIgIWohCCAJICFqIQEgDSAhaiEH\u002FQwAAAAAAAAAAAAAAAAAAAAAIV5BACEGA0AgCSAGQQJ0IgNqIgUgAyANaiIM\u002FQACACJfQQT9rQEgX0EE\u002FasBIF4gX\u002F0NDA0ODxAREhMUFRYXGBkaG0Ec\u002Fa0B\u002FVD9UCAM\u002FQACBEEc\u002FasB\u002FVAgX\u002F1QQQP9qwH9DIiIiIiIiIiIiIiIiIiIiIj9TiAF\u002FQACAP1QIAIgA2r9AAIA\u002FU\u002F9CwIAIF8hXiAGQQRqIgYgEkcNAAsgGw0FIBYhAyBe\u002FRsDDAILIANBAnRB7J0BaigCACEXDAQLIA0hByAJIQEgAiEIQQALIQYDQCAGQRx2IQkgASABKAIAIAcoAgAiBkEEdiAJIAZBBHRyciAHKAIEQRx0ciAGckEDdEGIkaLEeHFyIAgoAgBBf3NxNgIAIAhBBGohCCABQQRqIQEgB0EEaiEHIANBCGoiAyAVSA0ACwwCCyAJIQcgAiEBCwNAIAcgBygCACABKAIAQX9zcTYCACABQQRqIQEgB0EEaiEHIAZBCGoiBiAVSA0ACwsgFUEATA0AICUgFCARQQRxIgEbIQogKCApIAEbIQIgFCAlIAEbIRMgKSAoIAEbIR4gDiARIBVsQQJ0aiEuQQAhBQNAQQAhAyACKAIAIBdxIgEEQCAVIAVrISpBACEHQQAhDQNAIAchTiAPQaABahATIQcCQCANIA1BBGoiBiAqIAUgBmogFUgbIiROIicEQEEAIQYMAQsgFyAKKAIAQX9zcSEYIC4gBSANckECdGohC0EAIQZBDyANIglBAnQiHHQiICEIA0ACQCABIAhxRQ0AIAhBkaLEiAFxIiIgAXEEQCAHQQFxBEAgAyAiciEDQTIgCUECdHQgGHEgAXIhAQsgB0EBdiEHIAZBAWohBgsgASAiQQF0IjFxBEAgB0EBcQRAIAMgMXIhAyABQfQAIAlBAnR0IBhxciEBCyAHQQF2IQcgBkEBaiEGCyABICJBAnQiMXEEQCAHQQFxBEAgAyAxciEDIAFB6AEgCUECdHQgGHFyIQELIAdBAXYhByAGQQFqIQYLIAEgIkEDdCIicUUNACAHQQFxBEAgAyAiciEDIAFBwAEgCUECdHQgGHFyIQELIAZBAWohBiAHQQF2IQcLIAhBBHQhCCAJQQFqIgkgJEgNAAsgAyAcdkH\u002F\u002FwNxRQ0AICcNAANAAkAgAyAgcUUNACAgQZGixIgBcSIJIANxBEAgCyALKAIAIAdBH3RyIBlyNgIAIAdBAXYhByAGQQFqIQYLIAlBAXQgA3EEQCALIBVBAnRqIgggCCgCACAHQR90ciAZcjYCACAHQQF2IQcgBkEBaiEGCyAJQQJ0IANxBEAgCyAtaiIIIAgoAgAgB0EfdHIgGXI2AgAgB0EBdiEHIAZBAWohBgsgCUEDdCADcUUNACALICxqIgkgCSgCACAHQR90ciAZcjYCACAGQQFqIQYgB0EBdiEHCyAgQQR0ISAgC0EEaiELIA1BAWoiDSAkSA0ACwsgDyAPKAKwASAGazYCsAEgDyAPKQOoASAGrYg3A6gBQQEhB0EEIQ0gTkEBcUUNAAsgAiACKAIEIANBG3ZBDnEgA0EddnIgA0EcdnIgCigCBEF\u002Fc3FyNgIECyAKKAIAIANyIgNBA3ZBkaLEiAFxIgFBBHYgAUEEdHIgAXIhBiAFBEAgHkEEayIHIAcoAgAgE0EEaygCAEF\u002FcyABQRx0cXI2AgALIB4gHigCACAGIBMoAgBBf3NxcjYCACAeIB4oAgQgEygCBEF\u002FcyADQR92cXI2AgQgAkEEaiECIApBBGohCiAeQQRqIR4gE0EEaiETIAVBCGoiBSAVSA0ACwsgEUEEaiIRIB9IDQALC0EBIQcgH0EATA0DIBVBAEwNAyAVQfz\u002F\u002F\u002F8HcSIGQQJ0IQIgFUEESSEIQQAhCQNAIA4gCSAVbEECdGohAwJAAkAgCARAIAMhB0EAIQEMAQsgAiADaiEHQQAhAQNAIAMgAUECdGoiDSAN\u002FQACACJe\u002FQz\u002F\u002F\u002F9\u002F\u002F\u002F\u002F\u002Ff\u002F\u002F\u002F\u002F3\u002F\u002F\u002F\u002F9\u002F\u002FU4iX\u002F2hASBfIF79DAAAAAAAAAAAAAAAAAAAAAD9Of1S\u002FQsCACABQQRqIgEgBkcNAAsgBiIBIBVGDQELA0AgB0EAIAcoAgAiA0H\u002F\u002F\u002F\u002F\u002FB3EiDWsgDSADQQBIGzYCACAHQQRqIQcgAUEBaiIBIBVHDQALC0EBIQcgCUEBaiIJIB9HDQALDAMLICFFDQAgDyAaKAIYNgI0IA8gFjYCMCAdQQFB3cYAIA9BMGoQCAwBCyAPIAE2AhQgDyAWNgIQIB1BAUHdxgAgD0EQahAIQQAhBwwBC0EAIQcLIA9BsAJqJAAgBw0BDAMLIAQgAUEJdEHgqQFqNgJsAn8gBCgCdCEBAkACQCAaKAIQIBooAghrIgUgGigCFCAaKAIMayIJbCIDIAQoAoQBSwRAIAEQCSAEIANBAnQQFiIBNgJ0QQAgAUUNAxogBCADNgKEAQwBCyABRQ0BCyABQQAgA0ECdBAOGgsgBCgCeCEBAkAgBUECaiIGIAlBA2pBAnYiDEECamwiAyAEKAKIAU0EQCADQQJ0IQgMAQsgARAJIAQgA0ECdCIIEBYiATYCeCABDQBBAAwBCyAEIAM2AogBIAFBACAIEA4aAkAgBkUNACAEKAJ4IgchAQJAIAZBBE8EQCAHIAZBfHEiDUECdGohAUEAIQgDQCAHIAhBAnRq\u002FQwAACBJAAAgSQAAIEkAACBJ\u002FQsCACAIQQRqIgggDUcNAAsgBiANRg0BCwNAIAFBgICAyQQ2AgAgAUEEaiEBIA1BAWoiDSAGRw0ACwsgByAMQQFqIAZsQQJ0aiEDQQAhDQJAAkAgBkEESQRAIAMhAQwBCyADIAZBfHEiDUECdGohAUEAIQgDQCADIAhBAnRq\u002FQwAACBJAAAgSQAAIEkAACBJ\u002FQsCACAIQQRqIgggDUcNAAsgBiANRg0BCwNAIAFBgICAyQQ2AgAgAUEEaiEBIA1BAWoiDSAGRw0ACwsgCUEDcSIBRQ0AIAZFDQBBgICAyARBgICAwARBgICAgAQgAUECRhsgAUEBRhshCyAHIAYgDGxBAnRqIQNBACENAkAgBkEESQRAIAMhAQwBCyADIAZBfHEiDUECdGohASAL\u002FREhX0EAIQgDQCADIAhBAnRqIF\u002F9CwIAIAhBBGoiCCANRw0ACyAGIA1GDQELA0AgASALNgIAIAFBBGohASANQQFqIg0gBkcNAAsLIAQgCTYCgAEgBCAFNgJ8QQELRQ0CIBooAhwgEWoiGUEfTgRAICFFDQIgIyAZNgIQIB1BAkHWwAAgI0EQahAIDAMLIAQQU0EAIQEgBEHAqQE2AmQgBEHgngE2AmAgBEGAnwE2AhwCQAJAAkACQCAaKAI0IgdBAUsNACAEKAKQAUUNAiAHDQAMAQsgGigCBCEDIAdBBE8EQCAHQXxxIQJBACEGA0AgAyAGQQN0aiIBQRxqIAFBFGogAUEMaiAB\u002FQkCBP1WAgAB\u002FVYCAAL9VgIAAyBe\u002Fa4BIV4gBkEEaiIGIAJHDQALIF4gXiBe\u002FQ0ICQoLDA0ODwABAgMAAQID\u002Fa4BIl4gXiBe\u002FQ0EBQYHAAECAwABAgMAAQID\u002Fa4B\u002FRsAIQEgAiAHRg0BCwNAIAMgAkEDdGooAgQgAWohASACQQFqIgIgB0cNAAsLIAFBAmoiAyAEKAKYAUsEQCAEKAKUASADEBAiBkUNBSAEIAY2ApQBIAEgBmpBADsAACAEIAM2ApgBIBooAjQhBwsgBCgClAEhHiAHRQ0BIBooAgQhBkEAIQJBACEBA0AgAiAeaiAGIAFBA3QiA2oiBigCACAGKAIEEAsaIBooAgQiBiADaigCBCACaiECIAFBAWoiASAaKAI0SQ0ACwwBCyAHQQFHDQEgGigCBCgCACEeCyAaKAI8IgEEQCAEKAJ0ISwgBCABNgJ0CyAaKAIsBEAgFkEIcSElIARBHGohDyAWQQFxIS0gFkECcUUhLkECIR8DQCAeIChqIQEgGigCACApQRhsaiIgKAIAIQMCQCAtIB9BAkkgGSAaKAIcQQRrTHFxIiIEQCAEIAE2AhQgBCABIANqIgM2AhggBCADLwAAOwFwIANB\u002FwE6AAAgBCgCGEH\u002FAToAASAEQQA2AgggBEEANgIAIAQgATYCEAwBCyAEIAE2AhQgBCABIANqIgY2AhggBCAGLwAAOwFwIAZB\u002FwE6AAAgBCgCGEH\u002FAToAASAEIARBHGo2AmggBCABNgIQIARBADYCDCAEIAMEfyABLQAAQRB0BUGAgPwHCyIDNgIAQQEhBiABQQFqIQkgAS0AASEHAn8gAS0AAEH\u002FAUYEQCAHQZABTwRAIARBATYCDCADQYD+A3IMAgsgBCAJNgIQQQAhBiAHQQl0IANqDAELIAQgCTYCECAHQQh0IANyCyEBIAQgBjYCCCAEQYCAAjYCBCAEIAFBB3Q2AgALICAoAgAhKgJAIBlBAEwNACAgKAIIRQ0AICIgLnIhJ0EAISYDQAJAAkACQAJAAkAgH0EBaw4CAQIACyAiBEBBASAZdCIBQQF2IAFyIREgBCgCfCIFQQJ0Ig0gBCgCeGpBDGohASAEKAJ0IQZBACEIIAQoAoABIgNBBE8EQCAFRQ0FIAVBA2whAiAFQQF0IQxBACARayEJA0AgDEECdCELQQAhAwNAAkAgASIHKAIAIgFFDQACQCABQZCAgAFxDQAgAUHvA3FFDQAgBCgCACEBAkAgBCgCCCIQDQAgAUH\u002FAUYhCiAEKAIQIhAtAAAhAQJAIApFBEAgBCABNgIAIAQgEEEBajYCEAwBCyABQY8BTQRAIAQgATYCACAEIBBBAWo2AhBBByEQDAILQf8BIQEgBEH\u002FATYCAAtBCCEQCyAEIBBBAWsiEDYCCAJAIAEgEHZBAXFFDQACQCAQDQAgAUH\u002FAUYhCiAEKAIQIhAtAAAhAQJAIApFBEAgBCABNgIAIAQgEEEBajYCEAwBCyABQY8BTQRAIAQgATYCACAEIBBBAWo2AhBBByEQDAILQf8BIQEgBEH\u002FATYCAAtBCCEQCyAEIBBBAWsiEDYCCCAGIAkgESABIBB2QQFxIhAbNgIAIAQoAnwhASAHQQRrIgogCigCAEEgcjYCACAHIAcoAgRBCHI2AgQgByAHKAIAIBBBE3RyQRByNgIAICUNACAHQX4gAWtBAnRqIgEgASgCBEGAgAJyNgIEIAEgASgCACAQQR90ckGAgARyNgIAIAFBBGsiASABKAIAQYCACHI2AgALIAcgBygCAEGAgIABciIBNgIACwJAIAFBgIGACHENACABQfgecUUNACAEKAIAIQECQCAEKAIIIhANACABQf8BRiEKIAQoAhAiEC0AACEBAkAgCkUEQCAEIAE2AgAgBCAQQQFqNgIQDAELIAFBjwFNBEAgBCABNgIAIAQgEEEBajYCEEEHIRAMAgtB\u002FwEhASAEQf8BNgIAC0EIIRALIAQgEEEBayIQNgIIIAcCfyABIBB2QQFxRQRAIAcoAgAMAQsCQCAQDQAgAUH\u002FAUYhCiAEKAIQIhAtAAAhAQJAIApFBEAgBCABNgIAIAQgEEEBajYCEAwBCyABQY8BTQRAIAQgATYCACAEIBBBAWo2AhBBByEQDAILQf8BIQEgBEH\u002FATYCAAtBCCEQCyAEIBBBAWsiEDYCCCAGIA1qIAkgESABIBB2QQFxIgEbNgIAIAdBBGsiECAQKAIAQYACcjYCACAHIAcoAgRBwAByNgIEIAcoAgAgAUEWdHJBgAFyC0GAgIAIciIBNgIACwJAIAFBgIiAwABxDQAgAUHA9wFxRQ0AIAQoAgAhAQJAIAQoAggiEA0AIAFB\u002FwFGIQogBCgCECIQLQAAIQECQCAKRQRAIAQgATYCACAEIBBBAWo2AhAMAQsgAUGPAU0EQCAEIAE2AgAgBCAQQQFqNgIQQQchEAwCC0H\u002FASEBIARB\u002FwE2AgALQQghEAsgBCAQQQFrIhA2AgggBwJ\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\u002FASEBIARB\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\u002F\u002F\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\u002F\u002F\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\u002F\u002F\u002F+2e3E2AgALIAhBBGohAyALQQRqIQsgGEEBaiIYIBRHDQALIAhBDGohAyALIBtBAnRqIQsgEUEEaiIRIAQoAoABIgZBfHFJDQALDAELQQQgBkF8cSIDIANBBE0bQQFrIgNBfHFBBGohESAHIANBAXRBeHFqQRRqIQMLIAQgBTYCCCAEIAE2AgQgBCACNgIAIAQgCTYCaCAURQ0EIAYgEU0NBANAQQAhBSARIAQoAoABRwRAA0AgBCADIAsgBSAUbEECdGogDiAFQQAQUSAFQQFqIgUgBCgCgAEgEWtJDQALCyADIAMoAgBB\u002F\u002F\u002F\u002FtntxNgIAIAtBBGohCyADQQRqIQMgF0EBaiIXIBRHDQALDAQLQQQgBkF8cSIDIANBBE0bQQFrIgNBfHFBBGohESAHIANBAXRBeHFqQRRqIQMLIAQgBTYCCCAEIAE2AgQgBCACNgIAIAQgCTYCaCAURQ0CIAYgEU0NAgNAQQAhBSARIAQoAoABRwRAA0AgBCADIAsgBSAUbEECdGogDiAFQQEQUSAFQQFqIgUgBCgCgAEgEWtJDQALCyADIAMoAgBB\u002F\u002F\u002F\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\u002F\u002F\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\u002FRsDQQJt\u002FRwD\u002FQsCACAEQQRqIgQgAUcNAAsgASAGRg0GCwNAIAIgAUECdGoiAyADKAIAQQJtNgIAIAFBAWoiASAGRw0ACwwFCyAGRQ0EIDAqAiBDAAAAP5QhZkEAIQQCQCAGQQRJBEAgAiEBDAELIAIgBkF8cSIEQQJ0aiEBIGb9EyFeQQAhAwNAIAIgA0ECdGoiByBeIAf9AAIA\u002FfoB\u002FeYB\u002FQsCACADQQRqIgMgBEcNAAsgBCAGRg0FCwNAIAEgZiABKAIAspQ4AgAgAUEEaiEBIARBAWoiBCAGRw0ACwwECyA2IDVrIREgLygCFEEBRw0CIBZFDQMgMigCJCIGIAMgEWwiA0ECdGogCEECdGohCSANQXxxIgxBAWsiAUEEcSELIDYgDSA1amtBAnQhGiABQQJ2QQFqQf7\u002F\u002F\u002F8HcSEdIAMgCGpBAnQgBmogAmshCkEAIQggAUEDRyEUA0BBACEBAkAgDEUNACAIIA1sIQMgCSAIIBFsQQJ0aiEGQQAhByAUBEADQCAGIAFBAnRqIAIgASADakECdGr9AAIAIl79GwBBAm39ESBe\u002FRsBQQJt\u002FRwBIF79GwJBAm39HAIgXv0bA0ECbf0cA\u002F0LAgAgBiABQQRyIgRBAnRqIAIgAyAEakECdGr9AAIAIl79GwBBAm39ESBe\u002FRsBQQJt\u002FRwBIF79GwJBAm39HAIgXv0bA0ECbf0cA\u002F0LAgAgAUEIaiEBIAdBAmoiByAdRw0ACwsgCw0AIAYgAUECdGogAiABIANqQQJ0av0AAgAiXv0bAEECbf0RIF79GwFBAm39HAEgXv0bAkECbf0cAiBe\u002FRsDQQJt\u002FRwD\u002FQsCACABQQRqIQELAkAgASANTw0AIAggDWwhAyAJIAggEWxBAnRqIQcCQCANIAFrIhBBBEkEQCABIQQMAQsgCiAIIBpsakEQSQRAIAEhBAwBCyABIBBBfHEiBWohBEEAIQYDQCAHIAEgBmoiIUECdGogAiADICFqQQJ0av0AAgAiXv0bAEECbf0RIF79GwFBAm39HAEgXv0bAkECbf0cAiBe\u002FRsDQQJt\u002FRwD\u002FQsCACAGQQRqIgYgBUcNAAsgBSAQRg0BCyAEQQFqIQEgDSAEa0EBcQRAIAcgBEECdGogAiADIARqQQJ0aigCAEECbTYCACABIQQLIAEgDUYNAANAIAcgBEECdGogAiADIARqQQJ0aigCAEECbTYCACAHIARBAWoiAUECdGogAiABIANqQQJ0aigCAEECbTYCACAEQQJqIgQgDUcNAAsLIAhBAWoiCCAWRw0ACwwDCyAjIBk2AgAgHUECQdbAACAjEAgLIBAoAgBBADYCAAwBCyAWRQ0AIA1FDQAgMigCJCADIBFsQQJ0aiAIQQJ0aiEHIA1BfHEiA0ECdCEGIDAqAiBDAAAAP5QiZv0TIV5BACEQIA1BBEkhCANAAkACQCAIBEAgAiEJIAchAUEAIQQMAQsgBiAHaiEBIAIgBmohCUEAIQQDQCAHIARBAnQiBWogXiACIAVq\u002FQACAP36Af3mAf0LAgAgBEEEaiIEIANHDQALIAkhAiADIgQgDUYNAQsgCSECA0AgASBmIAIoAgCylDgCACABQQRqIQEgAkEEaiECIARBAWoiBCANRw0ACwsgByARQQJ0aiEHIBBBAWoiECAWRw0ACwsgABAJICNB4ABqJAAL1gQBCX8gACgCLEEITwRAIAAoAighBUEIIQoDQCAAKAIMQQV0IQggACgCACEEIAAoAiQhAwJAIAAoAhQiBiAAKAIQIgFNDQAgBCAIaiEHIAFBAWohAiAGIAFrQQFxBEAgByABQQZ0aiIJIAUgASADbEECdGoiAf0AAgD9CwIAIAkgAf0AAhD9CwIQIAIhAQsgAiAGRg0AA0AgByABQQZ0aiICIAUgASADbEECdGoiCf0AAgD9CwIAIAIgCf0AAhD9CwIQIAcgAUEBaiICQQZ0aiIJIAUgAiADbEECdGoiAv0AAhD9CwIQIAkgAv0AAgD9CwIAIAFBAmoiASAGRw0ACwsCQCAAKAIcIgYgACgCGCIBTQ0AIAQgCGtBIGohByAFIAAoAgggA2xBAnRqIQggAUEBaiECIAYgAWtBAXEEQCAHIAFBBnRqIgQgCCABIANsQQJ0aiIB\u002FQACAP0LAgAgBCAB\u002FQACEP0LAhAgAiEBCyACIAZGDQADQCAHIAFBBnRqIgIgCCABIANsQQJ0aiIE\u002FQACAP0LAgAgAiAE\u002FQACEP0LAhAgByABQQFqIgJBBnRqIgQgCCACIANsQQJ0aiIC\u002FQACEP0LAhAgBCAC\u002FQACAP0LAgAgAUECaiIBIAZHDQALCyAAEBxBACEBIAAoAiAEQANAIAUgACgCJCABbEECdGoiAiAAKAIAIAFBBXRqIgP9AAIA\u002FQsCACACIAP9AAIQ\u002FQsCECABQQFqIgEgACgCIEkNAAsLIAVBIGohBSAKQQhqIgogACgCLE0NAAsLIAAoAgAQCSAAEAkL9w0BJX8gACgCLEEITwRAIAAoAiQiCkEFdCEeIApBB2whFiAKQQZsIRcgCkEFbCEYIApBA2whGSAKQQF0IRogACgCKCIBIApBHGxqIR8gASAKQRhsaiEgIAEgCkEUbGohISABIApBBHRqISIgASAKQQxsaiEjIAEgCkEDdCIkaiElIAEgCkECdCIbaiEmQQghHANAIAAgASAAKAIkQQgQNCAAEBwCQCAAKAIgIgtFDQAgHSAebCEIIAAoAgAhBkEAIQQCQAJAIAtB6AJJDQAgBkEMaiIOIAtBAWsiAkEFdCIDaiAOSQ0AIAZBCGoiDyADaiAPSQ0AIAMgBmogBkkNACAGQQRqIhAgA2ogEEkNACACQf\u002F\u002F\u002Fz9LDQAgASAIICZqIgMgC0ECdCIFaiIMSSADIAEgBWoiB0lxDQAgASAIICVqIgIgBWoiDUkgAiAHSXENACABIAUgCCAjaiIJaiIFSSAHIAlLcQ0AIAYgB0kgASAGIAtBBXRqIhFBHGsiEklxDQAgASARQRhrIhNJIAcgEEtxDQAgASARQRRrIhRJIAcgD0txDQAgByAOSyABIBFBEGsiB0lxDQAgAyANSSACIAxJcQ0AIAMgBUkgCSAMSXENACADIBJJIAYgDElxDQAgAyATSSAMIBBLcQ0AIAMgFEkgDCAPS3ENACADIAdJIAwgDktxDQAgAiAFSSAJIA1JcQ0AIAIgEkkgBiANSXENACACIBNJIA0gEEtxDQAgAiAUSSANIA9LcQ0AIAIgB0kgDSAOS3ENACAJIBJJIAUgBktxDQAgCSATSSAFIBBLcQ0AIAkgFEkgBSAPS3ENACAHIAlLIAUgDktxDQAgC0H8\u002F\u002F\u002F\u002FAHEhBEEAIQMDQCABIANBAnRqIAYgA0EFdGoiAv0JAgAgAioCIP0gASACQUBrKgIA\u002FSACIAIqAmD9IAP9CwIAIAEgAyAKakECdGogAv0JAgQgAioCJP0gASACKgJE\u002FSACIAIqAmT9IAP9CwIAIAEgAyAaakECdGogAv0JAgggAioCKP0gASACKgJI\u002FSACIAIqAmj9IAP9CwIAIAEgAyAZakECdGogAv0JAgwgAioCLP0gASACKgJM\u002FSACIAIqAmz9IAP9CwIAIANBBGoiAyAERw0ACyAEIAtGDQELA0AgASAEQQJ0aiAGIARBBXRqIgMqAgA4AgAgASAEIApqQQJ0aiADKgIEOAIAIAEgBCAaakECdGogAyoCCDgCACABIAQgGWpBAnRqIAMqAgw4AgAgBEEBaiIEIAtHDQALCyAAKAIAIQZBACEEAkAgC0HcAEkNACAGQRxqIg8gC0EBayICQQV0IgNqIA9JDQAgBkEYaiIQIANqIBBJDQAgBkEQaiIRIANqIBFJDQAgBkEUaiISIANqIBJJDQAgAkH\u002F\u002F\u002F8\u002FSw0AIAggImoiAyAIICFqIgIgC0ECdCIFaiIMSSACIAMgBWoiB0lxDQAgAyAIICBqIgkgBWoiDUkgByAJS3ENACADIAggH2oiCCAFaiIFSSAHIAhLcQ0AIAMgBiALQQV0aiIOQQxrIhNJIAcgEUtxDQAgAyAOQQhrIhRJIAcgEktxDQAgAyAOQQRrIhVJIAcgEEtxDQAgAyAOSSAHIA9LcQ0AIAIgDUkgCSAMSXENACACIAVJIAggDElxDQAgAiATSSAMIBFLcQ0AIAIgFEkgDCASS3ENACACIBVJIAwgEEtxDQAgAiAOSSAMIA9LcQ0AIAggDUkgBSAJS3ENACAJIBNJIA0gEUtxDQAgCSAUSSANIBJLcQ0AIAkgFUkgDSAQS3ENACAJIA5JIA0gD0txDQAgCCATSSAFIBFLcQ0AIAggFEkgBSASS3ENACAIIBVJIAUgEEtxDQAgCCAOSSAFIA9LcQ0AIAtB\u002FP\u002F\u002F\u002FwBxIQRBACEDA0AgASADIBtqQQJ0aiAGIANBBXRqIgL9CQIQIAIqAjD9IAEgAioCUP0gAiACKgJw\u002FSAD\u002FQsCACABIAMgGGpBAnRqIAL9CQIUIAIqAjT9IAEgAioCVP0gAiACKgJ0\u002FSAD\u002FQsCACABIAMgF2pBAnRqIAL9CQIYIAIqAjj9IAEgAioCWP0gAiACKgJ4\u002FSAD\u002FQsCACABIAMgFmpBAnRqIAL9CQIcIAIqAjz9IAEgAioCXP0gAiACKgJ8\u002FSAD\u002FQsCACADQQRqIgMgBEcNAAsgBCALRg0BCwNAIAEgBCAbakECdGogBiAEQQV0aiIDKgIQOAIAIAEgBCAYakECdGogAyoCFDgCACABIAQgF2pBAnRqIAMqAhg4AgAgASAEIBZqQQJ0aiADKgIcOAIAIARBAWoiBCALRw0ACwsgHUEBaiEdIAEgJEECdGohASAcQQhqIhwgACgCLE0NAAsLIAAoAgAQCSAAEAkLcwECfyAAKAIcIgFBCGoiAyAAKAIgIgJNBEADQCAAIAAoAhggAUECdGogACgCFEEIECsgAyIBQQhqIgMgACgCICICTQ0ACwsgASACSQRAIAAgACgCGCABQQJ0aiAAKAIUIAIgAWsQKwsgACgCABAJIAAQCQtEACAAKAIcIgEgACgCIEkEQANAIAAgACgCGCAAKAIUIAFsQQJ0ahBWIAFBAWoiASAAKAIgSQ0ACwsgACgCABAJIAAQCQuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGEAsaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEEAsaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACC54FAgZ+BH8gASABKAIAQQdqQXhxIgFBEGo2AgAgACELIAEpAwAhAyABKQMIIQcjAEEgayIIJAAgB0L\u002F\u002F\u002F\u002F\u002F\u002F\u002F8\u002FgyEEAn4gB0IwiEL\u002F\u002FwGDIgWnIgpBgfgAa0H9D00EQCAEQgSGIANCPIiEIQIgCkGA+ABrrSEFAkAgA0L\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002Fw+DIgNCgYCAgICAgIAIWgRAIAJCAXwhAgwBCyADQoCAgICAgICACFINACACQgGDIAJ8IQILQgAgAiACQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8HViIAGyECIACtIAV8DAELAkAgAyAEhFANACAFQv\u002F\u002FAVINACAEQgSGIANCPIiEQoCAgICAgIAEhCECQv8PDAELQv8PIApB\u002FocBSw0AGkIAQYD4AEGB+AAgBVAiARsiACAKayIJQfAASg0AGiADIQIgBCAEQoCAgICAgMAAhCABGyIGIQQCQEGAASAJayIBQcAAcQRAIAMgAUFAaq2GIQRCACECDAELIAFFDQAgBCABrSIFhiACQcAAIAFrrYiEIQQgAiAFhiECCyAIIAI3AxAgCCAENwMYAkAgCUHAAHEEQCAGIAlBQGqtiCEDQgAhBgwBCyAJRQ0AIAZBwAAgCWuthiADIAmtIgKIhCEDIAYgAoghBgsgCCADNwMAIAggBjcDCCAIKQMIQgSGIAgpAwAiAkI8iIQhAwJAIAAgCkcgCCkDECAIKQMYhEIAUnGtIAJC\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8Pg4QiAkKBgICAgICAgAhaBEAgA0IBfCEDDAELIAJCgICAgICAgIAIUg0AIANCAYMgA3whAwsgA0KAgICAgICACIUgAyADQv\u002F\u002F\u002F\u002F\u002F\u002F\u002F\u002F8HViIAGyECIACtCyEDIAhBIGokACALIAdCgICAgICAgICAf4MgA0I0hoQgAoS\u002FOQMAC4MYAxN\u002FAXwDfiMAQbAEayIMJAAgDEEANgIsAkAgAb0iGkIAUwRAQQEhEUG6CCETIAGaIgG9IRoMAQsgBEGAEHEEQEEBIRFBvQghEwwBC0HACEG7CCAEQQFxIhEbIRMgEUUhFQsCQCAaQoCAgICAgID4\u002FwCDQoCAgICAgID4\u002FwBRBEAgAEEgIAIgEUEDaiIDIARB\u002F\u002F97cRAUIAAgEyAREBEgAEG3CUH2CiAFQSBxIgUbQaAKQfoKIAUbIAEgAWIbQQMQESAAQSAgAiADIARBgMAAcxAUIAMgAiACIANIGyEKDAELIAxBEGohEgJAAn8CQCABIAxBLGoQXyIBIAGgIgFEAAAAAAAAAABiBEAgDCAMKAIsIgZBAWs2AiwgBUEgciIOQeEARw0BDAMLIAVBIHIiDkHhAEYNAiAMKAIsIQlBBiADIANBAEgbDAELIAwgBkEdayIJNgIsIAFEAAAAAAAAsEGiIQFBBiADIANBAEgbCyELIAxBMGpBoAJBACAJQQBOG2oiDSEHA0AgBwJ\u002FIAFEAAAAAAAA8EFjIAFEAAAAAAAAAABmcQRAIAGrDAELQQALIgM2AgAgB0EEaiEHIAEgA7ihRAAAAABlzc1BoiIBRAAAAAAAAAAAYg0ACwJAIAlBAEwEQCAJIQMgByEGIA0hCAwBCyANIQggCSEDA0BBHSADIANBHU8bIQMCQCAHQQRrIgYgCEkNACADrSEbQgAhGgNAIAYgGkL\u002F\u002F\u002F\u002F\u002FD4MgBjUCACAbhnwiHEKAlOvcA4AiGkKA7JSjDH4gHHw+AgAgBkEEayIGIAhPDQALIBqnIgZFDQAgCEEEayIIIAY2AgALA0AgCCAHIgZJBEAgBkEEayIHKAIARQ0BCwsgDCAMKAIsIANrIgM2AiwgBiEHIANBAEoNAAsLIANBAEgEQCALQRlqQQluQQFqIQ8gDkHmAEYhEANAQQlBACADayIDIANBCU8bIQoCQCAGIAhNBEAgCCgCAEVBAnQhBwwBC0GAlOvcAyAKdiEUQX8gCnRBf3MhFkEAIQMgCCEHA0AgByADIAcoAgAiFyAKdmo2AgAgFiAXcSAUbCEDIAdBBGoiByAGSQ0ACyAIKAIARUECdCEHIANFDQAgBiADNgIAIAZBBGohBgsgDCAMKAIsIApqIgM2AiwgDSAHIAhqIgggEBsiByAPQQJ0aiAGIAYgB2tBAnUgD0obIQYgA0EASA0ACwtBACEDAkAgBiAITQ0AIA0gCGtBAnVBCWwhA0EKIQcgCCgCACIKQQpJDQADQCADQQFqIQMgCiAHQQpsIgdPDQALCyALIANBACAOQeYARxtrIA5B5wBGIAtBAEdxayIHIAYgDWtBAnVBCWxBCWtIBEAgDEEwakGEYEGkYiAJQQBIG2ogB0GAyABqIgpBCW0iD0ECdGohCUEKIQcgD0F3bCAKaiIKQQdMBEADQCAHQQpsIQcgCkEBaiIKQQhHDQALCwJAIAkoAgAiECAQIAduIg8gB2wiCkYgCUEEaiIUIAZGcQ0AIBAgCmshEAJAIA9BAXFFBEBEAAAAAAAAQEMhASAHQYCU69wDRw0BIAggCU8NASAJQQRrLQAAQQFxRQ0BC0QBAAAAAABAQyEBC0QAAAAAAADgP0QAAAAAAADwP0QAAAAAAAD4PyAGIBRGG0QAAAAAAAD4PyAQIAdBAXYiFEYbIBAgFEkbIRkCQCAVDQAgEy0AAEEtRw0AIBmaIRkgAZohAQsgCSAKNgIAIAEgGaAgAWENACAJIAcgCmoiAzYCACADQYCU69wDTwRAA0AgCUEANgIAIAggCUEEayIJSwRAIAhBBGsiCEEANgIACyAJIAkoAgBBAWoiAzYCACADQf+T69wDSw0ACwsgDSAIa0ECdUEJbCEDQQohByAIKAIAIgpBCkkNAANAIANBAWohAyAKIAdBCmwiB08NAAsLIAlBBGoiByAGIAYgB0sbIQYLA0AgBiIHIAhNIgpFBEAgBkEEayIGKAIARQ0BCwsCQCAOQecARwRAIARBCHEhCQwBCyADQX9zQX8gC0EBIAsbIgYgA0ogA0F7SnEiCRsgBmohC0F\u002FQX4gCRsgBWohBSAEQQhxIgkNAEF3IQYCQCAKDQAgB0EEaygCACIORQ0AQQohCkEAIQYgDkEKcA0AA0AgBiIJQQFqIQYgDiAKQQpsIgpwRQ0ACyAJQX9zIQYLIAcgDWtBAnVBCWwhCiAFQV9xQcYARgRAQQAhCSALIAYgCmpBCWsiBkEAIAZBAEobIgYgBiALShshCwwBC0EAIQkgCyADIApqIAZqQQlrIgZBACAGQQBKGyIGIAYgC0obIQsLQX8hCiALQf3\u002F\u002F\u002F8HQf7\u002F\u002F\u002F8HIAkgC3IiEBtKDQEgCyAQQQBHakEBaiEOAkAgBUFfcSIVQcYARgRAIAMgDkH\u002F\u002F\u002F\u002F\u002FB3NKDQMgA0EAIANBAEobIQYMAQsgEiADIANBH3UiBnMgBmutIBIQIyIGa0EBTARAA0AgBkEBayIGQTA6AAAgEiAGa0ECSA0ACwsgBkECayIPIAU6AAAgBkEBa0EtQSsgA0EASBs6AAAgEiAPayIGIA5B\u002F\u002F\u002F\u002F\u002FwdzSg0CCyAGIA5qIgMgEUH\u002F\u002F\u002F\u002F\u002FB3NKDQEgAEEgIAIgAyARaiIDIAQQFCAAIBMgERARIABBMCACIAMgBEGAgARzEBQCQAJAAkAgFUHGAEYEQCAMQRBqQQlyIQUgDSAIIAggDUsbIgkhCANAIAg1AgAgBRAjIQYCQCAIIAlHBEAgBiAMQRBqTQ0BA0AgBkEBayIGQTA6AAAgBiAMQRBqSw0ACwwBCyAFIAZHDQAgBkEBayIGQTA6AAALIAAgBiAFIAZrEBEgCEEEaiIIIA1NDQALIBAEQCAAQYIMQQEQEQsgByAITQ0BIAtBAEwNAQNAIAg1AgAgBRAjIgYgDEEQaksEQANAIAZBAWsiBkEwOgAAIAYgDEEQaksNAAsLIAAgBkEJIAsgC0EJThsQESALQQlrIQYgCEEEaiIIIAdPDQMgC0EJSiEYIAYhCyAYDQALDAILAkAgC0EASA0AIAcgCEEEaiAHIAhLGyENIAxBEGpBCXIhBSAIIQcDQCAFIAc1AgAgBRAjIgZGBEAgBkEBayIGQTA6AAALAkAgByAIRwRAIAYgDEEQak0NAQNAIAZBAWsiBkEwOgAAIAYgDEEQaksNAAsMAQsgACAGQQEQESAGQQFqIQYgCSALckUNACAAQYIMQQEQEQsgACAGIAUgBmsiBiALIAYgC0gbEBEgCyAGayELIAdBBGoiByANTw0BIAtBAE4NAAsLIABBMCALQRJqQRJBABAUIAAgDyASIA9rEBEMAgsgCyEGCyAAQTAgBkEJakEJQQAQFAsgAEEgIAIgAyAEQYDAAHMQFCADIAIgAiADSBshCgwBCyATIAVBGnRBH3VBCXFqIQgCQCADQQtLDQBBDCADayEGRAAAAAAAADBAIRkDQCAZRAAAAAAAADBAoiEZIAZBAWsiBg0ACyAILQAAQS1GBEAgGSABmiAZoaCaIQEMAQsgASAZoCAZoSEBCyASIAwoAiwiByAHQR91IgZzIAZrrSASECMiBkYEQCAGQQFrIgZBMDoAAAsgEUECciELIAVBIHEhDSAGQQJrIgkgBUEPajoAACAGQQFrQS1BKyAHQQBIGzoAACAEQQhxIQYgDEEQaiEHA0AgByIFAn8gAZlEAAAAAAAA4EFjBEAgAaoMAQtBgICAgHgLIgdB4MQBai0AACANcjoAACABIAe3oUQAAAAAAAAwQKIhAQJAIAVBAWoiByAMQRBqa0EBRw0AAkAgBg0AIANBAEoNACABRAAAAAAAAAAAYQ0BCyAFQS46AAEgBUECaiEHCyABRAAAAAAAAAAAYg0AC0F\u002FIQpB\u002Ff\u002F\u002F\u002FwcgCyASIAlrIgZqIg1rIANIDQAgAEEgIAIgDSADQQJqIAcgDEEQaiIHayIFIAVBAmsgA0gbIAUgAxsiCmoiAyAEEBQgACAIIAsQESAAQTAgAiADIARBgIAEcxAUIAAgByAFEBEgAEEwIAogBWtBAEEAEBQgACAJIAYQESAAQSAgAiADIARBgMAAcxAUIAMgAiACIANIGyEKCyAMQbAEaiQAIAoLBABCAAsEAEEAC58DAQl\u002FQeYKIQACQANAIAAtAAAiAUUNASABQT1GDQEgAEEBaiIAQQNxDQALAkACQEGAgoQIIAAoAgAiAmsgAnJBgIGChHhxQYCBgoR4Rw0AA0BBgIKECCACQb369OkDcyIBayABckGAgYKEeHFBgIGChHhHDQEgACgCBCECIABBBGoiASEAIAJBgIKECCACa3JBgIGChHhxQYCBgoR4Rg0ACwwBCyAAIQELA0AgASIALQAAIgJFDQEgAEEBaiEBIAJBPUcNAAsLIAAiAUHmCkYEQEEADwsCQCABQeYKayIAQeYKai0AAA0AQbDOASgCACIERQ0AIAQoAgAiBUUNAANAAkACfyAFIQJB5gohBkEAIAAiAUUNABpB5gotAAAiAwR\u002FAkADQCADIAItAAAiB0cNASAHRQ0BIAFBAWsiAUUNASACQQFqIQIgBi0AASEDIAZBAWohBiADDQALQQAhAwsgAwVBAAsgAi0AAGsLRQRAIAAgBWoiAS0AAEE9Rg0BCyAEKAIEIQUgBEEEaiEEIAUNAQwCCwsgAUEBaiEICyAIC84CAQh\u002FIwBBIGsiAyQAIAMgACgCHCIENgIQIAAoAhQhBSADIAI2AhwgAyABNgIYIAMgBSAEayIBNgIUIAEgAmohBUECIQYgA0EQaiEBAn8DQAJAAkACQCAAKAI8IAEgBiADQQxqEAQiBAR\u002FQZTGASAENgIAQX8FQQALRQRAIAUgAygCDCIHRg0BIAdBAE4NAgwDCyAFQX9HDQILIAAgACgCLCIBNgIcIAAgATYCFCAAIAEgACgCMGo2AhAgAgwDCyABIAcgASgCBCIISyIJQQN0aiIEIAcgCEEAIAkbayIIIAQoAgBqNgIAIAFBDEEEIAkbaiIBIAEoAgAgCGs2AgAgBSAHayEFIAYgCWshBiAEIQEMAQsLIABBADYCHCAAQgA3AxAgACAAKAIAQSByNgIAQQAgBkECRg0AGiACIAEoAgRrCyEKIANBIGokACAKCwYAIAAQAAsGACAAEAYLzx0DDX8EewN+IwBB0MAAayIJJAAgCUEANgIQQQIhBAJAAkAgACgCACIDQY2UnNQARg0AIANB\u002F5\u002F9jwVHBEACQCADQYCAgOAARw0AIAAoAgRB6qCBgQJHDQAgACgCCEGNlJzUAEYNAgtBzQgQAEEBIQAMAgtBACEECwJ\u002FQQBBAUHgABAMIgNFDQAaIANBATYCTAJAAkACQAJAIAQOAwADAQMLIANBwwA2AlggA0HEADYCVCADQcUANgJQIANBxgA2AhAgA0HHADYCBCADQcgANgIcIANByQA2AhggA0HKADYCFCADQcsANgIAIANBzAA2AlwgA0HNADYCLCADQc4ANgIoIANBzwA2AiQgA0HQADYCICADQdEANgIMIANB0gA2AgggAxBGIgQ2AjAgBA0BDAILIANB0wA2AlggA0HUADYCVCADQdUANgJQIANB1gA2AhAgA0HXADYCBCADQdgANgJcIANB2QA2AiwgA0HaADYCKCADQdsANgIkIANB3AA2AiAgA0HdADYCHCADQd4ANgIYIANB3wA2AhQgA0HgADYCDCADQeEANgIIIANB4gA2AgAgAwJ\u002FQQFBiAEQDCIEBEAgBBBGIgU2AgACQCAFRQ0AIAT9DAAAAAAAAAAAAAAAAAAAAAD9CwJsIARBADoAfCAEEC4iBTYCBCAFRQ0AIAQQLiIFNgIIIAVFDQAgBAwCCyAEEGkLQQALIgQ2AjAgBEUNAQsgA0EBNgJIIANBATYCQCADQQA2AjwgA0IANwI0IANBATYCRCADDAELIAMQCUEACyIEBEAgBEEANgI8IARB4wA2AkgLIAQEQCAEQQA2AjggBEHkADYCRAsgBARAIARBADYCNCAEQeUANgJACyAJQRRqIgUiAwRAIANBAEG4wAAQDiIDQQA2ArhAIANCfzcCiEALIAkgATYCDCAJIAA2AgggCSAANgIEQQEhAEEAIQMCQCAJQQRqIgpFDQBBAUHIABAMIgEEfwJ\u002FIAFBgIDAADYCQCABQYCAwAAQDSIINgIgIAhFBEAgARAJQQAMAQsgASAINgIkIAFBAjYCHCABQQM2AhggAUEENgIUIAFBBTYCECABQQY2AiwgAUEINgIoIAEgASgCREECcjYCRCABCwVBAAsiAUUNACABBEAgAUEANgIEIAEgCjYCAAsgCjUCCCEUIAEEQCABIBQ3AwgLAkAgAUUNACABLQBEQQJxRQ0AIAFBPzYCEAsgAQRAIAFBwQA2AhgLIAEEQCABQcIANgIcCyABIQMLAn8CQCAERQ0AIAVFDQAgBCgCTEUEQCAEQTRqQQFBj8kAQQAQCEEADAILIAQoAjAgBSAEKAIYEQMAQQEhBwsgBwtFBEBBgQkQACADECcgBBAoDAELAn8gCUEQaiEFQQAhAQJAIANFDQAgBEUNACAEKAJMRQRAIARBNGpBAUHgyQBBABAIQQAMAgsgAyAEKAIwIAUgBEE0aiAEKAIAEQEAIQELIAELRQRAQZ0JEAAgAxAnIAQQKCAJKAIQEBgMAQsgCSgCECEAIAIEQEEIIAAoAhAiAUECdBAbIQUCQCABRQ0AQQAhACABQQNLBEAgAUF8cSEA\u002FQwAAAAAAQAAAAIAAAADAAAAIRADQCAFIAZBAnRqIBD9CwIAIBD9DAQAAAAEAAAABAAAAAQAAAD9rgEhECAGQQRqIgYgAEcNAAsgACABRg0BCwNAIAUgAEECdGogADYCACAAQQFqIgAgAUcNAAsLAn9BACAERQ0AGiAEKAJMRQRAIARBNGpBAUG1yABBABAIQQAMAQsgBCgCMCABIAUgBEE0aiAEKAIsEQEAC0UEQEHcCBAAIAMQJyAEECggCSgCEBAYIAUQCUEBIQAMAgsgBRAJIAkoAhAhAAtBACEBAkAgBEUNACADRQ0AIAQoAkxFDQAgBCgCMCADIAAgBEE0aiAEKAIEEQEAIQELAkAgAQRAQQAhAAJAIARFDQAgA0UNACAEKAJMRQ0AIAQoAjAgAyAEQTRqIAQoAhARAAAhAAsgAA0BC0GkChAAIAQQKCADECcgCSgCEBAYQQEhAAwBCyADECcgBBAoQQggCSgCECIKKAIMIAooAghsIgUgCigCECIHbCINEBshAwJAIAINACAHRQ0AIAooAhghDgNAIA4gC0E0bGoiBigCGCIAQQhHBEACQCAAQQdNBEAgBigCDCAGKAIIbCEBIAYoAiwhAiAGKAIgBEAgAUUNAkEBIABBAWt0rSEUQQAhACABQQRPBEAgAUF8cSEAIBT9EiEQQQAhBANAIAIgBEECdGoiCCAI\u002FQACACIS\u002FccBQQf9ywEiEf0dACAQ\u002FR0AIhV\u002F\u002FRIgEf0dASAQ\u002FR0BIhZ\u002F\u002FR4BIBIgEP0NCAkKCwwNDg8AAQIDAAECA\u002F3HAUEH\u002FcsBIhL9HQAgFX\u002F9EiAS\u002FR0BIBZ\u002F\u002FR4B\u002FQ0AAQIDCAkKCxAREhMYGRob\u002FQsCACAEQQRqIgQgAEcNAAsgACABRg0DCwNAIAIgAEECdGoiBCAENAIAQgeGIBR\u002FPgIAIABBAWoiACABRw0ACwwCCyABRQ0BQX8gAHRBf3OtIRRBACEAIAFBBE8EQCABQXxxIQAgFP0SIRBBACEEA0AgAiAEQQJ0aiIIIAj9AAIAIhL9yQH9DP8AAAAAAAAA\u002FwAAAAAAAAD91QEiEf0dACAQ\u002FR0AIhWA\u002FRIgEf0dASAQ\u002FR0BIhaA\u002FR4BIBIgEP0NCAkKCwwNDg8AAQIDAAECA\u002F3JAf0M\u002FwAAAAAAAAD\u002FAAAAAAAAAP3VASIS\u002FR0AIBWA\u002FRIgEv0dASAWgP0eAf0NAAECAwgJCgsQERITGBkaG\u002F0LAgAgBEEEaiIEIABHDQALIAAgAUYNAgsDQCACIABBAnRqIgQgBDUCAEL\u002FAX4gFIA+AgAgAEEBaiIAIAFHDQALDAELIABBCGshBCAGKAIMIAYoAghsIQIgBigCLCEIIAYoAiAEQCACRQ0BQQAhACACQQRPBEAgAkF8cSEAQQAhAQNAIAggAUECdGoiDCAM\u002FQACACAE\u002FawB\u002FQsCACABQQRqIgEgAEcNAAsgACACRg0CCwNAIAggAEECdGoiASABKAIAIAR1NgIAIABBAWoiACACRw0ACwwBCyACRQ0AQQAhACACQQRPBEAgAkF8cSEAQQAhAQNAIAggAUECdGoiDCAM\u002FQACACAE\u002Fa0B\u002FQsCACABQQRqIgEgAEcNAAsgACACRg0BCwNAIAggAEECdGoiASABKAIAIAR2NgIAIABBAWoiACACRw0ACwsgBkEINgIYCyALQQFqIgsgB0cNAAsLAkACQAJAAkAgB0EBaw4EAAMBAgMLIAVFDQIgCigCGCgCLCECQQAhBEEAIQECQCAFQQxJDQAgAiADIAVqSSACIAVBAnRqIANLcQ0AIAVBfHEhAUEAIQADQCAAIANqIAIgAEECdGr9AAIAIBD9DQAECAwAAAAAAAAAAAAAAAD9WgAAACAAQQRqIgAgAUcNAAsgASAFRg0DCyABIQAgBUEDcSIGBEADQCAAIANqIAIgAEECdGooAgA6AAAgAEEBaiEAIARBAWoiBCAGRw0ACwsgASAFa0F8Sw0CA0AgACADaiACIABBAnRqKAIAOgAAIAMgAEEBaiIBaiACIAFBAnRqKAIAOgAAIAMgAEECaiIBaiACIAFBAnRqKAIAOgAAIAMgAEEDaiIBaiACIAFBAnRqKAIAOgAAIABBBGoiACAFRw0ACwwCCyAFRQ0BIAooAhgiACgClAEhASAAKAJgIQIgACgCLCEEQQAhACAFQQFHBEAgBUEBcSEPIAVBfnEhBwNAIAMgAEEDbGoiBSAEIABBAnQiBmooAgA6AAAgBSACIAZqKAIAOgABIAUgASAGaigCADoAAiADIABBAXIiBkEDbGoiBSAEIAZBAnQiBmooAgA6AAAgBSACIAZqKAIAOgABIAUgASAGaigCADoAAiAAQQJqIgAgB0cNAAsgD0UNAgsgAyAAQQNsaiIFIAQgAEECdCIAaigCADoAACAFIAAgAmooAgA6AAEgBSAAIAFqKAIAOgACDAELIAVFDQAgCigCGCIEKALIASEAIAQoApQBIQEgBCgCYCECIAQoAiwhCEEAIQQCQCAFQdQASQ0AIAMgBUEBayIHQQJ0IgZqIANJDQAgA0EBaiILIAZqIAtJDQAgA0ECaiILIAZqIAtJDQAgBiADQQNqIgtqIAtJDQAgB0H\u002F\u002F\u002F\u002F\u002FA0sNACADIAggBUECdCIGakkgCCADIAZqIgdJcQ0AIAIgB0kgAyACIAZqSXENACABIAdJIAMgASAGaklxDQAgACAHSSADIAAgBmpJcQ0AIAVB\u002FP\u002F\u002F\u002FwdxIQT9DAAAAAABAAAAAgAAAAMAAAAhEkEAIQYDQCADIBJBAv2rASIQ\u002FRsAaiAIIAZBAnQiB2r9AAIAIhH9GwA6AAAgAyAQ\u002FRsBaiAR\u002FRsBOgAAIAMgEP0bAmogEf0bAjoAACADIBD9GwNqIBH9GwM6AAAgAyAQ\u002FQwBAAAAAQAAAAEAAAABAAAA\u002FVAiEf0bAGogAiAHav0AAgAiE\u002F0bADoAACADIBH9GwFqIBP9GwE6AAAgAyAR\u002FRsCaiAT\u002FRsCOgAAIAMgEf0bA2ogE\u002F0bAzoAACADIBD9DAIAAAACAAAAAgAAAAIAAAD9UCIR\u002FRsAaiABIAdq\u002FQACACIT\u002FRsAOgAAIAMgEf0bAWogE\u002F0bAToAACADIBH9GwJqIBP9GwI6AAAgAyAR\u002FRsDaiAT\u002FRsDOgAAIAMgEP0MAwAAAAMAAAADAAAAAwAAAP1QIhD9GwBqIAAgB2r9AAIAIhH9GwA6AAAgAyAQ\u002FRsBaiAR\u002FRsBOgAAIAMgEP0bAmogEf0bAjoAACADIBD9GwNqIBH9GwM6AAAgEv0MBAAAAAQAAAAEAAAABAAAAP2uASESIAZBBGoiBiAERw0ACyAEIAVGDQELA0AgAyAEQQJ0IgZqIgcgBiAIaigCADoAACAHIAIgBmooAgA6AAEgByABIAZqKAIAOgACIAcgACAGaigCADoAAyAEQQFqIgQgBUcNAAsLIAoQGCADIA0QByADEAlBACEACyAJQdDAAGokACAACwgAQQggABAbC6sCAgJ+An9CfyEDIAAtAERBCHFFBEAgACAAKAIgIgY2AiQCQAJAAkAgACAAKAIwIgUEfwNAIAYgBSAAKAIAIAAoAhQRAAAiBUF\u002FRg0CIAAgACgCJCAFaiIGNgIkIAAgACgCMCAFayIFNgIwIAUNAAsgACgCIAUgBgs2AiQgAUIAVQ0BQgAhAwwCCyAAIAAoAkRBCHI2AkQgAkEEQZH1AEEAEAggAEEANgIwIAAgACgCREEIcjYCREJ\u002FDwtCACEDA0AgASAAKAIAIAAoAhgRCwAiBEJ\u002FUQRAIAJBBEGC9QBBABAIIAAgACgCREEIcjYCRCAAIAApAzggA3w3AzhCfyADIANQGw8LIAMgBHwhAyABIAR9IgFCAFUNAAsLIAAgACkDOCADfDcDOAsgAwsjAQF\u002FIAEgASgCACABKAIIIgEgAKciAiABIAJJG2o2AgRBAQs8AgJ\u002FAX4gASgCACABKAIIaiIDIAEoAgQiAkYEQEJ\u002FDwsgASACIACnajYCBCADIAJrrCIEIAAgACAEVRsLmAMCAn4CfyAAKAIwIgUgAaciBk8EQCAAIAUgBms2AjAgACAAKAIkIAZqNgIkIAAgACkDOCABfDcDOCABDwsgAC0AREEEcQRAIABBADYCMCAAIAAoAiQgBWo2AiQgACAFrSIBIAApAzh8NwM4IAFCfyAFGw8LAkAgBUUEQAwBCyAAQQA2AjAgACAAKAIgNgIkIAEgBa0iA30hAQsgAUIAVQRAA0AgACkDCCAAKQM4IAEgA3x8VARAIAJBBEGr9QBBABAIIABBADYCMCAAIAAoAiA2AiQgACAAKQM4IAN8IgM3AzggACkDCCIBIAN9IQQgASAAKAIAIAAoAhwRCQAhBSAAKAJEIQIgACAFBH8gACABNwM4IAJBe3EFIAILQQRyNgJEQn8gBCABIANRGw8LIAEgACgCACAAKAIYEQsAIgRCf1EEQCACQQRBq\u002FUAQQAQCCAAIAAoAkRBBHI2AkQgACAAKQM4IAN8NwM4Qn8gAyADUBsPCyADIAR8IQMgASAEfSIBQgBVDQALCyAAIAApAzggA3w3AzggAwubAQEFf0EBIAIoAggiByAHQQFNGyEEIAIoAgQiAyACKAIAayEGA0AgBCIFQQF0IQQgBSAGayABSQ0ACyAFIAdHBEAgBRANIgNFBEBBfw8LIAIoAgAiBARAIAMgBCAGEAsaIAIoAgAQCQsgAiAFNgIIIAIgAzYCACACIAMgBmoiAzYCBAsgAyAAIAEQCxogAiACKAIEIAFqNgIEIAELRgECfyACKAIAIAIoAghqIgQgAigCBCIDRgRAQX8PCyAAIAMgBCADayIAIAEgACABSRsiABALGiACIAIoAgQgAGo2AgQgAAuqAgEEfyMAQRBrIgQkAAJAIAAoAnQNACACQQFNBEAgA0EBQfzBAEEAEAgMAQsgASAEQQxqQQIQCiAEKAIMIgZB\u002F\u002F8DcSIHRQRAIANBAUGdwgBBABAIDAELIAIgB0EGbEECakkEQCADQQFB\u002FMEAQQAQCAwBCyAGQQZsEA0iA0UNACAAQQgQDSICNgJ0IAJFBEAgAxAJDAELIAIgAzYCACACIAQvAQwiAjsBBCACRQRAQQEhBQwBC0EAIQIDQCABQQJqIARBDGoiBUECEAogAyACQQZsaiIGIAQoAgw7AQAgAUEEaiAFQQIQCiAGIAQoAgw7AQIgAUEGaiIBIAVBAhAKIAYgBCgCDDsBBEEBIQUgAkEBaiICIAAoAnQvAQRJDQALCyAEQRBqJAAgBQvwAQEFfyMAQRBrIgQkAAJ\u002FIAAoAngiBUUEQCADQQFBzsEAQQAQCEEADAELIAUoAgwEQCADQQFBttUAQQAQCEEADAELIAIgBS0AEiIFQQJ0IgZJBEAgA0EBQa3BAEEAEAhBAAwBC0EAIAYQDSICRQ0AGiAFBEBBACEDA0AgASAEQQxqIgdBAhAKIAIgA0ECdGoiBiAEKAIMOwEAIAFBAmogB0EBEAogBiAEKAIMOgACIAFBA2ogB0EBEAogBiAEKAIMOgADIAFBBGohASADQQFqIgMgBUcNAAsLIAAoAnggAjYCDEEBCyEIIARBEGokACAIC\u002FADAQl\u002FIwBBEGsiBSQAAkAgAkEDSQ0AIAAoAngNACABIAVBDGpBAhAKIAUvAQwiCUGBCGtB\u002F3dNBEAgBSAJNgIAIANBAUG0GiAFEAgMAQsgAUECaiAFQQxqQQEQCiAFLwEMIghFBEAgA0EBQdQXQQAQCAwBCyAIQQNqIAJLDQAgCCAJbEECdBANIgdFDQAgCBANIgpFBEAgBxAJDAELIAgQDSILRQRAIAcQCSAKEAkMAQtBFBANIgZFBEAgBxAJIAoQCSALEAkMAQsgAUEDaiEDIAYgCjYCCCAGIAs2AgQgBiAJOwEQIAYgBzYCACAFKAIMIQwgBkEANgIMIAYgDDoAEiAAIAY2AngDQCADIAVBDGpBARAKIAQgCmogBS0ADEH\u002FAHFBAWo6AAAgBCALaiAFKAIMQYABcUEHdjoAACADQQFqIQMgBEEBaiIEIAhHDQALIAlFBEBBASEEDAELQQAhBgNAQQAhBEEAIQADQCACQQQgBCAKai0AAEEHakEDdiIEIARBBE8bIgQgAyABa2pIBEBBACEEDAMLIAMgBUEMaiAEEAogByAFKAIMNgIAIAdBBGohByADIARqIQMgAEEBaiIAQf\u002F\u002FA3EiBCAISQ0AC0EBIQQgBkEBaiIGQf\u002F\u002FA3EgCUkNAAsLIAVBEGokACAEC5gBAQJ\u002FIwBBEGsiBSQAIAAoAhgiBEH\u002FAUcEQCAFIAQ2AgAgA0ECQeQTIAUQCAsCQAJAIAIgACgCFEYEQCACDQFBASEEDAILQQAhBCADQQFBy+wAQQAQCAwBC0EAIQIDQEEBIQQgASAAKAJIIAJBDGxqQQhqQQEQCiABQQFqIQEgAkEBaiICIAAoAhRJDQALCyAFQRBqJAAgBAuOBgEGfyMAQdAAayIEJAACQCACQQJNBEAgA0EBQavsAEEAEAgMAQsgAC0AfARAIANBBEHJ0gBBABAIQQEhBgwBC0EBIQYgASAAQShqQQEQCiABQQFqIABBNGpBARAKIAFBAmogAEEsakEBEAogAUEDaiEFAkACQAJAAkACQCAAKAIoIgdBAWsOAgABAgsgAkEGTQRAIAQgAjYCECADQQFB0PEAIARBEGoQCEEAIQYMBQsCQCACQQdGDQAgACgCMEEORg0AIAQgAjYCMCADQQJB0PEAIARBMGoQCAsgBSAAQTBqQQQQCiAAKAIwQQ5HDQNBJBANIgVFBEBBACEGIANBAUGzPEEAEAgMBQsgBUEONgIAIARBADYCQCAEQQA2AjggBEEANgJIIARBADYCPCAEQQA2AkQgBEEANgJMQbDqkAIhBiAEQbDqkAI2AjQgBUGAjJWiBDYCBAJ\u002FIAJBB0cEQCACQSNGBEAgAUEHaiAEQcwAakEEEAogAUELaiAEQcgAakEEEAogAUEPaiAEQcQAakEEEAogAUETaiAEQUBrQQQQCiABQRdqIARBPGpBBBAKIAFBG2ogBEE4akEEEAogAUEfaiAEQTRqQQQQCiAFQQA2AgQgBCgCNCEGIAQoAjghAiAEKAJAIQMgBCgCPCEHIAQoAkQhCCAEKAJMIQkgBCgCSAwCCyAEIAI2AiAgA0ECQfTxACAEQSBqEAgLQQAhAkEAIQNBACEHQQALIQEgBSAHNgIYIAUgCDYCECAFIAk2AgggBSAGNgIgIAUgAjYCHCAFIAM2AhQgBSABNgIMIABBADYCcCAAIAU2AmwMAwsgACACQQNrIgE2AnAgAEEBIAEQDCIDNgJsIANFDQEgAkEDTA0CQQAhAgNAIAUgBEHMAGpBARAKIAAoAmwgAmogBCgCTDoAACAFQQFqIQUgAkEBaiICIAFHDQALDAILIAdBA0kNAiAEIAc2AgAgA0EEQev3ACAEEAgMAgtBACEGIABBADYCcAwBC0EBIQYgAEEBOgB8CyAEQdAAaiQAIAYLtAMBA38jAEEgayIEJAACQCAAKAJIBEAgA0ECQY01QQAQCEEBIQIMAQsgAkEORwRAQQAhAiADQQFBiuwAQQAQCAwBCyABIABBEGpBBBAKIAFBBGogAEEMakEEEAogAUEIaiAAQRRqQQIQCiAAKAIMIQUCQCAEAn8gACgCECIGRQRAIAAoAhQMAQsgACgCFCICIAVFDQAaIAINAUEACzYCCCAEIAY2AgQgBCAFNgIAIANBAUHu6gAgBBAIQQAhAgwBCyACQYGAAWtB\u002F\u002F9+TQRAQQAhAiADQQFBmOoAQQAQCAwBCyAAIAJBDBAMIgI2AkggAkUEQEEAIQIgA0EBQb3qAEEAEAgMAQtBASECIAFBCmogAEEYakEBEAogAUELaiAAQRxqQQEQCiAAKAIcIgVBB0cEQCAEIAU2AhAgA0EEQa36ACAEQRBqEAgLIAFBDGogAEEgakEBEAogAUENaiAAQSRqQQEQCiAAKAIAIgEgAS0AvAFB+wFxIAAoAhhB\u002FwFGQQJ0cjoAvAEgACgCACIBIAAoAgw2AtgBIAEgACgCEDYC3AEgAEEBOgCFAQsgBEEgaiQAIAILugQBBn8jAEEQayIGJAACfyAALQBkQQJxRQRAIANBAUHs0wBBABAIQQAMAQsgAEEANgJoAkACQAJAIAIEQANAIAJBB00EQCADQQFBuRlBABAIDAULIAEgBkEMaiIFQQQQCiAGKAIMIQQgAUEEaiAFQQQQCkEIIQcgBigCDCEFAkACQAJAAkAgBA4CAQADCyACQRBJBEBB4RkhBAwHCyABQQhqIAZBCGpBBBAKIAYoAggEQEHLPiEEDAcLIAFBDGogBkEMakEEEAogBigCDCIEDQFBshghBAwGCyADQQFBshhBABAIDAYLQRAhBwsgBCAHSQRAIANBAUGGxABBABAIDAULIAIgBEkEQCADQQFBvsMAQQAQCEEADAYLAkACQCAAIAEgB2ogBCAHayADAn8CQAJAAkAgBUHx2L2bBkwEQCAFQePGwZMGRg0BIAVB5sqRmwZGDQMgBUHwwrWbBkcNBUHwwAEMBAsgBUHy2I2DB0YNAUHQwAEgBUHyyKHLBkYNAxogBUHy2L2bBkcNBEHYwAEMAwtB4MABDAILQejAAQwBC0H4wAELKAIEEQEADQFBAAwHCyAAIAAoAmhB\u002F\u002F\u002F\u002F\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\u002F\u002F\u002F8PUw0BIAJBAUHLPkEAEAgMBAsgASADQegAaiIEQQggAhASQQhHDQMgBCADQeQAakEEEAogAygCZEUNASACQQFByz5BABAIDAMLIAMgDadBCGo2AlgMAQsgCSADQdgAakEEEApBECEFCyADKAJcIgRB4+TA0wZGBEAgACgCZCIBQQRxBEAgACABQQhyNgJkDAILIAJBAUGtK0EAEAggBhAJQQAMBwsgAygCWCIHRQRAIAJBAUGyGEEAEAggBhAJQQAMBwsgBSAHSwRAIAMgBDYCBCADIAc2AgAgAkEBQYroACADEAgMBgsCQAJ\u002FAn8CQAJ\u002FAkACQAJAAkACQCAEQfHYvZsGTARAIARB48bBkwZGDQIgBEHmypGbBkYNBCAEQfDCtZsGRw0BQfDAAQwGCyAEQZ\u002FAwNIGTARAIARB8ti9mwZGDQVB0MABIARB8sihywZGDQYaIARB8PLRswZHDQFBuMABDAgLIARB8tiNgwdGDQIgBEGgwMDSBkYNBkHAwAEgBEHo5MDTBkYNBxoLIAAoAmQiBEEBcQ0IIAJBAUH8DkEAEAggBhAJQQAMDwtB4MABDAMLQejAAQwCC0H4wAEMAQtB2MABCyEKIAMgBEH\u002FAXE2AkwgAyAEQRh2NgJAIAMgBEEIdkH\u002FAXE2AkggAyAEQRB2Qf8BcTYCRCACQQJByQ4gA0FAaxAIIAcgBWsiBSAALQBkQQRxDQIaIAMgAygCXCIEQRh2NgIwIAMgBEH\u002FAXE2AjwgAyAEQRB2Qf8BcTYCNCADIARBCHZB\u002FwFxNgI4IAJBAkHaMyADQTBqEAggACAAKAJkQf\u002F\u002F\u002F\u002F8HcjYCZCABIAWtIg0gAiABKAIoEQgAIA1RDQcgAkEBQZIcQQAQCCAGEAlBAAwKC0GwwAELIQogByAFawshBSABKQMIIg1QBH5CAAUgDSABKQM4fQsgBa1TBEAgAygCWCEEIAMoAlwhACADIAEpAwgiDVAEfkIABSANIAEpAzh9Cz4CKCADIAU2AiQgAyAAQf8BcTYCICADIABBGHY2AhQgAyAENgIQIAMgAEEIdkH\u002FAXE2AhwgAyAAQRB2Qf8BcTYCGCACQQFB3fUAIANBEGoQCAwHCyAFIAhNBEAgBiEEDAQLIAUhCCAGIAUQECIEDQMgBhAJIAJBAUH\u002FD0EAEAhBAAwHCyAEQQJxRQRAIAJBAUHCD0EAEAggBhAJQQAMBwsgACAEQf\u002F\u002F\u002F\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\u002FCQELfyMAQRBrIgUkAAJ\u002FIAAoAghBEEYEQCAAKAKcASAAKALMAUGMLGxqDAELIAAoAgwLIQcCfyACQQFNBEAgA0EBQdgjQQAQCEEADAELIAEgBUEMakECEAogBSgCDARAIANBAkHwLEEAEAhBAQwBCyACQQZNBEAgA0EBQdgjQQAQCEEADAELIAFBAmogBUEIakEBEAogBygC\u002FCsiCSEAAkACQAJAIAcoAoAsIgZFDQAgBSgCCCEIA0AgACgCACAIRg0BIABBFGohACAEQQFqIgQgBkcNAAsMAQsgBCAGRw0BCyAHKAKELCAGRgR\u002FIAcgBkEKaiIANgKELCAJIABBFGwQECIARQRAIAcoAvwrEAkgB0EANgKELCAHQgA3AvwrIANBAUHyI0EAEAhBAAwDCyAHIAA2AvwrIAAgBygCgCwiBEEUbGpBACAHKAKELCAEa0EUbBAOGiAHKAL8KyEJIAcoAoAsBSAGC0EUbCAJaiEAQQEhCwsgACAFKAIINgIAIAFBA2ogBUEMakECEAogBSgCDARAIANBAkHwLEEAEAhBAQwBCyABQQVqIAVBBGpBAhAKIAUoAgQiBEECTwRAIANBAkGoF0EAEAhBAQwBCyACQQdrIQYgBARAIAFBB2ohAkEAIQkDQCAGQQJNBEAgA0EBQdgjQQAQCEEADAMLIAIgBUEMakEBEAogBSgCDEEBRwRAIANBAkGyKkEAEAhBAQwDCyACQQFqIAVBAhAKIAAgBSgCACIEQf\u002F\u002FAXEiATYCBCAGQQNrIgggBEEPdkEBaiIGIAFsQQJqIgpJBEAgA0EBQdgjQQAQCEEADAMLIAJBA2ohAkEAIQQgAQRAA0AgAiAFQQxqIAYQCiAEIAUoAgxHBEAgA0ECQdovQQAQCEEBDAULIAIgBmohAiAEQQFqIgQgACgCBEkNAAsLIAIgBUECEAogBSAFKAIAIgRB\u002F\u002F8BcSIBNgIAIAAoAgQgAUcEQCADQQJB2BhBABAIQQEMAwsgCCAKayIKIARBD3ZBAWoiBiABbEEDaiIMSQRAIANBAUHYI0EAEAhBAAwDCyACQQJqIQJBACEEIAEEQANAIAIgBUEMaiAGEAogBCAFKAIMRwRAIANBAkHaL0EAEAhBAQwFCyACIAZqIQIgBEEBaiIEIAAoAgRJDQALCyACIAVBDGpBAxAKIAUoAgwhBiAAQgA3AgggACAGQYCABHFFIAAtABBB\u002FgFxcjoAECAFIAZB\u002FwFxIgg2AggCQCAIRQ0AIAcoAvQrIg0EQCAHKALwKyEEQQAhAQNAIAggBCgCCEYEQCAAIAQ2AggMAwsgBEEUaiEEIAFBAWoiASANRw0ACwsgA0EBQdgjQQAQCEEADAMLIAUgBkEIdkH\u002FAXEiBjYCCAJAIAZFDQAgBygC9CsiCARAIAcoAvArIQRBACEBA0AgBiAEKAIIRgRAIAAgBDYCDAwDCyAEQRRqIQQgAUEBaiIBIAhHDQALCyADQQFB2CNBABAIQQAMAwsgCiAMayEGIAJBA2ohAiAJQQFqIgkgBSgCBEkNAAsLIAYEQCADQQFB2CNBABAIQQAMAQtBASALRQ0AGiAHIAcoAoAsQQFqNgKALEEBCyEOIAVBEGokACAOC\u002FUBAQV\u002FIwBBEGsiBCQAAkAgAiAAKAJIKAIQIgZBAmpHBEAgA0EBQfAiQQAQCAwBCyABIARBDGpBAhAKIAYgBCgCDEcEQCADQQFB8CJBABAIDAELIAZFBEBBASEFDAELIAFBAmohAiAAKAJIKAIYIQBBACEBA0AgAiAEQQhqQQEQCiAAIAQoAggiBUH\u002FAHEiB0EBaiIINgIYIAAgBUEHdkEBcTYCICAHQR9PBEAgBCAINgIEIAQgATYCACADQQFBx\u002FMAIAQQCEEAIQUMAgsgAEE0aiEAQQEhBSACQQFqIQIgAUEBaiIBIAZHDQALCyAEQRBqJAAgBQuYBQEKfyMAQRBrIgckAAJ\u002FIAAoAghBEEYEQCAAKAKcASAAKALMAUGMLGxqDAELIAAoAgwLIQUCfyACQQFNBEAgA0EBQfEeQQAQCEEADAELIAEgB0EMakECEAoCQCAHKAIMBEAgA0ECQYYbQQAQCAwBCyACQQZNBEAgA0EBQfEeQQAQCEEADAILIAFBAmogB0EMakECEAogBSgC8CshBCAHLQAMIQoCQAJAAkAgBSgC9CsiBkUEQCAEIQAMAQsgBCEAA0AgACgCCCAKRg0BIABBFGohACAIQQFqIgggBkcNAAsMAQsgBiAIRw0BCyAFKAL4KyAGRgRAIAUgBkEKaiIANgL4KyAEIABBFGwQECEAIAUoAvArIQQgAEUEQCAEEAkgBUEANgL4KyAFQgA3AvArIANBAUGLH0EAEAhBAAwECwJAIAAgBEYNACAFKAKALCILRQ0AIAUoAvwrIQxBACEIA0AgDCAIQRRsaiIGKAIIIgkEQCAGIAAgCSAEa2o2AggLIAYoAgwiCQRAIAYgACAJIARrajYCDAsgCEEBaiIIIAtHDQALCyAFIAA2AvArIAAgBSgC9CsiBEEUbGpBACAFKAL4KyAEa0EUbBAOGiAFKAL0KyEGIAUoAvArIQQLIAUgBkEBajYC9CsgBCAGQRRsaiEACyAAKAIMIgQEQCAEEAkgAEIANwIMCyAAIAo2AgggACAHKAIMIgRBCnZBA3E2AgAgACAEQQh2QQNxNgIEIAFBBGogB0EMakECEAogBygCDARAIANBAkG9FkEAEAgMAQsgACACQQZrIgIQDSIENgIMIARFBEAgA0EBQfEeQQAQCEEADAILIAQgAUEGaiACEAsaIAAgAjYCEAtBAQshDSAHQRBqJAAgDQsnAEEBIQEgAiAAKAJIKAIQQQJ0RwR\u002FIANBAUHXIUEAEAhBAAVBAQsLqwMBBX8jAEEQayIGJAACfyACQQFNBEAgA0EBQf0dQQAQCEEADAELIAAtALwBQQFxBEAgA0EBQZneAEEAEAhBAAwBCyAAKAKcASAAKALMAUGMLGxqIgAgAC0AiCxBAnI6AIgsIAEgBkEMakEBEAoCQCAAKAKsKCIERQRAIAAgBigCDEEBaiIFQQgQDCIENgKsKCAERQRAIANBAUGXHkEAEAhBAAwDCyAAIAU2AqgoDAELIAYoAgwiBSAAKAKoKEkNACAEIAVBAWoiBEEDdBAQIgVFBEAgA0EBQZceQQAQCEEADAILIAAgBTYCrCggBSAAKAKoKCIHQQN0akEAIAQgB2tBA3QQDhogACAENgKoKCAAKAKsKCEECyAEIAYoAgwiBUEDdGooAgAEQCAGIAU2AgAgA0EBQb01IAYQCEEADAELIAJBAWsiAhANIQQgACgCrCgiACAGKAIMIgVBA3RqIAQ2AgAgBEUEQCADQQFBlx5BABAIQQAMAQsgACAFQQN0aiACNgIEIAAgBigCDEEDdGooAgAgAUEBaiACEAsaQQELIQggBkEQaiQAIAgL9QIBBX8jAEEQayIGJAACfyACQQFNBEAgA0EBQaQgQQAQCEEADAELIAAgAC0AvAFBAXI6ALwBIAEgBkEMakEBEAoCQCAAKAJ0IgRFBEAgACAGKAIMQQFqIgVBCBAMIgQ2AnQgBEUEQCADQQFBviBBABAIQQAMAwsgACAFNgJwDAELIAYoAgwiBSAAKAJwSQ0AIAQgBUEBaiIEQQN0EBAiBUUEQCADQQFBviBBABAIQQAMAgsgACAFNgJ0IAUgACgCcCIHQQN0akEAIAQgB2tBA3QQDhogACAENgJwIAAoAnQhBAsgBCAGKAIMIgVBA3RqKAIABEAgBiAFNgIAIANBAUHTNSAGEAhBAAwBCyACQQFrIgIQDSEEIAAoAnQiACAGKAIMIgVBA3RqIAQ2AgAgBEUEQCADQQFBviBBABAIQQAMAQsgACAFQQN0aiACNgIEIAAgBigCDEEDdGooAgAgAUEBaiACEAsaQQELIQggBkEQaiQAIAgLoAEBBH8jAEEQayIEJAACfyACRQRAIANBAUHXHkEAEAhBAAwBCyABIARBDGpBARAKQQEgAkEBayIFRQ0AGkEAIQBBACECA0AgAUEBaiIBIARBCGpBARAKIAQoAggiBkEYdEEfdSAGQf8AcSACckEHdHEhAiAAQQFqIgAgBUcNAAtBASACRQ0AGiADQQFB1x5BABAIQQALIQcgBEEQaiQAIAcLGwBBASEAIAIEf0EBBSADQQFB\u002FiBBABAIQQALC4ABAQF\u002FIwBBEGsiACQAQQEhBAJAIAJBAU0EQEEAIQQgA0EBQeQgQQAQCAwBCyABIABBDGpBARAKIAFBAWogAEEIakEBEAogAkECayAAKAIIIgFBBXZBAnEgAUEEdkEDcWpBAmpwRQ0AQQAhBCADQQFB5CBBABAICyAAQRBqJAAgBAsEAEEACwv5uwEcAEGACAuhdWNhbm5vdCBhbGxvY2F0ZSBvcGpfdGNkX3NlZ19kYXRhX2NodW5rX3QqIGFycmF5AC0rICAgMFgweAAtMFgrMFggMFgtMHgrMHggMHgAVW5rbm93biBmb3JtYXQARmFpbGVkIHRvIHNldCB0aGUgZGVjb2RlZCBjb21wb25lbnRzAEZhaWxlZCB0byBzZXR1cCB0aGUgZGVjb2RlcgBGYWlsZWQgdG8gcmVhZCB0aGUgaGVhZGVyAG5hbgAqbF90aWxlX2xlbiA+IFVJTlRfTUFYIC0gT1BKX0NPTU1PTl9DQkxLX0RBVEFfRVhUUkEgLSBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zb3RfbGVuZ3RoAGluZgBGYWlsZWQgdG8gZGVjb2RlIHRoZSBpbWFnZQBJbnZhbGlkIGFjY2VzcyB0byBwaS0+aW5jbHVkZQBBTExfQ1BVUwBPUEpfTlVNX1RIUkVBRFMATkFOAElORgBwX2oyay0+bV9zcGVjaWZpY19wYXJhbS5tX2RlY29kZXIubV9zb3RfbGVuZ3RoID4gVUlOVF9NQVggLSBPUEpfQ09NTU9OX0NCTEtfREFUQV9FWFRSQQAJCQkgcHJlY2NpbnRzaXplICh3LGgpPQAJCQkgc3RlcHNpemVzIChtLGUpPQAuAChudWxsKQAoJWQsJWQpIAAlc30KAAkJIH0KAFtERVZdIER1bXAgYW4gaW1hZ2VfY29tcF9oZWFkZXIgc3RydWN0IHsKAFtERVZdIER1bXAgYW4gaW1hZ2VfaGVhZGVyIHN0cnVjdCB7CgBJbWFnZSBpbmZvIHsKAAkgZGVmYXVsdCB0aWxlIHsKACVzCSBjb21wb25lbnQgJWQgewoACQkgY29tcCAlZCB7CgAJIFRpbGUgaW5kZXg6IHsKAAkgTWFya2VyIGxpc3Q6IHsKAENvZGVzdHJlYW0gaW5kZXggZnJvbSBtYWluIGhlYWRlcjogewoAQ29kZXN0cmVhbSBpbmZvIGZyb20gbWFpbiBoZWFkZXI6IHsKAFN0cmVhbSBlcnJvciB3aGlsZSByZWFkaW5nIEpQMiBIZWFkZXIgYm94CgBGb3VuZCBhIG1pc3BsYWNlZCAnJWMlYyVjJWMnIGJveCBvdXRzaWRlIGpwMmggYm94CgBNYWxmb3JtZWQgSlAyIGZpbGUgZm9ybWF0OiBmaXJzdCBib3ggbXVzdCBiZSBKUEVHIDIwMDAgc2lnbmF0dXJlIGJveAoATWFsZm9ybWVkIEpQMiBmaWxlIGZvcm1hdDogc2Vjb25kIGJveCBtdXN0IGJlIGZpbGUgdHlwZSBib3gKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGhhbmRsZSBqcGVnMjAwMCBib3gKAE5vdCBlbm91Z2ggbWVtb3J5IHdpdGggRlRZUCBCb3gKAEEgbWFya2VyIElEIHdhcyBleHBlY3RlZCAoMHhmZi0tKSBpbnN0ZWFkIG9mICUuOHgKAAkJIG1jdD0leAoACQkJIGNibGtzdHk9JSN4CgAJCQkgY3N0eT0lI3gKAAkJIHByZz0lI3gKAEludGVnZXIgb3ZlcmZsb3cKAAkgdGR4PSV1LCB0ZHk9JXUKAAkgdHc9JXUsIHRoPSV1CgAJIHR4MD0ldSwgdHkwPSV1CgBJbnZhbGlkIGNvbXBvbmVudCBpbmRleDogJXUKAFN0cmVhbSB0b28gc2hvcnQKAE1hcmtlciBoYW5kbGVyIGZ1bmN0aW9uIGZhaWxlZCB0byByZWFkIHRoZSBtYXJrZXIgc2VnbWVudAoATm90IGVub3VnaCBtZW1vcnkgZm9yIGN1cnJlbnQgcHJlY2luY3QgY29kZWJsb2NrIGVsZW1lbnQKAEVycm9yIHJlYWRpbmcgU1BDb2QgU1BDb2MgZWxlbWVudAoARXJyb3IgcmVhZGluZyBTUWNkIG9yIFNRY2MgZWxlbWVudAoAQSBCUENDIGhlYWRlciBib3ggaXMgYXZhaWxhYmxlIGFsdGhvdWdoIEJQQyBnaXZlbiBieSB0aGUgSUhEUiBib3ggKCVkKSBpbmRpY2F0ZSBjb21wb25lbnRzIGJpdCBkZXB0aCBpcyBjb25zdGFudAoARXJyb3Igd2l0aCBTSVogbWFya2VyOiBpbGxlZ2FsIHRpbGUgb2Zmc2V0CgBJbnZhbGlkIHByZWNpbmN0CgBOb3QgZW5vdWdoIG1lbW9yeSB0byBoYW5kbGUgYmFuZCBwcmVjaW50cwoARmFpbGVkIHRvIGRlY29kZSBhbGwgdXNlZCBjb21wb25lbnRzCgBTaXplIG9mIGNvZGUgYmxvY2sgZGF0YSBleGNlZWRzIHN5c3RlbSBsaW1pdHMKAFNpemUgb2YgdGlsZSBkYXRhIGV4Y2VlZHMgc3lzdGVtIGxpbWl0cwoAQ2Fubm90IHRha2UgaW4gY2hhcmdlIG11bHRpcGxlIE1DVCBtYXJrZXJzCgBDb3JydXB0ZWQgUFBNIG1hcmtlcnMKAE5vdCBlbm91Z2ggbWVtb3J5IGZvciB0aWxlIHJlc29sdXRpb25zCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbXVsdGlwbGUgY29sbGVjdGlvbnMKAEludmFsaWQgUENMUiBib3guIFJlcG9ydHMgMCBwYWxldHRlIGNvbHVtbnMKAFdlIGRvIG5vdCBzdXBwb3J0IFJPSSBpbiBkZWNvZGluZyBIVCBjb2RlYmxvY2tzCgBDYW5ub3QgaGFuZGxlIGJveCBvZiB1bmRlZmluZWQgc2l6ZXMKAENhbm5vdCB0YWtlIGluIGNoYXJnZSBjb2xsZWN0aW9ucyB3aXRob3V0IHNhbWUgbnVtYmVyIG9mIGluZGl4ZXMKAEludmFsaWQgdGlsZWMtPndpbl94eHggdmFsdWVzCgBDYW5ub3QgaGFuZGxlIGJveCBvZiBsZXNzIHRoYW4gOCBieXRlcwoAQ2Fubm90IGhhbmRsZSBYTCBib3ggb2YgbGVzcyB0aGFuIDE2IGJ5dGVzCgBDb21wb25lbnQgaW5kZXggJXUgdXNlZCBzZXZlcmFsIHRpbWVzCgBJbnZhbGlkIFBDTFIgYm94LiBSZXBvcnRzICVkIGVudHJpZXMKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIGNyZWF0ZSBUYWctdHJlZSBub2RlcwoAQ2Fubm90IHRha2UgaW4gY2hhcmdlIG1jdCBkYXRhIHdpdGhpbiBtdWx0aXBsZSBNQ1QgcmVjb3JkcwoAQ2Fubm90IGRlY29kZSB0aWxlLCBtZW1vcnkgZXJyb3IKAG9wal9qMmtfYXBwbHlfbmJfdGlsZV9wYXJ0c19jb3JyZWN0aW9uIGVycm9yCgBQcm9ibGVtIHdpdGggc2tpcHBpbmcgSlBFRzIwMDAgYm94LCBzdHJlYW0gZXJyb3IKAFByb2JsZW0gd2l0aCByZWFkaW5nIEpQRUcyMDAwIGJveCwgc3RyZWFtIGVycm9yCgBVbmtub3duIG1hcmtlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gYWRkIHRsIG1hcmtlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gYWRkIG1oIG1hcmtlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gdGFrZSBpbiBjaGFyZ2UgU0laIG1hcmtlcgoARXJyb3IgcmVhZGluZyBQUFQgbWFya2VyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byByZWFkIFBQVCBtYXJrZXIKAEVycm9yIHJlYWRpbmcgU09UIG1hcmtlcgoARXJyb3IgcmVhZGluZyBQTFQgbWFya2VyCgBFcnJvciByZWFkaW5nIE1DVCBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlYWQgTUNUIG1hcmtlcgoATm90IGVub3VnaCBzcGFjZSBmb3IgZXhwZWN0ZWQgU09QIG1hcmtlcgoARXhwZWN0ZWQgU09QIG1hcmtlcgoARXJyb3IgcmVhZGluZyBNQ08gbWFya2VyCgBFcnJvciByZWFkaW5nIFJHTiBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUFBNIG1hcmtlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gcmVhZCBQUE0gbWFya2VyCgBFcnJvciByZWFkaW5nIFRMTSBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUExNIG1hcmtlcgoATm90IGVub3VnaCBzcGFjZSBmb3IgZXhwZWN0ZWQgRVBIIG1hcmtlcgoARXhwZWN0ZWQgRVBIIG1hcmtlcgoARXJyb3IgcmVhZGluZyBDUkcgbWFya2VyCgBVbmtub3duIHByb2dyZXNzaW9uIG9yZGVyIGluIENPRCBtYXJrZXIKAFVua25vd24gU2NvZCB2YWx1ZSBpbiBDT0QgbWFya2VyCgBFcnJvciByZWFkaW5nIENPRCBtYXJrZXIKAEVycm9yIHJlYWRpbmcgUUNEIG1hcmtlcgoAQ3Jyb3IgcmVhZGluZyBDQkQgbWFya2VyCgBFcnJvciByZWFkaW5nIFBPQyBtYXJrZXIKAEVycm9yIHJlYWRpbmcgQ09DIG1hcmtlcgoARXJyb3IgcmVhZGluZyBRQ0MgbWFya2VyCgBFcnJvciByZWFkaW5nIE1DQyBtYXJrZXIKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlYWQgTUNDIG1hcmtlcgoAcmVxdWlyZWQgU0laIG1hcmtlciBub3QgZm91bmQgaW4gbWFpbiBoZWFkZXIKAHJlcXVpcmVkIENPRCBtYXJrZXIgbm90IGZvdW5kIGluIG1haW4gaGVhZGVyCgByZXF1aXJlZCBRQ0QgbWFya2VyIG5vdCBmb3VuZCBpbiBtYWluIGhlYWRlcgoATm90IGVub3VnaCBtZW1vcnkgdG8gaGFuZGxlIGpwZWcyMDAwIGZpbGUgaGVhZGVyCgBOb3QgZW5vdWdoIG1lbW9yeSB0byByZWFkIGhlYWRlcgoARXJyb3Igd2l0aCBKUCBTaWduYXR1cmUgOiBiYWQgbWFnaWMgbnVtYmVyCgBJbiBTT1QgbWFya2VyLCBUUFNvdCAoJWQpIGlzIG5vdCB2YWxpZCByZWdhcmRzIHRvIHRoZSBjdXJyZW50IG51bWJlciBvZiB0aWxlLXBhcnQgKCVkKSwgZ2l2aW5nIHVwCgBJbiBTT1QgbWFya2VyLCBUUFNvdCAoJWQpIGlzIG5vdCB2YWxpZCByZWdhcmRzIHRvIHRoZSBwcmV2aW91cyBudW1iZXIgb2YgdGlsZS1wYXJ0ICglZCksIGdpdmluZyB1cAoASW4gU09UIG1hcmtlciwgVFBTb3QgKCVkKSBpcyBub3QgdmFsaWQgcmVnYXJkcyB0byB0aGUgY3VycmVudCBudW1iZXIgb2YgdGlsZS1wYXJ0IChoZWFkZXIpICglZCksIGdpdmluZyB1cAoAdGlsZXMgcmVxdWlyZSBhdCBsZWFzdCBvbmUgcmVzb2x1dGlvbgoATWFya2VyIGlzIG5vdCBjb21wbGlhbnQgd2l0aCBpdHMgcG9zaXRpb24KAFByb2JsZW0gd2l0aCBzZWVrIGZ1bmN0aW9uCgBFcnJvciByZWFkaW5nIFNQQ29kIFNQQ29jIGVsZW1lbnQsIEludmFsaWQgY2Jsa3cvY2Jsa2ggY29tYmluYXRpb24KAEludmFsaWQgbXVsdGlwbGUgY29tcG9uZW50IHRyYW5zZm9ybWF0aW9uCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgY29sbGVjdGlvbnMgb3RoZXIgdGhhbiBhcnJheSBkZWNvcnJlbGF0aW9uCgBUb28gbGFyZ2UgdmFsdWUgZm9yIE5wcG0KAE5vdCBlbm91Z2ggYnl0ZXMgdG8gcmVhZCBOcHBtCgBiYWQgcGxhY2VkIGpwZWcgY29kZXN0cmVhbQoACSBNYWluIGhlYWRlciBzdGFydCBwb3NpdGlvbj0lbGxpCgkgTWFpbiBoZWFkZXIgZW5kIHBvc2l0aW9uPSVsbGkKAE1hcmtlciBzaXplIGluY29uc2lzdGVudCB3aXRoIHN0cmVhbSBsZW5ndGgKAFRpbGUgcGFydCBsZW5ndGggc2l6ZSBpbmNvbnNpc3RlbnQgd2l0aCBzdHJlYW0gbGVuZ3RoCgBDYW5ub3QgdGFrZSBpbiBjaGFyZ2UgbXVsdGlwbGUgZGF0YSBzcGFubmluZwoAV3JvbmcgZmxhZwoARXJyb3Igd2l0aCBGVFlQIHNpZ25hdHVyZSBCb3ggc2l6ZQoARXJyb3Igd2l0aCBKUCBzaWduYXR1cmUgQm94IHNpemUKAEludmFsaWQgcHJlY2luY3Qgc2l6ZQoASW5jb25zaXN0ZW50IG1hcmtlciBzaXplCgBJbnZhbGlkIG1hcmtlciBzaXplCgBFcnJvciB3aXRoIFNJWiBtYXJrZXIgc2l6ZQoATm90IGVub3VnaCBtZW1vcnkgdG8gYWRkIGEgbmV3IHZhbGlkYXRpb24gcHJvY2VkdXJlCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBkZWNvZGUgdGlsZQoARmFpbGVkIHRvIGRlY29kZSB0aGUgY29kZXN0cmVhbSBpbiB0aGUgSlAyIGZpbGUKAENhbm5vdCB0YWtlIGluIGNoYXJnZSBjb2xsZWN0aW9ucyB3aXRoIGluZGl4IHNodWZmbGUKAENhbm5vdCBhbGxvY2F0ZSBUaWVyIDEgaGFuZGxlCgBObyBkZWNvZGVkIGFyZWEgcGFyYW1ldGVycywgc2V0IHRoZSBkZWNvZGVkIGFyZWEgdG8gdGhlIHdob2xlIGltYWdlCgBOb3QgZW5vdWdoIG1lbW9yeSB0byBjcmVhdGUgVGFnLXRyZWUKAE5vdCBlbm91Z2ggbWVtb3J5IHRvIHJlaW5pdGlhbGl6ZSB0aGUgdGFnIHRyZWUKAEVycm9yIHJlYWRpbmcgU1BDb2QgU1BDb2MgZWxlbWVudCwgSW52YWxpZCB0cmFuc2Zvcm1hdGlvbiBmb3VuZAoARXJyb3IgcmVhZGluZyBTUENvZCBTUENvYyBlbGVtZW50LiBVbnN1cHBvcnRlZCBNaXhlZCBIVCBjb2RlLWJsb2NrIHN0eWxlIGZvdW5kCgBUaWxlIFkgY29vcmRpbmF0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQKAFRpbGUgWCBjb29yZGluYXRlcyBhcmUgbm90IHN1cHBvcnRlZAoASW1hZ2UgY29vcmRpbmF0ZXMgYWJvdmUgSU5UX01BWCBhcmUgbm90IHN1cHBvcnRlZAoASlBFRzIwMDAgSGVhZGVyIGJveCBub3QgcmVhZCB5ZXQsICclYyVjJWMlYycgYm94IHdpbGwgYmUgaWdub3JlZAoAb3BqX2oya19tZXJnZV9wcHQoKSBoYXMgYWxyZWFkeSBiZWVuIGNhbGxlZAoATm90IGVub3VnaCBtZW1vcnkgdG8gcmVhZCBTT1QgbWFya2VyLiBUaWxlIGluZGV4IGFsbG9jYXRpb24gZmFpbGVkCgBJZ25vcmluZyBpaGRyIGJveC4gRmlyc3QgaWhkciBib3ggYWxyZWFkeSByZWFkCgBacHB0ICV1IGFscmVhZHkgcmVhZAoAWnBwbSAldSBhbHJlYWR5IHJlYWQKAFBURVJNIGNoZWNrIGZhaWx1cmU6ICVkIHN5bnRoZXRpemVkIDB4RkYgbWFya2VycyByZWFkCgAJCQkgY2Jsa3c9Ml4lZAoACQkJIGNibGtoPTJeJWQKAAkJCSBxbnRzdHk9JWQKACVzIGR4PSVkLCBkeT0lZAoACQkJIHJvaXNoaWZ0PSVkCgAJCQkgbnVtZ2JpdHM9JWQKAAkJIG51bWxheWVycz0lZAoAJXMgbnVtY29tcHM9JWQKAG9wal9qcDJfYXBwbHlfY2RlZjogYWNuPSVkLCBudW1jb21wcz0lZAoAb3BqX2pwMl9hcHBseV9jZGVmOiBjbj0lZCwgbnVtY29tcHM9JWQKAAkJCSBudW1yZXNvbHV0aW9ucz0lZAoACQkgdHlwZT0lI3gsIHBvcz0lbGxpLCBsZW49JWQKACVzIHNnbmQ9JWQKAAkJCSBxbWZiaWQ9JWQKACVzIHByZWM9JWQKAAkJIG5iIG9mIHRpbGUtcGFydCBpbiB0aWxlIFslZF09JWQKACVzIHgxPSVkLCB5MT0lZAoAJXMgeDA9JWQsIHkwPSVkCgBGYWlsZWQgdG8gZGVjb2RlIHRpbGUgJWQvJWQKAFNldHRpbmcgZGVjb2RpbmcgYXJlYSB0byAlZCwlZCwlZCwlZAoARmFpbGVkIHRvIGRlY29kZSBjb21wb25lbnQgJWQKAEludmFsaWQgdmFsdWUgZm9yIG51bXJlc29sdXRpb25zIDogJWQsIG1heCB2YWx1ZSBpcyBzZXQgaW4gb3BlbmpwZWcuaCBhdCAlZAoASW52YWxpZCBjb21wb25lbnQgbnVtYmVyOiAlZCwgcmVnYXJkaW5nIHRoZSBudW1iZXIgb2YgY29tcG9uZW50cyAlZAoAVG9vIG1hbnkgUE9DcyAlZAoASW52YWxpZCB0aWxlIG51bWJlciAlZAoASW52YWxpZCB0aWxlIHBhcnQgaW5kZXggZm9yIHRpbGUgbnVtYmVyICVkLiBHb3QgJWQsIGV4cGVjdGVkICVkCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IG51bWJlciBvZiBjb21wb25lbnQgaXMgaWxsZWdhbCAtPiAlZAoATm90IGVub3VnaCBtZW1vcnkgZm9yIGNpZWxhYgoAQ2Fubm90IGFsbG9jYXRlIGNibGstPmRlY29kZWRfZGF0YQoARmFpbGVkIHRvIG1lcmdlIFBQVCBkYXRhCgBGYWlsZWQgdG8gbWVyZ2UgUFBNIGRhdGEKAEludmFsaWQgbnVtYmVyIG9mIGxheWVycyBpbiBDT0QgbWFya2VyIDogJWQgbm90IGluIHJhbmdlIFsxLTY1NTM1XQoAU3RyZWFtIHRvbyBzaG9ydCwgZXhwZWN0ZWQgU09UCgBVbmFibGUgdG8gc2V0IHQxIGhhbmRsZSBhcyBUTFMKAFN0cmVhbSBkb2VzIG5vdCBlbmQgd2l0aCBFT0MKAENhbm5vdCBoYW5kbGUgYm94IHNpemVzIGhpZ2hlciB0aGFuIDJeMzIKAG9wal9waV9uZXh0X2xyY3AoKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal9waV9uZXh0X3JsY3AoKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal9waV9uZXh0X2NwcmwoKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal9waV9uZXh0X3BjcmwoKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal9waV9uZXh0X3JwY2woKTogaW52YWxpZCBjb21wbm8wL2NvbXBubzEKAG9wal90MV9kZWNvZGVfY2JsaygpOiB1bnN1cHBvcnRlZCBicG5vX3BsdXNfb25lID0gJWQgPj0gMzEKAEZhaWxlZCB0byBkZWNvZGUgdGlsZSAxLzEKAEluc3VmZmljaWVudCBkYXRhIGZvciBDTUFQIGJveC4KAE5lZWQgdG8gcmVhZCBhIFBDTFIgYm94IGJlZm9yZSB0aGUgQ01BUCBib3guCgBJbnN1ZmZpY2llbnQgZGF0YSBmb3IgQ0RFRiBib3guCgBOdW1iZXIgb2YgY2hhbm5lbCBkZXNjcmlwdGlvbiBpcyBlcXVhbCB0byB6ZXJvIGluIENERUYgYm94LgoAU3RyZWFtIGVycm9yIHdoaWxlIHJlYWRpbmcgSlAyIEhlYWRlciBib3g6IG5vICdpaGRyJyBib3guCgBOb24gY29uZm9ybWFudCBjb2Rlc3RyZWFtIFRQc290PT1UTnNvdC4KAFN0cmVhbSBlcnJvciB3aGlsZSByZWFkaW5nIEpQMiBIZWFkZXIgYm94OiBib3ggbGVuZ3RoIGlzIGluY29uc2lzdGVudC4KAEJveCBsZW5ndGggaXMgaW5jb25zaXN0ZW50LgoAUmVzb2x1dGlvbiBmYWN0b3IgaXMgZ3JlYXRlciB0aGFuIHRoZSBtYXhpbXVtIHJlc29sdXRpb24gaW4gdGhlIGNvbXBvbmVudC4KAENvbXBvbmVudCBtYXBwaW5nIHNlZW1zIHdyb25nLiBUcnlpbmcgdG8gY29ycmVjdC4KAEluY29tcGxldGUgY2hhbm5lbCBkZWZpbml0aW9ucy4KAE1hbGZvcm1lZCBIVCBjb2RlYmxvY2suIEludmFsaWQgY29kZWJsb2NrIGxlbmd0aCB2YWx1ZXMuCgBXZSBkbyBub3Qgc3VwcG9ydCBtb3JlIHRoYW4gMyBjb2RpbmcgcGFzc2VzIGluIGFuIEhUIGNvZGVibG9jazsgVGhpcyBjb2RlYmxvY2tzIGhhcyAlZCBwYXNzZXMuCgBNYWxmb3JtZWQgSFQgY29kZWJsb2NrLiBEZWNvZGluZyB0aGlzIGNvZGVibG9jayBpcyBzdG9wcGVkLiBUaGVyZSBhcmUgJWQgemVybyBiaXRwbGFuZXMgaW4gJWQgYml0cGxhbmVzLgoAQ2Fubm90IHRha2UgaW4gY2hhcmdlIG11bHRpcGxlIHRyYW5zZm9ybWF0aW9uIHN0YWdlcy4KAFVua25vd24gbWFya2VyIGhhcyBiZWVuIGRldGVjdGVkIGFuZCBnZW5lcmF0ZWQgZXJyb3IuCgBDb2RlYyBwcm92aWRlZCB0byB0aGUgb3BqX3NldF9kZWNvZGVkX2NvbXBvbmVudHMgZnVuY3Rpb24gaXMgbm90IGEgZGVjb21wcmVzc29yIGhhbmRsZXIuCgBDb2RlYyBwcm92aWRlZCB0byB0aGUgb3BqX3NldHVwX2RlY29kZXIgZnVuY3Rpb24gaXMgbm90IGEgZGVjb21wcmVzc29yIGhhbmRsZXIuCgBDb2RlYyBwcm92aWRlZCB0byB0aGUgb3BqX3JlYWRfaGVhZGVyIGZ1bmN0aW9uIGlzIG5vdCBhIGRlY29tcHJlc3NvciBoYW5kbGVyLgoAVGlsZXMgZG9uJ3QgYWxsIGhhdmUgdGhlIHNhbWUgZGltZW5zaW9uLiBTa2lwIHRoZSBNQ1Qgc3RlcC4KAE51bWJlciBvZiBjb21wb25lbnRzICglZCkgaXMgaW5jb25zaXN0ZW50IHdpdGggYSBNQ1QuIFNraXAgdGhlIE1DVCBzdGVwLgoASlAyIGJveCB3aGljaCBhcmUgYWZ0ZXIgdGhlIGNvZGVzdHJlYW0gd2lsbCBub3QgYmUgcmVhZCBieSB0aGlzIGZ1bmN0aW9uLgoATWFsZm9ybWVkIEhUIGNvZGVibG9jay4gV2hlbiB0aGUgbnVtYmVyIG9mIHplcm8gcGxhbmVzIGJpdHBsYW5lcyBpcyBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIGJpdHBsYW5lcywgb25seSB0aGUgY2xlYW51cCBwYXNzIG1ha2VzIHNlbnNlLCBidXQgd2UgaGF2ZSAlZCBwYXNzZXMgaW4gdGhpcyBjb2RlYmxvY2suIFRoZXJlZm9yZSwgb25seSB0aGUgY2xlYW51cCBwYXNzIHdpbGwgYmUgZGVjb2RlZC4gVGhpcyBtZXNzYWdlIHdpbGwgbm90IGJlIGRpc3BsYXllZCBhZ2Fpbi4KAEltYWdlIGhhcyBsZXNzIGNvbXBvbmVudHMgdGhhbiBjb2Rlc3RyZWFtLgoATmVlZCB0byBkZWNvZGUgdGhlIG1haW4gaGVhZGVyIGJlZm9yZSBiZWdpbiB0byBkZWNvZGUgdGhlIHJlbWFpbmluZyBjb2Rlc3RyZWFtLgoAUHNvdCB2YWx1ZSBvZiB0aGUgY3VycmVudCB0aWxlLXBhcnQgaXMgZXF1YWwgdG8gemVybywgd2UgYXNzdW1pbmcgaXQgaXMgdGhlIGxhc3QgdGlsZS1wYXJ0IG9mIHRoZSBjb2Rlc3RyZWFtLgoAQSBtYWxmb3JtZWQgY29kZWJsb2NrIHRoYXQgaGFzIG1vcmUgdGhhbiBvbmUgY29kaW5nIHBhc3MsIGJ1dCB6ZXJvIGxlbmd0aCBmb3IgMm5kIGFuZCBwb3RlbnRpYWxseSB0aGUgM3JkIHBhc3MgaW4gYW4gSFQgY29kZWJsb2NrLgoACQkJIHRpbGUtcGFydFslZF06IHN0YXJfcG9zPSVsbGksIGVuZF9oZWFkZXI9JWxsaSwgZW5kX3Bvcz0lbGxpLgoAVGlsZSAldSBoYXMgVFBzb3QgPT0gMCBhbmQgVE5zb3QgPT0gMCwgYnV0IG5vIG90aGVyIHRpbGUtcGFydHMgd2VyZSBmb3VuZC4gRU9DIGlzIGFsc28gbWlzc2luZy4KAENvbXBvbmVudCAlZCBkb2Vzbid0IGhhdmUgYSBtYXBwaW5nLgoAQSBjb25mb3JtaW5nIEpQMiByZWFkZXIgc2hhbGwgaWdub3JlIGFsbCBDb2xvdXIgU3BlY2lmaWNhdGlvbiBib3hlcyBhZnRlciB0aGUgZmlyc3QsIHNvIHdlIGlnbm9yZSB0aGlzIG9uZS4KAFRoZSBzaWduYXR1cmUgYm94IG11c3QgYmUgdGhlIGZpcnN0IGJveCBpbiB0aGUgZmlsZS4KAFRoZSAgYm94IG11c3QgYmUgdGhlIGZpcnN0IGJveCBpbiB0aGUgZmlsZS4KAFRoZSBmdHlwIGJveCBtdXN0IGJlIHRoZSBzZWNvbmQgYm94IGluIHRoZSBmaWxlLgoARmFpbGVkIHRvIGRlY29kZS4KAE1hbGZvcm1lZCBIVCBjb2RlYmxvY2suIEluY29ycmVjdCBNRUwgc2VnbWVudCBzZXF1ZW5jZS4KAENvbXBvbmVudCAlZCBpcyBtYXBwZWQgdHdpY2UuCgBPbmx5IG9uZSBDTUFQIGJveCBpcyBhbGxvd2VkLgoAYXBwbHlfY29sb3JfdHJhbnNmb3JtcyA9IE9QSl9UUlVFIGlzIG5vdCBzdXBwb3J0ZWQuCgBXZSBuZWVkIGFuIGltYWdlIHByZXZpb3VzbHkgY3JlYXRlZC4KAElIRFIgYm94X21pc3NpbmcuIFJlcXVpcmVkLgoASlAySCBib3ggbWlzc2luZy4gUmVxdWlyZWQuCgBOb3Qgc3VyZSBob3cgdGhhdCBoYXBwZW5lZC4KAE1haW4gaGVhZGVyIGhhcyBiZWVuIGNvcnJlY3RseSBkZWNvZGVkLgoAVGlsZSAlZC8lZCBoYXMgYmVlbiBkZWNvZGVkLgoASGVhZGVyIG9mIHRpbGUgJWQgLyAlZCBoYXMgYmVlbiByZWFkLgoARW1wdHkgU09UIG1hcmtlciBkZXRlY3RlZDogUHNvdD0lZC4KAERpcmVjdCB1c2UgYXQgIyVkIGhvd2V2ZXIgcGNvbD0lZC4KAEltcGxlbWVudGF0aW9uIGxpbWl0YXRpb246IGZvciBwYWxldHRlIG1hcHBpbmcsIHBjb2xbJWRdIHNob3VsZCBiZSBlcXVhbCB0byAlZCwgYnV0IGlzIGVxdWFsIHRvICVkLgoASW52YWxpZCBjb21wb25lbnQvcGFsZXR0ZSBpbmRleCBmb3IgZGlyZWN0IG1hcHBpbmcgJWQuCgBJbnZhbGlkIHZhbHVlIGZvciBjbWFwWyVkXS5tdHlwID0gJWQuCgBQc290IHZhbHVlIGlzIG5vdCBjb3JyZWN0IHJlZ2FyZHMgdG8gdGhlIEpQRUcyMDAwIG5vcm06ICVkLgoATWFsZm9ybWVkIEhUIGNvZGVibG9jay4gVkxDIGNvZGUgcHJvZHVjZXMgc2lnbmlmaWNhbnQgc2FtcGxlcyBvdXRzaWRlIHRoZSBjb2RlYmxvY2sgYXJlYS4KAFVuZXhwZWN0ZWQgT09NLgoAMzIgYml0cyBhcmUgbm90IGVub3VnaCB0byBkZWNvZGUgdGhpcyBjb2RlYmxvY2ssIHNpbmNlIHRoZSBudW1iZXIgb2YgYml0cGxhbmUsICVkLCBpcyBsYXJnZXIgdGhhbiAzMC4KAEJvdHRvbSBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feTE9JWQpIHNob3VsZCBiZSA+IDAuCgBSaWdodCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDE9JWQpIHNob3VsZCBiZSA+IDAuCgBVcCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feTA9JWQpIHNob3VsZCBiZSA+PSAwLgoATGVmdCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDA9JWQpIHNob3VsZCBiZSA+PSAwLgoARXJyb3IgcmVhZGluZyBQUFQgbWFya2VyOiBwYWNrZXQgaGVhZGVyIGhhdmUgYmVlbiBwcmV2aW91c2x5IGZvdW5kIGluIHRoZSBtYWluIGhlYWRlciAoUFBNIG1hcmtlcikuCgBTdGFydCB0byByZWFkIGoyayBtYWluIGhlYWRlciAoJWxsZCkuCgBCb3R0b20gcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3kxPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChZc2l6PSVkKS4KAFVwIHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl95MD0lZCkgaXMgb3V0c2lkZSB0aGUgaW1hZ2UgYXJlYSAoWXNpej0lZCkuCgBSaWdodCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDE9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFhzaXo9JWQpLgoATGVmdCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDA9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFhzaXo9JWQpLgoAQm90dG9tIHBvc2l0aW9uIG9mIHRoZSBkZWNvZGVkIGFyZWEgKHJlZ2lvbl95MT0lZCkgaXMgb3V0c2lkZSB0aGUgaW1hZ2UgYXJlYSAoWU9zaXo9JWQpLgoAVXAgcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3kwPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChZT3Npej0lZCkuCgBSaWdodCBwb3NpdGlvbiBvZiB0aGUgZGVjb2RlZCBhcmVhIChyZWdpb25feDE9JWQpIGlzIG91dHNpZGUgdGhlIGltYWdlIGFyZWEgKFhPc2l6PSVkKS4KAExlZnQgcG9zaXRpb24gb2YgdGhlIGRlY29kZWQgYXJlYSAocmVnaW9uX3gwPSVkKSBpcyBvdXRzaWRlIHRoZSBpbWFnZSBhcmVhIChYT3Npej0lZCkuCgBTaXplIHggb2YgdGhlIGRlY29kZWQgY29tcG9uZW50IGltYWdlIGlzIGluY29ycmVjdCAoY29tcFslZF0udz0lZCkuCgBTaXplIHkgb2YgdGhlIGRlY29kZWQgY29tcG9uZW50IGltYWdlIGlzIGluY29ycmVjdCAoY29tcFslZF0uaD0lZCkuCgBUaWxlIHJlYWQsIGRlY29kZWQgYW5kIHVwZGF0ZWQgaXMgbm90IHRoZSBkZXNpcmVkIG9uZSAoJWQgdnMgJWQpLgoASW52YWxpZCBjb21wb25lbnQgaW5kZXggJWQgKD49ICVkKS4KAG9wal9yZWFkX2hlYWRlcigpIHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlIG9wal9zZXRfZGVjb2RlZF9jb21wb25lbnRzKCkuCgBNZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlIGluIG9wal9qcDJfYXBwbHlfcGNscigpLgoAaW1hZ2UtPmNvbXBzWyVkXS5kYXRhID09IE5VTEwgaW4gb3BqX2pwMl9hcHBseV9wY2xyKCkuCgBpbnZhbGlkIGJveCBzaXplICVkICgleCkKAEZhaWwgdG8gcmVhZCB0aGUgY3VycmVudCBtYXJrZXIgc2VnbWVudCAoJSN4KQoARXJyb3Igd2l0aCBTSVogbWFya2VyOiBJSERSIHcoJXUpIGgoJXUpIHZzLiBTSVogdygldSkgaCgldSkKAEVycm9yIHJlYWRpbmcgQ09DIG1hcmtlciAoYmFkIG51bWJlciBvZiBjb21wb25lbnRzKQoASW52YWxpZCBudW1iZXIgb2YgdGlsZXMgOiAldSB4ICV1IChtYXhpbXVtIGZpeGVkIGJ5IGpwZWcyMDAwIG5vcm0gaXMgNjU1MzUgdGlsZXMpCgBJbnZhbGlkIG51bWJlciBvZiBjb21wb25lbnRzIChpaGRyKQoATm90IGVub3VnaCBtZW1vcnkgdG8gaGFuZGxlIGltYWdlIGhlYWRlciAoaWhkcikKAFdyb25nIHZhbHVlcyBmb3I6IHcoJWQpIGgoJWQpIG51bWNvbXBzKCVkKSAoaWhkcikKAEludmFsaWQgdmFsdWVzIGZvciBjb21wID0gJWQgOiBkeD0ldSBkeT0ldSAoc2hvdWxkIGJlIGJldHdlZW4gMSBhbmQgMjU1IGFjY29yZGluZyB0byB0aGUgSlBFRzIwMDAgbm9ybSkKAEJhZCBpbWFnZSBoZWFkZXIgYm94IChiYWQgc2l6ZSkKAEJhZCBDT0xSIGhlYWRlciBib3ggKGJhZCBzaXplKQoAQmFkIEJQQ0MgaGVhZGVyIGJveCAoYmFkIHNpemUpCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IG5lZ2F0aXZlIG9yIHplcm8gaW1hZ2Ugc2l6ZSAoJWxsZCB4ICVsbGQpCgBza2lwOiBzZWdtZW50IHRvbyBsb25nICglZCkgd2l0aCBtYXggKCVkKSBmb3IgY29kZWJsb2NrICVkIChwPSVkLCBiPSVkLCByPSVkLCBjPSVkKQoAcmVhZDogc2VnbWVudCB0b28gbG9uZyAoJWQpIHdpdGggbWF4ICglZCkgZm9yIGNvZGVibG9jayAlZCAocD0lZCwgYj0lZCwgcj0lZCwgYz0lZCkKAERlc3BpdGUgSlAyIEJQQyE9MjU1LCBwcmVjaXNpb24gYW5kL29yIHNnbmQgdmFsdWVzIGZvciBjb21wWyVkXSBpcyBkaWZmZXJlbnQgdGhhbiBjb21wWzBdOgogICAgICAgIFswXSBwcmVjKCVkKSBzZ25kKCVkKSBbJWRdIHByZWMoJWQpIHNnbmQoJWQpCgBiYWQgY29tcG9uZW50IG51bWJlciBpbiBSR04gKCVkIHdoZW4gdGhlcmUgYXJlIG9ubHkgJWQpCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IG51bWJlciBvZiBjb21wb25lbnQgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgcmVtYWluaW5nIG51bWJlciBvZiBwYXJhbWV0ZXJzICggJWQgdnMgJWQpCgBFcnJvciB3aXRoIFNJWiBtYXJrZXI6IGludmFsaWQgdGlsZSBzaXplICh0ZHg6ICVkLCB0ZHk6ICVkKQoAQmFkIENPTFIgaGVhZGVyIGJveCAoYmFkIHNpemU6ICVkKQoAQmFkIENPTFIgaGVhZGVyIGJveCAoQ0lFTGFiLCBiYWQgc2l6ZTogJWQpCgBQVEVSTSBjaGVjayBmYWlsdXJlOiAlZCByZW1haW5pbmcgYnl0ZXMgaW4gY29kZSBibG9jayAoJWQgdXNlZCAvICVkKQoATWFsZm9ybWVkIEhUIGNvZGVibG9jay4gT25lIG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uIGlzIG5vdCBtZXQ6IDIgPD0gU2N1cCA8PSBtaW4oTGN1cCwgNDA3OSkKAEludmFsaWQgdmFsdWVzIGZvciBjb21wID0gJWQgOiBwcmVjPSV1IChzaG91bGQgYmUgYmV0d2VlbiAxIGFuZCAzOCBhY2NvcmRpbmcgdG8gdGhlIEpQRUcyMDAwIG5vcm0uIE9wZW5KcGVnIG9ubHkgc3VwcG9ydHMgdXAgdG8gMzEpCgBJbnZhbGlkIGJpdCBudW1iZXIgJWQgaW4gb3BqX3QyX3JlYWRfcGFja2V0X2hlYWRlcigpCgBTdHJlYW0gZXJyb3IhCgBFcnJvciBvbiB3cml0aW5nIHN0cmVhbSEKAFN0cmVhbSByZWFjaGVkIGl0cyBlbmQgIQoARXhwZWN0ZWQgYSBTT0MgbWFya2VyIAoASW52YWxpZCBib3ggc2l6ZSAlZCBmb3IgYm94ICclYyVjJWMlYycuIE5lZWQgJWQgYnl0ZXMsICVkIGJ5dGVzIHJlbWFpbmluZyAKAE1hbGZvcm1lZCBIVCBjb2RlYmxvY2suIERlY29kaW5nIHRoaXMgY29kZWJsb2NrIGlzIHN0b3BwZWQuIFVfcSBpcyBsYXJnZXIgdGhhbiB6ZXJvIGJpdHBsYW5lcyArIDEgCgBNYWxmb3JtZWQgSFQgY29kZWJsb2NrLiBEZWNvZGluZyB0aGlzIGNvZGVibG9jayBpcyBzdG9wcGVkLiBVX3EgaXNsYXJnZXIgdGhhbiBiaXRwbGFuZXMgKyAxIAoAQ09MUiBCT1ggbWV0aCB2YWx1ZSBpcyBub3QgYSByZWd1bGFyIHZhbHVlICglZCksIHNvIHdlIHdpbGwgaWdub3JlIHRoZSBlbnRpcmUgQ29sb3VyIFNwZWNpZmljYXRpb24gYm94LiAKAFdoaWxlIHJlYWRpbmcgQ0NQX1FOVFNUWSBlbGVtZW50IGluc2lkZSBRQ0Qgb3IgUUNDIG1hcmtlciBzZWdtZW50LCBudW1iZXIgb2Ygc3ViYmFuZHMgKCVkKSBpcyBncmVhdGVyIHRvIE9QSl9KMktfTUFYQkFORFMgKCVkKS4gU28gd2UgbGltaXQgdGhlIG51bWJlciBvZiBlbGVtZW50cyBzdG9yZWQgdG8gT1BKX0oyS19NQVhCQU5EUyAoJWQpIGFuZCBza2lwIHRoZSByZXN0LiAKAEpQMiBJSERSIGJveDogY29tcHJlc3Npb24gdHlwZSBpbmRpY2F0ZSB0aGF0IHRoZSBmaWxlIGlzIG5vdCBhIGNvbmZvcm1pbmcgSlAyIGZpbGUgKCVkKSAKAFRpbGUgaW5kZXggcHJvdmlkZWQgYnkgdGhlIHVzZXIgaXMgaW5jb3JyZWN0ICVkIChtYXggPSAlZCkgCgBFcnJvciBkZWNvZGluZyBjb21wb25lbnQgJWQuClRoZSBudW1iZXIgb2YgcmVzb2x1dGlvbnMgdG8gcmVtb3ZlICglZCkgaXMgZ3JlYXRlciBvciBlcXVhbCB0aGFuIHRoZSBudW1iZXIgb2YgcmVzb2x1dGlvbnMgb2YgdGhpcyBjb21wb25lbnQgKCVkKQpNb2RpZnkgdGhlIGNwX3JlZHVjZSBwYXJhbWV0ZXIuCgoASW1hZ2UgZGF0YSBoYXMgYmVlbiB1cGRhdGVkIHdpdGggdGlsZSAlZC4KCgBBsP0AC4AgIwClAEMAZgCDAO6oFADf2CMAvhBDAP\u002F1gwB+IFUAX1EjADUAQwBORIMAzsQUAM\u002FMIwD+4kMA\u002F5mDAJYAxQA\u002FMSMApQBDAF5EgwDOyBQA3xEjAP70QwD\u002F\u002FIMAngBVAHcAIwA1AEMA\u002F\u002FGDAK6IFAC3ACMA\u002FvhDAO\u002FkgwCOiMUAHxEjAKUAQwBmAIMA7qgUAN9UIwC+EEMA7yKDAH4gVQB\u002FIiMANQBDAE5EgwDOxBQAvxEjAP7iQwD3AIMAlgDFAD8iIwClAEMAXkSDAM7IFADXACMA\u002FvRDAP+6gwCeAFUAbwAjADUAQwD\u002F5oMArogUAK+iIwD++EMA5wCDAI6IxQAvIgIAxQCEAH4gAgDOxCQA9wACAP6iRABWAAIAngAUANcAAgC+EIQAZgACAK6IJADfEQIA7qhEADYAAgCOiBQAHxECAMUAhABuAAIAzogkAP+IAgD+uEQATkQCAJYAFAC3AAIA\u002FuSEAF5EAgCmACQA5wACAN5URAAuIgIAPgAUAHcAAgDFAIQAfiACAM7EJAD\u002F8QIA\u002FqJEAFYAAgCeABQAvxECAL4QhABmAAIArogkAO8iAgDuqEQANgACAI6IFAB\u002FIgIAxQCEAG4AAgDOiCQA7+QCAP64RABORAIAlgAUAK+iAgD+5IQAXkQCAKYAJADf2AIA3lREAC4iAgA+ABQAX1ECAFUAhABmAAIA3ogkAP8yAgD+EUQATkQCAK4AFAC3AAIAfjGEAF5RAgDGACQA1wACAO4gRAAeEQIAngAUAHcAAgBVAIQAXlQCAM5EJADnAAIA\u002FvFEADYAAgCmABQAX1UCAP50hAA+EQIAviAkAH90AgDexEQA\u002F\u002FgCAJYAFAAvIgIAVQCEAGYAAgDeiCQA9wACAP4RRABORAIArgAUAI+IAgB+MYQAXlECAMYAJADPyAIA7iBEAB4RAgCeABQAbwACAFUAhABeVAIAzkQkAN\u002FRAgD+8UQANgACAKYAFAB\u002FIgIA\u002FnSEAD4RAgC+ICQAvyICAN7ERADvIgIAlgAUAD8yAwDe1P30\u002F\u002FwUAD4RVQCPiAMAvjKFAOcAJQBeUf6qf3IDAM5E\u002FfjvRBQAfmRFAK+iAwCmAF1V35n98TYA\u002FvVvYgMA3tH99P\u002FmFAB+cVUAv7EDAK6IhQDf1SUATkT+8n9mAwDGAP347+IUAF5URQCfEQMAlgBdVc\u002FI\u002FfEeEe7IZwADAN7U\u002FfT\u002F8xQAPhFVAL8RAwC+MoUA39glAF5R\u002FqovIgMAzkT9+PcAFAB+ZEUAn5gDAKYAXVXXAP3xNgD+9W9EAwDe0f30\u002F7kUAH5xVQC3AAMAroiFAN\u002FcJQBORP7ydwADAMYA\u002Ffjv5BQAXlRFAH9zAwCWAF1Vv7j98R4R7sg\u002FMgIApQCEAH5AAgDeECQA3xECAP5yRABWAAIArqgUAL+yAgCWAIQAZgACAMYAJADnAAIA7shEAC4iAgCOiBQAdwACAKUAhABuAAIAzogkAPcAAgD+kUQANgACAK6iFACvqgIA\u002FriEAF4AAgC+ACQAz8QCAO5ERAD\u002F9AIAPiIUAB8RAgClAIQAfkACAN4QJAD\u002FmQIA\u002FnJEAFYAAgCuqBQAtwACAJYAhABmAAIAxgAkANcAAgDuyEQALiICAI6IFABPRAIApQCEAG4AAgDOiCQA7+ICAP6RRAA2AAIArqIUAH9EAgD+uIQAXgACAL4AJACfAAIA7kREAP92AgA+IhQAPzEDAMYAhQD\u002F2f3yfmT+8b+ZAwCuoiUA72b99FYA7uJ\u002FcwMAvphFAPcA\u002FfhmAP52n4gDAI6IFQDf1aUALiLemE9EAwC+soUA\u002F\u002Fz98m4ilgC3AAMArqolAN\u002FR\u002FfQ2AN7Ub2QDAK6oRQDv6v34XkTu6H9xAwA+MhUAz8SlAP\u002F6zog\u002FMQMAxgCFAP93\u002FfJ+ZP7xv7MDAK6iJQDnAP30VgDu4ncAAwC+mEUA7+T9+GYA\u002FnZ\u002FZgMAjogVANcApQAuIt6YPzMDAL6yhQD\u002Fdf3ybiKWAJ+RAwCuqiUA35n99DYA3tRfUQMArqhFAO\u002Fs\u002FfheRO7of3IDAD4yFQC\u002FsaUA\u002F\u002FPOiB8RAwDeVP3yHhEUAH5k\u002FvjPzAMAvpFFAO8iJQAuIv7zj4gDAMYAhQD3ABQAXhH+\u002FK+oAwCmADUA38j98T4x\u002FmZvZAMAzsj98v\u002F1FABmAP70v7oDAK4iRQDnACUAPjL+6n9zAwC+soUA31UUAFYAfnGfEQMAlgA1AM\u002FE\u002FfE+M+7oT0QDAN5U\u002FfIeERQAfmT++L+ZAwC+kUUA7+IlAC4i\u002FvN\u002FZgMAxgCFAO\u002FkFABeEf78n5gDAKYANQDXAP3xPjH+Zm8iAwDOyP3y\u002F7kUAGYA\u002FvS3AAMAriJFAN\u002FRJQA+Mv7qdwADAL6yhQDv7BQAVgB+cX9yAwCWADUAv7j98T4z7uhfVPzx3tH9+tcA\u002FPgWAP3\u002Ff3T89H5x\u002FfO\u002Fs\u002Fzy7+ru6E9E\u002FPGuIgUAv7j8+PcA\u002Fvx3APz0XhH99X91\u002FPLf2O7iPzP88b6y\u002FfrPiPz4\u002F\u002Fv9\u002F39z\u002FPRuAP3ztwD88u9m\u002Fvk\u002FMfzxngAFAL+6\u002FPj\u002F\u002Ff72ZwD89CYA\u002FfWPiPzy39ze1C8i\u002FPHe0f36z8T8+BYA\u002Ff9\u002Fcvz0fnH987+Z\u002FPLv7O7oRwD88a4iBQCnAPz4\u002F\u002Ff+\u002FFcA\u002FPReEf31lwD88t\u002FV7uI3APzxvrL9+scA\u002FPj\u002F\u002Fv3\u002Ff2b89G4A\u002FfOvqPzy5wD++T8y\u002FPGeAAUAv7H8+O\u002Fk\u002FvZfVPz0JgD99YcA\u002FPLfmd7UHxETAGUAQwDeAIMAjYgjAE5EEwClAEMAroiDADUAIwDXABMAxQBDAJ4AgwBVACMALiITAJUAQwB+AIMA\u002FhAjAHcAEwBlAEMAzoiDAI2IIwAeERMApQBDAF4AgwA1ACMA5wATAMUAQwC+AIMAVQAjAP8REwCVAEMAPgCDAO5AIwCvohMAZQBDAN4AgwCNiCMATkQTAKUAQwCuiIMANQAjAO9EEwDFAEMAngCDAFUAIwAuIhMAlQBDAH4AgwD+ECMAtwATAGUAQwDOiIMAjYgjAB4REwClAEMAXgCDADUAIwDPxBMAxQBDAL4AgwBVACMA9wATAJUAQwA+AIMA7kAjAG8AAQCEAAEAVgABABQAAQDXAAEAJAABAJYAAQBFAAEAdwABAIQAAQDGAAEAFAABAI+IAQAkAAEA9wABADUAAQAvIgEAhAABAP5AAQAUAAEAtwABACQAAQC\u002FAAEARQABAGcAAQCEAAEApgABABQAAQBPRAEAJAABAOcAAQA1AAEAPxEBAIQAAQBWAAEAFAABAM8AAQAkAAEAlgABAEUAAQBvAAEAhAABAMYAAQAUAAEAnwABACQAAQDvAAEANQABAD8yAQCEAAEA\u002FkABABQAAQCvAAEAJAABAP9EAQBFAAEAXwABAIQAAQCmAAEAFAABAH8AAQAkAAEA3wABADUAAQAfEQEAJAABAFYAAQCFAAEAvwABABQAAQD3AAEAxgABAHcAAQAkAAEA\u002F\u002FgBAEUAAQB\u002FAAEAFAABAN8AAQCmAAEAPzEBACQAAQAuIgEAhQABALcAAQAUAAEA70QBAK6iAQBnAAEAJAABAP9RAQBFAAEAlwABABQAAQDPAAEANgABAD8iAQAkAAEAVgABAIUAAQC\u002FsgEAFAABAO9AAQDGAAEAbwABACQAAQD\u002FcgEARQABAJ8AAQAUAAEA1wABAKYAAQBPRAEAJAABAC4iAQCFAAEAr6gBABQAAQDnAAEArqIBAF8AAQAkAAEA\u002F0QBAEUAAQCPiAEAFAABAK+qAQA2AAEAHxECAP74JABWAAIAtgCFAP9mAgDOABQAHhECAJYANQCvqAIA9gAkAD4xAgCmAEUAv7MCAL6yFAD\u002F9QIAZgB+UV9UAgD+8iQALiICAK4ihQDvRAIAxgAUAP\u002F0AgB2ADUAf0QCAN5AJAA+MgIAngBFANcAAgC+iBQA\u002F\u002FoCAF4R\u002FvFPRAIA\u002FvgkAFYAAgC2AIUA78gCAM4AFAAeEQIAlgA1AI+IAgD2ACQAPjECAKYARQDfRAIAvrIUAP+oAgBmAH5RbwACAP7yJAAuIgIAriKFAOcAAgDGABQA7+ICAHYANQB\u002FcgIA3kAkAD4yAgCeAEUAv7ECAL6IFAD\u002FcwIAXhH+8T8zAQCEAAEA7iABAMUAAQDPxAEARAABAP8yAQAVAAEAj4gBAIQAAQBmAAEAJQABAK8AAQBEAAEA7yIBAKYAAQBfAAEAhAABAE5EAQDFAAEAz8wBAEQAAQD3AAEAFQABAG8AAQCEAAEAVgABACUAAQCfAAEARAABAN8AAQD+MAEALyIBAIQAAQDuIAEAxQABAM\u002FIAQBEAAEA\u002FxEBABUAAQB3AAEAhAABAGYAAQAlAAEAfwABAEQAAQDnAAEApgABADcAAQCEAAEATkQBAMUAAQC3AAEARAABAL8AAQAVAAEAPwABAIQAAQBWAAEAJQABAJcAAQBEAAEA1wABAP4wAQAfEQIA7qhEAI6IAgDWAMUA\u002F\u002FMCAP78JQA+AAIAtgBVAN\u002FYAgD++EQAZgACAH4ghQD\u002FmQIA5gD1ADYAAgCmABUAnwACAP7yRAB2AAIAzkTFAP92AgD+8SUATkQCAK4AVQDPyAIA\u002FvREAF5EAgC+EIUA7+QCAN5U9QAeEQIAlgAVAC8iAgDuqEQAjogCANYAxQD\u002F+gIA\u002FvwlAD4AAgC2AFUAvxECAP74RABmAAIAfiCFAO8iAgDmAPUANgACAKYAFQB\u002FIgIA\u002FvJEAHYAAgDORMUA\u002F9UCAP7xJQBORAIArgBVAG8AAgD+9EQAXkQCAL4QhQDfEQIA3lT1AB4RAgCWABUAX1EDAPYAFAAeEUQAjoilAN\u002FUAwCuolUA\u002F3YkAD4itgCvqgMA5gAUAP\u002F1RABmAIUAz8wDAJ4AxQDvRCQANgD++H8xAwDu6BQA\u002F\u002FFEAHYApQDPxAMAfiJVAN\u002FRJABORP70X1EDANYAFADv4kQAXkSFAL8iAwCWAMUA38gkAC4i\u002FvJvIgMA9gAUAB4RRACOiKUAv7EDAK6iVQD\u002FMyQAPiK2AK+oAwDmABQA\u002F7lEAGYAhQC\u002FqAMAngDFAO\u002FkJAA2AP74b2QDAO7oFAD\u002F\u002FEQAdgClAM\u002FIAwB+IlUA7+okAE5E\u002FvR\u002FdAMA1gAUAP\u002F6RABeRIUAv7IDAJYAxQDfRCQALiL+8j8x8wD++v3xNgAEAL4ydQDfEfMA3lT98u\u002Fk1QB+cf78f3PzAP7z\u002FfgeEQQAlgBVAL+x8wDOALUA39j99GYA\u002FrlfVPMA\u002Fnb98SYABACmAHUAnwDzAK4A\u002FfL\u002F99UARgD+9X908wDmAP34FgAEAIYAVQCPiPMAxgC1AO\u002Fi\u002FfReEe6oPxHzAP76\u002FfE2AAQAvjJ1AN\u002FR8wDeVP3y\u002F\u002FvVAH5x\u002Fvx\u002FRPMA\u002FvP9+B4RBACWAFUAf3LzAM4AtQDvIv30ZgD+uU9E8wD+dv3xJgAEAKYAdQC\u002FEfMArgD98v\u002F\u002F1QBGAP71PzLzAOYA\u002FfgWAAQAhgBVAG8A8wDGALUAv7j99F4R7qgvIgBBvJ0BC6QeAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAwAAAAMAAAAEAAAABQAAALchQiFnIUIhERERETMzMzN3d3d3AAAAAAAAAAABVgAAAAAAACBPAAAwTwAAAVYAAAEAAAAwTwAAIE8AAAE0AAAAAAAAQE8AAMBPAAABNAAAAQAAAFBPAADQTwAAARgAAAAAAABgTwAAIFAAAAEYAAABAAAAcE8AADBQAADBCgAAAAAAAIBPAACAUAAAwQoAAAEAAACQTwAAkFAAACEFAAAAAAAAoE8AAKBSAAAhBQAAAQAAALBPAACwUgAAIQIAAAAAAADAUwAAIFMAACECAAABAAAA0FMAADBTAAABVgAAAAAAAOBPAADQTwAAAVYAAAEAAADwTwAAwE8AAAFUAAAAAAAAAFAAAMBQAAABVAAAAQAAABBQAADQUAAAAUgAAAAAAAAgUAAAwFAAAAFIAAABAAAAMFAAANBQAAABOAAAAAAAAEBQAADAUAAAATgAAAEAAABQUAAA0FAAAAEwAAAAAAAAYFAAACBRAAABMAAAAQAAAHBQAAAwUQAAASQAAAAAAACAUAAAQFEAAAEkAAABAAAAkFAAAFBRAAABHAAAAAAAAKBQAACAUQAAARwAAAEAAACwUAAAkFEAAAEWAAAAAAAAoFIAAKBRAAABFgAAAQAAALBSAACwUQAAAVYAAAAAAADgUAAA0FAAAAFWAAABAAAA8FAAAMBQAAABVAAAAAAAAABRAADAUAAAAVQAAAEAAAAQUQAA0FAAAAFRAAAAAAAAIFEAAOBQAAABUQAAAQAAADBRAADwUAAAAUgAAAAAAABAUQAAAFEAAAFIAAABAAAAUFEAABBRAAABOAAAAAAAAGBRAAAgUQAAATgAAAEAAABwUQAAMFEAAAE0AAAAAAAAgFEAAEBRAAABNAAAAQAAAJBRAABQUQAAATAAAAAAAACgUQAAYFEAAAEwAAABAAAAsFEAAHBRAAABKAAAAAAAAMBRAABgUQAAASgAAAEAAADQUQAAcFEAAAEkAAAAAAAA4FEAAIBRAAABJAAAAQAAAPBRAACQUQAAASIAAAAAAAAAUgAAoFEAAAEiAAABAAAAEFIAALBRAAABHAAAAAAAACBSAADAUQAAARwAAAEAAAAwUgAA0FEAAAEYAAAAAAAAQFIAAOBRAAABGAAAAQAAAFBSAADwUQAAARYAAAAAAABgUgAAAFIAAAEWAAABAAAAcFIAABBSAAABFAAAAAAAAIBSAAAgUgAAARQAAAEAAACQUgAAMFIAAAESAAAAAAAAoFIAAEBSAAABEgAAAQAAALBSAABQUgAAAREAAAAAAADAUgAAYFIAAAERAAABAAAA0FIAAHBSAADBCgAAAAAAAOBSAACAUgAAwQoAAAEAAADwUgAAkFIAAMEJAAAAAAAAAFMAAKBSAADBCQAAAQAAABBTAACwUgAAoQgAAAAAAAAgUwAAwFIAAKEIAAABAAAAMFMAANBSAAAhBQAAAAAAAEBTAADgUgAAIQUAAAEAAABQUwAA8FIAAEEEAAAAAAAAYFMAAABTAABBBAAAAQAAAHBTAAAQUwAAoQIAAAAAAACAUwAAIFMAAKECAAABAAAAkFMAADBTAAAhAgAAAAAAAKBTAABAUwAAIQIAAAEAAACwUwAAUFMAAEEBAAAAAAAAwFMAAGBTAABBAQAAAQAAANBTAABwUwAAEQEAAAAAAADgUwAAgFMAABEBAAABAAAA8FMAAJBTAACFAAAAAAAAAABUAACgUwAAhQAAAAEAAAAQVAAAsFMAAEkAAAAAAAAAIFQAAMBTAABJAAAAAQAAADBUAADQUwAAJQAAAAAAAABAVAAA4FMAACUAAAABAAAAUFQAAPBTAAAVAAAAAAAAAGBUAAAAVAAAFQAAAAEAAABwVAAAEFQAAAkAAAAAAAAAgFQAACBUAAAJAAAAAQAAAJBUAAAwVAAABQAAAAAAAACgVAAAQFQAAAUAAAABAAAAsFQAAFBUAAABAAAAAAAAAKBUAABgVAAAAQAAAAEAAACwVAAAcFQAAAFWAAAAAAAAwFQAAMBUAAABVgAAAQAAANBUAADQVAAAAAEDAwECAwMFBgcHBgYHBwABAwMBAgMDBQYHBwYGBwcFBgcHBgYHBwgICAgICAgIBQYHBwYGBwcICAgICAgICAECAwMCAgMDBgYHBwYGBwcBAgMDAgIDAwYGBwcGBgcHBgYHBwYGBwcICAgICAgICAYGBwcGBgcHCAgICAgICAgDAwQEAwMEBAcHBwcHBwcHAwMEBAMDBAQHBwcHBwcHBwcHBwcHBwcHCAgICAgICAgHBwcHBwcHBwgICAgICAgIAwMEBAMDBAQHBwcHBwcHBwMDBAQDAwQEBwcHBwcHBwcHBwcHBwcHBwgICAgICAgIBwcHBwcHBwcICAgICAgICAECAwMCAgMDBgYHBwYGBwcBAgMDAgIDAwYGBwcGBgcHBgYHBwYGBwcICAgICAgICAYGBwcGBgcHCAgICAgICAgCAgMDAgIDAwYGBwcGBgcHAgIDAwICAwMGBgcHBgYHBwYGBwcGBgcHCAgICAgICAgGBgcHBgYHBwgICAgICAgIAwMEBAMDBAQHBwcHBwcHBwMDBAQDAwQEBwcHBwcHBwcHBwcHBwcHBwgICAgICAgIBwcHBwcHBwcICAgICAgICAMDBAQDAwQEBwcHBwcHBwcDAwQEAwMEBAcHBwcHBwcHBwcHBwcHBwcICAgICAgICAcHBwcHBwcHCAgICAgICAgAAQUGAQIGBgMDBwcDAwcHAAEFBgECBgYDAwcHAwMHBwMDBwcDAwcHBAQHBwQEBwcDAwcHAwMHBwQEBwcEBAcHAQIGBgICBgYDAwcHAwMHBwECBgYCAgYGAwMHBwMDBwcDAwcHAwMHBwQEBwcEBAcHAwMHBwMDBwcEBAcHBAQHBwUGCAgGBggIBwcICAcHCAgFBggIBgYICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgGBggIBgYICAcHCAgHBwgIBgYICAYGCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIAQIGBgICBgYDAwcHAwMHBwECBgYCAgYGAwMHBwMDBwcDAwcHAwMHBwQEBwcEBAcHAwMHBwMDBwcEBAcHBAQHBwICBgYCAgYGAwMHBwMDBwcCAgYGAgIGBgMDBwcDAwcHAwMHBwMDBwcEBAcHBAQHBwMDBwcDAwcHBAQHBwQEBwcGBggIBgYICAcHCAgHBwgIBgYICAYGCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBgYICAYGCAgHBwgIBwcICAYGCAgGBggIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAcHCAgHBwgIBwcICAABAwMBAgMDBQYHBwYGBwcAAQMDAQIDAwUGBwcGBgcHBQYHBwYGBwcICAgICAgICAUGBwcGBgcHCAgICAgICAgBAgMDAgIDAwYGBwcGBgcHAQIDAwICAwMGBgcHBgYHBwYGBwcGBgcHCAgICAgICAgGBgcHBgYHBwgICAgICAgIAwMEBAMDBAQHBwcHBwcHBwMDBAQDAwQEBwcHBwcHBwcHBwcHBwcHBwgICAgICAgIBwcHBwcHBwcICAgICAgICAMDBAQDAwQEBwcHBwcHBwcDAwQEAwMEBAcHBwcHBwcHBwcHBwcHBwcICAgICAgICAcHBwcHBwcHCAgICAgICAgBAgMDAgIDAwYGBwcGBgcHAQIDAwICAwMGBgcHBgYHBwYGBwcGBgcHCAgICAgICAgGBgcHBgYHBwgICAgICAgIAgIDAwICAwMGBgcHBgYHBwICAwMCAgMDBgYHBwYGBwcGBgcHBgYHBwgICAgICAgIBgYHBwYGBwcICAgICAgICAMDBAQDAwQEBwcHBwcHBwcDAwQEAwMEBAcHBwcHBwcHBwcHBwcHBwcICAgICAgICAcHBwcHBwcHCAgICAgICAgDAwQEAwMEBAcHBwcHBwcHAwMEBAMDBAQHBwcHBwcHBwcHBwcHBwcHCAgICAgICAgHBwcHBwcHBwgICAgICAgIAAMBBAMGBAcBBAIFBAcFBwADAQQDBgQHAQQCBQQHBQcBBAIFBAcFBwIFAgUFBwUHAQQCBQQHBQcCBQIFBQcFBwMGBAcGCAcIBAcFBwcIBwgDBgQHBggHCAQHBQcHCAcIBAcFBwcIBwgFBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgBBAIFBAcFBwIFAgUFBwUHAQQCBQQHBQcCBQIFBQcFBwIFAgUFBwUHAgUCBQUHBQcCBQIFBQcFBwIFAgUFBwUHBAcFBwcIBwgFBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAUHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAMGBAcGCAcIBAcFBwcIBwgDBgQHBggHCAQHBQcHCAcIBAcFBwcIBwgFBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgGCAcICAgICAcIBwgICAgIBggHCAgICAgHCAcICAgICAcIBwgICAgIBwgHCAgICAgHCAcICAgICAcIBwgICAgIBAcFBwcIBwgFBwUHBwgHCAQHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAUHBQcHCAcIBQcFBwcIBwgFBwUHBwgHCAcIBwgICAgIBwgHCAgICAgHCAcICAgICAcIBwgICAgIBwgHCAgICAgHCAcICAgICAcIBwgICAgIBwgHCAgICAgJCQoKCQkKCgwMDQsMDA0LCQkKCgkJCgoMDAsNDAwLDQwMDQ0MDAsLDAkNCgkMCgsMDAsLDAwNDQwJCwoJDAoNCQkKCgkJCgoMDA0LDAwNCwkJCgoJCQoKDAwLDQwMCw0MDA0NDAwLCwwJDQoJDAoLDAwLCwwMDQ0MCQsKCQwKDQoKCgoKCgoKDQsNCw0LDQsKCgkJCgoJCQ0LDAwNCwwMDQ0NDQsLCwsNCg0KCgsKCw0NDAwLCwwMDQoMCQoLCQwKCgkJCgoJCQsNDAwLDQwMCgoKCgoKCgoLDQsNCw0LDQsLDAwNDQwMCwoMCQoNCQwLCwsLDQ0NDQsKCwoKDQoNAEHpuwELNwEAAQABAAEAAAEBAAABAQABAAEAAQABAAAAAAEBAQEAAAAAAAEAAQAAAAABAQEBAAAAAQABAQEAQam8AQs3AQABAAEAAQAAAQEAAAEBAAEAAQABAAEAAAAAAQEBAQAAAAAAAQABAAAAAAEBAQEAAAABAAEBAQBB6bwBCwcBAAEAAQABAEH5vAELlQIBAAEAAQABAAAAAAEBAQEAAAAAAAEAAQAAAAABAQEBAAAAAAABAAEBAQAAAQEAAAABAAEAAQABAQEBAQEBAQEAAQABAAEAAQAAAAABAQEBAAEAAAEBAAEAAAAAAQEBAQABAAEBAQEBAgAAAAQAAAAEAAAACAAAAJD\u002FAAAMAAAAGAAAAFL\u002FAAAUAAAAGQAAAFP\u002FAAAUAAAAGgAAAF7\u002FAAAUAAAAGwAAAFz\u002FAAAUAAAAHAAAAF3\u002FAAAUAAAAHQAAAF\u002F\u002FAAAUAAAAHgAAAFH\u002FAAACAAAAHwAAAFX\u002FAAAEAAAAIAAAAFf\u002FAAAEAAAAIQAAAFj\u002FAAAQAAAAIgAAAGD\u002FAAAEAAAAIwAAAGH\u002FAAAQAAAAJAAAAJH\u002FAEGYvwELZWP\u002FAAAEAAAAJQAAAGT\u002FAAAUAAAAJgAAAHT\u002FAAAUAAAAJwAAAHj\u002FAAAEAAAAKAAAAFD\u002FAAAEAAAAKQAAAFn\u002FAAAEAAAAKgAAAHX\u002FAAAUAAAAKwAAAHf\u002FAAAUAAAALAAAAAAAAAAUAEGQwAELNS0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAAICBQajYAAABweXRmNwAAAGgycGo4AEHQwAELMnJkaGk5AAAAcmxvYzoAAABjY3BiOwAAAHJsY3A8AAAAcGFtYz0AAABmZWRjPgAAAHhiAEGQwQELQRkACwAZGRkAAAAABQAAAAAAAAkAAAAACwAAAAAAAAAAGQAKChkZGQMKBwABAAkLGAAACQYLAAALAAYZAAAAGRkZAEHhwQELIQ4AAAAAAAAAABkACw0ZGRkADQAAAgAJDgAAAAkADgAADgBBm8IBCwEMAEGnwgELFRMAAAAAEwAAAAAJDAAAAAAADAAADABB1cIBCwEQAEHhwgELFQ8AAAAEDwAAAAAJEAAAAAAAEAAAEABBj8MBCwESAEGbwwELHhEAAAAAEQAAAAAJEgAAAAAAEgAAEgAAGgAAABoaGgBB0sMBCw4aAAAAGhoaAAAAAAAACQBBg8QBCwEUAEGPxAELFRcAAAAAFwAAAAAJFAAAAAAAFAAAFABBvcQBCwEWAEHJxAELJxUAAAAAFQAAAAAJFgAAAAAAFgAAFgAAMDEyMzQ1Njc4OUFCQ0RFRgBB8cQBCwhsAQAAAAAABQBBhMUBCwFpAEGcxQELDmoAAABrAAAA+GcAAAAEAEG0xQELAQEAQcTFAQsF\u002F\u002F\u002F\u002F\u002Fwo=\\\";return f}var wasmBinaryFile;function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}var binary=tryParseAsDataURI(file);if(binary){return binary}if(readBinary){return readBinary(file)}throw'sync fetching of the wasm failed: you can preload it to Module[\\\"wasmBinary\\\"] manually, or emcc.py will do that for you when generating HTML (but not JS)'}function instantiateSync(file,info){var module;var binary=getBinarySync(file);module=new WebAssembly.Module(binary);var instance=new WebAssembly.Instance(module,info);return[instance,module]}function getWasmImports(){return{\\\"a\\\":wasmImports}}function createWasm(){var info=getWasmImports();function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports[\\\"i\\\"];updateMemoryViews();addOnInit(wasmExports[\\\"j\\\"]);removeRunDependency(\\\"wasm-instantiate\\\");return wasmExports}addRunDependency(\\\"wasm-instantiate\\\");if(Module[\\\"instantiateWasm\\\"]){try{return Module[\\\"instantiateWasm\\\"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);readyPromiseReject(e)}}if(!wasmBinaryFile)wasmBinaryFile=findWasmBinary();var result=instantiateSync(wasmBinaryFile,info);return receiveInstance(result[0])}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module[\\\"noExitRuntime\\\"]||true;var __emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var getHeapMax=()=>2147483648;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)\u002F65536;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown\u003C=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2\u002FcutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||\\\".\u002Fthis.program\\\";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator==\\\"object\\\"&&navigator.languages&&navigator.languages[0]||\\\"C\\\").replace(\\\"-\\\",\\\"_\\\")+\\\".UTF-8\\\";var env={\\\"USER\\\":\\\"web_user\\\",\\\"LOGNAME\\\":\\\"web_user\\\",\\\"PATH\\\":\\\"\u002F\\\",\\\"PWD\\\":\\\"\u002F\\\",\\\"HOME\\\":\\\"\u002Fhome\u002Fweb_user\\\",\\\"LANG\\\":lang,\\\"_\\\":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i\u003Cstr.length;++i){HEAP8[buffer++]=str.charCodeAt(i)}HEAP8[buffer]=0};var _environ_get=(__environ,environ_buf)=>{var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>2]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var printCharBuffers=[null,[],[]];var UTF8Decoder=typeof TextDecoder!=\\\"undefined\\\"?new TextDecoder(\\\"utf8\\\"):undefined;var UTF8ArrayToString=(heapOrArray,idx,maxBytesToRead)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str=\\\"\\\";while(idx\u003CendPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)\u003C\u003C6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224){u0=(u0&15)\u003C\u003C12|u1\u003C\u003C6|u2}else{u0=(u0&7)\u003C\u003C18|u1\u003C\u003C12|u2\u003C\u003C6|heapOrArray[idx++]&63}if(u0\u003C65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str};var printChar=(stream,curr)=>{var buffer=printCharBuffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\\\"\\\";var _fd_write=(fd,iov,iovcnt,pnum)=>{var num=0;for(var i=0;i\u003Ciovcnt;i++){var ptr=HEAPU32[iov>>2];var len=HEAPU32[iov+4>>2];iov+=8;for(var j=0;j\u003Clen;j++){printChar(fd,HEAPU8[ptr+j])}num+=len}HEAPU32[pnum>>2]=num;return 0};function _jsPrintWarning(message_ptr){const message=UTF8ToString(message_ptr);(Module.warn||console.warn)(`OpenJPEG: ${message}`)}function _setImageData(array_ptr,array_size){Module.imageData=new Uint8ClampedArray(Module.HEAPU8.subarray(array_ptr,array_ptr+array_size))}function _storeErrorMessage(message_ptr){const message=UTF8ToString(message_ptr);if(!Module.errorMessages){Module.errorMessages=message}else{Module.errorMessages+=\\\"\\\\n\\\"+message}}var wasmImports={f:__emscripten_memcpy_js,b:_emscripten_resize_heap,c:_environ_get,d:_environ_sizes_get,e:_fd_write,g:_jsPrintWarning,h:_setImageData,a:_storeErrorMessage};var wasmExports=createWasm();var ___wasm_call_ctors=wasmExports[\\\"j\\\"];var _malloc=Module[\\\"_malloc\\\"]=wasmExports[\\\"k\\\"];var _free=Module[\\\"_free\\\"]=wasmExports[\\\"l\\\"];var _jp2_decode=Module[\\\"_jp2_decode\\\"]=wasmExports[\\\"n\\\"];var __emscripten_stack_restore=wasmExports[\\\"_emscripten_stack_restore\\\"];var __emscripten_stack_alloc=wasmExports[\\\"_emscripten_stack_alloc\\\"];var _emscripten_stack_get_current=wasmExports[\\\"emscripten_stack_get_current\\\"];var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\\\"calledRun\\\"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module[\\\"onRuntimeInitialized\\\"])Module[\\\"onRuntimeInitialized\\\"]();postRun()}if(Module[\\\"setStatus\\\"]){Module[\\\"setStatus\\\"](\\\"Running...\\\");setTimeout(function(){setTimeout(function(){Module[\\\"setStatus\\\"](\\\"\\\")},1);doRun()},1)}else{doRun()}}if(Module[\\\"preInit\\\"]){if(typeof Module[\\\"preInit\\\"]==\\\"function\\\")Module[\\\"preInit\\\"]=[Module[\\\"preInit\\\"]];while(Module[\\\"preInit\\\"].length>0){Module[\\\"preInit\\\"].pop()()}}run();moduleRtn=Module;\\n\\n\\n  return moduleRtn;\\n}\\n);\\n})();\\nexport default OpenJPEG;\\n\",\"\u002F* Copyright 2024 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { BaseException, warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport OpenJPEG from \\\"..\u002F..\u002Fexternal\u002Fopenjpeg\u002Fopenjpeg.js\\\";\\nimport { Stream } from \\\".\u002Fstream.js\\\";\\n\\nclass JpxError extends BaseException {\\n  constructor(msg) {\\n    super(msg, \\\"JpxError\\\");\\n  }\\n}\\n\\nclass JpxImage {\\n  static #module = null;\\n\\n  static decode(data, ignoreColorSpace = false) {\\n    this.#module ||= OpenJPEG({ warn });\\n    const imageData = this.#module.decode(data, ignoreColorSpace);\\n    if (typeof imageData === \\\"string\\\") {\\n      throw new JpxError(imageData);\\n    }\\n    return imageData;\\n  }\\n\\n  static cleanup() {\\n    this.#module = null;\\n  }\\n\\n  static parseImageProperties(stream) {\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"IMAGE_DECODERS\\\")) {\\n      if (stream instanceof ArrayBuffer || ArrayBuffer.isView(stream)) {\\n        stream = new Stream(stream);\\n      } else {\\n        throw new JpxError(\\\"Invalid data format, must be a TypedArray.\\\");\\n      }\\n    }\\n    \u002F\u002F No need to use OpenJPEG here since we're only getting very basic\\n    \u002F\u002F information which are located in the first bytes of the file.\\n    let newByte = stream.getByte();\\n    while (newByte >= 0) {\\n      const oldByte = newByte;\\n      newByte = stream.getByte();\\n      const code = (oldByte \u003C\u003C 8) | newByte;\\n      \u002F\u002F Image and tile size (SIZ)\\n      if (code === 0xff51) {\\n        stream.skip(4);\\n        const Xsiz = stream.getInt32() >>> 0; \u002F\u002F Byte 4\\n        const Ysiz = stream.getInt32() >>> 0; \u002F\u002F Byte 8\\n        const XOsiz = stream.getInt32() >>> 0; \u002F\u002F Byte 12\\n        const YOsiz = stream.getInt32() >>> 0; \u002F\u002F Byte 16\\n        stream.skip(16);\\n        const Csiz = stream.getUint16(); \u002F\u002F Byte 36\\n        return {\\n          width: Xsiz - XOsiz,\\n          height: Ysiz - YOsiz,\\n          \u002F\u002F Results are always returned as `Uint8ClampedArray`s.\\n          bitsPerComponent: 8,\\n          componentsCount: Csiz,\\n        };\\n      }\\n    }\\n    throw new JpxError(\\\"No size marker found in JPX stream\\\");\\n  }\\n}\\n\\nexport { JpxError, JpxImage };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { DecodeStream } from \\\".\u002Fdecode_stream.js\\\";\\nimport { JpxImage } from \\\".\u002Fjpx.js\\\";\\nimport { shadow } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\n\u002F**\\n * For JPEG 2000's we use a library to decode these images and\\n * the stream behaves like all the other DecodeStreams.\\n *\u002F\\nclass JpxStream extends DecodeStream {\\n  constructor(stream, maybeLength, params) {\\n    super(maybeLength);\\n\\n    this.stream = stream;\\n    this.dict = stream.dict;\\n    this.maybeLength = maybeLength;\\n    this.params = params;\\n  }\\n\\n  get bytes() {\\n    \u002F\u002F If `this.maybeLength` is null, we'll get the entire stream.\\n    return shadow(this, \\\"bytes\\\", this.stream.getBytes(this.maybeLength));\\n  }\\n\\n  ensureBuffer(requested) {\\n    \u002F\u002F No-op, since `this.readBlock` will always parse the entire image and\\n    \u002F\u002F directly insert all of its data into `this.buffer`.\\n  }\\n\\n  readBlock(ignoreColorSpace) {\\n    if (this.eof) {\\n      return;\\n    }\\n\\n    this.buffer = JpxImage.decode(this.bytes, ignoreColorSpace);\\n    this.bufferLength = this.buffer.length;\\n    this.eof = true;\\n  }\\n}\\n\\nexport { JpxStream };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { DecodeStream } from \\\".\u002Fdecode_stream.js\\\";\\n\\nclass LZWStream extends DecodeStream {\\n  constructor(str, maybeLength, earlyChange) {\\n    super(maybeLength);\\n\\n    this.str = str;\\n    this.dict = str.dict;\\n    this.cachedData = 0;\\n    this.bitsCached = 0;\\n\\n    const maxLzwDictionarySize = 4096;\\n    const lzwState = {\\n      earlyChange,\\n      codeLength: 9,\\n      nextCode: 258,\\n      dictionaryValues: new Uint8Array(maxLzwDictionarySize),\\n      dictionaryLengths: new Uint16Array(maxLzwDictionarySize),\\n      dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize),\\n      currentSequence: new Uint8Array(maxLzwDictionarySize),\\n      currentSequenceLength: 0,\\n    };\\n    for (let i = 0; i \u003C 256; ++i) {\\n      lzwState.dictionaryValues[i] = i;\\n      lzwState.dictionaryLengths[i] = 1;\\n    }\\n    this.lzwState = lzwState;\\n  }\\n\\n  readBits(n) {\\n    let bitsCached = this.bitsCached;\\n    let cachedData = this.cachedData;\\n    while (bitsCached \u003C n) {\\n      const c = this.str.getByte();\\n      if (c === -1) {\\n        this.eof = true;\\n        return null;\\n      }\\n      cachedData = (cachedData \u003C\u003C 8) | c;\\n      bitsCached += 8;\\n    }\\n    this.bitsCached = bitsCached -= n;\\n    this.cachedData = cachedData;\\n    this.lastCode = null;\\n    return (cachedData >>> bitsCached) & ((1 \u003C\u003C n) - 1);\\n  }\\n\\n  readBlock() {\\n    const blockSize = 512,\\n      decodedSizeDelta = blockSize;\\n    let estimatedDecodedSize = blockSize * 2;\\n    let i, j, q;\\n\\n    const lzwState = this.lzwState;\\n    if (!lzwState) {\\n      return; \u002F\u002F eof was found\\n    }\\n\\n    const earlyChange = lzwState.earlyChange;\\n    let nextCode = lzwState.nextCode;\\n    const dictionaryValues = lzwState.dictionaryValues;\\n    const dictionaryLengths = lzwState.dictionaryLengths;\\n    const dictionaryPrevCodes = lzwState.dictionaryPrevCodes;\\n    let codeLength = lzwState.codeLength;\\n    let prevCode = lzwState.prevCode;\\n    const currentSequence = lzwState.currentSequence;\\n    let currentSequenceLength = lzwState.currentSequenceLength;\\n\\n    let decodedLength = 0;\\n    let currentBufferLength = this.bufferLength;\\n    let buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\\n\\n    for (i = 0; i \u003C blockSize; i++) {\\n      const code = this.readBits(codeLength);\\n      const hasPrev = currentSequenceLength > 0;\\n      if (code \u003C 256) {\\n        currentSequence[0] = code;\\n        currentSequenceLength = 1;\\n      } else if (code >= 258) {\\n        if (code \u003C nextCode) {\\n          currentSequenceLength = dictionaryLengths[code];\\n          for (j = currentSequenceLength - 1, q = code; j >= 0; j--) {\\n            currentSequence[j] = dictionaryValues[q];\\n            q = dictionaryPrevCodes[q];\\n          }\\n        } else {\\n          currentSequence[currentSequenceLength++] = currentSequence[0];\\n        }\\n      } else if (code === 256) {\\n        codeLength = 9;\\n        nextCode = 258;\\n        currentSequenceLength = 0;\\n        continue;\\n      } else {\\n        this.eof = true;\\n        delete this.lzwState;\\n        break;\\n      }\\n\\n      if (hasPrev) {\\n        dictionaryPrevCodes[nextCode] = prevCode;\\n        dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1;\\n        dictionaryValues[nextCode] = currentSequence[0];\\n        nextCode++;\\n        codeLength =\\n          (nextCode + earlyChange) & (nextCode + earlyChange - 1)\\n            ? codeLength\\n            : Math.min(\\n                Math.log(nextCode + earlyChange) \u002F 0.6931471805599453 + 1,\\n                12\\n              ) | 0;\\n      }\\n      prevCode = code;\\n\\n      decodedLength += currentSequenceLength;\\n      if (estimatedDecodedSize \u003C decodedLength) {\\n        do {\\n          estimatedDecodedSize += decodedSizeDelta;\\n        } while (estimatedDecodedSize \u003C decodedLength);\\n        buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\\n      }\\n      for (j = 0; j \u003C currentSequenceLength; j++) {\\n        buffer[currentBufferLength++] = currentSequence[j];\\n      }\\n    }\\n    lzwState.nextCode = nextCode;\\n    lzwState.codeLength = codeLength;\\n    lzwState.prevCode = prevCode;\\n    lzwState.currentSequenceLength = currentSequenceLength;\\n\\n    this.bufferLength = currentBufferLength;\\n  }\\n}\\n\\nexport { LZWStream };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { DecodeStream } from \\\".\u002Fdecode_stream.js\\\";\\nimport { Dict } from \\\".\u002Fprimitives.js\\\";\\nimport { FormatError } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nclass PredictorStream extends DecodeStream {\\n  constructor(str, maybeLength, params) {\\n    super(maybeLength);\\n\\n    if (!(params instanceof Dict)) {\\n      return str; \u002F\u002F no prediction\\n    }\\n    const predictor = (this.predictor = params.get(\\\"Predictor\\\") || 1);\\n\\n    if (predictor \u003C= 1) {\\n      return str; \u002F\u002F no prediction\\n    }\\n    if (predictor !== 2 && (predictor \u003C 10 || predictor > 15)) {\\n      throw new FormatError(`Unsupported predictor: ${predictor}`);\\n    }\\n\\n    this.readBlock = predictor === 2 ? this.readBlockTiff : this.readBlockPng;\\n\\n    this.str = str;\\n    this.dict = str.dict;\\n\\n    const colors = (this.colors = params.get(\\\"Colors\\\") || 1);\\n    const bits = (this.bits = params.get(\\\"BPC\\\", \\\"BitsPerComponent\\\") || 8);\\n    const columns = (this.columns = params.get(\\\"Columns\\\") || 1);\\n\\n    this.pixBytes = (colors * bits + 7) >> 3;\\n    this.rowBytes = (columns * colors * bits + 7) >> 3;\\n\\n    return this;\\n  }\\n\\n  readBlockTiff() {\\n    const rowBytes = this.rowBytes;\\n\\n    const bufferLength = this.bufferLength;\\n    const buffer = this.ensureBuffer(bufferLength + rowBytes);\\n\\n    const bits = this.bits;\\n    const colors = this.colors;\\n\\n    const rawBytes = this.str.getBytes(rowBytes);\\n    this.eof = !rawBytes.length;\\n    if (this.eof) {\\n      return;\\n    }\\n\\n    let inbuf = 0,\\n      outbuf = 0;\\n    let inbits = 0,\\n      outbits = 0;\\n    let pos = bufferLength;\\n    let i;\\n\\n    if (bits === 1 && colors === 1) {\\n      \u002F\u002F Optimized version of the loop in the \\\"else\\\"-branch\\n      \u002F\u002F for 1 bit-per-component and 1 color TIFF images.\\n      for (i = 0; i \u003C rowBytes; ++i) {\\n        let c = rawBytes[i] ^ inbuf;\\n        c ^= c >> 1;\\n        c ^= c >> 2;\\n        c ^= c >> 4;\\n        inbuf = (c & 1) \u003C\u003C 7;\\n        buffer[pos++] = c;\\n      }\\n    } else if (bits === 8) {\\n      for (i = 0; i \u003C colors; ++i) {\\n        buffer[pos++] = rawBytes[i];\\n      }\\n      for (; i \u003C rowBytes; ++i) {\\n        buffer[pos] = buffer[pos - colors] + rawBytes[i];\\n        pos++;\\n      }\\n    } else if (bits === 16) {\\n      const bytesPerPixel = colors * 2;\\n      for (i = 0; i \u003C bytesPerPixel; ++i) {\\n        buffer[pos++] = rawBytes[i];\\n      }\\n      for (; i \u003C rowBytes; i += 2) {\\n        const sum =\\n          ((rawBytes[i] & 0xff) \u003C\u003C 8) +\\n          (rawBytes[i + 1] & 0xff) +\\n          ((buffer[pos - bytesPerPixel] & 0xff) \u003C\u003C 8) +\\n          (buffer[pos - bytesPerPixel + 1] & 0xff);\\n        buffer[pos++] = (sum >> 8) & 0xff;\\n        buffer[pos++] = sum & 0xff;\\n      }\\n    } else {\\n      const compArray = new Uint8Array(colors + 1);\\n      const bitMask = (1 \u003C\u003C bits) - 1;\\n      let j = 0,\\n        k = bufferLength;\\n      const columns = this.columns;\\n      for (i = 0; i \u003C columns; ++i) {\\n        for (let kk = 0; kk \u003C colors; ++kk) {\\n          if (inbits \u003C bits) {\\n            inbuf = (inbuf \u003C\u003C 8) | (rawBytes[j++] & 0xff);\\n            inbits += 8;\\n          }\\n          compArray[kk] =\\n            (compArray[kk] + (inbuf >> (inbits - bits))) & bitMask;\\n          inbits -= bits;\\n          outbuf = (outbuf \u003C\u003C bits) | compArray[kk];\\n          outbits += bits;\\n          if (outbits >= 8) {\\n            buffer[k++] = (outbuf >> (outbits - 8)) & 0xff;\\n            outbits -= 8;\\n          }\\n        }\\n      }\\n      if (outbits > 0) {\\n        buffer[k++] =\\n          (outbuf \u003C\u003C (8 - outbits)) + (inbuf & ((1 \u003C\u003C (8 - outbits)) - 1));\\n      }\\n    }\\n    this.bufferLength += rowBytes;\\n  }\\n\\n  readBlockPng() {\\n    const rowBytes = this.rowBytes;\\n    const pixBytes = this.pixBytes;\\n\\n    const predictor = this.str.getByte();\\n    const rawBytes = this.str.getBytes(rowBytes);\\n    this.eof = !rawBytes.length;\\n    if (this.eof) {\\n      return;\\n    }\\n\\n    const bufferLength = this.bufferLength;\\n    const buffer = this.ensureBuffer(bufferLength + rowBytes);\\n\\n    let prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);\\n    if (prevRow.length === 0) {\\n      prevRow = new Uint8Array(rowBytes);\\n    }\\n\\n    let i,\\n      j = bufferLength,\\n      up,\\n      c;\\n    switch (predictor) {\\n      case 0:\\n        for (i = 0; i \u003C rowBytes; ++i) {\\n          buffer[j++] = rawBytes[i];\\n        }\\n        break;\\n      case 1:\\n        for (i = 0; i \u003C pixBytes; ++i) {\\n          buffer[j++] = rawBytes[i];\\n        }\\n        for (; i \u003C rowBytes; ++i) {\\n          buffer[j] = (buffer[j - pixBytes] + rawBytes[i]) & 0xff;\\n          j++;\\n        }\\n        break;\\n      case 2:\\n        for (i = 0; i \u003C rowBytes; ++i) {\\n          buffer[j++] = (prevRow[i] + rawBytes[i]) & 0xff;\\n        }\\n        break;\\n      case 3:\\n        for (i = 0; i \u003C pixBytes; ++i) {\\n          buffer[j++] = (prevRow[i] >> 1) + rawBytes[i];\\n        }\\n        for (; i \u003C rowBytes; ++i) {\\n          buffer[j] =\\n            (((prevRow[i] + buffer[j - pixBytes]) >> 1) + rawBytes[i]) & 0xff;\\n          j++;\\n        }\\n        break;\\n      case 4:\\n        \u002F\u002F we need to save the up left pixels values. the simplest way\\n        \u002F\u002F is to create a new buffer\\n        for (i = 0; i \u003C pixBytes; ++i) {\\n          up = prevRow[i];\\n          c = rawBytes[i];\\n          buffer[j++] = up + c;\\n        }\\n        for (; i \u003C rowBytes; ++i) {\\n          up = prevRow[i];\\n          const upLeft = prevRow[i - pixBytes];\\n          const left = buffer[j - pixBytes];\\n          const p = left + up - upLeft;\\n\\n          let pa = p - left;\\n          if (pa \u003C 0) {\\n            pa = -pa;\\n          }\\n          let pb = p - up;\\n          if (pb \u003C 0) {\\n            pb = -pb;\\n          }\\n          let pc = p - upLeft;\\n          if (pc \u003C 0) {\\n            pc = -pc;\\n          }\\n\\n          c = rawBytes[i];\\n          if (pa \u003C= pb && pa \u003C= pc) {\\n            buffer[j++] = left + c;\\n          } else if (pb \u003C= pc) {\\n            buffer[j++] = up + c;\\n          } else {\\n            buffer[j++] = upLeft + c;\\n          }\\n        }\\n        break;\\n      default:\\n        throw new FormatError(`Unsupported predictor: ${predictor}`);\\n    }\\n    this.bufferLength += rowBytes;\\n  }\\n}\\n\\nexport { PredictorStream };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { DecodeStream } from \\\".\u002Fdecode_stream.js\\\";\\n\\nclass RunLengthStream extends DecodeStream {\\n  constructor(str, maybeLength) {\\n    super(maybeLength);\\n\\n    this.str = str;\\n    this.dict = str.dict;\\n  }\\n\\n  readBlock() {\\n    \u002F\u002F The repeatHeader has following format. The first byte defines type of run\\n    \u002F\u002F and amount of bytes to repeat\u002Fcopy: n = 0 through 127 - copy next n bytes\\n    \u002F\u002F (in addition to the second byte from the header), n = 129 through 255 -\\n    \u002F\u002F duplicate the second byte from the header (257 - n) times, n = 128 - end.\\n    const repeatHeader = this.str.getBytes(2);\\n    if (!repeatHeader || repeatHeader.length \u003C 2 || repeatHeader[0] === 128) {\\n      this.eof = true;\\n      return;\\n    }\\n\\n    let buffer;\\n    let bufferLength = this.bufferLength;\\n    let n = repeatHeader[0];\\n    if (n \u003C 128) {\\n      \u002F\u002F copy n bytes\\n      buffer = this.ensureBuffer(bufferLength + n + 1);\\n      buffer[bufferLength++] = repeatHeader[1];\\n      if (n > 0) {\\n        const source = this.str.getBytes(n);\\n        buffer.set(source, bufferLength);\\n        bufferLength += n;\\n      }\\n    } else {\\n      n = 257 - n;\\n      const b = repeatHeader[1];\\n      buffer = this.ensureBuffer(bufferLength + n + 1);\\n      for (let i = 0; i \u003C n; i++) {\\n        buffer[bufferLength++] = b;\\n      }\\n    }\\n    this.bufferLength = bufferLength;\\n  }\\n}\\n\\nexport { RunLengthStream };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  assert,\\n  bytesToString,\\n  FormatError,\\n  info,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { Cmd, Dict, EOF, isCmd, Name, Ref } from \\\".\u002Fprimitives.js\\\";\\nimport {\\n  isWhiteSpace,\\n  MissingDataException,\\n  ParserEOFException,\\n} from \\\".\u002Fcore_utils.js\\\";\\nimport { NullStream, Stream } from \\\".\u002Fstream.js\\\";\\nimport { Ascii85Stream } from \\\".\u002Fascii_85_stream.js\\\";\\nimport { AsciiHexStream } from \\\".\u002Fascii_hex_stream.js\\\";\\nimport { CCITTFaxStream } from \\\".\u002Fccitt_stream.js\\\";\\nimport { FlateStream } from \\\".\u002Fflate_stream.js\\\";\\nimport { Jbig2Stream } from \\\".\u002Fjbig2_stream.js\\\";\\nimport { JpegStream } from \\\".\u002Fjpeg_stream.js\\\";\\nimport { JpxStream } from \\\".\u002Fjpx_stream.js\\\";\\nimport { LZWStream } from \\\".\u002Flzw_stream.js\\\";\\nimport { PredictorStream } from \\\".\u002Fpredictor_stream.js\\\";\\nimport { RunLengthStream } from \\\".\u002Frun_length_stream.js\\\";\\n\\nconst MAX_LENGTH_TO_CACHE = 1000;\\n\\nfunction getInlineImageCacheKey(bytes) {\\n  const strBuf = [],\\n    ii = bytes.length;\\n  let i = 0;\\n  while (i \u003C ii - 1) {\\n    strBuf.push((bytes[i++] \u003C\u003C 8) | bytes[i++]);\\n  }\\n  \u002F\u002F Handle an odd number of elements.\\n  if (i \u003C ii) {\\n    strBuf.push(bytes[i]);\\n  }\\n  \u002F\u002F We purposely include the \\\"raw\\\" length in the cacheKey, to prevent any\\n  \u002F\u002F possible issues with hash collisions in the inline image cache.\\n  \u002F\u002F Here we also assume that `strBuf` is never larger than 8192 elements,\\n  \u002F\u002F please refer to the `bytesToString` implementation.\\n  return ii + \\\"_\\\" + String.fromCharCode.apply(null, strBuf);\\n}\\n\\nclass Parser {\\n  constructor({ lexer, xref, allowStreams = false, recoveryMode = false }) {\\n    this.lexer = lexer;\\n    this.xref = xref;\\n    this.allowStreams = allowStreams;\\n    this.recoveryMode = recoveryMode;\\n\\n    this.imageCache = Object.create(null);\\n    this._imageId = 0;\\n    this.refill();\\n  }\\n\\n  refill() {\\n    this.buf1 = this.lexer.getObj();\\n    this.buf2 = this.lexer.getObj();\\n  }\\n\\n  shift() {\\n    if (this.buf2 instanceof Cmd && this.buf2.cmd === \\\"ID\\\") {\\n      this.buf1 = this.buf2;\\n      this.buf2 = null;\\n    } else {\\n      this.buf1 = this.buf2;\\n      this.buf2 = this.lexer.getObj();\\n    }\\n  }\\n\\n  tryShift() {\\n    try {\\n      this.shift();\\n      return true;\\n    } catch (e) {\\n      if (e instanceof MissingDataException) {\\n        throw e;\\n      }\\n      \u002F\u002F Upon failure, the caller should reset this.lexer.pos to a known good\\n      \u002F\u002F state and call this.shift() twice to reset the buffers.\\n      return false;\\n    }\\n  }\\n\\n  getObj(cipherTransform = null) {\\n    const buf1 = this.buf1;\\n    this.shift();\\n\\n    if (buf1 instanceof Cmd) {\\n      switch (buf1.cmd) {\\n        case \\\"BI\\\": \u002F\u002F inline image\\n          return this.makeInlineImage(cipherTransform);\\n        case \\\"[\\\": \u002F\u002F array\\n          const array = [];\\n          while (!isCmd(this.buf1, \\\"]\\\") && this.buf1 !== EOF) {\\n            array.push(this.getObj(cipherTransform));\\n          }\\n          if (this.buf1 === EOF) {\\n            if (this.recoveryMode) {\\n              return array;\\n            }\\n            throw new ParserEOFException(\\\"End of file inside array.\\\");\\n          }\\n          this.shift();\\n          return array;\\n        case \\\"\u003C\u003C\\\": \u002F\u002F dictionary or stream\\n          const dict = new Dict(this.xref);\\n          while (!isCmd(this.buf1, \\\">>\\\") && this.buf1 !== EOF) {\\n            if (!(this.buf1 instanceof Name)) {\\n              info(\\\"Malformed dictionary: key must be a name object\\\");\\n              this.shift();\\n              continue;\\n            }\\n\\n            const key = this.buf1.name;\\n            this.shift();\\n            if (this.buf1 === EOF) {\\n              break;\\n            }\\n            dict.set(key, this.getObj(cipherTransform));\\n          }\\n          if (this.buf1 === EOF) {\\n            if (this.recoveryMode) {\\n              return dict;\\n            }\\n            throw new ParserEOFException(\\\"End of file inside dictionary.\\\");\\n          }\\n\\n          \u002F\u002F Stream objects are not allowed inside content streams or\\n          \u002F\u002F object streams.\\n          if (isCmd(this.buf2, \\\"stream\\\")) {\\n            return this.allowStreams\\n              ? this.makeStream(dict, cipherTransform)\\n              : dict;\\n          }\\n          this.shift();\\n          return dict;\\n        default: \u002F\u002F simple object\\n          return buf1;\\n      }\\n    }\\n\\n    if (Number.isInteger(buf1)) {\\n      \u002F\u002F indirect reference or integer\\n      if (Number.isInteger(this.buf1) && isCmd(this.buf2, \\\"R\\\")) {\\n        const ref = Ref.get(buf1, this.buf1);\\n        this.shift();\\n        this.shift();\\n        return ref;\\n      }\\n      return buf1;\\n    }\\n\\n    if (typeof buf1 === \\\"string\\\") {\\n      if (cipherTransform) {\\n        return cipherTransform.decryptString(buf1);\\n      }\\n      return buf1;\\n    }\\n\\n    \u002F\u002F simple object\\n    return buf1;\\n  }\\n\\n  \u002F**\\n   * Find the end of the stream by searching for the \u002FEI\\\\s\u002F.\\n   * @returns {number} The inline stream length.\\n   *\u002F\\n  findDefaultInlineStreamEnd(stream) {\\n    const E = 0x45,\\n      I = 0x49,\\n      SPACE = 0x20,\\n      LF = 0xa,\\n      CR = 0xd,\\n      NUL = 0x0;\\n    const { knownCommands } = this.lexer,\\n      startPos = stream.pos,\\n      n = 15;\\n    let state = 0,\\n      ch,\\n      maybeEIPos;\\n    while ((ch = stream.getByte()) !== -1) {\\n      if (state === 0) {\\n        state = ch === E ? 1 : 0;\\n      } else if (state === 1) {\\n        state = ch === I ? 2 : 0;\\n      } else {\\n        if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n          assert(state === 2, \\\"findDefaultInlineStreamEnd - invalid state.\\\");\\n        }\\n        if (ch === SPACE || ch === LF || ch === CR) {\\n          maybeEIPos = stream.pos;\\n          \u002F\u002F Let's check that the next `n` bytes are ASCII... just to be sure.\\n          const followingBytes = stream.peekBytes(n);\\n\\n          const ii = followingBytes.length;\\n          if (ii === 0) {\\n            break; \u002F\u002F The end of the stream was reached, nothing to check.\\n          }\\n          for (let i = 0; i \u003C ii; i++) {\\n            ch = followingBytes[i];\\n            if (ch === NUL && followingBytes[i + 1] !== NUL) {\\n              \u002F\u002F NUL bytes are not supposed to occur *outside* of inline\\n              \u002F\u002F images, but some PDF generators violate that assumption,\\n              \u002F\u002F thus breaking the EI detection heuristics used below.\\n              \u002F\u002F\\n              \u002F\u002F However, we can't unconditionally treat NUL bytes as \\\"ASCII\\\",\\n              \u002F\u002F since that *could* result in inline images being truncated.\\n              \u002F\u002F\\n              \u002F\u002F To attempt to address this, we'll still treat any *sequence*\\n              \u002F\u002F of NUL bytes as non-ASCII, but for a *single* NUL byte we'll\\n              \u002F\u002F continue checking the `followingBytes` (fixes issue8823.pdf).\\n              continue;\\n            }\\n            if (ch !== LF && ch !== CR && (ch \u003C SPACE || ch > 0x7f)) {\\n              \u002F\u002F Not a LF, CR, SPACE or any visible ASCII character, i.e.\\n              \u002F\u002F it's binary stuff. Resetting the state.\\n              state = 0;\\n              break;\\n            }\\n          }\\n\\n          if (state !== 2) {\\n            continue;\\n          }\\n          if (!knownCommands) {\\n            warn(\\n              \\\"findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.\\\"\\n            );\\n            continue;\\n          }\\n          \u002F\u002F Check that the \\\"EI\\\" sequence isn't part of the image data, since\\n          \u002F\u002F that would cause the image to be truncated (fixes issue11124.pdf).\\n          const tmpLexer = new Lexer(\\n            new Stream(followingBytes.slice()),\\n            knownCommands\\n          );\\n          \u002F\u002F Reduce the number of (potential) warning messages.\\n          tmpLexer._hexStringWarn = () => {};\\n          let numArgs = 0;\\n\\n          while (true) {\\n            const nextObj = tmpLexer.getObj();\\n\\n            if (nextObj === EOF) {\\n              state = 0; \u002F\u002F No valid command found, resetting the state.\\n              break;\\n            }\\n            if (nextObj instanceof Cmd) {\\n              const knownCommand = knownCommands[nextObj.cmd];\\n              if (!knownCommand) {\\n                \u002F\u002F Not a valid command, i.e. the inline image data *itself*\\n                \u002F\u002F contains an \\\"EI\\\" sequence. Resetting the state.\\n                state = 0;\\n                break;\\n              } else if (\\n                knownCommand.variableArgs\\n                  ? numArgs \u003C= knownCommand.numArgs\\n                  : numArgs === knownCommand.numArgs\\n              ) {\\n                break; \u002F\u002F Valid command found.\\n              }\\n              numArgs = 0;\\n              continue;\\n            }\\n            numArgs++;\\n          }\\n\\n          if (state === 2) {\\n            break; \u002F\u002F Finished!\\n          }\\n        } else {\\n          state = 0;\\n        }\\n      }\\n    }\\n\\n    if (ch === -1) {\\n      warn(\\n        \\\"findDefaultInlineStreamEnd: \\\" +\\n          \\\"Reached the end of the stream without finding a valid EI marker\\\"\\n      );\\n      if (maybeEIPos) {\\n        warn('... trying to recover by using the last \\\"EI\\\" occurrence.');\\n        stream.skip(-(stream.pos - maybeEIPos)); \u002F\u002F Reset the stream position.\\n      }\\n    }\\n\\n    let endOffset = 4;\\n    stream.skip(-endOffset); \u002F\u002F Set the stream position to just before \\\"EI\\\".\\n    ch = stream.peekByte();\\n    stream.skip(endOffset); \u002F\u002F ... and remember to reset the stream position.\\n\\n    \u002F\u002F Ensure that we don't accidentally truncate the inline image, when the\\n    \u002F\u002F data is immediately followed by the \\\"EI\\\" marker (fixes issue10388.pdf).\\n    if (!isWhiteSpace(ch)) {\\n      endOffset--;\\n    }\\n    return stream.pos - endOffset - startPos;\\n  }\\n\\n  \u002F**\\n   * Find the EOI (end-of-image) marker 0xFFD9 of the stream.\\n   * @returns {number} The inline stream length.\\n   *\u002F\\n  findDCTDecodeInlineStreamEnd(stream) {\\n    const startPos = stream.pos;\\n    let foundEOI = false,\\n      b,\\n      markerLength;\\n    while ((b = stream.getByte()) !== -1) {\\n      if (b !== 0xff) {\\n        \u002F\u002F Not a valid marker.\\n        continue;\\n      }\\n      switch (stream.getByte()) {\\n        case 0x00: \u002F\u002F Byte stuffing.\\n          \u002F\u002F 0xFF00 appears to be a very common byte sequence in JPEG images.\\n          break;\\n\\n        case 0xff: \u002F\u002F Fill byte.\\n          \u002F\u002F Avoid skipping a valid marker, resetting the stream position.\\n          stream.skip(-1);\\n          break;\\n\\n        case 0xd9: \u002F\u002F EOI\\n          foundEOI = true;\\n          break;\\n\\n        case 0xc0: \u002F\u002F SOF0\\n        case 0xc1: \u002F\u002F SOF1\\n        case 0xc2: \u002F\u002F SOF2\\n        case 0xc3: \u002F\u002F SOF3\\n        \u002F* falls through *\u002F\\n        case 0xc5: \u002F\u002F SOF5\\n        case 0xc6: \u002F\u002F SOF6\\n        case 0xc7: \u002F\u002F SOF7\\n        \u002F* falls through *\u002F\\n        case 0xc9: \u002F\u002F SOF9\\n        case 0xca: \u002F\u002F SOF10\\n        case 0xcb: \u002F\u002F SOF11\\n        \u002F* falls through *\u002F\\n        case 0xcd: \u002F\u002F SOF13\\n        case 0xce: \u002F\u002F SOF14\\n        case 0xcf: \u002F\u002F SOF15\\n        \u002F* falls through *\u002F\\n        case 0xc4: \u002F\u002F DHT\\n        case 0xcc: \u002F\u002F DAC\\n        \u002F* falls through *\u002F\\n        case 0xda: \u002F\u002F SOS\\n        case 0xdb: \u002F\u002F DQT\\n        case 0xdc: \u002F\u002F DNL\\n        case 0xdd: \u002F\u002F DRI\\n        case 0xde: \u002F\u002F DHP\\n        case 0xdf: \u002F\u002F EXP\\n        \u002F* falls through *\u002F\\n        case 0xe0: \u002F\u002F APP0\\n        case 0xe1: \u002F\u002F APP1\\n        case 0xe2: \u002F\u002F APP2\\n        case 0xe3: \u002F\u002F APP3\\n        case 0xe4: \u002F\u002F APP4\\n        case 0xe5: \u002F\u002F APP5\\n        case 0xe6: \u002F\u002F APP6\\n        case 0xe7: \u002F\u002F APP7\\n        case 0xe8: \u002F\u002F APP8\\n        case 0xe9: \u002F\u002F APP9\\n        case 0xea: \u002F\u002F APP10\\n        case 0xeb: \u002F\u002F APP11\\n        case 0xec: \u002F\u002F APP12\\n        case 0xed: \u002F\u002F APP13\\n        case 0xee: \u002F\u002F APP14\\n        case 0xef: \u002F\u002F APP15\\n        \u002F* falls through *\u002F\\n        case 0xfe: \u002F\u002F COM\\n          \u002F\u002F The marker should be followed by the length of the segment.\\n          markerLength = stream.getUint16();\\n          if (markerLength > 2) {\\n            \u002F\u002F |markerLength| contains the byte length of the marker segment,\\n            \u002F\u002F including its own length (2 bytes) and excluding the marker.\\n            stream.skip(markerLength - 2); \u002F\u002F Jump to the next marker.\\n          } else {\\n            \u002F\u002F The marker length is invalid, resetting the stream position.\\n            stream.skip(-2);\\n          }\\n          break;\\n      }\\n      if (foundEOI) {\\n        break;\\n      }\\n    }\\n    const length = stream.pos - startPos;\\n    if (b === -1) {\\n      warn(\\n        \\\"Inline DCTDecode image stream: \\\" +\\n          \\\"EOI marker not found, searching for \u002FEI\u002F instead.\\\"\\n      );\\n      stream.skip(-length); \u002F\u002F Reset the stream position.\\n      return this.findDefaultInlineStreamEnd(stream);\\n    }\\n    this.inlineStreamSkipEI(stream);\\n    return length;\\n  }\\n\\n  \u002F**\\n   * Find the EOD (end-of-data) marker '~>' (i.e. TILDE + GT) of the stream.\\n   * @returns {number} The inline stream length.\\n   *\u002F\\n  findASCII85DecodeInlineStreamEnd(stream) {\\n    const TILDE = 0x7e,\\n      GT = 0x3e;\\n    const startPos = stream.pos;\\n    let ch;\\n    while ((ch = stream.getByte()) !== -1) {\\n      if (ch === TILDE) {\\n        const tildePos = stream.pos;\\n\\n        ch = stream.peekByte();\\n        \u002F\u002F Handle corrupt PDF documents which contains whitespace \\\"inside\\\" of\\n        \u002F\u002F the EOD marker (fixes issue10614.pdf).\\n        while (isWhiteSpace(ch)) {\\n          stream.skip();\\n          ch = stream.peekByte();\\n        }\\n        if (ch === GT) {\\n          stream.skip();\\n          break;\\n        }\\n        \u002F\u002F Handle corrupt PDF documents which contains truncated EOD markers,\\n        \u002F\u002F where the '>' character is missing (fixes issue11385.pdf).\\n        if (stream.pos > tildePos) {\\n          const maybeEI = stream.peekBytes(2);\\n          if (maybeEI[0] === \u002F* E = *\u002F 0x45 && maybeEI[1] === \u002F* I = *\u002F 0x49) {\\n            break;\\n          }\\n        }\\n      }\\n    }\\n    const length = stream.pos - startPos;\\n    if (ch === -1) {\\n      warn(\\n        \\\"Inline ASCII85Decode image stream: \\\" +\\n          \\\"EOD marker not found, searching for \u002FEI\u002F instead.\\\"\\n      );\\n      stream.skip(-length); \u002F\u002F Reset the stream position.\\n      return this.findDefaultInlineStreamEnd(stream);\\n    }\\n    this.inlineStreamSkipEI(stream);\\n    return length;\\n  }\\n\\n  \u002F**\\n   * Find the EOD (end-of-data) marker '>' (i.e. GT) of the stream.\\n   * @returns {number} The inline stream length.\\n   *\u002F\\n  findASCIIHexDecodeInlineStreamEnd(stream) {\\n    const GT = 0x3e;\\n    const startPos = stream.pos;\\n    let ch;\\n    while ((ch = stream.getByte()) !== -1) {\\n      if (ch === GT) {\\n        break;\\n      }\\n    }\\n    const length = stream.pos - startPos;\\n    if (ch === -1) {\\n      warn(\\n        \\\"Inline ASCIIHexDecode image stream: \\\" +\\n          \\\"EOD marker not found, searching for \u002FEI\u002F instead.\\\"\\n      );\\n      stream.skip(-length); \u002F\u002F Reset the stream position.\\n      return this.findDefaultInlineStreamEnd(stream);\\n    }\\n    this.inlineStreamSkipEI(stream);\\n    return length;\\n  }\\n\\n  \u002F**\\n   * Skip over the \u002FEI\u002F for streams where we search for an EOD marker.\\n   *\u002F\\n  inlineStreamSkipEI(stream) {\\n    const E = 0x45,\\n      I = 0x49;\\n    let state = 0,\\n      ch;\\n    while ((ch = stream.getByte()) !== -1) {\\n      if (state === 0) {\\n        state = ch === E ? 1 : 0;\\n      } else if (state === 1) {\\n        state = ch === I ? 2 : 0;\\n      } else if (state === 2) {\\n        break;\\n      }\\n    }\\n  }\\n\\n  makeInlineImage(cipherTransform) {\\n    const lexer = this.lexer;\\n    const stream = lexer.stream;\\n\\n    \u002F\u002F Parse dictionary, but initialize it lazily to improve performance with\\n    \u002F\u002F cached inline images (see issue 2618).\\n    const dictMap = Object.create(null);\\n    let dictLength;\\n    while (!isCmd(this.buf1, \\\"ID\\\") && this.buf1 !== EOF) {\\n      if (!(this.buf1 instanceof Name)) {\\n        throw new FormatError(\\\"Dictionary key must be a name object\\\");\\n      }\\n      const key = this.buf1.name;\\n      this.shift();\\n      if (this.buf1 === EOF) {\\n        break;\\n      }\\n      dictMap[key] = this.getObj(cipherTransform);\\n    }\\n    if (lexer.beginInlineImagePos !== -1) {\\n      dictLength = stream.pos - lexer.beginInlineImagePos;\\n    }\\n\\n    \u002F\u002F Extract the name of the first (i.e. the current) image filter.\\n    const filter = this.xref.fetchIfRef(dictMap.F || dictMap.Filter);\\n    let filterName;\\n    if (filter instanceof Name) {\\n      filterName = filter.name;\\n    } else if (Array.isArray(filter)) {\\n      const filterZero = this.xref.fetchIfRef(filter[0]);\\n      if (filterZero instanceof Name) {\\n        filterName = filterZero.name;\\n      }\\n    }\\n\\n    \u002F\u002F Parse image stream.\\n    const startPos = stream.pos;\\n    let length;\\n    switch (filterName) {\\n      case \\\"DCT\\\":\\n      case \\\"DCTDecode\\\":\\n        length = this.findDCTDecodeInlineStreamEnd(stream);\\n        break;\\n      case \\\"A85\\\":\\n      case \\\"ASCII85Decode\\\":\\n        length = this.findASCII85DecodeInlineStreamEnd(stream);\\n        break;\\n      case \\\"AHx\\\":\\n      case \\\"ASCIIHexDecode\\\":\\n        length = this.findASCIIHexDecodeInlineStreamEnd(stream);\\n        break;\\n      default:\\n        length = this.findDefaultInlineStreamEnd(stream);\\n    }\\n\\n    \u002F\u002F Cache all images below the MAX_LENGTH_TO_CACHE threshold by their\\n    \u002F\u002F stringified content, to prevent possible hash collisions.\\n    let cacheKey;\\n    if (length \u003C MAX_LENGTH_TO_CACHE && dictLength > 0) {\\n      const initialStreamPos = stream.pos;\\n      \u002F\u002F Set the stream position to the beginning of the dictionary data...\\n      stream.pos = lexer.beginInlineImagePos;\\n      \u002F\u002F ... and fetch the bytes of the dictionary *and* the inline image.\\n      cacheKey = getInlineImageCacheKey(stream.getBytes(dictLength + length));\\n      \u002F\u002F Finally, don't forget to reset the stream position.\\n      stream.pos = initialStreamPos;\\n\\n      const cacheEntry = this.imageCache[cacheKey];\\n      if (cacheEntry !== undefined) {\\n        this.buf2 = Cmd.get(\\\"EI\\\");\\n        this.shift();\\n\\n        cacheEntry.reset();\\n        return cacheEntry;\\n      }\\n    }\\n\\n    const dict = new Dict(this.xref);\\n    for (const key in dictMap) {\\n      dict.set(key, dictMap[key]);\\n    }\\n    let imageStream = stream.makeSubStream(startPos, length, dict);\\n    if (cipherTransform) {\\n      imageStream = cipherTransform.createStream(imageStream, length);\\n    }\\n\\n    imageStream = this.filter(imageStream, dict, length);\\n    imageStream.dict = dict;\\n    if (cacheKey !== undefined) {\\n      imageStream.cacheKey = `inline_img_${++this._imageId}`;\\n      this.imageCache[cacheKey] = imageStream;\\n    }\\n\\n    this.buf2 = Cmd.get(\\\"EI\\\");\\n    this.shift();\\n\\n    return imageStream;\\n  }\\n\\n  #findStreamLength(startPos) {\\n    const { stream } = this.lexer;\\n    stream.pos = startPos;\\n\\n    const SCAN_BLOCK_LENGTH = 2048;\\n    const signatureLength = \\\"endstream\\\".length;\\n\\n    const END_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64]);\\n    const endLength = END_SIGNATURE.length;\\n\\n    \u002F\u002F Ideally we'd directly search for \\\"endstream\\\", however there are corrupt\\n    \u002F\u002F PDF documents where the command is incomplete; hence we search for:\\n    \u002F\u002F  1. The normal case.\\n    \u002F\u002F  2. The misspelled case (fixes issue18122.pdf).\\n    \u002F\u002F  3. The truncated case (fixes issue10004.pdf).\\n    const PARTIAL_SIGNATURE = [\\n      new Uint8Array([0x73, 0x74, 0x72, 0x65, 0x61, 0x6d]), \u002F\u002F \\\"stream\\\"\\n      new Uint8Array([0x73, 0x74, 0x65, 0x61, 0x6d]), \u002F\u002F \\\"steam\\\",\\n      new Uint8Array([0x73, 0x74, 0x72, 0x65, 0x61]), \u002F\u002F \\\"strea\\\"\\n    ];\\n    const normalLength = signatureLength - endLength;\\n\\n    while (stream.pos \u003C stream.end) {\\n      const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\\n      const scanLength = scanBytes.length - signatureLength;\\n\\n      if (scanLength \u003C= 0) {\\n        break;\\n      }\\n      let pos = 0;\\n      while (pos \u003C scanLength) {\\n        let j = 0;\\n        while (j \u003C endLength && scanBytes[pos + j] === END_SIGNATURE[j]) {\\n          j++;\\n        }\\n        if (j >= endLength) {\\n          \u002F\u002F \\\"end\\\" found, find the complete command.\\n          let found = false;\\n          for (const part of PARTIAL_SIGNATURE) {\\n            const partLen = part.length;\\n            let k = 0;\\n            while (k \u003C partLen && scanBytes[pos + j + k] === part[k]) {\\n              k++;\\n            }\\n            if (k >= normalLength) {\\n              \u002F\u002F Found \\\"endstream\\\" command.\\n              found = true;\\n              break;\\n            }\\n            if (k >= partLen) {\\n              \u002F\u002F Found \\\"endsteam\\\" or \\\"endstea\\\" command.\\n              \u002F\u002F Ensure that the byte immediately following the corrupt\\n              \u002F\u002F endstream command is a space, to prevent false positives.\\n              const lastByte = scanBytes[pos + j + k];\\n              if (isWhiteSpace(lastByte)) {\\n                info(\\n                  `Found \\\"${bytesToString([...END_SIGNATURE, ...part])}\\\" when ` +\\n                    \\\"searching for endstream command.\\\"\\n                );\\n                found = true;\\n              }\\n              break;\\n            }\\n          }\\n\\n          if (found) {\\n            stream.pos += pos;\\n            return stream.pos - startPos;\\n          }\\n        }\\n        pos++;\\n      }\\n      stream.pos += scanLength;\\n    }\\n    return -1;\\n  }\\n\\n  makeStream(dict, cipherTransform) {\\n    const lexer = this.lexer;\\n    let stream = lexer.stream;\\n\\n    \u002F\u002F Get the stream's start position.\\n    lexer.skipToNextLine();\\n    const startPos = stream.pos - 1;\\n\\n    \u002F\u002F Get the length.\\n    let length = dict.get(\\\"Length\\\");\\n    if (!Number.isInteger(length)) {\\n      info(`Bad length \\\"${length && length.toString()}\\\" in stream.`);\\n      length = 0;\\n    }\\n\\n    \u002F\u002F Skip over the stream data.\\n    stream.pos = startPos + length;\\n    lexer.nextChar();\\n\\n    \u002F\u002F Shift '>>' and check whether the new object marks the end of the stream.\\n    if (this.tryShift() && isCmd(this.buf2, \\\"endstream\\\")) {\\n      this.shift(); \u002F\u002F 'stream'\\n    } else {\\n      \u002F\u002F Bad stream length, scanning for endstream command.\\n      length = this.#findStreamLength(startPos);\\n      if (length \u003C 0) {\\n        throw new FormatError(\\\"Missing endstream command.\\\");\\n      }\\n\\n      lexer.nextChar();\\n      this.shift();\\n      this.shift();\\n    }\\n    this.shift(); \u002F\u002F 'endstream'\\n\\n    stream = stream.makeSubStream(startPos, length, dict);\\n    if (cipherTransform) {\\n      stream = cipherTransform.createStream(stream, length);\\n    }\\n    stream = this.filter(stream, dict, length);\\n    stream.dict = dict;\\n    return stream;\\n  }\\n\\n  filter(stream, dict, length) {\\n    let filter = dict.get(\\\"F\\\", \\\"Filter\\\");\\n    let params = dict.get(\\\"DP\\\", \\\"DecodeParms\\\");\\n\\n    if (filter instanceof Name) {\\n      if (Array.isArray(params)) {\\n        warn(\\\"\u002FDecodeParms should not be an Array, when \u002FFilter is a Name.\\\");\\n      }\\n      return this.makeFilter(stream, filter.name, length, params);\\n    }\\n\\n    let maybeLength = length;\\n    if (Array.isArray(filter)) {\\n      const filterArray = filter;\\n      const paramsArray = params;\\n      for (let i = 0, ii = filterArray.length; i \u003C ii; ++i) {\\n        filter = this.xref.fetchIfRef(filterArray[i]);\\n        if (!(filter instanceof Name)) {\\n          throw new FormatError(`Bad filter name \\\"${filter}\\\"`);\\n        }\\n\\n        params = null;\\n        if (Array.isArray(paramsArray) && i in paramsArray) {\\n          params = this.xref.fetchIfRef(paramsArray[i]);\\n        }\\n        stream = this.makeFilter(stream, filter.name, maybeLength, params);\\n        \u002F\u002F After the first stream the `length` variable is invalid.\\n        maybeLength = null;\\n      }\\n    }\\n    return stream;\\n  }\\n\\n  makeFilter(stream, name, maybeLength, params) {\\n    \u002F\u002F Since the 'Length' entry in the stream dictionary can be completely\\n    \u002F\u002F wrong, e.g. zero for non-empty streams, only skip parsing the stream\\n    \u002F\u002F when we can be absolutely certain that it actually is empty.\\n    if (maybeLength === 0) {\\n      warn(`Empty \\\"${name}\\\" stream.`);\\n      return new NullStream();\\n    }\\n\\n    try {\\n      switch (name) {\\n        case \\\"Fl\\\":\\n        case \\\"FlateDecode\\\":\\n          if (params) {\\n            return new PredictorStream(\\n              new FlateStream(stream, maybeLength),\\n              maybeLength,\\n              params\\n            );\\n          }\\n          return new FlateStream(stream, maybeLength);\\n        case \\\"LZW\\\":\\n        case \\\"LZWDecode\\\":\\n          let earlyChange = 1;\\n          if (params) {\\n            if (params.has(\\\"EarlyChange\\\")) {\\n              earlyChange = params.get(\\\"EarlyChange\\\");\\n            }\\n            return new PredictorStream(\\n              new LZWStream(stream, maybeLength, earlyChange),\\n              maybeLength,\\n              params\\n            );\\n          }\\n          return new LZWStream(stream, maybeLength, earlyChange);\\n        case \\\"DCT\\\":\\n        case \\\"DCTDecode\\\":\\n          return new JpegStream(stream, maybeLength, params);\\n        case \\\"JPX\\\":\\n        case \\\"JPXDecode\\\":\\n          return new JpxStream(stream, maybeLength, params);\\n        case \\\"A85\\\":\\n        case \\\"ASCII85Decode\\\":\\n          return new Ascii85Stream(stream, maybeLength);\\n        case \\\"AHx\\\":\\n        case \\\"ASCIIHexDecode\\\":\\n          return new AsciiHexStream(stream, maybeLength);\\n        case \\\"CCF\\\":\\n        case \\\"CCITTFaxDecode\\\":\\n          return new CCITTFaxStream(stream, maybeLength, params);\\n        case \\\"RL\\\":\\n        case \\\"RunLengthDecode\\\":\\n          return new RunLengthStream(stream, maybeLength);\\n        case \\\"JBIG2Decode\\\":\\n          return new Jbig2Stream(stream, maybeLength, params);\\n      }\\n      warn(`Filter \\\"${name}\\\" is not supported.`);\\n      return stream;\\n    } catch (ex) {\\n      if (ex instanceof MissingDataException) {\\n        throw ex;\\n      }\\n      warn(`Invalid stream: \\\"${ex}\\\"`);\\n      return new NullStream();\\n    }\\n  }\\n}\\n\\n\u002F\u002F A '1' in this array means the character is white space. A '1' or\\n\u002F\u002F '2' means the character ends a name or command.\\n\u002F\u002F prettier-ignore\\nconst specialChars = [\\n  1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, \u002F\u002F 0x\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \u002F\u002F 1x\\n  1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, \u002F\u002F 2x\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, \u002F\u002F 3x\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \u002F\u002F 4x\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, \u002F\u002F 5x\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \u002F\u002F 6x\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, \u002F\u002F 7x\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \u002F\u002F 8x\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \u002F\u002F 9x\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \u002F\u002F ax\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \u002F\u002F bx\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \u002F\u002F cx\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \u002F\u002F dx\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \u002F\u002F ex\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0  \u002F\u002F fx\\n];\\n\\nfunction toHexDigit(ch) {\\n  if (ch >= \u002F* '0' = *\u002F 0x30 && ch \u002F* '9' = *\u002F \u003C= 0x39) {\\n    return ch & 0x0f;\\n  }\\n  if (\\n    (ch >= \u002F* 'A' = *\u002F 0x41 && ch \u003C= \u002F* 'F' = *\u002F 0x46) ||\\n    (ch >= \u002F* 'a' = *\u002F 0x61 && ch \u003C= \u002F* 'f' = *\u002F 0x66)\\n  ) {\\n    return (ch & 0x0f) + 9;\\n  }\\n  return -1;\\n}\\n\\nclass Lexer {\\n  constructor(stream, knownCommands = null) {\\n    this.stream = stream;\\n    this.nextChar();\\n\\n    \u002F\u002F While lexing, we build up many strings one char at a time. Using += for\\n    \u002F\u002F this can result in lots of garbage strings. It's better to build an\\n    \u002F\u002F array of single-char strings and then join() them together at the end.\\n    \u002F\u002F And reusing a single array (i.e. |this.strBuf|) over and over for this\\n    \u002F\u002F purpose uses less memory than using a new array for each string.\\n    this.strBuf = [];\\n\\n    \u002F\u002F The PDFs might have \\\"glued\\\" commands with other commands, operands or\\n    \u002F\u002F literals, e.g. \\\"q1\\\". The knownCommands is a dictionary of the valid\\n    \u002F\u002F commands and their prefixes. The prefixes are built the following way:\\n    \u002F\u002F if there a command that is a prefix of the other valid command or\\n    \u002F\u002F literal (e.g. 'f' and 'false') the following prefixes must be included,\\n    \u002F\u002F 'fa', 'fal', 'fals'. The prefixes are not needed, if the command has no\\n    \u002F\u002F other commands or literals as a prefix. The knowCommands is optional.\\n    this.knownCommands = knownCommands;\\n\\n    this._hexStringNumWarn = 0;\\n    this.beginInlineImagePos = -1;\\n  }\\n\\n  nextChar() {\\n    return (this.currentChar = this.stream.getByte());\\n  }\\n\\n  peekChar() {\\n    return this.stream.peekByte();\\n  }\\n\\n  getNumber() {\\n    let ch = this.currentChar;\\n    let eNotation = false;\\n    let divideBy = 0; \u002F\u002F Different from 0 if it's a floating point value.\\n    let sign = 1;\\n\\n    if (ch === \u002F* '-' = *\u002F 0x2d) {\\n      sign = -1;\\n      ch = this.nextChar();\\n\\n      if (ch === \u002F* '-' = *\u002F 0x2d) {\\n        \u002F\u002F Ignore double negative (this is consistent with Adobe Reader).\\n        ch = this.nextChar();\\n      }\\n    } else if (ch === \u002F* '+' = *\u002F 0x2b) {\\n      ch = this.nextChar();\\n    }\\n    if (ch === \u002F* LF = *\u002F 0x0a || ch === \u002F* CR = *\u002F 0x0d) {\\n      \u002F\u002F Ignore line-breaks (this is consistent with Adobe Reader).\\n      do {\\n        ch = this.nextChar();\\n      } while (ch === 0x0a || ch === 0x0d);\\n    }\\n    if (ch === \u002F* '.' = *\u002F 0x2e) {\\n      divideBy = 10;\\n      ch = this.nextChar();\\n    }\\n    if (ch \u003C \u002F* '0' = *\u002F 0x30 || ch > \u002F* '9' = *\u002F 0x39) {\\n      const msg = `Invalid number: ${String.fromCharCode(ch)} (charCode ${ch})`;\\n\\n      if (isWhiteSpace(ch) || ch === \u002F* EOF = *\u002F -1) {\\n        \u002F\u002F This is consistent with Adobe Reader (fixes issue9252.pdf,\\n        \u002F\u002F issue15604.pdf, bug1753983.pdf).\\n        info(`Lexer.getNumber - \\\"${msg}\\\".`);\\n        return 0;\\n      }\\n      throw new FormatError(msg);\\n    }\\n\\n    let baseValue = ch - 0x30; \u002F\u002F '0'\\n    let powerValue = 0;\\n    let powerValueSign = 1;\\n\\n    while ((ch = this.nextChar()) >= 0) {\\n      if (ch >= \u002F* '0' = *\u002F 0x30 && ch \u003C= \u002F* '9' = *\u002F 0x39) {\\n        const currentDigit = ch - 0x30; \u002F\u002F '0'\\n        if (eNotation) {\\n          \u002F\u002F We are after an 'e' or 'E'.\\n          powerValue = powerValue * 10 + currentDigit;\\n        } else {\\n          if (divideBy !== 0) {\\n            \u002F\u002F We are after a point.\\n            divideBy *= 10;\\n          }\\n          baseValue = baseValue * 10 + currentDigit;\\n        }\\n      } else if (ch === \u002F* '.' = *\u002F 0x2e) {\\n        if (divideBy === 0) {\\n          divideBy = 1;\\n        } else {\\n          \u002F\u002F A number can have only one dot.\\n          break;\\n        }\\n      } else if (ch === \u002F* '-' = *\u002F 0x2d) {\\n        \u002F\u002F Ignore minus signs in the middle of numbers to match\\n        \u002F\u002F Adobe's behavior.\\n        warn(\\\"Badly formatted number: minus sign in the middle\\\");\\n      } else if (ch === \u002F* 'E' = *\u002F 0x45 || ch === \u002F* 'e' = *\u002F 0x65) {\\n        \u002F\u002F 'E' can be either a scientific notation or the beginning of a new\\n        \u002F\u002F operator.\\n        ch = this.peekChar();\\n        if (ch === \u002F* '+' = *\u002F 0x2b || ch === \u002F* '-' = *\u002F 0x2d) {\\n          powerValueSign = ch === 0x2d ? -1 : 1;\\n          this.nextChar(); \u002F\u002F Consume the sign character.\\n        } else if (ch \u003C \u002F* '0' = *\u002F 0x30 || ch > \u002F* '9' = *\u002F 0x39) {\\n          \u002F\u002F The 'E' must be the beginning of a new operator.\\n          break;\\n        }\\n        eNotation = true;\\n      } else {\\n        \u002F\u002F The last character doesn't belong to us.\\n        break;\\n      }\\n    }\\n\\n    if (divideBy !== 0) {\\n      baseValue \u002F= divideBy;\\n    }\\n    if (eNotation) {\\n      baseValue *= 10 ** (powerValueSign * powerValue);\\n    }\\n    return sign * baseValue;\\n  }\\n\\n  getString() {\\n    let numParen = 1;\\n    let done = false;\\n    const strBuf = this.strBuf;\\n    strBuf.length = 0;\\n\\n    let ch = this.nextChar();\\n    while (true) {\\n      let charBuffered = false;\\n      switch (ch | 0) {\\n        case -1:\\n          warn(\\\"Unterminated string\\\");\\n          done = true;\\n          break;\\n        case 0x28: \u002F\u002F '('\\n          ++numParen;\\n          strBuf.push(\\\"(\\\");\\n          break;\\n        case 0x29: \u002F\u002F ')'\\n          if (--numParen === 0) {\\n            this.nextChar(); \u002F\u002F consume strings ')'\\n            done = true;\\n          } else {\\n            strBuf.push(\\\")\\\");\\n          }\\n          break;\\n        case 0x5c: \u002F\u002F '\\\\\\\\'\\n          ch = this.nextChar();\\n          switch (ch) {\\n            case -1:\\n              warn(\\\"Unterminated string\\\");\\n              done = true;\\n              break;\\n            case 0x6e: \u002F\u002F 'n'\\n              strBuf.push(\\\"\\\\n\\\");\\n              break;\\n            case 0x72: \u002F\u002F 'r'\\n              strBuf.push(\\\"\\\\r\\\");\\n              break;\\n            case 0x74: \u002F\u002F 't'\\n              strBuf.push(\\\"\\\\t\\\");\\n              break;\\n            case 0x62: \u002F\u002F 'b'\\n              strBuf.push(\\\"\\\\b\\\");\\n              break;\\n            case 0x66: \u002F\u002F 'f'\\n              strBuf.push(\\\"\\\\f\\\");\\n              break;\\n            case 0x5c: \u002F\u002F '\\\\'\\n            case 0x28: \u002F\u002F '('\\n            case 0x29: \u002F\u002F ')'\\n              strBuf.push(String.fromCharCode(ch));\\n              break;\\n            case 0x30: \u002F\u002F '0'\\n            case 0x31: \u002F\u002F '1'\\n            case 0x32: \u002F\u002F '2'\\n            case 0x33: \u002F\u002F '3'\\n            case 0x34: \u002F\u002F '4'\\n            case 0x35: \u002F\u002F '5'\\n            case 0x36: \u002F\u002F '6'\\n            case 0x37: \u002F\u002F '7'\\n              let x = ch & 0x0f;\\n              ch = this.nextChar();\\n              charBuffered = true;\\n              if (ch >= \u002F* '0' = *\u002F 0x30 && ch \u003C= \u002F* '7' = *\u002F 0x37) {\\n                x = (x \u003C\u003C 3) + (ch & 0x0f);\\n                ch = this.nextChar();\\n                if (ch >= \u002F* '0' = *\u002F 0x30 && ch \u002F* '7' = *\u002F \u003C= 0x37) {\\n                  charBuffered = false;\\n                  x = (x \u003C\u003C 3) + (ch & 0x0f);\\n                }\\n              }\\n              strBuf.push(String.fromCharCode(x));\\n              break;\\n            case 0x0d: \u002F\u002F CR\\n              if (this.peekChar() === \u002F* LF = *\u002F 0x0a) {\\n                this.nextChar();\\n              }\\n              break;\\n            case 0x0a: \u002F\u002F LF\\n              break;\\n            default:\\n              strBuf.push(String.fromCharCode(ch));\\n              break;\\n          }\\n          break;\\n        default:\\n          strBuf.push(String.fromCharCode(ch));\\n          break;\\n      }\\n      if (done) {\\n        break;\\n      }\\n      if (!charBuffered) {\\n        ch = this.nextChar();\\n      }\\n    }\\n    return strBuf.join(\\\"\\\");\\n  }\\n\\n  getName() {\\n    let ch, previousCh;\\n    const strBuf = this.strBuf;\\n    strBuf.length = 0;\\n\\n    while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\\n      if (ch === \u002F* '#' = *\u002F 0x23) {\\n        ch = this.nextChar();\\n        if (specialChars[ch]) {\\n          warn(\\n            \\\"Lexer_getName: \\\" +\\n              \\\"NUMBER SIGN (#) should be followed by a hexadecimal number.\\\"\\n          );\\n          strBuf.push(\\\"#\\\");\\n          break;\\n        }\\n        const x = toHexDigit(ch);\\n        if (x !== -1) {\\n          previousCh = ch;\\n          ch = this.nextChar();\\n          const x2 = toHexDigit(ch);\\n          if (x2 === -1) {\\n            warn(\\n              `Lexer_getName: Illegal digit (${String.fromCharCode(ch)}) ` +\\n                \\\"in hexadecimal number.\\\"\\n            );\\n            strBuf.push(\\\"#\\\", String.fromCharCode(previousCh));\\n            if (specialChars[ch]) {\\n              break;\\n            }\\n            strBuf.push(String.fromCharCode(ch));\\n            continue;\\n          }\\n          strBuf.push(String.fromCharCode((x \u003C\u003C 4) | x2));\\n        } else {\\n          strBuf.push(\\\"#\\\", String.fromCharCode(ch));\\n        }\\n      } else {\\n        strBuf.push(String.fromCharCode(ch));\\n      }\\n    }\\n    if (strBuf.length > 127) {\\n      warn(`Name token is longer than allowed by the spec: ${strBuf.length}`);\\n    }\\n    return Name.get(strBuf.join(\\\"\\\"));\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _hexStringWarn(ch) {\\n    const MAX_HEX_STRING_NUM_WARN = 5;\\n\\n    if (this._hexStringNumWarn++ === MAX_HEX_STRING_NUM_WARN) {\\n      warn(\\\"getHexString - ignoring additional invalid characters.\\\");\\n      return;\\n    }\\n    if (this._hexStringNumWarn > MAX_HEX_STRING_NUM_WARN) {\\n      \u002F\u002F Limit the number of warning messages printed for a `this.getHexString`\\n      \u002F\u002F invocation, since corrupt PDF documents may otherwise spam the console\\n      \u002F\u002F enough to affect general performance negatively.\\n      return;\\n    }\\n    warn(`getHexString - ignoring invalid character: ${ch}`);\\n  }\\n\\n  getHexString() {\\n    const strBuf = this.strBuf;\\n    strBuf.length = 0;\\n    let ch = this.currentChar;\\n    let isFirstHex = true;\\n    let firstDigit, secondDigit;\\n    this._hexStringNumWarn = 0;\\n\\n    while (true) {\\n      if (ch \u003C 0) {\\n        warn(\\\"Unterminated hex string\\\");\\n        break;\\n      } else if (ch === \u002F* '>' = *\u002F 0x3e) {\\n        this.nextChar();\\n        break;\\n      } else if (specialChars[ch] === 1) {\\n        ch = this.nextChar();\\n        continue;\\n      } else {\\n        if (isFirstHex) {\\n          firstDigit = toHexDigit(ch);\\n          if (firstDigit === -1) {\\n            this._hexStringWarn(ch);\\n            ch = this.nextChar();\\n            continue;\\n          }\\n        } else {\\n          secondDigit = toHexDigit(ch);\\n          if (secondDigit === -1) {\\n            this._hexStringWarn(ch);\\n            ch = this.nextChar();\\n            continue;\\n          }\\n          strBuf.push(String.fromCharCode((firstDigit \u003C\u003C 4) | secondDigit));\\n        }\\n        isFirstHex = !isFirstHex;\\n        ch = this.nextChar();\\n      }\\n    }\\n    return strBuf.join(\\\"\\\");\\n  }\\n\\n  getObj() {\\n    \u002F\u002F Skip whitespace and comments.\\n    let comment = false;\\n    let ch = this.currentChar;\\n    while (true) {\\n      if (ch \u003C 0) {\\n        return EOF;\\n      }\\n      if (comment) {\\n        if (ch === \u002F* LF = *\u002F 0x0a || ch === \u002F* CR = *\u002F 0x0d) {\\n          comment = false;\\n        }\\n      } else if (ch === \u002F* '%' = *\u002F 0x25) {\\n        comment = true;\\n      } else if (specialChars[ch] !== 1) {\\n        break;\\n      }\\n      ch = this.nextChar();\\n    }\\n\\n    \u002F\u002F Start reading a token.\\n    switch (ch | 0) {\\n      case 0x30: \u002F\u002F '0'\\n      case 0x31: \u002F\u002F '1'\\n      case 0x32: \u002F\u002F '2'\\n      case 0x33: \u002F\u002F '3'\\n      case 0x34: \u002F\u002F '4'\\n      case 0x35: \u002F\u002F '5'\\n      case 0x36: \u002F\u002F '6'\\n      case 0x37: \u002F\u002F '7'\\n      case 0x38: \u002F\u002F '8'\\n      case 0x39: \u002F\u002F '9'\\n      case 0x2b: \u002F\u002F '+'\\n      case 0x2d: \u002F\u002F '-'\\n      case 0x2e: \u002F\u002F '.'\\n        return this.getNumber();\\n      case 0x28: \u002F\u002F '('\\n        return this.getString();\\n      case 0x2f: \u002F\u002F '\u002F'\\n        return this.getName();\\n      \u002F\u002F array punctuation\\n      case 0x5b: \u002F\u002F '['\\n        this.nextChar();\\n        return Cmd.get(\\\"[\\\");\\n      case 0x5d: \u002F\u002F ']'\\n        this.nextChar();\\n        return Cmd.get(\\\"]\\\");\\n      \u002F\u002F hex string or dict punctuation\\n      case 0x3c: \u002F\u002F '\u003C'\\n        ch = this.nextChar();\\n        if (ch === 0x3c) {\\n          \u002F\u002F dict punctuation\\n          this.nextChar();\\n          return Cmd.get(\\\"\u003C\u003C\\\");\\n        }\\n        return this.getHexString();\\n      \u002F\u002F dict punctuation\\n      case 0x3e: \u002F\u002F '>'\\n        ch = this.nextChar();\\n        if (ch === 0x3e) {\\n          this.nextChar();\\n          return Cmd.get(\\\">>\\\");\\n        }\\n        return Cmd.get(\\\">\\\");\\n      case 0x7b: \u002F\u002F '{'\\n        this.nextChar();\\n        return Cmd.get(\\\"{\\\");\\n      case 0x7d: \u002F\u002F '}'\\n        this.nextChar();\\n        return Cmd.get(\\\"}\\\");\\n      case 0x29: \u002F\u002F ')'\\n        \u002F\u002F Consume the current character in order to avoid permanently hanging\\n        \u002F\u002F the worker thread if `Lexer.getObj` is called from within a loop\\n        \u002F\u002F containing try-catch statements, since we would otherwise attempt\\n        \u002F\u002F to parse the *same* character over and over (fixes issue8061.pdf).\\n        this.nextChar();\\n        throw new FormatError(`Illegal character: ${ch}`);\\n    }\\n\\n    \u002F\u002F Start reading a command.\\n    let str = String.fromCharCode(ch);\\n    \u002F\u002F A valid command cannot start with a non-visible ASCII character,\\n    \u002F\u002F and the next character may be (the start of) a valid command.\\n    if (ch \u003C 0x20 || ch > 0x7f) {\\n      const nextCh = this.peekChar();\\n      if (nextCh >= 0x20 && nextCh \u003C= 0x7f) {\\n        this.nextChar();\\n        return Cmd.get(str);\\n      }\\n    }\\n    const knownCommands = this.knownCommands;\\n    let knownCommandFound = knownCommands?.[str] !== undefined;\\n    while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\\n      \u002F\u002F Stop if a known command is found and next character does not make\\n      \u002F\u002F the string a command.\\n      const possibleCommand = str + String.fromCharCode(ch);\\n      if (knownCommandFound && knownCommands[possibleCommand] === undefined) {\\n        break;\\n      }\\n      if (str.length === 128) {\\n        throw new FormatError(`Command token too long: ${str.length}`);\\n      }\\n      str = possibleCommand;\\n      knownCommandFound = knownCommands?.[str] !== undefined;\\n    }\\n    if (str === \\\"true\\\") {\\n      return true;\\n    }\\n    if (str === \\\"false\\\") {\\n      return false;\\n    }\\n    if (str === \\\"null\\\") {\\n      return null;\\n    }\\n\\n    if (str === \\\"BI\\\") {\\n      \u002F\u002F Keep track of the current stream position, since it's needed in order\\n      \u002F\u002F to correctly cache inline images; see `Parser.makeInlineImage`.\\n      this.beginInlineImagePos = this.stream.pos;\\n    }\\n\\n    return Cmd.get(str);\\n  }\\n\\n  skipToNextLine() {\\n    let ch = this.currentChar;\\n    while (ch >= 0) {\\n      if (ch === \u002F* CR = *\u002F 0x0d) {\\n        ch = this.nextChar();\\n        if (ch === \u002F* LF = *\u002F 0x0a) {\\n          this.nextChar();\\n        }\\n        break;\\n      } else if (ch === \u002F* LF = *\u002F 0x0a) {\\n        this.nextChar();\\n        break;\\n      }\\n      ch = this.nextChar();\\n    }\\n  }\\n}\\n\\nclass Linearization {\\n  static create(stream) {\\n    function getInt(linDict, name, allowZeroValue = false) {\\n      const obj = linDict.get(name);\\n      if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) {\\n        return obj;\\n      }\\n      throw new Error(\\n        `The \\\"${name}\\\" parameter in the linearization ` +\\n          \\\"dictionary is invalid.\\\"\\n      );\\n    }\\n\\n    function getHints(linDict) {\\n      const hints = linDict.get(\\\"H\\\");\\n      let hintsLength;\\n\\n      if (\\n        Array.isArray(hints) &&\\n        ((hintsLength = hints.length) === 2 || hintsLength === 4)\\n      ) {\\n        for (let index = 0; index \u003C hintsLength; index++) {\\n          const hint = hints[index];\\n          if (!(Number.isInteger(hint) && hint > 0)) {\\n            throw new Error(\\n              `Hint (${index}) in the linearization dictionary is invalid.`\\n            );\\n          }\\n        }\\n        return hints;\\n      }\\n      throw new Error(\\\"Hint array in the linearization dictionary is invalid.\\\");\\n    }\\n\\n    const parser = new Parser({\\n      lexer: new Lexer(stream),\\n      xref: null,\\n    });\\n    const obj1 = parser.getObj();\\n    const obj2 = parser.getObj();\\n    const obj3 = parser.getObj();\\n    const linDict = parser.getObj();\\n    let obj, length;\\n    if (\\n      !(\\n        Number.isInteger(obj1) &&\\n        Number.isInteger(obj2) &&\\n        isCmd(obj3, \\\"obj\\\") &&\\n        linDict instanceof Dict &&\\n        typeof (obj = linDict.get(\\\"Linearized\\\")) === \\\"number\\\" &&\\n        obj > 0\\n      )\\n    ) {\\n      return null; \u002F\u002F No valid linearization dictionary found.\\n    } else if ((length = getInt(linDict, \\\"L\\\")) !== stream.length) {\\n      throw new Error(\\n        'The \\\"L\\\" parameter in the linearization dictionary ' +\\n          \\\"does not equal the stream length.\\\"\\n      );\\n    }\\n    return {\\n      length,\\n      hints: getHints(linDict),\\n      objectNumberFirst: getInt(linDict, \\\"O\\\"),\\n      endFirst: getInt(linDict, \\\"E\\\"),\\n      numPages: getInt(linDict, \\\"N\\\"),\\n      mainXRefEntriesOffset: getInt(linDict, \\\"T\\\"),\\n      pageFirst: linDict.has(\\\"P\\\")\\n        ? getInt(linDict, \\\"P\\\", \u002F* allowZeroValue = *\u002F true)\\n        : 0,\\n    };\\n  }\\n}\\n\\nexport { Lexer, Linearization, Parser };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  CMapCompressionType,\\n  FormatError,\\n  unreachable,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { Cmd, EOF, isCmd, Name } from \\\".\u002Fprimitives.js\\\";\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { BinaryCMapReader } from \\\".\u002Fbinary_cmap.js\\\";\\nimport { Lexer } from \\\".\u002Fparser.js\\\";\\nimport { MissingDataException } from \\\".\u002Fcore_utils.js\\\";\\nimport { Stream } from \\\".\u002Fstream.js\\\";\\n\\nconst BUILT_IN_CMAPS = [\\n  \u002F\u002F \u003C\u003C Start unicode maps.\\n  \\\"Adobe-GB1-UCS2\\\",\\n  \\\"Adobe-CNS1-UCS2\\\",\\n  \\\"Adobe-Japan1-UCS2\\\",\\n  \\\"Adobe-Korea1-UCS2\\\",\\n  \u002F\u002F >> End unicode maps.\\n  \\\"78-EUC-H\\\",\\n  \\\"78-EUC-V\\\",\\n  \\\"78-H\\\",\\n  \\\"78-RKSJ-H\\\",\\n  \\\"78-RKSJ-V\\\",\\n  \\\"78-V\\\",\\n  \\\"78ms-RKSJ-H\\\",\\n  \\\"78ms-RKSJ-V\\\",\\n  \\\"83pv-RKSJ-H\\\",\\n  \\\"90ms-RKSJ-H\\\",\\n  \\\"90ms-RKSJ-V\\\",\\n  \\\"90msp-RKSJ-H\\\",\\n  \\\"90msp-RKSJ-V\\\",\\n  \\\"90pv-RKSJ-H\\\",\\n  \\\"90pv-RKSJ-V\\\",\\n  \\\"Add-H\\\",\\n  \\\"Add-RKSJ-H\\\",\\n  \\\"Add-RKSJ-V\\\",\\n  \\\"Add-V\\\",\\n  \\\"Adobe-CNS1-0\\\",\\n  \\\"Adobe-CNS1-1\\\",\\n  \\\"Adobe-CNS1-2\\\",\\n  \\\"Adobe-CNS1-3\\\",\\n  \\\"Adobe-CNS1-4\\\",\\n  \\\"Adobe-CNS1-5\\\",\\n  \\\"Adobe-CNS1-6\\\",\\n  \\\"Adobe-GB1-0\\\",\\n  \\\"Adobe-GB1-1\\\",\\n  \\\"Adobe-GB1-2\\\",\\n  \\\"Adobe-GB1-3\\\",\\n  \\\"Adobe-GB1-4\\\",\\n  \\\"Adobe-GB1-5\\\",\\n  \\\"Adobe-Japan1-0\\\",\\n  \\\"Adobe-Japan1-1\\\",\\n  \\\"Adobe-Japan1-2\\\",\\n  \\\"Adobe-Japan1-3\\\",\\n  \\\"Adobe-Japan1-4\\\",\\n  \\\"Adobe-Japan1-5\\\",\\n  \\\"Adobe-Japan1-6\\\",\\n  \\\"Adobe-Korea1-0\\\",\\n  \\\"Adobe-Korea1-1\\\",\\n  \\\"Adobe-Korea1-2\\\",\\n  \\\"B5-H\\\",\\n  \\\"B5-V\\\",\\n  \\\"B5pc-H\\\",\\n  \\\"B5pc-V\\\",\\n  \\\"CNS-EUC-H\\\",\\n  \\\"CNS-EUC-V\\\",\\n  \\\"CNS1-H\\\",\\n  \\\"CNS1-V\\\",\\n  \\\"CNS2-H\\\",\\n  \\\"CNS2-V\\\",\\n  \\\"ETHK-B5-H\\\",\\n  \\\"ETHK-B5-V\\\",\\n  \\\"ETen-B5-H\\\",\\n  \\\"ETen-B5-V\\\",\\n  \\\"ETenms-B5-H\\\",\\n  \\\"ETenms-B5-V\\\",\\n  \\\"EUC-H\\\",\\n  \\\"EUC-V\\\",\\n  \\\"Ext-H\\\",\\n  \\\"Ext-RKSJ-H\\\",\\n  \\\"Ext-RKSJ-V\\\",\\n  \\\"Ext-V\\\",\\n  \\\"GB-EUC-H\\\",\\n  \\\"GB-EUC-V\\\",\\n  \\\"GB-H\\\",\\n  \\\"GB-V\\\",\\n  \\\"GBK-EUC-H\\\",\\n  \\\"GBK-EUC-V\\\",\\n  \\\"GBK2K-H\\\",\\n  \\\"GBK2K-V\\\",\\n  \\\"GBKp-EUC-H\\\",\\n  \\\"GBKp-EUC-V\\\",\\n  \\\"GBT-EUC-H\\\",\\n  \\\"GBT-EUC-V\\\",\\n  \\\"GBT-H\\\",\\n  \\\"GBT-V\\\",\\n  \\\"GBTpc-EUC-H\\\",\\n  \\\"GBTpc-EUC-V\\\",\\n  \\\"GBpc-EUC-H\\\",\\n  \\\"GBpc-EUC-V\\\",\\n  \\\"H\\\",\\n  \\\"HKdla-B5-H\\\",\\n  \\\"HKdla-B5-V\\\",\\n  \\\"HKdlb-B5-H\\\",\\n  \\\"HKdlb-B5-V\\\",\\n  \\\"HKgccs-B5-H\\\",\\n  \\\"HKgccs-B5-V\\\",\\n  \\\"HKm314-B5-H\\\",\\n  \\\"HKm314-B5-V\\\",\\n  \\\"HKm471-B5-H\\\",\\n  \\\"HKm471-B5-V\\\",\\n  \\\"HKscs-B5-H\\\",\\n  \\\"HKscs-B5-V\\\",\\n  \\\"Hankaku\\\",\\n  \\\"Hiragana\\\",\\n  \\\"KSC-EUC-H\\\",\\n  \\\"KSC-EUC-V\\\",\\n  \\\"KSC-H\\\",\\n  \\\"KSC-Johab-H\\\",\\n  \\\"KSC-Johab-V\\\",\\n  \\\"KSC-V\\\",\\n  \\\"KSCms-UHC-H\\\",\\n  \\\"KSCms-UHC-HW-H\\\",\\n  \\\"KSCms-UHC-HW-V\\\",\\n  \\\"KSCms-UHC-V\\\",\\n  \\\"KSCpc-EUC-H\\\",\\n  \\\"KSCpc-EUC-V\\\",\\n  \\\"Katakana\\\",\\n  \\\"NWP-H\\\",\\n  \\\"NWP-V\\\",\\n  \\\"RKSJ-H\\\",\\n  \\\"RKSJ-V\\\",\\n  \\\"Roman\\\",\\n  \\\"UniCNS-UCS2-H\\\",\\n  \\\"UniCNS-UCS2-V\\\",\\n  \\\"UniCNS-UTF16-H\\\",\\n  \\\"UniCNS-UTF16-V\\\",\\n  \\\"UniCNS-UTF32-H\\\",\\n  \\\"UniCNS-UTF32-V\\\",\\n  \\\"UniCNS-UTF8-H\\\",\\n  \\\"UniCNS-UTF8-V\\\",\\n  \\\"UniGB-UCS2-H\\\",\\n  \\\"UniGB-UCS2-V\\\",\\n  \\\"UniGB-UTF16-H\\\",\\n  \\\"UniGB-UTF16-V\\\",\\n  \\\"UniGB-UTF32-H\\\",\\n  \\\"UniGB-UTF32-V\\\",\\n  \\\"UniGB-UTF8-H\\\",\\n  \\\"UniGB-UTF8-V\\\",\\n  \\\"UniJIS-UCS2-H\\\",\\n  \\\"UniJIS-UCS2-HW-H\\\",\\n  \\\"UniJIS-UCS2-HW-V\\\",\\n  \\\"UniJIS-UCS2-V\\\",\\n  \\\"UniJIS-UTF16-H\\\",\\n  \\\"UniJIS-UTF16-V\\\",\\n  \\\"UniJIS-UTF32-H\\\",\\n  \\\"UniJIS-UTF32-V\\\",\\n  \\\"UniJIS-UTF8-H\\\",\\n  \\\"UniJIS-UTF8-V\\\",\\n  \\\"UniJIS2004-UTF16-H\\\",\\n  \\\"UniJIS2004-UTF16-V\\\",\\n  \\\"UniJIS2004-UTF32-H\\\",\\n  \\\"UniJIS2004-UTF32-V\\\",\\n  \\\"UniJIS2004-UTF8-H\\\",\\n  \\\"UniJIS2004-UTF8-V\\\",\\n  \\\"UniJISPro-UCS2-HW-V\\\",\\n  \\\"UniJISPro-UCS2-V\\\",\\n  \\\"UniJISPro-UTF8-V\\\",\\n  \\\"UniJISX0213-UTF32-H\\\",\\n  \\\"UniJISX0213-UTF32-V\\\",\\n  \\\"UniJISX02132004-UTF32-H\\\",\\n  \\\"UniJISX02132004-UTF32-V\\\",\\n  \\\"UniKS-UCS2-H\\\",\\n  \\\"UniKS-UCS2-V\\\",\\n  \\\"UniKS-UTF16-H\\\",\\n  \\\"UniKS-UTF16-V\\\",\\n  \\\"UniKS-UTF32-H\\\",\\n  \\\"UniKS-UTF32-V\\\",\\n  \\\"UniKS-UTF8-H\\\",\\n  \\\"UniKS-UTF8-V\\\",\\n  \\\"V\\\",\\n  \\\"WP-Symbol\\\",\\n];\\n\\n\u002F\u002F Heuristic to avoid hanging the worker-thread for CMap data with ridiculously\\n\u002F\u002F large ranges, such as e.g. 0xFFFFFFFF (fixes issue11922_reduced.pdf).\\nconst MAX_MAP_RANGE = 2 ** 24 - 1; \u002F\u002F = 0xFFFFFF\\n\\n\u002F\u002F CMap, not to be confused with TrueType's cmap.\\nclass CMap {\\n  constructor(builtInCMap = false) {\\n    \u002F\u002F Codespace ranges are stored as follows:\\n    \u002F\u002F [[1BytePairs], [2BytePairs], [3BytePairs], [4BytePairs]]\\n    \u002F\u002F where nBytePairs are ranges e.g. [low1, high1, low2, high2, ...]\\n    this.codespaceRanges = [[], [], [], []];\\n    this.numCodespaceRanges = 0;\\n    \u002F\u002F Map entries have one of two forms.\\n    \u002F\u002F - cid chars are 16-bit unsigned integers, stored as integers.\\n    \u002F\u002F - bf chars are variable-length byte sequences, stored as strings, with\\n    \u002F\u002F   one byte per character.\\n    this._map = [];\\n    this.name = \\\"\\\";\\n    this.vertical = false;\\n    this.useCMap = null;\\n    this.builtInCMap = builtInCMap;\\n  }\\n\\n  addCodespaceRange(n, low, high) {\\n    this.codespaceRanges[n - 1].push(low, high);\\n    this.numCodespaceRanges++;\\n  }\\n\\n  mapCidRange(low, high, dstLow) {\\n    if (high - low > MAX_MAP_RANGE) {\\n      throw new Error(\\\"mapCidRange - ignoring data above MAX_MAP_RANGE.\\\");\\n    }\\n    while (low \u003C= high) {\\n      this._map[low++] = dstLow++;\\n    }\\n  }\\n\\n  mapBfRange(low, high, dstLow) {\\n    if (high - low > MAX_MAP_RANGE) {\\n      throw new Error(\\\"mapBfRange - ignoring data above MAX_MAP_RANGE.\\\");\\n    }\\n    const lastByte = dstLow.length - 1;\\n    while (low \u003C= high) {\\n      this._map[low++] = dstLow;\\n      \u002F\u002F Only the last byte has to be incremented (in the normal case).\\n      const nextCharCode = dstLow.charCodeAt(lastByte) + 1;\\n      if (nextCharCode > 0xff) {\\n        dstLow =\\n          dstLow.substring(0, lastByte - 1) +\\n          String.fromCharCode(dstLow.charCodeAt(lastByte - 1) + 1) +\\n          \\\"\\\\x00\\\";\\n        continue;\\n      }\\n      dstLow =\\n        dstLow.substring(0, lastByte) + String.fromCharCode(nextCharCode);\\n    }\\n  }\\n\\n  mapBfRangeToArray(low, high, array) {\\n    if (high - low > MAX_MAP_RANGE) {\\n      throw new Error(\\\"mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.\\\");\\n    }\\n    const ii = array.length;\\n    let i = 0;\\n    while (low \u003C= high && i \u003C ii) {\\n      this._map[low] = array[i++];\\n      ++low;\\n    }\\n  }\\n\\n  \u002F\u002F This is used for both bf and cid chars.\\n  mapOne(src, dst) {\\n    this._map[src] = dst;\\n  }\\n\\n  lookup(code) {\\n    return this._map[code];\\n  }\\n\\n  contains(code) {\\n    return this._map[code] !== undefined;\\n  }\\n\\n  forEach(callback) {\\n    \u002F\u002F Most maps have fewer than 65536 entries, and for those we use normal\\n    \u002F\u002F array iteration. But really sparse tables are possible -- e.g. with\\n    \u002F\u002F indices in the *billions*. For such tables we use for..in, which isn't\\n    \u002F\u002F ideal because it stringifies the indices for all present elements, but\\n    \u002F\u002F it does avoid iterating over every undefined entry.\\n    const map = this._map;\\n    const length = map.length;\\n    if (length \u003C= 0x10000) {\\n      for (let i = 0; i \u003C length; i++) {\\n        if (map[i] !== undefined) {\\n          callback(i, map[i]);\\n        }\\n      }\\n    } else {\\n      for (const i in map) {\\n        callback(i, map[i]);\\n      }\\n    }\\n  }\\n\\n  charCodeOf(value) {\\n    \u002F\u002F `Array.prototype.indexOf` is *extremely* inefficient for arrays which\\n    \u002F\u002F are both very sparse and very large (see issue8372.pdf).\\n    const map = this._map;\\n    if (map.length \u003C= 0x10000) {\\n      return map.indexOf(value);\\n    }\\n    for (const charCode in map) {\\n      if (map[charCode] === value) {\\n        return charCode | 0;\\n      }\\n    }\\n    return -1;\\n  }\\n\\n  getMap() {\\n    return this._map;\\n  }\\n\\n  readCharCode(str, offset, out) {\\n    let c = 0;\\n    const codespaceRanges = this.codespaceRanges;\\n    \u002F\u002F 9.7.6.2 CMap Mapping\\n    \u002F\u002F The code length is at most 4.\\n    for (let n = 0, nn = codespaceRanges.length; n \u003C nn; n++) {\\n      c = ((c \u003C\u003C 8) | str.charCodeAt(offset + n)) >>> 0;\\n      \u002F\u002F Check each codespace range to see if it falls within.\\n      const codespaceRange = codespaceRanges[n];\\n      for (let k = 0, kk = codespaceRange.length; k \u003C kk; ) {\\n        const low = codespaceRange[k++];\\n        const high = codespaceRange[k++];\\n        if (c >= low && c \u003C= high) {\\n          out.charcode = c;\\n          out.length = n + 1;\\n          return;\\n        }\\n      }\\n    }\\n    out.charcode = 0;\\n    out.length = 1;\\n  }\\n\\n  getCharCodeLength(charCode) {\\n    const codespaceRanges = this.codespaceRanges;\\n    for (let n = 0, nn = codespaceRanges.length; n \u003C nn; n++) {\\n      \u002F\u002F Check each codespace range to see if it falls within.\\n      const codespaceRange = codespaceRanges[n];\\n      for (let k = 0, kk = codespaceRange.length; k \u003C kk; ) {\\n        const low = codespaceRange[k++];\\n        const high = codespaceRange[k++];\\n        if (charCode >= low && charCode \u003C= high) {\\n          return n + 1;\\n        }\\n      }\\n    }\\n    return 1;\\n  }\\n\\n  get length() {\\n    return this._map.length;\\n  }\\n\\n  get isIdentityCMap() {\\n    if (!(this.name === \\\"Identity-H\\\" || this.name === \\\"Identity-V\\\")) {\\n      return false;\\n    }\\n    if (this._map.length !== 0x10000) {\\n      return false;\\n    }\\n    for (let i = 0; i \u003C 0x10000; i++) {\\n      if (this._map[i] !== i) {\\n        return false;\\n      }\\n    }\\n    return true;\\n  }\\n}\\n\\n\u002F\u002F A special case of CMap, where the _map array implicitly has a length of\\n\u002F\u002F 65536 and each element is equal to its index.\\nclass IdentityCMap extends CMap {\\n  constructor(vertical, n) {\\n    super();\\n\\n    this.vertical = vertical;\\n    this.addCodespaceRange(n, 0, 0xffff);\\n  }\\n\\n  mapCidRange(low, high, dstLow) {\\n    unreachable(\\\"should not call mapCidRange\\\");\\n  }\\n\\n  mapBfRange(low, high, dstLow) {\\n    unreachable(\\\"should not call mapBfRange\\\");\\n  }\\n\\n  mapBfRangeToArray(low, high, array) {\\n    unreachable(\\\"should not call mapBfRangeToArray\\\");\\n  }\\n\\n  mapOne(src, dst) {\\n    unreachable(\\\"should not call mapCidOne\\\");\\n  }\\n\\n  lookup(code) {\\n    return Number.isInteger(code) && code \u003C= 0xffff ? code : undefined;\\n  }\\n\\n  contains(code) {\\n    return Number.isInteger(code) && code \u003C= 0xffff;\\n  }\\n\\n  forEach(callback) {\\n    for (let i = 0; i \u003C= 0xffff; i++) {\\n      callback(i, i);\\n    }\\n  }\\n\\n  charCodeOf(value) {\\n    return Number.isInteger(value) && value \u003C= 0xffff ? value : -1;\\n  }\\n\\n  getMap() {\\n    \u002F\u002F Sometimes identity maps must be instantiated, but it's rare.\\n    const map = new Array(0x10000);\\n    for (let i = 0; i \u003C= 0xffff; i++) {\\n      map[i] = i;\\n    }\\n    return map;\\n  }\\n\\n  get length() {\\n    return 0x10000;\\n  }\\n\\n  \u002F\u002F eslint-disable-next-line getter-return\\n  get isIdentityCMap() {\\n    unreachable(\\\"should not access .isIdentityCMap\\\");\\n  }\\n}\\n\\nfunction strToInt(str) {\\n  let a = 0;\\n  for (let i = 0; i \u003C str.length; i++) {\\n    a = (a \u003C\u003C 8) | str.charCodeAt(i);\\n  }\\n  return a >>> 0;\\n}\\n\\nfunction expectString(obj) {\\n  if (typeof obj !== \\\"string\\\") {\\n    throw new FormatError(\\\"Malformed CMap: expected string.\\\");\\n  }\\n}\\n\\nfunction expectInt(obj) {\\n  if (!Number.isInteger(obj)) {\\n    throw new FormatError(\\\"Malformed CMap: expected int.\\\");\\n  }\\n}\\n\\nfunction parseBfChar(cMap, lexer) {\\n  while (true) {\\n    let obj = lexer.getObj();\\n    if (obj === EOF) {\\n      break;\\n    }\\n    if (isCmd(obj, \\\"endbfchar\\\")) {\\n      return;\\n    }\\n    expectString(obj);\\n    const src = strToInt(obj);\\n    obj = lexer.getObj();\\n    \u002F\u002F TODO are \u002FdstName used?\\n    expectString(obj);\\n    const dst = obj;\\n    cMap.mapOne(src, dst);\\n  }\\n}\\n\\nfunction parseBfRange(cMap, lexer) {\\n  while (true) {\\n    let obj = lexer.getObj();\\n    if (obj === EOF) {\\n      break;\\n    }\\n    if (isCmd(obj, \\\"endbfrange\\\")) {\\n      return;\\n    }\\n    expectString(obj);\\n    const low = strToInt(obj);\\n    obj = lexer.getObj();\\n    expectString(obj);\\n    const high = strToInt(obj);\\n    obj = lexer.getObj();\\n    if (Number.isInteger(obj) || typeof obj === \\\"string\\\") {\\n      const dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj;\\n      cMap.mapBfRange(low, high, dstLow);\\n    } else if (isCmd(obj, \\\"[\\\")) {\\n      obj = lexer.getObj();\\n      const array = [];\\n      while (!isCmd(obj, \\\"]\\\") && obj !== EOF) {\\n        array.push(obj);\\n        obj = lexer.getObj();\\n      }\\n      cMap.mapBfRangeToArray(low, high, array);\\n    } else {\\n      break;\\n    }\\n  }\\n  throw new FormatError(\\\"Invalid bf range.\\\");\\n}\\n\\nfunction parseCidChar(cMap, lexer) {\\n  while (true) {\\n    let obj = lexer.getObj();\\n    if (obj === EOF) {\\n      break;\\n    }\\n    if (isCmd(obj, \\\"endcidchar\\\")) {\\n      return;\\n    }\\n    expectString(obj);\\n    const src = strToInt(obj);\\n    obj = lexer.getObj();\\n    expectInt(obj);\\n    const dst = obj;\\n    cMap.mapOne(src, dst);\\n  }\\n}\\n\\nfunction parseCidRange(cMap, lexer) {\\n  while (true) {\\n    let obj = lexer.getObj();\\n    if (obj === EOF) {\\n      break;\\n    }\\n    if (isCmd(obj, \\\"endcidrange\\\")) {\\n      return;\\n    }\\n    expectString(obj);\\n    const low = strToInt(obj);\\n    obj = lexer.getObj();\\n    expectString(obj);\\n    const high = strToInt(obj);\\n    obj = lexer.getObj();\\n    expectInt(obj);\\n    const dstLow = obj;\\n    cMap.mapCidRange(low, high, dstLow);\\n  }\\n}\\n\\nfunction parseCodespaceRange(cMap, lexer) {\\n  while (true) {\\n    let obj = lexer.getObj();\\n    if (obj === EOF) {\\n      break;\\n    }\\n    if (isCmd(obj, \\\"endcodespacerange\\\")) {\\n      return;\\n    }\\n    if (typeof obj !== \\\"string\\\") {\\n      break;\\n    }\\n    const low = strToInt(obj);\\n    obj = lexer.getObj();\\n    if (typeof obj !== \\\"string\\\") {\\n      break;\\n    }\\n    const high = strToInt(obj);\\n    cMap.addCodespaceRange(obj.length, low, high);\\n  }\\n  throw new FormatError(\\\"Invalid codespace range.\\\");\\n}\\n\\nfunction parseWMode(cMap, lexer) {\\n  const obj = lexer.getObj();\\n  if (Number.isInteger(obj)) {\\n    cMap.vertical = !!obj;\\n  }\\n}\\n\\nfunction parseCMapName(cMap, lexer) {\\n  const obj = lexer.getObj();\\n  if (obj instanceof Name) {\\n    cMap.name = obj.name;\\n  }\\n}\\n\\nasync function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {\\n  let previous, embeddedUseCMap;\\n  objLoop: while (true) {\\n    try {\\n      const obj = lexer.getObj();\\n      if (obj === EOF) {\\n        break;\\n      } else if (obj instanceof Name) {\\n        if (obj.name === \\\"WMode\\\") {\\n          parseWMode(cMap, lexer);\\n        } else if (obj.name === \\\"CMapName\\\") {\\n          parseCMapName(cMap, lexer);\\n        }\\n        previous = obj;\\n      } else if (obj instanceof Cmd) {\\n        switch (obj.cmd) {\\n          case \\\"endcmap\\\":\\n            break objLoop;\\n          case \\\"usecmap\\\":\\n            if (previous instanceof Name) {\\n              embeddedUseCMap = previous.name;\\n            }\\n            break;\\n          case \\\"begincodespacerange\\\":\\n            parseCodespaceRange(cMap, lexer);\\n            break;\\n          case \\\"beginbfchar\\\":\\n            parseBfChar(cMap, lexer);\\n            break;\\n          case \\\"begincidchar\\\":\\n            parseCidChar(cMap, lexer);\\n            break;\\n          case \\\"beginbfrange\\\":\\n            parseBfRange(cMap, lexer);\\n            break;\\n          case \\\"begincidrange\\\":\\n            parseCidRange(cMap, lexer);\\n            break;\\n        }\\n      }\\n    } catch (ex) {\\n      if (ex instanceof MissingDataException) {\\n        throw ex;\\n      }\\n      warn(\\\"Invalid cMap data: \\\" + ex);\\n      continue;\\n    }\\n  }\\n\\n  if (!useCMap && embeddedUseCMap) {\\n    \u002F\u002F Load the useCMap definition from the file only if there wasn't one\\n    \u002F\u002F specified.\\n    useCMap = embeddedUseCMap;\\n  }\\n  if (useCMap) {\\n    return extendCMap(cMap, fetchBuiltInCMap, useCMap);\\n  }\\n  return cMap;\\n}\\n\\nasync function extendCMap(cMap, fetchBuiltInCMap, useCMap) {\\n  cMap.useCMap = await createBuiltInCMap(useCMap, fetchBuiltInCMap);\\n  \u002F\u002F If there aren't any code space ranges defined clone all the parent ones\\n  \u002F\u002F into this cMap.\\n  if (cMap.numCodespaceRanges === 0) {\\n    const useCodespaceRanges = cMap.useCMap.codespaceRanges;\\n    for (let i = 0; i \u003C useCodespaceRanges.length; i++) {\\n      cMap.codespaceRanges[i] = useCodespaceRanges[i].slice();\\n    }\\n    cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges;\\n  }\\n  \u002F\u002F Merge the map into the current one, making sure not to override\\n  \u002F\u002F any previously defined entries.\\n  cMap.useCMap.forEach(function (key, value) {\\n    if (!cMap.contains(key)) {\\n      cMap.mapOne(key, cMap.useCMap.lookup(key));\\n    }\\n  });\\n\\n  return cMap;\\n}\\n\\nasync function createBuiltInCMap(name, fetchBuiltInCMap) {\\n  if (name === \\\"Identity-H\\\") {\\n    return new IdentityCMap(false, 2);\\n  } else if (name === \\\"Identity-V\\\") {\\n    return new IdentityCMap(true, 2);\\n  }\\n  if (!BUILT_IN_CMAPS.includes(name)) {\\n    throw new Error(\\\"Unknown CMap name: \\\" + name);\\n  }\\n  if (!fetchBuiltInCMap) {\\n    throw new Error(\\\"Built-in CMap parameters are not provided.\\\");\\n  }\\n\\n  const { cMapData, compressionType } = await fetchBuiltInCMap(name);\\n  const cMap = new CMap(true);\\n\\n  if (compressionType === CMapCompressionType.BINARY) {\\n    return new BinaryCMapReader().process(cMapData, cMap, useCMap =>\\n      extendCMap(cMap, fetchBuiltInCMap, useCMap)\\n    );\\n  }\\n  if (compressionType === CMapCompressionType.NONE) {\\n    const lexer = new Lexer(new Stream(cMapData));\\n    return parseCMap(cMap, lexer, fetchBuiltInCMap, null);\\n  }\\n  throw new Error(`Invalid CMap \\\"compressionType\\\" value: ${compressionType}`);\\n}\\n\\nclass CMapFactory {\\n  static async create({ encoding, fetchBuiltInCMap, useCMap }) {\\n    if (encoding instanceof Name) {\\n      return createBuiltInCMap(encoding.name, fetchBuiltInCMap);\\n    } else if (encoding instanceof BaseStream) {\\n      const parsedCMap = await parseCMap(\\n        \u002F* cMap = *\u002F new CMap(),\\n        \u002F* lexer = *\u002F new Lexer(encoding),\\n        fetchBuiltInCMap,\\n        useCMap\\n      );\\n\\n      if (parsedCMap.isIdentityCMap) {\\n        return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap);\\n      }\\n      return parsedCMap;\\n    }\\n    throw new Error(\\\"Encoding required.\\\");\\n  }\\n}\\n\\nexport { CMap, CMapFactory, IdentityCMap };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F prettier-ignore\\nconst ISOAdobeCharset = [\\n  \\\".notdef\\\", \\\"space\\\", \\\"exclam\\\", \\\"quotedbl\\\", \\\"numbersign\\\", \\\"dollar\\\",\\n  \\\"percent\\\", \\\"ampersand\\\", \\\"quoteright\\\", \\\"parenleft\\\", \\\"parenright\\\",\\n  \\\"asterisk\\\", \\\"plus\\\", \\\"comma\\\", \\\"hyphen\\\", \\\"period\\\", \\\"slash\\\", \\\"zero\\\",\\n  \\\"one\\\", \\\"two\\\", \\\"three\\\", \\\"four\\\", \\\"five\\\", \\\"six\\\", \\\"seven\\\", \\\"eight\\\",\\n  \\\"nine\\\", \\\"colon\\\", \\\"semicolon\\\", \\\"less\\\", \\\"equal\\\", \\\"greater\\\", \\\"question\\\",\\n  \\\"at\\\", \\\"A\\\", \\\"B\\\", \\\"C\\\", \\\"D\\\", \\\"E\\\", \\\"F\\\", \\\"G\\\", \\\"H\\\", \\\"I\\\", \\\"J\\\", \\\"K\\\", \\\"L\\\", \\\"M\\\",\\n  \\\"N\\\", \\\"O\\\", \\\"P\\\", \\\"Q\\\", \\\"R\\\", \\\"S\\\", \\\"T\\\", \\\"U\\\", \\\"V\\\", \\\"W\\\", \\\"X\\\", \\\"Y\\\", \\\"Z\\\",\\n  \\\"bracketleft\\\", \\\"backslash\\\", \\\"bracketright\\\", \\\"asciicircum\\\", \\\"underscore\\\",\\n  \\\"quoteleft\\\", \\\"a\\\", \\\"b\\\", \\\"c\\\", \\\"d\\\", \\\"e\\\", \\\"f\\\", \\\"g\\\", \\\"h\\\", \\\"i\\\", \\\"j\\\", \\\"k\\\", \\\"l\\\",\\n  \\\"m\\\", \\\"n\\\", \\\"o\\\", \\\"p\\\", \\\"q\\\", \\\"r\\\", \\\"s\\\", \\\"t\\\", \\\"u\\\", \\\"v\\\", \\\"w\\\", \\\"x\\\", \\\"y\\\", \\\"z\\\",\\n  \\\"braceleft\\\", \\\"bar\\\", \\\"braceright\\\", \\\"asciitilde\\\", \\\"exclamdown\\\", \\\"cent\\\",\\n  \\\"sterling\\\", \\\"fraction\\\", \\\"yen\\\", \\\"florin\\\", \\\"section\\\", \\\"currency\\\",\\n  \\\"quotesingle\\\", \\\"quotedblleft\\\", \\\"guillemotleft\\\", \\\"guilsinglleft\\\",\\n  \\\"guilsinglright\\\", \\\"fi\\\", \\\"fl\\\", \\\"endash\\\", \\\"dagger\\\", \\\"daggerdbl\\\",\\n  \\\"periodcentered\\\", \\\"paragraph\\\", \\\"bullet\\\", \\\"quotesinglbase\\\",\\n  \\\"quotedblbase\\\", \\\"quotedblright\\\", \\\"guillemotright\\\", \\\"ellipsis\\\",\\n  \\\"perthousand\\\", \\\"questiondown\\\", \\\"grave\\\", \\\"acute\\\", \\\"circumflex\\\", \\\"tilde\\\",\\n  \\\"macron\\\", \\\"breve\\\", \\\"dotaccent\\\", \\\"dieresis\\\", \\\"ring\\\", \\\"cedilla\\\",\\n  \\\"hungarumlaut\\\", \\\"ogonek\\\", \\\"caron\\\", \\\"emdash\\\", \\\"AE\\\", \\\"ordfeminine\\\",\\n  \\\"Lslash\\\", \\\"Oslash\\\", \\\"OE\\\", \\\"ordmasculine\\\", \\\"ae\\\", \\\"dotlessi\\\", \\\"lslash\\\",\\n  \\\"oslash\\\", \\\"oe\\\", \\\"germandbls\\\", \\\"onesuperior\\\", \\\"logicalnot\\\", \\\"mu\\\",\\n  \\\"trademark\\\", \\\"Eth\\\", \\\"onehalf\\\", \\\"plusminus\\\", \\\"Thorn\\\", \\\"onequarter\\\",\\n  \\\"divide\\\", \\\"brokenbar\\\", \\\"degree\\\", \\\"thorn\\\", \\\"threequarters\\\", \\\"twosuperior\\\",\\n  \\\"registered\\\", \\\"minus\\\", \\\"eth\\\", \\\"multiply\\\", \\\"threesuperior\\\", \\\"copyright\\\",\\n  \\\"Aacute\\\", \\\"Acircumflex\\\", \\\"Adieresis\\\", \\\"Agrave\\\", \\\"Aring\\\", \\\"Atilde\\\",\\n  \\\"Ccedilla\\\", \\\"Eacute\\\", \\\"Ecircumflex\\\", \\\"Edieresis\\\", \\\"Egrave\\\", \\\"Iacute\\\",\\n  \\\"Icircumflex\\\", \\\"Idieresis\\\", \\\"Igrave\\\", \\\"Ntilde\\\", \\\"Oacute\\\", \\\"Ocircumflex\\\",\\n  \\\"Odieresis\\\", \\\"Ograve\\\", \\\"Otilde\\\", \\\"Scaron\\\", \\\"Uacute\\\", \\\"Ucircumflex\\\",\\n  \\\"Udieresis\\\", \\\"Ugrave\\\", \\\"Yacute\\\", \\\"Ydieresis\\\", \\\"Zcaron\\\", \\\"aacute\\\",\\n  \\\"acircumflex\\\", \\\"adieresis\\\", \\\"agrave\\\", \\\"aring\\\", \\\"atilde\\\", \\\"ccedilla\\\",\\n  \\\"eacute\\\", \\\"ecircumflex\\\", \\\"edieresis\\\", \\\"egrave\\\", \\\"iacute\\\", \\\"icircumflex\\\",\\n  \\\"idieresis\\\", \\\"igrave\\\", \\\"ntilde\\\", \\\"oacute\\\", \\\"ocircumflex\\\", \\\"odieresis\\\",\\n  \\\"ograve\\\", \\\"otilde\\\", \\\"scaron\\\", \\\"uacute\\\", \\\"ucircumflex\\\", \\\"udieresis\\\",\\n  \\\"ugrave\\\", \\\"yacute\\\", \\\"ydieresis\\\", \\\"zcaron\\\"\\n];\\n\\n\u002F\u002F prettier-ignore\\nconst ExpertCharset = [\\n  \\\".notdef\\\", \\\"space\\\", \\\"exclamsmall\\\", \\\"Hungarumlautsmall\\\", \\\"dollaroldstyle\\\",\\n  \\\"dollarsuperior\\\", \\\"ampersandsmall\\\", \\\"Acutesmall\\\", \\\"parenleftsuperior\\\",\\n  \\\"parenrightsuperior\\\", \\\"twodotenleader\\\", \\\"onedotenleader\\\", \\\"comma\\\",\\n  \\\"hyphen\\\", \\\"period\\\", \\\"fraction\\\", \\\"zerooldstyle\\\", \\\"oneoldstyle\\\",\\n  \\\"twooldstyle\\\", \\\"threeoldstyle\\\", \\\"fouroldstyle\\\", \\\"fiveoldstyle\\\",\\n  \\\"sixoldstyle\\\", \\\"sevenoldstyle\\\", \\\"eightoldstyle\\\", \\\"nineoldstyle\\\",\\n  \\\"colon\\\", \\\"semicolon\\\", \\\"commasuperior\\\", \\\"threequartersemdash\\\",\\n  \\\"periodsuperior\\\", \\\"questionsmall\\\", \\\"asuperior\\\", \\\"bsuperior\\\",\\n  \\\"centsuperior\\\", \\\"dsuperior\\\", \\\"esuperior\\\", \\\"isuperior\\\", \\\"lsuperior\\\",\\n  \\\"msuperior\\\", \\\"nsuperior\\\", \\\"osuperior\\\", \\\"rsuperior\\\", \\\"ssuperior\\\",\\n  \\\"tsuperior\\\", \\\"ff\\\", \\\"fi\\\", \\\"fl\\\", \\\"ffi\\\", \\\"ffl\\\", \\\"parenleftinferior\\\",\\n  \\\"parenrightinferior\\\", \\\"Circumflexsmall\\\", \\\"hyphensuperior\\\", \\\"Gravesmall\\\",\\n  \\\"Asmall\\\", \\\"Bsmall\\\", \\\"Csmall\\\", \\\"Dsmall\\\", \\\"Esmall\\\", \\\"Fsmall\\\", \\\"Gsmall\\\",\\n  \\\"Hsmall\\\", \\\"Ismall\\\", \\\"Jsmall\\\", \\\"Ksmall\\\", \\\"Lsmall\\\", \\\"Msmall\\\", \\\"Nsmall\\\",\\n  \\\"Osmall\\\", \\\"Psmall\\\", \\\"Qsmall\\\", \\\"Rsmall\\\", \\\"Ssmall\\\", \\\"Tsmall\\\", \\\"Usmall\\\",\\n  \\\"Vsmall\\\", \\\"Wsmall\\\", \\\"Xsmall\\\", \\\"Ysmall\\\", \\\"Zsmall\\\", \\\"colonmonetary\\\",\\n  \\\"onefitted\\\", \\\"rupiah\\\", \\\"Tildesmall\\\", \\\"exclamdownsmall\\\", \\\"centoldstyle\\\",\\n  \\\"Lslashsmall\\\", \\\"Scaronsmall\\\", \\\"Zcaronsmall\\\", \\\"Dieresissmall\\\",\\n  \\\"Brevesmall\\\", \\\"Caronsmall\\\", \\\"Dotaccentsmall\\\", \\\"Macronsmall\\\",\\n  \\\"figuredash\\\", \\\"hypheninferior\\\", \\\"Ogoneksmall\\\", \\\"Ringsmall\\\",\\n  \\\"Cedillasmall\\\", \\\"onequarter\\\", \\\"onehalf\\\", \\\"threequarters\\\",\\n  \\\"questiondownsmall\\\", \\\"oneeighth\\\", \\\"threeeighths\\\", \\\"fiveeighths\\\",\\n  \\\"seveneighths\\\", \\\"onethird\\\", \\\"twothirds\\\", \\\"zerosuperior\\\", \\\"onesuperior\\\",\\n  \\\"twosuperior\\\", \\\"threesuperior\\\", \\\"foursuperior\\\", \\\"fivesuperior\\\",\\n  \\\"sixsuperior\\\", \\\"sevensuperior\\\", \\\"eightsuperior\\\", \\\"ninesuperior\\\",\\n  \\\"zeroinferior\\\", \\\"oneinferior\\\", \\\"twoinferior\\\", \\\"threeinferior\\\",\\n  \\\"fourinferior\\\", \\\"fiveinferior\\\", \\\"sixinferior\\\", \\\"seveninferior\\\",\\n  \\\"eightinferior\\\", \\\"nineinferior\\\", \\\"centinferior\\\", \\\"dollarinferior\\\",\\n  \\\"periodinferior\\\", \\\"commainferior\\\", \\\"Agravesmall\\\", \\\"Aacutesmall\\\",\\n  \\\"Acircumflexsmall\\\", \\\"Atildesmall\\\", \\\"Adieresissmall\\\", \\\"Aringsmall\\\",\\n  \\\"AEsmall\\\", \\\"Ccedillasmall\\\", \\\"Egravesmall\\\", \\\"Eacutesmall\\\",\\n  \\\"Ecircumflexsmall\\\", \\\"Edieresissmall\\\", \\\"Igravesmall\\\", \\\"Iacutesmall\\\",\\n  \\\"Icircumflexsmall\\\", \\\"Idieresissmall\\\", \\\"Ethsmall\\\", \\\"Ntildesmall\\\",\\n  \\\"Ogravesmall\\\", \\\"Oacutesmall\\\", \\\"Ocircumflexsmall\\\", \\\"Otildesmall\\\",\\n  \\\"Odieresissmall\\\", \\\"OEsmall\\\", \\\"Oslashsmall\\\", \\\"Ugravesmall\\\", \\\"Uacutesmall\\\",\\n  \\\"Ucircumflexsmall\\\", \\\"Udieresissmall\\\", \\\"Yacutesmall\\\", \\\"Thornsmall\\\",\\n  \\\"Ydieresissmall\\\"\\n];\\n\\n\u002F\u002F prettier-ignore\\nconst ExpertSubsetCharset = [\\n  \\\".notdef\\\", \\\"space\\\", \\\"dollaroldstyle\\\", \\\"dollarsuperior\\\",\\n  \\\"parenleftsuperior\\\", \\\"parenrightsuperior\\\", \\\"twodotenleader\\\",\\n  \\\"onedotenleader\\\", \\\"comma\\\", \\\"hyphen\\\", \\\"period\\\", \\\"fraction\\\",\\n  \\\"zerooldstyle\\\", \\\"oneoldstyle\\\", \\\"twooldstyle\\\", \\\"threeoldstyle\\\",\\n  \\\"fouroldstyle\\\", \\\"fiveoldstyle\\\", \\\"sixoldstyle\\\", \\\"sevenoldstyle\\\",\\n  \\\"eightoldstyle\\\", \\\"nineoldstyle\\\", \\\"colon\\\", \\\"semicolon\\\", \\\"commasuperior\\\",\\n  \\\"threequartersemdash\\\", \\\"periodsuperior\\\", \\\"asuperior\\\", \\\"bsuperior\\\",\\n  \\\"centsuperior\\\", \\\"dsuperior\\\", \\\"esuperior\\\", \\\"isuperior\\\", \\\"lsuperior\\\",\\n  \\\"msuperior\\\", \\\"nsuperior\\\", \\\"osuperior\\\", \\\"rsuperior\\\", \\\"ssuperior\\\",\\n  \\\"tsuperior\\\", \\\"ff\\\", \\\"fi\\\", \\\"fl\\\", \\\"ffi\\\", \\\"ffl\\\", \\\"parenleftinferior\\\",\\n  \\\"parenrightinferior\\\", \\\"hyphensuperior\\\", \\\"colonmonetary\\\", \\\"onefitted\\\",\\n  \\\"rupiah\\\", \\\"centoldstyle\\\", \\\"figuredash\\\", \\\"hypheninferior\\\", \\\"onequarter\\\",\\n  \\\"onehalf\\\", \\\"threequarters\\\", \\\"oneeighth\\\", \\\"threeeighths\\\", \\\"fiveeighths\\\",\\n  \\\"seveneighths\\\", \\\"onethird\\\", \\\"twothirds\\\", \\\"zerosuperior\\\", \\\"onesuperior\\\",\\n  \\\"twosuperior\\\", \\\"threesuperior\\\", \\\"foursuperior\\\", \\\"fivesuperior\\\",\\n  \\\"sixsuperior\\\", \\\"sevensuperior\\\", \\\"eightsuperior\\\", \\\"ninesuperior\\\",\\n  \\\"zeroinferior\\\", \\\"oneinferior\\\", \\\"twoinferior\\\", \\\"threeinferior\\\",\\n  \\\"fourinferior\\\", \\\"fiveinferior\\\", \\\"sixinferior\\\", \\\"seveninferior\\\",\\n  \\\"eightinferior\\\", \\\"nineinferior\\\", \\\"centinferior\\\", \\\"dollarinferior\\\",\\n  \\\"periodinferior\\\", \\\"commainferior\\\"\\n];\\n\\nexport { ExpertCharset, ExpertSubsetCharset, ISOAdobeCharset };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F prettier-ignore\\nconst ExpertEncoding = [\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"space\\\", \\\"exclamsmall\\\", \\\"Hungarumlautsmall\\\", \\\"\\\", \\\"dollaroldstyle\\\",\\n  \\\"dollarsuperior\\\", \\\"ampersandsmall\\\", \\\"Acutesmall\\\", \\\"parenleftsuperior\\\",\\n  \\\"parenrightsuperior\\\", \\\"twodotenleader\\\", \\\"onedotenleader\\\", \\\"comma\\\",\\n  \\\"hyphen\\\", \\\"period\\\", \\\"fraction\\\", \\\"zerooldstyle\\\", \\\"oneoldstyle\\\",\\n  \\\"twooldstyle\\\", \\\"threeoldstyle\\\", \\\"fouroldstyle\\\", \\\"fiveoldstyle\\\",\\n  \\\"sixoldstyle\\\", \\\"sevenoldstyle\\\", \\\"eightoldstyle\\\", \\\"nineoldstyle\\\", \\\"colon\\\",\\n  \\\"semicolon\\\", \\\"commasuperior\\\", \\\"threequartersemdash\\\", \\\"periodsuperior\\\",\\n  \\\"questionsmall\\\", \\\"\\\", \\\"asuperior\\\", \\\"bsuperior\\\", \\\"centsuperior\\\", \\\"dsuperior\\\",\\n  \\\"esuperior\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"isuperior\\\", \\\"\\\", \\\"\\\", \\\"lsuperior\\\", \\\"msuperior\\\",\\n  \\\"nsuperior\\\", \\\"osuperior\\\", \\\"\\\", \\\"\\\", \\\"rsuperior\\\", \\\"ssuperior\\\", \\\"tsuperior\\\",\\n  \\\"\\\", \\\"ff\\\", \\\"fi\\\", \\\"fl\\\", \\\"ffi\\\", \\\"ffl\\\", \\\"parenleftinferior\\\", \\\"\\\",\\n  \\\"parenrightinferior\\\", \\\"Circumflexsmall\\\", \\\"hyphensuperior\\\", \\\"Gravesmall\\\",\\n  \\\"Asmall\\\", \\\"Bsmall\\\", \\\"Csmall\\\", \\\"Dsmall\\\", \\\"Esmall\\\", \\\"Fsmall\\\", \\\"Gsmall\\\",\\n  \\\"Hsmall\\\", \\\"Ismall\\\", \\\"Jsmall\\\", \\\"Ksmall\\\", \\\"Lsmall\\\", \\\"Msmall\\\", \\\"Nsmall\\\",\\n  \\\"Osmall\\\", \\\"Psmall\\\", \\\"Qsmall\\\", \\\"Rsmall\\\", \\\"Ssmall\\\", \\\"Tsmall\\\", \\\"Usmall\\\",\\n  \\\"Vsmall\\\", \\\"Wsmall\\\", \\\"Xsmall\\\", \\\"Ysmall\\\", \\\"Zsmall\\\", \\\"colonmonetary\\\",\\n  \\\"onefitted\\\", \\\"rupiah\\\", \\\"Tildesmall\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"exclamdownsmall\\\", \\\"centoldstyle\\\", \\\"Lslashsmall\\\",\\n  \\\"\\\", \\\"\\\", \\\"Scaronsmall\\\", \\\"Zcaronsmall\\\", \\\"Dieresissmall\\\", \\\"Brevesmall\\\",\\n  \\\"Caronsmall\\\", \\\"\\\", \\\"Dotaccentsmall\\\", \\\"\\\", \\\"\\\", \\\"Macronsmall\\\", \\\"\\\", \\\"\\\",\\n  \\\"figuredash\\\", \\\"hypheninferior\\\", \\\"\\\", \\\"\\\", \\\"Ogoneksmall\\\", \\\"Ringsmall\\\",\\n  \\\"Cedillasmall\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"onequarter\\\", \\\"onehalf\\\", \\\"threequarters\\\",\\n  \\\"questiondownsmall\\\", \\\"oneeighth\\\", \\\"threeeighths\\\", \\\"fiveeighths\\\",\\n  \\\"seveneighths\\\", \\\"onethird\\\", \\\"twothirds\\\", \\\"\\\", \\\"\\\", \\\"zerosuperior\\\",\\n  \\\"onesuperior\\\", \\\"twosuperior\\\", \\\"threesuperior\\\", \\\"foursuperior\\\",\\n  \\\"fivesuperior\\\", \\\"sixsuperior\\\", \\\"sevensuperior\\\", \\\"eightsuperior\\\",\\n  \\\"ninesuperior\\\", \\\"zeroinferior\\\", \\\"oneinferior\\\", \\\"twoinferior\\\",\\n  \\\"threeinferior\\\", \\\"fourinferior\\\", \\\"fiveinferior\\\", \\\"sixinferior\\\",\\n  \\\"seveninferior\\\", \\\"eightinferior\\\", \\\"nineinferior\\\", \\\"centinferior\\\",\\n  \\\"dollarinferior\\\", \\\"periodinferior\\\", \\\"commainferior\\\", \\\"Agravesmall\\\",\\n  \\\"Aacutesmall\\\", \\\"Acircumflexsmall\\\", \\\"Atildesmall\\\", \\\"Adieresissmall\\\",\\n  \\\"Aringsmall\\\", \\\"AEsmall\\\", \\\"Ccedillasmall\\\", \\\"Egravesmall\\\", \\\"Eacutesmall\\\",\\n  \\\"Ecircumflexsmall\\\", \\\"Edieresissmall\\\", \\\"Igravesmall\\\", \\\"Iacutesmall\\\",\\n  \\\"Icircumflexsmall\\\", \\\"Idieresissmall\\\", \\\"Ethsmall\\\", \\\"Ntildesmall\\\",\\n  \\\"Ogravesmall\\\", \\\"Oacutesmall\\\", \\\"Ocircumflexsmall\\\", \\\"Otildesmall\\\",\\n  \\\"Odieresissmall\\\", \\\"OEsmall\\\", \\\"Oslashsmall\\\", \\\"Ugravesmall\\\", \\\"Uacutesmall\\\",\\n  \\\"Ucircumflexsmall\\\", \\\"Udieresissmall\\\", \\\"Yacutesmall\\\", \\\"Thornsmall\\\",\\n  \\\"Ydieresissmall\\\"];\\n\\n\u002F\u002F prettier-ignore\\nconst MacExpertEncoding = [\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"space\\\", \\\"exclamsmall\\\", \\\"Hungarumlautsmall\\\", \\\"centoldstyle\\\",\\n  \\\"dollaroldstyle\\\", \\\"dollarsuperior\\\", \\\"ampersandsmall\\\", \\\"Acutesmall\\\",\\n  \\\"parenleftsuperior\\\", \\\"parenrightsuperior\\\", \\\"twodotenleader\\\",\\n  \\\"onedotenleader\\\", \\\"comma\\\", \\\"hyphen\\\", \\\"period\\\", \\\"fraction\\\", \\\"zerooldstyle\\\",\\n  \\\"oneoldstyle\\\", \\\"twooldstyle\\\", \\\"threeoldstyle\\\", \\\"fouroldstyle\\\",\\n  \\\"fiveoldstyle\\\", \\\"sixoldstyle\\\", \\\"sevenoldstyle\\\", \\\"eightoldstyle\\\",\\n  \\\"nineoldstyle\\\", \\\"colon\\\", \\\"semicolon\\\", \\\"\\\", \\\"threequartersemdash\\\", \\\"\\\",\\n  \\\"questionsmall\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"Ethsmall\\\", \\\"\\\", \\\"\\\", \\\"onequarter\\\",\\n  \\\"onehalf\\\", \\\"threequarters\\\", \\\"oneeighth\\\", \\\"threeeighths\\\", \\\"fiveeighths\\\",\\n  \\\"seveneighths\\\", \\\"onethird\\\", \\\"twothirds\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"ff\\\",\\n  \\\"fi\\\", \\\"fl\\\", \\\"ffi\\\", \\\"ffl\\\", \\\"parenleftinferior\\\", \\\"\\\", \\\"parenrightinferior\\\",\\n  \\\"Circumflexsmall\\\", \\\"hypheninferior\\\", \\\"Gravesmall\\\", \\\"Asmall\\\", \\\"Bsmall\\\",\\n  \\\"Csmall\\\", \\\"Dsmall\\\", \\\"Esmall\\\", \\\"Fsmall\\\", \\\"Gsmall\\\", \\\"Hsmall\\\", \\\"Ismall\\\",\\n  \\\"Jsmall\\\", \\\"Ksmall\\\", \\\"Lsmall\\\", \\\"Msmall\\\", \\\"Nsmall\\\", \\\"Osmall\\\", \\\"Psmall\\\",\\n  \\\"Qsmall\\\", \\\"Rsmall\\\", \\\"Ssmall\\\", \\\"Tsmall\\\", \\\"Usmall\\\", \\\"Vsmall\\\", \\\"Wsmall\\\",\\n  \\\"Xsmall\\\", \\\"Ysmall\\\", \\\"Zsmall\\\", \\\"colonmonetary\\\", \\\"onefitted\\\", \\\"rupiah\\\",\\n  \\\"Tildesmall\\\", \\\"\\\", \\\"\\\", \\\"asuperior\\\", \\\"centsuperior\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"Aacutesmall\\\", \\\"Agravesmall\\\", \\\"Acircumflexsmall\\\", \\\"Adieresissmall\\\",\\n  \\\"Atildesmall\\\", \\\"Aringsmall\\\", \\\"Ccedillasmall\\\", \\\"Eacutesmall\\\", \\\"Egravesmall\\\",\\n  \\\"Ecircumflexsmall\\\", \\\"Edieresissmall\\\", \\\"Iacutesmall\\\", \\\"Igravesmall\\\",\\n  \\\"Icircumflexsmall\\\", \\\"Idieresissmall\\\", \\\"Ntildesmall\\\", \\\"Oacutesmall\\\",\\n  \\\"Ogravesmall\\\", \\\"Ocircumflexsmall\\\", \\\"Odieresissmall\\\", \\\"Otildesmall\\\",\\n  \\\"Uacutesmall\\\", \\\"Ugravesmall\\\", \\\"Ucircumflexsmall\\\", \\\"Udieresissmall\\\", \\\"\\\",\\n  \\\"eightsuperior\\\", \\\"fourinferior\\\", \\\"threeinferior\\\", \\\"sixinferior\\\",\\n  \\\"eightinferior\\\", \\\"seveninferior\\\", \\\"Scaronsmall\\\", \\\"\\\", \\\"centinferior\\\",\\n  \\\"twoinferior\\\", \\\"\\\", \\\"Dieresissmall\\\", \\\"\\\", \\\"Caronsmall\\\", \\\"osuperior\\\",\\n  \\\"fiveinferior\\\", \\\"\\\", \\\"commainferior\\\", \\\"periodinferior\\\", \\\"Yacutesmall\\\", \\\"\\\",\\n  \\\"dollarinferior\\\", \\\"\\\", \\\"\\\", \\\"Thornsmall\\\", \\\"\\\", \\\"nineinferior\\\", \\\"zeroinferior\\\",\\n  \\\"Zcaronsmall\\\", \\\"AEsmall\\\", \\\"Oslashsmall\\\", \\\"questiondownsmall\\\",\\n  \\\"oneinferior\\\", \\\"Lslashsmall\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"Cedillasmall\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"OEsmall\\\", \\\"figuredash\\\", \\\"hyphensuperior\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"exclamdownsmall\\\", \\\"\\\", \\\"Ydieresissmall\\\", \\\"\\\", \\\"onesuperior\\\", \\\"twosuperior\\\",\\n  \\\"threesuperior\\\", \\\"foursuperior\\\", \\\"fivesuperior\\\", \\\"sixsuperior\\\",\\n  \\\"sevensuperior\\\", \\\"ninesuperior\\\", \\\"zerosuperior\\\", \\\"\\\", \\\"esuperior\\\",\\n  \\\"rsuperior\\\", \\\"tsuperior\\\", \\\"\\\", \\\"\\\", \\\"isuperior\\\", \\\"ssuperior\\\", \\\"dsuperior\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"lsuperior\\\", \\\"Ogoneksmall\\\", \\\"Brevesmall\\\",\\n  \\\"Macronsmall\\\", \\\"bsuperior\\\", \\\"nsuperior\\\", \\\"msuperior\\\", \\\"commasuperior\\\",\\n  \\\"periodsuperior\\\", \\\"Dotaccentsmall\\\", \\\"Ringsmall\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\"];\\n\\n\u002F\u002F prettier-ignore\\nconst MacRomanEncoding = [\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"space\\\", \\\"exclam\\\", \\\"quotedbl\\\", \\\"numbersign\\\", \\\"dollar\\\", \\\"percent\\\",\\n  \\\"ampersand\\\", \\\"quotesingle\\\", \\\"parenleft\\\", \\\"parenright\\\", \\\"asterisk\\\", \\\"plus\\\",\\n  \\\"comma\\\", \\\"hyphen\\\", \\\"period\\\", \\\"slash\\\", \\\"zero\\\", \\\"one\\\", \\\"two\\\", \\\"three\\\",\\n  \\\"four\\\", \\\"five\\\", \\\"six\\\", \\\"seven\\\", \\\"eight\\\", \\\"nine\\\", \\\"colon\\\", \\\"semicolon\\\",\\n  \\\"less\\\", \\\"equal\\\", \\\"greater\\\", \\\"question\\\", \\\"at\\\", \\\"A\\\", \\\"B\\\", \\\"C\\\", \\\"D\\\", \\\"E\\\", \\\"F\\\",\\n  \\\"G\\\", \\\"H\\\", \\\"I\\\", \\\"J\\\", \\\"K\\\", \\\"L\\\", \\\"M\\\", \\\"N\\\", \\\"O\\\", \\\"P\\\", \\\"Q\\\", \\\"R\\\", \\\"S\\\", \\\"T\\\", \\\"U\\\",\\n  \\\"V\\\", \\\"W\\\", \\\"X\\\", \\\"Y\\\", \\\"Z\\\", \\\"bracketleft\\\", \\\"backslash\\\", \\\"bracketright\\\",\\n  \\\"asciicircum\\\", \\\"underscore\\\", \\\"grave\\\", \\\"a\\\", \\\"b\\\", \\\"c\\\", \\\"d\\\", \\\"e\\\", \\\"f\\\", \\\"g\\\",\\n  \\\"h\\\", \\\"i\\\", \\\"j\\\", \\\"k\\\", \\\"l\\\", \\\"m\\\", \\\"n\\\", \\\"o\\\", \\\"p\\\", \\\"q\\\", \\\"r\\\", \\\"s\\\", \\\"t\\\", \\\"u\\\", \\\"v\\\",\\n  \\\"w\\\", \\\"x\\\", \\\"y\\\", \\\"z\\\", \\\"braceleft\\\", \\\"bar\\\", \\\"braceright\\\", \\\"asciitilde\\\", \\\"\\\",\\n  \\\"Adieresis\\\", \\\"Aring\\\", \\\"Ccedilla\\\", \\\"Eacute\\\", \\\"Ntilde\\\", \\\"Odieresis\\\",\\n  \\\"Udieresis\\\", \\\"aacute\\\", \\\"agrave\\\", \\\"acircumflex\\\", \\\"adieresis\\\", \\\"atilde\\\",\\n  \\\"aring\\\", \\\"ccedilla\\\", \\\"eacute\\\", \\\"egrave\\\", \\\"ecircumflex\\\", \\\"edieresis\\\",\\n  \\\"iacute\\\", \\\"igrave\\\", \\\"icircumflex\\\", \\\"idieresis\\\", \\\"ntilde\\\", \\\"oacute\\\",\\n  \\\"ograve\\\", \\\"ocircumflex\\\", \\\"odieresis\\\", \\\"otilde\\\", \\\"uacute\\\", \\\"ugrave\\\",\\n  \\\"ucircumflex\\\", \\\"udieresis\\\", \\\"dagger\\\", \\\"degree\\\", \\\"cent\\\", \\\"sterling\\\",\\n  \\\"section\\\", \\\"bullet\\\", \\\"paragraph\\\", \\\"germandbls\\\", \\\"registered\\\", \\\"copyright\\\",\\n  \\\"trademark\\\", \\\"acute\\\", \\\"dieresis\\\", \\\"notequal\\\", \\\"AE\\\", \\\"Oslash\\\", \\\"infinity\\\",\\n  \\\"plusminus\\\", \\\"lessequal\\\", \\\"greaterequal\\\", \\\"yen\\\", \\\"mu\\\", \\\"partialdiff\\\",\\n  \\\"summation\\\", \\\"product\\\", \\\"pi\\\", \\\"integral\\\", \\\"ordfeminine\\\", \\\"ordmasculine\\\",\\n  \\\"Omega\\\", \\\"ae\\\", \\\"oslash\\\", \\\"questiondown\\\", \\\"exclamdown\\\", \\\"logicalnot\\\",\\n  \\\"radical\\\", \\\"florin\\\", \\\"approxequal\\\", \\\"Delta\\\", \\\"guillemotleft\\\",\\n  \\\"guillemotright\\\", \\\"ellipsis\\\", \\\"space\\\", \\\"Agrave\\\", \\\"Atilde\\\", \\\"Otilde\\\", \\\"OE\\\",\\n  \\\"oe\\\", \\\"endash\\\", \\\"emdash\\\", \\\"quotedblleft\\\", \\\"quotedblright\\\", \\\"quoteleft\\\",\\n  \\\"quoteright\\\", \\\"divide\\\", \\\"lozenge\\\", \\\"ydieresis\\\", \\\"Ydieresis\\\", \\\"fraction\\\",\\n  \\\"currency\\\", \\\"guilsinglleft\\\", \\\"guilsinglright\\\", \\\"fi\\\", \\\"fl\\\", \\\"daggerdbl\\\",\\n  \\\"periodcentered\\\", \\\"quotesinglbase\\\", \\\"quotedblbase\\\", \\\"perthousand\\\",\\n  \\\"Acircumflex\\\", \\\"Ecircumflex\\\", \\\"Aacute\\\", \\\"Edieresis\\\", \\\"Egrave\\\", \\\"Iacute\\\",\\n  \\\"Icircumflex\\\", \\\"Idieresis\\\", \\\"Igrave\\\", \\\"Oacute\\\", \\\"Ocircumflex\\\", \\\"apple\\\",\\n  \\\"Ograve\\\", \\\"Uacute\\\", \\\"Ucircumflex\\\", \\\"Ugrave\\\", \\\"dotlessi\\\", \\\"circumflex\\\",\\n  \\\"tilde\\\", \\\"macron\\\", \\\"breve\\\", \\\"dotaccent\\\", \\\"ring\\\", \\\"cedilla\\\", \\\"hungarumlaut\\\",\\n  \\\"ogonek\\\", \\\"caron\\\"];\\n\\n\u002F\u002F prettier-ignore\\nconst StandardEncoding = [\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"space\\\", \\\"exclam\\\", \\\"quotedbl\\\", \\\"numbersign\\\", \\\"dollar\\\", \\\"percent\\\",\\n  \\\"ampersand\\\", \\\"quoteright\\\", \\\"parenleft\\\", \\\"parenright\\\", \\\"asterisk\\\", \\\"plus\\\",\\n  \\\"comma\\\", \\\"hyphen\\\", \\\"period\\\", \\\"slash\\\", \\\"zero\\\", \\\"one\\\", \\\"two\\\", \\\"three\\\",\\n  \\\"four\\\", \\\"five\\\", \\\"six\\\", \\\"seven\\\", \\\"eight\\\", \\\"nine\\\", \\\"colon\\\", \\\"semicolon\\\",\\n  \\\"less\\\", \\\"equal\\\", \\\"greater\\\", \\\"question\\\", \\\"at\\\", \\\"A\\\", \\\"B\\\", \\\"C\\\", \\\"D\\\", \\\"E\\\", \\\"F\\\",\\n  \\\"G\\\", \\\"H\\\", \\\"I\\\", \\\"J\\\", \\\"K\\\", \\\"L\\\", \\\"M\\\", \\\"N\\\", \\\"O\\\", \\\"P\\\", \\\"Q\\\", \\\"R\\\", \\\"S\\\", \\\"T\\\", \\\"U\\\",\\n  \\\"V\\\", \\\"W\\\", \\\"X\\\", \\\"Y\\\", \\\"Z\\\", \\\"bracketleft\\\", \\\"backslash\\\", \\\"bracketright\\\",\\n  \\\"asciicircum\\\", \\\"underscore\\\", \\\"quoteleft\\\", \\\"a\\\", \\\"b\\\", \\\"c\\\", \\\"d\\\", \\\"e\\\", \\\"f\\\",\\n  \\\"g\\\", \\\"h\\\", \\\"i\\\", \\\"j\\\", \\\"k\\\", \\\"l\\\", \\\"m\\\", \\\"n\\\", \\\"o\\\", \\\"p\\\", \\\"q\\\", \\\"r\\\", \\\"s\\\", \\\"t\\\", \\\"u\\\",\\n  \\\"v\\\", \\\"w\\\", \\\"x\\\", \\\"y\\\", \\\"z\\\", \\\"braceleft\\\", \\\"bar\\\", \\\"braceright\\\", \\\"asciitilde\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"exclamdown\\\",\\n  \\\"cent\\\", \\\"sterling\\\", \\\"fraction\\\", \\\"yen\\\", \\\"florin\\\", \\\"section\\\", \\\"currency\\\",\\n  \\\"quotesingle\\\", \\\"quotedblleft\\\", \\\"guillemotleft\\\", \\\"guilsinglleft\\\",\\n  \\\"guilsinglright\\\", \\\"fi\\\", \\\"fl\\\", \\\"\\\", \\\"endash\\\", \\\"dagger\\\", \\\"daggerdbl\\\",\\n  \\\"periodcentered\\\", \\\"\\\", \\\"paragraph\\\", \\\"bullet\\\", \\\"quotesinglbase\\\",\\n  \\\"quotedblbase\\\", \\\"quotedblright\\\", \\\"guillemotright\\\", \\\"ellipsis\\\",\\n  \\\"perthousand\\\", \\\"\\\", \\\"questiondown\\\", \\\"\\\", \\\"grave\\\", \\\"acute\\\", \\\"circumflex\\\",\\n  \\\"tilde\\\", \\\"macron\\\", \\\"breve\\\", \\\"dotaccent\\\", \\\"dieresis\\\", \\\"\\\", \\\"ring\\\", \\\"cedilla\\\",\\n  \\\"\\\", \\\"hungarumlaut\\\", \\\"ogonek\\\", \\\"caron\\\", \\\"emdash\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"AE\\\", \\\"\\\", \\\"ordfeminine\\\", \\\"\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"Lslash\\\", \\\"Oslash\\\", \\\"OE\\\", \\\"ordmasculine\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"ae\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"dotlessi\\\", \\\"\\\", \\\"\\\", \\\"lslash\\\", \\\"oslash\\\", \\\"oe\\\", \\\"germandbls\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\"];\\n\\n\u002F\u002F prettier-ignore\\nconst WinAnsiEncoding = [\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"space\\\", \\\"exclam\\\", \\\"quotedbl\\\", \\\"numbersign\\\", \\\"dollar\\\", \\\"percent\\\",\\n  \\\"ampersand\\\", \\\"quotesingle\\\", \\\"parenleft\\\", \\\"parenright\\\", \\\"asterisk\\\", \\\"plus\\\",\\n  \\\"comma\\\", \\\"hyphen\\\", \\\"period\\\", \\\"slash\\\", \\\"zero\\\", \\\"one\\\", \\\"two\\\", \\\"three\\\",\\n  \\\"four\\\", \\\"five\\\", \\\"six\\\", \\\"seven\\\", \\\"eight\\\", \\\"nine\\\", \\\"colon\\\", \\\"semicolon\\\",\\n  \\\"less\\\", \\\"equal\\\", \\\"greater\\\", \\\"question\\\", \\\"at\\\", \\\"A\\\", \\\"B\\\", \\\"C\\\", \\\"D\\\", \\\"E\\\", \\\"F\\\",\\n  \\\"G\\\", \\\"H\\\", \\\"I\\\", \\\"J\\\", \\\"K\\\", \\\"L\\\", \\\"M\\\", \\\"N\\\", \\\"O\\\", \\\"P\\\", \\\"Q\\\", \\\"R\\\", \\\"S\\\", \\\"T\\\", \\\"U\\\",\\n  \\\"V\\\", \\\"W\\\", \\\"X\\\", \\\"Y\\\", \\\"Z\\\", \\\"bracketleft\\\", \\\"backslash\\\", \\\"bracketright\\\",\\n  \\\"asciicircum\\\", \\\"underscore\\\", \\\"grave\\\", \\\"a\\\", \\\"b\\\", \\\"c\\\", \\\"d\\\", \\\"e\\\", \\\"f\\\", \\\"g\\\",\\n  \\\"h\\\", \\\"i\\\", \\\"j\\\", \\\"k\\\", \\\"l\\\", \\\"m\\\", \\\"n\\\", \\\"o\\\", \\\"p\\\", \\\"q\\\", \\\"r\\\", \\\"s\\\", \\\"t\\\", \\\"u\\\", \\\"v\\\",\\n  \\\"w\\\", \\\"x\\\", \\\"y\\\", \\\"z\\\", \\\"braceleft\\\", \\\"bar\\\", \\\"braceright\\\", \\\"asciitilde\\\",\\n  \\\"bullet\\\", \\\"Euro\\\", \\\"bullet\\\", \\\"quotesinglbase\\\", \\\"florin\\\", \\\"quotedblbase\\\",\\n  \\\"ellipsis\\\", \\\"dagger\\\", \\\"daggerdbl\\\", \\\"circumflex\\\", \\\"perthousand\\\", \\\"Scaron\\\",\\n  \\\"guilsinglleft\\\", \\\"OE\\\", \\\"bullet\\\", \\\"Zcaron\\\", \\\"bullet\\\", \\\"bullet\\\", \\\"quoteleft\\\",\\n  \\\"quoteright\\\", \\\"quotedblleft\\\", \\\"quotedblright\\\", \\\"bullet\\\", \\\"endash\\\",\\n  \\\"emdash\\\", \\\"tilde\\\", \\\"trademark\\\", \\\"scaron\\\", \\\"guilsinglright\\\", \\\"oe\\\", \\\"bullet\\\",\\n  \\\"zcaron\\\", \\\"Ydieresis\\\", \\\"space\\\", \\\"exclamdown\\\", \\\"cent\\\", \\\"sterling\\\",\\n  \\\"currency\\\", \\\"yen\\\", \\\"brokenbar\\\", \\\"section\\\", \\\"dieresis\\\", \\\"copyright\\\",\\n  \\\"ordfeminine\\\", \\\"guillemotleft\\\", \\\"logicalnot\\\", \\\"hyphen\\\", \\\"registered\\\",\\n  \\\"macron\\\", \\\"degree\\\", \\\"plusminus\\\", \\\"twosuperior\\\", \\\"threesuperior\\\", \\\"acute\\\",\\n  \\\"mu\\\", \\\"paragraph\\\", \\\"periodcentered\\\", \\\"cedilla\\\", \\\"onesuperior\\\",\\n  \\\"ordmasculine\\\", \\\"guillemotright\\\", \\\"onequarter\\\", \\\"onehalf\\\", \\\"threequarters\\\",\\n  \\\"questiondown\\\", \\\"Agrave\\\", \\\"Aacute\\\", \\\"Acircumflex\\\", \\\"Atilde\\\", \\\"Adieresis\\\",\\n  \\\"Aring\\\", \\\"AE\\\", \\\"Ccedilla\\\", \\\"Egrave\\\", \\\"Eacute\\\", \\\"Ecircumflex\\\", \\\"Edieresis\\\",\\n  \\\"Igrave\\\", \\\"Iacute\\\", \\\"Icircumflex\\\", \\\"Idieresis\\\", \\\"Eth\\\", \\\"Ntilde\\\", \\\"Ograve\\\",\\n  \\\"Oacute\\\", \\\"Ocircumflex\\\", \\\"Otilde\\\", \\\"Odieresis\\\", \\\"multiply\\\", \\\"Oslash\\\",\\n  \\\"Ugrave\\\", \\\"Uacute\\\", \\\"Ucircumflex\\\", \\\"Udieresis\\\", \\\"Yacute\\\", \\\"Thorn\\\",\\n  \\\"germandbls\\\", \\\"agrave\\\", \\\"aacute\\\", \\\"acircumflex\\\", \\\"atilde\\\", \\\"adieresis\\\",\\n  \\\"aring\\\", \\\"ae\\\", \\\"ccedilla\\\", \\\"egrave\\\", \\\"eacute\\\", \\\"ecircumflex\\\", \\\"edieresis\\\",\\n  \\\"igrave\\\", \\\"iacute\\\", \\\"icircumflex\\\", \\\"idieresis\\\", \\\"eth\\\", \\\"ntilde\\\", \\\"ograve\\\",\\n  \\\"oacute\\\", \\\"ocircumflex\\\", \\\"otilde\\\", \\\"odieresis\\\", \\\"divide\\\", \\\"oslash\\\",\\n  \\\"ugrave\\\", \\\"uacute\\\", \\\"ucircumflex\\\", \\\"udieresis\\\", \\\"yacute\\\", \\\"thorn\\\",\\n  \\\"ydieresis\\\"];\\n\\n\u002F\u002F prettier-ignore\\nconst SymbolSetEncoding = [\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"space\\\", \\\"exclam\\\", \\\"universal\\\", \\\"numbersign\\\", \\\"existential\\\", \\\"percent\\\",\\n  \\\"ampersand\\\", \\\"suchthat\\\", \\\"parenleft\\\", \\\"parenright\\\", \\\"asteriskmath\\\", \\\"plus\\\",\\n  \\\"comma\\\", \\\"minus\\\", \\\"period\\\", \\\"slash\\\", \\\"zero\\\", \\\"one\\\", \\\"two\\\", \\\"three\\\", \\\"four\\\",\\n  \\\"five\\\", \\\"six\\\", \\\"seven\\\", \\\"eight\\\", \\\"nine\\\", \\\"colon\\\", \\\"semicolon\\\", \\\"less\\\",\\n  \\\"equal\\\", \\\"greater\\\", \\\"question\\\", \\\"congruent\\\", \\\"Alpha\\\", \\\"Beta\\\", \\\"Chi\\\",\\n  \\\"Delta\\\", \\\"Epsilon\\\", \\\"Phi\\\", \\\"Gamma\\\", \\\"Eta\\\", \\\"Iota\\\", \\\"theta1\\\", \\\"Kappa\\\",\\n  \\\"Lambda\\\", \\\"Mu\\\", \\\"Nu\\\", \\\"Omicron\\\", \\\"Pi\\\", \\\"Theta\\\", \\\"Rho\\\", \\\"Sigma\\\", \\\"Tau\\\",\\n  \\\"Upsilon\\\", \\\"sigma1\\\", \\\"Omega\\\", \\\"Xi\\\", \\\"Psi\\\", \\\"Zeta\\\", \\\"bracketleft\\\",\\n  \\\"therefore\\\", \\\"bracketright\\\", \\\"perpendicular\\\", \\\"underscore\\\", \\\"radicalex\\\",\\n  \\\"alpha\\\", \\\"beta\\\", \\\"chi\\\", \\\"delta\\\", \\\"epsilon\\\", \\\"phi\\\", \\\"gamma\\\", \\\"eta\\\", \\\"iota\\\",\\n  \\\"phi1\\\", \\\"kappa\\\", \\\"lambda\\\", \\\"mu\\\", \\\"nu\\\", \\\"omicron\\\", \\\"pi\\\", \\\"theta\\\", \\\"rho\\\",\\n  \\\"sigma\\\", \\\"tau\\\", \\\"upsilon\\\", \\\"omega1\\\", \\\"omega\\\", \\\"xi\\\", \\\"psi\\\", \\\"zeta\\\",\\n  \\\"braceleft\\\", \\\"bar\\\", \\\"braceright\\\", \\\"similar\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"Euro\\\", \\\"Upsilon1\\\", \\\"minute\\\", \\\"lessequal\\\",\\n  \\\"fraction\\\", \\\"infinity\\\", \\\"florin\\\", \\\"club\\\", \\\"diamond\\\", \\\"heart\\\", \\\"spade\\\",\\n  \\\"arrowboth\\\", \\\"arrowleft\\\", \\\"arrowup\\\", \\\"arrowright\\\", \\\"arrowdown\\\", \\\"degree\\\",\\n  \\\"plusminus\\\", \\\"second\\\", \\\"greaterequal\\\", \\\"multiply\\\", \\\"proportional\\\",\\n  \\\"partialdiff\\\", \\\"bullet\\\", \\\"divide\\\", \\\"notequal\\\", \\\"equivalence\\\",\\n  \\\"approxequal\\\", \\\"ellipsis\\\", \\\"arrowvertex\\\", \\\"arrowhorizex\\\", \\\"carriagereturn\\\",\\n  \\\"aleph\\\", \\\"Ifraktur\\\", \\\"Rfraktur\\\", \\\"weierstrass\\\", \\\"circlemultiply\\\",\\n  \\\"circleplus\\\", \\\"emptyset\\\", \\\"intersection\\\", \\\"union\\\", \\\"propersuperset\\\",\\n  \\\"reflexsuperset\\\", \\\"notsubset\\\", \\\"propersubset\\\", \\\"reflexsubset\\\", \\\"element\\\",\\n  \\\"notelement\\\", \\\"angle\\\", \\\"gradient\\\", \\\"registerserif\\\", \\\"copyrightserif\\\",\\n  \\\"trademarkserif\\\", \\\"product\\\", \\\"radical\\\", \\\"dotmath\\\", \\\"logicalnot\\\",\\n  \\\"logicaland\\\", \\\"logicalor\\\", \\\"arrowdblboth\\\", \\\"arrowdblleft\\\", \\\"arrowdblup\\\",\\n  \\\"arrowdblright\\\", \\\"arrowdbldown\\\", \\\"lozenge\\\", \\\"angleleft\\\", \\\"registersans\\\",\\n  \\\"copyrightsans\\\", \\\"trademarksans\\\", \\\"summation\\\", \\\"parenlefttp\\\",\\n  \\\"parenleftex\\\", \\\"parenleftbt\\\", \\\"bracketlefttp\\\", \\\"bracketleftex\\\",\\n  \\\"bracketleftbt\\\", \\\"bracelefttp\\\", \\\"braceleftmid\\\", \\\"braceleftbt\\\", \\\"braceex\\\",\\n  \\\"\\\", \\\"angleright\\\", \\\"integral\\\", \\\"integraltp\\\", \\\"integralex\\\", \\\"integralbt\\\",\\n  \\\"parenrighttp\\\", \\\"parenrightex\\\", \\\"parenrightbt\\\", \\\"bracketrighttp\\\",\\n  \\\"bracketrightex\\\", \\\"bracketrightbt\\\", \\\"bracerighttp\\\", \\\"bracerightmid\\\",\\n  \\\"bracerightbt\\\", \\\"\\\"];\\n\\n\u002F\u002F prettier-ignore\\nconst ZapfDingbatsEncoding = [\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"space\\\", \\\"a1\\\", \\\"a2\\\", \\\"a202\\\", \\\"a3\\\", \\\"a4\\\", \\\"a5\\\", \\\"a119\\\", \\\"a118\\\", \\\"a117\\\",\\n  \\\"a11\\\", \\\"a12\\\", \\\"a13\\\", \\\"a14\\\", \\\"a15\\\", \\\"a16\\\", \\\"a105\\\", \\\"a17\\\", \\\"a18\\\", \\\"a19\\\",\\n  \\\"a20\\\", \\\"a21\\\", \\\"a22\\\", \\\"a23\\\", \\\"a24\\\", \\\"a25\\\", \\\"a26\\\", \\\"a27\\\", \\\"a28\\\", \\\"a6\\\", \\\"a7\\\",\\n  \\\"a8\\\", \\\"a9\\\", \\\"a10\\\", \\\"a29\\\", \\\"a30\\\", \\\"a31\\\", \\\"a32\\\", \\\"a33\\\", \\\"a34\\\", \\\"a35\\\", \\\"a36\\\",\\n  \\\"a37\\\", \\\"a38\\\", \\\"a39\\\", \\\"a40\\\", \\\"a41\\\", \\\"a42\\\", \\\"a43\\\", \\\"a44\\\", \\\"a45\\\", \\\"a46\\\",\\n  \\\"a47\\\", \\\"a48\\\", \\\"a49\\\", \\\"a50\\\", \\\"a51\\\", \\\"a52\\\", \\\"a53\\\", \\\"a54\\\", \\\"a55\\\", \\\"a56\\\",\\n  \\\"a57\\\", \\\"a58\\\", \\\"a59\\\", \\\"a60\\\", \\\"a61\\\", \\\"a62\\\", \\\"a63\\\", \\\"a64\\\", \\\"a65\\\", \\\"a66\\\",\\n  \\\"a67\\\", \\\"a68\\\", \\\"a69\\\", \\\"a70\\\", \\\"a71\\\", \\\"a72\\\", \\\"a73\\\", \\\"a74\\\", \\\"a203\\\", \\\"a75\\\",\\n  \\\"a204\\\", \\\"a76\\\", \\\"a77\\\", \\\"a78\\\", \\\"a79\\\", \\\"a81\\\", \\\"a82\\\", \\\"a83\\\", \\\"a84\\\", \\\"a97\\\",\\n  \\\"a98\\\", \\\"a99\\\", \\\"a100\\\", \\\"\\\", \\\"a89\\\", \\\"a90\\\", \\\"a93\\\", \\\"a94\\\", \\\"a91\\\", \\\"a92\\\", \\\"a205\\\",\\n  \\\"a85\\\", \\\"a206\\\", \\\"a86\\\", \\\"a87\\\", \\\"a88\\\", \\\"a95\\\", \\\"a96\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"a101\\\", \\\"a102\\\", \\\"a103\\\",\\n  \\\"a104\\\", \\\"a106\\\", \\\"a107\\\", \\\"a108\\\", \\\"a112\\\", \\\"a111\\\", \\\"a110\\\", \\\"a109\\\", \\\"a120\\\",\\n  \\\"a121\\\", \\\"a122\\\", \\\"a123\\\", \\\"a124\\\", \\\"a125\\\", \\\"a126\\\", \\\"a127\\\", \\\"a128\\\", \\\"a129\\\",\\n  \\\"a130\\\", \\\"a131\\\", \\\"a132\\\", \\\"a133\\\", \\\"a134\\\", \\\"a135\\\", \\\"a136\\\", \\\"a137\\\", \\\"a138\\\",\\n  \\\"a139\\\", \\\"a140\\\", \\\"a141\\\", \\\"a142\\\", \\\"a143\\\", \\\"a144\\\", \\\"a145\\\", \\\"a146\\\", \\\"a147\\\",\\n  \\\"a148\\\", \\\"a149\\\", \\\"a150\\\", \\\"a151\\\", \\\"a152\\\", \\\"a153\\\", \\\"a154\\\", \\\"a155\\\", \\\"a156\\\",\\n  \\\"a157\\\", \\\"a158\\\", \\\"a159\\\", \\\"a160\\\", \\\"a161\\\", \\\"a163\\\", \\\"a164\\\", \\\"a196\\\", \\\"a165\\\",\\n  \\\"a192\\\", \\\"a166\\\", \\\"a167\\\", \\\"a168\\\", \\\"a169\\\", \\\"a170\\\", \\\"a171\\\", \\\"a172\\\", \\\"a173\\\",\\n  \\\"a162\\\", \\\"a174\\\", \\\"a175\\\", \\\"a176\\\", \\\"a177\\\", \\\"a178\\\", \\\"a179\\\", \\\"a193\\\", \\\"a180\\\",\\n  \\\"a199\\\", \\\"a181\\\", \\\"a200\\\", \\\"a182\\\", \\\"\\\", \\\"a201\\\", \\\"a183\\\", \\\"a184\\\", \\\"a197\\\", \\\"a185\\\",\\n  \\\"a194\\\", \\\"a198\\\", \\\"a186\\\", \\\"a195\\\", \\\"a187\\\", \\\"a188\\\", \\\"a189\\\", \\\"a190\\\", \\\"a191\\\", \\\"\\\"];\\n\\nfunction getEncoding(encodingName) {\\n  switch (encodingName) {\\n    case \\\"WinAnsiEncoding\\\":\\n      return WinAnsiEncoding;\\n    case \\\"StandardEncoding\\\":\\n      return StandardEncoding;\\n    case \\\"MacRomanEncoding\\\":\\n      return MacRomanEncoding;\\n    case \\\"SymbolSetEncoding\\\":\\n      return SymbolSetEncoding;\\n    case \\\"ZapfDingbatsEncoding\\\":\\n      return ZapfDingbatsEncoding;\\n    case \\\"ExpertEncoding\\\":\\n      return ExpertEncoding;\\n    case \\\"MacExpertEncoding\\\":\\n      return MacExpertEncoding;\\n    default:\\n      return null;\\n  }\\n}\\n\\nexport {\\n  ExpertEncoding,\\n  getEncoding,\\n  MacRomanEncoding,\\n  StandardEncoding,\\n  SymbolSetEncoding,\\n  WinAnsiEncoding,\\n  ZapfDingbatsEncoding,\\n};\\n\",\"\u002F* Copyright 2016 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  bytesToString,\\n  FormatError,\\n  info,\\n  shadow,\\n  stringToBytes,\\n  Util,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  ExpertCharset,\\n  ExpertSubsetCharset,\\n  ISOAdobeCharset,\\n} from \\\".\u002Fcharsets.js\\\";\\nimport { ExpertEncoding, StandardEncoding } from \\\".\u002Fencodings.js\\\";\\n\\n\u002F\u002F Maximum subroutine call depth of type 2 charstrings. Matches OTS.\\nconst MAX_SUBR_NESTING = 10;\\n\\n\u002F**\\n * The CFF class takes a Type1 file and wrap it into a\\n * 'Compact Font Format' which itself embed Type2 charstrings.\\n *\u002F\\n\u002F\u002F prettier-ignore\\nconst CFFStandardStrings = [\\n  \\\".notdef\\\", \\\"space\\\", \\\"exclam\\\", \\\"quotedbl\\\", \\\"numbersign\\\", \\\"dollar\\\", \\\"percent\\\",\\n  \\\"ampersand\\\", \\\"quoteright\\\", \\\"parenleft\\\", \\\"parenright\\\", \\\"asterisk\\\", \\\"plus\\\",\\n  \\\"comma\\\", \\\"hyphen\\\", \\\"period\\\", \\\"slash\\\", \\\"zero\\\", \\\"one\\\", \\\"two\\\", \\\"three\\\", \\\"four\\\",\\n  \\\"five\\\", \\\"six\\\", \\\"seven\\\", \\\"eight\\\", \\\"nine\\\", \\\"colon\\\", \\\"semicolon\\\", \\\"less\\\",\\n  \\\"equal\\\", \\\"greater\\\", \\\"question\\\", \\\"at\\\", \\\"A\\\", \\\"B\\\", \\\"C\\\", \\\"D\\\", \\\"E\\\", \\\"F\\\", \\\"G\\\", \\\"H\\\",\\n  \\\"I\\\", \\\"J\\\", \\\"K\\\", \\\"L\\\", \\\"M\\\", \\\"N\\\", \\\"O\\\", \\\"P\\\", \\\"Q\\\", \\\"R\\\", \\\"S\\\", \\\"T\\\", \\\"U\\\", \\\"V\\\", \\\"W\\\",\\n  \\\"X\\\", \\\"Y\\\", \\\"Z\\\", \\\"bracketleft\\\", \\\"backslash\\\", \\\"bracketright\\\", \\\"asciicircum\\\",\\n  \\\"underscore\\\", \\\"quoteleft\\\", \\\"a\\\", \\\"b\\\", \\\"c\\\", \\\"d\\\", \\\"e\\\", \\\"f\\\", \\\"g\\\", \\\"h\\\", \\\"i\\\", \\\"j\\\",\\n  \\\"k\\\", \\\"l\\\", \\\"m\\\", \\\"n\\\", \\\"o\\\", \\\"p\\\", \\\"q\\\", \\\"r\\\", \\\"s\\\", \\\"t\\\", \\\"u\\\", \\\"v\\\", \\\"w\\\", \\\"x\\\", \\\"y\\\",\\n  \\\"z\\\", \\\"braceleft\\\", \\\"bar\\\", \\\"braceright\\\", \\\"asciitilde\\\", \\\"exclamdown\\\", \\\"cent\\\",\\n  \\\"sterling\\\", \\\"fraction\\\", \\\"yen\\\", \\\"florin\\\", \\\"section\\\", \\\"currency\\\",\\n  \\\"quotesingle\\\", \\\"quotedblleft\\\", \\\"guillemotleft\\\", \\\"guilsinglleft\\\",\\n  \\\"guilsinglright\\\", \\\"fi\\\", \\\"fl\\\", \\\"endash\\\", \\\"dagger\\\", \\\"daggerdbl\\\",\\n  \\\"periodcentered\\\", \\\"paragraph\\\", \\\"bullet\\\", \\\"quotesinglbase\\\", \\\"quotedblbase\\\",\\n  \\\"quotedblright\\\", \\\"guillemotright\\\", \\\"ellipsis\\\", \\\"perthousand\\\", \\\"questiondown\\\",\\n  \\\"grave\\\", \\\"acute\\\", \\\"circumflex\\\", \\\"tilde\\\", \\\"macron\\\", \\\"breve\\\", \\\"dotaccent\\\",\\n  \\\"dieresis\\\", \\\"ring\\\", \\\"cedilla\\\", \\\"hungarumlaut\\\", \\\"ogonek\\\", \\\"caron\\\", \\\"emdash\\\",\\n  \\\"AE\\\", \\\"ordfeminine\\\", \\\"Lslash\\\", \\\"Oslash\\\", \\\"OE\\\", \\\"ordmasculine\\\", \\\"ae\\\",\\n  \\\"dotlessi\\\", \\\"lslash\\\", \\\"oslash\\\", \\\"oe\\\", \\\"germandbls\\\", \\\"onesuperior\\\",\\n  \\\"logicalnot\\\", \\\"mu\\\", \\\"trademark\\\", \\\"Eth\\\", \\\"onehalf\\\", \\\"plusminus\\\", \\\"Thorn\\\",\\n  \\\"onequarter\\\", \\\"divide\\\", \\\"brokenbar\\\", \\\"degree\\\", \\\"thorn\\\", \\\"threequarters\\\",\\n  \\\"twosuperior\\\", \\\"registered\\\", \\\"minus\\\", \\\"eth\\\", \\\"multiply\\\", \\\"threesuperior\\\",\\n  \\\"copyright\\\", \\\"Aacute\\\", \\\"Acircumflex\\\", \\\"Adieresis\\\", \\\"Agrave\\\", \\\"Aring\\\",\\n  \\\"Atilde\\\", \\\"Ccedilla\\\", \\\"Eacute\\\", \\\"Ecircumflex\\\", \\\"Edieresis\\\", \\\"Egrave\\\",\\n  \\\"Iacute\\\", \\\"Icircumflex\\\", \\\"Idieresis\\\", \\\"Igrave\\\", \\\"Ntilde\\\", \\\"Oacute\\\",\\n  \\\"Ocircumflex\\\", \\\"Odieresis\\\", \\\"Ograve\\\", \\\"Otilde\\\", \\\"Scaron\\\", \\\"Uacute\\\",\\n  \\\"Ucircumflex\\\", \\\"Udieresis\\\", \\\"Ugrave\\\", \\\"Yacute\\\", \\\"Ydieresis\\\", \\\"Zcaron\\\",\\n  \\\"aacute\\\", \\\"acircumflex\\\", \\\"adieresis\\\", \\\"agrave\\\", \\\"aring\\\", \\\"atilde\\\",\\n  \\\"ccedilla\\\", \\\"eacute\\\", \\\"ecircumflex\\\", \\\"edieresis\\\", \\\"egrave\\\", \\\"iacute\\\",\\n  \\\"icircumflex\\\", \\\"idieresis\\\", \\\"igrave\\\", \\\"ntilde\\\", \\\"oacute\\\", \\\"ocircumflex\\\",\\n  \\\"odieresis\\\", \\\"ograve\\\", \\\"otilde\\\", \\\"scaron\\\", \\\"uacute\\\", \\\"ucircumflex\\\",\\n  \\\"udieresis\\\", \\\"ugrave\\\", \\\"yacute\\\", \\\"ydieresis\\\", \\\"zcaron\\\", \\\"exclamsmall\\\",\\n  \\\"Hungarumlautsmall\\\", \\\"dollaroldstyle\\\", \\\"dollarsuperior\\\", \\\"ampersandsmall\\\",\\n  \\\"Acutesmall\\\", \\\"parenleftsuperior\\\", \\\"parenrightsuperior\\\", \\\"twodotenleader\\\",\\n  \\\"onedotenleader\\\", \\\"zerooldstyle\\\", \\\"oneoldstyle\\\", \\\"twooldstyle\\\",\\n  \\\"threeoldstyle\\\", \\\"fouroldstyle\\\", \\\"fiveoldstyle\\\", \\\"sixoldstyle\\\",\\n  \\\"sevenoldstyle\\\", \\\"eightoldstyle\\\", \\\"nineoldstyle\\\", \\\"commasuperior\\\",\\n  \\\"threequartersemdash\\\", \\\"periodsuperior\\\", \\\"questionsmall\\\", \\\"asuperior\\\",\\n  \\\"bsuperior\\\", \\\"centsuperior\\\", \\\"dsuperior\\\", \\\"esuperior\\\", \\\"isuperior\\\",\\n  \\\"lsuperior\\\", \\\"msuperior\\\", \\\"nsuperior\\\", \\\"osuperior\\\", \\\"rsuperior\\\", \\\"ssuperior\\\",\\n  \\\"tsuperior\\\", \\\"ff\\\", \\\"ffi\\\", \\\"ffl\\\", \\\"parenleftinferior\\\", \\\"parenrightinferior\\\",\\n  \\\"Circumflexsmall\\\", \\\"hyphensuperior\\\", \\\"Gravesmall\\\", \\\"Asmall\\\", \\\"Bsmall\\\",\\n  \\\"Csmall\\\", \\\"Dsmall\\\", \\\"Esmall\\\", \\\"Fsmall\\\", \\\"Gsmall\\\", \\\"Hsmall\\\", \\\"Ismall\\\",\\n  \\\"Jsmall\\\", \\\"Ksmall\\\", \\\"Lsmall\\\", \\\"Msmall\\\", \\\"Nsmall\\\", \\\"Osmall\\\", \\\"Psmall\\\",\\n  \\\"Qsmall\\\", \\\"Rsmall\\\", \\\"Ssmall\\\", \\\"Tsmall\\\", \\\"Usmall\\\", \\\"Vsmall\\\", \\\"Wsmall\\\",\\n  \\\"Xsmall\\\", \\\"Ysmall\\\", \\\"Zsmall\\\", \\\"colonmonetary\\\", \\\"onefitted\\\", \\\"rupiah\\\",\\n  \\\"Tildesmall\\\", \\\"exclamdownsmall\\\", \\\"centoldstyle\\\", \\\"Lslashsmall\\\",\\n  \\\"Scaronsmall\\\", \\\"Zcaronsmall\\\", \\\"Dieresissmall\\\", \\\"Brevesmall\\\", \\\"Caronsmall\\\",\\n  \\\"Dotaccentsmall\\\", \\\"Macronsmall\\\", \\\"figuredash\\\", \\\"hypheninferior\\\",\\n  \\\"Ogoneksmall\\\", \\\"Ringsmall\\\", \\\"Cedillasmall\\\", \\\"questiondownsmall\\\", \\\"oneeighth\\\",\\n  \\\"threeeighths\\\", \\\"fiveeighths\\\", \\\"seveneighths\\\", \\\"onethird\\\", \\\"twothirds\\\",\\n  \\\"zerosuperior\\\", \\\"foursuperior\\\", \\\"fivesuperior\\\", \\\"sixsuperior\\\",\\n  \\\"sevensuperior\\\", \\\"eightsuperior\\\", \\\"ninesuperior\\\", \\\"zeroinferior\\\",\\n  \\\"oneinferior\\\", \\\"twoinferior\\\", \\\"threeinferior\\\", \\\"fourinferior\\\",\\n  \\\"fiveinferior\\\", \\\"sixinferior\\\", \\\"seveninferior\\\", \\\"eightinferior\\\",\\n  \\\"nineinferior\\\", \\\"centinferior\\\", \\\"dollarinferior\\\", \\\"periodinferior\\\",\\n  \\\"commainferior\\\", \\\"Agravesmall\\\", \\\"Aacutesmall\\\", \\\"Acircumflexsmall\\\",\\n  \\\"Atildesmall\\\", \\\"Adieresissmall\\\", \\\"Aringsmall\\\", \\\"AEsmall\\\", \\\"Ccedillasmall\\\",\\n  \\\"Egravesmall\\\", \\\"Eacutesmall\\\", \\\"Ecircumflexsmall\\\", \\\"Edieresissmall\\\",\\n  \\\"Igravesmall\\\", \\\"Iacutesmall\\\", \\\"Icircumflexsmall\\\", \\\"Idieresissmall\\\",\\n  \\\"Ethsmall\\\", \\\"Ntildesmall\\\", \\\"Ogravesmall\\\", \\\"Oacutesmall\\\", \\\"Ocircumflexsmall\\\",\\n  \\\"Otildesmall\\\", \\\"Odieresissmall\\\", \\\"OEsmall\\\", \\\"Oslashsmall\\\", \\\"Ugravesmall\\\",\\n  \\\"Uacutesmall\\\", \\\"Ucircumflexsmall\\\", \\\"Udieresissmall\\\", \\\"Yacutesmall\\\",\\n  \\\"Thornsmall\\\", \\\"Ydieresissmall\\\", \\\"001.000\\\", \\\"001.001\\\", \\\"001.002\\\", \\\"001.003\\\",\\n  \\\"Black\\\", \\\"Bold\\\", \\\"Book\\\", \\\"Light\\\", \\\"Medium\\\", \\\"Regular\\\", \\\"Roman\\\", \\\"Semibold\\\"\\n];\\n\\nconst NUM_STANDARD_CFF_STRINGS = 391;\\n\\nconst CharstringValidationData = [\\n  \u002F*  0 *\u002F null,\\n  \u002F*  1 *\u002F { id: \\\"hstem\\\", min: 2, stackClearing: true, stem: true },\\n  \u002F*  2 *\u002F null,\\n  \u002F*  3 *\u002F { id: \\\"vstem\\\", min: 2, stackClearing: true, stem: true },\\n  \u002F*  4 *\u002F { id: \\\"vmoveto\\\", min: 1, stackClearing: true },\\n  \u002F*  5 *\u002F { id: \\\"rlineto\\\", min: 2, resetStack: true },\\n  \u002F*  6 *\u002F { id: \\\"hlineto\\\", min: 1, resetStack: true },\\n  \u002F*  7 *\u002F { id: \\\"vlineto\\\", min: 1, resetStack: true },\\n  \u002F*  8 *\u002F { id: \\\"rrcurveto\\\", min: 6, resetStack: true },\\n  \u002F*  9 *\u002F null,\\n  \u002F* 10 *\u002F { id: \\\"callsubr\\\", min: 1, undefStack: true },\\n  \u002F* 11 *\u002F { id: \\\"return\\\", min: 0, undefStack: true },\\n  \u002F* 12 *\u002F null,\\n  \u002F* 13 *\u002F null,\\n  \u002F* 14 *\u002F { id: \\\"endchar\\\", min: 0, stackClearing: true },\\n  \u002F* 15 *\u002F null,\\n  \u002F* 16 *\u002F null,\\n  \u002F* 17 *\u002F null,\\n  \u002F* 18 *\u002F { id: \\\"hstemhm\\\", min: 2, stackClearing: true, stem: true },\\n  \u002F* 19 *\u002F { id: \\\"hintmask\\\", min: 0, stackClearing: true },\\n  \u002F* 20 *\u002F { id: \\\"cntrmask\\\", min: 0, stackClearing: true },\\n  \u002F* 21 *\u002F { id: \\\"rmoveto\\\", min: 2, stackClearing: true },\\n  \u002F* 22 *\u002F { id: \\\"hmoveto\\\", min: 1, stackClearing: true },\\n  \u002F* 23 *\u002F { id: \\\"vstemhm\\\", min: 2, stackClearing: true, stem: true },\\n  \u002F* 24 *\u002F { id: \\\"rcurveline\\\", min: 8, resetStack: true },\\n  \u002F* 25 *\u002F { id: \\\"rlinecurve\\\", min: 8, resetStack: true },\\n  \u002F* 26 *\u002F { id: \\\"vvcurveto\\\", min: 4, resetStack: true },\\n  \u002F* 27 *\u002F { id: \\\"hhcurveto\\\", min: 4, resetStack: true },\\n  \u002F* 28 *\u002F null, \u002F\u002F shortint\\n  \u002F* 29 *\u002F { id: \\\"callgsubr\\\", min: 1, undefStack: true },\\n  \u002F* 30 *\u002F { id: \\\"vhcurveto\\\", min: 4, resetStack: true },\\n  \u002F* 31 *\u002F { id: \\\"hvcurveto\\\", min: 4, resetStack: true },\\n];\\n\\nconst CharstringValidationData12 = [\\n  null,\\n  null,\\n  null,\\n  { id: \\\"and\\\", min: 2, stackDelta: -1 },\\n  { id: \\\"or\\\", min: 2, stackDelta: -1 },\\n  { id: \\\"not\\\", min: 1, stackDelta: 0 },\\n  null,\\n  null,\\n  null,\\n  { id: \\\"abs\\\", min: 1, stackDelta: 0 },\\n  {\\n    id: \\\"add\\\",\\n    min: 2,\\n    stackDelta: -1,\\n    stackFn(stack, index) {\\n      stack[index - 2] = stack[index - 2] + stack[index - 1];\\n    },\\n  },\\n  {\\n    id: \\\"sub\\\",\\n    min: 2,\\n    stackDelta: -1,\\n    stackFn(stack, index) {\\n      stack[index - 2] = stack[index - 2] - stack[index - 1];\\n    },\\n  },\\n  {\\n    id: \\\"div\\\",\\n    min: 2,\\n    stackDelta: -1,\\n    stackFn(stack, index) {\\n      stack[index - 2] = stack[index - 2] \u002F stack[index - 1];\\n    },\\n  },\\n  null,\\n  {\\n    id: \\\"neg\\\",\\n    min: 1,\\n    stackDelta: 0,\\n    stackFn(stack, index) {\\n      stack[index - 1] = -stack[index - 1];\\n    },\\n  },\\n  { id: \\\"eq\\\", min: 2, stackDelta: -1 },\\n  null,\\n  null,\\n  { id: \\\"drop\\\", min: 1, stackDelta: -1 },\\n  null,\\n  { id: \\\"put\\\", min: 2, stackDelta: -2 },\\n  { id: \\\"get\\\", min: 1, stackDelta: 0 },\\n  { id: \\\"ifelse\\\", min: 4, stackDelta: -3 },\\n  { id: \\\"random\\\", min: 0, stackDelta: 1 },\\n  {\\n    id: \\\"mul\\\",\\n    min: 2,\\n    stackDelta: -1,\\n    stackFn(stack, index) {\\n      stack[index - 2] = stack[index - 2] * stack[index - 1];\\n    },\\n  },\\n  null,\\n  { id: \\\"sqrt\\\", min: 1, stackDelta: 0 },\\n  { id: \\\"dup\\\", min: 1, stackDelta: 1 },\\n  { id: \\\"exch\\\", min: 2, stackDelta: 0 },\\n  { id: \\\"index\\\", min: 2, stackDelta: 0 },\\n  { id: \\\"roll\\\", min: 3, stackDelta: -2 },\\n  null,\\n  null,\\n  null,\\n  { id: \\\"hflex\\\", min: 7, resetStack: true },\\n  { id: \\\"flex\\\", min: 13, resetStack: true },\\n  { id: \\\"hflex1\\\", min: 9, resetStack: true },\\n  { id: \\\"flex1\\\", min: 11, resetStack: true },\\n];\\n\\nclass CFFParser {\\n  constructor(file, properties, seacAnalysisEnabled) {\\n    this.bytes = file.getBytes();\\n    this.properties = properties;\\n    this.seacAnalysisEnabled = !!seacAnalysisEnabled;\\n  }\\n\\n  parse() {\\n    const properties = this.properties;\\n    const cff = new CFF();\\n    this.cff = cff;\\n\\n    \u002F\u002F The first five sections must be in order, all the others are reached\\n    \u002F\u002F via offsets contained in one of the below.\\n    const header = this.parseHeader();\\n    const nameIndex = this.parseIndex(header.endPos);\\n    const topDictIndex = this.parseIndex(nameIndex.endPos);\\n    const stringIndex = this.parseIndex(topDictIndex.endPos);\\n    const globalSubrIndex = this.parseIndex(stringIndex.endPos);\\n\\n    const topDictParsed = this.parseDict(topDictIndex.obj.get(0));\\n    const topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);\\n\\n    cff.header = header.obj;\\n    cff.names = this.parseNameIndex(nameIndex.obj);\\n    cff.strings = this.parseStringIndex(stringIndex.obj);\\n    cff.topDict = topDict;\\n    cff.globalSubrIndex = globalSubrIndex.obj;\\n\\n    this.parsePrivateDict(cff.topDict);\\n\\n    cff.isCIDFont = topDict.hasName(\\\"ROS\\\");\\n\\n    const charStringOffset = topDict.getByName(\\\"CharStrings\\\");\\n    const charStringIndex = this.parseIndex(charStringOffset).obj;\\n\\n    const fontMatrix = topDict.getByName(\\\"FontMatrix\\\");\\n    if (fontMatrix) {\\n      properties.fontMatrix = fontMatrix;\\n    }\\n\\n    const fontBBox = topDict.getByName(\\\"FontBBox\\\");\\n    if (fontBBox) {\\n      \u002F\u002F adjusting ascent\u002Fdescent\\n      properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\\n      properties.descent = Math.min(fontBBox[1], fontBBox[3]);\\n      properties.ascentScaled = true;\\n    }\\n\\n    let charset, encoding;\\n    if (cff.isCIDFont) {\\n      const fdArrayIndex = this.parseIndex(topDict.getByName(\\\"FDArray\\\")).obj;\\n      for (let i = 0, ii = fdArrayIndex.count; i \u003C ii; ++i) {\\n        const dictRaw = fdArrayIndex.get(i);\\n        const fontDict = this.createDict(\\n          CFFTopDict,\\n          this.parseDict(dictRaw),\\n          cff.strings\\n        );\\n        this.parsePrivateDict(fontDict);\\n        cff.fdArray.push(fontDict);\\n      }\\n      \u002F\u002F cid fonts don't have an encoding\\n      encoding = null;\\n      charset = this.parseCharsets(\\n        topDict.getByName(\\\"charset\\\"),\\n        charStringIndex.count,\\n        cff.strings,\\n        true\\n      );\\n      cff.fdSelect = this.parseFDSelect(\\n        topDict.getByName(\\\"FDSelect\\\"),\\n        charStringIndex.count\\n      );\\n    } else {\\n      charset = this.parseCharsets(\\n        topDict.getByName(\\\"charset\\\"),\\n        charStringIndex.count,\\n        cff.strings,\\n        false\\n      );\\n      encoding = this.parseEncoding(\\n        topDict.getByName(\\\"Encoding\\\"),\\n        properties,\\n        cff.strings,\\n        charset.charset\\n      );\\n    }\\n\\n    cff.charset = charset;\\n    cff.encoding = encoding;\\n\\n    const charStringsAndSeacs = this.parseCharStrings({\\n      charStrings: charStringIndex,\\n      localSubrIndex: topDict.privateDict.subrsIndex,\\n      globalSubrIndex: globalSubrIndex.obj,\\n      fdSelect: cff.fdSelect,\\n      fdArray: cff.fdArray,\\n      privateDict: topDict.privateDict,\\n    });\\n    cff.charStrings = charStringsAndSeacs.charStrings;\\n    cff.seacs = charStringsAndSeacs.seacs;\\n    cff.widths = charStringsAndSeacs.widths;\\n\\n    return cff;\\n  }\\n\\n  parseHeader() {\\n    let bytes = this.bytes;\\n    const bytesLength = bytes.length;\\n    let offset = 0;\\n\\n    \u002F\u002F Prevent an infinite loop, by checking that the offset is within the\\n    \u002F\u002F bounds of the bytes array. Necessary in empty, or invalid, font files.\\n    while (offset \u003C bytesLength && bytes[offset] !== 1) {\\n      ++offset;\\n    }\\n    if (offset >= bytesLength) {\\n      throw new FormatError(\\\"Invalid CFF header\\\");\\n    }\\n    if (offset !== 0) {\\n      info(\\\"cff data is shifted\\\");\\n      bytes = bytes.subarray(offset);\\n      this.bytes = bytes;\\n    }\\n    const major = bytes[0];\\n    const minor = bytes[1];\\n    const hdrSize = bytes[2];\\n    const offSize = bytes[3];\\n    const header = new CFFHeader(major, minor, hdrSize, offSize);\\n    return { obj: header, endPos: hdrSize };\\n  }\\n\\n  parseDict(dict) {\\n    let pos = 0;\\n\\n    function parseOperand() {\\n      let value = dict[pos++];\\n      if (value === 30) {\\n        return parseFloatOperand();\\n      } else if (value === 28) {\\n        value = dict[pos++];\\n        value = ((value \u003C\u003C 24) | (dict[pos++] \u003C\u003C 16)) >> 16;\\n        return value;\\n      } else if (value === 29) {\\n        value = dict[pos++];\\n        value = (value \u003C\u003C 8) | dict[pos++];\\n        value = (value \u003C\u003C 8) | dict[pos++];\\n        value = (value \u003C\u003C 8) | dict[pos++];\\n        return value;\\n      } else if (value >= 32 && value \u003C= 246) {\\n        return value - 139;\\n      } else if (value >= 247 && value \u003C= 250) {\\n        return (value - 247) * 256 + dict[pos++] + 108;\\n      } else if (value >= 251 && value \u003C= 254) {\\n        return -((value - 251) * 256) - dict[pos++] - 108;\\n      }\\n      warn('CFFParser_parseDict: \\\"' + value + '\\\" is a reserved command.');\\n      return NaN;\\n    }\\n\\n    function parseFloatOperand() {\\n      let str = \\\"\\\";\\n      const eof = 15;\\n      \u002F\u002F prettier-ignore\\n      const lookup = [\\\"0\\\", \\\"1\\\", \\\"2\\\", \\\"3\\\", \\\"4\\\", \\\"5\\\", \\\"6\\\", \\\"7\\\", \\\"8\\\",\\n                      \\\"9\\\", \\\".\\\", \\\"E\\\", \\\"E-\\\", null, \\\"-\\\"];\\n      const length = dict.length;\\n      while (pos \u003C length) {\\n        const b = dict[pos++];\\n        const b1 = b >> 4;\\n        const b2 = b & 15;\\n\\n        if (b1 === eof) {\\n          break;\\n        }\\n        str += lookup[b1];\\n\\n        if (b2 === eof) {\\n          break;\\n        }\\n        str += lookup[b2];\\n      }\\n      return parseFloat(str);\\n    }\\n\\n    let operands = [];\\n    const entries = [];\\n\\n    pos = 0;\\n    const end = dict.length;\\n    while (pos \u003C end) {\\n      let b = dict[pos];\\n      if (b \u003C= 21) {\\n        if (b === 12) {\\n          b = (b \u003C\u003C 8) | dict[++pos];\\n        }\\n        entries.push([b, operands]);\\n        operands = [];\\n        ++pos;\\n      } else {\\n        operands.push(parseOperand());\\n      }\\n    }\\n    return entries;\\n  }\\n\\n  parseIndex(pos) {\\n    const cffIndex = new CFFIndex();\\n    const bytes = this.bytes;\\n    const count = (bytes[pos++] \u003C\u003C 8) | bytes[pos++];\\n    const offsets = [];\\n    let end = pos;\\n    let i, ii;\\n\\n    if (count !== 0) {\\n      const offsetSize = bytes[pos++];\\n      \u002F\u002F add 1 for offset to determine size of last object\\n      const startPos = pos + (count + 1) * offsetSize - 1;\\n\\n      for (i = 0, ii = count + 1; i \u003C ii; ++i) {\\n        let offset = 0;\\n        for (let j = 0; j \u003C offsetSize; ++j) {\\n          offset \u003C\u003C= 8;\\n          offset += bytes[pos++];\\n        }\\n        offsets.push(startPos + offset);\\n      }\\n      end = offsets[count];\\n    }\\n    for (i = 0, ii = offsets.length - 1; i \u003C ii; ++i) {\\n      const offsetStart = offsets[i];\\n      const offsetEnd = offsets[i + 1];\\n      cffIndex.add(bytes.subarray(offsetStart, offsetEnd));\\n    }\\n    return { obj: cffIndex, endPos: end };\\n  }\\n\\n  parseNameIndex(index) {\\n    const names = [];\\n    for (let i = 0, ii = index.count; i \u003C ii; ++i) {\\n      const name = index.get(i);\\n      names.push(bytesToString(name));\\n    }\\n    return names;\\n  }\\n\\n  parseStringIndex(index) {\\n    const strings = new CFFStrings();\\n    for (let i = 0, ii = index.count; i \u003C ii; ++i) {\\n      const data = index.get(i);\\n      strings.add(bytesToString(data));\\n    }\\n    return strings;\\n  }\\n\\n  createDict(Type, dict, strings) {\\n    const cffDict = new Type(strings);\\n    for (const [key, value] of dict) {\\n      cffDict.setByKey(key, value);\\n    }\\n    return cffDict;\\n  }\\n\\n  parseCharString(state, data, localSubrIndex, globalSubrIndex) {\\n    if (!data || state.callDepth > MAX_SUBR_NESTING) {\\n      return false;\\n    }\\n    let stackSize = state.stackSize;\\n    const stack = state.stack;\\n\\n    let length = data.length;\\n\\n    for (let j = 0; j \u003C length; ) {\\n      const value = data[j++];\\n      let validationCommand = null;\\n      if (value === 12) {\\n        const q = data[j++];\\n        if (q === 0) {\\n          \u002F\u002F The CFF specification state that the 'dotsection' command\\n          \u002F\u002F (12, 0) is deprecated and treated as a no-op, but all Type2\\n          \u002F\u002F charstrings processors should support them. Unfortunately\\n          \u002F\u002F the font sanitizer don't. As a workaround the sequence (12, 0)\\n          \u002F\u002F is replaced by a useless (0, hmoveto).\\n          data[j - 2] = 139;\\n          data[j - 1] = 22;\\n          stackSize = 0;\\n        } else {\\n          validationCommand = CharstringValidationData12[q];\\n        }\\n      } else if (value === 28) {\\n        \u002F\u002F number (16 bit)\\n        stack[stackSize] = ((data[j] \u003C\u003C 24) | (data[j + 1] \u003C\u003C 16)) >> 16;\\n        j += 2;\\n        stackSize++;\\n      } else if (value === 14) {\\n        if (stackSize >= 4) {\\n          stackSize -= 4;\\n          if (this.seacAnalysisEnabled) {\\n            state.seac = stack.slice(stackSize, stackSize + 4);\\n            return false;\\n          }\\n        }\\n        validationCommand = CharstringValidationData[value];\\n      } else if (value >= 32 && value \u003C= 246) {\\n        \u002F\u002F number\\n        stack[stackSize] = value - 139;\\n        stackSize++;\\n      } else if (value >= 247 && value \u003C= 254) {\\n        \u002F\u002F number (+1 bytes)\\n        stack[stackSize] =\\n          value \u003C 251\\n            ? ((value - 247) \u003C\u003C 8) + data[j] + 108\\n            : -((value - 251) \u003C\u003C 8) - data[j] - 108;\\n        j++;\\n        stackSize++;\\n      } else if (value === 255) {\\n        \u002F\u002F number (32 bit)\\n        stack[stackSize] =\\n          ((data[j] \u003C\u003C 24) |\\n            (data[j + 1] \u003C\u003C 16) |\\n            (data[j + 2] \u003C\u003C 8) |\\n            data[j + 3]) \u002F\\n          65536;\\n        j += 4;\\n        stackSize++;\\n      } else if (value === 19 || value === 20) {\\n        state.hints += stackSize >> 1;\\n        if (state.hints === 0) {\\n          \u002F\u002F Not a valid value (see bug 1529502): just remove it.\\n          data.copyWithin(j - 1, j, -1);\\n          j -= 1;\\n          length -= 1;\\n          continue;\\n        }\\n        \u002F\u002F skipping right amount of hints flag data\\n        j += (state.hints + 7) >> 3;\\n        stackSize %= 2;\\n        validationCommand = CharstringValidationData[value];\\n      } else if (value === 10 || value === 29) {\\n        const subrsIndex = value === 10 ? localSubrIndex : globalSubrIndex;\\n        if (!subrsIndex) {\\n          validationCommand = CharstringValidationData[value];\\n          warn(\\\"Missing subrsIndex for \\\" + validationCommand.id);\\n          return false;\\n        }\\n        let bias = 32768;\\n        if (subrsIndex.count \u003C 1240) {\\n          bias = 107;\\n        } else if (subrsIndex.count \u003C 33900) {\\n          bias = 1131;\\n        }\\n        const subrNumber = stack[--stackSize] + bias;\\n        if (\\n          subrNumber \u003C 0 ||\\n          subrNumber >= subrsIndex.count ||\\n          isNaN(subrNumber)\\n        ) {\\n          validationCommand = CharstringValidationData[value];\\n          warn(\\\"Out of bounds subrIndex for \\\" + validationCommand.id);\\n          return false;\\n        }\\n        state.stackSize = stackSize;\\n        state.callDepth++;\\n        const valid = this.parseCharString(\\n          state,\\n          subrsIndex.get(subrNumber),\\n          localSubrIndex,\\n          globalSubrIndex\\n        );\\n        if (!valid) {\\n          return false;\\n        }\\n        state.callDepth--;\\n        stackSize = state.stackSize;\\n        continue;\\n      } else if (value === 11) {\\n        state.stackSize = stackSize;\\n        return true;\\n      } else if (value === 0 && j === data.length) {\\n        \u002F\u002F Operator 0 is not used according to the current spec and\\n        \u002F\u002F it's the last char and consequently it's likely a terminator.\\n        \u002F\u002F So just replace it by endchar command to make OTS happy.\\n        data[j - 1] = 14;\\n        validationCommand = CharstringValidationData[14];\\n      } else if (value === 9) {\\n        \u002F\u002F Not a valid value.\\n        data.copyWithin(j - 1, j, -1);\\n        j -= 1;\\n        length -= 1;\\n        continue;\\n      } else {\\n        validationCommand = CharstringValidationData[value];\\n      }\\n      if (validationCommand) {\\n        if (validationCommand.stem) {\\n          state.hints += stackSize >> 1;\\n          if (value === 3 || value === 23) {\\n            \u002F\u002F vstem or vstemhm.\\n            state.hasVStems = true;\\n          } else if (state.hasVStems && (value === 1 || value === 18)) {\\n            \u002F\u002F Some browsers don't draw glyphs that specify vstems before\\n            \u002F\u002F hstems. As a workaround, replace hstem (1) and hstemhm (18)\\n            \u002F\u002F with a pointless vstem (3) or vstemhm (23).\\n            warn(\\\"CFF stem hints are in wrong order\\\");\\n            data[j - 1] = value === 1 ? 3 : 23;\\n          }\\n        }\\n        if (\\\"min\\\" in validationCommand) {\\n          if (!state.undefStack && stackSize \u003C validationCommand.min) {\\n            warn(\\n              \\\"Not enough parameters for \\\" +\\n                validationCommand.id +\\n                \\\"; actual: \\\" +\\n                stackSize +\\n                \\\", expected: \\\" +\\n                validationCommand.min\\n            );\\n\\n            if (stackSize === 0) {\\n              \u002F\u002F Just \\\"fix\\\" the outline in replacing command by a endchar:\\n              \u002F\u002F it could lead to wrong rendering of some glyphs or not.\\n              \u002F\u002F For example, the pdf in #6132 is well-rendered.\\n              data[j - 1] = 14;\\n              return true;\\n            }\\n            return false;\\n          }\\n        }\\n        if (state.firstStackClearing && validationCommand.stackClearing) {\\n          state.firstStackClearing = false;\\n          \u002F\u002F the optional character width can be found before the first\\n          \u002F\u002F stack-clearing command arguments\\n          stackSize -= validationCommand.min;\\n          if (stackSize >= 2 && validationCommand.stem) {\\n            \u002F\u002F there are even amount of arguments for stem commands\\n            stackSize %= 2;\\n          } else if (stackSize > 1) {\\n            warn(\\\"Found too many parameters for stack-clearing command\\\");\\n          }\\n          if (stackSize > 0) {\\n            \u002F\u002F Width can be any number since its the difference\\n            \u002F\u002F from nominalWidthX.\\n            state.width = stack[stackSize - 1];\\n          }\\n        }\\n        if (\\\"stackDelta\\\" in validationCommand) {\\n          if (\\\"stackFn\\\" in validationCommand) {\\n            validationCommand.stackFn(stack, stackSize);\\n          }\\n          stackSize += validationCommand.stackDelta;\\n        } else if (validationCommand.stackClearing) {\\n          stackSize = 0;\\n        } else if (validationCommand.resetStack) {\\n          stackSize = 0;\\n          state.undefStack = false;\\n        } else if (validationCommand.undefStack) {\\n          stackSize = 0;\\n          state.undefStack = true;\\n          state.firstStackClearing = false;\\n        }\\n      }\\n    }\\n    if (length \u003C data.length) {\\n      data.fill(\u002F* endchar = *\u002F 14, length);\\n    }\\n    state.stackSize = stackSize;\\n    return true;\\n  }\\n\\n  parseCharStrings({\\n    charStrings,\\n    localSubrIndex,\\n    globalSubrIndex,\\n    fdSelect,\\n    fdArray,\\n    privateDict,\\n  }) {\\n    const seacs = [];\\n    const widths = [];\\n    const count = charStrings.count;\\n    for (let i = 0; i \u003C count; i++) {\\n      const charstring = charStrings.get(i);\\n      const state = {\\n        callDepth: 0,\\n        stackSize: 0,\\n        stack: [],\\n        undefStack: true,\\n        hints: 0,\\n        firstStackClearing: true,\\n        seac: null,\\n        width: null,\\n        hasVStems: false,\\n      };\\n      let valid = true;\\n      let localSubrToUse = null;\\n      let privateDictToUse = privateDict;\\n      if (fdSelect && fdArray.length) {\\n        const fdIndex = fdSelect.getFDIndex(i);\\n        if (fdIndex === -1) {\\n          warn(\\\"Glyph index is not in fd select.\\\");\\n          valid = false;\\n        }\\n        if (fdIndex >= fdArray.length) {\\n          warn(\\\"Invalid fd index for glyph index.\\\");\\n          valid = false;\\n        }\\n        if (valid) {\\n          privateDictToUse = fdArray[fdIndex].privateDict;\\n          localSubrToUse = privateDictToUse.subrsIndex;\\n        }\\n      } else if (localSubrIndex) {\\n        localSubrToUse = localSubrIndex;\\n      }\\n      if (valid) {\\n        valid = this.parseCharString(\\n          state,\\n          charstring,\\n          localSubrToUse,\\n          globalSubrIndex\\n        );\\n      }\\n      if (state.width !== null) {\\n        const nominalWidth = privateDictToUse.getByName(\\\"nominalWidthX\\\");\\n        widths[i] = nominalWidth + state.width;\\n      } else {\\n        const defaultWidth = privateDictToUse.getByName(\\\"defaultWidthX\\\");\\n        widths[i] = defaultWidth;\\n      }\\n      if (state.seac !== null) {\\n        seacs[i] = state.seac;\\n      }\\n      if (!valid) {\\n        \u002F\u002F resetting invalid charstring to single 'endchar'\\n        charStrings.set(i, new Uint8Array([14]));\\n      }\\n    }\\n    return { charStrings, seacs, widths };\\n  }\\n\\n  emptyPrivateDictionary(parentDict) {\\n    const privateDict = this.createDict(CFFPrivateDict, [], parentDict.strings);\\n    parentDict.setByKey(18, [0, 0]);\\n    parentDict.privateDict = privateDict;\\n  }\\n\\n  parsePrivateDict(parentDict) {\\n    \u002F\u002F no private dict, do nothing\\n    if (!parentDict.hasName(\\\"Private\\\")) {\\n      this.emptyPrivateDictionary(parentDict);\\n      return;\\n    }\\n    const privateOffset = parentDict.getByName(\\\"Private\\\");\\n    \u002F\u002F make sure the params are formatted correctly\\n    if (!Array.isArray(privateOffset) || privateOffset.length !== 2) {\\n      parentDict.removeByName(\\\"Private\\\");\\n      return;\\n    }\\n    const size = privateOffset[0];\\n    const offset = privateOffset[1];\\n    \u002F\u002F remove empty dicts or ones that refer to invalid location\\n    if (size === 0 || offset >= this.bytes.length) {\\n      this.emptyPrivateDictionary(parentDict);\\n      return;\\n    }\\n\\n    const privateDictEnd = offset + size;\\n    const dictData = this.bytes.subarray(offset, privateDictEnd);\\n    const dict = this.parseDict(dictData);\\n    const privateDict = this.createDict(\\n      CFFPrivateDict,\\n      dict,\\n      parentDict.strings\\n    );\\n    parentDict.privateDict = privateDict;\\n\\n    if (privateDict.getByName(\\\"ExpansionFactor\\\") === 0) {\\n      \u002F\u002F Firefox doesn't render correctly such a font on Windows (see issue\\n      \u002F\u002F 15289), hence we just reset it to its default value.\\n      privateDict.setByName(\\\"ExpansionFactor\\\", 0.06);\\n    }\\n\\n    \u002F\u002F Parse the Subrs index also since it's relative to the private dict.\\n    if (!privateDict.getByName(\\\"Subrs\\\")) {\\n      return;\\n    }\\n    const subrsOffset = privateDict.getByName(\\\"Subrs\\\");\\n    const relativeOffset = offset + subrsOffset;\\n    \u002F\u002F Validate the offset.\\n    if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {\\n      this.emptyPrivateDictionary(parentDict);\\n      return;\\n    }\\n    const subrsIndex = this.parseIndex(relativeOffset);\\n    privateDict.subrsIndex = subrsIndex.obj;\\n  }\\n\\n  parseCharsets(pos, length, strings, cid) {\\n    if (pos === 0) {\\n      return new CFFCharset(\\n        true,\\n        CFFCharsetPredefinedTypes.ISO_ADOBE,\\n        ISOAdobeCharset\\n      );\\n    } else if (pos === 1) {\\n      return new CFFCharset(\\n        true,\\n        CFFCharsetPredefinedTypes.EXPERT,\\n        ExpertCharset\\n      );\\n    } else if (pos === 2) {\\n      return new CFFCharset(\\n        true,\\n        CFFCharsetPredefinedTypes.EXPERT_SUBSET,\\n        ExpertSubsetCharset\\n      );\\n    }\\n\\n    const bytes = this.bytes;\\n    const start = pos;\\n    const format = bytes[pos++];\\n    const charset = [cid ? 0 : \\\".notdef\\\"];\\n    let id, count, i;\\n\\n    \u002F\u002F subtract 1 for the .notdef glyph\\n    length -= 1;\\n\\n    switch (format) {\\n      case 0:\\n        for (i = 0; i \u003C length; i++) {\\n          id = (bytes[pos++] \u003C\u003C 8) | bytes[pos++];\\n          charset.push(cid ? id : strings.get(id));\\n        }\\n        break;\\n      case 1:\\n        while (charset.length \u003C= length) {\\n          id = (bytes[pos++] \u003C\u003C 8) | bytes[pos++];\\n          count = bytes[pos++];\\n          for (i = 0; i \u003C= count; i++) {\\n            charset.push(cid ? id++ : strings.get(id++));\\n          }\\n        }\\n        break;\\n      case 2:\\n        while (charset.length \u003C= length) {\\n          id = (bytes[pos++] \u003C\u003C 8) | bytes[pos++];\\n          count = (bytes[pos++] \u003C\u003C 8) | bytes[pos++];\\n          for (i = 0; i \u003C= count; i++) {\\n            charset.push(cid ? id++ : strings.get(id++));\\n          }\\n        }\\n        break;\\n      default:\\n        throw new FormatError(\\\"Unknown charset format\\\");\\n    }\\n    \u002F\u002F Raw won't be needed if we actually compile the charset.\\n    const end = pos;\\n    const raw = bytes.subarray(start, end);\\n\\n    return new CFFCharset(false, format, charset, raw);\\n  }\\n\\n  parseEncoding(pos, properties, strings, charset) {\\n    const encoding = Object.create(null);\\n    const bytes = this.bytes;\\n    let predefined = false;\\n    let format, i, ii;\\n    let raw = null;\\n\\n    function readSupplement() {\\n      const supplementsCount = bytes[pos++];\\n      for (i = 0; i \u003C supplementsCount; i++) {\\n        const code = bytes[pos++];\\n        const sid = (bytes[pos++] \u003C\u003C 8) + (bytes[pos++] & 0xff);\\n        encoding[code] = charset.indexOf(strings.get(sid));\\n      }\\n    }\\n\\n    if (pos === 0 || pos === 1) {\\n      predefined = true;\\n      format = pos;\\n      const baseEncoding = pos ? ExpertEncoding : StandardEncoding;\\n      for (i = 0, ii = charset.length; i \u003C ii; i++) {\\n        const index = baseEncoding.indexOf(charset[i]);\\n        if (index !== -1) {\\n          encoding[index] = i;\\n        }\\n      }\\n    } else {\\n      const dataStart = pos;\\n      format = bytes[pos++];\\n      switch (format & 0x7f) {\\n        case 0:\\n          const glyphsCount = bytes[pos++];\\n          for (i = 1; i \u003C= glyphsCount; i++) {\\n            encoding[bytes[pos++]] = i;\\n          }\\n          break;\\n\\n        case 1:\\n          const rangesCount = bytes[pos++];\\n          let gid = 1;\\n          for (i = 0; i \u003C rangesCount; i++) {\\n            const start = bytes[pos++];\\n            const left = bytes[pos++];\\n            for (let j = start; j \u003C= start + left; j++) {\\n              encoding[j] = gid++;\\n            }\\n          }\\n          break;\\n\\n        default:\\n          throw new FormatError(`Unknown encoding format: ${format} in CFF`);\\n      }\\n      const dataEnd = pos;\\n      if (format & 0x80) {\\n        \u002F\u002F hasSupplement\\n        \u002F\u002F The font sanitizer does not support CFF encoding with a\\n        \u002F\u002F supplement, since the encoding is not really used to map\\n        \u002F\u002F between gid to glyph, let's overwrite what is declared in\\n        \u002F\u002F the top dictionary to let the sanitizer think the font use\\n        \u002F\u002F StandardEncoding, that's a lie but that's ok.\\n        bytes[dataStart] &= 0x7f;\\n        readSupplement();\\n      }\\n      raw = bytes.subarray(dataStart, dataEnd);\\n    }\\n    format &= 0x7f;\\n    return new CFFEncoding(predefined, format, encoding, raw);\\n  }\\n\\n  parseFDSelect(pos, length) {\\n    const bytes = this.bytes;\\n    const format = bytes[pos++];\\n    const fdSelect = [];\\n    let i;\\n\\n    switch (format) {\\n      case 0:\\n        for (i = 0; i \u003C length; ++i) {\\n          const id = bytes[pos++];\\n          fdSelect.push(id);\\n        }\\n        break;\\n      case 3:\\n        const rangesCount = (bytes[pos++] \u003C\u003C 8) | bytes[pos++];\\n        for (i = 0; i \u003C rangesCount; ++i) {\\n          let first = (bytes[pos++] \u003C\u003C 8) | bytes[pos++];\\n          if (i === 0 && first !== 0) {\\n            warn(\\n              \\\"parseFDSelect: The first range must have a first GID of 0\\\" +\\n                \\\" -- trying to recover.\\\"\\n            );\\n            first = 0;\\n          }\\n          const fdIndex = bytes[pos++];\\n          const next = (bytes[pos] \u003C\u003C 8) | bytes[pos + 1];\\n          for (let j = first; j \u003C next; ++j) {\\n            fdSelect.push(fdIndex);\\n          }\\n        }\\n        \u002F\u002F Advance past the sentinel(next).\\n        pos += 2;\\n        break;\\n      default:\\n        throw new FormatError(`parseFDSelect: Unknown format \\\"${format}\\\".`);\\n    }\\n    if (fdSelect.length !== length) {\\n      throw new FormatError(\\\"parseFDSelect: Invalid font data.\\\");\\n    }\\n\\n    return new CFFFDSelect(format, fdSelect);\\n  }\\n}\\n\\n\u002F\u002F Compact Font Format\\nclass CFF {\\n  constructor() {\\n    this.header = null;\\n    this.names = [];\\n    this.topDict = null;\\n    this.strings = new CFFStrings();\\n    this.globalSubrIndex = null;\\n\\n    \u002F\u002F The following could really be per font, but since we only have one font\\n    \u002F\u002F store them here.\\n    this.encoding = null;\\n    this.charset = null;\\n    this.charStrings = null;\\n    this.fdArray = [];\\n    this.fdSelect = null;\\n\\n    this.isCIDFont = false;\\n  }\\n\\n  duplicateFirstGlyph() {\\n    \u002F\u002F Browsers will not display a glyph at position 0. Typically glyph 0 is\\n    \u002F\u002F notdef, but a number of fonts put a valid glyph there so it must be\\n    \u002F\u002F duplicated and appended.\\n    if (this.charStrings.count >= 65535) {\\n      warn(\\\"Not enough space in charstrings to duplicate first glyph.\\\");\\n      return;\\n    }\\n    const glyphZero = this.charStrings.get(0);\\n    this.charStrings.add(glyphZero);\\n    if (this.isCIDFont) {\\n      this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]);\\n    }\\n  }\\n\\n  hasGlyphId(id) {\\n    if (id \u003C 0 || id >= this.charStrings.count) {\\n      return false;\\n    }\\n    const glyph = this.charStrings.get(id);\\n    return glyph.length > 0;\\n  }\\n}\\n\\nclass CFFHeader {\\n  constructor(major, minor, hdrSize, offSize) {\\n    this.major = major;\\n    this.minor = minor;\\n    this.hdrSize = hdrSize;\\n    this.offSize = offSize;\\n  }\\n}\\n\\nclass CFFStrings {\\n  constructor() {\\n    this.strings = [];\\n  }\\n\\n  get(index) {\\n    if (index >= 0 && index \u003C= NUM_STANDARD_CFF_STRINGS - 1) {\\n      return CFFStandardStrings[index];\\n    }\\n    if (index - NUM_STANDARD_CFF_STRINGS \u003C= this.strings.length) {\\n      return this.strings[index - NUM_STANDARD_CFF_STRINGS];\\n    }\\n    return CFFStandardStrings[0];\\n  }\\n\\n  getSID(str) {\\n    let index = CFFStandardStrings.indexOf(str);\\n    if (index !== -1) {\\n      return index;\\n    }\\n    index = this.strings.indexOf(str);\\n    if (index !== -1) {\\n      return index + NUM_STANDARD_CFF_STRINGS;\\n    }\\n    return -1;\\n  }\\n\\n  add(value) {\\n    this.strings.push(value);\\n  }\\n\\n  get count() {\\n    return this.strings.length;\\n  }\\n}\\n\\nclass CFFIndex {\\n  constructor() {\\n    this.objects = [];\\n    this.length = 0;\\n  }\\n\\n  add(data) {\\n    this.length += data.length;\\n    this.objects.push(data);\\n  }\\n\\n  set(index, data) {\\n    this.length += data.length - this.objects[index].length;\\n    this.objects[index] = data;\\n  }\\n\\n  get(index) {\\n    return this.objects[index];\\n  }\\n\\n  get count() {\\n    return this.objects.length;\\n  }\\n}\\n\\nclass CFFDict {\\n  constructor(tables, strings) {\\n    this.keyToNameMap = tables.keyToNameMap;\\n    this.nameToKeyMap = tables.nameToKeyMap;\\n    this.defaults = tables.defaults;\\n    this.types = tables.types;\\n    this.opcodes = tables.opcodes;\\n    this.order = tables.order;\\n    this.strings = strings;\\n    this.values = Object.create(null);\\n  }\\n\\n  \u002F\u002F value should always be an array\\n  setByKey(key, value) {\\n    if (!(key in this.keyToNameMap)) {\\n      return false;\\n    }\\n    \u002F\u002F ignore empty values\\n    if (value.length === 0) {\\n      return true;\\n    }\\n    \u002F\u002F Ignore invalid values (fixes bug1068432.pdf and bug1308536.pdf).\\n    for (const val of value) {\\n      if (isNaN(val)) {\\n        warn(`Invalid CFFDict value: \\\"${value}\\\" for key \\\"${key}\\\".`);\\n        return true;\\n      }\\n    }\\n    const type = this.types[key];\\n    \u002F\u002F remove the array wrapping these types of values\\n    if (type === \\\"num\\\" || type === \\\"sid\\\" || type === \\\"offset\\\") {\\n      value = value[0];\\n    }\\n    this.values[key] = value;\\n    return true;\\n  }\\n\\n  setByName(name, value) {\\n    if (!(name in this.nameToKeyMap)) {\\n      throw new FormatError(`Invalid dictionary name \\\"${name}\\\"`);\\n    }\\n    this.values[this.nameToKeyMap[name]] = value;\\n  }\\n\\n  hasName(name) {\\n    return this.nameToKeyMap[name] in this.values;\\n  }\\n\\n  getByName(name) {\\n    if (!(name in this.nameToKeyMap)) {\\n      throw new FormatError(`Invalid dictionary name ${name}\\\"`);\\n    }\\n    const key = this.nameToKeyMap[name];\\n    if (!(key in this.values)) {\\n      return this.defaults[key];\\n    }\\n    return this.values[key];\\n  }\\n\\n  removeByName(name) {\\n    delete this.values[this.nameToKeyMap[name]];\\n  }\\n\\n  static createTables(layout) {\\n    const tables = {\\n      keyToNameMap: {},\\n      nameToKeyMap: {},\\n      defaults: {},\\n      types: {},\\n      opcodes: {},\\n      order: [],\\n    };\\n    for (const entry of layout) {\\n      const key = Array.isArray(entry[0])\\n        ? (entry[0][0] \u003C\u003C 8) + entry[0][1]\\n        : entry[0];\\n      tables.keyToNameMap[key] = entry[1];\\n      tables.nameToKeyMap[entry[1]] = key;\\n      tables.types[key] = entry[2];\\n      tables.defaults[key] = entry[3];\\n      tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]];\\n      tables.order.push(key);\\n    }\\n    return tables;\\n  }\\n}\\n\\nconst CFFTopDictLayout = [\\n  [[12, 30], \\\"ROS\\\", [\\\"sid\\\", \\\"sid\\\", \\\"num\\\"], null],\\n  [[12, 20], \\\"SyntheticBase\\\", \\\"num\\\", null],\\n  [0, \\\"version\\\", \\\"sid\\\", null],\\n  [1, \\\"Notice\\\", \\\"sid\\\", null],\\n  [[12, 0], \\\"Copyright\\\", \\\"sid\\\", null],\\n  [2, \\\"FullName\\\", \\\"sid\\\", null],\\n  [3, \\\"FamilyName\\\", \\\"sid\\\", null],\\n  [4, \\\"Weight\\\", \\\"sid\\\", null],\\n  [[12, 1], \\\"isFixedPitch\\\", \\\"num\\\", 0],\\n  [[12, 2], \\\"ItalicAngle\\\", \\\"num\\\", 0],\\n  [[12, 3], \\\"UnderlinePosition\\\", \\\"num\\\", -100],\\n  [[12, 4], \\\"UnderlineThickness\\\", \\\"num\\\", 50],\\n  [[12, 5], \\\"PaintType\\\", \\\"num\\\", 0],\\n  [[12, 6], \\\"CharstringType\\\", \\\"num\\\", 2],\\n  \u002F\u002F prettier-ignore\\n  [[12, 7], \\\"FontMatrix\\\", [\\\"num\\\", \\\"num\\\", \\\"num\\\", \\\"num\\\", \\\"num\\\", \\\"num\\\"],\\n                          [0.001, 0, 0, 0.001, 0, 0]],\\n  [13, \\\"UniqueID\\\", \\\"num\\\", null],\\n  [5, \\\"FontBBox\\\", [\\\"num\\\", \\\"num\\\", \\\"num\\\", \\\"num\\\"], [0, 0, 0, 0]],\\n  [[12, 8], \\\"StrokeWidth\\\", \\\"num\\\", 0],\\n  [14, \\\"XUID\\\", \\\"array\\\", null],\\n  [15, \\\"charset\\\", \\\"offset\\\", 0],\\n  [16, \\\"Encoding\\\", \\\"offset\\\", 0],\\n  [17, \\\"CharStrings\\\", \\\"offset\\\", 0],\\n  [18, \\\"Private\\\", [\\\"offset\\\", \\\"offset\\\"], null],\\n  [[12, 21], \\\"PostScript\\\", \\\"sid\\\", null],\\n  [[12, 22], \\\"BaseFontName\\\", \\\"sid\\\", null],\\n  [[12, 23], \\\"BaseFontBlend\\\", \\\"delta\\\", null],\\n  [[12, 31], \\\"CIDFontVersion\\\", \\\"num\\\", 0],\\n  [[12, 32], \\\"CIDFontRevision\\\", \\\"num\\\", 0],\\n  [[12, 33], \\\"CIDFontType\\\", \\\"num\\\", 0],\\n  [[12, 34], \\\"CIDCount\\\", \\\"num\\\", 8720],\\n  [[12, 35], \\\"UIDBase\\\", \\\"num\\\", null],\\n  \u002F\u002F XXX: CID Fonts on DirectWrite 6.1 only seem to work if FDSelect comes\\n  \u002F\u002F before FDArray.\\n  [[12, 37], \\\"FDSelect\\\", \\\"offset\\\", null],\\n  [[12, 36], \\\"FDArray\\\", \\\"offset\\\", null],\\n  [[12, 38], \\\"FontName\\\", \\\"sid\\\", null],\\n];\\n\\nclass CFFTopDict extends CFFDict {\\n  static get tables() {\\n    return shadow(this, \\\"tables\\\", this.createTables(CFFTopDictLayout));\\n  }\\n\\n  constructor(strings) {\\n    super(CFFTopDict.tables, strings);\\n    this.privateDict = null;\\n  }\\n}\\n\\nconst CFFPrivateDictLayout = [\\n  [6, \\\"BlueValues\\\", \\\"delta\\\", null],\\n  [7, \\\"OtherBlues\\\", \\\"delta\\\", null],\\n  [8, \\\"FamilyBlues\\\", \\\"delta\\\", null],\\n  [9, \\\"FamilyOtherBlues\\\", \\\"delta\\\", null],\\n  [[12, 9], \\\"BlueScale\\\", \\\"num\\\", 0.039625],\\n  [[12, 10], \\\"BlueShift\\\", \\\"num\\\", 7],\\n  [[12, 11], \\\"BlueFuzz\\\", \\\"num\\\", 1],\\n  [10, \\\"StdHW\\\", \\\"num\\\", null],\\n  [11, \\\"StdVW\\\", \\\"num\\\", null],\\n  [[12, 12], \\\"StemSnapH\\\", \\\"delta\\\", null],\\n  [[12, 13], \\\"StemSnapV\\\", \\\"delta\\\", null],\\n  [[12, 14], \\\"ForceBold\\\", \\\"num\\\", 0],\\n  [[12, 17], \\\"LanguageGroup\\\", \\\"num\\\", 0],\\n  [[12, 18], \\\"ExpansionFactor\\\", \\\"num\\\", 0.06],\\n  [[12, 19], \\\"initialRandomSeed\\\", \\\"num\\\", 0],\\n  [20, \\\"defaultWidthX\\\", \\\"num\\\", 0],\\n  [21, \\\"nominalWidthX\\\", \\\"num\\\", 0],\\n  [19, \\\"Subrs\\\", \\\"offset\\\", null],\\n];\\n\\nclass CFFPrivateDict extends CFFDict {\\n  static get tables() {\\n    return shadow(this, \\\"tables\\\", this.createTables(CFFPrivateDictLayout));\\n  }\\n\\n  constructor(strings) {\\n    super(CFFPrivateDict.tables, strings);\\n    this.subrsIndex = null;\\n  }\\n}\\n\\nconst CFFCharsetPredefinedTypes = {\\n  ISO_ADOBE: 0,\\n  EXPERT: 1,\\n  EXPERT_SUBSET: 2,\\n};\\n\\nclass CFFCharset {\\n  constructor(predefined, format, charset, raw) {\\n    this.predefined = predefined;\\n    this.format = format;\\n    this.charset = charset;\\n    this.raw = raw;\\n  }\\n}\\n\\nclass CFFEncoding {\\n  constructor(predefined, format, encoding, raw) {\\n    this.predefined = predefined;\\n    this.format = format;\\n    this.encoding = encoding;\\n    this.raw = raw;\\n  }\\n}\\n\\nclass CFFFDSelect {\\n  constructor(format, fdSelect) {\\n    this.format = format;\\n    this.fdSelect = fdSelect;\\n  }\\n\\n  getFDIndex(glyphIndex) {\\n    if (glyphIndex \u003C 0 || glyphIndex >= this.fdSelect.length) {\\n      return -1;\\n    }\\n    return this.fdSelect[glyphIndex];\\n  }\\n}\\n\\n\u002F\u002F Helper class to keep track of where an offset is within the data and helps\\n\u002F\u002F filling in that offset once it's known.\\nclass CFFOffsetTracker {\\n  constructor() {\\n    this.offsets = Object.create(null);\\n  }\\n\\n  isTracking(key) {\\n    return key in this.offsets;\\n  }\\n\\n  track(key, location) {\\n    if (key in this.offsets) {\\n      throw new FormatError(`Already tracking location of ${key}`);\\n    }\\n    this.offsets[key] = location;\\n  }\\n\\n  offset(value) {\\n    for (const key in this.offsets) {\\n      this.offsets[key] += value;\\n    }\\n  }\\n\\n  setEntryLocation(key, values, output) {\\n    if (!(key in this.offsets)) {\\n      throw new FormatError(`Not tracking location of ${key}`);\\n    }\\n    const data = output.data;\\n    const dataOffset = this.offsets[key];\\n    const size = 5;\\n    for (let i = 0, ii = values.length; i \u003C ii; ++i) {\\n      const offset0 = i * size + dataOffset;\\n      const offset1 = offset0 + 1;\\n      const offset2 = offset0 + 2;\\n      const offset3 = offset0 + 3;\\n      const offset4 = offset0 + 4;\\n      \u002F\u002F It's easy to screw up offsets so perform this sanity check.\\n      if (\\n        data[offset0] !== 0x1d ||\\n        data[offset1] !== 0 ||\\n        data[offset2] !== 0 ||\\n        data[offset3] !== 0 ||\\n        data[offset4] !== 0\\n      ) {\\n        throw new FormatError(\\\"writing to an offset that is not empty\\\");\\n      }\\n      const value = values[i];\\n      data[offset0] = 0x1d;\\n      data[offset1] = (value >> 24) & 0xff;\\n      data[offset2] = (value >> 16) & 0xff;\\n      data[offset3] = (value >> 8) & 0xff;\\n      data[offset4] = value & 0xff;\\n    }\\n  }\\n}\\n\\n\u002F\u002F Takes a CFF and converts it to the binary representation.\\nclass CFFCompiler {\\n  constructor(cff) {\\n    this.cff = cff;\\n  }\\n\\n  compile() {\\n    const cff = this.cff;\\n    const output = {\\n      data: [],\\n      length: 0,\\n      add(data) {\\n        try {\\n          \u002F\u002F It's possible to exceed the call stack maximum size when trying\\n          \u002F\u002F to push too much elements.\\n          \u002F\u002F In case of failure, we fallback to the `concat` method.\\n          this.data.push(...data);\\n        } catch {\\n          this.data = this.data.concat(data);\\n        }\\n        this.length = this.data.length;\\n      },\\n    };\\n\\n    \u002F\u002F Compile the five entries that must be in order.\\n    const header = this.compileHeader(cff.header);\\n    output.add(header);\\n\\n    const nameIndex = this.compileNameIndex(cff.names);\\n    output.add(nameIndex);\\n\\n    if (cff.isCIDFont) {\\n      \u002F\u002F The spec is unclear on how font matrices should relate to each other\\n      \u002F\u002F when there is one in the main top dict and the sub top dicts.\\n      \u002F\u002F Windows handles this differently than linux and osx so we have to\\n      \u002F\u002F normalize to work on all.\\n      \u002F\u002F Rules based off of some mailing list discussions:\\n      \u002F\u002F - If main font has a matrix and subfont doesn't, use the main matrix.\\n      \u002F\u002F - If no main font matrix and there is a subfont matrix, use the\\n      \u002F\u002F   subfont matrix.\\n      \u002F\u002F - If both have matrices, concat together.\\n      \u002F\u002F - If neither have matrices, use default.\\n      \u002F\u002F To make this work on all platforms we move the top matrix into each\\n      \u002F\u002F sub top dict and concat if necessary.\\n      if (cff.topDict.hasName(\\\"FontMatrix\\\")) {\\n        const base = cff.topDict.getByName(\\\"FontMatrix\\\");\\n        cff.topDict.removeByName(\\\"FontMatrix\\\");\\n        for (const subDict of cff.fdArray) {\\n          let matrix = base.slice(0);\\n          if (subDict.hasName(\\\"FontMatrix\\\")) {\\n            matrix = Util.transform(matrix, subDict.getByName(\\\"FontMatrix\\\"));\\n          }\\n          subDict.setByName(\\\"FontMatrix\\\", matrix);\\n        }\\n      }\\n    }\\n\\n    const xuid = cff.topDict.getByName(\\\"XUID\\\");\\n    if (xuid?.length > 16) {\\n      \u002F\u002F Length of XUID array must not be greater than 16 (issue #12399).\\n      cff.topDict.removeByName(\\\"XUID\\\");\\n    }\\n\\n    cff.topDict.setByName(\\\"charset\\\", 0);\\n    let compiled = this.compileTopDicts(\\n      [cff.topDict],\\n      output.length,\\n      cff.isCIDFont\\n    );\\n    output.add(compiled.output);\\n    const topDictTracker = compiled.trackers[0];\\n\\n    const stringIndex = this.compileStringIndex(cff.strings.strings);\\n    output.add(stringIndex);\\n\\n    const globalSubrIndex = this.compileIndex(cff.globalSubrIndex);\\n    output.add(globalSubrIndex);\\n\\n    \u002F\u002F Now start on the other entries that have no specific order.\\n    if (cff.encoding && cff.topDict.hasName(\\\"Encoding\\\")) {\\n      if (cff.encoding.predefined) {\\n        topDictTracker.setEntryLocation(\\n          \\\"Encoding\\\",\\n          [cff.encoding.format],\\n          output\\n        );\\n      } else {\\n        const encoding = this.compileEncoding(cff.encoding);\\n        topDictTracker.setEntryLocation(\\\"Encoding\\\", [output.length], output);\\n        output.add(encoding);\\n      }\\n    }\\n    const charset = this.compileCharset(\\n      cff.charset,\\n      cff.charStrings.count,\\n      cff.strings,\\n      cff.isCIDFont\\n    );\\n    topDictTracker.setEntryLocation(\\\"charset\\\", [output.length], output);\\n    output.add(charset);\\n\\n    const charStrings = this.compileCharStrings(cff.charStrings);\\n    topDictTracker.setEntryLocation(\\\"CharStrings\\\", [output.length], output);\\n    output.add(charStrings);\\n\\n    if (cff.isCIDFont) {\\n      \u002F\u002F For some reason FDSelect must be in front of FDArray on windows. OSX\\n      \u002F\u002F and linux don't seem to care.\\n      topDictTracker.setEntryLocation(\\\"FDSelect\\\", [output.length], output);\\n      const fdSelect = this.compileFDSelect(cff.fdSelect);\\n      output.add(fdSelect);\\n      \u002F\u002F It is unclear if the sub font dictionary can have CID related\\n      \u002F\u002F dictionary keys, but the sanitizer doesn't like them so remove them.\\n      compiled = this.compileTopDicts(cff.fdArray, output.length, true);\\n      topDictTracker.setEntryLocation(\\\"FDArray\\\", [output.length], output);\\n      output.add(compiled.output);\\n      const fontDictTrackers = compiled.trackers;\\n\\n      this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);\\n    }\\n\\n    this.compilePrivateDicts([cff.topDict], [topDictTracker], output);\\n\\n    \u002F\u002F If the font data ends with INDEX whose object data is zero-length,\\n    \u002F\u002F the sanitizer will bail out. Add a dummy byte to avoid that.\\n    output.add([0]);\\n\\n    return output.data;\\n  }\\n\\n  encodeNumber(value) {\\n    if (Number.isInteger(value)) {\\n      return this.encodeInteger(value);\\n    }\\n    return this.encodeFloat(value);\\n  }\\n\\n  static get EncodeFloatRegExp() {\\n    return shadow(\\n      this,\\n      \\\"EncodeFloatRegExp\\\",\\n      \u002F\\\\.(\\\\d*?)(?:9{5,20}|0{5,20})\\\\d{0,2}(?:e(.+)|$)\u002F\\n    );\\n  }\\n\\n  encodeFloat(num) {\\n    let value = num.toString();\\n\\n    \u002F\u002F Rounding inaccurate doubles.\\n    const m = CFFCompiler.EncodeFloatRegExp.exec(value);\\n    if (m) {\\n      const epsilon = parseFloat(\\\"1e\\\" + ((m[2] ? +m[2] : 0) + m[1].length));\\n      value = (Math.round(num * epsilon) \u002F epsilon).toString();\\n    }\\n\\n    let nibbles = \\\"\\\";\\n    let i, ii;\\n    for (i = 0, ii = value.length; i \u003C ii; ++i) {\\n      const a = value[i];\\n      if (a === \\\"e\\\") {\\n        nibbles += value[++i] === \\\"-\\\" ? \\\"c\\\" : \\\"b\\\";\\n      } else if (a === \\\".\\\") {\\n        nibbles += \\\"a\\\";\\n      } else if (a === \\\"-\\\") {\\n        nibbles += \\\"e\\\";\\n      } else {\\n        nibbles += a;\\n      }\\n    }\\n    nibbles += nibbles.length & 1 ? \\\"f\\\" : \\\"ff\\\";\\n    const out = [30];\\n    for (i = 0, ii = nibbles.length; i \u003C ii; i += 2) {\\n      out.push(parseInt(nibbles.substring(i, i + 2), 16));\\n    }\\n    return out;\\n  }\\n\\n  encodeInteger(value) {\\n    let code;\\n    if (value >= -107 && value \u003C= 107) {\\n      code = [value + 139];\\n    } else if (value >= 108 && value \u003C= 1131) {\\n      value -= 108;\\n      code = [(value >> 8) + 247, value & 0xff];\\n    } else if (value >= -1131 && value \u003C= -108) {\\n      value = -value - 108;\\n      code = [(value >> 8) + 251, value & 0xff];\\n    } else if (value >= -32768 && value \u003C= 32767) {\\n      code = [0x1c, (value >> 8) & 0xff, value & 0xff];\\n    } else {\\n      code = [\\n        0x1d,\\n        (value >> 24) & 0xff,\\n        (value >> 16) & 0xff,\\n        (value >> 8) & 0xff,\\n        value & 0xff,\\n      ];\\n    }\\n    return code;\\n  }\\n\\n  compileHeader(header) {\\n    \u002F\u002F `header.hdrSize` can be any value but we only write 4 values\\n    \u002F\u002F so header size is 4 (prevents OTS from rejecting the font).\\n    return [header.major, header.minor, 4, header.offSize];\\n  }\\n\\n  compileNameIndex(names) {\\n    const nameIndex = new CFFIndex();\\n    for (const name of names) {\\n      \u002F\u002F OTS doesn't allow names to be over 127 characters.\\n      const length = Math.min(name.length, 127);\\n      let sanitizedName = new Array(length);\\n      for (let j = 0; j \u003C length; j++) {\\n        \u002F\u002F OTS requires chars to be between a range and not certain other\\n        \u002F\u002F chars.\\n        let char = name[j];\\n        if (\\n          char \u003C \\\"!\\\" ||\\n          char > \\\"~\\\" ||\\n          char === \\\"[\\\" ||\\n          char === \\\"]\\\" ||\\n          char === \\\"(\\\" ||\\n          char === \\\")\\\" ||\\n          char === \\\"{\\\" ||\\n          char === \\\"}\\\" ||\\n          char === \\\"\u003C\\\" ||\\n          char === \\\">\\\" ||\\n          char === \\\"\u002F\\\" ||\\n          char === \\\"%\\\"\\n        ) {\\n          char = \\\"_\\\";\\n        }\\n        sanitizedName[j] = char;\\n      }\\n      sanitizedName = sanitizedName.join(\\\"\\\");\\n\\n      if (sanitizedName === \\\"\\\") {\\n        sanitizedName = \\\"Bad_Font_Name\\\";\\n      }\\n      nameIndex.add(stringToBytes(sanitizedName));\\n    }\\n    return this.compileIndex(nameIndex);\\n  }\\n\\n  compileTopDicts(dicts, length, removeCidKeys) {\\n    const fontDictTrackers = [];\\n    let fdArrayIndex = new CFFIndex();\\n    for (const fontDict of dicts) {\\n      if (removeCidKeys) {\\n        fontDict.removeByName(\\\"CIDFontVersion\\\");\\n        fontDict.removeByName(\\\"CIDFontRevision\\\");\\n        fontDict.removeByName(\\\"CIDFontType\\\");\\n        fontDict.removeByName(\\\"CIDCount\\\");\\n        fontDict.removeByName(\\\"UIDBase\\\");\\n      }\\n      const fontDictTracker = new CFFOffsetTracker();\\n      const fontDictData = this.compileDict(fontDict, fontDictTracker);\\n      fontDictTrackers.push(fontDictTracker);\\n      fdArrayIndex.add(fontDictData);\\n      fontDictTracker.offset(length);\\n    }\\n    fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);\\n    return {\\n      trackers: fontDictTrackers,\\n      output: fdArrayIndex,\\n    };\\n  }\\n\\n  compilePrivateDicts(dicts, trackers, output) {\\n    for (let i = 0, ii = dicts.length; i \u003C ii; ++i) {\\n      const fontDict = dicts[i];\\n      const privateDict = fontDict.privateDict;\\n      if (!privateDict || !fontDict.hasName(\\\"Private\\\")) {\\n        throw new FormatError(\\\"There must be a private dictionary.\\\");\\n      }\\n      const privateDictTracker = new CFFOffsetTracker();\\n      const privateDictData = this.compileDict(privateDict, privateDictTracker);\\n\\n      let outputLength = output.length;\\n      privateDictTracker.offset(outputLength);\\n      if (!privateDictData.length) {\\n        \u002F\u002F The private dictionary was empty, set the output length to zero to\\n        \u002F\u002F ensure the offset length isn't out of bounds in the eyes of the\\n        \u002F\u002F sanitizer.\\n        outputLength = 0;\\n      }\\n\\n      trackers[i].setEntryLocation(\\n        \\\"Private\\\",\\n        [privateDictData.length, outputLength],\\n        output\\n      );\\n      output.add(privateDictData);\\n\\n      if (privateDict.subrsIndex && privateDict.hasName(\\\"Subrs\\\")) {\\n        const subrs = this.compileIndex(privateDict.subrsIndex);\\n        privateDictTracker.setEntryLocation(\\n          \\\"Subrs\\\",\\n          [privateDictData.length],\\n          output\\n        );\\n        output.add(subrs);\\n      }\\n    }\\n  }\\n\\n  compileDict(dict, offsetTracker) {\\n    const out = [];\\n    \u002F\u002F The dictionary keys must be in a certain order.\\n    for (const key of dict.order) {\\n      if (!(key in dict.values)) {\\n        continue;\\n      }\\n      let values = dict.values[key];\\n      let types = dict.types[key];\\n      if (!Array.isArray(types)) {\\n        types = [types];\\n      }\\n      if (!Array.isArray(values)) {\\n        values = [values];\\n      }\\n\\n      \u002F\u002F Remove any empty dict values.\\n      if (values.length === 0) {\\n        continue;\\n      }\\n\\n      for (let j = 0, jj = types.length; j \u003C jj; ++j) {\\n        const type = types[j];\\n        const value = values[j];\\n        switch (type) {\\n          case \\\"num\\\":\\n          case \\\"sid\\\":\\n            out.push(...this.encodeNumber(value));\\n            break;\\n          case \\\"offset\\\":\\n            \u002F\u002F For offsets we just insert a 32bit integer so we don't have to\\n            \u002F\u002F deal with figuring out the length of the offset when it gets\\n            \u002F\u002F replaced later on by the compiler.\\n            const name = dict.keyToNameMap[key];\\n            \u002F\u002F Some offsets have the offset and the length, so just record the\\n            \u002F\u002F position of the first one.\\n            if (!offsetTracker.isTracking(name)) {\\n              offsetTracker.track(name, out.length);\\n            }\\n            out.push(0x1d, 0, 0, 0, 0);\\n            break;\\n          case \\\"array\\\":\\n          case \\\"delta\\\":\\n            out.push(...this.encodeNumber(value));\\n            for (let k = 1, kk = values.length; k \u003C kk; ++k) {\\n              out.push(...this.encodeNumber(values[k]));\\n            }\\n            break;\\n          default:\\n            throw new FormatError(`Unknown data type of ${type}`);\\n        }\\n      }\\n      out.push(...dict.opcodes[key]);\\n    }\\n    return out;\\n  }\\n\\n  compileStringIndex(strings) {\\n    const stringIndex = new CFFIndex();\\n    for (const string of strings) {\\n      stringIndex.add(stringToBytes(string));\\n    }\\n    return this.compileIndex(stringIndex);\\n  }\\n\\n  compileCharStrings(charStrings) {\\n    const charStringsIndex = new CFFIndex();\\n    for (let i = 0; i \u003C charStrings.count; i++) {\\n      const glyph = charStrings.get(i);\\n      \u002F\u002F If the CharString outline is empty, replace it with .notdef to\\n      \u002F\u002F prevent OTS from rejecting the font (fixes bug1252420.pdf).\\n      if (glyph.length === 0) {\\n        charStringsIndex.add(new Uint8Array([0x8b, 0x0e]));\\n        continue;\\n      }\\n      charStringsIndex.add(glyph);\\n    }\\n    return this.compileIndex(charStringsIndex);\\n  }\\n\\n  compileCharset(charset, numGlyphs, strings, isCIDFont) {\\n    \u002F\u002F Freetype requires the number of charset strings be correct and MacOS\\n    \u002F\u002F requires a valid mapping for printing.\\n    let out;\\n    const numGlyphsLessNotDef = numGlyphs - 1;\\n    if (isCIDFont) {\\n      \u002F\u002F In a CID font, the charset is a mapping of CIDs not SIDs so just\\n      \u002F\u002F create an identity mapping.\\n      out = new Uint8Array([\\n        2, \u002F\u002F format\\n        0, \u002F\u002F first CID upper byte\\n        0, \u002F\u002F first CID lower byte\\n        (numGlyphsLessNotDef >> 8) & 0xff,\\n        numGlyphsLessNotDef & 0xff,\\n      ]);\\n    } else {\\n      const length = 1 + numGlyphsLessNotDef * 2;\\n      out = new Uint8Array(length);\\n      out[0] = 0; \u002F\u002F format 0\\n      let charsetIndex = 0;\\n      const numCharsets = charset.charset.length;\\n      let warned = false;\\n      for (let i = 1; i \u003C out.length; i += 2) {\\n        let sid = 0;\\n        if (charsetIndex \u003C numCharsets) {\\n          const name = charset.charset[charsetIndex++];\\n          sid = strings.getSID(name);\\n          if (sid === -1) {\\n            sid = 0;\\n            if (!warned) {\\n              warned = true;\\n              warn(`Couldn't find ${name} in CFF strings`);\\n            }\\n          }\\n        }\\n        out[i] = (sid >> 8) & 0xff;\\n        out[i + 1] = sid & 0xff;\\n      }\\n    }\\n    return this.compileTypedArray(out);\\n  }\\n\\n  compileEncoding(encoding) {\\n    return this.compileTypedArray(encoding.raw);\\n  }\\n\\n  compileFDSelect(fdSelect) {\\n    const format = fdSelect.format;\\n    let out, i;\\n    switch (format) {\\n      case 0:\\n        out = new Uint8Array(1 + fdSelect.fdSelect.length);\\n        out[0] = format;\\n        for (i = 0; i \u003C fdSelect.fdSelect.length; i++) {\\n          out[i + 1] = fdSelect.fdSelect[i];\\n        }\\n        break;\\n      case 3:\\n        const start = 0;\\n        let lastFD = fdSelect.fdSelect[0];\\n        const ranges = [\\n          format,\\n          0, \u002F\u002F nRanges place holder\\n          0, \u002F\u002F nRanges place holder\\n          (start >> 8) & 0xff,\\n          start & 0xff,\\n          lastFD,\\n        ];\\n        for (i = 1; i \u003C fdSelect.fdSelect.length; i++) {\\n          const currentFD = fdSelect.fdSelect[i];\\n          if (currentFD !== lastFD) {\\n            ranges.push((i >> 8) & 0xff, i & 0xff, currentFD);\\n            lastFD = currentFD;\\n          }\\n        }\\n        \u002F\u002F 3 bytes are pushed for every range and there are 3 header bytes.\\n        const numRanges = (ranges.length - 3) \u002F 3;\\n        ranges[1] = (numRanges >> 8) & 0xff;\\n        ranges[2] = numRanges & 0xff;\\n        \u002F\u002F sentinel\\n        ranges.push((i >> 8) & 0xff, i & 0xff);\\n        out = new Uint8Array(ranges);\\n        break;\\n    }\\n    return this.compileTypedArray(out);\\n  }\\n\\n  compileTypedArray(data) {\\n    return Array.from(data);\\n  }\\n\\n  compileIndex(index, trackers = []) {\\n    const objects = index.objects;\\n    \u002F\u002F First 2 bytes contains the number of objects contained into this index\\n    const count = objects.length;\\n\\n    \u002F\u002F If there is no object, just create an index.\\n    if (count === 0) {\\n      return [0, 0];\\n    }\\n\\n    const data = [(count >> 8) & 0xff, count & 0xff];\\n\\n    let lastOffset = 1,\\n      i;\\n    for (i = 0; i \u003C count; ++i) {\\n      lastOffset += objects[i].length;\\n    }\\n\\n    let offsetSize;\\n    if (lastOffset \u003C 0x100) {\\n      offsetSize = 1;\\n    } else if (lastOffset \u003C 0x10000) {\\n      offsetSize = 2;\\n    } else if (lastOffset \u003C 0x1000000) {\\n      offsetSize = 3;\\n    } else {\\n      offsetSize = 4;\\n    }\\n\\n    \u002F\u002F Next byte contains the offset size use to reference object in the file\\n    data.push(offsetSize);\\n\\n    \u002F\u002F Add another offset after this one because we need a new offset\\n    let relativeOffset = 1;\\n    for (i = 0; i \u003C count + 1; i++) {\\n      if (offsetSize === 1) {\\n        data.push(relativeOffset & 0xff);\\n      } else if (offsetSize === 2) {\\n        data.push((relativeOffset >> 8) & 0xff, relativeOffset & 0xff);\\n      } else if (offsetSize === 3) {\\n        data.push(\\n          (relativeOffset >> 16) & 0xff,\\n          (relativeOffset >> 8) & 0xff,\\n          relativeOffset & 0xff\\n        );\\n      } else {\\n        data.push(\\n          (relativeOffset >>> 24) & 0xff,\\n          (relativeOffset >> 16) & 0xff,\\n          (relativeOffset >> 8) & 0xff,\\n          relativeOffset & 0xff\\n        );\\n      }\\n\\n      if (objects[i]) {\\n        relativeOffset += objects[i].length;\\n      }\\n    }\\n\\n    for (i = 0; i \u003C count; i++) {\\n      \u002F\u002F Notify the tracker where the object will be offset in the data.\\n      if (trackers[i]) {\\n        trackers[i].offset(data.length);\\n      }\\n      data.push(...objects[i]);\\n    }\\n    return data;\\n  }\\n}\\n\\nexport {\\n  CFF,\\n  CFFCharset,\\n  CFFCompiler,\\n  CFFFDSelect,\\n  CFFHeader,\\n  CFFIndex,\\n  CFFParser,\\n  CFFPrivateDict,\\n  CFFStandardStrings,\\n  CFFStrings,\\n  CFFTopDict,\\n};\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { getLookupTableFactory } from \\\".\u002Fcore_utils.js\\\";\\n\\nconst getGlyphsUnicode = getLookupTableFactory(function (t) {\\n  t.A = 0x0041;\\n  t.AE = 0x00c6;\\n  t.AEacute = 0x01fc;\\n  t.AEmacron = 0x01e2;\\n  t.AEsmall = 0xf7e6;\\n  t.Aacute = 0x00c1;\\n  t.Aacutesmall = 0xf7e1;\\n  t.Abreve = 0x0102;\\n  t.Abreveacute = 0x1eae;\\n  t.Abrevecyrillic = 0x04d0;\\n  t.Abrevedotbelow = 0x1eb6;\\n  t.Abrevegrave = 0x1eb0;\\n  t.Abrevehookabove = 0x1eb2;\\n  t.Abrevetilde = 0x1eb4;\\n  t.Acaron = 0x01cd;\\n  t.Acircle = 0x24b6;\\n  t.Acircumflex = 0x00c2;\\n  t.Acircumflexacute = 0x1ea4;\\n  t.Acircumflexdotbelow = 0x1eac;\\n  t.Acircumflexgrave = 0x1ea6;\\n  t.Acircumflexhookabove = 0x1ea8;\\n  t.Acircumflexsmall = 0xf7e2;\\n  t.Acircumflextilde = 0x1eaa;\\n  t.Acute = 0xf6c9;\\n  t.Acutesmall = 0xf7b4;\\n  t.Acyrillic = 0x0410;\\n  t.Adblgrave = 0x0200;\\n  t.Adieresis = 0x00c4;\\n  t.Adieresiscyrillic = 0x04d2;\\n  t.Adieresismacron = 0x01de;\\n  t.Adieresissmall = 0xf7e4;\\n  t.Adotbelow = 0x1ea0;\\n  t.Adotmacron = 0x01e0;\\n  t.Agrave = 0x00c0;\\n  t.Agravesmall = 0xf7e0;\\n  t.Ahookabove = 0x1ea2;\\n  t.Aiecyrillic = 0x04d4;\\n  t.Ainvertedbreve = 0x0202;\\n  t.Alpha = 0x0391;\\n  t.Alphatonos = 0x0386;\\n  t.Amacron = 0x0100;\\n  t.Amonospace = 0xff21;\\n  t.Aogonek = 0x0104;\\n  t.Aring = 0x00c5;\\n  t.Aringacute = 0x01fa;\\n  t.Aringbelow = 0x1e00;\\n  t.Aringsmall = 0xf7e5;\\n  t.Asmall = 0xf761;\\n  t.Atilde = 0x00c3;\\n  t.Atildesmall = 0xf7e3;\\n  t.Aybarmenian = 0x0531;\\n  t.B = 0x0042;\\n  t.Bcircle = 0x24b7;\\n  t.Bdotaccent = 0x1e02;\\n  t.Bdotbelow = 0x1e04;\\n  t.Becyrillic = 0x0411;\\n  t.Benarmenian = 0x0532;\\n  t.Beta = 0x0392;\\n  t.Bhook = 0x0181;\\n  t.Blinebelow = 0x1e06;\\n  t.Bmonospace = 0xff22;\\n  t.Brevesmall = 0xf6f4;\\n  t.Bsmall = 0xf762;\\n  t.Btopbar = 0x0182;\\n  t.C = 0x0043;\\n  t.Caarmenian = 0x053e;\\n  t.Cacute = 0x0106;\\n  t.Caron = 0xf6ca;\\n  t.Caronsmall = 0xf6f5;\\n  t.Ccaron = 0x010c;\\n  t.Ccedilla = 0x00c7;\\n  t.Ccedillaacute = 0x1e08;\\n  t.Ccedillasmall = 0xf7e7;\\n  t.Ccircle = 0x24b8;\\n  t.Ccircumflex = 0x0108;\\n  t.Cdot = 0x010a;\\n  t.Cdotaccent = 0x010a;\\n  t.Cedillasmall = 0xf7b8;\\n  t.Chaarmenian = 0x0549;\\n  t.Cheabkhasiancyrillic = 0x04bc;\\n  t.Checyrillic = 0x0427;\\n  t.Chedescenderabkhasiancyrillic = 0x04be;\\n  t.Chedescendercyrillic = 0x04b6;\\n  t.Chedieresiscyrillic = 0x04f4;\\n  t.Cheharmenian = 0x0543;\\n  t.Chekhakassiancyrillic = 0x04cb;\\n  t.Cheverticalstrokecyrillic = 0x04b8;\\n  t.Chi = 0x03a7;\\n  t.Chook = 0x0187;\\n  t.Circumflexsmall = 0xf6f6;\\n  t.Cmonospace = 0xff23;\\n  t.Coarmenian = 0x0551;\\n  t.Csmall = 0xf763;\\n  t.D = 0x0044;\\n  t.DZ = 0x01f1;\\n  t.DZcaron = 0x01c4;\\n  t.Daarmenian = 0x0534;\\n  t.Dafrican = 0x0189;\\n  t.Dcaron = 0x010e;\\n  t.Dcedilla = 0x1e10;\\n  t.Dcircle = 0x24b9;\\n  t.Dcircumflexbelow = 0x1e12;\\n  t.Dcroat = 0x0110;\\n  t.Ddotaccent = 0x1e0a;\\n  t.Ddotbelow = 0x1e0c;\\n  t.Decyrillic = 0x0414;\\n  t.Deicoptic = 0x03ee;\\n  t.Delta = 0x2206;\\n  t.Deltagreek = 0x0394;\\n  t.Dhook = 0x018a;\\n  t.Dieresis = 0xf6cb;\\n  t.DieresisAcute = 0xf6cc;\\n  t.DieresisGrave = 0xf6cd;\\n  t.Dieresissmall = 0xf7a8;\\n  t.Digammagreek = 0x03dc;\\n  t.Djecyrillic = 0x0402;\\n  t.Dlinebelow = 0x1e0e;\\n  t.Dmonospace = 0xff24;\\n  t.Dotaccentsmall = 0xf6f7;\\n  t.Dslash = 0x0110;\\n  t.Dsmall = 0xf764;\\n  t.Dtopbar = 0x018b;\\n  t.Dz = 0x01f2;\\n  t.Dzcaron = 0x01c5;\\n  t.Dzeabkhasiancyrillic = 0x04e0;\\n  t.Dzecyrillic = 0x0405;\\n  t.Dzhecyrillic = 0x040f;\\n  t.E = 0x0045;\\n  t.Eacute = 0x00c9;\\n  t.Eacutesmall = 0xf7e9;\\n  t.Ebreve = 0x0114;\\n  t.Ecaron = 0x011a;\\n  t.Ecedillabreve = 0x1e1c;\\n  t.Echarmenian = 0x0535;\\n  t.Ecircle = 0x24ba;\\n  t.Ecircumflex = 0x00ca;\\n  t.Ecircumflexacute = 0x1ebe;\\n  t.Ecircumflexbelow = 0x1e18;\\n  t.Ecircumflexdotbelow = 0x1ec6;\\n  t.Ecircumflexgrave = 0x1ec0;\\n  t.Ecircumflexhookabove = 0x1ec2;\\n  t.Ecircumflexsmall = 0xf7ea;\\n  t.Ecircumflextilde = 0x1ec4;\\n  t.Ecyrillic = 0x0404;\\n  t.Edblgrave = 0x0204;\\n  t.Edieresis = 0x00cb;\\n  t.Edieresissmall = 0xf7eb;\\n  t.Edot = 0x0116;\\n  t.Edotaccent = 0x0116;\\n  t.Edotbelow = 0x1eb8;\\n  t.Efcyrillic = 0x0424;\\n  t.Egrave = 0x00c8;\\n  t.Egravesmall = 0xf7e8;\\n  t.Eharmenian = 0x0537;\\n  t.Ehookabove = 0x1eba;\\n  t.Eightroman = 0x2167;\\n  t.Einvertedbreve = 0x0206;\\n  t.Eiotifiedcyrillic = 0x0464;\\n  t.Elcyrillic = 0x041b;\\n  t.Elevenroman = 0x216a;\\n  t.Emacron = 0x0112;\\n  t.Emacronacute = 0x1e16;\\n  t.Emacrongrave = 0x1e14;\\n  t.Emcyrillic = 0x041c;\\n  t.Emonospace = 0xff25;\\n  t.Encyrillic = 0x041d;\\n  t.Endescendercyrillic = 0x04a2;\\n  t.Eng = 0x014a;\\n  t.Enghecyrillic = 0x04a4;\\n  t.Enhookcyrillic = 0x04c7;\\n  t.Eogonek = 0x0118;\\n  t.Eopen = 0x0190;\\n  t.Epsilon = 0x0395;\\n  t.Epsilontonos = 0x0388;\\n  t.Ercyrillic = 0x0420;\\n  t.Ereversed = 0x018e;\\n  t.Ereversedcyrillic = 0x042d;\\n  t.Escyrillic = 0x0421;\\n  t.Esdescendercyrillic = 0x04aa;\\n  t.Esh = 0x01a9;\\n  t.Esmall = 0xf765;\\n  t.Eta = 0x0397;\\n  t.Etarmenian = 0x0538;\\n  t.Etatonos = 0x0389;\\n  t.Eth = 0x00d0;\\n  t.Ethsmall = 0xf7f0;\\n  t.Etilde = 0x1ebc;\\n  t.Etildebelow = 0x1e1a;\\n  t.Euro = 0x20ac;\\n  t.Ezh = 0x01b7;\\n  t.Ezhcaron = 0x01ee;\\n  t.Ezhreversed = 0x01b8;\\n  t.F = 0x0046;\\n  t.Fcircle = 0x24bb;\\n  t.Fdotaccent = 0x1e1e;\\n  t.Feharmenian = 0x0556;\\n  t.Feicoptic = 0x03e4;\\n  t.Fhook = 0x0191;\\n  t.Fitacyrillic = 0x0472;\\n  t.Fiveroman = 0x2164;\\n  t.Fmonospace = 0xff26;\\n  t.Fourroman = 0x2163;\\n  t.Fsmall = 0xf766;\\n  t.G = 0x0047;\\n  t.GBsquare = 0x3387;\\n  t.Gacute = 0x01f4;\\n  t.Gamma = 0x0393;\\n  t.Gammaafrican = 0x0194;\\n  t.Gangiacoptic = 0x03ea;\\n  t.Gbreve = 0x011e;\\n  t.Gcaron = 0x01e6;\\n  t.Gcedilla = 0x0122;\\n  t.Gcircle = 0x24bc;\\n  t.Gcircumflex = 0x011c;\\n  t.Gcommaaccent = 0x0122;\\n  t.Gdot = 0x0120;\\n  t.Gdotaccent = 0x0120;\\n  t.Gecyrillic = 0x0413;\\n  t.Ghadarmenian = 0x0542;\\n  t.Ghemiddlehookcyrillic = 0x0494;\\n  t.Ghestrokecyrillic = 0x0492;\\n  t.Gheupturncyrillic = 0x0490;\\n  t.Ghook = 0x0193;\\n  t.Gimarmenian = 0x0533;\\n  t.Gjecyrillic = 0x0403;\\n  t.Gmacron = 0x1e20;\\n  t.Gmonospace = 0xff27;\\n  t.Grave = 0xf6ce;\\n  t.Gravesmall = 0xf760;\\n  t.Gsmall = 0xf767;\\n  t.Gsmallhook = 0x029b;\\n  t.Gstroke = 0x01e4;\\n  t.H = 0x0048;\\n  t.H18533 = 0x25cf;\\n  t.H18543 = 0x25aa;\\n  t.H18551 = 0x25ab;\\n  t.H22073 = 0x25a1;\\n  t.HPsquare = 0x33cb;\\n  t.Haabkhasiancyrillic = 0x04a8;\\n  t.Hadescendercyrillic = 0x04b2;\\n  t.Hardsigncyrillic = 0x042a;\\n  t.Hbar = 0x0126;\\n  t.Hbrevebelow = 0x1e2a;\\n  t.Hcedilla = 0x1e28;\\n  t.Hcircle = 0x24bd;\\n  t.Hcircumflex = 0x0124;\\n  t.Hdieresis = 0x1e26;\\n  t.Hdotaccent = 0x1e22;\\n  t.Hdotbelow = 0x1e24;\\n  t.Hmonospace = 0xff28;\\n  t.Hoarmenian = 0x0540;\\n  t.Horicoptic = 0x03e8;\\n  t.Hsmall = 0xf768;\\n  t.Hungarumlaut = 0xf6cf;\\n  t.Hungarumlautsmall = 0xf6f8;\\n  t.Hzsquare = 0x3390;\\n  t.I = 0x0049;\\n  t.IAcyrillic = 0x042f;\\n  t.IJ = 0x0132;\\n  t.IUcyrillic = 0x042e;\\n  t.Iacute = 0x00cd;\\n  t.Iacutesmall = 0xf7ed;\\n  t.Ibreve = 0x012c;\\n  t.Icaron = 0x01cf;\\n  t.Icircle = 0x24be;\\n  t.Icircumflex = 0x00ce;\\n  t.Icircumflexsmall = 0xf7ee;\\n  t.Icyrillic = 0x0406;\\n  t.Idblgrave = 0x0208;\\n  t.Idieresis = 0x00cf;\\n  t.Idieresisacute = 0x1e2e;\\n  t.Idieresiscyrillic = 0x04e4;\\n  t.Idieresissmall = 0xf7ef;\\n  t.Idot = 0x0130;\\n  t.Idotaccent = 0x0130;\\n  t.Idotbelow = 0x1eca;\\n  t.Iebrevecyrillic = 0x04d6;\\n  t.Iecyrillic = 0x0415;\\n  t.Ifraktur = 0x2111;\\n  t.Igrave = 0x00cc;\\n  t.Igravesmall = 0xf7ec;\\n  t.Ihookabove = 0x1ec8;\\n  t.Iicyrillic = 0x0418;\\n  t.Iinvertedbreve = 0x020a;\\n  t.Iishortcyrillic = 0x0419;\\n  t.Imacron = 0x012a;\\n  t.Imacroncyrillic = 0x04e2;\\n  t.Imonospace = 0xff29;\\n  t.Iniarmenian = 0x053b;\\n  t.Iocyrillic = 0x0401;\\n  t.Iogonek = 0x012e;\\n  t.Iota = 0x0399;\\n  t.Iotaafrican = 0x0196;\\n  t.Iotadieresis = 0x03aa;\\n  t.Iotatonos = 0x038a;\\n  t.Ismall = 0xf769;\\n  t.Istroke = 0x0197;\\n  t.Itilde = 0x0128;\\n  t.Itildebelow = 0x1e2c;\\n  t.Izhitsacyrillic = 0x0474;\\n  t.Izhitsadblgravecyrillic = 0x0476;\\n  t.J = 0x004a;\\n  t.Jaarmenian = 0x0541;\\n  t.Jcircle = 0x24bf;\\n  t.Jcircumflex = 0x0134;\\n  t.Jecyrillic = 0x0408;\\n  t.Jheharmenian = 0x054b;\\n  t.Jmonospace = 0xff2a;\\n  t.Jsmall = 0xf76a;\\n  t.K = 0x004b;\\n  t.KBsquare = 0x3385;\\n  t.KKsquare = 0x33cd;\\n  t.Kabashkircyrillic = 0x04a0;\\n  t.Kacute = 0x1e30;\\n  t.Kacyrillic = 0x041a;\\n  t.Kadescendercyrillic = 0x049a;\\n  t.Kahookcyrillic = 0x04c3;\\n  t.Kappa = 0x039a;\\n  t.Kastrokecyrillic = 0x049e;\\n  t.Kaverticalstrokecyrillic = 0x049c;\\n  t.Kcaron = 0x01e8;\\n  t.Kcedilla = 0x0136;\\n  t.Kcircle = 0x24c0;\\n  t.Kcommaaccent = 0x0136;\\n  t.Kdotbelow = 0x1e32;\\n  t.Keharmenian = 0x0554;\\n  t.Kenarmenian = 0x053f;\\n  t.Khacyrillic = 0x0425;\\n  t.Kheicoptic = 0x03e6;\\n  t.Khook = 0x0198;\\n  t.Kjecyrillic = 0x040c;\\n  t.Klinebelow = 0x1e34;\\n  t.Kmonospace = 0xff2b;\\n  t.Koppacyrillic = 0x0480;\\n  t.Koppagreek = 0x03de;\\n  t.Ksicyrillic = 0x046e;\\n  t.Ksmall = 0xf76b;\\n  t.L = 0x004c;\\n  t.LJ = 0x01c7;\\n  t.LL = 0xf6bf;\\n  t.Lacute = 0x0139;\\n  t.Lambda = 0x039b;\\n  t.Lcaron = 0x013d;\\n  t.Lcedilla = 0x013b;\\n  t.Lcircle = 0x24c1;\\n  t.Lcircumflexbelow = 0x1e3c;\\n  t.Lcommaaccent = 0x013b;\\n  t.Ldot = 0x013f;\\n  t.Ldotaccent = 0x013f;\\n  t.Ldotbelow = 0x1e36;\\n  t.Ldotbelowmacron = 0x1e38;\\n  t.Liwnarmenian = 0x053c;\\n  t.Lj = 0x01c8;\\n  t.Ljecyrillic = 0x0409;\\n  t.Llinebelow = 0x1e3a;\\n  t.Lmonospace = 0xff2c;\\n  t.Lslash = 0x0141;\\n  t.Lslashsmall = 0xf6f9;\\n  t.Lsmall = 0xf76c;\\n  t.M = 0x004d;\\n  t.MBsquare = 0x3386;\\n  t.Macron = 0xf6d0;\\n  t.Macronsmall = 0xf7af;\\n  t.Macute = 0x1e3e;\\n  t.Mcircle = 0x24c2;\\n  t.Mdotaccent = 0x1e40;\\n  t.Mdotbelow = 0x1e42;\\n  t.Menarmenian = 0x0544;\\n  t.Mmonospace = 0xff2d;\\n  t.Msmall = 0xf76d;\\n  t.Mturned = 0x019c;\\n  t.Mu = 0x039c;\\n  t.N = 0x004e;\\n  t.NJ = 0x01ca;\\n  t.Nacute = 0x0143;\\n  t.Ncaron = 0x0147;\\n  t.Ncedilla = 0x0145;\\n  t.Ncircle = 0x24c3;\\n  t.Ncircumflexbelow = 0x1e4a;\\n  t.Ncommaaccent = 0x0145;\\n  t.Ndotaccent = 0x1e44;\\n  t.Ndotbelow = 0x1e46;\\n  t.Nhookleft = 0x019d;\\n  t.Nineroman = 0x2168;\\n  t.Nj = 0x01cb;\\n  t.Njecyrillic = 0x040a;\\n  t.Nlinebelow = 0x1e48;\\n  t.Nmonospace = 0xff2e;\\n  t.Nowarmenian = 0x0546;\\n  t.Nsmall = 0xf76e;\\n  t.Ntilde = 0x00d1;\\n  t.Ntildesmall = 0xf7f1;\\n  t.Nu = 0x039d;\\n  t.O = 0x004f;\\n  t.OE = 0x0152;\\n  t.OEsmall = 0xf6fa;\\n  t.Oacute = 0x00d3;\\n  t.Oacutesmall = 0xf7f3;\\n  t.Obarredcyrillic = 0x04e8;\\n  t.Obarreddieresiscyrillic = 0x04ea;\\n  t.Obreve = 0x014e;\\n  t.Ocaron = 0x01d1;\\n  t.Ocenteredtilde = 0x019f;\\n  t.Ocircle = 0x24c4;\\n  t.Ocircumflex = 0x00d4;\\n  t.Ocircumflexacute = 0x1ed0;\\n  t.Ocircumflexdotbelow = 0x1ed8;\\n  t.Ocircumflexgrave = 0x1ed2;\\n  t.Ocircumflexhookabove = 0x1ed4;\\n  t.Ocircumflexsmall = 0xf7f4;\\n  t.Ocircumflextilde = 0x1ed6;\\n  t.Ocyrillic = 0x041e;\\n  t.Odblacute = 0x0150;\\n  t.Odblgrave = 0x020c;\\n  t.Odieresis = 0x00d6;\\n  t.Odieresiscyrillic = 0x04e6;\\n  t.Odieresissmall = 0xf7f6;\\n  t.Odotbelow = 0x1ecc;\\n  t.Ogoneksmall = 0xf6fb;\\n  t.Ograve = 0x00d2;\\n  t.Ogravesmall = 0xf7f2;\\n  t.Oharmenian = 0x0555;\\n  t.Ohm = 0x2126;\\n  t.Ohookabove = 0x1ece;\\n  t.Ohorn = 0x01a0;\\n  t.Ohornacute = 0x1eda;\\n  t.Ohorndotbelow = 0x1ee2;\\n  t.Ohorngrave = 0x1edc;\\n  t.Ohornhookabove = 0x1ede;\\n  t.Ohorntilde = 0x1ee0;\\n  t.Ohungarumlaut = 0x0150;\\n  t.Oi = 0x01a2;\\n  t.Oinvertedbreve = 0x020e;\\n  t.Omacron = 0x014c;\\n  t.Omacronacute = 0x1e52;\\n  t.Omacrongrave = 0x1e50;\\n  t.Omega = 0x2126;\\n  t.Omegacyrillic = 0x0460;\\n  t.Omegagreek = 0x03a9;\\n  t.Omegaroundcyrillic = 0x047a;\\n  t.Omegatitlocyrillic = 0x047c;\\n  t.Omegatonos = 0x038f;\\n  t.Omicron = 0x039f;\\n  t.Omicrontonos = 0x038c;\\n  t.Omonospace = 0xff2f;\\n  t.Oneroman = 0x2160;\\n  t.Oogonek = 0x01ea;\\n  t.Oogonekmacron = 0x01ec;\\n  t.Oopen = 0x0186;\\n  t.Oslash = 0x00d8;\\n  t.Oslashacute = 0x01fe;\\n  t.Oslashsmall = 0xf7f8;\\n  t.Osmall = 0xf76f;\\n  t.Ostrokeacute = 0x01fe;\\n  t.Otcyrillic = 0x047e;\\n  t.Otilde = 0x00d5;\\n  t.Otildeacute = 0x1e4c;\\n  t.Otildedieresis = 0x1e4e;\\n  t.Otildesmall = 0xf7f5;\\n  t.P = 0x0050;\\n  t.Pacute = 0x1e54;\\n  t.Pcircle = 0x24c5;\\n  t.Pdotaccent = 0x1e56;\\n  t.Pecyrillic = 0x041f;\\n  t.Peharmenian = 0x054a;\\n  t.Pemiddlehookcyrillic = 0x04a6;\\n  t.Phi = 0x03a6;\\n  t.Phook = 0x01a4;\\n  t.Pi = 0x03a0;\\n  t.Piwrarmenian = 0x0553;\\n  t.Pmonospace = 0xff30;\\n  t.Psi = 0x03a8;\\n  t.Psicyrillic = 0x0470;\\n  t.Psmall = 0xf770;\\n  t.Q = 0x0051;\\n  t.Qcircle = 0x24c6;\\n  t.Qmonospace = 0xff31;\\n  t.Qsmall = 0xf771;\\n  t.R = 0x0052;\\n  t.Raarmenian = 0x054c;\\n  t.Racute = 0x0154;\\n  t.Rcaron = 0x0158;\\n  t.Rcedilla = 0x0156;\\n  t.Rcircle = 0x24c7;\\n  t.Rcommaaccent = 0x0156;\\n  t.Rdblgrave = 0x0210;\\n  t.Rdotaccent = 0x1e58;\\n  t.Rdotbelow = 0x1e5a;\\n  t.Rdotbelowmacron = 0x1e5c;\\n  t.Reharmenian = 0x0550;\\n  t.Rfraktur = 0x211c;\\n  t.Rho = 0x03a1;\\n  t.Ringsmall = 0xf6fc;\\n  t.Rinvertedbreve = 0x0212;\\n  t.Rlinebelow = 0x1e5e;\\n  t.Rmonospace = 0xff32;\\n  t.Rsmall = 0xf772;\\n  t.Rsmallinverted = 0x0281;\\n  t.Rsmallinvertedsuperior = 0x02b6;\\n  t.S = 0x0053;\\n  t.SF010000 = 0x250c;\\n  t.SF020000 = 0x2514;\\n  t.SF030000 = 0x2510;\\n  t.SF040000 = 0x2518;\\n  t.SF050000 = 0x253c;\\n  t.SF060000 = 0x252c;\\n  t.SF070000 = 0x2534;\\n  t.SF080000 = 0x251c;\\n  t.SF090000 = 0x2524;\\n  t.SF100000 = 0x2500;\\n  t.SF110000 = 0x2502;\\n  t.SF190000 = 0x2561;\\n  t.SF200000 = 0x2562;\\n  t.SF210000 = 0x2556;\\n  t.SF220000 = 0x2555;\\n  t.SF230000 = 0x2563;\\n  t.SF240000 = 0x2551;\\n  t.SF250000 = 0x2557;\\n  t.SF260000 = 0x255d;\\n  t.SF270000 = 0x255c;\\n  t.SF280000 = 0x255b;\\n  t.SF360000 = 0x255e;\\n  t.SF370000 = 0x255f;\\n  t.SF380000 = 0x255a;\\n  t.SF390000 = 0x2554;\\n  t.SF400000 = 0x2569;\\n  t.SF410000 = 0x2566;\\n  t.SF420000 = 0x2560;\\n  t.SF430000 = 0x2550;\\n  t.SF440000 = 0x256c;\\n  t.SF450000 = 0x2567;\\n  t.SF460000 = 0x2568;\\n  t.SF470000 = 0x2564;\\n  t.SF480000 = 0x2565;\\n  t.SF490000 = 0x2559;\\n  t.SF500000 = 0x2558;\\n  t.SF510000 = 0x2552;\\n  t.SF520000 = 0x2553;\\n  t.SF530000 = 0x256b;\\n  t.SF540000 = 0x256a;\\n  t.Sacute = 0x015a;\\n  t.Sacutedotaccent = 0x1e64;\\n  t.Sampigreek = 0x03e0;\\n  t.Scaron = 0x0160;\\n  t.Scarondotaccent = 0x1e66;\\n  t.Scaronsmall = 0xf6fd;\\n  t.Scedilla = 0x015e;\\n  t.Schwa = 0x018f;\\n  t.Schwacyrillic = 0x04d8;\\n  t.Schwadieresiscyrillic = 0x04da;\\n  t.Scircle = 0x24c8;\\n  t.Scircumflex = 0x015c;\\n  t.Scommaaccent = 0x0218;\\n  t.Sdotaccent = 0x1e60;\\n  t.Sdotbelow = 0x1e62;\\n  t.Sdotbelowdotaccent = 0x1e68;\\n  t.Seharmenian = 0x054d;\\n  t.Sevenroman = 0x2166;\\n  t.Shaarmenian = 0x0547;\\n  t.Shacyrillic = 0x0428;\\n  t.Shchacyrillic = 0x0429;\\n  t.Sheicoptic = 0x03e2;\\n  t.Shhacyrillic = 0x04ba;\\n  t.Shimacoptic = 0x03ec;\\n  t.Sigma = 0x03a3;\\n  t.Sixroman = 0x2165;\\n  t.Smonospace = 0xff33;\\n  t.Softsigncyrillic = 0x042c;\\n  t.Ssmall = 0xf773;\\n  t.Stigmagreek = 0x03da;\\n  t.T = 0x0054;\\n  t.Tau = 0x03a4;\\n  t.Tbar = 0x0166;\\n  t.Tcaron = 0x0164;\\n  t.Tcedilla = 0x0162;\\n  t.Tcircle = 0x24c9;\\n  t.Tcircumflexbelow = 0x1e70;\\n  t.Tcommaaccent = 0x0162;\\n  t.Tdotaccent = 0x1e6a;\\n  t.Tdotbelow = 0x1e6c;\\n  t.Tecyrillic = 0x0422;\\n  t.Tedescendercyrillic = 0x04ac;\\n  t.Tenroman = 0x2169;\\n  t.Tetsecyrillic = 0x04b4;\\n  t.Theta = 0x0398;\\n  t.Thook = 0x01ac;\\n  t.Thorn = 0x00de;\\n  t.Thornsmall = 0xf7fe;\\n  t.Threeroman = 0x2162;\\n  t.Tildesmall = 0xf6fe;\\n  t.Tiwnarmenian = 0x054f;\\n  t.Tlinebelow = 0x1e6e;\\n  t.Tmonospace = 0xff34;\\n  t.Toarmenian = 0x0539;\\n  t.Tonefive = 0x01bc;\\n  t.Tonesix = 0x0184;\\n  t.Tonetwo = 0x01a7;\\n  t.Tretroflexhook = 0x01ae;\\n  t.Tsecyrillic = 0x0426;\\n  t.Tshecyrillic = 0x040b;\\n  t.Tsmall = 0xf774;\\n  t.Twelveroman = 0x216b;\\n  t.Tworoman = 0x2161;\\n  t.U = 0x0055;\\n  t.Uacute = 0x00da;\\n  t.Uacutesmall = 0xf7fa;\\n  t.Ubreve = 0x016c;\\n  t.Ucaron = 0x01d3;\\n  t.Ucircle = 0x24ca;\\n  t.Ucircumflex = 0x00db;\\n  t.Ucircumflexbelow = 0x1e76;\\n  t.Ucircumflexsmall = 0xf7fb;\\n  t.Ucyrillic = 0x0423;\\n  t.Udblacute = 0x0170;\\n  t.Udblgrave = 0x0214;\\n  t.Udieresis = 0x00dc;\\n  t.Udieresisacute = 0x01d7;\\n  t.Udieresisbelow = 0x1e72;\\n  t.Udieresiscaron = 0x01d9;\\n  t.Udieresiscyrillic = 0x04f0;\\n  t.Udieresisgrave = 0x01db;\\n  t.Udieresismacron = 0x01d5;\\n  t.Udieresissmall = 0xf7fc;\\n  t.Udotbelow = 0x1ee4;\\n  t.Ugrave = 0x00d9;\\n  t.Ugravesmall = 0xf7f9;\\n  t.Uhookabove = 0x1ee6;\\n  t.Uhorn = 0x01af;\\n  t.Uhornacute = 0x1ee8;\\n  t.Uhorndotbelow = 0x1ef0;\\n  t.Uhorngrave = 0x1eea;\\n  t.Uhornhookabove = 0x1eec;\\n  t.Uhorntilde = 0x1eee;\\n  t.Uhungarumlaut = 0x0170;\\n  t.Uhungarumlautcyrillic = 0x04f2;\\n  t.Uinvertedbreve = 0x0216;\\n  t.Ukcyrillic = 0x0478;\\n  t.Umacron = 0x016a;\\n  t.Umacroncyrillic = 0x04ee;\\n  t.Umacrondieresis = 0x1e7a;\\n  t.Umonospace = 0xff35;\\n  t.Uogonek = 0x0172;\\n  t.Upsilon = 0x03a5;\\n  t.Upsilon1 = 0x03d2;\\n  t.Upsilonacutehooksymbolgreek = 0x03d3;\\n  t.Upsilonafrican = 0x01b1;\\n  t.Upsilondieresis = 0x03ab;\\n  t.Upsilondieresishooksymbolgreek = 0x03d4;\\n  t.Upsilonhooksymbol = 0x03d2;\\n  t.Upsilontonos = 0x038e;\\n  t.Uring = 0x016e;\\n  t.Ushortcyrillic = 0x040e;\\n  t.Usmall = 0xf775;\\n  t.Ustraightcyrillic = 0x04ae;\\n  t.Ustraightstrokecyrillic = 0x04b0;\\n  t.Utilde = 0x0168;\\n  t.Utildeacute = 0x1e78;\\n  t.Utildebelow = 0x1e74;\\n  t.V = 0x0056;\\n  t.Vcircle = 0x24cb;\\n  t.Vdotbelow = 0x1e7e;\\n  t.Vecyrillic = 0x0412;\\n  t.Vewarmenian = 0x054e;\\n  t.Vhook = 0x01b2;\\n  t.Vmonospace = 0xff36;\\n  t.Voarmenian = 0x0548;\\n  t.Vsmall = 0xf776;\\n  t.Vtilde = 0x1e7c;\\n  t.W = 0x0057;\\n  t.Wacute = 0x1e82;\\n  t.Wcircle = 0x24cc;\\n  t.Wcircumflex = 0x0174;\\n  t.Wdieresis = 0x1e84;\\n  t.Wdotaccent = 0x1e86;\\n  t.Wdotbelow = 0x1e88;\\n  t.Wgrave = 0x1e80;\\n  t.Wmonospace = 0xff37;\\n  t.Wsmall = 0xf777;\\n  t.X = 0x0058;\\n  t.Xcircle = 0x24cd;\\n  t.Xdieresis = 0x1e8c;\\n  t.Xdotaccent = 0x1e8a;\\n  t.Xeharmenian = 0x053d;\\n  t.Xi = 0x039e;\\n  t.Xmonospace = 0xff38;\\n  t.Xsmall = 0xf778;\\n  t.Y = 0x0059;\\n  t.Yacute = 0x00dd;\\n  t.Yacutesmall = 0xf7fd;\\n  t.Yatcyrillic = 0x0462;\\n  t.Ycircle = 0x24ce;\\n  t.Ycircumflex = 0x0176;\\n  t.Ydieresis = 0x0178;\\n  t.Ydieresissmall = 0xf7ff;\\n  t.Ydotaccent = 0x1e8e;\\n  t.Ydotbelow = 0x1ef4;\\n  t.Yericyrillic = 0x042b;\\n  t.Yerudieresiscyrillic = 0x04f8;\\n  t.Ygrave = 0x1ef2;\\n  t.Yhook = 0x01b3;\\n  t.Yhookabove = 0x1ef6;\\n  t.Yiarmenian = 0x0545;\\n  t.Yicyrillic = 0x0407;\\n  t.Yiwnarmenian = 0x0552;\\n  t.Ymonospace = 0xff39;\\n  t.Ysmall = 0xf779;\\n  t.Ytilde = 0x1ef8;\\n  t.Yusbigcyrillic = 0x046a;\\n  t.Yusbigiotifiedcyrillic = 0x046c;\\n  t.Yuslittlecyrillic = 0x0466;\\n  t.Yuslittleiotifiedcyrillic = 0x0468;\\n  t.Z = 0x005a;\\n  t.Zaarmenian = 0x0536;\\n  t.Zacute = 0x0179;\\n  t.Zcaron = 0x017d;\\n  t.Zcaronsmall = 0xf6ff;\\n  t.Zcircle = 0x24cf;\\n  t.Zcircumflex = 0x1e90;\\n  t.Zdot = 0x017b;\\n  t.Zdotaccent = 0x017b;\\n  t.Zdotbelow = 0x1e92;\\n  t.Zecyrillic = 0x0417;\\n  t.Zedescendercyrillic = 0x0498;\\n  t.Zedieresiscyrillic = 0x04de;\\n  t.Zeta = 0x0396;\\n  t.Zhearmenian = 0x053a;\\n  t.Zhebrevecyrillic = 0x04c1;\\n  t.Zhecyrillic = 0x0416;\\n  t.Zhedescendercyrillic = 0x0496;\\n  t.Zhedieresiscyrillic = 0x04dc;\\n  t.Zlinebelow = 0x1e94;\\n  t.Zmonospace = 0xff3a;\\n  t.Zsmall = 0xf77a;\\n  t.Zstroke = 0x01b5;\\n  t.a = 0x0061;\\n  t.aabengali = 0x0986;\\n  t.aacute = 0x00e1;\\n  t.aadeva = 0x0906;\\n  t.aagujarati = 0x0a86;\\n  t.aagurmukhi = 0x0a06;\\n  t.aamatragurmukhi = 0x0a3e;\\n  t.aarusquare = 0x3303;\\n  t.aavowelsignbengali = 0x09be;\\n  t.aavowelsigndeva = 0x093e;\\n  t.aavowelsigngujarati = 0x0abe;\\n  t.abbreviationmarkarmenian = 0x055f;\\n  t.abbreviationsigndeva = 0x0970;\\n  t.abengali = 0x0985;\\n  t.abopomofo = 0x311a;\\n  t.abreve = 0x0103;\\n  t.abreveacute = 0x1eaf;\\n  t.abrevecyrillic = 0x04d1;\\n  t.abrevedotbelow = 0x1eb7;\\n  t.abrevegrave = 0x1eb1;\\n  t.abrevehookabove = 0x1eb3;\\n  t.abrevetilde = 0x1eb5;\\n  t.acaron = 0x01ce;\\n  t.acircle = 0x24d0;\\n  t.acircumflex = 0x00e2;\\n  t.acircumflexacute = 0x1ea5;\\n  t.acircumflexdotbelow = 0x1ead;\\n  t.acircumflexgrave = 0x1ea7;\\n  t.acircumflexhookabove = 0x1ea9;\\n  t.acircumflextilde = 0x1eab;\\n  t.acute = 0x00b4;\\n  t.acutebelowcmb = 0x0317;\\n  t.acutecmb = 0x0301;\\n  t.acutecomb = 0x0301;\\n  t.acutedeva = 0x0954;\\n  t.acutelowmod = 0x02cf;\\n  t.acutetonecmb = 0x0341;\\n  t.acyrillic = 0x0430;\\n  t.adblgrave = 0x0201;\\n  t.addakgurmukhi = 0x0a71;\\n  t.adeva = 0x0905;\\n  t.adieresis = 0x00e4;\\n  t.adieresiscyrillic = 0x04d3;\\n  t.adieresismacron = 0x01df;\\n  t.adotbelow = 0x1ea1;\\n  t.adotmacron = 0x01e1;\\n  t.ae = 0x00e6;\\n  t.aeacute = 0x01fd;\\n  t.aekorean = 0x3150;\\n  t.aemacron = 0x01e3;\\n  t.afii00208 = 0x2015;\\n  t.afii08941 = 0x20a4;\\n  t.afii10017 = 0x0410;\\n  t.afii10018 = 0x0411;\\n  t.afii10019 = 0x0412;\\n  t.afii10020 = 0x0413;\\n  t.afii10021 = 0x0414;\\n  t.afii10022 = 0x0415;\\n  t.afii10023 = 0x0401;\\n  t.afii10024 = 0x0416;\\n  t.afii10025 = 0x0417;\\n  t.afii10026 = 0x0418;\\n  t.afii10027 = 0x0419;\\n  t.afii10028 = 0x041a;\\n  t.afii10029 = 0x041b;\\n  t.afii10030 = 0x041c;\\n  t.afii10031 = 0x041d;\\n  t.afii10032 = 0x041e;\\n  t.afii10033 = 0x041f;\\n  t.afii10034 = 0x0420;\\n  t.afii10035 = 0x0421;\\n  t.afii10036 = 0x0422;\\n  t.afii10037 = 0x0423;\\n  t.afii10038 = 0x0424;\\n  t.afii10039 = 0x0425;\\n  t.afii10040 = 0x0426;\\n  t.afii10041 = 0x0427;\\n  t.afii10042 = 0x0428;\\n  t.afii10043 = 0x0429;\\n  t.afii10044 = 0x042a;\\n  t.afii10045 = 0x042b;\\n  t.afii10046 = 0x042c;\\n  t.afii10047 = 0x042d;\\n  t.afii10048 = 0x042e;\\n  t.afii10049 = 0x042f;\\n  t.afii10050 = 0x0490;\\n  t.afii10051 = 0x0402;\\n  t.afii10052 = 0x0403;\\n  t.afii10053 = 0x0404;\\n  t.afii10054 = 0x0405;\\n  t.afii10055 = 0x0406;\\n  t.afii10056 = 0x0407;\\n  t.afii10057 = 0x0408;\\n  t.afii10058 = 0x0409;\\n  t.afii10059 = 0x040a;\\n  t.afii10060 = 0x040b;\\n  t.afii10061 = 0x040c;\\n  t.afii10062 = 0x040e;\\n  t.afii10063 = 0xf6c4;\\n  t.afii10064 = 0xf6c5;\\n  t.afii10065 = 0x0430;\\n  t.afii10066 = 0x0431;\\n  t.afii10067 = 0x0432;\\n  t.afii10068 = 0x0433;\\n  t.afii10069 = 0x0434;\\n  t.afii10070 = 0x0435;\\n  t.afii10071 = 0x0451;\\n  t.afii10072 = 0x0436;\\n  t.afii10073 = 0x0437;\\n  t.afii10074 = 0x0438;\\n  t.afii10075 = 0x0439;\\n  t.afii10076 = 0x043a;\\n  t.afii10077 = 0x043b;\\n  t.afii10078 = 0x043c;\\n  t.afii10079 = 0x043d;\\n  t.afii10080 = 0x043e;\\n  t.afii10081 = 0x043f;\\n  t.afii10082 = 0x0440;\\n  t.afii10083 = 0x0441;\\n  t.afii10084 = 0x0442;\\n  t.afii10085 = 0x0443;\\n  t.afii10086 = 0x0444;\\n  t.afii10087 = 0x0445;\\n  t.afii10088 = 0x0446;\\n  t.afii10089 = 0x0447;\\n  t.afii10090 = 0x0448;\\n  t.afii10091 = 0x0449;\\n  t.afii10092 = 0x044a;\\n  t.afii10093 = 0x044b;\\n  t.afii10094 = 0x044c;\\n  t.afii10095 = 0x044d;\\n  t.afii10096 = 0x044e;\\n  t.afii10097 = 0x044f;\\n  t.afii10098 = 0x0491;\\n  t.afii10099 = 0x0452;\\n  t.afii10100 = 0x0453;\\n  t.afii10101 = 0x0454;\\n  t.afii10102 = 0x0455;\\n  t.afii10103 = 0x0456;\\n  t.afii10104 = 0x0457;\\n  t.afii10105 = 0x0458;\\n  t.afii10106 = 0x0459;\\n  t.afii10107 = 0x045a;\\n  t.afii10108 = 0x045b;\\n  t.afii10109 = 0x045c;\\n  t.afii10110 = 0x045e;\\n  t.afii10145 = 0x040f;\\n  t.afii10146 = 0x0462;\\n  t.afii10147 = 0x0472;\\n  t.afii10148 = 0x0474;\\n  t.afii10192 = 0xf6c6;\\n  t.afii10193 = 0x045f;\\n  t.afii10194 = 0x0463;\\n  t.afii10195 = 0x0473;\\n  t.afii10196 = 0x0475;\\n  t.afii10831 = 0xf6c7;\\n  t.afii10832 = 0xf6c8;\\n  t.afii10846 = 0x04d9;\\n  t.afii299 = 0x200e;\\n  t.afii300 = 0x200f;\\n  t.afii301 = 0x200d;\\n  t.afii57381 = 0x066a;\\n  t.afii57388 = 0x060c;\\n  t.afii57392 = 0x0660;\\n  t.afii57393 = 0x0661;\\n  t.afii57394 = 0x0662;\\n  t.afii57395 = 0x0663;\\n  t.afii57396 = 0x0664;\\n  t.afii57397 = 0x0665;\\n  t.afii57398 = 0x0666;\\n  t.afii57399 = 0x0667;\\n  t.afii57400 = 0x0668;\\n  t.afii57401 = 0x0669;\\n  t.afii57403 = 0x061b;\\n  t.afii57407 = 0x061f;\\n  t.afii57409 = 0x0621;\\n  t.afii57410 = 0x0622;\\n  t.afii57411 = 0x0623;\\n  t.afii57412 = 0x0624;\\n  t.afii57413 = 0x0625;\\n  t.afii57414 = 0x0626;\\n  t.afii57415 = 0x0627;\\n  t.afii57416 = 0x0628;\\n  t.afii57417 = 0x0629;\\n  t.afii57418 = 0x062a;\\n  t.afii57419 = 0x062b;\\n  t.afii57420 = 0x062c;\\n  t.afii57421 = 0x062d;\\n  t.afii57422 = 0x062e;\\n  t.afii57423 = 0x062f;\\n  t.afii57424 = 0x0630;\\n  t.afii57425 = 0x0631;\\n  t.afii57426 = 0x0632;\\n  t.afii57427 = 0x0633;\\n  t.afii57428 = 0x0634;\\n  t.afii57429 = 0x0635;\\n  t.afii57430 = 0x0636;\\n  t.afii57431 = 0x0637;\\n  t.afii57432 = 0x0638;\\n  t.afii57433 = 0x0639;\\n  t.afii57434 = 0x063a;\\n  t.afii57440 = 0x0640;\\n  t.afii57441 = 0x0641;\\n  t.afii57442 = 0x0642;\\n  t.afii57443 = 0x0643;\\n  t.afii57444 = 0x0644;\\n  t.afii57445 = 0x0645;\\n  t.afii57446 = 0x0646;\\n  t.afii57448 = 0x0648;\\n  t.afii57449 = 0x0649;\\n  t.afii57450 = 0x064a;\\n  t.afii57451 = 0x064b;\\n  t.afii57452 = 0x064c;\\n  t.afii57453 = 0x064d;\\n  t.afii57454 = 0x064e;\\n  t.afii57455 = 0x064f;\\n  t.afii57456 = 0x0650;\\n  t.afii57457 = 0x0651;\\n  t.afii57458 = 0x0652;\\n  t.afii57470 = 0x0647;\\n  t.afii57505 = 0x06a4;\\n  t.afii57506 = 0x067e;\\n  t.afii57507 = 0x0686;\\n  t.afii57508 = 0x0698;\\n  t.afii57509 = 0x06af;\\n  t.afii57511 = 0x0679;\\n  t.afii57512 = 0x0688;\\n  t.afii57513 = 0x0691;\\n  t.afii57514 = 0x06ba;\\n  t.afii57519 = 0x06d2;\\n  t.afii57534 = 0x06d5;\\n  t.afii57636 = 0x20aa;\\n  t.afii57645 = 0x05be;\\n  t.afii57658 = 0x05c3;\\n  t.afii57664 = 0x05d0;\\n  t.afii57665 = 0x05d1;\\n  t.afii57666 = 0x05d2;\\n  t.afii57667 = 0x05d3;\\n  t.afii57668 = 0x05d4;\\n  t.afii57669 = 0x05d5;\\n  t.afii57670 = 0x05d6;\\n  t.afii57671 = 0x05d7;\\n  t.afii57672 = 0x05d8;\\n  t.afii57673 = 0x05d9;\\n  t.afii57674 = 0x05da;\\n  t.afii57675 = 0x05db;\\n  t.afii57676 = 0x05dc;\\n  t.afii57677 = 0x05dd;\\n  t.afii57678 = 0x05de;\\n  t.afii57679 = 0x05df;\\n  t.afii57680 = 0x05e0;\\n  t.afii57681 = 0x05e1;\\n  t.afii57682 = 0x05e2;\\n  t.afii57683 = 0x05e3;\\n  t.afii57684 = 0x05e4;\\n  t.afii57685 = 0x05e5;\\n  t.afii57686 = 0x05e6;\\n  t.afii57687 = 0x05e7;\\n  t.afii57688 = 0x05e8;\\n  t.afii57689 = 0x05e9;\\n  t.afii57690 = 0x05ea;\\n  t.afii57694 = 0xfb2a;\\n  t.afii57695 = 0xfb2b;\\n  t.afii57700 = 0xfb4b;\\n  t.afii57705 = 0xfb1f;\\n  t.afii57716 = 0x05f0;\\n  t.afii57717 = 0x05f1;\\n  t.afii57718 = 0x05f2;\\n  t.afii57723 = 0xfb35;\\n  t.afii57793 = 0x05b4;\\n  t.afii57794 = 0x05b5;\\n  t.afii57795 = 0x05b6;\\n  t.afii57796 = 0x05bb;\\n  t.afii57797 = 0x05b8;\\n  t.afii57798 = 0x05b7;\\n  t.afii57799 = 0x05b0;\\n  t.afii57800 = 0x05b2;\\n  t.afii57801 = 0x05b1;\\n  t.afii57802 = 0x05b3;\\n  t.afii57803 = 0x05c2;\\n  t.afii57804 = 0x05c1;\\n  t.afii57806 = 0x05b9;\\n  t.afii57807 = 0x05bc;\\n  t.afii57839 = 0x05bd;\\n  t.afii57841 = 0x05bf;\\n  t.afii57842 = 0x05c0;\\n  t.afii57929 = 0x02bc;\\n  t.afii61248 = 0x2105;\\n  t.afii61289 = 0x2113;\\n  t.afii61352 = 0x2116;\\n  t.afii61573 = 0x202c;\\n  t.afii61574 = 0x202d;\\n  t.afii61575 = 0x202e;\\n  t.afii61664 = 0x200c;\\n  t.afii63167 = 0x066d;\\n  t.afii64937 = 0x02bd;\\n  t.agrave = 0x00e0;\\n  t.agujarati = 0x0a85;\\n  t.agurmukhi = 0x0a05;\\n  t.ahiragana = 0x3042;\\n  t.ahookabove = 0x1ea3;\\n  t.aibengali = 0x0990;\\n  t.aibopomofo = 0x311e;\\n  t.aideva = 0x0910;\\n  t.aiecyrillic = 0x04d5;\\n  t.aigujarati = 0x0a90;\\n  t.aigurmukhi = 0x0a10;\\n  t.aimatragurmukhi = 0x0a48;\\n  t.ainarabic = 0x0639;\\n  t.ainfinalarabic = 0xfeca;\\n  t.aininitialarabic = 0xfecb;\\n  t.ainmedialarabic = 0xfecc;\\n  t.ainvertedbreve = 0x0203;\\n  t.aivowelsignbengali = 0x09c8;\\n  t.aivowelsigndeva = 0x0948;\\n  t.aivowelsigngujarati = 0x0ac8;\\n  t.akatakana = 0x30a2;\\n  t.akatakanahalfwidth = 0xff71;\\n  t.akorean = 0x314f;\\n  t.alef = 0x05d0;\\n  t.alefarabic = 0x0627;\\n  t.alefdageshhebrew = 0xfb30;\\n  t.aleffinalarabic = 0xfe8e;\\n  t.alefhamzaabovearabic = 0x0623;\\n  t.alefhamzaabovefinalarabic = 0xfe84;\\n  t.alefhamzabelowarabic = 0x0625;\\n  t.alefhamzabelowfinalarabic = 0xfe88;\\n  t.alefhebrew = 0x05d0;\\n  t.aleflamedhebrew = 0xfb4f;\\n  t.alefmaddaabovearabic = 0x0622;\\n  t.alefmaddaabovefinalarabic = 0xfe82;\\n  t.alefmaksuraarabic = 0x0649;\\n  t.alefmaksurafinalarabic = 0xfef0;\\n  t.alefmaksurainitialarabic = 0xfef3;\\n  t.alefmaksuramedialarabic = 0xfef4;\\n  t.alefpatahhebrew = 0xfb2e;\\n  t.alefqamatshebrew = 0xfb2f;\\n  t.aleph = 0x2135;\\n  t.allequal = 0x224c;\\n  t.alpha = 0x03b1;\\n  t.alphatonos = 0x03ac;\\n  t.amacron = 0x0101;\\n  t.amonospace = 0xff41;\\n  t.ampersand = 0x0026;\\n  t.ampersandmonospace = 0xff06;\\n  t.ampersandsmall = 0xf726;\\n  t.amsquare = 0x33c2;\\n  t.anbopomofo = 0x3122;\\n  t.angbopomofo = 0x3124;\\n  t.angbracketleft = 0x3008; \u002F\u002F Glyph is missing from Adobe's original list.\\n  t.angbracketright = 0x3009; \u002F\u002F Glyph is missing from Adobe's original list.\\n  t.angkhankhuthai = 0x0e5a;\\n  t.angle = 0x2220;\\n  t.anglebracketleft = 0x3008;\\n  t.anglebracketleftvertical = 0xfe3f;\\n  t.anglebracketright = 0x3009;\\n  t.anglebracketrightvertical = 0xfe40;\\n  t.angleleft = 0x2329;\\n  t.angleright = 0x232a;\\n  t.angstrom = 0x212b;\\n  t.anoteleia = 0x0387;\\n  t.anudattadeva = 0x0952;\\n  t.anusvarabengali = 0x0982;\\n  t.anusvaradeva = 0x0902;\\n  t.anusvaragujarati = 0x0a82;\\n  t.aogonek = 0x0105;\\n  t.apaatosquare = 0x3300;\\n  t.aparen = 0x249c;\\n  t.apostrophearmenian = 0x055a;\\n  t.apostrophemod = 0x02bc;\\n  t.apple = 0xf8ff;\\n  t.approaches = 0x2250;\\n  t.approxequal = 0x2248;\\n  t.approxequalorimage = 0x2252;\\n  t.approximatelyequal = 0x2245;\\n  t.araeaekorean = 0x318e;\\n  t.araeakorean = 0x318d;\\n  t.arc = 0x2312;\\n  t.arighthalfring = 0x1e9a;\\n  t.aring = 0x00e5;\\n  t.aringacute = 0x01fb;\\n  t.aringbelow = 0x1e01;\\n  t.arrowboth = 0x2194;\\n  t.arrowdashdown = 0x21e3;\\n  t.arrowdashleft = 0x21e0;\\n  t.arrowdashright = 0x21e2;\\n  t.arrowdashup = 0x21e1;\\n  t.arrowdblboth = 0x21d4;\\n  t.arrowdbldown = 0x21d3;\\n  t.arrowdblleft = 0x21d0;\\n  t.arrowdblright = 0x21d2;\\n  t.arrowdblup = 0x21d1;\\n  t.arrowdown = 0x2193;\\n  t.arrowdownleft = 0x2199;\\n  t.arrowdownright = 0x2198;\\n  t.arrowdownwhite = 0x21e9;\\n  t.arrowheaddownmod = 0x02c5;\\n  t.arrowheadleftmod = 0x02c2;\\n  t.arrowheadrightmod = 0x02c3;\\n  t.arrowheadupmod = 0x02c4;\\n  t.arrowhorizex = 0xf8e7;\\n  t.arrowleft = 0x2190;\\n  t.arrowleftdbl = 0x21d0;\\n  t.arrowleftdblstroke = 0x21cd;\\n  t.arrowleftoverright = 0x21c6;\\n  t.arrowleftwhite = 0x21e6;\\n  t.arrowright = 0x2192;\\n  t.arrowrightdblstroke = 0x21cf;\\n  t.arrowrightheavy = 0x279e;\\n  t.arrowrightoverleft = 0x21c4;\\n  t.arrowrightwhite = 0x21e8;\\n  t.arrowtableft = 0x21e4;\\n  t.arrowtabright = 0x21e5;\\n  t.arrowup = 0x2191;\\n  t.arrowupdn = 0x2195;\\n  t.arrowupdnbse = 0x21a8;\\n  t.arrowupdownbase = 0x21a8;\\n  t.arrowupleft = 0x2196;\\n  t.arrowupleftofdown = 0x21c5;\\n  t.arrowupright = 0x2197;\\n  t.arrowupwhite = 0x21e7;\\n  t.arrowvertex = 0xf8e6;\\n  t.asciicircum = 0x005e;\\n  t.asciicircummonospace = 0xff3e;\\n  t.asciitilde = 0x007e;\\n  t.asciitildemonospace = 0xff5e;\\n  t.ascript = 0x0251;\\n  t.ascriptturned = 0x0252;\\n  t.asmallhiragana = 0x3041;\\n  t.asmallkatakana = 0x30a1;\\n  t.asmallkatakanahalfwidth = 0xff67;\\n  t.asterisk = 0x002a;\\n  t.asteriskaltonearabic = 0x066d;\\n  t.asteriskarabic = 0x066d;\\n  t.asteriskmath = 0x2217;\\n  t.asteriskmonospace = 0xff0a;\\n  t.asterisksmall = 0xfe61;\\n  t.asterism = 0x2042;\\n  t.asuperior = 0xf6e9;\\n  t.asymptoticallyequal = 0x2243;\\n  t.at = 0x0040;\\n  t.atilde = 0x00e3;\\n  t.atmonospace = 0xff20;\\n  t.atsmall = 0xfe6b;\\n  t.aturned = 0x0250;\\n  t.aubengali = 0x0994;\\n  t.aubopomofo = 0x3120;\\n  t.audeva = 0x0914;\\n  t.augujarati = 0x0a94;\\n  t.augurmukhi = 0x0a14;\\n  t.aulengthmarkbengali = 0x09d7;\\n  t.aumatragurmukhi = 0x0a4c;\\n  t.auvowelsignbengali = 0x09cc;\\n  t.auvowelsigndeva = 0x094c;\\n  t.auvowelsigngujarati = 0x0acc;\\n  t.avagrahadeva = 0x093d;\\n  t.aybarmenian = 0x0561;\\n  t.ayin = 0x05e2;\\n  t.ayinaltonehebrew = 0xfb20;\\n  t.ayinhebrew = 0x05e2;\\n  t.b = 0x0062;\\n  t.babengali = 0x09ac;\\n  t.backslash = 0x005c;\\n  t.backslashmonospace = 0xff3c;\\n  t.badeva = 0x092c;\\n  t.bagujarati = 0x0aac;\\n  t.bagurmukhi = 0x0a2c;\\n  t.bahiragana = 0x3070;\\n  t.bahtthai = 0x0e3f;\\n  t.bakatakana = 0x30d0;\\n  t.bar = 0x007c;\\n  t.barmonospace = 0xff5c;\\n  t.bbopomofo = 0x3105;\\n  t.bcircle = 0x24d1;\\n  t.bdotaccent = 0x1e03;\\n  t.bdotbelow = 0x1e05;\\n  t.beamedsixteenthnotes = 0x266c;\\n  t.because = 0x2235;\\n  t.becyrillic = 0x0431;\\n  t.beharabic = 0x0628;\\n  t.behfinalarabic = 0xfe90;\\n  t.behinitialarabic = 0xfe91;\\n  t.behiragana = 0x3079;\\n  t.behmedialarabic = 0xfe92;\\n  t.behmeeminitialarabic = 0xfc9f;\\n  t.behmeemisolatedarabic = 0xfc08;\\n  t.behnoonfinalarabic = 0xfc6d;\\n  t.bekatakana = 0x30d9;\\n  t.benarmenian = 0x0562;\\n  t.bet = 0x05d1;\\n  t.beta = 0x03b2;\\n  t.betasymbolgreek = 0x03d0;\\n  t.betdagesh = 0xfb31;\\n  t.betdageshhebrew = 0xfb31;\\n  t.bethebrew = 0x05d1;\\n  t.betrafehebrew = 0xfb4c;\\n  t.bhabengali = 0x09ad;\\n  t.bhadeva = 0x092d;\\n  t.bhagujarati = 0x0aad;\\n  t.bhagurmukhi = 0x0a2d;\\n  t.bhook = 0x0253;\\n  t.bihiragana = 0x3073;\\n  t.bikatakana = 0x30d3;\\n  t.bilabialclick = 0x0298;\\n  t.bindigurmukhi = 0x0a02;\\n  t.birusquare = 0x3331;\\n  t.blackcircle = 0x25cf;\\n  t.blackdiamond = 0x25c6;\\n  t.blackdownpointingtriangle = 0x25bc;\\n  t.blackleftpointingpointer = 0x25c4;\\n  t.blackleftpointingtriangle = 0x25c0;\\n  t.blacklenticularbracketleft = 0x3010;\\n  t.blacklenticularbracketleftvertical = 0xfe3b;\\n  t.blacklenticularbracketright = 0x3011;\\n  t.blacklenticularbracketrightvertical = 0xfe3c;\\n  t.blacklowerlefttriangle = 0x25e3;\\n  t.blacklowerrighttriangle = 0x25e2;\\n  t.blackrectangle = 0x25ac;\\n  t.blackrightpointingpointer = 0x25ba;\\n  t.blackrightpointingtriangle = 0x25b6;\\n  t.blacksmallsquare = 0x25aa;\\n  t.blacksmilingface = 0x263b;\\n  t.blacksquare = 0x25a0;\\n  t.blackstar = 0x2605;\\n  t.blackupperlefttriangle = 0x25e4;\\n  t.blackupperrighttriangle = 0x25e5;\\n  t.blackuppointingsmalltriangle = 0x25b4;\\n  t.blackuppointingtriangle = 0x25b2;\\n  t.blank = 0x2423;\\n  t.blinebelow = 0x1e07;\\n  t.block = 0x2588;\\n  t.bmonospace = 0xff42;\\n  t.bobaimaithai = 0x0e1a;\\n  t.bohiragana = 0x307c;\\n  t.bokatakana = 0x30dc;\\n  t.bparen = 0x249d;\\n  t.bqsquare = 0x33c3;\\n  t.braceex = 0xf8f4;\\n  t.braceleft = 0x007b;\\n  t.braceleftbt = 0xf8f3;\\n  t.braceleftmid = 0xf8f2;\\n  t.braceleftmonospace = 0xff5b;\\n  t.braceleftsmall = 0xfe5b;\\n  t.bracelefttp = 0xf8f1;\\n  t.braceleftvertical = 0xfe37;\\n  t.braceright = 0x007d;\\n  t.bracerightbt = 0xf8fe;\\n  t.bracerightmid = 0xf8fd;\\n  t.bracerightmonospace = 0xff5d;\\n  t.bracerightsmall = 0xfe5c;\\n  t.bracerighttp = 0xf8fc;\\n  t.bracerightvertical = 0xfe38;\\n  t.bracketleft = 0x005b;\\n  t.bracketleftbt = 0xf8f0;\\n  t.bracketleftex = 0xf8ef;\\n  t.bracketleftmonospace = 0xff3b;\\n  t.bracketlefttp = 0xf8ee;\\n  t.bracketright = 0x005d;\\n  t.bracketrightbt = 0xf8fb;\\n  t.bracketrightex = 0xf8fa;\\n  t.bracketrightmonospace = 0xff3d;\\n  t.bracketrighttp = 0xf8f9;\\n  t.breve = 0x02d8;\\n  t.brevebelowcmb = 0x032e;\\n  t.brevecmb = 0x0306;\\n  t.breveinvertedbelowcmb = 0x032f;\\n  t.breveinvertedcmb = 0x0311;\\n  t.breveinverteddoublecmb = 0x0361;\\n  t.bridgebelowcmb = 0x032a;\\n  t.bridgeinvertedbelowcmb = 0x033a;\\n  t.brokenbar = 0x00a6;\\n  t.bstroke = 0x0180;\\n  t.bsuperior = 0xf6ea;\\n  t.btopbar = 0x0183;\\n  t.buhiragana = 0x3076;\\n  t.bukatakana = 0x30d6;\\n  t.bullet = 0x2022;\\n  t.bulletinverse = 0x25d8;\\n  t.bulletoperator = 0x2219;\\n  t.bullseye = 0x25ce;\\n  t.c = 0x0063;\\n  t.caarmenian = 0x056e;\\n  t.cabengali = 0x099a;\\n  t.cacute = 0x0107;\\n  t.cadeva = 0x091a;\\n  t.cagujarati = 0x0a9a;\\n  t.cagurmukhi = 0x0a1a;\\n  t.calsquare = 0x3388;\\n  t.candrabindubengali = 0x0981;\\n  t.candrabinducmb = 0x0310;\\n  t.candrabindudeva = 0x0901;\\n  t.candrabindugujarati = 0x0a81;\\n  t.capslock = 0x21ea;\\n  t.careof = 0x2105;\\n  t.caron = 0x02c7;\\n  t.caronbelowcmb = 0x032c;\\n  t.caroncmb = 0x030c;\\n  t.carriagereturn = 0x21b5;\\n  t.cbopomofo = 0x3118;\\n  t.ccaron = 0x010d;\\n  t.ccedilla = 0x00e7;\\n  t.ccedillaacute = 0x1e09;\\n  t.ccircle = 0x24d2;\\n  t.ccircumflex = 0x0109;\\n  t.ccurl = 0x0255;\\n  t.cdot = 0x010b;\\n  t.cdotaccent = 0x010b;\\n  t.cdsquare = 0x33c5;\\n  t.cedilla = 0x00b8;\\n  t.cedillacmb = 0x0327;\\n  t.cent = 0x00a2;\\n  t.centigrade = 0x2103;\\n  t.centinferior = 0xf6df;\\n  t.centmonospace = 0xffe0;\\n  t.centoldstyle = 0xf7a2;\\n  t.centsuperior = 0xf6e0;\\n  t.chaarmenian = 0x0579;\\n  t.chabengali = 0x099b;\\n  t.chadeva = 0x091b;\\n  t.chagujarati = 0x0a9b;\\n  t.chagurmukhi = 0x0a1b;\\n  t.chbopomofo = 0x3114;\\n  t.cheabkhasiancyrillic = 0x04bd;\\n  t.checkmark = 0x2713;\\n  t.checyrillic = 0x0447;\\n  t.chedescenderabkhasiancyrillic = 0x04bf;\\n  t.chedescendercyrillic = 0x04b7;\\n  t.chedieresiscyrillic = 0x04f5;\\n  t.cheharmenian = 0x0573;\\n  t.chekhakassiancyrillic = 0x04cc;\\n  t.cheverticalstrokecyrillic = 0x04b9;\\n  t.chi = 0x03c7;\\n  t.chieuchacirclekorean = 0x3277;\\n  t.chieuchaparenkorean = 0x3217;\\n  t.chieuchcirclekorean = 0x3269;\\n  t.chieuchkorean = 0x314a;\\n  t.chieuchparenkorean = 0x3209;\\n  t.chochangthai = 0x0e0a;\\n  t.chochanthai = 0x0e08;\\n  t.chochingthai = 0x0e09;\\n  t.chochoethai = 0x0e0c;\\n  t.chook = 0x0188;\\n  t.cieucacirclekorean = 0x3276;\\n  t.cieucaparenkorean = 0x3216;\\n  t.cieuccirclekorean = 0x3268;\\n  t.cieuckorean = 0x3148;\\n  t.cieucparenkorean = 0x3208;\\n  t.cieucuparenkorean = 0x321c;\\n  t.circle = 0x25cb;\\n  t.circlecopyrt = 0x00a9; \u002F\u002F Glyph is missing from Adobe's original list.\\n  t.circlemultiply = 0x2297;\\n  t.circleot = 0x2299;\\n  t.circleplus = 0x2295;\\n  t.circlepostalmark = 0x3036;\\n  t.circlewithlefthalfblack = 0x25d0;\\n  t.circlewithrighthalfblack = 0x25d1;\\n  t.circumflex = 0x02c6;\\n  t.circumflexbelowcmb = 0x032d;\\n  t.circumflexcmb = 0x0302;\\n  t.clear = 0x2327;\\n  t.clickalveolar = 0x01c2;\\n  t.clickdental = 0x01c0;\\n  t.clicklateral = 0x01c1;\\n  t.clickretroflex = 0x01c3;\\n  t.club = 0x2663;\\n  t.clubsuitblack = 0x2663;\\n  t.clubsuitwhite = 0x2667;\\n  t.cmcubedsquare = 0x33a4;\\n  t.cmonospace = 0xff43;\\n  t.cmsquaredsquare = 0x33a0;\\n  t.coarmenian = 0x0581;\\n  t.colon = 0x003a;\\n  t.colonmonetary = 0x20a1;\\n  t.colonmonospace = 0xff1a;\\n  t.colonsign = 0x20a1;\\n  t.colonsmall = 0xfe55;\\n  t.colontriangularhalfmod = 0x02d1;\\n  t.colontriangularmod = 0x02d0;\\n  t.comma = 0x002c;\\n  t.commaabovecmb = 0x0313;\\n  t.commaaboverightcmb = 0x0315;\\n  t.commaaccent = 0xf6c3;\\n  t.commaarabic = 0x060c;\\n  t.commaarmenian = 0x055d;\\n  t.commainferior = 0xf6e1;\\n  t.commamonospace = 0xff0c;\\n  t.commareversedabovecmb = 0x0314;\\n  t.commareversedmod = 0x02bd;\\n  t.commasmall = 0xfe50;\\n  t.commasuperior = 0xf6e2;\\n  t.commaturnedabovecmb = 0x0312;\\n  t.commaturnedmod = 0x02bb;\\n  t.compass = 0x263c;\\n  t.congruent = 0x2245;\\n  t.contourintegral = 0x222e;\\n  t.control = 0x2303;\\n  t.controlACK = 0x0006;\\n  t.controlBEL = 0x0007;\\n  t.controlBS = 0x0008;\\n  t.controlCAN = 0x0018;\\n  t.controlCR = 0x000d;\\n  t.controlDC1 = 0x0011;\\n  t.controlDC2 = 0x0012;\\n  t.controlDC3 = 0x0013;\\n  t.controlDC4 = 0x0014;\\n  t.controlDEL = 0x007f;\\n  t.controlDLE = 0x0010;\\n  t.controlEM = 0x0019;\\n  t.controlENQ = 0x0005;\\n  t.controlEOT = 0x0004;\\n  t.controlESC = 0x001b;\\n  t.controlETB = 0x0017;\\n  t.controlETX = 0x0003;\\n  t.controlFF = 0x000c;\\n  t.controlFS = 0x001c;\\n  t.controlGS = 0x001d;\\n  t.controlHT = 0x0009;\\n  t.controlLF = 0x000a;\\n  t.controlNAK = 0x0015;\\n  t.controlNULL = 0x0000; \u002F\u002F Glyph is missing from Adobe's original list.\\n  t.controlRS = 0x001e;\\n  t.controlSI = 0x000f;\\n  t.controlSO = 0x000e;\\n  t.controlSOT = 0x0002;\\n  t.controlSTX = 0x0001;\\n  t.controlSUB = 0x001a;\\n  t.controlSYN = 0x0016;\\n  t.controlUS = 0x001f;\\n  t.controlVT = 0x000b;\\n  t.copyright = 0x00a9;\\n  t.copyrightsans = 0xf8e9;\\n  t.copyrightserif = 0xf6d9;\\n  t.cornerbracketleft = 0x300c;\\n  t.cornerbracketlefthalfwidth = 0xff62;\\n  t.cornerbracketleftvertical = 0xfe41;\\n  t.cornerbracketright = 0x300d;\\n  t.cornerbracketrighthalfwidth = 0xff63;\\n  t.cornerbracketrightvertical = 0xfe42;\\n  t.corporationsquare = 0x337f;\\n  t.cosquare = 0x33c7;\\n  t.coverkgsquare = 0x33c6;\\n  t.cparen = 0x249e;\\n  t.cruzeiro = 0x20a2;\\n  t.cstretched = 0x0297;\\n  t.curlyand = 0x22cf;\\n  t.curlyor = 0x22ce;\\n  t.currency = 0x00a4;\\n  t.cyrBreve = 0xf6d1;\\n  t.cyrFlex = 0xf6d2;\\n  t.cyrbreve = 0xf6d4;\\n  t.cyrflex = 0xf6d5;\\n  t.d = 0x0064;\\n  t.daarmenian = 0x0564;\\n  t.dabengali = 0x09a6;\\n  t.dadarabic = 0x0636;\\n  t.dadeva = 0x0926;\\n  t.dadfinalarabic = 0xfebe;\\n  t.dadinitialarabic = 0xfebf;\\n  t.dadmedialarabic = 0xfec0;\\n  t.dagesh = 0x05bc;\\n  t.dageshhebrew = 0x05bc;\\n  t.dagger = 0x2020;\\n  t.daggerdbl = 0x2021;\\n  t.dagujarati = 0x0aa6;\\n  t.dagurmukhi = 0x0a26;\\n  t.dahiragana = 0x3060;\\n  t.dakatakana = 0x30c0;\\n  t.dalarabic = 0x062f;\\n  t.dalet = 0x05d3;\\n  t.daletdagesh = 0xfb33;\\n  t.daletdageshhebrew = 0xfb33;\\n  t.dalethebrew = 0x05d3;\\n  t.dalfinalarabic = 0xfeaa;\\n  t.dammaarabic = 0x064f;\\n  t.dammalowarabic = 0x064f;\\n  t.dammatanaltonearabic = 0x064c;\\n  t.dammatanarabic = 0x064c;\\n  t.danda = 0x0964;\\n  t.dargahebrew = 0x05a7;\\n  t.dargalefthebrew = 0x05a7;\\n  t.dasiapneumatacyrilliccmb = 0x0485;\\n  t.dblGrave = 0xf6d3;\\n  t.dblanglebracketleft = 0x300a;\\n  t.dblanglebracketleftvertical = 0xfe3d;\\n  t.dblanglebracketright = 0x300b;\\n  t.dblanglebracketrightvertical = 0xfe3e;\\n  t.dblarchinvertedbelowcmb = 0x032b;\\n  t.dblarrowleft = 0x21d4;\\n  t.dblarrowright = 0x21d2;\\n  t.dbldanda = 0x0965;\\n  t.dblgrave = 0xf6d6;\\n  t.dblgravecmb = 0x030f;\\n  t.dblintegral = 0x222c;\\n  t.dbllowline = 0x2017;\\n  t.dbllowlinecmb = 0x0333;\\n  t.dbloverlinecmb = 0x033f;\\n  t.dblprimemod = 0x02ba;\\n  t.dblverticalbar = 0x2016;\\n  t.dblverticallineabovecmb = 0x030e;\\n  t.dbopomofo = 0x3109;\\n  t.dbsquare = 0x33c8;\\n  t.dcaron = 0x010f;\\n  t.dcedilla = 0x1e11;\\n  t.dcircle = 0x24d3;\\n  t.dcircumflexbelow = 0x1e13;\\n  t.dcroat = 0x0111;\\n  t.ddabengali = 0x09a1;\\n  t.ddadeva = 0x0921;\\n  t.ddagujarati = 0x0aa1;\\n  t.ddagurmukhi = 0x0a21;\\n  t.ddalarabic = 0x0688;\\n  t.ddalfinalarabic = 0xfb89;\\n  t.dddhadeva = 0x095c;\\n  t.ddhabengali = 0x09a2;\\n  t.ddhadeva = 0x0922;\\n  t.ddhagujarati = 0x0aa2;\\n  t.ddhagurmukhi = 0x0a22;\\n  t.ddotaccent = 0x1e0b;\\n  t.ddotbelow = 0x1e0d;\\n  t.decimalseparatorarabic = 0x066b;\\n  t.decimalseparatorpersian = 0x066b;\\n  t.decyrillic = 0x0434;\\n  t.degree = 0x00b0;\\n  t.dehihebrew = 0x05ad;\\n  t.dehiragana = 0x3067;\\n  t.deicoptic = 0x03ef;\\n  t.dekatakana = 0x30c7;\\n  t.deleteleft = 0x232b;\\n  t.deleteright = 0x2326;\\n  t.delta = 0x03b4;\\n  t.deltaturned = 0x018d;\\n  t.denominatorminusonenumeratorbengali = 0x09f8;\\n  t.dezh = 0x02a4;\\n  t.dhabengali = 0x09a7;\\n  t.dhadeva = 0x0927;\\n  t.dhagujarati = 0x0aa7;\\n  t.dhagurmukhi = 0x0a27;\\n  t.dhook = 0x0257;\\n  t.dialytikatonos = 0x0385;\\n  t.dialytikatonoscmb = 0x0344;\\n  t.diamond = 0x2666;\\n  t.diamondsuitwhite = 0x2662;\\n  t.dieresis = 0x00a8;\\n  t.dieresisacute = 0xf6d7;\\n  t.dieresisbelowcmb = 0x0324;\\n  t.dieresiscmb = 0x0308;\\n  t.dieresisgrave = 0xf6d8;\\n  t.dieresistonos = 0x0385;\\n  t.dihiragana = 0x3062;\\n  t.dikatakana = 0x30c2;\\n  t.dittomark = 0x3003;\\n  t.divide = 0x00f7;\\n  t.divides = 0x2223;\\n  t.divisionslash = 0x2215;\\n  t.djecyrillic = 0x0452;\\n  t.dkshade = 0x2593;\\n  t.dlinebelow = 0x1e0f;\\n  t.dlsquare = 0x3397;\\n  t.dmacron = 0x0111;\\n  t.dmonospace = 0xff44;\\n  t.dnblock = 0x2584;\\n  t.dochadathai = 0x0e0e;\\n  t.dodekthai = 0x0e14;\\n  t.dohiragana = 0x3069;\\n  t.dokatakana = 0x30c9;\\n  t.dollar = 0x0024;\\n  t.dollarinferior = 0xf6e3;\\n  t.dollarmonospace = 0xff04;\\n  t.dollaroldstyle = 0xf724;\\n  t.dollarsmall = 0xfe69;\\n  t.dollarsuperior = 0xf6e4;\\n  t.dong = 0x20ab;\\n  t.dorusquare = 0x3326;\\n  t.dotaccent = 0x02d9;\\n  t.dotaccentcmb = 0x0307;\\n  t.dotbelowcmb = 0x0323;\\n  t.dotbelowcomb = 0x0323;\\n  t.dotkatakana = 0x30fb;\\n  t.dotlessi = 0x0131;\\n  t.dotlessj = 0xf6be;\\n  t.dotlessjstrokehook = 0x0284;\\n  t.dotmath = 0x22c5;\\n  t.dottedcircle = 0x25cc;\\n  t.doubleyodpatah = 0xfb1f;\\n  t.doubleyodpatahhebrew = 0xfb1f;\\n  t.downtackbelowcmb = 0x031e;\\n  t.downtackmod = 0x02d5;\\n  t.dparen = 0x249f;\\n  t.dsuperior = 0xf6eb;\\n  t.dtail = 0x0256;\\n  t.dtopbar = 0x018c;\\n  t.duhiragana = 0x3065;\\n  t.dukatakana = 0x30c5;\\n  t.dz = 0x01f3;\\n  t.dzaltone = 0x02a3;\\n  t.dzcaron = 0x01c6;\\n  t.dzcurl = 0x02a5;\\n  t.dzeabkhasiancyrillic = 0x04e1;\\n  t.dzecyrillic = 0x0455;\\n  t.dzhecyrillic = 0x045f;\\n  t.e = 0x0065;\\n  t.eacute = 0x00e9;\\n  t.earth = 0x2641;\\n  t.ebengali = 0x098f;\\n  t.ebopomofo = 0x311c;\\n  t.ebreve = 0x0115;\\n  t.ecandradeva = 0x090d;\\n  t.ecandragujarati = 0x0a8d;\\n  t.ecandravowelsigndeva = 0x0945;\\n  t.ecandravowelsigngujarati = 0x0ac5;\\n  t.ecaron = 0x011b;\\n  t.ecedillabreve = 0x1e1d;\\n  t.echarmenian = 0x0565;\\n  t.echyiwnarmenian = 0x0587;\\n  t.ecircle = 0x24d4;\\n  t.ecircumflex = 0x00ea;\\n  t.ecircumflexacute = 0x1ebf;\\n  t.ecircumflexbelow = 0x1e19;\\n  t.ecircumflexdotbelow = 0x1ec7;\\n  t.ecircumflexgrave = 0x1ec1;\\n  t.ecircumflexhookabove = 0x1ec3;\\n  t.ecircumflextilde = 0x1ec5;\\n  t.ecyrillic = 0x0454;\\n  t.edblgrave = 0x0205;\\n  t.edeva = 0x090f;\\n  t.edieresis = 0x00eb;\\n  t.edot = 0x0117;\\n  t.edotaccent = 0x0117;\\n  t.edotbelow = 0x1eb9;\\n  t.eegurmukhi = 0x0a0f;\\n  t.eematragurmukhi = 0x0a47;\\n  t.efcyrillic = 0x0444;\\n  t.egrave = 0x00e8;\\n  t.egujarati = 0x0a8f;\\n  t.eharmenian = 0x0567;\\n  t.ehbopomofo = 0x311d;\\n  t.ehiragana = 0x3048;\\n  t.ehookabove = 0x1ebb;\\n  t.eibopomofo = 0x311f;\\n  t.eight = 0x0038;\\n  t.eightarabic = 0x0668;\\n  t.eightbengali = 0x09ee;\\n  t.eightcircle = 0x2467;\\n  t.eightcircleinversesansserif = 0x2791;\\n  t.eightdeva = 0x096e;\\n  t.eighteencircle = 0x2471;\\n  t.eighteenparen = 0x2485;\\n  t.eighteenperiod = 0x2499;\\n  t.eightgujarati = 0x0aee;\\n  t.eightgurmukhi = 0x0a6e;\\n  t.eighthackarabic = 0x0668;\\n  t.eighthangzhou = 0x3028;\\n  t.eighthnotebeamed = 0x266b;\\n  t.eightideographicparen = 0x3227;\\n  t.eightinferior = 0x2088;\\n  t.eightmonospace = 0xff18;\\n  t.eightoldstyle = 0xf738;\\n  t.eightparen = 0x247b;\\n  t.eightperiod = 0x248f;\\n  t.eightpersian = 0x06f8;\\n  t.eightroman = 0x2177;\\n  t.eightsuperior = 0x2078;\\n  t.eightthai = 0x0e58;\\n  t.einvertedbreve = 0x0207;\\n  t.eiotifiedcyrillic = 0x0465;\\n  t.ekatakana = 0x30a8;\\n  t.ekatakanahalfwidth = 0xff74;\\n  t.ekonkargurmukhi = 0x0a74;\\n  t.ekorean = 0x3154;\\n  t.elcyrillic = 0x043b;\\n  t.element = 0x2208;\\n  t.elevencircle = 0x246a;\\n  t.elevenparen = 0x247e;\\n  t.elevenperiod = 0x2492;\\n  t.elevenroman = 0x217a;\\n  t.ellipsis = 0x2026;\\n  t.ellipsisvertical = 0x22ee;\\n  t.emacron = 0x0113;\\n  t.emacronacute = 0x1e17;\\n  t.emacrongrave = 0x1e15;\\n  t.emcyrillic = 0x043c;\\n  t.emdash = 0x2014;\\n  t.emdashvertical = 0xfe31;\\n  t.emonospace = 0xff45;\\n  t.emphasismarkarmenian = 0x055b;\\n  t.emptyset = 0x2205;\\n  t.enbopomofo = 0x3123;\\n  t.encyrillic = 0x043d;\\n  t.endash = 0x2013;\\n  t.endashvertical = 0xfe32;\\n  t.endescendercyrillic = 0x04a3;\\n  t.eng = 0x014b;\\n  t.engbopomofo = 0x3125;\\n  t.enghecyrillic = 0x04a5;\\n  t.enhookcyrillic = 0x04c8;\\n  t.enspace = 0x2002;\\n  t.eogonek = 0x0119;\\n  t.eokorean = 0x3153;\\n  t.eopen = 0x025b;\\n  t.eopenclosed = 0x029a;\\n  t.eopenreversed = 0x025c;\\n  t.eopenreversedclosed = 0x025e;\\n  t.eopenreversedhook = 0x025d;\\n  t.eparen = 0x24a0;\\n  t.epsilon = 0x03b5;\\n  t.epsilontonos = 0x03ad;\\n  t.equal = 0x003d;\\n  t.equalmonospace = 0xff1d;\\n  t.equalsmall = 0xfe66;\\n  t.equalsuperior = 0x207c;\\n  t.equivalence = 0x2261;\\n  t.erbopomofo = 0x3126;\\n  t.ercyrillic = 0x0440;\\n  t.ereversed = 0x0258;\\n  t.ereversedcyrillic = 0x044d;\\n  t.escyrillic = 0x0441;\\n  t.esdescendercyrillic = 0x04ab;\\n  t.esh = 0x0283;\\n  t.eshcurl = 0x0286;\\n  t.eshortdeva = 0x090e;\\n  t.eshortvowelsigndeva = 0x0946;\\n  t.eshreversedloop = 0x01aa;\\n  t.eshsquatreversed = 0x0285;\\n  t.esmallhiragana = 0x3047;\\n  t.esmallkatakana = 0x30a7;\\n  t.esmallkatakanahalfwidth = 0xff6a;\\n  t.estimated = 0x212e;\\n  t.esuperior = 0xf6ec;\\n  t.eta = 0x03b7;\\n  t.etarmenian = 0x0568;\\n  t.etatonos = 0x03ae;\\n  t.eth = 0x00f0;\\n  t.etilde = 0x1ebd;\\n  t.etildebelow = 0x1e1b;\\n  t.etnahtafoukhhebrew = 0x0591;\\n  t.etnahtafoukhlefthebrew = 0x0591;\\n  t.etnahtahebrew = 0x0591;\\n  t.etnahtalefthebrew = 0x0591;\\n  t.eturned = 0x01dd;\\n  t.eukorean = 0x3161;\\n  t.euro = 0x20ac;\\n  t.evowelsignbengali = 0x09c7;\\n  t.evowelsigndeva = 0x0947;\\n  t.evowelsigngujarati = 0x0ac7;\\n  t.exclam = 0x0021;\\n  t.exclamarmenian = 0x055c;\\n  t.exclamdbl = 0x203c;\\n  t.exclamdown = 0x00a1;\\n  t.exclamdownsmall = 0xf7a1;\\n  t.exclammonospace = 0xff01;\\n  t.exclamsmall = 0xf721;\\n  t.existential = 0x2203;\\n  t.ezh = 0x0292;\\n  t.ezhcaron = 0x01ef;\\n  t.ezhcurl = 0x0293;\\n  t.ezhreversed = 0x01b9;\\n  t.ezhtail = 0x01ba;\\n  t.f = 0x0066;\\n  t.fadeva = 0x095e;\\n  t.fagurmukhi = 0x0a5e;\\n  t.fahrenheit = 0x2109;\\n  t.fathaarabic = 0x064e;\\n  t.fathalowarabic = 0x064e;\\n  t.fathatanarabic = 0x064b;\\n  t.fbopomofo = 0x3108;\\n  t.fcircle = 0x24d5;\\n  t.fdotaccent = 0x1e1f;\\n  t.feharabic = 0x0641;\\n  t.feharmenian = 0x0586;\\n  t.fehfinalarabic = 0xfed2;\\n  t.fehinitialarabic = 0xfed3;\\n  t.fehmedialarabic = 0xfed4;\\n  t.feicoptic = 0x03e5;\\n  t.female = 0x2640;\\n  t.ff = 0xfb00;\\n  t.f_f = 0xfb00;\\n  t.ffi = 0xfb03;\\n  t.f_f_i = 0xfb03;\\n  t.ffl = 0xfb04;\\n  t.f_f_l = 0xfb04;\\n  t.fi = 0xfb01;\\n  t.f_i = 0xfb01;\\n  t.fifteencircle = 0x246e;\\n  t.fifteenparen = 0x2482;\\n  t.fifteenperiod = 0x2496;\\n  t.figuredash = 0x2012;\\n  t.filledbox = 0x25a0;\\n  t.filledrect = 0x25ac;\\n  t.finalkaf = 0x05da;\\n  t.finalkafdagesh = 0xfb3a;\\n  t.finalkafdageshhebrew = 0xfb3a;\\n  t.finalkafhebrew = 0x05da;\\n  t.finalmem = 0x05dd;\\n  t.finalmemhebrew = 0x05dd;\\n  t.finalnun = 0x05df;\\n  t.finalnunhebrew = 0x05df;\\n  t.finalpe = 0x05e3;\\n  t.finalpehebrew = 0x05e3;\\n  t.finaltsadi = 0x05e5;\\n  t.finaltsadihebrew = 0x05e5;\\n  t.firsttonechinese = 0x02c9;\\n  t.fisheye = 0x25c9;\\n  t.fitacyrillic = 0x0473;\\n  t.five = 0x0035;\\n  t.fivearabic = 0x0665;\\n  t.fivebengali = 0x09eb;\\n  t.fivecircle = 0x2464;\\n  t.fivecircleinversesansserif = 0x278e;\\n  t.fivedeva = 0x096b;\\n  t.fiveeighths = 0x215d;\\n  t.fivegujarati = 0x0aeb;\\n  t.fivegurmukhi = 0x0a6b;\\n  t.fivehackarabic = 0x0665;\\n  t.fivehangzhou = 0x3025;\\n  t.fiveideographicparen = 0x3224;\\n  t.fiveinferior = 0x2085;\\n  t.fivemonospace = 0xff15;\\n  t.fiveoldstyle = 0xf735;\\n  t.fiveparen = 0x2478;\\n  t.fiveperiod = 0x248c;\\n  t.fivepersian = 0x06f5;\\n  t.fiveroman = 0x2174;\\n  t.fivesuperior = 0x2075;\\n  t.fivethai = 0x0e55;\\n  t.fl = 0xfb02;\\n  t.f_l = 0xfb02;\\n  t.florin = 0x0192;\\n  t.fmonospace = 0xff46;\\n  t.fmsquare = 0x3399;\\n  t.fofanthai = 0x0e1f;\\n  t.fofathai = 0x0e1d;\\n  t.fongmanthai = 0x0e4f;\\n  t.forall = 0x2200;\\n  t.four = 0x0034;\\n  t.fourarabic = 0x0664;\\n  t.fourbengali = 0x09ea;\\n  t.fourcircle = 0x2463;\\n  t.fourcircleinversesansserif = 0x278d;\\n  t.fourdeva = 0x096a;\\n  t.fourgujarati = 0x0aea;\\n  t.fourgurmukhi = 0x0a6a;\\n  t.fourhackarabic = 0x0664;\\n  t.fourhangzhou = 0x3024;\\n  t.fourideographicparen = 0x3223;\\n  t.fourinferior = 0x2084;\\n  t.fourmonospace = 0xff14;\\n  t.fournumeratorbengali = 0x09f7;\\n  t.fouroldstyle = 0xf734;\\n  t.fourparen = 0x2477;\\n  t.fourperiod = 0x248b;\\n  t.fourpersian = 0x06f4;\\n  t.fourroman = 0x2173;\\n  t.foursuperior = 0x2074;\\n  t.fourteencircle = 0x246d;\\n  t.fourteenparen = 0x2481;\\n  t.fourteenperiod = 0x2495;\\n  t.fourthai = 0x0e54;\\n  t.fourthtonechinese = 0x02cb;\\n  t.fparen = 0x24a1;\\n  t.fraction = 0x2044;\\n  t.franc = 0x20a3;\\n  t.g = 0x0067;\\n  t.gabengali = 0x0997;\\n  t.gacute = 0x01f5;\\n  t.gadeva = 0x0917;\\n  t.gafarabic = 0x06af;\\n  t.gaffinalarabic = 0xfb93;\\n  t.gafinitialarabic = 0xfb94;\\n  t.gafmedialarabic = 0xfb95;\\n  t.gagujarati = 0x0a97;\\n  t.gagurmukhi = 0x0a17;\\n  t.gahiragana = 0x304c;\\n  t.gakatakana = 0x30ac;\\n  t.gamma = 0x03b3;\\n  t.gammalatinsmall = 0x0263;\\n  t.gammasuperior = 0x02e0;\\n  t.gangiacoptic = 0x03eb;\\n  t.gbopomofo = 0x310d;\\n  t.gbreve = 0x011f;\\n  t.gcaron = 0x01e7;\\n  t.gcedilla = 0x0123;\\n  t.gcircle = 0x24d6;\\n  t.gcircumflex = 0x011d;\\n  t.gcommaaccent = 0x0123;\\n  t.gdot = 0x0121;\\n  t.gdotaccent = 0x0121;\\n  t.gecyrillic = 0x0433;\\n  t.gehiragana = 0x3052;\\n  t.gekatakana = 0x30b2;\\n  t.geometricallyequal = 0x2251;\\n  t.gereshaccenthebrew = 0x059c;\\n  t.gereshhebrew = 0x05f3;\\n  t.gereshmuqdamhebrew = 0x059d;\\n  t.germandbls = 0x00df;\\n  t.gershayimaccenthebrew = 0x059e;\\n  t.gershayimhebrew = 0x05f4;\\n  t.getamark = 0x3013;\\n  t.ghabengali = 0x0998;\\n  t.ghadarmenian = 0x0572;\\n  t.ghadeva = 0x0918;\\n  t.ghagujarati = 0x0a98;\\n  t.ghagurmukhi = 0x0a18;\\n  t.ghainarabic = 0x063a;\\n  t.ghainfinalarabic = 0xfece;\\n  t.ghaininitialarabic = 0xfecf;\\n  t.ghainmedialarabic = 0xfed0;\\n  t.ghemiddlehookcyrillic = 0x0495;\\n  t.ghestrokecyrillic = 0x0493;\\n  t.gheupturncyrillic = 0x0491;\\n  t.ghhadeva = 0x095a;\\n  t.ghhagurmukhi = 0x0a5a;\\n  t.ghook = 0x0260;\\n  t.ghzsquare = 0x3393;\\n  t.gihiragana = 0x304e;\\n  t.gikatakana = 0x30ae;\\n  t.gimarmenian = 0x0563;\\n  t.gimel = 0x05d2;\\n  t.gimeldagesh = 0xfb32;\\n  t.gimeldageshhebrew = 0xfb32;\\n  t.gimelhebrew = 0x05d2;\\n  t.gjecyrillic = 0x0453;\\n  t.glottalinvertedstroke = 0x01be;\\n  t.glottalstop = 0x0294;\\n  t.glottalstopinverted = 0x0296;\\n  t.glottalstopmod = 0x02c0;\\n  t.glottalstopreversed = 0x0295;\\n  t.glottalstopreversedmod = 0x02c1;\\n  t.glottalstopreversedsuperior = 0x02e4;\\n  t.glottalstopstroke = 0x02a1;\\n  t.glottalstopstrokereversed = 0x02a2;\\n  t.gmacron = 0x1e21;\\n  t.gmonospace = 0xff47;\\n  t.gohiragana = 0x3054;\\n  t.gokatakana = 0x30b4;\\n  t.gparen = 0x24a2;\\n  t.gpasquare = 0x33ac;\\n  t.gradient = 0x2207;\\n  t.grave = 0x0060;\\n  t.gravebelowcmb = 0x0316;\\n  t.gravecmb = 0x0300;\\n  t.gravecomb = 0x0300;\\n  t.gravedeva = 0x0953;\\n  t.gravelowmod = 0x02ce;\\n  t.gravemonospace = 0xff40;\\n  t.gravetonecmb = 0x0340;\\n  t.greater = 0x003e;\\n  t.greaterequal = 0x2265;\\n  t.greaterequalorless = 0x22db;\\n  t.greatermonospace = 0xff1e;\\n  t.greaterorequivalent = 0x2273;\\n  t.greaterorless = 0x2277;\\n  t.greateroverequal = 0x2267;\\n  t.greatersmall = 0xfe65;\\n  t.gscript = 0x0261;\\n  t.gstroke = 0x01e5;\\n  t.guhiragana = 0x3050;\\n  t.guillemotleft = 0x00ab;\\n  t.guillemotright = 0x00bb;\\n  t.guilsinglleft = 0x2039;\\n  t.guilsinglright = 0x203a;\\n  t.gukatakana = 0x30b0;\\n  t.guramusquare = 0x3318;\\n  t.gysquare = 0x33c9;\\n  t.h = 0x0068;\\n  t.haabkhasiancyrillic = 0x04a9;\\n  t.haaltonearabic = 0x06c1;\\n  t.habengali = 0x09b9;\\n  t.hadescendercyrillic = 0x04b3;\\n  t.hadeva = 0x0939;\\n  t.hagujarati = 0x0ab9;\\n  t.hagurmukhi = 0x0a39;\\n  t.haharabic = 0x062d;\\n  t.hahfinalarabic = 0xfea2;\\n  t.hahinitialarabic = 0xfea3;\\n  t.hahiragana = 0x306f;\\n  t.hahmedialarabic = 0xfea4;\\n  t.haitusquare = 0x332a;\\n  t.hakatakana = 0x30cf;\\n  t.hakatakanahalfwidth = 0xff8a;\\n  t.halantgurmukhi = 0x0a4d;\\n  t.hamzaarabic = 0x0621;\\n  t.hamzalowarabic = 0x0621;\\n  t.hangulfiller = 0x3164;\\n  t.hardsigncyrillic = 0x044a;\\n  t.harpoonleftbarbup = 0x21bc;\\n  t.harpoonrightbarbup = 0x21c0;\\n  t.hasquare = 0x33ca;\\n  t.hatafpatah = 0x05b2;\\n  t.hatafpatah16 = 0x05b2;\\n  t.hatafpatah23 = 0x05b2;\\n  t.hatafpatah2f = 0x05b2;\\n  t.hatafpatahhebrew = 0x05b2;\\n  t.hatafpatahnarrowhebrew = 0x05b2;\\n  t.hatafpatahquarterhebrew = 0x05b2;\\n  t.hatafpatahwidehebrew = 0x05b2;\\n  t.hatafqamats = 0x05b3;\\n  t.hatafqamats1b = 0x05b3;\\n  t.hatafqamats28 = 0x05b3;\\n  t.hatafqamats34 = 0x05b3;\\n  t.hatafqamatshebrew = 0x05b3;\\n  t.hatafqamatsnarrowhebrew = 0x05b3;\\n  t.hatafqamatsquarterhebrew = 0x05b3;\\n  t.hatafqamatswidehebrew = 0x05b3;\\n  t.hatafsegol = 0x05b1;\\n  t.hatafsegol17 = 0x05b1;\\n  t.hatafsegol24 = 0x05b1;\\n  t.hatafsegol30 = 0x05b1;\\n  t.hatafsegolhebrew = 0x05b1;\\n  t.hatafsegolnarrowhebrew = 0x05b1;\\n  t.hatafsegolquarterhebrew = 0x05b1;\\n  t.hatafsegolwidehebrew = 0x05b1;\\n  t.hbar = 0x0127;\\n  t.hbopomofo = 0x310f;\\n  t.hbrevebelow = 0x1e2b;\\n  t.hcedilla = 0x1e29;\\n  t.hcircle = 0x24d7;\\n  t.hcircumflex = 0x0125;\\n  t.hdieresis = 0x1e27;\\n  t.hdotaccent = 0x1e23;\\n  t.hdotbelow = 0x1e25;\\n  t.he = 0x05d4;\\n  t.heart = 0x2665;\\n  t.heartsuitblack = 0x2665;\\n  t.heartsuitwhite = 0x2661;\\n  t.hedagesh = 0xfb34;\\n  t.hedageshhebrew = 0xfb34;\\n  t.hehaltonearabic = 0x06c1;\\n  t.heharabic = 0x0647;\\n  t.hehebrew = 0x05d4;\\n  t.hehfinalaltonearabic = 0xfba7;\\n  t.hehfinalalttwoarabic = 0xfeea;\\n  t.hehfinalarabic = 0xfeea;\\n  t.hehhamzaabovefinalarabic = 0xfba5;\\n  t.hehhamzaaboveisolatedarabic = 0xfba4;\\n  t.hehinitialaltonearabic = 0xfba8;\\n  t.hehinitialarabic = 0xfeeb;\\n  t.hehiragana = 0x3078;\\n  t.hehmedialaltonearabic = 0xfba9;\\n  t.hehmedialarabic = 0xfeec;\\n  t.heiseierasquare = 0x337b;\\n  t.hekatakana = 0x30d8;\\n  t.hekatakanahalfwidth = 0xff8d;\\n  t.hekutaarusquare = 0x3336;\\n  t.henghook = 0x0267;\\n  t.herutusquare = 0x3339;\\n  t.het = 0x05d7;\\n  t.hethebrew = 0x05d7;\\n  t.hhook = 0x0266;\\n  t.hhooksuperior = 0x02b1;\\n  t.hieuhacirclekorean = 0x327b;\\n  t.hieuhaparenkorean = 0x321b;\\n  t.hieuhcirclekorean = 0x326d;\\n  t.hieuhkorean = 0x314e;\\n  t.hieuhparenkorean = 0x320d;\\n  t.hihiragana = 0x3072;\\n  t.hikatakana = 0x30d2;\\n  t.hikatakanahalfwidth = 0xff8b;\\n  t.hiriq = 0x05b4;\\n  t.hiriq14 = 0x05b4;\\n  t.hiriq21 = 0x05b4;\\n  t.hiriq2d = 0x05b4;\\n  t.hiriqhebrew = 0x05b4;\\n  t.hiriqnarrowhebrew = 0x05b4;\\n  t.hiriqquarterhebrew = 0x05b4;\\n  t.hiriqwidehebrew = 0x05b4;\\n  t.hlinebelow = 0x1e96;\\n  t.hmonospace = 0xff48;\\n  t.hoarmenian = 0x0570;\\n  t.hohipthai = 0x0e2b;\\n  t.hohiragana = 0x307b;\\n  t.hokatakana = 0x30db;\\n  t.hokatakanahalfwidth = 0xff8e;\\n  t.holam = 0x05b9;\\n  t.holam19 = 0x05b9;\\n  t.holam26 = 0x05b9;\\n  t.holam32 = 0x05b9;\\n  t.holamhebrew = 0x05b9;\\n  t.holamnarrowhebrew = 0x05b9;\\n  t.holamquarterhebrew = 0x05b9;\\n  t.holamwidehebrew = 0x05b9;\\n  t.honokhukthai = 0x0e2e;\\n  t.hookabovecomb = 0x0309;\\n  t.hookcmb = 0x0309;\\n  t.hookpalatalizedbelowcmb = 0x0321;\\n  t.hookretroflexbelowcmb = 0x0322;\\n  t.hoonsquare = 0x3342;\\n  t.horicoptic = 0x03e9;\\n  t.horizontalbar = 0x2015;\\n  t.horncmb = 0x031b;\\n  t.hotsprings = 0x2668;\\n  t.house = 0x2302;\\n  t.hparen = 0x24a3;\\n  t.hsuperior = 0x02b0;\\n  t.hturned = 0x0265;\\n  t.huhiragana = 0x3075;\\n  t.huiitosquare = 0x3333;\\n  t.hukatakana = 0x30d5;\\n  t.hukatakanahalfwidth = 0xff8c;\\n  t.hungarumlaut = 0x02dd;\\n  t.hungarumlautcmb = 0x030b;\\n  t.hv = 0x0195;\\n  t.hyphen = 0x002d;\\n  t.hypheninferior = 0xf6e5;\\n  t.hyphenmonospace = 0xff0d;\\n  t.hyphensmall = 0xfe63;\\n  t.hyphensuperior = 0xf6e6;\\n  t.hyphentwo = 0x2010;\\n  t.i = 0x0069;\\n  t.iacute = 0x00ed;\\n  t.iacyrillic = 0x044f;\\n  t.ibengali = 0x0987;\\n  t.ibopomofo = 0x3127;\\n  t.ibreve = 0x012d;\\n  t.icaron = 0x01d0;\\n  t.icircle = 0x24d8;\\n  t.icircumflex = 0x00ee;\\n  t.icyrillic = 0x0456;\\n  t.idblgrave = 0x0209;\\n  t.ideographearthcircle = 0x328f;\\n  t.ideographfirecircle = 0x328b;\\n  t.ideographicallianceparen = 0x323f;\\n  t.ideographiccallparen = 0x323a;\\n  t.ideographiccentrecircle = 0x32a5;\\n  t.ideographicclose = 0x3006;\\n  t.ideographiccomma = 0x3001;\\n  t.ideographiccommaleft = 0xff64;\\n  t.ideographiccongratulationparen = 0x3237;\\n  t.ideographiccorrectcircle = 0x32a3;\\n  t.ideographicearthparen = 0x322f;\\n  t.ideographicenterpriseparen = 0x323d;\\n  t.ideographicexcellentcircle = 0x329d;\\n  t.ideographicfestivalparen = 0x3240;\\n  t.ideographicfinancialcircle = 0x3296;\\n  t.ideographicfinancialparen = 0x3236;\\n  t.ideographicfireparen = 0x322b;\\n  t.ideographichaveparen = 0x3232;\\n  t.ideographichighcircle = 0x32a4;\\n  t.ideographiciterationmark = 0x3005;\\n  t.ideographiclaborcircle = 0x3298;\\n  t.ideographiclaborparen = 0x3238;\\n  t.ideographicleftcircle = 0x32a7;\\n  t.ideographiclowcircle = 0x32a6;\\n  t.ideographicmedicinecircle = 0x32a9;\\n  t.ideographicmetalparen = 0x322e;\\n  t.ideographicmoonparen = 0x322a;\\n  t.ideographicnameparen = 0x3234;\\n  t.ideographicperiod = 0x3002;\\n  t.ideographicprintcircle = 0x329e;\\n  t.ideographicreachparen = 0x3243;\\n  t.ideographicrepresentparen = 0x3239;\\n  t.ideographicresourceparen = 0x323e;\\n  t.ideographicrightcircle = 0x32a8;\\n  t.ideographicsecretcircle = 0x3299;\\n  t.ideographicselfparen = 0x3242;\\n  t.ideographicsocietyparen = 0x3233;\\n  t.ideographicspace = 0x3000;\\n  t.ideographicspecialparen = 0x3235;\\n  t.ideographicstockparen = 0x3231;\\n  t.ideographicstudyparen = 0x323b;\\n  t.ideographicsunparen = 0x3230;\\n  t.ideographicsuperviseparen = 0x323c;\\n  t.ideographicwaterparen = 0x322c;\\n  t.ideographicwoodparen = 0x322d;\\n  t.ideographiczero = 0x3007;\\n  t.ideographmetalcircle = 0x328e;\\n  t.ideographmooncircle = 0x328a;\\n  t.ideographnamecircle = 0x3294;\\n  t.ideographsuncircle = 0x3290;\\n  t.ideographwatercircle = 0x328c;\\n  t.ideographwoodcircle = 0x328d;\\n  t.ideva = 0x0907;\\n  t.idieresis = 0x00ef;\\n  t.idieresisacute = 0x1e2f;\\n  t.idieresiscyrillic = 0x04e5;\\n  t.idotbelow = 0x1ecb;\\n  t.iebrevecyrillic = 0x04d7;\\n  t.iecyrillic = 0x0435;\\n  t.ieungacirclekorean = 0x3275;\\n  t.ieungaparenkorean = 0x3215;\\n  t.ieungcirclekorean = 0x3267;\\n  t.ieungkorean = 0x3147;\\n  t.ieungparenkorean = 0x3207;\\n  t.igrave = 0x00ec;\\n  t.igujarati = 0x0a87;\\n  t.igurmukhi = 0x0a07;\\n  t.ihiragana = 0x3044;\\n  t.ihookabove = 0x1ec9;\\n  t.iibengali = 0x0988;\\n  t.iicyrillic = 0x0438;\\n  t.iideva = 0x0908;\\n  t.iigujarati = 0x0a88;\\n  t.iigurmukhi = 0x0a08;\\n  t.iimatragurmukhi = 0x0a40;\\n  t.iinvertedbreve = 0x020b;\\n  t.iishortcyrillic = 0x0439;\\n  t.iivowelsignbengali = 0x09c0;\\n  t.iivowelsigndeva = 0x0940;\\n  t.iivowelsigngujarati = 0x0ac0;\\n  t.ij = 0x0133;\\n  t.ikatakana = 0x30a4;\\n  t.ikatakanahalfwidth = 0xff72;\\n  t.ikorean = 0x3163;\\n  t.ilde = 0x02dc;\\n  t.iluyhebrew = 0x05ac;\\n  t.imacron = 0x012b;\\n  t.imacroncyrillic = 0x04e3;\\n  t.imageorapproximatelyequal = 0x2253;\\n  t.imatragurmukhi = 0x0a3f;\\n  t.imonospace = 0xff49;\\n  t.increment = 0x2206;\\n  t.infinity = 0x221e;\\n  t.iniarmenian = 0x056b;\\n  t.integral = 0x222b;\\n  t.integralbottom = 0x2321;\\n  t.integralbt = 0x2321;\\n  t.integralex = 0xf8f5;\\n  t.integraltop = 0x2320;\\n  t.integraltp = 0x2320;\\n  t.intersection = 0x2229;\\n  t.intisquare = 0x3305;\\n  t.invbullet = 0x25d8;\\n  t.invcircle = 0x25d9;\\n  t.invsmileface = 0x263b;\\n  t.iocyrillic = 0x0451;\\n  t.iogonek = 0x012f;\\n  t.iota = 0x03b9;\\n  t.iotadieresis = 0x03ca;\\n  t.iotadieresistonos = 0x0390;\\n  t.iotalatin = 0x0269;\\n  t.iotatonos = 0x03af;\\n  t.iparen = 0x24a4;\\n  t.irigurmukhi = 0x0a72;\\n  t.ismallhiragana = 0x3043;\\n  t.ismallkatakana = 0x30a3;\\n  t.ismallkatakanahalfwidth = 0xff68;\\n  t.issharbengali = 0x09fa;\\n  t.istroke = 0x0268;\\n  t.isuperior = 0xf6ed;\\n  t.iterationhiragana = 0x309d;\\n  t.iterationkatakana = 0x30fd;\\n  t.itilde = 0x0129;\\n  t.itildebelow = 0x1e2d;\\n  t.iubopomofo = 0x3129;\\n  t.iucyrillic = 0x044e;\\n  t.ivowelsignbengali = 0x09bf;\\n  t.ivowelsigndeva = 0x093f;\\n  t.ivowelsigngujarati = 0x0abf;\\n  t.izhitsacyrillic = 0x0475;\\n  t.izhitsadblgravecyrillic = 0x0477;\\n  t.j = 0x006a;\\n  t.jaarmenian = 0x0571;\\n  t.jabengali = 0x099c;\\n  t.jadeva = 0x091c;\\n  t.jagujarati = 0x0a9c;\\n  t.jagurmukhi = 0x0a1c;\\n  t.jbopomofo = 0x3110;\\n  t.jcaron = 0x01f0;\\n  t.jcircle = 0x24d9;\\n  t.jcircumflex = 0x0135;\\n  t.jcrossedtail = 0x029d;\\n  t.jdotlessstroke = 0x025f;\\n  t.jecyrillic = 0x0458;\\n  t.jeemarabic = 0x062c;\\n  t.jeemfinalarabic = 0xfe9e;\\n  t.jeeminitialarabic = 0xfe9f;\\n  t.jeemmedialarabic = 0xfea0;\\n  t.jeharabic = 0x0698;\\n  t.jehfinalarabic = 0xfb8b;\\n  t.jhabengali = 0x099d;\\n  t.jhadeva = 0x091d;\\n  t.jhagujarati = 0x0a9d;\\n  t.jhagurmukhi = 0x0a1d;\\n  t.jheharmenian = 0x057b;\\n  t.jis = 0x3004;\\n  t.jmonospace = 0xff4a;\\n  t.jparen = 0x24a5;\\n  t.jsuperior = 0x02b2;\\n  t.k = 0x006b;\\n  t.kabashkircyrillic = 0x04a1;\\n  t.kabengali = 0x0995;\\n  t.kacute = 0x1e31;\\n  t.kacyrillic = 0x043a;\\n  t.kadescendercyrillic = 0x049b;\\n  t.kadeva = 0x0915;\\n  t.kaf = 0x05db;\\n  t.kafarabic = 0x0643;\\n  t.kafdagesh = 0xfb3b;\\n  t.kafdageshhebrew = 0xfb3b;\\n  t.kaffinalarabic = 0xfeda;\\n  t.kafhebrew = 0x05db;\\n  t.kafinitialarabic = 0xfedb;\\n  t.kafmedialarabic = 0xfedc;\\n  t.kafrafehebrew = 0xfb4d;\\n  t.kagujarati = 0x0a95;\\n  t.kagurmukhi = 0x0a15;\\n  t.kahiragana = 0x304b;\\n  t.kahookcyrillic = 0x04c4;\\n  t.kakatakana = 0x30ab;\\n  t.kakatakanahalfwidth = 0xff76;\\n  t.kappa = 0x03ba;\\n  t.kappasymbolgreek = 0x03f0;\\n  t.kapyeounmieumkorean = 0x3171;\\n  t.kapyeounphieuphkorean = 0x3184;\\n  t.kapyeounpieupkorean = 0x3178;\\n  t.kapyeounssangpieupkorean = 0x3179;\\n  t.karoriisquare = 0x330d;\\n  t.kashidaautoarabic = 0x0640;\\n  t.kashidaautonosidebearingarabic = 0x0640;\\n  t.kasmallkatakana = 0x30f5;\\n  t.kasquare = 0x3384;\\n  t.kasraarabic = 0x0650;\\n  t.kasratanarabic = 0x064d;\\n  t.kastrokecyrillic = 0x049f;\\n  t.katahiraprolongmarkhalfwidth = 0xff70;\\n  t.kaverticalstrokecyrillic = 0x049d;\\n  t.kbopomofo = 0x310e;\\n  t.kcalsquare = 0x3389;\\n  t.kcaron = 0x01e9;\\n  t.kcedilla = 0x0137;\\n  t.kcircle = 0x24da;\\n  t.kcommaaccent = 0x0137;\\n  t.kdotbelow = 0x1e33;\\n  t.keharmenian = 0x0584;\\n  t.kehiragana = 0x3051;\\n  t.kekatakana = 0x30b1;\\n  t.kekatakanahalfwidth = 0xff79;\\n  t.kenarmenian = 0x056f;\\n  t.kesmallkatakana = 0x30f6;\\n  t.kgreenlandic = 0x0138;\\n  t.khabengali = 0x0996;\\n  t.khacyrillic = 0x0445;\\n  t.khadeva = 0x0916;\\n  t.khagujarati = 0x0a96;\\n  t.khagurmukhi = 0x0a16;\\n  t.khaharabic = 0x062e;\\n  t.khahfinalarabic = 0xfea6;\\n  t.khahinitialarabic = 0xfea7;\\n  t.khahmedialarabic = 0xfea8;\\n  t.kheicoptic = 0x03e7;\\n  t.khhadeva = 0x0959;\\n  t.khhagurmukhi = 0x0a59;\\n  t.khieukhacirclekorean = 0x3278;\\n  t.khieukhaparenkorean = 0x3218;\\n  t.khieukhcirclekorean = 0x326a;\\n  t.khieukhkorean = 0x314b;\\n  t.khieukhparenkorean = 0x320a;\\n  t.khokhaithai = 0x0e02;\\n  t.khokhonthai = 0x0e05;\\n  t.khokhuatthai = 0x0e03;\\n  t.khokhwaithai = 0x0e04;\\n  t.khomutthai = 0x0e5b;\\n  t.khook = 0x0199;\\n  t.khorakhangthai = 0x0e06;\\n  t.khzsquare = 0x3391;\\n  t.kihiragana = 0x304d;\\n  t.kikatakana = 0x30ad;\\n  t.kikatakanahalfwidth = 0xff77;\\n  t.kiroguramusquare = 0x3315;\\n  t.kiromeetorusquare = 0x3316;\\n  t.kirosquare = 0x3314;\\n  t.kiyeokacirclekorean = 0x326e;\\n  t.kiyeokaparenkorean = 0x320e;\\n  t.kiyeokcirclekorean = 0x3260;\\n  t.kiyeokkorean = 0x3131;\\n  t.kiyeokparenkorean = 0x3200;\\n  t.kiyeoksioskorean = 0x3133;\\n  t.kjecyrillic = 0x045c;\\n  t.klinebelow = 0x1e35;\\n  t.klsquare = 0x3398;\\n  t.kmcubedsquare = 0x33a6;\\n  t.kmonospace = 0xff4b;\\n  t.kmsquaredsquare = 0x33a2;\\n  t.kohiragana = 0x3053;\\n  t.kohmsquare = 0x33c0;\\n  t.kokaithai = 0x0e01;\\n  t.kokatakana = 0x30b3;\\n  t.kokatakanahalfwidth = 0xff7a;\\n  t.kooposquare = 0x331e;\\n  t.koppacyrillic = 0x0481;\\n  t.koreanstandardsymbol = 0x327f;\\n  t.koroniscmb = 0x0343;\\n  t.kparen = 0x24a6;\\n  t.kpasquare = 0x33aa;\\n  t.ksicyrillic = 0x046f;\\n  t.ktsquare = 0x33cf;\\n  t.kturned = 0x029e;\\n  t.kuhiragana = 0x304f;\\n  t.kukatakana = 0x30af;\\n  t.kukatakanahalfwidth = 0xff78;\\n  t.kvsquare = 0x33b8;\\n  t.kwsquare = 0x33be;\\n  t.l = 0x006c;\\n  t.labengali = 0x09b2;\\n  t.lacute = 0x013a;\\n  t.ladeva = 0x0932;\\n  t.lagujarati = 0x0ab2;\\n  t.lagurmukhi = 0x0a32;\\n  t.lakkhangyaothai = 0x0e45;\\n  t.lamaleffinalarabic = 0xfefc;\\n  t.lamalefhamzaabovefinalarabic = 0xfef8;\\n  t.lamalefhamzaaboveisolatedarabic = 0xfef7;\\n  t.lamalefhamzabelowfinalarabic = 0xfefa;\\n  t.lamalefhamzabelowisolatedarabic = 0xfef9;\\n  t.lamalefisolatedarabic = 0xfefb;\\n  t.lamalefmaddaabovefinalarabic = 0xfef6;\\n  t.lamalefmaddaaboveisolatedarabic = 0xfef5;\\n  t.lamarabic = 0x0644;\\n  t.lambda = 0x03bb;\\n  t.lambdastroke = 0x019b;\\n  t.lamed = 0x05dc;\\n  t.lameddagesh = 0xfb3c;\\n  t.lameddageshhebrew = 0xfb3c;\\n  t.lamedhebrew = 0x05dc;\\n  t.lamfinalarabic = 0xfede;\\n  t.lamhahinitialarabic = 0xfcca;\\n  t.laminitialarabic = 0xfedf;\\n  t.lamjeeminitialarabic = 0xfcc9;\\n  t.lamkhahinitialarabic = 0xfccb;\\n  t.lamlamhehisolatedarabic = 0xfdf2;\\n  t.lammedialarabic = 0xfee0;\\n  t.lammeemhahinitialarabic = 0xfd88;\\n  t.lammeeminitialarabic = 0xfccc;\\n  t.largecircle = 0x25ef;\\n  t.lbar = 0x019a;\\n  t.lbelt = 0x026c;\\n  t.lbopomofo = 0x310c;\\n  t.lcaron = 0x013e;\\n  t.lcedilla = 0x013c;\\n  t.lcircle = 0x24db;\\n  t.lcircumflexbelow = 0x1e3d;\\n  t.lcommaaccent = 0x013c;\\n  t.ldot = 0x0140;\\n  t.ldotaccent = 0x0140;\\n  t.ldotbelow = 0x1e37;\\n  t.ldotbelowmacron = 0x1e39;\\n  t.leftangleabovecmb = 0x031a;\\n  t.lefttackbelowcmb = 0x0318;\\n  t.less = 0x003c;\\n  t.lessequal = 0x2264;\\n  t.lessequalorgreater = 0x22da;\\n  t.lessmonospace = 0xff1c;\\n  t.lessorequivalent = 0x2272;\\n  t.lessorgreater = 0x2276;\\n  t.lessoverequal = 0x2266;\\n  t.lesssmall = 0xfe64;\\n  t.lezh = 0x026e;\\n  t.lfblock = 0x258c;\\n  t.lhookretroflex = 0x026d;\\n  t.lira = 0x20a4;\\n  t.liwnarmenian = 0x056c;\\n  t.lj = 0x01c9;\\n  t.ljecyrillic = 0x0459;\\n  t.ll = 0xf6c0;\\n  t.lladeva = 0x0933;\\n  t.llagujarati = 0x0ab3;\\n  t.llinebelow = 0x1e3b;\\n  t.llladeva = 0x0934;\\n  t.llvocalicbengali = 0x09e1;\\n  t.llvocalicdeva = 0x0961;\\n  t.llvocalicvowelsignbengali = 0x09e3;\\n  t.llvocalicvowelsigndeva = 0x0963;\\n  t.lmiddletilde = 0x026b;\\n  t.lmonospace = 0xff4c;\\n  t.lmsquare = 0x33d0;\\n  t.lochulathai = 0x0e2c;\\n  t.logicaland = 0x2227;\\n  t.logicalnot = 0x00ac;\\n  t.logicalnotreversed = 0x2310;\\n  t.logicalor = 0x2228;\\n  t.lolingthai = 0x0e25;\\n  t.longs = 0x017f;\\n  t.lowlinecenterline = 0xfe4e;\\n  t.lowlinecmb = 0x0332;\\n  t.lowlinedashed = 0xfe4d;\\n  t.lozenge = 0x25ca;\\n  t.lparen = 0x24a7;\\n  t.lslash = 0x0142;\\n  t.lsquare = 0x2113;\\n  t.lsuperior = 0xf6ee;\\n  t.ltshade = 0x2591;\\n  t.luthai = 0x0e26;\\n  t.lvocalicbengali = 0x098c;\\n  t.lvocalicdeva = 0x090c;\\n  t.lvocalicvowelsignbengali = 0x09e2;\\n  t.lvocalicvowelsigndeva = 0x0962;\\n  t.lxsquare = 0x33d3;\\n  t.m = 0x006d;\\n  t.mabengali = 0x09ae;\\n  t.macron = 0x00af;\\n  t.macronbelowcmb = 0x0331;\\n  t.macroncmb = 0x0304;\\n  t.macronlowmod = 0x02cd;\\n  t.macronmonospace = 0xffe3;\\n  t.macute = 0x1e3f;\\n  t.madeva = 0x092e;\\n  t.magujarati = 0x0aae;\\n  t.magurmukhi = 0x0a2e;\\n  t.mahapakhhebrew = 0x05a4;\\n  t.mahapakhlefthebrew = 0x05a4;\\n  t.mahiragana = 0x307e;\\n  t.maichattawalowleftthai = 0xf895;\\n  t.maichattawalowrightthai = 0xf894;\\n  t.maichattawathai = 0x0e4b;\\n  t.maichattawaupperleftthai = 0xf893;\\n  t.maieklowleftthai = 0xf88c;\\n  t.maieklowrightthai = 0xf88b;\\n  t.maiekthai = 0x0e48;\\n  t.maiekupperleftthai = 0xf88a;\\n  t.maihanakatleftthai = 0xf884;\\n  t.maihanakatthai = 0x0e31;\\n  t.maitaikhuleftthai = 0xf889;\\n  t.maitaikhuthai = 0x0e47;\\n  t.maitholowleftthai = 0xf88f;\\n  t.maitholowrightthai = 0xf88e;\\n  t.maithothai = 0x0e49;\\n  t.maithoupperleftthai = 0xf88d;\\n  t.maitrilowleftthai = 0xf892;\\n  t.maitrilowrightthai = 0xf891;\\n  t.maitrithai = 0x0e4a;\\n  t.maitriupperleftthai = 0xf890;\\n  t.maiyamokthai = 0x0e46;\\n  t.makatakana = 0x30de;\\n  t.makatakanahalfwidth = 0xff8f;\\n  t.male = 0x2642;\\n  t.mansyonsquare = 0x3347;\\n  t.maqafhebrew = 0x05be;\\n  t.mars = 0x2642;\\n  t.masoracirclehebrew = 0x05af;\\n  t.masquare = 0x3383;\\n  t.mbopomofo = 0x3107;\\n  t.mbsquare = 0x33d4;\\n  t.mcircle = 0x24dc;\\n  t.mcubedsquare = 0x33a5;\\n  t.mdotaccent = 0x1e41;\\n  t.mdotbelow = 0x1e43;\\n  t.meemarabic = 0x0645;\\n  t.meemfinalarabic = 0xfee2;\\n  t.meeminitialarabic = 0xfee3;\\n  t.meemmedialarabic = 0xfee4;\\n  t.meemmeeminitialarabic = 0xfcd1;\\n  t.meemmeemisolatedarabic = 0xfc48;\\n  t.meetorusquare = 0x334d;\\n  t.mehiragana = 0x3081;\\n  t.meizierasquare = 0x337e;\\n  t.mekatakana = 0x30e1;\\n  t.mekatakanahalfwidth = 0xff92;\\n  t.mem = 0x05de;\\n  t.memdagesh = 0xfb3e;\\n  t.memdageshhebrew = 0xfb3e;\\n  t.memhebrew = 0x05de;\\n  t.menarmenian = 0x0574;\\n  t.merkhahebrew = 0x05a5;\\n  t.merkhakefulahebrew = 0x05a6;\\n  t.merkhakefulalefthebrew = 0x05a6;\\n  t.merkhalefthebrew = 0x05a5;\\n  t.mhook = 0x0271;\\n  t.mhzsquare = 0x3392;\\n  t.middledotkatakanahalfwidth = 0xff65;\\n  t.middot = 0x00b7;\\n  t.mieumacirclekorean = 0x3272;\\n  t.mieumaparenkorean = 0x3212;\\n  t.mieumcirclekorean = 0x3264;\\n  t.mieumkorean = 0x3141;\\n  t.mieumpansioskorean = 0x3170;\\n  t.mieumparenkorean = 0x3204;\\n  t.mieumpieupkorean = 0x316e;\\n  t.mieumsioskorean = 0x316f;\\n  t.mihiragana = 0x307f;\\n  t.mikatakana = 0x30df;\\n  t.mikatakanahalfwidth = 0xff90;\\n  t.minus = 0x2212;\\n  t.minusbelowcmb = 0x0320;\\n  t.minuscircle = 0x2296;\\n  t.minusmod = 0x02d7;\\n  t.minusplus = 0x2213;\\n  t.minute = 0x2032;\\n  t.miribaarusquare = 0x334a;\\n  t.mirisquare = 0x3349;\\n  t.mlonglegturned = 0x0270;\\n  t.mlsquare = 0x3396;\\n  t.mmcubedsquare = 0x33a3;\\n  t.mmonospace = 0xff4d;\\n  t.mmsquaredsquare = 0x339f;\\n  t.mohiragana = 0x3082;\\n  t.mohmsquare = 0x33c1;\\n  t.mokatakana = 0x30e2;\\n  t.mokatakanahalfwidth = 0xff93;\\n  t.molsquare = 0x33d6;\\n  t.momathai = 0x0e21;\\n  t.moverssquare = 0x33a7;\\n  t.moverssquaredsquare = 0x33a8;\\n  t.mparen = 0x24a8;\\n  t.mpasquare = 0x33ab;\\n  t.mssquare = 0x33b3;\\n  t.msuperior = 0xf6ef;\\n  t.mturned = 0x026f;\\n  t.mu = 0x00b5;\\n  t.mu1 = 0x00b5;\\n  t.muasquare = 0x3382;\\n  t.muchgreater = 0x226b;\\n  t.muchless = 0x226a;\\n  t.mufsquare = 0x338c;\\n  t.mugreek = 0x03bc;\\n  t.mugsquare = 0x338d;\\n  t.muhiragana = 0x3080;\\n  t.mukatakana = 0x30e0;\\n  t.mukatakanahalfwidth = 0xff91;\\n  t.mulsquare = 0x3395;\\n  t.multiply = 0x00d7;\\n  t.mumsquare = 0x339b;\\n  t.munahhebrew = 0x05a3;\\n  t.munahlefthebrew = 0x05a3;\\n  t.musicalnote = 0x266a;\\n  t.musicalnotedbl = 0x266b;\\n  t.musicflatsign = 0x266d;\\n  t.musicsharpsign = 0x266f;\\n  t.mussquare = 0x33b2;\\n  t.muvsquare = 0x33b6;\\n  t.muwsquare = 0x33bc;\\n  t.mvmegasquare = 0x33b9;\\n  t.mvsquare = 0x33b7;\\n  t.mwmegasquare = 0x33bf;\\n  t.mwsquare = 0x33bd;\\n  t.n = 0x006e;\\n  t.nabengali = 0x09a8;\\n  t.nabla = 0x2207;\\n  t.nacute = 0x0144;\\n  t.nadeva = 0x0928;\\n  t.nagujarati = 0x0aa8;\\n  t.nagurmukhi = 0x0a28;\\n  t.nahiragana = 0x306a;\\n  t.nakatakana = 0x30ca;\\n  t.nakatakanahalfwidth = 0xff85;\\n  t.napostrophe = 0x0149;\\n  t.nasquare = 0x3381;\\n  t.nbopomofo = 0x310b;\\n  t.nbspace = 0x00a0;\\n  t.ncaron = 0x0148;\\n  t.ncedilla = 0x0146;\\n  t.ncircle = 0x24dd;\\n  t.ncircumflexbelow = 0x1e4b;\\n  t.ncommaaccent = 0x0146;\\n  t.ndotaccent = 0x1e45;\\n  t.ndotbelow = 0x1e47;\\n  t.nehiragana = 0x306d;\\n  t.nekatakana = 0x30cd;\\n  t.nekatakanahalfwidth = 0xff88;\\n  t.newsheqelsign = 0x20aa;\\n  t.nfsquare = 0x338b;\\n  t.ngabengali = 0x0999;\\n  t.ngadeva = 0x0919;\\n  t.ngagujarati = 0x0a99;\\n  t.ngagurmukhi = 0x0a19;\\n  t.ngonguthai = 0x0e07;\\n  t.nhiragana = 0x3093;\\n  t.nhookleft = 0x0272;\\n  t.nhookretroflex = 0x0273;\\n  t.nieunacirclekorean = 0x326f;\\n  t.nieunaparenkorean = 0x320f;\\n  t.nieuncieuckorean = 0x3135;\\n  t.nieuncirclekorean = 0x3261;\\n  t.nieunhieuhkorean = 0x3136;\\n  t.nieunkorean = 0x3134;\\n  t.nieunpansioskorean = 0x3168;\\n  t.nieunparenkorean = 0x3201;\\n  t.nieunsioskorean = 0x3167;\\n  t.nieuntikeutkorean = 0x3166;\\n  t.nihiragana = 0x306b;\\n  t.nikatakana = 0x30cb;\\n  t.nikatakanahalfwidth = 0xff86;\\n  t.nikhahitleftthai = 0xf899;\\n  t.nikhahitthai = 0x0e4d;\\n  t.nine = 0x0039;\\n  t.ninearabic = 0x0669;\\n  t.ninebengali = 0x09ef;\\n  t.ninecircle = 0x2468;\\n  t.ninecircleinversesansserif = 0x2792;\\n  t.ninedeva = 0x096f;\\n  t.ninegujarati = 0x0aef;\\n  t.ninegurmukhi = 0x0a6f;\\n  t.ninehackarabic = 0x0669;\\n  t.ninehangzhou = 0x3029;\\n  t.nineideographicparen = 0x3228;\\n  t.nineinferior = 0x2089;\\n  t.ninemonospace = 0xff19;\\n  t.nineoldstyle = 0xf739;\\n  t.nineparen = 0x247c;\\n  t.nineperiod = 0x2490;\\n  t.ninepersian = 0x06f9;\\n  t.nineroman = 0x2178;\\n  t.ninesuperior = 0x2079;\\n  t.nineteencircle = 0x2472;\\n  t.nineteenparen = 0x2486;\\n  t.nineteenperiod = 0x249a;\\n  t.ninethai = 0x0e59;\\n  t.nj = 0x01cc;\\n  t.njecyrillic = 0x045a;\\n  t.nkatakana = 0x30f3;\\n  t.nkatakanahalfwidth = 0xff9d;\\n  t.nlegrightlong = 0x019e;\\n  t.nlinebelow = 0x1e49;\\n  t.nmonospace = 0xff4e;\\n  t.nmsquare = 0x339a;\\n  t.nnabengali = 0x09a3;\\n  t.nnadeva = 0x0923;\\n  t.nnagujarati = 0x0aa3;\\n  t.nnagurmukhi = 0x0a23;\\n  t.nnnadeva = 0x0929;\\n  t.nohiragana = 0x306e;\\n  t.nokatakana = 0x30ce;\\n  t.nokatakanahalfwidth = 0xff89;\\n  t.nonbreakingspace = 0x00a0;\\n  t.nonenthai = 0x0e13;\\n  t.nonuthai = 0x0e19;\\n  t.noonarabic = 0x0646;\\n  t.noonfinalarabic = 0xfee6;\\n  t.noonghunnaarabic = 0x06ba;\\n  t.noonghunnafinalarabic = 0xfb9f;\\n  t.nooninitialarabic = 0xfee7;\\n  t.noonjeeminitialarabic = 0xfcd2;\\n  t.noonjeemisolatedarabic = 0xfc4b;\\n  t.noonmedialarabic = 0xfee8;\\n  t.noonmeeminitialarabic = 0xfcd5;\\n  t.noonmeemisolatedarabic = 0xfc4e;\\n  t.noonnoonfinalarabic = 0xfc8d;\\n  t.notcontains = 0x220c;\\n  t.notelement = 0x2209;\\n  t.notelementof = 0x2209;\\n  t.notequal = 0x2260;\\n  t.notgreater = 0x226f;\\n  t.notgreaternorequal = 0x2271;\\n  t.notgreaternorless = 0x2279;\\n  t.notidentical = 0x2262;\\n  t.notless = 0x226e;\\n  t.notlessnorequal = 0x2270;\\n  t.notparallel = 0x2226;\\n  t.notprecedes = 0x2280;\\n  t.notsubset = 0x2284;\\n  t.notsucceeds = 0x2281;\\n  t.notsuperset = 0x2285;\\n  t.nowarmenian = 0x0576;\\n  t.nparen = 0x24a9;\\n  t.nssquare = 0x33b1;\\n  t.nsuperior = 0x207f;\\n  t.ntilde = 0x00f1;\\n  t.nu = 0x03bd;\\n  t.nuhiragana = 0x306c;\\n  t.nukatakana = 0x30cc;\\n  t.nukatakanahalfwidth = 0xff87;\\n  t.nuktabengali = 0x09bc;\\n  t.nuktadeva = 0x093c;\\n  t.nuktagujarati = 0x0abc;\\n  t.nuktagurmukhi = 0x0a3c;\\n  t.numbersign = 0x0023;\\n  t.numbersignmonospace = 0xff03;\\n  t.numbersignsmall = 0xfe5f;\\n  t.numeralsigngreek = 0x0374;\\n  t.numeralsignlowergreek = 0x0375;\\n  t.numero = 0x2116;\\n  t.nun = 0x05e0;\\n  t.nundagesh = 0xfb40;\\n  t.nundageshhebrew = 0xfb40;\\n  t.nunhebrew = 0x05e0;\\n  t.nvsquare = 0x33b5;\\n  t.nwsquare = 0x33bb;\\n  t.nyabengali = 0x099e;\\n  t.nyadeva = 0x091e;\\n  t.nyagujarati = 0x0a9e;\\n  t.nyagurmukhi = 0x0a1e;\\n  t.o = 0x006f;\\n  t.oacute = 0x00f3;\\n  t.oangthai = 0x0e2d;\\n  t.obarred = 0x0275;\\n  t.obarredcyrillic = 0x04e9;\\n  t.obarreddieresiscyrillic = 0x04eb;\\n  t.obengali = 0x0993;\\n  t.obopomofo = 0x311b;\\n  t.obreve = 0x014f;\\n  t.ocandradeva = 0x0911;\\n  t.ocandragujarati = 0x0a91;\\n  t.ocandravowelsigndeva = 0x0949;\\n  t.ocandravowelsigngujarati = 0x0ac9;\\n  t.ocaron = 0x01d2;\\n  t.ocircle = 0x24de;\\n  t.ocircumflex = 0x00f4;\\n  t.ocircumflexacute = 0x1ed1;\\n  t.ocircumflexdotbelow = 0x1ed9;\\n  t.ocircumflexgrave = 0x1ed3;\\n  t.ocircumflexhookabove = 0x1ed5;\\n  t.ocircumflextilde = 0x1ed7;\\n  t.ocyrillic = 0x043e;\\n  t.odblacute = 0x0151;\\n  t.odblgrave = 0x020d;\\n  t.odeva = 0x0913;\\n  t.odieresis = 0x00f6;\\n  t.odieresiscyrillic = 0x04e7;\\n  t.odotbelow = 0x1ecd;\\n  t.oe = 0x0153;\\n  t.oekorean = 0x315a;\\n  t.ogonek = 0x02db;\\n  t.ogonekcmb = 0x0328;\\n  t.ograve = 0x00f2;\\n  t.ogujarati = 0x0a93;\\n  t.oharmenian = 0x0585;\\n  t.ohiragana = 0x304a;\\n  t.ohookabove = 0x1ecf;\\n  t.ohorn = 0x01a1;\\n  t.ohornacute = 0x1edb;\\n  t.ohorndotbelow = 0x1ee3;\\n  t.ohorngrave = 0x1edd;\\n  t.ohornhookabove = 0x1edf;\\n  t.ohorntilde = 0x1ee1;\\n  t.ohungarumlaut = 0x0151;\\n  t.oi = 0x01a3;\\n  t.oinvertedbreve = 0x020f;\\n  t.okatakana = 0x30aa;\\n  t.okatakanahalfwidth = 0xff75;\\n  t.okorean = 0x3157;\\n  t.olehebrew = 0x05ab;\\n  t.omacron = 0x014d;\\n  t.omacronacute = 0x1e53;\\n  t.omacrongrave = 0x1e51;\\n  t.omdeva = 0x0950;\\n  t.omega = 0x03c9;\\n  t.omega1 = 0x03d6;\\n  t.omegacyrillic = 0x0461;\\n  t.omegalatinclosed = 0x0277;\\n  t.omegaroundcyrillic = 0x047b;\\n  t.omegatitlocyrillic = 0x047d;\\n  t.omegatonos = 0x03ce;\\n  t.omgujarati = 0x0ad0;\\n  t.omicron = 0x03bf;\\n  t.omicrontonos = 0x03cc;\\n  t.omonospace = 0xff4f;\\n  t.one = 0x0031;\\n  t.onearabic = 0x0661;\\n  t.onebengali = 0x09e7;\\n  t.onecircle = 0x2460;\\n  t.onecircleinversesansserif = 0x278a;\\n  t.onedeva = 0x0967;\\n  t.onedotenleader = 0x2024;\\n  t.oneeighth = 0x215b;\\n  t.onefitted = 0xf6dc;\\n  t.onegujarati = 0x0ae7;\\n  t.onegurmukhi = 0x0a67;\\n  t.onehackarabic = 0x0661;\\n  t.onehalf = 0x00bd;\\n  t.onehangzhou = 0x3021;\\n  t.oneideographicparen = 0x3220;\\n  t.oneinferior = 0x2081;\\n  t.onemonospace = 0xff11;\\n  t.onenumeratorbengali = 0x09f4;\\n  t.oneoldstyle = 0xf731;\\n  t.oneparen = 0x2474;\\n  t.oneperiod = 0x2488;\\n  t.onepersian = 0x06f1;\\n  t.onequarter = 0x00bc;\\n  t.oneroman = 0x2170;\\n  t.onesuperior = 0x00b9;\\n  t.onethai = 0x0e51;\\n  t.onethird = 0x2153;\\n  t.oogonek = 0x01eb;\\n  t.oogonekmacron = 0x01ed;\\n  t.oogurmukhi = 0x0a13;\\n  t.oomatragurmukhi = 0x0a4b;\\n  t.oopen = 0x0254;\\n  t.oparen = 0x24aa;\\n  t.openbullet = 0x25e6;\\n  t.option = 0x2325;\\n  t.ordfeminine = 0x00aa;\\n  t.ordmasculine = 0x00ba;\\n  t.orthogonal = 0x221f;\\n  t.oshortdeva = 0x0912;\\n  t.oshortvowelsigndeva = 0x094a;\\n  t.oslash = 0x00f8;\\n  t.oslashacute = 0x01ff;\\n  t.osmallhiragana = 0x3049;\\n  t.osmallkatakana = 0x30a9;\\n  t.osmallkatakanahalfwidth = 0xff6b;\\n  t.ostrokeacute = 0x01ff;\\n  t.osuperior = 0xf6f0;\\n  t.otcyrillic = 0x047f;\\n  t.otilde = 0x00f5;\\n  t.otildeacute = 0x1e4d;\\n  t.otildedieresis = 0x1e4f;\\n  t.oubopomofo = 0x3121;\\n  t.overline = 0x203e;\\n  t.overlinecenterline = 0xfe4a;\\n  t.overlinecmb = 0x0305;\\n  t.overlinedashed = 0xfe49;\\n  t.overlinedblwavy = 0xfe4c;\\n  t.overlinewavy = 0xfe4b;\\n  t.overscore = 0x00af;\\n  t.ovowelsignbengali = 0x09cb;\\n  t.ovowelsigndeva = 0x094b;\\n  t.ovowelsigngujarati = 0x0acb;\\n  t.p = 0x0070;\\n  t.paampssquare = 0x3380;\\n  t.paasentosquare = 0x332b;\\n  t.pabengali = 0x09aa;\\n  t.pacute = 0x1e55;\\n  t.padeva = 0x092a;\\n  t.pagedown = 0x21df;\\n  t.pageup = 0x21de;\\n  t.pagujarati = 0x0aaa;\\n  t.pagurmukhi = 0x0a2a;\\n  t.pahiragana = 0x3071;\\n  t.paiyannoithai = 0x0e2f;\\n  t.pakatakana = 0x30d1;\\n  t.palatalizationcyrilliccmb = 0x0484;\\n  t.palochkacyrillic = 0x04c0;\\n  t.pansioskorean = 0x317f;\\n  t.paragraph = 0x00b6;\\n  t.parallel = 0x2225;\\n  t.parenleft = 0x0028;\\n  t.parenleftaltonearabic = 0xfd3e;\\n  t.parenleftbt = 0xf8ed;\\n  t.parenleftex = 0xf8ec;\\n  t.parenleftinferior = 0x208d;\\n  t.parenleftmonospace = 0xff08;\\n  t.parenleftsmall = 0xfe59;\\n  t.parenleftsuperior = 0x207d;\\n  t.parenlefttp = 0xf8eb;\\n  t.parenleftvertical = 0xfe35;\\n  t.parenright = 0x0029;\\n  t.parenrightaltonearabic = 0xfd3f;\\n  t.parenrightbt = 0xf8f8;\\n  t.parenrightex = 0xf8f7;\\n  t.parenrightinferior = 0x208e;\\n  t.parenrightmonospace = 0xff09;\\n  t.parenrightsmall = 0xfe5a;\\n  t.parenrightsuperior = 0x207e;\\n  t.parenrighttp = 0xf8f6;\\n  t.parenrightvertical = 0xfe36;\\n  t.partialdiff = 0x2202;\\n  t.paseqhebrew = 0x05c0;\\n  t.pashtahebrew = 0x0599;\\n  t.pasquare = 0x33a9;\\n  t.patah = 0x05b7;\\n  t.patah11 = 0x05b7;\\n  t.patah1d = 0x05b7;\\n  t.patah2a = 0x05b7;\\n  t.patahhebrew = 0x05b7;\\n  t.patahnarrowhebrew = 0x05b7;\\n  t.patahquarterhebrew = 0x05b7;\\n  t.patahwidehebrew = 0x05b7;\\n  t.pazerhebrew = 0x05a1;\\n  t.pbopomofo = 0x3106;\\n  t.pcircle = 0x24df;\\n  t.pdotaccent = 0x1e57;\\n  t.pe = 0x05e4;\\n  t.pecyrillic = 0x043f;\\n  t.pedagesh = 0xfb44;\\n  t.pedageshhebrew = 0xfb44;\\n  t.peezisquare = 0x333b;\\n  t.pefinaldageshhebrew = 0xfb43;\\n  t.peharabic = 0x067e;\\n  t.peharmenian = 0x057a;\\n  t.pehebrew = 0x05e4;\\n  t.pehfinalarabic = 0xfb57;\\n  t.pehinitialarabic = 0xfb58;\\n  t.pehiragana = 0x307a;\\n  t.pehmedialarabic = 0xfb59;\\n  t.pekatakana = 0x30da;\\n  t.pemiddlehookcyrillic = 0x04a7;\\n  t.perafehebrew = 0xfb4e;\\n  t.percent = 0x0025;\\n  t.percentarabic = 0x066a;\\n  t.percentmonospace = 0xff05;\\n  t.percentsmall = 0xfe6a;\\n  t.period = 0x002e;\\n  t.periodarmenian = 0x0589;\\n  t.periodcentered = 0x00b7;\\n  t.periodhalfwidth = 0xff61;\\n  t.periodinferior = 0xf6e7;\\n  t.periodmonospace = 0xff0e;\\n  t.periodsmall = 0xfe52;\\n  t.periodsuperior = 0xf6e8;\\n  t.perispomenigreekcmb = 0x0342;\\n  t.perpendicular = 0x22a5;\\n  t.perthousand = 0x2030;\\n  t.peseta = 0x20a7;\\n  t.pfsquare = 0x338a;\\n  t.phabengali = 0x09ab;\\n  t.phadeva = 0x092b;\\n  t.phagujarati = 0x0aab;\\n  t.phagurmukhi = 0x0a2b;\\n  t.phi = 0x03c6;\\n  t.phi1 = 0x03d5;\\n  t.phieuphacirclekorean = 0x327a;\\n  t.phieuphaparenkorean = 0x321a;\\n  t.phieuphcirclekorean = 0x326c;\\n  t.phieuphkorean = 0x314d;\\n  t.phieuphparenkorean = 0x320c;\\n  t.philatin = 0x0278;\\n  t.phinthuthai = 0x0e3a;\\n  t.phisymbolgreek = 0x03d5;\\n  t.phook = 0x01a5;\\n  t.phophanthai = 0x0e1e;\\n  t.phophungthai = 0x0e1c;\\n  t.phosamphaothai = 0x0e20;\\n  t.pi = 0x03c0;\\n  t.pieupacirclekorean = 0x3273;\\n  t.pieupaparenkorean = 0x3213;\\n  t.pieupcieuckorean = 0x3176;\\n  t.pieupcirclekorean = 0x3265;\\n  t.pieupkiyeokkorean = 0x3172;\\n  t.pieupkorean = 0x3142;\\n  t.pieupparenkorean = 0x3205;\\n  t.pieupsioskiyeokkorean = 0x3174;\\n  t.pieupsioskorean = 0x3144;\\n  t.pieupsiostikeutkorean = 0x3175;\\n  t.pieupthieuthkorean = 0x3177;\\n  t.pieuptikeutkorean = 0x3173;\\n  t.pihiragana = 0x3074;\\n  t.pikatakana = 0x30d4;\\n  t.pisymbolgreek = 0x03d6;\\n  t.piwrarmenian = 0x0583;\\n  t.planckover2pi = 0x210f;\\n  t.planckover2pi1 = 0x210f;\\n  t.plus = 0x002b;\\n  t.plusbelowcmb = 0x031f;\\n  t.pluscircle = 0x2295;\\n  t.plusminus = 0x00b1;\\n  t.plusmod = 0x02d6;\\n  t.plusmonospace = 0xff0b;\\n  t.plussmall = 0xfe62;\\n  t.plussuperior = 0x207a;\\n  t.pmonospace = 0xff50;\\n  t.pmsquare = 0x33d8;\\n  t.pohiragana = 0x307d;\\n  t.pointingindexdownwhite = 0x261f;\\n  t.pointingindexleftwhite = 0x261c;\\n  t.pointingindexrightwhite = 0x261e;\\n  t.pointingindexupwhite = 0x261d;\\n  t.pokatakana = 0x30dd;\\n  t.poplathai = 0x0e1b;\\n  t.postalmark = 0x3012;\\n  t.postalmarkface = 0x3020;\\n  t.pparen = 0x24ab;\\n  t.precedes = 0x227a;\\n  t.prescription = 0x211e;\\n  t.primemod = 0x02b9;\\n  t.primereversed = 0x2035;\\n  t.product = 0x220f;\\n  t.projective = 0x2305;\\n  t.prolongedkana = 0x30fc;\\n  t.propellor = 0x2318;\\n  t.propersubset = 0x2282;\\n  t.propersuperset = 0x2283;\\n  t.proportion = 0x2237;\\n  t.proportional = 0x221d;\\n  t.psi = 0x03c8;\\n  t.psicyrillic = 0x0471;\\n  t.psilipneumatacyrilliccmb = 0x0486;\\n  t.pssquare = 0x33b0;\\n  t.puhiragana = 0x3077;\\n  t.pukatakana = 0x30d7;\\n  t.pvsquare = 0x33b4;\\n  t.pwsquare = 0x33ba;\\n  t.q = 0x0071;\\n  t.qadeva = 0x0958;\\n  t.qadmahebrew = 0x05a8;\\n  t.qafarabic = 0x0642;\\n  t.qaffinalarabic = 0xfed6;\\n  t.qafinitialarabic = 0xfed7;\\n  t.qafmedialarabic = 0xfed8;\\n  t.qamats = 0x05b8;\\n  t.qamats10 = 0x05b8;\\n  t.qamats1a = 0x05b8;\\n  t.qamats1c = 0x05b8;\\n  t.qamats27 = 0x05b8;\\n  t.qamats29 = 0x05b8;\\n  t.qamats33 = 0x05b8;\\n  t.qamatsde = 0x05b8;\\n  t.qamatshebrew = 0x05b8;\\n  t.qamatsnarrowhebrew = 0x05b8;\\n  t.qamatsqatanhebrew = 0x05b8;\\n  t.qamatsqatannarrowhebrew = 0x05b8;\\n  t.qamatsqatanquarterhebrew = 0x05b8;\\n  t.qamatsqatanwidehebrew = 0x05b8;\\n  t.qamatsquarterhebrew = 0x05b8;\\n  t.qamatswidehebrew = 0x05b8;\\n  t.qarneyparahebrew = 0x059f;\\n  t.qbopomofo = 0x3111;\\n  t.qcircle = 0x24e0;\\n  t.qhook = 0x02a0;\\n  t.qmonospace = 0xff51;\\n  t.qof = 0x05e7;\\n  t.qofdagesh = 0xfb47;\\n  t.qofdageshhebrew = 0xfb47;\\n  t.qofhebrew = 0x05e7;\\n  t.qparen = 0x24ac;\\n  t.quarternote = 0x2669;\\n  t.qubuts = 0x05bb;\\n  t.qubuts18 = 0x05bb;\\n  t.qubuts25 = 0x05bb;\\n  t.qubuts31 = 0x05bb;\\n  t.qubutshebrew = 0x05bb;\\n  t.qubutsnarrowhebrew = 0x05bb;\\n  t.qubutsquarterhebrew = 0x05bb;\\n  t.qubutswidehebrew = 0x05bb;\\n  t.question = 0x003f;\\n  t.questionarabic = 0x061f;\\n  t.questionarmenian = 0x055e;\\n  t.questiondown = 0x00bf;\\n  t.questiondownsmall = 0xf7bf;\\n  t.questiongreek = 0x037e;\\n  t.questionmonospace = 0xff1f;\\n  t.questionsmall = 0xf73f;\\n  t.quotedbl = 0x0022;\\n  t.quotedblbase = 0x201e;\\n  t.quotedblleft = 0x201c;\\n  t.quotedblmonospace = 0xff02;\\n  t.quotedblprime = 0x301e;\\n  t.quotedblprimereversed = 0x301d;\\n  t.quotedblright = 0x201d;\\n  t.quoteleft = 0x2018;\\n  t.quoteleftreversed = 0x201b;\\n  t.quotereversed = 0x201b;\\n  t.quoteright = 0x2019;\\n  t.quoterightn = 0x0149;\\n  t.quotesinglbase = 0x201a;\\n  t.quotesingle = 0x0027;\\n  t.quotesinglemonospace = 0xff07;\\n  t.r = 0x0072;\\n  t.raarmenian = 0x057c;\\n  t.rabengali = 0x09b0;\\n  t.racute = 0x0155;\\n  t.radeva = 0x0930;\\n  t.radical = 0x221a;\\n  t.radicalex = 0xf8e5;\\n  t.radoverssquare = 0x33ae;\\n  t.radoverssquaredsquare = 0x33af;\\n  t.radsquare = 0x33ad;\\n  t.rafe = 0x05bf;\\n  t.rafehebrew = 0x05bf;\\n  t.ragujarati = 0x0ab0;\\n  t.ragurmukhi = 0x0a30;\\n  t.rahiragana = 0x3089;\\n  t.rakatakana = 0x30e9;\\n  t.rakatakanahalfwidth = 0xff97;\\n  t.ralowerdiagonalbengali = 0x09f1;\\n  t.ramiddlediagonalbengali = 0x09f0;\\n  t.ramshorn = 0x0264;\\n  t.ratio = 0x2236;\\n  t.rbopomofo = 0x3116;\\n  t.rcaron = 0x0159;\\n  t.rcedilla = 0x0157;\\n  t.rcircle = 0x24e1;\\n  t.rcommaaccent = 0x0157;\\n  t.rdblgrave = 0x0211;\\n  t.rdotaccent = 0x1e59;\\n  t.rdotbelow = 0x1e5b;\\n  t.rdotbelowmacron = 0x1e5d;\\n  t.referencemark = 0x203b;\\n  t.reflexsubset = 0x2286;\\n  t.reflexsuperset = 0x2287;\\n  t.registered = 0x00ae;\\n  t.registersans = 0xf8e8;\\n  t.registerserif = 0xf6da;\\n  t.reharabic = 0x0631;\\n  t.reharmenian = 0x0580;\\n  t.rehfinalarabic = 0xfeae;\\n  t.rehiragana = 0x308c;\\n  t.rekatakana = 0x30ec;\\n  t.rekatakanahalfwidth = 0xff9a;\\n  t.resh = 0x05e8;\\n  t.reshdageshhebrew = 0xfb48;\\n  t.reshhebrew = 0x05e8;\\n  t.reversedtilde = 0x223d;\\n  t.reviahebrew = 0x0597;\\n  t.reviamugrashhebrew = 0x0597;\\n  t.revlogicalnot = 0x2310;\\n  t.rfishhook = 0x027e;\\n  t.rfishhookreversed = 0x027f;\\n  t.rhabengali = 0x09dd;\\n  t.rhadeva = 0x095d;\\n  t.rho = 0x03c1;\\n  t.rhook = 0x027d;\\n  t.rhookturned = 0x027b;\\n  t.rhookturnedsuperior = 0x02b5;\\n  t.rhosymbolgreek = 0x03f1;\\n  t.rhotichookmod = 0x02de;\\n  t.rieulacirclekorean = 0x3271;\\n  t.rieulaparenkorean = 0x3211;\\n  t.rieulcirclekorean = 0x3263;\\n  t.rieulhieuhkorean = 0x3140;\\n  t.rieulkiyeokkorean = 0x313a;\\n  t.rieulkiyeoksioskorean = 0x3169;\\n  t.rieulkorean = 0x3139;\\n  t.rieulmieumkorean = 0x313b;\\n  t.rieulpansioskorean = 0x316c;\\n  t.rieulparenkorean = 0x3203;\\n  t.rieulphieuphkorean = 0x313f;\\n  t.rieulpieupkorean = 0x313c;\\n  t.rieulpieupsioskorean = 0x316b;\\n  t.rieulsioskorean = 0x313d;\\n  t.rieulthieuthkorean = 0x313e;\\n  t.rieultikeutkorean = 0x316a;\\n  t.rieulyeorinhieuhkorean = 0x316d;\\n  t.rightangle = 0x221f;\\n  t.righttackbelowcmb = 0x0319;\\n  t.righttriangle = 0x22bf;\\n  t.rihiragana = 0x308a;\\n  t.rikatakana = 0x30ea;\\n  t.rikatakanahalfwidth = 0xff98;\\n  t.ring = 0x02da;\\n  t.ringbelowcmb = 0x0325;\\n  t.ringcmb = 0x030a;\\n  t.ringhalfleft = 0x02bf;\\n  t.ringhalfleftarmenian = 0x0559;\\n  t.ringhalfleftbelowcmb = 0x031c;\\n  t.ringhalfleftcentered = 0x02d3;\\n  t.ringhalfright = 0x02be;\\n  t.ringhalfrightbelowcmb = 0x0339;\\n  t.ringhalfrightcentered = 0x02d2;\\n  t.rinvertedbreve = 0x0213;\\n  t.rittorusquare = 0x3351;\\n  t.rlinebelow = 0x1e5f;\\n  t.rlongleg = 0x027c;\\n  t.rlonglegturned = 0x027a;\\n  t.rmonospace = 0xff52;\\n  t.rohiragana = 0x308d;\\n  t.rokatakana = 0x30ed;\\n  t.rokatakanahalfwidth = 0xff9b;\\n  t.roruathai = 0x0e23;\\n  t.rparen = 0x24ad;\\n  t.rrabengali = 0x09dc;\\n  t.rradeva = 0x0931;\\n  t.rragurmukhi = 0x0a5c;\\n  t.rreharabic = 0x0691;\\n  t.rrehfinalarabic = 0xfb8d;\\n  t.rrvocalicbengali = 0x09e0;\\n  t.rrvocalicdeva = 0x0960;\\n  t.rrvocalicgujarati = 0x0ae0;\\n  t.rrvocalicvowelsignbengali = 0x09c4;\\n  t.rrvocalicvowelsigndeva = 0x0944;\\n  t.rrvocalicvowelsigngujarati = 0x0ac4;\\n  t.rsuperior = 0xf6f1;\\n  t.rtblock = 0x2590;\\n  t.rturned = 0x0279;\\n  t.rturnedsuperior = 0x02b4;\\n  t.ruhiragana = 0x308b;\\n  t.rukatakana = 0x30eb;\\n  t.rukatakanahalfwidth = 0xff99;\\n  t.rupeemarkbengali = 0x09f2;\\n  t.rupeesignbengali = 0x09f3;\\n  t.rupiah = 0xf6dd;\\n  t.ruthai = 0x0e24;\\n  t.rvocalicbengali = 0x098b;\\n  t.rvocalicdeva = 0x090b;\\n  t.rvocalicgujarati = 0x0a8b;\\n  t.rvocalicvowelsignbengali = 0x09c3;\\n  t.rvocalicvowelsigndeva = 0x0943;\\n  t.rvocalicvowelsigngujarati = 0x0ac3;\\n  t.s = 0x0073;\\n  t.sabengali = 0x09b8;\\n  t.sacute = 0x015b;\\n  t.sacutedotaccent = 0x1e65;\\n  t.sadarabic = 0x0635;\\n  t.sadeva = 0x0938;\\n  t.sadfinalarabic = 0xfeba;\\n  t.sadinitialarabic = 0xfebb;\\n  t.sadmedialarabic = 0xfebc;\\n  t.sagujarati = 0x0ab8;\\n  t.sagurmukhi = 0x0a38;\\n  t.sahiragana = 0x3055;\\n  t.sakatakana = 0x30b5;\\n  t.sakatakanahalfwidth = 0xff7b;\\n  t.sallallahoualayhewasallamarabic = 0xfdfa;\\n  t.samekh = 0x05e1;\\n  t.samekhdagesh = 0xfb41;\\n  t.samekhdageshhebrew = 0xfb41;\\n  t.samekhhebrew = 0x05e1;\\n  t.saraaathai = 0x0e32;\\n  t.saraaethai = 0x0e41;\\n  t.saraaimaimalaithai = 0x0e44;\\n  t.saraaimaimuanthai = 0x0e43;\\n  t.saraamthai = 0x0e33;\\n  t.saraathai = 0x0e30;\\n  t.saraethai = 0x0e40;\\n  t.saraiileftthai = 0xf886;\\n  t.saraiithai = 0x0e35;\\n  t.saraileftthai = 0xf885;\\n  t.saraithai = 0x0e34;\\n  t.saraothai = 0x0e42;\\n  t.saraueeleftthai = 0xf888;\\n  t.saraueethai = 0x0e37;\\n  t.saraueleftthai = 0xf887;\\n  t.sarauethai = 0x0e36;\\n  t.sarauthai = 0x0e38;\\n  t.sarauuthai = 0x0e39;\\n  t.sbopomofo = 0x3119;\\n  t.scaron = 0x0161;\\n  t.scarondotaccent = 0x1e67;\\n  t.scedilla = 0x015f;\\n  t.schwa = 0x0259;\\n  t.schwacyrillic = 0x04d9;\\n  t.schwadieresiscyrillic = 0x04db;\\n  t.schwahook = 0x025a;\\n  t.scircle = 0x24e2;\\n  t.scircumflex = 0x015d;\\n  t.scommaaccent = 0x0219;\\n  t.sdotaccent = 0x1e61;\\n  t.sdotbelow = 0x1e63;\\n  t.sdotbelowdotaccent = 0x1e69;\\n  t.seagullbelowcmb = 0x033c;\\n  t.second = 0x2033;\\n  t.secondtonechinese = 0x02ca;\\n  t.section = 0x00a7;\\n  t.seenarabic = 0x0633;\\n  t.seenfinalarabic = 0xfeb2;\\n  t.seeninitialarabic = 0xfeb3;\\n  t.seenmedialarabic = 0xfeb4;\\n  t.segol = 0x05b6;\\n  t.segol13 = 0x05b6;\\n  t.segol1f = 0x05b6;\\n  t.segol2c = 0x05b6;\\n  t.segolhebrew = 0x05b6;\\n  t.segolnarrowhebrew = 0x05b6;\\n  t.segolquarterhebrew = 0x05b6;\\n  t.segoltahebrew = 0x0592;\\n  t.segolwidehebrew = 0x05b6;\\n  t.seharmenian = 0x057d;\\n  t.sehiragana = 0x305b;\\n  t.sekatakana = 0x30bb;\\n  t.sekatakanahalfwidth = 0xff7e;\\n  t.semicolon = 0x003b;\\n  t.semicolonarabic = 0x061b;\\n  t.semicolonmonospace = 0xff1b;\\n  t.semicolonsmall = 0xfe54;\\n  t.semivoicedmarkkana = 0x309c;\\n  t.semivoicedmarkkanahalfwidth = 0xff9f;\\n  t.sentisquare = 0x3322;\\n  t.sentosquare = 0x3323;\\n  t.seven = 0x0037;\\n  t.sevenarabic = 0x0667;\\n  t.sevenbengali = 0x09ed;\\n  t.sevencircle = 0x2466;\\n  t.sevencircleinversesansserif = 0x2790;\\n  t.sevendeva = 0x096d;\\n  t.seveneighths = 0x215e;\\n  t.sevengujarati = 0x0aed;\\n  t.sevengurmukhi = 0x0a6d;\\n  t.sevenhackarabic = 0x0667;\\n  t.sevenhangzhou = 0x3027;\\n  t.sevenideographicparen = 0x3226;\\n  t.seveninferior = 0x2087;\\n  t.sevenmonospace = 0xff17;\\n  t.sevenoldstyle = 0xf737;\\n  t.sevenparen = 0x247a;\\n  t.sevenperiod = 0x248e;\\n  t.sevenpersian = 0x06f7;\\n  t.sevenroman = 0x2176;\\n  t.sevensuperior = 0x2077;\\n  t.seventeencircle = 0x2470;\\n  t.seventeenparen = 0x2484;\\n  t.seventeenperiod = 0x2498;\\n  t.seventhai = 0x0e57;\\n  t.sfthyphen = 0x00ad;\\n  t.shaarmenian = 0x0577;\\n  t.shabengali = 0x09b6;\\n  t.shacyrillic = 0x0448;\\n  t.shaddaarabic = 0x0651;\\n  t.shaddadammaarabic = 0xfc61;\\n  t.shaddadammatanarabic = 0xfc5e;\\n  t.shaddafathaarabic = 0xfc60;\\n  t.shaddakasraarabic = 0xfc62;\\n  t.shaddakasratanarabic = 0xfc5f;\\n  t.shade = 0x2592;\\n  t.shadedark = 0x2593;\\n  t.shadelight = 0x2591;\\n  t.shademedium = 0x2592;\\n  t.shadeva = 0x0936;\\n  t.shagujarati = 0x0ab6;\\n  t.shagurmukhi = 0x0a36;\\n  t.shalshelethebrew = 0x0593;\\n  t.shbopomofo = 0x3115;\\n  t.shchacyrillic = 0x0449;\\n  t.sheenarabic = 0x0634;\\n  t.sheenfinalarabic = 0xfeb6;\\n  t.sheeninitialarabic = 0xfeb7;\\n  t.sheenmedialarabic = 0xfeb8;\\n  t.sheicoptic = 0x03e3;\\n  t.sheqel = 0x20aa;\\n  t.sheqelhebrew = 0x20aa;\\n  t.sheva = 0x05b0;\\n  t.sheva115 = 0x05b0;\\n  t.sheva15 = 0x05b0;\\n  t.sheva22 = 0x05b0;\\n  t.sheva2e = 0x05b0;\\n  t.shevahebrew = 0x05b0;\\n  t.shevanarrowhebrew = 0x05b0;\\n  t.shevaquarterhebrew = 0x05b0;\\n  t.shevawidehebrew = 0x05b0;\\n  t.shhacyrillic = 0x04bb;\\n  t.shimacoptic = 0x03ed;\\n  t.shin = 0x05e9;\\n  t.shindagesh = 0xfb49;\\n  t.shindageshhebrew = 0xfb49;\\n  t.shindageshshindot = 0xfb2c;\\n  t.shindageshshindothebrew = 0xfb2c;\\n  t.shindageshsindot = 0xfb2d;\\n  t.shindageshsindothebrew = 0xfb2d;\\n  t.shindothebrew = 0x05c1;\\n  t.shinhebrew = 0x05e9;\\n  t.shinshindot = 0xfb2a;\\n  t.shinshindothebrew = 0xfb2a;\\n  t.shinsindot = 0xfb2b;\\n  t.shinsindothebrew = 0xfb2b;\\n  t.shook = 0x0282;\\n  t.sigma = 0x03c3;\\n  t.sigma1 = 0x03c2;\\n  t.sigmafinal = 0x03c2;\\n  t.sigmalunatesymbolgreek = 0x03f2;\\n  t.sihiragana = 0x3057;\\n  t.sikatakana = 0x30b7;\\n  t.sikatakanahalfwidth = 0xff7c;\\n  t.siluqhebrew = 0x05bd;\\n  t.siluqlefthebrew = 0x05bd;\\n  t.similar = 0x223c;\\n  t.sindothebrew = 0x05c2;\\n  t.siosacirclekorean = 0x3274;\\n  t.siosaparenkorean = 0x3214;\\n  t.sioscieuckorean = 0x317e;\\n  t.sioscirclekorean = 0x3266;\\n  t.sioskiyeokkorean = 0x317a;\\n  t.sioskorean = 0x3145;\\n  t.siosnieunkorean = 0x317b;\\n  t.siosparenkorean = 0x3206;\\n  t.siospieupkorean = 0x317d;\\n  t.siostikeutkorean = 0x317c;\\n  t.six = 0x0036;\\n  t.sixarabic = 0x0666;\\n  t.sixbengali = 0x09ec;\\n  t.sixcircle = 0x2465;\\n  t.sixcircleinversesansserif = 0x278f;\\n  t.sixdeva = 0x096c;\\n  t.sixgujarati = 0x0aec;\\n  t.sixgurmukhi = 0x0a6c;\\n  t.sixhackarabic = 0x0666;\\n  t.sixhangzhou = 0x3026;\\n  t.sixideographicparen = 0x3225;\\n  t.sixinferior = 0x2086;\\n  t.sixmonospace = 0xff16;\\n  t.sixoldstyle = 0xf736;\\n  t.sixparen = 0x2479;\\n  t.sixperiod = 0x248d;\\n  t.sixpersian = 0x06f6;\\n  t.sixroman = 0x2175;\\n  t.sixsuperior = 0x2076;\\n  t.sixteencircle = 0x246f;\\n  t.sixteencurrencydenominatorbengali = 0x09f9;\\n  t.sixteenparen = 0x2483;\\n  t.sixteenperiod = 0x2497;\\n  t.sixthai = 0x0e56;\\n  t.slash = 0x002f;\\n  t.slashmonospace = 0xff0f;\\n  t.slong = 0x017f;\\n  t.slongdotaccent = 0x1e9b;\\n  t.smileface = 0x263a;\\n  t.smonospace = 0xff53;\\n  t.sofpasuqhebrew = 0x05c3;\\n  t.softhyphen = 0x00ad;\\n  t.softsigncyrillic = 0x044c;\\n  t.sohiragana = 0x305d;\\n  t.sokatakana = 0x30bd;\\n  t.sokatakanahalfwidth = 0xff7f;\\n  t.soliduslongoverlaycmb = 0x0338;\\n  t.solidusshortoverlaycmb = 0x0337;\\n  t.sorusithai = 0x0e29;\\n  t.sosalathai = 0x0e28;\\n  t.sosothai = 0x0e0b;\\n  t.sosuathai = 0x0e2a;\\n  t.space = 0x0020;\\n  t.spacehackarabic = 0x0020;\\n  t.spade = 0x2660;\\n  t.spadesuitblack = 0x2660;\\n  t.spadesuitwhite = 0x2664;\\n  t.sparen = 0x24ae;\\n  t.squarebelowcmb = 0x033b;\\n  t.squarecc = 0x33c4;\\n  t.squarecm = 0x339d;\\n  t.squarediagonalcrosshatchfill = 0x25a9;\\n  t.squarehorizontalfill = 0x25a4;\\n  t.squarekg = 0x338f;\\n  t.squarekm = 0x339e;\\n  t.squarekmcapital = 0x33ce;\\n  t.squareln = 0x33d1;\\n  t.squarelog = 0x33d2;\\n  t.squaremg = 0x338e;\\n  t.squaremil = 0x33d5;\\n  t.squaremm = 0x339c;\\n  t.squaremsquared = 0x33a1;\\n  t.squareorthogonalcrosshatchfill = 0x25a6;\\n  t.squareupperlefttolowerrightfill = 0x25a7;\\n  t.squareupperrighttolowerleftfill = 0x25a8;\\n  t.squareverticalfill = 0x25a5;\\n  t.squarewhitewithsmallblack = 0x25a3;\\n  t.srsquare = 0x33db;\\n  t.ssabengali = 0x09b7;\\n  t.ssadeva = 0x0937;\\n  t.ssagujarati = 0x0ab7;\\n  t.ssangcieuckorean = 0x3149;\\n  t.ssanghieuhkorean = 0x3185;\\n  t.ssangieungkorean = 0x3180;\\n  t.ssangkiyeokkorean = 0x3132;\\n  t.ssangnieunkorean = 0x3165;\\n  t.ssangpieupkorean = 0x3143;\\n  t.ssangsioskorean = 0x3146;\\n  t.ssangtikeutkorean = 0x3138;\\n  t.ssuperior = 0xf6f2;\\n  t.sterling = 0x00a3;\\n  t.sterlingmonospace = 0xffe1;\\n  t.strokelongoverlaycmb = 0x0336;\\n  t.strokeshortoverlaycmb = 0x0335;\\n  t.subset = 0x2282;\\n  t.subsetnotequal = 0x228a;\\n  t.subsetorequal = 0x2286;\\n  t.succeeds = 0x227b;\\n  t.suchthat = 0x220b;\\n  t.suhiragana = 0x3059;\\n  t.sukatakana = 0x30b9;\\n  t.sukatakanahalfwidth = 0xff7d;\\n  t.sukunarabic = 0x0652;\\n  t.summation = 0x2211;\\n  t.sun = 0x263c;\\n  t.superset = 0x2283;\\n  t.supersetnotequal = 0x228b;\\n  t.supersetorequal = 0x2287;\\n  t.svsquare = 0x33dc;\\n  t.syouwaerasquare = 0x337c;\\n  t.t = 0x0074;\\n  t.tabengali = 0x09a4;\\n  t.tackdown = 0x22a4;\\n  t.tackleft = 0x22a3;\\n  t.tadeva = 0x0924;\\n  t.tagujarati = 0x0aa4;\\n  t.tagurmukhi = 0x0a24;\\n  t.taharabic = 0x0637;\\n  t.tahfinalarabic = 0xfec2;\\n  t.tahinitialarabic = 0xfec3;\\n  t.tahiragana = 0x305f;\\n  t.tahmedialarabic = 0xfec4;\\n  t.taisyouerasquare = 0x337d;\\n  t.takatakana = 0x30bf;\\n  t.takatakanahalfwidth = 0xff80;\\n  t.tatweelarabic = 0x0640;\\n  t.tau = 0x03c4;\\n  t.tav = 0x05ea;\\n  t.tavdages = 0xfb4a;\\n  t.tavdagesh = 0xfb4a;\\n  t.tavdageshhebrew = 0xfb4a;\\n  t.tavhebrew = 0x05ea;\\n  t.tbar = 0x0167;\\n  t.tbopomofo = 0x310a;\\n  t.tcaron = 0x0165;\\n  t.tccurl = 0x02a8;\\n  t.tcedilla = 0x0163;\\n  t.tcheharabic = 0x0686;\\n  t.tchehfinalarabic = 0xfb7b;\\n  t.tchehinitialarabic = 0xfb7c;\\n  t.tchehmedialarabic = 0xfb7d;\\n  t.tcircle = 0x24e3;\\n  t.tcircumflexbelow = 0x1e71;\\n  t.tcommaaccent = 0x0163;\\n  t.tdieresis = 0x1e97;\\n  t.tdotaccent = 0x1e6b;\\n  t.tdotbelow = 0x1e6d;\\n  t.tecyrillic = 0x0442;\\n  t.tedescendercyrillic = 0x04ad;\\n  t.teharabic = 0x062a;\\n  t.tehfinalarabic = 0xfe96;\\n  t.tehhahinitialarabic = 0xfca2;\\n  t.tehhahisolatedarabic = 0xfc0c;\\n  t.tehinitialarabic = 0xfe97;\\n  t.tehiragana = 0x3066;\\n  t.tehjeeminitialarabic = 0xfca1;\\n  t.tehjeemisolatedarabic = 0xfc0b;\\n  t.tehmarbutaarabic = 0x0629;\\n  t.tehmarbutafinalarabic = 0xfe94;\\n  t.tehmedialarabic = 0xfe98;\\n  t.tehmeeminitialarabic = 0xfca4;\\n  t.tehmeemisolatedarabic = 0xfc0e;\\n  t.tehnoonfinalarabic = 0xfc73;\\n  t.tekatakana = 0x30c6;\\n  t.tekatakanahalfwidth = 0xff83;\\n  t.telephone = 0x2121;\\n  t.telephoneblack = 0x260e;\\n  t.telishagedolahebrew = 0x05a0;\\n  t.telishaqetanahebrew = 0x05a9;\\n  t.tencircle = 0x2469;\\n  t.tenideographicparen = 0x3229;\\n  t.tenparen = 0x247d;\\n  t.tenperiod = 0x2491;\\n  t.tenroman = 0x2179;\\n  t.tesh = 0x02a7;\\n  t.tet = 0x05d8;\\n  t.tetdagesh = 0xfb38;\\n  t.tetdageshhebrew = 0xfb38;\\n  t.tethebrew = 0x05d8;\\n  t.tetsecyrillic = 0x04b5;\\n  t.tevirhebrew = 0x059b;\\n  t.tevirlefthebrew = 0x059b;\\n  t.thabengali = 0x09a5;\\n  t.thadeva = 0x0925;\\n  t.thagujarati = 0x0aa5;\\n  t.thagurmukhi = 0x0a25;\\n  t.thalarabic = 0x0630;\\n  t.thalfinalarabic = 0xfeac;\\n  t.thanthakhatlowleftthai = 0xf898;\\n  t.thanthakhatlowrightthai = 0xf897;\\n  t.thanthakhatthai = 0x0e4c;\\n  t.thanthakhatupperleftthai = 0xf896;\\n  t.theharabic = 0x062b;\\n  t.thehfinalarabic = 0xfe9a;\\n  t.thehinitialarabic = 0xfe9b;\\n  t.thehmedialarabic = 0xfe9c;\\n  t.thereexists = 0x2203;\\n  t.therefore = 0x2234;\\n  t.theta = 0x03b8;\\n  t.theta1 = 0x03d1;\\n  t.thetasymbolgreek = 0x03d1;\\n  t.thieuthacirclekorean = 0x3279;\\n  t.thieuthaparenkorean = 0x3219;\\n  t.thieuthcirclekorean = 0x326b;\\n  t.thieuthkorean = 0x314c;\\n  t.thieuthparenkorean = 0x320b;\\n  t.thirteencircle = 0x246c;\\n  t.thirteenparen = 0x2480;\\n  t.thirteenperiod = 0x2494;\\n  t.thonangmonthothai = 0x0e11;\\n  t.thook = 0x01ad;\\n  t.thophuthaothai = 0x0e12;\\n  t.thorn = 0x00fe;\\n  t.thothahanthai = 0x0e17;\\n  t.thothanthai = 0x0e10;\\n  t.thothongthai = 0x0e18;\\n  t.thothungthai = 0x0e16;\\n  t.thousandcyrillic = 0x0482;\\n  t.thousandsseparatorarabic = 0x066c;\\n  t.thousandsseparatorpersian = 0x066c;\\n  t.three = 0x0033;\\n  t.threearabic = 0x0663;\\n  t.threebengali = 0x09e9;\\n  t.threecircle = 0x2462;\\n  t.threecircleinversesansserif = 0x278c;\\n  t.threedeva = 0x0969;\\n  t.threeeighths = 0x215c;\\n  t.threegujarati = 0x0ae9;\\n  t.threegurmukhi = 0x0a69;\\n  t.threehackarabic = 0x0663;\\n  t.threehangzhou = 0x3023;\\n  t.threeideographicparen = 0x3222;\\n  t.threeinferior = 0x2083;\\n  t.threemonospace = 0xff13;\\n  t.threenumeratorbengali = 0x09f6;\\n  t.threeoldstyle = 0xf733;\\n  t.threeparen = 0x2476;\\n  t.threeperiod = 0x248a;\\n  t.threepersian = 0x06f3;\\n  t.threequarters = 0x00be;\\n  t.threequartersemdash = 0xf6de;\\n  t.threeroman = 0x2172;\\n  t.threesuperior = 0x00b3;\\n  t.threethai = 0x0e53;\\n  t.thzsquare = 0x3394;\\n  t.tihiragana = 0x3061;\\n  t.tikatakana = 0x30c1;\\n  t.tikatakanahalfwidth = 0xff81;\\n  t.tikeutacirclekorean = 0x3270;\\n  t.tikeutaparenkorean = 0x3210;\\n  t.tikeutcirclekorean = 0x3262;\\n  t.tikeutkorean = 0x3137;\\n  t.tikeutparenkorean = 0x3202;\\n  t.tilde = 0x02dc;\\n  t.tildebelowcmb = 0x0330;\\n  t.tildecmb = 0x0303;\\n  t.tildecomb = 0x0303;\\n  t.tildedoublecmb = 0x0360;\\n  t.tildeoperator = 0x223c;\\n  t.tildeoverlaycmb = 0x0334;\\n  t.tildeverticalcmb = 0x033e;\\n  t.timescircle = 0x2297;\\n  t.tipehahebrew = 0x0596;\\n  t.tipehalefthebrew = 0x0596;\\n  t.tippigurmukhi = 0x0a70;\\n  t.titlocyrilliccmb = 0x0483;\\n  t.tiwnarmenian = 0x057f;\\n  t.tlinebelow = 0x1e6f;\\n  t.tmonospace = 0xff54;\\n  t.toarmenian = 0x0569;\\n  t.tohiragana = 0x3068;\\n  t.tokatakana = 0x30c8;\\n  t.tokatakanahalfwidth = 0xff84;\\n  t.tonebarextrahighmod = 0x02e5;\\n  t.tonebarextralowmod = 0x02e9;\\n  t.tonebarhighmod = 0x02e6;\\n  t.tonebarlowmod = 0x02e8;\\n  t.tonebarmidmod = 0x02e7;\\n  t.tonefive = 0x01bd;\\n  t.tonesix = 0x0185;\\n  t.tonetwo = 0x01a8;\\n  t.tonos = 0x0384;\\n  t.tonsquare = 0x3327;\\n  t.topatakthai = 0x0e0f;\\n  t.tortoiseshellbracketleft = 0x3014;\\n  t.tortoiseshellbracketleftsmall = 0xfe5d;\\n  t.tortoiseshellbracketleftvertical = 0xfe39;\\n  t.tortoiseshellbracketright = 0x3015;\\n  t.tortoiseshellbracketrightsmall = 0xfe5e;\\n  t.tortoiseshellbracketrightvertical = 0xfe3a;\\n  t.totaothai = 0x0e15;\\n  t.tpalatalhook = 0x01ab;\\n  t.tparen = 0x24af;\\n  t.trademark = 0x2122;\\n  t.trademarksans = 0xf8ea;\\n  t.trademarkserif = 0xf6db;\\n  t.tretroflexhook = 0x0288;\\n  t.triagdn = 0x25bc;\\n  t.triaglf = 0x25c4;\\n  t.triagrt = 0x25ba;\\n  t.triagup = 0x25b2;\\n  t.ts = 0x02a6;\\n  t.tsadi = 0x05e6;\\n  t.tsadidagesh = 0xfb46;\\n  t.tsadidageshhebrew = 0xfb46;\\n  t.tsadihebrew = 0x05e6;\\n  t.tsecyrillic = 0x0446;\\n  t.tsere = 0x05b5;\\n  t.tsere12 = 0x05b5;\\n  t.tsere1e = 0x05b5;\\n  t.tsere2b = 0x05b5;\\n  t.tserehebrew = 0x05b5;\\n  t.tserenarrowhebrew = 0x05b5;\\n  t.tserequarterhebrew = 0x05b5;\\n  t.tserewidehebrew = 0x05b5;\\n  t.tshecyrillic = 0x045b;\\n  t.tsuperior = 0xf6f3;\\n  t.ttabengali = 0x099f;\\n  t.ttadeva = 0x091f;\\n  t.ttagujarati = 0x0a9f;\\n  t.ttagurmukhi = 0x0a1f;\\n  t.tteharabic = 0x0679;\\n  t.ttehfinalarabic = 0xfb67;\\n  t.ttehinitialarabic = 0xfb68;\\n  t.ttehmedialarabic = 0xfb69;\\n  t.tthabengali = 0x09a0;\\n  t.tthadeva = 0x0920;\\n  t.tthagujarati = 0x0aa0;\\n  t.tthagurmukhi = 0x0a20;\\n  t.tturned = 0x0287;\\n  t.tuhiragana = 0x3064;\\n  t.tukatakana = 0x30c4;\\n  t.tukatakanahalfwidth = 0xff82;\\n  t.tusmallhiragana = 0x3063;\\n  t.tusmallkatakana = 0x30c3;\\n  t.tusmallkatakanahalfwidth = 0xff6f;\\n  t.twelvecircle = 0x246b;\\n  t.twelveparen = 0x247f;\\n  t.twelveperiod = 0x2493;\\n  t.twelveroman = 0x217b;\\n  t.twentycircle = 0x2473;\\n  t.twentyhangzhou = 0x5344;\\n  t.twentyparen = 0x2487;\\n  t.twentyperiod = 0x249b;\\n  t.two = 0x0032;\\n  t.twoarabic = 0x0662;\\n  t.twobengali = 0x09e8;\\n  t.twocircle = 0x2461;\\n  t.twocircleinversesansserif = 0x278b;\\n  t.twodeva = 0x0968;\\n  t.twodotenleader = 0x2025;\\n  t.twodotleader = 0x2025;\\n  t.twodotleadervertical = 0xfe30;\\n  t.twogujarati = 0x0ae8;\\n  t.twogurmukhi = 0x0a68;\\n  t.twohackarabic = 0x0662;\\n  t.twohangzhou = 0x3022;\\n  t.twoideographicparen = 0x3221;\\n  t.twoinferior = 0x2082;\\n  t.twomonospace = 0xff12;\\n  t.twonumeratorbengali = 0x09f5;\\n  t.twooldstyle = 0xf732;\\n  t.twoparen = 0x2475;\\n  t.twoperiod = 0x2489;\\n  t.twopersian = 0x06f2;\\n  t.tworoman = 0x2171;\\n  t.twostroke = 0x01bb;\\n  t.twosuperior = 0x00b2;\\n  t.twothai = 0x0e52;\\n  t.twothirds = 0x2154;\\n  t.u = 0x0075;\\n  t.uacute = 0x00fa;\\n  t.ubar = 0x0289;\\n  t.ubengali = 0x0989;\\n  t.ubopomofo = 0x3128;\\n  t.ubreve = 0x016d;\\n  t.ucaron = 0x01d4;\\n  t.ucircle = 0x24e4;\\n  t.ucircumflex = 0x00fb;\\n  t.ucircumflexbelow = 0x1e77;\\n  t.ucyrillic = 0x0443;\\n  t.udattadeva = 0x0951;\\n  t.udblacute = 0x0171;\\n  t.udblgrave = 0x0215;\\n  t.udeva = 0x0909;\\n  t.udieresis = 0x00fc;\\n  t.udieresisacute = 0x01d8;\\n  t.udieresisbelow = 0x1e73;\\n  t.udieresiscaron = 0x01da;\\n  t.udieresiscyrillic = 0x04f1;\\n  t.udieresisgrave = 0x01dc;\\n  t.udieresismacron = 0x01d6;\\n  t.udotbelow = 0x1ee5;\\n  t.ugrave = 0x00f9;\\n  t.ugujarati = 0x0a89;\\n  t.ugurmukhi = 0x0a09;\\n  t.uhiragana = 0x3046;\\n  t.uhookabove = 0x1ee7;\\n  t.uhorn = 0x01b0;\\n  t.uhornacute = 0x1ee9;\\n  t.uhorndotbelow = 0x1ef1;\\n  t.uhorngrave = 0x1eeb;\\n  t.uhornhookabove = 0x1eed;\\n  t.uhorntilde = 0x1eef;\\n  t.uhungarumlaut = 0x0171;\\n  t.uhungarumlautcyrillic = 0x04f3;\\n  t.uinvertedbreve = 0x0217;\\n  t.ukatakana = 0x30a6;\\n  t.ukatakanahalfwidth = 0xff73;\\n  t.ukcyrillic = 0x0479;\\n  t.ukorean = 0x315c;\\n  t.umacron = 0x016b;\\n  t.umacroncyrillic = 0x04ef;\\n  t.umacrondieresis = 0x1e7b;\\n  t.umatragurmukhi = 0x0a41;\\n  t.umonospace = 0xff55;\\n  t.underscore = 0x005f;\\n  t.underscoredbl = 0x2017;\\n  t.underscoremonospace = 0xff3f;\\n  t.underscorevertical = 0xfe33;\\n  t.underscorewavy = 0xfe4f;\\n  t.union = 0x222a;\\n  t.universal = 0x2200;\\n  t.uogonek = 0x0173;\\n  t.uparen = 0x24b0;\\n  t.upblock = 0x2580;\\n  t.upperdothebrew = 0x05c4;\\n  t.upsilon = 0x03c5;\\n  t.upsilondieresis = 0x03cb;\\n  t.upsilondieresistonos = 0x03b0;\\n  t.upsilonlatin = 0x028a;\\n  t.upsilontonos = 0x03cd;\\n  t.uptackbelowcmb = 0x031d;\\n  t.uptackmod = 0x02d4;\\n  t.uragurmukhi = 0x0a73;\\n  t.uring = 0x016f;\\n  t.ushortcyrillic = 0x045e;\\n  t.usmallhiragana = 0x3045;\\n  t.usmallkatakana = 0x30a5;\\n  t.usmallkatakanahalfwidth = 0xff69;\\n  t.ustraightcyrillic = 0x04af;\\n  t.ustraightstrokecyrillic = 0x04b1;\\n  t.utilde = 0x0169;\\n  t.utildeacute = 0x1e79;\\n  t.utildebelow = 0x1e75;\\n  t.uubengali = 0x098a;\\n  t.uudeva = 0x090a;\\n  t.uugujarati = 0x0a8a;\\n  t.uugurmukhi = 0x0a0a;\\n  t.uumatragurmukhi = 0x0a42;\\n  t.uuvowelsignbengali = 0x09c2;\\n  t.uuvowelsigndeva = 0x0942;\\n  t.uuvowelsigngujarati = 0x0ac2;\\n  t.uvowelsignbengali = 0x09c1;\\n  t.uvowelsigndeva = 0x0941;\\n  t.uvowelsigngujarati = 0x0ac1;\\n  t.v = 0x0076;\\n  t.vadeva = 0x0935;\\n  t.vagujarati = 0x0ab5;\\n  t.vagurmukhi = 0x0a35;\\n  t.vakatakana = 0x30f7;\\n  t.vav = 0x05d5;\\n  t.vavdagesh = 0xfb35;\\n  t.vavdagesh65 = 0xfb35;\\n  t.vavdageshhebrew = 0xfb35;\\n  t.vavhebrew = 0x05d5;\\n  t.vavholam = 0xfb4b;\\n  t.vavholamhebrew = 0xfb4b;\\n  t.vavvavhebrew = 0x05f0;\\n  t.vavyodhebrew = 0x05f1;\\n  t.vcircle = 0x24e5;\\n  t.vdotbelow = 0x1e7f;\\n  t.vecyrillic = 0x0432;\\n  t.veharabic = 0x06a4;\\n  t.vehfinalarabic = 0xfb6b;\\n  t.vehinitialarabic = 0xfb6c;\\n  t.vehmedialarabic = 0xfb6d;\\n  t.vekatakana = 0x30f9;\\n  t.venus = 0x2640;\\n  t.verticalbar = 0x007c;\\n  t.verticallineabovecmb = 0x030d;\\n  t.verticallinebelowcmb = 0x0329;\\n  t.verticallinelowmod = 0x02cc;\\n  t.verticallinemod = 0x02c8;\\n  t.vewarmenian = 0x057e;\\n  t.vhook = 0x028b;\\n  t.vikatakana = 0x30f8;\\n  t.viramabengali = 0x09cd;\\n  t.viramadeva = 0x094d;\\n  t.viramagujarati = 0x0acd;\\n  t.visargabengali = 0x0983;\\n  t.visargadeva = 0x0903;\\n  t.visargagujarati = 0x0a83;\\n  t.vmonospace = 0xff56;\\n  t.voarmenian = 0x0578;\\n  t.voicediterationhiragana = 0x309e;\\n  t.voicediterationkatakana = 0x30fe;\\n  t.voicedmarkkana = 0x309b;\\n  t.voicedmarkkanahalfwidth = 0xff9e;\\n  t.vokatakana = 0x30fa;\\n  t.vparen = 0x24b1;\\n  t.vtilde = 0x1e7d;\\n  t.vturned = 0x028c;\\n  t.vuhiragana = 0x3094;\\n  t.vukatakana = 0x30f4;\\n  t.w = 0x0077;\\n  t.wacute = 0x1e83;\\n  t.waekorean = 0x3159;\\n  t.wahiragana = 0x308f;\\n  t.wakatakana = 0x30ef;\\n  t.wakatakanahalfwidth = 0xff9c;\\n  t.wakorean = 0x3158;\\n  t.wasmallhiragana = 0x308e;\\n  t.wasmallkatakana = 0x30ee;\\n  t.wattosquare = 0x3357;\\n  t.wavedash = 0x301c;\\n  t.wavyunderscorevertical = 0xfe34;\\n  t.wawarabic = 0x0648;\\n  t.wawfinalarabic = 0xfeee;\\n  t.wawhamzaabovearabic = 0x0624;\\n  t.wawhamzaabovefinalarabic = 0xfe86;\\n  t.wbsquare = 0x33dd;\\n  t.wcircle = 0x24e6;\\n  t.wcircumflex = 0x0175;\\n  t.wdieresis = 0x1e85;\\n  t.wdotaccent = 0x1e87;\\n  t.wdotbelow = 0x1e89;\\n  t.wehiragana = 0x3091;\\n  t.weierstrass = 0x2118;\\n  t.wekatakana = 0x30f1;\\n  t.wekorean = 0x315e;\\n  t.weokorean = 0x315d;\\n  t.wgrave = 0x1e81;\\n  t.whitebullet = 0x25e6;\\n  t.whitecircle = 0x25cb;\\n  t.whitecircleinverse = 0x25d9;\\n  t.whitecornerbracketleft = 0x300e;\\n  t.whitecornerbracketleftvertical = 0xfe43;\\n  t.whitecornerbracketright = 0x300f;\\n  t.whitecornerbracketrightvertical = 0xfe44;\\n  t.whitediamond = 0x25c7;\\n  t.whitediamondcontainingblacksmalldiamond = 0x25c8;\\n  t.whitedownpointingsmalltriangle = 0x25bf;\\n  t.whitedownpointingtriangle = 0x25bd;\\n  t.whiteleftpointingsmalltriangle = 0x25c3;\\n  t.whiteleftpointingtriangle = 0x25c1;\\n  t.whitelenticularbracketleft = 0x3016;\\n  t.whitelenticularbracketright = 0x3017;\\n  t.whiterightpointingsmalltriangle = 0x25b9;\\n  t.whiterightpointingtriangle = 0x25b7;\\n  t.whitesmallsquare = 0x25ab;\\n  t.whitesmilingface = 0x263a;\\n  t.whitesquare = 0x25a1;\\n  t.whitestar = 0x2606;\\n  t.whitetelephone = 0x260f;\\n  t.whitetortoiseshellbracketleft = 0x3018;\\n  t.whitetortoiseshellbracketright = 0x3019;\\n  t.whiteuppointingsmalltriangle = 0x25b5;\\n  t.whiteuppointingtriangle = 0x25b3;\\n  t.wihiragana = 0x3090;\\n  t.wikatakana = 0x30f0;\\n  t.wikorean = 0x315f;\\n  t.wmonospace = 0xff57;\\n  t.wohiragana = 0x3092;\\n  t.wokatakana = 0x30f2;\\n  t.wokatakanahalfwidth = 0xff66;\\n  t.won = 0x20a9;\\n  t.wonmonospace = 0xffe6;\\n  t.wowaenthai = 0x0e27;\\n  t.wparen = 0x24b2;\\n  t.wring = 0x1e98;\\n  t.wsuperior = 0x02b7;\\n  t.wturned = 0x028d;\\n  t.wynn = 0x01bf;\\n  t.x = 0x0078;\\n  t.xabovecmb = 0x033d;\\n  t.xbopomofo = 0x3112;\\n  t.xcircle = 0x24e7;\\n  t.xdieresis = 0x1e8d;\\n  t.xdotaccent = 0x1e8b;\\n  t.xeharmenian = 0x056d;\\n  t.xi = 0x03be;\\n  t.xmonospace = 0xff58;\\n  t.xparen = 0x24b3;\\n  t.xsuperior = 0x02e3;\\n  t.y = 0x0079;\\n  t.yaadosquare = 0x334e;\\n  t.yabengali = 0x09af;\\n  t.yacute = 0x00fd;\\n  t.yadeva = 0x092f;\\n  t.yaekorean = 0x3152;\\n  t.yagujarati = 0x0aaf;\\n  t.yagurmukhi = 0x0a2f;\\n  t.yahiragana = 0x3084;\\n  t.yakatakana = 0x30e4;\\n  t.yakatakanahalfwidth = 0xff94;\\n  t.yakorean = 0x3151;\\n  t.yamakkanthai = 0x0e4e;\\n  t.yasmallhiragana = 0x3083;\\n  t.yasmallkatakana = 0x30e3;\\n  t.yasmallkatakanahalfwidth = 0xff6c;\\n  t.yatcyrillic = 0x0463;\\n  t.ycircle = 0x24e8;\\n  t.ycircumflex = 0x0177;\\n  t.ydieresis = 0x00ff;\\n  t.ydotaccent = 0x1e8f;\\n  t.ydotbelow = 0x1ef5;\\n  t.yeharabic = 0x064a;\\n  t.yehbarreearabic = 0x06d2;\\n  t.yehbarreefinalarabic = 0xfbaf;\\n  t.yehfinalarabic = 0xfef2;\\n  t.yehhamzaabovearabic = 0x0626;\\n  t.yehhamzaabovefinalarabic = 0xfe8a;\\n  t.yehhamzaaboveinitialarabic = 0xfe8b;\\n  t.yehhamzaabovemedialarabic = 0xfe8c;\\n  t.yehinitialarabic = 0xfef3;\\n  t.yehmedialarabic = 0xfef4;\\n  t.yehmeeminitialarabic = 0xfcdd;\\n  t.yehmeemisolatedarabic = 0xfc58;\\n  t.yehnoonfinalarabic = 0xfc94;\\n  t.yehthreedotsbelowarabic = 0x06d1;\\n  t.yekorean = 0x3156;\\n  t.yen = 0x00a5;\\n  t.yenmonospace = 0xffe5;\\n  t.yeokorean = 0x3155;\\n  t.yeorinhieuhkorean = 0x3186;\\n  t.yerahbenyomohebrew = 0x05aa;\\n  t.yerahbenyomolefthebrew = 0x05aa;\\n  t.yericyrillic = 0x044b;\\n  t.yerudieresiscyrillic = 0x04f9;\\n  t.yesieungkorean = 0x3181;\\n  t.yesieungpansioskorean = 0x3183;\\n  t.yesieungsioskorean = 0x3182;\\n  t.yetivhebrew = 0x059a;\\n  t.ygrave = 0x1ef3;\\n  t.yhook = 0x01b4;\\n  t.yhookabove = 0x1ef7;\\n  t.yiarmenian = 0x0575;\\n  t.yicyrillic = 0x0457;\\n  t.yikorean = 0x3162;\\n  t.yinyang = 0x262f;\\n  t.yiwnarmenian = 0x0582;\\n  t.ymonospace = 0xff59;\\n  t.yod = 0x05d9;\\n  t.yoddagesh = 0xfb39;\\n  t.yoddageshhebrew = 0xfb39;\\n  t.yodhebrew = 0x05d9;\\n  t.yodyodhebrew = 0x05f2;\\n  t.yodyodpatahhebrew = 0xfb1f;\\n  t.yohiragana = 0x3088;\\n  t.yoikorean = 0x3189;\\n  t.yokatakana = 0x30e8;\\n  t.yokatakanahalfwidth = 0xff96;\\n  t.yokorean = 0x315b;\\n  t.yosmallhiragana = 0x3087;\\n  t.yosmallkatakana = 0x30e7;\\n  t.yosmallkatakanahalfwidth = 0xff6e;\\n  t.yotgreek = 0x03f3;\\n  t.yoyaekorean = 0x3188;\\n  t.yoyakorean = 0x3187;\\n  t.yoyakthai = 0x0e22;\\n  t.yoyingthai = 0x0e0d;\\n  t.yparen = 0x24b4;\\n  t.ypogegrammeni = 0x037a;\\n  t.ypogegrammenigreekcmb = 0x0345;\\n  t.yr = 0x01a6;\\n  t.yring = 0x1e99;\\n  t.ysuperior = 0x02b8;\\n  t.ytilde = 0x1ef9;\\n  t.yturned = 0x028e;\\n  t.yuhiragana = 0x3086;\\n  t.yuikorean = 0x318c;\\n  t.yukatakana = 0x30e6;\\n  t.yukatakanahalfwidth = 0xff95;\\n  t.yukorean = 0x3160;\\n  t.yusbigcyrillic = 0x046b;\\n  t.yusbigiotifiedcyrillic = 0x046d;\\n  t.yuslittlecyrillic = 0x0467;\\n  t.yuslittleiotifiedcyrillic = 0x0469;\\n  t.yusmallhiragana = 0x3085;\\n  t.yusmallkatakana = 0x30e5;\\n  t.yusmallkatakanahalfwidth = 0xff6d;\\n  t.yuyekorean = 0x318b;\\n  t.yuyeokorean = 0x318a;\\n  t.yyabengali = 0x09df;\\n  t.yyadeva = 0x095f;\\n  t.z = 0x007a;\\n  t.zaarmenian = 0x0566;\\n  t.zacute = 0x017a;\\n  t.zadeva = 0x095b;\\n  t.zagurmukhi = 0x0a5b;\\n  t.zaharabic = 0x0638;\\n  t.zahfinalarabic = 0xfec6;\\n  t.zahinitialarabic = 0xfec7;\\n  t.zahiragana = 0x3056;\\n  t.zahmedialarabic = 0xfec8;\\n  t.zainarabic = 0x0632;\\n  t.zainfinalarabic = 0xfeb0;\\n  t.zakatakana = 0x30b6;\\n  t.zaqefgadolhebrew = 0x0595;\\n  t.zaqefqatanhebrew = 0x0594;\\n  t.zarqahebrew = 0x0598;\\n  t.zayin = 0x05d6;\\n  t.zayindagesh = 0xfb36;\\n  t.zayindageshhebrew = 0xfb36;\\n  t.zayinhebrew = 0x05d6;\\n  t.zbopomofo = 0x3117;\\n  t.zcaron = 0x017e;\\n  t.zcircle = 0x24e9;\\n  t.zcircumflex = 0x1e91;\\n  t.zcurl = 0x0291;\\n  t.zdot = 0x017c;\\n  t.zdotaccent = 0x017c;\\n  t.zdotbelow = 0x1e93;\\n  t.zecyrillic = 0x0437;\\n  t.zedescendercyrillic = 0x0499;\\n  t.zedieresiscyrillic = 0x04df;\\n  t.zehiragana = 0x305c;\\n  t.zekatakana = 0x30bc;\\n  t.zero = 0x0030;\\n  t.zeroarabic = 0x0660;\\n  t.zerobengali = 0x09e6;\\n  t.zerodeva = 0x0966;\\n  t.zerogujarati = 0x0ae6;\\n  t.zerogurmukhi = 0x0a66;\\n  t.zerohackarabic = 0x0660;\\n  t.zeroinferior = 0x2080;\\n  t.zeromonospace = 0xff10;\\n  t.zerooldstyle = 0xf730;\\n  t.zeropersian = 0x06f0;\\n  t.zerosuperior = 0x2070;\\n  t.zerothai = 0x0e50;\\n  t.zerowidthjoiner = 0xfeff;\\n  t.zerowidthnonjoiner = 0x200c;\\n  t.zerowidthspace = 0x200b;\\n  t.zeta = 0x03b6;\\n  t.zhbopomofo = 0x3113;\\n  t.zhearmenian = 0x056a;\\n  t.zhebrevecyrillic = 0x04c2;\\n  t.zhecyrillic = 0x0436;\\n  t.zhedescendercyrillic = 0x0497;\\n  t.zhedieresiscyrillic = 0x04dd;\\n  t.zihiragana = 0x3058;\\n  t.zikatakana = 0x30b8;\\n  t.zinorhebrew = 0x05ae;\\n  t.zlinebelow = 0x1e95;\\n  t.zmonospace = 0xff5a;\\n  t.zohiragana = 0x305e;\\n  t.zokatakana = 0x30be;\\n  t.zparen = 0x24b5;\\n  t.zretroflexhook = 0x0290;\\n  t.zstroke = 0x01b6;\\n  t.zuhiragana = 0x305a;\\n  t.zukatakana = 0x30ba;\\n  t[\\\".notdef\\\"] = 0x0000;\\n\\n  \u002F\u002F TeX-specific glyph names.\\n  t.angbracketleftbig = 0x2329;\\n  t.angbracketleftBig = 0x2329;\\n  t.angbracketleftbigg = 0x2329;\\n  t.angbracketleftBigg = 0x2329;\\n  t.angbracketrightBig = 0x232a;\\n  t.angbracketrightbig = 0x232a;\\n  t.angbracketrightBigg = 0x232a;\\n  t.angbracketrightbigg = 0x232a;\\n  t.arrowhookleft = 0x21aa;\\n  t.arrowhookright = 0x21a9;\\n  t.arrowlefttophalf = 0x21bc;\\n  t.arrowleftbothalf = 0x21bd;\\n  t.arrownortheast = 0x2197;\\n  t.arrownorthwest = 0x2196;\\n  t.arrowrighttophalf = 0x21c0;\\n  t.arrowrightbothalf = 0x21c1;\\n  t.arrowsoutheast = 0x2198;\\n  t.arrowsouthwest = 0x2199;\\n  t.backslashbig = 0x2216;\\n  t.backslashBig = 0x2216;\\n  t.backslashBigg = 0x2216;\\n  t.backslashbigg = 0x2216;\\n  t.bardbl = 0x2016;\\n  t.bracehtipdownleft = 0xfe37;\\n  t.bracehtipdownright = 0xfe37;\\n  t.bracehtipupleft = 0xfe38;\\n  t.bracehtipupright = 0xfe38;\\n  t.braceleftBig = 0x007b;\\n  t.braceleftbig = 0x007b;\\n  t.braceleftbigg = 0x007b;\\n  t.braceleftBigg = 0x007b;\\n  t.bracerightBig = 0x007d;\\n  t.bracerightbig = 0x007d;\\n  t.bracerightbigg = 0x007d;\\n  t.bracerightBigg = 0x007d;\\n  t.bracketleftbig = 0x005b;\\n  t.bracketleftBig = 0x005b;\\n  t.bracketleftbigg = 0x005b;\\n  t.bracketleftBigg = 0x005b;\\n  t.bracketrightBig = 0x005d;\\n  t.bracketrightbig = 0x005d;\\n  t.bracketrightbigg = 0x005d;\\n  t.bracketrightBigg = 0x005d;\\n  t.ceilingleftbig = 0x2308;\\n  t.ceilingleftBig = 0x2308;\\n  t.ceilingleftBigg = 0x2308;\\n  t.ceilingleftbigg = 0x2308;\\n  t.ceilingrightbig = 0x2309;\\n  t.ceilingrightBig = 0x2309;\\n  t.ceilingrightbigg = 0x2309;\\n  t.ceilingrightBigg = 0x2309;\\n  t.circledotdisplay = 0x2299;\\n  t.circledottext = 0x2299;\\n  t.circlemultiplydisplay = 0x2297;\\n  t.circlemultiplytext = 0x2297;\\n  t.circleplusdisplay = 0x2295;\\n  t.circleplustext = 0x2295;\\n  t.contintegraldisplay = 0x222e;\\n  t.contintegraltext = 0x222e;\\n  t.coproductdisplay = 0x2210;\\n  t.coproducttext = 0x2210;\\n  t.floorleftBig = 0x230a;\\n  t.floorleftbig = 0x230a;\\n  t.floorleftbigg = 0x230a;\\n  t.floorleftBigg = 0x230a;\\n  t.floorrightbig = 0x230b;\\n  t.floorrightBig = 0x230b;\\n  t.floorrightBigg = 0x230b;\\n  t.floorrightbigg = 0x230b;\\n  t.hatwide = 0x0302;\\n  t.hatwider = 0x0302;\\n  t.hatwidest = 0x0302;\\n  t.intercal = 0x1d40;\\n  t.integraldisplay = 0x222b;\\n  t.integraltext = 0x222b;\\n  t.intersectiondisplay = 0x22c2;\\n  t.intersectiontext = 0x22c2;\\n  t.logicalanddisplay = 0x2227;\\n  t.logicalandtext = 0x2227;\\n  t.logicalordisplay = 0x2228;\\n  t.logicalortext = 0x2228;\\n  t.parenleftBig = 0x0028;\\n  t.parenleftbig = 0x0028;\\n  t.parenleftBigg = 0x0028;\\n  t.parenleftbigg = 0x0028;\\n  t.parenrightBig = 0x0029;\\n  t.parenrightbig = 0x0029;\\n  t.parenrightBigg = 0x0029;\\n  t.parenrightbigg = 0x0029;\\n  t.prime = 0x2032;\\n  t.productdisplay = 0x220f;\\n  t.producttext = 0x220f;\\n  t.radicalbig = 0x221a;\\n  t.radicalBig = 0x221a;\\n  t.radicalBigg = 0x221a;\\n  t.radicalbigg = 0x221a;\\n  t.radicalbt = 0x221a;\\n  t.radicaltp = 0x221a;\\n  t.radicalvertex = 0x221a;\\n  t.slashbig = 0x002f;\\n  t.slashBig = 0x002f;\\n  t.slashBigg = 0x002f;\\n  t.slashbigg = 0x002f;\\n  t.summationdisplay = 0x2211;\\n  t.summationtext = 0x2211;\\n  t.tildewide = 0x02dc;\\n  t.tildewider = 0x02dc;\\n  t.tildewidest = 0x02dc;\\n  t.uniondisplay = 0x22c3;\\n  t.unionmultidisplay = 0x228e;\\n  t.unionmultitext = 0x228e;\\n  t.unionsqdisplay = 0x2294;\\n  t.unionsqtext = 0x2294;\\n  t.uniontext = 0x22c3;\\n  t.vextenddouble = 0x2225;\\n  t.vextendsingle = 0x2223;\\n});\\n\\nconst getDingbatsGlyphsUnicode = getLookupTableFactory(function (t) {\\n  t.space = 0x0020;\\n  t.a1 = 0x2701;\\n  t.a2 = 0x2702;\\n  t.a202 = 0x2703;\\n  t.a3 = 0x2704;\\n  t.a4 = 0x260e;\\n  t.a5 = 0x2706;\\n  t.a119 = 0x2707;\\n  t.a118 = 0x2708;\\n  t.a117 = 0x2709;\\n  t.a11 = 0x261b;\\n  t.a12 = 0x261e;\\n  t.a13 = 0x270c;\\n  t.a14 = 0x270d;\\n  t.a15 = 0x270e;\\n  t.a16 = 0x270f;\\n  t.a105 = 0x2710;\\n  t.a17 = 0x2711;\\n  t.a18 = 0x2712;\\n  t.a19 = 0x2713;\\n  t.a20 = 0x2714;\\n  t.a21 = 0x2715;\\n  t.a22 = 0x2716;\\n  t.a23 = 0x2717;\\n  t.a24 = 0x2718;\\n  t.a25 = 0x2719;\\n  t.a26 = 0x271a;\\n  t.a27 = 0x271b;\\n  t.a28 = 0x271c;\\n  t.a6 = 0x271d;\\n  t.a7 = 0x271e;\\n  t.a8 = 0x271f;\\n  t.a9 = 0x2720;\\n  t.a10 = 0x2721;\\n  t.a29 = 0x2722;\\n  t.a30 = 0x2723;\\n  t.a31 = 0x2724;\\n  t.a32 = 0x2725;\\n  t.a33 = 0x2726;\\n  t.a34 = 0x2727;\\n  t.a35 = 0x2605;\\n  t.a36 = 0x2729;\\n  t.a37 = 0x272a;\\n  t.a38 = 0x272b;\\n  t.a39 = 0x272c;\\n  t.a40 = 0x272d;\\n  t.a41 = 0x272e;\\n  t.a42 = 0x272f;\\n  t.a43 = 0x2730;\\n  t.a44 = 0x2731;\\n  t.a45 = 0x2732;\\n  t.a46 = 0x2733;\\n  t.a47 = 0x2734;\\n  t.a48 = 0x2735;\\n  t.a49 = 0x2736;\\n  t.a50 = 0x2737;\\n  t.a51 = 0x2738;\\n  t.a52 = 0x2739;\\n  t.a53 = 0x273a;\\n  t.a54 = 0x273b;\\n  t.a55 = 0x273c;\\n  t.a56 = 0x273d;\\n  t.a57 = 0x273e;\\n  t.a58 = 0x273f;\\n  t.a59 = 0x2740;\\n  t.a60 = 0x2741;\\n  t.a61 = 0x2742;\\n  t.a62 = 0x2743;\\n  t.a63 = 0x2744;\\n  t.a64 = 0x2745;\\n  t.a65 = 0x2746;\\n  t.a66 = 0x2747;\\n  t.a67 = 0x2748;\\n  t.a68 = 0x2749;\\n  t.a69 = 0x274a;\\n  t.a70 = 0x274b;\\n  t.a71 = 0x25cf;\\n  t.a72 = 0x274d;\\n  t.a73 = 0x25a0;\\n  t.a74 = 0x274f;\\n  t.a203 = 0x2750;\\n  t.a75 = 0x2751;\\n  t.a204 = 0x2752;\\n  t.a76 = 0x25b2;\\n  t.a77 = 0x25bc;\\n  t.a78 = 0x25c6;\\n  t.a79 = 0x2756;\\n  t.a81 = 0x25d7;\\n  t.a82 = 0x2758;\\n  t.a83 = 0x2759;\\n  t.a84 = 0x275a;\\n  t.a97 = 0x275b;\\n  t.a98 = 0x275c;\\n  t.a99 = 0x275d;\\n  t.a100 = 0x275e;\\n  t.a101 = 0x2761;\\n  t.a102 = 0x2762;\\n  t.a103 = 0x2763;\\n  t.a104 = 0x2764;\\n  t.a106 = 0x2765;\\n  t.a107 = 0x2766;\\n  t.a108 = 0x2767;\\n  t.a112 = 0x2663;\\n  t.a111 = 0x2666;\\n  t.a110 = 0x2665;\\n  t.a109 = 0x2660;\\n  t.a120 = 0x2460;\\n  t.a121 = 0x2461;\\n  t.a122 = 0x2462;\\n  t.a123 = 0x2463;\\n  t.a124 = 0x2464;\\n  t.a125 = 0x2465;\\n  t.a126 = 0x2466;\\n  t.a127 = 0x2467;\\n  t.a128 = 0x2468;\\n  t.a129 = 0x2469;\\n  t.a130 = 0x2776;\\n  t.a131 = 0x2777;\\n  t.a132 = 0x2778;\\n  t.a133 = 0x2779;\\n  t.a134 = 0x277a;\\n  t.a135 = 0x277b;\\n  t.a136 = 0x277c;\\n  t.a137 = 0x277d;\\n  t.a138 = 0x277e;\\n  t.a139 = 0x277f;\\n  t.a140 = 0x2780;\\n  t.a141 = 0x2781;\\n  t.a142 = 0x2782;\\n  t.a143 = 0x2783;\\n  t.a144 = 0x2784;\\n  t.a145 = 0x2785;\\n  t.a146 = 0x2786;\\n  t.a147 = 0x2787;\\n  t.a148 = 0x2788;\\n  t.a149 = 0x2789;\\n  t.a150 = 0x278a;\\n  t.a151 = 0x278b;\\n  t.a152 = 0x278c;\\n  t.a153 = 0x278d;\\n  t.a154 = 0x278e;\\n  t.a155 = 0x278f;\\n  t.a156 = 0x2790;\\n  t.a157 = 0x2791;\\n  t.a158 = 0x2792;\\n  t.a159 = 0x2793;\\n  t.a160 = 0x2794;\\n  t.a161 = 0x2192;\\n  t.a163 = 0x2194;\\n  t.a164 = 0x2195;\\n  t.a196 = 0x2798;\\n  t.a165 = 0x2799;\\n  t.a192 = 0x279a;\\n  t.a166 = 0x279b;\\n  t.a167 = 0x279c;\\n  t.a168 = 0x279d;\\n  t.a169 = 0x279e;\\n  t.a170 = 0x279f;\\n  t.a171 = 0x27a0;\\n  t.a172 = 0x27a1;\\n  t.a173 = 0x27a2;\\n  t.a162 = 0x27a3;\\n  t.a174 = 0x27a4;\\n  t.a175 = 0x27a5;\\n  t.a176 = 0x27a6;\\n  t.a177 = 0x27a7;\\n  t.a178 = 0x27a8;\\n  t.a179 = 0x27a9;\\n  t.a193 = 0x27aa;\\n  t.a180 = 0x27ab;\\n  t.a199 = 0x27ac;\\n  t.a181 = 0x27ad;\\n  t.a200 = 0x27ae;\\n  t.a182 = 0x27af;\\n  t.a201 = 0x27b1;\\n  t.a183 = 0x27b2;\\n  t.a184 = 0x27b3;\\n  t.a197 = 0x27b4;\\n  t.a185 = 0x27b5;\\n  t.a194 = 0x27b6;\\n  t.a198 = 0x27b7;\\n  t.a186 = 0x27b8;\\n  t.a195 = 0x27b9;\\n  t.a187 = 0x27ba;\\n  t.a188 = 0x27bb;\\n  t.a189 = 0x27bc;\\n  t.a190 = 0x27bd;\\n  t.a191 = 0x27be;\\n  t.a89 = 0x2768; \u002F\u002F 0xF8D7\\n  t.a90 = 0x2769; \u002F\u002F 0xF8D8\\n  t.a93 = 0x276a; \u002F\u002F 0xF8D9\\n  t.a94 = 0x276b; \u002F\u002F 0xF8DA\\n  t.a91 = 0x276c; \u002F\u002F 0xF8DB\\n  t.a92 = 0x276d; \u002F\u002F 0xF8DC\\n  t.a205 = 0x276e; \u002F\u002F 0xF8DD\\n  t.a85 = 0x276f; \u002F\u002F 0xF8DE\\n  t.a206 = 0x2770; \u002F\u002F 0xF8DF\\n  t.a86 = 0x2771; \u002F\u002F 0xF8E0\\n  t.a87 = 0x2772; \u002F\u002F 0xF8E1\\n  t.a88 = 0x2773; \u002F\u002F 0xF8E2\\n  t.a95 = 0x2774; \u002F\u002F 0xF8E3\\n  t.a96 = 0x2775; \u002F\u002F 0xF8E4\\n  t[\\\".notdef\\\"] = 0x0000;\\n});\\n\\nexport { getDingbatsGlyphsUnicode, getGlyphsUnicode };\\n\",\"\u002F* Copyright 2016 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { getLookupTableFactory } from \\\".\u002Fcore_utils.js\\\";\\n\\n\u002F\u002F Some characters, e.g. copyrightserif, are mapped to the private use area\\n\u002F\u002F and might not be displayed using standard fonts. Mapping\u002Fhacking well-known\\n\u002F\u002F chars to the similar equivalents in the normal characters range.\\nconst getSpecialPUASymbols = getLookupTableFactory(function (t) {\\n  t[63721] = 0x00a9; \u002F\u002F copyrightsans (0xF8E9) => copyright\\n  t[63193] = 0x00a9; \u002F\u002F copyrightserif (0xF6D9) => copyright\\n  t[63720] = 0x00ae; \u002F\u002F registersans (0xF8E8) => registered\\n  t[63194] = 0x00ae; \u002F\u002F registerserif (0xF6DA) => registered\\n  t[63722] = 0x2122; \u002F\u002F trademarksans (0xF8EA) => trademark\\n  t[63195] = 0x2122; \u002F\u002F trademarkserif (0xF6DB) => trademark\\n  t[63729] = 0x23a7; \u002F\u002F bracelefttp (0xF8F1)\\n  t[63730] = 0x23a8; \u002F\u002F braceleftmid (0xF8F2)\\n  t[63731] = 0x23a9; \u002F\u002F braceleftbt (0xF8F3)\\n  t[63740] = 0x23ab; \u002F\u002F bracerighttp (0xF8FC)\\n  t[63741] = 0x23ac; \u002F\u002F bracerightmid (0xF8FD)\\n  t[63742] = 0x23ad; \u002F\u002F bracerightbt (0xF8FE)\\n  t[63726] = 0x23a1; \u002F\u002F bracketlefttp (0xF8EE)\\n  t[63727] = 0x23a2; \u002F\u002F bracketleftex (0xF8EF)\\n  t[63728] = 0x23a3; \u002F\u002F bracketleftbt (0xF8F0)\\n  t[63737] = 0x23a4; \u002F\u002F bracketrighttp (0xF8F9)\\n  t[63738] = 0x23a5; \u002F\u002F bracketrightex (0xF8FA)\\n  t[63739] = 0x23a6; \u002F\u002F bracketrightbt (0xF8FB)\\n  t[63723] = 0x239b; \u002F\u002F parenlefttp (0xF8EB)\\n  t[63724] = 0x239c; \u002F\u002F parenleftex (0xF8EC)\\n  t[63725] = 0x239d; \u002F\u002F parenleftbt (0xF8ED)\\n  t[63734] = 0x239e; \u002F\u002F parenrighttp (0xF8F6)\\n  t[63735] = 0x239f; \u002F\u002F parenrightex (0xF8F7)\\n  t[63736] = 0x23a0; \u002F\u002F parenrightbt (0xF8F8)\\n});\\n\\nfunction mapSpecialUnicodeValues(code) {\\n  if (code >= 0xfff0 && code \u003C= 0xffff) {\\n    \u002F\u002F Specials unicode block.\\n    return 0;\\n  } else if (code >= 0xf600 && code \u003C= 0xf8ff) {\\n    return getSpecialPUASymbols()[code] || code;\\n  } else if (code === \u002F* softhyphen = *\u002F 0x00ad) {\\n    return 0x002d; \u002F\u002F hyphen\\n  }\\n  return code;\\n}\\n\\nfunction getUnicodeForGlyph(name, glyphsUnicodeMap) {\\n  let unicode = glyphsUnicodeMap[name];\\n  if (unicode !== undefined) {\\n    return unicode;\\n  }\\n  if (!name) {\\n    return -1;\\n  }\\n  \u002F\u002F Try to recover valid Unicode values from 'uniXXXX'\u002F'uXXXX{XX}' glyphs.\\n  if (name[0] === \\\"u\\\") {\\n    const nameLen = name.length;\\n    let hexStr;\\n\\n    if (nameLen === 7 && name[1] === \\\"n\\\" && name[2] === \\\"i\\\") {\\n      \u002F\u002F 'uniXXXX'\\n      hexStr = name.substring(3);\\n    } else if (nameLen >= 5 && nameLen \u003C= 7) {\\n      \u002F\u002F 'uXXXX{XX}'\\n      hexStr = name.substring(1);\\n    } else {\\n      return -1;\\n    }\\n    \u002F\u002F Check for upper-case hexadecimal characters, to avoid false positives.\\n    if (hexStr === hexStr.toUpperCase()) {\\n      unicode = parseInt(hexStr, 16);\\n      if (unicode >= 0) {\\n        return unicode;\\n      }\\n    }\\n  }\\n  return -1;\\n}\\n\\n\u002F\u002F See https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Ftypography\u002Fopentype\u002Fspec\u002Fos2#ulunicoderange1-bits-031ulunicoderange2-bits-3263ulunicoderange3-bits-6495ulunicoderange4-bits-96127\\nconst UnicodeRanges = [\\n  [0x0000, 0x007f], \u002F\u002F 0 - Basic Latin\\n  [0x0080, 0x00ff], \u002F\u002F 1 - Latin-1 Supplement\\n  [0x0100, 0x017f], \u002F\u002F 2 - Latin Extended-A\\n  [0x0180, 0x024f], \u002F\u002F 3 - Latin Extended-B\\n  [0x0250, 0x02af, 0x1d00, 0x1d7f, 0x1d80, 0x1dbf], \u002F\u002F 4 - IPA Extensions - Phonetic Extensions - Phonetic Extensions Supplement\\n  [0x02b0, 0x02ff, 0xa700, 0xa71f], \u002F\u002F 5 - Spacing Modifier Letters - Modifier Tone Letters\\n  [0x0300, 0x036f, 0x1dc0, 0x1dff], \u002F\u002F 6 - Combining Diacritical Marks - Combining Diacritical Marks Supplement\\n  [0x0370, 0x03ff], \u002F\u002F 7 - Greek and Coptic\\n  [0x2c80, 0x2cff], \u002F\u002F 8 - Coptic\\n  [0x0400, 0x04ff, 0x0500, 0x052f, 0x2de0, 0x2dff, 0xa640, 0xa69f], \u002F\u002F 9 - Cyrillic - Cyrillic Supplement - Cyrillic Extended-A - Cyrillic Extended-B\\n  [0x0530, 0x058f], \u002F\u002F 10 - Armenian\\n  [0x0590, 0x05ff], \u002F\u002F 11 - Hebrew\\n  [0xa500, 0xa63f], \u002F\u002F 12 - Vai\\n  [0x0600, 0x06ff, 0x0750, 0x077f], \u002F\u002F 13 - Arabic - Arabic Supplement\\n  [0x07c0, 0x07ff], \u002F\u002F 14 - NKo\\n  [0x0900, 0x097f], \u002F\u002F 15 - Devanagari\\n  [0x0980, 0x09ff], \u002F\u002F 16 - Bengali\\n  [0x0a00, 0x0a7f], \u002F\u002F 17 - Gurmukhi\\n  [0x0a80, 0x0aff], \u002F\u002F 18 - Gujarati\\n  [0x0b00, 0x0b7f], \u002F\u002F 19 - Oriya\\n  [0x0b80, 0x0bff], \u002F\u002F 20 - Tamil\\n  [0x0c00, 0x0c7f], \u002F\u002F 21 - Telugu\\n  [0x0c80, 0x0cff], \u002F\u002F 22 - Kannada\\n  [0x0d00, 0x0d7f], \u002F\u002F 23 - Malayalam\\n  [0x0e00, 0x0e7f], \u002F\u002F 24 - Thai\\n  [0x0e80, 0x0eff], \u002F\u002F 25 - Lao\\n  [0x10a0, 0x10ff, 0x2d00, 0x2d2f], \u002F\u002F 26 - Georgian - Georgian Supplement\\n  [0x1b00, 0x1b7f], \u002F\u002F 27 - Balinese\\n  [0x1100, 0x11ff], \u002F\u002F 28 - Hangul Jamo\\n  [0x1e00, 0x1eff, 0x2c60, 0x2c7f, 0xa720, 0xa7ff], \u002F\u002F 29 - Latin Extended Additional - Latin Extended-C - Latin Extended-D\\n  [0x1f00, 0x1fff], \u002F\u002F 30 - Greek Extended\\n  [0x2000, 0x206f, 0x2e00, 0x2e7f], \u002F\u002F 31 - General Punctuation - Supplemental Punctuation\\n  [0x2070, 0x209f], \u002F\u002F 32 - Superscripts And Subscripts\\n  [0x20a0, 0x20cf], \u002F\u002F 33 - Currency Symbol\\n  [0x20d0, 0x20ff], \u002F\u002F 34 - Combining Diacritical Marks\\n  [0x2100, 0x214f], \u002F\u002F 35 - Letterlike Symbols\\n  [0x2150, 0x218f], \u002F\u002F 36 - Number Forms\\n  [0x2190, 0x21ff, 0x27f0, 0x27ff, 0x2900, 0x297f, 0x2b00, 0x2bff], \u002F\u002F 37 - Arrows - Supplemental Arrows-A - Supplemental Arrows-B - Miscellaneous Symbols and Arrows\\n  [0x2200, 0x22ff, 0x2a00, 0x2aff, 0x27c0, 0x27ef, 0x2980, 0x29ff], \u002F\u002F 38 - Mathematical Operators - Supplemental Mathematical Operators - Miscellaneous Mathematical Symbols-A - Miscellaneous Mathematical Symbols-B\\n  [0x2300, 0x23ff], \u002F\u002F 39 - Miscellaneous Technical\\n  [0x2400, 0x243f], \u002F\u002F 40 - Control Pictures\\n  [0x2440, 0x245f], \u002F\u002F 41 - Optical Character Recognition\\n  [0x2460, 0x24ff], \u002F\u002F 42 - Enclosed Alphanumerics\\n  [0x2500, 0x257f], \u002F\u002F 43 - Box Drawing\\n  [0x2580, 0x259f], \u002F\u002F 44 - Block Elements\\n  [0x25a0, 0x25ff], \u002F\u002F 45 - Geometric Shapes\\n  [0x2600, 0x26ff], \u002F\u002F 46 - Miscellaneous Symbols\\n  [0x2700, 0x27bf], \u002F\u002F 47 - Dingbats\\n  [0x3000, 0x303f], \u002F\u002F 48 - CJK Symbols And Punctuation\\n  [0x3040, 0x309f], \u002F\u002F 49 - Hiragana\\n  [0x30a0, 0x30ff, 0x31f0, 0x31ff], \u002F\u002F 50 - Katakana - Katakana Phonetic Extensions\\n  [0x3100, 0x312f, 0x31a0, 0x31bf], \u002F\u002F 51 - Bopomofo - Bopomofo Extended\\n  [0x3130, 0x318f], \u002F\u002F 52 - Hangul Compatibility Jamo\\n  [0xa840, 0xa87f], \u002F\u002F 53 - Phags-pa\\n  [0x3200, 0x32ff], \u002F\u002F 54 - Enclosed CJK Letters And Months\\n  [0x3300, 0x33ff], \u002F\u002F 55 - CJK Compatibility\\n  [0xac00, 0xd7af], \u002F\u002F 56 - Hangul Syllables\\n  [0xd800, 0xdfff], \u002F\u002F 57 - Non-Plane 0 *\\n  [0x10900, 0x1091f], \u002F\u002F 58 - Phoenicia\\n  [\\n    0x4e00, 0x9fff, 0x2e80, 0x2eff, 0x2f00, 0x2fdf, 0x2ff0, 0x2fff, 0x3400,\\n    0x4dbf, 0x20000, 0x2a6df, 0x3190, 0x319f,\\n  ], \u002F\u002F 59 - CJK Unified Ideographs - CJK Radicals Supplement - Kangxi Radicals - Ideographic Description Characters - CJK Unified Ideographs Extension A - CJK Unified Ideographs Extension B - Kanbun\\n  [0xe000, 0xf8ff], \u002F\u002F 60 - Private Use Area (plane 0)\\n  [0x31c0, 0x31ef, 0xf900, 0xfaff, 0x2f800, 0x2fa1f], \u002F\u002F 61 - CJK Strokes - CJK Compatibility Ideographs - CJK Compatibility Ideographs Supplement\\n  [0xfb00, 0xfb4f], \u002F\u002F 62 - Alphabetic Presentation Forms\\n  [0xfb50, 0xfdff], \u002F\u002F 63 - Arabic Presentation Forms-A\\n  [0xfe20, 0xfe2f], \u002F\u002F 64 - Combining Half Marks\\n  [0xfe10, 0xfe1f], \u002F\u002F 65 - Vertical Forms\\n  [0xfe50, 0xfe6f], \u002F\u002F 66 - Small Form Variants\\n  [0xfe70, 0xfeff], \u002F\u002F 67 - Arabic Presentation Forms-B\\n  [0xff00, 0xffef], \u002F\u002F 68 - Halfwidth And Fullwidth Forms\\n  [0xfff0, 0xffff], \u002F\u002F 69 - Specials\\n  [0x0f00, 0x0fff], \u002F\u002F 70 - Tibetan\\n  [0x0700, 0x074f], \u002F\u002F 71 - Syriac\\n  [0x0780, 0x07bf], \u002F\u002F 72 - Thaana\\n  [0x0d80, 0x0dff], \u002F\u002F 73 - Sinhala\\n  [0x1000, 0x109f], \u002F\u002F 74 - Myanmar\\n  [0x1200, 0x137f, 0x1380, 0x139f, 0x2d80, 0x2ddf], \u002F\u002F 75 - Ethiopic - Ethiopic Supplement - Ethiopic Extended\\n  [0x13a0, 0x13ff], \u002F\u002F 76 - Cherokee\\n  [0x1400, 0x167f], \u002F\u002F 77 - Unified Canadian Aboriginal Syllabics\\n  [0x1680, 0x169f], \u002F\u002F 78 - Ogham\\n  [0x16a0, 0x16ff], \u002F\u002F 79 - Runic\\n  [0x1780, 0x17ff], \u002F\u002F 80 - Khmer\\n  [0x1800, 0x18af], \u002F\u002F 81 - Mongolian\\n  [0x2800, 0x28ff], \u002F\u002F 82 - Braille Patterns\\n  [0xa000, 0xa48f], \u002F\u002F 83 - Yi Syllables\\n  [0x1700, 0x171f, 0x1720, 0x173f, 0x1740, 0x175f, 0x1760, 0x177f], \u002F\u002F 84 - Tagalog - Hanunoo - Buhid - Tagbanwa\\n  [0x10300, 0x1032f], \u002F\u002F 85 - Old Italic\\n  [0x10330, 0x1034f], \u002F\u002F 86 - Gothic\\n  [0x10400, 0x1044f], \u002F\u002F 87 - Deseret\\n  [0x1d000, 0x1d0ff, 0x1d100, 0x1d1ff, 0x1d200, 0x1d24f], \u002F\u002F 88 - Byzantine Musical Symbols - Musical Symbols - Ancient Greek Musical Notation\\n  [0x1d400, 0x1d7ff], \u002F\u002F 89 - Mathematical Alphanumeric Symbols\\n  [0xff000, 0xffffd], \u002F\u002F 90 - Private Use (plane 15)\\n  [0xfe00, 0xfe0f, 0xe0100, 0xe01ef], \u002F\u002F 91 - Variation Selectors - Variation Selectors Supplement\\n  [0xe0000, 0xe007f], \u002F\u002F 92 - Tags\\n  [0x1900, 0x194f], \u002F\u002F 93 - Limbu\\n  [0x1950, 0x197f], \u002F\u002F 94 - Tai Le\\n  [0x1980, 0x19df], \u002F\u002F 95 - New Tai Lue\\n  [0x1a00, 0x1a1f], \u002F\u002F 96 - Buginese\\n  [0x2c00, 0x2c5f], \u002F\u002F 97 - Glagolitic\\n  [0x2d30, 0x2d7f], \u002F\u002F 98 - Tifinagh\\n  [0x4dc0, 0x4dff], \u002F\u002F 99 - Yijing Hexagram Symbols\\n  [0xa800, 0xa82f], \u002F\u002F 100 - Syloti Nagri\\n  [0x10000, 0x1007f, 0x10080, 0x100ff, 0x10100, 0x1013f], \u002F\u002F 101 - Linear B Syllabary - Linear B Ideograms - Aegean Numbers\\n  [0x10140, 0x1018f], \u002F\u002F 102 - Ancient Greek Numbers\\n  [0x10380, 0x1039f], \u002F\u002F 103 - Ugaritic\\n  [0x103a0, 0x103df], \u002F\u002F 104 - Old Persian\\n  [0x10450, 0x1047f], \u002F\u002F 105 - Shavian\\n  [0x10480, 0x104af], \u002F\u002F 106 - Osmanya\\n  [0x10800, 0x1083f], \u002F\u002F 107 - Cypriot Syllabary\\n  [0x10a00, 0x10a5f], \u002F\u002F 108 - Kharoshthi\\n  [0x1d300, 0x1d35f], \u002F\u002F 109 - Tai Xuan Jing Symbols\\n  [0x12000, 0x123ff, 0x12400, 0x1247f], \u002F\u002F 110 - Cuneiform - Cuneiform Numbers and Punctuation\\n  [0x1d360, 0x1d37f], \u002F\u002F 111 - Counting Rod Numerals\\n  [0x1b80, 0x1bbf], \u002F\u002F 112 - Sundanese\\n  [0x1c00, 0x1c4f], \u002F\u002F 113 - Lepcha\\n  [0x1c50, 0x1c7f], \u002F\u002F 114 - Ol Chiki\\n  [0xa880, 0xa8df], \u002F\u002F 115 - Saurashtra\\n  [0xa900, 0xa92f], \u002F\u002F 116 - Kayah Li\\n  [0xa930, 0xa95f], \u002F\u002F 117 - Rejang\\n  [0xaa00, 0xaa5f], \u002F\u002F 118 - Cham\\n  [0x10190, 0x101cf], \u002F\u002F 119 - Ancient Symbols\\n  [0x101d0, 0x101ff], \u002F\u002F 120 - Phaistos Disc\\n  [0x102a0, 0x102df, 0x10280, 0x1029f, 0x10920, 0x1093f], \u002F\u002F 121 - Carian - Lycian - Lydian\\n  [0x1f030, 0x1f09f, 0x1f000, 0x1f02f], \u002F\u002F 122 - Domino Tiles - Mahjong Tiles\\n];\\n\\nfunction getUnicodeRangeFor(value, lastPosition = -1) {\\n  \u002F\u002F TODO: create a map range => position, sort the ranges and cache it.\\n  \u002F\u002F Then we can make a binary search for finding a range for a given unicode.\\n  if (lastPosition !== -1) {\\n    const range = UnicodeRanges[lastPosition];\\n    for (let i = 0, ii = range.length; i \u003C ii; i += 2) {\\n      if (value >= range[i] && value \u003C= range[i + 1]) {\\n        return lastPosition;\\n      }\\n    }\\n  }\\n  for (let i = 0, ii = UnicodeRanges.length; i \u003C ii; i++) {\\n    const range = UnicodeRanges[i];\\n    for (let j = 0, jj = range.length; j \u003C jj; j += 2) {\\n      if (value >= range[j] && value \u003C= range[j + 1]) {\\n        return i;\\n      }\\n    }\\n  }\\n  return -1;\\n}\\n\\nconst SpecialCharRegExp = new RegExp(\\\"^(\\\\\\\\s)|(\\\\\\\\p{Mn})|(\\\\\\\\p{Cf})$\\\", \\\"u\\\");\\nconst CategoryCache = new Map();\\n\\nfunction getCharUnicodeCategory(char) {\\n  const cachedCategory = CategoryCache.get(char);\\n  if (cachedCategory) {\\n    return cachedCategory;\\n  }\\n  const groups = char.match(SpecialCharRegExp);\\n  const category = {\\n    isWhitespace: !!groups?.[1],\\n    isZeroWidthDiacritic: !!groups?.[2],\\n    isInvisibleFormatMark: !!groups?.[3],\\n  };\\n  CategoryCache.set(char, category);\\n  return category;\\n}\\n\\nfunction clearUnicodeCaches() {\\n  CategoryCache.clear();\\n}\\n\\nexport {\\n  clearUnicodeCaches,\\n  getCharUnicodeCategory,\\n  getUnicodeForGlyph,\\n  getUnicodeRangeFor,\\n  mapSpecialUnicodeValues,\\n};\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { getEncoding, StandardEncoding } from \\\".\u002Fencodings.js\\\";\\nimport { getGlyphsUnicode } from \\\".\u002Fglyphlist.js\\\";\\nimport { getUnicodeForGlyph } from \\\".\u002Funicode.js\\\";\\nimport { info } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\n\u002F\u002F Accented characters have issues on Windows and Linux. When this flag is\\n\u002F\u002F enabled glyphs that use seac and seac style endchar operators are truncated\\n\u002F\u002F and we instead just store the glyph id's of the base glyph and its accent to\\n\u002F\u002F be drawn individually.\\n\u002F\u002F Linux (freetype) requires that when a seac style endchar is used\\n\u002F\u002F that the charset must be a predefined one, however we build a\\n\u002F\u002F custom one. Windows just refuses to draw glyphs with seac operators.\\nconst SEAC_ANALYSIS_ENABLED = true;\\n\\nconst FontFlags = {\\n  FixedPitch: 1,\\n  Serif: 2,\\n  Symbolic: 4,\\n  Script: 8,\\n  Nonsymbolic: 32,\\n  Italic: 64,\\n  AllCap: 65536,\\n  SmallCap: 131072,\\n  ForceBold: 262144,\\n};\\n\\n\u002F\u002F prettier-ignore\\nconst MacStandardGlyphOrdering = [\\n  \\\".notdef\\\", \\\".null\\\", \\\"nonmarkingreturn\\\", \\\"space\\\", \\\"exclam\\\", \\\"quotedbl\\\",\\n  \\\"numbersign\\\", \\\"dollar\\\", \\\"percent\\\", \\\"ampersand\\\", \\\"quotesingle\\\", \\\"parenleft\\\",\\n  \\\"parenright\\\", \\\"asterisk\\\", \\\"plus\\\", \\\"comma\\\", \\\"hyphen\\\", \\\"period\\\", \\\"slash\\\",\\n  \\\"zero\\\", \\\"one\\\", \\\"two\\\", \\\"three\\\", \\\"four\\\", \\\"five\\\", \\\"six\\\", \\\"seven\\\", \\\"eight\\\",\\n  \\\"nine\\\", \\\"colon\\\", \\\"semicolon\\\", \\\"less\\\", \\\"equal\\\", \\\"greater\\\", \\\"question\\\", \\\"at\\\",\\n  \\\"A\\\", \\\"B\\\", \\\"C\\\", \\\"D\\\", \\\"E\\\", \\\"F\\\", \\\"G\\\", \\\"H\\\", \\\"I\\\", \\\"J\\\", \\\"K\\\", \\\"L\\\", \\\"M\\\", \\\"N\\\", \\\"O\\\",\\n  \\\"P\\\", \\\"Q\\\", \\\"R\\\", \\\"S\\\", \\\"T\\\", \\\"U\\\", \\\"V\\\", \\\"W\\\", \\\"X\\\", \\\"Y\\\", \\\"Z\\\", \\\"bracketleft\\\",\\n  \\\"backslash\\\", \\\"bracketright\\\", \\\"asciicircum\\\", \\\"underscore\\\", \\\"grave\\\", \\\"a\\\", \\\"b\\\",\\n  \\\"c\\\", \\\"d\\\", \\\"e\\\", \\\"f\\\", \\\"g\\\", \\\"h\\\", \\\"i\\\", \\\"j\\\", \\\"k\\\", \\\"l\\\", \\\"m\\\", \\\"n\\\", \\\"o\\\", \\\"p\\\", \\\"q\\\",\\n  \\\"r\\\", \\\"s\\\", \\\"t\\\", \\\"u\\\", \\\"v\\\", \\\"w\\\", \\\"x\\\", \\\"y\\\", \\\"z\\\", \\\"braceleft\\\", \\\"bar\\\", \\\"braceright\\\",\\n  \\\"asciitilde\\\", \\\"Adieresis\\\", \\\"Aring\\\", \\\"Ccedilla\\\", \\\"Eacute\\\", \\\"Ntilde\\\",\\n  \\\"Odieresis\\\", \\\"Udieresis\\\", \\\"aacute\\\", \\\"agrave\\\", \\\"acircumflex\\\", \\\"adieresis\\\",\\n  \\\"atilde\\\", \\\"aring\\\", \\\"ccedilla\\\", \\\"eacute\\\", \\\"egrave\\\", \\\"ecircumflex\\\", \\\"edieresis\\\",\\n  \\\"iacute\\\", \\\"igrave\\\", \\\"icircumflex\\\", \\\"idieresis\\\", \\\"ntilde\\\", \\\"oacute\\\", \\\"ograve\\\",\\n  \\\"ocircumflex\\\", \\\"odieresis\\\", \\\"otilde\\\", \\\"uacute\\\", \\\"ugrave\\\", \\\"ucircumflex\\\",\\n  \\\"udieresis\\\", \\\"dagger\\\", \\\"degree\\\", \\\"cent\\\", \\\"sterling\\\", \\\"section\\\", \\\"bullet\\\",\\n  \\\"paragraph\\\", \\\"germandbls\\\", \\\"registered\\\", \\\"copyright\\\", \\\"trademark\\\", \\\"acute\\\",\\n  \\\"dieresis\\\", \\\"notequal\\\", \\\"AE\\\", \\\"Oslash\\\", \\\"infinity\\\", \\\"plusminus\\\", \\\"lessequal\\\",\\n  \\\"greaterequal\\\", \\\"yen\\\", \\\"mu\\\", \\\"partialdiff\\\", \\\"summation\\\", \\\"product\\\", \\\"pi\\\",\\n  \\\"integral\\\", \\\"ordfeminine\\\", \\\"ordmasculine\\\", \\\"Omega\\\", \\\"ae\\\", \\\"oslash\\\",\\n  \\\"questiondown\\\", \\\"exclamdown\\\", \\\"logicalnot\\\", \\\"radical\\\", \\\"florin\\\",\\n  \\\"approxequal\\\", \\\"Delta\\\", \\\"guillemotleft\\\", \\\"guillemotright\\\", \\\"ellipsis\\\",\\n  \\\"nonbreakingspace\\\", \\\"Agrave\\\", \\\"Atilde\\\", \\\"Otilde\\\", \\\"OE\\\", \\\"oe\\\", \\\"endash\\\",\\n  \\\"emdash\\\", \\\"quotedblleft\\\", \\\"quotedblright\\\", \\\"quoteleft\\\", \\\"quoteright\\\",\\n  \\\"divide\\\", \\\"lozenge\\\", \\\"ydieresis\\\", \\\"Ydieresis\\\", \\\"fraction\\\", \\\"currency\\\",\\n  \\\"guilsinglleft\\\", \\\"guilsinglright\\\", \\\"fi\\\", \\\"fl\\\", \\\"daggerdbl\\\", \\\"periodcentered\\\",\\n  \\\"quotesinglbase\\\", \\\"quotedblbase\\\", \\\"perthousand\\\", \\\"Acircumflex\\\",\\n  \\\"Ecircumflex\\\", \\\"Aacute\\\", \\\"Edieresis\\\", \\\"Egrave\\\", \\\"Iacute\\\", \\\"Icircumflex\\\",\\n  \\\"Idieresis\\\", \\\"Igrave\\\", \\\"Oacute\\\", \\\"Ocircumflex\\\", \\\"apple\\\", \\\"Ograve\\\", \\\"Uacute\\\",\\n  \\\"Ucircumflex\\\", \\\"Ugrave\\\", \\\"dotlessi\\\", \\\"circumflex\\\", \\\"tilde\\\", \\\"macron\\\",\\n  \\\"breve\\\", \\\"dotaccent\\\", \\\"ring\\\", \\\"cedilla\\\", \\\"hungarumlaut\\\", \\\"ogonek\\\", \\\"caron\\\",\\n  \\\"Lslash\\\", \\\"lslash\\\", \\\"Scaron\\\", \\\"scaron\\\", \\\"Zcaron\\\", \\\"zcaron\\\", \\\"brokenbar\\\",\\n  \\\"Eth\\\", \\\"eth\\\", \\\"Yacute\\\", \\\"yacute\\\", \\\"Thorn\\\", \\\"thorn\\\", \\\"minus\\\", \\\"multiply\\\",\\n  \\\"onesuperior\\\", \\\"twosuperior\\\", \\\"threesuperior\\\", \\\"onehalf\\\", \\\"onequarter\\\",\\n  \\\"threequarters\\\", \\\"franc\\\", \\\"Gbreve\\\", \\\"gbreve\\\", \\\"Idotaccent\\\", \\\"Scedilla\\\",\\n  \\\"scedilla\\\", \\\"Cacute\\\", \\\"cacute\\\", \\\"Ccaron\\\", \\\"ccaron\\\", \\\"dcroat\\\"];\\n\\n\u002F\u002F Some bad PDF generators, e.g. Scribus PDF, include glyph names\\n\u002F\u002F in a 'uniXXXX' format -- attempting to recover proper ones.\\nfunction recoverGlyphName(name, glyphsUnicodeMap) {\\n  if (glyphsUnicodeMap[name] !== undefined) {\\n    return name;\\n  }\\n  \u002F\u002F The glyph name is non-standard, trying to recover.\\n  const unicode = getUnicodeForGlyph(name, glyphsUnicodeMap);\\n  if (unicode !== -1) {\\n    for (const key in glyphsUnicodeMap) {\\n      if (glyphsUnicodeMap[key] === unicode) {\\n        return key;\\n      }\\n    }\\n  }\\n  info(\\\"Unable to recover a standard glyph name for: \\\" + name);\\n  return name;\\n}\\n\\n\u002F**\\n * Shared logic for building a char code to glyph id mapping for Type1 and\\n * simple CFF fonts. See section 9.6.6.2 of the spec.\\n * @param {Object} properties Font properties object.\\n * @param {Object} builtInEncoding The encoding contained within the actual font\\n *   data.\\n * @param {Array} glyphNames Array of glyph names where the index is the\\n *   glyph ID.\\n * @returns {Object} A char code to glyph ID map.\\n *\u002F\\nfunction type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {\\n  const charCodeToGlyphId = Object.create(null);\\n  let glyphId, charCode, baseEncoding;\\n  const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\\n\\n  if (properties.isInternalFont) {\\n    baseEncoding = builtInEncoding;\\n    for (charCode = 0; charCode \u003C baseEncoding.length; charCode++) {\\n      glyphId = glyphNames.indexOf(baseEncoding[charCode]);\\n      charCodeToGlyphId[charCode] = glyphId >= 0 ? glyphId : \u002F* notdef = *\u002F 0;\\n    }\\n  } else if (properties.baseEncodingName) {\\n    \u002F\u002F If a valid base encoding name was used, the mapping is initialized with\\n    \u002F\u002F that.\\n    baseEncoding = getEncoding(properties.baseEncodingName);\\n    for (charCode = 0; charCode \u003C baseEncoding.length; charCode++) {\\n      glyphId = glyphNames.indexOf(baseEncoding[charCode]);\\n      charCodeToGlyphId[charCode] = glyphId >= 0 ? glyphId : \u002F* notdef = *\u002F 0;\\n    }\\n  } else if (isSymbolicFont) {\\n    \u002F\u002F For a symbolic font the encoding should be the fonts built-in encoding.\\n    for (charCode in builtInEncoding) {\\n      charCodeToGlyphId[charCode] = builtInEncoding[charCode];\\n    }\\n  } else {\\n    \u002F\u002F For non-symbolic fonts that don't have a base encoding the standard\\n    \u002F\u002F encoding should be used.\\n    baseEncoding = StandardEncoding;\\n    for (charCode = 0; charCode \u003C baseEncoding.length; charCode++) {\\n      glyphId = glyphNames.indexOf(baseEncoding[charCode]);\\n      charCodeToGlyphId[charCode] = glyphId >= 0 ? glyphId : \u002F* notdef = *\u002F 0;\\n    }\\n  }\\n\\n  \u002F\u002F Lastly, merge in the differences.\\n  const differences = properties.differences;\\n  let glyphsUnicodeMap;\\n  if (differences) {\\n    for (charCode in differences) {\\n      const glyphName = differences[charCode];\\n      glyphId = glyphNames.indexOf(glyphName);\\n\\n      if (glyphId === -1) {\\n        if (!glyphsUnicodeMap) {\\n          glyphsUnicodeMap = getGlyphsUnicode();\\n        }\\n        const standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\\n        if (standardGlyphName !== glyphName) {\\n          glyphId = glyphNames.indexOf(standardGlyphName);\\n        }\\n      }\\n      charCodeToGlyphId[charCode] = glyphId >= 0 ? glyphId : \u002F* notdef = *\u002F 0;\\n    }\\n  }\\n  return charCodeToGlyphId;\\n}\\n\\nfunction normalizeFontName(name) {\\n  return name.replaceAll(\u002F[,_]\u002Fg, \\\"-\\\").replaceAll(\u002F\\\\s\u002Fg, \\\"\\\");\\n}\\n\\nexport {\\n  FontFlags,\\n  MacStandardGlyphOrdering,\\n  normalizeFontName,\\n  recoverGlyphName,\\n  SEAC_ANALYSIS_ENABLED,\\n  type1FontGlyphMapping,\\n};\\n\",\"\u002F* Copyright 2015 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { getLookupTableFactory } from \\\".\u002Fcore_utils.js\\\";\\nimport { normalizeFontName } from \\\".\u002Ffonts_utils.js\\\";\\n\\n\u002F**\\n * Hold a map of decoded fonts and of the standard fourteen Type1\\n * fonts and their acronyms.\\n *\u002F\\nconst getStdFontMap = getLookupTableFactory(function (t) {\\n  \u002F\u002F The standard 14 fonts:\\n  t[\\\"Times-Roman\\\"] = \\\"Times-Roman\\\";\\n  t.Helvetica = \\\"Helvetica\\\";\\n  t.Courier = \\\"Courier\\\";\\n  t.Symbol = \\\"Symbol\\\";\\n  t[\\\"Times-Bold\\\"] = \\\"Times-Bold\\\";\\n  t[\\\"Helvetica-Bold\\\"] = \\\"Helvetica-Bold\\\";\\n  t[\\\"Courier-Bold\\\"] = \\\"Courier-Bold\\\";\\n  t.ZapfDingbats = \\\"ZapfDingbats\\\";\\n  t[\\\"Times-Italic\\\"] = \\\"Times-Italic\\\";\\n  t[\\\"Helvetica-Oblique\\\"] = \\\"Helvetica-Oblique\\\";\\n  t[\\\"Courier-Oblique\\\"] = \\\"Courier-Oblique\\\";\\n  t[\\\"Times-BoldItalic\\\"] = \\\"Times-BoldItalic\\\";\\n  t[\\\"Helvetica-BoldOblique\\\"] = \\\"Helvetica-BoldOblique\\\";\\n  t[\\\"Courier-BoldOblique\\\"] = \\\"Courier-BoldOblique\\\";\\n\\n  \u002F\u002F Extra mappings\\n  t.ArialNarrow = \\\"Helvetica\\\";\\n  t[\\\"ArialNarrow-Bold\\\"] = \\\"Helvetica-Bold\\\";\\n  t[\\\"ArialNarrow-BoldItalic\\\"] = \\\"Helvetica-BoldOblique\\\";\\n  t[\\\"ArialNarrow-Italic\\\"] = \\\"Helvetica-Oblique\\\";\\n  t.ArialBlack = \\\"Helvetica\\\";\\n  t[\\\"ArialBlack-Bold\\\"] = \\\"Helvetica-Bold\\\";\\n  t[\\\"ArialBlack-BoldItalic\\\"] = \\\"Helvetica-BoldOblique\\\";\\n  t[\\\"ArialBlack-Italic\\\"] = \\\"Helvetica-Oblique\\\";\\n  t[\\\"Arial-Black\\\"] = \\\"Helvetica\\\";\\n  t[\\\"Arial-Black-Bold\\\"] = \\\"Helvetica-Bold\\\";\\n  t[\\\"Arial-Black-BoldItalic\\\"] = \\\"Helvetica-BoldOblique\\\";\\n  t[\\\"Arial-Black-Italic\\\"] = \\\"Helvetica-Oblique\\\";\\n  t.Arial = \\\"Helvetica\\\";\\n  t[\\\"Arial-Bold\\\"] = \\\"Helvetica-Bold\\\";\\n  t[\\\"Arial-BoldItalic\\\"] = \\\"Helvetica-BoldOblique\\\";\\n  t[\\\"Arial-Italic\\\"] = \\\"Helvetica-Oblique\\\";\\n  t.ArialMT = \\\"Helvetica\\\";\\n  t[\\\"Arial-BoldItalicMT\\\"] = \\\"Helvetica-BoldOblique\\\";\\n  t[\\\"Arial-BoldMT\\\"] = \\\"Helvetica-Bold\\\";\\n  t[\\\"Arial-ItalicMT\\\"] = \\\"Helvetica-Oblique\\\";\\n  t[\\\"Arial-BoldItalicMT-BoldItalic\\\"] = \\\"Helvetica-BoldOblique\\\";\\n  t[\\\"Arial-BoldMT-Bold\\\"] = \\\"Helvetica-Bold\\\";\\n  t[\\\"Arial-ItalicMT-Italic\\\"] = \\\"Helvetica-Oblique\\\";\\n  t.ArialUnicodeMS = \\\"Helvetica\\\";\\n  t[\\\"ArialUnicodeMS-Bold\\\"] = \\\"Helvetica-Bold\\\";\\n  t[\\\"ArialUnicodeMS-BoldItalic\\\"] = \\\"Helvetica-BoldOblique\\\";\\n  t[\\\"ArialUnicodeMS-Italic\\\"] = \\\"Helvetica-Oblique\\\";\\n  t[\\\"Courier-BoldItalic\\\"] = \\\"Courier-BoldOblique\\\";\\n  t[\\\"Courier-Italic\\\"] = \\\"Courier-Oblique\\\";\\n  t.CourierNew = \\\"Courier\\\";\\n  t[\\\"CourierNew-Bold\\\"] = \\\"Courier-Bold\\\";\\n  t[\\\"CourierNew-BoldItalic\\\"] = \\\"Courier-BoldOblique\\\";\\n  t[\\\"CourierNew-Italic\\\"] = \\\"Courier-Oblique\\\";\\n  t[\\\"CourierNewPS-BoldItalicMT\\\"] = \\\"Courier-BoldOblique\\\";\\n  t[\\\"CourierNewPS-BoldMT\\\"] = \\\"Courier-Bold\\\";\\n  t[\\\"CourierNewPS-ItalicMT\\\"] = \\\"Courier-Oblique\\\";\\n  t.CourierNewPSMT = \\\"Courier\\\";\\n  t[\\\"Helvetica-BoldItalic\\\"] = \\\"Helvetica-BoldOblique\\\";\\n  t[\\\"Helvetica-Italic\\\"] = \\\"Helvetica-Oblique\\\";\\n  t[\\\"Symbol-Bold\\\"] = \\\"Symbol\\\";\\n  t[\\\"Symbol-BoldItalic\\\"] = \\\"Symbol\\\";\\n  t[\\\"Symbol-Italic\\\"] = \\\"Symbol\\\";\\n  t.TimesNewRoman = \\\"Times-Roman\\\";\\n  t[\\\"TimesNewRoman-Bold\\\"] = \\\"Times-Bold\\\";\\n  t[\\\"TimesNewRoman-BoldItalic\\\"] = \\\"Times-BoldItalic\\\";\\n  t[\\\"TimesNewRoman-Italic\\\"] = \\\"Times-Italic\\\";\\n  t.TimesNewRomanPS = \\\"Times-Roman\\\";\\n  t[\\\"TimesNewRomanPS-Bold\\\"] = \\\"Times-Bold\\\";\\n  t[\\\"TimesNewRomanPS-BoldItalic\\\"] = \\\"Times-BoldItalic\\\";\\n  t[\\\"TimesNewRomanPS-BoldItalicMT\\\"] = \\\"Times-BoldItalic\\\";\\n  t[\\\"TimesNewRomanPS-BoldMT\\\"] = \\\"Times-Bold\\\";\\n  t[\\\"TimesNewRomanPS-Italic\\\"] = \\\"Times-Italic\\\";\\n  t[\\\"TimesNewRomanPS-ItalicMT\\\"] = \\\"Times-Italic\\\";\\n  t.TimesNewRomanPSMT = \\\"Times-Roman\\\";\\n  t[\\\"TimesNewRomanPSMT-Bold\\\"] = \\\"Times-Bold\\\";\\n  t[\\\"TimesNewRomanPSMT-BoldItalic\\\"] = \\\"Times-BoldItalic\\\";\\n  t[\\\"TimesNewRomanPSMT-Italic\\\"] = \\\"Times-Italic\\\";\\n});\\n\\n\u002F\u002F Contains mapping for standard fonts and xfa fonts.\\nconst getFontNameToFileMap = getLookupTableFactory(function (t) {\\n  t.Courier = \\\"FoxitFixed.pfb\\\";\\n  t[\\\"Courier-Bold\\\"] = \\\"FoxitFixedBold.pfb\\\";\\n  t[\\\"Courier-BoldOblique\\\"] = \\\"FoxitFixedBoldItalic.pfb\\\";\\n  t[\\\"Courier-Oblique\\\"] = \\\"FoxitFixedItalic.pfb\\\";\\n  t.Helvetica = \\\"LiberationSans-Regular.ttf\\\";\\n  t[\\\"Helvetica-Bold\\\"] = \\\"LiberationSans-Bold.ttf\\\";\\n  t[\\\"Helvetica-BoldOblique\\\"] = \\\"LiberationSans-BoldItalic.ttf\\\";\\n  t[\\\"Helvetica-Oblique\\\"] = \\\"LiberationSans-Italic.ttf\\\";\\n  t[\\\"Times-Roman\\\"] = \\\"FoxitSerif.pfb\\\";\\n  t[\\\"Times-Bold\\\"] = \\\"FoxitSerifBold.pfb\\\";\\n  t[\\\"Times-BoldItalic\\\"] = \\\"FoxitSerifBoldItalic.pfb\\\";\\n  t[\\\"Times-Italic\\\"] = \\\"FoxitSerifItalic.pfb\\\";\\n  t.Symbol = \\\"FoxitSymbol.pfb\\\";\\n  t.ZapfDingbats = \\\"FoxitDingbats.pfb\\\";\\n  t[\\\"LiberationSans-Regular\\\"] = \\\"LiberationSans-Regular.ttf\\\";\\n  t[\\\"LiberationSans-Bold\\\"] = \\\"LiberationSans-Bold.ttf\\\";\\n  t[\\\"LiberationSans-Italic\\\"] = \\\"LiberationSans-Italic.ttf\\\";\\n  t[\\\"LiberationSans-BoldItalic\\\"] = \\\"LiberationSans-BoldItalic.ttf\\\";\\n});\\n\\n\u002F**\\n * Holds the map of the non-standard fonts that might be included as\\n * a standard fonts without glyph data.\\n *\u002F\\nconst getNonStdFontMap = getLookupTableFactory(function (t) {\\n  t.Calibri = \\\"Helvetica\\\";\\n  t[\\\"Calibri-Bold\\\"] = \\\"Helvetica-Bold\\\";\\n  t[\\\"Calibri-BoldItalic\\\"] = \\\"Helvetica-BoldOblique\\\";\\n  t[\\\"Calibri-Italic\\\"] = \\\"Helvetica-Oblique\\\";\\n  t.CenturyGothic = \\\"Helvetica\\\";\\n  t[\\\"CenturyGothic-Bold\\\"] = \\\"Helvetica-Bold\\\";\\n  t[\\\"CenturyGothic-BoldItalic\\\"] = \\\"Helvetica-BoldOblique\\\";\\n  t[\\\"CenturyGothic-Italic\\\"] = \\\"Helvetica-Oblique\\\";\\n  t.ComicSansMS = \\\"Comic Sans MS\\\";\\n  t[\\\"ComicSansMS-Bold\\\"] = \\\"Comic Sans MS-Bold\\\";\\n  t[\\\"ComicSansMS-BoldItalic\\\"] = \\\"Comic Sans MS-BoldItalic\\\";\\n  t[\\\"ComicSansMS-Italic\\\"] = \\\"Comic Sans MS-Italic\\\";\\n  t.Impact = \\\"Helvetica\\\";\\n  t[\\\"ItcSymbol-Bold\\\"] = \\\"Helvetica-Bold\\\";\\n  t[\\\"ItcSymbol-BoldItalic\\\"] = \\\"Helvetica-BoldOblique\\\";\\n  t[\\\"ItcSymbol-Book\\\"] = \\\"Helvetica\\\";\\n  t[\\\"ItcSymbol-BookItalic\\\"] = \\\"Helvetica-Oblique\\\";\\n  t[\\\"ItcSymbol-Medium\\\"] = \\\"Helvetica\\\";\\n  t[\\\"ItcSymbol-MediumItalic\\\"] = \\\"Helvetica-Oblique\\\";\\n  t.LucidaConsole = \\\"Courier\\\";\\n  t[\\\"LucidaConsole-Bold\\\"] = \\\"Courier-Bold\\\";\\n  t[\\\"LucidaConsole-BoldItalic\\\"] = \\\"Courier-BoldOblique\\\";\\n  t[\\\"LucidaConsole-Italic\\\"] = \\\"Courier-Oblique\\\";\\n  t[\\\"LucidaSans-Demi\\\"] = \\\"Helvetica-Bold\\\";\\n  t[\\\"MS-Gothic\\\"] = \\\"MS Gothic\\\";\\n  t[\\\"MS-Gothic-Bold\\\"] = \\\"MS Gothic-Bold\\\";\\n  t[\\\"MS-Gothic-BoldItalic\\\"] = \\\"MS Gothic-BoldItalic\\\";\\n  t[\\\"MS-Gothic-Italic\\\"] = \\\"MS Gothic-Italic\\\";\\n  t[\\\"MS-Mincho\\\"] = \\\"MS Mincho\\\";\\n  t[\\\"MS-Mincho-Bold\\\"] = \\\"MS Mincho-Bold\\\";\\n  t[\\\"MS-Mincho-BoldItalic\\\"] = \\\"MS Mincho-BoldItalic\\\";\\n  t[\\\"MS-Mincho-Italic\\\"] = \\\"MS Mincho-Italic\\\";\\n  t[\\\"MS-PGothic\\\"] = \\\"MS PGothic\\\";\\n  t[\\\"MS-PGothic-Bold\\\"] = \\\"MS PGothic-Bold\\\";\\n  t[\\\"MS-PGothic-BoldItalic\\\"] = \\\"MS PGothic-BoldItalic\\\";\\n  t[\\\"MS-PGothic-Italic\\\"] = \\\"MS PGothic-Italic\\\";\\n  t[\\\"MS-PMincho\\\"] = \\\"MS PMincho\\\";\\n  t[\\\"MS-PMincho-Bold\\\"] = \\\"MS PMincho-Bold\\\";\\n  t[\\\"MS-PMincho-BoldItalic\\\"] = \\\"MS PMincho-BoldItalic\\\";\\n  t[\\\"MS-PMincho-Italic\\\"] = \\\"MS PMincho-Italic\\\";\\n  t.NuptialScript = \\\"Times-Italic\\\";\\n  t.SegoeUISymbol = \\\"Helvetica\\\";\\n});\\n\\nconst getSerifFonts = getLookupTableFactory(function (t) {\\n  t[\\\"Adobe Jenson\\\"] = true;\\n  t[\\\"Adobe Text\\\"] = true;\\n  t.Albertus = true;\\n  t.Aldus = true;\\n  t.Alexandria = true;\\n  t.Algerian = true;\\n  t[\\\"American Typewriter\\\"] = true;\\n  t.Antiqua = true;\\n  t.Apex = true;\\n  t.Arno = true;\\n  t.Aster = true;\\n  t.Aurora = true;\\n  t.Baskerville = true;\\n  t.Bell = true;\\n  t.Bembo = true;\\n  t[\\\"Bembo Schoolbook\\\"] = true;\\n  t.Benguiat = true;\\n  t[\\\"Berkeley Old Style\\\"] = true;\\n  t[\\\"Bernhard Modern\\\"] = true;\\n  t[\\\"Berthold City\\\"] = true;\\n  t.Bodoni = true;\\n  t[\\\"Bauer Bodoni\\\"] = true;\\n  t[\\\"Book Antiqua\\\"] = true;\\n  t.Bookman = true;\\n  t[\\\"Bordeaux Roman\\\"] = true;\\n  t[\\\"Californian FB\\\"] = true;\\n  t.Calisto = true;\\n  t.Calvert = true;\\n  t.Capitals = true;\\n  t.Cambria = true;\\n  t.Cartier = true;\\n  t.Caslon = true;\\n  t.Catull = true;\\n  t.Centaur = true;\\n  t[\\\"Century Old Style\\\"] = true;\\n  t[\\\"Century Schoolbook\\\"] = true;\\n  t.Chaparral = true;\\n  t[\\\"Charis SIL\\\"] = true;\\n  t.Cheltenham = true;\\n  t[\\\"Cholla Slab\\\"] = true;\\n  t.Clarendon = true;\\n  t.Clearface = true;\\n  t.Cochin = true;\\n  t.Colonna = true;\\n  t[\\\"Computer Modern\\\"] = true;\\n  t[\\\"Concrete Roman\\\"] = true;\\n  t.Constantia = true;\\n  t[\\\"Cooper Black\\\"] = true;\\n  t.Corona = true;\\n  t.Ecotype = true;\\n  t.Egyptienne = true;\\n  t.Elephant = true;\\n  t.Excelsior = true;\\n  t.Fairfield = true;\\n  t[\\\"FF Scala\\\"] = true;\\n  t.Folkard = true;\\n  t.Footlight = true;\\n  t.FreeSerif = true;\\n  t[\\\"Friz Quadrata\\\"] = true;\\n  t.Garamond = true;\\n  t.Gentium = true;\\n  t.Georgia = true;\\n  t.Gloucester = true;\\n  t[\\\"Goudy Old Style\\\"] = true;\\n  t[\\\"Goudy Schoolbook\\\"] = true;\\n  t[\\\"Goudy Pro Font\\\"] = true;\\n  t.Granjon = true;\\n  t[\\\"Guardian Egyptian\\\"] = true;\\n  t.Heather = true;\\n  t.Hercules = true;\\n  t[\\\"High Tower Text\\\"] = true;\\n  t.Hiroshige = true;\\n  t[\\\"Hoefler Text\\\"] = true;\\n  t[\\\"Humana Serif\\\"] = true;\\n  t.Imprint = true;\\n  t[\\\"Ionic No. 5\\\"] = true;\\n  t.Janson = true;\\n  t.Joanna = true;\\n  t.Korinna = true;\\n  t.Lexicon = true;\\n  t.LiberationSerif = true;\\n  t[\\\"Liberation Serif\\\"] = true;\\n  t[\\\"Linux Libertine\\\"] = true;\\n  t.Literaturnaya = true;\\n  t.Lucida = true;\\n  t[\\\"Lucida Bright\\\"] = true;\\n  t.Melior = true;\\n  t.Memphis = true;\\n  t.Miller = true;\\n  t.Minion = true;\\n  t.Modern = true;\\n  t[\\\"Mona Lisa\\\"] = true;\\n  t[\\\"Mrs Eaves\\\"] = true;\\n  t[\\\"MS Serif\\\"] = true;\\n  t[\\\"Museo Slab\\\"] = true;\\n  t[\\\"New York\\\"] = true;\\n  t[\\\"Nimbus Roman\\\"] = true;\\n  t[\\\"NPS Rawlinson Roadway\\\"] = true;\\n  t.NuptialScript = true;\\n  t.Palatino = true;\\n  t.Perpetua = true;\\n  t.Plantin = true;\\n  t[\\\"Plantin Schoolbook\\\"] = true;\\n  t.Playbill = true;\\n  t[\\\"Poor Richard\\\"] = true;\\n  t[\\\"Rawlinson Roadway\\\"] = true;\\n  t.Renault = true;\\n  t.Requiem = true;\\n  t.Rockwell = true;\\n  t.Roman = true;\\n  t[\\\"Rotis Serif\\\"] = true;\\n  t.Sabon = true;\\n  t.Scala = true;\\n  t.Seagull = true;\\n  t.Sistina = true;\\n  t.Souvenir = true;\\n  t.STIX = true;\\n  t[\\\"Stone Informal\\\"] = true;\\n  t[\\\"Stone Serif\\\"] = true;\\n  t.Sylfaen = true;\\n  t.Times = true;\\n  t.Trajan = true;\\n  t[\\\"Trinité\\\"] = true;\\n  t[\\\"Trump Mediaeval\\\"] = true;\\n  t.Utopia = true;\\n  t[\\\"Vale Type\\\"] = true;\\n  t[\\\"Bitstream Vera\\\"] = true;\\n  t[\\\"Vera Serif\\\"] = true;\\n  t.Versailles = true;\\n  t.Wanted = true;\\n  t.Weiss = true;\\n  t[\\\"Wide Latin\\\"] = true;\\n  t.Windsor = true;\\n  t.XITS = true;\\n});\\n\\nconst getSymbolsFonts = getLookupTableFactory(function (t) {\\n  t.Dingbats = true;\\n  t.Symbol = true;\\n  t.ZapfDingbats = true;\\n  t.Wingdings = true;\\n  t[\\\"Wingdings-Bold\\\"] = true;\\n  t[\\\"Wingdings-Regular\\\"] = true;\\n});\\n\\n\u002F\u002F Glyph map for well-known standard fonts. Sometimes Ghostscript uses CID\\n\u002F\u002F fonts, but does not embed the CID to GID mapping. The mapping is incomplete\\n\u002F\u002F for all glyphs, but common for some set of the standard fonts.\\nconst getGlyphMapForStandardFonts = getLookupTableFactory(function (t) {\\n  t[2] = 10;\\n  t[3] = 32;\\n  t[4] = 33;\\n  t[5] = 34;\\n  t[6] = 35;\\n  t[7] = 36;\\n  t[8] = 37;\\n  t[9] = 38;\\n  t[10] = 39;\\n  t[11] = 40;\\n  t[12] = 41;\\n  t[13] = 42;\\n  t[14] = 43;\\n  t[15] = 44;\\n  t[16] = 45;\\n  t[17] = 46;\\n  t[18] = 47;\\n  t[19] = 48;\\n  t[20] = 49;\\n  t[21] = 50;\\n  t[22] = 51;\\n  t[23] = 52;\\n  t[24] = 53;\\n  t[25] = 54;\\n  t[26] = 55;\\n  t[27] = 56;\\n  t[28] = 57;\\n  t[29] = 58;\\n  t[30] = 894;\\n  t[31] = 60;\\n  t[32] = 61;\\n  t[33] = 62;\\n  t[34] = 63;\\n  t[35] = 64;\\n  t[36] = 65;\\n  t[37] = 66;\\n  t[38] = 67;\\n  t[39] = 68;\\n  t[40] = 69;\\n  t[41] = 70;\\n  t[42] = 71;\\n  t[43] = 72;\\n  t[44] = 73;\\n  t[45] = 74;\\n  t[46] = 75;\\n  t[47] = 76;\\n  t[48] = 77;\\n  t[49] = 78;\\n  t[50] = 79;\\n  t[51] = 80;\\n  t[52] = 81;\\n  t[53] = 82;\\n  t[54] = 83;\\n  t[55] = 84;\\n  t[56] = 85;\\n  t[57] = 86;\\n  t[58] = 87;\\n  t[59] = 88;\\n  t[60] = 89;\\n  t[61] = 90;\\n  t[62] = 91;\\n  t[63] = 92;\\n  t[64] = 93;\\n  t[65] = 94;\\n  t[66] = 95;\\n  t[67] = 96;\\n  t[68] = 97;\\n  t[69] = 98;\\n  t[70] = 99;\\n  t[71] = 100;\\n  t[72] = 101;\\n  t[73] = 102;\\n  t[74] = 103;\\n  t[75] = 104;\\n  t[76] = 105;\\n  t[77] = 106;\\n  t[78] = 107;\\n  t[79] = 108;\\n  t[80] = 109;\\n  t[81] = 110;\\n  t[82] = 111;\\n  t[83] = 112;\\n  t[84] = 113;\\n  t[85] = 114;\\n  t[86] = 115;\\n  t[87] = 116;\\n  t[88] = 117;\\n  t[89] = 118;\\n  t[90] = 119;\\n  t[91] = 120;\\n  t[92] = 121;\\n  t[93] = 122;\\n  t[94] = 123;\\n  t[95] = 124;\\n  t[96] = 125;\\n  t[97] = 126;\\n  t[98] = 196;\\n  t[99] = 197;\\n  t[100] = 199;\\n  t[101] = 201;\\n  t[102] = 209;\\n  t[103] = 214;\\n  t[104] = 220;\\n  t[105] = 225;\\n  t[106] = 224;\\n  t[107] = 226;\\n  t[108] = 228;\\n  t[109] = 227;\\n  t[110] = 229;\\n  t[111] = 231;\\n  t[112] = 233;\\n  t[113] = 232;\\n  t[114] = 234;\\n  t[115] = 235;\\n  t[116] = 237;\\n  t[117] = 236;\\n  t[118] = 238;\\n  t[119] = 239;\\n  t[120] = 241;\\n  t[121] = 243;\\n  t[122] = 242;\\n  t[123] = 244;\\n  t[124] = 246;\\n  t[125] = 245;\\n  t[126] = 250;\\n  t[127] = 249;\\n  t[128] = 251;\\n  t[129] = 252;\\n  t[130] = 8224;\\n  t[131] = 176;\\n  t[132] = 162;\\n  t[133] = 163;\\n  t[134] = 167;\\n  t[135] = 8226;\\n  t[136] = 182;\\n  t[137] = 223;\\n  t[138] = 174;\\n  t[139] = 169;\\n  t[140] = 8482;\\n  t[141] = 180;\\n  t[142] = 168;\\n  t[143] = 8800;\\n  t[144] = 198;\\n  t[145] = 216;\\n  t[146] = 8734;\\n  t[147] = 177;\\n  t[148] = 8804;\\n  t[149] = 8805;\\n  t[150] = 165;\\n  t[151] = 181;\\n  t[152] = 8706;\\n  t[153] = 8721;\\n  t[154] = 8719;\\n  t[156] = 8747;\\n  t[157] = 170;\\n  t[158] = 186;\\n  t[159] = 8486;\\n  t[160] = 230;\\n  t[161] = 248;\\n  t[162] = 191;\\n  t[163] = 161;\\n  t[164] = 172;\\n  t[165] = 8730;\\n  t[166] = 402;\\n  t[167] = 8776;\\n  t[168] = 8710;\\n  t[169] = 171;\\n  t[170] = 187;\\n  t[171] = 8230;\\n  t[179] = 8220;\\n  t[180] = 8221;\\n  t[181] = 8216;\\n  t[182] = 8217;\\n  t[200] = 193;\\n  t[203] = 205;\\n  t[207] = 211;\\n  t[210] = 218;\\n  t[223] = 711;\\n  t[224] = 321;\\n  t[225] = 322;\\n  t[226] = 352;\\n  t[227] = 353;\\n  t[228] = 381;\\n  t[229] = 382;\\n  t[233] = 221;\\n  t[234] = 253;\\n  t[252] = 263;\\n  t[253] = 268;\\n  t[254] = 269;\\n  t[258] = 258;\\n  t[260] = 260;\\n  t[261] = 261;\\n  t[265] = 280;\\n  t[266] = 281;\\n  t[267] = 282;\\n  t[268] = 283;\\n  t[269] = 313;\\n  t[275] = 323;\\n  t[276] = 324;\\n  t[278] = 328;\\n  t[283] = 344;\\n  t[284] = 345;\\n  t[285] = 346;\\n  t[286] = 347;\\n  t[292] = 367;\\n  t[295] = 377;\\n  t[296] = 378;\\n  t[298] = 380;\\n  t[305] = 963;\\n  t[306] = 964;\\n  t[307] = 966;\\n  t[308] = 8215;\\n  t[309] = 8252;\\n  t[310] = 8319;\\n  t[311] = 8359;\\n  t[312] = 8592;\\n  t[313] = 8593;\\n  t[337] = 9552;\\n  t[493] = 1039;\\n  t[494] = 1040;\\n  t[672] = 1488;\\n  t[673] = 1489;\\n  t[674] = 1490;\\n  t[675] = 1491;\\n  t[676] = 1492;\\n  t[677] = 1493;\\n  t[678] = 1494;\\n  t[679] = 1495;\\n  t[680] = 1496;\\n  t[681] = 1497;\\n  t[682] = 1498;\\n  t[683] = 1499;\\n  t[684] = 1500;\\n  t[685] = 1501;\\n  t[686] = 1502;\\n  t[687] = 1503;\\n  t[688] = 1504;\\n  t[689] = 1505;\\n  t[690] = 1506;\\n  t[691] = 1507;\\n  t[692] = 1508;\\n  t[693] = 1509;\\n  t[694] = 1510;\\n  t[695] = 1511;\\n  t[696] = 1512;\\n  t[697] = 1513;\\n  t[698] = 1514;\\n  t[705] = 1524;\\n  t[706] = 8362;\\n  t[710] = 64288;\\n  t[711] = 64298;\\n  t[759] = 1617;\\n  t[761] = 1776;\\n  t[763] = 1778;\\n  t[775] = 1652;\\n  t[777] = 1764;\\n  t[778] = 1780;\\n  t[779] = 1781;\\n  t[780] = 1782;\\n  t[782] = 771;\\n  t[783] = 64726;\\n  t[786] = 8363;\\n  t[788] = 8532;\\n  t[790] = 768;\\n  t[791] = 769;\\n  t[792] = 768;\\n  t[795] = 803;\\n  t[797] = 64336;\\n  t[798] = 64337;\\n  t[799] = 64342;\\n  t[800] = 64343;\\n  t[801] = 64344;\\n  t[802] = 64345;\\n  t[803] = 64362;\\n  t[804] = 64363;\\n  t[805] = 64364;\\n  t[2424] = 7821;\\n  t[2425] = 7822;\\n  t[2426] = 7823;\\n  t[2427] = 7824;\\n  t[2428] = 7825;\\n  t[2429] = 7826;\\n  t[2430] = 7827;\\n  t[2433] = 7682;\\n  t[2678] = 8045;\\n  t[2679] = 8046;\\n  t[2830] = 1552;\\n  t[2838] = 686;\\n  t[2840] = 751;\\n  t[2842] = 753;\\n  t[2843] = 754;\\n  t[2844] = 755;\\n  t[2846] = 757;\\n  t[2856] = 767;\\n  t[2857] = 848;\\n  t[2858] = 849;\\n  t[2862] = 853;\\n  t[2863] = 854;\\n  t[2864] = 855;\\n  t[2865] = 861;\\n  t[2866] = 862;\\n  t[2906] = 7460;\\n  t[2908] = 7462;\\n  t[2909] = 7463;\\n  t[2910] = 7464;\\n  t[2912] = 7466;\\n  t[2913] = 7467;\\n  t[2914] = 7468;\\n  t[2916] = 7470;\\n  t[2917] = 7471;\\n  t[2918] = 7472;\\n  t[2920] = 7474;\\n  t[2921] = 7475;\\n  t[2922] = 7476;\\n  t[2924] = 7478;\\n  t[2925] = 7479;\\n  t[2926] = 7480;\\n  t[2928] = 7482;\\n  t[2929] = 7483;\\n  t[2930] = 7484;\\n  t[2932] = 7486;\\n  t[2933] = 7487;\\n  t[2934] = 7488;\\n  t[2936] = 7490;\\n  t[2937] = 7491;\\n  t[2938] = 7492;\\n  t[2940] = 7494;\\n  t[2941] = 7495;\\n  t[2942] = 7496;\\n  t[2944] = 7498;\\n  t[2946] = 7500;\\n  t[2948] = 7502;\\n  t[2950] = 7504;\\n  t[2951] = 7505;\\n  t[2952] = 7506;\\n  t[2954] = 7508;\\n  t[2955] = 7509;\\n  t[2956] = 7510;\\n  t[2958] = 7512;\\n  t[2959] = 7513;\\n  t[2960] = 7514;\\n  t[2962] = 7516;\\n  t[2963] = 7517;\\n  t[2964] = 7518;\\n  t[2966] = 7520;\\n  t[2967] = 7521;\\n  t[2968] = 7522;\\n  t[2970] = 7524;\\n  t[2971] = 7525;\\n  t[2972] = 7526;\\n  t[2974] = 7528;\\n  t[2975] = 7529;\\n  t[2976] = 7530;\\n  t[2978] = 1537;\\n  t[2979] = 1538;\\n  t[2980] = 1539;\\n  t[2982] = 1549;\\n  t[2983] = 1551;\\n  t[2984] = 1552;\\n  t[2986] = 1554;\\n  t[2987] = 1555;\\n  t[2988] = 1556;\\n  t[2990] = 1623;\\n  t[2991] = 1624;\\n  t[2995] = 1775;\\n  t[2999] = 1791;\\n  t[3002] = 64290;\\n  t[3003] = 64291;\\n  t[3004] = 64292;\\n  t[3006] = 64294;\\n  t[3007] = 64295;\\n  t[3008] = 64296;\\n  t[3011] = 1900;\\n  t[3014] = 8223;\\n  t[3015] = 8244;\\n  t[3017] = 7532;\\n  t[3018] = 7533;\\n  t[3019] = 7534;\\n  t[3075] = 7590;\\n  t[3076] = 7591;\\n  t[3079] = 7594;\\n  t[3080] = 7595;\\n  t[3083] = 7598;\\n  t[3084] = 7599;\\n  t[3087] = 7602;\\n  t[3088] = 7603;\\n  t[3091] = 7606;\\n  t[3092] = 7607;\\n  t[3095] = 7610;\\n  t[3096] = 7611;\\n  t[3099] = 7614;\\n  t[3100] = 7615;\\n  t[3103] = 7618;\\n  t[3104] = 7619;\\n  t[3107] = 8337;\\n  t[3108] = 8338;\\n  t[3116] = 1884;\\n  t[3119] = 1885;\\n  t[3120] = 1885;\\n  t[3123] = 1886;\\n  t[3124] = 1886;\\n  t[3127] = 1887;\\n  t[3128] = 1887;\\n  t[3131] = 1888;\\n  t[3132] = 1888;\\n  t[3135] = 1889;\\n  t[3136] = 1889;\\n  t[3139] = 1890;\\n  t[3140] = 1890;\\n  t[3143] = 1891;\\n  t[3144] = 1891;\\n  t[3147] = 1892;\\n  t[3148] = 1892;\\n  t[3153] = 580;\\n  t[3154] = 581;\\n  t[3157] = 584;\\n  t[3158] = 585;\\n  t[3161] = 588;\\n  t[3162] = 589;\\n  t[3165] = 891;\\n  t[3166] = 892;\\n  t[3169] = 1274;\\n  t[3170] = 1275;\\n  t[3173] = 1278;\\n  t[3174] = 1279;\\n  t[3181] = 7622;\\n  t[3182] = 7623;\\n  t[3282] = 11799;\\n  t[3316] = 578;\\n  t[3379] = 42785;\\n  t[3393] = 1159;\\n  t[3416] = 8377;\\n});\\n\\n\u002F\u002F The glyph map for ArialBlack differs slightly from the glyph map used for\\n\u002F\u002F other well-known standard fonts. Hence we use this (incomplete) CID to GID\\n\u002F\u002F mapping to adjust the glyph map for non-embedded ArialBlack fonts.\\nconst getSupplementalGlyphMapForArialBlack = getLookupTableFactory(\\n  function (t) {\\n    t[227] = 322;\\n    t[264] = 261;\\n    t[291] = 346;\\n  }\\n);\\n\\n\u002F\u002F The glyph map for Calibri (a Windows font) differs from the glyph map used\\n\u002F\u002F in the standard fonts. Hence we use this (incomplete) CID to GID mapping to\\n\u002F\u002F adjust the glyph map for non-embedded Calibri fonts.\\nconst getSupplementalGlyphMapForCalibri = getLookupTableFactory(function (t) {\\n  t[1] = 32;\\n  t[4] = 65;\\n  t[5] = 192;\\n  t[6] = 193;\\n  t[9] = 196;\\n  t[17] = 66;\\n  t[18] = 67;\\n  t[21] = 268;\\n  t[24] = 68;\\n  t[28] = 69;\\n  t[29] = 200;\\n  t[30] = 201;\\n  t[32] = 282;\\n  t[38] = 70;\\n  t[39] = 71;\\n  t[44] = 72;\\n  t[47] = 73;\\n  t[48] = 204;\\n  t[49] = 205;\\n  t[58] = 74;\\n  t[60] = 75;\\n  t[62] = 76;\\n  t[68] = 77;\\n  t[69] = 78;\\n  t[75] = 79;\\n  t[76] = 210;\\n  t[80] = 214;\\n  t[87] = 80;\\n  t[89] = 81;\\n  t[90] = 82;\\n  t[92] = 344;\\n  t[94] = 83;\\n  t[97] = 352;\\n  t[100] = 84;\\n  t[104] = 85;\\n  t[109] = 220;\\n  t[115] = 86;\\n  t[116] = 87;\\n  t[121] = 88;\\n  t[122] = 89;\\n  t[124] = 221;\\n  t[127] = 90;\\n  t[129] = 381;\\n  t[258] = 97;\\n  t[259] = 224;\\n  t[260] = 225;\\n  t[263] = 228;\\n  t[268] = 261;\\n  t[271] = 98;\\n  t[272] = 99;\\n  t[273] = 263;\\n  t[275] = 269;\\n  t[282] = 100;\\n  t[286] = 101;\\n  t[287] = 232;\\n  t[288] = 233;\\n  t[290] = 283;\\n  t[295] = 281;\\n  t[296] = 102;\\n  t[336] = 103;\\n  t[346] = 104;\\n  t[349] = 105;\\n  t[350] = 236;\\n  t[351] = 237;\\n  t[361] = 106;\\n  t[364] = 107;\\n  t[367] = 108;\\n  t[371] = 322;\\n  t[373] = 109;\\n  t[374] = 110;\\n  t[381] = 111;\\n  t[382] = 242;\\n  t[383] = 243;\\n  t[386] = 246;\\n  t[393] = 112;\\n  t[395] = 113;\\n  t[396] = 114;\\n  t[398] = 345;\\n  t[400] = 115;\\n  t[401] = 347;\\n  t[403] = 353;\\n  t[410] = 116;\\n  t[437] = 117;\\n  t[442] = 252;\\n  t[448] = 118;\\n  t[449] = 119;\\n  t[454] = 120;\\n  t[455] = 121;\\n  t[457] = 253;\\n  t[460] = 122;\\n  t[462] = 382;\\n  t[463] = 380;\\n  t[853] = 44;\\n  t[855] = 58;\\n  t[856] = 46;\\n  t[876] = 47;\\n  t[878] = 45;\\n  t[882] = 45;\\n  t[894] = 40;\\n  t[895] = 41;\\n  t[896] = 91;\\n  t[897] = 93;\\n  t[923] = 64;\\n  t[1004] = 48;\\n  t[1005] = 49;\\n  t[1006] = 50;\\n  t[1007] = 51;\\n  t[1008] = 52;\\n  t[1009] = 53;\\n  t[1010] = 54;\\n  t[1011] = 55;\\n  t[1012] = 56;\\n  t[1013] = 57;\\n  t[1081] = 37;\\n  t[1085] = 43;\\n  t[1086] = 45;\\n});\\n\\nfunction getStandardFontName(name) {\\n  const fontName = normalizeFontName(name);\\n  const stdFontMap = getStdFontMap();\\n  return stdFontMap[fontName];\\n}\\n\\nfunction isKnownFontName(name) {\\n  const fontName = normalizeFontName(name);\\n  return !!(\\n    getStdFontMap()[fontName] ||\\n    getNonStdFontMap()[fontName] ||\\n    getSerifFonts()[fontName] ||\\n    getSymbolsFonts()[fontName]\\n  );\\n}\\n\\nexport {\\n  getFontNameToFileMap,\\n  getGlyphMapForStandardFonts,\\n  getNonStdFontMap,\\n  getSerifFonts,\\n  getStandardFontName,\\n  getStdFontMap,\\n  getSupplementalGlyphMapForArialBlack,\\n  getSupplementalGlyphMapForCalibri,\\n  getSymbolsFonts,\\n  isKnownFontName,\\n};\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { unreachable } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nclass ToUnicodeMap {\\n  constructor(cmap = []) {\\n    \u002F\u002F The elements of this._map can be integers or strings, depending on how\\n    \u002F\u002F `cmap` was created.\\n    this._map = cmap;\\n  }\\n\\n  get length() {\\n    return this._map.length;\\n  }\\n\\n  forEach(callback) {\\n    for (const charCode in this._map) {\\n      callback(charCode, this._map[charCode].charCodeAt(0));\\n    }\\n  }\\n\\n  has(i) {\\n    return this._map[i] !== undefined;\\n  }\\n\\n  get(i) {\\n    return this._map[i];\\n  }\\n\\n  charCodeOf(value) {\\n    \u002F\u002F `Array.prototype.indexOf` is *extremely* inefficient for arrays which\\n    \u002F\u002F are both very sparse and very large (see issue8372.pdf).\\n    const map = this._map;\\n    if (map.length \u003C= 0x10000) {\\n      return map.indexOf(value);\\n    }\\n    for (const charCode in map) {\\n      if (map[charCode] === value) {\\n        return charCode | 0;\\n      }\\n    }\\n    return -1;\\n  }\\n\\n  amend(map) {\\n    for (const charCode in map) {\\n      this._map[charCode] = map[charCode];\\n    }\\n  }\\n}\\n\\nclass IdentityToUnicodeMap {\\n  constructor(firstChar, lastChar) {\\n    this.firstChar = firstChar;\\n    this.lastChar = lastChar;\\n  }\\n\\n  get length() {\\n    return this.lastChar + 1 - this.firstChar;\\n  }\\n\\n  forEach(callback) {\\n    for (let i = this.firstChar, ii = this.lastChar; i \u003C= ii; i++) {\\n      callback(i, i);\\n    }\\n  }\\n\\n  has(i) {\\n    return this.firstChar \u003C= i && i \u003C= this.lastChar;\\n  }\\n\\n  get(i) {\\n    if (this.firstChar \u003C= i && i \u003C= this.lastChar) {\\n      return String.fromCharCode(i);\\n    }\\n    return undefined;\\n  }\\n\\n  charCodeOf(v) {\\n    return Number.isInteger(v) && v >= this.firstChar && v \u003C= this.lastChar\\n      ? v\\n      : -1;\\n  }\\n\\n  amend(map) {\\n    unreachable(\\\"Should not call amend()\\\");\\n  }\\n}\\n\\nexport { IdentityToUnicodeMap, ToUnicodeMap };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { CFFCompiler, CFFParser } from \\\".\u002Fcff_parser.js\\\";\\nimport { SEAC_ANALYSIS_ENABLED, type1FontGlyphMapping } from \\\".\u002Ffonts_utils.js\\\";\\nimport { warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nclass CFFFont {\\n  constructor(file, properties) {\\n    this.properties = properties;\\n\\n    const parser = new CFFParser(file, properties, SEAC_ANALYSIS_ENABLED);\\n    this.cff = parser.parse();\\n    this.cff.duplicateFirstGlyph();\\n    const compiler = new CFFCompiler(this.cff);\\n    this.seacs = this.cff.seacs;\\n    try {\\n      this.data = compiler.compile();\\n    } catch {\\n      warn(\\\"Failed to compile font \\\" + properties.loadedName);\\n      \u002F\u002F There may have just been an issue with the compiler, set the data\\n      \u002F\u002F anyway and hope the font loaded.\\n      this.data = file;\\n    }\\n    this._createBuiltInEncoding();\\n  }\\n\\n  get numGlyphs() {\\n    return this.cff.charStrings.count;\\n  }\\n\\n  getCharset() {\\n    return this.cff.charset.charset;\\n  }\\n\\n  getGlyphMapping() {\\n    const cff = this.cff;\\n    const properties = this.properties;\\n    const { cidToGidMap, cMap } = properties;\\n    const charsets = cff.charset.charset;\\n    let charCodeToGlyphId;\\n    let glyphId;\\n\\n    if (properties.composite) {\\n      let invCidToGidMap;\\n      if (cidToGidMap?.length > 0) {\\n        invCidToGidMap = Object.create(null);\\n        for (let i = 0, ii = cidToGidMap.length; i \u003C ii; i++) {\\n          const gid = cidToGidMap[i];\\n          if (gid !== undefined) {\\n            invCidToGidMap[gid] = i;\\n          }\\n        }\\n      }\\n\\n      charCodeToGlyphId = Object.create(null);\\n      let charCode;\\n      if (cff.isCIDFont) {\\n        \u002F\u002F If the font is actually a CID font then we should use the charset\\n        \u002F\u002F to map CIDs to GIDs.\\n        for (glyphId = 0; glyphId \u003C charsets.length; glyphId++) {\\n          const cid = charsets[glyphId];\\n          charCode = cMap.charCodeOf(cid);\\n\\n          if (invCidToGidMap?.[charCode] !== undefined) {\\n            \u002F\u002F According to the PDF specification, see Table 117, it's not clear\\n            \u002F\u002F that a \u002FCIDToGIDMap should be used with any non-TrueType fonts,\\n            \u002F\u002F however it's necessary to do so in order to fix issue 15559.\\n            \u002F\u002F\\n            \u002F\u002F It seems, in the CFF-case, that the \u002FCIDToGIDMap needs to be used\\n            \u002F\u002F \\\"inverted\\\" compared to the TrueType-case. Here it thus seem to be\\n            \u002F\u002F a charCode mapping, rather than the normal CID to GID mapping.\\n            charCode = invCidToGidMap[charCode];\\n          }\\n          charCodeToGlyphId[charCode] = glyphId;\\n        }\\n      } else {\\n        \u002F\u002F If it is NOT actually a CID font then CIDs should be mapped\\n        \u002F\u002F directly to GIDs.\\n        for (glyphId = 0; glyphId \u003C cff.charStrings.count; glyphId++) {\\n          charCode = cMap.charCodeOf(glyphId);\\n          charCodeToGlyphId[charCode] = glyphId;\\n        }\\n      }\\n      return charCodeToGlyphId;\\n    }\\n\\n    let encoding = cff.encoding ? cff.encoding.encoding : null;\\n    if (properties.isInternalFont) {\\n      encoding = properties.defaultEncoding;\\n    }\\n    charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets);\\n    return charCodeToGlyphId;\\n  }\\n\\n  hasGlyphId(id) {\\n    return this.cff.hasGlyphId(id);\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _createBuiltInEncoding() {\\n    const { charset, encoding } = this.cff;\\n    if (!charset || !encoding) {\\n      return;\\n    }\\n    const charsets = charset.charset,\\n      encodings = encoding.encoding;\\n    const map = [];\\n\\n    for (const charCode in encodings) {\\n      const glyphId = encodings[charCode];\\n      if (glyphId >= 0) {\\n        const glyphName = charsets[glyphId];\\n        if (glyphName) {\\n          map[charCode] = glyphName;\\n        }\\n      }\\n    }\\n    if (map.length > 0) {\\n      this.properties.builtInEncoding = map;\\n    }\\n  }\\n}\\n\\nexport { CFFFont };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  bytesToString,\\n  FONT_IDENTITY_MATRIX,\\n  FontRenderOps,\\n  FormatError,\\n  unreachable,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { CFFParser } from \\\".\u002Fcff_parser.js\\\";\\nimport { getGlyphsUnicode } from \\\".\u002Fglyphlist.js\\\";\\nimport { isNumberArray } from \\\".\u002Fcore_utils.js\\\";\\nimport { StandardEncoding } from \\\".\u002Fencodings.js\\\";\\nimport { Stream } from \\\".\u002Fstream.js\\\";\\n\\n\u002F\u002F TODO: use DataView and its methods.\\n\\nfunction getUint32(data, offset) {\\n  return (\\n    ((data[offset] \u003C\u003C 24) |\\n      (data[offset + 1] \u003C\u003C 16) |\\n      (data[offset + 2] \u003C\u003C 8) |\\n      data[offset + 3]) >>>\\n    0\\n  );\\n}\\n\\nfunction getUint16(data, offset) {\\n  return (data[offset] \u003C\u003C 8) | data[offset + 1];\\n}\\n\\nfunction getInt16(data, offset) {\\n  return ((data[offset] \u003C\u003C 24) | (data[offset + 1] \u003C\u003C 16)) >> 16;\\n}\\n\\nfunction getInt8(data, offset) {\\n  return (data[offset] \u003C\u003C 24) >> 24;\\n}\\n\\nfunction getFloat214(data, offset) {\\n  return getInt16(data, offset) \u002F 16384;\\n}\\n\\nfunction getSubroutineBias(subrs) {\\n  const numSubrs = subrs.length;\\n  let bias = 32768;\\n  if (numSubrs \u003C 1240) {\\n    bias = 107;\\n  } else if (numSubrs \u003C 33900) {\\n    bias = 1131;\\n  }\\n  return bias;\\n}\\n\\nfunction parseCmap(data, start, end) {\\n  const offset =\\n    getUint16(data, start + 2) === 1\\n      ? getUint32(data, start + 8)\\n      : getUint32(data, start + 16);\\n  const format = getUint16(data, start + offset);\\n  let ranges, p, i;\\n  if (format === 4) {\\n    getUint16(data, start + offset + 2); \u002F\u002F length\\n    const segCount = getUint16(data, start + offset + 6) >> 1;\\n    p = start + offset + 14;\\n    ranges = [];\\n    for (i = 0; i \u003C segCount; i++, p += 2) {\\n      ranges[i] = { end: getUint16(data, p) };\\n    }\\n    p += 2;\\n    for (i = 0; i \u003C segCount; i++, p += 2) {\\n      ranges[i].start = getUint16(data, p);\\n    }\\n    for (i = 0; i \u003C segCount; i++, p += 2) {\\n      ranges[i].idDelta = getUint16(data, p);\\n    }\\n    for (i = 0; i \u003C segCount; i++, p += 2) {\\n      let idOffset = getUint16(data, p);\\n      if (idOffset === 0) {\\n        continue;\\n      }\\n      ranges[i].ids = [];\\n      for (let j = 0, jj = ranges[i].end - ranges[i].start + 1; j \u003C jj; j++) {\\n        ranges[i].ids[j] = getUint16(data, p + idOffset);\\n        idOffset += 2;\\n      }\\n    }\\n    return ranges;\\n  } else if (format === 12) {\\n    const groups = getUint32(data, start + offset + 12);\\n    p = start + offset + 16;\\n    ranges = [];\\n    for (i = 0; i \u003C groups; i++) {\\n      start = getUint32(data, p);\\n      ranges.push({\\n        start,\\n        end: getUint32(data, p + 4),\\n        idDelta: getUint32(data, p + 8) - start,\\n      });\\n      p += 12;\\n    }\\n    return ranges;\\n  }\\n  throw new FormatError(`unsupported cmap: ${format}`);\\n}\\n\\nfunction parseCff(data, start, end, seacAnalysisEnabled) {\\n  const properties = {};\\n  const parser = new CFFParser(\\n    new Stream(data, start, end - start),\\n    properties,\\n    seacAnalysisEnabled\\n  );\\n  const cff = parser.parse();\\n  return {\\n    glyphs: cff.charStrings.objects,\\n    subrs: cff.topDict.privateDict?.subrsIndex?.objects,\\n    gsubrs: cff.globalSubrIndex?.objects,\\n    isCFFCIDFont: cff.isCIDFont,\\n    fdSelect: cff.fdSelect,\\n    fdArray: cff.fdArray,\\n  };\\n}\\n\\nfunction parseGlyfTable(glyf, loca, isGlyphLocationsLong) {\\n  let itemSize, itemDecode;\\n  if (isGlyphLocationsLong) {\\n    itemSize = 4;\\n    itemDecode = getUint32;\\n  } else {\\n    itemSize = 2;\\n    itemDecode = (data, offset) => 2 * getUint16(data, offset);\\n  }\\n  const glyphs = [];\\n  let startOffset = itemDecode(loca, 0);\\n  for (let j = itemSize; j \u003C loca.length; j += itemSize) {\\n    const endOffset = itemDecode(loca, j);\\n    glyphs.push(glyf.subarray(startOffset, endOffset));\\n    startOffset = endOffset;\\n  }\\n  return glyphs;\\n}\\n\\nfunction lookupCmap(ranges, unicode) {\\n  const code = unicode.codePointAt(0);\\n  let gid = 0,\\n    l = 0,\\n    r = ranges.length - 1;\\n  while (l \u003C r) {\\n    const c = (l + r + 1) >> 1;\\n    if (code \u003C ranges[c].start) {\\n      r = c - 1;\\n    } else {\\n      l = c;\\n    }\\n  }\\n  if (ranges[l].start \u003C= code && code \u003C= ranges[l].end) {\\n    gid =\\n      (ranges[l].idDelta +\\n        (ranges[l].ids ? ranges[l].ids[code - ranges[l].start] : code)) &\\n      0xffff;\\n  }\\n  return {\\n    charCode: code,\\n    glyphId: gid,\\n  };\\n}\\n\\nfunction compileGlyf(code, cmds, font) {\\n  function moveTo(x, y) {\\n    cmds.add(FontRenderOps.MOVE_TO, [x, y]);\\n  }\\n  function lineTo(x, y) {\\n    cmds.add(FontRenderOps.LINE_TO, [x, y]);\\n  }\\n  function quadraticCurveTo(xa, ya, x, y) {\\n    cmds.add(FontRenderOps.QUADRATIC_CURVE_TO, [xa, ya, x, y]);\\n  }\\n\\n  let i = 0;\\n  const numberOfContours = getInt16(code, i);\\n  let flags;\\n  let x = 0,\\n    y = 0;\\n  i += 10;\\n  if (numberOfContours \u003C 0) {\\n    \u002F\u002F composite glyph\\n    do {\\n      flags = getUint16(code, i);\\n      const glyphIndex = getUint16(code, i + 2);\\n      i += 4;\\n      let arg1, arg2;\\n      if (flags & 0x01) {\\n        if (flags & 0x02) {\\n          arg1 = getInt16(code, i);\\n          arg2 = getInt16(code, i + 2);\\n        } else {\\n          arg1 = getUint16(code, i);\\n          arg2 = getUint16(code, i + 2);\\n        }\\n        i += 4;\\n      } else if (flags & 0x02) {\\n        arg1 = getInt8(code, i++);\\n        arg2 = getInt8(code, i++);\\n      } else {\\n        arg1 = code[i++];\\n        arg2 = code[i++];\\n      }\\n      if (flags & 0x02) {\\n        x = arg1;\\n        y = arg2;\\n      } else {\\n        x = 0;\\n        y = 0;\\n      }\\n      let scaleX = 1,\\n        scaleY = 1,\\n        scale01 = 0,\\n        scale10 = 0;\\n      if (flags & 0x08) {\\n        scaleX = scaleY = getFloat214(code, i);\\n        i += 2;\\n      } else if (flags & 0x40) {\\n        scaleX = getFloat214(code, i);\\n        scaleY = getFloat214(code, i + 2);\\n        i += 4;\\n      } else if (flags & 0x80) {\\n        scaleX = getFloat214(code, i);\\n        scale01 = getFloat214(code, i + 2);\\n        scale10 = getFloat214(code, i + 4);\\n        scaleY = getFloat214(code, i + 6);\\n        i += 8;\\n      }\\n      const subglyph = font.glyphs[glyphIndex];\\n      if (subglyph) {\\n        \u002F\u002F TODO: the transform should be applied only if there is a scale:\\n        \u002F\u002F https:\u002F\u002Fgithub.com\u002Ffreetype\u002Ffreetype\u002Fblob\u002Fedd4fedc5427cf1cf1f4b045e53ff91eb282e9d4\u002Fsrc\u002Ftruetype\u002Fttgload.c#L1205\\n        cmds.add(FontRenderOps.SAVE);\\n        cmds.add(FontRenderOps.TRANSFORM, [\\n          scaleX,\\n          scale01,\\n          scale10,\\n          scaleY,\\n          x,\\n          y,\\n        ]);\\n\\n        if (!(flags & 0x02)) {\\n          \u002F\u002F TODO: we must use arg1 and arg2 to make something similar to:\\n          \u002F\u002F https:\u002F\u002Fgithub.com\u002Ffreetype\u002Ffreetype\u002Fblob\u002Fedd4fedc5427cf1cf1f4b045e53ff91eb282e9d4\u002Fsrc\u002Ftruetype\u002Fttgload.c#L1209\\n        }\\n        compileGlyf(subglyph, cmds, font);\\n        cmds.add(FontRenderOps.RESTORE);\\n      }\\n    } while (flags & 0x20);\\n  } else {\\n    \u002F\u002F simple glyph\\n    const endPtsOfContours = [];\\n    let j, jj;\\n    for (j = 0; j \u003C numberOfContours; j++) {\\n      endPtsOfContours.push(getUint16(code, i));\\n      i += 2;\\n    }\\n    const instructionLength = getUint16(code, i);\\n    i += 2 + instructionLength; \u002F\u002F skipping the instructions\\n    const numberOfPoints = endPtsOfContours.at(-1) + 1;\\n    const points = [];\\n    while (points.length \u003C numberOfPoints) {\\n      flags = code[i++];\\n      let repeat = 1;\\n      if (flags & 0x08) {\\n        repeat += code[i++];\\n      }\\n      while (repeat-- > 0) {\\n        points.push({ flags });\\n      }\\n    }\\n    for (j = 0; j \u003C numberOfPoints; j++) {\\n      switch (points[j].flags & 0x12) {\\n        case 0x00:\\n          x += getInt16(code, i);\\n          i += 2;\\n          break;\\n        case 0x02:\\n          x -= code[i++];\\n          break;\\n        case 0x12:\\n          x += code[i++];\\n          break;\\n      }\\n      points[j].x = x;\\n    }\\n    for (j = 0; j \u003C numberOfPoints; j++) {\\n      switch (points[j].flags & 0x24) {\\n        case 0x00:\\n          y += getInt16(code, i);\\n          i += 2;\\n          break;\\n        case 0x04:\\n          y -= code[i++];\\n          break;\\n        case 0x24:\\n          y += code[i++];\\n          break;\\n      }\\n      points[j].y = y;\\n    }\\n\\n    let startPoint = 0;\\n    for (i = 0; i \u003C numberOfContours; i++) {\\n      const endPoint = endPtsOfContours[i];\\n      \u002F\u002F contours might have implicit points, which is located in the middle\\n      \u002F\u002F between two neighboring off-curve points\\n      const contour = points.slice(startPoint, endPoint + 1);\\n      if (contour[0].flags & 1) {\\n        contour.push(contour[0]); \u002F\u002F using start point at the contour end\\n      } else if (contour.at(-1).flags & 1) {\\n        \u002F\u002F first is off-curve point, trying to use one from the end\\n        contour.unshift(contour.at(-1));\\n      } else {\\n        \u002F\u002F start and end are off-curve points, creating implicit one\\n        const p = {\\n          flags: 1,\\n          x: (contour[0].x + contour.at(-1).x) \u002F 2,\\n          y: (contour[0].y + contour.at(-1).y) \u002F 2,\\n        };\\n        contour.unshift(p);\\n        contour.push(p);\\n      }\\n      moveTo(contour[0].x, contour[0].y);\\n      for (j = 1, jj = contour.length; j \u003C jj; j++) {\\n        if (contour[j].flags & 1) {\\n          lineTo(contour[j].x, contour[j].y);\\n        } else if (contour[j + 1].flags & 1) {\\n          quadraticCurveTo(\\n            contour[j].x,\\n            contour[j].y,\\n            contour[j + 1].x,\\n            contour[j + 1].y\\n          );\\n          j++;\\n        } else {\\n          quadraticCurveTo(\\n            contour[j].x,\\n            contour[j].y,\\n            (contour[j].x + contour[j + 1].x) \u002F 2,\\n            (contour[j].y + contour[j + 1].y) \u002F 2\\n          );\\n        }\\n      }\\n      startPoint = endPoint + 1;\\n    }\\n  }\\n}\\n\\nfunction compileCharString(charStringCode, cmds, font, glyphId) {\\n  function moveTo(x, y) {\\n    cmds.add(FontRenderOps.MOVE_TO, [x, y]);\\n  }\\n  function lineTo(x, y) {\\n    cmds.add(FontRenderOps.LINE_TO, [x, y]);\\n  }\\n  function bezierCurveTo(x1, y1, x2, y2, x, y) {\\n    cmds.add(FontRenderOps.BEZIER_CURVE_TO, [x1, y1, x2, y2, x, y]);\\n  }\\n\\n  const stack = [];\\n  let x = 0,\\n    y = 0;\\n  let stems = 0;\\n\\n  function parse(code) {\\n    let i = 0;\\n    while (i \u003C code.length) {\\n      let stackClean = false;\\n      let v = code[i++];\\n      let xa, xb, ya, yb, y1, y2, y3, n, subrCode;\\n      switch (v) {\\n        case 1: \u002F\u002F hstem\\n          stems += stack.length >> 1;\\n          stackClean = true;\\n          break;\\n        case 3: \u002F\u002F vstem\\n          stems += stack.length >> 1;\\n          stackClean = true;\\n          break;\\n        case 4: \u002F\u002F vmoveto\\n          y += stack.pop();\\n          moveTo(x, y);\\n          stackClean = true;\\n          break;\\n        case 5: \u002F\u002F rlineto\\n          while (stack.length > 0) {\\n            x += stack.shift();\\n            y += stack.shift();\\n            lineTo(x, y);\\n          }\\n          break;\\n        case 6: \u002F\u002F hlineto\\n          while (stack.length > 0) {\\n            x += stack.shift();\\n            lineTo(x, y);\\n            if (stack.length === 0) {\\n              break;\\n            }\\n            y += stack.shift();\\n            lineTo(x, y);\\n          }\\n          break;\\n        case 7: \u002F\u002F vlineto\\n          while (stack.length > 0) {\\n            y += stack.shift();\\n            lineTo(x, y);\\n            if (stack.length === 0) {\\n              break;\\n            }\\n            x += stack.shift();\\n            lineTo(x, y);\\n          }\\n          break;\\n        case 8: \u002F\u002F rrcurveto\\n          while (stack.length > 0) {\\n            xa = x + stack.shift();\\n            ya = y + stack.shift();\\n            xb = xa + stack.shift();\\n            yb = ya + stack.shift();\\n            x = xb + stack.shift();\\n            y = yb + stack.shift();\\n            bezierCurveTo(xa, ya, xb, yb, x, y);\\n          }\\n          break;\\n        case 10: \u002F\u002F callsubr\\n          n = stack.pop();\\n          subrCode = null;\\n          if (font.isCFFCIDFont) {\\n            const fdIndex = font.fdSelect.getFDIndex(glyphId);\\n            if (fdIndex >= 0 && fdIndex \u003C font.fdArray.length) {\\n              const fontDict = font.fdArray[fdIndex];\\n              let subrs;\\n              if (fontDict.privateDict?.subrsIndex) {\\n                subrs = fontDict.privateDict.subrsIndex.objects;\\n              }\\n              if (subrs) {\\n                \u002F\u002F Add subroutine bias.\\n                n += getSubroutineBias(subrs);\\n                subrCode = subrs[n];\\n              }\\n            } else {\\n              warn(\\\"Invalid fd index for glyph index.\\\");\\n            }\\n          } else {\\n            subrCode = font.subrs[n + font.subrsBias];\\n          }\\n          if (subrCode) {\\n            parse(subrCode);\\n          }\\n          break;\\n        case 11: \u002F\u002F return\\n          return;\\n        case 12:\\n          v = code[i++];\\n          switch (v) {\\n            case 34: \u002F\u002F flex\\n              xa = x + stack.shift();\\n              xb = xa + stack.shift();\\n              y1 = y + stack.shift();\\n              x = xb + stack.shift();\\n              bezierCurveTo(xa, y, xb, y1, x, y1);\\n              xa = x + stack.shift();\\n              xb = xa + stack.shift();\\n              x = xb + stack.shift();\\n              bezierCurveTo(xa, y1, xb, y, x, y);\\n              break;\\n            case 35: \u002F\u002F flex\\n              xa = x + stack.shift();\\n              ya = y + stack.shift();\\n              xb = xa + stack.shift();\\n              yb = ya + stack.shift();\\n              x = xb + stack.shift();\\n              y = yb + stack.shift();\\n              bezierCurveTo(xa, ya, xb, yb, x, y);\\n              xa = x + stack.shift();\\n              ya = y + stack.shift();\\n              xb = xa + stack.shift();\\n              yb = ya + stack.shift();\\n              x = xb + stack.shift();\\n              y = yb + stack.shift();\\n              bezierCurveTo(xa, ya, xb, yb, x, y);\\n              stack.pop(); \u002F\u002F fd\\n              break;\\n            case 36: \u002F\u002F hflex1\\n              xa = x + stack.shift();\\n              y1 = y + stack.shift();\\n              xb = xa + stack.shift();\\n              y2 = y1 + stack.shift();\\n              x = xb + stack.shift();\\n              bezierCurveTo(xa, y1, xb, y2, x, y2);\\n              xa = x + stack.shift();\\n              xb = xa + stack.shift();\\n              y3 = y2 + stack.shift();\\n              x = xb + stack.shift();\\n              bezierCurveTo(xa, y2, xb, y3, x, y);\\n              break;\\n            case 37: \u002F\u002F flex1\\n              const x0 = x,\\n                y0 = y;\\n              xa = x + stack.shift();\\n              ya = y + stack.shift();\\n              xb = xa + stack.shift();\\n              yb = ya + stack.shift();\\n              x = xb + stack.shift();\\n              y = yb + stack.shift();\\n              bezierCurveTo(xa, ya, xb, yb, x, y);\\n              xa = x + stack.shift();\\n              ya = y + stack.shift();\\n              xb = xa + stack.shift();\\n              yb = ya + stack.shift();\\n              x = xb;\\n              y = yb;\\n              if (Math.abs(x - x0) > Math.abs(y - y0)) {\\n                x += stack.shift();\\n              } else {\\n                y += stack.shift();\\n              }\\n              bezierCurveTo(xa, ya, xb, yb, x, y);\\n              break;\\n            default:\\n              throw new FormatError(`unknown operator: 12 ${v}`);\\n          }\\n          break;\\n        case 14: \u002F\u002F endchar\\n          if (stack.length >= 4) {\\n            const achar = stack.pop();\\n            const bchar = stack.pop();\\n            y = stack.pop();\\n            x = stack.pop();\\n            cmds.add(FontRenderOps.SAVE);\\n            cmds.add(FontRenderOps.TRANSLATE, [x, y]);\\n            let cmap = lookupCmap(\\n              font.cmap,\\n              String.fromCharCode(font.glyphNameMap[StandardEncoding[achar]])\\n            );\\n            compileCharString(\\n              font.glyphs[cmap.glyphId],\\n              cmds,\\n              font,\\n              cmap.glyphId\\n            );\\n            cmds.add(FontRenderOps.RESTORE);\\n\\n            cmap = lookupCmap(\\n              font.cmap,\\n              String.fromCharCode(font.glyphNameMap[StandardEncoding[bchar]])\\n            );\\n            compileCharString(\\n              font.glyphs[cmap.glyphId],\\n              cmds,\\n              font,\\n              cmap.glyphId\\n            );\\n          }\\n          return;\\n        case 18: \u002F\u002F hstemhm\\n          stems += stack.length >> 1;\\n          stackClean = true;\\n          break;\\n        case 19: \u002F\u002F hintmask\\n          stems += stack.length >> 1;\\n          i += (stems + 7) >> 3;\\n          stackClean = true;\\n          break;\\n        case 20: \u002F\u002F cntrmask\\n          stems += stack.length >> 1;\\n          i += (stems + 7) >> 3;\\n          stackClean = true;\\n          break;\\n        case 21: \u002F\u002F rmoveto\\n          y += stack.pop();\\n          x += stack.pop();\\n          moveTo(x, y);\\n          stackClean = true;\\n          break;\\n        case 22: \u002F\u002F hmoveto\\n          x += stack.pop();\\n          moveTo(x, y);\\n          stackClean = true;\\n          break;\\n        case 23: \u002F\u002F vstemhm\\n          stems += stack.length >> 1;\\n          stackClean = true;\\n          break;\\n        case 24: \u002F\u002F rcurveline\\n          while (stack.length > 2) {\\n            xa = x + stack.shift();\\n            ya = y + stack.shift();\\n            xb = xa + stack.shift();\\n            yb = ya + stack.shift();\\n            x = xb + stack.shift();\\n            y = yb + stack.shift();\\n            bezierCurveTo(xa, ya, xb, yb, x, y);\\n          }\\n          x += stack.shift();\\n          y += stack.shift();\\n          lineTo(x, y);\\n          break;\\n        case 25: \u002F\u002F rlinecurve\\n          while (stack.length > 6) {\\n            x += stack.shift();\\n            y += stack.shift();\\n            lineTo(x, y);\\n          }\\n          xa = x + stack.shift();\\n          ya = y + stack.shift();\\n          xb = xa + stack.shift();\\n          yb = ya + stack.shift();\\n          x = xb + stack.shift();\\n          y = yb + stack.shift();\\n          bezierCurveTo(xa, ya, xb, yb, x, y);\\n          break;\\n        case 26: \u002F\u002F vvcurveto\\n          if (stack.length % 2) {\\n            x += stack.shift();\\n          }\\n          while (stack.length > 0) {\\n            xa = x;\\n            ya = y + stack.shift();\\n            xb = xa + stack.shift();\\n            yb = ya + stack.shift();\\n            x = xb;\\n            y = yb + stack.shift();\\n            bezierCurveTo(xa, ya, xb, yb, x, y);\\n          }\\n          break;\\n        case 27: \u002F\u002F hhcurveto\\n          if (stack.length % 2) {\\n            y += stack.shift();\\n          }\\n          while (stack.length > 0) {\\n            xa = x + stack.shift();\\n            ya = y;\\n            xb = xa + stack.shift();\\n            yb = ya + stack.shift();\\n            x = xb + stack.shift();\\n            y = yb;\\n            bezierCurveTo(xa, ya, xb, yb, x, y);\\n          }\\n          break;\\n        case 28:\\n          stack.push(((code[i] \u003C\u003C 24) | (code[i + 1] \u003C\u003C 16)) >> 16);\\n          i += 2;\\n          break;\\n        case 29: \u002F\u002F callgsubr\\n          n = stack.pop() + font.gsubrsBias;\\n          subrCode = font.gsubrs[n];\\n          if (subrCode) {\\n            parse(subrCode);\\n          }\\n          break;\\n        case 30: \u002F\u002F vhcurveto\\n          while (stack.length > 0) {\\n            xa = x;\\n            ya = y + stack.shift();\\n            xb = xa + stack.shift();\\n            yb = ya + stack.shift();\\n            x = xb + stack.shift();\\n            y = yb + (stack.length === 1 ? stack.shift() : 0);\\n            bezierCurveTo(xa, ya, xb, yb, x, y);\\n            if (stack.length === 0) {\\n              break;\\n            }\\n\\n            xa = x + stack.shift();\\n            ya = y;\\n            xb = xa + stack.shift();\\n            yb = ya + stack.shift();\\n            y = yb + stack.shift();\\n            x = xb + (stack.length === 1 ? stack.shift() : 0);\\n            bezierCurveTo(xa, ya, xb, yb, x, y);\\n          }\\n          break;\\n        case 31: \u002F\u002F hvcurveto\\n          while (stack.length > 0) {\\n            xa = x + stack.shift();\\n            ya = y;\\n            xb = xa + stack.shift();\\n            yb = ya + stack.shift();\\n            y = yb + stack.shift();\\n            x = xb + (stack.length === 1 ? stack.shift() : 0);\\n            bezierCurveTo(xa, ya, xb, yb, x, y);\\n            if (stack.length === 0) {\\n              break;\\n            }\\n\\n            xa = x;\\n            ya = y + stack.shift();\\n            xb = xa + stack.shift();\\n            yb = ya + stack.shift();\\n            x = xb + stack.shift();\\n            y = yb + (stack.length === 1 ? stack.shift() : 0);\\n            bezierCurveTo(xa, ya, xb, yb, x, y);\\n          }\\n          break;\\n        default:\\n          if (v \u003C 32) {\\n            throw new FormatError(`unknown operator: ${v}`);\\n          }\\n          if (v \u003C 247) {\\n            stack.push(v - 139);\\n          } else if (v \u003C 251) {\\n            stack.push((v - 247) * 256 + code[i++] + 108);\\n          } else if (v \u003C 255) {\\n            stack.push(-(v - 251) * 256 - code[i++] - 108);\\n          } else {\\n            stack.push(\\n              ((code[i] \u003C\u003C 24) |\\n                (code[i + 1] \u003C\u003C 16) |\\n                (code[i + 2] \u003C\u003C 8) |\\n                code[i + 3]) \u002F\\n                65536\\n            );\\n            i += 4;\\n          }\\n          break;\\n      }\\n      if (stackClean) {\\n        stack.length = 0;\\n      }\\n    }\\n  }\\n  parse(charStringCode);\\n}\\n\\nconst NOOP = [];\\n\\nclass Commands {\\n  cmds = [];\\n\\n  add(cmd, args) {\\n    if (args) {\\n      if (!isNumberArray(args, null)) {\\n        warn(\\n          `Commands.add - \\\"${cmd}\\\" has at least one non-number arg: \\\"${args}\\\".`\\n        );\\n        \u002F\u002F \\\"Fix\\\" the wrong args by replacing them with 0.\\n        const newArgs = args.map(arg => (typeof arg === \\\"number\\\" ? arg : 0));\\n        this.cmds.push(cmd, ...newArgs);\\n      } else {\\n        this.cmds.push(cmd, ...args);\\n      }\\n    } else {\\n      this.cmds.push(cmd);\\n    }\\n  }\\n}\\n\\nclass CompiledFont {\\n  constructor(fontMatrix) {\\n    if (this.constructor === CompiledFont) {\\n      unreachable(\\\"Cannot initialize CompiledFont.\\\");\\n    }\\n    this.fontMatrix = fontMatrix;\\n\\n    this.compiledGlyphs = Object.create(null);\\n    this.compiledCharCodeToGlyphId = Object.create(null);\\n  }\\n\\n  getPathJs(unicode) {\\n    const { charCode, glyphId } = lookupCmap(this.cmap, unicode);\\n    let fn = this.compiledGlyphs[glyphId],\\n      compileEx;\\n    if (!fn) {\\n      try {\\n        fn = this.compileGlyph(this.glyphs[glyphId], glyphId);\\n      } catch (ex) {\\n        fn = NOOP; \u002F\u002F Avoid attempting to re-compile a corrupt glyph.\\n\\n        compileEx = ex;\\n      }\\n      this.compiledGlyphs[glyphId] = fn;\\n    }\\n    this.compiledCharCodeToGlyphId[charCode] ??= glyphId;\\n\\n    if (compileEx) {\\n      throw compileEx;\\n    }\\n    return fn;\\n  }\\n\\n  compileGlyph(code, glyphId) {\\n    if (!code || code.length === 0 || code[0] === 14) {\\n      return NOOP;\\n    }\\n\\n    let fontMatrix = this.fontMatrix;\\n    if (this.isCFFCIDFont) {\\n      \u002F\u002F Top DICT's FontMatrix can be ignored because CFFCompiler always\\n      \u002F\u002F removes it and copies to FDArray DICTs.\\n      const fdIndex = this.fdSelect.getFDIndex(glyphId);\\n      if (fdIndex >= 0 && fdIndex \u003C this.fdArray.length) {\\n        const fontDict = this.fdArray[fdIndex];\\n        fontMatrix = fontDict.getByName(\\\"FontMatrix\\\") || FONT_IDENTITY_MATRIX;\\n      } else {\\n        warn(\\\"Invalid fd index for glyph index.\\\");\\n      }\\n    }\\n\\n    const cmds = new Commands();\\n    cmds.add(FontRenderOps.SAVE);\\n    cmds.add(FontRenderOps.TRANSFORM, fontMatrix.slice());\\n    cmds.add(FontRenderOps.SCALE);\\n    this.compileGlyphImpl(code, cmds, glyphId);\\n    cmds.add(FontRenderOps.RESTORE);\\n\\n    return cmds.cmds;\\n  }\\n\\n  compileGlyphImpl() {\\n    unreachable(\\\"Children classes should implement this.\\\");\\n  }\\n\\n  hasBuiltPath(unicode) {\\n    const { charCode, glyphId } = lookupCmap(this.cmap, unicode);\\n    return (\\n      this.compiledGlyphs[glyphId] !== undefined &&\\n      this.compiledCharCodeToGlyphId[charCode] !== undefined\\n    );\\n  }\\n}\\n\\nclass TrueTypeCompiled extends CompiledFont {\\n  constructor(glyphs, cmap, fontMatrix) {\\n    super(fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]);\\n\\n    this.glyphs = glyphs;\\n    this.cmap = cmap;\\n  }\\n\\n  compileGlyphImpl(code, cmds) {\\n    compileGlyf(code, cmds, this);\\n  }\\n}\\n\\nclass Type2Compiled extends CompiledFont {\\n  constructor(cffInfo, cmap, fontMatrix, glyphNameMap) {\\n    super(fontMatrix || [0.001, 0, 0, 0.001, 0, 0]);\\n\\n    this.glyphs = cffInfo.glyphs;\\n    this.gsubrs = cffInfo.gsubrs || [];\\n    this.subrs = cffInfo.subrs || [];\\n    this.cmap = cmap;\\n    this.glyphNameMap = glyphNameMap || getGlyphsUnicode();\\n\\n    this.gsubrsBias = getSubroutineBias(this.gsubrs);\\n    this.subrsBias = getSubroutineBias(this.subrs);\\n\\n    this.isCFFCIDFont = cffInfo.isCFFCIDFont;\\n    this.fdSelect = cffInfo.fdSelect;\\n    this.fdArray = cffInfo.fdArray;\\n  }\\n\\n  compileGlyphImpl(code, cmds, glyphId) {\\n    compileCharString(code, cmds, this, glyphId);\\n  }\\n}\\n\\nclass FontRendererFactory {\\n  static create(font, seacAnalysisEnabled) {\\n    const data = new Uint8Array(font.data);\\n    let cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;\\n    const numTables = getUint16(data, 4);\\n    for (let i = 0, p = 12; i \u003C numTables; i++, p += 16) {\\n      const tag = bytesToString(data.subarray(p, p + 4));\\n      const offset = getUint32(data, p + 8);\\n      const length = getUint32(data, p + 12);\\n      switch (tag) {\\n        case \\\"cmap\\\":\\n          cmap = parseCmap(data, offset, offset + length);\\n          break;\\n        case \\\"glyf\\\":\\n          glyf = data.subarray(offset, offset + length);\\n          break;\\n        case \\\"loca\\\":\\n          loca = data.subarray(offset, offset + length);\\n          break;\\n        case \\\"head\\\":\\n          unitsPerEm = getUint16(data, offset + 18);\\n          indexToLocFormat = getUint16(data, offset + 50);\\n          break;\\n        case \\\"CFF \\\":\\n          cff = parseCff(data, offset, offset + length, seacAnalysisEnabled);\\n          break;\\n      }\\n    }\\n\\n    if (glyf) {\\n      const fontMatrix = !unitsPerEm\\n        ? font.fontMatrix\\n        : [1 \u002F unitsPerEm, 0, 0, 1 \u002F unitsPerEm, 0, 0];\\n      return new TrueTypeCompiled(\\n        parseGlyfTable(glyf, loca, indexToLocFormat),\\n        cmap,\\n        fontMatrix\\n      );\\n    }\\n    return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap);\\n  }\\n}\\n\\nexport { FontRendererFactory };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { getLookupTableFactory } from \\\".\u002Fcore_utils.js\\\";\\n\\n\u002F\u002F The Metrics object contains glyph widths (in glyph space units).\\n\u002F\u002F As per PDF spec, for most fonts (Type 3 being an exception) a glyph\\n\u002F\u002F space unit corresponds to 1\u002F1000th of text space unit.\\nconst getMetrics = getLookupTableFactory(function (t) {\\n  t.Courier = 600;\\n  t[\\\"Courier-Bold\\\"] = 600;\\n  t[\\\"Courier-BoldOblique\\\"] = 600;\\n  t[\\\"Courier-Oblique\\\"] = 600;\\n  \u002F\u002F eslint-disable-next-line no-shadow\\n  t.Helvetica = getLookupTableFactory(function (t) {\\n    t.space = 278;\\n    t.exclam = 278;\\n    t.quotedbl = 355;\\n    t.numbersign = 556;\\n    t.dollar = 556;\\n    t.percent = 889;\\n    t.ampersand = 667;\\n    t.quoteright = 222;\\n    t.parenleft = 333;\\n    t.parenright = 333;\\n    t.asterisk = 389;\\n    t.plus = 584;\\n    t.comma = 278;\\n    t.hyphen = 333;\\n    t.period = 278;\\n    t.slash = 278;\\n    t.zero = 556;\\n    t.one = 556;\\n    t.two = 556;\\n    t.three = 556;\\n    t.four = 556;\\n    t.five = 556;\\n    t.six = 556;\\n    t.seven = 556;\\n    t.eight = 556;\\n    t.nine = 556;\\n    t.colon = 278;\\n    t.semicolon = 278;\\n    t.less = 584;\\n    t.equal = 584;\\n    t.greater = 584;\\n    t.question = 556;\\n    t.at = 1015;\\n    t.A = 667;\\n    t.B = 667;\\n    t.C = 722;\\n    t.D = 722;\\n    t.E = 667;\\n    t.F = 611;\\n    t.G = 778;\\n    t.H = 722;\\n    t.I = 278;\\n    t.J = 500;\\n    t.K = 667;\\n    t.L = 556;\\n    t.M = 833;\\n    t.N = 722;\\n    t.O = 778;\\n    t.P = 667;\\n    t.Q = 778;\\n    t.R = 722;\\n    t.S = 667;\\n    t.T = 611;\\n    t.U = 722;\\n    t.V = 667;\\n    t.W = 944;\\n    t.X = 667;\\n    t.Y = 667;\\n    t.Z = 611;\\n    t.bracketleft = 278;\\n    t.backslash = 278;\\n    t.bracketright = 278;\\n    t.asciicircum = 469;\\n    t.underscore = 556;\\n    t.quoteleft = 222;\\n    t.a = 556;\\n    t.b = 556;\\n    t.c = 500;\\n    t.d = 556;\\n    t.e = 556;\\n    t.f = 278;\\n    t.g = 556;\\n    t.h = 556;\\n    t.i = 222;\\n    t.j = 222;\\n    t.k = 500;\\n    t.l = 222;\\n    t.m = 833;\\n    t.n = 556;\\n    t.o = 556;\\n    t.p = 556;\\n    t.q = 556;\\n    t.r = 333;\\n    t.s = 500;\\n    t.t = 278;\\n    t.u = 556;\\n    t.v = 500;\\n    t.w = 722;\\n    t.x = 500;\\n    t.y = 500;\\n    t.z = 500;\\n    t.braceleft = 334;\\n    t.bar = 260;\\n    t.braceright = 334;\\n    t.asciitilde = 584;\\n    t.exclamdown = 333;\\n    t.cent = 556;\\n    t.sterling = 556;\\n    t.fraction = 167;\\n    t.yen = 556;\\n    t.florin = 556;\\n    t.section = 556;\\n    t.currency = 556;\\n    t.quotesingle = 191;\\n    t.quotedblleft = 333;\\n    t.guillemotleft = 556;\\n    t.guilsinglleft = 333;\\n    t.guilsinglright = 333;\\n    t.fi = 500;\\n    t.fl = 500;\\n    t.endash = 556;\\n    t.dagger = 556;\\n    t.daggerdbl = 556;\\n    t.periodcentered = 278;\\n    t.paragraph = 537;\\n    t.bullet = 350;\\n    t.quotesinglbase = 222;\\n    t.quotedblbase = 333;\\n    t.quotedblright = 333;\\n    t.guillemotright = 556;\\n    t.ellipsis = 1000;\\n    t.perthousand = 1000;\\n    t.questiondown = 611;\\n    t.grave = 333;\\n    t.acute = 333;\\n    t.circumflex = 333;\\n    t.tilde = 333;\\n    t.macron = 333;\\n    t.breve = 333;\\n    t.dotaccent = 333;\\n    t.dieresis = 333;\\n    t.ring = 333;\\n    t.cedilla = 333;\\n    t.hungarumlaut = 333;\\n    t.ogonek = 333;\\n    t.caron = 333;\\n    t.emdash = 1000;\\n    t.AE = 1000;\\n    t.ordfeminine = 370;\\n    t.Lslash = 556;\\n    t.Oslash = 778;\\n    t.OE = 1000;\\n    t.ordmasculine = 365;\\n    t.ae = 889;\\n    t.dotlessi = 278;\\n    t.lslash = 222;\\n    t.oslash = 611;\\n    t.oe = 944;\\n    t.germandbls = 611;\\n    t.Idieresis = 278;\\n    t.eacute = 556;\\n    t.abreve = 556;\\n    t.uhungarumlaut = 556;\\n    t.ecaron = 556;\\n    t.Ydieresis = 667;\\n    t.divide = 584;\\n    t.Yacute = 667;\\n    t.Acircumflex = 667;\\n    t.aacute = 556;\\n    t.Ucircumflex = 722;\\n    t.yacute = 500;\\n    t.scommaaccent = 500;\\n    t.ecircumflex = 556;\\n    t.Uring = 722;\\n    t.Udieresis = 722;\\n    t.aogonek = 556;\\n    t.Uacute = 722;\\n    t.uogonek = 556;\\n    t.Edieresis = 667;\\n    t.Dcroat = 722;\\n    t.commaaccent = 250;\\n    t.copyright = 737;\\n    t.Emacron = 667;\\n    t.ccaron = 500;\\n    t.aring = 556;\\n    t.Ncommaaccent = 722;\\n    t.lacute = 222;\\n    t.agrave = 556;\\n    t.Tcommaaccent = 611;\\n    t.Cacute = 722;\\n    t.atilde = 556;\\n    t.Edotaccent = 667;\\n    t.scaron = 500;\\n    t.scedilla = 500;\\n    t.iacute = 278;\\n    t.lozenge = 471;\\n    t.Rcaron = 722;\\n    t.Gcommaaccent = 778;\\n    t.ucircumflex = 556;\\n    t.acircumflex = 556;\\n    t.Amacron = 667;\\n    t.rcaron = 333;\\n    t.ccedilla = 500;\\n    t.Zdotaccent = 611;\\n    t.Thorn = 667;\\n    t.Omacron = 778;\\n    t.Racute = 722;\\n    t.Sacute = 667;\\n    t.dcaron = 643;\\n    t.Umacron = 722;\\n    t.uring = 556;\\n    t.threesuperior = 333;\\n    t.Ograve = 778;\\n    t.Agrave = 667;\\n    t.Abreve = 667;\\n    t.multiply = 584;\\n    t.uacute = 556;\\n    t.Tcaron = 611;\\n    t.partialdiff = 476;\\n    t.ydieresis = 500;\\n    t.Nacute = 722;\\n    t.icircumflex = 278;\\n    t.Ecircumflex = 667;\\n    t.adieresis = 556;\\n    t.edieresis = 556;\\n    t.cacute = 500;\\n    t.nacute = 556;\\n    t.umacron = 556;\\n    t.Ncaron = 722;\\n    t.Iacute = 278;\\n    t.plusminus = 584;\\n    t.brokenbar = 260;\\n    t.registered = 737;\\n    t.Gbreve = 778;\\n    t.Idotaccent = 278;\\n    t.summation = 600;\\n    t.Egrave = 667;\\n    t.racute = 333;\\n    t.omacron = 556;\\n    t.Zacute = 611;\\n    t.Zcaron = 611;\\n    t.greaterequal = 549;\\n    t.Eth = 722;\\n    t.Ccedilla = 722;\\n    t.lcommaaccent = 222;\\n    t.tcaron = 317;\\n    t.eogonek = 556;\\n    t.Uogonek = 722;\\n    t.Aacute = 667;\\n    t.Adieresis = 667;\\n    t.egrave = 556;\\n    t.zacute = 500;\\n    t.iogonek = 222;\\n    t.Oacute = 778;\\n    t.oacute = 556;\\n    t.amacron = 556;\\n    t.sacute = 500;\\n    t.idieresis = 278;\\n    t.Ocircumflex = 778;\\n    t.Ugrave = 722;\\n    t.Delta = 612;\\n    t.thorn = 556;\\n    t.twosuperior = 333;\\n    t.Odieresis = 778;\\n    t.mu = 556;\\n    t.igrave = 278;\\n    t.ohungarumlaut = 556;\\n    t.Eogonek = 667;\\n    t.dcroat = 556;\\n    t.threequarters = 834;\\n    t.Scedilla = 667;\\n    t.lcaron = 299;\\n    t.Kcommaaccent = 667;\\n    t.Lacute = 556;\\n    t.trademark = 1000;\\n    t.edotaccent = 556;\\n    t.Igrave = 278;\\n    t.Imacron = 278;\\n    t.Lcaron = 556;\\n    t.onehalf = 834;\\n    t.lessequal = 549;\\n    t.ocircumflex = 556;\\n    t.ntilde = 556;\\n    t.Uhungarumlaut = 722;\\n    t.Eacute = 667;\\n    t.emacron = 556;\\n    t.gbreve = 556;\\n    t.onequarter = 834;\\n    t.Scaron = 667;\\n    t.Scommaaccent = 667;\\n    t.Ohungarumlaut = 778;\\n    t.degree = 400;\\n    t.ograve = 556;\\n    t.Ccaron = 722;\\n    t.ugrave = 556;\\n    t.radical = 453;\\n    t.Dcaron = 722;\\n    t.rcommaaccent = 333;\\n    t.Ntilde = 722;\\n    t.otilde = 556;\\n    t.Rcommaaccent = 722;\\n    t.Lcommaaccent = 556;\\n    t.Atilde = 667;\\n    t.Aogonek = 667;\\n    t.Aring = 667;\\n    t.Otilde = 778;\\n    t.zdotaccent = 500;\\n    t.Ecaron = 667;\\n    t.Iogonek = 278;\\n    t.kcommaaccent = 500;\\n    t.minus = 584;\\n    t.Icircumflex = 278;\\n    t.ncaron = 556;\\n    t.tcommaaccent = 278;\\n    t.logicalnot = 584;\\n    t.odieresis = 556;\\n    t.udieresis = 556;\\n    t.notequal = 549;\\n    t.gcommaaccent = 556;\\n    t.eth = 556;\\n    t.zcaron = 500;\\n    t.ncommaaccent = 556;\\n    t.onesuperior = 333;\\n    t.imacron = 278;\\n    t.Euro = 556;\\n  });\\n  \u002F\u002F eslint-disable-next-line no-shadow\\n  t[\\\"Helvetica-Bold\\\"] = getLookupTableFactory(function (t) {\\n    t.space = 278;\\n    t.exclam = 333;\\n    t.quotedbl = 474;\\n    t.numbersign = 556;\\n    t.dollar = 556;\\n    t.percent = 889;\\n    t.ampersand = 722;\\n    t.quoteright = 278;\\n    t.parenleft = 333;\\n    t.parenright = 333;\\n    t.asterisk = 389;\\n    t.plus = 584;\\n    t.comma = 278;\\n    t.hyphen = 333;\\n    t.period = 278;\\n    t.slash = 278;\\n    t.zero = 556;\\n    t.one = 556;\\n    t.two = 556;\\n    t.three = 556;\\n    t.four = 556;\\n    t.five = 556;\\n    t.six = 556;\\n    t.seven = 556;\\n    t.eight = 556;\\n    t.nine = 556;\\n    t.colon = 333;\\n    t.semicolon = 333;\\n    t.less = 584;\\n    t.equal = 584;\\n    t.greater = 584;\\n    t.question = 611;\\n    t.at = 975;\\n    t.A = 722;\\n    t.B = 722;\\n    t.C = 722;\\n    t.D = 722;\\n    t.E = 667;\\n    t.F = 611;\\n    t.G = 778;\\n    t.H = 722;\\n    t.I = 278;\\n    t.J = 556;\\n    t.K = 722;\\n    t.L = 611;\\n    t.M = 833;\\n    t.N = 722;\\n    t.O = 778;\\n    t.P = 667;\\n    t.Q = 778;\\n    t.R = 722;\\n    t.S = 667;\\n    t.T = 611;\\n    t.U = 722;\\n    t.V = 667;\\n    t.W = 944;\\n    t.X = 667;\\n    t.Y = 667;\\n    t.Z = 611;\\n    t.bracketleft = 333;\\n    t.backslash = 278;\\n    t.bracketright = 333;\\n    t.asciicircum = 584;\\n    t.underscore = 556;\\n    t.quoteleft = 278;\\n    t.a = 556;\\n    t.b = 611;\\n    t.c = 556;\\n    t.d = 611;\\n    t.e = 556;\\n    t.f = 333;\\n    t.g = 611;\\n    t.h = 611;\\n    t.i = 278;\\n    t.j = 278;\\n    t.k = 556;\\n    t.l = 278;\\n    t.m = 889;\\n    t.n = 611;\\n    t.o = 611;\\n    t.p = 611;\\n    t.q = 611;\\n    t.r = 389;\\n    t.s = 556;\\n    t.t = 333;\\n    t.u = 611;\\n    t.v = 556;\\n    t.w = 778;\\n    t.x = 556;\\n    t.y = 556;\\n    t.z = 500;\\n    t.braceleft = 389;\\n    t.bar = 280;\\n    t.braceright = 389;\\n    t.asciitilde = 584;\\n    t.exclamdown = 333;\\n    t.cent = 556;\\n    t.sterling = 556;\\n    t.fraction = 167;\\n    t.yen = 556;\\n    t.florin = 556;\\n    t.section = 556;\\n    t.currency = 556;\\n    t.quotesingle = 238;\\n    t.quotedblleft = 500;\\n    t.guillemotleft = 556;\\n    t.guilsinglleft = 333;\\n    t.guilsinglright = 333;\\n    t.fi = 611;\\n    t.fl = 611;\\n    t.endash = 556;\\n    t.dagger = 556;\\n    t.daggerdbl = 556;\\n    t.periodcentered = 278;\\n    t.paragraph = 556;\\n    t.bullet = 350;\\n    t.quotesinglbase = 278;\\n    t.quotedblbase = 500;\\n    t.quotedblright = 500;\\n    t.guillemotright = 556;\\n    t.ellipsis = 1000;\\n    t.perthousand = 1000;\\n    t.questiondown = 611;\\n    t.grave = 333;\\n    t.acute = 333;\\n    t.circumflex = 333;\\n    t.tilde = 333;\\n    t.macron = 333;\\n    t.breve = 333;\\n    t.dotaccent = 333;\\n    t.dieresis = 333;\\n    t.ring = 333;\\n    t.cedilla = 333;\\n    t.hungarumlaut = 333;\\n    t.ogonek = 333;\\n    t.caron = 333;\\n    t.emdash = 1000;\\n    t.AE = 1000;\\n    t.ordfeminine = 370;\\n    t.Lslash = 611;\\n    t.Oslash = 778;\\n    t.OE = 1000;\\n    t.ordmasculine = 365;\\n    t.ae = 889;\\n    t.dotlessi = 278;\\n    t.lslash = 278;\\n    t.oslash = 611;\\n    t.oe = 944;\\n    t.germandbls = 611;\\n    t.Idieresis = 278;\\n    t.eacute = 556;\\n    t.abreve = 556;\\n    t.uhungarumlaut = 611;\\n    t.ecaron = 556;\\n    t.Ydieresis = 667;\\n    t.divide = 584;\\n    t.Yacute = 667;\\n    t.Acircumflex = 722;\\n    t.aacute = 556;\\n    t.Ucircumflex = 722;\\n    t.yacute = 556;\\n    t.scommaaccent = 556;\\n    t.ecircumflex = 556;\\n    t.Uring = 722;\\n    t.Udieresis = 722;\\n    t.aogonek = 556;\\n    t.Uacute = 722;\\n    t.uogonek = 611;\\n    t.Edieresis = 667;\\n    t.Dcroat = 722;\\n    t.commaaccent = 250;\\n    t.copyright = 737;\\n    t.Emacron = 667;\\n    t.ccaron = 556;\\n    t.aring = 556;\\n    t.Ncommaaccent = 722;\\n    t.lacute = 278;\\n    t.agrave = 556;\\n    t.Tcommaaccent = 611;\\n    t.Cacute = 722;\\n    t.atilde = 556;\\n    t.Edotaccent = 667;\\n    t.scaron = 556;\\n    t.scedilla = 556;\\n    t.iacute = 278;\\n    t.lozenge = 494;\\n    t.Rcaron = 722;\\n    t.Gcommaaccent = 778;\\n    t.ucircumflex = 611;\\n    t.acircumflex = 556;\\n    t.Amacron = 722;\\n    t.rcaron = 389;\\n    t.ccedilla = 556;\\n    t.Zdotaccent = 611;\\n    t.Thorn = 667;\\n    t.Omacron = 778;\\n    t.Racute = 722;\\n    t.Sacute = 667;\\n    t.dcaron = 743;\\n    t.Umacron = 722;\\n    t.uring = 611;\\n    t.threesuperior = 333;\\n    t.Ograve = 778;\\n    t.Agrave = 722;\\n    t.Abreve = 722;\\n    t.multiply = 584;\\n    t.uacute = 611;\\n    t.Tcaron = 611;\\n    t.partialdiff = 494;\\n    t.ydieresis = 556;\\n    t.Nacute = 722;\\n    t.icircumflex = 278;\\n    t.Ecircumflex = 667;\\n    t.adieresis = 556;\\n    t.edieresis = 556;\\n    t.cacute = 556;\\n    t.nacute = 611;\\n    t.umacron = 611;\\n    t.Ncaron = 722;\\n    t.Iacute = 278;\\n    t.plusminus = 584;\\n    t.brokenbar = 280;\\n    t.registered = 737;\\n    t.Gbreve = 778;\\n    t.Idotaccent = 278;\\n    t.summation = 600;\\n    t.Egrave = 667;\\n    t.racute = 389;\\n    t.omacron = 611;\\n    t.Zacute = 611;\\n    t.Zcaron = 611;\\n    t.greaterequal = 549;\\n    t.Eth = 722;\\n    t.Ccedilla = 722;\\n    t.lcommaaccent = 278;\\n    t.tcaron = 389;\\n    t.eogonek = 556;\\n    t.Uogonek = 722;\\n    t.Aacute = 722;\\n    t.Adieresis = 722;\\n    t.egrave = 556;\\n    t.zacute = 500;\\n    t.iogonek = 278;\\n    t.Oacute = 778;\\n    t.oacute = 611;\\n    t.amacron = 556;\\n    t.sacute = 556;\\n    t.idieresis = 278;\\n    t.Ocircumflex = 778;\\n    t.Ugrave = 722;\\n    t.Delta = 612;\\n    t.thorn = 611;\\n    t.twosuperior = 333;\\n    t.Odieresis = 778;\\n    t.mu = 611;\\n    t.igrave = 278;\\n    t.ohungarumlaut = 611;\\n    t.Eogonek = 667;\\n    t.dcroat = 611;\\n    t.threequarters = 834;\\n    t.Scedilla = 667;\\n    t.lcaron = 400;\\n    t.Kcommaaccent = 722;\\n    t.Lacute = 611;\\n    t.trademark = 1000;\\n    t.edotaccent = 556;\\n    t.Igrave = 278;\\n    t.Imacron = 278;\\n    t.Lcaron = 611;\\n    t.onehalf = 834;\\n    t.lessequal = 549;\\n    t.ocircumflex = 611;\\n    t.ntilde = 611;\\n    t.Uhungarumlaut = 722;\\n    t.Eacute = 667;\\n    t.emacron = 556;\\n    t.gbreve = 611;\\n    t.onequarter = 834;\\n    t.Scaron = 667;\\n    t.Scommaaccent = 667;\\n    t.Ohungarumlaut = 778;\\n    t.degree = 400;\\n    t.ograve = 611;\\n    t.Ccaron = 722;\\n    t.ugrave = 611;\\n    t.radical = 549;\\n    t.Dcaron = 722;\\n    t.rcommaaccent = 389;\\n    t.Ntilde = 722;\\n    t.otilde = 611;\\n    t.Rcommaaccent = 722;\\n    t.Lcommaaccent = 611;\\n    t.Atilde = 722;\\n    t.Aogonek = 722;\\n    t.Aring = 722;\\n    t.Otilde = 778;\\n    t.zdotaccent = 500;\\n    t.Ecaron = 667;\\n    t.Iogonek = 278;\\n    t.kcommaaccent = 556;\\n    t.minus = 584;\\n    t.Icircumflex = 278;\\n    t.ncaron = 611;\\n    t.tcommaaccent = 333;\\n    t.logicalnot = 584;\\n    t.odieresis = 611;\\n    t.udieresis = 611;\\n    t.notequal = 549;\\n    t.gcommaaccent = 611;\\n    t.eth = 611;\\n    t.zcaron = 500;\\n    t.ncommaaccent = 611;\\n    t.onesuperior = 333;\\n    t.imacron = 278;\\n    t.Euro = 556;\\n  });\\n  \u002F\u002F eslint-disable-next-line no-shadow\\n  t[\\\"Helvetica-BoldOblique\\\"] = getLookupTableFactory(function (t) {\\n    t.space = 278;\\n    t.exclam = 333;\\n    t.quotedbl = 474;\\n    t.numbersign = 556;\\n    t.dollar = 556;\\n    t.percent = 889;\\n    t.ampersand = 722;\\n    t.quoteright = 278;\\n    t.parenleft = 333;\\n    t.parenright = 333;\\n    t.asterisk = 389;\\n    t.plus = 584;\\n    t.comma = 278;\\n    t.hyphen = 333;\\n    t.period = 278;\\n    t.slash = 278;\\n    t.zero = 556;\\n    t.one = 556;\\n    t.two = 556;\\n    t.three = 556;\\n    t.four = 556;\\n    t.five = 556;\\n    t.six = 556;\\n    t.seven = 556;\\n    t.eight = 556;\\n    t.nine = 556;\\n    t.colon = 333;\\n    t.semicolon = 333;\\n    t.less = 584;\\n    t.equal = 584;\\n    t.greater = 584;\\n    t.question = 611;\\n    t.at = 975;\\n    t.A = 722;\\n    t.B = 722;\\n    t.C = 722;\\n    t.D = 722;\\n    t.E = 667;\\n    t.F = 611;\\n    t.G = 778;\\n    t.H = 722;\\n    t.I = 278;\\n    t.J = 556;\\n    t.K = 722;\\n    t.L = 611;\\n    t.M = 833;\\n    t.N = 722;\\n    t.O = 778;\\n    t.P = 667;\\n    t.Q = 778;\\n    t.R = 722;\\n    t.S = 667;\\n    t.T = 611;\\n    t.U = 722;\\n    t.V = 667;\\n    t.W = 944;\\n    t.X = 667;\\n    t.Y = 667;\\n    t.Z = 611;\\n    t.bracketleft = 333;\\n    t.backslash = 278;\\n    t.bracketright = 333;\\n    t.asciicircum = 584;\\n    t.underscore = 556;\\n    t.quoteleft = 278;\\n    t.a = 556;\\n    t.b = 611;\\n    t.c = 556;\\n    t.d = 611;\\n    t.e = 556;\\n    t.f = 333;\\n    t.g = 611;\\n    t.h = 611;\\n    t.i = 278;\\n    t.j = 278;\\n    t.k = 556;\\n    t.l = 278;\\n    t.m = 889;\\n    t.n = 611;\\n    t.o = 611;\\n    t.p = 611;\\n    t.q = 611;\\n    t.r = 389;\\n    t.s = 556;\\n    t.t = 333;\\n    t.u = 611;\\n    t.v = 556;\\n    t.w = 778;\\n    t.x = 556;\\n    t.y = 556;\\n    t.z = 500;\\n    t.braceleft = 389;\\n    t.bar = 280;\\n    t.braceright = 389;\\n    t.asciitilde = 584;\\n    t.exclamdown = 333;\\n    t.cent = 556;\\n    t.sterling = 556;\\n    t.fraction = 167;\\n    t.yen = 556;\\n    t.florin = 556;\\n    t.section = 556;\\n    t.currency = 556;\\n    t.quotesingle = 238;\\n    t.quotedblleft = 500;\\n    t.guillemotleft = 556;\\n    t.guilsinglleft = 333;\\n    t.guilsinglright = 333;\\n    t.fi = 611;\\n    t.fl = 611;\\n    t.endash = 556;\\n    t.dagger = 556;\\n    t.daggerdbl = 556;\\n    t.periodcentered = 278;\\n    t.paragraph = 556;\\n    t.bullet = 350;\\n    t.quotesinglbase = 278;\\n    t.quotedblbase = 500;\\n    t.quotedblright = 500;\\n    t.guillemotright = 556;\\n    t.ellipsis = 1000;\\n    t.perthousand = 1000;\\n    t.questiondown = 611;\\n    t.grave = 333;\\n    t.acute = 333;\\n    t.circumflex = 333;\\n    t.tilde = 333;\\n    t.macron = 333;\\n    t.breve = 333;\\n    t.dotaccent = 333;\\n    t.dieresis = 333;\\n    t.ring = 333;\\n    t.cedilla = 333;\\n    t.hungarumlaut = 333;\\n    t.ogonek = 333;\\n    t.caron = 333;\\n    t.emdash = 1000;\\n    t.AE = 1000;\\n    t.ordfeminine = 370;\\n    t.Lslash = 611;\\n    t.Oslash = 778;\\n    t.OE = 1000;\\n    t.ordmasculine = 365;\\n    t.ae = 889;\\n    t.dotlessi = 278;\\n    t.lslash = 278;\\n    t.oslash = 611;\\n    t.oe = 944;\\n    t.germandbls = 611;\\n    t.Idieresis = 278;\\n    t.eacute = 556;\\n    t.abreve = 556;\\n    t.uhungarumlaut = 611;\\n    t.ecaron = 556;\\n    t.Ydieresis = 667;\\n    t.divide = 584;\\n    t.Yacute = 667;\\n    t.Acircumflex = 722;\\n    t.aacute = 556;\\n    t.Ucircumflex = 722;\\n    t.yacute = 556;\\n    t.scommaaccent = 556;\\n    t.ecircumflex = 556;\\n    t.Uring = 722;\\n    t.Udieresis = 722;\\n    t.aogonek = 556;\\n    t.Uacute = 722;\\n    t.uogonek = 611;\\n    t.Edieresis = 667;\\n    t.Dcroat = 722;\\n    t.commaaccent = 250;\\n    t.copyright = 737;\\n    t.Emacron = 667;\\n    t.ccaron = 556;\\n    t.aring = 556;\\n    t.Ncommaaccent = 722;\\n    t.lacute = 278;\\n    t.agrave = 556;\\n    t.Tcommaaccent = 611;\\n    t.Cacute = 722;\\n    t.atilde = 556;\\n    t.Edotaccent = 667;\\n    t.scaron = 556;\\n    t.scedilla = 556;\\n    t.iacute = 278;\\n    t.lozenge = 494;\\n    t.Rcaron = 722;\\n    t.Gcommaaccent = 778;\\n    t.ucircumflex = 611;\\n    t.acircumflex = 556;\\n    t.Amacron = 722;\\n    t.rcaron = 389;\\n    t.ccedilla = 556;\\n    t.Zdotaccent = 611;\\n    t.Thorn = 667;\\n    t.Omacron = 778;\\n    t.Racute = 722;\\n    t.Sacute = 667;\\n    t.dcaron = 743;\\n    t.Umacron = 722;\\n    t.uring = 611;\\n    t.threesuperior = 333;\\n    t.Ograve = 778;\\n    t.Agrave = 722;\\n    t.Abreve = 722;\\n    t.multiply = 584;\\n    t.uacute = 611;\\n    t.Tcaron = 611;\\n    t.partialdiff = 494;\\n    t.ydieresis = 556;\\n    t.Nacute = 722;\\n    t.icircumflex = 278;\\n    t.Ecircumflex = 667;\\n    t.adieresis = 556;\\n    t.edieresis = 556;\\n    t.cacute = 556;\\n    t.nacute = 611;\\n    t.umacron = 611;\\n    t.Ncaron = 722;\\n    t.Iacute = 278;\\n    t.plusminus = 584;\\n    t.brokenbar = 280;\\n    t.registered = 737;\\n    t.Gbreve = 778;\\n    t.Idotaccent = 278;\\n    t.summation = 600;\\n    t.Egrave = 667;\\n    t.racute = 389;\\n    t.omacron = 611;\\n    t.Zacute = 611;\\n    t.Zcaron = 611;\\n    t.greaterequal = 549;\\n    t.Eth = 722;\\n    t.Ccedilla = 722;\\n    t.lcommaaccent = 278;\\n    t.tcaron = 389;\\n    t.eogonek = 556;\\n    t.Uogonek = 722;\\n    t.Aacute = 722;\\n    t.Adieresis = 722;\\n    t.egrave = 556;\\n    t.zacute = 500;\\n    t.iogonek = 278;\\n    t.Oacute = 778;\\n    t.oacute = 611;\\n    t.amacron = 556;\\n    t.sacute = 556;\\n    t.idieresis = 278;\\n    t.Ocircumflex = 778;\\n    t.Ugrave = 722;\\n    t.Delta = 612;\\n    t.thorn = 611;\\n    t.twosuperior = 333;\\n    t.Odieresis = 778;\\n    t.mu = 611;\\n    t.igrave = 278;\\n    t.ohungarumlaut = 611;\\n    t.Eogonek = 667;\\n    t.dcroat = 611;\\n    t.threequarters = 834;\\n    t.Scedilla = 667;\\n    t.lcaron = 400;\\n    t.Kcommaaccent = 722;\\n    t.Lacute = 611;\\n    t.trademark = 1000;\\n    t.edotaccent = 556;\\n    t.Igrave = 278;\\n    t.Imacron = 278;\\n    t.Lcaron = 611;\\n    t.onehalf = 834;\\n    t.lessequal = 549;\\n    t.ocircumflex = 611;\\n    t.ntilde = 611;\\n    t.Uhungarumlaut = 722;\\n    t.Eacute = 667;\\n    t.emacron = 556;\\n    t.gbreve = 611;\\n    t.onequarter = 834;\\n    t.Scaron = 667;\\n    t.Scommaaccent = 667;\\n    t.Ohungarumlaut = 778;\\n    t.degree = 400;\\n    t.ograve = 611;\\n    t.Ccaron = 722;\\n    t.ugrave = 611;\\n    t.radical = 549;\\n    t.Dcaron = 722;\\n    t.rcommaaccent = 389;\\n    t.Ntilde = 722;\\n    t.otilde = 611;\\n    t.Rcommaaccent = 722;\\n    t.Lcommaaccent = 611;\\n    t.Atilde = 722;\\n    t.Aogonek = 722;\\n    t.Aring = 722;\\n    t.Otilde = 778;\\n    t.zdotaccent = 500;\\n    t.Ecaron = 667;\\n    t.Iogonek = 278;\\n    t.kcommaaccent = 556;\\n    t.minus = 584;\\n    t.Icircumflex = 278;\\n    t.ncaron = 611;\\n    t.tcommaaccent = 333;\\n    t.logicalnot = 584;\\n    t.odieresis = 611;\\n    t.udieresis = 611;\\n    t.notequal = 549;\\n    t.gcommaaccent = 611;\\n    t.eth = 611;\\n    t.zcaron = 500;\\n    t.ncommaaccent = 611;\\n    t.onesuperior = 333;\\n    t.imacron = 278;\\n    t.Euro = 556;\\n  });\\n  \u002F\u002F eslint-disable-next-line no-shadow\\n  t[\\\"Helvetica-Oblique\\\"] = getLookupTableFactory(function (t) {\\n    t.space = 278;\\n    t.exclam = 278;\\n    t.quotedbl = 355;\\n    t.numbersign = 556;\\n    t.dollar = 556;\\n    t.percent = 889;\\n    t.ampersand = 667;\\n    t.quoteright = 222;\\n    t.parenleft = 333;\\n    t.parenright = 333;\\n    t.asterisk = 389;\\n    t.plus = 584;\\n    t.comma = 278;\\n    t.hyphen = 333;\\n    t.period = 278;\\n    t.slash = 278;\\n    t.zero = 556;\\n    t.one = 556;\\n    t.two = 556;\\n    t.three = 556;\\n    t.four = 556;\\n    t.five = 556;\\n    t.six = 556;\\n    t.seven = 556;\\n    t.eight = 556;\\n    t.nine = 556;\\n    t.colon = 278;\\n    t.semicolon = 278;\\n    t.less = 584;\\n    t.equal = 584;\\n    t.greater = 584;\\n    t.question = 556;\\n    t.at = 1015;\\n    t.A = 667;\\n    t.B = 667;\\n    t.C = 722;\\n    t.D = 722;\\n    t.E = 667;\\n    t.F = 611;\\n    t.G = 778;\\n    t.H = 722;\\n    t.I = 278;\\n    t.J = 500;\\n    t.K = 667;\\n    t.L = 556;\\n    t.M = 833;\\n    t.N = 722;\\n    t.O = 778;\\n    t.P = 667;\\n    t.Q = 778;\\n    t.R = 722;\\n    t.S = 667;\\n    t.T = 611;\\n    t.U = 722;\\n    t.V = 667;\\n    t.W = 944;\\n    t.X = 667;\\n    t.Y = 667;\\n    t.Z = 611;\\n    t.bracketleft = 278;\\n    t.backslash = 278;\\n    t.bracketright = 278;\\n    t.asciicircum = 469;\\n    t.underscore = 556;\\n    t.quoteleft = 222;\\n    t.a = 556;\\n    t.b = 556;\\n    t.c = 500;\\n    t.d = 556;\\n    t.e = 556;\\n    t.f = 278;\\n    t.g = 556;\\n    t.h = 556;\\n    t.i = 222;\\n    t.j = 222;\\n    t.k = 500;\\n    t.l = 222;\\n    t.m = 833;\\n    t.n = 556;\\n    t.o = 556;\\n    t.p = 556;\\n    t.q = 556;\\n    t.r = 333;\\n    t.s = 500;\\n    t.t = 278;\\n    t.u = 556;\\n    t.v = 500;\\n    t.w = 722;\\n    t.x = 500;\\n    t.y = 500;\\n    t.z = 500;\\n    t.braceleft = 334;\\n    t.bar = 260;\\n    t.braceright = 334;\\n    t.asciitilde = 584;\\n    t.exclamdown = 333;\\n    t.cent = 556;\\n    t.sterling = 556;\\n    t.fraction = 167;\\n    t.yen = 556;\\n    t.florin = 556;\\n    t.section = 556;\\n    t.currency = 556;\\n    t.quotesingle = 191;\\n    t.quotedblleft = 333;\\n    t.guillemotleft = 556;\\n    t.guilsinglleft = 333;\\n    t.guilsinglright = 333;\\n    t.fi = 500;\\n    t.fl = 500;\\n    t.endash = 556;\\n    t.dagger = 556;\\n    t.daggerdbl = 556;\\n    t.periodcentered = 278;\\n    t.paragraph = 537;\\n    t.bullet = 350;\\n    t.quotesinglbase = 222;\\n    t.quotedblbase = 333;\\n    t.quotedblright = 333;\\n    t.guillemotright = 556;\\n    t.ellipsis = 1000;\\n    t.perthousand = 1000;\\n    t.questiondown = 611;\\n    t.grave = 333;\\n    t.acute = 333;\\n    t.circumflex = 333;\\n    t.tilde = 333;\\n    t.macron = 333;\\n    t.breve = 333;\\n    t.dotaccent = 333;\\n    t.dieresis = 333;\\n    t.ring = 333;\\n    t.cedilla = 333;\\n    t.hungarumlaut = 333;\\n    t.ogonek = 333;\\n    t.caron = 333;\\n    t.emdash = 1000;\\n    t.AE = 1000;\\n    t.ordfeminine = 370;\\n    t.Lslash = 556;\\n    t.Oslash = 778;\\n    t.OE = 1000;\\n    t.ordmasculine = 365;\\n    t.ae = 889;\\n    t.dotlessi = 278;\\n    t.lslash = 222;\\n    t.oslash = 611;\\n    t.oe = 944;\\n    t.germandbls = 611;\\n    t.Idieresis = 278;\\n    t.eacute = 556;\\n    t.abreve = 556;\\n    t.uhungarumlaut = 556;\\n    t.ecaron = 556;\\n    t.Ydieresis = 667;\\n    t.divide = 584;\\n    t.Yacute = 667;\\n    t.Acircumflex = 667;\\n    t.aacute = 556;\\n    t.Ucircumflex = 722;\\n    t.yacute = 500;\\n    t.scommaaccent = 500;\\n    t.ecircumflex = 556;\\n    t.Uring = 722;\\n    t.Udieresis = 722;\\n    t.aogonek = 556;\\n    t.Uacute = 722;\\n    t.uogonek = 556;\\n    t.Edieresis = 667;\\n    t.Dcroat = 722;\\n    t.commaaccent = 250;\\n    t.copyright = 737;\\n    t.Emacron = 667;\\n    t.ccaron = 500;\\n    t.aring = 556;\\n    t.Ncommaaccent = 722;\\n    t.lacute = 222;\\n    t.agrave = 556;\\n    t.Tcommaaccent = 611;\\n    t.Cacute = 722;\\n    t.atilde = 556;\\n    t.Edotaccent = 667;\\n    t.scaron = 500;\\n    t.scedilla = 500;\\n    t.iacute = 278;\\n    t.lozenge = 471;\\n    t.Rcaron = 722;\\n    t.Gcommaaccent = 778;\\n    t.ucircumflex = 556;\\n    t.acircumflex = 556;\\n    t.Amacron = 667;\\n    t.rcaron = 333;\\n    t.ccedilla = 500;\\n    t.Zdotaccent = 611;\\n    t.Thorn = 667;\\n    t.Omacron = 778;\\n    t.Racute = 722;\\n    t.Sacute = 667;\\n    t.dcaron = 643;\\n    t.Umacron = 722;\\n    t.uring = 556;\\n    t.threesuperior = 333;\\n    t.Ograve = 778;\\n    t.Agrave = 667;\\n    t.Abreve = 667;\\n    t.multiply = 584;\\n    t.uacute = 556;\\n    t.Tcaron = 611;\\n    t.partialdiff = 476;\\n    t.ydieresis = 500;\\n    t.Nacute = 722;\\n    t.icircumflex = 278;\\n    t.Ecircumflex = 667;\\n    t.adieresis = 556;\\n    t.edieresis = 556;\\n    t.cacute = 500;\\n    t.nacute = 556;\\n    t.umacron = 556;\\n    t.Ncaron = 722;\\n    t.Iacute = 278;\\n    t.plusminus = 584;\\n    t.brokenbar = 260;\\n    t.registered = 737;\\n    t.Gbreve = 778;\\n    t.Idotaccent = 278;\\n    t.summation = 600;\\n    t.Egrave = 667;\\n    t.racute = 333;\\n    t.omacron = 556;\\n    t.Zacute = 611;\\n    t.Zcaron = 611;\\n    t.greaterequal = 549;\\n    t.Eth = 722;\\n    t.Ccedilla = 722;\\n    t.lcommaaccent = 222;\\n    t.tcaron = 317;\\n    t.eogonek = 556;\\n    t.Uogonek = 722;\\n    t.Aacute = 667;\\n    t.Adieresis = 667;\\n    t.egrave = 556;\\n    t.zacute = 500;\\n    t.iogonek = 222;\\n    t.Oacute = 778;\\n    t.oacute = 556;\\n    t.amacron = 556;\\n    t.sacute = 500;\\n    t.idieresis = 278;\\n    t.Ocircumflex = 778;\\n    t.Ugrave = 722;\\n    t.Delta = 612;\\n    t.thorn = 556;\\n    t.twosuperior = 333;\\n    t.Odieresis = 778;\\n    t.mu = 556;\\n    t.igrave = 278;\\n    t.ohungarumlaut = 556;\\n    t.Eogonek = 667;\\n    t.dcroat = 556;\\n    t.threequarters = 834;\\n    t.Scedilla = 667;\\n    t.lcaron = 299;\\n    t.Kcommaaccent = 667;\\n    t.Lacute = 556;\\n    t.trademark = 1000;\\n    t.edotaccent = 556;\\n    t.Igrave = 278;\\n    t.Imacron = 278;\\n    t.Lcaron = 556;\\n    t.onehalf = 834;\\n    t.lessequal = 549;\\n    t.ocircumflex = 556;\\n    t.ntilde = 556;\\n    t.Uhungarumlaut = 722;\\n    t.Eacute = 667;\\n    t.emacron = 556;\\n    t.gbreve = 556;\\n    t.onequarter = 834;\\n    t.Scaron = 667;\\n    t.Scommaaccent = 667;\\n    t.Ohungarumlaut = 778;\\n    t.degree = 400;\\n    t.ograve = 556;\\n    t.Ccaron = 722;\\n    t.ugrave = 556;\\n    t.radical = 453;\\n    t.Dcaron = 722;\\n    t.rcommaaccent = 333;\\n    t.Ntilde = 722;\\n    t.otilde = 556;\\n    t.Rcommaaccent = 722;\\n    t.Lcommaaccent = 556;\\n    t.Atilde = 667;\\n    t.Aogonek = 667;\\n    t.Aring = 667;\\n    t.Otilde = 778;\\n    t.zdotaccent = 500;\\n    t.Ecaron = 667;\\n    t.Iogonek = 278;\\n    t.kcommaaccent = 500;\\n    t.minus = 584;\\n    t.Icircumflex = 278;\\n    t.ncaron = 556;\\n    t.tcommaaccent = 278;\\n    t.logicalnot = 584;\\n    t.odieresis = 556;\\n    t.udieresis = 556;\\n    t.notequal = 549;\\n    t.gcommaaccent = 556;\\n    t.eth = 556;\\n    t.zcaron = 500;\\n    t.ncommaaccent = 556;\\n    t.onesuperior = 333;\\n    t.imacron = 278;\\n    t.Euro = 556;\\n  });\\n  \u002F\u002F eslint-disable-next-line no-shadow\\n  t.Symbol = getLookupTableFactory(function (t) {\\n    t.space = 250;\\n    t.exclam = 333;\\n    t.universal = 713;\\n    t.numbersign = 500;\\n    t.existential = 549;\\n    t.percent = 833;\\n    t.ampersand = 778;\\n    t.suchthat = 439;\\n    t.parenleft = 333;\\n    t.parenright = 333;\\n    t.asteriskmath = 500;\\n    t.plus = 549;\\n    t.comma = 250;\\n    t.minus = 549;\\n    t.period = 250;\\n    t.slash = 278;\\n    t.zero = 500;\\n    t.one = 500;\\n    t.two = 500;\\n    t.three = 500;\\n    t.four = 500;\\n    t.five = 500;\\n    t.six = 500;\\n    t.seven = 500;\\n    t.eight = 500;\\n    t.nine = 500;\\n    t.colon = 278;\\n    t.semicolon = 278;\\n    t.less = 549;\\n    t.equal = 549;\\n    t.greater = 549;\\n    t.question = 444;\\n    t.congruent = 549;\\n    t.Alpha = 722;\\n    t.Beta = 667;\\n    t.Chi = 722;\\n    t.Delta = 612;\\n    t.Epsilon = 611;\\n    t.Phi = 763;\\n    t.Gamma = 603;\\n    t.Eta = 722;\\n    t.Iota = 333;\\n    t.theta1 = 631;\\n    t.Kappa = 722;\\n    t.Lambda = 686;\\n    t.Mu = 889;\\n    t.Nu = 722;\\n    t.Omicron = 722;\\n    t.Pi = 768;\\n    t.Theta = 741;\\n    t.Rho = 556;\\n    t.Sigma = 592;\\n    t.Tau = 611;\\n    t.Upsilon = 690;\\n    t.sigma1 = 439;\\n    t.Omega = 768;\\n    t.Xi = 645;\\n    t.Psi = 795;\\n    t.Zeta = 611;\\n    t.bracketleft = 333;\\n    t.therefore = 863;\\n    t.bracketright = 333;\\n    t.perpendicular = 658;\\n    t.underscore = 500;\\n    t.radicalex = 500;\\n    t.alpha = 631;\\n    t.beta = 549;\\n    t.chi = 549;\\n    t.delta = 494;\\n    t.epsilon = 439;\\n    t.phi = 521;\\n    t.gamma = 411;\\n    t.eta = 603;\\n    t.iota = 329;\\n    t.phi1 = 603;\\n    t.kappa = 549;\\n    t.lambda = 549;\\n    t.mu = 576;\\n    t.nu = 521;\\n    t.omicron = 549;\\n    t.pi = 549;\\n    t.theta = 521;\\n    t.rho = 549;\\n    t.sigma = 603;\\n    t.tau = 439;\\n    t.upsilon = 576;\\n    t.omega1 = 713;\\n    t.omega = 686;\\n    t.xi = 493;\\n    t.psi = 686;\\n    t.zeta = 494;\\n    t.braceleft = 480;\\n    t.bar = 200;\\n    t.braceright = 480;\\n    t.similar = 549;\\n    t.Euro = 750;\\n    t.Upsilon1 = 620;\\n    t.minute = 247;\\n    t.lessequal = 549;\\n    t.fraction = 167;\\n    t.infinity = 713;\\n    t.florin = 500;\\n    t.club = 753;\\n    t.diamond = 753;\\n    t.heart = 753;\\n    t.spade = 753;\\n    t.arrowboth = 1042;\\n    t.arrowleft = 987;\\n    t.arrowup = 603;\\n    t.arrowright = 987;\\n    t.arrowdown = 603;\\n    t.degree = 400;\\n    t.plusminus = 549;\\n    t.second = 411;\\n    t.greaterequal = 549;\\n    t.multiply = 549;\\n    t.proportional = 713;\\n    t.partialdiff = 494;\\n    t.bullet = 460;\\n    t.divide = 549;\\n    t.notequal = 549;\\n    t.equivalence = 549;\\n    t.approxequal = 549;\\n    t.ellipsis = 1000;\\n    t.arrowvertex = 603;\\n    t.arrowhorizex = 1000;\\n    t.carriagereturn = 658;\\n    t.aleph = 823;\\n    t.Ifraktur = 686;\\n    t.Rfraktur = 795;\\n    t.weierstrass = 987;\\n    t.circlemultiply = 768;\\n    t.circleplus = 768;\\n    t.emptyset = 823;\\n    t.intersection = 768;\\n    t.union = 768;\\n    t.propersuperset = 713;\\n    t.reflexsuperset = 713;\\n    t.notsubset = 713;\\n    t.propersubset = 713;\\n    t.reflexsubset = 713;\\n    t.element = 713;\\n    t.notelement = 713;\\n    t.angle = 768;\\n    t.gradient = 713;\\n    t.registerserif = 790;\\n    t.copyrightserif = 790;\\n    t.trademarkserif = 890;\\n    t.product = 823;\\n    t.radical = 549;\\n    t.dotmath = 250;\\n    t.logicalnot = 713;\\n    t.logicaland = 603;\\n    t.logicalor = 603;\\n    t.arrowdblboth = 1042;\\n    t.arrowdblleft = 987;\\n    t.arrowdblup = 603;\\n    t.arrowdblright = 987;\\n    t.arrowdbldown = 603;\\n    t.lozenge = 494;\\n    t.angleleft = 329;\\n    t.registersans = 790;\\n    t.copyrightsans = 790;\\n    t.trademarksans = 786;\\n    t.summation = 713;\\n    t.parenlefttp = 384;\\n    t.parenleftex = 384;\\n    t.parenleftbt = 384;\\n    t.bracketlefttp = 384;\\n    t.bracketleftex = 384;\\n    t.bracketleftbt = 384;\\n    t.bracelefttp = 494;\\n    t.braceleftmid = 494;\\n    t.braceleftbt = 494;\\n    t.braceex = 494;\\n    t.angleright = 329;\\n    t.integral = 274;\\n    t.integraltp = 686;\\n    t.integralex = 686;\\n    t.integralbt = 686;\\n    t.parenrighttp = 384;\\n    t.parenrightex = 384;\\n    t.parenrightbt = 384;\\n    t.bracketrighttp = 384;\\n    t.bracketrightex = 384;\\n    t.bracketrightbt = 384;\\n    t.bracerighttp = 494;\\n    t.bracerightmid = 494;\\n    t.bracerightbt = 494;\\n    t.apple = 790;\\n  });\\n  \u002F\u002F eslint-disable-next-line no-shadow\\n  t[\\\"Times-Roman\\\"] = getLookupTableFactory(function (t) {\\n    t.space = 250;\\n    t.exclam = 333;\\n    t.quotedbl = 408;\\n    t.numbersign = 500;\\n    t.dollar = 500;\\n    t.percent = 833;\\n    t.ampersand = 778;\\n    t.quoteright = 333;\\n    t.parenleft = 333;\\n    t.parenright = 333;\\n    t.asterisk = 500;\\n    t.plus = 564;\\n    t.comma = 250;\\n    t.hyphen = 333;\\n    t.period = 250;\\n    t.slash = 278;\\n    t.zero = 500;\\n    t.one = 500;\\n    t.two = 500;\\n    t.three = 500;\\n    t.four = 500;\\n    t.five = 500;\\n    t.six = 500;\\n    t.seven = 500;\\n    t.eight = 500;\\n    t.nine = 500;\\n    t.colon = 278;\\n    t.semicolon = 278;\\n    t.less = 564;\\n    t.equal = 564;\\n    t.greater = 564;\\n    t.question = 444;\\n    t.at = 921;\\n    t.A = 722;\\n    t.B = 667;\\n    t.C = 667;\\n    t.D = 722;\\n    t.E = 611;\\n    t.F = 556;\\n    t.G = 722;\\n    t.H = 722;\\n    t.I = 333;\\n    t.J = 389;\\n    t.K = 722;\\n    t.L = 611;\\n    t.M = 889;\\n    t.N = 722;\\n    t.O = 722;\\n    t.P = 556;\\n    t.Q = 722;\\n    t.R = 667;\\n    t.S = 556;\\n    t.T = 611;\\n    t.U = 722;\\n    t.V = 722;\\n    t.W = 944;\\n    t.X = 722;\\n    t.Y = 722;\\n    t.Z = 611;\\n    t.bracketleft = 333;\\n    t.backslash = 278;\\n    t.bracketright = 333;\\n    t.asciicircum = 469;\\n    t.underscore = 500;\\n    t.quoteleft = 333;\\n    t.a = 444;\\n    t.b = 500;\\n    t.c = 444;\\n    t.d = 500;\\n    t.e = 444;\\n    t.f = 333;\\n    t.g = 500;\\n    t.h = 500;\\n    t.i = 278;\\n    t.j = 278;\\n    t.k = 500;\\n    t.l = 278;\\n    t.m = 778;\\n    t.n = 500;\\n    t.o = 500;\\n    t.p = 500;\\n    t.q = 500;\\n    t.r = 333;\\n    t.s = 389;\\n    t.t = 278;\\n    t.u = 500;\\n    t.v = 500;\\n    t.w = 722;\\n    t.x = 500;\\n    t.y = 500;\\n    t.z = 444;\\n    t.braceleft = 480;\\n    t.bar = 200;\\n    t.braceright = 480;\\n    t.asciitilde = 541;\\n    t.exclamdown = 333;\\n    t.cent = 500;\\n    t.sterling = 500;\\n    t.fraction = 167;\\n    t.yen = 500;\\n    t.florin = 500;\\n    t.section = 500;\\n    t.currency = 500;\\n    t.quotesingle = 180;\\n    t.quotedblleft = 444;\\n    t.guillemotleft = 500;\\n    t.guilsinglleft = 333;\\n    t.guilsinglright = 333;\\n    t.fi = 556;\\n    t.fl = 556;\\n    t.endash = 500;\\n    t.dagger = 500;\\n    t.daggerdbl = 500;\\n    t.periodcentered = 250;\\n    t.paragraph = 453;\\n    t.bullet = 350;\\n    t.quotesinglbase = 333;\\n    t.quotedblbase = 444;\\n    t.quotedblright = 444;\\n    t.guillemotright = 500;\\n    t.ellipsis = 1000;\\n    t.perthousand = 1000;\\n    t.questiondown = 444;\\n    t.grave = 333;\\n    t.acute = 333;\\n    t.circumflex = 333;\\n    t.tilde = 333;\\n    t.macron = 333;\\n    t.breve = 333;\\n    t.dotaccent = 333;\\n    t.dieresis = 333;\\n    t.ring = 333;\\n    t.cedilla = 333;\\n    t.hungarumlaut = 333;\\n    t.ogonek = 333;\\n    t.caron = 333;\\n    t.emdash = 1000;\\n    t.AE = 889;\\n    t.ordfeminine = 276;\\n    t.Lslash = 611;\\n    t.Oslash = 722;\\n    t.OE = 889;\\n    t.ordmasculine = 310;\\n    t.ae = 667;\\n    t.dotlessi = 278;\\n    t.lslash = 278;\\n    t.oslash = 500;\\n    t.oe = 722;\\n    t.germandbls = 500;\\n    t.Idieresis = 333;\\n    t.eacute = 444;\\n    t.abreve = 444;\\n    t.uhungarumlaut = 500;\\n    t.ecaron = 444;\\n    t.Ydieresis = 722;\\n    t.divide = 564;\\n    t.Yacute = 722;\\n    t.Acircumflex = 722;\\n    t.aacute = 444;\\n    t.Ucircumflex = 722;\\n    t.yacute = 500;\\n    t.scommaaccent = 389;\\n    t.ecircumflex = 444;\\n    t.Uring = 722;\\n    t.Udieresis = 722;\\n    t.aogonek = 444;\\n    t.Uacute = 722;\\n    t.uogonek = 500;\\n    t.Edieresis = 611;\\n    t.Dcroat = 722;\\n    t.commaaccent = 250;\\n    t.copyright = 760;\\n    t.Emacron = 611;\\n    t.ccaron = 444;\\n    t.aring = 444;\\n    t.Ncommaaccent = 722;\\n    t.lacute = 278;\\n    t.agrave = 444;\\n    t.Tcommaaccent = 611;\\n    t.Cacute = 667;\\n    t.atilde = 444;\\n    t.Edotaccent = 611;\\n    t.scaron = 389;\\n    t.scedilla = 389;\\n    t.iacute = 278;\\n    t.lozenge = 471;\\n    t.Rcaron = 667;\\n    t.Gcommaaccent = 722;\\n    t.ucircumflex = 500;\\n    t.acircumflex = 444;\\n    t.Amacron = 722;\\n    t.rcaron = 333;\\n    t.ccedilla = 444;\\n    t.Zdotaccent = 611;\\n    t.Thorn = 556;\\n    t.Omacron = 722;\\n    t.Racute = 667;\\n    t.Sacute = 556;\\n    t.dcaron = 588;\\n    t.Umacron = 722;\\n    t.uring = 500;\\n    t.threesuperior = 300;\\n    t.Ograve = 722;\\n    t.Agrave = 722;\\n    t.Abreve = 722;\\n    t.multiply = 564;\\n    t.uacute = 500;\\n    t.Tcaron = 611;\\n    t.partialdiff = 476;\\n    t.ydieresis = 500;\\n    t.Nacute = 722;\\n    t.icircumflex = 278;\\n    t.Ecircumflex = 611;\\n    t.adieresis = 444;\\n    t.edieresis = 444;\\n    t.cacute = 444;\\n    t.nacute = 500;\\n    t.umacron = 500;\\n    t.Ncaron = 722;\\n    t.Iacute = 333;\\n    t.plusminus = 564;\\n    t.brokenbar = 200;\\n    t.registered = 760;\\n    t.Gbreve = 722;\\n    t.Idotaccent = 333;\\n    t.summation = 600;\\n    t.Egrave = 611;\\n    t.racute = 333;\\n    t.omacron = 500;\\n    t.Zacute = 611;\\n    t.Zcaron = 611;\\n    t.greaterequal = 549;\\n    t.Eth = 722;\\n    t.Ccedilla = 667;\\n    t.lcommaaccent = 278;\\n    t.tcaron = 326;\\n    t.eogonek = 444;\\n    t.Uogonek = 722;\\n    t.Aacute = 722;\\n    t.Adieresis = 722;\\n    t.egrave = 444;\\n    t.zacute = 444;\\n    t.iogonek = 278;\\n    t.Oacute = 722;\\n    t.oacute = 500;\\n    t.amacron = 444;\\n    t.sacute = 389;\\n    t.idieresis = 278;\\n    t.Ocircumflex = 722;\\n    t.Ugrave = 722;\\n    t.Delta = 612;\\n    t.thorn = 500;\\n    t.twosuperior = 300;\\n    t.Odieresis = 722;\\n    t.mu = 500;\\n    t.igrave = 278;\\n    t.ohungarumlaut = 500;\\n    t.Eogonek = 611;\\n    t.dcroat = 500;\\n    t.threequarters = 750;\\n    t.Scedilla = 556;\\n    t.lcaron = 344;\\n    t.Kcommaaccent = 722;\\n    t.Lacute = 611;\\n    t.trademark = 980;\\n    t.edotaccent = 444;\\n    t.Igrave = 333;\\n    t.Imacron = 333;\\n    t.Lcaron = 611;\\n    t.onehalf = 750;\\n    t.lessequal = 549;\\n    t.ocircumflex = 500;\\n    t.ntilde = 500;\\n    t.Uhungarumlaut = 722;\\n    t.Eacute = 611;\\n    t.emacron = 444;\\n    t.gbreve = 500;\\n    t.onequarter = 750;\\n    t.Scaron = 556;\\n    t.Scommaaccent = 556;\\n    t.Ohungarumlaut = 722;\\n    t.degree = 400;\\n    t.ograve = 500;\\n    t.Ccaron = 667;\\n    t.ugrave = 500;\\n    t.radical = 453;\\n    t.Dcaron = 722;\\n    t.rcommaaccent = 333;\\n    t.Ntilde = 722;\\n    t.otilde = 500;\\n    t.Rcommaaccent = 667;\\n    t.Lcommaaccent = 611;\\n    t.Atilde = 722;\\n    t.Aogonek = 722;\\n    t.Aring = 722;\\n    t.Otilde = 722;\\n    t.zdotaccent = 444;\\n    t.Ecaron = 611;\\n    t.Iogonek = 333;\\n    t.kcommaaccent = 500;\\n    t.minus = 564;\\n    t.Icircumflex = 333;\\n    t.ncaron = 500;\\n    t.tcommaaccent = 278;\\n    t.logicalnot = 564;\\n    t.odieresis = 500;\\n    t.udieresis = 500;\\n    t.notequal = 549;\\n    t.gcommaaccent = 500;\\n    t.eth = 500;\\n    t.zcaron = 444;\\n    t.ncommaaccent = 500;\\n    t.onesuperior = 300;\\n    t.imacron = 278;\\n    t.Euro = 500;\\n  });\\n  \u002F\u002F eslint-disable-next-line no-shadow\\n  t[\\\"Times-Bold\\\"] = getLookupTableFactory(function (t) {\\n    t.space = 250;\\n    t.exclam = 333;\\n    t.quotedbl = 555;\\n    t.numbersign = 500;\\n    t.dollar = 500;\\n    t.percent = 1000;\\n    t.ampersand = 833;\\n    t.quoteright = 333;\\n    t.parenleft = 333;\\n    t.parenright = 333;\\n    t.asterisk = 500;\\n    t.plus = 570;\\n    t.comma = 250;\\n    t.hyphen = 333;\\n    t.period = 250;\\n    t.slash = 278;\\n    t.zero = 500;\\n    t.one = 500;\\n    t.two = 500;\\n    t.three = 500;\\n    t.four = 500;\\n    t.five = 500;\\n    t.six = 500;\\n    t.seven = 500;\\n    t.eight = 500;\\n    t.nine = 500;\\n    t.colon = 333;\\n    t.semicolon = 333;\\n    t.less = 570;\\n    t.equal = 570;\\n    t.greater = 570;\\n    t.question = 500;\\n    t.at = 930;\\n    t.A = 722;\\n    t.B = 667;\\n    t.C = 722;\\n    t.D = 722;\\n    t.E = 667;\\n    t.F = 611;\\n    t.G = 778;\\n    t.H = 778;\\n    t.I = 389;\\n    t.J = 500;\\n    t.K = 778;\\n    t.L = 667;\\n    t.M = 944;\\n    t.N = 722;\\n    t.O = 778;\\n    t.P = 611;\\n    t.Q = 778;\\n    t.R = 722;\\n    t.S = 556;\\n    t.T = 667;\\n    t.U = 722;\\n    t.V = 722;\\n    t.W = 1000;\\n    t.X = 722;\\n    t.Y = 722;\\n    t.Z = 667;\\n    t.bracketleft = 333;\\n    t.backslash = 278;\\n    t.bracketright = 333;\\n    t.asciicircum = 581;\\n    t.underscore = 500;\\n    t.quoteleft = 333;\\n    t.a = 500;\\n    t.b = 556;\\n    t.c = 444;\\n    t.d = 556;\\n    t.e = 444;\\n    t.f = 333;\\n    t.g = 500;\\n    t.h = 556;\\n    t.i = 278;\\n    t.j = 333;\\n    t.k = 556;\\n    t.l = 278;\\n    t.m = 833;\\n    t.n = 556;\\n    t.o = 500;\\n    t.p = 556;\\n    t.q = 556;\\n    t.r = 444;\\n    t.s = 389;\\n    t.t = 333;\\n    t.u = 556;\\n    t.v = 500;\\n    t.w = 722;\\n    t.x = 500;\\n    t.y = 500;\\n    t.z = 444;\\n    t.braceleft = 394;\\n    t.bar = 220;\\n    t.braceright = 394;\\n    t.asciitilde = 520;\\n    t.exclamdown = 333;\\n    t.cent = 500;\\n    t.sterling = 500;\\n    t.fraction = 167;\\n    t.yen = 500;\\n    t.florin = 500;\\n    t.section = 500;\\n    t.currency = 500;\\n    t.quotesingle = 278;\\n    t.quotedblleft = 500;\\n    t.guillemotleft = 500;\\n    t.guilsinglleft = 333;\\n    t.guilsinglright = 333;\\n    t.fi = 556;\\n    t.fl = 556;\\n    t.endash = 500;\\n    t.dagger = 500;\\n    t.daggerdbl = 500;\\n    t.periodcentered = 250;\\n    t.paragraph = 540;\\n    t.bullet = 350;\\n    t.quotesinglbase = 333;\\n    t.quotedblbase = 500;\\n    t.quotedblright = 500;\\n    t.guillemotright = 500;\\n    t.ellipsis = 1000;\\n    t.perthousand = 1000;\\n    t.questiondown = 500;\\n    t.grave = 333;\\n    t.acute = 333;\\n    t.circumflex = 333;\\n    t.tilde = 333;\\n    t.macron = 333;\\n    t.breve = 333;\\n    t.dotaccent = 333;\\n    t.dieresis = 333;\\n    t.ring = 333;\\n    t.cedilla = 333;\\n    t.hungarumlaut = 333;\\n    t.ogonek = 333;\\n    t.caron = 333;\\n    t.emdash = 1000;\\n    t.AE = 1000;\\n    t.ordfeminine = 300;\\n    t.Lslash = 667;\\n    t.Oslash = 778;\\n    t.OE = 1000;\\n    t.ordmasculine = 330;\\n    t.ae = 722;\\n    t.dotlessi = 278;\\n    t.lslash = 278;\\n    t.oslash = 500;\\n    t.oe = 722;\\n    t.germandbls = 556;\\n    t.Idieresis = 389;\\n    t.eacute = 444;\\n    t.abreve = 500;\\n    t.uhungarumlaut = 556;\\n    t.ecaron = 444;\\n    t.Ydieresis = 722;\\n    t.divide = 570;\\n    t.Yacute = 722;\\n    t.Acircumflex = 722;\\n    t.aacute = 500;\\n    t.Ucircumflex = 722;\\n    t.yacute = 500;\\n    t.scommaaccent = 389;\\n    t.ecircumflex = 444;\\n    t.Uring = 722;\\n    t.Udieresis = 722;\\n    t.aogonek = 500;\\n    t.Uacute = 722;\\n    t.uogonek = 556;\\n    t.Edieresis = 667;\\n    t.Dcroat = 722;\\n    t.commaaccent = 250;\\n    t.copyright = 747;\\n    t.Emacron = 667;\\n    t.ccaron = 444;\\n    t.aring = 500;\\n    t.Ncommaaccent = 722;\\n    t.lacute = 278;\\n    t.agrave = 500;\\n    t.Tcommaaccent = 667;\\n    t.Cacute = 722;\\n    t.atilde = 500;\\n    t.Edotaccent = 667;\\n    t.scaron = 389;\\n    t.scedilla = 389;\\n    t.iacute = 278;\\n    t.lozenge = 494;\\n    t.Rcaron = 722;\\n    t.Gcommaaccent = 778;\\n    t.ucircumflex = 556;\\n    t.acircumflex = 500;\\n    t.Amacron = 722;\\n    t.rcaron = 444;\\n    t.ccedilla = 444;\\n    t.Zdotaccent = 667;\\n    t.Thorn = 611;\\n    t.Omacron = 778;\\n    t.Racute = 722;\\n    t.Sacute = 556;\\n    t.dcaron = 672;\\n    t.Umacron = 722;\\n    t.uring = 556;\\n    t.threesuperior = 300;\\n    t.Ograve = 778;\\n    t.Agrave = 722;\\n    t.Abreve = 722;\\n    t.multiply = 570;\\n    t.uacute = 556;\\n    t.Tcaron = 667;\\n    t.partialdiff = 494;\\n    t.ydieresis = 500;\\n    t.Nacute = 722;\\n    t.icircumflex = 278;\\n    t.Ecircumflex = 667;\\n    t.adieresis = 500;\\n    t.edieresis = 444;\\n    t.cacute = 444;\\n    t.nacute = 556;\\n    t.umacron = 556;\\n    t.Ncaron = 722;\\n    t.Iacute = 389;\\n    t.plusminus = 570;\\n    t.brokenbar = 220;\\n    t.registered = 747;\\n    t.Gbreve = 778;\\n    t.Idotaccent = 389;\\n    t.summation = 600;\\n    t.Egrave = 667;\\n    t.racute = 444;\\n    t.omacron = 500;\\n    t.Zacute = 667;\\n    t.Zcaron = 667;\\n    t.greaterequal = 549;\\n    t.Eth = 722;\\n    t.Ccedilla = 722;\\n    t.lcommaaccent = 278;\\n    t.tcaron = 416;\\n    t.eogonek = 444;\\n    t.Uogonek = 722;\\n    t.Aacute = 722;\\n    t.Adieresis = 722;\\n    t.egrave = 444;\\n    t.zacute = 444;\\n    t.iogonek = 278;\\n    t.Oacute = 778;\\n    t.oacute = 500;\\n    t.amacron = 500;\\n    t.sacute = 389;\\n    t.idieresis = 278;\\n    t.Ocircumflex = 778;\\n    t.Ugrave = 722;\\n    t.Delta = 612;\\n    t.thorn = 556;\\n    t.twosuperior = 300;\\n    t.Odieresis = 778;\\n    t.mu = 556;\\n    t.igrave = 278;\\n    t.ohungarumlaut = 500;\\n    t.Eogonek = 667;\\n    t.dcroat = 556;\\n    t.threequarters = 750;\\n    t.Scedilla = 556;\\n    t.lcaron = 394;\\n    t.Kcommaaccent = 778;\\n    t.Lacute = 667;\\n    t.trademark = 1000;\\n    t.edotaccent = 444;\\n    t.Igrave = 389;\\n    t.Imacron = 389;\\n    t.Lcaron = 667;\\n    t.onehalf = 750;\\n    t.lessequal = 549;\\n    t.ocircumflex = 500;\\n    t.ntilde = 556;\\n    t.Uhungarumlaut = 722;\\n    t.Eacute = 667;\\n    t.emacron = 444;\\n    t.gbreve = 500;\\n    t.onequarter = 750;\\n    t.Scaron = 556;\\n    t.Scommaaccent = 556;\\n    t.Ohungarumlaut = 778;\\n    t.degree = 400;\\n    t.ograve = 500;\\n    t.Ccaron = 722;\\n    t.ugrave = 556;\\n    t.radical = 549;\\n    t.Dcaron = 722;\\n    t.rcommaaccent = 444;\\n    t.Ntilde = 722;\\n    t.otilde = 500;\\n    t.Rcommaaccent = 722;\\n    t.Lcommaaccent = 667;\\n    t.Atilde = 722;\\n    t.Aogonek = 722;\\n    t.Aring = 722;\\n    t.Otilde = 778;\\n    t.zdotaccent = 444;\\n    t.Ecaron = 667;\\n    t.Iogonek = 389;\\n    t.kcommaaccent = 556;\\n    t.minus = 570;\\n    t.Icircumflex = 389;\\n    t.ncaron = 556;\\n    t.tcommaaccent = 333;\\n    t.logicalnot = 570;\\n    t.odieresis = 500;\\n    t.udieresis = 556;\\n    t.notequal = 549;\\n    t.gcommaaccent = 500;\\n    t.eth = 500;\\n    t.zcaron = 444;\\n    t.ncommaaccent = 556;\\n    t.onesuperior = 300;\\n    t.imacron = 278;\\n    t.Euro = 500;\\n  });\\n  \u002F\u002F eslint-disable-next-line no-shadow\\n  t[\\\"Times-BoldItalic\\\"] = getLookupTableFactory(function (t) {\\n    t.space = 250;\\n    t.exclam = 389;\\n    t.quotedbl = 555;\\n    t.numbersign = 500;\\n    t.dollar = 500;\\n    t.percent = 833;\\n    t.ampersand = 778;\\n    t.quoteright = 333;\\n    t.parenleft = 333;\\n    t.parenright = 333;\\n    t.asterisk = 500;\\n    t.plus = 570;\\n    t.comma = 250;\\n    t.hyphen = 333;\\n    t.period = 250;\\n    t.slash = 278;\\n    t.zero = 500;\\n    t.one = 500;\\n    t.two = 500;\\n    t.three = 500;\\n    t.four = 500;\\n    t.five = 500;\\n    t.six = 500;\\n    t.seven = 500;\\n    t.eight = 500;\\n    t.nine = 500;\\n    t.colon = 333;\\n    t.semicolon = 333;\\n    t.less = 570;\\n    t.equal = 570;\\n    t.greater = 570;\\n    t.question = 500;\\n    t.at = 832;\\n    t.A = 667;\\n    t.B = 667;\\n    t.C = 667;\\n    t.D = 722;\\n    t.E = 667;\\n    t.F = 667;\\n    t.G = 722;\\n    t.H = 778;\\n    t.I = 389;\\n    t.J = 500;\\n    t.K = 667;\\n    t.L = 611;\\n    t.M = 889;\\n    t.N = 722;\\n    t.O = 722;\\n    t.P = 611;\\n    t.Q = 722;\\n    t.R = 667;\\n    t.S = 556;\\n    t.T = 611;\\n    t.U = 722;\\n    t.V = 667;\\n    t.W = 889;\\n    t.X = 667;\\n    t.Y = 611;\\n    t.Z = 611;\\n    t.bracketleft = 333;\\n    t.backslash = 278;\\n    t.bracketright = 333;\\n    t.asciicircum = 570;\\n    t.underscore = 500;\\n    t.quoteleft = 333;\\n    t.a = 500;\\n    t.b = 500;\\n    t.c = 444;\\n    t.d = 500;\\n    t.e = 444;\\n    t.f = 333;\\n    t.g = 500;\\n    t.h = 556;\\n    t.i = 278;\\n    t.j = 278;\\n    t.k = 500;\\n    t.l = 278;\\n    t.m = 778;\\n    t.n = 556;\\n    t.o = 500;\\n    t.p = 500;\\n    t.q = 500;\\n    t.r = 389;\\n    t.s = 389;\\n    t.t = 278;\\n    t.u = 556;\\n    t.v = 444;\\n    t.w = 667;\\n    t.x = 500;\\n    t.y = 444;\\n    t.z = 389;\\n    t.braceleft = 348;\\n    t.bar = 220;\\n    t.braceright = 348;\\n    t.asciitilde = 570;\\n    t.exclamdown = 389;\\n    t.cent = 500;\\n    t.sterling = 500;\\n    t.fraction = 167;\\n    t.yen = 500;\\n    t.florin = 500;\\n    t.section = 500;\\n    t.currency = 500;\\n    t.quotesingle = 278;\\n    t.quotedblleft = 500;\\n    t.guillemotleft = 500;\\n    t.guilsinglleft = 333;\\n    t.guilsinglright = 333;\\n    t.fi = 556;\\n    t.fl = 556;\\n    t.endash = 500;\\n    t.dagger = 500;\\n    t.daggerdbl = 500;\\n    t.periodcentered = 250;\\n    t.paragraph = 500;\\n    t.bullet = 350;\\n    t.quotesinglbase = 333;\\n    t.quotedblbase = 500;\\n    t.quotedblright = 500;\\n    t.guillemotright = 500;\\n    t.ellipsis = 1000;\\n    t.perthousand = 1000;\\n    t.questiondown = 500;\\n    t.grave = 333;\\n    t.acute = 333;\\n    t.circumflex = 333;\\n    t.tilde = 333;\\n    t.macron = 333;\\n    t.breve = 333;\\n    t.dotaccent = 333;\\n    t.dieresis = 333;\\n    t.ring = 333;\\n    t.cedilla = 333;\\n    t.hungarumlaut = 333;\\n    t.ogonek = 333;\\n    t.caron = 333;\\n    t.emdash = 1000;\\n    t.AE = 944;\\n    t.ordfeminine = 266;\\n    t.Lslash = 611;\\n    t.Oslash = 722;\\n    t.OE = 944;\\n    t.ordmasculine = 300;\\n    t.ae = 722;\\n    t.dotlessi = 278;\\n    t.lslash = 278;\\n    t.oslash = 500;\\n    t.oe = 722;\\n    t.germandbls = 500;\\n    t.Idieresis = 389;\\n    t.eacute = 444;\\n    t.abreve = 500;\\n    t.uhungarumlaut = 556;\\n    t.ecaron = 444;\\n    t.Ydieresis = 611;\\n    t.divide = 570;\\n    t.Yacute = 611;\\n    t.Acircumflex = 667;\\n    t.aacute = 500;\\n    t.Ucircumflex = 722;\\n    t.yacute = 444;\\n    t.scommaaccent = 389;\\n    t.ecircumflex = 444;\\n    t.Uring = 722;\\n    t.Udieresis = 722;\\n    t.aogonek = 500;\\n    t.Uacute = 722;\\n    t.uogonek = 556;\\n    t.Edieresis = 667;\\n    t.Dcroat = 722;\\n    t.commaaccent = 250;\\n    t.copyright = 747;\\n    t.Emacron = 667;\\n    t.ccaron = 444;\\n    t.aring = 500;\\n    t.Ncommaaccent = 722;\\n    t.lacute = 278;\\n    t.agrave = 500;\\n    t.Tcommaaccent = 611;\\n    t.Cacute = 667;\\n    t.atilde = 500;\\n    t.Edotaccent = 667;\\n    t.scaron = 389;\\n    t.scedilla = 389;\\n    t.iacute = 278;\\n    t.lozenge = 494;\\n    t.Rcaron = 667;\\n    t.Gcommaaccent = 722;\\n    t.ucircumflex = 556;\\n    t.acircumflex = 500;\\n    t.Amacron = 667;\\n    t.rcaron = 389;\\n    t.ccedilla = 444;\\n    t.Zdotaccent = 611;\\n    t.Thorn = 611;\\n    t.Omacron = 722;\\n    t.Racute = 667;\\n    t.Sacute = 556;\\n    t.dcaron = 608;\\n    t.Umacron = 722;\\n    t.uring = 556;\\n    t.threesuperior = 300;\\n    t.Ograve = 722;\\n    t.Agrave = 667;\\n    t.Abreve = 667;\\n    t.multiply = 570;\\n    t.uacute = 556;\\n    t.Tcaron = 611;\\n    t.partialdiff = 494;\\n    t.ydieresis = 444;\\n    t.Nacute = 722;\\n    t.icircumflex = 278;\\n    t.Ecircumflex = 667;\\n    t.adieresis = 500;\\n    t.edieresis = 444;\\n    t.cacute = 444;\\n    t.nacute = 556;\\n    t.umacron = 556;\\n    t.Ncaron = 722;\\n    t.Iacute = 389;\\n    t.plusminus = 570;\\n    t.brokenbar = 220;\\n    t.registered = 747;\\n    t.Gbreve = 722;\\n    t.Idotaccent = 389;\\n    t.summation = 600;\\n    t.Egrave = 667;\\n    t.racute = 389;\\n    t.omacron = 500;\\n    t.Zacute = 611;\\n    t.Zcaron = 611;\\n    t.greaterequal = 549;\\n    t.Eth = 722;\\n    t.Ccedilla = 667;\\n    t.lcommaaccent = 278;\\n    t.tcaron = 366;\\n    t.eogonek = 444;\\n    t.Uogonek = 722;\\n    t.Aacute = 667;\\n    t.Adieresis = 667;\\n    t.egrave = 444;\\n    t.zacute = 389;\\n    t.iogonek = 278;\\n    t.Oacute = 722;\\n    t.oacute = 500;\\n    t.amacron = 500;\\n    t.sacute = 389;\\n    t.idieresis = 278;\\n    t.Ocircumflex = 722;\\n    t.Ugrave = 722;\\n    t.Delta = 612;\\n    t.thorn = 500;\\n    t.twosuperior = 300;\\n    t.Odieresis = 722;\\n    t.mu = 576;\\n    t.igrave = 278;\\n    t.ohungarumlaut = 500;\\n    t.Eogonek = 667;\\n    t.dcroat = 500;\\n    t.threequarters = 750;\\n    t.Scedilla = 556;\\n    t.lcaron = 382;\\n    t.Kcommaaccent = 667;\\n    t.Lacute = 611;\\n    t.trademark = 1000;\\n    t.edotaccent = 444;\\n    t.Igrave = 389;\\n    t.Imacron = 389;\\n    t.Lcaron = 611;\\n    t.onehalf = 750;\\n    t.lessequal = 549;\\n    t.ocircumflex = 500;\\n    t.ntilde = 556;\\n    t.Uhungarumlaut = 722;\\n    t.Eacute = 667;\\n    t.emacron = 444;\\n    t.gbreve = 500;\\n    t.onequarter = 750;\\n    t.Scaron = 556;\\n    t.Scommaaccent = 556;\\n    t.Ohungarumlaut = 722;\\n    t.degree = 400;\\n    t.ograve = 500;\\n    t.Ccaron = 667;\\n    t.ugrave = 556;\\n    t.radical = 549;\\n    t.Dcaron = 722;\\n    t.rcommaaccent = 389;\\n    t.Ntilde = 722;\\n    t.otilde = 500;\\n    t.Rcommaaccent = 667;\\n    t.Lcommaaccent = 611;\\n    t.Atilde = 667;\\n    t.Aogonek = 667;\\n    t.Aring = 667;\\n    t.Otilde = 722;\\n    t.zdotaccent = 389;\\n    t.Ecaron = 667;\\n    t.Iogonek = 389;\\n    t.kcommaaccent = 500;\\n    t.minus = 606;\\n    t.Icircumflex = 389;\\n    t.ncaron = 556;\\n    t.tcommaaccent = 278;\\n    t.logicalnot = 606;\\n    t.odieresis = 500;\\n    t.udieresis = 556;\\n    t.notequal = 549;\\n    t.gcommaaccent = 500;\\n    t.eth = 500;\\n    t.zcaron = 389;\\n    t.ncommaaccent = 556;\\n    t.onesuperior = 300;\\n    t.imacron = 278;\\n    t.Euro = 500;\\n  });\\n  \u002F\u002F eslint-disable-next-line no-shadow\\n  t[\\\"Times-Italic\\\"] = getLookupTableFactory(function (t) {\\n    t.space = 250;\\n    t.exclam = 333;\\n    t.quotedbl = 420;\\n    t.numbersign = 500;\\n    t.dollar = 500;\\n    t.percent = 833;\\n    t.ampersand = 778;\\n    t.quoteright = 333;\\n    t.parenleft = 333;\\n    t.parenright = 333;\\n    t.asterisk = 500;\\n    t.plus = 675;\\n    t.comma = 250;\\n    t.hyphen = 333;\\n    t.period = 250;\\n    t.slash = 278;\\n    t.zero = 500;\\n    t.one = 500;\\n    t.two = 500;\\n    t.three = 500;\\n    t.four = 500;\\n    t.five = 500;\\n    t.six = 500;\\n    t.seven = 500;\\n    t.eight = 500;\\n    t.nine = 500;\\n    t.colon = 333;\\n    t.semicolon = 333;\\n    t.less = 675;\\n    t.equal = 675;\\n    t.greater = 675;\\n    t.question = 500;\\n    t.at = 920;\\n    t.A = 611;\\n    t.B = 611;\\n    t.C = 667;\\n    t.D = 722;\\n    t.E = 611;\\n    t.F = 611;\\n    t.G = 722;\\n    t.H = 722;\\n    t.I = 333;\\n    t.J = 444;\\n    t.K = 667;\\n    t.L = 556;\\n    t.M = 833;\\n    t.N = 667;\\n    t.O = 722;\\n    t.P = 611;\\n    t.Q = 722;\\n    t.R = 611;\\n    t.S = 500;\\n    t.T = 556;\\n    t.U = 722;\\n    t.V = 611;\\n    t.W = 833;\\n    t.X = 611;\\n    t.Y = 556;\\n    t.Z = 556;\\n    t.bracketleft = 389;\\n    t.backslash = 278;\\n    t.bracketright = 389;\\n    t.asciicircum = 422;\\n    t.underscore = 500;\\n    t.quoteleft = 333;\\n    t.a = 500;\\n    t.b = 500;\\n    t.c = 444;\\n    t.d = 500;\\n    t.e = 444;\\n    t.f = 278;\\n    t.g = 500;\\n    t.h = 500;\\n    t.i = 278;\\n    t.j = 278;\\n    t.k = 444;\\n    t.l = 278;\\n    t.m = 722;\\n    t.n = 500;\\n    t.o = 500;\\n    t.p = 500;\\n    t.q = 500;\\n    t.r = 389;\\n    t.s = 389;\\n    t.t = 278;\\n    t.u = 500;\\n    t.v = 444;\\n    t.w = 667;\\n    t.x = 444;\\n    t.y = 444;\\n    t.z = 389;\\n    t.braceleft = 400;\\n    t.bar = 275;\\n    t.braceright = 400;\\n    t.asciitilde = 541;\\n    t.exclamdown = 389;\\n    t.cent = 500;\\n    t.sterling = 500;\\n    t.fraction = 167;\\n    t.yen = 500;\\n    t.florin = 500;\\n    t.section = 500;\\n    t.currency = 500;\\n    t.quotesingle = 214;\\n    t.quotedblleft = 556;\\n    t.guillemotleft = 500;\\n    t.guilsinglleft = 333;\\n    t.guilsinglright = 333;\\n    t.fi = 500;\\n    t.fl = 500;\\n    t.endash = 500;\\n    t.dagger = 500;\\n    t.daggerdbl = 500;\\n    t.periodcentered = 250;\\n    t.paragraph = 523;\\n    t.bullet = 350;\\n    t.quotesinglbase = 333;\\n    t.quotedblbase = 556;\\n    t.quotedblright = 556;\\n    t.guillemotright = 500;\\n    t.ellipsis = 889;\\n    t.perthousand = 1000;\\n    t.questiondown = 500;\\n    t.grave = 333;\\n    t.acute = 333;\\n    t.circumflex = 333;\\n    t.tilde = 333;\\n    t.macron = 333;\\n    t.breve = 333;\\n    t.dotaccent = 333;\\n    t.dieresis = 333;\\n    t.ring = 333;\\n    t.cedilla = 333;\\n    t.hungarumlaut = 333;\\n    t.ogonek = 333;\\n    t.caron = 333;\\n    t.emdash = 889;\\n    t.AE = 889;\\n    t.ordfeminine = 276;\\n    t.Lslash = 556;\\n    t.Oslash = 722;\\n    t.OE = 944;\\n    t.ordmasculine = 310;\\n    t.ae = 667;\\n    t.dotlessi = 278;\\n    t.lslash = 278;\\n    t.oslash = 500;\\n    t.oe = 667;\\n    t.germandbls = 500;\\n    t.Idieresis = 333;\\n    t.eacute = 444;\\n    t.abreve = 500;\\n    t.uhungarumlaut = 500;\\n    t.ecaron = 444;\\n    t.Ydieresis = 556;\\n    t.divide = 675;\\n    t.Yacute = 556;\\n    t.Acircumflex = 611;\\n    t.aacute = 500;\\n    t.Ucircumflex = 722;\\n    t.yacute = 444;\\n    t.scommaaccent = 389;\\n    t.ecircumflex = 444;\\n    t.Uring = 722;\\n    t.Udieresis = 722;\\n    t.aogonek = 500;\\n    t.Uacute = 722;\\n    t.uogonek = 500;\\n    t.Edieresis = 611;\\n    t.Dcroat = 722;\\n    t.commaaccent = 250;\\n    t.copyright = 760;\\n    t.Emacron = 611;\\n    t.ccaron = 444;\\n    t.aring = 500;\\n    t.Ncommaaccent = 667;\\n    t.lacute = 278;\\n    t.agrave = 500;\\n    t.Tcommaaccent = 556;\\n    t.Cacute = 667;\\n    t.atilde = 500;\\n    t.Edotaccent = 611;\\n    t.scaron = 389;\\n    t.scedilla = 389;\\n    t.iacute = 278;\\n    t.lozenge = 471;\\n    t.Rcaron = 611;\\n    t.Gcommaaccent = 722;\\n    t.ucircumflex = 500;\\n    t.acircumflex = 500;\\n    t.Amacron = 611;\\n    t.rcaron = 389;\\n    t.ccedilla = 444;\\n    t.Zdotaccent = 556;\\n    t.Thorn = 611;\\n    t.Omacron = 722;\\n    t.Racute = 611;\\n    t.Sacute = 500;\\n    t.dcaron = 544;\\n    t.Umacron = 722;\\n    t.uring = 500;\\n    t.threesuperior = 300;\\n    t.Ograve = 722;\\n    t.Agrave = 611;\\n    t.Abreve = 611;\\n    t.multiply = 675;\\n    t.uacute = 500;\\n    t.Tcaron = 556;\\n    t.partialdiff = 476;\\n    t.ydieresis = 444;\\n    t.Nacute = 667;\\n    t.icircumflex = 278;\\n    t.Ecircumflex = 611;\\n    t.adieresis = 500;\\n    t.edieresis = 444;\\n    t.cacute = 444;\\n    t.nacute = 500;\\n    t.umacron = 500;\\n    t.Ncaron = 667;\\n    t.Iacute = 333;\\n    t.plusminus = 675;\\n    t.brokenbar = 275;\\n    t.registered = 760;\\n    t.Gbreve = 722;\\n    t.Idotaccent = 333;\\n    t.summation = 600;\\n    t.Egrave = 611;\\n    t.racute = 389;\\n    t.omacron = 500;\\n    t.Zacute = 556;\\n    t.Zcaron = 556;\\n    t.greaterequal = 549;\\n    t.Eth = 722;\\n    t.Ccedilla = 667;\\n    t.lcommaaccent = 278;\\n    t.tcaron = 300;\\n    t.eogonek = 444;\\n    t.Uogonek = 722;\\n    t.Aacute = 611;\\n    t.Adieresis = 611;\\n    t.egrave = 444;\\n    t.zacute = 389;\\n    t.iogonek = 278;\\n    t.Oacute = 722;\\n    t.oacute = 500;\\n    t.amacron = 500;\\n    t.sacute = 389;\\n    t.idieresis = 278;\\n    t.Ocircumflex = 722;\\n    t.Ugrave = 722;\\n    t.Delta = 612;\\n    t.thorn = 500;\\n    t.twosuperior = 300;\\n    t.Odieresis = 722;\\n    t.mu = 500;\\n    t.igrave = 278;\\n    t.ohungarumlaut = 500;\\n    t.Eogonek = 611;\\n    t.dcroat = 500;\\n    t.threequarters = 750;\\n    t.Scedilla = 500;\\n    t.lcaron = 300;\\n    t.Kcommaaccent = 667;\\n    t.Lacute = 556;\\n    t.trademark = 980;\\n    t.edotaccent = 444;\\n    t.Igrave = 333;\\n    t.Imacron = 333;\\n    t.Lcaron = 611;\\n    t.onehalf = 750;\\n    t.lessequal = 549;\\n    t.ocircumflex = 500;\\n    t.ntilde = 500;\\n    t.Uhungarumlaut = 722;\\n    t.Eacute = 611;\\n    t.emacron = 444;\\n    t.gbreve = 500;\\n    t.onequarter = 750;\\n    t.Scaron = 500;\\n    t.Scommaaccent = 500;\\n    t.Ohungarumlaut = 722;\\n    t.degree = 400;\\n    t.ograve = 500;\\n    t.Ccaron = 667;\\n    t.ugrave = 500;\\n    t.radical = 453;\\n    t.Dcaron = 722;\\n    t.rcommaaccent = 389;\\n    t.Ntilde = 667;\\n    t.otilde = 500;\\n    t.Rcommaaccent = 611;\\n    t.Lcommaaccent = 556;\\n    t.Atilde = 611;\\n    t.Aogonek = 611;\\n    t.Aring = 611;\\n    t.Otilde = 722;\\n    t.zdotaccent = 389;\\n    t.Ecaron = 611;\\n    t.Iogonek = 333;\\n    t.kcommaaccent = 444;\\n    t.minus = 675;\\n    t.Icircumflex = 333;\\n    t.ncaron = 500;\\n    t.tcommaaccent = 278;\\n    t.logicalnot = 675;\\n    t.odieresis = 500;\\n    t.udieresis = 500;\\n    t.notequal = 549;\\n    t.gcommaaccent = 500;\\n    t.eth = 500;\\n    t.zcaron = 389;\\n    t.ncommaaccent = 500;\\n    t.onesuperior = 300;\\n    t.imacron = 278;\\n    t.Euro = 500;\\n  });\\n  \u002F\u002F eslint-disable-next-line no-shadow\\n  t.ZapfDingbats = getLookupTableFactory(function (t) {\\n    t.space = 278;\\n    t.a1 = 974;\\n    t.a2 = 961;\\n    t.a202 = 974;\\n    t.a3 = 980;\\n    t.a4 = 719;\\n    t.a5 = 789;\\n    t.a119 = 790;\\n    t.a118 = 791;\\n    t.a117 = 690;\\n    t.a11 = 960;\\n    t.a12 = 939;\\n    t.a13 = 549;\\n    t.a14 = 855;\\n    t.a15 = 911;\\n    t.a16 = 933;\\n    t.a105 = 911;\\n    t.a17 = 945;\\n    t.a18 = 974;\\n    t.a19 = 755;\\n    t.a20 = 846;\\n    t.a21 = 762;\\n    t.a22 = 761;\\n    t.a23 = 571;\\n    t.a24 = 677;\\n    t.a25 = 763;\\n    t.a26 = 760;\\n    t.a27 = 759;\\n    t.a28 = 754;\\n    t.a6 = 494;\\n    t.a7 = 552;\\n    t.a8 = 537;\\n    t.a9 = 577;\\n    t.a10 = 692;\\n    t.a29 = 786;\\n    t.a30 = 788;\\n    t.a31 = 788;\\n    t.a32 = 790;\\n    t.a33 = 793;\\n    t.a34 = 794;\\n    t.a35 = 816;\\n    t.a36 = 823;\\n    t.a37 = 789;\\n    t.a38 = 841;\\n    t.a39 = 823;\\n    t.a40 = 833;\\n    t.a41 = 816;\\n    t.a42 = 831;\\n    t.a43 = 923;\\n    t.a44 = 744;\\n    t.a45 = 723;\\n    t.a46 = 749;\\n    t.a47 = 790;\\n    t.a48 = 792;\\n    t.a49 = 695;\\n    t.a50 = 776;\\n    t.a51 = 768;\\n    t.a52 = 792;\\n    t.a53 = 759;\\n    t.a54 = 707;\\n    t.a55 = 708;\\n    t.a56 = 682;\\n    t.a57 = 701;\\n    t.a58 = 826;\\n    t.a59 = 815;\\n    t.a60 = 789;\\n    t.a61 = 789;\\n    t.a62 = 707;\\n    t.a63 = 687;\\n    t.a64 = 696;\\n    t.a65 = 689;\\n    t.a66 = 786;\\n    t.a67 = 787;\\n    t.a68 = 713;\\n    t.a69 = 791;\\n    t.a70 = 785;\\n    t.a71 = 791;\\n    t.a72 = 873;\\n    t.a73 = 761;\\n    t.a74 = 762;\\n    t.a203 = 762;\\n    t.a75 = 759;\\n    t.a204 = 759;\\n    t.a76 = 892;\\n    t.a77 = 892;\\n    t.a78 = 788;\\n    t.a79 = 784;\\n    t.a81 = 438;\\n    t.a82 = 138;\\n    t.a83 = 277;\\n    t.a84 = 415;\\n    t.a97 = 392;\\n    t.a98 = 392;\\n    t.a99 = 668;\\n    t.a100 = 668;\\n    t.a89 = 390;\\n    t.a90 = 390;\\n    t.a93 = 317;\\n    t.a94 = 317;\\n    t.a91 = 276;\\n    t.a92 = 276;\\n    t.a205 = 509;\\n    t.a85 = 509;\\n    t.a206 = 410;\\n    t.a86 = 410;\\n    t.a87 = 234;\\n    t.a88 = 234;\\n    t.a95 = 334;\\n    t.a96 = 334;\\n    t.a101 = 732;\\n    t.a102 = 544;\\n    t.a103 = 544;\\n    t.a104 = 910;\\n    t.a106 = 667;\\n    t.a107 = 760;\\n    t.a108 = 760;\\n    t.a112 = 776;\\n    t.a111 = 595;\\n    t.a110 = 694;\\n    t.a109 = 626;\\n    t.a120 = 788;\\n    t.a121 = 788;\\n    t.a122 = 788;\\n    t.a123 = 788;\\n    t.a124 = 788;\\n    t.a125 = 788;\\n    t.a126 = 788;\\n    t.a127 = 788;\\n    t.a128 = 788;\\n    t.a129 = 788;\\n    t.a130 = 788;\\n    t.a131 = 788;\\n    t.a132 = 788;\\n    t.a133 = 788;\\n    t.a134 = 788;\\n    t.a135 = 788;\\n    t.a136 = 788;\\n    t.a137 = 788;\\n    t.a138 = 788;\\n    t.a139 = 788;\\n    t.a140 = 788;\\n    t.a141 = 788;\\n    t.a142 = 788;\\n    t.a143 = 788;\\n    t.a144 = 788;\\n    t.a145 = 788;\\n    t.a146 = 788;\\n    t.a147 = 788;\\n    t.a148 = 788;\\n    t.a149 = 788;\\n    t.a150 = 788;\\n    t.a151 = 788;\\n    t.a152 = 788;\\n    t.a153 = 788;\\n    t.a154 = 788;\\n    t.a155 = 788;\\n    t.a156 = 788;\\n    t.a157 = 788;\\n    t.a158 = 788;\\n    t.a159 = 788;\\n    t.a160 = 894;\\n    t.a161 = 838;\\n    t.a163 = 1016;\\n    t.a164 = 458;\\n    t.a196 = 748;\\n    t.a165 = 924;\\n    t.a192 = 748;\\n    t.a166 = 918;\\n    t.a167 = 927;\\n    t.a168 = 928;\\n    t.a169 = 928;\\n    t.a170 = 834;\\n    t.a171 = 873;\\n    t.a172 = 828;\\n    t.a173 = 924;\\n    t.a162 = 924;\\n    t.a174 = 917;\\n    t.a175 = 930;\\n    t.a176 = 931;\\n    t.a177 = 463;\\n    t.a178 = 883;\\n    t.a179 = 836;\\n    t.a193 = 836;\\n    t.a180 = 867;\\n    t.a199 = 867;\\n    t.a181 = 696;\\n    t.a200 = 696;\\n    t.a182 = 874;\\n    t.a201 = 874;\\n    t.a183 = 760;\\n    t.a184 = 946;\\n    t.a197 = 771;\\n    t.a185 = 865;\\n    t.a194 = 771;\\n    t.a198 = 888;\\n    t.a186 = 967;\\n    t.a195 = 888;\\n    t.a187 = 831;\\n    t.a188 = 873;\\n    t.a189 = 927;\\n    t.a190 = 970;\\n    t.a191 = 918;\\n  });\\n});\\n\\nconst getFontBasicMetrics = getLookupTableFactory(function (t) {\\n  t.Courier = {\\n    ascent: 629,\\n    descent: -157,\\n    capHeight: 562,\\n    xHeight: -426,\\n  };\\n  t[\\\"Courier-Bold\\\"] = {\\n    ascent: 629,\\n    descent: -157,\\n    capHeight: 562,\\n    xHeight: 439,\\n  };\\n  t[\\\"Courier-Oblique\\\"] = {\\n    ascent: 629,\\n    descent: -157,\\n    capHeight: 562,\\n    xHeight: 426,\\n  };\\n  t[\\\"Courier-BoldOblique\\\"] = {\\n    ascent: 629,\\n    descent: -157,\\n    capHeight: 562,\\n    xHeight: 426,\\n  };\\n  t.Helvetica = {\\n    ascent: 718,\\n    descent: -207,\\n    capHeight: 718,\\n    xHeight: 523,\\n  };\\n  t[\\\"Helvetica-Bold\\\"] = {\\n    ascent: 718,\\n    descent: -207,\\n    capHeight: 718,\\n    xHeight: 532,\\n  };\\n  t[\\\"Helvetica-Oblique\\\"] = {\\n    ascent: 718,\\n    descent: -207,\\n    capHeight: 718,\\n    xHeight: 523,\\n  };\\n  t[\\\"Helvetica-BoldOblique\\\"] = {\\n    ascent: 718,\\n    descent: -207,\\n    capHeight: 718,\\n    xHeight: 532,\\n  };\\n  t[\\\"Times-Roman\\\"] = {\\n    ascent: 683,\\n    descent: -217,\\n    capHeight: 662,\\n    xHeight: 450,\\n  };\\n  t[\\\"Times-Bold\\\"] = {\\n    ascent: 683,\\n    descent: -217,\\n    capHeight: 676,\\n    xHeight: 461,\\n  };\\n  t[\\\"Times-Italic\\\"] = {\\n    ascent: 683,\\n    descent: -217,\\n    capHeight: 653,\\n    xHeight: 441,\\n  };\\n  t[\\\"Times-BoldItalic\\\"] = {\\n    ascent: 683,\\n    descent: -217,\\n    capHeight: 669,\\n    xHeight: 462,\\n  };\\n  t.Symbol = {\\n    ascent: Math.NaN,\\n    descent: Math.NaN,\\n    capHeight: Math.NaN,\\n    xHeight: Math.NaN,\\n  };\\n  t.ZapfDingbats = {\\n    ascent: Math.NaN,\\n    descent: Math.NaN,\\n    capHeight: Math.NaN,\\n    xHeight: Math.NaN,\\n  };\\n});\\n\\nexport { getFontBasicMetrics, getMetrics };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nconst ON_CURVE_POINT = 1 \u003C\u003C 0;\\nconst X_SHORT_VECTOR = 1 \u003C\u003C 1;\\nconst Y_SHORT_VECTOR = 1 \u003C\u003C 2;\\nconst REPEAT_FLAG = 1 \u003C\u003C 3;\\nconst X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR = 1 \u003C\u003C 4;\\nconst Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR = 1 \u003C\u003C 5;\\nconst OVERLAP_SIMPLE = 1 \u003C\u003C 6;\\n\\nconst ARG_1_AND_2_ARE_WORDS = 1 \u003C\u003C 0;\\nconst ARGS_ARE_XY_VALUES = 1 \u003C\u003C 1;\\n\u002F\u002F const ROUND_XY_TO_GRID = 1 \u003C\u003C 2;\\nconst WE_HAVE_A_SCALE = 1 \u003C\u003C 3;\\nconst MORE_COMPONENTS = 1 \u003C\u003C 5;\\nconst WE_HAVE_AN_X_AND_Y_SCALE = 1 \u003C\u003C 6;\\nconst WE_HAVE_A_TWO_BY_TWO = 1 \u003C\u003C 7;\\nconst WE_HAVE_INSTRUCTIONS = 1 \u003C\u003C 8;\\n\u002F\u002F const USE_MY_METRICS = 1 \u003C\u003C 9;\\n\u002F\u002F const OVERLAP_COMPOUND = 1 \u003C\u003C 10;\\n\u002F\u002F const SCALED_COMPONENT_OFFSET = 1 \u003C\u003C 11;\\n\u002F\u002F const UNSCALED_COMPONENT_OFFSET = 1 \u003C\u003C 12;\\n\\n\u002F**\\n * GlyfTable object represents a glyf table containing glyph information:\\n *  - glyph header (xMin, yMin, xMax, yMax);\\n *  - contours if any;\\n *  - components if the glyph is a composite.\\n *\\n * It's possible to re-scale each glyph in order to have a new font which\\n * exactly fits an other one: the goal is to be able to build some substitution\\n * font for well-known fonts (Myriad, Arial, ...).\\n *\\n * A full description of glyf table can be found here\\n * https:\u002F\u002Fdeveloper.apple.com\u002Ffonts\u002FTrueType-Reference-Manual\u002FRM06\u002FChap6glyf.html\\n *\u002F\\nclass GlyfTable {\\n  constructor({ glyfTable, isGlyphLocationsLong, locaTable, numGlyphs }) {\\n    this.glyphs = [];\\n    const loca = new DataView(\\n      locaTable.buffer,\\n      locaTable.byteOffset,\\n      locaTable.byteLength\\n    );\\n    const glyf = new DataView(\\n      glyfTable.buffer,\\n      glyfTable.byteOffset,\\n      glyfTable.byteLength\\n    );\\n    const offsetSize = isGlyphLocationsLong ? 4 : 2;\\n    let prev = isGlyphLocationsLong ? loca.getUint32(0) : 2 * loca.getUint16(0);\\n    let pos = 0;\\n    for (let i = 0; i \u003C numGlyphs; i++) {\\n      pos += offsetSize;\\n      const next = isGlyphLocationsLong\\n        ? loca.getUint32(pos)\\n        : 2 * loca.getUint16(pos);\\n      if (next === prev) {\\n        this.glyphs.push(new Glyph({}));\\n        continue;\\n      }\\n\\n      const glyph = Glyph.parse(prev, glyf);\\n      this.glyphs.push(glyph);\\n\\n      prev = next;\\n    }\\n  }\\n\\n  getSize() {\\n    return this.glyphs.reduce((a, g) => {\\n      const size = g.getSize();\\n      \u002F\u002F Round to next multiple of 4 if needed.\\n      return a + ((size + 3) & ~3);\\n    }, 0);\\n  }\\n\\n  write() {\\n    const totalSize = this.getSize();\\n    const glyfTable = new DataView(new ArrayBuffer(totalSize));\\n    const isLocationLong = totalSize > \u002F* 0xffff * 2 *\u002F 0x1fffe;\\n    const offsetSize = isLocationLong ? 4 : 2;\\n    const locaTable = new DataView(\\n      new ArrayBuffer((this.glyphs.length + 1) * offsetSize)\\n    );\\n\\n    if (isLocationLong) {\\n      locaTable.setUint32(0, 0);\\n    } else {\\n      locaTable.setUint16(0, 0);\\n    }\\n\\n    let pos = 0;\\n    let locaIndex = 0;\\n    for (const glyph of this.glyphs) {\\n      pos += glyph.write(pos, glyfTable);\\n      \u002F\u002F Round to next multiple of 4 if needed.\\n      pos = (pos + 3) & ~3;\\n\\n      locaIndex += offsetSize;\\n      if (isLocationLong) {\\n        locaTable.setUint32(locaIndex, pos);\\n      } else {\\n        locaTable.setUint16(locaIndex, pos >> 1);\\n      }\\n    }\\n\\n    return {\\n      isLocationLong,\\n      loca: new Uint8Array(locaTable.buffer),\\n      glyf: new Uint8Array(glyfTable.buffer),\\n    };\\n  }\\n\\n  scale(factors) {\\n    for (let i = 0, ii = this.glyphs.length; i \u003C ii; i++) {\\n      this.glyphs[i].scale(factors[i]);\\n    }\\n  }\\n}\\n\\nclass Glyph {\\n  constructor({ header = null, simple = null, composites = null }) {\\n    this.header = header;\\n    this.simple = simple;\\n    this.composites = composites;\\n  }\\n\\n  static parse(pos, glyf) {\\n    const [read, header] = GlyphHeader.parse(pos, glyf);\\n    pos += read;\\n\\n    if (header.numberOfContours \u003C 0) {\\n      \u002F\u002F Composite glyph.\\n      const composites = [];\\n      while (true) {\\n        const [n, composite] = CompositeGlyph.parse(pos, glyf);\\n        pos += n;\\n        composites.push(composite);\\n        if (!(composite.flags & MORE_COMPONENTS)) {\\n          break;\\n        }\\n      }\\n\\n      return new Glyph({ header, composites });\\n    }\\n\\n    const simple = SimpleGlyph.parse(pos, glyf, header.numberOfContours);\\n\\n    return new Glyph({ header, simple });\\n  }\\n\\n  getSize() {\\n    if (!this.header) {\\n      return 0;\\n    }\\n    const size = this.simple\\n      ? this.simple.getSize()\\n      : this.composites.reduce((a, c) => a + c.getSize(), 0);\\n    return this.header.getSize() + size;\\n  }\\n\\n  write(pos, buf) {\\n    if (!this.header) {\\n      return 0;\\n    }\\n\\n    const spos = pos;\\n    pos += this.header.write(pos, buf);\\n    if (this.simple) {\\n      pos += this.simple.write(pos, buf);\\n    } else {\\n      for (const composite of this.composites) {\\n        pos += composite.write(pos, buf);\\n      }\\n    }\\n\\n    return pos - spos;\\n  }\\n\\n  scale(factor) {\\n    if (!this.header) {\\n      return;\\n    }\\n\\n    const xMiddle = (this.header.xMin + this.header.xMax) \u002F 2;\\n    this.header.scale(xMiddle, factor);\\n    if (this.simple) {\\n      this.simple.scale(xMiddle, factor);\\n    } else {\\n      for (const composite of this.composites) {\\n        composite.scale(xMiddle, factor);\\n      }\\n    }\\n  }\\n}\\n\\nclass GlyphHeader {\\n  constructor({ numberOfContours, xMin, yMin, xMax, yMax }) {\\n    this.numberOfContours = numberOfContours;\\n    this.xMin = xMin;\\n    this.yMin = yMin;\\n    this.xMax = xMax;\\n    this.yMax = yMax;\\n  }\\n\\n  static parse(pos, glyf) {\\n    return [\\n      10,\\n      new GlyphHeader({\\n        numberOfContours: glyf.getInt16(pos),\\n        xMin: glyf.getInt16(pos + 2),\\n        yMin: glyf.getInt16(pos + 4),\\n        xMax: glyf.getInt16(pos + 6),\\n        yMax: glyf.getInt16(pos + 8),\\n      }),\\n    ];\\n  }\\n\\n  getSize() {\\n    return 10;\\n  }\\n\\n  write(pos, buf) {\\n    buf.setInt16(pos, this.numberOfContours);\\n    buf.setInt16(pos + 2, this.xMin);\\n    buf.setInt16(pos + 4, this.yMin);\\n    buf.setInt16(pos + 6, this.xMax);\\n    buf.setInt16(pos + 8, this.yMax);\\n\\n    return 10;\\n  }\\n\\n  scale(x, factor) {\\n    this.xMin = Math.round(x + (this.xMin - x) * factor);\\n    this.xMax = Math.round(x + (this.xMax - x) * factor);\\n  }\\n}\\n\\nclass Contour {\\n  constructor({ flags, xCoordinates, yCoordinates }) {\\n    this.xCoordinates = xCoordinates;\\n    this.yCoordinates = yCoordinates;\\n    this.flags = flags;\\n  }\\n}\\n\\nclass SimpleGlyph {\\n  constructor({ contours, instructions }) {\\n    this.contours = contours;\\n    this.instructions = instructions;\\n  }\\n\\n  static parse(pos, glyf, numberOfContours) {\\n    const endPtsOfContours = [];\\n    for (let i = 0; i \u003C numberOfContours; i++) {\\n      const endPt = glyf.getUint16(pos);\\n      pos += 2;\\n      endPtsOfContours.push(endPt);\\n    }\\n    const numberOfPt = endPtsOfContours[numberOfContours - 1] + 1;\\n    const instructionLength = glyf.getUint16(pos);\\n    pos += 2;\\n    const instructions = new Uint8Array(glyf).slice(\\n      pos,\\n      pos + instructionLength\\n    );\\n    pos += instructionLength;\\n\\n    const flags = [];\\n    for (let i = 0; i \u003C numberOfPt; pos++, i++) {\\n      let flag = glyf.getUint8(pos);\\n      flags.push(flag);\\n      if (flag & REPEAT_FLAG) {\\n        const count = glyf.getUint8(++pos);\\n        flag ^= REPEAT_FLAG;\\n        for (let m = 0; m \u003C count; m++) {\\n          flags.push(flag);\\n        }\\n        i += count;\\n      }\\n    }\\n\\n    const allXCoordinates = [];\\n    let xCoordinates = [];\\n    let yCoordinates = [];\\n    let pointFlags = [];\\n    const contours = [];\\n    let endPtsOfContoursIndex = 0;\\n    let lastCoordinate = 0;\\n\\n    \u002F\u002F Get x coordinates.\\n    for (let i = 0; i \u003C numberOfPt; i++) {\\n      const flag = flags[i];\\n      if (flag & X_SHORT_VECTOR) {\\n        \u002F\u002F 8-bits unsigned value.\\n        const x = glyf.getUint8(pos++);\\n        lastCoordinate += flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR ? x : -x;\\n        xCoordinates.push(lastCoordinate);\\n      } else if (flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR) {\\n        \u002F\u002F IS_SAME.\\n        xCoordinates.push(lastCoordinate);\\n      } else {\\n        lastCoordinate += glyf.getInt16(pos);\\n        pos += 2;\\n        xCoordinates.push(lastCoordinate);\\n      }\\n\\n      if (endPtsOfContours[endPtsOfContoursIndex] === i) {\\n        \u002F\u002F Next entry is the first one of a new contour.\\n        endPtsOfContoursIndex++;\\n        allXCoordinates.push(xCoordinates);\\n        xCoordinates = [];\\n      }\\n    }\\n\\n    lastCoordinate = 0;\\n    endPtsOfContoursIndex = 0;\\n    for (let i = 0; i \u003C numberOfPt; i++) {\\n      const flag = flags[i];\\n      if (flag & Y_SHORT_VECTOR) {\\n        \u002F\u002F 8-bits unsigned value.\\n        const y = glyf.getUint8(pos++);\\n        lastCoordinate += flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR ? y : -y;\\n        yCoordinates.push(lastCoordinate);\\n      } else if (flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR) {\\n        \u002F\u002F IS_SAME.\\n        yCoordinates.push(lastCoordinate);\\n      } else {\\n        lastCoordinate += glyf.getInt16(pos);\\n        pos += 2;\\n        yCoordinates.push(lastCoordinate);\\n      }\\n\\n      pointFlags.push((flag & ON_CURVE_POINT) | (flag & OVERLAP_SIMPLE));\\n\\n      if (endPtsOfContours[endPtsOfContoursIndex] === i) {\\n        \u002F\u002F Next entry is the first one of a new contour.\\n        xCoordinates = allXCoordinates[endPtsOfContoursIndex];\\n        endPtsOfContoursIndex++;\\n        contours.push(\\n          new Contour({\\n            flags: pointFlags,\\n            xCoordinates,\\n            yCoordinates,\\n          })\\n        );\\n        yCoordinates = [];\\n        pointFlags = [];\\n      }\\n    }\\n\\n    return new SimpleGlyph({\\n      contours,\\n      instructions,\\n    });\\n  }\\n\\n  getSize() {\\n    let size = this.contours.length * 2 + 2 + this.instructions.length;\\n    let lastX = 0;\\n    let lastY = 0;\\n    for (const contour of this.contours) {\\n      size += contour.flags.length;\\n      for (let i = 0, ii = contour.xCoordinates.length; i \u003C ii; i++) {\\n        const x = contour.xCoordinates[i];\\n        const y = contour.yCoordinates[i];\\n        let abs = Math.abs(x - lastX);\\n        if (abs > 255) {\\n          size += 2;\\n        } else if (abs > 0) {\\n          size += 1;\\n        }\\n        lastX = x;\\n\\n        abs = Math.abs(y - lastY);\\n        if (abs > 255) {\\n          size += 2;\\n        } else if (abs > 0) {\\n          size += 1;\\n        }\\n        lastY = y;\\n      }\\n    }\\n    return size;\\n  }\\n\\n  write(pos, buf) {\\n    const spos = pos;\\n    const xCoordinates = [];\\n    const yCoordinates = [];\\n    const flags = [];\\n    let lastX = 0;\\n    let lastY = 0;\\n\\n    for (const contour of this.contours) {\\n      for (let i = 0, ii = contour.xCoordinates.length; i \u003C ii; i++) {\\n        let flag = contour.flags[i];\\n        const x = contour.xCoordinates[i];\\n        let delta = x - lastX;\\n        if (delta === 0) {\\n          flag |= X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR;\\n          xCoordinates.push(0);\\n        } else {\\n          const abs = Math.abs(delta);\\n          if (abs \u003C= 255) {\\n            flag |=\\n              delta >= 0\\n                ? X_SHORT_VECTOR | X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR\\n                : X_SHORT_VECTOR;\\n            xCoordinates.push(abs);\\n          } else {\\n            xCoordinates.push(delta);\\n          }\\n        }\\n        lastX = x;\\n\\n        const y = contour.yCoordinates[i];\\n        delta = y - lastY;\\n        if (delta === 0) {\\n          flag |= Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR;\\n          yCoordinates.push(0);\\n        } else {\\n          const abs = Math.abs(delta);\\n          if (abs \u003C= 255) {\\n            flag |=\\n              delta >= 0\\n                ? Y_SHORT_VECTOR | Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR\\n                : Y_SHORT_VECTOR;\\n            yCoordinates.push(abs);\\n          } else {\\n            yCoordinates.push(delta);\\n          }\\n        }\\n        lastY = y;\\n\\n        flags.push(flag);\\n      }\\n\\n      \u002F\u002F Write endPtsOfContours entry.\\n      buf.setUint16(pos, xCoordinates.length - 1);\\n      pos += 2;\\n    }\\n\\n    \u002F\u002F Write instructionLength.\\n    buf.setUint16(pos, this.instructions.length);\\n    pos += 2;\\n    if (this.instructions.length) {\\n      \u002F\u002F Write instructions.\\n      new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(\\n        this.instructions,\\n        pos\\n      );\\n      pos += this.instructions.length;\\n    }\\n\\n    \u002F\u002F Write flags.\\n    for (const flag of flags) {\\n      buf.setUint8(pos++, flag);\\n    }\\n\\n    \u002F\u002F Write xCoordinates.\\n    for (let i = 0, ii = xCoordinates.length; i \u003C ii; i++) {\\n      const x = xCoordinates[i];\\n      const flag = flags[i];\\n      if (flag & X_SHORT_VECTOR) {\\n        buf.setUint8(pos++, x);\\n      } else if (!(flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR)) {\\n        buf.setInt16(pos, x);\\n        pos += 2;\\n      }\\n    }\\n\\n    \u002F\u002F Write yCoordinates.\\n    for (let i = 0, ii = yCoordinates.length; i \u003C ii; i++) {\\n      const y = yCoordinates[i];\\n      const flag = flags[i];\\n      if (flag & Y_SHORT_VECTOR) {\\n        buf.setUint8(pos++, y);\\n      } else if (!(flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR)) {\\n        buf.setInt16(pos, y);\\n        pos += 2;\\n      }\\n    }\\n\\n    return pos - spos;\\n  }\\n\\n  scale(x, factor) {\\n    for (const contour of this.contours) {\\n      if (contour.xCoordinates.length === 0) {\\n        continue;\\n      }\\n\\n      for (let i = 0, ii = contour.xCoordinates.length; i \u003C ii; i++) {\\n        contour.xCoordinates[i] = Math.round(\\n          x + (contour.xCoordinates[i] - x) * factor\\n        );\\n      }\\n    }\\n  }\\n}\\n\\nclass CompositeGlyph {\\n  constructor({\\n    flags,\\n    glyphIndex,\\n    argument1,\\n    argument2,\\n    transf,\\n    instructions,\\n  }) {\\n    this.flags = flags;\\n    this.glyphIndex = glyphIndex;\\n    this.argument1 = argument1;\\n    this.argument2 = argument2;\\n    this.transf = transf;\\n    this.instructions = instructions;\\n  }\\n\\n  static parse(pos, glyf) {\\n    const spos = pos;\\n    const transf = [];\\n    let flags = glyf.getUint16(pos);\\n    const glyphIndex = glyf.getUint16(pos + 2);\\n    pos += 4;\\n\\n    let argument1, argument2;\\n    if (flags & ARG_1_AND_2_ARE_WORDS) {\\n      if (flags & ARGS_ARE_XY_VALUES) {\\n        argument1 = glyf.getInt16(pos);\\n        argument2 = glyf.getInt16(pos + 2);\\n      } else {\\n        argument1 = glyf.getUint16(pos);\\n        argument2 = glyf.getUint16(pos + 2);\\n      }\\n      pos += 4;\\n      flags ^= ARG_1_AND_2_ARE_WORDS;\\n    } else {\\n      if (flags & ARGS_ARE_XY_VALUES) {\\n        argument1 = glyf.getInt8(pos);\\n        argument2 = glyf.getInt8(pos + 1);\\n      } else {\\n        argument1 = glyf.getUint8(pos);\\n        argument2 = glyf.getUint8(pos + 1);\\n      }\\n      pos += 2;\\n    }\\n\\n    if (flags & WE_HAVE_A_SCALE) {\\n      \u002F\u002F Single F2.14.\\n      transf.push(glyf.getUint16(pos));\\n      pos += 2;\\n    } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\\n      \u002F\u002F Two F2.14.\\n      transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2));\\n      pos += 4;\\n    } else if (flags & WE_HAVE_A_TWO_BY_TWO) {\\n      \u002F\u002F Four F2.14.\\n      transf.push(\\n        glyf.getUint16(pos),\\n        glyf.getUint16(pos + 2),\\n        glyf.getUint16(pos + 4),\\n        glyf.getUint16(pos + 6)\\n      );\\n      pos += 8;\\n    }\\n\\n    let instructions = null;\\n    if (flags & WE_HAVE_INSTRUCTIONS) {\\n      const instructionLength = glyf.getUint16(pos);\\n      pos += 2;\\n      instructions = new Uint8Array(glyf).slice(pos, pos + instructionLength);\\n      pos += instructionLength;\\n    }\\n\\n    return [\\n      pos - spos,\\n      new CompositeGlyph({\\n        flags,\\n        glyphIndex,\\n        argument1,\\n        argument2,\\n        transf,\\n        instructions,\\n      }),\\n    ];\\n  }\\n\\n  getSize() {\\n    let size = 2 + 2 + this.transf.length * 2;\\n    if (this.flags & WE_HAVE_INSTRUCTIONS) {\\n      size += 2 + this.instructions.length;\\n    }\\n\\n    size += 2;\\n    if (this.flags & 2) {\\n      \u002F\u002F Arguments are signed.\\n      if (\\n        !(\\n          this.argument1 >= -128 &&\\n          this.argument1 \u003C= 127 &&\\n          this.argument2 >= -128 &&\\n          this.argument2 \u003C= 127\\n        )\\n      ) {\\n        size += 2;\\n      }\\n    } else if (\\n      !(\\n        this.argument1 >= 0 &&\\n        this.argument1 \u003C= 255 &&\\n        this.argument2 >= 0 &&\\n        this.argument2 \u003C= 255\\n      )\\n    ) {\\n      size += 2;\\n    }\\n\\n    return size;\\n  }\\n\\n  write(pos, buf) {\\n    const spos = pos;\\n\\n    if (this.flags & ARGS_ARE_XY_VALUES) {\\n      \u002F\u002F Arguments are signed.\\n      if (\\n        !(\\n          this.argument1 >= -128 &&\\n          this.argument1 \u003C= 127 &&\\n          this.argument2 >= -128 &&\\n          this.argument2 \u003C= 127\\n        )\\n      ) {\\n        this.flags |= ARG_1_AND_2_ARE_WORDS;\\n      }\\n    } else if (\\n      !(\\n        this.argument1 >= 0 &&\\n        this.argument1 \u003C= 255 &&\\n        this.argument2 >= 0 &&\\n        this.argument2 \u003C= 255\\n      )\\n    ) {\\n      this.flags |= ARG_1_AND_2_ARE_WORDS;\\n    }\\n\\n    buf.setUint16(pos, this.flags);\\n    buf.setUint16(pos + 2, this.glyphIndex);\\n    pos += 4;\\n\\n    if (this.flags & ARG_1_AND_2_ARE_WORDS) {\\n      if (this.flags & ARGS_ARE_XY_VALUES) {\\n        buf.setInt16(pos, this.argument1);\\n        buf.setInt16(pos + 2, this.argument2);\\n      } else {\\n        buf.setUint16(pos, this.argument1);\\n        buf.setUint16(pos + 2, this.argument2);\\n      }\\n      pos += 4;\\n    } else {\\n      buf.setUint8(pos, this.argument1);\\n      buf.setUint8(pos + 1, this.argument2);\\n      pos += 2;\\n    }\\n\\n    if (this.flags & WE_HAVE_INSTRUCTIONS) {\\n      buf.setUint16(pos, this.instructions.length);\\n      pos += 2;\\n      \u002F\u002F Write instructions.\\n      if (this.instructions.length) {\\n        new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(\\n          this.instructions,\\n          pos\\n        );\\n        pos += this.instructions.length;\\n      }\\n    }\\n\\n    return pos - spos;\\n  }\\n\\n  scale(x, factor) {}\\n}\\n\\nexport { GlyfTable };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { readUint32 } from \\\".\u002Fcore_utils.js\\\";\\nimport { string32 } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nfunction writeInt16(dest, offset, num) {\\n  dest[offset] = (num >> 8) & 0xff;\\n  dest[offset + 1] = num & 0xff;\\n}\\n\\nfunction writeInt32(dest, offset, num) {\\n  dest[offset] = (num >> 24) & 0xff;\\n  dest[offset + 1] = (num >> 16) & 0xff;\\n  dest[offset + 2] = (num >> 8) & 0xff;\\n  dest[offset + 3] = num & 0xff;\\n}\\n\\nfunction writeData(dest, offset, data) {\\n  if (data instanceof Uint8Array) {\\n    dest.set(data, offset);\\n  } else if (typeof data === \\\"string\\\") {\\n    for (let i = 0, ii = data.length; i \u003C ii; i++) {\\n      dest[offset++] = data.charCodeAt(i) & 0xff;\\n    }\\n  } else {\\n    \u002F\u002F treating everything else as array\\n    for (const num of data) {\\n      dest[offset++] = num & 0xff;\\n    }\\n  }\\n}\\n\\nconst OTF_HEADER_SIZE = 12;\\nconst OTF_TABLE_ENTRY_SIZE = 16;\\n\\nclass OpenTypeFileBuilder {\\n  constructor(sfnt) {\\n    this.sfnt = sfnt;\\n    this.tables = Object.create(null);\\n  }\\n\\n  static getSearchParams(entriesCount, entrySize) {\\n    let maxPower2 = 1,\\n      log2 = 0;\\n    while ((maxPower2 ^ entriesCount) > maxPower2) {\\n      maxPower2 \u003C\u003C= 1;\\n      log2++;\\n    }\\n    const searchRange = maxPower2 * entrySize;\\n    return {\\n      range: searchRange,\\n      entry: log2,\\n      rangeShift: entrySize * entriesCount - searchRange,\\n    };\\n  }\\n\\n  toArray() {\\n    let sfnt = this.sfnt;\\n\\n    \u002F\u002F Tables needs to be written by ascendant alphabetic order\\n    const tables = this.tables;\\n    const tablesNames = Object.keys(tables);\\n    tablesNames.sort();\\n    const numTables = tablesNames.length;\\n\\n    let i, j, jj, table, tableName;\\n    \u002F\u002F layout the tables data\\n    let offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE;\\n    const tableOffsets = [offset];\\n    for (i = 0; i \u003C numTables; i++) {\\n      table = tables[tablesNames[i]];\\n      const paddedLength = ((table.length + 3) & ~3) >>> 0;\\n      offset += paddedLength;\\n      tableOffsets.push(offset);\\n    }\\n\\n    const file = new Uint8Array(offset);\\n    \u002F\u002F write the table data first (mostly for checksum)\\n    for (i = 0; i \u003C numTables; i++) {\\n      table = tables[tablesNames[i]];\\n      writeData(file, tableOffsets[i], table);\\n    }\\n\\n    \u002F\u002F sfnt version (4 bytes)\\n    if (sfnt === \\\"true\\\") {\\n      \u002F\u002F Windows hates the Mac TrueType sfnt version number\\n      sfnt = string32(0x00010000);\\n    }\\n    file[0] = sfnt.charCodeAt(0) & 0xff;\\n    file[1] = sfnt.charCodeAt(1) & 0xff;\\n    file[2] = sfnt.charCodeAt(2) & 0xff;\\n    file[3] = sfnt.charCodeAt(3) & 0xff;\\n\\n    \u002F\u002F numTables (2 bytes)\\n    writeInt16(file, 4, numTables);\\n\\n    const searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16);\\n\\n    \u002F\u002F searchRange (2 bytes)\\n    writeInt16(file, 6, searchParams.range);\\n    \u002F\u002F entrySelector (2 bytes)\\n    writeInt16(file, 8, searchParams.entry);\\n    \u002F\u002F rangeShift (2 bytes)\\n    writeInt16(file, 10, searchParams.rangeShift);\\n\\n    offset = OTF_HEADER_SIZE;\\n    \u002F\u002F writing table entries\\n    for (i = 0; i \u003C numTables; i++) {\\n      tableName = tablesNames[i];\\n      file[offset] = tableName.charCodeAt(0) & 0xff;\\n      file[offset + 1] = tableName.charCodeAt(1) & 0xff;\\n      file[offset + 2] = tableName.charCodeAt(2) & 0xff;\\n      file[offset + 3] = tableName.charCodeAt(3) & 0xff;\\n\\n      \u002F\u002F checksum\\n      let checksum = 0;\\n      for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j \u003C jj; j += 4) {\\n        const quad = readUint32(file, j);\\n        checksum = (checksum + quad) >>> 0;\\n      }\\n      writeInt32(file, offset + 4, checksum);\\n\\n      \u002F\u002F offset\\n      writeInt32(file, offset + 8, tableOffsets[i]);\\n      \u002F\u002F length\\n      writeInt32(file, offset + 12, tables[tableName].length);\\n\\n      offset += OTF_TABLE_ENTRY_SIZE;\\n    }\\n    return file;\\n  }\\n\\n  addTable(tag, data) {\\n    if (tag in this.tables) {\\n      throw new Error(\\\"Table \\\" + tag + \\\" already exists\\\");\\n    }\\n    this.tables[tag] = data;\\n  }\\n}\\n\\nexport { OpenTypeFileBuilder };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { getEncoding } from \\\".\u002Fencodings.js\\\";\\nimport { isWhiteSpace } from \\\".\u002Fcore_utils.js\\\";\\nimport { Stream } from \\\".\u002Fstream.js\\\";\\nimport { warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\n\u002F\u002F Hinting is currently disabled due to unknown problems on windows\\n\u002F\u002F in tracemonkey and various other pdfs with type1 fonts.\\nconst HINTING_ENABLED = false;\\n\\nconst COMMAND_MAP = {\\n  hstem: [1],\\n  vstem: [3],\\n  vmoveto: [4],\\n  rlineto: [5],\\n  hlineto: [6],\\n  vlineto: [7],\\n  rrcurveto: [8],\\n  callsubr: [10],\\n  flex: [12, 35],\\n  drop: [12, 18],\\n  endchar: [14],\\n  rmoveto: [21],\\n  hmoveto: [22],\\n  vhcurveto: [30],\\n  hvcurveto: [31],\\n};\\n\\n\u002F**\\n * CharStrings are encoded following the the CharString Encoding sequence\\n * describe in Chapter 6 of the \\\"Adobe Type1 Font Format\\\" specification.\\n * The value in a byte indicates a command, a number, or subsequent bytes\\n * that are to be interpreted in a special way.\\n *\\n * CharString Number Encoding:\\n *  A CharString byte containing the values from 32 through 255 inclusive\\n *  indicate an integer. These values are decoded in four ranges.\\n *\\n * 1. A CharString byte containing a value, v, between 32 and 246 inclusive,\\n * indicate the integer v - 139. Thus, the integer values from -107 through\\n * 107 inclusive may be encoded in single byte.\\n *\\n * 2. A CharString byte containing a value, v, between 247 and 250 inclusive,\\n * indicates an integer involving the next byte, w, according to the formula:\\n * [(v - 247) x 256] + w + 108\\n *\\n * 3. A CharString byte containing a value, v, between 251 and 254 inclusive,\\n * indicates an integer involving the next byte, w, according to the formula:\\n * -[(v - 251) * 256] - w - 108\\n *\\n * 4. A CharString containing the value 255 indicates that the next 4 bytes\\n * are a two complement signed integer. The first of these bytes contains the\\n * highest order bits, the second byte contains the next higher order bits\\n * and the fourth byte contain the lowest order bits.\\n *\\n *\\n * CharString Command Encoding:\\n *  CharStrings commands are encoded in 1 or 2 bytes.\\n *\\n *  Single byte commands are encoded in 1 byte that contains a value between\\n *  0 and 31 inclusive.\\n *  If a command byte contains the value 12, then the value in the next byte\\n *  indicates a command. This \\\"escape\\\" mechanism allows many extra commands\\n *  to be encoded and this encoding technique helps to minimize the length of\\n *  the charStrings.\\n *\u002F\\nclass Type1CharString {\\n  constructor() {\\n    this.width = 0;\\n    this.lsb = 0;\\n    this.flexing = false;\\n    this.output = [];\\n    this.stack = [];\\n  }\\n\\n  convert(encoded, subrs, seacAnalysisEnabled) {\\n    const count = encoded.length;\\n    let error = false;\\n    let wx, sbx, subrNumber;\\n    for (let i = 0; i \u003C count; i++) {\\n      let value = encoded[i];\\n      if (value \u003C 32) {\\n        if (value === 12) {\\n          value = (value \u003C\u003C 8) + encoded[++i];\\n        }\\n        switch (value) {\\n          case 1: \u002F\u002F hstem\\n            if (!HINTING_ENABLED) {\\n              this.stack = [];\\n              break;\\n            }\\n            error = this.executeCommand(2, COMMAND_MAP.hstem);\\n            break;\\n          case 3: \u002F\u002F vstem\\n            if (!HINTING_ENABLED) {\\n              this.stack = [];\\n              break;\\n            }\\n            error = this.executeCommand(2, COMMAND_MAP.vstem);\\n            break;\\n          case 4: \u002F\u002F vmoveto\\n            if (this.flexing) {\\n              if (this.stack.length \u003C 1) {\\n                error = true;\\n                break;\\n              }\\n              \u002F\u002F Add the dx for flex and but also swap the values so they are\\n              \u002F\u002F the right order.\\n              const dy = this.stack.pop();\\n              this.stack.push(0, dy);\\n              break;\\n            }\\n            error = this.executeCommand(1, COMMAND_MAP.vmoveto);\\n            break;\\n          case 5: \u002F\u002F rlineto\\n            error = this.executeCommand(2, COMMAND_MAP.rlineto);\\n            break;\\n          case 6: \u002F\u002F hlineto\\n            error = this.executeCommand(1, COMMAND_MAP.hlineto);\\n            break;\\n          case 7: \u002F\u002F vlineto\\n            error = this.executeCommand(1, COMMAND_MAP.vlineto);\\n            break;\\n          case 8: \u002F\u002F rrcurveto\\n            error = this.executeCommand(6, COMMAND_MAP.rrcurveto);\\n            break;\\n          case 9: \u002F\u002F closepath\\n            \u002F\u002F closepath is a Type1 command that does not take argument and is\\n            \u002F\u002F useless in Type2 and it can simply be ignored.\\n            this.stack = [];\\n            break;\\n          case 10: \u002F\u002F callsubr\\n            if (this.stack.length \u003C 1) {\\n              error = true;\\n              break;\\n            }\\n            subrNumber = this.stack.pop();\\n            if (!subrs[subrNumber]) {\\n              error = true;\\n              break;\\n            }\\n            error = this.convert(subrs[subrNumber], subrs, seacAnalysisEnabled);\\n            break;\\n          case 11: \u002F\u002F return\\n            return error;\\n          case 13: \u002F\u002F hsbw\\n            if (this.stack.length \u003C 2) {\\n              error = true;\\n              break;\\n            }\\n            \u002F\u002F To convert to type2 we have to move the width value to the\\n            \u002F\u002F first part of the charstring and then use hmoveto with lsb.\\n            wx = this.stack.pop();\\n            sbx = this.stack.pop();\\n            this.lsb = sbx;\\n            this.width = wx;\\n            this.stack.push(wx, sbx);\\n            error = this.executeCommand(2, COMMAND_MAP.hmoveto);\\n            break;\\n          case 14: \u002F\u002F endchar\\n            this.output.push(COMMAND_MAP.endchar[0]);\\n            break;\\n          case 21: \u002F\u002F rmoveto\\n            if (this.flexing) {\\n              break;\\n            }\\n            error = this.executeCommand(2, COMMAND_MAP.rmoveto);\\n            break;\\n          case 22: \u002F\u002F hmoveto\\n            if (this.flexing) {\\n              \u002F\u002F Add the dy for flex.\\n              this.stack.push(0);\\n              break;\\n            }\\n            error = this.executeCommand(1, COMMAND_MAP.hmoveto);\\n            break;\\n          case 30: \u002F\u002F vhcurveto\\n            error = this.executeCommand(4, COMMAND_MAP.vhcurveto);\\n            break;\\n          case 31: \u002F\u002F hvcurveto\\n            error = this.executeCommand(4, COMMAND_MAP.hvcurveto);\\n            break;\\n          case (12 \u003C\u003C 8) + 0: \u002F\u002F dotsection\\n            \u002F\u002F dotsection is a Type1 command to specify some hinting feature\\n            \u002F\u002F for dots that do not take a parameter and it can safely be\\n            \u002F\u002F ignored for Type2.\\n            this.stack = [];\\n            break;\\n          case (12 \u003C\u003C 8) + 1: \u002F\u002F vstem3\\n            if (!HINTING_ENABLED) {\\n              this.stack = [];\\n              break;\\n            }\\n            \u002F\u002F [vh]stem3 are Type1 only and Type2 supports [vh]stem with\\n            \u002F\u002F multiple parameters, so instead of returning [vh]stem3 take a\\n            \u002F\u002F shortcut and return [vhstem] instead.\\n            error = this.executeCommand(2, COMMAND_MAP.vstem);\\n            break;\\n          case (12 \u003C\u003C 8) + 2: \u002F\u002F hstem3\\n            if (!HINTING_ENABLED) {\\n              this.stack = [];\\n              break;\\n            }\\n            \u002F\u002F See vstem3.\\n            error = this.executeCommand(2, COMMAND_MAP.hstem);\\n            break;\\n          case (12 \u003C\u003C 8) + 6: \u002F\u002F seac\\n            \u002F\u002F seac is like type 2's special endchar but it doesn't use the\\n            \u002F\u002F first argument asb, so remove it.\\n            if (seacAnalysisEnabled) {\\n              const asb = this.stack.at(-5);\\n              this.seac = this.stack.splice(-4, 4);\\n              this.seac[0] += this.lsb - asb;\\n              error = this.executeCommand(0, COMMAND_MAP.endchar);\\n            } else {\\n              error = this.executeCommand(4, COMMAND_MAP.endchar);\\n            }\\n            break;\\n          case (12 \u003C\u003C 8) + 7: \u002F\u002F sbw\\n            if (this.stack.length \u003C 4) {\\n              error = true;\\n              break;\\n            }\\n            \u002F\u002F To convert to type2 we have to move the width value to the\\n            \u002F\u002F first part of the charstring and then use rmoveto with\\n            \u002F\u002F (dx, dy). The height argument will not be used for vmtx and\\n            \u002F\u002F vhea tables reconstruction -- ignoring it.\\n            this.stack.pop(); \u002F\u002F wy\\n            wx = this.stack.pop();\\n            const sby = this.stack.pop();\\n            sbx = this.stack.pop();\\n            this.lsb = sbx;\\n            this.width = wx;\\n            this.stack.push(wx, sbx, sby);\\n            error = this.executeCommand(3, COMMAND_MAP.rmoveto);\\n            break;\\n          case (12 \u003C\u003C 8) + 12: \u002F\u002F div\\n            if (this.stack.length \u003C 2) {\\n              error = true;\\n              break;\\n            }\\n            const num2 = this.stack.pop();\\n            const num1 = this.stack.pop();\\n            this.stack.push(num1 \u002F num2);\\n            break;\\n          case (12 \u003C\u003C 8) + 16: \u002F\u002F callothersubr\\n            if (this.stack.length \u003C 2) {\\n              error = true;\\n              break;\\n            }\\n            subrNumber = this.stack.pop();\\n            const numArgs = this.stack.pop();\\n            if (subrNumber === 0 && numArgs === 3) {\\n              const flexArgs = this.stack.splice(-17, 17);\\n              this.stack.push(\\n                flexArgs[2] + flexArgs[0], \u002F\u002F bcp1x + rpx\\n                flexArgs[3] + flexArgs[1], \u002F\u002F bcp1y + rpy\\n                flexArgs[4], \u002F\u002F bcp2x\\n                flexArgs[5], \u002F\u002F bcp2y\\n                flexArgs[6], \u002F\u002F p2x\\n                flexArgs[7], \u002F\u002F p2y\\n                flexArgs[8], \u002F\u002F bcp3x\\n                flexArgs[9], \u002F\u002F bcp3y\\n                flexArgs[10], \u002F\u002F bcp4x\\n                flexArgs[11], \u002F\u002F bcp4y\\n                flexArgs[12], \u002F\u002F p3x\\n                flexArgs[13], \u002F\u002F p3y\\n                flexArgs[14] \u002F\u002F flexDepth\\n                \u002F\u002F 15 = finalx unused by flex\\n                \u002F\u002F 16 = finaly unused by flex\\n              );\\n              error = this.executeCommand(13, COMMAND_MAP.flex, true);\\n              this.flexing = false;\\n              this.stack.push(flexArgs[15], flexArgs[16]);\\n            } else if (subrNumber === 1 && numArgs === 0) {\\n              this.flexing = true;\\n            }\\n            break;\\n          case (12 \u003C\u003C 8) + 17: \u002F\u002F pop\\n            \u002F\u002F Ignore this since it is only used with othersubr.\\n            break;\\n          case (12 \u003C\u003C 8) + 33: \u002F\u002F setcurrentpoint\\n            \u002F\u002F Ignore for now.\\n            this.stack = [];\\n            break;\\n          default:\\n            warn('Unknown type 1 charstring command of \\\"' + value + '\\\"');\\n            break;\\n        }\\n        if (error) {\\n          break;\\n        }\\n        continue;\\n      } else if (value \u003C= 246) {\\n        value -= 139;\\n      } else if (value \u003C= 250) {\\n        value = (value - 247) * 256 + encoded[++i] + 108;\\n      } else if (value \u003C= 254) {\\n        value = -((value - 251) * 256) - encoded[++i] - 108;\\n      } else {\\n        value =\\n          ((encoded[++i] & 0xff) \u003C\u003C 24) |\\n          ((encoded[++i] & 0xff) \u003C\u003C 16) |\\n          ((encoded[++i] & 0xff) \u003C\u003C 8) |\\n          ((encoded[++i] & 0xff) \u003C\u003C 0);\\n      }\\n      this.stack.push(value);\\n    }\\n    return error;\\n  }\\n\\n  executeCommand(howManyArgs, command, keepStack) {\\n    const stackLength = this.stack.length;\\n    if (howManyArgs > stackLength) {\\n      return true;\\n    }\\n    const start = stackLength - howManyArgs;\\n    for (let i = start; i \u003C stackLength; i++) {\\n      let value = this.stack[i];\\n      if (Number.isInteger(value)) {\\n        this.output.push(28, (value >> 8) & 0xff, value & 0xff);\\n      } else {\\n        \u002F\u002F fixed point\\n        value = (65536 * value) | 0;\\n        this.output.push(\\n          255,\\n          (value >> 24) & 0xff,\\n          (value >> 16) & 0xff,\\n          (value >> 8) & 0xff,\\n          value & 0xff\\n        );\\n      }\\n    }\\n    this.output.push(...command);\\n    if (keepStack) {\\n      this.stack.splice(start, howManyArgs);\\n    } else {\\n      this.stack.length = 0;\\n    }\\n    return false;\\n  }\\n}\\n\\n\u002F**\\n * Decrypt a Sequence of Ciphertext Bytes to Produce the Original Sequence\\n * of Plaintext Bytes. The function takes a key as a parameter which can be\\n * for decrypting the eexec block or for decoding charStrings.\\n *\u002F\\nconst EEXEC_ENCRYPT_KEY = 55665;\\nconst CHAR_STRS_ENCRYPT_KEY = 4330;\\n\\nfunction isHexDigit(code) {\\n  return (\\n    (code >= 48 && code \u003C= 57) || \u002F\u002F '0'-'9'\\n    (code >= 65 && code \u003C= 70) || \u002F\u002F 'A'-'F'\\n    (code >= 97 && code \u003C= 102) \u002F\u002F 'a'-'f'\\n  );\\n}\\n\\nfunction decrypt(data, key, discardNumber) {\\n  if (discardNumber >= data.length) {\\n    return new Uint8Array(0);\\n  }\\n  const c1 = 52845,\\n    c2 = 22719;\\n  let r = key | 0,\\n    i,\\n    j;\\n  for (i = 0; i \u003C discardNumber; i++) {\\n    r = ((data[i] + r) * c1 + c2) & ((1 \u003C\u003C 16) - 1);\\n  }\\n  const count = data.length - discardNumber;\\n  const decrypted = new Uint8Array(count);\\n  for (i = discardNumber, j = 0; j \u003C count; i++, j++) {\\n    const value = data[i];\\n    decrypted[j] = value ^ (r >> 8);\\n    r = ((value + r) * c1 + c2) & ((1 \u003C\u003C 16) - 1);\\n  }\\n  return decrypted;\\n}\\n\\nfunction decryptAscii(data, key, discardNumber) {\\n  const c1 = 52845,\\n    c2 = 22719;\\n  let r = key | 0;\\n  const count = data.length,\\n    maybeLength = count >>> 1;\\n  const decrypted = new Uint8Array(maybeLength);\\n  let i, j;\\n  for (i = 0, j = 0; i \u003C count; i++) {\\n    const digit1 = data[i];\\n    if (!isHexDigit(digit1)) {\\n      continue;\\n    }\\n    i++;\\n    let digit2;\\n    while (i \u003C count && !isHexDigit((digit2 = data[i]))) {\\n      i++;\\n    }\\n    if (i \u003C count) {\\n      const value = parseInt(String.fromCharCode(digit1, digit2), 16);\\n      decrypted[j++] = value ^ (r >> 8);\\n      r = ((value + r) * c1 + c2) & ((1 \u003C\u003C 16) - 1);\\n    }\\n  }\\n  return decrypted.slice(discardNumber, j);\\n}\\n\\nfunction isSpecial(c) {\\n  return (\\n    c === \u002F* '\u002F' = *\u002F 0x2f ||\\n    c === \u002F* '[' = *\u002F 0x5b ||\\n    c === \u002F* ']' = *\u002F 0x5d ||\\n    c === \u002F* '{' = *\u002F 0x7b ||\\n    c === \u002F* '}' = *\u002F 0x7d ||\\n    c === \u002F* '(' = *\u002F 0x28 ||\\n    c === \u002F* ')' = *\u002F 0x29\\n  );\\n}\\n\\n\u002F**\\n * Type1Parser encapsulate the needed code for parsing a Type1 font program.\\n * Some of its logic depends on the Type2 charstrings structure.\\n * NOTE: This doesn't really parse the font since that would require evaluation\\n *       of PostScript, but it is possible in most cases to extract what we need\\n *       without a full parse.\\n *\u002F\\nclass Type1Parser {\\n  constructor(stream, encrypted, seacAnalysisEnabled) {\\n    if (encrypted) {\\n      const data = stream.getBytes();\\n      const isBinary = !(\\n        (isHexDigit(data[0]) || isWhiteSpace(data[0])) &&\\n        isHexDigit(data[1]) &&\\n        isHexDigit(data[2]) &&\\n        isHexDigit(data[3]) &&\\n        isHexDigit(data[4]) &&\\n        isHexDigit(data[5]) &&\\n        isHexDigit(data[6]) &&\\n        isHexDigit(data[7])\\n      );\\n      stream = new Stream(\\n        isBinary\\n          ? decrypt(data, EEXEC_ENCRYPT_KEY, 4)\\n          : decryptAscii(data, EEXEC_ENCRYPT_KEY, 4)\\n      );\\n    }\\n    this.seacAnalysisEnabled = !!seacAnalysisEnabled;\\n\\n    this.stream = stream;\\n    this.nextChar();\\n  }\\n\\n  readNumberArray() {\\n    this.getToken(); \u002F\u002F read '[' or '{' (arrays can start with either)\\n    const array = [];\\n    while (true) {\\n      const token = this.getToken();\\n      if (token === null || token === \\\"]\\\" || token === \\\"}\\\") {\\n        break;\\n      }\\n      array.push(parseFloat(token || 0));\\n    }\\n    return array;\\n  }\\n\\n  readNumber() {\\n    const token = this.getToken();\\n    return parseFloat(token || 0);\\n  }\\n\\n  readInt() {\\n    \u002F\u002F Use '| 0' to prevent setting a double into length such as the double\\n    \u002F\u002F does not flow into the loop variable.\\n    const token = this.getToken();\\n    return parseInt(token || 0, 10) | 0;\\n  }\\n\\n  readBoolean() {\\n    const token = this.getToken();\\n    \u002F\u002F Use 1 and 0 since that's what type2 charstrings use.\\n    return token === \\\"true\\\" ? 1 : 0;\\n  }\\n\\n  nextChar() {\\n    return (this.currentChar = this.stream.getByte());\\n  }\\n\\n  prevChar() {\\n    this.stream.skip(-2);\\n    return (this.currentChar = this.stream.getByte());\\n  }\\n\\n  getToken() {\\n    \u002F\u002F Eat whitespace and comments.\\n    let comment = false;\\n    let ch = this.currentChar;\\n    while (true) {\\n      if (ch === -1) {\\n        return null;\\n      }\\n\\n      if (comment) {\\n        if (ch === 0x0a || ch === 0x0d) {\\n          comment = false;\\n        }\\n      } else if (ch === \u002F* '%' = *\u002F 0x25) {\\n        comment = true;\\n      } else if (!isWhiteSpace(ch)) {\\n        break;\\n      }\\n      ch = this.nextChar();\\n    }\\n    if (isSpecial(ch)) {\\n      this.nextChar();\\n      return String.fromCharCode(ch);\\n    }\\n    let token = \\\"\\\";\\n    do {\\n      token += String.fromCharCode(ch);\\n      ch = this.nextChar();\\n    } while (ch >= 0 && !isWhiteSpace(ch) && !isSpecial(ch));\\n    return token;\\n  }\\n\\n  readCharStrings(bytes, lenIV) {\\n    if (lenIV === -1) {\\n      \u002F\u002F This isn't in the spec, but Adobe's tx program handles -1\\n      \u002F\u002F as plain text.\\n      return bytes;\\n    }\\n    return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV);\\n  }\\n\\n  \u002F*\\n   * Returns an object containing a Subrs array and a CharStrings\\n   * array extracted from and eexec encrypted block of data\\n   *\u002F\\n  extractFontProgram(properties) {\\n    const stream = this.stream;\\n\\n    const subrs = [],\\n      charstrings = [];\\n    const privateData = Object.create(null);\\n    privateData.lenIV = 4;\\n    const program = {\\n      subrs: [],\\n      charstrings: [],\\n      properties: {\\n        privateData,\\n      },\\n    };\\n    let token, length, data, lenIV;\\n    while ((token = this.getToken()) !== null) {\\n      if (token !== \\\"\u002F\\\") {\\n        continue;\\n      }\\n      token = this.getToken();\\n      switch (token) {\\n        case \\\"CharStrings\\\":\\n          \u002F\u002F The number immediately following CharStrings must be greater or\\n          \u002F\u002F equal to the number of CharStrings.\\n          this.getToken();\\n          this.getToken(); \u002F\u002F read in 'dict'\\n          this.getToken(); \u002F\u002F read in 'dup'\\n          this.getToken(); \u002F\u002F read in 'begin'\\n          while (true) {\\n            token = this.getToken();\\n            if (token === null || token === \\\"end\\\") {\\n              break;\\n            }\\n\\n            if (token !== \\\"\u002F\\\") {\\n              continue;\\n            }\\n            const glyph = this.getToken();\\n            length = this.readInt();\\n            this.getToken(); \u002F\u002F read in 'RD' or '-|'\\n            data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\\n            lenIV = program.properties.privateData.lenIV;\\n            const encoded = this.readCharStrings(data, lenIV);\\n            this.nextChar();\\n            token = this.getToken(); \u002F\u002F read in 'ND' or '|-'\\n            if (token === \\\"noaccess\\\") {\\n              this.getToken(); \u002F\u002F read in 'def'\\n            } else if (token === \\\"\u002F\\\") {\\n              \u002F\u002F The expected 'ND' or '|-' token is missing, avoid swallowing\\n              \u002F\u002F the start of the next glyph (fixes issue14462_reduced.pdf).\\n              this.prevChar();\\n            }\\n            charstrings.push({\\n              glyph,\\n              encoded,\\n            });\\n          }\\n          break;\\n        case \\\"Subrs\\\":\\n          this.readInt(); \u002F\u002F num\\n          this.getToken(); \u002F\u002F read in 'array'\\n          while (this.getToken() === \\\"dup\\\") {\\n            const index = this.readInt();\\n            length = this.readInt();\\n            this.getToken(); \u002F\u002F read in 'RD' or '-|'\\n            data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\\n            lenIV = program.properties.privateData.lenIV;\\n            const encoded = this.readCharStrings(data, lenIV);\\n            this.nextChar();\\n            token = this.getToken(); \u002F\u002F read in 'NP' or '|'\\n            if (token === \\\"noaccess\\\") {\\n              this.getToken(); \u002F\u002F read in 'put'\\n            }\\n            subrs[index] = encoded;\\n          }\\n          break;\\n        case \\\"BlueValues\\\":\\n        case \\\"OtherBlues\\\":\\n        case \\\"FamilyBlues\\\":\\n        case \\\"FamilyOtherBlues\\\":\\n          const blueArray = this.readNumberArray();\\n          \u002F\u002F *Blue* values may contain invalid data: disables reading of\\n          \u002F\u002F those values when hinting is disabled.\\n          if (\\n            blueArray.length > 0 &&\\n            blueArray.length % 2 === 0 &&\\n            HINTING_ENABLED\\n          ) {\\n            program.properties.privateData[token] = blueArray;\\n          }\\n          break;\\n        case \\\"StemSnapH\\\":\\n        case \\\"StemSnapV\\\":\\n          program.properties.privateData[token] = this.readNumberArray();\\n          break;\\n        case \\\"StdHW\\\":\\n        case \\\"StdVW\\\":\\n          program.properties.privateData[token] = this.readNumberArray()[0];\\n          break;\\n        case \\\"BlueShift\\\":\\n        case \\\"lenIV\\\":\\n        case \\\"BlueFuzz\\\":\\n        case \\\"BlueScale\\\":\\n        case \\\"LanguageGroup\\\":\\n          program.properties.privateData[token] = this.readNumber();\\n          break;\\n        case \\\"ExpansionFactor\\\":\\n          \u002F\u002F Firefox doesn't render correctly a font with a null factor on\\n          \u002F\u002F Windows (see issue 15289), hence we just reset it to its default\\n          \u002F\u002F value (0.06).\\n          program.properties.privateData[token] = this.readNumber() || 0.06;\\n          break;\\n        case \\\"ForceBold\\\":\\n          program.properties.privateData[token] = this.readBoolean();\\n          break;\\n      }\\n    }\\n\\n    for (const { encoded, glyph } of charstrings) {\\n      const charString = new Type1CharString();\\n      const error = charString.convert(\\n        encoded,\\n        subrs,\\n        this.seacAnalysisEnabled\\n      );\\n      let output = charString.output;\\n      if (error) {\\n        \u002F\u002F It seems when FreeType encounters an error while evaluating a glyph\\n        \u002F\u002F that it completely ignores the glyph so we'll mimic that behaviour\\n        \u002F\u002F here and put an endchar to make the validator happy.\\n        output = [14];\\n      }\\n      const charStringObject = {\\n        glyphName: glyph,\\n        charstring: output,\\n        width: charString.width,\\n        lsb: charString.lsb,\\n        seac: charString.seac,\\n      };\\n      if (glyph === \\\".notdef\\\") {\\n        \u002F\u002F Make sure .notdef is at index zero (issue #11477).\\n        program.charstrings.unshift(charStringObject);\\n      } else {\\n        program.charstrings.push(charStringObject);\\n      }\\n\\n      \u002F\u002F Attempt to replace missing widths, from the font dictionary \u002FWidths\\n      \u002F\u002F entry, with ones from the font data (fixes issue11150_reduced.pdf).\\n      if (properties.builtInEncoding) {\\n        const index = properties.builtInEncoding.indexOf(glyph);\\n        if (\\n          index > -1 &&\\n          properties.widths[index] === undefined &&\\n          index >= properties.firstChar &&\\n          index \u003C= properties.lastChar\\n        ) {\\n          properties.widths[index] = charString.width;\\n        }\\n      }\\n    }\\n\\n    return program;\\n  }\\n\\n  extractFontHeader(properties) {\\n    let token;\\n    while ((token = this.getToken()) !== null) {\\n      if (token !== \\\"\u002F\\\") {\\n        continue;\\n      }\\n      token = this.getToken();\\n      switch (token) {\\n        case \\\"FontMatrix\\\":\\n          const matrix = this.readNumberArray();\\n          properties.fontMatrix = matrix;\\n          break;\\n        case \\\"Encoding\\\":\\n          const encodingArg = this.getToken();\\n          let encoding;\\n          if (!\u002F^\\\\d+$\u002F.test(encodingArg)) {\\n            \u002F\u002F encoding name is specified\\n            encoding = getEncoding(encodingArg);\\n          } else {\\n            encoding = [];\\n            const size = parseInt(encodingArg, 10) | 0;\\n            this.getToken(); \u002F\u002F read in 'array'\\n\\n            for (let j = 0; j \u003C size; j++) {\\n              token = this.getToken();\\n              \u002F\u002F skipping till first dup or def (e.g. ignoring for statement)\\n              while (token !== \\\"dup\\\" && token !== \\\"def\\\") {\\n                token = this.getToken();\\n                if (token === null) {\\n                  return; \u002F\u002F invalid header\\n                }\\n              }\\n              if (token === \\\"def\\\") {\\n                break; \u002F\u002F read all array data\\n              }\\n              const index = this.readInt();\\n              this.getToken(); \u002F\u002F read in '\u002F'\\n              const glyph = this.getToken();\\n              encoding[index] = glyph;\\n              this.getToken(); \u002F\u002F read the in 'put'\\n            }\\n          }\\n          properties.builtInEncoding = encoding;\\n          break;\\n        case \\\"FontBBox\\\":\\n          const fontBBox = this.readNumberArray();\\n          \u002F\u002F adjusting ascent\u002Fdescent\\n          properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\\n          properties.descent = Math.min(fontBBox[1], fontBBox[3]);\\n          properties.ascentScaled = true;\\n          break;\\n      }\\n    }\\n  }\\n}\\n\\nexport { Type1Parser };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  CFF,\\n  CFFCharset,\\n  CFFCompiler,\\n  CFFHeader,\\n  CFFIndex,\\n  CFFPrivateDict,\\n  CFFStandardStrings,\\n  CFFStrings,\\n  CFFTopDict,\\n} from \\\".\u002Fcff_parser.js\\\";\\nimport { FormatError, warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { SEAC_ANALYSIS_ENABLED, type1FontGlyphMapping } from \\\".\u002Ffonts_utils.js\\\";\\nimport { isWhiteSpace } from \\\".\u002Fcore_utils.js\\\";\\nimport { Stream } from \\\".\u002Fstream.js\\\";\\nimport { Type1Parser } from \\\".\u002Ftype1_parser.js\\\";\\n\\nfunction findBlock(streamBytes, signature, startIndex) {\\n  const streamBytesLength = streamBytes.length;\\n  const signatureLength = signature.length;\\n  const scanLength = streamBytesLength - signatureLength;\\n\\n  let i = startIndex,\\n    found = false;\\n  while (i \u003C scanLength) {\\n    let j = 0;\\n    while (j \u003C signatureLength && streamBytes[i + j] === signature[j]) {\\n      j++;\\n    }\\n    if (j >= signatureLength) {\\n      \u002F\u002F `signature` found, skip over whitespace.\\n      i += j;\\n      while (i \u003C streamBytesLength && isWhiteSpace(streamBytes[i])) {\\n        i++;\\n      }\\n      found = true;\\n      break;\\n    }\\n    i++;\\n  }\\n  return {\\n    found,\\n    length: i,\\n  };\\n}\\n\\nfunction getHeaderBlock(stream, suggestedLength) {\\n  const EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63];\\n\\n  const streamStartPos = stream.pos; \u002F\u002F Save the initial stream position.\\n  let headerBytes, headerBytesLength, block;\\n  try {\\n    headerBytes = stream.getBytes(suggestedLength);\\n    headerBytesLength = headerBytes.length;\\n  } catch {\\n    \u002F\u002F Ignore errors if the `suggestedLength` is huge enough that a Uint8Array\\n    \u002F\u002F cannot hold the result of `getBytes`, and fallback to simply checking\\n    \u002F\u002F the entire stream (fixes issue3928.pdf).\\n  }\\n\\n  if (headerBytesLength === suggestedLength) {\\n    \u002F\u002F Most of the time `suggestedLength` is correct, so to speed things up we\\n    \u002F\u002F initially only check the last few bytes to see if the header was found.\\n    \u002F\u002F Otherwise we (potentially) check the entire stream to prevent errors in\\n    \u002F\u002F `Type1Parser` (fixes issue5686.pdf).\\n    block = findBlock(\\n      headerBytes,\\n      EEXEC_SIGNATURE,\\n      suggestedLength - 2 * EEXEC_SIGNATURE.length\\n    );\\n\\n    if (block.found && block.length === suggestedLength) {\\n      return {\\n        stream: new Stream(headerBytes),\\n        length: suggestedLength,\\n      };\\n    }\\n  }\\n  warn('Invalid \\\"Length1\\\" property in Type1 font -- trying to recover.');\\n  stream.pos = streamStartPos; \u002F\u002F Reset the stream position.\\n\\n  const SCAN_BLOCK_LENGTH = 2048;\\n  let actualLength;\\n  while (true) {\\n    const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\\n    block = findBlock(scanBytes, EEXEC_SIGNATURE, 0);\\n\\n    if (block.length === 0) {\\n      break;\\n    }\\n    stream.pos += block.length; \u002F\u002F Update the stream position.\\n\\n    if (block.found) {\\n      actualLength = stream.pos - streamStartPos;\\n      break;\\n    }\\n  }\\n  stream.pos = streamStartPos; \u002F\u002F Reset the stream position.\\n\\n  if (actualLength) {\\n    return {\\n      stream: new Stream(stream.getBytes(actualLength)),\\n      length: actualLength,\\n    };\\n  }\\n  warn('Unable to recover \\\"Length1\\\" property in Type1 font -- using as is.');\\n  return {\\n    stream: new Stream(stream.getBytes(suggestedLength)),\\n    length: suggestedLength,\\n  };\\n}\\n\\nfunction getEexecBlock(stream, suggestedLength) {\\n  \u002F\u002F We should ideally parse the eexec block to ensure that `suggestedLength`\\n  \u002F\u002F is correct, so we don't truncate the block data if it's too small.\\n  \u002F\u002F However, this would also require checking if the fixed-content portion\\n  \u002F\u002F exists (using the 'Length3' property), and ensuring that it's valid.\\n  \u002F\u002F\\n  \u002F\u002F Given that `suggestedLength` almost always is correct, all the validation\\n  \u002F\u002F would require a great deal of unnecessary parsing for most fonts.\\n  \u002F\u002F To save time, we always fetch the entire stream instead, which also avoid\\n  \u002F\u002F issues if `suggestedLength` is huge (see comment in `getHeaderBlock`).\\n  \u002F\u002F\\n  \u002F\u002F NOTE: This means that the function can include the fixed-content portion\\n  \u002F\u002F in the returned eexec block. In practice this does *not* seem to matter,\\n  \u002F\u002F since `Type1Parser_extractFontProgram` will skip over any non-commands.\\n  const eexecBytes = stream.getBytes();\\n  if (eexecBytes.length === 0) {\\n    throw new FormatError(\\\"getEexecBlock - no font program found.\\\");\\n  }\\n  return {\\n    stream: new Stream(eexecBytes),\\n    length: eexecBytes.length,\\n  };\\n}\\n\\n\u002F**\\n * Type1Font is also a CIDFontType0.\\n *\u002F\\nclass Type1Font {\\n  constructor(name, file, properties) {\\n    \u002F\u002F Some bad generators embed pfb file as is, we have to strip 6-byte header.\\n    \u002F\u002F Also, length1 and length2 might be off by 6 bytes as well.\\n    \u002F\u002F http:\u002F\u002Fwww.math.ubc.ca\u002F~cass\u002Fpiscript\u002Ftype1.pdf\\n    const PFB_HEADER_SIZE = 6;\\n    let headerBlockLength = properties.length1;\\n    let eexecBlockLength = properties.length2;\\n    let pfbHeader = file.peekBytes(PFB_HEADER_SIZE);\\n    const pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01;\\n    if (pfbHeaderPresent) {\\n      file.skip(PFB_HEADER_SIZE);\\n      headerBlockLength =\\n        (pfbHeader[5] \u003C\u003C 24) |\\n        (pfbHeader[4] \u003C\u003C 16) |\\n        (pfbHeader[3] \u003C\u003C 8) |\\n        pfbHeader[2];\\n    }\\n\\n    \u002F\u002F Get the data block containing glyphs and subrs information\\n    const headerBlock = getHeaderBlock(file, headerBlockLength);\\n    const headerBlockParser = new Type1Parser(\\n      headerBlock.stream,\\n      false,\\n      SEAC_ANALYSIS_ENABLED\\n    );\\n    headerBlockParser.extractFontHeader(properties);\\n\\n    if (pfbHeaderPresent) {\\n      pfbHeader = file.getBytes(PFB_HEADER_SIZE);\\n      eexecBlockLength =\\n        (pfbHeader[5] \u003C\u003C 24) |\\n        (pfbHeader[4] \u003C\u003C 16) |\\n        (pfbHeader[3] \u003C\u003C 8) |\\n        pfbHeader[2];\\n    }\\n\\n    \u002F\u002F Decrypt the data blocks and retrieve it's content\\n    const eexecBlock = getEexecBlock(file, eexecBlockLength);\\n    const eexecBlockParser = new Type1Parser(\\n      eexecBlock.stream,\\n      true,\\n      SEAC_ANALYSIS_ENABLED\\n    );\\n    const data = eexecBlockParser.extractFontProgram(properties);\\n    for (const key in data.properties) {\\n      properties[key] = data.properties[key];\\n    }\\n\\n    const charstrings = data.charstrings;\\n    const type2Charstrings = this.getType2Charstrings(charstrings);\\n    const subrs = this.getType2Subrs(data.subrs);\\n\\n    this.charstrings = charstrings;\\n    this.data = this.wrap(\\n      name,\\n      type2Charstrings,\\n      this.charstrings,\\n      subrs,\\n      properties\\n    );\\n    this.seacs = this.getSeacs(data.charstrings);\\n  }\\n\\n  get numGlyphs() {\\n    return this.charstrings.length + 1;\\n  }\\n\\n  getCharset() {\\n    const charset = [\\\".notdef\\\"];\\n    for (const { glyphName } of this.charstrings) {\\n      charset.push(glyphName);\\n    }\\n    return charset;\\n  }\\n\\n  getGlyphMapping(properties) {\\n    const charstrings = this.charstrings;\\n\\n    if (properties.composite) {\\n      const charCodeToGlyphId = Object.create(null);\\n      \u002F\u002F Map CIDs directly to GIDs.\\n      for (\\n        let glyphId = 0, charstringsLen = charstrings.length;\\n        glyphId \u003C charstringsLen;\\n        glyphId++\\n      ) {\\n        const charCode = properties.cMap.charCodeOf(glyphId);\\n        \u002F\u002F Add 1 because glyph 0 is duplicated.\\n        charCodeToGlyphId[charCode] = glyphId + 1;\\n      }\\n      return charCodeToGlyphId;\\n    }\\n\\n    const glyphNames = [\\\".notdef\\\"];\\n    let builtInEncoding, glyphId;\\n    for (glyphId = 0; glyphId \u003C charstrings.length; glyphId++) {\\n      glyphNames.push(charstrings[glyphId].glyphName);\\n    }\\n    const encoding = properties.builtInEncoding;\\n    if (encoding) {\\n      builtInEncoding = Object.create(null);\\n      for (const charCode in encoding) {\\n        glyphId = glyphNames.indexOf(encoding[charCode]);\\n        if (glyphId >= 0) {\\n          builtInEncoding[charCode] = glyphId;\\n        }\\n      }\\n    }\\n\\n    return type1FontGlyphMapping(properties, builtInEncoding, glyphNames);\\n  }\\n\\n  hasGlyphId(id) {\\n    if (id \u003C 0 || id >= this.numGlyphs) {\\n      return false;\\n    }\\n    if (id === 0) {\\n      \u002F\u002F notdef is always defined.\\n      return true;\\n    }\\n    const glyph = this.charstrings[id - 1];\\n    return glyph.charstring.length > 0;\\n  }\\n\\n  getSeacs(charstrings) {\\n    const seacMap = [];\\n    for (let i = 0, ii = charstrings.length; i \u003C ii; i++) {\\n      const charstring = charstrings[i];\\n      if (charstring.seac) {\\n        \u002F\u002F Offset by 1 for .notdef\\n        seacMap[i + 1] = charstring.seac;\\n      }\\n    }\\n    return seacMap;\\n  }\\n\\n  getType2Charstrings(type1Charstrings) {\\n    const type2Charstrings = [];\\n    for (const type1Charstring of type1Charstrings) {\\n      type2Charstrings.push(type1Charstring.charstring);\\n    }\\n    return type2Charstrings;\\n  }\\n\\n  getType2Subrs(type1Subrs) {\\n    let bias = 0;\\n    const count = type1Subrs.length;\\n    if (count \u003C 1133) {\\n      bias = 107;\\n    } else if (count \u003C 33769) {\\n      bias = 1131;\\n    } else {\\n      bias = 32768;\\n    }\\n\\n    \u002F\u002F Add a bunch of empty subrs to deal with the Type2 bias\\n    const type2Subrs = [];\\n    let i;\\n    for (i = 0; i \u003C bias; i++) {\\n      type2Subrs.push([0x0b]);\\n    }\\n\\n    for (i = 0; i \u003C count; i++) {\\n      type2Subrs.push(type1Subrs[i]);\\n    }\\n\\n    return type2Subrs;\\n  }\\n\\n  wrap(name, glyphs, charstrings, subrs, properties) {\\n    const cff = new CFF();\\n    cff.header = new CFFHeader(1, 0, 4, 4);\\n\\n    cff.names = [name];\\n\\n    const topDict = new CFFTopDict();\\n    \u002F\u002F CFF strings IDs 0...390 are predefined names, so refering\\n    \u002F\u002F to entries in our own String INDEX starts at SID 391.\\n    topDict.setByName(\\\"version\\\", 391);\\n    topDict.setByName(\\\"Notice\\\", 392);\\n    topDict.setByName(\\\"FullName\\\", 393);\\n    topDict.setByName(\\\"FamilyName\\\", 394);\\n    topDict.setByName(\\\"Weight\\\", 395);\\n    topDict.setByName(\\\"Encoding\\\", null); \u002F\u002F placeholder\\n    topDict.setByName(\\\"FontMatrix\\\", properties.fontMatrix);\\n    topDict.setByName(\\\"FontBBox\\\", properties.bbox);\\n    topDict.setByName(\\\"charset\\\", null); \u002F\u002F placeholder\\n    topDict.setByName(\\\"CharStrings\\\", null); \u002F\u002F placeholder\\n    topDict.setByName(\\\"Private\\\", null); \u002F\u002F placeholder\\n    cff.topDict = topDict;\\n\\n    const strings = new CFFStrings();\\n    strings.add(\\\"Version 0.11\\\"); \u002F\u002F Version\\n    strings.add(\\\"See original notice\\\"); \u002F\u002F Notice\\n    strings.add(name); \u002F\u002F FullName\\n    strings.add(name); \u002F\u002F FamilyName\\n    strings.add(\\\"Medium\\\"); \u002F\u002F Weight\\n    cff.strings = strings;\\n\\n    cff.globalSubrIndex = new CFFIndex();\\n\\n    const count = glyphs.length;\\n    const charsetArray = [\\\".notdef\\\"];\\n    let i, ii;\\n    for (i = 0; i \u003C count; i++) {\\n      const glyphName = charstrings[i].glyphName;\\n      const index = CFFStandardStrings.indexOf(glyphName);\\n      if (index === -1) {\\n        strings.add(glyphName);\\n      }\\n      charsetArray.push(glyphName);\\n    }\\n    cff.charset = new CFFCharset(false, 0, charsetArray);\\n\\n    const charStringsIndex = new CFFIndex();\\n    charStringsIndex.add([0x8b, 0x0e]); \u002F\u002F .notdef\\n    for (i = 0; i \u003C count; i++) {\\n      charStringsIndex.add(glyphs[i]);\\n    }\\n    cff.charStrings = charStringsIndex;\\n\\n    const privateDict = new CFFPrivateDict();\\n    privateDict.setByName(\\\"Subrs\\\", null); \u002F\u002F placeholder\\n    const fields = [\\n      \\\"BlueValues\\\",\\n      \\\"OtherBlues\\\",\\n      \\\"FamilyBlues\\\",\\n      \\\"FamilyOtherBlues\\\",\\n      \\\"StemSnapH\\\",\\n      \\\"StemSnapV\\\",\\n      \\\"BlueShift\\\",\\n      \\\"BlueFuzz\\\",\\n      \\\"BlueScale\\\",\\n      \\\"LanguageGroup\\\",\\n      \\\"ExpansionFactor\\\",\\n      \\\"ForceBold\\\",\\n      \\\"StdHW\\\",\\n      \\\"StdVW\\\",\\n    ];\\n    for (i = 0, ii = fields.length; i \u003C ii; i++) {\\n      const field = fields[i];\\n      if (!(field in properties.privateData)) {\\n        continue;\\n      }\\n      const value = properties.privateData[field];\\n      if (Array.isArray(value)) {\\n        \u002F\u002F All of the private dictionary array data in CFF must be stored as\\n        \u002F\u002F \\\"delta-encoded\\\" numbers.\\n        for (let j = value.length - 1; j > 0; j--) {\\n          value[j] -= value[j - 1]; \u002F\u002F ... difference from previous value\\n        }\\n      }\\n      privateDict.setByName(field, value);\\n    }\\n    cff.topDict.privateDict = privateDict;\\n\\n    const subrIndex = new CFFIndex();\\n    for (i = 0, ii = subrs.length; i \u003C ii; i++) {\\n      subrIndex.add(subrs[i]);\\n    }\\n    privateDict.subrsIndex = subrIndex;\\n\\n    const compiler = new CFFCompiler(cff);\\n    return compiler.compile();\\n  }\\n}\\n\\nexport { Type1Font };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  assert,\\n  bytesToString,\\n  FONT_IDENTITY_MATRIX,\\n  FormatError,\\n  info,\\n  shadow,\\n  string32,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { CFFCompiler, CFFParser } from \\\".\u002Fcff_parser.js\\\";\\nimport {\\n  FontFlags,\\n  MacStandardGlyphOrdering,\\n  normalizeFontName,\\n  recoverGlyphName,\\n  SEAC_ANALYSIS_ENABLED,\\n} from \\\".\u002Ffonts_utils.js\\\";\\nimport {\\n  getCharUnicodeCategory,\\n  getUnicodeForGlyph,\\n  getUnicodeRangeFor,\\n  mapSpecialUnicodeValues,\\n} from \\\".\u002Funicode.js\\\";\\nimport { getDingbatsGlyphsUnicode, getGlyphsUnicode } from \\\".\u002Fglyphlist.js\\\";\\nimport {\\n  getEncoding,\\n  MacRomanEncoding,\\n  StandardEncoding,\\n  SymbolSetEncoding,\\n  WinAnsiEncoding,\\n  ZapfDingbatsEncoding,\\n} from \\\".\u002Fencodings.js\\\";\\nimport {\\n  getGlyphMapForStandardFonts,\\n  getNonStdFontMap,\\n  getSerifFonts,\\n  getStdFontMap,\\n  getSupplementalGlyphMapForArialBlack,\\n  getSupplementalGlyphMapForCalibri,\\n} from \\\".\u002Fstandard_fonts.js\\\";\\nimport { IdentityToUnicodeMap, ToUnicodeMap } from \\\".\u002Fto_unicode_map.js\\\";\\nimport { CFFFont } from \\\".\u002Fcff_font.js\\\";\\nimport { FontRendererFactory } from \\\".\u002Ffont_renderer.js\\\";\\nimport { getFontBasicMetrics } from \\\".\u002Fmetrics.js\\\";\\nimport { GlyfTable } from \\\".\u002Fglyf.js\\\";\\nimport { IdentityCMap } from \\\".\u002Fcmap.js\\\";\\nimport { OpenTypeFileBuilder } from \\\".\u002Fopentype_file_builder.js\\\";\\nimport { readUint32 } from \\\".\u002Fcore_utils.js\\\";\\nimport { Stream } from \\\".\u002Fstream.js\\\";\\nimport { Type1Font } from \\\".\u002Ftype1_font.js\\\";\\n\\n\u002F\u002F Unicode Private Use Areas:\\nconst PRIVATE_USE_AREAS = [\\n  [0xe000, 0xf8ff], \u002F\u002F BMP (0)\\n  [0x100000, 0x10fffd], \u002F\u002F PUP (16)\\n];\\n\\n\u002F\u002F PDF Glyph Space Units are one Thousandth of a TextSpace Unit\\n\u002F\u002F except for Type 3 fonts\\nconst PDF_GLYPH_SPACE_UNITS = 1000;\\n\\nconst EXPORT_DATA_PROPERTIES = [\\n  \\\"ascent\\\",\\n  \\\"bbox\\\",\\n  \\\"black\\\",\\n  \\\"bold\\\",\\n  \\\"charProcOperatorList\\\",\\n  \\\"composite\\\",\\n  \\\"cssFontInfo\\\",\\n  \\\"data\\\",\\n  \\\"defaultVMetrics\\\",\\n  \\\"defaultWidth\\\",\\n  \\\"descent\\\",\\n  \\\"fallbackName\\\",\\n  \\\"fontMatrix\\\",\\n  \\\"isInvalidPDFjsFont\\\",\\n  \\\"isType3Font\\\",\\n  \\\"italic\\\",\\n  \\\"loadedName\\\",\\n  \\\"mimetype\\\",\\n  \\\"missingFile\\\",\\n  \\\"name\\\",\\n  \\\"remeasure\\\",\\n  \\\"subtype\\\",\\n  \\\"systemFontInfo\\\",\\n  \\\"type\\\",\\n  \\\"vertical\\\",\\n];\\n\\nconst EXPORT_DATA_EXTRA_PROPERTIES = [\\n  \\\"cMap\\\",\\n  \\\"defaultEncoding\\\",\\n  \\\"differences\\\",\\n  \\\"isMonospace\\\",\\n  \\\"isSerifFont\\\",\\n  \\\"isSymbolicFont\\\",\\n  \\\"seacMap\\\",\\n  \\\"toFontChar\\\",\\n  \\\"toUnicode\\\",\\n  \\\"vmetrics\\\",\\n  \\\"widths\\\",\\n];\\n\\nfunction adjustWidths(properties) {\\n  if (!properties.fontMatrix) {\\n    return;\\n  }\\n  if (properties.fontMatrix[0] === FONT_IDENTITY_MATRIX[0]) {\\n    return;\\n  }\\n  \u002F\u002F adjusting width to fontMatrix scale\\n  const scale = 0.001 \u002F properties.fontMatrix[0];\\n  const glyphsWidths = properties.widths;\\n  for (const glyph in glyphsWidths) {\\n    glyphsWidths[glyph] *= scale;\\n  }\\n  properties.defaultWidth *= scale;\\n}\\n\\nfunction adjustTrueTypeToUnicode(properties, isSymbolicFont, nameRecords) {\\n  if (properties.isInternalFont) {\\n    return;\\n  }\\n  if (properties.hasIncludedToUnicodeMap) {\\n    return; \u002F\u002F The font dictionary has a `ToUnicode` entry.\\n  }\\n  if (properties.hasEncoding) {\\n    return; \u002F\u002F The font dictionary has an `Encoding` entry.\\n  }\\n  if (properties.toUnicode instanceof IdentityToUnicodeMap) {\\n    return;\\n  }\\n  if (!isSymbolicFont) {\\n    return; \u002F\u002F A non-symbolic font should default to `StandardEncoding`.\\n  }\\n  if (nameRecords.length === 0) {\\n    return;\\n  }\\n\\n  \u002F\u002F Try to infer if the fallback encoding should really be `WinAnsiEncoding`.\\n  if (properties.defaultEncoding === WinAnsiEncoding) {\\n    return;\\n  }\\n  for (const r of nameRecords) {\\n    if (!isWinNameRecord(r)) {\\n      return; \u002F\u002F Not Windows, hence `WinAnsiEncoding` wouldn't make sense.\\n    }\\n  }\\n  const encoding = WinAnsiEncoding;\\n\\n  const toUnicode = [],\\n    glyphsUnicodeMap = getGlyphsUnicode();\\n  for (const charCode in encoding) {\\n    const glyphName = encoding[charCode];\\n    if (glyphName === \\\"\\\") {\\n      continue;\\n    }\\n    const unicode = glyphsUnicodeMap[glyphName];\\n    if (unicode === undefined) {\\n      continue;\\n    }\\n    toUnicode[charCode] = String.fromCharCode(unicode);\\n  }\\n  if (toUnicode.length > 0) {\\n    properties.toUnicode.amend(toUnicode);\\n  }\\n}\\n\\nfunction adjustType1ToUnicode(properties, builtInEncoding) {\\n  if (properties.isInternalFont) {\\n    return;\\n  }\\n  if (properties.hasIncludedToUnicodeMap) {\\n    return; \u002F\u002F The font dictionary has a `ToUnicode` entry.\\n  }\\n  if (builtInEncoding === properties.defaultEncoding) {\\n    return; \u002F\u002F No point in trying to adjust `toUnicode` if the encodings match.\\n  }\\n  if (properties.toUnicode instanceof IdentityToUnicodeMap) {\\n    return;\\n  }\\n  const toUnicode = [],\\n    glyphsUnicodeMap = getGlyphsUnicode();\\n  for (const charCode in builtInEncoding) {\\n    if (properties.hasEncoding) {\\n      if (\\n        properties.baseEncodingName ||\\n        properties.differences[charCode] !== undefined\\n      ) {\\n        continue; \u002F\u002F The font dictionary has an `Encoding`\u002F`Differences` entry.\\n      }\\n    }\\n    const glyphName = builtInEncoding[charCode];\\n    const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\\n    if (unicode !== -1) {\\n      toUnicode[charCode] = String.fromCharCode(unicode);\\n    }\\n  }\\n  if (toUnicode.length > 0) {\\n    properties.toUnicode.amend(toUnicode);\\n  }\\n}\\n\\n\u002F**\\n * NOTE: This function should only be called at the *end* of font-parsing,\\n *       after e.g. `adjustType1ToUnicode` has run, to prevent any issues.\\n *\u002F\\nfunction amendFallbackToUnicode(properties) {\\n  if (!properties.fallbackToUnicode) {\\n    return;\\n  }\\n  if (properties.toUnicode instanceof IdentityToUnicodeMap) {\\n    return;\\n  }\\n  const toUnicode = [];\\n  for (const charCode in properties.fallbackToUnicode) {\\n    if (properties.toUnicode.has(charCode)) {\\n      continue; \u002F\u002F The font dictionary has a `ToUnicode` entry.\\n    }\\n    toUnicode[charCode] = properties.fallbackToUnicode[charCode];\\n  }\\n  if (toUnicode.length > 0) {\\n    properties.toUnicode.amend(toUnicode);\\n  }\\n}\\n\\nclass Glyph {\\n  constructor(\\n    originalCharCode,\\n    fontChar,\\n    unicode,\\n    accent,\\n    width,\\n    vmetric,\\n    operatorListId,\\n    isSpace,\\n    isInFont\\n  ) {\\n    this.originalCharCode = originalCharCode;\\n    this.fontChar = fontChar;\\n    this.unicode = unicode;\\n    this.accent = accent;\\n    this.width = width;\\n    this.vmetric = vmetric;\\n    this.operatorListId = operatorListId;\\n    this.isSpace = isSpace;\\n    this.isInFont = isInFont;\\n  }\\n\\n  \u002F**\\n   * This property, which is only used by `PartialEvaluator.getTextContent`,\\n   * is purposely made non-serializable.\\n   * @type {Object}\\n   *\u002F\\n  get category() {\\n    return shadow(\\n      this,\\n      \\\"category\\\",\\n      getCharUnicodeCategory(this.unicode),\\n      \u002F* nonSerializable = *\u002F true\\n    );\\n  }\\n}\\n\\nfunction int16(b0, b1) {\\n  return (b0 \u003C\u003C 8) + b1;\\n}\\n\\nfunction writeSignedInt16(bytes, index, value) {\\n  bytes[index + 1] = value;\\n  bytes[index] = value >>> 8;\\n}\\n\\nfunction signedInt16(b0, b1) {\\n  const value = (b0 \u003C\u003C 8) + b1;\\n  return value & (1 \u003C\u003C 15) ? value - 0x10000 : value;\\n}\\n\\nfunction writeUint32(bytes, index, value) {\\n  bytes[index + 3] = value & 0xff;\\n  bytes[index + 2] = value >>> 8;\\n  bytes[index + 1] = value >>> 16;\\n  bytes[index] = value >>> 24;\\n}\\n\\nfunction int32(b0, b1, b2, b3) {\\n  return (b0 \u003C\u003C 24) + (b1 \u003C\u003C 16) + (b2 \u003C\u003C 8) + b3;\\n}\\n\\nfunction string16(value) {\\n  if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n    assert(\\n      typeof value === \\\"number\\\" && Math.abs(value) \u003C 2 ** 16,\\n      `string16: Unexpected input \\\"${value}\\\".`\\n    );\\n  }\\n  return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\\n}\\n\\nfunction safeString16(value) {\\n  if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n    assert(\\n      typeof value === \\\"number\\\" && !Number.isNaN(value),\\n      `safeString16: Unexpected input \\\"${value}\\\".`\\n    );\\n  }\\n  \u002F\u002F clamp value to the 16-bit int range\\n  if (value > 0x7fff) {\\n    value = 0x7fff;\\n  } else if (value \u003C -0x8000) {\\n    value = -0x8000;\\n  }\\n  return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\\n}\\n\\nfunction isTrueTypeFile(file) {\\n  const header = file.peekBytes(4);\\n  return (\\n    readUint32(header, 0) === 0x00010000 || bytesToString(header) === \\\"true\\\"\\n  );\\n}\\n\\nfunction isTrueTypeCollectionFile(file) {\\n  const header = file.peekBytes(4);\\n  return bytesToString(header) === \\\"ttcf\\\";\\n}\\n\\nfunction isOpenTypeFile(file) {\\n  const header = file.peekBytes(4);\\n  return bytesToString(header) === \\\"OTTO\\\";\\n}\\n\\nfunction isType1File(file) {\\n  const header = file.peekBytes(2);\\n  \u002F\u002F All Type1 font programs must begin with the comment '%!' (0x25 + 0x21).\\n  if (header[0] === 0x25 && header[1] === 0x21) {\\n    return true;\\n  }\\n  \u002F\u002F ... obviously some fonts violate that part of the specification,\\n  \u002F\u002F please refer to the comment in |Type1Font| below (pfb file header).\\n  if (header[0] === 0x80 && header[1] === 0x01) {\\n    return true;\\n  }\\n  return false;\\n}\\n\\n\u002F**\\n * Compared to other font formats, the header in CFF files is not constant\\n * but contains version numbers. To reduce the possibility of misclassifying\\n * font files as CFF, it's recommended to check for other font formats first.\\n *\u002F\\nfunction isCFFFile(file) {\\n  const header = file.peekBytes(4);\\n  if (\\n    \u002F* major version, [1, 255] *\u002F header[0] >= 1 &&\\n    \u002F* minor version, [0, 255]; header[1] *\u002F\\n    \u002F* header size, [0, 255]; header[2] *\u002F\\n    \u002F* offset(0) size, [1, 4] *\u002F header[3] >= 1 &&\\n    header[3] \u003C= 4\\n  ) {\\n    return true;\\n  }\\n  return false;\\n}\\n\\nfunction getFontFileType(file, { type, subtype, composite }) {\\n  let fileType, fileSubtype;\\n\\n  if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) {\\n    fileType = composite ? \\\"CIDFontType2\\\" : \\\"TrueType\\\";\\n  } else if (isOpenTypeFile(file)) {\\n    fileType = composite ? \\\"CIDFontType2\\\" : \\\"OpenType\\\";\\n  } else if (isType1File(file)) {\\n    if (composite) {\\n      fileType = \\\"CIDFontType0\\\";\\n    } else {\\n      fileType = type === \\\"MMType1\\\" ? \\\"MMType1\\\" : \\\"Type1\\\";\\n    }\\n  } else if (isCFFFile(file)) {\\n    if (composite) {\\n      fileType = \\\"CIDFontType0\\\";\\n      fileSubtype = \\\"CIDFontType0C\\\";\\n    } else {\\n      fileType = type === \\\"MMType1\\\" ? \\\"MMType1\\\" : \\\"Type1\\\";\\n      fileSubtype = \\\"Type1C\\\";\\n    }\\n  } else {\\n    warn(\\\"getFontFileType: Unable to detect correct font file Type\u002FSubtype.\\\");\\n    fileType = type;\\n    fileSubtype = subtype;\\n  }\\n\\n  return [fileType, fileSubtype];\\n}\\n\\nfunction applyStandardFontGlyphMap(map, glyphMap) {\\n  for (const charCode in glyphMap) {\\n    map[+charCode] = glyphMap[charCode];\\n  }\\n}\\n\\nfunction buildToFontChar(encoding, glyphsUnicodeMap, differences) {\\n  const toFontChar = [];\\n  let unicode;\\n  for (let i = 0, ii = encoding.length; i \u003C ii; i++) {\\n    unicode = getUnicodeForGlyph(encoding[i], glyphsUnicodeMap);\\n    if (unicode !== -1) {\\n      toFontChar[i] = unicode;\\n    }\\n  }\\n  for (const charCode in differences) {\\n    unicode = getUnicodeForGlyph(differences[charCode], glyphsUnicodeMap);\\n    if (unicode !== -1) {\\n      toFontChar[+charCode] = unicode;\\n    }\\n  }\\n  return toFontChar;\\n}\\n\\n\u002F\u002F Please refer to:\\n\u002F\u002F  - https:\u002F\u002Fdeveloper.apple.com\u002Ffonts\u002FTrueType-Reference-Manual\u002FRM06\u002FChap6name.html\\nfunction isMacNameRecord(r) {\\n  return r.platform === 1 && r.encoding === 0 && r.language === 0;\\n}\\n\\n\u002F\u002F Please refer to:\\n\u002F\u002F  - https:\u002F\u002Fdeveloper.apple.com\u002Ffonts\u002FTrueType-Reference-Manual\u002FRM06\u002FChap6name.html\\n\u002F\u002F  - https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Ftypography\u002Fopentype\u002Fspec\u002Fname#windows-language-ids\\nfunction isWinNameRecord(r) {\\n  return r.platform === 3 && r.encoding === 1 && r.language === 0x409;\\n}\\n\\nfunction convertCidString(charCode, cid, shouldThrow = false) {\\n  switch (cid.length) {\\n    case 1:\\n      return cid.charCodeAt(0);\\n    case 2:\\n      return (cid.charCodeAt(0) \u003C\u003C 8) | cid.charCodeAt(1);\\n  }\\n  const msg = `Unsupported CID string (charCode ${charCode}): \\\"${cid}\\\".`;\\n  if (shouldThrow) {\\n    throw new FormatError(msg);\\n  }\\n  warn(msg);\\n  return cid;\\n}\\n\\n\u002F**\\n * Rebuilds the char code to glyph ID map by moving all char codes to the\\n * private use area. This is done to avoid issues with various problematic\\n * unicode areas where either a glyph won't be drawn or is deformed by a\\n * shaper.\\n * @returns {Object} Two properties:\\n * 'toFontChar' - maps original char codes(the value that will be read\\n * from commands such as show text) to the char codes that will be used in the\\n * font that we build\\n * 'charCodeToGlyphId' - maps the new font char codes to glyph ids\\n *\u002F\\nfunction adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId, toUnicode) {\\n  const newMap = Object.create(null);\\n  const toUnicodeExtraMap = new Map();\\n  const toFontChar = [];\\n  const usedGlyphIds = new Set();\\n  let privateUseAreaIndex = 0;\\n  const privateUseOffetStart = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\\n  let nextAvailableFontCharCode = privateUseOffetStart;\\n  let privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\\n  const isInPrivateArea = code =>\\n    (PRIVATE_USE_AREAS[0][0] \u003C= code && code \u003C= PRIVATE_USE_AREAS[0][1]) ||\\n    (PRIVATE_USE_AREAS[1][0] \u003C= code && code \u003C= PRIVATE_USE_AREAS[1][1]);\\n  for (const originalCharCode in charCodeToGlyphId) {\\n    let glyphId = charCodeToGlyphId[originalCharCode];\\n    \u002F\u002F For missing glyphs don't create the mappings so the glyph isn't\\n    \u002F\u002F drawn.\\n    if (!hasGlyph(glyphId)) {\\n      continue;\\n    }\\n    if (nextAvailableFontCharCode > privateUseOffetEnd) {\\n      privateUseAreaIndex++;\\n      if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) {\\n        warn(\\\"Ran out of space in font private use area.\\\");\\n        break;\\n      }\\n      nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\\n      privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\\n    }\\n    const fontCharCode = nextAvailableFontCharCode++;\\n    if (glyphId === 0) {\\n      glyphId = newGlyphZeroId;\\n    }\\n\\n    \u002F\u002F Fix for bug 1778484:\\n    \u002F\u002F The charcodes are moved into a private use area to fix some rendering\\n    \u002F\u002F issues (https:\u002F\u002Fgithub.com\u002Fmozilla\u002Fpdf.js\u002Fpull\u002F9340) but when printing\\n    \u002F\u002F to PDF the generated font will contain wrong chars. We can avoid that by\\n    \u002F\u002F adding the unicode to the cmap and the print backend will then map the\\n    \u002F\u002F glyph ids to the correct unicode.\\n    let unicode = toUnicode.get(originalCharCode);\\n    if (typeof unicode === \\\"string\\\") {\\n      unicode = unicode.codePointAt(0);\\n    }\\n    if (unicode && !isInPrivateArea(unicode) && !usedGlyphIds.has(glyphId)) {\\n      toUnicodeExtraMap.set(unicode, glyphId);\\n      usedGlyphIds.add(glyphId);\\n    }\\n\\n    newMap[fontCharCode] = glyphId;\\n    toFontChar[originalCharCode] = fontCharCode;\\n  }\\n  return {\\n    toFontChar,\\n    charCodeToGlyphId: newMap,\\n    toUnicodeExtraMap,\\n    nextAvailableFontCharCode,\\n  };\\n}\\n\\nfunction getRanges(glyphs, toUnicodeExtraMap, numGlyphs) {\\n  \u002F\u002F Array.sort() sorts by characters, not numerically, so convert to an\\n  \u002F\u002F array of characters.\\n  const codes = [];\\n  for (const charCode in glyphs) {\\n    \u002F\u002F Remove an invalid glyph ID mappings to make OTS happy.\\n    if (glyphs[charCode] >= numGlyphs) {\\n      continue;\\n    }\\n    codes.push({ fontCharCode: charCode | 0, glyphId: glyphs[charCode] });\\n  }\\n  if (toUnicodeExtraMap) {\\n    for (const [unicode, glyphId] of toUnicodeExtraMap) {\\n      if (glyphId >= numGlyphs) {\\n        continue;\\n      }\\n      codes.push({ fontCharCode: unicode, glyphId });\\n    }\\n  }\\n  \u002F\u002F Some fonts have zero glyphs and are used only for text selection, but\\n  \u002F\u002F there needs to be at least one to build a valid cmap table.\\n  if (codes.length === 0) {\\n    codes.push({ fontCharCode: 0, glyphId: 0 });\\n  }\\n  codes.sort(function fontGetRangesSort(a, b) {\\n    return a.fontCharCode - b.fontCharCode;\\n  });\\n\\n  \u002F\u002F Split the sorted codes into ranges.\\n  const ranges = [];\\n  const length = codes.length;\\n  for (let n = 0; n \u003C length; ) {\\n    const start = codes[n].fontCharCode;\\n    const codeIndices = [codes[n].glyphId];\\n    ++n;\\n    let end = start;\\n    while (n \u003C length && end + 1 === codes[n].fontCharCode) {\\n      codeIndices.push(codes[n].glyphId);\\n      ++end;\\n      ++n;\\n      if (end === 0xffff) {\\n        break;\\n      }\\n    }\\n    ranges.push([start, end, codeIndices]);\\n  }\\n\\n  return ranges;\\n}\\n\\nfunction createCmapTable(glyphs, toUnicodeExtraMap, numGlyphs) {\\n  const ranges = getRanges(glyphs, toUnicodeExtraMap, numGlyphs);\\n  const numTables = ranges.at(-1)[1] > 0xffff ? 2 : 1;\\n  let cmap =\\n    \\\"\\\\x00\\\\x00\\\" + \u002F\u002F version\\n    string16(numTables) + \u002F\u002F numTables\\n    \\\"\\\\x00\\\\x03\\\" + \u002F\u002F platformID\\n    \\\"\\\\x00\\\\x01\\\" + \u002F\u002F encodingID\\n    string32(4 + numTables * 8); \u002F\u002F start of the table record\\n\\n  let i, ii, j, jj;\\n  for (i = ranges.length - 1; i >= 0; --i) {\\n    if (ranges[i][0] \u003C= 0xffff) {\\n      break;\\n    }\\n  }\\n  const bmpLength = i + 1;\\n\\n  if (ranges[i][0] \u003C 0xffff && ranges[i][1] === 0xffff) {\\n    ranges[i][1] = 0xfffe;\\n  }\\n  const trailingRangesCount = ranges[i][1] \u003C 0xffff ? 1 : 0;\\n  const segCount = bmpLength + trailingRangesCount;\\n  const searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2);\\n\\n  \u002F\u002F Fill up the 4 parallel arrays describing the segments.\\n  let startCount = \\\"\\\";\\n  let endCount = \\\"\\\";\\n  let idDeltas = \\\"\\\";\\n  let idRangeOffsets = \\\"\\\";\\n  let glyphsIds = \\\"\\\";\\n  let bias = 0;\\n\\n  let range, start, end, codes;\\n  for (i = 0, ii = bmpLength; i \u003C ii; i++) {\\n    range = ranges[i];\\n    start = range[0];\\n    end = range[1];\\n    startCount += string16(start);\\n    endCount += string16(end);\\n    codes = range[2];\\n    let contiguous = true;\\n    for (j = 1, jj = codes.length; j \u003C jj; ++j) {\\n      if (codes[j] !== codes[j - 1] + 1) {\\n        contiguous = false;\\n        break;\\n      }\\n    }\\n    if (!contiguous) {\\n      const offset = (segCount - i) * 2 + bias * 2;\\n      bias += end - start + 1;\\n\\n      idDeltas += string16(0);\\n      idRangeOffsets += string16(offset);\\n\\n      for (j = 0, jj = codes.length; j \u003C jj; ++j) {\\n        glyphsIds += string16(codes[j]);\\n      }\\n    } else {\\n      const startCode = codes[0];\\n\\n      idDeltas += string16((startCode - start) & 0xffff);\\n      idRangeOffsets += string16(0);\\n    }\\n  }\\n\\n  if (trailingRangesCount > 0) {\\n    endCount += \\\"\\\\xFF\\\\xFF\\\";\\n    startCount += \\\"\\\\xFF\\\\xFF\\\";\\n    idDeltas += \\\"\\\\x00\\\\x01\\\";\\n    idRangeOffsets += \\\"\\\\x00\\\\x00\\\";\\n  }\\n\\n  const format314 =\\n    \\\"\\\\x00\\\\x00\\\" + \u002F\u002F language\\n    string16(2 * segCount) +\\n    string16(searchParams.range) +\\n    string16(searchParams.entry) +\\n    string16(searchParams.rangeShift) +\\n    endCount +\\n    \\\"\\\\x00\\\\x00\\\" +\\n    startCount +\\n    idDeltas +\\n    idRangeOffsets +\\n    glyphsIds;\\n\\n  let format31012 = \\\"\\\";\\n  let header31012 = \\\"\\\";\\n  if (numTables > 1) {\\n    cmap +=\\n      \\\"\\\\x00\\\\x03\\\" + \u002F\u002F platformID\\n      \\\"\\\\x00\\\\x0A\\\" + \u002F\u002F encodingID\\n      string32(4 + numTables * 8 + 4 + format314.length); \u002F\u002F start of the table record\\n    format31012 = \\\"\\\";\\n    for (i = 0, ii = ranges.length; i \u003C ii; i++) {\\n      range = ranges[i];\\n      start = range[0];\\n      codes = range[2];\\n      let code = codes[0];\\n      for (j = 1, jj = codes.length; j \u003C jj; ++j) {\\n        if (codes[j] !== codes[j - 1] + 1) {\\n          end = range[0] + j - 1;\\n          format31012 +=\\n            string32(start) + \u002F\u002F startCharCode\\n            string32(end) + \u002F\u002F endCharCode\\n            string32(code); \u002F\u002F startGlyphID\\n          start = end + 1;\\n          code = codes[j];\\n        }\\n      }\\n      format31012 +=\\n        string32(start) + \u002F\u002F startCharCode\\n        string32(range[1]) + \u002F\u002F endCharCode\\n        string32(code); \u002F\u002F startGlyphID\\n    }\\n    header31012 =\\n      \\\"\\\\x00\\\\x0C\\\" + \u002F\u002F format\\n      \\\"\\\\x00\\\\x00\\\" + \u002F\u002F reserved\\n      string32(format31012.length + 16) + \u002F\u002F length\\n      \\\"\\\\x00\\\\x00\\\\x00\\\\x00\\\" + \u002F\u002F language\\n      string32(format31012.length \u002F 12); \u002F\u002F nGroups\\n  }\\n\\n  return (\\n    cmap +\\n    \\\"\\\\x00\\\\x04\\\" + \u002F\u002F format\\n    string16(format314.length + 4) + \u002F\u002F length\\n    format314 +\\n    header31012 +\\n    format31012\\n  );\\n}\\n\\nfunction validateOS2Table(os2, file) {\\n  file.pos = (file.start || 0) + os2.offset;\\n  const version = file.getUint16();\\n  \u002F\u002F TODO verify all OS\u002F2 tables fields, but currently we validate only those\\n  \u002F\u002F that give us issues\\n  file.skip(60); \u002F\u002F skipping type, misc sizes, panose, unicode ranges\\n  const selection = file.getUint16();\\n  if (version \u003C 4 && selection & 0x0300) {\\n    return false;\\n  }\\n  const firstChar = file.getUint16();\\n  const lastChar = file.getUint16();\\n  if (firstChar > lastChar) {\\n    return false;\\n  }\\n  file.skip(6); \u002F\u002F skipping sTypoAscender\u002FDescender\u002FLineGap\\n  const usWinAscent = file.getUint16();\\n  if (usWinAscent === 0) {\\n    \u002F\u002F makes font unreadable by windows\\n    return false;\\n  }\\n\\n  \u002F\u002F OS\u002F2 appears to be valid, resetting some fields\\n  os2.data[8] = os2.data[9] = 0; \u002F\u002F IE rejects fonts if fsType != 0\\n  return true;\\n}\\n\\nfunction createOS2Table(properties, charstrings, override) {\\n  override ||= {\\n    unitsPerEm: 0,\\n    yMax: 0,\\n    yMin: 0,\\n    ascent: 0,\\n    descent: 0,\\n  };\\n\\n  let ulUnicodeRange1 = 0;\\n  let ulUnicodeRange2 = 0;\\n  let ulUnicodeRange3 = 0;\\n  let ulUnicodeRange4 = 0;\\n\\n  let firstCharIndex = null;\\n  let lastCharIndex = 0;\\n  let position = -1;\\n\\n  if (charstrings) {\\n    for (let code in charstrings) {\\n      code |= 0;\\n      if (firstCharIndex > code || !firstCharIndex) {\\n        firstCharIndex = code;\\n      }\\n      if (lastCharIndex \u003C code) {\\n        lastCharIndex = code;\\n      }\\n\\n      position = getUnicodeRangeFor(code, position);\\n      if (position \u003C 32) {\\n        ulUnicodeRange1 |= 1 \u003C\u003C position;\\n      } else if (position \u003C 64) {\\n        ulUnicodeRange2 |= 1 \u003C\u003C (position - 32);\\n      } else if (position \u003C 96) {\\n        ulUnicodeRange3 |= 1 \u003C\u003C (position - 64);\\n      } else if (position \u003C 123) {\\n        ulUnicodeRange4 |= 1 \u003C\u003C (position - 96);\\n      } else {\\n        throw new FormatError(\\n          \\\"Unicode ranges Bits > 123 are reserved for internal usage\\\"\\n        );\\n      }\\n    }\\n    if (lastCharIndex > 0xffff) {\\n      \u002F\u002F OS2 only supports a 16 bit int. The spec says if supplementary\\n      \u002F\u002F characters are used the field should just be set to 0xFFFF.\\n      lastCharIndex = 0xffff;\\n    }\\n  } else {\\n    \u002F\u002F TODO\\n    firstCharIndex = 0;\\n    lastCharIndex = 255;\\n  }\\n\\n  const bbox = properties.bbox || [0, 0, 0, 0];\\n  const unitsPerEm =\\n    override.unitsPerEm ||\\n    1 \u002F (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\\n\\n  \u002F\u002F if the font units differ to the PDF glyph space units\\n  \u002F\u002F then scale up the values\\n  const scale = properties.ascentScaled\\n    ? 1.0\\n    : unitsPerEm \u002F PDF_GLYPH_SPACE_UNITS;\\n\\n  const typoAscent =\\n    override.ascent || Math.round(scale * (properties.ascent || bbox[3]));\\n  let typoDescent =\\n    override.descent || Math.round(scale * (properties.descent || bbox[1]));\\n  if (typoDescent > 0 && properties.descent > 0 && bbox[1] \u003C 0) {\\n    typoDescent = -typoDescent; \u002F\u002F fixing incorrect descent\\n  }\\n  const winAscent = override.yMax || typoAscent;\\n  const winDescent = -override.yMin || -typoDescent;\\n\\n  return (\\n    \\\"\\\\x00\\\\x03\\\" + \u002F\u002F version\\n    \\\"\\\\x02\\\\x24\\\" + \u002F\u002F xAvgCharWidth\\n    \\\"\\\\x01\\\\xF4\\\" + \u002F\u002F usWeightClass\\n    \\\"\\\\x00\\\\x05\\\" + \u002F\u002F usWidthClass\\n    \\\"\\\\x00\\\\x00\\\" + \u002F\u002F fstype (0 to let the font loads via font-face on IE)\\n    \\\"\\\\x02\\\\x8A\\\" + \u002F\u002F ySubscriptXSize\\n    \\\"\\\\x02\\\\xBB\\\" + \u002F\u002F ySubscriptYSize\\n    \\\"\\\\x00\\\\x00\\\" + \u002F\u002F ySubscriptXOffset\\n    \\\"\\\\x00\\\\x8C\\\" + \u002F\u002F ySubscriptYOffset\\n    \\\"\\\\x02\\\\x8A\\\" + \u002F\u002F ySuperScriptXSize\\n    \\\"\\\\x02\\\\xBB\\\" + \u002F\u002F ySuperScriptYSize\\n    \\\"\\\\x00\\\\x00\\\" + \u002F\u002F ySuperScriptXOffset\\n    \\\"\\\\x01\\\\xDF\\\" + \u002F\u002F ySuperScriptYOffset\\n    \\\"\\\\x00\\\\x31\\\" + \u002F\u002F yStrikeOutSize\\n    \\\"\\\\x01\\\\x02\\\" + \u002F\u002F yStrikeOutPosition\\n    \\\"\\\\x00\\\\x00\\\" + \u002F\u002F sFamilyClass\\n    \\\"\\\\x00\\\\x00\\\\x06\\\" +\\n    String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) +\\n    \\\"\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\" + \u002F\u002F Panose\\n    string32(ulUnicodeRange1) + \u002F\u002F ulUnicodeRange1 (Bits 0-31)\\n    string32(ulUnicodeRange2) + \u002F\u002F ulUnicodeRange2 (Bits 32-63)\\n    string32(ulUnicodeRange3) + \u002F\u002F ulUnicodeRange3 (Bits 64-95)\\n    string32(ulUnicodeRange4) + \u002F\u002F ulUnicodeRange4 (Bits 96-127)\\n    \\\"\\\\x2A\\\\x32\\\\x31\\\\x2A\\\" + \u002F\u002F achVendID\\n    string16(properties.italicAngle ? 1 : 0) + \u002F\u002F fsSelection\\n    string16(firstCharIndex || properties.firstChar) + \u002F\u002F usFirstCharIndex\\n    string16(lastCharIndex || properties.lastChar) + \u002F\u002F usLastCharIndex\\n    string16(typoAscent) + \u002F\u002F sTypoAscender\\n    string16(typoDescent) + \u002F\u002F sTypoDescender\\n    \\\"\\\\x00\\\\x64\\\" + \u002F\u002F sTypoLineGap (7%-10% of the unitsPerEM value)\\n    string16(winAscent) + \u002F\u002F usWinAscent\\n    string16(winDescent) + \u002F\u002F usWinDescent\\n    \\\"\\\\x00\\\\x00\\\\x00\\\\x00\\\" + \u002F\u002F ulCodePageRange1 (Bits 0-31)\\n    \\\"\\\\x00\\\\x00\\\\x00\\\\x00\\\" + \u002F\u002F ulCodePageRange2 (Bits 32-63)\\n    string16(properties.xHeight) + \u002F\u002F sxHeight\\n    string16(properties.capHeight) + \u002F\u002F sCapHeight\\n    string16(0) + \u002F\u002F usDefaultChar\\n    string16(firstCharIndex || properties.firstChar) + \u002F\u002F usBreakChar\\n    \\\"\\\\x00\\\\x03\\\"\\n  ); \u002F\u002F usMaxContext\\n}\\n\\nfunction createPostTable(properties) {\\n  const angle = Math.floor(properties.italicAngle * 2 ** 16);\\n  return (\\n    \\\"\\\\x00\\\\x03\\\\x00\\\\x00\\\" + \u002F\u002F Version number\\n    string32(angle) + \u002F\u002F italicAngle\\n    \\\"\\\\x00\\\\x00\\\" + \u002F\u002F underlinePosition\\n    \\\"\\\\x00\\\\x00\\\" + \u002F\u002F underlineThickness\\n    string32(properties.fixedPitch ? 1 : 0) + \u002F\u002F isFixedPitch\\n    \\\"\\\\x00\\\\x00\\\\x00\\\\x00\\\" + \u002F\u002F minMemType42\\n    \\\"\\\\x00\\\\x00\\\\x00\\\\x00\\\" + \u002F\u002F maxMemType42\\n    \\\"\\\\x00\\\\x00\\\\x00\\\\x00\\\" + \u002F\u002F minMemType1\\n    \\\"\\\\x00\\\\x00\\\\x00\\\\x00\\\"\\n  ); \u002F\u002F maxMemType1\\n}\\n\\nfunction createPostscriptName(name) {\\n  \u002F\u002F See https:\u002F\u002Fdocs.microsoft.com\u002Fen-us\u002Ftypography\u002Fopentype\u002Fspec\u002Frecom#name.\\n  return name.replaceAll(\u002F[^\\\\x21-\\\\x7E]|[[\\\\](){}\u003C>\u002F%]\u002Fg, \\\"\\\").slice(0, 63);\\n}\\n\\nfunction createNameTable(name, proto) {\\n  if (!proto) {\\n    proto = [[], []]; \u002F\u002F no strings and unicode strings\\n  }\\n\\n  const strings = [\\n    proto[0][0] || \\\"Original licence\\\", \u002F\u002F 0.Copyright\\n    proto[0][1] || name, \u002F\u002F 1.Font family\\n    proto[0][2] || \\\"Unknown\\\", \u002F\u002F 2.Font subfamily (font weight)\\n    proto[0][3] || \\\"uniqueID\\\", \u002F\u002F 3.Unique ID\\n    proto[0][4] || name, \u002F\u002F 4.Full font name\\n    proto[0][5] || \\\"Version 0.11\\\", \u002F\u002F 5.Version\\n    proto[0][6] || createPostscriptName(name), \u002F\u002F 6.Postscript name\\n    proto[0][7] || \\\"Unknown\\\", \u002F\u002F 7.Trademark\\n    proto[0][8] || \\\"Unknown\\\", \u002F\u002F 8.Manufacturer\\n    proto[0][9] || \\\"Unknown\\\", \u002F\u002F 9.Designer\\n  ];\\n\\n  \u002F\u002F Mac want 1-byte per character strings while Windows want\\n  \u002F\u002F 2-bytes per character, so duplicate the names table\\n  const stringsUnicode = [];\\n  let i, ii, j, jj, str;\\n  for (i = 0, ii = strings.length; i \u003C ii; i++) {\\n    str = proto[1][i] || strings[i];\\n\\n    const strBufUnicode = [];\\n    for (j = 0, jj = str.length; j \u003C jj; j++) {\\n      strBufUnicode.push(string16(str.charCodeAt(j)));\\n    }\\n    stringsUnicode.push(strBufUnicode.join(\\\"\\\"));\\n  }\\n\\n  const names = [strings, stringsUnicode];\\n  const platforms = [\\\"\\\\x00\\\\x01\\\", \\\"\\\\x00\\\\x03\\\"];\\n  const encodings = [\\\"\\\\x00\\\\x00\\\", \\\"\\\\x00\\\\x01\\\"];\\n  const languages = [\\\"\\\\x00\\\\x00\\\", \\\"\\\\x04\\\\x09\\\"];\\n\\n  const namesRecordCount = strings.length * platforms.length;\\n  let nameTable =\\n    \\\"\\\\x00\\\\x00\\\" + \u002F\u002F format\\n    string16(namesRecordCount) + \u002F\u002F Number of names Record\\n    string16(namesRecordCount * 12 + 6); \u002F\u002F Storage\\n\\n  \u002F\u002F Build the name records field\\n  let strOffset = 0;\\n  for (i = 0, ii = platforms.length; i \u003C ii; i++) {\\n    const strs = names[i];\\n    for (j = 0, jj = strs.length; j \u003C jj; j++) {\\n      str = strs[j];\\n      const nameRecord =\\n        platforms[i] + \u002F\u002F platform ID\\n        encodings[i] + \u002F\u002F encoding ID\\n        languages[i] + \u002F\u002F language ID\\n        string16(j) + \u002F\u002F name ID\\n        string16(str.length) +\\n        string16(strOffset);\\n      nameTable += nameRecord;\\n      strOffset += str.length;\\n    }\\n  }\\n\\n  nameTable += strings.join(\\\"\\\") + stringsUnicode.join(\\\"\\\");\\n  return nameTable;\\n}\\n\\n\u002F**\\n * 'Font' is the class the outside world should use, it encapsulate all the font\\n * decoding logics whatever type it is (assuming the font type is supported).\\n *\u002F\\nclass Font {\\n  constructor(name, file, properties) {\\n    this.name = name;\\n    this.psName = null;\\n    this.mimetype = null;\\n    this.disableFontFace = false;\\n\\n    this.loadedName = properties.loadedName;\\n    this.isType3Font = properties.isType3Font;\\n    this.missingFile = false;\\n    this.cssFontInfo = properties.cssFontInfo;\\n\\n    this._charsCache = Object.create(null);\\n    this._glyphCache = Object.create(null);\\n\\n    let isSerifFont = !!(properties.flags & FontFlags.Serif);\\n    \u002F\u002F Fallback to checking the font name, in order to improve text-selection,\\n    \u002F\u002F since the \u002FFlags-entry is often wrong (fixes issue13845.pdf).\\n    if (!isSerifFont && !properties.isSimulatedFlags) {\\n      const baseName = name.replaceAll(\u002F[,_]\u002Fg, \\\"-\\\").split(\\\"-\\\", 1)[0],\\n        serifFonts = getSerifFonts();\\n      for (const namePart of baseName.split(\\\"+\\\")) {\\n        if (serifFonts[namePart]) {\\n          isSerifFont = true;\\n          break;\\n        }\\n      }\\n    }\\n    this.isSerifFont = isSerifFont;\\n\\n    this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\\n    this.isMonospace = !!(properties.flags & FontFlags.FixedPitch);\\n\\n    let { type, subtype } = properties;\\n    this.type = type;\\n    this.subtype = subtype;\\n    this.systemFontInfo = properties.systemFontInfo;\\n\\n    const matches = name.match(\u002F^InvalidPDFjsFont_(.*)_\\\\d+$\u002F);\\n    this.isInvalidPDFjsFont = !!matches;\\n    if (this.isInvalidPDFjsFont) {\\n      this.fallbackName = matches[1];\\n    } else if (this.isMonospace) {\\n      this.fallbackName = \\\"monospace\\\";\\n    } else if (this.isSerifFont) {\\n      this.fallbackName = \\\"serif\\\";\\n    } else {\\n      this.fallbackName = \\\"sans-serif\\\";\\n    }\\n\\n    if (this.systemFontInfo?.guessFallback) {\\n      \u002F\u002F Once the fallback name is guessed, we don't want to guess it again.\\n      this.systemFontInfo.guessFallback = false;\\n      this.systemFontInfo.css += `,${this.fallbackName}`;\\n    }\\n\\n    this.differences = properties.differences;\\n    this.widths = properties.widths;\\n    this.defaultWidth = properties.defaultWidth;\\n    this.composite = properties.composite;\\n    this.cMap = properties.cMap;\\n    this.capHeight = properties.capHeight \u002F PDF_GLYPH_SPACE_UNITS;\\n    this.ascent = properties.ascent \u002F PDF_GLYPH_SPACE_UNITS;\\n    this.descent = properties.descent \u002F PDF_GLYPH_SPACE_UNITS;\\n    this.lineHeight = this.ascent - this.descent;\\n    this.fontMatrix = properties.fontMatrix;\\n    this.bbox = properties.bbox;\\n    this.defaultEncoding = properties.defaultEncoding;\\n\\n    this.toUnicode = properties.toUnicode;\\n    this.toFontChar = [];\\n\\n    if (properties.type === \\\"Type3\\\") {\\n      for (let charCode = 0; charCode \u003C 256; charCode++) {\\n        this.toFontChar[charCode] =\\n          this.differences[charCode] || properties.defaultEncoding[charCode];\\n      }\\n      return;\\n    }\\n\\n    this.cidEncoding = properties.cidEncoding || \\\"\\\";\\n    this.vertical = !!properties.vertical;\\n    if (this.vertical) {\\n      this.vmetrics = properties.vmetrics;\\n      this.defaultVMetrics = properties.defaultVMetrics;\\n    }\\n\\n    if (!file || file.isEmpty) {\\n      if (file) {\\n        \u002F\u002F Some bad PDF generators will include empty font files,\\n        \u002F\u002F attempting to recover by assuming that no file exists.\\n        warn('Font file is empty in \\\"' + name + '\\\" (' + this.loadedName + \\\")\\\");\\n      }\\n      this.fallbackToSystemFont(properties);\\n      return;\\n    }\\n\\n    \u002F\u002F Parse the font file to determine the correct type\u002Fsubtype, rather than\\n    \u002F\u002F relying on the (often incorrect) data in the font dictionary; (see e.g.\\n    \u002F\u002F  issue6782.pdf, issue7598.pdf, and issue9949.pdf).\\n    [type, subtype] = getFontFileType(file, properties);\\n\\n    if (type !== this.type || subtype !== this.subtype) {\\n      info(\\n        \\\"Inconsistent font file Type\u002FSubType, expected: \\\" +\\n          `${this.type}\u002F${this.subtype} but found: ${type}\u002F${subtype}.`\\n      );\\n    }\\n\\n    let data;\\n    try {\\n      switch (type) {\\n        case \\\"MMType1\\\":\\n          info(\\\"MMType1 font (\\\" + name + \\\"), falling back to Type1.\\\");\\n        \u002F* falls through *\u002F\\n        case \\\"Type1\\\":\\n        case \\\"CIDFontType0\\\":\\n          this.mimetype = \\\"font\u002Fopentype\\\";\\n\\n          const cff =\\n            subtype === \\\"Type1C\\\" || subtype === \\\"CIDFontType0C\\\"\\n              ? new CFFFont(file, properties)\\n              : new Type1Font(name, file, properties);\\n\\n          adjustWidths(properties);\\n\\n          \u002F\u002F Wrap the CFF data inside an OTF font file\\n          data = this.convert(name, cff, properties);\\n          break;\\n\\n        case \\\"OpenType\\\":\\n        case \\\"TrueType\\\":\\n        case \\\"CIDFontType2\\\":\\n          this.mimetype = \\\"font\u002Fopentype\\\";\\n\\n          \u002F\u002F Repair the TrueType file. It is can be damaged in the point of\\n          \u002F\u002F view of the sanitizer\\n          data = this.checkAndRepair(name, file, properties);\\n          if (this.isOpenType) {\\n            adjustWidths(properties);\\n\\n            type = \\\"OpenType\\\";\\n          }\\n          break;\\n\\n        default:\\n          throw new FormatError(`Font ${type} is not supported`);\\n      }\\n    } catch (e) {\\n      warn(e);\\n      this.fallbackToSystemFont(properties);\\n      return;\\n    }\\n\\n    amendFallbackToUnicode(properties);\\n    this.data = data;\\n\\n    \u002F\u002F Transfer some properties again that could change during font conversion\\n    this.type = type;\\n    this.subtype = subtype;\\n    this.fontMatrix = properties.fontMatrix;\\n    this.widths = properties.widths;\\n    this.defaultWidth = properties.defaultWidth;\\n    this.toUnicode = properties.toUnicode;\\n    this.seacMap = properties.seacMap;\\n  }\\n\\n  get renderer() {\\n    const renderer = FontRendererFactory.create(this, SEAC_ANALYSIS_ENABLED);\\n    return shadow(this, \\\"renderer\\\", renderer);\\n  }\\n\\n  exportData(extraProperties = false) {\\n    const exportDataProperties = extraProperties\\n      ? [...EXPORT_DATA_PROPERTIES, ...EXPORT_DATA_EXTRA_PROPERTIES]\\n      : EXPORT_DATA_PROPERTIES;\\n\\n    const data = Object.create(null);\\n    let property, value;\\n    for (property of exportDataProperties) {\\n      value = this[property];\\n      \u002F\u002F Ignore properties that haven't been explicitly set.\\n      if (value !== undefined) {\\n        data[property] = value;\\n      }\\n    }\\n    return data;\\n  }\\n\\n  fallbackToSystemFont(properties) {\\n    this.missingFile = true;\\n    \u002F\u002F The file data is not specified. Trying to fix the font name\\n    \u002F\u002F to be used with the canvas.font.\\n    const { name, type } = this;\\n    let fontName = normalizeFontName(name);\\n    const stdFontMap = getStdFontMap(),\\n      nonStdFontMap = getNonStdFontMap();\\n    const isStandardFont = !!stdFontMap[fontName];\\n    const isMappedToStandardFont = !!(\\n      nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]\\n    );\\n\\n    fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;\\n\\n    const fontBasicMetricsMap = getFontBasicMetrics();\\n    const metrics = fontBasicMetricsMap[fontName];\\n    if (metrics) {\\n      if (isNaN(this.ascent)) {\\n        this.ascent = metrics.ascent \u002F PDF_GLYPH_SPACE_UNITS;\\n      }\\n      if (isNaN(this.descent)) {\\n        this.descent = metrics.descent \u002F PDF_GLYPH_SPACE_UNITS;\\n      }\\n      if (isNaN(this.capHeight)) {\\n        this.capHeight = metrics.capHeight \u002F PDF_GLYPH_SPACE_UNITS;\\n      }\\n    }\\n\\n    this.bold = \u002Fbold\u002Fgi.test(fontName);\\n    this.italic = \u002Foblique|italic\u002Fgi.test(fontName);\\n\\n    \u002F\u002F Use 'name' instead of 'fontName' here because the original\\n    \u002F\u002F name ArialBlack for example will be replaced by Helvetica.\\n    this.black = \u002FBlack\u002Fg.test(name);\\n\\n    \u002F\u002F Use 'name' instead of 'fontName' here because the original\\n    \u002F\u002F name ArialNarrow for example will be replaced by Helvetica.\\n    const isNarrow = \u002FNarrow\u002Fg.test(name);\\n\\n    \u002F\u002F if at least one width is present, remeasure all chars when exists\\n    this.remeasure =\\n      (!isStandardFont || isNarrow) && Object.keys(this.widths).length > 0;\\n    if (\\n      (isStandardFont || isMappedToStandardFont) &&\\n      type === \\\"CIDFontType2\\\" &&\\n      this.cidEncoding.startsWith(\\\"Identity-\\\")\\n    ) {\\n      const cidToGidMap = properties.cidToGidMap;\\n      \u002F\u002F Standard fonts might be embedded as CID font without glyph mapping.\\n      \u002F\u002F Building one based on GlyphMapForStandardFonts.\\n      const map = [];\\n      applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts());\\n\\n      if (\u002FArial-?Black\u002Fi.test(name)) {\\n        applyStandardFontGlyphMap(map, getSupplementalGlyphMapForArialBlack());\\n      } else if (\u002FCalibri\u002Fi.test(name)) {\\n        applyStandardFontGlyphMap(map, getSupplementalGlyphMapForCalibri());\\n      }\\n\\n      \u002F\u002F Always update the glyph mapping with the `cidToGidMap` when it exists\\n      \u002F\u002F (fixes issue12418_reduced.pdf).\\n      if (cidToGidMap) {\\n        for (const charCode in map) {\\n          const cid = map[charCode];\\n          if (cidToGidMap[cid] !== undefined) {\\n            map[+charCode] = cidToGidMap[cid];\\n          }\\n        }\\n        \u002F\u002F When the \u002FCIDToGIDMap is \\\"incomplete\\\", fallback to the included\\n        \u002F\u002F \u002FToUnicode-map regardless of its encoding (fixes issue11915.pdf).\\n        if (\\n          cidToGidMap.length !== this.toUnicode.length &&\\n          properties.hasIncludedToUnicodeMap &&\\n          this.toUnicode instanceof IdentityToUnicodeMap\\n        ) {\\n          this.toUnicode.forEach(function (charCode, unicodeCharCode) {\\n            const cid = map[charCode];\\n            if (cidToGidMap[cid] === undefined) {\\n              map[+charCode] = unicodeCharCode;\\n            }\\n          });\\n        }\\n      }\\n\\n      if (!(this.toUnicode instanceof IdentityToUnicodeMap)) {\\n        this.toUnicode.forEach(function (charCode, unicodeCharCode) {\\n          map[+charCode] = unicodeCharCode;\\n        });\\n      }\\n      this.toFontChar = map;\\n      this.toUnicode = new ToUnicodeMap(map);\\n    } else if (\u002FSymbol\u002Fi.test(fontName)) {\\n      this.toFontChar = buildToFontChar(\\n        SymbolSetEncoding,\\n        getGlyphsUnicode(),\\n        this.differences\\n      );\\n    } else if (\u002FDingbats\u002Fi.test(fontName)) {\\n      this.toFontChar = buildToFontChar(\\n        ZapfDingbatsEncoding,\\n        getDingbatsGlyphsUnicode(),\\n        this.differences\\n      );\\n    } else if (isStandardFont) {\\n      const map = buildToFontChar(\\n        this.defaultEncoding,\\n        getGlyphsUnicode(),\\n        this.differences\\n      );\\n\\n      if (\\n        type === \\\"CIDFontType2\\\" &&\\n        !this.cidEncoding.startsWith(\\\"Identity-\\\") &&\\n        !(this.toUnicode instanceof IdentityToUnicodeMap)\\n      ) {\\n        this.toUnicode.forEach(function (charCode, unicodeCharCode) {\\n          map[+charCode] = unicodeCharCode;\\n        });\\n      }\\n      this.toFontChar = map;\\n    } else {\\n      const glyphsUnicodeMap = getGlyphsUnicode();\\n      const map = [];\\n      this.toUnicode.forEach((charCode, unicodeCharCode) => {\\n        if (!this.composite) {\\n          const glyphName =\\n            this.differences[charCode] || this.defaultEncoding[charCode];\\n          const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\\n          if (unicode !== -1) {\\n            unicodeCharCode = unicode;\\n          }\\n        }\\n        map[+charCode] = unicodeCharCode;\\n      });\\n\\n      \u002F\u002F Attempt to improve the glyph mapping for (some) composite fonts that\\n      \u002F\u002F appear to lack meaningful ToUnicode data.\\n      if (this.composite && this.toUnicode instanceof IdentityToUnicodeMap) {\\n        if (\u002FTahoma|Verdana\u002Fi.test(name)) {\\n          \u002F\u002F Fixes issue15719.pdf and issue11242_reduced.pdf.\\n          applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts());\\n        }\\n      }\\n      this.toFontChar = map;\\n    }\\n\\n    amendFallbackToUnicode(properties);\\n    this.loadedName = fontName.split(\\\"-\\\", 1)[0];\\n  }\\n\\n  checkAndRepair(name, font, properties) {\\n    const VALID_TABLES = [\\n      \\\"OS\u002F2\\\",\\n      \\\"cmap\\\",\\n      \\\"head\\\",\\n      \\\"hhea\\\",\\n      \\\"hmtx\\\",\\n      \\\"maxp\\\",\\n      \\\"name\\\",\\n      \\\"post\\\",\\n      \\\"loca\\\",\\n      \\\"glyf\\\",\\n      \\\"fpgm\\\",\\n      \\\"prep\\\",\\n      \\\"cvt \\\",\\n      \\\"CFF \\\",\\n    ];\\n\\n    function readTables(file, numTables) {\\n      const tables = Object.create(null);\\n      tables[\\\"OS\u002F2\\\"] = null;\\n      tables.cmap = null;\\n      tables.head = null;\\n      tables.hhea = null;\\n      tables.hmtx = null;\\n      tables.maxp = null;\\n      tables.name = null;\\n      tables.post = null;\\n\\n      for (let i = 0; i \u003C numTables; i++) {\\n        const table = readTableEntry(file);\\n        if (!VALID_TABLES.includes(table.tag)) {\\n          continue; \u002F\u002F skipping table if it's not a required or optional table\\n        }\\n        if (table.length === 0) {\\n          continue; \u002F\u002F skipping empty tables\\n        }\\n        tables[table.tag] = table;\\n      }\\n      return tables;\\n    }\\n\\n    function readTableEntry(file) {\\n      const tag = file.getString(4);\\n\\n      const checksum = file.getInt32() >>> 0;\\n      const offset = file.getInt32() >>> 0;\\n      const length = file.getInt32() >>> 0;\\n\\n      \u002F\u002F Read the table associated data\\n      const previousPosition = file.pos;\\n      file.pos = file.start || 0;\\n      file.skip(offset);\\n      const data = file.getBytes(length);\\n      file.pos = previousPosition;\\n\\n      if (tag === \\\"head\\\") {\\n        \u002F\u002F clearing checksum adjustment\\n        data[8] = data[9] = data[10] = data[11] = 0;\\n        data[17] |= 0x20; \u002F\u002F Set font optimized for cleartype flag.\\n      }\\n\\n      return {\\n        tag,\\n        checksum,\\n        length,\\n        offset,\\n        data,\\n      };\\n    }\\n\\n    function readOpenTypeHeader(ttf) {\\n      return {\\n        version: ttf.getString(4),\\n        numTables: ttf.getUint16(),\\n        searchRange: ttf.getUint16(),\\n        entrySelector: ttf.getUint16(),\\n        rangeShift: ttf.getUint16(),\\n      };\\n    }\\n\\n    function readTrueTypeCollectionHeader(ttc) {\\n      const ttcTag = ttc.getString(4);\\n      assert(ttcTag === \\\"ttcf\\\", \\\"Must be a TrueType Collection font.\\\");\\n\\n      const majorVersion = ttc.getUint16();\\n      const minorVersion = ttc.getUint16();\\n      const numFonts = ttc.getInt32() >>> 0;\\n      const offsetTable = [];\\n      for (let i = 0; i \u003C numFonts; i++) {\\n        offsetTable.push(ttc.getInt32() >>> 0);\\n      }\\n\\n      const header = {\\n        ttcTag,\\n        majorVersion,\\n        minorVersion,\\n        numFonts,\\n        offsetTable,\\n      };\\n      switch (majorVersion) {\\n        case 1:\\n          return header;\\n        case 2:\\n          header.dsigTag = ttc.getInt32() >>> 0;\\n          header.dsigLength = ttc.getInt32() >>> 0;\\n          header.dsigOffset = ttc.getInt32() >>> 0;\\n          return header;\\n      }\\n      throw new FormatError(\\n        `Invalid TrueType Collection majorVersion: ${majorVersion}.`\\n      );\\n    }\\n\\n    function readTrueTypeCollectionData(ttc, fontName) {\\n      const { numFonts, offsetTable } = readTrueTypeCollectionHeader(ttc);\\n      const fontNameParts = fontName.split(\\\"+\\\");\\n      let fallbackData;\\n\\n      for (let i = 0; i \u003C numFonts; i++) {\\n        ttc.pos = (ttc.start || 0) + offsetTable[i];\\n        const potentialHeader = readOpenTypeHeader(ttc);\\n        const potentialTables = readTables(ttc, potentialHeader.numTables);\\n\\n        if (!potentialTables.name) {\\n          throw new FormatError(\\n            'TrueType Collection font must contain a \\\"name\\\" table.'\\n          );\\n        }\\n        const [nameTable] = readNameTable(potentialTables.name);\\n\\n        for (let j = 0, jj = nameTable.length; j \u003C jj; j++) {\\n          for (let k = 0, kk = nameTable[j].length; k \u003C kk; k++) {\\n            const nameEntry = nameTable[j][k]?.replaceAll(\u002F\\\\s\u002Fg, \\\"\\\");\\n            if (!nameEntry) {\\n              continue;\\n            }\\n            if (nameEntry === fontName) {\\n              return {\\n                header: potentialHeader,\\n                tables: potentialTables,\\n              };\\n            }\\n            if (fontNameParts.length \u003C 2) {\\n              continue;\\n            }\\n            for (const part of fontNameParts) {\\n              if (nameEntry === part) {\\n                fallbackData = {\\n                  name: part,\\n                  header: potentialHeader,\\n                  tables: potentialTables,\\n                };\\n              }\\n            }\\n          }\\n        }\\n      }\\n      if (fallbackData) {\\n        warn(\\n          `TrueType Collection does not contain \\\"${fontName}\\\" font, ` +\\n            `falling back to \\\"${fallbackData.name}\\\" font instead.`\\n        );\\n        return {\\n          header: fallbackData.header,\\n          tables: fallbackData.tables,\\n        };\\n      }\\n      throw new FormatError(\\n        `TrueType Collection does not contain \\\"${fontName}\\\" font.`\\n      );\\n    }\\n\\n    \u002F**\\n     * Read the appropriate subtable from the cmap according to 9.6.6.4 from\\n     * PDF spec\\n     *\u002F\\n    function readCmapTable(cmap, file, isSymbolicFont, hasEncoding) {\\n      if (!cmap) {\\n        warn(\\\"No cmap table available.\\\");\\n        return {\\n          platformId: -1,\\n          encodingId: -1,\\n          mappings: [],\\n          hasShortCmap: false,\\n        };\\n      }\\n      let segment;\\n      let start = (file.start || 0) + cmap.offset;\\n      file.pos = start;\\n\\n      file.skip(2); \u002F\u002F version\\n      const numTables = file.getUint16();\\n\\n      let potentialTable;\\n      let canBreak = false;\\n      \u002F\u002F There's an order of preference in terms of which cmap subtable to\\n      \u002F\u002F use:\\n      \u002F\u002F - non-symbolic fonts the preference is a 3,1 table then a 1,0 table\\n      \u002F\u002F - symbolic fonts the preference is a 3,0 table then a 1,0 table\\n      \u002F\u002F The following takes advantage of the fact that the tables are sorted\\n      \u002F\u002F to work.\\n      for (let i = 0; i \u003C numTables; i++) {\\n        const platformId = file.getUint16();\\n        const encodingId = file.getUint16();\\n        const offset = file.getInt32() >>> 0;\\n        let useTable = false;\\n\\n        \u002F\u002F Sometimes there are multiple of the same type of table. Default\\n        \u002F\u002F to choosing the first table and skip the rest.\\n        if (\\n          potentialTable?.platformId === platformId &&\\n          potentialTable?.encodingId === encodingId\\n        ) {\\n          continue;\\n        }\\n\\n        if (\\n          platformId === 0 &&\\n          (encodingId === \u002F* Unicode Default *\u002F 0 ||\\n            encodingId === \u002F* Unicode 1.1 *\u002F 1 ||\\n            encodingId === \u002F* Unicode BMP *\u002F 3)\\n        ) {\\n          useTable = true;\\n          \u002F\u002F Continue the loop since there still may be a higher priority\\n          \u002F\u002F table.\\n        } else if (platformId === 1 && encodingId === 0) {\\n          useTable = true;\\n          \u002F\u002F Continue the loop since there still may be a higher priority\\n          \u002F\u002F table.\\n        } else if (\\n          platformId === 3 &&\\n          encodingId === 1 &&\\n          (hasEncoding || !potentialTable)\\n        ) {\\n          useTable = true;\\n          if (!isSymbolicFont) {\\n            canBreak = true;\\n          }\\n        } else if (isSymbolicFont && platformId === 3 && encodingId === 0) {\\n          useTable = true;\\n\\n          let correctlySorted = true;\\n          if (i \u003C numTables - 1) {\\n            const nextBytes = file.peekBytes(2),\\n              nextPlatformId = int16(nextBytes[0], nextBytes[1]);\\n            if (nextPlatformId \u003C platformId) {\\n              correctlySorted = false;\\n            }\\n          }\\n          if (correctlySorted) {\\n            canBreak = true;\\n          }\\n        }\\n\\n        if (useTable) {\\n          potentialTable = {\\n            platformId,\\n            encodingId,\\n            offset,\\n          };\\n        }\\n        if (canBreak) {\\n          break;\\n        }\\n      }\\n\\n      if (potentialTable) {\\n        file.pos = start + potentialTable.offset;\\n      }\\n      if (!potentialTable || file.peekByte() === -1) {\\n        warn(\\\"Could not find a preferred cmap table.\\\");\\n        return {\\n          platformId: -1,\\n          encodingId: -1,\\n          mappings: [],\\n          hasShortCmap: false,\\n        };\\n      }\\n\\n      const format = file.getUint16();\\n      let hasShortCmap = false;\\n      const mappings = [];\\n      let j, glyphId;\\n\\n      \u002F\u002F TODO(mack): refactor this cmap subtable reading logic out\\n      if (format === 0) {\\n        file.skip(2 + 2); \u002F\u002F length + language\\n\\n        for (j = 0; j \u003C 256; j++) {\\n          const index = file.getByte();\\n          if (!index) {\\n            continue;\\n          }\\n          mappings.push({\\n            charCode: j,\\n            glyphId: index,\\n          });\\n        }\\n        hasShortCmap = true;\\n      } else if (format === 2) {\\n        file.skip(2 + 2); \u002F\u002F length + language\\n\\n        const subHeaderKeys = [];\\n        let maxSubHeaderKey = 0;\\n        \u002F\u002F Read subHeaderKeys. If subHeaderKeys[i] === 0, then i is a\\n        \u002F\u002F single-byte character. Otherwise, i is the first byte of a\\n        \u002F\u002F multi-byte character, and the value is 8*index into\\n        \u002F\u002F subHeaders.\\n        for (let i = 0; i \u003C 256; i++) {\\n          const subHeaderKey = file.getUint16() >> 3;\\n          subHeaderKeys.push(subHeaderKey);\\n          maxSubHeaderKey = Math.max(subHeaderKey, maxSubHeaderKey);\\n        }\\n        \u002F\u002F Read subHeaders. The number of entries is determined\\n        \u002F\u002F dynamically based on the subHeaderKeys found above.\\n        const subHeaders = [];\\n        for (let i = 0; i \u003C= maxSubHeaderKey; i++) {\\n          subHeaders.push({\\n            firstCode: file.getUint16(),\\n            entryCount: file.getUint16(),\\n            idDelta: signedInt16(file.getByte(), file.getByte()),\\n            idRangePos: file.pos + file.getUint16(),\\n          });\\n        }\\n        for (let i = 0; i \u003C 256; i++) {\\n          if (subHeaderKeys[i] === 0) {\\n            \u002F\u002F i is a single-byte code.\\n            file.pos = subHeaders[0].idRangePos + 2 * i;\\n            glyphId = file.getUint16();\\n            mappings.push({\\n              charCode: i,\\n              glyphId,\\n            });\\n          } else {\\n            \u002F\u002F i is the first byte of a two-byte code.\\n            const s = subHeaders[subHeaderKeys[i]];\\n            for (j = 0; j \u003C s.entryCount; j++) {\\n              const charCode = (i \u003C\u003C 8) + j + s.firstCode;\\n              file.pos = s.idRangePos + 2 * j;\\n              glyphId = file.getUint16();\\n              if (glyphId !== 0) {\\n                glyphId = (glyphId + s.idDelta) % 65536;\\n              }\\n              mappings.push({\\n                charCode,\\n                glyphId,\\n              });\\n            }\\n          }\\n        }\\n      } else if (format === 4) {\\n        file.skip(2 + 2); \u002F\u002F length + language\\n\\n        \u002F\u002F re-creating the table in format 4 since the encoding\\n        \u002F\u002F might be changed\\n        const segCount = file.getUint16() >> 1;\\n        file.skip(6); \u002F\u002F skipping range fields\\n        const segments = [];\\n        let segIndex;\\n        for (segIndex = 0; segIndex \u003C segCount; segIndex++) {\\n          segments.push({ end: file.getUint16() });\\n        }\\n        file.skip(2);\\n        for (segIndex = 0; segIndex \u003C segCount; segIndex++) {\\n          segments[segIndex].start = file.getUint16();\\n        }\\n\\n        for (segIndex = 0; segIndex \u003C segCount; segIndex++) {\\n          segments[segIndex].delta = file.getUint16();\\n        }\\n\\n        let offsetsCount = 0,\\n          offsetIndex;\\n        for (segIndex = 0; segIndex \u003C segCount; segIndex++) {\\n          segment = segments[segIndex];\\n          const rangeOffset = file.getUint16();\\n          if (!rangeOffset) {\\n            segment.offsetIndex = -1;\\n            continue;\\n          }\\n\\n          offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);\\n          segment.offsetIndex = offsetIndex;\\n          offsetsCount = Math.max(\\n            offsetsCount,\\n            offsetIndex + segment.end - segment.start + 1\\n          );\\n        }\\n\\n        const offsets = [];\\n        for (j = 0; j \u003C offsetsCount; j++) {\\n          offsets.push(file.getUint16());\\n        }\\n\\n        for (segIndex = 0; segIndex \u003C segCount; segIndex++) {\\n          segment = segments[segIndex];\\n          start = segment.start;\\n          const end = segment.end;\\n          const delta = segment.delta;\\n          offsetIndex = segment.offsetIndex;\\n\\n          for (j = start; j \u003C= end; j++) {\\n            if (j === 0xffff) {\\n              continue;\\n            }\\n\\n            glyphId = offsetIndex \u003C 0 ? j : offsets[offsetIndex + j - start];\\n            glyphId = (glyphId + delta) & 0xffff;\\n            mappings.push({\\n              charCode: j,\\n              glyphId,\\n            });\\n          }\\n        }\\n      } else if (format === 6) {\\n        file.skip(2 + 2); \u002F\u002F length + language\\n\\n        \u002F\u002F Format 6 is a 2-bytes dense mapping, which means the font data\\n        \u002F\u002F lives glue together even if they are pretty far in the unicode\\n        \u002F\u002F table. (This looks weird, so I can have missed something), this\\n        \u002F\u002F works on Linux but seems to fails on Mac so let's rewrite the\\n        \u002F\u002F cmap table to a 3-1-4 style\\n        const firstCode = file.getUint16();\\n        const entryCount = file.getUint16();\\n\\n        for (j = 0; j \u003C entryCount; j++) {\\n          glyphId = file.getUint16();\\n          const charCode = firstCode + j;\\n\\n          mappings.push({\\n            charCode,\\n            glyphId,\\n          });\\n        }\\n      } else if (format === 12) {\\n        file.skip(2 + 4 + 4); \u002F\u002F reserved + length + language\\n\\n        const nGroups = file.getInt32() >>> 0;\\n        for (j = 0; j \u003C nGroups; j++) {\\n          const startCharCode = file.getInt32() >>> 0;\\n          const endCharCode = file.getInt32() >>> 0;\\n          let glyphCode = file.getInt32() >>> 0;\\n\\n          for (\\n            let charCode = startCharCode;\\n            charCode \u003C= endCharCode;\\n            charCode++\\n          ) {\\n            mappings.push({\\n              charCode,\\n              glyphId: glyphCode++,\\n            });\\n          }\\n        }\\n      } else {\\n        warn(\\\"cmap table has unsupported format: \\\" + format);\\n        return {\\n          platformId: -1,\\n          encodingId: -1,\\n          mappings: [],\\n          hasShortCmap: false,\\n        };\\n      }\\n\\n      \u002F\u002F removing duplicate entries\\n      mappings.sort(function (a, b) {\\n        return a.charCode - b.charCode;\\n      });\\n      for (let i = 1; i \u003C mappings.length; i++) {\\n        if (mappings[i - 1].charCode === mappings[i].charCode) {\\n          mappings.splice(i, 1);\\n          i--;\\n        }\\n      }\\n\\n      return {\\n        platformId: potentialTable.platformId,\\n        encodingId: potentialTable.encodingId,\\n        mappings,\\n        hasShortCmap,\\n      };\\n    }\\n\\n    function sanitizeMetrics(\\n      file,\\n      header,\\n      metrics,\\n      headTable,\\n      numGlyphs,\\n      dupFirstEntry\\n    ) {\\n      if (!header) {\\n        if (metrics) {\\n          metrics.data = null;\\n        }\\n        return;\\n      }\\n\\n      file.pos = (file.start || 0) + header.offset;\\n      file.pos += 4; \u002F\u002F version\\n      file.pos += 2; \u002F\u002F ascent\\n      file.pos += 2; \u002F\u002F descent\\n      file.pos += 2; \u002F\u002F linegap\\n      file.pos += 2; \u002F\u002F adv_width_max\\n      file.pos += 2; \u002F\u002F min_sb1\\n      file.pos += 2; \u002F\u002F min_sb2\\n      file.pos += 2; \u002F\u002F max_extent\\n      file.pos += 2; \u002F\u002F caret_slope_rise\\n      file.pos += 2; \u002F\u002F caret_slope_run\\n      const caretOffset = file.getUint16();\\n      file.pos += 8; \u002F\u002F reserved\\n      file.pos += 2; \u002F\u002F format\\n      let numOfMetrics = file.getUint16();\\n\\n      if (caretOffset !== 0) {\\n        const macStyle = int16(headTable.data[44], headTable.data[45]);\\n        if (!(macStyle & 2)) {\\n          \u002F\u002F Suppress OTS warnings about the `caretOffset` in the hhea-table.\\n          header.data[22] = 0;\\n          header.data[23] = 0;\\n        }\\n      }\\n\\n      if (numOfMetrics > numGlyphs) {\\n        info(\\n          `The numOfMetrics (${numOfMetrics}) should not be ` +\\n            `greater than the numGlyphs (${numGlyphs}).`\\n        );\\n        \u002F\u002F Reduce numOfMetrics if it is greater than numGlyphs\\n        numOfMetrics = numGlyphs;\\n        header.data[34] = (numOfMetrics & 0xff00) >> 8;\\n        header.data[35] = numOfMetrics & 0x00ff;\\n      }\\n\\n      const numOfSidebearings = numGlyphs - numOfMetrics;\\n      const numMissing =\\n        numOfSidebearings - ((metrics.length - numOfMetrics * 4) >> 1);\\n\\n      if (numMissing > 0) {\\n        \u002F\u002F For each missing glyph, we set both the width and lsb to 0 (zero).\\n        \u002F\u002F Since we need to add two properties for each glyph, this explains\\n        \u002F\u002F the use of |numMissing * 2| when initializing the typed array.\\n        const entries = new Uint8Array(metrics.length + numMissing * 2);\\n        entries.set(metrics.data);\\n        if (dupFirstEntry) {\\n          \u002F\u002F Set the sidebearing value of the duplicated glyph.\\n          entries[metrics.length] = metrics.data[2];\\n          entries[metrics.length + 1] = metrics.data[3];\\n        }\\n        metrics.data = entries;\\n      }\\n    }\\n\\n    function sanitizeGlyph(\\n      source,\\n      sourceStart,\\n      sourceEnd,\\n      dest,\\n      destStart,\\n      hintsValid\\n    ) {\\n      const glyphProfile = {\\n        length: 0,\\n        sizeOfInstructions: 0,\\n      };\\n      if (\\n        sourceStart \u003C 0 ||\\n        sourceStart >= source.length ||\\n        sourceEnd > source.length ||\\n        sourceEnd - sourceStart \u003C= 12\\n      ) {\\n        \u002F\u002F If the offsets are wrong or the glyph is too small, remove it.\\n        return glyphProfile;\\n      }\\n      const glyf = source.subarray(sourceStart, sourceEnd);\\n\\n      \u002F\u002F Sanitize the glyph bounding box.\\n      const xMin = signedInt16(glyf[2], glyf[3]);\\n      const yMin = signedInt16(glyf[4], glyf[5]);\\n      const xMax = signedInt16(glyf[6], glyf[7]);\\n      const yMax = signedInt16(glyf[8], glyf[9]);\\n\\n      if (xMin > xMax) {\\n        writeSignedInt16(glyf, 2, xMax);\\n        writeSignedInt16(glyf, 6, xMin);\\n      }\\n      if (yMin > yMax) {\\n        writeSignedInt16(glyf, 4, yMax);\\n        writeSignedInt16(glyf, 8, yMin);\\n      }\\n\\n      const contoursCount = signedInt16(glyf[0], glyf[1]);\\n      if (contoursCount \u003C 0) {\\n        if (contoursCount \u003C -1) {\\n          \u002F\u002F OTS doesn't like contour count to be less than -1.\\n          \u002F\u002F The glyph data offsets are very likely wrong and\\n          \u002F\u002F having something lower than -1, very likely, implies\\n          \u002F\u002F to have some garbage data.\\n          return glyphProfile;\\n        }\\n        \u002F\u002F complex glyph, writing as is\\n        dest.set(glyf, destStart);\\n        glyphProfile.length = glyf.length;\\n        return glyphProfile;\\n      }\\n\\n      let i,\\n        j = 10,\\n        flagsCount = 0;\\n      for (i = 0; i \u003C contoursCount; i++) {\\n        const endPoint = (glyf[j] \u003C\u003C 8) | glyf[j + 1];\\n        flagsCount = endPoint + 1;\\n        j += 2;\\n      }\\n      \u002F\u002F skipping instructions\\n      const instructionsStart = j;\\n      const instructionsLength = (glyf[j] \u003C\u003C 8) | glyf[j + 1];\\n      glyphProfile.sizeOfInstructions = instructionsLength;\\n      j += 2 + instructionsLength;\\n      const instructionsEnd = j;\\n      \u002F\u002F validating flags\\n      let coordinatesLength = 0;\\n      for (i = 0; i \u003C flagsCount; i++) {\\n        const flag = glyf[j++];\\n        if (flag & 0xc0) {\\n          \u002F\u002F reserved flags must be zero, cleaning up\\n          glyf[j - 1] = flag & 0x3f;\\n        }\\n        let xLength = 2;\\n        if (flag & 2) {\\n          xLength = 1;\\n        } else if (flag & 16) {\\n          xLength = 0;\\n        }\\n        let yLength = 2;\\n        if (flag & 4) {\\n          yLength = 1;\\n        } else if (flag & 32) {\\n          yLength = 0;\\n        }\\n        const xyLength = xLength + yLength;\\n        coordinatesLength += xyLength;\\n        if (flag & 8) {\\n          const repeat = glyf[j++];\\n          if (repeat === 0) {\\n            \u002F\u002F The repeat count should be non-zero when the repeat flag is set.\\n            glyf[j - 1] ^= 8;\\n          }\\n          i += repeat;\\n          coordinatesLength += repeat * xyLength;\\n        }\\n      }\\n      \u002F\u002F glyph without coordinates will be rejected\\n      if (coordinatesLength === 0) {\\n        return glyphProfile;\\n      }\\n      let glyphDataLength = j + coordinatesLength;\\n      if (glyphDataLength > glyf.length) {\\n        \u002F\u002F not enough data for coordinates\\n        return glyphProfile;\\n      }\\n      if (!hintsValid && instructionsLength > 0) {\\n        dest.set(glyf.subarray(0, instructionsStart), destStart);\\n        dest.set([0, 0], destStart + instructionsStart);\\n        dest.set(\\n          glyf.subarray(instructionsEnd, glyphDataLength),\\n          destStart + instructionsStart + 2\\n        );\\n        glyphDataLength -= instructionsLength;\\n        if (glyf.length - glyphDataLength > 3) {\\n          glyphDataLength = (glyphDataLength + 3) & ~3;\\n        }\\n        glyphProfile.length = glyphDataLength;\\n        return glyphProfile;\\n      }\\n      if (glyf.length - glyphDataLength > 3) {\\n        \u002F\u002F truncating and aligning to 4 bytes the long glyph data\\n        glyphDataLength = (glyphDataLength + 3) & ~3;\\n        dest.set(glyf.subarray(0, glyphDataLength), destStart);\\n        glyphProfile.length = glyphDataLength;\\n        return glyphProfile;\\n      }\\n      \u002F\u002F glyph data is fine\\n      dest.set(glyf, destStart);\\n      glyphProfile.length = glyf.length;\\n      return glyphProfile;\\n    }\\n\\n    function sanitizeHead(head, numGlyphs, locaLength) {\\n      const data = head.data;\\n\\n      \u002F\u002F Validate version:\\n      \u002F\u002F Should always be 0x00010000\\n      const version = int32(data[0], data[1], data[2], data[3]);\\n      if (version >> 16 !== 1) {\\n        info(\\\"Attempting to fix invalid version in head table: \\\" + version);\\n        data[0] = 0;\\n        data[1] = 1;\\n        data[2] = 0;\\n        data[3] = 0;\\n      }\\n\\n      const indexToLocFormat = int16(data[50], data[51]);\\n      if (indexToLocFormat \u003C 0 || indexToLocFormat > 1) {\\n        info(\\n          \\\"Attempting to fix invalid indexToLocFormat in head table: \\\" +\\n            indexToLocFormat\\n        );\\n\\n        \u002F\u002F The value of indexToLocFormat should be 0 if the loca table\\n        \u002F\u002F consists of short offsets, and should be 1 if the loca table\\n        \u002F\u002F consists of long offsets.\\n        \u002F\u002F\\n        \u002F\u002F The number of entries in the loca table should be numGlyphs + 1.\\n        \u002F\u002F\\n        \u002F\u002F Using this information, we can work backwards to deduce if the\\n        \u002F\u002F size of each offset in the loca table, and thus figure out the\\n        \u002F\u002F appropriate value for indexToLocFormat.\\n\\n        const numGlyphsPlusOne = numGlyphs + 1;\\n        if (locaLength === numGlyphsPlusOne \u003C\u003C 1) {\\n          \u002F\u002F 0x0000 indicates the loca table consists of short offsets\\n          data[50] = 0;\\n          data[51] = 0;\\n        } else if (locaLength === numGlyphsPlusOne \u003C\u003C 2) {\\n          \u002F\u002F 0x0001 indicates the loca table consists of long offsets\\n          data[50] = 0;\\n          data[51] = 1;\\n        } else {\\n          throw new FormatError(\\n            \\\"Could not fix indexToLocFormat: \\\" + indexToLocFormat\\n          );\\n        }\\n      }\\n    }\\n\\n    function sanitizeGlyphLocations(\\n      loca,\\n      glyf,\\n      numGlyphs,\\n      isGlyphLocationsLong,\\n      hintsValid,\\n      dupFirstEntry,\\n      maxSizeOfInstructions\\n    ) {\\n      let itemSize, itemDecode, itemEncode;\\n      if (isGlyphLocationsLong) {\\n        itemSize = 4;\\n        itemDecode = function fontItemDecodeLong(data, offset) {\\n          return (\\n            (data[offset] \u003C\u003C 24) |\\n            (data[offset + 1] \u003C\u003C 16) |\\n            (data[offset + 2] \u003C\u003C 8) |\\n            data[offset + 3]\\n          );\\n        };\\n        itemEncode = function fontItemEncodeLong(data, offset, value) {\\n          data[offset] = (value >>> 24) & 0xff;\\n          data[offset + 1] = (value >> 16) & 0xff;\\n          data[offset + 2] = (value >> 8) & 0xff;\\n          data[offset + 3] = value & 0xff;\\n        };\\n      } else {\\n        itemSize = 2;\\n        itemDecode = function fontItemDecode(data, offset) {\\n          return (data[offset] \u003C\u003C 9) | (data[offset + 1] \u003C\u003C 1);\\n        };\\n        itemEncode = function fontItemEncode(data, offset, value) {\\n          data[offset] = (value >> 9) & 0xff;\\n          data[offset + 1] = (value >> 1) & 0xff;\\n        };\\n      }\\n      \u002F\u002F The first glyph is duplicated.\\n      const numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs;\\n      const locaDataSize = itemSize * (1 + numGlyphsOut);\\n      \u002F\u002F Resize loca table to account for duplicated glyph.\\n      const locaData = new Uint8Array(locaDataSize);\\n      locaData.set(loca.data.subarray(0, locaDataSize));\\n      loca.data = locaData;\\n      \u002F\u002F removing the invalid glyphs\\n      const oldGlyfData = glyf.data;\\n      const oldGlyfDataLength = oldGlyfData.length;\\n      const newGlyfData = new Uint8Array(oldGlyfDataLength);\\n\\n      \u002F\u002F The spec says the offsets should be in ascending order, however\\n      \u002F\u002F this is not true for some fonts or they use the offset of 0 to mark a\\n      \u002F\u002F glyph as missing. OTS requires the offsets to be in order and not to\\n      \u002F\u002F be zero, so we must sort and rebuild the loca table and potentially\\n      \u002F\u002F re-arrange the glyf data.\\n      let i, j;\\n      const locaEntries = [];\\n      \u002F\u002F There are numGlyphs + 1 loca table entries.\\n      for (i = 0, j = 0; i \u003C numGlyphs + 1; i++, j += itemSize) {\\n        let offset = itemDecode(locaData, j);\\n        if (offset > oldGlyfDataLength) {\\n          offset = oldGlyfDataLength;\\n        }\\n        locaEntries.push({\\n          index: i,\\n          offset,\\n          endOffset: 0,\\n        });\\n      }\\n      locaEntries.sort((a, b) => a.offset - b.offset);\\n      \u002F\u002F Now the offsets are sorted, calculate the end offset of each glyph.\\n      \u002F\u002F The last loca entry's endOffset is not calculated since it's the end\\n      \u002F\u002F of the data and will be stored on the previous entry's endOffset.\\n      for (i = 0; i \u003C numGlyphs; i++) {\\n        locaEntries[i].endOffset = locaEntries[i + 1].offset;\\n      }\\n      \u002F\u002F Re-sort so glyphs aren't out of order.\\n      locaEntries.sort((a, b) => a.index - b.index);\\n      \u002F\u002F Calculate the endOffset of the \\\"first\\\" glyph correctly when there are\\n      \u002F\u002F *multiple* empty ones at the start of the data (fixes issue14618.pdf).\\n      for (i = 0; i \u003C numGlyphs; i++) {\\n        const { offset, endOffset } = locaEntries[i];\\n        if (offset !== 0 || endOffset !== 0) {\\n          break;\\n        }\\n        const nextOffset = locaEntries[i + 1].offset;\\n        if (nextOffset === 0) {\\n          continue;\\n        }\\n        locaEntries[i].endOffset = nextOffset;\\n        break;\\n      }\\n\\n      \u002F\u002F If the last offset is 0 in the loca table then we can't compute the\\n      \u002F\u002F endOffset for the last glyph. So in such a case we set the endOffset\\n      \u002F\u002F to the end of the data (fixes issue #17671).\\n      const last = locaEntries.at(-2);\\n      if (last.offset !== 0 && last.endOffset === 0) {\\n        last.endOffset = oldGlyfDataLength;\\n      }\\n\\n      const missingGlyphs = Object.create(null);\\n      let writeOffset = 0;\\n      itemEncode(locaData, 0, writeOffset);\\n      for (i = 0, j = itemSize; i \u003C numGlyphs; i++, j += itemSize) {\\n        const glyphProfile = sanitizeGlyph(\\n          oldGlyfData,\\n          locaEntries[i].offset,\\n          locaEntries[i].endOffset,\\n          newGlyfData,\\n          writeOffset,\\n          hintsValid\\n        );\\n        const newLength = glyphProfile.length;\\n        if (newLength === 0) {\\n          missingGlyphs[i] = true;\\n        }\\n        if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) {\\n          maxSizeOfInstructions = glyphProfile.sizeOfInstructions;\\n        }\\n        writeOffset += newLength;\\n        itemEncode(locaData, j, writeOffset);\\n      }\\n\\n      if (writeOffset === 0) {\\n        \u002F\u002F glyf table cannot be empty -- redoing the glyf and loca tables\\n        \u002F\u002F to have single glyph with one point\\n        const simpleGlyph = new Uint8Array([\\n          0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0,\\n        ]);\\n        for (i = 0, j = itemSize; i \u003C numGlyphsOut; i++, j += itemSize) {\\n          itemEncode(locaData, j, simpleGlyph.length);\\n        }\\n        glyf.data = simpleGlyph;\\n      } else if (dupFirstEntry) {\\n        \u002F\u002F Browsers will not display a glyph at position 0. Typically glyph 0\\n        \u002F\u002F is notdef, but a number of fonts put a valid glyph there so it must\\n        \u002F\u002F be duplicated and appended.\\n        const firstEntryLength = itemDecode(locaData, itemSize);\\n        if (newGlyfData.length > firstEntryLength + writeOffset) {\\n          glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset);\\n        } else {\\n          glyf.data = new Uint8Array(firstEntryLength + writeOffset);\\n          glyf.data.set(newGlyfData.subarray(0, writeOffset));\\n        }\\n        glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset);\\n        itemEncode(\\n          loca.data,\\n          locaData.length - itemSize,\\n          writeOffset + firstEntryLength\\n        );\\n      } else {\\n        glyf.data = newGlyfData.subarray(0, writeOffset);\\n      }\\n      return {\\n        missingGlyphs,\\n        maxSizeOfInstructions,\\n      };\\n    }\\n\\n    function readPostScriptTable(post, propertiesObj, maxpNumGlyphs) {\\n      const start = (font.start || 0) + post.offset;\\n      font.pos = start;\\n\\n      const length = post.length,\\n        end = start + length;\\n      const version = font.getInt32();\\n      \u002F\u002F skip rest to the tables\\n      font.skip(28);\\n\\n      let glyphNames;\\n      let valid = true;\\n      let i;\\n\\n      switch (version) {\\n        case 0x00010000:\\n          glyphNames = MacStandardGlyphOrdering;\\n          break;\\n        case 0x00020000:\\n          const numGlyphs = font.getUint16();\\n          if (numGlyphs !== maxpNumGlyphs) {\\n            valid = false;\\n            break;\\n          }\\n          const glyphNameIndexes = [];\\n          for (i = 0; i \u003C numGlyphs; ++i) {\\n            const index = font.getUint16();\\n            if (index >= 32768) {\\n              valid = false;\\n              break;\\n            }\\n            glyphNameIndexes.push(index);\\n          }\\n          if (!valid) {\\n            break;\\n          }\\n          const customNames = [],\\n            strBuf = [];\\n          while (font.pos \u003C end) {\\n            const stringLength = font.getByte();\\n            strBuf.length = stringLength;\\n            for (i = 0; i \u003C stringLength; ++i) {\\n              strBuf[i] = String.fromCharCode(font.getByte());\\n            }\\n            customNames.push(strBuf.join(\\\"\\\"));\\n          }\\n          glyphNames = [];\\n          for (i = 0; i \u003C numGlyphs; ++i) {\\n            const j = glyphNameIndexes[i];\\n            if (j \u003C 258) {\\n              glyphNames.push(MacStandardGlyphOrdering[j]);\\n              continue;\\n            }\\n            glyphNames.push(customNames[j - 258]);\\n          }\\n          break;\\n        case 0x00030000:\\n          break;\\n        default:\\n          warn(\\\"Unknown\u002Funsupported post table version \\\" + version);\\n          valid = false;\\n          if (propertiesObj.defaultEncoding) {\\n            glyphNames = propertiesObj.defaultEncoding;\\n          }\\n          break;\\n      }\\n      propertiesObj.glyphNames = glyphNames;\\n      return valid;\\n    }\\n\\n    function readNameTable(nameTable) {\\n      const start = (font.start || 0) + nameTable.offset;\\n      font.pos = start;\\n\\n      const names = [[], []],\\n        records = [];\\n      const length = nameTable.length,\\n        end = start + length;\\n      const format = font.getUint16();\\n      const FORMAT_0_HEADER_LENGTH = 6;\\n      if (format !== 0 || length \u003C FORMAT_0_HEADER_LENGTH) {\\n        \u002F\u002F unsupported name table format or table \\\"too\\\" small\\n        return [names, records];\\n      }\\n      const numRecords = font.getUint16();\\n      const stringsStart = font.getUint16();\\n      const NAME_RECORD_LENGTH = 12;\\n      let i, ii;\\n\\n      for (i = 0; i \u003C numRecords && font.pos + NAME_RECORD_LENGTH \u003C= end; i++) {\\n        const r = {\\n          platform: font.getUint16(),\\n          encoding: font.getUint16(),\\n          language: font.getUint16(),\\n          name: font.getUint16(),\\n          length: font.getUint16(),\\n          offset: font.getUint16(),\\n        };\\n        \u002F\u002F using only Macintosh and Windows platform\u002Fencoding names\\n        if (isMacNameRecord(r) || isWinNameRecord(r)) {\\n          records.push(r);\\n        }\\n      }\\n      for (i = 0, ii = records.length; i \u003C ii; i++) {\\n        const record = records[i];\\n        if (record.length \u003C= 0) {\\n          continue; \u002F\u002F Nothing to process, ignoring.\\n        }\\n        const pos = start + stringsStart + record.offset;\\n        if (pos + record.length > end) {\\n          continue; \u002F\u002F outside of name table, ignoring\\n        }\\n        font.pos = pos;\\n        const nameIndex = record.name;\\n        if (record.encoding) {\\n          \u002F\u002F unicode\\n          let str = \\\"\\\";\\n          for (let j = 0, jj = record.length; j \u003C jj; j += 2) {\\n            str += String.fromCharCode(font.getUint16());\\n          }\\n          names[1][nameIndex] = str;\\n        } else {\\n          names[0][nameIndex] = font.getString(record.length);\\n        }\\n      }\\n      return [names, records];\\n    }\\n\\n    \u002F\u002F prettier-ignore\\n    const TTOpsStackDeltas = [\\n      0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5,\\n      -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1,\\n      1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1,\\n      0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2,\\n      0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1,\\n      -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1,\\n      -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\\n      -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1,\\n      -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2];\\n    \u002F\u002F 0xC0-DF == -1 and 0xE0-FF == -2\\n\\n    function sanitizeTTProgram(table, ttContext) {\\n      let data = table.data;\\n      let i = 0,\\n        j,\\n        n,\\n        b,\\n        funcId,\\n        pc,\\n        lastEndf = 0,\\n        lastDeff = 0;\\n      const stack = [];\\n      const callstack = [];\\n      const functionsCalled = [];\\n      let tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions;\\n      let inFDEF = false,\\n        ifLevel = 0,\\n        inELSE = 0;\\n      for (let ii = data.length; i \u003C ii; ) {\\n        const op = data[i++];\\n        \u002F\u002F The TrueType instruction set docs can be found at\\n        \u002F\u002F https:\u002F\u002Fdeveloper.apple.com\u002Ffonts\u002FTTRefMan\u002FRM05\u002FChap5.html\\n        if (op === 0x40) {\\n          \u002F\u002F NPUSHB - pushes n bytes\\n          n = data[i++];\\n          if (inFDEF || inELSE) {\\n            i += n;\\n          } else {\\n            for (j = 0; j \u003C n; j++) {\\n              stack.push(data[i++]);\\n            }\\n          }\\n        } else if (op === 0x41) {\\n          \u002F\u002F NPUSHW - pushes n words\\n          n = data[i++];\\n          if (inFDEF || inELSE) {\\n            i += n * 2;\\n          } else {\\n            for (j = 0; j \u003C n; j++) {\\n              b = data[i++];\\n              stack.push((b \u003C\u003C 8) | data[i++]);\\n            }\\n          }\\n        } else if ((op & 0xf8) === 0xb0) {\\n          \u002F\u002F PUSHB - pushes bytes\\n          n = op - 0xb0 + 1;\\n          if (inFDEF || inELSE) {\\n            i += n;\\n          } else {\\n            for (j = 0; j \u003C n; j++) {\\n              stack.push(data[i++]);\\n            }\\n          }\\n        } else if ((op & 0xf8) === 0xb8) {\\n          \u002F\u002F PUSHW - pushes words\\n          n = op - 0xb8 + 1;\\n          if (inFDEF || inELSE) {\\n            i += n * 2;\\n          } else {\\n            for (j = 0; j \u003C n; j++) {\\n              b = data[i++];\\n              stack.push((b \u003C\u003C 8) | data[i++]);\\n            }\\n          }\\n        } else if (op === 0x2b && !tooComplexToFollowFunctions) {\\n          \u002F\u002F CALL\\n          if (!inFDEF && !inELSE) {\\n            \u002F\u002F collecting information about which functions are used\\n            funcId = stack.at(-1);\\n            if (isNaN(funcId)) {\\n              info(\\\"TT: CALL empty stack (or invalid entry).\\\");\\n            } else {\\n              ttContext.functionsUsed[funcId] = true;\\n              if (funcId in ttContext.functionsStackDeltas) {\\n                const newStackLength =\\n                  stack.length + ttContext.functionsStackDeltas[funcId];\\n                if (newStackLength \u003C 0) {\\n                  warn(\\\"TT: CALL invalid functions stack delta.\\\");\\n                  ttContext.hintsValid = false;\\n                  return;\\n                }\\n                stack.length = newStackLength;\\n              } else if (\\n                funcId in ttContext.functionsDefined &&\\n                !functionsCalled.includes(funcId)\\n              ) {\\n                callstack.push({ data, i, stackTop: stack.length - 1 });\\n                functionsCalled.push(funcId);\\n                pc = ttContext.functionsDefined[funcId];\\n                if (!pc) {\\n                  warn(\\\"TT: CALL non-existent function\\\");\\n                  ttContext.hintsValid = false;\\n                  return;\\n                }\\n                data = pc.data;\\n                i = pc.i;\\n              }\\n            }\\n          }\\n        } else if (op === 0x2c && !tooComplexToFollowFunctions) {\\n          \u002F\u002F FDEF\\n          if (inFDEF || inELSE) {\\n            warn(\\\"TT: nested FDEFs not allowed\\\");\\n            tooComplexToFollowFunctions = true;\\n          }\\n          inFDEF = true;\\n          \u002F\u002F collecting information about which functions are defined\\n          lastDeff = i;\\n          funcId = stack.pop();\\n          ttContext.functionsDefined[funcId] = { data, i };\\n        } else if (op === 0x2d) {\\n          \u002F\u002F ENDF - end of function\\n          if (inFDEF) {\\n            inFDEF = false;\\n            lastEndf = i;\\n          } else {\\n            pc = callstack.pop();\\n            if (!pc) {\\n              warn(\\\"TT: ENDF bad stack\\\");\\n              ttContext.hintsValid = false;\\n              return;\\n            }\\n            funcId = functionsCalled.pop();\\n            data = pc.data;\\n            i = pc.i;\\n            ttContext.functionsStackDeltas[funcId] = stack.length - pc.stackTop;\\n          }\\n        } else if (op === 0x89) {\\n          \u002F\u002F IDEF - instruction definition\\n          if (inFDEF || inELSE) {\\n            warn(\\\"TT: nested IDEFs not allowed\\\");\\n            tooComplexToFollowFunctions = true;\\n          }\\n          inFDEF = true;\\n          \u002F\u002F recording it as a function to track ENDF\\n          lastDeff = i;\\n        } else if (op === 0x58) {\\n          \u002F\u002F IF\\n          ++ifLevel;\\n        } else if (op === 0x1b) {\\n          \u002F\u002F ELSE\\n          inELSE = ifLevel;\\n        } else if (op === 0x59) {\\n          \u002F\u002F EIF\\n          if (inELSE === ifLevel) {\\n            inELSE = 0;\\n          }\\n          --ifLevel;\\n        } else if (op === 0x1c) {\\n          \u002F\u002F JMPR\\n          if (!inFDEF && !inELSE) {\\n            const offset = stack.at(-1);\\n            \u002F\u002F only jumping forward to prevent infinite loop\\n            if (offset > 0) {\\n              i += offset - 1;\\n            }\\n          }\\n        }\\n        \u002F\u002F Adjusting stack not extactly, but just enough to get function id\\n        if (!inFDEF && !inELSE) {\\n          let stackDelta = 0;\\n          if (op \u003C= 0x8e) {\\n            stackDelta = TTOpsStackDeltas[op];\\n          } else if (op >= 0xc0 && op \u003C= 0xdf) {\\n            stackDelta = -1;\\n          } else if (op >= 0xe0) {\\n            stackDelta = -2;\\n          }\\n          if (op >= 0x71 && op \u003C= 0x75) {\\n            n = stack.pop();\\n            if (!isNaN(n)) {\\n              stackDelta = -n * 2;\\n            }\\n          }\\n          while (stackDelta \u003C 0 && stack.length > 0) {\\n            stack.pop();\\n            stackDelta++;\\n          }\\n          while (stackDelta > 0) {\\n            stack.push(NaN); \u002F\u002F pushing any number into stack\\n            stackDelta--;\\n          }\\n        }\\n      }\\n      ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions;\\n      const content = [data];\\n      if (i > data.length) {\\n        content.push(new Uint8Array(i - data.length));\\n      }\\n      if (lastDeff > lastEndf) {\\n        warn(\\\"TT: complementing a missing function tail\\\");\\n        \u002F\u002F new function definition started, but not finished\\n        \u002F\u002F complete function by [CLEAR, ENDF]\\n        content.push(new Uint8Array([0x22, 0x2d]));\\n      }\\n      foldTTTable(table, content);\\n    }\\n\\n    function checkInvalidFunctions(ttContext, maxFunctionDefs) {\\n      if (ttContext.tooComplexToFollowFunctions) {\\n        return;\\n      }\\n      if (ttContext.functionsDefined.length > maxFunctionDefs) {\\n        warn(\\\"TT: more functions defined than expected\\\");\\n        ttContext.hintsValid = false;\\n        return;\\n      }\\n      for (let j = 0, jj = ttContext.functionsUsed.length; j \u003C jj; j++) {\\n        if (j > maxFunctionDefs) {\\n          warn(\\\"TT: invalid function id: \\\" + j);\\n          ttContext.hintsValid = false;\\n          return;\\n        }\\n        if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) {\\n          warn(\\\"TT: undefined function: \\\" + j);\\n          ttContext.hintsValid = false;\\n          return;\\n        }\\n      }\\n    }\\n\\n    function foldTTTable(table, content) {\\n      if (content.length > 1) {\\n        \u002F\u002F concatenating the content items\\n        let newLength = 0;\\n        let j, jj;\\n        for (j = 0, jj = content.length; j \u003C jj; j++) {\\n          newLength += content[j].length;\\n        }\\n        newLength = (newLength + 3) & ~3;\\n        const result = new Uint8Array(newLength);\\n        let pos = 0;\\n        for (j = 0, jj = content.length; j \u003C jj; j++) {\\n          result.set(content[j], pos);\\n          pos += content[j].length;\\n        }\\n        table.data = result;\\n        table.length = newLength;\\n      }\\n    }\\n\\n    function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) {\\n      const ttContext = {\\n        functionsDefined: [],\\n        functionsUsed: [],\\n        functionsStackDeltas: [],\\n        tooComplexToFollowFunctions: false,\\n        hintsValid: true,\\n      };\\n      if (fpgm) {\\n        sanitizeTTProgram(fpgm, ttContext);\\n      }\\n      if (prep) {\\n        sanitizeTTProgram(prep, ttContext);\\n      }\\n      if (fpgm) {\\n        checkInvalidFunctions(ttContext, maxFunctionDefs);\\n      }\\n      if (cvt && cvt.length & 1) {\\n        const cvtData = new Uint8Array(cvt.length + 1);\\n        cvtData.set(cvt.data);\\n        cvt.data = cvtData;\\n      }\\n      return ttContext.hintsValid;\\n    }\\n\\n    \u002F\u002F The following steps modify the original font data, making copy\\n    font = new Stream(new Uint8Array(font.getBytes()));\\n\\n    let header, tables;\\n    if (isTrueTypeCollectionFile(font)) {\\n      const ttcData = readTrueTypeCollectionData(font, this.name);\\n      header = ttcData.header;\\n      tables = ttcData.tables;\\n    } else {\\n      header = readOpenTypeHeader(font);\\n      tables = readTables(font, header.numTables);\\n    }\\n    let cff, cffFile;\\n\\n    const isTrueType = !tables[\\\"CFF \\\"];\\n    if (!isTrueType) {\\n      const isComposite =\\n        properties.composite &&\\n        (properties.cidToGidMap?.length > 0 ||\\n          !(properties.cMap instanceof IdentityCMap));\\n      \u002F\u002F OpenType font (skip composite fonts with non-default glyph mapping).\\n      if (\\n        (header.version === \\\"OTTO\\\" && !isComposite) ||\\n        !tables.head ||\\n        !tables.hhea ||\\n        !tables.maxp ||\\n        !tables.post\\n      ) {\\n        \u002F\u002F No major tables: throwing everything at `CFFFont`.\\n        cffFile = new Stream(tables[\\\"CFF \\\"].data);\\n        cff = new CFFFont(cffFile, properties);\\n\\n        adjustWidths(properties);\\n\\n        return this.convert(name, cff, properties);\\n      }\\n\\n      delete tables.glyf;\\n      delete tables.loca;\\n      delete tables.fpgm;\\n      delete tables.prep;\\n      delete tables[\\\"cvt \\\"];\\n      this.isOpenType = true;\\n    } else {\\n      if (!tables.loca) {\\n        throw new FormatError('Required \\\"loca\\\" table is not found');\\n      }\\n      if (!tables.glyf) {\\n        warn('Required \\\"glyf\\\" table is not found -- trying to recover.');\\n        \u002F\u002F Note: We use `sanitizeGlyphLocations` to add dummy glyf data below.\\n        tables.glyf = {\\n          tag: \\\"glyf\\\",\\n          data: new Uint8Array(0),\\n        };\\n      }\\n      this.isOpenType = false;\\n    }\\n\\n    if (!tables.maxp) {\\n      throw new FormatError('Required \\\"maxp\\\" table is not found');\\n    }\\n\\n    font.pos = (font.start || 0) + tables.maxp.offset;\\n    let version = font.getInt32();\\n    const numGlyphs = font.getUint16();\\n\\n    if (version !== 0x00010000 && version !== 0x00005000) {\\n      \u002F\u002F https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Ftypography\u002Fopentype\u002Fspec\u002Fmaxp\\n      if (tables.maxp.length === 6) {\\n        version = 0x0005000;\\n      } else if (tables.maxp.length >= 32) {\\n        version = 0x00010000;\\n      } else {\\n        throw new FormatError(`\\\"maxp\\\" table has a wrong version number`);\\n      }\\n      writeUint32(tables.maxp.data, 0, version);\\n    }\\n\\n    if (properties.scaleFactors?.length === numGlyphs && isTrueType) {\\n      const { scaleFactors } = properties;\\n      const isGlyphLocationsLong = int16(\\n        tables.head.data[50],\\n        tables.head.data[51]\\n      );\\n\\n      const glyphs = new GlyfTable({\\n        glyfTable: tables.glyf.data,\\n        isGlyphLocationsLong,\\n        locaTable: tables.loca.data,\\n        numGlyphs,\\n      });\\n      glyphs.scale(scaleFactors);\\n\\n      const { glyf, loca, isLocationLong } = glyphs.write();\\n      tables.glyf.data = glyf;\\n      tables.loca.data = loca;\\n\\n      if (isLocationLong !== !!isGlyphLocationsLong) {\\n        tables.head.data[50] = 0;\\n        tables.head.data[51] = isLocationLong ? 1 : 0;\\n      }\\n\\n      const metrics = tables.hmtx.data;\\n\\n      for (let i = 0; i \u003C numGlyphs; i++) {\\n        const j = 4 * i;\\n        const advanceWidth = Math.round(\\n          scaleFactors[i] * int16(metrics[j], metrics[j + 1])\\n        );\\n        metrics[j] = (advanceWidth >> 8) & 0xff;\\n        metrics[j + 1] = advanceWidth & 0xff;\\n        const lsb = Math.round(\\n          scaleFactors[i] * signedInt16(metrics[j + 2], metrics[j + 3])\\n        );\\n        writeSignedInt16(metrics, j + 2, lsb);\\n      }\\n    }\\n\\n    \u002F\u002F Glyph 0 is duplicated and appended.\\n    let numGlyphsOut = numGlyphs + 1;\\n    let dupFirstEntry = true;\\n    if (numGlyphsOut > 0xffff) {\\n      dupFirstEntry = false;\\n      numGlyphsOut = numGlyphs;\\n      warn(\\\"Not enough space in glyfs to duplicate first glyph.\\\");\\n    }\\n    let maxFunctionDefs = 0;\\n    let maxSizeOfInstructions = 0;\\n    if (version >= 0x00010000 && tables.maxp.length >= 32) {\\n      \u002F\u002F maxZones can be invalid\\n      font.pos += 8;\\n      const maxZones = font.getUint16();\\n      if (maxZones > 2) {\\n        \u002F\u002F reset to 2 if font has invalid maxZones\\n        tables.maxp.data[14] = 0;\\n        tables.maxp.data[15] = 2;\\n      }\\n      font.pos += 4;\\n      maxFunctionDefs = font.getUint16();\\n      font.pos += 4;\\n      maxSizeOfInstructions = font.getUint16();\\n    }\\n\\n    tables.maxp.data[4] = numGlyphsOut >> 8;\\n    tables.maxp.data[5] = numGlyphsOut & 255;\\n\\n    const hintsValid = sanitizeTTPrograms(\\n      tables.fpgm,\\n      tables.prep,\\n      tables[\\\"cvt \\\"],\\n      maxFunctionDefs\\n    );\\n    if (!hintsValid) {\\n      delete tables.fpgm;\\n      delete tables.prep;\\n      delete tables[\\\"cvt \\\"];\\n    }\\n\\n    \u002F\u002F Ensure the hmtx table contains the advance width and\\n    \u002F\u002F sidebearings information for numGlyphs in the maxp table\\n    sanitizeMetrics(\\n      font,\\n      tables.hhea,\\n      tables.hmtx,\\n      tables.head,\\n      numGlyphsOut,\\n      dupFirstEntry\\n    );\\n\\n    if (!tables.head) {\\n      throw new FormatError('Required \\\"head\\\" table is not found');\\n    }\\n\\n    sanitizeHead(tables.head, numGlyphs, isTrueType ? tables.loca.length : 0);\\n\\n    let missingGlyphs = Object.create(null);\\n    if (isTrueType) {\\n      const isGlyphLocationsLong = int16(\\n        tables.head.data[50],\\n        tables.head.data[51]\\n      );\\n      const glyphsInfo = sanitizeGlyphLocations(\\n        tables.loca,\\n        tables.glyf,\\n        numGlyphs,\\n        isGlyphLocationsLong,\\n        hintsValid,\\n        dupFirstEntry,\\n        maxSizeOfInstructions\\n      );\\n      missingGlyphs = glyphsInfo.missingGlyphs;\\n\\n      \u002F\u002F Some fonts have incorrect maxSizeOfInstructions values, so we use\\n      \u002F\u002F the computed value instead.\\n      if (version >= 0x00010000 && tables.maxp.length >= 32) {\\n        tables.maxp.data[26] = glyphsInfo.maxSizeOfInstructions >> 8;\\n        tables.maxp.data[27] = glyphsInfo.maxSizeOfInstructions & 255;\\n      }\\n    }\\n    if (!tables.hhea) {\\n      throw new FormatError('Required \\\"hhea\\\" table is not found');\\n    }\\n\\n    \u002F\u002F Sanitizer reduces the glyph advanceWidth to the maxAdvanceWidth\\n    \u002F\u002F Sometimes it's 0. That needs to be fixed\\n    if (tables.hhea.data[10] === 0 && tables.hhea.data[11] === 0) {\\n      tables.hhea.data[10] = 0xff;\\n      tables.hhea.data[11] = 0xff;\\n    }\\n\\n    \u002F\u002F Extract some more font properties from the OpenType head and\\n    \u002F\u002F hhea tables; yMin and descent value are always negative.\\n    const metricsOverride = {\\n      unitsPerEm: int16(tables.head.data[18], tables.head.data[19]),\\n      yMax: signedInt16(tables.head.data[42], tables.head.data[43]),\\n      yMin: signedInt16(tables.head.data[38], tables.head.data[39]),\\n      ascent: signedInt16(tables.hhea.data[4], tables.hhea.data[5]),\\n      descent: signedInt16(tables.hhea.data[6], tables.hhea.data[7]),\\n      lineGap: signedInt16(tables.hhea.data[8], tables.hhea.data[9]),\\n    };\\n\\n    \u002F\u002F PDF FontDescriptor metrics lie -- using data from actual font.\\n    this.ascent = metricsOverride.ascent \u002F metricsOverride.unitsPerEm;\\n    this.descent = metricsOverride.descent \u002F metricsOverride.unitsPerEm;\\n    this.lineGap = metricsOverride.lineGap \u002F metricsOverride.unitsPerEm;\\n\\n    if (this.cssFontInfo?.lineHeight) {\\n      this.lineHeight = this.cssFontInfo.metrics.lineHeight;\\n      this.lineGap = this.cssFontInfo.metrics.lineGap;\\n    } else {\\n      this.lineHeight = this.ascent - this.descent + this.lineGap;\\n    }\\n\\n    \u002F\u002F The 'post' table has glyphs names.\\n    if (tables.post) {\\n      readPostScriptTable(tables.post, properties, numGlyphs);\\n    }\\n\\n    \u002F\u002F The original 'post' table is not needed, replace it.\\n    tables.post = {\\n      tag: \\\"post\\\",\\n      data: createPostTable(properties),\\n    };\\n\\n    const charCodeToGlyphId = Object.create(null);\\n\\n    \u002F\u002F Helper function to try to skip mapping of empty glyphs.\\n    function hasGlyph(glyphId) {\\n      return !missingGlyphs[glyphId];\\n    }\\n\\n    if (properties.composite) {\\n      const cidToGidMap = properties.cidToGidMap || [];\\n      const isCidToGidMapEmpty = cidToGidMap.length === 0;\\n\\n      properties.cMap.forEach(function (charCode, cid) {\\n        if (typeof cid === \\\"string\\\") {\\n          cid = convertCidString(charCode, cid, \u002F* shouldThrow = *\u002F true);\\n        }\\n        if (cid > 0xffff) {\\n          throw new FormatError(\\\"Max size of CID is 65,535\\\");\\n        }\\n        let glyphId = -1;\\n        if (isCidToGidMapEmpty) {\\n          glyphId = cid;\\n        } else if (cidToGidMap[cid] !== undefined) {\\n          glyphId = cidToGidMap[cid];\\n        }\\n\\n        if (glyphId >= 0 && glyphId \u003C numGlyphs && hasGlyph(glyphId)) {\\n          charCodeToGlyphId[charCode] = glyphId;\\n        }\\n      });\\n    } else {\\n      \u002F\u002F Most of the following logic in this code branch is based on the\\n      \u002F\u002F 9.6.6.4 of the PDF spec.\\n      const cmapTable = readCmapTable(\\n        tables.cmap,\\n        font,\\n        this.isSymbolicFont,\\n        properties.hasEncoding\\n      );\\n      const cmapPlatformId = cmapTable.platformId;\\n      const cmapEncodingId = cmapTable.encodingId;\\n      const cmapMappings = cmapTable.mappings;\\n      let baseEncoding = [],\\n        forcePostTable = false;\\n      if (\\n        properties.hasEncoding &&\\n        (properties.baseEncodingName === \\\"MacRomanEncoding\\\" ||\\n          properties.baseEncodingName === \\\"WinAnsiEncoding\\\")\\n      ) {\\n        baseEncoding = getEncoding(properties.baseEncodingName);\\n      }\\n\\n      \u002F\u002F If the font has an encoding and is not symbolic then follow the rules\\n      \u002F\u002F in section 9.6.6.4 of the spec on how to map 3,1 and 1,0 cmaps.\\n      if (\\n        properties.hasEncoding &&\\n        !this.isSymbolicFont &&\\n        ((cmapPlatformId === 3 && cmapEncodingId === 1) ||\\n          (cmapPlatformId === 1 && cmapEncodingId === 0))\\n      ) {\\n        const glyphsUnicodeMap = getGlyphsUnicode();\\n        for (let charCode = 0; charCode \u003C 256; charCode++) {\\n          let glyphName;\\n          if (this.differences[charCode] !== undefined) {\\n            glyphName = this.differences[charCode];\\n          } else if (baseEncoding.length && baseEncoding[charCode] !== \\\"\\\") {\\n            glyphName = baseEncoding[charCode];\\n          } else {\\n            glyphName = StandardEncoding[charCode];\\n          }\\n          if (!glyphName) {\\n            continue;\\n          }\\n          \u002F\u002F Ensure that non-standard glyph names are resolved to valid ones.\\n          const standardGlyphName = recoverGlyphName(\\n            glyphName,\\n            glyphsUnicodeMap\\n          );\\n\\n          let unicodeOrCharCode;\\n          if (cmapPlatformId === 3 && cmapEncodingId === 1) {\\n            unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName];\\n          } else if (cmapPlatformId === 1 && cmapEncodingId === 0) {\\n            \u002F\u002F TODO: the encoding needs to be updated with mac os table.\\n            unicodeOrCharCode = MacRomanEncoding.indexOf(standardGlyphName);\\n          }\\n\\n          if (unicodeOrCharCode === undefined) {\\n            \u002F\u002F Not a valid glyph name, fallback to using the \u002FToUnicode map\\n            \u002F\u002F when no post-table exists (fixes issue13316_reduced.pdf).\\n            if (\\n              !properties.glyphNames &&\\n              properties.hasIncludedToUnicodeMap &&\\n              !(this.toUnicode instanceof IdentityToUnicodeMap)\\n            ) {\\n              const unicode = this.toUnicode.get(charCode);\\n              if (unicode) {\\n                unicodeOrCharCode = unicode.codePointAt(0);\\n              }\\n            }\\n\\n            if (unicodeOrCharCode === undefined) {\\n              continue; \u002F\u002F No valid glyph mapping found.\\n            }\\n          }\\n\\n          for (const mapping of cmapMappings) {\\n            if (mapping.charCode !== unicodeOrCharCode) {\\n              continue;\\n            }\\n            charCodeToGlyphId[charCode] = mapping.glyphId;\\n            break;\\n          }\\n        }\\n      } else if (cmapPlatformId === 0) {\\n        \u002F\u002F Default Unicode semantics, use the charcodes as is.\\n        for (const mapping of cmapMappings) {\\n          charCodeToGlyphId[mapping.charCode] = mapping.glyphId;\\n        }\\n        \u002F\u002F Always prefer the BaseEncoding\u002FDifferences arrays, when they exist\\n        \u002F\u002F (fixes issue13433.pdf).\\n        forcePostTable = true;\\n      } else if (cmapPlatformId === 3 && cmapEncodingId === 0) {\\n        \u002F\u002F When a (3, 0) cmap table is present, it is used instead but the\\n        \u002F\u002F spec has special rules for char codes in the range of 0xF000 to\\n        \u002F\u002F 0xF0FF and it says the (3, 0) table should map the values from\\n        \u002F\u002F the (1, 0) table by prepending 0xF0 to the char codes. To reverse\\n        \u002F\u002F this, the upper bits of the char code are cleared, but only for the\\n        \u002F\u002F special range since some PDFs have char codes outside of this range\\n        \u002F\u002F (e.g. 0x2013) which when masked would overwrite other values in the\\n        \u002F\u002F cmap.\\n        for (const mapping of cmapMappings) {\\n          let charCode = mapping.charCode;\\n          if (charCode >= 0xf000 && charCode \u003C= 0xf0ff) {\\n            charCode &= 0xff;\\n          }\\n          charCodeToGlyphId[charCode] = mapping.glyphId;\\n        }\\n      } else {\\n        \u002F\u002F When there is only a (1, 0) cmap table, the char code is a single\\n        \u002F\u002F byte and it is used directly as the char code.\\n        for (const mapping of cmapMappings) {\\n          charCodeToGlyphId[mapping.charCode] = mapping.glyphId;\\n        }\\n      }\\n\\n      \u002F\u002F Last, try to map any missing charcodes using the post table.\\n      if (\\n        properties.glyphNames &&\\n        (baseEncoding.length || this.differences.length)\\n      ) {\\n        for (let i = 0; i \u003C 256; ++i) {\\n          if (!forcePostTable && charCodeToGlyphId[i] !== undefined) {\\n            continue;\\n          }\\n          const glyphName = this.differences[i] || baseEncoding[i];\\n          if (!glyphName) {\\n            continue;\\n          }\\n          const glyphId = properties.glyphNames.indexOf(glyphName);\\n          if (glyphId > 0 && hasGlyph(glyphId)) {\\n            charCodeToGlyphId[i] = glyphId;\\n          }\\n        }\\n      }\\n    }\\n\\n    if (charCodeToGlyphId.length === 0) {\\n      \u002F\u002F defines at least one glyph\\n      charCodeToGlyphId[0] = 0;\\n    }\\n\\n    \u002F\u002F Typically glyph 0 is duplicated and the mapping must be updated, but if\\n    \u002F\u002F there isn't enough room to duplicate, the glyph id is left the same. In\\n    \u002F\u002F this case, glyph 0 may not work correctly, but that is better than\\n    \u002F\u002F having the whole font fail.\\n    let glyphZeroId = numGlyphsOut - 1;\\n    if (!dupFirstEntry) {\\n      glyphZeroId = 0;\\n    }\\n\\n    \u002F\u002F When `cssFontInfo` is set, the font is used to render text in the HTML\\n    \u002F\u002F view (e.g. with Xfa) so nothing must be moved in the private use area.\\n    if (!properties.cssFontInfo) {\\n      \u002F\u002F Converting glyphs and ids into font's cmap table\\n      const newMapping = adjustMapping(\\n        charCodeToGlyphId,\\n        hasGlyph,\\n        glyphZeroId,\\n        this.toUnicode\\n      );\\n      this.toFontChar = newMapping.toFontChar;\\n      tables.cmap = {\\n        tag: \\\"cmap\\\",\\n        data: createCmapTable(\\n          newMapping.charCodeToGlyphId,\\n          newMapping.toUnicodeExtraMap,\\n          numGlyphsOut\\n        ),\\n      };\\n\\n      if (!tables[\\\"OS\u002F2\\\"] || !validateOS2Table(tables[\\\"OS\u002F2\\\"], font)) {\\n        tables[\\\"OS\u002F2\\\"] = {\\n          tag: \\\"OS\u002F2\\\",\\n          data: createOS2Table(\\n            properties,\\n            newMapping.charCodeToGlyphId,\\n            metricsOverride\\n          ),\\n        };\\n      }\\n    }\\n\\n    if (!isTrueType) {\\n      try {\\n        \u002F\u002F Trying to repair CFF file\\n        cffFile = new Stream(tables[\\\"CFF \\\"].data);\\n        const parser = new CFFParser(\\n          cffFile,\\n          properties,\\n          SEAC_ANALYSIS_ENABLED\\n        );\\n        cff = parser.parse();\\n        cff.duplicateFirstGlyph();\\n        const compiler = new CFFCompiler(cff);\\n        tables[\\\"CFF \\\"].data = compiler.compile();\\n      } catch {\\n        warn(\\\"Failed to compile font \\\" + properties.loadedName);\\n      }\\n    }\\n\\n    \u002F\u002F Re-creating 'name' table\\n    if (!tables.name) {\\n      tables.name = {\\n        tag: \\\"name\\\",\\n        data: createNameTable(this.name),\\n      };\\n    } else {\\n      \u002F\u002F ... using existing 'name' table as prototype\\n      const [namePrototype, nameRecords] = readNameTable(tables.name);\\n\\n      tables.name.data = createNameTable(name, namePrototype);\\n      this.psName = namePrototype[0][6] || null;\\n\\n      if (!properties.composite) {\\n        \u002F\u002F For TrueType fonts that do not include `ToUnicode` or `Encoding`\\n        \u002F\u002F data, attempt to use the name-table to improve text selection.\\n        adjustTrueTypeToUnicode(properties, this.isSymbolicFont, nameRecords);\\n      }\\n    }\\n\\n    const builder = new OpenTypeFileBuilder(header.version);\\n    for (const tableTag in tables) {\\n      builder.addTable(tableTag, tables[tableTag].data);\\n    }\\n    return builder.toArray();\\n  }\\n\\n  convert(fontName, font, properties) {\\n    \u002F\u002F TODO: Check the charstring widths to determine this.\\n    properties.fixedPitch = false;\\n\\n    if (properties.builtInEncoding) {\\n      \u002F\u002F For Type1 fonts that do not include either `ToUnicode` or `Encoding`\\n      \u002F\u002F data, attempt to use the `builtInEncoding` to improve text selection.\\n      adjustType1ToUnicode(properties, properties.builtInEncoding);\\n    }\\n\\n    \u002F\u002F Type 1 fonts have a notdef inserted at the beginning, so glyph 0\\n    \u002F\u002F becomes glyph 1. In a CFF font glyph 0 is appended to the end of the\\n    \u002F\u002F char strings.\\n    let glyphZeroId = 1;\\n    if (font instanceof CFFFont) {\\n      glyphZeroId = font.numGlyphs - 1;\\n    }\\n    const mapping = font.getGlyphMapping(properties);\\n    let newMapping = null;\\n    let newCharCodeToGlyphId = mapping;\\n    let toUnicodeExtraMap = null;\\n\\n    \u002F\u002F When `cssFontInfo` is set, the font is used to render text in the HTML\\n    \u002F\u002F view (e.g. with Xfa) so nothing must be moved in the private use area.\\n    if (!properties.cssFontInfo) {\\n      newMapping = adjustMapping(\\n        mapping,\\n        font.hasGlyphId.bind(font),\\n        glyphZeroId,\\n        this.toUnicode\\n      );\\n      this.toFontChar = newMapping.toFontChar;\\n      newCharCodeToGlyphId = newMapping.charCodeToGlyphId;\\n      toUnicodeExtraMap = newMapping.toUnicodeExtraMap;\\n    }\\n    const numGlyphs = font.numGlyphs;\\n\\n    function getCharCodes(charCodeToGlyphId, glyphId) {\\n      let charCodes = null;\\n      for (const charCode in charCodeToGlyphId) {\\n        if (glyphId === charCodeToGlyphId[charCode]) {\\n          (charCodes ||= []).push(charCode | 0);\\n        }\\n      }\\n      return charCodes;\\n    }\\n\\n    function createCharCode(charCodeToGlyphId, glyphId) {\\n      for (const charCode in charCodeToGlyphId) {\\n        if (glyphId === charCodeToGlyphId[charCode]) {\\n          return charCode | 0;\\n        }\\n      }\\n      newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] =\\n        glyphId;\\n      return newMapping.nextAvailableFontCharCode++;\\n    }\\n\\n    const seacs = font.seacs;\\n    if (newMapping && SEAC_ANALYSIS_ENABLED && seacs?.length) {\\n      const matrix = properties.fontMatrix || FONT_IDENTITY_MATRIX;\\n      const charset = font.getCharset();\\n      const seacMap = Object.create(null);\\n      for (let glyphId in seacs) {\\n        glyphId |= 0;\\n        const seac = seacs[glyphId];\\n        const baseGlyphName = StandardEncoding[seac[2]];\\n        const accentGlyphName = StandardEncoding[seac[3]];\\n        const baseGlyphId = charset.indexOf(baseGlyphName);\\n        const accentGlyphId = charset.indexOf(accentGlyphName);\\n        if (baseGlyphId \u003C 0 || accentGlyphId \u003C 0) {\\n          continue;\\n        }\\n        const accentOffset = {\\n          x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4],\\n          y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5],\\n        };\\n\\n        const charCodes = getCharCodes(mapping, glyphId);\\n        if (!charCodes) {\\n          \u002F\u002F There's no point in mapping it if the char code was never mapped\\n          \u002F\u002F to begin with.\\n          continue;\\n        }\\n        for (const charCode of charCodes) {\\n          \u002F\u002F Find a fontCharCode that maps to the base and accent glyphs.\\n          \u002F\u002F If one doesn't exists, create it.\\n          const charCodeToGlyphId = newMapping.charCodeToGlyphId;\\n          const baseFontCharCode = createCharCode(\\n            charCodeToGlyphId,\\n            baseGlyphId\\n          );\\n          const accentFontCharCode = createCharCode(\\n            charCodeToGlyphId,\\n            accentGlyphId\\n          );\\n          seacMap[charCode] = {\\n            baseFontCharCode,\\n            accentFontCharCode,\\n            accentOffset,\\n          };\\n        }\\n      }\\n      properties.seacMap = seacMap;\\n    }\\n\\n    const unitsPerEm = 1 \u002F (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\\n\\n    const builder = new OpenTypeFileBuilder(\\\"\\\\x4F\\\\x54\\\\x54\\\\x4F\\\");\\n    \u002F\u002F PostScript Font Program\\n    builder.addTable(\\\"CFF \\\", font.data);\\n    \u002F\u002F OS\u002F2 and Windows Specific metrics\\n    builder.addTable(\\\"OS\u002F2\\\", createOS2Table(properties, newCharCodeToGlyphId));\\n    \u002F\u002F Character to glyphs mapping\\n    builder.addTable(\\n      \\\"cmap\\\",\\n      createCmapTable(newCharCodeToGlyphId, toUnicodeExtraMap, numGlyphs)\\n    );\\n    \u002F\u002F Font header\\n    builder.addTable(\\n      \\\"head\\\",\\n      \\\"\\\\x00\\\\x01\\\\x00\\\\x00\\\" + \u002F\u002F Version number\\n        \\\"\\\\x00\\\\x00\\\\x10\\\\x00\\\" + \u002F\u002F fontRevision\\n        \\\"\\\\x00\\\\x00\\\\x00\\\\x00\\\" + \u002F\u002F checksumAdjustement\\n        \\\"\\\\x5F\\\\x0F\\\\x3C\\\\xF5\\\" + \u002F\u002F magicNumber\\n        \\\"\\\\x00\\\\x00\\\" + \u002F\u002F Flags\\n        safeString16(unitsPerEm) + \u002F\u002F unitsPerEM\\n        \\\"\\\\x00\\\\x00\\\\x00\\\\x00\\\\x9e\\\\x0b\\\\x7e\\\\x27\\\" + \u002F\u002F creation date\\n        \\\"\\\\x00\\\\x00\\\\x00\\\\x00\\\\x9e\\\\x0b\\\\x7e\\\\x27\\\" + \u002F\u002F modifification date\\n        \\\"\\\\x00\\\\x00\\\" + \u002F\u002F xMin\\n        safeString16(properties.descent) + \u002F\u002F yMin\\n        \\\"\\\\x0F\\\\xFF\\\" + \u002F\u002F xMax\\n        safeString16(properties.ascent) + \u002F\u002F yMax\\n        string16(properties.italicAngle ? 2 : 0) + \u002F\u002F macStyle\\n        \\\"\\\\x00\\\\x11\\\" + \u002F\u002F lowestRecPPEM\\n        \\\"\\\\x00\\\\x00\\\" + \u002F\u002F fontDirectionHint\\n        \\\"\\\\x00\\\\x00\\\" + \u002F\u002F indexToLocFormat\\n        \\\"\\\\x00\\\\x00\\\"\\n    ); \u002F\u002F glyphDataFormat\\n\\n    \u002F\u002F Horizontal header\\n    builder.addTable(\\n      \\\"hhea\\\",\\n      \\\"\\\\x00\\\\x01\\\\x00\\\\x00\\\" + \u002F\u002F Version number\\n        safeString16(properties.ascent) + \u002F\u002F Typographic Ascent\\n        safeString16(properties.descent) + \u002F\u002F Typographic Descent\\n        \\\"\\\\x00\\\\x00\\\" + \u002F\u002F Line Gap\\n        \\\"\\\\xFF\\\\xFF\\\" + \u002F\u002F advanceWidthMax\\n        \\\"\\\\x00\\\\x00\\\" + \u002F\u002F minLeftSidebearing\\n        \\\"\\\\x00\\\\x00\\\" + \u002F\u002F minRightSidebearing\\n        \\\"\\\\x00\\\\x00\\\" + \u002F\u002F xMaxExtent\\n        safeString16(properties.capHeight) + \u002F\u002F caretSlopeRise\\n        safeString16(Math.tan(properties.italicAngle) * properties.xHeight) + \u002F\u002F caretSlopeRun\\n        \\\"\\\\x00\\\\x00\\\" + \u002F\u002F caretOffset\\n        \\\"\\\\x00\\\\x00\\\" + \u002F\u002F -reserved-\\n        \\\"\\\\x00\\\\x00\\\" + \u002F\u002F -reserved-\\n        \\\"\\\\x00\\\\x00\\\" + \u002F\u002F -reserved-\\n        \\\"\\\\x00\\\\x00\\\" + \u002F\u002F -reserved-\\n        \\\"\\\\x00\\\\x00\\\" + \u002F\u002F metricDataFormat\\n        string16(numGlyphs)\\n    ); \u002F\u002F Number of HMetrics\\n\\n    \u002F\u002F Horizontal metrics\\n    builder.addTable(\\n      \\\"hmtx\\\",\\n      (function fontFieldsHmtx() {\\n        const charstrings = font.charstrings;\\n        const cffWidths = font.cff ? font.cff.widths : null;\\n        let hmtx = \\\"\\\\x00\\\\x00\\\\x00\\\\x00\\\"; \u002F\u002F Fake .notdef\\n        for (let i = 1, ii = numGlyphs; i \u003C ii; i++) {\\n          let width = 0;\\n          if (charstrings) {\\n            const charstring = charstrings[i - 1];\\n            width = \\\"width\\\" in charstring ? charstring.width : 0;\\n          } else if (cffWidths) {\\n            width = Math.ceil(cffWidths[i] || 0);\\n          }\\n          hmtx += string16(width) + string16(0);\\n        }\\n        return hmtx;\\n      })()\\n    );\\n\\n    \u002F\u002F Maximum profile\\n    builder.addTable(\\n      \\\"maxp\\\",\\n      \\\"\\\\x00\\\\x00\\\\x50\\\\x00\\\" + string16(numGlyphs) \u002F\u002F Version number\\n    ); \u002F\u002F Num of glyphs\\n\\n    \u002F\u002F Naming tables\\n    builder.addTable(\\\"name\\\", createNameTable(fontName));\\n\\n    \u002F\u002F PostScript information\\n    builder.addTable(\\\"post\\\", createPostTable(properties));\\n\\n    return builder.toArray();\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _charToGlyph(charcode, isSpace = false) {\\n    let glyph = this._glyphCache[charcode];\\n    \u002F\u002F All `Glyph`-properties, except `isSpace` in multi-byte strings,\\n    \u002F\u002F depend indirectly on the `charcode`.\\n    if (glyph?.isSpace === isSpace) {\\n      return glyph;\\n    }\\n    let fontCharCode, width, operatorListId;\\n\\n    let widthCode = charcode;\\n    if (this.cMap?.contains(charcode)) {\\n      widthCode = this.cMap.lookup(charcode);\\n\\n      if (typeof widthCode === \\\"string\\\") {\\n        widthCode = convertCidString(charcode, widthCode);\\n      }\\n    }\\n    width = this.widths[widthCode];\\n    if (typeof width !== \\\"number\\\") {\\n      width = this.defaultWidth;\\n    }\\n    const vmetric = this.vmetrics?.[widthCode];\\n\\n    let unicode = this.toUnicode.get(charcode) || charcode;\\n    if (typeof unicode === \\\"number\\\") {\\n      unicode = String.fromCharCode(unicode);\\n    }\\n\\n    let isInFont = this.toFontChar[charcode] !== undefined;\\n    \u002F\u002F First try the toFontChar map, if it's not there then try falling\\n    \u002F\u002F back to the char code.\\n    fontCharCode = this.toFontChar[charcode] || charcode;\\n    if (this.missingFile) {\\n      const glyphName =\\n        this.differences[charcode] || this.defaultEncoding[charcode];\\n      if (\\n        (glyphName === \\\".notdef\\\" || glyphName === \\\"\\\") &&\\n        this.type === \\\"Type1\\\"\\n      ) {\\n        \u002F\u002F .notdef glyphs should be invisible in non-embedded Type1 fonts, so\\n        \u002F\u002F replace them with spaces.\\n        fontCharCode = 0x20;\\n      }\\n      fontCharCode = mapSpecialUnicodeValues(fontCharCode);\\n    }\\n\\n    if (this.isType3Font) {\\n      \u002F\u002F Font char code in this case is actually a glyph name.\\n      operatorListId = fontCharCode;\\n    }\\n\\n    let accent = null;\\n    if (this.seacMap?.[charcode]) {\\n      isInFont = true;\\n      const seac = this.seacMap[charcode];\\n      fontCharCode = seac.baseFontCharCode;\\n      accent = {\\n        fontChar: String.fromCodePoint(seac.accentFontCharCode),\\n        offset: seac.accentOffset,\\n      };\\n    }\\n\\n    let fontChar = \\\"\\\";\\n    if (typeof fontCharCode === \\\"number\\\") {\\n      if (fontCharCode \u003C= 0x10ffff) {\\n        fontChar = String.fromCodePoint(fontCharCode);\\n      } else {\\n        warn(`charToGlyph - invalid fontCharCode: ${fontCharCode}`);\\n      }\\n    }\\n\\n    glyph = new Glyph(\\n      charcode,\\n      fontChar,\\n      unicode,\\n      accent,\\n      width,\\n      vmetric,\\n      operatorListId,\\n      isSpace,\\n      isInFont\\n    );\\n    return (this._glyphCache[charcode] = glyph);\\n  }\\n\\n  charsToGlyphs(chars) {\\n    \u002F\u002F If we translated this string before, just grab it from the cache.\\n    let glyphs = this._charsCache[chars];\\n    if (glyphs) {\\n      return glyphs;\\n    }\\n    glyphs = [];\\n\\n    if (this.cMap) {\\n      \u002F\u002F Composite fonts have multi-byte strings, convert the string from\\n      \u002F\u002F single-byte to multi-byte.\\n      const c = Object.create(null),\\n        ii = chars.length;\\n      let i = 0;\\n      while (i \u003C ii) {\\n        this.cMap.readCharCode(chars, i, c);\\n        const { charcode, length } = c;\\n        i += length;\\n        \u002F\u002F Space is char with code 0x20 and length 1 in multiple-byte codes.\\n        const glyph = this._charToGlyph(\\n          charcode,\\n          length === 1 && chars.charCodeAt(i - 1) === 0x20\\n        );\\n        glyphs.push(glyph);\\n      }\\n    } else {\\n      for (let i = 0, ii = chars.length; i \u003C ii; ++i) {\\n        const charcode = chars.charCodeAt(i);\\n        const glyph = this._charToGlyph(charcode, charcode === 0x20);\\n        glyphs.push(glyph);\\n      }\\n    }\\n\\n    \u002F\u002F Enter the translated string into the cache.\\n    return (this._charsCache[chars] = glyphs);\\n  }\\n\\n  \u002F**\\n   * Chars can have different sizes (depends on the encoding).\\n   * @param {String} a string encoded with font encoding.\\n   * @returns {Array\u003CArray\u003Cnumber>>} the positions of each char in the string.\\n   *\u002F\\n  getCharPositions(chars) {\\n    \u002F\u002F This function doesn't use a cache because\\n    \u002F\u002F it's called only when saving or printing.\\n    const positions = [];\\n\\n    if (this.cMap) {\\n      const c = Object.create(null);\\n      let i = 0;\\n      while (i \u003C chars.length) {\\n        this.cMap.readCharCode(chars, i, c);\\n        const length = c.length;\\n        positions.push([i, i + length]);\\n        i += length;\\n      }\\n    } else {\\n      for (let i = 0, ii = chars.length; i \u003C ii; ++i) {\\n        positions.push([i, i + 1]);\\n      }\\n    }\\n\\n    return positions;\\n  }\\n\\n  get glyphCacheValues() {\\n    return Object.values(this._glyphCache);\\n  }\\n\\n  \u002F**\\n   * Encode a js string using font encoding.\\n   * The resulting array contains an encoded string at even positions\\n   * (can be empty) and a non-encoded one at odd positions.\\n   * @param {String} a js string.\\n   * @returns {Array\u003CString>} an array of encoded strings or non-encoded ones.\\n   *\u002F\\n  encodeString(str) {\\n    const buffers = [];\\n    const currentBuf = [];\\n\\n    \u002F\u002F buffers will contain: encoded, non-encoded, encoded, ...\\n    \u002F\u002F currentBuf is pushed in buffers each time there is a change.\\n    \u002F\u002F So when buffers.length is odd then the last string is an encoded one\\n    \u002F\u002F and currentBuf contains non-encoded chars.\\n    const hasCurrentBufErrors = () => buffers.length % 2 === 1;\\n\\n    const getCharCode =\\n      this.toUnicode instanceof IdentityToUnicodeMap\\n        ? unicode => this.toUnicode.charCodeOf(unicode)\\n        : unicode => this.toUnicode.charCodeOf(String.fromCodePoint(unicode));\\n\\n    for (let i = 0, ii = str.length; i \u003C ii; i++) {\\n      const unicode = str.codePointAt(i);\\n      if (unicode > 0xd7ff && (unicode \u003C 0xe000 || unicode > 0xfffd)) {\\n        \u002F\u002F unicode is represented by two uint16\\n        i++;\\n      }\\n      if (this.toUnicode) {\\n        const charCode = getCharCode(unicode);\\n        if (charCode !== -1) {\\n          if (hasCurrentBufErrors()) {\\n            buffers.push(currentBuf.join(\\\"\\\"));\\n            currentBuf.length = 0;\\n          }\\n          const charCodeLength = this.cMap\\n            ? this.cMap.getCharCodeLength(charCode)\\n            : 1;\\n          for (let j = charCodeLength - 1; j >= 0; j--) {\\n            currentBuf.push(String.fromCharCode((charCode >> (8 * j)) & 0xff));\\n          }\\n          continue;\\n        }\\n      }\\n\\n      \u002F\u002F unicode can't be encoded\\n      if (!hasCurrentBufErrors()) {\\n        buffers.push(currentBuf.join(\\\"\\\"));\\n        currentBuf.length = 0;\\n      }\\n      currentBuf.push(String.fromCodePoint(unicode));\\n    }\\n\\n    buffers.push(currentBuf.join(\\\"\\\"));\\n\\n    return buffers;\\n  }\\n}\\n\\nclass ErrorFont {\\n  constructor(error) {\\n    this.error = error;\\n    this.loadedName = \\\"g_font_error\\\";\\n    this.missingFile = true;\\n  }\\n\\n  charsToGlyphs() {\\n    return [];\\n  }\\n\\n  encodeString(chars) {\\n    return [chars];\\n  }\\n\\n  exportData(extraProperties = false) {\\n    return { error: this.error };\\n  }\\n}\\n\\nexport { ErrorFont, Font };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  assert,\\n  FormatError,\\n  IDENTITY_MATRIX,\\n  info,\\n  unreachable,\\n  Util,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  isBooleanArray,\\n  isNumberArray,\\n  lookupMatrix,\\n  lookupNormalRect,\\n  MissingDataException,\\n} from \\\".\u002Fcore_utils.js\\\";\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { ColorSpace } from \\\".\u002Fcolorspace.js\\\";\\n\\nconst ShadingType = {\\n  FUNCTION_BASED: 1,\\n  AXIAL: 2,\\n  RADIAL: 3,\\n  FREE_FORM_MESH: 4,\\n  LATTICE_FORM_MESH: 5,\\n  COONS_PATCH_MESH: 6,\\n  TENSOR_PATCH_MESH: 7,\\n};\\n\\nclass Pattern {\\n  constructor() {\\n    unreachable(\\\"Cannot initialize Pattern.\\\");\\n  }\\n\\n  static parseShading(\\n    shading,\\n    xref,\\n    res,\\n    pdfFunctionFactory,\\n    localColorSpaceCache\\n  ) {\\n    const dict = shading instanceof BaseStream ? shading.dict : shading;\\n    const type = dict.get(\\\"ShadingType\\\");\\n\\n    try {\\n      switch (type) {\\n        case ShadingType.AXIAL:\\n        case ShadingType.RADIAL:\\n          return new RadialAxialShading(\\n            dict,\\n            xref,\\n            res,\\n            pdfFunctionFactory,\\n            localColorSpaceCache\\n          );\\n        case ShadingType.FREE_FORM_MESH:\\n        case ShadingType.LATTICE_FORM_MESH:\\n        case ShadingType.COONS_PATCH_MESH:\\n        case ShadingType.TENSOR_PATCH_MESH:\\n          return new MeshShading(\\n            shading,\\n            xref,\\n            res,\\n            pdfFunctionFactory,\\n            localColorSpaceCache\\n          );\\n        default:\\n          throw new FormatError(\\\"Unsupported ShadingType: \\\" + type);\\n      }\\n    } catch (ex) {\\n      if (ex instanceof MissingDataException) {\\n        throw ex;\\n      }\\n      warn(ex);\\n      return new DummyShading();\\n    }\\n  }\\n}\\n\\nclass BaseShading {\\n  \u002F\u002F A small number to offset the first\u002Flast color stops so we can insert ones\\n  \u002F\u002F to support extend. Number.MIN_VALUE is too small and breaks the extend.\\n  static SMALL_NUMBER = 1e-6;\\n\\n  constructor() {\\n    if (this.constructor === BaseShading) {\\n      unreachable(\\\"Cannot initialize BaseShading.\\\");\\n    }\\n  }\\n\\n  getIR() {\\n    unreachable(\\\"Abstract method `getIR` called.\\\");\\n  }\\n}\\n\\n\u002F\u002F Radial and axial shading have very similar implementations\\n\u002F\u002F If needed, the implementations can be broken into two classes.\\nclass RadialAxialShading extends BaseShading {\\n  constructor(dict, xref, resources, pdfFunctionFactory, localColorSpaceCache) {\\n    super();\\n    this.shadingType = dict.get(\\\"ShadingType\\\");\\n    let coordsLen = 0;\\n    if (this.shadingType === ShadingType.AXIAL) {\\n      coordsLen = 4;\\n    } else if (this.shadingType === ShadingType.RADIAL) {\\n      coordsLen = 6;\\n    }\\n    this.coordsArr = dict.getArray(\\\"Coords\\\");\\n    if (!isNumberArray(this.coordsArr, coordsLen)) {\\n      throw new FormatError(\\\"RadialAxialShading: Invalid \u002FCoords array.\\\");\\n    }\\n    const cs = ColorSpace.parse({\\n      cs: dict.getRaw(\\\"CS\\\") || dict.getRaw(\\\"ColorSpace\\\"),\\n      xref,\\n      resources,\\n      pdfFunctionFactory,\\n      localColorSpaceCache,\\n    });\\n    this.bbox = lookupNormalRect(dict.getArray(\\\"BBox\\\"), null);\\n\\n    let t0 = 0.0,\\n      t1 = 1.0;\\n    const domainArr = dict.getArray(\\\"Domain\\\");\\n    if (isNumberArray(domainArr, 2)) {\\n      [t0, t1] = domainArr;\\n    }\\n\\n    let extendStart = false,\\n      extendEnd = false;\\n    const extendArr = dict.getArray(\\\"Extend\\\");\\n    if (isBooleanArray(extendArr, 2)) {\\n      [extendStart, extendEnd] = extendArr;\\n    }\\n\\n    if (\\n      this.shadingType === ShadingType.RADIAL &&\\n      (!extendStart || !extendEnd)\\n    ) {\\n      \u002F\u002F Radial gradient only currently works if either circle is fully within\\n      \u002F\u002F the other circle.\\n      const [x1, y1, r1, x2, y2, r2] = this.coordsArr;\\n      const distance = Math.hypot(x1 - x2, y1 - y2);\\n      if (r1 \u003C= r2 + distance && r2 \u003C= r1 + distance) {\\n        warn(\\\"Unsupported radial gradient.\\\");\\n      }\\n    }\\n\\n    this.extendStart = extendStart;\\n    this.extendEnd = extendEnd;\\n\\n    const fnObj = dict.getRaw(\\\"Function\\\");\\n    const fn = pdfFunctionFactory.createFromArray(fnObj);\\n\\n    \u002F\u002F Use lcm(1,2,3,4,5,6,7,8,10) = 840 (including 9 increases this to 2520)\\n    \u002F\u002F to catch evenly spaced stops. oeis.org\u002FA003418\\n    const NUMBER_OF_SAMPLES = 840;\\n    const step = (t1 - t0) \u002F NUMBER_OF_SAMPLES;\\n\\n    const colorStops = (this.colorStops = []);\\n\\n    \u002F\u002F Protect against bad domains.\\n    if (t0 >= t1 || step \u003C= 0) {\\n      \u002F\u002F Acrobat doesn't seem to handle these cases so we'll ignore for\\n      \u002F\u002F now.\\n      info(\\\"Bad shading domain.\\\");\\n      return;\\n    }\\n\\n    const color = new Float32Array(cs.numComps),\\n      ratio = new Float32Array(1);\\n    let rgbColor;\\n\\n    let iBase = 0;\\n    ratio[0] = t0;\\n    fn(ratio, 0, color, 0);\\n    let rgbBase = cs.getRgb(color, 0);\\n    const cssColorBase = Util.makeHexColor(rgbBase[0], rgbBase[1], rgbBase[2]);\\n    colorStops.push([0, cssColorBase]);\\n\\n    let iPrev = 1;\\n    ratio[0] = t0 + step;\\n    fn(ratio, 0, color, 0);\\n    let rgbPrev = cs.getRgb(color, 0);\\n\\n    \u002F\u002F Slopes are rise \u002F run.\\n    \u002F\u002F A max slope is from the least value the base component could have been\\n    \u002F\u002F to the greatest value the current component could have been.\\n    \u002F\u002F A min slope is from the greatest value the base component could have been\\n    \u002F\u002F to the least value the current component could have been.\\n    \u002F\u002F Each component could have been rounded up to .5 from its original value\\n    \u002F\u002F so the conservative deltas are +-1 (+-.5 for base and -+.5 for current).\\n\\n    \u002F\u002F The run is iPrev - iBase = 1, so omitted.\\n    let maxSlopeR = rgbPrev[0] - rgbBase[0] + 1;\\n    let maxSlopeG = rgbPrev[1] - rgbBase[1] + 1;\\n    let maxSlopeB = rgbPrev[2] - rgbBase[2] + 1;\\n    let minSlopeR = rgbPrev[0] - rgbBase[0] - 1;\\n    let minSlopeG = rgbPrev[1] - rgbBase[1] - 1;\\n    let minSlopeB = rgbPrev[2] - rgbBase[2] - 1;\\n\\n    for (let i = 2; i \u003C NUMBER_OF_SAMPLES; i++) {\\n      ratio[0] = t0 + i * step;\\n      fn(ratio, 0, color, 0);\\n      rgbColor = cs.getRgb(color, 0);\\n\\n      \u002F\u002F Keep going if the maximum minimum slope \u003C= the minimum maximum slope.\\n      \u002F\u002F Otherwise add a rgbPrev color stop and make it the new base.\\n\\n      const run = i - iBase;\\n      maxSlopeR = Math.min(maxSlopeR, (rgbColor[0] - rgbBase[0] + 1) \u002F run);\\n      maxSlopeG = Math.min(maxSlopeG, (rgbColor[1] - rgbBase[1] + 1) \u002F run);\\n      maxSlopeB = Math.min(maxSlopeB, (rgbColor[2] - rgbBase[2] + 1) \u002F run);\\n      minSlopeR = Math.max(minSlopeR, (rgbColor[0] - rgbBase[0] - 1) \u002F run);\\n      minSlopeG = Math.max(minSlopeG, (rgbColor[1] - rgbBase[1] - 1) \u002F run);\\n      minSlopeB = Math.max(minSlopeB, (rgbColor[2] - rgbBase[2] - 1) \u002F run);\\n\\n      const slopesExist =\\n        minSlopeR \u003C= maxSlopeR &&\\n        minSlopeG \u003C= maxSlopeG &&\\n        minSlopeB \u003C= maxSlopeB;\\n\\n      if (!slopesExist) {\\n        const cssColor = Util.makeHexColor(rgbPrev[0], rgbPrev[1], rgbPrev[2]);\\n        colorStops.push([iPrev \u002F NUMBER_OF_SAMPLES, cssColor]);\\n\\n        \u002F\u002F TODO: When fn frequency is high (iPrev - iBase === 1 twice in a row),\\n        \u002F\u002F send the color space and function to do the sampling display side.\\n\\n        \u002F\u002F The run is i - iPrev = 1, so omitted.\\n        maxSlopeR = rgbColor[0] - rgbPrev[0] + 1;\\n        maxSlopeG = rgbColor[1] - rgbPrev[1] + 1;\\n        maxSlopeB = rgbColor[2] - rgbPrev[2] + 1;\\n        minSlopeR = rgbColor[0] - rgbPrev[0] - 1;\\n        minSlopeG = rgbColor[1] - rgbPrev[1] - 1;\\n        minSlopeB = rgbColor[2] - rgbPrev[2] - 1;\\n\\n        iBase = iPrev;\\n        rgbBase = rgbPrev;\\n      }\\n\\n      iPrev = i;\\n      rgbPrev = rgbColor;\\n    }\\n    const cssColor = Util.makeHexColor(rgbPrev[0], rgbPrev[1], rgbPrev[2]);\\n    colorStops.push([1, cssColor]);\\n\\n    let background = \\\"transparent\\\";\\n    if (dict.has(\\\"Background\\\")) {\\n      rgbColor = cs.getRgb(dict.get(\\\"Background\\\"), 0);\\n      background = Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]);\\n    }\\n\\n    if (!extendStart) {\\n      \u002F\u002F Insert a color stop at the front and offset the first real color stop\\n      \u002F\u002F so it doesn't conflict with the one we insert.\\n      colorStops.unshift([0, background]);\\n      colorStops[1][0] += BaseShading.SMALL_NUMBER;\\n    }\\n    if (!extendEnd) {\\n      \u002F\u002F Same idea as above in extendStart but for the end.\\n      colorStops.at(-1)[0] -= BaseShading.SMALL_NUMBER;\\n      colorStops.push([1, background]);\\n    }\\n\\n    this.colorStops = colorStops;\\n  }\\n\\n  getIR() {\\n    const { coordsArr, shadingType } = this;\\n    let type, p0, p1, r0, r1;\\n    if (shadingType === ShadingType.AXIAL) {\\n      p0 = [coordsArr[0], coordsArr[1]];\\n      p1 = [coordsArr[2], coordsArr[3]];\\n      r0 = null;\\n      r1 = null;\\n      type = \\\"axial\\\";\\n    } else if (shadingType === ShadingType.RADIAL) {\\n      p0 = [coordsArr[0], coordsArr[1]];\\n      p1 = [coordsArr[3], coordsArr[4]];\\n      r0 = coordsArr[2];\\n      r1 = coordsArr[5];\\n      type = \\\"radial\\\";\\n    } else {\\n      unreachable(`getPattern type unknown: ${shadingType}`);\\n    }\\n\\n    return [\\\"RadialAxial\\\", type, this.bbox, this.colorStops, p0, p1, r0, r1];\\n  }\\n}\\n\\n\u002F\u002F All mesh shadings. For now, they will be presented as set of the triangles\\n\u002F\u002F to be drawn on the canvas and rgb color for each vertex.\\nclass MeshStreamReader {\\n  constructor(stream, context) {\\n    this.stream = stream;\\n    this.context = context;\\n    this.buffer = 0;\\n    this.bufferLength = 0;\\n\\n    const numComps = context.numComps;\\n    this.tmpCompsBuf = new Float32Array(numComps);\\n    const csNumComps = context.colorSpace.numComps;\\n    this.tmpCsCompsBuf = context.colorFn\\n      ? new Float32Array(csNumComps)\\n      : this.tmpCompsBuf;\\n  }\\n\\n  get hasData() {\\n    if (this.stream.end) {\\n      return this.stream.pos \u003C this.stream.end;\\n    }\\n    if (this.bufferLength > 0) {\\n      return true;\\n    }\\n    const nextByte = this.stream.getByte();\\n    if (nextByte \u003C 0) {\\n      return false;\\n    }\\n    this.buffer = nextByte;\\n    this.bufferLength = 8;\\n    return true;\\n  }\\n\\n  readBits(n) {\\n    let buffer = this.buffer;\\n    let bufferLength = this.bufferLength;\\n    if (n === 32) {\\n      if (bufferLength === 0) {\\n        return (\\n          ((this.stream.getByte() \u003C\u003C 24) |\\n            (this.stream.getByte() \u003C\u003C 16) |\\n            (this.stream.getByte() \u003C\u003C 8) |\\n            this.stream.getByte()) >>>\\n          0\\n        );\\n      }\\n      buffer =\\n        (buffer \u003C\u003C 24) |\\n        (this.stream.getByte() \u003C\u003C 16) |\\n        (this.stream.getByte() \u003C\u003C 8) |\\n        this.stream.getByte();\\n      const nextByte = this.stream.getByte();\\n      this.buffer = nextByte & ((1 \u003C\u003C bufferLength) - 1);\\n      return (\\n        ((buffer \u003C\u003C (8 - bufferLength)) |\\n          ((nextByte & 0xff) >> bufferLength)) >>>\\n        0\\n      );\\n    }\\n    if (n === 8 && bufferLength === 0) {\\n      return this.stream.getByte();\\n    }\\n    while (bufferLength \u003C n) {\\n      buffer = (buffer \u003C\u003C 8) | this.stream.getByte();\\n      bufferLength += 8;\\n    }\\n    bufferLength -= n;\\n    this.bufferLength = bufferLength;\\n    this.buffer = buffer & ((1 \u003C\u003C bufferLength) - 1);\\n    return buffer >> bufferLength;\\n  }\\n\\n  align() {\\n    this.buffer = 0;\\n    this.bufferLength = 0;\\n  }\\n\\n  readFlag() {\\n    return this.readBits(this.context.bitsPerFlag);\\n  }\\n\\n  readCoordinate() {\\n    const bitsPerCoordinate = this.context.bitsPerCoordinate;\\n    const xi = this.readBits(bitsPerCoordinate);\\n    const yi = this.readBits(bitsPerCoordinate);\\n    const decode = this.context.decode;\\n    const scale =\\n      bitsPerCoordinate \u003C 32\\n        ? 1 \u002F ((1 \u003C\u003C bitsPerCoordinate) - 1)\\n        : 2.3283064365386963e-10; \u002F\u002F 2 ^ -32\\n    return [\\n      xi * scale * (decode[1] - decode[0]) + decode[0],\\n      yi * scale * (decode[3] - decode[2]) + decode[2],\\n    ];\\n  }\\n\\n  readComponents() {\\n    const numComps = this.context.numComps;\\n    const bitsPerComponent = this.context.bitsPerComponent;\\n    const scale =\\n      bitsPerComponent \u003C 32\\n        ? 1 \u002F ((1 \u003C\u003C bitsPerComponent) - 1)\\n        : 2.3283064365386963e-10; \u002F\u002F 2 ^ -32\\n    const decode = this.context.decode;\\n    const components = this.tmpCompsBuf;\\n    for (let i = 0, j = 4; i \u003C numComps; i++, j += 2) {\\n      const ci = this.readBits(bitsPerComponent);\\n      components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j];\\n    }\\n    const color = this.tmpCsCompsBuf;\\n    if (this.context.colorFn) {\\n      this.context.colorFn(components, 0, color, 0);\\n    }\\n    return this.context.colorSpace.getRgb(color, 0);\\n  }\\n}\\n\\nlet bCache = Object.create(null);\\n\\nfunction buildB(count) {\\n  const lut = [];\\n  for (let i = 0; i \u003C= count; i++) {\\n    const t = i \u002F count,\\n      t_ = 1 - t;\\n    lut.push(\\n      new Float32Array([t_ ** 3, 3 * t * t_ ** 2, 3 * t ** 2 * t_, t ** 3])\\n    );\\n  }\\n  return lut;\\n}\\nfunction getB(count) {\\n  return (bCache[count] ||= buildB(count));\\n}\\n\\nfunction clearPatternCaches() {\\n  bCache = Object.create(null);\\n}\\n\\nclass MeshShading extends BaseShading {\\n  static MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3;\\n\\n  static MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20;\\n\\n  \u002F\u002F Count of triangles per entire mesh bounds.\\n  static TRIANGLE_DENSITY = 20;\\n\\n  constructor(\\n    stream,\\n    xref,\\n    resources,\\n    pdfFunctionFactory,\\n    localColorSpaceCache\\n  ) {\\n    super();\\n    if (!(stream instanceof BaseStream)) {\\n      throw new FormatError(\\\"Mesh data is not a stream\\\");\\n    }\\n    const dict = stream.dict;\\n    this.shadingType = dict.get(\\\"ShadingType\\\");\\n    this.bbox = lookupNormalRect(dict.getArray(\\\"BBox\\\"), null);\\n    const cs = ColorSpace.parse({\\n      cs: dict.getRaw(\\\"CS\\\") || dict.getRaw(\\\"ColorSpace\\\"),\\n      xref,\\n      resources,\\n      pdfFunctionFactory,\\n      localColorSpaceCache,\\n    });\\n    this.background = dict.has(\\\"Background\\\")\\n      ? cs.getRgb(dict.get(\\\"Background\\\"), 0)\\n      : null;\\n\\n    const fnObj = dict.getRaw(\\\"Function\\\");\\n    const fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null;\\n\\n    this.coords = [];\\n    this.colors = [];\\n    this.figures = [];\\n\\n    const decodeContext = {\\n      bitsPerCoordinate: dict.get(\\\"BitsPerCoordinate\\\"),\\n      bitsPerComponent: dict.get(\\\"BitsPerComponent\\\"),\\n      bitsPerFlag: dict.get(\\\"BitsPerFlag\\\"),\\n      decode: dict.getArray(\\\"Decode\\\"),\\n      colorFn: fn,\\n      colorSpace: cs,\\n      numComps: fn ? 1 : cs.numComps,\\n    };\\n    const reader = new MeshStreamReader(stream, decodeContext);\\n\\n    let patchMesh = false;\\n    switch (this.shadingType) {\\n      case ShadingType.FREE_FORM_MESH:\\n        this._decodeType4Shading(reader);\\n        break;\\n      case ShadingType.LATTICE_FORM_MESH:\\n        const verticesPerRow = dict.get(\\\"VerticesPerRow\\\") | 0;\\n        if (verticesPerRow \u003C 2) {\\n          throw new FormatError(\\\"Invalid VerticesPerRow\\\");\\n        }\\n        this._decodeType5Shading(reader, verticesPerRow);\\n        break;\\n      case ShadingType.COONS_PATCH_MESH:\\n        this._decodeType6Shading(reader);\\n        patchMesh = true;\\n        break;\\n      case ShadingType.TENSOR_PATCH_MESH:\\n        this._decodeType7Shading(reader);\\n        patchMesh = true;\\n        break;\\n      default:\\n        unreachable(\\\"Unsupported mesh type.\\\");\\n        break;\\n    }\\n\\n    if (patchMesh) {\\n      \u002F\u002F Dirty bounds calculation, to determine how dense the triangles will be.\\n      this._updateBounds();\\n      for (let i = 0, ii = this.figures.length; i \u003C ii; i++) {\\n        this._buildFigureFromPatch(i);\\n      }\\n    }\\n    \u002F\u002F Calculate bounds.\\n    this._updateBounds();\\n\\n    this._packData();\\n  }\\n\\n  _decodeType4Shading(reader) {\\n    const coords = this.coords;\\n    const colors = this.colors;\\n    const operators = [];\\n    const ps = []; \u002F\u002F not maintaining cs since that will match ps\\n    let verticesLeft = 0; \u002F\u002F assuming we have all data to start a new triangle\\n    while (reader.hasData) {\\n      const f = reader.readFlag();\\n      const coord = reader.readCoordinate();\\n      const color = reader.readComponents();\\n      if (verticesLeft === 0) {\\n        \u002F\u002F ignoring flags if we started a triangle\\n        if (!(0 \u003C= f && f \u003C= 2)) {\\n          throw new FormatError(\\\"Unknown type4 flag\\\");\\n        }\\n        switch (f) {\\n          case 0:\\n            verticesLeft = 3;\\n            break;\\n          case 1:\\n            ps.push(ps.at(-2), ps.at(-1));\\n            verticesLeft = 1;\\n            break;\\n          case 2:\\n            ps.push(ps.at(-3), ps.at(-1));\\n            verticesLeft = 1;\\n            break;\\n        }\\n        operators.push(f);\\n      }\\n      ps.push(coords.length);\\n      coords.push(coord);\\n      colors.push(color);\\n      verticesLeft--;\\n\\n      reader.align();\\n    }\\n    this.figures.push({\\n      type: \\\"triangles\\\",\\n      coords: new Int32Array(ps),\\n      colors: new Int32Array(ps),\\n    });\\n  }\\n\\n  _decodeType5Shading(reader, verticesPerRow) {\\n    const coords = this.coords;\\n    const colors = this.colors;\\n    const ps = []; \u002F\u002F not maintaining cs since that will match ps\\n    while (reader.hasData) {\\n      const coord = reader.readCoordinate();\\n      const color = reader.readComponents();\\n      ps.push(coords.length);\\n      coords.push(coord);\\n      colors.push(color);\\n    }\\n    this.figures.push({\\n      type: \\\"lattice\\\",\\n      coords: new Int32Array(ps),\\n      colors: new Int32Array(ps),\\n      verticesPerRow,\\n    });\\n  }\\n\\n  _decodeType6Shading(reader) {\\n    \u002F\u002F A special case of Type 7. The p11, p12, p21, p22 automatically filled\\n    const coords = this.coords;\\n    const colors = this.colors;\\n    const ps = new Int32Array(16); \u002F\u002F p00, p10, ..., p30, p01, ..., p33\\n    const cs = new Int32Array(4); \u002F\u002F c00, c30, c03, c33\\n    while (reader.hasData) {\\n      const f = reader.readFlag();\\n      if (!(0 \u003C= f && f \u003C= 3)) {\\n        throw new FormatError(\\\"Unknown type6 flag\\\");\\n      }\\n      const pi = coords.length;\\n      for (let i = 0, ii = f !== 0 ? 8 : 12; i \u003C ii; i++) {\\n        coords.push(reader.readCoordinate());\\n      }\\n      const ci = colors.length;\\n      for (let i = 0, ii = f !== 0 ? 2 : 4; i \u003C ii; i++) {\\n        colors.push(reader.readComponents());\\n      }\\n      let tmp1, tmp2, tmp3, tmp4;\\n      switch (f) {\\n        \u002F\u002F prettier-ignore\\n        case 0:\\n          ps[12] = pi + 3; ps[13] = pi + 4;  ps[14] = pi + 5;  ps[15] = pi + 6;\\n          ps[ 8] = pi + 2; \u002F* values for 5, 6, 9, 10 are    *\u002F ps[11] = pi + 7;\\n          ps[ 4] = pi + 1; \u002F* calculated below              *\u002F ps[ 7] = pi + 8;\\n          ps[ 0] = pi;     ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\\n          cs[2] = ci + 1; cs[3] = ci + 2;\\n          cs[0] = ci;     cs[1] = ci + 3;\\n          break;\\n        \u002F\u002F prettier-ignore\\n        case 1:\\n          tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\\n          ps[12] = tmp4; ps[13] = pi + 0;  ps[14] = pi + 1;  ps[15] = pi + 2;\\n          ps[ 8] = tmp3; \u002F* values for 5, 6, 9, 10 are    *\u002F ps[11] = pi + 3;\\n          ps[ 4] = tmp2; \u002F* calculated below              *\u002F ps[ 7] = pi + 4;\\n          ps[ 0] = tmp1; ps[ 1] = pi + 7;   ps[ 2] = pi + 6; ps[ 3] = pi + 5;\\n          tmp1 = cs[2]; tmp2 = cs[3];\\n          cs[2] = tmp2;   cs[3] = ci;\\n          cs[0] = tmp1;   cs[1] = ci + 1;\\n          break;\\n        \u002F\u002F prettier-ignore\\n        case 2:\\n          tmp1 = ps[15];\\n          tmp2 = ps[11];\\n          ps[12] = ps[3];  ps[13] = pi + 0; ps[14] = pi + 1;   ps[15] = pi + 2;\\n          ps[ 8] = ps[7];  \u002F* values for 5, 6, 9, 10 are    *\u002F ps[11] = pi + 3;\\n          ps[ 4] = tmp2;   \u002F* calculated below              *\u002F ps[ 7] = pi + 4;\\n          ps[ 0] = tmp1;  ps[ 1] = pi + 7;   ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\\n          tmp1 = cs[3];\\n          cs[2] = cs[1]; cs[3] = ci;\\n          cs[0] = tmp1;  cs[1] = ci + 1;\\n          break;\\n        \u002F\u002F prettier-ignore\\n        case 3:\\n          ps[12] = ps[0];  ps[13] = pi + 0;   ps[14] = pi + 1; ps[15] = pi + 2;\\n          ps[ 8] = ps[1];  \u002F* values for 5, 6, 9, 10 are    *\u002F ps[11] = pi + 3;\\n          ps[ 4] = ps[2];  \u002F* calculated below              *\u002F ps[ 7] = pi + 4;\\n          ps[ 0] = ps[3];  ps[ 1] = pi + 7;   ps[ 2] = pi + 6; ps[ 3] = pi + 5;\\n          cs[2] = cs[0]; cs[3] = ci;\\n          cs[0] = cs[1]; cs[1] = ci + 1;\\n          break;\\n      }\\n      \u002F\u002F set p11, p12, p21, p22\\n      ps[5] = coords.length;\\n      coords.push([\\n        (-4 * coords[ps[0]][0] -\\n          coords[ps[15]][0] +\\n          6 * (coords[ps[4]][0] + coords[ps[1]][0]) -\\n          2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\\n          3 * (coords[ps[13]][0] + coords[ps[7]][0])) \u002F\\n          9,\\n        (-4 * coords[ps[0]][1] -\\n          coords[ps[15]][1] +\\n          6 * (coords[ps[4]][1] + coords[ps[1]][1]) -\\n          2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\\n          3 * (coords[ps[13]][1] + coords[ps[7]][1])) \u002F\\n          9,\\n      ]);\\n      ps[6] = coords.length;\\n      coords.push([\\n        (-4 * coords[ps[3]][0] -\\n          coords[ps[12]][0] +\\n          6 * (coords[ps[2]][0] + coords[ps[7]][0]) -\\n          2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\\n          3 * (coords[ps[4]][0] + coords[ps[14]][0])) \u002F\\n          9,\\n        (-4 * coords[ps[3]][1] -\\n          coords[ps[12]][1] +\\n          6 * (coords[ps[2]][1] + coords[ps[7]][1]) -\\n          2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\\n          3 * (coords[ps[4]][1] + coords[ps[14]][1])) \u002F\\n          9,\\n      ]);\\n      ps[9] = coords.length;\\n      coords.push([\\n        (-4 * coords[ps[12]][0] -\\n          coords[ps[3]][0] +\\n          6 * (coords[ps[8]][0] + coords[ps[13]][0]) -\\n          2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\\n          3 * (coords[ps[11]][0] + coords[ps[1]][0])) \u002F\\n          9,\\n        (-4 * coords[ps[12]][1] -\\n          coords[ps[3]][1] +\\n          6 * (coords[ps[8]][1] + coords[ps[13]][1]) -\\n          2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\\n          3 * (coords[ps[11]][1] + coords[ps[1]][1])) \u002F\\n          9,\\n      ]);\\n      ps[10] = coords.length;\\n      coords.push([\\n        (-4 * coords[ps[15]][0] -\\n          coords[ps[0]][0] +\\n          6 * (coords[ps[11]][0] + coords[ps[14]][0]) -\\n          2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\\n          3 * (coords[ps[2]][0] + coords[ps[8]][0])) \u002F\\n          9,\\n        (-4 * coords[ps[15]][1] -\\n          coords[ps[0]][1] +\\n          6 * (coords[ps[11]][1] + coords[ps[14]][1]) -\\n          2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\\n          3 * (coords[ps[2]][1] + coords[ps[8]][1])) \u002F\\n          9,\\n      ]);\\n      this.figures.push({\\n        type: \\\"patch\\\",\\n        coords: new Int32Array(ps), \u002F\u002F making copies of ps and cs\\n        colors: new Int32Array(cs),\\n      });\\n    }\\n  }\\n\\n  _decodeType7Shading(reader) {\\n    const coords = this.coords;\\n    const colors = this.colors;\\n    const ps = new Int32Array(16); \u002F\u002F p00, p10, ..., p30, p01, ..., p33\\n    const cs = new Int32Array(4); \u002F\u002F c00, c30, c03, c33\\n    while (reader.hasData) {\\n      const f = reader.readFlag();\\n      if (!(0 \u003C= f && f \u003C= 3)) {\\n        throw new FormatError(\\\"Unknown type7 flag\\\");\\n      }\\n      const pi = coords.length;\\n      for (let i = 0, ii = f !== 0 ? 12 : 16; i \u003C ii; i++) {\\n        coords.push(reader.readCoordinate());\\n      }\\n      const ci = colors.length;\\n      for (let i = 0, ii = f !== 0 ? 2 : 4; i \u003C ii; i++) {\\n        colors.push(reader.readComponents());\\n      }\\n      let tmp1, tmp2, tmp3, tmp4;\\n      switch (f) {\\n        \u002F\u002F prettier-ignore\\n        case 0:\\n          ps[12] = pi + 3; ps[13] = pi + 4;  ps[14] = pi + 5;  ps[15] = pi + 6;\\n          ps[ 8] = pi + 2; ps[ 9] = pi + 13; ps[10] = pi + 14; ps[11] = pi + 7;\\n          ps[ 4] = pi + 1; ps[ 5] = pi + 12; ps[ 6] = pi + 15; ps[ 7] = pi + 8;\\n          ps[ 0] = pi;     ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\\n          cs[2] = ci + 1; cs[3] = ci + 2;\\n          cs[0] = ci;     cs[1] = ci + 3;\\n          break;\\n        \u002F\u002F prettier-ignore\\n        case 1:\\n          tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\\n          ps[12] = tmp4;   ps[13] = pi + 0;  ps[14] = pi + 1;  ps[15] = pi + 2;\\n          ps[ 8] = tmp3;   ps[ 9] = pi + 9;  ps[10] = pi + 10; ps[11] = pi + 3;\\n          ps[ 4] = tmp2;   ps[ 5] = pi + 8;  ps[ 6] = pi + 11; ps[ 7] = pi + 4;\\n          ps[ 0] = tmp1;   ps[ 1] = pi + 7;  ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\\n          tmp1 = cs[2]; tmp2 = cs[3];\\n          cs[2] = tmp2;   cs[3] = ci;\\n          cs[0] = tmp1;   cs[1] = ci + 1;\\n          break;\\n        \u002F\u002F prettier-ignore\\n        case 2:\\n          tmp1 = ps[15];\\n          tmp2 = ps[11];\\n          ps[12] = ps[3]; ps[13] = pi + 0; ps[14] = pi + 1;  ps[15] = pi + 2;\\n          ps[ 8] = ps[7]; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3;\\n          ps[ 4] = tmp2;  ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4;\\n          ps[ 0] = tmp1;  ps[ 1] = pi + 7; ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\\n          tmp1 = cs[3];\\n          cs[2] = cs[1]; cs[3] = ci;\\n          cs[0] = tmp1;  cs[1] = ci + 1;\\n          break;\\n        \u002F\u002F prettier-ignore\\n        case 3:\\n          ps[12] = ps[0];  ps[13] = pi + 0;  ps[14] = pi + 1;  ps[15] = pi + 2;\\n          ps[ 8] = ps[1];  ps[ 9] = pi + 9;  ps[10] = pi + 10; ps[11] = pi + 3;\\n          ps[ 4] = ps[2];  ps[ 5] = pi + 8;  ps[ 6] = pi + 11; ps[ 7] = pi + 4;\\n          ps[ 0] = ps[3];  ps[ 1] = pi + 7;  ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\\n          cs[2] = cs[0]; cs[3] = ci;\\n          cs[0] = cs[1]; cs[1] = ci + 1;\\n          break;\\n      }\\n      this.figures.push({\\n        type: \\\"patch\\\",\\n        coords: new Int32Array(ps), \u002F\u002F making copies of ps and cs\\n        colors: new Int32Array(cs),\\n      });\\n    }\\n  }\\n\\n  _buildFigureFromPatch(index) {\\n    const figure = this.figures[index];\\n    assert(figure.type === \\\"patch\\\", \\\"Unexpected patch mesh figure\\\");\\n\\n    const coords = this.coords,\\n      colors = this.colors;\\n    const pi = figure.coords;\\n    const ci = figure.colors;\\n\\n    const figureMinX = Math.min(\\n      coords[pi[0]][0],\\n      coords[pi[3]][0],\\n      coords[pi[12]][0],\\n      coords[pi[15]][0]\\n    );\\n    const figureMinY = Math.min(\\n      coords[pi[0]][1],\\n      coords[pi[3]][1],\\n      coords[pi[12]][1],\\n      coords[pi[15]][1]\\n    );\\n    const figureMaxX = Math.max(\\n      coords[pi[0]][0],\\n      coords[pi[3]][0],\\n      coords[pi[12]][0],\\n      coords[pi[15]][0]\\n    );\\n    const figureMaxY = Math.max(\\n      coords[pi[0]][1],\\n      coords[pi[3]][1],\\n      coords[pi[12]][1],\\n      coords[pi[15]][1]\\n    );\\n    let splitXBy = Math.ceil(\\n      ((figureMaxX - figureMinX) * MeshShading.TRIANGLE_DENSITY) \u002F\\n        (this.bounds[2] - this.bounds[0])\\n    );\\n    splitXBy = Math.max(\\n      MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\\n      Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy)\\n    );\\n    let splitYBy = Math.ceil(\\n      ((figureMaxY - figureMinY) * MeshShading.TRIANGLE_DENSITY) \u002F\\n        (this.bounds[3] - this.bounds[1])\\n    );\\n    splitYBy = Math.max(\\n      MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\\n      Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy)\\n    );\\n\\n    const verticesPerRow = splitXBy + 1;\\n    const figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow);\\n    const figureColors = new Int32Array((splitYBy + 1) * verticesPerRow);\\n    let k = 0;\\n    const cl = new Uint8Array(3),\\n      cr = new Uint8Array(3);\\n    const c0 = colors[ci[0]],\\n      c1 = colors[ci[1]],\\n      c2 = colors[ci[2]],\\n      c3 = colors[ci[3]];\\n    const bRow = getB(splitYBy),\\n      bCol = getB(splitXBy);\\n    for (let row = 0; row \u003C= splitYBy; row++) {\\n      cl[0] = ((c0[0] * (splitYBy - row) + c2[0] * row) \u002F splitYBy) | 0;\\n      cl[1] = ((c0[1] * (splitYBy - row) + c2[1] * row) \u002F splitYBy) | 0;\\n      cl[2] = ((c0[2] * (splitYBy - row) + c2[2] * row) \u002F splitYBy) | 0;\\n\\n      cr[0] = ((c1[0] * (splitYBy - row) + c3[0] * row) \u002F splitYBy) | 0;\\n      cr[1] = ((c1[1] * (splitYBy - row) + c3[1] * row) \u002F splitYBy) | 0;\\n      cr[2] = ((c1[2] * (splitYBy - row) + c3[2] * row) \u002F splitYBy) | 0;\\n\\n      for (let col = 0; col \u003C= splitXBy; col++, k++) {\\n        if (\\n          (row === 0 || row === splitYBy) &&\\n          (col === 0 || col === splitXBy)\\n        ) {\\n          continue;\\n        }\\n        let x = 0,\\n          y = 0;\\n        let q = 0;\\n        for (let i = 0; i \u003C= 3; i++) {\\n          for (let j = 0; j \u003C= 3; j++, q++) {\\n            const m = bRow[row][i] * bCol[col][j];\\n            x += coords[pi[q]][0] * m;\\n            y += coords[pi[q]][1] * m;\\n          }\\n        }\\n        figureCoords[k] = coords.length;\\n        coords.push([x, y]);\\n        figureColors[k] = colors.length;\\n        const newColor = new Uint8Array(3);\\n        newColor[0] = ((cl[0] * (splitXBy - col) + cr[0] * col) \u002F splitXBy) | 0;\\n        newColor[1] = ((cl[1] * (splitXBy - col) + cr[1] * col) \u002F splitXBy) | 0;\\n        newColor[2] = ((cl[2] * (splitXBy - col) + cr[2] * col) \u002F splitXBy) | 0;\\n        colors.push(newColor);\\n      }\\n    }\\n    figureCoords[0] = pi[0];\\n    figureColors[0] = ci[0];\\n    figureCoords[splitXBy] = pi[3];\\n    figureColors[splitXBy] = ci[1];\\n    figureCoords[verticesPerRow * splitYBy] = pi[12];\\n    figureColors[verticesPerRow * splitYBy] = ci[2];\\n    figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15];\\n    figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3];\\n\\n    this.figures[index] = {\\n      type: \\\"lattice\\\",\\n      coords: figureCoords,\\n      colors: figureColors,\\n      verticesPerRow,\\n    };\\n  }\\n\\n  _updateBounds() {\\n    let minX = this.coords[0][0],\\n      minY = this.coords[0][1],\\n      maxX = minX,\\n      maxY = minY;\\n    for (let i = 1, ii = this.coords.length; i \u003C ii; i++) {\\n      const x = this.coords[i][0],\\n        y = this.coords[i][1];\\n      minX = minX > x ? x : minX;\\n      minY = minY > y ? y : minY;\\n      maxX = maxX \u003C x ? x : maxX;\\n      maxY = maxY \u003C y ? y : maxY;\\n    }\\n    this.bounds = [minX, minY, maxX, maxY];\\n  }\\n\\n  _packData() {\\n    let i, ii, j, jj;\\n\\n    const coords = this.coords;\\n    const coordsPacked = new Float32Array(coords.length * 2);\\n    for (i = 0, j = 0, ii = coords.length; i \u003C ii; i++) {\\n      const xy = coords[i];\\n      coordsPacked[j++] = xy[0];\\n      coordsPacked[j++] = xy[1];\\n    }\\n    this.coords = coordsPacked;\\n\\n    const colors = this.colors;\\n    const colorsPacked = new Uint8Array(colors.length * 3);\\n    for (i = 0, j = 0, ii = colors.length; i \u003C ii; i++) {\\n      const c = colors[i];\\n      colorsPacked[j++] = c[0];\\n      colorsPacked[j++] = c[1];\\n      colorsPacked[j++] = c[2];\\n    }\\n    this.colors = colorsPacked;\\n\\n    const figures = this.figures;\\n    for (i = 0, ii = figures.length; i \u003C ii; i++) {\\n      const figure = figures[i],\\n        ps = figure.coords,\\n        cs = figure.colors;\\n      for (j = 0, jj = ps.length; j \u003C jj; j++) {\\n        ps[j] *= 2;\\n        cs[j] *= 3;\\n      }\\n    }\\n  }\\n\\n  getIR() {\\n    const { bounds } = this;\\n    \u002F\u002F Ensure that the shading has non-zero width and height, to prevent errors\\n    \u002F\u002F in `pattern_helper.js` (fixes issue17848.pdf).\\n    if (bounds[2] - bounds[0] === 0 || bounds[3] - bounds[1] === 0) {\\n      throw new FormatError(`Invalid MeshShading bounds: [${bounds}].`);\\n    }\\n\\n    return [\\n      \\\"Mesh\\\",\\n      this.shadingType,\\n      this.coords,\\n      this.colors,\\n      this.figures,\\n      bounds,\\n      this.bbox,\\n      this.background,\\n    ];\\n  }\\n}\\n\\nclass DummyShading extends BaseShading {\\n  getIR() {\\n    return [\\\"Dummy\\\"];\\n  }\\n}\\n\\nfunction getTilingPatternIR(operatorList, dict, color) {\\n  const matrix = lookupMatrix(dict.getArray(\\\"Matrix\\\"), IDENTITY_MATRIX);\\n  const bbox = lookupNormalRect(dict.getArray(\\\"BBox\\\"), null);\\n  \u002F\u002F Ensure that the pattern has a non-zero width and height, to prevent errors\\n  \u002F\u002F in `pattern_helper.js` (fixes issue8330.pdf).\\n  if (!bbox || bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) {\\n    throw new FormatError(`Invalid getTilingPatternIR \u002FBBox array.`);\\n  }\\n  const xstep = dict.get(\\\"XStep\\\");\\n  if (typeof xstep !== \\\"number\\\") {\\n    throw new FormatError(`Invalid getTilingPatternIR \u002FXStep value.`);\\n  }\\n  const ystep = dict.get(\\\"YStep\\\");\\n  if (typeof ystep !== \\\"number\\\") {\\n    throw new FormatError(`Invalid getTilingPatternIR \u002FYStep value.`);\\n  }\\n  const paintType = dict.get(\\\"PaintType\\\");\\n  if (!Number.isInteger(paintType)) {\\n    throw new FormatError(`Invalid getTilingPatternIR \u002FPaintType value.`);\\n  }\\n  const tilingType = dict.get(\\\"TilingType\\\");\\n  if (!Number.isInteger(tilingType)) {\\n    throw new FormatError(`Invalid getTilingPatternIR \u002FTilingType value.`);\\n  }\\n\\n  return [\\n    \\\"TilingPattern\\\",\\n    color,\\n    operatorList,\\n    matrix,\\n    bbox,\\n    xstep,\\n    ystep,\\n    paintType,\\n    tilingType,\\n  ];\\n}\\n\\nexport { clearPatternCaches, getTilingPatternIR, Pattern };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F Factors to rescale LiberationSans-Bold.ttf to have the same\\n\u002F\u002F metrics as calibrib.ttf.\\nconst CalibriBoldFactors = [\\n  1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566,\\n  0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.54657,\\n  0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\\n  0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859,\\n  0.92138, 0.83908, 0.7762, 0.73293, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356,\\n  0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.9121, 0.86943, 0.79795,\\n  0.88198, 0.77958, 0.70864, 0.81055, 0.90399, 0.88653, 0.96017, 0.82577,\\n  0.77892, 0.78257, 0.97507, 1.54657, 0.97507, 0.85284, 0.89552, 0.90176,\\n  0.88762, 0.8785, 0.75241, 0.8785, 0.90518, 0.95015, 0.77618, 0.8785, 0.88401,\\n  0.91916, 0.86304, 0.88401, 0.91488, 0.8785, 0.8801, 0.8785, 0.8785, 0.91343,\\n  0.7173, 1.04106, 0.8785, 0.85075, 0.95794, 0.82616, 0.85162, 0.79492, 0.88331,\\n  1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133,\\n  1.7801, 0.89552, 1.24487, 1.13254, 1.12401, 0.96839, 0.85284, 0.68787,\\n  0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056,\\n  0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133, 0.75859, 0.83908,\\n  0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.73293, 0.73133,\\n  0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506,\\n  0.9121, 0.86943, 0.86943, 0.86943, 0.86943, 0.86943, 0.85284, 0.87508,\\n  0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.88762,\\n  0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.8715, 0.75241, 0.90518,\\n  0.90518, 0.90518, 0.90518, 0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.8785,\\n  0.8801, 0.8801, 0.8801, 0.8801, 0.8801, 0.90747, 0.89049, 0.8785, 0.8785,\\n  0.8785, 0.8785, 0.85162, 0.8785, 0.85162, 0.83908, 0.88762, 0.83908, 0.88762,\\n  0.83908, 0.88762, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241,\\n  0.73293, 0.75241, 0.87289, 0.83016, 0.88506, 0.93125, 0.73133, 0.90518,\\n  0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518,\\n  0.81921, 0.77618, 0.81921, 0.77618, 0.81921, 0.77618, 1, 1, 0.87356, 0.8785,\\n  0.91075, 0.89608, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401,\\n  0.95958, 0.88401, 0.95958, 0.88401, 0.76229, 0.90167, 0.59526, 0.91916, 1, 1,\\n  0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.79468, 0.91926, 0.88175, 0.70823,\\n  0.94903, 0.9121, 0.8785, 1, 1, 0.9121, 0.8785, 0.87802, 0.88656, 0.8785,\\n  0.86943, 0.8801, 0.86943, 0.8801, 0.86943, 0.8801, 0.87402, 0.89291, 0.77958,\\n  0.91343, 1, 1, 0.77958, 0.91343, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864,\\n  0.7173, 0.70864, 0.7173, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399,\\n  0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785,\\n  0.90399, 0.8785, 0.96017, 0.95794, 0.77892, 0.85162, 0.77892, 0.78257,\\n  0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908,\\n  0.88762, 0.77539, 0.8715, 0.87508, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528,\\n  1.20528, 1, 1.15543, 0.70674, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161,\\n  1.06303, 0.83908, 0.80352, 0.57184, 0.6965, 0.56289, 0.82001, 0.56029,\\n  0.81235, 1.02988, 0.83908, 0.7762, 0.68156, 0.80367, 0.73133, 0.78257,\\n  0.87356, 0.86943, 0.95958, 0.75727, 0.89019, 1.04924, 0.9121, 0.7648, 0.86943,\\n  0.87356, 0.79795, 0.78275, 0.81055, 0.77892, 0.9762, 0.82577, 0.99819,\\n  0.84896, 0.95958, 0.77892, 0.96108, 1.01407, 0.89049, 1.02988, 0.94211,\\n  0.96108, 0.8936, 0.84021, 0.87842, 0.96399, 0.79109, 0.89049, 1.00813,\\n  1.02988, 0.86077, 0.87445, 0.92099, 0.84723, 0.86513, 0.8801, 0.75638,\\n  0.85714, 0.78216, 0.79586, 0.87965, 0.94211, 0.97747, 0.78287, 0.97926,\\n  0.84971, 1.02988, 0.94211, 0.8801, 0.94211, 0.84971, 0.73133, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 0.90264, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  0.90518, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90548, 1, 1, 1, 1, 1, 1,\\n  0.96017, 0.95794, 0.96017, 0.95794, 0.96017, 0.95794, 0.77892, 0.85162, 1, 1,\\n  0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.92794, 0.87012,\\n  0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71143, 1.06152, 1, 1, 1.03372,\\n  1.03372, 0.97171, 1.4956, 2.2807, 0.93835, 0.83406, 0.91133, 0.84107, 0.91133,\\n  1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90527,\\n  1.81055, 0.90527, 1.81055, 1.31006, 1.53711, 0.94434, 1.08696, 1, 0.95018,\\n  0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747,\\n  0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572,\\n  0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1,\\n  0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n];\\nconst CalibriBoldMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\\n\\n\u002F\u002F Factors to rescale LiberationSans-BoldItalic.ttf to have the same\\n\u002F\u002F metrics as calibriz.ttf.\\nconst CalibriBoldItalicFactors = [\\n  1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566,\\n  0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.56239,\\n  0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\\n  0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859,\\n  0.92138, 0.83908, 0.7762, 0.71805, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356,\\n  0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.90872, 0.85938, 0.79795,\\n  0.87068, 0.77958, 0.69766, 0.81055, 0.90399, 0.88653, 0.96068, 0.82577,\\n  0.77892, 0.78257, 0.97507, 1.529, 0.97507, 0.85284, 0.89552, 0.90176, 0.94908,\\n  0.86411, 0.74012, 0.86411, 0.88323, 0.95015, 0.86411, 0.86331, 0.88401,\\n  0.91916, 0.86304, 0.88401, 0.9039, 0.86331, 0.86331, 0.86411, 0.86411,\\n  0.90464, 0.70852, 1.04106, 0.86331, 0.84372, 0.95794, 0.82616, 0.84548,\\n  0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133,\\n  0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.19129, 0.96839,\\n  0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1,\\n  1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133,\\n  0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539,\\n  0.71805, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958,\\n  0.95958, 0.88506, 0.90872, 0.85938, 0.85938, 0.85938, 0.85938, 0.85938,\\n  0.85284, 0.87068, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795,\\n  0.90807, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.85887,\\n  0.74012, 0.88323, 0.88323, 0.88323, 0.88323, 0.88401, 0.88401, 0.88401,\\n  0.88401, 0.8785, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331,\\n  0.90747, 0.89049, 0.86331, 0.86331, 0.86331, 0.86331, 0.84548, 0.86411,\\n  0.84548, 0.83908, 0.94908, 0.83908, 0.94908, 0.83908, 0.94908, 0.71805,\\n  0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.87289,\\n  0.79538, 0.88506, 0.92726, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133,\\n  0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.81921, 0.86411, 0.81921,\\n  0.86411, 0.81921, 0.86411, 1, 1, 0.87356, 0.86331, 0.91075, 0.8777, 0.95958,\\n  0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958,\\n  0.88401, 0.76467, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401,\\n  1, 1, 0.70424, 0.77312, 0.91926, 0.88175, 0.70823, 0.94903, 0.90872, 0.86331,\\n  1, 1, 0.90872, 0.86331, 0.86906, 0.88116, 0.86331, 0.85938, 0.86331, 0.85938,\\n  0.86331, 0.85938, 0.86331, 0.87402, 0.86549, 0.77958, 0.90464, 1, 1, 0.77958,\\n  0.90464, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766,\\n  0.70852, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.86331, 0.90399,\\n  0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399,\\n  0.86331, 0.96068, 0.95794, 0.77892, 0.84548, 0.77892, 0.78257, 0.79492,\\n  0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.94908,\\n  0.77539, 0.85887, 0.87068, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528,\\n  1, 1.15543, 0.70088, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.48387,\\n  0.83908, 0.80352, 0.57118, 0.6965, 0.56347, 0.79179, 0.55853, 0.80346,\\n  1.02988, 0.83908, 0.7762, 0.67174, 0.86036, 0.73133, 0.78257, 0.87356,\\n  0.86441, 0.95958, 0.75727, 0.89019, 1.04924, 0.90872, 0.74889, 0.85938,\\n  0.87891, 0.79795, 0.7957, 0.81055, 0.77892, 0.97447, 0.82577, 0.97466,\\n  0.87179, 0.95958, 0.77892, 0.94252, 0.95612, 0.8753, 1.02988, 0.92733,\\n  0.94252, 0.87411, 0.84021, 0.8728, 0.95612, 0.74081, 0.8753, 1.02189, 1.02988,\\n  0.84814, 0.87445, 0.91822, 0.84723, 0.85668, 0.86331, 0.81344, 0.87581,\\n  0.76422, 0.82046, 0.96057, 0.92733, 0.99375, 0.78022, 0.95452, 0.86015,\\n  1.02988, 0.92733, 0.86331, 0.92733, 0.86015, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 0.90631, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.88323, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85174, 1, 1, 1, 1, 1, 1, 0.96068, 0.95794,\\n  0.96068, 0.95794, 0.96068, 0.95794, 0.77892, 0.84548, 1, 1, 0.89552, 0.90527,\\n  1, 0.90363, 0.92794, 0.92794, 0.92794, 0.89807, 0.87012, 0.87012, 0.87012,\\n  0.89552, 0.89552, 1.42259, 0.71094, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171,\\n  1.4956, 2.2807, 0.92972, 0.83406, 0.91133, 0.83326, 0.91133, 1, 1, 1, 0.72021,\\n  1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90616, 1.81055, 0.90527,\\n  1.81055, 1.3107, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284,\\n  0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356,\\n  0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572,\\n  0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1,\\n];\\nconst CalibriBoldItalicMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\\n\\n\u002F\u002F Factors to rescale LiberationSans-Italic.ttf to have the same\\n\u002F\u002F metrics as calibrii.ttf.\\nconst CalibriItalicFactors = [\\n  1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601,\\n  0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39543, 0.91133,\\n  0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\\n  0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071,\\n  0.8675, 0.81552, 0.72346, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685,\\n  0.6377, 0.77892, 0.75593, 1.02638, 0.89249, 0.84118, 0.77452, 0.85374,\\n  0.75186, 0.67789, 0.79776, 0.88844, 0.85066, 0.94309, 0.77818, 0.7306,\\n  0.76659, 1.10369, 1.38313, 1.10369, 1.06139, 0.89552, 0.8739, 0.9245, 0.9245,\\n  0.83203, 0.9245, 0.85865, 1.09842, 0.9245, 0.9245, 1.03297, 1.07692, 0.90918,\\n  1.03297, 0.94959, 0.9245, 0.92274, 0.9245, 0.9245, 1.02933, 0.77832, 1.20562,\\n  0.9245, 0.8916, 0.98986, 0.86621, 0.89453, 0.79004, 0.94152, 1.77256, 0.94152,\\n  0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552,\\n  1.17889, 1.13254, 1.16359, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737,\\n  0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642,\\n  0.92098, 0.76288, 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675,\\n  0.8675, 0.8675, 0.76318, 0.72346, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685,\\n  0.90685, 0.90685, 0.90685, 0.86477, 0.89249, 0.84118, 0.84118, 0.84118,\\n  0.84118, 0.84118, 0.85284, 0.84557, 0.88844, 0.88844, 0.88844, 0.88844,\\n  0.7306, 0.77452, 0.86331, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245,\\n  0.84843, 0.83203, 0.85865, 0.85865, 0.85865, 0.85865, 0.82601, 0.82601,\\n  0.82601, 0.82601, 0.94469, 0.9245, 0.92274, 0.92274, 0.92274, 0.92274,\\n  0.92274, 0.90747, 0.86651, 0.9245, 0.9245, 0.9245, 0.9245, 0.89453, 0.9245,\\n  0.89453, 0.8675, 0.9245, 0.8675, 0.9245, 0.8675, 0.9245, 0.72346, 0.83203,\\n  0.72346, 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.85193, 0.8875,\\n  0.86477, 0.99034, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865,\\n  0.73206, 0.85865, 0.73206, 0.85865, 0.81105, 0.9245, 0.81105, 0.9245, 0.81105,\\n  0.9245, 1, 1, 0.86275, 0.9245, 0.90872, 0.93591, 0.90685, 0.82601, 0.90685,\\n  0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77896,\\n  1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032,\\n  0.9375, 0.98156, 0.93407, 0.77261, 1.11429, 0.89249, 0.9245, 1, 1, 0.89249,\\n  0.9245, 0.92534, 0.86698, 0.9245, 0.84118, 0.92274, 0.84118, 0.92274, 0.84118,\\n  0.92274, 0.8667, 0.86291, 0.75186, 1.02933, 1, 1, 0.75186, 1.02933, 0.67789,\\n  0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 1, 1, 0.79776,\\n  0.97655, 0.79776, 1.23023, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245,\\n  0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.94309, 0.98986, 0.7306,\\n  0.89453, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004,\\n  1.09231, 0.54873, 0.8675, 0.9245, 0.76318, 0.84843, 0.84557, 0.86651, 1, 1,\\n  0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, 0.67009, 0.96334, 0.93695,\\n  1.35191, 1.40909, 0.95161, 1.48387, 0.8675, 0.90861, 0.6192, 0.7363, 0.64824,\\n  0.82411, 0.56321, 0.85696, 1.23516, 0.8675, 0.81552, 0.7286, 0.84134, 0.73206,\\n  0.76659, 0.86275, 0.84369, 0.90685, 0.77892, 0.85871, 1.02638, 0.89249,\\n  0.75828, 0.84118, 0.85984, 0.77452, 0.76466, 0.79776, 0.7306, 0.90782,\\n  0.77818, 0.903, 0.87291, 0.90685, 0.7306, 0.99058, 1.03667, 0.94635, 1.23516,\\n  0.9849, 0.99058, 0.92393, 0.8916, 0.942, 1.03667, 0.75026, 0.94635, 1.0297,\\n  1.23516, 0.90918, 0.94048, 0.98217, 0.89746, 0.84153, 0.92274, 0.82507,\\n  0.88832, 0.84438, 0.88178, 1.03525, 0.9849, 1.00225, 0.78086, 0.97248,\\n  0.89404, 1.23516, 0.9849, 0.92274, 0.9849, 0.89404, 0.73206, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 0.89693, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85865,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90933, 1, 1, 1, 1, 1, 1, 0.94309,\\n  0.98986, 0.94309, 0.98986, 0.94309, 0.98986, 0.7306, 0.89453, 1, 1, 0.89552,\\n  0.90527, 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566,\\n  1.2566, 0.89552, 0.89552, 1.42259, 0.68994, 1.03809, 1, 1, 1.0176, 1.0176,\\n  1.11523, 1.4956, 2.01462, 0.97858, 0.82616, 0.91133, 0.83437, 0.91133, 1, 1,\\n  1, 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90572, 1.81055,\\n  0.90749, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589,\\n  0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747,\\n  0.85284, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8,\\n  0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1,\\n  0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n];\\nconst CalibriItalicMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\\n\\n\u002F\u002F Factors to rescale LiberationSans-Regular.ttf to have the same\\n\u002F\u002F metrics as calibri.ttf.\\nconst CalibriRegularFactors = [\\n  1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601,\\n  0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39016, 0.91133,\\n  0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\\n  0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071,\\n  0.8675, 0.81552, 0.73834, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685,\\n  0.6377, 0.77892, 0.75593, 1.02638, 0.89385, 0.85122, 0.77452, 0.86503,\\n  0.75186, 0.68887, 0.79776, 0.88844, 0.85066, 0.94258, 0.77818, 0.7306,\\n  0.76659, 1.10369, 1.39016, 1.10369, 1.06139, 0.89552, 0.8739, 0.86128,\\n  0.94469, 0.8457, 0.94469, 0.89464, 1.09842, 0.84636, 0.94469, 1.03297,\\n  1.07692, 0.90918, 1.03297, 0.95897, 0.94469, 0.9482, 0.94469, 0.94469,\\n  1.04692, 0.78223, 1.20562, 0.94469, 0.90332, 0.98986, 0.86621, 0.90527,\\n  0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133,\\n  0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.08707, 0.92098,\\n  0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1,\\n  1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 0.80972,\\n  0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.73834,\\n  0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685,\\n  0.86477, 0.89385, 0.85122, 0.85122, 0.85122, 0.85122, 0.85122, 0.85284,\\n  0.85311, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331,\\n  0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.8693, 0.8457, 0.89464,\\n  0.89464, 0.89464, 0.89464, 0.82601, 0.82601, 0.82601, 0.82601, 0.94469,\\n  0.94469, 0.9482, 0.9482, 0.9482, 0.9482, 0.9482, 0.90747, 0.86651, 0.94469,\\n  0.94469, 0.94469, 0.94469, 0.90527, 0.94469, 0.90527, 0.8675, 0.86128, 0.8675,\\n  0.86128, 0.8675, 0.86128, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457,\\n  0.73834, 0.8457, 0.85193, 0.92454, 0.86477, 0.9921, 0.73206, 0.89464, 0.73206,\\n  0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.81105,\\n  0.84636, 0.81105, 0.84636, 0.81105, 0.84636, 1, 1, 0.86275, 0.94469, 0.90872,\\n  0.95786, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685,\\n  1.03297, 0.90685, 0.82601, 0.77741, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918,\\n  0.75593, 1.03297, 1, 1, 0.76032, 0.90452, 0.98156, 1.11842, 0.77261, 1.11429,\\n  0.89385, 0.94469, 1, 1, 0.89385, 0.94469, 0.95877, 0.86901, 0.94469, 0.85122,\\n  0.9482, 0.85122, 0.9482, 0.85122, 0.9482, 0.8667, 0.90016, 0.75186, 1.04692,\\n  1, 1, 0.75186, 1.04692, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223,\\n  0.68887, 0.78223, 1, 1, 0.79776, 0.92188, 0.79776, 1.23023, 0.88844, 0.94469,\\n  0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469,\\n  0.88844, 0.94469, 0.94258, 0.98986, 0.7306, 0.90527, 0.7306, 0.76659, 0.79004,\\n  0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.86128,\\n  0.76318, 0.8693, 0.85311, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622,\\n  1, 1.1437, 0.67742, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387,\\n  0.86686, 0.90861, 0.62267, 0.74359, 0.65649, 0.85498, 0.56963, 0.88254,\\n  1.23516, 0.8675, 0.81552, 0.75443, 0.84503, 0.73206, 0.76659, 0.86275,\\n  0.85122, 0.90685, 0.77892, 0.85746, 1.02638, 0.89385, 0.75657, 0.85122,\\n  0.86275, 0.77452, 0.74171, 0.79776, 0.7306, 0.95165, 0.77818, 0.89772,\\n  0.88831, 0.90685, 0.7306, 0.98142, 1.02191, 0.96576, 1.23516, 0.99018,\\n  0.98142, 0.9236, 0.89258, 0.94035, 1.02191, 0.78848, 0.96576, 0.9561, 1.23516,\\n  0.90918, 0.92578, 0.95424, 0.89746, 0.83969, 0.9482, 0.80113, 0.89442,\\n  0.85208, 0.86155, 0.98022, 0.99018, 1.00452, 0.81209, 0.99247, 0.89181,\\n  1.23516, 0.99018, 0.9482, 0.99018, 0.89181, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 0.88844, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89464, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96766, 1, 1, 1, 1, 1, 1, 0.94258, 0.98986,\\n  0.94258, 0.98986, 0.94258, 0.98986, 0.7306, 0.90527, 1, 1, 0.89552, 0.90527,\\n  1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566,\\n  0.89552, 0.89552, 1.42259, 0.69043, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523,\\n  1.4956, 2.01462, 0.99331, 0.82616, 0.91133, 0.84286, 0.91133, 1, 1, 1,\\n  0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90527, 1.81055,\\n  0.90527, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589,\\n  0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747,\\n  0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8,\\n  0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1,\\n  0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1,\\n  1.07185, 0.99413, 0.96334, 1.08065, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n];\\nconst CalibriRegularMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\\n\\nexport {\\n  CalibriBoldFactors,\\n  CalibriBoldItalicFactors,\\n  CalibriBoldItalicMetrics,\\n  CalibriBoldMetrics,\\n  CalibriItalicFactors,\\n  CalibriItalicMetrics,\\n  CalibriRegularFactors,\\n  CalibriRegularMetrics,\\n};\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F Factors to rescale LiberationSans-Bold.ttf to have the same\\n\u002F\u002F metrics as NimbusSans-Bold.otf.\\nconst HelveticaBoldFactors = [\\n  0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977,\\n  1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\\n  0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\\n  0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999,\\n  0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\\n  1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001,\\n  1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001,\\n  1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998,\\n  0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026,\\n  1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026,\\n  0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1,\\n  0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973,\\n  0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003,\\n  1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006,\\n  0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977,\\n  0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001,\\n  1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022,\\n  1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977,\\n  0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973,\\n  0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973,\\n  0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026,\\n  1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026,\\n  1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\\n  0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\\n  0.99977, 0.99973, 0.99977, 1.03374, 0.99977, 1.00026, 1.00001, 0.99973,\\n  1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\\n  1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\\n  0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006,\\n  1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.00042, 0.99973, 0.99973, 1.0006,\\n  0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.03828,\\n  1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026,\\n  0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\\n  1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977,\\n  0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\\n  0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977,\\n  1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977,\\n  1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001,\\n  1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1,\\n  0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998,\\n  0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\\n  0.99998, 1.00034, 0.99977, 1, 0.99997, 1.00026, 1.00078, 1.00036, 0.99973,\\n  1.00013, 1.0006, 0.99977, 0.99977, 0.99988, 0.85148, 1.00001, 1.00026,\\n  0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 1.00069,\\n  1.00022, 0.99977, 1.00001, 0.99984, 1.00026, 1.00001, 1.00024, 1.00001,\\n  0.9999, 1, 1.0006, 1.00001, 1.00041, 0.99962, 1.00026, 1.0006, 0.99995,\\n  1.00041, 0.99942, 0.99973, 0.99927, 1.00082, 0.99902, 1.00026, 1.00087,\\n  1.0006, 1.00069, 0.99973, 0.99867, 0.99973, 0.9993, 1.00026, 1.00049, 1.00056,\\n  1, 0.99988, 0.99935, 0.99995, 0.99954, 1.00055, 0.99945, 1.00032, 1.0006,\\n  0.99995, 1.00026, 0.99995, 1.00032, 1.00001, 1.00008, 0.99971, 1.00019,\\n  0.9994, 1.00001, 1.0006, 1.00044, 0.99973, 1.00023, 1.00047, 1, 0.99942,\\n  0.99561, 0.99989, 1.00035, 0.99977, 1.00035, 0.99977, 1.00019, 0.99944,\\n  1.00001, 1.00021, 0.99926, 1.00035, 1.00035, 0.99942, 1.00048, 0.99999,\\n  0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.99989, 1.00057,\\n  1.00001, 0.99936, 1.00052, 1.00012, 0.99996, 1.00043, 1, 1.00035, 0.9994,\\n  0.99976, 1.00035, 0.99973, 1.00052, 1.00041, 1.00119, 1.00037, 0.99973,\\n  1.00002, 0.99986, 1.00041, 1.00041, 0.99902, 0.9996, 1.00034, 0.99999,\\n  1.00026, 0.99999, 1.00026, 0.99973, 1.00052, 0.99973, 1, 0.99973, 1.00041,\\n  1.00075, 0.9994, 1.0003, 0.99999, 1, 1.00041, 0.99955, 1, 0.99915, 0.99973,\\n  0.99973, 1.00026, 1.00119, 0.99955, 0.99973, 1.0006, 0.99911, 1.0006, 1.00026,\\n  0.99972, 1.00026, 0.99902, 1.00041, 0.99973, 0.99999, 1, 1, 1.00038, 1.0005,\\n  1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1,\\n  0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973,\\n  0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998,\\n  1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 1.00047, 1.00023, 1,\\n  0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1,\\n  0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027,\\n  1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999,\\n  0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625,\\n  0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972,\\n  0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1,\\n  0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998,\\n  0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n];\\nconst HelveticaBoldMetrics = { lineHeight: 1.2, lineGap: 0.2 };\\n\\n\u002F\u002F Factors to rescale LiberationSans-BoldItalic.ttf to have the same\\n\u002F\u002F metrics as NimbusSans-BoldItalic.otf.\\nconst HelveticaBoldItalicFactors = [\\n  0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977,\\n  1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\\n  0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\\n  0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999,\\n  0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\\n  1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001,\\n  1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001,\\n  1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998,\\n  0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026,\\n  1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026,\\n  0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1,\\n  0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973,\\n  0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003,\\n  1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006,\\n  0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977,\\n  0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001,\\n  1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022,\\n  1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977,\\n  0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973,\\n  0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973,\\n  0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026,\\n  1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026,\\n  1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\\n  0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\\n  0.99977, 0.99973, 0.99977, 1.0044, 0.99977, 1.00026, 1.00001, 0.99973,\\n  1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\\n  1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\\n  0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006,\\n  1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99971, 0.99973, 0.99973, 1.0006,\\n  0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.01011,\\n  1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026,\\n  0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\\n  1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977,\\n  0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\\n  0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977,\\n  1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977,\\n  1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001,\\n  1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1,\\n  0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998,\\n  0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\\n  0.99998, 0.99998, 0.99977, 1, 1, 1.00026, 0.99969, 0.99972, 0.99981, 0.9998,\\n  1.0006, 0.99977, 0.99977, 1.00022, 0.91155, 1.00001, 1.00026, 0.99977,\\n  1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 0.99966, 1.00022,\\n  1.00032, 1.00001, 0.99944, 1.00026, 1.00001, 0.99968, 1.00001, 1.00047, 1,\\n  1.0006, 1.00001, 0.99981, 1.00101, 1.00026, 1.0006, 0.99948, 0.99981, 1.00064,\\n  0.99973, 0.99942, 1.00101, 1.00061, 1.00026, 1.00069, 1.0006, 1.00014,\\n  0.99973, 1.01322, 0.99973, 1.00065, 1.00026, 1.00012, 0.99923, 1, 1.00064,\\n  1.00076, 0.99948, 1.00055, 1.00063, 1.00007, 0.99943, 1.0006, 0.99948,\\n  1.00026, 0.99948, 0.99943, 1.00001, 1.00001, 1.00029, 1.00038, 1.00035,\\n  1.00001, 1.0006, 1.0006, 0.99973, 0.99978, 1.00001, 1.00057, 0.99989, 0.99967,\\n  0.99964, 0.99967, 0.99977, 0.99999, 0.99977, 1.00038, 0.99977, 1.00001,\\n  0.99973, 1.00066, 0.99967, 0.99967, 1.00041, 0.99998, 0.99999, 0.99977,\\n  1.00022, 0.99967, 1.00001, 0.99977, 1.00026, 0.99964, 1.00031, 1.00001,\\n  0.99999, 0.99999, 1, 1.00023, 1, 1, 0.99999, 1.00035, 1.00001, 0.99999,\\n  0.99973, 0.99977, 0.99999, 1.00058, 0.99973, 0.99973, 0.99955, 0.9995,\\n  1.00026, 1.00026, 1.00032, 0.99989, 1.00034, 0.99999, 1.00026, 1.00026,\\n  1.00026, 0.99973, 0.45998, 0.99973, 1.00026, 0.99973, 1.00001, 0.99999,\\n  0.99982, 0.99994, 0.99996, 1, 1.00042, 1.00044, 1.00029, 1.00023, 0.99973,\\n  0.99973, 1.00026, 0.99949, 1.00002, 0.99973, 1.0006, 1.0006, 1.0006, 0.99975,\\n  1.00026, 1.00026, 1.00032, 0.98685, 0.99973, 1.00026, 1, 1, 0.99966, 1.00044,\\n  1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1,\\n  0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973,\\n  0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998,\\n  1.66475, 1, 0.99973, 0.99973, 1, 0.99973, 0.99971, 0.99978, 1, 1, 0.99991,\\n  0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00098, 1, 1, 1, 1.00049, 1, 1,\\n  0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027,\\n  1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999,\\n  0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625,\\n  0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972,\\n  0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1,\\n  0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998,\\n  0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n];\\nconst HelveticaBoldItalicMetrics = { lineHeight: 1.35, lineGap: 0.2 };\\n\\n\u002F\u002F Factors to rescale LiberationSans-Italic.ttf to have the same\\n\u002F\u002F metrics as NimbusSans-Italic.otf.\\nconst HelveticaItalicFactors = [\\n  0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001,\\n  1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\\n  0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\\n  0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987,\\n  1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\\n  1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022,\\n  0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001,\\n  1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973,\\n  1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924,\\n  0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1,\\n  0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973,\\n  0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968,\\n  0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1,\\n  0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002,\\n  1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977,\\n  1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977,\\n  0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022,\\n  0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973,\\n  0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973,\\n  0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973,\\n  0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973,\\n  0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\\n  0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.0288,\\n  0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\\n  1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973,\\n  1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\\n  1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006,\\n  1.0006, 0.99946, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924,\\n  0.99973, 0.99924, 0.99973, 1.06311, 0.99973, 1.00024, 0.99973, 0.99924,\\n  0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00041, 0.9998,\\n  0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016,\\n  0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1,\\n  1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.89547, 1.00026, 1.0006,\\n  0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\\n  0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001,\\n  1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1,\\n  0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998,\\n  0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\\n  0.99998, 1.00001, 1, 1.00054, 0.99977, 1.00084, 1.00007, 0.99973, 1.00013,\\n  0.99924, 1.00001, 1.00001, 0.99945, 0.91221, 1.00001, 1.00026, 0.99977,\\n  1.00022, 1.0006, 1.00001, 1.00001, 0.99999, 0.99977, 0.99933, 1.00022,\\n  1.00054, 1.00001, 1.00065, 1.00026, 1.00001, 1.0001, 1.00001, 1.00052, 1,\\n  1.0006, 1.00001, 0.99945, 0.99897, 0.99968, 0.99924, 1.00036, 0.99945,\\n  0.99949, 1, 1.0006, 0.99897, 0.99918, 0.99968, 0.99911, 0.99924, 1, 0.99962,\\n  1.01487, 1, 1.0005, 0.99973, 1.00012, 1.00043, 1, 0.99995, 0.99994, 1.00036,\\n  0.99947, 1.00019, 1.00063, 1.00025, 0.99924, 1.00036, 0.99973, 1.00036,\\n  1.00025, 1.00001, 1.00001, 1.00027, 1.0001, 1.00068, 1.00001, 1.0006, 1.0006,\\n  1, 1.00008, 0.99957, 0.99972, 0.9994, 0.99954, 0.99975, 1.00051, 1.00001,\\n  1.00019, 1.00001, 1.0001, 0.99986, 1.00001, 1.00001, 1.00038, 0.99954,\\n  0.99954, 0.9994, 1.00066, 0.99999, 0.99977, 1.00022, 1.00054, 1.00001,\\n  0.99977, 1.00026, 0.99975, 1.0001, 1.00001, 0.99993, 0.9995, 0.99955, 1.00016,\\n  0.99978, 0.99974, 1.00019, 1.00022, 0.99955, 1.00053, 0.99973, 1.00089,\\n  1.00005, 0.99967, 1.00048, 0.99973, 1.00002, 1.00034, 0.99973, 0.99973,\\n  0.99964, 1.00006, 1.00066, 0.99947, 0.99973, 0.98894, 0.99973, 1, 0.44898, 1,\\n  0.99946, 1, 1.00039, 1.00082, 0.99991, 0.99991, 0.99985, 1.00022, 1.00023,\\n  1.00061, 1.00006, 0.99966, 0.99973, 0.99973, 0.99973, 1.00019, 1.0008, 1,\\n  0.99924, 0.99924, 0.99924, 0.99983, 1.00044, 0.99973, 0.99964, 0.98332, 1,\\n  0.99973, 1, 1, 0.99962, 0.99895, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016,\\n  0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924,\\n  0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267,\\n  0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023,\\n  0.99973, 1.00423, 0.99925, 0.99999, 1, 0.99991, 0.99984, 1.00002, 1.00002,\\n  1.00002, 1.00002, 1.00049, 1, 1.00245, 1, 1, 1, 1, 0.96329, 1, 1.20985,\\n  1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031,\\n  1.00003, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861,\\n  0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999,\\n  0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962,\\n  1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n];\\nconst HelveticaItalicMetrics = { lineHeight: 1.35, lineGap: 0.2 };\\n\\n\u002F\u002F Factors to rescale LiberationSans-Regular.ttf to have the same\\n\u002F\u002F metrics as NimbusSans-Regular.otf.\\nconst HelveticaRegularFactors = [\\n  0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001,\\n  1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\\n  0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\\n  0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987,\\n  1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\\n  1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022,\\n  0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001,\\n  1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973,\\n  1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924,\\n  0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1,\\n  0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973,\\n  0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968,\\n  0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1,\\n  0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002,\\n  1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977,\\n  1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977,\\n  0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022,\\n  0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973,\\n  0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973,\\n  0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973,\\n  0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973,\\n  0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\\n  0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.04596,\\n  0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\\n  1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973,\\n  1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\\n  1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006,\\n  1.0006, 1.00019, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924,\\n  0.99973, 0.99924, 0.99973, 1.02572, 0.99973, 1.00005, 0.99973, 0.99924,\\n  0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99999, 0.9998,\\n  0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016,\\n  0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1,\\n  1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.84533, 1.00026, 1.0006,\\n  0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\\n  0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001,\\n  1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1,\\n  0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998,\\n  0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\\n  0.99998, 0.99928, 1, 0.99977, 1.00013, 1.00055, 0.99947, 0.99945, 0.99941,\\n  0.99924, 1.00001, 1.00001, 1.0004, 0.91621, 1.00001, 1.00026, 0.99977,\\n  1.00022, 1.0006, 1.00001, 1.00005, 0.99999, 0.99977, 1.00015, 1.00022,\\n  0.99977, 1.00001, 0.99973, 1.00026, 1.00001, 1.00019, 1.00001, 0.99946, 1,\\n  1.0006, 1.00001, 0.99978, 1.00045, 0.99973, 0.99924, 1.00023, 0.99978,\\n  0.99966, 1, 1.00065, 1.00045, 1.00019, 0.99973, 0.99973, 0.99924, 1, 1,\\n  0.96499, 1, 1.00055, 0.99973, 1.00008, 1.00027, 1, 0.9997, 0.99995, 1.00023,\\n  0.99933, 1.00019, 1.00015, 1.00031, 0.99924, 1.00023, 0.99973, 1.00023,\\n  1.00031, 1.00001, 0.99928, 1.00029, 1.00092, 1.00035, 1.00001, 1.0006, 1.0006,\\n  1, 0.99988, 0.99975, 1, 1.00082, 0.99561, 0.9996, 1.00035, 1.00001, 0.99962,\\n  1.00001, 1.00092, 0.99964, 1.00001, 0.99963, 0.99999, 1.00035, 1.00035,\\n  1.00082, 0.99962, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977,\\n  1.00026, 0.9996, 0.99967, 1.00001, 1.00034, 1.00074, 1.00054, 1.00053,\\n  1.00063, 0.99971, 0.99962, 1.00035, 0.99975, 0.99977, 0.99973, 1.00043,\\n  0.99953, 1.0007, 0.99915, 0.99973, 1.00008, 0.99892, 1.00073, 1.00073,\\n  1.00114, 0.99915, 1.00073, 0.99955, 0.99973, 1.00092, 0.99973, 1, 0.99998, 1,\\n  1.0003, 1, 1.00043, 1.00001, 0.99969, 1.0003, 1, 1.00035, 1.00001, 0.9995, 1,\\n  1.00092, 0.99973, 0.99973, 0.99973, 1.0007, 0.9995, 1, 0.99924, 1.0006,\\n  0.99924, 0.99972, 1.00062, 0.99973, 1.00114, 1.00073, 1, 0.99955, 1, 1,\\n  1.00047, 0.99968, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977,\\n  1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924,\\n  0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999,\\n  0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973,\\n  0.99971, 0.99925, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002,\\n  1.00002, 1, 1, 1, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254,\\n  1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031,\\n  0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026,\\n  1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1,\\n  0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n];\\nconst HelveticaRegularMetrics = { lineHeight: 1.2, lineGap: 0.2 };\\n\\nexport {\\n  HelveticaBoldFactors,\\n  HelveticaBoldItalicFactors,\\n  HelveticaBoldItalicMetrics,\\n  HelveticaBoldMetrics,\\n  HelveticaItalicFactors,\\n  HelveticaItalicMetrics,\\n  HelveticaRegularFactors,\\n  HelveticaRegularMetrics,\\n};\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F Widths of glyphs in LiberationSans-Bold.ttf.\\nconst LiberationSansBoldWidths = [\\n  365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278,\\n  333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333,\\n  584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556,\\n  722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\\n  611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611,\\n  278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778,\\n  556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333,\\n  737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333,\\n  333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722,\\n  667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\\n  584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\\n  889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611,\\n  611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556,\\n  722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 719, 722, 611, 667,\\n  556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611,\\n  778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278,\\n  278, 785, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 385, 611,\\n  479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778,\\n  611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556,\\n  667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722,\\n  611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611,\\n  500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333,\\n  333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 465, 722, 333, 853, 906,\\n  474, 825, 927, 838, 278, 722, 722, 601, 719, 667, 611, 722, 778, 278, 722,\\n  667, 833, 722, 644, 778, 722, 667, 600, 611, 667, 821, 667, 809, 802, 278,\\n  667, 615, 451, 611, 278, 582, 615, 610, 556, 606, 475, 460, 611, 541, 278,\\n  558, 556, 612, 556, 445, 611, 766, 619, 520, 684, 446, 582, 715, 576, 753,\\n  845, 278, 582, 611, 582, 845, 667, 669, 885, 567, 711, 667, 278, 276, 556,\\n  1094, 1062, 875, 610, 722, 622, 719, 722, 719, 722, 567, 712, 667, 904, 626,\\n  719, 719, 610, 702, 833, 722, 778, 719, 667, 722, 611, 622, 854, 667, 730,\\n  703, 1005, 1019, 870, 979, 719, 711, 1031, 719, 556, 618, 615, 417, 635, 556,\\n  709, 497, 615, 615, 500, 635, 740, 604, 611, 604, 611, 556, 490, 556, 875,\\n  556, 615, 581, 833, 844, 729, 854, 615, 552, 854, 583, 556, 556, 611, 417,\\n  552, 556, 278, 281, 278, 969, 906, 611, 500, 615, 556, 604, 778, 611, 487,\\n  447, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552,\\n  278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333,\\n  333, 604, 333, 167, 396, 556, 556, 1094, 556, 885, 489, 1115, 1000, 768, 600,\\n  834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\\n  584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\\n  708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\\n  708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\\n  604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\\n  611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333,\\n  333, 333, 333, 333, 333,\\n];\\n\\n\u002F\u002F Char code of glyphs in LiberationSans-Bold.ttf.\\nconst LiberationSansBoldMapping = [\\n  -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\\n  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\\n  67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\\n  86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\\n  104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\\n  119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\\n  168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\\n  184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\\n  199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\\n  214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\\n  229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\\n  244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\\n  259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\\n  274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\\n  289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\\n  304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\\n  319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\\n  334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\\n  349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\\n  364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\\n  379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\\n  539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\\n  905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\\n  922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\\n  938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\\n  953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\\n  968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\\n  1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\\n  1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\\n  1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\\n  1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\\n  1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\\n  1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\\n  1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\\n  1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\\n  8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\\n  8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\\n  8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\\n  8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\\n  8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\\n  9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\\n  9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\\n  9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\\n  9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\\n  9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\\n  9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\\n];\\n\\n\u002F\u002F Widths of glyphs in LiberationSans-BoldItalic.ttf.\\nconst LiberationSansBoldItalicWidths = [\\n  365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278,\\n  333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333,\\n  584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556,\\n  722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\\n  611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611,\\n  278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778,\\n  556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333,\\n  737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333,\\n  333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722,\\n  667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\\n  584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\\n  889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611,\\n  611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556,\\n  722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 740, 722, 611, 667,\\n  556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611,\\n  778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278,\\n  278, 782, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 396, 611,\\n  479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778,\\n  611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556,\\n  667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722,\\n  611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611,\\n  500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333,\\n  333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 722, 333, 854, 906,\\n  473, 844, 930, 847, 278, 722, 722, 610, 671, 667, 611, 722, 778, 278, 722,\\n  667, 833, 722, 657, 778, 718, 667, 590, 611, 667, 822, 667, 829, 781, 278,\\n  667, 620, 479, 611, 278, 591, 620, 621, 556, 610, 479, 492, 611, 558, 278,\\n  566, 556, 603, 556, 450, 611, 712, 605, 532, 664, 409, 591, 704, 578, 773,\\n  834, 278, 591, 611, 591, 834, 667, 667, 886, 614, 719, 667, 278, 278, 556,\\n  1094, 1042, 854, 622, 719, 677, 719, 722, 708, 722, 614, 722, 667, 927, 643,\\n  719, 719, 615, 687, 833, 722, 778, 719, 667, 722, 611, 677, 781, 667, 729,\\n  708, 979, 989, 854, 1000, 708, 719, 1042, 729, 556, 619, 604, 534, 618, 556,\\n  736, 510, 611, 611, 507, 622, 740, 604, 611, 611, 611, 556, 889, 556, 885,\\n  556, 646, 583, 889, 935, 707, 854, 594, 552, 865, 589, 556, 556, 611, 469,\\n  563, 556, 278, 278, 278, 969, 906, 611, 507, 619, 556, 611, 778, 611, 575,\\n  467, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552,\\n  278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333,\\n  333, 604, 333, 167, 396, 556, 556, 1104, 556, 885, 516, 1146, 1000, 768, 600,\\n  834, 834, 834, 834, 999, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\\n  584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\\n  708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\\n  708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\\n  604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\\n  611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333,\\n  333, 333, 333, 333, 333,\\n];\\n\\n\u002F\u002F Char code of glyphs in LiberationSans-BoldItalic.ttf.\\nconst LiberationSansBoldItalicMapping = [\\n  -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\\n  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\\n  67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\\n  86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\\n  104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\\n  119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\\n  168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\\n  184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\\n  199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\\n  214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\\n  229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\\n  244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\\n  259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\\n  274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\\n  289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\\n  304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\\n  319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\\n  334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\\n  349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\\n  364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\\n  379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\\n  539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\\n  905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\\n  922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\\n  938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\\n  953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\\n  968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\\n  1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\\n  1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\\n  1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\\n  1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\\n  1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\\n  1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\\n  1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\\n  1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\\n  8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\\n  8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\\n  8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\\n  8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\\n  8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\\n  9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\\n  9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\\n  9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\\n  9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\\n  9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\\n  9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\\n];\\n\\n\u002F\u002F Widths of glyphs in LiberationSans-Italic.ttf.\\nconst LiberationSansItalicWidths = [\\n  365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278,\\n  333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278,\\n  584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500,\\n  667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\\n  611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556,\\n  222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722,\\n  500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333,\\n  737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333,\\n  333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722,\\n  667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\\n  584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\\n  889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556,\\n  556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556,\\n  667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 625, 722, 556, 667,\\n  556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556,\\n  778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278,\\n  278, 733, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 281, 556,\\n  400, 556, 222, 722, 556, 722, 556, 722, 556, 615, 723, 556, 778, 556, 778,\\n  556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500,\\n  667, 500, 667, 500, 611, 278, 611, 354, 611, 278, 722, 556, 722, 556, 722,\\n  556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611,\\n  500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278,\\n  333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 789, 846,\\n  389, 794, 865, 775, 222, 667, 667, 570, 671, 667, 611, 722, 778, 278, 667,\\n  667, 833, 722, 648, 778, 725, 667, 600, 611, 667, 837, 667, 831, 761, 278,\\n  667, 570, 439, 555, 222, 550, 570, 571, 500, 556, 439, 463, 555, 542, 222,\\n  500, 492, 548, 500, 447, 556, 670, 573, 486, 603, 374, 550, 652, 546, 728,\\n  779, 222, 550, 556, 550, 779, 667, 667, 843, 544, 708, 667, 278, 278, 500,\\n  1066, 982, 844, 589, 715, 639, 724, 667, 651, 667, 544, 704, 667, 917, 614,\\n  715, 715, 589, 686, 833, 722, 778, 725, 667, 722, 611, 639, 795, 667, 727,\\n  673, 920, 923, 805, 886, 651, 694, 1022, 682, 556, 562, 522, 493, 553, 556,\\n  688, 465, 556, 556, 472, 564, 686, 550, 556, 556, 556, 500, 833, 500, 835,\\n  500, 572, 518, 830, 851, 621, 736, 526, 492, 752, 534, 556, 556, 556, 378,\\n  496, 500, 222, 222, 222, 910, 828, 556, 472, 565, 500, 556, 778, 556, 492,\\n  339, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552,\\n  222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333,\\n  333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1083, 1000, 768, 600,\\n  834, 834, 834, 834, 1000, 500, 998, 500, 1000, 500, 500, 494, 612, 823, 713,\\n  584, 549, 713, 979, 719, 274, 549, 549, 584, 549, 549, 604, 584, 604, 604,\\n  708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\\n  708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\\n  604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\\n  500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324,\\n  324, 316, 328, 398, 285,\\n];\\n\\n\u002F\u002F Char code of glyphs in LiberationSans-Italic.ttf.\\nconst LiberationSansItalicMapping = [\\n  -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\\n  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\\n  67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\\n  86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\\n  104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\\n  119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\\n  168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\\n  184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\\n  199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\\n  214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\\n  229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\\n  244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\\n  259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\\n  274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\\n  289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\\n  304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\\n  319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\\n  334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\\n  349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\\n  364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\\n  379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\\n  539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\\n  905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\\n  922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\\n  938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\\n  953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\\n  968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\\n  1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\\n  1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\\n  1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\\n  1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\\n  1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\\n  1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\\n  1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\\n  1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\\n  8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\\n  8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\\n  8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\\n  8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\\n  8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\\n  9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\\n  9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\\n  9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\\n  9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\\n  9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\\n  9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\\n];\\n\\n\u002F\u002F Widths of glyphs in LiberationSans-Regular.ttf.\\nconst LiberationSansRegularWidths = [\\n  365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278,\\n  333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278,\\n  584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500,\\n  667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\\n  611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556,\\n  222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722,\\n  500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333,\\n  737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333,\\n  333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722,\\n  667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\\n  584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\\n  889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556,\\n  556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556,\\n  667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 615, 722, 556, 667,\\n  556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556,\\n  778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278,\\n  278, 735, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 292, 556,\\n  334, 556, 222, 722, 556, 722, 556, 722, 556, 604, 723, 556, 778, 556, 778,\\n  556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500,\\n  667, 500, 667, 500, 611, 278, 611, 375, 611, 278, 722, 556, 722, 556, 722,\\n  556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611,\\n  500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278,\\n  333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 784, 838,\\n  384, 774, 855, 752, 222, 667, 667, 551, 668, 667, 611, 722, 778, 278, 667,\\n  668, 833, 722, 650, 778, 722, 667, 618, 611, 667, 798, 667, 835, 748, 278,\\n  667, 578, 446, 556, 222, 547, 578, 575, 500, 557, 446, 441, 556, 556, 222,\\n  500, 500, 576, 500, 448, 556, 690, 569, 482, 617, 395, 547, 648, 525, 713,\\n  781, 222, 547, 556, 547, 781, 667, 667, 865, 542, 719, 667, 278, 278, 500,\\n  1057, 1010, 854, 583, 722, 635, 719, 667, 656, 667, 542, 677, 667, 923, 604,\\n  719, 719, 583, 656, 833, 722, 778, 719, 667, 722, 611, 635, 760, 667, 740,\\n  667, 917, 938, 792, 885, 656, 719, 1010, 722, 556, 573, 531, 365, 583, 556,\\n  669, 458, 559, 559, 438, 583, 688, 552, 556, 542, 556, 500, 458, 500, 823,\\n  500, 573, 521, 802, 823, 625, 719, 521, 510, 750, 542, 556, 556, 556, 365,\\n  510, 500, 222, 278, 222, 906, 812, 556, 438, 559, 500, 552, 778, 556, 489,\\n  411, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552,\\n  222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333,\\n  333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1073, 1000, 768, 600,\\n  834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\\n  584, 549, 713, 979, 719, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\\n  708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\\n  708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\\n  604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\\n  500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324,\\n  324, 316, 328, 398, 285,\\n];\\n\\n\u002F\u002F Char code of glyphs in LiberationSans-Regular.ttf.\\nconst LiberationSansRegularMapping = [\\n  -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\\n  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\\n  67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\\n  86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\\n  104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\\n  119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\\n  168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\\n  184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\\n  199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\\n  214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\\n  229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\\n  244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\\n  259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\\n  274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\\n  289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\\n  304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\\n  319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\\n  334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\\n  349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\\n  364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\\n  379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\\n  539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\\n  905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\\n  922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\\n  938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\\n  953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\\n  968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\\n  1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\\n  1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\\n  1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\\n  1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\\n  1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\\n  1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\\n  1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\\n  1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\\n  8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\\n  8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\\n  8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\\n  8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\\n  8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\\n  9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\\n  9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\\n  9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\\n  9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\\n  9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\\n  9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\\n];\\n\\nexport {\\n  LiberationSansBoldItalicMapping,\\n  LiberationSansBoldItalicWidths,\\n  LiberationSansBoldMapping,\\n  LiberationSansBoldWidths,\\n  LiberationSansItalicMapping,\\n  LiberationSansItalicWidths,\\n  LiberationSansRegularMapping,\\n  LiberationSansRegularWidths,\\n};\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F Factors to rescale LiberationSans-Bold.ttf to have the same\\n\u002F\u002F metrics as MyriadPro-Bold.otf.\\nconst MyriadProBoldFactors = [\\n  1.36898, 1, 1, 0.72706, 0.80479, 0.83734, 0.98894, 0.99793, 0.9897, 0.93884,\\n  0.86209, 0.94292, 0.94292, 1.16661, 1.02058, 0.93582, 0.96694, 0.93582,\\n  1.19137, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793,\\n  0.99793, 0.99793, 0.99793, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058,\\n  0.72851, 0.78966, 0.90838, 0.83637, 0.82391, 0.96376, 0.80061, 0.86275,\\n  0.8768, 0.95407, 1.0258, 0.73901, 0.85022, 0.83655, 1.0156, 0.95546, 0.92179,\\n  0.87107, 0.92179, 0.82114, 0.8096, 0.89713, 0.94438, 0.95353, 0.94083,\\n  0.91905, 0.90406, 0.9446, 0.94292, 1.18777, 0.94292, 1.02058, 0.89903,\\n  0.90088, 0.94938, 0.97898, 0.81093, 0.97571, 0.94938, 1.024, 0.9577, 0.95933,\\n  0.98621, 1.0474, 0.97455, 0.98981, 0.9672, 0.95933, 0.9446, 0.97898, 0.97407,\\n  0.97646, 0.78036, 1.10208, 0.95442, 0.95298, 0.97579, 0.9332, 0.94039, 0.938,\\n  0.80687, 1.01149, 0.80687, 1.02058, 0.80479, 0.99793, 0.99793, 0.99793,\\n  0.99793, 1.01149, 1.00872, 0.90088, 0.91882, 1.0213, 0.8361, 1.02058, 0.62295,\\n  0.54324, 0.89022, 1.08595, 1, 1, 0.90088, 1, 0.97455, 0.93582, 0.90088, 1,\\n  1.05686, 0.8361, 0.99642, 0.99642, 0.99642, 0.72851, 0.90838, 0.90838,\\n  0.90838, 0.90838, 0.90838, 0.90838, 0.868, 0.82391, 0.80061, 0.80061, 0.80061,\\n  0.80061, 1.0258, 1.0258, 1.0258, 1.0258, 0.97484, 0.95546, 0.92179, 0.92179,\\n  0.92179, 0.92179, 0.92179, 1.02058, 0.92179, 0.94438, 0.94438, 0.94438,\\n  0.94438, 0.90406, 0.86958, 0.98225, 0.94938, 0.94938, 0.94938, 0.94938,\\n  0.94938, 0.94938, 0.9031, 0.81093, 0.94938, 0.94938, 0.94938, 0.94938,\\n  0.98621, 0.98621, 0.98621, 0.98621, 0.93969, 0.95933, 0.9446, 0.9446, 0.9446,\\n  0.9446, 0.9446, 1.08595, 0.9446, 0.95442, 0.95442, 0.95442, 0.95442, 0.94039,\\n  0.97898, 0.94039, 0.90838, 0.94938, 0.90838, 0.94938, 0.90838, 0.94938,\\n  0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093,\\n  0.96376, 0.84313, 0.97484, 0.97571, 0.80061, 0.94938, 0.80061, 0.94938,\\n  0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.8768, 0.9577, 0.8768,\\n  0.9577, 0.8768, 0.9577, 1, 1, 0.95407, 0.95933, 0.97069, 0.95933, 1.0258,\\n  0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621,\\n  0.887, 1.01591, 0.73901, 1.0474, 1, 1, 0.97455, 0.83655, 0.98981, 1, 1,\\n  0.83655, 0.73977, 0.83655, 0.73903, 0.84638, 1.033, 0.95546, 0.95933, 1, 1,\\n  0.95546, 0.95933, 0.8271, 0.95417, 0.95933, 0.92179, 0.9446, 0.92179, 0.9446,\\n  0.92179, 0.9446, 0.936, 0.91964, 0.82114, 0.97646, 1, 1, 0.82114, 0.97646,\\n  0.8096, 0.78036, 0.8096, 0.78036, 1, 1, 0.8096, 0.78036, 1, 1, 0.89713,\\n  0.77452, 0.89713, 1.10208, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438,\\n  0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94083,\\n  0.97579, 0.90406, 0.94039, 0.90406, 0.9446, 0.938, 0.9446, 0.938, 0.9446,\\n  0.938, 1, 0.99793, 0.90838, 0.94938, 0.868, 0.9031, 0.92179, 0.9446, 1, 1,\\n  0.89713, 1.10208, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088,\\n  0.90088, 0.90088, 0.90088, 0.90989, 0.9358, 0.91945, 0.83181, 0.75261,\\n  0.87992, 0.82976, 0.96034, 0.83689, 0.97268, 1.0078, 0.90838, 0.83637, 0.8019,\\n  0.90157, 0.80061, 0.9446, 0.95407, 0.92436, 1.0258, 0.85022, 0.97153, 1.0156,\\n  0.95546, 0.89192, 0.92179, 0.92361, 0.87107, 0.96318, 0.89713, 0.93704,\\n  0.95638, 0.91905, 0.91709, 0.92796, 1.0258, 0.93704, 0.94836, 1.0373, 0.95933,\\n  1.0078, 0.95871, 0.94836, 0.96174, 0.92601, 0.9498, 0.98607, 0.95776, 0.95933,\\n  1.05453, 1.0078, 0.98275, 0.9314, 0.95617, 0.91701, 1.05993, 0.9446, 0.78367,\\n  0.9553, 1, 0.86832, 1.0128, 0.95871, 0.99394, 0.87548, 0.96361, 0.86774,\\n  1.0078, 0.95871, 0.9446, 0.95871, 0.86774, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.94083, 0.97579, 0.94083, 0.97579, 0.94083,\\n  0.97579, 0.90406, 0.94039, 0.96694, 1, 0.89903, 1, 1, 1, 0.93582, 0.93582,\\n  0.93582, 1, 0.908, 0.908, 0.918, 0.94219, 0.94219, 0.96544, 1, 1.285, 1, 1,\\n  0.81079, 0.81079, 1, 1, 0.74854, 1, 1, 1, 1, 0.99793, 1, 1, 1, 0.65, 1,\\n  1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.17173, 1, 0.80535, 0.76169,\\n  1.02058, 1.0732, 1.05486, 1, 1, 1.30692, 1.08595, 1.08595, 1, 1.08595,\\n  1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.16161, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n];\\nconst MyriadProBoldMetrics = { lineHeight: 1.2, lineGap: 0.2 };\\n\\n\u002F\u002F Factors to rescale LiberationSans-BoldItalic.ttf to have the same\\n\u002F\u002F metrics as MyriadPro-BoldIt.otf.\\nconst MyriadProBoldItalicFactors = [\\n  1.36898, 1, 1, 0.66227, 0.80779, 0.81625, 0.97276, 0.97276, 0.97733, 0.92222,\\n  0.83266, 0.94292, 0.94292, 1.16148, 1.02058, 0.93582, 0.96694, 0.93582,\\n  1.17337, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276,\\n  0.97276, 0.97276, 0.97276, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058,\\n  0.71541, 0.76813, 0.85576, 0.80591, 0.80729, 0.94299, 0.77512, 0.83655,\\n  0.86523, 0.92222, 0.98621, 0.71743, 0.81698, 0.79726, 0.98558, 0.92222,\\n  0.90637, 0.83809, 0.90637, 0.80729, 0.76463, 0.86275, 0.90699, 0.91605,\\n  0.9154, 0.85308, 0.85458, 0.90531, 0.94292, 1.21296, 0.94292, 1.02058,\\n  0.89903, 1.18616, 0.99613, 0.91677, 0.78216, 0.91677, 0.90083, 0.98796,\\n  0.9135, 0.92168, 0.95381, 0.98981, 0.95298, 0.95381, 0.93459, 0.92168,\\n  0.91513, 0.92004, 0.91677, 0.95077, 0.748, 1.04502, 0.91677, 0.92061, 0.94236,\\n  0.89544, 0.89364, 0.9, 0.80687, 0.8578, 0.80687, 1.02058, 0.80779, 0.97276,\\n  0.97276, 0.97276, 0.97276, 0.8578, 0.99973, 1.18616, 0.91339, 1.08074,\\n  0.82891, 1.02058, 0.55509, 0.71526, 0.89022, 1.08595, 1, 1, 1.18616, 1,\\n  0.96736, 0.93582, 1.18616, 1, 1.04864, 0.82711, 0.99043, 0.99043, 0.99043,\\n  0.71541, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.845, 0.80729,\\n  0.77512, 0.77512, 0.77512, 0.77512, 0.98621, 0.98621, 0.98621, 0.98621,\\n  0.95961, 0.92222, 0.90637, 0.90637, 0.90637, 0.90637, 0.90637, 1.02058,\\n  0.90251, 0.90699, 0.90699, 0.90699, 0.90699, 0.85458, 0.83659, 0.94951,\\n  0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.85811, 0.78216,\\n  0.90083, 0.90083, 0.90083, 0.90083, 0.95381, 0.95381, 0.95381, 0.95381,\\n  0.9135, 0.92168, 0.91513, 0.91513, 0.91513, 0.91513, 0.91513, 1.08595,\\n  0.91677, 0.91677, 0.91677, 0.91677, 0.91677, 0.89364, 0.92332, 0.89364,\\n  0.85576, 0.99613, 0.85576, 0.99613, 0.85576, 0.99613, 0.80729, 0.78216,\\n  0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.94299, 0.76783,\\n  0.95961, 0.91677, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083,\\n  0.77512, 0.90083, 0.77512, 0.90083, 0.86523, 0.9135, 0.86523, 0.9135, 0.86523,\\n  0.9135, 1, 1, 0.92222, 0.92168, 0.92222, 0.92168, 0.98621, 0.95381, 0.98621,\\n  0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.86036,\\n  0.97096, 0.71743, 0.98981, 1, 1, 0.95298, 0.79726, 0.95381, 1, 1, 0.79726,\\n  0.6894, 0.79726, 0.74321, 0.81691, 1.0006, 0.92222, 0.92168, 1, 1, 0.92222,\\n  0.92168, 0.79464, 0.92098, 0.92168, 0.90637, 0.91513, 0.90637, 0.91513,\\n  0.90637, 0.91513, 0.909, 0.87514, 0.80729, 0.95077, 1, 1, 0.80729, 0.95077,\\n  0.76463, 0.748, 0.76463, 0.748, 1, 1, 0.76463, 0.748, 1, 1, 0.86275, 0.72651,\\n  0.86275, 1.04502, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677,\\n  0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.9154, 0.94236,\\n  0.85458, 0.89364, 0.85458, 0.90531, 0.9, 0.90531, 0.9, 0.90531, 0.9, 1,\\n  0.97276, 0.85576, 0.99613, 0.845, 0.85811, 0.90251, 0.91677, 1, 1, 0.86275,\\n  1.04502, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616,\\n  1.18616, 1.18616, 1.00899, 1.30628, 0.85576, 0.80178, 0.66862, 0.7927,\\n  0.69323, 0.88127, 0.72459, 0.89711, 0.95381, 0.85576, 0.80591, 0.7805,\\n  0.94729, 0.77512, 0.90531, 0.92222, 0.90637, 0.98621, 0.81698, 0.92655,\\n  0.98558, 0.92222, 0.85359, 0.90637, 0.90976, 0.83809, 0.94523, 0.86275,\\n  0.83509, 0.93157, 0.85308, 0.83392, 0.92346, 0.98621, 0.83509, 0.92886,\\n  0.91324, 0.92168, 0.95381, 0.90646, 0.92886, 0.90557, 0.86847, 0.90276,\\n  0.91324, 0.86842, 0.92168, 0.99531, 0.95381, 0.9224, 0.85408, 0.92699,\\n  0.86847, 1.0051, 0.91513, 0.80487, 0.93481, 1, 0.88159, 1.05214, 0.90646,\\n  0.97355, 0.81539, 0.89398, 0.85923, 0.95381, 0.90646, 0.91513, 0.90646,\\n  0.85923, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  0.9154, 0.94236, 0.9154, 0.94236, 0.9154, 0.94236, 0.85458, 0.89364, 0.96694,\\n  1, 0.89903, 1, 1, 1, 0.91782, 0.91782, 0.91782, 1, 0.896, 0.896, 0.896,\\n  0.9332, 0.9332, 0.95973, 1, 1.26, 1, 1, 0.80479, 0.80178, 1, 1, 0.85633, 1, 1,\\n  1, 1, 0.97276, 1, 1, 1, 0.698, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1.14542, 1, 0.79199, 0.78694, 1.02058, 1.03493, 1.05486, 1, 1, 1.23026,\\n  1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.20006, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n];\\nconst MyriadProBoldItalicMetrics = { lineHeight: 1.2, lineGap: 0.2 };\\n\\n\u002F\u002F Factors to rescale LiberationSans-Italic.ttf to have the same\\n\u002F\u002F metrics as MyriadPro-It.otf.\\nconst MyriadProItalicFactors = [\\n  1.36898, 1, 1, 0.65507, 0.84943, 0.85639, 0.88465, 0.88465, 0.86936, 0.88307,\\n  0.86948, 0.85283, 0.85283, 1.06383, 1.02058, 0.75945, 0.9219, 0.75945,\\n  1.17337, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465,\\n  0.88465, 0.88465, 0.88465, 0.75945, 0.75945, 1.02058, 1.02058, 1.02058,\\n  0.69046, 0.70926, 0.85158, 0.77812, 0.76852, 0.89591, 0.70466, 0.76125,\\n  0.80094, 0.86822, 0.83864, 0.728, 0.77212, 0.79475, 0.93637, 0.87514, 0.8588,\\n  0.76013, 0.8588, 0.72421, 0.69866, 0.77598, 0.85991, 0.80811, 0.87832,\\n  0.78112, 0.77512, 0.8562, 1.0222, 1.18417, 1.0222, 1.27014, 0.89903, 1.15012,\\n  0.93859, 0.94399, 0.846, 0.94399, 0.81453, 1.0186, 0.94219, 0.96017, 1.03075,\\n  1.02175, 0.912, 1.03075, 0.96998, 0.96017, 0.93859, 0.94399, 0.94399, 0.95493,\\n  0.746, 1.12658, 0.94578, 0.91, 0.979, 0.882, 0.882, 0.83, 0.85034, 0.83537,\\n  0.85034, 1.02058, 0.70869, 0.88465, 0.88465, 0.88465, 0.88465, 0.83537,\\n  0.90083, 1.15012, 0.9161, 0.94565, 0.73541, 1.02058, 0.53609, 0.69353,\\n  0.79519, 1.08595, 1, 1, 1.15012, 1, 0.91974, 0.75945, 1.15012, 1, 0.9446,\\n  0.73361, 0.9005, 0.9005, 0.9005, 0.62864, 0.85158, 0.85158, 0.85158, 0.85158,\\n  0.85158, 0.85158, 0.773, 0.76852, 0.70466, 0.70466, 0.70466, 0.70466, 0.83864,\\n  0.83864, 0.83864, 0.83864, 0.90561, 0.87514, 0.8588, 0.8588, 0.8588, 0.8588,\\n  0.8588, 1.02058, 0.85751, 0.85991, 0.85991, 0.85991, 0.85991, 0.77512,\\n  0.76013, 0.88075, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859,\\n  0.8075, 0.846, 0.81453, 0.81453, 0.81453, 0.81453, 0.82424, 0.82424, 0.82424,\\n  0.82424, 0.9278, 0.96017, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859,\\n  1.08595, 0.8562, 0.94578, 0.94578, 0.94578, 0.94578, 0.882, 0.94578, 0.882,\\n  0.85158, 0.93859, 0.85158, 0.93859, 0.85158, 0.93859, 0.76852, 0.846, 0.76852,\\n  0.846, 0.76852, 0.846, 0.76852, 0.846, 0.89591, 0.8544, 0.90561, 0.94399,\\n  0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453,\\n  0.70466, 0.81453, 0.80094, 0.94219, 0.80094, 0.94219, 0.80094, 0.94219, 1, 1,\\n  0.86822, 0.96017, 0.86822, 0.96017, 0.83864, 0.82424, 0.83864, 0.82424,\\n  0.83864, 0.82424, 0.83864, 1.03075, 0.83864, 0.82424, 0.81402, 1.02738, 0.728,\\n  1.02175, 1, 1, 0.912, 0.79475, 1.03075, 1, 1, 0.79475, 0.83911, 0.79475,\\n  0.66266, 0.80553, 1.06676, 0.87514, 0.96017, 1, 1, 0.87514, 0.96017, 0.86865,\\n  0.87396, 0.96017, 0.8588, 0.93859, 0.8588, 0.93859, 0.8588, 0.93859, 0.867,\\n  0.84759, 0.72421, 0.95493, 1, 1, 0.72421, 0.95493, 0.69866, 0.746, 0.69866,\\n  0.746, 1, 1, 0.69866, 0.746, 1, 1, 0.77598, 0.88417, 0.77598, 1.12658,\\n  0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578,\\n  0.85991, 0.94578, 0.85991, 0.94578, 0.87832, 0.979, 0.77512, 0.882, 0.77512,\\n  0.8562, 0.83, 0.8562, 0.83, 0.8562, 0.83, 1, 0.88465, 0.85158, 0.93859, 0.773,\\n  0.8075, 0.85751, 0.8562, 1, 1, 0.77598, 1.12658, 1.15012, 1.15012, 1.15012,\\n  1.15012, 1.15012, 1.15313, 1.15012, 1.15012, 1.15012, 1.08106, 1.03901,\\n  0.85158, 0.77025, 0.62264, 0.7646, 0.65351, 0.86026, 0.69461, 0.89947,\\n  1.03075, 0.85158, 0.77812, 0.76449, 0.88836, 0.70466, 0.8562, 0.86822, 0.8588,\\n  0.83864, 0.77212, 0.85308, 0.93637, 0.87514, 0.82352, 0.8588, 0.85701,\\n  0.76013, 0.89058, 0.77598, 0.8156, 0.82565, 0.78112, 0.77899, 0.89386,\\n  0.83864, 0.8156, 0.9486, 0.92388, 0.96186, 1.03075, 0.91123, 0.9486, 0.93298,\\n  0.878, 0.93942, 0.92388, 0.84596, 0.96186, 0.95119, 1.03075, 0.922, 0.88787,\\n  0.95829, 0.88, 0.93559, 0.93859, 0.78815, 0.93758, 1, 0.89217, 1.03737,\\n  0.91123, 0.93969, 0.77487, 0.85769, 0.86799, 1.03075, 0.91123, 0.93859,\\n  0.91123, 0.86799, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 0.87832, 0.979, 0.87832, 0.979, 0.87832, 0.979, 0.77512, 0.882, 0.9219,\\n  1, 0.89903, 1, 1, 1, 0.87321, 0.87321, 0.87321, 1, 1.027, 1.027, 1.027,\\n  0.86847, 0.86847, 0.79121, 1, 1.124, 1, 1, 0.73572, 0.73572, 1, 1, 0.85034, 1,\\n  1, 1, 1, 0.88465, 1, 1, 1, 0.669, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1.04828, 1, 0.74948, 0.75187, 1.02058, 0.98391, 1.02119, 1, 1, 1.06233,\\n  1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05233, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n];\\nconst MyriadProItalicMetrics = { lineHeight: 1.2, lineGap: 0.2 };\\n\\n\u002F\u002F Factors to rescale LiberationSans-Regular.ttf to have the same\\n\u002F\u002F metrics as MyriadPro-Regular.otf.\\nconst MyriadProRegularFactors = [\\n  1.36898, 1, 1, 0.76305, 0.82784, 0.94935, 0.89364, 0.92241, 0.89073, 0.90706,\\n  0.98472, 0.85283, 0.85283, 1.0664, 1.02058, 0.74505, 0.9219, 0.74505, 1.23456,\\n  0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241,\\n  0.92241, 0.92241, 0.74505, 0.74505, 1.02058, 1.02058, 1.02058, 0.73002,\\n  0.72601, 0.91755, 0.8126, 0.80314, 0.92222, 0.73764, 0.79726, 0.83051,\\n  0.90284, 0.86023, 0.74, 0.8126, 0.84869, 0.96518, 0.91115, 0.8858, 0.79761,\\n  0.8858, 0.74498, 0.73914, 0.81363, 0.89591, 0.83659, 0.89633, 0.85608, 0.8111,\\n  0.90531, 1.0222, 1.22736, 1.0222, 1.27014, 0.89903, 0.90088, 0.86667, 1.0231,\\n  0.896, 1.01411, 0.90083, 1.05099, 1.00512, 0.99793, 1.05326, 1.09377, 0.938,\\n  1.06226, 1.00119, 0.99793, 0.98714, 1.0231, 1.01231, 0.98196, 0.792, 1.19137,\\n  0.99074, 0.962, 1.01915, 0.926, 0.942, 0.856, 0.85034, 0.92006, 0.85034,\\n  1.02058, 0.69067, 0.92241, 0.92241, 0.92241, 0.92241, 0.92006, 0.9332,\\n  0.90088, 0.91882, 0.93484, 0.75339, 1.02058, 0.56866, 0.54324, 0.79519,\\n  1.08595, 1, 1, 0.90088, 1, 0.95325, 0.74505, 0.90088, 1, 0.97198, 0.75339,\\n  0.91009, 0.91009, 0.91009, 0.66466, 0.91755, 0.91755, 0.91755, 0.91755,\\n  0.91755, 0.91755, 0.788, 0.80314, 0.73764, 0.73764, 0.73764, 0.73764, 0.86023,\\n  0.86023, 0.86023, 0.86023, 0.92915, 0.91115, 0.8858, 0.8858, 0.8858, 0.8858,\\n  0.8858, 1.02058, 0.8858, 0.89591, 0.89591, 0.89591, 0.89591, 0.8111, 0.79611,\\n  0.89713, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86936, 0.896,\\n  0.90083, 0.90083, 0.90083, 0.90083, 0.84224, 0.84224, 0.84224, 0.84224,\\n  0.97276, 0.99793, 0.98714, 0.98714, 0.98714, 0.98714, 0.98714, 1.08595,\\n  0.89876, 0.99074, 0.99074, 0.99074, 0.99074, 0.942, 1.0231, 0.942, 0.91755,\\n  0.86667, 0.91755, 0.86667, 0.91755, 0.86667, 0.80314, 0.896, 0.80314, 0.896,\\n  0.80314, 0.896, 0.80314, 0.896, 0.92222, 0.93372, 0.92915, 1.01411, 0.73764,\\n  0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764,\\n  0.90083, 0.83051, 1.00512, 0.83051, 1.00512, 0.83051, 1.00512, 1, 1, 0.90284,\\n  0.99793, 0.90976, 0.99793, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023,\\n  0.84224, 0.86023, 1.05326, 0.86023, 0.84224, 0.82873, 1.07469, 0.74, 1.09377,\\n  1, 1, 0.938, 0.84869, 1.06226, 1, 1, 0.84869, 0.83704, 0.84869, 0.81441,\\n  0.85588, 1.08927, 0.91115, 0.99793, 1, 1, 0.91115, 0.99793, 0.91887, 0.90991,\\n  0.99793, 0.8858, 0.98714, 0.8858, 0.98714, 0.8858, 0.98714, 0.894, 0.91434,\\n  0.74498, 0.98196, 1, 1, 0.74498, 0.98196, 0.73914, 0.792, 0.73914, 0.792, 1,\\n  1, 0.73914, 0.792, 1, 1, 0.81363, 0.904, 0.81363, 1.19137, 0.89591, 0.99074,\\n  0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074,\\n  0.89591, 0.99074, 0.89633, 1.01915, 0.8111, 0.942, 0.8111, 0.90531, 0.856,\\n  0.90531, 0.856, 0.90531, 0.856, 1, 0.92241, 0.91755, 0.86667, 0.788, 0.86936,\\n  0.8858, 0.89876, 1, 1, 0.81363, 1.19137, 0.90088, 0.90088, 0.90088, 0.90088,\\n  0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90388, 1.03901, 0.92138,\\n  0.78105, 0.7154, 0.86169, 0.80513, 0.94007, 0.82528, 0.98612, 1.06226,\\n  0.91755, 0.8126, 0.81884, 0.92819, 0.73764, 0.90531, 0.90284, 0.8858, 0.86023,\\n  0.8126, 0.91172, 0.96518, 0.91115, 0.83089, 0.8858, 0.87791, 0.79761, 0.89297,\\n  0.81363, 0.88157, 0.89992, 0.85608, 0.81992, 0.94307, 0.86023, 0.88157,\\n  0.95308, 0.98699, 0.99793, 1.06226, 0.95817, 0.95308, 0.97358, 0.928, 0.98088,\\n  0.98699, 0.92761, 0.99793, 0.96017, 1.06226, 0.986, 0.944, 0.95978, 0.938,\\n  0.96705, 0.98714, 0.80442, 0.98972, 1, 0.89762, 1.04552, 0.95817, 0.99007,\\n  0.87064, 0.91879, 0.88888, 1.06226, 0.95817, 0.98714, 0.95817, 0.88888, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89633, 1.01915,\\n  0.89633, 1.01915, 0.89633, 1.01915, 0.8111, 0.942, 0.9219, 1, 0.89903, 1, 1,\\n  1, 0.93173, 0.93173, 0.93173, 1, 1.06304, 1.06304, 1.06904, 0.89903, 0.89903,\\n  0.80549, 1, 1.156, 1, 1, 0.76575, 0.76575, 1, 1, 0.72458, 1, 1, 1, 1, 0.92241,\\n  1, 1, 1, 0.619, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.07257, 1,\\n  0.74705, 0.71119, 1.02058, 1.024, 1.02119, 1, 1, 1.1536, 1.08595, 1.08595, 1,\\n  1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05638, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1,\\n];\\nconst MyriadProRegularMetrics = { lineHeight: 1.2, lineGap: 0.2 };\\n\\nexport {\\n  MyriadProBoldFactors,\\n  MyriadProBoldItalicFactors,\\n  MyriadProBoldItalicMetrics,\\n  MyriadProBoldMetrics,\\n  MyriadProItalicFactors,\\n  MyriadProItalicMetrics,\\n  MyriadProRegularFactors,\\n  MyriadProRegularMetrics,\\n};\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F Factors to rescale LiberationSans-Bold.ttf to have the same\\n\u002F\u002F metrics as segoeuib.ttf.\\nconst SegoeuiBoldFactors = [\\n  1.76738, 1, 1, 0.99297, 0.9824, 1.04016, 1.06497, 1.03424, 0.97529, 1.17647,\\n  1.23203, 1.1085, 1.1085, 1.16939, 1.2107, 0.9754, 1.21408, 0.9754, 1.59578,\\n  1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424,\\n  1.03424, 1.03424, 0.81378, 0.81378, 1.2107, 1.2107, 1.2107, 0.71703, 0.97847,\\n  0.97363, 0.88776, 0.8641, 1.02096, 0.79795, 0.85132, 0.914, 1.06085, 1.1406,\\n  0.8007, 0.89858, 0.83693, 1.14889, 1.09398, 0.97489, 0.92094, 0.97489,\\n  0.90399, 0.84041, 0.95923, 1.00135, 1, 1.06467, 0.98243, 0.90996, 0.99361,\\n  1.1085, 1.56942, 1.1085, 1.2107, 0.74627, 0.94282, 0.96752, 1.01519, 0.86304,\\n  1.01359, 0.97278, 1.15103, 1.01359, 0.98561, 1.02285, 1.02285, 1.00527,\\n  1.02285, 1.0302, 0.99041, 1.0008, 1.01519, 1.01359, 1.02258, 0.79104, 1.16862,\\n  0.99041, 0.97454, 1.02511, 0.99298, 0.96752, 0.95801, 0.94856, 1.16579,\\n  0.94856, 1.2107, 0.9824, 1.03424, 1.03424, 1, 1.03424, 1.16579, 0.8727,\\n  1.3871, 1.18622, 1.10818, 1.04478, 1.2107, 1.18622, 0.75155, 0.94994, 1.28826,\\n  1.21408, 1.21408, 0.91056, 1, 0.91572, 0.9754, 0.64663, 1.18328, 1.24866,\\n  1.04478, 1.14169, 1.15749, 1.17389, 0.71703, 0.97363, 0.97363, 0.97363,\\n  0.97363, 0.97363, 0.97363, 0.93506, 0.8641, 0.79795, 0.79795, 0.79795,\\n  0.79795, 1.1406, 1.1406, 1.1406, 1.1406, 1.02096, 1.09398, 0.97426, 0.97426,\\n  0.97426, 0.97426, 0.97426, 1.2107, 0.97489, 1.00135, 1.00135, 1.00135,\\n  1.00135, 0.90996, 0.92094, 1.02798, 0.96752, 0.96752, 0.96752, 0.96752,\\n  0.96752, 0.96752, 0.93136, 0.86304, 0.97278, 0.97278, 0.97278, 0.97278,\\n  1.02285, 1.02285, 1.02285, 1.02285, 0.97122, 0.99041, 1, 1, 1, 1, 1, 1.28826,\\n  1.0008, 0.99041, 0.99041, 0.99041, 0.99041, 0.96752, 1.01519, 0.96752,\\n  0.97363, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.8641, 0.86304, 0.8641,\\n  0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 1.02096, 1.03057, 1.02096, 1.03517,\\n  0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278,\\n  0.79795, 0.97278, 0.914, 1.01359, 0.914, 1.01359, 0.914, 1.01359, 1, 1,\\n  1.06085, 0.98561, 1.06085, 1.00879, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406,\\n  1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 0.97138, 1.08692, 0.8007, 1.02285,\\n  1, 1, 1.00527, 0.83693, 1.02285, 1, 1, 0.83693, 0.9455, 0.83693, 0.90418,\\n  0.83693, 1.13005, 1.09398, 0.99041, 1, 1, 1.09398, 0.99041, 0.96692, 1.09251,\\n  0.99041, 0.97489, 1.0008, 0.97489, 1.0008, 0.97489, 1.0008, 0.93994, 0.97931,\\n  0.90399, 1.02258, 1, 1, 0.90399, 1.02258, 0.84041, 0.79104, 0.84041, 0.79104,\\n  0.84041, 0.79104, 0.84041, 0.79104, 1, 1, 0.95923, 1.07034, 0.95923, 1.16862,\\n  1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041,\\n  1.00135, 0.99041, 1.00135, 0.99041, 1.06467, 1.02511, 0.90996, 0.96752,\\n  0.90996, 0.99361, 0.95801, 0.99361, 0.95801, 0.99361, 0.95801, 1.07733,\\n  1.03424, 0.97363, 0.96752, 0.93506, 0.93136, 0.97489, 1.0008, 1, 1, 0.95923,\\n  1.16862, 1.15103, 1.15103, 1.01173, 1.03959, 0.75953, 0.81378, 0.79912,\\n  1.15103, 1.21994, 0.95161, 0.87815, 1.01149, 0.81525, 0.7676, 0.98167,\\n  1.01134, 1.02546, 0.84097, 1.03089, 1.18102, 0.97363, 0.88776, 0.85134,\\n  0.97826, 0.79795, 0.99361, 1.06085, 0.97489, 1.1406, 0.89858, 1.0388, 1.14889,\\n  1.09398, 0.86039, 0.97489, 1.0595, 0.92094, 0.94793, 0.95923, 0.90996,\\n  0.99346, 0.98243, 1.02112, 0.95493, 1.1406, 0.90996, 1.03574, 1.02597, 1.0008,\\n  1.18102, 1.06628, 1.03574, 1.0192, 1.01932, 1.00886, 0.97531, 1.0106, 1.0008,\\n  1.13189, 1.18102, 1.02277, 0.98683, 1.0016, 0.99561, 1.07237, 1.0008, 0.90434,\\n  0.99921, 0.93803, 0.8965, 1.23085, 1.06628, 1.04983, 0.96268, 1.0499, 0.98439,\\n  1.18102, 1.06628, 1.0008, 1.06628, 0.98439, 0.79795, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1.09466, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.97278, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.02065, 1, 1, 1, 1, 1, 1, 1.06467, 1.02511,\\n  1.06467, 1.02511, 1.06467, 1.02511, 0.90996, 0.96752, 1, 1.21408, 0.89903, 1,\\n  1, 0.75155, 1.04394, 1.04394, 1.04394, 1.04394, 0.98633, 0.98633, 0.98633,\\n  0.73047, 0.73047, 1.20642, 0.91211, 1.25635, 1.222, 1.02956, 1.03372, 1.03372,\\n  0.96039, 1.24633, 1, 1.12454, 0.93503, 1.03424, 1.19687, 1.03424, 1, 1, 1,\\n  0.771, 1, 1, 1.15749, 1.15749, 1.15749, 1.10948, 0.86279, 0.94434, 0.86279,\\n  0.94434, 0.86182, 1, 1, 1.16897, 1, 0.96085, 0.90137, 1.2107, 1.18416,\\n  1.13973, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21172, 1.29004,\\n  1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025,\\n  1.18874, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886,\\n  1.04315, 1.15296, 1.34163, 1, 1, 1, 1.09193, 1.09193, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n];\\nconst SegoeuiBoldMetrics = { lineHeight: 1.33008, lineGap: 0 };\\n\\n\u002F\u002F Factors to rescale LiberationSans-BoldItalic.ttf to have the same\\n\u002F\u002F metrics as segoeuiz.ttf.\\nconst SegoeuiBoldItalicFactors = [\\n  1.76738, 1, 1, 0.98946, 1.03959, 1.04016, 1.02809, 1.036, 0.97639, 1.10953,\\n  1.23203, 1.11144, 1.11144, 1.16939, 1.21237, 0.9754, 1.21261, 0.9754, 1.59754,\\n  1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 0.81378,\\n  0.81378, 1.21237, 1.21237, 1.21237, 0.73541, 0.97847, 0.97363, 0.89723,\\n  0.87897, 1.0426, 0.79429, 0.85292, 0.91149, 1.05815, 1.1406, 0.79631, 0.90128,\\n  0.83853, 1.04396, 1.10615, 0.97552, 0.94436, 0.97552, 0.88641, 0.80527,\\n  0.96083, 1.00135, 1, 1.06777, 0.9817, 0.91142, 0.99361, 1.11144, 1.57293,\\n  1.11144, 1.21237, 0.74627, 1.31818, 1.06585, 0.97042, 0.83055, 0.97042,\\n  0.93503, 1.1261, 0.97042, 0.97922, 1.14236, 0.94552, 1.01054, 1.14236,\\n  1.02471, 0.97922, 0.94165, 0.97042, 0.97042, 1.0276, 0.78929, 1.1261, 0.97922,\\n  0.95874, 1.02197, 0.98507, 0.96752, 0.97168, 0.95107, 1.16579, 0.95107,\\n  1.21237, 1.03959, 1.036, 1.036, 1, 1.036, 1.16579, 0.87357, 1.31818, 1.18754,\\n  1.26781, 1.05356, 1.21237, 1.18622, 0.79487, 0.94994, 1.29004, 1.24047,\\n  1.24047, 1.31818, 1, 0.91484, 0.9754, 1.31818, 1.1349, 1.24866, 1.05356,\\n  1.13934, 1.15574, 1.17389, 0.73541, 0.97363, 0.97363, 0.97363, 0.97363,\\n  0.97363, 0.97363, 0.94385, 0.87897, 0.79429, 0.79429, 0.79429, 0.79429,\\n  1.1406, 1.1406, 1.1406, 1.1406, 1.0426, 1.10615, 0.97552, 0.97552, 0.97552,\\n  0.97552, 0.97552, 1.21237, 0.97552, 1.00135, 1.00135, 1.00135, 1.00135,\\n  0.91142, 0.94436, 0.98721, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585,\\n  1.06585, 0.96705, 0.83055, 0.93503, 0.93503, 0.93503, 0.93503, 1.14236,\\n  1.14236, 1.14236, 1.14236, 0.93125, 0.97922, 0.94165, 0.94165, 0.94165,\\n  0.94165, 0.94165, 1.29004, 0.94165, 0.97922, 0.97922, 0.97922, 0.97922,\\n  0.96752, 0.97042, 0.96752, 0.97363, 1.06585, 0.97363, 1.06585, 0.97363,\\n  1.06585, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897,\\n  0.83055, 1.0426, 1.0033, 1.0426, 0.97042, 0.79429, 0.93503, 0.79429, 0.93503,\\n  0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.91149, 0.97042,\\n  0.91149, 0.97042, 0.91149, 0.97042, 1, 1, 1.05815, 0.97922, 1.05815, 0.97922,\\n  1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406,\\n  1.14236, 0.97441, 1.04302, 0.79631, 1.01582, 1, 1, 1.01054, 0.83853, 1.14236,\\n  1, 1, 0.83853, 1.09125, 0.83853, 0.90418, 0.83853, 1.19508, 1.10615, 0.97922,\\n  1, 1, 1.10615, 0.97922, 1.01034, 1.10466, 0.97922, 0.97552, 0.94165, 0.97552,\\n  0.94165, 0.97552, 0.94165, 0.91602, 0.91981, 0.88641, 1.0276, 1, 1, 0.88641,\\n  1.0276, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527,\\n  0.78929, 1, 1, 0.96083, 1.05403, 0.95923, 1.16862, 1.00135, 0.97922, 1.00135,\\n  0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135,\\n  0.97922, 1.06777, 1.02197, 0.91142, 0.96752, 0.91142, 0.99361, 0.97168,\\n  0.99361, 0.97168, 0.99361, 0.97168, 1.23199, 1.036, 0.97363, 1.06585, 0.94385,\\n  0.96705, 0.97552, 0.94165, 1, 1, 0.96083, 1.1261, 1.31818, 1.31818, 1.31818,\\n  1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 0.95161, 1.27126,\\n  1.00811, 0.83284, 0.77702, 0.99137, 0.95253, 1.0347, 0.86142, 1.07205,\\n  1.14236, 0.97363, 0.89723, 0.86869, 1.09818, 0.79429, 0.99361, 1.05815,\\n  0.97552, 1.1406, 0.90128, 1.06662, 1.04396, 1.10615, 0.84918, 0.97552,\\n  1.04694, 0.94436, 0.98015, 0.96083, 0.91142, 1.00356, 0.9817, 1.01945,\\n  0.98999, 1.1406, 0.91142, 1.04961, 0.9898, 1.00639, 1.14236, 1.07514, 1.04961,\\n  0.99607, 1.02897, 1.008, 0.9898, 0.95134, 1.00639, 1.11121, 1.14236, 1.00518,\\n  0.97981, 1.02186, 1, 1.08578, 0.94165, 0.99314, 0.98387, 0.93028, 0.93377,\\n  1.35125, 1.07514, 1.10687, 0.93491, 1.04232, 1.00351, 1.14236, 1.07514,\\n  0.94165, 1.07514, 1.00351, 0.79429, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1.09097, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.93503, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 0.96609, 1, 1, 1, 1, 1, 1, 1.06777, 1.02197, 1.06777,\\n  1.02197, 1.06777, 1.02197, 0.91142, 0.96752, 1, 1.21261, 0.89903, 1, 1,\\n  0.75155, 1.04745, 1.04745, 1.04745, 1.04394, 0.98633, 0.98633, 0.98633,\\n  0.72959, 0.72959, 1.20502, 0.91406, 1.26514, 1.222, 1.02956, 1.03372, 1.03372,\\n  0.96039, 1.24633, 1, 1.09125, 0.93327, 1.03336, 1.16541, 1.036, 1, 1, 1,\\n  0.771, 1, 1, 1.15574, 1.15574, 1.15574, 1.15574, 0.86364, 0.94434, 0.86279,\\n  0.94434, 0.86224, 1, 1, 1.16798, 1, 0.96085, 0.90068, 1.21237, 1.18416,\\n  1.13904, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21339, 1.29004,\\n  1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025,\\n  1.18775, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886,\\n  1.04315, 1.15296, 1.34163, 1, 1, 1, 1.13269, 1.13269, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n];\\nconst SegoeuiBoldItalicMetrics = { lineHeight: 1.33008, lineGap: 0 };\\n\\n\u002F\u002F Factors to rescale LiberationSans-Italic.ttf to have the same\\n\u002F\u002F metrics as segoeuii.ttf.\\nconst SegoeuiItalicFactors = [\\n  1.76738, 1, 1, 0.98946, 1.14763, 1.05365, 1.06234, 0.96927, 0.92586, 1.15373,\\n  1.18414, 0.91349, 0.91349, 1.07403, 1.17308, 0.78383, 1.20088, 0.78383,\\n  1.42531, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927,\\n  0.96927, 0.96927, 0.96927, 0.78383, 0.78383, 1.17308, 1.17308, 1.17308,\\n  0.77349, 0.94565, 0.94729, 0.85944, 0.88506, 0.9858, 0.74817, 0.80016,\\n  0.88449, 0.98039, 0.95782, 0.69238, 0.89898, 0.83231, 0.98183, 1.03989,\\n  0.96924, 0.86237, 0.96924, 0.80595, 0.74524, 0.86091, 0.95402, 0.94143,\\n  0.98448, 0.8858, 0.83089, 0.93285, 1.0949, 1.39016, 1.0949, 1.45994, 0.74627,\\n  1.04839, 0.97454, 0.97454, 0.87207, 0.97454, 0.87533, 1.06151, 0.97454,\\n  1.00176, 1.16484, 1.08132, 0.98047, 1.16484, 1.02989, 1.01054, 0.96225,\\n  0.97454, 0.97454, 1.06598, 0.79004, 1.16344, 1.00351, 0.94629, 0.9973,\\n  0.91016, 0.96777, 0.9043, 0.91082, 0.92481, 0.91082, 1.17308, 0.95748,\\n  0.96927, 0.96927, 1, 0.96927, 0.92481, 0.80597, 1.04839, 1.23393, 1.1781,\\n  0.9245, 1.17308, 1.20808, 0.63218, 0.94261, 1.24822, 1.09971, 1.09971,\\n  1.04839, 1, 0.85273, 0.78032, 1.04839, 1.09971, 1.22326, 0.9245, 1.09836,\\n  1.13525, 1.15222, 0.70424, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729,\\n  0.94729, 0.85498, 0.88506, 0.74817, 0.74817, 0.74817, 0.74817, 0.95782,\\n  0.95782, 0.95782, 0.95782, 0.9858, 1.03989, 0.96924, 0.96924, 0.96924,\\n  0.96924, 0.96924, 1.17308, 0.96924, 0.95402, 0.95402, 0.95402, 0.95402,\\n  0.83089, 0.86237, 0.88409, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454,\\n  0.97454, 0.92916, 0.87207, 0.87533, 0.87533, 0.87533, 0.87533, 0.93146,\\n  0.93146, 0.93146, 0.93146, 0.93854, 1.01054, 0.96225, 0.96225, 0.96225,\\n  0.96225, 0.96225, 1.24822, 0.8761, 1.00351, 1.00351, 1.00351, 1.00351,\\n  0.96777, 0.97454, 0.96777, 0.94729, 0.97454, 0.94729, 0.97454, 0.94729,\\n  0.97454, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506,\\n  0.87207, 0.9858, 0.95391, 0.9858, 0.97454, 0.74817, 0.87533, 0.74817, 0.87533,\\n  0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.88449, 0.97454,\\n  0.88449, 0.97454, 0.88449, 0.97454, 1, 1, 0.98039, 1.00176, 0.98039, 1.00176,\\n  0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 1.16484,\\n  0.95782, 0.93146, 0.84421, 1.12761, 0.69238, 1.08132, 1, 1, 0.98047, 0.83231,\\n  1.16484, 1, 1, 0.84723, 1.04861, 0.84723, 0.78755, 0.83231, 1.23736, 1.03989,\\n  1.01054, 1, 1, 1.03989, 1.01054, 0.9857, 1.03849, 1.01054, 0.96924, 0.96225,\\n  0.96924, 0.96225, 0.96924, 0.96225, 0.92383, 0.90171, 0.80595, 1.06598, 1, 1,\\n  0.80595, 1.06598, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004,\\n  0.74524, 0.79004, 1, 1, 0.86091, 1.02759, 0.85771, 1.16344, 0.95402, 1.00351,\\n  0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351,\\n  0.95402, 1.00351, 0.98448, 0.9973, 0.83089, 0.96777, 0.83089, 0.93285, 0.9043,\\n  0.93285, 0.9043, 0.93285, 0.9043, 1.31868, 0.96927, 0.94729, 0.97454, 0.85498,\\n  0.92916, 0.96924, 0.8761, 1, 1, 0.86091, 1.16344, 1.04839, 1.04839, 1.04839,\\n  1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 0.81965, 0.81965,\\n  0.94729, 0.78032, 0.71022, 0.90883, 0.84171, 0.99877, 0.77596, 1.05734, 1.2,\\n  0.94729, 0.85944, 0.82791, 0.9607, 0.74817, 0.93285, 0.98039, 0.96924,\\n  0.95782, 0.89898, 0.98316, 0.98183, 1.03989, 0.78614, 0.96924, 0.97642,\\n  0.86237, 0.86075, 0.86091, 0.83089, 0.90082, 0.8858, 0.97296, 1.01284,\\n  0.95782, 0.83089, 1.0976, 1.04, 1.03342, 1.2, 1.0675, 1.0976, 0.98205,\\n  1.03809, 1.05097, 1.04, 0.95364, 1.03342, 1.05401, 1.2, 1.02148, 1.0119,\\n  1.04724, 1.0127, 1.02732, 0.96225, 0.8965, 0.97783, 0.93574, 0.94818, 1.30679,\\n  1.0675, 1.11826, 0.99821, 1.0557, 1.0326, 1.2, 1.0675, 0.96225, 1.0675,\\n  1.0326, 0.74817, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03754, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87533, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  0.98705, 1, 1, 1, 1, 1, 1, 0.98448, 0.9973, 0.98448, 0.9973, 0.98448, 0.9973,\\n  0.83089, 0.96777, 1, 1.20088, 0.89903, 1, 1, 0.75155, 0.94945, 0.94945,\\n  0.94945, 0.94945, 1.12317, 1.12317, 1.12317, 0.67603, 0.67603, 1.15621,\\n  0.73584, 1.21191, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1,\\n  1.07497, 0.87709, 0.96927, 1.01473, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.09836,\\n  1.09836, 1.09836, 1.01522, 0.86321, 0.94434, 0.8649, 0.94434, 0.86182, 1, 1,\\n  1.083, 1, 0.91578, 0.86438, 1.17308, 1.18416, 1.14589, 0.69825, 0.97622,\\n  1.96791, 1.24822, 1.24822, 1.17308, 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862,\\n  0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.17984, 1.42603, 1, 1.42603,\\n  1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1,\\n  1.10742, 1.10742, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n];\\nconst SegoeuiItalicMetrics = { lineHeight: 1.33008, lineGap: 0 };\\n\\n\u002F\u002F Factors to rescale LiberationSans-Regular.ttf to have the same\\n\u002F\u002F metrics as segoeui.ttf.\\nconst SegoeuiRegularFactors = [\\n  1.76738, 1, 1, 0.98594, 1.02285, 1.10454, 1.06234, 0.96927, 0.92037, 1.19985,\\n  1.2046, 0.90616, 0.90616, 1.07152, 1.1714, 0.78032, 1.20088, 0.78032, 1.40246,\\n  0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927,\\n  0.96927, 0.96927, 0.78032, 0.78032, 1.1714, 1.1714, 1.1714, 0.80597, 0.94084,\\n  0.96706, 0.85944, 0.85734, 0.97093, 0.75842, 0.79936, 0.88198, 0.9831,\\n  0.95782, 0.71387, 0.86969, 0.84636, 1.07796, 1.03584, 0.96924, 0.83968,\\n  0.96924, 0.82826, 0.79649, 0.85771, 0.95132, 0.93119, 0.98965, 0.88433,\\n  0.8287, 0.93365, 1.08612, 1.3638, 1.08612, 1.45786, 0.74627, 0.80499, 0.91484,\\n  1.05707, 0.92383, 1.05882, 0.9403, 1.12654, 1.05882, 1.01756, 1.09011,\\n  1.09011, 0.99414, 1.09011, 1.034, 1.01756, 1.05356, 1.05707, 1.05882, 1.04399,\\n  0.84863, 1.21968, 1.01756, 0.95801, 1.00068, 0.91797, 0.96777, 0.9043,\\n  0.90351, 0.92105, 0.90351, 1.1714, 0.85337, 0.96927, 0.96927, 0.99912,\\n  0.96927, 0.92105, 0.80597, 1.2434, 1.20808, 1.05937, 0.90957, 1.1714, 1.20808,\\n  0.75155, 0.94261, 1.24644, 1.09971, 1.09971, 0.84751, 1, 0.85273, 0.78032,\\n  0.61584, 1.05425, 1.17914, 0.90957, 1.08665, 1.11593, 1.14169, 0.73381,\\n  0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.86035, 0.85734,\\n  0.75842, 0.75842, 0.75842, 0.75842, 0.95782, 0.95782, 0.95782, 0.95782,\\n  0.97093, 1.03584, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.1714,\\n  0.96924, 0.95132, 0.95132, 0.95132, 0.95132, 0.8287, 0.83968, 0.89049,\\n  0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.93575, 0.92383,\\n  0.9403, 0.9403, 0.9403, 0.9403, 0.8717, 0.8717, 0.8717, 0.8717, 1.00527,\\n  1.01756, 1.05356, 1.05356, 1.05356, 1.05356, 1.05356, 1.24644, 0.95923,\\n  1.01756, 1.01756, 1.01756, 1.01756, 0.96777, 1.05707, 0.96777, 0.96706,\\n  0.91484, 0.96706, 0.91484, 0.96706, 0.91484, 0.85734, 0.92383, 0.85734,\\n  0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.97093, 1.0969, 0.97093,\\n  1.05882, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403,\\n  0.75842, 0.9403, 0.88198, 1.05882, 0.88198, 1.05882, 0.88198, 1.05882, 1, 1,\\n  0.9831, 1.01756, 0.9831, 1.01756, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782,\\n  0.8717, 0.95782, 1.09011, 0.95782, 0.8717, 0.84784, 1.11551, 0.71387, 1.09011,\\n  1, 1, 0.99414, 0.84636, 1.09011, 1, 1, 0.84636, 1.0536, 0.84636, 0.94298,\\n  0.84636, 1.23297, 1.03584, 1.01756, 1, 1, 1.03584, 1.01756, 1.00323, 1.03444,\\n  1.01756, 0.96924, 1.05356, 0.96924, 1.05356, 0.96924, 1.05356, 0.93066,\\n  0.98293, 0.82826, 1.04399, 1, 1, 0.82826, 1.04399, 0.79649, 0.84863, 0.79649,\\n  0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 1, 1, 0.85771, 1.17318, 0.85771,\\n  1.21968, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132,\\n  1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.98965, 1.00068, 0.8287,\\n  0.96777, 0.8287, 0.93365, 0.9043, 0.93365, 0.9043, 0.93365, 0.9043, 1.08571,\\n  0.96927, 0.96706, 0.91484, 0.86035, 0.93575, 0.96924, 0.95923, 1, 1, 0.85771,\\n  1.21968, 1.11437, 1.11437, 0.93109, 0.91202, 0.60411, 0.84164, 0.55572,\\n  1.01173, 0.97361, 0.81818, 0.81818, 0.96635, 0.78032, 0.72727, 0.92366,\\n  0.98601, 1.03405, 0.77968, 1.09799, 1.2, 0.96706, 0.85944, 0.85638, 0.96491,\\n  0.75842, 0.93365, 0.9831, 0.96924, 0.95782, 0.86969, 0.94152, 1.07796,\\n  1.03584, 0.78437, 0.96924, 0.98715, 0.83968, 0.83491, 0.85771, 0.8287,\\n  0.94492, 0.88433, 0.9287, 1.0098, 0.95782, 0.8287, 1.0625, 0.98248, 1.03424,\\n  1.2, 1.01071, 1.0625, 0.95246, 1.03809, 1.04912, 0.98248, 1.00221, 1.03424,\\n  1.05443, 1.2, 1.04785, 0.99609, 1.00169, 1.05176, 0.99346, 1.05356, 0.9087,\\n  1.03004, 0.95542, 0.93117, 1.23362, 1.01071, 1.07831, 1.02512, 1.05205,\\n  1.03502, 1.2, 1.01071, 1.05356, 1.01071, 1.03502, 0.75842, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1.03719, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9403,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04021, 1, 1, 1, 1, 1, 1, 0.98965,\\n  1.00068, 0.98965, 1.00068, 0.98965, 1.00068, 0.8287, 0.96777, 1, 1.20088,\\n  0.89903, 1, 1, 0.75155, 1.03077, 1.03077, 1.03077, 1.03077, 1.13196, 1.13196,\\n  1.13196, 0.67428, 0.67428, 1.16039, 0.73291, 1.20996, 1.22135, 1.06483,\\n  0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87796, 0.96927, 1.01518,\\n  0.96927, 1, 1, 1, 0.77295, 1, 1, 1.10539, 1.10539, 1.11358, 1.06967, 0.86279,\\n  0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86507, 1.1714,\\n  1.18416, 1.14589, 0.69825, 0.97622, 1.9697, 1.24822, 1.24822, 1.17238,\\n  1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025,\\n  0.87025, 1.18083, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1,\\n  1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10938, 1.10938, 1, 1, 1,\\n  1.05425, 1.09971, 1.09971, 1.09971, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n];\\nconst SegoeuiRegularMetrics = { lineHeight: 1.33008, lineGap: 0 };\\n\\nexport {\\n  SegoeuiBoldFactors,\\n  SegoeuiBoldItalicFactors,\\n  SegoeuiBoldItalicMetrics,\\n  SegoeuiBoldMetrics,\\n  SegoeuiItalicFactors,\\n  SegoeuiItalicMetrics,\\n  SegoeuiRegularFactors,\\n  SegoeuiRegularMetrics,\\n};\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  CalibriBoldFactors,\\n  CalibriBoldItalicFactors,\\n  CalibriBoldItalicMetrics,\\n  CalibriBoldMetrics,\\n  CalibriItalicFactors,\\n  CalibriItalicMetrics,\\n  CalibriRegularFactors,\\n  CalibriRegularMetrics,\\n} from \\\".\u002Fcalibri_factors.js\\\";\\nimport { Dict, Name } from \\\".\u002Fprimitives.js\\\";\\nimport {\\n  HelveticaBoldFactors,\\n  HelveticaBoldItalicFactors,\\n  HelveticaBoldItalicMetrics,\\n  HelveticaBoldMetrics,\\n  HelveticaItalicFactors,\\n  HelveticaItalicMetrics,\\n  HelveticaRegularFactors,\\n  HelveticaRegularMetrics,\\n} from \\\".\u002Fhelvetica_factors.js\\\";\\nimport {\\n  LiberationSansBoldItalicMapping,\\n  LiberationSansBoldItalicWidths,\\n  LiberationSansBoldMapping,\\n  LiberationSansBoldWidths,\\n  LiberationSansItalicMapping,\\n  LiberationSansItalicWidths,\\n  LiberationSansRegularMapping,\\n  LiberationSansRegularWidths,\\n} from \\\".\u002Fliberationsans_widths.js\\\";\\nimport {\\n  MyriadProBoldFactors,\\n  MyriadProBoldItalicFactors,\\n  MyriadProBoldItalicMetrics,\\n  MyriadProBoldMetrics,\\n  MyriadProItalicFactors,\\n  MyriadProItalicMetrics,\\n  MyriadProRegularFactors,\\n  MyriadProRegularMetrics,\\n} from \\\".\u002Fmyriadpro_factors.js\\\";\\nimport {\\n  SegoeuiBoldFactors,\\n  SegoeuiBoldItalicFactors,\\n  SegoeuiBoldItalicMetrics,\\n  SegoeuiBoldMetrics,\\n  SegoeuiItalicFactors,\\n  SegoeuiItalicMetrics,\\n  SegoeuiRegularFactors,\\n  SegoeuiRegularMetrics,\\n} from \\\".\u002Fsegoeui_factors.js\\\";\\nimport { getLookupTableFactory } from \\\".\u002Fcore_utils.js\\\";\\nimport { normalizeFontName } from \\\".\u002Ffonts_utils.js\\\";\\n\\nconst getXFAFontMap = getLookupTableFactory(function (t) {\\n  t[\\\"MyriadPro-Regular\\\"] = t[\\\"PdfJS-Fallback-Regular\\\"] = {\\n    name: \\\"LiberationSans-Regular\\\",\\n    factors: MyriadProRegularFactors,\\n    baseWidths: LiberationSansRegularWidths,\\n    baseMapping: LiberationSansRegularMapping,\\n    metrics: MyriadProRegularMetrics,\\n  };\\n  t[\\\"MyriadPro-Bold\\\"] = t[\\\"PdfJS-Fallback-Bold\\\"] = {\\n    name: \\\"LiberationSans-Bold\\\",\\n    factors: MyriadProBoldFactors,\\n    baseWidths: LiberationSansBoldWidths,\\n    baseMapping: LiberationSansBoldMapping,\\n    metrics: MyriadProBoldMetrics,\\n  };\\n  t[\\\"MyriadPro-It\\\"] =\\n    t[\\\"MyriadPro-Italic\\\"] =\\n    t[\\\"PdfJS-Fallback-Italic\\\"] =\\n      {\\n        name: \\\"LiberationSans-Italic\\\",\\n        factors: MyriadProItalicFactors,\\n        baseWidths: LiberationSansItalicWidths,\\n        baseMapping: LiberationSansItalicMapping,\\n        metrics: MyriadProItalicMetrics,\\n      };\\n  t[\\\"MyriadPro-BoldIt\\\"] =\\n    t[\\\"MyriadPro-BoldItalic\\\"] =\\n    t[\\\"PdfJS-Fallback-BoldItalic\\\"] =\\n      {\\n        name: \\\"LiberationSans-BoldItalic\\\",\\n        factors: MyriadProBoldItalicFactors,\\n        baseWidths: LiberationSansBoldItalicWidths,\\n        baseMapping: LiberationSansBoldItalicMapping,\\n        metrics: MyriadProBoldItalicMetrics,\\n      };\\n  t.ArialMT =\\n    t.Arial =\\n    t[\\\"Arial-Regular\\\"] =\\n      {\\n        name: \\\"LiberationSans-Regular\\\",\\n        baseWidths: LiberationSansRegularWidths,\\n        baseMapping: LiberationSansRegularMapping,\\n      };\\n  t[\\\"Arial-BoldMT\\\"] = t[\\\"Arial-Bold\\\"] = {\\n    name: \\\"LiberationSans-Bold\\\",\\n    baseWidths: LiberationSansBoldWidths,\\n    baseMapping: LiberationSansBoldMapping,\\n  };\\n  t[\\\"Arial-ItalicMT\\\"] = t[\\\"Arial-Italic\\\"] = {\\n    name: \\\"LiberationSans-Italic\\\",\\n    baseWidths: LiberationSansItalicWidths,\\n    baseMapping: LiberationSansItalicMapping,\\n  };\\n  t[\\\"Arial-BoldItalicMT\\\"] = t[\\\"Arial-BoldItalic\\\"] = {\\n    name: \\\"LiberationSans-BoldItalic\\\",\\n    baseWidths: LiberationSansBoldItalicWidths,\\n    baseMapping: LiberationSansBoldItalicMapping,\\n  };\\n  t[\\\"Calibri-Regular\\\"] = {\\n    name: \\\"LiberationSans-Regular\\\",\\n    factors: CalibriRegularFactors,\\n    baseWidths: LiberationSansRegularWidths,\\n    baseMapping: LiberationSansRegularMapping,\\n    metrics: CalibriRegularMetrics,\\n  };\\n  t[\\\"Calibri-Bold\\\"] = {\\n    name: \\\"LiberationSans-Bold\\\",\\n    factors: CalibriBoldFactors,\\n    baseWidths: LiberationSansBoldWidths,\\n    baseMapping: LiberationSansBoldMapping,\\n    metrics: CalibriBoldMetrics,\\n  };\\n  t[\\\"Calibri-Italic\\\"] = {\\n    name: \\\"LiberationSans-Italic\\\",\\n    factors: CalibriItalicFactors,\\n    baseWidths: LiberationSansItalicWidths,\\n    baseMapping: LiberationSansItalicMapping,\\n    metrics: CalibriItalicMetrics,\\n  };\\n  t[\\\"Calibri-BoldItalic\\\"] = {\\n    name: \\\"LiberationSans-BoldItalic\\\",\\n    factors: CalibriBoldItalicFactors,\\n    baseWidths: LiberationSansBoldItalicWidths,\\n    baseMapping: LiberationSansBoldItalicMapping,\\n    metrics: CalibriBoldItalicMetrics,\\n  };\\n  t[\\\"Segoeui-Regular\\\"] = {\\n    name: \\\"LiberationSans-Regular\\\",\\n    factors: SegoeuiRegularFactors,\\n    baseWidths: LiberationSansRegularWidths,\\n    baseMapping: LiberationSansRegularMapping,\\n    metrics: SegoeuiRegularMetrics,\\n  };\\n  t[\\\"Segoeui-Bold\\\"] = {\\n    name: \\\"LiberationSans-Bold\\\",\\n    factors: SegoeuiBoldFactors,\\n    baseWidths: LiberationSansBoldWidths,\\n    baseMapping: LiberationSansBoldMapping,\\n    metrics: SegoeuiBoldMetrics,\\n  };\\n  t[\\\"Segoeui-Italic\\\"] = {\\n    name: \\\"LiberationSans-Italic\\\",\\n    factors: SegoeuiItalicFactors,\\n    baseWidths: LiberationSansItalicWidths,\\n    baseMapping: LiberationSansItalicMapping,\\n    metrics: SegoeuiItalicMetrics,\\n  };\\n  t[\\\"Segoeui-BoldItalic\\\"] = {\\n    name: \\\"LiberationSans-BoldItalic\\\",\\n    factors: SegoeuiBoldItalicFactors,\\n    baseWidths: LiberationSansBoldItalicWidths,\\n    baseMapping: LiberationSansBoldItalicMapping,\\n    metrics: SegoeuiBoldItalicMetrics,\\n  };\\n  t[\\\"Helvetica-Regular\\\"] = t.Helvetica = {\\n    name: \\\"LiberationSans-Regular\\\",\\n    factors: HelveticaRegularFactors,\\n    baseWidths: LiberationSansRegularWidths,\\n    baseMapping: LiberationSansRegularMapping,\\n    metrics: HelveticaRegularMetrics,\\n  };\\n  t[\\\"Helvetica-Bold\\\"] = {\\n    name: \\\"LiberationSans-Bold\\\",\\n    factors: HelveticaBoldFactors,\\n    baseWidths: LiberationSansBoldWidths,\\n    baseMapping: LiberationSansBoldMapping,\\n    metrics: HelveticaBoldMetrics,\\n  };\\n  t[\\\"Helvetica-Italic\\\"] = {\\n    name: \\\"LiberationSans-Italic\\\",\\n    factors: HelveticaItalicFactors,\\n    baseWidths: LiberationSansItalicWidths,\\n    baseMapping: LiberationSansItalicMapping,\\n    metrics: HelveticaItalicMetrics,\\n  };\\n  t[\\\"Helvetica-BoldItalic\\\"] = {\\n    name: \\\"LiberationSans-BoldItalic\\\",\\n    factors: HelveticaBoldItalicFactors,\\n    baseWidths: LiberationSansBoldItalicWidths,\\n    baseMapping: LiberationSansBoldItalicMapping,\\n    metrics: HelveticaBoldItalicMetrics,\\n  };\\n});\\n\\nfunction getXfaFontName(name) {\\n  const fontName = normalizeFontName(name);\\n  const fontMap = getXFAFontMap();\\n  return fontMap[fontName];\\n}\\n\\nfunction getXfaFontWidths(name) {\\n  const info = getXfaFontName(name);\\n  if (!info) {\\n    return null;\\n  }\\n\\n  const { baseWidths, baseMapping, factors } = info;\\n  const rescaledBaseWidths = !factors\\n    ? baseWidths\\n    : baseWidths.map((w, i) => w * factors[i]);\\n\\n  let currentCode = -2;\\n  let currentArray;\\n\\n  \u002F\u002F Widths array for composite font is:\\n  \u002F\u002F CharCode1 [10, 20, 30] ...\\n  \u002F\u002F which means:\\n  \u002F\u002F   - CharCode1 has a width equal to 10\\n  \u002F\u002F   - CharCode1+1 has a width equal to 20\\n  \u002F\u002F   - CharCode1+2 has a width equal to 30\\n  \u002F\u002F\\n  \u002F\u002F The baseMapping array contains a map for glyph index to unicode.\\n  \u002F\u002F So from baseMapping we'll get sorted unicodes and their positions\\n  \u002F\u002F (i.e. glyph indices) and then we put widths in an array for the\\n  \u002F\u002F the consecutive unicodes.\\n  const newWidths = [];\\n  for (const [unicode, glyphIndex] of baseMapping\\n    .map(\\n      (charUnicode, index) => [\\n        charUnicode,\\n        index,\\n      ] \u002F* collect unicode and glyph index *\u002F\\n    )\\n    .sort(\\n      ([unicode1], [unicode2]) =>\\n        unicode1 - unicode2 \u002F* order by unicode only *\u002F\\n    )) {\\n    if (unicode === -1) {\\n      continue;\\n    }\\n\\n    if (unicode === currentCode + 1) {\\n      currentArray.push(rescaledBaseWidths[glyphIndex]);\\n      currentCode += 1;\\n    } else {\\n      currentCode = unicode;\\n      currentArray = [rescaledBaseWidths[glyphIndex]];\\n      newWidths.push(unicode, currentArray);\\n    }\\n  }\\n\\n  return newWidths;\\n}\\n\\nfunction getXfaFontDict(name) {\\n  const widths = getXfaFontWidths(name);\\n  const dict = new Dict(null);\\n  dict.set(\\\"BaseFont\\\", Name.get(name));\\n  dict.set(\\\"Type\\\", Name.get(\\\"Font\\\"));\\n  dict.set(\\\"Subtype\\\", Name.get(\\\"CIDFontType2\\\"));\\n  dict.set(\\\"Encoding\\\", Name.get(\\\"Identity-H\\\"));\\n  dict.set(\\\"CIDToGIDMap\\\", Name.get(\\\"Identity\\\"));\\n  dict.set(\\\"W\\\", widths);\\n  dict.set(\\\"FirstChar\\\", widths[0]);\\n  dict.set(\\\"LastChar\\\", widths.at(-2) + widths.at(-1).length - 1);\\n  const descriptor = new Dict(null);\\n  dict.set(\\\"FontDescriptor\\\", descriptor);\\n  const systemInfo = new Dict(null);\\n  systemInfo.set(\\\"Ordering\\\", \\\"Identity\\\");\\n  systemInfo.set(\\\"Registry\\\", \\\"Adobe\\\");\\n  systemInfo.set(\\\"Supplement\\\", 0);\\n  dict.set(\\\"CIDSystemInfo\\\", systemInfo);\\n\\n  return dict;\\n}\\n\\nexport { getXfaFontDict, getXfaFontName };\\n\",\"\u002F* Copyright 2014 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { FormatError, shadow } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { EOF } from \\\".\u002Fprimitives.js\\\";\\nimport { isWhiteSpace } from \\\".\u002Fcore_utils.js\\\";\\n\\nclass PostScriptParser {\\n  constructor(lexer) {\\n    this.lexer = lexer;\\n    this.operators = [];\\n    this.token = null;\\n    this.prev = null;\\n  }\\n\\n  nextToken() {\\n    this.prev = this.token;\\n    this.token = this.lexer.getToken();\\n  }\\n\\n  accept(type) {\\n    if (this.token.type === type) {\\n      this.nextToken();\\n      return true;\\n    }\\n    return false;\\n  }\\n\\n  expect(type) {\\n    if (this.accept(type)) {\\n      return true;\\n    }\\n    throw new FormatError(\\n      `Unexpected symbol: found ${this.token.type} expected ${type}.`\\n    );\\n  }\\n\\n  parse() {\\n    this.nextToken();\\n    this.expect(PostScriptTokenTypes.LBRACE);\\n    this.parseBlock();\\n    this.expect(PostScriptTokenTypes.RBRACE);\\n    return this.operators;\\n  }\\n\\n  parseBlock() {\\n    while (true) {\\n      if (this.accept(PostScriptTokenTypes.NUMBER)) {\\n        this.operators.push(this.prev.value);\\n      } else if (this.accept(PostScriptTokenTypes.OPERATOR)) {\\n        this.operators.push(this.prev.value);\\n      } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\\n        this.parseCondition();\\n      } else {\\n        return;\\n      }\\n    }\\n  }\\n\\n  parseCondition() {\\n    \u002F\u002F Add two place holders that will be updated later\\n    const conditionLocation = this.operators.length;\\n    this.operators.push(null, null);\\n\\n    this.parseBlock();\\n    this.expect(PostScriptTokenTypes.RBRACE);\\n    if (this.accept(PostScriptTokenTypes.IF)) {\\n      \u002F\u002F The true block is right after the 'if' so it just falls through on true\\n      \u002F\u002F else it jumps and skips the true block.\\n      this.operators[conditionLocation] = this.operators.length;\\n      this.operators[conditionLocation + 1] = \\\"jz\\\";\\n    } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\\n      const jumpLocation = this.operators.length;\\n      this.operators.push(null, null);\\n      const endOfTrue = this.operators.length;\\n      this.parseBlock();\\n      this.expect(PostScriptTokenTypes.RBRACE);\\n      this.expect(PostScriptTokenTypes.IFELSE);\\n      \u002F\u002F The jump is added at the end of the true block to skip the false block.\\n      this.operators[jumpLocation] = this.operators.length;\\n      this.operators[jumpLocation + 1] = \\\"j\\\";\\n\\n      this.operators[conditionLocation] = endOfTrue;\\n      this.operators[conditionLocation + 1] = \\\"jz\\\";\\n    } else {\\n      throw new FormatError(\\\"PS Function: error parsing conditional.\\\");\\n    }\\n  }\\n}\\n\\nconst PostScriptTokenTypes = {\\n  LBRACE: 0,\\n  RBRACE: 1,\\n  NUMBER: 2,\\n  OPERATOR: 3,\\n  IF: 4,\\n  IFELSE: 5,\\n};\\n\\nclass PostScriptToken {\\n  static get opCache() {\\n    return shadow(this, \\\"opCache\\\", Object.create(null));\\n  }\\n\\n  constructor(type, value) {\\n    this.type = type;\\n    this.value = value;\\n  }\\n\\n  static getOperator(op) {\\n    return (PostScriptToken.opCache[op] ||= new PostScriptToken(\\n      PostScriptTokenTypes.OPERATOR,\\n      op\\n    ));\\n  }\\n\\n  static get LBRACE() {\\n    return shadow(\\n      this,\\n      \\\"LBRACE\\\",\\n      new PostScriptToken(PostScriptTokenTypes.LBRACE, \\\"{\\\")\\n    );\\n  }\\n\\n  static get RBRACE() {\\n    return shadow(\\n      this,\\n      \\\"RBRACE\\\",\\n      new PostScriptToken(PostScriptTokenTypes.RBRACE, \\\"}\\\")\\n    );\\n  }\\n\\n  static get IF() {\\n    return shadow(\\n      this,\\n      \\\"IF\\\",\\n      new PostScriptToken(PostScriptTokenTypes.IF, \\\"IF\\\")\\n    );\\n  }\\n\\n  static get IFELSE() {\\n    return shadow(\\n      this,\\n      \\\"IFELSE\\\",\\n      new PostScriptToken(PostScriptTokenTypes.IFELSE, \\\"IFELSE\\\")\\n    );\\n  }\\n}\\n\\nclass PostScriptLexer {\\n  constructor(stream) {\\n    this.stream = stream;\\n    this.nextChar();\\n\\n    this.strBuf = [];\\n  }\\n\\n  nextChar() {\\n    return (this.currentChar = this.stream.getByte());\\n  }\\n\\n  getToken() {\\n    let comment = false;\\n    let ch = this.currentChar;\\n\\n    \u002F\u002F skip comments\\n    while (true) {\\n      if (ch \u003C 0) {\\n        return EOF;\\n      }\\n\\n      if (comment) {\\n        if (ch === 0x0a || ch === 0x0d) {\\n          comment = false;\\n        }\\n      } else if (ch === \u002F* '%' = *\u002F 0x25) {\\n        comment = true;\\n      } else if (!isWhiteSpace(ch)) {\\n        break;\\n      }\\n      ch = this.nextChar();\\n    }\\n    switch (ch | 0) {\\n      case 0x30: \u002F\u002F '0'\\n      case 0x31: \u002F\u002F '1'\\n      case 0x32: \u002F\u002F '2'\\n      case 0x33: \u002F\u002F '3'\\n      case 0x34: \u002F\u002F '4'\\n      case 0x35: \u002F\u002F '5'\\n      case 0x36: \u002F\u002F '6'\\n      case 0x37: \u002F\u002F '7'\\n      case 0x38: \u002F\u002F '8'\\n      case 0x39: \u002F\u002F '9'\\n      case 0x2b: \u002F\u002F '+'\\n      case 0x2d: \u002F\u002F '-'\\n      case 0x2e: \u002F\u002F '.'\\n        return new PostScriptToken(\\n          PostScriptTokenTypes.NUMBER,\\n          this.getNumber()\\n        );\\n      case 0x7b: \u002F\u002F '{'\\n        this.nextChar();\\n        return PostScriptToken.LBRACE;\\n      case 0x7d: \u002F\u002F '}'\\n        this.nextChar();\\n        return PostScriptToken.RBRACE;\\n    }\\n    \u002F\u002F operator\\n    const strBuf = this.strBuf;\\n    strBuf.length = 0;\\n    strBuf[0] = String.fromCharCode(ch);\\n\\n    while (\\n      (ch = this.nextChar()) >= 0 &&\\n      ((ch >= \u002F* 'A' = *\u002F 0x41 && ch \u003C= \u002F* 'Z' = *\u002F 0x5a) ||\\n        (ch >= \u002F* 'a' = *\u002F 0x61 && ch \u003C= \u002F* 'z' = *\u002F 0x7a))\\n    ) {\\n      strBuf.push(String.fromCharCode(ch));\\n    }\\n    const str = strBuf.join(\\\"\\\");\\n    switch (str.toLowerCase()) {\\n      case \\\"if\\\":\\n        return PostScriptToken.IF;\\n      case \\\"ifelse\\\":\\n        return PostScriptToken.IFELSE;\\n      default:\\n        return PostScriptToken.getOperator(str);\\n    }\\n  }\\n\\n  getNumber() {\\n    let ch = this.currentChar;\\n    const strBuf = this.strBuf;\\n    strBuf.length = 0;\\n    strBuf[0] = String.fromCharCode(ch);\\n\\n    while ((ch = this.nextChar()) >= 0) {\\n      if (\\n        (ch >= \u002F* '0' = *\u002F 0x30 && ch \u003C= \u002F* '9' = *\u002F 0x39) ||\\n        ch === \u002F* '-' = *\u002F 0x2d ||\\n        ch === \u002F* '.' = *\u002F 0x2e\\n      ) {\\n        strBuf.push(String.fromCharCode(ch));\\n      } else {\\n        break;\\n      }\\n    }\\n    const value = parseFloat(strBuf.join(\\\"\\\"));\\n    if (isNaN(value)) {\\n      throw new FormatError(`Invalid floating point number: ${value}`);\\n    }\\n    return value;\\n  }\\n}\\n\\nexport { PostScriptLexer, PostScriptParser };\\n\",\"\u002F* Copyright 2019 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  assert,\\n  MAX_IMAGE_SIZE_TO_CACHE,\\n  unreachable,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { RefSet, RefSetCache } from \\\".\u002Fprimitives.js\\\";\\n\\nclass BaseLocalCache {\\n  constructor(options) {\\n    if (this.constructor === BaseLocalCache) {\\n      unreachable(\\\"Cannot initialize BaseLocalCache.\\\");\\n    }\\n    this._onlyRefs = options?.onlyRefs === true;\\n\\n    if (!this._onlyRefs) {\\n      this._nameRefMap = new Map();\\n      this._imageMap = new Map();\\n    }\\n    this._imageCache = new RefSetCache();\\n  }\\n\\n  getByName(name) {\\n    if (this._onlyRefs) {\\n      unreachable(\\\"Should not call `getByName` method.\\\");\\n    }\\n    const ref = this._nameRefMap.get(name);\\n    if (ref) {\\n      return this.getByRef(ref);\\n    }\\n    return this._imageMap.get(name) || null;\\n  }\\n\\n  getByRef(ref) {\\n    return this._imageCache.get(ref) || null;\\n  }\\n\\n  set(name, ref, data) {\\n    unreachable(\\\"Abstract method `set` called.\\\");\\n  }\\n}\\n\\nclass LocalImageCache extends BaseLocalCache {\\n  set(name, ref = null, data) {\\n    if (typeof name !== \\\"string\\\") {\\n      throw new Error('LocalImageCache.set - expected \\\"name\\\" argument.');\\n    }\\n    if (ref) {\\n      if (this._imageCache.has(ref)) {\\n        return;\\n      }\\n      this._nameRefMap.set(name, ref);\\n      this._imageCache.put(ref, data);\\n      return;\\n    }\\n    \u002F\u002F name\\n    if (this._imageMap.has(name)) {\\n      return;\\n    }\\n    this._imageMap.set(name, data);\\n  }\\n}\\n\\nclass LocalColorSpaceCache extends BaseLocalCache {\\n  set(name = null, ref = null, data) {\\n    if (typeof name !== \\\"string\\\" && !ref) {\\n      throw new Error(\\n        'LocalColorSpaceCache.set - expected \\\"name\\\" and\u002For \\\"ref\\\" argument.'\\n      );\\n    }\\n    if (ref) {\\n      if (this._imageCache.has(ref)) {\\n        return;\\n      }\\n      if (name !== null) {\\n        \u002F\u002F Optional when `ref` is defined.\\n        this._nameRefMap.set(name, ref);\\n      }\\n      this._imageCache.put(ref, data);\\n      return;\\n    }\\n    \u002F\u002F name\\n    if (this._imageMap.has(name)) {\\n      return;\\n    }\\n    this._imageMap.set(name, data);\\n  }\\n}\\n\\nclass LocalFunctionCache extends BaseLocalCache {\\n  constructor(options) {\\n    super({ onlyRefs: true });\\n  }\\n\\n  set(name = null, ref, data) {\\n    if (!ref) {\\n      throw new Error('LocalFunctionCache.set - expected \\\"ref\\\" argument.');\\n    }\\n    if (this._imageCache.has(ref)) {\\n      return;\\n    }\\n    this._imageCache.put(ref, data);\\n  }\\n}\\n\\nclass LocalGStateCache extends BaseLocalCache {\\n  set(name, ref = null, data) {\\n    if (typeof name !== \\\"string\\\") {\\n      throw new Error('LocalGStateCache.set - expected \\\"name\\\" argument.');\\n    }\\n    if (ref) {\\n      if (this._imageCache.has(ref)) {\\n        return;\\n      }\\n      this._nameRefMap.set(name, ref);\\n      this._imageCache.put(ref, data);\\n      return;\\n    }\\n    \u002F\u002F name\\n    if (this._imageMap.has(name)) {\\n      return;\\n    }\\n    this._imageMap.set(name, data);\\n  }\\n}\\n\\nclass LocalTilingPatternCache extends BaseLocalCache {\\n  constructor(options) {\\n    super({ onlyRefs: true });\\n  }\\n\\n  set(name = null, ref, data) {\\n    if (!ref) {\\n      throw new Error('LocalTilingPatternCache.set - expected \\\"ref\\\" argument.');\\n    }\\n    if (this._imageCache.has(ref)) {\\n      return;\\n    }\\n    this._imageCache.put(ref, data);\\n  }\\n}\\n\\nclass RegionalImageCache extends BaseLocalCache {\\n  constructor(options) {\\n    super({ onlyRefs: true });\\n  }\\n\\n  set(name = null, ref, data) {\\n    if (!ref) {\\n      throw new Error('RegionalImageCache.set - expected \\\"ref\\\" argument.');\\n    }\\n    if (this._imageCache.has(ref)) {\\n      return;\\n    }\\n    this._imageCache.put(ref, data);\\n  }\\n}\\n\\nclass GlobalImageCache {\\n  static NUM_PAGES_THRESHOLD = 2;\\n\\n  static MIN_IMAGES_TO_CACHE = 10;\\n\\n  static MAX_BYTE_SIZE = 5 * MAX_IMAGE_SIZE_TO_CACHE;\\n\\n  #decodeFailedSet = new RefSet();\\n\\n  constructor() {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        GlobalImageCache.NUM_PAGES_THRESHOLD > 1,\\n        \\\"GlobalImageCache - invalid NUM_PAGES_THRESHOLD constant.\\\"\\n      );\\n    }\\n    this._refCache = new RefSetCache();\\n    this._imageCache = new RefSetCache();\\n  }\\n\\n  get #byteSize() {\\n    let byteSize = 0;\\n    for (const imageData of this._imageCache) {\\n      byteSize += imageData.byteSize;\\n    }\\n    return byteSize;\\n  }\\n\\n  get #cacheLimitReached() {\\n    if (this._imageCache.size \u003C GlobalImageCache.MIN_IMAGES_TO_CACHE) {\\n      return false;\\n    }\\n    if (this.#byteSize \u003C GlobalImageCache.MAX_BYTE_SIZE) {\\n      return false;\\n    }\\n    return true;\\n  }\\n\\n  shouldCache(ref, pageIndex) {\\n    let pageIndexSet = this._refCache.get(ref);\\n    if (!pageIndexSet) {\\n      pageIndexSet = new Set();\\n      this._refCache.put(ref, pageIndexSet);\\n    }\\n    pageIndexSet.add(pageIndex);\\n\\n    if (pageIndexSet.size \u003C GlobalImageCache.NUM_PAGES_THRESHOLD) {\\n      return false;\\n    }\\n    if (!this._imageCache.has(ref) && this.#cacheLimitReached) {\\n      return false;\\n    }\\n    return true;\\n  }\\n\\n  addDecodeFailed(ref) {\\n    this.#decodeFailedSet.put(ref);\\n  }\\n\\n  hasDecodeFailed(ref) {\\n    return this.#decodeFailedSet.has(ref);\\n  }\\n\\n  \u002F**\\n   * PLEASE NOTE: Must be called *after* the `setData` method.\\n   *\u002F\\n  addByteSize(ref, byteSize) {\\n    const imageData = this._imageCache.get(ref);\\n    if (!imageData) {\\n      return; \u002F\u002F The image data isn't cached (the limit was reached).\\n    }\\n    if (imageData.byteSize) {\\n      return; \u002F\u002F The byte-size has already been set.\\n    }\\n    imageData.byteSize = byteSize;\\n  }\\n\\n  getData(ref, pageIndex) {\\n    const pageIndexSet = this._refCache.get(ref);\\n    if (!pageIndexSet) {\\n      return null;\\n    }\\n    if (pageIndexSet.size \u003C GlobalImageCache.NUM_PAGES_THRESHOLD) {\\n      return null;\\n    }\\n    const imageData = this._imageCache.get(ref);\\n    if (!imageData) {\\n      return null;\\n    }\\n    \u002F\u002F Ensure that we keep track of all pages containing the image reference.\\n    pageIndexSet.add(pageIndex);\\n\\n    return imageData;\\n  }\\n\\n  setData(ref, data) {\\n    if (!this._refCache.has(ref)) {\\n      throw new Error(\\n        'GlobalImageCache.setData - expected \\\"shouldCache\\\" to have been called.'\\n      );\\n    }\\n    if (this._imageCache.has(ref)) {\\n      return;\\n    }\\n    if (this.#cacheLimitReached) {\\n      warn(\\\"GlobalImageCache.setData - cache limit reached.\\\");\\n      return;\\n    }\\n    this._imageCache.put(ref, data);\\n  }\\n\\n  clear(onlyData = false) {\\n    if (!onlyData) {\\n      this.#decodeFailedSet.clear();\\n      this._refCache.clear();\\n    }\\n    this._imageCache.clear();\\n  }\\n}\\n\\nexport {\\n  GlobalImageCache,\\n  LocalColorSpaceCache,\\n  LocalFunctionCache,\\n  LocalGStateCache,\\n  LocalImageCache,\\n  LocalTilingPatternCache,\\n  RegionalImageCache,\\n};\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { Dict, Ref } from \\\".\u002Fprimitives.js\\\";\\nimport {\\n  FeatureTest,\\n  FormatError,\\n  info,\\n  shadow,\\n  unreachable,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { PostScriptLexer, PostScriptParser } from \\\".\u002Fps_parser.js\\\";\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { isNumberArray } from \\\".\u002Fcore_utils.js\\\";\\nimport { LocalFunctionCache } from \\\".\u002Fimage_utils.js\\\";\\n\\nclass PDFFunctionFactory {\\n  constructor({ xref, isEvalSupported = true }) {\\n    this.xref = xref;\\n    this.isEvalSupported = isEvalSupported !== false;\\n  }\\n\\n  create(fn) {\\n    const cachedFunction = this.getCached(fn);\\n    if (cachedFunction) {\\n      return cachedFunction;\\n    }\\n    const parsedFunction = PDFFunction.parse({\\n      xref: this.xref,\\n      isEvalSupported: this.isEvalSupported,\\n      fn: fn instanceof Ref ? this.xref.fetch(fn) : fn,\\n    });\\n\\n    \u002F\u002F Attempt to cache the parsed Function, by reference.\\n    this._cache(fn, parsedFunction);\\n\\n    return parsedFunction;\\n  }\\n\\n  createFromArray(fnObj) {\\n    const cachedFunction = this.getCached(fnObj);\\n    if (cachedFunction) {\\n      return cachedFunction;\\n    }\\n    const parsedFunction = PDFFunction.parseArray({\\n      xref: this.xref,\\n      isEvalSupported: this.isEvalSupported,\\n      fnObj: fnObj instanceof Ref ? this.xref.fetch(fnObj) : fnObj,\\n    });\\n\\n    \u002F\u002F Attempt to cache the parsed Function, by reference.\\n    this._cache(fnObj, parsedFunction);\\n\\n    return parsedFunction;\\n  }\\n\\n  getCached(cacheKey) {\\n    let fnRef;\\n    if (cacheKey instanceof Ref) {\\n      fnRef = cacheKey;\\n    } else if (cacheKey instanceof Dict) {\\n      fnRef = cacheKey.objId;\\n    } else if (cacheKey instanceof BaseStream) {\\n      fnRef = cacheKey.dict?.objId;\\n    }\\n    if (fnRef) {\\n      const localFunction = this._localFunctionCache.getByRef(fnRef);\\n      if (localFunction) {\\n        return localFunction;\\n      }\\n    }\\n    return null;\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _cache(cacheKey, parsedFunction) {\\n    if (!parsedFunction) {\\n      throw new Error(\\n        'PDFFunctionFactory._cache - expected \\\"parsedFunction\\\" argument.'\\n      );\\n    }\\n    let fnRef;\\n    if (cacheKey instanceof Ref) {\\n      fnRef = cacheKey;\\n    } else if (cacheKey instanceof Dict) {\\n      fnRef = cacheKey.objId;\\n    } else if (cacheKey instanceof BaseStream) {\\n      fnRef = cacheKey.dict?.objId;\\n    }\\n    if (fnRef) {\\n      this._localFunctionCache.set(\u002F* name = *\u002F null, fnRef, parsedFunction);\\n    }\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  get _localFunctionCache() {\\n    return shadow(this, \\\"_localFunctionCache\\\", new LocalFunctionCache());\\n  }\\n}\\n\\nfunction toNumberArray(arr) {\\n  if (!Array.isArray(arr)) {\\n    return null;\\n  }\\n  if (!isNumberArray(arr, null)) {\\n    \u002F\u002F Non-number is found -- convert all items to numbers.\\n    return arr.map(x => +x);\\n  }\\n  return arr;\\n}\\n\\nclass PDFFunction {\\n  static getSampleArray(size, outputSize, bps, stream) {\\n    let i, ii;\\n    let length = 1;\\n    for (i = 0, ii = size.length; i \u003C ii; i++) {\\n      length *= size[i];\\n    }\\n    length *= outputSize;\\n\\n    const array = new Array(length);\\n    let codeSize = 0;\\n    let codeBuf = 0;\\n    \u002F\u002F 32 is a valid bps so shifting won't work\\n    const sampleMul = 1.0 \u002F (2.0 ** bps - 1);\\n\\n    const strBytes = stream.getBytes((length * bps + 7) \u002F 8);\\n    let strIdx = 0;\\n    for (i = 0; i \u003C length; i++) {\\n      while (codeSize \u003C bps) {\\n        codeBuf \u003C\u003C= 8;\\n        codeBuf |= strBytes[strIdx++];\\n        codeSize += 8;\\n      }\\n      codeSize -= bps;\\n      array[i] = (codeBuf >> codeSize) * sampleMul;\\n      codeBuf &= (1 \u003C\u003C codeSize) - 1;\\n    }\\n    return array;\\n  }\\n\\n  static parse({ xref, isEvalSupported, fn }) {\\n    const dict = fn.dict || fn;\\n    const typeNum = dict.get(\\\"FunctionType\\\");\\n\\n    switch (typeNum) {\\n      case 0:\\n        return this.constructSampled({ xref, isEvalSupported, fn, dict });\\n      case 1:\\n        break;\\n      case 2:\\n        return this.constructInterpolated({ xref, isEvalSupported, dict });\\n      case 3:\\n        return this.constructStiched({ xref, isEvalSupported, dict });\\n      case 4:\\n        return this.constructPostScript({ xref, isEvalSupported, fn, dict });\\n    }\\n    throw new FormatError(\\\"Unknown type of function\\\");\\n  }\\n\\n  static parseArray({ xref, isEvalSupported, fnObj }) {\\n    if (!Array.isArray(fnObj)) {\\n      \u002F\u002F not an array -- parsing as regular function\\n      return this.parse({ xref, isEvalSupported, fn: fnObj });\\n    }\\n\\n    const fnArray = [];\\n    for (const fn of fnObj) {\\n      fnArray.push(\\n        this.parse({ xref, isEvalSupported, fn: xref.fetchIfRef(fn) })\\n      );\\n    }\\n    return function (src, srcOffset, dest, destOffset) {\\n      for (let i = 0, ii = fnArray.length; i \u003C ii; i++) {\\n        fnArray[i](src, srcOffset, dest, destOffset + i);\\n      }\\n    };\\n  }\\n\\n  static constructSampled({ xref, isEvalSupported, fn, dict }) {\\n    function toMultiArray(arr) {\\n      const inputLength = arr.length;\\n      const out = [];\\n      let index = 0;\\n      for (let i = 0; i \u003C inputLength; i += 2) {\\n        out[index++] = [arr[i], arr[i + 1]];\\n      }\\n      return out;\\n    }\\n    \u002F\u002F See chapter 3, page 109 of the PDF reference\\n    function interpolate(x, xmin, xmax, ymin, ymax) {\\n      return ymin + (x - xmin) * ((ymax - ymin) \u002F (xmax - xmin));\\n    }\\n\\n    let domain = toNumberArray(dict.getArray(\\\"Domain\\\"));\\n    let range = toNumberArray(dict.getArray(\\\"Range\\\"));\\n\\n    if (!domain || !range) {\\n      throw new FormatError(\\\"No domain or range\\\");\\n    }\\n\\n    const inputSize = domain.length \u002F 2;\\n    const outputSize = range.length \u002F 2;\\n\\n    domain = toMultiArray(domain);\\n    range = toMultiArray(range);\\n\\n    const size = toNumberArray(dict.getArray(\\\"Size\\\"));\\n    const bps = dict.get(\\\"BitsPerSample\\\");\\n    const order = dict.get(\\\"Order\\\") || 1;\\n    if (order !== 1) {\\n      \u002F\u002F No description how cubic spline interpolation works in PDF32000:2008\\n      \u002F\u002F As in poppler, ignoring order, linear interpolation may work as good\\n      info(\\\"No support for cubic spline interpolation: \\\" + order);\\n    }\\n\\n    let encode = toNumberArray(dict.getArray(\\\"Encode\\\"));\\n    if (!encode) {\\n      encode = [];\\n      for (let i = 0; i \u003C inputSize; ++i) {\\n        encode.push([0, size[i] - 1]);\\n      }\\n    } else {\\n      encode = toMultiArray(encode);\\n    }\\n\\n    let decode = toNumberArray(dict.getArray(\\\"Decode\\\"));\\n    decode = !decode ? range : toMultiArray(decode);\\n\\n    const samples = this.getSampleArray(size, outputSize, bps, fn);\\n    \u002F\u002F const mask = 2 ** bps - 1;\\n\\n    return function constructSampledFn(src, srcOffset, dest, destOffset) {\\n      \u002F\u002F See chapter 3, page 110 of the PDF reference.\\n\\n      \u002F\u002F Building the cube vertices: its part and sample index\\n      \u002F\u002F http:\u002F\u002Frjwagner49.com\u002FMathematics\u002FInterpolation.pdf\\n      const cubeVertices = 1 \u003C\u003C inputSize;\\n      const cubeN = new Float64Array(cubeVertices);\\n      const cubeVertex = new Uint32Array(cubeVertices);\\n      let i, j;\\n      for (j = 0; j \u003C cubeVertices; j++) {\\n        cubeN[j] = 1;\\n      }\\n\\n      let k = outputSize,\\n        pos = 1;\\n      \u002F\u002F Map x_i to y_j for 0 \u003C= i \u003C m using the sampled function.\\n      for (i = 0; i \u003C inputSize; ++i) {\\n        \u002F\u002F x_i' = min(max(x_i, Domain_2i), Domain_2i+1)\\n        const domain_2i = domain[i][0];\\n        const domain_2i_1 = domain[i][1];\\n        const xi = Math.min(\\n          Math.max(src[srcOffset + i], domain_2i),\\n          domain_2i_1\\n        );\\n\\n        \u002F\u002F e_i = Interpolate(x_i', Domain_2i, Domain_2i+1,\\n        \u002F\u002F                   Encode_2i, Encode_2i+1)\\n        let e = interpolate(\\n          xi,\\n          domain_2i,\\n          domain_2i_1,\\n          encode[i][0],\\n          encode[i][1]\\n        );\\n\\n        \u002F\u002F e_i' = min(max(e_i, 0), Size_i - 1)\\n        const size_i = size[i];\\n        e = Math.min(Math.max(e, 0), size_i - 1);\\n\\n        \u002F\u002F Adjusting the cube: N and vertex sample index\\n        const e0 = e \u003C size_i - 1 ? Math.floor(e) : e - 1; \u002F\u002F e1 = e0 + 1;\\n        const n0 = e0 + 1 - e; \u002F\u002F (e1 - e) \u002F (e1 - e0);\\n        const n1 = e - e0; \u002F\u002F (e - e0) \u002F (e1 - e0);\\n        const offset0 = e0 * k;\\n        const offset1 = offset0 + k; \u002F\u002F e1 * k\\n        for (j = 0; j \u003C cubeVertices; j++) {\\n          if (j & pos) {\\n            cubeN[j] *= n1;\\n            cubeVertex[j] += offset1;\\n          } else {\\n            cubeN[j] *= n0;\\n            cubeVertex[j] += offset0;\\n          }\\n        }\\n\\n        k *= size_i;\\n        pos \u003C\u003C= 1;\\n      }\\n\\n      for (j = 0; j \u003C outputSize; ++j) {\\n        \u002F\u002F Sum all cube vertices' samples portions\\n        let rj = 0;\\n        for (i = 0; i \u003C cubeVertices; i++) {\\n          rj += samples[cubeVertex[i] + j] * cubeN[i];\\n        }\\n\\n        \u002F\u002F r_j' = Interpolate(r_j, 0, 2^BitsPerSample - 1,\\n        \u002F\u002F                    Decode_2j, Decode_2j+1)\\n        rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);\\n\\n        \u002F\u002F y_j = min(max(r_j, range_2j), range_2j+1)\\n        dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), range[j][1]);\\n      }\\n    };\\n  }\\n\\n  static constructInterpolated({ xref, isEvalSupported, dict }) {\\n    const c0 = toNumberArray(dict.getArray(\\\"C0\\\")) || [0];\\n    const c1 = toNumberArray(dict.getArray(\\\"C1\\\")) || [1];\\n    const n = dict.get(\\\"N\\\");\\n\\n    const diff = [];\\n    for (let i = 0, ii = c0.length; i \u003C ii; ++i) {\\n      diff.push(c1[i] - c0[i]);\\n    }\\n    const length = diff.length;\\n\\n    return function constructInterpolatedFn(src, srcOffset, dest, destOffset) {\\n      const x = n === 1 ? src[srcOffset] : src[srcOffset] ** n;\\n\\n      for (let j = 0; j \u003C length; ++j) {\\n        dest[destOffset + j] = c0[j] + x * diff[j];\\n      }\\n    };\\n  }\\n\\n  static constructStiched({ xref, isEvalSupported, dict }) {\\n    const domain = toNumberArray(dict.getArray(\\\"Domain\\\"));\\n\\n    if (!domain) {\\n      throw new FormatError(\\\"No domain\\\");\\n    }\\n\\n    const inputSize = domain.length \u002F 2;\\n    if (inputSize !== 1) {\\n      throw new FormatError(\\\"Bad domain for stiched function\\\");\\n    }\\n\\n    const fns = [];\\n    for (const fn of dict.get(\\\"Functions\\\")) {\\n      fns.push(this.parse({ xref, isEvalSupported, fn: xref.fetchIfRef(fn) }));\\n    }\\n\\n    const bounds = toNumberArray(dict.getArray(\\\"Bounds\\\"));\\n    const encode = toNumberArray(dict.getArray(\\\"Encode\\\"));\\n    const tmpBuf = new Float32Array(1);\\n\\n    return function constructStichedFn(src, srcOffset, dest, destOffset) {\\n      const clip = function constructStichedFromIRClip(v, min, max) {\\n        if (v > max) {\\n          v = max;\\n        } else if (v \u003C min) {\\n          v = min;\\n        }\\n        return v;\\n      };\\n\\n      \u002F\u002F clip to domain\\n      const v = clip(src[srcOffset], domain[0], domain[1]);\\n      \u002F\u002F calculate which bound the value is in\\n      const length = bounds.length;\\n      let i;\\n      for (i = 0; i \u003C length; ++i) {\\n        if (v \u003C bounds[i]) {\\n          break;\\n        }\\n      }\\n\\n      \u002F\u002F encode value into domain of function\\n      let dmin = domain[0];\\n      if (i > 0) {\\n        dmin = bounds[i - 1];\\n      }\\n      let dmax = domain[1];\\n      if (i \u003C bounds.length) {\\n        dmax = bounds[i];\\n      }\\n\\n      const rmin = encode[2 * i];\\n      const rmax = encode[2 * i + 1];\\n\\n      \u002F\u002F Prevent the value from becoming NaN as a result\\n      \u002F\u002F of division by zero (fixes issue6113.pdf).\\n      tmpBuf[0] =\\n        dmin === dmax\\n          ? rmin\\n          : rmin + ((v - dmin) * (rmax - rmin)) \u002F (dmax - dmin);\\n\\n      \u002F\u002F call the appropriate function\\n      fns[i](tmpBuf, 0, dest, destOffset);\\n    };\\n  }\\n\\n  static constructPostScript({ xref, isEvalSupported, fn, dict }) {\\n    const domain = toNumberArray(dict.getArray(\\\"Domain\\\"));\\n    const range = toNumberArray(dict.getArray(\\\"Range\\\"));\\n\\n    if (!domain) {\\n      throw new FormatError(\\\"No domain.\\\");\\n    }\\n\\n    if (!range) {\\n      throw new FormatError(\\\"No range.\\\");\\n    }\\n\\n    const lexer = new PostScriptLexer(fn);\\n    const parser = new PostScriptParser(lexer);\\n    const code = parser.parse();\\n\\n    if (isEvalSupported && FeatureTest.isEvalSupported) {\\n      const compiled = new PostScriptCompiler().compile(code, domain, range);\\n      if (compiled) {\\n        \u002F\u002F Compiled function consists of simple expressions such as addition,\\n        \u002F\u002F subtraction, Math.max, and also contains 'var' and 'return'\\n        \u002F\u002F statements. See the generation in the PostScriptCompiler below.\\n        \u002F\u002F eslint-disable-next-line no-new-func\\n        return new Function(\\\"src\\\", \\\"srcOffset\\\", \\\"dest\\\", \\\"destOffset\\\", compiled);\\n      }\\n    }\\n    info(\\\"Unable to compile PS function\\\");\\n\\n    const numOutputs = range.length >> 1;\\n    const numInputs = domain.length >> 1;\\n    const evaluator = new PostScriptEvaluator(code);\\n    \u002F\u002F Cache the values for a big speed up, the cache size is limited though\\n    \u002F\u002F since the number of possible values can be huge from a PS function.\\n    const cache = Object.create(null);\\n    \u002F\u002F The MAX_CACHE_SIZE is set to ~4x the maximum number of distinct values\\n    \u002F\u002F seen in our tests.\\n    const MAX_CACHE_SIZE = 2048 * 4;\\n    let cache_available = MAX_CACHE_SIZE;\\n    const tmpBuf = new Float32Array(numInputs);\\n\\n    return function constructPostScriptFn(src, srcOffset, dest, destOffset) {\\n      let i, value;\\n      let key = \\\"\\\";\\n      const input = tmpBuf;\\n      for (i = 0; i \u003C numInputs; i++) {\\n        value = src[srcOffset + i];\\n        input[i] = value;\\n        key += value + \\\"_\\\";\\n      }\\n\\n      const cachedValue = cache[key];\\n      if (cachedValue !== undefined) {\\n        dest.set(cachedValue, destOffset);\\n        return;\\n      }\\n\\n      const output = new Float32Array(numOutputs);\\n      const stack = evaluator.execute(input);\\n      const stackIndex = stack.length - numOutputs;\\n      for (i = 0; i \u003C numOutputs; i++) {\\n        value = stack[stackIndex + i];\\n        let bound = range[i * 2];\\n        if (value \u003C bound) {\\n          value = bound;\\n        } else {\\n          bound = range[i * 2 + 1];\\n          if (value > bound) {\\n            value = bound;\\n          }\\n        }\\n        output[i] = value;\\n      }\\n      if (cache_available > 0) {\\n        cache_available--;\\n        cache[key] = output;\\n      }\\n      dest.set(output, destOffset);\\n    };\\n  }\\n}\\n\\nfunction isPDFFunction(v) {\\n  let fnDict;\\n  if (v instanceof Dict) {\\n    fnDict = v;\\n  } else if (v instanceof BaseStream) {\\n    fnDict = v.dict;\\n  } else {\\n    return false;\\n  }\\n  return fnDict.has(\\\"FunctionType\\\");\\n}\\n\\nclass PostScriptStack {\\n  static MAX_STACK_SIZE = 100;\\n\\n  constructor(initialStack) {\\n    this.stack = initialStack ? Array.from(initialStack) : [];\\n  }\\n\\n  push(value) {\\n    if (this.stack.length >= PostScriptStack.MAX_STACK_SIZE) {\\n      throw new Error(\\\"PostScript function stack overflow.\\\");\\n    }\\n    this.stack.push(value);\\n  }\\n\\n  pop() {\\n    if (this.stack.length \u003C= 0) {\\n      throw new Error(\\\"PostScript function stack underflow.\\\");\\n    }\\n    return this.stack.pop();\\n  }\\n\\n  copy(n) {\\n    if (this.stack.length + n >= PostScriptStack.MAX_STACK_SIZE) {\\n      throw new Error(\\\"PostScript function stack overflow.\\\");\\n    }\\n    const stack = this.stack;\\n    for (let i = stack.length - n, j = n - 1; j >= 0; j--, i++) {\\n      stack.push(stack[i]);\\n    }\\n  }\\n\\n  index(n) {\\n    this.push(this.stack[this.stack.length - n - 1]);\\n  }\\n\\n  \u002F\u002F rotate the last n stack elements p times\\n  roll(n, p) {\\n    const stack = this.stack;\\n    const l = stack.length - n;\\n    const r = stack.length - 1;\\n    const c = l + (p - Math.floor(p \u002F n) * n);\\n\\n    for (let i = l, j = r; i \u003C j; i++, j--) {\\n      const t = stack[i];\\n      stack[i] = stack[j];\\n      stack[j] = t;\\n    }\\n    for (let i = l, j = c - 1; i \u003C j; i++, j--) {\\n      const t = stack[i];\\n      stack[i] = stack[j];\\n      stack[j] = t;\\n    }\\n    for (let i = c, j = r; i \u003C j; i++, j--) {\\n      const t = stack[i];\\n      stack[i] = stack[j];\\n      stack[j] = t;\\n    }\\n  }\\n}\\n\\nclass PostScriptEvaluator {\\n  constructor(operators) {\\n    this.operators = operators;\\n  }\\n\\n  execute(initialStack) {\\n    const stack = new PostScriptStack(initialStack);\\n    let counter = 0;\\n    const operators = this.operators;\\n    const length = operators.length;\\n    let operator, a, b;\\n    while (counter \u003C length) {\\n      operator = operators[counter++];\\n      if (typeof operator === \\\"number\\\") {\\n        \u002F\u002F Operator is really an operand and should be pushed to the stack.\\n        stack.push(operator);\\n        continue;\\n      }\\n      switch (operator) {\\n        \u002F\u002F non standard ps operators\\n        case \\\"jz\\\": \u002F\u002F jump if false\\n          b = stack.pop();\\n          a = stack.pop();\\n          if (!a) {\\n            counter = b;\\n          }\\n          break;\\n        case \\\"j\\\": \u002F\u002F jump\\n          a = stack.pop();\\n          counter = a;\\n          break;\\n\\n        \u002F\u002F all ps operators in alphabetical order (excluding if\u002Fifelse)\\n        case \\\"abs\\\":\\n          a = stack.pop();\\n          stack.push(Math.abs(a));\\n          break;\\n        case \\\"add\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          stack.push(a + b);\\n          break;\\n        case \\\"and\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          if (typeof a === \\\"boolean\\\" && typeof b === \\\"boolean\\\") {\\n            stack.push(a && b);\\n          } else {\\n            stack.push(a & b);\\n          }\\n          break;\\n        case \\\"atan\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          a = (Math.atan2(a, b) \u002F Math.PI) * 180;\\n          if (a \u003C 0) {\\n            a += 360;\\n          }\\n          stack.push(a);\\n          break;\\n        case \\\"bitshift\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          if (a > 0) {\\n            stack.push(a \u003C\u003C b);\\n          } else {\\n            stack.push(a >> b);\\n          }\\n          break;\\n        case \\\"ceiling\\\":\\n          a = stack.pop();\\n          stack.push(Math.ceil(a));\\n          break;\\n        case \\\"copy\\\":\\n          a = stack.pop();\\n          stack.copy(a);\\n          break;\\n        case \\\"cos\\\":\\n          a = stack.pop();\\n          stack.push(Math.cos(((a % 360) \u002F 180) * Math.PI));\\n          break;\\n        case \\\"cvi\\\":\\n          a = stack.pop() | 0;\\n          stack.push(a);\\n          break;\\n        case \\\"cvr\\\":\\n          \u002F\u002F noop\\n          break;\\n        case \\\"div\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          stack.push(a \u002F b);\\n          break;\\n        case \\\"dup\\\":\\n          stack.copy(1);\\n          break;\\n        case \\\"eq\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          stack.push(a === b);\\n          break;\\n        case \\\"exch\\\":\\n          stack.roll(2, 1);\\n          break;\\n        case \\\"exp\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          stack.push(a ** b);\\n          break;\\n        case \\\"false\\\":\\n          stack.push(false);\\n          break;\\n        case \\\"floor\\\":\\n          a = stack.pop();\\n          stack.push(Math.floor(a));\\n          break;\\n        case \\\"ge\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          stack.push(a >= b);\\n          break;\\n        case \\\"gt\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          stack.push(a > b);\\n          break;\\n        case \\\"idiv\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          stack.push((a \u002F b) | 0);\\n          break;\\n        case \\\"index\\\":\\n          a = stack.pop();\\n          stack.index(a);\\n          break;\\n        case \\\"le\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          stack.push(a \u003C= b);\\n          break;\\n        case \\\"ln\\\":\\n          a = stack.pop();\\n          stack.push(Math.log(a));\\n          break;\\n        case \\\"log\\\":\\n          a = stack.pop();\\n          stack.push(Math.log10(a));\\n          break;\\n        case \\\"lt\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          stack.push(a \u003C b);\\n          break;\\n        case \\\"mod\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          stack.push(a % b);\\n          break;\\n        case \\\"mul\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          stack.push(a * b);\\n          break;\\n        case \\\"ne\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          stack.push(a !== b);\\n          break;\\n        case \\\"neg\\\":\\n          a = stack.pop();\\n          stack.push(-a);\\n          break;\\n        case \\\"not\\\":\\n          a = stack.pop();\\n          if (typeof a === \\\"boolean\\\") {\\n            stack.push(!a);\\n          } else {\\n            stack.push(~a);\\n          }\\n          break;\\n        case \\\"or\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          if (typeof a === \\\"boolean\\\" && typeof b === \\\"boolean\\\") {\\n            stack.push(a || b);\\n          } else {\\n            stack.push(a | b);\\n          }\\n          break;\\n        case \\\"pop\\\":\\n          stack.pop();\\n          break;\\n        case \\\"roll\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          stack.roll(a, b);\\n          break;\\n        case \\\"round\\\":\\n          a = stack.pop();\\n          stack.push(Math.round(a));\\n          break;\\n        case \\\"sin\\\":\\n          a = stack.pop();\\n          stack.push(Math.sin(((a % 360) \u002F 180) * Math.PI));\\n          break;\\n        case \\\"sqrt\\\":\\n          a = stack.pop();\\n          stack.push(Math.sqrt(a));\\n          break;\\n        case \\\"sub\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          stack.push(a - b);\\n          break;\\n        case \\\"true\\\":\\n          stack.push(true);\\n          break;\\n        case \\\"truncate\\\":\\n          a = stack.pop();\\n          a = a \u003C 0 ? Math.ceil(a) : Math.floor(a);\\n          stack.push(a);\\n          break;\\n        case \\\"xor\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          if (typeof a === \\\"boolean\\\" && typeof b === \\\"boolean\\\") {\\n            stack.push(a !== b);\\n          } else {\\n            stack.push(a ^ b);\\n          }\\n          break;\\n        default:\\n          throw new FormatError(`Unknown operator ${operator}`);\\n      }\\n    }\\n    return stack.stack;\\n  }\\n}\\n\\nclass AstNode {\\n  constructor(type) {\\n    this.type = type;\\n  }\\n\\n  visit(visitor) {\\n    unreachable(\\\"abstract method\\\");\\n  }\\n}\\n\\nclass AstArgument extends AstNode {\\n  constructor(index, min, max) {\\n    super(\\\"args\\\");\\n    this.index = index;\\n    this.min = min;\\n    this.max = max;\\n  }\\n\\n  visit(visitor) {\\n    visitor.visitArgument(this);\\n  }\\n}\\n\\nclass AstLiteral extends AstNode {\\n  constructor(number) {\\n    super(\\\"literal\\\");\\n    this.number = number;\\n    this.min = number;\\n    this.max = number;\\n  }\\n\\n  visit(visitor) {\\n    visitor.visitLiteral(this);\\n  }\\n}\\n\\nclass AstBinaryOperation extends AstNode {\\n  constructor(op, arg1, arg2, min, max) {\\n    super(\\\"binary\\\");\\n    this.op = op;\\n    this.arg1 = arg1;\\n    this.arg2 = arg2;\\n    this.min = min;\\n    this.max = max;\\n  }\\n\\n  visit(visitor) {\\n    visitor.visitBinaryOperation(this);\\n  }\\n}\\n\\nclass AstMin extends AstNode {\\n  constructor(arg, max) {\\n    super(\\\"max\\\");\\n    this.arg = arg;\\n    this.min = arg.min;\\n    this.max = max;\\n  }\\n\\n  visit(visitor) {\\n    visitor.visitMin(this);\\n  }\\n}\\n\\nclass AstVariable extends AstNode {\\n  constructor(index, min, max) {\\n    super(\\\"var\\\");\\n    this.index = index;\\n    this.min = min;\\n    this.max = max;\\n  }\\n\\n  visit(visitor) {\\n    visitor.visitVariable(this);\\n  }\\n}\\n\\nclass AstVariableDefinition extends AstNode {\\n  constructor(variable, arg) {\\n    super(\\\"definition\\\");\\n    this.variable = variable;\\n    this.arg = arg;\\n  }\\n\\n  visit(visitor) {\\n    visitor.visitVariableDefinition(this);\\n  }\\n}\\n\\nclass ExpressionBuilderVisitor {\\n  constructor() {\\n    this.parts = [];\\n  }\\n\\n  visitArgument(arg) {\\n    this.parts.push(\\n      \\\"Math.max(\\\",\\n      arg.min,\\n      \\\", Math.min(\\\",\\n      arg.max,\\n      \\\", src[srcOffset + \\\",\\n      arg.index,\\n      \\\"]))\\\"\\n    );\\n  }\\n\\n  visitVariable(variable) {\\n    this.parts.push(\\\"v\\\", variable.index);\\n  }\\n\\n  visitLiteral(literal) {\\n    this.parts.push(literal.number);\\n  }\\n\\n  visitBinaryOperation(operation) {\\n    this.parts.push(\\\"(\\\");\\n    operation.arg1.visit(this);\\n    this.parts.push(\\\" \\\", operation.op, \\\" \\\");\\n    operation.arg2.visit(this);\\n    this.parts.push(\\\")\\\");\\n  }\\n\\n  visitVariableDefinition(definition) {\\n    this.parts.push(\\\"var \\\");\\n    definition.variable.visit(this);\\n    this.parts.push(\\\" = \\\");\\n    definition.arg.visit(this);\\n    this.parts.push(\\\";\\\");\\n  }\\n\\n  visitMin(max) {\\n    this.parts.push(\\\"Math.min(\\\");\\n    max.arg.visit(this);\\n    this.parts.push(\\\", \\\", max.max, \\\")\\\");\\n  }\\n\\n  toString() {\\n    return this.parts.join(\\\"\\\");\\n  }\\n}\\n\\nfunction buildAddOperation(num1, num2) {\\n  if (num2.type === \\\"literal\\\" && num2.number === 0) {\\n    \u002F\u002F optimization: second operand is 0\\n    return num1;\\n  }\\n  if (num1.type === \\\"literal\\\" && num1.number === 0) {\\n    \u002F\u002F optimization: first operand is 0\\n    return num2;\\n  }\\n  if (num2.type === \\\"literal\\\" && num1.type === \\\"literal\\\") {\\n    \u002F\u002F optimization: operands operand are literals\\n    return new AstLiteral(num1.number + num2.number);\\n  }\\n  return new AstBinaryOperation(\\n    \\\"+\\\",\\n    num1,\\n    num2,\\n    num1.min + num2.min,\\n    num1.max + num2.max\\n  );\\n}\\n\\nfunction buildMulOperation(num1, num2) {\\n  if (num2.type === \\\"literal\\\") {\\n    \u002F\u002F optimization: second operands is a literal...\\n    if (num2.number === 0) {\\n      return new AstLiteral(0); \u002F\u002F and it's 0\\n    } else if (num2.number === 1) {\\n      return num1; \u002F\u002F and it's 1\\n    } else if (num1.type === \\\"literal\\\") {\\n      \u002F\u002F ... and first operands is a literal too\\n      return new AstLiteral(num1.number * num2.number);\\n    }\\n  }\\n  if (num1.type === \\\"literal\\\") {\\n    \u002F\u002F optimization: first operands is a literal...\\n    if (num1.number === 0) {\\n      return new AstLiteral(0); \u002F\u002F and it's 0\\n    } else if (num1.number === 1) {\\n      return num2; \u002F\u002F and it's 1\\n    }\\n  }\\n  const min = Math.min(\\n    num1.min * num2.min,\\n    num1.min * num2.max,\\n    num1.max * num2.min,\\n    num1.max * num2.max\\n  );\\n  const max = Math.max(\\n    num1.min * num2.min,\\n    num1.min * num2.max,\\n    num1.max * num2.min,\\n    num1.max * num2.max\\n  );\\n  return new AstBinaryOperation(\\\"*\\\", num1, num2, min, max);\\n}\\n\\nfunction buildSubOperation(num1, num2) {\\n  if (num2.type === \\\"literal\\\") {\\n    \u002F\u002F optimization: second operands is a literal...\\n    if (num2.number === 0) {\\n      return num1; \u002F\u002F ... and it's 0\\n    } else if (num1.type === \\\"literal\\\") {\\n      \u002F\u002F ... and first operands is a literal too\\n      return new AstLiteral(num1.number - num2.number);\\n    }\\n  }\\n  if (\\n    num2.type === \\\"binary\\\" &&\\n    num2.op === \\\"-\\\" &&\\n    num1.type === \\\"literal\\\" &&\\n    num1.number === 1 &&\\n    num2.arg1.type === \\\"literal\\\" &&\\n    num2.arg1.number === 1\\n  ) {\\n    \u002F\u002F optimization for case: 1 - (1 - x)\\n    return num2.arg2;\\n  }\\n  return new AstBinaryOperation(\\n    \\\"-\\\",\\n    num1,\\n    num2,\\n    num1.min - num2.max,\\n    num1.max - num2.min\\n  );\\n}\\n\\nfunction buildMinOperation(num1, max) {\\n  if (num1.min >= max) {\\n    \u002F\u002F optimization: num1 min value is not less than required max\\n    return new AstLiteral(max); \u002F\u002F just returning max\\n  } else if (num1.max \u003C= max) {\\n    \u002F\u002F optimization: num1 max value is not greater than required max\\n    return num1; \u002F\u002F just returning an argument\\n  }\\n  return new AstMin(num1, max);\\n}\\n\\n\u002F\u002F Most of the PDFs functions consist of simple operations such as:\\n\u002F\u002F   roll, exch, sub, cvr, pop, index, dup, mul, if, gt, add.\\n\u002F\u002F\\n\u002F\u002F We can compile most of such programs, and at the same moment, we can\\n\u002F\u002F optimize some expressions using basic math properties. Keeping track of\\n\u002F\u002F min\u002Fmax values will allow us to avoid extra Math.min\u002FMath.max calls.\\nclass PostScriptCompiler {\\n  compile(code, domain, range) {\\n    const stack = [];\\n    const instructions = [];\\n    const inputSize = domain.length >> 1,\\n      outputSize = range.length >> 1;\\n    let lastRegister = 0;\\n    let n, j;\\n    let num1, num2, ast1, ast2, tmpVar, item;\\n    for (let i = 0; i \u003C inputSize; i++) {\\n      stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1]));\\n    }\\n\\n    for (let i = 0, ii = code.length; i \u003C ii; i++) {\\n      item = code[i];\\n      if (typeof item === \\\"number\\\") {\\n        stack.push(new AstLiteral(item));\\n        continue;\\n      }\\n\\n      switch (item) {\\n        case \\\"add\\\":\\n          if (stack.length \u003C 2) {\\n            return null;\\n          }\\n          num2 = stack.pop();\\n          num1 = stack.pop();\\n          stack.push(buildAddOperation(num1, num2));\\n          break;\\n        case \\\"cvr\\\":\\n          if (stack.length \u003C 1) {\\n            return null;\\n          }\\n          break;\\n        case \\\"mul\\\":\\n          if (stack.length \u003C 2) {\\n            return null;\\n          }\\n          num2 = stack.pop();\\n          num1 = stack.pop();\\n          stack.push(buildMulOperation(num1, num2));\\n          break;\\n        case \\\"sub\\\":\\n          if (stack.length \u003C 2) {\\n            return null;\\n          }\\n          num2 = stack.pop();\\n          num1 = stack.pop();\\n          stack.push(buildSubOperation(num1, num2));\\n          break;\\n        case \\\"exch\\\":\\n          if (stack.length \u003C 2) {\\n            return null;\\n          }\\n          ast1 = stack.pop();\\n          ast2 = stack.pop();\\n          stack.push(ast1, ast2);\\n          break;\\n        case \\\"pop\\\":\\n          if (stack.length \u003C 1) {\\n            return null;\\n          }\\n          stack.pop();\\n          break;\\n        case \\\"index\\\":\\n          if (stack.length \u003C 1) {\\n            return null;\\n          }\\n          num1 = stack.pop();\\n          if (num1.type !== \\\"literal\\\") {\\n            return null;\\n          }\\n          n = num1.number;\\n          if (n \u003C 0 || !Number.isInteger(n) || stack.length \u003C n) {\\n            return null;\\n          }\\n          ast1 = stack[stack.length - n - 1];\\n          if (ast1.type === \\\"literal\\\" || ast1.type === \\\"var\\\") {\\n            stack.push(ast1);\\n            break;\\n          }\\n          tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\\n          stack[stack.length - n - 1] = tmpVar;\\n          stack.push(tmpVar);\\n          instructions.push(new AstVariableDefinition(tmpVar, ast1));\\n          break;\\n        case \\\"dup\\\":\\n          if (stack.length \u003C 1) {\\n            return null;\\n          }\\n          if (\\n            typeof code[i + 1] === \\\"number\\\" &&\\n            code[i + 2] === \\\"gt\\\" &&\\n            code[i + 3] === i + 7 &&\\n            code[i + 4] === \\\"jz\\\" &&\\n            code[i + 5] === \\\"pop\\\" &&\\n            code[i + 6] === code[i + 1]\\n          ) {\\n            \u002F\u002F special case of the commands sequence for the min operation\\n            num1 = stack.pop();\\n            stack.push(buildMinOperation(num1, code[i + 1]));\\n            i += 6;\\n            break;\\n          }\\n          ast1 = stack.at(-1);\\n          if (ast1.type === \\\"literal\\\" || ast1.type === \\\"var\\\") {\\n            \u002F\u002F we don't have to save into intermediate variable a literal or\\n            \u002F\u002F variable.\\n            stack.push(ast1);\\n            break;\\n          }\\n          tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\\n          stack[stack.length - 1] = tmpVar;\\n          stack.push(tmpVar);\\n          instructions.push(new AstVariableDefinition(tmpVar, ast1));\\n          break;\\n        case \\\"roll\\\":\\n          if (stack.length \u003C 2) {\\n            return null;\\n          }\\n          num2 = stack.pop();\\n          num1 = stack.pop();\\n          if (num2.type !== \\\"literal\\\" || num1.type !== \\\"literal\\\") {\\n            \u002F\u002F both roll operands must be numbers\\n            return null;\\n          }\\n          j = num2.number;\\n          n = num1.number;\\n          if (\\n            n \u003C= 0 ||\\n            !Number.isInteger(n) ||\\n            !Number.isInteger(j) ||\\n            stack.length \u003C n\\n          ) {\\n            \u002F\u002F ... and integers\\n            return null;\\n          }\\n          j = ((j % n) + n) % n;\\n          if (j === 0) {\\n            break; \u002F\u002F just skipping -- there are nothing to rotate\\n          }\\n          stack.push(...stack.splice(stack.length - n, n - j));\\n          break;\\n        default:\\n          return null; \u002F\u002F unsupported operator\\n      }\\n    }\\n\\n    if (stack.length !== outputSize) {\\n      return null;\\n    }\\n\\n    const result = [];\\n    for (const instruction of instructions) {\\n      const statementBuilder = new ExpressionBuilderVisitor();\\n      instruction.visit(statementBuilder);\\n      result.push(statementBuilder.toString());\\n    }\\n    for (let i = 0, ii = stack.length; i \u003C ii; i++) {\\n      const expr = stack[i],\\n        statementBuilder = new ExpressionBuilderVisitor();\\n      expr.visit(statementBuilder);\\n      const min = range[i * 2],\\n        max = range[i * 2 + 1];\\n      const out = [statementBuilder.toString()];\\n      if (min > expr.min) {\\n        out.unshift(\\\"Math.max(\\\", min, \\\", \\\");\\n        out.push(\\\")\\\");\\n      }\\n      if (max \u003C expr.max) {\\n        out.unshift(\\\"Math.min(\\\", max, \\\", \\\");\\n        out.push(\\\")\\\");\\n      }\\n      out.unshift(\\\"dest[destOffset + \\\", i, \\\"] = \\\");\\n      out.push(\\\";\\\");\\n      result.push(out.join(\\\"\\\"));\\n    }\\n    return result.join(\\\"\\\\n\\\");\\n  }\\n}\\n\\nexport {\\n  isPDFFunction,\\n  PDFFunctionFactory,\\n  PostScriptCompiler,\\n  PostScriptEvaluator,\\n};\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\n\u002F\u002F Character types for symbols from 0000 to 00FF.\\n\u002F\u002F Source: ftp:\u002F\u002Fftp.unicode.org\u002FPublic\u002FUNIDATA\u002FUnicodeData.txt\\n\u002F\u002F prettier-ignore\\nconst baseTypes = [\\n  \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"S\\\", \\\"B\\\", \\\"S\\\",\\n  \\\"WS\\\", \\\"B\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\",\\n  \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"B\\\", \\\"B\\\", \\\"B\\\", \\\"S\\\", \\\"WS\\\", \\\"ON\\\", \\\"ON\\\", \\\"ET\\\",\\n  \\\"ET\\\", \\\"ET\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"ES\\\", \\\"CS\\\", \\\"ES\\\", \\\"CS\\\", \\\"CS\\\",\\n  \\\"EN\\\", \\\"EN\\\", \\\"EN\\\", \\\"EN\\\", \\\"EN\\\", \\\"EN\\\", \\\"EN\\\", \\\"EN\\\", \\\"EN\\\", \\\"EN\\\", \\\"CS\\\", \\\"ON\\\",\\n  \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\",\\n  \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\",\\n  \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\",\\n  \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\",\\n  \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\",\\n  \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"B\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\",\\n  \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\",\\n  \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"CS\\\", \\\"ON\\\", \\\"ET\\\",\\n  \\\"ET\\\", \\\"ET\\\", \\\"ET\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"L\\\", \\\"ON\\\", \\\"ON\\\", \\\"BN\\\", \\\"ON\\\",\\n  \\\"ON\\\", \\\"ET\\\", \\\"ET\\\", \\\"EN\\\", \\\"EN\\\", \\\"ON\\\", \\\"L\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"EN\\\", \\\"L\\\",\\n  \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\",\\n  \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\",\\n  \\\"L\\\", \\\"ON\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\",\\n  \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\",\\n  \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"ON\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\"\\n];\\n\\n\u002F\u002F Character types for symbols from 0600 to 06FF.\\n\u002F\u002F Source: ftp:\u002F\u002Fftp.unicode.org\u002FPublic\u002FUNIDATA\u002FUnicodeData.txt\\n\u002F\u002F Note that 061D does not exist in the Unicode standard (see\\n\u002F\u002F http:\u002F\u002Funicode.org\u002Fcharts\u002FPDF\u002FU0600.pdf), so we replace it with an\\n\u002F\u002F empty string and issue a warning if we encounter this character. The\\n\u002F\u002F empty string is required to properly index the items after it.\\n\u002F\u002F prettier-ignore\\nconst arabicTypes = [\\n  \\\"AN\\\", \\\"AN\\\", \\\"AN\\\", \\\"AN\\\", \\\"AN\\\", \\\"AN\\\", \\\"ON\\\", \\\"ON\\\", \\\"AL\\\", \\\"ET\\\", \\\"ET\\\", \\\"AL\\\",\\n  \\\"CS\\\", \\\"AL\\\", \\\"ON\\\", \\\"ON\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\",\\n  \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"AL\\\", \\\"AL\\\", \\\"\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\",\\n  \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\",\\n  \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\",\\n  \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\",\\n  \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\",\\n  \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\",\\n  \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"AN\\\", \\\"AN\\\", \\\"AN\\\", \\\"AN\\\", \\\"AN\\\", \\\"AN\\\", \\\"AN\\\",\\n  \\\"AN\\\", \\\"AN\\\", \\\"AN\\\", \\\"ET\\\", \\\"AN\\\", \\\"AN\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"NSM\\\", \\\"AL\\\", \\\"AL\\\",\\n  \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\",\\n  \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\",\\n  \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\",\\n  \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\",\\n  \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\",\\n  \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\",\\n  \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\",\\n  \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\",\\n  \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"AN\\\",\\n  \\\"ON\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"AL\\\", \\\"AL\\\", \\\"NSM\\\", \\\"NSM\\\",\\n  \\\"ON\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"AL\\\", \\\"AL\\\", \\\"EN\\\", \\\"EN\\\", \\\"EN\\\", \\\"EN\\\",\\n  \\\"EN\\\", \\\"EN\\\", \\\"EN\\\", \\\"EN\\\", \\\"EN\\\", \\\"EN\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\"\\n];\\n\\nfunction isOdd(i) {\\n  return (i & 1) !== 0;\\n}\\n\\nfunction isEven(i) {\\n  return (i & 1) === 0;\\n}\\n\\nfunction findUnequal(arr, start, value) {\\n  let j, jj;\\n  for (j = start, jj = arr.length; j \u003C jj; ++j) {\\n    if (arr[j] !== value) {\\n      return j;\\n    }\\n  }\\n  return j;\\n}\\n\\nfunction setValues(arr, start, end, value) {\\n  for (let j = start; j \u003C end; ++j) {\\n    arr[j] = value;\\n  }\\n}\\n\\nfunction reverseValues(arr, start, end) {\\n  for (let i = start, j = end - 1; i \u003C j; ++i, --j) {\\n    const temp = arr[i];\\n    arr[i] = arr[j];\\n    arr[j] = temp;\\n  }\\n}\\n\\nfunction createBidiText(str, isLTR, vertical = false) {\\n  let dir = \\\"ltr\\\";\\n  if (vertical) {\\n    dir = \\\"ttb\\\";\\n  } else if (!isLTR) {\\n    dir = \\\"rtl\\\";\\n  }\\n  return { str, dir };\\n}\\n\\n\u002F\u002F These are used in bidi(), which is called frequently. We re-use them on\\n\u002F\u002F each call to avoid unnecessary allocations.\\nconst chars = [];\\nconst types = [];\\n\\nfunction bidi(str, startLevel = -1, vertical = false) {\\n  let isLTR = true;\\n  const strLength = str.length;\\n  if (strLength === 0 || vertical) {\\n    return createBidiText(str, isLTR, vertical);\\n  }\\n\\n  \u002F\u002F Get types and fill arrays\\n  chars.length = strLength;\\n  types.length = strLength;\\n  let numBidi = 0;\\n\\n  let i, ii;\\n  for (i = 0; i \u003C strLength; ++i) {\\n    chars[i] = str.charAt(i);\\n\\n    const charCode = str.charCodeAt(i);\\n    let charType = \\\"L\\\";\\n    if (charCode \u003C= 0x00ff) {\\n      charType = baseTypes[charCode];\\n    } else if (0x0590 \u003C= charCode && charCode \u003C= 0x05f4) {\\n      charType = \\\"R\\\";\\n    } else if (0x0600 \u003C= charCode && charCode \u003C= 0x06ff) {\\n      charType = arabicTypes[charCode & 0xff];\\n      if (!charType) {\\n        warn(\\\"Bidi: invalid Unicode character \\\" + charCode.toString(16));\\n      }\\n    } else if (\\n      (0x0700 \u003C= charCode && charCode \u003C= 0x08ac) ||\\n      (0xfb50 \u003C= charCode && charCode \u003C= 0xfdff) ||\\n      (0xfe70 \u003C= charCode && charCode \u003C= 0xfeff)\\n    ) {\\n      charType = \\\"AL\\\";\\n    }\\n    if (charType === \\\"R\\\" || charType === \\\"AL\\\" || charType === \\\"AN\\\") {\\n      numBidi++;\\n    }\\n    types[i] = charType;\\n  }\\n\\n  \u002F\u002F Detect the bidi method\\n  \u002F\u002F - If there are no rtl characters then no bidi needed\\n  \u002F\u002F - If less than 30% chars are rtl then string is primarily ltr,\\n  \u002F\u002F   unless the string is very short.\\n  \u002F\u002F - If more than 30% chars are rtl then string is primarily rtl\\n  if (numBidi === 0) {\\n    isLTR = true;\\n    return createBidiText(str, isLTR);\\n  }\\n\\n  if (startLevel === -1) {\\n    if (numBidi \u002F strLength \u003C 0.3 && strLength > 4) {\\n      isLTR = true;\\n      startLevel = 0;\\n    } else {\\n      isLTR = false;\\n      startLevel = 1;\\n    }\\n  }\\n\\n  const levels = [];\\n  for (i = 0; i \u003C strLength; ++i) {\\n    levels[i] = startLevel;\\n  }\\n\\n  \u002F*\\n   X1-X10: skip most of this, since we are NOT doing the embeddings.\\n   *\u002F\\n  const e = isOdd(startLevel) ? \\\"R\\\" : \\\"L\\\";\\n  const sor = e;\\n  const eor = sor;\\n\\n  \u002F*\\n   W1. Examine each non-spacing mark (NSM) in the level run, and change the\\n   type of the NSM to the type of the previous character. If the NSM is at the\\n   start of the level run, it will get the type of sor.\\n   *\u002F\\n  let lastType = sor;\\n  for (i = 0; i \u003C strLength; ++i) {\\n    if (types[i] === \\\"NSM\\\") {\\n      types[i] = lastType;\\n    } else {\\n      lastType = types[i];\\n    }\\n  }\\n\\n  \u002F*\\n   W2. Search backwards from each instance of a European number until the\\n   first strong type (R, L, AL, or sor) is found.  If an AL is found, change\\n   the type of the European number to Arabic number.\\n   *\u002F\\n  lastType = sor;\\n  let t;\\n  for (i = 0; i \u003C strLength; ++i) {\\n    t = types[i];\\n    if (t === \\\"EN\\\") {\\n      types[i] = lastType === \\\"AL\\\" ? \\\"AN\\\" : \\\"EN\\\";\\n    } else if (t === \\\"R\\\" || t === \\\"L\\\" || t === \\\"AL\\\") {\\n      lastType = t;\\n    }\\n  }\\n\\n  \u002F*\\n   W3. Change all ALs to R.\\n   *\u002F\\n  for (i = 0; i \u003C strLength; ++i) {\\n    t = types[i];\\n    if (t === \\\"AL\\\") {\\n      types[i] = \\\"R\\\";\\n    }\\n  }\\n\\n  \u002F*\\n   W4. A single European separator between two European numbers changes to a\\n   European number. A single common separator between two numbers of the same\\n   type changes to that type:\\n   *\u002F\\n  for (i = 1; i \u003C strLength - 1; ++i) {\\n    if (types[i] === \\\"ES\\\" && types[i - 1] === \\\"EN\\\" && types[i + 1] === \\\"EN\\\") {\\n      types[i] = \\\"EN\\\";\\n    }\\n    if (\\n      types[i] === \\\"CS\\\" &&\\n      (types[i - 1] === \\\"EN\\\" || types[i - 1] === \\\"AN\\\") &&\\n      types[i + 1] === types[i - 1]\\n    ) {\\n      types[i] = types[i - 1];\\n    }\\n  }\\n\\n  \u002F*\\n   W5. A sequence of European terminators adjacent to European numbers changes\\n   to all European numbers:\\n   *\u002F\\n  for (i = 0; i \u003C strLength; ++i) {\\n    if (types[i] === \\\"EN\\\") {\\n      \u002F\u002F do before\\n      for (let j = i - 1; j >= 0; --j) {\\n        if (types[j] !== \\\"ET\\\") {\\n          break;\\n        }\\n        types[j] = \\\"EN\\\";\\n      }\\n      \u002F\u002F do after\\n      for (let j = i + 1; j \u003C strLength; ++j) {\\n        if (types[j] !== \\\"ET\\\") {\\n          break;\\n        }\\n        types[j] = \\\"EN\\\";\\n      }\\n    }\\n  }\\n\\n  \u002F*\\n   W6. Otherwise, separators and terminators change to Other Neutral:\\n   *\u002F\\n  for (i = 0; i \u003C strLength; ++i) {\\n    t = types[i];\\n    if (t === \\\"WS\\\" || t === \\\"ES\\\" || t === \\\"ET\\\" || t === \\\"CS\\\") {\\n      types[i] = \\\"ON\\\";\\n    }\\n  }\\n\\n  \u002F*\\n   W7. Search backwards from each instance of a European number until the\\n   first strong type (R, L, or sor) is found. If an L is found,  then change\\n   the type of the European number to L.\\n   *\u002F\\n  lastType = sor;\\n  for (i = 0; i \u003C strLength; ++i) {\\n    t = types[i];\\n    if (t === \\\"EN\\\") {\\n      types[i] = lastType === \\\"L\\\" ? \\\"L\\\" : \\\"EN\\\";\\n    } else if (t === \\\"R\\\" || t === \\\"L\\\") {\\n      lastType = t;\\n    }\\n  }\\n\\n  \u002F*\\n   N1. A sequence of neutrals takes the direction of the surrounding strong\\n   text if the text on both sides has the same direction. European and Arabic\\n   numbers are treated as though they were R. Start-of-level-run (sor) and\\n   end-of-level-run (eor) are used at level run boundaries.\\n   *\u002F\\n  for (i = 0; i \u003C strLength; ++i) {\\n    if (types[i] === \\\"ON\\\") {\\n      const end = findUnequal(types, i + 1, \\\"ON\\\");\\n      let before = sor;\\n      if (i > 0) {\\n        before = types[i - 1];\\n      }\\n\\n      let after = eor;\\n      if (end + 1 \u003C strLength) {\\n        after = types[end + 1];\\n      }\\n      if (before !== \\\"L\\\") {\\n        before = \\\"R\\\";\\n      }\\n      if (after !== \\\"L\\\") {\\n        after = \\\"R\\\";\\n      }\\n      if (before === after) {\\n        setValues(types, i, end, before);\\n      }\\n      i = end - 1; \u002F\u002F reset to end (-1 so next iteration is ok)\\n    }\\n  }\\n\\n  \u002F*\\n   N2. Any remaining neutrals take the embedding direction.\\n   *\u002F\\n  for (i = 0; i \u003C strLength; ++i) {\\n    if (types[i] === \\\"ON\\\") {\\n      types[i] = e;\\n    }\\n  }\\n\\n  \u002F*\\n   I1. For all characters with an even (left-to-right) embedding direction,\\n   those of type R go up one level and those of type AN or EN go up two\\n   levels.\\n   I2. For all characters with an odd (right-to-left) embedding direction,\\n   those of type L, EN or AN go up one level.\\n   *\u002F\\n  for (i = 0; i \u003C strLength; ++i) {\\n    t = types[i];\\n    if (isEven(levels[i])) {\\n      if (t === \\\"R\\\") {\\n        levels[i] += 1;\\n      } else if (t === \\\"AN\\\" || t === \\\"EN\\\") {\\n        levels[i] += 2;\\n      }\\n    } else if (\u002F* isOdd && *\u002F t === \\\"L\\\" || t === \\\"AN\\\" || t === \\\"EN\\\") {\\n      levels[i] += 1;\\n    }\\n  }\\n\\n  \u002F*\\n   L1. On each line, reset the embedding level of the following characters to\\n   the paragraph embedding level:\\n\\n   segment separators,\\n   paragraph separators,\\n   any sequence of whitespace characters preceding a segment separator or\\n   paragraph separator, and any sequence of white space characters at the end\\n   of the line.\\n   *\u002F\\n\\n  \u002F\u002F don't bother as text is only single line\\n\\n  \u002F*\\n   L2. From the highest level found in the text to the lowest odd level on\\n   each line, reverse any contiguous sequence of characters that are at that\\n   level or higher.\\n   *\u002F\\n\\n  \u002F\u002F find highest level & lowest odd level\\n  let highestLevel = -1;\\n  let lowestOddLevel = 99;\\n  let level;\\n  for (i = 0, ii = levels.length; i \u003C ii; ++i) {\\n    level = levels[i];\\n    if (highestLevel \u003C level) {\\n      highestLevel = level;\\n    }\\n    if (lowestOddLevel > level && isOdd(level)) {\\n      lowestOddLevel = level;\\n    }\\n  }\\n\\n  \u002F\u002F now reverse between those limits\\n  for (level = highestLevel; level >= lowestOddLevel; --level) {\\n    \u002F\u002F find segments to reverse\\n    let start = -1;\\n    for (i = 0, ii = levels.length; i \u003C ii; ++i) {\\n      if (levels[i] \u003C level) {\\n        if (start >= 0) {\\n          reverseValues(chars, start, i);\\n          start = -1;\\n        }\\n      } else if (start \u003C 0) {\\n        start = i;\\n      }\\n    }\\n    if (start >= 0) {\\n      reverseValues(chars, start, levels.length);\\n    }\\n  }\\n\\n  \u002F*\\n   L3. Combining marks applied to a right-to-left base character will at this\\n   point precede their base character. If the rendering engine expects them to\\n   follow the base characters in the final display process, then the ordering\\n   of the marks and the base character must be reversed.\\n   *\u002F\\n\\n  \u002F\u002F don't bother for now\\n\\n  \u002F*\\n   L4. A character that possesses the mirrored property as specified by\\n   Section 4.7, Mirrored, must be depicted by a mirrored glyph if the resolved\\n   directionality of that character is R.\\n   *\u002F\\n\\n  \u002F\u002F don't mirror as characters are already mirrored in the pdf\\n\\n  \u002F\u002F Finally, return string\\n  for (i = 0, ii = chars.length; i \u003C ii; ++i) {\\n    const ch = chars[i];\\n    if (ch === \\\"\u003C\\\" || ch === \\\">\\\") {\\n      chars[i] = \\\"\\\";\\n    }\\n  }\\n  return createBidiText(chars.join(\\\"\\\"), isLTR);\\n}\\n\\nexport { bidi };\\n\",\"\u002F* Copyright 2023 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { normalizeFontName } from \\\".\u002Ffonts_utils.js\\\";\\nimport { validateFontName } from \\\".\u002Fcore_utils.js\\\";\\nimport { warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nconst NORMAL = {\\n  style: \\\"normal\\\",\\n  weight: \\\"normal\\\",\\n};\\nconst BOLD = {\\n  style: \\\"normal\\\",\\n  weight: \\\"bold\\\",\\n};\\nconst ITALIC = {\\n  style: \\\"italic\\\",\\n  weight: \\\"normal\\\",\\n};\\nconst BOLDITALIC = {\\n  style: \\\"italic\\\",\\n  weight: \\\"bold\\\",\\n};\\n\\nconst substitutionMap = new Map([\\n  [\\n    \\\"Times-Roman\\\",\\n    {\\n      local: [\\n        \\\"Times New Roman\\\",\\n        \\\"Times-Roman\\\",\\n        \\\"Times\\\",\\n        \\\"Liberation Serif\\\",\\n        \\\"Nimbus Roman\\\",\\n        \\\"Nimbus Roman L\\\",\\n        \\\"Tinos\\\",\\n        \\\"Thorndale\\\",\\n        \\\"TeX Gyre Termes\\\",\\n        \\\"FreeSerif\\\",\\n        \\\"Linux Libertine O\\\",\\n        \\\"Libertinus Serif\\\",\\n        \\\"DejaVu Serif\\\",\\n        \\\"Bitstream Vera Serif\\\",\\n        \\\"Ubuntu\\\",\\n      ],\\n      style: NORMAL,\\n      ultimate: \\\"serif\\\",\\n    },\\n  ],\\n  [\\n    \\\"Times-Bold\\\",\\n    {\\n      alias: \\\"Times-Roman\\\",\\n      style: BOLD,\\n      ultimate: \\\"serif\\\",\\n    },\\n  ],\\n  [\\n    \\\"Times-Italic\\\",\\n    {\\n      alias: \\\"Times-Roman\\\",\\n      style: ITALIC,\\n      ultimate: \\\"serif\\\",\\n    },\\n  ],\\n  [\\n    \\\"Times-BoldItalic\\\",\\n    {\\n      alias: \\\"Times-Roman\\\",\\n      style: BOLDITALIC,\\n      ultimate: \\\"serif\\\",\\n    },\\n  ],\\n  [\\n    \\\"Helvetica\\\",\\n    {\\n      local: [\\n        \\\"Helvetica\\\",\\n        \\\"Helvetica Neue\\\",\\n        \\\"Arial\\\",\\n        \\\"Arial Nova\\\",\\n        \\\"Liberation Sans\\\",\\n        \\\"Arimo\\\",\\n        \\\"Nimbus Sans\\\",\\n        \\\"Nimbus Sans L\\\",\\n        \\\"A030\\\",\\n        \\\"TeX Gyre Heros\\\",\\n        \\\"FreeSans\\\",\\n        \\\"DejaVu Sans\\\",\\n        \\\"Albany\\\",\\n        \\\"Bitstream Vera Sans\\\",\\n        \\\"Arial Unicode MS\\\",\\n        \\\"Microsoft Sans Serif\\\",\\n        \\\"Apple Symbols\\\",\\n        \\\"Cantarell\\\",\\n      ],\\n      path: \\\"LiberationSans-Regular.ttf\\\",\\n      style: NORMAL,\\n      ultimate: \\\"sans-serif\\\",\\n    },\\n  ],\\n  [\\n    \\\"Helvetica-Bold\\\",\\n    {\\n      alias: \\\"Helvetica\\\",\\n      path: \\\"LiberationSans-Bold.ttf\\\",\\n      style: BOLD,\\n      ultimate: \\\"sans-serif\\\",\\n    },\\n  ],\\n  [\\n    \\\"Helvetica-Oblique\\\",\\n    {\\n      alias: \\\"Helvetica\\\",\\n      path: \\\"LiberationSans-Italic.ttf\\\",\\n      style: ITALIC,\\n      ultimate: \\\"sans-serif\\\",\\n    },\\n  ],\\n  [\\n    \\\"Helvetica-BoldOblique\\\",\\n    {\\n      alias: \\\"Helvetica\\\",\\n      path: \\\"LiberationSans-BoldItalic.ttf\\\",\\n      style: BOLDITALIC,\\n      ultimate: \\\"sans-serif\\\",\\n    },\\n  ],\\n  [\\n    \\\"Courier\\\",\\n    {\\n      local: [\\n        \\\"Courier\\\",\\n        \\\"Courier New\\\",\\n        \\\"Liberation Mono\\\",\\n        \\\"Nimbus Mono\\\",\\n        \\\"Nimbus Mono L\\\",\\n        \\\"Cousine\\\",\\n        \\\"Cumberland\\\",\\n        \\\"TeX Gyre Cursor\\\",\\n        \\\"FreeMono\\\",\\n        \\\"Linux Libertine Mono O\\\",\\n        \\\"Libertinus Mono\\\",\\n      ],\\n      style: NORMAL,\\n      ultimate: \\\"monospace\\\",\\n    },\\n  ],\\n  [\\n    \\\"Courier-Bold\\\",\\n    {\\n      alias: \\\"Courier\\\",\\n      style: BOLD,\\n      ultimate: \\\"monospace\\\",\\n    },\\n  ],\\n  [\\n    \\\"Courier-Oblique\\\",\\n    {\\n      alias: \\\"Courier\\\",\\n      style: ITALIC,\\n      ultimate: \\\"monospace\\\",\\n    },\\n  ],\\n  [\\n    \\\"Courier-BoldOblique\\\",\\n    {\\n      alias: \\\"Courier\\\",\\n      style: BOLDITALIC,\\n      ultimate: \\\"monospace\\\",\\n    },\\n  ],\\n  [\\n    \\\"ArialBlack\\\",\\n    {\\n      local: [\\\"Arial Black\\\"],\\n      style: {\\n        style: \\\"normal\\\",\\n        weight: \\\"900\\\",\\n      },\\n      fallback: \\\"Helvetica-Bold\\\",\\n    },\\n  ],\\n  [\\n    \\\"ArialBlack-Bold\\\",\\n    {\\n      alias: \\\"ArialBlack\\\",\\n    },\\n  ],\\n  [\\n    \\\"ArialBlack-Italic\\\",\\n    {\\n      alias: \\\"ArialBlack\\\",\\n      style: {\\n        style: \\\"italic\\\",\\n        weight: \\\"900\\\",\\n      },\\n      fallback: \\\"Helvetica-BoldOblique\\\",\\n    },\\n  ],\\n  [\\n    \\\"ArialBlack-BoldItalic\\\",\\n    {\\n      alias: \\\"ArialBlack-Italic\\\",\\n    },\\n  ],\\n  [\\n    \\\"ArialNarrow\\\",\\n    {\\n      local: [\\n        \\\"Arial Narrow\\\",\\n        \\\"Liberation Sans Narrow\\\",\\n        \\\"Helvetica Condensed\\\",\\n        \\\"Nimbus Sans Narrow\\\",\\n        \\\"TeX Gyre Heros Cn\\\",\\n      ],\\n      style: NORMAL,\\n      fallback: \\\"Helvetica\\\",\\n    },\\n  ],\\n  [\\n    \\\"ArialNarrow-Bold\\\",\\n    {\\n      alias: \\\"ArialNarrow\\\",\\n      style: BOLD,\\n      fallback: \\\"Helvetica-Bold\\\",\\n    },\\n  ],\\n  [\\n    \\\"ArialNarrow-Italic\\\",\\n    {\\n      alias: \\\"ArialNarrow\\\",\\n      style: ITALIC,\\n      fallback: \\\"Helvetica-Oblique\\\",\\n    },\\n  ],\\n  [\\n    \\\"ArialNarrow-BoldItalic\\\",\\n    {\\n      alias: \\\"ArialNarrow\\\",\\n      style: BOLDITALIC,\\n      fallback: \\\"Helvetica-BoldOblique\\\",\\n    },\\n  ],\\n  [\\n    \\\"Calibri\\\",\\n    {\\n      local: [\\\"Calibri\\\", \\\"Carlito\\\"],\\n      style: NORMAL,\\n      fallback: \\\"Helvetica\\\",\\n    },\\n  ],\\n  [\\n    \\\"Calibri-Bold\\\",\\n    {\\n      alias: \\\"Calibri\\\",\\n      style: BOLD,\\n      fallback: \\\"Helvetica-Bold\\\",\\n    },\\n  ],\\n  [\\n    \\\"Calibri-Italic\\\",\\n    {\\n      alias: \\\"Calibri\\\",\\n      style: ITALIC,\\n      fallback: \\\"Helvetica-Oblique\\\",\\n    },\\n  ],\\n  [\\n    \\\"Calibri-BoldItalic\\\",\\n    {\\n      alias: \\\"Calibri\\\",\\n      style: BOLDITALIC,\\n      fallback: \\\"Helvetica-BoldOblique\\\",\\n    },\\n  ],\\n  [\\n    \\\"Wingdings\\\",\\n    {\\n      local: [\\\"Wingdings\\\", \\\"URW Dingbats\\\"],\\n      style: NORMAL,\\n    },\\n  ],\\n  [\\n    \\\"Wingdings-Regular\\\",\\n    {\\n      alias: \\\"Wingdings\\\",\\n    },\\n  ],\\n  [\\n    \\\"Wingdings-Bold\\\",\\n    {\\n      alias: \\\"Wingdings\\\",\\n    },\\n  ],\\n]);\\n\\nconst fontAliases = new Map([[\\\"Arial-Black\\\", \\\"ArialBlack\\\"]]);\\n\\nfunction getStyleToAppend(style) {\\n  switch (style) {\\n    case BOLD:\\n      return \\\"Bold\\\";\\n    case ITALIC:\\n      return \\\"Italic\\\";\\n    case BOLDITALIC:\\n      return \\\"Bold Italic\\\";\\n    default:\\n      if (style?.weight === \\\"bold\\\") {\\n        return \\\"Bold\\\";\\n      }\\n      if (style?.style === \\\"italic\\\") {\\n        return \\\"Italic\\\";\\n      }\\n  }\\n  return \\\"\\\";\\n}\\n\\nfunction getFamilyName(str) {\\n  \u002F\u002F See https:\u002F\u002Fgitlab.freedesktop.org\u002Ffontconfig\u002Ffontconfig\u002F-\u002Fblob\u002F14d466b30a8ab4a9d789977ed94f2c30e7209267\u002Fsrc\u002Ffcname.c#L137.\\n  const keywords = new Set([\\n    \\\"thin\\\",\\n    \\\"extralight\\\",\\n    \\\"ultralight\\\",\\n    \\\"demilight\\\",\\n    \\\"semilight\\\",\\n    \\\"light\\\",\\n    \\\"book\\\",\\n    \\\"regular\\\",\\n    \\\"normal\\\",\\n    \\\"medium\\\",\\n    \\\"demibold\\\",\\n    \\\"semibold\\\",\\n    \\\"bold\\\",\\n    \\\"extrabold\\\",\\n    \\\"ultrabold\\\",\\n    \\\"black\\\",\\n    \\\"heavy\\\",\\n    \\\"extrablack\\\",\\n    \\\"ultrablack\\\",\\n    \\\"roman\\\",\\n    \\\"italic\\\",\\n    \\\"oblique\\\",\\n    \\\"ultracondensed\\\",\\n    \\\"extracondensed\\\",\\n    \\\"condensed\\\",\\n    \\\"semicondensed\\\",\\n    \\\"normal\\\",\\n    \\\"semiexpanded\\\",\\n    \\\"expanded\\\",\\n    \\\"extraexpanded\\\",\\n    \\\"ultraexpanded\\\",\\n    \\\"bolditalic\\\",\\n  ]);\\n  return str\\n    .split(\u002F[- ,+]+\u002Fg)\\n    .filter(tok => !keywords.has(tok.toLowerCase()))\\n    .join(\\\" \\\");\\n}\\n\\n\u002F**\\n * Generate font description.\\n * @param {Object} param0, font substitution description.\\n * @param {Array\u003CString>} src, contains src values (local(...) or url(...)).\\n * @param {String} localFontPath, path to local fonts.\\n * @param {boolean} useFallback, whether to use fallback font.\\n * @param {boolean} usePath, whether to use path to font.\\n * @param {String} append, style (Bold, Italic, ...) to append to font name.\\n * @return {Object} { style, ultimate }.\\n *\u002F\\nfunction generateFont(\\n  { alias, local, path, fallback, style, ultimate },\\n  src,\\n  localFontPath,\\n  useFallback = true,\\n  usePath = true,\\n  append = \\\"\\\"\\n) {\\n  const result = {\\n    style: null,\\n    ultimate: null,\\n  };\\n  if (local) {\\n    const extra = append ? ` ${append}` : \\\"\\\";\\n    for (const name of local) {\\n      src.push(`local(${name}${extra})`);\\n    }\\n  }\\n  if (alias) {\\n    const substitution = substitutionMap.get(alias);\\n    const aliasAppend = append || getStyleToAppend(style);\\n    Object.assign(\\n      result,\\n      generateFont(\\n        substitution,\\n        src,\\n        localFontPath,\\n        \u002F* useFallback = *\u002F useFallback && !fallback,\\n        \u002F* usePath = *\u002F usePath && !path,\\n        aliasAppend\\n      )\\n    );\\n  }\\n  if (style) {\\n    result.style = style;\\n  }\\n  if (ultimate) {\\n    result.ultimate = ultimate;\\n  }\\n  if (useFallback && fallback) {\\n    const fallbackInfo = substitutionMap.get(fallback);\\n    const { ultimate: fallbackUltimate } = generateFont(\\n      fallbackInfo,\\n      src,\\n      localFontPath,\\n      useFallback,\\n      \u002F* usePath = *\u002F usePath && !path,\\n      append\\n    );\\n    result.ultimate ||= fallbackUltimate;\\n  }\\n  if (usePath && path && localFontPath) {\\n    src.push(`url(${localFontPath}${path})`);\\n  }\\n\\n  return result;\\n}\\n\\n\u002F**\\n * Get a font substitution for a given font.\\n * The general idea is to have enough information to create a CSS rule like\\n * this:\\n *   @font-face {\\n *    font-family: 'Times';\\n *    src: local('Times New Roman'), local('Subst1'), local('Subst2'),\\n *         url(...\u002FTimesNewRoman.ttf)\\n *    font-weight: normal;\\n *    font-style: normal;\\n *   }\\n * or use the FontFace API.\\n *\\n * @param {Map} systemFontCache The cache of local fonts.\\n * @param {Object} idFactory The ids factory.\\n * @param {String} localFontPath Path to the fonts directory.\\n * @param {String} baseFontName The font name to be substituted.\\n * @param {String|undefined} standardFontName The standard font name to use\\n *   if the base font is not available.\\n * @param {String} type The font type.\\n * @returns an Object with the CSS, the loaded name, the src and the style.\\n *\u002F\\nfunction getFontSubstitution(\\n  systemFontCache,\\n  idFactory,\\n  localFontPath,\\n  baseFontName,\\n  standardFontName,\\n  type\\n) {\\n  if (baseFontName.startsWith(\\\"InvalidPDFjsFont_\\\")) {\\n    return null;\\n  }\\n\\n  if (\\n    (type === \\\"TrueType\\\" || type === \\\"Type1\\\") &&\\n    \u002F^[A-Z]{6}\\\\+\u002F.test(baseFontName)\\n  ) {\\n    \u002F\u002F When the font is a subset, we need to remove the prefix (see 9.6.4).\\n    baseFontName = baseFontName.slice(7);\\n  }\\n\\n  \u002F\u002F It's possible to have a font name with spaces, commas or dashes, hence we\\n  \u002F\u002F just replace them by a dash.\\n  baseFontName = normalizeFontName(baseFontName);\\n\\n  const key = baseFontName;\\n  let substitutionInfo = systemFontCache.get(key);\\n  if (substitutionInfo) {\\n    return substitutionInfo;\\n  }\\n\\n  \u002F\u002F First, check if we've a substitution for the base font.\\n  let substitution = substitutionMap.get(baseFontName);\\n  if (!substitution) {\\n    \u002F\u002F Check if we've an alias for the base font, Arial-Black is the same as\\n    \u002F\u002F ArialBlack\\n    for (const [alias, subst] of fontAliases) {\\n      if (baseFontName.startsWith(alias)) {\\n        baseFontName = `${subst}${baseFontName.substring(alias.length)}`;\\n        substitution = substitutionMap.get(baseFontName);\\n        break;\\n      }\\n    }\\n  }\\n\\n  let mustAddBaseFont = false;\\n  if (!substitution) {\\n    \u002F\u002F If not, check if we've a substitution for the standard font.\\n    substitution = substitutionMap.get(standardFontName);\\n    mustAddBaseFont = true;\\n  }\\n\\n  const loadedName = `${idFactory.getDocId()}_s${idFactory.createFontId()}`;\\n  if (!substitution) {\\n    if (!validateFontName(baseFontName)) {\\n      warn(`Cannot substitute the font because of its name: ${baseFontName}`);\\n      systemFontCache.set(key, null);\\n      \u002F\u002F If the baseFontName is not valid we don't want to use it.\\n      return null;\\n    }\\n    \u002F\u002F Maybe we'll be lucky and the OS will have the font.\\n    const bold = \u002Fbold\u002Fgi.test(baseFontName);\\n    const italic = \u002Foblique|italic\u002Fgi.test(baseFontName);\\n    const style =\\n      (bold && italic && BOLDITALIC) ||\\n      (bold && BOLD) ||\\n      (italic && ITALIC) ||\\n      NORMAL;\\n    substitutionInfo = {\\n      css: `\\\"${getFamilyName(baseFontName)}\\\",${loadedName}`,\\n      guessFallback: true,\\n      loadedName,\\n      baseFontName,\\n      src: `local(${baseFontName})`,\\n      style,\\n    };\\n    systemFontCache.set(key, substitutionInfo);\\n    return substitutionInfo;\\n  }\\n\\n  const src = [];\\n  \u002F\u002F Maybe the OS will have the exact font we want so just prepend it to the\\n  \u002F\u002F list.\\n  if (mustAddBaseFont && validateFontName(baseFontName)) {\\n    src.push(`local(${baseFontName})`);\\n  }\\n  const { style, ultimate } = generateFont(substitution, src, localFontPath);\\n  const guessFallback = ultimate === null;\\n  const fallback = guessFallback ? \\\"\\\" : `,${ultimate}`;\\n\\n  substitutionInfo = {\\n    css: `\\\"${getFamilyName(baseFontName)}\\\",${loadedName}${fallback}`,\\n    guessFallback,\\n    loadedName,\\n    baseFontName,\\n    src: src.join(\\\",\\\"),\\n    style,\\n  };\\n  systemFontCache.set(key, substitutionInfo);\\n\\n  return substitutionInfo;\\n}\\n\\nexport { getFontSubstitution };\\n\",\"\u002F* Copyright 2023 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { FeatureTest, ImageKind, shadow } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nconst MIN_IMAGE_DIM = 2048;\\n\\n\u002F\u002F In Chrome, there aren't max dimensions but only a max area. So an image with\\n\u002F\u002F a very large dimensions is acceptable but it probably doesn't hurt to reduce\\n\u002F\u002F it when considering that it will finally rendered on a small canvas.\\nconst MAX_IMAGE_DIM = 65537;\\nconst MAX_ERROR = 128;\\n\\n\u002F\u002F Large images are encoded in using the BMP format (it's a way faster than\\n\u002F\u002F encoding in PNG because there are no checksums to compute).\\n\u002F\u002F Unfortunately, createImageBitmap will create a task in the main thread in\\n\u002F\u002F order to build the bitmap, hence the main thread is blocked during the\\n\u002F\u002F decoding which can be a bit long (see bug 1817244).\\n\u002F\u002F When bug 1759728 is fixed we can remove the BMP workaround and at least it\\n\u002F\u002F should be a way faster to create the bitmap.\\n\\nclass ImageResizer {\\n  constructor(imgData, isMask) {\\n    this._imgData = imgData;\\n    this._isMask = isMask;\\n  }\\n\\n  static needsToBeResized(width, height) {\\n    if (width \u003C= this._goodSquareLength && height \u003C= this._goodSquareLength) {\\n      return false;\\n    }\\n\\n    const { MAX_DIM } = this;\\n    if (width > MAX_DIM || height > MAX_DIM) {\\n      return true;\\n    }\\n\\n    const area = width * height;\\n    if (this._hasMaxArea) {\\n      return area > this.MAX_AREA;\\n    }\\n\\n    if (area \u003C this._goodSquareLength ** 2) {\\n      return false;\\n    }\\n\\n    \u002F\u002F We try as much as possible to avoid to compute the max area.\\n    if (this._areGoodDims(width, height)) {\\n      this._goodSquareLength = Math.max(\\n        this._goodSquareLength,\\n        Math.floor(Math.sqrt(width * height))\\n      );\\n      return false;\\n    }\\n\\n    \u002F\u002F TODO: the computation can be a bit long because we potentially allocate\\n    \u002F\u002F some large canvas, so in the Firefox case this value (and MAX_DIM) can be\\n    \u002F\u002F infered from prefs (MAX_AREA = gfx.max-alloc-size \u002F 4, 4 is because of\\n    \u002F\u002F RGBA).\\n    this._goodSquareLength = this._guessMax(\\n      this._goodSquareLength,\\n      MAX_DIM,\\n      MAX_ERROR,\\n      0\\n    );\\n    const maxArea = (this.MAX_AREA = this._goodSquareLength ** 2);\\n\\n    return area > maxArea;\\n  }\\n\\n  static get MAX_DIM() {\\n    return shadow(\\n      this,\\n      \\\"MAX_DIM\\\",\\n      this._guessMax(MIN_IMAGE_DIM, MAX_IMAGE_DIM, 0, 1)\\n    );\\n  }\\n\\n  static get MAX_AREA() {\\n    this._hasMaxArea = true;\\n    return shadow(\\n      this,\\n      \\\"MAX_AREA\\\",\\n      this._guessMax(\\n        ImageResizer._goodSquareLength,\\n        this.MAX_DIM,\\n        MAX_ERROR,\\n        0\\n      ) ** 2\\n    );\\n  }\\n\\n  static set MAX_AREA(area) {\\n    if (area >= 0) {\\n      this._hasMaxArea = true;\\n      shadow(this, \\\"MAX_AREA\\\", area);\\n    }\\n  }\\n\\n  static setMaxArea(area) {\\n    if (!this._hasMaxArea) {\\n      \u002F\u002F Divide by 4 to have the value in pixels.\\n      this.MAX_AREA = area >> 2;\\n    }\\n  }\\n\\n  static _areGoodDims(width, height) {\\n    try {\\n      \u002F\u002F This code is working in either Firefox or Chrome.\\n      \u002F\u002F There is a faster solution using transferToImageBitmap which is faster\\n      \u002F\u002F in Firefox (when the dimensions are wrong the resulting bitmap has its\\n      \u002F\u002F dimensions equal to 1) but it doesn't find the correct values in\\n      \u002F\u002F Chrome.\\n      const canvas = new OffscreenCanvas(width, height);\\n      const ctx = canvas.getContext(\\\"2d\\\");\\n      ctx.fillRect(0, 0, 1, 1);\\n      const opacity = ctx.getImageData(0, 0, 1, 1).data[3];\\n      canvas.width = canvas.height = 1;\\n      return opacity !== 0;\\n    } catch {\\n      return false;\\n    }\\n  }\\n\\n  static _guessMax(start, end, tolerance, defaultHeight) {\\n    \u002F\u002F We don't really need to have exact values.\\n    \u002F\u002F When we're here then we're in a corner case: we've a very large image.\\n    \u002F\u002F So we could potentially downscale an image which fits in the canvas,\\n    \u002F\u002F it's maybe a pity in term of perfs but we'll reduce the memory use.\\n    \u002F\u002F The tolerance is the acceptable error we can make on the limit we want.\\n    \u002F\u002F On Chrome, when the tolerance 0 then it can take ~5s to compute the max\\n    \u002F\u002F area... and having a tolerance of 128 divides the time by 2.\\n    while (start + tolerance + 1 \u003C end) {\\n      const middle = Math.floor((start + end) \u002F 2);\\n      const height = defaultHeight || middle;\\n      if (this._areGoodDims(middle, height)) {\\n        start = middle;\\n      } else {\\n        end = middle;\\n      }\\n    }\\n    return start;\\n  }\\n\\n  static async createImage(imgData, isMask = false) {\\n    return new ImageResizer(imgData, isMask)._createImage();\\n  }\\n\\n  async _createImage() {\\n    const data = this._encodeBMP();\\n    const blob = new Blob([data.buffer], {\\n      type: \\\"image\u002Fbmp\\\",\\n    });\\n    const bitmapPromise = createImageBitmap(blob);\\n\\n    const { MAX_AREA, MAX_DIM } = ImageResizer;\\n    const { _imgData: imgData } = this;\\n    const { width, height } = imgData;\\n    const minFactor = Math.max(\\n      width \u002F MAX_DIM,\\n      height \u002F MAX_DIM,\\n      Math.sqrt((width * height) \u002F MAX_AREA)\\n    );\\n\\n    const firstFactor = Math.max(minFactor, 2);\\n\\n    \u002F\u002F Add 1 to the ratio and round it with 1 digit.\\n    \u002F\u002F We add 1.25 in order to have a final image under the limits\\n    \u002F\u002F (and not just at the limits) to reduce memory use.\\n    const factor = Math.round(10 * (minFactor + 1.25)) \u002F 10 \u002F firstFactor;\\n\\n    const N = Math.floor(Math.log2(factor));\\n    const steps = new Array(N + 2).fill(2);\\n    steps[0] = firstFactor;\\n    steps.splice(-1, 1, factor \u002F (1 \u003C\u003C N));\\n\\n    let newWidth = width;\\n    let newHeight = height;\\n    let bitmap = await bitmapPromise;\\n\\n    for (const step of steps) {\\n      const prevWidth = newWidth;\\n      const prevHeight = newHeight;\\n\\n      \u002F\u002F See bug 1820511 (Windows specific bug).\\n      \u002F\u002F TODO: once the above bug is fixed we could revert to:\\n      \u002F\u002F newWidth = Math.floor(newWidth \u002F 2);\\n      newWidth = Math.floor(newWidth \u002F step) - 1;\\n      newHeight = Math.floor(newHeight \u002F step) - 1;\\n\\n      const canvas = new OffscreenCanvas(newWidth, newHeight);\\n      const ctx = canvas.getContext(\\\"2d\\\");\\n      ctx.drawImage(\\n        bitmap,\\n        0,\\n        0,\\n        prevWidth,\\n        prevHeight,\\n        0,\\n        0,\\n        newWidth,\\n        newHeight\\n      );\\n      bitmap = canvas.transferToImageBitmap();\\n    }\\n\\n    imgData.data = null;\\n    imgData.bitmap = bitmap;\\n    imgData.width = newWidth;\\n    imgData.height = newHeight;\\n\\n    return imgData;\\n  }\\n\\n  _encodeBMP() {\\n    const { width, height, kind } = this._imgData;\\n    let data = this._imgData.data;\\n    let bitPerPixel;\\n    let colorTable = new Uint8Array(0);\\n    let maskTable = colorTable;\\n    let compression = 0;\\n\\n    \u002F\u002F Each row of the image must be padded in order to have a final size which\\n    \u002F\u002F is a multiple of 4.\\n\\n    switch (kind) {\\n      case ImageKind.GRAYSCALE_1BPP: {\\n        bitPerPixel = 1;\\n        colorTable = new Uint8Array(\\n          this._isMask\\n            ? [255, 255, 255, 255, 0, 0, 0, 0]\\n            : [0, 0, 0, 0, 255, 255, 255, 255]\\n        );\\n        const rowLen = (width + 7) >> 3;\\n        const rowSize = (rowLen + 3) & -4;\\n        if (rowLen !== rowSize) {\\n          const newData = new Uint8Array(rowSize * height);\\n          let k = 0;\\n          for (\\n            let i = 0, ii = height * rowLen;\\n            i \u003C ii;\\n            i += rowLen, k += rowSize\\n          ) {\\n            newData.set(data.subarray(i, i + rowLen), k);\\n          }\\n          data = newData;\\n        }\\n        break;\\n      }\\n      case ImageKind.RGB_24BPP: {\\n        bitPerPixel = 24;\\n        if (width & 3) {\\n          const rowLen = 3 * width;\\n          const rowSize = (rowLen + 3) & -4;\\n          const extraLen = rowSize - rowLen;\\n          const newData = new Uint8Array(rowSize * height);\\n          let k = 0;\\n          for (let i = 0, ii = height * rowLen; i \u003C ii; i += rowLen) {\\n            const row = data.subarray(i, i + rowLen);\\n            for (let j = 0; j \u003C rowLen; j += 3) {\\n              newData[k++] = row[j + 2];\\n              newData[k++] = row[j + 1];\\n              newData[k++] = row[j];\\n            }\\n            k += extraLen;\\n          }\\n          data = newData;\\n        } else {\\n          for (let i = 0, ii = data.length; i \u003C ii; i += 3) {\\n            \u002F\u002F Just swap R and B.\\n            const tmp = data[i];\\n            data[i] = data[i + 2];\\n            data[i + 2] = tmp;\\n          }\\n        }\\n        break;\\n      }\\n      case ImageKind.RGBA_32BPP:\\n        bitPerPixel = 32;\\n        compression = 3;\\n        maskTable = new Uint8Array(\\n          4 \u002F* R mask *\u002F +\\n            4 \u002F* G mask *\u002F +\\n            4 \u002F* B mask *\u002F +\\n            4 \u002F* A mask *\u002F +\\n            52 \u002F* Windows color space stuff *\u002F\\n        );\\n        const view = new DataView(maskTable.buffer);\\n        if (FeatureTest.isLittleEndian) {\\n          view.setUint32(0, 0x000000ff, true);\\n          view.setUint32(4, 0x0000ff00, true);\\n          view.setUint32(8, 0x00ff0000, true);\\n          view.setUint32(12, 0xff000000, true);\\n        } else {\\n          view.setUint32(0, 0xff000000, true);\\n          view.setUint32(4, 0x00ff0000, true);\\n          view.setUint32(8, 0x0000ff00, true);\\n          view.setUint32(12, 0x000000ff, true);\\n        }\\n        break;\\n      default:\\n        throw new Error(\\\"invalid format\\\");\\n    }\\n\\n    let i = 0;\\n    const headerLength = 40 + maskTable.length;\\n    const fileLength = 14 + headerLength + colorTable.length + data.length;\\n    const bmpData = new Uint8Array(fileLength);\\n    const view = new DataView(bmpData.buffer);\\n\\n    \u002F\u002F Signature.\\n    view.setUint16(i, 0x4d42, true);\\n    i += 2;\\n\\n    \u002F\u002F File size.\\n    view.setUint32(i, fileLength, true);\\n    i += 4;\\n\\n    \u002F\u002F Reserved.\\n    view.setUint32(i, 0, true);\\n    i += 4;\\n\\n    \u002F\u002F Data offset.\\n    view.setUint32(i, 14 + headerLength + colorTable.length, true);\\n    i += 4;\\n\\n    \u002F\u002F Header size.\\n    view.setUint32(i, headerLength, true);\\n    i += 4;\\n\\n    \u002F\u002F Width.\\n    view.setInt32(i, width, true);\\n    i += 4;\\n\\n    \u002F\u002F Height.\\n    \u002F\u002F Negative height indicates that the image is stored from top to bottom.\\n    view.setInt32(i, -height, true);\\n    i += 4;\\n\\n    \u002F\u002F Number of planes (must be 1).\\n    view.setUint16(i, 1, true);\\n    i += 2;\\n\\n    \u002F\u002F Number of bit per pixel.\\n    view.setUint16(i, bitPerPixel, true);\\n    i += 2;\\n\\n    \u002F\u002F Compression method.\\n    view.setUint32(i, compression, true);\\n    i += 4;\\n\\n    \u002F\u002F The image size.\\n    view.setUint32(i, 0, true);\\n    i += 4;\\n\\n    \u002F\u002F Horizontal resolution.\\n    view.setInt32(i, 0, true);\\n    i += 4;\\n\\n    \u002F\u002F Vertical resolution.\\n    view.setInt32(i, 0, true);\\n    i += 4;\\n\\n    \u002F\u002F Number of colors in the palette (0 to default).\\n    view.setUint32(i, colorTable.length \u002F 4, true);\\n    i += 4;\\n\\n    \u002F\u002F Number of important colors used (0 to default).\\n    view.setUint32(i, 0, true);\\n    i += 4;\\n\\n    bmpData.set(maskTable, i);\\n    i += maskTable.length;\\n\\n    bmpData.set(colorTable, i);\\n    i += colorTable.length;\\n\\n    bmpData.set(data, i);\\n\\n    return bmpData;\\n  }\\n}\\n\\nImageResizer._goodSquareLength = MIN_IMAGE_DIM;\\n\\nexport { ImageResizer };\\n\",\"\u002F* Copyright 2014 Opera Software ASA\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\\n *\\n * Based on https:\u002F\u002Fcode.google.com\u002Fp\u002Fsmhasher\u002Fwiki\u002FMurmurHash3.\\n * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.\\n *\u002F\\n\\nconst SEED = 0xc3d2e1f0;\\n\u002F\u002F Workaround for missing math precision in JS.\\nconst MASK_HIGH = 0xffff0000;\\nconst MASK_LOW = 0xffff;\\n\\nclass MurmurHash3_64 {\\n  constructor(seed) {\\n    this.h1 = seed ? seed & 0xffffffff : SEED;\\n    this.h2 = seed ? seed & 0xffffffff : SEED;\\n  }\\n\\n  update(input) {\\n    let data, length;\\n    if (typeof input === \\\"string\\\") {\\n      data = new Uint8Array(input.length * 2);\\n      length = 0;\\n      for (let i = 0, ii = input.length; i \u003C ii; i++) {\\n        const code = input.charCodeAt(i);\\n        if (code \u003C= 0xff) {\\n          data[length++] = code;\\n        } else {\\n          data[length++] = code >>> 8;\\n          data[length++] = code & 0xff;\\n        }\\n      }\\n    } else if (ArrayBuffer.isView(input)) {\\n      data = input.slice();\\n      length = data.byteLength;\\n    } else {\\n      throw new Error(\\\"Invalid data format, must be a string or TypedArray.\\\");\\n    }\\n\\n    const blockCounts = length >> 2;\\n    const tailLength = length - blockCounts * 4;\\n    \u002F\u002F We don't care about endianness here.\\n    const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\\n    let k1 = 0,\\n      k2 = 0;\\n    let h1 = this.h1,\\n      h2 = this.h2;\\n    const C1 = 0xcc9e2d51,\\n      C2 = 0x1b873593;\\n    const C1_LOW = C1 & MASK_LOW,\\n      C2_LOW = C2 & MASK_LOW;\\n\\n    for (let i = 0; i \u003C blockCounts; i++) {\\n      if (i & 1) {\\n        k1 = dataUint32[i];\\n        k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\\n        k1 = (k1 \u003C\u003C 15) | (k1 >>> 17);\\n        k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\\n        h1 ^= k1;\\n        h1 = (h1 \u003C\u003C 13) | (h1 >>> 19);\\n        h1 = h1 * 5 + 0xe6546b64;\\n      } else {\\n        k2 = dataUint32[i];\\n        k2 = ((k2 * C1) & MASK_HIGH) | ((k2 * C1_LOW) & MASK_LOW);\\n        k2 = (k2 \u003C\u003C 15) | (k2 >>> 17);\\n        k2 = ((k2 * C2) & MASK_HIGH) | ((k2 * C2_LOW) & MASK_LOW);\\n        h2 ^= k2;\\n        h2 = (h2 \u003C\u003C 13) | (h2 >>> 19);\\n        h2 = h2 * 5 + 0xe6546b64;\\n      }\\n    }\\n\\n    k1 = 0;\\n\\n    switch (tailLength) {\\n      case 3:\\n        k1 ^= data[blockCounts * 4 + 2] \u003C\u003C 16;\\n      \u002F* falls through *\u002F\\n      case 2:\\n        k1 ^= data[blockCounts * 4 + 1] \u003C\u003C 8;\\n      \u002F* falls through *\u002F\\n      case 1:\\n        k1 ^= data[blockCounts * 4];\\n        \u002F* falls through *\u002F\\n\\n        k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\\n        k1 = (k1 \u003C\u003C 15) | (k1 >>> 17);\\n        k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\\n        if (blockCounts & 1) {\\n          h1 ^= k1;\\n        } else {\\n          h2 ^= k1;\\n        }\\n    }\\n\\n    this.h1 = h1;\\n    this.h2 = h2;\\n  }\\n\\n  hexdigest() {\\n    let h1 = this.h1,\\n      h2 = this.h2;\\n\\n    h1 ^= h2 >>> 1;\\n    h1 = ((h1 * 0xed558ccd) & MASK_HIGH) | ((h1 * 0x8ccd) & MASK_LOW);\\n    h2 =\\n      ((h2 * 0xff51afd7) & MASK_HIGH) |\\n      (((((h2 \u003C\u003C 16) | (h1 >>> 16)) * 0xafd7ed55) & MASK_HIGH) >>> 16);\\n    h1 ^= h2 >>> 1;\\n    h1 = ((h1 * 0x1a85ec53) & MASK_HIGH) | ((h1 * 0xec53) & MASK_LOW);\\n    h2 =\\n      ((h2 * 0xc4ceb9fe) & MASK_HIGH) |\\n      (((((h2 \u003C\u003C 16) | (h1 >>> 16)) * 0xb9fe1a85) & MASK_HIGH) >>> 16);\\n    h1 ^= h2 >>> 1;\\n\\n    return (\\n      (h1 >>> 0).toString(16).padStart(8, \\\"0\\\") +\\n      (h2 >>> 0).toString(16).padStart(8, \\\"0\\\")\\n    );\\n  }\\n}\\n\\nexport { MurmurHash3_64 };\\n\",\"\u002F* Copyright 2017 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { ImageKind, OPS, RenderingIntentFlag, warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nfunction addState(parentState, pattern, checkFn, iterateFn, processFn) {\\n  let state = parentState;\\n  for (let i = 0, ii = pattern.length - 1; i \u003C ii; i++) {\\n    const item = pattern[i];\\n    state = state[item] ||= [];\\n  }\\n  state[pattern.at(-1)] = {\\n    checkFn,\\n    iterateFn,\\n    processFn,\\n  };\\n}\\n\\nconst InitialState = [];\\n\\n\u002F\u002F This replaces (save, transform, paintInlineImageXObject, restore)+\\n\u002F\u002F sequences with one |paintInlineImageXObjectGroup| operation.\\naddState(\\n  InitialState,\\n  [OPS.save, OPS.transform, OPS.paintInlineImageXObject, OPS.restore],\\n  null,\\n  function iterateInlineImageGroup(context, i) {\\n    const fnArray = context.fnArray;\\n    const iFirstSave = context.iCurr - 3;\\n    const pos = (i - iFirstSave) % 4;\\n    switch (pos) {\\n      case 0:\\n        return fnArray[i] === OPS.save;\\n      case 1:\\n        return fnArray[i] === OPS.transform;\\n      case 2:\\n        return fnArray[i] === OPS.paintInlineImageXObject;\\n      case 3:\\n        return fnArray[i] === OPS.restore;\\n    }\\n    throw new Error(`iterateInlineImageGroup - invalid pos: ${pos}`);\\n  },\\n  function foundInlineImageGroup(context, i) {\\n    const MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;\\n    const MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;\\n    const MAX_WIDTH = 1000;\\n    const IMAGE_PADDING = 1;\\n\\n    const fnArray = context.fnArray,\\n      argsArray = context.argsArray;\\n    const curr = context.iCurr;\\n    const iFirstSave = curr - 3;\\n    const iFirstTransform = curr - 2;\\n    const iFirstPIIXO = curr - 1;\\n\\n    const count = Math.min(\\n      Math.floor((i - iFirstSave) \u002F 4),\\n      MAX_IMAGES_IN_INLINE_IMAGES_BLOCK\\n    );\\n    if (count \u003C MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {\\n      return i - ((i - iFirstSave) % 4);\\n    }\\n\\n    \u002F\u002F assuming that heights of those image is too small (~1 pixel)\\n    \u002F\u002F packing as much as possible by lines\\n    let maxX = 0;\\n    const map = [];\\n    let maxLineHeight = 0;\\n    let currentX = IMAGE_PADDING,\\n      currentY = IMAGE_PADDING;\\n    for (let q = 0; q \u003C count; q++) {\\n      const transform = argsArray[iFirstTransform + (q \u003C\u003C 2)];\\n      const img = argsArray[iFirstPIIXO + (q \u003C\u003C 2)][0];\\n      if (currentX + img.width > MAX_WIDTH) {\\n        \u002F\u002F starting new line\\n        maxX = Math.max(maxX, currentX);\\n        currentY += maxLineHeight + 2 * IMAGE_PADDING;\\n        currentX = 0;\\n        maxLineHeight = 0;\\n      }\\n      map.push({\\n        transform,\\n        x: currentX,\\n        y: currentY,\\n        w: img.width,\\n        h: img.height,\\n      });\\n      currentX += img.width + 2 * IMAGE_PADDING;\\n      maxLineHeight = Math.max(maxLineHeight, img.height);\\n    }\\n    const imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;\\n    const imgHeight = currentY + maxLineHeight + IMAGE_PADDING;\\n    const imgData = new Uint8Array(imgWidth * imgHeight * 4);\\n    const imgRowSize = imgWidth \u003C\u003C 2;\\n    for (let q = 0; q \u003C count; q++) {\\n      const data = argsArray[iFirstPIIXO + (q \u003C\u003C 2)][0].data;\\n      \u002F\u002F Copy image by lines and extends pixels into padding.\\n      const rowSize = map[q].w \u003C\u003C 2;\\n      let dataOffset = 0;\\n      let offset = (map[q].x + map[q].y * imgWidth) \u003C\u003C 2;\\n      imgData.set(data.subarray(0, rowSize), offset - imgRowSize);\\n      for (let k = 0, kk = map[q].h; k \u003C kk; k++) {\\n        imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);\\n        dataOffset += rowSize;\\n        offset += imgRowSize;\\n      }\\n      imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);\\n      while (offset >= 0) {\\n        data[offset - 4] = data[offset];\\n        data[offset - 3] = data[offset + 1];\\n        data[offset - 2] = data[offset + 2];\\n        data[offset - 1] = data[offset + 3];\\n        data[offset + rowSize] = data[offset + rowSize - 4];\\n        data[offset + rowSize + 1] = data[offset + rowSize - 3];\\n        data[offset + rowSize + 2] = data[offset + rowSize - 2];\\n        data[offset + rowSize + 3] = data[offset + rowSize - 1];\\n        offset -= imgRowSize;\\n      }\\n    }\\n\\n    const img = {\\n      width: imgWidth,\\n      height: imgHeight,\\n    };\\n    if (context.isOffscreenCanvasSupported) {\\n      const canvas = new OffscreenCanvas(imgWidth, imgHeight);\\n      const ctx = canvas.getContext(\\\"2d\\\");\\n      ctx.putImageData(\\n        new ImageData(\\n          new Uint8ClampedArray(imgData.buffer),\\n          imgWidth,\\n          imgHeight\\n        ),\\n        0,\\n        0\\n      );\\n      img.bitmap = canvas.transferToImageBitmap();\\n      img.data = null;\\n    } else {\\n      img.kind = ImageKind.RGBA_32BPP;\\n      img.data = imgData;\\n    }\\n\\n    \u002F\u002F Replace queue items.\\n    fnArray.splice(iFirstSave, count * 4, OPS.paintInlineImageXObjectGroup);\\n    argsArray.splice(iFirstSave, count * 4, [img, map]);\\n\\n    return iFirstSave + 1;\\n  }\\n);\\n\\n\u002F\u002F This replaces (save, transform, paintImageMaskXObject, restore)+\\n\u002F\u002F sequences with one |paintImageMaskXObjectGroup| or one\\n\u002F\u002F |paintImageMaskXObjectRepeat| operation.\\naddState(\\n  InitialState,\\n  [OPS.save, OPS.transform, OPS.paintImageMaskXObject, OPS.restore],\\n  null,\\n  function iterateImageMaskGroup(context, i) {\\n    const fnArray = context.fnArray;\\n    const iFirstSave = context.iCurr - 3;\\n    const pos = (i - iFirstSave) % 4;\\n    switch (pos) {\\n      case 0:\\n        return fnArray[i] === OPS.save;\\n      case 1:\\n        return fnArray[i] === OPS.transform;\\n      case 2:\\n        return fnArray[i] === OPS.paintImageMaskXObject;\\n      case 3:\\n        return fnArray[i] === OPS.restore;\\n    }\\n    throw new Error(`iterateImageMaskGroup - invalid pos: ${pos}`);\\n  },\\n  function foundImageMaskGroup(context, i) {\\n    const MIN_IMAGES_IN_MASKS_BLOCK = 10;\\n    const MAX_IMAGES_IN_MASKS_BLOCK = 100;\\n    const MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;\\n\\n    const fnArray = context.fnArray,\\n      argsArray = context.argsArray;\\n    const curr = context.iCurr;\\n    const iFirstSave = curr - 3;\\n    const iFirstTransform = curr - 2;\\n    const iFirstPIMXO = curr - 1;\\n\\n    \u002F\u002F At this point, i is the index of the first op past the last valid\\n    \u002F\u002F quartet.\\n    let count = Math.floor((i - iFirstSave) \u002F 4);\\n    if (count \u003C MIN_IMAGES_IN_MASKS_BLOCK) {\\n      return i - ((i - iFirstSave) % 4);\\n    }\\n\\n    let isSameImage = false;\\n    let iTransform, transformArgs;\\n    const firstPIMXOArg0 = argsArray[iFirstPIMXO][0];\\n    const firstTransformArg0 = argsArray[iFirstTransform][0],\\n      firstTransformArg1 = argsArray[iFirstTransform][1],\\n      firstTransformArg2 = argsArray[iFirstTransform][2],\\n      firstTransformArg3 = argsArray[iFirstTransform][3];\\n\\n    if (firstTransformArg1 === firstTransformArg2) {\\n      isSameImage = true;\\n      iTransform = iFirstTransform + 4;\\n      let iPIMXO = iFirstPIMXO + 4;\\n      for (let q = 1; q \u003C count; q++, iTransform += 4, iPIMXO += 4) {\\n        transformArgs = argsArray[iTransform];\\n        if (\\n          argsArray[iPIMXO][0] !== firstPIMXOArg0 ||\\n          transformArgs[0] !== firstTransformArg0 ||\\n          transformArgs[1] !== firstTransformArg1 ||\\n          transformArgs[2] !== firstTransformArg2 ||\\n          transformArgs[3] !== firstTransformArg3\\n        ) {\\n          if (q \u003C MIN_IMAGES_IN_MASKS_BLOCK) {\\n            isSameImage = false;\\n          } else {\\n            count = q;\\n          }\\n          break; \u002F\u002F different image or transform\\n        }\\n      }\\n    }\\n\\n    if (isSameImage) {\\n      count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);\\n      const positions = new Float32Array(count * 2);\\n      iTransform = iFirstTransform;\\n      for (let q = 0; q \u003C count; q++, iTransform += 4) {\\n        transformArgs = argsArray[iTransform];\\n        positions[q \u003C\u003C 1] = transformArgs[4];\\n        positions[(q \u003C\u003C 1) + 1] = transformArgs[5];\\n      }\\n\\n      \u002F\u002F Replace queue items.\\n      fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectRepeat);\\n      argsArray.splice(iFirstSave, count * 4, [\\n        firstPIMXOArg0,\\n        firstTransformArg0,\\n        firstTransformArg1,\\n        firstTransformArg2,\\n        firstTransformArg3,\\n        positions,\\n      ]);\\n    } else {\\n      count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);\\n      const images = [];\\n      for (let q = 0; q \u003C count; q++) {\\n        transformArgs = argsArray[iFirstTransform + (q \u003C\u003C 2)];\\n        const maskParams = argsArray[iFirstPIMXO + (q \u003C\u003C 2)][0];\\n        images.push({\\n          data: maskParams.data,\\n          width: maskParams.width,\\n          height: maskParams.height,\\n          interpolate: maskParams.interpolate,\\n          count: maskParams.count,\\n          transform: transformArgs,\\n        });\\n      }\\n\\n      \u002F\u002F Replace queue items.\\n      fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectGroup);\\n      argsArray.splice(iFirstSave, count * 4, [images]);\\n    }\\n\\n    return iFirstSave + 1;\\n  }\\n);\\n\\n\u002F\u002F This replaces (save, transform, paintImageXObject, restore)+ sequences\\n\u002F\u002F with one paintImageXObjectRepeat operation, if the |transform| and\\n\u002F\u002F |paintImageXObjectRepeat| ops are appropriate.\\naddState(\\n  InitialState,\\n  [OPS.save, OPS.transform, OPS.paintImageXObject, OPS.restore],\\n  function (context) {\\n    const argsArray = context.argsArray;\\n    const iFirstTransform = context.iCurr - 2;\\n    return (\\n      argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0\\n    );\\n  },\\n  function iterateImageGroup(context, i) {\\n    const fnArray = context.fnArray,\\n      argsArray = context.argsArray;\\n    const iFirstSave = context.iCurr - 3;\\n    const pos = (i - iFirstSave) % 4;\\n    switch (pos) {\\n      case 0:\\n        return fnArray[i] === OPS.save;\\n      case 1:\\n        if (fnArray[i] !== OPS.transform) {\\n          return false;\\n        }\\n        const iFirstTransform = context.iCurr - 2;\\n        const firstTransformArg0 = argsArray[iFirstTransform][0];\\n        const firstTransformArg3 = argsArray[iFirstTransform][3];\\n        if (\\n          argsArray[i][0] !== firstTransformArg0 ||\\n          argsArray[i][1] !== 0 ||\\n          argsArray[i][2] !== 0 ||\\n          argsArray[i][3] !== firstTransformArg3\\n        ) {\\n          return false; \u002F\u002F transforms don't match\\n        }\\n        return true;\\n      case 2:\\n        if (fnArray[i] !== OPS.paintImageXObject) {\\n          return false;\\n        }\\n        const iFirstPIXO = context.iCurr - 1;\\n        const firstPIXOArg0 = argsArray[iFirstPIXO][0];\\n        if (argsArray[i][0] !== firstPIXOArg0) {\\n          return false; \u002F\u002F images don't match\\n        }\\n        return true;\\n      case 3:\\n        return fnArray[i] === OPS.restore;\\n    }\\n    throw new Error(`iterateImageGroup - invalid pos: ${pos}`);\\n  },\\n  function (context, i) {\\n    const MIN_IMAGES_IN_BLOCK = 3;\\n    const MAX_IMAGES_IN_BLOCK = 1000;\\n\\n    const fnArray = context.fnArray,\\n      argsArray = context.argsArray;\\n    const curr = context.iCurr;\\n    const iFirstSave = curr - 3;\\n    const iFirstTransform = curr - 2;\\n    const iFirstPIXO = curr - 1;\\n    const firstPIXOArg0 = argsArray[iFirstPIXO][0];\\n    const firstTransformArg0 = argsArray[iFirstTransform][0];\\n    const firstTransformArg3 = argsArray[iFirstTransform][3];\\n\\n    \u002F\u002F At this point, i is the index of the first op past the last valid\\n    \u002F\u002F quartet.\\n    const count = Math.min(\\n      Math.floor((i - iFirstSave) \u002F 4),\\n      MAX_IMAGES_IN_BLOCK\\n    );\\n    if (count \u003C MIN_IMAGES_IN_BLOCK) {\\n      return i - ((i - iFirstSave) % 4);\\n    }\\n\\n    \u002F\u002F Extract the (x,y) positions from all of the matching transforms.\\n    const positions = new Float32Array(count * 2);\\n    let iTransform = iFirstTransform;\\n    for (let q = 0; q \u003C count; q++, iTransform += 4) {\\n      const transformArgs = argsArray[iTransform];\\n      positions[q \u003C\u003C 1] = transformArgs[4];\\n      positions[(q \u003C\u003C 1) + 1] = transformArgs[5];\\n    }\\n\\n    \u002F\u002F Replace queue items.\\n    const args = [\\n      firstPIXOArg0,\\n      firstTransformArg0,\\n      firstTransformArg3,\\n      positions,\\n    ];\\n    fnArray.splice(iFirstSave, count * 4, OPS.paintImageXObjectRepeat);\\n    argsArray.splice(iFirstSave, count * 4, args);\\n\\n    return iFirstSave + 1;\\n  }\\n);\\n\\n\u002F\u002F This replaces (beginText, setFont, setTextMatrix, showText, endText)+\\n\u002F\u002F sequences with (beginText, setFont, (setTextMatrix, showText)+, endText)+\\n\u002F\u002F sequences, if the font for each one is the same.\\naddState(\\n  InitialState,\\n  [OPS.beginText, OPS.setFont, OPS.setTextMatrix, OPS.showText, OPS.endText],\\n  null,\\n  function iterateShowTextGroup(context, i) {\\n    const fnArray = context.fnArray,\\n      argsArray = context.argsArray;\\n    const iFirstSave = context.iCurr - 4;\\n    const pos = (i - iFirstSave) % 5;\\n    switch (pos) {\\n      case 0:\\n        return fnArray[i] === OPS.beginText;\\n      case 1:\\n        return fnArray[i] === OPS.setFont;\\n      case 2:\\n        return fnArray[i] === OPS.setTextMatrix;\\n      case 3:\\n        if (fnArray[i] !== OPS.showText) {\\n          return false;\\n        }\\n        const iFirstSetFont = context.iCurr - 3;\\n        const firstSetFontArg0 = argsArray[iFirstSetFont][0];\\n        const firstSetFontArg1 = argsArray[iFirstSetFont][1];\\n        if (\\n          argsArray[i][0] !== firstSetFontArg0 ||\\n          argsArray[i][1] !== firstSetFontArg1\\n        ) {\\n          return false; \u002F\u002F fonts don't match\\n        }\\n        return true;\\n      case 4:\\n        return fnArray[i] === OPS.endText;\\n    }\\n    throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`);\\n  },\\n  function (context, i) {\\n    const MIN_CHARS_IN_BLOCK = 3;\\n    const MAX_CHARS_IN_BLOCK = 1000;\\n\\n    const fnArray = context.fnArray,\\n      argsArray = context.argsArray;\\n    const curr = context.iCurr;\\n    const iFirstBeginText = curr - 4;\\n    const iFirstSetFont = curr - 3;\\n    const iFirstSetTextMatrix = curr - 2;\\n    const iFirstShowText = curr - 1;\\n    const iFirstEndText = curr;\\n    const firstSetFontArg0 = argsArray[iFirstSetFont][0];\\n    const firstSetFontArg1 = argsArray[iFirstSetFont][1];\\n\\n    \u002F\u002F At this point, i is the index of the first op past the last valid\\n    \u002F\u002F quintet.\\n    let count = Math.min(\\n      Math.floor((i - iFirstBeginText) \u002F 5),\\n      MAX_CHARS_IN_BLOCK\\n    );\\n    if (count \u003C MIN_CHARS_IN_BLOCK) {\\n      return i - ((i - iFirstBeginText) % 5);\\n    }\\n\\n    \u002F\u002F If the preceding quintet is (\u003Csomething>, setFont, setTextMatrix,\\n    \u002F\u002F showText, endText), include that as well. (E.g. \u003Csomething> might be\\n    \u002F\u002F |dependency|.)\\n    let iFirst = iFirstBeginText;\\n    if (\\n      iFirstBeginText >= 4 &&\\n      fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] &&\\n      fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] &&\\n      fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] &&\\n      fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] &&\\n      argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 &&\\n      argsArray[iFirstBeginText - 4][1] === firstSetFontArg1\\n    ) {\\n      count++;\\n      iFirst -= 5;\\n    }\\n\\n    \u002F\u002F Remove (endText, beginText, setFont) trios.\\n    let iEndText = iFirst + 4;\\n    for (let q = 1; q \u003C count; q++) {\\n      fnArray.splice(iEndText, 3);\\n      argsArray.splice(iEndText, 3);\\n      iEndText += 2;\\n    }\\n\\n    return iEndText + 1;\\n  }\\n);\\n\\nclass NullOptimizer {\\n  constructor(queue) {\\n    this.queue = queue;\\n  }\\n\\n  _optimize() {}\\n\\n  push(fn, args) {\\n    this.queue.fnArray.push(fn);\\n    this.queue.argsArray.push(args);\\n    this._optimize();\\n  }\\n\\n  flush() {}\\n\\n  reset() {}\\n}\\n\\nclass QueueOptimizer extends NullOptimizer {\\n  constructor(queue) {\\n    super(queue);\\n    this.state = null;\\n    this.context = {\\n      iCurr: 0,\\n      fnArray: queue.fnArray,\\n      argsArray: queue.argsArray,\\n      isOffscreenCanvasSupported: false,\\n    };\\n    this.match = null;\\n    this.lastProcessed = 0;\\n  }\\n\\n  \u002F\u002F eslint-disable-next-line accessor-pairs\\n  set isOffscreenCanvasSupported(value) {\\n    this.context.isOffscreenCanvasSupported = value;\\n  }\\n\\n  _optimize() {\\n    \u002F\u002F Process new fnArray item(s) chunk.\\n    const fnArray = this.queue.fnArray;\\n    let i = this.lastProcessed,\\n      ii = fnArray.length;\\n    let state = this.state;\\n    let match = this.match;\\n    if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) {\\n      \u002F\u002F Micro-optimization for the common case: last item is not\\n      \u002F\u002F optimizable, just skipping it.\\n      this.lastProcessed = ii;\\n      return;\\n    }\\n\\n    const context = this.context;\\n    while (i \u003C ii) {\\n      if (match) {\\n        \u002F\u002F Already find a block of potentially optimizable items, iterating...\\n        const iterate = (0, match.iterateFn)(context, i);\\n        if (iterate) {\\n          i++;\\n          continue;\\n        }\\n        \u002F\u002F Found last items for the block, processing...\\n        i = (0, match.processFn)(context, i + 1);\\n        ii = fnArray.length;\\n        match = null;\\n        state = null;\\n        if (i >= ii) {\\n          break;\\n        }\\n      }\\n      \u002F\u002F Find the potentially optimizable items.\\n      state = (state || InitialState)[fnArray[i]];\\n      if (!state || Array.isArray(state)) {\\n        i++;\\n        continue;\\n      }\\n      \u002F\u002F Found a start of the block based on addState rules.\\n      context.iCurr = i;\\n      i++;\\n      if (state.checkFn && !(0, state.checkFn)(context)) {\\n        \u002F\u002F Check failed, continue search...\\n        state = null;\\n        continue;\\n      }\\n      match = state;\\n      state = null;\\n    }\\n    this.state = state;\\n    this.match = match;\\n    this.lastProcessed = i;\\n  }\\n\\n  flush() {\\n    while (this.match) {\\n      const length = this.queue.fnArray.length;\\n      this.lastProcessed = (0, this.match.processFn)(this.context, length);\\n      this.match = null;\\n      this.state = null;\\n      \u002F\u002F Repeat optimization until all chunks are exhausted.\\n      this._optimize();\\n    }\\n  }\\n\\n  reset() {\\n    this.state = null;\\n    this.match = null;\\n    this.lastProcessed = 0;\\n  }\\n}\\n\\nclass OperatorList {\\n  static CHUNK_SIZE = 1000;\\n\\n  \u002F\u002F Close to chunk size.\\n  static CHUNK_SIZE_ABOUT = this.CHUNK_SIZE - 5;\\n\\n  constructor(intent = 0, streamSink) {\\n    this._streamSink = streamSink;\\n    this.fnArray = [];\\n    this.argsArray = [];\\n    this.optimizer =\\n      streamSink && !(intent & RenderingIntentFlag.OPLIST)\\n        ? new QueueOptimizer(this)\\n        : new NullOptimizer(this);\\n    this.dependencies = new Set();\\n    this._totalLength = 0;\\n    this.weight = 0;\\n    this._resolved = streamSink ? null : Promise.resolve();\\n  }\\n\\n  \u002F\u002F eslint-disable-next-line accessor-pairs\\n  set isOffscreenCanvasSupported(value) {\\n    this.optimizer.isOffscreenCanvasSupported = value;\\n  }\\n\\n  get length() {\\n    return this.argsArray.length;\\n  }\\n\\n  get ready() {\\n    return this._resolved || this._streamSink.ready;\\n  }\\n\\n  \u002F**\\n   * @type {number} The total length of the entire operator list, since\\n   *                `this.length === 0` after flushing.\\n   *\u002F\\n  get totalLength() {\\n    return this._totalLength + this.length;\\n  }\\n\\n  addOp(fn, args) {\\n    this.optimizer.push(fn, args);\\n    this.weight++;\\n    if (this._streamSink) {\\n      if (this.weight >= OperatorList.CHUNK_SIZE) {\\n        this.flush();\\n      } else if (\\n        this.weight >= OperatorList.CHUNK_SIZE_ABOUT &&\\n        (fn === OPS.restore || fn === OPS.endText)\\n      ) {\\n        \u002F\u002F Heuristic to flush on boundary of restore or endText.\\n        this.flush();\\n      }\\n    }\\n  }\\n\\n  addImageOps(fn, args, optionalContent) {\\n    if (optionalContent !== undefined) {\\n      this.addOp(OPS.beginMarkedContentProps, [\\\"OC\\\", optionalContent]);\\n    }\\n\\n    this.addOp(fn, args);\\n\\n    if (optionalContent !== undefined) {\\n      this.addOp(OPS.endMarkedContent, []);\\n    }\\n  }\\n\\n  addDependency(dependency) {\\n    if (this.dependencies.has(dependency)) {\\n      return;\\n    }\\n    this.dependencies.add(dependency);\\n    this.addOp(OPS.dependency, [dependency]);\\n  }\\n\\n  addDependencies(dependencies) {\\n    for (const dependency of dependencies) {\\n      this.addDependency(dependency);\\n    }\\n  }\\n\\n  addOpList(opList) {\\n    if (!(opList instanceof OperatorList)) {\\n      warn('addOpList - ignoring invalid \\\"opList\\\" parameter.');\\n      return;\\n    }\\n    for (const dependency of opList.dependencies) {\\n      this.dependencies.add(dependency);\\n    }\\n    for (let i = 0, ii = opList.length; i \u003C ii; i++) {\\n      this.addOp(opList.fnArray[i], opList.argsArray[i]);\\n    }\\n  }\\n\\n  getIR() {\\n    return {\\n      fnArray: this.fnArray,\\n      argsArray: this.argsArray,\\n      length: this.length,\\n    };\\n  }\\n\\n  get _transfers() {\\n    const transfers = [];\\n    const { fnArray, argsArray, length } = this;\\n    for (let i = 0; i \u003C length; i++) {\\n      switch (fnArray[i]) {\\n        case OPS.paintInlineImageXObject:\\n        case OPS.paintInlineImageXObjectGroup:\\n        case OPS.paintImageMaskXObject:\\n          const arg = argsArray[i][0]; \u002F\u002F First parameter in imgData.\\n          if (!arg.cached && arg.data?.buffer instanceof ArrayBuffer) {\\n            transfers.push(arg.data.buffer);\\n          }\\n          break;\\n      }\\n    }\\n    return transfers;\\n  }\\n\\n  flush(lastChunk = false, separateAnnots = null) {\\n    this.optimizer.flush();\\n    const length = this.length;\\n    this._totalLength += length;\\n\\n    this._streamSink.enqueue(\\n      {\\n        fnArray: this.fnArray,\\n        argsArray: this.argsArray,\\n        lastChunk,\\n        separateAnnots,\\n        length,\\n      },\\n      1,\\n      this._transfers\\n    );\\n\\n    this.dependencies.clear();\\n    this.fnArray.length = 0;\\n    this.argsArray.length = 0;\\n    this.weight = 0;\\n    this.optimizer.reset();\\n  }\\n}\\n\\nexport { OperatorList };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  assert,\\n  FeatureTest,\\n  FormatError,\\n  ImageKind,\\n  info,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  convertBlackAndWhiteToRGBA,\\n  convertToRGBA,\\n} from \\\"..\u002Fshared\u002Fimage_utils.js\\\";\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { ColorSpace } from \\\".\u002Fcolorspace.js\\\";\\nimport { DecodeStream } from \\\".\u002Fdecode_stream.js\\\";\\nimport { ImageResizer } from \\\".\u002Fimage_resizer.js\\\";\\nimport { JpegStream } from \\\".\u002Fjpeg_stream.js\\\";\\nimport { JpxImage } from \\\".\u002Fjpx.js\\\";\\nimport { Name } from \\\".\u002Fprimitives.js\\\";\\n\\n\u002F**\\n * Decode and clamp a value. The formula is different from the spec because we\\n * don't decode to float range [0,1], we decode it in the [0,max] range.\\n *\u002F\\nfunction decodeAndClamp(value, addend, coefficient, max) {\\n  value = addend + value * coefficient;\\n  \u002F\u002F Clamp the value to the range\\n  if (value \u003C 0) {\\n    value = 0;\\n  } else if (value > max) {\\n    value = max;\\n  }\\n  return value;\\n}\\n\\n\u002F**\\n * Resizes an image mask with 1 component.\\n * @param {TypedArray} src - The source buffer.\\n * @param {number} bpc - Number of bits per component.\\n * @param {number} w1 - Original width.\\n * @param {number} h1 - Original height.\\n * @param {number} w2 - New width.\\n * @param {number} h2 - New height.\\n * @returns {TypedArray} The resized image mask buffer.\\n *\u002F\\nfunction resizeImageMask(src, bpc, w1, h1, w2, h2) {\\n  const length = w2 * h2;\\n  let dest;\\n  if (bpc \u003C= 8) {\\n    dest = new Uint8Array(length);\\n  } else if (bpc \u003C= 16) {\\n    dest = new Uint16Array(length);\\n  } else {\\n    dest = new Uint32Array(length);\\n  }\\n  const xRatio = w1 \u002F w2;\\n  const yRatio = h1 \u002F h2;\\n  let i,\\n    j,\\n    py,\\n    newIndex = 0,\\n    oldIndex;\\n  const xScaled = new Uint16Array(w2);\\n  const w1Scanline = w1;\\n\\n  for (i = 0; i \u003C w2; i++) {\\n    xScaled[i] = Math.floor(i * xRatio);\\n  }\\n  for (i = 0; i \u003C h2; i++) {\\n    py = Math.floor(i * yRatio) * w1Scanline;\\n    for (j = 0; j \u003C w2; j++) {\\n      oldIndex = py + xScaled[j];\\n      dest[newIndex++] = src[oldIndex];\\n    }\\n  }\\n  return dest;\\n}\\n\\nclass PDFImage {\\n  constructor({\\n    xref,\\n    res,\\n    image,\\n    isInline = false,\\n    smask = null,\\n    mask = null,\\n    isMask = false,\\n    pdfFunctionFactory,\\n    localColorSpaceCache,\\n  }) {\\n    this.image = image;\\n    let jpxDecode = false;\\n    const dict = image.dict;\\n\\n    const filter = dict.get(\\\"F\\\", \\\"Filter\\\");\\n    let filterName;\\n    if (filter instanceof Name) {\\n      filterName = filter.name;\\n    } else if (Array.isArray(filter)) {\\n      const filterZero = xref.fetchIfRef(filter[0]);\\n      if (filterZero instanceof Name) {\\n        filterName = filterZero.name;\\n      }\\n    }\\n    switch (filterName) {\\n      case \\\"JPXDecode\\\":\\n        ({\\n          width: image.width,\\n          height: image.height,\\n          componentsCount: image.numComps,\\n          bitsPerComponent: image.bitsPerComponent,\\n        } = JpxImage.parseImageProperties(image.stream));\\n        image.stream.reset();\\n        jpxDecode = true;\\n        break;\\n      case \\\"JBIG2Decode\\\":\\n        image.bitsPerComponent = 1;\\n        image.numComps = 1;\\n        break;\\n    }\\n\\n    let width = dict.get(\\\"W\\\", \\\"Width\\\");\\n    let height = dict.get(\\\"H\\\", \\\"Height\\\");\\n\\n    if (\\n      Number.isInteger(image.width) &&\\n      image.width > 0 &&\\n      Number.isInteger(image.height) &&\\n      image.height > 0 &&\\n      (image.width !== width || image.height !== height)\\n    ) {\\n      warn(\\n        \\\"PDFImage - using the Width\u002FHeight of the image data, \\\" +\\n          \\\"rather than the image dictionary.\\\"\\n      );\\n      width = image.width;\\n      height = image.height;\\n    }\\n    if (width \u003C 1 || height \u003C 1) {\\n      throw new FormatError(\\n        `Invalid image width: ${width} or height: ${height}`\\n      );\\n    }\\n    this.width = width;\\n    this.height = height;\\n\\n    this.interpolate = dict.get(\\\"I\\\", \\\"Interpolate\\\");\\n    this.imageMask = dict.get(\\\"IM\\\", \\\"ImageMask\\\") || false;\\n    this.matte = dict.get(\\\"Matte\\\") || false;\\n\\n    let bitsPerComponent = image.bitsPerComponent;\\n    if (!bitsPerComponent) {\\n      bitsPerComponent = dict.get(\\\"BPC\\\", \\\"BitsPerComponent\\\");\\n      if (!bitsPerComponent) {\\n        if (this.imageMask) {\\n          bitsPerComponent = 1;\\n        } else {\\n          throw new FormatError(\\n            `Bits per component missing in image: ${this.imageMask}`\\n          );\\n        }\\n      }\\n    }\\n    this.bpc = bitsPerComponent;\\n\\n    if (!this.imageMask) {\\n      let colorSpace = dict.getRaw(\\\"CS\\\") || dict.getRaw(\\\"ColorSpace\\\");\\n      if (!colorSpace) {\\n        info(\\\"JPX images (which do not require color spaces)\\\");\\n        switch (image.numComps) {\\n          case 1:\\n            colorSpace = Name.get(\\\"DeviceGray\\\");\\n            break;\\n          case 3:\\n            colorSpace = Name.get(\\\"DeviceRGB\\\");\\n            break;\\n          case 4:\\n            colorSpace = Name.get(\\\"DeviceCMYK\\\");\\n            break;\\n          default:\\n            throw new Error(\\n              `JPX images with ${image.numComps} color components not supported.`\\n            );\\n        }\\n      }\\n\\n      this.colorSpace = ColorSpace.parse({\\n        cs: colorSpace,\\n        xref,\\n        resources: isInline ? res : null,\\n        pdfFunctionFactory,\\n        localColorSpaceCache,\\n      });\\n      this.numComps = this.colorSpace.numComps;\\n\\n      \u002F\u002F If the jpx image has a color space then it musn't be used in order to\\n      \u002F\u002F be able to use the color space that comes from the pdf.\\n      this.ignoreColorSpace = jpxDecode && this.colorSpace.name === \\\"Indexed\\\";\\n    }\\n\\n    this.decode = dict.getArray(\\\"D\\\", \\\"Decode\\\");\\n    this.needsDecode = false;\\n    if (\\n      this.decode &&\\n      ((this.colorSpace &&\\n        !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent)) ||\\n        (isMask &&\\n          !ColorSpace.isDefaultDecode(this.decode, \u002F* numComps = *\u002F 1)))\\n    ) {\\n      this.needsDecode = true;\\n      \u002F\u002F Do some preprocessing to avoid more math.\\n      const max = (1 \u003C\u003C bitsPerComponent) - 1;\\n      this.decodeCoefficients = [];\\n      this.decodeAddends = [];\\n      const isIndexed = this.colorSpace?.name === \\\"Indexed\\\";\\n      for (let i = 0, j = 0; i \u003C this.decode.length; i += 2, ++j) {\\n        const dmin = this.decode[i];\\n        const dmax = this.decode[i + 1];\\n        this.decodeCoefficients[j] = isIndexed\\n          ? (dmax - dmin) \u002F max\\n          : dmax - dmin;\\n        this.decodeAddends[j] = isIndexed ? dmin : max * dmin;\\n      }\\n    }\\n\\n    if (smask) {\\n      this.smask = new PDFImage({\\n        xref,\\n        res,\\n        image: smask,\\n        isInline,\\n        pdfFunctionFactory,\\n        localColorSpaceCache,\\n      });\\n    } else if (mask) {\\n      if (mask instanceof BaseStream) {\\n        const maskDict = mask.dict,\\n          imageMask = maskDict.get(\\\"IM\\\", \\\"ImageMask\\\");\\n        if (!imageMask) {\\n          warn(\\\"Ignoring \u002FMask in image without \u002FImageMask.\\\");\\n        } else {\\n          this.mask = new PDFImage({\\n            xref,\\n            res,\\n            image: mask,\\n            isInline,\\n            isMask: true,\\n            pdfFunctionFactory,\\n            localColorSpaceCache,\\n          });\\n        }\\n      } else {\\n        \u002F\u002F Color key mask (just an array).\\n        this.mask = mask;\\n      }\\n    }\\n  }\\n\\n  \u002F**\\n   * Handles processing of image data and returns the Promise that is resolved\\n   * with a PDFImage when the image is ready to be used.\\n   *\u002F\\n  static async buildImage({\\n    xref,\\n    res,\\n    image,\\n    isInline = false,\\n    pdfFunctionFactory,\\n    localColorSpaceCache,\\n  }) {\\n    const imageData = image;\\n    let smaskData = null;\\n    let maskData = null;\\n\\n    const smask = image.dict.get(\\\"SMask\\\");\\n    const mask = image.dict.get(\\\"Mask\\\");\\n\\n    if (smask) {\\n      if (smask instanceof BaseStream) {\\n        smaskData = smask;\\n      } else {\\n        warn(\\\"Unsupported \u002FSMask format.\\\");\\n      }\\n    } else if (mask) {\\n      if (mask instanceof BaseStream || Array.isArray(mask)) {\\n        maskData = mask;\\n      } else {\\n        warn(\\\"Unsupported \u002FMask format.\\\");\\n      }\\n    }\\n\\n    return new PDFImage({\\n      xref,\\n      res,\\n      image: imageData,\\n      isInline,\\n      smask: smaskData,\\n      mask: maskData,\\n      pdfFunctionFactory,\\n      localColorSpaceCache,\\n    });\\n  }\\n\\n  static createRawMask({\\n    imgArray,\\n    width,\\n    height,\\n    imageIsFromDecodeStream,\\n    inverseDecode,\\n    interpolate,\\n  }) {\\n    \u002F\u002F |imgArray| might not contain full data for every pixel of the mask, so\\n    \u002F\u002F we need to distinguish between |computedLength| and |actualLength|.\\n    \u002F\u002F In particular, if inverseDecode is true, then the array we return must\\n    \u002F\u002F have a length of |computedLength|.\\n\\n    const computedLength = ((width + 7) >> 3) * height;\\n    const actualLength = imgArray.byteLength;\\n    const haveFullData = computedLength === actualLength;\\n    let data, i;\\n\\n    if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {\\n      \u002F\u002F imgArray came from a DecodeStream and its data is in an appropriate\\n      \u002F\u002F form, so we can just transfer it.\\n      data = imgArray;\\n    } else if (!inverseDecode) {\\n      data = new Uint8Array(imgArray);\\n    } else {\\n      data = new Uint8Array(computedLength);\\n      data.set(imgArray);\\n      data.fill(0xff, actualLength);\\n    }\\n\\n    \u002F\u002F If necessary, invert the original mask data (but not any extra we might\\n    \u002F\u002F have added above). It's safe to modify the array -- whether it's the\\n    \u002F\u002F original or a copy, we're about to transfer it anyway, so nothing else\\n    \u002F\u002F in this thread can be relying on its contents.\\n    if (inverseDecode) {\\n      for (i = 0; i \u003C actualLength; i++) {\\n        data[i] ^= 0xff;\\n      }\\n    }\\n\\n    return { data, width, height, interpolate };\\n  }\\n\\n  static async createMask({\\n    imgArray,\\n    width,\\n    height,\\n    imageIsFromDecodeStream,\\n    inverseDecode,\\n    interpolate,\\n    isOffscreenCanvasSupported = false,\\n  }) {\\n    const isSingleOpaquePixel =\\n      width === 1 &&\\n      height === 1 &&\\n      inverseDecode === (imgArray.length === 0 || !!(imgArray[0] & 128));\\n\\n    if (isSingleOpaquePixel) {\\n      return { isSingleOpaquePixel };\\n    }\\n\\n    if (isOffscreenCanvasSupported) {\\n      if (ImageResizer.needsToBeResized(width, height)) {\\n        const data = new Uint8ClampedArray(width * height * 4);\\n        convertBlackAndWhiteToRGBA({\\n          src: imgArray,\\n          dest: data,\\n          width,\\n          height,\\n          nonBlackColor: 0,\\n          inverseDecode,\\n        });\\n        return ImageResizer.createImage({\\n          kind: ImageKind.RGBA_32BPP,\\n          data,\\n          width,\\n          height,\\n          interpolate,\\n        });\\n      }\\n\\n      const canvas = new OffscreenCanvas(width, height);\\n      const ctx = canvas.getContext(\\\"2d\\\");\\n      const imgData = ctx.createImageData(width, height);\\n      convertBlackAndWhiteToRGBA({\\n        src: imgArray,\\n        dest: imgData.data,\\n        width,\\n        height,\\n        nonBlackColor: 0,\\n        inverseDecode,\\n      });\\n\\n      ctx.putImageData(imgData, 0, 0);\\n      const bitmap = canvas.transferToImageBitmap();\\n\\n      return {\\n        data: null,\\n        width,\\n        height,\\n        interpolate,\\n        bitmap,\\n      };\\n    }\\n\\n    \u002F\u002F Get the data almost as they're and they'll be decoded\\n    \u002F\u002F just before being drawn.\\n    return this.createRawMask({\\n      imgArray,\\n      width,\\n      height,\\n      inverseDecode,\\n      imageIsFromDecodeStream,\\n      interpolate,\\n    });\\n  }\\n\\n  get drawWidth() {\\n    return Math.max(this.width, this.smask?.width || 0, this.mask?.width || 0);\\n  }\\n\\n  get drawHeight() {\\n    return Math.max(\\n      this.height,\\n      this.smask?.height || 0,\\n      this.mask?.height || 0\\n    );\\n  }\\n\\n  decodeBuffer(buffer) {\\n    const bpc = this.bpc;\\n    const numComps = this.numComps;\\n\\n    const decodeAddends = this.decodeAddends;\\n    const decodeCoefficients = this.decodeCoefficients;\\n    const max = (1 \u003C\u003C bpc) - 1;\\n    let i, ii;\\n\\n    if (bpc === 1) {\\n      \u002F\u002F If the buffer needed decode that means it just needs to be inverted.\\n      for (i = 0, ii = buffer.length; i \u003C ii; i++) {\\n        buffer[i] = +!buffer[i];\\n      }\\n      return;\\n    }\\n    let index = 0;\\n    for (i = 0, ii = this.width * this.height; i \u003C ii; i++) {\\n      for (let j = 0; j \u003C numComps; j++) {\\n        buffer[index] = decodeAndClamp(\\n          buffer[index],\\n          decodeAddends[j],\\n          decodeCoefficients[j],\\n          max\\n        );\\n        index++;\\n      }\\n    }\\n  }\\n\\n  getComponents(buffer) {\\n    const bpc = this.bpc;\\n\\n    \u002F\u002F This image doesn't require any extra work.\\n    if (bpc === 8) {\\n      return buffer;\\n    }\\n\\n    const width = this.width;\\n    const height = this.height;\\n    const numComps = this.numComps;\\n\\n    const length = width * height * numComps;\\n    let bufferPos = 0;\\n    let output;\\n    if (bpc \u003C= 8) {\\n      output = new Uint8Array(length);\\n    } else if (bpc \u003C= 16) {\\n      output = new Uint16Array(length);\\n    } else {\\n      output = new Uint32Array(length);\\n    }\\n    const rowComps = width * numComps;\\n\\n    const max = (1 \u003C\u003C bpc) - 1;\\n    let i = 0,\\n      ii,\\n      buf;\\n\\n    if (bpc === 1) {\\n      \u002F\u002F Optimization for reading 1 bpc images.\\n      let mask, loop1End, loop2End;\\n      for (let j = 0; j \u003C height; j++) {\\n        loop1End = i + (rowComps & ~7);\\n        loop2End = i + rowComps;\\n\\n        \u002F\u002F unroll loop for all full bytes\\n        while (i \u003C loop1End) {\\n          buf = buffer[bufferPos++];\\n          output[i] = (buf >> 7) & 1;\\n          output[i + 1] = (buf >> 6) & 1;\\n          output[i + 2] = (buf >> 5) & 1;\\n          output[i + 3] = (buf >> 4) & 1;\\n          output[i + 4] = (buf >> 3) & 1;\\n          output[i + 5] = (buf >> 2) & 1;\\n          output[i + 6] = (buf >> 1) & 1;\\n          output[i + 7] = buf & 1;\\n          i += 8;\\n        }\\n\\n        \u002F\u002F handle remaining bits\\n        if (i \u003C loop2End) {\\n          buf = buffer[bufferPos++];\\n          mask = 128;\\n          while (i \u003C loop2End) {\\n            output[i++] = +!!(buf & mask);\\n            mask >>= 1;\\n          }\\n        }\\n      }\\n    } else {\\n      \u002F\u002F The general case that handles all other bpc values.\\n      let bits = 0;\\n      buf = 0;\\n      for (i = 0, ii = length; i \u003C ii; ++i) {\\n        if (i % rowComps === 0) {\\n          buf = 0;\\n          bits = 0;\\n        }\\n\\n        while (bits \u003C bpc) {\\n          buf = (buf \u003C\u003C 8) | buffer[bufferPos++];\\n          bits += 8;\\n        }\\n\\n        const remainingBits = bits - bpc;\\n        let value = buf >> remainingBits;\\n        if (value \u003C 0) {\\n          value = 0;\\n        } else if (value > max) {\\n          value = max;\\n        }\\n        output[i] = value;\\n        buf &= (1 \u003C\u003C remainingBits) - 1;\\n        bits = remainingBits;\\n      }\\n    }\\n    return output;\\n  }\\n\\n  fillOpacity(rgbaBuf, width, height, actualHeight, image) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        rgbaBuf instanceof Uint8ClampedArray,\\n        'PDFImage.fillOpacity: Unsupported \\\"rgbaBuf\\\" type.'\\n      );\\n    }\\n    const smask = this.smask;\\n    const mask = this.mask;\\n    let alphaBuf, sw, sh, i, ii, j;\\n\\n    if (smask) {\\n      sw = smask.width;\\n      sh = smask.height;\\n      alphaBuf = new Uint8ClampedArray(sw * sh);\\n      smask.fillGrayBuffer(alphaBuf);\\n      if (sw !== width || sh !== height) {\\n        alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh, width, height);\\n      }\\n    } else if (mask) {\\n      if (mask instanceof PDFImage) {\\n        sw = mask.width;\\n        sh = mask.height;\\n        alphaBuf = new Uint8ClampedArray(sw * sh);\\n        mask.numComps = 1;\\n        mask.fillGrayBuffer(alphaBuf);\\n\\n        \u002F\u002F Need to invert values in rgbaBuf\\n        for (i = 0, ii = sw * sh; i \u003C ii; ++i) {\\n          alphaBuf[i] = 255 - alphaBuf[i];\\n        }\\n\\n        if (sw !== width || sh !== height) {\\n          alphaBuf = resizeImageMask(alphaBuf, mask.bpc, sw, sh, width, height);\\n        }\\n      } else if (Array.isArray(mask)) {\\n        \u002F\u002F Color key mask: if any of the components are outside the range\\n        \u002F\u002F then they should be painted.\\n        alphaBuf = new Uint8ClampedArray(width * height);\\n        const numComps = this.numComps;\\n        for (i = 0, ii = width * height; i \u003C ii; ++i) {\\n          let opacity = 0;\\n          const imageOffset = i * numComps;\\n          for (j = 0; j \u003C numComps; ++j) {\\n            const color = image[imageOffset + j];\\n            const maskOffset = j * 2;\\n            if (color \u003C mask[maskOffset] || color > mask[maskOffset + 1]) {\\n              opacity = 255;\\n              break;\\n            }\\n          }\\n          alphaBuf[i] = opacity;\\n        }\\n      } else {\\n        throw new FormatError(\\\"Unknown mask format.\\\");\\n      }\\n    }\\n\\n    if (alphaBuf) {\\n      for (i = 0, j = 3, ii = width * actualHeight; i \u003C ii; ++i, j += 4) {\\n        rgbaBuf[j] = alphaBuf[i];\\n      }\\n    } else {\\n      \u002F\u002F No mask.\\n      for (i = 0, j = 3, ii = width * actualHeight; i \u003C ii; ++i, j += 4) {\\n        rgbaBuf[j] = 255;\\n      }\\n    }\\n  }\\n\\n  undoPreblend(buffer, width, height) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        buffer instanceof Uint8ClampedArray,\\n        'PDFImage.undoPreblend: Unsupported \\\"buffer\\\" type.'\\n      );\\n    }\\n    const matte = this.smask?.matte;\\n    if (!matte) {\\n      return;\\n    }\\n    const matteRgb = this.colorSpace.getRgb(matte, 0);\\n    const matteR = matteRgb[0];\\n    const matteG = matteRgb[1];\\n    const matteB = matteRgb[2];\\n    const length = width * height * 4;\\n    for (let i = 0; i \u003C length; i += 4) {\\n      const alpha = buffer[i + 3];\\n      if (alpha === 0) {\\n        \u002F\u002F according formula we have to get Infinity in all components\\n        \u002F\u002F making it white (typical paper color) should be okay\\n        buffer[i] = 255;\\n        buffer[i + 1] = 255;\\n        buffer[i + 2] = 255;\\n        continue;\\n      }\\n      const k = 255 \u002F alpha;\\n      buffer[i] = (buffer[i] - matteR) * k + matteR;\\n      buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;\\n      buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;\\n    }\\n  }\\n\\n  async createImageData(forceRGBA = false, isOffscreenCanvasSupported = false) {\\n    const drawWidth = this.drawWidth;\\n    const drawHeight = this.drawHeight;\\n    const imgData = {\\n      width: drawWidth,\\n      height: drawHeight,\\n      interpolate: this.interpolate,\\n      kind: 0,\\n      data: null,\\n      \u002F\u002F Other fields are filled in below.\\n    };\\n\\n    const numComps = this.numComps;\\n    const originalWidth = this.width;\\n    const originalHeight = this.height;\\n    const bpc = this.bpc;\\n\\n    \u002F\u002F Rows start at byte boundary.\\n    const rowBytes = (originalWidth * numComps * bpc + 7) >> 3;\\n    const mustBeResized =\\n      isOffscreenCanvasSupported &&\\n      ImageResizer.needsToBeResized(drawWidth, drawHeight);\\n\\n    if (!forceRGBA) {\\n      \u002F\u002F If it is a 1-bit-per-pixel grayscale (i.e. black-and-white) image\\n      \u002F\u002F without any complications, we pass a same-sized copy to the main\\n      \u002F\u002F thread rather than expanding by 32x to RGBA form. This saves *lots*\\n      \u002F\u002F of memory for many scanned documents. It's also much faster.\\n      \u002F\u002F\\n      \u002F\u002F Similarly, if it is a 24-bit-per pixel RGB image without any\\n      \u002F\u002F complications, we avoid expanding by 1.333x to RGBA form.\\n      let kind;\\n      if (this.colorSpace.name === \\\"DeviceGray\\\" && bpc === 1) {\\n        kind = ImageKind.GRAYSCALE_1BPP;\\n      } else if (\\n        this.colorSpace.name === \\\"DeviceRGB\\\" &&\\n        bpc === 8 &&\\n        !this.needsDecode\\n      ) {\\n        kind = ImageKind.RGB_24BPP;\\n      }\\n      if (\\n        kind &&\\n        !this.smask &&\\n        !this.mask &&\\n        drawWidth === originalWidth &&\\n        drawHeight === originalHeight\\n      ) {\\n        const data = this.getImageBytes(originalHeight * rowBytes, {});\\n        if (isOffscreenCanvasSupported) {\\n          if (mustBeResized) {\\n            return ImageResizer.createImage(\\n              {\\n                data,\\n                kind,\\n                width: drawWidth,\\n                height: drawHeight,\\n                interpolate: this.interpolate,\\n              },\\n              this.needsDecode\\n            );\\n          }\\n          return this.createBitmap(kind, originalWidth, originalHeight, data);\\n        }\\n        imgData.kind = kind;\\n        imgData.data = data;\\n\\n        if (this.needsDecode) {\\n          \u002F\u002F Invert the buffer (which must be grayscale if we reached here).\\n          assert(\\n            kind === ImageKind.GRAYSCALE_1BPP,\\n            \\\"PDFImage.createImageData: The image must be grayscale.\\\"\\n          );\\n          const buffer = imgData.data;\\n          for (let i = 0, ii = buffer.length; i \u003C ii; i++) {\\n            buffer[i] ^= 0xff;\\n          }\\n        }\\n        return imgData;\\n      }\\n      if (\\n        this.image instanceof JpegStream &&\\n        !this.smask &&\\n        !this.mask &&\\n        !this.needsDecode\\n      ) {\\n        let imageLength = originalHeight * rowBytes;\\n        if (isOffscreenCanvasSupported && !mustBeResized) {\\n          let isHandled = false;\\n          switch (this.colorSpace.name) {\\n            case \\\"DeviceGray\\\":\\n              \u002F\u002F Avoid truncating the image, since `JpegImage.getData`\\n              \u002F\u002F will expand the image data when `forceRGB === true`.\\n              imageLength *= 4;\\n              isHandled = true;\\n              break;\\n            case \\\"DeviceRGB\\\":\\n              imageLength = (imageLength \u002F 3) * 4;\\n              isHandled = true;\\n              break;\\n            case \\\"DeviceCMYK\\\":\\n              isHandled = true;\\n              break;\\n          }\\n\\n          if (isHandled) {\\n            const rgba = this.getImageBytes(imageLength, {\\n              drawWidth,\\n              drawHeight,\\n              forceRGBA: true,\\n            });\\n            return this.createBitmap(\\n              ImageKind.RGBA_32BPP,\\n              drawWidth,\\n              drawHeight,\\n              rgba\\n            );\\n          }\\n        } else {\\n          switch (this.colorSpace.name) {\\n            case \\\"DeviceGray\\\":\\n              imageLength *= 3;\\n            \u002F* falls through *\u002F\\n            case \\\"DeviceRGB\\\":\\n            case \\\"DeviceCMYK\\\":\\n              imgData.kind = ImageKind.RGB_24BPP;\\n              imgData.data = this.getImageBytes(imageLength, {\\n                drawWidth,\\n                drawHeight,\\n                forceRGB: true,\\n              });\\n              if (mustBeResized) {\\n                \u002F\u002F The image is too big so we resize it.\\n                return ImageResizer.createImage(imgData);\\n              }\\n              return imgData;\\n          }\\n        }\\n      }\\n    }\\n\\n    const imgArray = this.getImageBytes(originalHeight * rowBytes, {\\n      internal: true,\\n    });\\n    \u002F\u002F imgArray can be incomplete (e.g. after CCITT fax encoding).\\n    const actualHeight =\\n      0 | (((imgArray.length \u002F rowBytes) * drawHeight) \u002F originalHeight);\\n\\n    const comps = this.getComponents(imgArray);\\n\\n    \u002F\u002F If opacity data is present, use RGBA_32BPP form. Otherwise, use the\\n    \u002F\u002F more compact RGB_24BPP form if allowable.\\n    let alpha01, maybeUndoPreblend;\\n\\n    let canvas, ctx, canvasImgData, data;\\n    if (isOffscreenCanvasSupported && !mustBeResized) {\\n      canvas = new OffscreenCanvas(drawWidth, drawHeight);\\n      ctx = canvas.getContext(\\\"2d\\\");\\n      canvasImgData = ctx.createImageData(drawWidth, drawHeight);\\n      data = canvasImgData.data;\\n    }\\n\\n    imgData.kind = ImageKind.RGBA_32BPP;\\n\\n    if (!forceRGBA && !this.smask && !this.mask) {\\n      if (!isOffscreenCanvasSupported || mustBeResized) {\\n        imgData.kind = ImageKind.RGB_24BPP;\\n        data = new Uint8ClampedArray(drawWidth * drawHeight * 3);\\n        alpha01 = 0;\\n      } else {\\n        const arr = new Uint32Array(data.buffer);\\n        arr.fill(FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff);\\n        alpha01 = 1;\\n      }\\n      maybeUndoPreblend = false;\\n    } else {\\n      if (!isOffscreenCanvasSupported || mustBeResized) {\\n        data = new Uint8ClampedArray(drawWidth * drawHeight * 4);\\n      }\\n\\n      alpha01 = 1;\\n      maybeUndoPreblend = true;\\n\\n      \u002F\u002F Color key masking (opacity) must be performed before decoding.\\n      this.fillOpacity(data, drawWidth, drawHeight, actualHeight, comps);\\n    }\\n\\n    if (this.needsDecode) {\\n      this.decodeBuffer(comps);\\n    }\\n    this.colorSpace.fillRgb(\\n      data,\\n      originalWidth,\\n      originalHeight,\\n      drawWidth,\\n      drawHeight,\\n      actualHeight,\\n      bpc,\\n      comps,\\n      alpha01\\n    );\\n    if (maybeUndoPreblend) {\\n      this.undoPreblend(data, drawWidth, actualHeight);\\n    }\\n\\n    if (isOffscreenCanvasSupported && !mustBeResized) {\\n      ctx.putImageData(canvasImgData, 0, 0);\\n      const bitmap = canvas.transferToImageBitmap();\\n\\n      return {\\n        data: null,\\n        width: drawWidth,\\n        height: drawHeight,\\n        bitmap,\\n        interpolate: this.interpolate,\\n      };\\n    }\\n\\n    imgData.data = data;\\n    if (mustBeResized) {\\n      return ImageResizer.createImage(imgData);\\n    }\\n    return imgData;\\n  }\\n\\n  fillGrayBuffer(buffer) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        buffer instanceof Uint8ClampedArray,\\n        'PDFImage.fillGrayBuffer: Unsupported \\\"buffer\\\" type.'\\n      );\\n    }\\n    const numComps = this.numComps;\\n    if (numComps !== 1) {\\n      throw new FormatError(\\n        `Reading gray scale from a color image: ${numComps}`\\n      );\\n    }\\n\\n    const width = this.width;\\n    const height = this.height;\\n    const bpc = this.bpc;\\n\\n    \u002F\u002F rows start at byte boundary\\n    const rowBytes = (width * numComps * bpc + 7) >> 3;\\n    const imgArray = this.getImageBytes(height * rowBytes, { internal: true });\\n\\n    const comps = this.getComponents(imgArray);\\n    let i, length;\\n\\n    if (bpc === 1) {\\n      \u002F\u002F inline decoding (= inversion) for 1 bpc images\\n      length = width * height;\\n      if (this.needsDecode) {\\n        \u002F\u002F invert and scale to {0, 255}\\n        for (i = 0; i \u003C length; ++i) {\\n          buffer[i] = (comps[i] - 1) & 255;\\n        }\\n      } else {\\n        \u002F\u002F scale to {0, 255}\\n        for (i = 0; i \u003C length; ++i) {\\n          buffer[i] = -comps[i] & 255;\\n        }\\n      }\\n      return;\\n    }\\n\\n    if (this.needsDecode) {\\n      this.decodeBuffer(comps);\\n    }\\n    length = width * height;\\n    \u002F\u002F we aren't using a colorspace so we need to scale the value\\n    const scale = 255 \u002F ((1 \u003C\u003C bpc) - 1);\\n    for (i = 0; i \u003C length; ++i) {\\n      buffer[i] = scale * comps[i];\\n    }\\n  }\\n\\n  createBitmap(kind, width, height, src) {\\n    const canvas = new OffscreenCanvas(width, height);\\n    const ctx = canvas.getContext(\\\"2d\\\");\\n    let imgData;\\n    if (kind === ImageKind.RGBA_32BPP) {\\n      imgData = new ImageData(src, width, height);\\n    } else {\\n      imgData = ctx.createImageData(width, height);\\n      convertToRGBA({\\n        kind,\\n        src,\\n        dest: new Uint32Array(imgData.data.buffer),\\n        width,\\n        height,\\n        inverseDecode: this.needsDecode,\\n      });\\n    }\\n    ctx.putImageData(imgData, 0, 0);\\n    const bitmap = canvas.transferToImageBitmap();\\n\\n    return {\\n      data: null,\\n      width,\\n      height,\\n      bitmap,\\n      interpolate: this.interpolate,\\n    };\\n  }\\n\\n  getImageBytes(\\n    length,\\n    {\\n      drawWidth,\\n      drawHeight,\\n      forceRGBA = false,\\n      forceRGB = false,\\n      internal = false,\\n    }\\n  ) {\\n    this.image.reset();\\n    this.image.drawWidth = drawWidth || this.width;\\n    this.image.drawHeight = drawHeight || this.height;\\n    this.image.forceRGBA = !!forceRGBA;\\n    this.image.forceRGB = !!forceRGB;\\n    const imageBytes = this.image.getBytes(length, this.ignoreColorSpace);\\n\\n    \u002F\u002F If imageBytes came from a DecodeStream, we're safe to transfer it\\n    \u002F\u002F (and thus detach its underlying buffer) because it will constitute\\n    \u002F\u002F the entire DecodeStream's data.  But if it came from a Stream, we\\n    \u002F\u002F need to copy it because it'll only be a portion of the Stream's\\n    \u002F\u002F data, and the rest will be read later on.\\n    if (internal || this.image instanceof DecodeStream) {\\n      return imageBytes;\\n    }\\n    assert(\\n      imageBytes instanceof Uint8Array,\\n      'PDFImage.getImageBytes: Unsupported \\\"imageBytes\\\" type.'\\n    );\\n    return new Uint8Array(imageBytes);\\n  }\\n}\\n\\nexport { PDFImage };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\u002F* eslint-disable no-var *\u002F\\n\\nimport {\\n  AbortException,\\n  assert,\\n  CMapCompressionType,\\n  FONT_IDENTITY_MATRIX,\\n  FormatError,\\n  IDENTITY_MATRIX,\\n  info,\\n  isArrayEqual,\\n  normalizeUnicode,\\n  OPS,\\n  shadow,\\n  stringToPDFString,\\n  TextRenderingMode,\\n  Util,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { CMapFactory, IdentityCMap } from \\\".\u002Fcmap.js\\\";\\nimport { Cmd, Dict, EOF, isName, Name, Ref, RefSet } from \\\".\u002Fprimitives.js\\\";\\nimport { ErrorFont, Font } from \\\".\u002Ffonts.js\\\";\\nimport {\\n  getEncoding,\\n  MacRomanEncoding,\\n  StandardEncoding,\\n  SymbolSetEncoding,\\n  WinAnsiEncoding,\\n  ZapfDingbatsEncoding,\\n} from \\\".\u002Fencodings.js\\\";\\nimport {\\n  getFontNameToFileMap,\\n  getSerifFonts,\\n  getStandardFontName,\\n  getStdFontMap,\\n  getSymbolsFonts,\\n  isKnownFontName,\\n} from \\\".\u002Fstandard_fonts.js\\\";\\nimport { getTilingPatternIR, Pattern } from \\\".\u002Fpattern.js\\\";\\nimport { getXfaFontDict, getXfaFontName } from \\\".\u002Fxfa_fonts.js\\\";\\nimport { IdentityToUnicodeMap, ToUnicodeMap } from \\\".\u002Fto_unicode_map.js\\\";\\nimport { isNumberArray, lookupMatrix, lookupNormalRect } from \\\".\u002Fcore_utils.js\\\";\\nimport { isPDFFunction, PDFFunctionFactory } from \\\".\u002Ffunction.js\\\";\\nimport { Lexer, Parser } from \\\".\u002Fparser.js\\\";\\nimport {\\n  LocalColorSpaceCache,\\n  LocalGStateCache,\\n  LocalImageCache,\\n  LocalTilingPatternCache,\\n  RegionalImageCache,\\n} from \\\".\u002Fimage_utils.js\\\";\\nimport { NullStream, Stream } from \\\".\u002Fstream.js\\\";\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { bidi } from \\\".\u002Fbidi.js\\\";\\nimport { ColorSpace } from \\\".\u002Fcolorspace.js\\\";\\nimport { DecodeStream } from \\\".\u002Fdecode_stream.js\\\";\\nimport { FontFlags } from \\\".\u002Ffonts_utils.js\\\";\\nimport { getFontSubstitution } from \\\".\u002Ffont_substitutions.js\\\";\\nimport { getGlyphsUnicode } from \\\".\u002Fglyphlist.js\\\";\\nimport { getMetrics } from \\\".\u002Fmetrics.js\\\";\\nimport { getUnicodeForGlyph } from \\\".\u002Funicode.js\\\";\\nimport { ImageResizer } from \\\".\u002Fimage_resizer.js\\\";\\nimport { MurmurHash3_64 } from \\\"..\u002Fshared\u002Fmurmurhash3.js\\\";\\nimport { OperatorList } from \\\".\u002Foperator_list.js\\\";\\nimport { PDFImage } from \\\".\u002Fimage.js\\\";\\n\\nconst DefaultPartialEvaluatorOptions = Object.freeze({\\n  maxImageSize: -1,\\n  disableFontFace: false,\\n  ignoreErrors: false,\\n  isEvalSupported: true,\\n  isOffscreenCanvasSupported: false,\\n  canvasMaxAreaInBytes: -1,\\n  fontExtraProperties: false,\\n  useSystemFonts: true,\\n  cMapUrl: null,\\n  standardFontDataUrl: null,\\n});\\n\\nconst PatternType = {\\n  TILING: 1,\\n  SHADING: 2,\\n};\\n\\n\u002F\u002F Optionally avoid sending individual, or very few, text chunks to reduce\\n\u002F\u002F `postMessage` overhead with ReadableStream (see issue 13962).\\n\u002F\u002F\\n\u002F\u002F PLEASE NOTE: This value should *not* be too large (it's used as a lower limit\\n\u002F\u002F in `enqueueChunk`), since that would cause streaming of textContent to become\\n\u002F\u002F essentially useless in practice by sending all (or most) chunks at once.\\n\u002F\u002F Also, a too large value would (indirectly) affect the main-thread `textLayer`\\n\u002F\u002F building negatively by forcing all textContent to be handled at once, which\\n\u002F\u002F could easily end up hurting *overall* performance (e.g. rendering as well).\\nconst TEXT_CHUNK_BATCH_SIZE = 10;\\n\\nconst deferred = Promise.resolve();\\n\\n\u002F\u002F Convert PDF blend mode names to HTML5 blend mode names.\\nfunction normalizeBlendMode(value, parsingArray = false) {\\n  if (Array.isArray(value)) {\\n    \u002F\u002F Use the first *supported* BM value in the Array (fixes issue11279.pdf).\\n    for (const val of value) {\\n      const maybeBM = normalizeBlendMode(val, \u002F* parsingArray = *\u002F true);\\n      if (maybeBM) {\\n        return maybeBM;\\n      }\\n    }\\n    warn(`Unsupported blend mode Array: ${value}`);\\n    return \\\"source-over\\\";\\n  }\\n\\n  if (!(value instanceof Name)) {\\n    if (parsingArray) {\\n      return null;\\n    }\\n    return \\\"source-over\\\";\\n  }\\n  switch (value.name) {\\n    case \\\"Normal\\\":\\n    case \\\"Compatible\\\":\\n      return \\\"source-over\\\";\\n    case \\\"Multiply\\\":\\n      return \\\"multiply\\\";\\n    case \\\"Screen\\\":\\n      return \\\"screen\\\";\\n    case \\\"Overlay\\\":\\n      return \\\"overlay\\\";\\n    case \\\"Darken\\\":\\n      return \\\"darken\\\";\\n    case \\\"Lighten\\\":\\n      return \\\"lighten\\\";\\n    case \\\"ColorDodge\\\":\\n      return \\\"color-dodge\\\";\\n    case \\\"ColorBurn\\\":\\n      return \\\"color-burn\\\";\\n    case \\\"HardLight\\\":\\n      return \\\"hard-light\\\";\\n    case \\\"SoftLight\\\":\\n      return \\\"soft-light\\\";\\n    case \\\"Difference\\\":\\n      return \\\"difference\\\";\\n    case \\\"Exclusion\\\":\\n      return \\\"exclusion\\\";\\n    case \\\"Hue\\\":\\n      return \\\"hue\\\";\\n    case \\\"Saturation\\\":\\n      return \\\"saturation\\\";\\n    case \\\"Color\\\":\\n      return \\\"color\\\";\\n    case \\\"Luminosity\\\":\\n      return \\\"luminosity\\\";\\n  }\\n  if (parsingArray) {\\n    return null;\\n  }\\n  warn(`Unsupported blend mode: ${value.name}`);\\n  return \\\"source-over\\\";\\n}\\n\\nfunction incrementCachedImageMaskCount(data) {\\n  if (data.fn === OPS.paintImageMaskXObject && data.args[0]?.count > 0) {\\n    data.args[0].count++;\\n  }\\n}\\n\\n\u002F\u002F Trying to minimize Date.now() usage and check every 100 time.\\nclass TimeSlotManager {\\n  static TIME_SLOT_DURATION_MS = 20;\\n\\n  static CHECK_TIME_EVERY = 100;\\n\\n  constructor() {\\n    this.reset();\\n  }\\n\\n  check() {\\n    if (++this.checked \u003C TimeSlotManager.CHECK_TIME_EVERY) {\\n      return false;\\n    }\\n    this.checked = 0;\\n    return this.endTime \u003C= Date.now();\\n  }\\n\\n  reset() {\\n    this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS;\\n    this.checked = 0;\\n  }\\n}\\n\\nclass PartialEvaluator {\\n  constructor({\\n    xref,\\n    handler,\\n    pageIndex,\\n    idFactory,\\n    fontCache,\\n    builtInCMapCache,\\n    standardFontDataCache,\\n    globalImageCache,\\n    systemFontCache,\\n    options = null,\\n  }) {\\n    this.xref = xref;\\n    this.handler = handler;\\n    this.pageIndex = pageIndex;\\n    this.idFactory = idFactory;\\n    this.fontCache = fontCache;\\n    this.builtInCMapCache = builtInCMapCache;\\n    this.standardFontDataCache = standardFontDataCache;\\n    this.globalImageCache = globalImageCache;\\n    this.systemFontCache = systemFontCache;\\n    this.options = options || DefaultPartialEvaluatorOptions;\\n    this.type3FontRefs = null;\\n\\n    this._regionalImageCache = new RegionalImageCache();\\n    this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this);\\n    ImageResizer.setMaxArea(this.options.canvasMaxAreaInBytes);\\n  }\\n\\n  \u002F**\\n   * Since Functions are only cached (locally) by reference, we can share one\\n   * `PDFFunctionFactory` instance within this `PartialEvaluator` instance.\\n   *\u002F\\n  get _pdfFunctionFactory() {\\n    const pdfFunctionFactory = new PDFFunctionFactory({\\n      xref: this.xref,\\n      isEvalSupported: this.options.isEvalSupported,\\n    });\\n    return shadow(this, \\\"_pdfFunctionFactory\\\", pdfFunctionFactory);\\n  }\\n\\n  get parsingType3Font() {\\n    return !!this.type3FontRefs;\\n  }\\n\\n  clone(newOptions = null) {\\n    const newEvaluator = Object.create(this);\\n    newEvaluator.options = Object.assign(\\n      Object.create(null),\\n      this.options,\\n      newOptions\\n    );\\n    return newEvaluator;\\n  }\\n\\n  hasBlendModes(resources, nonBlendModesSet) {\\n    if (!(resources instanceof Dict)) {\\n      return false;\\n    }\\n    if (resources.objId && nonBlendModesSet.has(resources.objId)) {\\n      return false;\\n    }\\n\\n    const processed = new RefSet(nonBlendModesSet);\\n    if (resources.objId) {\\n      processed.put(resources.objId);\\n    }\\n\\n    const nodes = [resources],\\n      xref = this.xref;\\n    while (nodes.length) {\\n      const node = nodes.shift();\\n      \u002F\u002F First check the current resources for blend modes.\\n      const graphicStates = node.get(\\\"ExtGState\\\");\\n      if (graphicStates instanceof Dict) {\\n        for (let graphicState of graphicStates.getRawValues()) {\\n          if (graphicState instanceof Ref) {\\n            if (processed.has(graphicState)) {\\n              continue; \u002F\u002F The ExtGState has already been processed.\\n            }\\n            try {\\n              graphicState = xref.fetch(graphicState);\\n            } catch (ex) {\\n              \u002F\u002F Avoid parsing a corrupt ExtGState more than once.\\n              processed.put(graphicState);\\n\\n              info(`hasBlendModes - ignoring ExtGState: \\\"${ex}\\\".`);\\n              continue;\\n            }\\n          }\\n          if (!(graphicState instanceof Dict)) {\\n            continue;\\n          }\\n          if (graphicState.objId) {\\n            processed.put(graphicState.objId);\\n          }\\n\\n          const bm = graphicState.get(\\\"BM\\\");\\n          if (bm instanceof Name) {\\n            if (bm.name !== \\\"Normal\\\") {\\n              return true;\\n            }\\n            continue;\\n          }\\n          if (bm !== undefined && Array.isArray(bm)) {\\n            for (const element of bm) {\\n              if (element instanceof Name && element.name !== \\\"Normal\\\") {\\n                return true;\\n              }\\n            }\\n          }\\n        }\\n      }\\n      \u002F\u002F Descend into the XObjects to look for more resources and blend modes.\\n      const xObjects = node.get(\\\"XObject\\\");\\n      if (!(xObjects instanceof Dict)) {\\n        continue;\\n      }\\n      for (let xObject of xObjects.getRawValues()) {\\n        if (xObject instanceof Ref) {\\n          if (processed.has(xObject)) {\\n            \u002F\u002F The XObject has already been processed, and by avoiding a\\n            \u002F\u002F redundant `xref.fetch` we can *significantly* reduce the load\\n            \u002F\u002F time for badly generated PDF files (fixes issue6961.pdf).\\n            continue;\\n          }\\n          try {\\n            xObject = xref.fetch(xObject);\\n          } catch (ex) {\\n            \u002F\u002F Avoid parsing a corrupt XObject more than once.\\n            processed.put(xObject);\\n\\n            info(`hasBlendModes - ignoring XObject: \\\"${ex}\\\".`);\\n            continue;\\n          }\\n        }\\n        if (!(xObject instanceof BaseStream)) {\\n          continue;\\n        }\\n        if (xObject.dict.objId) {\\n          processed.put(xObject.dict.objId);\\n        }\\n        const xResources = xObject.dict.get(\\\"Resources\\\");\\n        if (!(xResources instanceof Dict)) {\\n          continue;\\n        }\\n        \u002F\u002F Checking objId to detect an infinite loop.\\n        if (xResources.objId && processed.has(xResources.objId)) {\\n          continue;\\n        }\\n\\n        nodes.push(xResources);\\n        if (xResources.objId) {\\n          processed.put(xResources.objId);\\n        }\\n      }\\n    }\\n\\n    \u002F\u002F When no blend modes exist, there's no need re-fetch\u002Fre-parse any of the\\n    \u002F\u002F processed `Ref`s again for subsequent pages. This helps reduce redundant\\n    \u002F\u002F `XRef.fetch` calls for some documents (e.g. issue6961.pdf).\\n    for (const ref of processed) {\\n      nonBlendModesSet.put(ref);\\n    }\\n    return false;\\n  }\\n\\n  async fetchBuiltInCMap(name) {\\n    const cachedData = this.builtInCMapCache.get(name);\\n    if (cachedData) {\\n      return cachedData;\\n    }\\n    let data;\\n\\n    if (this.options.cMapUrl !== null) {\\n      \u002F\u002F Only compressed CMaps are (currently) supported here.\\n      const url = `${this.options.cMapUrl}${name}.bcmap`;\\n      const response = await fetch(url);\\n      if (!response.ok) {\\n        throw new Error(\\n          `fetchBuiltInCMap: failed to fetch file \\\"${url}\\\" with \\\"${response.statusText}\\\".`\\n        );\\n      }\\n      data = {\\n        cMapData: new Uint8Array(await response.arrayBuffer()),\\n        compressionType: CMapCompressionType.BINARY,\\n      };\\n    } else {\\n      \u002F\u002F Get the data on the main-thread instead.\\n      data = await this.handler.sendWithPromise(\\\"FetchBuiltInCMap\\\", { name });\\n    }\\n\\n    if (data.compressionType !== CMapCompressionType.NONE) {\\n      \u002F\u002F Given the size of uncompressed CMaps, only cache compressed ones.\\n      this.builtInCMapCache.set(name, data);\\n    }\\n    return data;\\n  }\\n\\n  async fetchStandardFontData(name) {\\n    const cachedData = this.standardFontDataCache.get(name);\\n    if (cachedData) {\\n      return new Stream(cachedData);\\n    }\\n\\n    \u002F\u002F The symbol fonts are not consistent across platforms, always load the\\n    \u002F\u002F standard font data for them.\\n    if (\\n      this.options.useSystemFonts &&\\n      name !== \\\"Symbol\\\" &&\\n      name !== \\\"ZapfDingbats\\\"\\n    ) {\\n      return null;\\n    }\\n\\n    const standardFontNameToFileName = getFontNameToFileMap(),\\n      filename = standardFontNameToFileName[name];\\n    let data;\\n\\n    if (this.options.standardFontDataUrl !== null) {\\n      const url = `${this.options.standardFontDataUrl}${filename}`;\\n      const response = await fetch(url);\\n      if (!response.ok) {\\n        warn(\\n          `fetchStandardFontData: failed to fetch file \\\"${url}\\\" with \\\"${response.statusText}\\\".`\\n        );\\n      } else {\\n        data = new Uint8Array(await response.arrayBuffer());\\n      }\\n    } else {\\n      \u002F\u002F Get the data on the main-thread instead.\\n      try {\\n        data = await this.handler.sendWithPromise(\\\"FetchStandardFontData\\\", {\\n          filename,\\n        });\\n      } catch (e) {\\n        warn(\\n          `fetchStandardFontData: failed to fetch file \\\"${filename}\\\" with \\\"${e}\\\".`\\n        );\\n      }\\n    }\\n\\n    if (!data) {\\n      return null;\\n    }\\n    \u002F\u002F Cache the \\\"raw\\\" standard font data, to avoid fetching it repeatedly\\n    \u002F\u002F (see e.g. issue 11399).\\n    this.standardFontDataCache.set(name, data);\\n\\n    return new Stream(data);\\n  }\\n\\n  async buildFormXObject(\\n    resources,\\n    xobj,\\n    smask,\\n    operatorList,\\n    task,\\n    initialState,\\n    localColorSpaceCache\\n  ) {\\n    const dict = xobj.dict;\\n    const matrix = lookupMatrix(dict.getArray(\\\"Matrix\\\"), null);\\n    const bbox = lookupNormalRect(dict.getArray(\\\"BBox\\\"), null);\\n\\n    let optionalContent, groupOptions;\\n    if (dict.has(\\\"OC\\\")) {\\n      optionalContent = await this.parseMarkedContentProps(\\n        dict.get(\\\"OC\\\"),\\n        resources\\n      );\\n    }\\n    if (optionalContent !== undefined) {\\n      operatorList.addOp(OPS.beginMarkedContentProps, [\\\"OC\\\", optionalContent]);\\n    }\\n    const group = dict.get(\\\"Group\\\");\\n    if (group) {\\n      groupOptions = {\\n        matrix,\\n        bbox,\\n        smask,\\n        isolated: false,\\n        knockout: false,\\n      };\\n\\n      const groupSubtype = group.get(\\\"S\\\");\\n      let colorSpace = null;\\n      if (isName(groupSubtype, \\\"Transparency\\\")) {\\n        groupOptions.isolated = group.get(\\\"I\\\") || false;\\n        groupOptions.knockout = group.get(\\\"K\\\") || false;\\n        if (group.has(\\\"CS\\\")) {\\n          const cs = group.getRaw(\\\"CS\\\");\\n\\n          const cachedColorSpace = ColorSpace.getCached(\\n            cs,\\n            this.xref,\\n            localColorSpaceCache\\n          );\\n          if (cachedColorSpace) {\\n            colorSpace = cachedColorSpace;\\n          } else {\\n            colorSpace = await this.parseColorSpace({\\n              cs,\\n              resources,\\n              localColorSpaceCache,\\n            });\\n          }\\n        }\\n      }\\n\\n      if (smask?.backdrop) {\\n        colorSpace ||= ColorSpace.singletons.rgb;\\n        smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);\\n      }\\n\\n      operatorList.addOp(OPS.beginGroup, [groupOptions]);\\n    }\\n\\n    \u002F\u002F If it's a group, a new canvas will be created that is the size of the\\n    \u002F\u002F bounding box and translated to the correct position so we don't need to\\n    \u002F\u002F apply the bounding box to it.\\n    const args = group ? [matrix, null] : [matrix, bbox];\\n    operatorList.addOp(OPS.paintFormXObjectBegin, args);\\n\\n    await this.getOperatorList({\\n      stream: xobj,\\n      task,\\n      resources: dict.get(\\\"Resources\\\") || resources,\\n      operatorList,\\n      initialState,\\n    });\\n    operatorList.addOp(OPS.paintFormXObjectEnd, []);\\n\\n    if (group) {\\n      operatorList.addOp(OPS.endGroup, [groupOptions]);\\n    }\\n\\n    if (optionalContent !== undefined) {\\n      operatorList.addOp(OPS.endMarkedContent, []);\\n    }\\n  }\\n\\n  _sendImgData(objId, imgData, cacheGlobally = false) {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      imgData\\n    ) {\\n      assert(Number.isInteger(imgData.dataLen), \\\"Expected dataLen to be set.\\\");\\n    }\\n    const transfers = imgData ? [imgData.bitmap || imgData.data.buffer] : null;\\n\\n    if (this.parsingType3Font || cacheGlobally) {\\n      return this.handler.send(\\n        \\\"commonobj\\\",\\n        [objId, \\\"Image\\\", imgData],\\n        transfers\\n      );\\n    }\\n    return this.handler.send(\\n      \\\"obj\\\",\\n      [objId, this.pageIndex, \\\"Image\\\", imgData],\\n      transfers\\n    );\\n  }\\n\\n  async buildPaintImageXObject({\\n    resources,\\n    image,\\n    isInline = false,\\n    operatorList,\\n    cacheKey,\\n    localImageCache,\\n    localColorSpaceCache,\\n  }) {\\n    const dict = image.dict;\\n    const imageRef = dict.objId;\\n    const w = dict.get(\\\"W\\\", \\\"Width\\\");\\n    const h = dict.get(\\\"H\\\", \\\"Height\\\");\\n\\n    if (!(w && typeof w === \\\"number\\\") || !(h && typeof h === \\\"number\\\")) {\\n      warn(\\\"Image dimensions are missing, or not numbers.\\\");\\n      return;\\n    }\\n    const maxImageSize = this.options.maxImageSize;\\n    if (maxImageSize !== -1 && w * h > maxImageSize) {\\n      const msg = \\\"Image exceeded maximum allowed size and was removed.\\\";\\n\\n      if (this.options.ignoreErrors) {\\n        warn(msg);\\n        return;\\n      }\\n      throw new Error(msg);\\n    }\\n\\n    let optionalContent;\\n    if (dict.has(\\\"OC\\\")) {\\n      optionalContent = await this.parseMarkedContentProps(\\n        dict.get(\\\"OC\\\"),\\n        resources\\n      );\\n    }\\n\\n    const imageMask = dict.get(\\\"IM\\\", \\\"ImageMask\\\") || false;\\n    let imgData, args;\\n    if (imageMask) {\\n      \u002F\u002F This depends on a tmpCanvas being filled with the\\n      \u002F\u002F current fillStyle, such that processing the pixel\\n      \u002F\u002F data can't be done here. Instead of creating a\\n      \u002F\u002F complete PDFImage, only read the information needed\\n      \u002F\u002F for later.\\n      const interpolate = dict.get(\\\"I\\\", \\\"Interpolate\\\");\\n      const bitStrideLength = (w + 7) >> 3;\\n      const imgArray = image.getBytes(bitStrideLength * h);\\n      const decode = dict.getArray(\\\"D\\\", \\\"Decode\\\");\\n\\n      if (this.parsingType3Font) {\\n        imgData = PDFImage.createRawMask({\\n          imgArray,\\n          width: w,\\n          height: h,\\n          imageIsFromDecodeStream: image instanceof DecodeStream,\\n          inverseDecode: decode?.[0] > 0,\\n          interpolate,\\n        });\\n\\n        imgData.cached = !!cacheKey;\\n        args = [imgData];\\n\\n        operatorList.addImageOps(\\n          OPS.paintImageMaskXObject,\\n          args,\\n          optionalContent\\n        );\\n\\n        if (cacheKey) {\\n          const cacheData = {\\n            fn: OPS.paintImageMaskXObject,\\n            args,\\n            optionalContent,\\n          };\\n          localImageCache.set(cacheKey, imageRef, cacheData);\\n\\n          if (imageRef) {\\n            this._regionalImageCache.set(\\n              \u002F* name = *\u002F null,\\n              imageRef,\\n              cacheData\\n            );\\n          }\\n        }\\n        return;\\n      }\\n\\n      imgData = await PDFImage.createMask({\\n        imgArray,\\n        width: w,\\n        height: h,\\n        imageIsFromDecodeStream: image instanceof DecodeStream,\\n        inverseDecode: decode?.[0] > 0,\\n        interpolate,\\n        isOffscreenCanvasSupported: this.options.isOffscreenCanvasSupported,\\n      });\\n\\n      if (imgData.isSingleOpaquePixel) {\\n        \u002F\u002F Handles special case of mainly LaTeX documents which use image\\n        \u002F\u002F masks to draw lines with the current fill style.\\n        operatorList.addImageOps(\\n          OPS.paintSolidColorImageMask,\\n          [],\\n          optionalContent\\n        );\\n\\n        if (cacheKey) {\\n          const cacheData = {\\n            fn: OPS.paintSolidColorImageMask,\\n            args: [],\\n            optionalContent,\\n          };\\n          localImageCache.set(cacheKey, imageRef, cacheData);\\n\\n          if (imageRef) {\\n            this._regionalImageCache.set(\\n              \u002F* name = *\u002F null,\\n              imageRef,\\n              cacheData\\n            );\\n          }\\n        }\\n        return;\\n      }\\n\\n      const objId = `mask_${this.idFactory.createObjId()}`;\\n      operatorList.addDependency(objId);\\n\\n      imgData.dataLen = imgData.bitmap\\n        ? imgData.width * imgData.height * 4\\n        : imgData.data.length;\\n      this._sendImgData(objId, imgData);\\n\\n      args = [\\n        {\\n          data: objId,\\n          width: imgData.width,\\n          height: imgData.height,\\n          interpolate: imgData.interpolate,\\n          count: 1,\\n        },\\n      ];\\n      operatorList.addImageOps(\\n        OPS.paintImageMaskXObject,\\n        args,\\n        optionalContent\\n      );\\n\\n      if (cacheKey) {\\n        const cacheData = {\\n          fn: OPS.paintImageMaskXObject,\\n          args,\\n          optionalContent,\\n        };\\n        localImageCache.set(cacheKey, imageRef, cacheData);\\n\\n        if (imageRef) {\\n          this._regionalImageCache.set(\u002F* name = *\u002F null, imageRef, cacheData);\\n        }\\n      }\\n      return;\\n    }\\n\\n    const SMALL_IMAGE_DIMENSIONS = 200;\\n    \u002F\u002F Inlining small images into the queue as RGB data\\n    if (\\n      isInline &&\\n      w + h \u003C SMALL_IMAGE_DIMENSIONS &&\\n      !dict.has(\\\"SMask\\\") &&\\n      !dict.has(\\\"Mask\\\")\\n    ) {\\n      try {\\n        const imageObj = new PDFImage({\\n          xref: this.xref,\\n          res: resources,\\n          image,\\n          isInline,\\n          pdfFunctionFactory: this._pdfFunctionFactory,\\n          localColorSpaceCache,\\n        });\\n        \u002F\u002F We force the use of RGBA_32BPP images here, because we can't handle\\n        \u002F\u002F any other kind.\\n        imgData = await imageObj.createImageData(\\n          \u002F* forceRGBA = *\u002F true,\\n          \u002F* isOffscreenCanvasSupported = *\u002F false\\n        );\\n        operatorList.isOffscreenCanvasSupported =\\n          this.options.isOffscreenCanvasSupported;\\n        operatorList.addImageOps(\\n          OPS.paintInlineImageXObject,\\n          [imgData],\\n          optionalContent\\n        );\\n      } catch (reason) {\\n        const msg = `Unable to decode inline image: \\\"${reason}\\\".`;\\n\\n        if (!this.options.ignoreErrors) {\\n          throw new Error(msg);\\n        }\\n        warn(msg);\\n      }\\n      return;\\n    }\\n\\n    \u002F\u002F If there is no imageMask, create the PDFImage and a lot\\n    \u002F\u002F of image processing can be done here.\\n    let objId = `img_${this.idFactory.createObjId()}`,\\n      cacheGlobally = false;\\n\\n    if (this.parsingType3Font) {\\n      objId = `${this.idFactory.getDocId()}_type3_${objId}`;\\n    } else if (cacheKey && imageRef) {\\n      cacheGlobally = this.globalImageCache.shouldCache(\\n        imageRef,\\n        this.pageIndex\\n      );\\n\\n      if (cacheGlobally) {\\n        assert(!isInline, \\\"Cannot cache an inline image globally.\\\");\\n\\n        objId = `${this.idFactory.getDocId()}_${objId}`;\\n      }\\n    }\\n\\n    \u002F\u002F Ensure that the dependency is added before the image is decoded.\\n    operatorList.addDependency(objId);\\n    args = [objId, w, h];\\n    operatorList.addImageOps(OPS.paintImageXObject, args, optionalContent);\\n\\n    if (cacheGlobally) {\\n      if (this.globalImageCache.hasDecodeFailed(imageRef)) {\\n        this.globalImageCache.setData(imageRef, {\\n          objId,\\n          fn: OPS.paintImageXObject,\\n          args,\\n          optionalContent,\\n          byteSize: 0, \u002F\u002F Data is `null`, since decoding failed previously.\\n        });\\n\\n        this._sendImgData(objId, \u002F* imgData = *\u002F null, cacheGlobally);\\n        return;\\n      }\\n\\n      \u002F\u002F For large (at least 500x500) or more complex images that we'll cache\\n      \u002F\u002F globally, check if the image is still cached locally on the main-thread\\n      \u002F\u002F to avoid having to re-parse the image (since that can be slow).\\n      if (w * h > 250000 || dict.has(\\\"SMask\\\") || dict.has(\\\"Mask\\\")) {\\n        const localLength = await this.handler.sendWithPromise(\\\"commonobj\\\", [\\n          objId,\\n          \\\"CopyLocalImage\\\",\\n          { imageRef },\\n        ]);\\n\\n        if (localLength) {\\n          this.globalImageCache.setData(imageRef, {\\n            objId,\\n            fn: OPS.paintImageXObject,\\n            args,\\n            optionalContent,\\n            byteSize: 0, \u002F\u002F Temporary entry, to avoid `setData` returning early.\\n          });\\n          this.globalImageCache.addByteSize(imageRef, localLength);\\n          return;\\n        }\\n      }\\n    }\\n\\n    PDFImage.buildImage({\\n      xref: this.xref,\\n      res: resources,\\n      image,\\n      isInline,\\n      pdfFunctionFactory: this._pdfFunctionFactory,\\n      localColorSpaceCache,\\n    })\\n      .then(async imageObj => {\\n        imgData = await imageObj.createImageData(\\n          \u002F* forceRGBA = *\u002F false,\\n          \u002F* isOffscreenCanvasSupported = *\u002F this.options\\n            .isOffscreenCanvasSupported\\n        );\\n        imgData.dataLen = imgData.bitmap\\n          ? imgData.width * imgData.height * 4\\n          : imgData.data.length;\\n        imgData.ref = imageRef;\\n\\n        if (cacheGlobally) {\\n          this.globalImageCache.addByteSize(imageRef, imgData.dataLen);\\n        }\\n        return this._sendImgData(objId, imgData, cacheGlobally);\\n      })\\n      .catch(reason => {\\n        warn(`Unable to decode image \\\"${objId}\\\": \\\"${reason}\\\".`);\\n\\n        if (imageRef) {\\n          this.globalImageCache.addDecodeFailed(imageRef);\\n        }\\n        return this._sendImgData(objId, \u002F* imgData = *\u002F null, cacheGlobally);\\n      });\\n\\n    if (cacheKey) {\\n      const cacheData = {\\n        fn: OPS.paintImageXObject,\\n        args,\\n        optionalContent,\\n      };\\n      localImageCache.set(cacheKey, imageRef, cacheData);\\n\\n      if (imageRef) {\\n        this._regionalImageCache.set(\u002F* name = *\u002F null, imageRef, cacheData);\\n\\n        if (cacheGlobally) {\\n          this.globalImageCache.setData(imageRef, {\\n            objId,\\n            fn: OPS.paintImageXObject,\\n            args,\\n            optionalContent,\\n            byteSize: 0, \u002F\u002F Temporary entry, note `addByteSize` above.\\n          });\\n        }\\n      }\\n    }\\n  }\\n\\n  handleSMask(\\n    smask,\\n    resources,\\n    operatorList,\\n    task,\\n    stateManager,\\n    localColorSpaceCache\\n  ) {\\n    const smaskContent = smask.get(\\\"G\\\");\\n    const smaskOptions = {\\n      subtype: smask.get(\\\"S\\\").name,\\n      backdrop: smask.get(\\\"BC\\\"),\\n    };\\n\\n    \u002F\u002F The SMask might have a alpha\u002Fluminosity value transfer function --\\n    \u002F\u002F we will build a map of integer values in range 0..255 to be fast.\\n    const transferObj = smask.get(\\\"TR\\\");\\n    if (isPDFFunction(transferObj)) {\\n      const transferFn = this._pdfFunctionFactory.create(transferObj);\\n      const transferMap = new Uint8Array(256);\\n      const tmp = new Float32Array(1);\\n      for (let i = 0; i \u003C 256; i++) {\\n        tmp[0] = i \u002F 255;\\n        transferFn(tmp, 0, tmp, 0);\\n        transferMap[i] = (tmp[0] * 255) | 0;\\n      }\\n      smaskOptions.transferMap = transferMap;\\n    }\\n\\n    return this.buildFormXObject(\\n      resources,\\n      smaskContent,\\n      smaskOptions,\\n      operatorList,\\n      task,\\n      stateManager.state.clone(),\\n      localColorSpaceCache\\n    );\\n  }\\n\\n  handleTransferFunction(tr) {\\n    let transferArray;\\n    if (Array.isArray(tr)) {\\n      transferArray = tr;\\n    } else if (isPDFFunction(tr)) {\\n      transferArray = [tr];\\n    } else {\\n      return null; \u002F\u002F Not a valid transfer function entry.\\n    }\\n\\n    const transferMaps = [];\\n    let numFns = 0,\\n      numEffectfulFns = 0;\\n    for (const entry of transferArray) {\\n      const transferObj = this.xref.fetchIfRef(entry);\\n      numFns++;\\n\\n      if (isName(transferObj, \\\"Identity\\\")) {\\n        transferMaps.push(null);\\n        continue;\\n      } else if (!isPDFFunction(transferObj)) {\\n        return null; \u002F\u002F Not a valid transfer function object.\\n      }\\n\\n      const transferFn = this._pdfFunctionFactory.create(transferObj);\\n      const transferMap = new Uint8Array(256),\\n        tmp = new Float32Array(1);\\n      for (let j = 0; j \u003C 256; j++) {\\n        tmp[0] = j \u002F 255;\\n        transferFn(tmp, 0, tmp, 0);\\n        transferMap[j] = (tmp[0] * 255) | 0;\\n      }\\n      transferMaps.push(transferMap);\\n      numEffectfulFns++;\\n    }\\n\\n    if (!(numFns === 1 || numFns === 4)) {\\n      return null; \u002F\u002F Only 1 or 4 functions are supported, by the specification.\\n    }\\n    if (numEffectfulFns === 0) {\\n      return null; \u002F\u002F Only \u002FIdentity transfer functions found, which are no-ops.\\n    }\\n    return transferMaps;\\n  }\\n\\n  handleTilingType(\\n    fn,\\n    color,\\n    resources,\\n    pattern,\\n    patternDict,\\n    operatorList,\\n    task,\\n    localTilingPatternCache\\n  ) {\\n    \u002F\u002F Create an IR of the pattern code.\\n    const tilingOpList = new OperatorList();\\n    \u002F\u002F Merge the available resources, to prevent issues when the patternDict\\n    \u002F\u002F is missing some \u002FResources entries (fixes issue6541.pdf).\\n    const patternResources = Dict.merge({\\n      xref: this.xref,\\n      dictArray: [patternDict.get(\\\"Resources\\\"), resources],\\n    });\\n\\n    return this.getOperatorList({\\n      stream: pattern,\\n      task,\\n      resources: patternResources,\\n      operatorList: tilingOpList,\\n    })\\n      .then(function () {\\n        const operatorListIR = tilingOpList.getIR();\\n        const tilingPatternIR = getTilingPatternIR(\\n          operatorListIR,\\n          patternDict,\\n          color\\n        );\\n        \u002F\u002F Add the dependencies to the parent operator list so they are\\n        \u002F\u002F resolved before the sub operator list is executed synchronously.\\n        operatorList.addDependencies(tilingOpList.dependencies);\\n        operatorList.addOp(fn, tilingPatternIR);\\n\\n        if (patternDict.objId) {\\n          localTilingPatternCache.set(\u002F* name = *\u002F null, patternDict.objId, {\\n            operatorListIR,\\n            dict: patternDict,\\n          });\\n        }\\n      })\\n      .catch(reason => {\\n        if (reason instanceof AbortException) {\\n          return;\\n        }\\n        if (this.options.ignoreErrors) {\\n          warn(`handleTilingType - ignoring pattern: \\\"${reason}\\\".`);\\n          return;\\n        }\\n        throw reason;\\n      });\\n  }\\n\\n  async handleSetFont(\\n    resources,\\n    fontArgs,\\n    fontRef,\\n    operatorList,\\n    task,\\n    state,\\n    fallbackFontDict = null,\\n    cssFontInfo = null\\n  ) {\\n    const fontName = fontArgs?.[0] instanceof Name ? fontArgs[0].name : null;\\n\\n    let translated = await this.loadFont(\\n      fontName,\\n      fontRef,\\n      resources,\\n      fallbackFontDict,\\n      cssFontInfo\\n    );\\n\\n    if (translated.font.isType3Font) {\\n      try {\\n        await translated.loadType3Data(this, resources, task);\\n        \u002F\u002F Add the dependencies to the parent operatorList so they are\\n        \u002F\u002F resolved before Type3 operatorLists are executed synchronously.\\n        operatorList.addDependencies(translated.type3Dependencies);\\n      } catch (reason) {\\n        translated = new TranslatedFont({\\n          loadedName: \\\"g_font_error\\\",\\n          font: new ErrorFont(`Type3 font load error: ${reason}`),\\n          dict: translated.font,\\n          evaluatorOptions: this.options,\\n        });\\n      }\\n    }\\n\\n    state.font = translated.font;\\n    translated.send(this.handler);\\n    return translated.loadedName;\\n  }\\n\\n  handleText(chars, state) {\\n    const font = state.font;\\n    const glyphs = font.charsToGlyphs(chars);\\n\\n    if (font.data) {\\n      const isAddToPathSet = !!(\\n        state.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\\n      );\\n      if (\\n        isAddToPathSet ||\\n        state.fillColorSpace.name === \\\"Pattern\\\" ||\\n        font.disableFontFace ||\\n        this.options.disableFontFace\\n      ) {\\n        PartialEvaluator.buildFontPaths(\\n          font,\\n          glyphs,\\n          this.handler,\\n          this.options\\n        );\\n      }\\n    }\\n    return glyphs;\\n  }\\n\\n  ensureStateFont(state) {\\n    if (state.font) {\\n      return;\\n    }\\n    const reason = new FormatError(\\n      \\\"Missing setFont (Tf) operator before text rendering operator.\\\"\\n    );\\n\\n    if (this.options.ignoreErrors) {\\n      warn(`ensureStateFont: \\\"${reason}\\\".`);\\n      return;\\n    }\\n    throw reason;\\n  }\\n\\n  async setGState({\\n    resources,\\n    gState,\\n    operatorList,\\n    cacheKey,\\n    task,\\n    stateManager,\\n    localGStateCache,\\n    localColorSpaceCache,\\n  }) {\\n    const gStateRef = gState.objId;\\n    let isSimpleGState = true;\\n    \u002F\u002F This array holds the converted\u002Fprocessed state data.\\n    const gStateObj = [];\\n    let promise = Promise.resolve();\\n    for (const key of gState.getKeys()) {\\n      const value = gState.get(key);\\n      switch (key) {\\n        case \\\"Type\\\":\\n          break;\\n        case \\\"LW\\\":\\n        case \\\"LC\\\":\\n        case \\\"LJ\\\":\\n        case \\\"ML\\\":\\n        case \\\"D\\\":\\n        case \\\"RI\\\":\\n        case \\\"FL\\\":\\n        case \\\"CA\\\":\\n        case \\\"ca\\\":\\n          gStateObj.push([key, value]);\\n          break;\\n        case \\\"Font\\\":\\n          isSimpleGState = false;\\n\\n          promise = promise.then(() =>\\n            this.handleSetFont(\\n              resources,\\n              null,\\n              value[0],\\n              operatorList,\\n              task,\\n              stateManager.state\\n            ).then(function (loadedName) {\\n              operatorList.addDependency(loadedName);\\n              gStateObj.push([key, [loadedName, value[1]]]);\\n            })\\n          );\\n          break;\\n        case \\\"BM\\\":\\n          gStateObj.push([key, normalizeBlendMode(value)]);\\n          break;\\n        case \\\"SMask\\\":\\n          if (isName(value, \\\"None\\\")) {\\n            gStateObj.push([key, false]);\\n            break;\\n          }\\n          if (value instanceof Dict) {\\n            isSimpleGState = false;\\n\\n            promise = promise.then(() =>\\n              this.handleSMask(\\n                value,\\n                resources,\\n                operatorList,\\n                task,\\n                stateManager,\\n                localColorSpaceCache\\n              )\\n            );\\n            gStateObj.push([key, true]);\\n          } else {\\n            warn(\\\"Unsupported SMask type\\\");\\n          }\\n          break;\\n        case \\\"TR\\\":\\n          const transferMaps = this.handleTransferFunction(value);\\n          gStateObj.push([key, transferMaps]);\\n          break;\\n        \u002F\u002F Only generate info log messages for the following since\\n        \u002F\u002F they are unlikely to have a big impact on the rendering.\\n        case \\\"OP\\\":\\n        case \\\"op\\\":\\n        case \\\"OPM\\\":\\n        case \\\"BG\\\":\\n        case \\\"BG2\\\":\\n        case \\\"UCR\\\":\\n        case \\\"UCR2\\\":\\n        case \\\"TR2\\\":\\n        case \\\"HT\\\":\\n        case \\\"SM\\\":\\n        case \\\"SA\\\":\\n        case \\\"AIS\\\":\\n        case \\\"TK\\\":\\n          \u002F\u002F TODO implement these operators.\\n          info(\\\"graphic state operator \\\" + key);\\n          break;\\n        default:\\n          info(\\\"Unknown graphic state operator \\\" + key);\\n          break;\\n      }\\n    }\\n    await promise;\\n\\n    if (gStateObj.length > 0) {\\n      operatorList.addOp(OPS.setGState, [gStateObj]);\\n    }\\n\\n    if (isSimpleGState) {\\n      localGStateCache.set(cacheKey, gStateRef, gStateObj);\\n    }\\n  }\\n\\n  loadFont(\\n    fontName,\\n    font,\\n    resources,\\n    fallbackFontDict = null,\\n    cssFontInfo = null\\n  ) {\\n    \u002F\u002F eslint-disable-next-line arrow-body-style\\n    const errorFont = async () => {\\n      return new TranslatedFont({\\n        loadedName: \\\"g_font_error\\\",\\n        font: new ErrorFont(`Font \\\"${fontName}\\\" is not available.`),\\n        dict: font,\\n        evaluatorOptions: this.options,\\n      });\\n    };\\n\\n    let fontRef;\\n    if (font) {\\n      \u002F\u002F Loading by ref.\\n      if (font instanceof Ref) {\\n        fontRef = font;\\n      }\\n    } else {\\n      \u002F\u002F Loading by name.\\n      const fontRes = resources.get(\\\"Font\\\");\\n      if (fontRes) {\\n        fontRef = fontRes.getRaw(fontName);\\n      }\\n    }\\n    if (fontRef) {\\n      if (this.type3FontRefs?.has(fontRef)) {\\n        return errorFont();\\n      }\\n\\n      if (this.fontCache.has(fontRef)) {\\n        return this.fontCache.get(fontRef);\\n      }\\n\\n      try {\\n        font = this.xref.fetchIfRef(fontRef);\\n      } catch (ex) {\\n        warn(`loadFont - lookup failed: \\\"${ex}\\\".`);\\n      }\\n    }\\n\\n    if (!(font instanceof Dict)) {\\n      if (!this.options.ignoreErrors && !this.parsingType3Font) {\\n        warn(`Font \\\"${fontName}\\\" is not available.`);\\n        return errorFont();\\n      }\\n      warn(\\n        `Font \\\"${fontName}\\\" is not available -- attempting to fallback to a default font.`\\n      );\\n\\n      \u002F\u002F Falling back to a default font to avoid completely broken rendering,\\n      \u002F\u002F but note that there're no guarantees that things will look \\\"correct\\\".\\n      font = fallbackFontDict || PartialEvaluator.fallbackFontDict;\\n    }\\n\\n    \u002F\u002F We are holding `font.cacheKey` references only for `fontRef`s that\\n    \u002F\u002F are not actually `Ref`s, but rather `Dict`s. See explanation below.\\n    if (font.cacheKey && this.fontCache.has(font.cacheKey)) {\\n      return this.fontCache.get(font.cacheKey);\\n    }\\n\\n    const { promise, resolve } = Promise.withResolvers();\\n\\n    let preEvaluatedFont;\\n    try {\\n      preEvaluatedFont = this.preEvaluateFont(font);\\n      preEvaluatedFont.cssFontInfo = cssFontInfo;\\n    } catch (reason) {\\n      warn(`loadFont - preEvaluateFont failed: \\\"${reason}\\\".`);\\n      return errorFont();\\n    }\\n    const { descriptor, hash } = preEvaluatedFont;\\n\\n    const fontRefIsRef = fontRef instanceof Ref;\\n    let fontID;\\n\\n    if (hash && descriptor instanceof Dict) {\\n      const fontAliases = (descriptor.fontAliases ||= Object.create(null));\\n\\n      if (fontAliases[hash]) {\\n        const aliasFontRef = fontAliases[hash].aliasRef;\\n        if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) {\\n          this.fontCache.putAlias(fontRef, aliasFontRef);\\n          return this.fontCache.get(fontRef);\\n        }\\n      } else {\\n        fontAliases[hash] = {\\n          fontID: this.idFactory.createFontId(),\\n        };\\n      }\\n\\n      if (fontRefIsRef) {\\n        fontAliases[hash].aliasRef = fontRef;\\n      }\\n      fontID = fontAliases[hash].fontID;\\n    } else {\\n      fontID = this.idFactory.createFontId();\\n    }\\n    assert(\\n      fontID?.startsWith(\\\"f\\\"),\\n      'The \\\"fontID\\\" must be (correctly) defined.'\\n    );\\n\\n    \u002F\u002F Workaround for bad PDF generators that reference fonts incorrectly,\\n    \u002F\u002F where `fontRef` is a `Dict` rather than a `Ref` (fixes bug946506.pdf).\\n    \u002F\u002F In this case we cannot put the font into `this.fontCache` (which is\\n    \u002F\u002F a `RefSetCache`), since it's not possible to use a `Dict` as a key.\\n    \u002F\u002F\\n    \u002F\u002F However, if we don't cache the font it's not possible to remove it\\n    \u002F\u002F when `cleanup` is triggered from the API, which causes issues on\\n    \u002F\u002F subsequent rendering operations (see issue7403.pdf) and would force us\\n    \u002F\u002F to unnecessarily load the same fonts over and over.\\n    \u002F\u002F\\n    \u002F\u002F Instead, we cheat a bit by using a modified `fontID` as a key in\\n    \u002F\u002F `this.fontCache`, to allow the font to be cached.\\n    \u002F\u002F NOTE: This works because `RefSetCache` calls `toString()` on provided\\n    \u002F\u002F       keys. Also, since `fontRef` is used when getting cached fonts,\\n    \u002F\u002F       we'll not accidentally match fonts cached with the `fontID`.\\n    if (fontRefIsRef) {\\n      this.fontCache.put(fontRef, promise);\\n    } else {\\n      font.cacheKey = `cacheKey_${fontID}`;\\n      this.fontCache.put(font.cacheKey, promise);\\n    }\\n\\n    \u002F\u002F Keep track of each font we translated so the caller can\\n    \u002F\u002F load them asynchronously before calling display on a page.\\n    font.loadedName = `${this.idFactory.getDocId()}_${fontID}`;\\n\\n    this.translateFont(preEvaluatedFont)\\n      .then(translatedFont => {\\n        resolve(\\n          new TranslatedFont({\\n            loadedName: font.loadedName,\\n            font: translatedFont,\\n            dict: font,\\n            evaluatorOptions: this.options,\\n          })\\n        );\\n      })\\n      .catch(reason => {\\n        \u002F\u002F TODO reject?\\n        warn(`loadFont - translateFont failed: \\\"${reason}\\\".`);\\n\\n        resolve(\\n          new TranslatedFont({\\n            loadedName: font.loadedName,\\n            font: new ErrorFont(\\n              reason instanceof Error ? reason.message : reason\\n            ),\\n            dict: font,\\n            evaluatorOptions: this.options,\\n          })\\n        );\\n      });\\n    return promise;\\n  }\\n\\n  buildPath(operatorList, fn, args, parsingText = false) {\\n    const lastIndex = operatorList.length - 1;\\n    if (!args) {\\n      args = [];\\n    }\\n    if (\\n      lastIndex \u003C 0 ||\\n      operatorList.fnArray[lastIndex] !== OPS.constructPath\\n    ) {\\n      \u002F\u002F Handle corrupt PDF documents that contains path operators inside of\\n      \u002F\u002F text objects, which may shift subsequent text, by enclosing the path\\n      \u002F\u002F operator in save\u002Frestore operators (fixes issue10542_reduced.pdf).\\n      \u002F\u002F\\n      \u002F\u002F Note that this will effectively disable the optimization in the\\n      \u002F\u002F `else` branch below, but given that this type of corruption is\\n      \u002F\u002F *extremely* rare that shouldn't really matter much in practice.\\n      if (parsingText) {\\n        warn(`Encountered path operator \\\"${fn}\\\" inside of a text object.`);\\n        operatorList.addOp(OPS.save, null);\\n      }\\n\\n      let minMax;\\n      switch (fn) {\\n        case OPS.rectangle:\\n          const x = args[0] + args[2];\\n          const y = args[1] + args[3];\\n          minMax = [\\n            Math.min(args[0], x),\\n            Math.min(args[1], y),\\n            Math.max(args[0], x),\\n            Math.max(args[1], y),\\n          ];\\n          break;\\n        case OPS.moveTo:\\n        case OPS.lineTo:\\n          minMax = [args[0], args[1], args[0], args[1]];\\n          break;\\n        default:\\n          minMax = [Infinity, Infinity, -Infinity, -Infinity];\\n          break;\\n      }\\n      operatorList.addOp(OPS.constructPath, [[fn], args, minMax]);\\n\\n      if (parsingText) {\\n        operatorList.addOp(OPS.restore, null);\\n      }\\n    } else {\\n      const opArgs = operatorList.argsArray[lastIndex];\\n      opArgs[0].push(fn);\\n      opArgs[1].push(...args);\\n      const minMax = opArgs[2];\\n\\n      \u002F\u002F Compute min\u002Fmax in the worker instead of the main thread.\\n      \u002F\u002F If the current matrix (when drawing) is a scaling one\\n      \u002F\u002F then min\u002Fmax can be easily computed in using those values.\\n      \u002F\u002F Only rectangle, lineTo and moveTo are handled here since\\n      \u002F\u002F Bezier stuff requires to have the starting point.\\n      switch (fn) {\\n        case OPS.rectangle:\\n          const x = args[0] + args[2];\\n          const y = args[1] + args[3];\\n          minMax[0] = Math.min(minMax[0], args[0], x);\\n          minMax[1] = Math.min(minMax[1], args[1], y);\\n          minMax[2] = Math.max(minMax[2], args[0], x);\\n          minMax[3] = Math.max(minMax[3], args[1], y);\\n          break;\\n        case OPS.moveTo:\\n        case OPS.lineTo:\\n          minMax[0] = Math.min(minMax[0], args[0]);\\n          minMax[1] = Math.min(minMax[1], args[1]);\\n          minMax[2] = Math.max(minMax[2], args[0]);\\n          minMax[3] = Math.max(minMax[3], args[1]);\\n          break;\\n      }\\n    }\\n  }\\n\\n  parseColorSpace({ cs, resources, localColorSpaceCache }) {\\n    return ColorSpace.parseAsync({\\n      cs,\\n      xref: this.xref,\\n      resources,\\n      pdfFunctionFactory: this._pdfFunctionFactory,\\n      localColorSpaceCache,\\n    }).catch(reason => {\\n      if (reason instanceof AbortException) {\\n        return null;\\n      }\\n      if (this.options.ignoreErrors) {\\n        warn(`parseColorSpace - ignoring ColorSpace: \\\"${reason}\\\".`);\\n        return null;\\n      }\\n      throw reason;\\n    });\\n  }\\n\\n  parseShading({\\n    shading,\\n    resources,\\n    localColorSpaceCache,\\n    localShadingPatternCache,\\n  }) {\\n    \u002F\u002F Shadings and patterns may be referenced by the same name but the resource\\n    \u002F\u002F dictionary could be different so we can't use the name for the cache key.\\n    let id = localShadingPatternCache.get(shading);\\n    if (id) {\\n      return id;\\n    }\\n    let patternIR;\\n\\n    try {\\n      const shadingFill = Pattern.parseShading(\\n        shading,\\n        this.xref,\\n        resources,\\n        this._pdfFunctionFactory,\\n        localColorSpaceCache\\n      );\\n      patternIR = shadingFill.getIR();\\n    } catch (reason) {\\n      if (reason instanceof AbortException) {\\n        return null;\\n      }\\n      if (this.options.ignoreErrors) {\\n        warn(`parseShading - ignoring shading: \\\"${reason}\\\".`);\\n\\n        localShadingPatternCache.set(shading, null);\\n        return null;\\n      }\\n      throw reason;\\n    }\\n\\n    id = `pattern_${this.idFactory.createObjId()}`;\\n    if (this.parsingType3Font) {\\n      id = `${this.idFactory.getDocId()}_type3_${id}`;\\n    }\\n    localShadingPatternCache.set(shading, id);\\n\\n    if (this.parsingType3Font) {\\n      this.handler.send(\\\"commonobj\\\", [id, \\\"Pattern\\\", patternIR]);\\n    } else {\\n      this.handler.send(\\\"obj\\\", [id, this.pageIndex, \\\"Pattern\\\", patternIR]);\\n    }\\n    return id;\\n  }\\n\\n  handleColorN(\\n    operatorList,\\n    fn,\\n    args,\\n    cs,\\n    patterns,\\n    resources,\\n    task,\\n    localColorSpaceCache,\\n    localTilingPatternCache,\\n    localShadingPatternCache\\n  ) {\\n    \u002F\u002F compile tiling patterns\\n    const patternName = args.pop();\\n    \u002F\u002F SCN\u002Fscn applies patterns along with normal colors\\n    if (patternName instanceof Name) {\\n      const rawPattern = patterns.getRaw(patternName.name);\\n\\n      const localTilingPattern =\\n        rawPattern instanceof Ref &&\\n        localTilingPatternCache.getByRef(rawPattern);\\n      if (localTilingPattern) {\\n        try {\\n          const color = cs.base ? cs.base.getRgb(args, 0) : null;\\n          const tilingPatternIR = getTilingPatternIR(\\n            localTilingPattern.operatorListIR,\\n            localTilingPattern.dict,\\n            color\\n          );\\n          operatorList.addOp(fn, tilingPatternIR);\\n          return undefined;\\n        } catch {\\n          \u002F\u002F Handle any errors during normal TilingPattern parsing.\\n        }\\n      }\\n\\n      const pattern = this.xref.fetchIfRef(rawPattern);\\n      if (pattern) {\\n        const dict = pattern instanceof BaseStream ? pattern.dict : pattern;\\n        const typeNum = dict.get(\\\"PatternType\\\");\\n\\n        if (typeNum === PatternType.TILING) {\\n          const color = cs.base ? cs.base.getRgb(args, 0) : null;\\n          return this.handleTilingType(\\n            fn,\\n            color,\\n            resources,\\n            pattern,\\n            dict,\\n            operatorList,\\n            task,\\n            localTilingPatternCache\\n          );\\n        } else if (typeNum === PatternType.SHADING) {\\n          const shading = dict.get(\\\"Shading\\\");\\n          const objId = this.parseShading({\\n            shading,\\n            resources,\\n            localColorSpaceCache,\\n            localShadingPatternCache,\\n          });\\n          if (objId) {\\n            const matrix = lookupMatrix(dict.getArray(\\\"Matrix\\\"), null);\\n            operatorList.addOp(fn, [\\\"Shading\\\", objId, matrix]);\\n          }\\n          return undefined;\\n        }\\n        throw new FormatError(`Unknown PatternType: ${typeNum}`);\\n      }\\n    }\\n    throw new FormatError(`Unknown PatternName: ${patternName}`);\\n  }\\n\\n  _parseVisibilityExpression(array, nestingCounter, currentResult) {\\n    const MAX_NESTING = 10;\\n    if (++nestingCounter > MAX_NESTING) {\\n      warn(\\\"Visibility expression is too deeply nested\\\");\\n      return;\\n    }\\n    const length = array.length;\\n    const operator = this.xref.fetchIfRef(array[0]);\\n    if (length \u003C 2 || !(operator instanceof Name)) {\\n      warn(\\\"Invalid visibility expression\\\");\\n      return;\\n    }\\n    switch (operator.name) {\\n      case \\\"And\\\":\\n      case \\\"Or\\\":\\n      case \\\"Not\\\":\\n        currentResult.push(operator.name);\\n        break;\\n      default:\\n        warn(`Invalid operator ${operator.name} in visibility expression`);\\n        return;\\n    }\\n    for (let i = 1; i \u003C length; i++) {\\n      const raw = array[i];\\n      const object = this.xref.fetchIfRef(raw);\\n      if (Array.isArray(object)) {\\n        const nestedResult = [];\\n        currentResult.push(nestedResult);\\n        \u002F\u002F Recursively parse a subarray.\\n        this._parseVisibilityExpression(object, nestingCounter, nestedResult);\\n      } else if (raw instanceof Ref) {\\n        \u002F\u002F Reference to an OCG dictionary.\\n        currentResult.push(raw.toString());\\n      }\\n    }\\n  }\\n\\n  async parseMarkedContentProps(contentProperties, resources) {\\n    let optionalContent;\\n    if (contentProperties instanceof Name) {\\n      const properties = resources.get(\\\"Properties\\\");\\n      optionalContent = properties.get(contentProperties.name);\\n    } else if (contentProperties instanceof Dict) {\\n      optionalContent = contentProperties;\\n    } else {\\n      throw new FormatError(\\\"Optional content properties malformed.\\\");\\n    }\\n\\n    const optionalContentType = optionalContent.get(\\\"Type\\\")?.name;\\n    if (optionalContentType === \\\"OCG\\\") {\\n      return {\\n        type: optionalContentType,\\n        id: optionalContent.objId,\\n      };\\n    } else if (optionalContentType === \\\"OCMD\\\") {\\n      const expression = optionalContent.get(\\\"VE\\\");\\n      if (Array.isArray(expression)) {\\n        const result = [];\\n        this._parseVisibilityExpression(expression, 0, result);\\n        if (result.length > 0) {\\n          return {\\n            type: \\\"OCMD\\\",\\n            expression: result,\\n          };\\n        }\\n      }\\n\\n      const optionalContentGroups = optionalContent.get(\\\"OCGs\\\");\\n      if (\\n        Array.isArray(optionalContentGroups) ||\\n        optionalContentGroups instanceof Dict\\n      ) {\\n        const groupIds = [];\\n        if (Array.isArray(optionalContentGroups)) {\\n          for (const ocg of optionalContentGroups) {\\n            groupIds.push(ocg.toString());\\n          }\\n        } else {\\n          \u002F\u002F Dictionary, just use the obj id.\\n          groupIds.push(optionalContentGroups.objId);\\n        }\\n\\n        return {\\n          type: optionalContentType,\\n          ids: groupIds,\\n          policy:\\n            optionalContent.get(\\\"P\\\") instanceof Name\\n              ? optionalContent.get(\\\"P\\\").name\\n              : null,\\n          expression: null,\\n        };\\n      } else if (optionalContentGroups instanceof Ref) {\\n        return {\\n          type: optionalContentType,\\n          id: optionalContentGroups.toString(),\\n        };\\n      }\\n    }\\n    return null;\\n  }\\n\\n  getOperatorList({\\n    stream,\\n    task,\\n    resources,\\n    operatorList,\\n    initialState = null,\\n    fallbackFontDict = null,\\n  }) {\\n    \u002F\u002F Ensure that `resources`\u002F`initialState` is correctly initialized,\\n    \u002F\u002F even if the provided parameter is e.g. `null`.\\n    resources ||= Dict.empty;\\n    initialState ||= new EvalState();\\n\\n    if (!operatorList) {\\n      throw new Error('getOperatorList: missing \\\"operatorList\\\" parameter');\\n    }\\n\\n    const self = this;\\n    const xref = this.xref;\\n    let parsingText = false;\\n    const localImageCache = new LocalImageCache();\\n    const localColorSpaceCache = new LocalColorSpaceCache();\\n    const localGStateCache = new LocalGStateCache();\\n    const localTilingPatternCache = new LocalTilingPatternCache();\\n    const localShadingPatternCache = new Map();\\n\\n    const xobjs = resources.get(\\\"XObject\\\") || Dict.empty;\\n    const patterns = resources.get(\\\"Pattern\\\") || Dict.empty;\\n    const stateManager = new StateManager(initialState);\\n    const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\\n    const timeSlotManager = new TimeSlotManager();\\n\\n    function closePendingRestoreOPS(argument) {\\n      for (let i = 0, ii = preprocessor.savedStatesDepth; i \u003C ii; i++) {\\n        operatorList.addOp(OPS.restore, []);\\n      }\\n    }\\n\\n    return new Promise(function promiseBody(resolve, reject) {\\n      const next = function (promise) {\\n        Promise.all([promise, operatorList.ready]).then(function () {\\n          try {\\n            promiseBody(resolve, reject);\\n          } catch (ex) {\\n            reject(ex);\\n          }\\n        }, reject);\\n      };\\n      task.ensureNotTerminated();\\n      timeSlotManager.reset();\\n\\n      const operation = {};\\n      let stop, i, ii, cs, name, isValidName;\\n      while (!(stop = timeSlotManager.check())) {\\n        \u002F\u002F The arguments parsed by read() are used beyond this loop, so we\\n        \u002F\u002F cannot reuse the same array on each iteration. Therefore we pass\\n        \u002F\u002F in |null| as the initial value (see the comment on\\n        \u002F\u002F EvaluatorPreprocessor_read() for why).\\n        operation.args = null;\\n        if (!preprocessor.read(operation)) {\\n          break;\\n        }\\n        let args = operation.args;\\n        let fn = operation.fn;\\n\\n        switch (fn | 0) {\\n          case OPS.paintXObject:\\n            \u002F\u002F eagerly compile XForm objects\\n            isValidName = args[0] instanceof Name;\\n            name = args[0].name;\\n\\n            if (isValidName) {\\n              const localImage = localImageCache.getByName(name);\\n              if (localImage) {\\n                operatorList.addImageOps(\\n                  localImage.fn,\\n                  localImage.args,\\n                  localImage.optionalContent\\n                );\\n\\n                incrementCachedImageMaskCount(localImage);\\n                args = null;\\n                continue;\\n              }\\n            }\\n\\n            next(\\n              new Promise(function (resolveXObject, rejectXObject) {\\n                if (!isValidName) {\\n                  throw new FormatError(\\\"XObject must be referred to by name.\\\");\\n                }\\n\\n                let xobj = xobjs.getRaw(name);\\n                if (xobj instanceof Ref) {\\n                  const localImage =\\n                    localImageCache.getByRef(xobj) ||\\n                    self._regionalImageCache.getByRef(xobj);\\n                  if (localImage) {\\n                    operatorList.addImageOps(\\n                      localImage.fn,\\n                      localImage.args,\\n                      localImage.optionalContent\\n                    );\\n\\n                    incrementCachedImageMaskCount(localImage);\\n                    resolveXObject();\\n                    return;\\n                  }\\n\\n                  const globalImage = self.globalImageCache.getData(\\n                    xobj,\\n                    self.pageIndex\\n                  );\\n                  if (globalImage) {\\n                    operatorList.addDependency(globalImage.objId);\\n                    operatorList.addImageOps(\\n                      globalImage.fn,\\n                      globalImage.args,\\n                      globalImage.optionalContent\\n                    );\\n\\n                    resolveXObject();\\n                    return;\\n                  }\\n\\n                  xobj = xref.fetch(xobj);\\n                }\\n\\n                if (!(xobj instanceof BaseStream)) {\\n                  throw new FormatError(\\\"XObject should be a stream\\\");\\n                }\\n\\n                const type = xobj.dict.get(\\\"Subtype\\\");\\n                if (!(type instanceof Name)) {\\n                  throw new FormatError(\\\"XObject should have a Name subtype\\\");\\n                }\\n\\n                if (type.name === \\\"Form\\\") {\\n                  stateManager.save();\\n                  self\\n                    .buildFormXObject(\\n                      resources,\\n                      xobj,\\n                      null,\\n                      operatorList,\\n                      task,\\n                      stateManager.state.clone(),\\n                      localColorSpaceCache\\n                    )\\n                    .then(function () {\\n                      stateManager.restore();\\n                      resolveXObject();\\n                    }, rejectXObject);\\n                  return;\\n                } else if (type.name === \\\"Image\\\") {\\n                  self\\n                    .buildPaintImageXObject({\\n                      resources,\\n                      image: xobj,\\n                      operatorList,\\n                      cacheKey: name,\\n                      localImageCache,\\n                      localColorSpaceCache,\\n                    })\\n                    .then(resolveXObject, rejectXObject);\\n                  return;\\n                } else if (type.name === \\\"PS\\\") {\\n                  \u002F\u002F PostScript XObjects are unused when viewing documents.\\n                  \u002F\u002F See section 4.7.1 of Adobe's PDF reference.\\n                  info(\\\"Ignored XObject subtype PS\\\");\\n                } else {\\n                  throw new FormatError(\\n                    `Unhandled XObject subtype ${type.name}`\\n                  );\\n                }\\n                resolveXObject();\\n              }).catch(function (reason) {\\n                if (reason instanceof AbortException) {\\n                  return;\\n                }\\n                if (self.options.ignoreErrors) {\\n                  warn(`getOperatorList - ignoring XObject: \\\"${reason}\\\".`);\\n                  return;\\n                }\\n                throw reason;\\n              })\\n            );\\n            return;\\n          case OPS.setFont:\\n            var fontSize = args[1];\\n            \u002F\u002F eagerly collect all fonts\\n            next(\\n              self\\n                .handleSetFont(\\n                  resources,\\n                  args,\\n                  null,\\n                  operatorList,\\n                  task,\\n                  stateManager.state,\\n                  fallbackFontDict\\n                )\\n                .then(function (loadedName) {\\n                  operatorList.addDependency(loadedName);\\n                  operatorList.addOp(OPS.setFont, [loadedName, fontSize]);\\n                })\\n            );\\n            return;\\n          case OPS.beginText:\\n            parsingText = true;\\n            break;\\n          case OPS.endText:\\n            parsingText = false;\\n            break;\\n          case OPS.endInlineImage:\\n            var cacheKey = args[0].cacheKey;\\n            if (cacheKey) {\\n              const localImage = localImageCache.getByName(cacheKey);\\n              if (localImage) {\\n                operatorList.addImageOps(\\n                  localImage.fn,\\n                  localImage.args,\\n                  localImage.optionalContent\\n                );\\n\\n                incrementCachedImageMaskCount(localImage);\\n                args = null;\\n                continue;\\n              }\\n            }\\n            next(\\n              self.buildPaintImageXObject({\\n                resources,\\n                image: args[0],\\n                isInline: true,\\n                operatorList,\\n                cacheKey,\\n                localImageCache,\\n                localColorSpaceCache,\\n              })\\n            );\\n            return;\\n          case OPS.showText:\\n            if (!stateManager.state.font) {\\n              self.ensureStateFont(stateManager.state);\\n              continue;\\n            }\\n            args[0] = self.handleText(args[0], stateManager.state);\\n            break;\\n          case OPS.showSpacedText:\\n            if (!stateManager.state.font) {\\n              self.ensureStateFont(stateManager.state);\\n              continue;\\n            }\\n            var combinedGlyphs = [];\\n            var state = stateManager.state;\\n            for (const arrItem of args[0]) {\\n              if (typeof arrItem === \\\"string\\\") {\\n                combinedGlyphs.push(...self.handleText(arrItem, state));\\n              } else if (typeof arrItem === \\\"number\\\") {\\n                combinedGlyphs.push(arrItem);\\n              }\\n            }\\n            args[0] = combinedGlyphs;\\n            fn = OPS.showText;\\n            break;\\n          case OPS.nextLineShowText:\\n            if (!stateManager.state.font) {\\n              self.ensureStateFont(stateManager.state);\\n              continue;\\n            }\\n            operatorList.addOp(OPS.nextLine);\\n            args[0] = self.handleText(args[0], stateManager.state);\\n            fn = OPS.showText;\\n            break;\\n          case OPS.nextLineSetSpacingShowText:\\n            if (!stateManager.state.font) {\\n              self.ensureStateFont(stateManager.state);\\n              continue;\\n            }\\n            operatorList.addOp(OPS.nextLine);\\n            operatorList.addOp(OPS.setWordSpacing, [args.shift()]);\\n            operatorList.addOp(OPS.setCharSpacing, [args.shift()]);\\n            args[0] = self.handleText(args[0], stateManager.state);\\n            fn = OPS.showText;\\n            break;\\n          case OPS.setTextRenderingMode:\\n            stateManager.state.textRenderingMode = args[0];\\n            break;\\n\\n          case OPS.setFillColorSpace: {\\n            const cachedColorSpace = ColorSpace.getCached(\\n              args[0],\\n              xref,\\n              localColorSpaceCache\\n            );\\n            if (cachedColorSpace) {\\n              stateManager.state.fillColorSpace = cachedColorSpace;\\n              continue;\\n            }\\n\\n            next(\\n              self\\n                .parseColorSpace({\\n                  cs: args[0],\\n                  resources,\\n                  localColorSpaceCache,\\n                })\\n                .then(function (colorSpace) {\\n                  if (colorSpace) {\\n                    stateManager.state.fillColorSpace = colorSpace;\\n                  }\\n                })\\n            );\\n            return;\\n          }\\n          case OPS.setStrokeColorSpace: {\\n            const cachedColorSpace = ColorSpace.getCached(\\n              args[0],\\n              xref,\\n              localColorSpaceCache\\n            );\\n            if (cachedColorSpace) {\\n              stateManager.state.strokeColorSpace = cachedColorSpace;\\n              continue;\\n            }\\n\\n            next(\\n              self\\n                .parseColorSpace({\\n                  cs: args[0],\\n                  resources,\\n                  localColorSpaceCache,\\n                })\\n                .then(function (colorSpace) {\\n                  if (colorSpace) {\\n                    stateManager.state.strokeColorSpace = colorSpace;\\n                  }\\n                })\\n            );\\n            return;\\n          }\\n          case OPS.setFillColor:\\n            cs = stateManager.state.fillColorSpace;\\n            args = cs.getRgb(args, 0);\\n            fn = OPS.setFillRGBColor;\\n            break;\\n          case OPS.setStrokeColor:\\n            cs = stateManager.state.strokeColorSpace;\\n            args = cs.getRgb(args, 0);\\n            fn = OPS.setStrokeRGBColor;\\n            break;\\n          case OPS.setFillGray:\\n            stateManager.state.fillColorSpace = ColorSpace.singletons.gray;\\n            args = ColorSpace.singletons.gray.getRgb(args, 0);\\n            fn = OPS.setFillRGBColor;\\n            break;\\n          case OPS.setStrokeGray:\\n            stateManager.state.strokeColorSpace = ColorSpace.singletons.gray;\\n            args = ColorSpace.singletons.gray.getRgb(args, 0);\\n            fn = OPS.setStrokeRGBColor;\\n            break;\\n          case OPS.setFillCMYKColor:\\n            stateManager.state.fillColorSpace = ColorSpace.singletons.cmyk;\\n            args = ColorSpace.singletons.cmyk.getRgb(args, 0);\\n            fn = OPS.setFillRGBColor;\\n            break;\\n          case OPS.setStrokeCMYKColor:\\n            stateManager.state.strokeColorSpace = ColorSpace.singletons.cmyk;\\n            args = ColorSpace.singletons.cmyk.getRgb(args, 0);\\n            fn = OPS.setStrokeRGBColor;\\n            break;\\n          case OPS.setFillRGBColor:\\n            stateManager.state.fillColorSpace = ColorSpace.singletons.rgb;\\n            args = ColorSpace.singletons.rgb.getRgb(args, 0);\\n            break;\\n          case OPS.setStrokeRGBColor:\\n            stateManager.state.strokeColorSpace = ColorSpace.singletons.rgb;\\n            args = ColorSpace.singletons.rgb.getRgb(args, 0);\\n            break;\\n          case OPS.setFillColorN:\\n            cs = stateManager.state.fillColorSpace;\\n            if (cs.name === \\\"Pattern\\\") {\\n              next(\\n                self.handleColorN(\\n                  operatorList,\\n                  OPS.setFillColorN,\\n                  args,\\n                  cs,\\n                  patterns,\\n                  resources,\\n                  task,\\n                  localColorSpaceCache,\\n                  localTilingPatternCache,\\n                  localShadingPatternCache\\n                )\\n              );\\n              return;\\n            }\\n            args = cs.getRgb(args, 0);\\n            fn = OPS.setFillRGBColor;\\n            break;\\n          case OPS.setStrokeColorN:\\n            cs = stateManager.state.strokeColorSpace;\\n            if (cs.name === \\\"Pattern\\\") {\\n              next(\\n                self.handleColorN(\\n                  operatorList,\\n                  OPS.setStrokeColorN,\\n                  args,\\n                  cs,\\n                  patterns,\\n                  resources,\\n                  task,\\n                  localColorSpaceCache,\\n                  localTilingPatternCache,\\n                  localShadingPatternCache\\n                )\\n              );\\n              return;\\n            }\\n            args = cs.getRgb(args, 0);\\n            fn = OPS.setStrokeRGBColor;\\n            break;\\n\\n          case OPS.shadingFill:\\n            var shadingRes = resources.get(\\\"Shading\\\");\\n            if (!shadingRes) {\\n              throw new FormatError(\\\"No shading resource found\\\");\\n            }\\n\\n            var shading = shadingRes.get(args[0].name);\\n            if (!shading) {\\n              throw new FormatError(\\\"No shading object found\\\");\\n            }\\n            const patternId = self.parseShading({\\n              shading,\\n              resources,\\n              localColorSpaceCache,\\n              localShadingPatternCache,\\n            });\\n            if (!patternId) {\\n              continue;\\n            }\\n            args = [patternId];\\n            fn = OPS.shadingFill;\\n            break;\\n          case OPS.setGState:\\n            isValidName = args[0] instanceof Name;\\n            name = args[0].name;\\n\\n            if (isValidName) {\\n              const localGStateObj = localGStateCache.getByName(name);\\n              if (localGStateObj) {\\n                if (localGStateObj.length > 0) {\\n                  operatorList.addOp(OPS.setGState, [localGStateObj]);\\n                }\\n                args = null;\\n                continue;\\n              }\\n            }\\n\\n            next(\\n              new Promise(function (resolveGState, rejectGState) {\\n                if (!isValidName) {\\n                  throw new FormatError(\\\"GState must be referred to by name.\\\");\\n                }\\n\\n                const extGState = resources.get(\\\"ExtGState\\\");\\n                if (!(extGState instanceof Dict)) {\\n                  throw new FormatError(\\\"ExtGState should be a dictionary.\\\");\\n                }\\n\\n                const gState = extGState.get(name);\\n                \u002F\u002F TODO: Attempt to lookup cached GStates by reference as well,\\n                \u002F\u002F       if and only if there are PDF documents where doing so\\n                \u002F\u002F       would significantly improve performance.\\n                if (!(gState instanceof Dict)) {\\n                  throw new FormatError(\\\"GState should be a dictionary.\\\");\\n                }\\n\\n                self\\n                  .setGState({\\n                    resources,\\n                    gState,\\n                    operatorList,\\n                    cacheKey: name,\\n                    task,\\n                    stateManager,\\n                    localGStateCache,\\n                    localColorSpaceCache,\\n                  })\\n                  .then(resolveGState, rejectGState);\\n              }).catch(function (reason) {\\n                if (reason instanceof AbortException) {\\n                  return;\\n                }\\n                if (self.options.ignoreErrors) {\\n                  warn(`getOperatorList - ignoring ExtGState: \\\"${reason}\\\".`);\\n                  return;\\n                }\\n                throw reason;\\n              })\\n            );\\n            return;\\n          case OPS.moveTo:\\n          case OPS.lineTo:\\n          case OPS.curveTo:\\n          case OPS.curveTo2:\\n          case OPS.curveTo3:\\n          case OPS.closePath:\\n          case OPS.rectangle:\\n            self.buildPath(operatorList, fn, args, parsingText);\\n            continue;\\n          case OPS.markPoint:\\n          case OPS.markPointProps:\\n          case OPS.beginCompat:\\n          case OPS.endCompat:\\n            \u002F\u002F Ignore operators where the corresponding handlers are known to\\n            \u002F\u002F be no-op in CanvasGraphics (display\u002Fcanvas.js). This prevents\\n            \u002F\u002F serialization errors and is also a bit more efficient.\\n            \u002F\u002F We could also try to serialize all objects in a general way,\\n            \u002F\u002F e.g. as done in https:\u002F\u002Fgithub.com\u002Fmozilla\u002Fpdf.js\u002Fpull\u002F6266,\\n            \u002F\u002F but doing so is meaningless without knowing the semantics.\\n            continue;\\n          case OPS.beginMarkedContentProps:\\n            if (!(args[0] instanceof Name)) {\\n              warn(`Expected name for beginMarkedContentProps arg0=${args[0]}`);\\n              operatorList.addOp(OPS.beginMarkedContentProps, [\\\"OC\\\", null]);\\n              continue;\\n            }\\n            if (args[0].name === \\\"OC\\\") {\\n              next(\\n                self\\n                  .parseMarkedContentProps(args[1], resources)\\n                  .then(data => {\\n                    operatorList.addOp(OPS.beginMarkedContentProps, [\\n                      \\\"OC\\\",\\n                      data,\\n                    ]);\\n                  })\\n                  .catch(reason => {\\n                    if (reason instanceof AbortException) {\\n                      return;\\n                    }\\n                    if (self.options.ignoreErrors) {\\n                      warn(\\n                        `getOperatorList - ignoring beginMarkedContentProps: \\\"${reason}\\\".`\\n                      );\\n                      operatorList.addOp(OPS.beginMarkedContentProps, [\\n                        \\\"OC\\\",\\n                        null,\\n                      ]);\\n                      return;\\n                    }\\n                    throw reason;\\n                  })\\n              );\\n              return;\\n            }\\n            \u002F\u002F Other marked content types aren't supported yet.\\n            args = [\\n              args[0].name,\\n              args[1] instanceof Dict ? args[1].get(\\\"MCID\\\") : null,\\n            ];\\n\\n            break;\\n          case OPS.beginMarkedContent:\\n          case OPS.endMarkedContent:\\n          default:\\n            \u002F\u002F Note: Ignore the operator if it has `Dict` arguments, since\\n            \u002F\u002F those are non-serializable, otherwise postMessage will throw\\n            \u002F\u002F \\\"An object could not be cloned.\\\".\\n            if (args !== null) {\\n              for (i = 0, ii = args.length; i \u003C ii; i++) {\\n                if (args[i] instanceof Dict) {\\n                  break;\\n                }\\n              }\\n              if (i \u003C ii) {\\n                warn(\\\"getOperatorList - ignoring operator: \\\" + fn);\\n                continue;\\n              }\\n            }\\n        }\\n        operatorList.addOp(fn, args);\\n      }\\n      if (stop) {\\n        next(deferred);\\n        return;\\n      }\\n      \u002F\u002F Some PDFs don't close all restores inside object\u002Fform.\\n      \u002F\u002F Closing those for them.\\n      closePendingRestoreOPS();\\n      resolve();\\n    }).catch(reason => {\\n      if (reason instanceof AbortException) {\\n        return;\\n      }\\n      if (this.options.ignoreErrors) {\\n        warn(\\n          `getOperatorList - ignoring errors during \\\"${task.name}\\\" ` +\\n            `task: \\\"${reason}\\\".`\\n        );\\n\\n        closePendingRestoreOPS();\\n        return;\\n      }\\n      throw reason;\\n    });\\n  }\\n\\n  getTextContent({\\n    stream,\\n    task,\\n    resources,\\n    stateManager = null,\\n    includeMarkedContent = false,\\n    sink,\\n    seenStyles = new Set(),\\n    viewBox,\\n    lang = null,\\n    markedContentData = null,\\n    disableNormalization = false,\\n    keepWhiteSpace = false,\\n  }) {\\n    \u002F\u002F Ensure that `resources`\u002F`stateManager` is correctly initialized,\\n    \u002F\u002F even if the provided parameter is e.g. `null`.\\n    resources ||= Dict.empty;\\n    stateManager ||= new StateManager(new TextState());\\n\\n    if (includeMarkedContent) {\\n      markedContentData ||= { level: 0 };\\n    }\\n\\n    const textContent = {\\n      items: [],\\n      styles: Object.create(null),\\n      lang,\\n    };\\n    const textContentItem = {\\n      initialized: false,\\n      str: [],\\n      totalWidth: 0,\\n      totalHeight: 0,\\n      width: 0,\\n      height: 0,\\n      vertical: false,\\n      prevTransform: null,\\n      textAdvanceScale: 0,\\n      spaceInFlowMin: 0,\\n      spaceInFlowMax: 0,\\n      trackingSpaceMin: Infinity,\\n      negativeSpaceMax: -Infinity,\\n      notASpace: -Infinity,\\n      transform: null,\\n      fontName: null,\\n      hasEOL: false,\\n    };\\n\\n    \u002F\u002F Use a circular buffer (length === 2) to save the last chars in the\\n    \u002F\u002F text stream.\\n    \u002F\u002F This implementation of the circular buffer is using a fixed array\\n    \u002F\u002F and the position of the next element:\\n    \u002F\u002F function addElement(x) {\\n    \u002F\u002F   buffer[pos] = x;\\n    \u002F\u002F   pos = (pos + 1) % buffer.length;\\n    \u002F\u002F }\\n    \u002F\u002F It's a way faster than:\\n    \u002F\u002F function addElement(x) {\\n    \u002F\u002F   buffer.push(x);\\n    \u002F\u002F   buffer.shift();\\n    \u002F\u002F }\\n    \u002F\u002F\\n    \u002F\u002F It's useful to know when we need to add a whitespace in the\\n    \u002F\u002F text chunk.\\n    const twoLastChars = [\\\" \\\", \\\" \\\"];\\n    let twoLastCharsPos = 0;\\n\\n    \u002F**\\n     * Save the last char.\\n     * @param {string} char\\n     * @returns {boolean} true when the two last chars before adding the new one\\n     * are a non-whitespace followed by a whitespace.\\n     *\u002F\\n    function saveLastChar(char) {\\n      const nextPos = (twoLastCharsPos + 1) % 2;\\n      const ret =\\n        twoLastChars[twoLastCharsPos] !== \\\" \\\" && twoLastChars[nextPos] === \\\" \\\";\\n      twoLastChars[twoLastCharsPos] = char;\\n      twoLastCharsPos = nextPos;\\n\\n      return !keepWhiteSpace && ret;\\n    }\\n\\n    function shouldAddWhitepsace() {\\n      return (\\n        !keepWhiteSpace &&\\n        twoLastChars[twoLastCharsPos] !== \\\" \\\" &&\\n        twoLastChars[(twoLastCharsPos + 1) % 2] === \\\" \\\"\\n      );\\n    }\\n\\n    function resetLastChars() {\\n      twoLastChars[0] = twoLastChars[1] = \\\" \\\";\\n      twoLastCharsPos = 0;\\n    }\\n\\n    \u002F\u002F Used in addFakeSpaces.\\n\\n    \u002F\u002F A white \u003C= fontSize * TRACKING_SPACE_FACTOR is a tracking space\\n    \u002F\u002F so it doesn't count as a space.\\n    const TRACKING_SPACE_FACTOR = 0.102;\\n\\n    \u002F\u002F When a white \u003C= fontSize * NOT_A_SPACE_FACTOR, there is no space\\n    \u002F\u002F even if one is present in the text stream.\\n    const NOT_A_SPACE_FACTOR = 0.03;\\n\\n    \u002F\u002F A negative white \u003C fontSize * NEGATIVE_SPACE_FACTOR induces\\n    \u002F\u002F a break (a new chunk of text is created).\\n    \u002F\u002F It doesn't change anything when the text is copied but\\n    \u002F\u002F it improves potential mismatch between text layer and canvas.\\n    const NEGATIVE_SPACE_FACTOR = -0.2;\\n\\n    \u002F\u002F A white with a width in [fontSize * MIN_FACTOR; fontSize * MAX_FACTOR]\\n    \u002F\u002F is a space which will be inserted in the current flow of words.\\n    \u002F\u002F If the width is outside of this range then the flow is broken\\n    \u002F\u002F (which means a new span in the text layer).\\n    \u002F\u002F It's useful to adjust the best as possible the span in the layer\\n    \u002F\u002F to what is displayed in the canvas.\\n    const SPACE_IN_FLOW_MIN_FACTOR = 0.102;\\n    const SPACE_IN_FLOW_MAX_FACTOR = 0.6;\\n\\n    \u002F\u002F If a char is too high\u002Ftoo low compared to the previous we just create\\n    \u002F\u002F a new chunk.\\n    \u002F\u002F If the advance isn't in the +\u002F-VERTICAL_SHIFT_RATIO * height range then\\n    \u002F\u002F a new chunk is created.\\n    const VERTICAL_SHIFT_RATIO = 0.25;\\n\\n    const self = this;\\n    const xref = this.xref;\\n    const showSpacedTextBuffer = [];\\n\\n    \u002F\u002F The xobj is parsed iff it's needed, e.g. if there is a `DO` cmd.\\n    let xobjs = null;\\n    const emptyXObjectCache = new LocalImageCache();\\n    const emptyGStateCache = new LocalGStateCache();\\n\\n    const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\\n\\n    let textState;\\n\\n    function pushWhitespace({\\n      width = 0,\\n      height = 0,\\n      transform = textContentItem.prevTransform,\\n      fontName = textContentItem.fontName,\\n    }) {\\n      textContent.items.push({\\n        str: \\\" \\\",\\n        dir: \\\"ltr\\\",\\n        width,\\n        height,\\n        transform,\\n        fontName,\\n        hasEOL: false,\\n      });\\n    }\\n\\n    function getCurrentTextTransform() {\\n      \u002F\u002F 9.4.4 Text Space Details\\n      const font = textState.font;\\n      const tsm = [\\n        textState.fontSize * textState.textHScale,\\n        0,\\n        0,\\n        textState.fontSize,\\n        0,\\n        textState.textRise,\\n      ];\\n\\n      if (\\n        font.isType3Font &&\\n        (textState.fontSize \u003C= 1 || font.isCharBBox) &&\\n        !isArrayEqual(textState.fontMatrix, FONT_IDENTITY_MATRIX)\\n      ) {\\n        const glyphHeight = font.bbox[3] - font.bbox[1];\\n        if (glyphHeight > 0) {\\n          tsm[3] *= glyphHeight * textState.fontMatrix[3];\\n        }\\n      }\\n\\n      return Util.transform(\\n        textState.ctm,\\n        Util.transform(textState.textMatrix, tsm)\\n      );\\n    }\\n\\n    function ensureTextContentItem() {\\n      if (textContentItem.initialized) {\\n        return textContentItem;\\n      }\\n      const { font, loadedName } = textState;\\n      if (!seenStyles.has(loadedName)) {\\n        seenStyles.add(loadedName);\\n        textContent.styles[loadedName] = {\\n          fontFamily: font.fallbackName,\\n          ascent: font.ascent,\\n          descent: font.descent,\\n          vertical: font.vertical,\\n        };\\n        if (self.options.fontExtraProperties && font.systemFontInfo) {\\n          const style = textContent.styles[loadedName];\\n          style.fontSubstitution = font.systemFontInfo.css;\\n          style.fontSubstitutionLoadedName = font.systemFontInfo.loadedName;\\n        }\\n      }\\n      textContentItem.fontName = loadedName;\\n\\n      const trm = (textContentItem.transform = getCurrentTextTransform());\\n      if (!font.vertical) {\\n        textContentItem.width = textContentItem.totalWidth = 0;\\n        textContentItem.height = textContentItem.totalHeight = Math.hypot(\\n          trm[2],\\n          trm[3]\\n        );\\n        textContentItem.vertical = false;\\n      } else {\\n        textContentItem.width = textContentItem.totalWidth = Math.hypot(\\n          trm[0],\\n          trm[1]\\n        );\\n        textContentItem.height = textContentItem.totalHeight = 0;\\n        textContentItem.vertical = true;\\n      }\\n\\n      const scaleLineX = Math.hypot(\\n        textState.textLineMatrix[0],\\n        textState.textLineMatrix[1]\\n      );\\n      const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\\n      textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;\\n\\n      const { fontSize } = textState;\\n      textContentItem.trackingSpaceMin = fontSize * TRACKING_SPACE_FACTOR;\\n      textContentItem.notASpace = fontSize * NOT_A_SPACE_FACTOR;\\n      textContentItem.negativeSpaceMax = fontSize * NEGATIVE_SPACE_FACTOR;\\n      textContentItem.spaceInFlowMin = fontSize * SPACE_IN_FLOW_MIN_FACTOR;\\n      textContentItem.spaceInFlowMax = fontSize * SPACE_IN_FLOW_MAX_FACTOR;\\n      textContentItem.hasEOL = false;\\n\\n      textContentItem.initialized = true;\\n      return textContentItem;\\n    }\\n\\n    function updateAdvanceScale() {\\n      if (!textContentItem.initialized) {\\n        return;\\n      }\\n\\n      const scaleLineX = Math.hypot(\\n        textState.textLineMatrix[0],\\n        textState.textLineMatrix[1]\\n      );\\n      const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\\n      const scaleFactor = scaleCtmX * scaleLineX;\\n      if (scaleFactor === textContentItem.textAdvanceScale) {\\n        return;\\n      }\\n\\n      if (!textContentItem.vertical) {\\n        textContentItem.totalWidth +=\\n          textContentItem.width * textContentItem.textAdvanceScale;\\n        textContentItem.width = 0;\\n      } else {\\n        textContentItem.totalHeight +=\\n          textContentItem.height * textContentItem.textAdvanceScale;\\n        textContentItem.height = 0;\\n      }\\n\\n      textContentItem.textAdvanceScale = scaleFactor;\\n    }\\n\\n    function runBidiTransform(textChunk) {\\n      let text = textChunk.str.join(\\\"\\\");\\n      if (!disableNormalization) {\\n        text = normalizeUnicode(text);\\n      }\\n      const bidiResult = bidi(text, -1, textChunk.vertical);\\n      return {\\n        str: bidiResult.str,\\n        dir: bidiResult.dir,\\n        width: Math.abs(textChunk.totalWidth),\\n        height: Math.abs(textChunk.totalHeight),\\n        transform: textChunk.transform,\\n        fontName: textChunk.fontName,\\n        hasEOL: textChunk.hasEOL,\\n      };\\n    }\\n\\n    async function handleSetFont(fontName, fontRef) {\\n      const translated = await self.loadFont(fontName, fontRef, resources);\\n\\n      if (translated.font.isType3Font) {\\n        try {\\n          await translated.loadType3Data(self, resources, task);\\n        } catch {\\n          \u002F\u002F Ignore Type3-parsing errors, since we only use `loadType3Data`\\n          \u002F\u002F here to ensure that we'll always obtain a useful \u002FFontBBox.\\n        }\\n      }\\n\\n      textState.loadedName = translated.loadedName;\\n      textState.font = translated.font;\\n      textState.fontMatrix = translated.font.fontMatrix || FONT_IDENTITY_MATRIX;\\n    }\\n\\n    function applyInverseRotation(x, y, matrix) {\\n      const scale = Math.hypot(matrix[0], matrix[1]);\\n      return [\\n        (matrix[0] * x + matrix[1] * y) \u002F scale,\\n        (matrix[2] * x + matrix[3] * y) \u002F scale,\\n      ];\\n    }\\n\\n    function compareWithLastPosition(glyphWidth) {\\n      const currentTransform = getCurrentTextTransform();\\n      let posX = currentTransform[4];\\n      let posY = currentTransform[5];\\n\\n      \u002F\u002F Check if the glyph is in the viewbox.\\n      if (textState.font?.vertical) {\\n        if (\\n          posX \u003C viewBox[0] ||\\n          posX > viewBox[2] ||\\n          posY + glyphWidth \u003C viewBox[1] ||\\n          posY > viewBox[3]\\n        ) {\\n          return false;\\n        }\\n      } else if (\\n        posX + glyphWidth \u003C viewBox[0] ||\\n        posX > viewBox[2] ||\\n        posY \u003C viewBox[1] ||\\n        posY > viewBox[3]\\n      ) {\\n        return false;\\n      }\\n\\n      if (!textState.font || !textContentItem.prevTransform) {\\n        return true;\\n      }\\n\\n      let lastPosX = textContentItem.prevTransform[4];\\n      let lastPosY = textContentItem.prevTransform[5];\\n\\n      if (lastPosX === posX && lastPosY === posY) {\\n        return true;\\n      }\\n\\n      let rotate = -1;\\n      \u002F\u002F Take into account the rotation is the current transform.\\n      if (\\n        currentTransform[0] &&\\n        currentTransform[1] === 0 &&\\n        currentTransform[2] === 0\\n      ) {\\n        rotate = currentTransform[0] > 0 ? 0 : 180;\\n      } else if (\\n        currentTransform[1] &&\\n        currentTransform[0] === 0 &&\\n        currentTransform[3] === 0\\n      ) {\\n        rotate = currentTransform[1] > 0 ? 90 : 270;\\n      }\\n\\n      switch (rotate) {\\n        case 0:\\n          break;\\n        case 90:\\n          [posX, posY] = [posY, posX];\\n          [lastPosX, lastPosY] = [lastPosY, lastPosX];\\n          break;\\n        case 180:\\n          [posX, posY, lastPosX, lastPosY] = [\\n            -posX,\\n            -posY,\\n            -lastPosX,\\n            -lastPosY,\\n          ];\\n          break;\\n        case 270:\\n          [posX, posY] = [-posY, -posX];\\n          [lastPosX, lastPosY] = [-lastPosY, -lastPosX];\\n          break;\\n        default:\\n          \u002F\u002F This is not a 0, 90, 180, 270 rotation so:\\n          \u002F\u002F  - remove the scale factor from the matrix to get a rotation matrix\\n          \u002F\u002F  - apply the inverse (which is the transposed) to the positions\\n          \u002F\u002F and we can then compare positions of the glyphes to detect\\n          \u002F\u002F a whitespace.\\n          [posX, posY] = applyInverseRotation(posX, posY, currentTransform);\\n          [lastPosX, lastPosY] = applyInverseRotation(\\n            lastPosX,\\n            lastPosY,\\n            textContentItem.prevTransform\\n          );\\n      }\\n\\n      if (textState.font.vertical) {\\n        const advanceY = (lastPosY - posY) \u002F textContentItem.textAdvanceScale;\\n        const advanceX = posX - lastPosX;\\n\\n        \u002F\u002F When the total height of the current chunk is negative\\n        \u002F\u002F then we're writing from bottom to top.\\n        const textOrientation = Math.sign(textContentItem.height);\\n        if (advanceY \u003C textOrientation * textContentItem.negativeSpaceMax) {\\n          if (\\n            Math.abs(advanceX) >\\n            0.5 * textContentItem.width \u002F* not the same column *\u002F\\n          ) {\\n            appendEOL();\\n            return true;\\n          }\\n\\n          resetLastChars();\\n          flushTextContentItem();\\n          return true;\\n        }\\n\\n        if (Math.abs(advanceX) > textContentItem.width) {\\n          appendEOL();\\n          return true;\\n        }\\n\\n        if (advanceY \u003C= textOrientation * textContentItem.notASpace) {\\n          \u002F\u002F The real spacing between 2 consecutive chars is thin enough to be\\n          \u002F\u002F considered a non-space.\\n          resetLastChars();\\n        }\\n\\n        if (advanceY \u003C= textOrientation * textContentItem.trackingSpaceMin) {\\n          if (shouldAddWhitepsace()) {\\n            \u002F\u002F The space is very thin, hence it deserves to have its own span in\\n            \u002F\u002F order to avoid too much shift between the canvas and the text\\n            \u002F\u002F layer.\\n            resetLastChars();\\n            flushTextContentItem();\\n            pushWhitespace({ height: Math.abs(advanceY) });\\n          } else {\\n            textContentItem.height += advanceY;\\n          }\\n        } else if (\\n          !addFakeSpaces(\\n            advanceY,\\n            textContentItem.prevTransform,\\n            textOrientation\\n          )\\n        ) {\\n          if (textContentItem.str.length === 0) {\\n            resetLastChars();\\n            pushWhitespace({ height: Math.abs(advanceY) });\\n          } else {\\n            textContentItem.height += advanceY;\\n          }\\n        }\\n\\n        if (Math.abs(advanceX) > textContentItem.width * VERTICAL_SHIFT_RATIO) {\\n          flushTextContentItem();\\n        }\\n\\n        return true;\\n      }\\n\\n      const advanceX = (posX - lastPosX) \u002F textContentItem.textAdvanceScale;\\n      const advanceY = posY - lastPosY;\\n\\n      \u002F\u002F When the total width of the current chunk is negative\\n      \u002F\u002F then we're writing from right to left.\\n      const textOrientation = Math.sign(textContentItem.width);\\n      if (advanceX \u003C textOrientation * textContentItem.negativeSpaceMax) {\\n        if (\\n          Math.abs(advanceY) >\\n          0.5 * textContentItem.height \u002F* not the same line *\u002F\\n        ) {\\n          appendEOL();\\n          return true;\\n        }\\n\\n        \u002F\u002F We're moving back so in case the last char was a whitespace\\n        \u002F\u002F we cancel it: it doesn't make sense to insert it.\\n        resetLastChars();\\n        flushTextContentItem();\\n        return true;\\n      }\\n\\n      if (Math.abs(advanceY) > textContentItem.height) {\\n        appendEOL();\\n        return true;\\n      }\\n\\n      if (advanceX \u003C= textOrientation * textContentItem.notASpace) {\\n        \u002F\u002F The real spacing between 2 consecutive chars is thin enough to be\\n        \u002F\u002F considered a non-space.\\n        resetLastChars();\\n      }\\n\\n      if (advanceX \u003C= textOrientation * textContentItem.trackingSpaceMin) {\\n        if (shouldAddWhitepsace()) {\\n          \u002F\u002F The space is very thin, hence it deserves to have its own span in\\n          \u002F\u002F order to avoid too much shift between the canvas and the text\\n          \u002F\u002F layer.\\n          resetLastChars();\\n          flushTextContentItem();\\n          pushWhitespace({ width: Math.abs(advanceX) });\\n        } else {\\n          textContentItem.width += advanceX;\\n        }\\n      } else if (\\n        !addFakeSpaces(advanceX, textContentItem.prevTransform, textOrientation)\\n      ) {\\n        if (textContentItem.str.length === 0) {\\n          resetLastChars();\\n          pushWhitespace({ width: Math.abs(advanceX) });\\n        } else {\\n          textContentItem.width += advanceX;\\n        }\\n      }\\n\\n      if (Math.abs(advanceY) > textContentItem.height * VERTICAL_SHIFT_RATIO) {\\n        flushTextContentItem();\\n      }\\n\\n      return true;\\n    }\\n\\n    function buildTextContentItem({ chars, extraSpacing }) {\\n      const font = textState.font;\\n      if (!chars) {\\n        \u002F\u002F Just move according to the space we have.\\n        const charSpacing = textState.charSpacing + extraSpacing;\\n        if (charSpacing) {\\n          if (!font.vertical) {\\n            textState.translateTextMatrix(\\n              charSpacing * textState.textHScale,\\n              0\\n            );\\n          } else {\\n            textState.translateTextMatrix(0, -charSpacing);\\n          }\\n        }\\n\\n        if (keepWhiteSpace) {\\n          compareWithLastPosition(0);\\n        }\\n\\n        return;\\n      }\\n\\n      const glyphs = font.charsToGlyphs(chars);\\n      const scale = textState.fontMatrix[0] * textState.fontSize;\\n\\n      for (let i = 0, ii = glyphs.length; i \u003C ii; i++) {\\n        const glyph = glyphs[i];\\n        const { category } = glyph;\\n\\n        if (category.isInvisibleFormatMark) {\\n          continue;\\n        }\\n        let charSpacing =\\n          textState.charSpacing + (i + 1 === ii ? extraSpacing : 0);\\n\\n        let glyphWidth = glyph.width;\\n        if (font.vertical) {\\n          glyphWidth = glyph.vmetric ? glyph.vmetric[0] : -glyphWidth;\\n        }\\n        let scaledDim = glyphWidth * scale;\\n\\n        if (!keepWhiteSpace && category.isWhitespace) {\\n          \u002F\u002F Don't push a \\\" \\\" in the textContentItem\\n          \u002F\u002F (except when it's between two non-spaces chars),\\n          \u002F\u002F it will be done (if required) in next call to\\n          \u002F\u002F compareWithLastPosition.\\n          \u002F\u002F This way we can merge real spaces and spaces due to cursor moves.\\n          if (!font.vertical) {\\n            charSpacing += scaledDim + textState.wordSpacing;\\n            textState.translateTextMatrix(\\n              charSpacing * textState.textHScale,\\n              0\\n            );\\n          } else {\\n            charSpacing += -scaledDim + textState.wordSpacing;\\n            textState.translateTextMatrix(0, -charSpacing);\\n          }\\n          saveLastChar(\\\" \\\");\\n          continue;\\n        }\\n\\n        if (\\n          !category.isZeroWidthDiacritic &&\\n          !compareWithLastPosition(scaledDim)\\n        ) {\\n          \u002F\u002F The glyph is not in page so just skip it but move the cursor.\\n          if (!font.vertical) {\\n            textState.translateTextMatrix(scaledDim * textState.textHScale, 0);\\n          } else {\\n            textState.translateTextMatrix(0, scaledDim);\\n          }\\n          continue;\\n        }\\n\\n        \u002F\u002F Must be called after compareWithLastPosition because\\n        \u002F\u002F the textContentItem could have been flushed.\\n        const textChunk = ensureTextContentItem();\\n        if (category.isZeroWidthDiacritic) {\\n          scaledDim = 0;\\n        }\\n\\n        if (!font.vertical) {\\n          scaledDim *= textState.textHScale;\\n          textState.translateTextMatrix(scaledDim, 0);\\n          textChunk.width += scaledDim;\\n        } else {\\n          textState.translateTextMatrix(0, scaledDim);\\n          scaledDim = Math.abs(scaledDim);\\n          textChunk.height += scaledDim;\\n        }\\n\\n        if (scaledDim) {\\n          \u002F\u002F Save the position of the last visible character.\\n          textChunk.prevTransform = getCurrentTextTransform();\\n        }\\n\\n        const glyphUnicode = glyph.unicode;\\n        if (saveLastChar(glyphUnicode)) {\\n          \u002F\u002F The two last chars are a non-whitespace followed by a whitespace\\n          \u002F\u002F and then this non-whitespace, so we insert a whitespace here.\\n          \u002F\u002F Replaces all whitespaces with standard spaces (0x20), to avoid\\n          \u002F\u002F alignment issues between the textLayer and the canvas if the text\\n          \u002F\u002F contains e.g. tabs (fixes issue6612.pdf).\\n          textChunk.str.push(\\\" \\\");\\n        }\\n        textChunk.str.push(glyphUnicode);\\n\\n        if (charSpacing) {\\n          if (!font.vertical) {\\n            textState.translateTextMatrix(\\n              charSpacing * textState.textHScale,\\n              0\\n            );\\n          } else {\\n            textState.translateTextMatrix(0, -charSpacing);\\n          }\\n        }\\n      }\\n    }\\n\\n    function appendEOL() {\\n      resetLastChars();\\n      if (textContentItem.initialized) {\\n        textContentItem.hasEOL = true;\\n        flushTextContentItem();\\n      } else {\\n        textContent.items.push({\\n          str: \\\"\\\",\\n          dir: \\\"ltr\\\",\\n          width: 0,\\n          height: 0,\\n          transform: getCurrentTextTransform(),\\n          fontName: textState.loadedName,\\n          hasEOL: true,\\n        });\\n      }\\n    }\\n\\n    function addFakeSpaces(width, transf, textOrientation) {\\n      if (\\n        textOrientation * textContentItem.spaceInFlowMin \u003C= width &&\\n        width \u003C= textOrientation * textContentItem.spaceInFlowMax\\n      ) {\\n        if (textContentItem.initialized) {\\n          resetLastChars();\\n          textContentItem.str.push(\\\" \\\");\\n        }\\n        return false;\\n      }\\n\\n      const fontName = textContentItem.fontName;\\n\\n      let height = 0;\\n      if (textContentItem.vertical) {\\n        height = width;\\n        width = 0;\\n      }\\n\\n      flushTextContentItem();\\n      resetLastChars();\\n      pushWhitespace({\\n        width: Math.abs(width),\\n        height: Math.abs(height),\\n        transform: transf || getCurrentTextTransform(),\\n        fontName,\\n      });\\n\\n      return true;\\n    }\\n\\n    function flushTextContentItem() {\\n      if (!textContentItem.initialized || !textContentItem.str) {\\n        return;\\n      }\\n\\n      \u002F\u002F Do final text scaling.\\n      if (!textContentItem.vertical) {\\n        textContentItem.totalWidth +=\\n          textContentItem.width * textContentItem.textAdvanceScale;\\n      } else {\\n        textContentItem.totalHeight +=\\n          textContentItem.height * textContentItem.textAdvanceScale;\\n      }\\n\\n      textContent.items.push(runBidiTransform(textContentItem));\\n      textContentItem.initialized = false;\\n      textContentItem.str.length = 0;\\n    }\\n\\n    function enqueueChunk(batch = false) {\\n      const length = textContent.items.length;\\n      if (length === 0) {\\n        return;\\n      }\\n      if (batch && length \u003C TEXT_CHUNK_BATCH_SIZE) {\\n        return;\\n      }\\n      sink.enqueue(textContent, length);\\n      textContent.items = [];\\n      textContent.styles = Object.create(null);\\n    }\\n\\n    const timeSlotManager = new TimeSlotManager();\\n\\n    return new Promise(function promiseBody(resolve, reject) {\\n      const next = function (promise) {\\n        enqueueChunk(\u002F* batch = *\u002F true);\\n        Promise.all([promise, sink.ready]).then(function () {\\n          try {\\n            promiseBody(resolve, reject);\\n          } catch (ex) {\\n            reject(ex);\\n          }\\n        }, reject);\\n      };\\n      task.ensureNotTerminated();\\n      timeSlotManager.reset();\\n\\n      const operation = {};\\n      let stop,\\n        args = [];\\n      while (!(stop = timeSlotManager.check())) {\\n        \u002F\u002F The arguments parsed by read() are not used beyond this loop, so\\n        \u002F\u002F we can reuse the same array on every iteration, thus avoiding\\n        \u002F\u002F unnecessary allocations.\\n        args.length = 0;\\n        operation.args = args;\\n        if (!preprocessor.read(operation)) {\\n          break;\\n        }\\n\\n        const previousState = textState;\\n        textState = stateManager.state;\\n        const fn = operation.fn;\\n        args = operation.args;\\n\\n        switch (fn | 0) {\\n          case OPS.setFont:\\n            \u002F\u002F Optimization to ignore multiple identical Tf commands.\\n            var fontNameArg = args[0].name,\\n              fontSizeArg = args[1];\\n            if (\\n              textState.font &&\\n              fontNameArg === textState.fontName &&\\n              fontSizeArg === textState.fontSize\\n            ) {\\n              break;\\n            }\\n\\n            flushTextContentItem();\\n            textState.fontName = fontNameArg;\\n            textState.fontSize = fontSizeArg;\\n            next(handleSetFont(fontNameArg, null));\\n            return;\\n          case OPS.setTextRise:\\n            textState.textRise = args[0];\\n            break;\\n          case OPS.setHScale:\\n            textState.textHScale = args[0] \u002F 100;\\n            break;\\n          case OPS.setLeading:\\n            textState.leading = args[0];\\n            break;\\n          case OPS.moveText:\\n            textState.translateTextLineMatrix(args[0], args[1]);\\n            textState.textMatrix = textState.textLineMatrix.slice();\\n            break;\\n          case OPS.setLeadingMoveText:\\n            textState.leading = -args[1];\\n            textState.translateTextLineMatrix(args[0], args[1]);\\n            textState.textMatrix = textState.textLineMatrix.slice();\\n            break;\\n          case OPS.nextLine:\\n            textState.carriageReturn();\\n            break;\\n          case OPS.setTextMatrix:\\n            textState.setTextMatrix(\\n              args[0],\\n              args[1],\\n              args[2],\\n              args[3],\\n              args[4],\\n              args[5]\\n            );\\n            textState.setTextLineMatrix(\\n              args[0],\\n              args[1],\\n              args[2],\\n              args[3],\\n              args[4],\\n              args[5]\\n            );\\n            updateAdvanceScale();\\n            break;\\n          case OPS.setCharSpacing:\\n            textState.charSpacing = args[0];\\n            break;\\n          case OPS.setWordSpacing:\\n            textState.wordSpacing = args[0];\\n            break;\\n          case OPS.beginText:\\n            textState.textMatrix = IDENTITY_MATRIX.slice();\\n            textState.textLineMatrix = IDENTITY_MATRIX.slice();\\n            break;\\n          case OPS.showSpacedText:\\n            if (!stateManager.state.font) {\\n              self.ensureStateFont(stateManager.state);\\n              continue;\\n            }\\n\\n            const spaceFactor =\\n              ((textState.font.vertical ? 1 : -1) * textState.fontSize) \u002F 1000;\\n            const elements = args[0];\\n            for (let i = 0, ii = elements.length; i \u003C ii; i++) {\\n              const item = elements[i];\\n              if (typeof item === \\\"string\\\") {\\n                showSpacedTextBuffer.push(item);\\n              } else if (typeof item === \\\"number\\\" && item !== 0) {\\n                \u002F\u002F PDF Specification 5.3.2 states:\\n                \u002F\u002F The number is expressed in thousandths of a unit of text\\n                \u002F\u002F space.\\n                \u002F\u002F This amount is subtracted from the current horizontal or\\n                \u002F\u002F vertical coordinate, depending on the writing mode.\\n                \u002F\u002F In the default coordinate system, a positive adjustment\\n                \u002F\u002F has the effect of moving the next glyph painted either to\\n                \u002F\u002F the left or down by the given amount.\\n                const str = showSpacedTextBuffer.join(\\\"\\\");\\n                showSpacedTextBuffer.length = 0;\\n                buildTextContentItem({\\n                  chars: str,\\n                  extraSpacing: item * spaceFactor,\\n                });\\n              }\\n            }\\n\\n            if (showSpacedTextBuffer.length > 0) {\\n              const str = showSpacedTextBuffer.join(\\\"\\\");\\n              showSpacedTextBuffer.length = 0;\\n              buildTextContentItem({\\n                chars: str,\\n                extraSpacing: 0,\\n              });\\n            }\\n            break;\\n          case OPS.showText:\\n            if (!stateManager.state.font) {\\n              self.ensureStateFont(stateManager.state);\\n              continue;\\n            }\\n            buildTextContentItem({\\n              chars: args[0],\\n              extraSpacing: 0,\\n            });\\n            break;\\n          case OPS.nextLineShowText:\\n            if (!stateManager.state.font) {\\n              self.ensureStateFont(stateManager.state);\\n              continue;\\n            }\\n            textState.carriageReturn();\\n            buildTextContentItem({\\n              chars: args[0],\\n              extraSpacing: 0,\\n            });\\n            break;\\n          case OPS.nextLineSetSpacingShowText:\\n            if (!stateManager.state.font) {\\n              self.ensureStateFont(stateManager.state);\\n              continue;\\n            }\\n            textState.wordSpacing = args[0];\\n            textState.charSpacing = args[1];\\n            textState.carriageReturn();\\n            buildTextContentItem({\\n              chars: args[2],\\n              extraSpacing: 0,\\n            });\\n            break;\\n          case OPS.paintXObject:\\n            flushTextContentItem();\\n            if (!xobjs) {\\n              xobjs = resources.get(\\\"XObject\\\") || Dict.empty;\\n            }\\n\\n            var isValidName = args[0] instanceof Name;\\n            var name = args[0].name;\\n\\n            if (isValidName && emptyXObjectCache.getByName(name)) {\\n              break;\\n            }\\n\\n            next(\\n              new Promise(function (resolveXObject, rejectXObject) {\\n                if (!isValidName) {\\n                  throw new FormatError(\\\"XObject must be referred to by name.\\\");\\n                }\\n\\n                let xobj = xobjs.getRaw(name);\\n                if (xobj instanceof Ref) {\\n                  if (emptyXObjectCache.getByRef(xobj)) {\\n                    resolveXObject();\\n                    return;\\n                  }\\n\\n                  const globalImage = self.globalImageCache.getData(\\n                    xobj,\\n                    self.pageIndex\\n                  );\\n                  if (globalImage) {\\n                    resolveXObject();\\n                    return;\\n                  }\\n\\n                  xobj = xref.fetch(xobj);\\n                }\\n\\n                if (!(xobj instanceof BaseStream)) {\\n                  throw new FormatError(\\\"XObject should be a stream\\\");\\n                }\\n\\n                const type = xobj.dict.get(\\\"Subtype\\\");\\n                if (!(type instanceof Name)) {\\n                  throw new FormatError(\\\"XObject should have a Name subtype\\\");\\n                }\\n\\n                if (type.name !== \\\"Form\\\") {\\n                  emptyXObjectCache.set(name, xobj.dict.objId, true);\\n\\n                  resolveXObject();\\n                  return;\\n                }\\n\\n                \u002F\u002F Use a new `StateManager` to prevent incorrect positioning\\n                \u002F\u002F of textItems *after* the Form XObject, since errors in the\\n                \u002F\u002F data can otherwise prevent `restore` operators from\\n                \u002F\u002F executing.\\n                \u002F\u002F NOTE: Only an issue when `options.ignoreErrors === true`.\\n                const currentState = stateManager.state.clone();\\n                const xObjStateManager = new StateManager(currentState);\\n\\n                const matrix = lookupMatrix(xobj.dict.getArray(\\\"Matrix\\\"), null);\\n                if (matrix) {\\n                  xObjStateManager.transform(matrix);\\n                }\\n\\n                \u002F\u002F Enqueue the `textContent` chunk before parsing the \u002FForm\\n                \u002F\u002F XObject.\\n                enqueueChunk();\\n                const sinkWrapper = {\\n                  enqueueInvoked: false,\\n\\n                  enqueue(chunk, size) {\\n                    this.enqueueInvoked = true;\\n                    sink.enqueue(chunk, size);\\n                  },\\n\\n                  get desiredSize() {\\n                    return sink.desiredSize;\\n                  },\\n\\n                  get ready() {\\n                    return sink.ready;\\n                  },\\n                };\\n\\n                self\\n                  .getTextContent({\\n                    stream: xobj,\\n                    task,\\n                    resources: xobj.dict.get(\\\"Resources\\\") || resources,\\n                    stateManager: xObjStateManager,\\n                    includeMarkedContent,\\n                    sink: sinkWrapper,\\n                    seenStyles,\\n                    viewBox,\\n                    lang,\\n                    markedContentData,\\n                    disableNormalization,\\n                    keepWhiteSpace,\\n                  })\\n                  .then(function () {\\n                    if (!sinkWrapper.enqueueInvoked) {\\n                      emptyXObjectCache.set(name, xobj.dict.objId, true);\\n                    }\\n                    resolveXObject();\\n                  }, rejectXObject);\\n              }).catch(function (reason) {\\n                if (reason instanceof AbortException) {\\n                  return;\\n                }\\n                if (self.options.ignoreErrors) {\\n                  \u002F\u002F Error(s) in the XObject -- allow text-extraction to\\n                  \u002F\u002F continue.\\n                  warn(`getTextContent - ignoring XObject: \\\"${reason}\\\".`);\\n                  return;\\n                }\\n                throw reason;\\n              })\\n            );\\n            return;\\n          case OPS.setGState:\\n            isValidName = args[0] instanceof Name;\\n            name = args[0].name;\\n\\n            if (isValidName && emptyGStateCache.getByName(name)) {\\n              break;\\n            }\\n\\n            next(\\n              new Promise(function (resolveGState, rejectGState) {\\n                if (!isValidName) {\\n                  throw new FormatError(\\\"GState must be referred to by name.\\\");\\n                }\\n\\n                const extGState = resources.get(\\\"ExtGState\\\");\\n                if (!(extGState instanceof Dict)) {\\n                  throw new FormatError(\\\"ExtGState should be a dictionary.\\\");\\n                }\\n\\n                const gState = extGState.get(name);\\n                \u002F\u002F TODO: Attempt to lookup cached GStates by reference as well,\\n                \u002F\u002F       if and only if there are PDF documents where doing so\\n                \u002F\u002F       would significantly improve performance.\\n                if (!(gState instanceof Dict)) {\\n                  throw new FormatError(\\\"GState should be a dictionary.\\\");\\n                }\\n\\n                const gStateFont = gState.get(\\\"Font\\\");\\n                if (!gStateFont) {\\n                  emptyGStateCache.set(name, gState.objId, true);\\n\\n                  resolveGState();\\n                  return;\\n                }\\n                flushTextContentItem();\\n\\n                textState.fontName = null;\\n                textState.fontSize = gStateFont[1];\\n                handleSetFont(null, gStateFont[0]).then(\\n                  resolveGState,\\n                  rejectGState\\n                );\\n              }).catch(function (reason) {\\n                if (reason instanceof AbortException) {\\n                  return;\\n                }\\n                if (self.options.ignoreErrors) {\\n                  \u002F\u002F Error(s) in the ExtGState -- allow text-extraction to\\n                  \u002F\u002F continue.\\n                  warn(`getTextContent - ignoring ExtGState: \\\"${reason}\\\".`);\\n                  return;\\n                }\\n                throw reason;\\n              })\\n            );\\n            return;\\n          case OPS.beginMarkedContent:\\n            flushTextContentItem();\\n            if (includeMarkedContent) {\\n              markedContentData.level++;\\n\\n              textContent.items.push({\\n                type: \\\"beginMarkedContent\\\",\\n                tag: args[0] instanceof Name ? args[0].name : null,\\n              });\\n            }\\n            break;\\n          case OPS.beginMarkedContentProps:\\n            flushTextContentItem();\\n            if (includeMarkedContent) {\\n              markedContentData.level++;\\n\\n              let mcid = null;\\n              if (args[1] instanceof Dict) {\\n                mcid = args[1].get(\\\"MCID\\\");\\n              }\\n              textContent.items.push({\\n                type: \\\"beginMarkedContentProps\\\",\\n                id: Number.isInteger(mcid)\\n                  ? `${self.idFactory.getPageObjId()}_mc${mcid}`\\n                  : null,\\n                tag: args[0] instanceof Name ? args[0].name : null,\\n              });\\n            }\\n            break;\\n          case OPS.endMarkedContent:\\n            flushTextContentItem();\\n            if (includeMarkedContent) {\\n              if (markedContentData.level === 0) {\\n                \u002F\u002F Handle unbalanced beginMarkedContent\u002FendMarkedContent\\n                \u002F\u002F operators (fixes issue15629.pdf).\\n                break;\\n              }\\n              markedContentData.level--;\\n\\n              textContent.items.push({\\n                type: \\\"endMarkedContent\\\",\\n              });\\n            }\\n            break;\\n          case OPS.restore:\\n            if (\\n              previousState &&\\n              (previousState.font !== textState.font ||\\n                previousState.fontSize !== textState.fontSize ||\\n                previousState.fontName !== textState.fontName)\\n            ) {\\n              flushTextContentItem();\\n            }\\n            break;\\n        } \u002F\u002F switch\\n        if (textContent.items.length >= sink.desiredSize) {\\n          \u002F\u002F Wait for ready, if we reach highWaterMark.\\n          stop = true;\\n          break;\\n        }\\n      } \u002F\u002F while\\n      if (stop) {\\n        next(deferred);\\n        return;\\n      }\\n      flushTextContentItem();\\n      enqueueChunk();\\n      resolve();\\n    }).catch(reason => {\\n      if (reason instanceof AbortException) {\\n        return;\\n      }\\n      if (this.options.ignoreErrors) {\\n        \u002F\u002F Error(s) in the TextContent -- allow text-extraction to continue.\\n        warn(\\n          `getTextContent - ignoring errors during \\\"${task.name}\\\" ` +\\n            `task: \\\"${reason}\\\".`\\n        );\\n\\n        flushTextContentItem();\\n        enqueueChunk();\\n        return;\\n      }\\n      throw reason;\\n    });\\n  }\\n\\n  async extractDataStructures(dict, properties) {\\n    const xref = this.xref;\\n    let cidToGidBytes;\\n    \u002F\u002F 9.10.2\\n    const toUnicodePromise = this.readToUnicode(properties.toUnicode);\\n\\n    if (properties.composite) {\\n      \u002F\u002F CIDSystemInfo helps to match CID to glyphs\\n      const cidSystemInfo = dict.get(\\\"CIDSystemInfo\\\");\\n      if (cidSystemInfo instanceof Dict) {\\n        properties.cidSystemInfo = {\\n          registry: stringToPDFString(cidSystemInfo.get(\\\"Registry\\\")),\\n          ordering: stringToPDFString(cidSystemInfo.get(\\\"Ordering\\\")),\\n          supplement: cidSystemInfo.get(\\\"Supplement\\\"),\\n        };\\n      }\\n\\n      try {\\n        const cidToGidMap = dict.get(\\\"CIDToGIDMap\\\");\\n        if (cidToGidMap instanceof BaseStream) {\\n          cidToGidBytes = cidToGidMap.getBytes();\\n        }\\n      } catch (ex) {\\n        if (!this.options.ignoreErrors) {\\n          throw ex;\\n        }\\n        warn(`extractDataStructures - ignoring CIDToGIDMap data: \\\"${ex}\\\".`);\\n      }\\n    }\\n\\n    \u002F\u002F Based on 9.6.6 of the spec the encoding can come from multiple places\\n    \u002F\u002F and depends on the font type. The base encoding and differences are\\n    \u002F\u002F read here, but the encoding that is actually used is chosen during\\n    \u002F\u002F glyph mapping in the font.\\n    \u002F\u002F TODO: Loading the built in encoding in the font would allow the\\n    \u002F\u002F differences to be merged in here not require us to hold on to it.\\n    const differences = [];\\n    let baseEncodingName = null;\\n    let encoding;\\n    if (dict.has(\\\"Encoding\\\")) {\\n      encoding = dict.get(\\\"Encoding\\\");\\n      if (encoding instanceof Dict) {\\n        baseEncodingName = encoding.get(\\\"BaseEncoding\\\");\\n        baseEncodingName =\\n          baseEncodingName instanceof Name ? baseEncodingName.name : null;\\n        \u002F\u002F Load the differences between the base and original\\n        if (encoding.has(\\\"Differences\\\")) {\\n          const diffEncoding = encoding.get(\\\"Differences\\\");\\n          let index = 0;\\n          for (const entry of diffEncoding) {\\n            const data = xref.fetchIfRef(entry);\\n            if (typeof data === \\\"number\\\") {\\n              index = data;\\n            } else if (data instanceof Name) {\\n              differences[index++] = data.name;\\n            } else {\\n              throw new FormatError(\\n                `Invalid entry in 'Differences' array: ${data}`\\n              );\\n            }\\n          }\\n        }\\n      } else if (encoding instanceof Name) {\\n        baseEncodingName = encoding.name;\\n      } else {\\n        const msg = \\\"Encoding is not a Name nor a Dict\\\";\\n\\n        if (!this.options.ignoreErrors) {\\n          throw new FormatError(msg);\\n        }\\n        warn(msg);\\n      }\\n      \u002F\u002F According to table 114 if the encoding is a named encoding it must be\\n      \u002F\u002F one of these predefined encodings.\\n      if (\\n        baseEncodingName !== \\\"MacRomanEncoding\\\" &&\\n        baseEncodingName !== \\\"MacExpertEncoding\\\" &&\\n        baseEncodingName !== \\\"WinAnsiEncoding\\\"\\n      ) {\\n        baseEncodingName = null;\\n      }\\n    }\\n\\n    const nonEmbeddedFont = !properties.file || properties.isInternalFont,\\n      isSymbolsFontName = getSymbolsFonts()[properties.name];\\n    \u002F\u002F Ignore an incorrectly specified named encoding for non-embedded\\n    \u002F\u002F symbol fonts (fixes issue16464.pdf).\\n    if (baseEncodingName && nonEmbeddedFont && isSymbolsFontName) {\\n      baseEncodingName = null;\\n    }\\n\\n    if (baseEncodingName) {\\n      properties.defaultEncoding = getEncoding(baseEncodingName);\\n    } else {\\n      const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\\n      const isNonsymbolicFont = !!(properties.flags & FontFlags.Nonsymbolic);\\n      \u002F\u002F According to \\\"Table 114\\\" in section \\\"9.6.6.1 General\\\" (under\\n      \u002F\u002F \\\"9.6.6 Character Encoding\\\") of the PDF specification, a Nonsymbolic\\n      \u002F\u002F font should use the `StandardEncoding` if no encoding is specified.\\n      encoding = StandardEncoding;\\n      if (properties.type === \\\"TrueType\\\" && !isNonsymbolicFont) {\\n        encoding = WinAnsiEncoding;\\n      }\\n      \u002F\u002F The Symbolic attribute can be misused for regular fonts\\n      \u002F\u002F Heuristic: we have to check if the font is a standard one also\\n      if (isSymbolicFont || isSymbolsFontName) {\\n        encoding = MacRomanEncoding;\\n        if (nonEmbeddedFont) {\\n          if (\u002FSymbol\u002Fi.test(properties.name)) {\\n            encoding = SymbolSetEncoding;\\n          } else if (\u002FDingbats\u002Fi.test(properties.name)) {\\n            encoding = ZapfDingbatsEncoding;\\n          } else if (\u002FWingdings\u002Fi.test(properties.name)) {\\n            encoding = WinAnsiEncoding;\\n          }\\n        }\\n      }\\n      properties.defaultEncoding = encoding;\\n    }\\n\\n    properties.differences = differences;\\n    properties.baseEncodingName = baseEncodingName;\\n    properties.hasEncoding = !!baseEncodingName || differences.length > 0;\\n    properties.dict = dict;\\n\\n    properties.toUnicode = await toUnicodePromise;\\n\\n    const builtToUnicode = await this.buildToUnicode(properties);\\n    properties.toUnicode = builtToUnicode;\\n\\n    if (cidToGidBytes) {\\n      properties.cidToGidMap = this.readCidToGidMap(\\n        cidToGidBytes,\\n        builtToUnicode\\n      );\\n    }\\n    return properties;\\n  }\\n\\n  \u002F**\\n   * @returns {Array}\\n   * @private\\n   *\u002F\\n  _simpleFontToUnicode(properties, forceGlyphs = false) {\\n    assert(!properties.composite, \\\"Must be a simple font.\\\");\\n\\n    const toUnicode = [];\\n    const encoding = properties.defaultEncoding.slice();\\n    const baseEncodingName = properties.baseEncodingName;\\n    \u002F\u002F Merge in the differences array.\\n    const differences = properties.differences;\\n    for (const charcode in differences) {\\n      const glyphName = differences[charcode];\\n      if (glyphName === \\\".notdef\\\") {\\n        \u002F\u002F Skip .notdef to prevent rendering errors, e.g. boxes appearing\\n        \u002F\u002F where there should be spaces (fixes issue5256.pdf).\\n        continue;\\n      }\\n      encoding[charcode] = glyphName;\\n    }\\n    const glyphsUnicodeMap = getGlyphsUnicode();\\n    for (const charcode in encoding) {\\n      \u002F\u002F a) Map the character code to a character name.\\n      let glyphName = encoding[charcode];\\n      if (glyphName === \\\"\\\") {\\n        continue;\\n      }\\n      \u002F\u002F b) Look up the character name in the Adobe Glyph List (see the\\n      \u002F\u002F    Bibliography) to obtain the corresponding Unicode value.\\n      let unicode = glyphsUnicodeMap[glyphName];\\n      if (unicode !== undefined) {\\n        toUnicode[charcode] = String.fromCharCode(unicode);\\n        continue;\\n      }\\n      \u002F\u002F (undocumented) c) Few heuristics to recognize unknown glyphs\\n      \u002F\u002F NOTE: Adobe Reader does not do this step, but OSX Preview does\\n      let code = 0;\\n      switch (glyphName[0]) {\\n        case \\\"G\\\": \u002F\u002F Gxx glyph\\n          if (glyphName.length === 3) {\\n            code = parseInt(glyphName.substring(1), 16);\\n          }\\n          break;\\n        case \\\"g\\\": \u002F\u002F g00xx glyph\\n          if (glyphName.length === 5) {\\n            code = parseInt(glyphName.substring(1), 16);\\n          }\\n          break;\\n        case \\\"C\\\": \u002F\u002F Cdd{d} glyph\\n        case \\\"c\\\": \u002F\u002F cdd{d} glyph\\n          if (glyphName.length >= 3 && glyphName.length \u003C= 4) {\\n            const codeStr = glyphName.substring(1);\\n\\n            if (forceGlyphs) {\\n              code = parseInt(codeStr, 16);\\n              break;\\n            }\\n            \u002F\u002F Normally the Cdd{d}\u002Fcdd{d} glyphName format will contain\\n            \u002F\u002F regular, i.e. base 10, charCodes (see issue4550.pdf)...\\n            code = +codeStr;\\n\\n            \u002F\u002F ... however some PDF generators violate that assumption by\\n            \u002F\u002F containing glyph, i.e. base 16, codes instead.\\n            \u002F\u002F In that case we need to re-parse the *entire* encoding to\\n            \u002F\u002F prevent broken text-selection (fixes issue9655_reduced.pdf).\\n            if (Number.isNaN(code) && Number.isInteger(parseInt(codeStr, 16))) {\\n              return this._simpleFontToUnicode(\\n                properties,\\n                \u002F* forceGlyphs *\u002F true\\n              );\\n            }\\n          }\\n          break;\\n        case \\\"u\\\": \u002F\u002F 'uniXXXX'\u002F'uXXXX{XX}' glyphs\\n          unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\\n          if (unicode !== -1) {\\n            code = unicode;\\n          }\\n          break;\\n        default:\\n          \u002F\u002F Support (some) non-standard ligatures.\\n          switch (glyphName) {\\n            case \\\"f_h\\\":\\n            case \\\"f_t\\\":\\n            case \\\"T_h\\\":\\n              toUnicode[charcode] = glyphName.replaceAll(\\\"_\\\", \\\"\\\");\\n              continue;\\n          }\\n          break;\\n      }\\n      if (code > 0 && code \u003C= 0x10ffff && Number.isInteger(code)) {\\n        \u002F\u002F If `baseEncodingName` is one the predefined encodings, and `code`\\n        \u002F\u002F equals `charcode`, using the glyph defined in the baseEncoding\\n        \u002F\u002F seems to yield a better `toUnicode` mapping (fixes issue 5070).\\n        if (baseEncodingName && code === +charcode) {\\n          const baseEncoding = getEncoding(baseEncodingName);\\n          if (baseEncoding && (glyphName = baseEncoding[charcode])) {\\n            toUnicode[charcode] = String.fromCharCode(\\n              glyphsUnicodeMap[glyphName]\\n            );\\n            continue;\\n          }\\n        }\\n        toUnicode[charcode] = String.fromCodePoint(code);\\n      }\\n    }\\n    return toUnicode;\\n  }\\n\\n  \u002F**\\n   * Builds a char code to unicode map based on section 9.10 of the spec.\\n   * @param {Object} properties Font properties object.\\n   * @returns {Promise} A Promise that is resolved with a\\n   *   {ToUnicodeMap|IdentityToUnicodeMap} object.\\n   *\u002F\\n  async buildToUnicode(properties) {\\n    properties.hasIncludedToUnicodeMap = properties.toUnicode?.length > 0;\\n\\n    \u002F\u002F Section 9.10.2 Mapping Character Codes to Unicode Values\\n    if (properties.hasIncludedToUnicodeMap) {\\n      \u002F\u002F Some fonts contain incomplete ToUnicode data, causing issues with\\n      \u002F\u002F text-extraction. For simple fonts, containing encoding information,\\n      \u002F\u002F use a fallback ToUnicode map to improve this (fixes issue8229.pdf).\\n      if (!properties.composite && properties.hasEncoding) {\\n        properties.fallbackToUnicode = this._simpleFontToUnicode(properties);\\n      }\\n      return properties.toUnicode;\\n    }\\n\\n    \u002F\u002F According to the spec if the font is a simple font we should only map\\n    \u002F\u002F to unicode if the base encoding is MacRoman, MacExpert, or WinAnsi or\\n    \u002F\u002F the differences array only contains adobe standard or symbol set names,\\n    \u002F\u002F in pratice it seems better to always try to create a toUnicode map\\n    \u002F\u002F based of the default encoding.\\n    if (!properties.composite \u002F* is simple font *\u002F) {\\n      return new ToUnicodeMap(this._simpleFontToUnicode(properties));\\n    }\\n\\n    \u002F\u002F If the font is a composite font that uses one of the predefined CMaps\\n    \u002F\u002F listed in Table 118 (except Identity–H and Identity–V) or whose\\n    \u002F\u002F descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1, or\\n    \u002F\u002F Adobe-Korea1 character collection:\\n    if (\\n      properties.composite &&\\n      ((properties.cMap.builtInCMap &&\\n        !(properties.cMap instanceof IdentityCMap)) ||\\n        \u002F\u002F The font is supposed to have a CIDSystemInfo dictionary, but some\\n        \u002F\u002F PDFs don't include it (fixes issue 17689), hence the `?'.\\n        (properties.cidSystemInfo?.registry === \\\"Adobe\\\" &&\\n          (properties.cidSystemInfo.ordering === \\\"GB1\\\" ||\\n            properties.cidSystemInfo.ordering === \\\"CNS1\\\" ||\\n            properties.cidSystemInfo.ordering === \\\"Japan1\\\" ||\\n            properties.cidSystemInfo.ordering === \\\"Korea1\\\")))\\n    ) {\\n      \u002F\u002F Then:\\n      \u002F\u002F a) Map the character code to a character identifier (CID) according\\n      \u002F\u002F to the font’s CMap.\\n      \u002F\u002F b) Obtain the registry and ordering of the character collection used\\n      \u002F\u002F by the font’s CMap (for example, Adobe and Japan1) from its\\n      \u002F\u002F CIDSystemInfo dictionary.\\n      const { registry, ordering } = properties.cidSystemInfo;\\n      \u002F\u002F c) Construct a second CMap name by concatenating the registry and\\n      \u002F\u002F ordering obtained in step (b) in the format registry–ordering–UCS2\\n      \u002F\u002F (for example, Adobe–Japan1–UCS2).\\n      const ucs2CMapName = Name.get(`${registry}-${ordering}-UCS2`);\\n      \u002F\u002F d) Obtain the CMap with the name constructed in step (c) (available\\n      \u002F\u002F from the ASN Web site; see the Bibliography).\\n      const ucs2CMap = await CMapFactory.create({\\n        encoding: ucs2CMapName,\\n        fetchBuiltInCMap: this._fetchBuiltInCMapBound,\\n        useCMap: null,\\n      });\\n      const toUnicode = [],\\n        buf = [];\\n      properties.cMap.forEach(function (charcode, cid) {\\n        if (cid > 0xffff) {\\n          throw new FormatError(\\\"Max size of CID is 65,535\\\");\\n        }\\n        \u002F\u002F e) Map the CID obtained in step (a) according to the CMap\\n        \u002F\u002F obtained in step (d), producing a Unicode value.\\n        const ucs2 = ucs2CMap.lookup(cid);\\n        if (ucs2) {\\n          buf.length = 0;\\n          \u002F\u002F Support multi-byte entries (fixes issue16176.pdf).\\n          for (let i = 0, ii = ucs2.length; i \u003C ii; i += 2) {\\n            buf.push((ucs2.charCodeAt(i) \u003C\u003C 8) + ucs2.charCodeAt(i + 1));\\n          }\\n          toUnicode[charcode] = String.fromCharCode(...buf);\\n        }\\n      });\\n      return new ToUnicodeMap(toUnicode);\\n    }\\n\\n    \u002F\u002F The viewer's choice, just use an identity map.\\n    return new IdentityToUnicodeMap(properties.firstChar, properties.lastChar);\\n  }\\n\\n  async readToUnicode(cmapObj) {\\n    if (!cmapObj) {\\n      return null;\\n    }\\n    if (cmapObj instanceof Name) {\\n      const cmap = await CMapFactory.create({\\n        encoding: cmapObj,\\n        fetchBuiltInCMap: this._fetchBuiltInCMapBound,\\n        useCMap: null,\\n      });\\n\\n      if (cmap instanceof IdentityCMap) {\\n        return new IdentityToUnicodeMap(0, 0xffff);\\n      }\\n      return new ToUnicodeMap(cmap.getMap());\\n    }\\n    if (cmapObj instanceof BaseStream) {\\n      try {\\n        const cmap = await CMapFactory.create({\\n          encoding: cmapObj,\\n          fetchBuiltInCMap: this._fetchBuiltInCMapBound,\\n          useCMap: null,\\n        });\\n\\n        if (cmap instanceof IdentityCMap) {\\n          return new IdentityToUnicodeMap(0, 0xffff);\\n        }\\n        const map = new Array(cmap.length);\\n        \u002F\u002F Convert UTF-16BE\\n        \u002F\u002F NOTE: cmap can be a sparse array, so use forEach instead of\\n        \u002F\u002F `for(;;)` to iterate over all keys.\\n        cmap.forEach(function (charCode, token) {\\n          \u002F\u002F Some cmaps contain *only* CID characters (fixes issue9367.pdf).\\n          if (typeof token === \\\"number\\\") {\\n            map[charCode] = String.fromCodePoint(token);\\n            return;\\n          }\\n          const str = [];\\n          for (let k = 0; k \u003C token.length; k += 2) {\\n            const w1 = (token.charCodeAt(k) \u003C\u003C 8) | token.charCodeAt(k + 1);\\n            if ((w1 & 0xf800) !== 0xd800) {\\n              \u002F\u002F w1 \u003C 0xD800 || w1 > 0xDFFF\\n              str.push(w1);\\n              continue;\\n            }\\n            k += 2;\\n            const w2 = (token.charCodeAt(k) \u003C\u003C 8) | token.charCodeAt(k + 1);\\n            str.push(((w1 & 0x3ff) \u003C\u003C 10) + (w2 & 0x3ff) + 0x10000);\\n          }\\n          map[charCode] = String.fromCodePoint(...str);\\n        });\\n        return new ToUnicodeMap(map);\\n      } catch (reason) {\\n        if (reason instanceof AbortException) {\\n          return null;\\n        }\\n        if (this.options.ignoreErrors) {\\n          warn(`readToUnicode - ignoring ToUnicode data: \\\"${reason}\\\".`);\\n          return null;\\n        }\\n        throw reason;\\n      }\\n    }\\n    return null;\\n  }\\n\\n  readCidToGidMap(glyphsData, toUnicode) {\\n    \u002F\u002F Extract the encoding from the CIDToGIDMap\\n\\n    \u002F\u002F Set encoding 0 to later verify the font has an encoding\\n    const result = [];\\n    for (let j = 0, jj = glyphsData.length; j \u003C jj; j++) {\\n      const glyphID = (glyphsData[j++] \u003C\u003C 8) | glyphsData[j];\\n      const code = j >> 1;\\n      if (glyphID === 0 && !toUnicode.has(code)) {\\n        continue;\\n      }\\n      result[code] = glyphID;\\n    }\\n    return result;\\n  }\\n\\n  extractWidths(dict, descriptor, properties) {\\n    const xref = this.xref;\\n    let glyphsWidths = [];\\n    let defaultWidth = 0;\\n    const glyphsVMetrics = [];\\n    let defaultVMetrics;\\n    if (properties.composite) {\\n      const dw = dict.get(\\\"DW\\\");\\n      defaultWidth = Number.isInteger(dw) ? dw : 1000;\\n\\n      const widths = dict.get(\\\"W\\\");\\n      if (Array.isArray(widths)) {\\n        for (let i = 0, ii = widths.length; i \u003C ii; i++) {\\n          let start = xref.fetchIfRef(widths[i++]);\\n          if (!Number.isInteger(start)) {\\n            break; \u002F\u002F Invalid \u002FW data.\\n          }\\n          const code = xref.fetchIfRef(widths[i]);\\n\\n          if (Array.isArray(code)) {\\n            for (const c of code) {\\n              const width = xref.fetchIfRef(c);\\n              if (typeof width === \\\"number\\\") {\\n                glyphsWidths[start] = width;\\n              }\\n              start++;\\n            }\\n          } else if (Number.isInteger(code)) {\\n            const width = xref.fetchIfRef(widths[++i]);\\n            if (typeof width !== \\\"number\\\") {\\n              continue;\\n            }\\n            for (let j = start; j \u003C= code; j++) {\\n              glyphsWidths[j] = width;\\n            }\\n          } else {\\n            break; \u002F\u002F Invalid \u002FW data.\\n          }\\n        }\\n      }\\n\\n      if (properties.vertical) {\\n        const dw2 = dict.getArray(\\\"DW2\\\");\\n        let vmetrics = isNumberArray(dw2, 2) ? dw2 : [880, -1000];\\n        defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];\\n        vmetrics = dict.get(\\\"W2\\\");\\n        if (Array.isArray(vmetrics)) {\\n          for (let i = 0, ii = vmetrics.length; i \u003C ii; i++) {\\n            let start = xref.fetchIfRef(vmetrics[i++]);\\n            if (!Number.isInteger(start)) {\\n              break; \u002F\u002F Invalid \u002FW2 data.\\n            }\\n            const code = xref.fetchIfRef(vmetrics[i]);\\n\\n            if (Array.isArray(code)) {\\n              for (let j = 0, jj = code.length; j \u003C jj; j++) {\\n                const vmetric = [\\n                  xref.fetchIfRef(code[j++]),\\n                  xref.fetchIfRef(code[j++]),\\n                  xref.fetchIfRef(code[j]),\\n                ];\\n                if (isNumberArray(vmetric, null)) {\\n                  glyphsVMetrics[start] = vmetric;\\n                }\\n                start++;\\n              }\\n            } else if (Number.isInteger(code)) {\\n              const vmetric = [\\n                xref.fetchIfRef(vmetrics[++i]),\\n                xref.fetchIfRef(vmetrics[++i]),\\n                xref.fetchIfRef(vmetrics[++i]),\\n              ];\\n              if (!isNumberArray(vmetric, null)) {\\n                continue;\\n              }\\n              for (let j = start; j \u003C= code; j++) {\\n                glyphsVMetrics[j] = vmetric;\\n              }\\n            } else {\\n              break; \u002F\u002F Invalid \u002FW2 data.\\n            }\\n          }\\n        }\\n      }\\n    } else {\\n      const widths = dict.get(\\\"Widths\\\");\\n      if (Array.isArray(widths)) {\\n        let j = properties.firstChar;\\n        for (const w of widths) {\\n          const width = xref.fetchIfRef(w);\\n          if (typeof width === \\\"number\\\") {\\n            glyphsWidths[j] = width;\\n          }\\n          j++;\\n        }\\n        const missingWidth = descriptor.get(\\\"MissingWidth\\\");\\n        defaultWidth = typeof missingWidth === \\\"number\\\" ? missingWidth : 0;\\n      } else {\\n        \u002F\u002F Trying get the BaseFont metrics (see comment above).\\n        const baseFontName = dict.get(\\\"BaseFont\\\");\\n        if (baseFontName instanceof Name) {\\n          const metrics = this.getBaseFontMetrics(baseFontName.name);\\n\\n          glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties);\\n          defaultWidth = metrics.defaultWidth;\\n        }\\n      }\\n    }\\n\\n    \u002F\u002F Heuristic: detection of monospace font by checking all non-zero widths\\n    let isMonospace = true;\\n    let firstWidth = defaultWidth;\\n    for (const glyph in glyphsWidths) {\\n      const glyphWidth = glyphsWidths[glyph];\\n      if (!glyphWidth) {\\n        continue;\\n      }\\n      if (!firstWidth) {\\n        firstWidth = glyphWidth;\\n        continue;\\n      }\\n      if (firstWidth !== glyphWidth) {\\n        isMonospace = false;\\n        break;\\n      }\\n    }\\n    if (isMonospace) {\\n      properties.flags |= FontFlags.FixedPitch;\\n    } else {\\n      \u002F\u002F Clear the flag.\\n      properties.flags &= ~FontFlags.FixedPitch;\\n    }\\n\\n    properties.defaultWidth = defaultWidth;\\n    properties.widths = glyphsWidths;\\n    properties.defaultVMetrics = defaultVMetrics;\\n    properties.vmetrics = glyphsVMetrics;\\n  }\\n\\n  isSerifFont(baseFontName) {\\n    \u002F\u002F Simulating descriptor flags attribute\\n    const fontNameWoStyle = baseFontName.split(\\\"-\\\", 1)[0];\\n    return (\\n      fontNameWoStyle in getSerifFonts() || \u002Fserif\u002Fgi.test(fontNameWoStyle)\\n    );\\n  }\\n\\n  getBaseFontMetrics(name) {\\n    let defaultWidth = 0;\\n    let widths = Object.create(null);\\n    let monospace = false;\\n    const stdFontMap = getStdFontMap();\\n    let lookupName = stdFontMap[name] || name;\\n    const Metrics = getMetrics();\\n\\n    if (!(lookupName in Metrics)) {\\n      \u002F\u002F Use default fonts for looking up font metrics if the passed\\n      \u002F\u002F font is not a base font\\n      lookupName = this.isSerifFont(name) ? \\\"Times-Roman\\\" : \\\"Helvetica\\\";\\n    }\\n    const glyphWidths = Metrics[lookupName];\\n\\n    if (typeof glyphWidths === \\\"number\\\") {\\n      defaultWidth = glyphWidths;\\n      monospace = true;\\n    } else {\\n      widths = glyphWidths(); \u002F\u002F expand lazy widths array\\n    }\\n\\n    return {\\n      defaultWidth,\\n      monospace,\\n      widths,\\n    };\\n  }\\n\\n  buildCharCodeToWidth(widthsByGlyphName, properties) {\\n    const widths = Object.create(null);\\n    const differences = properties.differences;\\n    const encoding = properties.defaultEncoding;\\n    for (let charCode = 0; charCode \u003C 256; charCode++) {\\n      if (charCode in differences && widthsByGlyphName[differences[charCode]]) {\\n        widths[charCode] = widthsByGlyphName[differences[charCode]];\\n        continue;\\n      }\\n      if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {\\n        widths[charCode] = widthsByGlyphName[encoding[charCode]];\\n        continue;\\n      }\\n    }\\n    return widths;\\n  }\\n\\n  preEvaluateFont(dict) {\\n    const baseDict = dict;\\n    let type = dict.get(\\\"Subtype\\\");\\n    if (!(type instanceof Name)) {\\n      throw new FormatError(\\\"invalid font Subtype\\\");\\n    }\\n\\n    let composite = false;\\n    let hash;\\n    if (type.name === \\\"Type0\\\") {\\n      \u002F\u002F If font is a composite\\n      \u002F\u002F  - get the descendant font\\n      \u002F\u002F  - set the type according to the descendant font\\n      \u002F\u002F  - get the FontDescriptor from the descendant font\\n      const df = dict.get(\\\"DescendantFonts\\\");\\n      if (!df) {\\n        throw new FormatError(\\\"Descendant fonts are not specified\\\");\\n      }\\n      dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;\\n\\n      if (!(dict instanceof Dict)) {\\n        throw new FormatError(\\\"Descendant font is not a dictionary.\\\");\\n      }\\n      type = dict.get(\\\"Subtype\\\");\\n      if (!(type instanceof Name)) {\\n        throw new FormatError(\\\"invalid font Subtype\\\");\\n      }\\n      composite = true;\\n    }\\n\\n    let firstChar = dict.get(\\\"FirstChar\\\");\\n    if (!Number.isInteger(firstChar)) {\\n      firstChar = 0;\\n    }\\n    let lastChar = dict.get(\\\"LastChar\\\");\\n    if (!Number.isInteger(lastChar)) {\\n      lastChar = composite ? 0xffff : 0xff;\\n    }\\n    const descriptor = dict.get(\\\"FontDescriptor\\\");\\n    const toUnicode = dict.get(\\\"ToUnicode\\\") || baseDict.get(\\\"ToUnicode\\\");\\n\\n    if (descriptor) {\\n      hash = new MurmurHash3_64();\\n\\n      const encoding = baseDict.getRaw(\\\"Encoding\\\");\\n      if (encoding instanceof Name) {\\n        hash.update(encoding.name);\\n      } else if (encoding instanceof Ref) {\\n        hash.update(encoding.toString());\\n      } else if (encoding instanceof Dict) {\\n        for (const entry of encoding.getRawValues()) {\\n          if (entry instanceof Name) {\\n            hash.update(entry.name);\\n          } else if (entry instanceof Ref) {\\n            hash.update(entry.toString());\\n          } else if (Array.isArray(entry)) {\\n            \u002F\u002F 'Differences' array (fixes bug1157493.pdf).\\n            const diffLength = entry.length,\\n              diffBuf = new Array(diffLength);\\n\\n            for (let j = 0; j \u003C diffLength; j++) {\\n              const diffEntry = entry[j];\\n              if (diffEntry instanceof Name) {\\n                diffBuf[j] = diffEntry.name;\\n              } else if (\\n                typeof diffEntry === \\\"number\\\" ||\\n                diffEntry instanceof Ref\\n              ) {\\n                diffBuf[j] = diffEntry.toString();\\n              }\\n            }\\n            hash.update(diffBuf.join());\\n          }\\n        }\\n      }\\n\\n      hash.update(`${firstChar}-${lastChar}`); \u002F\u002F Fixes issue10665_reduced.pdf\\n\\n      if (toUnicode instanceof BaseStream) {\\n        const stream = toUnicode.str || toUnicode;\\n        const uint8array = stream.buffer\\n          ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength)\\n          : new Uint8Array(\\n              stream.bytes.buffer,\\n              stream.start,\\n              stream.end - stream.start\\n            );\\n        hash.update(uint8array);\\n      } else if (toUnicode instanceof Name) {\\n        hash.update(toUnicode.name);\\n      }\\n\\n      const widths = dict.get(\\\"Widths\\\") || baseDict.get(\\\"Widths\\\");\\n      if (Array.isArray(widths)) {\\n        const widthsBuf = [];\\n        for (const entry of widths) {\\n          if (typeof entry === \\\"number\\\" || entry instanceof Ref) {\\n            widthsBuf.push(entry.toString());\\n          }\\n        }\\n        hash.update(widthsBuf.join());\\n      }\\n\\n      if (composite) {\\n        hash.update(\\\"compositeFont\\\");\\n\\n        const compositeWidths = dict.get(\\\"W\\\") || baseDict.get(\\\"W\\\");\\n        if (Array.isArray(compositeWidths)) {\\n          const widthsBuf = [];\\n          for (const entry of compositeWidths) {\\n            if (typeof entry === \\\"number\\\" || entry instanceof Ref) {\\n              widthsBuf.push(entry.toString());\\n            } else if (Array.isArray(entry)) {\\n              const subWidthsBuf = [];\\n              for (const element of entry) {\\n                if (typeof element === \\\"number\\\" || element instanceof Ref) {\\n                  subWidthsBuf.push(element.toString());\\n                }\\n              }\\n              widthsBuf.push(`[${subWidthsBuf.join()}]`);\\n            }\\n          }\\n          hash.update(widthsBuf.join());\\n        }\\n\\n        const cidToGidMap =\\n          dict.getRaw(\\\"CIDToGIDMap\\\") || baseDict.getRaw(\\\"CIDToGIDMap\\\");\\n        if (cidToGidMap instanceof Name) {\\n          hash.update(cidToGidMap.name);\\n        } else if (cidToGidMap instanceof Ref) {\\n          hash.update(cidToGidMap.toString());\\n        } else if (cidToGidMap instanceof BaseStream) {\\n          hash.update(cidToGidMap.peekBytes());\\n        }\\n      }\\n    }\\n\\n    return {\\n      descriptor,\\n      dict,\\n      baseDict,\\n      composite,\\n      type: type.name,\\n      firstChar,\\n      lastChar,\\n      toUnicode,\\n      hash: hash ? hash.hexdigest() : \\\"\\\",\\n    };\\n  }\\n\\n  async translateFont({\\n    descriptor,\\n    dict,\\n    baseDict,\\n    composite,\\n    type,\\n    firstChar,\\n    lastChar,\\n    toUnicode,\\n    cssFontInfo,\\n  }) {\\n    const isType3Font = type === \\\"Type3\\\";\\n\\n    if (!descriptor) {\\n      if (isType3Font) {\\n        const bbox = lookupNormalRect(dict.getArray(\\\"FontBBox\\\"), [0, 0, 0, 0]);\\n        \u002F\u002F FontDescriptor is only required for Type3 fonts when the document\\n        \u002F\u002F is a tagged pdf. Create a barbebones one to get by.\\n        descriptor = new Dict(null);\\n        descriptor.set(\\\"FontName\\\", Name.get(type));\\n        descriptor.set(\\\"FontBBox\\\", bbox);\\n      } else {\\n        \u002F\u002F Before PDF 1.5 if the font was one of the base 14 fonts, having a\\n        \u002F\u002F FontDescriptor was not required.\\n        \u002F\u002F This case is here for compatibility.\\n        let baseFontName = dict.get(\\\"BaseFont\\\");\\n        if (!(baseFontName instanceof Name)) {\\n          throw new FormatError(\\\"Base font is not specified\\\");\\n        }\\n\\n        \u002F\u002F Using base font name as a font name.\\n        baseFontName = baseFontName.name.replaceAll(\u002F[,_]\u002Fg, \\\"-\\\");\\n        const metrics = this.getBaseFontMetrics(baseFontName);\\n\\n        \u002F\u002F Simulating descriptor flags attribute\\n        const fontNameWoStyle = baseFontName.split(\\\"-\\\", 1)[0];\\n        const flags =\\n          (this.isSerifFont(fontNameWoStyle) ? FontFlags.Serif : 0) |\\n          (metrics.monospace ? FontFlags.FixedPitch : 0) |\\n          (getSymbolsFonts()[fontNameWoStyle]\\n            ? FontFlags.Symbolic\\n            : FontFlags.Nonsymbolic);\\n\\n        const properties = {\\n          type,\\n          name: baseFontName,\\n          loadedName: baseDict.loadedName,\\n          systemFontInfo: null,\\n          widths: metrics.widths,\\n          defaultWidth: metrics.defaultWidth,\\n          isSimulatedFlags: true,\\n          flags,\\n          firstChar,\\n          lastChar,\\n          toUnicode,\\n          xHeight: 0,\\n          capHeight: 0,\\n          italicAngle: 0,\\n          isType3Font,\\n        };\\n        const widths = dict.get(\\\"Widths\\\");\\n\\n        const standardFontName = getStandardFontName(baseFontName);\\n        let file = null;\\n        if (standardFontName) {\\n          file = await this.fetchStandardFontData(standardFontName);\\n          properties.isInternalFont = !!file;\\n        }\\n        if (!properties.isInternalFont && this.options.useSystemFonts) {\\n          properties.systemFontInfo = getFontSubstitution(\\n            this.systemFontCache,\\n            this.idFactory,\\n            this.options.standardFontDataUrl,\\n            baseFontName,\\n            standardFontName,\\n            type\\n          );\\n        }\\n\\n        const newProperties = await this.extractDataStructures(\\n          dict,\\n          properties\\n        );\\n        if (Array.isArray(widths)) {\\n          const glyphWidths = [];\\n          let j = firstChar;\\n          for (const w of widths) {\\n            const width = this.xref.fetchIfRef(w);\\n            if (typeof width === \\\"number\\\") {\\n              glyphWidths[j] = width;\\n            }\\n            j++;\\n          }\\n          newProperties.widths = glyphWidths;\\n        } else {\\n          newProperties.widths = this.buildCharCodeToWidth(\\n            metrics.widths,\\n            newProperties\\n          );\\n        }\\n        return new Font(baseFontName, file, newProperties);\\n      }\\n    }\\n\\n    \u002F\u002F According to the spec if 'FontDescriptor' is declared, 'FirstChar',\\n    \u002F\u002F 'LastChar' and 'Widths' should exist too, but some PDF encoders seem\\n    \u002F\u002F to ignore this rule when a variant of a standard font is used.\\n    \u002F\u002F TODO Fill the width array depending on which of the base font this is\\n    \u002F\u002F a variant.\\n\\n    let fontName = descriptor.get(\\\"FontName\\\");\\n    let baseFont = dict.get(\\\"BaseFont\\\");\\n    \u002F\u002F Some bad PDFs have a string as the font name.\\n    if (typeof fontName === \\\"string\\\") {\\n      fontName = Name.get(fontName);\\n    }\\n    if (typeof baseFont === \\\"string\\\") {\\n      baseFont = Name.get(baseFont);\\n    }\\n\\n    const fontNameStr = fontName?.name;\\n    const baseFontStr = baseFont?.name;\\n    if (!isType3Font && fontNameStr !== baseFontStr) {\\n      info(\\n        `The FontDescriptor's FontName is \\\"${fontNameStr}\\\" but ` +\\n          `should be the same as the Font's BaseFont \\\"${baseFontStr}\\\".`\\n      );\\n      \u002F\u002F - Workaround for cases where e.g. fontNameStr = 'Arial' and\\n      \u002F\u002F   baseFontStr = 'Arial,Bold' (needed when no font file is embedded).\\n      \u002F\u002F\\n      \u002F\u002F - Workaround for cases where e.g. fontNameStr = 'wg09np' and\\n      \u002F\u002F   baseFontStr = 'Wingdings-Regular' (fixes issue7454.pdf).\\n      if (\\n        fontNameStr &&\\n        baseFontStr &&\\n        (baseFontStr.startsWith(fontNameStr) ||\\n          (!isKnownFontName(fontNameStr) && isKnownFontName(baseFontStr)))\\n      ) {\\n        fontName = null;\\n      }\\n    }\\n    fontName ||= baseFont;\\n\\n    if (!(fontName instanceof Name)) {\\n      throw new FormatError(\\\"invalid font name\\\");\\n    }\\n\\n    let fontFile, subtype, length1, length2, length3;\\n    try {\\n      fontFile = descriptor.get(\\\"FontFile\\\", \\\"FontFile2\\\", \\\"FontFile3\\\");\\n    } catch (ex) {\\n      if (!this.options.ignoreErrors) {\\n        throw ex;\\n      }\\n      warn(`translateFont - fetching \\\"${fontName.name}\\\" font file: \\\"${ex}\\\".`);\\n      fontFile = new NullStream();\\n    }\\n    let isInternalFont = false;\\n    let glyphScaleFactors = null;\\n    let systemFontInfo = null;\\n    if (fontFile) {\\n      if (fontFile.dict) {\\n        const subtypeEntry = fontFile.dict.get(\\\"Subtype\\\");\\n        if (subtypeEntry instanceof Name) {\\n          subtype = subtypeEntry.name;\\n        }\\n        length1 = fontFile.dict.get(\\\"Length1\\\");\\n        length2 = fontFile.dict.get(\\\"Length2\\\");\\n        length3 = fontFile.dict.get(\\\"Length3\\\");\\n      }\\n    } else if (cssFontInfo) {\\n      \u002F\u002F We've a missing XFA font.\\n      const standardFontName = getXfaFontName(fontName.name);\\n      if (standardFontName) {\\n        cssFontInfo.fontFamily = `${cssFontInfo.fontFamily}-PdfJS-XFA`;\\n        cssFontInfo.metrics = standardFontName.metrics || null;\\n        glyphScaleFactors = standardFontName.factors || null;\\n        fontFile = await this.fetchStandardFontData(standardFontName.name);\\n        isInternalFont = !!fontFile;\\n\\n        \u002F\u002F We're using a substitution font but for example widths (if any)\\n        \u002F\u002F are related to the glyph positions in the font.\\n        \u002F\u002F So we overwrite everything here to be sure that widths are\\n        \u002F\u002F correct.\\n        baseDict = dict = getXfaFontDict(fontName.name);\\n        composite = true;\\n      }\\n    } else if (!isType3Font) {\\n      const standardFontName = getStandardFontName(fontName.name);\\n      if (standardFontName) {\\n        fontFile = await this.fetchStandardFontData(standardFontName);\\n        isInternalFont = !!fontFile;\\n      }\\n      if (!isInternalFont && this.options.useSystemFonts) {\\n        systemFontInfo = getFontSubstitution(\\n          this.systemFontCache,\\n          this.idFactory,\\n          this.options.standardFontDataUrl,\\n          fontName.name,\\n          standardFontName,\\n          type\\n        );\\n      }\\n    }\\n\\n    const fontMatrix = lookupMatrix(\\n      dict.getArray(\\\"FontMatrix\\\"),\\n      FONT_IDENTITY_MATRIX\\n    );\\n    const bbox = lookupNormalRect(\\n      descriptor.getArray(\\\"FontBBox\\\") || dict.getArray(\\\"FontBBox\\\"),\\n      undefined\\n    );\\n    let ascent = descriptor.get(\\\"Ascent\\\");\\n    if (typeof ascent !== \\\"number\\\") {\\n      ascent = undefined;\\n    }\\n    let descent = descriptor.get(\\\"Descent\\\");\\n    if (typeof descent !== \\\"number\\\") {\\n      descent = undefined;\\n    }\\n    let xHeight = descriptor.get(\\\"XHeight\\\");\\n    if (typeof xHeight !== \\\"number\\\") {\\n      xHeight = 0;\\n    }\\n    let capHeight = descriptor.get(\\\"CapHeight\\\");\\n    if (typeof capHeight !== \\\"number\\\") {\\n      capHeight = 0;\\n    }\\n    let flags = descriptor.get(\\\"Flags\\\");\\n    if (!Number.isInteger(flags)) {\\n      flags = 0;\\n    }\\n    let italicAngle = descriptor.get(\\\"ItalicAngle\\\");\\n    if (typeof italicAngle !== \\\"number\\\") {\\n      italicAngle = 0;\\n    }\\n\\n    const properties = {\\n      type,\\n      name: fontName.name,\\n      subtype,\\n      file: fontFile,\\n      length1,\\n      length2,\\n      length3,\\n      isInternalFont,\\n      loadedName: baseDict.loadedName,\\n      composite,\\n      fixedPitch: false,\\n      fontMatrix,\\n      firstChar,\\n      lastChar,\\n      toUnicode,\\n      bbox,\\n      ascent,\\n      descent,\\n      xHeight,\\n      capHeight,\\n      flags,\\n      italicAngle,\\n      isType3Font,\\n      cssFontInfo,\\n      scaleFactors: glyphScaleFactors,\\n      systemFontInfo,\\n    };\\n\\n    if (composite) {\\n      const cidEncoding = baseDict.get(\\\"Encoding\\\");\\n      if (cidEncoding instanceof Name) {\\n        properties.cidEncoding = cidEncoding.name;\\n      }\\n      const cMap = await CMapFactory.create({\\n        encoding: cidEncoding,\\n        fetchBuiltInCMap: this._fetchBuiltInCMapBound,\\n        useCMap: null,\\n      });\\n      properties.cMap = cMap;\\n      properties.vertical = properties.cMap.vertical;\\n    }\\n\\n    const newProperties = await this.extractDataStructures(dict, properties);\\n    this.extractWidths(dict, descriptor, newProperties);\\n\\n    return new Font(fontName.name, fontFile, newProperties);\\n  }\\n\\n  static buildFontPaths(font, glyphs, handler, evaluatorOptions) {\\n    function buildPath(fontChar) {\\n      const glyphName = `${font.loadedName}_path_${fontChar}`;\\n      try {\\n        if (font.renderer.hasBuiltPath(fontChar)) {\\n          return;\\n        }\\n        handler.send(\\\"commonobj\\\", [\\n          glyphName,\\n          \\\"FontPath\\\",\\n          font.renderer.getPathJs(fontChar),\\n        ]);\\n      } catch (reason) {\\n        if (evaluatorOptions.ignoreErrors) {\\n          warn(`buildFontPaths - ignoring ${glyphName} glyph: \\\"${reason}\\\".`);\\n          return;\\n        }\\n        throw reason;\\n      }\\n    }\\n\\n    for (const glyph of glyphs) {\\n      buildPath(glyph.fontChar);\\n\\n      \u002F\u002F If the glyph has an accent we need to build a path for its\\n      \u002F\u002F fontChar too, otherwise CanvasGraphics_paintChar will fail.\\n      const accent = glyph.accent;\\n      if (accent?.fontChar) {\\n        buildPath(accent.fontChar);\\n      }\\n    }\\n  }\\n\\n  static get fallbackFontDict() {\\n    const dict = new Dict();\\n    dict.set(\\\"BaseFont\\\", Name.get(\\\"Helvetica\\\"));\\n    dict.set(\\\"Type\\\", Name.get(\\\"FallbackType\\\"));\\n    dict.set(\\\"Subtype\\\", Name.get(\\\"FallbackType\\\"));\\n    dict.set(\\\"Encoding\\\", Name.get(\\\"WinAnsiEncoding\\\"));\\n\\n    return shadow(this, \\\"fallbackFontDict\\\", dict);\\n  }\\n}\\n\\nclass TranslatedFont {\\n  constructor({ loadedName, font, dict, evaluatorOptions }) {\\n    this.loadedName = loadedName;\\n    this.font = font;\\n    this.dict = dict;\\n    this._evaluatorOptions = evaluatorOptions || DefaultPartialEvaluatorOptions;\\n    this.type3Loaded = null;\\n    this.type3Dependencies = font.isType3Font ? new Set() : null;\\n    this.sent = false;\\n  }\\n\\n  send(handler) {\\n    if (this.sent) {\\n      return;\\n    }\\n    this.sent = true;\\n\\n    handler.send(\\\"commonobj\\\", [\\n      this.loadedName,\\n      \\\"Font\\\",\\n      this.font.exportData(this._evaluatorOptions.fontExtraProperties),\\n    ]);\\n  }\\n\\n  fallback(handler) {\\n    if (!this.font.data) {\\n      return;\\n    }\\n    \u002F\u002F When font loading failed, fall back to the built-in font renderer.\\n    this.font.disableFontFace = true;\\n    \u002F\u002F An arbitrary number of text rendering operators could have been\\n    \u002F\u002F encountered between the point in time when the 'Font' message was sent\\n    \u002F\u002F to the main-thread, and the point in time when the 'FontFallback'\\n    \u002F\u002F message was received on the worker-thread.\\n    \u002F\u002F To ensure that all 'FontPath's are available on the main-thread, when\\n    \u002F\u002F font loading failed, attempt to resend *all* previously parsed glyphs.\\n    PartialEvaluator.buildFontPaths(\\n      this.font,\\n      \u002F* glyphs = *\u002F this.font.glyphCacheValues,\\n      handler,\\n      this._evaluatorOptions\\n    );\\n  }\\n\\n  loadType3Data(evaluator, resources, task) {\\n    if (this.type3Loaded) {\\n      return this.type3Loaded;\\n    }\\n    if (!this.font.isType3Font) {\\n      throw new Error(\\\"Must be a Type3 font.\\\");\\n    }\\n    \u002F\u002F When parsing Type3 glyphs, always ignore them if there are errors.\\n    \u002F\u002F Compared to the parsing of e.g. an entire page, it doesn't really\\n    \u002F\u002F make sense to only be able to render a Type3 glyph partially.\\n    const type3Evaluator = evaluator.clone({ ignoreErrors: false });\\n    \u002F\u002F Prevent circular references in Type3 fonts.\\n    const type3FontRefs = new RefSet(evaluator.type3FontRefs);\\n    if (this.dict.objId && !type3FontRefs.has(this.dict.objId)) {\\n      type3FontRefs.put(this.dict.objId);\\n    }\\n    type3Evaluator.type3FontRefs = type3FontRefs;\\n\\n    const translatedFont = this.font,\\n      type3Dependencies = this.type3Dependencies;\\n    let loadCharProcsPromise = Promise.resolve();\\n    const charProcs = this.dict.get(\\\"CharProcs\\\");\\n    const fontResources = this.dict.get(\\\"Resources\\\") || resources;\\n    const charProcOperatorList = Object.create(null);\\n\\n    const fontBBox = Util.normalizeRect(translatedFont.bbox || [0, 0, 0, 0]),\\n      width = fontBBox[2] - fontBBox[0],\\n      height = fontBBox[3] - fontBBox[1];\\n    const fontBBoxSize = Math.hypot(width, height);\\n\\n    for (const key of charProcs.getKeys()) {\\n      loadCharProcsPromise = loadCharProcsPromise.then(() => {\\n        const glyphStream = charProcs.get(key);\\n        const operatorList = new OperatorList();\\n        return type3Evaluator\\n          .getOperatorList({\\n            stream: glyphStream,\\n            task,\\n            resources: fontResources,\\n            operatorList,\\n          })\\n          .then(() => {\\n            \u002F\u002F According to the PDF specification, section \\\"9.6.5 Type 3 Fonts\\\"\\n            \u002F\u002F and \\\"Table 113\\\":\\n            \u002F\u002F  \\\"A glyph description that begins with the d1 operator should\\n            \u002F\u002F   not execute any operators that set the colour (or other\\n            \u002F\u002F   colour-related parameters) in the graphics state;\\n            \u002F\u002F   any use of such operators shall be ignored.\\\"\\n            if (operatorList.fnArray[0] === OPS.setCharWidthAndBounds) {\\n              this._removeType3ColorOperators(operatorList, fontBBoxSize);\\n            }\\n            charProcOperatorList[key] = operatorList.getIR();\\n\\n            for (const dependency of operatorList.dependencies) {\\n              type3Dependencies.add(dependency);\\n            }\\n          })\\n          .catch(function (reason) {\\n            warn(`Type3 font resource \\\"${key}\\\" is not available.`);\\n            const dummyOperatorList = new OperatorList();\\n            charProcOperatorList[key] = dummyOperatorList.getIR();\\n          });\\n      });\\n    }\\n    this.type3Loaded = loadCharProcsPromise.then(() => {\\n      translatedFont.charProcOperatorList = charProcOperatorList;\\n      if (this._bbox) {\\n        translatedFont.isCharBBox = true;\\n        translatedFont.bbox = this._bbox;\\n      }\\n    });\\n    return this.type3Loaded;\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _removeType3ColorOperators(operatorList, fontBBoxSize = NaN) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        operatorList.fnArray[0] === OPS.setCharWidthAndBounds,\\n        \\\"Type3 glyph shall start with the d1 operator.\\\"\\n      );\\n    }\\n    const charBBox = Util.normalizeRect(operatorList.argsArray[0].slice(2)),\\n      width = charBBox[2] - charBBox[0],\\n      height = charBBox[3] - charBBox[1];\\n    const charBBoxSize = Math.hypot(width, height);\\n\\n    if (width === 0 || height === 0) {\\n      \u002F\u002F Skip the d1 operator when its bounds are bogus (fixes issue14953.pdf).\\n      operatorList.fnArray.splice(0, 1);\\n      operatorList.argsArray.splice(0, 1);\\n    } else if (\\n      fontBBoxSize === 0 ||\\n      Math.round(charBBoxSize \u002F fontBBoxSize) >= 10\\n    ) {\\n      \u002F\u002F Override the fontBBox when it's undefined\u002Fempty, or when it's at least\\n      \u002F\u002F (approximately) one order of magnitude smaller than the charBBox\\n      \u002F\u002F (fixes issue14999_reduced.pdf).\\n      if (!this._bbox) {\\n        this._bbox = [Infinity, Infinity, -Infinity, -Infinity];\\n      }\\n      this._bbox[0] = Math.min(this._bbox[0], charBBox[0]);\\n      this._bbox[1] = Math.min(this._bbox[1], charBBox[1]);\\n      this._bbox[2] = Math.max(this._bbox[2], charBBox[2]);\\n      this._bbox[3] = Math.max(this._bbox[3], charBBox[3]);\\n    }\\n\\n    let i = 0,\\n      ii = operatorList.length;\\n    while (i \u003C ii) {\\n      switch (operatorList.fnArray[i]) {\\n        case OPS.setCharWidthAndBounds:\\n          break; \u002F\u002F Handled above.\\n        case OPS.setStrokeColorSpace:\\n        case OPS.setFillColorSpace:\\n        case OPS.setStrokeColor:\\n        case OPS.setStrokeColorN:\\n        case OPS.setFillColor:\\n        case OPS.setFillColorN:\\n        case OPS.setStrokeGray:\\n        case OPS.setFillGray:\\n        case OPS.setStrokeRGBColor:\\n        case OPS.setFillRGBColor:\\n        case OPS.setStrokeCMYKColor:\\n        case OPS.setFillCMYKColor:\\n        case OPS.shadingFill:\\n        case OPS.setRenderingIntent:\\n          operatorList.fnArray.splice(i, 1);\\n          operatorList.argsArray.splice(i, 1);\\n          ii--;\\n          continue;\\n\\n        case OPS.setGState:\\n          const [gStateObj] = operatorList.argsArray[i];\\n          let j = 0,\\n            jj = gStateObj.length;\\n          while (j \u003C jj) {\\n            const [gStateKey] = gStateObj[j];\\n            switch (gStateKey) {\\n              case \\\"TR\\\":\\n              case \\\"TR2\\\":\\n              case \\\"HT\\\":\\n              case \\\"BG\\\":\\n              case \\\"BG2\\\":\\n              case \\\"UCR\\\":\\n              case \\\"UCR2\\\":\\n                gStateObj.splice(j, 1);\\n                jj--;\\n                continue;\\n            }\\n            j++;\\n          }\\n          break;\\n      }\\n      i++;\\n    }\\n  }\\n}\\n\\nclass StateManager {\\n  constructor(initialState = new EvalState()) {\\n    this.state = initialState;\\n    this.stateStack = [];\\n  }\\n\\n  save() {\\n    const old = this.state;\\n    this.stateStack.push(this.state);\\n    this.state = old.clone();\\n  }\\n\\n  restore() {\\n    const prev = this.stateStack.pop();\\n    if (prev) {\\n      this.state = prev;\\n    }\\n  }\\n\\n  transform(args) {\\n    this.state.ctm = Util.transform(this.state.ctm, args);\\n  }\\n}\\n\\nclass TextState {\\n  constructor() {\\n    this.ctm = new Float32Array(IDENTITY_MATRIX);\\n    this.fontName = null;\\n    this.fontSize = 0;\\n    this.loadedName = null;\\n    this.font = null;\\n    this.fontMatrix = FONT_IDENTITY_MATRIX;\\n    this.textMatrix = IDENTITY_MATRIX.slice();\\n    this.textLineMatrix = IDENTITY_MATRIX.slice();\\n    this.charSpacing = 0;\\n    this.wordSpacing = 0;\\n    this.leading = 0;\\n    this.textHScale = 1;\\n    this.textRise = 0;\\n  }\\n\\n  setTextMatrix(a, b, c, d, e, f) {\\n    const m = this.textMatrix;\\n    m[0] = a;\\n    m[1] = b;\\n    m[2] = c;\\n    m[3] = d;\\n    m[4] = e;\\n    m[5] = f;\\n  }\\n\\n  setTextLineMatrix(a, b, c, d, e, f) {\\n    const m = this.textLineMatrix;\\n    m[0] = a;\\n    m[1] = b;\\n    m[2] = c;\\n    m[3] = d;\\n    m[4] = e;\\n    m[5] = f;\\n  }\\n\\n  translateTextMatrix(x, y) {\\n    const m = this.textMatrix;\\n    m[4] = m[0] * x + m[2] * y + m[4];\\n    m[5] = m[1] * x + m[3] * y + m[5];\\n  }\\n\\n  translateTextLineMatrix(x, y) {\\n    const m = this.textLineMatrix;\\n    m[4] = m[0] * x + m[2] * y + m[4];\\n    m[5] = m[1] * x + m[3] * y + m[5];\\n  }\\n\\n  carriageReturn() {\\n    this.translateTextLineMatrix(0, -this.leading);\\n    this.textMatrix = this.textLineMatrix.slice();\\n  }\\n\\n  clone() {\\n    const clone = Object.create(this);\\n    clone.textMatrix = this.textMatrix.slice();\\n    clone.textLineMatrix = this.textLineMatrix.slice();\\n    clone.fontMatrix = this.fontMatrix.slice();\\n    return clone;\\n  }\\n}\\n\\nclass EvalState {\\n  constructor() {\\n    this.ctm = new Float32Array(IDENTITY_MATRIX);\\n    this.font = null;\\n    this.textRenderingMode = TextRenderingMode.FILL;\\n    this.fillColorSpace = ColorSpace.singletons.gray;\\n    this.strokeColorSpace = ColorSpace.singletons.gray;\\n  }\\n\\n  clone() {\\n    return Object.create(this);\\n  }\\n}\\n\\nclass EvaluatorPreprocessor {\\n  static get opMap() {\\n    \u002F\u002F Specifies properties for each command\\n    \u002F\u002F\\n    \u002F\u002F If variableArgs === true: [0, `numArgs`] expected\\n    \u002F\u002F If variableArgs === false: exactly `numArgs` expected\\n    return shadow(\\n      this,\\n      \\\"opMap\\\",\\n      Object.assign(Object.create(null), {\\n        \u002F\u002F Graphic state\\n        w: { id: OPS.setLineWidth, numArgs: 1, variableArgs: false },\\n        J: { id: OPS.setLineCap, numArgs: 1, variableArgs: false },\\n        j: { id: OPS.setLineJoin, numArgs: 1, variableArgs: false },\\n        M: { id: OPS.setMiterLimit, numArgs: 1, variableArgs: false },\\n        d: { id: OPS.setDash, numArgs: 2, variableArgs: false },\\n        ri: { id: OPS.setRenderingIntent, numArgs: 1, variableArgs: false },\\n        i: { id: OPS.setFlatness, numArgs: 1, variableArgs: false },\\n        gs: { id: OPS.setGState, numArgs: 1, variableArgs: false },\\n        q: { id: OPS.save, numArgs: 0, variableArgs: false },\\n        Q: { id: OPS.restore, numArgs: 0, variableArgs: false },\\n        cm: { id: OPS.transform, numArgs: 6, variableArgs: false },\\n\\n        \u002F\u002F Path\\n        m: { id: OPS.moveTo, numArgs: 2, variableArgs: false },\\n        l: { id: OPS.lineTo, numArgs: 2, variableArgs: false },\\n        c: { id: OPS.curveTo, numArgs: 6, variableArgs: false },\\n        v: { id: OPS.curveTo2, numArgs: 4, variableArgs: false },\\n        y: { id: OPS.curveTo3, numArgs: 4, variableArgs: false },\\n        h: { id: OPS.closePath, numArgs: 0, variableArgs: false },\\n        re: { id: OPS.rectangle, numArgs: 4, variableArgs: false },\\n        S: { id: OPS.stroke, numArgs: 0, variableArgs: false },\\n        s: { id: OPS.closeStroke, numArgs: 0, variableArgs: false },\\n        f: { id: OPS.fill, numArgs: 0, variableArgs: false },\\n        F: { id: OPS.fill, numArgs: 0, variableArgs: false },\\n        \\\"f*\\\": { id: OPS.eoFill, numArgs: 0, variableArgs: false },\\n        B: { id: OPS.fillStroke, numArgs: 0, variableArgs: false },\\n        \\\"B*\\\": { id: OPS.eoFillStroke, numArgs: 0, variableArgs: false },\\n        b: { id: OPS.closeFillStroke, numArgs: 0, variableArgs: false },\\n        \\\"b*\\\": { id: OPS.closeEOFillStroke, numArgs: 0, variableArgs: false },\\n        n: { id: OPS.endPath, numArgs: 0, variableArgs: false },\\n\\n        \u002F\u002F Clipping\\n        W: { id: OPS.clip, numArgs: 0, variableArgs: false },\\n        \\\"W*\\\": { id: OPS.eoClip, numArgs: 0, variableArgs: false },\\n\\n        \u002F\u002F Text\\n        BT: { id: OPS.beginText, numArgs: 0, variableArgs: false },\\n        ET: { id: OPS.endText, numArgs: 0, variableArgs: false },\\n        Tc: { id: OPS.setCharSpacing, numArgs: 1, variableArgs: false },\\n        Tw: { id: OPS.setWordSpacing, numArgs: 1, variableArgs: false },\\n        Tz: { id: OPS.setHScale, numArgs: 1, variableArgs: false },\\n        TL: { id: OPS.setLeading, numArgs: 1, variableArgs: false },\\n        Tf: { id: OPS.setFont, numArgs: 2, variableArgs: false },\\n        Tr: { id: OPS.setTextRenderingMode, numArgs: 1, variableArgs: false },\\n        Ts: { id: OPS.setTextRise, numArgs: 1, variableArgs: false },\\n        Td: { id: OPS.moveText, numArgs: 2, variableArgs: false },\\n        TD: { id: OPS.setLeadingMoveText, numArgs: 2, variableArgs: false },\\n        Tm: { id: OPS.setTextMatrix, numArgs: 6, variableArgs: false },\\n        \\\"T*\\\": { id: OPS.nextLine, numArgs: 0, variableArgs: false },\\n        Tj: { id: OPS.showText, numArgs: 1, variableArgs: false },\\n        TJ: { id: OPS.showSpacedText, numArgs: 1, variableArgs: false },\\n        \\\"'\\\": { id: OPS.nextLineShowText, numArgs: 1, variableArgs: false },\\n        '\\\"': {\\n          id: OPS.nextLineSetSpacingShowText,\\n          numArgs: 3,\\n          variableArgs: false,\\n        },\\n\\n        \u002F\u002F Type3 fonts\\n        d0: { id: OPS.setCharWidth, numArgs: 2, variableArgs: false },\\n        d1: {\\n          id: OPS.setCharWidthAndBounds,\\n          numArgs: 6,\\n          variableArgs: false,\\n        },\\n\\n        \u002F\u002F Color\\n        CS: { id: OPS.setStrokeColorSpace, numArgs: 1, variableArgs: false },\\n        cs: { id: OPS.setFillColorSpace, numArgs: 1, variableArgs: false },\\n        SC: { id: OPS.setStrokeColor, numArgs: 4, variableArgs: true },\\n        SCN: { id: OPS.setStrokeColorN, numArgs: 33, variableArgs: true },\\n        sc: { id: OPS.setFillColor, numArgs: 4, variableArgs: true },\\n        scn: { id: OPS.setFillColorN, numArgs: 33, variableArgs: true },\\n        G: { id: OPS.setStrokeGray, numArgs: 1, variableArgs: false },\\n        g: { id: OPS.setFillGray, numArgs: 1, variableArgs: false },\\n        RG: { id: OPS.setStrokeRGBColor, numArgs: 3, variableArgs: false },\\n        rg: { id: OPS.setFillRGBColor, numArgs: 3, variableArgs: false },\\n        K: { id: OPS.setStrokeCMYKColor, numArgs: 4, variableArgs: false },\\n        k: { id: OPS.setFillCMYKColor, numArgs: 4, variableArgs: false },\\n\\n        \u002F\u002F Shading\\n        sh: { id: OPS.shadingFill, numArgs: 1, variableArgs: false },\\n\\n        \u002F\u002F Images\\n        BI: { id: OPS.beginInlineImage, numArgs: 0, variableArgs: false },\\n        ID: { id: OPS.beginImageData, numArgs: 0, variableArgs: false },\\n        EI: { id: OPS.endInlineImage, numArgs: 1, variableArgs: false },\\n\\n        \u002F\u002F XObjects\\n        Do: { id: OPS.paintXObject, numArgs: 1, variableArgs: false },\\n        MP: { id: OPS.markPoint, numArgs: 1, variableArgs: false },\\n        DP: { id: OPS.markPointProps, numArgs: 2, variableArgs: false },\\n        BMC: { id: OPS.beginMarkedContent, numArgs: 1, variableArgs: false },\\n        BDC: {\\n          id: OPS.beginMarkedContentProps,\\n          numArgs: 2,\\n          variableArgs: false,\\n        },\\n        EMC: { id: OPS.endMarkedContent, numArgs: 0, variableArgs: false },\\n\\n        \u002F\u002F Compatibility\\n        BX: { id: OPS.beginCompat, numArgs: 0, variableArgs: false },\\n        EX: { id: OPS.endCompat, numArgs: 0, variableArgs: false },\\n\\n        \u002F\u002F (reserved partial commands for the lexer)\\n        BM: null,\\n        BD: null,\\n        true: null,\\n        fa: null,\\n        fal: null,\\n        fals: null,\\n        false: null,\\n        nu: null,\\n        nul: null,\\n        null: null,\\n      })\\n    );\\n  }\\n\\n  static MAX_INVALID_PATH_OPS = 10;\\n\\n  constructor(stream, xref, stateManager = new StateManager()) {\\n    \u002F\u002F TODO(mduan): pass array of knownCommands rather than this.opMap\\n    \u002F\u002F dictionary\\n    this.parser = new Parser({\\n      lexer: new Lexer(stream, EvaluatorPreprocessor.opMap),\\n      xref,\\n    });\\n    this.stateManager = stateManager;\\n    this.nonProcessedArgs = [];\\n    this._isPathOp = false;\\n    this._numInvalidPathOPS = 0;\\n  }\\n\\n  get savedStatesDepth() {\\n    return this.stateManager.stateStack.length;\\n  }\\n\\n  \u002F\u002F |operation| is an object with two fields:\\n  \u002F\u002F\\n  \u002F\u002F - |fn| is an out param.\\n  \u002F\u002F\\n  \u002F\u002F - |args| is an inout param. On entry, it should have one of two values.\\n  \u002F\u002F\\n  \u002F\u002F   - An empty array. This indicates that the caller is providing the\\n  \u002F\u002F     array in which the args will be stored in. The caller should use\\n  \u002F\u002F     this value if it can reuse a single array for each call to read().\\n  \u002F\u002F\\n  \u002F\u002F   - |null|. This indicates that the caller needs this function to create\\n  \u002F\u002F     the array in which any args are stored in. If there are zero args,\\n  \u002F\u002F     this function will leave |operation.args| as |null| (thus avoiding\\n  \u002F\u002F     allocations that would occur if we used an empty array to represent\\n  \u002F\u002F     zero arguments). Otherwise, it will replace |null| with a new array\\n  \u002F\u002F     containing the arguments. The caller should use this value if it\\n  \u002F\u002F     cannot reuse an array for each call to read().\\n  \u002F\u002F\\n  \u002F\u002F These two modes are present because this function is very hot and so\\n  \u002F\u002F avoiding allocations where possible is worthwhile.\\n  \u002F\u002F\\n  read(operation) {\\n    let args = operation.args;\\n    while (true) {\\n      const obj = this.parser.getObj();\\n      if (obj instanceof Cmd) {\\n        const cmd = obj.cmd;\\n        \u002F\u002F Check that the command is valid\\n        const opSpec = EvaluatorPreprocessor.opMap[cmd];\\n        if (!opSpec) {\\n          warn(`Unknown command \\\"${cmd}\\\".`);\\n          continue;\\n        }\\n\\n        const fn = opSpec.id;\\n        const numArgs = opSpec.numArgs;\\n        let argsLength = args !== null ? args.length : 0;\\n\\n        \u002F\u002F If the *previous* command wasn't a path operator, reset the heuristic\\n        \u002F\u002F used with incomplete path operators below (fixes issue14917.pdf).\\n        if (!this._isPathOp) {\\n          this._numInvalidPathOPS = 0;\\n        }\\n        this._isPathOp = fn >= OPS.moveTo && fn \u003C= OPS.endPath;\\n\\n        if (!opSpec.variableArgs) {\\n          \u002F\u002F Postscript commands can be nested, e.g. \u002FF2 \u002FGS2 gs 5.711 Tf\\n          if (argsLength !== numArgs) {\\n            const nonProcessedArgs = this.nonProcessedArgs;\\n            while (argsLength > numArgs) {\\n              nonProcessedArgs.push(args.shift());\\n              argsLength--;\\n            }\\n            while (argsLength \u003C numArgs && nonProcessedArgs.length !== 0) {\\n              if (args === null) {\\n                args = [];\\n              }\\n              args.unshift(nonProcessedArgs.pop());\\n              argsLength++;\\n            }\\n          }\\n\\n          if (argsLength \u003C numArgs) {\\n            const partialMsg =\\n              `command ${cmd}: expected ${numArgs} args, ` +\\n              `but received ${argsLength} args.`;\\n\\n            \u002F\u002F Incomplete path operators, in particular, can result in fairly\\n            \u002F\u002F chaotic rendering artifacts. Hence the following heuristics is\\n            \u002F\u002F used to error, rather than just warn, once a number of invalid\\n            \u002F\u002F path operators have been encountered (fixes bug1443140.pdf).\\n            if (\\n              this._isPathOp &&\\n              ++this._numInvalidPathOPS >\\n                EvaluatorPreprocessor.MAX_INVALID_PATH_OPS\\n            ) {\\n              throw new FormatError(`Invalid ${partialMsg}`);\\n            }\\n            \u002F\u002F If we receive too few arguments, it's not possible to execute\\n            \u002F\u002F the command, hence we skip the command.\\n            warn(`Skipping ${partialMsg}`);\\n            if (args !== null) {\\n              args.length = 0;\\n            }\\n            continue;\\n          }\\n        } else if (argsLength > numArgs) {\\n          info(\\n            `Command ${cmd}: expected [0, ${numArgs}] args, ` +\\n              `but received ${argsLength} args.`\\n          );\\n        }\\n\\n        \u002F\u002F TODO figure out how to type-check vararg functions\\n        this.preprocessCommand(fn, args);\\n\\n        operation.fn = fn;\\n        operation.args = args;\\n        return true;\\n      }\\n      if (obj === EOF) {\\n        return false; \u002F\u002F no more commands\\n      }\\n      \u002F\u002F argument\\n      if (obj !== null) {\\n        if (args === null) {\\n          args = [];\\n        }\\n        args.push(obj);\\n        if (args.length > 33) {\\n          throw new FormatError(\\\"Too many arguments\\\");\\n        }\\n      }\\n    }\\n  }\\n\\n  preprocessCommand(fn, args) {\\n    switch (fn | 0) {\\n      case OPS.save:\\n        this.stateManager.save();\\n        break;\\n      case OPS.restore:\\n        this.stateManager.restore();\\n        break;\\n      case OPS.transform:\\n        this.stateManager.transform(args);\\n        break;\\n    }\\n  }\\n}\\n\\nexport { EvaluatorPreprocessor, PartialEvaluator };\\n\",\"\u002F* Copyright 2020 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  codePointIter,\\n  escapePDFName,\\n  getRotationMatrix,\\n  numberToString,\\n  stringToUTF16HexString,\\n} from \\\".\u002Fcore_utils.js\\\";\\nimport { Dict, Name } from \\\".\u002Fprimitives.js\\\";\\nimport {\\n  LINE_DESCENT_FACTOR,\\n  LINE_FACTOR,\\n  OPS,\\n  shadow,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { ColorSpace } from \\\".\u002Fcolorspace.js\\\";\\nimport { EvaluatorPreprocessor } from \\\".\u002Fevaluator.js\\\";\\nimport { LocalColorSpaceCache } from \\\".\u002Fimage_utils.js\\\";\\nimport { PDFFunctionFactory } from \\\".\u002Ffunction.js\\\";\\nimport { StringStream } from \\\".\u002Fstream.js\\\";\\n\\nclass DefaultAppearanceEvaluator extends EvaluatorPreprocessor {\\n  constructor(str) {\\n    super(new StringStream(str));\\n  }\\n\\n  parse() {\\n    const operation = {\\n      fn: 0,\\n      args: [],\\n    };\\n    const result = {\\n      fontSize: 0,\\n      fontName: \\\"\\\",\\n      fontColor: \u002F* black = *\u002F new Uint8ClampedArray(3),\\n    };\\n\\n    try {\\n      while (true) {\\n        operation.args.length = 0; \u002F\u002F Ensure that `args` it's always reset.\\n\\n        if (!this.read(operation)) {\\n          break;\\n        }\\n        if (this.savedStatesDepth !== 0) {\\n          continue; \u002F\u002F Don't get info in save\u002Frestore sections.\\n        }\\n        const { fn, args } = operation;\\n\\n        switch (fn | 0) {\\n          case OPS.setFont:\\n            const [fontName, fontSize] = args;\\n            if (fontName instanceof Name) {\\n              result.fontName = fontName.name;\\n            }\\n            if (typeof fontSize === \\\"number\\\" && fontSize > 0) {\\n              result.fontSize = fontSize;\\n            }\\n            break;\\n          case OPS.setFillRGBColor:\\n            ColorSpace.singletons.rgb.getRgbItem(args, 0, result.fontColor, 0);\\n            break;\\n          case OPS.setFillGray:\\n            ColorSpace.singletons.gray.getRgbItem(args, 0, result.fontColor, 0);\\n            break;\\n          case OPS.setFillCMYKColor:\\n            ColorSpace.singletons.cmyk.getRgbItem(args, 0, result.fontColor, 0);\\n            break;\\n        }\\n      }\\n    } catch (reason) {\\n      warn(`parseDefaultAppearance - ignoring errors: \\\"${reason}\\\".`);\\n    }\\n\\n    return result;\\n  }\\n}\\n\\n\u002F\u002F Parse DA to extract font and color information.\\nfunction parseDefaultAppearance(str) {\\n  return new DefaultAppearanceEvaluator(str).parse();\\n}\\n\\nclass AppearanceStreamEvaluator extends EvaluatorPreprocessor {\\n  constructor(stream, evaluatorOptions, xref) {\\n    super(stream);\\n    this.stream = stream;\\n    this.evaluatorOptions = evaluatorOptions;\\n    this.xref = xref;\\n\\n    this.resources = stream.dict?.get(\\\"Resources\\\");\\n  }\\n\\n  parse() {\\n    const operation = {\\n      fn: 0,\\n      args: [],\\n    };\\n    let result = {\\n      scaleFactor: 1,\\n      fontSize: 0,\\n      fontName: \\\"\\\",\\n      fontColor: \u002F* black = *\u002F new Uint8ClampedArray(3),\\n      fillColorSpace: ColorSpace.singletons.gray,\\n    };\\n    let breakLoop = false;\\n    const stack = [];\\n\\n    try {\\n      while (true) {\\n        operation.args.length = 0; \u002F\u002F Ensure that `args` it's always reset.\\n\\n        if (breakLoop || !this.read(operation)) {\\n          break;\\n        }\\n        const { fn, args } = operation;\\n\\n        switch (fn | 0) {\\n          case OPS.save:\\n            stack.push({\\n              scaleFactor: result.scaleFactor,\\n              fontSize: result.fontSize,\\n              fontName: result.fontName,\\n              fontColor: result.fontColor.slice(),\\n              fillColorSpace: result.fillColorSpace,\\n            });\\n            break;\\n          case OPS.restore:\\n            result = stack.pop() || result;\\n            break;\\n          case OPS.setTextMatrix:\\n            result.scaleFactor *= Math.hypot(args[0], args[1]);\\n            break;\\n          case OPS.setFont:\\n            const [fontName, fontSize] = args;\\n            if (fontName instanceof Name) {\\n              result.fontName = fontName.name;\\n            }\\n            if (typeof fontSize === \\\"number\\\" && fontSize > 0) {\\n              result.fontSize = fontSize * result.scaleFactor;\\n            }\\n            break;\\n          case OPS.setFillColorSpace:\\n            result.fillColorSpace = ColorSpace.parse({\\n              cs: args[0],\\n              xref: this.xref,\\n              resources: this.resources,\\n              pdfFunctionFactory: this._pdfFunctionFactory,\\n              localColorSpaceCache: this._localColorSpaceCache,\\n            });\\n            break;\\n          case OPS.setFillColor:\\n            const cs = result.fillColorSpace;\\n            cs.getRgbItem(args, 0, result.fontColor, 0);\\n            break;\\n          case OPS.setFillRGBColor:\\n            ColorSpace.singletons.rgb.getRgbItem(args, 0, result.fontColor, 0);\\n            break;\\n          case OPS.setFillGray:\\n            ColorSpace.singletons.gray.getRgbItem(args, 0, result.fontColor, 0);\\n            break;\\n          case OPS.setFillCMYKColor:\\n            ColorSpace.singletons.cmyk.getRgbItem(args, 0, result.fontColor, 0);\\n            break;\\n          case OPS.showText:\\n          case OPS.showSpacedText:\\n          case OPS.nextLineShowText:\\n          case OPS.nextLineSetSpacingShowText:\\n            breakLoop = true;\\n            break;\\n        }\\n      }\\n    } catch (reason) {\\n      warn(`parseAppearanceStream - ignoring errors: \\\"${reason}\\\".`);\\n    }\\n    this.stream.reset();\\n    delete result.scaleFactor;\\n    delete result.fillColorSpace;\\n\\n    return result;\\n  }\\n\\n  get _localColorSpaceCache() {\\n    return shadow(this, \\\"_localColorSpaceCache\\\", new LocalColorSpaceCache());\\n  }\\n\\n  get _pdfFunctionFactory() {\\n    const pdfFunctionFactory = new PDFFunctionFactory({\\n      xref: this.xref,\\n      isEvalSupported: this.evaluatorOptions.isEvalSupported,\\n    });\\n    return shadow(this, \\\"_pdfFunctionFactory\\\", pdfFunctionFactory);\\n  }\\n}\\n\\n\u002F\u002F Parse appearance stream to extract font and color information.\\n\u002F\u002F It returns the font properties used to render the first text object.\\nfunction parseAppearanceStream(stream, evaluatorOptions, xref) {\\n  return new AppearanceStreamEvaluator(stream, evaluatorOptions, xref).parse();\\n}\\n\\nfunction getPdfColor(color, isFill) {\\n  if (color[0] === color[1] && color[1] === color[2]) {\\n    const gray = color[0] \u002F 255;\\n    return `${numberToString(gray)} ${isFill ? \\\"g\\\" : \\\"G\\\"}`;\\n  }\\n  return (\\n    Array.from(color, c => numberToString(c \u002F 255)).join(\\\" \\\") +\\n    ` ${isFill ? \\\"rg\\\" : \\\"RG\\\"}`\\n  );\\n}\\n\\n\u002F\u002F Create default appearance string from some information.\\nfunction createDefaultAppearance({ fontSize, fontName, fontColor }) {\\n  return `\u002F${escapePDFName(fontName)} ${fontSize} Tf ${getPdfColor(\\n    fontColor,\\n    \u002F* isFill *\u002F true\\n  )}`;\\n}\\n\\nclass FakeUnicodeFont {\\n  constructor(xref, fontFamily) {\\n    this.xref = xref;\\n    this.widths = null;\\n    this.firstChar = Infinity;\\n    this.lastChar = -Infinity;\\n    this.fontFamily = fontFamily;\\n\\n    const canvas = new OffscreenCanvas(1, 1);\\n    this.ctxMeasure = canvas.getContext(\\\"2d\\\");\\n\\n    if (!FakeUnicodeFont._fontNameId) {\\n      FakeUnicodeFont._fontNameId = 1;\\n    }\\n    this.fontName = Name.get(\\n      `InvalidPDFjsFont_${fontFamily}_${FakeUnicodeFont._fontNameId++}`\\n    );\\n  }\\n\\n  get fontDescriptorRef() {\\n    if (!FakeUnicodeFont._fontDescriptorRef) {\\n      const fontDescriptor = new Dict(this.xref);\\n      fontDescriptor.set(\\\"Type\\\", Name.get(\\\"FontDescriptor\\\"));\\n      fontDescriptor.set(\\\"FontName\\\", this.fontName);\\n      fontDescriptor.set(\\\"FontFamily\\\", \\\"MyriadPro Regular\\\");\\n      fontDescriptor.set(\\\"FontBBox\\\", [0, 0, 0, 0]);\\n      fontDescriptor.set(\\\"FontStretch\\\", Name.get(\\\"Normal\\\"));\\n      fontDescriptor.set(\\\"FontWeight\\\", 400);\\n      fontDescriptor.set(\\\"ItalicAngle\\\", 0);\\n\\n      FakeUnicodeFont._fontDescriptorRef =\\n        this.xref.getNewPersistentRef(fontDescriptor);\\n    }\\n\\n    return FakeUnicodeFont._fontDescriptorRef;\\n  }\\n\\n  get descendantFontRef() {\\n    const descendantFont = new Dict(this.xref);\\n    descendantFont.set(\\\"BaseFont\\\", this.fontName);\\n    descendantFont.set(\\\"Type\\\", Name.get(\\\"Font\\\"));\\n    descendantFont.set(\\\"Subtype\\\", Name.get(\\\"CIDFontType0\\\"));\\n    descendantFont.set(\\\"CIDToGIDMap\\\", Name.get(\\\"Identity\\\"));\\n    descendantFont.set(\\\"FirstChar\\\", this.firstChar);\\n    descendantFont.set(\\\"LastChar\\\", this.lastChar);\\n    descendantFont.set(\\\"FontDescriptor\\\", this.fontDescriptorRef);\\n    descendantFont.set(\\\"DW\\\", 1000);\\n\\n    const widths = [];\\n    const chars = [...this.widths.entries()].sort();\\n    let currentChar = null;\\n    let currentWidths = null;\\n    for (const [char, width] of chars) {\\n      if (!currentChar) {\\n        currentChar = char;\\n        currentWidths = [width];\\n        continue;\\n      }\\n      if (char === currentChar + currentWidths.length) {\\n        currentWidths.push(width);\\n      } else {\\n        widths.push(currentChar, currentWidths);\\n        currentChar = char;\\n        currentWidths = [width];\\n      }\\n    }\\n\\n    if (currentChar) {\\n      widths.push(currentChar, currentWidths);\\n    }\\n\\n    descendantFont.set(\\\"W\\\", widths);\\n\\n    const cidSystemInfo = new Dict(this.xref);\\n    cidSystemInfo.set(\\\"Ordering\\\", \\\"Identity\\\");\\n    cidSystemInfo.set(\\\"Registry\\\", \\\"Adobe\\\");\\n    cidSystemInfo.set(\\\"Supplement\\\", 0);\\n    descendantFont.set(\\\"CIDSystemInfo\\\", cidSystemInfo);\\n\\n    return this.xref.getNewPersistentRef(descendantFont);\\n  }\\n\\n  get baseFontRef() {\\n    const baseFont = new Dict(this.xref);\\n    baseFont.set(\\\"BaseFont\\\", this.fontName);\\n    baseFont.set(\\\"Type\\\", Name.get(\\\"Font\\\"));\\n    baseFont.set(\\\"Subtype\\\", Name.get(\\\"Type0\\\"));\\n    baseFont.set(\\\"Encoding\\\", Name.get(\\\"Identity-H\\\"));\\n    baseFont.set(\\\"DescendantFonts\\\", [this.descendantFontRef]);\\n    baseFont.set(\\\"ToUnicode\\\", Name.get(\\\"Identity-H\\\"));\\n\\n    return this.xref.getNewPersistentRef(baseFont);\\n  }\\n\\n  get resources() {\\n    const resources = new Dict(this.xref);\\n    const font = new Dict(this.xref);\\n    font.set(this.fontName.name, this.baseFontRef);\\n    resources.set(\\\"Font\\\", font);\\n\\n    return resources;\\n  }\\n\\n  _createContext() {\\n    this.widths = new Map();\\n    this.ctxMeasure.font = `1000px ${this.fontFamily}`;\\n\\n    return this.ctxMeasure;\\n  }\\n\\n  createFontResources(text) {\\n    const ctx = this._createContext();\\n    for (const line of text.split(\u002F\\\\r\\\\n?|\\\\n\u002F)) {\\n      for (const char of line.split(\\\"\\\")) {\\n        const code = char.charCodeAt(0);\\n        if (this.widths.has(code)) {\\n          continue;\\n        }\\n        const metrics = ctx.measureText(char);\\n        const width = Math.ceil(metrics.width);\\n        this.widths.set(code, width);\\n        this.firstChar = Math.min(code, this.firstChar);\\n        this.lastChar = Math.max(code, this.lastChar);\\n      }\\n    }\\n\\n    return this.resources;\\n  }\\n\\n  static getFirstPositionInfo(rect, rotation, fontSize) {\\n    \u002F\u002F Get the position of the first char in the rect.\\n    const [x1, y1, x2, y2] = rect;\\n    let w = x2 - x1;\\n    let h = y2 - y1;\\n\\n    if (rotation % 180 !== 0) {\\n      [w, h] = [h, w];\\n    }\\n    const lineHeight = LINE_FACTOR * fontSize;\\n    const lineDescent = LINE_DESCENT_FACTOR * fontSize;\\n\\n    return {\\n      coords: [0, h + lineDescent - lineHeight],\\n      bbox: [0, 0, w, h],\\n      matrix:\\n        rotation !== 0 ? getRotationMatrix(rotation, h, lineHeight) : undefined,\\n    };\\n  }\\n\\n  createAppearance(text, rect, rotation, fontSize, bgColor, strokeAlpha) {\\n    const ctx = this._createContext();\\n    const lines = [];\\n    let maxWidth = -Infinity;\\n    for (const line of text.split(\u002F\\\\r\\\\n?|\\\\n\u002F)) {\\n      lines.push(line);\\n      \u002F\u002F The line width isn't the sum of the char widths, because in some\\n      \u002F\u002F languages, like arabic, it'd be wrong because of ligatures.\\n      const lineWidth = ctx.measureText(line).width;\\n      maxWidth = Math.max(maxWidth, lineWidth);\\n      for (const code of codePointIter(line)) {\\n        const char = String.fromCodePoint(code);\\n        let width = this.widths.get(code);\\n        if (width === undefined) {\\n          const metrics = ctx.measureText(char);\\n          width = Math.ceil(metrics.width);\\n          this.widths.set(code, width);\\n          this.firstChar = Math.min(code, this.firstChar);\\n          this.lastChar = Math.max(code, this.lastChar);\\n        }\\n      }\\n    }\\n    maxWidth *= fontSize \u002F 1000;\\n\\n    const [x1, y1, x2, y2] = rect;\\n    let w = x2 - x1;\\n    let h = y2 - y1;\\n\\n    if (rotation % 180 !== 0) {\\n      [w, h] = [h, w];\\n    }\\n\\n    let hscale = 1;\\n    if (maxWidth > w) {\\n      hscale = w \u002F maxWidth;\\n    }\\n    let vscale = 1;\\n    const lineHeight = LINE_FACTOR * fontSize;\\n    const lineDescent = LINE_DESCENT_FACTOR * fontSize;\\n    const maxHeight = lineHeight * lines.length;\\n    if (maxHeight > h) {\\n      vscale = h \u002F maxHeight;\\n    }\\n    const fscale = Math.min(hscale, vscale);\\n    const newFontSize = fontSize * fscale;\\n\\n    const buffer = [\\n      \\\"q\\\",\\n      `0 0 ${numberToString(w)} ${numberToString(h)} re W n`,\\n      `BT`,\\n      `1 0 0 1 0 ${numberToString(h + lineDescent)} Tm 0 Tc ${getPdfColor(\\n        bgColor,\\n        \u002F* isFill *\u002F true\\n      )}`,\\n      `\u002F${this.fontName.name} ${numberToString(newFontSize)} Tf`,\\n    ];\\n\\n    const { resources } = this;\\n    strokeAlpha =\\n      typeof strokeAlpha === \\\"number\\\" && strokeAlpha >= 0 && strokeAlpha \u003C= 1\\n        ? strokeAlpha\\n        : 1;\\n\\n    if (strokeAlpha !== 1) {\\n      buffer.push(\\\"\u002FR0 gs\\\");\\n      const extGState = new Dict(this.xref);\\n      const r0 = new Dict(this.xref);\\n      r0.set(\\\"ca\\\", strokeAlpha);\\n      r0.set(\\\"CA\\\", strokeAlpha);\\n      r0.set(\\\"Type\\\", Name.get(\\\"ExtGState\\\"));\\n      extGState.set(\\\"R0\\\", r0);\\n      resources.set(\\\"ExtGState\\\", extGState);\\n    }\\n\\n    const vShift = numberToString(lineHeight);\\n    for (const line of lines) {\\n      buffer.push(`0 -${vShift} Td \u003C${stringToUTF16HexString(line)}> Tj`);\\n    }\\n    buffer.push(\\\"ET\\\", \\\"Q\\\");\\n    const appearance = buffer.join(\\\"\\\\n\\\");\\n\\n    const appearanceStreamDict = new Dict(this.xref);\\n    appearanceStreamDict.set(\\\"Subtype\\\", Name.get(\\\"Form\\\"));\\n    appearanceStreamDict.set(\\\"Type\\\", Name.get(\\\"XObject\\\"));\\n    appearanceStreamDict.set(\\\"BBox\\\", [0, 0, w, h]);\\n    appearanceStreamDict.set(\\\"Length\\\", appearance.length);\\n    appearanceStreamDict.set(\\\"Resources\\\", resources);\\n\\n    if (rotation) {\\n      const matrix = getRotationMatrix(rotation, w, h);\\n      appearanceStreamDict.set(\\\"Matrix\\\", matrix);\\n    }\\n\\n    const ap = new StringStream(appearance);\\n    ap.dict = appearanceStreamDict;\\n\\n    return ap;\\n  }\\n}\\n\\nexport {\\n  createDefaultAppearance,\\n  FakeUnicodeFont,\\n  getPdfColor,\\n  parseAppearanceStream,\\n  parseDefaultAppearance,\\n};\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { Dict, RefSet } from \\\".\u002Fprimitives.js\\\";\\nimport { FormatError, unreachable, warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\n\u002F**\\n * A NameTree\u002FNumberTree is like a Dict but has some advantageous properties,\\n * see the specification (7.9.6 and 7.9.7) for additional details.\\n * TODO: implement all the Dict functions and make this more efficient.\\n *\u002F\\nclass NameOrNumberTree {\\n  constructor(root, xref, type) {\\n    if (this.constructor === NameOrNumberTree) {\\n      unreachable(\\\"Cannot initialize NameOrNumberTree.\\\");\\n    }\\n    this.root = root;\\n    this.xref = xref;\\n    this._type = type;\\n  }\\n\\n  getAll() {\\n    const map = new Map();\\n    if (!this.root) {\\n      return map;\\n    }\\n    const xref = this.xref;\\n    \u002F\u002F Reading Name\u002FNumber tree.\\n    const processed = new RefSet();\\n    processed.put(this.root);\\n    const queue = [this.root];\\n    while (queue.length > 0) {\\n      const obj = xref.fetchIfRef(queue.shift());\\n      if (!(obj instanceof Dict)) {\\n        continue;\\n      }\\n      if (obj.has(\\\"Kids\\\")) {\\n        const kids = obj.get(\\\"Kids\\\");\\n        if (!Array.isArray(kids)) {\\n          continue;\\n        }\\n        for (const kid of kids) {\\n          if (processed.has(kid)) {\\n            throw new FormatError(`Duplicate entry in \\\"${this._type}\\\" tree.`);\\n          }\\n          queue.push(kid);\\n          processed.put(kid);\\n        }\\n        continue;\\n      }\\n      const entries = obj.get(this._type);\\n      if (!Array.isArray(entries)) {\\n        continue;\\n      }\\n      for (let i = 0, ii = entries.length; i \u003C ii; i += 2) {\\n        map.set(xref.fetchIfRef(entries[i]), xref.fetchIfRef(entries[i + 1]));\\n      }\\n    }\\n    return map;\\n  }\\n\\n  get(key) {\\n    if (!this.root) {\\n      return null;\\n    }\\n    const xref = this.xref;\\n    let kidsOrEntries = xref.fetchIfRef(this.root);\\n    let loopCount = 0;\\n    const MAX_LEVELS = 10;\\n\\n    \u002F\u002F Perform a binary search to quickly find the entry that\\n    \u002F\u002F contains the key we are looking for.\\n    while (kidsOrEntries.has(\\\"Kids\\\")) {\\n      if (++loopCount > MAX_LEVELS) {\\n        warn(`Search depth limit reached for \\\"${this._type}\\\" tree.`);\\n        return null;\\n      }\\n\\n      const kids = kidsOrEntries.get(\\\"Kids\\\");\\n      if (!Array.isArray(kids)) {\\n        return null;\\n      }\\n\\n      let l = 0,\\n        r = kids.length - 1;\\n      while (l \u003C= r) {\\n        const m = (l + r) >> 1;\\n        const kid = xref.fetchIfRef(kids[m]);\\n        const limits = kid.get(\\\"Limits\\\");\\n\\n        if (key \u003C xref.fetchIfRef(limits[0])) {\\n          r = m - 1;\\n        } else if (key > xref.fetchIfRef(limits[1])) {\\n          l = m + 1;\\n        } else {\\n          kidsOrEntries = kid;\\n          break;\\n        }\\n      }\\n      if (l > r) {\\n        return null;\\n      }\\n    }\\n\\n    \u002F\u002F If we get here, then we have found the right entry. Now go through the\\n    \u002F\u002F entries in the dictionary until we find the key we're looking for.\\n    const entries = kidsOrEntries.get(this._type);\\n    if (Array.isArray(entries)) {\\n      \u002F\u002F Perform a binary search to reduce the lookup time.\\n      let l = 0,\\n        r = entries.length - 2;\\n      while (l \u003C= r) {\\n        \u002F\u002F Check only even indices (0, 2, 4, ...) because the\\n        \u002F\u002F odd indices contain the actual data.\\n        const tmp = (l + r) >> 1,\\n          m = tmp + (tmp & 1);\\n        const currentKey = xref.fetchIfRef(entries[m]);\\n        if (key \u003C currentKey) {\\n          r = m - 2;\\n        } else if (key > currentKey) {\\n          l = m + 2;\\n        } else {\\n          return xref.fetchIfRef(entries[m + 1]);\\n        }\\n      }\\n    }\\n    return null;\\n  }\\n}\\n\\nclass NameTree extends NameOrNumberTree {\\n  constructor(root, xref) {\\n    super(root, xref, \\\"Names\\\");\\n  }\\n}\\n\\nclass NumberTree extends NameOrNumberTree {\\n  constructor(root, xref) {\\n    super(root, xref, \\\"Nums\\\");\\n  }\\n}\\n\\nexport { NameTree, NumberTree };\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { clearPatternCaches } from \\\".\u002Fpattern.js\\\";\\nimport { clearPrimitiveCaches } from \\\".\u002Fprimitives.js\\\";\\nimport { clearUnicodeCaches } from \\\".\u002Funicode.js\\\";\\nimport { JpxImage } from \\\".\u002Fjpx.js\\\";\\n\\nfunction clearGlobalCaches() {\\n  clearPatternCaches();\\n  clearPrimitiveCaches();\\n  clearUnicodeCaches();\\n\\n  \u002F\u002F Remove the global `JpxImage` instance, since it may hold a reference to\\n  \u002F\u002F the WebAssembly module.\\n  JpxImage.cleanup();\\n}\\n\\nexport { clearGlobalCaches };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { shadow, stringToPDFString, warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { Dict } from \\\".\u002Fprimitives.js\\\";\\n\\nfunction pickPlatformItem(dict) {\\n  if (!(dict instanceof Dict)) {\\n    return null;\\n  }\\n  \u002F\u002F Look for the filename in this order:\\n  \u002F\u002F UF, F, Unix, Mac, DOS\\n  if (dict.has(\\\"UF\\\")) {\\n    return dict.get(\\\"UF\\\");\\n  } else if (dict.has(\\\"F\\\")) {\\n    return dict.get(\\\"F\\\");\\n  } else if (dict.has(\\\"Unix\\\")) {\\n    return dict.get(\\\"Unix\\\");\\n  } else if (dict.has(\\\"Mac\\\")) {\\n    return dict.get(\\\"Mac\\\");\\n  } else if (dict.has(\\\"DOS\\\")) {\\n    return dict.get(\\\"DOS\\\");\\n  }\\n  return null;\\n}\\n\\nfunction stripPath(str) {\\n  return str.substring(str.lastIndexOf(\\\"\u002F\\\") + 1);\\n}\\n\\n\u002F**\\n * \\\"A PDF file can refer to the contents of another file by using a File\\n * Specification (PDF 1.1)\\\", see the spec (7.11) for more details.\\n * NOTE: Only embedded files are supported (as part of the attachments support)\\n * TODO: support the 'URL' file system (with caching if !\u002FV), portable\\n * collections attributes and related files (\u002FRF)\\n *\u002F\\nclass FileSpec {\\n  #contentAvailable = false;\\n\\n  constructor(root, xref, skipContent = false) {\\n    if (!(root instanceof Dict)) {\\n      return;\\n    }\\n    this.xref = xref;\\n    this.root = root;\\n    if (root.has(\\\"FS\\\")) {\\n      this.fs = root.get(\\\"FS\\\");\\n    }\\n    if (root.has(\\\"RF\\\")) {\\n      warn(\\\"Related file specifications are not supported\\\");\\n    }\\n    if (!skipContent) {\\n      if (root.has(\\\"EF\\\")) {\\n        this.#contentAvailable = true;\\n      } else {\\n        warn(\\\"Non-embedded file specifications are not supported\\\");\\n      }\\n    }\\n  }\\n\\n  get filename() {\\n    let filename = \\\"\\\";\\n\\n    const item = pickPlatformItem(this.root);\\n    if (item && typeof item === \\\"string\\\") {\\n      filename = stringToPDFString(item)\\n        .replaceAll(\\\"\\\\\\\\\\\\\\\\\\\", \\\"\\\\\\\\\\\")\\n        .replaceAll(\\\"\\\\\\\\\u002F\\\", \\\"\u002F\\\")\\n        .replaceAll(\\\"\\\\\\\\\\\", \\\"\u002F\\\");\\n    }\\n    return shadow(this, \\\"filename\\\", filename || \\\"unnamed\\\");\\n  }\\n\\n  get content() {\\n    if (!this.#contentAvailable) {\\n      return null;\\n    }\\n    this._contentRef ||= pickPlatformItem(this.root?.get(\\\"EF\\\"));\\n\\n    let content = null;\\n    if (this._contentRef) {\\n      const fileObj = this.xref.fetchIfRef(this._contentRef);\\n      if (fileObj instanceof BaseStream) {\\n        content = fileObj.getBytes();\\n      } else {\\n        warn(\\n          \\\"Embedded file specification points to non-existing\u002Finvalid content\\\"\\n        );\\n      }\\n    } else {\\n      warn(\\\"Embedded file specification does not have any content\\\");\\n    }\\n    return content;\\n  }\\n\\n  get description() {\\n    let description = \\\"\\\";\\n\\n    const desc = this.root?.get(\\\"Desc\\\");\\n    if (desc && typeof desc === \\\"string\\\") {\\n      description = stringToPDFString(desc);\\n    }\\n    return shadow(this, \\\"description\\\", description);\\n  }\\n\\n  get serializable() {\\n    return {\\n      rawFilename: this.filename,\\n      filename: stripPath(this.filename),\\n      content: this.content,\\n      description: this.description,\\n    };\\n  }\\n}\\n\\nexport { FileSpec };\\n\",\"\u002F* Copyright 2018 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F The code for XMLParserBase copied from\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Fmozilla\u002Fshumway\u002Fblob\u002F16451d8836fa85f4b16eeda8b4bda2fa9e2b22b0\u002Fsrc\u002Favm2\u002Fnatives\u002Fxml.ts\\n\\nimport { encodeToXmlString } from \\\".\u002Fcore_utils.js\\\";\\n\\nconst XMLParserErrorCode = {\\n  NoError: 0,\\n  EndOfDocument: -1,\\n  UnterminatedCdat: -2,\\n  UnterminatedXmlDeclaration: -3,\\n  UnterminatedDoctypeDeclaration: -4,\\n  UnterminatedComment: -5,\\n  MalformedElement: -6,\\n  OutOfMemory: -7,\\n  UnterminatedAttributeValue: -8,\\n  UnterminatedElement: -9,\\n  ElementNeverBegun: -10,\\n};\\n\\nfunction isWhitespace(s, index) {\\n  const ch = s[index];\\n  return ch === \\\" \\\" || ch === \\\"\\\\n\\\" || ch === \\\"\\\\r\\\" || ch === \\\"\\\\t\\\";\\n}\\n\\nfunction isWhitespaceString(s) {\\n  for (let i = 0, ii = s.length; i \u003C ii; i++) {\\n    if (!isWhitespace(s, i)) {\\n      return false;\\n    }\\n  }\\n  return true;\\n}\\n\\nclass XMLParserBase {\\n  _resolveEntities(s) {\\n    return s.replaceAll(\u002F&([^;]+);\u002Fg, (all, entity) => {\\n      if (entity.substring(0, 2) === \\\"#x\\\") {\\n        return String.fromCodePoint(parseInt(entity.substring(2), 16));\\n      } else if (entity.substring(0, 1) === \\\"#\\\") {\\n        return String.fromCodePoint(parseInt(entity.substring(1), 10));\\n      }\\n      switch (entity) {\\n        case \\\"lt\\\":\\n          return \\\"\u003C\\\";\\n        case \\\"gt\\\":\\n          return \\\">\\\";\\n        case \\\"amp\\\":\\n          return \\\"&\\\";\\n        case \\\"quot\\\":\\n          return '\\\"';\\n        case \\\"apos\\\":\\n          return \\\"'\\\";\\n      }\\n      return this.onResolveEntity(entity);\\n    });\\n  }\\n\\n  _parseContent(s, start) {\\n    const attributes = [];\\n    let pos = start;\\n\\n    function skipWs() {\\n      while (pos \u003C s.length && isWhitespace(s, pos)) {\\n        ++pos;\\n      }\\n    }\\n\\n    while (\\n      pos \u003C s.length &&\\n      !isWhitespace(s, pos) &&\\n      s[pos] !== \\\">\\\" &&\\n      s[pos] !== \\\"\u002F\\\"\\n    ) {\\n      ++pos;\\n    }\\n    const name = s.substring(start, pos);\\n    skipWs();\\n    while (\\n      pos \u003C s.length &&\\n      s[pos] !== \\\">\\\" &&\\n      s[pos] !== \\\"\u002F\\\" &&\\n      s[pos] !== \\\"?\\\"\\n    ) {\\n      skipWs();\\n      let attrName = \\\"\\\",\\n        attrValue = \\\"\\\";\\n      while (pos \u003C s.length && !isWhitespace(s, pos) && s[pos] !== \\\"=\\\") {\\n        attrName += s[pos];\\n        ++pos;\\n      }\\n      skipWs();\\n      if (s[pos] !== \\\"=\\\") {\\n        return null;\\n      }\\n      ++pos;\\n      skipWs();\\n      const attrEndChar = s[pos];\\n      if (attrEndChar !== '\\\"' && attrEndChar !== \\\"'\\\") {\\n        return null;\\n      }\\n      const attrEndIndex = s.indexOf(attrEndChar, ++pos);\\n      if (attrEndIndex \u003C 0) {\\n        return null;\\n      }\\n      attrValue = s.substring(pos, attrEndIndex);\\n      attributes.push({\\n        name: attrName,\\n        value: this._resolveEntities(attrValue),\\n      });\\n      pos = attrEndIndex + 1;\\n      skipWs();\\n    }\\n    return {\\n      name,\\n      attributes,\\n      parsed: pos - start,\\n    };\\n  }\\n\\n  _parseProcessingInstruction(s, start) {\\n    let pos = start;\\n\\n    function skipWs() {\\n      while (pos \u003C s.length && isWhitespace(s, pos)) {\\n        ++pos;\\n      }\\n    }\\n\\n    while (\\n      pos \u003C s.length &&\\n      !isWhitespace(s, pos) &&\\n      s[pos] !== \\\">\\\" &&\\n      s[pos] !== \\\"?\\\" &&\\n      s[pos] !== \\\"\u002F\\\"\\n    ) {\\n      ++pos;\\n    }\\n    const name = s.substring(start, pos);\\n    skipWs();\\n    const attrStart = pos;\\n    while (pos \u003C s.length && (s[pos] !== \\\"?\\\" || s[pos + 1] !== \\\">\\\")) {\\n      ++pos;\\n    }\\n    const value = s.substring(attrStart, pos);\\n    return {\\n      name,\\n      value,\\n      parsed: pos - start,\\n    };\\n  }\\n\\n  parseXml(s) {\\n    let i = 0;\\n    while (i \u003C s.length) {\\n      const ch = s[i];\\n      let j = i;\\n      if (ch === \\\"\u003C\\\") {\\n        ++j;\\n        const ch2 = s[j];\\n        let q;\\n        switch (ch2) {\\n          case \\\"\u002F\\\":\\n            ++j;\\n            q = s.indexOf(\\\">\\\", j);\\n            if (q \u003C 0) {\\n              this.onError(XMLParserErrorCode.UnterminatedElement);\\n              return;\\n            }\\n            this.onEndElement(s.substring(j, q));\\n            j = q + 1;\\n            break;\\n          case \\\"?\\\":\\n            ++j;\\n            const pi = this._parseProcessingInstruction(s, j);\\n            if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== \\\"?>\\\") {\\n              this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);\\n              return;\\n            }\\n            this.onPi(pi.name, pi.value);\\n            j += pi.parsed + 2;\\n            break;\\n          case \\\"!\\\":\\n            if (s.substring(j + 1, j + 3) === \\\"--\\\") {\\n              q = s.indexOf(\\\"-->\\\", j + 3);\\n              if (q \u003C 0) {\\n                this.onError(XMLParserErrorCode.UnterminatedComment);\\n                return;\\n              }\\n              this.onComment(s.substring(j + 3, q));\\n              j = q + 3;\\n            } else if (s.substring(j + 1, j + 8) === \\\"[CDATA[\\\") {\\n              q = s.indexOf(\\\"]]>\\\", j + 8);\\n              if (q \u003C 0) {\\n                this.onError(XMLParserErrorCode.UnterminatedCdat);\\n                return;\\n              }\\n              this.onCdata(s.substring(j + 8, q));\\n              j = q + 3;\\n            } else if (s.substring(j + 1, j + 8) === \\\"DOCTYPE\\\") {\\n              const q2 = s.indexOf(\\\"[\\\", j + 8);\\n              let complexDoctype = false;\\n              q = s.indexOf(\\\">\\\", j + 8);\\n              if (q \u003C 0) {\\n                this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\\n                return;\\n              }\\n              if (q2 > 0 && q > q2) {\\n                q = s.indexOf(\\\"]>\\\", j + 8);\\n                if (q \u003C 0) {\\n                  this.onError(\\n                    XMLParserErrorCode.UnterminatedDoctypeDeclaration\\n                  );\\n                  return;\\n                }\\n                complexDoctype = true;\\n              }\\n              const doctypeContent = s.substring(\\n                j + 8,\\n                q + (complexDoctype ? 1 : 0)\\n              );\\n              this.onDoctype(doctypeContent);\\n              j = q + (complexDoctype ? 2 : 1);\\n            } else {\\n              this.onError(XMLParserErrorCode.MalformedElement);\\n              return;\\n            }\\n            break;\\n          default:\\n            const content = this._parseContent(s, j);\\n            if (content === null) {\\n              this.onError(XMLParserErrorCode.MalformedElement);\\n              return;\\n            }\\n            let isClosed = false;\\n            if (\\n              s.substring(j + content.parsed, j + content.parsed + 2) === \\\"\u002F>\\\"\\n            ) {\\n              isClosed = true;\\n            } else if (\\n              s.substring(j + content.parsed, j + content.parsed + 1) !== \\\">\\\"\\n            ) {\\n              this.onError(XMLParserErrorCode.UnterminatedElement);\\n              return;\\n            }\\n            this.onBeginElement(content.name, content.attributes, isClosed);\\n            j += content.parsed + (isClosed ? 2 : 1);\\n            break;\\n        }\\n      } else {\\n        while (j \u003C s.length && s[j] !== \\\"\u003C\\\") {\\n          j++;\\n        }\\n        const text = s.substring(i, j);\\n        this.onText(this._resolveEntities(text));\\n      }\\n      i = j;\\n    }\\n  }\\n\\n  onResolveEntity(name) {\\n    return `&${name};`;\\n  }\\n\\n  onPi(name, value) {}\\n\\n  onComment(text) {}\\n\\n  onCdata(text) {}\\n\\n  onDoctype(doctypeContent) {}\\n\\n  onText(text) {}\\n\\n  onBeginElement(name, attributes, isEmpty) {}\\n\\n  onEndElement(name) {}\\n\\n  onError(code) {}\\n}\\n\\nclass SimpleDOMNode {\\n  constructor(nodeName, nodeValue) {\\n    this.nodeName = nodeName;\\n    this.nodeValue = nodeValue;\\n\\n    Object.defineProperty(this, \\\"parentNode\\\", { value: null, writable: true });\\n  }\\n\\n  get firstChild() {\\n    return this.childNodes?.[0];\\n  }\\n\\n  get nextSibling() {\\n    const childNodes = this.parentNode.childNodes;\\n    if (!childNodes) {\\n      return undefined;\\n    }\\n    const index = childNodes.indexOf(this);\\n    if (index === -1) {\\n      return undefined;\\n    }\\n    return childNodes[index + 1];\\n  }\\n\\n  get textContent() {\\n    if (!this.childNodes) {\\n      return this.nodeValue || \\\"\\\";\\n    }\\n    return this.childNodes\\n      .map(function (child) {\\n        return child.textContent;\\n      })\\n      .join(\\\"\\\");\\n  }\\n\\n  get children() {\\n    return this.childNodes || [];\\n  }\\n\\n  hasChildNodes() {\\n    return this.childNodes?.length > 0;\\n  }\\n\\n  \u002F**\\n   * Search a node in the tree with the given path\\n   * foo.bar[nnn], i.e. find the nnn-th node named\\n   * bar under a node named foo.\\n   *\\n   * @param {Array} paths - an array of objects as\\n   * returned by {parseXFAPath}.\\n   * @param {number} pos - the current position in\\n   * the paths array.\\n   * @returns {SimpleDOMNode} The node corresponding\\n   * to the path or null if not found.\\n   *\u002F\\n  searchNode(paths, pos) {\\n    if (pos >= paths.length) {\\n      return this;\\n    }\\n\\n    const component = paths[pos];\\n    if (component.name.startsWith(\\\"#\\\") && pos \u003C paths.length - 1) {\\n      \u002F\u002F If it starts with a # then it's a class which is not a concept for\\n      \u002F\u002F datasets elements (https:\u002F\u002Fwww.pdfa.org\u002Fnorm-refs\u002FXFA-3_3.pdf#page=96).\\n      return this.searchNode(paths, pos + 1);\\n    }\\n    const stack = [];\\n    let node = this;\\n\\n    while (true) {\\n      if (component.name === node.nodeName) {\\n        if (component.pos === 0) {\\n          const res = node.searchNode(paths, pos + 1);\\n          if (res !== null) {\\n            return res;\\n          }\\n        } else if (stack.length === 0) {\\n          return null;\\n        } else {\\n          const [parent] = stack.pop();\\n          let siblingPos = 0;\\n          for (const child of parent.childNodes) {\\n            if (component.name === child.nodeName) {\\n              if (siblingPos === component.pos) {\\n                return child.searchNode(paths, pos + 1);\\n              }\\n              siblingPos++;\\n            }\\n          }\\n          \u002F\u002F We didn't find the correct sibling\\n          \u002F\u002F so just return the first found node\\n          return node.searchNode(paths, pos + 1);\\n        }\\n      }\\n\\n      if (node.childNodes?.length > 0) {\\n        stack.push([node, 0]);\\n        node = node.childNodes[0];\\n      } else if (stack.length === 0) {\\n        return null;\\n      } else {\\n        while (stack.length !== 0) {\\n          const [parent, currentPos] = stack.pop();\\n          const newPos = currentPos + 1;\\n          if (newPos \u003C parent.childNodes.length) {\\n            stack.push([parent, newPos]);\\n            node = parent.childNodes[newPos];\\n            break;\\n          }\\n        }\\n        if (stack.length === 0) {\\n          return null;\\n        }\\n      }\\n    }\\n  }\\n\\n  dump(buffer) {\\n    if (this.nodeName === \\\"#text\\\") {\\n      buffer.push(encodeToXmlString(this.nodeValue));\\n      return;\\n    }\\n\\n    buffer.push(`\u003C${this.nodeName}`);\\n    if (this.attributes) {\\n      for (const attribute of this.attributes) {\\n        buffer.push(\\n          ` ${attribute.name}=\\\"${encodeToXmlString(attribute.value)}\\\"`\\n        );\\n      }\\n    }\\n    if (this.hasChildNodes()) {\\n      buffer.push(\\\">\\\");\\n      for (const child of this.childNodes) {\\n        child.dump(buffer);\\n      }\\n      buffer.push(`\u003C\u002F${this.nodeName}>`);\\n    } else if (this.nodeValue) {\\n      buffer.push(`>${encodeToXmlString(this.nodeValue)}\u003C\u002F${this.nodeName}>`);\\n    } else {\\n      buffer.push(\\\"\u002F>\\\");\\n    }\\n  }\\n}\\n\\nclass SimpleXMLParser extends XMLParserBase {\\n  constructor({ hasAttributes = false, lowerCaseName = false }) {\\n    super();\\n    this._currentFragment = null;\\n    this._stack = null;\\n    this._errorCode = XMLParserErrorCode.NoError;\\n    this._hasAttributes = hasAttributes;\\n    this._lowerCaseName = lowerCaseName;\\n  }\\n\\n  parseFromString(data) {\\n    this._currentFragment = [];\\n    this._stack = [];\\n    this._errorCode = XMLParserErrorCode.NoError;\\n\\n    this.parseXml(data);\\n\\n    if (this._errorCode !== XMLParserErrorCode.NoError) {\\n      return undefined; \u002F\u002F return undefined on error\\n    }\\n\\n    \u002F\u002F We should only have one root.\\n    const [documentElement] = this._currentFragment;\\n    if (!documentElement) {\\n      return undefined; \u002F\u002F Return undefined if no root was found.\\n    }\\n    return { documentElement };\\n  }\\n\\n  onText(text) {\\n    if (isWhitespaceString(text)) {\\n      return;\\n    }\\n    const node = new SimpleDOMNode(\\\"#text\\\", text);\\n    this._currentFragment.push(node);\\n  }\\n\\n  onCdata(text) {\\n    const node = new SimpleDOMNode(\\\"#text\\\", text);\\n    this._currentFragment.push(node);\\n  }\\n\\n  onBeginElement(name, attributes, isEmpty) {\\n    if (this._lowerCaseName) {\\n      name = name.toLowerCase();\\n    }\\n    const node = new SimpleDOMNode(name);\\n    node.childNodes = [];\\n    if (this._hasAttributes) {\\n      node.attributes = attributes;\\n    }\\n    this._currentFragment.push(node);\\n    if (isEmpty) {\\n      return;\\n    }\\n    this._stack.push(this._currentFragment);\\n    this._currentFragment = node.childNodes;\\n  }\\n\\n  onEndElement(name) {\\n    this._currentFragment = this._stack.pop() || [];\\n    const lastElement = this._currentFragment.at(-1);\\n    if (!lastElement) {\\n      return null;\\n    }\\n    for (const childNode of lastElement.childNodes) {\\n      childNode.parentNode = lastElement;\\n    }\\n    return lastElement;\\n  }\\n\\n  onError(code) {\\n    this._errorCode = code;\\n  }\\n}\\n\\nexport { SimpleDOMNode, SimpleXMLParser, XMLParserBase, XMLParserErrorCode };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { SimpleXMLParser } from \\\".\u002Fxml_parser.js\\\";\\n\\nclass MetadataParser {\\n  constructor(data) {\\n    \u002F\u002F Ghostscript may produce invalid metadata, so try to repair that first.\\n    data = this._repair(data);\\n\\n    \u002F\u002F Convert the string to an XML document.\\n    const parser = new SimpleXMLParser({ lowerCaseName: true });\\n    const xmlDocument = parser.parseFromString(data);\\n\\n    this._metadataMap = new Map();\\n    this._data = data;\\n\\n    if (xmlDocument) {\\n      this._parse(xmlDocument);\\n    }\\n  }\\n\\n  _repair(data) {\\n    \u002F\u002F Start by removing any \\\"junk\\\" before the first tag (see issue 10395).\\n    return data\\n      .replace(\u002F^[^\u003C]+\u002F, \\\"\\\")\\n      .replaceAll(\u002F>\\\\\\\\376\\\\\\\\377([^\u003C]+)\u002Fg, function (all, codes) {\\n        const bytes = codes\\n          .replaceAll(\u002F\\\\\\\\([0-3])([0-7])([0-7])\u002Fg, function (code, d1, d2, d3) {\\n            return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);\\n          })\\n          .replaceAll(\u002F&(amp|apos|gt|lt|quot);\u002Fg, function (str, name) {\\n            switch (name) {\\n              case \\\"amp\\\":\\n                return \\\"&\\\";\\n              case \\\"apos\\\":\\n                return \\\"'\\\";\\n              case \\\"gt\\\":\\n                return \\\">\\\";\\n              case \\\"lt\\\":\\n                return \\\"\u003C\\\";\\n              case \\\"quot\\\":\\n                return '\\\"';\\n            }\\n            throw new Error(`_repair: ${name} isn't defined.`);\\n          });\\n\\n        const charBuf = [\\\">\\\"];\\n        for (let i = 0, ii = bytes.length; i \u003C ii; i += 2) {\\n          const code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);\\n          if (\\n            code >= \u002F* Space = *\u002F 32 &&\\n            code \u003C \u002F* Delete = *\u002F 127 &&\\n            code !== \u002F* '\u003C' = *\u002F 60 &&\\n            code !== \u002F* '>' = *\u002F 62 &&\\n            code !== \u002F* '&' = *\u002F 38\\n          ) {\\n            charBuf.push(String.fromCharCode(code));\\n          } else {\\n            charBuf.push(\\n              \\\"&#x\\\" + (0x10000 + code).toString(16).substring(1) + \\\";\\\"\\n            );\\n          }\\n        }\\n        return charBuf.join(\\\"\\\");\\n      });\\n  }\\n\\n  _getSequence(entry) {\\n    const name = entry.nodeName;\\n    if (name !== \\\"rdf:bag\\\" && name !== \\\"rdf:seq\\\" && name !== \\\"rdf:alt\\\") {\\n      return null;\\n    }\\n    return entry.childNodes.filter(node => node.nodeName === \\\"rdf:li\\\");\\n  }\\n\\n  _parseArray(entry) {\\n    if (!entry.hasChildNodes()) {\\n      return;\\n    }\\n    \u002F\u002F Child must be a Bag (unordered array) or a Seq.\\n    const [seqNode] = entry.childNodes;\\n    const sequence = this._getSequence(seqNode) || [];\\n\\n    this._metadataMap.set(\\n      entry.nodeName,\\n      sequence.map(node => node.textContent.trim())\\n    );\\n  }\\n\\n  _parse(xmlDocument) {\\n    let rdf = xmlDocument.documentElement;\\n\\n    if (rdf.nodeName !== \\\"rdf:rdf\\\") {\\n      \u002F\u002F Wrapped in \u003Cxmpmeta>\\n      rdf = rdf.firstChild;\\n      while (rdf && rdf.nodeName !== \\\"rdf:rdf\\\") {\\n        rdf = rdf.nextSibling;\\n      }\\n    }\\n\\n    if (!rdf || rdf.nodeName !== \\\"rdf:rdf\\\" || !rdf.hasChildNodes()) {\\n      return;\\n    }\\n\\n    for (const desc of rdf.childNodes) {\\n      if (desc.nodeName !== \\\"rdf:description\\\") {\\n        continue;\\n      }\\n\\n      for (const entry of desc.childNodes) {\\n        const name = entry.nodeName;\\n        switch (name) {\\n          case \\\"#text\\\":\\n            continue;\\n          case \\\"dc:creator\\\":\\n          case \\\"dc:subject\\\":\\n            this._parseArray(entry);\\n            continue;\\n        }\\n        this._metadataMap.set(name, entry.textContent.trim());\\n      }\\n    }\\n  }\\n\\n  get serializable() {\\n    return {\\n      parsedData: this._metadataMap,\\n      rawData: this._data,\\n    };\\n  }\\n}\\n\\nexport { MetadataParser };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { DecodeStream } from \\\".\u002Fdecode_stream.js\\\";\\n\\nconst chunkSize = 512;\\n\\nclass DecryptStream extends DecodeStream {\\n  constructor(str, maybeLength, decrypt) {\\n    super(maybeLength);\\n\\n    this.str = str;\\n    this.dict = str.dict;\\n    this.decrypt = decrypt;\\n    this.nextChunk = null;\\n    this.initialized = false;\\n  }\\n\\n  readBlock() {\\n    let chunk;\\n    if (this.initialized) {\\n      chunk = this.nextChunk;\\n    } else {\\n      chunk = this.str.getBytes(chunkSize);\\n      this.initialized = true;\\n    }\\n    if (!chunk || chunk.length === 0) {\\n      this.eof = true;\\n      return;\\n    }\\n    this.nextChunk = this.str.getBytes(chunkSize);\\n    const hasMoreData = this.nextChunk?.length > 0;\\n\\n    const decrypt = this.decrypt;\\n    chunk = decrypt(chunk, !hasMoreData);\\n\\n    const bufferLength = this.bufferLength,\\n      newLength = bufferLength + chunk.length,\\n      buffer = this.ensureBuffer(newLength);\\n    buffer.set(chunk, bufferLength);\\n    this.bufferLength = newLength;\\n  }\\n}\\n\\nexport { DecryptStream };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  bytesToString,\\n  FormatError,\\n  isArrayEqual,\\n  PasswordException,\\n  PasswordResponses,\\n  stringToBytes,\\n  unreachable,\\n  utf8StringToString,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { Dict, isName, Name } from \\\".\u002Fprimitives.js\\\";\\nimport { DecryptStream } from \\\".\u002Fdecrypt_stream.js\\\";\\n\\nclass ARCFourCipher {\\n  constructor(key) {\\n    this.a = 0;\\n    this.b = 0;\\n    const s = new Uint8Array(256);\\n    const keyLength = key.length;\\n\\n    for (let i = 0; i \u003C 256; ++i) {\\n      s[i] = i;\\n    }\\n    for (let i = 0, j = 0; i \u003C 256; ++i) {\\n      const tmp = s[i];\\n      j = (j + tmp + key[i % keyLength]) & 0xff;\\n      s[i] = s[j];\\n      s[j] = tmp;\\n    }\\n    this.s = s;\\n  }\\n\\n  encryptBlock(data) {\\n    let a = this.a,\\n      b = this.b;\\n    const s = this.s;\\n    const n = data.length;\\n    const output = new Uint8Array(n);\\n    for (let i = 0; i \u003C n; ++i) {\\n      a = (a + 1) & 0xff;\\n      const tmp = s[a];\\n      b = (b + tmp) & 0xff;\\n      const tmp2 = s[b];\\n      s[a] = tmp2;\\n      s[b] = tmp;\\n      output[i] = data[i] ^ s[(tmp + tmp2) & 0xff];\\n    }\\n    this.a = a;\\n    this.b = b;\\n    return output;\\n  }\\n\\n  decryptBlock(data) {\\n    return this.encryptBlock(data);\\n  }\\n\\n  encrypt(data) {\\n    return this.encryptBlock(data);\\n  }\\n}\\n\\nconst calculateMD5 = (function calculateMD5Closure() {\\n  const r = new Uint8Array([\\n    7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5,\\n    9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11,\\n    16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10,\\n    15, 21,\\n  ]);\\n\\n  const k = new Int32Array([\\n    -680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426,\\n    -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162,\\n    1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632,\\n    643717713, -373897302, -701558691, 38016083, -660478335, -405537848,\\n    568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784,\\n    1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556,\\n    -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222,\\n    -722521979, 76029189, -640364487, -421815835, 530742520, -995338651,\\n    -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606,\\n    -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649,\\n    -145523070, -1120210379, 718787259, -343485551,\\n  ]);\\n\\n  function hash(data, offset, length) {\\n    let h0 = 1732584193,\\n      h1 = -271733879,\\n      h2 = -1732584194,\\n      h3 = 271733878;\\n    \u002F\u002F pre-processing\\n    const paddedLength = (length + 72) & ~63; \u002F\u002F data + 9 extra bytes\\n    const padded = new Uint8Array(paddedLength);\\n    let i, j;\\n    for (i = 0; i \u003C length; ++i) {\\n      padded[i] = data[offset++];\\n    }\\n    padded[i++] = 0x80;\\n    const n = paddedLength - 8;\\n    while (i \u003C n) {\\n      padded[i++] = 0;\\n    }\\n    padded[i++] = (length \u003C\u003C 3) & 0xff;\\n    padded[i++] = (length >> 5) & 0xff;\\n    padded[i++] = (length >> 13) & 0xff;\\n    padded[i++] = (length >> 21) & 0xff;\\n    padded[i++] = (length >>> 29) & 0xff;\\n    padded[i++] = 0;\\n    padded[i++] = 0;\\n    padded[i++] = 0;\\n    const w = new Int32Array(16);\\n    for (i = 0; i \u003C paddedLength; ) {\\n      for (j = 0; j \u003C 16; ++j, i += 4) {\\n        w[j] =\\n          padded[i] |\\n          (padded[i + 1] \u003C\u003C 8) |\\n          (padded[i + 2] \u003C\u003C 16) |\\n          (padded[i + 3] \u003C\u003C 24);\\n      }\\n      let a = h0,\\n        b = h1,\\n        c = h2,\\n        d = h3,\\n        f,\\n        g;\\n      for (j = 0; j \u003C 64; ++j) {\\n        if (j \u003C 16) {\\n          f = (b & c) | (~b & d);\\n          g = j;\\n        } else if (j \u003C 32) {\\n          f = (d & b) | (~d & c);\\n          g = (5 * j + 1) & 15;\\n        } else if (j \u003C 48) {\\n          f = b ^ c ^ d;\\n          g = (3 * j + 5) & 15;\\n        } else {\\n          f = c ^ (b | ~d);\\n          g = (7 * j) & 15;\\n        }\\n        const tmp = d,\\n          rotateArg = (a + f + k[j] + w[g]) | 0,\\n          rotate = r[j];\\n        d = c;\\n        c = b;\\n        b = (b + ((rotateArg \u003C\u003C rotate) | (rotateArg >>> (32 - rotate)))) | 0;\\n        a = tmp;\\n      }\\n      h0 = (h0 + a) | 0;\\n      h1 = (h1 + b) | 0;\\n      h2 = (h2 + c) | 0;\\n      h3 = (h3 + d) | 0;\\n    }\\n    \u002F\u002F prettier-ignore\\n    return new Uint8Array([\\n      h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >>> 24) & 0xFF,\\n      h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >>> 24) & 0xFF,\\n      h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >>> 24) & 0xFF,\\n      h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >>> 24) & 0xFF\\n    ]);\\n  }\\n\\n  return hash;\\n})();\\n\\nclass Word64 {\\n  constructor(highInteger, lowInteger) {\\n    this.high = highInteger | 0;\\n    this.low = lowInteger | 0;\\n  }\\n\\n  and(word) {\\n    this.high &= word.high;\\n    this.low &= word.low;\\n  }\\n\\n  xor(word) {\\n    this.high ^= word.high;\\n    this.low ^= word.low;\\n  }\\n\\n  or(word) {\\n    this.high |= word.high;\\n    this.low |= word.low;\\n  }\\n\\n  shiftRight(places) {\\n    if (places >= 32) {\\n      this.low = (this.high >>> (places - 32)) | 0;\\n      this.high = 0;\\n    } else {\\n      this.low = (this.low >>> places) | (this.high \u003C\u003C (32 - places));\\n      this.high = (this.high >>> places) | 0;\\n    }\\n  }\\n\\n  shiftLeft(places) {\\n    if (places >= 32) {\\n      this.high = this.low \u003C\u003C (places - 32);\\n      this.low = 0;\\n    } else {\\n      this.high = (this.high \u003C\u003C places) | (this.low >>> (32 - places));\\n      this.low \u003C\u003C= places;\\n    }\\n  }\\n\\n  rotateRight(places) {\\n    let low, high;\\n    if (places & 32) {\\n      high = this.low;\\n      low = this.high;\\n    } else {\\n      low = this.low;\\n      high = this.high;\\n    }\\n    places &= 31;\\n    this.low = (low >>> places) | (high \u003C\u003C (32 - places));\\n    this.high = (high >>> places) | (low \u003C\u003C (32 - places));\\n  }\\n\\n  not() {\\n    this.high = ~this.high;\\n    this.low = ~this.low;\\n  }\\n\\n  add(word) {\\n    const lowAdd = (this.low >>> 0) + (word.low >>> 0);\\n    let highAdd = (this.high >>> 0) + (word.high >>> 0);\\n    if (lowAdd > 0xffffffff) {\\n      highAdd += 1;\\n    }\\n    this.low = lowAdd | 0;\\n    this.high = highAdd | 0;\\n  }\\n\\n  copyTo(bytes, offset) {\\n    bytes[offset] = (this.high >>> 24) & 0xff;\\n    bytes[offset + 1] = (this.high >> 16) & 0xff;\\n    bytes[offset + 2] = (this.high >> 8) & 0xff;\\n    bytes[offset + 3] = this.high & 0xff;\\n    bytes[offset + 4] = (this.low >>> 24) & 0xff;\\n    bytes[offset + 5] = (this.low >> 16) & 0xff;\\n    bytes[offset + 6] = (this.low >> 8) & 0xff;\\n    bytes[offset + 7] = this.low & 0xff;\\n  }\\n\\n  assign(word) {\\n    this.high = word.high;\\n    this.low = word.low;\\n  }\\n}\\n\\nconst calculateSHA256 = (function calculateSHA256Closure() {\\n  function rotr(x, n) {\\n    return (x >>> n) | (x \u003C\u003C (32 - n));\\n  }\\n\\n  function ch(x, y, z) {\\n    return (x & y) ^ (~x & z);\\n  }\\n\\n  function maj(x, y, z) {\\n    return (x & y) ^ (x & z) ^ (y & z);\\n  }\\n\\n  function sigma(x) {\\n    return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);\\n  }\\n\\n  function sigmaPrime(x) {\\n    return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);\\n  }\\n\\n  function littleSigma(x) {\\n    return rotr(x, 7) ^ rotr(x, 18) ^ (x >>> 3);\\n  }\\n\\n  function littleSigmaPrime(x) {\\n    return rotr(x, 17) ^ rotr(x, 19) ^ (x >>> 10);\\n  }\\n\\n  const k = [\\n    0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1,\\n    0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\\n    0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786,\\n    0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\\n    0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\\n    0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\\n    0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b,\\n    0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\\n    0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a,\\n    0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\\n    0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,\\n  ];\\n\\n  function hash(data, offset, length) {\\n    \u002F\u002F initial hash values\\n    let h0 = 0x6a09e667,\\n      h1 = 0xbb67ae85,\\n      h2 = 0x3c6ef372,\\n      h3 = 0xa54ff53a,\\n      h4 = 0x510e527f,\\n      h5 = 0x9b05688c,\\n      h6 = 0x1f83d9ab,\\n      h7 = 0x5be0cd19;\\n    \u002F\u002F pre-processing\\n    const paddedLength = Math.ceil((length + 9) \u002F 64) * 64;\\n    const padded = new Uint8Array(paddedLength);\\n    let i, j;\\n    for (i = 0; i \u003C length; ++i) {\\n      padded[i] = data[offset++];\\n    }\\n    padded[i++] = 0x80;\\n    const n = paddedLength - 8;\\n    while (i \u003C n) {\\n      padded[i++] = 0;\\n    }\\n    padded[i++] = 0;\\n    padded[i++] = 0;\\n    padded[i++] = 0;\\n    padded[i++] = (length >>> 29) & 0xff;\\n    padded[i++] = (length >> 21) & 0xff;\\n    padded[i++] = (length >> 13) & 0xff;\\n    padded[i++] = (length >> 5) & 0xff;\\n    padded[i++] = (length \u003C\u003C 3) & 0xff;\\n    const w = new Uint32Array(64);\\n    \u002F\u002F for each 512 bit block\\n    for (i = 0; i \u003C paddedLength; ) {\\n      for (j = 0; j \u003C 16; ++j) {\\n        w[j] =\\n          (padded[i] \u003C\u003C 24) |\\n          (padded[i + 1] \u003C\u003C 16) |\\n          (padded[i + 2] \u003C\u003C 8) |\\n          padded[i + 3];\\n        i += 4;\\n      }\\n\\n      for (j = 16; j \u003C 64; ++j) {\\n        w[j] =\\n          (littleSigmaPrime(w[j - 2]) +\\n            w[j - 7] +\\n            littleSigma(w[j - 15]) +\\n            w[j - 16]) |\\n          0;\\n      }\\n      let a = h0,\\n        b = h1,\\n        c = h2,\\n        d = h3,\\n        e = h4,\\n        f = h5,\\n        g = h6,\\n        h = h7,\\n        t1,\\n        t2;\\n      for (j = 0; j \u003C 64; ++j) {\\n        t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j];\\n        t2 = sigma(a) + maj(a, b, c);\\n        h = g;\\n        g = f;\\n        f = e;\\n        e = (d + t1) | 0;\\n        d = c;\\n        c = b;\\n        b = a;\\n        a = (t1 + t2) | 0;\\n      }\\n      h0 = (h0 + a) | 0;\\n      h1 = (h1 + b) | 0;\\n      h2 = (h2 + c) | 0;\\n      h3 = (h3 + d) | 0;\\n      h4 = (h4 + e) | 0;\\n      h5 = (h5 + f) | 0;\\n      h6 = (h6 + g) | 0;\\n      h7 = (h7 + h) | 0;\\n    }\\n    \u002F\u002F prettier-ignore\\n    return new Uint8Array([\\n      (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, (h0) & 0xFF,\\n      (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, (h1) & 0xFF,\\n      (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, (h2) & 0xFF,\\n      (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, (h3) & 0xFF,\\n      (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, (h4) & 0xFF,\\n      (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, (h5) & 0xFF,\\n      (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, (h6) & 0xFF,\\n      (h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, (h7) & 0xFF\\n    ]);\\n  }\\n\\n  return hash;\\n})();\\n\\nconst calculateSHA512 = (function calculateSHA512Closure() {\\n  function ch(result, x, y, z, tmp) {\\n    result.assign(x);\\n    result.and(y);\\n    tmp.assign(x);\\n    tmp.not();\\n    tmp.and(z);\\n    result.xor(tmp);\\n  }\\n\\n  function maj(result, x, y, z, tmp) {\\n    result.assign(x);\\n    result.and(y);\\n    tmp.assign(x);\\n    tmp.and(z);\\n    result.xor(tmp);\\n    tmp.assign(y);\\n    tmp.and(z);\\n    result.xor(tmp);\\n  }\\n\\n  function sigma(result, x, tmp) {\\n    result.assign(x);\\n    result.rotateRight(28);\\n    tmp.assign(x);\\n    tmp.rotateRight(34);\\n    result.xor(tmp);\\n    tmp.assign(x);\\n    tmp.rotateRight(39);\\n    result.xor(tmp);\\n  }\\n\\n  function sigmaPrime(result, x, tmp) {\\n    result.assign(x);\\n    result.rotateRight(14);\\n    tmp.assign(x);\\n    tmp.rotateRight(18);\\n    result.xor(tmp);\\n    tmp.assign(x);\\n    tmp.rotateRight(41);\\n    result.xor(tmp);\\n  }\\n\\n  function littleSigma(result, x, tmp) {\\n    result.assign(x);\\n    result.rotateRight(1);\\n    tmp.assign(x);\\n    tmp.rotateRight(8);\\n    result.xor(tmp);\\n    tmp.assign(x);\\n    tmp.shiftRight(7);\\n    result.xor(tmp);\\n  }\\n\\n  function littleSigmaPrime(result, x, tmp) {\\n    result.assign(x);\\n    result.rotateRight(19);\\n    tmp.assign(x);\\n    tmp.rotateRight(61);\\n    result.xor(tmp);\\n    tmp.assign(x);\\n    tmp.shiftRight(6);\\n    result.xor(tmp);\\n  }\\n\\n  \u002F\u002F prettier-ignore\\n  const k = [\\n    new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd),\\n    new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc),\\n    new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019),\\n    new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118),\\n    new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe),\\n    new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2),\\n    new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1),\\n    new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694),\\n    new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3),\\n    new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65),\\n    new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483),\\n    new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5),\\n    new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210),\\n    new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4),\\n    new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725),\\n    new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70),\\n    new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926),\\n    new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df),\\n    new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8),\\n    new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b),\\n    new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001),\\n    new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30),\\n    new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910),\\n    new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8),\\n    new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53),\\n    new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8),\\n    new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb),\\n    new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3),\\n    new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60),\\n    new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec),\\n    new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9),\\n    new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b),\\n    new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207),\\n    new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178),\\n    new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6),\\n    new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b),\\n    new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493),\\n    new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c),\\n    new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a),\\n    new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)];\\n\\n  function hash(data, offset, length, mode384 = false) {\\n    \u002F\u002F initial hash values\\n    let h0, h1, h2, h3, h4, h5, h6, h7;\\n    if (!mode384) {\\n      h0 = new Word64(0x6a09e667, 0xf3bcc908);\\n      h1 = new Word64(0xbb67ae85, 0x84caa73b);\\n      h2 = new Word64(0x3c6ef372, 0xfe94f82b);\\n      h3 = new Word64(0xa54ff53a, 0x5f1d36f1);\\n      h4 = new Word64(0x510e527f, 0xade682d1);\\n      h5 = new Word64(0x9b05688c, 0x2b3e6c1f);\\n      h6 = new Word64(0x1f83d9ab, 0xfb41bd6b);\\n      h7 = new Word64(0x5be0cd19, 0x137e2179);\\n    } else {\\n      \u002F\u002F SHA384 is exactly the same\\n      \u002F\u002F except with different starting values and a trimmed result\\n      h0 = new Word64(0xcbbb9d5d, 0xc1059ed8);\\n      h1 = new Word64(0x629a292a, 0x367cd507);\\n      h2 = new Word64(0x9159015a, 0x3070dd17);\\n      h3 = new Word64(0x152fecd8, 0xf70e5939);\\n      h4 = new Word64(0x67332667, 0xffc00b31);\\n      h5 = new Word64(0x8eb44a87, 0x68581511);\\n      h6 = new Word64(0xdb0c2e0d, 0x64f98fa7);\\n      h7 = new Word64(0x47b5481d, 0xbefa4fa4);\\n    }\\n\\n    \u002F\u002F pre-processing\\n    const paddedLength = Math.ceil((length + 17) \u002F 128) * 128;\\n    const padded = new Uint8Array(paddedLength);\\n    let i, j;\\n    for (i = 0; i \u003C length; ++i) {\\n      padded[i] = data[offset++];\\n    }\\n    padded[i++] = 0x80;\\n    const n = paddedLength - 16;\\n    while (i \u003C n) {\\n      padded[i++] = 0;\\n    }\\n    padded[i++] = 0;\\n    padded[i++] = 0;\\n    padded[i++] = 0;\\n    padded[i++] = 0;\\n    padded[i++] = 0;\\n    padded[i++] = 0;\\n    padded[i++] = 0;\\n    padded[i++] = 0;\\n    padded[i++] = 0;\\n    padded[i++] = 0;\\n    padded[i++] = 0;\\n    padded[i++] = (length >>> 29) & 0xff;\\n    padded[i++] = (length >> 21) & 0xff;\\n    padded[i++] = (length >> 13) & 0xff;\\n    padded[i++] = (length >> 5) & 0xff;\\n    padded[i++] = (length \u003C\u003C 3) & 0xff;\\n\\n    const w = new Array(80);\\n    for (i = 0; i \u003C 80; i++) {\\n      w[i] = new Word64(0, 0);\\n    }\\n    let a = new Word64(0, 0),\\n      b = new Word64(0, 0),\\n      c = new Word64(0, 0);\\n    let d = new Word64(0, 0),\\n      e = new Word64(0, 0),\\n      f = new Word64(0, 0);\\n    let g = new Word64(0, 0),\\n      h = new Word64(0, 0);\\n    const t1 = new Word64(0, 0),\\n      t2 = new Word64(0, 0);\\n    const tmp1 = new Word64(0, 0),\\n      tmp2 = new Word64(0, 0);\\n    let tmp3;\\n\\n    \u002F\u002F for each 1024 bit block\\n    for (i = 0; i \u003C paddedLength; ) {\\n      for (j = 0; j \u003C 16; ++j) {\\n        w[j].high =\\n          (padded[i] \u003C\u003C 24) |\\n          (padded[i + 1] \u003C\u003C 16) |\\n          (padded[i + 2] \u003C\u003C 8) |\\n          padded[i + 3];\\n        w[j].low =\\n          (padded[i + 4] \u003C\u003C 24) |\\n          (padded[i + 5] \u003C\u003C 16) |\\n          (padded[i + 6] \u003C\u003C 8) |\\n          padded[i + 7];\\n        i += 8;\\n      }\\n      for (j = 16; j \u003C 80; ++j) {\\n        tmp3 = w[j];\\n        littleSigmaPrime(tmp3, w[j - 2], tmp2);\\n        tmp3.add(w[j - 7]);\\n        littleSigma(tmp1, w[j - 15], tmp2);\\n        tmp3.add(tmp1);\\n        tmp3.add(w[j - 16]);\\n      }\\n\\n      a.assign(h0);\\n      b.assign(h1);\\n      c.assign(h2);\\n      d.assign(h3);\\n      e.assign(h4);\\n      f.assign(h5);\\n      g.assign(h6);\\n      h.assign(h7);\\n      for (j = 0; j \u003C 80; ++j) {\\n        t1.assign(h);\\n        sigmaPrime(tmp1, e, tmp2);\\n        t1.add(tmp1);\\n        ch(tmp1, e, f, g, tmp2);\\n        t1.add(tmp1);\\n        t1.add(k[j]);\\n        t1.add(w[j]);\\n\\n        sigma(t2, a, tmp2);\\n        maj(tmp1, a, b, c, tmp2);\\n        t2.add(tmp1);\\n\\n        tmp3 = h;\\n        h = g;\\n        g = f;\\n        f = e;\\n        d.add(t1);\\n        e = d;\\n        d = c;\\n        c = b;\\n        b = a;\\n        tmp3.assign(t1);\\n        tmp3.add(t2);\\n        a = tmp3;\\n      }\\n      h0.add(a);\\n      h1.add(b);\\n      h2.add(c);\\n      h3.add(d);\\n      h4.add(e);\\n      h5.add(f);\\n      h6.add(g);\\n      h7.add(h);\\n    }\\n\\n    let result;\\n    if (!mode384) {\\n      result = new Uint8Array(64);\\n      h0.copyTo(result, 0);\\n      h1.copyTo(result, 8);\\n      h2.copyTo(result, 16);\\n      h3.copyTo(result, 24);\\n      h4.copyTo(result, 32);\\n      h5.copyTo(result, 40);\\n      h6.copyTo(result, 48);\\n      h7.copyTo(result, 56);\\n    } else {\\n      result = new Uint8Array(48);\\n      h0.copyTo(result, 0);\\n      h1.copyTo(result, 8);\\n      h2.copyTo(result, 16);\\n      h3.copyTo(result, 24);\\n      h4.copyTo(result, 32);\\n      h5.copyTo(result, 40);\\n    }\\n    return result;\\n  }\\n\\n  return hash;\\n})();\\n\\nfunction calculateSHA384(data, offset, length) {\\n  return calculateSHA512(data, offset, length, \u002F* mode384 = *\u002F true);\\n}\\n\\nclass NullCipher {\\n  decryptBlock(data) {\\n    return data;\\n  }\\n\\n  encrypt(data) {\\n    return data;\\n  }\\n}\\n\\nclass AESBaseCipher {\\n  constructor() {\\n    if (this.constructor === AESBaseCipher) {\\n      unreachable(\\\"Cannot initialize AESBaseCipher.\\\");\\n    }\\n\\n    this._s = new Uint8Array([\\n      0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b,\\n      0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,\\n      0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26,\\n      0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,\\n      0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2,\\n      0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0,\\n      0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed,\\n      0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,\\n      0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f,\\n      0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5,\\n      0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec,\\n      0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,\\n      0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14,\\n      0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c,\\n      0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d,\\n      0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,\\n      0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f,\\n      0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e,\\n      0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11,\\n      0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,\\n      0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f,\\n      0xb0, 0x54, 0xbb, 0x16,\\n    ]);\\n\\n    this._inv_s = new Uint8Array([\\n      0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e,\\n      0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87,\\n      0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32,\\n      0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e,\\n      0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49,\\n      0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16,\\n      0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50,\\n      0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84,\\n      0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05,\\n      0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02,\\n      0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41,\\n      0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73,\\n      0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8,\\n      0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89,\\n      0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b,\\n      0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4,\\n      0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59,\\n      0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d,\\n      0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d,\\n      0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61,\\n      0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63,\\n      0x55, 0x21, 0x0c, 0x7d,\\n    ]);\\n\\n    this._mix = new Uint32Array([\\n      0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927,\\n      0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45,\\n      0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb,\\n      0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381,\\n      0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf,\\n      0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66,\\n      0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28,\\n      0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012,\\n      0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec,\\n      0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e,\\n      0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd,\\n      0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7,\\n      0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89,\\n      0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b,\\n      0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815,\\n      0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f,\\n      0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa,\\n      0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8,\\n      0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36,\\n      0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c,\\n      0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742,\\n      0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea,\\n      0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4,\\n      0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e,\\n      0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360,\\n      0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502,\\n      0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87,\\n      0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd,\\n      0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3,\\n      0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621,\\n      0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f,\\n      0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55,\\n      0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26,\\n      0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844,\\n      0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba,\\n      0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480,\\n      0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce,\\n      0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67,\\n      0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929,\\n      0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713,\\n      0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed,\\n      0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f,\\n      0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3,\\n    ]);\\n\\n    this._mixCol = new Uint8Array(256);\\n    for (let i = 0; i \u003C 256; i++) {\\n      this._mixCol[i] = i \u003C 128 ? i \u003C\u003C 1 : (i \u003C\u003C 1) ^ 0x1b;\\n    }\\n\\n    this.buffer = new Uint8Array(16);\\n    this.bufferPosition = 0;\\n  }\\n\\n  _expandKey(cipherKey) {\\n    unreachable(\\\"Cannot call `_expandKey` on the base class\\\");\\n  }\\n\\n  _decrypt(input, key) {\\n    let t, u, v;\\n    const state = new Uint8Array(16);\\n    state.set(input);\\n\\n    \u002F\u002F AddRoundKey\\n    for (let j = 0, k = this._keySize; j \u003C 16; ++j, ++k) {\\n      state[j] ^= key[k];\\n    }\\n    for (let i = this._cyclesOfRepetition - 1; i >= 1; --i) {\\n      \u002F\u002F InvShiftRows\\n      t = state[13];\\n      state[13] = state[9];\\n      state[9] = state[5];\\n      state[5] = state[1];\\n      state[1] = t;\\n      t = state[14];\\n      u = state[10];\\n      state[14] = state[6];\\n      state[10] = state[2];\\n      state[6] = t;\\n      state[2] = u;\\n      t = state[15];\\n      u = state[11];\\n      v = state[7];\\n      state[15] = state[3];\\n      state[11] = t;\\n      state[7] = u;\\n      state[3] = v;\\n      \u002F\u002F InvSubBytes\\n      for (let j = 0; j \u003C 16; ++j) {\\n        state[j] = this._inv_s[state[j]];\\n      }\\n      \u002F\u002F AddRoundKey\\n      for (let j = 0, k = i * 16; j \u003C 16; ++j, ++k) {\\n        state[j] ^= key[k];\\n      }\\n      \u002F\u002F InvMixColumns\\n      for (let j = 0; j \u003C 16; j += 4) {\\n        const s0 = this._mix[state[j]];\\n        const s1 = this._mix[state[j + 1]];\\n        const s2 = this._mix[state[j + 2]];\\n        const s3 = this._mix[state[j + 3]];\\n        t =\\n          s0 ^\\n          (s1 >>> 8) ^\\n          (s1 \u003C\u003C 24) ^\\n          (s2 >>> 16) ^\\n          (s2 \u003C\u003C 16) ^\\n          (s3 >>> 24) ^\\n          (s3 \u003C\u003C 8);\\n        state[j] = (t >>> 24) & 0xff;\\n        state[j + 1] = (t >> 16) & 0xff;\\n        state[j + 2] = (t >> 8) & 0xff;\\n        state[j + 3] = t & 0xff;\\n      }\\n    }\\n    \u002F\u002F InvShiftRows\\n    t = state[13];\\n    state[13] = state[9];\\n    state[9] = state[5];\\n    state[5] = state[1];\\n    state[1] = t;\\n    t = state[14];\\n    u = state[10];\\n    state[14] = state[6];\\n    state[10] = state[2];\\n    state[6] = t;\\n    state[2] = u;\\n    t = state[15];\\n    u = state[11];\\n    v = state[7];\\n    state[15] = state[3];\\n    state[11] = t;\\n    state[7] = u;\\n    state[3] = v;\\n    for (let j = 0; j \u003C 16; ++j) {\\n      \u002F\u002F InvSubBytes\\n      state[j] = this._inv_s[state[j]];\\n      \u002F\u002F AddRoundKey\\n      state[j] ^= key[j];\\n    }\\n    return state;\\n  }\\n\\n  _encrypt(input, key) {\\n    const s = this._s;\\n\\n    let t, u, v;\\n    const state = new Uint8Array(16);\\n    state.set(input);\\n\\n    for (let j = 0; j \u003C 16; ++j) {\\n      \u002F\u002F AddRoundKey\\n      state[j] ^= key[j];\\n    }\\n\\n    for (let i = 1; i \u003C this._cyclesOfRepetition; i++) {\\n      \u002F\u002F SubBytes\\n      for (let j = 0; j \u003C 16; ++j) {\\n        state[j] = s[state[j]];\\n      }\\n      \u002F\u002F ShiftRows\\n      v = state[1];\\n      state[1] = state[5];\\n      state[5] = state[9];\\n      state[9] = state[13];\\n      state[13] = v;\\n      v = state[2];\\n      u = state[6];\\n      state[2] = state[10];\\n      state[6] = state[14];\\n      state[10] = v;\\n      state[14] = u;\\n      v = state[3];\\n      u = state[7];\\n      t = state[11];\\n      state[3] = state[15];\\n      state[7] = v;\\n      state[11] = u;\\n      state[15] = t;\\n      \u002F\u002F MixColumns\\n      for (let j = 0; j \u003C 16; j += 4) {\\n        const s0 = state[j + 0];\\n        const s1 = state[j + 1];\\n        const s2 = state[j + 2];\\n        const s3 = state[j + 3];\\n        t = s0 ^ s1 ^ s2 ^ s3;\\n        state[j + 0] ^= t ^ this._mixCol[s0 ^ s1];\\n        state[j + 1] ^= t ^ this._mixCol[s1 ^ s2];\\n        state[j + 2] ^= t ^ this._mixCol[s2 ^ s3];\\n        state[j + 3] ^= t ^ this._mixCol[s3 ^ s0];\\n      }\\n      \u002F\u002F AddRoundKey\\n      for (let j = 0, k = i * 16; j \u003C 16; ++j, ++k) {\\n        state[j] ^= key[k];\\n      }\\n    }\\n\\n    \u002F\u002F SubBytes\\n    for (let j = 0; j \u003C 16; ++j) {\\n      state[j] = s[state[j]];\\n    }\\n    \u002F\u002F ShiftRows\\n    v = state[1];\\n    state[1] = state[5];\\n    state[5] = state[9];\\n    state[9] = state[13];\\n    state[13] = v;\\n    v = state[2];\\n    u = state[6];\\n    state[2] = state[10];\\n    state[6] = state[14];\\n    state[10] = v;\\n    state[14] = u;\\n    v = state[3];\\n    u = state[7];\\n    t = state[11];\\n    state[3] = state[15];\\n    state[7] = v;\\n    state[11] = u;\\n    state[15] = t;\\n    \u002F\u002F AddRoundKey\\n    for (let j = 0, k = this._keySize; j \u003C 16; ++j, ++k) {\\n      state[j] ^= key[k];\\n    }\\n    return state;\\n  }\\n\\n  _decryptBlock2(data, finalize) {\\n    const sourceLength = data.length;\\n    let buffer = this.buffer,\\n      bufferLength = this.bufferPosition;\\n    const result = [];\\n    let iv = this.iv;\\n\\n    for (let i = 0; i \u003C sourceLength; ++i) {\\n      buffer[bufferLength] = data[i];\\n      ++bufferLength;\\n      if (bufferLength \u003C 16) {\\n        continue;\\n      }\\n      \u002F\u002F buffer is full, decrypting\\n      const plain = this._decrypt(buffer, this._key);\\n      \u002F\u002F xor-ing the IV vector to get plain text\\n      for (let j = 0; j \u003C 16; ++j) {\\n        plain[j] ^= iv[j];\\n      }\\n      iv = buffer;\\n      result.push(plain);\\n      buffer = new Uint8Array(16);\\n      bufferLength = 0;\\n    }\\n    \u002F\u002F saving incomplete buffer\\n    this.buffer = buffer;\\n    this.bufferLength = bufferLength;\\n    this.iv = iv;\\n    if (result.length === 0) {\\n      return new Uint8Array(0);\\n    }\\n    \u002F\u002F combining plain text blocks into one\\n    let outputLength = 16 * result.length;\\n    if (finalize) {\\n      \u002F\u002F undo a padding that is described in RFC 2898\\n      const lastBlock = result.at(-1);\\n      let psLen = lastBlock[15];\\n      if (psLen \u003C= 16) {\\n        for (let i = 15, ii = 16 - psLen; i >= ii; --i) {\\n          if (lastBlock[i] !== psLen) {\\n            \u002F\u002F Invalid padding, assume that the block has no padding.\\n            psLen = 0;\\n            break;\\n          }\\n        }\\n        outputLength -= psLen;\\n        result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);\\n      }\\n    }\\n    const output = new Uint8Array(outputLength);\\n    for (let i = 0, j = 0, ii = result.length; i \u003C ii; ++i, j += 16) {\\n      output.set(result[i], j);\\n    }\\n    return output;\\n  }\\n\\n  decryptBlock(data, finalize, iv = null) {\\n    const sourceLength = data.length;\\n    const buffer = this.buffer;\\n    let bufferLength = this.bufferPosition;\\n    \u002F\u002F If an IV is not supplied, wait for IV values. They are at the start\\n    \u002F\u002F of the stream.\\n    if (iv) {\\n      this.iv = iv;\\n    } else {\\n      for (\\n        let i = 0;\\n        bufferLength \u003C 16 && i \u003C sourceLength;\\n        ++i, ++bufferLength\\n      ) {\\n        buffer[bufferLength] = data[i];\\n      }\\n      if (bufferLength \u003C 16) {\\n        \u002F\u002F Need more data.\\n        this.bufferLength = bufferLength;\\n        return new Uint8Array(0);\\n      }\\n      this.iv = buffer;\\n      data = data.subarray(16);\\n    }\\n    this.buffer = new Uint8Array(16);\\n    this.bufferLength = 0;\\n    \u002F\u002F starting decryption\\n    this.decryptBlock = this._decryptBlock2;\\n    return this.decryptBlock(data, finalize);\\n  }\\n\\n  encrypt(data, iv) {\\n    const sourceLength = data.length;\\n    let buffer = this.buffer,\\n      bufferLength = this.bufferPosition;\\n    const result = [];\\n\\n    if (!iv) {\\n      iv = new Uint8Array(16);\\n    }\\n    for (let i = 0; i \u003C sourceLength; ++i) {\\n      buffer[bufferLength] = data[i];\\n      ++bufferLength;\\n      if (bufferLength \u003C 16) {\\n        continue;\\n      }\\n\\n      for (let j = 0; j \u003C 16; ++j) {\\n        buffer[j] ^= iv[j];\\n      }\\n\\n      \u002F\u002F buffer is full, encrypting\\n      const cipher = this._encrypt(buffer, this._key);\\n      iv = cipher;\\n      result.push(cipher);\\n      buffer = new Uint8Array(16);\\n      bufferLength = 0;\\n    }\\n    \u002F\u002F saving incomplete buffer\\n    this.buffer = buffer;\\n    this.bufferLength = bufferLength;\\n    this.iv = iv;\\n    if (result.length === 0) {\\n      return new Uint8Array(0);\\n    }\\n    \u002F\u002F combining plain text blocks into one\\n    const outputLength = 16 * result.length;\\n    const output = new Uint8Array(outputLength);\\n    for (let i = 0, j = 0, ii = result.length; i \u003C ii; ++i, j += 16) {\\n      output.set(result[i], j);\\n    }\\n    return output;\\n  }\\n}\\n\\nclass AES128Cipher extends AESBaseCipher {\\n  constructor(key) {\\n    super();\\n\\n    this._cyclesOfRepetition = 10;\\n    this._keySize = 160; \u002F\u002F bits\\n\\n    this._rcon = new Uint8Array([\\n      0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\\n      0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\\n      0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\\n      0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\\n      0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,\\n      0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6,\\n      0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72,\\n      0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc,\\n      0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10,\\n      0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e,\\n      0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5,\\n      0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94,\\n      0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02,\\n      0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d,\\n      0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d,\\n      0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f,\\n      0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb,\\n      0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\\n      0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\\n      0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\\n      0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\\n      0x74, 0xe8, 0xcb, 0x8d,\\n    ]);\\n\\n    this._key = this._expandKey(key);\\n  }\\n\\n  _expandKey(cipherKey) {\\n    const b = 176;\\n    const s = this._s;\\n    const rcon = this._rcon;\\n\\n    const result = new Uint8Array(b);\\n    result.set(cipherKey);\\n\\n    for (let j = 16, i = 1; j \u003C b; ++i) {\\n      \u002F\u002F RotWord\\n      let t1 = result[j - 3];\\n      let t2 = result[j - 2];\\n      let t3 = result[j - 1];\\n      let t4 = result[j - 4];\\n      \u002F\u002F SubWord\\n      t1 = s[t1];\\n      t2 = s[t2];\\n      t3 = s[t3];\\n      t4 = s[t4];\\n      \u002F\u002F Rcon\\n      t1 ^= rcon[i];\\n      for (let n = 0; n \u003C 4; ++n) {\\n        result[j] = t1 ^= result[j - 16];\\n        j++;\\n        result[j] = t2 ^= result[j - 16];\\n        j++;\\n        result[j] = t3 ^= result[j - 16];\\n        j++;\\n        result[j] = t4 ^= result[j - 16];\\n        j++;\\n      }\\n    }\\n    return result;\\n  }\\n}\\n\\nclass AES256Cipher extends AESBaseCipher {\\n  constructor(key) {\\n    super();\\n\\n    this._cyclesOfRepetition = 14;\\n    this._keySize = 224; \u002F\u002F bits\\n\\n    this._key = this._expandKey(key);\\n  }\\n\\n  _expandKey(cipherKey) {\\n    const b = 240;\\n    const s = this._s;\\n\\n    const result = new Uint8Array(b);\\n    result.set(cipherKey);\\n\\n    let r = 1;\\n    let t1, t2, t3, t4;\\n    for (let j = 32, i = 1; j \u003C b; ++i) {\\n      if (j % 32 === 16) {\\n        t1 = s[t1];\\n        t2 = s[t2];\\n        t3 = s[t3];\\n        t4 = s[t4];\\n      } else if (j % 32 === 0) {\\n        \u002F\u002F RotWord\\n        t1 = result[j - 3];\\n        t2 = result[j - 2];\\n        t3 = result[j - 1];\\n        t4 = result[j - 4];\\n        \u002F\u002F SubWord\\n        t1 = s[t1];\\n        t2 = s[t2];\\n        t3 = s[t3];\\n        t4 = s[t4];\\n        \u002F\u002F Rcon\\n        t1 ^= r;\\n        if ((r \u003C\u003C= 1) >= 256) {\\n          r = (r ^ 0x1b) & 0xff;\\n        }\\n      }\\n\\n      for (let n = 0; n \u003C 4; ++n) {\\n        result[j] = t1 ^= result[j - 32];\\n        j++;\\n        result[j] = t2 ^= result[j - 32];\\n        j++;\\n        result[j] = t3 ^= result[j - 32];\\n        j++;\\n        result[j] = t4 ^= result[j - 32];\\n        j++;\\n      }\\n    }\\n    return result;\\n  }\\n}\\n\\nclass PDF17 {\\n  checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {\\n    const hashData = new Uint8Array(password.length + 56);\\n    hashData.set(password, 0);\\n    hashData.set(ownerValidationSalt, password.length);\\n    hashData.set(userBytes, password.length + ownerValidationSalt.length);\\n    const result = calculateSHA256(hashData, 0, hashData.length);\\n    return isArrayEqual(result, ownerPassword);\\n  }\\n\\n  checkUserPassword(password, userValidationSalt, userPassword) {\\n    const hashData = new Uint8Array(password.length + 8);\\n    hashData.set(password, 0);\\n    hashData.set(userValidationSalt, password.length);\\n    const result = calculateSHA256(hashData, 0, hashData.length);\\n    return isArrayEqual(result, userPassword);\\n  }\\n\\n  getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\\n    const hashData = new Uint8Array(password.length + 56);\\n    hashData.set(password, 0);\\n    hashData.set(ownerKeySalt, password.length);\\n    hashData.set(userBytes, password.length + ownerKeySalt.length);\\n    const key = calculateSHA256(hashData, 0, hashData.length);\\n    const cipher = new AES256Cipher(key);\\n    return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\\n  }\\n\\n  getUserKey(password, userKeySalt, userEncryption) {\\n    const hashData = new Uint8Array(password.length + 8);\\n    hashData.set(password, 0);\\n    hashData.set(userKeySalt, password.length);\\n    \u002F\u002F `key` is the decryption key for the UE string.\\n    const key = calculateSHA256(hashData, 0, hashData.length);\\n    const cipher = new AES256Cipher(key);\\n    return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\\n  }\\n}\\n\\nclass PDF20 {\\n  _hash(password, input, userBytes) {\\n    \u002F\u002F This refers to Algorithm 2.B as defined in ISO 32000-2.\\n    let k = calculateSHA256(input, 0, input.length).subarray(0, 32);\\n    let e = [0];\\n    let i = 0;\\n    while (i \u003C 64 || e.at(-1) > i - 32) {\\n      const combinedLength = password.length + k.length + userBytes.length,\\n        combinedArray = new Uint8Array(combinedLength);\\n      let writeOffset = 0;\\n      combinedArray.set(password, writeOffset);\\n      writeOffset += password.length;\\n      combinedArray.set(k, writeOffset);\\n      writeOffset += k.length;\\n      combinedArray.set(userBytes, writeOffset);\\n\\n      const k1 = new Uint8Array(combinedLength * 64);\\n      for (let j = 0, pos = 0; j \u003C 64; j++, pos += combinedLength) {\\n        k1.set(combinedArray, pos);\\n      }\\n      \u002F\u002F AES128 CBC NO PADDING with first 16 bytes of k as the key\\n      \u002F\u002F and the second 16 as the iv.\\n      const cipher = new AES128Cipher(k.subarray(0, 16));\\n      e = cipher.encrypt(k1, k.subarray(16, 32));\\n      \u002F\u002F Now we have to take the first 16 bytes of an unsigned big endian\\n      \u002F\u002F integer and compute the remainder modulo 3. That is a fairly large\\n      \u002F\u002F number and JavaScript isn't going to handle that well.\\n      \u002F\u002F The number is e0 + 256 * e1 + 256^2 * e2... and 256 % 3 === 1, hence\\n      \u002F\u002F the powers of 256 are === 1 modulo 3 and finally the number modulo 3\\n      \u002F\u002F is equal to the remainder modulo 3 of the sum of the e_n.\\n      const remainder = e.slice(0, 16).reduce((a, b) => a + b, 0) % 3;\\n      if (remainder === 0) {\\n        k = calculateSHA256(e, 0, e.length);\\n      } else if (remainder === 1) {\\n        k = calculateSHA384(e, 0, e.length);\\n      } else if (remainder === 2) {\\n        k = calculateSHA512(e, 0, e.length);\\n      }\\n      i++;\\n    }\\n    return k.subarray(0, 32);\\n  }\\n\\n  checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {\\n    const hashData = new Uint8Array(password.length + 56);\\n    hashData.set(password, 0);\\n    hashData.set(ownerValidationSalt, password.length);\\n    hashData.set(userBytes, password.length + ownerValidationSalt.length);\\n    const result = this._hash(password, hashData, userBytes);\\n    return isArrayEqual(result, ownerPassword);\\n  }\\n\\n  checkUserPassword(password, userValidationSalt, userPassword) {\\n    const hashData = new Uint8Array(password.length + 8);\\n    hashData.set(password, 0);\\n    hashData.set(userValidationSalt, password.length);\\n    const result = this._hash(password, hashData, []);\\n    return isArrayEqual(result, userPassword);\\n  }\\n\\n  getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\\n    const hashData = new Uint8Array(password.length + 56);\\n    hashData.set(password, 0);\\n    hashData.set(ownerKeySalt, password.length);\\n    hashData.set(userBytes, password.length + ownerKeySalt.length);\\n    const key = this._hash(password, hashData, userBytes);\\n    const cipher = new AES256Cipher(key);\\n    return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\\n  }\\n\\n  getUserKey(password, userKeySalt, userEncryption) {\\n    const hashData = new Uint8Array(password.length + 8);\\n    hashData.set(password, 0);\\n    hashData.set(userKeySalt, password.length);\\n    \u002F\u002F `key` is the decryption key for the UE string.\\n    const key = this._hash(password, hashData, []);\\n    const cipher = new AES256Cipher(key);\\n    return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\\n  }\\n}\\n\\nclass CipherTransform {\\n  constructor(stringCipherConstructor, streamCipherConstructor) {\\n    this.StringCipherConstructor = stringCipherConstructor;\\n    this.StreamCipherConstructor = streamCipherConstructor;\\n  }\\n\\n  createStream(stream, length) {\\n    const cipher = new this.StreamCipherConstructor();\\n    return new DecryptStream(\\n      stream,\\n      length,\\n      function cipherTransformDecryptStream(data, finalize) {\\n        return cipher.decryptBlock(data, finalize);\\n      }\\n    );\\n  }\\n\\n  decryptString(s) {\\n    const cipher = new this.StringCipherConstructor();\\n    let data = stringToBytes(s);\\n    data = cipher.decryptBlock(data, true);\\n    return bytesToString(data);\\n  }\\n\\n  encryptString(s) {\\n    const cipher = new this.StringCipherConstructor();\\n    if (cipher instanceof AESBaseCipher) {\\n      \u002F\u002F Append some chars equal to \\\"16 - (M mod 16)\\\"\\n      \u002F\u002F where M is the string length (see section 7.6.2 in PDF specification)\\n      \u002F\u002F to have a final string where the length is a multiple of 16.\\n      \u002F\u002F Special note:\\n      \u002F\u002F   \\\"Note that the pad is present when M is evenly divisible by 16;\\n      \u002F\u002F   it contains 16 bytes of 0x10.\\\"\\n      const strLen = s.length;\\n      const pad = 16 - (strLen % 16);\\n      s += String.fromCharCode(pad).repeat(pad);\\n\\n      \u002F\u002F Generate an initialization vector\\n      const iv = new Uint8Array(16);\\n      if (typeof crypto !== \\\"undefined\\\") {\\n        crypto.getRandomValues(iv);\\n      } else {\\n        for (let i = 0; i \u003C 16; i++) {\\n          iv[i] = Math.floor(256 * Math.random());\\n        }\\n      }\\n\\n      let data = stringToBytes(s);\\n      data = cipher.encrypt(data, iv);\\n\\n      const buf = new Uint8Array(16 + data.length);\\n      buf.set(iv);\\n      buf.set(data, 16);\\n\\n      return bytesToString(buf);\\n    }\\n\\n    let data = stringToBytes(s);\\n    data = cipher.encrypt(data);\\n    return bytesToString(data);\\n  }\\n}\\n\\nclass CipherTransformFactory {\\n  static #defaultPasswordBytes = new Uint8Array([\\n    0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, 0x56,\\n    0xff, 0xfa, 0x01, 0x08, 0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68, 0x3e, 0x80,\\n    0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a,\\n  ]);\\n\\n  #createEncryptionKey20(\\n    revision,\\n    password,\\n    ownerPassword,\\n    ownerValidationSalt,\\n    ownerKeySalt,\\n    uBytes,\\n    userPassword,\\n    userValidationSalt,\\n    userKeySalt,\\n    ownerEncryption,\\n    userEncryption,\\n    perms\\n  ) {\\n    if (password) {\\n      const passwordLength = Math.min(127, password.length);\\n      password = password.subarray(0, passwordLength);\\n    } else {\\n      password = [];\\n    }\\n    const pdfAlgorithm = revision === 6 ? new PDF20() : new PDF17();\\n\\n    if (\\n      pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)\\n    ) {\\n      return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption);\\n    } else if (\\n      password.length &&\\n      pdfAlgorithm.checkOwnerPassword(\\n        password,\\n        ownerValidationSalt,\\n        uBytes,\\n        ownerPassword\\n      )\\n    ) {\\n      return pdfAlgorithm.getOwnerKey(\\n        password,\\n        ownerKeySalt,\\n        uBytes,\\n        ownerEncryption\\n      );\\n    }\\n\\n    return null;\\n  }\\n\\n  #prepareKeyData(\\n    fileId,\\n    password,\\n    ownerPassword,\\n    userPassword,\\n    flags,\\n    revision,\\n    keyLength,\\n    encryptMetadata\\n  ) {\\n    const hashDataSize = 40 + ownerPassword.length + fileId.length;\\n    const hashData = new Uint8Array(hashDataSize);\\n    let i = 0,\\n      j,\\n      n;\\n    if (password) {\\n      n = Math.min(32, password.length);\\n      for (; i \u003C n; ++i) {\\n        hashData[i] = password[i];\\n      }\\n    }\\n    j = 0;\\n    while (i \u003C 32) {\\n      hashData[i++] = CipherTransformFactory.#defaultPasswordBytes[j++];\\n    }\\n    \u002F\u002F as now the padded password in the hashData[0..i]\\n    for (j = 0, n = ownerPassword.length; j \u003C n; ++j) {\\n      hashData[i++] = ownerPassword[j];\\n    }\\n    hashData[i++] = flags & 0xff;\\n    hashData[i++] = (flags >> 8) & 0xff;\\n    hashData[i++] = (flags >> 16) & 0xff;\\n    hashData[i++] = (flags >>> 24) & 0xff;\\n    for (j = 0, n = fileId.length; j \u003C n; ++j) {\\n      hashData[i++] = fileId[j];\\n    }\\n    if (revision >= 4 && !encryptMetadata) {\\n      hashData[i++] = 0xff;\\n      hashData[i++] = 0xff;\\n      hashData[i++] = 0xff;\\n      hashData[i++] = 0xff;\\n    }\\n    let hash = calculateMD5(hashData, 0, i);\\n    const keyLengthInBytes = keyLength >> 3;\\n    if (revision >= 3) {\\n      for (j = 0; j \u003C 50; ++j) {\\n        hash = calculateMD5(hash, 0, keyLengthInBytes);\\n      }\\n    }\\n    const encryptionKey = hash.subarray(0, keyLengthInBytes);\\n    let cipher, checkData;\\n\\n    if (revision >= 3) {\\n      for (i = 0; i \u003C 32; ++i) {\\n        hashData[i] = CipherTransformFactory.#defaultPasswordBytes[i];\\n      }\\n      for (j = 0, n = fileId.length; j \u003C n; ++j) {\\n        hashData[i++] = fileId[j];\\n      }\\n      cipher = new ARCFourCipher(encryptionKey);\\n      checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));\\n      n = encryptionKey.length;\\n      const derivedKey = new Uint8Array(n);\\n      for (j = 1; j \u003C= 19; ++j) {\\n        for (let k = 0; k \u003C n; ++k) {\\n          derivedKey[k] = encryptionKey[k] ^ j;\\n        }\\n        cipher = new ARCFourCipher(derivedKey);\\n        checkData = cipher.encryptBlock(checkData);\\n      }\\n      for (j = 0, n = checkData.length; j \u003C n; ++j) {\\n        if (userPassword[j] !== checkData[j]) {\\n          return null;\\n        }\\n      }\\n    } else {\\n      cipher = new ARCFourCipher(encryptionKey);\\n      checkData = cipher.encryptBlock(\\n        CipherTransformFactory.#defaultPasswordBytes\\n      );\\n      for (j = 0, n = checkData.length; j \u003C n; ++j) {\\n        if (userPassword[j] !== checkData[j]) {\\n          return null;\\n        }\\n      }\\n    }\\n    return encryptionKey;\\n  }\\n\\n  #decodeUserPassword(password, ownerPassword, revision, keyLength) {\\n    const hashData = new Uint8Array(32);\\n    let i = 0;\\n    const n = Math.min(32, password.length);\\n    for (; i \u003C n; ++i) {\\n      hashData[i] = password[i];\\n    }\\n    let j = 0;\\n    while (i \u003C 32) {\\n      hashData[i++] = CipherTransformFactory.#defaultPasswordBytes[j++];\\n    }\\n    let hash = calculateMD5(hashData, 0, i);\\n    const keyLengthInBytes = keyLength >> 3;\\n    if (revision >= 3) {\\n      for (j = 0; j \u003C 50; ++j) {\\n        hash = calculateMD5(hash, 0, hash.length);\\n      }\\n    }\\n\\n    let cipher, userPassword;\\n    if (revision >= 3) {\\n      userPassword = ownerPassword;\\n      const derivedKey = new Uint8Array(keyLengthInBytes);\\n      for (j = 19; j >= 0; j--) {\\n        for (let k = 0; k \u003C keyLengthInBytes; ++k) {\\n          derivedKey[k] = hash[k] ^ j;\\n        }\\n        cipher = new ARCFourCipher(derivedKey);\\n        userPassword = cipher.encryptBlock(userPassword);\\n      }\\n    } else {\\n      cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes));\\n      userPassword = cipher.encryptBlock(ownerPassword);\\n    }\\n    return userPassword;\\n  }\\n\\n  #buildObjectKey(num, gen, encryptionKey, isAes = false) {\\n    const key = new Uint8Array(encryptionKey.length + 9);\\n    const n = encryptionKey.length;\\n    let i;\\n    for (i = 0; i \u003C n; ++i) {\\n      key[i] = encryptionKey[i];\\n    }\\n    key[i++] = num & 0xff;\\n    key[i++] = (num >> 8) & 0xff;\\n    key[i++] = (num >> 16) & 0xff;\\n    key[i++] = gen & 0xff;\\n    key[i++] = (gen >> 8) & 0xff;\\n    if (isAes) {\\n      key[i++] = 0x73;\\n      key[i++] = 0x41;\\n      key[i++] = 0x6c;\\n      key[i++] = 0x54;\\n    }\\n    const hash = calculateMD5(key, 0, i);\\n    return hash.subarray(0, Math.min(encryptionKey.length + 5, 16));\\n  }\\n\\n  #buildCipherConstructor(cf, name, num, gen, key) {\\n    if (!(name instanceof Name)) {\\n      throw new FormatError(\\\"Invalid crypt filter name.\\\");\\n    }\\n    const self = this;\\n    const cryptFilter = cf.get(name.name);\\n    const cfm = cryptFilter?.get(\\\"CFM\\\");\\n\\n    if (!cfm || cfm.name === \\\"None\\\") {\\n      return function () {\\n        return new NullCipher();\\n      };\\n    }\\n    if (cfm.name === \\\"V2\\\") {\\n      return function () {\\n        return new ARCFourCipher(\\n          self.#buildObjectKey(num, gen, key, \u002F* isAes = *\u002F false)\\n        );\\n      };\\n    }\\n    if (cfm.name === \\\"AESV2\\\") {\\n      return function () {\\n        return new AES128Cipher(\\n          self.#buildObjectKey(num, gen, key, \u002F* isAes = *\u002F true)\\n        );\\n      };\\n    }\\n    if (cfm.name === \\\"AESV3\\\") {\\n      return function () {\\n        return new AES256Cipher(key);\\n      };\\n    }\\n    throw new FormatError(\\\"Unknown crypto method\\\");\\n  }\\n\\n  constructor(dict, fileId, password) {\\n    const filter = dict.get(\\\"Filter\\\");\\n    if (!isName(filter, \\\"Standard\\\")) {\\n      throw new FormatError(\\\"unknown encryption method\\\");\\n    }\\n    this.filterName = filter.name;\\n    this.dict = dict;\\n    const algorithm = dict.get(\\\"V\\\");\\n    if (\\n      !Number.isInteger(algorithm) ||\\n      (algorithm !== 1 && algorithm !== 2 && algorithm !== 4 && algorithm !== 5)\\n    ) {\\n      throw new FormatError(\\\"unsupported encryption algorithm\\\");\\n    }\\n    this.algorithm = algorithm;\\n    let keyLength = dict.get(\\\"Length\\\");\\n    if (!keyLength) {\\n      \u002F\u002F Spec asks to rely on encryption dictionary's Length entry, however\\n      \u002F\u002F some PDFs don't have it. Trying to recover.\\n      if (algorithm \u003C= 3) {\\n        \u002F\u002F For 1 and 2 it's fixed to 40-bit, for 3 40-bit is a minimal value.\\n        keyLength = 40;\\n      } else {\\n        \u002F\u002F Trying to find default handler -- it usually has Length.\\n        const cfDict = dict.get(\\\"CF\\\");\\n        const streamCryptoName = dict.get(\\\"StmF\\\");\\n        if (cfDict instanceof Dict && streamCryptoName instanceof Name) {\\n          cfDict.suppressEncryption = true; \u002F\u002F See comment below.\\n          const handlerDict = cfDict.get(streamCryptoName.name);\\n          keyLength = handlerDict?.get(\\\"Length\\\") || 128;\\n          if (keyLength \u003C 40) {\\n            \u002F\u002F Sometimes it's incorrect value of bits, generators specify\\n            \u002F\u002F bytes.\\n            keyLength \u003C\u003C= 3;\\n          }\\n        }\\n      }\\n    }\\n    if (!Number.isInteger(keyLength) || keyLength \u003C 40 || keyLength % 8 !== 0) {\\n      throw new FormatError(\\\"invalid key length\\\");\\n    }\\n\\n    const ownerBytes = stringToBytes(dict.get(\\\"O\\\")),\\n      userBytes = stringToBytes(dict.get(\\\"U\\\"));\\n    \u002F\u002F prepare keys\\n    const ownerPassword = ownerBytes.subarray(0, 32);\\n    const userPassword = userBytes.subarray(0, 32);\\n    const flags = dict.get(\\\"P\\\");\\n    const revision = dict.get(\\\"R\\\");\\n    \u002F\u002F meaningful when V is 4 or 5\\n    const encryptMetadata =\\n      (algorithm === 4 || algorithm === 5) &&\\n      dict.get(\\\"EncryptMetadata\\\") !== false;\\n    this.encryptMetadata = encryptMetadata;\\n\\n    const fileIdBytes = stringToBytes(fileId);\\n    let passwordBytes;\\n    if (password) {\\n      if (revision === 6) {\\n        try {\\n          password = utf8StringToString(password);\\n        } catch {\\n          warn(\\n            \\\"CipherTransformFactory: Unable to convert UTF8 encoded password.\\\"\\n          );\\n        }\\n      }\\n      passwordBytes = stringToBytes(password);\\n    }\\n\\n    let encryptionKey;\\n    if (algorithm !== 5) {\\n      encryptionKey = this.#prepareKeyData(\\n        fileIdBytes,\\n        passwordBytes,\\n        ownerPassword,\\n        userPassword,\\n        flags,\\n        revision,\\n        keyLength,\\n        encryptMetadata\\n      );\\n    } else {\\n      const ownerValidationSalt = ownerBytes.subarray(32, 40);\\n      const ownerKeySalt = ownerBytes.subarray(40, 48);\\n      const uBytes = userBytes.subarray(0, 48);\\n      const userValidationSalt = userBytes.subarray(32, 40);\\n      const userKeySalt = userBytes.subarray(40, 48);\\n      const ownerEncryption = stringToBytes(dict.get(\\\"OE\\\"));\\n      const userEncryption = stringToBytes(dict.get(\\\"UE\\\"));\\n      const perms = stringToBytes(dict.get(\\\"Perms\\\"));\\n      encryptionKey = this.#createEncryptionKey20(\\n        revision,\\n        passwordBytes,\\n        ownerPassword,\\n        ownerValidationSalt,\\n        ownerKeySalt,\\n        uBytes,\\n        userPassword,\\n        userValidationSalt,\\n        userKeySalt,\\n        ownerEncryption,\\n        userEncryption,\\n        perms\\n      );\\n    }\\n    if (!encryptionKey && !password) {\\n      throw new PasswordException(\\n        \\\"No password given\\\",\\n        PasswordResponses.NEED_PASSWORD\\n      );\\n    } else if (!encryptionKey && password) {\\n      \u002F\u002F Attempting use the password as an owner password\\n      const decodedPassword = this.#decodeUserPassword(\\n        passwordBytes,\\n        ownerPassword,\\n        revision,\\n        keyLength\\n      );\\n      encryptionKey = this.#prepareKeyData(\\n        fileIdBytes,\\n        decodedPassword,\\n        ownerPassword,\\n        userPassword,\\n        flags,\\n        revision,\\n        keyLength,\\n        encryptMetadata\\n      );\\n    }\\n\\n    if (!encryptionKey) {\\n      throw new PasswordException(\\n        \\\"Incorrect Password\\\",\\n        PasswordResponses.INCORRECT_PASSWORD\\n      );\\n    }\\n\\n    this.encryptionKey = encryptionKey;\\n\\n    if (algorithm >= 4) {\\n      const cf = dict.get(\\\"CF\\\");\\n      if (cf instanceof Dict) {\\n        \u002F\u002F The 'CF' dictionary itself should not be encrypted, and by setting\\n        \u002F\u002F `suppressEncryption` we can prevent an infinite loop inside of\\n        \u002F\u002F `XRef_fetchUncompressed` if the dictionary contains indirect\\n        \u002F\u002F objects (fixes issue7665.pdf).\\n        cf.suppressEncryption = true;\\n      }\\n      this.cf = cf;\\n      this.stmf = dict.get(\\\"StmF\\\") || Name.get(\\\"Identity\\\");\\n      this.strf = dict.get(\\\"StrF\\\") || Name.get(\\\"Identity\\\");\\n      this.eff = dict.get(\\\"EFF\\\") || this.stmf;\\n    }\\n  }\\n\\n  createCipherTransform(num, gen) {\\n    if (this.algorithm === 4 || this.algorithm === 5) {\\n      return new CipherTransform(\\n        this.#buildCipherConstructor(\\n          this.cf,\\n          this.strf,\\n          num,\\n          gen,\\n          this.encryptionKey\\n        ),\\n        this.#buildCipherConstructor(\\n          this.cf,\\n          this.stmf,\\n          num,\\n          gen,\\n          this.encryptionKey\\n        )\\n      );\\n    }\\n    \u002F\u002F algorithms 1 and 2\\n    const key = this.#buildObjectKey(\\n      num,\\n      gen,\\n      this.encryptionKey,\\n      \u002F* isAes = *\u002F false\\n    );\\n    const cipherConstructor = function () {\\n      return new ARCFourCipher(key);\\n    };\\n    return new CipherTransform(cipherConstructor, cipherConstructor);\\n  }\\n}\\n\\nexport {\\n  AES128Cipher,\\n  AES256Cipher,\\n  ARCFourCipher,\\n  calculateMD5,\\n  calculateSHA256,\\n  calculateSHA384,\\n  calculateSHA512,\\n  CipherTransformFactory,\\n  PDF17,\\n  PDF20,\\n};\\n\",\"\u002F* Copyright 2020 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { bytesToString, info, warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { Dict, isName, Name, Ref } from \\\".\u002Fprimitives.js\\\";\\nimport {\\n  escapePDFName,\\n  escapeString,\\n  getSizeInBytes,\\n  numberToString,\\n  parseXFAPath,\\n} from \\\".\u002Fcore_utils.js\\\";\\nimport { SimpleDOMNode, SimpleXMLParser } from \\\".\u002Fxml_parser.js\\\";\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { calculateMD5 } from \\\".\u002Fcrypto.js\\\";\\nimport { Stream } from \\\".\u002Fstream.js\\\";\\n\\nasync function writeObject(ref, obj, buffer, { encrypt = null }) {\\n  const transform = encrypt?.createCipherTransform(ref.num, ref.gen);\\n  buffer.push(`${ref.num} ${ref.gen} obj\\\\n`);\\n  if (obj instanceof Dict) {\\n    await writeDict(obj, buffer, transform);\\n  } else if (obj instanceof BaseStream) {\\n    await writeStream(obj, buffer, transform);\\n  } else if (Array.isArray(obj) || ArrayBuffer.isView(obj)) {\\n    await writeArray(obj, buffer, transform);\\n  }\\n  buffer.push(\\\"\\\\nendobj\\\\n\\\");\\n}\\n\\nasync function writeDict(dict, buffer, transform) {\\n  buffer.push(\\\"\u003C\u003C\\\");\\n  for (const key of dict.getKeys()) {\\n    buffer.push(` \u002F${escapePDFName(key)} `);\\n    await writeValue(dict.getRaw(key), buffer, transform);\\n  }\\n  buffer.push(\\\">>\\\");\\n}\\n\\nasync function writeStream(stream, buffer, transform) {\\n  let bytes = stream.getBytes();\\n  const { dict } = stream;\\n\\n  const [filter, params] = await Promise.all([\\n    dict.getAsync(\\\"Filter\\\"),\\n    dict.getAsync(\\\"DecodeParms\\\"),\\n  ]);\\n\\n  const filterZero = Array.isArray(filter)\\n    ? await dict.xref.fetchIfRefAsync(filter[0])\\n    : filter;\\n  const isFilterZeroFlateDecode = isName(filterZero, \\\"FlateDecode\\\");\\n\\n  \u002F\u002F If the string is too small there is no real benefit in compressing it.\\n  \u002F\u002F The number 256 is arbitrary, but it should be reasonable.\\n  const MIN_LENGTH_FOR_COMPRESSING = 256;\\n\\n  if (bytes.length >= MIN_LENGTH_FOR_COMPRESSING || isFilterZeroFlateDecode) {\\n    try {\\n      const cs = new CompressionStream(\\\"deflate\\\");\\n      const writer = cs.writable.getWriter();\\n      writer.write(bytes);\\n      writer.close();\\n\\n      \u002F\u002F Response::text doesn't return the correct data.\\n      const buf = await new Response(cs.readable).arrayBuffer();\\n      bytes = new Uint8Array(buf);\\n\\n      let newFilter, newParams;\\n      if (!filter) {\\n        newFilter = Name.get(\\\"FlateDecode\\\");\\n      } else if (!isFilterZeroFlateDecode) {\\n        newFilter = Array.isArray(filter)\\n          ? [Name.get(\\\"FlateDecode\\\"), ...filter]\\n          : [Name.get(\\\"FlateDecode\\\"), filter];\\n        if (params) {\\n          newParams = Array.isArray(params)\\n            ? [null, ...params]\\n            : [null, params];\\n        }\\n      }\\n      if (newFilter) {\\n        dict.set(\\\"Filter\\\", newFilter);\\n      }\\n      if (newParams) {\\n        dict.set(\\\"DecodeParms\\\", newParams);\\n      }\\n    } catch (ex) {\\n      info(`writeStream - cannot compress data: \\\"${ex}\\\".`);\\n    }\\n  }\\n\\n  let string = bytesToString(bytes);\\n  if (transform) {\\n    string = transform.encryptString(string);\\n  }\\n\\n  dict.set(\\\"Length\\\", string.length);\\n  await writeDict(dict, buffer, transform);\\n  buffer.push(\\\" stream\\\\n\\\", string, \\\"\\\\nendstream\\\");\\n}\\n\\nasync function writeArray(array, buffer, transform) {\\n  buffer.push(\\\"[\\\");\\n  let first = true;\\n  for (const val of array) {\\n    if (!first) {\\n      buffer.push(\\\" \\\");\\n    } else {\\n      first = false;\\n    }\\n    await writeValue(val, buffer, transform);\\n  }\\n  buffer.push(\\\"]\\\");\\n}\\n\\nasync function writeValue(value, buffer, transform) {\\n  if (value instanceof Name) {\\n    buffer.push(`\u002F${escapePDFName(value.name)}`);\\n  } else if (value instanceof Ref) {\\n    buffer.push(`${value.num} ${value.gen} R`);\\n  } else if (Array.isArray(value) || ArrayBuffer.isView(value)) {\\n    await writeArray(value, buffer, transform);\\n  } else if (typeof value === \\\"string\\\") {\\n    if (transform) {\\n      value = transform.encryptString(value);\\n    }\\n    buffer.push(`(${escapeString(value)})`);\\n  } else if (typeof value === \\\"number\\\") {\\n    buffer.push(numberToString(value));\\n  } else if (typeof value === \\\"boolean\\\") {\\n    buffer.push(value.toString());\\n  } else if (value instanceof Dict) {\\n    await writeDict(value, buffer, transform);\\n  } else if (value instanceof BaseStream) {\\n    await writeStream(value, buffer, transform);\\n  } else if (value === null) {\\n    buffer.push(\\\"null\\\");\\n  } else {\\n    warn(`Unhandled value in writer: ${typeof value}, please file a bug.`);\\n  }\\n}\\n\\nfunction writeInt(number, size, offset, buffer) {\\n  for (let i = size + offset - 1; i > offset - 1; i--) {\\n    buffer[i] = number & 0xff;\\n    number >>= 8;\\n  }\\n  return offset + size;\\n}\\n\\nfunction writeString(string, offset, buffer) {\\n  for (let i = 0, len = string.length; i \u003C len; i++) {\\n    buffer[offset + i] = string.charCodeAt(i) & 0xff;\\n  }\\n}\\n\\nfunction computeMD5(filesize, xrefInfo) {\\n  const time = Math.floor(Date.now() \u002F 1000);\\n  const filename = xrefInfo.filename || \\\"\\\";\\n  const md5Buffer = [time.toString(), filename, filesize.toString()];\\n  let md5BufferLen = md5Buffer.reduce((a, str) => a + str.length, 0);\\n  for (const value of Object.values(xrefInfo.info)) {\\n    md5Buffer.push(value);\\n    md5BufferLen += value.length;\\n  }\\n\\n  const array = new Uint8Array(md5BufferLen);\\n  let offset = 0;\\n  for (const str of md5Buffer) {\\n    writeString(str, offset, array);\\n    offset += str.length;\\n  }\\n  return bytesToString(calculateMD5(array));\\n}\\n\\nfunction writeXFADataForAcroform(str, newRefs) {\\n  const xml = new SimpleXMLParser({ hasAttributes: true }).parseFromString(str);\\n\\n  for (const { xfa } of newRefs) {\\n    if (!xfa) {\\n      continue;\\n    }\\n    const { path, value } = xfa;\\n    if (!path) {\\n      continue;\\n    }\\n    const nodePath = parseXFAPath(path);\\n    let node = xml.documentElement.searchNode(nodePath, 0);\\n    if (!node && nodePath.length > 1) {\\n      \u002F\u002F If we're lucky the last element in the path will identify the node.\\n      node = xml.documentElement.searchNode([nodePath.at(-1)], 0);\\n    }\\n    if (node) {\\n      node.childNodes = Array.isArray(value)\\n        ? value.map(val => new SimpleDOMNode(\\\"value\\\", val))\\n        : [new SimpleDOMNode(\\\"#text\\\", value)];\\n    } else {\\n      warn(`Node not found for path: ${path}`);\\n    }\\n  }\\n  const buffer = [];\\n  xml.documentElement.dump(buffer);\\n  return buffer.join(\\\"\\\");\\n}\\n\\nasync function updateAcroform({\\n  xref,\\n  acroForm,\\n  acroFormRef,\\n  hasXfa,\\n  hasXfaDatasetsEntry,\\n  xfaDatasetsRef,\\n  needAppearances,\\n  newRefs,\\n}) {\\n  if (hasXfa && !hasXfaDatasetsEntry && !xfaDatasetsRef) {\\n    warn(\\\"XFA - Cannot save it\\\");\\n  }\\n\\n  if (!needAppearances && (!hasXfa || !xfaDatasetsRef || hasXfaDatasetsEntry)) {\\n    return;\\n  }\\n\\n  const dict = acroForm.clone();\\n\\n  if (hasXfa && !hasXfaDatasetsEntry) {\\n    \u002F\u002F We've a XFA array which doesn't contain a datasets entry.\\n    \u002F\u002F So we'll update the AcroForm dictionary to have an XFA containing\\n    \u002F\u002F the datasets.\\n    const newXfa = acroForm.get(\\\"XFA\\\").slice();\\n    newXfa.splice(2, 0, \\\"datasets\\\");\\n    newXfa.splice(3, 0, xfaDatasetsRef);\\n\\n    dict.set(\\\"XFA\\\", newXfa);\\n  }\\n\\n  if (needAppearances) {\\n    dict.set(\\\"NeedAppearances\\\", true);\\n  }\\n\\n  const buffer = [];\\n  await writeObject(acroFormRef, dict, buffer, xref);\\n\\n  newRefs.push({ ref: acroFormRef, data: buffer.join(\\\"\\\") });\\n}\\n\\nfunction updateXFA({ xfaData, xfaDatasetsRef, newRefs, xref }) {\\n  if (xfaData === null) {\\n    const datasets = xref.fetchIfRef(xfaDatasetsRef);\\n    xfaData = writeXFADataForAcroform(datasets.getString(), newRefs);\\n  }\\n\\n  const encrypt = xref.encrypt;\\n  if (encrypt) {\\n    const transform = encrypt.createCipherTransform(\\n      xfaDatasetsRef.num,\\n      xfaDatasetsRef.gen\\n    );\\n    xfaData = transform.encryptString(xfaData);\\n  }\\n  const data =\\n    `${xfaDatasetsRef.num} ${xfaDatasetsRef.gen} obj\\\\n` +\\n    `\u003C\u003C \u002FType \u002FEmbeddedFile \u002FLength ${xfaData.length}>>\\\\nstream\\\\n` +\\n    xfaData +\\n    \\\"\\\\nendstream\\\\nendobj\\\\n\\\";\\n\\n  newRefs.push({ ref: xfaDatasetsRef, data });\\n}\\n\\nasync function getXRefTable(xrefInfo, baseOffset, newRefs, newXref, buffer) {\\n  buffer.push(\\\"xref\\\\n\\\");\\n  const indexes = getIndexes(newRefs);\\n  let indexesPosition = 0;\\n  for (const { ref, data } of newRefs) {\\n    if (ref.num === indexes[indexesPosition]) {\\n      buffer.push(\\n        `${indexes[indexesPosition]} ${indexes[indexesPosition + 1]}\\\\n`\\n      );\\n      indexesPosition += 2;\\n    }\\n    \u002F\u002F The EOL is \\\\r\\\\n to make sure that every entry is exactly 20 bytes long.\\n    \u002F\u002F (see 7.5.4 - Cross-Reference Table).\\n    if (data !== null) {\\n      buffer.push(\\n        `${baseOffset.toString().padStart(10, \\\"0\\\")} ${Math.min(ref.gen, 0xffff).toString().padStart(5, \\\"0\\\")} n\\\\r\\\\n`\\n      );\\n      baseOffset += data.length;\\n    } else {\\n      buffer.push(\\n        `0000000000 ${Math.min(ref.gen + 1, 0xffff)\\n          .toString()\\n          .padStart(5, \\\"0\\\")} f\\\\r\\\\n`\\n      );\\n    }\\n  }\\n  computeIDs(baseOffset, xrefInfo, newXref);\\n  buffer.push(\\\"trailer\\\\n\\\");\\n  await writeDict(newXref, buffer);\\n  buffer.push(\\\"\\\\nstartxref\\\\n\\\", baseOffset.toString(), \\\"\\\\n%%EOF\\\\n\\\");\\n}\\n\\nfunction getIndexes(newRefs) {\\n  const indexes = [];\\n  for (const { ref } of newRefs) {\\n    if (ref.num === indexes.at(-2) + indexes.at(-1)) {\\n      indexes[indexes.length - 1] += 1;\\n    } else {\\n      indexes.push(ref.num, 1);\\n    }\\n  }\\n  return indexes;\\n}\\n\\nasync function getXRefStreamTable(\\n  xrefInfo,\\n  baseOffset,\\n  newRefs,\\n  newXref,\\n  buffer\\n) {\\n  const xrefTableData = [];\\n  let maxOffset = 0;\\n  let maxGen = 0;\\n  for (const { ref, data } of newRefs) {\\n    let gen;\\n    maxOffset = Math.max(maxOffset, baseOffset);\\n    if (data !== null) {\\n      gen = Math.min(ref.gen, 0xffff);\\n      xrefTableData.push([1, baseOffset, gen]);\\n      baseOffset += data.length;\\n    } else {\\n      gen = Math.min(ref.gen + 1, 0xffff);\\n      xrefTableData.push([0, 0, gen]);\\n    }\\n    maxGen = Math.max(maxGen, gen);\\n  }\\n  newXref.set(\\\"Index\\\", getIndexes(newRefs));\\n  const offsetSize = getSizeInBytes(maxOffset);\\n  const maxGenSize = getSizeInBytes(maxGen);\\n  const sizes = [1, offsetSize, maxGenSize];\\n  newXref.set(\\\"W\\\", sizes);\\n  computeIDs(baseOffset, xrefInfo, newXref);\\n\\n  const structSize = sizes.reduce((a, x) => a + x, 0);\\n  const data = new Uint8Array(structSize * xrefTableData.length);\\n  const stream = new Stream(data);\\n  stream.dict = newXref;\\n\\n  let offset = 0;\\n  for (const [type, objOffset, gen] of xrefTableData) {\\n    offset = writeInt(type, sizes[0], offset, data);\\n    offset = writeInt(objOffset, sizes[1], offset, data);\\n    offset = writeInt(gen, sizes[2], offset, data);\\n  }\\n\\n  await writeObject(xrefInfo.newRef, stream, buffer, {});\\n  buffer.push(\\\"startxref\\\\n\\\", baseOffset.toString(), \\\"\\\\n%%EOF\\\\n\\\");\\n}\\n\\nfunction computeIDs(baseOffset, xrefInfo, newXref) {\\n  if (Array.isArray(xrefInfo.fileIds) && xrefInfo.fileIds.length > 0) {\\n    const md5 = computeMD5(baseOffset, xrefInfo);\\n    newXref.set(\\\"ID\\\", [xrefInfo.fileIds[0], md5]);\\n  }\\n}\\n\\nfunction getTrailerDict(xrefInfo, newRefs, useXrefStream) {\\n  const newXref = new Dict(null);\\n  newXref.set(\\\"Prev\\\", xrefInfo.startXRef);\\n  const refForXrefTable = xrefInfo.newRef;\\n  if (useXrefStream) {\\n    newRefs.push({ ref: refForXrefTable, data: \\\"\\\" });\\n    newXref.set(\\\"Size\\\", refForXrefTable.num + 1);\\n    newXref.set(\\\"Type\\\", Name.get(\\\"XRef\\\"));\\n  } else {\\n    newXref.set(\\\"Size\\\", refForXrefTable.num);\\n  }\\n  if (xrefInfo.rootRef !== null) {\\n    newXref.set(\\\"Root\\\", xrefInfo.rootRef);\\n  }\\n  if (xrefInfo.infoRef !== null) {\\n    newXref.set(\\\"Info\\\", xrefInfo.infoRef);\\n  }\\n  if (xrefInfo.encryptRef !== null) {\\n    newXref.set(\\\"Encrypt\\\", xrefInfo.encryptRef);\\n  }\\n  return newXref;\\n}\\n\\nasync function incrementalUpdate({\\n  originalData,\\n  xrefInfo,\\n  newRefs,\\n  xref = null,\\n  hasXfa = false,\\n  xfaDatasetsRef = null,\\n  hasXfaDatasetsEntry = false,\\n  needAppearances,\\n  acroFormRef = null,\\n  acroForm = null,\\n  xfaData = null,\\n  useXrefStream = false,\\n}) {\\n  await updateAcroform({\\n    xref,\\n    acroForm,\\n    acroFormRef,\\n    hasXfa,\\n    hasXfaDatasetsEntry,\\n    xfaDatasetsRef,\\n    needAppearances,\\n    newRefs,\\n  });\\n\\n  if (hasXfa) {\\n    updateXFA({\\n      xfaData,\\n      xfaDatasetsRef,\\n      newRefs,\\n      xref,\\n    });\\n  }\\n\\n  const buffer = [];\\n  let baseOffset = originalData.length;\\n  const lastByte = originalData.at(-1);\\n  if (lastByte !== \u002F* \\\\n *\u002F 0x0a && lastByte !== \u002F* \\\\r *\u002F 0x0d) {\\n    \u002F\u002F Avoid to concatenate %%EOF with an object definition\\n    buffer.push(\\\"\\\\n\\\");\\n    baseOffset += 1;\\n  }\\n\\n  const newXref = getTrailerDict(xrefInfo, newRefs, useXrefStream);\\n  newRefs = newRefs.sort(\\n    (a, b) => \u002F* compare the refs *\u002F a.ref.num - b.ref.num\\n  );\\n  for (const { data } of newRefs) {\\n    if (data !== null) {\\n      buffer.push(data);\\n    }\\n  }\\n\\n  await (useXrefStream\\n    ? getXRefStreamTable(xrefInfo, baseOffset, newRefs, newXref, buffer)\\n    : getXRefTable(xrefInfo, baseOffset, newRefs, newXref, buffer));\\n\\n  const totalLength = buffer.reduce(\\n    (a, str) => a + str.length,\\n    originalData.length\\n  );\\n  const array = new Uint8Array(totalLength);\\n\\n  \u002F\u002F Original data\\n  array.set(originalData);\\n  let offset = originalData.length;\\n\\n  \u002F\u002F New data\\n  for (const str of buffer) {\\n    writeString(str, offset, array);\\n    offset += str.length;\\n  }\\n\\n  return array;\\n}\\n\\nexport { incrementalUpdate, writeDict, writeObject };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { AnnotationPrefix, stringToPDFString, warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { Dict, isName, Name, Ref, RefSetCache } from \\\".\u002Fprimitives.js\\\";\\nimport { NumberTree } from \\\".\u002Fname_number_tree.js\\\";\\nimport { writeObject } from \\\".\u002Fwriter.js\\\";\\n\\nconst MAX_DEPTH = 40;\\n\\nconst StructElementType = {\\n  PAGE_CONTENT: 1,\\n  STREAM_CONTENT: 2,\\n  OBJECT: 3,\\n  ANNOTATION: 4,\\n  ELEMENT: 5,\\n};\\n\\nclass StructTreeRoot {\\n  constructor(rootDict, rootRef) {\\n    this.dict = rootDict;\\n    this.ref = rootRef instanceof Ref ? rootRef : null;\\n    this.roleMap = new Map();\\n    this.structParentIds = null;\\n  }\\n\\n  init() {\\n    this.readRoleMap();\\n  }\\n\\n  #addIdToPage(pageRef, id, type) {\\n    if (!(pageRef instanceof Ref) || id \u003C 0) {\\n      return;\\n    }\\n    this.structParentIds ||= new RefSetCache();\\n    let ids = this.structParentIds.get(pageRef);\\n    if (!ids) {\\n      ids = [];\\n      this.structParentIds.put(pageRef, ids);\\n    }\\n    ids.push([id, type]);\\n  }\\n\\n  addAnnotationIdToPage(pageRef, id) {\\n    this.#addIdToPage(pageRef, id, StructElementType.ANNOTATION);\\n  }\\n\\n  readRoleMap() {\\n    const roleMapDict = this.dict.get(\\\"RoleMap\\\");\\n    if (!(roleMapDict instanceof Dict)) {\\n      return;\\n    }\\n    roleMapDict.forEach((key, value) => {\\n      if (!(value instanceof Name)) {\\n        return;\\n      }\\n      this.roleMap.set(key, value.name);\\n    });\\n  }\\n\\n  static async canCreateStructureTree({\\n    catalogRef,\\n    pdfManager,\\n    newAnnotationsByPage,\\n  }) {\\n    if (!(catalogRef instanceof Ref)) {\\n      warn(\\\"Cannot save the struct tree: no catalog reference.\\\");\\n      return false;\\n    }\\n\\n    let nextKey = 0;\\n    let hasNothingToUpdate = true;\\n\\n    for (const [pageIndex, elements] of newAnnotationsByPage) {\\n      const { ref: pageRef } = await pdfManager.getPage(pageIndex);\\n      if (!(pageRef instanceof Ref)) {\\n        warn(`Cannot save the struct tree: page ${pageIndex} has no ref.`);\\n        hasNothingToUpdate = true;\\n        break;\\n      }\\n      for (const element of elements) {\\n        if (element.accessibilityData?.type) {\\n          \u002F\u002F Each tag must have a structure type.\\n          element.parentTreeId = nextKey++;\\n          hasNothingToUpdate = false;\\n        }\\n      }\\n    }\\n\\n    if (hasNothingToUpdate) {\\n      for (const elements of newAnnotationsByPage.values()) {\\n        for (const element of elements) {\\n          delete element.parentTreeId;\\n        }\\n      }\\n      return false;\\n    }\\n\\n    return true;\\n  }\\n\\n  static async createStructureTree({\\n    newAnnotationsByPage,\\n    xref,\\n    catalogRef,\\n    pdfManager,\\n    newRefs,\\n  }) {\\n    const root = pdfManager.catalog.cloneDict();\\n    const cache = new RefSetCache();\\n    cache.put(catalogRef, root);\\n\\n    const structTreeRootRef = xref.getNewTemporaryRef();\\n    root.set(\\\"StructTreeRoot\\\", structTreeRootRef);\\n\\n    const structTreeRoot = new Dict(xref);\\n    structTreeRoot.set(\\\"Type\\\", Name.get(\\\"StructTreeRoot\\\"));\\n    const parentTreeRef = xref.getNewTemporaryRef();\\n    structTreeRoot.set(\\\"ParentTree\\\", parentTreeRef);\\n    const kids = [];\\n    structTreeRoot.set(\\\"K\\\", kids);\\n    cache.put(structTreeRootRef, structTreeRoot);\\n\\n    const parentTree = new Dict(xref);\\n    const nums = [];\\n    parentTree.set(\\\"Nums\\\", nums);\\n\\n    const nextKey = await this.#writeKids({\\n      newAnnotationsByPage,\\n      structTreeRootRef,\\n      kids,\\n      nums,\\n      xref,\\n      pdfManager,\\n      cache,\\n    });\\n    structTreeRoot.set(\\\"ParentTreeNextKey\\\", nextKey);\\n\\n    cache.put(parentTreeRef, parentTree);\\n\\n    const buffer = [];\\n    for (const [ref, obj] of cache.items()) {\\n      buffer.length = 0;\\n      await writeObject(ref, obj, buffer, xref);\\n      newRefs.push({ ref, data: buffer.join(\\\"\\\") });\\n    }\\n  }\\n\\n  async canUpdateStructTree({ pdfManager, xref, newAnnotationsByPage }) {\\n    if (!this.ref) {\\n      warn(\\\"Cannot update the struct tree: no root reference.\\\");\\n      return false;\\n    }\\n\\n    let nextKey = this.dict.get(\\\"ParentTreeNextKey\\\");\\n    if (!Number.isInteger(nextKey) || nextKey \u003C 0) {\\n      warn(\\\"Cannot update the struct tree: invalid next key.\\\");\\n      return false;\\n    }\\n\\n    const parentTree = this.dict.get(\\\"ParentTree\\\");\\n    if (!(parentTree instanceof Dict)) {\\n      warn(\\\"Cannot update the struct tree: ParentTree isn't a dict.\\\");\\n      return false;\\n    }\\n    const nums = parentTree.get(\\\"Nums\\\");\\n    if (!Array.isArray(nums)) {\\n      warn(\\\"Cannot update the struct tree: nums isn't an array.\\\");\\n      return false;\\n    }\\n    const numberTree = new NumberTree(parentTree, xref);\\n\\n    for (const pageIndex of newAnnotationsByPage.keys()) {\\n      const { pageDict } = await pdfManager.getPage(pageIndex);\\n      if (!pageDict.has(\\\"StructParents\\\")) {\\n        \u002F\u002F StructParents is required when the content stream has some tagged\\n        \u002F\u002F contents but a page can just have tagged annotations.\\n        continue;\\n      }\\n      const id = pageDict.get(\\\"StructParents\\\");\\n      if (!Number.isInteger(id) || !Array.isArray(numberTree.get(id))) {\\n        warn(`Cannot save the struct tree: page ${pageIndex} has a wrong id.`);\\n        return false;\\n      }\\n    }\\n\\n    let hasNothingToUpdate = true;\\n    for (const [pageIndex, elements] of newAnnotationsByPage) {\\n      const { pageDict } = await pdfManager.getPage(pageIndex);\\n      StructTreeRoot.#collectParents({\\n        elements,\\n        xref: this.dict.xref,\\n        pageDict,\\n        numberTree,\\n      });\\n\\n      for (const element of elements) {\\n        if (element.accessibilityData?.type) {\\n          \u002F\u002F Each tag must have a structure type.\\n          element.parentTreeId = nextKey++;\\n          hasNothingToUpdate = false;\\n        }\\n      }\\n    }\\n\\n    if (hasNothingToUpdate) {\\n      for (const elements of newAnnotationsByPage.values()) {\\n        for (const element of elements) {\\n          delete element.parentTreeId;\\n          delete element.structTreeParent;\\n        }\\n      }\\n      return false;\\n    }\\n\\n    return true;\\n  }\\n\\n  async updateStructureTree({ newAnnotationsByPage, pdfManager, newRefs }) {\\n    const xref = this.dict.xref;\\n    const structTreeRoot = this.dict.clone();\\n    const structTreeRootRef = this.ref;\\n    const cache = new RefSetCache();\\n    cache.put(structTreeRootRef, structTreeRoot);\\n\\n    let parentTreeRef = structTreeRoot.getRaw(\\\"ParentTree\\\");\\n    let parentTree;\\n    if (parentTreeRef instanceof Ref) {\\n      parentTree = xref.fetch(parentTreeRef);\\n    } else {\\n      parentTree = parentTreeRef;\\n      parentTreeRef = xref.getNewTemporaryRef();\\n      structTreeRoot.set(\\\"ParentTree\\\", parentTreeRef);\\n    }\\n    parentTree = parentTree.clone();\\n    cache.put(parentTreeRef, parentTree);\\n\\n    let nums = parentTree.getRaw(\\\"Nums\\\");\\n    let numsRef = null;\\n    if (nums instanceof Ref) {\\n      numsRef = nums;\\n      nums = xref.fetch(numsRef);\\n    }\\n    nums = nums.slice();\\n    if (!numsRef) {\\n      parentTree.set(\\\"Nums\\\", nums);\\n    }\\n\\n    const newNextkey = await StructTreeRoot.#writeKids({\\n      newAnnotationsByPage,\\n      structTreeRootRef,\\n      kids: null,\\n      nums,\\n      xref,\\n      pdfManager,\\n      cache,\\n    });\\n    structTreeRoot.set(\\\"ParentTreeNextKey\\\", newNextkey);\\n\\n    if (numsRef) {\\n      cache.put(numsRef, nums);\\n    }\\n\\n    const buffer = [];\\n    for (const [ref, obj] of cache.items()) {\\n      buffer.length = 0;\\n      await writeObject(ref, obj, buffer, xref);\\n      newRefs.push({ ref, data: buffer.join(\\\"\\\") });\\n    }\\n  }\\n\\n  static async #writeKids({\\n    newAnnotationsByPage,\\n    structTreeRootRef,\\n    kids,\\n    nums,\\n    xref,\\n    pdfManager,\\n    cache,\\n  }) {\\n    const objr = Name.get(\\\"OBJR\\\");\\n    let nextKey = -Infinity;\\n\\n    for (const [pageIndex, elements] of newAnnotationsByPage) {\\n      const { ref: pageRef } = await pdfManager.getPage(pageIndex);\\n      const isPageRef = pageRef instanceof Ref;\\n      for (const {\\n        accessibilityData,\\n        ref,\\n        parentTreeId,\\n        structTreeParent,\\n      } of elements) {\\n        if (!accessibilityData?.type) {\\n          continue;\\n        }\\n        const { type, title, lang, alt, expanded, actualText } =\\n          accessibilityData;\\n        nextKey = Math.max(nextKey, parentTreeId);\\n\\n        const tagRef = xref.getNewTemporaryRef();\\n        const tagDict = new Dict(xref);\\n\\n        \u002F\u002F The structure type is required.\\n        tagDict.set(\\\"S\\\", Name.get(type));\\n\\n        if (title) {\\n          tagDict.set(\\\"T\\\", title);\\n        }\\n        if (lang) {\\n          tagDict.set(\\\"Lang\\\", lang);\\n        }\\n        if (alt) {\\n          tagDict.set(\\\"Alt\\\", alt);\\n        }\\n        if (expanded) {\\n          tagDict.set(\\\"E\\\", expanded);\\n        }\\n        if (actualText) {\\n          tagDict.set(\\\"ActualText\\\", actualText);\\n        }\\n\\n        await this.#updateParentTag({\\n          structTreeParent,\\n          tagDict,\\n          newTagRef: tagRef,\\n          structTreeRootRef,\\n          fallbackKids: kids,\\n          xref,\\n          cache,\\n        });\\n\\n        const objDict = new Dict(xref);\\n        tagDict.set(\\\"K\\\", objDict);\\n        objDict.set(\\\"Type\\\", objr);\\n        if (isPageRef) {\\n          \u002F\u002F Pg is optional.\\n          objDict.set(\\\"Pg\\\", pageRef);\\n        }\\n        objDict.set(\\\"Obj\\\", ref);\\n\\n        cache.put(tagRef, tagDict);\\n        nums.push(parentTreeId, tagRef);\\n      }\\n    }\\n    return nextKey + 1;\\n  }\\n\\n  static #collectParents({ elements, xref, pageDict, numberTree }) {\\n    const idToElements = new Map();\\n    for (const element of elements) {\\n      if (element.structTreeParentId) {\\n        const id = parseInt(element.structTreeParentId.split(\\\"_mc\\\")[1], 10);\\n        let elems = idToElements.get(id);\\n        if (!elems) {\\n          elems = [];\\n          idToElements.set(id, elems);\\n        }\\n        elems.push(element);\\n      }\\n    }\\n\\n    const id = pageDict.get(\\\"StructParents\\\");\\n    if (!Number.isInteger(id)) {\\n      return;\\n    }\\n    \u002F\u002F The parentArray type has already been checked by the caller.\\n    const parentArray = numberTree.get(id);\\n\\n    const updateElement = (kid, pageKid, kidRef) => {\\n      const elems = idToElements.get(kid);\\n      if (elems) {\\n        const parentRef = pageKid.getRaw(\\\"P\\\");\\n        const parentDict = xref.fetchIfRef(parentRef);\\n        if (parentRef instanceof Ref && parentDict instanceof Dict) {\\n          \u002F\u002F It should always the case, but we check just in case.\\n          const params = { ref: kidRef, dict: pageKid };\\n          for (const element of elems) {\\n            element.structTreeParent = params;\\n          }\\n        }\\n        return true;\\n      }\\n      return false;\\n    };\\n    for (const kidRef of parentArray) {\\n      if (!(kidRef instanceof Ref)) {\\n        continue;\\n      }\\n      const pageKid = xref.fetch(kidRef);\\n      const k = pageKid.get(\\\"K\\\");\\n      if (Number.isInteger(k)) {\\n        updateElement(k, pageKid, kidRef);\\n        continue;\\n      }\\n\\n      if (!Array.isArray(k)) {\\n        continue;\\n      }\\n      for (let kid of k) {\\n        kid = xref.fetchIfRef(kid);\\n        if (Number.isInteger(kid) && updateElement(kid, pageKid, kidRef)) {\\n          break;\\n        }\\n        if (!(kid instanceof Dict)) {\\n          continue;\\n        }\\n        if (!isName(kid.get(\\\"Type\\\"), \\\"MCR\\\")) {\\n          break;\\n        }\\n        const mcid = kid.get(\\\"MCID\\\");\\n        if (Number.isInteger(mcid) && updateElement(mcid, pageKid, kidRef)) {\\n          break;\\n        }\\n      }\\n    }\\n  }\\n\\n  static async #updateParentTag({\\n    structTreeParent,\\n    tagDict,\\n    newTagRef,\\n    structTreeRootRef,\\n    fallbackKids,\\n    xref,\\n    cache,\\n  }) {\\n    let ref = null;\\n    let parentRef;\\n    if (structTreeParent) {\\n      ({ ref } = structTreeParent);\\n\\n      \u002F\u002F We get the parent of the tag.\\n      parentRef = structTreeParent.dict.getRaw(\\\"P\\\") || structTreeRootRef;\\n    } else {\\n      parentRef = structTreeRootRef;\\n    }\\n\\n    tagDict.set(\\\"P\\\", parentRef);\\n\\n    \u002F\u002F We get the kids in order to insert a new tag at the right position.\\n    const parentDict = xref.fetchIfRef(parentRef);\\n    if (!parentDict) {\\n      fallbackKids.push(newTagRef);\\n      return;\\n    }\\n\\n    let cachedParentDict = cache.get(parentRef);\\n    if (!cachedParentDict) {\\n      cachedParentDict = parentDict.clone();\\n      cache.put(parentRef, cachedParentDict);\\n    }\\n    const parentKidsRaw = cachedParentDict.getRaw(\\\"K\\\");\\n    let cachedParentKids =\\n      parentKidsRaw instanceof Ref ? cache.get(parentKidsRaw) : null;\\n    if (!cachedParentKids) {\\n      cachedParentKids = xref.fetchIfRef(parentKidsRaw);\\n      cachedParentKids = Array.isArray(cachedParentKids)\\n        ? cachedParentKids.slice()\\n        : [parentKidsRaw];\\n      const parentKidsRef = xref.getNewTemporaryRef();\\n      cachedParentDict.set(\\\"K\\\", parentKidsRef);\\n      cache.put(parentKidsRef, cachedParentKids);\\n    }\\n\\n    const index = cachedParentKids.indexOf(ref);\\n    cachedParentKids.splice(\\n      index >= 0 ? index + 1 : cachedParentKids.length,\\n      0,\\n      newTagRef\\n    );\\n  }\\n}\\n\\n\u002F**\\n * Instead of loading the whole tree we load just the page's relevant structure\\n * elements, which means we need a wrapper structure to represent the tree.\\n *\u002F\\nclass StructElementNode {\\n  constructor(tree, dict) {\\n    this.tree = tree;\\n    this.dict = dict;\\n    this.kids = [];\\n    this.parseKids();\\n  }\\n\\n  get role() {\\n    const nameObj = this.dict.get(\\\"S\\\");\\n    const name = nameObj instanceof Name ? nameObj.name : \\\"\\\";\\n    const { root } = this.tree;\\n    if (root.roleMap.has(name)) {\\n      return root.roleMap.get(name);\\n    }\\n    return name;\\n  }\\n\\n  parseKids() {\\n    let pageObjId = null;\\n    const objRef = this.dict.getRaw(\\\"Pg\\\");\\n    if (objRef instanceof Ref) {\\n      pageObjId = objRef.toString();\\n    }\\n    const kids = this.dict.get(\\\"K\\\");\\n    if (Array.isArray(kids)) {\\n      for (const kid of kids) {\\n        const element = this.parseKid(pageObjId, kid);\\n        if (element) {\\n          this.kids.push(element);\\n        }\\n      }\\n    } else {\\n      const element = this.parseKid(pageObjId, kids);\\n      if (element) {\\n        this.kids.push(element);\\n      }\\n    }\\n  }\\n\\n  parseKid(pageObjId, kid) {\\n    \u002F\u002F A direct link to content, the integer is an mcid.\\n    if (Number.isInteger(kid)) {\\n      if (this.tree.pageDict.objId !== pageObjId) {\\n        return null;\\n      }\\n\\n      return new StructElement({\\n        type: StructElementType.PAGE_CONTENT,\\n        mcid: kid,\\n        pageObjId,\\n      });\\n    }\\n\\n    \u002F\u002F Find the dictionary for the kid.\\n    let kidDict = null;\\n    if (kid instanceof Ref) {\\n      kidDict = this.dict.xref.fetch(kid);\\n    } else if (kid instanceof Dict) {\\n      kidDict = kid;\\n    }\\n    if (!kidDict) {\\n      return null;\\n    }\\n    const pageRef = kidDict.getRaw(\\\"Pg\\\");\\n    if (pageRef instanceof Ref) {\\n      pageObjId = pageRef.toString();\\n    }\\n\\n    const type =\\n      kidDict.get(\\\"Type\\\") instanceof Name ? kidDict.get(\\\"Type\\\").name : null;\\n    if (type === \\\"MCR\\\") {\\n      if (this.tree.pageDict.objId !== pageObjId) {\\n        return null;\\n      }\\n      const kidRef = kidDict.getRaw(\\\"Stm\\\");\\n      return new StructElement({\\n        type: StructElementType.STREAM_CONTENT,\\n        refObjId: kidRef instanceof Ref ? kidRef.toString() : null,\\n        pageObjId,\\n        mcid: kidDict.get(\\\"MCID\\\"),\\n      });\\n    }\\n\\n    if (type === \\\"OBJR\\\") {\\n      if (this.tree.pageDict.objId !== pageObjId) {\\n        return null;\\n      }\\n      const kidRef = kidDict.getRaw(\\\"Obj\\\");\\n      return new StructElement({\\n        type: StructElementType.OBJECT,\\n        refObjId: kidRef instanceof Ref ? kidRef.toString() : null,\\n        pageObjId,\\n      });\\n    }\\n\\n    return new StructElement({\\n      type: StructElementType.ELEMENT,\\n      dict: kidDict,\\n    });\\n  }\\n}\\n\\nclass StructElement {\\n  constructor({\\n    type,\\n    dict = null,\\n    mcid = null,\\n    pageObjId = null,\\n    refObjId = null,\\n  }) {\\n    this.type = type;\\n    this.dict = dict;\\n    this.mcid = mcid;\\n    this.pageObjId = pageObjId;\\n    this.refObjId = refObjId;\\n    this.parentNode = null;\\n  }\\n}\\n\\nclass StructTreePage {\\n  constructor(structTreeRoot, pageDict) {\\n    this.root = structTreeRoot;\\n    this.rootDict = structTreeRoot ? structTreeRoot.dict : null;\\n    this.pageDict = pageDict;\\n    this.nodes = [];\\n  }\\n\\n  parse(pageRef) {\\n    if (!this.root || !this.rootDict) {\\n      return;\\n    }\\n\\n    const parentTree = this.rootDict.get(\\\"ParentTree\\\");\\n    if (!parentTree) {\\n      return;\\n    }\\n    const id = this.pageDict.get(\\\"StructParents\\\");\\n    const ids =\\n      pageRef instanceof Ref && this.root.structParentIds?.get(pageRef);\\n    if (!Number.isInteger(id) && !ids) {\\n      return;\\n    }\\n\\n    const map = new Map();\\n    const numberTree = new NumberTree(parentTree, this.rootDict.xref);\\n\\n    if (Number.isInteger(id)) {\\n      const parentArray = numberTree.get(id);\\n      if (Array.isArray(parentArray)) {\\n        for (const ref of parentArray) {\\n          if (ref instanceof Ref) {\\n            this.addNode(this.rootDict.xref.fetch(ref), map);\\n          }\\n        }\\n      }\\n    }\\n\\n    if (!ids) {\\n      return;\\n    }\\n    for (const [elemId, type] of ids) {\\n      const obj = numberTree.get(elemId);\\n      if (obj) {\\n        const elem = this.addNode(this.rootDict.xref.fetchIfRef(obj), map);\\n        if (\\n          elem?.kids?.length === 1 &&\\n          elem.kids[0].type === StructElementType.OBJECT\\n        ) {\\n          \u002F\u002F The node in the struct tree is wrapping an object (annotation\\n          \u002F\u002F or xobject), so we need to update the type of the node to match\\n          \u002F\u002F the type of the object.\\n          elem.kids[0].type = type;\\n        }\\n      }\\n    }\\n  }\\n\\n  addNode(dict, map, level = 0) {\\n    if (level > MAX_DEPTH) {\\n      warn(\\\"StructTree MAX_DEPTH reached.\\\");\\n      return null;\\n    }\\n\\n    if (map.has(dict)) {\\n      return map.get(dict);\\n    }\\n\\n    const element = new StructElementNode(this, dict);\\n    map.set(dict, element);\\n\\n    const parent = dict.get(\\\"P\\\");\\n\\n    if (!parent || isName(parent.get(\\\"Type\\\"), \\\"StructTreeRoot\\\")) {\\n      if (!this.addTopLevelNode(dict, element)) {\\n        map.delete(dict);\\n      }\\n      return element;\\n    }\\n\\n    const parentNode = this.addNode(parent, map, level + 1);\\n    if (!parentNode) {\\n      return element;\\n    }\\n    let save = false;\\n    for (const kid of parentNode.kids) {\\n      if (kid.type === StructElementType.ELEMENT && kid.dict === dict) {\\n        kid.parentNode = element;\\n        save = true;\\n      }\\n    }\\n    if (!save) {\\n      map.delete(dict);\\n    }\\n    return element;\\n  }\\n\\n  addTopLevelNode(dict, element) {\\n    const obj = this.rootDict.get(\\\"K\\\");\\n    if (!obj) {\\n      return false;\\n    }\\n\\n    if (obj instanceof Dict) {\\n      if (obj.objId !== dict.objId) {\\n        return false;\\n      }\\n      this.nodes[0] = element;\\n      return true;\\n    }\\n\\n    if (!Array.isArray(obj)) {\\n      return true;\\n    }\\n    let save = false;\\n    for (let i = 0; i \u003C obj.length; i++) {\\n      const kidRef = obj[i];\\n      if (kidRef?.toString() === dict.objId) {\\n        this.nodes[i] = element;\\n        save = true;\\n      }\\n    }\\n    return save;\\n  }\\n\\n  \u002F**\\n   * Convert the tree structure into a simplified object literal that can\\n   * be sent to the main thread.\\n   * @returns {Object}\\n   *\u002F\\n  get serializable() {\\n    function nodeToSerializable(node, parent, level = 0) {\\n      if (level > MAX_DEPTH) {\\n        warn(\\\"StructTree too deep to be fully serialized.\\\");\\n        return;\\n      }\\n      const obj = Object.create(null);\\n      obj.role = node.role;\\n      obj.children = [];\\n      parent.children.push(obj);\\n      const alt = node.dict.get(\\\"Alt\\\");\\n      if (typeof alt === \\\"string\\\") {\\n        obj.alt = stringToPDFString(alt);\\n      }\\n      const lang = node.dict.get(\\\"Lang\\\");\\n      if (typeof lang === \\\"string\\\") {\\n        obj.lang = stringToPDFString(lang);\\n      }\\n\\n      for (const kid of node.kids) {\\n        const kidElement =\\n          kid.type === StructElementType.ELEMENT ? kid.parentNode : null;\\n        if (kidElement) {\\n          nodeToSerializable(kidElement, obj, level + 1);\\n          continue;\\n        } else if (\\n          kid.type === StructElementType.PAGE_CONTENT ||\\n          kid.type === StructElementType.STREAM_CONTENT\\n        ) {\\n          obj.children.push({\\n            type: \\\"content\\\",\\n            id: `p${kid.pageObjId}_mc${kid.mcid}`,\\n          });\\n        } else if (kid.type === StructElementType.OBJECT) {\\n          obj.children.push({\\n            type: \\\"object\\\",\\n            id: kid.refObjId,\\n          });\\n        } else if (kid.type === StructElementType.ANNOTATION) {\\n          obj.children.push({\\n            type: \\\"annotation\\\",\\n            id: `${AnnotationPrefix}${kid.refObjId}`,\\n          });\\n        }\\n      }\\n    }\\n\\n    const root = Object.create(null);\\n    root.children = [];\\n    root.role = \\\"Root\\\";\\n    for (const child of this.nodes) {\\n      if (!child) {\\n        continue;\\n      }\\n      nodeToSerializable(child, root);\\n    }\\n    return root;\\n  }\\n}\\n\\nexport { StructTreePage, StructTreeRoot };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  collectActions,\\n  isNumberArray,\\n  MissingDataException,\\n  PDF_VERSION_REGEXP,\\n  recoverJsURL,\\n  toRomanNumerals,\\n  XRefEntryException,\\n} from \\\".\u002Fcore_utils.js\\\";\\nimport {\\n  createValidAbsoluteUrl,\\n  DocumentActionEventType,\\n  FormatError,\\n  info,\\n  objectSize,\\n  PermissionFlag,\\n  shadow,\\n  stringToPDFString,\\n  stringToUTF8String,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  Dict,\\n  isDict,\\n  isName,\\n  isRefsEqual,\\n  Name,\\n  Ref,\\n  RefSet,\\n  RefSetCache,\\n} from \\\".\u002Fprimitives.js\\\";\\nimport { NameTree, NumberTree } from \\\".\u002Fname_number_tree.js\\\";\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { clearGlobalCaches } from \\\".\u002Fcleanup_helper.js\\\";\\nimport { ColorSpace } from \\\".\u002Fcolorspace.js\\\";\\nimport { FileSpec } from \\\".\u002Ffile_spec.js\\\";\\nimport { GlobalImageCache } from \\\".\u002Fimage_utils.js\\\";\\nimport { MetadataParser } from \\\".\u002Fmetadata_parser.js\\\";\\nimport { StructTreeRoot } from \\\".\u002Fstruct_tree.js\\\";\\n\\nfunction isValidExplicitDest(dest) {\\n  if (!Array.isArray(dest) || dest.length \u003C 2) {\\n    return false;\\n  }\\n  const [page, zoom, ...args] = dest;\\n  if (!(page instanceof Ref) && !Number.isInteger(page)) {\\n    return false;\\n  }\\n  if (!(zoom instanceof Name)) {\\n    return false;\\n  }\\n  let allowNull = true;\\n  switch (zoom.name) {\\n    case \\\"XYZ\\\":\\n      if (args.length !== 3) {\\n        return false;\\n      }\\n      break;\\n    case \\\"Fit\\\":\\n    case \\\"FitB\\\":\\n      return args.length === 0;\\n    case \\\"FitH\\\":\\n    case \\\"FitBH\\\":\\n    case \\\"FitV\\\":\\n    case \\\"FitBV\\\":\\n      if (args.length !== 1) {\\n        return false;\\n      }\\n      break;\\n    case \\\"FitR\\\":\\n      if (args.length !== 4) {\\n        return false;\\n      }\\n      allowNull = false;\\n      break;\\n    default:\\n      return false;\\n  }\\n  for (const arg of args) {\\n    if (!(typeof arg === \\\"number\\\" || (allowNull && arg === null))) {\\n      return false;\\n    }\\n  }\\n  return true;\\n}\\n\\nfunction fetchDest(dest) {\\n  if (dest instanceof Dict) {\\n    dest = dest.get(\\\"D\\\");\\n  }\\n  return isValidExplicitDest(dest) ? dest : null;\\n}\\n\\nfunction fetchRemoteDest(action) {\\n  let dest = action.get(\\\"D\\\");\\n  if (dest) {\\n    if (dest instanceof Name) {\\n      dest = dest.name;\\n    }\\n    if (typeof dest === \\\"string\\\") {\\n      return stringToPDFString(dest);\\n    } else if (isValidExplicitDest(dest)) {\\n      return JSON.stringify(dest);\\n    }\\n  }\\n  return null;\\n}\\n\\nclass Catalog {\\n  constructor(pdfManager, xref) {\\n    this.pdfManager = pdfManager;\\n    this.xref = xref;\\n\\n    this._catDict = xref.getCatalogObj();\\n    if (!(this._catDict instanceof Dict)) {\\n      throw new FormatError(\\\"Catalog object is not a dictionary.\\\");\\n    }\\n    \u002F\u002F Given that `XRef.parse` will both fetch *and* validate the \u002FPages-entry,\\n    \u002F\u002F the following call must always succeed here:\\n    this.toplevelPagesDict; \u002F\u002F eslint-disable-line no-unused-expressions\\n\\n    this._actualNumPages = null;\\n\\n    this.fontCache = new RefSetCache();\\n    this.builtInCMapCache = new Map();\\n    this.standardFontDataCache = new Map();\\n    this.globalImageCache = new GlobalImageCache();\\n    this.pageKidsCountCache = new RefSetCache();\\n    this.pageIndexCache = new RefSetCache();\\n    this.nonBlendModesSet = new RefSet();\\n    this.systemFontCache = new Map();\\n  }\\n\\n  cloneDict() {\\n    return this._catDict.clone();\\n  }\\n\\n  get version() {\\n    const version = this._catDict.get(\\\"Version\\\");\\n    if (version instanceof Name) {\\n      if (PDF_VERSION_REGEXP.test(version.name)) {\\n        return shadow(this, \\\"version\\\", version.name);\\n      }\\n      warn(`Invalid PDF catalog version: ${version.name}`);\\n    }\\n    return shadow(this, \\\"version\\\", null);\\n  }\\n\\n  get lang() {\\n    const lang = this._catDict.get(\\\"Lang\\\");\\n    return shadow(\\n      this,\\n      \\\"lang\\\",\\n      lang && typeof lang === \\\"string\\\" ? stringToPDFString(lang) : null\\n    );\\n  }\\n\\n  \u002F**\\n   * @type {boolean} `true` for pure XFA documents,\\n   *   `false` for XFA Foreground documents.\\n   *\u002F\\n  get needsRendering() {\\n    const needsRendering = this._catDict.get(\\\"NeedsRendering\\\");\\n    return shadow(\\n      this,\\n      \\\"needsRendering\\\",\\n      typeof needsRendering === \\\"boolean\\\" ? needsRendering : false\\n    );\\n  }\\n\\n  get collection() {\\n    let collection = null;\\n    try {\\n      const obj = this._catDict.get(\\\"Collection\\\");\\n      if (obj instanceof Dict && obj.size > 0) {\\n        collection = obj;\\n      }\\n    } catch (ex) {\\n      if (ex instanceof MissingDataException) {\\n        throw ex;\\n      }\\n      info(\\\"Cannot fetch Collection entry; assuming no collection is present.\\\");\\n    }\\n    return shadow(this, \\\"collection\\\", collection);\\n  }\\n\\n  get acroForm() {\\n    let acroForm = null;\\n    try {\\n      const obj = this._catDict.get(\\\"AcroForm\\\");\\n      if (obj instanceof Dict && obj.size > 0) {\\n        acroForm = obj;\\n      }\\n    } catch (ex) {\\n      if (ex instanceof MissingDataException) {\\n        throw ex;\\n      }\\n      info(\\\"Cannot fetch AcroForm entry; assuming no forms are present.\\\");\\n    }\\n    return shadow(this, \\\"acroForm\\\", acroForm);\\n  }\\n\\n  get acroFormRef() {\\n    const value = this._catDict.getRaw(\\\"AcroForm\\\");\\n    return shadow(this, \\\"acroFormRef\\\", value instanceof Ref ? value : null);\\n  }\\n\\n  get metadata() {\\n    const streamRef = this._catDict.getRaw(\\\"Metadata\\\");\\n    if (!(streamRef instanceof Ref)) {\\n      return shadow(this, \\\"metadata\\\", null);\\n    }\\n\\n    let metadata = null;\\n    try {\\n      const stream = this.xref.fetch(\\n        streamRef,\\n        \u002F* suppressEncryption = *\u002F !this.xref.encrypt?.encryptMetadata\\n      );\\n\\n      if (stream instanceof BaseStream && stream.dict instanceof Dict) {\\n        const type = stream.dict.get(\\\"Type\\\");\\n        const subtype = stream.dict.get(\\\"Subtype\\\");\\n\\n        if (isName(type, \\\"Metadata\\\") && isName(subtype, \\\"XML\\\")) {\\n          \u002F\u002F XXX: This should examine the charset the XML document defines,\\n          \u002F\u002F however since there are currently no real means to decode arbitrary\\n          \u002F\u002F charsets, let's just hope that the author of the PDF was reasonable\\n          \u002F\u002F enough to stick with the XML default charset, which is UTF-8.\\n          const data = stringToUTF8String(stream.getString());\\n          if (data) {\\n            metadata = new MetadataParser(data).serializable;\\n          }\\n        }\\n      }\\n    } catch (ex) {\\n      if (ex instanceof MissingDataException) {\\n        throw ex;\\n      }\\n      info(`Skipping invalid Metadata: \\\"${ex}\\\".`);\\n    }\\n    return shadow(this, \\\"metadata\\\", metadata);\\n  }\\n\\n  get markInfo() {\\n    let markInfo = null;\\n    try {\\n      markInfo = this._readMarkInfo();\\n    } catch (ex) {\\n      if (ex instanceof MissingDataException) {\\n        throw ex;\\n      }\\n      warn(\\\"Unable to read mark info.\\\");\\n    }\\n    return shadow(this, \\\"markInfo\\\", markInfo);\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _readMarkInfo() {\\n    const obj = this._catDict.get(\\\"MarkInfo\\\");\\n    if (!(obj instanceof Dict)) {\\n      return null;\\n    }\\n\\n    const markInfo = {\\n      Marked: false,\\n      UserProperties: false,\\n      Suspects: false,\\n    };\\n    for (const key in markInfo) {\\n      const value = obj.get(key);\\n      if (typeof value === \\\"boolean\\\") {\\n        markInfo[key] = value;\\n      }\\n    }\\n\\n    return markInfo;\\n  }\\n\\n  get structTreeRoot() {\\n    let structTree = null;\\n    try {\\n      structTree = this._readStructTreeRoot();\\n    } catch (ex) {\\n      if (ex instanceof MissingDataException) {\\n        throw ex;\\n      }\\n      warn(\\\"Unable read to structTreeRoot info.\\\");\\n    }\\n    return shadow(this, \\\"structTreeRoot\\\", structTree);\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _readStructTreeRoot() {\\n    const rawObj = this._catDict.getRaw(\\\"StructTreeRoot\\\");\\n    const obj = this.xref.fetchIfRef(rawObj);\\n    if (!(obj instanceof Dict)) {\\n      return null;\\n    }\\n\\n    const root = new StructTreeRoot(obj, rawObj);\\n    root.init();\\n    return root;\\n  }\\n\\n  get toplevelPagesDict() {\\n    const pagesObj = this._catDict.get(\\\"Pages\\\");\\n    if (!(pagesObj instanceof Dict)) {\\n      throw new FormatError(\\\"Invalid top-level pages dictionary.\\\");\\n    }\\n    return shadow(this, \\\"toplevelPagesDict\\\", pagesObj);\\n  }\\n\\n  get documentOutline() {\\n    let obj = null;\\n    try {\\n      obj = this._readDocumentOutline();\\n    } catch (ex) {\\n      if (ex instanceof MissingDataException) {\\n        throw ex;\\n      }\\n      warn(\\\"Unable to read document outline.\\\");\\n    }\\n    return shadow(this, \\\"documentOutline\\\", obj);\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _readDocumentOutline() {\\n    let obj = this._catDict.get(\\\"Outlines\\\");\\n    if (!(obj instanceof Dict)) {\\n      return null;\\n    }\\n    obj = obj.getRaw(\\\"First\\\");\\n    if (!(obj instanceof Ref)) {\\n      return null;\\n    }\\n\\n    const root = { items: [] };\\n    const queue = [{ obj, parent: root }];\\n    \u002F\u002F To avoid recursion, keep track of the already processed items.\\n    const processed = new RefSet();\\n    processed.put(obj);\\n    const xref = this.xref,\\n      blackColor = new Uint8ClampedArray(3);\\n\\n    while (queue.length > 0) {\\n      const i = queue.shift();\\n      const outlineDict = xref.fetchIfRef(i.obj);\\n      if (outlineDict === null) {\\n        continue;\\n      }\\n      if (!outlineDict.has(\\\"Title\\\")) {\\n        warn(\\\"Invalid outline item encountered.\\\");\\n      }\\n\\n      const data = { url: null, dest: null, action: null };\\n      Catalog.parseDestDictionary({\\n        destDict: outlineDict,\\n        resultObj: data,\\n        docBaseUrl: this.baseUrl,\\n        docAttachments: this.attachments,\\n      });\\n      const title = outlineDict.get(\\\"Title\\\");\\n      const flags = outlineDict.get(\\\"F\\\") || 0;\\n      const color = outlineDict.getArray(\\\"C\\\");\\n      const count = outlineDict.get(\\\"Count\\\");\\n      let rgbColor = blackColor;\\n\\n      \u002F\u002F We only need to parse the color when it's valid, and non-default.\\n      if (\\n        isNumberArray(color, 3) &&\\n        (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)\\n      ) {\\n        rgbColor = ColorSpace.singletons.rgb.getRgb(color, 0);\\n      }\\n\\n      const outlineItem = {\\n        action: data.action,\\n        attachment: data.attachment,\\n        dest: data.dest,\\n        url: data.url,\\n        unsafeUrl: data.unsafeUrl,\\n        newWindow: data.newWindow,\\n        setOCGState: data.setOCGState,\\n        title: typeof title === \\\"string\\\" ? stringToPDFString(title) : \\\"\\\",\\n        color: rgbColor,\\n        count: Number.isInteger(count) ? count : undefined,\\n        bold: !!(flags & 2),\\n        italic: !!(flags & 1),\\n        items: [],\\n      };\\n\\n      i.parent.items.push(outlineItem);\\n      obj = outlineDict.getRaw(\\\"First\\\");\\n      if (obj instanceof Ref && !processed.has(obj)) {\\n        queue.push({ obj, parent: outlineItem });\\n        processed.put(obj);\\n      }\\n      obj = outlineDict.getRaw(\\\"Next\\\");\\n      if (obj instanceof Ref && !processed.has(obj)) {\\n        queue.push({ obj, parent: i.parent });\\n        processed.put(obj);\\n      }\\n    }\\n    return root.items.length > 0 ? root.items : null;\\n  }\\n\\n  get permissions() {\\n    let permissions = null;\\n    try {\\n      permissions = this._readPermissions();\\n    } catch (ex) {\\n      if (ex instanceof MissingDataException) {\\n        throw ex;\\n      }\\n      warn(\\\"Unable to read permissions.\\\");\\n    }\\n    return shadow(this, \\\"permissions\\\", permissions);\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _readPermissions() {\\n    const encrypt = this.xref.trailer.get(\\\"Encrypt\\\");\\n    if (!(encrypt instanceof Dict)) {\\n      return null;\\n    }\\n\\n    let flags = encrypt.get(\\\"P\\\");\\n    if (typeof flags !== \\\"number\\\") {\\n      return null;\\n    }\\n\\n    \u002F\u002F PDF integer objects are represented internally in signed 2's complement\\n    \u002F\u002F form. Therefore, convert the signed decimal integer to a signed 2's\\n    \u002F\u002F complement binary integer so we can use regular bitwise operations on it.\\n    flags += 2 ** 32;\\n\\n    const permissions = [];\\n    for (const key in PermissionFlag) {\\n      const value = PermissionFlag[key];\\n      if (flags & value) {\\n        permissions.push(value);\\n      }\\n    }\\n    return permissions;\\n  }\\n\\n  get optionalContentConfig() {\\n    let config = null;\\n    try {\\n      const properties = this._catDict.get(\\\"OCProperties\\\");\\n      if (!properties) {\\n        return shadow(this, \\\"optionalContentConfig\\\", null);\\n      }\\n      const defaultConfig = properties.get(\\\"D\\\");\\n      if (!defaultConfig) {\\n        return shadow(this, \\\"optionalContentConfig\\\", null);\\n      }\\n      const groupsData = properties.get(\\\"OCGs\\\");\\n      if (!Array.isArray(groupsData)) {\\n        return shadow(this, \\\"optionalContentConfig\\\", null);\\n      }\\n      const groups = [];\\n      const groupRefs = new RefSet();\\n      \u002F\u002F Ensure all the optional content groups are valid.\\n      for (const groupRef of groupsData) {\\n        if (!(groupRef instanceof Ref) || groupRefs.has(groupRef)) {\\n          continue;\\n        }\\n        groupRefs.put(groupRef);\\n\\n        groups.push(this.#readOptionalContentGroup(groupRef));\\n      }\\n      config = this.#readOptionalContentConfig(defaultConfig, groupRefs);\\n      config.groups = groups;\\n    } catch (ex) {\\n      if (ex instanceof MissingDataException) {\\n        throw ex;\\n      }\\n      warn(`Unable to read optional content config: ${ex}`);\\n    }\\n    return shadow(this, \\\"optionalContentConfig\\\", config);\\n  }\\n\\n  #readOptionalContentGroup(groupRef) {\\n    const group = this.xref.fetch(groupRef);\\n    const obj = {\\n      id: groupRef.toString(),\\n      name: null,\\n      intent: null,\\n      usage: {\\n        print: null,\\n        view: null,\\n      },\\n    };\\n\\n    const name = group.get(\\\"Name\\\");\\n    if (typeof name === \\\"string\\\") {\\n      obj.name = stringToPDFString(name);\\n    }\\n\\n    let intent = group.getArray(\\\"Intent\\\");\\n    if (!Array.isArray(intent)) {\\n      intent = [intent];\\n    }\\n    if (intent.every(i => i instanceof Name)) {\\n      obj.intent = intent.map(i => i.name);\\n    }\\n\\n    const usage = group.get(\\\"Usage\\\");\\n    if (!(usage instanceof Dict)) {\\n      return obj;\\n    }\\n    const usageObj = obj.usage;\\n\\n    const print = usage.get(\\\"Print\\\");\\n    if (print instanceof Dict) {\\n      const printState = print.get(\\\"PrintState\\\");\\n      if (printState instanceof Name) {\\n        switch (printState.name) {\\n          case \\\"ON\\\":\\n          case \\\"OFF\\\":\\n            usageObj.print = { printState: printState.name };\\n        }\\n      }\\n    }\\n\\n    const view = usage.get(\\\"View\\\");\\n    if (view instanceof Dict) {\\n      const viewState = view.get(\\\"ViewState\\\");\\n      if (viewState instanceof Name) {\\n        switch (viewState.name) {\\n          case \\\"ON\\\":\\n          case \\\"OFF\\\":\\n            usageObj.view = { viewState: viewState.name };\\n        }\\n      }\\n    }\\n\\n    return obj;\\n  }\\n\\n  #readOptionalContentConfig(config, contentGroupRefs) {\\n    function parseOnOff(refs) {\\n      const onParsed = [];\\n      if (Array.isArray(refs)) {\\n        for (const value of refs) {\\n          if (!(value instanceof Ref)) {\\n            continue;\\n          }\\n          if (contentGroupRefs.has(value)) {\\n            onParsed.push(value.toString());\\n          }\\n        }\\n      }\\n      return onParsed;\\n    }\\n\\n    function parseOrder(refs, nestedLevels = 0) {\\n      if (!Array.isArray(refs)) {\\n        return null;\\n      }\\n      const order = [];\\n\\n      for (const value of refs) {\\n        if (value instanceof Ref && contentGroupRefs.has(value)) {\\n          parsedOrderRefs.put(value); \u002F\u002F Handle \\\"hidden\\\" groups, see below.\\n\\n          order.push(value.toString());\\n          continue;\\n        }\\n        \u002F\u002F Handle nested \u002FOrder arrays (see e.g. issue 9462 and bug 1240641).\\n        const nestedOrder = parseNestedOrder(value, nestedLevels);\\n        if (nestedOrder) {\\n          order.push(nestedOrder);\\n        }\\n      }\\n\\n      if (nestedLevels > 0) {\\n        return order;\\n      }\\n      const hiddenGroups = [];\\n      for (const groupRef of contentGroupRefs) {\\n        if (parsedOrderRefs.has(groupRef)) {\\n          continue;\\n        }\\n        hiddenGroups.push(groupRef.toString());\\n      }\\n      if (hiddenGroups.length) {\\n        order.push({ name: null, order: hiddenGroups });\\n      }\\n\\n      return order;\\n    }\\n\\n    function parseNestedOrder(ref, nestedLevels) {\\n      if (++nestedLevels > MAX_NESTED_LEVELS) {\\n        warn(\\\"parseNestedOrder - reached MAX_NESTED_LEVELS.\\\");\\n        return null;\\n      }\\n      const value = xref.fetchIfRef(ref);\\n      if (!Array.isArray(value)) {\\n        return null;\\n      }\\n      const nestedName = xref.fetchIfRef(value[0]);\\n      if (typeof nestedName !== \\\"string\\\") {\\n        return null;\\n      }\\n      const nestedOrder = parseOrder(value.slice(1), nestedLevels);\\n      if (!nestedOrder || !nestedOrder.length) {\\n        return null;\\n      }\\n      return { name: stringToPDFString(nestedName), order: nestedOrder };\\n    }\\n\\n    const xref = this.xref,\\n      parsedOrderRefs = new RefSet(),\\n      MAX_NESTED_LEVELS = 10;\\n\\n    return {\\n      name:\\n        typeof config.get(\\\"Name\\\") === \\\"string\\\"\\n          ? stringToPDFString(config.get(\\\"Name\\\"))\\n          : null,\\n      creator:\\n        typeof config.get(\\\"Creator\\\") === \\\"string\\\"\\n          ? stringToPDFString(config.get(\\\"Creator\\\"))\\n          : null,\\n      baseState:\\n        config.get(\\\"BaseState\\\") instanceof Name\\n          ? config.get(\\\"BaseState\\\").name\\n          : null,\\n      on: parseOnOff(config.get(\\\"ON\\\")),\\n      off: parseOnOff(config.get(\\\"OFF\\\")),\\n      order: parseOrder(config.get(\\\"Order\\\")),\\n      groups: null,\\n    };\\n  }\\n\\n  setActualNumPages(num = null) {\\n    this._actualNumPages = num;\\n  }\\n\\n  get hasActualNumPages() {\\n    return this._actualNumPages !== null;\\n  }\\n\\n  get _pagesCount() {\\n    const obj = this.toplevelPagesDict.get(\\\"Count\\\");\\n    if (!Number.isInteger(obj)) {\\n      throw new FormatError(\\n        \\\"Page count in top-level pages dictionary is not an integer.\\\"\\n      );\\n    }\\n    return shadow(this, \\\"_pagesCount\\\", obj);\\n  }\\n\\n  get numPages() {\\n    return this.hasActualNumPages ? this._actualNumPages : this._pagesCount;\\n  }\\n\\n  get destinations() {\\n    const obj = this._readDests(),\\n      dests = Object.create(null);\\n    if (obj instanceof NameTree) {\\n      for (const [key, value] of obj.getAll()) {\\n        const dest = fetchDest(value);\\n        if (dest) {\\n          dests[stringToPDFString(key)] = dest;\\n        }\\n      }\\n    } else if (obj instanceof Dict) {\\n      obj.forEach(function (key, value) {\\n        const dest = fetchDest(value);\\n        if (dest) {\\n          dests[key] = dest;\\n        }\\n      });\\n    }\\n    return shadow(this, \\\"destinations\\\", dests);\\n  }\\n\\n  getDestination(id) {\\n    const obj = this._readDests();\\n    if (obj instanceof NameTree) {\\n      const dest = fetchDest(obj.get(id));\\n      if (dest) {\\n        return dest;\\n      }\\n      \u002F\u002F Fallback to checking the *entire* NameTree, in an attempt to handle\\n      \u002F\u002F corrupt PDF documents with out-of-order NameTrees (fixes issue 10272).\\n      const allDest = this.destinations[id];\\n      if (allDest) {\\n        warn(`Found \\\"${id}\\\" at an incorrect position in the NameTree.`);\\n        return allDest;\\n      }\\n    } else if (obj instanceof Dict) {\\n      const dest = fetchDest(obj.get(id));\\n      if (dest) {\\n        return dest;\\n      }\\n    }\\n    return null;\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _readDests() {\\n    const obj = this._catDict.get(\\\"Names\\\");\\n    if (obj?.has(\\\"Dests\\\")) {\\n      return new NameTree(obj.getRaw(\\\"Dests\\\"), this.xref);\\n    } else if (this._catDict.has(\\\"Dests\\\")) {\\n      \u002F\u002F Simple destination dictionary.\\n      return this._catDict.get(\\\"Dests\\\");\\n    }\\n    return undefined;\\n  }\\n\\n  get pageLabels() {\\n    let obj = null;\\n    try {\\n      obj = this._readPageLabels();\\n    } catch (ex) {\\n      if (ex instanceof MissingDataException) {\\n        throw ex;\\n      }\\n      warn(\\\"Unable to read page labels.\\\");\\n    }\\n    return shadow(this, \\\"pageLabels\\\", obj);\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _readPageLabels() {\\n    const obj = this._catDict.getRaw(\\\"PageLabels\\\");\\n    if (!obj) {\\n      return null;\\n    }\\n\\n    const pageLabels = new Array(this.numPages);\\n    let style = null,\\n      prefix = \\\"\\\";\\n\\n    const numberTree = new NumberTree(obj, this.xref);\\n    const nums = numberTree.getAll();\\n    let currentLabel = \\\"\\\",\\n      currentIndex = 1;\\n\\n    for (let i = 0, ii = this.numPages; i \u003C ii; i++) {\\n      const labelDict = nums.get(i);\\n\\n      if (labelDict !== undefined) {\\n        if (!(labelDict instanceof Dict)) {\\n          throw new FormatError(\\\"PageLabel is not a dictionary.\\\");\\n        }\\n\\n        if (\\n          labelDict.has(\\\"Type\\\") &&\\n          !isName(labelDict.get(\\\"Type\\\"), \\\"PageLabel\\\")\\n        ) {\\n          throw new FormatError(\\\"Invalid type in PageLabel dictionary.\\\");\\n        }\\n\\n        if (labelDict.has(\\\"S\\\")) {\\n          const s = labelDict.get(\\\"S\\\");\\n          if (!(s instanceof Name)) {\\n            throw new FormatError(\\\"Invalid style in PageLabel dictionary.\\\");\\n          }\\n          style = s.name;\\n        } else {\\n          style = null;\\n        }\\n\\n        if (labelDict.has(\\\"P\\\")) {\\n          const p = labelDict.get(\\\"P\\\");\\n          if (typeof p !== \\\"string\\\") {\\n            throw new FormatError(\\\"Invalid prefix in PageLabel dictionary.\\\");\\n          }\\n          prefix = stringToPDFString(p);\\n        } else {\\n          prefix = \\\"\\\";\\n        }\\n\\n        if (labelDict.has(\\\"St\\\")) {\\n          const st = labelDict.get(\\\"St\\\");\\n          if (!(Number.isInteger(st) && st >= 1)) {\\n            throw new FormatError(\\\"Invalid start in PageLabel dictionary.\\\");\\n          }\\n          currentIndex = st;\\n        } else {\\n          currentIndex = 1;\\n        }\\n      }\\n\\n      switch (style) {\\n        case \\\"D\\\":\\n          currentLabel = currentIndex;\\n          break;\\n        case \\\"R\\\":\\n        case \\\"r\\\":\\n          currentLabel = toRomanNumerals(currentIndex, style === \\\"r\\\");\\n          break;\\n        case \\\"A\\\":\\n        case \\\"a\\\":\\n          const LIMIT = 26; \u002F\u002F Use only the characters A-Z, or a-z.\\n          const A_UPPER_CASE = 0x41,\\n            A_LOWER_CASE = 0x61;\\n\\n          const baseCharCode = style === \\\"a\\\" ? A_LOWER_CASE : A_UPPER_CASE;\\n          const letterIndex = currentIndex - 1;\\n          const character = String.fromCharCode(\\n            baseCharCode + (letterIndex % LIMIT)\\n          );\\n          currentLabel = character.repeat(Math.floor(letterIndex \u002F LIMIT) + 1);\\n          break;\\n        default:\\n          if (style) {\\n            throw new FormatError(\\n              `Invalid style \\\"${style}\\\" in PageLabel dictionary.`\\n            );\\n          }\\n          currentLabel = \\\"\\\";\\n      }\\n\\n      pageLabels[i] = prefix + currentLabel;\\n      currentIndex++;\\n    }\\n    return pageLabels;\\n  }\\n\\n  get pageLayout() {\\n    const obj = this._catDict.get(\\\"PageLayout\\\");\\n    \u002F\u002F Purposely use a non-standard default value, rather than 'SinglePage', to\\n    \u002F\u002F allow differentiating between `undefined` and \u002FSinglePage since that does\\n    \u002F\u002F affect the Scroll mode (continuous\u002Fnon-continuous) used in Adobe Reader.\\n    let pageLayout = \\\"\\\";\\n\\n    if (obj instanceof Name) {\\n      switch (obj.name) {\\n        case \\\"SinglePage\\\":\\n        case \\\"OneColumn\\\":\\n        case \\\"TwoColumnLeft\\\":\\n        case \\\"TwoColumnRight\\\":\\n        case \\\"TwoPageLeft\\\":\\n        case \\\"TwoPageRight\\\":\\n          pageLayout = obj.name;\\n      }\\n    }\\n    return shadow(this, \\\"pageLayout\\\", pageLayout);\\n  }\\n\\n  get pageMode() {\\n    const obj = this._catDict.get(\\\"PageMode\\\");\\n    let pageMode = \\\"UseNone\\\"; \u002F\u002F Default value.\\n\\n    if (obj instanceof Name) {\\n      switch (obj.name) {\\n        case \\\"UseNone\\\":\\n        case \\\"UseOutlines\\\":\\n        case \\\"UseThumbs\\\":\\n        case \\\"FullScreen\\\":\\n        case \\\"UseOC\\\":\\n        case \\\"UseAttachments\\\":\\n          pageMode = obj.name;\\n      }\\n    }\\n    return shadow(this, \\\"pageMode\\\", pageMode);\\n  }\\n\\n  get viewerPreferences() {\\n    const obj = this._catDict.get(\\\"ViewerPreferences\\\");\\n    if (!(obj instanceof Dict)) {\\n      return shadow(this, \\\"viewerPreferences\\\", null);\\n    }\\n    let prefs = null;\\n\\n    for (const key of obj.getKeys()) {\\n      const value = obj.get(key);\\n      let prefValue;\\n\\n      switch (key) {\\n        case \\\"HideToolbar\\\":\\n        case \\\"HideMenubar\\\":\\n        case \\\"HideWindowUI\\\":\\n        case \\\"FitWindow\\\":\\n        case \\\"CenterWindow\\\":\\n        case \\\"DisplayDocTitle\\\":\\n        case \\\"PickTrayByPDFSize\\\":\\n          if (typeof value === \\\"boolean\\\") {\\n            prefValue = value;\\n          }\\n          break;\\n        case \\\"NonFullScreenPageMode\\\":\\n          if (value instanceof Name) {\\n            switch (value.name) {\\n              case \\\"UseNone\\\":\\n              case \\\"UseOutlines\\\":\\n              case \\\"UseThumbs\\\":\\n              case \\\"UseOC\\\":\\n                prefValue = value.name;\\n                break;\\n              default:\\n                prefValue = \\\"UseNone\\\";\\n            }\\n          }\\n          break;\\n        case \\\"Direction\\\":\\n          if (value instanceof Name) {\\n            switch (value.name) {\\n              case \\\"L2R\\\":\\n              case \\\"R2L\\\":\\n                prefValue = value.name;\\n                break;\\n              default:\\n                prefValue = \\\"L2R\\\";\\n            }\\n          }\\n          break;\\n        case \\\"ViewArea\\\":\\n        case \\\"ViewClip\\\":\\n        case \\\"PrintArea\\\":\\n        case \\\"PrintClip\\\":\\n          if (value instanceof Name) {\\n            switch (value.name) {\\n              case \\\"MediaBox\\\":\\n              case \\\"CropBox\\\":\\n              case \\\"BleedBox\\\":\\n              case \\\"TrimBox\\\":\\n              case \\\"ArtBox\\\":\\n                prefValue = value.name;\\n                break;\\n              default:\\n                prefValue = \\\"CropBox\\\";\\n            }\\n          }\\n          break;\\n        case \\\"PrintScaling\\\":\\n          if (value instanceof Name) {\\n            switch (value.name) {\\n              case \\\"None\\\":\\n              case \\\"AppDefault\\\":\\n                prefValue = value.name;\\n                break;\\n              default:\\n                prefValue = \\\"AppDefault\\\";\\n            }\\n          }\\n          break;\\n        case \\\"Duplex\\\":\\n          if (value instanceof Name) {\\n            switch (value.name) {\\n              case \\\"Simplex\\\":\\n              case \\\"DuplexFlipShortEdge\\\":\\n              case \\\"DuplexFlipLongEdge\\\":\\n                prefValue = value.name;\\n                break;\\n              default:\\n                prefValue = \\\"None\\\";\\n            }\\n          }\\n          break;\\n        case \\\"PrintPageRange\\\":\\n          \u002F\u002F The number of elements must be even.\\n          if (Array.isArray(value) && value.length % 2 === 0) {\\n            const isValid = value.every(\\n              (page, i, arr) =>\\n                Number.isInteger(page) &&\\n                page > 0 &&\\n                (i === 0 || page >= arr[i - 1]) &&\\n                page \u003C= this.numPages\\n            );\\n            if (isValid) {\\n              prefValue = value;\\n            }\\n          }\\n          break;\\n        case \\\"NumCopies\\\":\\n          if (Number.isInteger(value) && value > 0) {\\n            prefValue = value;\\n          }\\n          break;\\n        default:\\n          warn(`Ignoring non-standard key in ViewerPreferences: ${key}.`);\\n          continue;\\n      }\\n\\n      if (prefValue === undefined) {\\n        warn(`Bad value, for key \\\"${key}\\\", in ViewerPreferences: ${value}.`);\\n        continue;\\n      }\\n      if (!prefs) {\\n        prefs = Object.create(null);\\n      }\\n      prefs[key] = prefValue;\\n    }\\n    return shadow(this, \\\"viewerPreferences\\\", prefs);\\n  }\\n\\n  get openAction() {\\n    const obj = this._catDict.get(\\\"OpenAction\\\");\\n    const openAction = Object.create(null);\\n\\n    if (obj instanceof Dict) {\\n      \u002F\u002F Convert the OpenAction dictionary into a format that works with\\n      \u002F\u002F `parseDestDictionary`, to avoid having to re-implement those checks.\\n      const destDict = new Dict(this.xref);\\n      destDict.set(\\\"A\\\", obj);\\n\\n      const resultObj = { url: null, dest: null, action: null };\\n      Catalog.parseDestDictionary({ destDict, resultObj });\\n\\n      if (Array.isArray(resultObj.dest)) {\\n        openAction.dest = resultObj.dest;\\n      } else if (resultObj.action) {\\n        openAction.action = resultObj.action;\\n      }\\n    } else if (Array.isArray(obj)) {\\n      openAction.dest = obj;\\n    }\\n    return shadow(\\n      this,\\n      \\\"openAction\\\",\\n      objectSize(openAction) > 0 ? openAction : null\\n    );\\n  }\\n\\n  get attachments() {\\n    const obj = this._catDict.get(\\\"Names\\\");\\n    let attachments = null;\\n\\n    if (obj instanceof Dict && obj.has(\\\"EmbeddedFiles\\\")) {\\n      const nameTree = new NameTree(obj.getRaw(\\\"EmbeddedFiles\\\"), this.xref);\\n      for (const [key, value] of nameTree.getAll()) {\\n        const fs = new FileSpec(value, this.xref);\\n        if (!attachments) {\\n          attachments = Object.create(null);\\n        }\\n        attachments[stringToPDFString(key)] = fs.serializable;\\n      }\\n    }\\n    return shadow(this, \\\"attachments\\\", attachments);\\n  }\\n\\n  get xfaImages() {\\n    const obj = this._catDict.get(\\\"Names\\\");\\n    let xfaImages = null;\\n\\n    if (obj instanceof Dict && obj.has(\\\"XFAImages\\\")) {\\n      const nameTree = new NameTree(obj.getRaw(\\\"XFAImages\\\"), this.xref);\\n      for (const [key, value] of nameTree.getAll()) {\\n        if (!xfaImages) {\\n          xfaImages = new Dict(this.xref);\\n        }\\n        xfaImages.set(stringToPDFString(key), value);\\n      }\\n    }\\n    return shadow(this, \\\"xfaImages\\\", xfaImages);\\n  }\\n\\n  _collectJavaScript() {\\n    const obj = this._catDict.get(\\\"Names\\\");\\n    let javaScript = null;\\n\\n    function appendIfJavaScriptDict(name, jsDict) {\\n      if (!(jsDict instanceof Dict)) {\\n        return;\\n      }\\n      if (!isName(jsDict.get(\\\"S\\\"), \\\"JavaScript\\\")) {\\n        return;\\n      }\\n\\n      let js = jsDict.get(\\\"JS\\\");\\n      if (js instanceof BaseStream) {\\n        js = js.getString();\\n      } else if (typeof js !== \\\"string\\\") {\\n        return;\\n      }\\n      js = stringToPDFString(js).replaceAll(\\\"\\\\x00\\\", \\\"\\\");\\n      \u002F\u002F Skip empty entries, similar to the `_collectJS` function.\\n      if (js) {\\n        (javaScript ||= new Map()).set(name, js);\\n      }\\n    }\\n\\n    if (obj instanceof Dict && obj.has(\\\"JavaScript\\\")) {\\n      const nameTree = new NameTree(obj.getRaw(\\\"JavaScript\\\"), this.xref);\\n      for (const [key, value] of nameTree.getAll()) {\\n        appendIfJavaScriptDict(stringToPDFString(key), value);\\n      }\\n    }\\n    \u002F\u002F Append OpenAction \\\"JavaScript\\\" actions, if any, to the JavaScript map.\\n    const openAction = this._catDict.get(\\\"OpenAction\\\");\\n    if (openAction) {\\n      appendIfJavaScriptDict(\\\"OpenAction\\\", openAction);\\n    }\\n\\n    return javaScript;\\n  }\\n\\n  get jsActions() {\\n    const javaScript = this._collectJavaScript();\\n    let actions = collectActions(\\n      this.xref,\\n      this._catDict,\\n      DocumentActionEventType\\n    );\\n\\n    if (javaScript) {\\n      actions ||= Object.create(null);\\n\\n      for (const [key, val] of javaScript) {\\n        if (key in actions) {\\n          actions[key].push(val);\\n        } else {\\n          actions[key] = [val];\\n        }\\n      }\\n    }\\n    return shadow(this, \\\"jsActions\\\", actions);\\n  }\\n\\n  async fontFallback(id, handler) {\\n    const translatedFonts = await Promise.all(this.fontCache);\\n\\n    for (const translatedFont of translatedFonts) {\\n      if (translatedFont.loadedName === id) {\\n        translatedFont.fallback(handler);\\n        return;\\n      }\\n    }\\n  }\\n\\n  async cleanup(manuallyTriggered = false) {\\n    clearGlobalCaches();\\n    this.globalImageCache.clear(\u002F* onlyData = *\u002F manuallyTriggered);\\n    this.pageKidsCountCache.clear();\\n    this.pageIndexCache.clear();\\n    this.nonBlendModesSet.clear();\\n\\n    const translatedFonts = await Promise.all(this.fontCache);\\n\\n    for (const { dict } of translatedFonts) {\\n      delete dict.cacheKey;\\n    }\\n    this.fontCache.clear();\\n    this.builtInCMapCache.clear();\\n    this.standardFontDataCache.clear();\\n    this.systemFontCache.clear();\\n  }\\n\\n  async getPageDict(pageIndex) {\\n    const nodesToVisit = [this.toplevelPagesDict];\\n    const visitedNodes = new RefSet();\\n\\n    const pagesRef = this._catDict.getRaw(\\\"Pages\\\");\\n    if (pagesRef instanceof Ref) {\\n      visitedNodes.put(pagesRef);\\n    }\\n    const xref = this.xref,\\n      pageKidsCountCache = this.pageKidsCountCache,\\n      pageIndexCache = this.pageIndexCache;\\n    let currentPageIndex = 0;\\n\\n    while (nodesToVisit.length) {\\n      const currentNode = nodesToVisit.pop();\\n\\n      if (currentNode instanceof Ref) {\\n        const count = pageKidsCountCache.get(currentNode);\\n        \u002F\u002F Skip nodes where the page can't be.\\n        if (count >= 0 && currentPageIndex + count \u003C= pageIndex) {\\n          currentPageIndex += count;\\n          continue;\\n        }\\n        \u002F\u002F Prevent circular references in the \u002FPages tree.\\n        if (visitedNodes.has(currentNode)) {\\n          throw new FormatError(\\\"Pages tree contains circular reference.\\\");\\n        }\\n        visitedNodes.put(currentNode);\\n\\n        const obj = await xref.fetchAsync(currentNode);\\n        if (obj instanceof Dict) {\\n          let type = obj.getRaw(\\\"Type\\\");\\n          if (type instanceof Ref) {\\n            type = await xref.fetchAsync(type);\\n          }\\n          if (isName(type, \\\"Page\\\") || !obj.has(\\\"Kids\\\")) {\\n            \u002F\u002F Cache the Page reference, since it can *greatly* improve\\n            \u002F\u002F performance by reducing redundant lookups in long documents\\n            \u002F\u002F where all nodes are found at *one* level of the tree.\\n            if (!pageKidsCountCache.has(currentNode)) {\\n              pageKidsCountCache.put(currentNode, 1);\\n            }\\n            \u002F\u002F Help improve performance of the `getPageIndex` method.\\n            if (!pageIndexCache.has(currentNode)) {\\n              pageIndexCache.put(currentNode, currentPageIndex);\\n            }\\n\\n            if (currentPageIndex === pageIndex) {\\n              return [obj, currentNode];\\n            }\\n            currentPageIndex++;\\n            continue;\\n          }\\n        }\\n        nodesToVisit.push(obj);\\n        continue;\\n      }\\n\\n      \u002F\u002F Must be a child page dictionary.\\n      if (!(currentNode instanceof Dict)) {\\n        throw new FormatError(\\n          \\\"Page dictionary kid reference points to wrong type of object.\\\"\\n        );\\n      }\\n      const { objId } = currentNode;\\n\\n      let count = currentNode.getRaw(\\\"Count\\\");\\n      if (count instanceof Ref) {\\n        count = await xref.fetchAsync(count);\\n      }\\n      if (Number.isInteger(count) && count >= 0) {\\n        \u002F\u002F Cache the Kids count, since it can reduce redundant lookups in\\n        \u002F\u002F documents where all nodes are found at *one* level of the tree.\\n        if (objId && !pageKidsCountCache.has(objId)) {\\n          pageKidsCountCache.put(objId, count);\\n        }\\n\\n        \u002F\u002F Skip nodes where the page can't be.\\n        if (currentPageIndex + count \u003C= pageIndex) {\\n          currentPageIndex += count;\\n          continue;\\n        }\\n      }\\n\\n      let kids = currentNode.getRaw(\\\"Kids\\\");\\n      if (kids instanceof Ref) {\\n        kids = await xref.fetchAsync(kids);\\n      }\\n      if (!Array.isArray(kids)) {\\n        \u002F\u002F Prevent errors in corrupt PDF documents that violate the\\n        \u002F\u002F specification by *inlining* Page dicts directly in the Kids\\n        \u002F\u002F array, rather than using indirect objects (fixes issue9540.pdf).\\n        let type = currentNode.getRaw(\\\"Type\\\");\\n        if (type instanceof Ref) {\\n          type = await xref.fetchAsync(type);\\n        }\\n        if (isName(type, \\\"Page\\\") || !currentNode.has(\\\"Kids\\\")) {\\n          if (currentPageIndex === pageIndex) {\\n            return [currentNode, null];\\n          }\\n          currentPageIndex++;\\n          continue;\\n        }\\n\\n        throw new FormatError(\\\"Page dictionary kids object is not an array.\\\");\\n      }\\n\\n      \u002F\u002F Always check all `Kids` nodes, to avoid getting stuck in an empty\\n      \u002F\u002F node further down in the tree (see issue5644.pdf, issue8088.pdf),\\n      \u002F\u002F and to ensure that we actually find the correct `Page` dict.\\n      for (let last = kids.length - 1; last >= 0; last--) {\\n        nodesToVisit.push(kids[last]);\\n      }\\n    }\\n\\n    throw new Error(`Page index ${pageIndex} not found.`);\\n  }\\n\\n  \u002F**\\n   * Eagerly fetches the entire \u002FPages-tree; should ONLY be used as a fallback.\\n   * @returns {Promise\u003CMap>}\\n   *\u002F\\n  async getAllPageDicts(recoveryMode = false) {\\n    const { ignoreErrors } = this.pdfManager.evaluatorOptions;\\n\\n    const queue = [{ currentNode: this.toplevelPagesDict, posInKids: 0 }];\\n    const visitedNodes = new RefSet();\\n\\n    const pagesRef = this._catDict.getRaw(\\\"Pages\\\");\\n    if (pagesRef instanceof Ref) {\\n      visitedNodes.put(pagesRef);\\n    }\\n    const map = new Map(),\\n      xref = this.xref,\\n      pageIndexCache = this.pageIndexCache;\\n    let pageIndex = 0;\\n\\n    function addPageDict(pageDict, pageRef) {\\n      \u002F\u002F Help improve performance of the `getPageIndex` method.\\n      if (pageRef && !pageIndexCache.has(pageRef)) {\\n        pageIndexCache.put(pageRef, pageIndex);\\n      }\\n\\n      map.set(pageIndex++, [pageDict, pageRef]);\\n    }\\n    function addPageError(error) {\\n      if (error instanceof XRefEntryException && !recoveryMode) {\\n        throw error;\\n      }\\n      if (recoveryMode && ignoreErrors && pageIndex === 0) {\\n        \u002F\u002F Ensure that the viewer will always load (fixes issue15590.pdf).\\n        warn(`getAllPageDicts - Skipping invalid first page: \\\"${error}\\\".`);\\n        error = Dict.empty;\\n      }\\n\\n      map.set(pageIndex++, [error, null]);\\n    }\\n\\n    while (queue.length > 0) {\\n      const queueItem = queue.at(-1);\\n      const { currentNode, posInKids } = queueItem;\\n\\n      let kids = currentNode.getRaw(\\\"Kids\\\");\\n      if (kids instanceof Ref) {\\n        try {\\n          kids = await xref.fetchAsync(kids);\\n        } catch (ex) {\\n          addPageError(ex);\\n          break;\\n        }\\n      }\\n      if (!Array.isArray(kids)) {\\n        addPageError(\\n          new FormatError(\\\"Page dictionary kids object is not an array.\\\")\\n        );\\n        break;\\n      }\\n\\n      if (posInKids >= kids.length) {\\n        queue.pop();\\n        continue;\\n      }\\n\\n      const kidObj = kids[posInKids];\\n      let obj;\\n      if (kidObj instanceof Ref) {\\n        \u002F\u002F Prevent circular references in the \u002FPages tree.\\n        if (visitedNodes.has(kidObj)) {\\n          addPageError(\\n            new FormatError(\\\"Pages tree contains circular reference.\\\")\\n          );\\n          break;\\n        }\\n        visitedNodes.put(kidObj);\\n\\n        try {\\n          obj = await xref.fetchAsync(kidObj);\\n        } catch (ex) {\\n          addPageError(ex);\\n          break;\\n        }\\n      } else {\\n        \u002F\u002F Prevent errors in corrupt PDF documents that violate the\\n        \u002F\u002F specification by *inlining* Page dicts directly in the Kids\\n        \u002F\u002F array, rather than using indirect objects (see issue9540.pdf).\\n        obj = kidObj;\\n      }\\n      if (!(obj instanceof Dict)) {\\n        addPageError(\\n          new FormatError(\\n            \\\"Page dictionary kid reference points to wrong type of object.\\\"\\n          )\\n        );\\n        break;\\n      }\\n\\n      let type = obj.getRaw(\\\"Type\\\");\\n      if (type instanceof Ref) {\\n        try {\\n          type = await xref.fetchAsync(type);\\n        } catch (ex) {\\n          addPageError(ex);\\n          break;\\n        }\\n      }\\n      if (isName(type, \\\"Page\\\") || !obj.has(\\\"Kids\\\")) {\\n        addPageDict(obj, kidObj instanceof Ref ? kidObj : null);\\n      } else {\\n        queue.push({ currentNode: obj, posInKids: 0 });\\n      }\\n      queueItem.posInKids++;\\n    }\\n    return map;\\n  }\\n\\n  getPageIndex(pageRef) {\\n    const cachedPageIndex = this.pageIndexCache.get(pageRef);\\n    if (cachedPageIndex !== undefined) {\\n      return Promise.resolve(cachedPageIndex);\\n    }\\n\\n    \u002F\u002F The page tree nodes have the count of all the leaves below them. To get\\n    \u002F\u002F how many pages are before we just have to walk up the tree and keep\\n    \u002F\u002F adding the count of siblings to the left of the node.\\n    const xref = this.xref;\\n\\n    function pagesBeforeRef(kidRef) {\\n      let total = 0,\\n        parentRef;\\n\\n      return xref\\n        .fetchAsync(kidRef)\\n        .then(function (node) {\\n          if (\\n            isRefsEqual(kidRef, pageRef) &&\\n            !isDict(node, \\\"Page\\\") &&\\n            !(node instanceof Dict && !node.has(\\\"Type\\\") && node.has(\\\"Contents\\\"))\\n          ) {\\n            throw new FormatError(\\n              \\\"The reference does not point to a \u002FPage dictionary.\\\"\\n            );\\n          }\\n          if (!node) {\\n            return null;\\n          }\\n          if (!(node instanceof Dict)) {\\n            throw new FormatError(\\\"Node must be a dictionary.\\\");\\n          }\\n          parentRef = node.getRaw(\\\"Parent\\\");\\n          return node.getAsync(\\\"Parent\\\");\\n        })\\n        .then(function (parent) {\\n          if (!parent) {\\n            return null;\\n          }\\n          if (!(parent instanceof Dict)) {\\n            throw new FormatError(\\\"Parent must be a dictionary.\\\");\\n          }\\n          return parent.getAsync(\\\"Kids\\\");\\n        })\\n        .then(function (kids) {\\n          if (!kids) {\\n            return null;\\n          }\\n\\n          const kidPromises = [];\\n          let found = false;\\n          for (const kid of kids) {\\n            if (!(kid instanceof Ref)) {\\n              throw new FormatError(\\\"Kid must be a reference.\\\");\\n            }\\n            if (isRefsEqual(kid, kidRef)) {\\n              found = true;\\n              break;\\n            }\\n            kidPromises.push(\\n              xref.fetchAsync(kid).then(function (obj) {\\n                if (!(obj instanceof Dict)) {\\n                  throw new FormatError(\\\"Kid node must be a dictionary.\\\");\\n                }\\n                if (obj.has(\\\"Count\\\")) {\\n                  total += obj.get(\\\"Count\\\");\\n                } else {\\n                  \u002F\u002F Page leaf node.\\n                  total++;\\n                }\\n              })\\n            );\\n          }\\n          if (!found) {\\n            throw new FormatError(\\\"Kid reference not found in parent's kids.\\\");\\n          }\\n          return Promise.all(kidPromises).then(function () {\\n            return [total, parentRef];\\n          });\\n        });\\n    }\\n\\n    let total = 0;\\n    const next = ref =>\\n      pagesBeforeRef(ref).then(args => {\\n        if (!args) {\\n          this.pageIndexCache.put(pageRef, total);\\n          return total;\\n        }\\n        const [count, parentRef] = args;\\n        total += count;\\n        return next(parentRef);\\n      });\\n\\n    return next(pageRef);\\n  }\\n\\n  get baseUrl() {\\n    const uri = this._catDict.get(\\\"URI\\\");\\n    if (uri instanceof Dict) {\\n      const base = uri.get(\\\"Base\\\");\\n      if (typeof base === \\\"string\\\") {\\n        const absoluteUrl = createValidAbsoluteUrl(base, null, {\\n          tryConvertEncoding: true,\\n        });\\n        if (absoluteUrl) {\\n          return shadow(this, \\\"baseUrl\\\", absoluteUrl.href);\\n        }\\n      }\\n    }\\n    return shadow(this, \\\"baseUrl\\\", this.pdfManager.docBaseUrl);\\n  }\\n\\n  \u002F**\\n   * @typedef {Object} ParseDestDictionaryParameters\\n   * @property {Dict} destDict - The dictionary containing the destination.\\n   * @property {Object} resultObj - The object where the parsed destination\\n   *   properties will be placed.\\n   * @property {string} [docBaseUrl] - The document base URL that is used when\\n   *   attempting to recover valid absolute URLs from relative ones.\\n   * @property {Object} [docAttachments] - The document attachments (may not\\n   *   exist in most PDF documents).\\n   *\u002F\\n\\n  \u002F**\\n   * Helper function used to parse the contents of destination dictionaries.\\n   * @param {ParseDestDictionaryParameters} params\\n   *\u002F\\n  static parseDestDictionary({\\n    destDict,\\n    resultObj,\\n    docBaseUrl = null,\\n    docAttachments = null,\\n  }) {\\n    if (!(destDict instanceof Dict)) {\\n      warn(\\\"parseDestDictionary: `destDict` must be a dictionary.\\\");\\n      return;\\n    }\\n\\n    let action = destDict.get(\\\"A\\\"),\\n      url,\\n      dest;\\n    if (!(action instanceof Dict)) {\\n      if (destDict.has(\\\"Dest\\\")) {\\n        \u002F\u002F A \u002FDest entry should *only* contain a Name or an Array, but some bad\\n        \u002F\u002F PDF generators ignore that and treat it as an \u002FA entry.\\n        action = destDict.get(\\\"Dest\\\");\\n      } else {\\n        action = destDict.get(\\\"AA\\\");\\n        if (action instanceof Dict) {\\n          if (action.has(\\\"D\\\")) {\\n            \u002F\u002F MouseDown\\n            action = action.get(\\\"D\\\");\\n          } else if (action.has(\\\"U\\\")) {\\n            \u002F\u002F MouseUp\\n            action = action.get(\\\"U\\\");\\n          }\\n        }\\n      }\\n    }\\n\\n    if (action instanceof Dict) {\\n      const actionType = action.get(\\\"S\\\");\\n      if (!(actionType instanceof Name)) {\\n        warn(\\\"parseDestDictionary: Invalid type in Action dictionary.\\\");\\n        return;\\n      }\\n      const actionName = actionType.name;\\n\\n      switch (actionName) {\\n        case \\\"ResetForm\\\":\\n          const flags = action.get(\\\"Flags\\\");\\n          const include = ((typeof flags === \\\"number\\\" ? flags : 0) & 1) === 0;\\n          const fields = [];\\n          const refs = [];\\n          for (const obj of action.get(\\\"Fields\\\") || []) {\\n            if (obj instanceof Ref) {\\n              refs.push(obj.toString());\\n            } else if (typeof obj === \\\"string\\\") {\\n              fields.push(stringToPDFString(obj));\\n            }\\n          }\\n          resultObj.resetForm = { fields, refs, include };\\n          break;\\n        case \\\"URI\\\":\\n          url = action.get(\\\"URI\\\");\\n          if (url instanceof Name) {\\n            \u002F\u002F Some bad PDFs do not put parentheses around relative URLs.\\n            url = \\\"\u002F\\\" + url.name;\\n          }\\n          break;\\n\\n        case \\\"GoTo\\\":\\n          dest = action.get(\\\"D\\\");\\n          break;\\n\\n        case \\\"Launch\\\":\\n        \u002F\u002F We neither want, nor can, support arbitrary 'Launch' actions.\\n        \u002F\u002F However, in practice they are mostly used for linking to other PDF\\n        \u002F\u002F files, which we thus attempt to support (utilizing `docBaseUrl`).\\n        \u002F* falls through *\u002F\\n\\n        case \\\"GoToR\\\":\\n          const urlDict = action.get(\\\"F\\\");\\n          if (urlDict instanceof Dict) {\\n            const fs = new FileSpec(\\n              urlDict,\\n              \u002F* xref = *\u002F null,\\n              \u002F* skipContent = *\u002F true\\n            );\\n            const { rawFilename } = fs.serializable;\\n            url = rawFilename;\\n          } else if (typeof urlDict === \\\"string\\\") {\\n            url = urlDict;\\n          }\\n\\n          \u002F\u002F NOTE: the destination is relative to the *remote* document.\\n          const remoteDest = fetchRemoteDest(action);\\n          if (remoteDest && typeof url === \\\"string\\\") {\\n            url = \u002F* baseUrl = *\u002F url.split(\\\"#\\\", 1)[0] + \\\"#\\\" + remoteDest;\\n          }\\n          \u002F\u002F The 'NewWindow' property, equal to `LinkTarget.BLANK`.\\n          const newWindow = action.get(\\\"NewWindow\\\");\\n          if (typeof newWindow === \\\"boolean\\\") {\\n            resultObj.newWindow = newWindow;\\n          }\\n          break;\\n\\n        case \\\"GoToE\\\":\\n          const target = action.get(\\\"T\\\");\\n          let attachment;\\n\\n          if (docAttachments && target instanceof Dict) {\\n            const relationship = target.get(\\\"R\\\");\\n            const name = target.get(\\\"N\\\");\\n\\n            if (isName(relationship, \\\"C\\\") && typeof name === \\\"string\\\") {\\n              attachment = docAttachments[stringToPDFString(name)];\\n            }\\n          }\\n\\n          if (attachment) {\\n            resultObj.attachment = attachment;\\n\\n            \u002F\u002F NOTE: the destination is relative to the *attachment*.\\n            const attachmentDest = fetchRemoteDest(action);\\n            if (attachmentDest) {\\n              resultObj.attachmentDest = attachmentDest;\\n            }\\n          } else {\\n            warn(`parseDestDictionary - unimplemented \\\"GoToE\\\" action.`);\\n          }\\n          break;\\n\\n        case \\\"Named\\\":\\n          const namedAction = action.get(\\\"N\\\");\\n          if (namedAction instanceof Name) {\\n            resultObj.action = namedAction.name;\\n          }\\n          break;\\n\\n        case \\\"SetOCGState\\\":\\n          const state = action.get(\\\"State\\\");\\n          const preserveRB = action.get(\\\"PreserveRB\\\");\\n\\n          if (!Array.isArray(state) || state.length === 0) {\\n            break;\\n          }\\n          const stateArr = [];\\n\\n          for (const elem of state) {\\n            if (elem instanceof Name) {\\n              switch (elem.name) {\\n                case \\\"ON\\\":\\n                case \\\"OFF\\\":\\n                case \\\"Toggle\\\":\\n                  stateArr.push(elem.name);\\n                  break;\\n              }\\n            } else if (elem instanceof Ref) {\\n              stateArr.push(elem.toString());\\n            }\\n          }\\n\\n          if (stateArr.length !== state.length) {\\n            break; \u002F\u002F Some of the original entries are not valid.\\n          }\\n          resultObj.setOCGState = {\\n            state: stateArr,\\n            preserveRB: typeof preserveRB === \\\"boolean\\\" ? preserveRB : true,\\n          };\\n          break;\\n\\n        case \\\"JavaScript\\\":\\n          const jsAction = action.get(\\\"JS\\\");\\n          let js;\\n\\n          if (jsAction instanceof BaseStream) {\\n            js = jsAction.getString();\\n          } else if (typeof jsAction === \\\"string\\\") {\\n            js = jsAction;\\n          }\\n\\n          const jsURL = js && recoverJsURL(stringToPDFString(js));\\n          if (jsURL) {\\n            url = jsURL.url;\\n            resultObj.newWindow = jsURL.newWindow;\\n            break;\\n          }\\n        \u002F* falls through *\u002F\\n        default:\\n          if (actionName === \\\"JavaScript\\\" || actionName === \\\"SubmitForm\\\") {\\n            \u002F\u002F Don't bother the user with a warning for actions that require\\n            \u002F\u002F scripting support, since those will be handled separately.\\n            break;\\n          }\\n          warn(`parseDestDictionary - unsupported action: \\\"${actionName}\\\".`);\\n          break;\\n      }\\n    } else if (destDict.has(\\\"Dest\\\")) {\\n      \u002F\u002F Simple destination.\\n      dest = destDict.get(\\\"Dest\\\");\\n    }\\n\\n    if (typeof url === \\\"string\\\") {\\n      const absoluteUrl = createValidAbsoluteUrl(url, docBaseUrl, {\\n        addDefaultProtocol: true,\\n        tryConvertEncoding: true,\\n      });\\n      if (absoluteUrl) {\\n        resultObj.url = absoluteUrl.href;\\n      }\\n      resultObj.unsafeUrl = url;\\n    }\\n    if (dest) {\\n      if (dest instanceof Name) {\\n        dest = dest.name;\\n      }\\n      if (typeof dest === \\\"string\\\") {\\n        resultObj.dest = stringToPDFString(dest);\\n      } else if (isValidExplicitDest(dest)) {\\n        resultObj.dest = dest;\\n      }\\n    }\\n  }\\n}\\n\\nexport { Catalog };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { Dict, Ref, RefSet } from \\\".\u002Fprimitives.js\\\";\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { MissingDataException } from \\\".\u002Fcore_utils.js\\\";\\nimport { warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nfunction mayHaveChildren(value) {\\n  return (\\n    value instanceof Ref ||\\n    value instanceof Dict ||\\n    value instanceof BaseStream ||\\n    Array.isArray(value)\\n  );\\n}\\n\\nfunction addChildren(node, nodesToVisit) {\\n  if (node instanceof Dict) {\\n    node = node.getRawValues();\\n  } else if (node instanceof BaseStream) {\\n    node = node.dict.getRawValues();\\n  } else if (!Array.isArray(node)) {\\n    return;\\n  }\\n  for (const rawValue of node) {\\n    if (mayHaveChildren(rawValue)) {\\n      nodesToVisit.push(rawValue);\\n    }\\n  }\\n}\\n\\n\u002F**\\n * A helper for loading missing data in `Dict` graphs. It traverses the graph\\n * depth first and queues up any objects that have missing data. Once it has\\n * has traversed as many objects that are available it attempts to bundle the\\n * missing data requests and then resume from the nodes that weren't ready.\\n *\\n * NOTE: It provides protection from circular references by keeping track of\\n * loaded references. However, you must be careful not to load any graphs\\n * that have references to the catalog or other pages since that will cause the\\n * entire PDF document object graph to be traversed.\\n *\u002F\\nclass ObjectLoader {\\n  constructor(dict, keys, xref) {\\n    this.dict = dict;\\n    this.keys = keys;\\n    this.xref = xref;\\n    this.refSet = null;\\n  }\\n\\n  async load() {\\n    \u002F\u002F Don't walk the graph if all the data is already loaded.\\n    if (this.xref.stream.isDataLoaded) {\\n      return undefined;\\n    }\\n\\n    const { keys, dict } = this;\\n    this.refSet = new RefSet();\\n    \u002F\u002F Setup the initial nodes to visit.\\n    const nodesToVisit = [];\\n    for (const key of keys) {\\n      const rawValue = dict.getRaw(key);\\n      \u002F\u002F Skip nodes that are guaranteed to be empty.\\n      if (rawValue !== undefined) {\\n        nodesToVisit.push(rawValue);\\n      }\\n    }\\n    return this._walk(nodesToVisit);\\n  }\\n\\n  async _walk(nodesToVisit) {\\n    const nodesToRevisit = [];\\n    const pendingRequests = [];\\n    \u002F\u002F DFS walk of the object graph.\\n    while (nodesToVisit.length) {\\n      let currentNode = nodesToVisit.pop();\\n\\n      \u002F\u002F Only references or chunked streams can cause missing data exceptions.\\n      if (currentNode instanceof Ref) {\\n        \u002F\u002F Skip nodes that have already been visited.\\n        if (this.refSet.has(currentNode)) {\\n          continue;\\n        }\\n        try {\\n          this.refSet.put(currentNode);\\n          currentNode = this.xref.fetch(currentNode);\\n        } catch (ex) {\\n          if (!(ex instanceof MissingDataException)) {\\n            warn(`ObjectLoader._walk - requesting all data: \\\"${ex}\\\".`);\\n            this.refSet = null;\\n\\n            const { manager } = this.xref.stream;\\n            return manager.requestAllChunks();\\n          }\\n          nodesToRevisit.push(currentNode);\\n          pendingRequests.push({ begin: ex.begin, end: ex.end });\\n        }\\n      }\\n      if (currentNode instanceof BaseStream) {\\n        const baseStreams = currentNode.getBaseStreams();\\n        if (baseStreams) {\\n          let foundMissingData = false;\\n          for (const stream of baseStreams) {\\n            if (stream.isDataLoaded) {\\n              continue;\\n            }\\n            foundMissingData = true;\\n            pendingRequests.push({ begin: stream.start, end: stream.end });\\n          }\\n          if (foundMissingData) {\\n            nodesToRevisit.push(currentNode);\\n          }\\n        }\\n      }\\n\\n      addChildren(currentNode, nodesToVisit);\\n    }\\n\\n    if (pendingRequests.length) {\\n      await this.xref.stream.manager.requestRanges(pendingRequests);\\n\\n      for (const node of nodesToRevisit) {\\n        \u002F\u002F Remove any reference nodes from the current `RefSet` so they\\n        \u002F\u002F aren't skipped when we revist them.\\n        if (node instanceof Ref) {\\n          this.refSet.remove(node);\\n        }\\n      }\\n      return this._walk(nodesToRevisit);\\n    }\\n    \u002F\u002F Everything is loaded.\\n    this.refSet = null;\\n    return undefined;\\n  }\\n}\\n\\nexport { ObjectLoader };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F We use these symbols to avoid name conflict between tags\\n\u002F\u002F and properties\u002Fmethods names.\\nconst $acceptWhitespace = Symbol();\\nconst $addHTML = Symbol();\\nconst $appendChild = Symbol();\\nconst $childrenToHTML = Symbol();\\nconst $clean = Symbol();\\nconst $cleanPage = Symbol();\\nconst $cleanup = Symbol();\\nconst $clone = Symbol();\\nconst $consumed = Symbol();\\nconst $content = Symbol(\\\"content\\\");\\nconst $data = Symbol(\\\"data\\\");\\nconst $dump = Symbol();\\nconst $extra = Symbol(\\\"extra\\\");\\nconst $finalize = Symbol();\\nconst $flushHTML = Symbol();\\nconst $getAttributeIt = Symbol();\\nconst $getAttributes = Symbol();\\nconst $getAvailableSpace = Symbol();\\nconst $getChildrenByClass = Symbol();\\nconst $getChildrenByName = Symbol();\\nconst $getChildrenByNameIt = Symbol();\\nconst $getDataValue = Symbol();\\nconst $getExtra = Symbol();\\nconst $getRealChildrenByNameIt = Symbol();\\nconst $getChildren = Symbol();\\nconst $getContainedChildren = Symbol();\\nconst $getNextPage = Symbol();\\nconst $getSubformParent = Symbol();\\nconst $getParent = Symbol();\\nconst $getTemplateRoot = Symbol();\\nconst $globalData = Symbol();\\nconst $hasSettableValue = Symbol();\\nconst $ids = Symbol();\\nconst $indexOf = Symbol();\\nconst $insertAt = Symbol();\\nconst $isCDATAXml = Symbol();\\nconst $isBindable = Symbol();\\nconst $isDataValue = Symbol();\\nconst $isDescendent = Symbol();\\nconst $isNsAgnostic = Symbol();\\nconst $isSplittable = Symbol();\\nconst $isThereMoreWidth = Symbol();\\nconst $isTransparent = Symbol();\\nconst $isUsable = Symbol();\\nconst $lastAttribute = Symbol();\\nconst $namespaceId = Symbol(\\\"namespaceId\\\");\\nconst $nodeName = Symbol(\\\"nodeName\\\");\\nconst $nsAttributes = Symbol();\\nconst $onChild = Symbol();\\nconst $onChildCheck = Symbol();\\nconst $onText = Symbol();\\nconst $pushGlyphs = Symbol();\\nconst $popPara = Symbol();\\nconst $pushPara = Symbol();\\nconst $removeChild = Symbol();\\nconst $root = Symbol(\\\"root\\\");\\nconst $resolvePrototypes = Symbol();\\nconst $searchNode = Symbol();\\nconst $setId = Symbol();\\nconst $setSetAttributes = Symbol();\\nconst $setValue = Symbol();\\nconst $tabIndex = Symbol();\\nconst $text = Symbol();\\nconst $toPages = Symbol();\\nconst $toHTML = Symbol();\\nconst $toString = Symbol();\\nconst $toStyle = Symbol();\\nconst $uid = Symbol(\\\"uid\\\");\\n\\nexport {\\n  $acceptWhitespace,\\n  $addHTML,\\n  $appendChild,\\n  $childrenToHTML,\\n  $clean,\\n  $cleanPage,\\n  $cleanup,\\n  $clone,\\n  $consumed,\\n  $content,\\n  $data,\\n  $dump,\\n  $extra,\\n  $finalize,\\n  $flushHTML,\\n  $getAttributeIt,\\n  $getAttributes,\\n  $getAvailableSpace,\\n  $getChildren,\\n  $getChildrenByClass,\\n  $getChildrenByName,\\n  $getChildrenByNameIt,\\n  $getContainedChildren,\\n  $getDataValue,\\n  $getExtra,\\n  $getNextPage,\\n  $getParent,\\n  $getRealChildrenByNameIt,\\n  $getSubformParent,\\n  $getTemplateRoot,\\n  $globalData,\\n  $hasSettableValue,\\n  $ids,\\n  $indexOf,\\n  $insertAt,\\n  $isBindable,\\n  $isCDATAXml,\\n  $isDataValue,\\n  $isDescendent,\\n  $isNsAgnostic,\\n  $isSplittable,\\n  $isThereMoreWidth,\\n  $isTransparent,\\n  $isUsable,\\n  $lastAttribute,\\n  $namespaceId,\\n  $nodeName,\\n  $nsAttributes,\\n  $onChild,\\n  $onChildCheck,\\n  $onText,\\n  $popPara,\\n  $pushGlyphs,\\n  $pushPara,\\n  $removeChild,\\n  $resolvePrototypes,\\n  $root,\\n  $searchNode,\\n  $setId,\\n  $setSetAttributes,\\n  $setValue,\\n  $tabIndex,\\n  $text,\\n  $toHTML,\\n  $toPages,\\n  $toString,\\n  $toStyle,\\n  $uid,\\n};\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nconst $buildXFAObject = Symbol();\\n\\nconst NamespaceIds = {\\n  config: {\\n    id: 0,\\n    check: ns => ns.startsWith(\\\"http:\u002F\u002Fwww.xfa.org\u002Fschema\u002Fxci\u002F\\\"),\\n  },\\n  connectionSet: {\\n    id: 1,\\n    check: ns => ns.startsWith(\\\"http:\u002F\u002Fwww.xfa.org\u002Fschema\u002Fxfa-connection-set\u002F\\\"),\\n  },\\n  datasets: {\\n    id: 2,\\n    check: ns => ns.startsWith(\\\"http:\u002F\u002Fwww.xfa.org\u002Fschema\u002Fxfa-data\u002F\\\"),\\n  },\\n  form: {\\n    id: 3,\\n    check: ns => ns.startsWith(\\\"http:\u002F\u002Fwww.xfa.org\u002Fschema\u002Fxfa-form\u002F\\\"),\\n  },\\n  localeSet: {\\n    id: 4,\\n    check: ns => ns.startsWith(\\\"http:\u002F\u002Fwww.xfa.org\u002Fschema\u002Fxfa-locale-set\u002F\\\"),\\n  },\\n  pdf: {\\n    id: 5,\\n    check: ns => ns === \\\"http:\u002F\u002Fns.adobe.com\u002Fxdp\u002Fpdf\u002F\\\",\\n  },\\n  signature: {\\n    id: 6,\\n    check: ns => ns === \\\"http:\u002F\u002Fwww.w3.org\u002F2000\u002F09\u002Fxmldsig#\\\",\\n  },\\n  sourceSet: {\\n    id: 7,\\n    check: ns => ns.startsWith(\\\"http:\u002F\u002Fwww.xfa.org\u002Fschema\u002Fxfa-source-set\u002F\\\"),\\n  },\\n  stylesheet: {\\n    id: 8,\\n    check: ns => ns === \\\"http:\u002F\u002Fwww.w3.org\u002F1999\u002FXSL\u002FTransform\\\",\\n  },\\n  template: {\\n    id: 9,\\n    check: ns => ns.startsWith(\\\"http:\u002F\u002Fwww.xfa.org\u002Fschema\u002Fxfa-template\u002F\\\"),\\n  },\\n  xdc: {\\n    id: 10,\\n    check: ns => ns.startsWith(\\\"http:\u002F\u002Fwww.xfa.org\u002Fschema\u002Fxdc\u002F\\\"),\\n  },\\n  xdp: {\\n    id: 11,\\n    check: ns => ns === \\\"http:\u002F\u002Fns.adobe.com\u002Fxdp\u002F\\\",\\n  },\\n  xfdf: {\\n    id: 12,\\n    check: ns => ns === \\\"http:\u002F\u002Fns.adobe.com\u002Fxfdf\u002F\\\",\\n  },\\n  xhtml: {\\n    id: 13,\\n    check: ns => ns === \\\"http:\u002F\u002Fwww.w3.org\u002F1999\u002Fxhtml\\\",\\n  },\\n  xmpmeta: {\\n    id: 14,\\n    check: ns => ns === \\\"http:\u002F\u002Fns.adobe.com\u002Fxmpmeta\u002F\\\",\\n  },\\n};\\n\\nexport { $buildXFAObject, NamespaceIds };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { shadow } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\n\\nconst dimConverters = {\\n  pt: x => x,\\n  cm: x => (x \u002F 2.54) * 72,\\n  mm: x => (x \u002F (10 * 2.54)) * 72,\\n  in: x => x * 72,\\n  px: x => x,\\n};\\nconst measurementPattern = \u002F([+-]?\\\\d+\\\\.?\\\\d*)(.*)\u002F;\\n\\nfunction stripQuotes(str) {\\n  if (str.startsWith(\\\"'\\\") || str.startsWith('\\\"')) {\\n    return str.slice(1, -1);\\n  }\\n  return str;\\n}\\n\\nfunction getInteger({ data, defaultValue, validate }) {\\n  if (!data) {\\n    return defaultValue;\\n  }\\n  data = data.trim();\\n  const n = parseInt(data, 10);\\n  if (!isNaN(n) && validate(n)) {\\n    return n;\\n  }\\n  return defaultValue;\\n}\\n\\nfunction getFloat({ data, defaultValue, validate }) {\\n  if (!data) {\\n    return defaultValue;\\n  }\\n  data = data.trim();\\n  const n = parseFloat(data);\\n  if (!isNaN(n) && validate(n)) {\\n    return n;\\n  }\\n  return defaultValue;\\n}\\n\\nfunction getKeyword({ data, defaultValue, validate }) {\\n  if (!data) {\\n    return defaultValue;\\n  }\\n  data = data.trim();\\n  if (validate(data)) {\\n    return data;\\n  }\\n  return defaultValue;\\n}\\n\\nfunction getStringOption(data, options) {\\n  return getKeyword({\\n    data,\\n    defaultValue: options[0],\\n    validate: k => options.includes(k),\\n  });\\n}\\n\\nfunction getMeasurement(str, def = \\\"0\\\") {\\n  def ||= \\\"0\\\";\\n  if (!str) {\\n    return getMeasurement(def);\\n  }\\n  const match = str.trim().match(measurementPattern);\\n  if (!match) {\\n    return getMeasurement(def);\\n  }\\n  const [, valueStr, unit] = match;\\n  const value = parseFloat(valueStr);\\n  if (isNaN(value)) {\\n    return getMeasurement(def);\\n  }\\n\\n  if (value === 0) {\\n    return 0;\\n  }\\n\\n  const conv = dimConverters[unit];\\n  if (conv) {\\n    return conv(value);\\n  }\\n\\n  return value;\\n}\\n\\nfunction getRatio(data) {\\n  if (!data) {\\n    return { num: 1, den: 1 };\\n  }\\n  const ratio = data\\n    .trim()\\n    .split(\u002F\\\\s*:\\\\s*\u002F)\\n    .map(x => parseFloat(x))\\n    .filter(x => !isNaN(x));\\n  if (ratio.length === 1) {\\n    ratio.push(1);\\n  }\\n\\n  if (ratio.length === 0) {\\n    return { num: 1, den: 1 };\\n  }\\n\\n  const [num, den] = ratio;\\n  return { num, den };\\n}\\n\\nfunction getRelevant(data) {\\n  if (!data) {\\n    return [];\\n  }\\n  return data\\n    .trim()\\n    .split(\u002F\\\\s+\u002F)\\n    .map(e => ({\\n      excluded: e[0] === \\\"-\\\",\\n      viewname: e.substring(1),\\n    }));\\n}\\n\\nfunction getColor(data, def = [0, 0, 0]) {\\n  let [r, g, b] = def;\\n  if (!data) {\\n    return { r, g, b };\\n  }\\n  const color = data\\n    .trim()\\n    .split(\u002F\\\\s*,\\\\s*\u002F)\\n    .map(c => Math.min(Math.max(0, parseInt(c.trim(), 10)), 255))\\n    .map(c => (isNaN(c) ? 0 : c));\\n\\n  if (color.length \u003C 3) {\\n    return { r, g, b };\\n  }\\n\\n  [r, g, b] = color;\\n  return { r, g, b };\\n}\\n\\nfunction getBBox(data) {\\n  const def = -1;\\n  if (!data) {\\n    return { x: def, y: def, width: def, height: def };\\n  }\\n  const bbox = data\\n    .trim()\\n    .split(\u002F\\\\s*,\\\\s*\u002F)\\n    .map(m => getMeasurement(m, \\\"-1\\\"));\\n  if (bbox.length \u003C 4 || bbox[2] \u003C 0 || bbox[3] \u003C 0) {\\n    return { x: def, y: def, width: def, height: def };\\n  }\\n\\n  const [x, y, width, height] = bbox;\\n  return { x, y, width, height };\\n}\\n\\nclass HTMLResult {\\n  static get FAILURE() {\\n    return shadow(this, \\\"FAILURE\\\", new HTMLResult(false, null, null, null));\\n  }\\n\\n  static get EMPTY() {\\n    return shadow(this, \\\"EMPTY\\\", new HTMLResult(true, null, null, null));\\n  }\\n\\n  constructor(success, html, bbox, breakNode) {\\n    this.success = success;\\n    this.html = html;\\n    this.bbox = bbox;\\n    this.breakNode = breakNode;\\n  }\\n\\n  isBreak() {\\n    return !!this.breakNode;\\n  }\\n\\n  static breakNode(node) {\\n    return new HTMLResult(false, null, null, node);\\n  }\\n\\n  static success(html, bbox = null) {\\n    return new HTMLResult(true, html, bbox, null);\\n  }\\n}\\n\\nexport {\\n  getBBox,\\n  getColor,\\n  getFloat,\\n  getInteger,\\n  getKeyword,\\n  getMeasurement,\\n  getRatio,\\n  getRelevant,\\n  getStringOption,\\n  HTMLResult,\\n  stripQuotes,\\n};\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { $globalData } from \\\".\u002Fsymbol_utils.js\\\";\\nimport { stripQuotes } from \\\".\u002Futils.js\\\";\\nimport { warn } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\n\\nclass FontFinder {\\n  constructor(pdfFonts) {\\n    this.fonts = new Map();\\n    this.cache = new Map();\\n    this.warned = new Set();\\n    this.defaultFont = null;\\n    this.add(pdfFonts);\\n  }\\n\\n  add(pdfFonts, reallyMissingFonts = null) {\\n    for (const pdfFont of pdfFonts) {\\n      this.addPdfFont(pdfFont);\\n    }\\n    for (const pdfFont of this.fonts.values()) {\\n      if (!pdfFont.regular) {\\n        pdfFont.regular = pdfFont.italic || pdfFont.bold || pdfFont.bolditalic;\\n      }\\n    }\\n\\n    if (!reallyMissingFonts || reallyMissingFonts.size === 0) {\\n      return;\\n    }\\n    const myriad = this.fonts.get(\\\"PdfJS-Fallback-PdfJS-XFA\\\");\\n    for (const missing of reallyMissingFonts) {\\n      this.fonts.set(missing, myriad);\\n    }\\n  }\\n\\n  addPdfFont(pdfFont) {\\n    const cssFontInfo = pdfFont.cssFontInfo;\\n    const name = cssFontInfo.fontFamily;\\n    let font = this.fonts.get(name);\\n    if (!font) {\\n      font = Object.create(null);\\n      this.fonts.set(name, font);\\n      if (!this.defaultFont) {\\n        this.defaultFont = font;\\n      }\\n    }\\n    let property = \\\"\\\";\\n    const fontWeight = parseFloat(cssFontInfo.fontWeight);\\n    if (parseFloat(cssFontInfo.italicAngle) !== 0) {\\n      property = fontWeight >= 700 ? \\\"bolditalic\\\" : \\\"italic\\\";\\n    } else if (fontWeight >= 700) {\\n      property = \\\"bold\\\";\\n    }\\n\\n    if (!property) {\\n      if (pdfFont.name.includes(\\\"Bold\\\") || pdfFont.psName?.includes(\\\"Bold\\\")) {\\n        property = \\\"bold\\\";\\n      }\\n      if (\\n        pdfFont.name.includes(\\\"Italic\\\") ||\\n        pdfFont.name.endsWith(\\\"It\\\") ||\\n        pdfFont.psName?.includes(\\\"Italic\\\") ||\\n        pdfFont.psName?.endsWith(\\\"It\\\")\\n      ) {\\n        property += \\\"italic\\\";\\n      }\\n    }\\n\\n    if (!property) {\\n      property = \\\"regular\\\";\\n    }\\n\\n    font[property] = pdfFont;\\n  }\\n\\n  getDefault() {\\n    return this.defaultFont;\\n  }\\n\\n  find(fontName, mustWarn = true) {\\n    let font = this.fonts.get(fontName) || this.cache.get(fontName);\\n    if (font) {\\n      return font;\\n    }\\n\\n    const pattern = \u002F,|-|_| |bolditalic|bold|italic|regular|it\u002Fgi;\\n    let name = fontName.replaceAll(pattern, \\\"\\\");\\n    font = this.fonts.get(name);\\n    if (font) {\\n      this.cache.set(fontName, font);\\n      return font;\\n    }\\n    name = name.toLowerCase();\\n\\n    const maybe = [];\\n    for (const [family, pdfFont] of this.fonts.entries()) {\\n      if (family.replaceAll(pattern, \\\"\\\").toLowerCase().startsWith(name)) {\\n        maybe.push(pdfFont);\\n      }\\n    }\\n\\n    if (maybe.length === 0) {\\n      for (const [, pdfFont] of this.fonts.entries()) {\\n        if (\\n          pdfFont.regular.name\\n            ?.replaceAll(pattern, \\\"\\\")\\n            .toLowerCase()\\n            .startsWith(name)\\n        ) {\\n          maybe.push(pdfFont);\\n        }\\n      }\\n    }\\n\\n    if (maybe.length === 0) {\\n      name = name.replaceAll(\u002Fpsmt|mt\u002Fgi, \\\"\\\");\\n      for (const [family, pdfFont] of this.fonts.entries()) {\\n        if (family.replaceAll(pattern, \\\"\\\").toLowerCase().startsWith(name)) {\\n          maybe.push(pdfFont);\\n        }\\n      }\\n    }\\n\\n    if (maybe.length === 0) {\\n      for (const pdfFont of this.fonts.values()) {\\n        if (\\n          pdfFont.regular.name\\n            ?.replaceAll(pattern, \\\"\\\")\\n            .toLowerCase()\\n            .startsWith(name)\\n        ) {\\n          maybe.push(pdfFont);\\n        }\\n      }\\n    }\\n\\n    if (maybe.length >= 1) {\\n      if (maybe.length !== 1 && mustWarn) {\\n        warn(`XFA - Too many choices to guess the correct font: ${fontName}`);\\n      }\\n      this.cache.set(fontName, maybe[0]);\\n      return maybe[0];\\n    }\\n\\n    if (mustWarn && !this.warned.has(fontName)) {\\n      this.warned.add(fontName);\\n      warn(`XFA - Cannot find the font: ${fontName}`);\\n    }\\n    return null;\\n  }\\n}\\n\\nfunction selectFont(xfaFont, typeface) {\\n  if (xfaFont.posture === \\\"italic\\\") {\\n    if (xfaFont.weight === \\\"bold\\\") {\\n      return typeface.bolditalic;\\n    }\\n    return typeface.italic;\\n  } else if (xfaFont.weight === \\\"bold\\\") {\\n    return typeface.bold;\\n  }\\n\\n  return typeface.regular;\\n}\\n\\nfunction getMetrics(xfaFont, real = false) {\\n  let pdfFont = null;\\n  if (xfaFont) {\\n    const name = stripQuotes(xfaFont.typeface);\\n    const typeface = xfaFont[$globalData].fontFinder.find(name);\\n    pdfFont = selectFont(xfaFont, typeface);\\n  }\\n\\n  if (!pdfFont) {\\n    return {\\n      lineHeight: 12,\\n      lineGap: 2,\\n      lineNoGap: 10,\\n    };\\n  }\\n\\n  const size = xfaFont.size || 10;\\n  const lineHeight = pdfFont.lineHeight\\n    ? Math.max(real ? 0 : 1.2, pdfFont.lineHeight)\\n    : 1.2;\\n  const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;\\n  return {\\n    lineHeight: lineHeight * size,\\n    lineGap: lineGap * size,\\n    lineNoGap: Math.max(1, lineHeight - lineGap) * size,\\n  };\\n}\\n\\nexport { FontFinder, getMetrics, selectFont };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { selectFont } from \\\".\u002Ffonts.js\\\";\\n\\nconst WIDTH_FACTOR = 1.02;\\n\\nclass FontInfo {\\n  constructor(xfaFont, margin, lineHeight, fontFinder) {\\n    this.lineHeight = lineHeight;\\n    this.paraMargin = margin || {\\n      top: 0,\\n      bottom: 0,\\n      left: 0,\\n      right: 0,\\n    };\\n\\n    if (!xfaFont) {\\n      [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\\n      return;\\n    }\\n\\n    this.xfaFont = {\\n      typeface: xfaFont.typeface,\\n      posture: xfaFont.posture,\\n      weight: xfaFont.weight,\\n      size: xfaFont.size,\\n      letterSpacing: xfaFont.letterSpacing,\\n    };\\n    const typeface = fontFinder.find(xfaFont.typeface);\\n    if (!typeface) {\\n      [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\\n      return;\\n    }\\n\\n    this.pdfFont = selectFont(xfaFont, typeface);\\n\\n    if (!this.pdfFont) {\\n      [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\\n    }\\n  }\\n\\n  defaultFont(fontFinder) {\\n    \u002F\u002F TODO: Add a default font based on Liberation.\\n    const font =\\n      fontFinder.find(\\\"Helvetica\\\", false) ||\\n      fontFinder.find(\\\"Myriad Pro\\\", false) ||\\n      fontFinder.find(\\\"Arial\\\", false) ||\\n      fontFinder.getDefault();\\n    if (font?.regular) {\\n      const pdfFont = font.regular;\\n      const info = pdfFont.cssFontInfo;\\n      const xfaFont = {\\n        typeface: info.fontFamily,\\n        posture: \\\"normal\\\",\\n        weight: \\\"normal\\\",\\n        size: 10,\\n        letterSpacing: 0,\\n      };\\n      return [pdfFont, xfaFont];\\n    }\\n\\n    const xfaFont = {\\n      typeface: \\\"Courier\\\",\\n      posture: \\\"normal\\\",\\n      weight: \\\"normal\\\",\\n      size: 10,\\n      letterSpacing: 0,\\n    };\\n    return [null, xfaFont];\\n  }\\n}\\n\\nclass FontSelector {\\n  constructor(\\n    defaultXfaFont,\\n    defaultParaMargin,\\n    defaultLineHeight,\\n    fontFinder\\n  ) {\\n    this.fontFinder = fontFinder;\\n    this.stack = [\\n      new FontInfo(\\n        defaultXfaFont,\\n        defaultParaMargin,\\n        defaultLineHeight,\\n        fontFinder\\n      ),\\n    ];\\n  }\\n\\n  pushData(xfaFont, margin, lineHeight) {\\n    const lastFont = this.stack.at(-1);\\n    for (const name of [\\n      \\\"typeface\\\",\\n      \\\"posture\\\",\\n      \\\"weight\\\",\\n      \\\"size\\\",\\n      \\\"letterSpacing\\\",\\n    ]) {\\n      if (!xfaFont[name]) {\\n        xfaFont[name] = lastFont.xfaFont[name];\\n      }\\n    }\\n\\n    for (const name of [\\\"top\\\", \\\"bottom\\\", \\\"left\\\", \\\"right\\\"]) {\\n      if (isNaN(margin[name])) {\\n        margin[name] = lastFont.paraMargin[name];\\n      }\\n    }\\n\\n    const fontInfo = new FontInfo(\\n      xfaFont,\\n      margin,\\n      lineHeight || lastFont.lineHeight,\\n      this.fontFinder\\n    );\\n    if (!fontInfo.pdfFont) {\\n      fontInfo.pdfFont = lastFont.pdfFont;\\n    }\\n\\n    this.stack.push(fontInfo);\\n  }\\n\\n  popFont() {\\n    this.stack.pop();\\n  }\\n\\n  topFont() {\\n    return this.stack.at(-1);\\n  }\\n}\\n\\n\u002F**\\n * Compute a text area dimensions based on font metrics.\\n *\u002F\\nclass TextMeasure {\\n  constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts) {\\n    this.glyphs = [];\\n    this.fontSelector = new FontSelector(\\n      defaultXfaFont,\\n      defaultParaMargin,\\n      defaultLineHeight,\\n      fonts\\n    );\\n    this.extraHeight = 0;\\n  }\\n\\n  pushData(xfaFont, margin, lineHeight) {\\n    this.fontSelector.pushData(xfaFont, margin, lineHeight);\\n  }\\n\\n  popFont(xfaFont) {\\n    return this.fontSelector.popFont();\\n  }\\n\\n  addPara() {\\n    const lastFont = this.fontSelector.topFont();\\n    this.extraHeight += lastFont.paraMargin.top + lastFont.paraMargin.bottom;\\n  }\\n\\n  addString(str) {\\n    if (!str) {\\n      return;\\n    }\\n\\n    const lastFont = this.fontSelector.topFont();\\n    const fontSize = lastFont.xfaFont.size;\\n    if (lastFont.pdfFont) {\\n      const letterSpacing = lastFont.xfaFont.letterSpacing;\\n      const pdfFont = lastFont.pdfFont;\\n      const fontLineHeight = pdfFont.lineHeight || 1.2;\\n      const lineHeight =\\n        lastFont.lineHeight || Math.max(1.2, fontLineHeight) * fontSize;\\n      const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;\\n      const noGap = fontLineHeight - lineGap;\\n      const firstLineHeight = Math.max(1, noGap) * fontSize;\\n      const scale = fontSize \u002F 1000;\\n      const fallbackWidth =\\n        pdfFont.defaultWidth || pdfFont.charsToGlyphs(\\\" \\\")[0].width;\\n\\n      for (const line of str.split(\u002F[\\\\u2029\\\\n]\u002F)) {\\n        const encodedLine = pdfFont.encodeString(line).join(\\\"\\\");\\n        const glyphs = pdfFont.charsToGlyphs(encodedLine);\\n\\n        for (const glyph of glyphs) {\\n          const width = glyph.width || fallbackWidth;\\n          this.glyphs.push([\\n            width * scale + letterSpacing,\\n            lineHeight,\\n            firstLineHeight,\\n            glyph.unicode,\\n            false,\\n          ]);\\n        }\\n\\n        this.glyphs.push([0, 0, 0, \\\"\\\\n\\\", true]);\\n      }\\n      this.glyphs.pop();\\n      return;\\n    }\\n\\n    \u002F\u002F When we have no font in the pdf, just use the font size as default width.\\n    for (const line of str.split(\u002F[\\\\u2029\\\\n]\u002F)) {\\n      for (const char of line.split(\\\"\\\")) {\\n        this.glyphs.push([fontSize, 1.2 * fontSize, fontSize, char, false]);\\n      }\\n\\n      this.glyphs.push([0, 0, 0, \\\"\\\\n\\\", true]);\\n    }\\n    this.glyphs.pop();\\n  }\\n\\n  compute(maxWidth) {\\n    let lastSpacePos = -1,\\n      lastSpaceWidth = 0,\\n      width = 0,\\n      height = 0,\\n      currentLineWidth = 0,\\n      currentLineHeight = 0;\\n    let isBroken = false;\\n    let isFirstLine = true;\\n\\n    for (let i = 0, ii = this.glyphs.length; i \u003C ii; i++) {\\n      const [glyphWidth, lineHeight, firstLineHeight, char, isEOL] =\\n        this.glyphs[i];\\n      const isSpace = char === \\\" \\\";\\n      const glyphHeight = isFirstLine ? firstLineHeight : lineHeight;\\n      if (isEOL) {\\n        width = Math.max(width, currentLineWidth);\\n        currentLineWidth = 0;\\n        height += currentLineHeight;\\n        currentLineHeight = glyphHeight;\\n        lastSpacePos = -1;\\n        lastSpaceWidth = 0;\\n        isFirstLine = false;\\n        continue;\\n      }\\n\\n      if (isSpace) {\\n        if (currentLineWidth + glyphWidth > maxWidth) {\\n          \u002F\u002F We can break here but the space is not taken into account.\\n          width = Math.max(width, currentLineWidth);\\n          currentLineWidth = 0;\\n          height += currentLineHeight;\\n          currentLineHeight = glyphHeight;\\n          lastSpacePos = -1;\\n          lastSpaceWidth = 0;\\n          isBroken = true;\\n          isFirstLine = false;\\n        } else {\\n          currentLineHeight = Math.max(glyphHeight, currentLineHeight);\\n          lastSpaceWidth = currentLineWidth;\\n          currentLineWidth += glyphWidth;\\n          lastSpacePos = i;\\n        }\\n        continue;\\n      }\\n\\n      if (currentLineWidth + glyphWidth > maxWidth) {\\n        \u002F\u002F We must break to the last white position (if available)\\n        height += currentLineHeight;\\n        currentLineHeight = glyphHeight;\\n        if (lastSpacePos !== -1) {\\n          i = lastSpacePos;\\n          width = Math.max(width, lastSpaceWidth);\\n          currentLineWidth = 0;\\n          lastSpacePos = -1;\\n          lastSpaceWidth = 0;\\n        } else {\\n          \u002F\u002F Just break in the middle of the word\\n          width = Math.max(width, currentLineWidth);\\n          currentLineWidth = glyphWidth;\\n        }\\n        isBroken = true;\\n        isFirstLine = false;\\n\\n        continue;\\n      }\\n\\n      currentLineWidth += glyphWidth;\\n      currentLineHeight = Math.max(glyphHeight, currentLineHeight);\\n    }\\n\\n    width = Math.max(width, currentLineWidth);\\n    height += currentLineHeight + this.extraHeight;\\n\\n    return { width: WIDTH_FACTOR * width, height, isBroken };\\n  }\\n}\\n\\nexport { TextMeasure };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  $getChildren,\\n  $getChildrenByClass,\\n  $getChildrenByName,\\n  $getParent,\\n} from \\\".\u002Fsymbol_utils.js\\\";\\nimport { warn } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\n\\nconst namePattern = \u002F^[^.[]+\u002F;\\nconst indexPattern = \u002F^[^\\\\]]+\u002F;\\nconst operators = {\\n  dot: 0,\\n  dotDot: 1,\\n  dotHash: 2,\\n  dotBracket: 3,\\n  dotParen: 4,\\n};\\n\\nconst shortcuts = new Map([\\n  [\\\"$data\\\", (root, current) => (root.datasets ? root.datasets.data : root)],\\n  [\\n    \\\"$record\\\",\\n    (root, current) =>\\n      (root.datasets ? root.datasets.data : root)[$getChildren]()[0],\\n  ],\\n  [\\\"$template\\\", (root, current) => root.template],\\n  [\\\"$connectionSet\\\", (root, current) => root.connectionSet],\\n  [\\\"$form\\\", (root, current) => root.form],\\n  [\\\"$layout\\\", (root, current) => root.layout],\\n  [\\\"$host\\\", (root, current) => root.host],\\n  [\\\"$dataWindow\\\", (root, current) => root.dataWindow],\\n  [\\\"$event\\\", (root, current) => root.event],\\n  [\\\"!\\\", (root, current) => root.datasets],\\n  [\\\"$xfa\\\", (root, current) => root],\\n  [\\\"xfa\\\", (root, current) => root],\\n  [\\\"$\\\", (root, current) => current],\\n]);\\n\\nconst somCache = new WeakMap();\\n\\nfunction parseIndex(index) {\\n  index = index.trim();\\n  if (index === \\\"*\\\") {\\n    return Infinity;\\n  }\\n  return parseInt(index, 10) || 0;\\n}\\n\\n\u002F\u002F For now expressions containing .[...] or .(...) are not\\n\u002F\u002F evaluated so don't parse them.\\n\u002F\u002F TODO: implement that stuff and the remove the noExpr param.\\nfunction parseExpression(expr, dotDotAllowed, noExpr = true) {\\n  let match = expr.match(namePattern);\\n  if (!match) {\\n    return null;\\n  }\\n\\n  let [name] = match;\\n  const parsed = [\\n    {\\n      name,\\n      cacheName: \\\".\\\" + name,\\n      index: 0,\\n      js: null,\\n      formCalc: null,\\n      operator: operators.dot,\\n    },\\n  ];\\n\\n  let pos = name.length;\\n\\n  while (pos \u003C expr.length) {\\n    const spos = pos;\\n    const char = expr.charAt(pos++);\\n    if (char === \\\"[\\\") {\\n      match = expr.slice(pos).match(indexPattern);\\n      if (!match) {\\n        warn(\\\"XFA - Invalid index in SOM expression\\\");\\n        return null;\\n      }\\n      parsed.at(-1).index = parseIndex(match[0]);\\n      pos += match[0].length + 1;\\n      continue;\\n    }\\n\\n    let operator;\\n    switch (expr.charAt(pos)) {\\n      case \\\".\\\":\\n        if (!dotDotAllowed) {\\n          return null;\\n        }\\n        pos++;\\n        operator = operators.dotDot;\\n        break;\\n      case \\\"#\\\":\\n        pos++;\\n        operator = operators.dotHash;\\n        break;\\n      case \\\"[\\\":\\n        if (noExpr) {\\n          warn(\\n            \\\"XFA - SOM expression contains a FormCalc subexpression which is not supported for now.\\\"\\n          );\\n          return null;\\n        }\\n        \u002F\u002F TODO: FormCalc expression so need to use the parser\\n        operator = operators.dotBracket;\\n        break;\\n      case \\\"(\\\":\\n        if (noExpr) {\\n          warn(\\n            \\\"XFA - SOM expression contains a JavaScript subexpression which is not supported for now.\\\"\\n          );\\n          return null;\\n        }\\n        \u002F\u002F TODO:\\n        \u002F\u002F JavaScript expression: should be a boolean operation with a path\\n        \u002F\u002F so maybe we can have our own parser for that stuff or\\n        \u002F\u002F maybe use the formcalc one.\\n        operator = operators.dotParen;\\n        break;\\n      default:\\n        operator = operators.dot;\\n        break;\\n    }\\n\\n    match = expr.slice(pos).match(namePattern);\\n    if (!match) {\\n      break;\\n    }\\n\\n    [name] = match;\\n    pos += name.length;\\n    parsed.push({\\n      name,\\n      cacheName: expr.slice(spos, pos),\\n      operator,\\n      index: 0,\\n      js: null,\\n      formCalc: null,\\n    });\\n  }\\n  return parsed;\\n}\\n\\nfunction searchNode(\\n  root,\\n  container,\\n  expr,\\n  dotDotAllowed = true,\\n  useCache = true\\n) {\\n  const parsed = parseExpression(expr, dotDotAllowed);\\n  if (!parsed) {\\n    return null;\\n  }\\n\\n  const fn = shortcuts.get(parsed[0].name);\\n  let i = 0;\\n  let isQualified;\\n  if (fn) {\\n    isQualified = true;\\n    root = [fn(root, container)];\\n    i = 1;\\n  } else {\\n    isQualified = container === null;\\n    root = [container || root];\\n  }\\n\\n  for (let ii = parsed.length; i \u003C ii; i++) {\\n    const { name, cacheName, operator, index } = parsed[i];\\n    const nodes = [];\\n    for (const node of root) {\\n      if (!node.isXFAObject) {\\n        continue;\\n      }\\n\\n      let children, cached;\\n\\n      if (useCache) {\\n        cached = somCache.get(node);\\n        if (!cached) {\\n          cached = new Map();\\n          somCache.set(node, cached);\\n        }\\n        children = cached.get(cacheName);\\n      }\\n\\n      if (!children) {\\n        switch (operator) {\\n          case operators.dot:\\n            children = node[$getChildrenByName](name, false);\\n            break;\\n          case operators.dotDot:\\n            children = node[$getChildrenByName](name, true);\\n            break;\\n          case operators.dotHash:\\n            children = node[$getChildrenByClass](name);\\n            children = children.isXFAObjectArray\\n              ? children.children\\n              : [children];\\n            break;\\n          default:\\n            break;\\n        }\\n        if (useCache) {\\n          cached.set(cacheName, children);\\n        }\\n      }\\n\\n      if (children.length > 0) {\\n        nodes.push(children);\\n      }\\n    }\\n\\n    if (nodes.length === 0 && !isQualified && i === 0) {\\n      \u002F\u002F We've an unqualified expression and we didn't find anything\\n      \u002F\u002F so look at container and siblings of container and so on.\\n      \u002F\u002F http:\u002F\u002Fciteseerx.ist.psu.edu\u002Fviewdoc\u002Fdownload?doi=10.1.1.364.2157&rep=rep1&type=pdf#page=114\\n      const parent = container[$getParent]();\\n      container = parent;\\n      if (!container) {\\n        return null;\\n      }\\n      i = -1;\\n      root = [container];\\n      continue;\\n    }\\n\\n    root = isFinite(index)\\n      ? nodes.filter(node => index \u003C node.length).map(node => node[index])\\n      : nodes.flat();\\n  }\\n\\n  if (root.length === 0) {\\n    return null;\\n  }\\n\\n  return root;\\n}\\n\\nfunction createDataNode(root, container, expr) {\\n  const parsed = parseExpression(expr);\\n  if (!parsed) {\\n    return null;\\n  }\\n\\n  if (parsed.some(x => x.operator === operators.dotDot)) {\\n    return null;\\n  }\\n\\n  const fn = shortcuts.get(parsed[0].name);\\n  let i = 0;\\n  if (fn) {\\n    root = fn(root, container);\\n    i = 1;\\n  } else {\\n    root = container || root;\\n  }\\n\\n  for (let ii = parsed.length; i \u003C ii; i++) {\\n    const { name, operator, index } = parsed[i];\\n    if (!isFinite(index)) {\\n      parsed[i].index = 0;\\n      return root.createNodes(parsed.slice(i));\\n    }\\n\\n    let children;\\n    switch (operator) {\\n      case operators.dot:\\n        children = root[$getChildrenByName](name, false);\\n        break;\\n      case operators.dotDot:\\n        children = root[$getChildrenByName](name, true);\\n        break;\\n      case operators.dotHash:\\n        children = root[$getChildrenByClass](name);\\n        children = children.isXFAObjectArray ? children.children : [children];\\n        break;\\n      default:\\n        break;\\n    }\\n\\n    if (children.length === 0) {\\n      return root.createNodes(parsed.slice(i));\\n    }\\n\\n    if (index \u003C children.length) {\\n      const child = children[index];\\n      if (!child.isXFAObject) {\\n        warn(`XFA - Cannot create a node.`);\\n        return null;\\n      }\\n      root = child;\\n    } else {\\n      parsed[i].index = index - children.length;\\n      return root.createNodes(parsed.slice(i));\\n    }\\n  }\\n  return null;\\n}\\n\\nexport { createDataNode, searchNode };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  $acceptWhitespace,\\n  $addHTML,\\n  $appendChild,\\n  $childrenToHTML,\\n  $clean,\\n  $cleanup,\\n  $clone,\\n  $consumed,\\n  $content,\\n  $dump,\\n  $extra,\\n  $finalize,\\n  $flushHTML,\\n  $getAttributeIt,\\n  $getAttributes,\\n  $getAvailableSpace,\\n  $getChildren,\\n  $getChildrenByClass,\\n  $getChildrenByName,\\n  $getChildrenByNameIt,\\n  $getContainedChildren,\\n  $getDataValue,\\n  $getParent,\\n  $getRealChildrenByNameIt,\\n  $getSubformParent,\\n  $getTemplateRoot,\\n  $globalData,\\n  $hasSettableValue,\\n  $indexOf,\\n  $insertAt,\\n  $isBindable,\\n  $isCDATAXml,\\n  $isDataValue,\\n  $isDescendent,\\n  $isNsAgnostic,\\n  $isSplittable,\\n  $isThereMoreWidth,\\n  $isTransparent,\\n  $lastAttribute,\\n  $namespaceId,\\n  $nodeName,\\n  $nsAttributes,\\n  $onChild,\\n  $onChildCheck,\\n  $onText,\\n  $popPara,\\n  $pushPara,\\n  $removeChild,\\n  $resolvePrototypes,\\n  $root,\\n  $setId,\\n  $setSetAttributes,\\n  $setValue,\\n  $text,\\n  $toHTML,\\n  $toString,\\n  $toStyle,\\n  $uid,\\n} from \\\".\u002Fsymbol_utils.js\\\";\\nimport { getInteger, getKeyword, HTMLResult } from \\\".\u002Futils.js\\\";\\nimport { shadow, utf8StringToString, warn } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport { encodeToXmlString } from \\\"..\u002Fcore_utils.js\\\";\\nimport { NamespaceIds } from \\\".\u002Fnamespaces.js\\\";\\nimport { searchNode } from \\\".\u002Fsom.js\\\";\\n\\nconst _applyPrototype = Symbol();\\nconst _attributes = Symbol();\\nconst _attributeNames = Symbol();\\nconst _children = Symbol(\\\"_children\\\");\\nconst _cloneAttribute = Symbol();\\nconst _dataValue = Symbol();\\nconst _defaultValue = Symbol();\\nconst _filteredChildrenGenerator = Symbol();\\nconst _getPrototype = Symbol();\\nconst _getUnsetAttributes = Symbol();\\nconst _hasChildren = Symbol();\\nconst _max = Symbol();\\nconst _options = Symbol();\\nconst _parent = Symbol(\\\"parent\\\");\\nconst _resolvePrototypesHelper = Symbol();\\nconst _setAttributes = Symbol();\\nconst _validator = Symbol();\\n\\nlet uid = 0;\\n\\nconst NS_DATASETS = NamespaceIds.datasets.id;\\n\\nclass XFAObject {\\n  constructor(nsId, name, hasChildren = false) {\\n    this[$namespaceId] = nsId;\\n    this[$nodeName] = name;\\n    this[_hasChildren] = hasChildren;\\n    this[_parent] = null;\\n    this[_children] = [];\\n    this[$uid] = `${name}${uid++}`;\\n    this[$globalData] = null;\\n  }\\n\\n  get isXFAObject() {\\n    return true;\\n  }\\n\\n  get isXFAObjectArray() {\\n    return false;\\n  }\\n\\n  createNodes(path) {\\n    let root = this,\\n      node = null;\\n    for (const { name, index } of path) {\\n      for (let i = 0, ii = isFinite(index) ? index : 0; i \u003C= ii; i++) {\\n        const nsId =\\n          root[$namespaceId] === NS_DATASETS ? -1 : root[$namespaceId];\\n        node = new XmlObject(nsId, name);\\n        root[$appendChild](node);\\n      }\\n      root = node;\\n    }\\n    return node;\\n  }\\n\\n  [$onChild](child) {\\n    if (!this[_hasChildren] || !this[$onChildCheck](child)) {\\n      return false;\\n    }\\n\\n    const name = child[$nodeName];\\n    const node = this[name];\\n\\n    if (node instanceof XFAObjectArray) {\\n      if (node.push(child)) {\\n        this[$appendChild](child);\\n        return true;\\n      }\\n    } else {\\n      \u002F\u002F IRL it's possible to already have a node.\\n      \u002F\u002F So just replace it with the last version.\\n      if (node !== null) {\\n        this[$removeChild](node);\\n      }\\n      this[name] = child;\\n      this[$appendChild](child);\\n      return true;\\n    }\\n\\n    let id = \\\"\\\";\\n    if (this.id) {\\n      id = ` (id: ${this.id})`;\\n    } else if (this.name) {\\n      id = ` (name: ${this.name} ${this.h.value})`;\\n    }\\n    warn(`XFA - node \\\"${this[$nodeName]}\\\"${id} has already enough \\\"${name}\\\"!`);\\n    return false;\\n  }\\n\\n  [$onChildCheck](child) {\\n    return (\\n      this.hasOwnProperty(child[$nodeName]) &&\\n      child[$namespaceId] === this[$namespaceId]\\n    );\\n  }\\n\\n  [$isNsAgnostic]() {\\n    return false;\\n  }\\n\\n  [$acceptWhitespace]() {\\n    return false;\\n  }\\n\\n  [$isCDATAXml]() {\\n    return false;\\n  }\\n\\n  [$isBindable]() {\\n    return false;\\n  }\\n\\n  [$popPara]() {\\n    if (this.para) {\\n      this[$getTemplateRoot]()[$extra].paraStack.pop();\\n    }\\n  }\\n\\n  [$pushPara]() {\\n    this[$getTemplateRoot]()[$extra].paraStack.push(this.para);\\n  }\\n\\n  [$setId](ids) {\\n    if (this.id && this[$namespaceId] === NamespaceIds.template.id) {\\n      ids.set(this.id, this);\\n    }\\n  }\\n\\n  [$getTemplateRoot]() {\\n    return this[$globalData].template;\\n  }\\n\\n  [$isSplittable]() {\\n    return false;\\n  }\\n\\n  \u002F**\\n     Return true if this node (typically a container)\\n     can provide more width during layout.\\n     The goal is to help to know what a descendant must\\n     do in case of horizontal overflow.\\n   *\u002F\\n  [$isThereMoreWidth]() {\\n    return false;\\n  }\\n\\n  [$appendChild](child) {\\n    child[_parent] = this;\\n    this[_children].push(child);\\n    if (!child[$globalData] && this[$globalData]) {\\n      child[$globalData] = this[$globalData];\\n    }\\n  }\\n\\n  [$removeChild](child) {\\n    const i = this[_children].indexOf(child);\\n    this[_children].splice(i, 1);\\n  }\\n\\n  [$hasSettableValue]() {\\n    return this.hasOwnProperty(\\\"value\\\");\\n  }\\n\\n  [$setValue](_) {}\\n\\n  [$onText](_) {}\\n\\n  [$finalize]() {}\\n\\n  [$clean](builder) {\\n    delete this[_hasChildren];\\n    if (this[$cleanup]) {\\n      builder.clean(this[$cleanup]);\\n      delete this[$cleanup];\\n    }\\n  }\\n\\n  [$indexOf](child) {\\n    return this[_children].indexOf(child);\\n  }\\n\\n  [$insertAt](i, child) {\\n    child[_parent] = this;\\n    this[_children].splice(i, 0, child);\\n    if (!child[$globalData] && this[$globalData]) {\\n      child[$globalData] = this[$globalData];\\n    }\\n  }\\n\\n  \u002F**\\n   * If true the element is transparent when searching a node using\\n   * a SOM expression which means that looking for \\\"foo.bar\\\" in\\n   * \u003C... name=\\\"foo\\\">\u003Ctoto>\u003Ctiti>\u003C... name=\\\"bar\\\">\u003C\u002Ftiti>\u003C\u002Ftoto>...\\n   * is fine because toto and titi are transparent.\\n   *\u002F\\n  [$isTransparent]() {\\n    return !this.name;\\n  }\\n\\n  [$lastAttribute]() {\\n    return \\\"\\\";\\n  }\\n\\n  [$text]() {\\n    if (this[_children].length === 0) {\\n      return this[$content];\\n    }\\n    return this[_children].map(c => c[$text]()).join(\\\"\\\");\\n  }\\n\\n  get [_attributeNames]() {\\n    \u002F\u002F Lazily get attributes names\\n    const proto = Object.getPrototypeOf(this);\\n    if (!proto._attributes) {\\n      const attributes = (proto._attributes = new Set());\\n      for (const name of Object.getOwnPropertyNames(this)) {\\n        if (\\n          this[name] === null ||\\n          this[name] instanceof XFAObject ||\\n          this[name] instanceof XFAObjectArray\\n        ) {\\n          break;\\n        }\\n        attributes.add(name);\\n      }\\n    }\\n    return shadow(this, _attributeNames, proto._attributes);\\n  }\\n\\n  [$isDescendent](parent) {\\n    let node = this;\\n    while (node) {\\n      if (node === parent) {\\n        return true;\\n      }\\n      node = node[$getParent]();\\n    }\\n    return false;\\n  }\\n\\n  [$getParent]() {\\n    return this[_parent];\\n  }\\n\\n  [$getSubformParent]() {\\n    return this[$getParent]();\\n  }\\n\\n  [$getChildren](name = null) {\\n    if (!name) {\\n      return this[_children];\\n    }\\n\\n    return this[name];\\n  }\\n\\n  [$dump]() {\\n    const dumped = Object.create(null);\\n    if (this[$content]) {\\n      dumped.$content = this[$content];\\n    }\\n\\n    for (const name of Object.getOwnPropertyNames(this)) {\\n      const value = this[name];\\n      if (value === null) {\\n        continue;\\n      }\\n      if (value instanceof XFAObject) {\\n        dumped[name] = value[$dump]();\\n      } else if (value instanceof XFAObjectArray) {\\n        if (!value.isEmpty()) {\\n          dumped[name] = value.dump();\\n        }\\n      } else {\\n        dumped[name] = value;\\n      }\\n    }\\n\\n    return dumped;\\n  }\\n\\n  [$toStyle]() {\\n    return null;\\n  }\\n\\n  [$toHTML]() {\\n    return HTMLResult.EMPTY;\\n  }\\n\\n  *[$getContainedChildren]() {\\n    \u002F\u002F This function is overriden in Subform and SubformSet.\\n    for (const node of this[$getChildren]()) {\\n      yield node;\\n    }\\n  }\\n\\n  *[_filteredChildrenGenerator](filter, include) {\\n    for (const node of this[$getContainedChildren]()) {\\n      if (!filter || include === filter.has(node[$nodeName])) {\\n        const availableSpace = this[$getAvailableSpace]();\\n        const res = node[$toHTML](availableSpace);\\n        if (!res.success) {\\n          this[$extra].failingNode = node;\\n        }\\n        yield res;\\n      }\\n    }\\n  }\\n\\n  [$flushHTML]() {\\n    return null;\\n  }\\n\\n  [$addHTML](html, bbox) {\\n    this[$extra].children.push(html);\\n  }\\n\\n  [$getAvailableSpace]() {}\\n\\n  [$childrenToHTML]({ filter = null, include = true }) {\\n    if (!this[$extra].generator) {\\n      this[$extra].generator = this[_filteredChildrenGenerator](\\n        filter,\\n        include\\n      );\\n    } else {\\n      const availableSpace = this[$getAvailableSpace]();\\n      const res = this[$extra].failingNode[$toHTML](availableSpace);\\n      if (!res.success) {\\n        return res;\\n      }\\n      if (res.html) {\\n        this[$addHTML](res.html, res.bbox);\\n      }\\n      delete this[$extra].failingNode;\\n    }\\n\\n    while (true) {\\n      const gen = this[$extra].generator.next();\\n      if (gen.done) {\\n        break;\\n      }\\n      const res = gen.value;\\n      if (!res.success) {\\n        return res;\\n      }\\n      if (res.html) {\\n        this[$addHTML](res.html, res.bbox);\\n      }\\n    }\\n\\n    this[$extra].generator = null;\\n\\n    return HTMLResult.EMPTY;\\n  }\\n\\n  [$setSetAttributes](attributes) {\\n    \u002F\u002F Just keep set attributes because it can be used in a proto.\\n    this[_setAttributes] = new Set(Object.keys(attributes));\\n  }\\n\\n  \u002F**\\n   * Get attribute names which have been set in the proto but not in this.\\n   *\u002F\\n  [_getUnsetAttributes](protoAttributes) {\\n    const allAttr = this[_attributeNames];\\n    const setAttr = this[_setAttributes];\\n    return [...protoAttributes].filter(x => allAttr.has(x) && !setAttr.has(x));\\n  }\\n\\n  \u002F**\\n   * Update the node with properties coming from a prototype and apply\\n   * this function recursively to all children.\\n   *\u002F\\n  [$resolvePrototypes](ids, ancestors = new Set()) {\\n    for (const child of this[_children]) {\\n      child[_resolvePrototypesHelper](ids, ancestors);\\n    }\\n  }\\n\\n  [_resolvePrototypesHelper](ids, ancestors) {\\n    const proto = this[_getPrototype](ids, ancestors);\\n    if (proto) {\\n      \u002F\u002F _applyPrototype will apply $resolvePrototypes with correct ancestors\\n      \u002F\u002F to avoid infinite loop.\\n      this[_applyPrototype](proto, ids, ancestors);\\n    } else {\\n      this[$resolvePrototypes](ids, ancestors);\\n    }\\n  }\\n\\n  [_getPrototype](ids, ancestors) {\\n    const { use, usehref } = this;\\n    if (!use && !usehref) {\\n      return null;\\n    }\\n\\n    let proto = null;\\n    let somExpression = null;\\n    let id = null;\\n    let ref = use;\\n\\n    \u002F\u002F If usehref and use are non-empty then use usehref.\\n    if (usehref) {\\n      ref = usehref;\\n      \u002F\u002F Href can be one of the following:\\n      \u002F\u002F - #ID\\n      \u002F\u002F - URI#ID\\n      \u002F\u002F - #som(expression)\\n      \u002F\u002F - URI#som(expression)\\n      \u002F\u002F - URI\\n      \u002F\u002F For now we don't handle URI other than \\\".\\\" (current document).\\n      if (usehref.startsWith(\\\"#som(\\\") && usehref.endsWith(\\\")\\\")) {\\n        somExpression = usehref.slice(\\\"#som(\\\".length, -1);\\n      } else if (usehref.startsWith(\\\".#som(\\\") && usehref.endsWith(\\\")\\\")) {\\n        somExpression = usehref.slice(\\\".#som(\\\".length, -1);\\n      } else if (usehref.startsWith(\\\"#\\\")) {\\n        id = usehref.slice(1);\\n      } else if (usehref.startsWith(\\\".#\\\")) {\\n        id = usehref.slice(2);\\n      }\\n    } else if (use.startsWith(\\\"#\\\")) {\\n      id = use.slice(1);\\n    } else {\\n      somExpression = use;\\n    }\\n\\n    this.use = this.usehref = \\\"\\\";\\n    if (id) {\\n      proto = ids.get(id);\\n    } else {\\n      proto = searchNode(\\n        ids.get($root),\\n        this,\\n        somExpression,\\n        true \u002F* = dotDotAllowed *\u002F,\\n        false \u002F* = useCache *\u002F\\n      );\\n      if (proto) {\\n        proto = proto[0];\\n      }\\n    }\\n\\n    if (!proto) {\\n      warn(`XFA - Invalid prototype reference: ${ref}.`);\\n      return null;\\n    }\\n\\n    if (proto[$nodeName] !== this[$nodeName]) {\\n      warn(\\n        `XFA - Incompatible prototype: ${proto[$nodeName]} !== ${this[$nodeName]}.`\\n      );\\n      return null;\\n    }\\n\\n    if (ancestors.has(proto)) {\\n      \u002F\u002F We've a cycle so break it.\\n      warn(`XFA - Cycle detected in prototypes use.`);\\n      return null;\\n    }\\n\\n    ancestors.add(proto);\\n\\n    \u002F\u002F The prototype can have a \\\"use\\\" attribute itself.\\n    const protoProto = proto[_getPrototype](ids, ancestors);\\n    if (protoProto) {\\n      proto[_applyPrototype](protoProto, ids, ancestors);\\n    }\\n\\n    \u002F\u002F The prototype can have a child which itself has a \\\"use\\\" property.\\n    proto[$resolvePrototypes](ids, ancestors);\\n\\n    ancestors.delete(proto);\\n\\n    return proto;\\n  }\\n\\n  [_applyPrototype](proto, ids, ancestors) {\\n    if (ancestors.has(proto)) {\\n      \u002F\u002F We've a cycle so break it.\\n      warn(`XFA - Cycle detected in prototypes use.`);\\n      return;\\n    }\\n\\n    if (!this[$content] && proto[$content]) {\\n      this[$content] = proto[$content];\\n    }\\n\\n    const newAncestors = new Set(ancestors);\\n    newAncestors.add(proto);\\n\\n    for (const unsetAttrName of this[_getUnsetAttributes](\\n      proto[_setAttributes]\\n    )) {\\n      this[unsetAttrName] = proto[unsetAttrName];\\n      if (this[_setAttributes]) {\\n        this[_setAttributes].add(unsetAttrName);\\n      }\\n    }\\n\\n    for (const name of Object.getOwnPropertyNames(this)) {\\n      if (this[_attributeNames].has(name)) {\\n        continue;\\n      }\\n      const value = this[name];\\n      const protoValue = proto[name];\\n\\n      if (value instanceof XFAObjectArray) {\\n        for (const child of value[_children]) {\\n          child[_resolvePrototypesHelper](ids, ancestors);\\n        }\\n\\n        for (\\n          let i = value[_children].length, ii = protoValue[_children].length;\\n          i \u003C ii;\\n          i++\\n        ) {\\n          const child = proto[_children][i][$clone]();\\n          if (value.push(child)) {\\n            child[_parent] = this;\\n            this[_children].push(child);\\n            child[_resolvePrototypesHelper](ids, ancestors);\\n          } else {\\n            \u002F\u002F No need to continue: other nodes will be rejected.\\n            break;\\n          }\\n        }\\n        continue;\\n      }\\n\\n      if (value !== null) {\\n        value[$resolvePrototypes](ids, ancestors);\\n        if (protoValue) {\\n          \u002F\u002F protoValue must be treated as a prototype for value.\\n          value[_applyPrototype](protoValue, ids, ancestors);\\n        }\\n        continue;\\n      }\\n\\n      if (protoValue !== null) {\\n        const child = protoValue[$clone]();\\n        child[_parent] = this;\\n        this[name] = child;\\n        this[_children].push(child);\\n        child[_resolvePrototypesHelper](ids, ancestors);\\n      }\\n    }\\n  }\\n\\n  static [_cloneAttribute](obj) {\\n    if (Array.isArray(obj)) {\\n      return obj.map(x => XFAObject[_cloneAttribute](x));\\n    }\\n    if (typeof obj === \\\"object\\\" && obj !== null) {\\n      return Object.assign({}, obj);\\n    }\\n    return obj;\\n  }\\n\\n  [$clone]() {\\n    const clone = Object.create(Object.getPrototypeOf(this));\\n    for (const $symbol of Object.getOwnPropertySymbols(this)) {\\n      try {\\n        clone[$symbol] = this[$symbol];\\n      } catch {\\n        shadow(clone, $symbol, this[$symbol]);\\n      }\\n    }\\n    clone[$uid] = `${clone[$nodeName]}${uid++}`;\\n    clone[_children] = [];\\n\\n    for (const name of Object.getOwnPropertyNames(this)) {\\n      if (this[_attributeNames].has(name)) {\\n        clone[name] = XFAObject[_cloneAttribute](this[name]);\\n        continue;\\n      }\\n      const value = this[name];\\n      clone[name] =\\n        value instanceof XFAObjectArray\\n          ? new XFAObjectArray(value[_max])\\n          : null;\\n    }\\n\\n    for (const child of this[_children]) {\\n      const name = child[$nodeName];\\n      const clonedChild = child[$clone]();\\n      clone[_children].push(clonedChild);\\n      clonedChild[_parent] = clone;\\n      if (clone[name] === null) {\\n        clone[name] = clonedChild;\\n      } else {\\n        clone[name][_children].push(clonedChild);\\n      }\\n    }\\n\\n    return clone;\\n  }\\n\\n  [$getChildren](name = null) {\\n    if (!name) {\\n      return this[_children];\\n    }\\n\\n    return this[_children].filter(c => c[$nodeName] === name);\\n  }\\n\\n  [$getChildrenByClass](name) {\\n    return this[name];\\n  }\\n\\n  [$getChildrenByName](name, allTransparent, first = true) {\\n    return Array.from(this[$getChildrenByNameIt](name, allTransparent, first));\\n  }\\n\\n  *[$getChildrenByNameIt](name, allTransparent, first = true) {\\n    if (name === \\\"parent\\\") {\\n      yield this[_parent];\\n      return;\\n    }\\n\\n    for (const child of this[_children]) {\\n      if (child[$nodeName] === name) {\\n        yield child;\\n      }\\n\\n      if (child.name === name) {\\n        yield child;\\n      }\\n\\n      if (allTransparent || child[$isTransparent]()) {\\n        yield* child[$getChildrenByNameIt](name, allTransparent, false);\\n      }\\n    }\\n\\n    if (first && this[_attributeNames].has(name)) {\\n      yield new XFAAttribute(this, name, this[name]);\\n    }\\n  }\\n}\\n\\nclass XFAObjectArray {\\n  constructor(max = Infinity) {\\n    this[_max] = max;\\n    this[_children] = [];\\n  }\\n\\n  get isXFAObject() {\\n    return false;\\n  }\\n\\n  get isXFAObjectArray() {\\n    return true;\\n  }\\n\\n  push(child) {\\n    const len = this[_children].length;\\n    if (len \u003C= this[_max]) {\\n      this[_children].push(child);\\n      return true;\\n    }\\n    warn(\\n      `XFA - node \\\"${child[$nodeName]}\\\" accepts no more than ${this[_max]} children`\\n    );\\n    return false;\\n  }\\n\\n  isEmpty() {\\n    return this[_children].length === 0;\\n  }\\n\\n  dump() {\\n    return this[_children].length === 1\\n      ? this[_children][0][$dump]()\\n      : this[_children].map(x => x[$dump]());\\n  }\\n\\n  [$clone]() {\\n    const clone = new XFAObjectArray(this[_max]);\\n    clone[_children] = this[_children].map(c => c[$clone]());\\n    return clone;\\n  }\\n\\n  get children() {\\n    return this[_children];\\n  }\\n\\n  clear() {\\n    this[_children].length = 0;\\n  }\\n}\\n\\nclass XFAAttribute {\\n  constructor(node, name, value) {\\n    this[_parent] = node;\\n    this[$nodeName] = name;\\n    this[$content] = value;\\n    this[$consumed] = false;\\n    this[$uid] = `attribute${uid++}`;\\n  }\\n\\n  [$getParent]() {\\n    return this[_parent];\\n  }\\n\\n  [$isDataValue]() {\\n    return true;\\n  }\\n\\n  [$getDataValue]() {\\n    return this[$content].trim();\\n  }\\n\\n  [$setValue](value) {\\n    value = value.value || \\\"\\\";\\n    this[$content] = value.toString();\\n  }\\n\\n  [$text]() {\\n    return this[$content];\\n  }\\n\\n  [$isDescendent](parent) {\\n    return this[_parent] === parent || this[_parent][$isDescendent](parent);\\n  }\\n}\\n\\nclass XmlObject extends XFAObject {\\n  constructor(nsId, name, attributes = {}) {\\n    super(nsId, name);\\n    this[$content] = \\\"\\\";\\n    this[_dataValue] = null;\\n    if (name !== \\\"#text\\\") {\\n      const map = new Map();\\n      this[_attributes] = map;\\n      for (const [attrName, value] of Object.entries(attributes)) {\\n        map.set(attrName, new XFAAttribute(this, attrName, value));\\n      }\\n      if (attributes.hasOwnProperty($nsAttributes)) {\\n        \u002F\u002F XFA attributes.\\n        const dataNode = attributes[$nsAttributes].xfa.dataNode;\\n        if (dataNode !== undefined) {\\n          if (dataNode === \\\"dataGroup\\\") {\\n            this[_dataValue] = false;\\n          } else if (dataNode === \\\"dataValue\\\") {\\n            this[_dataValue] = true;\\n          }\\n        }\\n      }\\n    }\\n    this[$consumed] = false;\\n  }\\n\\n  [$toString](buf) {\\n    const tagName = this[$nodeName];\\n    if (tagName === \\\"#text\\\") {\\n      buf.push(encodeToXmlString(this[$content]));\\n      return;\\n    }\\n    const utf8TagName = utf8StringToString(tagName);\\n    const prefix = this[$namespaceId] === NS_DATASETS ? \\\"xfa:\\\" : \\\"\\\";\\n    buf.push(`\u003C${prefix}${utf8TagName}`);\\n    for (const [name, value] of this[_attributes].entries()) {\\n      const utf8Name = utf8StringToString(name);\\n      buf.push(` ${utf8Name}=\\\"${encodeToXmlString(value[$content])}\\\"`);\\n    }\\n    if (this[_dataValue] !== null) {\\n      if (this[_dataValue]) {\\n        buf.push(` xfa:dataNode=\\\"dataValue\\\"`);\\n      } else {\\n        buf.push(` xfa:dataNode=\\\"dataGroup\\\"`);\\n      }\\n    }\\n    if (!this[$content] && this[_children].length === 0) {\\n      buf.push(\\\"\u002F>\\\");\\n      return;\\n    }\\n\\n    buf.push(\\\">\\\");\\n    if (this[$content]) {\\n      if (typeof this[$content] === \\\"string\\\") {\\n        buf.push(encodeToXmlString(this[$content]));\\n      } else {\\n        this[$content][$toString](buf);\\n      }\\n    } else {\\n      for (const child of this[_children]) {\\n        child[$toString](buf);\\n      }\\n    }\\n    buf.push(`\u003C\u002F${prefix}${utf8TagName}>`);\\n  }\\n\\n  [$onChild](child) {\\n    if (this[$content]) {\\n      const node = new XmlObject(this[$namespaceId], \\\"#text\\\");\\n      this[$appendChild](node);\\n      node[$content] = this[$content];\\n      this[$content] = \\\"\\\";\\n    }\\n    this[$appendChild](child);\\n    return true;\\n  }\\n\\n  [$onText](str) {\\n    this[$content] += str;\\n  }\\n\\n  [$finalize]() {\\n    if (this[$content] && this[_children].length > 0) {\\n      const node = new XmlObject(this[$namespaceId], \\\"#text\\\");\\n      this[$appendChild](node);\\n      node[$content] = this[$content];\\n      delete this[$content];\\n    }\\n  }\\n\\n  [$toHTML]() {\\n    if (this[$nodeName] === \\\"#text\\\") {\\n      return HTMLResult.success({\\n        name: \\\"#text\\\",\\n        value: this[$content],\\n      });\\n    }\\n\\n    return HTMLResult.EMPTY;\\n  }\\n\\n  [$getChildren](name = null) {\\n    if (!name) {\\n      return this[_children];\\n    }\\n\\n    return this[_children].filter(c => c[$nodeName] === name);\\n  }\\n\\n  [$getAttributes]() {\\n    return this[_attributes];\\n  }\\n\\n  [$getChildrenByClass](name) {\\n    const value = this[_attributes].get(name);\\n    if (value !== undefined) {\\n      return value;\\n    }\\n    return this[$getChildren](name);\\n  }\\n\\n  *[$getChildrenByNameIt](name, allTransparent) {\\n    const value = this[_attributes].get(name);\\n    if (value) {\\n      yield value;\\n    }\\n\\n    for (const child of this[_children]) {\\n      if (child[$nodeName] === name) {\\n        yield child;\\n      }\\n\\n      if (allTransparent) {\\n        yield* child[$getChildrenByNameIt](name, allTransparent);\\n      }\\n    }\\n  }\\n\\n  *[$getAttributeIt](name, skipConsumed) {\\n    const value = this[_attributes].get(name);\\n    if (value && (!skipConsumed || !value[$consumed])) {\\n      yield value;\\n    }\\n    for (const child of this[_children]) {\\n      yield* child[$getAttributeIt](name, skipConsumed);\\n    }\\n  }\\n\\n  *[$getRealChildrenByNameIt](name, allTransparent, skipConsumed) {\\n    for (const child of this[_children]) {\\n      if (child[$nodeName] === name && (!skipConsumed || !child[$consumed])) {\\n        yield child;\\n      }\\n\\n      if (allTransparent) {\\n        yield* child[$getRealChildrenByNameIt](\\n          name,\\n          allTransparent,\\n          skipConsumed\\n        );\\n      }\\n    }\\n  }\\n\\n  [$isDataValue]() {\\n    if (this[_dataValue] === null) {\\n      return (\\n        this[_children].length === 0 ||\\n        this[_children][0][$namespaceId] === NamespaceIds.xhtml.id\\n      );\\n    }\\n    return this[_dataValue];\\n  }\\n\\n  [$getDataValue]() {\\n    if (this[_dataValue] === null) {\\n      if (this[_children].length === 0) {\\n        return this[$content].trim();\\n      }\\n      if (this[_children][0][$namespaceId] === NamespaceIds.xhtml.id) {\\n        return this[_children][0][$text]().trim();\\n      }\\n      return null;\\n    }\\n    return this[$content].trim();\\n  }\\n\\n  [$setValue](value) {\\n    value = value.value || \\\"\\\";\\n    this[$content] = value.toString();\\n  }\\n\\n  [$dump](hasNS = false) {\\n    const dumped = Object.create(null);\\n    if (hasNS) {\\n      dumped.$ns = this[$namespaceId];\\n    }\\n    if (this[$content]) {\\n      dumped.$content = this[$content];\\n    }\\n    dumped.$name = this[$nodeName];\\n\\n    dumped.children = [];\\n    for (const child of this[_children]) {\\n      dumped.children.push(child[$dump](hasNS));\\n    }\\n\\n    dumped.attributes = Object.create(null);\\n    for (const [name, value] of this[_attributes]) {\\n      dumped.attributes[name] = value[$content];\\n    }\\n\\n    return dumped;\\n  }\\n}\\n\\nclass ContentObject extends XFAObject {\\n  constructor(nsId, name) {\\n    super(nsId, name);\\n    this[$content] = \\\"\\\";\\n  }\\n\\n  [$onText](text) {\\n    this[$content] += text;\\n  }\\n\\n  [$finalize]() {}\\n}\\n\\nclass OptionObject extends ContentObject {\\n  constructor(nsId, name, options) {\\n    super(nsId, name);\\n    this[_options] = options;\\n  }\\n\\n  [$finalize]() {\\n    this[$content] = getKeyword({\\n      data: this[$content],\\n      defaultValue: this[_options][0],\\n      validate: k => this[_options].includes(k),\\n    });\\n  }\\n\\n  [$clean](builder) {\\n    super[$clean](builder);\\n    delete this[_options];\\n  }\\n}\\n\\nclass StringObject extends ContentObject {\\n  [$finalize]() {\\n    this[$content] = this[$content].trim();\\n  }\\n}\\n\\nclass IntegerObject extends ContentObject {\\n  constructor(nsId, name, defaultValue, validator) {\\n    super(nsId, name);\\n    this[_defaultValue] = defaultValue;\\n    this[_validator] = validator;\\n  }\\n\\n  [$finalize]() {\\n    this[$content] = getInteger({\\n      data: this[$content],\\n      defaultValue: this[_defaultValue],\\n      validate: this[_validator],\\n    });\\n  }\\n\\n  [$clean](builder) {\\n    super[$clean](builder);\\n    delete this[_defaultValue];\\n    delete this[_validator];\\n  }\\n}\\n\\nclass Option01 extends IntegerObject {\\n  constructor(nsId, name) {\\n    super(nsId, name, 0, n => n === 1);\\n  }\\n}\\n\\nclass Option10 extends IntegerObject {\\n  constructor(nsId, name) {\\n    super(nsId, name, 1, n => n === 0);\\n  }\\n}\\n\\nexport {\\n  ContentObject,\\n  IntegerObject,\\n  Option01,\\n  Option10,\\n  OptionObject,\\n  StringObject,\\n  XFAAttribute,\\n  XFAObject,\\n  XFAObjectArray,\\n  XmlObject,\\n};\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  $content,\\n  $extra,\\n  $getParent,\\n  $getSubformParent,\\n  $getTemplateRoot,\\n  $globalData,\\n  $nodeName,\\n  $pushGlyphs,\\n  $text,\\n  $toStyle,\\n} from \\\".\u002Fsymbol_utils.js\\\";\\nimport { createValidAbsoluteUrl, warn } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport { getMeasurement, stripQuotes } from \\\".\u002Futils.js\\\";\\nimport { selectFont } from \\\".\u002Ffonts.js\\\";\\nimport { TextMeasure } from \\\".\u002Ftext.js\\\";\\nimport { XFAObject } from \\\".\u002Fxfa_object.js\\\";\\n\\nfunction measureToString(m) {\\n  if (typeof m === \\\"string\\\") {\\n    return \\\"0px\\\";\\n  }\\n\\n  return Number.isInteger(m) ? `${m}px` : `${m.toFixed(2)}px`;\\n}\\n\\nconst converters = {\\n  anchorType(node, style) {\\n    const parent = node[$getSubformParent]();\\n    if (!parent || (parent.layout && parent.layout !== \\\"position\\\")) {\\n      \u002F\u002F anchorType is only used in a positioned layout.\\n      return;\\n    }\\n\\n    if (!(\\\"transform\\\" in style)) {\\n      style.transform = \\\"\\\";\\n    }\\n    switch (node.anchorType) {\\n      case \\\"bottomCenter\\\":\\n        style.transform += \\\"translate(-50%, -100%)\\\";\\n        break;\\n      case \\\"bottomLeft\\\":\\n        style.transform += \\\"translate(0,-100%)\\\";\\n        break;\\n      case \\\"bottomRight\\\":\\n        style.transform += \\\"translate(-100%,-100%)\\\";\\n        break;\\n      case \\\"middleCenter\\\":\\n        style.transform += \\\"translate(-50%,-50%)\\\";\\n        break;\\n      case \\\"middleLeft\\\":\\n        style.transform += \\\"translate(0,-50%)\\\";\\n        break;\\n      case \\\"middleRight\\\":\\n        style.transform += \\\"translate(-100%,-50%)\\\";\\n        break;\\n      case \\\"topCenter\\\":\\n        style.transform += \\\"translate(-50%,0)\\\";\\n        break;\\n      case \\\"topRight\\\":\\n        style.transform += \\\"translate(-100%,0)\\\";\\n        break;\\n    }\\n  },\\n  dimensions(node, style) {\\n    const parent = node[$getSubformParent]();\\n    let width = node.w;\\n    const height = node.h;\\n    if (parent.layout?.includes(\\\"row\\\")) {\\n      const extra = parent[$extra];\\n      const colSpan = node.colSpan;\\n      let w;\\n      if (colSpan === -1) {\\n        w = extra.columnWidths\\n          .slice(extra.currentColumn)\\n          .reduce((a, x) => a + x, 0);\\n        extra.currentColumn = 0;\\n      } else {\\n        w = extra.columnWidths\\n          .slice(extra.currentColumn, extra.currentColumn + colSpan)\\n          .reduce((a, x) => a + x, 0);\\n        extra.currentColumn =\\n          (extra.currentColumn + node.colSpan) % extra.columnWidths.length;\\n      }\\n\\n      if (!isNaN(w)) {\\n        width = node.w = w;\\n      }\\n    }\\n\\n    style.width = width !== \\\"\\\" ? measureToString(width) : \\\"auto\\\";\\n\\n    style.height = height !== \\\"\\\" ? measureToString(height) : \\\"auto\\\";\\n  },\\n  position(node, style) {\\n    const parent = node[$getSubformParent]();\\n    if (parent?.layout && parent.layout !== \\\"position\\\") {\\n      \u002F\u002F IRL, we've some x\u002Fy in tb layout.\\n      \u002F\u002F Specs say x\u002Fy is only used in positioned layout.\\n      return;\\n    }\\n\\n    style.position = \\\"absolute\\\";\\n    style.left = measureToString(node.x);\\n    style.top = measureToString(node.y);\\n  },\\n  rotate(node, style) {\\n    if (node.rotate) {\\n      if (!(\\\"transform\\\" in style)) {\\n        style.transform = \\\"\\\";\\n      }\\n      style.transform += `rotate(-${node.rotate}deg)`;\\n      style.transformOrigin = \\\"top left\\\";\\n    }\\n  },\\n  presence(node, style) {\\n    switch (node.presence) {\\n      case \\\"invisible\\\":\\n        style.visibility = \\\"hidden\\\";\\n        break;\\n      case \\\"hidden\\\":\\n      case \\\"inactive\\\":\\n        style.display = \\\"none\\\";\\n        break;\\n    }\\n  },\\n  hAlign(node, style) {\\n    if (node[$nodeName] === \\\"para\\\") {\\n      switch (node.hAlign) {\\n        case \\\"justifyAll\\\":\\n          style.textAlign = \\\"justify-all\\\";\\n          break;\\n        case \\\"radix\\\":\\n          \u002F\u002F TODO: implement this correctly !\\n          style.textAlign = \\\"left\\\";\\n          break;\\n        default:\\n          style.textAlign = node.hAlign;\\n      }\\n    } else {\\n      switch (node.hAlign) {\\n        case \\\"left\\\":\\n          style.alignSelf = \\\"start\\\";\\n          break;\\n        case \\\"center\\\":\\n          style.alignSelf = \\\"center\\\";\\n          break;\\n        case \\\"right\\\":\\n          style.alignSelf = \\\"end\\\";\\n          break;\\n      }\\n    }\\n  },\\n  margin(node, style) {\\n    if (node.margin) {\\n      style.margin = node.margin[$toStyle]().margin;\\n    }\\n  },\\n};\\n\\nfunction setMinMaxDimensions(node, style) {\\n  const parent = node[$getSubformParent]();\\n  if (parent.layout === \\\"position\\\") {\\n    if (node.minW > 0) {\\n      style.minWidth = measureToString(node.minW);\\n    }\\n    if (node.maxW > 0) {\\n      style.maxWidth = measureToString(node.maxW);\\n    }\\n    if (node.minH > 0) {\\n      style.minHeight = measureToString(node.minH);\\n    }\\n    if (node.maxH > 0) {\\n      style.maxHeight = measureToString(node.maxH);\\n    }\\n  }\\n}\\n\\nfunction layoutText(text, xfaFont, margin, lineHeight, fontFinder, width) {\\n  const measure = new TextMeasure(xfaFont, margin, lineHeight, fontFinder);\\n  if (typeof text === \\\"string\\\") {\\n    measure.addString(text);\\n  } else {\\n    text[$pushGlyphs](measure);\\n  }\\n\\n  return measure.compute(width);\\n}\\n\\nfunction layoutNode(node, availableSpace) {\\n  let height = null;\\n  let width = null;\\n  let isBroken = false;\\n\\n  if ((!node.w || !node.h) && node.value) {\\n    let marginH = 0;\\n    let marginV = 0;\\n    if (node.margin) {\\n      marginH = node.margin.leftInset + node.margin.rightInset;\\n      marginV = node.margin.topInset + node.margin.bottomInset;\\n    }\\n\\n    let lineHeight = null;\\n    let margin = null;\\n    if (node.para) {\\n      margin = Object.create(null);\\n      lineHeight = node.para.lineHeight === \\\"\\\" ? null : node.para.lineHeight;\\n      margin.top = node.para.spaceAbove === \\\"\\\" ? 0 : node.para.spaceAbove;\\n      margin.bottom = node.para.spaceBelow === \\\"\\\" ? 0 : node.para.spaceBelow;\\n      margin.left = node.para.marginLeft === \\\"\\\" ? 0 : node.para.marginLeft;\\n      margin.right = node.para.marginRight === \\\"\\\" ? 0 : node.para.marginRight;\\n    }\\n\\n    let font = node.font;\\n    if (!font) {\\n      const root = node[$getTemplateRoot]();\\n      let parent = node[$getParent]();\\n      while (parent && parent !== root) {\\n        if (parent.font) {\\n          font = parent.font;\\n          break;\\n        }\\n        parent = parent[$getParent]();\\n      }\\n    }\\n\\n    const maxWidth = (node.w || availableSpace.width) - marginH;\\n    const fontFinder = node[$globalData].fontFinder;\\n    if (\\n      node.value.exData &&\\n      node.value.exData[$content] &&\\n      node.value.exData.contentType === \\\"text\u002Fhtml\\\"\\n    ) {\\n      const res = layoutText(\\n        node.value.exData[$content],\\n        font,\\n        margin,\\n        lineHeight,\\n        fontFinder,\\n        maxWidth\\n      );\\n      width = res.width;\\n      height = res.height;\\n      isBroken = res.isBroken;\\n    } else {\\n      const text = node.value[$text]();\\n      if (text) {\\n        const res = layoutText(\\n          text,\\n          font,\\n          margin,\\n          lineHeight,\\n          fontFinder,\\n          maxWidth\\n        );\\n        width = res.width;\\n        height = res.height;\\n        isBroken = res.isBroken;\\n      }\\n    }\\n\\n    if (width !== null && !node.w) {\\n      width += marginH;\\n    }\\n\\n    if (height !== null && !node.h) {\\n      height += marginV;\\n    }\\n  }\\n  return { w: width, h: height, isBroken };\\n}\\n\\nfunction computeBbox(node, html, availableSpace) {\\n  let bbox;\\n  if (node.w !== \\\"\\\" && node.h !== \\\"\\\") {\\n    bbox = [node.x, node.y, node.w, node.h];\\n  } else {\\n    if (!availableSpace) {\\n      return null;\\n    }\\n    let width = node.w;\\n    if (width === \\\"\\\") {\\n      if (node.maxW === 0) {\\n        const parent = node[$getSubformParent]();\\n        width = parent.layout === \\\"position\\\" && parent.w !== \\\"\\\" ? 0 : node.minW;\\n      } else {\\n        width = Math.min(node.maxW, availableSpace.width);\\n      }\\n      html.attributes.style.width = measureToString(width);\\n    }\\n\\n    let height = node.h;\\n    if (height === \\\"\\\") {\\n      if (node.maxH === 0) {\\n        const parent = node[$getSubformParent]();\\n        height =\\n          parent.layout === \\\"position\\\" && parent.h !== \\\"\\\" ? 0 : node.minH;\\n      } else {\\n        height = Math.min(node.maxH, availableSpace.height);\\n      }\\n      html.attributes.style.height = measureToString(height);\\n    }\\n\\n    bbox = [node.x, node.y, width, height];\\n  }\\n  return bbox;\\n}\\n\\nfunction fixDimensions(node) {\\n  const parent = node[$getSubformParent]();\\n  if (parent.layout?.includes(\\\"row\\\")) {\\n    const extra = parent[$extra];\\n    const colSpan = node.colSpan;\\n    let width;\\n    if (colSpan === -1) {\\n      width = extra.columnWidths\\n        .slice(extra.currentColumn)\\n        .reduce((a, w) => a + w, 0);\\n    } else {\\n      width = extra.columnWidths\\n        .slice(extra.currentColumn, extra.currentColumn + colSpan)\\n        .reduce((a, w) => a + w, 0);\\n    }\\n    if (!isNaN(width)) {\\n      node.w = width;\\n    }\\n  }\\n\\n  if (parent.layout && parent.layout !== \\\"position\\\") {\\n    \u002F\u002F Useless in this context.\\n    node.x = node.y = 0;\\n  }\\n\\n  if (node.layout === \\\"table\\\") {\\n    if (node.w === \\\"\\\" && Array.isArray(node.columnWidths)) {\\n      node.w = node.columnWidths.reduce((a, x) => a + x, 0);\\n    }\\n  }\\n}\\n\\nfunction layoutClass(node) {\\n  switch (node.layout) {\\n    case \\\"position\\\":\\n      return \\\"xfaPosition\\\";\\n    case \\\"lr-tb\\\":\\n      return \\\"xfaLrTb\\\";\\n    case \\\"rl-row\\\":\\n      return \\\"xfaRlRow\\\";\\n    case \\\"rl-tb\\\":\\n      return \\\"xfaRlTb\\\";\\n    case \\\"row\\\":\\n      return \\\"xfaRow\\\";\\n    case \\\"table\\\":\\n      return \\\"xfaTable\\\";\\n    case \\\"tb\\\":\\n      return \\\"xfaTb\\\";\\n    default:\\n      return \\\"xfaPosition\\\";\\n  }\\n}\\n\\nfunction toStyle(node, ...names) {\\n  const style = Object.create(null);\\n  for (const name of names) {\\n    const value = node[name];\\n    if (value === null) {\\n      continue;\\n    }\\n    if (converters.hasOwnProperty(name)) {\\n      converters[name](node, style);\\n      continue;\\n    }\\n\\n    if (value instanceof XFAObject) {\\n      const newStyle = value[$toStyle]();\\n      if (newStyle) {\\n        Object.assign(style, newStyle);\\n      } else {\\n        warn(`(DEBUG) - XFA - style for ${name} not implemented yet`);\\n      }\\n    }\\n  }\\n  return style;\\n}\\n\\nfunction createWrapper(node, html) {\\n  const { attributes } = html;\\n  const { style } = attributes;\\n\\n  const wrapper = {\\n    name: \\\"div\\\",\\n    attributes: {\\n      class: [\\\"xfaWrapper\\\"],\\n      style: Object.create(null),\\n    },\\n    children: [],\\n  };\\n\\n  attributes.class.push(\\\"xfaWrapped\\\");\\n\\n  if (node.border) {\\n    const { widths, insets } = node.border[$extra];\\n    let width, height;\\n    let top = insets[0];\\n    let left = insets[3];\\n    const insetsH = insets[0] + insets[2];\\n    const insetsW = insets[1] + insets[3];\\n    switch (node.border.hand) {\\n      case \\\"even\\\":\\n        top -= widths[0] \u002F 2;\\n        left -= widths[3] \u002F 2;\\n        width = `calc(100% + ${(widths[1] + widths[3]) \u002F 2 - insetsW}px)`;\\n        height = `calc(100% + ${(widths[0] + widths[2]) \u002F 2 - insetsH}px)`;\\n        break;\\n      case \\\"left\\\":\\n        top -= widths[0];\\n        left -= widths[3];\\n        width = `calc(100% + ${widths[1] + widths[3] - insetsW}px)`;\\n        height = `calc(100% + ${widths[0] + widths[2] - insetsH}px)`;\\n        break;\\n      case \\\"right\\\":\\n        width = insetsW ? `calc(100% - ${insetsW}px)` : \\\"100%\\\";\\n        height = insetsH ? `calc(100% - ${insetsH}px)` : \\\"100%\\\";\\n        break;\\n    }\\n    const classNames = [\\\"xfaBorder\\\"];\\n    if (isPrintOnly(node.border)) {\\n      classNames.push(\\\"xfaPrintOnly\\\");\\n    }\\n\\n    const border = {\\n      name: \\\"div\\\",\\n      attributes: {\\n        class: classNames,\\n        style: {\\n          top: `${top}px`,\\n          left: `${left}px`,\\n          width,\\n          height,\\n        },\\n      },\\n      children: [],\\n    };\\n\\n    for (const key of [\\n      \\\"border\\\",\\n      \\\"borderWidth\\\",\\n      \\\"borderColor\\\",\\n      \\\"borderRadius\\\",\\n      \\\"borderStyle\\\",\\n    ]) {\\n      if (style[key] !== undefined) {\\n        border.attributes.style[key] = style[key];\\n        delete style[key];\\n      }\\n    }\\n    wrapper.children.push(border, html);\\n  } else {\\n    wrapper.children.push(html);\\n  }\\n\\n  for (const key of [\\n    \\\"background\\\",\\n    \\\"backgroundClip\\\",\\n    \\\"top\\\",\\n    \\\"left\\\",\\n    \\\"width\\\",\\n    \\\"height\\\",\\n    \\\"minWidth\\\",\\n    \\\"minHeight\\\",\\n    \\\"maxWidth\\\",\\n    \\\"maxHeight\\\",\\n    \\\"transform\\\",\\n    \\\"transformOrigin\\\",\\n    \\\"visibility\\\",\\n  ]) {\\n    if (style[key] !== undefined) {\\n      wrapper.attributes.style[key] = style[key];\\n      delete style[key];\\n    }\\n  }\\n\\n  wrapper.attributes.style.position =\\n    style.position === \\\"absolute\\\" ? \\\"absolute\\\" : \\\"relative\\\";\\n  delete style.position;\\n\\n  if (style.alignSelf) {\\n    wrapper.attributes.style.alignSelf = style.alignSelf;\\n    delete style.alignSelf;\\n  }\\n\\n  return wrapper;\\n}\\n\\nfunction fixTextIndent(styles) {\\n  const indent = getMeasurement(styles.textIndent, \\\"0px\\\");\\n  if (indent >= 0) {\\n    return;\\n  }\\n\\n  \u002F\u002F If indent is negative then it's a hanging indent.\\n  const align = styles.textAlign === \\\"right\\\" ? \\\"right\\\" : \\\"left\\\";\\n  const name = \\\"padding\\\" + (align === \\\"left\\\" ? \\\"Left\\\" : \\\"Right\\\");\\n  const padding = getMeasurement(styles[name], \\\"0px\\\");\\n  styles[name] = `${padding - indent}px`;\\n}\\n\\nfunction setAccess(node, classNames) {\\n  switch (node.access) {\\n    case \\\"nonInteractive\\\":\\n      classNames.push(\\\"xfaNonInteractive\\\");\\n      break;\\n    case \\\"readOnly\\\":\\n      classNames.push(\\\"xfaReadOnly\\\");\\n      break;\\n    case \\\"protected\\\":\\n      classNames.push(\\\"xfaDisabled\\\");\\n      break;\\n  }\\n}\\n\\nfunction isPrintOnly(node) {\\n  return (\\n    node.relevant.length > 0 &&\\n    !node.relevant[0].excluded &&\\n    node.relevant[0].viewname === \\\"print\\\"\\n  );\\n}\\n\\nfunction getCurrentPara(node) {\\n  const stack = node[$getTemplateRoot]()[$extra].paraStack;\\n  return stack.length ? stack.at(-1) : null;\\n}\\n\\nfunction setPara(node, nodeStyle, value) {\\n  if (value.attributes.class?.includes(\\\"xfaRich\\\")) {\\n    if (nodeStyle) {\\n      if (node.h === \\\"\\\") {\\n        nodeStyle.height = \\\"auto\\\";\\n      }\\n      if (node.w === \\\"\\\") {\\n        nodeStyle.width = \\\"auto\\\";\\n      }\\n    }\\n\\n    const para = getCurrentPara(node);\\n    if (para) {\\n      \u002F\u002F By definition exData are external data so para\\n      \u002F\u002F has no effect on it.\\n      const valueStyle = value.attributes.style;\\n      valueStyle.display = \\\"flex\\\";\\n      valueStyle.flexDirection = \\\"column\\\";\\n      switch (para.vAlign) {\\n        case \\\"top\\\":\\n          valueStyle.justifyContent = \\\"start\\\";\\n          break;\\n        case \\\"bottom\\\":\\n          valueStyle.justifyContent = \\\"end\\\";\\n          break;\\n        case \\\"middle\\\":\\n          valueStyle.justifyContent = \\\"center\\\";\\n          break;\\n      }\\n\\n      const paraStyle = para[$toStyle]();\\n      for (const [key, val] of Object.entries(paraStyle)) {\\n        if (!(key in valueStyle)) {\\n          valueStyle[key] = val;\\n        }\\n      }\\n    }\\n  }\\n}\\n\\nfunction setFontFamily(xfaFont, node, fontFinder, style) {\\n  if (!fontFinder) {\\n    \u002F\u002F The font cannot be found in the pdf so use the default one.\\n    delete style.fontFamily;\\n    return;\\n  }\\n\\n  const name = stripQuotes(xfaFont.typeface);\\n  style.fontFamily = `\\\"${name}\\\"`;\\n\\n  const typeface = fontFinder.find(name);\\n  if (typeface) {\\n    const { fontFamily } = typeface.regular.cssFontInfo;\\n    if (fontFamily !== name) {\\n      style.fontFamily = `\\\"${fontFamily}\\\"`;\\n    }\\n\\n    const para = getCurrentPara(node);\\n    if (para && para.lineHeight !== \\\"\\\") {\\n      return;\\n    }\\n\\n    if (style.lineHeight) {\\n      \u002F\u002F Already something so don't overwrite.\\n      return;\\n    }\\n\\n    const pdfFont = selectFont(xfaFont, typeface);\\n    if (pdfFont) {\\n      style.lineHeight = Math.max(1.2, pdfFont.lineHeight);\\n    }\\n  }\\n}\\n\\nfunction fixURL(str) {\\n  const absoluteUrl = createValidAbsoluteUrl(str, \u002F* baseUrl = *\u002F null, {\\n    addDefaultProtocol: true,\\n    tryConvertEncoding: true,\\n  });\\n  return absoluteUrl ? absoluteUrl.href : null;\\n}\\n\\nexport {\\n  computeBbox,\\n  createWrapper,\\n  fixDimensions,\\n  fixTextIndent,\\n  fixURL,\\n  isPrintOnly,\\n  layoutClass,\\n  layoutNode,\\n  measureToString,\\n  setAccess,\\n  setFontFamily,\\n  setMinMaxDimensions,\\n  setPara,\\n  toStyle,\\n};\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  $extra,\\n  $flushHTML,\\n  $getSubformParent,\\n  $getTemplateRoot,\\n  $isSplittable,\\n  $isThereMoreWidth,\\n} from \\\".\u002Fsymbol_utils.js\\\";\\nimport { measureToString } from \\\".\u002Fhtml_utils.js\\\";\\n\\n\u002F\u002F Subform and ExclGroup have a layout so they share these functions.\\n\\n\u002F**\\n * How layout works ?\\n *\\n * A container has an initial space (with a width and a height) to fit in,\\n * which means that once all the children have been added then\\n * the total width\u002Fheight must be lower than the given ones in\\n * the initial space.\\n * So if the container has known dimensions and these ones are ok with the\\n * space then continue else we return HTMLResult.FAILURE: it's up to the\\n * parent to deal with this failure (e.g. if parent layout is lr-tb and\\n * we fail to add a child at end of line (lr) then we try to add it on the\\n * next line).\\n * And then we run through the children, each child gets its initial space\\n * in calling its parent $getAvailableSpace method\\n * (see _filteredChildrenGenerator and $childrenToHTML in xfa_object.js)\\n * then we try to layout child in its space. If everything is ok then we add\\n * the result to its parent through $addHTML which will recompute the available\\n * space in parent according to its layout property else we return\\n * HTMLResult.Failure.\\n * Before a failure some children may have been layed out: they've been saved in\\n * [$extra].children and [$extra] has properties generator and failingNode\\n * in order to save the state where we were before a failure.\\n * This [$extra].children property is useful when a container has to be splited.\\n * So if a container is unbreakable, we must delete its [$extra] property before\\n * returning.\\n *\u002F\\n\\nfunction createLine(node, children) {\\n  return {\\n    name: \\\"div\\\",\\n    attributes: {\\n      class: [node.layout === \\\"lr-tb\\\" ? \\\"xfaLr\\\" : \\\"xfaRl\\\"],\\n    },\\n    children,\\n  };\\n}\\n\\nfunction flushHTML(node) {\\n  if (!node[$extra]) {\\n    return null;\\n  }\\n\\n  const attributes = node[$extra].attributes;\\n  const html = {\\n    name: \\\"div\\\",\\n    attributes,\\n    children: node[$extra].children,\\n  };\\n\\n  if (node[$extra].failingNode) {\\n    const htmlFromFailing = node[$extra].failingNode[$flushHTML]();\\n    if (htmlFromFailing) {\\n      if (node.layout.endsWith(\\\"-tb\\\")) {\\n        html.children.push(createLine(node, [htmlFromFailing]));\\n      } else {\\n        html.children.push(htmlFromFailing);\\n      }\\n    }\\n  }\\n\\n  if (html.children.length === 0) {\\n    return null;\\n  }\\n\\n  return html;\\n}\\n\\nfunction addHTML(node, html, bbox) {\\n  const extra = node[$extra];\\n  const availableSpace = extra.availableSpace;\\n\\n  const [x, y, w, h] = bbox;\\n  switch (node.layout) {\\n    case \\\"position\\\": {\\n      extra.width = Math.max(extra.width, x + w);\\n      extra.height = Math.max(extra.height, y + h);\\n      extra.children.push(html);\\n      break;\\n    }\\n    case \\\"lr-tb\\\":\\n    case \\\"rl-tb\\\":\\n      if (!extra.line || extra.attempt === 1) {\\n        extra.line = createLine(node, []);\\n        extra.children.push(extra.line);\\n        extra.numberInLine = 0;\\n      }\\n\\n      extra.numberInLine += 1;\\n      extra.line.children.push(html);\\n\\n      if (extra.attempt === 0) {\\n        \u002F\u002F Add the element on the line\\n        extra.currentWidth += w;\\n        extra.height = Math.max(extra.height, extra.prevHeight + h);\\n      } else {\\n        extra.currentWidth = w;\\n        extra.prevHeight = extra.height;\\n        extra.height += h;\\n\\n        \u002F\u002F The element has been added on a new line so switch to line mode now.\\n        extra.attempt = 0;\\n      }\\n      extra.width = Math.max(extra.width, extra.currentWidth);\\n      break;\\n    case \\\"rl-row\\\":\\n    case \\\"row\\\": {\\n      extra.children.push(html);\\n      extra.width += w;\\n      extra.height = Math.max(extra.height, h);\\n      const height = measureToString(extra.height);\\n      for (const child of extra.children) {\\n        child.attributes.style.height = height;\\n      }\\n      break;\\n    }\\n    case \\\"table\\\": {\\n      extra.width = Math.min(availableSpace.width, Math.max(extra.width, w));\\n      extra.height += h;\\n      extra.children.push(html);\\n      break;\\n    }\\n    case \\\"tb\\\": {\\n      \u002F\u002F Even if the subform can possibly take all the available width,\\n      \u002F\u002F we must compute the final width as it is in order to be able\\n      \u002F\u002F for example to center the subform within its parent.\\n      extra.width = Math.min(availableSpace.width, Math.max(extra.width, w));\\n      extra.height += h;\\n      extra.children.push(html);\\n      break;\\n    }\\n  }\\n}\\n\\nfunction getAvailableSpace(node) {\\n  const availableSpace = node[$extra].availableSpace;\\n  const marginV = node.margin\\n    ? node.margin.topInset + node.margin.bottomInset\\n    : 0;\\n  const marginH = node.margin\\n    ? node.margin.leftInset + node.margin.rightInset\\n    : 0;\\n\\n  switch (node.layout) {\\n    case \\\"lr-tb\\\":\\n    case \\\"rl-tb\\\":\\n      if (node[$extra].attempt === 0) {\\n        return {\\n          width: availableSpace.width - marginH - node[$extra].currentWidth,\\n          height: availableSpace.height - marginV - node[$extra].prevHeight,\\n        };\\n      }\\n      return {\\n        width: availableSpace.width - marginH,\\n        height: availableSpace.height - marginV - node[$extra].height,\\n      };\\n    case \\\"rl-row\\\":\\n    case \\\"row\\\":\\n      const width = node[$extra].columnWidths\\n        .slice(node[$extra].currentColumn)\\n        .reduce((a, x) => a + x);\\n      return { width, height: availableSpace.height - marginH };\\n    case \\\"table\\\":\\n    case \\\"tb\\\":\\n      return {\\n        width: availableSpace.width - marginH,\\n        height: availableSpace.height - marginV - node[$extra].height,\\n      };\\n    case \\\"position\\\":\\n    default:\\n      return availableSpace;\\n  }\\n}\\n\\nfunction getTransformedBBox(node) {\\n  \u002F\u002F Take into account rotation and anchor to get the real bounding box.\\n  let w = node.w === \\\"\\\" ? NaN : node.w;\\n  let h = node.h === \\\"\\\" ? NaN : node.h;\\n  let [centerX, centerY] = [0, 0];\\n  switch (node.anchorType || \\\"\\\") {\\n    case \\\"bottomCenter\\\":\\n      [centerX, centerY] = [w \u002F 2, h];\\n      break;\\n    case \\\"bottomLeft\\\":\\n      [centerX, centerY] = [0, h];\\n      break;\\n    case \\\"bottomRight\\\":\\n      [centerX, centerY] = [w, h];\\n      break;\\n    case \\\"middleCenter\\\":\\n      [centerX, centerY] = [w \u002F 2, h \u002F 2];\\n      break;\\n    case \\\"middleLeft\\\":\\n      [centerX, centerY] = [0, h \u002F 2];\\n      break;\\n    case \\\"middleRight\\\":\\n      [centerX, centerY] = [w, h \u002F 2];\\n      break;\\n    case \\\"topCenter\\\":\\n      [centerX, centerY] = [w \u002F 2, 0];\\n      break;\\n    case \\\"topRight\\\":\\n      [centerX, centerY] = [w, 0];\\n      break;\\n  }\\n\\n  let x, y;\\n  switch (node.rotate || 0) {\\n    case 0:\\n      [x, y] = [-centerX, -centerY];\\n      break;\\n    case 90:\\n      [x, y] = [-centerY, centerX];\\n      [w, h] = [h, -w];\\n      break;\\n    case 180:\\n      [x, y] = [centerX, centerY];\\n      [w, h] = [-w, -h];\\n      break;\\n    case 270:\\n      [x, y] = [centerY, -centerX];\\n      [w, h] = [-h, w];\\n      break;\\n  }\\n\\n  return [\\n    node.x + x + Math.min(0, w),\\n    node.y + y + Math.min(0, h),\\n    Math.abs(w),\\n    Math.abs(h),\\n  ];\\n}\\n\\n\u002F**\\n * Returning true means that the node will be layed out\\n * else the layout will go to its next step (changing of line\\n * in case of lr-tb or changing content area...).\\n *\u002F\\nfunction checkDimensions(node, space) {\\n  if (node[$getTemplateRoot]()[$extra].firstUnsplittable === null) {\\n    return true;\\n  }\\n\\n  if (node.w === 0 || node.h === 0) {\\n    return true;\\n  }\\n\\n  const ERROR = 2;\\n  const parent = node[$getSubformParent]();\\n  const attempt = parent[$extra]?.attempt || 0;\\n\\n  const [, y, w, h] = getTransformedBBox(node);\\n  switch (parent.layout) {\\n    case \\\"lr-tb\\\":\\n    case \\\"rl-tb\\\":\\n      if (attempt === 0) {\\n        \u002F\u002F Try to put an element in the line.\\n\\n        if (!node[$getTemplateRoot]()[$extra].noLayoutFailure) {\\n          if (node.h !== \\\"\\\" && Math.round(h - space.height) > ERROR) {\\n            \u002F\u002F Not enough height.\\n            return false;\\n          }\\n\\n          if (node.w !== \\\"\\\") {\\n            if (Math.round(w - space.width) \u003C= ERROR) {\\n              return true;\\n            }\\n            if (parent[$extra].numberInLine === 0) {\\n              return space.height > ERROR;\\n            }\\n\\n            return false;\\n          }\\n\\n          return space.width > ERROR;\\n        }\\n\\n        \u002F\u002F No layout failure.\\n\\n        \u002F\u002F Put the element on the line but we can fail\\n        \u002F\u002F and then in the second step (next line) we'll accept.\\n        if (node.w !== \\\"\\\") {\\n          return Math.round(w - space.width) \u003C= ERROR;\\n        }\\n\\n        return space.width > ERROR;\\n      }\\n\\n      \u002F\u002F Second attempt: try to put the element on the next line.\\n\\n      if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\\n        \u002F\u002F We cannot fail.\\n        return true;\\n      }\\n\\n      if (node.h !== \\\"\\\" && Math.round(h - space.height) > ERROR) {\\n        return false;\\n      }\\n\\n      if (node.w === \\\"\\\" || Math.round(w - space.width) \u003C= ERROR) {\\n        return space.height > ERROR;\\n      }\\n\\n      if (parent[$isThereMoreWidth]()) {\\n        return false;\\n      }\\n\\n      return space.height > ERROR;\\n    case \\\"table\\\":\\n    case \\\"tb\\\":\\n      if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\\n        return true;\\n      }\\n\\n      \u002F\u002F If the node has a height then check if it's fine with available height.\\n      \u002F\u002F If the node is breakable then we can return true.\\n      if (node.h !== \\\"\\\" && !node[$isSplittable]()) {\\n        return Math.round(h - space.height) \u003C= ERROR;\\n      }\\n      \u002F\u002F Else wait and see: this node will be layed out itself\\n      \u002F\u002F in the provided space and maybe a children won't fit.\\n\\n      if (node.w === \\\"\\\" || Math.round(w - space.width) \u003C= ERROR) {\\n        return space.height > ERROR;\\n      }\\n\\n      if (parent[$isThereMoreWidth]()) {\\n        return false;\\n      }\\n\\n      return space.height > ERROR;\\n    case \\\"position\\\":\\n      if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\\n        return true;\\n      }\\n\\n      if (node.h === \\\"\\\" || Math.round(h + y - space.height) \u003C= ERROR) {\\n        return true;\\n      }\\n\\n      const area = node[$getTemplateRoot]()[$extra].currentContentArea;\\n      return h + y > area.h;\\n    case \\\"rl-row\\\":\\n    case \\\"row\\\":\\n      if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\\n        return true;\\n      }\\n\\n      if (node.h !== \\\"\\\") {\\n        return Math.round(h - space.height) \u003C= ERROR;\\n      }\\n      return true;\\n    default:\\n      \u002F\u002F No layout, so accept everything.\\n      return true;\\n  }\\n}\\n\\nexport { addHTML, checkDimensions, flushHTML, getAvailableSpace };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  $acceptWhitespace,\\n  $addHTML,\\n  $appendChild,\\n  $childrenToHTML,\\n  $clean,\\n  $cleanPage,\\n  $content,\\n  $data,\\n  $extra,\\n  $finalize,\\n  $flushHTML,\\n  $getAvailableSpace,\\n  $getChildren,\\n  $getContainedChildren,\\n  $getExtra,\\n  $getNextPage,\\n  $getParent,\\n  $getSubformParent,\\n  $getTemplateRoot,\\n  $globalData,\\n  $hasSettableValue,\\n  $ids,\\n  $isBindable,\\n  $isCDATAXml,\\n  $isSplittable,\\n  $isThereMoreWidth,\\n  $isTransparent,\\n  $isUsable,\\n  $namespaceId,\\n  $nodeName,\\n  $onChild,\\n  $onText,\\n  $popPara,\\n  $pushPara,\\n  $removeChild,\\n  $searchNode,\\n  $setSetAttributes,\\n  $setValue,\\n  $tabIndex,\\n  $text,\\n  $toHTML,\\n  $toPages,\\n  $toStyle,\\n  $uid,\\n} from \\\".\u002Fsymbol_utils.js\\\";\\nimport { $buildXFAObject, NamespaceIds } from \\\".\u002Fnamespaces.js\\\";\\nimport {\\n  addHTML,\\n  checkDimensions,\\n  flushHTML,\\n  getAvailableSpace,\\n} from \\\".\u002Flayout.js\\\";\\nimport {\\n  computeBbox,\\n  createWrapper,\\n  fixDimensions,\\n  fixTextIndent,\\n  fixURL,\\n  isPrintOnly,\\n  layoutClass,\\n  layoutNode,\\n  measureToString,\\n  setAccess,\\n  setFontFamily,\\n  setMinMaxDimensions,\\n  setPara,\\n  toStyle,\\n} from \\\".\u002Fhtml_utils.js\\\";\\nimport {\\n  ContentObject,\\n  Option01,\\n  OptionObject,\\n  StringObject,\\n  XFAObject,\\n  XFAObjectArray,\\n} from \\\".\u002Fxfa_object.js\\\";\\nimport {\\n  getBBox,\\n  getColor,\\n  getFloat,\\n  getInteger,\\n  getKeyword,\\n  getMeasurement,\\n  getRatio,\\n  getRelevant,\\n  getStringOption,\\n  HTMLResult,\\n} from \\\".\u002Futils.js\\\";\\nimport { stringToBytes, Util, warn } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport { getMetrics } from \\\".\u002Ffonts.js\\\";\\nimport { recoverJsURL } from \\\"..\u002Fcore_utils.js\\\";\\nimport { searchNode } from \\\".\u002Fsom.js\\\";\\n\\nconst TEMPLATE_NS_ID = NamespaceIds.template.id;\\nconst SVG_NS = \\\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\\\";\\n\\n\u002F\u002F In case of lr-tb (and rl-tb) layouts, we try:\\n\u002F\u002F  - to put the container at the end of a line\\n\u002F\u002F  - and if it fails we try on the next line.\\n\u002F\u002F If both tries failed then it's up to the parent\\n\u002F\u002F to handle the situation.\\nconst MAX_ATTEMPTS_FOR_LRTB_LAYOUT = 2;\\n\\n\u002F\u002F It's possible to have a bug in the layout and so as\\n\u002F\u002F a consequence we could loop for ever in Template::toHTML()\\n\u002F\u002F so in order to avoid that (and avoid a OOM crash) we break\\n\u002F\u002F the loop after having MAX_EMPTY_PAGES empty pages.\\nconst MAX_EMPTY_PAGES = 3;\\n\\n\u002F\u002F Default value to start with for the tabIndex property.\\nconst DEFAULT_TAB_INDEX = 5000;\\n\\nconst HEADING_PATTERN = \u002F^H(\\\\d+)$\u002F;\\n\\n\u002F\u002F Allowed mime types for images\\nconst MIMES = new Set([\\n  \\\"image\u002Fgif\\\",\\n  \\\"image\u002Fjpeg\\\",\\n  \\\"image\u002Fjpg\\\",\\n  \\\"image\u002Fpjpeg\\\",\\n  \\\"image\u002Fpng\\\",\\n  \\\"image\u002Fapng\\\",\\n  \\\"image\u002Fx-png\\\",\\n  \\\"image\u002Fbmp\\\",\\n  \\\"image\u002Fx-ms-bmp\\\",\\n  \\\"image\u002Ftiff\\\",\\n  \\\"image\u002Ftif\\\",\\n  \\\"application\u002Foctet-stream\\\",\\n]);\\n\\nconst IMAGES_HEADERS = [\\n  [[0x42, 0x4d], \\\"image\u002Fbmp\\\"],\\n  [[0xff, 0xd8, 0xff], \\\"image\u002Fjpeg\\\"],\\n  [[0x49, 0x49, 0x2a, 0x00], \\\"image\u002Ftiff\\\"],\\n  [[0x4d, 0x4d, 0x00, 0x2a], \\\"image\u002Ftiff\\\"],\\n  [[0x47, 0x49, 0x46, 0x38, 0x39, 0x61], \\\"image\u002Fgif\\\"],\\n  [[0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a], \\\"image\u002Fpng\\\"],\\n];\\n\\nfunction getBorderDims(node) {\\n  if (!node || !node.border) {\\n    return { w: 0, h: 0 };\\n  }\\n\\n  const borderExtra = node.border[$getExtra]();\\n  if (!borderExtra) {\\n    return { w: 0, h: 0 };\\n  }\\n\\n  return {\\n    w:\\n      borderExtra.widths[0] +\\n      borderExtra.widths[2] +\\n      borderExtra.insets[0] +\\n      borderExtra.insets[2],\\n    h:\\n      borderExtra.widths[1] +\\n      borderExtra.widths[3] +\\n      borderExtra.insets[1] +\\n      borderExtra.insets[3],\\n  };\\n}\\n\\nfunction hasMargin(node) {\\n  return (\\n    node.margin &&\\n    (node.margin.topInset ||\\n      node.margin.rightInset ||\\n      node.margin.bottomInset ||\\n      node.margin.leftInset)\\n  );\\n}\\n\\nfunction _setValue(templateNode, value) {\\n  if (!templateNode.value) {\\n    const nodeValue = new Value({});\\n    templateNode[$appendChild](nodeValue);\\n    templateNode.value = nodeValue;\\n  }\\n  templateNode.value[$setValue](value);\\n}\\n\\nfunction* getContainedChildren(node) {\\n  for (const child of node[$getChildren]()) {\\n    if (child instanceof SubformSet) {\\n      yield* child[$getContainedChildren]();\\n      continue;\\n    }\\n    yield child;\\n  }\\n}\\n\\nfunction isRequired(node) {\\n  return node.validate?.nullTest === \\\"error\\\";\\n}\\n\\nfunction setTabIndex(node) {\\n  while (node) {\\n    if (!node.traversal) {\\n      node[$tabIndex] = node[$getParent]()[$tabIndex];\\n      return;\\n    }\\n\\n    if (node[$tabIndex]) {\\n      return;\\n    }\\n\\n    let next = null;\\n    for (const child of node.traversal[$getChildren]()) {\\n      if (child.operation === \\\"next\\\") {\\n        next = child;\\n        break;\\n      }\\n    }\\n\\n    if (!next || !next.ref) {\\n      node[$tabIndex] = node[$getParent]()[$tabIndex];\\n      return;\\n    }\\n\\n    const root = node[$getTemplateRoot]();\\n    node[$tabIndex] = ++root[$tabIndex];\\n\\n    const ref = root[$searchNode](next.ref, node);\\n    if (!ref) {\\n      return;\\n    }\\n\\n    node = ref[0];\\n  }\\n}\\n\\nfunction applyAssist(obj, attributes) {\\n  const assist = obj.assist;\\n  if (assist) {\\n    const assistTitle = assist[$toHTML]();\\n    if (assistTitle) {\\n      attributes.title = assistTitle;\\n    }\\n    const role = assist.role;\\n    const match = role.match(HEADING_PATTERN);\\n    if (match) {\\n      const ariaRole = \\\"heading\\\";\\n      const ariaLevel = match[1];\\n      attributes.role = ariaRole;\\n      attributes[\\\"aria-level\\\"] = ariaLevel;\\n    }\\n  }\\n  \u002F\u002F XXX: We could end up in a situation where the obj has a heading role and\\n  \u002F\u002F is also a table. For now prioritize the table role.\\n  if (obj.layout === \\\"table\\\") {\\n    attributes.role = \\\"table\\\";\\n  } else if (obj.layout === \\\"row\\\") {\\n    attributes.role = \\\"row\\\";\\n  } else {\\n    const parent = obj[$getParent]();\\n    if (parent.layout === \\\"row\\\") {\\n      attributes.role = parent.assist?.role === \\\"TH\\\" ? \\\"columnheader\\\" : \\\"cell\\\";\\n    }\\n  }\\n}\\n\\nfunction ariaLabel(obj) {\\n  if (!obj.assist) {\\n    return null;\\n  }\\n  const assist = obj.assist;\\n  if (assist.speak && assist.speak[$content] !== \\\"\\\") {\\n    return assist.speak[$content];\\n  }\\n  if (assist.toolTip) {\\n    return assist.toolTip[$content];\\n  }\\n  \u002F\u002F TODO: support finding the related caption element. See xfa_bug1718037.pdf\\n  \u002F\u002F for an example.\\n  return null;\\n}\\n\\nfunction valueToHtml(value) {\\n  return HTMLResult.success({\\n    name: \\\"div\\\",\\n    attributes: {\\n      class: [\\\"xfaRich\\\"],\\n      style: Object.create(null),\\n    },\\n    children: [\\n      {\\n        name: \\\"span\\\",\\n        attributes: {\\n          style: Object.create(null),\\n        },\\n        value,\\n      },\\n    ],\\n  });\\n}\\n\\nfunction setFirstUnsplittable(node) {\\n  const root = node[$getTemplateRoot]();\\n  if (root[$extra].firstUnsplittable === null) {\\n    root[$extra].firstUnsplittable = node;\\n    root[$extra].noLayoutFailure = true;\\n  }\\n}\\n\\nfunction unsetFirstUnsplittable(node) {\\n  const root = node[$getTemplateRoot]();\\n  if (root[$extra].firstUnsplittable === node) {\\n    root[$extra].noLayoutFailure = false;\\n  }\\n}\\n\\nfunction handleBreak(node) {\\n  if (node[$extra]) {\\n    return false;\\n  }\\n\\n  node[$extra] = Object.create(null);\\n\\n  if (node.targetType === \\\"auto\\\") {\\n    return false;\\n  }\\n\\n  const root = node[$getTemplateRoot]();\\n  let target = null;\\n  if (node.target) {\\n    target = root[$searchNode](node.target, node[$getParent]());\\n    if (!target) {\\n      return false;\\n    }\\n    target = target[0];\\n  }\\n\\n  const { currentPageArea, currentContentArea } = root[$extra];\\n\\n  if (node.targetType === \\\"pageArea\\\") {\\n    if (!(target instanceof PageArea)) {\\n      target = null;\\n    }\\n\\n    if (node.startNew) {\\n      node[$extra].target = target || currentPageArea;\\n      return true;\\n    } else if (target && target !== currentPageArea) {\\n      node[$extra].target = target;\\n      return true;\\n    }\\n\\n    return false;\\n  }\\n\\n  if (!(target instanceof ContentArea)) {\\n    target = null;\\n  }\\n\\n  const pageArea = target && target[$getParent]();\\n\\n  let index;\\n  let nextPageArea = pageArea;\\n  if (node.startNew) {\\n    \u002F\u002F startNew === 1 so we must create a new container (pageArea or\\n    \u002F\u002F contentArea).\\n    if (target) {\\n      const contentAreas = pageArea.contentArea.children;\\n      const indexForCurrent = contentAreas.indexOf(currentContentArea);\\n      const indexForTarget = contentAreas.indexOf(target);\\n      if (indexForCurrent !== -1 && indexForCurrent \u003C indexForTarget) {\\n        \u002F\u002F The next container is after the current container so\\n        \u002F\u002F we can stay on the same page.\\n        nextPageArea = null;\\n      }\\n      index = indexForTarget - 1;\\n    } else {\\n      index = currentPageArea.contentArea.children.indexOf(currentContentArea);\\n    }\\n  } else if (target && target !== currentContentArea) {\\n    const contentAreas = pageArea.contentArea.children;\\n    index = contentAreas.indexOf(target) - 1;\\n    nextPageArea = pageArea === currentPageArea ? null : pageArea;\\n  } else {\\n    return false;\\n  }\\n\\n  node[$extra].target = nextPageArea;\\n  node[$extra].index = index;\\n  return true;\\n}\\n\\nfunction handleOverflow(node, extraNode, space) {\\n  const root = node[$getTemplateRoot]();\\n  const saved = root[$extra].noLayoutFailure;\\n  const savedMethod = extraNode[$getSubformParent];\\n\\n  \u002F\u002F Replace $getSubformParent to emulate that extraNode is just\\n  \u002F\u002F under node.\\n  extraNode[$getSubformParent] = () => node;\\n\\n  root[$extra].noLayoutFailure = true;\\n  const res = extraNode[$toHTML](space);\\n  node[$addHTML](res.html, res.bbox);\\n  root[$extra].noLayoutFailure = saved;\\n  extraNode[$getSubformParent] = savedMethod;\\n}\\n\\nclass AppearanceFilter extends StringObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"appearanceFilter\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\\"optional\\\", \\\"required\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Arc extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"arc\\\", \u002F* hasChildren = *\u002F true);\\n    this.circular = getInteger({\\n      data: attributes.circular,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.hand = getStringOption(attributes.hand, [\\\"even\\\", \\\"left\\\", \\\"right\\\"]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.startAngle = getFloat({\\n      data: attributes.startAngle,\\n      defaultValue: 0,\\n      validate: x => true,\\n    });\\n    this.sweepAngle = getFloat({\\n      data: attributes.sweepAngle,\\n      defaultValue: 360,\\n      validate: x => true,\\n    });\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.edge = null;\\n    this.fill = null;\\n  }\\n\\n  [$toHTML]() {\\n    const edge = this.edge || new Edge({});\\n    const edgeStyle = edge[$toStyle]();\\n    const style = Object.create(null);\\n    if (this.fill?.presence === \\\"visible\\\") {\\n      Object.assign(style, this.fill[$toStyle]());\\n    } else {\\n      style.fill = \\\"transparent\\\";\\n    }\\n    style.strokeWidth = measureToString(\\n      edge.presence === \\\"visible\\\" ? edge.thickness : 0\\n    );\\n    style.stroke = edgeStyle.color;\\n    let arc;\\n    const attributes = {\\n      xmlns: SVG_NS,\\n      style: {\\n        width: \\\"100%\\\",\\n        height: \\\"100%\\\",\\n        overflow: \\\"visible\\\",\\n      },\\n    };\\n\\n    if (this.sweepAngle === 360) {\\n      arc = {\\n        name: \\\"ellipse\\\",\\n        attributes: {\\n          xmlns: SVG_NS,\\n          cx: \\\"50%\\\",\\n          cy: \\\"50%\\\",\\n          rx: \\\"50%\\\",\\n          ry: \\\"50%\\\",\\n          style,\\n        },\\n      };\\n    } else {\\n      const startAngle = (this.startAngle * Math.PI) \u002F 180;\\n      const sweepAngle = (this.sweepAngle * Math.PI) \u002F 180;\\n      const largeArc = this.sweepAngle > 180 ? 1 : 0;\\n      const [x1, y1, x2, y2] = [\\n        50 * (1 + Math.cos(startAngle)),\\n        50 * (1 - Math.sin(startAngle)),\\n        50 * (1 + Math.cos(startAngle + sweepAngle)),\\n        50 * (1 - Math.sin(startAngle + sweepAngle)),\\n      ];\\n\\n      arc = {\\n        name: \\\"path\\\",\\n        attributes: {\\n          xmlns: SVG_NS,\\n          d: `M ${x1} ${y1} A 50 50 0 ${largeArc} 0 ${x2} ${y2}`,\\n          vectorEffect: \\\"non-scaling-stroke\\\",\\n          style,\\n        },\\n      };\\n\\n      Object.assign(attributes, {\\n        viewBox: \\\"0 0 100 100\\\",\\n        preserveAspectRatio: \\\"none\\\",\\n      });\\n    }\\n\\n    const svg = {\\n      name: \\\"svg\\\",\\n      children: [arc],\\n      attributes,\\n    };\\n\\n    const parent = this[$getParent]()[$getParent]();\\n    if (hasMargin(parent)) {\\n      return HTMLResult.success({\\n        name: \\\"div\\\",\\n        attributes: {\\n          style: {\\n            display: \\\"inline\\\",\\n            width: \\\"100%\\\",\\n            height: \\\"100%\\\",\\n          },\\n        },\\n        children: [svg],\\n      });\\n    }\\n\\n    svg.attributes.style.position = \\\"absolute\\\";\\n    return HTMLResult.success(svg);\\n  }\\n}\\n\\nclass Area extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"area\\\", \u002F* hasChildren = *\u002F true);\\n    this.colSpan = getInteger({\\n      data: attributes.colSpan,\\n      defaultValue: 1,\\n      validate: n => n >= 1 || n === -1,\\n    });\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.relevant = getRelevant(attributes.relevant);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.x = getMeasurement(attributes.x, \\\"0pt\\\");\\n    this.y = getMeasurement(attributes.y, \\\"0pt\\\");\\n    this.desc = null;\\n    this.extras = null;\\n    this.area = new XFAObjectArray();\\n    this.draw = new XFAObjectArray();\\n    this.exObject = new XFAObjectArray();\\n    this.exclGroup = new XFAObjectArray();\\n    this.field = new XFAObjectArray();\\n    this.subform = new XFAObjectArray();\\n    this.subformSet = new XFAObjectArray();\\n  }\\n\\n  *[$getContainedChildren]() {\\n    \u002F\u002F This function is overriden in order to fake that subforms under\\n    \u002F\u002F this set are in fact under parent subform.\\n    yield* getContainedChildren(this);\\n  }\\n\\n  [$isTransparent]() {\\n    return true;\\n  }\\n\\n  [$isBindable]() {\\n    return true;\\n  }\\n\\n  [$addHTML](html, bbox) {\\n    const [x, y, w, h] = bbox;\\n    this[$extra].width = Math.max(this[$extra].width, x + w);\\n    this[$extra].height = Math.max(this[$extra].height, y + h);\\n\\n    this[$extra].children.push(html);\\n  }\\n\\n  [$getAvailableSpace]() {\\n    return this[$extra].availableSpace;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    \u002F\u002F TODO: incomplete.\\n    const style = toStyle(this, \\\"position\\\");\\n    const attributes = {\\n      style,\\n      id: this[$uid],\\n      class: [\\\"xfaArea\\\"],\\n    };\\n\\n    if (isPrintOnly(this)) {\\n      attributes.class.push(\\\"xfaPrintOnly\\\");\\n    }\\n\\n    if (this.name) {\\n      attributes.xfaName = this.name;\\n    }\\n\\n    const children = [];\\n    this[$extra] = {\\n      children,\\n      width: 0,\\n      height: 0,\\n      availableSpace,\\n    };\\n\\n    const result = this[$childrenToHTML]({\\n      filter: new Set([\\n        \\\"area\\\",\\n        \\\"draw\\\",\\n        \\\"field\\\",\\n        \\\"exclGroup\\\",\\n        \\\"subform\\\",\\n        \\\"subformSet\\\",\\n      ]),\\n      include: true,\\n    });\\n\\n    if (!result.success) {\\n      if (result.isBreak()) {\\n        return result;\\n      }\\n      \u002F\u002F Nothing to propose for the element which doesn't fit the\\n      \u002F\u002F available space.\\n      delete this[$extra];\\n      return HTMLResult.FAILURE;\\n    }\\n\\n    style.width = measureToString(this[$extra].width);\\n    style.height = measureToString(this[$extra].height);\\n\\n    const html = {\\n      name: \\\"div\\\",\\n      attributes,\\n      children,\\n    };\\n\\n    const bbox = [this.x, this.y, this[$extra].width, this[$extra].height];\\n    delete this[$extra];\\n\\n    return HTMLResult.success(html, bbox);\\n  }\\n}\\n\\nclass Assist extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"assist\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.role = attributes.role || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.speak = null;\\n    this.toolTip = null;\\n  }\\n\\n  [$toHTML]() {\\n    return this.toolTip?.[$content] || null;\\n  }\\n}\\n\\nclass Barcode extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"barcode\\\", \u002F* hasChildren = *\u002F true);\\n    this.charEncoding = getKeyword({\\n      data: attributes.charEncoding\\n        ? attributes.charEncoding.toLowerCase()\\n        : \\\"\\\",\\n      defaultValue: \\\"\\\",\\n      validate: k =>\\n        [\\n          \\\"utf-8\\\",\\n          \\\"big-five\\\",\\n          \\\"fontspecific\\\",\\n          \\\"gbk\\\",\\n          \\\"gb-18030\\\",\\n          \\\"gb-2312\\\",\\n          \\\"ksc-5601\\\",\\n          \\\"none\\\",\\n          \\\"shift-jis\\\",\\n          \\\"ucs-2\\\",\\n          \\\"utf-16\\\",\\n        ].includes(k) || k.match(\u002Fiso-8859-\\\\d{2}\u002F),\\n    });\\n    this.checksum = getStringOption(attributes.checksum, [\\n      \\\"none\\\",\\n      \\\"1mod10\\\",\\n      \\\"1mod10_1mod11\\\",\\n      \\\"2mod10\\\",\\n      \\\"auto\\\",\\n    ]);\\n    this.dataColumnCount = getInteger({\\n      data: attributes.dataColumnCount,\\n      defaultValue: -1,\\n      validate: x => x >= 0,\\n    });\\n    this.dataLength = getInteger({\\n      data: attributes.dataLength,\\n      defaultValue: -1,\\n      validate: x => x >= 0,\\n    });\\n    this.dataPrep = getStringOption(attributes.dataPrep, [\\n      \\\"none\\\",\\n      \\\"flateCompress\\\",\\n    ]);\\n    this.dataRowCount = getInteger({\\n      data: attributes.dataRowCount,\\n      defaultValue: -1,\\n      validate: x => x >= 0,\\n    });\\n    this.endChar = attributes.endChar || \\\"\\\";\\n    this.errorCorrectionLevel = getInteger({\\n      data: attributes.errorCorrectionLevel,\\n      defaultValue: -1,\\n      validate: x => x >= 0 && x \u003C= 8,\\n    });\\n    this.id = attributes.id || \\\"\\\";\\n    this.moduleHeight = getMeasurement(attributes.moduleHeight, \\\"5mm\\\");\\n    this.moduleWidth = getMeasurement(attributes.moduleWidth, \\\"0.25mm\\\");\\n    this.printCheckDigit = getInteger({\\n      data: attributes.printCheckDigit,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.rowColumnRatio = getRatio(attributes.rowColumnRatio);\\n    this.startChar = attributes.startChar || \\\"\\\";\\n    this.textLocation = getStringOption(attributes.textLocation, [\\n      \\\"below\\\",\\n      \\\"above\\\",\\n      \\\"aboveEmbedded\\\",\\n      \\\"belowEmbedded\\\",\\n      \\\"none\\\",\\n    ]);\\n    this.truncate = getInteger({\\n      data: attributes.truncate,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.type = getStringOption(\\n      attributes.type ? attributes.type.toLowerCase() : \\\"\\\",\\n      [\\n        \\\"aztec\\\",\\n        \\\"codabar\\\",\\n        \\\"code2of5industrial\\\",\\n        \\\"code2of5interleaved\\\",\\n        \\\"code2of5matrix\\\",\\n        \\\"code2of5standard\\\",\\n        \\\"code3of9\\\",\\n        \\\"code3of9extended\\\",\\n        \\\"code11\\\",\\n        \\\"code49\\\",\\n        \\\"code93\\\",\\n        \\\"code128\\\",\\n        \\\"code128a\\\",\\n        \\\"code128b\\\",\\n        \\\"code128c\\\",\\n        \\\"code128sscc\\\",\\n        \\\"datamatrix\\\",\\n        \\\"ean8\\\",\\n        \\\"ean8add2\\\",\\n        \\\"ean8add5\\\",\\n        \\\"ean13\\\",\\n        \\\"ean13add2\\\",\\n        \\\"ean13add5\\\",\\n        \\\"ean13pwcd\\\",\\n        \\\"fim\\\",\\n        \\\"logmars\\\",\\n        \\\"maxicode\\\",\\n        \\\"msi\\\",\\n        \\\"pdf417\\\",\\n        \\\"pdf417macro\\\",\\n        \\\"plessey\\\",\\n        \\\"postauscust2\\\",\\n        \\\"postauscust3\\\",\\n        \\\"postausreplypaid\\\",\\n        \\\"postausstandard\\\",\\n        \\\"postukrm4scc\\\",\\n        \\\"postusdpbc\\\",\\n        \\\"postusimb\\\",\\n        \\\"postusstandard\\\",\\n        \\\"postus5zip\\\",\\n        \\\"qrcode\\\",\\n        \\\"rfid\\\",\\n        \\\"rss14\\\",\\n        \\\"rss14expanded\\\",\\n        \\\"rss14limited\\\",\\n        \\\"rss14stacked\\\",\\n        \\\"rss14stackedomni\\\",\\n        \\\"rss14truncated\\\",\\n        \\\"telepen\\\",\\n        \\\"ucc128\\\",\\n        \\\"ucc128random\\\",\\n        \\\"ucc128sscc\\\",\\n        \\\"upca\\\",\\n        \\\"upcaadd2\\\",\\n        \\\"upcaadd5\\\",\\n        \\\"upcapwcd\\\",\\n        \\\"upce\\\",\\n        \\\"upceadd2\\\",\\n        \\\"upceadd5\\\",\\n        \\\"upcean2\\\",\\n        \\\"upcean5\\\",\\n        \\\"upsmaxicode\\\",\\n      ]\\n    );\\n    this.upsMode = getStringOption(attributes.upsMode, [\\n      \\\"usCarrier\\\",\\n      \\\"internationalCarrier\\\",\\n      \\\"secureSymbol\\\",\\n      \\\"standardSymbol\\\",\\n    ]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.wideNarrowRatio = getRatio(attributes.wideNarrowRatio);\\n    this.encrypt = null;\\n    this.extras = null;\\n  }\\n}\\n\\nclass Bind extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"bind\\\", \u002F* hasChildren = *\u002F true);\\n    this.match = getStringOption(attributes.match, [\\n      \\\"once\\\",\\n      \\\"dataRef\\\",\\n      \\\"global\\\",\\n      \\\"none\\\",\\n    ]);\\n    this.ref = attributes.ref || \\\"\\\";\\n    this.picture = null;\\n  }\\n}\\n\\nclass BindItems extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"bindItems\\\");\\n    this.connection = attributes.connection || \\\"\\\";\\n    this.labelRef = attributes.labelRef || \\\"\\\";\\n    this.ref = attributes.ref || \\\"\\\";\\n    this.valueRef = attributes.valueRef || \\\"\\\";\\n  }\\n}\\n\\nclass Bookend extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"bookend\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.leader = attributes.leader || \\\"\\\";\\n    this.trailer = attributes.trailer || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass BooleanElement extends Option01 {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"boolean\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    return valueToHtml(this[$content] === 1 ? \\\"1\\\" : \\\"0\\\");\\n  }\\n}\\n\\nclass Border extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"border\\\", \u002F* hasChildren = *\u002F true);\\n    this.break = getStringOption(attributes.break, [\\\"close\\\", \\\"open\\\"]);\\n    this.hand = getStringOption(attributes.hand, [\\\"even\\\", \\\"left\\\", \\\"right\\\"]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.presence = getStringOption(attributes.presence, [\\n      \\\"visible\\\",\\n      \\\"hidden\\\",\\n      \\\"inactive\\\",\\n      \\\"invisible\\\",\\n    ]);\\n    this.relevant = getRelevant(attributes.relevant);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.corner = new XFAObjectArray(4);\\n    this.edge = new XFAObjectArray(4);\\n    this.extras = null;\\n    this.fill = null;\\n    this.margin = null;\\n  }\\n\\n  [$getExtra]() {\\n    if (!this[$extra]) {\\n      const edges = this.edge.children.slice();\\n      if (edges.length \u003C 4) {\\n        const defaultEdge = edges.at(-1) || new Edge({});\\n        for (let i = edges.length; i \u003C 4; i++) {\\n          edges.push(defaultEdge);\\n        }\\n      }\\n\\n      const widths = edges.map(edge => edge.thickness);\\n      const insets = [0, 0, 0, 0];\\n      if (this.margin) {\\n        insets[0] = this.margin.topInset;\\n        insets[1] = this.margin.rightInset;\\n        insets[2] = this.margin.bottomInset;\\n        insets[3] = this.margin.leftInset;\\n      }\\n      this[$extra] = { widths, insets, edges };\\n    }\\n    return this[$extra];\\n  }\\n\\n  [$toStyle]() {\\n    \u002F\u002F TODO: incomplete (hand).\\n    const { edges } = this[$getExtra]();\\n    const edgeStyles = edges.map(node => {\\n      const style = node[$toStyle]();\\n      style.color ||= \\\"#000000\\\";\\n      return style;\\n    });\\n\\n    const style = Object.create(null);\\n    if (this.margin) {\\n      Object.assign(style, this.margin[$toStyle]());\\n    }\\n\\n    if (this.fill?.presence === \\\"visible\\\") {\\n      Object.assign(style, this.fill[$toStyle]());\\n    }\\n\\n    if (this.corner.children.some(node => node.radius !== 0)) {\\n      const cornerStyles = this.corner.children.map(node => node[$toStyle]());\\n      if (cornerStyles.length === 2 || cornerStyles.length === 3) {\\n        const last = cornerStyles.at(-1);\\n        for (let i = cornerStyles.length; i \u003C 4; i++) {\\n          cornerStyles.push(last);\\n        }\\n      }\\n\\n      style.borderRadius = cornerStyles.map(s => s.radius).join(\\\" \\\");\\n    }\\n\\n    switch (this.presence) {\\n      case \\\"invisible\\\":\\n      case \\\"hidden\\\":\\n        style.borderStyle = \\\"\\\";\\n        break;\\n      case \\\"inactive\\\":\\n        style.borderStyle = \\\"none\\\";\\n        break;\\n      default:\\n        style.borderStyle = edgeStyles.map(s => s.style).join(\\\" \\\");\\n        break;\\n    }\\n\\n    style.borderWidth = edgeStyles.map(s => s.width).join(\\\" \\\");\\n    style.borderColor = edgeStyles.map(s => s.color).join(\\\" \\\");\\n\\n    return style;\\n  }\\n}\\n\\nclass Break extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"break\\\", \u002F* hasChildren = *\u002F true);\\n    this.after = getStringOption(attributes.after, [\\n      \\\"auto\\\",\\n      \\\"contentArea\\\",\\n      \\\"pageArea\\\",\\n      \\\"pageEven\\\",\\n      \\\"pageOdd\\\",\\n    ]);\\n    this.afterTarget = attributes.afterTarget || \\\"\\\";\\n    this.before = getStringOption(attributes.before, [\\n      \\\"auto\\\",\\n      \\\"contentArea\\\",\\n      \\\"pageArea\\\",\\n      \\\"pageEven\\\",\\n      \\\"pageOdd\\\",\\n    ]);\\n    this.beforeTarget = attributes.beforeTarget || \\\"\\\";\\n    this.bookendLeader = attributes.bookendLeader || \\\"\\\";\\n    this.bookendTrailer = attributes.bookendTrailer || \\\"\\\";\\n    this.id = attributes.id || \\\"\\\";\\n    this.overflowLeader = attributes.overflowLeader || \\\"\\\";\\n    this.overflowTarget = attributes.overflowTarget || \\\"\\\";\\n    this.overflowTrailer = attributes.overflowTrailer || \\\"\\\";\\n    this.startNew = getInteger({\\n      data: attributes.startNew,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n  }\\n}\\n\\nclass BreakAfter extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"breakAfter\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.leader = attributes.leader || \\\"\\\";\\n    this.startNew = getInteger({\\n      data: attributes.startNew,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.target = attributes.target || \\\"\\\";\\n    this.targetType = getStringOption(attributes.targetType, [\\n      \\\"auto\\\",\\n      \\\"contentArea\\\",\\n      \\\"pageArea\\\",\\n    ]);\\n    this.trailer = attributes.trailer || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.script = null;\\n  }\\n}\\n\\nclass BreakBefore extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"breakBefore\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.leader = attributes.leader || \\\"\\\";\\n    this.startNew = getInteger({\\n      data: attributes.startNew,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.target = attributes.target || \\\"\\\";\\n    this.targetType = getStringOption(attributes.targetType, [\\n      \\\"auto\\\",\\n      \\\"contentArea\\\",\\n      \\\"pageArea\\\",\\n    ]);\\n    this.trailer = attributes.trailer || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.script = null;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    this[$extra] = {};\\n    return HTMLResult.FAILURE;\\n  }\\n}\\n\\nclass Button extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"button\\\", \u002F* hasChildren = *\u002F true);\\n    this.highlight = getStringOption(attributes.highlight, [\\n      \\\"inverted\\\",\\n      \\\"none\\\",\\n      \\\"outline\\\",\\n      \\\"push\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    \u002F\u002F TODO: highlight.\\n\\n    const parent = this[$getParent]();\\n    const grandpa = parent[$getParent]();\\n    const htmlButton = {\\n      name: \\\"button\\\",\\n      attributes: {\\n        id: this[$uid],\\n        class: [\\\"xfaButton\\\"],\\n        style: {},\\n      },\\n      children: [],\\n    };\\n\\n    for (const event of grandpa.event.children) {\\n      \u002F\u002F if (true) break;\\n      if (event.activity !== \\\"click\\\" || !event.script) {\\n        continue;\\n      }\\n      const jsURL = recoverJsURL(event.script[$content]);\\n      if (!jsURL) {\\n        continue;\\n      }\\n      const href = fixURL(jsURL.url);\\n      if (!href) {\\n        continue;\\n      }\\n\\n      \u002F\u002F we've an url so generate a \u003Ca>\\n      htmlButton.children.push({\\n        name: \\\"a\\\",\\n        attributes: {\\n          id: \\\"link\\\" + this[$uid],\\n          href,\\n          newWindow: jsURL.newWindow,\\n          class: [\\\"xfaLink\\\"],\\n          style: {},\\n        },\\n        children: [],\\n      });\\n    }\\n\\n    return HTMLResult.success(htmlButton);\\n  }\\n}\\n\\nclass Calculate extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"calculate\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.override = getStringOption(attributes.override, [\\n      \\\"disabled\\\",\\n      \\\"error\\\",\\n      \\\"ignore\\\",\\n      \\\"warning\\\",\\n    ]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n    this.message = null;\\n    this.script = null;\\n  }\\n}\\n\\nclass Caption extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"caption\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.placement = getStringOption(attributes.placement, [\\n      \\\"left\\\",\\n      \\\"bottom\\\",\\n      \\\"inline\\\",\\n      \\\"right\\\",\\n      \\\"top\\\",\\n    ]);\\n    this.presence = getStringOption(attributes.presence, [\\n      \\\"visible\\\",\\n      \\\"hidden\\\",\\n      \\\"inactive\\\",\\n      \\\"invisible\\\",\\n    ]);\\n    this.reserve = Math.ceil(getMeasurement(attributes.reserve));\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n    this.font = null;\\n    this.margin = null;\\n    this.para = null;\\n    this.value = null;\\n  }\\n\\n  [$setValue](value) {\\n    _setValue(this, value);\\n  }\\n\\n  [$getExtra](availableSpace) {\\n    if (!this[$extra]) {\\n      let { width, height } = availableSpace;\\n      switch (this.placement) {\\n        case \\\"left\\\":\\n        case \\\"right\\\":\\n        case \\\"inline\\\":\\n          width = this.reserve \u003C= 0 ? width : this.reserve;\\n          break;\\n        case \\\"top\\\":\\n        case \\\"bottom\\\":\\n          height = this.reserve \u003C= 0 ? height : this.reserve;\\n          break;\\n      }\\n\\n      this[$extra] = layoutNode(this, { width, height });\\n    }\\n    return this[$extra];\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    \u002F\u002F TODO: incomplete.\\n    if (!this.value) {\\n      return HTMLResult.EMPTY;\\n    }\\n\\n    this[$pushPara]();\\n    const value = this.value[$toHTML](availableSpace).html;\\n\\n    if (!value) {\\n      this[$popPara]();\\n      return HTMLResult.EMPTY;\\n    }\\n\\n    const savedReserve = this.reserve;\\n    if (this.reserve \u003C= 0) {\\n      const { w, h } = this[$getExtra](availableSpace);\\n      switch (this.placement) {\\n        case \\\"left\\\":\\n        case \\\"right\\\":\\n        case \\\"inline\\\":\\n          this.reserve = w;\\n          break;\\n        case \\\"top\\\":\\n        case \\\"bottom\\\":\\n          this.reserve = h;\\n          break;\\n      }\\n    }\\n\\n    const children = [];\\n    if (typeof value === \\\"string\\\") {\\n      children.push({\\n        name: \\\"#text\\\",\\n        value,\\n      });\\n    } else {\\n      children.push(value);\\n    }\\n\\n    const style = toStyle(this, \\\"font\\\", \\\"margin\\\", \\\"visibility\\\");\\n    switch (this.placement) {\\n      case \\\"left\\\":\\n      case \\\"right\\\":\\n        if (this.reserve > 0) {\\n          style.width = measureToString(this.reserve);\\n        }\\n        break;\\n      case \\\"top\\\":\\n      case \\\"bottom\\\":\\n        if (this.reserve > 0) {\\n          style.height = measureToString(this.reserve);\\n        }\\n        break;\\n    }\\n\\n    setPara(this, null, value);\\n    this[$popPara]();\\n\\n    this.reserve = savedReserve;\\n\\n    return HTMLResult.success({\\n      name: \\\"div\\\",\\n      attributes: {\\n        style,\\n        class: [\\\"xfaCaption\\\"],\\n      },\\n      children,\\n    });\\n  }\\n}\\n\\nclass Certificate extends StringObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"certificate\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Certificates extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"certificates\\\", \u002F* hasChildren = *\u002F true);\\n    this.credentialServerPolicy = getStringOption(\\n      attributes.credentialServerPolicy,\\n      [\\\"optional\\\", \\\"required\\\"]\\n    );\\n    this.id = attributes.id || \\\"\\\";\\n    this.url = attributes.url || \\\"\\\";\\n    this.urlPolicy = attributes.urlPolicy || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.encryption = null;\\n    this.issuers = null;\\n    this.keyUsage = null;\\n    this.oids = null;\\n    this.signing = null;\\n    this.subjectDNs = null;\\n  }\\n}\\n\\nclass CheckButton extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"checkButton\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.mark = getStringOption(attributes.mark, [\\n      \\\"default\\\",\\n      \\\"check\\\",\\n      \\\"circle\\\",\\n      \\\"cross\\\",\\n      \\\"diamond\\\",\\n      \\\"square\\\",\\n      \\\"star\\\",\\n    ]);\\n    this.shape = getStringOption(attributes.shape, [\\\"square\\\", \\\"round\\\"]);\\n    this.size = getMeasurement(attributes.size, \\\"10pt\\\");\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.border = null;\\n    this.extras = null;\\n    this.margin = null;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    \u002F\u002F TODO: border, shape and mark.\\n\\n    const style = toStyle(\\\"margin\\\");\\n    const size = measureToString(this.size);\\n\\n    style.width = style.height = size;\\n\\n    let type;\\n    let className;\\n    let groupId;\\n    const field = this[$getParent]()[$getParent]();\\n    const items =\\n      (field.items.children.length &&\\n        field.items.children[0][$toHTML]().html) ||\\n      [];\\n    const exportedValue = {\\n      on: (items[0] !== undefined ? items[0] : \\\"on\\\").toString(),\\n      off: (items[1] !== undefined ? items[1] : \\\"off\\\").toString(),\\n    };\\n\\n    const value = field.value?.[$text]() || \\\"off\\\";\\n    const checked = value === exportedValue.on || undefined;\\n    const container = field[$getSubformParent]();\\n    const fieldId = field[$uid];\\n    let dataId;\\n\\n    if (container instanceof ExclGroup) {\\n      groupId = container[$uid];\\n      type = \\\"radio\\\";\\n      className = \\\"xfaRadio\\\";\\n      dataId = container[$data]?.[$uid] || container[$uid];\\n    } else {\\n      type = \\\"checkbox\\\";\\n      className = \\\"xfaCheckbox\\\";\\n      dataId = field[$data]?.[$uid] || field[$uid];\\n    }\\n\\n    const input = {\\n      name: \\\"input\\\",\\n      attributes: {\\n        class: [className],\\n        style,\\n        fieldId,\\n        dataId,\\n        type,\\n        checked,\\n        xfaOn: exportedValue.on,\\n        xfaOff: exportedValue.off,\\n        \\\"aria-label\\\": ariaLabel(field),\\n        \\\"aria-required\\\": false,\\n      },\\n    };\\n\\n    if (groupId) {\\n      input.attributes.name = groupId;\\n    }\\n\\n    if (isRequired(field)) {\\n      input.attributes[\\\"aria-required\\\"] = true;\\n      input.attributes.required = true;\\n    }\\n\\n    return HTMLResult.success({\\n      name: \\\"label\\\",\\n      attributes: {\\n        class: [\\\"xfaLabel\\\"],\\n      },\\n      children: [input],\\n    });\\n  }\\n}\\n\\nclass ChoiceList extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"choiceList\\\", \u002F* hasChildren = *\u002F true);\\n    this.commitOn = getStringOption(attributes.commitOn, [\\\"select\\\", \\\"exit\\\"]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.open = getStringOption(attributes.open, [\\n      \\\"userControl\\\",\\n      \\\"always\\\",\\n      \\\"multiSelect\\\",\\n      \\\"onEntry\\\",\\n    ]);\\n    this.textEntry = getInteger({\\n      data: attributes.textEntry,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.border = null;\\n    this.extras = null;\\n    this.margin = null;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    \u002F\u002F TODO: incomplete.\\n    const style = toStyle(this, \\\"border\\\", \\\"margin\\\");\\n    const ui = this[$getParent]();\\n    const field = ui[$getParent]();\\n    const fontSize = field.font?.size || 10;\\n    const optionStyle = {\\n      fontSize: `calc(${fontSize}px * var(--scale-factor))`,\\n    };\\n    const children = [];\\n\\n    if (field.items.children.length > 0) {\\n      const items = field.items;\\n      let displayedIndex = 0;\\n      let saveIndex = 0;\\n      if (items.children.length === 2) {\\n        displayedIndex = items.children[0].save;\\n        saveIndex = 1 - displayedIndex;\\n      }\\n      const displayed = items.children[displayedIndex][$toHTML]().html;\\n      const values = items.children[saveIndex][$toHTML]().html;\\n\\n      let selected = false;\\n      const value = field.value?.[$text]() || \\\"\\\";\\n      for (let i = 0, ii = displayed.length; i \u003C ii; i++) {\\n        const option = {\\n          name: \\\"option\\\",\\n          attributes: {\\n            value: values[i] || displayed[i],\\n            style: optionStyle,\\n          },\\n          value: displayed[i],\\n        };\\n        if (values[i] === value) {\\n          option.attributes.selected = selected = true;\\n        }\\n        children.push(option);\\n      }\\n\\n      if (!selected) {\\n        children.splice(0, 0, {\\n          name: \\\"option\\\",\\n          attributes: {\\n            hidden: true,\\n            selected: true,\\n          },\\n          value: \\\" \\\",\\n        });\\n      }\\n    }\\n\\n    const selectAttributes = {\\n      class: [\\\"xfaSelect\\\"],\\n      fieldId: field[$uid],\\n      dataId: field[$data]?.[$uid] || field[$uid],\\n      style,\\n      \\\"aria-label\\\": ariaLabel(field),\\n      \\\"aria-required\\\": false,\\n    };\\n\\n    if (isRequired(field)) {\\n      selectAttributes[\\\"aria-required\\\"] = true;\\n      selectAttributes.required = true;\\n    }\\n\\n    if (this.open === \\\"multiSelect\\\") {\\n      selectAttributes.multiple = true;\\n    }\\n\\n    return HTMLResult.success({\\n      name: \\\"label\\\",\\n      attributes: {\\n        class: [\\\"xfaLabel\\\"],\\n      },\\n      children: [\\n        {\\n          name: \\\"select\\\",\\n          children,\\n          attributes: selectAttributes,\\n        },\\n      ],\\n    });\\n  }\\n}\\n\\nclass Color extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"color\\\", \u002F* hasChildren = *\u002F true);\\n    this.cSpace = getStringOption(attributes.cSpace, [\\\"SRGB\\\"]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.value = attributes.value ? getColor(attributes.value) : \\\"\\\";\\n    this.extras = null;\\n  }\\n\\n  [$hasSettableValue]() {\\n    return false;\\n  }\\n\\n  [$toStyle]() {\\n    return this.value\\n      ? Util.makeHexColor(this.value.r, this.value.g, this.value.b)\\n      : null;\\n  }\\n}\\n\\nclass Comb extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"comb\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.numberOfCells = getInteger({\\n      data: attributes.numberOfCells,\\n      defaultValue: 0,\\n      validate: x => x >= 0,\\n    });\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Connect extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"connect\\\", \u002F* hasChildren = *\u002F true);\\n    this.connection = attributes.connection || \\\"\\\";\\n    this.id = attributes.id || \\\"\\\";\\n    this.ref = attributes.ref || \\\"\\\";\\n    this.usage = getStringOption(attributes.usage, [\\n      \\\"exportAndImport\\\",\\n      \\\"exportOnly\\\",\\n      \\\"importOnly\\\",\\n    ]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.picture = null;\\n  }\\n}\\n\\nclass ContentArea extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"contentArea\\\", \u002F* hasChildren = *\u002F true);\\n    this.h = getMeasurement(attributes.h);\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.relevant = getRelevant(attributes.relevant);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.w = getMeasurement(attributes.w);\\n    this.x = getMeasurement(attributes.x, \\\"0pt\\\");\\n    this.y = getMeasurement(attributes.y, \\\"0pt\\\");\\n    this.desc = null;\\n    this.extras = null;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    \u002F\u002F TODO: incomplete.\\n    const left = measureToString(this.x);\\n    const top = measureToString(this.y);\\n\\n    const style = {\\n      left,\\n      top,\\n      width: measureToString(this.w),\\n      height: measureToString(this.h),\\n    };\\n\\n    const classNames = [\\\"xfaContentarea\\\"];\\n\\n    if (isPrintOnly(this)) {\\n      classNames.push(\\\"xfaPrintOnly\\\");\\n    }\\n\\n    return HTMLResult.success({\\n      name: \\\"div\\\",\\n      children: [],\\n      attributes: {\\n        style,\\n        class: classNames,\\n        id: this[$uid],\\n      },\\n    });\\n  }\\n}\\n\\nclass Corner extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"corner\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.inverted = getInteger({\\n      data: attributes.inverted,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.join = getStringOption(attributes.join, [\\\"square\\\", \\\"round\\\"]);\\n    this.presence = getStringOption(attributes.presence, [\\n      \\\"visible\\\",\\n      \\\"hidden\\\",\\n      \\\"inactive\\\",\\n      \\\"invisible\\\",\\n    ]);\\n    this.radius = getMeasurement(attributes.radius);\\n    this.stroke = getStringOption(attributes.stroke, [\\n      \\\"solid\\\",\\n      \\\"dashDot\\\",\\n      \\\"dashDotDot\\\",\\n      \\\"dashed\\\",\\n      \\\"dotted\\\",\\n      \\\"embossed\\\",\\n      \\\"etched\\\",\\n      \\\"lowered\\\",\\n      \\\"raised\\\",\\n    ]);\\n    this.thickness = getMeasurement(attributes.thickness, \\\"0.5pt\\\");\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.color = null;\\n    this.extras = null;\\n  }\\n\\n  [$toStyle]() {\\n    \u002F\u002F In using CSS it's only possible to handle radius\\n    \u002F\u002F (at least with basic css).\\n    \u002F\u002F Is there a real use (interest ?) of all these properties ?\\n    \u002F\u002F Maybe it's possible to implement them using svg and border-image...\\n    \u002F\u002F TODO: implement all the missing properties.\\n    const style = toStyle(this, \\\"visibility\\\");\\n    style.radius = measureToString(this.join === \\\"square\\\" ? 0 : this.radius);\\n    return style;\\n  }\\n}\\n\\nclass DateElement extends ContentObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"date\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n\\n  [$finalize]() {\\n    const date = this[$content].trim();\\n    this[$content] = date ? new Date(date) : null;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    return valueToHtml(this[$content] ? this[$content].toString() : \\\"\\\");\\n  }\\n}\\n\\nclass DateTime extends ContentObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"dateTime\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n\\n  [$finalize]() {\\n    const date = this[$content].trim();\\n    this[$content] = date ? new Date(date) : null;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    return valueToHtml(this[$content] ? this[$content].toString() : \\\"\\\");\\n  }\\n}\\n\\nclass DateTimeEdit extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"dateTimeEdit\\\", \u002F* hasChildren = *\u002F true);\\n    this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\\n      \\\"auto\\\",\\n      \\\"off\\\",\\n      \\\"on\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.picker = getStringOption(attributes.picker, [\\\"host\\\", \\\"none\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.border = null;\\n    this.comb = null;\\n    this.extras = null;\\n    this.margin = null;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    \u002F\u002F TODO: incomplete.\\n    \u002F\u002F When the picker is host we should use type=date for the input\\n    \u002F\u002F but we need to put the buttons outside the text-field.\\n    const style = toStyle(this, \\\"border\\\", \\\"font\\\", \\\"margin\\\");\\n    const field = this[$getParent]()[$getParent]();\\n    const html = {\\n      name: \\\"input\\\",\\n      attributes: {\\n        type: \\\"text\\\",\\n        fieldId: field[$uid],\\n        dataId: field[$data]?.[$uid] || field[$uid],\\n        class: [\\\"xfaTextfield\\\"],\\n        style,\\n        \\\"aria-label\\\": ariaLabel(field),\\n        \\\"aria-required\\\": false,\\n      },\\n    };\\n\\n    if (isRequired(field)) {\\n      html.attributes[\\\"aria-required\\\"] = true;\\n      html.attributes.required = true;\\n    }\\n\\n    return HTMLResult.success({\\n      name: \\\"label\\\",\\n      attributes: {\\n        class: [\\\"xfaLabel\\\"],\\n      },\\n      children: [html],\\n    });\\n  }\\n}\\n\\nclass Decimal extends ContentObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"decimal\\\");\\n    this.fracDigits = getInteger({\\n      data: attributes.fracDigits,\\n      defaultValue: 2,\\n      validate: x => true,\\n    });\\n    this.id = attributes.id || \\\"\\\";\\n    this.leadDigits = getInteger({\\n      data: attributes.leadDigits,\\n      defaultValue: -1,\\n      validate: x => true,\\n    });\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n\\n  [$finalize]() {\\n    const number = parseFloat(this[$content].trim());\\n    this[$content] = isNaN(number) ? null : number;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    return valueToHtml(\\n      this[$content] !== null ? this[$content].toString() : \\\"\\\"\\n    );\\n  }\\n}\\n\\nclass DefaultUi extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"defaultUi\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n  }\\n}\\n\\nclass Desc extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"desc\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.boolean = new XFAObjectArray();\\n    this.date = new XFAObjectArray();\\n    this.dateTime = new XFAObjectArray();\\n    this.decimal = new XFAObjectArray();\\n    this.exData = new XFAObjectArray();\\n    this.float = new XFAObjectArray();\\n    this.image = new XFAObjectArray();\\n    this.integer = new XFAObjectArray();\\n    this.text = new XFAObjectArray();\\n    this.time = new XFAObjectArray();\\n  }\\n}\\n\\nclass DigestMethod extends OptionObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"digestMethod\\\", [\\n      \\\"\\\",\\n      \\\"SHA1\\\",\\n      \\\"SHA256\\\",\\n      \\\"SHA512\\\",\\n      \\\"RIPEMD160\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass DigestMethods extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"digestMethods\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\\"optional\\\", \\\"required\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.digestMethod = new XFAObjectArray();\\n  }\\n}\\n\\nclass Draw extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"draw\\\", \u002F* hasChildren = *\u002F true);\\n    this.anchorType = getStringOption(attributes.anchorType, [\\n      \\\"topLeft\\\",\\n      \\\"bottomCenter\\\",\\n      \\\"bottomLeft\\\",\\n      \\\"bottomRight\\\",\\n      \\\"middleCenter\\\",\\n      \\\"middleLeft\\\",\\n      \\\"middleRight\\\",\\n      \\\"topCenter\\\",\\n      \\\"topRight\\\",\\n    ]);\\n    this.colSpan = getInteger({\\n      data: attributes.colSpan,\\n      defaultValue: 1,\\n      validate: n => n >= 1 || n === -1,\\n    });\\n    this.h = attributes.h ? getMeasurement(attributes.h) : \\\"\\\";\\n    this.hAlign = getStringOption(attributes.hAlign, [\\n      \\\"left\\\",\\n      \\\"center\\\",\\n      \\\"justify\\\",\\n      \\\"justifyAll\\\",\\n      \\\"radix\\\",\\n      \\\"right\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.locale = attributes.locale || \\\"\\\";\\n    this.maxH = getMeasurement(attributes.maxH, \\\"0pt\\\");\\n    this.maxW = getMeasurement(attributes.maxW, \\\"0pt\\\");\\n    this.minH = getMeasurement(attributes.minH, \\\"0pt\\\");\\n    this.minW = getMeasurement(attributes.minW, \\\"0pt\\\");\\n    this.name = attributes.name || \\\"\\\";\\n    this.presence = getStringOption(attributes.presence, [\\n      \\\"visible\\\",\\n      \\\"hidden\\\",\\n      \\\"inactive\\\",\\n      \\\"invisible\\\",\\n    ]);\\n    this.relevant = getRelevant(attributes.relevant);\\n    this.rotate = getInteger({\\n      data: attributes.rotate,\\n      defaultValue: 0,\\n      validate: x => x % 90 === 0,\\n    });\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.w = attributes.w ? getMeasurement(attributes.w) : \\\"\\\";\\n    this.x = getMeasurement(attributes.x, \\\"0pt\\\");\\n    this.y = getMeasurement(attributes.y, \\\"0pt\\\");\\n    this.assist = null;\\n    this.border = null;\\n    this.caption = null;\\n    this.desc = null;\\n    this.extras = null;\\n    this.font = null;\\n    this.keep = null;\\n    this.margin = null;\\n    this.para = null;\\n    this.traversal = null;\\n    this.ui = null;\\n    this.value = null;\\n    this.setProperty = new XFAObjectArray();\\n  }\\n\\n  [$setValue](value) {\\n    _setValue(this, value);\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    setTabIndex(this);\\n\\n    if (this.presence === \\\"hidden\\\" || this.presence === \\\"inactive\\\") {\\n      return HTMLResult.EMPTY;\\n    }\\n\\n    fixDimensions(this);\\n    this[$pushPara]();\\n\\n    \u002F\u002F If at least one dimension is missing and we've a text\\n    \u002F\u002F then we can guess it in laying out the text.\\n    const savedW = this.w;\\n    const savedH = this.h;\\n    const { w, h, isBroken } = layoutNode(this, availableSpace);\\n    if (w && this.w === \\\"\\\") {\\n      \u002F\u002F If the parent layout is lr-tb with a w=100 and we already have a child\\n      \u002F\u002F which takes 90 on the current line.\\n      \u002F\u002F If we have a text with a length (in px) equal to 100 then it'll be\\n      \u002F\u002F splitted into almost 10 chunks: so it won't be nice.\\n      \u002F\u002F So if we've potentially more width to provide in some parent containers\\n      \u002F\u002F let's increase it to give a chance to have a better rendering.\\n      if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) {\\n        this[$popPara]();\\n        return HTMLResult.FAILURE;\\n      }\\n\\n      this.w = w;\\n    }\\n    if (h && this.h === \\\"\\\") {\\n      this.h = h;\\n    }\\n\\n    setFirstUnsplittable(this);\\n    if (!checkDimensions(this, availableSpace)) {\\n      this.w = savedW;\\n      this.h = savedH;\\n      this[$popPara]();\\n      return HTMLResult.FAILURE;\\n    }\\n    unsetFirstUnsplittable(this);\\n\\n    const style = toStyle(\\n      this,\\n      \\\"font\\\",\\n      \\\"hAlign\\\",\\n      \\\"dimensions\\\",\\n      \\\"position\\\",\\n      \\\"presence\\\",\\n      \\\"rotate\\\",\\n      \\\"anchorType\\\",\\n      \\\"border\\\",\\n      \\\"margin\\\"\\n    );\\n\\n    setMinMaxDimensions(this, style);\\n\\n    if (style.margin) {\\n      style.padding = style.margin;\\n      delete style.margin;\\n    }\\n\\n    const classNames = [\\\"xfaDraw\\\"];\\n    if (this.font) {\\n      classNames.push(\\\"xfaFont\\\");\\n    }\\n    if (isPrintOnly(this)) {\\n      classNames.push(\\\"xfaPrintOnly\\\");\\n    }\\n\\n    const attributes = {\\n      style,\\n      id: this[$uid],\\n      class: classNames,\\n    };\\n\\n    if (this.name) {\\n      attributes.xfaName = this.name;\\n    }\\n\\n    const html = {\\n      name: \\\"div\\\",\\n      attributes,\\n      children: [],\\n    };\\n\\n    applyAssist(this, attributes);\\n\\n    const bbox = computeBbox(this, html, availableSpace);\\n\\n    const value = this.value ? this.value[$toHTML](availableSpace).html : null;\\n    if (value === null) {\\n      this.w = savedW;\\n      this.h = savedH;\\n      this[$popPara]();\\n      return HTMLResult.success(createWrapper(this, html), bbox);\\n    }\\n\\n    html.children.push(value);\\n    setPara(this, style, value);\\n\\n    this.w = savedW;\\n    this.h = savedH;\\n\\n    this[$popPara]();\\n    return HTMLResult.success(createWrapper(this, html), bbox);\\n  }\\n}\\n\\nclass Edge extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"edge\\\", \u002F* hasChildren = *\u002F true);\\n    this.cap = getStringOption(attributes.cap, [\\\"square\\\", \\\"butt\\\", \\\"round\\\"]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.presence = getStringOption(attributes.presence, [\\n      \\\"visible\\\",\\n      \\\"hidden\\\",\\n      \\\"inactive\\\",\\n      \\\"invisible\\\",\\n    ]);\\n    this.stroke = getStringOption(attributes.stroke, [\\n      \\\"solid\\\",\\n      \\\"dashDot\\\",\\n      \\\"dashDotDot\\\",\\n      \\\"dashed\\\",\\n      \\\"dotted\\\",\\n      \\\"embossed\\\",\\n      \\\"etched\\\",\\n      \\\"lowered\\\",\\n      \\\"raised\\\",\\n    ]);\\n    this.thickness = getMeasurement(attributes.thickness, \\\"0.5pt\\\");\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.color = null;\\n    this.extras = null;\\n  }\\n\\n  [$toStyle]() {\\n    \u002F\u002F TODO: dashDot & dashDotDot.\\n    const style = toStyle(this, \\\"visibility\\\");\\n    Object.assign(style, {\\n      linecap: this.cap,\\n      width: measureToString(this.thickness),\\n      color: this.color ? this.color[$toStyle]() : \\\"#000000\\\",\\n      style: \\\"\\\",\\n    });\\n\\n    if (this.presence !== \\\"visible\\\") {\\n      style.style = \\\"none\\\";\\n    } else {\\n      switch (this.stroke) {\\n        case \\\"solid\\\":\\n          style.style = \\\"solid\\\";\\n          break;\\n        case \\\"dashDot\\\":\\n          style.style = \\\"dashed\\\";\\n          break;\\n        case \\\"dashDotDot\\\":\\n          style.style = \\\"dashed\\\";\\n          break;\\n        case \\\"dashed\\\":\\n          style.style = \\\"dashed\\\";\\n          break;\\n        case \\\"dotted\\\":\\n          style.style = \\\"dotted\\\";\\n          break;\\n        case \\\"embossed\\\":\\n          style.style = \\\"ridge\\\";\\n          break;\\n        case \\\"etched\\\":\\n          style.style = \\\"groove\\\";\\n          break;\\n        case \\\"lowered\\\":\\n          style.style = \\\"inset\\\";\\n          break;\\n        case \\\"raised\\\":\\n          style.style = \\\"outset\\\";\\n          break;\\n      }\\n    }\\n    return style;\\n  }\\n}\\n\\nclass Encoding extends OptionObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"encoding\\\", [\\n      \\\"adbe.x509.rsa_sha1\\\",\\n      \\\"adbe.pkcs7.detached\\\",\\n      \\\"adbe.pkcs7.sha1\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Encodings extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"encodings\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\\"optional\\\", \\\"required\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.encoding = new XFAObjectArray();\\n  }\\n}\\n\\nclass Encrypt extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"encrypt\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.certificate = null;\\n  }\\n}\\n\\nclass EncryptData extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"encryptData\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.operation = getStringOption(attributes.operation, [\\n      \\\"encrypt\\\",\\n      \\\"decrypt\\\",\\n    ]);\\n    this.target = attributes.target || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.filter = null;\\n    this.manifest = null;\\n  }\\n}\\n\\nclass Encryption extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"encryption\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\\"optional\\\", \\\"required\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.certificate = new XFAObjectArray();\\n  }\\n}\\n\\nclass EncryptionMethod extends OptionObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"encryptionMethod\\\", [\\n      \\\"\\\",\\n      \\\"AES256-CBC\\\",\\n      \\\"TRIPLEDES-CBC\\\",\\n      \\\"AES128-CBC\\\",\\n      \\\"AES192-CBC\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass EncryptionMethods extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"encryptionMethods\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\\"optional\\\", \\\"required\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.encryptionMethod = new XFAObjectArray();\\n  }\\n}\\n\\nclass Event extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"event\\\", \u002F* hasChildren = *\u002F true);\\n    this.activity = getStringOption(attributes.activity, [\\n      \\\"click\\\",\\n      \\\"change\\\",\\n      \\\"docClose\\\",\\n      \\\"docReady\\\",\\n      \\\"enter\\\",\\n      \\\"exit\\\",\\n      \\\"full\\\",\\n      \\\"indexChange\\\",\\n      \\\"initialize\\\",\\n      \\\"mouseDown\\\",\\n      \\\"mouseEnter\\\",\\n      \\\"mouseExit\\\",\\n      \\\"mouseUp\\\",\\n      \\\"postExecute\\\",\\n      \\\"postOpen\\\",\\n      \\\"postPrint\\\",\\n      \\\"postSave\\\",\\n      \\\"postSign\\\",\\n      \\\"postSubmit\\\",\\n      \\\"preExecute\\\",\\n      \\\"preOpen\\\",\\n      \\\"prePrint\\\",\\n      \\\"preSave\\\",\\n      \\\"preSign\\\",\\n      \\\"preSubmit\\\",\\n      \\\"ready\\\",\\n      \\\"validationState\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.listen = getStringOption(attributes.listen, [\\n      \\\"refOnly\\\",\\n      \\\"refAndDescendents\\\",\\n    ]);\\n    this.name = attributes.name || \\\"\\\";\\n    this.ref = attributes.ref || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n\\n    \u002F\u002F One-of properties\\n    this.encryptData = null;\\n    this.execute = null;\\n    this.script = null;\\n    this.signData = null;\\n    this.submit = null;\\n  }\\n}\\n\\nclass ExData extends ContentObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"exData\\\");\\n    this.contentType = attributes.contentType || \\\"\\\";\\n    this.href = attributes.href || \\\"\\\";\\n    this.id = attributes.id || \\\"\\\";\\n    this.maxLength = getInteger({\\n      data: attributes.maxLength,\\n      defaultValue: -1,\\n      validate: x => x >= -1,\\n    });\\n    this.name = attributes.name || \\\"\\\";\\n    this.rid = attributes.rid || \\\"\\\";\\n    this.transferEncoding = getStringOption(attributes.transferEncoding, [\\n      \\\"none\\\",\\n      \\\"base64\\\",\\n      \\\"package\\\",\\n    ]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n\\n  [$isCDATAXml]() {\\n    return this.contentType === \\\"text\u002Fhtml\\\";\\n  }\\n\\n  [$onChild](child) {\\n    if (\\n      this.contentType === \\\"text\u002Fhtml\\\" &&\\n      child[$namespaceId] === NamespaceIds.xhtml.id\\n    ) {\\n      this[$content] = child;\\n      return true;\\n    }\\n\\n    if (this.contentType === \\\"text\u002Fxml\\\") {\\n      this[$content] = child;\\n      return true;\\n    }\\n\\n    return false;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    if (this.contentType !== \\\"text\u002Fhtml\\\" || !this[$content]) {\\n      \u002F\u002F TODO: fix other cases.\\n      return HTMLResult.EMPTY;\\n    }\\n\\n    return this[$content][$toHTML](availableSpace);\\n  }\\n}\\n\\nclass ExObject extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"exObject\\\", \u002F* hasChildren = *\u002F true);\\n    this.archive = attributes.archive || \\\"\\\";\\n    this.classId = attributes.classId || \\\"\\\";\\n    this.codeBase = attributes.codeBase || \\\"\\\";\\n    this.codeType = attributes.codeType || \\\"\\\";\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n    this.boolean = new XFAObjectArray();\\n    this.date = new XFAObjectArray();\\n    this.dateTime = new XFAObjectArray();\\n    this.decimal = new XFAObjectArray();\\n    this.exData = new XFAObjectArray();\\n    this.exObject = new XFAObjectArray();\\n    this.float = new XFAObjectArray();\\n    this.image = new XFAObjectArray();\\n    this.integer = new XFAObjectArray();\\n    this.text = new XFAObjectArray();\\n    this.time = new XFAObjectArray();\\n  }\\n}\\n\\nclass ExclGroup extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"exclGroup\\\", \u002F* hasChildren = *\u002F true);\\n    this.access = getStringOption(attributes.access, [\\n      \\\"open\\\",\\n      \\\"nonInteractive\\\",\\n      \\\"protected\\\",\\n      \\\"readOnly\\\",\\n    ]);\\n    this.accessKey = attributes.accessKey || \\\"\\\";\\n    this.anchorType = getStringOption(attributes.anchorType, [\\n      \\\"topLeft\\\",\\n      \\\"bottomCenter\\\",\\n      \\\"bottomLeft\\\",\\n      \\\"bottomRight\\\",\\n      \\\"middleCenter\\\",\\n      \\\"middleLeft\\\",\\n      \\\"middleRight\\\",\\n      \\\"topCenter\\\",\\n      \\\"topRight\\\",\\n    ]);\\n    this.colSpan = getInteger({\\n      data: attributes.colSpan,\\n      defaultValue: 1,\\n      validate: n => n >= 1 || n === -1,\\n    });\\n    this.h = attributes.h ? getMeasurement(attributes.h) : \\\"\\\";\\n    this.hAlign = getStringOption(attributes.hAlign, [\\n      \\\"left\\\",\\n      \\\"center\\\",\\n      \\\"justify\\\",\\n      \\\"justifyAll\\\",\\n      \\\"radix\\\",\\n      \\\"right\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.layout = getStringOption(attributes.layout, [\\n      \\\"position\\\",\\n      \\\"lr-tb\\\",\\n      \\\"rl-row\\\",\\n      \\\"rl-tb\\\",\\n      \\\"row\\\",\\n      \\\"table\\\",\\n      \\\"tb\\\",\\n    ]);\\n    this.maxH = getMeasurement(attributes.maxH, \\\"0pt\\\");\\n    this.maxW = getMeasurement(attributes.maxW, \\\"0pt\\\");\\n    this.minH = getMeasurement(attributes.minH, \\\"0pt\\\");\\n    this.minW = getMeasurement(attributes.minW, \\\"0pt\\\");\\n    this.name = attributes.name || \\\"\\\";\\n    this.presence = getStringOption(attributes.presence, [\\n      \\\"visible\\\",\\n      \\\"hidden\\\",\\n      \\\"inactive\\\",\\n      \\\"invisible\\\",\\n    ]);\\n    this.relevant = getRelevant(attributes.relevant);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.w = attributes.w ? getMeasurement(attributes.w) : \\\"\\\";\\n    this.x = getMeasurement(attributes.x, \\\"0pt\\\");\\n    this.y = getMeasurement(attributes.y, \\\"0pt\\\");\\n    this.assist = null;\\n    this.bind = null;\\n    this.border = null;\\n    this.calculate = null;\\n    this.caption = null;\\n    this.desc = null;\\n    this.extras = null;\\n    this.margin = null;\\n    this.para = null;\\n    this.traversal = null;\\n    this.validate = null;\\n    this.connect = new XFAObjectArray();\\n    this.event = new XFAObjectArray();\\n    this.field = new XFAObjectArray();\\n    this.setProperty = new XFAObjectArray();\\n  }\\n\\n  [$isBindable]() {\\n    return true;\\n  }\\n\\n  [$hasSettableValue]() {\\n    return true;\\n  }\\n\\n  [$setValue](value) {\\n    for (const field of this.field.children) {\\n      if (!field.value) {\\n        const nodeValue = new Value({});\\n        field[$appendChild](nodeValue);\\n        field.value = nodeValue;\\n      }\\n\\n      field.value[$setValue](value);\\n    }\\n  }\\n\\n  [$isThereMoreWidth]() {\\n    return (\\n      (this.layout.endsWith(\\\"-tb\\\") &&\\n        this[$extra].attempt === 0 &&\\n        this[$extra].numberInLine > 0) ||\\n      this[$getParent]()[$isThereMoreWidth]()\\n    );\\n  }\\n\\n  [$isSplittable]() {\\n    \u002F\u002F We cannot cache the result here because the contentArea\\n    \u002F\u002F can change.\\n    const parent = this[$getSubformParent]();\\n    if (!parent[$isSplittable]()) {\\n      return false;\\n    }\\n\\n    if (this[$extra]._isSplittable !== undefined) {\\n      return this[$extra]._isSplittable;\\n    }\\n\\n    if (this.layout === \\\"position\\\" || this.layout.includes(\\\"row\\\")) {\\n      this[$extra]._isSplittable = false;\\n      return false;\\n    }\\n\\n    if (parent.layout?.endsWith(\\\"-tb\\\") && parent[$extra].numberInLine !== 0) {\\n      \u002F\u002F See comment in Subform::[$isSplittable] for an explanation.\\n      return false;\\n    }\\n\\n    this[$extra]._isSplittable = true;\\n    return true;\\n  }\\n\\n  [$flushHTML]() {\\n    return flushHTML(this);\\n  }\\n\\n  [$addHTML](html, bbox) {\\n    addHTML(this, html, bbox);\\n  }\\n\\n  [$getAvailableSpace]() {\\n    return getAvailableSpace(this);\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    setTabIndex(this);\\n    if (\\n      this.presence === \\\"hidden\\\" ||\\n      this.presence === \\\"inactive\\\" ||\\n      this.h === 0 ||\\n      this.w === 0\\n    ) {\\n      return HTMLResult.EMPTY;\\n    }\\n\\n    fixDimensions(this);\\n\\n    const children = [];\\n    const attributes = {\\n      id: this[$uid],\\n      class: [],\\n    };\\n\\n    setAccess(this, attributes.class);\\n\\n    if (!this[$extra]) {\\n      this[$extra] = Object.create(null);\\n    }\\n\\n    Object.assign(this[$extra], {\\n      children,\\n      attributes,\\n      attempt: 0,\\n      line: null,\\n      numberInLine: 0,\\n      availableSpace: {\\n        width: Math.min(this.w || Infinity, availableSpace.width),\\n        height: Math.min(this.h || Infinity, availableSpace.height),\\n      },\\n      width: 0,\\n      height: 0,\\n      prevHeight: 0,\\n      currentWidth: 0,\\n    });\\n\\n    const isSplittable = this[$isSplittable]();\\n    if (!isSplittable) {\\n      setFirstUnsplittable(this);\\n    }\\n\\n    if (!checkDimensions(this, availableSpace)) {\\n      return HTMLResult.FAILURE;\\n    }\\n    const filter = new Set([\\\"field\\\"]);\\n\\n    if (this.layout.includes(\\\"row\\\")) {\\n      const columnWidths = this[$getSubformParent]().columnWidths;\\n      if (Array.isArray(columnWidths) && columnWidths.length > 0) {\\n        this[$extra].columnWidths = columnWidths;\\n        this[$extra].currentColumn = 0;\\n      }\\n    }\\n\\n    const style = toStyle(\\n      this,\\n      \\\"anchorType\\\",\\n      \\\"dimensions\\\",\\n      \\\"position\\\",\\n      \\\"presence\\\",\\n      \\\"border\\\",\\n      \\\"margin\\\",\\n      \\\"hAlign\\\"\\n    );\\n    const classNames = [\\\"xfaExclgroup\\\"];\\n    const cl = layoutClass(this);\\n    if (cl) {\\n      classNames.push(cl);\\n    }\\n\\n    if (isPrintOnly(this)) {\\n      classNames.push(\\\"xfaPrintOnly\\\");\\n    }\\n\\n    attributes.style = style;\\n    attributes.class = classNames;\\n\\n    if (this.name) {\\n      attributes.xfaName = this.name;\\n    }\\n\\n    this[$pushPara]();\\n    const isLrTb = this.layout === \\\"lr-tb\\\" || this.layout === \\\"rl-tb\\\";\\n    const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;\\n    for (; this[$extra].attempt \u003C maxRun; this[$extra].attempt++) {\\n      if (isLrTb && this[$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {\\n        \u002F\u002F If the layout is lr-tb then having attempt equals to\\n        \u002F\u002F MAX_ATTEMPTS_FOR_LRTB_LAYOUT-1 means that we're trying to layout\\n        \u002F\u002F on the next line so this on is empty.\\n        this[$extra].numberInLine = 0;\\n      }\\n      const result = this[$childrenToHTML]({\\n        filter,\\n        include: true,\\n      });\\n      if (result.success) {\\n        break;\\n      }\\n      if (result.isBreak()) {\\n        this[$popPara]();\\n        return result;\\n      }\\n      if (\\n        isLrTb &&\\n        this[$extra].attempt === 0 &&\\n        this[$extra].numberInLine === 0 &&\\n        !this[$getTemplateRoot]()[$extra].noLayoutFailure\\n      ) {\\n        \u002F\u002F See comment in Subform::[$toHTML].\\n        this[$extra].attempt = maxRun;\\n        break;\\n      }\\n    }\\n\\n    this[$popPara]();\\n\\n    if (!isSplittable) {\\n      unsetFirstUnsplittable(this);\\n    }\\n\\n    if (this[$extra].attempt === maxRun) {\\n      if (!isSplittable) {\\n        delete this[$extra];\\n      }\\n      return HTMLResult.FAILURE;\\n    }\\n\\n    let marginH = 0;\\n    let marginV = 0;\\n    if (this.margin) {\\n      marginH = this.margin.leftInset + this.margin.rightInset;\\n      marginV = this.margin.topInset + this.margin.bottomInset;\\n    }\\n\\n    const width = Math.max(this[$extra].width + marginH, this.w || 0);\\n    const height = Math.max(this[$extra].height + marginV, this.h || 0);\\n    const bbox = [this.x, this.y, width, height];\\n\\n    if (this.w === \\\"\\\") {\\n      style.width = measureToString(width);\\n    }\\n    if (this.h === \\\"\\\") {\\n      style.height = measureToString(height);\\n    }\\n\\n    const html = {\\n      name: \\\"div\\\",\\n      attributes,\\n      children,\\n    };\\n\\n    applyAssist(this, attributes);\\n\\n    delete this[$extra];\\n\\n    return HTMLResult.success(createWrapper(this, html), bbox);\\n  }\\n}\\n\\nclass Execute extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"execute\\\");\\n    this.connection = attributes.connection || \\\"\\\";\\n    this.executeType = getStringOption(attributes.executeType, [\\n      \\\"import\\\",\\n      \\\"remerge\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.runAt = getStringOption(attributes.runAt, [\\n      \\\"client\\\",\\n      \\\"both\\\",\\n      \\\"server\\\",\\n    ]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Extras extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"extras\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.boolean = new XFAObjectArray();\\n    this.date = new XFAObjectArray();\\n    this.dateTime = new XFAObjectArray();\\n    this.decimal = new XFAObjectArray();\\n    this.exData = new XFAObjectArray();\\n    this.extras = new XFAObjectArray();\\n    this.float = new XFAObjectArray();\\n    this.image = new XFAObjectArray();\\n    this.integer = new XFAObjectArray();\\n    this.text = new XFAObjectArray();\\n    this.time = new XFAObjectArray();\\n  }\\n\\n  \u002F\u002F (Spec) The XFA template grammar defines the extras and desc elements,\\n  \u002F\u002F which can be used to add human-readable or machine-readable\\n  \u002F\u002F data to a template.\\n}\\n\\nclass Field extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"field\\\", \u002F* hasChildren = *\u002F true);\\n    this.access = getStringOption(attributes.access, [\\n      \\\"open\\\",\\n      \\\"nonInteractive\\\",\\n      \\\"protected\\\",\\n      \\\"readOnly\\\",\\n    ]);\\n    this.accessKey = attributes.accessKey || \\\"\\\";\\n    this.anchorType = getStringOption(attributes.anchorType, [\\n      \\\"topLeft\\\",\\n      \\\"bottomCenter\\\",\\n      \\\"bottomLeft\\\",\\n      \\\"bottomRight\\\",\\n      \\\"middleCenter\\\",\\n      \\\"middleLeft\\\",\\n      \\\"middleRight\\\",\\n      \\\"topCenter\\\",\\n      \\\"topRight\\\",\\n    ]);\\n    this.colSpan = getInteger({\\n      data: attributes.colSpan,\\n      defaultValue: 1,\\n      validate: n => n >= 1 || n === -1,\\n    });\\n    this.h = attributes.h ? getMeasurement(attributes.h) : \\\"\\\";\\n    this.hAlign = getStringOption(attributes.hAlign, [\\n      \\\"left\\\",\\n      \\\"center\\\",\\n      \\\"justify\\\",\\n      \\\"justifyAll\\\",\\n      \\\"radix\\\",\\n      \\\"right\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.locale = attributes.locale || \\\"\\\";\\n    this.maxH = getMeasurement(attributes.maxH, \\\"0pt\\\");\\n    this.maxW = getMeasurement(attributes.maxW, \\\"0pt\\\");\\n    this.minH = getMeasurement(attributes.minH, \\\"0pt\\\");\\n    this.minW = getMeasurement(attributes.minW, \\\"0pt\\\");\\n    this.name = attributes.name || \\\"\\\";\\n    this.presence = getStringOption(attributes.presence, [\\n      \\\"visible\\\",\\n      \\\"hidden\\\",\\n      \\\"inactive\\\",\\n      \\\"invisible\\\",\\n    ]);\\n    this.relevant = getRelevant(attributes.relevant);\\n    this.rotate = getInteger({\\n      data: attributes.rotate,\\n      defaultValue: 0,\\n      validate: x => x % 90 === 0,\\n    });\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.w = attributes.w ? getMeasurement(attributes.w) : \\\"\\\";\\n    this.x = getMeasurement(attributes.x, \\\"0pt\\\");\\n    this.y = getMeasurement(attributes.y, \\\"0pt\\\");\\n    this.assist = null;\\n    this.bind = null;\\n    this.border = null;\\n    this.calculate = null;\\n    this.caption = null;\\n    this.desc = null;\\n    this.extras = null;\\n    this.font = null;\\n    this.format = null;\\n    \u002F\u002F For a choice list, one list is used to have display entries\\n    \u002F\u002F and the other for the exported values\\n    this.items = new XFAObjectArray(2);\\n    this.keep = null;\\n    this.margin = null;\\n    this.para = null;\\n    this.traversal = null;\\n    this.ui = null;\\n    this.validate = null;\\n    this.value = null;\\n    this.bindItems = new XFAObjectArray();\\n    this.connect = new XFAObjectArray();\\n    this.event = new XFAObjectArray();\\n    this.setProperty = new XFAObjectArray();\\n  }\\n\\n  [$isBindable]() {\\n    return true;\\n  }\\n\\n  [$setValue](value) {\\n    _setValue(this, value);\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    setTabIndex(this);\\n\\n    if (!this.ui) {\\n      \u002F\u002F It's allowed to not have an ui, specs say:\\n      \u002F\u002F   If the UI element contains no children or is not present,\\n      \u002F\u002F   the application chooses a default user interface for the\\n      \u002F\u002F   container, based on the type of the container's content.\\n\\n      this.ui = new Ui({});\\n      this.ui[$globalData] = this[$globalData];\\n      this[$appendChild](this.ui);\\n      let node;\\n\\n      \u002F\u002F The items element can have 2 element max and\\n      \u002F\u002F according to the items specs it's likely a good\\n      \u002F\u002F way to guess the correct ui type.\\n      switch (this.items.children.length) {\\n        case 0:\\n          node = new TextEdit({});\\n          this.ui.textEdit = node;\\n          break;\\n        case 1:\\n          node = new CheckButton({});\\n          this.ui.checkButton = node;\\n          break;\\n        case 2:\\n          node = new ChoiceList({});\\n          this.ui.choiceList = node;\\n          break;\\n      }\\n      this.ui[$appendChild](node);\\n    }\\n\\n    if (\\n      !this.ui ||\\n      this.presence === \\\"hidden\\\" ||\\n      this.presence === \\\"inactive\\\" ||\\n      this.h === 0 ||\\n      this.w === 0\\n    ) {\\n      return HTMLResult.EMPTY;\\n    }\\n\\n    if (this.caption) {\\n      \u002F\u002F Maybe we already tried to layout this field with\\n      \u002F\u002F another availableSpace, so to avoid to use the cached\\n      \u002F\u002F value just delete it.\\n      delete this.caption[$extra];\\n    }\\n\\n    this[$pushPara]();\\n\\n    const caption = this.caption\\n      ? this.caption[$toHTML](availableSpace).html\\n      : null;\\n    const savedW = this.w;\\n    const savedH = this.h;\\n    let marginH = 0;\\n    let marginV = 0;\\n    if (this.margin) {\\n      marginH = this.margin.leftInset + this.margin.rightInset;\\n      marginV = this.margin.topInset + this.margin.bottomInset;\\n    }\\n\\n    let borderDims = null;\\n    if (this.w === \\\"\\\" || this.h === \\\"\\\") {\\n      let width = null;\\n      let height = null;\\n\\n      let uiW = 0;\\n      let uiH = 0;\\n      if (this.ui.checkButton) {\\n        uiW = uiH = this.ui.checkButton.size;\\n      } else {\\n        const { w, h } = layoutNode(this, availableSpace);\\n        if (w !== null) {\\n          uiW = w;\\n          uiH = h;\\n        } else {\\n          uiH = getMetrics(this.font, \u002F* real = *\u002F true).lineNoGap;\\n        }\\n      }\\n\\n      borderDims = getBorderDims(this.ui[$getExtra]());\\n      uiW += borderDims.w;\\n      uiH += borderDims.h;\\n\\n      if (this.caption) {\\n        const { w, h, isBroken } = this.caption[$getExtra](availableSpace);\\n        \u002F\u002F See comment in Draw::[$toHTML] to have an explanation\\n        \u002F\u002F about this line.\\n        if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) {\\n          this[$popPara]();\\n          return HTMLResult.FAILURE;\\n        }\\n\\n        width = w;\\n        height = h;\\n\\n        switch (this.caption.placement) {\\n          case \\\"left\\\":\\n          case \\\"right\\\":\\n          case \\\"inline\\\":\\n            width += uiW;\\n            break;\\n          case \\\"top\\\":\\n          case \\\"bottom\\\":\\n            height += uiH;\\n            break;\\n        }\\n      } else {\\n        width = uiW;\\n        height = uiH;\\n      }\\n\\n      if (width && this.w === \\\"\\\") {\\n        width += marginH;\\n        this.w = Math.min(\\n          this.maxW \u003C= 0 ? Infinity : this.maxW,\\n          this.minW + 1 \u003C width ? width : this.minW\\n        );\\n      }\\n\\n      if (height && this.h === \\\"\\\") {\\n        height += marginV;\\n        this.h = Math.min(\\n          this.maxH \u003C= 0 ? Infinity : this.maxH,\\n          this.minH + 1 \u003C height ? height : this.minH\\n        );\\n      }\\n    }\\n\\n    this[$popPara]();\\n\\n    fixDimensions(this);\\n\\n    setFirstUnsplittable(this);\\n    if (!checkDimensions(this, availableSpace)) {\\n      this.w = savedW;\\n      this.h = savedH;\\n      this[$popPara]();\\n      return HTMLResult.FAILURE;\\n    }\\n    unsetFirstUnsplittable(this);\\n\\n    const style = toStyle(\\n      this,\\n      \\\"font\\\",\\n      \\\"dimensions\\\",\\n      \\\"position\\\",\\n      \\\"rotate\\\",\\n      \\\"anchorType\\\",\\n      \\\"presence\\\",\\n      \\\"margin\\\",\\n      \\\"hAlign\\\"\\n    );\\n\\n    setMinMaxDimensions(this, style);\\n\\n    const classNames = [\\\"xfaField\\\"];\\n    \u002F\u002F If no font, font properties are inherited.\\n    if (this.font) {\\n      classNames.push(\\\"xfaFont\\\");\\n    }\\n\\n    if (isPrintOnly(this)) {\\n      classNames.push(\\\"xfaPrintOnly\\\");\\n    }\\n\\n    const attributes = {\\n      style,\\n      id: this[$uid],\\n      class: classNames,\\n    };\\n\\n    if (style.margin) {\\n      style.padding = style.margin;\\n      delete style.margin;\\n    }\\n\\n    setAccess(this, classNames);\\n\\n    if (this.name) {\\n      attributes.xfaName = this.name;\\n    }\\n\\n    const children = [];\\n    const html = {\\n      name: \\\"div\\\",\\n      attributes,\\n      children,\\n    };\\n\\n    applyAssist(this, attributes);\\n\\n    const borderStyle = this.border ? this.border[$toStyle]() : null;\\n    const bbox = computeBbox(this, html, availableSpace);\\n    const ui = this.ui[$toHTML]().html;\\n    if (!ui) {\\n      Object.assign(style, borderStyle);\\n      return HTMLResult.success(createWrapper(this, html), bbox);\\n    }\\n\\n    if (this[$tabIndex]) {\\n      if (ui.children?.[0]) {\\n        ui.children[0].attributes.tabindex = this[$tabIndex];\\n      } else {\\n        ui.attributes.tabindex = this[$tabIndex];\\n      }\\n    }\\n\\n    if (!ui.attributes.style) {\\n      ui.attributes.style = Object.create(null);\\n    }\\n\\n    let aElement = null;\\n\\n    if (this.ui.button) {\\n      if (ui.children.length === 1) {\\n        [aElement] = ui.children.splice(0, 1);\\n      }\\n      Object.assign(ui.attributes.style, borderStyle);\\n    } else {\\n      Object.assign(style, borderStyle);\\n    }\\n\\n    children.push(ui);\\n\\n    if (this.value) {\\n      if (this.ui.imageEdit) {\\n        ui.children.push(this.value[$toHTML]().html);\\n      } else if (!this.ui.button) {\\n        let value = \\\"\\\";\\n        if (this.value.exData) {\\n          value = this.value.exData[$text]();\\n        } else if (this.value.text) {\\n          value = this.value.text[$getExtra]();\\n        } else {\\n          const htmlValue = this.value[$toHTML]().html;\\n          if (htmlValue !== null) {\\n            value = htmlValue.children[0].value;\\n          }\\n        }\\n        if (this.ui.textEdit && this.value.text?.maxChars) {\\n          ui.children[0].attributes.maxLength = this.value.text.maxChars;\\n        }\\n\\n        if (value) {\\n          if (this.ui.numericEdit) {\\n            value = parseFloat(value);\\n            value = isNaN(value) ? \\\"\\\" : value.toString();\\n          }\\n\\n          if (ui.children[0].name === \\\"textarea\\\") {\\n            ui.children[0].attributes.textContent = value;\\n          } else {\\n            ui.children[0].attributes.value = value;\\n          }\\n        }\\n      }\\n    }\\n\\n    if (!this.ui.imageEdit && ui.children?.[0] && this.h) {\\n      borderDims = borderDims || getBorderDims(this.ui[$getExtra]());\\n\\n      let captionHeight = 0;\\n      if (this.caption && [\\\"top\\\", \\\"bottom\\\"].includes(this.caption.placement)) {\\n        captionHeight = this.caption.reserve;\\n        if (captionHeight \u003C= 0) {\\n          captionHeight = this.caption[$getExtra](availableSpace).h;\\n        }\\n        const inputHeight = this.h - captionHeight - marginV - borderDims.h;\\n        ui.children[0].attributes.style.height = measureToString(inputHeight);\\n      } else {\\n        ui.children[0].attributes.style.height = \\\"100%\\\";\\n      }\\n    }\\n\\n    if (aElement) {\\n      ui.children.push(aElement);\\n    }\\n\\n    if (!caption) {\\n      if (ui.attributes.class) {\\n        \u002F\u002F Even if no caption this class will help to center the ui.\\n        ui.attributes.class.push(\\\"xfaLeft\\\");\\n      }\\n      this.w = savedW;\\n      this.h = savedH;\\n\\n      return HTMLResult.success(createWrapper(this, html), bbox);\\n    }\\n\\n    if (this.ui.button) {\\n      if (style.padding) {\\n        delete style.padding;\\n      }\\n      if (caption.name === \\\"div\\\") {\\n        caption.name = \\\"span\\\";\\n      }\\n      ui.children.push(caption);\\n      return HTMLResult.success(html, bbox);\\n    } else if (this.ui.checkButton) {\\n      caption.attributes.class[0] = \\\"xfaCaptionForCheckButton\\\";\\n    }\\n\\n    if (!ui.attributes.class) {\\n      ui.attributes.class = [];\\n    }\\n\\n    ui.children.splice(0, 0, caption);\\n\\n    switch (this.caption.placement) {\\n      case \\\"left\\\":\\n        ui.attributes.class.push(\\\"xfaLeft\\\");\\n        break;\\n      case \\\"right\\\":\\n        ui.attributes.class.push(\\\"xfaRight\\\");\\n        break;\\n      case \\\"top\\\":\\n        ui.attributes.class.push(\\\"xfaTop\\\");\\n        break;\\n      case \\\"bottom\\\":\\n        ui.attributes.class.push(\\\"xfaBottom\\\");\\n        break;\\n      case \\\"inline\\\":\\n        \u002F\u002F TODO;\\n        ui.attributes.class.push(\\\"xfaLeft\\\");\\n        break;\\n    }\\n\\n    this.w = savedW;\\n    this.h = savedH;\\n    return HTMLResult.success(createWrapper(this, html), bbox);\\n  }\\n}\\n\\nclass Fill extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"fill\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.presence = getStringOption(attributes.presence, [\\n      \\\"visible\\\",\\n      \\\"hidden\\\",\\n      \\\"inactive\\\",\\n      \\\"invisible\\\",\\n    ]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.color = null;\\n    this.extras = null;\\n\\n    \u002F\u002F One-of properties or none\\n    this.linear = null;\\n    this.pattern = null;\\n    this.radial = null;\\n    this.solid = null;\\n    this.stipple = null;\\n  }\\n\\n  [$toStyle]() {\\n    const parent = this[$getParent]();\\n    const grandpa = parent[$getParent]();\\n    const ggrandpa = grandpa[$getParent]();\\n    const style = Object.create(null);\\n\\n    \u002F\u002F Use for color, i.e. #...\\n    let propName = \\\"color\\\";\\n\\n    \u002F\u002F Use for non-color, i.e. gradient, radial-gradient...\\n    let altPropName = propName;\\n\\n    if (parent instanceof Border) {\\n      propName = \\\"background-color\\\";\\n      altPropName = \\\"background\\\";\\n      if (ggrandpa instanceof Ui) {\\n        \u002F\u002F The default fill color is white.\\n        style.backgroundColor = \\\"white\\\";\\n      }\\n    }\\n    if (parent instanceof Rectangle || parent instanceof Arc) {\\n      propName = altPropName = \\\"fill\\\";\\n      style.fill = \\\"white\\\";\\n    }\\n\\n    for (const name of Object.getOwnPropertyNames(this)) {\\n      if (name === \\\"extras\\\" || name === \\\"color\\\") {\\n        continue;\\n      }\\n      const obj = this[name];\\n      if (!(obj instanceof XFAObject)) {\\n        continue;\\n      }\\n\\n      const color = obj[$toStyle](this.color);\\n      if (color) {\\n        style[color.startsWith(\\\"#\\\") ? propName : altPropName] = color;\\n      }\\n      return style;\\n    }\\n\\n    if (this.color?.value) {\\n      const color = this.color[$toStyle]();\\n      style[color.startsWith(\\\"#\\\") ? propName : altPropName] = color;\\n    }\\n\\n    return style;\\n  }\\n}\\n\\nclass Filter extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"filter\\\", \u002F* hasChildren = *\u002F true);\\n    this.addRevocationInfo = getStringOption(attributes.addRevocationInfo, [\\n      \\\"\\\",\\n      \\\"required\\\",\\n      \\\"optional\\\",\\n      \\\"none\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.version = getInteger({\\n      data: this.version,\\n      defaultValue: 5,\\n      validate: x => x >= 1 && x \u003C= 5,\\n    });\\n    this.appearanceFilter = null;\\n    this.certificates = null;\\n    this.digestMethods = null;\\n    this.encodings = null;\\n    this.encryptionMethods = null;\\n    this.handler = null;\\n    this.lockDocument = null;\\n    this.mdp = null;\\n    this.reasons = null;\\n    this.timeStamp = null;\\n  }\\n}\\n\\nclass Float extends ContentObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"float\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n\\n  [$finalize]() {\\n    const number = parseFloat(this[$content].trim());\\n    this[$content] = isNaN(number) ? null : number;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    return valueToHtml(\\n      this[$content] !== null ? this[$content].toString() : \\\"\\\"\\n    );\\n  }\\n}\\n\\nclass Font extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"font\\\", \u002F* hasChildren = *\u002F true);\\n    this.baselineShift = getMeasurement(attributes.baselineShift);\\n    this.fontHorizontalScale = getFloat({\\n      data: attributes.fontHorizontalScale,\\n      defaultValue: 100,\\n      validate: x => x >= 0,\\n    });\\n    this.fontVerticalScale = getFloat({\\n      data: attributes.fontVerticalScale,\\n      defaultValue: 100,\\n      validate: x => x >= 0,\\n    });\\n    this.id = attributes.id || \\\"\\\";\\n    this.kerningMode = getStringOption(attributes.kerningMode, [\\n      \\\"none\\\",\\n      \\\"pair\\\",\\n    ]);\\n    this.letterSpacing = getMeasurement(attributes.letterSpacing, \\\"0\\\");\\n    this.lineThrough = getInteger({\\n      data: attributes.lineThrough,\\n      defaultValue: 0,\\n      validate: x => x === 1 || x === 2,\\n    });\\n    this.lineThroughPeriod = getStringOption(attributes.lineThroughPeriod, [\\n      \\\"all\\\",\\n      \\\"word\\\",\\n    ]);\\n    this.overline = getInteger({\\n      data: attributes.overline,\\n      defaultValue: 0,\\n      validate: x => x === 1 || x === 2,\\n    });\\n    this.overlinePeriod = getStringOption(attributes.overlinePeriod, [\\n      \\\"all\\\",\\n      \\\"word\\\",\\n    ]);\\n    this.posture = getStringOption(attributes.posture, [\\\"normal\\\", \\\"italic\\\"]);\\n    this.size = getMeasurement(attributes.size, \\\"10pt\\\");\\n    this.typeface = attributes.typeface || \\\"Courier\\\";\\n    this.underline = getInteger({\\n      data: attributes.underline,\\n      defaultValue: 0,\\n      validate: x => x === 1 || x === 2,\\n    });\\n    this.underlinePeriod = getStringOption(attributes.underlinePeriod, [\\n      \\\"all\\\",\\n      \\\"word\\\",\\n    ]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.weight = getStringOption(attributes.weight, [\\\"normal\\\", \\\"bold\\\"]);\\n    this.extras = null;\\n    this.fill = null;\\n  }\\n\\n  [$clean](builder) {\\n    super[$clean](builder);\\n    this[$globalData].usedTypefaces.add(this.typeface);\\n  }\\n\\n  [$toStyle]() {\\n    const style = toStyle(this, \\\"fill\\\");\\n    const color = style.color;\\n    if (color) {\\n      if (color === \\\"#000000\\\") {\\n        \u002F\u002F Default font color.\\n        delete style.color;\\n      } else if (!color.startsWith(\\\"#\\\")) {\\n        \u002F\u002F We've a gradient which is not possible for a font color\\n        \u002F\u002F so use a workaround.\\n        style.background = color;\\n        style.backgroundClip = \\\"text\\\";\\n        style.color = \\\"transparent\\\";\\n      }\\n    }\\n\\n    if (this.baselineShift) {\\n      style.verticalAlign = measureToString(this.baselineShift);\\n    }\\n\\n    \u002F\u002F TODO: fontHorizontalScale\\n    \u002F\u002F TODO: fontVerticalScale\\n\\n    style.fontKerning = this.kerningMode === \\\"none\\\" ? \\\"none\\\" : \\\"normal\\\";\\n    style.letterSpacing = measureToString(this.letterSpacing);\\n\\n    if (this.lineThrough !== 0) {\\n      style.textDecoration = \\\"line-through\\\";\\n      if (this.lineThrough === 2) {\\n        style.textDecorationStyle = \\\"double\\\";\\n      }\\n    }\\n\\n    \u002F\u002F TODO: lineThroughPeriod\\n\\n    if (this.overline !== 0) {\\n      style.textDecoration = \\\"overline\\\";\\n      if (this.overline === 2) {\\n        style.textDecorationStyle = \\\"double\\\";\\n      }\\n    }\\n\\n    \u002F\u002F TODO: overlinePeriod\\n\\n    style.fontStyle = this.posture;\\n    style.fontSize = measureToString(0.99 * this.size);\\n\\n    setFontFamily(this, this, this[$globalData].fontFinder, style);\\n\\n    if (this.underline !== 0) {\\n      style.textDecoration = \\\"underline\\\";\\n      if (this.underline === 2) {\\n        style.textDecorationStyle = \\\"double\\\";\\n      }\\n    }\\n\\n    \u002F\u002F TODO: underlinePeriod\\n\\n    style.fontWeight = this.weight;\\n\\n    return style;\\n  }\\n}\\n\\nclass Format extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"format\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n    this.picture = null;\\n  }\\n}\\n\\nclass Handler extends StringObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"handler\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\\"optional\\\", \\\"required\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Hyphenation extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"hyphenation\\\");\\n    this.excludeAllCaps = getInteger({\\n      data: attributes.excludeAllCaps,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.excludeInitialCap = getInteger({\\n      data: attributes.excludeInitialCap,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.hyphenate = getInteger({\\n      data: attributes.hyphenate,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.id = attributes.id || \\\"\\\";\\n    this.pushCharacterCount = getInteger({\\n      data: attributes.pushCharacterCount,\\n      defaultValue: 3,\\n      validate: x => x >= 0,\\n    });\\n    this.remainCharacterCount = getInteger({\\n      data: attributes.remainCharacterCount,\\n      defaultValue: 3,\\n      validate: x => x >= 0,\\n    });\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.wordCharacterCount = getInteger({\\n      data: attributes.wordCharacterCount,\\n      defaultValue: 7,\\n      validate: x => x >= 0,\\n    });\\n  }\\n}\\n\\nclass Image extends StringObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"image\\\");\\n    this.aspect = getStringOption(attributes.aspect, [\\n      \\\"fit\\\",\\n      \\\"actual\\\",\\n      \\\"height\\\",\\n      \\\"none\\\",\\n      \\\"width\\\",\\n    ]);\\n    this.contentType = attributes.contentType || \\\"\\\";\\n    this.href = attributes.href || \\\"\\\";\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.transferEncoding = getStringOption(attributes.transferEncoding, [\\n      \\\"base64\\\",\\n      \\\"none\\\",\\n      \\\"package\\\",\\n    ]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n\\n  [$toHTML]() {\\n    if (this.contentType && !MIMES.has(this.contentType.toLowerCase())) {\\n      return HTMLResult.EMPTY;\\n    }\\n\\n    let buffer =\\n      this[$globalData].images && this[$globalData].images.get(this.href);\\n    if (!buffer && (this.href || !this[$content])) {\\n      \u002F\u002F In general, we don't get remote data and use what we have\\n      \u002F\u002F in the pdf itself, so no picture for non null href.\\n      return HTMLResult.EMPTY;\\n    }\\n\\n    if (!buffer && this.transferEncoding === \\\"base64\\\") {\\n      buffer = stringToBytes(atob(this[$content]));\\n    }\\n\\n    if (!buffer) {\\n      return HTMLResult.EMPTY;\\n    }\\n\\n    if (!this.contentType) {\\n      for (const [header, type] of IMAGES_HEADERS) {\\n        if (\\n          buffer.length > header.length &&\\n          header.every((x, i) => x === buffer[i])\\n        ) {\\n          this.contentType = type;\\n          break;\\n        }\\n      }\\n      if (!this.contentType) {\\n        return HTMLResult.EMPTY;\\n      }\\n    }\\n\\n    \u002F\u002F TODO: Firefox doesn't support natively tiff (and tif) format.\\n    const blob = new Blob([buffer], { type: this.contentType });\\n    let style;\\n    switch (this.aspect) {\\n      case \\\"fit\\\":\\n      case \\\"actual\\\":\\n        \u002F\u002F TODO: check what to do with actual.\\n        \u002F\u002F Normally we should return {auto, auto} for it but\\n        \u002F\u002F it implies some wrong rendering (see xfa_bug1716816.pdf).\\n        break;\\n      case \\\"height\\\":\\n        style = {\\n          height: \\\"100%\\\",\\n          objectFit: \\\"fill\\\",\\n        };\\n        break;\\n      case \\\"none\\\":\\n        style = {\\n          width: \\\"100%\\\",\\n          height: \\\"100%\\\",\\n          objectFit: \\\"fill\\\",\\n        };\\n        break;\\n      case \\\"width\\\":\\n        style = {\\n          width: \\\"100%\\\",\\n          objectFit: \\\"fill\\\",\\n        };\\n        break;\\n    }\\n    const parent = this[$getParent]();\\n    return HTMLResult.success({\\n      name: \\\"img\\\",\\n      attributes: {\\n        class: [\\\"xfaImage\\\"],\\n        style,\\n        src: URL.createObjectURL(blob),\\n        alt: parent ? ariaLabel(parent[$getParent]()) : null,\\n      },\\n    });\\n  }\\n}\\n\\nclass ImageEdit extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"imageEdit\\\", \u002F* hasChildren = *\u002F true);\\n    this.data = getStringOption(attributes.data, [\\\"link\\\", \\\"embed\\\"]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.border = null;\\n    this.extras = null;\\n    this.margin = null;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    if (this.data === \\\"embed\\\") {\\n      return HTMLResult.success({\\n        name: \\\"div\\\",\\n        children: [],\\n        attributes: {},\\n      });\\n    }\\n\\n    return HTMLResult.EMPTY;\\n  }\\n}\\n\\nclass Integer extends ContentObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"integer\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n\\n  [$finalize]() {\\n    const number = parseInt(this[$content].trim(), 10);\\n    this[$content] = isNaN(number) ? null : number;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    return valueToHtml(\\n      this[$content] !== null ? this[$content].toString() : \\\"\\\"\\n    );\\n  }\\n}\\n\\nclass Issuers extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"issuers\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\\"optional\\\", \\\"required\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.certificate = new XFAObjectArray();\\n  }\\n}\\n\\nclass Items extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"items\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.presence = getStringOption(attributes.presence, [\\n      \\\"visible\\\",\\n      \\\"hidden\\\",\\n      \\\"inactive\\\",\\n      \\\"invisible\\\",\\n    ]);\\n    this.ref = attributes.ref || \\\"\\\";\\n    this.save = getInteger({\\n      data: attributes.save,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.boolean = new XFAObjectArray();\\n    this.date = new XFAObjectArray();\\n    this.dateTime = new XFAObjectArray();\\n    this.decimal = new XFAObjectArray();\\n    this.exData = new XFAObjectArray();\\n    this.float = new XFAObjectArray();\\n    this.image = new XFAObjectArray();\\n    this.integer = new XFAObjectArray();\\n    this.text = new XFAObjectArray();\\n    this.time = new XFAObjectArray();\\n  }\\n\\n  [$toHTML]() {\\n    const output = [];\\n    for (const child of this[$getChildren]()) {\\n      output.push(child[$text]());\\n    }\\n    return HTMLResult.success(output);\\n  }\\n}\\n\\nclass Keep extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"keep\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    const options = [\\\"none\\\", \\\"contentArea\\\", \\\"pageArea\\\"];\\n    this.intact = getStringOption(attributes.intact, options);\\n    this.next = getStringOption(attributes.next, options);\\n    this.previous = getStringOption(attributes.previous, options);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n  }\\n}\\n\\nclass KeyUsage extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"keyUsage\\\");\\n    const options = [\\\"\\\", \\\"yes\\\", \\\"no\\\"];\\n    this.crlSign = getStringOption(attributes.crlSign, options);\\n    this.dataEncipherment = getStringOption(\\n      attributes.dataEncipherment,\\n      options\\n    );\\n    this.decipherOnly = getStringOption(attributes.decipherOnly, options);\\n    this.digitalSignature = getStringOption(\\n      attributes.digitalSignature,\\n      options\\n    );\\n    this.encipherOnly = getStringOption(attributes.encipherOnly, options);\\n    this.id = attributes.id || \\\"\\\";\\n    this.keyAgreement = getStringOption(attributes.keyAgreement, options);\\n    this.keyCertSign = getStringOption(attributes.keyCertSign, options);\\n    this.keyEncipherment = getStringOption(attributes.keyEncipherment, options);\\n    this.nonRepudiation = getStringOption(attributes.nonRepudiation, options);\\n    this.type = getStringOption(attributes.type, [\\\"optional\\\", \\\"required\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Line extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"line\\\", \u002F* hasChildren = *\u002F true);\\n    this.hand = getStringOption(attributes.hand, [\\\"even\\\", \\\"left\\\", \\\"right\\\"]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.slope = getStringOption(attributes.slope, [\\\"\\\\\\\\\\\", \\\"\u002F\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.edge = null;\\n  }\\n\\n  [$toHTML]() {\\n    const parent = this[$getParent]()[$getParent]();\\n    const edge = this.edge || new Edge({});\\n    const edgeStyle = edge[$toStyle]();\\n    const style = Object.create(null);\\n    const thickness = edge.presence === \\\"visible\\\" ? edge.thickness : 0;\\n    style.strokeWidth = measureToString(thickness);\\n    style.stroke = edgeStyle.color;\\n    let x1, y1, x2, y2;\\n    let width = \\\"100%\\\";\\n    let height = \\\"100%\\\";\\n\\n    if (parent.w \u003C= thickness) {\\n      [x1, y1, x2, y2] = [\\\"50%\\\", 0, \\\"50%\\\", \\\"100%\\\"];\\n      width = style.strokeWidth;\\n    } else if (parent.h \u003C= thickness) {\\n      [x1, y1, x2, y2] = [0, \\\"50%\\\", \\\"100%\\\", \\\"50%\\\"];\\n      height = style.strokeWidth;\\n    } else if (this.slope === \\\"\\\\\\\\\\\") {\\n      [x1, y1, x2, y2] = [0, 0, \\\"100%\\\", \\\"100%\\\"];\\n    } else {\\n      [x1, y1, x2, y2] = [0, \\\"100%\\\", \\\"100%\\\", 0];\\n    }\\n\\n    const line = {\\n      name: \\\"line\\\",\\n      attributes: {\\n        xmlns: SVG_NS,\\n        x1,\\n        y1,\\n        x2,\\n        y2,\\n        style,\\n      },\\n    };\\n\\n    const svg = {\\n      name: \\\"svg\\\",\\n      children: [line],\\n      attributes: {\\n        xmlns: SVG_NS,\\n        width,\\n        height,\\n        style: {\\n          overflow: \\\"visible\\\",\\n        },\\n      },\\n    };\\n\\n    if (hasMargin(parent)) {\\n      return HTMLResult.success({\\n        name: \\\"div\\\",\\n        attributes: {\\n          style: {\\n            display: \\\"inline\\\",\\n            width: \\\"100%\\\",\\n            height: \\\"100%\\\",\\n          },\\n        },\\n        children: [svg],\\n      });\\n    }\\n\\n    svg.attributes.style.position = \\\"absolute\\\";\\n    return HTMLResult.success(svg);\\n  }\\n}\\n\\nclass Linear extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"linear\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\n      \\\"toRight\\\",\\n      \\\"toBottom\\\",\\n      \\\"toLeft\\\",\\n      \\\"toTop\\\",\\n    ]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.color = null;\\n    this.extras = null;\\n  }\\n\\n  [$toStyle](startColor) {\\n    startColor = startColor ? startColor[$toStyle]() : \\\"#FFFFFF\\\";\\n    const transf = this.type.replace(\u002F([RBLT])\u002F, \\\" $1\\\").toLowerCase();\\n    const endColor = this.color ? this.color[$toStyle]() : \\\"#000000\\\";\\n    return `linear-gradient(${transf}, ${startColor}, ${endColor})`;\\n  }\\n}\\n\\nclass LockDocument extends ContentObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"lockDocument\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\\"optional\\\", \\\"required\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n\\n  [$finalize]() {\\n    this[$content] = getStringOption(this[$content], [\\\"auto\\\", \\\"0\\\", \\\"1\\\"]);\\n  }\\n}\\n\\nclass Manifest extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"manifest\\\", \u002F* hasChildren = *\u002F true);\\n    this.action = getStringOption(attributes.action, [\\n      \\\"include\\\",\\n      \\\"all\\\",\\n      \\\"exclude\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n    this.ref = new XFAObjectArray();\\n  }\\n}\\n\\nclass Margin extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"margin\\\", \u002F* hasChildren = *\u002F true);\\n    this.bottomInset = getMeasurement(attributes.bottomInset, \\\"0\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.leftInset = getMeasurement(attributes.leftInset, \\\"0\\\");\\n    this.rightInset = getMeasurement(attributes.rightInset, \\\"0\\\");\\n    this.topInset = getMeasurement(attributes.topInset, \\\"0\\\");\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n  }\\n\\n  [$toStyle]() {\\n    return {\\n      margin:\\n        measureToString(this.topInset) +\\n        \\\" \\\" +\\n        measureToString(this.rightInset) +\\n        \\\" \\\" +\\n        measureToString(this.bottomInset) +\\n        \\\" \\\" +\\n        measureToString(this.leftInset),\\n    };\\n  }\\n}\\n\\nclass Mdp extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"mdp\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.permissions = getInteger({\\n      data: attributes.permissions,\\n      defaultValue: 2,\\n      validate: x => x === 1 || x === 3,\\n    });\\n    this.signatureType = getStringOption(attributes.signatureType, [\\n      \\\"filler\\\",\\n      \\\"author\\\",\\n    ]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Medium extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"medium\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.imagingBBox = getBBox(attributes.imagingBBox);\\n    this.long = getMeasurement(attributes.long);\\n    this.orientation = getStringOption(attributes.orientation, [\\n      \\\"portrait\\\",\\n      \\\"landscape\\\",\\n    ]);\\n    this.short = getMeasurement(attributes.short);\\n    this.stock = attributes.stock || \\\"\\\";\\n    this.trayIn = getStringOption(attributes.trayIn, [\\n      \\\"auto\\\",\\n      \\\"delegate\\\",\\n      \\\"pageFront\\\",\\n    ]);\\n    this.trayOut = getStringOption(attributes.trayOut, [\\\"auto\\\", \\\"delegate\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Message extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"message\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.text = new XFAObjectArray();\\n  }\\n}\\n\\nclass NumericEdit extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"numericEdit\\\", \u002F* hasChildren = *\u002F true);\\n    this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\\n      \\\"auto\\\",\\n      \\\"off\\\",\\n      \\\"on\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.border = null;\\n    this.comb = null;\\n    this.extras = null;\\n    this.margin = null;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    \u002F\u002F TODO: incomplete.\\n    const style = toStyle(this, \\\"border\\\", \\\"font\\\", \\\"margin\\\");\\n    const field = this[$getParent]()[$getParent]();\\n    const html = {\\n      name: \\\"input\\\",\\n      attributes: {\\n        type: \\\"text\\\",\\n        fieldId: field[$uid],\\n        dataId: field[$data]?.[$uid] || field[$uid],\\n        class: [\\\"xfaTextfield\\\"],\\n        style,\\n        \\\"aria-label\\\": ariaLabel(field),\\n        \\\"aria-required\\\": false,\\n      },\\n    };\\n\\n    if (isRequired(field)) {\\n      html.attributes[\\\"aria-required\\\"] = true;\\n      html.attributes.required = true;\\n    }\\n\\n    return HTMLResult.success({\\n      name: \\\"label\\\",\\n      attributes: {\\n        class: [\\\"xfaLabel\\\"],\\n      },\\n      children: [html],\\n    });\\n  }\\n}\\n\\nclass Occur extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"occur\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.initial =\\n      attributes.initial !== \\\"\\\"\\n        ? getInteger({\\n            data: attributes.initial,\\n            defaultValue: \\\"\\\",\\n            validate: x => true,\\n          })\\n        : \\\"\\\";\\n    this.max =\\n      attributes.max !== \\\"\\\"\\n        ? getInteger({\\n            data: attributes.max,\\n            defaultValue: 1,\\n            validate: x => true,\\n          })\\n        : \\\"\\\";\\n    this.min =\\n      attributes.min !== \\\"\\\"\\n        ? getInteger({\\n            data: attributes.min,\\n            defaultValue: 1,\\n            validate: x => true,\\n          })\\n        : \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n  }\\n\\n  [$clean]() {\\n    const parent = this[$getParent]();\\n    const originalMin = this.min;\\n\\n    if (this.min === \\\"\\\") {\\n      this.min =\\n        parent instanceof PageArea || parent instanceof PageSet ? 0 : 1;\\n    }\\n    if (this.max === \\\"\\\") {\\n      if (originalMin === \\\"\\\") {\\n        this.max =\\n          parent instanceof PageArea || parent instanceof PageSet ? -1 : 1;\\n      } else {\\n        this.max = this.min;\\n      }\\n    }\\n\\n    if (this.max !== -1 && this.max \u003C this.min) {\\n      this.max = this.min;\\n    }\\n\\n    if (this.initial === \\\"\\\") {\\n      this.initial = parent instanceof Template ? 1 : this.min;\\n    }\\n  }\\n}\\n\\nclass Oid extends StringObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"oid\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Oids extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"oids\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\\"optional\\\", \\\"required\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.oid = new XFAObjectArray();\\n  }\\n}\\n\\nclass Overflow extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"overflow\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.leader = attributes.leader || \\\"\\\";\\n    this.target = attributes.target || \\\"\\\";\\n    this.trailer = attributes.trailer || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n\\n  [$getExtra]() {\\n    if (!this[$extra]) {\\n      const parent = this[$getParent]();\\n      const root = this[$getTemplateRoot]();\\n      const target = root[$searchNode](this.target, parent);\\n      const leader = root[$searchNode](this.leader, parent);\\n      const trailer = root[$searchNode](this.trailer, parent);\\n      this[$extra] = {\\n        target: target?.[0] || null,\\n        leader: leader?.[0] || null,\\n        trailer: trailer?.[0] || null,\\n        addLeader: false,\\n        addTrailer: false,\\n      };\\n    }\\n    return this[$extra];\\n  }\\n}\\n\\nclass PageArea extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"pageArea\\\", \u002F* hasChildren = *\u002F true);\\n    this.blankOrNotBlank = getStringOption(attributes.blankOrNotBlank, [\\n      \\\"any\\\",\\n      \\\"blank\\\",\\n      \\\"notBlank\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.initialNumber = getInteger({\\n      data: attributes.initialNumber,\\n      defaultValue: 1,\\n      validate: x => true,\\n    });\\n    this.name = attributes.name || \\\"\\\";\\n    this.numbered = getInteger({\\n      data: attributes.numbered,\\n      defaultValue: 1,\\n      validate: x => true,\\n    });\\n    this.oddOrEven = getStringOption(attributes.oddOrEven, [\\n      \\\"any\\\",\\n      \\\"even\\\",\\n      \\\"odd\\\",\\n    ]);\\n    this.pagePosition = getStringOption(attributes.pagePosition, [\\n      \\\"any\\\",\\n      \\\"first\\\",\\n      \\\"last\\\",\\n      \\\"only\\\",\\n      \\\"rest\\\",\\n    ]);\\n    this.relevant = getRelevant(attributes.relevant);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.desc = null;\\n    this.extras = null;\\n    this.medium = null;\\n    this.occur = null;\\n    this.area = new XFAObjectArray();\\n    this.contentArea = new XFAObjectArray();\\n    this.draw = new XFAObjectArray();\\n    this.exclGroup = new XFAObjectArray();\\n    this.field = new XFAObjectArray();\\n    this.subform = new XFAObjectArray();\\n  }\\n\\n  [$isUsable]() {\\n    if (!this[$extra]) {\\n      this[$extra] = {\\n        numberOfUse: 0,\\n      };\\n      return true;\\n    }\\n    return (\\n      !this.occur ||\\n      this.occur.max === -1 ||\\n      this[$extra].numberOfUse \u003C this.occur.max\\n    );\\n  }\\n\\n  [$cleanPage]() {\\n    delete this[$extra];\\n  }\\n\\n  [$getNextPage]() {\\n    if (!this[$extra]) {\\n      this[$extra] = {\\n        numberOfUse: 0,\\n      };\\n    }\\n\\n    const parent = this[$getParent]();\\n    if (parent.relation === \\\"orderedOccurrence\\\") {\\n      if (this[$isUsable]()) {\\n        this[$extra].numberOfUse += 1;\\n        return this;\\n      }\\n    }\\n\\n    return parent[$getNextPage]();\\n  }\\n\\n  [$getAvailableSpace]() {\\n    return this[$extra].space || { width: 0, height: 0 };\\n  }\\n\\n  [$toHTML]() {\\n    \u002F\u002F TODO: incomplete.\\n    if (!this[$extra]) {\\n      this[$extra] = {\\n        numberOfUse: 1,\\n      };\\n    }\\n\\n    const children = [];\\n    this[$extra].children = children;\\n\\n    const style = Object.create(null);\\n    if (this.medium && this.medium.short && this.medium.long) {\\n      style.width = measureToString(this.medium.short);\\n      style.height = measureToString(this.medium.long);\\n      this[$extra].space = {\\n        width: this.medium.short,\\n        height: this.medium.long,\\n      };\\n      if (this.medium.orientation === \\\"landscape\\\") {\\n        const x = style.width;\\n        style.width = style.height;\\n        style.height = x;\\n        this[$extra].space = {\\n          width: this.medium.long,\\n          height: this.medium.short,\\n        };\\n      }\\n    } else {\\n      warn(\\\"XFA - No medium specified in pageArea: please file a bug.\\\");\\n    }\\n\\n    this[$childrenToHTML]({\\n      filter: new Set([\\\"area\\\", \\\"draw\\\", \\\"field\\\", \\\"subform\\\"]),\\n      include: true,\\n    });\\n\\n    \u002F\u002F contentarea must be the last container to be sure it is\\n    \u002F\u002F on top of the others.\\n    this[$childrenToHTML]({\\n      filter: new Set([\\\"contentArea\\\"]),\\n      include: true,\\n    });\\n\\n    return HTMLResult.success({\\n      name: \\\"div\\\",\\n      children,\\n      attributes: {\\n        class: [\\\"xfaPage\\\"],\\n        id: this[$uid],\\n        style,\\n        xfaName: this.name,\\n      },\\n    });\\n  }\\n}\\n\\nclass PageSet extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"pageSet\\\", \u002F* hasChildren = *\u002F true);\\n    this.duplexImposition = getStringOption(attributes.duplexImposition, [\\n      \\\"longEdge\\\",\\n      \\\"shortEdge\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.relation = getStringOption(attributes.relation, [\\n      \\\"orderedOccurrence\\\",\\n      \\\"duplexPaginated\\\",\\n      \\\"simplexPaginated\\\",\\n    ]);\\n    this.relevant = getRelevant(attributes.relevant);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n    this.occur = null;\\n    this.pageArea = new XFAObjectArray();\\n    this.pageSet = new XFAObjectArray();\\n  }\\n\\n  [$cleanPage]() {\\n    for (const page of this.pageArea.children) {\\n      page[$cleanPage]();\\n    }\\n    for (const page of this.pageSet.children) {\\n      page[$cleanPage]();\\n    }\\n  }\\n\\n  [$isUsable]() {\\n    return (\\n      !this.occur ||\\n      this.occur.max === -1 ||\\n      this[$extra].numberOfUse \u003C this.occur.max\\n    );\\n  }\\n\\n  [$getNextPage]() {\\n    if (!this[$extra]) {\\n      this[$extra] = {\\n        numberOfUse: 1,\\n        pageIndex: -1,\\n        pageSetIndex: -1,\\n      };\\n    }\\n\\n    if (this.relation === \\\"orderedOccurrence\\\") {\\n      if (this[$extra].pageIndex + 1 \u003C this.pageArea.children.length) {\\n        this[$extra].pageIndex += 1;\\n        const pageArea = this.pageArea.children[this[$extra].pageIndex];\\n        return pageArea[$getNextPage]();\\n      }\\n\\n      if (this[$extra].pageSetIndex + 1 \u003C this.pageSet.children.length) {\\n        this[$extra].pageSetIndex += 1;\\n        return this.pageSet.children[this[$extra].pageSetIndex][$getNextPage]();\\n      }\\n\\n      if (this[$isUsable]()) {\\n        this[$extra].numberOfUse += 1;\\n        this[$extra].pageIndex = -1;\\n        this[$extra].pageSetIndex = -1;\\n        return this[$getNextPage]();\\n      }\\n\\n      const parent = this[$getParent]();\\n      if (parent instanceof PageSet) {\\n        return parent[$getNextPage]();\\n      }\\n\\n      this[$cleanPage]();\\n      return this[$getNextPage]();\\n    }\\n    const pageNumber = this[$getTemplateRoot]()[$extra].pageNumber;\\n    const parity = pageNumber % 2 === 0 ? \\\"even\\\" : \\\"odd\\\";\\n    const position = pageNumber === 0 ? \\\"first\\\" : \\\"rest\\\";\\n\\n    let page = this.pageArea.children.find(\\n      p => p.oddOrEven === parity && p.pagePosition === position\\n    );\\n    if (page) {\\n      return page;\\n    }\\n\\n    page = this.pageArea.children.find(\\n      p => p.oddOrEven === \\\"any\\\" && p.pagePosition === position\\n    );\\n    if (page) {\\n      return page;\\n    }\\n\\n    page = this.pageArea.children.find(\\n      p => p.oddOrEven === \\\"any\\\" && p.pagePosition === \\\"any\\\"\\n    );\\n    if (page) {\\n      return page;\\n    }\\n\\n    return this.pageArea.children[0];\\n  }\\n}\\n\\nclass Para extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"para\\\", \u002F* hasChildren = *\u002F true);\\n    this.hAlign = getStringOption(attributes.hAlign, [\\n      \\\"left\\\",\\n      \\\"center\\\",\\n      \\\"justify\\\",\\n      \\\"justifyAll\\\",\\n      \\\"radix\\\",\\n      \\\"right\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.lineHeight = attributes.lineHeight\\n      ? getMeasurement(attributes.lineHeight, \\\"0pt\\\")\\n      : \\\"\\\";\\n    this.marginLeft = attributes.marginLeft\\n      ? getMeasurement(attributes.marginLeft, \\\"0pt\\\")\\n      : \\\"\\\";\\n    this.marginRight = attributes.marginRight\\n      ? getMeasurement(attributes.marginRight, \\\"0pt\\\")\\n      : \\\"\\\";\\n    this.orphans = getInteger({\\n      data: attributes.orphans,\\n      defaultValue: 0,\\n      validate: x => x >= 0,\\n    });\\n    this.preserve = attributes.preserve || \\\"\\\";\\n    this.radixOffset = attributes.radixOffset\\n      ? getMeasurement(attributes.radixOffset, \\\"0pt\\\")\\n      : \\\"\\\";\\n    this.spaceAbove = attributes.spaceAbove\\n      ? getMeasurement(attributes.spaceAbove, \\\"0pt\\\")\\n      : \\\"\\\";\\n    this.spaceBelow = attributes.spaceBelow\\n      ? getMeasurement(attributes.spaceBelow, \\\"0pt\\\")\\n      : \\\"\\\";\\n    this.tabDefault = attributes.tabDefault\\n      ? getMeasurement(this.tabDefault)\\n      : \\\"\\\";\\n    this.tabStops = (attributes.tabStops || \\\"\\\")\\n      .trim()\\n      .split(\u002F\\\\s+\u002F)\\n      .map((x, i) => (i % 2 === 1 ? getMeasurement(x) : x));\\n    this.textIndent = attributes.textIndent\\n      ? getMeasurement(attributes.textIndent, \\\"0pt\\\")\\n      : \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.vAlign = getStringOption(attributes.vAlign, [\\n      \\\"top\\\",\\n      \\\"bottom\\\",\\n      \\\"middle\\\",\\n    ]);\\n    this.widows = getInteger({\\n      data: attributes.widows,\\n      defaultValue: 0,\\n      validate: x => x >= 0,\\n    });\\n    this.hyphenation = null;\\n  }\\n\\n  [$toStyle]() {\\n    const style = toStyle(this, \\\"hAlign\\\");\\n    if (this.marginLeft !== \\\"\\\") {\\n      style.paddingLeft = measureToString(this.marginLeft);\\n    }\\n    if (this.marginRight !== \\\"\\\") {\\n      style.paddingight = measureToString(this.marginRight);\\n    }\\n    if (this.spaceAbove !== \\\"\\\") {\\n      style.paddingTop = measureToString(this.spaceAbove);\\n    }\\n    if (this.spaceBelow !== \\\"\\\") {\\n      style.paddingBottom = measureToString(this.spaceBelow);\\n    }\\n    if (this.textIndent !== \\\"\\\") {\\n      style.textIndent = measureToString(this.textIndent);\\n      fixTextIndent(style);\\n    }\\n\\n    if (this.lineHeight > 0) {\\n      style.lineHeight = measureToString(this.lineHeight);\\n    }\\n\\n    if (this.tabDefault !== \\\"\\\") {\\n      style.tabSize = measureToString(this.tabDefault);\\n    }\\n\\n    if (this.tabStops.length > 0) {\\n      \u002F\u002F TODO\\n    }\\n\\n    if (this.hyphenatation) {\\n      Object.assign(style, this.hyphenatation[$toStyle]());\\n    }\\n\\n    return style;\\n  }\\n}\\n\\nclass PasswordEdit extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"passwordEdit\\\", \u002F* hasChildren = *\u002F true);\\n    this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\\n      \\\"auto\\\",\\n      \\\"off\\\",\\n      \\\"on\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.passwordChar = attributes.passwordChar || \\\"*\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.border = null;\\n    this.extras = null;\\n    this.margin = null;\\n  }\\n}\\n\\nclass Pattern extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"pattern\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\n      \\\"crossHatch\\\",\\n      \\\"crossDiagonal\\\",\\n      \\\"diagonalLeft\\\",\\n      \\\"diagonalRight\\\",\\n      \\\"horizontal\\\",\\n      \\\"vertical\\\",\\n    ]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.color = null;\\n    this.extras = null;\\n  }\\n\\n  [$toStyle](startColor) {\\n    startColor = startColor ? startColor[$toStyle]() : \\\"#FFFFFF\\\";\\n    const endColor = this.color ? this.color[$toStyle]() : \\\"#000000\\\";\\n    const width = 5;\\n    const cmd = \\\"repeating-linear-gradient\\\";\\n    const colors = `${startColor},${startColor} ${width}px,${endColor} ${width}px,${endColor} ${\\n      2 * width\\n    }px`;\\n    switch (this.type) {\\n      case \\\"crossHatch\\\":\\n        return `${cmd}(to top,${colors}) ${cmd}(to right,${colors})`;\\n      case \\\"crossDiagonal\\\":\\n        return `${cmd}(45deg,${colors}) ${cmd}(-45deg,${colors})`;\\n      case \\\"diagonalLeft\\\":\\n        return `${cmd}(45deg,${colors})`;\\n      case \\\"diagonalRight\\\":\\n        return `${cmd}(-45deg,${colors})`;\\n      case \\\"horizontal\\\":\\n        return `${cmd}(to top,${colors})`;\\n      case \\\"vertical\\\":\\n        return `${cmd}(to right,${colors})`;\\n    }\\n\\n    return \\\"\\\";\\n  }\\n}\\n\\nclass Picture extends StringObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"picture\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Proto extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"proto\\\", \u002F* hasChildren = *\u002F true);\\n    this.appearanceFilter = new XFAObjectArray();\\n    this.arc = new XFAObjectArray();\\n    this.area = new XFAObjectArray();\\n    this.assist = new XFAObjectArray();\\n    this.barcode = new XFAObjectArray();\\n    this.bindItems = new XFAObjectArray();\\n    this.bookend = new XFAObjectArray();\\n    this.boolean = new XFAObjectArray();\\n    this.border = new XFAObjectArray();\\n    this.break = new XFAObjectArray();\\n    this.breakAfter = new XFAObjectArray();\\n    this.breakBefore = new XFAObjectArray();\\n    this.button = new XFAObjectArray();\\n    this.calculate = new XFAObjectArray();\\n    this.caption = new XFAObjectArray();\\n    this.certificate = new XFAObjectArray();\\n    this.certificates = new XFAObjectArray();\\n    this.checkButton = new XFAObjectArray();\\n    this.choiceList = new XFAObjectArray();\\n    this.color = new XFAObjectArray();\\n    this.comb = new XFAObjectArray();\\n    this.connect = new XFAObjectArray();\\n    this.contentArea = new XFAObjectArray();\\n    this.corner = new XFAObjectArray();\\n    this.date = new XFAObjectArray();\\n    this.dateTime = new XFAObjectArray();\\n    this.dateTimeEdit = new XFAObjectArray();\\n    this.decimal = new XFAObjectArray();\\n    this.defaultUi = new XFAObjectArray();\\n    this.desc = new XFAObjectArray();\\n    this.digestMethod = new XFAObjectArray();\\n    this.digestMethods = new XFAObjectArray();\\n    this.draw = new XFAObjectArray();\\n    this.edge = new XFAObjectArray();\\n    this.encoding = new XFAObjectArray();\\n    this.encodings = new XFAObjectArray();\\n    this.encrypt = new XFAObjectArray();\\n    this.encryptData = new XFAObjectArray();\\n    this.encryption = new XFAObjectArray();\\n    this.encryptionMethod = new XFAObjectArray();\\n    this.encryptionMethods = new XFAObjectArray();\\n    this.event = new XFAObjectArray();\\n    this.exData = new XFAObjectArray();\\n    this.exObject = new XFAObjectArray();\\n    this.exclGroup = new XFAObjectArray();\\n    this.execute = new XFAObjectArray();\\n    this.extras = new XFAObjectArray();\\n    this.field = new XFAObjectArray();\\n    this.fill = new XFAObjectArray();\\n    this.filter = new XFAObjectArray();\\n    this.float = new XFAObjectArray();\\n    this.font = new XFAObjectArray();\\n    this.format = new XFAObjectArray();\\n    this.handler = new XFAObjectArray();\\n    this.hyphenation = new XFAObjectArray();\\n    this.image = new XFAObjectArray();\\n    this.imageEdit = new XFAObjectArray();\\n    this.integer = new XFAObjectArray();\\n    this.issuers = new XFAObjectArray();\\n    this.items = new XFAObjectArray();\\n    this.keep = new XFAObjectArray();\\n    this.keyUsage = new XFAObjectArray();\\n    this.line = new XFAObjectArray();\\n    this.linear = new XFAObjectArray();\\n    this.lockDocument = new XFAObjectArray();\\n    this.manifest = new XFAObjectArray();\\n    this.margin = new XFAObjectArray();\\n    this.mdp = new XFAObjectArray();\\n    this.medium = new XFAObjectArray();\\n    this.message = new XFAObjectArray();\\n    this.numericEdit = new XFAObjectArray();\\n    this.occur = new XFAObjectArray();\\n    this.oid = new XFAObjectArray();\\n    this.oids = new XFAObjectArray();\\n    this.overflow = new XFAObjectArray();\\n    this.pageArea = new XFAObjectArray();\\n    this.pageSet = new XFAObjectArray();\\n    this.para = new XFAObjectArray();\\n    this.passwordEdit = new XFAObjectArray();\\n    this.pattern = new XFAObjectArray();\\n    this.picture = new XFAObjectArray();\\n    this.radial = new XFAObjectArray();\\n    this.reason = new XFAObjectArray();\\n    this.reasons = new XFAObjectArray();\\n    this.rectangle = new XFAObjectArray();\\n    this.ref = new XFAObjectArray();\\n    this.script = new XFAObjectArray();\\n    this.setProperty = new XFAObjectArray();\\n    this.signData = new XFAObjectArray();\\n    this.signature = new XFAObjectArray();\\n    this.signing = new XFAObjectArray();\\n    this.solid = new XFAObjectArray();\\n    this.speak = new XFAObjectArray();\\n    this.stipple = new XFAObjectArray();\\n    this.subform = new XFAObjectArray();\\n    this.subformSet = new XFAObjectArray();\\n    this.subjectDN = new XFAObjectArray();\\n    this.subjectDNs = new XFAObjectArray();\\n    this.submit = new XFAObjectArray();\\n    this.text = new XFAObjectArray();\\n    this.textEdit = new XFAObjectArray();\\n    this.time = new XFAObjectArray();\\n    this.timeStamp = new XFAObjectArray();\\n    this.toolTip = new XFAObjectArray();\\n    this.traversal = new XFAObjectArray();\\n    this.traverse = new XFAObjectArray();\\n    this.ui = new XFAObjectArray();\\n    this.validate = new XFAObjectArray();\\n    this.value = new XFAObjectArray();\\n    this.variables = new XFAObjectArray();\\n  }\\n}\\n\\nclass Radial extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"radial\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\\"toEdge\\\", \\\"toCenter\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.color = null;\\n    this.extras = null;\\n  }\\n\\n  [$toStyle](startColor) {\\n    startColor = startColor ? startColor[$toStyle]() : \\\"#FFFFFF\\\";\\n    const endColor = this.color ? this.color[$toStyle]() : \\\"#000000\\\";\\n    const colors =\\n      this.type === \\\"toEdge\\\"\\n        ? `${startColor},${endColor}`\\n        : `${endColor},${startColor}`;\\n    return `radial-gradient(circle at center, ${colors})`;\\n  }\\n}\\n\\nclass Reason extends StringObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"reason\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Reasons extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"reasons\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\\"optional\\\", \\\"required\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.reason = new XFAObjectArray();\\n  }\\n}\\n\\nclass Rectangle extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"rectangle\\\", \u002F* hasChildren = *\u002F true);\\n    this.hand = getStringOption(attributes.hand, [\\\"even\\\", \\\"left\\\", \\\"right\\\"]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.corner = new XFAObjectArray(4);\\n    this.edge = new XFAObjectArray(4);\\n    this.fill = null;\\n  }\\n\\n  [$toHTML]() {\\n    const edge = this.edge.children.length\\n      ? this.edge.children[0]\\n      : new Edge({});\\n    const edgeStyle = edge[$toStyle]();\\n    const style = Object.create(null);\\n    if (this.fill?.presence === \\\"visible\\\") {\\n      Object.assign(style, this.fill[$toStyle]());\\n    } else {\\n      style.fill = \\\"transparent\\\";\\n    }\\n    style.strokeWidth = measureToString(\\n      edge.presence === \\\"visible\\\" ? edge.thickness : 0\\n    );\\n    style.stroke = edgeStyle.color;\\n\\n    const corner = this.corner.children.length\\n      ? this.corner.children[0]\\n      : new Corner({});\\n    const cornerStyle = corner[$toStyle]();\\n\\n    const rect = {\\n      name: \\\"rect\\\",\\n      attributes: {\\n        xmlns: SVG_NS,\\n        width: \\\"100%\\\",\\n        height: \\\"100%\\\",\\n        x: 0,\\n        y: 0,\\n        rx: cornerStyle.radius,\\n        ry: cornerStyle.radius,\\n        style,\\n      },\\n    };\\n\\n    const svg = {\\n      name: \\\"svg\\\",\\n      children: [rect],\\n      attributes: {\\n        xmlns: SVG_NS,\\n        style: {\\n          overflow: \\\"visible\\\",\\n        },\\n        width: \\\"100%\\\",\\n        height: \\\"100%\\\",\\n      },\\n    };\\n\\n    const parent = this[$getParent]()[$getParent]();\\n    if (hasMargin(parent)) {\\n      return HTMLResult.success({\\n        name: \\\"div\\\",\\n        attributes: {\\n          style: {\\n            display: \\\"inline\\\",\\n            width: \\\"100%\\\",\\n            height: \\\"100%\\\",\\n          },\\n        },\\n        children: [svg],\\n      });\\n    }\\n\\n    svg.attributes.style.position = \\\"absolute\\\";\\n    return HTMLResult.success(svg);\\n  }\\n}\\n\\nclass RefElement extends StringObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"ref\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Script extends StringObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"script\\\");\\n    this.binding = attributes.binding || \\\"\\\";\\n    this.contentType = attributes.contentType || \\\"\\\";\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.runAt = getStringOption(attributes.runAt, [\\n      \\\"client\\\",\\n      \\\"both\\\",\\n      \\\"server\\\",\\n    ]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass SetProperty extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"setProperty\\\");\\n    this.connection = attributes.connection || \\\"\\\";\\n    this.ref = attributes.ref || \\\"\\\";\\n    this.target = attributes.target || \\\"\\\";\\n  }\\n}\\n\\nclass SignData extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"signData\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.operation = getStringOption(attributes.operation, [\\n      \\\"sign\\\",\\n      \\\"clear\\\",\\n      \\\"verify\\\",\\n    ]);\\n    this.ref = attributes.ref || \\\"\\\";\\n    this.target = attributes.target || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.filter = null;\\n    this.manifest = null;\\n  }\\n}\\n\\nclass Signature extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"signature\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\\"PDF1.3\\\", \\\"PDF1.6\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.border = null;\\n    this.extras = null;\\n    this.filter = null;\\n    this.manifest = null;\\n    this.margin = null;\\n  }\\n}\\n\\nclass Signing extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"signing\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\\"optional\\\", \\\"required\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.certificate = new XFAObjectArray();\\n  }\\n}\\n\\nclass Solid extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"solid\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n  }\\n\\n  [$toStyle](startColor) {\\n    return startColor ? startColor[$toStyle]() : \\\"#FFFFFF\\\";\\n  }\\n}\\n\\nclass Speak extends StringObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"speak\\\");\\n    this.disable = getInteger({\\n      data: attributes.disable,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.id = attributes.id || \\\"\\\";\\n    this.priority = getStringOption(attributes.priority, [\\n      \\\"custom\\\",\\n      \\\"caption\\\",\\n      \\\"name\\\",\\n      \\\"toolTip\\\",\\n    ]);\\n    this.rid = attributes.rid || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Stipple extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"stipple\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.rate = getInteger({\\n      data: attributes.rate,\\n      defaultValue: 50,\\n      validate: x => x >= 0 && x \u003C= 100,\\n    });\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.color = null;\\n    this.extras = null;\\n  }\\n\\n  [$toStyle](bgColor) {\\n    const alpha = this.rate \u002F 100;\\n    return Util.makeHexColor(\\n      Math.round(bgColor.value.r * (1 - alpha) + this.value.r * alpha),\\n      Math.round(bgColor.value.g * (1 - alpha) + this.value.g * alpha),\\n      Math.round(bgColor.value.b * (1 - alpha) + this.value.b * alpha)\\n    );\\n  }\\n}\\n\\nclass Subform extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"subform\\\", \u002F* hasChildren = *\u002F true);\\n    this.access = getStringOption(attributes.access, [\\n      \\\"open\\\",\\n      \\\"nonInteractive\\\",\\n      \\\"protected\\\",\\n      \\\"readOnly\\\",\\n    ]);\\n    this.allowMacro = getInteger({\\n      data: attributes.allowMacro,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.anchorType = getStringOption(attributes.anchorType, [\\n      \\\"topLeft\\\",\\n      \\\"bottomCenter\\\",\\n      \\\"bottomLeft\\\",\\n      \\\"bottomRight\\\",\\n      \\\"middleCenter\\\",\\n      \\\"middleLeft\\\",\\n      \\\"middleRight\\\",\\n      \\\"topCenter\\\",\\n      \\\"topRight\\\",\\n    ]);\\n    this.colSpan = getInteger({\\n      data: attributes.colSpan,\\n      defaultValue: 1,\\n      validate: n => n >= 1 || n === -1,\\n    });\\n    this.columnWidths = (attributes.columnWidths || \\\"\\\")\\n      .trim()\\n      .split(\u002F\\\\s+\u002F)\\n      .map(x => (x === \\\"-1\\\" ? -1 : getMeasurement(x)));\\n    this.h = attributes.h ? getMeasurement(attributes.h) : \\\"\\\";\\n    this.hAlign = getStringOption(attributes.hAlign, [\\n      \\\"left\\\",\\n      \\\"center\\\",\\n      \\\"justify\\\",\\n      \\\"justifyAll\\\",\\n      \\\"radix\\\",\\n      \\\"right\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.layout = getStringOption(attributes.layout, [\\n      \\\"position\\\",\\n      \\\"lr-tb\\\",\\n      \\\"rl-row\\\",\\n      \\\"rl-tb\\\",\\n      \\\"row\\\",\\n      \\\"table\\\",\\n      \\\"tb\\\",\\n    ]);\\n    this.locale = attributes.locale || \\\"\\\";\\n    this.maxH = getMeasurement(attributes.maxH, \\\"0pt\\\");\\n    this.maxW = getMeasurement(attributes.maxW, \\\"0pt\\\");\\n    this.mergeMode = getStringOption(attributes.mergeMode, [\\n      \\\"consumeData\\\",\\n      \\\"matchTemplate\\\",\\n    ]);\\n    this.minH = getMeasurement(attributes.minH, \\\"0pt\\\");\\n    this.minW = getMeasurement(attributes.minW, \\\"0pt\\\");\\n    this.name = attributes.name || \\\"\\\";\\n    this.presence = getStringOption(attributes.presence, [\\n      \\\"visible\\\",\\n      \\\"hidden\\\",\\n      \\\"inactive\\\",\\n      \\\"invisible\\\",\\n    ]);\\n    this.relevant = getRelevant(attributes.relevant);\\n    this.restoreState = getStringOption(attributes.restoreState, [\\n      \\\"manual\\\",\\n      \\\"auto\\\",\\n    ]);\\n    this.scope = getStringOption(attributes.scope, [\\\"name\\\", \\\"none\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.w = attributes.w ? getMeasurement(attributes.w) : \\\"\\\";\\n    this.x = getMeasurement(attributes.x, \\\"0pt\\\");\\n    this.y = getMeasurement(attributes.y, \\\"0pt\\\");\\n    this.assist = null;\\n    this.bind = null;\\n    this.bookend = null;\\n    this.border = null;\\n    this.break = null;\\n    this.calculate = null;\\n    this.desc = null;\\n    this.extras = null;\\n    this.keep = null;\\n    this.margin = null;\\n    this.occur = null;\\n    this.overflow = null;\\n    this.pageSet = null;\\n    this.para = null;\\n    this.traversal = null;\\n    this.validate = null;\\n    this.variables = null;\\n    this.area = new XFAObjectArray();\\n    this.breakAfter = new XFAObjectArray();\\n    this.breakBefore = new XFAObjectArray();\\n    this.connect = new XFAObjectArray();\\n    this.draw = new XFAObjectArray();\\n    this.event = new XFAObjectArray();\\n    this.exObject = new XFAObjectArray();\\n    this.exclGroup = new XFAObjectArray();\\n    this.field = new XFAObjectArray();\\n    this.proto = new XFAObjectArray();\\n    this.setProperty = new XFAObjectArray();\\n    this.subform = new XFAObjectArray();\\n    this.subformSet = new XFAObjectArray();\\n  }\\n\\n  [$getSubformParent]() {\\n    const parent = this[$getParent]();\\n    if (parent instanceof SubformSet) {\\n      return parent[$getSubformParent]();\\n    }\\n    return parent;\\n  }\\n\\n  [$isBindable]() {\\n    return true;\\n  }\\n\\n  [$isThereMoreWidth]() {\\n    return (\\n      (this.layout.endsWith(\\\"-tb\\\") &&\\n        this[$extra].attempt === 0 &&\\n        this[$extra].numberInLine > 0) ||\\n      this[$getParent]()[$isThereMoreWidth]()\\n    );\\n  }\\n\\n  *[$getContainedChildren]() {\\n    \u002F\u002F This function is overriden in order to fake that subforms under\\n    \u002F\u002F this set are in fact under parent subform.\\n    yield* getContainedChildren(this);\\n  }\\n\\n  [$flushHTML]() {\\n    return flushHTML(this);\\n  }\\n\\n  [$addHTML](html, bbox) {\\n    addHTML(this, html, bbox);\\n  }\\n\\n  [$getAvailableSpace]() {\\n    return getAvailableSpace(this);\\n  }\\n\\n  [$isSplittable]() {\\n    \u002F\u002F We cannot cache the result here because the contentArea\\n    \u002F\u002F can change.\\n    const parent = this[$getSubformParent]();\\n    if (!parent[$isSplittable]()) {\\n      return false;\\n    }\\n\\n    if (this[$extra]._isSplittable !== undefined) {\\n      return this[$extra]._isSplittable;\\n    }\\n\\n    if (this.layout === \\\"position\\\" || this.layout.includes(\\\"row\\\")) {\\n      this[$extra]._isSplittable = false;\\n      return false;\\n    }\\n\\n    if (this.keep && this.keep.intact !== \\\"none\\\") {\\n      this[$extra]._isSplittable = false;\\n      return false;\\n    }\\n\\n    if (parent.layout?.endsWith(\\\"-tb\\\") && parent[$extra].numberInLine !== 0) {\\n      \u002F\u002F If parent can fit in w=100 and there's already an element which takes\\n      \u002F\u002F 90 then we've 10 for this element. Suppose this element has a tb layout\\n      \u002F\u002F and 5 elements have a width of 7 and the 6th has a width of 20:\\n      \u002F\u002F then this element (and all its content) must move on the next line.\\n      \u002F\u002F If this element is splittable then the first 5 children will stay\\n      \u002F\u002F at the end of the line: we don't want that.\\n      return false;\\n    }\\n\\n    this[$extra]._isSplittable = true;\\n\\n    return true;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    setTabIndex(this);\\n\\n    if (this.break) {\\n      \u002F\u002F break element is deprecated so plug it on one of its replacement\\n      \u002F\u002F breakBefore or breakAfter.\\n      if (this.break.after !== \\\"auto\\\" || this.break.afterTarget !== \\\"\\\") {\\n        const node = new BreakAfter({\\n          targetType: this.break.after,\\n          target: this.break.afterTarget,\\n          startNew: this.break.startNew.toString(),\\n        });\\n        node[$globalData] = this[$globalData];\\n        this[$appendChild](node);\\n        this.breakAfter.push(node);\\n      }\\n\\n      if (this.break.before !== \\\"auto\\\" || this.break.beforeTarget !== \\\"\\\") {\\n        const node = new BreakBefore({\\n          targetType: this.break.before,\\n          target: this.break.beforeTarget,\\n          startNew: this.break.startNew.toString(),\\n        });\\n        node[$globalData] = this[$globalData];\\n        this[$appendChild](node);\\n        this.breakBefore.push(node);\\n      }\\n\\n      if (this.break.overflowTarget !== \\\"\\\") {\\n        const node = new Overflow({\\n          target: this.break.overflowTarget,\\n          leader: this.break.overflowLeader,\\n          trailer: this.break.overflowTrailer,\\n        });\\n        node[$globalData] = this[$globalData];\\n        this[$appendChild](node);\\n        this.overflow.push(node);\\n      }\\n\\n      this[$removeChild](this.break);\\n      this.break = null;\\n    }\\n\\n    if (this.presence === \\\"hidden\\\" || this.presence === \\\"inactive\\\") {\\n      return HTMLResult.EMPTY;\\n    }\\n\\n    if (\\n      this.breakBefore.children.length > 1 ||\\n      this.breakAfter.children.length > 1\\n    ) {\\n      \u002F\u002F Specs are always talking about the breakBefore element\\n      \u002F\u002F and it doesn't really make sense to have several ones.\\n      warn(\\n        \\\"XFA - Several breakBefore or breakAfter in subforms: please file a bug.\\\"\\n      );\\n    }\\n\\n    if (this.breakBefore.children.length >= 1) {\\n      const breakBefore = this.breakBefore.children[0];\\n      if (handleBreak(breakBefore)) {\\n        return HTMLResult.breakNode(breakBefore);\\n      }\\n    }\\n\\n    if (this[$extra]?.afterBreakAfter) {\\n      return HTMLResult.EMPTY;\\n    }\\n\\n    \u002F\u002F TODO: incomplete.\\n    fixDimensions(this);\\n    const children = [];\\n    const attributes = {\\n      id: this[$uid],\\n      class: [],\\n    };\\n\\n    setAccess(this, attributes.class);\\n\\n    if (!this[$extra]) {\\n      this[$extra] = Object.create(null);\\n    }\\n\\n    Object.assign(this[$extra], {\\n      children,\\n      line: null,\\n      attributes,\\n      attempt: 0,\\n      numberInLine: 0,\\n      availableSpace: {\\n        width: Math.min(this.w || Infinity, availableSpace.width),\\n        height: Math.min(this.h || Infinity, availableSpace.height),\\n      },\\n      width: 0,\\n      height: 0,\\n      prevHeight: 0,\\n      currentWidth: 0,\\n    });\\n\\n    const root = this[$getTemplateRoot]();\\n    const savedNoLayoutFailure = root[$extra].noLayoutFailure;\\n\\n    const isSplittable = this[$isSplittable]();\\n    if (!isSplittable) {\\n      setFirstUnsplittable(this);\\n    }\\n\\n    if (!checkDimensions(this, availableSpace)) {\\n      return HTMLResult.FAILURE;\\n    }\\n\\n    const filter = new Set([\\n      \\\"area\\\",\\n      \\\"draw\\\",\\n      \\\"exclGroup\\\",\\n      \\\"field\\\",\\n      \\\"subform\\\",\\n      \\\"subformSet\\\",\\n    ]);\\n\\n    if (this.layout.includes(\\\"row\\\")) {\\n      const columnWidths = this[$getSubformParent]().columnWidths;\\n      if (Array.isArray(columnWidths) && columnWidths.length > 0) {\\n        this[$extra].columnWidths = columnWidths;\\n        this[$extra].currentColumn = 0;\\n      }\\n    }\\n\\n    const style = toStyle(\\n      this,\\n      \\\"anchorType\\\",\\n      \\\"dimensions\\\",\\n      \\\"position\\\",\\n      \\\"presence\\\",\\n      \\\"border\\\",\\n      \\\"margin\\\",\\n      \\\"hAlign\\\"\\n    );\\n    const classNames = [\\\"xfaSubform\\\"];\\n    const cl = layoutClass(this);\\n    if (cl) {\\n      classNames.push(cl);\\n    }\\n\\n    attributes.style = style;\\n    attributes.class = classNames;\\n\\n    if (this.name) {\\n      attributes.xfaName = this.name;\\n    }\\n\\n    if (this.overflow) {\\n      const overflowExtra = this.overflow[$getExtra]();\\n      if (overflowExtra.addLeader) {\\n        overflowExtra.addLeader = false;\\n        handleOverflow(this, overflowExtra.leader, availableSpace);\\n      }\\n    }\\n\\n    this[$pushPara]();\\n    const isLrTb = this.layout === \\\"lr-tb\\\" || this.layout === \\\"rl-tb\\\";\\n    const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;\\n    for (; this[$extra].attempt \u003C maxRun; this[$extra].attempt++) {\\n      if (isLrTb && this[$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {\\n        \u002F\u002F If the layout is lr-tb then having attempt equals to\\n        \u002F\u002F MAX_ATTEMPTS_FOR_LRTB_LAYOUT-1 means that we're trying to layout\\n        \u002F\u002F on the next line so this on is empty.\\n        this[$extra].numberInLine = 0;\\n      }\\n      const result = this[$childrenToHTML]({\\n        filter,\\n        include: true,\\n      });\\n      if (result.success) {\\n        break;\\n      }\\n      if (result.isBreak()) {\\n        this[$popPara]();\\n        return result;\\n      }\\n      if (\\n        isLrTb &&\\n        this[$extra].attempt === 0 &&\\n        this[$extra].numberInLine === 0 &&\\n        !root[$extra].noLayoutFailure\\n      ) {\\n        \u002F\u002F We're failing to put the first element on the line so no\\n        \u002F\u002F need to test on the next line.\\n        \u002F\u002F The goal is not only to avoid some useless checks but to avoid\\n        \u002F\u002F bugs too: if a descendant managed to put a node and failed\\n        \u002F\u002F on the next one, going to the next step here will imply to\\n        \u002F\u002F visit the descendant again, clear [$extra].children and restart\\n        \u002F\u002F on the failing node, consequently the first node just disappears\\n        \u002F\u002F because it has never been flushed.\\n        this[$extra].attempt = maxRun;\\n        break;\\n      }\\n    }\\n\\n    this[$popPara]();\\n    if (!isSplittable) {\\n      unsetFirstUnsplittable(this);\\n    }\\n    root[$extra].noLayoutFailure = savedNoLayoutFailure;\\n\\n    if (this[$extra].attempt === maxRun) {\\n      if (this.overflow) {\\n        this[$getTemplateRoot]()[$extra].overflowNode = this.overflow;\\n      }\\n\\n      if (!isSplittable) {\\n        \u002F\u002F Since a new try will happen in a new container with maybe\\n        \u002F\u002F new dimensions, we invalidate already layed out components.\\n        delete this[$extra];\\n      }\\n      return HTMLResult.FAILURE;\\n    }\\n\\n    if (this.overflow) {\\n      const overflowExtra = this.overflow[$getExtra]();\\n      if (overflowExtra.addTrailer) {\\n        overflowExtra.addTrailer = false;\\n        handleOverflow(this, overflowExtra.trailer, availableSpace);\\n      }\\n    }\\n\\n    let marginH = 0;\\n    let marginV = 0;\\n    if (this.margin) {\\n      marginH = this.margin.leftInset + this.margin.rightInset;\\n      marginV = this.margin.topInset + this.margin.bottomInset;\\n    }\\n\\n    const width = Math.max(this[$extra].width + marginH, this.w || 0);\\n    const height = Math.max(this[$extra].height + marginV, this.h || 0);\\n    const bbox = [this.x, this.y, width, height];\\n\\n    if (this.w === \\\"\\\") {\\n      style.width = measureToString(width);\\n    }\\n    if (this.h === \\\"\\\") {\\n      style.height = measureToString(height);\\n    }\\n\\n    if (\\n      (style.width === \\\"0px\\\" || style.height === \\\"0px\\\") &&\\n      children.length === 0\\n    ) {\\n      return HTMLResult.EMPTY;\\n    }\\n\\n    const html = {\\n      name: \\\"div\\\",\\n      attributes,\\n      children,\\n    };\\n\\n    applyAssist(this, attributes);\\n\\n    const result = HTMLResult.success(createWrapper(this, html), bbox);\\n\\n    if (this.breakAfter.children.length >= 1) {\\n      const breakAfter = this.breakAfter.children[0];\\n      if (handleBreak(breakAfter)) {\\n        this[$extra].afterBreakAfter = result;\\n        return HTMLResult.breakNode(breakAfter);\\n      }\\n    }\\n\\n    delete this[$extra];\\n\\n    return result;\\n  }\\n}\\n\\nclass SubformSet extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"subformSet\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.relation = getStringOption(attributes.relation, [\\n      \\\"ordered\\\",\\n      \\\"choice\\\",\\n      \\\"unordered\\\",\\n    ]);\\n    this.relevant = getRelevant(attributes.relevant);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.bookend = null;\\n    this.break = null;\\n    this.desc = null;\\n    this.extras = null;\\n    this.occur = null;\\n    this.overflow = null;\\n    this.breakAfter = new XFAObjectArray();\\n    this.breakBefore = new XFAObjectArray();\\n    this.subform = new XFAObjectArray();\\n    this.subformSet = new XFAObjectArray();\\n\\n    \u002F\u002F TODO: need to handle break stuff and relation.\\n  }\\n\\n  *[$getContainedChildren]() {\\n    \u002F\u002F This function is overriden in order to fake that subforms under\\n    \u002F\u002F this set are in fact under parent subform.\\n    yield* getContainedChildren(this);\\n  }\\n\\n  [$getSubformParent]() {\\n    let parent = this[$getParent]();\\n    while (!(parent instanceof Subform)) {\\n      parent = parent[$getParent]();\\n    }\\n    return parent;\\n  }\\n\\n  [$isBindable]() {\\n    return true;\\n  }\\n}\\n\\nclass SubjectDN extends ContentObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"subjectDN\\\");\\n    this.delimiter = attributes.delimiter || \\\",\\\";\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n\\n  [$finalize]() {\\n    this[$content] = new Map(\\n      this[$content].split(this.delimiter).map(kv => {\\n        kv = kv.split(\\\"=\\\", 2);\\n        kv[0] = kv[0].trim();\\n        return kv;\\n      })\\n    );\\n  }\\n}\\n\\nclass SubjectDNs extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"subjectDNs\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\\"optional\\\", \\\"required\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.subjectDN = new XFAObjectArray();\\n  }\\n}\\n\\nclass Submit extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"submit\\\", \u002F* hasChildren = *\u002F true);\\n    this.embedPDF = getInteger({\\n      data: attributes.embedPDF,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.format = getStringOption(attributes.format, [\\n      \\\"xdp\\\",\\n      \\\"formdata\\\",\\n      \\\"pdf\\\",\\n      \\\"urlencoded\\\",\\n      \\\"xfd\\\",\\n      \\\"xml\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.target = attributes.target || \\\"\\\";\\n    this.textEncoding = getKeyword({\\n      data: attributes.textEncoding\\n        ? attributes.textEncoding.toLowerCase()\\n        : \\\"\\\",\\n      defaultValue: \\\"\\\",\\n      validate: k =>\\n        [\\n          \\\"utf-8\\\",\\n          \\\"big-five\\\",\\n          \\\"fontspecific\\\",\\n          \\\"gbk\\\",\\n          \\\"gb-18030\\\",\\n          \\\"gb-2312\\\",\\n          \\\"ksc-5601\\\",\\n          \\\"none\\\",\\n          \\\"shift-jis\\\",\\n          \\\"ucs-2\\\",\\n          \\\"utf-16\\\",\\n        ].includes(k) || k.match(\u002Fiso-8859-\\\\d{2}\u002F),\\n    });\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.xdpContent = attributes.xdpContent || \\\"\\\";\\n    this.encrypt = null;\\n    this.encryptData = new XFAObjectArray();\\n    this.signData = new XFAObjectArray();\\n  }\\n}\\n\\nclass Template extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"template\\\", \u002F* hasChildren = *\u002F true);\\n    this.baseProfile = getStringOption(attributes.baseProfile, [\\n      \\\"full\\\",\\n      \\\"interactiveForms\\\",\\n    ]);\\n    this.extras = null;\\n\\n    \u002F\u002F Spec is unclear:\\n    \u002F\u002F  A container element that describes a single subform capable of\\n    \u002F\u002F  enclosing other containers.\\n    \u002F\u002F Can we have more than one subform ?\\n    this.subform = new XFAObjectArray();\\n  }\\n\\n  [$finalize]() {\\n    if (this.subform.children.length === 0) {\\n      warn(\\\"XFA - No subforms in template node.\\\");\\n    }\\n    if (this.subform.children.length >= 2) {\\n      warn(\\\"XFA - Several subforms in template node: please file a bug.\\\");\\n    }\\n    this[$tabIndex] = DEFAULT_TAB_INDEX;\\n  }\\n\\n  [$isSplittable]() {\\n    return true;\\n  }\\n\\n  [$searchNode](expr, container) {\\n    if (expr.startsWith(\\\"#\\\")) {\\n      \u002F\u002F This is an id.\\n      return [this[$ids].get(expr.slice(1))];\\n    }\\n    return searchNode(this, container, expr, true, true);\\n  }\\n\\n  \u002F**\\n   * This function is a generator because the conversion into\\n   * pages is done asynchronously and we want to save the state\\n   * of the function where we were in the previous iteration.\\n   *\u002F\\n  *[$toPages]() {\\n    if (!this.subform.children.length) {\\n      return HTMLResult.success({\\n        name: \\\"div\\\",\\n        children: [],\\n      });\\n    }\\n    this[$extra] = {\\n      overflowNode: null,\\n      firstUnsplittable: null,\\n      currentContentArea: null,\\n      currentPageArea: null,\\n      noLayoutFailure: false,\\n      pageNumber: 1,\\n      pagePosition: \\\"first\\\",\\n      oddOrEven: \\\"odd\\\",\\n      blankOrNotBlank: \\\"nonBlank\\\",\\n      paraStack: [],\\n    };\\n\\n    const root = this.subform.children[0];\\n    root.pageSet[$cleanPage]();\\n\\n    const pageAreas = root.pageSet.pageArea.children;\\n    const mainHtml = {\\n      name: \\\"div\\\",\\n      children: [],\\n    };\\n\\n    let pageArea = null;\\n    let breakBefore = null;\\n    let breakBeforeTarget = null;\\n    if (root.breakBefore.children.length >= 1) {\\n      breakBefore = root.breakBefore.children[0];\\n      breakBeforeTarget = breakBefore.target;\\n    } else if (\\n      root.subform.children.length >= 1 &&\\n      root.subform.children[0].breakBefore.children.length >= 1\\n    ) {\\n      breakBefore = root.subform.children[0].breakBefore.children[0];\\n      breakBeforeTarget = breakBefore.target;\\n    } else if (root.break?.beforeTarget) {\\n      breakBefore = root.break;\\n      breakBeforeTarget = breakBefore.beforeTarget;\\n    } else if (\\n      root.subform.children.length >= 1 &&\\n      root.subform.children[0].break?.beforeTarget\\n    ) {\\n      breakBefore = root.subform.children[0].break;\\n      breakBeforeTarget = breakBefore.beforeTarget;\\n    }\\n\\n    if (breakBefore) {\\n      const target = this[$searchNode](\\n        breakBeforeTarget,\\n        breakBefore[$getParent]()\\n      );\\n      if (target instanceof PageArea) {\\n        pageArea = target;\\n        \u002F\u002F Consume breakBefore.\\n        breakBefore[$extra] = {};\\n      }\\n    }\\n\\n    if (!pageArea) {\\n      pageArea = pageAreas[0];\\n    }\\n\\n    pageArea[$extra] = {\\n      numberOfUse: 1,\\n    };\\n\\n    const pageAreaParent = pageArea[$getParent]();\\n    pageAreaParent[$extra] = {\\n      numberOfUse: 1,\\n      pageIndex: pageAreaParent.pageArea.children.indexOf(pageArea),\\n      pageSetIndex: 0,\\n    };\\n\\n    let targetPageArea;\\n    let leader = null;\\n    let trailer = null;\\n    let hasSomething = true;\\n    let hasSomethingCounter = 0;\\n    let startIndex = 0;\\n\\n    while (true) {\\n      if (!hasSomething) {\\n        mainHtml.children.pop();\\n        \u002F\u002F Nothing has been added in the previous page\\n        if (++hasSomethingCounter === MAX_EMPTY_PAGES) {\\n          warn(\\\"XFA - Something goes wrong: please file a bug.\\\");\\n          return mainHtml;\\n        }\\n      } else {\\n        hasSomethingCounter = 0;\\n      }\\n\\n      targetPageArea = null;\\n      this[$extra].currentPageArea = pageArea;\\n      const page = pageArea[$toHTML]().html;\\n      mainHtml.children.push(page);\\n\\n      if (leader) {\\n        this[$extra].noLayoutFailure = true;\\n        page.children.push(leader[$toHTML](pageArea[$extra].space).html);\\n        leader = null;\\n      }\\n\\n      if (trailer) {\\n        this[$extra].noLayoutFailure = true;\\n        page.children.push(trailer[$toHTML](pageArea[$extra].space).html);\\n        trailer = null;\\n      }\\n\\n      const contentAreas = pageArea.contentArea.children;\\n      const htmlContentAreas = page.children.filter(node =>\\n        node.attributes.class.includes(\\\"xfaContentarea\\\")\\n      );\\n\\n      hasSomething = false;\\n      this[$extra].firstUnsplittable = null;\\n      this[$extra].noLayoutFailure = false;\\n\\n      const flush = index => {\\n        const html = root[$flushHTML]();\\n        if (html) {\\n          hasSomething ||= html.children?.length > 0;\\n          htmlContentAreas[index].children.push(html);\\n        }\\n      };\\n\\n      for (let i = startIndex, ii = contentAreas.length; i \u003C ii; i++) {\\n        const contentArea = (this[$extra].currentContentArea = contentAreas[i]);\\n        const space = { width: contentArea.w, height: contentArea.h };\\n        startIndex = 0;\\n\\n        if (leader) {\\n          htmlContentAreas[i].children.push(leader[$toHTML](space).html);\\n          leader = null;\\n        }\\n\\n        if (trailer) {\\n          htmlContentAreas[i].children.push(trailer[$toHTML](space).html);\\n          trailer = null;\\n        }\\n\\n        const html = root[$toHTML](space);\\n        if (html.success) {\\n          if (html.html) {\\n            hasSomething ||= html.html.children?.length > 0;\\n            htmlContentAreas[i].children.push(html.html);\\n          } else if (!hasSomething && mainHtml.children.length > 1) {\\n            mainHtml.children.pop();\\n          }\\n          return mainHtml;\\n        }\\n\\n        if (html.isBreak()) {\\n          const node = html.breakNode;\\n          flush(i);\\n\\n          if (node.targetType === \\\"auto\\\") {\\n            continue;\\n          }\\n\\n          if (node.leader) {\\n            leader = this[$searchNode](node.leader, node[$getParent]());\\n            leader = leader ? leader[0] : null;\\n          }\\n\\n          if (node.trailer) {\\n            trailer = this[$searchNode](node.trailer, node[$getParent]());\\n            trailer = trailer ? trailer[0] : null;\\n          }\\n\\n          if (node.targetType === \\\"pageArea\\\") {\\n            targetPageArea = node[$extra].target;\\n            i = Infinity;\\n          } else if (!node[$extra].target) {\\n            \u002F\u002F We stay on the same page.\\n            i = node[$extra].index;\\n          } else {\\n            targetPageArea = node[$extra].target;\\n            startIndex = node[$extra].index + 1;\\n            i = Infinity;\\n          }\\n\\n          continue;\\n        }\\n\\n        if (this[$extra].overflowNode) {\\n          const node = this[$extra].overflowNode;\\n          this[$extra].overflowNode = null;\\n\\n          const overflowExtra = node[$getExtra]();\\n          const target = overflowExtra.target;\\n          overflowExtra.addLeader = overflowExtra.leader !== null;\\n          overflowExtra.addTrailer = overflowExtra.trailer !== null;\\n\\n          flush(i);\\n\\n          const currentIndex = i;\\n\\n          i = Infinity;\\n          if (target instanceof PageArea) {\\n            \u002F\u002F We must stop the contentAreas filling and go to the next page.\\n            targetPageArea = target;\\n          } else if (target instanceof ContentArea) {\\n            const index = contentAreas.indexOf(target);\\n            if (index !== -1) {\\n              if (index > currentIndex) {\\n                \u002F\u002F In the next loop iteration `i` will be incremented, note the\\n                \u002F\u002F `continue` just below, hence we need to subtract one here.\\n                i = index - 1;\\n              } else {\\n                \u002F\u002F The targetted contentArea has already been filled\\n                \u002F\u002F so create a new page.\\n                startIndex = index;\\n              }\\n            } else {\\n              targetPageArea = target[$getParent]();\\n              startIndex = targetPageArea.contentArea.children.indexOf(target);\\n            }\\n          }\\n          continue;\\n        }\\n\\n        flush(i);\\n      }\\n\\n      this[$extra].pageNumber += 1;\\n      if (targetPageArea) {\\n        if (targetPageArea[$isUsable]()) {\\n          targetPageArea[$extra].numberOfUse += 1;\\n        } else {\\n          targetPageArea = null;\\n        }\\n      }\\n      pageArea = targetPageArea || pageArea[$getNextPage]();\\n      yield null;\\n    }\\n  }\\n}\\n\\nclass Text extends ContentObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"text\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.maxChars = getInteger({\\n      data: attributes.maxChars,\\n      defaultValue: 0,\\n      validate: x => x >= 0,\\n    });\\n    this.name = attributes.name || \\\"\\\";\\n    this.rid = attributes.rid || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n\\n  [$acceptWhitespace]() {\\n    return true;\\n  }\\n\\n  [$onChild](child) {\\n    if (child[$namespaceId] === NamespaceIds.xhtml.id) {\\n      this[$content] = child;\\n      return true;\\n    }\\n    warn(`XFA - Invalid content in Text: ${child[$nodeName]}.`);\\n    return false;\\n  }\\n\\n  [$onText](str) {\\n    if (this[$content] instanceof XFAObject) {\\n      return;\\n    }\\n    super[$onText](str);\\n  }\\n\\n  [$finalize]() {\\n    if (typeof this[$content] === \\\"string\\\") {\\n      this[$content] = this[$content].replaceAll(\\\"\\\\r\\\\n\\\", \\\"\\\\n\\\");\\n    }\\n  }\\n\\n  [$getExtra]() {\\n    if (typeof this[$content] === \\\"string\\\") {\\n      return this[$content]\\n        .split(\u002F[\\\\u2029\\\\u2028\\\\n]\u002F)\\n        .reduce((acc, line) => {\\n          if (line) {\\n            acc.push(line);\\n          }\\n          return acc;\\n        }, [])\\n        .join(\\\"\\\\n\\\");\\n    }\\n    return this[$content][$text]();\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    if (typeof this[$content] === \\\"string\\\") {\\n      \u002F\u002F \\\\u2028 is a line separator.\\n      \u002F\u002F \\\\u2029 is a paragraph separator.\\n      const html = valueToHtml(this[$content]).html;\\n\\n      if (this[$content].includes(\\\"\\\\u2029\\\")) {\\n        \u002F\u002F We've plain text containing a paragraph separator\\n        \u002F\u002F so convert it into a set of \u003Cp>.\\n        html.name = \\\"div\\\";\\n        html.children = [];\\n        this[$content]\\n          .split(\\\"\\\\u2029\\\")\\n          .map(para =>\\n            \u002F\u002F Convert a paragraph into a set of \u003Cspan> (for lines)\\n            \u002F\u002F separated by \u003Cbr>.\\n            para.split(\u002F[\\\\u2028\\\\n]\u002F).reduce((acc, line) => {\\n              acc.push(\\n                {\\n                  name: \\\"span\\\",\\n                  value: line,\\n                },\\n                {\\n                  name: \\\"br\\\",\\n                }\\n              );\\n              return acc;\\n            }, [])\\n          )\\n          .forEach(lines => {\\n            html.children.push({\\n              name: \\\"p\\\",\\n              children: lines,\\n            });\\n          });\\n      } else if (\u002F[\\\\u2028\\\\n]\u002F.test(this[$content])) {\\n        html.name = \\\"div\\\";\\n        html.children = [];\\n        \u002F\u002F Convert plain text into a set of \u003Cspan> (for lines)\\n        \u002F\u002F separated by \u003Cbr>.\\n        this[$content].split(\u002F[\\\\u2028\\\\n]\u002F).forEach(line => {\\n          html.children.push(\\n            {\\n              name: \\\"span\\\",\\n              value: line,\\n            },\\n            {\\n              name: \\\"br\\\",\\n            }\\n          );\\n        });\\n      }\\n\\n      return HTMLResult.success(html);\\n    }\\n\\n    return this[$content][$toHTML](availableSpace);\\n  }\\n}\\n\\nclass TextEdit extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"textEdit\\\", \u002F* hasChildren = *\u002F true);\\n    this.allowRichText = getInteger({\\n      data: attributes.allowRichText,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\\n      \\\"auto\\\",\\n      \\\"off\\\",\\n      \\\"on\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.multiLine = getInteger({\\n      data: attributes.multiLine,\\n      defaultValue: \\\"\\\",\\n      validate: x => x === 0 || x === 1,\\n    });\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.vScrollPolicy = getStringOption(attributes.vScrollPolicy, [\\n      \\\"auto\\\",\\n      \\\"off\\\",\\n      \\\"on\\\",\\n    ]);\\n    this.border = null;\\n    this.comb = null;\\n    this.extras = null;\\n    this.margin = null;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    \u002F\u002F TODO: incomplete.\\n    const style = toStyle(this, \\\"border\\\", \\\"font\\\", \\\"margin\\\");\\n    let html;\\n    const field = this[$getParent]()[$getParent]();\\n    if (this.multiLine === \\\"\\\") {\\n      this.multiLine = field instanceof Draw ? 1 : 0;\\n    }\\n    if (this.multiLine === 1) {\\n      html = {\\n        name: \\\"textarea\\\",\\n        attributes: {\\n          dataId: field[$data]?.[$uid] || field[$uid],\\n          fieldId: field[$uid],\\n          class: [\\\"xfaTextfield\\\"],\\n          style,\\n          \\\"aria-label\\\": ariaLabel(field),\\n          \\\"aria-required\\\": false,\\n        },\\n      };\\n    } else {\\n      html = {\\n        name: \\\"input\\\",\\n        attributes: {\\n          type: \\\"text\\\",\\n          dataId: field[$data]?.[$uid] || field[$uid],\\n          fieldId: field[$uid],\\n          class: [\\\"xfaTextfield\\\"],\\n          style,\\n          \\\"aria-label\\\": ariaLabel(field),\\n          \\\"aria-required\\\": false,\\n        },\\n      };\\n    }\\n\\n    if (isRequired(field)) {\\n      html.attributes[\\\"aria-required\\\"] = true;\\n      html.attributes.required = true;\\n    }\\n\\n    return HTMLResult.success({\\n      name: \\\"label\\\",\\n      attributes: {\\n        class: [\\\"xfaLabel\\\"],\\n      },\\n      children: [html],\\n    });\\n  }\\n}\\n\\nclass Time extends StringObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"time\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n\\n  [$finalize]() {\\n    \u002F\u002F TODO: need to handle the string as a time and not as a date.\\n    const date = this[$content].trim();\\n    this[$content] = date ? new Date(date) : null;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    return valueToHtml(this[$content] ? this[$content].toString() : \\\"\\\");\\n  }\\n}\\n\\nclass TimeStamp extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"timeStamp\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.server = attributes.server || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\\"optional\\\", \\\"required\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass ToolTip extends StringObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"toolTip\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.rid = attributes.rid || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Traversal extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"traversal\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n    this.traverse = new XFAObjectArray();\\n  }\\n}\\n\\nclass Traverse extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"traverse\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.operation = getStringOption(attributes.operation, [\\n      \\\"next\\\",\\n      \\\"back\\\",\\n      \\\"down\\\",\\n      \\\"first\\\",\\n      \\\"left\\\",\\n      \\\"right\\\",\\n      \\\"up\\\",\\n    ]);\\n    this.ref = attributes.ref || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n    this.script = null;\\n  }\\n\\n  get name() {\\n    \u002F\u002F SOM expression: see page 94\\n    return this.operation;\\n  }\\n\\n  [$isTransparent]() {\\n    return false;\\n  }\\n}\\n\\nclass Ui extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"ui\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n    this.picture = null;\\n\\n    \u002F\u002F One-of properties\\n    this.barcode = null;\\n    this.button = null;\\n    this.checkButton = null;\\n    this.choiceList = null;\\n    this.dateTimeEdit = null;\\n    this.defaultUi = null;\\n    this.imageEdit = null;\\n    this.numericEdit = null;\\n    this.passwordEdit = null;\\n    this.signature = null;\\n    this.textEdit = null;\\n  }\\n\\n  [$getExtra]() {\\n    if (this[$extra] === undefined) {\\n      for (const name of Object.getOwnPropertyNames(this)) {\\n        if (name === \\\"extras\\\" || name === \\\"picture\\\") {\\n          continue;\\n        }\\n        const obj = this[name];\\n        if (!(obj instanceof XFAObject)) {\\n          continue;\\n        }\\n\\n        this[$extra] = obj;\\n        return obj;\\n      }\\n      this[$extra] = null;\\n    }\\n    return this[$extra];\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    \u002F\u002F TODO: picture.\\n    const obj = this[$getExtra]();\\n    if (obj) {\\n      return obj[$toHTML](availableSpace);\\n    }\\n    return HTMLResult.EMPTY;\\n  }\\n}\\n\\nclass Validate extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"validate\\\", \u002F* hasChildren = *\u002F true);\\n    this.formatTest = getStringOption(attributes.formatTest, [\\n      \\\"warning\\\",\\n      \\\"disabled\\\",\\n      \\\"error\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.nullTest = getStringOption(attributes.nullTest, [\\n      \\\"disabled\\\",\\n      \\\"error\\\",\\n      \\\"warning\\\",\\n    ]);\\n    this.scriptTest = getStringOption(attributes.scriptTest, [\\n      \\\"error\\\",\\n      \\\"disabled\\\",\\n      \\\"warning\\\",\\n    ]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n    this.message = null;\\n    this.picture = null;\\n    this.script = null;\\n  }\\n}\\n\\nclass Value extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"value\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.override = getInteger({\\n      data: attributes.override,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.relevant = getRelevant(attributes.relevant);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n\\n    \u002F\u002F One-of properties\\n    this.arc = null;\\n    this.boolean = null;\\n    this.date = null;\\n    this.dateTime = null;\\n    this.decimal = null;\\n    this.exData = null;\\n    this.float = null;\\n    this.image = null;\\n    this.integer = null;\\n    this.line = null;\\n    this.rectangle = null;\\n    this.text = null;\\n    this.time = null;\\n  }\\n\\n  [$setValue](value) {\\n    const parent = this[$getParent]();\\n    if (parent instanceof Field) {\\n      if (parent.ui?.imageEdit) {\\n        if (!this.image) {\\n          this.image = new Image({});\\n          this[$appendChild](this.image);\\n        }\\n        this.image[$content] = value[$content];\\n        return;\\n      }\\n    }\\n\\n    const valueName = value[$nodeName];\\n    if (this[valueName] !== null) {\\n      this[valueName][$content] = value[$content];\\n      return;\\n    }\\n\\n    \u002F\u002F Reset all the properties.\\n    for (const name of Object.getOwnPropertyNames(this)) {\\n      const obj = this[name];\\n      if (obj instanceof XFAObject) {\\n        this[name] = null;\\n        this[$removeChild](obj);\\n      }\\n    }\\n\\n    this[value[$nodeName]] = value;\\n    this[$appendChild](value);\\n  }\\n\\n  [$text]() {\\n    if (this.exData) {\\n      if (typeof this.exData[$content] === \\\"string\\\") {\\n        return this.exData[$content].trim();\\n      }\\n      return this.exData[$content][$text]().trim();\\n    }\\n    for (const name of Object.getOwnPropertyNames(this)) {\\n      if (name === \\\"image\\\") {\\n        continue;\\n      }\\n      const obj = this[name];\\n      if (obj instanceof XFAObject) {\\n        return (obj[$content] || \\\"\\\").toString().trim();\\n      }\\n    }\\n    return null;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    for (const name of Object.getOwnPropertyNames(this)) {\\n      const obj = this[name];\\n      if (!(obj instanceof XFAObject)) {\\n        continue;\\n      }\\n\\n      return obj[$toHTML](availableSpace);\\n    }\\n\\n    return HTMLResult.EMPTY;\\n  }\\n}\\n\\nclass Variables extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"variables\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.boolean = new XFAObjectArray();\\n    this.date = new XFAObjectArray();\\n    this.dateTime = new XFAObjectArray();\\n    this.decimal = new XFAObjectArray();\\n    this.exData = new XFAObjectArray();\\n    this.float = new XFAObjectArray();\\n    this.image = new XFAObjectArray();\\n    this.integer = new XFAObjectArray();\\n    this.manifest = new XFAObjectArray();\\n    this.script = new XFAObjectArray();\\n    this.text = new XFAObjectArray();\\n    this.time = new XFAObjectArray();\\n  }\\n\\n  [$isTransparent]() {\\n    return true;\\n  }\\n}\\n\\nclass TemplateNamespace {\\n  static [$buildXFAObject](name, attributes) {\\n    if (TemplateNamespace.hasOwnProperty(name)) {\\n      const node = TemplateNamespace[name](attributes);\\n      node[$setSetAttributes](attributes);\\n      return node;\\n    }\\n    return undefined;\\n  }\\n\\n  static appearanceFilter(attrs) {\\n    return new AppearanceFilter(attrs);\\n  }\\n\\n  static arc(attrs) {\\n    return new Arc(attrs);\\n  }\\n\\n  static area(attrs) {\\n    return new Area(attrs);\\n  }\\n\\n  static assist(attrs) {\\n    return new Assist(attrs);\\n  }\\n\\n  static barcode(attrs) {\\n    return new Barcode(attrs);\\n  }\\n\\n  static bind(attrs) {\\n    return new Bind(attrs);\\n  }\\n\\n  static bindItems(attrs) {\\n    return new BindItems(attrs);\\n  }\\n\\n  static bookend(attrs) {\\n    return new Bookend(attrs);\\n  }\\n\\n  static boolean(attrs) {\\n    return new BooleanElement(attrs);\\n  }\\n\\n  static border(attrs) {\\n    return new Border(attrs);\\n  }\\n\\n  static break(attrs) {\\n    return new Break(attrs);\\n  }\\n\\n  static breakAfter(attrs) {\\n    return new BreakAfter(attrs);\\n  }\\n\\n  static breakBefore(attrs) {\\n    return new BreakBefore(attrs);\\n  }\\n\\n  static button(attrs) {\\n    return new Button(attrs);\\n  }\\n\\n  static calculate(attrs) {\\n    return new Calculate(attrs);\\n  }\\n\\n  static caption(attrs) {\\n    return new Caption(attrs);\\n  }\\n\\n  static certificate(attrs) {\\n    return new Certificate(attrs);\\n  }\\n\\n  static certificates(attrs) {\\n    return new Certificates(attrs);\\n  }\\n\\n  static checkButton(attrs) {\\n    return new CheckButton(attrs);\\n  }\\n\\n  static choiceList(attrs) {\\n    return new ChoiceList(attrs);\\n  }\\n\\n  static color(attrs) {\\n    return new Color(attrs);\\n  }\\n\\n  static comb(attrs) {\\n    return new Comb(attrs);\\n  }\\n\\n  static connect(attrs) {\\n    return new Connect(attrs);\\n  }\\n\\n  static contentArea(attrs) {\\n    return new ContentArea(attrs);\\n  }\\n\\n  static corner(attrs) {\\n    return new Corner(attrs);\\n  }\\n\\n  static date(attrs) {\\n    return new DateElement(attrs);\\n  }\\n\\n  static dateTime(attrs) {\\n    return new DateTime(attrs);\\n  }\\n\\n  static dateTimeEdit(attrs) {\\n    return new DateTimeEdit(attrs);\\n  }\\n\\n  static decimal(attrs) {\\n    return new Decimal(attrs);\\n  }\\n\\n  static defaultUi(attrs) {\\n    return new DefaultUi(attrs);\\n  }\\n\\n  static desc(attrs) {\\n    return new Desc(attrs);\\n  }\\n\\n  static digestMethod(attrs) {\\n    return new DigestMethod(attrs);\\n  }\\n\\n  static digestMethods(attrs) {\\n    return new DigestMethods(attrs);\\n  }\\n\\n  static draw(attrs) {\\n    return new Draw(attrs);\\n  }\\n\\n  static edge(attrs) {\\n    return new Edge(attrs);\\n  }\\n\\n  static encoding(attrs) {\\n    return new Encoding(attrs);\\n  }\\n\\n  static encodings(attrs) {\\n    return new Encodings(attrs);\\n  }\\n\\n  static encrypt(attrs) {\\n    return new Encrypt(attrs);\\n  }\\n\\n  static encryptData(attrs) {\\n    return new EncryptData(attrs);\\n  }\\n\\n  static encryption(attrs) {\\n    return new Encryption(attrs);\\n  }\\n\\n  static encryptionMethod(attrs) {\\n    return new EncryptionMethod(attrs);\\n  }\\n\\n  static encryptionMethods(attrs) {\\n    return new EncryptionMethods(attrs);\\n  }\\n\\n  static event(attrs) {\\n    return new Event(attrs);\\n  }\\n\\n  static exData(attrs) {\\n    return new ExData(attrs);\\n  }\\n\\n  static exObject(attrs) {\\n    return new ExObject(attrs);\\n  }\\n\\n  static exclGroup(attrs) {\\n    return new ExclGroup(attrs);\\n  }\\n\\n  static execute(attrs) {\\n    return new Execute(attrs);\\n  }\\n\\n  static extras(attrs) {\\n    return new Extras(attrs);\\n  }\\n\\n  static field(attrs) {\\n    return new Field(attrs);\\n  }\\n\\n  static fill(attrs) {\\n    return new Fill(attrs);\\n  }\\n\\n  static filter(attrs) {\\n    return new Filter(attrs);\\n  }\\n\\n  static float(attrs) {\\n    return new Float(attrs);\\n  }\\n\\n  static font(attrs) {\\n    return new Font(attrs);\\n  }\\n\\n  static format(attrs) {\\n    return new Format(attrs);\\n  }\\n\\n  static handler(attrs) {\\n    return new Handler(attrs);\\n  }\\n\\n  static hyphenation(attrs) {\\n    return new Hyphenation(attrs);\\n  }\\n\\n  static image(attrs) {\\n    return new Image(attrs);\\n  }\\n\\n  static imageEdit(attrs) {\\n    return new ImageEdit(attrs);\\n  }\\n\\n  static integer(attrs) {\\n    return new Integer(attrs);\\n  }\\n\\n  static issuers(attrs) {\\n    return new Issuers(attrs);\\n  }\\n\\n  static items(attrs) {\\n    return new Items(attrs);\\n  }\\n\\n  static keep(attrs) {\\n    return new Keep(attrs);\\n  }\\n\\n  static keyUsage(attrs) {\\n    return new KeyUsage(attrs);\\n  }\\n\\n  static line(attrs) {\\n    return new Line(attrs);\\n  }\\n\\n  static linear(attrs) {\\n    return new Linear(attrs);\\n  }\\n\\n  static lockDocument(attrs) {\\n    return new LockDocument(attrs);\\n  }\\n\\n  static manifest(attrs) {\\n    return new Manifest(attrs);\\n  }\\n\\n  static margin(attrs) {\\n    return new Margin(attrs);\\n  }\\n\\n  static mdp(attrs) {\\n    return new Mdp(attrs);\\n  }\\n\\n  static medium(attrs) {\\n    return new Medium(attrs);\\n  }\\n\\n  static message(attrs) {\\n    return new Message(attrs);\\n  }\\n\\n  static numericEdit(attrs) {\\n    return new NumericEdit(attrs);\\n  }\\n\\n  static occur(attrs) {\\n    return new Occur(attrs);\\n  }\\n\\n  static oid(attrs) {\\n    return new Oid(attrs);\\n  }\\n\\n  static oids(attrs) {\\n    return new Oids(attrs);\\n  }\\n\\n  static overflow(attrs) {\\n    return new Overflow(attrs);\\n  }\\n\\n  static pageArea(attrs) {\\n    return new PageArea(attrs);\\n  }\\n\\n  static pageSet(attrs) {\\n    return new PageSet(attrs);\\n  }\\n\\n  static para(attrs) {\\n    return new Para(attrs);\\n  }\\n\\n  static passwordEdit(attrs) {\\n    return new PasswordEdit(attrs);\\n  }\\n\\n  static pattern(attrs) {\\n    return new Pattern(attrs);\\n  }\\n\\n  static picture(attrs) {\\n    return new Picture(attrs);\\n  }\\n\\n  static proto(attrs) {\\n    return new Proto(attrs);\\n  }\\n\\n  static radial(attrs) {\\n    return new Radial(attrs);\\n  }\\n\\n  static reason(attrs) {\\n    return new Reason(attrs);\\n  }\\n\\n  static reasons(attrs) {\\n    return new Reasons(attrs);\\n  }\\n\\n  static rectangle(attrs) {\\n    return new Rectangle(attrs);\\n  }\\n\\n  static ref(attrs) {\\n    return new RefElement(attrs);\\n  }\\n\\n  static script(attrs) {\\n    return new Script(attrs);\\n  }\\n\\n  static setProperty(attrs) {\\n    return new SetProperty(attrs);\\n  }\\n\\n  static signData(attrs) {\\n    return new SignData(attrs);\\n  }\\n\\n  static signature(attrs) {\\n    return new Signature(attrs);\\n  }\\n\\n  static signing(attrs) {\\n    return new Signing(attrs);\\n  }\\n\\n  static solid(attrs) {\\n    return new Solid(attrs);\\n  }\\n\\n  static speak(attrs) {\\n    return new Speak(attrs);\\n  }\\n\\n  static stipple(attrs) {\\n    return new Stipple(attrs);\\n  }\\n\\n  static subform(attrs) {\\n    return new Subform(attrs);\\n  }\\n\\n  static subformSet(attrs) {\\n    return new SubformSet(attrs);\\n  }\\n\\n  static subjectDN(attrs) {\\n    return new SubjectDN(attrs);\\n  }\\n\\n  static subjectDNs(attrs) {\\n    return new SubjectDNs(attrs);\\n  }\\n\\n  static submit(attrs) {\\n    return new Submit(attrs);\\n  }\\n\\n  static template(attrs) {\\n    return new Template(attrs);\\n  }\\n\\n  static text(attrs) {\\n    return new Text(attrs);\\n  }\\n\\n  static textEdit(attrs) {\\n    return new TextEdit(attrs);\\n  }\\n\\n  static time(attrs) {\\n    return new Time(attrs);\\n  }\\n\\n  static timeStamp(attrs) {\\n    return new TimeStamp(attrs);\\n  }\\n\\n  static toolTip(attrs) {\\n    return new ToolTip(attrs);\\n  }\\n\\n  static traversal(attrs) {\\n    return new Traversal(attrs);\\n  }\\n\\n  static traverse(attrs) {\\n    return new Traverse(attrs);\\n  }\\n\\n  static ui(attrs) {\\n    return new Ui(attrs);\\n  }\\n\\n  static validate(attrs) {\\n    return new Validate(attrs);\\n  }\\n\\n  static value(attrs) {\\n    return new Value(attrs);\\n  }\\n\\n  static variables(attrs) {\\n    return new Variables(attrs);\\n  }\\n}\\n\\nexport {\\n  BindItems,\\n  Field,\\n  Items,\\n  SetProperty,\\n  Template,\\n  TemplateNamespace,\\n  Text,\\n  Value,\\n};\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  $appendChild,\\n  $clone,\\n  $consumed,\\n  $content,\\n  $data,\\n  $finalize,\\n  $getAttributeIt,\\n  $getChildren,\\n  $getDataValue,\\n  $getParent,\\n  $getRealChildrenByNameIt,\\n  $hasSettableValue,\\n  $indexOf,\\n  $insertAt,\\n  $isBindable,\\n  $isDataValue,\\n  $isDescendent,\\n  $namespaceId,\\n  $nodeName,\\n  $removeChild,\\n  $setValue,\\n  $text,\\n} from \\\".\u002Fsymbol_utils.js\\\";\\nimport { BindItems, Field, Items, SetProperty, Text } from \\\".\u002Ftemplate.js\\\";\\nimport { createDataNode, searchNode } from \\\".\u002Fsom.js\\\";\\nimport { XFAAttribute, XFAObjectArray, XmlObject } from \\\".\u002Fxfa_object.js\\\";\\nimport { NamespaceIds } from \\\".\u002Fnamespaces.js\\\";\\nimport { warn } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\n\\nconst NS_DATASETS = NamespaceIds.datasets.id;\\n\\nfunction createText(content) {\\n  const node = new Text({});\\n  node[$content] = content;\\n  return node;\\n}\\n\\nclass Binder {\\n  constructor(root) {\\n    this.root = root;\\n    this.datasets = root.datasets;\\n    this.data =\\n      root.datasets?.data || new XmlObject(NamespaceIds.datasets.id, \\\"data\\\");\\n    this.emptyMerge = this.data[$getChildren]().length === 0;\\n\\n    this.root.form = this.form = root.template[$clone]();\\n  }\\n\\n  _isConsumeData() {\\n    return !this.emptyMerge && this._mergeMode;\\n  }\\n\\n  _isMatchTemplate() {\\n    return !this._isConsumeData();\\n  }\\n\\n  bind() {\\n    this._bindElement(this.form, this.data);\\n    return this.form;\\n  }\\n\\n  getData() {\\n    return this.data;\\n  }\\n\\n  _bindValue(formNode, data, picture) {\\n    \u002F\u002F Nodes must have the same \\\"type\\\": container or value.\\n    \u002F\u002F Here we make the link between form node and\\n    \u002F\u002F data node (through $data property): we'll use it\\n    \u002F\u002F to save form data.\\n\\n    formNode[$data] = data;\\n    if (formNode[$hasSettableValue]()) {\\n      if (data[$isDataValue]()) {\\n        const value = data[$getDataValue]();\\n        \u002F\u002F TODO: use picture.\\n        formNode[$setValue](createText(value));\\n      } else if (\\n        formNode instanceof Field &&\\n        formNode.ui?.choiceList?.open === \\\"multiSelect\\\"\\n      ) {\\n        const value = data[$getChildren]()\\n          .map(child => child[$content].trim())\\n          .join(\\\"\\\\n\\\");\\n        formNode[$setValue](createText(value));\\n      } else if (this._isConsumeData()) {\\n        warn(`XFA - Nodes haven't the same type.`);\\n      }\\n    } else if (!data[$isDataValue]() || this._isMatchTemplate()) {\\n      this._bindElement(formNode, data);\\n    } else {\\n      warn(`XFA - Nodes haven't the same type.`);\\n    }\\n  }\\n\\n  _findDataByNameToConsume(name, isValue, dataNode, global) {\\n    if (!name) {\\n      return null;\\n    }\\n\\n    \u002F\u002F Firstly, we try to find a node with the given name:\\n    \u002F\u002F  - in dataNode;\\n    \u002F\u002F  - if not found, then in parent;\\n    \u002F\u002F  - and if not in found, then in grand-parent.\\n    let generator, match;\\n    for (let i = 0; i \u003C 3; i++) {\\n      generator = dataNode[$getRealChildrenByNameIt](\\n        name,\\n        \u002F* allTransparent = *\u002F false,\\n        \u002F* skipConsumed = *\u002F true\\n      );\\n      \u002F\u002F Try to find a match of the same kind.\\n      while (true) {\\n        match = generator.next().value;\\n        if (!match) {\\n          break;\\n        }\\n\\n        if (isValue === match[$isDataValue]()) {\\n          return match;\\n        }\\n      }\\n      if (\\n        dataNode[$namespaceId] === NamespaceIds.datasets.id &&\\n        dataNode[$nodeName] === \\\"data\\\"\\n      ) {\\n        break;\\n      }\\n      dataNode = dataNode[$getParent]();\\n    }\\n\\n    if (!global) {\\n      return null;\\n    }\\n\\n    \u002F\u002F Secondly, if global try to find it just under the root of datasets\\n    \u002F\u002F (which is the location of global variables).\\n    generator = this.data[$getRealChildrenByNameIt](\\n      name,\\n      \u002F* allTransparent = *\u002F true,\\n      \u002F* skipConsumed = *\u002F false\\n    );\\n\\n    match = generator.next().value;\\n    if (match) {\\n      return match;\\n    }\\n\\n    \u002F\u002F Thirdly, try to find it in attributes.\\n    generator = this.data[$getAttributeIt](name, \u002F* skipConsumed = *\u002F true);\\n    match = generator.next().value;\\n    if (match?.[$isDataValue]()) {\\n      return match;\\n    }\\n\\n    return null;\\n  }\\n\\n  _setProperties(formNode, dataNode) {\\n    \u002F\u002F For example:\\n    \u002F\u002F \u003Cfield name=\\\"LastName\\\" ...>\\n    \u002F\u002F   \u003CsetProperty ref=\\\"$data.Main.Style.NameFont\\\" target=\\\"font.typeface\\\"\u002F>\\n    \u002F\u002F   \u003CsetProperty ref=\\\"$data.Main.Style.NameSize\\\" target=\\\"font.size\\\"\u002F>\\n    \u002F\u002F   \u003CsetProperty ref=\\\"$data.Main.Help.LastName\\\" target=\\\"assist.toolTip\\\"\u002F>\\n    \u002F\u002F \u003C\u002Ffield>\\n\\n    if (!formNode.hasOwnProperty(\\\"setProperty\\\")) {\\n      return;\\n    }\\n\\n    for (const { ref, target, connection } of formNode.setProperty.children) {\\n      if (connection) {\\n        \u002F\u002F TODO: evaluate if we should implement this feature.\\n        \u002F\u002F Skip for security reasons.\\n        continue;\\n      }\\n      if (!ref) {\\n        continue;\\n      }\\n\\n      const nodes = searchNode(\\n        this.root,\\n        dataNode,\\n        ref,\\n        false \u002F* = dotDotAllowed *\u002F,\\n        false \u002F* = useCache *\u002F\\n      );\\n      if (!nodes) {\\n        warn(`XFA - Invalid reference: ${ref}.`);\\n        continue;\\n      }\\n      const [node] = nodes;\\n\\n      if (!node[$isDescendent](this.data)) {\\n        warn(`XFA - Invalid node: must be a data node.`);\\n        continue;\\n      }\\n\\n      const targetNodes = searchNode(\\n        this.root,\\n        formNode,\\n        target,\\n        false \u002F* = dotDotAllowed *\u002F,\\n        false \u002F* = useCache *\u002F\\n      );\\n      if (!targetNodes) {\\n        warn(`XFA - Invalid target: ${target}.`);\\n        continue;\\n      }\\n      const [targetNode] = targetNodes;\\n\\n      if (!targetNode[$isDescendent](formNode)) {\\n        warn(`XFA - Invalid target: must be a property or subproperty.`);\\n        continue;\\n      }\\n\\n      const targetParent = targetNode[$getParent]();\\n      if (\\n        targetNode instanceof SetProperty ||\\n        targetParent instanceof SetProperty\\n      ) {\\n        warn(\\n          `XFA - Invalid target: cannot be a setProperty or one of its properties.`\\n        );\\n        continue;\\n      }\\n\\n      if (\\n        targetNode instanceof BindItems ||\\n        targetParent instanceof BindItems\\n      ) {\\n        warn(\\n          `XFA - Invalid target: cannot be a bindItems or one of its properties.`\\n        );\\n        continue;\\n      }\\n\\n      const content = node[$text]();\\n      const name = targetNode[$nodeName];\\n\\n      if (targetNode instanceof XFAAttribute) {\\n        const attrs = Object.create(null);\\n        attrs[name] = content;\\n        const obj = Reflect.construct(\\n          Object.getPrototypeOf(targetParent).constructor,\\n          [attrs]\\n        );\\n        targetParent[name] = obj[name];\\n        continue;\\n      }\\n\\n      if (!targetNode.hasOwnProperty($content)) {\\n        warn(`XFA - Invalid node to use in setProperty`);\\n        continue;\\n      }\\n\\n      targetNode[$data] = node;\\n      targetNode[$content] = content;\\n      targetNode[$finalize]();\\n    }\\n  }\\n\\n  _bindItems(formNode, dataNode) {\\n    \u002F\u002F For example:\\n    \u002F\u002F \u003Cfield name=\\\"CardName\\\"...>\\n    \u002F\u002F   \u003CbindItems ref=\\\"$data.main.ccs.cc[*]\\\" labelRef=\\\"uiname\\\"\\n    \u002F\u002F              valueRef=\\\"token\\\"\u002F>\\n    \u002F\u002F   \u003Cui>\u003CchoiceList\u002F>\u003C\u002Fui>\\n    \u002F\u002F \u003C\u002Ffield>\\n\\n    if (\\n      !formNode.hasOwnProperty(\\\"items\\\") ||\\n      !formNode.hasOwnProperty(\\\"bindItems\\\") ||\\n      formNode.bindItems.isEmpty()\\n    ) {\\n      return;\\n    }\\n\\n    for (const item of formNode.items.children) {\\n      formNode[$removeChild](item);\\n    }\\n\\n    formNode.items.clear();\\n\\n    const labels = new Items({});\\n    const values = new Items({});\\n\\n    formNode[$appendChild](labels);\\n    formNode.items.push(labels);\\n\\n    formNode[$appendChild](values);\\n    formNode.items.push(values);\\n\\n    for (const { ref, labelRef, valueRef, connection } of formNode.bindItems\\n      .children) {\\n      if (connection) {\\n        \u002F\u002F TODO: evaluate if we should implement this feature.\\n        \u002F\u002F Skip for security reasons.\\n        continue;\\n      }\\n      if (!ref) {\\n        continue;\\n      }\\n\\n      const nodes = searchNode(\\n        this.root,\\n        dataNode,\\n        ref,\\n        false \u002F* = dotDotAllowed *\u002F,\\n        false \u002F* = useCache *\u002F\\n      );\\n      if (!nodes) {\\n        warn(`XFA - Invalid reference: ${ref}.`);\\n        continue;\\n      }\\n      for (const node of nodes) {\\n        if (!node[$isDescendent](this.datasets)) {\\n          warn(`XFA - Invalid ref (${ref}): must be a datasets child.`);\\n          continue;\\n        }\\n\\n        const labelNodes = searchNode(\\n          this.root,\\n          node,\\n          labelRef,\\n          true \u002F* = dotDotAllowed *\u002F,\\n          false \u002F* = useCache *\u002F\\n        );\\n        if (!labelNodes) {\\n          warn(`XFA - Invalid label: ${labelRef}.`);\\n          continue;\\n        }\\n        const [labelNode] = labelNodes;\\n\\n        if (!labelNode[$isDescendent](this.datasets)) {\\n          warn(`XFA - Invalid label: must be a datasets child.`);\\n          continue;\\n        }\\n\\n        const valueNodes = searchNode(\\n          this.root,\\n          node,\\n          valueRef,\\n          true \u002F* = dotDotAllowed *\u002F,\\n          false \u002F* = useCache *\u002F\\n        );\\n        if (!valueNodes) {\\n          warn(`XFA - Invalid value: ${valueRef}.`);\\n          continue;\\n        }\\n        const [valueNode] = valueNodes;\\n\\n        if (!valueNode[$isDescendent](this.datasets)) {\\n          warn(`XFA - Invalid value: must be a datasets child.`);\\n          continue;\\n        }\\n\\n        const label = createText(labelNode[$text]());\\n        const value = createText(valueNode[$text]());\\n\\n        labels[$appendChild](label);\\n        labels.text.push(label);\\n\\n        values[$appendChild](value);\\n        values.text.push(value);\\n      }\\n    }\\n  }\\n\\n  _bindOccurrences(formNode, matches, picture) {\\n    \u002F\u002F Insert nodes which are not in the template but reflect\\n    \u002F\u002F what we've in data tree.\\n\\n    let baseClone;\\n    if (matches.length > 1) {\\n      \u002F\u002F Clone before binding to avoid bad state.\\n      baseClone = formNode[$clone]();\\n      baseClone[$removeChild](baseClone.occur);\\n      baseClone.occur = null;\\n    }\\n\\n    this._bindValue(formNode, matches[0], picture);\\n    this._setProperties(formNode, matches[0]);\\n    this._bindItems(formNode, matches[0]);\\n\\n    if (matches.length === 1) {\\n      return;\\n    }\\n\\n    const parent = formNode[$getParent]();\\n    const name = formNode[$nodeName];\\n    const pos = parent[$indexOf](formNode);\\n\\n    for (let i = 1, ii = matches.length; i \u003C ii; i++) {\\n      const match = matches[i];\\n      const clone = baseClone[$clone]();\\n      parent[name].push(clone);\\n      parent[$insertAt](pos + i, clone);\\n\\n      this._bindValue(clone, match, picture);\\n      this._setProperties(clone, match);\\n      this._bindItems(clone, match);\\n    }\\n  }\\n\\n  _createOccurrences(formNode) {\\n    if (!this.emptyMerge) {\\n      return;\\n    }\\n\\n    const { occur } = formNode;\\n    if (!occur || occur.initial \u003C= 1) {\\n      return;\\n    }\\n\\n    const parent = formNode[$getParent]();\\n    const name = formNode[$nodeName];\\n\\n    if (!(parent[name] instanceof XFAObjectArray)) {\\n      return;\\n    }\\n\\n    let currentNumber;\\n    if (formNode.name) {\\n      currentNumber = parent[name].children.filter(\\n        e => e.name === formNode.name\\n      ).length;\\n    } else {\\n      currentNumber = parent[name].children.length;\\n    }\\n\\n    const pos = parent[$indexOf](formNode) + 1;\\n    const ii = occur.initial - currentNumber;\\n    if (ii) {\\n      const nodeClone = formNode[$clone]();\\n      nodeClone[$removeChild](nodeClone.occur);\\n      nodeClone.occur = null;\\n      parent[name].push(nodeClone);\\n      parent[$insertAt](pos, nodeClone);\\n\\n      for (let i = 1; i \u003C ii; i++) {\\n        const clone = nodeClone[$clone]();\\n        parent[name].push(clone);\\n        parent[$insertAt](pos + i, clone);\\n      }\\n    }\\n  }\\n\\n  _getOccurInfo(formNode) {\\n    const { name, occur } = formNode;\\n    if (!occur || !name) {\\n      return [1, 1];\\n    }\\n    const max = occur.max === -1 ? Infinity : occur.max;\\n    return [occur.min, max];\\n  }\\n\\n  _setAndBind(formNode, dataNode) {\\n    this._setProperties(formNode, dataNode);\\n    this._bindItems(formNode, dataNode);\\n    this._bindElement(formNode, dataNode);\\n  }\\n\\n  _bindElement(formNode, dataNode) {\\n    \u002F\u002F Some nodes can be useless because min=0 so remove them\\n    \u002F\u002F after the loop to avoid bad things.\\n\\n    const uselessNodes = [];\\n\\n    this._createOccurrences(formNode);\\n\\n    for (const child of formNode[$getChildren]()) {\\n      if (child[$data]) {\\n        \u002F\u002F Already bound.\\n        continue;\\n      }\\n\\n      if (this._mergeMode === undefined && child[$nodeName] === \\\"subform\\\") {\\n        this._mergeMode = child.mergeMode === \\\"consumeData\\\";\\n\\n        \u002F\u002F XFA specs p. 182:\\n        \u002F\u002F The highest-level subform and the data node representing\\n        \u002F\u002F the current record are special; they are always\\n        \u002F\u002F bound even if their names don't match.\\n        const dataChildren = dataNode[$getChildren]();\\n        if (dataChildren.length > 0) {\\n          this._bindOccurrences(child, [dataChildren[0]], null);\\n        } else if (this.emptyMerge) {\\n          const nsId =\\n            dataNode[$namespaceId] === NS_DATASETS\\n              ? -1\\n              : dataNode[$namespaceId];\\n          const dataChild = (child[$data] = new XmlObject(\\n            nsId,\\n            child.name || \\\"root\\\"\\n          ));\\n          dataNode[$appendChild](dataChild);\\n          this._bindElement(child, dataChild);\\n        }\\n        continue;\\n      }\\n\\n      if (!child[$isBindable]()) {\\n        \u002F\u002F The node cannot contain some new data so there is nothing\\n        \u002F\u002F to create in the data node.\\n        continue;\\n      }\\n\\n      let global = false;\\n      let picture = null;\\n      let ref = null;\\n      let match = null;\\n      if (child.bind) {\\n        switch (child.bind.match) {\\n          case \\\"none\\\":\\n            this._setAndBind(child, dataNode);\\n            continue;\\n          case \\\"global\\\":\\n            global = true;\\n            break;\\n          case \\\"dataRef\\\":\\n            if (!child.bind.ref) {\\n              warn(`XFA - ref is empty in node ${child[$nodeName]}.`);\\n              this._setAndBind(child, dataNode);\\n              continue;\\n            }\\n            ref = child.bind.ref;\\n            break;\\n          default:\\n            break;\\n        }\\n        if (child.bind.picture) {\\n          picture = child.bind.picture[$content];\\n        }\\n      }\\n\\n      const [min, max] = this._getOccurInfo(child);\\n\\n      if (ref) {\\n        \u002F\u002F Don't use a cache for searching: nodes can change during binding.\\n        match = searchNode(\\n          this.root,\\n          dataNode,\\n          ref,\\n          true \u002F* = dotDotAllowed *\u002F,\\n          false \u002F* = useCache *\u002F\\n        );\\n        if (match === null) {\\n          \u002F\u002F Nothing found: we must create some nodes in data in order\\n          \u002F\u002F to have something to match with the given expression.\\n          \u002F\u002F See http:\u002F\u002Fciteseerx.ist.psu.edu\u002Fviewdoc\u002Fdownload?doi=10.1.1.364.2157&rep=rep1&type=pdf#page=199\\n          match = createDataNode(this.data, dataNode, ref);\\n          if (!match) {\\n            \u002F\u002F For example if the node contains a .(...) then it isn't\\n            \u002F\u002F findable.\\n            \u002F\u002F TODO: remove this when .(...) is implemented.\\n            continue;\\n          }\\n          if (this._isConsumeData()) {\\n            match[$consumed] = true;\\n          }\\n\\n          \u002F\u002F Don't bind the value in newly created node because it's empty.\\n          this._setAndBind(child, match);\\n          continue;\\n        } else {\\n          if (this._isConsumeData()) {\\n            \u002F\u002F Filter out consumed nodes.\\n            match = match.filter(node => !node[$consumed]);\\n          }\\n          if (match.length > max) {\\n            match = match.slice(0, max);\\n          } else if (match.length === 0) {\\n            match = null;\\n          }\\n          if (match && this._isConsumeData()) {\\n            match.forEach(node => {\\n              node[$consumed] = true;\\n            });\\n          }\\n        }\\n      } else {\\n        if (!child.name) {\\n          this._setAndBind(child, dataNode);\\n          continue;\\n        }\\n        if (this._isConsumeData()) {\\n          \u002F\u002F In consumeData mode, search for the next node with the given name.\\n          \u002F\u002F occurs.max gives us the max number of node to match.\\n          const matches = [];\\n          while (matches.length \u003C max) {\\n            const found = this._findDataByNameToConsume(\\n              child.name,\\n              child[$hasSettableValue](),\\n              dataNode,\\n              global\\n            );\\n\\n            if (!found) {\\n              break;\\n            }\\n            found[$consumed] = true;\\n            matches.push(found);\\n          }\\n          match = matches.length > 0 ? matches : null;\\n        } else {\\n          \u002F\u002F If we've an empty merge, there are no reason\\n          \u002F\u002F to make multiple bind so skip consumed nodes.\\n          match = dataNode[$getRealChildrenByNameIt](\\n            child.name,\\n            \u002F* allTransparent = *\u002F false,\\n            \u002F* skipConsumed = *\u002F this.emptyMerge\\n          ).next().value;\\n          if (!match) {\\n            \u002F\u002F If there is no match (no data) and `min === 0` then\\n            \u002F\u002F the container is entirely excluded.\\n            \u002F\u002F https:\u002F\u002Fwww.pdfa.org\u002Fnorm-refs\u002FXFA-3_3.pdf#G12.1428332\\n            if (min === 0) {\\n              uselessNodes.push(child);\\n              continue;\\n            }\\n            \u002F\u002F We're in matchTemplate mode so create a node in data to reflect\\n            \u002F\u002F what we've in template.\\n            const nsId =\\n              dataNode[$namespaceId] === NS_DATASETS\\n                ? -1\\n                : dataNode[$namespaceId];\\n            match = child[$data] = new XmlObject(nsId, child.name);\\n            if (this.emptyMerge) {\\n              match[$consumed] = true;\\n            }\\n            dataNode[$appendChild](match);\\n\\n            \u002F\u002F Don't bind the value in newly created node because it's empty.\\n            this._setAndBind(child, match);\\n            continue;\\n          }\\n          if (this.emptyMerge) {\\n            match[$consumed] = true;\\n          }\\n          match = [match];\\n        }\\n      }\\n\\n      if (match) {\\n        this._bindOccurrences(child, match, picture);\\n      } else if (min > 0) {\\n        this._setAndBind(child, dataNode);\\n      } else {\\n        uselessNodes.push(child);\\n      }\\n    }\\n\\n    uselessNodes.forEach(node => node[$getParent]()[$removeChild](node));\\n  }\\n}\\n\\nexport { Binder };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  $getAttributes,\\n  $getChildren,\\n  $nodeName,\\n  $setValue,\\n  $toString,\\n  $uid,\\n} from \\\".\u002Fsymbol_utils.js\\\";\\n\\nclass DataHandler {\\n  constructor(root, data) {\\n    this.data = data;\\n    this.dataset = root.datasets || null;\\n  }\\n\\n  serialize(storage) {\\n    const stack = [[-1, this.data[$getChildren]()]];\\n\\n    while (stack.length > 0) {\\n      const last = stack.at(-1);\\n      const [i, children] = last;\\n      if (i + 1 === children.length) {\\n        stack.pop();\\n        continue;\\n      }\\n\\n      const child = children[++last[0]];\\n      const storageEntry = storage.get(child[$uid]);\\n      if (storageEntry) {\\n        child[$setValue](storageEntry);\\n      } else {\\n        const attributes = child[$getAttributes]();\\n        for (const value of attributes.values()) {\\n          const entry = storage.get(value[$uid]);\\n          if (entry) {\\n            value[$setValue](entry);\\n            break;\\n          }\\n        }\\n      }\\n\\n      const nodes = child[$getChildren]();\\n      if (nodes.length > 0) {\\n        stack.push([-1, nodes]);\\n      }\\n    }\\n\\n    const buf = [\\n      `\u003Cxfa:datasets xmlns:xfa=\\\"http:\u002F\u002Fwww.xfa.org\u002Fschema\u002Fxfa-data\u002F1.0\u002F\\\">`,\\n    ];\\n    if (this.dataset) {\\n      \u002F\u002F Dump nodes other than data: they can contains for example\\n      \u002F\u002F some data for choice lists.\\n      for (const child of this.dataset[$getChildren]()) {\\n        if (child[$nodeName] !== \\\"data\\\") {\\n          child[$toString](buf);\\n        }\\n      }\\n    }\\n    this.data[$toString](buf);\\n    buf.push(\\\"\u003C\u002Fxfa:datasets>\\\");\\n\\n    return buf.join(\\\"\\\");\\n  }\\n}\\n\\nexport { DataHandler };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { $buildXFAObject, NamespaceIds } from \\\".\u002Fnamespaces.js\\\";\\nimport { $content, $finalize } from \\\".\u002Fsymbol_utils.js\\\";\\nimport {\\n  ContentObject,\\n  IntegerObject,\\n  Option01,\\n  Option10,\\n  OptionObject,\\n  StringObject,\\n  XFAObject,\\n  XFAObjectArray,\\n} from \\\".\u002Fxfa_object.js\\\";\\nimport { getInteger, getStringOption } from \\\".\u002Futils.js\\\";\\nimport { shadow, warn } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\n\\nconst CONFIG_NS_ID = NamespaceIds.config.id;\\n\\nclass Acrobat extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"acrobat\\\", \u002F* hasChildren = *\u002F true);\\n    this.acrobat7 = null;\\n    this.autoSave = null;\\n    this.common = null;\\n    this.validate = null;\\n    this.validateApprovalSignatures = null;\\n    this.submitUrl = new XFAObjectArray();\\n  }\\n}\\n\\nclass Acrobat7 extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"acrobat7\\\", \u002F* hasChildren = *\u002F true);\\n    this.dynamicRender = null;\\n  }\\n}\\n\\nclass ADBE_JSConsole extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"ADBE_JSConsole\\\", [\\\"delegate\\\", \\\"Enable\\\", \\\"Disable\\\"]);\\n  }\\n}\\n\\nclass ADBE_JSDebugger extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"ADBE_JSDebugger\\\", [\\\"delegate\\\", \\\"Enable\\\", \\\"Disable\\\"]);\\n  }\\n}\\n\\nclass AddSilentPrint extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"addSilentPrint\\\");\\n  }\\n}\\n\\nclass AddViewerPreferences extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"addViewerPreferences\\\");\\n  }\\n}\\n\\nclass AdjustData extends Option10 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"adjustData\\\");\\n  }\\n}\\n\\nclass AdobeExtensionLevel extends IntegerObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"adobeExtensionLevel\\\", 0, n => n >= 1 && n \u003C= 8);\\n  }\\n}\\n\\nclass Agent extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"agent\\\", \u002F* hasChildren = *\u002F true);\\n    this.name = attributes.name ? attributes.name.trim() : \\\"\\\";\\n    this.common = new XFAObjectArray();\\n  }\\n}\\n\\nclass AlwaysEmbed extends ContentObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"alwaysEmbed\\\");\\n  }\\n}\\n\\nclass Amd extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"amd\\\");\\n  }\\n}\\n\\nclass Area extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"area\\\");\\n    this.level = getInteger({\\n      data: attributes.level,\\n      defaultValue: 0,\\n      validate: n => n >= 1 && n \u003C= 3,\\n    });\\n    this.name = getStringOption(attributes.name, [\\n      \\\"\\\",\\n      \\\"barcode\\\",\\n      \\\"coreinit\\\",\\n      \\\"deviceDriver\\\",\\n      \\\"font\\\",\\n      \\\"general\\\",\\n      \\\"layout\\\",\\n      \\\"merge\\\",\\n      \\\"script\\\",\\n      \\\"signature\\\",\\n      \\\"sourceSet\\\",\\n      \\\"templateCache\\\",\\n    ]);\\n  }\\n}\\n\\nclass Attributes extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"attributes\\\", [\\\"preserve\\\", \\\"delegate\\\", \\\"ignore\\\"]);\\n  }\\n}\\n\\nclass AutoSave extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"autoSave\\\", [\\\"disabled\\\", \\\"enabled\\\"]);\\n  }\\n}\\n\\nclass Base extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"base\\\");\\n  }\\n}\\n\\nclass BatchOutput extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"batchOutput\\\");\\n    this.format = getStringOption(attributes.format, [\\n      \\\"none\\\",\\n      \\\"concat\\\",\\n      \\\"zip\\\",\\n      \\\"zipCompress\\\",\\n    ]);\\n  }\\n}\\n\\nclass BehaviorOverride extends ContentObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"behaviorOverride\\\");\\n  }\\n\\n  [$finalize]() {\\n    this[$content] = new Map(\\n      this[$content]\\n        .trim()\\n        .split(\u002F\\\\s+\u002F)\\n        .filter(x => x.includes(\\\":\\\"))\\n        .map(x => x.split(\\\":\\\", 2))\\n    );\\n  }\\n}\\n\\nclass Cache extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"cache\\\", \u002F* hasChildren = *\u002F true);\\n    this.templateCache = null;\\n  }\\n}\\n\\nclass Change extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"change\\\");\\n  }\\n}\\n\\nclass Common extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"common\\\", \u002F* hasChildren = *\u002F true);\\n    this.data = null;\\n    this.locale = null;\\n    this.localeSet = null;\\n    this.messaging = null;\\n    this.suppressBanner = null;\\n    this.template = null;\\n    this.validationMessaging = null;\\n    this.versionControl = null;\\n    this.log = new XFAObjectArray();\\n  }\\n}\\n\\nclass Compress extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"compress\\\");\\n    this.scope = getStringOption(attributes.scope, [\\\"imageOnly\\\", \\\"document\\\"]);\\n  }\\n}\\n\\nclass CompressLogicalStructure extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"compressLogicalStructure\\\");\\n  }\\n}\\n\\nclass CompressObjectStream extends Option10 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"compressObjectStream\\\");\\n  }\\n}\\n\\nclass Compression extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"compression\\\", \u002F* hasChildren = *\u002F true);\\n    this.compressLogicalStructure = null;\\n    this.compressObjectStream = null;\\n    this.level = null;\\n    this.type = null;\\n  }\\n}\\n\\nclass Config extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"config\\\", \u002F* hasChildren = *\u002F true);\\n    this.acrobat = null;\\n    this.present = null;\\n    this.trace = null;\\n    this.agent = new XFAObjectArray();\\n  }\\n}\\n\\nclass Conformance extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"conformance\\\", [\\\"A\\\", \\\"B\\\"]);\\n  }\\n}\\n\\nclass ContentCopy extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"contentCopy\\\");\\n  }\\n}\\n\\nclass Copies extends IntegerObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"copies\\\", 1, n => n >= 1);\\n  }\\n}\\n\\nclass Creator extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"creator\\\");\\n  }\\n}\\n\\nclass CurrentPage extends IntegerObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"currentPage\\\", 0, n => n >= 0);\\n  }\\n}\\n\\nclass Data extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"data\\\", \u002F* hasChildren = *\u002F true);\\n    this.adjustData = null;\\n    this.attributes = null;\\n    this.incrementalLoad = null;\\n    this.outputXSL = null;\\n    this.range = null;\\n    this.record = null;\\n    this.startNode = null;\\n    this.uri = null;\\n    this.window = null;\\n    this.xsl = null;\\n    this.excludeNS = new XFAObjectArray();\\n    this.transform = new XFAObjectArray();\\n  }\\n}\\n\\nclass Debug extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"debug\\\", \u002F* hasChildren = *\u002F true);\\n    this.uri = null;\\n  }\\n}\\n\\nclass DefaultTypeface extends ContentObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"defaultTypeface\\\");\\n    this.writingScript = getStringOption(attributes.writingScript, [\\n      \\\"*\\\",\\n      \\\"Arabic\\\",\\n      \\\"Cyrillic\\\",\\n      \\\"EastEuropeanRoman\\\",\\n      \\\"Greek\\\",\\n      \\\"Hebrew\\\",\\n      \\\"Japanese\\\",\\n      \\\"Korean\\\",\\n      \\\"Roman\\\",\\n      \\\"SimplifiedChinese\\\",\\n      \\\"Thai\\\",\\n      \\\"TraditionalChinese\\\",\\n      \\\"Vietnamese\\\",\\n    ]);\\n  }\\n}\\n\\nclass Destination extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"destination\\\", [\\n      \\\"pdf\\\",\\n      \\\"pcl\\\",\\n      \\\"ps\\\",\\n      \\\"webClient\\\",\\n      \\\"zpl\\\",\\n    ]);\\n  }\\n}\\n\\nclass DocumentAssembly extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"documentAssembly\\\");\\n  }\\n}\\n\\nclass Driver extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"driver\\\", \u002F* hasChildren = *\u002F true);\\n    this.name = attributes.name ? attributes.name.trim() : \\\"\\\";\\n    this.fontInfo = null;\\n    this.xdc = null;\\n  }\\n}\\n\\nclass DuplexOption extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"duplexOption\\\", [\\n      \\\"simplex\\\",\\n      \\\"duplexFlipLongEdge\\\",\\n      \\\"duplexFlipShortEdge\\\",\\n    ]);\\n  }\\n}\\n\\nclass DynamicRender extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"dynamicRender\\\", [\\\"forbidden\\\", \\\"required\\\"]);\\n  }\\n}\\n\\nclass Embed extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"embed\\\");\\n  }\\n}\\n\\nclass Encrypt extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"encrypt\\\");\\n  }\\n}\\n\\nclass Encryption extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"encryption\\\", \u002F* hasChildren = *\u002F true);\\n    this.encrypt = null;\\n    this.encryptionLevel = null;\\n    this.permissions = null;\\n  }\\n}\\n\\nclass EncryptionLevel extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"encryptionLevel\\\", [\\\"40bit\\\", \\\"128bit\\\"]);\\n  }\\n}\\n\\nclass Enforce extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"enforce\\\");\\n  }\\n}\\n\\nclass Equate extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"equate\\\");\\n\\n    this.force = getInteger({\\n      data: attributes.force,\\n      defaultValue: 1,\\n      validate: n => n === 0,\\n    });\\n\\n    this.from = attributes.from || \\\"\\\";\\n    this.to = attributes.to || \\\"\\\";\\n  }\\n}\\n\\nclass EquateRange extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"equateRange\\\");\\n\\n    this.from = attributes.from || \\\"\\\";\\n    this.to = attributes.to || \\\"\\\";\\n    this._unicodeRange = attributes.unicodeRange || \\\"\\\";\\n  }\\n\\n  get unicodeRange() {\\n    const ranges = [];\\n    const unicodeRegex = \u002FU\\\\+([0-9a-fA-F]+)\u002F;\\n    const unicodeRange = this._unicodeRange;\\n    for (let range of unicodeRange\\n      .split(\\\",\\\")\\n      .map(x => x.trim())\\n      .filter(x => !!x)) {\\n      range = range.split(\\\"-\\\", 2).map(x => {\\n        const found = x.match(unicodeRegex);\\n        if (!found) {\\n          return 0;\\n        }\\n        return parseInt(found[1], 16);\\n      });\\n      if (range.length === 1) {\\n        range.push(range[0]);\\n      }\\n      ranges.push(range);\\n    }\\n    return shadow(this, \\\"unicodeRange\\\", ranges);\\n  }\\n}\\n\\nclass Exclude extends ContentObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"exclude\\\");\\n  }\\n\\n  [$finalize]() {\\n    this[$content] = this[$content]\\n      .trim()\\n      .split(\u002F\\\\s+\u002F)\\n      .filter(\\n        x =>\\n          x &&\\n          [\\n            \\\"calculate\\\",\\n            \\\"close\\\",\\n            \\\"enter\\\",\\n            \\\"exit\\\",\\n            \\\"initialize\\\",\\n            \\\"ready\\\",\\n            \\\"validate\\\",\\n          ].includes(x)\\n      );\\n  }\\n}\\n\\nclass ExcludeNS extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"excludeNS\\\");\\n  }\\n}\\n\\nclass FlipLabel extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"flipLabel\\\", [\\\"usePrinterSetting\\\", \\\"on\\\", \\\"off\\\"]);\\n  }\\n}\\n\\nclass FontInfo extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"fontInfo\\\", \u002F* hasChildren = *\u002F true);\\n    this.embed = null;\\n    this.map = null;\\n    this.subsetBelow = null;\\n    this.alwaysEmbed = new XFAObjectArray();\\n    this.defaultTypeface = new XFAObjectArray();\\n    this.neverEmbed = new XFAObjectArray();\\n  }\\n}\\n\\nclass FormFieldFilling extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"formFieldFilling\\\");\\n  }\\n}\\n\\nclass GroupParent extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"groupParent\\\");\\n  }\\n}\\n\\nclass IfEmpty extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"ifEmpty\\\", [\\n      \\\"dataValue\\\",\\n      \\\"dataGroup\\\",\\n      \\\"ignore\\\",\\n      \\\"remove\\\",\\n    ]);\\n  }\\n}\\n\\nclass IncludeXDPContent extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"includeXDPContent\\\");\\n  }\\n}\\n\\nclass IncrementalLoad extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"incrementalLoad\\\", [\\\"none\\\", \\\"forwardOnly\\\"]);\\n  }\\n}\\n\\nclass IncrementalMerge extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"incrementalMerge\\\");\\n  }\\n}\\n\\nclass Interactive extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"interactive\\\");\\n  }\\n}\\n\\nclass Jog extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"jog\\\", [\\\"usePrinterSetting\\\", \\\"none\\\", \\\"pageSet\\\"]);\\n  }\\n}\\n\\nclass LabelPrinter extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"labelPrinter\\\", \u002F* hasChildren = *\u002F true);\\n    this.name = getStringOption(attributes.name, [\\\"zpl\\\", \\\"dpl\\\", \\\"ipl\\\", \\\"tcpl\\\"]);\\n    this.batchOutput = null;\\n    this.flipLabel = null;\\n    this.fontInfo = null;\\n    this.xdc = null;\\n  }\\n}\\n\\nclass Layout extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"layout\\\", [\\\"paginate\\\", \\\"panel\\\"]);\\n  }\\n}\\n\\nclass Level extends IntegerObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"level\\\", 0, n => n > 0);\\n  }\\n}\\n\\nclass Linearized extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"linearized\\\");\\n  }\\n}\\n\\nclass Locale extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"locale\\\");\\n  }\\n}\\n\\nclass LocaleSet extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"localeSet\\\");\\n  }\\n}\\n\\nclass Log extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"log\\\", \u002F* hasChildren = *\u002F true);\\n    this.mode = null;\\n    this.threshold = null;\\n    this.to = null;\\n    this.uri = null;\\n  }\\n}\\n\\n\u002F\u002F Renamed in MapElement to avoid confusion with usual js Map.\\nclass MapElement extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"map\\\", \u002F* hasChildren = *\u002F true);\\n    this.equate = new XFAObjectArray();\\n    this.equateRange = new XFAObjectArray();\\n  }\\n}\\n\\nclass MediumInfo extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"mediumInfo\\\", \u002F* hasChildren = *\u002F true);\\n    this.map = null;\\n  }\\n}\\n\\nclass Message extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"message\\\", \u002F* hasChildren = *\u002F true);\\n    this.msgId = null;\\n    this.severity = null;\\n  }\\n}\\n\\nclass Messaging extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"messaging\\\", \u002F* hasChildren = *\u002F true);\\n    this.message = new XFAObjectArray();\\n  }\\n}\\n\\nclass Mode extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"mode\\\", [\\\"append\\\", \\\"overwrite\\\"]);\\n  }\\n}\\n\\nclass ModifyAnnots extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"modifyAnnots\\\");\\n  }\\n}\\n\\nclass MsgId extends IntegerObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"msgId\\\", 1, n => n >= 1);\\n  }\\n}\\n\\nclass NameAttr extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"nameAttr\\\");\\n  }\\n}\\n\\nclass NeverEmbed extends ContentObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"neverEmbed\\\");\\n  }\\n}\\n\\nclass NumberOfCopies extends IntegerObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"numberOfCopies\\\", null, n => n >= 2 && n \u003C= 5);\\n  }\\n}\\n\\nclass OpenAction extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"openAction\\\", \u002F* hasChildren = *\u002F true);\\n    this.destination = null;\\n  }\\n}\\n\\nclass Output extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"output\\\", \u002F* hasChildren = *\u002F true);\\n    this.to = null;\\n    this.type = null;\\n    this.uri = null;\\n  }\\n}\\n\\nclass OutputBin extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"outputBin\\\");\\n  }\\n}\\n\\nclass OutputXSL extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"outputXSL\\\", \u002F* hasChildren = *\u002F true);\\n    this.uri = null;\\n  }\\n}\\n\\nclass Overprint extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"overprint\\\", [\\\"none\\\", \\\"both\\\", \\\"draw\\\", \\\"field\\\"]);\\n  }\\n}\\n\\nclass Packets extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"packets\\\");\\n  }\\n\\n  [$finalize]() {\\n    if (this[$content] === \\\"*\\\") {\\n      return;\\n    }\\n    this[$content] = this[$content]\\n      .trim()\\n      .split(\u002F\\\\s+\u002F)\\n      .filter(x =>\\n        [\\\"config\\\", \\\"datasets\\\", \\\"template\\\", \\\"xfdf\\\", \\\"xslt\\\"].includes(x)\\n      );\\n  }\\n}\\n\\nclass PageOffset extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"pageOffset\\\");\\n    this.x = getInteger({\\n      data: attributes.x,\\n      defaultValue: \\\"useXDCSetting\\\",\\n      validate: n => true,\\n    });\\n    this.y = getInteger({\\n      data: attributes.y,\\n      defaultValue: \\\"useXDCSetting\\\",\\n      validate: n => true,\\n    });\\n  }\\n}\\n\\nclass PageRange extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"pageRange\\\");\\n  }\\n\\n  [$finalize]() {\\n    const numbers = this[$content]\\n      .trim()\\n      .split(\u002F\\\\s+\u002F)\\n      .map(x => parseInt(x, 10));\\n    const ranges = [];\\n    for (let i = 0, ii = numbers.length; i \u003C ii; i += 2) {\\n      ranges.push(numbers.slice(i, i + 2));\\n    }\\n    this[$content] = ranges;\\n  }\\n}\\n\\nclass Pagination extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"pagination\\\", [\\n      \\\"simplex\\\",\\n      \\\"duplexShortEdge\\\",\\n      \\\"duplexLongEdge\\\",\\n    ]);\\n  }\\n}\\n\\nclass PaginationOverride extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"paginationOverride\\\", [\\n      \\\"none\\\",\\n      \\\"forceDuplex\\\",\\n      \\\"forceDuplexLongEdge\\\",\\n      \\\"forceDuplexShortEdge\\\",\\n      \\\"forceSimplex\\\",\\n    ]);\\n  }\\n}\\n\\nclass Part extends IntegerObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"part\\\", 1, n => false);\\n  }\\n}\\n\\nclass Pcl extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"pcl\\\", \u002F* hasChildren = *\u002F true);\\n    this.name = attributes.name || \\\"\\\";\\n    this.batchOutput = null;\\n    this.fontInfo = null;\\n    this.jog = null;\\n    this.mediumInfo = null;\\n    this.outputBin = null;\\n    this.pageOffset = null;\\n    this.staple = null;\\n    this.xdc = null;\\n  }\\n}\\n\\nclass Pdf extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"pdf\\\", \u002F* hasChildren = *\u002F true);\\n    this.name = attributes.name || \\\"\\\";\\n    this.adobeExtensionLevel = null;\\n    this.batchOutput = null;\\n    this.compression = null;\\n    this.creator = null;\\n    this.encryption = null;\\n    this.fontInfo = null;\\n    this.interactive = null;\\n    this.linearized = null;\\n    this.openAction = null;\\n    this.pdfa = null;\\n    this.producer = null;\\n    this.renderPolicy = null;\\n    this.scriptModel = null;\\n    this.silentPrint = null;\\n    this.submitFormat = null;\\n    this.tagged = null;\\n    this.version = null;\\n    this.viewerPreferences = null;\\n    this.xdc = null;\\n  }\\n}\\n\\nclass Pdfa extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"pdfa\\\", \u002F* hasChildren = *\u002F true);\\n    this.amd = null;\\n    this.conformance = null;\\n    this.includeXDPContent = null;\\n    this.part = null;\\n  }\\n}\\n\\nclass Permissions extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"permissions\\\", \u002F* hasChildren = *\u002F true);\\n    this.accessibleContent = null;\\n    this.change = null;\\n    this.contentCopy = null;\\n    this.documentAssembly = null;\\n    this.formFieldFilling = null;\\n    this.modifyAnnots = null;\\n    this.plaintextMetadata = null;\\n    this.print = null;\\n    this.printHighQuality = null;\\n  }\\n}\\n\\nclass PickTrayByPDFSize extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"pickTrayByPDFSize\\\");\\n  }\\n}\\n\\nclass Picture extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"picture\\\");\\n  }\\n\\n  \u002F\u002F TODO: check the validity of the picture clause.\\n  \u002F\u002F See page 1150 in the spec.\\n}\\n\\nclass PlaintextMetadata extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"plaintextMetadata\\\");\\n  }\\n}\\n\\nclass Presence extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"presence\\\", [\\n      \\\"preserve\\\",\\n      \\\"dissolve\\\",\\n      \\\"dissolveStructure\\\",\\n      \\\"ignore\\\",\\n      \\\"remove\\\",\\n    ]);\\n  }\\n}\\n\\nclass Present extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"present\\\", \u002F* hasChildren = *\u002F true);\\n    this.behaviorOverride = null;\\n    this.cache = null;\\n    this.common = null;\\n    this.copies = null;\\n    this.destination = null;\\n    this.incrementalMerge = null;\\n    this.layout = null;\\n    this.output = null;\\n    this.overprint = null;\\n    this.pagination = null;\\n    this.paginationOverride = null;\\n    this.script = null;\\n    this.validate = null;\\n    this.xdp = null;\\n    this.driver = new XFAObjectArray();\\n    this.labelPrinter = new XFAObjectArray();\\n    this.pcl = new XFAObjectArray();\\n    this.pdf = new XFAObjectArray();\\n    this.ps = new XFAObjectArray();\\n    this.submitUrl = new XFAObjectArray();\\n    this.webClient = new XFAObjectArray();\\n    this.zpl = new XFAObjectArray();\\n  }\\n}\\n\\nclass Print extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"print\\\");\\n  }\\n}\\n\\nclass PrintHighQuality extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"printHighQuality\\\");\\n  }\\n}\\n\\nclass PrintScaling extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"printScaling\\\", [\\\"appdefault\\\", \\\"noScaling\\\"]);\\n  }\\n}\\n\\nclass PrinterName extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"printerName\\\");\\n  }\\n}\\n\\nclass Producer extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"producer\\\");\\n  }\\n}\\n\\nclass Ps extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"ps\\\", \u002F* hasChildren = *\u002F true);\\n    this.name = attributes.name || \\\"\\\";\\n    this.batchOutput = null;\\n    this.fontInfo = null;\\n    this.jog = null;\\n    this.mediumInfo = null;\\n    this.outputBin = null;\\n    this.staple = null;\\n    this.xdc = null;\\n  }\\n}\\n\\nclass Range extends ContentObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"range\\\");\\n  }\\n\\n  [$finalize]() {\\n    this[$content] = this[$content]\\n      .trim()\\n      .split(\u002F\\\\s*,\\\\s*\u002F, 2)\\n      .map(range => range.split(\\\"-\\\").map(x => parseInt(x.trim(), 10)))\\n      .filter(range => range.every(x => !isNaN(x)))\\n      .map(range => {\\n        if (range.length === 1) {\\n          range.push(range[0]);\\n        }\\n        return range;\\n      });\\n  }\\n}\\n\\nclass Record extends ContentObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"record\\\");\\n  }\\n\\n  [$finalize]() {\\n    this[$content] = this[$content].trim();\\n    const n = parseInt(this[$content], 10);\\n    if (!isNaN(n) && n >= 0) {\\n      this[$content] = n;\\n    }\\n  }\\n}\\n\\nclass Relevant extends ContentObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"relevant\\\");\\n  }\\n\\n  [$finalize]() {\\n    this[$content] = this[$content].trim().split(\u002F\\\\s+\u002F);\\n  }\\n}\\n\\nclass Rename extends ContentObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"rename\\\");\\n  }\\n\\n  [$finalize]() {\\n    this[$content] = this[$content].trim();\\n    \u002F\u002F String must be a XFA name: same as XML one except that there\\n    \u002F\u002F is no colon.\\n    if (\\n      this[$content].toLowerCase().startsWith(\\\"xml\\\") ||\\n      new RegExp(\\\"[\\\\\\\\p{L}_][\\\\\\\\p{L}\\\\\\\\d._\\\\\\\\p{M}-]*\\\", \\\"u\\\").test(this[$content])\\n    ) {\\n      warn(\\\"XFA - Rename: invalid XFA name\\\");\\n    }\\n  }\\n}\\n\\nclass RenderPolicy extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"renderPolicy\\\", [\\\"server\\\", \\\"client\\\"]);\\n  }\\n}\\n\\nclass RunScripts extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"runScripts\\\", [\\\"both\\\", \\\"client\\\", \\\"none\\\", \\\"server\\\"]);\\n  }\\n}\\n\\nclass Script extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"script\\\", \u002F* hasChildren = *\u002F true);\\n    this.currentPage = null;\\n    this.exclude = null;\\n    this.runScripts = null;\\n  }\\n}\\n\\nclass ScriptModel extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"scriptModel\\\", [\\\"XFA\\\", \\\"none\\\"]);\\n  }\\n}\\n\\nclass Severity extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"severity\\\", [\\n      \\\"ignore\\\",\\n      \\\"error\\\",\\n      \\\"information\\\",\\n      \\\"trace\\\",\\n      \\\"warning\\\",\\n    ]);\\n  }\\n}\\n\\nclass SilentPrint extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"silentPrint\\\", \u002F* hasChildren = *\u002F true);\\n    this.addSilentPrint = null;\\n    this.printerName = null;\\n  }\\n}\\n\\nclass Staple extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"staple\\\");\\n    this.mode = getStringOption(attributes.mode, [\\n      \\\"usePrinterSetting\\\",\\n      \\\"on\\\",\\n      \\\"off\\\",\\n    ]);\\n  }\\n}\\n\\nclass StartNode extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"startNode\\\");\\n  }\\n}\\n\\nclass StartPage extends IntegerObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"startPage\\\", 0, n => true);\\n  }\\n}\\n\\nclass SubmitFormat extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"submitFormat\\\", [\\n      \\\"html\\\",\\n      \\\"delegate\\\",\\n      \\\"fdf\\\",\\n      \\\"xml\\\",\\n      \\\"pdf\\\",\\n    ]);\\n  }\\n}\\n\\nclass SubmitUrl extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"submitUrl\\\");\\n  }\\n}\\n\\nclass SubsetBelow extends IntegerObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"subsetBelow\\\", 100, n => n >= 0 && n \u003C= 100);\\n  }\\n}\\n\\nclass SuppressBanner extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"suppressBanner\\\");\\n  }\\n}\\n\\nclass Tagged extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"tagged\\\");\\n  }\\n}\\n\\nclass Template extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"template\\\", \u002F* hasChildren = *\u002F true);\\n    this.base = null;\\n    this.relevant = null;\\n    this.startPage = null;\\n    this.uri = null;\\n    this.xsl = null;\\n  }\\n}\\n\\nclass Threshold extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"threshold\\\", [\\n      \\\"trace\\\",\\n      \\\"error\\\",\\n      \\\"information\\\",\\n      \\\"warning\\\",\\n    ]);\\n  }\\n}\\n\\nclass To extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"to\\\", [\\n      \\\"null\\\",\\n      \\\"memory\\\",\\n      \\\"stderr\\\",\\n      \\\"stdout\\\",\\n      \\\"system\\\",\\n      \\\"uri\\\",\\n    ]);\\n  }\\n}\\n\\nclass TemplateCache extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"templateCache\\\");\\n    this.maxEntries = getInteger({\\n      data: attributes.maxEntries,\\n      defaultValue: 5,\\n      validate: n => n >= 0,\\n    });\\n  }\\n}\\n\\nclass Trace extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"trace\\\", \u002F* hasChildren = *\u002F true);\\n    this.area = new XFAObjectArray();\\n  }\\n}\\n\\nclass Transform extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"transform\\\", \u002F* hasChildren = *\u002F true);\\n    this.groupParent = null;\\n    this.ifEmpty = null;\\n    this.nameAttr = null;\\n    this.picture = null;\\n    this.presence = null;\\n    this.rename = null;\\n    this.whitespace = null;\\n  }\\n}\\n\\nclass Type extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"type\\\", [\\n      \\\"none\\\",\\n      \\\"ascii85\\\",\\n      \\\"asciiHex\\\",\\n      \\\"ccittfax\\\",\\n      \\\"flate\\\",\\n      \\\"lzw\\\",\\n      \\\"runLength\\\",\\n      \\\"native\\\",\\n      \\\"xdp\\\",\\n      \\\"mergedXDP\\\",\\n    ]);\\n  }\\n}\\n\\nclass Uri extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"uri\\\");\\n  }\\n}\\n\\nclass Validate extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"validate\\\", [\\n      \\\"preSubmit\\\",\\n      \\\"prePrint\\\",\\n      \\\"preExecute\\\",\\n      \\\"preSave\\\",\\n    ]);\\n  }\\n}\\n\\nclass ValidateApprovalSignatures extends ContentObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"validateApprovalSignatures\\\");\\n  }\\n\\n  [$finalize]() {\\n    this[$content] = this[$content]\\n      .trim()\\n      .split(\u002F\\\\s+\u002F)\\n      .filter(x => [\\\"docReady\\\", \\\"postSign\\\"].includes(x));\\n  }\\n}\\n\\nclass ValidationMessaging extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"validationMessaging\\\", [\\n      \\\"allMessagesIndividually\\\",\\n      \\\"allMessagesTogether\\\",\\n      \\\"firstMessageOnly\\\",\\n      \\\"noMessages\\\",\\n    ]);\\n  }\\n}\\n\\nclass Version extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"version\\\", [\\\"1.7\\\", \\\"1.6\\\", \\\"1.5\\\", \\\"1.4\\\", \\\"1.3\\\", \\\"1.2\\\"]);\\n  }\\n}\\n\\nclass VersionControl extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"VersionControl\\\");\\n    this.outputBelow = getStringOption(attributes.outputBelow, [\\n      \\\"warn\\\",\\n      \\\"error\\\",\\n      \\\"update\\\",\\n    ]);\\n    this.sourceAbove = getStringOption(attributes.sourceAbove, [\\n      \\\"warn\\\",\\n      \\\"error\\\",\\n    ]);\\n    this.sourceBelow = getStringOption(attributes.sourceBelow, [\\n      \\\"update\\\",\\n      \\\"maintain\\\",\\n    ]);\\n  }\\n}\\n\\nclass ViewerPreferences extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"viewerPreferences\\\", \u002F* hasChildren = *\u002F true);\\n    this.ADBE_JSConsole = null;\\n    this.ADBE_JSDebugger = null;\\n    this.addViewerPreferences = null;\\n    this.duplexOption = null;\\n    this.enforce = null;\\n    this.numberOfCopies = null;\\n    this.pageRange = null;\\n    this.pickTrayByPDFSize = null;\\n    this.printScaling = null;\\n  }\\n}\\n\\nclass WebClient extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"webClient\\\", \u002F* hasChildren = *\u002F true);\\n    this.name = attributes.name ? attributes.name.trim() : \\\"\\\";\\n    this.fontInfo = null;\\n    this.xdc = null;\\n  }\\n}\\n\\nclass Whitespace extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"whitespace\\\", [\\n      \\\"preserve\\\",\\n      \\\"ltrim\\\",\\n      \\\"normalize\\\",\\n      \\\"rtrim\\\",\\n      \\\"trim\\\",\\n    ]);\\n  }\\n}\\n\\nclass Window extends ContentObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"window\\\");\\n  }\\n\\n  [$finalize]() {\\n    const pair = this[$content]\\n      .trim()\\n      .split(\u002F\\\\s*,\\\\s*\u002F, 2)\\n      .map(x => parseInt(x, 10));\\n    if (pair.some(x => isNaN(x))) {\\n      this[$content] = [0, 0];\\n      return;\\n    }\\n    if (pair.length === 1) {\\n      pair.push(pair[0]);\\n    }\\n    this[$content] = pair;\\n  }\\n}\\n\\nclass Xdc extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"xdc\\\", \u002F* hasChildren = *\u002F true);\\n    this.uri = new XFAObjectArray();\\n    this.xsl = new XFAObjectArray();\\n  }\\n}\\n\\nclass Xdp extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"xdp\\\", \u002F* hasChildren = *\u002F true);\\n    this.packets = null;\\n  }\\n}\\n\\nclass Xsl extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"xsl\\\", \u002F* hasChildren = *\u002F true);\\n    this.debug = null;\\n    this.uri = null;\\n  }\\n}\\n\\nclass Zpl extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"zpl\\\", \u002F* hasChildren = *\u002F true);\\n    this.name = attributes.name ? attributes.name.trim() : \\\"\\\";\\n    this.batchOutput = null;\\n    this.flipLabel = null;\\n    this.fontInfo = null;\\n    this.xdc = null;\\n  }\\n}\\n\\nclass ConfigNamespace {\\n  static [$buildXFAObject](name, attributes) {\\n    if (ConfigNamespace.hasOwnProperty(name)) {\\n      return ConfigNamespace[name](attributes);\\n    }\\n    return undefined;\\n  }\\n\\n  static acrobat(attrs) {\\n    return new Acrobat(attrs);\\n  }\\n\\n  static acrobat7(attrs) {\\n    return new Acrobat7(attrs);\\n  }\\n\\n  static ADBE_JSConsole(attrs) {\\n    return new ADBE_JSConsole(attrs);\\n  }\\n\\n  static ADBE_JSDebugger(attrs) {\\n    return new ADBE_JSDebugger(attrs);\\n  }\\n\\n  static addSilentPrint(attrs) {\\n    return new AddSilentPrint(attrs);\\n  }\\n\\n  static addViewerPreferences(attrs) {\\n    return new AddViewerPreferences(attrs);\\n  }\\n\\n  static adjustData(attrs) {\\n    return new AdjustData(attrs);\\n  }\\n\\n  static adobeExtensionLevel(attrs) {\\n    return new AdobeExtensionLevel(attrs);\\n  }\\n\\n  static agent(attrs) {\\n    return new Agent(attrs);\\n  }\\n\\n  static alwaysEmbed(attrs) {\\n    return new AlwaysEmbed(attrs);\\n  }\\n\\n  static amd(attrs) {\\n    return new Amd(attrs);\\n  }\\n\\n  static area(attrs) {\\n    return new Area(attrs);\\n  }\\n\\n  static attributes(attrs) {\\n    return new Attributes(attrs);\\n  }\\n\\n  static autoSave(attrs) {\\n    return new AutoSave(attrs);\\n  }\\n\\n  static base(attrs) {\\n    return new Base(attrs);\\n  }\\n\\n  static batchOutput(attrs) {\\n    return new BatchOutput(attrs);\\n  }\\n\\n  static behaviorOverride(attrs) {\\n    return new BehaviorOverride(attrs);\\n  }\\n\\n  static cache(attrs) {\\n    return new Cache(attrs);\\n  }\\n\\n  static change(attrs) {\\n    return new Change(attrs);\\n  }\\n\\n  static common(attrs) {\\n    return new Common(attrs);\\n  }\\n\\n  static compress(attrs) {\\n    return new Compress(attrs);\\n  }\\n\\n  static compressLogicalStructure(attrs) {\\n    return new CompressLogicalStructure(attrs);\\n  }\\n\\n  static compressObjectStream(attrs) {\\n    return new CompressObjectStream(attrs);\\n  }\\n\\n  static compression(attrs) {\\n    return new Compression(attrs);\\n  }\\n\\n  static config(attrs) {\\n    return new Config(attrs);\\n  }\\n\\n  static conformance(attrs) {\\n    return new Conformance(attrs);\\n  }\\n\\n  static contentCopy(attrs) {\\n    return new ContentCopy(attrs);\\n  }\\n\\n  static copies(attrs) {\\n    return new Copies(attrs);\\n  }\\n\\n  static creator(attrs) {\\n    return new Creator(attrs);\\n  }\\n\\n  static currentPage(attrs) {\\n    return new CurrentPage(attrs);\\n  }\\n\\n  static data(attrs) {\\n    return new Data(attrs);\\n  }\\n\\n  static debug(attrs) {\\n    return new Debug(attrs);\\n  }\\n\\n  static defaultTypeface(attrs) {\\n    return new DefaultTypeface(attrs);\\n  }\\n\\n  static destination(attrs) {\\n    return new Destination(attrs);\\n  }\\n\\n  static documentAssembly(attrs) {\\n    return new DocumentAssembly(attrs);\\n  }\\n\\n  static driver(attrs) {\\n    return new Driver(attrs);\\n  }\\n\\n  static duplexOption(attrs) {\\n    return new DuplexOption(attrs);\\n  }\\n\\n  static dynamicRender(attrs) {\\n    return new DynamicRender(attrs);\\n  }\\n\\n  static embed(attrs) {\\n    return new Embed(attrs);\\n  }\\n\\n  static encrypt(attrs) {\\n    return new Encrypt(attrs);\\n  }\\n\\n  static encryption(attrs) {\\n    return new Encryption(attrs);\\n  }\\n\\n  static encryptionLevel(attrs) {\\n    return new EncryptionLevel(attrs);\\n  }\\n\\n  static enforce(attrs) {\\n    return new Enforce(attrs);\\n  }\\n\\n  static equate(attrs) {\\n    return new Equate(attrs);\\n  }\\n\\n  static equateRange(attrs) {\\n    return new EquateRange(attrs);\\n  }\\n\\n  static exclude(attrs) {\\n    return new Exclude(attrs);\\n  }\\n\\n  static excludeNS(attrs) {\\n    return new ExcludeNS(attrs);\\n  }\\n\\n  static flipLabel(attrs) {\\n    return new FlipLabel(attrs);\\n  }\\n\\n  static fontInfo(attrs) {\\n    return new FontInfo(attrs);\\n  }\\n\\n  static formFieldFilling(attrs) {\\n    return new FormFieldFilling(attrs);\\n  }\\n\\n  static groupParent(attrs) {\\n    return new GroupParent(attrs);\\n  }\\n\\n  static ifEmpty(attrs) {\\n    return new IfEmpty(attrs);\\n  }\\n\\n  static includeXDPContent(attrs) {\\n    return new IncludeXDPContent(attrs);\\n  }\\n\\n  static incrementalLoad(attrs) {\\n    return new IncrementalLoad(attrs);\\n  }\\n\\n  static incrementalMerge(attrs) {\\n    return new IncrementalMerge(attrs);\\n  }\\n\\n  static interactive(attrs) {\\n    return new Interactive(attrs);\\n  }\\n\\n  static jog(attrs) {\\n    return new Jog(attrs);\\n  }\\n\\n  static labelPrinter(attrs) {\\n    return new LabelPrinter(attrs);\\n  }\\n\\n  static layout(attrs) {\\n    return new Layout(attrs);\\n  }\\n\\n  static level(attrs) {\\n    return new Level(attrs);\\n  }\\n\\n  static linearized(attrs) {\\n    return new Linearized(attrs);\\n  }\\n\\n  static locale(attrs) {\\n    return new Locale(attrs);\\n  }\\n\\n  static localeSet(attrs) {\\n    return new LocaleSet(attrs);\\n  }\\n\\n  static log(attrs) {\\n    return new Log(attrs);\\n  }\\n\\n  static map(attrs) {\\n    return new MapElement(attrs);\\n  }\\n\\n  static mediumInfo(attrs) {\\n    return new MediumInfo(attrs);\\n  }\\n\\n  static message(attrs) {\\n    return new Message(attrs);\\n  }\\n\\n  static messaging(attrs) {\\n    return new Messaging(attrs);\\n  }\\n\\n  static mode(attrs) {\\n    return new Mode(attrs);\\n  }\\n\\n  static modifyAnnots(attrs) {\\n    return new ModifyAnnots(attrs);\\n  }\\n\\n  static msgId(attrs) {\\n    return new MsgId(attrs);\\n  }\\n\\n  static nameAttr(attrs) {\\n    return new NameAttr(attrs);\\n  }\\n\\n  static neverEmbed(attrs) {\\n    return new NeverEmbed(attrs);\\n  }\\n\\n  static numberOfCopies(attrs) {\\n    return new NumberOfCopies(attrs);\\n  }\\n\\n  static openAction(attrs) {\\n    return new OpenAction(attrs);\\n  }\\n\\n  static output(attrs) {\\n    return new Output(attrs);\\n  }\\n\\n  static outputBin(attrs) {\\n    return new OutputBin(attrs);\\n  }\\n\\n  static outputXSL(attrs) {\\n    return new OutputXSL(attrs);\\n  }\\n\\n  static overprint(attrs) {\\n    return new Overprint(attrs);\\n  }\\n\\n  static packets(attrs) {\\n    return new Packets(attrs);\\n  }\\n\\n  static pageOffset(attrs) {\\n    return new PageOffset(attrs);\\n  }\\n\\n  static pageRange(attrs) {\\n    return new PageRange(attrs);\\n  }\\n\\n  static pagination(attrs) {\\n    return new Pagination(attrs);\\n  }\\n\\n  static paginationOverride(attrs) {\\n    return new PaginationOverride(attrs);\\n  }\\n\\n  static part(attrs) {\\n    return new Part(attrs);\\n  }\\n\\n  static pcl(attrs) {\\n    return new Pcl(attrs);\\n  }\\n\\n  static pdf(attrs) {\\n    return new Pdf(attrs);\\n  }\\n\\n  static pdfa(attrs) {\\n    return new Pdfa(attrs);\\n  }\\n\\n  static permissions(attrs) {\\n    return new Permissions(attrs);\\n  }\\n\\n  static pickTrayByPDFSize(attrs) {\\n    return new PickTrayByPDFSize(attrs);\\n  }\\n\\n  static picture(attrs) {\\n    return new Picture(attrs);\\n  }\\n\\n  static plaintextMetadata(attrs) {\\n    return new PlaintextMetadata(attrs);\\n  }\\n\\n  static presence(attrs) {\\n    return new Presence(attrs);\\n  }\\n\\n  static present(attrs) {\\n    return new Present(attrs);\\n  }\\n\\n  static print(attrs) {\\n    return new Print(attrs);\\n  }\\n\\n  static printHighQuality(attrs) {\\n    return new PrintHighQuality(attrs);\\n  }\\n\\n  static printScaling(attrs) {\\n    return new PrintScaling(attrs);\\n  }\\n\\n  static printerName(attrs) {\\n    return new PrinterName(attrs);\\n  }\\n\\n  static producer(attrs) {\\n    return new Producer(attrs);\\n  }\\n\\n  static ps(attrs) {\\n    return new Ps(attrs);\\n  }\\n\\n  static range(attrs) {\\n    return new Range(attrs);\\n  }\\n\\n  static record(attrs) {\\n    return new Record(attrs);\\n  }\\n\\n  static relevant(attrs) {\\n    return new Relevant(attrs);\\n  }\\n\\n  static rename(attrs) {\\n    return new Rename(attrs);\\n  }\\n\\n  static renderPolicy(attrs) {\\n    return new RenderPolicy(attrs);\\n  }\\n\\n  static runScripts(attrs) {\\n    return new RunScripts(attrs);\\n  }\\n\\n  static script(attrs) {\\n    return new Script(attrs);\\n  }\\n\\n  static scriptModel(attrs) {\\n    return new ScriptModel(attrs);\\n  }\\n\\n  static severity(attrs) {\\n    return new Severity(attrs);\\n  }\\n\\n  static silentPrint(attrs) {\\n    return new SilentPrint(attrs);\\n  }\\n\\n  static staple(attrs) {\\n    return new Staple(attrs);\\n  }\\n\\n  static startNode(attrs) {\\n    return new StartNode(attrs);\\n  }\\n\\n  static startPage(attrs) {\\n    return new StartPage(attrs);\\n  }\\n\\n  static submitFormat(attrs) {\\n    return new SubmitFormat(attrs);\\n  }\\n\\n  static submitUrl(attrs) {\\n    return new SubmitUrl(attrs);\\n  }\\n\\n  static subsetBelow(attrs) {\\n    return new SubsetBelow(attrs);\\n  }\\n\\n  static suppressBanner(attrs) {\\n    return new SuppressBanner(attrs);\\n  }\\n\\n  static tagged(attrs) {\\n    return new Tagged(attrs);\\n  }\\n\\n  static template(attrs) {\\n    return new Template(attrs);\\n  }\\n\\n  static templateCache(attrs) {\\n    return new TemplateCache(attrs);\\n  }\\n\\n  static threshold(attrs) {\\n    return new Threshold(attrs);\\n  }\\n\\n  static to(attrs) {\\n    return new To(attrs);\\n  }\\n\\n  static trace(attrs) {\\n    return new Trace(attrs);\\n  }\\n\\n  static transform(attrs) {\\n    return new Transform(attrs);\\n  }\\n\\n  static type(attrs) {\\n    return new Type(attrs);\\n  }\\n\\n  static uri(attrs) {\\n    return new Uri(attrs);\\n  }\\n\\n  static validate(attrs) {\\n    return new Validate(attrs);\\n  }\\n\\n  static validateApprovalSignatures(attrs) {\\n    return new ValidateApprovalSignatures(attrs);\\n  }\\n\\n  static validationMessaging(attrs) {\\n    return new ValidationMessaging(attrs);\\n  }\\n\\n  static version(attrs) {\\n    return new Version(attrs);\\n  }\\n\\n  static versionControl(attrs) {\\n    return new VersionControl(attrs);\\n  }\\n\\n  static viewerPreferences(attrs) {\\n    return new ViewerPreferences(attrs);\\n  }\\n\\n  static webClient(attrs) {\\n    return new WebClient(attrs);\\n  }\\n\\n  static whitespace(attrs) {\\n    return new Whitespace(attrs);\\n  }\\n\\n  static window(attrs) {\\n    return new Window(attrs);\\n  }\\n\\n  static xdc(attrs) {\\n    return new Xdc(attrs);\\n  }\\n\\n  static xdp(attrs) {\\n    return new Xdp(attrs);\\n  }\\n\\n  static xsl(attrs) {\\n    return new Xsl(attrs);\\n  }\\n\\n  static zpl(attrs) {\\n    return new Zpl(attrs);\\n  }\\n}\\n\\nexport { ConfigNamespace };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { $buildXFAObject, NamespaceIds } from \\\".\u002Fnamespaces.js\\\";\\nimport { StringObject, XFAObject, XFAObjectArray } from \\\".\u002Fxfa_object.js\\\";\\n\\nconst CONNECTION_SET_NS_ID = NamespaceIds.connectionSet.id;\\n\\nclass ConnectionSet extends XFAObject {\\n  constructor(attributes) {\\n    super(CONNECTION_SET_NS_ID, \\\"connectionSet\\\", \u002F* hasChildren = *\u002F true);\\n    this.wsdlConnection = new XFAObjectArray();\\n    this.xmlConnection = new XFAObjectArray();\\n    this.xsdConnection = new XFAObjectArray();\\n  }\\n}\\n\\nclass EffectiveInputPolicy extends XFAObject {\\n  constructor(attributes) {\\n    super(CONNECTION_SET_NS_ID, \\\"effectiveInputPolicy\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass EffectiveOutputPolicy extends XFAObject {\\n  constructor(attributes) {\\n    super(CONNECTION_SET_NS_ID, \\\"effectiveOutputPolicy\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Operation extends StringObject {\\n  constructor(attributes) {\\n    super(CONNECTION_SET_NS_ID, \\\"operation\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.input = attributes.input || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.output = attributes.output || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass RootElement extends StringObject {\\n  constructor(attributes) {\\n    super(CONNECTION_SET_NS_ID, \\\"rootElement\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass SoapAction extends StringObject {\\n  constructor(attributes) {\\n    super(CONNECTION_SET_NS_ID, \\\"soapAction\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass SoapAddress extends StringObject {\\n  constructor(attributes) {\\n    super(CONNECTION_SET_NS_ID, \\\"soapAddress\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Uri extends StringObject {\\n  constructor(attributes) {\\n    super(CONNECTION_SET_NS_ID, \\\"uri\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass WsdlAddress extends StringObject {\\n  constructor(attributes) {\\n    super(CONNECTION_SET_NS_ID, \\\"wsdlAddress\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass WsdlConnection extends XFAObject {\\n  constructor(attributes) {\\n    super(CONNECTION_SET_NS_ID, \\\"wsdlConnection\\\", \u002F* hasChildren = *\u002F true);\\n    this.dataDescription = attributes.dataDescription || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.effectiveInputPolicy = null;\\n    this.effectiveOutputPolicy = null;\\n    this.operation = null;\\n    this.soapAction = null;\\n    this.soapAddress = null;\\n    this.wsdlAddress = null;\\n  }\\n}\\n\\nclass XmlConnection extends XFAObject {\\n  constructor(attributes) {\\n    super(CONNECTION_SET_NS_ID, \\\"xmlConnection\\\", \u002F* hasChildren = *\u002F true);\\n    this.dataDescription = attributes.dataDescription || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.uri = null;\\n  }\\n}\\n\\nclass XsdConnection extends XFAObject {\\n  constructor(attributes) {\\n    super(CONNECTION_SET_NS_ID, \\\"xsdConnection\\\", \u002F* hasChildren = *\u002F true);\\n    this.dataDescription = attributes.dataDescription || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.rootElement = null;\\n    this.uri = null;\\n  }\\n}\\n\\nclass ConnectionSetNamespace {\\n  static [$buildXFAObject](name, attributes) {\\n    if (ConnectionSetNamespace.hasOwnProperty(name)) {\\n      return ConnectionSetNamespace[name](attributes);\\n    }\\n    return undefined;\\n  }\\n\\n  static connectionSet(attrs) {\\n    return new ConnectionSet(attrs);\\n  }\\n\\n  static effectiveInputPolicy(attrs) {\\n    return new EffectiveInputPolicy(attrs);\\n  }\\n\\n  static effectiveOutputPolicy(attrs) {\\n    return new EffectiveOutputPolicy(attrs);\\n  }\\n\\n  static operation(attrs) {\\n    return new Operation(attrs);\\n  }\\n\\n  static rootElement(attrs) {\\n    return new RootElement(attrs);\\n  }\\n\\n  static soapAction(attrs) {\\n    return new SoapAction(attrs);\\n  }\\n\\n  static soapAddress(attrs) {\\n    return new SoapAddress(attrs);\\n  }\\n\\n  static uri(attrs) {\\n    return new Uri(attrs);\\n  }\\n\\n  static wsdlAddress(attrs) {\\n    return new WsdlAddress(attrs);\\n  }\\n\\n  static wsdlConnection(attrs) {\\n    return new WsdlConnection(attrs);\\n  }\\n\\n  static xmlConnection(attrs) {\\n    return new XmlConnection(attrs);\\n  }\\n\\n  static xsdConnection(attrs) {\\n    return new XsdConnection(attrs);\\n  }\\n}\\n\\nexport { ConnectionSetNamespace };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  $appendChild,\\n  $isNsAgnostic,\\n  $namespaceId,\\n  $nodeName,\\n  $onChild,\\n} from \\\".\u002Fsymbol_utils.js\\\";\\nimport { $buildXFAObject, NamespaceIds } from \\\".\u002Fnamespaces.js\\\";\\nimport { XFAObject, XmlObject } from \\\".\u002Fxfa_object.js\\\";\\n\\nconst DATASETS_NS_ID = NamespaceIds.datasets.id;\\n\\nclass Data extends XmlObject {\\n  constructor(attributes) {\\n    super(DATASETS_NS_ID, \\\"data\\\", attributes);\\n  }\\n\\n  [$isNsAgnostic]() {\\n    return true;\\n  }\\n}\\n\\nclass Datasets extends XFAObject {\\n  constructor(attributes) {\\n    super(DATASETS_NS_ID, \\\"datasets\\\", \u002F* hasChildren = *\u002F true);\\n    this.data = null;\\n    this.Signature = null;\\n  }\\n\\n  [$onChild](child) {\\n    const name = child[$nodeName];\\n    if (\\n      (name === \\\"data\\\" && child[$namespaceId] === DATASETS_NS_ID) ||\\n      (name === \\\"Signature\\\" &&\\n        child[$namespaceId] === NamespaceIds.signature.id)\\n    ) {\\n      this[name] = child;\\n    }\\n    this[$appendChild](child);\\n  }\\n}\\n\\nclass DatasetsNamespace {\\n  static [$buildXFAObject](name, attributes) {\\n    if (DatasetsNamespace.hasOwnProperty(name)) {\\n      return DatasetsNamespace[name](attributes);\\n    }\\n    return undefined;\\n  }\\n\\n  static datasets(attributes) {\\n    return new Datasets(attributes);\\n  }\\n\\n  static data(attributes) {\\n    return new Data(attributes);\\n  }\\n}\\n\\nexport { DatasetsNamespace };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { $buildXFAObject, NamespaceIds } from \\\".\u002Fnamespaces.js\\\";\\nimport {\\n  ContentObject,\\n  StringObject,\\n  XFAObject,\\n  XFAObjectArray,\\n} from \\\".\u002Fxfa_object.js\\\";\\nimport { getInteger, getStringOption } from \\\".\u002Futils.js\\\";\\n\\nconst LOCALE_SET_NS_ID = NamespaceIds.localeSet.id;\\n\\nclass CalendarSymbols extends XFAObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"calendarSymbols\\\", \u002F* hasChildren = *\u002F true);\\n    this.name = \\\"gregorian\\\";\\n    this.dayNames = new XFAObjectArray(2);\\n    this.eraNames = null;\\n    this.meridiemNames = null;\\n    this.monthNames = new XFAObjectArray(2);\\n  }\\n}\\n\\nclass CurrencySymbol extends StringObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"currencySymbol\\\");\\n    this.name = getStringOption(attributes.name, [\\n      \\\"symbol\\\",\\n      \\\"isoname\\\",\\n      \\\"decimal\\\",\\n    ]);\\n  }\\n}\\n\\nclass CurrencySymbols extends XFAObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"currencySymbols\\\", \u002F* hasChildren = *\u002F true);\\n    this.currencySymbol = new XFAObjectArray(3);\\n  }\\n}\\n\\nclass DatePattern extends StringObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"datePattern\\\");\\n    this.name = getStringOption(attributes.name, [\\n      \\\"full\\\",\\n      \\\"long\\\",\\n      \\\"med\\\",\\n      \\\"short\\\",\\n    ]);\\n  }\\n}\\n\\nclass DatePatterns extends XFAObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"datePatterns\\\", \u002F* hasChildren = *\u002F true);\\n    this.datePattern = new XFAObjectArray(4);\\n  }\\n}\\n\\nclass DateTimeSymbols extends ContentObject {\\n  \u002F\u002F TODO: spec unclear about the format of the array.\\n\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"dateTimeSymbols\\\");\\n  }\\n}\\n\\nclass Day extends StringObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"day\\\");\\n  }\\n}\\n\\nclass DayNames extends XFAObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"dayNames\\\", \u002F* hasChildren = *\u002F true);\\n    this.abbr = getInteger({\\n      data: attributes.abbr,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.day = new XFAObjectArray(7);\\n  }\\n}\\n\\nclass Era extends StringObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"era\\\");\\n  }\\n}\\n\\nclass EraNames extends XFAObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"eraNames\\\", \u002F* hasChildren = *\u002F true);\\n    this.era = new XFAObjectArray(2);\\n  }\\n}\\n\\nclass Locale extends XFAObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"locale\\\", \u002F* hasChildren = *\u002F true);\\n    this.desc = attributes.desc || \\\"\\\";\\n    this.name = \\\"isoname\\\";\\n    this.calendarSymbols = null;\\n    this.currencySymbols = null;\\n    this.datePatterns = null;\\n    this.dateTimeSymbols = null;\\n    this.numberPatterns = null;\\n    this.numberSymbols = null;\\n    this.timePatterns = null;\\n    this.typeFaces = null;\\n  }\\n}\\n\\nclass LocaleSet extends XFAObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"localeSet\\\", \u002F* hasChildren = *\u002F true);\\n    this.locale = new XFAObjectArray();\\n  }\\n}\\n\\nclass Meridiem extends StringObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"meridiem\\\");\\n  }\\n}\\n\\nclass MeridiemNames extends XFAObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"meridiemNames\\\", \u002F* hasChildren = *\u002F true);\\n    this.meridiem = new XFAObjectArray(2);\\n  }\\n}\\n\\nclass Month extends StringObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"month\\\");\\n  }\\n}\\n\\nclass MonthNames extends XFAObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"monthNames\\\", \u002F* hasChildren = *\u002F true);\\n    this.abbr = getInteger({\\n      data: attributes.abbr,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.month = new XFAObjectArray(12);\\n  }\\n}\\n\\nclass NumberPattern extends StringObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"numberPattern\\\");\\n    this.name = getStringOption(attributes.name, [\\n      \\\"full\\\",\\n      \\\"long\\\",\\n      \\\"med\\\",\\n      \\\"short\\\",\\n    ]);\\n  }\\n}\\n\\nclass NumberPatterns extends XFAObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"numberPatterns\\\", \u002F* hasChildren = *\u002F true);\\n    this.numberPattern = new XFAObjectArray(4);\\n  }\\n}\\n\\nclass NumberSymbol extends StringObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"numberSymbol\\\");\\n    this.name = getStringOption(attributes.name, [\\n      \\\"decimal\\\",\\n      \\\"grouping\\\",\\n      \\\"percent\\\",\\n      \\\"minus\\\",\\n      \\\"zero\\\",\\n    ]);\\n  }\\n}\\n\\nclass NumberSymbols extends XFAObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"numberSymbols\\\", \u002F* hasChildren = *\u002F true);\\n    this.numberSymbol = new XFAObjectArray(5);\\n  }\\n}\\n\\nclass TimePattern extends StringObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"timePattern\\\");\\n    this.name = getStringOption(attributes.name, [\\n      \\\"full\\\",\\n      \\\"long\\\",\\n      \\\"med\\\",\\n      \\\"short\\\",\\n    ]);\\n  }\\n}\\n\\nclass TimePatterns extends XFAObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"timePatterns\\\", \u002F* hasChildren = *\u002F true);\\n    this.timePattern = new XFAObjectArray(4);\\n  }\\n}\\n\\nclass TypeFace extends XFAObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"typeFace\\\", \u002F* hasChildren = *\u002F true);\\n    this.name = attributes.name | \\\"\\\";\\n  }\\n}\\n\\nclass TypeFaces extends XFAObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"typeFaces\\\", \u002F* hasChildren = *\u002F true);\\n    this.typeFace = new XFAObjectArray();\\n  }\\n}\\n\\nclass LocaleSetNamespace {\\n  static [$buildXFAObject](name, attributes) {\\n    if (LocaleSetNamespace.hasOwnProperty(name)) {\\n      return LocaleSetNamespace[name](attributes);\\n    }\\n    return undefined;\\n  }\\n\\n  static calendarSymbols(attrs) {\\n    return new CalendarSymbols(attrs);\\n  }\\n\\n  static currencySymbol(attrs) {\\n    return new CurrencySymbol(attrs);\\n  }\\n\\n  static currencySymbols(attrs) {\\n    return new CurrencySymbols(attrs);\\n  }\\n\\n  static datePattern(attrs) {\\n    return new DatePattern(attrs);\\n  }\\n\\n  static datePatterns(attrs) {\\n    return new DatePatterns(attrs);\\n  }\\n\\n  static dateTimeSymbols(attrs) {\\n    return new DateTimeSymbols(attrs);\\n  }\\n\\n  static day(attrs) {\\n    return new Day(attrs);\\n  }\\n\\n  static dayNames(attrs) {\\n    return new DayNames(attrs);\\n  }\\n\\n  static era(attrs) {\\n    return new Era(attrs);\\n  }\\n\\n  static eraNames(attrs) {\\n    return new EraNames(attrs);\\n  }\\n\\n  static locale(attrs) {\\n    return new Locale(attrs);\\n  }\\n\\n  static localeSet(attrs) {\\n    return new LocaleSet(attrs);\\n  }\\n\\n  static meridiem(attrs) {\\n    return new Meridiem(attrs);\\n  }\\n\\n  static meridiemNames(attrs) {\\n    return new MeridiemNames(attrs);\\n  }\\n\\n  static month(attrs) {\\n    return new Month(attrs);\\n  }\\n\\n  static monthNames(attrs) {\\n    return new MonthNames(attrs);\\n  }\\n\\n  static numberPattern(attrs) {\\n    return new NumberPattern(attrs);\\n  }\\n\\n  static numberPatterns(attrs) {\\n    return new NumberPatterns(attrs);\\n  }\\n\\n  static numberSymbol(attrs) {\\n    return new NumberSymbol(attrs);\\n  }\\n\\n  static numberSymbols(attrs) {\\n    return new NumberSymbols(attrs);\\n  }\\n\\n  static timePattern(attrs) {\\n    return new TimePattern(attrs);\\n  }\\n\\n  static timePatterns(attrs) {\\n    return new TimePatterns(attrs);\\n  }\\n\\n  static typeFace(attrs) {\\n    return new TypeFace(attrs);\\n  }\\n\\n  static typeFaces(attrs) {\\n    return new TypeFaces(attrs);\\n  }\\n}\\n\\nexport { LocaleSetNamespace };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { $buildXFAObject, NamespaceIds } from \\\".\u002Fnamespaces.js\\\";\\nimport { XFAObject } from \\\".\u002Fxfa_object.js\\\";\\n\\nconst SIGNATURE_NS_ID = NamespaceIds.signature.id;\\n\\nclass Signature extends XFAObject {\\n  constructor(attributes) {\\n    super(SIGNATURE_NS_ID, \\\"signature\\\", \u002F* hasChildren = *\u002F true);\\n  }\\n}\\n\\nclass SignatureNamespace {\\n  static [$buildXFAObject](name, attributes) {\\n    if (SignatureNamespace.hasOwnProperty(name)) {\\n      return SignatureNamespace[name](attributes);\\n    }\\n    return undefined;\\n  }\\n\\n  static signature(attributes) {\\n    return new Signature(attributes);\\n  }\\n}\\n\\nexport { SignatureNamespace };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { $buildXFAObject, NamespaceIds } from \\\".\u002Fnamespaces.js\\\";\\nimport { XFAObject } from \\\".\u002Fxfa_object.js\\\";\\n\\nconst STYLESHEET_NS_ID = NamespaceIds.stylesheet.id;\\n\\nclass Stylesheet extends XFAObject {\\n  constructor(attributes) {\\n    super(STYLESHEET_NS_ID, \\\"stylesheet\\\", \u002F* hasChildren = *\u002F true);\\n  }\\n}\\n\\nclass StylesheetNamespace {\\n  static [$buildXFAObject](name, attributes) {\\n    if (StylesheetNamespace.hasOwnProperty(name)) {\\n      return StylesheetNamespace[name](attributes);\\n    }\\n    return undefined;\\n  }\\n\\n  static stylesheet(attributes) {\\n    return new Stylesheet(attributes);\\n  }\\n}\\n\\nexport { StylesheetNamespace };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { $buildXFAObject, NamespaceIds } from \\\".\u002Fnamespaces.js\\\";\\nimport { $namespaceId, $nodeName, $onChildCheck } from \\\".\u002Fsymbol_utils.js\\\";\\nimport { XFAObject, XFAObjectArray } from \\\".\u002Fxfa_object.js\\\";\\n\\nconst XDP_NS_ID = NamespaceIds.xdp.id;\\n\\nclass Xdp extends XFAObject {\\n  constructor(attributes) {\\n    super(XDP_NS_ID, \\\"xdp\\\", \u002F* hasChildren = *\u002F true);\\n    this.uuid = attributes.uuid || \\\"\\\";\\n    this.timeStamp = attributes.timeStamp || \\\"\\\";\\n    this.config = null;\\n    this.connectionSet = null;\\n    this.datasets = null;\\n    this.localeSet = null;\\n    this.stylesheet = new XFAObjectArray();\\n    this.template = null;\\n  }\\n\\n  [$onChildCheck](child) {\\n    const ns = NamespaceIds[child[$nodeName]];\\n    return ns && child[$namespaceId] === ns.id;\\n  }\\n}\\n\\nclass XdpNamespace {\\n  static [$buildXFAObject](name, attributes) {\\n    if (XdpNamespace.hasOwnProperty(name)) {\\n      return XdpNamespace[name](attributes);\\n    }\\n    return undefined;\\n  }\\n\\n  static xdp(attributes) {\\n    return new Xdp(attributes);\\n  }\\n}\\n\\nexport { XdpNamespace };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  $acceptWhitespace,\\n  $childrenToHTML,\\n  $clean,\\n  $content,\\n  $extra,\\n  $getChildren,\\n  $getParent,\\n  $globalData,\\n  $nodeName,\\n  $onText,\\n  $pushGlyphs,\\n  $text,\\n  $toHTML,\\n} from \\\".\u002Fsymbol_utils.js\\\";\\nimport { $buildXFAObject, NamespaceIds } from \\\".\u002Fnamespaces.js\\\";\\nimport {\\n  fixTextIndent,\\n  fixURL,\\n  measureToString,\\n  setFontFamily,\\n} from \\\".\u002Fhtml_utils.js\\\";\\nimport { getMeasurement, HTMLResult, stripQuotes } from \\\".\u002Futils.js\\\";\\nimport { XmlObject } from \\\".\u002Fxfa_object.js\\\";\\n\\nconst XHTML_NS_ID = NamespaceIds.xhtml.id;\\nconst $richText = Symbol();\\n\\nconst VALID_STYLES = new Set([\\n  \\\"color\\\",\\n  \\\"font\\\",\\n  \\\"font-family\\\",\\n  \\\"font-size\\\",\\n  \\\"font-stretch\\\",\\n  \\\"font-style\\\",\\n  \\\"font-weight\\\",\\n  \\\"margin\\\",\\n  \\\"margin-bottom\\\",\\n  \\\"margin-left\\\",\\n  \\\"margin-right\\\",\\n  \\\"margin-top\\\",\\n  \\\"letter-spacing\\\",\\n  \\\"line-height\\\",\\n  \\\"orphans\\\",\\n  \\\"page-break-after\\\",\\n  \\\"page-break-before\\\",\\n  \\\"page-break-inside\\\",\\n  \\\"tab-interval\\\",\\n  \\\"tab-stop\\\",\\n  \\\"text-align\\\",\\n  \\\"text-decoration\\\",\\n  \\\"text-indent\\\",\\n  \\\"vertical-align\\\",\\n  \\\"widows\\\",\\n  \\\"kerning-mode\\\",\\n  \\\"xfa-font-horizontal-scale\\\",\\n  \\\"xfa-font-vertical-scale\\\",\\n  \\\"xfa-spacerun\\\",\\n  \\\"xfa-tab-stops\\\",\\n]);\\n\\nconst StyleMapping = new Map([\\n  [\\\"page-break-after\\\", \\\"breakAfter\\\"],\\n  [\\\"page-break-before\\\", \\\"breakBefore\\\"],\\n  [\\\"page-break-inside\\\", \\\"breakInside\\\"],\\n  [\\\"kerning-mode\\\", value => (value === \\\"none\\\" ? \\\"none\\\" : \\\"normal\\\")],\\n  [\\n    \\\"xfa-font-horizontal-scale\\\",\\n    value =>\\n      `scaleX(${Math.max(0, Math.min(parseInt(value) \u002F 100)).toFixed(2)})`,\\n  ],\\n  [\\n    \\\"xfa-font-vertical-scale\\\",\\n    value =>\\n      `scaleY(${Math.max(0, Math.min(parseInt(value) \u002F 100)).toFixed(2)})`,\\n  ],\\n  [\\\"xfa-spacerun\\\", \\\"\\\"],\\n  [\\\"xfa-tab-stops\\\", \\\"\\\"],\\n  [\\n    \\\"font-size\\\",\\n    (value, original) => {\\n      value = original.fontSize = getMeasurement(value);\\n      return measureToString(0.99 * value);\\n    },\\n  ],\\n  [\\\"letter-spacing\\\", value => measureToString(getMeasurement(value))],\\n  [\\\"line-height\\\", value => measureToString(getMeasurement(value))],\\n  [\\\"margin\\\", value => measureToString(getMeasurement(value))],\\n  [\\\"margin-bottom\\\", value => measureToString(getMeasurement(value))],\\n  [\\\"margin-left\\\", value => measureToString(getMeasurement(value))],\\n  [\\\"margin-right\\\", value => measureToString(getMeasurement(value))],\\n  [\\\"margin-top\\\", value => measureToString(getMeasurement(value))],\\n  [\\\"text-indent\\\", value => measureToString(getMeasurement(value))],\\n  [\\\"font-family\\\", value => value],\\n  [\\\"vertical-align\\\", value => measureToString(getMeasurement(value))],\\n]);\\n\\nconst spacesRegExp = \u002F\\\\s+\u002Fg;\\nconst crlfRegExp = \u002F[\\\\r\\\\n]+\u002Fg;\\nconst crlfForRichTextRegExp = \u002F\\\\r\\\\n?\u002Fg;\\n\\nfunction mapStyle(styleStr, node, richText) {\\n  const style = Object.create(null);\\n  if (!styleStr) {\\n    return style;\\n  }\\n  const original = Object.create(null);\\n  for (const [key, value] of styleStr.split(\\\";\\\").map(s => s.split(\\\":\\\", 2))) {\\n    const mapping = StyleMapping.get(key);\\n    if (mapping === \\\"\\\") {\\n      continue;\\n    }\\n    let newValue = value;\\n    if (mapping) {\\n      newValue =\\n        typeof mapping === \\\"string\\\" ? mapping : mapping(value, original);\\n    }\\n    if (key.endsWith(\\\"scale\\\")) {\\n      style.transform = style.transform\\n        ? `${style[key]} ${newValue}`\\n        : newValue;\\n    } else {\\n      style[key.replaceAll(\u002F-([a-zA-Z])\u002Fg, (_, x) => x.toUpperCase())] =\\n        newValue;\\n    }\\n  }\\n\\n  if (style.fontFamily) {\\n    setFontFamily(\\n      {\\n        typeface: style.fontFamily,\\n        weight: style.fontWeight || \\\"normal\\\",\\n        posture: style.fontStyle || \\\"normal\\\",\\n        size: original.fontSize || 0,\\n      },\\n      node,\\n      node[$globalData].fontFinder,\\n      style\\n    );\\n  }\\n\\n  if (\\n    richText &&\\n    style.verticalAlign &&\\n    style.verticalAlign !== \\\"0px\\\" &&\\n    style.fontSize\\n  ) {\\n    \u002F\u002F A non-zero verticalAlign means that we've a sub\u002Fsuper-script and\\n    \u002F\u002F consequently the font size must be decreased.\\n    \u002F\u002F https:\u002F\u002Fwww.adobe.com\u002Fcontent\u002Fdam\u002Facom\u002Fen\u002Fdevnet\u002Fpdf\u002Fpdfs\u002FPDF32000_2008.pdf#G11.2097514\\n    \u002F\u002F And the two following factors to position the scripts have been\\n    \u002F\u002F found here:\\n    \u002F\u002F https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSubscript_and_superscript#Desktop_publishing\\n    const SUB_SUPER_SCRIPT_FACTOR = 0.583;\\n    const VERTICAL_FACTOR = 0.333;\\n    const fontSize = getMeasurement(style.fontSize);\\n    style.fontSize = measureToString(fontSize * SUB_SUPER_SCRIPT_FACTOR);\\n    style.verticalAlign = measureToString(\\n      Math.sign(getMeasurement(style.verticalAlign)) *\\n        fontSize *\\n        VERTICAL_FACTOR\\n    );\\n  }\\n\\n  if (richText && style.fontSize) {\\n    style.fontSize = `calc(${style.fontSize} * var(--scale-factor))`;\\n  }\\n\\n  fixTextIndent(style);\\n  return style;\\n}\\n\\nfunction checkStyle(node) {\\n  if (!node.style) {\\n    return \\\"\\\";\\n  }\\n\\n  \u002F\u002F Remove any non-allowed keys.\\n  return node.style\\n    .trim()\\n    .split(\u002F\\\\s*;\\\\s*\u002F)\\n    .filter(s => !!s)\\n    .map(s => s.split(\u002F\\\\s*:\\\\s*\u002F, 2))\\n    .filter(([key, value]) => {\\n      if (key === \\\"font-family\\\") {\\n        node[$globalData].usedTypefaces.add(value);\\n      }\\n      return VALID_STYLES.has(key);\\n    })\\n    .map(kv => kv.join(\\\":\\\"))\\n    .join(\\\";\\\");\\n}\\n\\nconst NoWhites = new Set([\\\"body\\\", \\\"html\\\"]);\\n\\nclass XhtmlObject extends XmlObject {\\n  constructor(attributes, name) {\\n    super(XHTML_NS_ID, name);\\n    this[$richText] = false;\\n    this.style = attributes.style || \\\"\\\";\\n  }\\n\\n  [$clean](builder) {\\n    super[$clean](builder);\\n    this.style = checkStyle(this);\\n  }\\n\\n  [$acceptWhitespace]() {\\n    return !NoWhites.has(this[$nodeName]);\\n  }\\n\\n  [$onText](str, richText = false) {\\n    if (!richText) {\\n      str = str.replaceAll(crlfRegExp, \\\"\\\");\\n      if (!this.style.includes(\\\"xfa-spacerun:yes\\\")) {\\n        str = str.replaceAll(spacesRegExp, \\\" \\\");\\n      }\\n    } else {\\n      this[$richText] = true;\\n    }\\n\\n    if (str) {\\n      this[$content] += str;\\n    }\\n  }\\n\\n  [$pushGlyphs](measure, mustPop = true) {\\n    const xfaFont = Object.create(null);\\n    const margin = {\\n      top: NaN,\\n      bottom: NaN,\\n      left: NaN,\\n      right: NaN,\\n    };\\n    let lineHeight = null;\\n    for (const [key, value] of this.style\\n      .split(\\\";\\\")\\n      .map(s => s.split(\\\":\\\", 2))) {\\n      switch (key) {\\n        case \\\"font-family\\\":\\n          xfaFont.typeface = stripQuotes(value);\\n          break;\\n        case \\\"font-size\\\":\\n          xfaFont.size = getMeasurement(value);\\n          break;\\n        case \\\"font-weight\\\":\\n          xfaFont.weight = value;\\n          break;\\n        case \\\"font-style\\\":\\n          xfaFont.posture = value;\\n          break;\\n        case \\\"letter-spacing\\\":\\n          xfaFont.letterSpacing = getMeasurement(value);\\n          break;\\n        case \\\"margin\\\":\\n          const values = value.split(\u002F \\\\t\u002F).map(x => getMeasurement(x));\\n          switch (values.length) {\\n            case 1:\\n              margin.top =\\n                margin.bottom =\\n                margin.left =\\n                margin.right =\\n                  values[0];\\n              break;\\n            case 2:\\n              margin.top = margin.bottom = values[0];\\n              margin.left = margin.right = values[1];\\n              break;\\n            case 3:\\n              margin.top = values[0];\\n              margin.bottom = values[2];\\n              margin.left = margin.right = values[1];\\n              break;\\n            case 4:\\n              margin.top = values[0];\\n              margin.left = values[1];\\n              margin.bottom = values[2];\\n              margin.right = values[3];\\n              break;\\n          }\\n          break;\\n        case \\\"margin-top\\\":\\n          margin.top = getMeasurement(value);\\n          break;\\n        case \\\"margin-bottom\\\":\\n          margin.bottom = getMeasurement(value);\\n          break;\\n        case \\\"margin-left\\\":\\n          margin.left = getMeasurement(value);\\n          break;\\n        case \\\"margin-right\\\":\\n          margin.right = getMeasurement(value);\\n          break;\\n        case \\\"line-height\\\":\\n          lineHeight = getMeasurement(value);\\n          break;\\n      }\\n    }\\n\\n    measure.pushData(xfaFont, margin, lineHeight);\\n\\n    if (this[$content]) {\\n      measure.addString(this[$content]);\\n    } else {\\n      for (const child of this[$getChildren]()) {\\n        if (child[$nodeName] === \\\"#text\\\") {\\n          measure.addString(child[$content]);\\n          continue;\\n        }\\n        child[$pushGlyphs](measure);\\n      }\\n    }\\n\\n    if (mustPop) {\\n      measure.popFont();\\n    }\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    const children = [];\\n    this[$extra] = {\\n      children,\\n    };\\n\\n    this[$childrenToHTML]({});\\n\\n    if (children.length === 0 && !this[$content]) {\\n      return HTMLResult.EMPTY;\\n    }\\n\\n    let value;\\n    if (this[$richText]) {\\n      value = this[$content]\\n        ? this[$content].replaceAll(crlfForRichTextRegExp, \\\"\\\\n\\\")\\n        : undefined;\\n    } else {\\n      value = this[$content] || undefined;\\n    }\\n\\n    return HTMLResult.success({\\n      name: this[$nodeName],\\n      attributes: {\\n        href: this.href,\\n        style: mapStyle(this.style, this, this[$richText]),\\n      },\\n      children,\\n      value,\\n    });\\n  }\\n}\\n\\nclass A extends XhtmlObject {\\n  constructor(attributes) {\\n    super(attributes, \\\"a\\\");\\n    this.href = fixURL(attributes.href) || \\\"\\\";\\n  }\\n}\\n\\nclass B extends XhtmlObject {\\n  constructor(attributes) {\\n    super(attributes, \\\"b\\\");\\n  }\\n\\n  [$pushGlyphs](measure) {\\n    measure.pushFont({ weight: \\\"bold\\\" });\\n    super[$pushGlyphs](measure);\\n    measure.popFont();\\n  }\\n}\\n\\nclass Body extends XhtmlObject {\\n  constructor(attributes) {\\n    super(attributes, \\\"body\\\");\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    const res = super[$toHTML](availableSpace);\\n    const { html } = res;\\n    if (!html) {\\n      return HTMLResult.EMPTY;\\n    }\\n    html.name = \\\"div\\\";\\n    html.attributes.class = [\\\"xfaRich\\\"];\\n    return res;\\n  }\\n}\\n\\nclass Br extends XhtmlObject {\\n  constructor(attributes) {\\n    super(attributes, \\\"br\\\");\\n  }\\n\\n  [$text]() {\\n    return \\\"\\\\n\\\";\\n  }\\n\\n  [$pushGlyphs](measure) {\\n    measure.addString(\\\"\\\\n\\\");\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    return HTMLResult.success({\\n      name: \\\"br\\\",\\n    });\\n  }\\n}\\n\\nclass Html extends XhtmlObject {\\n  constructor(attributes) {\\n    super(attributes, \\\"html\\\");\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    const children = [];\\n    this[$extra] = {\\n      children,\\n    };\\n\\n    this[$childrenToHTML]({});\\n    if (children.length === 0) {\\n      return HTMLResult.success({\\n        name: \\\"div\\\",\\n        attributes: {\\n          class: [\\\"xfaRich\\\"],\\n          style: {},\\n        },\\n        value: this[$content] || \\\"\\\",\\n      });\\n    }\\n\\n    if (children.length === 1) {\\n      const child = children[0];\\n      if (child.attributes?.class.includes(\\\"xfaRich\\\")) {\\n        return HTMLResult.success(child);\\n      }\\n    }\\n\\n    return HTMLResult.success({\\n      name: \\\"div\\\",\\n      attributes: {\\n        class: [\\\"xfaRich\\\"],\\n        style: {},\\n      },\\n      children,\\n    });\\n  }\\n}\\n\\nclass I extends XhtmlObject {\\n  constructor(attributes) {\\n    super(attributes, \\\"i\\\");\\n  }\\n\\n  [$pushGlyphs](measure) {\\n    measure.pushFont({ posture: \\\"italic\\\" });\\n    super[$pushGlyphs](measure);\\n    measure.popFont();\\n  }\\n}\\n\\nclass Li extends XhtmlObject {\\n  constructor(attributes) {\\n    super(attributes, \\\"li\\\");\\n  }\\n}\\n\\nclass Ol extends XhtmlObject {\\n  constructor(attributes) {\\n    super(attributes, \\\"ol\\\");\\n  }\\n}\\n\\nclass P extends XhtmlObject {\\n  constructor(attributes) {\\n    super(attributes, \\\"p\\\");\\n  }\\n\\n  [$pushGlyphs](measure) {\\n    super[$pushGlyphs](measure, \u002F* mustPop = *\u002F false);\\n    measure.addString(\\\"\\\\n\\\");\\n    measure.addPara();\\n    measure.popFont();\\n  }\\n\\n  [$text]() {\\n    const siblings = this[$getParent]()[$getChildren]();\\n    if (siblings.at(-1) === this) {\\n      return super[$text]();\\n    }\\n    return super[$text]() + \\\"\\\\n\\\";\\n  }\\n}\\n\\nclass Span extends XhtmlObject {\\n  constructor(attributes) {\\n    super(attributes, \\\"span\\\");\\n  }\\n}\\n\\nclass Sub extends XhtmlObject {\\n  constructor(attributes) {\\n    super(attributes, \\\"sub\\\");\\n  }\\n}\\n\\nclass Sup extends XhtmlObject {\\n  constructor(attributes) {\\n    super(attributes, \\\"sup\\\");\\n  }\\n}\\n\\nclass Ul extends XhtmlObject {\\n  constructor(attributes) {\\n    super(attributes, \\\"ul\\\");\\n  }\\n}\\n\\nclass XhtmlNamespace {\\n  static [$buildXFAObject](name, attributes) {\\n    if (XhtmlNamespace.hasOwnProperty(name)) {\\n      return XhtmlNamespace[name](attributes);\\n    }\\n    return undefined;\\n  }\\n\\n  static a(attributes) {\\n    return new A(attributes);\\n  }\\n\\n  static b(attributes) {\\n    return new B(attributes);\\n  }\\n\\n  static body(attributes) {\\n    return new Body(attributes);\\n  }\\n\\n  static br(attributes) {\\n    return new Br(attributes);\\n  }\\n\\n  static html(attributes) {\\n    return new Html(attributes);\\n  }\\n\\n  static i(attributes) {\\n    return new I(attributes);\\n  }\\n\\n  static li(attributes) {\\n    return new Li(attributes);\\n  }\\n\\n  static ol(attributes) {\\n    return new Ol(attributes);\\n  }\\n\\n  static p(attributes) {\\n    return new P(attributes);\\n  }\\n\\n  static span(attributes) {\\n    return new Span(attributes);\\n  }\\n\\n  static sub(attributes) {\\n    return new Sub(attributes);\\n  }\\n\\n  static sup(attributes) {\\n    return new Sup(attributes);\\n  }\\n\\n  static ul(attributes) {\\n    return new Ul(attributes);\\n  }\\n}\\n\\nexport { XhtmlNamespace };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { ConfigNamespace } from \\\".\u002Fconfig.js\\\";\\nimport { ConnectionSetNamespace } from \\\".\u002Fconnection_set.js\\\";\\nimport { DatasetsNamespace } from \\\".\u002Fdatasets.js\\\";\\nimport { LocaleSetNamespace } from \\\".\u002Flocale_set.js\\\";\\nimport { SignatureNamespace } from \\\".\u002Fsignature.js\\\";\\nimport { StylesheetNamespace } from \\\".\u002Fstylesheet.js\\\";\\nimport { TemplateNamespace } from \\\".\u002Ftemplate.js\\\";\\nimport { XdpNamespace } from \\\".\u002Fxdp.js\\\";\\nimport { XhtmlNamespace } from \\\".\u002Fxhtml.js\\\";\\n\\nconst NamespaceSetUp = {\\n  config: ConfigNamespace,\\n  connection: ConnectionSetNamespace,\\n  datasets: DatasetsNamespace,\\n  localeSet: LocaleSetNamespace,\\n  signature: SignatureNamespace,\\n  stylesheet: StylesheetNamespace,\\n  template: TemplateNamespace,\\n  xdp: XdpNamespace,\\n  xhtml: XhtmlNamespace,\\n};\\n\\nexport { NamespaceSetUp };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { $buildXFAObject } from \\\".\u002Fnamespaces.js\\\";\\nimport { XmlObject } from \\\".\u002Fxfa_object.js\\\";\\n\\nclass UnknownNamespace {\\n  constructor(nsId) {\\n    this.namespaceId = nsId;\\n  }\\n\\n  [$buildXFAObject](name, attributes) {\\n    return new XmlObject(this.namespaceId, name, attributes);\\n  }\\n}\\n\\nexport { UnknownNamespace };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { $buildXFAObject, NamespaceIds } from \\\".\u002Fnamespaces.js\\\";\\nimport {\\n  $cleanup,\\n  $finalize,\\n  $ids,\\n  $isNsAgnostic,\\n  $nsAttributes,\\n  $onChild,\\n  $resolvePrototypes,\\n  $root,\\n} from \\\".\u002Fsymbol_utils.js\\\";\\nimport { NamespaceSetUp } from \\\".\u002Fsetup.js\\\";\\nimport { Template } from \\\".\u002Ftemplate.js\\\";\\nimport { UnknownNamespace } from \\\".\u002Funknown.js\\\";\\nimport { warn } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport { XFAObject } from \\\".\u002Fxfa_object.js\\\";\\n\\nclass Root extends XFAObject {\\n  constructor(ids) {\\n    super(-1, \\\"root\\\", Object.create(null));\\n    this.element = null;\\n    this[$ids] = ids;\\n  }\\n\\n  [$onChild](child) {\\n    this.element = child;\\n    return true;\\n  }\\n\\n  [$finalize]() {\\n    super[$finalize]();\\n    if (this.element.template instanceof Template) {\\n      \u002F\u002F Set the root element in $ids using a symbol in order\\n      \u002F\u002F to avoid conflict with real IDs.\\n      this[$ids].set($root, this.element);\\n\\n      this.element.template[$resolvePrototypes](this[$ids]);\\n      this.element.template[$ids] = this[$ids];\\n    }\\n  }\\n}\\n\\nclass Empty extends XFAObject {\\n  constructor() {\\n    super(-1, \\\"\\\", Object.create(null));\\n  }\\n\\n  [$onChild](_) {\\n    return false;\\n  }\\n}\\n\\nclass Builder {\\n  constructor(rootNameSpace = null) {\\n    this._namespaceStack = [];\\n    this._nsAgnosticLevel = 0;\\n\\n    \u002F\u002F Each prefix has its own stack\\n    this._namespacePrefixes = new Map();\\n    this._namespaces = new Map();\\n    this._nextNsId = Math.max(\\n      ...Object.values(NamespaceIds).map(({ id }) => id)\\n    );\\n    this._currentNamespace =\\n      rootNameSpace || new UnknownNamespace(++this._nextNsId);\\n  }\\n\\n  buildRoot(ids) {\\n    return new Root(ids);\\n  }\\n\\n  build({ nsPrefix, name, attributes, namespace, prefixes }) {\\n    const hasNamespaceDef = namespace !== null;\\n    if (hasNamespaceDef) {\\n      \u002F\u002F Define the current namespace to use.\\n      this._namespaceStack.push(this._currentNamespace);\\n      this._currentNamespace = this._searchNamespace(namespace);\\n    }\\n\\n    if (prefixes) {\\n      \u002F\u002F The xml node may have namespace prefix definitions\\n      this._addNamespacePrefix(prefixes);\\n    }\\n\\n    if (attributes.hasOwnProperty($nsAttributes)) {\\n      \u002F\u002F Only support xfa-data namespace.\\n      const dataTemplate = NamespaceSetUp.datasets;\\n      const nsAttrs = attributes[$nsAttributes];\\n      let xfaAttrs = null;\\n      for (const [ns, attrs] of Object.entries(nsAttrs)) {\\n        const nsToUse = this._getNamespaceToUse(ns);\\n        if (nsToUse === dataTemplate) {\\n          xfaAttrs = { xfa: attrs };\\n          break;\\n        }\\n      }\\n      if (xfaAttrs) {\\n        attributes[$nsAttributes] = xfaAttrs;\\n      } else {\\n        delete attributes[$nsAttributes];\\n      }\\n    }\\n\\n    const namespaceToUse = this._getNamespaceToUse(nsPrefix);\\n    const node =\\n      namespaceToUse?.[$buildXFAObject](name, attributes) || new Empty();\\n\\n    if (node[$isNsAgnostic]()) {\\n      this._nsAgnosticLevel++;\\n    }\\n\\n    \u002F\u002F In case the node has some namespace things,\\n    \u002F\u002F we must pop the different stacks.\\n    if (hasNamespaceDef || prefixes || node[$isNsAgnostic]()) {\\n      node[$cleanup] = {\\n        hasNamespace: hasNamespaceDef,\\n        prefixes,\\n        nsAgnostic: node[$isNsAgnostic](),\\n      };\\n    }\\n\\n    return node;\\n  }\\n\\n  isNsAgnostic() {\\n    return this._nsAgnosticLevel > 0;\\n  }\\n\\n  _searchNamespace(nsName) {\\n    let ns = this._namespaces.get(nsName);\\n    if (ns) {\\n      return ns;\\n    }\\n    for (const [name, { check }] of Object.entries(NamespaceIds)) {\\n      if (check(nsName)) {\\n        ns = NamespaceSetUp[name];\\n        if (ns) {\\n          this._namespaces.set(nsName, ns);\\n          return ns;\\n        }\\n        \u002F\u002F The namespace is known but not handled.\\n        break;\\n      }\\n    }\\n\\n    ns = new UnknownNamespace(++this._nextNsId);\\n    this._namespaces.set(nsName, ns);\\n    return ns;\\n  }\\n\\n  _addNamespacePrefix(prefixes) {\\n    for (const { prefix, value } of prefixes) {\\n      const namespace = this._searchNamespace(value);\\n      let prefixStack = this._namespacePrefixes.get(prefix);\\n      if (!prefixStack) {\\n        prefixStack = [];\\n        this._namespacePrefixes.set(prefix, prefixStack);\\n      }\\n      prefixStack.push(namespace);\\n    }\\n  }\\n\\n  _getNamespaceToUse(prefix) {\\n    if (!prefix) {\\n      return this._currentNamespace;\\n    }\\n    const prefixStack = this._namespacePrefixes.get(prefix);\\n    if (prefixStack?.length > 0) {\\n      return prefixStack.at(-1);\\n    }\\n\\n    warn(`Unknown namespace prefix: ${prefix}.`);\\n    return null;\\n  }\\n\\n  clean(data) {\\n    const { hasNamespace, prefixes, nsAgnostic } = data;\\n    if (hasNamespace) {\\n      this._currentNamespace = this._namespaceStack.pop();\\n    }\\n    if (prefixes) {\\n      prefixes.forEach(({ prefix }) => {\\n        this._namespacePrefixes.get(prefix).pop();\\n      });\\n    }\\n    if (nsAgnostic) {\\n      this._nsAgnosticLevel--;\\n    }\\n  }\\n}\\n\\nexport { Builder };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  $acceptWhitespace,\\n  $clean,\\n  $content,\\n  $finalize,\\n  $globalData,\\n  $isCDATAXml,\\n  $nsAttributes,\\n  $onChild,\\n  $onText,\\n  $setId,\\n} from \\\".\u002Fsymbol_utils.js\\\";\\nimport { XMLParserBase, XMLParserErrorCode } from \\\"..\u002Fxml_parser.js\\\";\\nimport { Builder } from \\\".\u002Fbuilder.js\\\";\\nimport { warn } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\n\\nclass XFAParser extends XMLParserBase {\\n  constructor(rootNameSpace = null, richText = false) {\\n    super();\\n    this._builder = new Builder(rootNameSpace);\\n    this._stack = [];\\n    this._globalData = {\\n      usedTypefaces: new Set(),\\n    };\\n    this._ids = new Map();\\n    this._current = this._builder.buildRoot(this._ids);\\n    this._errorCode = XMLParserErrorCode.NoError;\\n    this._whiteRegex = \u002F^\\\\s+$\u002F;\\n    this._nbsps = \u002F\\\\xa0+\u002Fg;\\n    this._richText = richText;\\n  }\\n\\n  parse(data) {\\n    this.parseXml(data);\\n\\n    if (this._errorCode !== XMLParserErrorCode.NoError) {\\n      return undefined;\\n    }\\n\\n    this._current[$finalize]();\\n\\n    return this._current.element;\\n  }\\n\\n  onText(text) {\\n    \u002F\u002F Normally by definition a &nbsp is unbreakable\\n    \u002F\u002F but in real life Acrobat can break strings on &nbsp.\\n    text = text.replace(this._nbsps, match => match.slice(1) + \\\" \\\");\\n    if (this._richText || this._current[$acceptWhitespace]()) {\\n      this._current[$onText](text, this._richText);\\n      return;\\n    }\\n\\n    if (this._whiteRegex.test(text)) {\\n      return;\\n    }\\n    this._current[$onText](text.trim());\\n  }\\n\\n  onCdata(text) {\\n    this._current[$onText](text);\\n  }\\n\\n  _mkAttributes(attributes, tagName) {\\n    \u002F\u002F Transform attributes into an object and get out\\n    \u002F\u002F namespaces information.\\n    let namespace = null;\\n    let prefixes = null;\\n    const attributeObj = Object.create({});\\n    for (const { name, value } of attributes) {\\n      if (name === \\\"xmlns\\\") {\\n        if (!namespace) {\\n          namespace = value;\\n        } else {\\n          warn(`XFA - multiple namespace definition in \u003C${tagName}>`);\\n        }\\n      } else if (name.startsWith(\\\"xmlns:\\\")) {\\n        const prefix = name.substring(\\\"xmlns:\\\".length);\\n        if (!prefixes) {\\n          prefixes = [];\\n        }\\n        prefixes.push({ prefix, value });\\n      } else {\\n        const i = name.indexOf(\\\":\\\");\\n        if (i === -1) {\\n          attributeObj[name] = value;\\n        } else {\\n          \u002F\u002F Attributes can have their own namespace.\\n          \u002F\u002F For example in data, we can have \u003Cfoo xfa:dataNode=\\\"dataGroup\\\"\u002F>\\n          let nsAttrs = attributeObj[$nsAttributes];\\n          if (!nsAttrs) {\\n            nsAttrs = attributeObj[$nsAttributes] = Object.create(null);\\n          }\\n          const [ns, attrName] = [name.slice(0, i), name.slice(i + 1)];\\n          const attrs = (nsAttrs[ns] ||= Object.create(null));\\n          attrs[attrName] = value;\\n        }\\n      }\\n    }\\n\\n    return [namespace, prefixes, attributeObj];\\n  }\\n\\n  _getNameAndPrefix(name, nsAgnostic) {\\n    const i = name.indexOf(\\\":\\\");\\n    if (i === -1) {\\n      return [name, null];\\n    }\\n    return [name.substring(i + 1), nsAgnostic ? \\\"\\\" : name.substring(0, i)];\\n  }\\n\\n  onBeginElement(tagName, attributes, isEmpty) {\\n    const [namespace, prefixes, attributesObj] = this._mkAttributes(\\n      attributes,\\n      tagName\\n    );\\n    const [name, nsPrefix] = this._getNameAndPrefix(\\n      tagName,\\n      this._builder.isNsAgnostic()\\n    );\\n    const node = this._builder.build({\\n      nsPrefix,\\n      name,\\n      attributes: attributesObj,\\n      namespace,\\n      prefixes,\\n    });\\n    node[$globalData] = this._globalData;\\n\\n    if (isEmpty) {\\n      \u002F\u002F No children: just push the node into its parent.\\n      node[$finalize]();\\n      if (this._current[$onChild](node)) {\\n        node[$setId](this._ids);\\n      }\\n      node[$clean](this._builder);\\n      return;\\n    }\\n\\n    this._stack.push(this._current);\\n    this._current = node;\\n  }\\n\\n  onEndElement(name) {\\n    const node = this._current;\\n    if (node[$isCDATAXml]() && typeof node[$content] === \\\"string\\\") {\\n      const parser = new XFAParser();\\n      parser._globalData = this._globalData;\\n      const root = parser.parse(node[$content]);\\n      node[$content] = null;\\n      node[$onChild](root);\\n    }\\n\\n    node[$finalize]();\\n    this._current = this._stack.pop();\\n    if (this._current[$onChild](node)) {\\n      node[$setId](this._ids);\\n    }\\n    node[$clean](this._builder);\\n  }\\n\\n  onError(code) {\\n    this._errorCode = code;\\n  }\\n}\\n\\nexport { XFAParser };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  $appendChild,\\n  $globalData,\\n  $nodeName,\\n  $text,\\n  $toHTML,\\n  $toPages,\\n} from \\\".\u002Fsymbol_utils.js\\\";\\nimport { Binder } from \\\".\u002Fbind.js\\\";\\nimport { DataHandler } from \\\".\u002Fdata.js\\\";\\nimport { FontFinder } from \\\".\u002Ffonts.js\\\";\\nimport { stripQuotes } from \\\".\u002Futils.js\\\";\\nimport { warn } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport { XFAParser } from \\\".\u002Fparser.js\\\";\\nimport { XhtmlNamespace } from \\\".\u002Fxhtml.js\\\";\\n\\nclass XFAFactory {\\n  constructor(data) {\\n    try {\\n      this.root = new XFAParser().parse(XFAFactory._createDocument(data));\\n      const binder = new Binder(this.root);\\n      this.form = binder.bind();\\n      this.dataHandler = new DataHandler(this.root, binder.getData());\\n      this.form[$globalData].template = this.form;\\n    } catch (e) {\\n      warn(`XFA - an error occurred during parsing and binding: ${e}`);\\n    }\\n  }\\n\\n  isValid() {\\n    return this.root && this.form;\\n  }\\n\\n  \u002F**\\n   * In order to avoid to block the event loop, the conversion\\n   * into pages is made asynchronously.\\n   *\u002F\\n  _createPagesHelper() {\\n    const iterator = this.form[$toPages]();\\n    return new Promise((resolve, reject) => {\\n      const nextIteration = () => {\\n        try {\\n          const value = iterator.next();\\n          if (value.done) {\\n            resolve(value.value);\\n          } else {\\n            setTimeout(nextIteration, 0);\\n          }\\n        } catch (e) {\\n          reject(e);\\n        }\\n      };\\n      setTimeout(nextIteration, 0);\\n    });\\n  }\\n\\n  async _createPages() {\\n    try {\\n      this.pages = await this._createPagesHelper();\\n      this.dims = this.pages.children.map(c => {\\n        const { width, height } = c.attributes.style;\\n        return [0, 0, parseInt(width), parseInt(height)];\\n      });\\n    } catch (e) {\\n      warn(`XFA - an error occurred during layout: ${e}`);\\n    }\\n  }\\n\\n  getBoundingBox(pageIndex) {\\n    return this.dims[pageIndex];\\n  }\\n\\n  async getNumPages() {\\n    if (!this.pages) {\\n      await this._createPages();\\n    }\\n    return this.dims.length;\\n  }\\n\\n  setImages(images) {\\n    this.form[$globalData].images = images;\\n  }\\n\\n  setFonts(fonts) {\\n    this.form[$globalData].fontFinder = new FontFinder(fonts);\\n    const missingFonts = [];\\n    for (let typeface of this.form[$globalData].usedTypefaces) {\\n      typeface = stripQuotes(typeface);\\n      const font = this.form[$globalData].fontFinder.find(typeface);\\n      if (!font) {\\n        missingFonts.push(typeface);\\n      }\\n    }\\n\\n    if (missingFonts.length > 0) {\\n      return missingFonts;\\n    }\\n\\n    return null;\\n  }\\n\\n  appendFonts(fonts, reallyMissingFonts) {\\n    this.form[$globalData].fontFinder.add(fonts, reallyMissingFonts);\\n  }\\n\\n  async getPages() {\\n    if (!this.pages) {\\n      await this._createPages();\\n    }\\n    const pages = this.pages;\\n    this.pages = null;\\n    return pages;\\n  }\\n\\n  serializeData(storage) {\\n    return this.dataHandler.serialize(storage);\\n  }\\n\\n  static _createDocument(data) {\\n    if (!data[\\\"\u002Fxdp:xdp\\\"]) {\\n      return data[\\\"xdp:xdp\\\"];\\n    }\\n    return Object.values(data).join(\\\"\\\");\\n  }\\n\\n  static getRichTextAsHtml(rc) {\\n    if (!rc || typeof rc !== \\\"string\\\") {\\n      return null;\\n    }\\n\\n    try {\\n      let root = new XFAParser(XhtmlNamespace, \u002F* richText *\u002F true).parse(rc);\\n      if (![\\\"body\\\", \\\"xhtml\\\"].includes(root[$nodeName])) {\\n        \u002F\u002F No body, so create one.\\n        const newRoot = XhtmlNamespace.body({});\\n        newRoot[$appendChild](root);\\n        root = newRoot;\\n      }\\n\\n      const result = root[$toHTML]();\\n      if (!result.success) {\\n        return null;\\n      }\\n\\n      const { html } = result;\\n      const { attributes } = html;\\n      if (attributes) {\\n        if (attributes.class) {\\n          attributes.class = attributes.class.filter(\\n            attr => !attr.startsWith(\\\"xfa\\\")\\n          );\\n        }\\n        attributes.dir = \\\"auto\\\";\\n      }\\n\\n      return { html, str: root[$text]() };\\n    } catch (e) {\\n      warn(`XFA - an error occurred during parsing of rich text: ${e}`);\\n    }\\n    return null;\\n  }\\n}\\n\\nexport { XFAFactory };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  AnnotationActionEventType,\\n  AnnotationBorderStyleType,\\n  AnnotationEditorType,\\n  AnnotationFieldFlag,\\n  AnnotationFlag,\\n  AnnotationReplyType,\\n  AnnotationType,\\n  assert,\\n  BASELINE_FACTOR,\\n  FeatureTest,\\n  getModificationDate,\\n  IDENTITY_MATRIX,\\n  info,\\n  LINE_DESCENT_FACTOR,\\n  LINE_FACTOR,\\n  OPS,\\n  RenderingIntentFlag,\\n  shadow,\\n  stringToPDFString,\\n  unreachable,\\n  Util,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  collectActions,\\n  escapeString,\\n  getInheritableProperty,\\n  getRotationMatrix,\\n  isAscii,\\n  isNumberArray,\\n  lookupMatrix,\\n  lookupNormalRect,\\n  lookupRect,\\n  numberToString,\\n  stringToUTF16String,\\n} from \\\".\u002Fcore_utils.js\\\";\\nimport {\\n  createDefaultAppearance,\\n  FakeUnicodeFont,\\n  getPdfColor,\\n  parseAppearanceStream,\\n  parseDefaultAppearance,\\n} from \\\".\u002Fdefault_appearance.js\\\";\\nimport { Dict, isName, isRefsEqual, Name, Ref, RefSet } from \\\".\u002Fprimitives.js\\\";\\nimport { Stream, StringStream } from \\\".\u002Fstream.js\\\";\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { bidi } from \\\".\u002Fbidi.js\\\";\\nimport { Catalog } from \\\".\u002Fcatalog.js\\\";\\nimport { ColorSpace } from \\\".\u002Fcolorspace.js\\\";\\nimport { FileSpec } from \\\".\u002Ffile_spec.js\\\";\\nimport { JpegStream } from \\\".\u002Fjpeg_stream.js\\\";\\nimport { ObjectLoader } from \\\".\u002Fobject_loader.js\\\";\\nimport { OperatorList } from \\\".\u002Foperator_list.js\\\";\\nimport { writeObject } from \\\".\u002Fwriter.js\\\";\\nimport { XFAFactory } from \\\".\u002Fxfa\u002Ffactory.js\\\";\\n\\nclass AnnotationFactory {\\n  static createGlobals(pdfManager) {\\n    return Promise.all([\\n      pdfManager.ensureCatalog(\\\"acroForm\\\"),\\n      pdfManager.ensureDoc(\\\"xfaDatasets\\\"),\\n      pdfManager.ensureCatalog(\\\"structTreeRoot\\\"),\\n      \u002F\u002F Only necessary to prevent the `Catalog.baseUrl`-getter, used\\n      \u002F\u002F with some Annotations, from throwing and thus breaking parsing:\\n      pdfManager.ensureCatalog(\\\"baseUrl\\\"),\\n      \u002F\u002F Only necessary to prevent the `Catalog.attachments`-getter, used\\n      \u002F\u002F with \\\"GoToE\\\" actions, from throwing and thus breaking parsing:\\n      pdfManager.ensureCatalog(\\\"attachments\\\"),\\n    ]).then(\\n      \u002F\u002F eslint-disable-next-line arrow-body-style\\n      ([acroForm, xfaDatasets, structTreeRoot, baseUrl, attachments]) => {\\n        return {\\n          pdfManager,\\n          acroForm: acroForm instanceof Dict ? acroForm : Dict.empty,\\n          xfaDatasets,\\n          structTreeRoot,\\n          baseUrl,\\n          attachments,\\n        };\\n      },\\n      reason => {\\n        warn(`createGlobals: \\\"${reason}\\\".`);\\n        return null;\\n      }\\n    );\\n  }\\n\\n  \u002F**\\n   * Create an `Annotation` object of the correct type for the given reference\\n   * to an annotation dictionary. This yields a promise that is resolved when\\n   * the `Annotation` object is constructed.\\n   *\\n   * @param {XRef} xref\\n   * @param {Object} ref\\n   * @params {Object} annotationGlobals\\n   * @param {Object} idFactory\\n   * @param {boolean} [collectFields]\\n   * @param {Object} [pageRef]\\n   * @returns {Promise} A promise that is resolved with an {Annotation}\\n   *   instance.\\n   *\u002F\\n  static async create(\\n    xref,\\n    ref,\\n    annotationGlobals,\\n    idFactory,\\n    collectFields,\\n    pageRef\\n  ) {\\n    const pageIndex = collectFields\\n      ? await this._getPageIndex(xref, ref, annotationGlobals.pdfManager)\\n      : null;\\n\\n    return annotationGlobals.pdfManager.ensure(this, \\\"_create\\\", [\\n      xref,\\n      ref,\\n      annotationGlobals,\\n      idFactory,\\n      collectFields,\\n      pageIndex,\\n      pageRef,\\n    ]);\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  static _create(\\n    xref,\\n    ref,\\n    annotationGlobals,\\n    idFactory,\\n    collectFields = false,\\n    pageIndex = null,\\n    pageRef = null\\n  ) {\\n    const dict = xref.fetchIfRef(ref);\\n    if (!(dict instanceof Dict)) {\\n      return undefined;\\n    }\\n\\n    const { acroForm, pdfManager } = annotationGlobals;\\n    const id =\\n      ref instanceof Ref ? ref.toString() : `annot_${idFactory.createObjId()}`;\\n\\n    \u002F\u002F Determine the annotation's subtype.\\n    let subtype = dict.get(\\\"Subtype\\\");\\n    subtype = subtype instanceof Name ? subtype.name : null;\\n\\n    \u002F\u002F Return the right annotation object based on the subtype and field type.\\n    const parameters = {\\n      xref,\\n      ref,\\n      dict,\\n      subtype,\\n      id,\\n      annotationGlobals,\\n      collectFields,\\n      needAppearances:\\n        !collectFields && acroForm.get(\\\"NeedAppearances\\\") === true,\\n      pageIndex,\\n      evaluatorOptions: pdfManager.evaluatorOptions,\\n      pageRef,\\n    };\\n\\n    switch (subtype) {\\n      case \\\"Link\\\":\\n        return new LinkAnnotation(parameters);\\n\\n      case \\\"Text\\\":\\n        return new TextAnnotation(parameters);\\n\\n      case \\\"Widget\\\":\\n        let fieldType = getInheritableProperty({ dict, key: \\\"FT\\\" });\\n        fieldType = fieldType instanceof Name ? fieldType.name : null;\\n\\n        switch (fieldType) {\\n          case \\\"Tx\\\":\\n            return new TextWidgetAnnotation(parameters);\\n          case \\\"Btn\\\":\\n            return new ButtonWidgetAnnotation(parameters);\\n          case \\\"Ch\\\":\\n            return new ChoiceWidgetAnnotation(parameters);\\n          case \\\"Sig\\\":\\n            return new SignatureWidgetAnnotation(parameters);\\n        }\\n        warn(\\n          `Unimplemented widget field type \\\"${fieldType}\\\", ` +\\n            \\\"falling back to base field type.\\\"\\n        );\\n        return new WidgetAnnotation(parameters);\\n\\n      case \\\"Popup\\\":\\n        return new PopupAnnotation(parameters);\\n\\n      case \\\"FreeText\\\":\\n        return new FreeTextAnnotation(parameters);\\n\\n      case \\\"Line\\\":\\n        return new LineAnnotation(parameters);\\n\\n      case \\\"Square\\\":\\n        return new SquareAnnotation(parameters);\\n\\n      case \\\"Circle\\\":\\n        return new CircleAnnotation(parameters);\\n\\n      case \\\"PolyLine\\\":\\n        return new PolylineAnnotation(parameters);\\n\\n      case \\\"Polygon\\\":\\n        return new PolygonAnnotation(parameters);\\n\\n      case \\\"Caret\\\":\\n        return new CaretAnnotation(parameters);\\n\\n      case \\\"Ink\\\":\\n        return new InkAnnotation(parameters);\\n\\n      case \\\"Highlight\\\":\\n        return new HighlightAnnotation(parameters);\\n\\n      case \\\"Underline\\\":\\n        return new UnderlineAnnotation(parameters);\\n\\n      case \\\"Squiggly\\\":\\n        return new SquigglyAnnotation(parameters);\\n\\n      case \\\"StrikeOut\\\":\\n        return new StrikeOutAnnotation(parameters);\\n\\n      case \\\"Stamp\\\":\\n        return new StampAnnotation(parameters);\\n\\n      case \\\"FileAttachment\\\":\\n        return new FileAttachmentAnnotation(parameters);\\n\\n      default:\\n        if (!collectFields) {\\n          if (!subtype) {\\n            warn(\\\"Annotation is missing the required \u002FSubtype.\\\");\\n          } else {\\n            warn(\\n              `Unimplemented annotation type \\\"${subtype}\\\", ` +\\n                \\\"falling back to base annotation.\\\"\\n            );\\n          }\\n        }\\n        return new Annotation(parameters);\\n    }\\n  }\\n\\n  static async _getPageIndex(xref, ref, pdfManager) {\\n    try {\\n      const annotDict = await xref.fetchIfRefAsync(ref);\\n      if (!(annotDict instanceof Dict)) {\\n        return -1;\\n      }\\n      const pageRef = annotDict.getRaw(\\\"P\\\");\\n      if (pageRef instanceof Ref) {\\n        try {\\n          const pageIndex = await pdfManager.ensureCatalog(\\\"getPageIndex\\\", [\\n            pageRef,\\n          ]);\\n          return pageIndex;\\n        } catch (ex) {\\n          info(`_getPageIndex -- not a valid page reference: \\\"${ex}\\\".`);\\n        }\\n      }\\n      if (annotDict.has(\\\"Kids\\\")) {\\n        return -1; \u002F\u002F Not an annotation reference.\\n      }\\n      \u002F\u002F Fallback to, potentially, checking the annotations of all pages.\\n      \u002F\u002F PLEASE NOTE: This could force the *entire* PDF document to load,\\n      \u002F\u002F              hence it absolutely cannot be done unconditionally.\\n      const numPages = await pdfManager.ensureDoc(\\\"numPages\\\");\\n\\n      for (let pageIndex = 0; pageIndex \u003C numPages; pageIndex++) {\\n        const page = await pdfManager.getPage(pageIndex);\\n        const annotations = await pdfManager.ensure(page, \\\"annotations\\\");\\n\\n        for (const annotRef of annotations) {\\n          if (annotRef instanceof Ref && isRefsEqual(annotRef, ref)) {\\n            return pageIndex;\\n          }\\n        }\\n      }\\n    } catch (ex) {\\n      warn(`_getPageIndex: \\\"${ex}\\\".`);\\n    }\\n    return -1;\\n  }\\n\\n  static generateImages(annotations, xref, isOffscreenCanvasSupported) {\\n    if (!isOffscreenCanvasSupported) {\\n      warn(\\n        \\\"generateImages: OffscreenCanvas is not supported, cannot save or print some annotations with images.\\\"\\n      );\\n      return null;\\n    }\\n    let imagePromises;\\n    for (const { bitmapId, bitmap } of annotations) {\\n      if (!bitmap) {\\n        continue;\\n      }\\n      imagePromises ||= new Map();\\n      imagePromises.set(bitmapId, StampAnnotation.createImage(bitmap, xref));\\n    }\\n\\n    return imagePromises;\\n  }\\n\\n  static async saveNewAnnotations(evaluator, task, annotations, imagePromises) {\\n    const xref = evaluator.xref;\\n    let baseFontRef;\\n    const dependencies = [];\\n    const promises = [];\\n    const { isOffscreenCanvasSupported } = evaluator.options;\\n\\n    for (const annotation of annotations) {\\n      if (annotation.deleted) {\\n        continue;\\n      }\\n      switch (annotation.annotationType) {\\n        case AnnotationEditorType.FREETEXT:\\n          if (!baseFontRef) {\\n            const baseFont = new Dict(xref);\\n            baseFont.set(\\\"BaseFont\\\", Name.get(\\\"Helvetica\\\"));\\n            baseFont.set(\\\"Type\\\", Name.get(\\\"Font\\\"));\\n            baseFont.set(\\\"Subtype\\\", Name.get(\\\"Type1\\\"));\\n            baseFont.set(\\\"Encoding\\\", Name.get(\\\"WinAnsiEncoding\\\"));\\n            const buffer = [];\\n            baseFontRef = xref.getNewTemporaryRef();\\n            await writeObject(baseFontRef, baseFont, buffer, xref);\\n            dependencies.push({ ref: baseFontRef, data: buffer.join(\\\"\\\") });\\n          }\\n          promises.push(\\n            FreeTextAnnotation.createNewAnnotation(\\n              xref,\\n              annotation,\\n              dependencies,\\n              { evaluator, task, baseFontRef }\\n            )\\n          );\\n          break;\\n        case AnnotationEditorType.HIGHLIGHT:\\n          if (annotation.quadPoints) {\\n            promises.push(\\n              HighlightAnnotation.createNewAnnotation(\\n                xref,\\n                annotation,\\n                dependencies\\n              )\\n            );\\n          } else {\\n            promises.push(\\n              InkAnnotation.createNewAnnotation(xref, annotation, dependencies)\\n            );\\n          }\\n          break;\\n        case AnnotationEditorType.INK:\\n          promises.push(\\n            InkAnnotation.createNewAnnotation(xref, annotation, dependencies)\\n          );\\n          break;\\n        case AnnotationEditorType.STAMP:\\n          if (!isOffscreenCanvasSupported) {\\n            break;\\n          }\\n          const image = await imagePromises.get(annotation.bitmapId);\\n          if (image.imageStream) {\\n            const { imageStream, smaskStream } = image;\\n            const buffer = [];\\n            if (smaskStream) {\\n              const smaskRef = xref.getNewTemporaryRef();\\n              await writeObject(smaskRef, smaskStream, buffer, xref);\\n              dependencies.push({ ref: smaskRef, data: buffer.join(\\\"\\\") });\\n              imageStream.dict.set(\\\"SMask\\\", smaskRef);\\n              buffer.length = 0;\\n            }\\n            const imageRef = (image.imageRef = xref.getNewTemporaryRef());\\n            await writeObject(imageRef, imageStream, buffer, xref);\\n            dependencies.push({ ref: imageRef, data: buffer.join(\\\"\\\") });\\n            image.imageStream = image.smaskStream = null;\\n          }\\n          promises.push(\\n            StampAnnotation.createNewAnnotation(\\n              xref,\\n              annotation,\\n              dependencies,\\n              { image }\\n            )\\n          );\\n          break;\\n      }\\n    }\\n\\n    return {\\n      annotations: await Promise.all(promises),\\n      dependencies,\\n    };\\n  }\\n\\n  static async printNewAnnotations(\\n    annotationGlobals,\\n    evaluator,\\n    task,\\n    annotations,\\n    imagePromises\\n  ) {\\n    if (!annotations) {\\n      return null;\\n    }\\n\\n    const { options, xref } = evaluator;\\n    const promises = [];\\n    for (const annotation of annotations) {\\n      if (annotation.deleted) {\\n        continue;\\n      }\\n      switch (annotation.annotationType) {\\n        case AnnotationEditorType.FREETEXT:\\n          promises.push(\\n            FreeTextAnnotation.createNewPrintAnnotation(\\n              annotationGlobals,\\n              xref,\\n              annotation,\\n              {\\n                evaluator,\\n                task,\\n                evaluatorOptions: options,\\n              }\\n            )\\n          );\\n          break;\\n        case AnnotationEditorType.HIGHLIGHT:\\n          if (annotation.quadPoints) {\\n            promises.push(\\n              HighlightAnnotation.createNewPrintAnnotation(\\n                annotationGlobals,\\n                xref,\\n                annotation,\\n                {\\n                  evaluatorOptions: options,\\n                }\\n              )\\n            );\\n          } else {\\n            promises.push(\\n              InkAnnotation.createNewPrintAnnotation(\\n                annotationGlobals,\\n                xref,\\n                annotation,\\n                {\\n                  evaluatorOptions: options,\\n                }\\n              )\\n            );\\n          }\\n          break;\\n        case AnnotationEditorType.INK:\\n          promises.push(\\n            InkAnnotation.createNewPrintAnnotation(\\n              annotationGlobals,\\n              xref,\\n              annotation,\\n              {\\n                evaluatorOptions: options,\\n              }\\n            )\\n          );\\n          break;\\n        case AnnotationEditorType.STAMP:\\n          if (!options.isOffscreenCanvasSupported) {\\n            break;\\n          }\\n          const image = await imagePromises.get(annotation.bitmapId);\\n          if (image.imageStream) {\\n            const { imageStream, smaskStream } = image;\\n            if (smaskStream) {\\n              imageStream.dict.set(\\\"SMask\\\", smaskStream);\\n            }\\n            image.imageRef = new JpegStream(imageStream, imageStream.length);\\n            image.imageStream = image.smaskStream = null;\\n          }\\n          promises.push(\\n            StampAnnotation.createNewPrintAnnotation(\\n              annotationGlobals,\\n              xref,\\n              annotation,\\n              {\\n                image,\\n                evaluatorOptions: options,\\n              }\\n            )\\n          );\\n          break;\\n      }\\n    }\\n\\n    return Promise.all(promises);\\n  }\\n}\\n\\nfunction getRgbColor(color, defaultColor = new Uint8ClampedArray(3)) {\\n  if (!Array.isArray(color)) {\\n    return defaultColor;\\n  }\\n\\n  const rgbColor = defaultColor || new Uint8ClampedArray(3);\\n  switch (color.length) {\\n    case 0: \u002F\u002F Transparent, which we indicate with a null value\\n      return null;\\n\\n    case 1: \u002F\u002F Convert grayscale to RGB\\n      ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0);\\n      return rgbColor;\\n\\n    case 3: \u002F\u002F Convert RGB percentages to RGB\\n      ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0);\\n      return rgbColor;\\n\\n    case 4: \u002F\u002F Convert CMYK to RGB\\n      ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0);\\n      return rgbColor;\\n\\n    default:\\n      return defaultColor;\\n  }\\n}\\n\\nfunction getPdfColorArray(color) {\\n  return Array.from(color, c => c \u002F 255);\\n}\\n\\nfunction getQuadPoints(dict, rect) {\\n  \u002F\u002F The region is described as a number of quadrilaterals.\\n  \u002F\u002F Each quadrilateral must consist of eight coordinates.\\n  const quadPoints = dict.getArray(\\\"QuadPoints\\\");\\n  if (\\n    !isNumberArray(quadPoints, null) ||\\n    quadPoints.length === 0 ||\\n    quadPoints.length % 8 > 0\\n  ) {\\n    return null;\\n  }\\n\\n  const quadPointsLists = [];\\n  for (let i = 0, ii = quadPoints.length \u002F 8; i \u003C ii; i++) {\\n    \u002F\u002F Each series of eight numbers represents the coordinates for one\\n    \u002F\u002F quadrilateral in the order [x1, y1, x2, y2, x3, y3, x4, y4].\\n    \u002F\u002F Convert this to an array of objects with x and y coordinates.\\n    let minX = Infinity,\\n      maxX = -Infinity,\\n      minY = Infinity,\\n      maxY = -Infinity;\\n    for (let j = i * 8, jj = i * 8 + 8; j \u003C jj; j += 2) {\\n      const x = quadPoints[j];\\n      const y = quadPoints[j + 1];\\n\\n      minX = Math.min(x, minX);\\n      maxX = Math.max(x, maxX);\\n      minY = Math.min(y, minY);\\n      maxY = Math.max(y, maxY);\\n    }\\n    \u002F\u002F The quadpoints should be ignored if any coordinate in the array\\n    \u002F\u002F lies outside the region specified by the rectangle. The rectangle\\n    \u002F\u002F can be `null` for markup annotations since their rectangle may be\\n    \u002F\u002F incorrect (fixes bug 1538111).\\n    if (\\n      rect !== null &&\\n      (minX \u003C rect[0] || maxX > rect[2] || minY \u003C rect[1] || maxY > rect[3])\\n    ) {\\n      return null;\\n    }\\n    \u002F\u002F The PDF specification states in section 12.5.6.10 (figure 64) that the\\n    \u002F\u002F order of the quadpoints should be bottom left, bottom right, top right\\n    \u002F\u002F and top left. However, in practice PDF files use a different order,\\n    \u002F\u002F namely bottom left, bottom right, top left and top right (this is also\\n    \u002F\u002F mentioned on https:\u002F\u002Fgithub.com\u002Fhighkite\u002FpdfAnnotate#QuadPoints), so\\n    \u002F\u002F this is the actual order we should work with. However, the situation is\\n    \u002F\u002F even worse since Adobe's own applications and other applications violate\\n    \u002F\u002F the specification and create annotations with other orders, namely top\\n    \u002F\u002F left, top right, bottom left and bottom right or even top left,\\n    \u002F\u002F top right, bottom right and bottom left. To avoid inconsistency and\\n    \u002F\u002F broken rendering, we normalize all lists to put the quadpoints in the\\n    \u002F\u002F same standard order (see https:\u002F\u002Fstackoverflow.com\u002Fa\u002F10729881).\\n    quadPointsLists.push([\\n      { x: minX, y: maxY },\\n      { x: maxX, y: maxY },\\n      { x: minX, y: minY },\\n      { x: maxX, y: minY },\\n    ]);\\n  }\\n  return quadPointsLists;\\n}\\n\\nfunction getTransformMatrix(rect, bbox, matrix) {\\n  \u002F\u002F 12.5.5: Algorithm: Appearance streams\\n  const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox(\\n    bbox,\\n    matrix\\n  );\\n  if (minX === maxX || minY === maxY) {\\n    \u002F\u002F From real-life file, bbox was [0, 0, 0, 0]. In this case,\\n    \u002F\u002F just apply the transform for rect\\n    return [1, 0, 0, 1, rect[0], rect[1]];\\n  }\\n\\n  const xRatio = (rect[2] - rect[0]) \u002F (maxX - minX);\\n  const yRatio = (rect[3] - rect[1]) \u002F (maxY - minY);\\n  return [\\n    xRatio,\\n    0,\\n    0,\\n    yRatio,\\n    rect[0] - minX * xRatio,\\n    rect[1] - minY * yRatio,\\n  ];\\n}\\n\\nclass Annotation {\\n  constructor(params) {\\n    const { dict, xref, annotationGlobals } = params;\\n\\n    this.setTitle(dict.get(\\\"T\\\"));\\n    this.setContents(dict.get(\\\"Contents\\\"));\\n    this.setModificationDate(dict.get(\\\"M\\\"));\\n    this.setFlags(dict.get(\\\"F\\\"));\\n    this.setRectangle(dict.getArray(\\\"Rect\\\"));\\n    this.setColor(dict.getArray(\\\"C\\\"));\\n    this.setBorderStyle(dict);\\n    this.setAppearance(dict);\\n    this.setOptionalContent(dict);\\n\\n    const MK = dict.get(\\\"MK\\\");\\n    this.setBorderAndBackgroundColors(MK);\\n    this.setRotation(MK, dict);\\n    this.ref = params.ref instanceof Ref ? params.ref : null;\\n\\n    this._streams = [];\\n    if (this.appearance) {\\n      this._streams.push(this.appearance);\\n    }\\n\\n    \u002F\u002F The annotation cannot be changed (neither its position\u002Fvisibility nor its\\n    \u002F\u002F contents), hence we can just display its appearance and don't generate\\n    \u002F\u002F a HTML element for it.\\n    const isLocked = !!(this.flags & AnnotationFlag.LOCKED);\\n    const isContentLocked = !!(this.flags & AnnotationFlag.LOCKEDCONTENTS);\\n\\n    if (annotationGlobals.structTreeRoot) {\\n      let structParent = dict.get(\\\"StructParent\\\");\\n      structParent =\\n        Number.isInteger(structParent) && structParent >= 0 ? structParent : -1;\\n\\n      annotationGlobals.structTreeRoot.addAnnotationIdToPage(\\n        params.pageRef,\\n        structParent\\n      );\\n    }\\n\\n    \u002F\u002F Expose public properties using a data object.\\n    this.data = {\\n      annotationFlags: this.flags,\\n      borderStyle: this.borderStyle,\\n      color: this.color,\\n      backgroundColor: this.backgroundColor,\\n      borderColor: this.borderColor,\\n      rotation: this.rotation,\\n      contentsObj: this._contents,\\n      hasAppearance: !!this.appearance,\\n      id: params.id,\\n      modificationDate: this.modificationDate,\\n      rect: this.rectangle,\\n      subtype: params.subtype,\\n      hasOwnCanvas: false,\\n      noRotate: !!(this.flags & AnnotationFlag.NOROTATE),\\n      noHTML: isLocked && isContentLocked,\\n    };\\n\\n    if (params.collectFields) {\\n      \u002F\u002F Fields can act as container for other fields and have\\n      \u002F\u002F some actions even if no Annotation inherit from them.\\n      \u002F\u002F Those fields can be referenced by CO (calculation order).\\n      const kids = dict.get(\\\"Kids\\\");\\n      if (Array.isArray(kids)) {\\n        const kidIds = [];\\n        for (const kid of kids) {\\n          if (kid instanceof Ref) {\\n            kidIds.push(kid.toString());\\n          }\\n        }\\n        if (kidIds.length !== 0) {\\n          this.data.kidIds = kidIds;\\n        }\\n      }\\n\\n      this.data.actions = collectActions(xref, dict, AnnotationActionEventType);\\n      this.data.fieldName = this._constructFieldName(dict);\\n      this.data.pageIndex = params.pageIndex;\\n    }\\n\\n    this._isOffscreenCanvasSupported =\\n      params.evaluatorOptions.isOffscreenCanvasSupported;\\n    this._fallbackFontDict = null;\\n    this._needAppearances = false;\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _hasFlag(flags, flag) {\\n    return !!(flags & flag);\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _isViewable(flags) {\\n    return (\\n      !this._hasFlag(flags, AnnotationFlag.INVISIBLE) &&\\n      !this._hasFlag(flags, AnnotationFlag.NOVIEW)\\n    );\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _isPrintable(flags) {\\n    \u002F\u002F In Acrobat, hidden flag cancels the print one\\n    \u002F\u002F (see annotation_hidden_print.pdf).\\n    return (\\n      this._hasFlag(flags, AnnotationFlag.PRINT) &&\\n      !this._hasFlag(flags, AnnotationFlag.HIDDEN) &&\\n      !this._hasFlag(flags, AnnotationFlag.INVISIBLE)\\n    );\\n  }\\n\\n  \u002F**\\n   * Check if the annotation must be displayed by taking into account\\n   * the value found in the annotationStorage which may have been set\\n   * through JS.\\n   *\\n   * @public\\n   * @memberof Annotation\\n   * @param {AnnotationStorage} [annotationStorage] - Storage for annotation\\n   * @param {boolean} [_renderForms] - if true widgets are rendered thanks to\\n   *                                   the annotation layer.\\n   *\u002F\\n  mustBeViewed(annotationStorage, _renderForms) {\\n    const noView = annotationStorage?.get(this.data.id)?.noView;\\n    if (noView !== undefined) {\\n      return !noView;\\n    }\\n    return this.viewable && !this._hasFlag(this.flags, AnnotationFlag.HIDDEN);\\n  }\\n\\n  \u002F**\\n   * Check if the annotation must be printed by taking into account\\n   * the value found in the annotationStorage which may have been set\\n   * through JS.\\n   *\\n   * @public\\n   * @memberof Annotation\\n   * @param {AnnotationStorage} [annotationStorage] - Storage for annotation\\n   *\u002F\\n  mustBePrinted(annotationStorage) {\\n    const noPrint = annotationStorage?.get(this.data.id)?.noPrint;\\n    if (noPrint !== undefined) {\\n      return !noPrint;\\n    }\\n    return this.printable;\\n  }\\n\\n  \u002F**\\n   * @type {boolean}\\n   *\u002F\\n  get viewable() {\\n    if (this.data.quadPoints === null) {\\n      return false;\\n    }\\n    if (this.flags === 0) {\\n      return true;\\n    }\\n    return this._isViewable(this.flags);\\n  }\\n\\n  \u002F**\\n   * @type {boolean}\\n   *\u002F\\n  get printable() {\\n    if (this.data.quadPoints === null) {\\n      return false;\\n    }\\n    if (this.flags === 0) {\\n      return false;\\n    }\\n    return this._isPrintable(this.flags);\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _parseStringHelper(data) {\\n    const str = typeof data === \\\"string\\\" ? stringToPDFString(data) : \\\"\\\";\\n    const dir = str && bidi(str).dir === \\\"rtl\\\" ? \\\"rtl\\\" : \\\"ltr\\\";\\n\\n    return { str, dir };\\n  }\\n\\n  setDefaultAppearance(params) {\\n    const { dict, annotationGlobals } = params;\\n\\n    const defaultAppearance =\\n      getInheritableProperty({ dict, key: \\\"DA\\\" }) ||\\n      annotationGlobals.acroForm.get(\\\"DA\\\");\\n    this._defaultAppearance =\\n      typeof defaultAppearance === \\\"string\\\" ? defaultAppearance : \\\"\\\";\\n    this.data.defaultAppearanceData = parseDefaultAppearance(\\n      this._defaultAppearance\\n    );\\n  }\\n\\n  \u002F**\\n   * Set the title.\\n   *\\n   * @param {string} title - The title of the annotation, used e.g. with\\n   *   PopupAnnotations.\\n   *\u002F\\n  setTitle(title) {\\n    this._title = this._parseStringHelper(title);\\n  }\\n\\n  \u002F**\\n   * Set the contents.\\n   *\\n   * @param {string} contents - Text to display for the annotation or, if the\\n   *                            type of annotation does not display text, a\\n   *                            description of the annotation's contents\\n   *\u002F\\n  setContents(contents) {\\n    this._contents = this._parseStringHelper(contents);\\n  }\\n\\n  \u002F**\\n   * Set the modification date.\\n   *\\n   * @public\\n   * @memberof Annotation\\n   * @param {string} modificationDate - PDF date string that indicates when the\\n   *                                    annotation was last modified\\n   *\u002F\\n  setModificationDate(modificationDate) {\\n    this.modificationDate =\\n      typeof modificationDate === \\\"string\\\" ? modificationDate : null;\\n  }\\n\\n  \u002F**\\n   * Set the flags.\\n   *\\n   * @public\\n   * @memberof Annotation\\n   * @param {number} flags - Unsigned 32-bit integer specifying annotation\\n   *                         characteristics\\n   * @see {@link shared\u002Futil.js}\\n   *\u002F\\n  setFlags(flags) {\\n    this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0;\\n    if (\\n      this.flags & AnnotationFlag.INVISIBLE &&\\n      this.constructor.name !== \\\"Annotation\\\"\\n    ) {\\n      \u002F\u002F From the pdf spec v1.7, section 12.5.3 (Annotation Flags):\\n      \u002F\u002F   If set, do not display the annotation if it does not belong to one of\\n      \u002F\u002F   the standard annotation types and no annotation handler is available.\\n      \u002F\u002F\\n      \u002F\u002F So we can remove the flag in case we have a known annotation type.\\n      this.flags ^= AnnotationFlag.INVISIBLE;\\n    }\\n  }\\n\\n  \u002F**\\n   * Check if a provided flag is set.\\n   *\\n   * @public\\n   * @memberof Annotation\\n   * @param {number} flag - Hexadecimal representation for an annotation\\n   *                        characteristic\\n   * @returns {boolean}\\n   * @see {@link shared\u002Futil.js}\\n   *\u002F\\n  hasFlag(flag) {\\n    return this._hasFlag(this.flags, flag);\\n  }\\n\\n  \u002F**\\n   * Set the rectangle.\\n   *\\n   * @public\\n   * @memberof Annotation\\n   * @param {Array} rectangle - The rectangle array with exactly four entries\\n   *\u002F\\n  setRectangle(rectangle) {\\n    this.rectangle = lookupNormalRect(rectangle, [0, 0, 0, 0]);\\n  }\\n\\n  \u002F**\\n   * Set the color and take care of color space conversion.\\n   * The default value is black, in RGB color space.\\n   *\\n   * @public\\n   * @memberof Annotation\\n   * @param {Array} color - The color array containing either 0\\n   *                        (transparent), 1 (grayscale), 3 (RGB) or\\n   *                        4 (CMYK) elements\\n   *\u002F\\n  setColor(color) {\\n    this.color = getRgbColor(color);\\n  }\\n\\n  \u002F**\\n   * Set the line endings; should only be used with specific annotation types.\\n   * @param {Array} lineEndings - The line endings array.\\n   *\u002F\\n  setLineEndings(lineEndings) {\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      throw new Error(\\\"Not implemented: setLineEndings\\\");\\n    }\\n    this.lineEndings = [\\\"None\\\", \\\"None\\\"]; \u002F\u002F The default values.\\n\\n    if (Array.isArray(lineEndings) && lineEndings.length === 2) {\\n      for (let i = 0; i \u003C 2; i++) {\\n        const obj = lineEndings[i];\\n\\n        if (obj instanceof Name) {\\n          switch (obj.name) {\\n            case \\\"None\\\":\\n              continue;\\n            case \\\"Square\\\":\\n            case \\\"Circle\\\":\\n            case \\\"Diamond\\\":\\n            case \\\"OpenArrow\\\":\\n            case \\\"ClosedArrow\\\":\\n            case \\\"Butt\\\":\\n            case \\\"ROpenArrow\\\":\\n            case \\\"RClosedArrow\\\":\\n            case \\\"Slash\\\":\\n              this.lineEndings[i] = obj.name;\\n              continue;\\n          }\\n        }\\n        warn(`Ignoring invalid lineEnding: ${obj}`);\\n      }\\n    }\\n  }\\n\\n  setRotation(mk, dict) {\\n    this.rotation = 0;\\n    let angle = mk instanceof Dict ? mk.get(\\\"R\\\") || 0 : dict.get(\\\"Rotate\\\") || 0;\\n    if (Number.isInteger(angle) && angle !== 0) {\\n      angle %= 360;\\n      if (angle \u003C 0) {\\n        angle += 360;\\n      }\\n      if (angle % 90 === 0) {\\n        this.rotation = angle;\\n      }\\n    }\\n  }\\n\\n  \u002F**\\n   * Set the color for background and border if any.\\n   * The default values are transparent.\\n   *\\n   * @public\\n   * @memberof Annotation\\n   * @param {Dict} mk - The MK dictionary\\n   *\u002F\\n  setBorderAndBackgroundColors(mk) {\\n    if (mk instanceof Dict) {\\n      this.borderColor = getRgbColor(mk.getArray(\\\"BC\\\"), null);\\n      this.backgroundColor = getRgbColor(mk.getArray(\\\"BG\\\"), null);\\n    } else {\\n      this.borderColor = this.backgroundColor = null;\\n    }\\n  }\\n\\n  \u002F**\\n   * Set the border style (as AnnotationBorderStyle object).\\n   *\\n   * @public\\n   * @memberof Annotation\\n   * @param {Dict} borderStyle - The border style dictionary\\n   *\u002F\\n  setBorderStyle(borderStyle) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(this.rectangle, \\\"setRectangle must have been called previously.\\\");\\n    }\\n\\n    this.borderStyle = new AnnotationBorderStyle();\\n    if (!(borderStyle instanceof Dict)) {\\n      return;\\n    }\\n    if (borderStyle.has(\\\"BS\\\")) {\\n      const dict = borderStyle.get(\\\"BS\\\");\\n\\n      if (dict instanceof Dict) {\\n        const dictType = dict.get(\\\"Type\\\");\\n\\n        if (!dictType || isName(dictType, \\\"Border\\\")) {\\n          this.borderStyle.setWidth(dict.get(\\\"W\\\"), this.rectangle);\\n          this.borderStyle.setStyle(dict.get(\\\"S\\\"));\\n          this.borderStyle.setDashArray(dict.getArray(\\\"D\\\"));\\n        }\\n      }\\n    } else if (borderStyle.has(\\\"Border\\\")) {\\n      const array = borderStyle.getArray(\\\"Border\\\");\\n      if (Array.isArray(array) && array.length >= 3) {\\n        this.borderStyle.setHorizontalCornerRadius(array[0]);\\n        this.borderStyle.setVerticalCornerRadius(array[1]);\\n        this.borderStyle.setWidth(array[2], this.rectangle);\\n\\n        if (array.length === 4) {\\n          \u002F\u002F Dash array available\\n          this.borderStyle.setDashArray(array[3], \u002F* forceStyle = *\u002F true);\\n        }\\n      }\\n    } else {\\n      \u002F\u002F There are no border entries in the dictionary. According to the\\n      \u002F\u002F specification, we should draw a solid border of width 1 in that\\n      \u002F\u002F case, but Adobe Reader did not implement that part of the\\n      \u002F\u002F specification and instead draws no border at all, so we do the same.\\n      \u002F\u002F See also https:\u002F\u002Fgithub.com\u002Fmozilla\u002Fpdf.js\u002Fissues\u002F6179.\\n      this.borderStyle.setWidth(0);\\n    }\\n  }\\n\\n  \u002F**\\n   * Set the (normal) appearance.\\n   *\\n   * @public\\n   * @memberof Annotation\\n   * @param {Dict} dict - The annotation's data dictionary\\n   *\u002F\\n  setAppearance(dict) {\\n    this.appearance = null;\\n\\n    const appearanceStates = dict.get(\\\"AP\\\");\\n    if (!(appearanceStates instanceof Dict)) {\\n      return;\\n    }\\n\\n    \u002F\u002F In case the normal appearance is a stream, then it is used directly.\\n    const normalAppearanceState = appearanceStates.get(\\\"N\\\");\\n    if (normalAppearanceState instanceof BaseStream) {\\n      this.appearance = normalAppearanceState;\\n      return;\\n    }\\n    if (!(normalAppearanceState instanceof Dict)) {\\n      return;\\n    }\\n\\n    \u002F\u002F In case the normal appearance is a dictionary, the `AS` entry provides\\n    \u002F\u002F the key of the stream in this dictionary.\\n    const as = dict.get(\\\"AS\\\");\\n    if (!(as instanceof Name) || !normalAppearanceState.has(as.name)) {\\n      return;\\n    }\\n    const appearance = normalAppearanceState.get(as.name);\\n    if (appearance instanceof BaseStream) {\\n      this.appearance = appearance;\\n    }\\n  }\\n\\n  setOptionalContent(dict) {\\n    this.oc = null;\\n\\n    const oc = dict.get(\\\"OC\\\");\\n    if (oc instanceof Name) {\\n      warn(\\\"setOptionalContent: Support for \u002FName-entry is not implemented.\\\");\\n    } else if (oc instanceof Dict) {\\n      this.oc = oc;\\n    }\\n  }\\n\\n  loadResources(keys, appearance) {\\n    return appearance.dict.getAsync(\\\"Resources\\\").then(resources => {\\n      if (!resources) {\\n        return undefined;\\n      }\\n\\n      const objectLoader = new ObjectLoader(resources, keys, resources.xref);\\n      return objectLoader.load().then(function () {\\n        return resources;\\n      });\\n    });\\n  }\\n\\n  async getOperatorList(\\n    evaluator,\\n    task,\\n    intent,\\n    renderForms,\\n    annotationStorage\\n  ) {\\n    const { hasOwnCanvas, id, rect } = this.data;\\n    let appearance = this.appearance;\\n    const isUsingOwnCanvas = !!(\\n      hasOwnCanvas && intent & RenderingIntentFlag.DISPLAY\\n    );\\n    if (isUsingOwnCanvas && (rect[0] === rect[2] || rect[1] === rect[3])) {\\n      \u002F\u002F Empty annotation, don't draw anything.\\n      this.data.hasOwnCanvas = false;\\n      return {\\n        opList: new OperatorList(),\\n        separateForm: false,\\n        separateCanvas: false,\\n      };\\n    }\\n    if (!appearance) {\\n      if (!isUsingOwnCanvas) {\\n        return {\\n          opList: new OperatorList(),\\n          separateForm: false,\\n          separateCanvas: false,\\n        };\\n      }\\n      appearance = new StringStream(\\\"\\\");\\n      appearance.dict = new Dict();\\n    }\\n\\n    const appearanceDict = appearance.dict;\\n    const resources = await this.loadResources(\\n      [\\\"ExtGState\\\", \\\"ColorSpace\\\", \\\"Pattern\\\", \\\"Shading\\\", \\\"XObject\\\", \\\"Font\\\"],\\n      appearance\\n    );\\n    const bbox = lookupRect(appearanceDict.getArray(\\\"BBox\\\"), [0, 0, 1, 1]);\\n    const matrix = lookupMatrix(\\n      appearanceDict.getArray(\\\"Matrix\\\"),\\n      IDENTITY_MATRIX\\n    );\\n    const transform = getTransformMatrix(rect, bbox, matrix);\\n\\n    const opList = new OperatorList();\\n\\n    let optionalContent;\\n    if (this.oc) {\\n      optionalContent = await evaluator.parseMarkedContentProps(\\n        this.oc,\\n        \u002F* resources = *\u002F null\\n      );\\n    }\\n    if (optionalContent !== undefined) {\\n      opList.addOp(OPS.beginMarkedContentProps, [\\\"OC\\\", optionalContent]);\\n    }\\n\\n    opList.addOp(OPS.beginAnnotation, [\\n      id,\\n      rect,\\n      transform,\\n      matrix,\\n      isUsingOwnCanvas,\\n    ]);\\n\\n    await evaluator.getOperatorList({\\n      stream: appearance,\\n      task,\\n      resources,\\n      operatorList: opList,\\n      fallbackFontDict: this._fallbackFontDict,\\n    });\\n    opList.addOp(OPS.endAnnotation, []);\\n\\n    if (optionalContent !== undefined) {\\n      opList.addOp(OPS.endMarkedContent, []);\\n    }\\n    this.reset();\\n    return { opList, separateForm: false, separateCanvas: isUsingOwnCanvas };\\n  }\\n\\n  async save(evaluator, task, annotationStorage) {\\n    return null;\\n  }\\n\\n  get hasTextContent() {\\n    return false;\\n  }\\n\\n  async extractTextContent(evaluator, task, viewBox) {\\n    if (!this.appearance) {\\n      return;\\n    }\\n\\n    const resources = await this.loadResources(\\n      [\\\"ExtGState\\\", \\\"Font\\\", \\\"Properties\\\", \\\"XObject\\\"],\\n      this.appearance\\n    );\\n\\n    const text = [];\\n    const buffer = [];\\n    let firstPosition = null;\\n    const sink = {\\n      desiredSize: Math.Infinity,\\n      ready: true,\\n\\n      enqueue(chunk, size) {\\n        for (const item of chunk.items) {\\n          if (item.str === undefined) {\\n            continue;\\n          }\\n          firstPosition ||= item.transform.slice(-2);\\n          buffer.push(item.str);\\n          if (item.hasEOL) {\\n            text.push(buffer.join(\\\"\\\").trimEnd());\\n            buffer.length = 0;\\n          }\\n        }\\n      },\\n    };\\n\\n    await evaluator.getTextContent({\\n      stream: this.appearance,\\n      task,\\n      resources,\\n      includeMarkedContent: true,\\n      keepWhiteSpace: true,\\n      sink,\\n      viewBox,\\n    });\\n    this.reset();\\n\\n    if (buffer.length) {\\n      text.push(buffer.join(\\\"\\\").trimEnd());\\n    }\\n\\n    if (text.length > 1 || text[0]) {\\n      const appearanceDict = this.appearance.dict;\\n      const bbox = lookupRect(appearanceDict.getArray(\\\"BBox\\\"), null);\\n      const matrix = lookupMatrix(appearanceDict.getArray(\\\"Matrix\\\"), null);\\n\\n      this.data.textPosition = this._transformPoint(\\n        firstPosition,\\n        bbox,\\n        matrix\\n      );\\n      this.data.textContent = text;\\n    }\\n  }\\n\\n  _transformPoint(coords, bbox, matrix) {\\n    const { rect } = this.data;\\n    bbox ||= [0, 0, 1, 1];\\n    matrix ||= [1, 0, 0, 1, 0, 0];\\n    const transform = getTransformMatrix(rect, bbox, matrix);\\n    transform[4] -= rect[0];\\n    transform[5] -= rect[1];\\n    coords = Util.applyTransform(coords, transform);\\n    return Util.applyTransform(coords, matrix);\\n  }\\n\\n  \u002F**\\n   * Get field data for usage in JS sandbox.\\n   *\\n   * Field object is defined here:\\n   * https:\u002F\u002Fwww.adobe.com\u002Fcontent\u002Fdam\u002Facom\u002Fen\u002Fdevnet\u002Facrobat\u002Fpdfs\u002Fjs_api_reference.pdf#page=16\\n   *\\n   * @public\\n   * @memberof Annotation\\n   * @returns {Object | null}\\n   *\u002F\\n  getFieldObject() {\\n    if (this.data.kidIds) {\\n      return {\\n        id: this.data.id,\\n        actions: this.data.actions,\\n        name: this.data.fieldName,\\n        strokeColor: this.data.borderColor,\\n        fillColor: this.data.backgroundColor,\\n        type: \\\"\\\",\\n        kidIds: this.data.kidIds,\\n        page: this.data.pageIndex,\\n        rotation: this.rotation,\\n      };\\n    }\\n    return null;\\n  }\\n\\n  \u002F**\\n   * Reset the annotation.\\n   *\\n   * This involves resetting the various streams that are either cached on the\\n   * annotation instance or created during its construction.\\n   *\\n   * @public\\n   * @memberof Annotation\\n   *\u002F\\n  reset() {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      this.appearance &&\\n      !this._streams.includes(this.appearance)\\n    ) {\\n      unreachable(\\\"The appearance stream should always be reset.\\\");\\n    }\\n\\n    for (const stream of this._streams) {\\n      stream.reset();\\n    }\\n  }\\n\\n  \u002F**\\n   * Construct the (fully qualified) field name from the (partial) field\\n   * names of the field and its ancestors.\\n   *\\n   * @private\\n   * @memberof Annotation\\n   * @param {Dict} dict - Complete widget annotation dictionary\\n   * @returns {string}\\n   *\u002F\\n  _constructFieldName(dict) {\\n    \u002F\u002F Both the `Parent` and `T` fields are optional. While at least one of\\n    \u002F\u002F them should be provided, bad PDF generators may fail to do so.\\n    if (!dict.has(\\\"T\\\") && !dict.has(\\\"Parent\\\")) {\\n      warn(\\\"Unknown field name, falling back to empty field name.\\\");\\n      return \\\"\\\";\\n    }\\n\\n    \u002F\u002F If no parent exists, the partial and fully qualified names are equal.\\n    if (!dict.has(\\\"Parent\\\")) {\\n      return stringToPDFString(dict.get(\\\"T\\\"));\\n    }\\n\\n    \u002F\u002F Form the fully qualified field name by appending the partial name to\\n    \u002F\u002F the parent's fully qualified name, separated by a period.\\n    const fieldName = [];\\n    if (dict.has(\\\"T\\\")) {\\n      fieldName.unshift(stringToPDFString(dict.get(\\\"T\\\")));\\n    }\\n\\n    let loopDict = dict;\\n    const visited = new RefSet();\\n    if (dict.objId) {\\n      visited.put(dict.objId);\\n    }\\n    while (loopDict.has(\\\"Parent\\\")) {\\n      loopDict = loopDict.get(\\\"Parent\\\");\\n      if (\\n        !(loopDict instanceof Dict) ||\\n        (loopDict.objId && visited.has(loopDict.objId))\\n      ) {\\n        \u002F\u002F Even though it is not allowed according to the PDF specification,\\n        \u002F\u002F bad PDF generators may provide a `Parent` entry that is not a\\n        \u002F\u002F dictionary, but `null` for example (issue 8143).\\n        \u002F\u002F\\n        \u002F\u002F If parent has been already visited, it means that we're\\n        \u002F\u002F in an infinite loop.\\n        break;\\n      }\\n      if (loopDict.objId) {\\n        visited.put(loopDict.objId);\\n      }\\n\\n      if (loopDict.has(\\\"T\\\")) {\\n        fieldName.unshift(stringToPDFString(loopDict.get(\\\"T\\\")));\\n      }\\n    }\\n    return fieldName.join(\\\".\\\");\\n  }\\n}\\n\\n\u002F**\\n * Contains all data regarding an annotation's border style.\\n *\u002F\\nclass AnnotationBorderStyle {\\n  constructor() {\\n    this.width = 1;\\n    this.style = AnnotationBorderStyleType.SOLID;\\n    this.dashArray = [3];\\n    this.horizontalCornerRadius = 0;\\n    this.verticalCornerRadius = 0;\\n  }\\n\\n  \u002F**\\n   * Set the width.\\n   *\\n   * @public\\n   * @memberof AnnotationBorderStyle\\n   * @param {number} width - The width.\\n   * @param {Array} rect - The annotation `Rect` entry.\\n   *\u002F\\n  setWidth(width, rect = [0, 0, 0, 0]) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        isNumberArray(rect, 4),\\n        \\\"A valid `rect` parameter must be provided.\\\"\\n      );\\n    }\\n\\n    \u002F\u002F Some corrupt PDF generators may provide the width as a `Name`,\\n    \u002F\u002F rather than as a number (fixes issue 10385).\\n    if (width instanceof Name) {\\n      this.width = 0; \u002F\u002F This is consistent with the behaviour in Adobe Reader.\\n      return;\\n    }\\n    if (typeof width === \\\"number\\\") {\\n      if (width > 0) {\\n        const maxWidth = (rect[2] - rect[0]) \u002F 2;\\n        const maxHeight = (rect[3] - rect[1]) \u002F 2;\\n\\n        \u002F\u002F Ignore large `width`s, since they lead to the Annotation overflowing\\n        \u002F\u002F the size set by the `Rect` entry thus causing the `annotationLayer`\\n        \u002F\u002F to render it over the surrounding document (fixes bug1552113.pdf).\\n        if (\\n          maxWidth > 0 &&\\n          maxHeight > 0 &&\\n          (width > maxWidth || width > maxHeight)\\n        ) {\\n          warn(`AnnotationBorderStyle.setWidth - ignoring width: ${width}`);\\n          width = 1;\\n        }\\n      }\\n      this.width = width;\\n    }\\n  }\\n\\n  \u002F**\\n   * Set the style.\\n   *\\n   * @public\\n   * @memberof AnnotationBorderStyle\\n   * @param {Name} style - The annotation style.\\n   * @see {@link shared\u002Futil.js}\\n   *\u002F\\n  setStyle(style) {\\n    if (!(style instanceof Name)) {\\n      return;\\n    }\\n    switch (style.name) {\\n      case \\\"S\\\":\\n        this.style = AnnotationBorderStyleType.SOLID;\\n        break;\\n\\n      case \\\"D\\\":\\n        this.style = AnnotationBorderStyleType.DASHED;\\n        break;\\n\\n      case \\\"B\\\":\\n        this.style = AnnotationBorderStyleType.BEVELED;\\n        break;\\n\\n      case \\\"I\\\":\\n        this.style = AnnotationBorderStyleType.INSET;\\n        break;\\n\\n      case \\\"U\\\":\\n        this.style = AnnotationBorderStyleType.UNDERLINE;\\n        break;\\n\\n      default:\\n        break;\\n    }\\n  }\\n\\n  \u002F**\\n   * Set the dash array.\\n   *\\n   * @public\\n   * @memberof AnnotationBorderStyle\\n   * @param {Array} dashArray - The dash array with at least one element\\n   * @param {boolean} [forceStyle]\\n   *\u002F\\n  setDashArray(dashArray, forceStyle = false) {\\n    \u002F\u002F We validate the dash array, but we do not use it because CSS does not\\n    \u002F\u002F allow us to change spacing of dashes. For more information, visit\\n    \u002F\u002F http:\u002F\u002Fwww.w3.org\u002FTR\u002Fcss3-background\u002F#the-border-style.\\n    if (Array.isArray(dashArray)) {\\n      \u002F\u002F The PDF specification states that elements in the dash array, if\\n      \u002F\u002F present, must be non-negative numbers and must not all equal zero.\\n      let isValid = true;\\n      let allZeros = true;\\n      for (const element of dashArray) {\\n        const validNumber = +element >= 0;\\n        if (!validNumber) {\\n          isValid = false;\\n          break;\\n        } else if (element > 0) {\\n          allZeros = false;\\n        }\\n      }\\n      if (dashArray.length === 0 || (isValid && !allZeros)) {\\n        this.dashArray = dashArray;\\n\\n        if (forceStyle) {\\n          \u002F\u002F Even though we cannot use the dash array in the display layer,\\n          \u002F\u002F at least ensure that we use the correct border-style.\\n          this.setStyle(Name.get(\\\"D\\\"));\\n        }\\n      } else {\\n        this.width = 0; \u002F\u002F Adobe behavior when the array is invalid.\\n      }\\n    } else if (dashArray) {\\n      this.width = 0; \u002F\u002F Adobe behavior when the array is invalid.\\n    }\\n  }\\n\\n  \u002F**\\n   * Set the horizontal corner radius (from a Border dictionary).\\n   *\\n   * @public\\n   * @memberof AnnotationBorderStyle\\n   * @param {number} radius - The horizontal corner radius.\\n   *\u002F\\n  setHorizontalCornerRadius(radius) {\\n    if (Number.isInteger(radius)) {\\n      this.horizontalCornerRadius = radius;\\n    }\\n  }\\n\\n  \u002F**\\n   * Set the vertical corner radius (from a Border dictionary).\\n   *\\n   * @public\\n   * @memberof AnnotationBorderStyle\\n   * @param {number} radius - The vertical corner radius.\\n   *\u002F\\n  setVerticalCornerRadius(radius) {\\n    if (Number.isInteger(radius)) {\\n      this.verticalCornerRadius = radius;\\n    }\\n  }\\n}\\n\\nclass MarkupAnnotation extends Annotation {\\n  constructor(params) {\\n    super(params);\\n\\n    const { dict } = params;\\n\\n    if (dict.has(\\\"IRT\\\")) {\\n      const rawIRT = dict.getRaw(\\\"IRT\\\");\\n      this.data.inReplyTo = rawIRT instanceof Ref ? rawIRT.toString() : null;\\n\\n      const rt = dict.get(\\\"RT\\\");\\n      this.data.replyType =\\n        rt instanceof Name ? rt.name : AnnotationReplyType.REPLY;\\n    }\\n    let popupRef = null;\\n\\n    if (this.data.replyType === AnnotationReplyType.GROUP) {\\n      \u002F\u002F Subordinate annotations in a group should inherit\\n      \u002F\u002F the group attributes from the primary annotation.\\n      const parent = dict.get(\\\"IRT\\\");\\n\\n      this.setTitle(parent.get(\\\"T\\\"));\\n      this.data.titleObj = this._title;\\n\\n      this.setContents(parent.get(\\\"Contents\\\"));\\n      this.data.contentsObj = this._contents;\\n\\n      if (!parent.has(\\\"CreationDate\\\")) {\\n        this.data.creationDate = null;\\n      } else {\\n        this.setCreationDate(parent.get(\\\"CreationDate\\\"));\\n        this.data.creationDate = this.creationDate;\\n      }\\n\\n      if (!parent.has(\\\"M\\\")) {\\n        this.data.modificationDate = null;\\n      } else {\\n        this.setModificationDate(parent.get(\\\"M\\\"));\\n        this.data.modificationDate = this.modificationDate;\\n      }\\n\\n      popupRef = parent.getRaw(\\\"Popup\\\");\\n\\n      if (!parent.has(\\\"C\\\")) {\\n        \u002F\u002F Fall back to the default background color.\\n        this.data.color = null;\\n      } else {\\n        this.setColor(parent.getArray(\\\"C\\\"));\\n        this.data.color = this.color;\\n      }\\n    } else {\\n      this.data.titleObj = this._title;\\n\\n      this.setCreationDate(dict.get(\\\"CreationDate\\\"));\\n      this.data.creationDate = this.creationDate;\\n\\n      popupRef = dict.getRaw(\\\"Popup\\\");\\n\\n      if (!dict.has(\\\"C\\\")) {\\n        \u002F\u002F Fall back to the default background color.\\n        this.data.color = null;\\n      }\\n    }\\n\\n    this.data.popupRef = popupRef instanceof Ref ? popupRef.toString() : null;\\n\\n    if (dict.has(\\\"RC\\\")) {\\n      this.data.richText = XFAFactory.getRichTextAsHtml(dict.get(\\\"RC\\\"));\\n    }\\n  }\\n\\n  \u002F**\\n   * Set the creation date.\\n   *\\n   * @public\\n   * @memberof MarkupAnnotation\\n   * @param {string} creationDate - PDF date string that indicates when the\\n   *                                annotation was originally created\\n   *\u002F\\n  setCreationDate(creationDate) {\\n    this.creationDate = typeof creationDate === \\\"string\\\" ? creationDate : null;\\n  }\\n\\n  _setDefaultAppearance({\\n    xref,\\n    extra,\\n    strokeColor,\\n    fillColor,\\n    blendMode,\\n    strokeAlpha,\\n    fillAlpha,\\n    pointsCallback,\\n  }) {\\n    let minX = Number.MAX_VALUE;\\n    let minY = Number.MAX_VALUE;\\n    let maxX = Number.MIN_VALUE;\\n    let maxY = Number.MIN_VALUE;\\n\\n    const buffer = [\\\"q\\\"];\\n    if (extra) {\\n      buffer.push(extra);\\n    }\\n    if (strokeColor) {\\n      buffer.push(`${strokeColor[0]} ${strokeColor[1]} ${strokeColor[2]} RG`);\\n    }\\n    if (fillColor) {\\n      buffer.push(`${fillColor[0]} ${fillColor[1]} ${fillColor[2]} rg`);\\n    }\\n\\n    let pointsArray = this.data.quadPoints;\\n    if (!pointsArray) {\\n      \u002F\u002F If there are no quadpoints, the rectangle should be used instead.\\n      \u002F\u002F Convert the rectangle definition to a points array similar to how the\\n      \u002F\u002F quadpoints are defined.\\n      pointsArray = [\\n        [\\n          { x: this.rectangle[0], y: this.rectangle[3] },\\n          { x: this.rectangle[2], y: this.rectangle[3] },\\n          { x: this.rectangle[0], y: this.rectangle[1] },\\n          { x: this.rectangle[2], y: this.rectangle[1] },\\n        ],\\n      ];\\n    }\\n\\n    for (const points of pointsArray) {\\n      const [mX, MX, mY, MY] = pointsCallback(buffer, points);\\n      minX = Math.min(minX, mX);\\n      maxX = Math.max(maxX, MX);\\n      minY = Math.min(minY, mY);\\n      maxY = Math.max(maxY, MY);\\n    }\\n    buffer.push(\\\"Q\\\");\\n\\n    const formDict = new Dict(xref);\\n    const appearanceStreamDict = new Dict(xref);\\n    appearanceStreamDict.set(\\\"Subtype\\\", Name.get(\\\"Form\\\"));\\n\\n    const appearanceStream = new StringStream(buffer.join(\\\" \\\"));\\n    appearanceStream.dict = appearanceStreamDict;\\n    formDict.set(\\\"Fm0\\\", appearanceStream);\\n\\n    const gsDict = new Dict(xref);\\n    if (blendMode) {\\n      gsDict.set(\\\"BM\\\", Name.get(blendMode));\\n    }\\n    if (typeof strokeAlpha === \\\"number\\\") {\\n      gsDict.set(\\\"CA\\\", strokeAlpha);\\n    }\\n    if (typeof fillAlpha === \\\"number\\\") {\\n      gsDict.set(\\\"ca\\\", fillAlpha);\\n    }\\n\\n    const stateDict = new Dict(xref);\\n    stateDict.set(\\\"GS0\\\", gsDict);\\n\\n    const resources = new Dict(xref);\\n    resources.set(\\\"ExtGState\\\", stateDict);\\n    resources.set(\\\"XObject\\\", formDict);\\n\\n    const appearanceDict = new Dict(xref);\\n    appearanceDict.set(\\\"Resources\\\", resources);\\n    const bbox = (this.data.rect = [minX, minY, maxX, maxY]);\\n    appearanceDict.set(\\\"BBox\\\", bbox);\\n\\n    this.appearance = new StringStream(\\\"\u002FGS0 gs \u002FFm0 Do\\\");\\n    this.appearance.dict = appearanceDict;\\n\\n    \u002F\u002F This method is only called if there is no appearance for the annotation,\\n    \u002F\u002F so `this.appearance` is not pushed yet in the `Annotation` constructor.\\n    this._streams.push(this.appearance, appearanceStream);\\n  }\\n\\n  static async createNewAnnotation(xref, annotation, dependencies, params) {\\n    const annotationRef = (annotation.ref ||= xref.getNewTemporaryRef());\\n    const ap = await this.createNewAppearanceStream(annotation, xref, params);\\n    const buffer = [];\\n    let annotationDict;\\n\\n    if (ap) {\\n      const apRef = xref.getNewTemporaryRef();\\n      annotationDict = this.createNewDict(annotation, xref, { apRef });\\n      await writeObject(apRef, ap, buffer, xref);\\n      dependencies.push({ ref: apRef, data: buffer.join(\\\"\\\") });\\n    } else {\\n      annotationDict = this.createNewDict(annotation, xref, {});\\n    }\\n    if (Number.isInteger(annotation.parentTreeId)) {\\n      annotationDict.set(\\\"StructParent\\\", annotation.parentTreeId);\\n    }\\n\\n    buffer.length = 0;\\n    await writeObject(annotationRef, annotationDict, buffer, xref);\\n\\n    return { ref: annotationRef, data: buffer.join(\\\"\\\") };\\n  }\\n\\n  static async createNewPrintAnnotation(\\n    annotationGlobals,\\n    xref,\\n    annotation,\\n    params\\n  ) {\\n    const ap = await this.createNewAppearanceStream(annotation, xref, params);\\n    const annotationDict = this.createNewDict(annotation, xref, { ap });\\n\\n    const newAnnotation = new this.prototype.constructor({\\n      dict: annotationDict,\\n      xref,\\n      annotationGlobals,\\n      evaluatorOptions: params.evaluatorOptions,\\n    });\\n\\n    if (annotation.ref) {\\n      newAnnotation.ref = newAnnotation.refToReplace = annotation.ref;\\n    }\\n\\n    return newAnnotation;\\n  }\\n}\\n\\nclass WidgetAnnotation extends Annotation {\\n  constructor(params) {\\n    super(params);\\n\\n    const { dict, xref, annotationGlobals } = params;\\n    const data = this.data;\\n    this._needAppearances = params.needAppearances;\\n\\n    data.annotationType = AnnotationType.WIDGET;\\n    if (data.fieldName === undefined) {\\n      data.fieldName = this._constructFieldName(dict);\\n    }\\n\\n    if (data.actions === undefined) {\\n      data.actions = collectActions(xref, dict, AnnotationActionEventType);\\n    }\\n\\n    let fieldValue = getInheritableProperty({\\n      dict,\\n      key: \\\"V\\\",\\n      getArray: true,\\n    });\\n    data.fieldValue = this._decodeFormValue(fieldValue);\\n\\n    const defaultFieldValue = getInheritableProperty({\\n      dict,\\n      key: \\\"DV\\\",\\n      getArray: true,\\n    });\\n    data.defaultFieldValue = this._decodeFormValue(defaultFieldValue);\\n\\n    if (fieldValue === undefined && annotationGlobals.xfaDatasets) {\\n      \u002F\u002F Try to figure out if we have something in the xfa dataset.\\n      const path = this._title.str;\\n      if (path) {\\n        this._hasValueFromXFA = true;\\n        data.fieldValue = fieldValue =\\n          annotationGlobals.xfaDatasets.getValue(path);\\n      }\\n    }\\n\\n    \u002F\u002F When no \\\"V\\\" entry exists, let the fieldValue fallback to the \\\"DV\\\" entry\\n    \u002F\u002F (fixes issue13823.pdf).\\n    if (fieldValue === undefined && data.defaultFieldValue !== null) {\\n      data.fieldValue = data.defaultFieldValue;\\n    }\\n\\n    data.alternativeText = stringToPDFString(dict.get(\\\"TU\\\") || \\\"\\\");\\n\\n    this.setDefaultAppearance(params);\\n\\n    data.hasAppearance ||=\\n      this._needAppearances &&\\n      data.fieldValue !== undefined &&\\n      data.fieldValue !== null;\\n\\n    const fieldType = getInheritableProperty({ dict, key: \\\"FT\\\" });\\n    data.fieldType = fieldType instanceof Name ? fieldType.name : null;\\n\\n    const localResources = getInheritableProperty({ dict, key: \\\"DR\\\" });\\n    const acroFormResources = annotationGlobals.acroForm.get(\\\"DR\\\");\\n    const appearanceResources = this.appearance?.dict.get(\\\"Resources\\\");\\n\\n    this._fieldResources = {\\n      localResources,\\n      acroFormResources,\\n      appearanceResources,\\n      mergedResources: Dict.merge({\\n        xref,\\n        dictArray: [localResources, appearanceResources, acroFormResources],\\n        mergeSubDicts: true,\\n      }),\\n    };\\n\\n    data.fieldFlags = getInheritableProperty({ dict, key: \\\"Ff\\\" });\\n    if (!Number.isInteger(data.fieldFlags) || data.fieldFlags \u003C 0) {\\n      data.fieldFlags = 0;\\n    }\\n\\n    data.readOnly = this.hasFieldFlag(AnnotationFieldFlag.READONLY);\\n    data.required = this.hasFieldFlag(AnnotationFieldFlag.REQUIRED);\\n    data.hidden =\\n      this._hasFlag(data.annotationFlags, AnnotationFlag.HIDDEN) ||\\n      this._hasFlag(data.annotationFlags, AnnotationFlag.NOVIEW);\\n  }\\n\\n  \u002F**\\n   * Decode the given form value.\\n   *\\n   * @private\\n   * @memberof WidgetAnnotation\\n   * @param {Array\u003Cstring>|Name|string} formValue - The (possibly encoded)\\n   *   form value.\\n   * @returns {Array\u003Cstring>|string|null}\\n   *\u002F\\n  _decodeFormValue(formValue) {\\n    if (Array.isArray(formValue)) {\\n      return formValue\\n        .filter(item => typeof item === \\\"string\\\")\\n        .map(item => stringToPDFString(item));\\n    } else if (formValue instanceof Name) {\\n      return stringToPDFString(formValue.name);\\n    } else if (typeof formValue === \\\"string\\\") {\\n      return stringToPDFString(formValue);\\n    }\\n    return null;\\n  }\\n\\n  \u002F**\\n   * Check if a provided field flag is set.\\n   *\\n   * @public\\n   * @memberof WidgetAnnotation\\n   * @param {number} flag - Hexadecimal representation for an annotation\\n   *                        field characteristic\\n   * @returns {boolean}\\n   * @see {@link shared\u002Futil.js}\\n   *\u002F\\n  hasFieldFlag(flag) {\\n    return !!(this.data.fieldFlags & flag);\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  _isViewable(flags) {\\n    \u002F\u002F We don't take into account the `NOVIEW` or `HIDDEN` flags here,\\n    \u002F\u002F since the visibility can be changed by js code, hence in case\\n    \u002F\u002F it's made viewable, we should render it (with visibility set to\\n    \u002F\u002F hidden).\\n    \u002F\u002F We don't take into account the `INVISIBLE` flag here, since we've a known\\n    \u002F\u002F annotation type.\\n    return true;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  mustBeViewed(annotationStorage, renderForms) {\\n    if (renderForms) {\\n      return this.viewable;\\n    }\\n    return (\\n      super.mustBeViewed(annotationStorage, renderForms) &&\\n      !this._hasFlag(this.flags, AnnotationFlag.NOVIEW)\\n    );\\n  }\\n\\n  getRotationMatrix(annotationStorage) {\\n    let rotation = annotationStorage?.get(this.data.id)?.rotation;\\n    if (rotation === undefined) {\\n      rotation = this.rotation;\\n    }\\n\\n    if (rotation === 0) {\\n      return IDENTITY_MATRIX;\\n    }\\n\\n    const width = this.data.rect[2] - this.data.rect[0];\\n    const height = this.data.rect[3] - this.data.rect[1];\\n\\n    return getRotationMatrix(rotation, width, height);\\n  }\\n\\n  getBorderAndBackgroundAppearances(annotationStorage) {\\n    let rotation = annotationStorage?.get(this.data.id)?.rotation;\\n    if (rotation === undefined) {\\n      rotation = this.rotation;\\n    }\\n\\n    if (!this.backgroundColor && !this.borderColor) {\\n      return \\\"\\\";\\n    }\\n    const width = this.data.rect[2] - this.data.rect[0];\\n    const height = this.data.rect[3] - this.data.rect[1];\\n    const rect =\\n      rotation === 0 || rotation === 180\\n        ? `0 0 ${width} ${height} re`\\n        : `0 0 ${height} ${width} re`;\\n\\n    let str = \\\"\\\";\\n    if (this.backgroundColor) {\\n      str = `${getPdfColor(\\n        this.backgroundColor,\\n        \u002F* isFill *\u002F true\\n      )} ${rect} f `;\\n    }\\n\\n    if (this.borderColor) {\\n      const borderWidth = this.borderStyle.width || 1;\\n      str += `${borderWidth} w ${getPdfColor(\\n        this.borderColor,\\n        \u002F* isFill *\u002F false\\n      )} ${rect} S `;\\n    }\\n\\n    return str;\\n  }\\n\\n  async getOperatorList(\\n    evaluator,\\n    task,\\n    intent,\\n    renderForms,\\n    annotationStorage\\n  ) {\\n    \u002F\u002F Do not render form elements on the canvas when interactive forms are\\n    \u002F\u002F enabled. The display layer is responsible for rendering them instead.\\n    if (\\n      renderForms &&\\n      !(this instanceof SignatureWidgetAnnotation) &&\\n      !this.data.noHTML &&\\n      !this.data.hasOwnCanvas\\n    ) {\\n      return {\\n        opList: new OperatorList(),\\n        separateForm: true,\\n        separateCanvas: false,\\n      };\\n    }\\n\\n    if (!this._hasText) {\\n      return super.getOperatorList(\\n        evaluator,\\n        task,\\n        intent,\\n        renderForms,\\n        annotationStorage\\n      );\\n    }\\n\\n    const content = await this._getAppearance(\\n      evaluator,\\n      task,\\n      intent,\\n      annotationStorage\\n    );\\n    if (this.appearance && content === null) {\\n      return super.getOperatorList(\\n        evaluator,\\n        task,\\n        intent,\\n        renderForms,\\n        annotationStorage\\n      );\\n    }\\n\\n    const opList = new OperatorList();\\n\\n    \u002F\u002F Even if there is an appearance stream, ignore it. This is the\\n    \u002F\u002F behaviour used by Adobe Reader.\\n    if (!this._defaultAppearance || content === null) {\\n      return { opList, separateForm: false, separateCanvas: false };\\n    }\\n\\n    const isUsingOwnCanvas = !!(\\n      this.data.hasOwnCanvas && intent & RenderingIntentFlag.DISPLAY\\n    );\\n\\n    const matrix = [1, 0, 0, 1, 0, 0];\\n    const bbox = [\\n      0,\\n      0,\\n      this.data.rect[2] - this.data.rect[0],\\n      this.data.rect[3] - this.data.rect[1],\\n    ];\\n    const transform = getTransformMatrix(this.data.rect, bbox, matrix);\\n\\n    let optionalContent;\\n    if (this.oc) {\\n      optionalContent = await evaluator.parseMarkedContentProps(\\n        this.oc,\\n        \u002F* resources = *\u002F null\\n      );\\n    }\\n    if (optionalContent !== undefined) {\\n      opList.addOp(OPS.beginMarkedContentProps, [\\\"OC\\\", optionalContent]);\\n    }\\n\\n    opList.addOp(OPS.beginAnnotation, [\\n      this.data.id,\\n      this.data.rect,\\n      transform,\\n      this.getRotationMatrix(annotationStorage),\\n      isUsingOwnCanvas,\\n    ]);\\n\\n    const stream = new StringStream(content);\\n    await evaluator.getOperatorList({\\n      stream,\\n      task,\\n      resources: this._fieldResources.mergedResources,\\n      operatorList: opList,\\n    });\\n    opList.addOp(OPS.endAnnotation, []);\\n\\n    if (optionalContent !== undefined) {\\n      opList.addOp(OPS.endMarkedContent, []);\\n    }\\n    return { opList, separateForm: false, separateCanvas: isUsingOwnCanvas };\\n  }\\n\\n  _getMKDict(rotation) {\\n    const mk = new Dict(null);\\n    if (rotation) {\\n      mk.set(\\\"R\\\", rotation);\\n    }\\n    if (this.borderColor) {\\n      mk.set(\\\"BC\\\", getPdfColorArray(this.borderColor));\\n    }\\n    if (this.backgroundColor) {\\n      mk.set(\\\"BG\\\", getPdfColorArray(this.backgroundColor));\\n    }\\n    return mk.size > 0 ? mk : null;\\n  }\\n\\n  amendSavedDict(annotationStorage, dict) {}\\n\\n  async save(evaluator, task, annotationStorage) {\\n    const storageEntry = annotationStorage?.get(this.data.id);\\n    let value = storageEntry?.value,\\n      rotation = storageEntry?.rotation;\\n    if (value === this.data.fieldValue || value === undefined) {\\n      if (!this._hasValueFromXFA && rotation === undefined) {\\n        return null;\\n      }\\n      value ||= this.data.fieldValue;\\n    }\\n\\n    \u002F\u002F Value can be an array (with choice list and multiple selections)\\n    if (\\n      rotation === undefined &&\\n      !this._hasValueFromXFA &&\\n      Array.isArray(value) &&\\n      Array.isArray(this.data.fieldValue) &&\\n      value.length === this.data.fieldValue.length &&\\n      value.every((x, i) => x === this.data.fieldValue[i])\\n    ) {\\n      return null;\\n    }\\n\\n    if (rotation === undefined) {\\n      rotation = this.rotation;\\n    }\\n\\n    let appearance = null;\\n    if (!this._needAppearances) {\\n      appearance = await this._getAppearance(\\n        evaluator,\\n        task,\\n        RenderingIntentFlag.SAVE,\\n        annotationStorage\\n      );\\n      if (appearance === null) {\\n        \u002F\u002F Appearance didn't change.\\n        return null;\\n      }\\n    } else {\\n      \u002F\u002F No need to create an appearance: the pdf has the flag \u002FNeedAppearances\\n      \u002F\u002F which means that it's up to the reader to produce an appearance.\\n    }\\n\\n    let needAppearances = false;\\n    if (appearance?.needAppearances) {\\n      needAppearances = true;\\n      appearance = null;\\n    }\\n\\n    const { xref } = evaluator;\\n\\n    const originalDict = xref.fetchIfRef(this.ref);\\n    if (!(originalDict instanceof Dict)) {\\n      return null;\\n    }\\n\\n    const dict = new Dict(xref);\\n    for (const key of originalDict.getKeys()) {\\n      if (key !== \\\"AP\\\") {\\n        dict.set(key, originalDict.getRaw(key));\\n      }\\n    }\\n\\n    const xfa = {\\n      path: this.data.fieldName,\\n      value,\\n    };\\n\\n    const encoder = val =>\\n      isAscii(val) ? val : stringToUTF16String(val, \u002F* bigEndian = *\u002F true);\\n    dict.set(\\\"V\\\", Array.isArray(value) ? value.map(encoder) : encoder(value));\\n    this.amendSavedDict(annotationStorage, dict);\\n\\n    const maybeMK = this._getMKDict(rotation);\\n    if (maybeMK) {\\n      dict.set(\\\"MK\\\", maybeMK);\\n    }\\n\\n    const buffer = [];\\n    const changes = [\\n      \u002F\u002F data for the original object\\n      \u002F\u002F V field changed + reference for new AP\\n      { ref: this.ref, data: \\\"\\\", xfa, needAppearances },\\n    ];\\n    if (appearance !== null) {\\n      const newRef = xref.getNewTemporaryRef();\\n      const AP = new Dict(xref);\\n      dict.set(\\\"AP\\\", AP);\\n      AP.set(\\\"N\\\", newRef);\\n\\n      const resources = this._getSaveFieldResources(xref);\\n      const appearanceStream = new StringStream(appearance);\\n      const appearanceDict = (appearanceStream.dict = new Dict(xref));\\n      appearanceDict.set(\\\"Subtype\\\", Name.get(\\\"Form\\\"));\\n      appearanceDict.set(\\\"Resources\\\", resources);\\n      appearanceDict.set(\\\"BBox\\\", [\\n        0,\\n        0,\\n        this.data.rect[2] - this.data.rect[0],\\n        this.data.rect[3] - this.data.rect[1],\\n      ]);\\n\\n      const rotationMatrix = this.getRotationMatrix(annotationStorage);\\n      if (rotationMatrix !== IDENTITY_MATRIX) {\\n        \u002F\u002F The matrix isn't the identity one.\\n        appearanceDict.set(\\\"Matrix\\\", rotationMatrix);\\n      }\\n\\n      await writeObject(newRef, appearanceStream, buffer, xref);\\n\\n      changes.push(\\n        \u002F\u002F data for the new AP\\n        {\\n          ref: newRef,\\n          data: buffer.join(\\\"\\\"),\\n          xfa: null,\\n          needAppearances: false,\\n        }\\n      );\\n      buffer.length = 0;\\n    }\\n\\n    dict.set(\\\"M\\\", `D:${getModificationDate()}`);\\n    await writeObject(this.ref, dict, buffer, xref);\\n\\n    changes[0].data = buffer.join(\\\"\\\");\\n\\n    return changes;\\n  }\\n\\n  async _getAppearance(evaluator, task, intent, annotationStorage) {\\n    const isPassword = this.hasFieldFlag(AnnotationFieldFlag.PASSWORD);\\n    if (isPassword) {\\n      return null;\\n    }\\n    const storageEntry = annotationStorage?.get(this.data.id);\\n    let value, rotation;\\n    if (storageEntry) {\\n      value = storageEntry.formattedValue || storageEntry.value;\\n      rotation = storageEntry.rotation;\\n    }\\n\\n    if (\\n      rotation === undefined &&\\n      value === undefined &&\\n      !this._needAppearances\\n    ) {\\n      if (!this._hasValueFromXFA || this.appearance) {\\n        \u002F\u002F The annotation hasn't been rendered so use the appearance.\\n        return null;\\n      }\\n    }\\n\\n    \u002F\u002F Empty or it has a trailing whitespace.\\n    const colors = this.getBorderAndBackgroundAppearances(annotationStorage);\\n\\n    if (value === undefined) {\\n      \u002F\u002F The annotation has its value in XFA datasets but not in the V field.\\n      value = this.data.fieldValue;\\n      if (!value) {\\n        return `\u002FTx BMC q ${colors}Q EMC`;\\n      }\\n    }\\n\\n    if (Array.isArray(value) && value.length === 1) {\\n      value = value[0];\\n    }\\n\\n    assert(typeof value === \\\"string\\\", \\\"Expected `value` to be a string.\\\");\\n    value = value.trim();\\n\\n    if (this.data.combo) {\\n      \u002F\u002F The value can be one of the exportValue or any other values.\\n      const option = this.data.options.find(\\n        ({ exportValue }) => value === exportValue\\n      );\\n      value = option?.displayValue || value;\\n    }\\n\\n    if (value === \\\"\\\") {\\n      \u002F\u002F the field is empty: nothing to render\\n      return `\u002FTx BMC q ${colors}Q EMC`;\\n    }\\n\\n    if (rotation === undefined) {\\n      rotation = this.rotation;\\n    }\\n\\n    let lineCount = -1;\\n    let lines;\\n\\n    \u002F\u002F We could have a text containing for example some sequences of chars and\\n    \u002F\u002F their diacritics (e.g. \\\"é\\\".normalize(\\\"NFKD\\\") shows 1 char when it's 2).\\n    \u002F\u002F Positioning diacritics is really something we don't want to do here.\\n    \u002F\u002F So if a font has a glyph for a acute accent and one for \\\"e\\\" then we won't\\n    \u002F\u002F get any encoding issues but we'll render \\\"e\\\" and then \\\"´\\\".\\n    \u002F\u002F It's why we normalize the string. We use NFC to preserve the initial\\n    \u002F\u002F string, (e.g. \\\"²\\\".normalize(\\\"NFC\\\") === \\\"²\\\"\\n    \u002F\u002F but \\\"²\\\".normalize(\\\"NFKC\\\") === \\\"2\\\").\\n    \u002F\u002F\\n    \u002F\u002F TODO: it isn't a perfect solution, some chars like \\\"ẹ́\\\" will be\\n    \u002F\u002F decomposed into two chars (\\\"ẹ\\\" and \\\"´\\\"), so we should detect such\\n    \u002F\u002F situations and then use either FakeUnicodeFont or set the\\n    \u002F\u002F \u002FNeedAppearances flag.\\n    if (this.data.multiLine) {\\n      lines = value.split(\u002F\\\\r\\\\n?|\\\\n\u002F).map(line => line.normalize(\\\"NFC\\\"));\\n      lineCount = lines.length;\\n    } else {\\n      lines = [value.replace(\u002F\\\\r\\\\n?|\\\\n\u002F, \\\"\\\").normalize(\\\"NFC\\\")];\\n    }\\n\\n    const defaultPadding = 1;\\n    const defaultHPadding = 2;\\n    let totalHeight = this.data.rect[3] - this.data.rect[1];\\n    let totalWidth = this.data.rect[2] - this.data.rect[0];\\n\\n    if (rotation === 90 || rotation === 270) {\\n      [totalWidth, totalHeight] = [totalHeight, totalWidth];\\n    }\\n\\n    if (!this._defaultAppearance) {\\n      \u002F\u002F The DA is required and must be a string.\\n      \u002F\u002F If there is no font named Helvetica in the resource dictionary,\\n      \u002F\u002F the evaluator will fall back to a default font.\\n      \u002F\u002F Doing so prevents exceptions and allows saving\u002Fprinting\\n      \u002F\u002F the file as expected.\\n      this.data.defaultAppearanceData = parseDefaultAppearance(\\n        (this._defaultAppearance = \\\"\u002FHelvetica 0 Tf 0 g\\\")\\n      );\\n    }\\n\\n    let font = await WidgetAnnotation._getFontData(\\n      evaluator,\\n      task,\\n      this.data.defaultAppearanceData,\\n      this._fieldResources.mergedResources\\n    );\\n\\n    let defaultAppearance, fontSize, lineHeight;\\n    const encodedLines = [];\\n    let encodingError = false;\\n    for (const line of lines) {\\n      const encodedString = font.encodeString(line);\\n      if (encodedString.length > 1) {\\n        encodingError = true;\\n      }\\n      encodedLines.push(encodedString.join(\\\"\\\"));\\n    }\\n\\n    if (encodingError && intent & RenderingIntentFlag.SAVE) {\\n      \u002F\u002F We don't have a way to render the field, so we just rely on the\\n      \u002F\u002F \u002FNeedAppearances trick to let the different sofware correctly render\\n      \u002F\u002F this pdf.\\n      return { needAppearances: true };\\n    }\\n\\n    \u002F\u002F We check that the font is able to encode the string.\\n    if (encodingError && this._isOffscreenCanvasSupported) {\\n      \u002F\u002F If it can't then we fallback on fake unicode font (mapped to sans-serif\\n      \u002F\u002F for the rendering).\\n      \u002F\u002F It means that a printed form can be rendered differently (it depends on\\n      \u002F\u002F the sans-serif font) but at least we've something to render.\\n      \u002F\u002F In an ideal world the associated font should correctly handle the\\n      \u002F\u002F possible chars but a user can add a smiley or whatever.\\n      \u002F\u002F We could try to embed a font but it means that we must have access\\n      \u002F\u002F to the raw font file.\\n      const fontFamily = this.data.comb ? \\\"monospace\\\" : \\\"sans-serif\\\";\\n      const fakeUnicodeFont = new FakeUnicodeFont(evaluator.xref, fontFamily);\\n      const resources = fakeUnicodeFont.createFontResources(lines.join(\\\"\\\"));\\n      const newFont = resources.getRaw(\\\"Font\\\");\\n\\n      if (this._fieldResources.mergedResources.has(\\\"Font\\\")) {\\n        const oldFont = this._fieldResources.mergedResources.get(\\\"Font\\\");\\n        for (const key of newFont.getKeys()) {\\n          oldFont.set(key, newFont.getRaw(key));\\n        }\\n      } else {\\n        this._fieldResources.mergedResources.set(\\\"Font\\\", newFont);\\n      }\\n\\n      const fontName = fakeUnicodeFont.fontName.name;\\n      font = await WidgetAnnotation._getFontData(\\n        evaluator,\\n        task,\\n        { fontName, fontSize: 0 },\\n        resources\\n      );\\n\\n      for (let i = 0, ii = encodedLines.length; i \u003C ii; i++) {\\n        encodedLines[i] = stringToUTF16String(lines[i]);\\n      }\\n\\n      const savedDefaultAppearance = Object.assign(\\n        Object.create(null),\\n        this.data.defaultAppearanceData\\n      );\\n      this.data.defaultAppearanceData.fontSize = 0;\\n      this.data.defaultAppearanceData.fontName = fontName;\\n\\n      [defaultAppearance, fontSize, lineHeight] = this._computeFontSize(\\n        totalHeight - 2 * defaultPadding,\\n        totalWidth - 2 * defaultHPadding,\\n        value,\\n        font,\\n        lineCount\\n      );\\n\\n      this.data.defaultAppearanceData = savedDefaultAppearance;\\n    } else {\\n      if (!this._isOffscreenCanvasSupported) {\\n        warn(\\n          \\\"_getAppearance: OffscreenCanvas is not supported, annotation may not render correctly.\\\"\\n        );\\n      }\\n\\n      [defaultAppearance, fontSize, lineHeight] = this._computeFontSize(\\n        totalHeight - 2 * defaultPadding,\\n        totalWidth - 2 * defaultHPadding,\\n        value,\\n        font,\\n        lineCount\\n      );\\n    }\\n\\n    let descent = font.descent;\\n    if (isNaN(descent)) {\\n      descent = BASELINE_FACTOR * lineHeight;\\n    } else {\\n      descent = Math.max(\\n        BASELINE_FACTOR * lineHeight,\\n        Math.abs(descent) * fontSize\\n      );\\n    }\\n\\n    \u002F\u002F Take into account the space we have to compute the default vertical\\n    \u002F\u002F padding.\\n    const defaultVPadding = Math.min(\\n      Math.floor((totalHeight - fontSize) \u002F 2),\\n      defaultPadding\\n    );\\n    const alignment = this.data.textAlignment;\\n\\n    if (this.data.multiLine) {\\n      return this._getMultilineAppearance(\\n        defaultAppearance,\\n        encodedLines,\\n        font,\\n        fontSize,\\n        totalWidth,\\n        totalHeight,\\n        alignment,\\n        defaultHPadding,\\n        defaultVPadding,\\n        descent,\\n        lineHeight,\\n        annotationStorage\\n      );\\n    }\\n\\n    if (this.data.comb) {\\n      return this._getCombAppearance(\\n        defaultAppearance,\\n        font,\\n        encodedLines[0],\\n        fontSize,\\n        totalWidth,\\n        totalHeight,\\n        defaultHPadding,\\n        defaultVPadding,\\n        descent,\\n        lineHeight,\\n        annotationStorage\\n      );\\n    }\\n\\n    const bottomPadding = defaultVPadding + descent;\\n    if (alignment === 0 || alignment > 2) {\\n      \u002F\u002F Left alignment: nothing to do\\n      return (\\n        `\u002FTx BMC q ${colors}BT ` +\\n        defaultAppearance +\\n        ` 1 0 0 1 ${numberToString(defaultHPadding)} ${numberToString(\\n          bottomPadding\\n        )} Tm (${escapeString(encodedLines[0])}) Tj` +\\n        \\\" ET Q EMC\\\"\\n      );\\n    }\\n\\n    const prevInfo = { shift: 0 };\\n    const renderedText = this._renderText(\\n      encodedLines[0],\\n      font,\\n      fontSize,\\n      totalWidth,\\n      alignment,\\n      prevInfo,\\n      defaultHPadding,\\n      bottomPadding\\n    );\\n    return (\\n      `\u002FTx BMC q ${colors}BT ` +\\n      defaultAppearance +\\n      ` 1 0 0 1 0 0 Tm ${renderedText}` +\\n      \\\" ET Q EMC\\\"\\n    );\\n  }\\n\\n  static async _getFontData(evaluator, task, appearanceData, resources) {\\n    const operatorList = new OperatorList();\\n    const initialState = {\\n      font: null,\\n      clone() {\\n        return this;\\n      },\\n    };\\n\\n    const { fontName, fontSize } = appearanceData;\\n    await evaluator.handleSetFont(\\n      resources,\\n      [fontName && Name.get(fontName), fontSize],\\n      \u002F* fontRef = *\u002F null,\\n      operatorList,\\n      task,\\n      initialState,\\n      \u002F* fallbackFontDict = *\u002F null\\n    );\\n\\n    return initialState.font;\\n  }\\n\\n  _getTextWidth(text, font) {\\n    return (\\n      font\\n        .charsToGlyphs(text)\\n        .reduce((width, glyph) => width + glyph.width, 0) \u002F 1000\\n    );\\n  }\\n\\n  _computeFontSize(height, width, text, font, lineCount) {\\n    let { fontSize } = this.data.defaultAppearanceData;\\n    let lineHeight = (fontSize || 12) * LINE_FACTOR,\\n      numberOfLines = Math.round(height \u002F lineHeight);\\n\\n    if (!fontSize) {\\n      \u002F\u002F A zero value for size means that the font shall be auto-sized:\\n      \u002F\u002F its size shall be computed as a function of the height of the\\n      \u002F\u002F annotation rectangle (see 12.7.3.3).\\n\\n      const roundWithTwoDigits = x => Math.floor(x * 100) \u002F 100;\\n\\n      if (lineCount === -1) {\\n        const textWidth = this._getTextWidth(text, font);\\n        fontSize = roundWithTwoDigits(\\n          Math.min(\\n            height \u002F LINE_FACTOR,\\n            textWidth > width ? width \u002F textWidth : Infinity\\n          )\\n        );\\n        numberOfLines = 1;\\n      } else {\\n        const lines = text.split(\u002F\\\\r\\\\n?|\\\\n\u002F);\\n        const cachedLines = [];\\n        for (const line of lines) {\\n          const encoded = font.encodeString(line).join(\\\"\\\");\\n          const glyphs = font.charsToGlyphs(encoded);\\n          const positions = font.getCharPositions(encoded);\\n          cachedLines.push({\\n            line: encoded,\\n            glyphs,\\n            positions,\\n          });\\n        }\\n\\n        const isTooBig = fsize => {\\n          \u002F\u002F Return true when the text doesn't fit the given height.\\n          let totalHeight = 0;\\n          for (const cache of cachedLines) {\\n            const chunks = this._splitLine(null, font, fsize, width, cache);\\n            totalHeight += chunks.length * fsize;\\n            if (totalHeight > height) {\\n              return true;\\n            }\\n          }\\n          return false;\\n        };\\n\\n        \u002F\u002F Hard to guess how many lines there are.\\n        \u002F\u002F The field may have been sized to have 10 lines\\n        \u002F\u002F and the user entered only 1 so if we get font size from\\n        \u002F\u002F height and number of lines then we'll get something too big.\\n        \u002F\u002F So we compute a fake number of lines based on height and\\n        \u002F\u002F a font size equal to 12 (this is the default font size in\\n        \u002F\u002F Acrobat).\\n        \u002F\u002F Then we'll adjust font size to what we have really.\\n        numberOfLines = Math.max(numberOfLines, lineCount);\\n\\n        while (true) {\\n          lineHeight = height \u002F numberOfLines;\\n          fontSize = roundWithTwoDigits(lineHeight \u002F LINE_FACTOR);\\n\\n          if (isTooBig(fontSize)) {\\n            numberOfLines++;\\n            continue;\\n          }\\n\\n          break;\\n        }\\n      }\\n\\n      const { fontName, fontColor } = this.data.defaultAppearanceData;\\n      this._defaultAppearance = createDefaultAppearance({\\n        fontSize,\\n        fontName,\\n        fontColor,\\n      });\\n    }\\n\\n    return [this._defaultAppearance, fontSize, height \u002F numberOfLines];\\n  }\\n\\n  _renderText(\\n    text,\\n    font,\\n    fontSize,\\n    totalWidth,\\n    alignment,\\n    prevInfo,\\n    hPadding,\\n    vPadding\\n  ) {\\n    \u002F\u002F TODO: we need to take into account (if possible) how the text\\n    \u002F\u002F is rendered. For example in arabic, the cumulated width of some\\n    \u002F\u002F glyphs isn't equal to the width of the rendered glyphs because\\n    \u002F\u002F of ligatures.\\n    let shift;\\n    if (alignment === 1) {\\n      \u002F\u002F Center\\n      const width = this._getTextWidth(text, font) * fontSize;\\n      shift = (totalWidth - width) \u002F 2;\\n    } else if (alignment === 2) {\\n      \u002F\u002F Right\\n      const width = this._getTextWidth(text, font) * fontSize;\\n      shift = totalWidth - width - hPadding;\\n    } else {\\n      shift = hPadding;\\n    }\\n    const shiftStr = numberToString(shift - prevInfo.shift);\\n    prevInfo.shift = shift;\\n    vPadding = numberToString(vPadding);\\n\\n    return `${shiftStr} ${vPadding} Td (${escapeString(text)}) Tj`;\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _getSaveFieldResources(xref) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        this.data.defaultAppearanceData,\\n        \\\"Expected `_defaultAppearanceData` to have been set.\\\"\\n      );\\n    }\\n    const { localResources, appearanceResources, acroFormResources } =\\n      this._fieldResources;\\n\\n    const fontName = this.data.defaultAppearanceData?.fontName;\\n    if (!fontName) {\\n      return localResources || Dict.empty;\\n    }\\n\\n    for (const resources of [localResources, appearanceResources]) {\\n      if (resources instanceof Dict) {\\n        const localFont = resources.get(\\\"Font\\\");\\n        if (localFont instanceof Dict && localFont.has(fontName)) {\\n          return resources;\\n        }\\n      }\\n    }\\n    if (acroFormResources instanceof Dict) {\\n      const acroFormFont = acroFormResources.get(\\\"Font\\\");\\n      if (acroFormFont instanceof Dict && acroFormFont.has(fontName)) {\\n        const subFontDict = new Dict(xref);\\n        subFontDict.set(fontName, acroFormFont.getRaw(fontName));\\n\\n        const subResourcesDict = new Dict(xref);\\n        subResourcesDict.set(\\\"Font\\\", subFontDict);\\n\\n        return Dict.merge({\\n          xref,\\n          dictArray: [subResourcesDict, localResources],\\n          mergeSubDicts: true,\\n        });\\n      }\\n    }\\n    return localResources || Dict.empty;\\n  }\\n\\n  getFieldObject() {\\n    return null;\\n  }\\n}\\n\\nclass TextWidgetAnnotation extends WidgetAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    this.data.hasOwnCanvas = this.data.readOnly && !this.data.noHTML;\\n    this._hasText = true;\\n\\n    const dict = params.dict;\\n\\n    \u002F\u002F The field value is always a string.\\n    if (typeof this.data.fieldValue !== \\\"string\\\") {\\n      this.data.fieldValue = \\\"\\\";\\n    }\\n\\n    \u002F\u002F Determine the alignment of text in the field.\\n    let alignment = getInheritableProperty({ dict, key: \\\"Q\\\" });\\n    if (!Number.isInteger(alignment) || alignment \u003C 0 || alignment > 2) {\\n      alignment = null;\\n    }\\n    this.data.textAlignment = alignment;\\n\\n    \u002F\u002F Determine the maximum length of text in the field.\\n    let maximumLength = getInheritableProperty({ dict, key: \\\"MaxLen\\\" });\\n    if (!Number.isInteger(maximumLength) || maximumLength \u003C 0) {\\n      maximumLength = 0;\\n    }\\n    this.data.maxLen = maximumLength;\\n\\n    \u002F\u002F Process field flags for the display layer.\\n    this.data.multiLine = this.hasFieldFlag(AnnotationFieldFlag.MULTILINE);\\n    this.data.comb =\\n      this.hasFieldFlag(AnnotationFieldFlag.COMB) &&\\n      !this.hasFieldFlag(AnnotationFieldFlag.MULTILINE) &&\\n      !this.hasFieldFlag(AnnotationFieldFlag.PASSWORD) &&\\n      !this.hasFieldFlag(AnnotationFieldFlag.FILESELECT) &&\\n      this.data.maxLen !== 0;\\n    this.data.doNotScroll = this.hasFieldFlag(AnnotationFieldFlag.DONOTSCROLL);\\n  }\\n\\n  get hasTextContent() {\\n    return !!this.appearance && !this._needAppearances;\\n  }\\n\\n  _getCombAppearance(\\n    defaultAppearance,\\n    font,\\n    text,\\n    fontSize,\\n    width,\\n    height,\\n    hPadding,\\n    vPadding,\\n    descent,\\n    lineHeight,\\n    annotationStorage\\n  ) {\\n    const combWidth = width \u002F this.data.maxLen;\\n    \u002F\u002F Empty or it has a trailing whitespace.\\n    const colors = this.getBorderAndBackgroundAppearances(annotationStorage);\\n\\n    const buf = [];\\n    const positions = font.getCharPositions(text);\\n    for (const [start, end] of positions) {\\n      buf.push(`(${escapeString(text.substring(start, end))}) Tj`);\\n    }\\n\\n    const renderedComb = buf.join(` ${numberToString(combWidth)} 0 Td `);\\n    return (\\n      `\u002FTx BMC q ${colors}BT ` +\\n      defaultAppearance +\\n      ` 1 0 0 1 ${numberToString(hPadding)} ${numberToString(\\n        vPadding + descent\\n      )} Tm ${renderedComb}` +\\n      \\\" ET Q EMC\\\"\\n    );\\n  }\\n\\n  _getMultilineAppearance(\\n    defaultAppearance,\\n    lines,\\n    font,\\n    fontSize,\\n    width,\\n    height,\\n    alignment,\\n    hPadding,\\n    vPadding,\\n    descent,\\n    lineHeight,\\n    annotationStorage\\n  ) {\\n    const buf = [];\\n    const totalWidth = width - 2 * hPadding;\\n    const prevInfo = { shift: 0 };\\n    for (let i = 0, ii = lines.length; i \u003C ii; i++) {\\n      const line = lines[i];\\n      const chunks = this._splitLine(line, font, fontSize, totalWidth);\\n      for (let j = 0, jj = chunks.length; j \u003C jj; j++) {\\n        const chunk = chunks[j];\\n        const vShift =\\n          i === 0 && j === 0 ? -vPadding - (lineHeight - descent) : -lineHeight;\\n        buf.push(\\n          this._renderText(\\n            chunk,\\n            font,\\n            fontSize,\\n            width,\\n            alignment,\\n            prevInfo,\\n            hPadding,\\n            vShift\\n          )\\n        );\\n      }\\n    }\\n\\n    \u002F\u002F Empty or it has a trailing whitespace.\\n    const colors = this.getBorderAndBackgroundAppearances(annotationStorage);\\n    const renderedText = buf.join(\\\"\\\\n\\\");\\n\\n    return (\\n      `\u002FTx BMC q ${colors}BT ` +\\n      defaultAppearance +\\n      ` 1 0 0 1 0 ${numberToString(height)} Tm ${renderedText}` +\\n      \\\" ET Q EMC\\\"\\n    );\\n  }\\n\\n  _splitLine(line, font, fontSize, width, cache = {}) {\\n    line = cache.line || line;\\n\\n    const glyphs = cache.glyphs || font.charsToGlyphs(line);\\n\\n    if (glyphs.length \u003C= 1) {\\n      \u002F\u002F Nothing to split\\n      return [line];\\n    }\\n\\n    const positions = cache.positions || font.getCharPositions(line);\\n    const scale = fontSize \u002F 1000;\\n    const chunks = [];\\n\\n    let lastSpacePosInStringStart = -1,\\n      lastSpacePosInStringEnd = -1,\\n      lastSpacePos = -1,\\n      startChunk = 0,\\n      currentWidth = 0;\\n\\n    for (let i = 0, ii = glyphs.length; i \u003C ii; i++) {\\n      const [start, end] = positions[i];\\n      const glyph = glyphs[i];\\n      const glyphWidth = glyph.width * scale;\\n      if (glyph.unicode === \\\" \\\") {\\n        if (currentWidth + glyphWidth > width) {\\n          \u002F\u002F We can break here\\n          chunks.push(line.substring(startChunk, start));\\n          startChunk = start;\\n          currentWidth = glyphWidth;\\n          lastSpacePosInStringStart = -1;\\n          lastSpacePos = -1;\\n        } else {\\n          currentWidth += glyphWidth;\\n          lastSpacePosInStringStart = start;\\n          lastSpacePosInStringEnd = end;\\n          lastSpacePos = i;\\n        }\\n      } else if (currentWidth + glyphWidth > width) {\\n        \u002F\u002F We must break to the last white position (if available)\\n        if (lastSpacePosInStringStart !== -1) {\\n          chunks.push(line.substring(startChunk, lastSpacePosInStringEnd));\\n          startChunk = lastSpacePosInStringEnd;\\n          i = lastSpacePos + 1;\\n          lastSpacePosInStringStart = -1;\\n          currentWidth = 0;\\n        } else {\\n          \u002F\u002F Just break in the middle of the word\\n          chunks.push(line.substring(startChunk, start));\\n          startChunk = start;\\n          currentWidth = glyphWidth;\\n        }\\n      } else {\\n        currentWidth += glyphWidth;\\n      }\\n    }\\n\\n    if (startChunk \u003C line.length) {\\n      chunks.push(line.substring(startChunk, line.length));\\n    }\\n\\n    return chunks;\\n  }\\n\\n  getFieldObject() {\\n    return {\\n      id: this.data.id,\\n      value: this.data.fieldValue,\\n      defaultValue: this.data.defaultFieldValue || \\\"\\\",\\n      multiline: this.data.multiLine,\\n      password: this.hasFieldFlag(AnnotationFieldFlag.PASSWORD),\\n      charLimit: this.data.maxLen,\\n      comb: this.data.comb,\\n      editable: !this.data.readOnly,\\n      hidden: this.data.hidden,\\n      name: this.data.fieldName,\\n      rect: this.data.rect,\\n      actions: this.data.actions,\\n      page: this.data.pageIndex,\\n      strokeColor: this.data.borderColor,\\n      fillColor: this.data.backgroundColor,\\n      rotation: this.rotation,\\n      type: \\\"text\\\",\\n    };\\n  }\\n}\\n\\nclass ButtonWidgetAnnotation extends WidgetAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    this.checkedAppearance = null;\\n    this.uncheckedAppearance = null;\\n\\n    this.data.checkBox =\\n      !this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&\\n      !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\\n    this.data.radioButton =\\n      this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&\\n      !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\\n    this.data.pushButton = this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\\n    this.data.isTooltipOnly = false;\\n\\n    if (this.data.checkBox) {\\n      this._processCheckBox(params);\\n    } else if (this.data.radioButton) {\\n      this._processRadioButton(params);\\n    } else if (this.data.pushButton) {\\n      this.data.hasOwnCanvas = true;\\n      this.data.noHTML = false;\\n      this._processPushButton(params);\\n    } else {\\n      warn(\\\"Invalid field flags for button widget annotation\\\");\\n    }\\n  }\\n\\n  async getOperatorList(\\n    evaluator,\\n    task,\\n    intent,\\n    renderForms,\\n    annotationStorage\\n  ) {\\n    if (this.data.pushButton) {\\n      return super.getOperatorList(\\n        evaluator,\\n        task,\\n        intent,\\n        false, \u002F\u002F we use normalAppearance to render the button\\n        annotationStorage\\n      );\\n    }\\n\\n    let value = null;\\n    let rotation = null;\\n    if (annotationStorage) {\\n      const storageEntry = annotationStorage.get(this.data.id);\\n      value = storageEntry ? storageEntry.value : null;\\n      rotation = storageEntry ? storageEntry.rotation : null;\\n    }\\n\\n    if (value === null && this.appearance) {\\n      \u002F\u002F Nothing in the annotationStorage.\\n      \u002F\u002F But we've a default appearance so use it.\\n      return super.getOperatorList(\\n        evaluator,\\n        task,\\n        intent,\\n        renderForms,\\n        annotationStorage\\n      );\\n    }\\n\\n    if (value === null || value === undefined) {\\n      \u002F\u002F There is no default appearance so use the one derived\\n      \u002F\u002F from the field value.\\n      value = this.data.checkBox\\n        ? this.data.fieldValue === this.data.exportValue\\n        : this.data.fieldValue === this.data.buttonValue;\\n    }\\n\\n    const appearance = value\\n      ? this.checkedAppearance\\n      : this.uncheckedAppearance;\\n    if (appearance) {\\n      const savedAppearance = this.appearance;\\n      const savedMatrix = lookupMatrix(\\n        appearance.dict.getArray(\\\"Matrix\\\"),\\n        IDENTITY_MATRIX\\n      );\\n\\n      if (rotation) {\\n        appearance.dict.set(\\n          \\\"Matrix\\\",\\n          this.getRotationMatrix(annotationStorage)\\n        );\\n      }\\n\\n      this.appearance = appearance;\\n      const operatorList = super.getOperatorList(\\n        evaluator,\\n        task,\\n        intent,\\n        renderForms,\\n        annotationStorage\\n      );\\n      this.appearance = savedAppearance;\\n      appearance.dict.set(\\\"Matrix\\\", savedMatrix);\\n      return operatorList;\\n    }\\n\\n    \u002F\u002F No appearance\\n    return {\\n      opList: new OperatorList(),\\n      separateForm: false,\\n      separateCanvas: false,\\n    };\\n  }\\n\\n  async save(evaluator, task, annotationStorage) {\\n    if (this.data.checkBox) {\\n      return this._saveCheckbox(evaluator, task, annotationStorage);\\n    }\\n\\n    if (this.data.radioButton) {\\n      return this._saveRadioButton(evaluator, task, annotationStorage);\\n    }\\n\\n    \u002F\u002F Nothing to save\\n    return null;\\n  }\\n\\n  async _saveCheckbox(evaluator, task, annotationStorage) {\\n    if (!annotationStorage) {\\n      return null;\\n    }\\n    const storageEntry = annotationStorage.get(this.data.id);\\n    let rotation = storageEntry?.rotation,\\n      value = storageEntry?.value;\\n\\n    if (rotation === undefined) {\\n      if (value === undefined) {\\n        return null;\\n      }\\n\\n      const defaultValue = this.data.fieldValue === this.data.exportValue;\\n      if (defaultValue === value) {\\n        return null;\\n      }\\n    }\\n\\n    const dict = evaluator.xref.fetchIfRef(this.ref);\\n    if (!(dict instanceof Dict)) {\\n      return null;\\n    }\\n\\n    if (rotation === undefined) {\\n      rotation = this.rotation;\\n    }\\n    if (value === undefined) {\\n      value = this.data.fieldValue === this.data.exportValue;\\n    }\\n\\n    const xfa = {\\n      path: this.data.fieldName,\\n      value: value ? this.data.exportValue : \\\"\\\",\\n    };\\n\\n    const name = Name.get(value ? this.data.exportValue : \\\"Off\\\");\\n    dict.set(\\\"V\\\", name);\\n    dict.set(\\\"AS\\\", name);\\n    dict.set(\\\"M\\\", `D:${getModificationDate()}`);\\n\\n    const maybeMK = this._getMKDict(rotation);\\n    if (maybeMK) {\\n      dict.set(\\\"MK\\\", maybeMK);\\n    }\\n\\n    const buffer = [];\\n    await writeObject(this.ref, dict, buffer, evaluator.xref);\\n\\n    return [{ ref: this.ref, data: buffer.join(\\\"\\\"), xfa }];\\n  }\\n\\n  async _saveRadioButton(evaluator, task, annotationStorage) {\\n    if (!annotationStorage) {\\n      return null;\\n    }\\n    const storageEntry = annotationStorage.get(this.data.id);\\n    let rotation = storageEntry?.rotation,\\n      value = storageEntry?.value;\\n\\n    if (rotation === undefined) {\\n      if (value === undefined) {\\n        return null;\\n      }\\n\\n      const defaultValue = this.data.fieldValue === this.data.buttonValue;\\n      if (defaultValue === value) {\\n        return null;\\n      }\\n    }\\n\\n    const dict = evaluator.xref.fetchIfRef(this.ref);\\n    if (!(dict instanceof Dict)) {\\n      return null;\\n    }\\n\\n    if (value === undefined) {\\n      value = this.data.fieldValue === this.data.buttonValue;\\n    }\\n\\n    if (rotation === undefined) {\\n      rotation = this.rotation;\\n    }\\n\\n    const xfa = {\\n      path: this.data.fieldName,\\n      value: value ? this.data.buttonValue : \\\"\\\",\\n    };\\n\\n    const name = Name.get(value ? this.data.buttonValue : \\\"Off\\\");\\n    const buffer = [];\\n    let parentData = null;\\n\\n    if (value) {\\n      if (this.parent instanceof Ref) {\\n        const parent = evaluator.xref.fetch(this.parent);\\n        parent.set(\\\"V\\\", name);\\n        await writeObject(this.parent, parent, buffer, evaluator.xref);\\n        parentData = buffer.join(\\\"\\\");\\n        buffer.length = 0;\\n      } else if (this.parent instanceof Dict) {\\n        this.parent.set(\\\"V\\\", name);\\n      }\\n    }\\n\\n    dict.set(\\\"AS\\\", name);\\n    dict.set(\\\"M\\\", `D:${getModificationDate()}`);\\n\\n    const maybeMK = this._getMKDict(rotation);\\n    if (maybeMK) {\\n      dict.set(\\\"MK\\\", maybeMK);\\n    }\\n\\n    await writeObject(this.ref, dict, buffer, evaluator.xref);\\n    const newRefs = [{ ref: this.ref, data: buffer.join(\\\"\\\"), xfa }];\\n    if (parentData) {\\n      newRefs.push({ ref: this.parent, data: parentData, xfa: null });\\n    }\\n\\n    return newRefs;\\n  }\\n\\n  _getDefaultCheckedAppearance(params, type) {\\n    const width = this.data.rect[2] - this.data.rect[0];\\n    const height = this.data.rect[3] - this.data.rect[1];\\n    const bbox = [0, 0, width, height];\\n\\n    \u002F\u002F Ratio used to have a mark slightly smaller than the bbox.\\n    const FONT_RATIO = 0.8;\\n    const fontSize = Math.min(width, height) * FONT_RATIO;\\n\\n    \u002F\u002F Char Metrics\\n    \u002F\u002F Widths came from widths for ZapfDingbats.\\n    \u002F\u002F Heights are guessed with Fontforge and FoxitDingbats.pfb.\\n    let metrics, char;\\n    if (type === \\\"check\\\") {\\n      \u002F\u002F Char 33 (2713 in unicode)\\n      metrics = {\\n        width: 0.755 * fontSize,\\n        height: 0.705 * fontSize,\\n      };\\n      char = \\\"\\\\x33\\\";\\n    } else if (type === \\\"disc\\\") {\\n      \u002F\u002F Char 6C (25CF in unicode)\\n      metrics = {\\n        width: 0.791 * fontSize,\\n        height: 0.705 * fontSize,\\n      };\\n      char = \\\"\\\\x6C\\\";\\n    } else {\\n      unreachable(`_getDefaultCheckedAppearance - unsupported type: ${type}`);\\n    }\\n\\n    \u002F\u002F Values to center the glyph in the bbox.\\n    const xShift = numberToString((width - metrics.width) \u002F 2);\\n    const yShift = numberToString((height - metrics.height) \u002F 2);\\n\\n    const appearance = `q BT \u002FPdfJsZaDb ${fontSize} Tf 0 g ${xShift} ${yShift} Td (${char}) Tj ET Q`;\\n\\n    const appearanceStreamDict = new Dict(params.xref);\\n    appearanceStreamDict.set(\\\"FormType\\\", 1);\\n    appearanceStreamDict.set(\\\"Subtype\\\", Name.get(\\\"Form\\\"));\\n    appearanceStreamDict.set(\\\"Type\\\", Name.get(\\\"XObject\\\"));\\n    appearanceStreamDict.set(\\\"BBox\\\", bbox);\\n    appearanceStreamDict.set(\\\"Matrix\\\", [1, 0, 0, 1, 0, 0]);\\n    appearanceStreamDict.set(\\\"Length\\\", appearance.length);\\n\\n    const resources = new Dict(params.xref);\\n    const font = new Dict(params.xref);\\n    font.set(\\\"PdfJsZaDb\\\", this.fallbackFontDict);\\n    resources.set(\\\"Font\\\", font);\\n\\n    appearanceStreamDict.set(\\\"Resources\\\", resources);\\n\\n    this.checkedAppearance = new StringStream(appearance);\\n    this.checkedAppearance.dict = appearanceStreamDict;\\n\\n    this._streams.push(this.checkedAppearance);\\n  }\\n\\n  _processCheckBox(params) {\\n    const customAppearance = params.dict.get(\\\"AP\\\");\\n    if (!(customAppearance instanceof Dict)) {\\n      return;\\n    }\\n\\n    const normalAppearance = customAppearance.get(\\\"N\\\");\\n    if (!(normalAppearance instanceof Dict)) {\\n      return;\\n    }\\n\\n    \u002F\u002F See https:\u002F\u002Fbugzilla.mozilla.org\u002Fshow_bug.cgi?id=1722036.\\n    \u002F\u002F If we've an AS and a V then take AS.\\n    const asValue = this._decodeFormValue(params.dict.get(\\\"AS\\\"));\\n    if (typeof asValue === \\\"string\\\") {\\n      this.data.fieldValue = asValue;\\n    }\\n\\n    const yes =\\n      this.data.fieldValue !== null && this.data.fieldValue !== \\\"Off\\\"\\n        ? this.data.fieldValue\\n        : \\\"Yes\\\";\\n\\n    const exportValues = normalAppearance.getKeys();\\n    if (exportValues.length === 0) {\\n      exportValues.push(\\\"Off\\\", yes);\\n    } else if (exportValues.length === 1) {\\n      if (exportValues[0] === \\\"Off\\\") {\\n        exportValues.push(yes);\\n      } else {\\n        exportValues.unshift(\\\"Off\\\");\\n      }\\n    } else if (exportValues.includes(yes)) {\\n      exportValues.length = 0;\\n      exportValues.push(\\\"Off\\\", yes);\\n    } else {\\n      const otherYes = exportValues.find(v => v !== \\\"Off\\\");\\n      exportValues.length = 0;\\n      exportValues.push(\\\"Off\\\", otherYes);\\n    }\\n\\n    \u002F\u002F Don't use a \\\"V\\\" entry pointing to a non-existent appearance state,\\n    \u002F\u002F see e.g. bug1720411.pdf where it's an *empty* Name-instance.\\n    if (!exportValues.includes(this.data.fieldValue)) {\\n      this.data.fieldValue = \\\"Off\\\";\\n    }\\n\\n    this.data.exportValue = exportValues[1];\\n\\n    const checkedAppearance = normalAppearance.get(this.data.exportValue);\\n    this.checkedAppearance =\\n      checkedAppearance instanceof BaseStream ? checkedAppearance : null;\\n    const uncheckedAppearance = normalAppearance.get(\\\"Off\\\");\\n    this.uncheckedAppearance =\\n      uncheckedAppearance instanceof BaseStream ? uncheckedAppearance : null;\\n\\n    if (this.checkedAppearance) {\\n      this._streams.push(this.checkedAppearance);\\n    } else {\\n      this._getDefaultCheckedAppearance(params, \\\"check\\\");\\n    }\\n    if (this.uncheckedAppearance) {\\n      this._streams.push(this.uncheckedAppearance);\\n    }\\n    this._fallbackFontDict = this.fallbackFontDict;\\n    if (this.data.defaultFieldValue === null) {\\n      this.data.defaultFieldValue = \\\"Off\\\";\\n    }\\n  }\\n\\n  _processRadioButton(params) {\\n    this.data.buttonValue = null;\\n\\n    \u002F\u002F The parent field's `V` entry holds a `Name` object with the appearance\\n    \u002F\u002F state of whichever child field is currently in the \\\"on\\\" state.\\n    const fieldParent = params.dict.get(\\\"Parent\\\");\\n    if (fieldParent instanceof Dict) {\\n      this.parent = params.dict.getRaw(\\\"Parent\\\");\\n      const fieldParentValue = fieldParent.get(\\\"V\\\");\\n      if (fieldParentValue instanceof Name) {\\n        this.data.fieldValue = this._decodeFormValue(fieldParentValue);\\n      }\\n    }\\n\\n    \u002F\u002F The button's value corresponds to its appearance state.\\n    const appearanceStates = params.dict.get(\\\"AP\\\");\\n    if (!(appearanceStates instanceof Dict)) {\\n      return;\\n    }\\n    const normalAppearance = appearanceStates.get(\\\"N\\\");\\n    if (!(normalAppearance instanceof Dict)) {\\n      return;\\n    }\\n    for (const key of normalAppearance.getKeys()) {\\n      if (key !== \\\"Off\\\") {\\n        this.data.buttonValue = this._decodeFormValue(key);\\n        break;\\n      }\\n    }\\n\\n    const checkedAppearance = normalAppearance.get(this.data.buttonValue);\\n    this.checkedAppearance =\\n      checkedAppearance instanceof BaseStream ? checkedAppearance : null;\\n    const uncheckedAppearance = normalAppearance.get(\\\"Off\\\");\\n    this.uncheckedAppearance =\\n      uncheckedAppearance instanceof BaseStream ? uncheckedAppearance : null;\\n\\n    if (this.checkedAppearance) {\\n      this._streams.push(this.checkedAppearance);\\n    } else {\\n      this._getDefaultCheckedAppearance(params, \\\"disc\\\");\\n    }\\n    if (this.uncheckedAppearance) {\\n      this._streams.push(this.uncheckedAppearance);\\n    }\\n    this._fallbackFontDict = this.fallbackFontDict;\\n    if (this.data.defaultFieldValue === null) {\\n      this.data.defaultFieldValue = \\\"Off\\\";\\n    }\\n  }\\n\\n  _processPushButton(params) {\\n    const { dict, annotationGlobals } = params;\\n\\n    if (!dict.has(\\\"A\\\") && !dict.has(\\\"AA\\\") && !this.data.alternativeText) {\\n      warn(\\\"Push buttons without action dictionaries are not supported\\\");\\n      return;\\n    }\\n\\n    this.data.isTooltipOnly = !dict.has(\\\"A\\\") && !dict.has(\\\"AA\\\");\\n\\n    Catalog.parseDestDictionary({\\n      destDict: dict,\\n      resultObj: this.data,\\n      docBaseUrl: annotationGlobals.baseUrl,\\n      docAttachments: annotationGlobals.attachments,\\n    });\\n  }\\n\\n  getFieldObject() {\\n    let type = \\\"button\\\";\\n    let exportValues;\\n    if (this.data.checkBox) {\\n      type = \\\"checkbox\\\";\\n      exportValues = this.data.exportValue;\\n    } else if (this.data.radioButton) {\\n      type = \\\"radiobutton\\\";\\n      exportValues = this.data.buttonValue;\\n    }\\n    return {\\n      id: this.data.id,\\n      value: this.data.fieldValue || \\\"Off\\\",\\n      defaultValue: this.data.defaultFieldValue,\\n      exportValues,\\n      editable: !this.data.readOnly,\\n      name: this.data.fieldName,\\n      rect: this.data.rect,\\n      hidden: this.data.hidden,\\n      actions: this.data.actions,\\n      page: this.data.pageIndex,\\n      strokeColor: this.data.borderColor,\\n      fillColor: this.data.backgroundColor,\\n      rotation: this.rotation,\\n      type,\\n    };\\n  }\\n\\n  get fallbackFontDict() {\\n    const dict = new Dict();\\n    dict.set(\\\"BaseFont\\\", Name.get(\\\"ZapfDingbats\\\"));\\n    dict.set(\\\"Type\\\", Name.get(\\\"FallbackType\\\"));\\n    dict.set(\\\"Subtype\\\", Name.get(\\\"FallbackType\\\"));\\n    dict.set(\\\"Encoding\\\", Name.get(\\\"ZapfDingbatsEncoding\\\"));\\n\\n    return shadow(this, \\\"fallbackFontDict\\\", dict);\\n  }\\n}\\n\\nclass ChoiceWidgetAnnotation extends WidgetAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    const { dict, xref } = params;\\n\\n    this.indices = dict.getArray(\\\"I\\\");\\n    this.hasIndices = Array.isArray(this.indices) && this.indices.length > 0;\\n\\n    \u002F\u002F Determine the options. The options array may consist of strings or\\n    \u002F\u002F arrays. If the array consists of arrays, then the first element of\\n    \u002F\u002F each array is the export value and the second element of each array is\\n    \u002F\u002F the display value. If the array consists of strings, then these\\n    \u002F\u002F represent both the export and display value. In this case, we convert\\n    \u002F\u002F it to an array of arrays as well for convenience in the display layer.\\n    \u002F\u002F Note that the specification does not state that the `Opt` field is\\n    \u002F\u002F inheritable, but in practice PDF generators do make annotations\\n    \u002F\u002F inherit the options from a parent annotation (issue 8094).\\n    this.data.options = [];\\n\\n    const options = getInheritableProperty({ dict, key: \\\"Opt\\\" });\\n    if (Array.isArray(options)) {\\n      for (let i = 0, ii = options.length; i \u003C ii; i++) {\\n        const option = xref.fetchIfRef(options[i]);\\n        const isOptionArray = Array.isArray(option);\\n\\n        this.data.options[i] = {\\n          exportValue: this._decodeFormValue(\\n            isOptionArray ? xref.fetchIfRef(option[0]) : option\\n          ),\\n          displayValue: this._decodeFormValue(\\n            isOptionArray ? xref.fetchIfRef(option[1]) : option\\n          ),\\n        };\\n      }\\n    }\\n\\n    if (!this.hasIndices) {\\n      \u002F\u002F The field value can be `null` if no item is selected, a string if one\\n      \u002F\u002F item is selected or an array of strings if multiple items are selected.\\n      \u002F\u002F For consistency in the API and convenience in the display layer, we\\n      \u002F\u002F always make the field value an array with zero, one or multiple items.\\n      if (typeof this.data.fieldValue === \\\"string\\\") {\\n        this.data.fieldValue = [this.data.fieldValue];\\n      } else if (!this.data.fieldValue) {\\n        this.data.fieldValue = [];\\n      }\\n    } else {\\n      \u002F\u002F The specs say that we should have an indices array only with\\n      \u002F\u002F multiselectable Choice and the \\\"V\\\" entry should have the\\n      \u002F\u002F precedence, but Acrobat itself is using it whatever the\\n      \u002F\u002F the \\\"V\\\" entry is (see bug 1770750).\\n      this.data.fieldValue = [];\\n      const ii = this.data.options.length;\\n      for (const i of this.indices) {\\n        if (Number.isInteger(i) && i >= 0 && i \u003C ii) {\\n          this.data.fieldValue.push(this.data.options[i].exportValue);\\n        }\\n      }\\n    }\\n\\n    \u002F\u002F Process field flags for the display layer.\\n    this.data.combo = this.hasFieldFlag(AnnotationFieldFlag.COMBO);\\n    this.data.multiSelect = this.hasFieldFlag(AnnotationFieldFlag.MULTISELECT);\\n    this._hasText = true;\\n  }\\n\\n  getFieldObject() {\\n    const type = this.data.combo ? \\\"combobox\\\" : \\\"listbox\\\";\\n    const value =\\n      this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null;\\n    return {\\n      id: this.data.id,\\n      value,\\n      defaultValue: this.data.defaultFieldValue,\\n      editable: !this.data.readOnly,\\n      name: this.data.fieldName,\\n      rect: this.data.rect,\\n      numItems: this.data.fieldValue.length,\\n      multipleSelection: this.data.multiSelect,\\n      hidden: this.data.hidden,\\n      actions: this.data.actions,\\n      items: this.data.options,\\n      page: this.data.pageIndex,\\n      strokeColor: this.data.borderColor,\\n      fillColor: this.data.backgroundColor,\\n      rotation: this.rotation,\\n      type,\\n    };\\n  }\\n\\n  amendSavedDict(annotationStorage, dict) {\\n    if (!this.hasIndices) {\\n      return;\\n    }\\n    let values = annotationStorage?.get(this.data.id)?.value;\\n    if (!Array.isArray(values)) {\\n      values = [values];\\n    }\\n    const indices = [];\\n    const { options } = this.data;\\n    for (let i = 0, j = 0, ii = options.length; i \u003C ii; i++) {\\n      if (options[i].exportValue === values[j]) {\\n        indices.push(i);\\n        j += 1;\\n      }\\n    }\\n    dict.set(\\\"I\\\", indices);\\n  }\\n\\n  async _getAppearance(evaluator, task, intent, annotationStorage) {\\n    if (this.data.combo) {\\n      return super._getAppearance(evaluator, task, intent, annotationStorage);\\n    }\\n\\n    let exportedValue, rotation;\\n    const storageEntry = annotationStorage?.get(this.data.id);\\n    if (storageEntry) {\\n      rotation = storageEntry.rotation;\\n      exportedValue = storageEntry.value;\\n    }\\n\\n    if (\\n      rotation === undefined &&\\n      exportedValue === undefined &&\\n      !this._needAppearances\\n    ) {\\n      \u002F\u002F The annotation hasn't been rendered so use the appearance\\n      return null;\\n    }\\n\\n    if (exportedValue === undefined) {\\n      exportedValue = this.data.fieldValue;\\n    } else if (!Array.isArray(exportedValue)) {\\n      exportedValue = [exportedValue];\\n    }\\n\\n    const defaultPadding = 1;\\n    const defaultHPadding = 2;\\n    let totalHeight = this.data.rect[3] - this.data.rect[1];\\n    let totalWidth = this.data.rect[2] - this.data.rect[0];\\n\\n    if (rotation === 90 || rotation === 270) {\\n      [totalWidth, totalHeight] = [totalHeight, totalWidth];\\n    }\\n\\n    const lineCount = this.data.options.length;\\n    const valueIndices = [];\\n    for (let i = 0; i \u003C lineCount; i++) {\\n      const { exportValue } = this.data.options[i];\\n      if (exportedValue.includes(exportValue)) {\\n        valueIndices.push(i);\\n      }\\n    }\\n\\n    if (!this._defaultAppearance) {\\n      \u002F\u002F The DA is required and must be a string.\\n      \u002F\u002F If there is no font named Helvetica in the resource dictionary,\\n      \u002F\u002F the evaluator will fall back to a default font.\\n      \u002F\u002F Doing so prevents exceptions and allows saving\u002Fprinting\\n      \u002F\u002F the file as expected.\\n      this.data.defaultAppearanceData = parseDefaultAppearance(\\n        (this._defaultAppearance = \\\"\u002FHelvetica 0 Tf 0 g\\\")\\n      );\\n    }\\n\\n    const font = await WidgetAnnotation._getFontData(\\n      evaluator,\\n      task,\\n      this.data.defaultAppearanceData,\\n      this._fieldResources.mergedResources\\n    );\\n\\n    let defaultAppearance;\\n    let { fontSize } = this.data.defaultAppearanceData;\\n    if (!fontSize) {\\n      const lineHeight = (totalHeight - defaultPadding) \u002F lineCount;\\n      let lineWidth = -1;\\n      let value;\\n      for (const { displayValue } of this.data.options) {\\n        const width = this._getTextWidth(displayValue, font);\\n        if (width > lineWidth) {\\n          lineWidth = width;\\n          value = displayValue;\\n        }\\n      }\\n\\n      [defaultAppearance, fontSize] = this._computeFontSize(\\n        lineHeight,\\n        totalWidth - 2 * defaultHPadding,\\n        value,\\n        font,\\n        -1\\n      );\\n    } else {\\n      defaultAppearance = this._defaultAppearance;\\n    }\\n\\n    const lineHeight = fontSize * LINE_FACTOR;\\n    const vPadding = (lineHeight - fontSize) \u002F 2;\\n    const numberOfVisibleLines = Math.floor(totalHeight \u002F lineHeight);\\n\\n    let firstIndex = 0;\\n    if (valueIndices.length > 0) {\\n      const minIndex = Math.min(...valueIndices);\\n      const maxIndex = Math.max(...valueIndices);\\n\\n      firstIndex = Math.max(0, maxIndex - numberOfVisibleLines + 1);\\n      if (firstIndex > minIndex) {\\n        firstIndex = minIndex;\\n      }\\n    }\\n    const end = Math.min(firstIndex + numberOfVisibleLines + 1, lineCount);\\n\\n    const buf = [\\\"\u002FTx BMC q\\\", `1 1 ${totalWidth} ${totalHeight} re W n`];\\n\\n    if (valueIndices.length) {\\n      \u002F\u002F This value has been copied\u002Fpasted from annotation-choice-widget.pdf.\\n      \u002F\u002F It corresponds to rgb(153, 193, 218).\\n      buf.push(\\\"0.600006 0.756866 0.854904 rg\\\");\\n\\n      \u002F\u002F Highlight the lines in filling a blue rectangle at the selected\\n      \u002F\u002F positions.\\n      for (const index of valueIndices) {\\n        if (firstIndex \u003C= index && index \u003C end) {\\n          buf.push(\\n            `1 ${\\n              totalHeight - (index - firstIndex + 1) * lineHeight\\n            } ${totalWidth} ${lineHeight} re f`\\n          );\\n        }\\n      }\\n    }\\n    buf.push(\\\"BT\\\", defaultAppearance, `1 0 0 1 0 ${totalHeight} Tm`);\\n\\n    const prevInfo = { shift: 0 };\\n    for (let i = firstIndex; i \u003C end; i++) {\\n      const { displayValue } = this.data.options[i];\\n      const vpadding = i === firstIndex ? vPadding : 0;\\n      buf.push(\\n        this._renderText(\\n          displayValue,\\n          font,\\n          fontSize,\\n          totalWidth,\\n          0,\\n          prevInfo,\\n          defaultHPadding,\\n          -lineHeight + vpadding\\n        )\\n      );\\n    }\\n\\n    buf.push(\\\"ET Q EMC\\\");\\n\\n    return buf.join(\\\"\\\\n\\\");\\n  }\\n}\\n\\nclass SignatureWidgetAnnotation extends WidgetAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    \u002F\u002F Unset the fieldValue since it's (most likely) a `Dict` which is\\n    \u002F\u002F non-serializable and will thus cause errors when sending annotations\\n    \u002F\u002F to the main-thread (issue 10347).\\n    this.data.fieldValue = null;\\n    this.data.hasOwnCanvas = this.data.noRotate;\\n    this.data.noHTML = !this.data.hasOwnCanvas;\\n  }\\n\\n  getFieldObject() {\\n    return {\\n      id: this.data.id,\\n      value: null,\\n      page: this.data.pageIndex,\\n      type: \\\"signature\\\",\\n    };\\n  }\\n}\\n\\nclass TextAnnotation extends MarkupAnnotation {\\n  constructor(params) {\\n    const DEFAULT_ICON_SIZE = 22; \u002F\u002F px\\n\\n    super(params);\\n\\n    \u002F\u002F No rotation for Text (see 12.5.6.4).\\n    this.data.noRotate = true;\\n    this.data.hasOwnCanvas = this.data.noRotate;\\n    this.data.noHTML = false;\\n\\n    const { dict } = params;\\n    this.data.annotationType = AnnotationType.TEXT;\\n\\n    if (this.data.hasAppearance) {\\n      this.data.name = \\\"NoIcon\\\";\\n    } else {\\n      this.data.rect[1] = this.data.rect[3] - DEFAULT_ICON_SIZE;\\n      this.data.rect[2] = this.data.rect[0] + DEFAULT_ICON_SIZE;\\n      this.data.name = dict.has(\\\"Name\\\") ? dict.get(\\\"Name\\\").name : \\\"Note\\\";\\n    }\\n\\n    if (dict.has(\\\"State\\\")) {\\n      this.data.state = dict.get(\\\"State\\\") || null;\\n      this.data.stateModel = dict.get(\\\"StateModel\\\") || null;\\n    } else {\\n      this.data.state = null;\\n      this.data.stateModel = null;\\n    }\\n  }\\n}\\n\\nclass LinkAnnotation extends Annotation {\\n  constructor(params) {\\n    super(params);\\n\\n    const { dict, annotationGlobals } = params;\\n    this.data.annotationType = AnnotationType.LINK;\\n\\n    \u002F\u002F A link is never rendered on the main canvas so we must render its HTML\\n    \u002F\u002F version.\\n    this.data.noHTML = false;\\n\\n    const quadPoints = getQuadPoints(dict, this.rectangle);\\n    if (quadPoints) {\\n      this.data.quadPoints = quadPoints;\\n    }\\n\\n    \u002F\u002F The color entry for a link annotation is the color of the border.\\n    this.data.borderColor ||= this.data.color;\\n\\n    Catalog.parseDestDictionary({\\n      destDict: dict,\\n      resultObj: this.data,\\n      docBaseUrl: annotationGlobals.baseUrl,\\n      docAttachments: annotationGlobals.attachments,\\n    });\\n  }\\n}\\n\\nclass PopupAnnotation extends Annotation {\\n  constructor(params) {\\n    super(params);\\n\\n    const { dict } = params;\\n    this.data.annotationType = AnnotationType.POPUP;\\n\\n    \u002F\u002F A pop-up is never rendered on the main canvas so we must render its HTML\\n    \u002F\u002F version.\\n    this.data.noHTML = false;\\n\\n    if (\\n      this.data.rect[0] === this.data.rect[2] ||\\n      this.data.rect[1] === this.data.rect[3]\\n    ) {\\n      this.data.rect = null;\\n    }\\n\\n    let parentItem = dict.get(\\\"Parent\\\");\\n    if (!parentItem) {\\n      warn(\\\"Popup annotation has a missing or invalid parent annotation.\\\");\\n      return;\\n    }\\n    this.data.parentRect = lookupNormalRect(parentItem.getArray(\\\"Rect\\\"), null);\\n\\n    const rt = parentItem.get(\\\"RT\\\");\\n    if (isName(rt, AnnotationReplyType.GROUP)) {\\n      \u002F\u002F Subordinate annotations in a group should inherit\\n      \u002F\u002F the group attributes from the primary annotation.\\n      parentItem = parentItem.get(\\\"IRT\\\");\\n    }\\n\\n    if (!parentItem.has(\\\"M\\\")) {\\n      this.data.modificationDate = null;\\n    } else {\\n      this.setModificationDate(parentItem.get(\\\"M\\\"));\\n      this.data.modificationDate = this.modificationDate;\\n    }\\n\\n    if (!parentItem.has(\\\"C\\\")) {\\n      \u002F\u002F Fall back to the default background color.\\n      this.data.color = null;\\n    } else {\\n      this.setColor(parentItem.getArray(\\\"C\\\"));\\n      this.data.color = this.color;\\n    }\\n\\n    \u002F\u002F If the Popup annotation is not viewable, but the parent annotation is,\\n    \u002F\u002F that is most likely a bug. Fallback to inherit the flags from the parent\\n    \u002F\u002F annotation (this is consistent with the behaviour in Adobe Reader).\\n    if (!this.viewable) {\\n      const parentFlags = parentItem.get(\\\"F\\\");\\n      if (this._isViewable(parentFlags)) {\\n        this.setFlags(parentFlags);\\n      }\\n    }\\n\\n    this.setTitle(parentItem.get(\\\"T\\\"));\\n    this.data.titleObj = this._title;\\n\\n    this.setContents(parentItem.get(\\\"Contents\\\"));\\n    this.data.contentsObj = this._contents;\\n\\n    if (parentItem.has(\\\"RC\\\")) {\\n      this.data.richText = XFAFactory.getRichTextAsHtml(parentItem.get(\\\"RC\\\"));\\n    }\\n\\n    this.data.open = !!dict.get(\\\"Open\\\");\\n  }\\n}\\n\\nclass FreeTextAnnotation extends MarkupAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    \u002F\u002F It uses its own canvas in order to be hidden if edited.\\n    \u002F\u002F But if it has the noHTML flag, it means that we don't want to be able\\n    \u002F\u002F to modify it so we can just draw it on the main canvas.\\n    this.data.hasOwnCanvas = !this.data.noHTML;\\n    \u002F\u002F We want to be able to add mouse listeners to the annotation.\\n    this.data.noHTML = false;\\n\\n    const { evaluatorOptions, xref } = params;\\n    this.data.annotationType = AnnotationType.FREETEXT;\\n    this.setDefaultAppearance(params);\\n    this._hasAppearance = !!this.appearance;\\n\\n    if (this._hasAppearance) {\\n      const { fontColor, fontSize } = parseAppearanceStream(\\n        this.appearance,\\n        evaluatorOptions,\\n        xref\\n      );\\n      this.data.defaultAppearanceData.fontColor = fontColor;\\n      this.data.defaultAppearanceData.fontSize = fontSize || 10;\\n    } else {\\n      this.data.defaultAppearanceData.fontSize ||= 10;\\n      const { fontColor, fontSize } = this.data.defaultAppearanceData;\\n      if (this._contents.str) {\\n        this.data.textContent = this._contents.str\\n          .split(\u002F\\\\r\\\\n?|\\\\n\u002F)\\n          .map(line => line.trimEnd());\\n        const { coords, bbox, matrix } = FakeUnicodeFont.getFirstPositionInfo(\\n          this.rectangle,\\n          this.rotation,\\n          fontSize\\n        );\\n        this.data.textPosition = this._transformPoint(coords, bbox, matrix);\\n      }\\n      if (this._isOffscreenCanvasSupported) {\\n        const strokeAlpha = params.dict.get(\\\"CA\\\");\\n        const fakeUnicodeFont = new FakeUnicodeFont(xref, \\\"sans-serif\\\");\\n        this.appearance = fakeUnicodeFont.createAppearance(\\n          this._contents.str,\\n          this.rectangle,\\n          this.rotation,\\n          fontSize,\\n          fontColor,\\n          strokeAlpha\\n        );\\n        this._streams.push(this.appearance);\\n      } else {\\n        warn(\\n          \\\"FreeTextAnnotation: OffscreenCanvas is not supported, annotation may not render correctly.\\\"\\n        );\\n      }\\n    }\\n  }\\n\\n  get hasTextContent() {\\n    return this._hasAppearance;\\n  }\\n\\n  static createNewDict(annotation, xref, { apRef, ap }) {\\n    const { color, fontSize, rect, rotation, user, value } = annotation;\\n    const freetext = new Dict(xref);\\n    freetext.set(\\\"Type\\\", Name.get(\\\"Annot\\\"));\\n    freetext.set(\\\"Subtype\\\", Name.get(\\\"FreeText\\\"));\\n    freetext.set(\\\"CreationDate\\\", `D:${getModificationDate()}`);\\n    freetext.set(\\\"Rect\\\", rect);\\n    const da = `\u002FHelv ${fontSize} Tf ${getPdfColor(color, \u002F* isFill *\u002F true)}`;\\n    freetext.set(\\\"DA\\\", da);\\n    freetext.set(\\n      \\\"Contents\\\",\\n      isAscii(value)\\n        ? value\\n        : stringToUTF16String(value, \u002F* bigEndian = *\u002F true)\\n    );\\n    freetext.set(\\\"F\\\", 4);\\n    freetext.set(\\\"Border\\\", [0, 0, 0]);\\n    freetext.set(\\\"Rotate\\\", rotation);\\n\\n    if (user) {\\n      freetext.set(\\n        \\\"T\\\",\\n        isAscii(user) ? user : stringToUTF16String(user, \u002F* bigEndian = *\u002F true)\\n      );\\n    }\\n\\n    if (apRef || ap) {\\n      const n = new Dict(xref);\\n      freetext.set(\\\"AP\\\", n);\\n\\n      if (apRef) {\\n        n.set(\\\"N\\\", apRef);\\n      } else {\\n        n.set(\\\"N\\\", ap);\\n      }\\n    }\\n\\n    return freetext;\\n  }\\n\\n  static async createNewAppearanceStream(annotation, xref, params) {\\n    const { baseFontRef, evaluator, task } = params;\\n    const { color, fontSize, rect, rotation, value } = annotation;\\n\\n    const resources = new Dict(xref);\\n    const font = new Dict(xref);\\n\\n    if (baseFontRef) {\\n      font.set(\\\"Helv\\\", baseFontRef);\\n    } else {\\n      const baseFont = new Dict(xref);\\n      baseFont.set(\\\"BaseFont\\\", Name.get(\\\"Helvetica\\\"));\\n      baseFont.set(\\\"Type\\\", Name.get(\\\"Font\\\"));\\n      baseFont.set(\\\"Subtype\\\", Name.get(\\\"Type1\\\"));\\n      baseFont.set(\\\"Encoding\\\", Name.get(\\\"WinAnsiEncoding\\\"));\\n      font.set(\\\"Helv\\\", baseFont);\\n    }\\n    resources.set(\\\"Font\\\", font);\\n\\n    const helv = await WidgetAnnotation._getFontData(\\n      evaluator,\\n      task,\\n      {\\n        fontName: \\\"Helv\\\",\\n        fontSize,\\n      },\\n      resources\\n    );\\n\\n    const [x1, y1, x2, y2] = rect;\\n    let w = x2 - x1;\\n    let h = y2 - y1;\\n\\n    if (rotation % 180 !== 0) {\\n      [w, h] = [h, w];\\n    }\\n\\n    const lines = value.split(\\\"\\\\n\\\");\\n    const scale = fontSize \u002F 1000;\\n    let totalWidth = -Infinity;\\n    const encodedLines = [];\\n    for (let line of lines) {\\n      const encoded = helv.encodeString(line);\\n      if (encoded.length > 1) {\\n        \u002F\u002F The font doesn't contain all the chars.\\n        return null;\\n      }\\n      line = encoded.join(\\\"\\\");\\n      encodedLines.push(line);\\n      let lineWidth = 0;\\n      const glyphs = helv.charsToGlyphs(line);\\n      for (const glyph of glyphs) {\\n        lineWidth += glyph.width * scale;\\n      }\\n      totalWidth = Math.max(totalWidth, lineWidth);\\n    }\\n\\n    let hscale = 1;\\n    if (totalWidth > w) {\\n      hscale = w \u002F totalWidth;\\n    }\\n    let vscale = 1;\\n    const lineHeight = LINE_FACTOR * fontSize;\\n    const lineAscent = (LINE_FACTOR - LINE_DESCENT_FACTOR) * fontSize;\\n    const totalHeight = lineHeight * lines.length;\\n    if (totalHeight > h) {\\n      vscale = h \u002F totalHeight;\\n    }\\n    const fscale = Math.min(hscale, vscale);\\n    const newFontSize = fontSize * fscale;\\n    let firstPoint, clipBox, matrix;\\n    switch (rotation) {\\n      case 0:\\n        matrix = [1, 0, 0, 1];\\n        clipBox = [rect[0], rect[1], w, h];\\n        firstPoint = [rect[0], rect[3] - lineAscent];\\n        break;\\n      case 90:\\n        matrix = [0, 1, -1, 0];\\n        clipBox = [rect[1], -rect[2], w, h];\\n        firstPoint = [rect[1], -rect[0] - lineAscent];\\n        break;\\n      case 180:\\n        matrix = [-1, 0, 0, -1];\\n        clipBox = [-rect[2], -rect[3], w, h];\\n        firstPoint = [-rect[2], -rect[1] - lineAscent];\\n        break;\\n      case 270:\\n        matrix = [0, -1, 1, 0];\\n        clipBox = [-rect[3], rect[0], w, h];\\n        firstPoint = [-rect[3], rect[2] - lineAscent];\\n        break;\\n    }\\n\\n    const buffer = [\\n      \\\"q\\\",\\n      `${matrix.join(\\\" \\\")} 0 0 cm`,\\n      `${clipBox.join(\\\" \\\")} re W n`,\\n      `BT`,\\n      `${getPdfColor(color, \u002F* isFill *\u002F true)}`,\\n      `0 Tc \u002FHelv ${numberToString(newFontSize)} Tf`,\\n    ];\\n\\n    buffer.push(\\n      `${firstPoint.join(\\\" \\\")} Td (${escapeString(encodedLines[0])}) Tj`\\n    );\\n    const vShift = numberToString(lineHeight);\\n    for (let i = 1, ii = encodedLines.length; i \u003C ii; i++) {\\n      const line = encodedLines[i];\\n      buffer.push(`0 -${vShift} Td (${escapeString(line)}) Tj`);\\n    }\\n    buffer.push(\\\"ET\\\", \\\"Q\\\");\\n    const appearance = buffer.join(\\\"\\\\n\\\");\\n\\n    const appearanceStreamDict = new Dict(xref);\\n    appearanceStreamDict.set(\\\"FormType\\\", 1);\\n    appearanceStreamDict.set(\\\"Subtype\\\", Name.get(\\\"Form\\\"));\\n    appearanceStreamDict.set(\\\"Type\\\", Name.get(\\\"XObject\\\"));\\n    appearanceStreamDict.set(\\\"BBox\\\", rect);\\n    appearanceStreamDict.set(\\\"Resources\\\", resources);\\n    appearanceStreamDict.set(\\\"Matrix\\\", [1, 0, 0, 1, -rect[0], -rect[1]]);\\n\\n    const ap = new StringStream(appearance);\\n    ap.dict = appearanceStreamDict;\\n\\n    return ap;\\n  }\\n}\\n\\nclass LineAnnotation extends MarkupAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    const { dict, xref } = params;\\n    this.data.annotationType = AnnotationType.LINE;\\n    this.data.hasOwnCanvas = this.data.noRotate;\\n    this.data.noHTML = false;\\n\\n    const lineCoordinates = lookupRect(dict.getArray(\\\"L\\\"), [0, 0, 0, 0]);\\n    this.data.lineCoordinates = Util.normalizeRect(lineCoordinates);\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      this.setLineEndings(dict.getArray(\\\"LE\\\"));\\n      this.data.lineEndings = this.lineEndings;\\n    }\\n\\n    if (!this.appearance) {\\n      \u002F\u002F The default stroke color is black.\\n      const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\\n      const strokeAlpha = dict.get(\\\"CA\\\");\\n\\n      const interiorColor = getRgbColor(dict.getArray(\\\"IC\\\"), null);\\n      \u002F\u002F The default fill color is transparent. Setting the fill colour is\\n      \u002F\u002F necessary if\u002Fwhen we want to add support for non-default line endings.\\n      const fillColor = interiorColor ? getPdfColorArray(interiorColor) : null;\\n      const fillAlpha = fillColor ? strokeAlpha : null;\\n\\n      const borderWidth = this.borderStyle.width || 1,\\n        borderAdjust = 2 * borderWidth;\\n\\n      \u002F\u002F If the \u002FRect-entry is empty\u002Fwrong, create a fallback rectangle so that\\n      \u002F\u002F we get similar rendering\u002Fhighlighting behaviour as in Adobe Reader.\\n      const bbox = [\\n        this.data.lineCoordinates[0] - borderAdjust,\\n        this.data.lineCoordinates[1] - borderAdjust,\\n        this.data.lineCoordinates[2] + borderAdjust,\\n        this.data.lineCoordinates[3] + borderAdjust,\\n      ];\\n      if (!Util.intersect(this.rectangle, bbox)) {\\n        this.rectangle = bbox;\\n      }\\n\\n      this._setDefaultAppearance({\\n        xref,\\n        extra: `${borderWidth} w`,\\n        strokeColor,\\n        fillColor,\\n        strokeAlpha,\\n        fillAlpha,\\n        pointsCallback: (buffer, points) => {\\n          buffer.push(\\n            `${lineCoordinates[0]} ${lineCoordinates[1]} m`,\\n            `${lineCoordinates[2]} ${lineCoordinates[3]} l`,\\n            \\\"S\\\"\\n          );\\n          return [\\n            points[0].x - borderWidth,\\n            points[1].x + borderWidth,\\n            points[3].y - borderWidth,\\n            points[1].y + borderWidth,\\n          ];\\n        },\\n      });\\n    }\\n  }\\n}\\n\\nclass SquareAnnotation extends MarkupAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    const { dict, xref } = params;\\n    this.data.annotationType = AnnotationType.SQUARE;\\n    this.data.hasOwnCanvas = this.data.noRotate;\\n    this.data.noHTML = false;\\n\\n    if (!this.appearance) {\\n      \u002F\u002F The default stroke color is black.\\n      const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\\n      const strokeAlpha = dict.get(\\\"CA\\\");\\n\\n      const interiorColor = getRgbColor(dict.getArray(\\\"IC\\\"), null);\\n      \u002F\u002F The default fill color is transparent.\\n      const fillColor = interiorColor ? getPdfColorArray(interiorColor) : null;\\n      const fillAlpha = fillColor ? strokeAlpha : null;\\n\\n      if (this.borderStyle.width === 0 && !fillColor) {\\n        \u002F\u002F Prevent rendering a \\\"hairline\\\" border (fixes issue14164.pdf).\\n        return;\\n      }\\n\\n      this._setDefaultAppearance({\\n        xref,\\n        extra: `${this.borderStyle.width} w`,\\n        strokeColor,\\n        fillColor,\\n        strokeAlpha,\\n        fillAlpha,\\n        pointsCallback: (buffer, points) => {\\n          const x = points[2].x + this.borderStyle.width \u002F 2;\\n          const y = points[2].y + this.borderStyle.width \u002F 2;\\n          const width = points[3].x - points[2].x - this.borderStyle.width;\\n          const height = points[1].y - points[3].y - this.borderStyle.width;\\n          buffer.push(`${x} ${y} ${width} ${height} re`);\\n          if (fillColor) {\\n            buffer.push(\\\"B\\\");\\n          } else {\\n            buffer.push(\\\"S\\\");\\n          }\\n          return [points[0].x, points[1].x, points[3].y, points[1].y];\\n        },\\n      });\\n    }\\n  }\\n}\\n\\nclass CircleAnnotation extends MarkupAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    const { dict, xref } = params;\\n    this.data.annotationType = AnnotationType.CIRCLE;\\n\\n    if (!this.appearance) {\\n      \u002F\u002F The default stroke color is black.\\n      const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\\n      const strokeAlpha = dict.get(\\\"CA\\\");\\n\\n      const interiorColor = getRgbColor(dict.getArray(\\\"IC\\\"), null);\\n      \u002F\u002F The default fill color is transparent.\\n      const fillColor = interiorColor ? getPdfColorArray(interiorColor) : null;\\n      const fillAlpha = fillColor ? strokeAlpha : null;\\n\\n      if (this.borderStyle.width === 0 && !fillColor) {\\n        \u002F\u002F Prevent rendering a \\\"hairline\\\" border (fixes issue14164.pdf).\\n        return;\\n      }\\n\\n      \u002F\u002F Circles are approximated by Bézier curves with four segments since\\n      \u002F\u002F there is no circle primitive in the PDF specification. For the control\\n      \u002F\u002F points distance, see https:\u002F\u002Fstackoverflow.com\u002Fa\u002F27863181.\\n      const controlPointsDistance = (4 \u002F 3) * Math.tan(Math.PI \u002F (2 * 4));\\n\\n      this._setDefaultAppearance({\\n        xref,\\n        extra: `${this.borderStyle.width} w`,\\n        strokeColor,\\n        fillColor,\\n        strokeAlpha,\\n        fillAlpha,\\n        pointsCallback: (buffer, points) => {\\n          const x0 = points[0].x + this.borderStyle.width \u002F 2;\\n          const y0 = points[0].y - this.borderStyle.width \u002F 2;\\n          const x1 = points[3].x - this.borderStyle.width \u002F 2;\\n          const y1 = points[3].y + this.borderStyle.width \u002F 2;\\n          const xMid = x0 + (x1 - x0) \u002F 2;\\n          const yMid = y0 + (y1 - y0) \u002F 2;\\n          const xOffset = ((x1 - x0) \u002F 2) * controlPointsDistance;\\n          const yOffset = ((y1 - y0) \u002F 2) * controlPointsDistance;\\n\\n          buffer.push(\\n            `${xMid} ${y1} m`,\\n            `${xMid + xOffset} ${y1} ${x1} ${yMid + yOffset} ${x1} ${yMid} c`,\\n            `${x1} ${yMid - yOffset} ${xMid + xOffset} ${y0} ${xMid} ${y0} c`,\\n            `${xMid - xOffset} ${y0} ${x0} ${yMid - yOffset} ${x0} ${yMid} c`,\\n            `${x0} ${yMid + yOffset} ${xMid - xOffset} ${y1} ${xMid} ${y1} c`,\\n            \\\"h\\\"\\n          );\\n          if (fillColor) {\\n            buffer.push(\\\"B\\\");\\n          } else {\\n            buffer.push(\\\"S\\\");\\n          }\\n          return [points[0].x, points[1].x, points[3].y, points[1].y];\\n        },\\n      });\\n    }\\n  }\\n}\\n\\nclass PolylineAnnotation extends MarkupAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    const { dict, xref } = params;\\n    this.data.annotationType = AnnotationType.POLYLINE;\\n    this.data.hasOwnCanvas = this.data.noRotate;\\n    this.data.noHTML = false;\\n    this.data.vertices = [];\\n\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) &&\\n      !(this instanceof PolygonAnnotation)\\n    ) {\\n      \u002F\u002F Only meaningful for polyline annotations.\\n      this.setLineEndings(dict.getArray(\\\"LE\\\"));\\n      this.data.lineEndings = this.lineEndings;\\n    }\\n\\n    \u002F\u002F The vertices array is an array of numbers representing the alternating\\n    \u002F\u002F horizontal and vertical coordinates, respectively, of each vertex.\\n    \u002F\u002F Convert this to an array of objects with x and y coordinates.\\n    const rawVertices = dict.getArray(\\\"Vertices\\\");\\n    if (!isNumberArray(rawVertices, null)) {\\n      return;\\n    }\\n    for (let i = 0, ii = rawVertices.length; i \u003C ii; i += 2) {\\n      this.data.vertices.push({\\n        x: rawVertices[i],\\n        y: rawVertices[i + 1],\\n      });\\n    }\\n\\n    if (!this.appearance) {\\n      \u002F\u002F The default stroke color is black.\\n      const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\\n      const strokeAlpha = dict.get(\\\"CA\\\");\\n\\n      const borderWidth = this.borderStyle.width || 1,\\n        borderAdjust = 2 * borderWidth;\\n\\n      \u002F\u002F If the \u002FRect-entry is empty\u002Fwrong, create a fallback rectangle so that\\n      \u002F\u002F we get similar rendering\u002Fhighlighting behaviour as in Adobe Reader.\\n      const bbox = [Infinity, Infinity, -Infinity, -Infinity];\\n      for (const vertex of this.data.vertices) {\\n        bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust);\\n        bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust);\\n        bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust);\\n        bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust);\\n      }\\n      if (!Util.intersect(this.rectangle, bbox)) {\\n        this.rectangle = bbox;\\n      }\\n\\n      this._setDefaultAppearance({\\n        xref,\\n        extra: `${borderWidth} w`,\\n        strokeColor,\\n        strokeAlpha,\\n        pointsCallback: (buffer, points) => {\\n          const vertices = this.data.vertices;\\n          for (let i = 0, ii = vertices.length; i \u003C ii; i++) {\\n            buffer.push(\\n              `${vertices[i].x} ${vertices[i].y} ${i === 0 ? \\\"m\\\" : \\\"l\\\"}`\\n            );\\n          }\\n          buffer.push(\\\"S\\\");\\n          return [points[0].x, points[1].x, points[3].y, points[1].y];\\n        },\\n      });\\n    }\\n  }\\n}\\n\\nclass PolygonAnnotation extends PolylineAnnotation {\\n  constructor(params) {\\n    \u002F\u002F Polygons are specific forms of polylines, so reuse their logic.\\n    super(params);\\n\\n    this.data.annotationType = AnnotationType.POLYGON;\\n  }\\n}\\n\\nclass CaretAnnotation extends MarkupAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    this.data.annotationType = AnnotationType.CARET;\\n  }\\n}\\n\\nclass InkAnnotation extends MarkupAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    this.data.hasOwnCanvas = this.data.noRotate;\\n    this.data.noHTML = false;\\n\\n    const { dict, xref } = params;\\n    this.data.annotationType = AnnotationType.INK;\\n    this.data.inkLists = [];\\n\\n    const rawInkLists = dict.getArray(\\\"InkList\\\");\\n    if (!Array.isArray(rawInkLists)) {\\n      return;\\n    }\\n    for (let i = 0, ii = rawInkLists.length; i \u003C ii; ++i) {\\n      \u002F\u002F The raw ink lists array contains arrays of numbers representing\\n      \u002F\u002F the alternating horizontal and vertical coordinates, respectively,\\n      \u002F\u002F of each vertex. Convert this to an array of objects with x and y\\n      \u002F\u002F coordinates.\\n      this.data.inkLists.push([]);\\n      if (!Array.isArray(rawInkLists[i])) {\\n        continue;\\n      }\\n      for (let j = 0, jj = rawInkLists[i].length; j \u003C jj; j += 2) {\\n        const x = xref.fetchIfRef(rawInkLists[i][j]),\\n          y = xref.fetchIfRef(rawInkLists[i][j + 1]);\\n        if (typeof x === \\\"number\\\" && typeof y === \\\"number\\\") {\\n          this.data.inkLists[i].push({ x, y });\\n        }\\n      }\\n    }\\n\\n    if (!this.appearance) {\\n      \u002F\u002F The default stroke color is black.\\n      const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\\n      const strokeAlpha = dict.get(\\\"CA\\\");\\n\\n      const borderWidth = this.borderStyle.width || 1,\\n        borderAdjust = 2 * borderWidth;\\n\\n      \u002F\u002F If the \u002FRect-entry is empty\u002Fwrong, create a fallback rectangle so that\\n      \u002F\u002F we get similar rendering\u002Fhighlighting behaviour as in Adobe Reader.\\n      const bbox = [Infinity, Infinity, -Infinity, -Infinity];\\n      for (const inkLists of this.data.inkLists) {\\n        for (const vertex of inkLists) {\\n          bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust);\\n          bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust);\\n          bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust);\\n          bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust);\\n        }\\n      }\\n      if (!Util.intersect(this.rectangle, bbox)) {\\n        this.rectangle = bbox;\\n      }\\n\\n      this._setDefaultAppearance({\\n        xref,\\n        extra: `${borderWidth} w`,\\n        strokeColor,\\n        strokeAlpha,\\n        pointsCallback: (buffer, points) => {\\n          \u002F\u002F According to the specification, see \\\"12.5.6.13 Ink Annotations\\\":\\n          \u002F\u002F   When drawn, the points shall be connected by straight lines or\\n          \u002F\u002F   curves in an implementation-dependent way.\\n          \u002F\u002F In order to simplify things, we utilize straight lines for now.\\n          for (const inkList of this.data.inkLists) {\\n            for (let i = 0, ii = inkList.length; i \u003C ii; i++) {\\n              buffer.push(\\n                `${inkList[i].x} ${inkList[i].y} ${i === 0 ? \\\"m\\\" : \\\"l\\\"}`\\n              );\\n            }\\n            buffer.push(\\\"S\\\");\\n          }\\n          return [points[0].x, points[1].x, points[3].y, points[1].y];\\n        },\\n      });\\n    }\\n  }\\n\\n  static createNewDict(annotation, xref, { apRef, ap }) {\\n    const { color, opacity, paths, outlines, rect, rotation, thickness } =\\n      annotation;\\n    const ink = new Dict(xref);\\n    ink.set(\\\"Type\\\", Name.get(\\\"Annot\\\"));\\n    ink.set(\\\"Subtype\\\", Name.get(\\\"Ink\\\"));\\n    ink.set(\\\"CreationDate\\\", `D:${getModificationDate()}`);\\n    ink.set(\\\"Rect\\\", rect);\\n    ink.set(\\\"InkList\\\", outlines?.points || paths.map(p => p.points));\\n    ink.set(\\\"F\\\", 4);\\n    ink.set(\\\"Rotate\\\", rotation);\\n\\n    if (outlines) {\\n      \u002F\u002F Free highlight.\\n      \u002F\u002F There's nothing about this in the spec, but it's used when highlighting\\n      \u002F\u002F in Edge's viewer. Acrobat takes into account this parameter to indicate\\n      \u002F\u002F that the Ink is used for highlighting.\\n      ink.set(\\\"IT\\\", Name.get(\\\"InkHighlight\\\"));\\n    }\\n\\n    \u002F\u002F Line thickness.\\n    const bs = new Dict(xref);\\n    ink.set(\\\"BS\\\", bs);\\n    bs.set(\\\"W\\\", thickness);\\n\\n    \u002F\u002F Color.\\n    ink.set(\\n      \\\"C\\\",\\n      Array.from(color, c => c \u002F 255)\\n    );\\n\\n    \u002F\u002F Opacity.\\n    ink.set(\\\"CA\\\", opacity);\\n\\n    const n = new Dict(xref);\\n    ink.set(\\\"AP\\\", n);\\n\\n    if (apRef) {\\n      n.set(\\\"N\\\", apRef);\\n    } else {\\n      n.set(\\\"N\\\", ap);\\n    }\\n\\n    return ink;\\n  }\\n\\n  static async createNewAppearanceStream(annotation, xref, params) {\\n    if (annotation.outlines) {\\n      return this.createNewAppearanceStreamForHighlight(\\n        annotation,\\n        xref,\\n        params\\n      );\\n    }\\n    const { color, rect, paths, thickness, opacity } = annotation;\\n\\n    const appearanceBuffer = [\\n      `${thickness} w 1 J 1 j`,\\n      `${getPdfColor(color, \u002F* isFill *\u002F false)}`,\\n    ];\\n\\n    if (opacity !== 1) {\\n      appearanceBuffer.push(\\\"\u002FR0 gs\\\");\\n    }\\n\\n    const buffer = [];\\n    for (const { bezier } of paths) {\\n      buffer.length = 0;\\n      buffer.push(\\n        `${numberToString(bezier[0])} ${numberToString(bezier[1])} m`\\n      );\\n      if (bezier.length === 2) {\\n        buffer.push(\\n          `${numberToString(bezier[0])} ${numberToString(bezier[1])} l S`\\n        );\\n      } else {\\n        for (let i = 2, ii = bezier.length; i \u003C ii; i += 6) {\\n          const curve = bezier\\n            .slice(i, i + 6)\\n            .map(numberToString)\\n            .join(\\\" \\\");\\n          buffer.push(`${curve} c`);\\n        }\\n        buffer.push(\\\"S\\\");\\n      }\\n      appearanceBuffer.push(buffer.join(\\\"\\\\n\\\"));\\n    }\\n    const appearance = appearanceBuffer.join(\\\"\\\\n\\\");\\n\\n    const appearanceStreamDict = new Dict(xref);\\n    appearanceStreamDict.set(\\\"FormType\\\", 1);\\n    appearanceStreamDict.set(\\\"Subtype\\\", Name.get(\\\"Form\\\"));\\n    appearanceStreamDict.set(\\\"Type\\\", Name.get(\\\"XObject\\\"));\\n    appearanceStreamDict.set(\\\"BBox\\\", rect);\\n    appearanceStreamDict.set(\\\"Length\\\", appearance.length);\\n\\n    if (opacity !== 1) {\\n      const resources = new Dict(xref);\\n      const extGState = new Dict(xref);\\n      const r0 = new Dict(xref);\\n      r0.set(\\\"CA\\\", opacity);\\n      r0.set(\\\"Type\\\", Name.get(\\\"ExtGState\\\"));\\n      extGState.set(\\\"R0\\\", r0);\\n      resources.set(\\\"ExtGState\\\", extGState);\\n      appearanceStreamDict.set(\\\"Resources\\\", resources);\\n    }\\n\\n    const ap = new StringStream(appearance);\\n    ap.dict = appearanceStreamDict;\\n\\n    return ap;\\n  }\\n\\n  static async createNewAppearanceStreamForHighlight(annotation, xref, params) {\\n    const {\\n      color,\\n      rect,\\n      outlines: { outline },\\n      opacity,\\n    } = annotation;\\n    const appearanceBuffer = [\\n      `${getPdfColor(color, \u002F* isFill *\u002F true)}`,\\n      \\\"\u002FR0 gs\\\",\\n    ];\\n\\n    appearanceBuffer.push(\\n      `${numberToString(outline[4])} ${numberToString(outline[5])} m`\\n    );\\n    for (let i = 6, ii = outline.length; i \u003C ii; i += 6) {\\n      if (isNaN(outline[i]) || outline[i] === null) {\\n        appearanceBuffer.push(\\n          `${numberToString(outline[i + 4])} ${numberToString(\\n            outline[i + 5]\\n          )} l`\\n        );\\n      } else {\\n        const curve = outline\\n          .slice(i, i + 6)\\n          .map(numberToString)\\n          .join(\\\" \\\");\\n        appearanceBuffer.push(`${curve} c`);\\n      }\\n    }\\n    appearanceBuffer.push(\\\"h f\\\");\\n    const appearance = appearanceBuffer.join(\\\"\\\\n\\\");\\n\\n    const appearanceStreamDict = new Dict(xref);\\n    appearanceStreamDict.set(\\\"FormType\\\", 1);\\n    appearanceStreamDict.set(\\\"Subtype\\\", Name.get(\\\"Form\\\"));\\n    appearanceStreamDict.set(\\\"Type\\\", Name.get(\\\"XObject\\\"));\\n    appearanceStreamDict.set(\\\"BBox\\\", rect);\\n    appearanceStreamDict.set(\\\"Length\\\", appearance.length);\\n\\n    const resources = new Dict(xref);\\n    const extGState = new Dict(xref);\\n    resources.set(\\\"ExtGState\\\", extGState);\\n    appearanceStreamDict.set(\\\"Resources\\\", resources);\\n    const r0 = new Dict(xref);\\n    extGState.set(\\\"R0\\\", r0);\\n    r0.set(\\\"BM\\\", Name.get(\\\"Multiply\\\"));\\n\\n    if (opacity !== 1) {\\n      r0.set(\\\"ca\\\", opacity);\\n      r0.set(\\\"Type\\\", Name.get(\\\"ExtGState\\\"));\\n    }\\n\\n    const ap = new StringStream(appearance);\\n    ap.dict = appearanceStreamDict;\\n\\n    return ap;\\n  }\\n}\\n\\nclass HighlightAnnotation extends MarkupAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    const { dict, xref } = params;\\n    this.data.annotationType = AnnotationType.HIGHLIGHT;\\n\\n    const quadPoints = (this.data.quadPoints = getQuadPoints(dict, null));\\n    if (quadPoints) {\\n      const resources = this.appearance?.dict.get(\\\"Resources\\\");\\n\\n      if (!this.appearance || !resources?.has(\\\"ExtGState\\\")) {\\n        if (this.appearance) {\\n          \u002F\u002F Workaround for cases where there's no \u002FExtGState-entry directly\\n          \u002F\u002F available, e.g. when the appearance stream contains a \u002FXObject of\\n          \u002F\u002F the \u002FForm-type, since that causes the highlighting to completely\\n          \u002F\u002F obscure the PDF content below it (fixes issue13242.pdf).\\n          warn(\\\"HighlightAnnotation - ignoring built-in appearance stream.\\\");\\n        }\\n        \u002F\u002F Default color is yellow in Acrobat Reader\\n        const fillColor = this.color ? getPdfColorArray(this.color) : [1, 1, 0];\\n        const fillAlpha = dict.get(\\\"CA\\\");\\n\\n        this._setDefaultAppearance({\\n          xref,\\n          fillColor,\\n          blendMode: \\\"Multiply\\\",\\n          fillAlpha,\\n          pointsCallback: (buffer, points) => {\\n            buffer.push(\\n              `${points[0].x} ${points[0].y} m`,\\n              `${points[1].x} ${points[1].y} l`,\\n              `${points[3].x} ${points[3].y} l`,\\n              `${points[2].x} ${points[2].y} l`,\\n              \\\"f\\\"\\n            );\\n            return [points[0].x, points[1].x, points[3].y, points[1].y];\\n          },\\n        });\\n      }\\n    } else {\\n      this.data.popupRef = null;\\n    }\\n  }\\n\\n  static createNewDict(annotation, xref, { apRef, ap }) {\\n    const { color, opacity, rect, rotation, user, quadPoints } = annotation;\\n    const highlight = new Dict(xref);\\n    highlight.set(\\\"Type\\\", Name.get(\\\"Annot\\\"));\\n    highlight.set(\\\"Subtype\\\", Name.get(\\\"Highlight\\\"));\\n    highlight.set(\\\"CreationDate\\\", `D:${getModificationDate()}`);\\n    highlight.set(\\\"Rect\\\", rect);\\n    highlight.set(\\\"F\\\", 4);\\n    highlight.set(\\\"Border\\\", [0, 0, 0]);\\n    highlight.set(\\\"Rotate\\\", rotation);\\n    highlight.set(\\\"QuadPoints\\\", quadPoints);\\n\\n    \u002F\u002F Color.\\n    highlight.set(\\n      \\\"C\\\",\\n      Array.from(color, c => c \u002F 255)\\n    );\\n\\n    \u002F\u002F Opacity.\\n    highlight.set(\\\"CA\\\", opacity);\\n\\n    if (user) {\\n      highlight.set(\\n        \\\"T\\\",\\n        isAscii(user) ? user : stringToUTF16String(user, \u002F* bigEndian = *\u002F true)\\n      );\\n    }\\n\\n    if (apRef || ap) {\\n      const n = new Dict(xref);\\n      highlight.set(\\\"AP\\\", n);\\n      n.set(\\\"N\\\", apRef || ap);\\n    }\\n\\n    return highlight;\\n  }\\n\\n  static async createNewAppearanceStream(annotation, xref, params) {\\n    const { color, rect, outlines, opacity } = annotation;\\n\\n    const appearanceBuffer = [\\n      `${getPdfColor(color, \u002F* isFill *\u002F true)}`,\\n      \\\"\u002FR0 gs\\\",\\n    ];\\n\\n    const buffer = [];\\n    for (const outline of outlines) {\\n      buffer.length = 0;\\n      buffer.push(\\n        `${numberToString(outline[0])} ${numberToString(outline[1])} m`\\n      );\\n      for (let i = 2, ii = outline.length; i \u003C ii; i += 2) {\\n        buffer.push(\\n          `${numberToString(outline[i])} ${numberToString(outline[i + 1])} l`\\n        );\\n      }\\n      buffer.push(\\\"h\\\");\\n      appearanceBuffer.push(buffer.join(\\\"\\\\n\\\"));\\n    }\\n    appearanceBuffer.push(\\\"f*\\\");\\n    const appearance = appearanceBuffer.join(\\\"\\\\n\\\");\\n\\n    const appearanceStreamDict = new Dict(xref);\\n    appearanceStreamDict.set(\\\"FormType\\\", 1);\\n    appearanceStreamDict.set(\\\"Subtype\\\", Name.get(\\\"Form\\\"));\\n    appearanceStreamDict.set(\\\"Type\\\", Name.get(\\\"XObject\\\"));\\n    appearanceStreamDict.set(\\\"BBox\\\", rect);\\n    appearanceStreamDict.set(\\\"Length\\\", appearance.length);\\n\\n    const resources = new Dict(xref);\\n    const extGState = new Dict(xref);\\n    resources.set(\\\"ExtGState\\\", extGState);\\n    appearanceStreamDict.set(\\\"Resources\\\", resources);\\n    const r0 = new Dict(xref);\\n    extGState.set(\\\"R0\\\", r0);\\n    r0.set(\\\"BM\\\", Name.get(\\\"Multiply\\\"));\\n\\n    if (opacity !== 1) {\\n      r0.set(\\\"ca\\\", opacity);\\n      r0.set(\\\"Type\\\", Name.get(\\\"ExtGState\\\"));\\n    }\\n\\n    const ap = new StringStream(appearance);\\n    ap.dict = appearanceStreamDict;\\n\\n    return ap;\\n  }\\n}\\n\\nclass UnderlineAnnotation extends MarkupAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    const { dict, xref } = params;\\n    this.data.annotationType = AnnotationType.UNDERLINE;\\n\\n    const quadPoints = (this.data.quadPoints = getQuadPoints(dict, null));\\n    if (quadPoints) {\\n      if (!this.appearance) {\\n        \u002F\u002F Default color is black\\n        const strokeColor = this.color\\n          ? getPdfColorArray(this.color)\\n          : [0, 0, 0];\\n        const strokeAlpha = dict.get(\\\"CA\\\");\\n\\n        \u002F\u002F The values 0.571 and 1.3 below corresponds to what Acrobat is doing.\\n        this._setDefaultAppearance({\\n          xref,\\n          extra: \\\"[] 0 d 0.571 w\\\",\\n          strokeColor,\\n          strokeAlpha,\\n          pointsCallback: (buffer, points) => {\\n            buffer.push(\\n              `${points[2].x} ${points[2].y + 1.3} m`,\\n              `${points[3].x} ${points[3].y + 1.3} l`,\\n              \\\"S\\\"\\n            );\\n            return [points[0].x, points[1].x, points[3].y, points[1].y];\\n          },\\n        });\\n      }\\n    } else {\\n      this.data.popupRef = null;\\n    }\\n  }\\n}\\n\\nclass SquigglyAnnotation extends MarkupAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    const { dict, xref } = params;\\n    this.data.annotationType = AnnotationType.SQUIGGLY;\\n\\n    const quadPoints = (this.data.quadPoints = getQuadPoints(dict, null));\\n    if (quadPoints) {\\n      if (!this.appearance) {\\n        \u002F\u002F Default color is black\\n        const strokeColor = this.color\\n          ? getPdfColorArray(this.color)\\n          : [0, 0, 0];\\n        const strokeAlpha = dict.get(\\\"CA\\\");\\n\\n        this._setDefaultAppearance({\\n          xref,\\n          extra: \\\"[] 0 d 1 w\\\",\\n          strokeColor,\\n          strokeAlpha,\\n          pointsCallback: (buffer, points) => {\\n            const dy = (points[0].y - points[2].y) \u002F 6;\\n            let shift = dy;\\n            let x = points[2].x;\\n            const y = points[2].y;\\n            const xEnd = points[3].x;\\n            buffer.push(`${x} ${y + shift} m`);\\n            do {\\n              x += 2;\\n              shift = shift === 0 ? dy : 0;\\n              buffer.push(`${x} ${y + shift} l`);\\n            } while (x \u003C xEnd);\\n            buffer.push(\\\"S\\\");\\n            return [points[2].x, xEnd, y - 2 * dy, y + 2 * dy];\\n          },\\n        });\\n      }\\n    } else {\\n      this.data.popupRef = null;\\n    }\\n  }\\n}\\n\\nclass StrikeOutAnnotation extends MarkupAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    const { dict, xref } = params;\\n    this.data.annotationType = AnnotationType.STRIKEOUT;\\n\\n    const quadPoints = (this.data.quadPoints = getQuadPoints(dict, null));\\n    if (quadPoints) {\\n      if (!this.appearance) {\\n        \u002F\u002F Default color is black\\n        const strokeColor = this.color\\n          ? getPdfColorArray(this.color)\\n          : [0, 0, 0];\\n        const strokeAlpha = dict.get(\\\"CA\\\");\\n\\n        this._setDefaultAppearance({\\n          xref,\\n          extra: \\\"[] 0 d 1 w\\\",\\n          strokeColor,\\n          strokeAlpha,\\n          pointsCallback: (buffer, points) => {\\n            buffer.push(\\n              `${(points[0].x + points[2].x) \u002F 2} ` +\\n                `${(points[0].y + points[2].y) \u002F 2} m`,\\n              `${(points[1].x + points[3].x) \u002F 2} ` +\\n                `${(points[1].y + points[3].y) \u002F 2} l`,\\n              \\\"S\\\"\\n            );\\n            return [points[0].x, points[1].x, points[3].y, points[1].y];\\n          },\\n        });\\n      }\\n    } else {\\n      this.data.popupRef = null;\\n    }\\n  }\\n}\\n\\nclass StampAnnotation extends MarkupAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    this.data.annotationType = AnnotationType.STAMP;\\n    this.data.hasOwnCanvas = this.data.noRotate;\\n    this.data.noHTML = false;\\n  }\\n\\n  static async createImage(bitmap, xref) {\\n    \u002F\u002F TODO: when printing, we could have a specific internal colorspace\\n    \u002F\u002F (e.g. something like DeviceRGBA) in order avoid any conversion (i.e. no\\n    \u002F\u002F jpeg, no rgba to rgb conversion, etc...)\\n\\n    const { width, height } = bitmap;\\n    const canvas = new OffscreenCanvas(width, height);\\n    const ctx = canvas.getContext(\\\"2d\\\", { alpha: true });\\n\\n    \u002F\u002F Draw the image and get the data in order to extract the transparency.\\n    ctx.drawImage(bitmap, 0, 0);\\n    const data = ctx.getImageData(0, 0, width, height).data;\\n    const buf32 = new Uint32Array(data.buffer);\\n    const hasAlpha = buf32.some(\\n      FeatureTest.isLittleEndian\\n        ? x => x >>> 24 !== 0xff\\n        : x => (x & 0xff) !== 0xff\\n    );\\n\\n    if (hasAlpha) {\\n      \u002F\u002F Redraw the image on a white background in order to remove the thin gray\\n      \u002F\u002F line which can appear when exporting to jpeg.\\n      ctx.fillStyle = \\\"white\\\";\\n      ctx.fillRect(0, 0, width, height);\\n      ctx.drawImage(bitmap, 0, 0);\\n    }\\n\\n    const jpegBufferPromise = canvas\\n      .convertToBlob({ type: \\\"image\u002Fjpeg\\\", quality: 1 })\\n      .then(blob => blob.arrayBuffer());\\n\\n    const xobjectName = Name.get(\\\"XObject\\\");\\n    const imageName = Name.get(\\\"Image\\\");\\n    const image = new Dict(xref);\\n    image.set(\\\"Type\\\", xobjectName);\\n    image.set(\\\"Subtype\\\", imageName);\\n    image.set(\\\"BitsPerComponent\\\", 8);\\n    image.set(\\\"ColorSpace\\\", Name.get(\\\"DeviceRGB\\\"));\\n    image.set(\\\"Filter\\\", Name.get(\\\"DCTDecode\\\"));\\n    image.set(\\\"BBox\\\", [0, 0, width, height]);\\n    image.set(\\\"Width\\\", width);\\n    image.set(\\\"Height\\\", height);\\n\\n    let smaskStream = null;\\n    if (hasAlpha) {\\n      const alphaBuffer = new Uint8Array(buf32.length);\\n      if (FeatureTest.isLittleEndian) {\\n        for (let i = 0, ii = buf32.length; i \u003C ii; i++) {\\n          alphaBuffer[i] = buf32[i] >>> 24;\\n        }\\n      } else {\\n        for (let i = 0, ii = buf32.length; i \u003C ii; i++) {\\n          alphaBuffer[i] = buf32[i] & 0xff;\\n        }\\n      }\\n\\n      const smask = new Dict(xref);\\n      smask.set(\\\"Type\\\", xobjectName);\\n      smask.set(\\\"Subtype\\\", imageName);\\n      smask.set(\\\"BitsPerComponent\\\", 8);\\n      smask.set(\\\"ColorSpace\\\", Name.get(\\\"DeviceGray\\\"));\\n      smask.set(\\\"Width\\\", width);\\n      smask.set(\\\"Height\\\", height);\\n\\n      smaskStream = new Stream(alphaBuffer, 0, 0, smask);\\n    }\\n    const imageStream = new Stream(await jpegBufferPromise, 0, 0, image);\\n\\n    return {\\n      imageStream,\\n      smaskStream,\\n      width,\\n      height,\\n    };\\n  }\\n\\n  static createNewDict(annotation, xref, { apRef, ap }) {\\n    const { rect, rotation, user } = annotation;\\n    const stamp = new Dict(xref);\\n    stamp.set(\\\"Type\\\", Name.get(\\\"Annot\\\"));\\n    stamp.set(\\\"Subtype\\\", Name.get(\\\"Stamp\\\"));\\n    stamp.set(\\\"CreationDate\\\", `D:${getModificationDate()}`);\\n    stamp.set(\\\"Rect\\\", rect);\\n    stamp.set(\\\"F\\\", 4);\\n    stamp.set(\\\"Border\\\", [0, 0, 0]);\\n    stamp.set(\\\"Rotate\\\", rotation);\\n\\n    if (user) {\\n      stamp.set(\\n        \\\"T\\\",\\n        isAscii(user) ? user : stringToUTF16String(user, \u002F* bigEndian = *\u002F true)\\n      );\\n    }\\n\\n    if (apRef || ap) {\\n      const n = new Dict(xref);\\n      stamp.set(\\\"AP\\\", n);\\n\\n      if (apRef) {\\n        n.set(\\\"N\\\", apRef);\\n      } else {\\n        n.set(\\\"N\\\", ap);\\n      }\\n    }\\n\\n    return stamp;\\n  }\\n\\n  static async createNewAppearanceStream(annotation, xref, params) {\\n    const { rotation } = annotation;\\n    const { imageRef, width, height } = params.image;\\n    const resources = new Dict(xref);\\n    const xobject = new Dict(xref);\\n    resources.set(\\\"XObject\\\", xobject);\\n    xobject.set(\\\"Im0\\\", imageRef);\\n    const appearance = `q ${width} 0 0 ${height} 0 0 cm \u002FIm0 Do Q`;\\n\\n    const appearanceStreamDict = new Dict(xref);\\n    appearanceStreamDict.set(\\\"FormType\\\", 1);\\n    appearanceStreamDict.set(\\\"Subtype\\\", Name.get(\\\"Form\\\"));\\n    appearanceStreamDict.set(\\\"Type\\\", Name.get(\\\"XObject\\\"));\\n    appearanceStreamDict.set(\\\"BBox\\\", [0, 0, width, height]);\\n    appearanceStreamDict.set(\\\"Resources\\\", resources);\\n\\n    if (rotation) {\\n      const matrix = getRotationMatrix(rotation, width, height);\\n      appearanceStreamDict.set(\\\"Matrix\\\", matrix);\\n    }\\n\\n    const ap = new StringStream(appearance);\\n    ap.dict = appearanceStreamDict;\\n\\n    return ap;\\n  }\\n}\\n\\nclass FileAttachmentAnnotation extends MarkupAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    const { dict, xref } = params;\\n    const file = new FileSpec(dict.get(\\\"FS\\\"), xref);\\n\\n    this.data.annotationType = AnnotationType.FILEATTACHMENT;\\n    this.data.hasOwnCanvas = this.data.noRotate;\\n    this.data.noHTML = false;\\n    this.data.file = file.serializable;\\n\\n    const name = dict.get(\\\"Name\\\");\\n    this.data.name =\\n      name instanceof Name ? stringToPDFString(name.name) : \\\"PushPin\\\";\\n\\n    const fillAlpha = dict.get(\\\"ca\\\");\\n    this.data.fillAlpha =\\n      typeof fillAlpha === \\\"number\\\" && fillAlpha >= 0 && fillAlpha \u003C= 1\\n        ? fillAlpha\\n        : null;\\n  }\\n}\\n\\nexport {\\n  Annotation,\\n  AnnotationBorderStyle,\\n  AnnotationFactory,\\n  getQuadPoints,\\n  MarkupAnnotation,\\n  PopupAnnotation,\\n  WidgetAnnotation,\\n};\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { stringToUTF8String, warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { parseXFAPath } from \\\".\u002Fcore_utils.js\\\";\\nimport { SimpleXMLParser } from \\\".\u002Fxml_parser.js\\\";\\n\\nfunction decodeString(str) {\\n  try {\\n    return stringToUTF8String(str);\\n  } catch (ex) {\\n    warn(`UTF-8 decoding failed: \\\"${ex}\\\".`);\\n    return str;\\n  }\\n}\\n\\nclass DatasetXMLParser extends SimpleXMLParser {\\n  constructor(options) {\\n    super(options);\\n    this.node = null;\\n  }\\n\\n  onEndElement(name) {\\n    const node = super.onEndElement(name);\\n    if (node && name === \\\"xfa:datasets\\\") {\\n      this.node = node;\\n\\n      \u002F\u002F We don't need anything else, so just kill the parser.\\n      throw new Error(\\\"Aborting DatasetXMLParser.\\\");\\n    }\\n  }\\n}\\n\\nclass DatasetReader {\\n  constructor(data) {\\n    if (data.datasets) {\\n      this.node = new SimpleXMLParser({ hasAttributes: true }).parseFromString(\\n        data.datasets\\n      ).documentElement;\\n    } else {\\n      const parser = new DatasetXMLParser({ hasAttributes: true });\\n      try {\\n        parser.parseFromString(data[\\\"xdp:xdp\\\"]);\\n      } catch {}\\n      this.node = parser.node;\\n    }\\n  }\\n\\n  getValue(path) {\\n    if (!this.node || !path) {\\n      return \\\"\\\";\\n    }\\n    const node = this.node.searchNode(parseXFAPath(path), 0);\\n\\n    if (!node) {\\n      return \\\"\\\";\\n    }\\n\\n    const first = node.firstChild;\\n    if (first?.nodeName === \\\"value\\\") {\\n      return node.children.map(child => decodeString(child.textContent));\\n    }\\n\\n    return decodeString(node.textContent);\\n  }\\n}\\n\\nexport { DatasetReader };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  assert,\\n  bytesToString,\\n  FormatError,\\n  info,\\n  InvalidPDFException,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { CIRCULAR_REF, Cmd, Dict, isCmd, Ref, RefSet } from \\\".\u002Fprimitives.js\\\";\\nimport { Lexer, Parser } from \\\".\u002Fparser.js\\\";\\nimport {\\n  MissingDataException,\\n  ParserEOFException,\\n  XRefEntryException,\\n  XRefParseException,\\n} from \\\".\u002Fcore_utils.js\\\";\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { CipherTransformFactory } from \\\".\u002Fcrypto.js\\\";\\n\\nclass XRef {\\n  #firstXRefStmPos = null;\\n\\n  constructor(stream, pdfManager) {\\n    this.stream = stream;\\n    this.pdfManager = pdfManager;\\n    this.entries = [];\\n    this._xrefStms = new Set();\\n    this._cacheMap = new Map(); \u002F\u002F Prepare the XRef cache.\\n    this._pendingRefs = new RefSet();\\n    this._newPersistentRefNum = null;\\n    this._newTemporaryRefNum = null;\\n    this._persistentRefsCache = null;\\n  }\\n\\n  getNewPersistentRef(obj) {\\n    \u002F\u002F When printing we don't care that much about the ref number by itself, it\\n    \u002F\u002F can increase for ever and it allows to keep some re-usable refs.\\n    if (this._newPersistentRefNum === null) {\\n      this._newPersistentRefNum = this.entries.length || 1;\\n    }\\n    const num = this._newPersistentRefNum++;\\n    this._cacheMap.set(num, obj);\\n    return Ref.get(num, 0);\\n  }\\n\\n  getNewTemporaryRef() {\\n    \u002F\u002F When saving we want to have some minimal numbers.\\n    \u002F\u002F Those refs are only created in order to be written in the final pdf\\n    \u002F\u002F stream.\\n    if (this._newTemporaryRefNum === null) {\\n      this._newTemporaryRefNum = this.entries.length || 1;\\n      if (this._newPersistentRefNum) {\\n        this._persistentRefsCache = new Map();\\n        for (\\n          let i = this._newTemporaryRefNum;\\n          i \u003C this._newPersistentRefNum;\\n          i++\\n        ) {\\n          \u002F\u002F We *temporarily* clear the cache, see `resetNewTemporaryRef` below,\\n          \u002F\u002F to avoid any conflict with the refs created during saving.\\n          this._persistentRefsCache.set(i, this._cacheMap.get(i));\\n          this._cacheMap.delete(i);\\n        }\\n      }\\n    }\\n    return Ref.get(this._newTemporaryRefNum++, 0);\\n  }\\n\\n  resetNewTemporaryRef() {\\n    \u002F\u002F Called once saving is finished.\\n    this._newTemporaryRefNum = null;\\n    if (this._persistentRefsCache) {\\n      for (const [num, obj] of this._persistentRefsCache) {\\n        this._cacheMap.set(num, obj);\\n      }\\n    }\\n    this._persistentRefsCache = null;\\n  }\\n\\n  setStartXRef(startXRef) {\\n    \u002F\u002F Store the starting positions of xref tables as we process them\\n    \u002F\u002F so we can recover from missing data errors\\n    this.startXRefQueue = [startXRef];\\n  }\\n\\n  parse(recoveryMode = false) {\\n    let trailerDict;\\n    if (!recoveryMode) {\\n      trailerDict = this.readXRef();\\n    } else {\\n      warn(\\\"Indexing all PDF objects\\\");\\n      trailerDict = this.indexObjects();\\n    }\\n    trailerDict.assignXref(this);\\n    this.trailer = trailerDict;\\n\\n    let encrypt;\\n    try {\\n      encrypt = trailerDict.get(\\\"Encrypt\\\");\\n    } catch (ex) {\\n      if (ex instanceof MissingDataException) {\\n        throw ex;\\n      }\\n      warn(`XRef.parse - Invalid \\\"Encrypt\\\" reference: \\\"${ex}\\\".`);\\n    }\\n    if (encrypt instanceof Dict) {\\n      const ids = trailerDict.get(\\\"ID\\\");\\n      const fileId = ids?.length ? ids[0] : \\\"\\\";\\n      \u002F\u002F The 'Encrypt' dictionary itself should not be encrypted, and by\\n      \u002F\u002F setting `suppressEncryption` we can prevent an infinite loop inside\\n      \u002F\u002F of `XRef_fetchUncompressed` if the dictionary contains indirect\\n      \u002F\u002F objects (fixes issue7665.pdf).\\n      encrypt.suppressEncryption = true;\\n      this.encrypt = new CipherTransformFactory(\\n        encrypt,\\n        fileId,\\n        this.pdfManager.password\\n      );\\n    }\\n\\n    \u002F\u002F Get the root dictionary (catalog) object, and do some basic validation.\\n    let root;\\n    try {\\n      root = trailerDict.get(\\\"Root\\\");\\n    } catch (ex) {\\n      if (ex instanceof MissingDataException) {\\n        throw ex;\\n      }\\n      warn(`XRef.parse - Invalid \\\"Root\\\" reference: \\\"${ex}\\\".`);\\n    }\\n    if (root instanceof Dict) {\\n      try {\\n        const pages = root.get(\\\"Pages\\\");\\n        if (pages instanceof Dict) {\\n          this.root = root;\\n          return;\\n        }\\n      } catch (ex) {\\n        if (ex instanceof MissingDataException) {\\n          throw ex;\\n        }\\n        warn(`XRef.parse - Invalid \\\"Pages\\\" reference: \\\"${ex}\\\".`);\\n      }\\n    }\\n\\n    if (!recoveryMode) {\\n      throw new XRefParseException();\\n    }\\n    \u002F\u002F Even recovery failed, there's nothing more we can do here.\\n    throw new InvalidPDFException(\\\"Invalid Root reference.\\\");\\n  }\\n\\n  processXRefTable(parser) {\\n    if (!(\\\"tableState\\\" in this)) {\\n      \u002F\u002F Stores state of the table as we process it so we can resume\\n      \u002F\u002F from middle of table in case of missing data error\\n      this.tableState = {\\n        entryNum: 0,\\n        streamPos: parser.lexer.stream.pos,\\n        parserBuf1: parser.buf1,\\n        parserBuf2: parser.buf2,\\n      };\\n    }\\n\\n    const obj = this.readXRefTable(parser);\\n\\n    \u002F\u002F Sanity check\\n    if (!isCmd(obj, \\\"trailer\\\")) {\\n      throw new FormatError(\\n        \\\"Invalid XRef table: could not find trailer dictionary\\\"\\n      );\\n    }\\n    \u002F\u002F Read trailer dictionary, e.g.\\n    \u002F\u002F trailer\\n    \u002F\u002F    \u003C\u003C \u002FSize 22\\n    \u002F\u002F      \u002FRoot 20R\\n    \u002F\u002F      \u002FInfo 10R\\n    \u002F\u002F      \u002FID [ \u003C81b14aafa313db63dbd6f981e49f94f4> ]\\n    \u002F\u002F    >>\\n    \u002F\u002F The parser goes through the entire stream \u003C\u003C ... >> and provides\\n    \u002F\u002F a getter interface for the key-value table\\n    let dict = parser.getObj();\\n\\n    \u002F\u002F The pdflib PDF generator can generate a nested trailer dictionary\\n    if (!(dict instanceof Dict) && dict.dict) {\\n      dict = dict.dict;\\n    }\\n    if (!(dict instanceof Dict)) {\\n      throw new FormatError(\\n        \\\"Invalid XRef table: could not parse trailer dictionary\\\"\\n      );\\n    }\\n    delete this.tableState;\\n\\n    return dict;\\n  }\\n\\n  readXRefTable(parser) {\\n    \u002F\u002F Example of cross-reference table:\\n    \u002F\u002F xref\\n    \u002F\u002F 0 1                    \u003C-- subsection header (first obj #, obj count)\\n    \u002F\u002F 0000000000 65535 f     \u003C-- actual object (offset, generation #, f\u002Fn)\\n    \u002F\u002F 23 2                   \u003C-- subsection header ... and so on ...\\n    \u002F\u002F 0000025518 00002 n\\n    \u002F\u002F 0000025635 00000 n\\n    \u002F\u002F trailer\\n    \u002F\u002F ...\\n\\n    const stream = parser.lexer.stream;\\n    const tableState = this.tableState;\\n    stream.pos = tableState.streamPos;\\n    parser.buf1 = tableState.parserBuf1;\\n    parser.buf2 = tableState.parserBuf2;\\n\\n    \u002F\u002F Outer loop is over subsection headers\\n    let obj;\\n\\n    while (true) {\\n      if (!(\\\"firstEntryNum\\\" in tableState) || !(\\\"entryCount\\\" in tableState)) {\\n        if (isCmd((obj = parser.getObj()), \\\"trailer\\\")) {\\n          break;\\n        }\\n        tableState.firstEntryNum = obj;\\n        tableState.entryCount = parser.getObj();\\n      }\\n\\n      let first = tableState.firstEntryNum;\\n      const count = tableState.entryCount;\\n      if (!Number.isInteger(first) || !Number.isInteger(count)) {\\n        throw new FormatError(\\n          \\\"Invalid XRef table: wrong types in subsection header\\\"\\n        );\\n      }\\n      \u002F\u002F Inner loop is over objects themselves\\n      for (let i = tableState.entryNum; i \u003C count; i++) {\\n        tableState.streamPos = stream.pos;\\n        tableState.entryNum = i;\\n        tableState.parserBuf1 = parser.buf1;\\n        tableState.parserBuf2 = parser.buf2;\\n\\n        const entry = {};\\n        entry.offset = parser.getObj();\\n        entry.gen = parser.getObj();\\n        const type = parser.getObj();\\n\\n        if (type instanceof Cmd) {\\n          switch (type.cmd) {\\n            case \\\"f\\\":\\n              entry.free = true;\\n              break;\\n            case \\\"n\\\":\\n              entry.uncompressed = true;\\n              break;\\n          }\\n        }\\n\\n        \u002F\u002F Validate entry obj\\n        if (\\n          !Number.isInteger(entry.offset) ||\\n          !Number.isInteger(entry.gen) ||\\n          !(entry.free || entry.uncompressed)\\n        ) {\\n          throw new FormatError(\\n            `Invalid entry in XRef subsection: ${first}, ${count}`\\n          );\\n        }\\n\\n        \u002F\u002F The first xref table entry, i.e. obj 0, should be free. Attempting\\n        \u002F\u002F to adjust an incorrect first obj # (fixes issue 3248 and 7229).\\n        if (i === 0 && entry.free && first === 1) {\\n          first = 0;\\n        }\\n\\n        if (!this.entries[i + first]) {\\n          this.entries[i + first] = entry;\\n        }\\n      }\\n\\n      tableState.entryNum = 0;\\n      tableState.streamPos = stream.pos;\\n      tableState.parserBuf1 = parser.buf1;\\n      tableState.parserBuf2 = parser.buf2;\\n      delete tableState.firstEntryNum;\\n      delete tableState.entryCount;\\n    }\\n\\n    \u002F\u002F Sanity check: as per spec, first object must be free\\n    if (this.entries[0] && !this.entries[0].free) {\\n      throw new FormatError(\\\"Invalid XRef table: unexpected first object\\\");\\n    }\\n    return obj;\\n  }\\n\\n  processXRefStream(stream) {\\n    if (!(\\\"streamState\\\" in this)) {\\n      \u002F\u002F Stores state of the stream as we process it so we can resume\\n      \u002F\u002F from middle of stream in case of missing data error\\n      const streamParameters = stream.dict;\\n      const byteWidths = streamParameters.get(\\\"W\\\");\\n      let range = streamParameters.get(\\\"Index\\\");\\n      if (!range) {\\n        range = [0, streamParameters.get(\\\"Size\\\")];\\n      }\\n\\n      this.streamState = {\\n        entryRanges: range,\\n        byteWidths,\\n        entryNum: 0,\\n        streamPos: stream.pos,\\n      };\\n    }\\n    this.readXRefStream(stream);\\n    delete this.streamState;\\n\\n    return stream.dict;\\n  }\\n\\n  readXRefStream(stream) {\\n    const streamState = this.streamState;\\n    stream.pos = streamState.streamPos;\\n\\n    const [typeFieldWidth, offsetFieldWidth, generationFieldWidth] =\\n      streamState.byteWidths;\\n\\n    const entryRanges = streamState.entryRanges;\\n    while (entryRanges.length > 0) {\\n      const [first, n] = entryRanges;\\n\\n      if (!Number.isInteger(first) || !Number.isInteger(n)) {\\n        throw new FormatError(`Invalid XRef range fields: ${first}, ${n}`);\\n      }\\n      if (\\n        !Number.isInteger(typeFieldWidth) ||\\n        !Number.isInteger(offsetFieldWidth) ||\\n        !Number.isInteger(generationFieldWidth)\\n      ) {\\n        throw new FormatError(\\n          `Invalid XRef entry fields length: ${first}, ${n}`\\n        );\\n      }\\n      for (let i = streamState.entryNum; i \u003C n; ++i) {\\n        streamState.entryNum = i;\\n        streamState.streamPos = stream.pos;\\n\\n        let type = 0,\\n          offset = 0,\\n          generation = 0;\\n        for (let j = 0; j \u003C typeFieldWidth; ++j) {\\n          const typeByte = stream.getByte();\\n          if (typeByte === -1) {\\n            throw new FormatError(\\\"Invalid XRef byteWidths 'type'.\\\");\\n          }\\n          type = (type \u003C\u003C 8) | typeByte;\\n        }\\n        \u002F\u002F if type field is absent, its default value is 1\\n        if (typeFieldWidth === 0) {\\n          type = 1;\\n        }\\n        for (let j = 0; j \u003C offsetFieldWidth; ++j) {\\n          const offsetByte = stream.getByte();\\n          if (offsetByte === -1) {\\n            throw new FormatError(\\\"Invalid XRef byteWidths 'offset'.\\\");\\n          }\\n          offset = (offset \u003C\u003C 8) | offsetByte;\\n        }\\n        for (let j = 0; j \u003C generationFieldWidth; ++j) {\\n          const generationByte = stream.getByte();\\n          if (generationByte === -1) {\\n            throw new FormatError(\\\"Invalid XRef byteWidths 'generation'.\\\");\\n          }\\n          generation = (generation \u003C\u003C 8) | generationByte;\\n        }\\n        const entry = {};\\n        entry.offset = offset;\\n        entry.gen = generation;\\n        switch (type) {\\n          case 0:\\n            entry.free = true;\\n            break;\\n          case 1:\\n            entry.uncompressed = true;\\n            break;\\n          case 2:\\n            break;\\n          default:\\n            throw new FormatError(`Invalid XRef entry type: ${type}`);\\n        }\\n        if (!this.entries[first + i]) {\\n          this.entries[first + i] = entry;\\n        }\\n      }\\n\\n      streamState.entryNum = 0;\\n      streamState.streamPos = stream.pos;\\n      entryRanges.splice(0, 2);\\n    }\\n  }\\n\\n  indexObjects() {\\n    \u002F\u002F Simple scan through the PDF content to find objects,\\n    \u002F\u002F trailers and XRef streams.\\n    const TAB = 0x9,\\n      LF = 0xa,\\n      CR = 0xd,\\n      SPACE = 0x20;\\n    const PERCENT = 0x25,\\n      LT = 0x3c;\\n\\n    function readToken(data, offset) {\\n      let token = \\\"\\\",\\n        ch = data[offset];\\n      while (ch !== LF && ch !== CR && ch !== LT) {\\n        if (++offset >= data.length) {\\n          break;\\n        }\\n        token += String.fromCharCode(ch);\\n        ch = data[offset];\\n      }\\n      return token;\\n    }\\n    function skipUntil(data, offset, what) {\\n      const length = what.length,\\n        dataLength = data.length;\\n      let skipped = 0;\\n      \u002F\u002F finding byte sequence\\n      while (offset \u003C dataLength) {\\n        let i = 0;\\n        while (i \u003C length && data[offset + i] === what[i]) {\\n          ++i;\\n        }\\n        if (i >= length) {\\n          break; \u002F\u002F sequence found\\n        }\\n        offset++;\\n        skipped++;\\n      }\\n      return skipped;\\n    }\\n    const gEndobjRegExp = \u002F\\\\b(endobj|\\\\d+\\\\s+\\\\d+\\\\s+obj|xref|trailer\\\\s*\u003C\u003C)\\\\b\u002Fg;\\n    const gStartxrefRegExp = \u002F\\\\b(startxref|\\\\d+\\\\s+\\\\d+\\\\s+obj)\\\\b\u002Fg;\\n    const objRegExp = \u002F^(\\\\d+)\\\\s+(\\\\d+)\\\\s+obj\\\\b\u002F;\\n\\n    const trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);\\n    const startxrefBytes = new Uint8Array([\\n      115, 116, 97, 114, 116, 120, 114, 101, 102,\\n    ]);\\n    const xrefBytes = new Uint8Array([47, 88, 82, 101, 102]);\\n\\n    \u002F\u002F Clear out any existing entries, since they may be bogus.\\n    this.entries.length = 0;\\n    this._cacheMap.clear();\\n\\n    const stream = this.stream;\\n    stream.pos = 0;\\n    const buffer = stream.getBytes(),\\n      bufferStr = bytesToString(buffer),\\n      length = buffer.length;\\n    let position = stream.start;\\n    const trailers = [],\\n      xrefStms = [];\\n    while (position \u003C length) {\\n      let ch = buffer[position];\\n      if (ch === TAB || ch === LF || ch === CR || ch === SPACE) {\\n        ++position;\\n        continue;\\n      }\\n      if (ch === PERCENT) {\\n        \u002F\u002F %-comment\\n        do {\\n          ++position;\\n          if (position >= length) {\\n            break;\\n          }\\n          ch = buffer[position];\\n        } while (ch !== LF && ch !== CR);\\n        continue;\\n      }\\n      const token = readToken(buffer, position);\\n      let m;\\n      if (\\n        token.startsWith(\\\"xref\\\") &&\\n        (token.length === 4 || \u002F\\\\s\u002F.test(token[4]))\\n      ) {\\n        position += skipUntil(buffer, position, trailerBytes);\\n        trailers.push(position);\\n        position += skipUntil(buffer, position, startxrefBytes);\\n      } else if ((m = objRegExp.exec(token))) {\\n        const num = m[1] | 0,\\n          gen = m[2] | 0;\\n\\n        const startPos = position + token.length;\\n        let contentLength,\\n          updateEntries = false;\\n        if (!this.entries[num]) {\\n          updateEntries = true;\\n        } else if (this.entries[num].gen === gen) {\\n          \u002F\u002F Before overwriting an existing entry, ensure that the new one won't\\n          \u002F\u002F cause *immediate* errors when it's accessed (fixes issue13783.pdf).\\n          try {\\n            const parser = new Parser({\\n              lexer: new Lexer(stream.makeSubStream(startPos)),\\n            });\\n            parser.getObj();\\n            updateEntries = true;\\n          } catch (ex) {\\n            if (ex instanceof ParserEOFException) {\\n              warn(`indexObjects -- checking object (${token}): \\\"${ex}\\\".`);\\n            } else {\\n              \u002F\u002F The error may come from the `Parser`-instance being initialized\\n              \u002F\u002F without an `XRef`-instance (we don't have a usable one yet).\\n              updateEntries = true;\\n            }\\n          }\\n        }\\n        if (updateEntries) {\\n          this.entries[num] = {\\n            offset: position - stream.start,\\n            gen,\\n            uncompressed: true,\\n          };\\n        }\\n\\n        \u002F\u002F Find the next \\\"obj\\\" string, rather than \\\"endobj\\\", to ensure that\\n        \u002F\u002F we won't skip over a new 'obj' operator in corrupt files where\\n        \u002F\u002F 'endobj' operators are missing (fixes issue9105_reduced.pdf).\\n        gEndobjRegExp.lastIndex = startPos;\\n        const match = gEndobjRegExp.exec(bufferStr);\\n\\n        if (match) {\\n          const endPos = gEndobjRegExp.lastIndex + 1;\\n          contentLength = endPos - position;\\n\\n          if (match[1] !== \\\"endobj\\\") {\\n            warn(\\n              `indexObjects: Found \\\"${match[1]}\\\" inside of another \\\"obj\\\", ` +\\n                'caused by missing \\\"endobj\\\" -- trying to recover.'\\n            );\\n            contentLength -= match[1].length + 1;\\n          }\\n        } else {\\n          contentLength = length - position;\\n        }\\n        const content = buffer.subarray(position, position + contentLength);\\n\\n        \u002F\u002F checking XRef stream suspect\\n        \u002F\u002F (it shall have '\u002FXRef' and next char is not a letter)\\n        const xrefTagOffset = skipUntil(content, 0, xrefBytes);\\n        if (xrefTagOffset \u003C contentLength && content[xrefTagOffset + 5] \u003C 64) {\\n          xrefStms.push(position - stream.start);\\n          this._xrefStms.add(position - stream.start); \u002F\u002F Avoid recursion\\n        }\\n\\n        position += contentLength;\\n      } else if (\\n        token.startsWith(\\\"trailer\\\") &&\\n        (token.length === 7 || \u002F\\\\s\u002F.test(token[7]))\\n      ) {\\n        trailers.push(position);\\n\\n        const startPos = position + token.length;\\n        let contentLength;\\n        \u002F\u002F Attempt to handle (some) corrupt documents, where no 'startxref'\\n        \u002F\u002F operators are present (fixes issue15590.pdf).\\n        gStartxrefRegExp.lastIndex = startPos;\\n        const match = gStartxrefRegExp.exec(bufferStr);\\n\\n        if (match) {\\n          const endPos = gStartxrefRegExp.lastIndex + 1;\\n          contentLength = endPos - position;\\n\\n          if (match[1] !== \\\"startxref\\\") {\\n            warn(\\n              `indexObjects: Found \\\"${match[1]}\\\" after \\\"trailer\\\", ` +\\n                'caused by missing \\\"startxref\\\" -- trying to recover.'\\n            );\\n            contentLength -= match[1].length + 1;\\n          }\\n        } else {\\n          contentLength = length - position;\\n        }\\n        position += contentLength;\\n      } else {\\n        position += token.length + 1;\\n      }\\n    }\\n    \u002F\u002F reading XRef streams\\n    for (const xrefStm of xrefStms) {\\n      this.startXRefQueue.push(xrefStm);\\n      this.readXRef(\u002F* recoveryMode *\u002F true);\\n    }\\n\\n    const trailerDicts = [];\\n    \u002F\u002F Pre-parsing the trailers to check if the document is possibly encrypted.\\n    let isEncrypted = false;\\n    for (const trailer of trailers) {\\n      stream.pos = trailer;\\n      const parser = new Parser({\\n        lexer: new Lexer(stream),\\n        xref: this,\\n        allowStreams: true,\\n        recoveryMode: true,\\n      });\\n      const obj = parser.getObj();\\n      if (!isCmd(obj, \\\"trailer\\\")) {\\n        continue;\\n      }\\n      \u002F\u002F read the trailer dictionary\\n      const dict = parser.getObj();\\n      if (!(dict instanceof Dict)) {\\n        continue;\\n      }\\n      trailerDicts.push(dict);\\n\\n      if (dict.has(\\\"Encrypt\\\")) {\\n        isEncrypted = true;\\n      }\\n    }\\n\\n    \u002F\u002F finding main trailer\\n    let trailerDict, trailerError;\\n    for (const dict of [...trailerDicts, \\\"genFallback\\\", ...trailerDicts]) {\\n      if (dict === \\\"genFallback\\\") {\\n        if (!trailerError) {\\n          break; \u002F\u002F No need to fallback if there were no validation errors.\\n        }\\n        this._generationFallback = true;\\n        continue;\\n      }\\n      \u002F\u002F Do some basic validation of the trailer\u002Froot dictionary candidate.\\n      let validPagesDict = false;\\n      try {\\n        const rootDict = dict.get(\\\"Root\\\");\\n        if (!(rootDict instanceof Dict)) {\\n          continue;\\n        }\\n        const pagesDict = rootDict.get(\\\"Pages\\\");\\n        if (!(pagesDict instanceof Dict)) {\\n          continue;\\n        }\\n        const pagesCount = pagesDict.get(\\\"Count\\\");\\n        if (Number.isInteger(pagesCount)) {\\n          validPagesDict = true;\\n        }\\n        \u002F\u002F The top-level \u002FPages dictionary isn't obviously corrupt.\\n      } catch (ex) {\\n        trailerError = ex;\\n        continue;\\n      }\\n      \u002F\u002F taking the first one with 'ID'\\n      if (\\n        validPagesDict &&\\n        (!isEncrypted || dict.has(\\\"Encrypt\\\")) &&\\n        dict.has(\\\"ID\\\")\\n      ) {\\n        return dict;\\n      }\\n      \u002F\u002F The current dictionary is a candidate, but continue searching.\\n      trailerDict = dict;\\n    }\\n    \u002F\u002F No trailer with 'ID', taking last one (if exists).\\n    if (trailerDict) {\\n      return trailerDict;\\n    }\\n    \u002F\u002F No trailer dictionary found, taking the \\\"top\\\"-dictionary (if exists).\\n    if (this.topDict) {\\n      return this.topDict;\\n    }\\n    \u002F\u002F nothing helps\\n    throw new InvalidPDFException(\\\"Invalid PDF structure.\\\");\\n  }\\n\\n  readXRef(recoveryMode = false) {\\n    const stream = this.stream;\\n    \u002F\u002F Keep track of already parsed XRef tables, to prevent an infinite loop\\n    \u002F\u002F when parsing corrupt PDF files where e.g. the \u002FPrev entries create a\\n    \u002F\u002F circular dependency between tables (fixes bug1393476.pdf).\\n    const startXRefParsedCache = new Set();\\n\\n    while (this.startXRefQueue.length) {\\n      try {\\n        const startXRef = this.startXRefQueue[0];\\n\\n        if (startXRefParsedCache.has(startXRef)) {\\n          warn(\\\"readXRef - skipping XRef table since it was already parsed.\\\");\\n          this.startXRefQueue.shift();\\n          continue;\\n        }\\n        startXRefParsedCache.add(startXRef);\\n\\n        stream.pos = startXRef + stream.start;\\n\\n        const parser = new Parser({\\n          lexer: new Lexer(stream),\\n          xref: this,\\n          allowStreams: true,\\n        });\\n        let obj = parser.getObj();\\n        let dict;\\n\\n        \u002F\u002F Get dictionary\\n        if (isCmd(obj, \\\"xref\\\")) {\\n          \u002F\u002F Parse end-of-file XRef\\n          dict = this.processXRefTable(parser);\\n          if (!this.topDict) {\\n            this.topDict = dict;\\n          }\\n\\n          \u002F\u002F Recursively get other XRefs 'XRefStm', if any\\n          obj = dict.get(\\\"XRefStm\\\");\\n          if (Number.isInteger(obj) && !this._xrefStms.has(obj)) {\\n            \u002F\u002F ignore previously loaded xref streams\\n            \u002F\u002F (possible infinite recursion)\\n            this._xrefStms.add(obj);\\n            this.startXRefQueue.push(obj);\\n            this.#firstXRefStmPos ??= obj;\\n          }\\n        } else if (Number.isInteger(obj)) {\\n          \u002F\u002F Parse in-stream XRef\\n          if (\\n            !Number.isInteger(parser.getObj()) ||\\n            !isCmd(parser.getObj(), \\\"obj\\\") ||\\n            !((obj = parser.getObj()) instanceof BaseStream)\\n          ) {\\n            throw new FormatError(\\\"Invalid XRef stream\\\");\\n          }\\n          dict = this.processXRefStream(obj);\\n          if (!this.topDict) {\\n            this.topDict = dict;\\n          }\\n          if (!dict) {\\n            throw new FormatError(\\\"Failed to read XRef stream\\\");\\n          }\\n        } else {\\n          throw new FormatError(\\\"Invalid XRef stream header\\\");\\n        }\\n\\n        \u002F\u002F Recursively get previous dictionary, if any\\n        obj = dict.get(\\\"Prev\\\");\\n        if (Number.isInteger(obj)) {\\n          this.startXRefQueue.push(obj);\\n        } else if (obj instanceof Ref) {\\n          \u002F\u002F The spec says Prev must not be a reference, i.e. \\\"\u002FPrev NNN\\\"\\n          \u002F\u002F This is a fallback for non-compliant PDFs, i.e. \\\"\u002FPrev NNN 0 R\\\"\\n          this.startXRefQueue.push(obj.num);\\n        }\\n      } catch (e) {\\n        if (e instanceof MissingDataException) {\\n          throw e;\\n        }\\n        info(\\\"(while reading XRef): \\\" + e);\\n      }\\n      this.startXRefQueue.shift();\\n    }\\n\\n    if (this.topDict) {\\n      return this.topDict;\\n    }\\n    if (recoveryMode) {\\n      return undefined;\\n    }\\n    throw new XRefParseException();\\n  }\\n\\n  get lastXRefStreamPos() {\\n    return (\\n      this.#firstXRefStmPos ??\\n      (this._xrefStms.size > 0 ? Math.max(...this._xrefStms) : null)\\n    );\\n  }\\n\\n  getEntry(i) {\\n    const xrefEntry = this.entries[i];\\n    if (xrefEntry && !xrefEntry.free && xrefEntry.offset) {\\n      return xrefEntry;\\n    }\\n    return null;\\n  }\\n\\n  fetchIfRef(obj, suppressEncryption = false) {\\n    if (obj instanceof Ref) {\\n      return this.fetch(obj, suppressEncryption);\\n    }\\n    return obj;\\n  }\\n\\n  fetch(ref, suppressEncryption = false) {\\n    if (!(ref instanceof Ref)) {\\n      throw new Error(\\\"ref object is not a reference\\\");\\n    }\\n    const num = ref.num;\\n\\n    \u002F\u002F The XRef cache is populated with objects which are obtained through\\n    \u002F\u002F `Parser.getObj`, and indirectly via `Lexer.getObj`. Neither of these\\n    \u002F\u002F methods should ever return `undefined` (note the `assert` calls below).\\n    const cacheEntry = this._cacheMap.get(num);\\n    if (cacheEntry !== undefined) {\\n      \u002F\u002F In documents with Object Streams, it's possible that cached `Dict`s\\n      \u002F\u002F have not been assigned an `objId` yet (see e.g. issue3115r.pdf).\\n      if (cacheEntry instanceof Dict && !cacheEntry.objId) {\\n        cacheEntry.objId = ref.toString();\\n      }\\n      return cacheEntry;\\n    }\\n    let xrefEntry = this.getEntry(num);\\n\\n    if (xrefEntry === null) {\\n      \u002F\u002F The referenced entry can be free.\\n      this._cacheMap.set(num, xrefEntry);\\n      return xrefEntry;\\n    }\\n    \u002F\u002F Prevent circular references, in corrupt PDF documents, from hanging the\\n    \u002F\u002F worker-thread. This relies, implicitly, on the parsing being synchronous.\\n    if (this._pendingRefs.has(ref)) {\\n      this._pendingRefs.remove(ref);\\n\\n      warn(`Ignoring circular reference: ${ref}.`);\\n      return CIRCULAR_REF;\\n    }\\n    this._pendingRefs.put(ref);\\n\\n    try {\\n      xrefEntry = xrefEntry.uncompressed\\n        ? this.fetchUncompressed(ref, xrefEntry, suppressEncryption)\\n        : this.fetchCompressed(ref, xrefEntry, suppressEncryption);\\n      this._pendingRefs.remove(ref);\\n    } catch (ex) {\\n      this._pendingRefs.remove(ref);\\n      throw ex;\\n    }\\n    if (xrefEntry instanceof Dict) {\\n      xrefEntry.objId = ref.toString();\\n    } else if (xrefEntry instanceof BaseStream) {\\n      xrefEntry.dict.objId = ref.toString();\\n    }\\n    return xrefEntry;\\n  }\\n\\n  fetchUncompressed(ref, xrefEntry, suppressEncryption = false) {\\n    const gen = ref.gen;\\n    let num = ref.num;\\n    if (xrefEntry.gen !== gen) {\\n      const msg = `Inconsistent generation in XRef: ${ref}`;\\n      \u002F\u002F Try falling back to a *previous* generation (fixes issue15577.pdf).\\n      if (this._generationFallback && xrefEntry.gen \u003C gen) {\\n        warn(msg);\\n        return this.fetchUncompressed(\\n          Ref.get(num, xrefEntry.gen),\\n          xrefEntry,\\n          suppressEncryption\\n        );\\n      }\\n      throw new XRefEntryException(msg);\\n    }\\n    const stream = this.stream.makeSubStream(\\n      xrefEntry.offset + this.stream.start\\n    );\\n    const parser = new Parser({\\n      lexer: new Lexer(stream),\\n      xref: this,\\n      allowStreams: true,\\n    });\\n    const obj1 = parser.getObj();\\n    const obj2 = parser.getObj();\\n    const obj3 = parser.getObj();\\n\\n    if (obj1 !== num || obj2 !== gen || !(obj3 instanceof Cmd)) {\\n      throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\\n    }\\n    if (obj3.cmd !== \\\"obj\\\") {\\n      \u002F\u002F some bad PDFs use \\\"obj1234\\\" and really mean 1234\\n      if (obj3.cmd.startsWith(\\\"obj\\\")) {\\n        num = parseInt(obj3.cmd.substring(3), 10);\\n        if (!Number.isNaN(num)) {\\n          return num;\\n        }\\n      }\\n      throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\\n    }\\n    xrefEntry =\\n      this.encrypt && !suppressEncryption\\n        ? parser.getObj(this.encrypt.createCipherTransform(num, gen))\\n        : parser.getObj();\\n    if (!(xrefEntry instanceof BaseStream)) {\\n      if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n        assert(\\n          xrefEntry !== undefined,\\n          'fetchUncompressed: The \\\"xrefEntry\\\" cannot be undefined.'\\n        );\\n      }\\n      this._cacheMap.set(num, xrefEntry);\\n    }\\n    return xrefEntry;\\n  }\\n\\n  fetchCompressed(ref, xrefEntry, suppressEncryption = false) {\\n    const tableOffset = xrefEntry.offset;\\n    const stream = this.fetch(Ref.get(tableOffset, 0));\\n    if (!(stream instanceof BaseStream)) {\\n      throw new FormatError(\\\"bad ObjStm stream\\\");\\n    }\\n    const first = stream.dict.get(\\\"First\\\");\\n    const n = stream.dict.get(\\\"N\\\");\\n    if (!Number.isInteger(first) || !Number.isInteger(n)) {\\n      throw new FormatError(\\\"invalid first and n parameters for ObjStm stream\\\");\\n    }\\n    let parser = new Parser({\\n      lexer: new Lexer(stream),\\n      xref: this,\\n      allowStreams: true,\\n    });\\n    const nums = new Array(n);\\n    const offsets = new Array(n);\\n    \u002F\u002F read the object numbers to populate cache\\n    for (let i = 0; i \u003C n; ++i) {\\n      const num = parser.getObj();\\n      if (!Number.isInteger(num)) {\\n        throw new FormatError(\\n          `invalid object number in the ObjStm stream: ${num}`\\n        );\\n      }\\n      const offset = parser.getObj();\\n      if (!Number.isInteger(offset)) {\\n        throw new FormatError(\\n          `invalid object offset in the ObjStm stream: ${offset}`\\n        );\\n      }\\n      nums[i] = num;\\n      offsets[i] = offset;\\n    }\\n\\n    const start = (stream.start || 0) + first;\\n    const entries = new Array(n);\\n    \u002F\u002F read stream objects for cache\\n    for (let i = 0; i \u003C n; ++i) {\\n      const length = i \u003C n - 1 ? offsets[i + 1] - offsets[i] : undefined;\\n      if (length \u003C 0) {\\n        throw new FormatError(\\\"Invalid offset in the ObjStm stream.\\\");\\n      }\\n      parser = new Parser({\\n        lexer: new Lexer(\\n          stream.makeSubStream(start + offsets[i], length, stream.dict)\\n        ),\\n        xref: this,\\n        allowStreams: true,\\n      });\\n\\n      const obj = parser.getObj();\\n      entries[i] = obj;\\n      if (obj instanceof BaseStream) {\\n        continue;\\n      }\\n      const num = nums[i],\\n        entry = this.entries[num];\\n      if (entry && entry.offset === tableOffset && entry.gen === i) {\\n        if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n          assert(\\n            obj !== undefined,\\n            'fetchCompressed: The \\\"obj\\\" cannot be undefined.'\\n          );\\n        }\\n        this._cacheMap.set(num, obj);\\n      }\\n    }\\n    xrefEntry = entries[xrefEntry.gen];\\n    if (xrefEntry === undefined) {\\n      throw new XRefEntryException(`Bad (compressed) XRef entry: ${ref}`);\\n    }\\n    return xrefEntry;\\n  }\\n\\n  async fetchIfRefAsync(obj, suppressEncryption) {\\n    if (obj instanceof Ref) {\\n      return this.fetchAsync(obj, suppressEncryption);\\n    }\\n    return obj;\\n  }\\n\\n  async fetchAsync(ref, suppressEncryption) {\\n    try {\\n      return this.fetch(ref, suppressEncryption);\\n    } catch (ex) {\\n      if (!(ex instanceof MissingDataException)) {\\n        throw ex;\\n      }\\n      await this.pdfManager.requestRange(ex.begin, ex.end);\\n      return this.fetchAsync(ref, suppressEncryption);\\n    }\\n  }\\n\\n  getCatalogObj() {\\n    return this.root;\\n  }\\n}\\n\\nexport { XRef };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  AnnotationEditorPrefix,\\n  assert,\\n  FormatError,\\n  info,\\n  InvalidPDFException,\\n  isArrayEqual,\\n  PageActionEventType,\\n  RenderingIntentFlag,\\n  shadow,\\n  stringToBytes,\\n  stringToPDFString,\\n  stringToUTF8String,\\n  unreachable,\\n  Util,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  AnnotationFactory,\\n  PopupAnnotation,\\n  WidgetAnnotation,\\n} from \\\".\u002Fannotation.js\\\";\\nimport {\\n  collectActions,\\n  getInheritableProperty,\\n  getNewAnnotationsMap,\\n  isWhiteSpace,\\n  lookupNormalRect,\\n  MissingDataException,\\n  PDF_VERSION_REGEXP,\\n  validateCSSFont,\\n  XRefEntryException,\\n  XRefParseException,\\n} from \\\".\u002Fcore_utils.js\\\";\\nimport {\\n  Dict,\\n  isName,\\n  isRefsEqual,\\n  Name,\\n  Ref,\\n  RefSet,\\n  RefSetCache,\\n} from \\\".\u002Fprimitives.js\\\";\\nimport { getXfaFontDict, getXfaFontName } from \\\".\u002Fxfa_fonts.js\\\";\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { calculateMD5 } from \\\".\u002Fcrypto.js\\\";\\nimport { Catalog } from \\\".\u002Fcatalog.js\\\";\\nimport { clearGlobalCaches } from \\\".\u002Fcleanup_helper.js\\\";\\nimport { DatasetReader } from \\\".\u002Fdataset_reader.js\\\";\\nimport { Linearization } from \\\".\u002Fparser.js\\\";\\nimport { NullStream } from \\\".\u002Fstream.js\\\";\\nimport { ObjectLoader } from \\\".\u002Fobject_loader.js\\\";\\nimport { OperatorList } from \\\".\u002Foperator_list.js\\\";\\nimport { PartialEvaluator } from \\\".\u002Fevaluator.js\\\";\\nimport { StreamsSequenceStream } from \\\".\u002Fdecode_stream.js\\\";\\nimport { StructTreePage } from \\\".\u002Fstruct_tree.js\\\";\\nimport { writeObject } from \\\".\u002Fwriter.js\\\";\\nimport { XFAFactory } from \\\".\u002Fxfa\u002Ffactory.js\\\";\\nimport { XRef } from \\\".\u002Fxref.js\\\";\\n\\nconst DEFAULT_USER_UNIT = 1.0;\\nconst LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];\\n\\nclass Page {\\n  constructor({\\n    pdfManager,\\n    xref,\\n    pageIndex,\\n    pageDict,\\n    ref,\\n    globalIdFactory,\\n    fontCache,\\n    builtInCMapCache,\\n    standardFontDataCache,\\n    globalImageCache,\\n    systemFontCache,\\n    nonBlendModesSet,\\n    xfaFactory,\\n  }) {\\n    this.pdfManager = pdfManager;\\n    this.pageIndex = pageIndex;\\n    this.pageDict = pageDict;\\n    this.xref = xref;\\n    this.ref = ref;\\n    this.fontCache = fontCache;\\n    this.builtInCMapCache = builtInCMapCache;\\n    this.standardFontDataCache = standardFontDataCache;\\n    this.globalImageCache = globalImageCache;\\n    this.systemFontCache = systemFontCache;\\n    this.nonBlendModesSet = nonBlendModesSet;\\n    this.evaluatorOptions = pdfManager.evaluatorOptions;\\n    this.resourcesPromise = null;\\n    this.xfaFactory = xfaFactory;\\n\\n    const idCounters = {\\n      obj: 0,\\n    };\\n    this._localIdFactory = class extends globalIdFactory {\\n      static createObjId() {\\n        return `p${pageIndex}_${++idCounters.obj}`;\\n      }\\n\\n      static getPageObjId() {\\n        return `p${ref.toString()}`;\\n      }\\n    };\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _getInheritableProperty(key, getArray = false) {\\n    const value = getInheritableProperty({\\n      dict: this.pageDict,\\n      key,\\n      getArray,\\n      stopWhenFound: false,\\n    });\\n    if (!Array.isArray(value)) {\\n      return value;\\n    }\\n    if (value.length === 1 || !(value[0] instanceof Dict)) {\\n      return value[0];\\n    }\\n    return Dict.merge({ xref: this.xref, dictArray: value });\\n  }\\n\\n  get content() {\\n    return this.pageDict.getArray(\\\"Contents\\\");\\n  }\\n\\n  get resources() {\\n    \u002F\u002F For robustness: The spec states that a \\\\Resources entry has to be\\n    \u002F\u002F present, but can be empty. Some documents still omit it; in this case\\n    \u002F\u002F we return an empty dictionary.\\n    const resources = this._getInheritableProperty(\\\"Resources\\\");\\n\\n    return shadow(\\n      this,\\n      \\\"resources\\\",\\n      resources instanceof Dict ? resources : Dict.empty\\n    );\\n  }\\n\\n  _getBoundingBox(name) {\\n    if (this.xfaData) {\\n      return this.xfaData.bbox;\\n    }\\n    const box = lookupNormalRect(\\n      this._getInheritableProperty(name, \u002F* getArray = *\u002F true),\\n      null\\n    );\\n\\n    if (box) {\\n      if (box[2] - box[0] > 0 && box[3] - box[1] > 0) {\\n        return box;\\n      }\\n      warn(`Empty, or invalid, \u002F${name} entry.`);\\n    }\\n    return null;\\n  }\\n\\n  get mediaBox() {\\n    \u002F\u002F Reset invalid media box to letter size.\\n    return shadow(\\n      this,\\n      \\\"mediaBox\\\",\\n      this._getBoundingBox(\\\"MediaBox\\\") || LETTER_SIZE_MEDIABOX\\n    );\\n  }\\n\\n  get cropBox() {\\n    \u002F\u002F Reset invalid crop box to media box.\\n    return shadow(\\n      this,\\n      \\\"cropBox\\\",\\n      this._getBoundingBox(\\\"CropBox\\\") || this.mediaBox\\n    );\\n  }\\n\\n  get userUnit() {\\n    let obj = this.pageDict.get(\\\"UserUnit\\\");\\n    if (typeof obj !== \\\"number\\\" || obj \u003C= 0) {\\n      obj = DEFAULT_USER_UNIT;\\n    }\\n    return shadow(this, \\\"userUnit\\\", obj);\\n  }\\n\\n  get view() {\\n    \u002F\u002F From the spec, 6th ed., p.963:\\n    \u002F\u002F \\\"The crop, bleed, trim, and art boxes should not ordinarily\\n    \u002F\u002F extend beyond the boundaries of the media box. If they do, they are\\n    \u002F\u002F effectively reduced to their intersection with the media box.\\\"\\n    const { cropBox, mediaBox } = this;\\n\\n    if (cropBox !== mediaBox && !isArrayEqual(cropBox, mediaBox)) {\\n      const box = Util.intersect(cropBox, mediaBox);\\n      if (box && box[2] - box[0] > 0 && box[3] - box[1] > 0) {\\n        return shadow(this, \\\"view\\\", box);\\n      }\\n      warn(\\\"Empty \u002FCropBox and \u002FMediaBox intersection.\\\");\\n    }\\n    return shadow(this, \\\"view\\\", mediaBox);\\n  }\\n\\n  get rotate() {\\n    let rotate = this._getInheritableProperty(\\\"Rotate\\\") || 0;\\n\\n    \u002F\u002F Normalize rotation so it's a multiple of 90 and between 0 and 270.\\n    if (rotate % 90 !== 0) {\\n      rotate = 0;\\n    } else if (rotate >= 360) {\\n      rotate %= 360;\\n    } else if (rotate \u003C 0) {\\n      \u002F\u002F The spec doesn't cover negatives. Assume it's counterclockwise\\n      \u002F\u002F rotation. The following is the other implementation of modulo.\\n      rotate = ((rotate % 360) + 360) % 360;\\n    }\\n    return shadow(this, \\\"rotate\\\", rotate);\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _onSubStreamError(reason, objId) {\\n    if (this.evaluatorOptions.ignoreErrors) {\\n      warn(`getContentStream - ignoring sub-stream (${objId}): \\\"${reason}\\\".`);\\n      return;\\n    }\\n    throw reason;\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003CBaseStream>}\\n   *\u002F\\n  getContentStream() {\\n    return this.pdfManager.ensure(this, \\\"content\\\").then(content => {\\n      if (content instanceof BaseStream) {\\n        return content;\\n      }\\n      if (Array.isArray(content)) {\\n        return new StreamsSequenceStream(\\n          content,\\n          this._onSubStreamError.bind(this)\\n        );\\n      }\\n      \u002F\u002F Replace non-existent page content with empty content.\\n      return new NullStream();\\n    });\\n  }\\n\\n  get xfaData() {\\n    return shadow(\\n      this,\\n      \\\"xfaData\\\",\\n      this.xfaFactory\\n        ? { bbox: this.xfaFactory.getBoundingBox(this.pageIndex) }\\n        : null\\n    );\\n  }\\n\\n  #replaceIdByRef(annotations, deletedAnnotations, existingAnnotations) {\\n    for (const annotation of annotations) {\\n      if (annotation.id) {\\n        const ref = Ref.fromString(annotation.id);\\n        if (!ref) {\\n          warn(`A non-linked annotation cannot be modified: ${annotation.id}`);\\n          continue;\\n        }\\n        if (annotation.deleted) {\\n          deletedAnnotations.put(ref, ref);\\n          continue;\\n        }\\n        existingAnnotations?.put(ref);\\n        annotation.ref = ref;\\n        delete annotation.id;\\n      }\\n    }\\n  }\\n\\n  async saveNewAnnotations(handler, task, annotations, imagePromises) {\\n    if (this.xfaFactory) {\\n      throw new Error(\\\"XFA: Cannot save new annotations.\\\");\\n    }\\n\\n    const partialEvaluator = new PartialEvaluator({\\n      xref: this.xref,\\n      handler,\\n      pageIndex: this.pageIndex,\\n      idFactory: this._localIdFactory,\\n      fontCache: this.fontCache,\\n      builtInCMapCache: this.builtInCMapCache,\\n      standardFontDataCache: this.standardFontDataCache,\\n      globalImageCache: this.globalImageCache,\\n      systemFontCache: this.systemFontCache,\\n      options: this.evaluatorOptions,\\n    });\\n\\n    const deletedAnnotations = new RefSetCache();\\n    const existingAnnotations = new RefSet();\\n    this.#replaceIdByRef(annotations, deletedAnnotations, existingAnnotations);\\n\\n    const pageDict = this.pageDict;\\n    const annotationsArray = this.annotations.filter(\\n      a => !(a instanceof Ref && deletedAnnotations.has(a))\\n    );\\n    const newData = await AnnotationFactory.saveNewAnnotations(\\n      partialEvaluator,\\n      task,\\n      annotations,\\n      imagePromises\\n    );\\n\\n    for (const { ref } of newData.annotations) {\\n      \u002F\u002F Don't add an existing annotation ref to the annotations array.\\n      if (ref instanceof Ref && !existingAnnotations.has(ref)) {\\n        annotationsArray.push(ref);\\n      }\\n    }\\n\\n    const savedDict = pageDict.get(\\\"Annots\\\");\\n    pageDict.set(\\\"Annots\\\", annotationsArray);\\n    const buffer = [];\\n    await writeObject(this.ref, pageDict, buffer, this.xref);\\n    if (savedDict) {\\n      pageDict.set(\\\"Annots\\\", savedDict);\\n    }\\n\\n    const objects = newData.dependencies;\\n    objects.push(\\n      { ref: this.ref, data: buffer.join(\\\"\\\") },\\n      ...newData.annotations\\n    );\\n    for (const deletedRef of deletedAnnotations) {\\n      objects.push({ ref: deletedRef, data: null });\\n    }\\n\\n    return objects;\\n  }\\n\\n  save(handler, task, annotationStorage) {\\n    const partialEvaluator = new PartialEvaluator({\\n      xref: this.xref,\\n      handler,\\n      pageIndex: this.pageIndex,\\n      idFactory: this._localIdFactory,\\n      fontCache: this.fontCache,\\n      builtInCMapCache: this.builtInCMapCache,\\n      standardFontDataCache: this.standardFontDataCache,\\n      globalImageCache: this.globalImageCache,\\n      systemFontCache: this.systemFontCache,\\n      options: this.evaluatorOptions,\\n    });\\n\\n    \u002F\u002F Fetch the page's annotations and save the content\\n    \u002F\u002F in case of interactive form fields.\\n    return this._parsedAnnotations.then(function (annotations) {\\n      const newRefsPromises = [];\\n      for (const annotation of annotations) {\\n        if (!annotation.mustBePrinted(annotationStorage)) {\\n          continue;\\n        }\\n        newRefsPromises.push(\\n          annotation\\n            .save(partialEvaluator, task, annotationStorage)\\n            .catch(function (reason) {\\n              warn(\\n                \\\"save - ignoring annotation data during \\\" +\\n                  `\\\"${task.name}\\\" task: \\\"${reason}\\\".`\\n              );\\n              return null;\\n            })\\n        );\\n      }\\n\\n      return Promise.all(newRefsPromises).then(function (newRefs) {\\n        return newRefs.filter(newRef => !!newRef);\\n      });\\n    });\\n  }\\n\\n  loadResources(keys) {\\n    \u002F\u002F TODO: add async `_getInheritableProperty` and remove this.\\n    this.resourcesPromise ||= this.pdfManager.ensure(this, \\\"resources\\\");\\n\\n    return this.resourcesPromise.then(() => {\\n      const objectLoader = new ObjectLoader(this.resources, keys, this.xref);\\n      return objectLoader.load();\\n    });\\n  }\\n\\n  getOperatorList({\\n    handler,\\n    sink,\\n    task,\\n    intent,\\n    cacheKey,\\n    annotationStorage = null,\\n  }) {\\n    const contentStreamPromise = this.getContentStream();\\n    const resourcesPromise = this.loadResources([\\n      \\\"ColorSpace\\\",\\n      \\\"ExtGState\\\",\\n      \\\"Font\\\",\\n      \\\"Pattern\\\",\\n      \\\"Properties\\\",\\n      \\\"Shading\\\",\\n      \\\"XObject\\\",\\n    ]);\\n\\n    const partialEvaluator = new PartialEvaluator({\\n      xref: this.xref,\\n      handler,\\n      pageIndex: this.pageIndex,\\n      idFactory: this._localIdFactory,\\n      fontCache: this.fontCache,\\n      builtInCMapCache: this.builtInCMapCache,\\n      standardFontDataCache: this.standardFontDataCache,\\n      globalImageCache: this.globalImageCache,\\n      systemFontCache: this.systemFontCache,\\n      options: this.evaluatorOptions,\\n    });\\n\\n    const newAnnotsByPage = !this.xfaFactory\\n      ? getNewAnnotationsMap(annotationStorage)\\n      : null;\\n    const newAnnots = newAnnotsByPage?.get(this.pageIndex);\\n    let newAnnotationsPromise = Promise.resolve(null);\\n    let deletedAnnotations = null;\\n\\n    if (newAnnots) {\\n      const annotationGlobalsPromise =\\n        this.pdfManager.ensureDoc(\\\"annotationGlobals\\\");\\n      let imagePromises;\\n\\n      \u002F\u002F An annotation can contain a reference to a bitmap, but this bitmap\\n      \u002F\u002F is defined in another annotation. So we need to find this annotation\\n      \u002F\u002F and generate the bitmap.\\n      const missingBitmaps = new Set();\\n      for (const { bitmapId, bitmap } of newAnnots) {\\n        if (bitmapId && !bitmap && !missingBitmaps.has(bitmapId)) {\\n          missingBitmaps.add(bitmapId);\\n        }\\n      }\\n\\n      const { isOffscreenCanvasSupported } = this.evaluatorOptions;\\n      if (missingBitmaps.size > 0) {\\n        const annotationWithBitmaps = newAnnots.slice();\\n        for (const [key, annotation] of annotationStorage) {\\n          if (!key.startsWith(AnnotationEditorPrefix)) {\\n            continue;\\n          }\\n          if (annotation.bitmap && missingBitmaps.has(annotation.bitmapId)) {\\n            annotationWithBitmaps.push(annotation);\\n          }\\n        }\\n        \u002F\u002F The array annotationWithBitmaps cannot be empty: the check above\\n        \u002F\u002F makes sure to have at least one annotation containing the bitmap.\\n        imagePromises = AnnotationFactory.generateImages(\\n          annotationWithBitmaps,\\n          this.xref,\\n          isOffscreenCanvasSupported\\n        );\\n      } else {\\n        imagePromises = AnnotationFactory.generateImages(\\n          newAnnots,\\n          this.xref,\\n          isOffscreenCanvasSupported\\n        );\\n      }\\n\\n      deletedAnnotations = new RefSet();\\n      this.#replaceIdByRef(newAnnots, deletedAnnotations, null);\\n\\n      newAnnotationsPromise = annotationGlobalsPromise.then(\\n        annotationGlobals => {\\n          if (!annotationGlobals) {\\n            return null;\\n          }\\n\\n          return AnnotationFactory.printNewAnnotations(\\n            annotationGlobals,\\n            partialEvaluator,\\n            task,\\n            newAnnots,\\n            imagePromises\\n          );\\n        }\\n      );\\n    }\\n\\n    const pageListPromise = Promise.all([\\n      contentStreamPromise,\\n      resourcesPromise,\\n    ]).then(([contentStream]) => {\\n      const opList = new OperatorList(intent, sink);\\n\\n      handler.send(\\\"StartRenderPage\\\", {\\n        transparency: partialEvaluator.hasBlendModes(\\n          this.resources,\\n          this.nonBlendModesSet\\n        ),\\n        pageIndex: this.pageIndex,\\n        cacheKey,\\n      });\\n\\n      return partialEvaluator\\n        .getOperatorList({\\n          stream: contentStream,\\n          task,\\n          resources: this.resources,\\n          operatorList: opList,\\n        })\\n        .then(function () {\\n          return opList;\\n        });\\n    });\\n\\n    \u002F\u002F Fetch the page's annotations and add their operator lists to the\\n    \u002F\u002F page's operator list to render them.\\n    return Promise.all([\\n      pageListPromise,\\n      this._parsedAnnotations,\\n      newAnnotationsPromise,\\n    ]).then(function ([pageOpList, annotations, newAnnotations]) {\\n      if (newAnnotations) {\\n        \u002F\u002F Some annotations can already exist (if it has the refToReplace\\n        \u002F\u002F property). In this case, we replace the old annotation by the new\\n        \u002F\u002F one.\\n        annotations = annotations.filter(\\n          a => !(a.ref && deletedAnnotations.has(a.ref))\\n        );\\n        for (let i = 0, ii = newAnnotations.length; i \u003C ii; i++) {\\n          const newAnnotation = newAnnotations[i];\\n          if (newAnnotation.refToReplace) {\\n            const j = annotations.findIndex(\\n              a => a.ref && isRefsEqual(a.ref, newAnnotation.refToReplace)\\n            );\\n            if (j >= 0) {\\n              annotations.splice(j, 1, newAnnotation);\\n              newAnnotations.splice(i--, 1);\\n              ii--;\\n            }\\n          }\\n        }\\n        annotations = annotations.concat(newAnnotations);\\n      }\\n      if (\\n        annotations.length === 0 ||\\n        intent & RenderingIntentFlag.ANNOTATIONS_DISABLE\\n      ) {\\n        pageOpList.flush(\u002F* lastChunk = *\u002F true);\\n        return { length: pageOpList.totalLength };\\n      }\\n      const renderForms = !!(intent & RenderingIntentFlag.ANNOTATIONS_FORMS),\\n        intentAny = !!(intent & RenderingIntentFlag.ANY),\\n        intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\\n        intentPrint = !!(intent & RenderingIntentFlag.PRINT);\\n\\n      \u002F\u002F Collect the operator list promises for the annotations. Each promise\\n      \u002F\u002F is resolved with the complete operator list for a single annotation.\\n      const opListPromises = [];\\n      for (const annotation of annotations) {\\n        if (\\n          intentAny ||\\n          (intentDisplay &&\\n            annotation.mustBeViewed(annotationStorage, renderForms)) ||\\n          (intentPrint && annotation.mustBePrinted(annotationStorage))\\n        ) {\\n          opListPromises.push(\\n            annotation\\n              .getOperatorList(\\n                partialEvaluator,\\n                task,\\n                intent,\\n                renderForms,\\n                annotationStorage\\n              )\\n              .catch(function (reason) {\\n                warn(\\n                  \\\"getOperatorList - ignoring annotation data during \\\" +\\n                    `\\\"${task.name}\\\" task: \\\"${reason}\\\".`\\n                );\\n                return {\\n                  opList: null,\\n                  separateForm: false,\\n                  separateCanvas: false,\\n                };\\n              })\\n          );\\n        }\\n      }\\n\\n      return Promise.all(opListPromises).then(function (opLists) {\\n        let form = false,\\n          canvas = false;\\n\\n        for (const { opList, separateForm, separateCanvas } of opLists) {\\n          pageOpList.addOpList(opList);\\n\\n          form ||= separateForm;\\n          canvas ||= separateCanvas;\\n        }\\n        pageOpList.flush(\\n          \u002F* lastChunk = *\u002F true,\\n          \u002F* separateAnnots = *\u002F { form, canvas }\\n        );\\n        return { length: pageOpList.totalLength };\\n      });\\n    });\\n  }\\n\\n  async extractTextContent({\\n    handler,\\n    task,\\n    includeMarkedContent,\\n    disableNormalization,\\n    sink,\\n  }) {\\n    const contentStreamPromise = this.getContentStream();\\n    const resourcesPromise = this.loadResources([\\n      \\\"ExtGState\\\",\\n      \\\"Font\\\",\\n      \\\"Properties\\\",\\n      \\\"XObject\\\",\\n    ]);\\n    const langPromise = this.pdfManager.ensureCatalog(\\\"lang\\\");\\n\\n    const [contentStream, , lang] = await Promise.all([\\n      contentStreamPromise,\\n      resourcesPromise,\\n      langPromise,\\n    ]);\\n    const partialEvaluator = new PartialEvaluator({\\n      xref: this.xref,\\n      handler,\\n      pageIndex: this.pageIndex,\\n      idFactory: this._localIdFactory,\\n      fontCache: this.fontCache,\\n      builtInCMapCache: this.builtInCMapCache,\\n      standardFontDataCache: this.standardFontDataCache,\\n      globalImageCache: this.globalImageCache,\\n      systemFontCache: this.systemFontCache,\\n      options: this.evaluatorOptions,\\n    });\\n\\n    return partialEvaluator.getTextContent({\\n      stream: contentStream,\\n      task,\\n      resources: this.resources,\\n      includeMarkedContent,\\n      disableNormalization,\\n      sink,\\n      viewBox: this.view,\\n      lang,\\n    });\\n  }\\n\\n  async getStructTree() {\\n    const structTreeRoot =\\n      await this.pdfManager.ensureCatalog(\\\"structTreeRoot\\\");\\n    if (!structTreeRoot) {\\n      return null;\\n    }\\n    \u002F\u002F Ensure that the structTree will contain the page's annotations.\\n    await this._parsedAnnotations;\\n\\n    const structTree = await this.pdfManager.ensure(this, \\\"_parseStructTree\\\", [\\n      structTreeRoot,\\n    ]);\\n    return structTree.serializable;\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _parseStructTree(structTreeRoot) {\\n    const tree = new StructTreePage(structTreeRoot, this.pageDict);\\n    tree.parse(this.ref);\\n    return tree;\\n  }\\n\\n  async getAnnotationsData(handler, task, intent) {\\n    const annotations = await this._parsedAnnotations;\\n    if (annotations.length === 0) {\\n      return annotations;\\n    }\\n\\n    const annotationsData = [],\\n      textContentPromises = [];\\n    let partialEvaluator;\\n\\n    const intentAny = !!(intent & RenderingIntentFlag.ANY),\\n      intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\\n      intentPrint = !!(intent & RenderingIntentFlag.PRINT);\\n\\n    for (const annotation of annotations) {\\n      \u002F\u002F Get the annotation even if it's hidden because\\n      \u002F\u002F JS can change its display.\\n      const isVisible = intentAny || (intentDisplay && annotation.viewable);\\n      if (isVisible || (intentPrint && annotation.printable)) {\\n        annotationsData.push(annotation.data);\\n      }\\n\\n      if (annotation.hasTextContent && isVisible) {\\n        partialEvaluator ||= new PartialEvaluator({\\n          xref: this.xref,\\n          handler,\\n          pageIndex: this.pageIndex,\\n          idFactory: this._localIdFactory,\\n          fontCache: this.fontCache,\\n          builtInCMapCache: this.builtInCMapCache,\\n          standardFontDataCache: this.standardFontDataCache,\\n          globalImageCache: this.globalImageCache,\\n          systemFontCache: this.systemFontCache,\\n          options: this.evaluatorOptions,\\n        });\\n\\n        textContentPromises.push(\\n          annotation\\n            .extractTextContent(partialEvaluator, task, [\\n              -Infinity,\\n              -Infinity,\\n              Infinity,\\n              Infinity,\\n            ])\\n            .catch(function (reason) {\\n              warn(\\n                `getAnnotationsData - ignoring textContent during \\\"${task.name}\\\" task: \\\"${reason}\\\".`\\n              );\\n            })\\n        );\\n      }\\n    }\\n\\n    await Promise.all(textContentPromises);\\n    return annotationsData;\\n  }\\n\\n  get annotations() {\\n    const annots = this._getInheritableProperty(\\\"Annots\\\");\\n    return shadow(this, \\\"annotations\\\", Array.isArray(annots) ? annots : []);\\n  }\\n\\n  get _parsedAnnotations() {\\n    const promise = this.pdfManager\\n      .ensure(this, \\\"annotations\\\")\\n      .then(async annots => {\\n        if (annots.length === 0) {\\n          return annots;\\n        }\\n        const annotationGlobals =\\n          await this.pdfManager.ensureDoc(\\\"annotationGlobals\\\");\\n        if (!annotationGlobals) {\\n          return [];\\n        }\\n\\n        const annotationPromises = [];\\n        for (const annotationRef of annots) {\\n          annotationPromises.push(\\n            AnnotationFactory.create(\\n              this.xref,\\n              annotationRef,\\n              annotationGlobals,\\n              this._localIdFactory,\\n              \u002F* collectFields *\u002F false,\\n              this.ref\\n            ).catch(function (reason) {\\n              warn(`_parsedAnnotations: \\\"${reason}\\\".`);\\n              return null;\\n            })\\n          );\\n        }\\n\\n        const sortedAnnotations = [];\\n        let popupAnnotations, widgetAnnotations;\\n        \u002F\u002F Ensure that PopupAnnotations are handled last, since they depend on\\n        \u002F\u002F their parent Annotation in the display layer; fixes issue 11362.\\n        for (const annotation of await Promise.all(annotationPromises)) {\\n          if (!annotation) {\\n            continue;\\n          }\\n          if (annotation instanceof WidgetAnnotation) {\\n            (widgetAnnotations ||= []).push(annotation);\\n            continue;\\n          }\\n          if (annotation instanceof PopupAnnotation) {\\n            (popupAnnotations ||= []).push(annotation);\\n            continue;\\n          }\\n          sortedAnnotations.push(annotation);\\n        }\\n        if (widgetAnnotations) {\\n          sortedAnnotations.push(...widgetAnnotations);\\n        }\\n        if (popupAnnotations) {\\n          sortedAnnotations.push(...popupAnnotations);\\n        }\\n\\n        return sortedAnnotations;\\n      });\\n\\n    return shadow(this, \\\"_parsedAnnotations\\\", promise);\\n  }\\n\\n  get jsActions() {\\n    const actions = collectActions(\\n      this.xref,\\n      this.pageDict,\\n      PageActionEventType\\n    );\\n    return shadow(this, \\\"jsActions\\\", actions);\\n  }\\n}\\n\\nconst PDF_HEADER_SIGNATURE = new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d]);\\nconst STARTXREF_SIGNATURE = new Uint8Array([\\n  0x73, 0x74, 0x61, 0x72, 0x74, 0x78, 0x72, 0x65, 0x66,\\n]);\\nconst ENDOBJ_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a]);\\n\\nconst FINGERPRINT_FIRST_BYTES = 1024;\\nconst EMPTY_FINGERPRINT =\\n  \\\"\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\";\\n\\nfunction find(stream, signature, limit = 1024, backwards = false) {\\n  if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n    assert(limit > 0, 'The \\\"limit\\\" must be a positive integer.');\\n  }\\n  const signatureLength = signature.length;\\n\\n  const scanBytes = stream.peekBytes(limit);\\n  const scanLength = scanBytes.length - signatureLength;\\n\\n  if (scanLength \u003C= 0) {\\n    return false;\\n  }\\n  if (backwards) {\\n    const signatureEnd = signatureLength - 1;\\n\\n    let pos = scanBytes.length - 1;\\n    while (pos >= signatureEnd) {\\n      let j = 0;\\n      while (\\n        j \u003C signatureLength &&\\n        scanBytes[pos - j] === signature[signatureEnd - j]\\n      ) {\\n        j++;\\n      }\\n      if (j >= signatureLength) {\\n        \u002F\u002F `signature` found.\\n        stream.pos += pos - signatureEnd;\\n        return true;\\n      }\\n      pos--;\\n    }\\n  } else {\\n    \u002F\u002F forwards\\n    let pos = 0;\\n    while (pos \u003C= scanLength) {\\n      let j = 0;\\n      while (j \u003C signatureLength && scanBytes[pos + j] === signature[j]) {\\n        j++;\\n      }\\n      if (j >= signatureLength) {\\n        \u002F\u002F `signature` found.\\n        stream.pos += pos;\\n        return true;\\n      }\\n      pos++;\\n    }\\n  }\\n  return false;\\n}\\n\\n\u002F**\\n * The `PDFDocument` class holds all the (worker-thread) data of the PDF file.\\n *\u002F\\nclass PDFDocument {\\n  constructor(pdfManager, stream) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        stream instanceof BaseStream,\\n        'PDFDocument: Invalid \\\"stream\\\" argument.'\\n      );\\n    }\\n    if (stream.length \u003C= 0) {\\n      throw new InvalidPDFException(\\n        \\\"The PDF file is empty, i.e. its size is zero bytes.\\\"\\n      );\\n    }\\n\\n    this.pdfManager = pdfManager;\\n    this.stream = stream;\\n    this.xref = new XRef(stream, pdfManager);\\n    this._pagePromises = new Map();\\n    this._version = null;\\n\\n    const idCounters = {\\n      font: 0,\\n    };\\n    this._globalIdFactory = class {\\n      static getDocId() {\\n        return `g_${pdfManager.docId}`;\\n      }\\n\\n      static createFontId() {\\n        return `f${++idCounters.font}`;\\n      }\\n\\n      static createObjId() {\\n        unreachable(\\\"Abstract method `createObjId` called.\\\");\\n      }\\n\\n      static getPageObjId() {\\n        unreachable(\\\"Abstract method `getPageObjId` called.\\\");\\n      }\\n    };\\n  }\\n\\n  parse(recoveryMode) {\\n    this.xref.parse(recoveryMode);\\n    this.catalog = new Catalog(this.pdfManager, this.xref);\\n  }\\n\\n  get linearization() {\\n    let linearization = null;\\n    try {\\n      linearization = Linearization.create(this.stream);\\n    } catch (err) {\\n      if (err instanceof MissingDataException) {\\n        throw err;\\n      }\\n      info(err);\\n    }\\n    return shadow(this, \\\"linearization\\\", linearization);\\n  }\\n\\n  get startXRef() {\\n    const stream = this.stream;\\n    let startXRef = 0;\\n\\n    if (this.linearization) {\\n      \u002F\u002F Find the end of the first object.\\n      stream.reset();\\n      if (find(stream, ENDOBJ_SIGNATURE)) {\\n        stream.skip(6);\\n\\n        let ch = stream.peekByte();\\n        while (isWhiteSpace(ch)) {\\n          stream.pos++;\\n          ch = stream.peekByte();\\n        }\\n        startXRef = stream.pos - stream.start;\\n      }\\n    } else {\\n      \u002F\u002F Find `startxref` by checking backwards from the end of the file.\\n      const step = 1024;\\n      const startXRefLength = STARTXREF_SIGNATURE.length;\\n      let found = false,\\n        pos = stream.end;\\n\\n      while (!found && pos > 0) {\\n        pos -= step - startXRefLength;\\n        if (pos \u003C 0) {\\n          pos = 0;\\n        }\\n        stream.pos = pos;\\n        found = find(stream, STARTXREF_SIGNATURE, step, true);\\n      }\\n\\n      if (found) {\\n        stream.skip(9);\\n        let ch;\\n        do {\\n          ch = stream.getByte();\\n        } while (isWhiteSpace(ch));\\n        let str = \\\"\\\";\\n        while (ch >= \u002F* Space = *\u002F 0x20 && ch \u003C= \u002F* '9' = *\u002F 0x39) {\\n          str += String.fromCharCode(ch);\\n          ch = stream.getByte();\\n        }\\n        startXRef = parseInt(str, 10);\\n        if (isNaN(startXRef)) {\\n          startXRef = 0;\\n        }\\n      }\\n    }\\n    return shadow(this, \\\"startXRef\\\", startXRef);\\n  }\\n\\n  \u002F\u002F Find the header, get the PDF format version and setup the\\n  \u002F\u002F stream to start from the header.\\n  checkHeader() {\\n    const stream = this.stream;\\n    stream.reset();\\n\\n    if (!find(stream, PDF_HEADER_SIGNATURE)) {\\n      \u002F\u002F May not be a PDF file, but don't throw an error and let\\n      \u002F\u002F parsing continue.\\n      return;\\n    }\\n    stream.moveStart();\\n\\n    \u002F\u002F Skip over the \\\"%PDF-\\\" prefix, since it was found above.\\n    stream.skip(PDF_HEADER_SIGNATURE.length);\\n    \u002F\u002F Read the PDF format version.\\n    let version = \\\"\\\",\\n      ch;\\n    while (\\n      (ch = stream.getByte()) > \u002F* Space = *\u002F 0x20 &&\\n      version.length \u003C \u002F* MAX_PDF_VERSION_LENGTH = *\u002F 7\\n    ) {\\n      version += String.fromCharCode(ch);\\n    }\\n\\n    if (PDF_VERSION_REGEXP.test(version)) {\\n      this._version = version;\\n    } else {\\n      warn(`Invalid PDF header version: ${version}`);\\n    }\\n  }\\n\\n  parseStartXRef() {\\n    this.xref.setStartXRef(this.startXRef);\\n  }\\n\\n  get numPages() {\\n    let num = 0;\\n    if (this.catalog.hasActualNumPages) {\\n      num = this.catalog.numPages;\\n    } else if (this.xfaFactory) {\\n      \u002F\u002F num is a Promise.\\n      num = this.xfaFactory.getNumPages();\\n    } else if (this.linearization) {\\n      num = this.linearization.numPages;\\n    } else {\\n      num = this.catalog.numPages;\\n    }\\n    return shadow(this, \\\"numPages\\\", num);\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _hasOnlyDocumentSignatures(fields, recursionDepth = 0) {\\n    const RECURSION_LIMIT = 10;\\n\\n    if (!Array.isArray(fields)) {\\n      return false;\\n    }\\n    return fields.every(field => {\\n      field = this.xref.fetchIfRef(field);\\n      if (!(field instanceof Dict)) {\\n        return false;\\n      }\\n      if (field.has(\\\"Kids\\\")) {\\n        if (++recursionDepth > RECURSION_LIMIT) {\\n          warn(\\\"_hasOnlyDocumentSignatures: maximum recursion depth reached\\\");\\n          return false;\\n        }\\n        return this._hasOnlyDocumentSignatures(\\n          field.get(\\\"Kids\\\"),\\n          recursionDepth\\n        );\\n      }\\n      const isSignature = isName(field.get(\\\"FT\\\"), \\\"Sig\\\");\\n      const rectangle = field.get(\\\"Rect\\\");\\n      const isInvisible =\\n        Array.isArray(rectangle) && rectangle.every(value => value === 0);\\n      return isSignature && isInvisible;\\n    });\\n  }\\n\\n  get _xfaStreams() {\\n    const acroForm = this.catalog.acroForm;\\n    if (!acroForm) {\\n      return null;\\n    }\\n\\n    const xfa = acroForm.get(\\\"XFA\\\");\\n    const entries = {\\n      \\\"xdp:xdp\\\": \\\"\\\",\\n      template: \\\"\\\",\\n      datasets: \\\"\\\",\\n      config: \\\"\\\",\\n      connectionSet: \\\"\\\",\\n      localeSet: \\\"\\\",\\n      stylesheet: \\\"\\\",\\n      \\\"\u002Fxdp:xdp\\\": \\\"\\\",\\n    };\\n    if (xfa instanceof BaseStream && !xfa.isEmpty) {\\n      entries[\\\"xdp:xdp\\\"] = xfa;\\n      return entries;\\n    }\\n\\n    if (!Array.isArray(xfa) || xfa.length === 0) {\\n      return null;\\n    }\\n\\n    for (let i = 0, ii = xfa.length; i \u003C ii; i += 2) {\\n      let name;\\n      if (i === 0) {\\n        name = \\\"xdp:xdp\\\";\\n      } else if (i === ii - 2) {\\n        name = \\\"\u002Fxdp:xdp\\\";\\n      } else {\\n        name = xfa[i];\\n      }\\n\\n      if (!entries.hasOwnProperty(name)) {\\n        continue;\\n      }\\n      const data = this.xref.fetchIfRef(xfa[i + 1]);\\n      if (!(data instanceof BaseStream) || data.isEmpty) {\\n        continue;\\n      }\\n      entries[name] = data;\\n    }\\n    return entries;\\n  }\\n\\n  get xfaDatasets() {\\n    const streams = this._xfaStreams;\\n    if (!streams) {\\n      return shadow(this, \\\"xfaDatasets\\\", null);\\n    }\\n    for (const key of [\\\"datasets\\\", \\\"xdp:xdp\\\"]) {\\n      const stream = streams[key];\\n      if (!stream) {\\n        continue;\\n      }\\n      try {\\n        const str = stringToUTF8String(stream.getString());\\n        const data = { [key]: str };\\n        return shadow(this, \\\"xfaDatasets\\\", new DatasetReader(data));\\n      } catch {\\n        warn(\\\"XFA - Invalid utf-8 string.\\\");\\n        break;\\n      }\\n    }\\n    return shadow(this, \\\"xfaDatasets\\\", null);\\n  }\\n\\n  get xfaData() {\\n    const streams = this._xfaStreams;\\n    if (!streams) {\\n      return null;\\n    }\\n    const data = Object.create(null);\\n    for (const [key, stream] of Object.entries(streams)) {\\n      if (!stream) {\\n        continue;\\n      }\\n      try {\\n        data[key] = stringToUTF8String(stream.getString());\\n      } catch {\\n        warn(\\\"XFA - Invalid utf-8 string.\\\");\\n        return null;\\n      }\\n    }\\n    return data;\\n  }\\n\\n  get xfaFactory() {\\n    let data;\\n    if (\\n      this.pdfManager.enableXfa &&\\n      this.catalog.needsRendering &&\\n      this.formInfo.hasXfa &&\\n      !this.formInfo.hasAcroForm\\n    ) {\\n      data = this.xfaData;\\n    }\\n    return shadow(this, \\\"xfaFactory\\\", data ? new XFAFactory(data) : null);\\n  }\\n\\n  get isPureXfa() {\\n    return this.xfaFactory ? this.xfaFactory.isValid() : false;\\n  }\\n\\n  get htmlForXfa() {\\n    return this.xfaFactory ? this.xfaFactory.getPages() : null;\\n  }\\n\\n  async loadXfaImages() {\\n    const xfaImagesDict = await this.pdfManager.ensureCatalog(\\\"xfaImages\\\");\\n    if (!xfaImagesDict) {\\n      return;\\n    }\\n\\n    const keys = xfaImagesDict.getKeys();\\n    const objectLoader = new ObjectLoader(xfaImagesDict, keys, this.xref);\\n    await objectLoader.load();\\n\\n    const xfaImages = new Map();\\n    for (const key of keys) {\\n      const stream = xfaImagesDict.get(key);\\n      if (stream instanceof BaseStream) {\\n        xfaImages.set(key, stream.getBytes());\\n      }\\n    }\\n\\n    this.xfaFactory.setImages(xfaImages);\\n  }\\n\\n  async loadXfaFonts(handler, task) {\\n    const acroForm = await this.pdfManager.ensureCatalog(\\\"acroForm\\\");\\n    if (!acroForm) {\\n      return;\\n    }\\n    const resources = await acroForm.getAsync(\\\"DR\\\");\\n    if (!(resources instanceof Dict)) {\\n      return;\\n    }\\n    const objectLoader = new ObjectLoader(resources, [\\\"Font\\\"], this.xref);\\n    await objectLoader.load();\\n\\n    const fontRes = resources.get(\\\"Font\\\");\\n    if (!(fontRes instanceof Dict)) {\\n      return;\\n    }\\n\\n    const options = Object.assign(\\n      Object.create(null),\\n      this.pdfManager.evaluatorOptions\\n    );\\n    options.useSystemFonts = false;\\n\\n    const partialEvaluator = new PartialEvaluator({\\n      xref: this.xref,\\n      handler,\\n      pageIndex: -1,\\n      idFactory: this._globalIdFactory,\\n      fontCache: this.catalog.fontCache,\\n      builtInCMapCache: this.catalog.builtInCMapCache,\\n      standardFontDataCache: this.catalog.standardFontDataCache,\\n      options,\\n    });\\n    const operatorList = new OperatorList();\\n    const pdfFonts = [];\\n    const initialState = {\\n      get font() {\\n        return pdfFonts.at(-1);\\n      },\\n      set font(font) {\\n        pdfFonts.push(font);\\n      },\\n      clone() {\\n        return this;\\n      },\\n    };\\n\\n    const fonts = new Map();\\n    fontRes.forEach((fontName, font) => {\\n      fonts.set(fontName, font);\\n    });\\n    const promises = [];\\n\\n    for (const [fontName, font] of fonts) {\\n      const descriptor = font.get(\\\"FontDescriptor\\\");\\n      if (!(descriptor instanceof Dict)) {\\n        continue;\\n      }\\n      let fontFamily = descriptor.get(\\\"FontFamily\\\");\\n      \u002F\u002F For example, \\\"Wingdings 3\\\" is not a valid font name in the css specs.\\n      fontFamily = fontFamily.replaceAll(\u002F[ ]+(\\\\d)\u002Fg, \\\"$1\\\");\\n      const fontWeight = descriptor.get(\\\"FontWeight\\\");\\n\\n      \u002F\u002F Angle is expressed in degrees counterclockwise in PDF\\n      \u002F\u002F when it's clockwise in CSS\\n      \u002F\u002F (see https:\u002F\u002Fdrafts.csswg.org\u002Fcss-fonts-4\u002F#valdef-font-style-oblique-angle)\\n      const italicAngle = -descriptor.get(\\\"ItalicAngle\\\");\\n      const cssFontInfo = { fontFamily, fontWeight, italicAngle };\\n\\n      if (!validateCSSFont(cssFontInfo)) {\\n        continue;\\n      }\\n      promises.push(\\n        partialEvaluator\\n          .handleSetFont(\\n            resources,\\n            [Name.get(fontName), 1],\\n            \u002F* fontRef = *\u002F null,\\n            operatorList,\\n            task,\\n            initialState,\\n            \u002F* fallbackFontDict = *\u002F null,\\n            \u002F* cssFontInfo = *\u002F cssFontInfo\\n          )\\n          .catch(function (reason) {\\n            warn(`loadXfaFonts: \\\"${reason}\\\".`);\\n            return null;\\n          })\\n      );\\n    }\\n\\n    await Promise.all(promises);\\n    const missingFonts = this.xfaFactory.setFonts(pdfFonts);\\n\\n    if (!missingFonts) {\\n      return;\\n    }\\n\\n    options.ignoreErrors = true;\\n    promises.length = 0;\\n    pdfFonts.length = 0;\\n\\n    const reallyMissingFonts = new Set();\\n    for (const missing of missingFonts) {\\n      if (!getXfaFontName(`${missing}-Regular`)) {\\n        \u002F\u002F No substitution available: we'll fallback on Myriad.\\n        reallyMissingFonts.add(missing);\\n      }\\n    }\\n\\n    if (reallyMissingFonts.size) {\\n      missingFonts.push(\\\"PdfJS-Fallback\\\");\\n    }\\n\\n    for (const missing of missingFonts) {\\n      if (reallyMissingFonts.has(missing)) {\\n        continue;\\n      }\\n      for (const fontInfo of [\\n        { name: \\\"Regular\\\", fontWeight: 400, italicAngle: 0 },\\n        { name: \\\"Bold\\\", fontWeight: 700, italicAngle: 0 },\\n        { name: \\\"Italic\\\", fontWeight: 400, italicAngle: 12 },\\n        { name: \\\"BoldItalic\\\", fontWeight: 700, italicAngle: 12 },\\n      ]) {\\n        const name = `${missing}-${fontInfo.name}`;\\n        const dict = getXfaFontDict(name);\\n\\n        promises.push(\\n          partialEvaluator\\n            .handleSetFont(\\n              resources,\\n              [Name.get(name), 1],\\n              \u002F* fontRef = *\u002F null,\\n              operatorList,\\n              task,\\n              initialState,\\n              \u002F* fallbackFontDict = *\u002F dict,\\n              \u002F* cssFontInfo = *\u002F {\\n                fontFamily: missing,\\n                fontWeight: fontInfo.fontWeight,\\n                italicAngle: fontInfo.italicAngle,\\n              }\\n            )\\n            .catch(function (reason) {\\n              warn(`loadXfaFonts: \\\"${reason}\\\".`);\\n              return null;\\n            })\\n        );\\n      }\\n    }\\n\\n    await Promise.all(promises);\\n    this.xfaFactory.appendFonts(pdfFonts, reallyMissingFonts);\\n  }\\n\\n  async serializeXfaData(annotationStorage) {\\n    return this.xfaFactory\\n      ? this.xfaFactory.serializeData(annotationStorage)\\n      : null;\\n  }\\n\\n  \u002F**\\n   * The specification states in section 7.5.2 that the version from\\n   * the catalog, if present, should overwrite the version from the header.\\n   *\u002F\\n  get version() {\\n    return this.catalog.version || this._version;\\n  }\\n\\n  get formInfo() {\\n    const formInfo = {\\n      hasFields: false,\\n      hasAcroForm: false,\\n      hasXfa: false,\\n      hasSignatures: false,\\n    };\\n    const acroForm = this.catalog.acroForm;\\n    if (!acroForm) {\\n      return shadow(this, \\\"formInfo\\\", formInfo);\\n    }\\n\\n    try {\\n      const fields = acroForm.get(\\\"Fields\\\");\\n      const hasFields = Array.isArray(fields) && fields.length > 0;\\n      formInfo.hasFields = hasFields; \u002F\u002F Used by the `fieldObjects` getter.\\n\\n      \u002F\u002F The document contains XFA data if the `XFA` entry is a non-empty\\n      \u002F\u002F array or stream.\\n      const xfa = acroForm.get(\\\"XFA\\\");\\n      formInfo.hasXfa =\\n        (Array.isArray(xfa) && xfa.length > 0) ||\\n        (xfa instanceof BaseStream && !xfa.isEmpty);\\n\\n      \u002F\u002F The document contains AcroForm data if the `Fields` entry is a\\n      \u002F\u002F non-empty array and it doesn't consist of only document signatures.\\n      \u002F\u002F This second check is required for files that don't actually contain\\n      \u002F\u002F AcroForm data (only XFA data), but that use the `Fields` entry to\\n      \u002F\u002F store (invisible) document signatures. This can be detected using\\n      \u002F\u002F the first bit of the `SigFlags` integer (see Table 219 in the\\n      \u002F\u002F specification).\\n      const sigFlags = acroForm.get(\\\"SigFlags\\\");\\n      const hasSignatures = !!(sigFlags & 0x1);\\n      const hasOnlyDocumentSignatures =\\n        hasSignatures && this._hasOnlyDocumentSignatures(fields);\\n      formInfo.hasAcroForm = hasFields && !hasOnlyDocumentSignatures;\\n      formInfo.hasSignatures = hasSignatures;\\n    } catch (ex) {\\n      if (ex instanceof MissingDataException) {\\n        throw ex;\\n      }\\n      warn(`Cannot fetch form information: \\\"${ex}\\\".`);\\n    }\\n    return shadow(this, \\\"formInfo\\\", formInfo);\\n  }\\n\\n  get documentInfo() {\\n    const docInfo = {\\n      PDFFormatVersion: this.version,\\n      Language: this.catalog.lang,\\n      EncryptFilterName: this.xref.encrypt\\n        ? this.xref.encrypt.filterName\\n        : null,\\n      IsLinearized: !!this.linearization,\\n      IsAcroFormPresent: this.formInfo.hasAcroForm,\\n      IsXFAPresent: this.formInfo.hasXfa,\\n      IsCollectionPresent: !!this.catalog.collection,\\n      IsSignaturesPresent: this.formInfo.hasSignatures,\\n    };\\n\\n    let infoDict;\\n    try {\\n      infoDict = this.xref.trailer.get(\\\"Info\\\");\\n    } catch (err) {\\n      if (err instanceof MissingDataException) {\\n        throw err;\\n      }\\n      info(\\\"The document information dictionary is invalid.\\\");\\n    }\\n    if (!(infoDict instanceof Dict)) {\\n      return shadow(this, \\\"documentInfo\\\", docInfo);\\n    }\\n\\n    for (const key of infoDict.getKeys()) {\\n      const value = infoDict.get(key);\\n\\n      switch (key) {\\n        case \\\"Title\\\":\\n        case \\\"Author\\\":\\n        case \\\"Subject\\\":\\n        case \\\"Keywords\\\":\\n        case \\\"Creator\\\":\\n        case \\\"Producer\\\":\\n        case \\\"CreationDate\\\":\\n        case \\\"ModDate\\\":\\n          if (typeof value === \\\"string\\\") {\\n            docInfo[key] = stringToPDFString(value);\\n            continue;\\n          }\\n          break;\\n        case \\\"Trapped\\\":\\n          if (value instanceof Name) {\\n            docInfo[key] = value;\\n            continue;\\n          }\\n          break;\\n        default:\\n          \u002F\u002F For custom values, only accept white-listed types to prevent\\n          \u002F\u002F errors that would occur when trying to send non-serializable\\n          \u002F\u002F objects to the main-thread (for example `Dict` or `Stream`).\\n          let customValue;\\n          switch (typeof value) {\\n            case \\\"string\\\":\\n              customValue = stringToPDFString(value);\\n              break;\\n            case \\\"number\\\":\\n            case \\\"boolean\\\":\\n              customValue = value;\\n              break;\\n            default:\\n              if (value instanceof Name) {\\n                customValue = value;\\n              }\\n              break;\\n          }\\n\\n          if (customValue === undefined) {\\n            warn(`Bad value, for custom key \\\"${key}\\\", in Info: ${value}.`);\\n            continue;\\n          }\\n          if (!docInfo.Custom) {\\n            docInfo.Custom = Object.create(null);\\n          }\\n          docInfo.Custom[key] = customValue;\\n          continue;\\n      }\\n      warn(`Bad value, for key \\\"${key}\\\", in Info: ${value}.`);\\n    }\\n    return shadow(this, \\\"documentInfo\\\", docInfo);\\n  }\\n\\n  get fingerprints() {\\n    function validate(data) {\\n      return (\\n        typeof data === \\\"string\\\" &&\\n        data.length > 0 &&\\n        data !== EMPTY_FINGERPRINT\\n      );\\n    }\\n\\n    function hexString(hash) {\\n      const buf = [];\\n      for (const num of hash) {\\n        const hex = num.toString(16);\\n        buf.push(hex.padStart(2, \\\"0\\\"));\\n      }\\n      return buf.join(\\\"\\\");\\n    }\\n\\n    const idArray = this.xref.trailer.get(\\\"ID\\\");\\n    let hashOriginal, hashModified;\\n    if (Array.isArray(idArray) && validate(idArray[0])) {\\n      hashOriginal = stringToBytes(idArray[0]);\\n\\n      if (idArray[1] !== idArray[0] && validate(idArray[1])) {\\n        hashModified = stringToBytes(idArray[1]);\\n      }\\n    } else {\\n      hashOriginal = calculateMD5(\\n        this.stream.getByteRange(0, FINGERPRINT_FIRST_BYTES),\\n        0,\\n        FINGERPRINT_FIRST_BYTES\\n      );\\n    }\\n\\n    return shadow(this, \\\"fingerprints\\\", [\\n      hexString(hashOriginal),\\n      hashModified ? hexString(hashModified) : null,\\n    ]);\\n  }\\n\\n  async _getLinearizationPage(pageIndex) {\\n    const { catalog, linearization, xref } = this;\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        linearization?.pageFirst === pageIndex,\\n        \\\"_getLinearizationPage - invalid pageIndex argument.\\\"\\n      );\\n    }\\n\\n    const ref = Ref.get(linearization.objectNumberFirst, 0);\\n    try {\\n      const obj = await xref.fetchAsync(ref);\\n      \u002F\u002F Ensure that the object that was found is actually a Page dictionary.\\n      if (obj instanceof Dict) {\\n        let type = obj.getRaw(\\\"Type\\\");\\n        if (type instanceof Ref) {\\n          type = await xref.fetchAsync(type);\\n        }\\n        if (\\n          isName(type, \\\"Page\\\") ||\\n          (!obj.has(\\\"Type\\\") && !obj.has(\\\"Kids\\\") && obj.has(\\\"Contents\\\"))\\n        ) {\\n          if (!catalog.pageKidsCountCache.has(ref)) {\\n            catalog.pageKidsCountCache.put(ref, 1); \u002F\u002F Cache the Page reference.\\n          }\\n          \u002F\u002F Help improve performance of the `Catalog.getPageIndex` method.\\n          if (!catalog.pageIndexCache.has(ref)) {\\n            catalog.pageIndexCache.put(ref, 0);\\n          }\\n\\n          return [obj, ref];\\n        }\\n      }\\n      throw new FormatError(\\n        \\\"The Linearization dictionary doesn't point to a valid Page dictionary.\\\"\\n      );\\n    } catch (reason) {\\n      warn(`_getLinearizationPage: \\\"${reason.message}\\\".`);\\n      return catalog.getPageDict(pageIndex);\\n    }\\n  }\\n\\n  getPage(pageIndex) {\\n    const cachedPromise = this._pagePromises.get(pageIndex);\\n    if (cachedPromise) {\\n      return cachedPromise;\\n    }\\n    const { catalog, linearization, xfaFactory } = this;\\n\\n    let promise;\\n    if (xfaFactory) {\\n      promise = Promise.resolve([Dict.empty, null]);\\n    } else if (linearization?.pageFirst === pageIndex) {\\n      promise = this._getLinearizationPage(pageIndex);\\n    } else {\\n      promise = catalog.getPageDict(pageIndex);\\n    }\\n    \u002F\u002F eslint-disable-next-line arrow-body-style\\n    promise = promise.then(([pageDict, ref]) => {\\n      return new Page({\\n        pdfManager: this.pdfManager,\\n        xref: this.xref,\\n        pageIndex,\\n        pageDict,\\n        ref,\\n        globalIdFactory: this._globalIdFactory,\\n        fontCache: catalog.fontCache,\\n        builtInCMapCache: catalog.builtInCMapCache,\\n        standardFontDataCache: catalog.standardFontDataCache,\\n        globalImageCache: catalog.globalImageCache,\\n        systemFontCache: catalog.systemFontCache,\\n        nonBlendModesSet: catalog.nonBlendModesSet,\\n        xfaFactory,\\n      });\\n    });\\n\\n    this._pagePromises.set(pageIndex, promise);\\n    return promise;\\n  }\\n\\n  async checkFirstPage(recoveryMode = false) {\\n    if (recoveryMode) {\\n      return;\\n    }\\n    try {\\n      await this.getPage(0);\\n    } catch (reason) {\\n      if (reason instanceof XRefEntryException) {\\n        \u002F\u002F Clear out the various caches to ensure that we haven't stored any\\n        \u002F\u002F inconsistent and\u002For incorrect state, since that could easily break\\n        \u002F\u002F subsequent `this.getPage` calls.\\n        this._pagePromises.delete(0);\\n        await this.cleanup();\\n\\n        throw new XRefParseException();\\n      }\\n    }\\n  }\\n\\n  async checkLastPage(recoveryMode = false) {\\n    const { catalog, pdfManager } = this;\\n\\n    catalog.setActualNumPages(); \u002F\u002F Ensure that it's always reset.\\n    let numPages;\\n\\n    try {\\n      await Promise.all([\\n        pdfManager.ensureDoc(\\\"xfaFactory\\\"),\\n        pdfManager.ensureDoc(\\\"linearization\\\"),\\n        pdfManager.ensureCatalog(\\\"numPages\\\"),\\n      ]);\\n\\n      if (this.xfaFactory) {\\n        return; \u002F\u002F The Page count is always calculated for XFA-documents.\\n      } else if (this.linearization) {\\n        numPages = this.linearization.numPages;\\n      } else {\\n        numPages = catalog.numPages;\\n      }\\n\\n      if (!Number.isInteger(numPages)) {\\n        throw new FormatError(\\\"Page count is not an integer.\\\");\\n      } else if (numPages \u003C= 1) {\\n        return;\\n      }\\n      await this.getPage(numPages - 1);\\n    } catch (reason) {\\n      \u002F\u002F Clear out the various caches to ensure that we haven't stored any\\n      \u002F\u002F inconsistent and\u002For incorrect state, since that could easily break\\n      \u002F\u002F subsequent `this.getPage` calls.\\n      this._pagePromises.delete(numPages - 1);\\n      await this.cleanup();\\n\\n      if (reason instanceof XRefEntryException && !recoveryMode) {\\n        throw new XRefParseException();\\n      }\\n      warn(`checkLastPage - invalid \u002FPages tree \u002FCount: ${numPages}.`);\\n\\n      let pagesTree;\\n      try {\\n        pagesTree = await catalog.getAllPageDicts(recoveryMode);\\n      } catch (reasonAll) {\\n        if (reasonAll instanceof XRefEntryException && !recoveryMode) {\\n          throw new XRefParseException();\\n        }\\n        catalog.setActualNumPages(1);\\n        return;\\n      }\\n\\n      for (const [pageIndex, [pageDict, ref]] of pagesTree) {\\n        let promise;\\n        if (pageDict instanceof Error) {\\n          promise = Promise.reject(pageDict);\\n\\n          \u002F\u002F Prevent \\\"uncaught exception: Object\\\"-messages in the console.\\n          promise.catch(() => {});\\n        } else {\\n          promise = Promise.resolve(\\n            new Page({\\n              pdfManager,\\n              xref: this.xref,\\n              pageIndex,\\n              pageDict,\\n              ref,\\n              globalIdFactory: this._globalIdFactory,\\n              fontCache: catalog.fontCache,\\n              builtInCMapCache: catalog.builtInCMapCache,\\n              standardFontDataCache: catalog.standardFontDataCache,\\n              globalImageCache: catalog.globalImageCache,\\n              systemFontCache: catalog.systemFontCache,\\n              nonBlendModesSet: catalog.nonBlendModesSet,\\n              xfaFactory: null,\\n            })\\n          );\\n        }\\n\\n        this._pagePromises.set(pageIndex, promise);\\n      }\\n      catalog.setActualNumPages(pagesTree.size);\\n    }\\n  }\\n\\n  fontFallback(id, handler) {\\n    return this.catalog.fontFallback(id, handler);\\n  }\\n\\n  async cleanup(manuallyTriggered = false) {\\n    return this.catalog\\n      ? this.catalog.cleanup(manuallyTriggered)\\n      : clearGlobalCaches();\\n  }\\n\\n  async #collectFieldObjects(\\n    name,\\n    fieldRef,\\n    promises,\\n    annotationGlobals,\\n    visitedRefs\\n  ) {\\n    const { xref } = this;\\n\\n    if (!(fieldRef instanceof Ref) || visitedRefs.has(fieldRef)) {\\n      return;\\n    }\\n    visitedRefs.put(fieldRef);\\n    const field = await xref.fetchAsync(fieldRef);\\n    if (!(field instanceof Dict)) {\\n      return;\\n    }\\n    if (field.has(\\\"T\\\")) {\\n      const partName = stringToPDFString(await field.getAsync(\\\"T\\\"));\\n      name = name === \\\"\\\" ? partName : `${name}.${partName}`;\\n    } else {\\n      let obj = field;\\n      while (true) {\\n        obj = obj.getRaw(\\\"Parent\\\");\\n        if (obj instanceof Ref) {\\n          if (visitedRefs.has(obj)) {\\n            break;\\n          }\\n          obj = await xref.fetchAsync(obj);\\n        }\\n        if (!(obj instanceof Dict)) {\\n          break;\\n        }\\n        if (obj.has(\\\"T\\\")) {\\n          const partName = stringToPDFString(await obj.getAsync(\\\"T\\\"));\\n          name = name === \\\"\\\" ? partName : `${name}.${partName}`;\\n          break;\\n        }\\n      }\\n    }\\n\\n    if (!promises.has(name)) {\\n      promises.set(name, []);\\n    }\\n    promises.get(name).push(\\n      AnnotationFactory.create(\\n        xref,\\n        fieldRef,\\n        annotationGlobals,\\n        \u002F* idFactory = *\u002F null,\\n        \u002F* collectFields *\u002F true,\\n        \u002F* pageRef *\u002F null\\n      )\\n        .then(annotation => annotation?.getFieldObject())\\n        .catch(function (reason) {\\n          warn(`#collectFieldObjects: \\\"${reason}\\\".`);\\n          return null;\\n        })\\n    );\\n\\n    if (!field.has(\\\"Kids\\\")) {\\n      return;\\n    }\\n    const kids = await field.getAsync(\\\"Kids\\\");\\n    if (Array.isArray(kids)) {\\n      for (const kid of kids) {\\n        await this.#collectFieldObjects(\\n          name,\\n          kid,\\n          promises,\\n          annotationGlobals,\\n          visitedRefs\\n        );\\n      }\\n    }\\n  }\\n\\n  get fieldObjects() {\\n    if (!this.formInfo.hasFields) {\\n      return shadow(this, \\\"fieldObjects\\\", Promise.resolve(null));\\n    }\\n\\n    const promise = Promise.all([\\n      this.pdfManager.ensureDoc(\\\"annotationGlobals\\\"),\\n      this.pdfManager.ensureCatalog(\\\"acroForm\\\"),\\n    ]).then(async ([annotationGlobals, acroForm]) => {\\n      if (!annotationGlobals) {\\n        return null;\\n      }\\n\\n      const visitedRefs = new RefSet();\\n      const allFields = Object.create(null);\\n      const fieldPromises = new Map();\\n      for (const fieldRef of await acroForm.getAsync(\\\"Fields\\\")) {\\n        await this.#collectFieldObjects(\\n          \\\"\\\",\\n          fieldRef,\\n          fieldPromises,\\n          annotationGlobals,\\n          visitedRefs\\n        );\\n      }\\n\\n      const allPromises = [];\\n      for (const [name, promises] of fieldPromises) {\\n        allPromises.push(\\n          Promise.all(promises).then(fields => {\\n            fields = fields.filter(field => !!field);\\n            if (fields.length > 0) {\\n              allFields[name] = fields;\\n            }\\n          })\\n        );\\n      }\\n\\n      await Promise.all(allPromises);\\n      return allFields;\\n    });\\n\\n    return shadow(this, \\\"fieldObjects\\\", promise);\\n  }\\n\\n  get hasJSActions() {\\n    const promise = this.pdfManager.ensureDoc(\\\"_parseHasJSActions\\\");\\n    return shadow(this, \\\"hasJSActions\\\", promise);\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  async _parseHasJSActions() {\\n    const [catalogJsActions, fieldObjects] = await Promise.all([\\n      this.pdfManager.ensureCatalog(\\\"jsActions\\\"),\\n      this.pdfManager.ensureDoc(\\\"fieldObjects\\\"),\\n    ]);\\n\\n    if (catalogJsActions) {\\n      return true;\\n    }\\n    if (fieldObjects) {\\n      return Object.values(fieldObjects).some(fieldObject =>\\n        fieldObject.some(object => object.actions !== null)\\n      );\\n    }\\n    return false;\\n  }\\n\\n  get calculationOrderIds() {\\n    const acroForm = this.catalog.acroForm;\\n    if (!acroForm?.has(\\\"CO\\\")) {\\n      return shadow(this, \\\"calculationOrderIds\\\", null);\\n    }\\n\\n    const calculationOrder = acroForm.get(\\\"CO\\\");\\n    if (!Array.isArray(calculationOrder) || calculationOrder.length === 0) {\\n      return shadow(this, \\\"calculationOrderIds\\\", null);\\n    }\\n\\n    const ids = [];\\n    for (const id of calculationOrder) {\\n      if (id instanceof Ref) {\\n        ids.push(id.toString());\\n      }\\n    }\\n    if (ids.length === 0) {\\n      return shadow(this, \\\"calculationOrderIds\\\", null);\\n    }\\n    return shadow(this, \\\"calculationOrderIds\\\", ids);\\n  }\\n\\n  get annotationGlobals() {\\n    return shadow(\\n      this,\\n      \\\"annotationGlobals\\\",\\n      AnnotationFactory.createGlobals(this.pdfManager)\\n    );\\n  }\\n}\\n\\nexport { Page, PDFDocument };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  createValidAbsoluteUrl,\\n  FeatureTest,\\n  unreachable,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { ChunkedStreamManager } from \\\".\u002Fchunked_stream.js\\\";\\nimport { MissingDataException } from \\\".\u002Fcore_utils.js\\\";\\nimport { PDFDocument } from \\\".\u002Fdocument.js\\\";\\nimport { Stream } from \\\".\u002Fstream.js\\\";\\n\\nfunction parseDocBaseUrl(url) {\\n  if (url) {\\n    const absoluteUrl = createValidAbsoluteUrl(url);\\n    if (absoluteUrl) {\\n      return absoluteUrl.href;\\n    }\\n    warn(`Invalid absolute docBaseUrl: \\\"${url}\\\".`);\\n  }\\n  return null;\\n}\\n\\nclass BasePdfManager {\\n  constructor(args) {\\n    if (this.constructor === BasePdfManager) {\\n      unreachable(\\\"Cannot initialize BasePdfManager.\\\");\\n    }\\n    this._docBaseUrl = parseDocBaseUrl(args.docBaseUrl);\\n    this._docId = args.docId;\\n    this._password = args.password;\\n    this.enableXfa = args.enableXfa;\\n\\n    \u002F\u002F Check `OffscreenCanvas` support once, rather than repeatedly throughout\\n    \u002F\u002F the worker-thread code.\\n    args.evaluatorOptions.isOffscreenCanvasSupported &&=\\n      FeatureTest.isOffscreenCanvasSupported;\\n    this.evaluatorOptions = Object.freeze(args.evaluatorOptions);\\n  }\\n\\n  get docId() {\\n    return this._docId;\\n  }\\n\\n  get password() {\\n    return this._password;\\n  }\\n\\n  get docBaseUrl() {\\n    return this._docBaseUrl;\\n  }\\n\\n  get catalog() {\\n    return this.pdfDocument.catalog;\\n  }\\n\\n  ensureDoc(prop, args) {\\n    return this.ensure(this.pdfDocument, prop, args);\\n  }\\n\\n  ensureXRef(prop, args) {\\n    return this.ensure(this.pdfDocument.xref, prop, args);\\n  }\\n\\n  ensureCatalog(prop, args) {\\n    return this.ensure(this.pdfDocument.catalog, prop, args);\\n  }\\n\\n  getPage(pageIndex) {\\n    return this.pdfDocument.getPage(pageIndex);\\n  }\\n\\n  fontFallback(id, handler) {\\n    return this.pdfDocument.fontFallback(id, handler);\\n  }\\n\\n  loadXfaFonts(handler, task) {\\n    return this.pdfDocument.loadXfaFonts(handler, task);\\n  }\\n\\n  loadXfaImages() {\\n    return this.pdfDocument.loadXfaImages();\\n  }\\n\\n  serializeXfaData(annotationStorage) {\\n    return this.pdfDocument.serializeXfaData(annotationStorage);\\n  }\\n\\n  cleanup(manuallyTriggered = false) {\\n    return this.pdfDocument.cleanup(manuallyTriggered);\\n  }\\n\\n  async ensure(obj, prop, args) {\\n    unreachable(\\\"Abstract method `ensure` called\\\");\\n  }\\n\\n  requestRange(begin, end) {\\n    unreachable(\\\"Abstract method `requestRange` called\\\");\\n  }\\n\\n  requestLoadedStream(noFetch = false) {\\n    unreachable(\\\"Abstract method `requestLoadedStream` called\\\");\\n  }\\n\\n  sendProgressiveData(chunk) {\\n    unreachable(\\\"Abstract method `sendProgressiveData` called\\\");\\n  }\\n\\n  updatePassword(password) {\\n    this._password = password;\\n  }\\n\\n  terminate(reason) {\\n    unreachable(\\\"Abstract method `terminate` called\\\");\\n  }\\n}\\n\\nclass LocalPdfManager extends BasePdfManager {\\n  constructor(args) {\\n    super(args);\\n\\n    const stream = new Stream(args.source);\\n    this.pdfDocument = new PDFDocument(this, stream);\\n    this._loadedStreamPromise = Promise.resolve(stream);\\n  }\\n\\n  async ensure(obj, prop, args) {\\n    const value = obj[prop];\\n    if (typeof value === \\\"function\\\") {\\n      return value.apply(obj, args);\\n    }\\n    return value;\\n  }\\n\\n  requestRange(begin, end) {\\n    return Promise.resolve();\\n  }\\n\\n  requestLoadedStream(noFetch = false) {\\n    return this._loadedStreamPromise;\\n  }\\n\\n  terminate(reason) {}\\n}\\n\\nclass NetworkPdfManager extends BasePdfManager {\\n  constructor(args) {\\n    super(args);\\n\\n    this.streamManager = new ChunkedStreamManager(args.source, {\\n      msgHandler: args.handler,\\n      length: args.length,\\n      disableAutoFetch: args.disableAutoFetch,\\n      rangeChunkSize: args.rangeChunkSize,\\n    });\\n    this.pdfDocument = new PDFDocument(this, this.streamManager.getStream());\\n  }\\n\\n  async ensure(obj, prop, args) {\\n    try {\\n      const value = obj[prop];\\n      if (typeof value === \\\"function\\\") {\\n        return value.apply(obj, args);\\n      }\\n      return value;\\n    } catch (ex) {\\n      if (!(ex instanceof MissingDataException)) {\\n        throw ex;\\n      }\\n      await this.requestRange(ex.begin, ex.end);\\n      return this.ensure(obj, prop, args);\\n    }\\n  }\\n\\n  requestRange(begin, end) {\\n    return this.streamManager.requestRange(begin, end);\\n  }\\n\\n  requestLoadedStream(noFetch = false) {\\n    return this.streamManager.requestAllChunks(noFetch);\\n  }\\n\\n  sendProgressiveData(chunk) {\\n    this.streamManager.onReceiveData({ chunk });\\n  }\\n\\n  terminate(reason) {\\n    this.streamManager.abort(reason);\\n  }\\n}\\n\\nexport { LocalPdfManager, NetworkPdfManager };\\n\",\"\u002F* Copyright 2018 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  AbortException,\\n  assert,\\n  MissingPDFException,\\n  PasswordException,\\n  UnexpectedResponseException,\\n  UnknownErrorException,\\n  unreachable,\\n} from \\\".\u002Futil.js\\\";\\n\\nconst CallbackKind = {\\n  UNKNOWN: 0,\\n  DATA: 1,\\n  ERROR: 2,\\n};\\n\\nconst StreamKind = {\\n  UNKNOWN: 0,\\n  CANCEL: 1,\\n  CANCEL_COMPLETE: 2,\\n  CLOSE: 3,\\n  ENQUEUE: 4,\\n  ERROR: 5,\\n  PULL: 6,\\n  PULL_COMPLETE: 7,\\n  START_COMPLETE: 8,\\n};\\n\\nfunction wrapReason(reason) {\\n  if (\\n    !(\\n      reason instanceof Error ||\\n      (typeof reason === \\\"object\\\" && reason !== null)\\n    )\\n  ) {\\n    unreachable(\\n      'wrapReason: Expected \\\"reason\\\" to be a (possibly cloned) Error.'\\n    );\\n  }\\n  switch (reason.name) {\\n    case \\\"AbortException\\\":\\n      return new AbortException(reason.message);\\n    case \\\"MissingPDFException\\\":\\n      return new MissingPDFException(reason.message);\\n    case \\\"PasswordException\\\":\\n      return new PasswordException(reason.message, reason.code);\\n    case \\\"UnexpectedResponseException\\\":\\n      return new UnexpectedResponseException(reason.message, reason.status);\\n    case \\\"UnknownErrorException\\\":\\n      return new UnknownErrorException(reason.message, reason.details);\\n    default:\\n      return new UnknownErrorException(reason.message, reason.toString());\\n  }\\n}\\n\\nclass MessageHandler {\\n  constructor(sourceName, targetName, comObj) {\\n    this.sourceName = sourceName;\\n    this.targetName = targetName;\\n    this.comObj = comObj;\\n    this.callbackId = 1;\\n    this.streamId = 1;\\n    this.streamSinks = Object.create(null);\\n    this.streamControllers = Object.create(null);\\n    this.callbackCapabilities = Object.create(null);\\n    this.actionHandler = Object.create(null);\\n\\n    this._onComObjOnMessage = event => {\\n      const data = event.data;\\n      if (data.targetName !== this.sourceName) {\\n        return;\\n      }\\n      if (data.stream) {\\n        this.#processStreamMessage(data);\\n        return;\\n      }\\n      if (data.callback) {\\n        const callbackId = data.callbackId;\\n        const capability = this.callbackCapabilities[callbackId];\\n        if (!capability) {\\n          throw new Error(`Cannot resolve callback ${callbackId}`);\\n        }\\n        delete this.callbackCapabilities[callbackId];\\n\\n        if (data.callback === CallbackKind.DATA) {\\n          capability.resolve(data.data);\\n        } else if (data.callback === CallbackKind.ERROR) {\\n          capability.reject(wrapReason(data.reason));\\n        } else {\\n          throw new Error(\\\"Unexpected callback case\\\");\\n        }\\n        return;\\n      }\\n      const action = this.actionHandler[data.action];\\n      if (!action) {\\n        throw new Error(`Unknown action from worker: ${data.action}`);\\n      }\\n      if (data.callbackId) {\\n        const cbSourceName = this.sourceName;\\n        const cbTargetName = data.sourceName;\\n\\n        new Promise(function (resolve) {\\n          resolve(action(data.data));\\n        }).then(\\n          function (result) {\\n            comObj.postMessage({\\n              sourceName: cbSourceName,\\n              targetName: cbTargetName,\\n              callback: CallbackKind.DATA,\\n              callbackId: data.callbackId,\\n              data: result,\\n            });\\n          },\\n          function (reason) {\\n            comObj.postMessage({\\n              sourceName: cbSourceName,\\n              targetName: cbTargetName,\\n              callback: CallbackKind.ERROR,\\n              callbackId: data.callbackId,\\n              reason: wrapReason(reason),\\n            });\\n          }\\n        );\\n        return;\\n      }\\n      if (data.streamId) {\\n        this.#createStreamSink(data);\\n        return;\\n      }\\n      action(data.data);\\n    };\\n    comObj.addEventListener(\\\"message\\\", this._onComObjOnMessage);\\n  }\\n\\n  on(actionName, handler) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        typeof handler === \\\"function\\\",\\n        'MessageHandler.on: Expected \\\"handler\\\" to be a function.'\\n      );\\n    }\\n    const ah = this.actionHandler;\\n    if (ah[actionName]) {\\n      throw new Error(`There is already an actionName called \\\"${actionName}\\\"`);\\n    }\\n    ah[actionName] = handler;\\n  }\\n\\n  \u002F**\\n   * Sends a message to the comObj to invoke the action with the supplied data.\\n   * @param {string} actionName - Action to call.\\n   * @param {JSON} data - JSON data to send.\\n   * @param {Array} [transfers] - List of transfers\u002FArrayBuffers.\\n   *\u002F\\n  send(actionName, data, transfers) {\\n    this.comObj.postMessage(\\n      {\\n        sourceName: this.sourceName,\\n        targetName: this.targetName,\\n        action: actionName,\\n        data,\\n      },\\n      transfers\\n    );\\n  }\\n\\n  \u002F**\\n   * Sends a message to the comObj to invoke the action with the supplied data.\\n   * Expects that the other side will callback with the response.\\n   * @param {string} actionName - Action to call.\\n   * @param {JSON} data - JSON data to send.\\n   * @param {Array} [transfers] - List of transfers\u002FArrayBuffers.\\n   * @returns {Promise} Promise to be resolved with response data.\\n   *\u002F\\n  sendWithPromise(actionName, data, transfers) {\\n    const callbackId = this.callbackId++;\\n    const capability = Promise.withResolvers();\\n    this.callbackCapabilities[callbackId] = capability;\\n    try {\\n      this.comObj.postMessage(\\n        {\\n          sourceName: this.sourceName,\\n          targetName: this.targetName,\\n          action: actionName,\\n          callbackId,\\n          data,\\n        },\\n        transfers\\n      );\\n    } catch (ex) {\\n      capability.reject(ex);\\n    }\\n    return capability.promise;\\n  }\\n\\n  \u002F**\\n   * Sends a message to the comObj to invoke the action with the supplied data.\\n   * Expect that the other side will callback to signal 'start_complete'.\\n   * @param {string} actionName - Action to call.\\n   * @param {JSON} data - JSON data to send.\\n   * @param {Object} queueingStrategy - Strategy to signal backpressure based on\\n   *                 internal queue.\\n   * @param {Array} [transfers] - List of transfers\u002FArrayBuffers.\\n   * @returns {ReadableStream} ReadableStream to read data in chunks.\\n   *\u002F\\n  sendWithStream(actionName, data, queueingStrategy, transfers) {\\n    const streamId = this.streamId++,\\n      sourceName = this.sourceName,\\n      targetName = this.targetName,\\n      comObj = this.comObj;\\n\\n    return new ReadableStream(\\n      {\\n        start: controller => {\\n          const startCapability = Promise.withResolvers();\\n          this.streamControllers[streamId] = {\\n            controller,\\n            startCall: startCapability,\\n            pullCall: null,\\n            cancelCall: null,\\n            isClosed: false,\\n          };\\n          comObj.postMessage(\\n            {\\n              sourceName,\\n              targetName,\\n              action: actionName,\\n              streamId,\\n              data,\\n              desiredSize: controller.desiredSize,\\n            },\\n            transfers\\n          );\\n          \u002F\u002F Return Promise for Async process, to signal success\u002Ffailure.\\n          return startCapability.promise;\\n        },\\n\\n        pull: controller => {\\n          const pullCapability = Promise.withResolvers();\\n          this.streamControllers[streamId].pullCall = pullCapability;\\n          comObj.postMessage({\\n            sourceName,\\n            targetName,\\n            stream: StreamKind.PULL,\\n            streamId,\\n            desiredSize: controller.desiredSize,\\n          });\\n          \u002F\u002F Returning Promise will not call \\\"pull\\\"\\n          \u002F\u002F again until current pull is resolved.\\n          return pullCapability.promise;\\n        },\\n\\n        cancel: reason => {\\n          assert(reason instanceof Error, \\\"cancel must have a valid reason\\\");\\n          const cancelCapability = Promise.withResolvers();\\n          this.streamControllers[streamId].cancelCall = cancelCapability;\\n          this.streamControllers[streamId].isClosed = true;\\n          comObj.postMessage({\\n            sourceName,\\n            targetName,\\n            stream: StreamKind.CANCEL,\\n            streamId,\\n            reason: wrapReason(reason),\\n          });\\n          \u002F\u002F Return Promise to signal success or failure.\\n          return cancelCapability.promise;\\n        },\\n      },\\n      queueingStrategy\\n    );\\n  }\\n\\n  #createStreamSink(data) {\\n    const streamId = data.streamId,\\n      sourceName = this.sourceName,\\n      targetName = data.sourceName,\\n      comObj = this.comObj;\\n    const self = this,\\n      action = this.actionHandler[data.action];\\n\\n    const streamSink = {\\n      enqueue(chunk, size = 1, transfers) {\\n        if (this.isCancelled) {\\n          return;\\n        }\\n        const lastDesiredSize = this.desiredSize;\\n        this.desiredSize -= size;\\n        \u002F\u002F Enqueue decreases the desiredSize property of sink,\\n        \u002F\u002F so when it changes from positive to negative,\\n        \u002F\u002F set ready as unresolved promise.\\n        if (lastDesiredSize > 0 && this.desiredSize \u003C= 0) {\\n          this.sinkCapability = Promise.withResolvers();\\n          this.ready = this.sinkCapability.promise;\\n        }\\n        comObj.postMessage(\\n          {\\n            sourceName,\\n            targetName,\\n            stream: StreamKind.ENQUEUE,\\n            streamId,\\n            chunk,\\n          },\\n          transfers\\n        );\\n      },\\n\\n      close() {\\n        if (this.isCancelled) {\\n          return;\\n        }\\n        this.isCancelled = true;\\n        comObj.postMessage({\\n          sourceName,\\n          targetName,\\n          stream: StreamKind.CLOSE,\\n          streamId,\\n        });\\n        delete self.streamSinks[streamId];\\n      },\\n\\n      error(reason) {\\n        assert(reason instanceof Error, \\\"error must have a valid reason\\\");\\n        if (this.isCancelled) {\\n          return;\\n        }\\n        this.isCancelled = true;\\n        comObj.postMessage({\\n          sourceName,\\n          targetName,\\n          stream: StreamKind.ERROR,\\n          streamId,\\n          reason: wrapReason(reason),\\n        });\\n      },\\n\\n      sinkCapability: Promise.withResolvers(),\\n      onPull: null,\\n      onCancel: null,\\n      isCancelled: false,\\n      desiredSize: data.desiredSize,\\n      ready: null,\\n    };\\n\\n    streamSink.sinkCapability.resolve();\\n    streamSink.ready = streamSink.sinkCapability.promise;\\n    this.streamSinks[streamId] = streamSink;\\n\\n    new Promise(function (resolve) {\\n      resolve(action(data.data, streamSink));\\n    }).then(\\n      function () {\\n        comObj.postMessage({\\n          sourceName,\\n          targetName,\\n          stream: StreamKind.START_COMPLETE,\\n          streamId,\\n          success: true,\\n        });\\n      },\\n      function (reason) {\\n        comObj.postMessage({\\n          sourceName,\\n          targetName,\\n          stream: StreamKind.START_COMPLETE,\\n          streamId,\\n          reason: wrapReason(reason),\\n        });\\n      }\\n    );\\n  }\\n\\n  #processStreamMessage(data) {\\n    const streamId = data.streamId,\\n      sourceName = this.sourceName,\\n      targetName = data.sourceName,\\n      comObj = this.comObj;\\n    const streamController = this.streamControllers[streamId],\\n      streamSink = this.streamSinks[streamId];\\n\\n    switch (data.stream) {\\n      case StreamKind.START_COMPLETE:\\n        if (data.success) {\\n          streamController.startCall.resolve();\\n        } else {\\n          streamController.startCall.reject(wrapReason(data.reason));\\n        }\\n        break;\\n      case StreamKind.PULL_COMPLETE:\\n        if (data.success) {\\n          streamController.pullCall.resolve();\\n        } else {\\n          streamController.pullCall.reject(wrapReason(data.reason));\\n        }\\n        break;\\n      case StreamKind.PULL:\\n        \u002F\u002F Ignore any pull after close is called.\\n        if (!streamSink) {\\n          comObj.postMessage({\\n            sourceName,\\n            targetName,\\n            stream: StreamKind.PULL_COMPLETE,\\n            streamId,\\n            success: true,\\n          });\\n          break;\\n        }\\n        \u002F\u002F Pull increases the desiredSize property of sink, so when it changes\\n        \u002F\u002F from negative to positive, set ready property as resolved promise.\\n        if (streamSink.desiredSize \u003C= 0 && data.desiredSize > 0) {\\n          streamSink.sinkCapability.resolve();\\n        }\\n        \u002F\u002F Reset desiredSize property of sink on every pull.\\n        streamSink.desiredSize = data.desiredSize;\\n\\n        new Promise(function (resolve) {\\n          resolve(streamSink.onPull?.());\\n        }).then(\\n          function () {\\n            comObj.postMessage({\\n              sourceName,\\n              targetName,\\n              stream: StreamKind.PULL_COMPLETE,\\n              streamId,\\n              success: true,\\n            });\\n          },\\n          function (reason) {\\n            comObj.postMessage({\\n              sourceName,\\n              targetName,\\n              stream: StreamKind.PULL_COMPLETE,\\n              streamId,\\n              reason: wrapReason(reason),\\n            });\\n          }\\n        );\\n        break;\\n      case StreamKind.ENQUEUE:\\n        assert(streamController, \\\"enqueue should have stream controller\\\");\\n        if (streamController.isClosed) {\\n          break;\\n        }\\n        streamController.controller.enqueue(data.chunk);\\n        break;\\n      case StreamKind.CLOSE:\\n        assert(streamController, \\\"close should have stream controller\\\");\\n        if (streamController.isClosed) {\\n          break;\\n        }\\n        streamController.isClosed = true;\\n        streamController.controller.close();\\n        this.#deleteStreamController(streamController, streamId);\\n        break;\\n      case StreamKind.ERROR:\\n        assert(streamController, \\\"error should have stream controller\\\");\\n        streamController.controller.error(wrapReason(data.reason));\\n        this.#deleteStreamController(streamController, streamId);\\n        break;\\n      case StreamKind.CANCEL_COMPLETE:\\n        if (data.success) {\\n          streamController.cancelCall.resolve();\\n        } else {\\n          streamController.cancelCall.reject(wrapReason(data.reason));\\n        }\\n        this.#deleteStreamController(streamController, streamId);\\n        break;\\n      case StreamKind.CANCEL:\\n        if (!streamSink) {\\n          break;\\n        }\\n\\n        new Promise(function (resolve) {\\n          resolve(streamSink.onCancel?.(wrapReason(data.reason)));\\n        }).then(\\n          function () {\\n            comObj.postMessage({\\n              sourceName,\\n              targetName,\\n              stream: StreamKind.CANCEL_COMPLETE,\\n              streamId,\\n              success: true,\\n            });\\n          },\\n          function (reason) {\\n            comObj.postMessage({\\n              sourceName,\\n              targetName,\\n              stream: StreamKind.CANCEL_COMPLETE,\\n              streamId,\\n              reason: wrapReason(reason),\\n            });\\n          }\\n        );\\n        streamSink.sinkCapability.reject(wrapReason(data.reason));\\n        streamSink.isCancelled = true;\\n        delete this.streamSinks[streamId];\\n        break;\\n      default:\\n        throw new Error(\\\"Unexpected stream case\\\");\\n    }\\n  }\\n\\n  async #deleteStreamController(streamController, streamId) {\\n    \u002F\u002F Delete the `streamController` only when the start, pull, and cancel\\n    \u002F\u002F capabilities have settled, to prevent `TypeError`s.\\n    await Promise.allSettled([\\n      streamController.startCall?.promise,\\n      streamController.pullCall?.promise,\\n      streamController.cancelCall?.promise,\\n    ]);\\n    delete this.streamControllers[streamId];\\n  }\\n\\n  destroy() {\\n    this.comObj.removeEventListener(\\\"message\\\", this._onComObjOnMessage);\\n  }\\n}\\n\\nexport { MessageHandler };\\n\",\"\u002F* Copyright 2019 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { assert } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\n\u002F** @implements {IPDFStream} *\u002F\\nclass PDFWorkerStream {\\n  constructor(msgHandler) {\\n    this._msgHandler = msgHandler;\\n    this._contentLength = null;\\n    this._fullRequestReader = null;\\n    this._rangeRequestReaders = [];\\n  }\\n\\n  getFullReader() {\\n    assert(\\n      !this._fullRequestReader,\\n      \\\"PDFWorkerStream.getFullReader can only be called once.\\\"\\n    );\\n    this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler);\\n    return this._fullRequestReader;\\n  }\\n\\n  getRangeReader(begin, end) {\\n    const reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler);\\n    this._rangeRequestReaders.push(reader);\\n    return reader;\\n  }\\n\\n  cancelAllRequests(reason) {\\n    this._fullRequestReader?.cancel(reason);\\n\\n    for (const reader of this._rangeRequestReaders.slice(0)) {\\n      reader.cancel(reason);\\n    }\\n  }\\n}\\n\\n\u002F** @implements {IPDFStreamReader} *\u002F\\nclass PDFWorkerStreamReader {\\n  constructor(msgHandler) {\\n    this._msgHandler = msgHandler;\\n    this.onProgress = null;\\n\\n    this._contentLength = null;\\n    this._isRangeSupported = false;\\n    this._isStreamingSupported = false;\\n\\n    const readableStream = this._msgHandler.sendWithStream(\\\"GetReader\\\");\\n    this._reader = readableStream.getReader();\\n\\n    this._headersReady = this._msgHandler\\n      .sendWithPromise(\\\"ReaderHeadersReady\\\")\\n      .then(data => {\\n        this._isStreamingSupported = data.isStreamingSupported;\\n        this._isRangeSupported = data.isRangeSupported;\\n        this._contentLength = data.contentLength;\\n      });\\n  }\\n\\n  get headersReady() {\\n    return this._headersReady;\\n  }\\n\\n  get contentLength() {\\n    return this._contentLength;\\n  }\\n\\n  get isStreamingSupported() {\\n    return this._isStreamingSupported;\\n  }\\n\\n  get isRangeSupported() {\\n    return this._isRangeSupported;\\n  }\\n\\n  async read() {\\n    const { value, done } = await this._reader.read();\\n    if (done) {\\n      return { value: undefined, done: true };\\n    }\\n    \u002F\u002F `value` is wrapped into Uint8Array, we need to\\n    \u002F\u002F unwrap it to ArrayBuffer for further processing.\\n    return { value: value.buffer, done: false };\\n  }\\n\\n  cancel(reason) {\\n    this._reader.cancel(reason);\\n  }\\n}\\n\\n\u002F** @implements {IPDFStreamRangeReader} *\u002F\\nclass PDFWorkerStreamRangeReader {\\n  constructor(begin, end, msgHandler) {\\n    this._msgHandler = msgHandler;\\n    this.onProgress = null;\\n\\n    const readableStream = this._msgHandler.sendWithStream(\\\"GetRangeReader\\\", {\\n      begin,\\n      end,\\n    });\\n    this._reader = readableStream.getReader();\\n  }\\n\\n  get isStreamingSupported() {\\n    return false;\\n  }\\n\\n  async read() {\\n    const { value, done } = await this._reader.read();\\n    if (done) {\\n      return { value: undefined, done: true };\\n    }\\n    return { value: value.buffer, done: false };\\n  }\\n\\n  cancel(reason) {\\n    this._reader.cancel(reason);\\n  }\\n}\\n\\nexport { PDFWorkerStream };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  AbortException,\\n  assert,\\n  getVerbosityLevel,\\n  info,\\n  InvalidPDFException,\\n  isNodeJS,\\n  MissingPDFException,\\n  PasswordException,\\n  setVerbosityLevel,\\n  stringToPDFString,\\n  UnexpectedResponseException,\\n  UnknownErrorException,\\n  VerbosityLevel,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  arrayBuffersToBytes,\\n  getNewAnnotationsMap,\\n  XRefParseException,\\n} from \\\".\u002Fcore_utils.js\\\";\\nimport { Dict, isDict, Ref } from \\\".\u002Fprimitives.js\\\";\\nimport { LocalPdfManager, NetworkPdfManager } from \\\".\u002Fpdf_manager.js\\\";\\nimport { AnnotationFactory } from \\\".\u002Fannotation.js\\\";\\nimport { clearGlobalCaches } from \\\".\u002Fcleanup_helper.js\\\";\\nimport { incrementalUpdate } from \\\".\u002Fwriter.js\\\";\\nimport { MessageHandler } from \\\"..\u002Fshared\u002Fmessage_handler.js\\\";\\nimport { PDFWorkerStream } from \\\".\u002Fworker_stream.js\\\";\\nimport { StructTreeRoot } from \\\".\u002Fstruct_tree.js\\\";\\n\\nclass WorkerTask {\\n  constructor(name) {\\n    this.name = name;\\n    this.terminated = false;\\n    this._capability = Promise.withResolvers();\\n  }\\n\\n  get finished() {\\n    return this._capability.promise;\\n  }\\n\\n  finish() {\\n    this._capability.resolve();\\n  }\\n\\n  terminate() {\\n    this.terminated = true;\\n  }\\n\\n  ensureNotTerminated() {\\n    if (this.terminated) {\\n      throw new Error(\\\"Worker task was terminated\\\");\\n    }\\n  }\\n}\\n\\nclass WorkerMessageHandler {\\n  static setup(handler, port) {\\n    let testMessageProcessed = false;\\n    handler.on(\\\"test\\\", function (data) {\\n      if (testMessageProcessed) {\\n        return; \u002F\u002F we already processed 'test' message once\\n      }\\n      testMessageProcessed = true;\\n\\n      \u002F\u002F Ensure that `TypedArray`s can be sent to the worker.\\n      handler.send(\\\"test\\\", data instanceof Uint8Array);\\n    });\\n\\n    handler.on(\\\"configure\\\", function (data) {\\n      setVerbosityLevel(data.verbosity);\\n    });\\n\\n    handler.on(\\\"GetDocRequest\\\", function (data) {\\n      return WorkerMessageHandler.createDocumentHandler(data, port);\\n    });\\n  }\\n\\n  static createDocumentHandler(docParams, port) {\\n    \u002F\u002F This context is actually holds references on pdfManager and handler,\\n    \u002F\u002F until the latter is destroyed.\\n    let pdfManager;\\n    let terminated = false;\\n    let cancelXHRs = null;\\n    const WorkerTasks = new Set();\\n    const verbosity = getVerbosityLevel();\\n\\n    const { docId, apiVersion } = docParams;\\n    const workerVersion =\\n      typeof PDFJSDev !== \\\"undefined\\\" && !PDFJSDev.test(\\\"TESTING\\\")\\n        ? PDFJSDev.eval(\\\"BUNDLE_VERSION\\\")\\n        : null;\\n    if (apiVersion !== workerVersion) {\\n      throw new Error(\\n        `The API version \\\"${apiVersion}\\\" does not match ` +\\n          `the Worker version \\\"${workerVersion}\\\".`\\n      );\\n    }\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      \u002F\u002F Fail early, and predictably, rather than having (some) fonts fail to\\n      \u002F\u002F load\u002Frender with slightly cryptic error messages in environments where\\n      \u002F\u002F the `Array.prototype` has been *incorrectly* extended.\\n      \u002F\u002F\\n      \u002F\u002F PLEASE NOTE: We do *not* want to slow down font parsing by adding\\n      \u002F\u002F              `hasOwnProperty` checks all over the code-base.\\n      const enumerableProperties = [];\\n      for (const property in []) {\\n        enumerableProperties.push(property);\\n      }\\n      if (enumerableProperties.length) {\\n        throw new Error(\\n          \\\"The `Array.prototype` contains unexpected enumerable properties: \\\" +\\n            enumerableProperties.join(\\\", \\\") +\\n            \\\"; thus breaking e.g. `for...in` iteration of `Array`s.\\\"\\n        );\\n      }\\n    }\\n    const workerHandlerName = docId + \\\"_worker\\\";\\n    let handler = new MessageHandler(workerHandlerName, docId, port);\\n\\n    function ensureNotTerminated() {\\n      if (terminated) {\\n        throw new Error(\\\"Worker was terminated\\\");\\n      }\\n    }\\n\\n    function startWorkerTask(task) {\\n      WorkerTasks.add(task);\\n    }\\n\\n    function finishWorkerTask(task) {\\n      task.finish();\\n      WorkerTasks.delete(task);\\n    }\\n\\n    async function loadDocument(recoveryMode) {\\n      await pdfManager.ensureDoc(\\\"checkHeader\\\");\\n      await pdfManager.ensureDoc(\\\"parseStartXRef\\\");\\n      await pdfManager.ensureDoc(\\\"parse\\\", [recoveryMode]);\\n\\n      \u002F\u002F Check that at least the first page can be successfully loaded,\\n      \u002F\u002F since otherwise the XRef table is definitely not valid.\\n      await pdfManager.ensureDoc(\\\"checkFirstPage\\\", [recoveryMode]);\\n      \u002F\u002F Check that the last page can be successfully loaded, to ensure that\\n      \u002F\u002F `numPages` is correct, and fallback to walking the entire \u002FPages-tree.\\n      await pdfManager.ensureDoc(\\\"checkLastPage\\\", [recoveryMode]);\\n\\n      const isPureXfa = await pdfManager.ensureDoc(\\\"isPureXfa\\\");\\n      if (isPureXfa) {\\n        const task = new WorkerTask(\\\"loadXfaFonts\\\");\\n        startWorkerTask(task);\\n        await Promise.all([\\n          pdfManager\\n            .loadXfaFonts(handler, task)\\n            .catch(reason => {\\n              \u002F\u002F Ignore errors, to allow the document to load.\\n            })\\n            .then(() => finishWorkerTask(task)),\\n          pdfManager.loadXfaImages(),\\n        ]);\\n      }\\n\\n      const [numPages, fingerprints] = await Promise.all([\\n        pdfManager.ensureDoc(\\\"numPages\\\"),\\n        pdfManager.ensureDoc(\\\"fingerprints\\\"),\\n      ]);\\n\\n      \u002F\u002F Get htmlForXfa after numPages to avoid to create HTML twice.\\n      const htmlForXfa = isPureXfa\\n        ? await pdfManager.ensureDoc(\\\"htmlForXfa\\\")\\n        : null;\\n\\n      return { numPages, fingerprints, htmlForXfa };\\n    }\\n\\n    function getPdfManager({\\n      data,\\n      password,\\n      disableAutoFetch,\\n      rangeChunkSize,\\n      length,\\n      docBaseUrl,\\n      enableXfa,\\n      evaluatorOptions,\\n    }) {\\n      const pdfManagerArgs = {\\n        source: null,\\n        disableAutoFetch,\\n        docBaseUrl,\\n        docId,\\n        enableXfa,\\n        evaluatorOptions,\\n        handler,\\n        length,\\n        password,\\n        rangeChunkSize,\\n      };\\n      const pdfManagerCapability = Promise.withResolvers();\\n      let newPdfManager;\\n\\n      if (data) {\\n        try {\\n          pdfManagerArgs.source = data;\\n\\n          newPdfManager = new LocalPdfManager(pdfManagerArgs);\\n          pdfManagerCapability.resolve(newPdfManager);\\n        } catch (ex) {\\n          pdfManagerCapability.reject(ex);\\n        }\\n        return pdfManagerCapability.promise;\\n      }\\n\\n      let pdfStream,\\n        cachedChunks = [];\\n      try {\\n        pdfStream = new PDFWorkerStream(handler);\\n      } catch (ex) {\\n        pdfManagerCapability.reject(ex);\\n        return pdfManagerCapability.promise;\\n      }\\n\\n      const fullRequest = pdfStream.getFullReader();\\n      fullRequest.headersReady\\n        .then(function () {\\n          if (!fullRequest.isRangeSupported) {\\n            return;\\n          }\\n          pdfManagerArgs.source = pdfStream;\\n          pdfManagerArgs.length = fullRequest.contentLength;\\n          \u002F\u002F We don't need auto-fetch when streaming is enabled.\\n          pdfManagerArgs.disableAutoFetch ||= fullRequest.isStreamingSupported;\\n\\n          newPdfManager = new NetworkPdfManager(pdfManagerArgs);\\n          \u002F\u002F There may be a chance that `newPdfManager` is not initialized for\\n          \u002F\u002F the first few runs of `readchunk` block of code. Be sure to send\\n          \u002F\u002F all cached chunks, if any, to chunked_stream via pdf_manager.\\n          for (const chunk of cachedChunks) {\\n            newPdfManager.sendProgressiveData(chunk);\\n          }\\n\\n          cachedChunks = [];\\n          pdfManagerCapability.resolve(newPdfManager);\\n          cancelXHRs = null;\\n        })\\n        .catch(function (reason) {\\n          pdfManagerCapability.reject(reason);\\n          cancelXHRs = null;\\n        });\\n\\n      let loaded = 0;\\n      const flushChunks = function () {\\n        const pdfFile = arrayBuffersToBytes(cachedChunks);\\n        if (length && pdfFile.length !== length) {\\n          warn(\\\"reported HTTP length is different from actual\\\");\\n        }\\n        \u002F\u002F the data is array, instantiating directly from it\\n        try {\\n          pdfManagerArgs.source = pdfFile;\\n\\n          newPdfManager = new LocalPdfManager(pdfManagerArgs);\\n          pdfManagerCapability.resolve(newPdfManager);\\n        } catch (ex) {\\n          pdfManagerCapability.reject(ex);\\n        }\\n        cachedChunks = [];\\n      };\\n      new Promise(function (resolve, reject) {\\n        const readChunk = function ({ value, done }) {\\n          try {\\n            ensureNotTerminated();\\n            if (done) {\\n              if (!newPdfManager) {\\n                flushChunks();\\n              }\\n              cancelXHRs = null;\\n              return;\\n            }\\n            if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n              assert(\\n                value instanceof ArrayBuffer,\\n                \\\"readChunk (getPdfManager) - expected an ArrayBuffer.\\\"\\n              );\\n            }\\n            loaded += value.byteLength;\\n\\n            if (!fullRequest.isStreamingSupported) {\\n              handler.send(\\\"DocProgress\\\", {\\n                loaded,\\n                total: Math.max(loaded, fullRequest.contentLength || 0),\\n              });\\n            }\\n\\n            if (newPdfManager) {\\n              newPdfManager.sendProgressiveData(value);\\n            } else {\\n              cachedChunks.push(value);\\n            }\\n            fullRequest.read().then(readChunk, reject);\\n          } catch (e) {\\n            reject(e);\\n          }\\n        };\\n        fullRequest.read().then(readChunk, reject);\\n      }).catch(function (e) {\\n        pdfManagerCapability.reject(e);\\n        cancelXHRs = null;\\n      });\\n\\n      cancelXHRs = function (reason) {\\n        pdfStream.cancelAllRequests(reason);\\n      };\\n\\n      return pdfManagerCapability.promise;\\n    }\\n\\n    function setupDoc(data) {\\n      function onSuccess(doc) {\\n        ensureNotTerminated();\\n        handler.send(\\\"GetDoc\\\", { pdfInfo: doc });\\n      }\\n\\n      function onFailure(ex) {\\n        ensureNotTerminated();\\n\\n        if (ex instanceof PasswordException) {\\n          const task = new WorkerTask(`PasswordException: response ${ex.code}`);\\n          startWorkerTask(task);\\n\\n          handler\\n            .sendWithPromise(\\\"PasswordRequest\\\", ex)\\n            .then(function ({ password }) {\\n              finishWorkerTask(task);\\n              pdfManager.updatePassword(password);\\n              pdfManagerReady();\\n            })\\n            .catch(function () {\\n              finishWorkerTask(task);\\n              handler.send(\\\"DocException\\\", ex);\\n            });\\n        } else if (\\n          ex instanceof InvalidPDFException ||\\n          ex instanceof MissingPDFException ||\\n          ex instanceof UnexpectedResponseException ||\\n          ex instanceof UnknownErrorException\\n        ) {\\n          handler.send(\\\"DocException\\\", ex);\\n        } else {\\n          handler.send(\\n            \\\"DocException\\\",\\n            new UnknownErrorException(ex.message, ex.toString())\\n          );\\n        }\\n      }\\n\\n      function pdfManagerReady() {\\n        ensureNotTerminated();\\n\\n        loadDocument(false).then(onSuccess, function (reason) {\\n          ensureNotTerminated();\\n\\n          \u002F\u002F Try again with recoveryMode == true\\n          if (!(reason instanceof XRefParseException)) {\\n            onFailure(reason);\\n            return;\\n          }\\n          pdfManager.requestLoadedStream().then(function () {\\n            ensureNotTerminated();\\n\\n            loadDocument(true).then(onSuccess, onFailure);\\n          });\\n        });\\n      }\\n\\n      ensureNotTerminated();\\n\\n      getPdfManager(data)\\n        .then(function (newPdfManager) {\\n          if (terminated) {\\n            \u002F\u002F We were in a process of setting up the manager, but it got\\n            \u002F\u002F terminated in the middle.\\n            newPdfManager.terminate(\\n              new AbortException(\\\"Worker was terminated.\\\")\\n            );\\n            throw new Error(\\\"Worker was terminated\\\");\\n          }\\n          pdfManager = newPdfManager;\\n\\n          pdfManager.requestLoadedStream(\u002F* noFetch = *\u002F true).then(stream => {\\n            handler.send(\\\"DataLoaded\\\", { length: stream.bytes.byteLength });\\n          });\\n        })\\n        .then(pdfManagerReady, onFailure);\\n    }\\n\\n    handler.on(\\\"GetPage\\\", function (data) {\\n      return pdfManager.getPage(data.pageIndex).then(function (page) {\\n        return Promise.all([\\n          pdfManager.ensure(page, \\\"rotate\\\"),\\n          pdfManager.ensure(page, \\\"ref\\\"),\\n          pdfManager.ensure(page, \\\"userUnit\\\"),\\n          pdfManager.ensure(page, \\\"view\\\"),\\n        ]).then(function ([rotate, ref, userUnit, view]) {\\n          return {\\n            rotate,\\n            ref,\\n            refStr: ref?.toString() ?? null,\\n            userUnit,\\n            view,\\n          };\\n        });\\n      });\\n    });\\n\\n    handler.on(\\\"GetPageIndex\\\", function (data) {\\n      const pageRef = Ref.get(data.num, data.gen);\\n      return pdfManager.ensureCatalog(\\\"getPageIndex\\\", [pageRef]);\\n    });\\n\\n    handler.on(\\\"GetDestinations\\\", function (data) {\\n      return pdfManager.ensureCatalog(\\\"destinations\\\");\\n    });\\n\\n    handler.on(\\\"GetDestination\\\", function (data) {\\n      return pdfManager.ensureCatalog(\\\"getDestination\\\", [data.id]);\\n    });\\n\\n    handler.on(\\\"GetPageLabels\\\", function (data) {\\n      return pdfManager.ensureCatalog(\\\"pageLabels\\\");\\n    });\\n\\n    handler.on(\\\"GetPageLayout\\\", function (data) {\\n      return pdfManager.ensureCatalog(\\\"pageLayout\\\");\\n    });\\n\\n    handler.on(\\\"GetPageMode\\\", function (data) {\\n      return pdfManager.ensureCatalog(\\\"pageMode\\\");\\n    });\\n\\n    handler.on(\\\"GetViewerPreferences\\\", function (data) {\\n      return pdfManager.ensureCatalog(\\\"viewerPreferences\\\");\\n    });\\n\\n    handler.on(\\\"GetOpenAction\\\", function (data) {\\n      return pdfManager.ensureCatalog(\\\"openAction\\\");\\n    });\\n\\n    handler.on(\\\"GetAttachments\\\", function (data) {\\n      return pdfManager.ensureCatalog(\\\"attachments\\\");\\n    });\\n\\n    handler.on(\\\"GetDocJSActions\\\", function (data) {\\n      return pdfManager.ensureCatalog(\\\"jsActions\\\");\\n    });\\n\\n    handler.on(\\\"GetPageJSActions\\\", function ({ pageIndex }) {\\n      return pdfManager.getPage(pageIndex).then(function (page) {\\n        return pdfManager.ensure(page, \\\"jsActions\\\");\\n      });\\n    });\\n\\n    handler.on(\\\"GetOutline\\\", function (data) {\\n      return pdfManager.ensureCatalog(\\\"documentOutline\\\");\\n    });\\n\\n    handler.on(\\\"GetOptionalContentConfig\\\", function (data) {\\n      return pdfManager.ensureCatalog(\\\"optionalContentConfig\\\");\\n    });\\n\\n    handler.on(\\\"GetPermissions\\\", function (data) {\\n      return pdfManager.ensureCatalog(\\\"permissions\\\");\\n    });\\n\\n    handler.on(\\\"GetMetadata\\\", function (data) {\\n      return Promise.all([\\n        pdfManager.ensureDoc(\\\"documentInfo\\\"),\\n        pdfManager.ensureCatalog(\\\"metadata\\\"),\\n      ]);\\n    });\\n\\n    handler.on(\\\"GetMarkInfo\\\", function (data) {\\n      return pdfManager.ensureCatalog(\\\"markInfo\\\");\\n    });\\n\\n    handler.on(\\\"GetData\\\", function (data) {\\n      return pdfManager.requestLoadedStream().then(function (stream) {\\n        return stream.bytes;\\n      });\\n    });\\n\\n    handler.on(\\\"GetAnnotations\\\", function ({ pageIndex, intent }) {\\n      return pdfManager.getPage(pageIndex).then(function (page) {\\n        const task = new WorkerTask(`GetAnnotations: page ${pageIndex}`);\\n        startWorkerTask(task);\\n\\n        return page.getAnnotationsData(handler, task, intent).then(\\n          data => {\\n            finishWorkerTask(task);\\n            return data;\\n          },\\n          reason => {\\n            finishWorkerTask(task);\\n            throw reason;\\n          }\\n        );\\n      });\\n    });\\n\\n    handler.on(\\\"GetFieldObjects\\\", function (data) {\\n      return pdfManager.ensureDoc(\\\"fieldObjects\\\");\\n    });\\n\\n    handler.on(\\\"HasJSActions\\\", function (data) {\\n      return pdfManager.ensureDoc(\\\"hasJSActions\\\");\\n    });\\n\\n    handler.on(\\\"GetCalculationOrderIds\\\", function (data) {\\n      return pdfManager.ensureDoc(\\\"calculationOrderIds\\\");\\n    });\\n\\n    handler.on(\\n      \\\"SaveDocument\\\",\\n      async function ({ isPureXfa, numPages, annotationStorage, filename }) {\\n        const globalPromises = [\\n          pdfManager.requestLoadedStream(),\\n          pdfManager.ensureCatalog(\\\"acroForm\\\"),\\n          pdfManager.ensureCatalog(\\\"acroFormRef\\\"),\\n          pdfManager.ensureDoc(\\\"startXRef\\\"),\\n          pdfManager.ensureDoc(\\\"xref\\\"),\\n          pdfManager.ensureDoc(\\\"linearization\\\"),\\n          pdfManager.ensureCatalog(\\\"structTreeRoot\\\"),\\n        ];\\n        const promises = [];\\n\\n        const newAnnotationsByPage = !isPureXfa\\n          ? getNewAnnotationsMap(annotationStorage)\\n          : null;\\n        const [\\n          stream,\\n          acroForm,\\n          acroFormRef,\\n          startXRef,\\n          xref,\\n          linearization,\\n          _structTreeRoot,\\n        ] = await Promise.all(globalPromises);\\n        const catalogRef = xref.trailer.getRaw(\\\"Root\\\") || null;\\n        let structTreeRoot;\\n\\n        if (newAnnotationsByPage) {\\n          if (!_structTreeRoot) {\\n            if (\\n              await StructTreeRoot.canCreateStructureTree({\\n                catalogRef,\\n                pdfManager,\\n                newAnnotationsByPage,\\n              })\\n            ) {\\n              structTreeRoot = null;\\n            }\\n          } else if (\\n            await _structTreeRoot.canUpdateStructTree({\\n              pdfManager,\\n              xref,\\n              newAnnotationsByPage,\\n            })\\n          ) {\\n            structTreeRoot = _structTreeRoot;\\n          }\\n\\n          const imagePromises = AnnotationFactory.generateImages(\\n            annotationStorage.values(),\\n            xref,\\n            pdfManager.evaluatorOptions.isOffscreenCanvasSupported\\n          );\\n          const newAnnotationPromises =\\n            structTreeRoot === undefined ? promises : [];\\n          for (const [pageIndex, annotations] of newAnnotationsByPage) {\\n            newAnnotationPromises.push(\\n              pdfManager.getPage(pageIndex).then(page => {\\n                const task = new WorkerTask(`Save (editor): page ${pageIndex}`);\\n                return page\\n                  .saveNewAnnotations(handler, task, annotations, imagePromises)\\n                  .finally(function () {\\n                    finishWorkerTask(task);\\n                  });\\n              })\\n            );\\n          }\\n          if (structTreeRoot === null) {\\n            \u002F\u002F No structTreeRoot exists, so we need to create one.\\n            promises.push(\\n              Promise.all(newAnnotationPromises).then(async newRefs => {\\n                await StructTreeRoot.createStructureTree({\\n                  newAnnotationsByPage,\\n                  xref,\\n                  catalogRef,\\n                  pdfManager,\\n                  newRefs,\\n                });\\n                return newRefs;\\n              })\\n            );\\n          } else if (structTreeRoot) {\\n            promises.push(\\n              Promise.all(newAnnotationPromises).then(async newRefs => {\\n                await structTreeRoot.updateStructureTree({\\n                  newAnnotationsByPage,\\n                  pdfManager,\\n                  newRefs,\\n                });\\n                return newRefs;\\n              })\\n            );\\n          }\\n        }\\n\\n        if (isPureXfa) {\\n          promises.push(pdfManager.serializeXfaData(annotationStorage));\\n        } else {\\n          for (let pageIndex = 0; pageIndex \u003C numPages; pageIndex++) {\\n            promises.push(\\n              pdfManager.getPage(pageIndex).then(function (page) {\\n                const task = new WorkerTask(`Save: page ${pageIndex}`);\\n                return page\\n                  .save(handler, task, annotationStorage)\\n                  .finally(function () {\\n                    finishWorkerTask(task);\\n                  });\\n              })\\n            );\\n          }\\n        }\\n        const refs = await Promise.all(promises);\\n\\n        let newRefs = [];\\n        let xfaData = null;\\n        if (isPureXfa) {\\n          xfaData = refs[0];\\n          if (!xfaData) {\\n            return stream.bytes;\\n          }\\n        } else {\\n          newRefs = refs.flat(2);\\n\\n          if (newRefs.length === 0) {\\n            \u002F\u002F No new refs so just return the initial bytes\\n            return stream.bytes;\\n          }\\n        }\\n\\n        const needAppearances =\\n          acroFormRef &&\\n          acroForm instanceof Dict &&\\n          newRefs.some(ref => ref.needAppearances);\\n\\n        const xfa = (acroForm instanceof Dict && acroForm.get(\\\"XFA\\\")) || null;\\n        let xfaDatasetsRef = null;\\n        let hasXfaDatasetsEntry = false;\\n        if (Array.isArray(xfa)) {\\n          for (let i = 0, ii = xfa.length; i \u003C ii; i += 2) {\\n            if (xfa[i] === \\\"datasets\\\") {\\n              xfaDatasetsRef = xfa[i + 1];\\n              hasXfaDatasetsEntry = true;\\n            }\\n          }\\n          if (xfaDatasetsRef === null) {\\n            xfaDatasetsRef = xref.getNewTemporaryRef();\\n          }\\n        } else if (xfa) {\\n          \u002F\u002F TODO: Support XFA streams.\\n          warn(\\\"Unsupported XFA type.\\\");\\n        }\\n\\n        let newXrefInfo = Object.create(null);\\n        if (xref.trailer) {\\n          \u002F\u002F Get string info from Info in order to compute fileId.\\n          const infoObj = Object.create(null);\\n          const xrefInfo = xref.trailer.get(\\\"Info\\\") || null;\\n          if (xrefInfo instanceof Dict) {\\n            xrefInfo.forEach((key, value) => {\\n              if (typeof value === \\\"string\\\") {\\n                infoObj[key] = stringToPDFString(value);\\n              }\\n            });\\n          }\\n\\n          newXrefInfo = {\\n            rootRef: catalogRef,\\n            encryptRef: xref.trailer.getRaw(\\\"Encrypt\\\") || null,\\n            newRef: xref.getNewTemporaryRef(),\\n            infoRef: xref.trailer.getRaw(\\\"Info\\\") || null,\\n            info: infoObj,\\n            fileIds: xref.trailer.get(\\\"ID\\\") || null,\\n            startXRef: linearization\\n              ? startXRef\\n              : xref.lastXRefStreamPos ?? startXRef,\\n            filename,\\n          };\\n        }\\n\\n        return incrementalUpdate({\\n          originalData: stream.bytes,\\n          xrefInfo: newXrefInfo,\\n          newRefs,\\n          xref,\\n          hasXfa: !!xfa,\\n          xfaDatasetsRef,\\n          hasXfaDatasetsEntry,\\n          needAppearances,\\n          acroFormRef,\\n          acroForm,\\n          xfaData,\\n          \u002F\u002F Use the same kind of XRef as the previous one.\\n          useXrefStream: isDict(xref.topDict, \\\"XRef\\\"),\\n        }).finally(() => {\\n          xref.resetNewTemporaryRef();\\n        });\\n      }\\n    );\\n\\n    handler.on(\\\"GetOperatorList\\\", function (data, sink) {\\n      const pageIndex = data.pageIndex;\\n      pdfManager.getPage(pageIndex).then(function (page) {\\n        const task = new WorkerTask(`GetOperatorList: page ${pageIndex}`);\\n        startWorkerTask(task);\\n\\n        \u002F\u002F NOTE: Keep this condition in sync with the `info` helper function.\\n        const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\\n\\n        \u002F\u002F Pre compile the pdf page and fetch the fonts\u002Fimages.\\n        page\\n          .getOperatorList({\\n            handler,\\n            sink,\\n            task,\\n            intent: data.intent,\\n            cacheKey: data.cacheKey,\\n            annotationStorage: data.annotationStorage,\\n          })\\n          .then(\\n            function (operatorListInfo) {\\n              finishWorkerTask(task);\\n\\n              if (start) {\\n                info(\\n                  `page=${pageIndex + 1} - getOperatorList: time=` +\\n                    `${Date.now() - start}ms, len=${operatorListInfo.length}`\\n                );\\n              }\\n              sink.close();\\n            },\\n            function (reason) {\\n              finishWorkerTask(task);\\n              if (task.terminated) {\\n                return; \u002F\u002F ignoring errors from the terminated thread\\n              }\\n              sink.error(reason);\\n\\n              \u002F\u002F TODO: Should `reason` be re-thrown here (currently that casues\\n              \u002F\u002F       \\\"Uncaught exception: ...\\\" messages in the console)?\\n            }\\n          );\\n      });\\n    });\\n\\n    handler.on(\\\"GetTextContent\\\", function (data, sink) {\\n      const { pageIndex, includeMarkedContent, disableNormalization } = data;\\n\\n      pdfManager.getPage(pageIndex).then(function (page) {\\n        const task = new WorkerTask(\\\"GetTextContent: page \\\" + pageIndex);\\n        startWorkerTask(task);\\n\\n        \u002F\u002F NOTE: Keep this condition in sync with the `info` helper function.\\n        const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\\n\\n        page\\n          .extractTextContent({\\n            handler,\\n            task,\\n            sink,\\n            includeMarkedContent,\\n            disableNormalization,\\n          })\\n          .then(\\n            function () {\\n              finishWorkerTask(task);\\n\\n              if (start) {\\n                info(\\n                  `page=${pageIndex + 1} - getTextContent: time=` +\\n                    `${Date.now() - start}ms`\\n                );\\n              }\\n              sink.close();\\n            },\\n            function (reason) {\\n              finishWorkerTask(task);\\n              if (task.terminated) {\\n                return; \u002F\u002F ignoring errors from the terminated thread\\n              }\\n              sink.error(reason);\\n\\n              \u002F\u002F TODO: Should `reason` be re-thrown here (currently that casues\\n              \u002F\u002F       \\\"Uncaught exception: ...\\\" messages in the console)?\\n            }\\n          );\\n      });\\n    });\\n\\n    handler.on(\\\"GetStructTree\\\", function (data) {\\n      return pdfManager.getPage(data.pageIndex).then(function (page) {\\n        return pdfManager.ensure(page, \\\"getStructTree\\\");\\n      });\\n    });\\n\\n    handler.on(\\\"FontFallback\\\", function (data) {\\n      return pdfManager.fontFallback(data.id, handler);\\n    });\\n\\n    handler.on(\\\"Cleanup\\\", function (data) {\\n      return pdfManager.cleanup(\u002F* manuallyTriggered = *\u002F true);\\n    });\\n\\n    handler.on(\\\"Terminate\\\", function (data) {\\n      terminated = true;\\n\\n      const waitOn = [];\\n      if (pdfManager) {\\n        pdfManager.terminate(new AbortException(\\\"Worker was terminated.\\\"));\\n\\n        const cleanupPromise = pdfManager.cleanup();\\n        waitOn.push(cleanupPromise);\\n\\n        pdfManager = null;\\n      } else {\\n        clearGlobalCaches();\\n      }\\n      if (cancelXHRs) {\\n        cancelXHRs(new AbortException(\\\"Worker was terminated.\\\"));\\n      }\\n\\n      for (const task of WorkerTasks) {\\n        waitOn.push(task.finished);\\n        task.terminate();\\n      }\\n\\n      return Promise.all(waitOn).then(function () {\\n        \u002F\u002F Notice that even if we destroying handler, resolved response promise\\n        \u002F\u002F must be sent back.\\n        handler.destroy();\\n        handler = null;\\n      });\\n    });\\n\\n    handler.on(\\\"Ready\\\", function (data) {\\n      setupDoc(docParams);\\n      docParams = null; \u002F\u002F we don't need docParams anymore -- saving memory.\\n    });\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      handler.on(\\\"GetXFADatasets\\\", function (data) {\\n        return pdfManager.ensureDoc(\\\"xfaDatasets\\\");\\n      });\\n      handler.on(\\\"GetXRefPrevValue\\\", function (data) {\\n        return pdfManager\\n          .ensureXRef(\\\"trailer\\\")\\n          .then(trailer => trailer.get(\\\"Prev\\\"));\\n      });\\n      handler.on(\\\"GetStartXRefPos\\\", function (data) {\\n        return pdfManager.ensureDoc(\\\"startXRef\\\");\\n      });\\n      handler.on(\\\"GetAnnotArray\\\", function (data) {\\n        return pdfManager.getPage(data.pageIndex).then(function (page) {\\n          return page.annotations.map(a => a.toString());\\n        });\\n      });\\n    }\\n\\n    return workerHandlerName;\\n  }\\n\\n  static initializeFromPort(port) {\\n    const handler = new MessageHandler(\\\"worker\\\", \\\"main\\\", port);\\n    WorkerMessageHandler.setup(handler, port);\\n    handler.send(\\\"ready\\\", null);\\n  }\\n}\\n\\nfunction isMessagePort(maybePort) {\\n  return (\\n    typeof maybePort.postMessage === \\\"function\\\" && \\\"onmessage\\\" in maybePort\\n  );\\n}\\n\\n\u002F\u002F Worker thread (and not Node.js)?\\nif (\\n  typeof window === \\\"undefined\\\" &&\\n  !isNodeJS &&\\n  typeof self !== \\\"undefined\\\" &&\\n  isMessagePort(self)\\n) {\\n  WorkerMessageHandler.initializeFromPort(self);\\n}\\n\\nexport { WorkerMessageHandler, WorkerTask };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { WorkerMessageHandler } from \\\".\u002Fcore\u002Fworker.js\\\";\\n\\n\u002F* eslint-disable-next-line no-unused-vars *\u002F\\nconst pdfjsVersion =\\n  typeof PDFJSDev !== \\\"undefined\\\" ? PDFJSDev.eval(\\\"BUNDLE_VERSION\\\") : void 0;\\n\u002F* eslint-disable-next-line no-unused-vars *\u002F\\nconst pdfjsBuild =\\n  typeof PDFJSDev !== \\\"undefined\\\" ? PDFJSDev.eval(\\\"BUNDLE_BUILD\\\") : void 0;\\n\\nexport { WorkerMessageHandler };\\n\"],\"names\":[\"isNodeJS\",\"process\",\"versions\",\"nw\",\"electron\",\"type\",\"IDENTITY_MATRIX\",\"FONT_IDENTITY_MATRIX\",\"MAX_IMAGE_SIZE_TO_CACHE\",\"LINE_FACTOR\",\"LINE_DESCENT_FACTOR\",\"BASELINE_FACTOR\",\"RenderingIntentFlag\",\"ANY\",\"DISPLAY\",\"PRINT\",\"SAVE\",\"ANNOTATIONS_FORMS\",\"ANNOTATIONS_STORAGE\",\"ANNOTATIONS_DISABLE\",\"OPLIST\",\"AnnotationMode\",\"DISABLE\",\"ENABLE\",\"ENABLE_FORMS\",\"ENABLE_STORAGE\",\"AnnotationEditorPrefix\",\"AnnotationEditorType\",\"NONE\",\"FREETEXT\",\"HIGHLIGHT\",\"STAMP\",\"INK\",\"AnnotationEditorParamsType\",\"RESIZE\",\"CREATE\",\"FREETEXT_SIZE\",\"FREETEXT_COLOR\",\"FREETEXT_OPACITY\",\"INK_COLOR\",\"INK_THICKNESS\",\"INK_OPACITY\",\"HIGHLIGHT_COLOR\",\"HIGHLIGHT_DEFAULT_COLOR\",\"HIGHLIGHT_THICKNESS\",\"HIGHLIGHT_FREE\",\"HIGHLIGHT_SHOW_ALL\",\"PermissionFlag\",\"MODIFY_CONTENTS\",\"COPY\",\"MODIFY_ANNOTATIONS\",\"FILL_INTERACTIVE_FORMS\",\"COPY_FOR_ACCESSIBILITY\",\"ASSEMBLE\",\"PRINT_HIGH_QUALITY\",\"TextRenderingMode\",\"FILL\",\"STROKE\",\"FILL_STROKE\",\"INVISIBLE\",\"FILL_ADD_TO_PATH\",\"STROKE_ADD_TO_PATH\",\"FILL_STROKE_ADD_TO_PATH\",\"ADD_TO_PATH\",\"FILL_STROKE_MASK\",\"ADD_TO_PATH_FLAG\",\"ImageKind\",\"GRAYSCALE_1BPP\",\"RGB_24BPP\",\"RGBA_32BPP\",\"AnnotationType\",\"TEXT\",\"LINK\",\"LINE\",\"SQUARE\",\"CIRCLE\",\"POLYGON\",\"POLYLINE\",\"UNDERLINE\",\"SQUIGGLY\",\"STRIKEOUT\",\"CARET\",\"POPUP\",\"FILEATTACHMENT\",\"SOUND\",\"MOVIE\",\"WIDGET\",\"SCREEN\",\"PRINTERMARK\",\"TRAPNET\",\"WATERMARK\",\"THREED\",\"REDACT\",\"AnnotationReplyType\",\"GROUP\",\"REPLY\",\"AnnotationFlag\",\"HIDDEN\",\"NOZOOM\",\"NOROTATE\",\"NOVIEW\",\"READONLY\",\"LOCKED\",\"TOGGLENOVIEW\",\"LOCKEDCONTENTS\",\"AnnotationFieldFlag\",\"REQUIRED\",\"NOEXPORT\",\"MULTILINE\",\"PASSWORD\",\"NOTOGGLETOOFF\",\"RADIO\",\"PUSHBUTTON\",\"COMBO\",\"EDIT\",\"SORT\",\"FILESELECT\",\"MULTISELECT\",\"DONOTSPELLCHECK\",\"DONOTSCROLL\",\"COMB\",\"RICHTEXT\",\"RADIOSINUNISON\",\"COMMITONSELCHANGE\",\"AnnotationBorderStyleType\",\"SOLID\",\"DASHED\",\"BEVELED\",\"INSET\",\"AnnotationActionEventType\",\"E\",\"X\",\"D\",\"U\",\"Fo\",\"Bl\",\"PO\",\"PC\",\"PV\",\"PI\",\"K\",\"F\",\"V\",\"C\",\"DocumentActionEventType\",\"WC\",\"WS\",\"DS\",\"WP\",\"DP\",\"PageActionEventType\",\"O\",\"VerbosityLevel\",\"ERRORS\",\"WARNINGS\",\"INFOS\",\"CMapCompressionType\",\"BINARY\",\"OPS\",\"dependency\",\"setLineWidth\",\"setLineCap\",\"setLineJoin\",\"setMiterLimit\",\"setDash\",\"setRenderingIntent\",\"setFlatness\",\"setGState\",\"save\",\"restore\",\"transform\",\"moveTo\",\"lineTo\",\"curveTo\",\"curveTo2\",\"curveTo3\",\"closePath\",\"rectangle\",\"stroke\",\"closeStroke\",\"fill\",\"eoFill\",\"fillStroke\",\"eoFillStroke\",\"closeFillStroke\",\"closeEOFillStroke\",\"endPath\",\"clip\",\"eoClip\",\"beginText\",\"endText\",\"setCharSpacing\",\"setWordSpacing\",\"setHScale\",\"setLeading\",\"setFont\",\"setTextRenderingMode\",\"setTextRise\",\"moveText\",\"setLeadingMoveText\",\"setTextMatrix\",\"nextLine\",\"showText\",\"showSpacedText\",\"nextLineShowText\",\"nextLineSetSpacingShowText\",\"setCharWidth\",\"setCharWidthAndBounds\",\"setStrokeColorSpace\",\"setFillColorSpace\",\"setStrokeColor\",\"setStrokeColorN\",\"setFillColor\",\"setFillColorN\",\"setStrokeGray\",\"setFillGray\",\"setStrokeRGBColor\",\"setFillRGBColor\",\"setStrokeCMYKColor\",\"setFillCMYKColor\",\"shadingFill\",\"beginInlineImage\",\"beginImageData\",\"endInlineImage\",\"paintXObject\",\"markPoint\",\"markPointProps\",\"beginMarkedContent\",\"beginMarkedContentProps\",\"endMarkedContent\",\"beginCompat\",\"endCompat\",\"paintFormXObjectBegin\",\"paintFormXObjectEnd\",\"beginGroup\",\"endGroup\",\"beginAnnotation\",\"endAnnotation\",\"paintImageMaskXObject\",\"paintImageMaskXObjectGroup\",\"paintImageXObject\",\"paintInlineImageXObject\",\"paintInlineImageXObjectGroup\",\"paintImageXObjectRepeat\",\"paintImageMaskXObjectRepeat\",\"paintSolidColorImageMask\",\"constructPath\",\"PasswordResponses\",\"NEED_PASSWORD\",\"INCORRECT_PASSWORD\",\"verbosity\",\"setVerbosityLevel\",\"level\",\"Number\",\"isInteger\",\"getVerbosityLevel\",\"info\",\"msg\",\"console\",\"log\",\"warn\",\"unreachable\",\"Error\",\"assert\",\"cond\",\"_isValidProtocol\",\"url\",\"protocol\",\"createValidAbsoluteUrl\",\"baseUrl\",\"options\",\"addDefaultProtocol\",\"startsWith\",\"dots\",\"match\",\"length\",\"tryConvertEncoding\",\"stringToUTF8String\",\"absoluteUrl\",\"URL\",\"shadow\",\"obj\",\"prop\",\"value\",\"nonSerializable\",\"Object\",\"defineProperty\",\"enumerable\",\"configurable\",\"writable\",\"BaseException\",\"BaseExceptionClosure\",\"message\",\"name\",\"constructor\",\"prototype\",\"PasswordException\",\"code\",\"UnknownErrorException\",\"details\",\"InvalidPDFException\",\"MissingPDFException\",\"UnexpectedResponseException\",\"status\",\"FormatError\",\"AbortException\",\"bytesToString\",\"bytes\",\"undefined\",\"MAX_ARGUMENT_COUNT\",\"String\",\"fromCharCode\",\"apply\",\"strBuf\",\"i\",\"chunkEnd\",\"Math\",\"min\",\"chunk\",\"subarray\",\"push\",\"join\",\"stringToBytes\",\"str\",\"Uint8Array\",\"charCodeAt\",\"string32\",\"objectSize\",\"keys\",\"objectFromMap\",\"map\",\"create\",\"key\",\"isLittleEndian\",\"buffer8\",\"view32\",\"Uint32Array\",\"buffer\",\"isEvalSupported\",\"Function\",\"FeatureTest\",\"isOffscreenCanvasSupported\",\"OffscreenCanvas\",\"platform\",\"navigator\",\"isMac\",\"includes\",\"isCSSRoundSupported\",\"globalThis\",\"CSS\",\"supports\",\"hexNumbers\",\"Array\",\"from\",\"n\",\"toString\",\"padStart\",\"Util\",\"makeHexColor\",\"r\",\"g\",\"b\",\"scaleMinMax\",\"minMax\",\"temp\",\"m1\",\"m2\",\"applyTransform\",\"p\",\"m\",\"xt\",\"yt\",\"applyInverseTransform\",\"d\",\"getAxialAlignedBoundingBox\",\"p1\",\"p2\",\"slice\",\"p3\",\"p4\",\"max\",\"inverseTransform\",\"singularValueDecompose2dScale\",\"transpose\",\"a\",\"c\",\"first\",\"second\",\"sqrt\",\"sx\",\"sy\",\"normalizeRect\",\"rect\",\"intersect\",\"rect1\",\"rect2\",\"xLow\",\"xHigh\",\"yLow\",\"yHigh\",\"getExtremumOnCurve\",\"#getExtremumOnCurve\",\"x0\",\"x1\",\"x2\",\"x3\",\"y0\",\"y1\",\"y2\",\"y3\",\"t\",\"mt\",\"tt\",\"ttt\",\"x\",\"y\",\"getExtremum\",\"#getExtremum\",\"abs\",\"delta\",\"sqrtDelta\",\"a2\",\"bezierBoundingBox\",\"PDFStringTranslateTable\",\"stringToPDFString\",\"encoding\",\"decoder\",\"TextDecoder\",\"fatal\",\"decoded\",\"decode\",\"replaceAll\",\"ex\",\"ii\",\"charCode\",\"charAt\",\"decodeURIComponent\",\"escape\",\"utf8StringToString\",\"unescape\",\"encodeURIComponent\",\"isArrayEqual\",\"arr1\",\"arr2\",\"getModificationDate\",\"date\",\"Date\",\"getUTCFullYear\",\"getUTCMonth\",\"getUTCDate\",\"getUTCHours\",\"getUTCMinutes\",\"getUTCSeconds\",\"NormalizeRegex\",\"NormalizationMap\",\"normalizeUnicode\",\"Map\",\"_\",\"normalize\",\"get\",\"getUuid\",\"crypto\",\"randomUUID\",\"buf\",\"getRandomValues\",\"floor\",\"random\",\"AnnotationPrefix\",\"FontRenderOps\",\"BEZIER_CURVE_TO\",\"MOVE_TO\",\"LINE_TO\",\"QUADRATIC_CURVE_TO\",\"RESTORE\",\"SCALE\",\"TRANSFORM\",\"TRANSLATE\",\"CIRCULAR_REF\",\"Symbol\",\"EOF\",\"CmdCache\",\"NameCache\",\"RefCache\",\"clearPrimitiveCaches\",\"Name\",\"Cmd\",\"cmd\",\"nonSerializableClosure\",\"Dict\",\"xref\",\"_map\",\"objId\",\"suppressEncryption\",\"__nonSerializable__\",\"assignXref\",\"newXref\",\"size\",\"key1\",\"key2\",\"key3\",\"Ref\",\"fetch\",\"getAsync\",\"fetchAsync\",\"getArray\",\"isArray\",\"getRaw\",\"getKeys\",\"getRawValues\",\"values\",\"set\",\"has\",\"forEach\",\"callback\",\"empty\",\"emptyDict\",\"merge\",\"dictArray\",\"mergeSubDicts\",\"mergedDict\",\"properties\",\"dict\",\"entries\",\"property\",\"subDict\",\"clear\",\"clone\",\"num\",\"gen\",\"fromString\",\"ref\",\"exec\",\"parseInt\",\"RefSet\",\"parent\",\"_set\",\"Set\",\"put\",\"add\",\"remove\",\"delete\",\"iterator\",\"RefSetCache\",\"putAlias\",\"aliasRef\",\"items\",\"isName\",\"v\",\"isCmd\",\"isDict\",\"isRefsEqual\",\"v1\",\"v2\",\"BaseStream\",\"isEmpty\",\"isDataLoaded\",\"getByte\",\"getBytes\",\"peekByte\",\"peekedByte\",\"pos\",\"peekBytes\",\"getUint16\",\"b0\",\"b1\",\"getInt32\",\"b2\",\"b3\",\"getByteRange\",\"begin\",\"end\",\"getString\",\"skip\",\"reset\",\"moveStart\",\"makeSubStream\",\"start\",\"getBaseStreams\",\"PDF_VERSION_REGEXP\",\"getLookupTableFactory\",\"initializer\",\"lookup\",\"MissingDataException\",\"ParserEOFException\",\"XRefEntryException\",\"XRefParseException\",\"arrayBuffersToBytes\",\"arr\",\"dataLength\",\"byteLength\",\"data\",\"item\",\"getInheritableProperty\",\"stopWhenFound\",\"visited\",\"ROMAN_NUMBER_MAP\",\"toRomanNumerals\",\"number\",\"lowerCase\",\"romanBuf\",\"romanStr\",\"toLowerCase\",\"log2\",\"ceil\",\"readInt8\",\"offset\",\"readUint16\",\"readUint32\",\"isWhiteSpace\",\"ch\",\"isBooleanArray\",\"len\",\"every\",\"isNumberArray\",\"lookupMatrix\",\"fallback\",\"lookupRect\",\"lookupNormalRect\",\"parseXFAPath\",\"path\",\"positionPattern\",\"split\",\"component\",\"escapePDFName\",\"char\",\"substring\",\"escapeString\",\"_collectJS\",\"entry\",\"list\",\"parents\",\"element\",\"js\",\"collectActions\",\"eventType\",\"actions\",\"additionalActionsDicts\",\"additionalActions\",\"action\",\"actionDict\",\"Action\",\"XMLEntities\",\"codePointIter\",\"codePointAt\",\"encodeToXmlString\",\"entity\",\"toUpperCase\",\"validateFontName\",\"fontFamily\",\"mustWarn\",\"re\",\"RegExp\",\"test\",\"ident\",\"validateCSSFont\",\"cssFontInfo\",\"DEFAULT_CSS_FONT_OBLIQUE\",\"DEFAULT_CSS_FONT_WEIGHT\",\"CSS_FONT_WEIGHT_VALUES\",\"fontWeight\",\"italicAngle\",\"weight\",\"angle\",\"parseFloat\",\"isNaN\",\"recoverJsURL\",\"URL_OPEN_METHODS\",\"regex\",\"jsUrl\",\"newWindow\",\"numberToString\",\"roundedValue\",\"round\",\"toFixed\",\"getNewAnnotationsMap\",\"annotationStorage\",\"newAnnotationsByPage\",\"annotations\",\"pageIndex\",\"isAscii\",\"stringToUTF16HexString\",\"stringToUTF16String\",\"bigEndian\",\"getRotationMatrix\",\"rotation\",\"width\",\"height\",\"getSizeInBytes\",\"Stream\",\"arrayBuffer\",\"strEnd\",\"StringStream\",\"NullStream\",\"ChunkedStream\",\"chunkSize\",\"manager\",\"_loadedChunks\",\"numChunks\",\"progressiveDataLength\",\"lastSuccessfulEnsureByteChunk\",\"getMissingChunks\",\"chunks\",\"numChunksLoaded\",\"onReceiveData\",\"beginChunk\",\"endChunk\",\"curChunk\",\"onReceiveProgressiveData\",\"position\",\"ensureByte\",\"ensureRange\",\"nextEmptyChunk\",\"hasChunk\",\"ChunkedStreamSubstream\",\"missingChunks\",\"subStream\",\"ChunkedStreamManager\",\"pdfNetworkStream\",\"args\",\"rangeChunkSize\",\"stream\",\"disableAutoFetch\",\"msgHandler\",\"currRequestId\",\"_chunksNeededByRequest\",\"_requestsByChunk\",\"_promisesByRequest\",\"aborted\",\"_loadedStreamCapability\",\"Promise\",\"withResolvers\",\"sendRequest\",\"rangeReader\",\"getRangeReader\",\"isStreamingSupported\",\"onProgress\",\"bind\",\"loaded\",\"resolve\",\"reject\",\"readChunk\",\"done\",\"chunkData\",\"read\",\"then\",\"e\",\"requestAllChunks\",\"noFetch\",\"_requestChunks\",\"promise\",\"requestId\",\"chunksNeeded\",\"capability\",\"chunksToRequest\",\"requestIds\",\"groupedChunksToRequest\",\"groupChunks\",\"groupedChunk\",\"catch\",\"reason\",\"getStream\",\"requestRange\",\"getBeginChunk\",\"getEndChunk\",\"requestRanges\",\"ranges\",\"range\",\"sort\",\"groupedChunks\",\"prevChunk\",\"send\",\"total\",\"isProgressive\",\"loadedRequests\",\"lastChunk\",\"onError\",\"err\",\"abort\",\"cancelAllRequests\",\"resizeRgbImage\",\"src\",\"dest\",\"w1\",\"h1\",\"w2\",\"h2\",\"alpha01\",\"COMPONENTS\",\"xRatio\",\"yRatio\",\"newIndex\",\"oldIndex\",\"xScaled\",\"Uint16Array\",\"w1Scanline\",\"py\",\"j\",\"ColorSpace\",\"numComps\",\"getRgb\",\"srcOffset\",\"rgb\",\"Uint8ClampedArray\",\"getRgbItem\",\"destOffset\",\"getRgbBuffer\",\"count\",\"bits\",\"getOutputLength\",\"inputLength\",\"isPassthrough\",\"isDefaultDecode\",\"decodeMap\",\"bpc\",\"fillRgb\",\"originalWidth\",\"originalHeight\",\"actualHeight\",\"comps\",\"rgbBuf\",\"numComponentColors\",\"needsResizing\",\"allColors\",\"colorMap\",\"destPos\",\"rgbPos\",\"usesZeroToOneRange\",\"_cache\",\"cacheKey\",\"localColorSpaceCache\",\"parsedColorSpace\",\"csName\",\"csRef\",\"getCached\",\"localColorSpace\",\"getByRef\",\"getByName\",\"parseAsync\",\"cs\",\"resources\",\"pdfFunctionFactory\",\"_parse\",\"parse\",\"cachedColorSpace\",\"fetchIfRef\",\"singletons\",\"gray\",\"cmyk\",\"PatternCS\",\"colorSpaces\",\"resourcesCS\",\"mode\",\"params\",\"baseCS\",\"whitePoint\",\"blackPoint\",\"gamma\",\"CalGrayCS\",\"matrix\",\"CalRGBCS\",\"alt\",\"altCS\",\"hiVal\",\"IndexedCS\",\"tintFn\",\"AlternateCS\",\"LabCS\",\"DeviceGrayCS\",\"DeviceRgbCS\",\"DeviceCmykCS\",\"base\",\"tmpBuf\",\"Float32Array\",\"scale\",\"baseNumComps\",\"baseBuf\",\"scaled\",\"tinted\",\"highVal\",\"outputDelta\",\"lookupPos\",\"q\",\"toRgb\",\"#toRgb\",\"srcScale\",\"k\",\"XW\",\"YW\",\"ZW\",\"XB\",\"YB\",\"ZB\",\"G\",\"A\",\"AG\",\"L\",\"val\",\"BRADFORD_SCALE_MATRIX\",\"BRADFORD_SCALE_INVERSE_MATRIX\",\"SRGB_D65_XYZ_TO_RGB_MATRIX\",\"FLAT_WHITEPOINT_MATRIX\",\"tempNormalizeMatrix\",\"tempConvertMatrix1\",\"tempConvertMatrix2\",\"DECODE_L_CONSTANT\",\"GR\",\"GG\",\"GB\",\"MXA\",\"MYA\",\"MZA\",\"MXB\",\"MYB\",\"MZB\",\"MXC\",\"MYC\",\"MZC\",\"matrixProduct\",\"#matrixProduct\",\"result\",\"toFlat\",\"#toFlat\",\"sourceWhitePoint\",\"LMS\",\"toD65\",\"#toD65\",\"D65X\",\"D65Y\",\"D65Z\",\"sRGBTransferFunction\",\"#sRGBTransferFunction\",\"color\",\"adjustToRange\",\"#adjustToRange\",\"decodeL\",\"#decodeL\",\"compensateBlackPoint\",\"#compensateBlackPoint\",\"sourceBlackPoint\",\"XYZ_Flat\",\"zeroDecodeL\",\"X_DST\",\"X_SRC\",\"Y_DST\",\"Y_SRC\",\"Z_DST\",\"Z_SRC\",\"X_Scale\",\"X_Offset\",\"Y_Scale\",\"Y_Offset\",\"Z_Scale\",\"Z_Offset\",\"normalizeWhitePointToFlat\",\"#normalizeWhitePointToFlat\",\"XYZ_In\",\"LMS_Flat\",\"normalizeWhitePointToD65\",\"#normalizeWhitePointToD65\",\"LMS_D65\",\"B\",\"AGR\",\"BGG\",\"CGB\",\"Y\",\"Z\",\"XYZ\",\"XYZ_Black\",\"XYZ_D65\",\"SRGB\",\"amin\",\"amax\",\"bmin\",\"bmax\",\"fn_g\",\"#fn_g\",\"#decode\",\"high1\",\"low2\",\"high2\",\"maxVal\",\"Ls\",\"as\",\"bs\",\"M\",\"N\",\"hexToInt\",\"hexToStr\",\"addHex\",\"incHex\",\"MAX_NUM_SIZE\",\"MAX_ENCODED_NUM_SIZE\",\"BinaryCMapStream\",\"readByte\",\"readNumber\",\"last\",\"readSigned\",\"readHex\",\"readHexNumber\",\"stack\",\"sp\",\"bufferSize\",\"readHexSigned\",\"sign\",\"readString\",\"BinaryCMapReader\",\"cMap\",\"extend\",\"header\",\"vertical\",\"useCMap\",\"tmp\",\"sequence\",\"dataSize\",\"ucs2DataSize\",\"subitemsCount\",\"addCodespaceRange\",\"mapOne\",\"mapCidRange\",\"mapBfRange\",\"emptyBuffer\",\"DecodeStream\",\"maybeMinBufferLength\",\"_rawMinBufferLength\",\"bufferLength\",\"eof\",\"minBufferLength\",\"readBlock\",\"ensureBuffer\",\"requested\",\"buffer2\",\"ignoreColorSpace\",\"bufEnd\",\"StreamsSequenceStream\",\"streams\",\"maybeLength\",\"_onError\",\"shift\",\"newLength\",\"baseStreamsBuf\",\"baseStreams\",\"Ascii85Stream\",\"input\",\"TILDA_CHAR\",\"Z_LOWER_CHAR\",\"AsciiHexStream\",\"firstDigit\",\"UPSTREAM_BLOCK_SIZE\",\"maxDecodeLength\",\"digit\",\"ccittEOL\",\"ccittEOF\",\"twoDimPass\",\"twoDimHoriz\",\"twoDimVert0\",\"twoDimVertR1\",\"twoDimVertL1\",\"twoDimVertR2\",\"twoDimVertL2\",\"twoDimVertR3\",\"twoDimVertL3\",\"twoDimTable\",\"whiteTable1\",\"whiteTable2\",\"blackTable1\",\"blackTable2\",\"blackTable3\",\"CCITTFaxDecoder\",\"source\",\"next\",\"eoline\",\"EndOfLine\",\"byteAlign\",\"EncodedByteAlign\",\"columns\",\"Columns\",\"rows\",\"Rows\",\"eoblock\",\"EndOfBlock\",\"black\",\"BlackIs1\",\"codingLine\",\"refLine\",\"codingPos\",\"row\",\"nextLine2D\",\"inputBits\",\"inputBuf\",\"outputBits\",\"rowsDone\",\"code1\",\"_lookBits\",\"_eatBits\",\"readNextChar\",\"refPos\",\"blackPixels\",\"code2\",\"code3\",\"_getTwoDimCode\",\"_addPixels\",\"_getBlackCode\",\"_getWhiteCode\",\"_addPixelsNeg\",\"gotEOL\",\"a1\",\"_findTableCode\",\"table\",\"limit\",\"limitValue\",\"CCITTFaxStream\",\"ccittFaxDecoder\",\"codeLenCodeMap\",\"Int32Array\",\"lengthDecode\",\"distDecode\",\"fixedLitCodeTab\",\"fixedDistCodeTab\",\"FlateStream\",\"cmf\",\"flg\",\"codeSize\",\"codeBuf\",\"getBits\",\"getCode\",\"codes\",\"maxLen\",\"codeLen\",\"codeVal\",\"generateHuffmanTable\",\"lengths\",\"endsStreamOnError\",\"#endsStreamOnError\",\"hdr\",\"blockLen\",\"check\",\"block\",\"litCodeTable\",\"distCodeTable\",\"numLitCodes\",\"numDistCodes\",\"numCodeLenCodes\",\"codeLenCodeLengths\",\"codeLenCodeTab\",\"codeLengths\",\"bitsLength\",\"bitsOffset\",\"what\",\"repeatLength\",\"dist\",\"QeTable\",\"qe\",\"nmps\",\"nlps\",\"switchFlag\",\"ArithmeticDecoder\",\"bp\",\"dataEnd\",\"chigh\",\"clow\",\"byteIn\",\"ct\",\"readBit\",\"contexts\",\"cx_index\",\"cx_mps\",\"qeTableIcx\",\"qeIcx\",\"Jbig2Error\",\"ContextCache\",\"getContexts\",\"id\",\"Int8Array\",\"DecodingContext\",\"contextCache\",\"cache\",\"MAX_INT_32\",\"MIN_INT_32\",\"decodeInteger\",\"procedure\",\"prev\",\"readBits\",\"bit\",\"signedValue\",\"decodeIAID\",\"codeLength\",\"SegmentTypes\",\"CodingTemplates\",\"RefinementTemplates\",\"coding\",\"reference\",\"ReusedContexts\",\"RefinementReusedContexts\",\"decodeBitmapTemplate0\",\"decodingContext\",\"bitmap\",\"contextLabel\",\"pixel\",\"row1\",\"row2\",\"OLD_PIXEL_MASK\",\"decodeBitmap\",\"mmr\",\"templateIndex\",\"prediction\",\"at\",\"Reader\",\"decodeMMRBitmap\",\"useskip\",\"template\",\"concat\",\"templateLength\",\"templateX\",\"templateY\",\"changingTemplateEntries\",\"reuseMask\",\"minX\",\"maxX\",\"minY\",\"changingEntriesLength\",\"changingTemplateX\",\"changingTemplateY\",\"changingTemplateBit\",\"sbb_left\",\"sbb_top\",\"sbb_right\",\"pseudoPixelContext\",\"ltp\",\"i0\",\"j0\",\"sltp\",\"decodeRefinement\",\"referenceBitmap\",\"offsetX\",\"offsetY\",\"codingTemplate\",\"codingTemplateLength\",\"codingTemplateX\",\"codingTemplateY\",\"referenceTemplate\",\"referenceTemplateLength\",\"referenceTemplateX\",\"referenceTemplateY\",\"referenceWidth\",\"referenceHeight\",\"decodeSymbolDictionary\",\"huffman\",\"refinement\",\"symbols\",\"numberOfNewSymbols\",\"numberOfExportedSymbols\",\"huffmanTables\",\"refinementTemplateIndex\",\"refinementAt\",\"huffmanInput\",\"newSymbols\",\"currentHeight\",\"symbolCodeLength\",\"tableB1\",\"symbolWidths\",\"getStandardTable\",\"deltaHeight\",\"tableDeltaHeight\",\"currentWidth\",\"totalWidth\",\"firstSymbol\",\"deltaWidth\",\"tableDeltaWidth\",\"numberOfInstances\",\"decodeTextRegion\",\"symbolId\",\"rdx\",\"rdy\",\"symbol\",\"bitmapSize\",\"tableBitmapSize\",\"collectiveBitmap\",\"readUncompressedBitmap\",\"originalEnd\",\"bitmapEnd\",\"numberOfSymbolsDecoded\",\"xMin\",\"xMax\",\"bitmapWidth\",\"symbolBitmap\",\"exportedSymbols\",\"flags\",\"currentFlag\",\"totalSymbolsLength\",\"runLength\",\"defaultPixelValue\",\"numberOfSymbolInstances\",\"stripSize\",\"inputSymbols\",\"transposed\",\"dsOffset\",\"referenceCorner\",\"combinationOperator\",\"logStripSize\",\"stripT\",\"tableDeltaT\",\"firstS\",\"deltaT\",\"deltaFirstS\",\"tableFirstS\",\"currentS\",\"currentT\",\"symbolIDTable\",\"applyRefinement\",\"symbolWidth\",\"symbolHeight\",\"rdw\",\"rdh\",\"increment\",\"offsetT\",\"offsetS\",\"s2\",\"t2\",\"symbolRow\",\"maxWidth\",\"deltaS\",\"tableDeltaS\",\"decodePatternDictionary\",\"patternWidth\",\"patternHeight\",\"maxPatternIndex\",\"collectiveWidth\",\"patterns\",\"patternBitmap\",\"decodeHalftoneRegion\",\"regionWidth\",\"regionHeight\",\"enableSkip\",\"gridWidth\",\"gridHeight\",\"gridOffsetX\",\"gridOffsetY\",\"gridVectorX\",\"gridVectorY\",\"regionBitmap\",\"numberOfPatterns\",\"pattern0\",\"bitsPerValue\",\"grayScaleBitPlanes\",\"mmrInput\",\"mg\",\"ng\",\"patternIndex\",\"patternRow\",\"regionRow\",\"regionX\",\"regionY\",\"readSegmentHeader\",\"segmentHeader\",\"segmentType\",\"typeName\",\"deferredNonRetain\",\"pageAssociationFieldSize\",\"referredFlags\",\"referredToCount\",\"retainBits\",\"referredToSegmentNumberSize\",\"referredTo\",\"pageAssociation\",\"genericRegionInfo\",\"readRegionSegmentInformation\",\"genericRegionSegmentFlags\",\"RegionSegmentInformationFieldLength\",\"genericRegionMmr\",\"searchPatternLength\",\"searchPattern\",\"headerEnd\",\"readSegments\",\"segments\",\"segment\",\"randomAccess\",\"processSegment\",\"visitor\",\"atLength\",\"dictionary\",\"dictionaryFlags\",\"huffmanDHSelector\",\"huffmanDWSelector\",\"bitmapSizeSelector\",\"aggregationInstancesSelector\",\"bitmapCodingContextUsed\",\"bitmapCodingContextRetained\",\"refinementTemplate\",\"textRegion\",\"textRegionSegmentFlags\",\"textRegionHuffmanFlags\",\"huffmanFS\",\"huffmanDS\",\"huffmanDT\",\"huffmanRefinementDW\",\"huffmanRefinementDH\",\"huffmanRefinementDX\",\"huffmanRefinementDY\",\"huffmanRefinementSizeSelector\",\"patternDictionary\",\"patternDictionaryFlags\",\"halftoneRegion\",\"halftoneRegionFlags\",\"genericRegion\",\"pageInfo\",\"resolutionX\",\"resolutionY\",\"pageSegmentFlags\",\"lossless\",\"requiresBuffer\",\"combinationOperatorOverride\",\"callbackName\",\"processSegments\",\"parseJbig2Chunks\",\"SimpleSegmentVisitor\",\"parseJbig2\",\"onPageInformation\",\"currentPageInfo\",\"rowSize\",\"drawBitmap\",\"regionInfo\",\"mask0\",\"offset0\",\"mask\",\"onImmediateGenericRegion\",\"region\",\"onImmediateLosslessGenericRegion\",\"arguments\",\"onSymbolDictionary\",\"currentSegment\",\"referredSegments\",\"getSymbolDictionaryHuffmanTables\",\"customTables\",\"referredSegment\",\"referredSymbols\",\"onImmediateTextRegion\",\"getTextRegionHuffmanTables\",\"onImmediateLosslessTextRegion\",\"onPatternDictionary\",\"onImmediateHalftoneRegion\",\"onImmediateLosslessHalftoneRegion\",\"onTables\",\"decodeTablesSegment\",\"HuffmanLine\",\"lineData\",\"isOOB\",\"rangeLow\",\"prefixLength\",\"rangeLength\",\"prefixCode\",\"isLowerRange\",\"HuffmanTreeNode\",\"line\",\"children\",\"isLeaf\",\"buildTree\",\"node\",\"decodeNode\",\"reader\",\"htOffset\",\"HuffmanTable\",\"lines\",\"prefixCodesDone\",\"assignPrefixCodes\",\"rootNode\",\"linesLength\",\"prefixLengthMax\",\"histogram\",\"currentLength\",\"firstCode\",\"currentCode\",\"currentTemp\",\"lowestValue\",\"highestValue\",\"prefixSizeBits\",\"rangeSizeBits\",\"currentRangeLow\",\"standardTablesCache\",\"currentByte\",\"numBits\",\"getCustomHuffmanTable\",\"index\",\"currentIndex\",\"numberOfSymbols\",\"runCodesTable\",\"repeatedLength\",\"numberOfRepeats\",\"customIndex\",\"tableAggregateInstances\",\"endOfBlock\",\"lookForEOFLimit\",\"Jbig2Image\",\"parseChunks\",\"Jbig2Stream\",\"jbig2Image\",\"globalsStream\",\"globals\",\"convertToRGBA\",\"kind\",\"convertBlackAndWhiteToRGBA\",\"convertRGBToRGBA\",\"srcPos\",\"nonBlackColor\",\"inverseDecode\",\"zeroMapping\",\"oneMapping\",\"widthInSource\",\"widthRemainder\",\"srcLength\",\"elem\",\"len32\",\"src32\",\"s1\",\"s3\",\"jj\",\"grayToRGBA\",\"JpegError\",\"DNLMarkerError\",\"scanLines\",\"EOIMarkerError\",\"dctZigZag\",\"dctCos1\",\"dctSin1\",\"dctCos3\",\"dctSin3\",\"dctCos6\",\"dctSin6\",\"dctSqrt2\",\"dctSqrt1d2\",\"buildHuffmanTable\",\"pop\",\"getBlockBufferOffset\",\"col\",\"blocksPerLine\",\"decodeScan\",\"frame\",\"components\",\"resetInterval\",\"spectralStart\",\"spectralEnd\",\"successivePrev\",\"successive\",\"parseDNLMarker\",\"mcusPerLine\",\"progressive\",\"startOffset\",\"bitsData\",\"bitsCount\",\"nextByte\",\"maybeScanLines\",\"blockRow\",\"precision\",\"decodeHuffman\",\"tree\",\"receive\",\"receiveAndExtend\",\"decodeBaseline\",\"blockOffset\",\"huffmanTableDC\",\"diff\",\"blockData\",\"pred\",\"rs\",\"huffmanTableAC\",\"s\",\"z\",\"decodeDCFirst\",\"decodeDCSuccessive\",\"eobrun\",\"decodeACFirst\",\"successiveACState\",\"successiveACNextValue\",\"decodeACSuccessive\",\"offsetZ\",\"decodeMcu\",\"mcu\",\"mcuRow\",\"mcuCol\",\"blockCol\",\"h\",\"decodeBlock\",\"componentsLength\",\"decodeFn\",\"fileMarker\",\"mcuExpected\",\"blocksPerColumn\",\"mcusPerColumn\",\"mcuToRead\",\"findNextFileMarker\",\"invalid\",\"partialMsg\",\"marker\",\"quantizeAndInverse\",\"blockBufferOffset\",\"qt\",\"quantizationTable\",\"v0\",\"v3\",\"v4\",\"v5\",\"v6\",\"v7\",\"p0\",\"p5\",\"p6\",\"p7\",\"buildComponentData\",\"computationBuffer\",\"Int16Array\",\"currentPos\",\"startPos\",\"maxPos\",\"newPos\",\"currentMarker\",\"newMarker\",\"JpegImage\",\"decodeTransform\",\"colorTransform\",\"_decodeTransform\",\"_colorTransform\",\"dnlScanLines\",\"readDataBlock\",\"endOffset\",\"array\",\"prepareComponents\",\"samplesPerLine\",\"maxH\",\"maxV\",\"blocksPerLineForMcu\",\"blocksPerColumnForMcu\",\"blocksBufferSize\",\"jfif\",\"adobe\",\"numSOSMarkers\",\"quantizationTables\",\"huffmanTablesAC\",\"huffmanTablesDC\",\"markerLoop\",\"l\",\"appData\",\"version\",\"major\",\"minor\",\"densityUnits\",\"xDensity\",\"yDensity\",\"thumbWidth\",\"thumbHeight\",\"thumbData\",\"flags0\",\"flags1\",\"transformCode\",\"quantizationTablesLength\",\"quantizationTablesEnd\",\"quantizationTableSpec\",\"tableData\",\"extended\",\"sofScanLines\",\"componentIds\",\"componentsCount\",\"componentId\",\"qId\",\"quantizationId\",\"huffmanLength\",\"huffmanTableSpec\",\"codeLengthSum\",\"huffmanValues\",\"selectorsCount\",\"componentIndex\",\"tableSpec\",\"successiveApproximation\",\"processed\",\"nextFileMarker\",\"output\",\"scaleX\",\"scaleY\",\"numComponents\",\"_getLinearizedBlockData\",\"isSourcePDF\",\"componentScaleX\",\"componentScaleY\",\"blocksPerScanline\",\"xScaleBlockOffset\",\"mask3LSB\",\"lastComponentScaleX\",\"_isColorConversionNeeded\",\"_convertYccToRgb\",\"Cb\",\"Cr\",\"_convertYccToRgba\",\"out\",\"_convertYcckToRgb\",\"_convertYcckToRgba\",\"_convertYcckToCmyk\",\"_convertCmykToRgb\",\"_convertCmykToRgba\",\"getData\",\"forceRGBA\",\"forceRGB\",\"rgbaData\",\"grayColor\",\"JpegStream\",\"jpegOptions\",\"decodeArr\",\"bitsPerComponent\",\"decodeArrLength\",\"transformNeeded\",\"maxValue\",\"jpegImage\",\"drawWidth\",\"drawHeight\",\"OpenJPEG\",\"_scriptName\",\"document\",\"currentScript\",\"moduleArg\",\"moduleRtn\",\"Module\",\"assign\",\"readyPromiseResolve\",\"readyPromiseReject\",\"readyPromise\",\"ENVIRONMENT_IS_WEB\",\"ENVIRONMENT_IS_WORKER\",\"ptr\",\"_malloc\",\"HEAPU8\",\"ret\",\"_jp2_decode\",\"_free\",\"errorMessages\",\"imageData\",\"moduleOverrides\",\"arguments_\",\"thisProgram\",\"quit_\",\"toThrow\",\"scriptDirectory\",\"read_\",\"readAsync\",\"readBinary\",\"self\",\"location\",\"href\",\"substr\",\"replace\",\"lastIndexOf\",\"xhr\",\"XMLHttpRequest\",\"open\",\"responseText\",\"responseType\",\"response\",\"onload\",\"onerror\",\"error\",\"wasmBinary\",\"intArrayFromBase64\",\"atob\",\"tryParseAsDataURI\",\"filename\",\"isDataURI\",\"dataURIPrefix\",\"wasmMemory\",\"ABORT\",\"HEAP8\",\"HEAP16\",\"HEAPU16\",\"HEAP32\",\"HEAPU32\",\"HEAPF32\",\"HEAPF64\",\"updateMemoryViews\",\"Float64Array\",\"__ATPRERUN__\",\"__ATINIT__\",\"__ATPOSTRUN__\",\"runtimeInitialized\",\"preRun\",\"addOnPreRun\",\"callRuntimeCallbacks\",\"initRuntime\",\"postRun\",\"addOnPostRun\",\"cb\",\"unshift\",\"addOnInit\",\"runDependencies\",\"runDependencyWatcher\",\"dependenciesFulfilled\",\"addRunDependency\",\"removeRunDependency\",\"clearInterval\",\"findWasmBinary\",\"f\",\"wasmBinaryFile\",\"getBinarySync\",\"file\",\"binary\",\"instantiateSync\",\"module\",\"WebAssembly\",\"instance\",\"Instance\",\"getWasmImports\",\"wasmImports\",\"createWasm\",\"receiveInstance\",\"wasmExports\",\"exports\",\"callbacks\",\"noExitRuntime\",\"__emscripten_memcpy_js\",\"copyWithin\",\"getHeapMax\",\"growMemory\",\"pages\",\"grow\",\"_emscripten_resize_heap\",\"requestedSize\",\"oldSize\",\"maxHeapSize\",\"alignUp\",\"multiple\",\"cutDown\",\"overGrownHeapSize\",\"newSize\",\"replacement\",\"ENV\",\"getExecutableName\",\"getEnvStrings\",\"strings\",\"lang\",\"languages\",\"env\",\"stringToAscii\",\"_environ_get\",\"__environ\",\"environ_buf\",\"bufSize\",\"string\",\"_environ_sizes_get\",\"penviron_count\",\"penviron_buf_size\",\"printCharBuffers\",\"UTF8Decoder\",\"UTF8ArrayToString\",\"heapOrArray\",\"idx\",\"maxBytesToRead\",\"endIdx\",\"endPtr\",\"u0\",\"u1\",\"u2\",\"printChar\",\"curr\",\"UTF8ToString\",\"_fd_write\",\"fd\",\"iov\",\"iovcnt\",\"pnum\",\"_jsPrintWarning\",\"message_ptr\",\"_setImageData\",\"array_ptr\",\"array_size\",\"_storeErrorMessage\",\"___wasm_call_ctors\",\"__emscripten_stack_restore\",\"__emscripten_stack_alloc\",\"_emscripten_stack_get_current\",\"calledRun\",\"runCaller\",\"run\",\"doRun\",\"setTimeout\",\"JpxError\",\"JpxImage\",\"cleanup\",\"parseImageProperties\",\"newByte\",\"oldByte\",\"Xsiz\",\"Ysiz\",\"XOsiz\",\"YOsiz\",\"Csiz\",\"JpxStream\",\"LZWStream\",\"earlyChange\",\"cachedData\",\"bitsCached\",\"maxLzwDictionarySize\",\"lzwState\",\"nextCode\",\"dictionaryValues\",\"dictionaryLengths\",\"dictionaryPrevCodes\",\"currentSequence\",\"currentSequenceLength\",\"lastCode\",\"blockSize\",\"decodedSizeDelta\",\"estimatedDecodedSize\",\"prevCode\",\"decodedLength\",\"currentBufferLength\",\"hasPrev\",\"PredictorStream\",\"predictor\",\"readBlockTiff\",\"readBlockPng\",\"colors\",\"pixBytes\",\"rowBytes\",\"rawBytes\",\"inbuf\",\"outbuf\",\"inbits\",\"outbits\",\"bytesPerPixel\",\"sum\",\"compArray\",\"bitMask\",\"kk\",\"prevRow\",\"up\",\"upLeft\",\"left\",\"pa\",\"pb\",\"pc\",\"RunLengthStream\",\"repeatHeader\",\"MAX_LENGTH_TO_CACHE\",\"getInlineImageCacheKey\",\"Parser\",\"lexer\",\"allowStreams\",\"recoveryMode\",\"imageCache\",\"_imageId\",\"refill\",\"buf1\",\"getObj\",\"buf2\",\"tryShift\",\"cipherTransform\",\"makeInlineImage\",\"makeStream\",\"decryptString\",\"findDefaultInlineStreamEnd\",\"I\",\"SPACE\",\"LF\",\"CR\",\"NUL\",\"knownCommands\",\"state\",\"maybeEIPos\",\"followingBytes\",\"tmpLexer\",\"Lexer\",\"_hexStringWarn\",\"numArgs\",\"nextObj\",\"knownCommand\",\"variableArgs\",\"findDCTDecodeInlineStreamEnd\",\"foundEOI\",\"markerLength\",\"inlineStreamSkipEI\",\"findASCII85DecodeInlineStreamEnd\",\"TILDE\",\"GT\",\"tildePos\",\"maybeEI\",\"findASCIIHexDecodeInlineStreamEnd\",\"dictMap\",\"dictLength\",\"beginInlineImagePos\",\"filter\",\"Filter\",\"filterName\",\"filterZero\",\"initialStreamPos\",\"cacheEntry\",\"imageStream\",\"createStream\",\"findStreamLength\",\"#findStreamLength\",\"SCAN_BLOCK_LENGTH\",\"signatureLength\",\"END_SIGNATURE\",\"endLength\",\"PARTIAL_SIGNATURE\",\"normalLength\",\"scanBytes\",\"scanLength\",\"found\",\"part\",\"partLen\",\"lastByte\",\"skipToNextLine\",\"nextChar\",\"makeFilter\",\"filterArray\",\"paramsArray\",\"specialChars\",\"toHexDigit\",\"_hexStringNumWarn\",\"currentChar\",\"peekChar\",\"getNumber\",\"eNotation\",\"divideBy\",\"baseValue\",\"powerValue\",\"powerValueSign\",\"currentDigit\",\"numParen\",\"charBuffered\",\"getName\",\"previousCh\",\"MAX_HEX_STRING_NUM_WARN\",\"getHexString\",\"isFirstHex\",\"secondDigit\",\"comment\",\"nextCh\",\"knownCommandFound\",\"possibleCommand\",\"Linearization\",\"getInt\",\"linDict\",\"allowZeroValue\",\"getHints\",\"hints\",\"hintsLength\",\"hint\",\"parser\",\"obj1\",\"obj2\",\"obj3\",\"objectNumberFirst\",\"endFirst\",\"numPages\",\"mainXRefEntriesOffset\",\"pageFirst\",\"BUILT_IN_CMAPS\",\"MAX_MAP_RANGE\",\"CMap\",\"builtInCMap\",\"codespaceRanges\",\"numCodespaceRanges\",\"low\",\"high\",\"dstLow\",\"nextCharCode\",\"mapBfRangeToArray\",\"dst\",\"contains\",\"charCodeOf\",\"indexOf\",\"getMap\",\"readCharCode\",\"nn\",\"codespaceRange\",\"charcode\",\"getCharCodeLength\",\"isIdentityCMap\",\"IdentityCMap\",\"strToInt\",\"expectString\",\"expectInt\",\"parseBfChar\",\"parseBfRange\",\"parseCidChar\",\"parseCidRange\",\"parseCodespaceRange\",\"parseWMode\",\"parseCMapName\",\"parseCMap\",\"fetchBuiltInCMap\",\"previous\",\"embeddedUseCMap\",\"objLoop\",\"extendCMap\",\"createBuiltInCMap\",\"useCodespaceRanges\",\"cMapData\",\"compressionType\",\"CMapFactory\",\"parsedCMap\",\"ISOAdobeCharset\",\"ExpertCharset\",\"ExpertSubsetCharset\",\"ExpertEncoding\",\"MacExpertEncoding\",\"MacRomanEncoding\",\"StandardEncoding\",\"WinAnsiEncoding\",\"SymbolSetEncoding\",\"ZapfDingbatsEncoding\",\"getEncoding\",\"encodingName\",\"MAX_SUBR_NESTING\",\"CFFStandardStrings\",\"NUM_STANDARD_CFF_STRINGS\",\"CharstringValidationData\",\"stackClearing\",\"stem\",\"resetStack\",\"undefStack\",\"CharstringValidationData12\",\"stackDelta\",\"stackFn\",\"CFFParser\",\"seacAnalysisEnabled\",\"cff\",\"CFF\",\"parseHeader\",\"nameIndex\",\"parseIndex\",\"endPos\",\"topDictIndex\",\"stringIndex\",\"globalSubrIndex\",\"topDictParsed\",\"parseDict\",\"topDict\",\"createDict\",\"CFFTopDict\",\"names\",\"parseNameIndex\",\"parseStringIndex\",\"parsePrivateDict\",\"isCIDFont\",\"hasName\",\"charStringOffset\",\"charStringIndex\",\"fontMatrix\",\"fontBBox\",\"ascent\",\"descent\",\"ascentScaled\",\"charset\",\"fdArrayIndex\",\"dictRaw\",\"fontDict\",\"fdArray\",\"parseCharsets\",\"fdSelect\",\"parseFDSelect\",\"parseEncoding\",\"charStringsAndSeacs\",\"parseCharStrings\",\"charStrings\",\"localSubrIndex\",\"privateDict\",\"subrsIndex\",\"seacs\",\"widths\",\"bytesLength\",\"hdrSize\",\"offSize\",\"CFFHeader\",\"parseOperand\",\"parseFloatOperand\",\"NaN\",\"operands\",\"cffIndex\",\"CFFIndex\",\"offsets\",\"offsetSize\",\"offsetStart\",\"offsetEnd\",\"CFFStrings\",\"Type\",\"cffDict\",\"setByKey\",\"parseCharString\",\"callDepth\",\"stackSize\",\"validationCommand\",\"seac\",\"bias\",\"subrNumber\",\"valid\",\"hasVStems\",\"firstStackClearing\",\"charstring\",\"localSubrToUse\",\"privateDictToUse\",\"fdIndex\",\"getFDIndex\",\"nominalWidth\",\"defaultWidth\",\"emptyPrivateDictionary\",\"parentDict\",\"CFFPrivateDict\",\"privateOffset\",\"removeByName\",\"privateDictEnd\",\"dictData\",\"setByName\",\"subrsOffset\",\"relativeOffset\",\"cid\",\"CFFCharset\",\"CFFCharsetPredefinedTypes\",\"ISO_ADOBE\",\"EXPERT\",\"EXPERT_SUBSET\",\"format\",\"raw\",\"predefined\",\"readSupplement\",\"supplementsCount\",\"sid\",\"baseEncoding\",\"dataStart\",\"glyphsCount\",\"rangesCount\",\"gid\",\"CFFEncoding\",\"CFFFDSelect\",\"duplicateFirstGlyph\",\"glyphZero\",\"hasGlyphId\",\"glyph\",\"getSID\",\"objects\",\"CFFDict\",\"tables\",\"keyToNameMap\",\"nameToKeyMap\",\"defaults\",\"types\",\"opcodes\",\"order\",\"createTables\",\"layout\",\"CFFTopDictLayout\",\"CFFPrivateDictLayout\",\"glyphIndex\",\"CFFOffsetTracker\",\"isTracking\",\"track\",\"setEntryLocation\",\"dataOffset\",\"offset1\",\"offset2\",\"offset3\",\"offset4\",\"CFFCompiler\",\"compile\",\"compileHeader\",\"compileNameIndex\",\"xuid\",\"compiled\",\"compileTopDicts\",\"topDictTracker\",\"trackers\",\"compileStringIndex\",\"compileIndex\",\"compileEncoding\",\"compileCharset\",\"compileCharStrings\",\"compileFDSelect\",\"fontDictTrackers\",\"compilePrivateDicts\",\"encodeNumber\",\"encodeInteger\",\"encodeFloat\",\"EncodeFloatRegExp\",\"epsilon\",\"nibbles\",\"sanitizedName\",\"dicts\",\"removeCidKeys\",\"fontDictTracker\",\"fontDictData\",\"compileDict\",\"privateDictTracker\",\"privateDictData\",\"outputLength\",\"subrs\",\"offsetTracker\",\"charStringsIndex\",\"numGlyphs\",\"numGlyphsLessNotDef\",\"charsetIndex\",\"numCharsets\",\"warned\",\"compileTypedArray\",\"lastFD\",\"currentFD\",\"numRanges\",\"lastOffset\",\"getGlyphsUnicode\",\"AE\",\"AEacute\",\"AEmacron\",\"AEsmall\",\"Aacute\",\"Aacutesmall\",\"Abreve\",\"Abreveacute\",\"Abrevecyrillic\",\"Abrevedotbelow\",\"Abrevegrave\",\"Abrevehookabove\",\"Abrevetilde\",\"Acaron\",\"Acircle\",\"Acircumflex\",\"Acircumflexacute\",\"Acircumflexdotbelow\",\"Acircumflexgrave\",\"Acircumflexhookabove\",\"Acircumflexsmall\",\"Acircumflextilde\",\"Acute\",\"Acutesmall\",\"Acyrillic\",\"Adblgrave\",\"Adieresis\",\"Adieresiscyrillic\",\"Adieresismacron\",\"Adieresissmall\",\"Adotbelow\",\"Adotmacron\",\"Agrave\",\"Agravesmall\",\"Ahookabove\",\"Aiecyrillic\",\"Ainvertedbreve\",\"Alpha\",\"Alphatonos\",\"Amacron\",\"Amonospace\",\"Aogonek\",\"Aring\",\"Aringacute\",\"Aringbelow\",\"Aringsmall\",\"Asmall\",\"Atilde\",\"Atildesmall\",\"Aybarmenian\",\"Bcircle\",\"Bdotaccent\",\"Bdotbelow\",\"Becyrillic\",\"Benarmenian\",\"Beta\",\"Bhook\",\"Blinebelow\",\"Bmonospace\",\"Brevesmall\",\"Bsmall\",\"Btopbar\",\"Caarmenian\",\"Cacute\",\"Caron\",\"Caronsmall\",\"Ccaron\",\"Ccedilla\",\"Ccedillaacute\",\"Ccedillasmall\",\"Ccircle\",\"Ccircumflex\",\"Cdot\",\"Cdotaccent\",\"Cedillasmall\",\"Chaarmenian\",\"Cheabkhasiancyrillic\",\"Checyrillic\",\"Chedescenderabkhasiancyrillic\",\"Chedescendercyrillic\",\"Chedieresiscyrillic\",\"Cheharmenian\",\"Chekhakassiancyrillic\",\"Cheverticalstrokecyrillic\",\"Chi\",\"Chook\",\"Circumflexsmall\",\"Cmonospace\",\"Coarmenian\",\"Csmall\",\"DZ\",\"DZcaron\",\"Daarmenian\",\"Dafrican\",\"Dcaron\",\"Dcedilla\",\"Dcircle\",\"Dcircumflexbelow\",\"Dcroat\",\"Ddotaccent\",\"Ddotbelow\",\"Decyrillic\",\"Deicoptic\",\"Delta\",\"Deltagreek\",\"Dhook\",\"Dieresis\",\"DieresisAcute\",\"DieresisGrave\",\"Dieresissmall\",\"Digammagreek\",\"Djecyrillic\",\"Dlinebelow\",\"Dmonospace\",\"Dotaccentsmall\",\"Dslash\",\"Dsmall\",\"Dtopbar\",\"Dz\",\"Dzcaron\",\"Dzeabkhasiancyrillic\",\"Dzecyrillic\",\"Dzhecyrillic\",\"Eacute\",\"Eacutesmall\",\"Ebreve\",\"Ecaron\",\"Ecedillabreve\",\"Echarmenian\",\"Ecircle\",\"Ecircumflex\",\"Ecircumflexacute\",\"Ecircumflexbelow\",\"Ecircumflexdotbelow\",\"Ecircumflexgrave\",\"Ecircumflexhookabove\",\"Ecircumflexsmall\",\"Ecircumflextilde\",\"Ecyrillic\",\"Edblgrave\",\"Edieresis\",\"Edieresissmall\",\"Edot\",\"Edotaccent\",\"Edotbelow\",\"Efcyrillic\",\"Egrave\",\"Egravesmall\",\"Eharmenian\",\"Ehookabove\",\"Eightroman\",\"Einvertedbreve\",\"Eiotifiedcyrillic\",\"Elcyrillic\",\"Elevenroman\",\"Emacron\",\"Emacronacute\",\"Emacrongrave\",\"Emcyrillic\",\"Emonospace\",\"Encyrillic\",\"Endescendercyrillic\",\"Eng\",\"Enghecyrillic\",\"Enhookcyrillic\",\"Eogonek\",\"Eopen\",\"Epsilon\",\"Epsilontonos\",\"Ercyrillic\",\"Ereversed\",\"Ereversedcyrillic\",\"Escyrillic\",\"Esdescendercyrillic\",\"Esh\",\"Esmall\",\"Eta\",\"Etarmenian\",\"Etatonos\",\"Eth\",\"Ethsmall\",\"Etilde\",\"Etildebelow\",\"Euro\",\"Ezh\",\"Ezhcaron\",\"Ezhreversed\",\"Fcircle\",\"Fdotaccent\",\"Feharmenian\",\"Feicoptic\",\"Fhook\",\"Fitacyrillic\",\"Fiveroman\",\"Fmonospace\",\"Fourroman\",\"Fsmall\",\"GBsquare\",\"Gacute\",\"Gamma\",\"Gammaafrican\",\"Gangiacoptic\",\"Gbreve\",\"Gcaron\",\"Gcedilla\",\"Gcircle\",\"Gcircumflex\",\"Gcommaaccent\",\"Gdot\",\"Gdotaccent\",\"Gecyrillic\",\"Ghadarmenian\",\"Ghemiddlehookcyrillic\",\"Ghestrokecyrillic\",\"Gheupturncyrillic\",\"Ghook\",\"Gimarmenian\",\"Gjecyrillic\",\"Gmacron\",\"Gmonospace\",\"Grave\",\"Gravesmall\",\"Gsmall\",\"Gsmallhook\",\"Gstroke\",\"H\",\"H18533\",\"H18543\",\"H18551\",\"H22073\",\"HPsquare\",\"Haabkhasiancyrillic\",\"Hadescendercyrillic\",\"Hardsigncyrillic\",\"Hbar\",\"Hbrevebelow\",\"Hcedilla\",\"Hcircle\",\"Hcircumflex\",\"Hdieresis\",\"Hdotaccent\",\"Hdotbelow\",\"Hmonospace\",\"Hoarmenian\",\"Horicoptic\",\"Hsmall\",\"Hungarumlaut\",\"Hungarumlautsmall\",\"Hzsquare\",\"IAcyrillic\",\"IJ\",\"IUcyrillic\",\"Iacute\",\"Iacutesmall\",\"Ibreve\",\"Icaron\",\"Icircle\",\"Icircumflex\",\"Icircumflexsmall\",\"Icyrillic\",\"Idblgrave\",\"Idieresis\",\"Idieresisacute\",\"Idieresiscyrillic\",\"Idieresissmall\",\"Idot\",\"Idotaccent\",\"Idotbelow\",\"Iebrevecyrillic\",\"Iecyrillic\",\"Ifraktur\",\"Igrave\",\"Igravesmall\",\"Ihookabove\",\"Iicyrillic\",\"Iinvertedbreve\",\"Iishortcyrillic\",\"Imacron\",\"Imacroncyrillic\",\"Imonospace\",\"Iniarmenian\",\"Iocyrillic\",\"Iogonek\",\"Iota\",\"Iotaafrican\",\"Iotadieresis\",\"Iotatonos\",\"Ismall\",\"Istroke\",\"Itilde\",\"Itildebelow\",\"Izhitsacyrillic\",\"Izhitsadblgravecyrillic\",\"J\",\"Jaarmenian\",\"Jcircle\",\"Jcircumflex\",\"Jecyrillic\",\"Jheharmenian\",\"Jmonospace\",\"Jsmall\",\"KBsquare\",\"KKsquare\",\"Kabashkircyrillic\",\"Kacute\",\"Kacyrillic\",\"Kadescendercyrillic\",\"Kahookcyrillic\",\"Kappa\",\"Kastrokecyrillic\",\"Kaverticalstrokecyrillic\",\"Kcaron\",\"Kcedilla\",\"Kcircle\",\"Kcommaaccent\",\"Kdotbelow\",\"Keharmenian\",\"Kenarmenian\",\"Khacyrillic\",\"Kheicoptic\",\"Khook\",\"Kjecyrillic\",\"Klinebelow\",\"Kmonospace\",\"Koppacyrillic\",\"Koppagreek\",\"Ksicyrillic\",\"Ksmall\",\"LJ\",\"LL\",\"Lacute\",\"Lambda\",\"Lcaron\",\"Lcedilla\",\"Lcircle\",\"Lcircumflexbelow\",\"Lcommaaccent\",\"Ldot\",\"Ldotaccent\",\"Ldotbelow\",\"Ldotbelowmacron\",\"Liwnarmenian\",\"Lj\",\"Ljecyrillic\",\"Llinebelow\",\"Lmonospace\",\"Lslash\",\"Lslashsmall\",\"Lsmall\",\"MBsquare\",\"Macron\",\"Macronsmall\",\"Macute\",\"Mcircle\",\"Mdotaccent\",\"Mdotbelow\",\"Menarmenian\",\"Mmonospace\",\"Msmall\",\"Mturned\",\"Mu\",\"NJ\",\"Nacute\",\"Ncaron\",\"Ncedilla\",\"Ncircle\",\"Ncircumflexbelow\",\"Ncommaaccent\",\"Ndotaccent\",\"Ndotbelow\",\"Nhookleft\",\"Nineroman\",\"Nj\",\"Njecyrillic\",\"Nlinebelow\",\"Nmonospace\",\"Nowarmenian\",\"Nsmall\",\"Ntilde\",\"Ntildesmall\",\"Nu\",\"OE\",\"OEsmall\",\"Oacute\",\"Oacutesmall\",\"Obarredcyrillic\",\"Obarreddieresiscyrillic\",\"Obreve\",\"Ocaron\",\"Ocenteredtilde\",\"Ocircle\",\"Ocircumflex\",\"Ocircumflexacute\",\"Ocircumflexdotbelow\",\"Ocircumflexgrave\",\"Ocircumflexhookabove\",\"Ocircumflexsmall\",\"Ocircumflextilde\",\"Ocyrillic\",\"Odblacute\",\"Odblgrave\",\"Odieresis\",\"Odieresiscyrillic\",\"Odieresissmall\",\"Odotbelow\",\"Ogoneksmall\",\"Ograve\",\"Ogravesmall\",\"Oharmenian\",\"Ohm\",\"Ohookabove\",\"Ohorn\",\"Ohornacute\",\"Ohorndotbelow\",\"Ohorngrave\",\"Ohornhookabove\",\"Ohorntilde\",\"Ohungarumlaut\",\"Oi\",\"Oinvertedbreve\",\"Omacron\",\"Omacronacute\",\"Omacrongrave\",\"Omega\",\"Omegacyrillic\",\"Omegagreek\",\"Omegaroundcyrillic\",\"Omegatitlocyrillic\",\"Omegatonos\",\"Omicron\",\"Omicrontonos\",\"Omonospace\",\"Oneroman\",\"Oogonek\",\"Oogonekmacron\",\"Oopen\",\"Oslash\",\"Oslashacute\",\"Oslashsmall\",\"Osmall\",\"Ostrokeacute\",\"Otcyrillic\",\"Otilde\",\"Otildeacute\",\"Otildedieresis\",\"Otildesmall\",\"P\",\"Pacute\",\"Pcircle\",\"Pdotaccent\",\"Pecyrillic\",\"Peharmenian\",\"Pemiddlehookcyrillic\",\"Phi\",\"Phook\",\"Pi\",\"Piwrarmenian\",\"Pmonospace\",\"Psi\",\"Psicyrillic\",\"Psmall\",\"Q\",\"Qcircle\",\"Qmonospace\",\"Qsmall\",\"R\",\"Raarmenian\",\"Racute\",\"Rcaron\",\"Rcedilla\",\"Rcircle\",\"Rcommaaccent\",\"Rdblgrave\",\"Rdotaccent\",\"Rdotbelow\",\"Rdotbelowmacron\",\"Reharmenian\",\"Rfraktur\",\"Rho\",\"Ringsmall\",\"Rinvertedbreve\",\"Rlinebelow\",\"Rmonospace\",\"Rsmall\",\"Rsmallinverted\",\"Rsmallinvertedsuperior\",\"S\",\"SF010000\",\"SF020000\",\"SF030000\",\"SF040000\",\"SF050000\",\"SF060000\",\"SF070000\",\"SF080000\",\"SF090000\",\"SF100000\",\"SF110000\",\"SF190000\",\"SF200000\",\"SF210000\",\"SF220000\",\"SF230000\",\"SF240000\",\"SF250000\",\"SF260000\",\"SF270000\",\"SF280000\",\"SF360000\",\"SF370000\",\"SF380000\",\"SF390000\",\"SF400000\",\"SF410000\",\"SF420000\",\"SF430000\",\"SF440000\",\"SF450000\",\"SF460000\",\"SF470000\",\"SF480000\",\"SF490000\",\"SF500000\",\"SF510000\",\"SF520000\",\"SF530000\",\"SF540000\",\"Sacute\",\"Sacutedotaccent\",\"Sampigreek\",\"Scaron\",\"Scarondotaccent\",\"Scaronsmall\",\"Scedilla\",\"Schwa\",\"Schwacyrillic\",\"Schwadieresiscyrillic\",\"Scircle\",\"Scircumflex\",\"Scommaaccent\",\"Sdotaccent\",\"Sdotbelow\",\"Sdotbelowdotaccent\",\"Seharmenian\",\"Sevenroman\",\"Shaarmenian\",\"Shacyrillic\",\"Shchacyrillic\",\"Sheicoptic\",\"Shhacyrillic\",\"Shimacoptic\",\"Sigma\",\"Sixroman\",\"Smonospace\",\"Softsigncyrillic\",\"Ssmall\",\"Stigmagreek\",\"T\",\"Tau\",\"Tbar\",\"Tcaron\",\"Tcedilla\",\"Tcircle\",\"Tcircumflexbelow\",\"Tcommaaccent\",\"Tdotaccent\",\"Tdotbelow\",\"Tecyrillic\",\"Tedescendercyrillic\",\"Tenroman\",\"Tetsecyrillic\",\"Theta\",\"Thook\",\"Thorn\",\"Thornsmall\",\"Threeroman\",\"Tildesmall\",\"Tiwnarmenian\",\"Tlinebelow\",\"Tmonospace\",\"Toarmenian\",\"Tonefive\",\"Tonesix\",\"Tonetwo\",\"Tretroflexhook\",\"Tsecyrillic\",\"Tshecyrillic\",\"Tsmall\",\"Twelveroman\",\"Tworoman\",\"Uacute\",\"Uacutesmall\",\"Ubreve\",\"Ucaron\",\"Ucircle\",\"Ucircumflex\",\"Ucircumflexbelow\",\"Ucircumflexsmall\",\"Ucyrillic\",\"Udblacute\",\"Udblgrave\",\"Udieresis\",\"Udieresisacute\",\"Udieresisbelow\",\"Udieresiscaron\",\"Udieresiscyrillic\",\"Udieresisgrave\",\"Udieresismacron\",\"Udieresissmall\",\"Udotbelow\",\"Ugrave\",\"Ugravesmall\",\"Uhookabove\",\"Uhorn\",\"Uhornacute\",\"Uhorndotbelow\",\"Uhorngrave\",\"Uhornhookabove\",\"Uhorntilde\",\"Uhungarumlaut\",\"Uhungarumlautcyrillic\",\"Uinvertedbreve\",\"Ukcyrillic\",\"Umacron\",\"Umacroncyrillic\",\"Umacrondieresis\",\"Umonospace\",\"Uogonek\",\"Upsilon\",\"Upsilon1\",\"Upsilonacutehooksymbolgreek\",\"Upsilonafrican\",\"Upsilondieresis\",\"Upsilondieresishooksymbolgreek\",\"Upsilonhooksymbol\",\"Upsilontonos\",\"Uring\",\"Ushortcyrillic\",\"Usmall\",\"Ustraightcyrillic\",\"Ustraightstrokecyrillic\",\"Utilde\",\"Utildeacute\",\"Utildebelow\",\"Vcircle\",\"Vdotbelow\",\"Vecyrillic\",\"Vewarmenian\",\"Vhook\",\"Vmonospace\",\"Voarmenian\",\"Vsmall\",\"Vtilde\",\"W\",\"Wacute\",\"Wcircle\",\"Wcircumflex\",\"Wdieresis\",\"Wdotaccent\",\"Wdotbelow\",\"Wgrave\",\"Wmonospace\",\"Wsmall\",\"Xcircle\",\"Xdieresis\",\"Xdotaccent\",\"Xeharmenian\",\"Xi\",\"Xmonospace\",\"Xsmall\",\"Yacute\",\"Yacutesmall\",\"Yatcyrillic\",\"Ycircle\",\"Ycircumflex\",\"Ydieresis\",\"Ydieresissmall\",\"Ydotaccent\",\"Ydotbelow\",\"Yericyrillic\",\"Yerudieresiscyrillic\",\"Ygrave\",\"Yhook\",\"Yhookabove\",\"Yiarmenian\",\"Yicyrillic\",\"Yiwnarmenian\",\"Ymonospace\",\"Ysmall\",\"Ytilde\",\"Yusbigcyrillic\",\"Yusbigiotifiedcyrillic\",\"Yuslittlecyrillic\",\"Yuslittleiotifiedcyrillic\",\"Zaarmenian\",\"Zacute\",\"Zcaron\",\"Zcaronsmall\",\"Zcircle\",\"Zcircumflex\",\"Zdot\",\"Zdotaccent\",\"Zdotbelow\",\"Zecyrillic\",\"Zedescendercyrillic\",\"Zedieresiscyrillic\",\"Zeta\",\"Zhearmenian\",\"Zhebrevecyrillic\",\"Zhecyrillic\",\"Zhedescendercyrillic\",\"Zhedieresiscyrillic\",\"Zlinebelow\",\"Zmonospace\",\"Zsmall\",\"Zstroke\",\"aabengali\",\"aacute\",\"aadeva\",\"aagujarati\",\"aagurmukhi\",\"aamatragurmukhi\",\"aarusquare\",\"aavowelsignbengali\",\"aavowelsigndeva\",\"aavowelsigngujarati\",\"abbreviationmarkarmenian\",\"abbreviationsigndeva\",\"abengali\",\"abopomofo\",\"abreve\",\"abreveacute\",\"abrevecyrillic\",\"abrevedotbelow\",\"abrevegrave\",\"abrevehookabove\",\"abrevetilde\",\"acaron\",\"acircle\",\"acircumflex\",\"acircumflexacute\",\"acircumflexdotbelow\",\"acircumflexgrave\",\"acircumflexhookabove\",\"acircumflextilde\",\"acute\",\"acutebelowcmb\",\"acutecmb\",\"acutecomb\",\"acutedeva\",\"acutelowmod\",\"acutetonecmb\",\"acyrillic\",\"adblgrave\",\"addakgurmukhi\",\"adeva\",\"adieresis\",\"adieresiscyrillic\",\"adieresismacron\",\"adotbelow\",\"adotmacron\",\"ae\",\"aeacute\",\"aekorean\",\"aemacron\",\"afii00208\",\"afii08941\",\"afii10017\",\"afii10018\",\"afii10019\",\"afii10020\",\"afii10021\",\"afii10022\",\"afii10023\",\"afii10024\",\"afii10025\",\"afii10026\",\"afii10027\",\"afii10028\",\"afii10029\",\"afii10030\",\"afii10031\",\"afii10032\",\"afii10033\",\"afii10034\",\"afii10035\",\"afii10036\",\"afii10037\",\"afii10038\",\"afii10039\",\"afii10040\",\"afii10041\",\"afii10042\",\"afii10043\",\"afii10044\",\"afii10045\",\"afii10046\",\"afii10047\",\"afii10048\",\"afii10049\",\"afii10050\",\"afii10051\",\"afii10052\",\"afii10053\",\"afii10054\",\"afii10055\",\"afii10056\",\"afii10057\",\"afii10058\",\"afii10059\",\"afii10060\",\"afii10061\",\"afii10062\",\"afii10063\",\"afii10064\",\"afii10065\",\"afii10066\",\"afii10067\",\"afii10068\",\"afii10069\",\"afii10070\",\"afii10071\",\"afii10072\",\"afii10073\",\"afii10074\",\"afii10075\",\"afii10076\",\"afii10077\",\"afii10078\",\"afii10079\",\"afii10080\",\"afii10081\",\"afii10082\",\"afii10083\",\"afii10084\",\"afii10085\",\"afii10086\",\"afii10087\",\"afii10088\",\"afii10089\",\"afii10090\",\"afii10091\",\"afii10092\",\"afii10093\",\"afii10094\",\"afii10095\",\"afii10096\",\"afii10097\",\"afii10098\",\"afii10099\",\"afii10100\",\"afii10101\",\"afii10102\",\"afii10103\",\"afii10104\",\"afii10105\",\"afii10106\",\"afii10107\",\"afii10108\",\"afii10109\",\"afii10110\",\"afii10145\",\"afii10146\",\"afii10147\",\"afii10148\",\"afii10192\",\"afii10193\",\"afii10194\",\"afii10195\",\"afii10196\",\"afii10831\",\"afii10832\",\"afii10846\",\"afii299\",\"afii300\",\"afii301\",\"afii57381\",\"afii57388\",\"afii57392\",\"afii57393\",\"afii57394\",\"afii57395\",\"afii57396\",\"afii57397\",\"afii57398\",\"afii57399\",\"afii57400\",\"afii57401\",\"afii57403\",\"afii57407\",\"afii57409\",\"afii57410\",\"afii57411\",\"afii57412\",\"afii57413\",\"afii57414\",\"afii57415\",\"afii57416\",\"afii57417\",\"afii57418\",\"afii57419\",\"afii57420\",\"afii57421\",\"afii57422\",\"afii57423\",\"afii57424\",\"afii57425\",\"afii57426\",\"afii57427\",\"afii57428\",\"afii57429\",\"afii57430\",\"afii57431\",\"afii57432\",\"afii57433\",\"afii57434\",\"afii57440\",\"afii57441\",\"afii57442\",\"afii57443\",\"afii57444\",\"afii57445\",\"afii57446\",\"afii57448\",\"afii57449\",\"afii57450\",\"afii57451\",\"afii57452\",\"afii57453\",\"afii57454\",\"afii57455\",\"afii57456\",\"afii57457\",\"afii57458\",\"afii57470\",\"afii57505\",\"afii57506\",\"afii57507\",\"afii57508\",\"afii57509\",\"afii57511\",\"afii57512\",\"afii57513\",\"afii57514\",\"afii57519\",\"afii57534\",\"afii57636\",\"afii57645\",\"afii57658\",\"afii57664\",\"afii57665\",\"afii57666\",\"afii57667\",\"afii57668\",\"afii57669\",\"afii57670\",\"afii57671\",\"afii57672\",\"afii57673\",\"afii57674\",\"afii57675\",\"afii57676\",\"afii57677\",\"afii57678\",\"afii57679\",\"afii57680\",\"afii57681\",\"afii57682\",\"afii57683\",\"afii57684\",\"afii57685\",\"afii57686\",\"afii57687\",\"afii57688\",\"afii57689\",\"afii57690\",\"afii57694\",\"afii57695\",\"afii57700\",\"afii57705\",\"afii57716\",\"afii57717\",\"afii57718\",\"afii57723\",\"afii57793\",\"afii57794\",\"afii57795\",\"afii57796\",\"afii57797\",\"afii57798\",\"afii57799\",\"afii57800\",\"afii57801\",\"afii57802\",\"afii57803\",\"afii57804\",\"afii57806\",\"afii57807\",\"afii57839\",\"afii57841\",\"afii57842\",\"afii57929\",\"afii61248\",\"afii61289\",\"afii61352\",\"afii61573\",\"afii61574\",\"afii61575\",\"afii61664\",\"afii63167\",\"afii64937\",\"agrave\",\"agujarati\",\"agurmukhi\",\"ahiragana\",\"ahookabove\",\"aibengali\",\"aibopomofo\",\"aideva\",\"aiecyrillic\",\"aigujarati\",\"aigurmukhi\",\"aimatragurmukhi\",\"ainarabic\",\"ainfinalarabic\",\"aininitialarabic\",\"ainmedialarabic\",\"ainvertedbreve\",\"aivowelsignbengali\",\"aivowelsigndeva\",\"aivowelsigngujarati\",\"akatakana\",\"akatakanahalfwidth\",\"akorean\",\"alef\",\"alefarabic\",\"alefdageshhebrew\",\"aleffinalarabic\",\"alefhamzaabovearabic\",\"alefhamzaabovefinalarabic\",\"alefhamzabelowarabic\",\"alefhamzabelowfinalarabic\",\"alefhebrew\",\"aleflamedhebrew\",\"alefmaddaabovearabic\",\"alefmaddaabovefinalarabic\",\"alefmaksuraarabic\",\"alefmaksurafinalarabic\",\"alefmaksurainitialarabic\",\"alefmaksuramedialarabic\",\"alefpatahhebrew\",\"alefqamatshebrew\",\"aleph\",\"allequal\",\"alpha\",\"alphatonos\",\"amacron\",\"amonospace\",\"ampersand\",\"ampersandmonospace\",\"ampersandsmall\",\"amsquare\",\"anbopomofo\",\"angbopomofo\",\"angbracketleft\",\"angbracketright\",\"angkhankhuthai\",\"anglebracketleft\",\"anglebracketleftvertical\",\"anglebracketright\",\"anglebracketrightvertical\",\"angleleft\",\"angleright\",\"angstrom\",\"anoteleia\",\"anudattadeva\",\"anusvarabengali\",\"anusvaradeva\",\"anusvaragujarati\",\"aogonek\",\"apaatosquare\",\"aparen\",\"apostrophearmenian\",\"apostrophemod\",\"apple\",\"approaches\",\"approxequal\",\"approxequalorimage\",\"approximatelyequal\",\"araeaekorean\",\"araeakorean\",\"arc\",\"arighthalfring\",\"aring\",\"aringacute\",\"aringbelow\",\"arrowboth\",\"arrowdashdown\",\"arrowdashleft\",\"arrowdashright\",\"arrowdashup\",\"arrowdblboth\",\"arrowdbldown\",\"arrowdblleft\",\"arrowdblright\",\"arrowdblup\",\"arrowdown\",\"arrowdownleft\",\"arrowdownright\",\"arrowdownwhite\",\"arrowheaddownmod\",\"arrowheadleftmod\",\"arrowheadrightmod\",\"arrowheadupmod\",\"arrowhorizex\",\"arrowleft\",\"arrowleftdbl\",\"arrowleftdblstroke\",\"arrowleftoverright\",\"arrowleftwhite\",\"arrowright\",\"arrowrightdblstroke\",\"arrowrightheavy\",\"arrowrightoverleft\",\"arrowrightwhite\",\"arrowtableft\",\"arrowtabright\",\"arrowup\",\"arrowupdn\",\"arrowupdnbse\",\"arrowupdownbase\",\"arrowupleft\",\"arrowupleftofdown\",\"arrowupright\",\"arrowupwhite\",\"arrowvertex\",\"asciicircum\",\"asciicircummonospace\",\"asciitilde\",\"asciitildemonospace\",\"ascript\",\"ascriptturned\",\"asmallhiragana\",\"asmallkatakana\",\"asmallkatakanahalfwidth\",\"asterisk\",\"asteriskaltonearabic\",\"asteriskarabic\",\"asteriskmath\",\"asteriskmonospace\",\"asterisksmall\",\"asterism\",\"asuperior\",\"asymptoticallyequal\",\"atilde\",\"atmonospace\",\"atsmall\",\"aturned\",\"aubengali\",\"aubopomofo\",\"audeva\",\"augujarati\",\"augurmukhi\",\"aulengthmarkbengali\",\"aumatragurmukhi\",\"auvowelsignbengali\",\"auvowelsigndeva\",\"auvowelsigngujarati\",\"avagrahadeva\",\"aybarmenian\",\"ayin\",\"ayinaltonehebrew\",\"ayinhebrew\",\"babengali\",\"backslash\",\"backslashmonospace\",\"badeva\",\"bagujarati\",\"bagurmukhi\",\"bahiragana\",\"bahtthai\",\"bakatakana\",\"bar\",\"barmonospace\",\"bbopomofo\",\"bcircle\",\"bdotaccent\",\"bdotbelow\",\"beamedsixteenthnotes\",\"because\",\"becyrillic\",\"beharabic\",\"behfinalarabic\",\"behinitialarabic\",\"behiragana\",\"behmedialarabic\",\"behmeeminitialarabic\",\"behmeemisolatedarabic\",\"behnoonfinalarabic\",\"bekatakana\",\"benarmenian\",\"bet\",\"beta\",\"betasymbolgreek\",\"betdagesh\",\"betdageshhebrew\",\"bethebrew\",\"betrafehebrew\",\"bhabengali\",\"bhadeva\",\"bhagujarati\",\"bhagurmukhi\",\"bhook\",\"bihiragana\",\"bikatakana\",\"bilabialclick\",\"bindigurmukhi\",\"birusquare\",\"blackcircle\",\"blackdiamond\",\"blackdownpointingtriangle\",\"blackleftpointingpointer\",\"blackleftpointingtriangle\",\"blacklenticularbracketleft\",\"blacklenticularbracketleftvertical\",\"blacklenticularbracketright\",\"blacklenticularbracketrightvertical\",\"blacklowerlefttriangle\",\"blacklowerrighttriangle\",\"blackrectangle\",\"blackrightpointingpointer\",\"blackrightpointingtriangle\",\"blacksmallsquare\",\"blacksmilingface\",\"blacksquare\",\"blackstar\",\"blackupperlefttriangle\",\"blackupperrighttriangle\",\"blackuppointingsmalltriangle\",\"blackuppointingtriangle\",\"blank\",\"blinebelow\",\"bmonospace\",\"bobaimaithai\",\"bohiragana\",\"bokatakana\",\"bparen\",\"bqsquare\",\"braceex\",\"braceleft\",\"braceleftbt\",\"braceleftmid\",\"braceleftmonospace\",\"braceleftsmall\",\"bracelefttp\",\"braceleftvertical\",\"braceright\",\"bracerightbt\",\"bracerightmid\",\"bracerightmonospace\",\"bracerightsmall\",\"bracerighttp\",\"bracerightvertical\",\"bracketleft\",\"bracketleftbt\",\"bracketleftex\",\"bracketleftmonospace\",\"bracketlefttp\",\"bracketright\",\"bracketrightbt\",\"bracketrightex\",\"bracketrightmonospace\",\"bracketrighttp\",\"breve\",\"brevebelowcmb\",\"brevecmb\",\"breveinvertedbelowcmb\",\"breveinvertedcmb\",\"breveinverteddoublecmb\",\"bridgebelowcmb\",\"bridgeinvertedbelowcmb\",\"brokenbar\",\"bstroke\",\"bsuperior\",\"btopbar\",\"buhiragana\",\"bukatakana\",\"bullet\",\"bulletinverse\",\"bulletoperator\",\"bullseye\",\"caarmenian\",\"cabengali\",\"cacute\",\"cadeva\",\"cagujarati\",\"cagurmukhi\",\"calsquare\",\"candrabindubengali\",\"candrabinducmb\",\"candrabindudeva\",\"candrabindugujarati\",\"capslock\",\"careof\",\"caron\",\"caronbelowcmb\",\"caroncmb\",\"carriagereturn\",\"cbopomofo\",\"ccaron\",\"ccedilla\",\"ccedillaacute\",\"ccircle\",\"ccircumflex\",\"ccurl\",\"cdot\",\"cdotaccent\",\"cdsquare\",\"cedilla\",\"cedillacmb\",\"cent\",\"centigrade\",\"centinferior\",\"centmonospace\",\"centoldstyle\",\"centsuperior\",\"chaarmenian\",\"chabengali\",\"chadeva\",\"chagujarati\",\"chagurmukhi\",\"chbopomofo\",\"cheabkhasiancyrillic\",\"checkmark\",\"checyrillic\",\"chedescenderabkhasiancyrillic\",\"chedescendercyrillic\",\"chedieresiscyrillic\",\"cheharmenian\",\"chekhakassiancyrillic\",\"cheverticalstrokecyrillic\",\"chi\",\"chieuchacirclekorean\",\"chieuchaparenkorean\",\"chieuchcirclekorean\",\"chieuchkorean\",\"chieuchparenkorean\",\"chochangthai\",\"chochanthai\",\"chochingthai\",\"chochoethai\",\"chook\",\"cieucacirclekorean\",\"cieucaparenkorean\",\"cieuccirclekorean\",\"cieuckorean\",\"cieucparenkorean\",\"cieucuparenkorean\",\"circle\",\"circlecopyrt\",\"circlemultiply\",\"circleot\",\"circleplus\",\"circlepostalmark\",\"circlewithlefthalfblack\",\"circlewithrighthalfblack\",\"circumflex\",\"circumflexbelowcmb\",\"circumflexcmb\",\"clickalveolar\",\"clickdental\",\"clicklateral\",\"clickretroflex\",\"club\",\"clubsuitblack\",\"clubsuitwhite\",\"cmcubedsquare\",\"cmonospace\",\"cmsquaredsquare\",\"coarmenian\",\"colon\",\"colonmonetary\",\"colonmonospace\",\"colonsign\",\"colonsmall\",\"colontriangularhalfmod\",\"colontriangularmod\",\"comma\",\"commaabovecmb\",\"commaaboverightcmb\",\"commaaccent\",\"commaarabic\",\"commaarmenian\",\"commainferior\",\"commamonospace\",\"commareversedabovecmb\",\"commareversedmod\",\"commasmall\",\"commasuperior\",\"commaturnedabovecmb\",\"commaturnedmod\",\"compass\",\"congruent\",\"contourintegral\",\"control\",\"controlACK\",\"controlBEL\",\"controlBS\",\"controlCAN\",\"controlCR\",\"controlDC1\",\"controlDC2\",\"controlDC3\",\"controlDC4\",\"controlDEL\",\"controlDLE\",\"controlEM\",\"controlENQ\",\"controlEOT\",\"controlESC\",\"controlETB\",\"controlETX\",\"controlFF\",\"controlFS\",\"controlGS\",\"controlHT\",\"controlLF\",\"controlNAK\",\"controlNULL\",\"controlRS\",\"controlSI\",\"controlSO\",\"controlSOT\",\"controlSTX\",\"controlSUB\",\"controlSYN\",\"controlUS\",\"controlVT\",\"copyright\",\"copyrightsans\",\"copyrightserif\",\"cornerbracketleft\",\"cornerbracketlefthalfwidth\",\"cornerbracketleftvertical\",\"cornerbracketright\",\"cornerbracketrighthalfwidth\",\"cornerbracketrightvertical\",\"corporationsquare\",\"cosquare\",\"coverkgsquare\",\"cparen\",\"cruzeiro\",\"cstretched\",\"curlyand\",\"curlyor\",\"currency\",\"cyrBreve\",\"cyrFlex\",\"cyrbreve\",\"cyrflex\",\"daarmenian\",\"dabengali\",\"dadarabic\",\"dadeva\",\"dadfinalarabic\",\"dadinitialarabic\",\"dadmedialarabic\",\"dagesh\",\"dageshhebrew\",\"dagger\",\"daggerdbl\",\"dagujarati\",\"dagurmukhi\",\"dahiragana\",\"dakatakana\",\"dalarabic\",\"dalet\",\"daletdagesh\",\"daletdageshhebrew\",\"dalethebrew\",\"dalfinalarabic\",\"dammaarabic\",\"dammalowarabic\",\"dammatanaltonearabic\",\"dammatanarabic\",\"danda\",\"dargahebrew\",\"dargalefthebrew\",\"dasiapneumatacyrilliccmb\",\"dblGrave\",\"dblanglebracketleft\",\"dblanglebracketleftvertical\",\"dblanglebracketright\",\"dblanglebracketrightvertical\",\"dblarchinvertedbelowcmb\",\"dblarrowleft\",\"dblarrowright\",\"dbldanda\",\"dblgrave\",\"dblgravecmb\",\"dblintegral\",\"dbllowline\",\"dbllowlinecmb\",\"dbloverlinecmb\",\"dblprimemod\",\"dblverticalbar\",\"dblverticallineabovecmb\",\"dbopomofo\",\"dbsquare\",\"dcaron\",\"dcedilla\",\"dcircle\",\"dcircumflexbelow\",\"dcroat\",\"ddabengali\",\"ddadeva\",\"ddagujarati\",\"ddagurmukhi\",\"ddalarabic\",\"ddalfinalarabic\",\"dddhadeva\",\"ddhabengali\",\"ddhadeva\",\"ddhagujarati\",\"ddhagurmukhi\",\"ddotaccent\",\"ddotbelow\",\"decimalseparatorarabic\",\"decimalseparatorpersian\",\"decyrillic\",\"degree\",\"dehihebrew\",\"dehiragana\",\"deicoptic\",\"dekatakana\",\"deleteleft\",\"deleteright\",\"deltaturned\",\"denominatorminusonenumeratorbengali\",\"dezh\",\"dhabengali\",\"dhadeva\",\"dhagujarati\",\"dhagurmukhi\",\"dhook\",\"dialytikatonos\",\"dialytikatonoscmb\",\"diamond\",\"diamondsuitwhite\",\"dieresis\",\"dieresisacute\",\"dieresisbelowcmb\",\"dieresiscmb\",\"dieresisgrave\",\"dieresistonos\",\"dihiragana\",\"dikatakana\",\"dittomark\",\"divide\",\"divides\",\"divisionslash\",\"djecyrillic\",\"dkshade\",\"dlinebelow\",\"dlsquare\",\"dmacron\",\"dmonospace\",\"dnblock\",\"dochadathai\",\"dodekthai\",\"dohiragana\",\"dokatakana\",\"dollar\",\"dollarinferior\",\"dollarmonospace\",\"dollaroldstyle\",\"dollarsmall\",\"dollarsuperior\",\"dong\",\"dorusquare\",\"dotaccent\",\"dotaccentcmb\",\"dotbelowcmb\",\"dotbelowcomb\",\"dotkatakana\",\"dotlessi\",\"dotlessj\",\"dotlessjstrokehook\",\"dotmath\",\"dottedcircle\",\"doubleyodpatah\",\"doubleyodpatahhebrew\",\"downtackbelowcmb\",\"downtackmod\",\"dparen\",\"dsuperior\",\"dtail\",\"dtopbar\",\"duhiragana\",\"dukatakana\",\"dz\",\"dzaltone\",\"dzcaron\",\"dzcurl\",\"dzeabkhasiancyrillic\",\"dzecyrillic\",\"dzhecyrillic\",\"eacute\",\"earth\",\"ebengali\",\"ebopomofo\",\"ebreve\",\"ecandradeva\",\"ecandragujarati\",\"ecandravowelsigndeva\",\"ecandravowelsigngujarati\",\"ecaron\",\"ecedillabreve\",\"echarmenian\",\"echyiwnarmenian\",\"ecircle\",\"ecircumflex\",\"ecircumflexacute\",\"ecircumflexbelow\",\"ecircumflexdotbelow\",\"ecircumflexgrave\",\"ecircumflexhookabove\",\"ecircumflextilde\",\"ecyrillic\",\"edblgrave\",\"edeva\",\"edieresis\",\"edot\",\"edotaccent\",\"edotbelow\",\"eegurmukhi\",\"eematragurmukhi\",\"efcyrillic\",\"egrave\",\"egujarati\",\"eharmenian\",\"ehbopomofo\",\"ehiragana\",\"ehookabove\",\"eibopomofo\",\"eight\",\"eightarabic\",\"eightbengali\",\"eightcircle\",\"eightcircleinversesansserif\",\"eightdeva\",\"eighteencircle\",\"eighteenparen\",\"eighteenperiod\",\"eightgujarati\",\"eightgurmukhi\",\"eighthackarabic\",\"eighthangzhou\",\"eighthnotebeamed\",\"eightideographicparen\",\"eightinferior\",\"eightmonospace\",\"eightoldstyle\",\"eightparen\",\"eightperiod\",\"eightpersian\",\"eightroman\",\"eightsuperior\",\"eightthai\",\"einvertedbreve\",\"eiotifiedcyrillic\",\"ekatakana\",\"ekatakanahalfwidth\",\"ekonkargurmukhi\",\"ekorean\",\"elcyrillic\",\"elevencircle\",\"elevenparen\",\"elevenperiod\",\"elevenroman\",\"ellipsis\",\"ellipsisvertical\",\"emacron\",\"emacronacute\",\"emacrongrave\",\"emcyrillic\",\"emdash\",\"emdashvertical\",\"emonospace\",\"emphasismarkarmenian\",\"emptyset\",\"enbopomofo\",\"encyrillic\",\"endash\",\"endashvertical\",\"endescendercyrillic\",\"eng\",\"engbopomofo\",\"enghecyrillic\",\"enhookcyrillic\",\"enspace\",\"eogonek\",\"eokorean\",\"eopen\",\"eopenclosed\",\"eopenreversed\",\"eopenreversedclosed\",\"eopenreversedhook\",\"eparen\",\"epsilontonos\",\"equal\",\"equalmonospace\",\"equalsmall\",\"equalsuperior\",\"equivalence\",\"erbopomofo\",\"ercyrillic\",\"ereversed\",\"ereversedcyrillic\",\"escyrillic\",\"esdescendercyrillic\",\"esh\",\"eshcurl\",\"eshortdeva\",\"eshortvowelsigndeva\",\"eshreversedloop\",\"eshsquatreversed\",\"esmallhiragana\",\"esmallkatakana\",\"esmallkatakanahalfwidth\",\"estimated\",\"esuperior\",\"eta\",\"etarmenian\",\"etatonos\",\"eth\",\"etilde\",\"etildebelow\",\"etnahtafoukhhebrew\",\"etnahtafoukhlefthebrew\",\"etnahtahebrew\",\"etnahtalefthebrew\",\"eturned\",\"eukorean\",\"euro\",\"evowelsignbengali\",\"evowelsigndeva\",\"evowelsigngujarati\",\"exclam\",\"exclamarmenian\",\"exclamdbl\",\"exclamdown\",\"exclamdownsmall\",\"exclammonospace\",\"exclamsmall\",\"existential\",\"ezh\",\"ezhcaron\",\"ezhcurl\",\"ezhreversed\",\"ezhtail\",\"fadeva\",\"fagurmukhi\",\"fahrenheit\",\"fathaarabic\",\"fathalowarabic\",\"fathatanarabic\",\"fbopomofo\",\"fcircle\",\"fdotaccent\",\"feharabic\",\"feharmenian\",\"fehfinalarabic\",\"fehinitialarabic\",\"fehmedialarabic\",\"feicoptic\",\"female\",\"ff\",\"f_f\",\"ffi\",\"f_f_i\",\"ffl\",\"f_f_l\",\"fi\",\"f_i\",\"fifteencircle\",\"fifteenparen\",\"fifteenperiod\",\"figuredash\",\"filledbox\",\"filledrect\",\"finalkaf\",\"finalkafdagesh\",\"finalkafdageshhebrew\",\"finalkafhebrew\",\"finalmem\",\"finalmemhebrew\",\"finalnun\",\"finalnunhebrew\",\"finalpe\",\"finalpehebrew\",\"finaltsadi\",\"finaltsadihebrew\",\"firsttonechinese\",\"fisheye\",\"fitacyrillic\",\"five\",\"fivearabic\",\"fivebengali\",\"fivecircle\",\"fivecircleinversesansserif\",\"fivedeva\",\"fiveeighths\",\"fivegujarati\",\"fivegurmukhi\",\"fivehackarabic\",\"fivehangzhou\",\"fiveideographicparen\",\"fiveinferior\",\"fivemonospace\",\"fiveoldstyle\",\"fiveparen\",\"fiveperiod\",\"fivepersian\",\"fiveroman\",\"fivesuperior\",\"fivethai\",\"fl\",\"f_l\",\"florin\",\"fmonospace\",\"fmsquare\",\"fofanthai\",\"fofathai\",\"fongmanthai\",\"forall\",\"four\",\"fourarabic\",\"fourbengali\",\"fourcircle\",\"fourcircleinversesansserif\",\"fourdeva\",\"fourgujarati\",\"fourgurmukhi\",\"fourhackarabic\",\"fourhangzhou\",\"fourideographicparen\",\"fourinferior\",\"fourmonospace\",\"fournumeratorbengali\",\"fouroldstyle\",\"fourparen\",\"fourperiod\",\"fourpersian\",\"fourroman\",\"foursuperior\",\"fourteencircle\",\"fourteenparen\",\"fourteenperiod\",\"fourthai\",\"fourthtonechinese\",\"fparen\",\"fraction\",\"franc\",\"gabengali\",\"gacute\",\"gadeva\",\"gafarabic\",\"gaffinalarabic\",\"gafinitialarabic\",\"gafmedialarabic\",\"gagujarati\",\"gagurmukhi\",\"gahiragana\",\"gakatakana\",\"gammalatinsmall\",\"gammasuperior\",\"gangiacoptic\",\"gbopomofo\",\"gbreve\",\"gcaron\",\"gcedilla\",\"gcircle\",\"gcircumflex\",\"gcommaaccent\",\"gdot\",\"gdotaccent\",\"gecyrillic\",\"gehiragana\",\"gekatakana\",\"geometricallyequal\",\"gereshaccenthebrew\",\"gereshhebrew\",\"gereshmuqdamhebrew\",\"germandbls\",\"gershayimaccenthebrew\",\"gershayimhebrew\",\"getamark\",\"ghabengali\",\"ghadarmenian\",\"ghadeva\",\"ghagujarati\",\"ghagurmukhi\",\"ghainarabic\",\"ghainfinalarabic\",\"ghaininitialarabic\",\"ghainmedialarabic\",\"ghemiddlehookcyrillic\",\"ghestrokecyrillic\",\"gheupturncyrillic\",\"ghhadeva\",\"ghhagurmukhi\",\"ghook\",\"ghzsquare\",\"gihiragana\",\"gikatakana\",\"gimarmenian\",\"gimel\",\"gimeldagesh\",\"gimeldageshhebrew\",\"gimelhebrew\",\"gjecyrillic\",\"glottalinvertedstroke\",\"glottalstop\",\"glottalstopinverted\",\"glottalstopmod\",\"glottalstopreversed\",\"glottalstopreversedmod\",\"glottalstopreversedsuperior\",\"glottalstopstroke\",\"glottalstopstrokereversed\",\"gmacron\",\"gmonospace\",\"gohiragana\",\"gokatakana\",\"gparen\",\"gpasquare\",\"gradient\",\"grave\",\"gravebelowcmb\",\"gravecmb\",\"gravecomb\",\"gravedeva\",\"gravelowmod\",\"gravemonospace\",\"gravetonecmb\",\"greater\",\"greaterequal\",\"greaterequalorless\",\"greatermonospace\",\"greaterorequivalent\",\"greaterorless\",\"greateroverequal\",\"greatersmall\",\"gscript\",\"gstroke\",\"guhiragana\",\"guillemotleft\",\"guillemotright\",\"guilsinglleft\",\"guilsinglright\",\"gukatakana\",\"guramusquare\",\"gysquare\",\"haabkhasiancyrillic\",\"haaltonearabic\",\"habengali\",\"hadescendercyrillic\",\"hadeva\",\"hagujarati\",\"hagurmukhi\",\"haharabic\",\"hahfinalarabic\",\"hahinitialarabic\",\"hahiragana\",\"hahmedialarabic\",\"haitusquare\",\"hakatakana\",\"hakatakanahalfwidth\",\"halantgurmukhi\",\"hamzaarabic\",\"hamzalowarabic\",\"hangulfiller\",\"hardsigncyrillic\",\"harpoonleftbarbup\",\"harpoonrightbarbup\",\"hasquare\",\"hatafpatah\",\"hatafpatah16\",\"hatafpatah23\",\"hatafpatah2f\",\"hatafpatahhebrew\",\"hatafpatahnarrowhebrew\",\"hatafpatahquarterhebrew\",\"hatafpatahwidehebrew\",\"hatafqamats\",\"hatafqamats1b\",\"hatafqamats28\",\"hatafqamats34\",\"hatafqamatshebrew\",\"hatafqamatsnarrowhebrew\",\"hatafqamatsquarterhebrew\",\"hatafqamatswidehebrew\",\"hatafsegol\",\"hatafsegol17\",\"hatafsegol24\",\"hatafsegol30\",\"hatafsegolhebrew\",\"hatafsegolnarrowhebrew\",\"hatafsegolquarterhebrew\",\"hatafsegolwidehebrew\",\"hbar\",\"hbopomofo\",\"hbrevebelow\",\"hcedilla\",\"hcircle\",\"hcircumflex\",\"hdieresis\",\"hdotaccent\",\"hdotbelow\",\"he\",\"heart\",\"heartsuitblack\",\"heartsuitwhite\",\"hedagesh\",\"hedageshhebrew\",\"hehaltonearabic\",\"heharabic\",\"hehebrew\",\"hehfinalaltonearabic\",\"hehfinalalttwoarabic\",\"hehfinalarabic\",\"hehhamzaabovefinalarabic\",\"hehhamzaaboveisolatedarabic\",\"hehinitialaltonearabic\",\"hehinitialarabic\",\"hehiragana\",\"hehmedialaltonearabic\",\"hehmedialarabic\",\"heiseierasquare\",\"hekatakana\",\"hekatakanahalfwidth\",\"hekutaarusquare\",\"henghook\",\"herutusquare\",\"het\",\"hethebrew\",\"hhook\",\"hhooksuperior\",\"hieuhacirclekorean\",\"hieuhaparenkorean\",\"hieuhcirclekorean\",\"hieuhkorean\",\"hieuhparenkorean\",\"hihiragana\",\"hikatakana\",\"hikatakanahalfwidth\",\"hiriq\",\"hiriq14\",\"hiriq21\",\"hiriq2d\",\"hiriqhebrew\",\"hiriqnarrowhebrew\",\"hiriqquarterhebrew\",\"hiriqwidehebrew\",\"hlinebelow\",\"hmonospace\",\"hoarmenian\",\"hohipthai\",\"hohiragana\",\"hokatakana\",\"hokatakanahalfwidth\",\"holam\",\"holam19\",\"holam26\",\"holam32\",\"holamhebrew\",\"holamnarrowhebrew\",\"holamquarterhebrew\",\"holamwidehebrew\",\"honokhukthai\",\"hookabovecomb\",\"hookcmb\",\"hookpalatalizedbelowcmb\",\"hookretroflexbelowcmb\",\"hoonsquare\",\"horicoptic\",\"horizontalbar\",\"horncmb\",\"hotsprings\",\"house\",\"hparen\",\"hsuperior\",\"hturned\",\"huhiragana\",\"huiitosquare\",\"hukatakana\",\"hukatakanahalfwidth\",\"hungarumlaut\",\"hungarumlautcmb\",\"hv\",\"hyphen\",\"hypheninferior\",\"hyphenmonospace\",\"hyphensmall\",\"hyphensuperior\",\"hyphentwo\",\"iacute\",\"iacyrillic\",\"ibengali\",\"ibopomofo\",\"ibreve\",\"icaron\",\"icircle\",\"icircumflex\",\"icyrillic\",\"idblgrave\",\"ideographearthcircle\",\"ideographfirecircle\",\"ideographicallianceparen\",\"ideographiccallparen\",\"ideographiccentrecircle\",\"ideographicclose\",\"ideographiccomma\",\"ideographiccommaleft\",\"ideographiccongratulationparen\",\"ideographiccorrectcircle\",\"ideographicearthparen\",\"ideographicenterpriseparen\",\"ideographicexcellentcircle\",\"ideographicfestivalparen\",\"ideographicfinancialcircle\",\"ideographicfinancialparen\",\"ideographicfireparen\",\"ideographichaveparen\",\"ideographichighcircle\",\"ideographiciterationmark\",\"ideographiclaborcircle\",\"ideographiclaborparen\",\"ideographicleftcircle\",\"ideographiclowcircle\",\"ideographicmedicinecircle\",\"ideographicmetalparen\",\"ideographicmoonparen\",\"ideographicnameparen\",\"ideographicperiod\",\"ideographicprintcircle\",\"ideographicreachparen\",\"ideographicrepresentparen\",\"ideographicresourceparen\",\"ideographicrightcircle\",\"ideographicsecretcircle\",\"ideographicselfparen\",\"ideographicsocietyparen\",\"ideographicspace\",\"ideographicspecialparen\",\"ideographicstockparen\",\"ideographicstudyparen\",\"ideographicsunparen\",\"ideographicsuperviseparen\",\"ideographicwaterparen\",\"ideographicwoodparen\",\"ideographiczero\",\"ideographmetalcircle\",\"ideographmooncircle\",\"ideographnamecircle\",\"ideographsuncircle\",\"ideographwatercircle\",\"ideographwoodcircle\",\"ideva\",\"idieresis\",\"idieresisacute\",\"idieresiscyrillic\",\"idotbelow\",\"iebrevecyrillic\",\"iecyrillic\",\"ieungacirclekorean\",\"ieungaparenkorean\",\"ieungcirclekorean\",\"ieungkorean\",\"ieungparenkorean\",\"igrave\",\"igujarati\",\"igurmukhi\",\"ihiragana\",\"ihookabove\",\"iibengali\",\"iicyrillic\",\"iideva\",\"iigujarati\",\"iigurmukhi\",\"iimatragurmukhi\",\"iinvertedbreve\",\"iishortcyrillic\",\"iivowelsignbengali\",\"iivowelsigndeva\",\"iivowelsigngujarati\",\"ij\",\"ikatakana\",\"ikatakanahalfwidth\",\"ikorean\",\"ilde\",\"iluyhebrew\",\"imacron\",\"imacroncyrillic\",\"imageorapproximatelyequal\",\"imatragurmukhi\",\"imonospace\",\"infinity\",\"iniarmenian\",\"integral\",\"integralbottom\",\"integralbt\",\"integralex\",\"integraltop\",\"integraltp\",\"intersection\",\"intisquare\",\"invbullet\",\"invcircle\",\"invsmileface\",\"iocyrillic\",\"iogonek\",\"iota\",\"iotadieresis\",\"iotadieresistonos\",\"iotalatin\",\"iotatonos\",\"iparen\",\"irigurmukhi\",\"ismallhiragana\",\"ismallkatakana\",\"ismallkatakanahalfwidth\",\"issharbengali\",\"istroke\",\"isuperior\",\"iterationhiragana\",\"iterationkatakana\",\"itilde\",\"itildebelow\",\"iubopomofo\",\"iucyrillic\",\"ivowelsignbengali\",\"ivowelsigndeva\",\"ivowelsigngujarati\",\"izhitsacyrillic\",\"izhitsadblgravecyrillic\",\"jaarmenian\",\"jabengali\",\"jadeva\",\"jagujarati\",\"jagurmukhi\",\"jbopomofo\",\"jcaron\",\"jcircle\",\"jcircumflex\",\"jcrossedtail\",\"jdotlessstroke\",\"jecyrillic\",\"jeemarabic\",\"jeemfinalarabic\",\"jeeminitialarabic\",\"jeemmedialarabic\",\"jeharabic\",\"jehfinalarabic\",\"jhabengali\",\"jhadeva\",\"jhagujarati\",\"jhagurmukhi\",\"jheharmenian\",\"jis\",\"jmonospace\",\"jparen\",\"jsuperior\",\"kabashkircyrillic\",\"kabengali\",\"kacute\",\"kacyrillic\",\"kadescendercyrillic\",\"kadeva\",\"kaf\",\"kafarabic\",\"kafdagesh\",\"kafdageshhebrew\",\"kaffinalarabic\",\"kafhebrew\",\"kafinitialarabic\",\"kafmedialarabic\",\"kafrafehebrew\",\"kagujarati\",\"kagurmukhi\",\"kahiragana\",\"kahookcyrillic\",\"kakatakana\",\"kakatakanahalfwidth\",\"kappa\",\"kappasymbolgreek\",\"kapyeounmieumkorean\",\"kapyeounphieuphkorean\",\"kapyeounpieupkorean\",\"kapyeounssangpieupkorean\",\"karoriisquare\",\"kashidaautoarabic\",\"kashidaautonosidebearingarabic\",\"kasmallkatakana\",\"kasquare\",\"kasraarabic\",\"kasratanarabic\",\"kastrokecyrillic\",\"katahiraprolongmarkhalfwidth\",\"kaverticalstrokecyrillic\",\"kbopomofo\",\"kcalsquare\",\"kcaron\",\"kcedilla\",\"kcircle\",\"kcommaaccent\",\"kdotbelow\",\"keharmenian\",\"kehiragana\",\"kekatakana\",\"kekatakanahalfwidth\",\"kenarmenian\",\"kesmallkatakana\",\"kgreenlandic\",\"khabengali\",\"khacyrillic\",\"khadeva\",\"khagujarati\",\"khagurmukhi\",\"khaharabic\",\"khahfinalarabic\",\"khahinitialarabic\",\"khahmedialarabic\",\"kheicoptic\",\"khhadeva\",\"khhagurmukhi\",\"khieukhacirclekorean\",\"khieukhaparenkorean\",\"khieukhcirclekorean\",\"khieukhkorean\",\"khieukhparenkorean\",\"khokhaithai\",\"khokhonthai\",\"khokhuatthai\",\"khokhwaithai\",\"khomutthai\",\"khook\",\"khorakhangthai\",\"khzsquare\",\"kihiragana\",\"kikatakana\",\"kikatakanahalfwidth\",\"kiroguramusquare\",\"kiromeetorusquare\",\"kirosquare\",\"kiyeokacirclekorean\",\"kiyeokaparenkorean\",\"kiyeokcirclekorean\",\"kiyeokkorean\",\"kiyeokparenkorean\",\"kiyeoksioskorean\",\"kjecyrillic\",\"klinebelow\",\"klsquare\",\"kmcubedsquare\",\"kmonospace\",\"kmsquaredsquare\",\"kohiragana\",\"kohmsquare\",\"kokaithai\",\"kokatakana\",\"kokatakanahalfwidth\",\"kooposquare\",\"koppacyrillic\",\"koreanstandardsymbol\",\"koroniscmb\",\"kparen\",\"kpasquare\",\"ksicyrillic\",\"ktsquare\",\"kturned\",\"kuhiragana\",\"kukatakana\",\"kukatakanahalfwidth\",\"kvsquare\",\"kwsquare\",\"labengali\",\"lacute\",\"ladeva\",\"lagujarati\",\"lagurmukhi\",\"lakkhangyaothai\",\"lamaleffinalarabic\",\"lamalefhamzaabovefinalarabic\",\"lamalefhamzaaboveisolatedarabic\",\"lamalefhamzabelowfinalarabic\",\"lamalefhamzabelowisolatedarabic\",\"lamalefisolatedarabic\",\"lamalefmaddaabovefinalarabic\",\"lamalefmaddaaboveisolatedarabic\",\"lamarabic\",\"lambda\",\"lambdastroke\",\"lamed\",\"lameddagesh\",\"lameddageshhebrew\",\"lamedhebrew\",\"lamfinalarabic\",\"lamhahinitialarabic\",\"laminitialarabic\",\"lamjeeminitialarabic\",\"lamkhahinitialarabic\",\"lamlamhehisolatedarabic\",\"lammedialarabic\",\"lammeemhahinitialarabic\",\"lammeeminitialarabic\",\"largecircle\",\"lbar\",\"lbelt\",\"lbopomofo\",\"lcaron\",\"lcedilla\",\"lcircle\",\"lcircumflexbelow\",\"lcommaaccent\",\"ldot\",\"ldotaccent\",\"ldotbelow\",\"ldotbelowmacron\",\"leftangleabovecmb\",\"lefttackbelowcmb\",\"less\",\"lessequal\",\"lessequalorgreater\",\"lessmonospace\",\"lessorequivalent\",\"lessorgreater\",\"lessoverequal\",\"lesssmall\",\"lezh\",\"lfblock\",\"lhookretroflex\",\"lira\",\"liwnarmenian\",\"lj\",\"ljecyrillic\",\"ll\",\"lladeva\",\"llagujarati\",\"llinebelow\",\"llladeva\",\"llvocalicbengali\",\"llvocalicdeva\",\"llvocalicvowelsignbengali\",\"llvocalicvowelsigndeva\",\"lmiddletilde\",\"lmonospace\",\"lmsquare\",\"lochulathai\",\"logicaland\",\"logicalnot\",\"logicalnotreversed\",\"logicalor\",\"lolingthai\",\"longs\",\"lowlinecenterline\",\"lowlinecmb\",\"lowlinedashed\",\"lozenge\",\"lparen\",\"lslash\",\"lsquare\",\"lsuperior\",\"ltshade\",\"luthai\",\"lvocalicbengali\",\"lvocalicdeva\",\"lvocalicvowelsignbengali\",\"lvocalicvowelsigndeva\",\"lxsquare\",\"mabengali\",\"macron\",\"macronbelowcmb\",\"macroncmb\",\"macronlowmod\",\"macronmonospace\",\"macute\",\"madeva\",\"magujarati\",\"magurmukhi\",\"mahapakhhebrew\",\"mahapakhlefthebrew\",\"mahiragana\",\"maichattawalowleftthai\",\"maichattawalowrightthai\",\"maichattawathai\",\"maichattawaupperleftthai\",\"maieklowleftthai\",\"maieklowrightthai\",\"maiekthai\",\"maiekupperleftthai\",\"maihanakatleftthai\",\"maihanakatthai\",\"maitaikhuleftthai\",\"maitaikhuthai\",\"maitholowleftthai\",\"maitholowrightthai\",\"maithothai\",\"maithoupperleftthai\",\"maitrilowleftthai\",\"maitrilowrightthai\",\"maitrithai\",\"maitriupperleftthai\",\"maiyamokthai\",\"makatakana\",\"makatakanahalfwidth\",\"male\",\"mansyonsquare\",\"maqafhebrew\",\"mars\",\"masoracirclehebrew\",\"masquare\",\"mbopomofo\",\"mbsquare\",\"mcircle\",\"mcubedsquare\",\"mdotaccent\",\"mdotbelow\",\"meemarabic\",\"meemfinalarabic\",\"meeminitialarabic\",\"meemmedialarabic\",\"meemmeeminitialarabic\",\"meemmeemisolatedarabic\",\"meetorusquare\",\"mehiragana\",\"meizierasquare\",\"mekatakana\",\"mekatakanahalfwidth\",\"mem\",\"memdagesh\",\"memdageshhebrew\",\"memhebrew\",\"menarmenian\",\"merkhahebrew\",\"merkhakefulahebrew\",\"merkhakefulalefthebrew\",\"merkhalefthebrew\",\"mhook\",\"mhzsquare\",\"middledotkatakanahalfwidth\",\"middot\",\"mieumacirclekorean\",\"mieumaparenkorean\",\"mieumcirclekorean\",\"mieumkorean\",\"mieumpansioskorean\",\"mieumparenkorean\",\"mieumpieupkorean\",\"mieumsioskorean\",\"mihiragana\",\"mikatakana\",\"mikatakanahalfwidth\",\"minus\",\"minusbelowcmb\",\"minuscircle\",\"minusmod\",\"minusplus\",\"minute\",\"miribaarusquare\",\"mirisquare\",\"mlonglegturned\",\"mlsquare\",\"mmcubedsquare\",\"mmonospace\",\"mmsquaredsquare\",\"mohiragana\",\"mohmsquare\",\"mokatakana\",\"mokatakanahalfwidth\",\"molsquare\",\"momathai\",\"moverssquare\",\"moverssquaredsquare\",\"mparen\",\"mpasquare\",\"mssquare\",\"msuperior\",\"mturned\",\"mu\",\"mu1\",\"muasquare\",\"muchgreater\",\"muchless\",\"mufsquare\",\"mugreek\",\"mugsquare\",\"muhiragana\",\"mukatakana\",\"mukatakanahalfwidth\",\"mulsquare\",\"multiply\",\"mumsquare\",\"munahhebrew\",\"munahlefthebrew\",\"musicalnote\",\"musicalnotedbl\",\"musicflatsign\",\"musicsharpsign\",\"mussquare\",\"muvsquare\",\"muwsquare\",\"mvmegasquare\",\"mvsquare\",\"mwmegasquare\",\"mwsquare\",\"nabengali\",\"nabla\",\"nacute\",\"nadeva\",\"nagujarati\",\"nagurmukhi\",\"nahiragana\",\"nakatakana\",\"nakatakanahalfwidth\",\"napostrophe\",\"nasquare\",\"nbopomofo\",\"nbspace\",\"ncaron\",\"ncedilla\",\"ncircle\",\"ncircumflexbelow\",\"ncommaaccent\",\"ndotaccent\",\"ndotbelow\",\"nehiragana\",\"nekatakana\",\"nekatakanahalfwidth\",\"newsheqelsign\",\"nfsquare\",\"ngabengali\",\"ngadeva\",\"ngagujarati\",\"ngagurmukhi\",\"ngonguthai\",\"nhiragana\",\"nhookleft\",\"nhookretroflex\",\"nieunacirclekorean\",\"nieunaparenkorean\",\"nieuncieuckorean\",\"nieuncirclekorean\",\"nieunhieuhkorean\",\"nieunkorean\",\"nieunpansioskorean\",\"nieunparenkorean\",\"nieunsioskorean\",\"nieuntikeutkorean\",\"nihiragana\",\"nikatakana\",\"nikatakanahalfwidth\",\"nikhahitleftthai\",\"nikhahitthai\",\"nine\",\"ninearabic\",\"ninebengali\",\"ninecircle\",\"ninecircleinversesansserif\",\"ninedeva\",\"ninegujarati\",\"ninegurmukhi\",\"ninehackarabic\",\"ninehangzhou\",\"nineideographicparen\",\"nineinferior\",\"ninemonospace\",\"nineoldstyle\",\"nineparen\",\"nineperiod\",\"ninepersian\",\"nineroman\",\"ninesuperior\",\"nineteencircle\",\"nineteenparen\",\"nineteenperiod\",\"ninethai\",\"nj\",\"njecyrillic\",\"nkatakana\",\"nkatakanahalfwidth\",\"nlegrightlong\",\"nlinebelow\",\"nmonospace\",\"nmsquare\",\"nnabengali\",\"nnadeva\",\"nnagujarati\",\"nnagurmukhi\",\"nnnadeva\",\"nohiragana\",\"nokatakana\",\"nokatakanahalfwidth\",\"nonbreakingspace\",\"nonenthai\",\"nonuthai\",\"noonarabic\",\"noonfinalarabic\",\"noonghunnaarabic\",\"noonghunnafinalarabic\",\"nooninitialarabic\",\"noonjeeminitialarabic\",\"noonjeemisolatedarabic\",\"noonmedialarabic\",\"noonmeeminitialarabic\",\"noonmeemisolatedarabic\",\"noonnoonfinalarabic\",\"notcontains\",\"notelement\",\"notelementof\",\"notequal\",\"notgreater\",\"notgreaternorequal\",\"notgreaternorless\",\"notidentical\",\"notless\",\"notlessnorequal\",\"notparallel\",\"notprecedes\",\"notsubset\",\"notsucceeds\",\"notsuperset\",\"nowarmenian\",\"nparen\",\"nssquare\",\"nsuperior\",\"ntilde\",\"nu\",\"nuhiragana\",\"nukatakana\",\"nukatakanahalfwidth\",\"nuktabengali\",\"nuktadeva\",\"nuktagujarati\",\"nuktagurmukhi\",\"numbersign\",\"numbersignmonospace\",\"numbersignsmall\",\"numeralsigngreek\",\"numeralsignlowergreek\",\"numero\",\"nun\",\"nundagesh\",\"nundageshhebrew\",\"nunhebrew\",\"nvsquare\",\"nwsquare\",\"nyabengali\",\"nyadeva\",\"nyagujarati\",\"nyagurmukhi\",\"o\",\"oacute\",\"oangthai\",\"obarred\",\"obarredcyrillic\",\"obarreddieresiscyrillic\",\"obengali\",\"obopomofo\",\"obreve\",\"ocandradeva\",\"ocandragujarati\",\"ocandravowelsigndeva\",\"ocandravowelsigngujarati\",\"ocaron\",\"ocircle\",\"ocircumflex\",\"ocircumflexacute\",\"ocircumflexdotbelow\",\"ocircumflexgrave\",\"ocircumflexhookabove\",\"ocircumflextilde\",\"ocyrillic\",\"odblacute\",\"odblgrave\",\"odeva\",\"odieresis\",\"odieresiscyrillic\",\"odotbelow\",\"oe\",\"oekorean\",\"ogonek\",\"ogonekcmb\",\"ograve\",\"ogujarati\",\"oharmenian\",\"ohiragana\",\"ohookabove\",\"ohorn\",\"ohornacute\",\"ohorndotbelow\",\"ohorngrave\",\"ohornhookabove\",\"ohorntilde\",\"ohungarumlaut\",\"oi\",\"oinvertedbreve\",\"okatakana\",\"okatakanahalfwidth\",\"okorean\",\"olehebrew\",\"omacron\",\"omacronacute\",\"omacrongrave\",\"omdeva\",\"omega\",\"omega1\",\"omegacyrillic\",\"omegalatinclosed\",\"omegaroundcyrillic\",\"omegatitlocyrillic\",\"omegatonos\",\"omgujarati\",\"omicron\",\"omicrontonos\",\"omonospace\",\"one\",\"onearabic\",\"onebengali\",\"onecircle\",\"onecircleinversesansserif\",\"onedeva\",\"onedotenleader\",\"oneeighth\",\"onefitted\",\"onegujarati\",\"onegurmukhi\",\"onehackarabic\",\"onehalf\",\"onehangzhou\",\"oneideographicparen\",\"oneinferior\",\"onemonospace\",\"onenumeratorbengali\",\"oneoldstyle\",\"oneparen\",\"oneperiod\",\"onepersian\",\"onequarter\",\"oneroman\",\"onesuperior\",\"onethai\",\"onethird\",\"oogonek\",\"oogonekmacron\",\"oogurmukhi\",\"oomatragurmukhi\",\"oopen\",\"oparen\",\"openbullet\",\"option\",\"ordfeminine\",\"ordmasculine\",\"orthogonal\",\"oshortdeva\",\"oshortvowelsigndeva\",\"oslash\",\"oslashacute\",\"osmallhiragana\",\"osmallkatakana\",\"osmallkatakanahalfwidth\",\"ostrokeacute\",\"osuperior\",\"otcyrillic\",\"otilde\",\"otildeacute\",\"otildedieresis\",\"oubopomofo\",\"overline\",\"overlinecenterline\",\"overlinecmb\",\"overlinedashed\",\"overlinedblwavy\",\"overlinewavy\",\"overscore\",\"ovowelsignbengali\",\"ovowelsigndeva\",\"ovowelsigngujarati\",\"paampssquare\",\"paasentosquare\",\"pabengali\",\"pacute\",\"padeva\",\"pagedown\",\"pageup\",\"pagujarati\",\"pagurmukhi\",\"pahiragana\",\"paiyannoithai\",\"pakatakana\",\"palatalizationcyrilliccmb\",\"palochkacyrillic\",\"pansioskorean\",\"paragraph\",\"parallel\",\"parenleft\",\"parenleftaltonearabic\",\"parenleftbt\",\"parenleftex\",\"parenleftinferior\",\"parenleftmonospace\",\"parenleftsmall\",\"parenleftsuperior\",\"parenlefttp\",\"parenleftvertical\",\"parenright\",\"parenrightaltonearabic\",\"parenrightbt\",\"parenrightex\",\"parenrightinferior\",\"parenrightmonospace\",\"parenrightsmall\",\"parenrightsuperior\",\"parenrighttp\",\"parenrightvertical\",\"partialdiff\",\"paseqhebrew\",\"pashtahebrew\",\"pasquare\",\"patah\",\"patah11\",\"patah1d\",\"patah2a\",\"patahhebrew\",\"patahnarrowhebrew\",\"patahquarterhebrew\",\"patahwidehebrew\",\"pazerhebrew\",\"pbopomofo\",\"pcircle\",\"pdotaccent\",\"pe\",\"pecyrillic\",\"pedagesh\",\"pedageshhebrew\",\"peezisquare\",\"pefinaldageshhebrew\",\"peharabic\",\"peharmenian\",\"pehebrew\",\"pehfinalarabic\",\"pehinitialarabic\",\"pehiragana\",\"pehmedialarabic\",\"pekatakana\",\"pemiddlehookcyrillic\",\"perafehebrew\",\"percent\",\"percentarabic\",\"percentmonospace\",\"percentsmall\",\"period\",\"periodarmenian\",\"periodcentered\",\"periodhalfwidth\",\"periodinferior\",\"periodmonospace\",\"periodsmall\",\"periodsuperior\",\"perispomenigreekcmb\",\"perpendicular\",\"perthousand\",\"peseta\",\"pfsquare\",\"phabengali\",\"phadeva\",\"phagujarati\",\"phagurmukhi\",\"phi\",\"phi1\",\"phieuphacirclekorean\",\"phieuphaparenkorean\",\"phieuphcirclekorean\",\"phieuphkorean\",\"phieuphparenkorean\",\"philatin\",\"phinthuthai\",\"phisymbolgreek\",\"phook\",\"phophanthai\",\"phophungthai\",\"phosamphaothai\",\"pi\",\"pieupacirclekorean\",\"pieupaparenkorean\",\"pieupcieuckorean\",\"pieupcirclekorean\",\"pieupkiyeokkorean\",\"pieupkorean\",\"pieupparenkorean\",\"pieupsioskiyeokkorean\",\"pieupsioskorean\",\"pieupsiostikeutkorean\",\"pieupthieuthkorean\",\"pieuptikeutkorean\",\"pihiragana\",\"pikatakana\",\"pisymbolgreek\",\"piwrarmenian\",\"planckover2pi\",\"planckover2pi1\",\"plus\",\"plusbelowcmb\",\"pluscircle\",\"plusminus\",\"plusmod\",\"plusmonospace\",\"plussmall\",\"plussuperior\",\"pmonospace\",\"pmsquare\",\"pohiragana\",\"pointingindexdownwhite\",\"pointingindexleftwhite\",\"pointingindexrightwhite\",\"pointingindexupwhite\",\"pokatakana\",\"poplathai\",\"postalmark\",\"postalmarkface\",\"pparen\",\"precedes\",\"prescription\",\"primemod\",\"primereversed\",\"product\",\"projective\",\"prolongedkana\",\"propellor\",\"propersubset\",\"propersuperset\",\"proportion\",\"proportional\",\"psi\",\"psicyrillic\",\"psilipneumatacyrilliccmb\",\"pssquare\",\"puhiragana\",\"pukatakana\",\"pvsquare\",\"pwsquare\",\"qadeva\",\"qadmahebrew\",\"qafarabic\",\"qaffinalarabic\",\"qafinitialarabic\",\"qafmedialarabic\",\"qamats\",\"qamats10\",\"qamats1a\",\"qamats1c\",\"qamats27\",\"qamats29\",\"qamats33\",\"qamatsde\",\"qamatshebrew\",\"qamatsnarrowhebrew\",\"qamatsqatanhebrew\",\"qamatsqatannarrowhebrew\",\"qamatsqatanquarterhebrew\",\"qamatsqatanwidehebrew\",\"qamatsquarterhebrew\",\"qamatswidehebrew\",\"qarneyparahebrew\",\"qbopomofo\",\"qcircle\",\"qhook\",\"qmonospace\",\"qof\",\"qofdagesh\",\"qofdageshhebrew\",\"qofhebrew\",\"qparen\",\"quarternote\",\"qubuts\",\"qubuts18\",\"qubuts25\",\"qubuts31\",\"qubutshebrew\",\"qubutsnarrowhebrew\",\"qubutsquarterhebrew\",\"qubutswidehebrew\",\"question\",\"questionarabic\",\"questionarmenian\",\"questiondown\",\"questiondownsmall\",\"questiongreek\",\"questionmonospace\",\"questionsmall\",\"quotedbl\",\"quotedblbase\",\"quotedblleft\",\"quotedblmonospace\",\"quotedblprime\",\"quotedblprimereversed\",\"quotedblright\",\"quoteleft\",\"quoteleftreversed\",\"quotereversed\",\"quoteright\",\"quoterightn\",\"quotesinglbase\",\"quotesingle\",\"quotesinglemonospace\",\"raarmenian\",\"rabengali\",\"racute\",\"radeva\",\"radical\",\"radicalex\",\"radoverssquare\",\"radoverssquaredsquare\",\"radsquare\",\"rafe\",\"rafehebrew\",\"ragujarati\",\"ragurmukhi\",\"rahiragana\",\"rakatakana\",\"rakatakanahalfwidth\",\"ralowerdiagonalbengali\",\"ramiddlediagonalbengali\",\"ramshorn\",\"ratio\",\"rbopomofo\",\"rcaron\",\"rcedilla\",\"rcircle\",\"rcommaaccent\",\"rdblgrave\",\"rdotaccent\",\"rdotbelow\",\"rdotbelowmacron\",\"referencemark\",\"reflexsubset\",\"reflexsuperset\",\"registered\",\"registersans\",\"registerserif\",\"reharabic\",\"reharmenian\",\"rehfinalarabic\",\"rehiragana\",\"rekatakana\",\"rekatakanahalfwidth\",\"resh\",\"reshdageshhebrew\",\"reshhebrew\",\"reversedtilde\",\"reviahebrew\",\"reviamugrashhebrew\",\"revlogicalnot\",\"rfishhook\",\"rfishhookreversed\",\"rhabengali\",\"rhadeva\",\"rho\",\"rhook\",\"rhookturned\",\"rhookturnedsuperior\",\"rhosymbolgreek\",\"rhotichookmod\",\"rieulacirclekorean\",\"rieulaparenkorean\",\"rieulcirclekorean\",\"rieulhieuhkorean\",\"rieulkiyeokkorean\",\"rieulkiyeoksioskorean\",\"rieulkorean\",\"rieulmieumkorean\",\"rieulpansioskorean\",\"rieulparenkorean\",\"rieulphieuphkorean\",\"rieulpieupkorean\",\"rieulpieupsioskorean\",\"rieulsioskorean\",\"rieulthieuthkorean\",\"rieultikeutkorean\",\"rieulyeorinhieuhkorean\",\"rightangle\",\"righttackbelowcmb\",\"righttriangle\",\"rihiragana\",\"rikatakana\",\"rikatakanahalfwidth\",\"ring\",\"ringbelowcmb\",\"ringcmb\",\"ringhalfleft\",\"ringhalfleftarmenian\",\"ringhalfleftbelowcmb\",\"ringhalfleftcentered\",\"ringhalfright\",\"ringhalfrightbelowcmb\",\"ringhalfrightcentered\",\"rinvertedbreve\",\"rittorusquare\",\"rlinebelow\",\"rlongleg\",\"rlonglegturned\",\"rmonospace\",\"rohiragana\",\"rokatakana\",\"rokatakanahalfwidth\",\"roruathai\",\"rparen\",\"rrabengali\",\"rradeva\",\"rragurmukhi\",\"rreharabic\",\"rrehfinalarabic\",\"rrvocalicbengali\",\"rrvocalicdeva\",\"rrvocalicgujarati\",\"rrvocalicvowelsignbengali\",\"rrvocalicvowelsigndeva\",\"rrvocalicvowelsigngujarati\",\"rsuperior\",\"rtblock\",\"rturned\",\"rturnedsuperior\",\"ruhiragana\",\"rukatakana\",\"rukatakanahalfwidth\",\"rupeemarkbengali\",\"rupeesignbengali\",\"rupiah\",\"ruthai\",\"rvocalicbengali\",\"rvocalicdeva\",\"rvocalicgujarati\",\"rvocalicvowelsignbengali\",\"rvocalicvowelsigndeva\",\"rvocalicvowelsigngujarati\",\"sabengali\",\"sacute\",\"sacutedotaccent\",\"sadarabic\",\"sadeva\",\"sadfinalarabic\",\"sadinitialarabic\",\"sadmedialarabic\",\"sagujarati\",\"sagurmukhi\",\"sahiragana\",\"sakatakana\",\"sakatakanahalfwidth\",\"sallallahoualayhewasallamarabic\",\"samekh\",\"samekhdagesh\",\"samekhdageshhebrew\",\"samekhhebrew\",\"saraaathai\",\"saraaethai\",\"saraaimaimalaithai\",\"saraaimaimuanthai\",\"saraamthai\",\"saraathai\",\"saraethai\",\"saraiileftthai\",\"saraiithai\",\"saraileftthai\",\"saraithai\",\"saraothai\",\"saraueeleftthai\",\"saraueethai\",\"saraueleftthai\",\"sarauethai\",\"sarauthai\",\"sarauuthai\",\"sbopomofo\",\"scaron\",\"scarondotaccent\",\"scedilla\",\"schwa\",\"schwacyrillic\",\"schwadieresiscyrillic\",\"schwahook\",\"scircle\",\"scircumflex\",\"scommaaccent\",\"sdotaccent\",\"sdotbelow\",\"sdotbelowdotaccent\",\"seagullbelowcmb\",\"secondtonechinese\",\"section\",\"seenarabic\",\"seenfinalarabic\",\"seeninitialarabic\",\"seenmedialarabic\",\"segol\",\"segol13\",\"segol1f\",\"segol2c\",\"segolhebrew\",\"segolnarrowhebrew\",\"segolquarterhebrew\",\"segoltahebrew\",\"segolwidehebrew\",\"seharmenian\",\"sehiragana\",\"sekatakana\",\"sekatakanahalfwidth\",\"semicolon\",\"semicolonarabic\",\"semicolonmonospace\",\"semicolonsmall\",\"semivoicedmarkkana\",\"semivoicedmarkkanahalfwidth\",\"sentisquare\",\"sentosquare\",\"seven\",\"sevenarabic\",\"sevenbengali\",\"sevencircle\",\"sevencircleinversesansserif\",\"sevendeva\",\"seveneighths\",\"sevengujarati\",\"sevengurmukhi\",\"sevenhackarabic\",\"sevenhangzhou\",\"sevenideographicparen\",\"seveninferior\",\"sevenmonospace\",\"sevenoldstyle\",\"sevenparen\",\"sevenperiod\",\"sevenpersian\",\"sevenroman\",\"sevensuperior\",\"seventeencircle\",\"seventeenparen\",\"seventeenperiod\",\"seventhai\",\"sfthyphen\",\"shaarmenian\",\"shabengali\",\"shacyrillic\",\"shaddaarabic\",\"shaddadammaarabic\",\"shaddadammatanarabic\",\"shaddafathaarabic\",\"shaddakasraarabic\",\"shaddakasratanarabic\",\"shade\",\"shadedark\",\"shadelight\",\"shademedium\",\"shadeva\",\"shagujarati\",\"shagurmukhi\",\"shalshelethebrew\",\"shbopomofo\",\"shchacyrillic\",\"sheenarabic\",\"sheenfinalarabic\",\"sheeninitialarabic\",\"sheenmedialarabic\",\"sheicoptic\",\"sheqel\",\"sheqelhebrew\",\"sheva\",\"sheva115\",\"sheva15\",\"sheva22\",\"sheva2e\",\"shevahebrew\",\"shevanarrowhebrew\",\"shevaquarterhebrew\",\"shevawidehebrew\",\"shhacyrillic\",\"shimacoptic\",\"shin\",\"shindagesh\",\"shindageshhebrew\",\"shindageshshindot\",\"shindageshshindothebrew\",\"shindageshsindot\",\"shindageshsindothebrew\",\"shindothebrew\",\"shinhebrew\",\"shinshindot\",\"shinshindothebrew\",\"shinsindot\",\"shinsindothebrew\",\"shook\",\"sigma\",\"sigma1\",\"sigmafinal\",\"sigmalunatesymbolgreek\",\"sihiragana\",\"sikatakana\",\"sikatakanahalfwidth\",\"siluqhebrew\",\"siluqlefthebrew\",\"similar\",\"sindothebrew\",\"siosacirclekorean\",\"siosaparenkorean\",\"sioscieuckorean\",\"sioscirclekorean\",\"sioskiyeokkorean\",\"sioskorean\",\"siosnieunkorean\",\"siosparenkorean\",\"siospieupkorean\",\"siostikeutkorean\",\"six\",\"sixarabic\",\"sixbengali\",\"sixcircle\",\"sixcircleinversesansserif\",\"sixdeva\",\"sixgujarati\",\"sixgurmukhi\",\"sixhackarabic\",\"sixhangzhou\",\"sixideographicparen\",\"sixinferior\",\"sixmonospace\",\"sixoldstyle\",\"sixparen\",\"sixperiod\",\"sixpersian\",\"sixroman\",\"sixsuperior\",\"sixteencircle\",\"sixteencurrencydenominatorbengali\",\"sixteenparen\",\"sixteenperiod\",\"sixthai\",\"slash\",\"slashmonospace\",\"slong\",\"slongdotaccent\",\"smileface\",\"smonospace\",\"sofpasuqhebrew\",\"softhyphen\",\"softsigncyrillic\",\"sohiragana\",\"sokatakana\",\"sokatakanahalfwidth\",\"soliduslongoverlaycmb\",\"solidusshortoverlaycmb\",\"sorusithai\",\"sosalathai\",\"sosothai\",\"sosuathai\",\"space\",\"spacehackarabic\",\"spade\",\"spadesuitblack\",\"spadesuitwhite\",\"sparen\",\"squarebelowcmb\",\"squarecc\",\"squarecm\",\"squarediagonalcrosshatchfill\",\"squarehorizontalfill\",\"squarekg\",\"squarekm\",\"squarekmcapital\",\"squareln\",\"squarelog\",\"squaremg\",\"squaremil\",\"squaremm\",\"squaremsquared\",\"squareorthogonalcrosshatchfill\",\"squareupperlefttolowerrightfill\",\"squareupperrighttolowerleftfill\",\"squareverticalfill\",\"squarewhitewithsmallblack\",\"srsquare\",\"ssabengali\",\"ssadeva\",\"ssagujarati\",\"ssangcieuckorean\",\"ssanghieuhkorean\",\"ssangieungkorean\",\"ssangkiyeokkorean\",\"ssangnieunkorean\",\"ssangpieupkorean\",\"ssangsioskorean\",\"ssangtikeutkorean\",\"ssuperior\",\"sterling\",\"sterlingmonospace\",\"strokelongoverlaycmb\",\"strokeshortoverlaycmb\",\"subset\",\"subsetnotequal\",\"subsetorequal\",\"succeeds\",\"suchthat\",\"suhiragana\",\"sukatakana\",\"sukatakanahalfwidth\",\"sukunarabic\",\"summation\",\"sun\",\"superset\",\"supersetnotequal\",\"supersetorequal\",\"svsquare\",\"syouwaerasquare\",\"tabengali\",\"tackdown\",\"tackleft\",\"tadeva\",\"tagujarati\",\"tagurmukhi\",\"taharabic\",\"tahfinalarabic\",\"tahinitialarabic\",\"tahiragana\",\"tahmedialarabic\",\"taisyouerasquare\",\"takatakana\",\"takatakanahalfwidth\",\"tatweelarabic\",\"tau\",\"tav\",\"tavdages\",\"tavdagesh\",\"tavdageshhebrew\",\"tavhebrew\",\"tbar\",\"tbopomofo\",\"tcaron\",\"tccurl\",\"tcedilla\",\"tcheharabic\",\"tchehfinalarabic\",\"tchehinitialarabic\",\"tchehmedialarabic\",\"tcircle\",\"tcircumflexbelow\",\"tcommaaccent\",\"tdieresis\",\"tdotaccent\",\"tdotbelow\",\"tecyrillic\",\"tedescendercyrillic\",\"teharabic\",\"tehfinalarabic\",\"tehhahinitialarabic\",\"tehhahisolatedarabic\",\"tehinitialarabic\",\"tehiragana\",\"tehjeeminitialarabic\",\"tehjeemisolatedarabic\",\"tehmarbutaarabic\",\"tehmarbutafinalarabic\",\"tehmedialarabic\",\"tehmeeminitialarabic\",\"tehmeemisolatedarabic\",\"tehnoonfinalarabic\",\"tekatakana\",\"tekatakanahalfwidth\",\"telephone\",\"telephoneblack\",\"telishagedolahebrew\",\"telishaqetanahebrew\",\"tencircle\",\"tenideographicparen\",\"tenparen\",\"tenperiod\",\"tenroman\",\"tesh\",\"tet\",\"tetdagesh\",\"tetdageshhebrew\",\"tethebrew\",\"tetsecyrillic\",\"tevirhebrew\",\"tevirlefthebrew\",\"thabengali\",\"thadeva\",\"thagujarati\",\"thagurmukhi\",\"thalarabic\",\"thalfinalarabic\",\"thanthakhatlowleftthai\",\"thanthakhatlowrightthai\",\"thanthakhatthai\",\"thanthakhatupperleftthai\",\"theharabic\",\"thehfinalarabic\",\"thehinitialarabic\",\"thehmedialarabic\",\"thereexists\",\"therefore\",\"theta\",\"theta1\",\"thetasymbolgreek\",\"thieuthacirclekorean\",\"thieuthaparenkorean\",\"thieuthcirclekorean\",\"thieuthkorean\",\"thieuthparenkorean\",\"thirteencircle\",\"thirteenparen\",\"thirteenperiod\",\"thonangmonthothai\",\"thook\",\"thophuthaothai\",\"thorn\",\"thothahanthai\",\"thothanthai\",\"thothongthai\",\"thothungthai\",\"thousandcyrillic\",\"thousandsseparatorarabic\",\"thousandsseparatorpersian\",\"three\",\"threearabic\",\"threebengali\",\"threecircle\",\"threecircleinversesansserif\",\"threedeva\",\"threeeighths\",\"threegujarati\",\"threegurmukhi\",\"threehackarabic\",\"threehangzhou\",\"threeideographicparen\",\"threeinferior\",\"threemonospace\",\"threenumeratorbengali\",\"threeoldstyle\",\"threeparen\",\"threeperiod\",\"threepersian\",\"threequarters\",\"threequartersemdash\",\"threeroman\",\"threesuperior\",\"threethai\",\"thzsquare\",\"tihiragana\",\"tikatakana\",\"tikatakanahalfwidth\",\"tikeutacirclekorean\",\"tikeutaparenkorean\",\"tikeutcirclekorean\",\"tikeutkorean\",\"tikeutparenkorean\",\"tilde\",\"tildebelowcmb\",\"tildecmb\",\"tildecomb\",\"tildedoublecmb\",\"tildeoperator\",\"tildeoverlaycmb\",\"tildeverticalcmb\",\"timescircle\",\"tipehahebrew\",\"tipehalefthebrew\",\"tippigurmukhi\",\"titlocyrilliccmb\",\"tiwnarmenian\",\"tlinebelow\",\"tmonospace\",\"toarmenian\",\"tohiragana\",\"tokatakana\",\"tokatakanahalfwidth\",\"tonebarextrahighmod\",\"tonebarextralowmod\",\"tonebarhighmod\",\"tonebarlowmod\",\"tonebarmidmod\",\"tonefive\",\"tonesix\",\"tonetwo\",\"tonos\",\"tonsquare\",\"topatakthai\",\"tortoiseshellbracketleft\",\"tortoiseshellbracketleftsmall\",\"tortoiseshellbracketleftvertical\",\"tortoiseshellbracketright\",\"tortoiseshellbracketrightsmall\",\"tortoiseshellbracketrightvertical\",\"totaothai\",\"tpalatalhook\",\"tparen\",\"trademark\",\"trademarksans\",\"trademarkserif\",\"tretroflexhook\",\"triagdn\",\"triaglf\",\"triagrt\",\"triagup\",\"ts\",\"tsadi\",\"tsadidagesh\",\"tsadidageshhebrew\",\"tsadihebrew\",\"tsecyrillic\",\"tsere\",\"tsere12\",\"tsere1e\",\"tsere2b\",\"tserehebrew\",\"tserenarrowhebrew\",\"tserequarterhebrew\",\"tserewidehebrew\",\"tshecyrillic\",\"tsuperior\",\"ttabengali\",\"ttadeva\",\"ttagujarati\",\"ttagurmukhi\",\"tteharabic\",\"ttehfinalarabic\",\"ttehinitialarabic\",\"ttehmedialarabic\",\"tthabengali\",\"tthadeva\",\"tthagujarati\",\"tthagurmukhi\",\"tturned\",\"tuhiragana\",\"tukatakana\",\"tukatakanahalfwidth\",\"tusmallhiragana\",\"tusmallkatakana\",\"tusmallkatakanahalfwidth\",\"twelvecircle\",\"twelveparen\",\"twelveperiod\",\"twelveroman\",\"twentycircle\",\"twentyhangzhou\",\"twentyparen\",\"twentyperiod\",\"two\",\"twoarabic\",\"twobengali\",\"twocircle\",\"twocircleinversesansserif\",\"twodeva\",\"twodotenleader\",\"twodotleader\",\"twodotleadervertical\",\"twogujarati\",\"twogurmukhi\",\"twohackarabic\",\"twohangzhou\",\"twoideographicparen\",\"twoinferior\",\"twomonospace\",\"twonumeratorbengali\",\"twooldstyle\",\"twoparen\",\"twoperiod\",\"twopersian\",\"tworoman\",\"twostroke\",\"twosuperior\",\"twothai\",\"twothirds\",\"u\",\"uacute\",\"ubar\",\"ubengali\",\"ubopomofo\",\"ubreve\",\"ucaron\",\"ucircle\",\"ucircumflex\",\"ucircumflexbelow\",\"ucyrillic\",\"udattadeva\",\"udblacute\",\"udblgrave\",\"udeva\",\"udieresis\",\"udieresisacute\",\"udieresisbelow\",\"udieresiscaron\",\"udieresiscyrillic\",\"udieresisgrave\",\"udieresismacron\",\"udotbelow\",\"ugrave\",\"ugujarati\",\"ugurmukhi\",\"uhiragana\",\"uhookabove\",\"uhorn\",\"uhornacute\",\"uhorndotbelow\",\"uhorngrave\",\"uhornhookabove\",\"uhorntilde\",\"uhungarumlaut\",\"uhungarumlautcyrillic\",\"uinvertedbreve\",\"ukatakana\",\"ukatakanahalfwidth\",\"ukcyrillic\",\"ukorean\",\"umacron\",\"umacroncyrillic\",\"umacrondieresis\",\"umatragurmukhi\",\"umonospace\",\"underscore\",\"underscoredbl\",\"underscoremonospace\",\"underscorevertical\",\"underscorewavy\",\"union\",\"universal\",\"uogonek\",\"uparen\",\"upblock\",\"upperdothebrew\",\"upsilon\",\"upsilondieresis\",\"upsilondieresistonos\",\"upsilonlatin\",\"upsilontonos\",\"uptackbelowcmb\",\"uptackmod\",\"uragurmukhi\",\"uring\",\"ushortcyrillic\",\"usmallhiragana\",\"usmallkatakana\",\"usmallkatakanahalfwidth\",\"ustraightcyrillic\",\"ustraightstrokecyrillic\",\"utilde\",\"utildeacute\",\"utildebelow\",\"uubengali\",\"uudeva\",\"uugujarati\",\"uugurmukhi\",\"uumatragurmukhi\",\"uuvowelsignbengali\",\"uuvowelsigndeva\",\"uuvowelsigngujarati\",\"uvowelsignbengali\",\"uvowelsigndeva\",\"uvowelsigngujarati\",\"vadeva\",\"vagujarati\",\"vagurmukhi\",\"vakatakana\",\"vav\",\"vavdagesh\",\"vavdagesh65\",\"vavdageshhebrew\",\"vavhebrew\",\"vavholam\",\"vavholamhebrew\",\"vavvavhebrew\",\"vavyodhebrew\",\"vcircle\",\"vdotbelow\",\"vecyrillic\",\"veharabic\",\"vehfinalarabic\",\"vehinitialarabic\",\"vehmedialarabic\",\"vekatakana\",\"venus\",\"verticalbar\",\"verticallineabovecmb\",\"verticallinebelowcmb\",\"verticallinelowmod\",\"verticallinemod\",\"vewarmenian\",\"vhook\",\"vikatakana\",\"viramabengali\",\"viramadeva\",\"viramagujarati\",\"visargabengali\",\"visargadeva\",\"visargagujarati\",\"vmonospace\",\"voarmenian\",\"voicediterationhiragana\",\"voicediterationkatakana\",\"voicedmarkkana\",\"voicedmarkkanahalfwidth\",\"vokatakana\",\"vparen\",\"vtilde\",\"vturned\",\"vuhiragana\",\"vukatakana\",\"w\",\"wacute\",\"waekorean\",\"wahiragana\",\"wakatakana\",\"wakatakanahalfwidth\",\"wakorean\",\"wasmallhiragana\",\"wasmallkatakana\",\"wattosquare\",\"wavedash\",\"wavyunderscorevertical\",\"wawarabic\",\"wawfinalarabic\",\"wawhamzaabovearabic\",\"wawhamzaabovefinalarabic\",\"wbsquare\",\"wcircle\",\"wcircumflex\",\"wdieresis\",\"wdotaccent\",\"wdotbelow\",\"wehiragana\",\"weierstrass\",\"wekatakana\",\"wekorean\",\"weokorean\",\"wgrave\",\"whitebullet\",\"whitecircle\",\"whitecircleinverse\",\"whitecornerbracketleft\",\"whitecornerbracketleftvertical\",\"whitecornerbracketright\",\"whitecornerbracketrightvertical\",\"whitediamond\",\"whitediamondcontainingblacksmalldiamond\",\"whitedownpointingsmalltriangle\",\"whitedownpointingtriangle\",\"whiteleftpointingsmalltriangle\",\"whiteleftpointingtriangle\",\"whitelenticularbracketleft\",\"whitelenticularbracketright\",\"whiterightpointingsmalltriangle\",\"whiterightpointingtriangle\",\"whitesmallsquare\",\"whitesmilingface\",\"whitesquare\",\"whitestar\",\"whitetelephone\",\"whitetortoiseshellbracketleft\",\"whitetortoiseshellbracketright\",\"whiteuppointingsmalltriangle\",\"whiteuppointingtriangle\",\"wihiragana\",\"wikatakana\",\"wikorean\",\"wmonospace\",\"wohiragana\",\"wokatakana\",\"wokatakanahalfwidth\",\"won\",\"wonmonospace\",\"wowaenthai\",\"wparen\",\"wring\",\"wsuperior\",\"wturned\",\"wynn\",\"xabovecmb\",\"xbopomofo\",\"xcircle\",\"xdieresis\",\"xdotaccent\",\"xeharmenian\",\"xi\",\"xmonospace\",\"xparen\",\"xsuperior\",\"yaadosquare\",\"yabengali\",\"yacute\",\"yadeva\",\"yaekorean\",\"yagujarati\",\"yagurmukhi\",\"yahiragana\",\"yakatakana\",\"yakatakanahalfwidth\",\"yakorean\",\"yamakkanthai\",\"yasmallhiragana\",\"yasmallkatakana\",\"yasmallkatakanahalfwidth\",\"yatcyrillic\",\"ycircle\",\"ycircumflex\",\"ydieresis\",\"ydotaccent\",\"ydotbelow\",\"yeharabic\",\"yehbarreearabic\",\"yehbarreefinalarabic\",\"yehfinalarabic\",\"yehhamzaabovearabic\",\"yehhamzaabovefinalarabic\",\"yehhamzaaboveinitialarabic\",\"yehhamzaabovemedialarabic\",\"yehinitialarabic\",\"yehmedialarabic\",\"yehmeeminitialarabic\",\"yehmeemisolatedarabic\",\"yehnoonfinalarabic\",\"yehthreedotsbelowarabic\",\"yekorean\",\"yen\",\"yenmonospace\",\"yeokorean\",\"yeorinhieuhkorean\",\"yerahbenyomohebrew\",\"yerahbenyomolefthebrew\",\"yericyrillic\",\"yerudieresiscyrillic\",\"yesieungkorean\",\"yesieungpansioskorean\",\"yesieungsioskorean\",\"yetivhebrew\",\"ygrave\",\"yhook\",\"yhookabove\",\"yiarmenian\",\"yicyrillic\",\"yikorean\",\"yinyang\",\"yiwnarmenian\",\"ymonospace\",\"yod\",\"yoddagesh\",\"yoddageshhebrew\",\"yodhebrew\",\"yodyodhebrew\",\"yodyodpatahhebrew\",\"yohiragana\",\"yoikorean\",\"yokatakana\",\"yokatakanahalfwidth\",\"yokorean\",\"yosmallhiragana\",\"yosmallkatakana\",\"yosmallkatakanahalfwidth\",\"yotgreek\",\"yoyaekorean\",\"yoyakorean\",\"yoyakthai\",\"yoyingthai\",\"yparen\",\"ypogegrammeni\",\"ypogegrammenigreekcmb\",\"yr\",\"yring\",\"ysuperior\",\"ytilde\",\"yturned\",\"yuhiragana\",\"yuikorean\",\"yukatakana\",\"yukatakanahalfwidth\",\"yukorean\",\"yusbigcyrillic\",\"yusbigiotifiedcyrillic\",\"yuslittlecyrillic\",\"yuslittleiotifiedcyrillic\",\"yusmallhiragana\",\"yusmallkatakana\",\"yusmallkatakanahalfwidth\",\"yuyekorean\",\"yuyeokorean\",\"yyabengali\",\"yyadeva\",\"zaarmenian\",\"zacute\",\"zadeva\",\"zagurmukhi\",\"zaharabic\",\"zahfinalarabic\",\"zahinitialarabic\",\"zahiragana\",\"zahmedialarabic\",\"zainarabic\",\"zainfinalarabic\",\"zakatakana\",\"zaqefgadolhebrew\",\"zaqefqatanhebrew\",\"zarqahebrew\",\"zayin\",\"zayindagesh\",\"zayindageshhebrew\",\"zayinhebrew\",\"zbopomofo\",\"zcaron\",\"zcircle\",\"zcircumflex\",\"zcurl\",\"zdot\",\"zdotaccent\",\"zdotbelow\",\"zecyrillic\",\"zedescendercyrillic\",\"zedieresiscyrillic\",\"zehiragana\",\"zekatakana\",\"zero\",\"zeroarabic\",\"zerobengali\",\"zerodeva\",\"zerogujarati\",\"zerogurmukhi\",\"zerohackarabic\",\"zeroinferior\",\"zeromonospace\",\"zerooldstyle\",\"zeropersian\",\"zerosuperior\",\"zerothai\",\"zerowidthjoiner\",\"zerowidthnonjoiner\",\"zerowidthspace\",\"zeta\",\"zhbopomofo\",\"zhearmenian\",\"zhebrevecyrillic\",\"zhecyrillic\",\"zhedescendercyrillic\",\"zhedieresiscyrillic\",\"zihiragana\",\"zikatakana\",\"zinorhebrew\",\"zlinebelow\",\"zmonospace\",\"zohiragana\",\"zokatakana\",\"zparen\",\"zretroflexhook\",\"zstroke\",\"zuhiragana\",\"zukatakana\",\"angbracketleftbig\",\"angbracketleftBig\",\"angbracketleftbigg\",\"angbracketleftBigg\",\"angbracketrightBig\",\"angbracketrightbig\",\"angbracketrightBigg\",\"angbracketrightbigg\",\"arrowhookleft\",\"arrowhookright\",\"arrowlefttophalf\",\"arrowleftbothalf\",\"arrownortheast\",\"arrownorthwest\",\"arrowrighttophalf\",\"arrowrightbothalf\",\"arrowsoutheast\",\"arrowsouthwest\",\"backslashbig\",\"backslashBig\",\"backslashBigg\",\"backslashbigg\",\"bardbl\",\"bracehtipdownleft\",\"bracehtipdownright\",\"bracehtipupleft\",\"bracehtipupright\",\"braceleftBig\",\"braceleftbig\",\"braceleftbigg\",\"braceleftBigg\",\"bracerightBig\",\"bracerightbig\",\"bracerightbigg\",\"bracerightBigg\",\"bracketleftbig\",\"bracketleftBig\",\"bracketleftbigg\",\"bracketleftBigg\",\"bracketrightBig\",\"bracketrightbig\",\"bracketrightbigg\",\"bracketrightBigg\",\"ceilingleftbig\",\"ceilingleftBig\",\"ceilingleftBigg\",\"ceilingleftbigg\",\"ceilingrightbig\",\"ceilingrightBig\",\"ceilingrightbigg\",\"ceilingrightBigg\",\"circledotdisplay\",\"circledottext\",\"circlemultiplydisplay\",\"circlemultiplytext\",\"circleplusdisplay\",\"circleplustext\",\"contintegraldisplay\",\"contintegraltext\",\"coproductdisplay\",\"coproducttext\",\"floorleftBig\",\"floorleftbig\",\"floorleftbigg\",\"floorleftBigg\",\"floorrightbig\",\"floorrightBig\",\"floorrightBigg\",\"floorrightbigg\",\"hatwide\",\"hatwider\",\"hatwidest\",\"intercal\",\"integraldisplay\",\"integraltext\",\"intersectiondisplay\",\"intersectiontext\",\"logicalanddisplay\",\"logicalandtext\",\"logicalordisplay\",\"logicalortext\",\"parenleftBig\",\"parenleftbig\",\"parenleftBigg\",\"parenleftbigg\",\"parenrightBig\",\"parenrightbig\",\"parenrightBigg\",\"parenrightbigg\",\"prime\",\"productdisplay\",\"producttext\",\"radicalbig\",\"radicalBig\",\"radicalBigg\",\"radicalbigg\",\"radicalbt\",\"radicaltp\",\"radicalvertex\",\"slashbig\",\"slashBig\",\"slashBigg\",\"slashbigg\",\"summationdisplay\",\"summationtext\",\"tildewide\",\"tildewider\",\"tildewidest\",\"uniondisplay\",\"unionmultidisplay\",\"unionmultitext\",\"unionsqdisplay\",\"unionsqtext\",\"uniontext\",\"vextenddouble\",\"vextendsingle\",\"getDingbatsGlyphsUnicode\",\"a202\",\"a3\",\"a4\",\"a5\",\"a119\",\"a118\",\"a117\",\"a11\",\"a12\",\"a13\",\"a14\",\"a15\",\"a16\",\"a105\",\"a17\",\"a18\",\"a19\",\"a20\",\"a21\",\"a22\",\"a23\",\"a24\",\"a25\",\"a26\",\"a27\",\"a28\",\"a6\",\"a7\",\"a8\",\"a9\",\"a10\",\"a29\",\"a30\",\"a31\",\"a32\",\"a33\",\"a34\",\"a35\",\"a36\",\"a37\",\"a38\",\"a39\",\"a40\",\"a41\",\"a42\",\"a43\",\"a44\",\"a45\",\"a46\",\"a47\",\"a48\",\"a49\",\"a50\",\"a51\",\"a52\",\"a53\",\"a54\",\"a55\",\"a56\",\"a57\",\"a58\",\"a59\",\"a60\",\"a61\",\"a62\",\"a63\",\"a64\",\"a65\",\"a66\",\"a67\",\"a68\",\"a69\",\"a70\",\"a71\",\"a72\",\"a73\",\"a74\",\"a203\",\"a75\",\"a204\",\"a76\",\"a77\",\"a78\",\"a79\",\"a81\",\"a82\",\"a83\",\"a84\",\"a97\",\"a98\",\"a99\",\"a100\",\"a101\",\"a102\",\"a103\",\"a104\",\"a106\",\"a107\",\"a108\",\"a112\",\"a111\",\"a110\",\"a109\",\"a120\",\"a121\",\"a122\",\"a123\",\"a124\",\"a125\",\"a126\",\"a127\",\"a128\",\"a129\",\"a130\",\"a131\",\"a132\",\"a133\",\"a134\",\"a135\",\"a136\",\"a137\",\"a138\",\"a139\",\"a140\",\"a141\",\"a142\",\"a143\",\"a144\",\"a145\",\"a146\",\"a147\",\"a148\",\"a149\",\"a150\",\"a151\",\"a152\",\"a153\",\"a154\",\"a155\",\"a156\",\"a157\",\"a158\",\"a159\",\"a160\",\"a161\",\"a163\",\"a164\",\"a196\",\"a165\",\"a192\",\"a166\",\"a167\",\"a168\",\"a169\",\"a170\",\"a171\",\"a172\",\"a173\",\"a162\",\"a174\",\"a175\",\"a176\",\"a177\",\"a178\",\"a179\",\"a193\",\"a180\",\"a199\",\"a181\",\"a200\",\"a182\",\"a201\",\"a183\",\"a184\",\"a197\",\"a185\",\"a194\",\"a198\",\"a186\",\"a195\",\"a187\",\"a188\",\"a189\",\"a190\",\"a191\",\"a89\",\"a90\",\"a93\",\"a94\",\"a91\",\"a92\",\"a205\",\"a85\",\"a206\",\"a86\",\"a87\",\"a88\",\"a95\",\"a96\",\"getSpecialPUASymbols\",\"mapSpecialUnicodeValues\",\"getUnicodeForGlyph\",\"glyphsUnicodeMap\",\"unicode\",\"nameLen\",\"hexStr\",\"UnicodeRanges\",\"getUnicodeRangeFor\",\"lastPosition\",\"SpecialCharRegExp\",\"CategoryCache\",\"getCharUnicodeCategory\",\"cachedCategory\",\"groups\",\"category\",\"isWhitespace\",\"isZeroWidthDiacritic\",\"isInvisibleFormatMark\",\"clearUnicodeCaches\",\"SEAC_ANALYSIS_ENABLED\",\"FontFlags\",\"FixedPitch\",\"Serif\",\"Symbolic\",\"Script\",\"Nonsymbolic\",\"Italic\",\"AllCap\",\"SmallCap\",\"ForceBold\",\"MacStandardGlyphOrdering\",\"recoverGlyphName\",\"type1FontGlyphMapping\",\"builtInEncoding\",\"glyphNames\",\"charCodeToGlyphId\",\"glyphId\",\"isSymbolicFont\",\"isInternalFont\",\"baseEncodingName\",\"differences\",\"glyphName\",\"standardGlyphName\",\"normalizeFontName\",\"getStdFontMap\",\"Helvetica\",\"Courier\",\"ZapfDingbats\",\"ArialNarrow\",\"ArialBlack\",\"Arial\",\"ArialMT\",\"ArialUnicodeMS\",\"CourierNew\",\"CourierNewPSMT\",\"TimesNewRoman\",\"TimesNewRomanPS\",\"TimesNewRomanPSMT\",\"getFontNameToFileMap\",\"getNonStdFontMap\",\"Calibri\",\"CenturyGothic\",\"ComicSansMS\",\"Impact\",\"LucidaConsole\",\"NuptialScript\",\"SegoeUISymbol\",\"getSerifFonts\",\"Albertus\",\"Aldus\",\"Alexandria\",\"Algerian\",\"Antiqua\",\"Apex\",\"Arno\",\"Aster\",\"Aurora\",\"Baskerville\",\"Bell\",\"Bembo\",\"Benguiat\",\"Bodoni\",\"Bookman\",\"Calisto\",\"Calvert\",\"Capitals\",\"Cambria\",\"Cartier\",\"Caslon\",\"Catull\",\"Centaur\",\"Chaparral\",\"Cheltenham\",\"Clarendon\",\"Clearface\",\"Cochin\",\"Colonna\",\"Constantia\",\"Corona\",\"Ecotype\",\"Egyptienne\",\"Elephant\",\"Excelsior\",\"Fairfield\",\"Folkard\",\"Footlight\",\"FreeSerif\",\"Garamond\",\"Gentium\",\"Georgia\",\"Gloucester\",\"Granjon\",\"Heather\",\"Hercules\",\"Hiroshige\",\"Imprint\",\"Janson\",\"Joanna\",\"Korinna\",\"Lexicon\",\"LiberationSerif\",\"Literaturnaya\",\"Lucida\",\"Melior\",\"Memphis\",\"Miller\",\"Minion\",\"Modern\",\"Palatino\",\"Perpetua\",\"Plantin\",\"Playbill\",\"Renault\",\"Requiem\",\"Rockwell\",\"Roman\",\"Sabon\",\"Scala\",\"Seagull\",\"Sistina\",\"Souvenir\",\"STIX\",\"Sylfaen\",\"Times\",\"Trajan\",\"Utopia\",\"Versailles\",\"Wanted\",\"Weiss\",\"Windsor\",\"XITS\",\"getSymbolsFonts\",\"Dingbats\",\"Wingdings\",\"getGlyphMapForStandardFonts\",\"getSupplementalGlyphMapForArialBlack\",\"getSupplementalGlyphMapForCalibri\",\"getStandardFontName\",\"fontName\",\"stdFontMap\",\"isKnownFontName\",\"ToUnicodeMap\",\"cmap\",\"amend\",\"IdentityToUnicodeMap\",\"firstChar\",\"lastChar\",\"CFFFont\",\"compiler\",\"loadedName\",\"_createBuiltInEncoding\",\"getCharset\",\"getGlyphMapping\",\"cidToGidMap\",\"charsets\",\"composite\",\"invCidToGidMap\",\"defaultEncoding\",\"encodings\",\"getUint32\",\"getInt16\",\"getInt8\",\"getFloat214\",\"getSubroutineBias\",\"numSubrs\",\"parseCmap\",\"segCount\",\"idDelta\",\"idOffset\",\"ids\",\"parseCff\",\"glyphs\",\"gsubrs\",\"isCFFCIDFont\",\"parseGlyfTable\",\"glyf\",\"loca\",\"isGlyphLocationsLong\",\"itemSize\",\"itemDecode\",\"lookupCmap\",\"compileGlyf\",\"cmds\",\"font\",\"quadraticCurveTo\",\"xa\",\"ya\",\"numberOfContours\",\"arg1\",\"arg2\",\"scale01\",\"scale10\",\"subglyph\",\"endPtsOfContours\",\"instructionLength\",\"numberOfPoints\",\"points\",\"repeat\",\"startPoint\",\"endPoint\",\"contour\",\"compileCharString\",\"charStringCode\",\"bezierCurveTo\",\"stems\",\"stackClean\",\"xb\",\"yb\",\"subrCode\",\"subrsBias\",\"achar\",\"bchar\",\"glyphNameMap\",\"gsubrsBias\",\"NOOP\",\"Commands\",\"newArgs\",\"arg\",\"CompiledFont\",\"compiledGlyphs\",\"compiledCharCodeToGlyphId\",\"getPathJs\",\"fn\",\"compileEx\",\"compileGlyph\",\"compileGlyphImpl\",\"hasBuiltPath\",\"TrueTypeCompiled\",\"Type2Compiled\",\"cffInfo\",\"FontRendererFactory\",\"indexToLocFormat\",\"unitsPerEm\",\"numTables\",\"tag\",\"getMetrics\",\"getFontBasicMetrics\",\"capHeight\",\"xHeight\",\"ON_CURVE_POINT\",\"X_SHORT_VECTOR\",\"Y_SHORT_VECTOR\",\"REPEAT_FLAG\",\"X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR\",\"Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR\",\"OVERLAP_SIMPLE\",\"ARG_1_AND_2_ARE_WORDS\",\"ARGS_ARE_XY_VALUES\",\"WE_HAVE_A_SCALE\",\"MORE_COMPONENTS\",\"WE_HAVE_AN_X_AND_Y_SCALE\",\"WE_HAVE_A_TWO_BY_TWO\",\"WE_HAVE_INSTRUCTIONS\",\"GlyfTable\",\"glyfTable\",\"locaTable\",\"DataView\",\"byteOffset\",\"Glyph\",\"getSize\",\"reduce\",\"write\",\"totalSize\",\"ArrayBuffer\",\"isLocationLong\",\"setUint32\",\"setUint16\",\"locaIndex\",\"factors\",\"simple\",\"composites\",\"GlyphHeader\",\"CompositeGlyph\",\"SimpleGlyph\",\"spos\",\"factor\",\"xMiddle\",\"yMin\",\"yMax\",\"setInt16\",\"Contour\",\"xCoordinates\",\"yCoordinates\",\"contours\",\"instructions\",\"endPt\",\"numberOfPt\",\"flag\",\"getUint8\",\"allXCoordinates\",\"pointFlags\",\"endPtsOfContoursIndex\",\"lastCoordinate\",\"lastX\",\"lastY\",\"setUint8\",\"argument1\",\"argument2\",\"transf\",\"writeInt16\",\"writeInt32\",\"writeData\",\"OTF_HEADER_SIZE\",\"OTF_TABLE_ENTRY_SIZE\",\"OpenTypeFileBuilder\",\"sfnt\",\"getSearchParams\",\"entriesCount\",\"entrySize\",\"maxPower2\",\"searchRange\",\"rangeShift\",\"toArray\",\"tablesNames\",\"tableName\",\"tableOffsets\",\"paddedLength\",\"searchParams\",\"checksum\",\"quad\",\"addTable\",\"HINTING_ENABLED\",\"COMMAND_MAP\",\"hstem\",\"vstem\",\"vmoveto\",\"rlineto\",\"hlineto\",\"vlineto\",\"rrcurveto\",\"callsubr\",\"flex\",\"drop\",\"endchar\",\"rmoveto\",\"hmoveto\",\"vhcurveto\",\"hvcurveto\",\"Type1CharString\",\"lsb\",\"flexing\",\"convert\",\"encoded\",\"wx\",\"sbx\",\"executeCommand\",\"dy\",\"asb\",\"splice\",\"sby\",\"num2\",\"num1\",\"flexArgs\",\"howManyArgs\",\"command\",\"keepStack\",\"stackLength\",\"EEXEC_ENCRYPT_KEY\",\"CHAR_STRS_ENCRYPT_KEY\",\"isHexDigit\",\"decrypt\",\"discardNumber\",\"c1\",\"c2\",\"decrypted\",\"decryptAscii\",\"digit1\",\"digit2\",\"isSpecial\",\"Type1Parser\",\"encrypted\",\"isBinary\",\"readNumberArray\",\"getToken\",\"token\",\"readInt\",\"readBoolean\",\"prevChar\",\"readCharStrings\",\"lenIV\",\"extractFontProgram\",\"charstrings\",\"privateData\",\"program\",\"blueArray\",\"charString\",\"charStringObject\",\"extractFontHeader\",\"encodingArg\",\"findBlock\",\"streamBytes\",\"signature\",\"startIndex\",\"streamBytesLength\",\"getHeaderBlock\",\"suggestedLength\",\"EEXEC_SIGNATURE\",\"streamStartPos\",\"headerBytes\",\"headerBytesLength\",\"actualLength\",\"getEexecBlock\",\"eexecBytes\",\"Type1Font\",\"PFB_HEADER_SIZE\",\"headerBlockLength\",\"length1\",\"eexecBlockLength\",\"length2\",\"pfbHeader\",\"pfbHeaderPresent\",\"headerBlock\",\"headerBlockParser\",\"eexecBlock\",\"eexecBlockParser\",\"type2Charstrings\",\"getType2Charstrings\",\"getType2Subrs\",\"wrap\",\"getSeacs\",\"charstringsLen\",\"seacMap\",\"type1Charstrings\",\"type1Charstring\",\"type1Subrs\",\"type2Subrs\",\"bbox\",\"charsetArray\",\"fields\",\"field\",\"subrIndex\",\"PRIVATE_USE_AREAS\",\"PDF_GLYPH_SPACE_UNITS\",\"EXPORT_DATA_PROPERTIES\",\"EXPORT_DATA_EXTRA_PROPERTIES\",\"adjustWidths\",\"glyphsWidths\",\"adjustTrueTypeToUnicode\",\"nameRecords\",\"hasIncludedToUnicodeMap\",\"hasEncoding\",\"toUnicode\",\"isWinNameRecord\",\"adjustType1ToUnicode\",\"amendFallbackToUnicode\",\"fallbackToUnicode\",\"originalCharCode\",\"fontChar\",\"accent\",\"vmetric\",\"operatorListId\",\"isSpace\",\"isInFont\",\"int16\",\"writeSignedInt16\",\"signedInt16\",\"writeUint32\",\"int32\",\"string16\",\"safeString16\",\"isTrueTypeFile\",\"isTrueTypeCollectionFile\",\"isOpenTypeFile\",\"isType1File\",\"isCFFFile\",\"getFontFileType\",\"subtype\",\"fileType\",\"fileSubtype\",\"applyStandardFontGlyphMap\",\"glyphMap\",\"buildToFontChar\",\"toFontChar\",\"isMacNameRecord\",\"language\",\"convertCidString\",\"shouldThrow\",\"adjustMapping\",\"hasGlyph\",\"newGlyphZeroId\",\"newMap\",\"toUnicodeExtraMap\",\"usedGlyphIds\",\"privateUseAreaIndex\",\"privateUseOffetStart\",\"nextAvailableFontCharCode\",\"privateUseOffetEnd\",\"isInPrivateArea\",\"fontCharCode\",\"getRanges\",\"fontGetRangesSort\",\"codeIndices\",\"createCmapTable\",\"bmpLength\",\"trailingRangesCount\",\"startCount\",\"endCount\",\"idDeltas\",\"idRangeOffsets\",\"glyphsIds\",\"contiguous\",\"startCode\",\"format314\",\"format31012\",\"header31012\",\"validateOS2Table\",\"os2\",\"selection\",\"usWinAscent\",\"createOS2Table\",\"override\",\"ulUnicodeRange1\",\"ulUnicodeRange2\",\"ulUnicodeRange3\",\"ulUnicodeRange4\",\"firstCharIndex\",\"lastCharIndex\",\"typoAscent\",\"typoDescent\",\"winAscent\",\"winDescent\",\"fixedPitch\",\"createPostTable\",\"createPostscriptName\",\"createNameTable\",\"proto\",\"stringsUnicode\",\"strBufUnicode\",\"platforms\",\"namesRecordCount\",\"nameTable\",\"strOffset\",\"strs\",\"nameRecord\",\"Font\",\"psName\",\"mimetype\",\"disableFontFace\",\"isType3Font\",\"missingFile\",\"_charsCache\",\"_glyphCache\",\"isSerifFont\",\"isSimulatedFlags\",\"baseName\",\"serifFonts\",\"namePart\",\"isMonospace\",\"systemFontInfo\",\"matches\",\"isInvalidPDFjsFont\",\"fallbackName\",\"guessFallback\",\"css\",\"lineHeight\",\"cidEncoding\",\"vmetrics\",\"defaultVMetrics\",\"fallbackToSystemFont\",\"checkAndRepair\",\"isOpenType\",\"renderer\",\"exportData\",\"extraProperties\",\"exportDataProperties\",\"nonStdFontMap\",\"isStandardFont\",\"isMappedToStandardFont\",\"fontBasicMetricsMap\",\"metrics\",\"bold\",\"italic\",\"isNarrow\",\"remeasure\",\"unicodeCharCode\",\"VALID_TABLES\",\"readTables\",\"head\",\"hhea\",\"hmtx\",\"maxp\",\"post\",\"readTableEntry\",\"previousPosition\",\"readOpenTypeHeader\",\"ttf\",\"entrySelector\",\"readTrueTypeCollectionHeader\",\"ttc\",\"ttcTag\",\"majorVersion\",\"minorVersion\",\"numFonts\",\"offsetTable\",\"dsigTag\",\"dsigLength\",\"dsigOffset\",\"readTrueTypeCollectionData\",\"fontNameParts\",\"fallbackData\",\"potentialHeader\",\"potentialTables\",\"readNameTable\",\"nameEntry\",\"readCmapTable\",\"platformId\",\"encodingId\",\"mappings\",\"hasShortCmap\",\"potentialTable\",\"canBreak\",\"useTable\",\"correctlySorted\",\"nextBytes\",\"nextPlatformId\",\"subHeaderKeys\",\"maxSubHeaderKey\",\"subHeaderKey\",\"subHeaders\",\"entryCount\",\"idRangePos\",\"segIndex\",\"offsetsCount\",\"offsetIndex\",\"rangeOffset\",\"nGroups\",\"startCharCode\",\"endCharCode\",\"glyphCode\",\"sanitizeMetrics\",\"headTable\",\"dupFirstEntry\",\"caretOffset\",\"numOfMetrics\",\"macStyle\",\"numOfSidebearings\",\"numMissing\",\"sanitizeGlyph\",\"sourceStart\",\"sourceEnd\",\"destStart\",\"hintsValid\",\"glyphProfile\",\"sizeOfInstructions\",\"contoursCount\",\"flagsCount\",\"instructionsStart\",\"instructionsLength\",\"instructionsEnd\",\"coordinatesLength\",\"xLength\",\"yLength\",\"xyLength\",\"glyphDataLength\",\"sanitizeHead\",\"locaLength\",\"numGlyphsPlusOne\",\"sanitizeGlyphLocations\",\"maxSizeOfInstructions\",\"itemEncode\",\"fontItemDecodeLong\",\"fontItemEncodeLong\",\"fontItemDecode\",\"fontItemEncode\",\"numGlyphsOut\",\"locaDataSize\",\"locaData\",\"oldGlyfData\",\"oldGlyfDataLength\",\"newGlyfData\",\"locaEntries\",\"nextOffset\",\"missingGlyphs\",\"writeOffset\",\"simpleGlyph\",\"firstEntryLength\",\"readPostScriptTable\",\"propertiesObj\",\"maxpNumGlyphs\",\"glyphNameIndexes\",\"customNames\",\"stringLength\",\"records\",\"FORMAT_0_HEADER_LENGTH\",\"numRecords\",\"stringsStart\",\"NAME_RECORD_LENGTH\",\"record\",\"TTOpsStackDeltas\",\"sanitizeTTProgram\",\"ttContext\",\"funcId\",\"lastEndf\",\"lastDeff\",\"callstack\",\"functionsCalled\",\"tooComplexToFollowFunctions\",\"inFDEF\",\"ifLevel\",\"inELSE\",\"op\",\"functionsUsed\",\"functionsStackDeltas\",\"newStackLength\",\"functionsDefined\",\"stackTop\",\"content\",\"foldTTTable\",\"checkInvalidFunctions\",\"maxFunctionDefs\",\"sanitizeTTPrograms\",\"fpgm\",\"prep\",\"cvt\",\"cvtData\",\"ttcData\",\"cffFile\",\"isTrueType\",\"isComposite\",\"scaleFactors\",\"advanceWidth\",\"maxZones\",\"glyphsInfo\",\"metricsOverride\",\"lineGap\",\"isCidToGidMapEmpty\",\"cmapTable\",\"cmapPlatformId\",\"cmapEncodingId\",\"cmapMappings\",\"forcePostTable\",\"unicodeOrCharCode\",\"mapping\",\"glyphZeroId\",\"newMapping\",\"namePrototype\",\"builder\",\"tableTag\",\"newCharCodeToGlyphId\",\"getCharCodes\",\"charCodes\",\"createCharCode\",\"baseGlyphName\",\"accentGlyphName\",\"baseGlyphId\",\"accentGlyphId\",\"accentOffset\",\"baseFontCharCode\",\"accentFontCharCode\",\"tan\",\"fontFieldsHmtx\",\"cffWidths\",\"_charToGlyph\",\"widthCode\",\"fromCodePoint\",\"charsToGlyphs\",\"chars\",\"getCharPositions\",\"positions\",\"glyphCacheValues\",\"encodeString\",\"buffers\",\"currentBuf\",\"hasCurrentBufErrors\",\"getCharCode\",\"charCodeLength\",\"ErrorFont\",\"ShadingType\",\"FUNCTION_BASED\",\"AXIAL\",\"RADIAL\",\"FREE_FORM_MESH\",\"LATTICE_FORM_MESH\",\"COONS_PATCH_MESH\",\"TENSOR_PATCH_MESH\",\"Pattern\",\"parseShading\",\"shading\",\"res\",\"RadialAxialShading\",\"MeshShading\",\"DummyShading\",\"BaseShading\",\"SMALL_NUMBER\",\"getIR\",\"shadingType\",\"coordsLen\",\"coordsArr\",\"t0\",\"t1\",\"domainArr\",\"extendStart\",\"extendEnd\",\"extendArr\",\"r1\",\"r2\",\"distance\",\"hypot\",\"fnObj\",\"createFromArray\",\"NUMBER_OF_SAMPLES\",\"step\",\"colorStops\",\"rgbColor\",\"iBase\",\"rgbBase\",\"cssColorBase\",\"iPrev\",\"rgbPrev\",\"maxSlopeR\",\"maxSlopeG\",\"maxSlopeB\",\"minSlopeR\",\"minSlopeG\",\"minSlopeB\",\"slopesExist\",\"cssColor\",\"background\",\"r0\",\"MeshStreamReader\",\"context\",\"tmpCompsBuf\",\"csNumComps\",\"colorSpace\",\"tmpCsCompsBuf\",\"colorFn\",\"hasData\",\"align\",\"readFlag\",\"bitsPerFlag\",\"readCoordinate\",\"bitsPerCoordinate\",\"yi\",\"readComponents\",\"ci\",\"bCache\",\"buildB\",\"lut\",\"t_\",\"getB\",\"clearPatternCaches\",\"MIN_SPLIT_PATCH_CHUNKS_AMOUNT\",\"MAX_SPLIT_PATCH_CHUNKS_AMOUNT\",\"TRIANGLE_DENSITY\",\"coords\",\"figures\",\"decodeContext\",\"patchMesh\",\"_decodeType4Shading\",\"verticesPerRow\",\"_decodeType5Shading\",\"_decodeType6Shading\",\"_decodeType7Shading\",\"_updateBounds\",\"_buildFigureFromPatch\",\"_packData\",\"operators\",\"ps\",\"verticesLeft\",\"coord\",\"tmp1\",\"tmp2\",\"tmp3\",\"tmp4\",\"figure\",\"figureMinX\",\"figureMinY\",\"figureMaxX\",\"figureMaxY\",\"splitXBy\",\"bounds\",\"splitYBy\",\"figureCoords\",\"figureColors\",\"cl\",\"cr\",\"c0\",\"c3\",\"bRow\",\"bCol\",\"newColor\",\"maxY\",\"coordsPacked\",\"xy\",\"colorsPacked\",\"getTilingPatternIR\",\"operatorList\",\"xstep\",\"ystep\",\"paintType\",\"tilingType\",\"CalibriBoldFactors\",\"CalibriBoldMetrics\",\"CalibriBoldItalicFactors\",\"CalibriBoldItalicMetrics\",\"CalibriItalicFactors\",\"CalibriItalicMetrics\",\"CalibriRegularFactors\",\"CalibriRegularMetrics\",\"HelveticaBoldFactors\",\"HelveticaBoldMetrics\",\"HelveticaBoldItalicFactors\",\"HelveticaBoldItalicMetrics\",\"HelveticaItalicFactors\",\"HelveticaItalicMetrics\",\"HelveticaRegularFactors\",\"HelveticaRegularMetrics\",\"LiberationSansBoldWidths\",\"LiberationSansBoldMapping\",\"LiberationSansBoldItalicWidths\",\"LiberationSansBoldItalicMapping\",\"LiberationSansItalicWidths\",\"LiberationSansItalicMapping\",\"LiberationSansRegularWidths\",\"LiberationSansRegularMapping\",\"MyriadProBoldFactors\",\"MyriadProBoldMetrics\",\"MyriadProBoldItalicFactors\",\"MyriadProBoldItalicMetrics\",\"MyriadProItalicFactors\",\"MyriadProItalicMetrics\",\"MyriadProRegularFactors\",\"MyriadProRegularMetrics\",\"SegoeuiBoldFactors\",\"SegoeuiBoldMetrics\",\"SegoeuiBoldItalicFactors\",\"SegoeuiBoldItalicMetrics\",\"SegoeuiItalicFactors\",\"SegoeuiItalicMetrics\",\"SegoeuiRegularFactors\",\"SegoeuiRegularMetrics\",\"getXFAFontMap\",\"baseWidths\",\"baseMapping\",\"getXfaFontName\",\"fontMap\",\"getXfaFontWidths\",\"rescaledBaseWidths\",\"currentArray\",\"newWidths\",\"charUnicode\",\"unicode1\",\"unicode2\",\"getXfaFontDict\",\"descriptor\",\"systemInfo\",\"PostScriptParser\",\"nextToken\",\"accept\",\"expect\",\"PostScriptTokenTypes\",\"LBRACE\",\"parseBlock\",\"RBRACE\",\"NUMBER\",\"OPERATOR\",\"parseCondition\",\"conditionLocation\",\"IF\",\"jumpLocation\",\"endOfTrue\",\"IFELSE\",\"PostScriptToken\",\"opCache\",\"getOperator\",\"PostScriptLexer\",\"BaseLocalCache\",\"_onlyRefs\",\"onlyRefs\",\"_nameRefMap\",\"_imageMap\",\"_imageCache\",\"LocalImageCache\",\"LocalColorSpaceCache\",\"LocalFunctionCache\",\"LocalGStateCache\",\"LocalTilingPatternCache\",\"RegionalImageCache\",\"GlobalImageCache\",\"NUM_PAGES_THRESHOLD\",\"MIN_IMAGES_TO_CACHE\",\"MAX_BYTE_SIZE\",\"decodeFailedSet\",\"_refCache\",\"byteSize\",\"#byteSize\",\"cacheLimitReached\",\"#cacheLimitReached\",\"shouldCache\",\"pageIndexSet\",\"addDecodeFailed\",\"hasDecodeFailed\",\"addByteSize\",\"setData\",\"onlyData\",\"PDFFunctionFactory\",\"cachedFunction\",\"parsedFunction\",\"PDFFunction\",\"parseArray\",\"fnRef\",\"localFunction\",\"_localFunctionCache\",\"toNumberArray\",\"getSampleArray\",\"outputSize\",\"bps\",\"sampleMul\",\"strBytes\",\"strIdx\",\"typeNum\",\"constructSampled\",\"constructInterpolated\",\"constructStiched\",\"constructPostScript\",\"fnArray\",\"toMultiArray\",\"interpolate\",\"xmin\",\"xmax\",\"ymin\",\"ymax\",\"domain\",\"inputSize\",\"encode\",\"samples\",\"constructSampledFn\",\"cubeVertices\",\"cubeN\",\"cubeVertex\",\"domain_2i\",\"domain_2i_1\",\"size_i\",\"e0\",\"n0\",\"n1\",\"rj\",\"constructInterpolatedFn\",\"fns\",\"constructStichedFn\",\"constructStichedFromIRClip\",\"dmin\",\"dmax\",\"rmin\",\"rmax\",\"PostScriptCompiler\",\"numOutputs\",\"numInputs\",\"evaluator\",\"PostScriptEvaluator\",\"MAX_CACHE_SIZE\",\"cache_available\",\"constructPostScriptFn\",\"cachedValue\",\"execute\",\"stackIndex\",\"bound\",\"isPDFFunction\",\"fnDict\",\"PostScriptStack\",\"MAX_STACK_SIZE\",\"initialStack\",\"copy\",\"roll\",\"counter\",\"operator\",\"atan2\",\"cos\",\"log10\",\"sin\",\"AstNode\",\"visit\",\"AstArgument\",\"visitArgument\",\"AstLiteral\",\"visitLiteral\",\"AstBinaryOperation\",\"visitBinaryOperation\",\"AstMin\",\"visitMin\",\"AstVariable\",\"visitVariable\",\"AstVariableDefinition\",\"variable\",\"visitVariableDefinition\",\"ExpressionBuilderVisitor\",\"parts\",\"literal\",\"operation\",\"definition\",\"buildAddOperation\",\"buildMulOperation\",\"buildSubOperation\",\"buildMinOperation\",\"lastRegister\",\"ast1\",\"ast2\",\"tmpVar\",\"instruction\",\"statementBuilder\",\"expr\",\"baseTypes\",\"arabicTypes\",\"isOdd\",\"isEven\",\"findUnequal\",\"setValues\",\"reverseValues\",\"createBidiText\",\"isLTR\",\"dir\",\"bidi\",\"startLevel\",\"strLength\",\"numBidi\",\"charType\",\"levels\",\"sor\",\"eor\",\"lastType\",\"before\",\"after\",\"highestLevel\",\"lowestOddLevel\",\"NORMAL\",\"style\",\"BOLD\",\"ITALIC\",\"BOLDITALIC\",\"substitutionMap\",\"local\",\"ultimate\",\"alias\",\"fontAliases\",\"getStyleToAppend\",\"getFamilyName\",\"keywords\",\"tok\",\"generateFont\",\"localFontPath\",\"useFallback\",\"usePath\",\"append\",\"extra\",\"substitution\",\"aliasAppend\",\"fallbackInfo\",\"fallbackUltimate\",\"getFontSubstitution\",\"systemFontCache\",\"idFactory\",\"baseFontName\",\"standardFontName\",\"substitutionInfo\",\"subst\",\"mustAddBaseFont\",\"getDocId\",\"createFontId\",\"MIN_IMAGE_DIM\",\"MAX_IMAGE_DIM\",\"MAX_ERROR\",\"ImageResizer\",\"imgData\",\"isMask\",\"_imgData\",\"_isMask\",\"needsToBeResized\",\"_goodSquareLength\",\"MAX_DIM\",\"area\",\"_hasMaxArea\",\"MAX_AREA\",\"_areGoodDims\",\"_guessMax\",\"maxArea\",\"setMaxArea\",\"canvas\",\"ctx\",\"getContext\",\"fillRect\",\"opacity\",\"getImageData\",\"tolerance\",\"defaultHeight\",\"middle\",\"createImage\",\"_createImage\",\"_encodeBMP\",\"blob\",\"Blob\",\"bitmapPromise\",\"createImageBitmap\",\"minFactor\",\"firstFactor\",\"steps\",\"newWidth\",\"newHeight\",\"prevWidth\",\"prevHeight\",\"drawImage\",\"transferToImageBitmap\",\"bitPerPixel\",\"colorTable\",\"maskTable\",\"compression\",\"rowLen\",\"newData\",\"extraLen\",\"view\",\"headerLength\",\"fileLength\",\"bmpData\",\"setInt32\",\"SEED\",\"MASK_HIGH\",\"MASK_LOW\",\"MurmurHash3_64\",\"seed\",\"update\",\"isView\",\"blockCounts\",\"tailLength\",\"dataUint32\",\"k1\",\"k2\",\"C1\",\"C2\",\"C1_LOW\",\"C2_LOW\",\"hexdigest\",\"addState\",\"parentState\",\"pattern\",\"checkFn\",\"iterateFn\",\"processFn\",\"InitialState\",\"iterateInlineImageGroup\",\"iFirstSave\",\"iCurr\",\"foundInlineImageGroup\",\"MIN_IMAGES_IN_INLINE_IMAGES_BLOCK\",\"MAX_IMAGES_IN_INLINE_IMAGES_BLOCK\",\"MAX_WIDTH\",\"IMAGE_PADDING\",\"argsArray\",\"iFirstTransform\",\"iFirstPIIXO\",\"maxLineHeight\",\"currentX\",\"currentY\",\"img\",\"imgWidth\",\"imgHeight\",\"imgRowSize\",\"putImageData\",\"ImageData\",\"iterateImageMaskGroup\",\"foundImageMaskGroup\",\"MIN_IMAGES_IN_MASKS_BLOCK\",\"MAX_IMAGES_IN_MASKS_BLOCK\",\"MAX_SAME_IMAGES_IN_MASKS_BLOCK\",\"iFirstPIMXO\",\"isSameImage\",\"iTransform\",\"transformArgs\",\"firstPIMXOArg0\",\"firstTransformArg0\",\"firstTransformArg1\",\"firstTransformArg2\",\"firstTransformArg3\",\"iPIMXO\",\"images\",\"maskParams\",\"iterateImageGroup\",\"iFirstPIXO\",\"firstPIXOArg0\",\"MIN_IMAGES_IN_BLOCK\",\"MAX_IMAGES_IN_BLOCK\",\"iterateShowTextGroup\",\"iFirstSetFont\",\"firstSetFontArg0\",\"firstSetFontArg1\",\"MIN_CHARS_IN_BLOCK\",\"MAX_CHARS_IN_BLOCK\",\"iFirstBeginText\",\"iFirstSetTextMatrix\",\"iFirstShowText\",\"iFirstEndText\",\"iFirst\",\"iEndText\",\"NullOptimizer\",\"queue\",\"_optimize\",\"flush\",\"QueueOptimizer\",\"lastProcessed\",\"iterate\",\"OperatorList\",\"CHUNK_SIZE\",\"CHUNK_SIZE_ABOUT\",\"intent\",\"streamSink\",\"_streamSink\",\"optimizer\",\"dependencies\",\"_totalLength\",\"_resolved\",\"ready\",\"totalLength\",\"addOp\",\"addImageOps\",\"optionalContent\",\"addDependency\",\"addDependencies\",\"addOpList\",\"opList\",\"_transfers\",\"transfers\",\"cached\",\"separateAnnots\",\"enqueue\",\"decodeAndClamp\",\"addend\",\"coefficient\",\"resizeImageMask\",\"PDFImage\",\"image\",\"isInline\",\"smask\",\"jpxDecode\",\"imageMask\",\"matte\",\"needsDecode\",\"decodeCoefficients\",\"decodeAddends\",\"isIndexed\",\"maskDict\",\"buildImage\",\"smaskData\",\"maskData\",\"createRawMask\",\"imgArray\",\"imageIsFromDecodeStream\",\"computedLength\",\"haveFullData\",\"createMask\",\"isSingleOpaquePixel\",\"createImageData\",\"decodeBuffer\",\"getComponents\",\"bufferPos\",\"rowComps\",\"loop1End\",\"loop2End\",\"remainingBits\",\"fillOpacity\",\"rgbaBuf\",\"alphaBuf\",\"sw\",\"sh\",\"fillGrayBuffer\",\"imageOffset\",\"maskOffset\",\"undoPreblend\",\"matteRgb\",\"matteR\",\"matteG\",\"matteB\",\"mustBeResized\",\"getImageBytes\",\"createBitmap\",\"imageLength\",\"isHandled\",\"rgba\",\"internal\",\"maybeUndoPreblend\",\"canvasImgData\",\"imageBytes\",\"DefaultPartialEvaluatorOptions\",\"freeze\",\"maxImageSize\",\"ignoreErrors\",\"canvasMaxAreaInBytes\",\"fontExtraProperties\",\"useSystemFonts\",\"cMapUrl\",\"standardFontDataUrl\",\"PatternType\",\"TILING\",\"SHADING\",\"TEXT_CHUNK_BATCH_SIZE\",\"deferred\",\"normalizeBlendMode\",\"parsingArray\",\"maybeBM\",\"incrementCachedImageMaskCount\",\"TimeSlotManager\",\"TIME_SLOT_DURATION_MS\",\"CHECK_TIME_EVERY\",\"checked\",\"endTime\",\"now\",\"PartialEvaluator\",\"handler\",\"fontCache\",\"builtInCMapCache\",\"standardFontDataCache\",\"globalImageCache\",\"type3FontRefs\",\"_regionalImageCache\",\"_fetchBuiltInCMapBound\",\"_pdfFunctionFactory\",\"parsingType3Font\",\"newOptions\",\"newEvaluator\",\"hasBlendModes\",\"nonBlendModesSet\",\"nodes\",\"graphicStates\",\"graphicState\",\"bm\",\"xObjects\",\"xObject\",\"xResources\",\"ok\",\"statusText\",\"sendWithPromise\",\"fetchStandardFontData\",\"standardFontNameToFileName\",\"buildFormXObject\",\"xobj\",\"task\",\"initialState\",\"groupOptions\",\"parseMarkedContentProps\",\"group\",\"isolated\",\"knockout\",\"groupSubtype\",\"parseColorSpace\",\"backdrop\",\"getOperatorList\",\"_sendImgData\",\"cacheGlobally\",\"buildPaintImageXObject\",\"localImageCache\",\"imageRef\",\"bitStrideLength\",\"cacheData\",\"createObjId\",\"dataLen\",\"SMALL_IMAGE_DIMENSIONS\",\"imageObj\",\"localLength\",\"handleSMask\",\"stateManager\",\"smaskContent\",\"smaskOptions\",\"transferObj\",\"transferFn\",\"transferMap\",\"handleTransferFunction\",\"tr\",\"transferArray\",\"transferMaps\",\"numFns\",\"numEffectfulFns\",\"handleTilingType\",\"patternDict\",\"localTilingPatternCache\",\"tilingOpList\",\"patternResources\",\"operatorListIR\",\"tilingPatternIR\",\"handleSetFont\",\"fontArgs\",\"fontRef\",\"fallbackFontDict\",\"translated\",\"loadFont\",\"loadType3Data\",\"type3Dependencies\",\"TranslatedFont\",\"evaluatorOptions\",\"handleText\",\"isAddToPathSet\",\"textRenderingMode\",\"fillColorSpace\",\"buildFontPaths\",\"ensureStateFont\",\"gState\",\"localGStateCache\",\"gStateRef\",\"isSimpleGState\",\"gStateObj\",\"errorFont\",\"fontRes\",\"preEvaluatedFont\",\"preEvaluateFont\",\"hash\",\"fontRefIsRef\",\"fontID\",\"aliasFontRef\",\"translateFont\",\"translatedFont\",\"buildPath\",\"parsingText\",\"lastIndex\",\"Infinity\",\"opArgs\",\"localShadingPatternCache\",\"patternIR\",\"handleColorN\",\"patternName\",\"rawPattern\",\"localTilingPattern\",\"_parseVisibilityExpression\",\"nestingCounter\",\"currentResult\",\"MAX_NESTING\",\"object\",\"nestedResult\",\"contentProperties\",\"optionalContentType\",\"expression\",\"optionalContentGroups\",\"groupIds\",\"ocg\",\"policy\",\"EvalState\",\"xobjs\",\"StateManager\",\"preprocessor\",\"EvaluatorPreprocessor\",\"timeSlotManager\",\"closePendingRestoreOPS\",\"argument\",\"savedStatesDepth\",\"promiseBody\",\"all\",\"ensureNotTerminated\",\"stop\",\"isValidName\",\"localImage\",\"resolveXObject\",\"rejectXObject\",\"globalImage\",\"fontSize\",\"combinedGlyphs\",\"arrItem\",\"strokeColorSpace\",\"shadingRes\",\"patternId\",\"localGStateObj\",\"resolveGState\",\"rejectGState\",\"extGState\",\"getTextContent\",\"includeMarkedContent\",\"sink\",\"seenStyles\",\"viewBox\",\"markedContentData\",\"disableNormalization\",\"keepWhiteSpace\",\"TextState\",\"textContent\",\"styles\",\"textContentItem\",\"initialized\",\"totalHeight\",\"prevTransform\",\"textAdvanceScale\",\"spaceInFlowMin\",\"spaceInFlowMax\",\"trackingSpaceMin\",\"negativeSpaceMax\",\"notASpace\",\"hasEOL\",\"twoLastChars\",\"twoLastCharsPos\",\"saveLastChar\",\"nextPos\",\"shouldAddWhitepsace\",\"resetLastChars\",\"TRACKING_SPACE_FACTOR\",\"NOT_A_SPACE_FACTOR\",\"NEGATIVE_SPACE_FACTOR\",\"SPACE_IN_FLOW_MIN_FACTOR\",\"SPACE_IN_FLOW_MAX_FACTOR\",\"VERTICAL_SHIFT_RATIO\",\"showSpacedTextBuffer\",\"emptyXObjectCache\",\"emptyGStateCache\",\"textState\",\"pushWhitespace\",\"getCurrentTextTransform\",\"tsm\",\"textHScale\",\"textRise\",\"isCharBBox\",\"glyphHeight\",\"ctm\",\"textMatrix\",\"ensureTextContentItem\",\"fontSubstitution\",\"fontSubstitutionLoadedName\",\"trm\",\"scaleLineX\",\"textLineMatrix\",\"scaleCtmX\",\"updateAdvanceScale\",\"scaleFactor\",\"runBidiTransform\",\"textChunk\",\"text\",\"bidiResult\",\"applyInverseRotation\",\"compareWithLastPosition\",\"glyphWidth\",\"currentTransform\",\"posX\",\"posY\",\"lastPosX\",\"lastPosY\",\"rotate\",\"advanceY\",\"advanceX\",\"textOrientation\",\"appendEOL\",\"flushTextContentItem\",\"addFakeSpaces\",\"buildTextContentItem\",\"extraSpacing\",\"charSpacing\",\"translateTextMatrix\",\"scaledDim\",\"wordSpacing\",\"glyphUnicode\",\"enqueueChunk\",\"batch\",\"previousState\",\"fontNameArg\",\"fontSizeArg\",\"leading\",\"translateTextLineMatrix\",\"carriageReturn\",\"setTextLineMatrix\",\"spaceFactor\",\"elements\",\"currentState\",\"xObjStateManager\",\"sinkWrapper\",\"enqueueInvoked\",\"desiredSize\",\"gStateFont\",\"mcid\",\"getPageObjId\",\"extractDataStructures\",\"cidToGidBytes\",\"toUnicodePromise\",\"readToUnicode\",\"cidSystemInfo\",\"registry\",\"ordering\",\"supplement\",\"diffEncoding\",\"nonEmbeddedFont\",\"isSymbolsFontName\",\"isNonsymbolicFont\",\"builtToUnicode\",\"buildToUnicode\",\"readCidToGidMap\",\"_simpleFontToUnicode\",\"forceGlyphs\",\"codeStr\",\"ucs2CMapName\",\"ucs2CMap\",\"ucs2\",\"cmapObj\",\"glyphsData\",\"glyphID\",\"extractWidths\",\"glyphsVMetrics\",\"dw\",\"dw2\",\"missingWidth\",\"getBaseFontMetrics\",\"buildCharCodeToWidth\",\"firstWidth\",\"fontNameWoStyle\",\"monospace\",\"lookupName\",\"Metrics\",\"glyphWidths\",\"widthsByGlyphName\",\"baseDict\",\"df\",\"diffLength\",\"diffBuf\",\"diffEntry\",\"uint8array\",\"widthsBuf\",\"compositeWidths\",\"subWidthsBuf\",\"newProperties\",\"baseFont\",\"fontNameStr\",\"baseFontStr\",\"fontFile\",\"length3\",\"glyphScaleFactors\",\"subtypeEntry\",\"_evaluatorOptions\",\"type3Loaded\",\"sent\",\"type3Evaluator\",\"loadCharProcsPromise\",\"charProcs\",\"fontResources\",\"charProcOperatorList\",\"fontBBoxSize\",\"glyphStream\",\"_removeType3ColorOperators\",\"dummyOperatorList\",\"_bbox\",\"charBBox\",\"charBBoxSize\",\"gStateKey\",\"stateStack\",\"old\",\"opMap\",\"ri\",\"gs\",\"cm\",\"BT\",\"ET\",\"Tc\",\"Tw\",\"Tz\",\"TL\",\"Tf\",\"Tr\",\"Ts\",\"Td\",\"TD\",\"Tm\",\"Tj\",\"TJ\",\"d0\",\"d1\",\"CS\",\"SC\",\"SCN\",\"sc\",\"scn\",\"RG\",\"rg\",\"BI\",\"ID\",\"EI\",\"Do\",\"MP\",\"BMC\",\"BDC\",\"EMC\",\"BX\",\"EX\",\"BM\",\"BD\",\"true\",\"fa\",\"fal\",\"fals\",\"false\",\"nul\",\"null\",\"MAX_INVALID_PATH_OPS\",\"nonProcessedArgs\",\"_isPathOp\",\"_numInvalidPathOPS\",\"opSpec\",\"argsLength\",\"preprocessCommand\",\"DefaultAppearanceEvaluator\",\"fontColor\",\"parseDefaultAppearance\",\"AppearanceStreamEvaluator\",\"breakLoop\",\"_localColorSpaceCache\",\"parseAppearanceStream\",\"getPdfColor\",\"isFill\",\"createDefaultAppearance\",\"FakeUnicodeFont\",\"ctxMeasure\",\"_fontNameId\",\"fontDescriptorRef\",\"_fontDescriptorRef\",\"fontDescriptor\",\"getNewPersistentRef\",\"descendantFontRef\",\"descendantFont\",\"currentWidths\",\"baseFontRef\",\"_createContext\",\"createFontResources\",\"measureText\",\"getFirstPositionInfo\",\"lineDescent\",\"createAppearance\",\"bgColor\",\"strokeAlpha\",\"lineWidth\",\"hscale\",\"vscale\",\"maxHeight\",\"fscale\",\"newFontSize\",\"vShift\",\"appearance\",\"appearanceStreamDict\",\"ap\",\"NameOrNumberTree\",\"root\",\"_type\",\"getAll\",\"kids\",\"kid\",\"kidsOrEntries\",\"loopCount\",\"MAX_LEVELS\",\"limits\",\"currentKey\",\"NameTree\",\"NumberTree\",\"clearGlobalCaches\",\"pickPlatformItem\",\"stripPath\",\"FileSpec\",\"contentAvailable\",\"skipContent\",\"fs\",\"_contentRef\",\"fileObj\",\"description\",\"desc\",\"serializable\",\"rawFilename\",\"XMLParserErrorCode\",\"NoError\",\"EndOfDocument\",\"UnterminatedCdat\",\"UnterminatedXmlDeclaration\",\"UnterminatedDoctypeDeclaration\",\"UnterminatedComment\",\"MalformedElement\",\"OutOfMemory\",\"UnterminatedAttributeValue\",\"UnterminatedElement\",\"ElementNeverBegun\",\"isWhitespaceString\",\"XMLParserBase\",\"_resolveEntities\",\"onResolveEntity\",\"_parseContent\",\"attributes\",\"skipWs\",\"attrName\",\"attrValue\",\"attrEndChar\",\"attrEndIndex\",\"parsed\",\"_parseProcessingInstruction\",\"attrStart\",\"parseXml\",\"ch2\",\"onEndElement\",\"onPi\",\"onComment\",\"onCdata\",\"q2\",\"complexDoctype\",\"doctypeContent\",\"onDoctype\",\"isClosed\",\"onBeginElement\",\"onText\",\"SimpleDOMNode\",\"nodeName\",\"nodeValue\",\"firstChild\",\"childNodes\",\"nextSibling\",\"parentNode\",\"child\",\"hasChildNodes\",\"searchNode\",\"paths\",\"siblingPos\",\"dump\",\"attribute\",\"SimpleXMLParser\",\"hasAttributes\",\"lowerCaseName\",\"_currentFragment\",\"_stack\",\"_errorCode\",\"_hasAttributes\",\"_lowerCaseName\",\"parseFromString\",\"documentElement\",\"lastElement\",\"childNode\",\"MetadataParser\",\"_repair\",\"xmlDocument\",\"_metadataMap\",\"_data\",\"d2\",\"d3\",\"charBuf\",\"_getSequence\",\"_parseArray\",\"seqNode\",\"trim\",\"rdf\",\"parsedData\",\"rawData\",\"DecryptStream\",\"nextChunk\",\"hasMoreData\",\"ARCFourCipher\",\"keyLength\",\"encryptBlock\",\"decryptBlock\",\"encrypt\",\"calculateMD5\",\"calculateMD5Closure\",\"h0\",\"h3\",\"padded\",\"rotateArg\",\"Word64\",\"highInteger\",\"lowInteger\",\"and\",\"word\",\"xor\",\"or\",\"shiftRight\",\"places\",\"shiftLeft\",\"rotateRight\",\"not\",\"lowAdd\",\"highAdd\",\"copyTo\",\"calculateSHA256\",\"calculateSHA256Closure\",\"rotr\",\"maj\",\"sigmaPrime\",\"littleSigma\",\"littleSigmaPrime\",\"h4\",\"h5\",\"h6\",\"h7\",\"calculateSHA512\",\"calculateSHA512Closure\",\"mode384\",\"calculateSHA384\",\"NullCipher\",\"AESBaseCipher\",\"_s\",\"_inv_s\",\"_mix\",\"_mixCol\",\"bufferPosition\",\"_expandKey\",\"cipherKey\",\"_decrypt\",\"_keySize\",\"_cyclesOfRepetition\",\"s0\",\"_encrypt\",\"_decryptBlock2\",\"finalize\",\"sourceLength\",\"iv\",\"plain\",\"_key\",\"lastBlock\",\"psLen\",\"cipher\",\"AES128Cipher\",\"_rcon\",\"rcon\",\"t3\",\"t4\",\"AES256Cipher\",\"PDF17\",\"checkOwnerPassword\",\"password\",\"ownerValidationSalt\",\"userBytes\",\"ownerPassword\",\"hashData\",\"checkUserPassword\",\"userValidationSalt\",\"userPassword\",\"getOwnerKey\",\"ownerKeySalt\",\"ownerEncryption\",\"getUserKey\",\"userKeySalt\",\"userEncryption\",\"PDF20\",\"_hash\",\"combinedLength\",\"combinedArray\",\"remainder\",\"CipherTransform\",\"stringCipherConstructor\",\"streamCipherConstructor\",\"StringCipherConstructor\",\"StreamCipherConstructor\",\"cipherTransformDecryptStream\",\"encryptString\",\"strLen\",\"pad\",\"CipherTransformFactory\",\"defaultPasswordBytes\",\"createEncryptionKey20\",\"#createEncryptionKey20\",\"revision\",\"uBytes\",\"perms\",\"passwordLength\",\"pdfAlgorithm\",\"prepareKeyData\",\"#prepareKeyData\",\"fileId\",\"encryptMetadata\",\"hashDataSize\",\"keyLengthInBytes\",\"encryptionKey\",\"checkData\",\"derivedKey\",\"decodeUserPassword\",\"#decodeUserPassword\",\"buildObjectKey\",\"#buildObjectKey\",\"isAes\",\"buildCipherConstructor\",\"#buildCipherConstructor\",\"cf\",\"cryptFilter\",\"cfm\",\"algorithm\",\"cfDict\",\"streamCryptoName\",\"handlerDict\",\"ownerBytes\",\"fileIdBytes\",\"passwordBytes\",\"decodedPassword\",\"stmf\",\"strf\",\"eff\",\"createCipherTransform\",\"cipherConstructor\",\"writeObject\",\"writeDict\",\"writeStream\",\"writeArray\",\"writeValue\",\"fetchIfRefAsync\",\"isFilterZeroFlateDecode\",\"MIN_LENGTH_FOR_COMPRESSING\",\"CompressionStream\",\"writer\",\"getWriter\",\"close\",\"Response\",\"readable\",\"newFilter\",\"newParams\",\"writeInt\",\"writeString\",\"computeMD5\",\"filesize\",\"xrefInfo\",\"time\",\"md5Buffer\",\"md5BufferLen\",\"writeXFADataForAcroform\",\"newRefs\",\"xml\",\"xfa\",\"nodePath\",\"updateAcroform\",\"acroForm\",\"acroFormRef\",\"hasXfa\",\"hasXfaDatasetsEntry\",\"xfaDatasetsRef\",\"needAppearances\",\"newXfa\",\"updateXFA\",\"xfaData\",\"datasets\",\"getXRefTable\",\"baseOffset\",\"indexes\",\"getIndexes\",\"indexesPosition\",\"computeIDs\",\"getXRefStreamTable\",\"xrefTableData\",\"maxOffset\",\"maxGen\",\"maxGenSize\",\"sizes\",\"structSize\",\"objOffset\",\"newRef\",\"fileIds\",\"md5\",\"getTrailerDict\",\"useXrefStream\",\"startXRef\",\"refForXrefTable\",\"rootRef\",\"infoRef\",\"encryptRef\",\"incrementalUpdate\",\"originalData\",\"MAX_DEPTH\",\"StructElementType\",\"PAGE_CONTENT\",\"STREAM_CONTENT\",\"OBJECT\",\"ANNOTATION\",\"ELEMENT\",\"StructTreeRoot\",\"rootDict\",\"roleMap\",\"structParentIds\",\"init\",\"readRoleMap\",\"addIdToPage\",\"#addIdToPage\",\"pageRef\",\"addAnnotationIdToPage\",\"roleMapDict\",\"canCreateStructureTree\",\"catalogRef\",\"pdfManager\",\"nextKey\",\"hasNothingToUpdate\",\"getPage\",\"accessibilityData\",\"parentTreeId\",\"createStructureTree\",\"catalog\",\"cloneDict\",\"structTreeRootRef\",\"getNewTemporaryRef\",\"structTreeRoot\",\"parentTreeRef\",\"parentTree\",\"nums\",\"writeKids\",\"canUpdateStructTree\",\"numberTree\",\"pageDict\",\"collectParents\",\"structTreeParent\",\"updateStructureTree\",\"numsRef\",\"newNextkey\",\"#writeKids\",\"objr\",\"isPageRef\",\"title\",\"expanded\",\"actualText\",\"tagRef\",\"tagDict\",\"updateParentTag\",\"newTagRef\",\"fallbackKids\",\"objDict\",\"#collectParents\",\"idToElements\",\"structTreeParentId\",\"elems\",\"parentArray\",\"updateElement\",\"pageKid\",\"kidRef\",\"parentRef\",\"#updateParentTag\",\"cachedParentDict\",\"parentKidsRaw\",\"cachedParentKids\",\"parentKidsRef\",\"StructElementNode\",\"parseKids\",\"role\",\"nameObj\",\"pageObjId\",\"objRef\",\"parseKid\",\"StructElement\",\"kidDict\",\"refObjId\",\"StructTreePage\",\"addNode\",\"elemId\",\"addTopLevelNode\",\"nodeToSerializable\",\"kidElement\",\"isValidExplicitDest\",\"page\",\"zoom\",\"allowNull\",\"fetchDest\",\"fetchRemoteDest\",\"JSON\",\"stringify\",\"Catalog\",\"_catDict\",\"getCatalogObj\",\"toplevelPagesDict\",\"_actualNumPages\",\"pageKidsCountCache\",\"pageIndexCache\",\"needsRendering\",\"collection\",\"metadata\",\"streamRef\",\"markInfo\",\"_readMarkInfo\",\"Marked\",\"UserProperties\",\"Suspects\",\"structTree\",\"_readStructTreeRoot\",\"rawObj\",\"pagesObj\",\"documentOutline\",\"_readDocumentOutline\",\"blackColor\",\"outlineDict\",\"parseDestDictionary\",\"destDict\",\"resultObj\",\"docBaseUrl\",\"docAttachments\",\"attachments\",\"outlineItem\",\"attachment\",\"unsafeUrl\",\"setOCGState\",\"permissions\",\"_readPermissions\",\"trailer\",\"optionalContentConfig\",\"config\",\"defaultConfig\",\"groupsData\",\"groupRefs\",\"groupRef\",\"readOptionalContentGroup\",\"readOptionalContentConfig\",\"#readOptionalContentGroup\",\"usage\",\"print\",\"usageObj\",\"printState\",\"viewState\",\"#readOptionalContentConfig\",\"contentGroupRefs\",\"parseOnOff\",\"refs\",\"onParsed\",\"parseOrder\",\"nestedLevels\",\"parsedOrderRefs\",\"nestedOrder\",\"parseNestedOrder\",\"hiddenGroups\",\"MAX_NESTED_LEVELS\",\"nestedName\",\"creator\",\"baseState\",\"on\",\"off\",\"setActualNumPages\",\"hasActualNumPages\",\"_pagesCount\",\"destinations\",\"_readDests\",\"dests\",\"getDestination\",\"allDest\",\"pageLabels\",\"_readPageLabels\",\"prefix\",\"currentLabel\",\"labelDict\",\"st\",\"LIMIT\",\"A_UPPER_CASE\",\"A_LOWER_CASE\",\"baseCharCode\",\"letterIndex\",\"character\",\"pageLayout\",\"pageMode\",\"viewerPreferences\",\"prefs\",\"prefValue\",\"isValid\",\"openAction\",\"nameTree\",\"xfaImages\",\"_collectJavaScript\",\"javaScript\",\"appendIfJavaScriptDict\",\"jsDict\",\"jsActions\",\"fontFallback\",\"translatedFonts\",\"manuallyTriggered\",\"getPageDict\",\"nodesToVisit\",\"visitedNodes\",\"pagesRef\",\"currentPageIndex\",\"currentNode\",\"getAllPageDicts\",\"posInKids\",\"addPageDict\",\"addPageError\",\"queueItem\",\"kidObj\",\"getPageIndex\",\"cachedPageIndex\",\"pagesBeforeRef\",\"kidPromises\",\"uri\",\"actionType\",\"actionName\",\"include\",\"resetForm\",\"urlDict\",\"remoteDest\",\"target\",\"relationship\",\"attachmentDest\",\"namedAction\",\"preserveRB\",\"stateArr\",\"jsAction\",\"jsURL\",\"mayHaveChildren\",\"addChildren\",\"rawValue\",\"ObjectLoader\",\"refSet\",\"load\",\"_walk\",\"nodesToRevisit\",\"pendingRequests\",\"foundMissingData\",\"$acceptWhitespace\",\"$addHTML\",\"$appendChild\",\"$childrenToHTML\",\"$clean\",\"$cleanPage\",\"$cleanup\",\"$clone\",\"$consumed\",\"$content\",\"$data\",\"$dump\",\"$extra\",\"$finalize\",\"$flushHTML\",\"$getAttributeIt\",\"$getAttributes\",\"$getAvailableSpace\",\"$getChildrenByClass\",\"$getChildrenByName\",\"$getChildrenByNameIt\",\"$getDataValue\",\"$getExtra\",\"$getRealChildrenByNameIt\",\"$getChildren\",\"$getContainedChildren\",\"$getNextPage\",\"$getSubformParent\",\"$getParent\",\"$getTemplateRoot\",\"$globalData\",\"$hasSettableValue\",\"$ids\",\"$indexOf\",\"$insertAt\",\"$isCDATAXml\",\"$isBindable\",\"$isDataValue\",\"$isDescendent\",\"$isNsAgnostic\",\"$isSplittable\",\"$isThereMoreWidth\",\"$isTransparent\",\"$isUsable\",\"$lastAttribute\",\"$namespaceId\",\"$nodeName\",\"$nsAttributes\",\"$onChild\",\"$onChildCheck\",\"$onText\",\"$pushGlyphs\",\"$popPara\",\"$pushPara\",\"$removeChild\",\"$root\",\"$resolvePrototypes\",\"$searchNode\",\"$setId\",\"$setSetAttributes\",\"$setValue\",\"$tabIndex\",\"$text\",\"$toPages\",\"$toHTML\",\"$toString\",\"$toStyle\",\"$uid\",\"$buildXFAObject\",\"NamespaceIds\",\"ns\",\"connectionSet\",\"form\",\"localeSet\",\"pdf\",\"sourceSet\",\"stylesheet\",\"xdc\",\"xdp\",\"xfdf\",\"xhtml\",\"xmpmeta\",\"dimConverters\",\"pt\",\"mm\",\"in\",\"px\",\"measurementPattern\",\"stripQuotes\",\"getInteger\",\"defaultValue\",\"validate\",\"getFloat\",\"getKeyword\",\"getStringOption\",\"getMeasurement\",\"def\",\"valueStr\",\"unit\",\"conv\",\"getRatio\",\"den\",\"getRelevant\",\"excluded\",\"viewname\",\"getColor\",\"getBBox\",\"HTMLResult\",\"FAILURE\",\"EMPTY\",\"success\",\"html\",\"breakNode\",\"isBreak\",\"FontFinder\",\"pdfFonts\",\"fonts\",\"defaultFont\",\"reallyMissingFonts\",\"pdfFont\",\"addPdfFont\",\"regular\",\"bolditalic\",\"myriad\",\"missing\",\"endsWith\",\"getDefault\",\"find\",\"maybe\",\"family\",\"selectFont\",\"xfaFont\",\"typeface\",\"posture\",\"real\",\"fontFinder\",\"lineNoGap\",\"WIDTH_FACTOR\",\"FontInfo\",\"margin\",\"paraMargin\",\"top\",\"bottom\",\"right\",\"letterSpacing\",\"FontSelector\",\"defaultXfaFont\",\"defaultParaMargin\",\"defaultLineHeight\",\"pushData\",\"lastFont\",\"fontInfo\",\"popFont\",\"topFont\",\"TextMeasure\",\"fontSelector\",\"extraHeight\",\"addPara\",\"addString\",\"fontLineHeight\",\"noGap\",\"firstLineHeight\",\"fallbackWidth\",\"encodedLine\",\"compute\",\"lastSpacePos\",\"lastSpaceWidth\",\"currentLineWidth\",\"currentLineHeight\",\"isBroken\",\"isFirstLine\",\"isEOL\",\"namePattern\",\"indexPattern\",\"dot\",\"dotDot\",\"dotHash\",\"dotBracket\",\"dotParen\",\"shortcuts\",\"current\",\"host\",\"dataWindow\",\"event\",\"somCache\",\"WeakMap\",\"parseExpression\",\"dotDotAllowed\",\"noExpr\",\"cacheName\",\"formCalc\",\"container\",\"useCache\",\"isQualified\",\"isXFAObject\",\"isXFAObjectArray\",\"isFinite\",\"flat\",\"createDataNode\",\"some\",\"createNodes\",\"_applyPrototype\",\"_attributes\",\"_attributeNames\",\"_children\",\"_cloneAttribute\",\"_dataValue\",\"_defaultValue\",\"_filteredChildrenGenerator\",\"_getPrototype\",\"_getUnsetAttributes\",\"_hasChildren\",\"_max\",\"_options\",\"_parent\",\"_resolvePrototypesHelper\",\"_setAttributes\",\"_validator\",\"uid\",\"NS_DATASETS\",\"XFAObject\",\"nsId\",\"hasChildren\",\"XmlObject\",\"XFAObjectArray\",\"hasOwnProperty\",\"para\",\"paraStack\",\"clean\",\"getPrototypeOf\",\"getOwnPropertyNames\",\"dumped\",\"availableSpace\",\"failingNode\",\"generator\",\"protoAttributes\",\"allAttr\",\"setAttr\",\"ancestors\",\"use\",\"usehref\",\"somExpression\",\"protoProto\",\"newAncestors\",\"unsetAttrName\",\"protoValue\",\"$symbol\",\"getOwnPropertySymbols\",\"clonedChild\",\"allTransparent\",\"XFAAttribute\",\"dataNode\",\"tagName\",\"utf8TagName\",\"utf8Name\",\"skipConsumed\",\"hasNS\",\"$ns\",\"$name\",\"ContentObject\",\"OptionObject\",\"StringObject\",\"IntegerObject\",\"validator\",\"Option01\",\"Option10\",\"measureToString\",\"converters\",\"anchorType\",\"dimensions\",\"colSpan\",\"columnWidths\",\"currentColumn\",\"transformOrigin\",\"presence\",\"visibility\",\"display\",\"hAlign\",\"textAlign\",\"alignSelf\",\"setMinMaxDimensions\",\"minW\",\"minWidth\",\"maxW\",\"minH\",\"minHeight\",\"layoutText\",\"measure\",\"layoutNode\",\"marginH\",\"marginV\",\"leftInset\",\"rightInset\",\"topInset\",\"bottomInset\",\"spaceAbove\",\"spaceBelow\",\"marginLeft\",\"marginRight\",\"exData\",\"contentType\",\"computeBbox\",\"fixDimensions\",\"layoutClass\",\"toStyle\",\"newStyle\",\"createWrapper\",\"wrapper\",\"class\",\"border\",\"insets\",\"insetsH\",\"insetsW\",\"hand\",\"classNames\",\"isPrintOnly\",\"fixTextIndent\",\"indent\",\"textIndent\",\"padding\",\"setAccess\",\"access\",\"relevant\",\"getCurrentPara\",\"setPara\",\"nodeStyle\",\"valueStyle\",\"flexDirection\",\"vAlign\",\"justifyContent\",\"paraStyle\",\"setFontFamily\",\"fixURL\",\"createLine\",\"flushHTML\",\"htmlFromFailing\",\"addHTML\",\"attempt\",\"numberInLine\",\"getAvailableSpace\",\"getTransformedBBox\",\"centerX\",\"centerY\",\"checkDimensions\",\"firstUnsplittable\",\"ERROR\",\"noLayoutFailure\",\"currentContentArea\",\"TEMPLATE_NS_ID\",\"SVG_NS\",\"MAX_ATTEMPTS_FOR_LRTB_LAYOUT\",\"MAX_EMPTY_PAGES\",\"DEFAULT_TAB_INDEX\",\"HEADING_PATTERN\",\"MIMES\",\"IMAGES_HEADERS\",\"getBorderDims\",\"borderExtra\",\"hasMargin\",\"_setValue\",\"templateNode\",\"Value\",\"getContainedChildren\",\"SubformSet\",\"isRequired\",\"nullTest\",\"setTabIndex\",\"traversal\",\"applyAssist\",\"assist\",\"assistTitle\",\"ariaRole\",\"ariaLevel\",\"ariaLabel\",\"speak\",\"toolTip\",\"valueToHtml\",\"setFirstUnsplittable\",\"unsetFirstUnsplittable\",\"handleBreak\",\"targetType\",\"currentPageArea\",\"PageArea\",\"startNew\",\"ContentArea\",\"pageArea\",\"nextPageArea\",\"contentAreas\",\"contentArea\",\"indexForCurrent\",\"indexForTarget\",\"handleOverflow\",\"extraNode\",\"saved\",\"savedMethod\",\"AppearanceFilter\",\"Arc\",\"circular\",\"startAngle\",\"sweepAngle\",\"edge\",\"Edge\",\"edgeStyle\",\"strokeWidth\",\"thickness\",\"xmlns\",\"overflow\",\"cx\",\"cy\",\"rx\",\"ry\",\"largeArc\",\"vectorEffect\",\"preserveAspectRatio\",\"svg\",\"Area\",\"extras\",\"draw\",\"exObject\",\"exclGroup\",\"subform\",\"subformSet\",\"xfaName\",\"Assist\",\"Barcode\",\"charEncoding\",\"dataColumnCount\",\"dataPrep\",\"dataRowCount\",\"endChar\",\"errorCorrectionLevel\",\"moduleHeight\",\"moduleWidth\",\"printCheckDigit\",\"rowColumnRatio\",\"startChar\",\"textLocation\",\"truncate\",\"upsMode\",\"wideNarrowRatio\",\"Bind\",\"picture\",\"BindItems\",\"connection\",\"labelRef\",\"valueRef\",\"Bookend\",\"leader\",\"BooleanElement\",\"Border\",\"break\",\"corner\",\"edges\",\"defaultEdge\",\"edgeStyles\",\"radius\",\"cornerStyles\",\"borderRadius\",\"borderStyle\",\"borderWidth\",\"borderColor\",\"Break\",\"afterTarget\",\"beforeTarget\",\"bookendLeader\",\"bookendTrailer\",\"overflowLeader\",\"overflowTarget\",\"overflowTrailer\",\"BreakAfter\",\"script\",\"BreakBefore\",\"Button\",\"highlight\",\"grandpa\",\"htmlButton\",\"activity\",\"Calculate\",\"Caption\",\"placement\",\"reserve\",\"savedReserve\",\"Certificate\",\"Certificates\",\"credentialServerPolicy\",\"urlPolicy\",\"encryption\",\"issuers\",\"keyUsage\",\"oids\",\"signing\",\"subjectDNs\",\"CheckButton\",\"mark\",\"shape\",\"className\",\"groupId\",\"exportedValue\",\"fieldId\",\"dataId\",\"ExclGroup\",\"xfaOn\",\"xfaOff\",\"required\",\"ChoiceList\",\"commitOn\",\"textEntry\",\"ui\",\"optionStyle\",\"displayedIndex\",\"saveIndex\",\"displayed\",\"selected\",\"hidden\",\"selectAttributes\",\"Color\",\"cSpace\",\"Comb\",\"numberOfCells\",\"Connect\",\"Corner\",\"inverted\",\"DateElement\",\"DateTime\",\"DateTimeEdit\",\"hScrollPolicy\",\"picker\",\"comb\",\"Decimal\",\"fracDigits\",\"leadDigits\",\"DefaultUi\",\"Desc\",\"boolean\",\"dateTime\",\"decimal\",\"float\",\"integer\",\"DigestMethod\",\"DigestMethods\",\"digestMethod\",\"Draw\",\"locale\",\"caption\",\"keep\",\"setProperty\",\"savedW\",\"savedH\",\"cap\",\"linecap\",\"Encoding\",\"Encodings\",\"Encrypt\",\"certificate\",\"EncryptData\",\"manifest\",\"Encryption\",\"EncryptionMethod\",\"EncryptionMethods\",\"encryptionMethod\",\"Event\",\"listen\",\"encryptData\",\"signData\",\"submit\",\"ExData\",\"maxLength\",\"rid\",\"transferEncoding\",\"ExObject\",\"archive\",\"classId\",\"codeBase\",\"codeType\",\"accessKey\",\"calculate\",\"connect\",\"_isSplittable\",\"isSplittable\",\"isLrTb\",\"maxRun\",\"Execute\",\"executeType\",\"runAt\",\"Extras\",\"Field\",\"bindItems\",\"Ui\",\"TextEdit\",\"textEdit\",\"checkButton\",\"choiceList\",\"borderDims\",\"uiW\",\"uiH\",\"tabindex\",\"aElement\",\"button\",\"imageEdit\",\"htmlValue\",\"maxChars\",\"numericEdit\",\"captionHeight\",\"inputHeight\",\"Fill\",\"linear\",\"radial\",\"solid\",\"stipple\",\"ggrandpa\",\"propName\",\"altPropName\",\"backgroundColor\",\"Rectangle\",\"addRevocationInfo\",\"appearanceFilter\",\"certificates\",\"digestMethods\",\"encryptionMethods\",\"lockDocument\",\"mdp\",\"reasons\",\"timeStamp\",\"Float\",\"baselineShift\",\"fontHorizontalScale\",\"fontVerticalScale\",\"kerningMode\",\"lineThrough\",\"lineThroughPeriod\",\"overlinePeriod\",\"underline\",\"underlinePeriod\",\"usedTypefaces\",\"backgroundClip\",\"verticalAlign\",\"fontKerning\",\"textDecoration\",\"textDecorationStyle\",\"fontStyle\",\"Format\",\"Handler\",\"Hyphenation\",\"excludeAllCaps\",\"excludeInitialCap\",\"hyphenate\",\"pushCharacterCount\",\"remainCharacterCount\",\"wordCharacterCount\",\"Image\",\"aspect\",\"objectFit\",\"createObjectURL\",\"ImageEdit\",\"Integer\",\"Issuers\",\"Items\",\"Keep\",\"intact\",\"KeyUsage\",\"crlSign\",\"dataEncipherment\",\"decipherOnly\",\"digitalSignature\",\"encipherOnly\",\"keyAgreement\",\"keyCertSign\",\"keyEncipherment\",\"nonRepudiation\",\"Line\",\"slope\",\"Linear\",\"startColor\",\"endColor\",\"LockDocument\",\"Manifest\",\"Margin\",\"Mdp\",\"signatureType\",\"Medium\",\"imagingBBox\",\"long\",\"orientation\",\"short\",\"stock\",\"trayIn\",\"trayOut\",\"Message\",\"NumericEdit\",\"Occur\",\"initial\",\"originalMin\",\"PageSet\",\"Template\",\"Oid\",\"Oids\",\"oid\",\"Overflow\",\"addLeader\",\"addTrailer\",\"blankOrNotBlank\",\"initialNumber\",\"numbered\",\"oddOrEven\",\"pagePosition\",\"medium\",\"occur\",\"numberOfUse\",\"relation\",\"duplexImposition\",\"pageSet\",\"pageSetIndex\",\"pageNumber\",\"parity\",\"Para\",\"orphans\",\"preserve\",\"radixOffset\",\"tabDefault\",\"tabStops\",\"widows\",\"hyphenation\",\"paddingLeft\",\"paddingight\",\"paddingTop\",\"paddingBottom\",\"tabSize\",\"hyphenatation\",\"PasswordEdit\",\"passwordChar\",\"Picture\",\"Proto\",\"barcode\",\"bookend\",\"breakAfter\",\"breakBefore\",\"dateTimeEdit\",\"defaultUi\",\"passwordEdit\",\"subjectDN\",\"traverse\",\"variables\",\"Radial\",\"Reason\",\"Reasons\",\"cornerStyle\",\"RefElement\",\"binding\",\"SetProperty\",\"SignData\",\"Signature\",\"Signing\",\"Solid\",\"Speak\",\"disable\",\"priority\",\"Stipple\",\"rate\",\"Subform\",\"allowMacro\",\"mergeMode\",\"restoreState\",\"scope\",\"afterBreakAfter\",\"savedNoLayoutFailure\",\"overflowExtra\",\"overflowNode\",\"SubjectDN\",\"delimiter\",\"kv\",\"SubjectDNs\",\"Submit\",\"embedPDF\",\"textEncoding\",\"xdpContent\",\"baseProfile\",\"pageAreas\",\"mainHtml\",\"breakBeforeTarget\",\"pageAreaParent\",\"targetPageArea\",\"hasSomething\",\"hasSomethingCounter\",\"htmlContentAreas\",\"Text\",\"acc\",\"allowRichText\",\"multiLine\",\"vScrollPolicy\",\"Time\",\"TimeStamp\",\"server\",\"ToolTip\",\"Traversal\",\"Traverse\",\"Validate\",\"formatTest\",\"scriptTest\",\"valueName\",\"Variables\",\"TemplateNamespace\",\"attrs\",\"createText\",\"Binder\",\"emptyMerge\",\"_isConsumeData\",\"_mergeMode\",\"_isMatchTemplate\",\"_bindElement\",\"_bindValue\",\"formNode\",\"_findDataByNameToConsume\",\"isValue\",\"global\",\"_setProperties\",\"targetNodes\",\"targetNode\",\"targetParent\",\"Reflect\",\"construct\",\"_bindItems\",\"labels\",\"labelNodes\",\"labelNode\",\"valueNodes\",\"valueNode\",\"label\",\"_bindOccurrences\",\"baseClone\",\"_createOccurrences\",\"currentNumber\",\"nodeClone\",\"_getOccurInfo\",\"_setAndBind\",\"uselessNodes\",\"dataChildren\",\"dataChild\",\"DataHandler\",\"dataset\",\"serialize\",\"storage\",\"storageEntry\",\"CONFIG_NS_ID\",\"Acrobat\",\"acrobat7\",\"autoSave\",\"common\",\"validateApprovalSignatures\",\"submitUrl\",\"Acrobat7\",\"dynamicRender\",\"ADBE_JSConsole\",\"ADBE_JSDebugger\",\"AddSilentPrint\",\"AddViewerPreferences\",\"AdjustData\",\"AdobeExtensionLevel\",\"Agent\",\"AlwaysEmbed\",\"Amd\",\"Attributes\",\"AutoSave\",\"Base\",\"BatchOutput\",\"BehaviorOverride\",\"Cache\",\"templateCache\",\"Change\",\"Common\",\"messaging\",\"suppressBanner\",\"validationMessaging\",\"versionControl\",\"Compress\",\"CompressLogicalStructure\",\"CompressObjectStream\",\"Compression\",\"compressLogicalStructure\",\"compressObjectStream\",\"Config\",\"acrobat\",\"present\",\"trace\",\"agent\",\"Conformance\",\"ContentCopy\",\"Copies\",\"Creator\",\"CurrentPage\",\"Data\",\"adjustData\",\"incrementalLoad\",\"outputXSL\",\"startNode\",\"window\",\"xsl\",\"excludeNS\",\"Debug\",\"DefaultTypeface\",\"writingScript\",\"Destination\",\"DocumentAssembly\",\"Driver\",\"DuplexOption\",\"DynamicRender\",\"Embed\",\"encryptionLevel\",\"EncryptionLevel\",\"Enforce\",\"Equate\",\"force\",\"to\",\"EquateRange\",\"_unicodeRange\",\"unicodeRange\",\"unicodeRegex\",\"Exclude\",\"ExcludeNS\",\"FlipLabel\",\"embed\",\"subsetBelow\",\"alwaysEmbed\",\"defaultTypeface\",\"neverEmbed\",\"FormFieldFilling\",\"GroupParent\",\"IfEmpty\",\"IncludeXDPContent\",\"IncrementalLoad\",\"IncrementalMerge\",\"Interactive\",\"Jog\",\"LabelPrinter\",\"batchOutput\",\"flipLabel\",\"Layout\",\"Level\",\"Linearized\",\"Locale\",\"LocaleSet\",\"Log\",\"threshold\",\"MapElement\",\"equate\",\"equateRange\",\"MediumInfo\",\"msgId\",\"severity\",\"Messaging\",\"Mode\",\"ModifyAnnots\",\"MsgId\",\"NameAttr\",\"NeverEmbed\",\"NumberOfCopies\",\"OpenAction\",\"destination\",\"Output\",\"OutputBin\",\"OutputXSL\",\"Overprint\",\"Packets\",\"PageOffset\",\"PageRange\",\"numbers\",\"Pagination\",\"PaginationOverride\",\"Part\",\"Pcl\",\"jog\",\"mediumInfo\",\"outputBin\",\"pageOffset\",\"staple\",\"Pdf\",\"adobeExtensionLevel\",\"interactive\",\"linearized\",\"pdfa\",\"producer\",\"renderPolicy\",\"scriptModel\",\"silentPrint\",\"submitFormat\",\"tagged\",\"Pdfa\",\"amd\",\"conformance\",\"includeXDPContent\",\"Permissions\",\"accessibleContent\",\"change\",\"contentCopy\",\"documentAssembly\",\"formFieldFilling\",\"modifyAnnots\",\"plaintextMetadata\",\"printHighQuality\",\"PickTrayByPDFSize\",\"PlaintextMetadata\",\"Presence\",\"Present\",\"behaviorOverride\",\"copies\",\"incrementalMerge\",\"overprint\",\"pagination\",\"paginationOverride\",\"driver\",\"labelPrinter\",\"pcl\",\"webClient\",\"zpl\",\"Print\",\"PrintHighQuality\",\"PrintScaling\",\"PrinterName\",\"Producer\",\"Ps\",\"Range\",\"Record\",\"Relevant\",\"Rename\",\"RenderPolicy\",\"RunScripts\",\"currentPage\",\"exclude\",\"runScripts\",\"ScriptModel\",\"Severity\",\"SilentPrint\",\"addSilentPrint\",\"printerName\",\"Staple\",\"StartNode\",\"StartPage\",\"SubmitFormat\",\"SubmitUrl\",\"SubsetBelow\",\"SuppressBanner\",\"Tagged\",\"startPage\",\"Threshold\",\"To\",\"TemplateCache\",\"maxEntries\",\"Trace\",\"Transform\",\"groupParent\",\"ifEmpty\",\"nameAttr\",\"rename\",\"whitespace\",\"Uri\",\"ValidateApprovalSignatures\",\"ValidationMessaging\",\"Version\",\"VersionControl\",\"outputBelow\",\"sourceAbove\",\"sourceBelow\",\"ViewerPreferences\",\"addViewerPreferences\",\"duplexOption\",\"enforce\",\"numberOfCopies\",\"pageRange\",\"pickTrayByPDFSize\",\"printScaling\",\"WebClient\",\"Whitespace\",\"Window\",\"pair\",\"Xdc\",\"Xdp\",\"packets\",\"Xsl\",\"debug\",\"Zpl\",\"ConfigNamespace\",\"compress\",\"CONNECTION_SET_NS_ID\",\"ConnectionSet\",\"wsdlConnection\",\"xmlConnection\",\"xsdConnection\",\"EffectiveInputPolicy\",\"EffectiveOutputPolicy\",\"Operation\",\"RootElement\",\"SoapAction\",\"SoapAddress\",\"WsdlAddress\",\"WsdlConnection\",\"dataDescription\",\"effectiveInputPolicy\",\"effectiveOutputPolicy\",\"soapAction\",\"soapAddress\",\"wsdlAddress\",\"XmlConnection\",\"XsdConnection\",\"rootElement\",\"ConnectionSetNamespace\",\"DATASETS_NS_ID\",\"Datasets\",\"DatasetsNamespace\",\"LOCALE_SET_NS_ID\",\"CalendarSymbols\",\"dayNames\",\"eraNames\",\"meridiemNames\",\"monthNames\",\"CurrencySymbol\",\"CurrencySymbols\",\"currencySymbol\",\"DatePattern\",\"DatePatterns\",\"datePattern\",\"DateTimeSymbols\",\"Day\",\"DayNames\",\"abbr\",\"day\",\"Era\",\"EraNames\",\"era\",\"calendarSymbols\",\"currencySymbols\",\"datePatterns\",\"dateTimeSymbols\",\"numberPatterns\",\"numberSymbols\",\"timePatterns\",\"typeFaces\",\"Meridiem\",\"MeridiemNames\",\"meridiem\",\"Month\",\"MonthNames\",\"month\",\"NumberPattern\",\"NumberPatterns\",\"numberPattern\",\"NumberSymbol\",\"NumberSymbols\",\"numberSymbol\",\"TimePattern\",\"TimePatterns\",\"timePattern\",\"TypeFace\",\"TypeFaces\",\"typeFace\",\"LocaleSetNamespace\",\"SIGNATURE_NS_ID\",\"SignatureNamespace\",\"STYLESHEET_NS_ID\",\"Stylesheet\",\"StylesheetNamespace\",\"XDP_NS_ID\",\"uuid\",\"XdpNamespace\",\"XHTML_NS_ID\",\"$richText\",\"VALID_STYLES\",\"StyleMapping\",\"original\",\"spacesRegExp\",\"crlfRegExp\",\"crlfForRichTextRegExp\",\"mapStyle\",\"styleStr\",\"richText\",\"newValue\",\"SUB_SUPER_SCRIPT_FACTOR\",\"VERTICAL_FACTOR\",\"checkStyle\",\"NoWhites\",\"XhtmlObject\",\"mustPop\",\"pushFont\",\"Body\",\"Br\",\"Html\",\"Li\",\"Ol\",\"siblings\",\"Span\",\"Sub\",\"Sup\",\"Ul\",\"XhtmlNamespace\",\"body\",\"br\",\"li\",\"ol\",\"span\",\"sub\",\"sup\",\"ul\",\"NamespaceSetUp\",\"UnknownNamespace\",\"namespaceId\",\"Root\",\"Empty\",\"Builder\",\"rootNameSpace\",\"_namespaceStack\",\"_nsAgnosticLevel\",\"_namespacePrefixes\",\"_namespaces\",\"_nextNsId\",\"_currentNamespace\",\"buildRoot\",\"build\",\"nsPrefix\",\"namespace\",\"prefixes\",\"hasNamespaceDef\",\"_searchNamespace\",\"_addNamespacePrefix\",\"dataTemplate\",\"nsAttrs\",\"xfaAttrs\",\"nsToUse\",\"_getNamespaceToUse\",\"namespaceToUse\",\"hasNamespace\",\"nsAgnostic\",\"isNsAgnostic\",\"nsName\",\"prefixStack\",\"XFAParser\",\"_builder\",\"_globalData\",\"_ids\",\"_current\",\"_whiteRegex\",\"_nbsps\",\"_richText\",\"_mkAttributes\",\"attributeObj\",\"_getNameAndPrefix\",\"attributesObj\",\"XFAFactory\",\"_createDocument\",\"binder\",\"dataHandler\",\"_createPagesHelper\",\"nextIteration\",\"_createPages\",\"dims\",\"getBoundingBox\",\"getNumPages\",\"setImages\",\"setFonts\",\"missingFonts\",\"appendFonts\",\"getPages\",\"serializeData\",\"getRichTextAsHtml\",\"rc\",\"newRoot\",\"attr\",\"AnnotationFactory\",\"createGlobals\",\"ensureCatalog\",\"ensureDoc\",\"xfaDatasets\",\"annotationGlobals\",\"collectFields\",\"_getPageIndex\",\"ensure\",\"_create\",\"parameters\",\"LinkAnnotation\",\"TextAnnotation\",\"fieldType\",\"TextWidgetAnnotation\",\"ButtonWidgetAnnotation\",\"ChoiceWidgetAnnotation\",\"SignatureWidgetAnnotation\",\"WidgetAnnotation\",\"PopupAnnotation\",\"FreeTextAnnotation\",\"LineAnnotation\",\"SquareAnnotation\",\"CircleAnnotation\",\"PolylineAnnotation\",\"PolygonAnnotation\",\"CaretAnnotation\",\"InkAnnotation\",\"HighlightAnnotation\",\"UnderlineAnnotation\",\"SquigglyAnnotation\",\"StrikeOutAnnotation\",\"StampAnnotation\",\"FileAttachmentAnnotation\",\"Annotation\",\"annotDict\",\"annotRef\",\"generateImages\",\"imagePromises\",\"bitmapId\",\"saveNewAnnotations\",\"promises\",\"annotation\",\"deleted\",\"annotationType\",\"createNewAnnotation\",\"quadPoints\",\"smaskStream\",\"smaskRef\",\"printNewAnnotations\",\"createNewPrintAnnotation\",\"getRgbColor\",\"defaultColor\",\"getPdfColorArray\",\"getQuadPoints\",\"quadPointsLists\",\"getTransformMatrix\",\"setTitle\",\"setContents\",\"setModificationDate\",\"setFlags\",\"setRectangle\",\"setColor\",\"setBorderStyle\",\"setAppearance\",\"setOptionalContent\",\"MK\",\"setBorderAndBackgroundColors\",\"setRotation\",\"_streams\",\"isLocked\",\"isContentLocked\",\"structParent\",\"annotationFlags\",\"contentsObj\",\"_contents\",\"hasAppearance\",\"modificationDate\",\"hasOwnCanvas\",\"noRotate\",\"noHTML\",\"kidIds\",\"fieldName\",\"_constructFieldName\",\"_isOffscreenCanvasSupported\",\"_fallbackFontDict\",\"_needAppearances\",\"_hasFlag\",\"_isViewable\",\"_isPrintable\",\"mustBeViewed\",\"_renderForms\",\"noView\",\"viewable\",\"mustBePrinted\",\"noPrint\",\"printable\",\"_parseStringHelper\",\"setDefaultAppearance\",\"defaultAppearance\",\"_defaultAppearance\",\"defaultAppearanceData\",\"_title\",\"contents\",\"hasFlag\",\"setLineEndings\",\"lineEndings\",\"mk\",\"AnnotationBorderStyle\",\"dictType\",\"setWidth\",\"setStyle\",\"setDashArray\",\"setHorizontalCornerRadius\",\"setVerticalCornerRadius\",\"appearanceStates\",\"normalAppearanceState\",\"oc\",\"loadResources\",\"objectLoader\",\"renderForms\",\"isUsingOwnCanvas\",\"separateForm\",\"separateCanvas\",\"appearanceDict\",\"hasTextContent\",\"extractTextContent\",\"firstPosition\",\"trimEnd\",\"textPosition\",\"_transformPoint\",\"getFieldObject\",\"strokeColor\",\"fillColor\",\"loopDict\",\"dashArray\",\"horizontalCornerRadius\",\"verticalCornerRadius\",\"forceStyle\",\"allZeros\",\"validNumber\",\"MarkupAnnotation\",\"rawIRT\",\"inReplyTo\",\"rt\",\"replyType\",\"popupRef\",\"titleObj\",\"creationDate\",\"setCreationDate\",\"_setDefaultAppearance\",\"blendMode\",\"fillAlpha\",\"pointsCallback\",\"MAX_VALUE\",\"MIN_VALUE\",\"pointsArray\",\"mX\",\"MX\",\"mY\",\"MY\",\"formDict\",\"appearanceStream\",\"gsDict\",\"stateDict\",\"annotationRef\",\"createNewAppearanceStream\",\"annotationDict\",\"apRef\",\"createNewDict\",\"newAnnotation\",\"refToReplace\",\"fieldValue\",\"_decodeFormValue\",\"defaultFieldValue\",\"_hasValueFromXFA\",\"getValue\",\"alternativeText\",\"localResources\",\"acroFormResources\",\"appearanceResources\",\"_fieldResources\",\"mergedResources\",\"fieldFlags\",\"readOnly\",\"hasFieldFlag\",\"formValue\",\"getBorderAndBackgroundAppearances\",\"_hasText\",\"_getAppearance\",\"_getMKDict\",\"amendSavedDict\",\"originalDict\",\"encoder\",\"maybeMK\",\"changes\",\"AP\",\"_getSaveFieldResources\",\"rotationMatrix\",\"isPassword\",\"formattedValue\",\"combo\",\"exportValue\",\"displayValue\",\"lineCount\",\"defaultPadding\",\"defaultHPadding\",\"_getFontData\",\"encodedLines\",\"encodingError\",\"encodedString\",\"fakeUnicodeFont\",\"newFont\",\"oldFont\",\"savedDefaultAppearance\",\"_computeFontSize\",\"defaultVPadding\",\"alignment\",\"textAlignment\",\"_getMultilineAppearance\",\"_getCombAppearance\",\"bottomPadding\",\"prevInfo\",\"renderedText\",\"_renderText\",\"appearanceData\",\"_getTextWidth\",\"numberOfLines\",\"roundWithTwoDigits\",\"textWidth\",\"cachedLines\",\"isTooBig\",\"fsize\",\"_splitLine\",\"hPadding\",\"vPadding\",\"shiftStr\",\"localFont\",\"acroFormFont\",\"subFontDict\",\"subResourcesDict\",\"maximumLength\",\"doNotScroll\",\"combWidth\",\"renderedComb\",\"lastSpacePosInStringStart\",\"lastSpacePosInStringEnd\",\"startChunk\",\"multiline\",\"charLimit\",\"editable\",\"checkedAppearance\",\"uncheckedAppearance\",\"checkBox\",\"radioButton\",\"pushButton\",\"isTooltipOnly\",\"_processCheckBox\",\"_processRadioButton\",\"_processPushButton\",\"buttonValue\",\"savedAppearance\",\"savedMatrix\",\"_saveCheckbox\",\"_saveRadioButton\",\"parentData\",\"_getDefaultCheckedAppearance\",\"FONT_RATIO\",\"xShift\",\"yShift\",\"customAppearance\",\"normalAppearance\",\"asValue\",\"yes\",\"exportValues\",\"otherYes\",\"fieldParent\",\"fieldParentValue\",\"indices\",\"hasIndices\",\"isOptionArray\",\"multiSelect\",\"numItems\",\"multipleSelection\",\"valueIndices\",\"numberOfVisibleLines\",\"firstIndex\",\"minIndex\",\"maxIndex\",\"vpadding\",\"DEFAULT_ICON_SIZE\",\"stateModel\",\"parentItem\",\"parentRect\",\"parentFlags\",\"_hasAppearance\",\"user\",\"freetext\",\"da\",\"helv\",\"lineAscent\",\"firstPoint\",\"clipBox\",\"lineCoordinates\",\"interiorColor\",\"borderAdjust\",\"controlPointsDistance\",\"xMid\",\"yMid\",\"xOffset\",\"yOffset\",\"vertices\",\"rawVertices\",\"vertex\",\"inkLists\",\"rawInkLists\",\"inkList\",\"outlines\",\"ink\",\"createNewAppearanceStreamForHighlight\",\"appearanceBuffer\",\"bezier\",\"curve\",\"outline\",\"xEnd\",\"buf32\",\"hasAlpha\",\"fillStyle\",\"jpegBufferPromise\",\"convertToBlob\",\"quality\",\"xobjectName\",\"imageName\",\"alphaBuffer\",\"stamp\",\"xobject\",\"decodeString\",\"DatasetXMLParser\",\"DatasetReader\",\"XRef\",\"firstXRefStmPos\",\"_xrefStms\",\"_cacheMap\",\"_pendingRefs\",\"_newPersistentRefNum\",\"_newTemporaryRefNum\",\"_persistentRefsCache\",\"resetNewTemporaryRef\",\"setStartXRef\",\"startXRefQueue\",\"trailerDict\",\"readXRef\",\"indexObjects\",\"processXRefTable\",\"tableState\",\"entryNum\",\"streamPos\",\"parserBuf1\",\"parserBuf2\",\"readXRefTable\",\"firstEntryNum\",\"free\",\"uncompressed\",\"processXRefStream\",\"streamParameters\",\"byteWidths\",\"streamState\",\"entryRanges\",\"readXRefStream\",\"typeFieldWidth\",\"offsetFieldWidth\",\"generationFieldWidth\",\"generation\",\"typeByte\",\"offsetByte\",\"generationByte\",\"TAB\",\"PERCENT\",\"LT\",\"readToken\",\"skipUntil\",\"skipped\",\"gEndobjRegExp\",\"gStartxrefRegExp\",\"objRegExp\",\"trailerBytes\",\"startxrefBytes\",\"xrefBytes\",\"bufferStr\",\"trailers\",\"xrefStms\",\"contentLength\",\"updateEntries\",\"xrefTagOffset\",\"xrefStm\",\"trailerDicts\",\"isEncrypted\",\"trailerError\",\"_generationFallback\",\"validPagesDict\",\"pagesDict\",\"pagesCount\",\"startXRefParsedCache\",\"lastXRefStreamPos\",\"getEntry\",\"xrefEntry\",\"fetchUncompressed\",\"fetchCompressed\",\"tableOffset\",\"DEFAULT_USER_UNIT\",\"LETTER_SIZE_MEDIABOX\",\"Page\",\"globalIdFactory\",\"xfaFactory\",\"resourcesPromise\",\"idCounters\",\"_localIdFactory\",\"_getInheritableProperty\",\"_getBoundingBox\",\"box\",\"mediaBox\",\"cropBox\",\"userUnit\",\"_onSubStreamError\",\"getContentStream\",\"replaceIdByRef\",\"#replaceIdByRef\",\"deletedAnnotations\",\"existingAnnotations\",\"partialEvaluator\",\"annotationsArray\",\"savedDict\",\"deletedRef\",\"_parsedAnnotations\",\"newRefsPromises\",\"contentStreamPromise\",\"newAnnotsByPage\",\"newAnnots\",\"newAnnotationsPromise\",\"annotationGlobalsPromise\",\"missingBitmaps\",\"annotationWithBitmaps\",\"pageListPromise\",\"contentStream\",\"transparency\",\"pageOpList\",\"newAnnotations\",\"findIndex\",\"intentAny\",\"intentDisplay\",\"intentPrint\",\"opListPromises\",\"opLists\",\"langPromise\",\"getStructTree\",\"_parseStructTree\",\"getAnnotationsData\",\"annotationsData\",\"textContentPromises\",\"isVisible\",\"annots\",\"annotationPromises\",\"sortedAnnotations\",\"popupAnnotations\",\"widgetAnnotations\",\"PDF_HEADER_SIGNATURE\",\"STARTXREF_SIGNATURE\",\"ENDOBJ_SIGNATURE\",\"FINGERPRINT_FIRST_BYTES\",\"EMPTY_FINGERPRINT\",\"backwards\",\"signatureEnd\",\"PDFDocument\",\"_pagePromises\",\"_version\",\"_globalIdFactory\",\"docId\",\"linearization\",\"startXRefLength\",\"checkHeader\",\"parseStartXRef\",\"_hasOnlyDocumentSignatures\",\"recursionDepth\",\"RECURSION_LIMIT\",\"isSignature\",\"isInvisible\",\"_xfaStreams\",\"enableXfa\",\"formInfo\",\"hasAcroForm\",\"isPureXfa\",\"htmlForXfa\",\"loadXfaImages\",\"xfaImagesDict\",\"loadXfaFonts\",\"serializeXfaData\",\"hasFields\",\"hasSignatures\",\"sigFlags\",\"hasOnlyDocumentSignatures\",\"documentInfo\",\"docInfo\",\"PDFFormatVersion\",\"Language\",\"EncryptFilterName\",\"IsLinearized\",\"IsAcroFormPresent\",\"IsXFAPresent\",\"IsCollectionPresent\",\"IsSignaturesPresent\",\"infoDict\",\"customValue\",\"Custom\",\"fingerprints\",\"hexString\",\"hex\",\"idArray\",\"hashOriginal\",\"hashModified\",\"_getLinearizationPage\",\"cachedPromise\",\"checkFirstPage\",\"checkLastPage\",\"pagesTree\",\"reasonAll\",\"collectFieldObjects\",\"#collectFieldObjects\",\"fieldRef\",\"visitedRefs\",\"partName\",\"fieldObjects\",\"allFields\",\"fieldPromises\",\"allPromises\",\"hasJSActions\",\"_parseHasJSActions\",\"catalogJsActions\",\"fieldObject\",\"calculationOrderIds\",\"calculationOrder\",\"parseDocBaseUrl\",\"BasePdfManager\",\"_docBaseUrl\",\"_docId\",\"_password\",\"pdfDocument\",\"ensureXRef\",\"requestLoadedStream\",\"sendProgressiveData\",\"updatePassword\",\"terminate\",\"LocalPdfManager\",\"_loadedStreamPromise\",\"NetworkPdfManager\",\"streamManager\",\"CallbackKind\",\"UNKNOWN\",\"DATA\",\"StreamKind\",\"CANCEL\",\"CANCEL_COMPLETE\",\"CLOSE\",\"ENQUEUE\",\"PULL\",\"PULL_COMPLETE\",\"START_COMPLETE\",\"wrapReason\",\"MessageHandler\",\"sourceName\",\"targetName\",\"comObj\",\"callbackId\",\"streamId\",\"streamSinks\",\"streamControllers\",\"callbackCapabilities\",\"actionHandler\",\"_onComObjOnMessage\",\"processStreamMessage\",\"cbSourceName\",\"cbTargetName\",\"postMessage\",\"createStreamSink\",\"addEventListener\",\"ah\",\"sendWithStream\",\"queueingStrategy\",\"ReadableStream\",\"controller\",\"startCapability\",\"startCall\",\"pullCall\",\"cancelCall\",\"pull\",\"pullCapability\",\"cancel\",\"cancelCapability\",\"#createStreamSink\",\"isCancelled\",\"lastDesiredSize\",\"sinkCapability\",\"onPull\",\"onCancel\",\"#processStreamMessage\",\"streamController\",\"deleteStreamController\",\"#deleteStreamController\",\"allSettled\",\"destroy\",\"removeEventListener\",\"PDFWorkerStream\",\"_msgHandler\",\"_contentLength\",\"_fullRequestReader\",\"_rangeRequestReaders\",\"getFullReader\",\"PDFWorkerStreamReader\",\"PDFWorkerStreamRangeReader\",\"_isRangeSupported\",\"_isStreamingSupported\",\"readableStream\",\"_reader\",\"getReader\",\"_headersReady\",\"isRangeSupported\",\"headersReady\",\"WorkerTask\",\"terminated\",\"_capability\",\"finished\",\"finish\",\"WorkerMessageHandler\",\"setup\",\"port\",\"testMessageProcessed\",\"createDocumentHandler\",\"docParams\",\"cancelXHRs\",\"WorkerTasks\",\"apiVersion\",\"workerVersion\",\"enumerableProperties\",\"workerHandlerName\",\"startWorkerTask\",\"finishWorkerTask\",\"loadDocument\",\"getPdfManager\",\"pdfManagerArgs\",\"pdfManagerCapability\",\"newPdfManager\",\"pdfStream\",\"cachedChunks\",\"fullRequest\",\"flushChunks\",\"pdfFile\",\"setupDoc\",\"onSuccess\",\"doc\",\"pdfInfo\",\"onFailure\",\"pdfManagerReady\",\"refStr\",\"globalPromises\",\"_structTreeRoot\",\"newAnnotationPromises\",\"finally\",\"newXrefInfo\",\"infoObj\",\"operatorListInfo\",\"waitOn\",\"cleanupPromise\",\"initializeFromPort\",\"isMessagePort\",\"maybePort\",\"pdfjsVersion\",\"pdfjsBuild\"],\"sourceRoot\":\"\"}\n\\ No newline at end of file\n+{\"version\":3,\"file\":\"pdf.worker.js\",\"mappings\":\"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\u002FC,eAAe,mBAAO,CAAC,IAAwB;AAC\u002FC,kBAAkB,mBAAO,CAAC,IAA4B;AACtD,4BAA4B,mBAAO,CAAC,IAAuC;AAC3E,wBAAwB,mBAAO,CAAC,IAAmC;AACnE,oBAAoB,mBAAO,CAAC,IAAqC;AACjE,kBAAkB,mBAAO,CAAC,EAA2B;AACrD,wBAAwB,mBAAO,CAAC,GAAkC;AAClE,oBAAoB,mBAAO,CAAC,IAA6B;;AAEzD;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,4DAA4D,gBAAgB;AAC5E;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,IAAI;AACJ;;;;;;;;ACpEa;AACb,WAAW,mBAAO,CAAC,IAA4B;AAC\u002FC,eAAe,mBAAO,CAAC,EAAwB;AAC\u002FC,eAAe,mBAAO,CAAC,GAAwB;AAC\u002FC,gBAAgB,mBAAO,CAAC,IAAyB;AACjD,0BAA0B,mBAAO,CAAC,IAAoC;AACtE,sBAAsB,mBAAO,CAAC,IAAgC;;AAE9D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzBa;AACb,aAAa,mBAAO,CAAC,IAA+B;AACpD,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,eAAe,mBAAO,CAAC,IAAwB;AAC\u002FC,gBAAgB,mBAAO,CAAC,IAAyB;AACjD,+BAA+B,mBAAO,CAAC,IAAuC;;AAE9E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;;;;;;;ACrBa;AACb,YAAY,mBAAO,CAAC,IAAoB;AACxC,iBAAiB,mBAAO,CAAC,IAA0B;;AAEnD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;;;;;;ACtBa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS,YAAY;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClBa;AACb;;AAEA;AACA;AACA;AACA;;;;;;;;ACNa;AACb,iBAAiB,mBAAO,CAAC,IAA0B;;AAEnD;AACA;;AAEA;;;;;;;;ACNa;AACb;AACA,0BAA0B,mBAAO,CAAC,IAA6C;AAC\u002FE,eAAe,mBAAO,CAAC,EAAwB;AAC\u002FC,6BAA6B,mBAAO,CAAC,IAAuC;AAC5E,yBAAyB,mBAAO,CAAC,IAAmC;;AAEpE;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;AC5BY;AACb,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,eAAe,mBAAO,CAAC,EAAwB;AAC\u002FC,qBAAqB,mBAAO,CAAC,IAAsC;;AAEnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClBa;AACb,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,0BAA0B,mBAAO,CAAC,IAA2C;AAC7E,4BAA4B,mBAAO,CAAC,IAAuC;;AAE3E;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;;;;;;;AChBa;AACb,kBAAkB,mBAAO,CAAC,IAAoC;;AAE9D;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;ACTa;AACb,WAAW,mBAAO,CAAC,IAAoB;AACvC,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,YAAY,mBAAO,CAAC,IAAwB;AAC5C,WAAW,mBAAO,CAAC,IAAuB;AAC1C,mBAAmB,mBAAO,CAAC,IAA6B;AACxD,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,oBAAoB,mBAAO,CAAC,GAA6B;;AAEzD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;;;;;;;;ACzBa;AACb;;AAEA;AACA;AACA;AACA;;;;;;;;ACNa;AACb,0BAA0B,mBAAO,CAAC,IAAoC;;AAEtE;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;ACTa;AACb,QAAQ,mBAAO,CAAC,IAAqB;AACrC,WAAW,mBAAO,CAAC,IAA4B;AAC\u002FC,cAAc,mBAAO,CAAC,IAAsB;AAC5C,gBAAgB,mBAAO,CAAC,IAAyB;AACjD,eAAe,mBAAO,CAAC,IAAwB;AAC\u002FC,wBAAwB,mBAAO,CAAC,IAAkC;AAClE,oBAAoB,mBAAO,CAAC,IAA6B;AACzD,+CAA+C,mBAAO,CAAC,IAA6D;;AAEpH;;AAEA;AACA;AACA,IAAI,qFAAqF;AACzF;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK,IAAI,oCAAoC;AAC7C;AACA,CAAC;;;;;;;;AC\u002FBY;AACb,QAAQ,mBAAO,CAAC,IAAqB;AACrC,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,4BAA4B,mBAAO,CAAC,IAAuC;AAC3E,kBAAkB,mBAAO,CAAC,IAA0B;;AAEpD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA,IAAI,SAAS,qDAAqD;AAClE;AACA,GAAG;AACH,EAAE,gBAAgB;;;;;;;;ACxCL;AACb,WAAW,mBAAO,CAAC,IAAoB;AACvC,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,YAAY,mBAAO,CAAC,IAAwB;AAC5C,mBAAmB,mBAAO,CAAC,IAA6B;AACxD,oBAAoB,mBAAO,CAAC,GAA6B;;AAEzD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;;ACtBa;AACb,kBAAkB,mBAAO,CAAC,IAAoC;AAC9D,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,YAAY,mBAAO,CAAC,IAA2B;;AAE\u002FC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;ACda;AACb;AACA,SAAS;;;;;;;;ACFI;AACb,YAAY,mBAAO,CAAC,IAAoB;;AAExC;AACA;AACA;AACA,iCAAiC,OAAO,mBAAmB,aAAa;AACxE,CAAC;;;;;;;;ACPY;AACb,gBAAgB,mBAAO,CAAC,IAAyB;AACjD,eAAe,mBAAO,CAAC,IAAwB;AAC\u002FC,WAAW,mBAAO,CAAC,IAA4B;AAC\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IAA0B;;AAEnD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,0BAA0B,SAAS,eAAe;AAClD,8BAA8B;AAC9B,KAAK;AACL,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;;;;;;;ACtBa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,cAAc;;;;;;;;ACflB;AACb,oBAAoB,mBAAO,CAAC,IAA8B;AAC1D,kBAAkB,mBAAO,CAAC,IAAoC;AAC9D,eAAe,mBAAO,CAAC,GAAwB;AAC\u002FC,8BAA8B,mBAAO,CAAC,IAAwC;;AAE9E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC,sBAAsB,kBAAkB;AACxC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,GAAG,IAAI,gCAAgC;AACvC;;;;;;;;AChDa;AACb,QAAQ,mBAAO,CAAC,IAAqB;AACrC,iCAAiC,mBAAO,CAAC,IAAqC;;AAE9E;AACA;AACA,IAAI,+BAA+B;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;ACfY;AACb,kBAAkB,mBAAO,CAAC,IAA0B;AACpD,2BAA2B,mBAAO,CAAC,IAAqC;AACxE,+BAA+B,mBAAO,CAAC,IAAyC;;AAEhF;AACA;AACA;AACA;;;;;;;;ACRa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;;;;;;;ACXa;AACb,kBAAkB,mBAAO,CAAC,IAA0B;AACpD,qBAAqB,mBAAO,CAAC,IAA6B;AAC1D,8BAA8B,mBAAO,CAAC,IAAsC;AAC5E,eAAe,mBAAO,CAAC,IAAwB;AAC\u002FC,oBAAoB,mBAAO,CAAC,IAA8B;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB;AACpB;AACA;AACA;AACA;;;;;;;;AC3Ca;AACb,iBAAiB,mBAAO,CAAC,IAA2B;;AAEpD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;;;;;;;AC3Da;AACb,QAAQ,mBAAO,CAAC,IAAqB;AACrC,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,iBAAiB,mBAAO,CAAC,IAA2B;AACpD,+BAA+B,mBAAO,CAAC,IAAyC;AAChF,qBAAqB,6BAAgD;AACrE,aAAa,mBAAO,CAAC,IAA+B;AACpD,iBAAiB,mBAAO,CAAC,GAA0B;AACnD,wBAAwB,mBAAO,CAAC,IAAkC;AAClE,8BAA8B,mBAAO,CAAC,IAAwC;AAC9E,4BAA4B,mBAAO,CAAC,IAAsC;AAC1E,sBAAsB,mBAAO,CAAC,IAAgC;AAC9D,kBAAkB,mBAAO,CAAC,IAA0B;AACpD,cAAc,mBAAO,CAAC,IAAsB;;AAE5C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,IAAI,wEAAwE,IAAI;AAChF;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AAC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\u002FC,eAAe,mBAAO,CAAC,IAAwB;AAC\u002FC,wBAAwB,mBAAO,CAAC,IAAkC;AAClE,wBAAwB,mBAAO,CAAC,GAAkC;;AAElE;AACA;AACA;AACA;AACA;;;;;;;;ACVa;AACb,kBAAkB,mBAAO,CAAC,IAA0B;AACpD,YAAY,mBAAO,CAAC,IAAoB;;AAExC;AACA;AACA;AACA;AACA,6CAA6C,aAAa;AAC1D;AACA;AACA,GAAG;AACH,CAAC;;;;;;;;ACZY;AACb,kBAAkB,mBAAO,CAAC,IAA0B;AACpD,kBAAkB,mBAAO,CAAC,IAAoC;AAC9D,4BAA4B,mBAAO,CAAC,IAAuC;;AAE3E;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,UAAU;AAC5C;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;;;;;;;;ACpBa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACVa;AACb,kBAAkB,mBAAO,CAAC,GAAmC;;AAE7D;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;;;;;;;ACVY;AACb,WAAW,mBAAO,CAAC,IAAoB;AACvC,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,WAAW,mBAAO,CAAC,IAAuB;AAC1C,mBAAmB,mBAAO,CAAC,IAA6B;AACxD,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,oBAAoB,mBAAO,CAAC,GAA6B;;AAEzD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA,KAAK;AACL;;AAEA;AACA;;;;;;;;AC9Ba;AACb,8BAA8B;AAC9B;AACA;;AAEA;AACA,4EAA4E,MAAM;;AAElF;AACA;AACA,SAAS;AACT;AACA;AACA,EAAE;;;;;;;;ACbW;AACb,6BAA6B,mBAAO,CAAC,IAAuC;;AAE5E;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;ACTa;AACb;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;;;;;;;ACPa;AACb,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,kBAAkB,mBAAO,CAAC,IAAoC;AAC9D,0BAA0B,mBAAO,CAAC,IAAqC;AACvE,cAAc,mBAAO,CAAC,IAAuB;AAC7C,aAAa,mBAAO,CAAC,IAA+B;AACpD,gBAAgB,mBAAO,CAAC,IAAyB;AACjD,wBAAwB,mBAAO,CAAC,GAAkC;AAClE,kBAAkB,mBAAO,CAAC,IAAwC;;AAElE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAQ,gBAAgB;AACxB;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,sBAAsB,wBAAwB;AAC9C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAW;AACX;;;;;;;;AC3Ja;AACb,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,cAAc,mBAAO,CAAC,IAA0B;;AAEhD;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;;ACba;AACb,kBAAkB,mBAAO,CAAC,IAAoC;AAC9D,eAAe,mBAAO,CAAC,IAAwB;;AAE\u002FC,mCAAmC;;AAEnC;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACXa;AACb,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,kBAAkB,mBAAO,CAAC,IAA4B;;AAEtD;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;ACVa;AACb,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,cAAc,mBAAO,CAAC,IAAkC;;AAExD;AACA;AACA;AACA;AACA,MAAM,gBAAgB;AACtB;AACA;AACA;AACA,MAAM,gBAAgB;AACtB;AACA;;;;;;;;ACda;AACb,QAAQ,mBAAO,CAAC,IAAqB;AACrC,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,kCAAkC,mBAAO,CAAC,IAA8C;AACxF,kBAAkB,mBAAO,CAAC,IAAgC;;AAE1D;;AAEA;AACA;AACA,oBAAoB,kCAAkC;AACtD;AACA;AACA;AACA;AACA,CAAC;;;;;;;;ACfY;AACb,iBAAiB,mBAAO,CAAC,IAA0B;;AAEnD;AACA;;AAEA;AACA;AACA,sCAAsC,kDAAkD;AACxF,IAAI;AACJ;AACA,IAAI;AACJ;;;;;;;;ACZa;AACb,WAAW,mBAAO,CAAC,IAA4B;AAC\u002FC,aAAa,mBAAO,CAAC,IAA4B;AACjD,kCAAkC,mBAAO,CAAC,IAA6C;AACvF,qBAAqB,mBAAO,CAAC,IAA+B;AAC5D,sBAAsB,mBAAO,CAAC,IAAgC;AAC9D,0BAA0B,mBAAO,CAAC,IAA6B;AAC\u002FD,gBAAgB,mBAAO,CAAC,IAAyB;AACjD,wBAAwB,6CAAwD;AAChF,6BAA6B,mBAAO,CAAC,IAAwC;AAC7E,oBAAoB,mBAAO,CAAC,IAA6B;;AAEzD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;;;;;;;AC7Ea;AACb,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,kBAAkB,mBAAO,CAAC,IAA0B;AACpD,4BAA4B,mBAAO,CAAC,IAAuC;AAC3E,kBAAkB,mBAAO,CAAC,IAA2B;AACrD,YAAY,mBAAO,CAAC,IAAoB;;AAExC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;ACvDY;AACb,kBAAkB,mBAAO,CAAC,GAAmC;;AAE7D;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;;;;;;ACZa;AACb,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,gBAAgB,mBAAO,CAAC,IAAqC;;AAE7D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC3Ba;AACb,WAAW,mBAAO,CAAC,IAA4B;AAC\u002FC,eAAe,mBAAO,CAAC,IAAwB;AAC\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\u002FC,GAAG,EAAE,mBAAmB,CAAC;IAC\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E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAC7E,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC7E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAA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\u002FI,CAAC,EAAE,EAAE;QAC9C,IAAI\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\u002FBuU,UAAU,IAAIxI,GAAG,CAAC\u002FL,CAAC,CAAC,CAACwU,UAAU;EACjC;EACA,MAAMC,IAAI,GAAG,IAAI\u002FT,UAAU,CAAC6T,UAAU,CAAC;EACvC,IAAI5Q,GAAG,GAAG,CAAC;EACX,KAAK,IAAI3D,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG9C,MAAM,EAAE8C,CAAC,EAAE,EAAE;IAC\u002FB,MAAM0U,IAAI,GAAG,IAAIhU,UAAU,CAACqL,GAAG,CAAC\u002FL,CAAC,CAAC,CAAC;IACnCyU,IAAI,CAACjF,GAAG,CAACkF,IAAI,EAAE\u002FQ,GAAG,CAAC;IACnBA,GAAG,IAAI+Q,IAAI,CAACF,UAAU;EACxB;EACA,OAAOC,IAAI;AACb;AAEA,eAAeE,eAAeA,CAAClY,GAAG,EAAE;EAClC,MAAMmY,QAAQ,GAAG,MAAM7F,KAAK,CAACtS,GAAG,CAAC;EACjC,IAAI,CAACmY,QAAQ,CAACC,EAAE,EAAE;IAChB,MAAM,IAAIxY,KAAK,CACb,yBAAyBI,GAAG,WAAWmY,QAAQ,CAACE,UAAU,IAC5D,CAAC;EACH;EACA,OAAO,IAAIpU,UAAU,CAAC,MAAMkU,QAAQ,CAACG,WAAW,CAAC,CAAC,CAAC;AACrD;AAsBA,SAASC,sBAAsBA,CAAC;EAC9B9E,IAAI;EACJd,GAAG;EACHF,QAAQ,GAAG,KAAK;EAChB+F,aAAa,GAAG;AAClB,CAAC,EAAE;EACD,IAAI1F,MAAM;EACV,MAAM2F,OAAO,GAAG,IAAIrE,MAAM,CAAC,CAAC;EAE5B,OAAOX,IAAI,YAAYhC,IAAI,IAAI,EAAEgC,IAAI,CAAC7B,KAAK,IAAI6G,OAAO,CAACzF,GAAG,CAACS,IAAI,CAAC7B,KAAK,CAAC,CAAC,EAAE;IACvE,IAAI6B,IAAI,CAAC7B,KAAK,EAAE;MACd6G,OAAO,CAACjE,GAAG,CAACf,IAAI,CAAC7B,KAAK,CAAC;IACzB;IACA,MAAMpQ,KAAK,GAAGiR,QAAQ,GAAGgB,IAAI,CAAChB,QAAQ,CAACE,GAAG,CAAC,GAAGc,IAAI,CAACxF,GAAG,CAAC0E,GAAG,CAAC;IAC3D,IAAInR,KAAK,KAAKyB,SAAS,EAAE;MACvB,IAAIuV,aAAa,EAAE;QACjB,OAAOhX,KAAK;MACd;MACA,CAACsR,MAAM,KAAK,EAAE,EAAEjP,IAAI,CAACrC,KAAK,CAAC;IAC7B;IACAiS,IAAI,GAAGA,IAAI,CAACxF,GAAG,CAAC,QAAQ,CAAC;EAC3B;EACA,OAAO6E,MAAM;AACf;AASA,SAAS4F,iBAAiBA,CAACjF,IAAI,EAAEQ,GAAG,EAAEvC,IAAI,EAAE;EAC1C,MAAM+G,OAAO,GAAG,IAAIrE,MAAM,CAAC,CAAC;EAC5B,MAAMuE,SAAS,GAAGlF,IAAI;EACtB,MAAMmF,MAAM,GAAG;IAAEnF,IAAI,EAAE,IAAI;IAAEQ,GAAG,EAAE;EAAK,CAAC;EAExC,OAAOR,IAAI,YAAYhC,IAAI,IAAI,CAACgH,OAAO,CAACzF,GAAG,CAACiB,GAAG,CAAC,EAAE;IAChDwE,OAAO,CAACjE,GAAG,CAACP,GAAG,CAAC;IAChB,IAAIR,IAAI,CAACT,GAAG,CAAC,GAAG,CAAC,EAAE;MACjB;IACF;IACAiB,GAAG,GAAGR,IAAI,CAACf,MAAM,CAAC,QAAQ,CAAC;IAC3B,IAAI,EAAEuB,GAAG,YAAY5B,GAAG,CAAC,EAAE;MACzB,OAAOuG,MAAM;IACf;IACAnF,IAAI,GAAG\u002FB,IAAI,CAACY,KAAK,CAAC2B,GAAG,CAAC;EACxB;EACA,IAAIR,IAAI,YAAYhC,IAAI,IAAIgC,IAAI,KAAKkF,SAAS,EAAE;IAC9CC,MAAM,CAACnF,IAAI,GAAGA,IAAI;IAClBmF,MAAM,CAAC3E,GAAG,GAAGA,GAAG;EAClB;EACA,OAAO2E,MAAM;AACf;AAGA,MAAMC,gBAAgB,GAAG,CACvB,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAC1D,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAC1D,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAC3D;AASD,SAASC,eAAeA,CAACC,MAAM,EAAEC,SAAS,GAAG,KAAK,EAAE;EAClDnZ,MAAM,CACJV,MAAM,CAACC,SAAS,CAAC2Z,MAAM,CAAC,IAAIA,MAAM,GAAG,CAAC,EACtC,0CACF,CAAC;EAED,MAAME,KAAK,GACT,GAAG,CAACC,MAAM,CAAEH,MAAM,GAAG,IAAI,GAAI,CAAC,CAAC,GAC\u002FBF,gBAAgB,CAAGE,MAAM,GAAG,IAAI,GAAI,GAAG,GAAI,CAAC,CAAC,GAC7CF,gBAAgB,CAAC,EAAE,IAAME,MAAM,GAAG,GAAG,GAAI,EAAE,GAAI,CAAC,CAAC,CAAC,GAClDF,gBAAgB,CAAC,EAAE,GAAIE,MAAM,GAAG,EAAG,CAAC;EACtC,OAAOC,SAAS,GAAGC,KAAK,CAACE,WAAW,CAAC,CAAC,GAAGF,KAAK;AAChD;AAKA,SAASG,IAAIA,CAAChP,CAAC,EAAE;EACf,OAAOA,CAAC,GAAG,CAAC,GAAG3G,IAAI,CAAC4V,IAAI,CAAC5V,IAAI,CAAC2V,IAAI,CAAChP,CAAC,CAAC,CAAC,GAAG,CAAC;AAC5C;AAEA,SAASkP,QAAQA,CAACtB,IAAI,EAAEuB,MAAM,EAAE;EAC9B,OAAQvB,IAAI,CAACuB,MAAM,CAAC,IAAI,EAAE,IAAK,EAAE;AACnC;AAEA,SAASC,SAASA,CAACxB,IAAI,EAAEuB,MAAM,EAAE;EAC\u002FB,OAAO,CAAEvB,IAAI,CAACuB,MAAM,CAAC,IAAI,EAAE,GAAKvB,IAAI,CAACuB,MAAM,GAAG,CAAC,CAAC,IAAI,EAAG,KAAK,EAAE;AAChE;AAEA,SAASE,UAAUA,CAACzB,IAAI,EAAEuB,MAAM,EAAE;EAChC,OAAQvB,IAAI,CAACuB,MAAM,CAAC,IAAI,CAAC,GAAIvB,IAAI,CAACuB,MAAM,GAAG,CAAC,CAAC;AAC\u002FC;AAEA,SAASG,UAAUA,CAAC1B,IAAI,EAAEuB,MAAM,EAAE;EAChC,OACE,CAAEvB,IAAI,CAACuB,MAAM,CAAC,IAAI,EAAE,GACjBvB,IAAI,CAACuB,MAAM,GAAG,CAAC,CAAC,IAAI,EAAG,GACvBvB,IAAI,CAACuB,MAAM,GAAG,CAAC,CAAC,IAAI,CAAE,GACvBvB,IAAI,CAACuB,MAAM,GAAG,CAAC,CAAC,MAClB,CAAC;AAEL;AAGA,SAASI,YAAYA,CAACC,EAAE,EAAE;EACxB,OAAOA,EAAE,KAAK,IAAI,IAAIA,EAAE,KAAK,IAAI,IAAIA,EAAE,KAAK,IAAI,IAAIA,EAAE,KAAK,IAAI;AACjE;AASA,SAASC,cAAcA,CAACvK,GAAG,EAAEwK,GAAG,EAAE;EAChC,OACE9T,KAAK,CAAC4I,OAAO,CAACU,GAAG,CAAC,KACjBwK,GAAG,KAAK,IAAI,IAAIxK,GAAG,CAAC7O,MAAM,KAAKqZ,GAAG,CAAC,IACpCxK,GAAG,CAACyK,KAAK,CAAC3P,CAAC,IAAI,OAAOA,CAAC,KAAK,SAAS,CAAC;AAE1C;AASA,SAAS4P,aAAaA,CAAC1K,GAAG,EAAEwK,GAAG,EAAE;EAC\u002FB,IAAI9T,KAAK,CAAC4I,OAAO,CAACU,GAAG,CAAC,EAAE;IACtB,OACE,CAACwK,GAAG,KAAK,IAAI,IAAIxK,GAAG,CAAC7O,MAAM,KAAKqZ,GAAG,KACnCxK,GAAG,CAACyK,KAAK,CAAC3P,CAAC,IAAI,OAAOA,CAAC,KAAK,QAAQ,CAAC;EAEzC;EAIA,OACE6P,WAAW,CAACC,MAAM,CAAC5K,GAAG,CAAC,IACvB,EAAEA,GAAG,YAAY6K,aAAa,IAAI7K,GAAG,YAAY8K,cAAc,CAAC,KAC\u002FDN,GAAG,KAAK,IAAI,IAAIxK,GAAG,CAAC7O,MAAM,KAAKqZ,GAAG,CAAC;AAExC;AAGA,SAASO,YAAYA,CAAC\u002FK,GAAG,EAAEgL,QAAQ,EAAE;EACnC,OAAON,aAAa,CAAC1K,GAAG,EAAE,CAAC,CAAC,GAAGA,GAAG,GAAGgL,QAAQ;AAC\u002FC;AAGA,SAASC,UAAUA,CAACjL,GAAG,EAAEgL,QAAQ,EAAE;EACjC,OAAON,aAAa,CAAC1K,GAAG,EAAE,CAAC,CAAC,GAAGA,GAAG,GAAGgL,QAAQ;AAC\u002FC;AAGA,SAASE,gBAAgBA,CAAClL,GAAG,EAAEgL,QAAQ,EAAE;EACvC,OAAON,aAAa,CAAC1K,GAAG,EAAE,CAAC,CAAC,GAAGjJ,IAAI,CAACqD,aAAa,CAAC4F,GAAG,CAAC,GAAGgL,QAAQ;AACnE;AAWA,SAASG,YAAYA,CAACC,IAAI,EAAE;EAC1B,MAAMC,eAAe,GAAG,gBAAgB;EACxC,OAAOD,IAAI,CAACtZ,KAAK,CAAC,GAAG,CAAC,CAACwZ,GAAG,CAACC,SAAS,IAAI;IACtC,MAAM5T,CAAC,GAAG4T,SAAS,CAACra,KAAK,CAACma,eAAe,CAAC;IAC1C,IAAI1T,CAAC,EAAE;MACL,OAAO;QAAE\u002FE,IAAI,EAAE+E,CAAC,CAAC,CAAC,CAAC;QAAEC,GAAG,EAAEiN,QAAQ,CAAClN,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;MAAE,CAAC;IAChD;IACA,OAAO;MAAE\u002FE,IAAI,EAAE2Y,SAAS;MAAE3T,GAAG,EAAE;IAAE,CAAC;EACpC,CAAC,CAAC;AACJ;AAEA,SAAS4T,aAAaA,CAAC9W,GAAG,EAAE;EAC1B,MAAMU,MAAM,GAAG,EAAE;EACjB,IAAIoS,KAAK,GAAG,CAAC;EACb,KAAK,IAAIvT,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAGtI,GAAG,CAACvD,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,EAAE,EAAE;IAC5C,MAAMwX,IAAI,GAAG\u002FW,GAAG,CAACE,UAAU,CAACX,CAAC,CAAC;IAE9B,IACEwX,IAAI,GAAG,IAAI,IACXA,IAAI,GAAG,IAAI,IACXA,IAAI,KAAK,IAAI,IACbA,IAAI,KAAK,IAAI,IACbA,IAAI,KAAK,IAAI,IACbA,IAAI,KAAK,IAAI,IACbA,IAAI,KAAK,IAAI,IACbA,IAAI,KAAK,IAAI,IACbA,IAAI,KAAK,IAAI,IACbA,IAAI,KAAK,IAAI,IACbA,IAAI,KAAK,IAAI,IACbA,IAAI,KAAK,IAAI,IACbA,IAAI,KAAK,IAAI,EACb;MACA,IAAIjE,KAAK,GAAGvT,CAAC,EAAE;QACbmB,MAAM,CAACb,IAAI,CAACG,GAAG,CAACgX,SAAS,CAAClE,KAAK,EAAEvT,CAAC,CAAC,CAAC;MACtC;MACAmB,MAAM,CAACb,IAAI,CAAC,IAAIkX,IAAI,CAAC5U,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;MACpC2Q,KAAK,GAAGvT,CAAC,GAAG,CAAC;IACf;EACF;EAEA,IAAImB,MAAM,CAACjE,MAAM,KAAK,CAAC,EAAE;IACvB,OAAOuD,GAAG;EACZ;EAEA,IAAI8S,KAAK,GAAG9S,GAAG,CAACvD,MAAM,EAAE;IACtBiE,MAAM,CAACb,IAAI,CAACG,GAAG,CAACgX,SAAS,CAAClE,KAAK,EAAE9S,GAAG,CAACvD,MAAM,CAAC,CAAC;EAC\u002FC;EAEA,OAAOiE,MAAM,CAACZ,IAAI,CAAC,EAAE,CAAC;AACxB;AAIA,SAASmX,YAAYA,CAACjX,GAAG,EAAE;EACzB,OAAOA,GAAG,CAACoI,UAAU,CAAC,eAAe,EAAE5L,KAAK,IAAI;IAC9C,IAAIA,KAAK,KAAK,IAAI,EAAE;MAClB,OAAO,KAAK;IACd,CAAC,MAAM,IAAIA,KAAK,KAAK,IAAI,EAAE;MACzB,OAAO,KAAK;IACd;IACA,OAAO,KAAKA,KAAK,EAAE;EACrB,CAAC,CAAC;AACJ;AAEA,SAAS0a,UAAUA,CAACC,KAAK,EAAEzJ,IAAI,EAAE0J,IAAI,EAAEC,OAAO,EAAE;EAC9C,IAAI,CAACF,KAAK,EAAE;IACV;EACF;EAEA,IAAI9G,MAAM,GAAG,IAAI;EACjB,IAAI8G,KAAK,YAAY9I,GAAG,EAAE;IACxB,IAAIgJ,OAAO,CAACrI,GAAG,CAACmI,KAAK,CAAC,EAAE;MAEtB;IACF;IACA9G,MAAM,GAAG8G,KAAK;IACdE,OAAO,CAAC7G,GAAG,CAACH,MAAM,CAAC;IACnB8G,KAAK,GAAGzJ,IAAI,CAACY,KAAK,CAAC6I,KAAK,CAAC;EAC3B;EACA,IAAInV,KAAK,CAAC4I,OAAO,CAACuM,KAAK,CAAC,EAAE;IACxB,KAAK,MAAMG,OAAO,IAAIH,KAAK,EAAE;MAC3BD,UAAU,CAACI,OAAO,EAAE5J,IAAI,EAAE0J,IAAI,EAAEC,OAAO,CAAC;IAC1C;EACF,CAAC,MAAM,IAAIF,KAAK,YAAY1J,IAAI,EAAE;IAChC,IAAIsD,MAAM,CAACoG,KAAK,CAAClN,GAAG,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,EAAE;MACxC,MAAMsN,EAAE,GAAGJ,KAAK,CAAClN,GAAG,CAAC,IAAI,CAAC;MAC1B,IAAI3L,IAAI;MACR,IAAIiZ,EAAE,YAAYlG,UAAU,EAAE;QAC5B\u002FS,IAAI,GAAGiZ,EAAE,CAAC9E,SAAS,CAAC,CAAC;MACvB,CAAC,MAAM,IAAI,OAAO8E,EAAE,KAAK,QAAQ,EAAE;QACjCjZ,IAAI,GAAGiZ,EAAE;MACX;MACAjZ,IAAI,KAAKsJ,iBAAiB,CACxBtJ,IAAI,EACuB,IAC7B,CAAC,CAAC8J,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;MACxB,IAAI9J,IAAI,EAAE;QACR8Y,IAAI,CAACvX,IAAI,CAACvB,IAAI,CAAC;MACjB;IACF;IACA4Y,UAAU,CAACC,KAAK,CAACzI,MAAM,CAAC,MAAM,CAAC,EAAEhB,IAAI,EAAE0J,IAAI,EAAEC,OAAO,CAAC;EACvD;EAEA,IAAIhH,MAAM,EAAE;IACVgH,OAAO,CAAC3G,MAAM,CAACL,MAAM,CAAC;EACxB;AACF;AAEA,SAASmH,cAAcA,CAAC9J,IAAI,EAAE+B,IAAI,EAAEgI,SAAS,EAAE;EAC7C,MAAMC,OAAO,GAAGha,MAAM,CAACuP,MAAM,CAAC,IAAI,CAAC;EACnC,MAAM0K,sBAAsB,GAAGpD,sBAAsB,CAAC;IACpD9E,IAAI;IACJd,GAAG,EAAE,IAAI;IACT6F,aAAa,EAAE;EACjB,CAAC,CAAC;EACF,IAAImD,sBAAsB,EAAE;IAM1B,KAAK,IAAIpY,CAAC,GAAGoY,sBAAsB,CAAClb,MAAM,GAAG,CAAC,EAAE8C,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;MAC3D,MAAMqY,iBAAiB,GAAGD,sBAAsB,CAACpY,CAAC,CAAC;MACnD,IAAI,EAAEqY,iBAAiB,YAAYnK,IAAI,CAAC,EAAE;QACxC;MACF;MACA,KAAK,MAAMkB,GAAG,IAAIiJ,iBAAiB,CAAChJ,OAAO,CAAC,CAAC,EAAE;QAC7C,MAAMiJ,MAAM,GAAGJ,SAAS,CAAC9I,GAAG,CAAC;QAC7B,IAAI,CAACkJ,MAAM,EAAE;UACX;QACF;QACA,MAAMC,UAAU,GAAGF,iBAAiB,CAAClJ,MAAM,CAACC,GAAG,CAAC;QAChD,MAAM0I,OAAO,GAAG,IAAIjH,MAAM,CAAC,CAAC;QAC5B,MAAMgH,IAAI,GAAG,EAAE;QACfF,UAAU,CAACY,UAAU,EAAEpK,IAAI,EAAE0J,IAAI,EAAEC,OAAO,CAAC;QAC3C,IAAID,IAAI,CAAC3a,MAAM,GAAG,CAAC,EAAE;UACnBib,OAAO,CAACG,MAAM,CAAC,GAAGT,IAAI;QACxB;MACF;IACF;EACF;EAEA,IAAI3H,IAAI,CAACT,GAAG,CAAC,GAAG,CAAC,EAAE;IACjB,MAAM8I,UAAU,GAAGrI,IAAI,CAACxF,GAAG,CAAC,GAAG,CAAC;IAChC,MAAMoN,OAAO,GAAG,IAAIjH,MAAM,CAAC,CAAC;IAC5B,MAAMgH,IAAI,GAAG,EAAE;IACfF,UAAU,CAACY,UAAU,EAAEpK,IAAI,EAAE0J,IAAI,EAAEC,OAAO,CAAC;IAC3C,IAAID,IAAI,CAAC3a,MAAM,GAAG,CAAC,EAAE;MACnBib,OAAO,CAACK,MAAM,GAAGX,IAAI;IACvB;EACF;EACA,OAAOhX,UAAU,CAACsX,OAAO,CAAC,GAAG,CAAC,GAAGA,OAAO,GAAG,IAAI;AACjD;AAEA,MAAMM,WAAW,GAAG;EACV,IAAI,EAAE,MAAM;EACZ,IAAI,EAAE,MAAM;EACZ,IAAI,EAAE,OAAO;EACb,IAAI,EAAE,QAAQ;EACd,IAAI,EAAE;AAChB,CAAC;AAED,UAAUC,aAAaA,CAACjY,GAAG,EAAE;EAC3B,KAAK,IAAIT,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAGtI,GAAG,CAACvD,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,EAAE,EAAE;IAC5C,MAAMwX,IAAI,GAAG\u002FW,GAAG,CAACkY,WAAW,CAAC3Y,CAAC,CAAC;IAC\u002FB,IAAIwX,IAAI,GAAG,MAAM,KAAKA,IAAI,GAAG,MAAM,IAAIA,IAAI,GAAG,MAAM,CAAC,EAAE;MAErDxX,CAAC,EAAE;IACL;IACA,MAAMwX,IAAI;EACZ;AACF;AAEA,SAASoB,iBAAiBA,CAACnY,GAAG,EAAE;EAC9B,MAAMU,MAAM,GAAG,EAAE;EACjB,IAAIoS,KAAK,GAAG,CAAC;EACb,KAAK,IAAIvT,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAGtI,GAAG,CAACvD,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,EAAE,EAAE;IAC5C,MAAMwX,IAAI,GAAG\u002FW,GAAG,CAACkY,WAAW,CAAC3Y,CAAC,CAAC;IAC\u002FB,IAAI,IAAI,IAAIwX,IAAI,IAAIA,IAAI,IAAI,IAAI,EAAE;MAEhC,MAAMqB,MAAM,GAAGJ,WAAW,CAACjB,IAAI,CAAC;MAChC,IAAIqB,MAAM,EAAE;QACV,IAAItF,KAAK,GAAGvT,CAAC,EAAE;UACbmB,MAAM,CAACb,IAAI,CAACG,GAAG,CAACgX,SAAS,CAAClE,KAAK,EAAEvT,CAAC,CAAC,CAAC;QACtC;QACAmB,MAAM,CAACb,IAAI,CAACuY,MAAM,CAAC;QACnBtF,KAAK,GAAGvT,CAAC,GAAG,CAAC;MACf;IACF,CAAC,MAAM;MACL,IAAIuT,KAAK,GAAGvT,CAAC,EAAE;QACbmB,MAAM,CAACb,IAAI,CAACG,GAAG,CAACgX,SAAS,CAAClE,KAAK,EAAEvT,CAAC,CAAC,CAAC;MACtC;MACAmB,MAAM,CAACb,IAAI,CAAC,MAAMkX,IAAI,CAAC5U,QAAQ,CAAC,EAAE,CAAC,CAACkW,WAAW,CAAC,CAAC,GAAG,CAAC;MACrD,IAAItB,IAAI,GAAG,MAAM,KAAKA,IAAI,GAAG,MAAM,IAAIA,IAAI,GAAG,MAAM,CAAC,EAAE;QAErDxX,CAAC,EAAE;MACL;MACAuT,KAAK,GAAGvT,CAAC,GAAG,CAAC;IACf;EACF;EAEA,IAAImB,MAAM,CAACjE,MAAM,KAAK,CAAC,EAAE;IACvB,OAAOuD,GAAG;EACZ;EACA,IAAI8S,KAAK,GAAG9S,GAAG,CAACvD,MAAM,EAAE;IACtBiE,MAAM,CAACb,IAAI,CAACG,GAAG,CAACgX,SAAS,CAAClE,KAAK,EAAE9S,GAAG,CAACvD,MAAM,CAAC,CAAC;EAC\u002FC;EACA,OAAOiE,MAAM,CAACZ,IAAI,CAAC,EAAE,CAAC;AACxB;AAEA,SAASwY,gBAAgBA,CAACC,UAAU,EAAEC,QAAQ,GAAG,KAAK,EAAE;EAEtD,MAAMvV,CAAC,GAAG,gBAAgB,CAACiN,IAAI,CAACqI,UAAU,CAAC;EAC3C,IAAItV,CAAC,IAAIA,CAAC,CAAC,CAAC,CAAC,KAAKA,CAAC,CAAC,CAAC,CAAC,EAAE;IACtB,MAAMwV,EAAE,GAAG,IAAIC,MAAM,CAAC,UAAUzV,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvC,IAAIwV,EAAE,CAACE,IAAI,CAACJ,UAAU,CAAC5S,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;MACpC,IAAI6S,QAAQ,EAAE;QACZ9c,IAAI,CAAC,iCAAiCuH,CAAC,CAAC,CAAC,CAAC,KAAKsV,UAAU,GAAG,CAAC;MAC\u002FD;MACA,OAAO,KAAK;IACd;EACF,CAAC,MAAM;IAEL,KAAK,MAAMK,KAAK,IAAIL,UAAU,CAACnb,KAAK,CAAC,QAAQ,CAAC,EAAE;MAC9C,IAAI,iBAAiB,CAACub,IAAI,CAACC,KAAK,CAAC,IAAI,CAAC,YAAY,CAACD,IAAI,CAACC,KAAK,CAAC,EAAE;QAC9D,IAAIJ,QAAQ,EAAE;UACZ9c,IAAI,CAAC,+CAA+C6c,UAAU,GAAG,CAAC;QACpE;QACA,OAAO,KAAK;MACd;IACF;EACF;EACA,OAAO,IAAI;AACb;AAEA,SAASM,eAAeA,CAACC,WAAW,EAAE;EAEpC,MAAMC,wBAAwB,GAAG,IAAI;EAErC,MAAMC,uBAAuB,GAAG,KAAK;EACrC,MAAMC,sBAAsB,GAAG,IAAI1I,GAAG,CAAC,CACrC,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,KAAK,EACL,MAAM,EACN,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,SAAS,CACV,CAAC;EAEF,MAAM;IAAEgI,UAAU;IAAEW,UAAU;IAAEC;EAAY,CAAC,GAAGL,WAAW;EAE3D,IAAI,CAACR,gBAAgB,CAACC,UAAU,EAAE,IAAI,CAAC,EAAE;IACvC,OAAO,KAAK;EACd;EAEA,MAAMa,MAAM,GAAGF,UAAU,GAAGA,UAAU,CAAC\u002FW,QAAQ,CAAC,CAAC,GAAG,EAAE;EACtD2W,WAAW,CAACI,UAAU,GAAGD,sBAAsB,CAACjK,GAAG,CAACoK,MAAM,CAAC,GACvDA,MAAM,GACNJ,uBAAuB;EAE3B,MAAMK,KAAK,GAAGC,UAAU,CAACH,WAAW,CAAC;EACrCL,WAAW,CAACK,WAAW,GACrBI,KAAK,CAACF,KAAK,CAAC,IAAIA,KAAK,GAAG,CAAC,EAAE,IAAIA,KAAK,GAAG,EAAE,GACrCN,wBAAwB,GACxBI,WAAW,CAAChX,QAAQ,CAAC,CAAC;EAE5B,OAAO,IAAI;AACb;AAEA,SAASqX,YAAYA,CAACxZ,GAAG,EAAE;EAMzB,MAAMyZ,gBAAgB,GAAG,CAAC,eAAe,EAAE,aAAa,EAAE,kBAAkB,CAAC;EAC7E,MAAMC,KAAK,GAAG,IAAIhB,MAAM,CACtB,QAAQ,GACNe,gBAAgB,CAAC3Z,IAAI,CAAC,GAAG,CAAC,CAACsI,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,GACjD,qDAAqD,EACvD,GACF,CAAC;EAED,MAAMuR,KAAK,GAAGD,KAAK,CAACxJ,IAAI,CAAClQ,GAAG,CAAC;EAC7B,IAAI2Z,KAAK,GAAG,CAAC,CAAC,EAAE;IACd,OAAO;MACL3d,GAAG,EAAE2d,KAAK,CAAC,CAAC,CAAC;MACbC,SAAS,EAAED,KAAK,CAAC,CAAC,CAAC,KAAK,eAAe,IAAIA,KAAK,CAAC,CAAC,CAAC,KAAK;IAC1D,CAAC;EACH;EAEA,OAAO,IAAI;AACb;AAEA,SAASE,cAAcA,CAACrc,KAAK,EAAE;EAQ7B,IAAIrC,MAAM,CAACC,SAAS,CAACoC,KAAK,CAAC,EAAE;IAC3B,OAAOA,KAAK,CAAC2E,QAAQ,CAAC,CAAC;EACzB;EAEA,MAAM2X,YAAY,GAAGra,IAAI,CAACsa,KAAK,CAACvc,KAAK,GAAG,GAAG,CAAC;EAC5C,IAAIsc,YAAY,GAAG,GAAG,KAAK,CAAC,EAAE;IAC5B,OAAO,CAACA,YAAY,GAAG,GAAG,EAAE3X,QAAQ,CAAC,CAAC;EACxC;EAEA,IAAI2X,YAAY,GAAG,EAAE,KAAK,CAAC,EAAE;IAC3B,OAAOtc,KAAK,CAACwc,OAAO,CAAC,CAAC,CAAC;EACzB;EAEA,OAAOxc,KAAK,CAACwc,OAAO,CAAC,CAAC,CAAC;AACzB;AAEA,SAASC,oBAAoBA,CAACC,iBAAiB,EAAE;EAC\u002FC,IAAI,CAACA,iBAAiB,EAAE;IACtB,OAAO,IAAI;EACb;EACA,MAAMC,oBAAoB,GAAG,IAAItQ,GAAG,CAAC,CAAC;EAGtC,KAAK,MAAM,CAAC8E,GAAG,EAAEnR,KAAK,CAAC,IAAI0c,iBAAiB,EAAE;IAC5C,IAAI,CAACvL,GAAG,CAACrS,UAAU,CAAC1P,sBAAsB,CAAC,EAAE;MAC3C;IACF;IACA,IAAIwtB,WAAW,GAAGD,oBAAoB,CAAClQ,GAAG,CAACzM,KAAK,CAAC6c,SAAS,CAAC;IAC3D,IAAI,CAACD,WAAW,EAAE;MAChBA,WAAW,GAAG,EAAE;MAChBD,oBAAoB,CAACpL,GAAG,CAACvR,KAAK,CAAC6c,SAAS,EAAED,WAAW,CAAC;IACxD;IACAA,WAAW,CAACva,IAAI,CAACrC,KAAK,CAAC;EACzB;EACA,OAAO2c,oBAAoB,CAAClM,IAAI,GAAG,CAAC,GAAGkM,oBAAoB,GAAG,IAAI;AACpE;AAEA,SAASG,sBAAsBA,CAACta,GAAG,EAAE;EACnC,OAAOua,OAAO,CAACva,GAAG,CAAC,GAAGA,GAAG,GAAGwa,mBAAmB,CAACxa,GAAG,EAAoB,IAAI,CAAC;AAC9E;AAEA,SAASua,OAAOA,CAACva,GAAG,EAAE;EACpB,OAAO,gBAAgB,CAAC2Y,IAAI,CAAC3Y,GAAG,CAAC;AACnC;AAEA,SAASya,sBAAsBA,CAACza,GAAG,EAAE;EACnC,MAAMqK,GAAG,GAAG,EAAE;EACd,KAAK,IAAI9K,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAGtI,GAAG,CAACvD,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,EAAE,EAAE;IAC5C,MAAMwX,IAAI,GAAG\u002FW,GAAG,CAACE,UAAU,CAACX,CAAC,CAAC;IAC9B8K,GAAG,CAACxK,IAAI,CAACkC,UAAU,CAAEgV,IAAI,IAAI,CAAC,GAAI,IAAI,CAAC,EAAEhV,UAAU,CAACgV,IAAI,GAAG,IAAI,CAAC,CAAC;EACnE;EACA,OAAO1M,GAAG,CAACvK,IAAI,CAAC,EAAE,CAAC;AACrB;AAEA,SAAS0a,mBAAmBA,CAACxa,GAAG,EAAE0a,SAAS,GAAG,KAAK,EAAE;EACnD,MAAMrQ,GAAG,GAAG,EAAE;EACd,IAAIqQ,SAAS,EAAE;IACbrQ,GAAG,CAACxK,IAAI,CAAC,UAAU,CAAC;EACtB;EACA,KAAK,IAAIN,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAGtI,GAAG,CAACvD,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,EAAE,EAAE;IAC5C,MAAMwX,IAAI,GAAG\u002FW,GAAG,CAACE,UAAU,CAACX,CAAC,CAAC;IAC9B8K,GAAG,CAACxK,IAAI,CACNV,MAAM,CAACC,YAAY,CAAE2X,IAAI,IAAI,CAAC,GAAI,IAAI,CAAC,EACvC5X,MAAM,CAACC,YAAY,CAAC2X,IAAI,GAAG,IAAI,CACjC,CAAC;EACH;EACA,OAAO1M,GAAG,CAACvK,IAAI,CAAC,EAAE,CAAC;AACrB;AAEA,SAAS6a,iBAAiBA,CAACC,QAAQ,EAAEC,KAAK,EAAEC,MAAM,EAAE;EAClD,QAAQF,QAAQ;IACd,KAAK,EAAE;MACL,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAEC,KAAK,EAAE,CAAC,CAAC;IAChC,KAAK,GAAG;MACN,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAEA,KAAK,EAAEC,MAAM,CAAC;IACtC,KAAK,GAAG;MACN,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAEA,MAAM,CAAC;IACjC;MACE,MAAM,IAAIlf,KAAK,CAAC,kBAAkB,CAAC;EACvC;AACF;AASA,SAASmf,cAAcA,CAAC3U,CAAC,EAAE;EAGzB,OAAO3G,IAAI,CAAC4V,IAAI,CAAC5V,IAAI,CAAC4V,IAAI,CAAC5V,IAAI,CAAC2V,IAAI,CAAC,CAAC,GAAGhP,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACnD;;;;;;;;;;;;;;;;ACltBA,MAAM4U,IAAI,CAAC;EACT,OAAO,CAACC,WAAW,GAAG,IAAI;EAE1B,OAAOC,OAAO,GAAG,IAAI;EAErB,OAAOC,aAAa,GAAG,KAAK;EAE5B,OAAOC,WAAW,GAAG,IAAI;EAEzB,OAAOC,WAAW,GAAG,CAAC;EAEtB,OAAOC,WAAW,GAAG,CAAC;EAEtB,OAAOC,SAAS,GAAG,EAAE;EAErB,OAAOC,aAAa,GAAG,IAAI;EAE3B,WAAWC,YAAYA,CAAA,EAAG;IACxB,MAAMC,KAAK,GAAG,IAAI,CAAC,CAACT,WAAW;IAC\u002FB,IAAIS,KAAK,EAAE3H,UAAU,EAAE;MACrB,OAAO2H,KAAK;IACd;IACA,OAAQ,IAAI,CAAC,CAACT,WAAW,GAAG,IAAIhb,UAAU,CAAC,IAAI,CAACib,OAAO,CAACxa,MAAM,CAAC;EACjE;AACF;AAEA,SAASib,WAAWA,CAACC,GAAG,EAAE9F,GAAG,EAAE;EAI7B,MAAM;IAAEqF,aAAa;IAAEC,WAAW;IAAEC,WAAW;IAAEC,WAAW;IAAEG;EAAa,CAAC,GAC1ET,IAAI;EACN,IAAIlF,GAAG,KAAKwF,WAAW,EAAE;IACvBF,WAAW,CAACrM,GAAG,CAAC0M,YAAY,CAAC7b,QAAQ,CAACgc,GAAG,EAAEA,GAAG,GAAG9F,GAAG,CAAC,EAAEuF,WAAW,CAAC;IACnE;EACF;EACA,IAAIF,aAAa,EAAE;IACjB,KAAK,IAAI5b,CAAC,GAAGqc,GAAG,EAAEtT,EAAE,GAAGsT,GAAG,GAAG9F,GAAG,EAAE+F,CAAC,GAAGR,WAAW,EAAE9b,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,IAAI,CAAC,EAAEsc,CAAC,IAAI,CAAC,EAAE;MACzET,WAAW,CAACS,CAAC,CAAC,GAAGJ,YAAY,CAAClc,CAAC,CAAC;MAChC6b,WAAW,CAACS,CAAC,GAAG,CAAC,CAAC,GAAGJ,YAAY,CAAClc,CAAC,GAAG,CAAC,CAAC;MACxC6b,WAAW,CAACS,CAAC,GAAG,CAAC,CAAC,GAAGJ,YAAY,CAAClc,CAAC,GAAG,CAAC,CAAC;MACxC6b,WAAW,CAACS,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG;IAC1B;EACF,CAAC,MAAM;IACL,KAAK,IAAItc,CAAC,GAAGqc,GAAG,EAAEtT,EAAE,GAAGsT,GAAG,GAAG9F,GAAG,EAAE+F,CAAC,GAAGR,WAAW,EAAE9b,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,IAAI,CAAC,EAAEsc,CAAC,IAAI,CAAC,EAAE;MACzET,WAAW,CAACS,CAAC,CAAC,GAAGJ,YAAY,CAAClc,CAAC,CAAC;MAChC6b,WAAW,CAACS,CAAC,GAAG,CAAC,CAAC,GAAGJ,YAAY,CAAClc,CAAC,GAAG,CAAC,CAAC;MACxC6b,WAAW,CAACS,CAAC,GAAG,CAAC,CAAC,GAAGJ,YAAY,CAAClc,CAAC,GAAG,CAAC,CAAC;IAC1C;EACF;AACF;AAEA,SAASuc,QAAQA,CAACF,GAAG,EAAE;EACrB,MAAM;IAAER,WAAW;IAAEC,WAAW;IAAEI;EAAa,CAAC,GAAGT,IAAI;EACvDI,WAAW,CAACC,WAAW,CAAC,GAAGI,YAAY,CAACG,GAAG,CAAC;EAC5CR,WAAW,CAACC,WAAW,GAAG,CAAC,CAAC,GAAGI,YAAY,CAACG,GAAG,GAAG,CAAC,CAAC;EACpDR,WAAW,CAACC,WAAW,GAAG,CAAC,CAAC,GAAGI,YAAY,CAACG,GAAG,GAAG,CAAC,CAAC;AACtD;AAEA,SAASG,WAAWA,CAACH,GAAG,EAAE;EACxB,MAAM;IAAEH;EAAa,CAAC,GAAGT,IAAI;EAC7BA,IAAI,CAACO,SAAS,GAAGP,IAAI,CAACQ,aAAa,CACjCC,YAAY,CAACG,GAAG,CAAC,EACjBH,YAAY,CAACG,GAAG,GAAG,CAAC,CAAC,EACrBH,YAAY,CAACG,GAAG,GAAG,CAAC,CACtB,CAAC;AACH;;;;;;;;;;;;;AChFqE;AAErE,IAAII,IAAI;AAER,MAAMC,iBAAiB,GAAI,OAAOjU,WAAW,KAAK,WAAW,GAAG,IAAIA,WAAW,CAAC,OAAO,EAAE;EAAEkU,SAAS,EAAE,IAAI;EAAEjU,KAAK,EAAE;AAAK,CAAC,CAAC,GAAG;EAAEE,MAAM,EAAEA,CAAA,KAAM;IAAE,MAAMvM,KAAK,CAAC,2BAA2B,CAAC;EAAC;AAAE,CAAG;AAE7L,IAAI,OAAOoM,WAAW,KAAK,WAAW,EAAE;EAAEiU,iBAAiB,CAAC9T,MAAM,CAAC,CAAC;AAAE;AAAC;AAEvE,IAAIgU,uBAAuB,GAAG,IAAI;AAElC,SAASC,oBAAoBA,CAAA,EAAG;EAC5B,IAAID,uBAAuB,KAAK,IAAI,IAAIA,uBAAuB,CAACpI,UAAU,KAAK,CAAC,EAAE;IAC9EoI,uBAAuB,GAAG,IAAIlc,UAAU,CAAC+b,IAAI,CAACK,MAAM,CAAC3b,MAAM,CAAC;EAChE;EACA,OAAOyb,uBAAuB;AAClC;AAEA,SAASG,kBAAkBA,CAACV,GAAG,EAAE9F,GAAG,EAAE;EAClC8F,GAAG,GAAGA,GAAG,KAAK,CAAC;EACf,OAAOK,iBAAiB,CAAC9T,MAAM,CAACiU,oBAAoB,CAAC,CAAC,CAACxc,QAAQ,CAACgc,GAAG,EAAEA,GAAG,GAAG9F,GAAG,CAAC,CAAC;AACpF;AAEA,IAAIyG,eAAe,GAAG,CAAC;AAEvB,SAASC,iBAAiBA,CAACtR,GAAG,EAAEuR,MAAM,EAAE;EACpC,MAAMb,GAAG,GAAGa,MAAM,CAACvR,GAAG,CAACzO,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;EAC3C2f,oBAAoB,CAAC,CAAC,CAACrN,GAAG,CAAC7D,GAAG,EAAE0Q,GAAG,GAAG,CAAC,CAAC;EACxCW,eAAe,GAAGrR,GAAG,CAACzO,MAAM;EAC5B,OAAOmf,GAAG;AACd;AAQO,SAASc,kBAAkBA,CAACC,WAAW,EAAEC,GAAG,EAAE;EACjD,MAAMC,IAAI,GAAGL,iBAAiB,CAACI,GAAG,EAAEZ,IAAI,CAACc,iBAAiB,CAAC;EAC3D,MAAMC,IAAI,GAAGR,eAAe;EAC5BP,IAAI,CAACU,kBAAkB,CAACC,WAAW,EAAEE,IAAI,EAAEE,IAAI,CAAC;AACpD;AAUO,SAASC,gBAAgBA,CAACL,WAAW,EAAEC,GAAG,EAAEK,GAAG,EAAE;EACpDjB,IAAI,CAACgB,gBAAgB,CAACL,WAAW,EAAEC,GAAG,EAAEK,GAAG,CAAC;AAChD;AAYO,SAASC,kBAAkBA,CAACP,WAAW,EAAEQ,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEJ,GAAG,EAAE;EACnEjB,IAAI,CAACkB,kBAAkB,CAACP,WAAW,EAAEQ,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEJ,GAAG,CAAC;AAC\u002FD;AAaO,SAASK,iBAAiBA,CAACX,WAAW,EAAEQ,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEE,IAAI,EAAEN,GAAG,EAAE;EACxEjB,IAAI,CAACsB,iBAAiB,CAACX,WAAW,EAAEQ,IAAI,EAAEC,IAAI,EAAEC,IAAI,EAAEE,IAAI,EAAEN,GAAG,CAAC;AACpE;AAWO,SAASO,4BAA4BA,CAACC,GAAG,EAAEC,OAAO,EAAEC,MAAM,EAAE;EAC\u002FD,MAAMd,IAAI,GAAGL,iBAAiB,CAACiB,GAAG,EAAEzB,IAAI,CAACc,iBAAiB,CAAC;EAC3D,MAAMC,IAAI,GAAGR,eAAe;EAC5B,MAAMqB,GAAG,GAAG5B,IAAI,CAACwB,4BAA4B,CAACX,IAAI,EAAEE,IAAI,EAAEW,OAAO,EAAEC,MAAM,CAAC;EAC1E,OAAOC,GAAG,KAAK,CAAC;AACpB;AAQO,SAASC,qBAAqBA,CAAClB,WAAW,EAAE;EAC\u002FCX,IAAI,CAAC6B,qBAAqB,CAAClB,WAAW,CAAC;AAC3C;AAKO,MAAMmB,QAAQ,GAAGpgB,MAAM,CAACqgB,MAAM,CAAC;EAClCC,IAAI,EAAE,CAAC;EAAE,GAAG,EAAE,MAAM;EACpBC,KAAK,EAAE,CAAC;EAAE,GAAG,EAAE,OAAO;EACtBC,KAAK,EAAE,CAAC;EAAE,GAAG,EAAE,OAAO;EACtBC,KAAK,EAAE,CAAC;EAAE,GAAG,EAAE,OAAO;EACtBC,MAAM,EAAE,CAAC;EAAE,GAAG,EAAE,QAAQ;EACxBC,IAAI,EAAE,CAAC;EAAE,GAAG,EAAE;AAClB,CAAC,CAAC;AAIK,MAAMC,MAAM,GAAG5gB,MAAM,CAACqgB,MAAM,CAAC;EAChCQ,UAAU,EAAE,CAAC;EAAE,GAAG,EAAE,YAAY;EAChCC,oBAAoB,EAAE,CAAC;EAAE,GAAG,EAAE,sBAAsB;EACpDC,UAAU,EAAE,CAAC;EAAE,GAAG,EAAE,YAAY;EAChCC,oBAAoB,EAAE,CAAC;EAAE,GAAG,EAAE;AAClC,CAAC,CAAC;AAEF,eAAeC,UAAUA,CAACC,MAAM,EAAEC,OAAO,EAAE;EACvC,IAAI,OAAOC,QAAQ,KAAK,UAAU,IAAIF,MAAM,YAAYE,QAAQ,EAAE;IAC9D,IAAI,OAAOC,WAAW,CAACC,oBAAoB,KAAK,UAAU,EAAE;MACxD,IAAI;QACA,OAAO,MAAMD,WAAW,CAACC,oBAAoB,CAACJ,MAAM,EAAEC,OAAO,CAAC;MAElE,CAAC,CAAC,OAAOI,CAAC,EAAE;QACR,IAAIL,MAAM,CAACM,OAAO,CAACjV,GAAG,CAAC,cAAc,CAAC,IAAI,kBAAkB,EAAE;UAC1DzO,OAAO,CAACE,IAAI,CAAC,mMAAmM,EAAEujB,CAAC,CAAC;QAExN,CAAC,MAAM;UACH,MAAMA,CAAC;QACX;MACJ;IACJ;IAEA,MAAMjgB,KAAK,GAAG,MAAM4f,MAAM,CAACtK,WAAW,CAAC,CAAC;IACxC,OAAO,MAAMyK,WAAW,CAACI,WAAW,CAACngB,KAAK,EAAE6f,OAAO,CAAC;EAExD,CAAC,MAAM;IACH,MAAMO,QAAQ,GAAG,MAAML,WAAW,CAACI,WAAW,CAACP,MAAM,EAAEC,OAAO,CAAC;IAE\u002FD,IAAIO,QAAQ,YAAYL,WAAW,CAACM,QAAQ,EAAE;MAC1C,OAAO;QAAED,QAAQ;QAAER;MAAO,CAAC;IAE\u002FB,CAAC,MAAM;MACH,OAAOQ,QAAQ;IACnB;EACJ;AACJ;AAEA,SAASE,iBAAiBA,CAAA,EAAG;EACzB,MAAMT,OAAO,GAAG,CAAC,CAAC;EAClBA,OAAO,CAACU,GAAG,GAAG,CAAC,CAAC;EAChBV,OAAO,CAACU,GAAG,CAACC,iCAAiC,GAAG,UAASC,IAAI,EAAEC,IAAI,EAAE;IACjE\u002FD,WAAW,CAAC8D,IAAI,KAAK,CAAC,EAAEC,IAAI,KAAK,CAAC,CAAC;EACvC,CAAC;EACDb,OAAO,CAACU,GAAG,CAACI,8BAA8B,GAAG,UAASF,IAAI,EAAE;IACxD3D,QAAQ,CAAC2D,IAAI,KAAK,CAAC,CAAC;EACxB,CAAC;EACDZ,OAAO,CAACU,GAAG,CAACK,iCAAiC,GAAG,UAASH,IAAI,EAAE;IAC3D1D,WAAW,CAAC0D,IAAI,KAAK,CAAC,CAAC;EAC3B,CAAC;EACDZ,OAAO,CAACU,GAAG,CAACM,+BAA+B,GAAG,YAAW;IACrD,MAAMC,KAAK,GAAG9D,IAAI,CAAC+D,mBAAmB;IACtC,MAAMxK,MAAM,GAAGuK,KAAK,CAACE,IAAI,CAAC,CAAC,CAAC;IAC5BF,KAAK,CAAC\u002FQ,GAAG,CAAC,CAAC,EAAE9P,SAAS,CAAC;IACvB6gB,KAAK,CAAC\u002FQ,GAAG,CAACwG,MAAM,GAAG,CAAC,EAAEtW,SAAS,CAAC;IAChC6gB,KAAK,CAAC\u002FQ,GAAG,CAACwG,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC;IAC3BuK,KAAK,CAAC\u002FQ,GAAG,CAACwG,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC;IAC3BuK,KAAK,CAAC\u002FQ,GAAG,CAACwG,MAAM,GAAG,CAAC,EAAE,KAAK,CAAC;EAEhC,CAAC;EACDsJ,OAAO,CAACU,GAAG,CAACU,gBAAgB,GAAG,UAASR,IAAI,EAAEC,IAAI,EAAE;IAChD,MAAM,IAAI9jB,KAAK,CAAC0gB,kBAAkB,CAACmD,IAAI,EAAEC,IAAI,CAAC,CAAC;EACnD,CAAC;EAED,OAAOb,OAAO;AAClB;AAEA,SAASqB,iBAAiBA,CAACrB,OAAO,EAAExC,MAAM,EAAE,CAE5C;AAEA,SAAS8D,mBAAmBA,CAACf,QAAQ,EAAER,MAAM,EAAE;EAC3C5C,IAAI,GAAGoD,QAAQ,CAACgB,OAAO;EACvBC,UAAU,CAACC,sBAAsB,GAAG1B,MAAM;EAC1CzC,uBAAuB,GAAG,IAAI;EAG9BH,IAAI,CAACuE,gBAAgB,CAAC,CAAC;EACvB,OAAOvE,IAAI;AACf;AAEA,SAASwE,QAAQA,CAAC5B,MAAM,EAAE;EACtB,IAAI5C,IAAI,KAAK\u002Fc,SAAS,EAAE,OAAO+c,IAAI;EAGnC,IAAI,OAAO4C,MAAM,KAAK,WAAW,EAAE;IAC\u002FB,IAAIlhB,MAAM,CAAC+iB,cAAc,CAAC7B,MAAM,CAAC,KAAKlhB,MAAM,CAACS,SAAS,EAAE;MACpD,CAAC;QAACygB;MAAM,CAAC,GAAGA,MAAM;IACtB,CAAC,MAAM;MACHpjB,OAAO,CAACE,IAAI,CAAC,4EAA4E,CAAC;IAC9F;EACJ;EAEA,MAAMmjB,OAAO,GAAGS,iBAAiB,CAAC,CAAC;EAEnCY,iBAAiB,CAACrB,OAAO,CAAC;EAE1B,IAAI,EAAED,MAAM,YAAYG,WAAW,CAAC2B,MAAM,CAAC,EAAE;IACzC9B,MAAM,GAAG,IAAIG,WAAW,CAAC2B,MAAM,CAAC9B,MAAM,CAAC;EAC3C;EAEA,MAAMQ,QAAQ,GAAG,IAAIL,WAAW,CAACM,QAAQ,CAACT,MAAM,EAAEC,OAAO,CAAC;EAE1D,OAAOsB,mBAAmB,CAACf,QAAQ,EAAER,MAAM,CAAC;AAChD;AAEA,eAAeyB,UAAUA,CAACM,cAAc,EAAE;EACtC,IAAI3E,IAAI,KAAK\u002Fc,SAAS,EAAE,OAAO+c,IAAI;EAGnC,IAAI,OAAO2E,cAAc,KAAK,WAAW,EAAE;IACvC,IAAIjjB,MAAM,CAAC+iB,cAAc,CAACE,cAAc,CAAC,KAAKjjB,MAAM,CAACS,SAAS,EAAE;MAC5D,CAAC;QAACwiB;MAAc,CAAC,GAAGA,cAAc;IACtC,CAAC,MAAM;MACHnlB,OAAO,CAACE,IAAI,CAAC,2FAA2F,CAAC;IAC7G;EACJ;EAGA,MAAMmjB,OAAO,GAAGS,iBAAiB,CAAC,CAAC;EAEnC,IAAI,OAAOqB,cAAc,KAAK,QAAQ,IAAK,OAAOC,OAAO,KAAK,UAAU,IAAID,cAAc,YAAYC,OAAQ,IAAK,OAAO\u002FjB,GAAG,KAAK,UAAU,IAAI8jB,cAAc,YAAY9jB,GAAI,EAAE;IAC5K8jB,cAAc,GAAGrS,KAAK,CAACqS,cAAc,CAAC;EAC1C;EAEAT,iBAAiB,CAACrB,OAAO,CAAC;EAE1B,MAAM;IAAEO,QAAQ;IAAER;EAAO,CAAC,GAAG,MAAMD,UAAU,CAAC,MAAMgC,cAAc,EAAE9B,OAAO,CAAC;EAE5E,OAAOsB,mBAAmB,CAACf,QAAQ,EAAER,MAAM,CAAC;AAChD;AAEoB;AACpB,2CAAeyB,gDAAAA,UAAU;;;;;;;;;ACzOE;AACmB;AAY9C,SAASQ,cAAcA,CAACjE,GAAG,EAAEjS,IAAI,EAAEmW,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,OAAO,EAAE;EAC1D,MAAMC,UAAU,GAAG,CAAC;EACpBD,OAAO,GAAGA,OAAO,KAAK,CAAC,GAAG,CAAC,GAAGA,OAAO;EACrC,MAAME,MAAM,GAAGN,EAAE,GAAGE,EAAE;EACtB,MAAMK,MAAM,GAAGN,EAAE,GAAGE,EAAE;EACtB,IAAIK,QAAQ,GAAG,CAAC;IACdC,QAAQ;EACV,MAAMC,OAAO,GAAG,IAAIC,WAAW,CAACT,EAAE,CAAC;EACnC,MAAMU,UAAU,GAAGZ,EAAE,GAAGK,UAAU;EAElC,KAAK,IAAI5hB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyhB,EAAE,EAAEzhB,CAAC,EAAE,EAAE;IAC3BiiB,OAAO,CAACjiB,CAAC,CAAC,GAAGE,IAAI,CAACkiB,KAAK,CAACpiB,CAAC,GAAG6hB,MAAM,CAAC,GAAGD,UAAU;EAClD;EACA,KAAK,IAAI5hB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0hB,EAAE,EAAE1hB,CAAC,EAAE,EAAE;IAC3B,MAAMqiB,EAAE,GAAGniB,IAAI,CAACkiB,KAAK,CAACpiB,CAAC,GAAG8hB,MAAM,CAAC,GAAGK,UAAU;IAC9C,KAAK,IAAI7F,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGmF,EAAE,EAAEnF,CAAC,EAAE,EAAE;MAC3B0F,QAAQ,GAAGK,EAAE,GAAGJ,OAAO,CAAC3F,CAAC,CAAC;MAC1BlR,IAAI,CAAC2W,QAAQ,EAAE,CAAC,GAAG1E,GAAG,CAAC2E,QAAQ,EAAE,CAAC;MAClC5W,IAAI,CAAC2W,QAAQ,EAAE,CAAC,GAAG1E,GAAG,CAAC2E,QAAQ,EAAE,CAAC;MAClC5W,IAAI,CAAC2W,QAAQ,EAAE,CAAC,GAAG1E,GAAG,CAAC2E,QAAQ,EAAE,CAAC;MAClCD,QAAQ,IAAIJ,OAAO;IACrB;EACF;AACF;AAEA,SAASW,eAAeA,CAACjF,GAAG,EAAEjS,IAAI,EAAEmW,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEC,OAAO,EAAE;EAC3D,MAAME,MAAM,GAAGN,EAAE,GAAGE,EAAE;EACtB,MAAMK,MAAM,GAAGN,EAAE,GAAGE,EAAE;EACtB,IAAIK,QAAQ,GAAG,CAAC;EAChB,MAAME,OAAO,GAAG,IAAIC,WAAW,CAACT,EAAE,CAAC;EAEnC,IAAIE,OAAO,KAAK,CAAC,EAAE;IACjB,KAAK,IAAI3hB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyhB,EAAE,EAAEzhB,CAAC,EAAE,EAAE;MAC3BiiB,OAAO,CAACjiB,CAAC,CAAC,GAAGE,IAAI,CAACkiB,KAAK,CAACpiB,CAAC,GAAG6hB,MAAM,CAAC;IACrC;IACA,MAAMU,KAAK,GAAG,IAAIrhB,WAAW,CAACmc,GAAG,CAAClc,MAAM,CAAC;IACzC,MAAMqhB,MAAM,GAAG,IAAIthB,WAAW,CAACkK,IAAI,CAACjK,MAAM,CAAC;IAC3C,MAAMshB,OAAO,GAAGnhB,WAAW,CAACP,cAAc,GAAG,UAAU,GAAG,UAAU;IACpE,KAAK,IAAIf,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0hB,EAAE,EAAE1hB,CAAC,EAAE,EAAE;MAC3B,MAAM8K,GAAG,GAAGyX,KAAK,CAACliB,QAAQ,CAACH,IAAI,CAACkiB,KAAK,CAACpiB,CAAC,GAAG8hB,MAAM,CAAC,GAAGP,EAAE,CAAC;MACvD,KAAK,IAAIjF,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGmF,EAAE,EAAEnF,CAAC,EAAE,EAAE;QAC3BkG,MAAM,CAACT,QAAQ,EAAE,CAAC,IAAIjX,GAAG,CAACmX,OAAO,CAAC3F,CAAC,CAAC,CAAC,GAAGmG,OAAO;MACjD;IACF;EACF,CAAC,MAAM;IACL,MAAMb,UAAU,GAAG,CAAC;IACpB,MAAMO,UAAU,GAAGZ,EAAE,GAAGK,UAAU;IAClC,KAAK,IAAI5hB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyhB,EAAE,EAAEzhB,CAAC,EAAE,EAAE;MAC3BiiB,OAAO,CAACjiB,CAAC,CAAC,GAAGE,IAAI,CAACkiB,KAAK,CAACpiB,CAAC,GAAG6hB,MAAM,CAAC,GAAGD,UAAU;IAClD;IACA,KAAK,IAAI5hB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0hB,EAAE,EAAE1hB,CAAC,EAAE,EAAE;MAC3B,MAAM8K,GAAG,GAAGuS,GAAG,CAAChd,QAAQ,CAACH,IAAI,CAACkiB,KAAK,CAACpiB,CAAC,GAAG8hB,MAAM,CAAC,GAAGK,UAAU,CAAC;MAC7D,KAAK,IAAI7F,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGmF,EAAE,EAAEnF,CAAC,EAAE,EAAE;QAC3B,MAAM0F,QAAQ,GAAGC,OAAO,CAAC3F,CAAC,CAAC;QAC3BlR,IAAI,CAAC2W,QAAQ,EAAE,CAAC,GAAGjX,GAAG,CAACkX,QAAQ,CAAC;QAChC5W,IAAI,CAAC2W,QAAQ,EAAE,CAAC,GAAGjX,GAAG,CAACkX,QAAQ,GAAG,CAAC,CAAC;QACpC5W,IAAI,CAAC2W,QAAQ,EAAE,CAAC,GAAGjX,GAAG,CAACkX,QAAQ,GAAG,CAAC,CAAC;MACtC;IACF;EACF;AACF;AAEA,SAASU,aAAaA,CAACrF,GAAG,EAAEjS,IAAI,EAAEuW,OAAO,EAAE;EACzC,IAAIA,OAAO,KAAK,CAAC,EAAE;IACjB,MAAMY,KAAK,GAAG,IAAIrhB,WAAW,CAACmc,GAAG,CAAClc,MAAM,CAAC;IACzC,MAAMqhB,MAAM,GAAG,IAAIthB,WAAW,CAACkK,IAAI,CAACjK,MAAM,CAAC;IAC3C,MAAMshB,OAAO,GAAGnhB,WAAW,CAACP,cAAc,GAAG,UAAU,GAAG,UAAU;IACpE,KAAK,IAAIf,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAGwZ,KAAK,CAACrlB,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,EAAE,EAAE;MAC9CwiB,MAAM,CAACxiB,CAAC,CAAC,IAAIuiB,KAAK,CAACviB,CAAC,CAAC,GAAGyiB,OAAO;IACjC;EACF,CAAC,MAAM;IACL,IAAInG,CAAC,GAAG,CAAC;IACT,KAAK,IAAItc,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAGsU,GAAG,CAACngB,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,IAAI,CAAC,EAAE;MAC\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\u002FvB,IAAI,CAAC,yCAAyC,CAAC;MAC\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\u002FI,CAAC,EAAE;MAC\u002FC,MAAMI,KAAK,GAAGwuB,MAAM,CAAC5uB,CAAC,CAAC;MACvB,IAAI+uB,UAAU,GAAG,CAAC,EAAE;QAClBA,UAAU,GAAG3uB,KAAK;MACpB;MAEA,IAAIuyB,SAAS,IAAI,CAAC,IAAIA,SAAS,GAAG,CAAC,KAAKvyB,KAAK,EAAE;QAC7CsyB,aAAa,CAACpyB,IAAI,CAAC;UAAEyuB,UAAU;UAAEC,QAAQ,EAAE2D,SAAS,GAAG;QAAE,CAAC,CAAC;QAC3D5D,UAAU,GAAG3uB,KAAK;MACpB;MACA,IAAIJ,CAAC,GAAG,CAAC,KAAK4uB,MAAM,CAAC1xB,MAAM,EAAE;QAC3Bw1B,aAAa,CAACpyB,IAAI,CAAC;UAAEyuB,UAAU;UAAEC,QAAQ,EAAE5uB,KAAK,GAAG;QAAE,CAAC,CAAC;MACzD;MAEAuyB,SAAS,GAAGvyB,KAAK;IACnB;IACA,OAAOsyB,aAAa;EACtB;EAEA9B,UAAUA,CAACplB,IAAI,EAAE;IACf,IAAI,CAACwkB,UAAU,CAAChD,IAAI,CAAC,aAAa,EAAE;MAClC8D,MAAM,EAAE,IAAI,CAAChB,MAAM,CAACjB,eAAe,GAAG,IAAI,CAACR,SAAS,GAAG7iB,IAAI,CAACslB,MAAM;MAClE8B,KAAK,EAAE,IAAI,CAAC11B;IACd,CAAC,CAAC;EACJ;EAEA4xB,aAAaA,CAACtjB,IAAI,EAAE;IAClB,MAAMpL,KAAK,GAAGoL,IAAI,CAACpL,KAAK;IACxB,MAAMyyB,aAAa,GAAGrnB,IAAI,CAACwH,KAAK,KAAKtT,SAAS;IAC9C,MAAMsT,KAAK,GAAG6f,aAAa,GAAG,IAAI,CAACpE,qBAAqB,GAAGjjB,IAAI,CAACwH,KAAK;IACrE,MAAMC,GAAG,GAAGD,KAAK,GAAG5S,KAAK,CAACoU,UAAU;IAEpC,MAAMua,UAAU,GAAG7uB,IAAI,CAACkiB,KAAK,CAACpP,KAAK,GAAG,IAAI,CAACqb,SAAS,CAAC;IACrD,MAAMW,QAAQ,GACZ\u002Fb,GAAG,GAAG,IAAI,CAAC\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\u002FB\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\u002FB94B,CAAC,GAAG+I,EAAE,EACN\u002FI,CAAC,IAAI84B,MAAM,EAAE5S,CAAC,IAAI6S,OAAO,EACzB;cACAC,OAAO,CAACxpB,GAAG,CAACiF,IAAI,CAACpU,QAAQ,CAACL,CAAC,EAAEA,CAAC,GAAG84B,MAAM,CAAC,EAAE5S,CAAC,CAAC;YAC9C;YACAzR,IAAI,GAAGukB,OAAO;UAChB;UACA;QACF;MACA,KAAKjpC,SAAS,CAACE,SAAS;QAAE;UACxByoC,WAAW,GAAG,EAAE;UAChB,IAAIpd,KAAK,GAAG,CAAC,EAAE;YACb,MAAMwd,MAAM,GAAG,CAAC,GAAGxd,KAAK;YACxB,MAAMyd,OAAO,GAAID,MAAM,GAAG,CAAC,GAAI,CAAC,CAAC;YACjC,MAAMG,QAAQ,GAAGF,OAAO,GAAGD,MAAM;YACjC,MAAME,OAAO,GAAG,IAAIt4B,UAAU,CAACq4B,OAAO,GAAGxd,MAAM,CAAC;YAChD,IAAI2K,CAAC,GAAG,CAAC;YACT,KAAK,IAAIlmB,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAGwS,MAAM,GAAGud,MAAM,EAAE94B,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,IAAI84B,MAAM,EAAE;cACzD,MAAMI,GAAG,GAAGzkB,IAAI,CAACpU,QAAQ,CAACL,CAAC,EAAEA,CAAC,GAAG84B,MAAM,CAAC;cACxC,KAAK,IAAIxc,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGwc,MAAM,EAAExc,CAAC,IAAI,CAAC,EAAE;gBAClC0c,OAAO,CAAC9S,CAAC,EAAE,CAAC,GAAGgT,GAAG,CAAC5c,CAAC,GAAG,CAAC,CAAC;gBACzB0c,OAAO,CAAC9S,CAAC,EAAE,CAAC,GAAGgT,GAAG,CAAC5c,CAAC,GAAG,CAAC,CAAC;gBACzB0c,OAAO,CAAC9S,CAAC,EAAE,CAAC,GAAGgT,GAAG,CAAC5c,CAAC,CAAC;cACvB;cACA4J,CAAC,IAAI+S,QAAQ;YACf;YACAxkB,IAAI,GAAGukB,OAAO;UAChB,CAAC,MAAM;YACL,KAAK,IAAIh5B,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAG0L,IAAI,CAACvX,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,IAAI,CAAC,EAAE;cAEhD,MAAMm5B,GAAG,GAAG1kB,IAAI,CAACzU,CAAC,CAAC;cACnByU,IAAI,CAACzU,CAAC,CAAC,GAAGyU,IAAI,CAACzU,CAAC,GAAG,CAAC,CAAC;cACrByU,IAAI,CAACzU,CAAC,GAAG,CAAC,CAAC,GAAGm5B,GAAG;YACnB;UACF;UACA;QACF;MACA,KAAKppC,SAAS,CAACG,UAAU;QACvBwoC,WAAW,GAAG,EAAE;QAChBG,WAAW,GAAG,CAAC;QACfD,SAAS,GAAG,IAAIl4B,UAAU,CACxB,CAAC,GACC,CAAC,GACD,CAAC,GACD,CAAC,GACD,EACJ,CAAC;QACD,MAAM04B,IAAI,GAAG,IAAIC,QAAQ,CAACT,SAAS,CAACz3B,MAAM,CAAC;QAC3C,IAAIG,WAAW,CAACP,cAAc,EAAE;UAC9Bq4B,IAAI,CAACE,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC;UACnCF,IAAI,CAACE,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC;UACnCF,IAAI,CAACE,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC;UACnCF,IAAI,CAACE,SAAS,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC;QACtC,CAAC,MAAM;UACLF,IAAI,CAACE,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC;UACnCF,IAAI,CAACE,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC;UACnCF,IAAI,CAACE,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC;UACnCF,IAAI,CAACE,SAAS,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC;QACtC;QACA;MACF;QACE,MAAM,IAAIj9B,KAAK,CAAC,gBAAgB,CAAC;IACrC;IAEA,IAAI2D,CAAC,GAAG,CAAC;IACT,MAAMu5B,YAAY,GAAG,EAAE,GAAGX,SAAS,CAAC17B,MAAM;IAC1C,MAAMs8B,UAAU,GAAG,EAAE,GAAGD,YAAY,GAAGZ,UAAU,CAACz7B,MAAM,GAAGuX,IAAI,CAACvX,MAAM;IACtE,MAAMu8B,OAAO,GAAG,IAAI\u002F4B,UAAU,CAAC84B,UAAU,CAAC;IAC1C,MAAMJ,IAAI,GAAG,IAAIC,QAAQ,CAACI,OAAO,CAACt4B,MAAM,CAAC;IAGzCi4B,IAAI,CAACM,SAAS,CAAC15B,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC;IAC\u002FBA,CAAC,IAAI,CAAC;IAGNo5B,IAAI,CAACE,SAAS,CAACt5B,CAAC,EAAEw5B,UAAU,EAAE,IAAI,CAAC;IACnCx5B,CAAC,IAAI,CAAC;IAGNo5B,IAAI,CAACE,SAAS,CAACt5B,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;IAC1BA,CAAC,IAAI,CAAC;IAGNo5B,IAAI,CAACE,SAAS,CAACt5B,CAAC,EAAE,EAAE,GAAGu5B,YAAY,GAAGZ,UAAU,CAACz7B,MAAM,EAAE,IAAI,CAAC;IAC9D8C,CAAC,IAAI,CAAC;IAGNo5B,IAAI,CAACE,SAAS,CAACt5B,CAAC,EAAEu5B,YAAY,EAAE,IAAI,CAAC;IACrCv5B,CAAC,IAAI,CAAC;IAGNo5B,IAAI,CAACO,QAAQ,CAAC35B,CAAC,EAAEsb,KAAK,EAAE,IAAI,CAAC;IAC7Btb,CAAC,IAAI,CAAC;IAINo5B,IAAI,CAACO,QAAQ,CAAC35B,CAAC,EAAE,CAACub,MAAM,EAAE,IAAI,CAAC;IAC\u002FBvb,CAAC,IAAI,CAAC;IAGNo5B,IAAI,CAACM,SAAS,CAAC15B,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;IAC1BA,CAAC,IAAI,CAAC;IAGNo5B,IAAI,CAACM,SAAS,CAAC15B,CAAC,EAAE04B,WAAW,EAAE,IAAI,CAAC;IACpC14B,CAAC,IAAI,CAAC;IAGNo5B,IAAI,CAACE,SAAS,CAACt5B,CAAC,EAAE64B,WAAW,EAAE,IAAI,CAAC;IACpC74B,CAAC,IAAI,CAAC;IAGNo5B,IAAI,CAACE,SAAS,CAACt5B,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;IAC1BA,CAAC,IAAI,CAAC;IAGNo5B,IAAI,CAACO,QAAQ,CAAC35B,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;IACzBA,CAAC,IAAI,CAAC;IAGNo5B,IAAI,CAACO,QAAQ,CAAC35B,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;IACzBA,CAAC,IAAI,CAAC;IAGNo5B,IAAI,CAACE,SAAS,CAACt5B,CAAC,EAAE24B,UAAU,CAACz7B,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC;IAC9C8C,CAAC,IAAI,CAAC;IAGNo5B,IAAI,CAACE,SAAS,CAACt5B,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC;IAC1BA,CAAC,IAAI,CAAC;IAENy5B,OAAO,CAACjqB,GAAG,CAACopB,SAAS,EAAE54B,CAAC,CAAC;IACzBA,CAAC,IAAI44B,SAAS,CAAC17B,MAAM;IAErBu8B,OAAO,CAACjqB,GAAG,CAACmpB,UAAU,EAAE34B,CAAC,CAAC;IAC1BA,CAAC,IAAI24B,UAAU,CAACz7B,MAAM;IAEtBu8B,OAAO,CAACjqB,GAAG,CAACiF,IAAI,EAAEzU,CAAC,CAAC;IAEpB,OAAOy5B,OAAO;EAChB;AACF;;;;;;;;;;;;;;;AC\u002FhB8C;AACT;AAMrC,MAAMG,WAAW,GAAG,IAAIl5B,UAAU,CAAC,CAAC,CAAC;AAGrC,MAAMm5B,YAAY,SAAS\u002FnB,UAAU,CAAC;EACpCjT,WAAWA,CAACi7B,oBAAoB,EAAE;IAChC,KAAK,CAAC,CAAC;IACP,IAAI,CAACC,mBAAmB,GAAGD,oBAAoB,IAAI,CAAC;IAEpD,IAAI,CAACn2B,GAAG,GAAG,CAAC;IACZ,IAAI,CAACq2B,YAAY,GAAG,CAAC;IACrB,IAAI,CAACC,GAAG,GAAG,KAAK;IAChB,IAAI,CAAC94B,MAAM,GAAGy4B,WAAW;IACzB,IAAI,CAACM,eAAe,GAAG,GAAG;IAC1B,IAAIJ,oBAAoB,EAAE;MAExB,OAAO,IAAI,CAACI,eAAe,GAAGJ,oBAAoB,EAAE;QAClD,IAAI,CAACI,eAAe,IAAI,CAAC;MAC3B;IACF;EACF;EAEA,IAAInoB,OAAOA,CAAA,EAAG;IACZ,OAAO,CAAC,IAAI,CAACkoB,GAAG,IAAI,IAAI,CAACD,YAAY,KAAK,CAAC,EAAE;MAC3C,IAAI,CAACG,SAAS,CAAC,CAAC;IAClB;IACA,OAAO,IAAI,CAACH,YAAY,KAAK,CAAC;EAChC;EAEAI,YAAYA,CAACC,SAAS,EAAE;IACtB,MAAMl5B,MAAM,GAAG,IAAI,CAACA,MAAM;IAC1B,IAAIk5B,SAAS,IAAIl5B,MAAM,CAACqT,UAAU,EAAE;MAClC,OAAOrT,MAAM;IACf;IACA,IAAIuN,IAAI,GAAG,IAAI,CAACwrB,eAAe;IAC\u002FB,OAAOxrB,IAAI,GAAG2rB,SAAS,EAAE;MACvB3rB,IAAI,IAAI,CAAC;IACX;IACA,MAAM4rB,OAAO,GAAG,IAAI55B,UAAU,CAACgO,IAAI,CAAC;IACpC4rB,OAAO,CAAC9qB,GAAG,CAACrO,MAAM,CAAC;IACnB,OAAQ,IAAI,CAACA,MAAM,GAAGm5B,OAAO;EAC\u002FB;EAEAroB,OAAOA,CAAA,EAAG;IACR,MAAMtO,GAAG,GAAG,IAAI,CAACA,GAAG;IACpB,OAAO,IAAI,CAACq2B,YAAY,IAAIr2B,GAAG,EAAE;MAC\u002FB,IAAI,IAAI,CAACs2B,GAAG,EAAE;QACZ,OAAO,CAAC,CAAC;MACX;MACA,IAAI,CAACE,SAAS,CAAC,CAAC;IAClB;IACA,OAAO,IAAI,CAACh5B,MAAM,CAAC,IAAI,CAACwC,GAAG,EAAE,CAAC;EAChC;EAEAuO,QAAQA,CAAChV,MAAM,EAAEkV,cAAc,GAAG,IAAI,EAAE;IACtC,MAAMzO,GAAG,GAAG,IAAI,CAACA,GAAG;IACpB,IAAIsP,GAAG;IAEP,IAAI\u002FV,MAAM,EAAE;MACV,IAAI,CAACk9B,YAAY,CAACz2B,GAAG,GAAGzG,MAAM,CAAC;MAC\u002FB+V,GAAG,GAAGtP,GAAG,GAAGzG,MAAM;MAElB,OAAO,CAAC,IAAI,CAAC+8B,GAAG,IAAI,IAAI,CAACD,YAAY,GAAG\u002FmB,GAAG,EAAE;QAC3C,IAAI,CAACknB,SAAS,CAAC\u002FnB,cAAc,CAAC;MAChC;MACA,MAAMmoB,MAAM,GAAG,IAAI,CAACP,YAAY;MAChC,IAAI\u002FmB,GAAG,GAAGsnB,MAAM,EAAE;QAChBtnB,GAAG,GAAGsnB,MAAM;MACd;IACF,CAAC,MAAM;MACL,OAAO,CAAC,IAAI,CAACN,GAAG,EAAE;QAChB,IAAI,CAACE,SAAS,CAAC\u002FnB,cAAc,CAAC;MAChC;MACAa,GAAG,GAAG,IAAI,CAAC+mB,YAAY;IACzB;IAEA,IAAI,CAACr2B,GAAG,GAAGsP,GAAG;IACd,OAAO,IAAI,CAAC9R,MAAM,CAACd,QAAQ,CAACsD,GAAG,EAAEsP,GAAG,CAAC;EACvC;EAEA,MAAMd,YAAYA,CAACjV,MAAM,EAAEkV,cAAc,EAAE;IACzC,IAAI,CAAC,IAAI,CAACI,6BAA6B,EAAE;MACvC,IAAI,IAAI,CAACD,cAAc,EAAE;QACvB,OAAO,IAAI,CAACioB,WAAW,CAAC,IAAI,EAAEpoB,cAAc,CAAC;MAC\u002FC;MACA,OAAO,IAAI,CAACF,QAAQ,CAAChV,MAAM,EAAEkV,cAAc,CAAC;IAC9C;IACA,MAAMqC,IAAI,GAAG,MAAM,IAAI,CAACqb,MAAM,CAACzd,aAAa,CAAC,CAAC;IAC9C,OAAO,IAAI,CAACmoB,WAAW,CAAC\u002FlB,IAAI,EAAErC,cAAc,CAAC;EAC\u002FC;EAEAgB,KAAKA,CAAA,EAAG;IACN,IAAI,CAACzP,GAAG,GAAG,CAAC;EACd;EAEA2P,aAAaA,CAACC,KAAK,EAAErW,MAAM,EAAEgT,IAAI,GAAG,IAAI,EAAE;IACxC,IAAIhT,MAAM,KAAKwC,SAAS,EAAE;MACxB,OAAO,CAAC,IAAI,CAACu6B,GAAG,EAAE;QAChB,IAAI,CAACE,SAAS,CAAC,CAAC;MAClB;IACF,CAAC,MAAM;MACL,MAAMlnB,GAAG,GAAGM,KAAK,GAAGrW,MAAM;MAC1B,OAAO,IAAI,CAAC88B,YAAY,IAAI\u002FmB,GAAG,IAAI,CAAC,IAAI,CAACgnB,GAAG,EAAE;QAC5C,IAAI,CAACE,SAAS,CAAC,CAAC;MAClB;IACF;IACA,OAAO,IAAInM,MAAM,CAAC,IAAI,CAAC7sB,MAAM,EAAEoS,KAAK,EAAErW,MAAM,EAAEgT,IAAI,CAAC;EACrD;EAEAsD,cAAcA,CAAA,EAAG;IACf,OAAO,IAAI,CAAC\u002FS,GAAG,GAAG,IAAI,CAACA,GAAG,CAAC+S,cAAc,CAAC,CAAC,GAAG,IAAI;EACpD;AACF;AAEA,MAAMinB,qBAAqB,SAASZ,YAAY,CAAC;EAC\u002FCh7B,WAAWA,CAAC67B,OAAO,EAAE1H,OAAO,GAAG,IAAI,EAAE;IACnC0H,OAAO,GAAGA,OAAO,CAACC,MAAM,CAAC1tB,CAAC,IAAIA,CAAC,YAAY6E,UAAU,CAAC;IAEtD,IAAI8oB,WAAW,GAAG,CAAC;IACnB,KAAK,MAAM9K,MAAM,IAAI4K,OAAO,EAAE;MAC5BE,WAAW,IACT9K,MAAM,YAAY+J,YAAY,GAC1B\u002FJ,MAAM,CAACiK,mBAAmB,GAC1BjK,MAAM,CAAC5yB,MAAM;IACrB;IACA,KAAK,CAAC09B,WAAW,CAAC;IAElB,IAAI,CAACF,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACG,QAAQ,GAAG7H,OAAO;EACzB;EAEAmH,SAASA,CAAA,EAAG;IACV,MAAMO,OAAO,GAAG,IAAI,CAACA,OAAO;IAC5B,IAAIA,OAAO,CAACx9B,MAAM,KAAK,CAAC,EAAE;MACxB,IAAI,CAAC+8B,GAAG,GAAG,IAAI;MACf;IACF;IACA,MAAMnK,MAAM,GAAG4K,OAAO,CAACI,KAAK,CAAC,CAAC;IAC9B,IAAI16B,KAAK;IACT,IAAI;MACFA,KAAK,GAAG0vB,MAAM,CAAC5d,QAAQ,CAAC,CAAC;IAC3B,CAAC,CAAC,OAAO9E,MAAM,EAAE;MACf,IAAI,IAAI,CAACytB,QAAQ,EAAE;QACjB,IAAI,CAACA,QAAQ,CAACztB,MAAM,EAAE0iB,MAAM,CAAC5f,IAAI,EAAE7B,KAAK,CAAC;QACzC;MACF;MACA,MAAMjB,MAAM;IACd;IACA,MAAM4sB,YAAY,GAAG,IAAI,CAACA,YAAY;IACtC,MAAMe,SAAS,GAAGf,YAAY,GAAG55B,KAAK,CAAClD,MAAM;IAC7C,MAAMiE,MAAM,GAAG,IAAI,CAACi5B,YAAY,CAACW,SAAS,CAAC;IAC3C55B,MAAM,CAACqO,GAAG,CAACpP,KAAK,EAAE45B,YAAY,CAAC;IAC\u002FB,IAAI,CAACA,YAAY,GAAGe,SAAS;EAC\u002FB;EAEAvnB,cAAcA,CAAA,EAAG;IACf,MAAMwnB,cAAc,GAAG,EAAE;IACzB,KAAK,MAAMlL,MAAM,IAAI,IAAI,CAAC4K,OAAO,EAAE;MACjC,MAAMO,WAAW,GAAGnL,MAAM,CAACtc,cAAc,CAAC,CAAC;MAC3C,IAAIynB,WAAW,EAAE;QACfD,cAAc,CAAC16B,IAAI,CAAC,GAAG26B,WAAW,CAAC;MACrC;IACF;IACA,OAAOD,cAAc,CAAC99B,MAAM,GAAG,CAAC,GAAG89B,cAAc,GAAG,IAAI;EAC1D;AACF;;;AChKyB;AAC2C;AAClB;AACuB;AAClB;AAEvD,MAAME,eAAe,CAAC;EACpB,OAAO39B,KAAKA,CAAC;IACX49B,EAAE;IACFhtB,IAAI;IACJitB,SAAS,GAAG,IAAI;IAChBC,kBAAkB;IAClBC,qBAAqB;IACrBC,oBAAoB;IACpBC,gBAAgB,GAAG;EACrB,CAAC,EAAE;IASD,MAAM3+B,OAAO,GAAG;MACdsR,IAAI;MACJitB,SAAS;MACTC,kBAAkB;MAClBC,qBAAqB;MACrBC;IACF,CAAC;IACD,IAAIE,MAAM,EAAEC,KAAK,EAAEC,QAAQ;IAG3B,IAAIR,EAAE,YAAYrsB,GAAG,EAAE;MACrB4sB,KAAK,GAAGP,EAAE;MAEV,MAAMS,QAAQ,GACZN,qBAAqB,CAACO,QAAQ,CAACH,KAAK,CAAC,IACrCH,oBAAoB,CAACM,QAAQ,CAACH,KAAK,CAAC;MACtC,IAAIE,QAAQ,EAAE;QACZ,OAAOA,QAAQ;MACjB;MACAT,EAAE,GAAGhtB,IAAI,CAACY,KAAK,CAACosB,EAAE,CAAC;IACrB;IACA,IAAIA,EAAE,YAAYrtB,IAAI,EAAE;MACtB2tB,MAAM,GAAGN,EAAE,CAACx8B,IAAI;MAEhB,MAAMi9B,QAAQ,GAAGL,oBAAoB,CAACO,SAAS,CAACL,MAAM,CAAC;MACvD,IAAIG,QAAQ,EAAE;QACZ,OAAOA,QAAQ;MACjB;IACF;IAEA,IAAI;MACFD,QAAQ,GAAG,IAAI,CAAC,CAACp+B,KAAK,CAAC49B,EAAE,EAAEt+B,OAAO,CAAC;IACrC,CAAC,CAAC,OAAOiM,EAAE,EAAE;MACX,IAAI0yB,gBAAgB,IAAI,EAAE1yB,EAAE,YAAYoL,oBAAoB,CAAC,EAAE;QAC7D,OAAOoc,OAAO,CAACU,MAAM,CAACloB,EAAE,CAAC;MAC3B;MACA,MAAMA,EAAE;IACV;IAGA,IAAI2yB,MAAM,IAAIC,KAAK,EAAE;MACnBH,oBAAoB,CAAC\u002FrB,GAAG,CAACisB,MAAM,EAAEC,KAAK,EAAEC,QAAQ,CAAC;MAEjD,IAAID,KAAK,EAAE;QACTJ,qBAAqB,CAAC9rB,GAAG,CAAc,IAAI,EAAEksB,KAAK,EAAEC,QAAQ,CAAC;MAC\u002FD;IACF;IACA,OAAOH,gBAAgB,GAAGlL,OAAO,CAACS,OAAO,CAAC4K,QAAQ,CAAC,GAAGA,QAAQ;EAChE;EAMA,OAAO,CAACI,QAAQC,CAACb,EAAE,EAAEt+B,OAAO,EAAE;IAC5B,MAAM;MAAEy+B;IAAsB,CAAC,GAAGz+B,OAAO;IACzC,IAAI6+B,KAAK;IAGT,IAAIP,EAAE,YAAYrsB,GAAG,EAAE;MACrB4sB,KAAK,GAAGP,EAAE;MAEV,MAAMS,QAAQ,GAAGN,qBAAqB,CAACO,QAAQ,CAACH,KAAK,CAAC;MACtD,IAAIE,QAAQ,EAAE;QACZ,OAAOA,QAAQ;MACjB;IACF;IACA,MAAMD,QAAQ,GAAG,IAAI,CAAC,CAACp+B,KAAK,CAAC49B,EAAE,EAAEt+B,OAAO,CAAC;IAGzC,IAAI6+B,KAAK,EAAE;MACTJ,qBAAqB,CAAC9rB,GAAG,CAAc,IAAI,EAAEksB,KAAK,EAAEC,QAAQ,CAAC;IAC\u002FD;IACA,OAAOA,QAAQ;EACjB;EAEA,OAAO,CAACp+B,KAAK0+B,CAACd,EAAE,EAAEt+B,OAAO,EAAE;IACzB,MAAM;MAAEsR,IAAI;MAAEitB,SAAS;MAAEC,kBAAkB;MAAEC;IAAsB,CAAC,GAClEz+B,OAAO;IAETs+B,EAAE,GAAGhtB,IAAI,CAAC+tB,UAAU,CAACf,EAAE,CAAC;IACxB,IAAIA,EAAE,YAAYrtB,IAAI,EAAE;MACtB,QAAQqtB,EAAE,CAACx8B,IAAI;QACb,KAAK,GAAG;QACR,KAAK,YAAY;UACf,OAAO,IAAI,CAACw9B,IAAI;QAClB,KAAK,KAAK;QACV,KAAK,WAAW;UACd,OAAO,IAAI,CAACC,GAAG;QACjB,KAAK,YAAY;UACf,OAAO,IAAI,CAACC,IAAI;QAClB,KAAK,MAAM;QACX,KAAK,YAAY;UACf,OAAO,IAAI,CAACC,IAAI;QAClB,KAAK,SAAS;UACZ,OAAO,IAAInX,SAAS,CAAgB,IAAI,CAAC;QAC3C;UACE,IAAIiW,SAAS,YAAYltB,IAAI,EAAE;YAC7B,MAAMquB,WAAW,GAAGnB,SAAS,CAAC1wB,GAAG,CAAC,YAAY,CAAC;YAC\u002FC,IAAI6xB,WAAW,YAAYruB,IAAI,EAAE;cAC\u002FB,MAAMsuB,WAAW,GAAGD,WAAW,CAAC7xB,GAAG,CAACywB,EAAE,CAACx8B,IAAI,CAAC;cAC5C,IAAI69B,WAAW,EAAE;gBACf,IAAIA,WAAW,YAAY1uB,IAAI,EAAE;kBAC\u002FB,OAAO,IAAI,CAAC,CAACvQ,KAAK,CAACi\u002FB,WAAW,EAAE3\u002FB,OAAO,CAAC;gBAC1C;gBACAs+B,EAAE,GAAGqB,WAAW;gBAChB;cACF;YACF;UACF;UAEArgC,IAAI,CAAC,4BAA4Bg\u002FB,EAAE,CAACx8B,IAAI,EAAE,CAAC;UAC3C,OAAO,IAAI,CAACw9B,IAAI;MACpB;IACF;IACA,IAAI15B,KAAK,CAAC4I,OAAO,CAAC8vB,EAAE,CAAC,EAAE;MACrB,MAAMsB,IAAI,GAAGtuB,IAAI,CAAC+tB,UAAU,CAACf,EAAE,CAAC,CAAC,CAAC,CAAC,CAACx8B,IAAI;MACxC,IAAIy0B,MAAM,EAAEtQ,QAAQ,EAAEsC,MAAM,EAAEgB,UAAU,EAAEC,UAAU,EAAEC,KAAK;MAE3D,QAAQmW,IAAI;QACV,KAAK,GAAG;QACR,KAAK,YAAY;UACf,OAAO,IAAI,CAACN,IAAI;QAClB,KAAK,KAAK;QACV,KAAK,WAAW;UACd,OAAO,IAAI,CAACC,GAAG;QACjB,KAAK,MAAM;QACX,KAAK,YAAY;UACf,OAAO,IAAI,CAACE,IAAI;QAClB,KAAK,SAAS;UACZlJ,MAAM,GAAGjlB,IAAI,CAAC+tB,UAAU,CAACf,EAAE,CAAC,CAAC,CAAC,CAAC;UAC\u002FB\u002FU,UAAU,GAAGgN,MAAM,CAAClkB,QAAQ,CAAC,YAAY,CAAC;UAC1CmX,UAAU,GAAG+M,MAAM,CAAClkB,QAAQ,CAAC,YAAY,CAAC;UAC1CoX,KAAK,GAAG8M,MAAM,CAAC1oB,GAAG,CAAC,OAAO,CAAC;UAC3B,OAAO,IAAIyb,SAAS,CAACC,UAAU,EAAEC,UAAU,EAAEC,KAAK,CAAC;QACrD,KAAK,QAAQ;UACX8M,MAAM,GAAGjlB,IAAI,CAAC+tB,UAAU,CAACf,EAAE,CAAC,CAAC,CAAC,CAAC;UAC\u002FB\u002FU,UAAU,GAAGgN,MAAM,CAAClkB,QAAQ,CAAC,YAAY,CAAC;UAC1CmX,UAAU,GAAG+M,MAAM,CAAClkB,QAAQ,CAAC,YAAY,CAAC;UAC1CoX,KAAK,GAAG8M,MAAM,CAAClkB,QAAQ,CAAC,OAAO,CAAC;UAChC,MAAMrJ,MAAM,GAAGutB,MAAM,CAAClkB,QAAQ,CAAC,QAAQ,CAAC;UACxC,OAAO,IAAIgY,QAAQ,CAACd,UAAU,EAAEC,UAAU,EAAEC,KAAK,EAAEzgB,MAAM,CAAC;QAC5D,KAAK,UAAU;UACb,MAAM62B,KAAK,GAAGvB,EAAE,CAAC,CAAC,CAAC,YAAYrsB,GAAG;UAClC,IAAI4tB,KAAK,EAAE;YACT,MAAMd,QAAQ,GAAGN,qBAAqB,CAACO,QAAQ,CAACV,EAAE,CAAC,CAAC,CAAC,CAAC;YACtD,IAAIS,QAAQ,EAAE;cACZ,OAAOA,QAAQ;YACjB;UACF;UAEA,MAAM9L,MAAM,GAAG3hB,IAAI,CAAC+tB,UAAU,CAACf,EAAE,CAAC,CAAC,CAAC,CAAC;UACrC,MAAMjrB,IAAI,GAAG4f,MAAM,CAAC5f,IAAI;UACxB4S,QAAQ,GAAG5S,IAAI,CAACxF,GAAG,CAAC,GAAG,CAAC;UAExB,IAAIuiB,aAAa,CAACO,QAAQ,EAAE;YAC1B,IAAI;cACF,MAAMmP,KAAK,GAAG,IAAI1P,aAAa,CAC7B6C,MAAM,CAAC5d,QAAQ,CAAC,CAAC,EACjB,UAAU,EACV4Q,QACF,CAAC;cACD,IAAI4Z,KAAK,EAAE;gBACTpB,qBAAqB,CAAC9rB,GAAG,CAAc,IAAI,EAAE2rB,EAAE,CAAC,CAAC,CAAC,EAAEwB,KAAK,CAAC;cAC5D;cACA,OAAOA,KAAK;YACd,CAAC,CAAC,OAAO7zB,EAAE,EAAE;cACX,IAAIA,EAAE,YAAYoL,oBAAoB,EAAE;gBACtC,MAAMpL,EAAE;cACV;cACA3M,IAAI,CAAC,yBAAyBg\u002FB,EAAE,CAAC,CAAC,CAAC,OAAOryB,EAAE,IAAI,CAAC;YACnD;UACF;UAEA,MAAM8zB,MAAM,GAAG1sB,IAAI,CAACf,MAAM,CAAC,WAAW,CAAC;UACvC,IAAIytB,MAAM,EAAE;YACV,MAAMC,KAAK,GAAG,IAAI,CAAC,CAACd,QAAQ,CAACa,MAAM,EAAE\u002F\u002FB,OAAO,CAAC;YAG7C,IAAIggC,KAAK,CAAC\u002FZ,QAAQ,KAAKA,QAAQ,EAAE;cAC\u002FB,OAAO+Z,KAAK;YACd;YACA1gC,IAAI,CAAC,4DAA4D,CAAC;UACpE;UACA,IAAI2mB,QAAQ,KAAK,CAAC,EAAE;YAClB,OAAO,IAAI,CAACqZ,IAAI;UAClB,CAAC,MAAM,IAAIrZ,QAAQ,KAAK,CAAC,EAAE;YACzB,OAAO,IAAI,CAACsZ,GAAG;UACjB,CAAC,MAAM,IAAItZ,QAAQ,KAAK,CAAC,EAAE;YACzB,OAAO,IAAI,CAACwZ,IAAI;UAClB;UACA;QACF,KAAK,SAAS;UACZlX,MAAM,GAAG+V,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI;UACtB,IAAI\u002FV,MAAM,EAAE;YACVA,MAAM,GAAG,IAAI,CAAC,CAAC2W,QAAQ,CAAC3W,MAAM,EAAEvoB,OAAO,CAAC;UAC1C;UACA,OAAO,IAAIsoB,SAAS,CAACC,MAAM,CAAC;QAC9B,KAAK,GAAG;QACR,KAAK,SAAS;UACZA,MAAM,GAAG,IAAI,CAAC,CAAC2W,QAAQ,CAACZ,EAAE,CAAC,CAAC,CAAC,EAAEt+B,OAAO,CAAC;UACvC,MAAMigC,KAAK,GAAGlxB,SAAS,CAACuC,IAAI,CAAC+tB,UAAU,CAACf,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;UACvD,MAAMlnB,MAAM,GAAG9F,IAAI,CAAC+tB,UAAU,CAACf,EAAE,CAAC,CAAC,CAAC,CAAC;UACrC,OAAO,IAAI9V,SAAS,CAACD,MAAM,EAAE0X,KAAK,EAAE7oB,MAAM,CAAC;QAC7C,KAAK,YAAY;QACjB,KAAK,SAAS;UACZ,MAAMtV,IAAI,GAAGwP,IAAI,CAAC+tB,UAAU,CAACf,EAAE,CAAC,CAAC,CAAC,CAAC;UACnCrY,QAAQ,GAAGrgB,KAAK,CAAC4I,OAAO,CAAC1M,IAAI,CAAC,GAAGA,IAAI,CAACzB,MAAM,GAAG,CAAC;UAChDkoB,MAAM,GAAG,IAAI,CAAC,CAAC2W,QAAQ,CAACZ,EAAE,CAAC,CAAC,CAAC,EAAEt+B,OAAO,CAAC;UACvC,MAAM8nB,MAAM,GAAG0W,kBAAkB,CAAC3tB,MAAM,CAACytB,EAAE,CAAC,CAAC,CAAC,CAAC;UAC\u002FC,OAAO,IAAI1W,WAAW,CAAC3B,QAAQ,EAAEsC,MAAM,EAAET,MAAM,CAAC;QAClD,KAAK,KAAK;UACRyO,MAAM,GAAGjlB,IAAI,CAAC+tB,UAAU,CAACf,EAAE,CAAC,CAAC,CAAC,CAAC;UAC\u002FB\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\u002FB,KAAKA,CAAC+\u002FB,IAAI,EAAC;MAAC\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\u002FV,CAAC,EAACuc,YAAY;MAAC\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\u002FlC,IAAI;QACrB6G,KAAK,EAAEk\u002FB,UAAU,CAACl\u002FB,KAAK;QACvBC,MAAM,EAAEi\u002FB,UAAU,CAACj\u002FB,MAAM;QACzBk\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\u002FC,OAAO,GAAG,CAAC,CAAC,EAAEp\u002FC,KAAK,CAACy6C,SAAS,EAAEM,OAAO,EAAEh4C,CAAC,CAAC;QAChD,IAAIq8C,OAAO,EAAE;UACXr8C,CAAC,EAAE;UACH;QACF;QAEAA,CAAC,GAAG,CAAC,CAAC,EAAE\u002FC,KAAK,CAAC06C,SAAS,EAAEK,OAAO,EAAEh4C,CAAC,GAAG,CAAC,CAAC;QACxC+I,EAAE,GAAGkvC,OAAO,CAAC\u002F6C,MAAM;QACnBD,KAAK,GAAG,IAAI;QACZ26C,KAAK,GAAG,IAAI;QACZ,IAAI53C,CAAC,IAAI+I,EAAE,EAAE;UACX;QACF;MACF;MAEA6uC,KAAK,GAAG,CAACA,KAAK,IAAIE,YAAY,EAAEG,OAAO,CAACj4C,CAAC,CAAC,CAAC;MAC3C,IAAI,CAAC43C,KAAK,IAAIn1C,KAAK,CAAC4I,OAAO,CAACusC,KAAK,CAAC,EAAE;QAClC53C,CAAC,EAAE;QACH;MACF;MAEAg4C,OAAO,CAACG,KAAK,GAAGn4C,CAAC;MACjBA,CAAC,EAAE;MACH,IAAI43C,KAAK,CAACH,OAAO,IAAI,CAAC,CAAC,CAAC,EAAEG,KAAK,CAACH,OAAO,EAAEO,OAAO,CAAC,EAAE;QAEjDJ,KAAK,GAAG,IAAI;QACZ;MACF;MACA36C,KAAK,GAAG26C,KAAK;MACbA,KAAK,GAAG,IAAI;IACd;IACA,IAAI,CAACA,KAAK,GAAGA,KAAK;IAClB,IAAI,CAAC36C,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACm\u002FC,aAAa,GAAGp8C,CAAC;EACxB;EAEAi8C,KAAKA,CAAA,EAAG;IACN,OAAO,IAAI,CAACh\u002FC,KAAK,EAAE;MACjB,MAAMC,MAAM,GAAG,IAAI,CAAC4+C,KAAK,CAAC7D,OAAO,CAAC\u002F6C,MAAM;MACxC,IAAI,CAACk\u002FC,aAAa,GAAG,CAAC,CAAC,EAAE,IAAI,CAACn\u002FC,KAAK,CAAC06C,SAAS,EAAE,IAAI,CAACK,OAAO,EAAE96C,MAAM,CAAC;MACpE,IAAI,CAACD,KAAK,GAAG,IAAI;MACjB,IAAI,CAAC26C,KAAK,GAAG,IAAI;MAEjB,IAAI,CAACmE,SAAS,CAAC,CAAC;IAClB;EACF;EAEA3oC,KAAKA,CAAA,EAAG;IACN,IAAI,CAACwkC,KAAK,GAAG,IAAI;IACjB,IAAI,CAAC36C,KAAK,GAAG,IAAI;IACjB,IAAI,CAACm\u002FC,aAAa,GAAG,CAAC;EACxB;AACF;AAEA,MAAMD,YAAY,CAAC;EACjB,OAAOG,UAAU,GAAG,IAAI;EAGxB,OAAOC,gBAAgB,GAAG,IAAI,CAACD,UAAU,GAAG,CAAC;EAE7C,OAAO\u002F6C,0BAA0B,GAAG,KAAK;EAEzC1C,WAAWA,CAACuf,MAAM,GAAG,CAAC,EAAEo+B,UAAU,EAAE;IAClC,IAAI,CAACC,WAAW,GAAGD,UAAU;IAC7B,IAAI,CAACvE,OAAO,GAAG,EAAE;IACjB,IAAI,CAACQ,SAAS,GAAG,EAAE;IACnB,IAAI,CAACiE,SAAS,GACZF,UAAU,IAAI,EAAEp+B,MAAM,GAAG9xB,mBAAmB,CAACS,MAAM,CAAC,GAChD,IAAImvD,cAAc,CAAC,IAAI,CAAC,GACxB,IAAIL,aAAa,CAAC,IAAI,CAAC;IAC7B,IAAI,CAACc,YAAY,GAAG,IAAI3rC,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC4rC,YAAY,GAAG,CAAC;IACrB,IAAI,CAAC\u002FiC,MAAM,GAAG,CAAC;IACf,IAAI,CAACgjC,SAAS,GAAGL,UAAU,GAAG,IAAI,GAAGlsB,OAAO,CAACS,OAAO,CAAC,CAAC;EACxD;EAEA,OAAOpD,UAAUA,CAAC;IAAEpsB;EAA2B,CAAC,EAAE;IAChD,IAAI,CAACA,0BAA0B,GAAGA,0BAA0B;EAC9D;EAEA,IAAIrE,MAAMA,CAAA,EAAG;IACX,OAAO,IAAI,CAACu7C,SAAS,CAACv7C,MAAM;EAC9B;EAEA,IAAI4\u002FC,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAACD,SAAS,IAAI,IAAI,CAACJ,WAAW,CAACK,KAAK;EACjD;EAMA,IAAIC,WAAWA,CAAA,EAAG;IAChB,OAAO,IAAI,CAACH,YAAY,GAAG,IAAI,CAAC1\u002FC,MAAM;EACxC;EAEA8\u002FC,KAAKA,CAAChB,EAAE,EAAExwC,IAAI,EAAE;IACd,IAAI,CAACkxC,SAAS,CAACp8C,IAAI,CAAC07C,EAAE,EAAExwC,IAAI,CAAC;IAC7B,IAAI,CAACqO,MAAM,EAAE;IACb,IAAI,IAAI,CAAC4iC,WAAW,EAAE;MACpB,IAAI,IAAI,CAAC5iC,MAAM,IAAIsiC,YAAY,CAACG,UAAU,EAAE;QAC1C,IAAI,CAACL,KAAK,CAAC,CAAC;MACd,CAAC,MAAM,IACL,IAAI,CAACpiC,MAAM,IAAIsiC,YAAY,CAACI,gBAAgB,KAC3CP,EAAE,KAAKvmD,GAAG,CAACW,OAAO,IAAI4lD,EAAE,KAAKvmD,GAAG,CAACgC,OAAO,CAAC,EAC1C;QAEA,IAAI,CAACwkD,KAAK,CAAC,CAAC;MACd;IACF;EACF;EAEAgB,WAAWA,CAACjB,EAAE,EAAExwC,IAAI,EAAE0xC,eAAe,EAAEC,OAAO,GAAG,KAAK,EAAE;IACtD,IAAIA,OAAO,EAAE;MACX,IAAI,CAACH,KAAK,CAACvnD,GAAG,CAACU,IAAI,CAAC;MACpB,IAAI,CAAC6mD,KAAK,CAACvnD,GAAG,CAACS,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACjD;IACA,IAAIgnD,eAAe,KAAKx9C,SAAS,EAAE;MACjC,IAAI,CAACs9C,KAAK,CAACvnD,GAAG,CAACsE,uBAAuB,EAAE,CAAC,IAAI,EAAEmjD,eAAe,CAAC,CAAC;IAClE;IAEA,IAAI,CAACF,KAAK,CAAChB,EAAE,EAAExwC,IAAI,CAAC;IAEpB,IAAI0xC,eAAe,KAAKx9C,SAAS,EAAE;MACjC,IAAI,CAACs9C,KAAK,CAACvnD,GAAG,CAACuE,gBAAgB,EAAE,EAAE,CAAC;IACtC;IACA,IAAImjD,OAAO,EAAE;MACX,IAAI,CAACH,KAAK,CAACvnD,GAAG,CAACW,OAAO,CAAC;IACzB;EACF;EAEAgnD,aAAaA,CAAC1nD,UAAU,EAAE;IACxB,IAAI,IAAI,CAACinD,YAAY,CAACltC,GAAG,CAAC\u002FZ,UAAU,CAAC,EAAE;MACrC;IACF;IACA,IAAI,CAACinD,YAAY,CAACzrC,GAAG,CAACxb,UAAU,CAAC;IACjC,IAAI,CAACsnD,KAAK,CAACvnD,GAAG,CAACC,UAAU,EAAE,CAACA,UAAU,CAAC,CAAC;EAC1C;EAEA2nD,eAAeA,CAACV,YAAY,EAAE;IAC5B,KAAK,MAAMjnD,UAAU,IAAIinD,YAAY,EAAE;MACrC,IAAI,CAACS,aAAa,CAAC1nD,UAAU,CAAC;IAChC;EACF;EAEA4nD,SAASA,CAACC,MAAM,EAAE;IAChB,IAAI,EAAEA,MAAM,YAAYpB,YAAY,CAAC,EAAE;MACrChgD,IAAI,CAAC,kDAAkD,CAAC;MACxD;IACF;IACA,KAAK,MAAMzG,UAAU,IAAI6nD,MAAM,CAACZ,YAAY,EAAE;MAC5C,IAAI,CAACA,YAAY,CAACzrC,GAAG,CAACxb,UAAU,CAAC;IACnC;IACA,KAAK,IAAIsK,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAGw0C,MAAM,CAACrgD,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,EAAE,EAAE;MAC\u002FC,IAAI,CAACg9C,KAAK,CAACO,MAAM,CAACtF,OAAO,CAACj4C,CAAC,CAAC,EAAEu9C,MAAM,CAAC9E,SAAS,CAACz4C,CAAC,CAAC,CAAC;IACpD;EACF;EAEAw9C,KAAKA,CAAA,EAAG;IACN,OAAO;MACLvF,OAAO,EAAE,IAAI,CAACA,OAAO;MACrBQ,SAAS,EAAE,IAAI,CAACA,SAAS;MACzBv7C,MAAM,EAAE,IAAI,CAACA;IACf,CAAC;EACH;EAEA,IAAIugD,UAAUA,CAAA,EAAG;IACf,MAAMC,SAAS,GAAG,EAAE;IACpB,MAAM;MAAEzF,OAAO;MAAEQ,SAAS;MAAEv7C;IAAO,CAAC,GAAG,IAAI;IAC3C,KAAK,IAAI8C,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG9C,MAAM,EAAE8C,CAAC,EAAE,EAAE;MAC\u002FB,QAAQi4C,OAAO,CAACj4C,CAAC,CAAC;QAChB,KAAKvK,GAAG,CAACmF,uBAAuB;QAChC,KAAKnF,GAAG,CAACoF,4BAA4B;QACrC,KAAKpF,GAAG,CAACgF,qBAAqB;UAAE;YAC9B,MAAM;cAAEg9B,MAAM;cAAEhjB;YAAK,CAAC,GAAGgkC,SAAS,CAACz4C,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,IAAIy3B,MAAM,IAAIhjB,IAAI,EAAEtT,MAAM,EAAE;cAC1Bu8C,SAAS,CAACp9C,IAAI,CAACm3B,MAAM,IAAIhjB,IAAI,CAACtT,MAAM,CAAC;YACvC;YACA;UACF;QACA,KAAK1L,GAAG,CAACwF,aAAa;UAAE;YACtB,MAAM,GAAG,CAACwZ,IAAI,CAAC,EAAErR,MAAM,CAAC,GAAGq1C,SAAS,CAACz4C,CAAC,CAAC;YACvC,IAAIyU,IAAI,EAAE;cACRipC,SAAS,CAACp9C,IAAI,CAACmU,IAAI,CAACtT,MAAM,EAAEiC,MAAM,CAACjC,MAAM,CAAC;YAC5C;YACA;UACF;QACA,KAAK1L,GAAG,CAAC0E,qBAAqB;UAC5B,MAAM,CAAC0L,MAAM,EAAE83C,IAAI,CAAC,GAAGlF,SAAS,CAACz4C,CAAC,CAAC;UACnC,IAAI6F,MAAM,EAAE;YACV63C,SAAS,CAACp9C,IAAI,CAACuF,MAAM,CAAC1E,MAAM,CAAC;UAC\u002FB;UACA,IAAIw8C,IAAI,EAAE;YACRD,SAAS,CAACp9C,IAAI,CAACq9C,IAAI,CAACx8C,MAAM,CAAC;UAC7B;UACA;QACF,KAAK1L,GAAG,CAAC0C,aAAa;UACpBulD,SAAS,CAACp9C,IAAI,CAACm4C,SAAS,CAACz4C,CAAC,CAAC,CAAC,CAAC,CAAC,CAACmB,MAAM,CAAC;UACtC;MACJ;IACF;IACA,OAAOu8C,SAAS;EAClB;EAEAzB,KAAKA,CAAClpB,SAAS,GAAG,KAAK,EAAE6qB,cAAc,GAAG,IAAI,EAAE;IAC9C,IAAI,CAAClB,SAAS,CAACT,KAAK,CAAC,CAAC;IACtB,MAAM\u002F+C,MAAM,GAAG,IAAI,CAACA,MAAM;IAC1B,IAAI,CAAC0\u002FC,YAAY,IAAI1\u002FC,MAAM;IAE3B,IAAI,CAACu\u002FC,WAAW,CAACoB,OAAO,CACtB;MACE5F,OAAO,EAAE,IAAI,CAACA,OAAO;MACrBQ,SAAS,EAAE,IAAI,CAACA,SAAS;MACzB1lB,SAAS;MACT6qB,cAAc;MACd1gD;IACF,CAAC,EACD,CAAC,EACD,IAAI,CAACugD,UACP,CAAC;IAED,IAAI,CAACd,YAAY,CAACtsC,KAAK,CAAC,CAAC;IACzB,IAAI,CAAC4nC,OAAO,CAAC\u002F6C,MAAM,GAAG,CAAC;IACvB,IAAI,CAACu7C,SAAS,CAACv7C,MAAM,GAAG,CAAC;IACzB,IAAI,CAAC2c,MAAM,GAAG,CAAC;IACf,IAAI,CAAC6iC,SAAS,CAACtpC,KAAK,CAAC,CAAC;EACxB;AACF;;;;;;;;;;;;;;;;ACvyBgD;AAEhD,SAAS0qC,QAAQA,CAACh4C,CAAC,EAAE4I,IAAI,EAAE;EACzB,IAAI\u002FL,CAAC,GAAG,CAAC;EACT,KAAK,IAAI3C,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAI0O,IAAI,EAAE1O,CAAC,EAAE,EAAE;IAC9B2C,CAAC,GAAIA,CAAC,IAAI,CAAC,GAAImD,CAAC,CAAC9F,CAAC,CAAC;EACrB;EACA,OAAO2C,CAAC,KAAK,CAAC;AAChB;AAEA,SAASo7C,QAAQA,CAACj4C,CAAC,EAAE4I,IAAI,EAAE;EAGzB,IAAIA,IAAI,KAAK,CAAC,EAAE;IACd,OAAO9O,MAAM,CAACC,YAAY,CAACiG,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC;EACxC;EACA,IAAI4I,IAAI,KAAK,CAAC,EAAE;IACd,OAAO9O,MAAM,CAACC,YAAY,CAACiG,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAC,CAAC,CAAC;EACpD;EACA,OAAOlG,MAAM,CAACC,YAAY,CAAC,GAAGiG,CAAC,CAACzF,QAAQ,CAAC,CAAC,EAAEqO,IAAI,GAAG,CAAC,CAAC,CAAC;AACxD;AAEA,SAASsvC,MAAMA,CAACl4C,CAAC,EAAE5C,CAAC,EAAEwL,IAAI,EAAE;EAC1B,IAAI3I,CAAC,GAAG,CAAC;EACT,KAAK,IAAI\u002FF,CAAC,GAAG0O,IAAI,EAAE1O,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;IAC9B+F,CAAC,IAAID,CAAC,CAAC9F,CAAC,CAAC,GAAGkD,CAAC,CAAClD,CAAC,CAAC;IAChB8F,CAAC,CAAC9F,CAAC,CAAC,GAAG+F,CAAC,GAAG,GAAG;IACdA,CAAC,KAAK,CAAC;EACT;AACF;AAEA,SAASk4C,MAAMA,CAACn4C,CAAC,EAAE4I,IAAI,EAAE;EACvB,IAAI3I,CAAC,GAAG,CAAC;EACT,KAAK,IAAI\u002FF,CAAC,GAAG0O,IAAI,EAAE1O,CAAC,IAAI,CAAC,IAAI+F,CAAC,GAAG,CAAC,EAAE\u002FF,CAAC,EAAE,EAAE;IACvC+F,CAAC,IAAID,CAAC,CAAC9F,CAAC,CAAC;IACT8F,CAAC,CAAC9F,CAAC,CAAC,GAAG+F,CAAC,GAAG,GAAG;IACdA,CAAC,KAAK,CAAC;EACT;AACF;AAEA,MAAMm4C,YAAY,GAAG,EAAE;AACvB,MAAMC,oBAAoB,GAAG,EAAE;AAE\u002FB,MAAMC,gBAAgB,CAAC;EACrBv\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\u002FC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGy\u002FC,aAAa,EAAEz\u002FC,CAAC,EAAE,EAAE;YACtCi+C,MAAM,CAAChrC,GAAG,EAAEssC,QAAQ,CAAC;YACrBzvB,MAAM,CAAC4uB,aAAa,CAACnrC,KAAK,EAAEgsC,QAAQ,CAAC;YACrCvB,MAAM,CAACzqC,KAAK,EAAEN,GAAG,EAAEssC,QAAQ,CAAC;YAC5BzvB,MAAM,CAAC4uB,aAAa,CAACzrC,GAAG,EAAEssC,QAAQ,CAAC;YACnCvB,MAAM,CAAC\u002FqC,GAAG,EAAEM,KAAK,EAAEgsC,QAAQ,CAAC;YAC5BN,IAAI,CAACS,iBAAiB,CACpBH,QAAQ,GAAG,CAAC,EACZzB,QAAQ,CAACvqC,KAAK,EAAEgsC,QAAQ,CAAC,EACzBzB,QAAQ,CAAC7qC,GAAG,EAAEssC,QAAQ,CACxB,CAAC;UACH;UACA;QACF,KAAK,CAAC;UACJzvB,MAAM,CAAC2uB,OAAO,CAAClrC,KAAK,EAAEgsC,QAAQ,CAAC;UAC\u002FBzvB,MAAM,CAAC4uB,aAAa,CAACzrC,GAAG,EAAEssC,QAAQ,CAAC;UACnCvB,MAAM,CAAC\u002FqC,GAAG,EAAEM,KAAK,EAAEgsC,QAAQ,CAAC;UAC5BzvB,MAAM,CAACwuB,UAAU,CAAC,CAAC;UAEnB,KAAK,IAAIt+C,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGy\u002FC,aAAa,EAAEz\u002FC,CAAC,EAAE,EAAE;YACtCi+C,MAAM,CAAChrC,GAAG,EAAEssC,QAAQ,CAAC;YACrBzvB,MAAM,CAAC4uB,aAAa,CAACnrC,KAAK,EAAEgsC,QAAQ,CAAC;YACrCvB,MAAM,CAACzqC,KAAK,EAAEN,GAAG,EAAEssC,QAAQ,CAAC;YAC5BzvB,MAAM,CAAC4uB,aAAa,CAACzrC,GAAG,EAAEssC,QAAQ,CAAC;YACnCvB,MAAM,CAAC\u002FqC,GAAG,EAAEM,KAAK,EAAEgsC,QAAQ,CAAC;YAC5BzvB,MAAM,CAACwuB,UAAU,CAAC,CAAC;UAErB;UACA;QACF,KAAK,CAAC;UACJxuB,MAAM,CAAC2uB,OAAO,CAACjnC,IAAI,EAAE+nC,QAAQ,CAAC;UAC9BxgD,IAAI,GAAG+wB,MAAM,CAACwuB,UAAU,CAAC,CAAC;UAC1BW,IAAI,CAACU,MAAM,CAAC7B,QAAQ,CAACtmC,IAAI,EAAE+nC,QAAQ,CAAC,EAAExgD,IAAI,CAAC;UAC3C,KAAK,IAAIiB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGy\u002FC,aAAa,EAAEz\u002FC,CAAC,EAAE,EAAE;YACtCi+C,MAAM,CAACzmC,IAAI,EAAE+nC,QAAQ,CAAC;YACtB,IAAI,CAACD,QAAQ,EAAE;cACbxvB,MAAM,CAAC4uB,aAAa,CAACvlB,GAAG,EAAEomB,QAAQ,CAAC;cACnCvB,MAAM,CAACxmC,IAAI,EAAE2hB,GAAG,EAAEomB,QAAQ,CAAC;YAC7B;YACAxgD,IAAI,GAAG+wB,MAAM,CAAC0uB,UAAU,CAAC,CAAC,IAAIz\u002FC,IAAI,GAAG,CAAC,CAAC;YACvCkgD,IAAI,CAACU,MAAM,CAAC7B,QAAQ,CAACtmC,IAAI,EAAE+nC,QAAQ,CAAC,EAAExgD,IAAI,CAAC;UAC7C;UACA;QACF,KAAK,CAAC;UACJ+wB,MAAM,CAAC2uB,OAAO,CAAClrC,KAAK,EAAEgsC,QAAQ,CAAC;UAC\u002FBzvB,MAAM,CAAC4uB,aAAa,CAACzrC,GAAG,EAAEssC,QAAQ,CAAC;UACnCvB,MAAM,CAAC\u002FqC,GAAG,EAAEM,KAAK,EAAEgsC,QAAQ,CAAC;UAC5BxgD,IAAI,GAAG+wB,MAAM,CAACwuB,UAAU,CAAC,CAAC;UAC1BW,IAAI,CAACW,WAAW,CACd9B,QAAQ,CAACvqC,KAAK,EAAEgsC,QAAQ,CAAC,EACzBzB,QAAQ,CAAC7qC,GAAG,EAAEssC,QAAQ,CAAC,EACvBxgD,IACF,CAAC;UACD,KAAK,IAAIiB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGy\u002FC,aAAa,EAAEz\u002FC,CAAC,EAAE,EAAE;YACtCi+C,MAAM,CAAChrC,GAAG,EAAEssC,QAAQ,CAAC;YACrB,IAAI,CAACD,QAAQ,EAAE;cACbxvB,MAAM,CAAC4uB,aAAa,CAACnrC,KAAK,EAAEgsC,QAAQ,CAAC;cACrCvB,MAAM,CAACzqC,KAAK,EAAEN,GAAG,EAAEssC,QAAQ,CAAC;YAC9B,CAAC,MAAM;cACLhsC,KAAK,CAAC\u002FD,GAAG,CAACyD,GAAG,CAAC;YAChB;YACA6c,MAAM,CAAC4uB,aAAa,CAACzrC,GAAG,EAAEssC,QAAQ,CAAC;YACnCvB,MAAM,CAAC\u002FqC,GAAG,EAAEM,KAAK,EAAEgsC,QAAQ,CAAC;YAC5BxgD,IAAI,GAAG+wB,MAAM,CAACwuB,UAAU,CAAC,CAAC;YAC1BW,IAAI,CAACW,WAAW,CACd9B,QAAQ,CAACvqC,KAAK,EAAEgsC,QAAQ,CAAC,EACzBzB,QAAQ,CAAC7qC,GAAG,EAAEssC,QAAQ,CAAC,EACvBxgD,IACF,CAAC;UACH;UACA;QACF,KAAK,CAAC;UACJ+wB,MAAM,CAAC2uB,OAAO,CAACjnC,IAAI,EAAEgoC,YAAY,CAAC;UAClC1vB,MAAM,CAAC2uB,OAAO,CAACz1C,QAAQ,EAAEu2C,QAAQ,CAAC;UAClCN,IAAI,CAACU,MAAM,CACT7B,QAAQ,CAACtmC,IAAI,EAAEgoC,YAAY,CAAC,EAC5BzB,QAAQ,CAAC\u002F0C,QAAQ,EAAEu2C,QAAQ,CAC7B,CAAC;UACD,KAAK,IAAIv\u002FC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGy\u002FC,aAAa,EAAEz\u002FC,CAAC,EAAE,EAAE;YACtCi+C,MAAM,CAACzmC,IAAI,EAAEgoC,YAAY,CAAC;YAC1B,IAAI,CAACF,QAAQ,EAAE;cACbxvB,MAAM,CAAC4uB,aAAa,CAACvlB,GAAG,EAAEqmB,YAAY,CAAC;cACvCxB,MAAM,CAACxmC,IAAI,EAAE2hB,GAAG,EAAEqmB,YAAY,CAAC;YACjC;YACAvB,MAAM,CAACj1C,QAAQ,EAAEu2C,QAAQ,CAAC;YAC1BzvB,MAAM,CAACgvB,aAAa,CAAC3lB,GAAG,EAAEomB,QAAQ,CAAC;YACnCvB,MAAM,CAACh1C,QAAQ,EAAEmwB,GAAG,EAAEomB,QAAQ,CAAC;YAC\u002FBN,IAAI,CAACU,MAAM,CACT7B,QAAQ,CAACtmC,IAAI,EAAEgoC,YAAY,CAAC,EAC5BzB,QAAQ,CAAC\u002F0C,QAAQ,EAAEu2C,QAAQ,CAC7B,CAAC;UACH;UACA;QACF,KAAK,CAAC;UACJzvB,MAAM,CAAC2uB,OAAO,CAAClrC,KAAK,EAAEisC,YAAY,CAAC;UACnC1vB,MAAM,CAAC4uB,aAAa,CAACzrC,GAAG,EAAEusC,YAAY,CAAC;UACvCxB,MAAM,CAAC\u002FqC,GAAG,EAAEM,KAAK,EAAEisC,YAAY,CAAC;UAChC1vB,MAAM,CAAC2uB,OAAO,CAACz1C,QAAQ,EAAEu2C,QAAQ,CAAC;UAClCN,IAAI,CAACY,UAAU,CACb\u002FB,QAAQ,CAACvqC,KAAK,EAAEisC,YAAY,CAAC,EAC7B1B,QAAQ,CAAC7qC,GAAG,EAAEusC,YAAY,CAAC,EAC3BzB,QAAQ,CAAC\u002F0C,QAAQ,EAAEu2C,QAAQ,CAC7B,CAAC;UACD,KAAK,IAAIv\u002FC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGy\u002FC,aAAa,EAAEz\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\u002F\u002FC,CAAC,CAAC,GAAG+F,CAAC;QAEZ,IAAIA,CAAC,KAAKyH,GAAG,IAAIzH,CAAC,KAAKi6C,UAAU,EAAE;UACjC;QACF;MACF;MACA7+C,MAAM,GAAG,IAAI,CAACi5B,YAAY,CAACJ,YAAY,GAAGh6B,CAAC,GAAG,CAAC,CAAC;MAChD,IAAI,CAACg6B,YAAY,IAAIh6B,CAAC,GAAG,CAAC;MAG1B,IAAIA,CAAC,GAAG,CAAC,EAAE;QACT,OAAOA,CAAC,GAAG,CAAC,EAAE,EAAEA,CAAC,EAAE;UACjB+\u002FC,KAAK,CAAC\u002F\u002FC,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE;QACtB;QACA,IAAI,CAACi6B,GAAG,GAAG,IAAI;MACjB;MACA,IAAIvyB,CAAC,GAAG,CAAC;MACT,KAAK1H,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAE,EAAEA,CAAC,EAAE;QACtB0H,CAAC,GAAGA,CAAC,GAAG,EAAE,IAAIq4C,KAAK,CAAC\u002F\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,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEG,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAED,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAEA,YAAY,CAAC,EAAE,CAAC,CAAC,EAAEA,YAAY,CAAC,EACpC,CAAC,CAAC,EAAED,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,CAAC,EAAEA,WAAW,CAAC,EAClC,CAAC,CAAC,EAAEA,WAAW,CAAC,EAAE,CAAC,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,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EACd,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAClB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAClB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAChB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EACtC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EACtC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAC1C,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAC1C,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAClB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAClB,CAAC,CAAC,EAAE,GAAG,CAAC,EACR,CAAC,CAAC,EAAE,GAAG,CAAC,EACR,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAClB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAClB,CAAC,CAAC,EAAE,GAAG,CAAC,EACR,CAAC,CAAC,EAAE,GAAG,CAAC,EACR,CAAC,CAAC,EAAE,GAAG,CAAC,EACR,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,IAAI,CAAC,EACT,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EACtC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EACtC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EACtC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EACtC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EACtC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,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AAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACtC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAC9C,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EACtB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EACtB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EACtB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EACtB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EACtB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EACtB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAC9C,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EAC9C,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EACtB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EACtB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EACtB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,EACtB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EACtC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EACtC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EACtC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EACtC,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EACpB,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EACpB,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EACpB,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,IAAI,CAAC,EACV,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EACtC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CACvC;AAGD,MAAMe,WAAW,GAAG,CAClB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EACtC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EACtC,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,GAAG,CAAC,EACT,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAClB,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,EAAE,CAAC,EACR,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAClC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CACnC;AAGD,MAAMC,WAAW,GAAG,CAClB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EACtC,CAAC,CAAC,EAAE,CAAC,CAAC,EACN,CAAC,CAAC,EAAE,CAAC,CAAC,EACN,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EACd,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,C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\u002FD;IACF,CAAC,MAAM;MACLl\u002FB,IAAI,GAAG,CAAC;MACRvd,CAAC,GAAG,CAAC;MACL,GAAG;QACD,IAAI,OAAO,IAAI,CAAC68C,UAAU,KAAK,QAAQ,EAAE;UACvC,MAAM,IAAItjD,WAAW,CACnB,8DACF,CAAC;QACH;QAEA,IAAI,IAAI,CAACsjD,UAAU,GAAGt\u002FB,IAAI,EAAE;UAC1Bvd,CAAC,KAAKud,IAAI;UACV,IAAI,EAAE,IAAI,CAACk\u002FB,SAAS,GAAG,CAAC,CAAC,EAAE;YACzBz8C,CAAC,IAAI,IAAI,IAAK,CAAC,GAAGud,IAAK;UACzB;UACA,IAAI,CAACs\u002FB,UAAU,IAAIt\u002FB,IAAI;UACvBA,IAAI,GAAG,CAAC;QACV,CAAC,MAAM;UACLvd,CAAC,KAAK,IAAI,CAAC68C,UAAU;UACrB,IAAI,EAAE,IAAI,CAACJ,SAAS,GAAG,CAAC,CAAC,EAAE;YACzBz8C,CAAC,IAAI,IAAI,IAAK,CAAC,GAAG,IAAI,CAAC68C,UAAW;UACpC;UACAt\u002FB,IAAI,IAAI,IAAI,CAACs\u002FB,UAAU;UACvB,IAAI,CAACA,UAAU,GAAG,CAAC;UACnB,IAAIN,UAAU,CAAC,IAAI,CAACE,SAAS,CAAC,GAAGT,OAAO,EAAE;YACxC,IAAI,CAACS,SAAS,EAAE;YAChB,IAAI,CAACI,UAAU,GACbN,UAAU,CAAC,IAAI,CAACE,SAAS,CAAC,GAAGF,UAAU,CAAC,IAAI,CAACE,SAAS,GAAG,CAAC,CAAC;UAC\u002FD,CAAC,MAAM,IAAIl\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\u002FC,QAAQ,CAACv\u002FC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,OAAOA,CAAC,CAAC,CAAC,CAAC;MACb;IACF,CAAC,MAAM;MACL,MAAM4R,MAAM,GAAG,IAAI,CAACuuC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE1C,WAAW,CAAC;MACrD,IAAI7rC,MAAM,CAAC,CAAC,CAAC,IAAIA,MAAM,CAAC,CAAC,CAAC,EAAE;QAC1B,OAAOA,MAAM,CAAC,CAAC,CAAC;MAClB;IACF;IACAtZ,IAAI,CAAC,kBAAkB,CAAC;IACxB,OAAOykD,QAAQ;EACjB;EAKAiD,aAAaA,CAAA,EAAG;IACd,IAAI1kD,IAAI,GAAG,CAAC;IACZ,IAAI0E,CAAC;IACL,IAAI,IAAI,CAAC0+C,OAAO,EAAE;MAChBpjD,IAAI,GAAG,IAAI,CAACgkD,SAAS,CAAC,EAAE,CAAC;MACzB,IAAIhkD,IAAI,KAAKyhD,QAAQ,EAAE;QACrB,OAAO,CAAC;MACV;MAEA\u002F8C,CAAC,GAAG1E,IAAI,IAAI,CAAC,KAAK,CAAC,GAAGoiD,WAAW,CAACpiD,IAAI,CAAC,GAAGqiD,WAAW,CAACriD,IAAI,IAAI,CAAC,CAAC;MAEhE,IAAI0E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;QACZ,IAAI,CAACu\u002FC,QAAQ,CAACv\u002FC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,OAAOA,CAAC,CAAC,CAAC,CAAC;MACb;IACF,CAAC,MAAM;MACL,IAAI4R,MAAM,GAAG,IAAI,CAACuuC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAExC,WAAW,CAAC;MACnD,IAAI\u002FrC,MAAM,CAAC,CAAC,CAAC,EAAE;QACb,OAAOA,MAAM,CAAC,CAAC,CAAC;MAClB;MAEAA,MAAM,GAAG,IAAI,CAACuuC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAEzC,WAAW,CAAC;MACjD,IAAI9rC,MAAM,CAAC,CAAC,CAAC,EAAE;QACb,OAAOA,MAAM,CAAC,CAAC,CAAC;MAClB;IACF;IACAtZ,IAAI,CAAC,gBAAgB,CAAC;IACtB,IAAI,CAACinD,QAAQ,CAAC,CAAC,CAAC;IAChB,OAAO,CAAC;EACV;EAKAQ,aAAaA,CAAA,EAAG;IACd,IAAIzkD,IAAI,EAAE0E,CAAC;IACX,IAAI,IAAI,CAAC0+C,OAAO,EAAE;MAChBpjD,IAAI,GAAG,IAAI,CAACgkD,SAAS,CAAC,EAAE,CAAC;MACzB,IAAIhkD,IAAI,KAAKyhD,QAAQ,EAAE;QACrB,OAAO,CAAC;MACV;MACA,IAAIzhD,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;QACnB0E,CAAC,GAAG49C,WAAW,CAACtiD,IAAI,CAAC;MACvB,CAAC,MAAM,IAAIA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAIA,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;QAC7C0E,CAAC,GAAG69C,WAAW,CAAC,CAACviD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;MACnC,CAAC,MAAM;QACL0E,CAAC,GAAG89C,WAAW,CAACxiD,IAAI,IAAI,CAAC,CAAC;MAC5B;MAEA,IAAI0E,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;QACZ,IAAI,CAACu\u002FC,QAAQ,CAACv\u002FC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,OAAOA,CAAC,CAAC,CAAC,CAAC;MACb;IACF,CAAC,MAAM;MACL,IAAI4R,MAAM,GAAG,IAAI,CAACuuC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAErC,WAAW,CAAC;MACnD,IAAIlsC,MAAM,CAAC,CAAC,CAAC,EAAE;QACb,OAAOA,MAAM,CAAC,CAAC,CAAC;MAClB;MAEAA,MAAM,GAAG,IAAI,CAACuuC,cAAc,CAAC,CAAC,EAAE,EAAE,EAAEtC,WAAW,EAAE,EAAE,CAAC;MACpD,IAAIjsC,MAAM,CAAC,CAAC,CAAC,EAAE;QACb,OAAOA,MAAM,CAAC,CAAC,CAAC;MAClB;MAEAA,MAAM,GAAG,IAAI,CAACuuC,cAAc,CAAC,EAAE,EAAE,EAAE,EAAEvC,WAAW,CAAC;MACjD,IAAIhsC,MAAM,CAAC,CAAC,CAAC,EAAE;QACb,OAAOA,MAAM,CAAC,CAAC,CAAC;MAClB;IACF;IACAtZ,IAAI,CAAC,gBAAgB,CAAC;IACtB,IAAI,CAACinD,QAAQ,CAAC,CAAC,CAAC;IAChB,OAAO,CAAC;EACV;EAKAD,SAASA,CAACpgD,CAAC,EAAE;IACX,IAAIoD,CAAC;IACL,OAAO,IAAI,CAAC28C,SAAS,GAAG\u002F\u002FC,CAAC,EAAE;MACzB,IAAI,CAACoD,CAAC,GAAG,IAAI,CAAC07C,MAAM,CAACC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE;QACnC,IAAI,IAAI,CAACgB,SAAS,KAAK,CAAC,EAAE;UACxB,OAAOlC,QAAQ;QACjB;QACA,OAAQ,IAAI,CAACmC,QAAQ,IAAKhgD,CAAC,GAAG,IAAI,CAAC+\u002FC,SAAU,GAAK,MAAM,IAAK,EAAE,GAAG\u002F\u002FC,CAAG;MACvE;MACA,IAAI,CAACggD,QAAQ,GAAI,IAAI,CAACA,QAAQ,IAAI,CAAC,GAAI58C,CAAC;MACxC,IAAI,CAAC28C,SAAS,IAAI,CAAC;IACrB;IACA,OAAQ,IAAI,CAACC,QAAQ,IAAK,IAAI,CAACD,SAAS,GAAG\u002F\u002FC,CAAE,GAAK,MAAM,IAAK,EAAE,GAAGA,CAAG;EACvE;EAKAqgD,QAAQA,CAACrgD,CAAC,EAAE;IACV,IAAI,CAAC,IAAI,CAAC+\u002FC,SAAS,IAAI\u002F\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,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,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\u002FB,IAAI,CAAC+mB,YAAY,GAAG\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EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE;AAAE,CAAC,EACjD;EAAEH,EAAE,EAAE,MAAM;EAAEC,IAAI,EAAE,EAAE;EAAEC,IAAI,EAAE,EAAE;EAAEC,UAAU,EAAE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\u002FB,MAAMqoD,GAAG,GAAG7\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\u002FC,OAAO,CAACx\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\u002F5D,IAAI,GAAGy3D,4BAA4B,CAAC\u002F+C,IAAI,EAAE0a,QAAQ,CAAC;MACjEA,QAAQ,IAAIukC,mCAAmC;MAC\u002FC,MAAMD,yBAAyB,GAAGh\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\u002FI,CAAC,EAAE,EAAE;IAC\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\u002FB,MAAM,CAAC;EACrC;EAEA0\u002FB,gCAAgCA,CAAA,EAAG;IACjC,IAAI,CAACF,wBAAwB,CAAC,GAAGG,SAAS,CAAC;EAC7C;EAEAC,kBAAkBA,CAChB\u002FC,UAAU,EACVgD,cAAc,EACdC,gBAAgB,EAChB9iD,IAAI,EACJlB,KAAK,EACLN,GAAG,EACH;IACA,IAAIs5C,aAAa,EAAEG,YAAY;IAC\u002FB,IAAI4H,UAAU,CAACpI,OAAO,EAAE;MACtBK,aAAa,GAAGiL,gCAAgC,CAC9ClD,UAAU,EACViD,gBAAgB,EAChB,IAAI,CAACE,YACP,CAAC;MACD\u002FK,YAAY,GAAG,IAAI\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\u002FB,CAAC;IAC\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\u002FC,KAAKud,CAAC,GAAG6\u002FC,qBAAqB,GAAG,CAAC,EAAEz2C,CAAC,GAAG3mB,IAAI,EAAEud,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAE;YACzD4\u002FC,eAAe,CAAC5\u002FC,CAAC,CAAC,GAAGy\u002FC,gBAAgB,CAACr2C,CAAC,CAAC;YACxCA,CAAC,GAAGu2C,mBAAmB,CAACv2C,CAAC,CAAC;UAC5B;QACF,CAAC,MAAM;UACLw2C,eAAe,CAACC,qBAAqB,EAAE,CAAC,GAAGD,eAAe,CAAC,CAAC,CAAC;QAC\u002FD;MACF,CAAC,MAAM,IAAIn9D,IAAI,KAAK,GAAG,EAAE;QACvBypD,UAAU,GAAG,CAAC;QACdsT,QAAQ,GAAG,GAAG;QACdK,qBAAqB,GAAG,CAAC;QACzB;MACF,CAAC,MAAM;QACL,IAAI,CAACliC,GAAG,GAAG,IAAI;QACf,OAAO,IAAI,CAAC4hC,QAAQ;QACpB;MACF;MAEA,IAAIc,OAAO,EAAE;QACXV,mBAAmB,CAACH,QAAQ,CAAC,GAAGU,QAAQ;QACxCR,iBAAiB,CAACF,QAAQ,CAAC,GAAGE,iBAAiB,CAACQ,QAAQ,CAAC,GAAG,CAAC;QAC7DT,gBAAgB,CAACD,QAAQ,CAAC,GAAGI,eAAe,CAAC,CAAC,CAAC;QAC\u002FCJ,QAAQ,EAAE;QACVtT,UAAU,GACPsT,QAAQ,GAAGL,WAAW,GAAKK,QAAQ,GAAGL,WAAW,GAAG,CAAE,GACnDjT,UAAU,GACVtoD,IAAI,CAACC,GAAG,CACND,IAAI,CAAChE,GAAG,CAAC4\u002FD,QAAQ,GAAGL,WAAW,CAAC,GAAG,kBAAkB,GAAG,CAAC,EACzD,EACF,CAAC,GAAG,CAAC;MACb;MACAe,QAAQ,GAAGz9D,IAAI;MAEf09D,aAAa,IAAIN,qBAAqB;MACtC,IAAII,oBAAoB,GAAGE,aAAa,EAAE;QACxC,GAAG;UACDF,oBAAoB,IAAID,gBAAgB;QAC1C,CAAC,QAAQC,oBAAoB,GAAGE,aAAa;QAC7Ct7D,MAAM,GAAG,IAAI,CAACi5B,YAAY,CAAC,IAAI,CAACJ,YAAY,GAAGuiC,oBAAoB,CAAC;MACtE;MACA,KAAKjgD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6\u002FC,qBAAqB,EAAE7\u002FC,CAAC,EAAE,EAAE;QAC1Cnb,MAAM,CAACu7D,mBAAmB,EAAE,CAAC,GAAGR,eAAe,CAAC5\u002FC,CAAC,CAAC;MACpD;IACF;IACAu\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\u002FD,WAAWA,CAAC;IAAE2\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\u002FD,CAAC,GAAG,CAAC,CAAC,KAAK2\u002FD,GAAG,EAAE;cAW\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\u002FG,IAAI,CACF,iCAAiC,GAC\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\u002FB,QAAQ;UAC9B;QACF;QACAv\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,EAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC9C,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,E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\u002FL,IAAI,CAAC;MAC7B,IAAI\u002FC,MAAM,CAACC,SAAS,CAACkC,GAAG,CAAC,KAAKwmE,cAAc,GAAGxmE,GAAG,IAAI,CAAC,GAAGA,GAAG,GAAG,CAAC,CAAC,EAAE;QAClE,OAAOA,GAAG;MACZ;MACA,MAAM,IAAI1B,KAAK,CACb,QAAQsC,IAAI,mCAAmC,GAC7C,wBACJ,CAAC;IACH;IAEA,SAAS6lE,QAAQA,CAACF,OAAO,EAAE;MACzB,MAAMG,KAAK,GAAGH,OAAO,CAAC55D,GAAG,CAAC,GAAG,CAAC;MAC9B,IAAIg6D,WAAW;MAEf,IACEjiE,KAAK,CAAC4I,OAAO,CAACo5D,KAAK,CAAC,KACnB,CAACC,WAAW,GAAGD,KAAK,CAACvnE,MAAM,MAAM,CAAC,IAAIwnE,WAAW,KAAK,CAAC,CAAC,EACzD;QACA,KAAK,IAAI3mC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAG2mC,WAAW,EAAE3mC,KAAK,EAAE,EAAE;UAChD,MAAM4mC,IAAI,GAAGF,KAAK,CAAC1mC,KAAK,CAAC;UACzB,IAAI,EAAEniC,MAAM,CAACC,SAAS,CAAC8oE,IAAI,CAAC,IAAIA,IAAI,GAAG,CAAC,CAAC,EAAE;YACzC,MAAM,IAAItoE,KAAK,CACb,SAAS0hC,KAAK,+CAChB,CAAC;UACH;QACF;QACA,OAAO0mC,KAAK;MACd;MACA,MAAM,IAAIpoE,KAAK,CAAC,wDAAwD,CAAC;IAC3E;IAEA,MAAMuoE,MAAM,GAAG,IAAIrG,MAAM,CAAC;MACxBC,KAAK,EAAE,IAAIwB,KAAK,CAAClwC,MAAM,CAAC;MACxB3hB,IAAI,EAAE;IACR,CAAC,CAAC;IACF,MAAM02D,IAAI,GAAGD,MAAM,CAAC7F,MAAM,CAAC,CAAC;IAC5B,MAAM+F,IAAI,GAAGF,MAAM,CAAC7F,MAAM,CAAC,CAAC;IAC5B,MAAMgG,IAAI,GAAGH,MAAM,CAAC7F,MAAM,CAAC,CAAC;IAC5B,MAAMuF,OAAO,GAAGM,MAAM,CAAC7F,MAAM,CAAC,CAAC;IAC\u002FB,IAAIhhE,GAAG,EAAEb,MAAM;IACf,IACE,EACEtB,MAAM,CAACC,SAAS,CAACgpE,IAAI,CAAC,IACtBjpE,MAAM,CAACC,SAAS,CAACipE,IAAI,CAAC,IACtBrzD,KAAK,CAACszD,IAAI,EAAE,KAAK,CAAC,IAClBT,OAAO,YAAYp2D,IAAI,IACvB,QAAQnQ,GAAG,GAAGumE,OAAO,CAAC55D,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,QAAQ,IACrD3M,GAAG,GAAG,CAAC,CACR,EACD;MACA,OAAO,IAAI;IACb,CAAC,MAAM,IAAI,CAACb,MAAM,GAAGmnE,MAAM,CAACC,OAAO,EAAE,GAAG,CAAC,MAAMx0C,MAAM,CAAC5yB,MAAM,EAAE;MAC5D,MAAM,IAAIb,KAAK,CACb,oDAAoD,GAClD,mCACJ,CAAC;IACH;IACA,OAAO;MACLa,MAAM;MACNunE,KAAK,EAAED,QAAQ,CAACF,OAAO,CAAC;MACxBU,iBAAiB,EAAEX,MAAM,CAACC,OAAO,EAAE,GAAG,CAAC;MACvCW,QAAQ,EAAEZ,MAAM,CAACC,OAAO,EAAE,GAAG,CAAC;MAC9BY,QAAQ,EAAEb,MAAM,CAACC,OAAO,EAAE,GAAG,CAAC;MAC9Ba,qBAAqB,EAAEd,MAAM,CAACC,OAAO,EAAE,GAAG,CAAC;MAC3Cc,SAAS,EAAEd,OAAO,CAAC70D,GAAG,CAAC,GAAG,CAAC,GACvB40D,MAAM,CAACC,OAAO,EAAE,GAAG,EAAyB,IAAI,CAAC,GACjD;IACN,CAAC;EACH;AACF;;;;;;ACl4CwD;AACW;AACrB;AACM;AAChB;AACmB;AAClB;AAErC,MAAMe,cAAc,GAAG,CAErB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EAEnB,UAAU,EACV,UAAU,EACV,MAAM,EACN,WAAW,EACX,WAAW,EACX,MAAM,EACN,aAAa,EACb,aAAa,EACb,aAAa,EACb,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,aAAa,EACb,aAAa,EACb,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,aAAa,EACb,aAAa,EACb,aAAa,EACb,aAAa,EACb,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,MAAM,EACN,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,WAAW,EACX,WAAW,EACX,WAAW,EACX,aAAa,EACb,aAAa,EACb,OAAO,EACP,OAAO,EACP,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,UAAU,EACV,UAAU,EACV,MAAM,EACN,MAAM,EACN,WAAW,EACX,WAAW,EACX,SAAS,EACT,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,WAAW,EACX,OAAO,EACP,OAAO,EACP,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,GAAG,EACH,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,aAAa,EACb,aAAa,EACb,aAAa,EACb,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,UAAU,EACV,WAAW,EACX,WAAW,EACX,OAAO,EACP,aAAa,EACb,aAAa,EACb,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,aAAa,EACb,UAAU,EACV,OAAO,EACP,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,cAAc,EACd,cAAc,EACd,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,EACf,cAAc,EACd,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,yBAAyB,EACzB,cAAc,EACd,cAAc,EACd,eAAe,EACf,eAAe,EACf,eAAe,EACf,eAAe,EACf,cAAc,EACd,cAAc,EACd,GAAG,EACH,WAAW,CACZ;AAID,MAAMC,aAAa,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC;AAGjC,MAAMC,IAAI,CAAC;EACT1mE,WAAWA,CAAC2mE,WAAW,GAAG,KAAK,EAAE;IAI\u002FB,IAAI,CAACC,eAAe,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACvC,IAAI,CAACC,kBAAkB,GAAG,CAAC;IAK3B,IAAI,CAACt3D,IAAI,GAAG,EAAE;IACd,IAAI,CAACzP,IAAI,GAAG,EAAE;IACd,IAAI,CAACygD,QAAQ,GAAG,KAAK;IACrB,IAAI,CAACC,OAAO,GAAG,IAAI;IACnB,IAAI,CAACmmB,WAAW,GAAGA,WAAW;EAChC;EAEA9lB,iBAAiBA,CAAC\u002F8C,CAAC,EAAEgjE,GAAG,EAAEC,IAAI,EAAE;IAC9B,IAAI,CAACH,eAAe,CAAC9iE,CAAC,GAAG,CAAC,CAAC,CAACrC,IAAI,CAACqlE,GAAG,EAAEC,IAAI,CAAC;IAC3C,IAAI,CAACF,kBAAkB,EAAE;EAC3B;EAEA9lB,WAAWA,CAAC+lB,GAAG,EAAEC,IAAI,EAAEC,MAAM,EAAE;IAC7B,IAAID,IAAI,GAAGD,GAAG,GAAGL,aAAa,EAAE;MAC9B,MAAM,IAAIjpE,KAAK,CAAC,kDAAkD,CAAC;IACrE;IACA,OAAOspE,GAAG,IAAIC,IAAI,EAAE;MAClB,IAAI,CAACx3D,IAAI,CAACu3D,GAAG,EAAE,CAAC,GAAGE,MAAM,EAAE;IAC7B;EACF;EAEAhmB,UAAUA,CAAC8lB,GAAG,EAAEC,IAAI,EAAEC,MAAM,EAAE;IAC5B,IAAID,IAAI,GAAGD,GAAG,GAAGL,aAAa,EAAE;MAC9B,MAAM,IAAIjpE,KAAK,CAAC,iDAAiD,CAAC;IACpE;IACA,MAAMmmE,QAAQ,GAAGqD,MAAM,CAAC3oE,MAAM,GAAG,CAAC;IAClC,OAAOyoE,GAAG,IAAIC,IAAI,EAAE;MAClB,IAAI,CAACx3D,IAAI,CAACu3D,GAAG,EAAE,CAAC,GAAGE,MAAM;MAEzB,MAAMC,YAAY,GAAGD,MAAM,CAACllE,UAAU,CAAC6hE,QAAQ,CAAC,GAAG,CAAC;MACpD,IAAIsD,YAAY,GAAG,IAAI,EAAE;QACvBD,MAAM,GACJA,MAAM,CAACpuD,SAAS,CAAC,CAAC,EAAE+qD,QAAQ,GAAG,CAAC,CAAC,GACjC5iE,MAAM,CAACC,YAAY,CAACgmE,MAAM,CAACllE,UAAU,CAAC6hE,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GACxD,MAAM;QACR;MACF;MACAqD,MAAM,GACJA,MAAM,CAACpuD,SAAS,CAAC,CAAC,EAAE+qD,QAAQ,CAAC,GAAG5iE,MAAM,CAACC,YAAY,CAACimE,YAAY,CAAC;IACrE;EACF;EAEAC,iBAAiBA,CAACJ,GAAG,EAAEC,IAAI,EAAEzpD,KAAK,EAAE;IAClC,IAAIypD,IAAI,GAAGD,GAAG,GAAGL,aAAa,EAAE;MAC9B,MAAM,IAAIjpE,KAAK,CAAC,wDAAwD,CAAC;IAC3E;IACA,MAAM0M,EAAE,GAAGoT,KAAK,CAACjf,MAAM;IACvB,IAAI8C,CAAC,GAAG,CAAC;IACT,OAAO2lE,GAAG,IAAIC,IAAI,IAAI5lE,CAAC,GAAG+I,EAAE,EAAE;MAC5B,IAAI,CAACqF,IAAI,CAACu3D,GAAG,CAAC,GAAGxpD,KAAK,CAACnc,CAAC,EAAE,CAAC;MAC3B,EAAE2lE,GAAG;IACP;EACF;EAGAhmB,MAAMA,CAACtiC,GAAG,EAAE2oD,GAAG,EAAE;IACf,IAAI,CAAC53D,IAAI,CAACiP,GAAG,CAAC,GAAG2oD,GAAG;EACtB;EAEA\u002FxD,MAAMA,CAAClV,IAAI,EAAE;IACX,OAAO,IAAI,CAACqP,IAAI,CAACrP,IAAI,CAAC;EACxB;EAEAknE,QAAQA,CAAClnE,IAAI,EAAE;IACb,OAAO,IAAI,CAACqP,IAAI,CAACrP,IAAI,CAAC,KAAKW,SAAS;EACtC;EAEAwmE,OAAOA,CAACj5B,QAAQ,EAAE;IAMhB,MAAM51B,GAAG,GAAG,IAAI,CAACjJ,IAAI;IACrB,MAAMlR,MAAM,GAAGma,GAAG,CAACna,MAAM;IACzB,IAAIA,MAAM,IAAI,OAAO,EAAE;MACrB,KAAK,IAAI8C,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG9C,MAAM,EAAE8C,CAAC,EAAE,EAAE;QAC\u002FB,IAAIqX,GAAG,CAACrX,CAAC,CAAC,KAAKN,SAAS,EAAE;UACxButC,QAAQ,CAACjtC,CAAC,EAAEqX,GAAG,CAACrX,CAAC,CAAC,CAAC;QACrB;MACF;IACF,CAAC,MAAM;MACL,KAAK,MAAMA,CAAC,IAAIqX,GAAG,EAAE;QACnB41B,QAAQ,CAACjtC,CAAC,EAAEqX,GAAG,CAACrX,CAAC,CAAC,CAAC;MACrB;IACF;EACF;EAEAmmE,UAAUA,CAACloE,KAAK,EAAE;IAGhB,MAAMoZ,GAAG,GAAG,IAAI,CAACjJ,IAAI;IACrB,IAAIiJ,GAAG,CAACna,MAAM,IAAI,OAAO,EAAE;MACzB,OAAOma,GAAG,CAAC+uD,OAAO,CAACnoE,KAAK,CAAC;IAC3B;IACA,KAAK,MAAM+K,QAAQ,IAAIqO,GAAG,EAAE;MAC1B,IAAIA,GAAG,CAACrO,QAAQ,CAAC,KAAK\u002FK,KAAK,EAAE;QAC3B,OAAO+K,QAAQ,GAAG,CAAC;MACrB;IACF;IACA,OAAO,CAAC,CAAC;EACX;EAEAq9D,MAAMA,CAAA,EAAG;IACP,OAAO,IAAI,CAACj4D,IAAI;EAClB;EAEAk4D,YAAYA,CAAC7lE,GAAG,EAAEuV,MAAM,EAAEsyB,GAAG,EAAE;IAC7B,IAAIviC,CAAC,GAAG,CAAC;IACT,MAAM0\u002FD,eAAe,GAAG,IAAI,CAACA,eAAe;IAG5C,KAAK,IAAI9iE,CAAC,GAAG,CAAC,EAAE4jE,EAAE,GAAGd,eAAe,CAACvoE,MAAM,EAAEyF,CAAC,GAAG4jE,EAAE,EAAE5jE,CAAC,EAAE,EAAE;MACxDoD,CAAC,GAAG,CAAEA,CAAC,IAAI,CAAC,GAAItF,GAAG,CAACE,UAAU,CAACqV,MAAM,GAAGrT,CAAC,CAAC,MAAM,CAAC;MAEjD,MAAM6jE,cAAc,GAAGf,eAAe,CAAC9iE,CAAC,CAAC;MACzC,KAAK,IAAIujB,CAAC,GAAG,CAAC,EAAEozB,EAAE,GAAGktB,cAAc,CAACtpE,MAAM,EAAEgpB,CAAC,GAAGozB,EAAE,GAAI;QACpD,MAAMqsB,GAAG,GAAGa,cAAc,CAACtgD,CAAC,EAAE,CAAC;QAC\u002FB,MAAM0\u002FC,IAAI,GAAGY,cAAc,CAACtgD,CAAC,EAAE,CAAC;QAChC,IAAIngB,CAAC,IAAI4\u002FD,GAAG,IAAI5\u002FD,CAAC,IAAI6\u002FD,IAAI,EAAE;UACzBt9B,GAAG,CAACm+B,QAAQ,GAAG1gE,CAAC;UAChBuiC,GAAG,CAACprC,MAAM,GAAGyF,CAAC,GAAG,CAAC;UAClB;QACF;MACF;IACF;IACA2lC,GAAG,CAACm+B,QAAQ,GAAG,CAAC;IAChBn+B,GAAG,CAACprC,MAAM,GAAG,CAAC;EAChB;EAEAwpE,iBAAiBA,CAAC19D,QAAQ,EAAE;IAC1B,MAAMy8D,eAAe,GAAG,IAAI,CAACA,eAAe;IAC5C,KAAK,IAAI9iE,CAAC,GAAG,CAAC,EAAE4jE,EAAE,GAAGd,eAAe,CAACvoE,MAAM,EAAEyF,CAAC,GAAG4jE,EAAE,EAAE5jE,CAAC,EAAE,EAAE;MAExD,MAAM6jE,cAAc,GAAGf,eAAe,CAAC9iE,CAAC,CAAC;MACzC,KAAK,IAAIujB,CAAC,GAAG,CAAC,EAAEozB,EAAE,GAAGktB,cAAc,CAACtpE,MAAM,EAAEgpB,CAAC,GAAGozB,EAAE,GAAI;QACpD,MAAMqsB,GAAG,GAAGa,cAAc,CAACtgD,CAAC,EAAE,CAAC;QAC\u002FB,MAAM0\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K,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EACpE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EACpE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EACpE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EACrE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EACrE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAC1E,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EACxE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAC1E,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MA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\u002FB\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\u002F+E,CAAC,CAACg\u002FE,QAAQ,GAAG,MAAM;EACnBh\u002FE,CAAC,CAACi\u002FE,GAAG,GAAG,MAAM;EACdj\u002FE,CAAC,CAACk\u002FE,SAAS,GAAG,MAAM;EACpBl\u002FE,CAAC,CAACm\u002FE,cAAc,GAAG,MAAM;EACzBn\u002FE,CAAC,CAACo\u002FE,UAAU,GAAG,MAAM;EACrBp\u002FE,CAAC,CAACq\u002FE,UAAU,GAAG,MAAM;EACrBr\u002FE,CAAC,CAACs\u002FE,MAAM,GAAG,MAAM;EACjBt\u002FE,CAAC,CAACu\u002FE,cAAc,GAAG,MAAM;EACzBv\u002FE,CAAC,CAACw\u002FE,sBAAsB,GAAG,MAAM;EACjCx\u002FE,CAAC,CAACy\u002FE,CAAC,GAAG,MAAM;EACZz\u002FE,CAAC,CAAC0\u002FE,QAAQ,GAAG,MAAM;EACnB1\u002FE,CAAC,CAAC2\u002FE,QAAQ,GAAG,MAAM;EACnB3\u002FE,CAAC,CAAC4\u002FE,QAAQ,GAAG,MAAM;EACnB5\u002FE,CAAC,CAAC6\u002FE,QAAQ,GAAG,MAAM;EACnB7\u002FE,CAAC,CAAC8\u002FE,QAAQ,GAAG,MAAM;EACnB9\u002FE,CAAC,CAAC+\u002FE,QAAQ,GAAG,MAAM;EACnB\u002F\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\u002F+F,CAAC,CAACg\u002FF,SAAS,GAAG,MAAM;EACpBh\u002FF,CAAC,CAACi\u002FF,SAAS,GAAG,MAAM;EACpBj\u002FF,CAAC,CAACk\u002FF,SAAS,GAAG,MAAM;EACpBl\u002FF,CAAC,CAACm\u002FF,SAAS,GAAG,MAAM;EACpBn\u002FF,CAAC,CAACo\u002FF,SAAS,GAAG,MAAM;EACpBp\u002FF,CAAC,CAACq\u002FF,SAAS,GAAG,MAAM;EACpBr\u002FF,CAAC,CAACs\u002FF,SAAS,GAAG,MAAM;EACpBt\u002FF,CAAC,CAACu\u002FF,SAAS,GAAG,MAAM;EACpBv\u002FF,CAAC,CAACw\u002FF,SAAS,GAAG,MAAM;EACpBx\u002FF,CAAC,CAACy\u002FF,SAAS,GAAG,MAAM;EACpBz\u002FF,CAAC,CAAC0\u002FF,SAAS,GAAG,MAAM;EACpB1\u002FF,CAAC,CAAC2\u002FF,SAAS,GAAG,MAAM;EACpB3\u002FF,CAAC,CAAC4\u002FF,SAAS,GAAG,MAAM;EACpB5\u002FF,CAAC,CAAC6\u002FF,SAAS,GAAG,MAAM;EACpB7\u002FF,CAAC,CAAC8\u002FF,SAAS,GAAG,MAAM;EACpB9\u002FF,CAAC,CAAC+\u002FF,SAAS,GAAG,MAAM;EACpB\u002F\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\u002FB\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\u002F+G,CAAC,CAACg\u002FG,UAAU,GAAG,MAAM;EACrBh\u002FG,CAAC,CAACi\u002FG,aAAa,GAAG,MAAM;EACxBj\u002FG,CAAC,CAACk\u002FG,cAAc,GAAG,MAAM;EACzBl\u002FG,CAAC,CAACm\u002FG,WAAW,GAAG,MAAM;EACtBn\u002FG,CAAC,CAACo\u002FG,cAAc,GAAG,MAAM;EACzBp\u002FG,CAAC,CAACq\u002FG,uBAAuB,GAAG,MAAM;EAClCr\u002FG,CAAC,CAACs\u002FG,SAAS,GAAG,MAAM;EACpBt\u002FG,CAAC,CAACu\u002FG,QAAQ,GAAG,MAAM;EACnBv\u002FG,CAAC,CAACw\u002FG,MAAM,GAAG,MAAM;EACjBx\u002FG,CAAC,CAACy\u002FG,QAAQ,GAAG,MAAM;EACnBz\u002FG,CAAC,CAAC0\u002FG,OAAO,GAAG,MAAM;EAClB1\u002FG,CAAC,CAAC2\u002FG,gBAAgB,GAAG,MAAM;EAC3B3\u002FG,CAAC,CAAC4\u002FG,MAAM,GAAG,MAAM;EACjB5\u002FG,CAAC,CAAC6\u002FG,UAAU,GAAG,MAAM;EACrB7\u002FG,CAAC,CAAC8\u002FG,OAAO,GAAG,MAAM;EAClB9\u002FG,CAAC,CAAC+\u002FG,WAAW,GAAG,MAAM;EACtB\u002F\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\u002F+H,CAAC,CAACg\u002FH,SAAS,GAAG,MAAM;EACpBh\u002FH,CAAC,CAACi\u002FH,WAAW,GAAG,MAAM;EACtBj\u002FH,CAAC,CAACk\u002FH,QAAQ,GAAG,MAAM;EACnBl\u002FH,CAAC,CAACm\u002FH,OAAO,GAAG,MAAM;EAClBn\u002FH,CAAC,CAACo\u002FH,WAAW,GAAG,MAAM;EACtBp\u002FH,CAAC,CAACq\u002FH,SAAS,GAAG,MAAM;EACpBr\u002FH,CAAC,CAACs\u002FH,UAAU,GAAG,MAAM;EACrBt\u002FH,CAAC,CAACu\u002FH,SAAS,GAAG,MAAM;EACpBv\u002FH,CAAC,CAACw\u002FH,EAAE,GAAG,MAAM;EACbx\u002FH,CAAC,CAACy\u002FH,KAAK,GAAG,MAAM;EAChBz\u002FH,CAAC,CAAC0\u002FH,cAAc,GAAG,MAAM;EACzB1\u002FH,CAAC,CAAC2\u002FH,cAAc,GAAG,MAAM;EACzB3\u002FH,CAAC,CAAC4\u002FH,QAAQ,GAAG,MAAM;EACnB5\u002FH,CAAC,CAAC6\u002FH,cAAc,GAAG,MAAM;EACzB7\u002FH,CAAC,CAAC8\u002FH,eAAe,GAAG,MAAM;EAC1B9\u002FH,CAAC,CAAC+\u002FH,SAAS,GAAG,MAAM;EACpB\u002F\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\u002FB\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\u002F+I,CAAC,CAACg\u002FI,QAAQ,GAAG,MAAM;EACnBh\u002FI,CAAC,CAACi\u002FI,OAAO,GAAG,MAAM;EAClBj\u002FI,CAAC,CAACk\u002FI,YAAY,GAAG,MAAM;EACvBl\u002FI,CAAC,CAACm\u002FI,UAAU,GAAG,MAAM;EACrBn\u002FI,CAAC,CAACo\u002FI,SAAS,GAAG,MAAM;EACpBp\u002FI,CAAC,CAACq\u002FI,UAAU,GAAG,MAAM;EACrBr\u002FI,CAAC,CAACs\u002FI,eAAe,GAAG,MAAM;EAC1Bt\u002FI,CAAC,CAACu\u002FI,iBAAiB,GAAG,MAAM;EAC5Bv\u002FI,CAAC,CAACw\u002FI,gBAAgB,GAAG,MAAM;EAC3Bx\u002FI,CAAC,CAACy\u002FI,qBAAqB,GAAG,MAAM;EAChCz\u002FI,CAAC,CAAC0\u002FI,sBAAsB,GAAG,MAAM;EACjC1\u002FI,CAAC,CAAC2\u002FI,aAAa,GAAG,MAAM;EACxB3\u002FI,CAAC,CAAC4\u002FI,UAAU,GAAG,MAAM;EACrB5\u002FI,CAAC,CAAC6\u002FI,cAAc,GAAG,MAAM;EACzB7\u002FI,CAAC,CAAC8\u002FI,UAAU,GAAG,MAAM;EACrB9\u002FI,CAAC,CAAC+\u002FI,mBAAmB,GAAG,MAAM;EAC9B\u002F\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\u002FB\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\u002F+J,CAAC,CAACg\u002FJ,aAAa,GAAG,MAAM;EACxBh\u002FJ,CAAC,CAACi\u002FJ,SAAS,GAAG,MAAM;EACpBj\u002FJ,CAAC,CAACk\u002FJ,YAAY,GAAG,MAAM;EACvBl\u002FJ,CAAC,CAACm\u002FJ,cAAc,GAAG,MAAM;EACzBn\u002FJ,CAAC,CAACo\u002FJ,UAAU,GAAG,MAAM;EACrBp\u002FJ,CAAC,CAACq\u002FJ,YAAY,GAAG,MAAM;EACvBr\u002FJ,CAAC,CAACs\u002FJ,GAAG,GAAG,MAAM;EACdt\u002FJ,CAAC,CAACu\u002FJ,WAAW,GAAG,MAAM;EACtBv\u002FJ,CAAC,CAACw\u002FJ,wBAAwB,GAAG,MAAM;EACnCx\u002FJ,CAAC,CAACy\u002FJ,QAAQ,GAAG,MAAM;EACnBz\u002FJ,CAAC,CAAC0\u002FJ,UAAU,GAAG,MAAM;EACrB1\u002FJ,CAAC,CAAC2\u002FJ,UAAU,GAAG,MAAM;EACrB3\u002FJ,CAAC,CAAC4\u002FJ,QAAQ,GAAG,MAAM;EACnB5\u002FJ,CAAC,CAAC6\u002FJ,QAAQ,GAAG,MAAM;EACnB7\u002FJ,CAAC,CAACge,CAAC,GAAG,MAAM;EACZhe,CAAC,CAAC8\u002FJ,MAAM,GAAG,MAAM;EACjB9\u002FJ,CAAC,CAAC+\u002FJ,WAAW,GAAG,MAAM;EACtB\u002F\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\u002FB\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\u002F+K,CAAC,CAACg\u002FK,iBAAiB,GAAG,MAAM;EAC5Bh\u002FK,CAAC,CAACi\u002FK,OAAO,GAAG,MAAM;EAClBj\u002FK,CAAC,CAACk\u002FK,gBAAgB,GAAG,MAAM;EAC3Bl\u002FK,CAAC,CAACm\u002FK,YAAY,GAAG,MAAM;EACvBn\u002FK,CAAC,CAACo\u002FK,SAAS,GAAG,MAAM;EACpBp\u002FK,CAAC,CAACq\u002FK,UAAU,GAAG,MAAM;EACrBr\u002FK,CAAC,CAACs\u002FK,SAAS,GAAG,MAAM;EACpBt\u002FK,CAAC,CAACu\u002FK,UAAU,GAAG,MAAM;EACrBv\u002FK,CAAC,CAACw\u002FK,mBAAmB,GAAG,MAAM;EAC9Bx\u002FK,CAAC,CAACy\u002FK,SAAS,GAAG,MAAM;EACpBz\u002FK,CAAC,CAAC0\u002FK,cAAc,GAAG,MAAM;EACzB1\u002FK,CAAC,CAAC2\u002FK,mBAAmB,GAAG,MAAM;EAC9B3\u002FK,CAAC,CAAC4\u002FK,oBAAoB,GAAG,MAAM;EAC\u002FB5\u002FK,CAAC,CAAC6\u002FK,gBAAgB,GAAG,MAAM;EAC3B7\u002FK,CAAC,CAAC8\u002FK,UAAU,GAAG,MAAM;EACrB9\u002FK,CAAC,CAAC+\u002FK,oBAAoB,GAAG,MAAM;EAC\u002FB\u002F\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\u002F+L,CAAC,CAACg\u002FL,QAAQ,GAAG,MAAM;EACnBh\u002FL,CAAC,CAACi\u002FL,WAAW,GAAG,MAAM;EACtBj\u002FL,CAAC,CAACk\u002FL,UAAU,GAAG,MAAM;EACrBl\u002FL,CAAC,CAACm\u002FL,SAAS,GAAG,MAAM;EACpBn\u002FL,CAAC,CAACo\u002FL,UAAU,GAAG,MAAM;EACrBp\u002FL,CAAC,CAACq\u002FL,MAAM,GAAG,MAAM;EACjBr\u002FL,CAAC,CAACs\u002FL,aAAa,GAAG,MAAM;EACxBt\u002FL,CAAC,CAACu\u002FL,qBAAqB,GAAG,MAAM;EAChCv\u002FL,CAAC,CAACw\u002FL,EAAE,GAAG,MAAM;EACbx\u002FL,CAAC,CAACy\u002FL,KAAK,GAAG,MAAM;EAChBz\u002FL,CAAC,CAAC0\u002FL,SAAS,GAAG,MAAM;EACpB1\u002FL,CAAC,CAAC2\u002FL,MAAM,GAAG,MAAM;EACjB3\u002FL,CAAC,CAAC4\u002FL,OAAO,GAAG,MAAM;EAClB5\u002FL,CAAC,CAAC6\u002FL,UAAU,GAAG,MAAM;EACrB7\u002FL,CAAC,CAAC8\u002FL,SAAS,GAAG,MAAM;EACpB9\u002FL,CAAC,CAAC+\u002FL,UAAU,GAAG,MAAM;EACrB\u002F\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\u002F\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,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAChC,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAChD,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAChC,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAChE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAChE,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,CAAC,MAAM,EAAE,MAAM,CAAC,EAChB,C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\u002FI,CAAC,IAAI,CAAC,EAAE;MACjD,IAAI\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\u002FB,KAAKt\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\u002FB8\u002FM,MAAM,CAACnnM,CAAC,CAAC,GAAG7H,IAAI,CAAC9Q,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;MAC7B,EAAE0f,KAAK;IACT;IACA1f,GAAG,EAAE;EACP;EACA,IAAI8Q,IAAI,CAAC9Q,GAAG,CAAC,KAAK,CAAC,EAAE;IACnB8\u002FM,MAAM,CAACnnM,CAAC,CAAC,GAAG,CAAC;IACb,EAAE+G,KAAK;EACT;EACA,KAAKrjB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGub,MAAM,EAAEvb,CAAC,EAAE,EAAE;IAC3B2D,GAAG,GAAG3D,CAAC,GAAG0jN,QAAQ;IAClBz4J,EAAE,GAAGjrD,CAAC,GAAGwjN,MAAM;IACf,IAAI\u002FuM,IAAI,CAAC9Q,GAAG,GAAG+\u002FM,QAAQ,CAAC,KAAKjvM,IAAI,CAAC9Q,GAAG,CAAC,EAAE;MACtC8\u002FM,MAAM,CAACx4J,EAAE,CAAC,GAAGx2C,IAAI,CAAC9Q,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;MAC9B,EAAE0f,KAAK;IACT;IAGA,IAAIo6C,GAAG,GAAG,CAAChpD,IAAI,CAAC9Q,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK8Q,IAAI,CAAC9Q,GAAG,GAAG+\u002FM,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9D,KAAKpnM,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGhB,KAAK,EAAEgB,CAAC,EAAE,EAAE;MAC1BmhD,GAAG,GACD,CAACA,GAAG,IAAI,CAAC,KACRhpD,IAAI,CAAC9Q,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IACtB8Q,IAAI,CAAC9Q,GAAG,GAAG+\u002FM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;MACpC,IAAIH,WAAW,CAAC9lJ,GAAG,CAAC,EAAE;QACpBgmJ,MAAM,CAACx4J,EAAE,GAAG3uC,CAAC,CAAC,GAAGinM,WAAW,CAAC9lJ,GAAG,CAAC;QACjC,EAAEp6C,KAAK;MACT;MACA1f,GAAG,EAAE;IACP;IACA,IAAI8Q,IAAI,CAAC9Q,GAAG,GAAG+\u002FM,QAAQ,CAAC,KAAKjvM,IAAI,CAAC9Q,GAAG,CAAC,EAAE;MACtC8\u002FM,MAAM,CAACx4J,EAAE,GAAG3uC,CAAC,CAAC,GAAG7H,IAAI,CAAC9Q,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;MAClC,EAAE0f,KAAK;IACT;IAEA,IAAIA,KAAK,GAAGigM,sBAAsB,EAAE;MAClC,OAAO,IAAI;IACb;EACF;EAEA3\u002FM,GAAG,GAAG+\u002FM,QAAQ,IAAInoM,MAAM,GAAG,CAAC,CAAC;EAC7B0vC,EAAE,GAAGjrD,CAAC,GAAGwjN,MAAM;EACf,IAAI\u002FuM,IAAI,CAAC9Q,GAAG,CAAC,KAAK,CAAC,EAAE;IACnB8\u002FM,MAAM,CAACx4J,EAAE,CAAC,GAAG,CAAC;IACd,EAAE5nC,KAAK;EACT;EACA,KAAK\u002FG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGhB,KAAK,EAAEgB,CAAC,EAAE,EAAE;IAC1B,IAAI7H,IAAI,CAAC9Q,GAAG,CAAC,KAAK8Q,IAAI,CAAC9Q,GAAG,GAAG,CAAC,CAAC,EAAE;MAC\u002FB8\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\u002FC,MAAM\u002FW,MAAM,GAAGgT,IAAI,CAAChT,MAAM;MAC1B,OAAOyG,GAAG,GAAGzG,MAAM,EAAE;QACnB,MAAMgG,CAAC,GAAGgN,IAAI,CAACvM,GAAG,EAAE,CAAC;QACrB,MAAMyB,EAAE,GAAGlC,CAAC,IAAI,CAAC;QACjB,MAAMiC,EAAE,GAAGjC,CAAC,GAAG,EAAE;QAEjB,IAAIkC,EAAE,KAAK60B,GAAG,EAAE;UACd;QACF;QACAx5B,GAAG,IAAIwT,MAAM,CAAC7O,EAAE,CAAC;QAEjB,IAAID,EAAE,KAAK80B,GAAG,EAAE;UACd;QACF;QACAx5B,GAAG,IAAIwT,MAAM,CAAC9O,EAAE,CAAC;MACnB;MACA,OAAO4U,UAAU,CAACtZ,GAAG,CAAC;IACxB;IAEA,IAAI0nN,QAAQ,GAAG,EAAE;IACjB,MAAMC,OAAO,GAAG,EAAE;IAElBzkN,GAAG,GAAG,CAAC;IACP,MAAMsP,GAAG,GAAG\u002FC,IAAI,CAAChT,MAAM;IACvB,OAAOyG,GAAG,GAAGsP,GAAG,EAAE;MAChB,IAAI\u002FP,CAAC,GAAGgN,IAAI,CAACvM,GAAG,CAAC;MACjB,IAAIT,CAAC,IAAI,EAAE,EAAE;QACX,IAAIA,CAAC,KAAK,EAAE,EAAE;UACZA,CAAC,GAAIA,CAAC,IAAI,CAAC,GAAIgN,IAAI,CAAC,EAAEvM,GAAG,CAAC;QAC5B;QACAykN,OAAO,CAAC9nN,IAAI,CAAC,CAAC4C,CAAC,EAAEilN,QAAQ,CAAC,CAAC;QAC3BA,QAAQ,GAAG,EAAE;QACb,EAAExkN,GAAG;MACP,CAAC,MAAM;QACLwkN,QAAQ,CAAC7nN,IAAI,CAAC2nN,YAAY,CAAC,CAAC,CAAC;MAC\u002FB;IACF;IACA,OAAOG,OAAO;EAChB;EAEA\u002FC,UAAUA,CAAC1hN,GAAG,EAAE;IACd,MAAM0kN,QAAQ,GAAG,IAAIC,QAAQ,CAAC,CAAC;IAC\u002FB,MAAM7oN,KAAK,GAAG,IAAI,CAACA,KAAK;IACxB,MAAM4jB,KAAK,GAAI5jB,KAAK,CAACkE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAIlE,KAAK,CAACkE,GAAG,EAAE,CAAC;IAChD,MAAM4kN,OAAO,GAAG,EAAE;IAClB,IAAIt1M,GAAG,GAAGtP,GAAG;IACb,IAAI3D,CAAC,EAAE+I,EAAE;IAET,IAAIsa,KAAK,KAAK,CAAC,EAAE;MACf,MAAMmlM,UAAU,GAAG\u002FoN,KAAK,CAACkE,GAAG,EAAE,CAAC;MAE\u002FB,MAAMu\u002FB,QAAQ,GAAGv\u002FB,GAAG,GAAG,CAAC0f,KAAK,GAAG,CAAC,IAAImlM,UAAU,GAAG,CAAC;MAEnD,KAAKxoN,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAGsa,KAAK,GAAG,CAAC,EAAErjB,CAAC,GAAG+I,EAAE,EAAE,EAAE\u002FI,CAAC,EAAE;QACvC,IAAIgW,MAAM,GAAG,CAAC;QACd,KAAK,IAAIsG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGksM,UAAU,EAAE,EAAElsM,CAAC,EAAE;UACnCtG,MAAM,KAAK,CAAC;UACZA,MAAM,IAAIvW,KAAK,CAACkE,GAAG,EAAE,CAAC;QACxB;QACA4kN,OAAO,CAACjoN,IAAI,CAAC4iC,QAAQ,GAAGltB,MAAM,CAAC;MACjC;MACA\u002FC,GAAG,GAAGs1M,OAAO,CAACllM,KAAK,CAAC;IACtB;IACA,KAAKrjB,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAGw\u002FM,OAAO,CAACrrN,MAAM,GAAG,CAAC,EAAE8C,CAAC,GAAG+I,EAAE,EAAE,EAAE\u002FI,CAAC,EAAE;MAChD,MAAMyoN,WAAW,GAAGF,OAAO,CAACvoN,CAAC,CAAC;MAC9B,MAAM0oN,SAAS,GAAGH,OAAO,CAACvoN,CAAC,GAAG,CAAC,CAAC;MAChCqoN,QAAQ,CAACn3M,GAAG,CAACzR,KAAK,CAACY,QAAQ,CAACooN,WAAW,EAAEC,SAAS,CAAC,CAAC;IACtD;IACA,OAAO;MAAE3qN,GAAG,EAAEsqN,QAAQ;MAAE\u002FC,MAAM,EAAEryM;IAAI,CAAC;EACvC;EAEA+yM,cAAcA,CAACjoL,KAAK,EAAE;IACpB,MAAMgoL,KAAK,GAAG,EAAE;IAChB,KAAK,IAAI\u002FlN,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAGg1B,KAAK,CAAC1a,KAAK,EAAErjB,CAAC,GAAG+I,EAAE,EAAE,EAAE\u002FI,CAAC,EAAE;MAC7C,MAAMrB,IAAI,GAAGo\u002FB,KAAK,CAACrzB,GAAG,CAAC1K,CAAC,CAAC;MACzB+lN,KAAK,CAACzlN,IAAI,CAACd,aAAa,CAACb,IAAI,CAAC,CAAC;IACjC;IACA,OAAOonN,KAAK;EACd;EAEAE,gBAAgBA,CAACloL,KAAK,EAAE;IACtB,MAAMkT,OAAO,GAAG,IAAI03K,UAAU,CAAC,CAAC;IAChC,KAAK,IAAI3oN,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAGg1B,KAAK,CAAC1a,KAAK,EAAErjB,CAAC,GAAG+I,EAAE,EAAE,EAAE\u002FI,CAAC,EAAE;MAC7C,MAAMyU,IAAI,GAAGspB,KAAK,CAACrzB,GAAG,CAAC1K,CAAC,CAAC;MACzBixC,OAAO,CAAC\u002F\u002FB,GAAG,CAAC1R,aAAa,CAACiV,IAAI,CAAC,CAAC;IAClC;IACA,OAAOw8B,OAAO;EAChB;EAEA40K,UAAUA,CAAC+C,IAAI,EAAE14M,IAAI,EAAE+gC,OAAO,EAAE;IAC9B,MAAM43K,OAAO,GAAG,IAAID,IAAI,CAAC33K,OAAO,CAAC;IACjC,KAAK,MAAM,CAAC7hC,GAAG,EAAEnR,KAAK,CAAC,IAAIiS,IAAI,EAAE;MAC\u002FB24M,OAAO,CAACC,QAAQ,CAAC15M,GAAG,EAAEnR,KAAK,CAAC;IAC9B;IACA,OAAO4qN,OAAO;EAChB;EAEAE,eAAeA,CAACnxK,KAAK,EAAEnjC,IAAI,EAAE+yM,cAAc,EAAE\u002FB,eAAe,EAAE;IAC5D,IAAI,CAAChxM,IAAI,IAAImjC,KAAK,CAACoxK,SAAS,GAAG7E,gBAAgB,EAAE;MAC\u002FC,OAAO,KAAK;IACd;IACA,IAAI8E,SAAS,GAAGrxK,KAAK,CAACqxK,SAAS;IAC\u002FB,MAAMtqK,KAAK,GAAG\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\u002FM,YAAY,GAAGh\u002FM,GAAG,GAAGwkE,cAAc,GAAGG,gBAAgB;MAC5D,KAAKtoE,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAG69M,OAAO,CAAC1pN,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,EAAE,EAAE;QAC5C,MAAM+9B,KAAK,GAAG4kL,YAAY,CAACv8I,OAAO,CAACwgJ,OAAO,CAAC5mN,CAAC,CAAC,CAAC;QAC9C,IAAI+9B,KAAK,KAAK,CAAC,CAAC,EAAE;UAChBx1B,QAAQ,CAACw1B,KAAK,CAAC,GAAG\u002F9B,CAAC;QACrB;MACF;IACF,CAAC,MAAM;MACL,MAAMurN,SAAS,GAAG5nN,GAAG;MACrBsnN,MAAM,GAAGxrN,KAAK,CAACkE,GAAG,EAAE,CAAC;MACrB,QAAQsnN,MAAM,GAAG,IAAI;QACnB,KAAK,CAAC;UACJ,MAAMO,WAAW,GAAG\u002FrN,KAAK,CAACkE,GAAG,EAAE,CAAC;UAChC,KAAK3D,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAIwrN,WAAW,EAAExrN,CAAC,EAAE,EAAE;YACjCuI,QAAQ,CAAC9I,KAAK,CAACkE,GAAG,EAAE,CAAC,CAAC,GAAG3D,CAAC;UAC5B;UACA;QAEF,KAAK,CAAC;UACJ,MAAMyrN,WAAW,GAAGhsN,KAAK,CAACkE,GAAG,EAAE,CAAC;UAChC,IAAI+nN,GAAG,GAAG,CAAC;UACX,KAAK1rN,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyrN,WAAW,EAAEzrN,CAAC,EAAE,EAAE;YAChC,MAAMuT,KAAK,GAAG9T,KAAK,CAACkE,GAAG,EAAE,CAAC;YAC1B,MAAMo6D,IAAI,GAAGt+D,KAAK,CAACkE,GAAG,EAAE,CAAC;YACzB,KAAK,IAAI2Y,CAAC,GAAG\u002FI,KAAK,EAAE+I,CAAC,IAAI\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\u002FG,UAAU,SAASqG,OAAO,CAAC;EAC\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\u002FsN,WAAWA,CAACosN,MAAM,EAAE\u002FD,QAAQ,EAAE;IAC5B,IAAI,CAAC+D,MAAM,GAAGA,MAAM;IACpB,IAAI,CAAC\u002FD,QAAQ,GAAGA,QAAQ;EAC1B;EAEA4C,UAAUA,CAACiD,UAAU,EAAE;IACrB,IAAIA,UAAU,GAAG,CAAC,IAAIA,UAAU,IAAI,IAAI,CAAC7F,QAAQ,CAAChqN,MAAM,EAAE;MACxD,OAAO,CAAC,CAAC;IACX;IACA,OAAO,IAAI,CAACgqN,QAAQ,CAAC6F,UAAU,CAAC;EAClC;AACF;AAIA,MAAMC,gBAAgB,CAAC;EACrBnuN,WAAWA,CAAA,EAAG;IACZ,IAAI,CAAC0pN,OAAO,GAAGpqN,MAAM,CAACuP,MAAM,CAAC,IAAI,CAAC;EACpC;EAEAu\u002FM,UAAUA,CAAC79M,GAAG,EAAE;IACd,OAAOA,GAAG,IAAI,IAAI,CAACm5M,OAAO;EAC5B;EAEA2E,KAAKA,CAAC99M,GAAG,EAAE+9M,QAAQ,EAAE;IACnB,IAAI\u002F9M,GAAG,IAAI,IAAI,CAACm5M,OAAO,EAAE;MACvB,MAAM,IAAIjpN,WAAW,CAAC,gCAAgC8P,GAAG,EAAE,CAAC;IAC9D;IACA,IAAI,CAACm5M,OAAO,CAACn5M,GAAG,CAAC,GAAG+9M,QAAQ;EAC9B;EAEAn3M,MAAMA,CAAC\u002FX,KAAK,EAAE;IACZ,KAAK,MAAMmR,GAAG,IAAI,IAAI,CAACm5M,OAAO,EAAE;MAC9B,IAAI,CAACA,OAAO,CAACn5M,GAAG,CAAC,IAAInR,KAAK;IAC5B;EACF;EAEAmvN,gBAAgBA,CAACh+M,GAAG,EAAEG,MAAM,EAAE9K,MAAM,EAAE;IACpC,IAAI,EAAE2K,GAAG,IAAI,IAAI,CAACm5M,OAAO,CAAC,EAAE;MAC1B,MAAM,IAAIjpN,WAAW,CAAC,4BAA4B8P,GAAG,EAAE,CAAC;IAC1D;IACA,MAAMqF,IAAI,GAAGhQ,MAAM,CAACgQ,IAAI;IACxB,MAAM4kC,UAAU,GAAG,IAAI,CAACkvK,OAAO,CAACn5M,GAAG,CAAC;IACpC,MAAMV,IAAI,GAAG,CAAC;IACd,KAAK,IAAI1O,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAGwG,MAAM,CAACrS,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE,EAAE\u002FI,CAAC,EAAE;MAC\u002FC,MAAM+2D,OAAO,GAAG\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\u002FI,CAAC,IAAI,CAAC,EAAE;MAC\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\u002FM,IAAI,EAAEu\u002FM,aAAa,EAAE;IAC\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\u002FB\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\u002FCA,CAAC,CAAC8pN,WAAW,GAAG,eAAe;EAC\u002FB9pN,CAAC,CAAC,kBAAkB,CAAC,GAAG,oBAAoB;EAC5CA,CAAC,CAAC,wBAAwB,CAAC,GAAG,0BAA0B;EACxDA,CAAC,CAAC,oBAAoB,CAAC,GAAG,sBAAsB;EAChDA,CAAC,CAAC+pN,UAAU,GAAG,WAAW;EAC1B\u002FpN,CAAC,CAAC,iBAAiB,CAAC,GAAG,gBAAgB;EACvCA,CAAC,CAAC,uBAAuB,CAAC,GAAG,uBAAuB;EACpDA,CAAC,CAAC,mBAAmB,CAAC,GAAG,mBAAmB;EAC5CA,CAAC,CAACgqN,MAAM,GAAG,WAAW;EACtBhqN,CAAC,CAAC,gBAAgB,CAAC,GAAG,gBAAgB;EACtCA,CAAC,CAAC,sBAAsB,CAAC,GAAG,uBAAuB;EACnDA,CAAC,CAAC,gBAAgB,CAAC,GAAG,WAAW;EACjCA,CAAC,CAAC,sBAAsB,CAAC,GAAG,mBAAmB;EAC\u002FCA,CAAC,CAAC,kBAAkB,CAAC,GAAG,WAAW;EACnCA,CAAC,CAAC,wBAAwB,CAAC,GAAG,mBAAmB;EACjDA,CAAC,CAACiqN,aAAa,GAAG,SAAS;EAC3BjqN,CAAC,CAAC,oBAAoB,CAAC,GAAG,cAAc;EACxCA,CAAC,CAAC,0BAA0B,CAAC,GAAG,qBAAqB;EACrDA,CAAC,CAAC,sBAAsB,CAAC,GAAG,iBAAiB;EAC7CA,CAAC,CAAC,iBAAiB,CAAC,GAAG,gBAAgB;EACvCA,CAAC,CAAC,WAAW,CAAC,GAAG,WAAW;EAC5BA,CAAC,CAAC,gBAAgB,CAAC,GAAG,gBAAgB;EACtCA,CAAC,CAAC,sBAAsB,CAAC,GAAG,sBAAsB;EAClDA,CAAC,CAAC,kBAAkB,CAAC,GAAG,kBAAkB;EAC1CA,CAAC,CAAC,WAAW,CAAC,GAAG,WAAW;EAC5BA,CAAC,CAAC,gBAAgB,CAAC,GAAG,gBAAgB;EACtCA,CAAC,CAAC,sBAAsB,CAAC,GAAG,sBAAsB;EAClDA,CAAC,CAAC,kBAAkB,CAAC,GAAG,kBAAkB;EAC1CA,CAAC,CAAC,YAAY,CAAC,GAAG,YAAY;EAC9BA,CAAC,CAAC,iBAAiB,CAAC,GAAG,iBAAiB;EACxCA,CAAC,CAAC,uBAAuB,CAAC,GAAG,uBAAuB;EACpDA,CAAC,CAAC,mBAAmB,CAAC,GAAG,mBAAmB;EAC5CA,CAAC,CAAC,YAAY,CAAC,GAAG,YAAY;EAC9BA,CAAC,CAAC,iBAAiB,CAAC,GAAG,iBAAiB;EACxCA,CAAC,CAAC,uBAAuB,CAAC,GAAG,uBAAuB;EACpDA,CAAC,CAAC,mBAAmB,CAAC,GAAG,mBAAmB;EAC5CA,CAAC,CAACkqN,aAAa,GAAG,cAAc;EAChClqN,CAAC,CAACmqN,aAAa,GAAG,WAAW;AAC\u002FB,CAAC,CAAC;AAEF,MAAMC,aAAa,GAAG\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C,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;EACdA,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;EACdA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;EACdA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI;EACbA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;EACdA,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;EACdA,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;EACdA,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;EACdA,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;EACdA,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;EACdA,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;EACdA,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;EACdA,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;EACbA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK;EACfA,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK;EACfA,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK;EACfA,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK;EACfA,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK;EACfA,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK;EACfA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI;EACdA,CAA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,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE;EACVA,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG;EACZA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE;EACXA,CAAC,CAAC,GA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\u002FC,IAAIwc,MAAM,EAAE\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\u002FB,CAAC,GAAGt\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\u002FE,CAAC,GAAG,GAAG;IACTz\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\u002FG,MAAM,GAAG,GAAG;IACdx\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\u002FG,MAAM,GAAG,GAAG;IACd5\u002FG,CAAC,CAACmlL,aAAa,GAAG,GAAG;IACrBnlL,CAAC,CAACwiF,QAAQ,GAAG,GAAG;IAChBxiF,CAAC,CAACy4I,MAAM,GAAG,GAAG;IACdz4I,CAAC,CAAC60E,YAAY,GAAG,GAAG;IACpB70E,CAAC,CAAC61E,MAAM,GAAG,GAAG;IACd71E,CAAC,CAACyoL,SAAS,GAAG,IAAI;IAClBzoL,CAAC,CAAConH,UAAU,GAAG,GAAG;IAClBpnH,CAAC,CAACkyE,MAAM,GAAG,GAAG;IACdlyE,CAAC,CAACwyE,OAAO,GAAG,GAAG;IACfxyE,CAAC,CAAC+1E,MAAM,GAAG,GAAG;IACd\u002F1E,CAAC,CAACyyJ,OAAO,GAAG,GAAG;IACfzyJ,CAAC,CAACq5I,SAAS,GAAG,GAAG;IACjBr5I,CAAC,CAAC2uJ,WAAW,GAAG,GAAG;IACnB3uJ,CAAC,CAACosJ,MAAM,GAAG,GAAG;IACdpsJ,CAAC,CAAC8nF,aAAa,GAAG,GAAG;IACrB9nF,CAAC,CAAC8oE,MAAM,GAAG,GAAG;IACd9oE,CAAC,CAACqqH,OAAO,GAAG,GAAG;IACfrqH,CAAC,CAAC22H,MAAM,GAAG,GAAG;IACd32H,CAAC,CAACmzJ,UAAU,GAAG,GAAG;IAClBnzJ,CAAC,CAACqiF,MAAM,GAAG,GAAG;IACdriF,CAAC,CAAC8iF,YAAY,GAAG,GAAG;IACpB9iF,CAAC,CAACo7E,aAAa,GAAG,GAAG;IACrBp7E,CAAC,CAAC6gH,MAAM,GAAG,GAAG;IACd7gH,CAAC,CAAC4vJ,MAAM,GAAG,GAAG;IACd5vJ,CAAC,CAACqlE,MAAM,GAAG,GAAG;IACdrlE,CAAC,CAAC4uL,MAAM,GAAG,GAAG;IACd5uL,CAAC,CAACkkK,OAAO,GAAG,GAAG;IACflkK,CAAC,CAACinE,MAAM,GAAG,GAAG;IACdjnE,CAAC,CAACslK,YAAY,GAAG,GAAG;IACpBtlK,CAAC,CAAC64E,MAAM,GAAG,GAAG;IACd74E,CAAC,CAAC60J,MAAM,GAAG,GAAG;IACd70J,CAAC,CAAC0+E,YAAY,GAAG,GAAG;IACpB1+E,CAAC,CAACm2E,YAAY,GAAG,GAAG;IACpBn2E,CAAC,CAACkkE,MAAM,GAAG,GAAG;IACdlkE,CAAC,CAAC4jE,OAAO,GAAG,GAAG;IACf5jE,CAAC,CAAC6jE,KAAK,GAAG,GAAG;IACb7jE,CAAC,CAAC68E,MAAM,GAAG,GAAG;IACd78E,CAAC,CAACsiM,UAAU,GAAG,GAAG;IAClBtiM,CAAC,CAACipE,MAAM,GAAG,GAAG;IACdjpE,CAAC,CAAC6yE,OAAO,GAAG,GAAG;IACf7yE,CAAC,CAACgyI,YAAY,GAAG,GAAG;IACpBhyI,CAAC,CAACuhJ,KAAK,GAAG,GAAG;IACbvhJ,CAAC,CAACoxE,WAAW,GAAG,GAAG;IACnBpxE,CAAC,CAACylJ,MAAM,GAAG,GAAG;IACdzlJ,CAAC,CAACm\u002FK,YAAY,GAAG,GAAG;IACpBn\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\u002FE,CAAC,GAAG,GAAG;IACTz\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\u002FG,MAAM,GAAG,GAAG;IACdx\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\u002FG,MAAM,GAAG,GAAG;IACd5\u002FG,CAAC,CAACmlL,aAAa,GAAG,GAAG;IACrBnlL,CAAC,CAACwiF,QAAQ,GAAG,GAAG;IAChBxiF,CAAC,CAACy4I,MAAM,GAAG,GAAG;IACdz4I,CAAC,CAAC60E,YAAY,GAAG,GAAG;IACpB70E,CAAC,CAAC61E,MAAM,GAAG,GAAG;IACd71E,CAAC,CAACyoL,SAAS,GAAG,IAAI;IAClBzoL,CAAC,CAAConH,UAAU,GAAG,GAAG;IAClBpnH,CAAC,CAACkyE,MAAM,GAAG,GAAG;IACdlyE,CAAC,CAACwyE,OAAO,GAAG,GAAG;IACfxyE,CAAC,CAAC+1E,MAAM,GAAG,GAAG;IACd\u002F1E,CAAC,CAACyyJ,OAAO,GAAG,GAAG;IACfzyJ,CAAC,CAACq5I,SAAS,GAAG,GAAG;IACjBr5I,CAAC,CAAC2uJ,WAAW,GAAG,GAAG;IACnB3uJ,CAAC,CAACosJ,MAAM,GAAG,GAAG;IACdpsJ,CAAC,CAAC8nF,aAAa,GAAG,GAAG;IACrB9nF,CAAC,CAAC8oE,MAAM,GAAG,GAAG;IACd9oE,CAAC,CAACqqH,OAAO,GAAG,GAAG;IACfrqH,CAAC,CAAC22H,MAAM,GAAG,GAAG;IACd32H,CAAC,CAACmzJ,UAAU,GAAG,GAAG;IAClBnzJ,CAAC,CAACqiF,MAAM,GAAG,GAAG;IACdriF,CAAC,CAAC8iF,YAAY,GAAG,GAAG;IACpB9iF,CAAC,CAACo7E,aAAa,GAAG,GAAG;IACrBp7E,CAAC,CAAC6gH,MAAM,GAAG,GAAG;IACd7gH,CAAC,CAAC4vJ,MAAM,GAAG,GAAG;IACd5vJ,CAAC,CAACqlE,MAAM,GAAG,GAAG;IACdrlE,CAAC,CAAC4uL,MAAM,GAAG,GAAG;IACd5uL,CAAC,CAACkkK,OAAO,GAAG,GAAG;IACflkK,CAAC,CAACinE,MAAM,GAAG,GAAG;IACdjnE,CAAC,CAACslK,YAAY,GAAG,GAAG;IACpBtlK,CAAC,CAAC64E,MAAM,GAAG,GAAG;IACd74E,CAAC,CAAC60J,MAAM,GAAG,GAAG;IACd70J,CAAC,CAAC0+E,YAAY,GAAG,GAAG;IACpB1+E,CAAC,CAACm2E,YAAY,GAAG,GAAG;IACpBn2E,CAAC,CAACkkE,MAAM,GAAG,GAAG;IACdlkE,CAAC,CAAC4jE,OAAO,GAAG,GAAG;IACf5jE,CAAC,CAAC6jE,KAAK,GAAG,GAAG;IACb7jE,CAAC,CAAC68E,MAAM,GAAG,GAAG;IACd78E,CAAC,CAACsiM,UAAU,GAAG,GAAG;IAClBtiM,CAAC,CAACipE,MAAM,GAAG,GAAG;IACdjpE,CAAC,CAAC6yE,OAAO,GAAG,GAAG;IACf7yE,CAAC,CAACgyI,YAAY,GAAG,GAAG;IACpBhyI,CAAC,CAACuhJ,KAAK,GAAG,GAAG;IACbvhJ,CAAC,CAACoxE,WAAW,GAAG,GAAG;IACnBpxE,CAAC,CAACylJ,MAAM,GAAG,GAAG;IACdzlJ,CAAC,CAACm\u002FK,YAAY,GAAG,GAAG;IACpBn\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\u002FE,CAAC,GAAG,GAAG;IACTz\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\u002FG,MAAM,GAAG,GAAG;IACdx\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\u002FG,MAAM,GAAG,GAAG;IACd5\u002FG,CAAC,CAACmlL,aAAa,GAAG,GAAG;IACrBnlL,CAAC,CAACwiF,QAAQ,GAAG,GAAG;IAChBxiF,CAAC,CAACy4I,MAAM,GAAG,GAAG;IACdz4I,CAAC,CAAC60E,YAAY,GAAG,GAAG;IACpB70E,CAAC,CAAC61E,MAAM,GAAG,GAAG;IACd71E,CAAC,CAACyoL,SAAS,GAAG,IAAI;IAClBzoL,CAAC,CAAConH,UAAU,GAAG,GAAG;IAClBpnH,CAAC,CAACkyE,MAAM,GAAG,GAAG;IACdlyE,CAAC,CAACwyE,OAAO,GAAG,GAAG;IACfxyE,CAAC,CAAC+1E,MAAM,GAAG,GAAG;IACd\u002F1E,CAAC,CAACyyJ,OAAO,GAAG,GAAG;IACfzyJ,CAAC,CAACq5I,SAAS,GAAG,GAAG;IACjBr5I,CAAC,CAAC2uJ,WAAW,GAAG,GAAG;IACnB3uJ,CAAC,CAACosJ,MAAM,GAAG,GAAG;IACdpsJ,CAAC,CAAC8nF,aAAa,GAAG,GAAG;IACrB9nF,CAAC,CAAC8oE,MAAM,GAAG,GAAG;IACd9oE,CAAC,CAACqqH,OAAO,GAAG,GAAG;IACfrqH,CAAC,CAAC22H,MAAM,GAAG,GAAG;IACd32H,CAAC,CAACmzJ,UAAU,GAAG,GAAG;IAClBnzJ,CAAC,CAACqiF,MAAM,GAAG,GAAG;IACdriF,CAAC,CAAC8iF,YAAY,GAAG,GAAG;IACpB9iF,CAAC,CAACo7E,aAAa,GAAG,GAAG;IACrBp7E,CAAC,CAAC6gH,MAAM,GAAG,GAAG;IACd7gH,CAAC,CAAC4vJ,MAAM,GAAG,GAAG;IACd5vJ,CAAC,CAACqlE,MAAM,GAAG,GAAG;IACdrlE,CAAC,CAAC4uL,MAAM,GAAG,GAAG;IACd5uL,CAAC,CAACkkK,OAAO,GAAG,GAAG;IACflkK,CAAC,CAACinE,MAAM,GAAG,GAAG;IACdjnE,CAAC,CAACslK,YAAY,GAAG,GAAG;IACpBtlK,CAAC,CAAC64E,MAAM,GAAG,GAAG;IACd74E,CAAC,CAAC60J,MAAM,GAAG,GAAG;IACd70J,CAAC,CAAC0+E,YAAY,GAAG,GAAG;IACpB1+E,CAAC,CAACm2E,YAAY,GAAG,GAAG;IACpBn2E,CAAC,CAACkkE,MAAM,GAAG,GAAG;IACdlkE,CAAC,CAAC4jE,OAAO,GAAG,GAAG;IACf5jE,CAAC,CAAC6jE,KAAK,GAAG,GAAG;IACb7jE,CAAC,CAAC68E,MAAM,GAAG,GAAG;IACd78E,CAAC,CAACsiM,UAAU,GAAG,GAAG;IAClBtiM,CAAC,CAACipE,MAAM,GAAG,GAAG;IACdjpE,CAAC,CAAC6yE,OAAO,GAAG,GAAG;IACf7yE,CAAC,CAACgyI,YAAY,GAAG,GAAG;IACpBhyI,CAAC,CAACuhJ,KAAK,GAAG,GAAG;IACbvhJ,CAAC,CAACoxE,WAAW,GAAG,GAAG;IACnBpxE,CAAC,CAACylJ,MAAM,GAAG,GAAG;IACdzlJ,CAAC,CAACm\u002FK,YAAY,GAAG,GAAG;IACpBn\u002FK,CAAC,CAACi7I,UAAU,GAAG,GAAG;IAClBj7I,CAAC,CAACqvJ,SAAS,GAAG,GAAG;IACjBrvJ,CAAC,CAACouL,SAAS,GAAG,GAAG;IACjBpuL,CAAC,CAACorJ,QAAQ,GAAG,GAAG;IAChBprJ,CAAC,CAACg3H,YAAY,GAAG,GAAG;IACpBh3H,CAAC,CAAC2tH,GAAG,GAAG,GAAG;IACX3tH,CAAC,CAACiiM,MAAM,GAAG,GAAG;IACdjiM,CAAC,CAAC6lJ,YAAY,GAAG,GAAG;IACpB7lJ,CAAC,CAACqzJ,WAAW,GAAG,GAAG;IACnBrzJ,CAAC,CAAC+qI,OAAO,GAAG,GAAG;IACf\u002FqI,CAAC,CAAC0sE,IAAI,GAAG,GAAG;EACd,CAAC,CAAC;EAEF1sE,CAAC,CAAC,mBAAmB,CAAC,GAAGqM,qBAAqB,CAAC,UAAUrM,CAAC,EAAE;IAC1DA,CAAC,CAACy5K,KAAK,GAAG,GAAG;IACbz5K,CAAC,CAACwuH,MAAM,GAAG,GAAG;IACdxuH,CAAC,CAAC+iK,QAAQ,GAAG,GAAG;IAChB\u002FiK,CAAC,CAAC6sJ,UAAU,GAAG,GAAG;IAClB7sJ,CAAC,CAACujH,MAAM,GAAG,GAAG;IACdvjH,CAAC,CAACg6J,OAAO,GAAG,GAAG;IACfh6J,CAAC,CAACqjG,SAAS,GAAG,GAAG;IACjBrjG,CAAC,CAACyjK,UAAU,GAAG,GAAG;IAClBzjK,CAAC,CAAC42J,SAAS,GAAG,GAAG;IACjB52J,CAAC,CAACs3J,UAAU,GAAG,GAAG;IAClBt3J,CAAC,CAAC4oG,QAAQ,GAAG,GAAG;IAChB5oG,CAAC,CAACs9J,IAAI,GAAG,GAAG;IACZt9J,CAAC,CAAC83G,KAAK,GAAG,GAAG;IACb93G,CAAC,CAACykI,MAAM,GAAG,GAAG;IACdzkI,CAAC,CAACo6J,MAAM,GAAG,GAAG;IACdp6J,CAAC,CAACu4K,KAAK,GAAG,GAAG;IACbv4K,CAAC,CAAC6iM,IAAI,GAAG,GAAG;IACZ7iM,CAAC,CAAC6xJ,GAAG,GAAG,GAAG;IACX7xJ,CAAC,CAAC4rL,GAAG,GAAG,GAAG;IACX5rL,CAAC,CAACgkL,KAAK,GAAG,GAAG;IACbhkL,CAAC,CAACg0H,IAAI,GAAG,GAAG;IACZh0H,CAAC,CAACkyH,IAAI,GAAG,GAAG;IACZlyH,CAAC,CAAC+2K,GAAG,GAAG,GAAG;IACX\u002F2K,CAAC,CAAC8wK,KAAK,GAAG,GAAG;IACb9wK,CAAC,CAACgoH,KAAK,GAAG,GAAG;IACbhoH,CAAC,CAAC4nJ,IAAI,GAAG,GAAG;IACZ5nJ,CAAC,CAACu3G,KAAK,GAAG,GAAG;IACbv3G,CAAC,CAACswK,SAAS,GAAG,GAAG;IACjBtwK,CAAC,CAACo5I,IAAI,GAAG,GAAG;IACZp5I,CAAC,CAACksH,KAAK,GAAG,GAAG;IACblsH,CAAC,CAAC86H,OAAO,GAAG,GAAG;IACf96H,CAAC,CAACuiK,QAAQ,GAAG,GAAG;IAChBviK,CAAC,CAACmwC,EAAE,GAAG,IAAI;IACXnwC,CAAC,CAACof,CAAC,GAAG,GAAG;IACTpf,CAAC,CAACqjB,CAAC,GAAG,GAAG;IACTrjB,CAAC,CAAC9S,CAAC,GAAG,GAAG;IACT8S,CAAC,CAACzT,CAAC,GAAG,GAAG;IACTyT,CAAC,CAAC3T,CAAC,GAAG,GAAG;IACT2T,CAAC,CAAChT,CAAC,GAAG,GAAG;IACTgT,CAAC,CAACmf,CAAC,GAAG,GAAG;IACTnf,CAAC,CAACovE,CAAC,GAAG,GAAG;IACTpvE,CAAC,CAAC63D,CAAC,GAAG,GAAG;IACT73D,CAAC,CAACwzE,CAAC,GAAG,GAAG;IACTxzE,CAAC,CAACjT,CAAC,GAAG,GAAG;IACTiT,CAAC,CAACsf,CAAC,GAAG,GAAG;IACTtf,CAAC,CAAC+kB,CAAC,GAAG,GAAG;IACT\u002FkB,CAAC,CAACglB,CAAC,GAAG,GAAG;IACThlB,CAAC,CAACtS,CAAC,GAAG,GAAG;IACTsS,CAAC,CAACi9E,CAAC,GAAG,GAAG;IACTj9E,CAAC,CAACg+E,CAAC,GAAG,GAAG;IACTh+E,CAAC,CAACo+E,CAAC,GAAG,GAAG;IACTp+E,CAAC,CAACy\u002FE,CAAC,GAAG,GAAG;IACTz\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\u002FG,MAAM,GAAG,GAAG;IACdx\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\u002FG,MAAM,GAAG,GAAG;IACd5\u002FG,CAAC,CAACmlL,aAAa,GAAG,GAAG;IACrBnlL,CAAC,CAACwiF,QAAQ,GAAG,GAAG;IAChBxiF,CAAC,CAACy4I,MAAM,GAAG,GAAG;IACdz4I,CAAC,CAAC60E,YAAY,GAAG,GAAG;IACpB70E,CAAC,CAAC61E,MAAM,GAAG,GAAG;IACd71E,CAAC,CAACyoL,SAAS,GAAG,IAAI;IAClBzoL,CAAC,CAAConH,UAAU,GAAG,GAAG;IAClBpnH,CAAC,CAACkyE,MAAM,GAAG,GAAG;IACdlyE,CAAC,CAACwyE,OAAO,GAAG,GAAG;IACfxyE,CAAC,CAAC+1E,MAAM,GAAG,GAAG;IACd\u002F1E,CAAC,CAACyyJ,OAAO,GAAG,GAAG;IACfzyJ,CAAC,CAACq5I,SAAS,GAAG,GAAG;IACjBr5I,CAAC,CAAC2uJ,WAAW,GAAG,GAAG;IACnB3uJ,CAAC,CAACosJ,MAAM,GAAG,GAAG;IACdpsJ,CAAC,CAAC8nF,aAAa,GAAG,GAAG;IACrB9nF,CAAC,CAAC8oE,MAAM,GAAG,GAAG;IACd9oE,CAAC,CAACqqH,OAAO,GAAG,GAAG;IACfrqH,CAAC,CAAC22H,MAAM,GAAG,GAAG;IACd32H,CAAC,CAACmzJ,UAAU,GAAG,GAAG;IAClBnzJ,CAAC,CAACqiF,MAAM,GAAG,GAAG;IACdriF,CAAC,CAAC8iF,YAAY,GAAG,GAAG;IACpB9iF,CAAC,CAACo7E,aAAa,GAAG,GAAG;IACrBp7E,CAAC,CAAC6gH,MAAM,GAAG,GAAG;IACd7gH,CAAC,CAAC4vJ,MAAM,GAAG,GAAG;IACd5vJ,CAAC,CAACqlE,MAAM,GAAG,GAAG;IACdrlE,CAAC,CAAC4uL,MAAM,GAAG,GAAG;IACd5uL,CAAC,CAACkkK,OAAO,GAAG,GAAG;IACflkK,CAAC,CAACinE,MAAM,GAAG,GAAG;IACdjnE,CAAC,CAACslK,YAAY,GAAG,GAAG;IACpBtlK,CAAC,CAAC64E,MAAM,GAAG,GAAG;IACd74E,CAAC,CAAC60J,MAAM,GAAG,GAAG;IACd70J,CAAC,CAAC0+E,YAAY,GAAG,GAAG;IACpB1+E,CAAC,CAACm2E,YAAY,GAAG,GAAG;IACpBn2E,CAAC,CAACkkE,MAAM,GAAG,GAAG;IACdlkE,CAAC,CAAC4jE,OAAO,GAAG,GAAG;IACf5jE,CAAC,CAAC6jE,KAAK,GAAG,GAAG;IACb7jE,CAAC,CAAC68E,MAAM,GAAG,GAAG;IACd78E,CAAC,CAACsiM,UAAU,GAAG,GAAG;IAClBtiM,CAAC,CAACipE,MAAM,GAAG,GAAG;IACdjpE,CAAC,CAAC6yE,OAAO,GAAG,GAAG;IACf7yE,CAAC,CAACgyI,YAAY,GAAG,GAAG;IACpBhyI,CAAC,CAACuhJ,KAAK,GAAG,GAAG;IACbvhJ,CAAC,CAACoxE,WAAW,GAAG,GAAG;IACnBpxE,CAAC,CAACylJ,MAAM,GAAG,GAAG;IACdzlJ,CAAC,CAACm\u002FK,YAAY,GAAG,GAAG;IACpBn\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\u002FE,GAAG,GAAG,GAAG;IACXj\u002FE,CAAC,CAAC0jF,KAAK,GAAG,GAAG;IACb1jF,CAAC,CAACikF,GAAG,GAAG,GAAG;IACXjkF,CAAC,CAACuoF,OAAO,GAAG,GAAG;IACfvoF,CAAC,CAAC21K,MAAM,GAAG,GAAG;IACd31K,CAAC,CAAC07E,KAAK,GAAG,GAAG;IACb17E,CAAC,CAAC8qF,EAAE,GAAG,GAAG;IACV9qF,CAAC,CAAC69E,GAAG,GAAG,GAAG;IACX79E,CAAC,CAACqtF,IAAI,GAAG,GAAG;IACZrtF,CAAC,CAACkwG,WAAW,GAAG,GAAG;IACnBlwG,CAAC,CAACyiL,SAAS,GAAG,GAAG;IACjBziL,CAAC,CAACuwG,YAAY,GAAG,GAAG;IACpBvwG,CAAC,CAAC66J,aAAa,GAAG,GAAG;IACrB76J,CAAC,CAACmwL,UAAU,GAAG,GAAG;IAClBnwL,CAAC,CAACmkK,SAAS,GAAG,GAAG;IACjBnkK,CAAC,CAACijG,KAAK,GAAG,GAAG;IACbjjG,CAAC,CAACqsG,IAAI,GAAG,GAAG;IACZrsG,CAAC,CAACg1G,GAAG,GAAG,GAAG;IACXh1G,CAAC,CAACO,KAAK,GAAG,GAAG;IACbP,CAAC,CAACgsH,OAAO,GAAG,GAAG;IACfhsH,CAAC,CAACq7J,GAAG,GAAG,GAAG;IACXr7J,CAAC,CAAC4e,KAAK,GAAG,GAAG;IACb5e,CAAC,CAACwtH,GAAG,GAAG,GAAG;IACXxtH,CAAC,CAACmsI,IAAI,GAAG,GAAG;IACZnsI,CAAC,CAACs7J,IAAI,GAAG,GAAG;IACZt7J,CAAC,CAAC2wI,KAAK,GAAG,GAAG;IACb3wI,CAAC,CAACs3I,MAAM,GAAG,GAAG;IACdt3I,CAAC,CAACijJ,EAAE,GAAG,GAAG;IACVjjJ,CAAC,CAACqsJ,EAAE,GAAG,GAAG;IACVrsJ,CAAC,CAAC0xJ,OAAO,GAAG,GAAG;IACf1xJ,CAAC,CAACm8J,EAAE,GAAG,GAAG;IACVn8J,CAAC,CAAC0iL,KAAK,GAAG,GAAG;IACb1iL,CAAC,CAACknK,GAAG,GAAG,GAAG;IACXlnK,CAAC,CAAC01K,KAAK,GAAG,GAAG;IACb11K,CAAC,CAACk+K,GAAG,GAAG,GAAG;IACXl+K,CAAC,CAAC8wL,OAAO,GAAG,GAAG;IACf9wL,CAAC,CAACmxJ,MAAM,GAAG,GAAG;IACdnxJ,CAAC,CAACkxJ,KAAK,GAAG,GAAG;IACblxJ,CAAC,CAACq6L,EAAE,GAAG,GAAG;IACVr6L,CAAC,CAACs\u002FJ,GAAG,GAAG,GAAG;IACXt\u002FJ,CAAC,CAAC6jM,IAAI,GAAG,GAAG;IACZ7jM,CAAC,CAACovG,SAAS,GAAG,GAAG;IACjBpvG,CAAC,CAACirG,GAAG,GAAG,GAAG;IACXjrG,CAAC,CAAC2vG,UAAU,GAAG,GAAG;IAClB3vG,CAAC,CAACm2K,OAAO,GAAG,GAAG;IACfn2K,CAAC,CAAC0sE,IAAI,GAAG,GAAG;IACZ1sE,CAAC,CAACwoF,QAAQ,GAAG,GAAG;IAChBxoF,CAAC,CAAC4hJ,MAAM,GAAG,GAAG;IACd5hJ,CAAC,CAACq5I,SAAS,GAAG,GAAG;IACjBr5I,CAAC,CAAC01H,QAAQ,GAAG,GAAG;IAChB11H,CAAC,CAACorI,QAAQ,GAAG,GAAG;IAChBprI,CAAC,CAACyzH,MAAM,GAAG,GAAG;IACdzzH,CAAC,CAACg3G,IAAI,GAAG,GAAG;IACZh3G,CAAC,CAAC8hH,OAAO,GAAG,GAAG;IACf9hH,CAAC,CAACy\u002FH,KAAK,GAAG,GAAG;IACbz\u002FH,CAAC,CAAC25K,KAAK,GAAG,GAAG;IACb35K,CAAC,CAAC2lG,SAAS,GAAG,IAAI;IAClB3lG,CAAC,CAAC8mG,SAAS,GAAG,GAAG;IACjB9mG,CAAC,CAAC0nG,OAAO,GAAG,GAAG;IACf1nG,CAAC,CAACmnG,UAAU,GAAG,GAAG;IAClBnnG,CAAC,CAACqmG,SAAS,GAAG,GAAG;IACjBrmG,CAAC,CAAC6gH,MAAM,GAAG,GAAG;IACd7gH,CAAC,CAACy9J,SAAS,GAAG,GAAG;IACjBz9J,CAAC,CAACzB,MAAM,GAAG,GAAG;IACdyB,CAAC,CAAC+6H,YAAY,GAAG,GAAG;IACpB\u002F6H,CAAC,CAAC6jJ,QAAQ,GAAG,GAAG;IAChB7jJ,CAAC,CAACq\u002FJ,YAAY,GAAG,GAAG;IACpBr\u002FJ,CAAC,CAACg4J,WAAW,GAAG,GAAG;IACnBh4J,CAAC,CAAC0xG,MAAM,GAAG,GAAG;IACd1xG,CAAC,CAACyiH,MAAM,GAAG,GAAG;IACdziH,CAAC,CAACorJ,QAAQ,GAAG,GAAG;IAChBprJ,CAAC,CAACssH,WAAW,GAAG,GAAG;IACnBtsH,CAAC,CAACilG,WAAW,GAAG,GAAG;IACnBjlG,CAAC,CAACmqH,QAAQ,GAAG,IAAI;IACjBnqH,CAAC,CAACkoG,WAAW,GAAG,GAAG;IACnBloG,CAAC,CAAC6mG,YAAY,GAAG,IAAI;IACrB7mG,CAAC,CAAC8yG,cAAc,GAAG,GAAG;IACtB9yG,CAAC,CAAC+iG,KAAK,GAAG,GAAG;IACb\u002FiG,CAAC,CAACiyE,QAAQ,GAAG,GAAG;IAChBjyE,CAAC,CAACg\u002FE,QAAQ,GAAG,GAAG;IAChBh\u002FE,CAAC,CAACi3L,WAAW,GAAG,GAAG;IACnBj3L,CAAC,CAACm2G,cAAc,GAAG,GAAG;IACtBn2G,CAAC,CAACq2G,UAAU,GAAG,GAAG;IAClBr2G,CAAC,CAAC6qH,QAAQ,GAAG,GAAG;IAChB7qH,CAAC,CAAC4rI,YAAY,GAAG,GAAG;IACpB5rI,CAAC,CAACwwL,KAAK,GAAG,GAAG;IACbxwL,CAAC,CAACm\u002FJ,cAAc,GAAG,GAAG;IACtBn\u002FJ,CAAC,CAAC6lK,cAAc,GAAG,GAAG;IACtB7lK,CAAC,CAAC6rJ,SAAS,GAAG,GAAG;IACjB7rJ,CAAC,CAACk\u002FJ,YAAY,GAAG,GAAG;IACpBl\u002FJ,CAAC,CAAC4lK,YAAY,GAAG,GAAG;IACpB5lK,CAAC,CAACqQ,OAAO,GAAG,GAAG;IACfrQ,CAAC,CAACkrJ,UAAU,GAAG,GAAG;IAClBlrJ,CAAC,CAACoS,KAAK,GAAG,GAAG;IACbpS,CAAC,CAACq6H,QAAQ,GAAG,GAAG;IAChBr6H,CAAC,CAACgmK,aAAa,GAAG,GAAG;IACrBhmK,CAAC,CAACm7G,cAAc,GAAG,GAAG;IACtBn7G,CAAC,CAAC2oL,cAAc,GAAG,GAAG;IACtB3oL,CAAC,CAAC8+J,OAAO,GAAG,GAAG;IACf9+J,CAAC,CAACkkK,OAAO,GAAG,GAAG;IACflkK,CAAC,CAACukH,OAAO,GAAG,GAAG;IACfvkH,CAAC,CAACi7I,UAAU,GAAG,GAAG;IAClBj7I,CAAC,CAACg7I,UAAU,GAAG,GAAG;IAClBh7I,CAAC,CAACm7I,SAAS,GAAG,GAAG;IACjBn7I,CAAC,CAACgmG,YAAY,GAAG,IAAI;IACrBhmG,CAAC,CAACkmG,YAAY,GAAG,GAAG;IACpBlmG,CAAC,CAAComG,UAAU,GAAG,GAAG;IAClBpmG,CAAC,CAACmmG,aAAa,GAAG,GAAG;IACrBnmG,CAAC,CAACimG,YAAY,GAAG,GAAG;IACpBjmG,CAAC,CAACy7I,OAAO,GAAG,GAAG;IACfz7I,CAAC,CAACkkG,SAAS,GAAG,GAAG;IACjBlkG,CAAC,CAAC+lK,YAAY,GAAG,GAAG;IACpB\u002FlK,CAAC,CAACk7G,aAAa,GAAG,GAAG;IACrBl7G,CAAC,CAAC0oL,aAAa,GAAG,GAAG;IACrB1oL,CAAC,CAAC48K,SAAS,GAAG,GAAG;IACjB58K,CAAC,CAACo3J,WAAW,GAAG,GAAG;IACnBp3J,CAAC,CAAC+2J,WAAW,GAAG,GAAG;IACnB\u002F2J,CAAC,CAAC82J,WAAW,GAAG,GAAG;IACnB92J,CAAC,CAACswG,aAAa,GAAG,GAAG;IACrBtwG,CAAC,CAACowG,aAAa,GAAG,GAAG;IACrBpwG,CAAC,CAACmwG,aAAa,GAAG,GAAG;IACrBnwG,CAAC,CAACyvG,WAAW,GAAG,GAAG;IACnBzvG,CAAC,CAACsvG,YAAY,GAAG,GAAG;IACpBtvG,CAAC,CAACqvG,WAAW,GAAG,GAAG;IACnBrvG,CAAC,CAACmvG,OAAO,GAAG,GAAG;IACfnvG,CAAC,CAACmkG,UAAU,GAAG,GAAG;IAClBnkG,CAAC,CAACsrI,QAAQ,GAAG,GAAG;IAChBtrI,CAAC,CAAC2rI,UAAU,GAAG,GAAG;IAClB3rI,CAAC,CAACyrI,UAAU,GAAG,GAAG;IAClBzrI,CAAC,CAACwrI,UAAU,GAAG,GAAG;IAClBxrI,CAAC,CAAC83J,YAAY,GAAG,GAAG;IACpB93J,CAAC,CAACy3J,YAAY,GAAG,GAAG;IACpBz3J,CAAC,CAACw3J,YAAY,GAAG,GAAG;IACpBx3J,CAAC,CAAC2wG,cAAc,GAAG,GAAG;IACtB3wG,CAAC,CAACywG,cAAc,GAAG,GAAG;IACtBzwG,CAAC,CAACwwG,cAAc,GAAG,GAAG;IACtBxwG,CAAC,CAACgwG,YAAY,GAAG,GAAG;IACpBhwG,CAAC,CAAC6vG,aAAa,GAAG,GAAG;IACrB7vG,CAAC,CAAC4vG,YAAY,GAAG,GAAG;IACpB5vG,CAAC,CAAC+kG,KAAK,GAAG,GAAG;EACf,CAAC,CAAC;EAEF\u002FkG,CAAC,CAAC,aAAa,CAAC,GAAGqM,qBAAqB,CAAC,UAAUrM,CAAC,EAAE;IACpDA,CAAC,CAACy5K,KAAK,GAAG,GAAG;IACbz5K,CAAC,CAACwuH,MAAM,GAAG,GAAG;IACdxuH,CAAC,CAAC+iK,QAAQ,GAAG,GAAG;IAChB\u002FiK,CAAC,CAAC6sJ,UAAU,GAAG,GAAG;IAClB7sJ,CAAC,CAACujH,MAAM,GAAG,GAAG;IACdvjH,CAAC,CAACg6J,OAAO,GAAG,GAAG;IACfh6J,CAAC,CAACqjG,SAAS,GAAG,GAAG;IACjBrjG,CAAC,CAACyjK,UAAU,GAAG,GAAG;IAClBzjK,CAAC,CAAC42J,SAAS,GAAG,GAAG;IACjB52J,CAAC,CAACs3J,UAAU,GAAG,GAAG;IAClBt3J,CAAC,CAAC4oG,QAAQ,GAAG,GAAG;IAChB5oG,CAAC,CAACs9J,IAAI,GAAG,GAAG;IACZt9J,CAAC,CAAC83G,KAAK,GAAG,GAAG;IACb93G,CAAC,CAACykI,MAAM,GAAG,GAAG;IACdzkI,CAAC,CAACo6J,MAAM,GAAG,GAAG;IACdp6J,CAAC,CAACu4K,KAAK,GAAG,GAAG;IACbv4K,CAAC,CAAC6iM,IAAI,GAAG,GAAG;IACZ7iM,CAAC,CAAC6xJ,GAAG,GAAG,GAAG;IACX7xJ,CAAC,CAAC4rL,GAAG,GAAG,GAAG;IACX5rL,CAAC,CAACgkL,KAAK,GAAG,GAAG;IACbhkL,CAAC,CAACg0H,IAAI,GAAG,GAAG;IACZh0H,CAAC,CAACkyH,IAAI,GAAG,GAAG;IACZlyH,CAAC,CAAC+2K,GAAG,GAAG,GAAG;IACX\u002F2K,CAAC,CAAC8wK,KAAK,GAAG,GAAG;IACb9wK,CAAC,CAACgoH,KAAK,GAAG,GAAG;IACbhoH,CAAC,CAAC4nJ,IAAI,GAAG,GAAG;IACZ5nJ,CAAC,CAACu3G,KAAK,GAAG,GAAG;IACbv3G,CAAC,CAACswK,SAAS,GAAG,GAAG;IACjBtwK,CAAC,CAACo5I,IAAI,GAAG,GAAG;IACZp5I,CAAC,CAACksH,KAAK,GAAG,GAAG;IACblsH,CAAC,CAAC86H,OAAO,GAAG,GAAG;IACf96H,CAAC,CAACuiK,QAAQ,GAAG,GAAG;IAChBviK,CAAC,CAACmwC,EAAE,GAAG,GAAG;IACVnwC,CAAC,CAACof,CAAC,GAAG,GAAG;IACTpf,CAAC,CAACqjB,CAAC,GAAG,GAAG;IACTrjB,CAAC,CAAC9S,CAAC,GAAG,GAAG;IACT8S,CAAC,CAACzT,CAAC,GAAG,GAAG;IACTyT,CAAC,CAAC3T,CAAC,GAAG,GAAG;IACT2T,CAAC,CAAChT,CAAC,GAAG,GAAG;IACTgT,CAAC,CAACmf,CAAC,GAAG,GAAG;IACTnf,CAAC,CAACovE,CAAC,GAAG,GAAG;IACTpvE,CAAC,CAAC63D,CAAC,GAAG,GAAG;IACT73D,CAAC,CAACwzE,CAAC,GAAG,GAAG;IACTxzE,CAAC,CAACjT,CAAC,GAAG,GAAG;IACTiT,CAAC,CAACsf,CAAC,GAAG,GAAG;IACTtf,CAAC,CAAC+kB,CAAC,GAAG,GAAG;IACT\u002FkB,CAAC,CAACglB,CAAC,GAAG,GAAG;IACThlB,CAAC,CAACtS,CAAC,GAAG,GAAG;IACTsS,CAAC,CAACi9E,CAAC,GAAG,GAAG;IACTj9E,CAAC,CAACg+E,CAAC,GAAG,GAAG;IACTh+E,CAAC,CAACo+E,CAAC,GAAG,GAAG;IACTp+E,CAAC,CAACy\u002FE,CAAC,GAAG,GAAG;IACTz\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\u002FG,MAAM,GAAG,GAAG;IACdx\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\u002FG,MAAM,GAAG,GAAG;IACd5\u002FG,CAAC,CAACmlL,aAAa,GAAG,GAAG;IACrBnlL,CAAC,CAACwiF,QAAQ,GAAG,GAAG;IAChBxiF,CAAC,CAACy4I,MAAM,GAAG,GAAG;IACdz4I,CAAC,CAAC60E,YAAY,GAAG,GAAG;IACpB70E,CAAC,CAAC61E,MAAM,GAAG,GAAG;IACd71E,CAAC,CAACyoL,SAAS,GAAG,GAAG;IACjBzoL,CAAC,CAAConH,UAAU,GAAG,GAAG;IAClBpnH,CAAC,CAACkyE,MAAM,GAAG,GAAG;IACdlyE,CAAC,CAACwyE,OAAO,GAAG,GAAG;IACfxyE,CAAC,CAAC+1E,MAAM,GAAG,GAAG;IACd\u002F1E,CAAC,CAACyyJ,OAAO,GAAG,GAAG;IACfzyJ,CAAC,CAACq5I,SAAS,GAAG,GAAG;IACjBr5I,CAAC,CAAC2uJ,WAAW,GAAG,GAAG;IACnB3uJ,CAAC,CAACosJ,MAAM,GAAG,GAAG;IACdpsJ,CAAC,CAAC8nF,aAAa,GAAG,GAAG;IACrB9nF,CAAC,CAAC8oE,MAAM,GAAG,GAAG;IACd9oE,CAAC,CAACqqH,OAAO,GAAG,GAAG;IACfrqH,CAAC,CAAC22H,MAAM,GAAG,GAAG;IACd32H,CAAC,CAACmzJ,UAAU,GAAG,GAAG;IAClBnzJ,CAAC,CAACqiF,MAAM,GAAG,GAAG;IACdriF,CAAC,CAAC8iF,YAAY,GAAG,GAAG;IACpB9iF,CAAC,CAACo7E,aAAa,GAAG,GAAG;IACrBp7E,CAAC,CAAC6gH,MAAM,GAAG,GAAG;IACd7gH,CAAC,CAAC4vJ,MAAM,GAAG,GAAG;IACd5vJ,CAAC,CAACqlE,MAAM,GAAG,GAAG;IACdrlE,CAAC,CAAC4uL,MAAM,GAAG,GAAG;IACd5uL,CAAC,CAACkkK,OAAO,GAAG,GAAG;IACflkK,CAAC,CAACinE,MAAM,GAAG,GAAG;IACdjnE,CAAC,CAACslK,YAAY,GAAG,GAAG;IACpBtlK,CAAC,CAAC64E,MAAM,GAAG,GAAG;IACd74E,CAAC,CAAC60J,MAAM,GAAG,GAAG;IACd70J,CAAC,CAAC0+E,YAAY,GAAG,GAAG;IACpB1+E,CAAC,CAACm2E,YAAY,GAAG,GAAG;IACpBn2E,CAAC,CAACkkE,MAAM,GAAG,GAAG;IACdlkE,CAAC,CAAC4jE,OAAO,GAAG,GAAG;IACf5jE,CAAC,CAAC6jE,KAAK,GAAG,GAAG;IACb7jE,CAAC,CAAC68E,MAAM,GAAG,GAAG;IACd78E,CAAC,CAACsiM,UAAU,GAAG,GAAG;IAClBtiM,CAAC,CAACipE,MAAM,GAAG,GAAG;IACdjpE,CAAC,CAAC6yE,OAAO,GAAG,GAAG;IACf7yE,CAAC,CAACgyI,YAAY,GAAG,GAAG;IACpBhyI,CAAC,CAACuhJ,KAAK,GAAG,GAAG;IACbvhJ,CAAC,CAACoxE,WAAW,GAAG,GAAG;IACnBpxE,CAAC,CAACylJ,MAAM,GAAG,GAAG;IACdzlJ,CAAC,CAACm\u002FK,YAAY,GAAG,GAAG;IACpBn\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\u002FE,CAAC,GAAG,GAAG;IACTz\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\u002FG,MAAM,GAAG,GAAG;IACdx\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\u002FG,MAAM,GAAG,GAAG;IACd5\u002FG,CAAC,CAACmlL,aAAa,GAAG,GAAG;IACrBnlL,CAAC,CAACwiF,QAAQ,GAAG,GAAG;IAChBxiF,CAAC,CAACy4I,MAAM,GAAG,GAAG;IACdz4I,CAAC,CAAC60E,YAAY,GAAG,GAAG;IACpB70E,CAAC,CAAC61E,MAAM,GAAG,GAAG;IACd71E,CAAC,CAACyoL,SAAS,GAAG,IAAI;IAClBzoL,CAAC,CAAConH,UAAU,GAAG,GAAG;IAClBpnH,CAAC,CAACkyE,MAAM,GAAG,GAAG;IACdlyE,CAAC,CAACwyE,OAAO,GAAG,GAAG;IACfxyE,CAAC,CAAC+1E,MAAM,GAAG,GAAG;IACd\u002F1E,CAAC,CAACyyJ,OAAO,GAAG,GAAG;IACfzyJ,CAAC,CAACq5I,SAAS,GAAG,GAAG;IACjBr5I,CAAC,CAAC2uJ,WAAW,GAAG,GAAG;IACnB3uJ,CAAC,CAACosJ,MAAM,GAAG,GAAG;IACdpsJ,CAAC,CAAC8nF,aAAa,GAAG,GAAG;IACrB9nF,CAAC,CAAC8oE,MAAM,GAAG,GAAG;IACd9oE,CAAC,CAACqqH,OAAO,GAAG,GAAG;IACfrqH,CAAC,CAAC22H,MAAM,GAAG,GAAG;IACd32H,CAAC,CAACmzJ,UAAU,GAAG,GAAG;IAClBnzJ,CAAC,CAACqiF,MAAM,GAAG,GAAG;IACdriF,CAAC,CAAC8iF,YAAY,GAAG,GAAG;IACpB9iF,CAAC,CAACo7E,aAAa,GAAG,GAAG;IACrBp7E,CAAC,CAAC6gH,MAAM,GAAG,GAAG;IACd7gH,CAAC,CAAC4vJ,MAAM,GAAG,GAAG;IACd5vJ,CAAC,CAACqlE,MAAM,GAAG,GAAG;IACdrlE,CAAC,CAAC4uL,MAAM,GAAG,GAAG;IACd5uL,CAAC,CAACkkK,OAAO,GAAG,GAAG;IACflkK,CAAC,CAACinE,MAAM,GAAG,GAAG;IACdjnE,CAAC,CAACslK,YAAY,GAAG,GAAG;IACpBtlK,CAAC,CAAC64E,MAAM,GAAG,GAAG;IACd74E,CAAC,CAAC60J,MAAM,GAAG,GAAG;IACd70J,CAAC,CAAC0+E,YAAY,GAAG,GAAG;IACpB1+E,CAAC,CAACm2E,YAAY,GAAG,GAAG;IACpBn2E,CAAC,CAACkkE,MAAM,GAAG,GAAG;IACdlkE,CAAC,CAAC4jE,OAAO,GAAG,GAAG;IACf5jE,CAAC,CAAC6jE,KAAK,GAAG,GAAG;IACb7jE,CAAC,CAAC68E,MAAM,GAAG,GAAG;IACd78E,CAAC,CAACsiM,UAAU,GAAG,GAAG;IAClBtiM,CAAC,CAACipE,MAAM,GAAG,GAAG;IACdjpE,CAAC,CAAC6yE,OAAO,GAAG,GAAG;IACf7yE,CAAC,CAACgyI,YAAY,GAAG,GAAG;IACpBhyI,CAAC,CAACuhJ,KAAK,GAAG,GAAG;IACbvhJ,CAAC,CAACoxE,WAAW,GAAG,GAAG;IACnBpxE,CAAC,CAACylJ,MAAM,GAAG,GAAG;IACdzlJ,CAAC,CAACm\u002FK,YAAY,GAAG,GAAG;IACpBn\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\u002FE,CAAC,GAAG,GAAG;IACTz\u002FE,CAAC,CAACgkF,CAAC,GAAG,GAAG;IACThkF,CAAC,CAACxT,CAAC,GAAG,GAAG;IACTwT,CAAC,CAAC\u002FS,CAAC,GAAG,GAAG;IACT+S,CAAC,CAACgqF,CAAC,GAAG,GAAG;IACThqF,CAAC,CAAC1T,CAAC,GAAG,GAAG;IACT0T,CAAC,CAACyjB,CAAC,GAAG,GAAG;IACTzjB,CAAC,CAAC0jB,CAAC,GAAG,GAAG;IACT1jB,CAAC,CAACkwG,WAAW,GAAG,GAAG;IACnBlwG,CAAC,CAACyqG,SAAS,GAAG,GAAG;IACjBzqG,CAAC,CAACuwG,YAAY,GAAG,GAAG;IACpBvwG,CAAC,CAACmoG,WAAW,GAAG,GAAG;IACnBnoG,CAAC,CAACmwL,UAAU,GAAG,GAAG;IAClBnwL,CAAC,CAACsjK,SAAS,GAAG,GAAG;IACjBtjK,CAAC,CAAC5B,CAAC,GAAG,GAAG;IACT4B,CAAC,CAACxE,CAAC,GAAG,GAAG;IACTwE,CAAC,CAAC3B,CAAC,GAAG,GAAG;IACT2B,CAAC,CAACpD,CAAC,GAAG,GAAG;IACToD,CAAC,CAACgY,CAAC,GAAG,GAAG;IACThY,CAAC,CAACutC,CAAC,GAAG,GAAG;IACTvtC,CAAC,CAACzE,CAAC,GAAG,GAAG;IACTyE,CAAC,CAAC4wB,CAAC,GAAG,GAAG;IACT5wB,CAAC,CAAC1H,CAAC,GAAG,GAAG;IACT0H,CAAC,CAAC4U,CAAC,GAAG,GAAG;IACT5U,CAAC,CAACwe,CAAC,GAAG,GAAG;IACTxe,CAAC,CAAC29B,CAAC,GAAG,GAAG;IACT39B,CAAC,CAAChE,CAAC,GAAG,GAAG;IACTgE,CAAC,CAAC\u002FE,CAAC,GAAG,GAAG;IACT+E,CAAC,CAACwtC,CAAC,GAAG,GAAG;IACTxtC,CAAC,CAACjE,CAAC,GAAG,GAAG;IACTiE,CAAC,CAACge,CAAC,GAAG,GAAG;IACThe,CAAC,CAAC1E,CAAC,GAAG,GAAG;IACT0E,CAAC,CAACuF,CAAC,GAAG,GAAG;IACTvF,CAAC,CAACA,CAAC,GAAG,GAAG;IACTA,CAAC,CAACwqC,CAAC,GAAG,GAAG;IACTxqC,CAAC,CAACmE,CAAC,GAAG,GAAG;IACTnE,CAAC,CAACuxC,CAAC,GAAG,GAAG;IACTvxC,CAAC,CAACb,CAAC,GAAG,GAAG;IACTa,CAAC,CAACZ,CAAC,GAAG,GAAG;IACTY,CAAC,CAAC04B,CAAC,GAAG,GAAG;IACT14B,CAAC,CAACovG,SAAS,GAAG,GAAG;IACjBpvG,CAAC,CAACirG,GAAG,GAAG,GAAG;IACXjrG,CAAC,CAAC2vG,UAAU,GAAG,GAAG;IAClB3vG,CAAC,CAACqoG,UAAU,GAAG,GAAG;IAClBroG,CAAC,CAAC2uH,UAAU,GAAG,GAAG;IAClB3uH,CAAC,CAAC2zG,IAAI,GAAG,GAAG;IACZ3zG,CAAC,CAAC+7K,QAAQ,GAAG,GAAG;IAChB\u002F7K,CAAC,CAAC01H,QAAQ,GAAG,GAAG;IAChB11H,CAAC,CAAC68L,GAAG,GAAG,GAAG;IACX78L,CAAC,CAACyzH,MAAM,GAAG,GAAG;IACdzzH,CAAC,CAACovK,OAAO,GAAG,GAAG;IACfpvK,CAAC,CAACk8G,QAAQ,GAAG,GAAG;IAChBl8G,CAAC,CAAC4jK,WAAW,GAAG,GAAG;IACnB5jK,CAAC,CAACijK,YAAY,GAAG,GAAG;IACpBjjK,CAAC,CAACy7H,aAAa,GAAG,GAAG;IACrBz7H,CAAC,CAAC27H,aAAa,GAAG,GAAG;IACrB37H,CAAC,CAAC47H,cAAc,GAAG,GAAG;IACtB57H,CAAC,CAAC2wH,EAAE,GAAG,GAAG;IACV3wH,CAAC,CAACuzH,EAAE,GAAG,GAAG;IACVvzH,CAAC,CAACgrH,MAAM,GAAG,GAAG;IACdhrH,CAAC,CAACg9G,MAAM,GAAG,GAAG;IACdh9G,CAAC,CAACi9G,SAAS,GAAG,GAAG;IACjBj9G,CAAC,CAACs6J,cAAc,GAAG,GAAG;IACtBt6J,CAAC,CAAC02J,SAAS,GAAG,GAAG;IACjB12J,CAAC,CAAC0xG,MAAM,GAAG,GAAG;IACd1xG,CAAC,CAAC2jK,cAAc,GAAG,GAAG;IACtB3jK,CAAC,CAACgjK,YAAY,GAAG,GAAG;IACpBhjK,CAAC,CAACqjK,aAAa,GAAG,GAAG;IACrBrjK,CAAC,CAAC07H,cAAc,GAAG,GAAG;IACtB17H,CAAC,CAACmqH,QAAQ,GAAG,IAAI;IACjBnqH,CAAC,CAAC86J,WAAW,GAAG,IAAI;IACpB96J,CAAC,CAAC0iK,YAAY,GAAG,GAAG;IACpB1iK,CAAC,CAACs6H,KAAK,GAAG,GAAG;IACbt6H,CAAC,CAAC4vF,KAAK,GAAG,GAAG;IACb5vF,CAAC,CAACy2G,UAAU,GAAG,GAAG;IAClBz2G,CAAC,CAACimL,KAAK,GAAG,GAAG;IACbjmL,CAAC,CAACs8I,MAAM,GAAG,GAAG;IACdt8I,CAAC,CAAC4wG,KAAK,GAAG,GAAG;IACb5wG,CAAC,CAAC+jH,SAAS,GAAG,GAAG;IACjB\u002FjH,CAAC,CAACgiH,QAAQ,GAAG,GAAG;IAChBhiH,CAAC,CAAC+oK,IAAI,GAAG,GAAG;IACZ\u002FoK,CAAC,CAACyzG,OAAO,GAAG,GAAG;IACfzzG,CAAC,CAACskI,YAAY,GAAG,GAAG;IACpBtkI,CAAC,CAAC0vJ,MAAM,GAAG,GAAG;IACd1vJ,CAAC,CAAC2yG,KAAK,GAAG,GAAG;IACb3yG,CAAC,CAACyqH,MAAM,GAAG,IAAI;IACfzqH,CAAC,CAACmhE,EAAE,GAAG,GAAG;IACVnhE,CAAC,CAACg0J,WAAW,GAAG,GAAG;IACnBh0J,CAAC,CAAC62E,MAAM,GAAG,GAAG;IACd72E,CAAC,CAACu8E,MAAM,GAAG,GAAG;IACdv8E,CAAC,CAACg5E,EAAE,GAAG,GAAG;IACVh5E,CAAC,CAACi0J,YAAY,GAAG,GAAG;IACpBj0J,CAAC,CAAC4wF,EAAE,GAAG,GAAG;IACV5wF,CAAC,CAACokH,QAAQ,GAAG,GAAG;IAChBpkH,CAAC,CAAC27I,MAAM,GAAG,GAAG;IACd37I,CAAC,CAACq0J,MAAM,GAAG,GAAG;IACdr0J,CAAC,CAACwvJ,EAAE,GAAG,GAAG;IACVxvJ,CAAC,CAAC03H,UAAU,GAAG,GAAG;IAClB13H,CAAC,CAACwxE,SAAS,GAAG,GAAG;IACjBxxE,CAAC,CAAC0lH,MAAM,GAAG,GAAG;IACd1lH,CAAC,CAAC6uF,MAAM,GAAG,GAAG;IACd7uF,CAAC,CAACuvL,aAAa,GAAG,GAAG;IACrBvvL,CAAC,CAACmmH,MAAM,GAAG,GAAG;IACdnmH,CAAC,CAACsrF,SAAS,GAAG,GAAG;IACjBtrF,CAAC,CAACyiH,MAAM,GAAG,GAAG;IACdziH,CAAC,CAACirF,MAAM,GAAG,GAAG;IACdjrF,CAAC,CAACkiE,WAAW,GAAG,GAAG;IACnBliE,CAAC,CAACguF,MAAM,GAAG,GAAG;IACdhuF,CAAC,CAACsmF,WAAW,GAAG,GAAG;IACnBtmF,CAAC,CAAC26L,MAAM,GAAG,GAAG;IACd36L,CAAC,CAAC8uK,YAAY,GAAG,GAAG;IACpB9uK,CAAC,CAACwmH,WAAW,GAAG,GAAG;IACnBxmH,CAAC,CAAC+oF,KAAK,GAAG,GAAG;IACb\u002FoF,CAAC,CAAC4mF,SAAS,GAAG,GAAG;IACjB5mF,CAAC,CAAC0kG,OAAO,GAAG,GAAG;IACf1kG,CAAC,CAACimF,MAAM,GAAG,GAAG;IACdjmF,CAAC,CAAC0wL,OAAO,GAAG,GAAG;IACf1wL,CAAC,CAAC+pE,SAAS,GAAG,GAAG;IACjB\u002FpE,CAAC,CAACqnE,MAAM,GAAG,GAAG;IACdrnE,CAAC,CAACi4G,WAAW,GAAG,GAAG;IACnBj4G,CAAC,CAACi7G,SAAS,GAAG,GAAG;IACjBj7G,CAAC,CAAC8qE,OAAO,GAAG,GAAG;IACf9qE,CAAC,CAACgzG,MAAM,GAAG,GAAG;IACdhzG,CAAC,CAACwlG,KAAK,GAAG,GAAG;IACbxlG,CAAC,CAACk4E,YAAY,GAAG,GAAG;IACpBl4E,CAAC,CAACw2I,MAAM,GAAG,GAAG;IACdx2I,CAAC,CAACsgG,MAAM,GAAG,GAAG;IACdtgG,CAAC,CAACukF,YAAY,GAAG,GAAG;IACpBvkF,CAAC,CAACklE,MAAM,GAAG,GAAG;IACdllE,CAAC,CAACqpG,MAAM,GAAG,GAAG;IACdrpG,CAAC,CAACkqE,UAAU,GAAG,GAAG;IAClBlqE,CAAC,CAACquK,MAAM,GAAG,GAAG;IACdruK,CAAC,CAACuuK,QAAQ,GAAG,GAAG;IAChBvuK,CAAC,CAAC+kI,MAAM,GAAG,GAAG;IACd\u002FkI,CAAC,CAACy7I,OAAO,GAAG,GAAG;IACfz7I,CAAC,CAACu+E,MAAM,GAAG,GAAG;IACdv+E,CAAC,CAACkuE,YAAY,GAAG,GAAG;IACpBluE,CAAC,CAAC6tL,WAAW,GAAG,GAAG;IACnB7tL,CAAC,CAACsvF,WAAW,GAAG,GAAG;IACnBtvF,CAAC,CAAC0jE,OAAO,GAAG,GAAG;IACf1jE,CAAC,CAACmlK,MAAM,GAAG,GAAG;IACdnlK,CAAC,CAACizG,QAAQ,GAAG,GAAG;IAChBjzG,CAAC,CAACgtF,UAAU,GAAG,GAAG;IAClBhtF,CAAC,CAACglF,KAAK,GAAG,GAAG;IACbhlF,CAAC,CAACu7E,OAAO,GAAG,GAAG;IACfv7E,CAAC,CAACs+E,MAAM,GAAG,GAAG;IACdt+E,CAAC,CAACkiF,MAAM,GAAG,GAAG;IACdliF,CAAC,CAACw\u002FG,MAAM,GAAG,GAAG;IACdx\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\u002FG,MAAM,GAAG,GAAG;IACd5\u002FG,CAAC,CAACmlL,aAAa,GAAG,GAAG;IACrBnlL,CAAC,CAACwiF,QAAQ,GAAG,GAAG;IAChBxiF,CAAC,CAACy4I,MAAM,GAAG,GAAG;IACdz4I,CAAC,CAAC60E,YAAY,GAAG,GAAG;IACpB70E,CAAC,CAAC61E,MAAM,GAAG,GAAG;IACd71E,CAAC,CAACyoL,SAAS,GAAG,IAAI;IAClBzoL,CAAC,CAAConH,UAAU,GAAG,GAAG;IAClBpnH,CAAC,CAACkyE,MAAM,GAAG,GAAG;IACdlyE,CAAC,CAACwyE,OAAO,GAAG,GAAG;IACfxyE,CAAC,CAAC+1E,MAAM,GAAG,GAAG;IACd\u002F1E,CAAC,CAACyyJ,OAAO,GAAG,GAAG;IACfzyJ,CAAC,CAACq5I,SAAS,GAAG,GAAG;IACjBr5I,CAAC,CAAC2uJ,WAAW,GAAG,GAAG;IACnB3uJ,CAAC,CAACosJ,MAAM,GAAG,GAAG;IACdpsJ,CAAC,CAAC8nF,aAAa,GAAG,GAAG;IACrB9nF,CAAC,CAAC8oE,MAAM,GAAG,GAAG;IACd9oE,CAAC,CAACqqH,OAAO,GAAG,GAAG;IACfrqH,CAAC,CAAC22H,MAAM,GAAG,GAAG;IACd32H,CAAC,CAACmzJ,UAAU,GAAG,GAAG;IAClBnzJ,CAAC,CAACqiF,MAAM,GAAG,GAAG;IACdriF,CAAC,CAAC8iF,YAAY,GAAG,GAAG;IACpB9iF,CAAC,CAACo7E,aAAa,GAAG,GAAG;IACrBp7E,CAAC,CAAC6gH,MAAM,GAAG,GAAG;IACd7gH,CAAC,CAAC4vJ,MAAM,GAAG,GAAG;IACd5vJ,CAAC,CAACqlE,MAAM,GAAG,GAAG;IACdrlE,CAAC,CAAC4uL,MAAM,GAAG,GAAG;IACd5uL,CAAC,CAACkkK,OAAO,GAAG,GAAG;IACflkK,CAAC,CAACinE,MAAM,GAAG,GAAG;IACdjnE,CAAC,CAACslK,YAAY,GAAG,GAAG;IACpBtlK,CAAC,CAAC64E,MAAM,GAAG,GAAG;IACd74E,CAAC,CAAC60J,MAAM,GAAG,GAAG;IACd70J,CAAC,CAAC0+E,YAAY,GAAG,GAAG;IACpB1+E,CAAC,CAACm2E,YAAY,GAAG,GAAG;IACpBn2E,CAAC,CAACkkE,MAAM,GAAG,GAAG;IACdlkE,CAAC,CAAC4jE,OAAO,GAAG,GAAG;IACf5jE,CAAC,CAAC6jE,KAAK,GAAG,GAAG;IACb7jE,CAAC,CAAC68E,MAAM,GAAG,GAAG;IACd78E,CAAC,CAACsiM,UAAU,GAAG,GAAG;IAClBtiM,CAAC,CAACipE,MAAM,GAAG,GAAG;IACdjpE,CAAC,CAAC6yE,OAAO,GAAG,GAAG;IACf7yE,CAAC,CAACgyI,YAAY,GAAG,GAAG;IACpBhyI,CAAC,CAACuhJ,KAAK,GAAG,GAAG;IACbvhJ,CAAC,CAACoxE,WAAW,GAAG,GAAG;IACnBpxE,CAAC,CAACylJ,MAAM,GAAG,GAAG;IACdzlJ,CAAC,CAACm\u002FK,YAAY,GAAG,GAAG;IACpBn\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\u002FE,CAAC,GAAG,GAAG;IACTz\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\u002FG,MAAM,GAAG,GAAG;IACdx\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\u002FG,MAAM,GAAG,GAAG;IACd5\u002FG,CAAC,CAACmlL,aAAa,GAAG,GAAG;IACrBnlL,CAAC,CAACwiF,QAAQ,GAAG,GAAG;IAChBxiF,CAAC,CAACy4I,MAAM,GAAG,GAAG;IACdz4I,CAAC,CAAC60E,YAAY,GAAG,GAAG;IACpB70E,CAAC,CAAC61E,MAAM,GAAG,GAAG;IACd71E,CAAC,CAACyoL,SAAS,GAAG,GAAG;IACjBzoL,CAAC,CAAConH,UAAU,GAAG,GAAG;IAClBpnH,CAAC,CAACkyE,MAAM,GAAG,GAAG;IACdlyE,CAAC,CAACwyE,OAAO,GAAG,GAAG;IACfxyE,CAAC,CAAC+1E,MAAM,GAAG,GAAG;IACd\u002F1E,CAAC,CAACyyJ,OAAO,GAAG,GAAG;IACfzyJ,CAAC,CAACq5I,SAAS,GAAG,GAAG;IACjBr5I,CAAC,CAAC2uJ,WAAW,GAAG,GAAG;IACnB3uJ,CAAC,CAACosJ,MAAM,GAAG,GAAG;IACdpsJ,CAAC,CAAC8nF,aAAa,GAAG,GAAG;IACrB9nF,CAAC,CAAC8oE,MAAM,GAAG,GAAG;IACd9oE,CAAC,CAACqqH,OAAO,GAAG,GAAG;IACfrqH,CAAC,CAAC22H,MAAM,GAAG,GAAG;IACd32H,CAAC,CAACmzJ,UAAU,GAAG,GAAG;IAClBnzJ,CAAC,CAACqiF,MAAM,GAAG,GAAG;IACdriF,CAAC,CAAC8iF,YAAY,GAAG,GAAG;IACpB9iF,CAAC,CAACo7E,aAAa,GAAG,GAAG;IACrBp7E,CAAC,CAAC6gH,MAAM,GAAG,GAAG;IACd7gH,CAAC,CAAC4vJ,MAAM,GAAG,GAAG;IACd5vJ,CAAC,CAACqlE,MAAM,GAAG,GAAG;IACdrlE,CAAC,CAAC4uL,MAAM,GAAG,GAAG;IACd5uL,CAAC,CAACkkK,OAAO,GAAG,GAAG;IACflkK,CAAC,CAACinE,MAAM,GAAG,GAAG;IACdjnE,CAAC,CAACslK,YAAY,GAAG,GAAG;IACpBtlK,CAAC,CAAC64E,MAAM,GAAG,GAAG;IACd74E,CAAC,CAAC60J,MAAM,GAAG,GAAG;IACd70J,CAAC,CAAC0+E,YAAY,GAAG,GAAG;IACpB1+E,CAAC,CAACm2E,YAAY,GAAG,GAAG;IACpBn2E,CAAC,CAACkkE,MAAM,GAAG,GAAG;IACdlkE,CAAC,CAAC4jE,OAAO,GAAG,GAAG;IACf5jE,CAAC,CAAC6jE,KAAK,GAAG,GAAG;IACb7jE,CAAC,CAAC68E,MAAM,GAAG,GAAG;IACd78E,CAAC,CAACsiM,UAAU,GAAG,GAAG;IAClBtiM,CAAC,CAACipE,MAAM,GAAG,GAAG;IACdjpE,CAAC,CAAC6yE,OAAO,GAAG,GAAG;IACf7yE,CAAC,CAACgyI,YAAY,GAAG,GAAG;IACpBhyI,CAAC,CAACuhJ,KAAK,GAAG,GAAG;IACbvhJ,CAAC,CAACoxE,WAAW,GAAG,GAAG;IACnBpxE,CAAC,CAACylJ,MAAM,GAAG,GAAG;IACdzlJ,CAAC,CAACm\u002FK,YAAY,GAAG,GAAG;IACpBn\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\u002FN,WAAWA,CAAC;IAAE8\u002FN,SAAS;IAAE9E,oBAAoB;IAAE+E,SAAS;IAAEjP;EAAU,CAAC,EAAE;IACrE,IAAI,CAAC4J,MAAM,GAAG,EAAE;IAChB,MAAMK,IAAI,GAAG,IAAIvgM,QAAQ,CACvBulM,SAAS,CAACz9N,MAAM,EAChBy9N,SAAS,CAACC,UAAU,EACpBD,SAAS,CAACpqN,UACZ,CAAC;IACD,MAAMmlN,IAAI,GAAG,IAAItgM,QAAQ,CACvBslM,SAAS,CAACx9N,MAAM,EAChBw9N,SAAS,CAACE,UAAU,EACpBF,SAAS,CAACnqN,UACZ,CAAC;IACD,MAAMg0M,UAAU,GAAGqR,oBAAoB,GAAG,CAAC,GAAG,CAAC;IAC\u002FC,IAAI1xK,IAAI,GAAG0xK,oBAAoB,GAAGD,IAAI,CAACkF,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAGlF,IAAI,CAAC\u002FmN,SAAS,CAAC,CAAC,CAAC;IAC3E,IAAIlP,GAAG,GAAG,CAAC;IACX,KAAK,IAAI3D,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2vN,SAAS,EAAE3vN,CAAC,EAAE,EAAE;MAClC2D,GAAG,IAAI6kN,UAAU;MACjB,MAAM9mK,IAAI,GAAGm4K,oBAAoB,GAC7BD,IAAI,CAACkF,SAAS,CAACn7N,GAAG,CAAC,GACnB,CAAC,GAAGi2N,IAAI,CAAC\u002FmN,SAAS,CAAClP,GAAG,CAAC;MAC3B,IAAI+9C,IAAI,KAAKyG,IAAI,EAAE;QACjB,IAAI,CAACoxK,MAAM,CAACj5N,IAAI,CAAC,IAAIy+N,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC\u002FB;MACF;MAEA,MAAM\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\u002FK,MAAM,CAAC6\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\u002FN,IAAI,CACX,IAAI0\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\u002F1B,GAAG,EAAEs8N,YAAY,CAAC\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\u002F1N,IAAI,EAAE4K,MAAM,EAAE\u002FJ,GAAG,EAAE;EACrCb,IAAI,CAAC4K,MAAM,CAAC,GAAI\u002FJ,GAAG,IAAI,CAAC,GAAI,IAAI;EAChCb,IAAI,CAAC4K,MAAM,GAAG,CAAC,CAAC,GAAG\u002FJ,GAAG,GAAG,IAAI;AAC\u002FB;AAEA,SAASm1N,UAAUA,CAACh2N,IAAI,EAAE4K,MAAM,EAAE\u002FJ,GAAG,EAAE;EACrCb,IAAI,CAAC4K,MAAM,CAAC,GAAI\u002FJ,GAAG,IAAI,EAAE,GAAI,IAAI;EACjCb,IAAI,CAAC4K,MAAM,GAAG,CAAC,CAAC,GAAI\u002FJ,GAAG,IAAI,EAAE,GAAI,IAAI;EACrCb,IAAI,CAAC4K,MAAM,GAAG,CAAC,CAAC,GAAI\u002FJ,GAAG,IAAI,CAAC,GAAI,IAAI;EACpCb,IAAI,CAAC4K,MAAM,GAAG,CAAC,CAAC,GAAG\u002FJ,GAAG,GAAG,IAAI;AAC\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\u002FlL,KAAK,CAACrnB,MAAM,CAAC\u002FjB,KAAK,EAAEixN,WAAW,CAAC;IACvC,CAAC,MAAM;MACL,IAAI,CAAC7lL,KAAK,CAACzhD,MAAM,GAAG,CAAC;IACvB;IACA,OAAO,KAAK;EACd;AACF;AAOA,MAAM0nO,iBAAiB,GAAG,KAAK;AAC\u002FB,MAAMC,qBAAqB,GAAG,IAAI;AAElC,SAASC,UAAUA,CAAC\u002FlO,IAAI,EAAE;EACxB,OACGA,IAAI,IAAI,EAAE,IAAIA,IAAI,IAAI,EAAE,IACxBA,IAAI,IAAI,EAAE,IAAIA,IAAI,IAAI,EAAG,IACzBA,IAAI,IAAI,EAAE,IAAIA,IAAI,IAAI,GAAI;AAE\u002FB;AAEA,SAASgmO,OAAOA,CAACtwN,IAAI,EAAErF,GAAG,EAAE41N,aAAa,EAAE;EACzC,IAAIA,aAAa,IAAIvwN,IAAI,CAACvX,MAAM,EAAE;IAChC,OAAO,IAAIwD,UAAU,CAAC,CAAC,CAAC;EAC1B;EACA,MAAMukO,EAAE,GAAG,KAAK;IACdC,EAAE,GAAG,KAAK;EACZ,IAAIliO,CAAC,GAAGoM,GAAG,GAAG,CAAC;IACbpP,CAAC;IACDsc,CAAC;EACH,KAAKtc,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGglO,aAAa,EAAEhlO,CAAC,EAAE,EAAE;IAClCgD,CAAC,GAAI,CAACyR,IAAI,CAACzU,CAAC,CAAC,GAAGgD,CAAC,IAAIiiO,EAAE,GAAGC,EAAE,GAAK,CAAC,CAAC,IAAI,EAAE,IAAI,CAAE;EACjD;EACA,MAAM7hN,KAAK,GAAG5O,IAAI,CAACvX,MAAM,GAAG8nO,aAAa;EACzC,MAAMG,SAAS,GAAG,IAAIzkO,UAAU,CAAC2iB,KAAK,CAAC;EACvC,KAAKrjB,CAAC,GAAGglO,aAAa,EAAE1oN,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG+G,KAAK,EAAErjB,CAAC,EAAE,EAAEsc,CAAC,EAAE,EAAE;IAClD,MAAMre,KAAK,GAAGwW,IAAI,CAACzU,CAAC,CAAC;IACrBmlO,SAAS,CAAC7oN,CAAC,CAAC,GAAGre,KAAK,GAAI+E,CAAC,IAAI,CAAE;IAC\u002FBA,CAAC,GAAI,CAAC\u002FE,KAAK,GAAG+E,CAAC,IAAIiiO,EAAE,GAAGC,EAAE,GAAK,CAAC,CAAC,IAAI,EAAE,IAAI,CAAE;EAC\u002FC;EACA,OAAOC,SAAS;AAClB;AAEA,SAASC,YAAYA,CAAC3wN,IAAI,EAAErF,GAAG,EAAE41N,aAAa,EAAE;EAC9C,MAAMC,EAAE,GAAG,KAAK;IACdC,EAAE,GAAG,KAAK;EACZ,IAAIliO,CAAC,GAAGoM,GAAG,GAAG,CAAC;EACf,MAAMiU,KAAK,GAAG5O,IAAI,CAACvX,MAAM;IACvB09B,WAAW,GAAGvX,KAAK,KAAK,CAAC;EAC3B,MAAM8hN,SAAS,GAAG,IAAIzkO,UAAU,CAACk6B,WAAW,CAAC;EAC7C,IAAI56B,CAAC,EAAEsc,CAAC;EACR,KAAKtc,CAAC,GAAG,CAAC,EAAEsc,CAAC,GAAG,CAAC,EAAEtc,CAAC,GAAGqjB,KAAK,EAAErjB,CAAC,EAAE,EAAE;IACjC,MAAMqlO,MAAM,GAAG5wN,IAAI,CAACzU,CAAC,CAAC;IACtB,IAAI,CAAC8kO,UAAU,CAACO,MAAM,CAAC,EAAE;MACvB;IACF;IACArlO,CAAC,EAAE;IACH,IAAIslO,MAAM;IACV,OAAOtlO,CAAC,GAAGqjB,KAAK,IAAI,CAACyhN,UAAU,CAAEQ,MAAM,GAAG7wN,IAAI,CAACzU,CAAC,CAAE,CAAC,EAAE;MACnDA,CAAC,EAAE;IACL;IACA,IAAIA,CAAC,GAAGqjB,KAAK,EAAE;MACb,MAAMplB,KAAK,GAAG2S,QAAQ,CAAChR,MAAM,CAACC,YAAY,CAACwlO,MAAM,EAAEC,MAAM,CAAC,EAAE,EAAE,CAAC;MAC\u002FDH,SAAS,CAAC7oN,CAAC,EAAE,CAAC,GAAGre,KAAK,GAAI+E,CAAC,IAAI,CAAE;MACjCA,CAAC,GAAI,CAAC\u002FE,KAAK,GAAG+E,CAAC,IAAIiiO,EAAE,GAAGC,EAAE,GAAK,CAAC,CAAC,IAAI,EAAE,IAAI,CAAE;IAC\u002FC;EACF;EACA,OAAOC,SAAS,CAAC\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\u002F\u002FB,GAAG,CAAC,cAAc,CAAC;IAC3B+\u002FB,OAAO,CAAC\u002F\u002FB,GAAG,CAAC,qBAAqB,CAAC;IAClC+\u002FB,OAAO,CAAC\u002F\u002FB,GAAG,CAACvS,IAAI,CAAC;IACjBsyC,OAAO,CAAC\u002F\u002FB,GAAG,CAACvS,IAAI,CAAC;IACjBsyC,OAAO,CAAC\u002F\u002FB,GAAG,CAAC,QAAQ,CAAC;IACrB+zM,GAAG,CAACh0K,OAAO,GAAGA,OAAO;IAErBg0K,GAAG,CAACQ,eAAe,GAAG,IAAI6C,QAAQ,CAAC,CAAC;IAEpC,MAAMjlM,KAAK,GAAGk2M,MAAM,CAACr8N,MAAM;IAC3B,MAAM+rO,YAAY,GAAG,CAAC,SAAS,CAAC;IAChC,IAAIjpO,CAAC,EAAE+I,EAAE;IACT,KAAK\u002FI,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGqjB,KAAK,EAAErjB,CAAC,EAAE,EAAE;MAC1B,MAAMgjN,SAAS,GAAGojB,WAAW,CAACpmO,CAAC,CAAC,CAACgjN,SAAS;MAC1C,MAAMjlL,KAAK,GAAGqmL,kBAAkB,CAACh+I,OAAO,CAAC48I,SAAS,CAAC;MACnD,IAAIjlL,KAAK,KAAK,CAAC,CAAC,EAAE;QAChBkT,OAAO,CAAC\u002F\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\u002FD,QAAQ,IAAIT,QAAQ,EAAE;IAC\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\u002FB,KAAK,GAAG,IAAI;EAC\u002FBwB,KAAK,CAACs+B,KAAK,GAAG,CAAC,CAAC,GAAG9\u002FB,KAAK,KAAK,CAAC;EAC9BwB,KAAK,CAACs+B,KAAK,GAAG,CAAC,CAAC,GAAG9\u002FB,KAAK,KAAK,EAAE;EAC\u002FBwB,KAAK,CAACs+B,KAAK,CAAC,GAAG9\u002FB,KAAK,KAAK,EAAE;AAC7B;AAEA,SAAS8sO,KAAKA,CAAC7lO,EAAE,EAAEE,EAAE,EAAED,EAAE,EAAEE,EAAE,EAAE;EAC7B,OAAO,CAACH,EAAE,IAAI,EAAE,KAAKE,EAAE,IAAI,EAAE,CAAC,IAAID,EAAE,IAAI,CAAC,CAAC,GAAGE,EAAE;AACjD;AAEA,SAAS2lO,QAAQA,CAAC\u002FsO,KAAK,EAAE;EAOvB,OAAO2B,MAAM,CAACC,YAAY,CAAE5B,KAAK,IAAI,CAAC,GAAI,IAAI,EAAEA,KAAK,GAAG,IAAI,CAAC;AAC\u002FD;AAEA,SAASgtO,YAAYA,CAAChtO,KAAK,EAAE;EAQ3B,IAAIA,KAAK,GAAG,MAAM,EAAE;IAClBA,KAAK,GAAG,MAAM;EAChB,CAAC,MAAM,IAAIA,KAAK,GAAG,CAAC,MAAM,EAAE;IAC1BA,KAAK,GAAG,CAAC,MAAM;EACjB;EACA,OAAO2B,MAAM,CAACC,YAAY,CAAE5B,KAAK,IAAI,CAAC,GAAI,IAAI,EAAEA,KAAK,GAAG,IAAI,CAAC;AAC\u002FD;AAEA,SAASitO,cAAcA,CAACnmB,IAAI,EAAE;EAC5B,MAAM5lK,MAAM,GAAG4lK,IAAI,CAACnyM,SAAS,CAAC,CAAC,CAAC;EAChC,OACEuD,UAAU,CAACgpC,MAAM,EAAE,CAAC,CAAC,KAAK,UAAU,IAAI3\u002FC,aAAa,CAAC2\u002FC,MAAM,CAAC,KAAK,MAAM;AAE5E;AAEA,SAASgsL,wBAAwBA,CAACpmB,IAAI,EAAE;EACtC,MAAM5lK,MAAM,GAAG4lK,IAAI,CAACnyM,SAAS,CAAC,CAAC,CAAC;EAChC,OAAOpT,aAAa,CAAC2\u002FC,MAAM,CAAC,KAAK,MAAM;AACzC;AAEA,SAASisL,cAAcA,CAACrmB,IAAI,EAAE;EAC5B,MAAM5lK,MAAM,GAAG4lK,IAAI,CAACnyM,SAAS,CAAC,CAAC,CAAC;EAChC,OAAOpT,aAAa,CAAC2\u002FC,MAAM,CAAC,KAAK,MAAM;AACzC;AAEA,SAASksL,WAAWA,CAACtmB,IAAI,EAAE;EACzB,MAAM5lK,MAAM,GAAG4lK,IAAI,CAACnyM,SAAS,CAAC,CAAC,CAAC;EAEhC,IAAIusC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAIA,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;IAC5C,OAAO,IAAI;EACb;EAGA,IAAIA,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAIA,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;IAC5C,OAAO,IAAI;EACb;EACA,OAAO,KAAK;AACd;AAOA,SAASmsL,SAASA,CAACvmB,IAAI,EAAE;EACvB,MAAM5lK,MAAM,GAAG4lK,IAAI,CAACnyM,SAAS,CAAC,CAAC,CAAC;EAChC,IACgCusC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAGfA,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAC3CA,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EACd;IACA,OAAO,IAAI;EACb;EACA,OAAO,KAAK;AACd;AAEA,SAASosL,eAAeA,CAACxmB,IAAI,EAAE;EAAE94N,IAAI;EAAEu\u002FO,OAAO;EAAE9S;AAAU,CAAC,EAAE;EAC3D,IAAI+S,QAAQ,EAAEC,WAAW;EAEzB,IAAIR,cAAc,CAACnmB,IAAI,CAAC,IAAIomB,wBAAwB,CAACpmB,IAAI,CAAC,EAAE;IAC1D0mB,QAAQ,GAAG\u002FS,SAAS,GAAG,cAAc,GAAG,UAAU;EACpD,CAAC,MAAM,IAAI0S,cAAc,CAACrmB,IAAI,CAAC,EAAE;IAC\u002FB0mB,QAAQ,GAAG\u002FS,SAAS,GAAG,cAAc,GAAG,UAAU;EACpD,CAAC,MAAM,IAAI2S,WAAW,CAACtmB,IAAI,CAAC,EAAE;IAC5B,IAAI2T,SAAS,EAAE;MACb+S,QAAQ,GAAG,cAAc;IAC3B,CAAC,MAAM;MACLA,QAAQ,GAAGx\u002FO,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO;IACrD;EACF,CAAC,MAAM,IAAIq\u002FO,SAAS,CAACvmB,IAAI,CAAC,EAAE;IAC1B,IAAI2T,SAAS,EAAE;MACb+S,QAAQ,GAAG,cAAc;MACzBC,WAAW,GAAG,eAAe;IAC\u002FB,CAAC,MAAM;MACLD,QAAQ,GAAGx\u002FO,IAAI,KAAK,SAAS,GAAG,SAAS,GAAG,OAAO;MACnDy\u002FO,WAAW,GAAG,QAAQ;IACxB;EACF,CAAC,MAAM;IACLvvO,IAAI,CAAC,mEAAmE,CAAC;IACzEsvO,QAAQ,GAAGx\u002FO,IAAI;IACfy\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\u002FN,GAAG,CAAC0\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\u002FnL,KAAK,CAACxiD,CAAC,CAAC,CAAC+\u002FM,OAAO,CAAC;IACtC,EAAE\u002F\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\u002FM,eAAe,IAAI,CAAC,IAAIn\u002FM,QAAQ;MAClC,CAAC,MAAM,IAAIA,QAAQ,GAAG,EAAE,EAAE;QACxBo\u002FM,eAAe,IAAI,CAAC,IAAKp\u002FM,QAAQ,GAAG,EAAG;MACzC,CAAC,MAAM,IAAIA,QAAQ,GAAG,EAAE,EAAE;QACxBq\u002FM,eAAe,IAAI,CAAC,IAAKr\u002FM,QAAQ,GAAG,EAAG;MACzC,CAAC,MAAM,IAAIA,QAAQ,GAAG,GAAG,EAAE;QACzBs\u002FM,eAAe,IAAI,CAAC,IAAKt\u002FM,QAAQ,GAAG,EAAG;MACzC,CAAC,MAAM;QACL,MAAM,IAAI7vB,WAAW,CACnB,2DACF,CAAC;MACH;IACF;IACA,IAAIqvO,aAAa,GAAG,MAAM,EAAE;MAG1BA,aAAa,GAAG,MAAM;IACxB;EACF,CAAC,MAAM;IAELD,cAAc,GAAG,CAAC;IAClBC,aAAa,GAAG,GAAG;EACrB;EAEA,MAAMhxL,IAAI,GAAG1tC,UAAU,CAAC0tC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;EAC5C,MAAM0\u002FK,UAAU,GACdgR,QAAQ,CAAChR,UAAU,KAClBptN,UAAU,CAACs2M,UAAU,GAClB,CAAC,GAAGrmN,IAAI,CAACwF,GAAG,CAAC,GAAGuK,UAAU,CAACs2M,UAAU,CAACngN,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAACiR,GAAG,CAACnX,IAAI,CAAC8H,GAAG,CAAC,CAAC,GAChE,IAAI,CAAC;EAIX,MAAM8c,KAAK,GAAG7U,UAAU,CAAC02M,YAAY,GACjC,GAAG,GACH0W,UAAU,GAAGiM,qBAAqB;EAEtC,MAAMsF,UAAU,GACdP,QAAQ,CAAC5nB,MAAM,IAAIvmN,IAAI,CAACsa,KAAK,CAACsK,KAAK,IAAI7U,UAAU,CAACw2M,MAAM,IAAI9oK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EACvE,IAAIkxL,WAAW,GACbR,QAAQ,CAAC3nB,OAAO,IAAIxmN,IAAI,CAACsa,KAAK,CAACsK,KAAK,IAAI7U,UAAU,CAACy2M,OAAO,IAAI\u002FoK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;EACzE,IAAIkxL,WAAW,GAAG,CAAC,IAAI5+N,UAAU,CAACy2M,OAAO,GAAG,CAAC,IAAI\u002FoK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;IAC5DkxL,WAAW,GAAG,CAACA,WAAW;EAC5B;EACA,MAAMC,SAAS,GAAGT,QAAQ,CAACxO,IAAI,IAAI+O,UAAU;EAC7C,MAAMG,UAAU,GAAG,CAACV,QAAQ,CAACzO,IAAI,IAAI,CAACiP,WAAW;EAEjD,OACE,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,cAAc,GACdjvO,MAAM,CAACC,YAAY,CAACoQ,UAAU,CAAC++N,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC,GACxD,0BAA0B,GAC1BpuO,QAAQ,CAAC0tO,eAAe,CAAC,GACzB1tO,QAAQ,CAAC2tO,eAAe,CAAC,GACzB3tO,QAAQ,CAAC4tO,eAAe,CAAC,GACzB5tO,QAAQ,CAAC6tO,eAAe,CAAC,GACzB,kBAAkB,GAClBzD,QAAQ,CAAC\u002F6N,UAAU,CAAC2J,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,GACxCoxN,QAAQ,CAAC0D,cAAc,IAAIz+N,UAAU,CAAC+nN,SAAS,CAAC,GAChDgT,QAAQ,CAAC2D,aAAa,IAAI1+N,UAAU,CAACgoN,QAAQ,CAAC,GAC9C+S,QAAQ,CAAC4D,UAAU,CAAC,GACpB5D,QAAQ,CAAC6D,WAAW,CAAC,GACrB,UAAU,GACV7D,QAAQ,CAAC8D,SAAS,CAAC,GACnB9D,QAAQ,CAAC+D,UAAU,CAAC,GACpB,kBAAkB,GAClB,kBAAkB,GAClB\u002FD,QAAQ,CAAC\u002F6N,UAAU,CAAC0tN,OAAO,CAAC,GAC5BqN,QAAQ,CAAC\u002F6N,UAAU,CAACytN,SAAS,CAAC,GAC9BsN,QAAQ,CAAC,CAAC,CAAC,GACXA,QAAQ,CAAC0D,cAAc,IAAIz+N,UAAU,CAAC+nN,SAAS,CAAC,GAChD,UAAU;AAEd;AAEA,SAASiX,eAAeA,CAACh\u002FN,UAAU,EAAE;EACnC,MAAM6J,KAAK,GAAG5Z,IAAI,CAACkiB,KAAK,CAACnS,UAAU,CAAC2J,WAAW,GAAG,CAAC,IAAI,EAAE,CAAC;EAC1D,OACE,kBAAkB,GAClBhZ,QAAQ,CAACkZ,KAAK,CAAC,GACf,UAAU,GACV,UAAU,GACVlZ,QAAQ,CAACqP,UAAU,CAAC++N,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,GACvC,kBAAkB,GAClB,kBAAkB,GAClB,kBAAkB,GAClB,kBAAkB;AAEtB;AAEA,SAASE,oBAAoBA,CAACvwO,IAAI,EAAE;EAElC,OAAOA,IAAI,CAACkK,UAAU,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAACzC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;AACxE;AAEA,SAAS+oO,eAAeA,CAACxwO,IAAI,EAAEywO,KAAK,EAAE;EACpC,IAAI,CAACA,KAAK,EAAE;IACVA,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC;EAClB;EAEA,MAAMn+L,OAAO,GAAG,CACdm+L,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,kBAAkB,EACjCA,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAIzwO,IAAI,EACnBywO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,EACxBA,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,EACzBA,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAIzwO,IAAI,EACnBywO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,cAAc,EAC7BA,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAIF,oBAAoB,CAACvwO,IAAI,CAAC,EACzCywO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,EACxBA,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,EACxBA,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CACzB;EAID,MAAMC,cAAc,GAAG,EAAE;EACzB,IAAIrvO,CAAC,EAAE+I,EAAE,EAAEuT,CAAC,EAAEgY,EAAE,EAAE7zB,GAAG;EACrB,KAAKT,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAGkoC,OAAO,CAAC\u002FzC,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,EAAE,EAAE;IAC5CS,GAAG,GAAG2uO,KAAK,CAAC,CAAC,CAAC,CAACpvO,CAAC,CAAC,IAAIixC,OAAO,CAACjxC,CAAC,CAAC;IAE\u002FB,MAAMsvO,aAAa,GAAG,EAAE;IACxB,KAAKhzN,CAAC,GAAG,CAAC,EAAEgY,EAAE,GAAG7zB,GAAG,CAACvD,MAAM,EAAEof,CAAC,GAAGgY,EAAE,EAAEhY,CAAC,EAAE,EAAE;MACxCgzN,aAAa,CAAChvO,IAAI,CAAC0qO,QAAQ,CAACvqO,GAAG,CAACE,UAAU,CAAC2b,CAAC,CAAC,CAAC,CAAC;IACjD;IACA+yN,cAAc,CAAC\u002FuO,IAAI,CAACgvO,aAAa,CAAC\u002FuO,IAAI,CAAC,EAAE,CAAC,CAAC;EAC7C;EAEA,MAAMwlN,KAAK,GAAG,CAAC90K,OAAO,EAAEo+L,cAAc,CAAC;EACvC,MAAME,SAAS,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC;EAC1C,MAAM1W,SAAS,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC;EAC1C,MAAM1nL,SAAS,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC;EAE1C,MAAMq+L,gBAAgB,GAAGv+L,OAAO,CAAC\u002FzC,MAAM,GAAGqyO,SAAS,CAACryO,MAAM;EAC1D,IAAIuyO,SAAS,GACX,UAAU,GACVzE,QAAQ,CAACwE,gBAAgB,CAAC,GAC1BxE,QAAQ,CAACwE,gBAAgB,GAAG,EAAE,GAAG,CAAC,CAAC;EAGrC,IAAIE,SAAS,GAAG,CAAC;EACjB,KAAK1vO,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAGwmO,SAAS,CAACryO,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,EAAE,EAAE;IAC9C,MAAM2vO,IAAI,GAAG5pB,KAAK,CAAC\u002FlN,CAAC,CAAC;IACrB,KAAKsc,CAAC,GAAG,CAAC,EAAEgY,EAAE,GAAGq7M,IAAI,CAACzyO,MAAM,EAAEof,CAAC,GAAGgY,EAAE,EAAEhY,CAAC,EAAE,EAAE;MACzC7b,GAAG,GAAGkvO,IAAI,CAACrzN,CAAC,CAAC;MACb,MAAMszN,UAAU,GACdL,SAAS,CAACvvO,CAAC,CAAC,GACZ64N,SAAS,CAAC74N,CAAC,CAAC,GACZmxC,SAAS,CAACnxC,CAAC,CAAC,GACZgrO,QAAQ,CAAC1uN,CAAC,CAAC,GACX0uN,QAAQ,CAACvqO,GAAG,CAACvD,MAAM,CAAC,GACpB8tO,QAAQ,CAAC0E,SAAS,CAAC;MACrBD,SAAS,IAAIG,UAAU;MACvBF,SAAS,IAAIjvO,GAAG,CAACvD,MAAM;IACzB;EACF;EAEAuyO,SAAS,IAAIx+L,OAAO,CAAC1wC,IAAI,CAAC,EAAE,CAAC,GAAG8uO,cAAc,CAAC9uO,IAAI,CAAC,EAAE,CAAC;EACvD,OAAOkvO,SAAS;AAClB;AAMA,MAAMI,IAAI,CAAC;EACThxO,WAAWA,CAACF,IAAI,EAAEomN,IAAI,EAAE90M,UAAU,EAAE6\u002FN,gBAAgB,EAAE;IACpD,IAAI,CAACnxO,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACoxO,MAAM,GAAG,IAAI;IAClB,IAAI,CAACC,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACC,eAAe,GAAGH,gBAAgB,CAACG,eAAe;IACvD,IAAI,CAACC,mBAAmB,GAAGJ,gBAAgB,CAACI,mBAAmB;IAE\u002FD,IAAI,CAAC9X,UAAU,GAAGnoN,UAAU,CAACmoN,UAAU;IACvC,IAAI,CAAC+X,WAAW,GAAGlgO,UAAU,CAACkgO,WAAW;IACzC,IAAI,CAACC,WAAW,GAAG,KAAK;IACxB,IAAI,CAAC72N,WAAW,GAAGtJ,UAAU,CAACsJ,WAAW;IAEzC,IAAI,CAAC82N,WAAW,GAAGlyO,MAAM,CAACuP,MAAM,CAAC,IAAI,CAAC;IACtC,IAAI,CAAC4iO,WAAW,GAAGnyO,MAAM,CAACuP,MAAM,CAAC,IAAI,CAAC;IAEtC,IAAI6iO,WAAW,GAAG,CAAC,EAAEtgO,UAAU,CAACy+C,KAAK,GAAGgzJ,SAAS,CAACE,KAAK,CAAC;IAGxD,IAAI,CAAC2uB,WAAW,IAAI,CAACtgO,UAAU,CAACugO,gBAAgB,EAAE;MAChD,MAAMC,QAAQ,GAAG9xO,IAAI,CAACkK,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAChL,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D6yO,UAAU,GAAG5e,aAAa,CAAC,CAAC;MAC9B,KAAK,MAAM6e,QAAQ,IAAIF,QAAQ,CAAC5yO,KAAK,CAAC,GAAG,CAAC,EAAE;QAC1C,IAAI6yO,UAAU,CAACC,QAAQ,CAAC,EAAE;UACxBJ,WAAW,GAAG,IAAI;UAClB;QACF;MACF;IACF;IACA,IAAI,CAACA,WAAW,GAAGA,WAAW;IAE9B,IAAI,CAAC3tB,cAAc,GAAG,CAAC,EAAE3yM,UAAU,CAACy+C,KAAK,GAAGgzJ,SAAS,CAACG,QAAQ,CAAC;IAC\u002FD,IAAI,CAAC+uB,WAAW,GAAG,CAAC,EAAE3gO,UAAU,CAACy+C,KAAK,GAAGgzJ,SAAS,CAACC,UAAU,CAAC;IAE9D,IAAI;MAAE11N,IAAI;MAAEu\u002FO;IAAQ,CAAC,GAAGv7N,UAAU;IAClC,IAAI,CAAChkB,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACu\u002FO,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACqF,cAAc,GAAG5gO,UAAU,CAAC4gO,cAAc;IAE\u002FC,MAAMC,OAAO,GAAGnyO,IAAI,CAAC1B,KAAK,CAAC,6BAA6B,CAAC;IACzD,IAAI,CAAC8zO,kBAAkB,GAAG,CAAC,CAACD,OAAO;IACnC,IAAI,IAAI,CAACC,kBAAkB,EAAE;MAC3B,IAAI,CAACC,YAAY,GAAGF,OAAO,CAAC,CAAC,CAAC;IAChC,CAAC,MAAM,IAAI,IAAI,CAACF,WAAW,EAAE;MAC3B,IAAI,CAACI,YAAY,GAAG,WAAW;IACjC,CAAC,MAAM,IAAI,IAAI,CAACT,WAAW,EAAE;MAC3B,IAAI,CAACS,YAAY,GAAG,OAAO;IAC7B,CAAC,MAAM;MACL,IAAI,CAACA,YAAY,GAAG,YAAY;IAClC;IAEA,IAAI,IAAI,CAACH,cAAc,EAAEI,aAAa,EAAE;MAEtC,IAAI,CAACJ,cAAc,CAACI,aAAa,GAAG,KAAK;MACzC,IAAI,CAACJ,cAAc,CAACnzN,GAAG,IAAI,IAAI,IAAI,CAACszN,YAAY,EAAE;IACpD;IAEA,IAAI,CAACjuB,WAAW,GAAG9yM,UAAU,CAAC8yM,WAAW;IACzC,IAAI,CAAC6E,MAAM,GAAG33M,UAAU,CAAC23M,MAAM;IAC\u002FB,IAAI,CAACoC,YAAY,GAAG\u002F5M,UAAU,CAAC+5M,YAAY;IAC3C,IAAI,CAAC0O,SAAS,GAAGzoN,UAAU,CAACyoN,SAAS;IACrC,IAAI,CAACz5K,IAAI,GAAGhvC,UAAU,CAACgvC,IAAI;IAC3B,IAAI,CAACy+K,SAAS,GAAGztN,UAAU,CAACytN,SAAS,GAAG4L,qBAAqB;IAC7D,IAAI,CAAC7iB,MAAM,GAAGx2M,UAAU,CAACw2M,MAAM,GAAG6iB,qBAAqB;IACvD,IAAI,CAAC5iB,OAAO,GAAGz2M,UAAU,CAACy2M,OAAO,GAAG4iB,qBAAqB;IACzD,IAAI,CAAC4H,UAAU,GAAG,IAAI,CAACzqB,MAAM,GAAG,IAAI,CAACC,OAAO;IAC5C,IAAI,CAACH,UAAU,GAAGt2M,UAAU,CAACs2M,UAAU;IACvC,IAAI,CAAC5oK,IAAI,GAAG1tC,UAAU,CAAC0tC,IAAI;IAC3B,IAAI,CAACi7K,eAAe,GAAG3oN,UAAU,CAAC2oN,eAAe;IAEjD,IAAI,CAACmR,SAAS,GAAG95N,UAAU,CAAC85N,SAAS;IACrC,IAAI,CAAC+B,UAAU,GAAG,EAAE;IAEpB,IAAI77N,UAAU,CAAChkB,IAAI,KAAK,OAAO,EAAE;MAC\u002FB,KAAK,IAAI+c,QAAQ,GAAG,CAAC,EAAEA,QAAQ,GAAG,GAAG,EAAEA,QAAQ,EAAE,EAAE;QACjD,IAAI,CAAC8iO,UAAU,CAAC9iO,QAAQ,CAAC,GACvB,IAAI,CAAC+5M,WAAW,CAAC\u002F5M,QAAQ,CAAC,IAAIiH,UAAU,CAAC2oN,eAAe,CAAC5vN,QAAQ,CAAC;MACtE;MACA;IACF;IAEA,IAAI,CAACmoO,WAAW,GAAGlhO,UAAU,CAACkhO,WAAW,IAAI,EAAE;IAC\u002FC,IAAI,CAAC\u002FxL,QAAQ,GAAG,CAAC,CAACnvC,UAAU,CAACmvC,QAAQ;IACrC,IAAI,IAAI,CAACA,QAAQ,EAAE;MACjB,IAAI,CAACgyL,QAAQ,GAAGnhO,UAAU,CAACmhO,QAAQ;MACnC,IAAI,CAACC,eAAe,GAAGphO,UAAU,CAACohO,eAAe;IACnD;IAEA,IAAI,CAACtsB,IAAI,IAAIA,IAAI,CAAChzM,OAAO,EAAE;MACzB,IAAIgzM,IAAI,EAAE;QAGR5oN,IAAI,CAAC,yBAAyB,GAAGwC,IAAI,GAAG,KAAK,GAAG,IAAI,CAACy5N,UAAU,GAAG,GAAG,CAAC;MACxE;MACA,IAAI,CAACkZ,oBAAoB,CAACrhO,UAAU,CAAC;MACrC;IACF;IAKA,CAAChkB,IAAI,EAAEu\u002FO,OAAO,CAAC,GAAGD,eAAe,CAACxmB,IAAI,EAAE90M,UAAU,CAAC;IAEnD,IAAIhkB,IAAI,KAAK,IAAI,CAACA,IAAI,IAAIu\u002FO,OAAO,KAAK,IAAI,CAACA,OAAO,EAAE;MAClDzvO,IAAI,CACF,iDAAiD,GAC\u002FC,GAAG,IAAI,CAAC9P,IAAI,IAAI,IAAI,CAACu\u002FO,OAAO,eAAev\u002FO,IAAI,IAAIu\u002FO,OAAO,GAC9D,CAAC;IACH;IAEA,IAAI\u002F2N,IAAI;IACR,IAAI;MACF,QAAQxoB,IAAI;QACV,KAAK,SAAS;UACZ8P,IAAI,CAAC,gBAAgB,GAAG4C,IAAI,GAAG,2BAA2B,CAAC;QAE7D,KAAK,OAAO;QACZ,KAAK,cAAc;UACjB,IAAI,CAACqxO,QAAQ,GAAG,eAAe;UAE\u002FB,MAAM\u002FqB,GAAG,GACPumB,OAAO,KAAK,QAAQ,IAAIA,OAAO,KAAK,eAAe,GAC\u002FC,IAAItT,OAAO,CAACnT,IAAI,EAAE90M,UAAU,CAAC,GAC7B,IAAIy3N,SAAS,CAAC\u002FoO,IAAI,EAAEomN,IAAI,EAAE90M,UAAU,CAAC;UAE3Cw5N,YAAY,CAACx5N,UAAU,CAAC;UAGxBwE,IAAI,GAAG,IAAI,CAACovN,OAAO,CAACllO,IAAI,EAAEsmN,GAAG,EAAEh1M,UAAU,CAAC;UAC1C;QAEF,KAAK,UAAU;QACf,KAAK,UAAU;QACf,KAAK,cAAc;UACjB,IAAI,CAAC+\u002FN,QAAQ,GAAG,eAAe;UAI\u002FBv7N,IAAI,GAAG,IAAI,CAAC88N,cAAc,CAAC5yO,IAAI,EAAEomN,IAAI,EAAE90M,UAAU,CAAC;UAElDw5N,YAAY,CAACx5N,UAAU,CAAC;UAExB,IAAI,IAAI,CAACuhO,UAAU,EAAE;YACnBvlP,IAAI,GAAG,UAAU;UACnB;UACA;QAEF;UACE,MAAM,IAAIqT,WAAW,CAAC,QAAQrT,IAAI,mBAAmB,CAAC;MAC1D;IACF,CAAC,CAAC,OAAOyzB,CAAC,EAAE;MACVvjB,IAAI,CAACujB,CAAC,CAAC;MACP,IAAI,CAAC4xN,oBAAoB,CAACrhO,UAAU,CAAC;MACrC;IACF;IAEAi6N,sBAAsB,CAACj6N,UAAU,CAAC;IAClC,IAAI,CAACwE,IAAI,GAAGA,IAAI;IAGhB,IAAI,CAACxoB,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACu\u002FO,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACjlB,UAAU,GAAGt2M,UAAU,CAACs2M,UAAU;IACvC,IAAI,CAACqB,MAAM,GAAG33M,UAAU,CAAC23M,MAAM;IAC\u002FB,IAAI,CAACoC,YAAY,GAAG\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\u002FiO,IAAI,GAAG+9N,IAAI,CAAC\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\u002Fe,IAAI,CAACllN,IAAI,GAAG,IAAI\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,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3D,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC1D,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EACnE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACpD,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC5D,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAClD,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAA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\u002FD,qBAAqB,GAAG,GAAG;MAC\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\u002FBukB,QAAQ,CAAC\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\u002FN,KAAK,EAAE;EACrB,MAAMq\u002FN,GAAG,GAAG,EAAE;EACd,KAAK,IAAI1iP,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAIqjB,KAAK,EAAErjB,CAAC,EAAE,EAAE;IAC\u002FB,MAAM0H,CAAC,GAAG1H,CAAC,GAAGqjB,KAAK;MACjBs\u002FN,EAAE,GAAG,CAAC,GAAGj7O,CAAC;IACZg7O,GAAG,CAACpiP,IAAI,CACN,IAAIukB,YAAY,CAAC,CAAC89N,EAAE,IAAI,CAAC,EAAE,CAAC,GAAGj7O,CAAC,GAAGi7O,EAAE,IAAI,CAAC,EAAE,CAAC,GAAGj7O,CAAC,IAAI,CAAC,GAAGi7O,EAAE,EAAEj7O,CAAC,IAAI,CAAC,CAAC,CACtE,CAAC;EACH;EACA,OAAOg7O,GAAG;AACZ;AACA,SAASE,IAAIA,CAACv\u002FN,KAAK,EAAE;EACnB,OAAQm\u002FN,MAAM,CAACn\u002FN,KAAK,CAAC,KAAKo\u002FN,MAAM,CAACp\u002FN,KAAK,CAAC;AACzC;AAEA,SAASw\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\u002FE,MAAM,CAAC\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\u002FE,MAAM,CAAC\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\u002FE,MAAM,CAACp\u002FE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAChBo\u002FE,MAAM,CAACp\u002FE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EACjBo\u002FE,MAAM,CAACp\u002FE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAClB,CAAC;IACD,MAAM0gF,UAAU,GAAGrkP,IAAI,CAACC,GAAG,CACzB8iP,MAAM,CAACp\u002FE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAChBo\u002FE,MAAM,CAACp\u002FE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAChBo\u002FE,MAAM,CAACp\u002FE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EACjBo\u002FE,MAAM,CAACp\u002FE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAClB,CAAC;IACD,MAAM2gF,UAAU,GAAGtkP,IAAI,CAACwF,GAAG,CACzBu9O,MAAM,CAACp\u002FE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAChBo\u002FE,MAAM,CAACp\u002FE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAChBo\u002FE,MAAM,CAACp\u002FE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EACjBo\u002FE,MAAM,CAACp\u002FE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAClB,CAAC;IACD,MAAM4gF,UAAU,GAAGvkP,IAAI,CAACwF,GAAG,CACzBu9O,MAAM,CAACp\u002FE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAChBo\u002FE,MAAM,CAACp\u002FE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAChBo\u002FE,MAAM,CAACp\u002FE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EACjBo\u002FE,MAAM,CAACp\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\u002FlP,MAAM;QAC\u002FB+lP,MAAM,CAAC3iP,IAAI,CAAC,CAACuG,CAAC,EAAEC,CAAC,CAAC,CAAC;QACnBg+O,YAAY,CAAC5+N,CAAC,CAAC,GAAG82C,MAAM,CAAC9\u002FD,MAAM;QAC\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\u002FkP,UAAU,CAACs8D,MAAM,CAAC9\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AE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC3E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EACtE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAC5E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC7E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EA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,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CA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E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC1E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAC7E,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAC3E,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC3E,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EACrE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC3E,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACxE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC3E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAC3E,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAC1E,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EACrE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EACvE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EACxE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EACrE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CACpE;AACD,MAAMC,qBAAqB,GAAG;EAAErV,UAAU,EAAE,MAAM;EAAE0K,OAAO,EAAE;AAAO,CAAC;;;ACxRrE,MAAM4K,oBAAoB,GAAG,CAC3B,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EACxE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EACrE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAC1E,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EACxE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC7E,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EACxE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EACvE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EACxE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAC1E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAC5E,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EACxE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EACzE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAClD;AACD,MAAMC,oBAAoB,GAAG;EAAEvV,UAAU,EAAE,GAAG;EAAE0K,OAAO,EAAE;AAAI,CAAC;AAI9D,MAAM8K,0BAA0B,GAAG,CACjC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EACxE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EACrE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAC1E,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EACxE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAC3E,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EACzE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAC5E,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EACxE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAC5E,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,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,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAC5E,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EACxE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EACzE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACxE,OAAO,EAAE,OAAO,EAAE,OA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,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EACvE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,O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,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAC3E,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OA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AAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC5E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAC5E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC5E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CACxB;AAGD,MAAMC,yBAAyB,GAAG,CAChC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC3E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3E,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAC3D;AAGD,MAAMC,8BAA8B,GAAG,CACrC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC5E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAC5E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CACxB;AAGD,MAAMC,+BAA+B,GAAG,CACtC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC3E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3E,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAC3D;AAGD,MAAMC,0BAA0B,GAAG,CACjC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC5E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAC5E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CACxB;AAGD,MAAMC,2BAA2B,GAAG,CAClC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC3E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3E,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAC3D;AAGD,MAAMC,2BAA2B,GAAG,CAClC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC5E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAC5E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC5E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC3E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CACxB;AAGD,MAAMC,4BAA4B,GAAG,CACnC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAC1E,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAC1E,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACzE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC3E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC5E,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAC3E,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAC3D;;;AChZD,MAAMC,oBAAoB,GAAG,CAC3B,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAC5E,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EACzE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAC5E,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAC5E,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EACxE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAC3E,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAC5E,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EACzE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EACxE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAC7E,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAC5E,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACvE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC7E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAC1E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EACtE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CA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OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAC7E,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EACzE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAC1E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAC1E,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAC1E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACxE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAA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,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAC5E,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAC7E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC7E,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CA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AK,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAC3E,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAC7E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EACvE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAC5E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAA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AE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAC3E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC3E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAC5E,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EA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OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EACvE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC1E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,E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O,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EACrE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EACxE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EACxE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAC5E,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,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M,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAC7E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EACzE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EACrE,OAAO,EAAE,OAAO,EAA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AAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EACtE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC3E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAC5E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAC3E,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,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\u002FC\u002FI,IAAI,EAAE,qBAAqB;IAC3BygO,OAAO,EAAEooB,oBAAoB;IAC7BiB,UAAU,EAAEzB,wBAAwB;IACpC0B,WAAW,EAAEzB,yBAAyB;IACtCjV,OAAO,EAAEyV,oBAAoBA;EAC\u002FB,CAAC;EACD\u002F\u002FO,CAAC,CAAC,cAAc,CAAC,GACfA,CAAC,CAAC,kBAAkB,CAAC,GACrBA,CAAC,CAAC,uBAAuB,CAAC,GACxB;IACE\u002FI,IAAI,EAAE,uBAAuB;IAC7BygO,OAAO,EAAEwoB,sBAAsB;IAC\u002FBa,UAAU,EAAErB,0BAA0B;IACtCsB,WAAW,EAAErB,2BAA2B;IACxCrV,OAAO,EAAE6V,sBAAsBA;EACjC,CAAC;EACLngP,CAAC,CAAC,kBAAkB,CAAC,GACnBA,CAAC,CAAC,sBAAsB,CAAC,GACzBA,CAAC,CAAC,2BAA2B,CAAC,GAC5B;IACE\u002FI,IAAI,EAAE,2BAA2B;IACjCygO,OAAO,EAAEsoB,0BAA0B;IACnCe,UAAU,EAAEvB,8BAA8B;IAC1CwB,WAAW,EAAEvB,+BAA+B;IAC5CnV,OAAO,EAAE2V,0BAA0BA;EACrC,CAAC;EACLjgP,CAAC,CAACmpN,OAAO,GACPnpN,CAAC,CAACkpN,KAAK,GACPlpN,CAAC,CAAC,eAAe,CAAC,GAChB;IACE\u002FI,IAAI,EAAE,wBAAwB;IAC9B8pP,UAAU,EAAEnB,2BAA2B;IACvCoB,WAAW,EAAEnB,4BAA4BA;EAC3C,CAAC;EACL7\u002FO,CAAC,CAAC,cAAc,CAAC,GAAGA,CAAC,CAAC,YAAY,CAAC,GAAG;IACpC\u002FI,IAAI,EAAE,qBAAqB;IAC3B8pP,UAAU,EAAEzB,wBAAwB;IACpC0B,WAAW,EAAEzB,yBAAyBA;EACxC,CAAC;EACDv\u002FO,CAAC,CAAC,gBAAgB,CAAC,GAAGA,CAAC,CAAC,cAAc,CAAC,GAAG;IACxC\u002FI,IAAI,EAAE,uBAAuB;IAC7B8pP,UAAU,EAAErB,0BAA0B;IACtCsB,WAAW,EAAErB,2BAA2BA;EAC1C,CAAC;EACD3\u002FO,CAAC,CAAC,oBAAoB,CAAC,GAAGA,CAAC,CAAC,kBAAkB,CAAC,GAAG;IAChD\u002FI,IAAI,EAAE,2BAA2B;IACjC8pP,UAAU,EAAEvB,8BAA8B;IAC1CwB,WAAW,EAAEvB,+BAA+BA;EAC9C,CAAC;EACDz\u002FO,CAAC,CAAC,iBAAiB,CAAC,GAAG;IACrB\u002FI,IAAI,EAAE,wBAAwB;IAC9BygO,OAAO,EAAEknB,qBAAqB;IAC9BmC,UAAU,EAAEnB,2BAA2B;IACvCoB,WAAW,EAAEnB,4BAA4B;IACzCvV,OAAO,EAAEuU,qBAAqBA;EAChC,CAAC;EACD7+O,CAAC,CAAC,cAAc,CAAC,GAAG;IAClB\u002FI,IAAI,EAAE,qBAAqB;IAC3BygO,OAAO,EAAE4mB,kBAAkB;IAC3ByC,UAAU,EAAEzB,wBAAwB;IACpC0B,WAAW,EAAEzB,yBAAyB;IACtCjV,OAAO,EAAEiU,kBAAkBA;EAC7B,CAAC;EACDv+O,CAAC,CAAC,gBAAgB,CAAC,GAAG;IACpB\u002FI,IAAI,EAAE,uBAAuB;IAC7BygO,OAAO,EAAEgnB,oBAAoB;IAC7BqC,UAAU,EAAErB,0BAA0B;IACtCsB,WAAW,EAAErB,2BAA2B;IACxCrV,OAAO,EAAEqU,oBAAoBA;EAC\u002FB,CAAC;EACD3+O,CAAC,CAAC,oBAAoB,CAAC,GAAG;IACxB\u002FI,IAAI,EAAE,2BAA2B;IACjCygO,OAAO,EAAE8mB,wBAAwB;IACjCuC,UAAU,EAAEvB,8BAA8B;IAC1CwB,WAAW,EAAEvB,+BAA+B;IAC5CnV,OAAO,EAAEmU,wBAAwBA;EACnC,CAAC;EACDz+O,CAAC,CAAC,iBAAiB,CAAC,GAAG;IACrB\u002FI,IAAI,EAAE,wBAAwB;IAC9BygO,OAAO,EAAEkpB,qBAAqB;IAC9BG,UAAU,EAAEnB,2BAA2B;IACvCoB,WAAW,EAAEnB,4BAA4B;IACzCvV,OAAO,EAAEuW,qBAAqBA;EAChC,CAAC;EACD7gP,CAAC,CAAC,cAAc,CAAC,GAAG;IAClB\u002FI,IAAI,EAAE,qBAAqB;IAC3BygO,OAAO,EAAE4oB,kBAAkB;IAC3BS,UAAU,EAAEzB,wBAAwB;IACpC0B,WAAW,EAAEzB,yBAAyB;IACtCjV,OAAO,EAAEiW,kBAAkBA;EAC7B,CAAC;EACDvgP,CAAC,CAAC,gBAAgB,CAAC,GAAG;IACpB\u002FI,IAAI,EAAE,uBAAuB;IAC7BygO,OAAO,EAAEgpB,oBAAoB;IAC7BK,UAAU,EAAErB,0BAA0B;IACtCsB,WAAW,EAAErB,2BAA2B;IACxCrV,OAAO,EAAEqW,oBAAoBA;EAC\u002FB,CAAC;EACD3gP,CAAC,CAAC,oBAAoB,CAAC,GAAG;IACxB\u002FI,IAAI,EAAE,2BAA2B;IACjCygO,OAAO,EAAE8oB,wBAAwB;IACjCO,UAAU,EAAEvB,8BAA8B;IAC1CwB,WAAW,EAAEvB,+BAA+B;IAC5CnV,OAAO,EAAEmW,wBAAwBA;EACnC,CAAC;EACDzgP,CAAC,CAAC,mBAAmB,CAAC,GAAGA,CAAC,CAAC6oN,SAAS,GAAG;IACrC5xN,IAAI,EAAE,wBAAwB;IAC9BygO,OAAO,EAAE0nB,uBAAuB;IAChC2B,UAAU,EAAEnB,2BAA2B;IACvCoB,WAAW,EAAEnB,4BAA4B;IACzCvV,OAAO,EAAE+U,uBAAuBA;EAClC,CAAC;EACDr\u002FO,CAAC,CAAC,gBAAgB,CAAC,GAAG;IACpB\u002FI,IAAI,EAAE,qBAAqB;IAC3BygO,OAAO,EAAEonB,oBAAoB;IAC7BiC,UAAU,EAAEzB,wBAAwB;IACpC0B,WAAW,EAAEzB,yBAAyB;IACtCjV,OAAO,EAAEyU,oBAAoBA;EAC\u002FB,CAAC;EACD\u002F+O,CAAC,CAAC,kBAAkB,CAAC,GAAG;IACtB\u002FI,IAAI,EAAE,uBAAuB;IAC7BygO,OAAO,EAAEwnB,sBAAsB;IAC\u002FB6B,UAAU,EAAErB,0BAA0B;IACtCsB,WAAW,EAAErB,2BAA2B;IACxCrV,OAAO,EAAE6U,sBAAsBA;EACjC,CAAC;EACDn\u002FO,CAAC,CAAC,sBAAsB,CAAC,GAAG;IAC1B\u002FI,IAAI,EAAE,2BAA2B;IACjCygO,OAAO,EAAEsnB,0BAA0B;IACnC+B,UAAU,EAAEvB,8BAA8B;IAC1CwB,WAAW,EAAEvB,+BAA+B;IAC5CnV,OAAO,EAAE2U,0BAA0BA;EACrC,CAAC;AACH,CAAC,CAAC;AAEF,SAASgC,cAAcA,CAAChqP,IAAI,EAAE;EAC5B,MAAM84N,QAAQ,GAAGvU,iBAAiB,CAACvkN,IAAI,CAAC;EACxC,MAAMiqP,OAAO,GAAGJ,aAAa,CAAC,CAAC;EAC\u002FB,OAAOI,OAAO,CAACnxB,QAAQ,CAAC;AAC1B;AAEA,SAASoxB,gBAAgBA,CAAClqP,IAAI,EAAE;EAC9B,MAAM5C,IAAI,GAAG4sP,cAAc,CAAChqP,IAAI,CAAC;EACjC,IAAI,CAAC5C,IAAI,EAAE;IACT,OAAO,IAAI;EACb;EAEA,MAAM;IAAE0sP,UAAU;IAAEC,WAAW;IAAEtpB;EAAQ,CAAC,GAAGrjO,IAAI;EACjD,MAAM+sP,kBAAkB,GAAG,CAAC1pB,OAAO,GAC\u002FBqpB,UAAU,GACVA,UAAU,CAACpxO,GAAG,CAAC,CAAC4hC,CAAC,EAAEj5C,CAAC,KAAKi5C,CAAC,GAAGmmL,OAAO,CAACp\u002FN,CAAC,CAAC,CAAC;EAE5C,IAAI65D,WAAW,GAAG,CAAC,CAAC;EACpB,IAAIkvL,YAAY;EAahB,MAAMC,SAAS,GAAG,EAAE;EACpB,KAAK,MAAM,CAACvoC,OAAO,EAAEsM,UAAU,CAAC,IAAI27B,WAAW,CAC5CrxO,GAAG,CACF,CAAC4xO,WAAW,EAAElrN,KAAK,KAAK,CACtBkrN,WAAW,EACXlrN,KAAK,CAET,CAAC,CACAtL,IAAI,CACH,CAAC,CAACy2N,QAAQ,CAAC,EAAE,CAACC,QAAQ,CAAC,KACrBD,QAAQ,GAAGC,QACf,CAAC,EAAE;IACH,IAAI1oC,OAAO,KAAK,CAAC,CAAC,EAAE;MAClB;IACF;IAEA,IAAIA,OAAO,KAAK5mJ,WAAW,GAAG,CAAC,EAAE;MAC\u002FBkvL,YAAY,CAACzoP,IAAI,CAACwoP,kBAAkB,CAAC\u002F7B,UAAU,CAAC,CAAC;MACjDlzJ,WAAW,IAAI,CAAC;IAClB,CAAC,MAAM;MACLA,WAAW,GAAG4mJ,OAAO;MACrBsoC,YAAY,GAAG,CAACD,kBAAkB,CAAC\u002F7B,UAAU,CAAC,CAAC;MAC\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\u002FB,IAAI,CAACs6O,WAAW,CAAC\u002F5O,GAAG,CAACP,GAAG,EAAE+D,IAAI,CAAC;MAC\u002FB;IACF;IAEA,IAAI,IAAI,CAACs2O,SAAS,CAACt7O,GAAG,CAAC9Q,IAAI,CAAC,EAAE;MAC5B;IACF;IACA,IAAI,CAACosP,SAAS,CAACv7O,GAAG,CAAC7Q,IAAI,EAAE8V,IAAI,CAAC;EAChC;AACF;AAEA,MAAMy2O,oBAAoB,SAASP,cAAc,CAAC;EAChDn7O,GAAGA,CAAC7Q,IAAI,GAAG,IAAI,EAAE+R,GAAG,GAAG,IAAI,EAAE+D,IAAI,EAAE;IACjC,IAAI,OAAO9V,IAAI,KAAK,QAAQ,IAAI,CAAC+R,GAAG,EAAE;MACpC,MAAM,IAAIrU,KAAK,CACb,mEACF,CAAC;IACH;IACA,IAAIqU,GAAG,EAAE;MACP,IAAI,IAAI,CAACs6O,WAAW,CAACv7O,GAAG,CAACiB,GAAG,CAAC,EAAE;QAC7B;MACF;MACA,IAAI\u002FR,IAAI,KAAK,IAAI,EAAE;QAEjB,IAAI,CAACmsP,WAAW,CAACt7O,GAAG,CAAC7Q,IAAI,EAAE+R,GAAG,CAAC;MACjC;MACA,IAAI,CAACs6O,WAAW,CAAC\u002F5O,GAAG,CAACP,GAAG,EAAE+D,IAAI,CAAC;MAC\u002FB;IACF;IAEA,IAAI,IAAI,CAACs2O,SAAS,CAACt7O,GAAG,CAAC9Q,IAAI,CAAC,EAAE;MAC5B;IACF;IACA,IAAI,CAACosP,SAAS,CAACv7O,GAAG,CAAC7Q,IAAI,EAAE8V,IAAI,CAAC;EAChC;AACF;AAEA,MAAM02O,kBAAkB,SAASR,cAAc,CAAC;EAC9C9rP,WAAWA,CAAChC,OAAO,EAAE;IACnB,KAAK,CAAC;MAAEguP,QAAQ,EAAE;IAAK,CAAC,CAAC;EAC3B;EAEAr7O,GAAGA,CAAC7Q,IAAI,GAAG,IAAI,EAAE+R,GAAG,EAAE+D,IAAI,EAAE;IAC1B,IAAI,CAAC\u002FD,GAAG,EAAE;MACR,MAAM,IAAIrU,KAAK,CAAC,mDAAmD,CAAC;IACtE;IACA,IAAI,IAAI,CAAC2uP,WAAW,CAACv7O,GAAG,CAACiB,GAAG,CAAC,EAAE;MAC7B;IACF;IACA,IAAI,CAACs6O,WAAW,CAAC\u002F5O,GAAG,CAACP,GAAG,EAAE+D,IAAI,CAAC;EACjC;AACF;AAEA,MAAM22O,gBAAgB,SAAST,cAAc,CAAC;EAC5Cn7O,GAAGA,CAAC7Q,IAAI,EAAE+R,GAAG,GAAG,IAAI,EAAE+D,IAAI,EAAE;IAC1B,IAAI,OAAO9V,IAAI,KAAK,QAAQ,EAAE;MAC5B,MAAM,IAAItC,KAAK,CAAC,kDAAkD,CAAC;IACrE;IACA,IAAIqU,GAAG,EAAE;MACP,IAAI,IAAI,CAACs6O,WAAW,CAACv7O,GAAG,CAACiB,GAAG,CAAC,EAAE;QAC7B;MACF;MACA,IAAI,CAACo6O,WAAW,CAACt7O,GAAG,CAAC7Q,IAAI,EAAE+R,GAAG,CAAC;MAC\u002FB,IAAI,CAACs6O,WAAW,CAAC\u002F5O,GAAG,CAACP,GAAG,EAAE+D,IAAI,CAAC;MAC\u002FB;IACF;IAEA,IAAI,IAAI,CAACs2O,SAAS,CAACt7O,GAAG,CAAC9Q,IAAI,CAAC,EAAE;MAC5B;IACF;IACA,IAAI,CAACosP,SAAS,CAACv7O,GAAG,CAAC7Q,IAAI,EAAE8V,IAAI,CAAC;EAChC;AACF;AAEA,MAAM42O,uBAAuB,SAASV,cAAc,CAAC;EACnD9rP,WAAWA,CAAChC,OAAO,EAAE;IACnB,KAAK,CAAC;MAAEguP,QAAQ,EAAE;IAAK,CAAC,CAAC;EAC3B;EAEAr7O,GAAGA,CAAC7Q,IAAI,GAAG,IAAI,EAAE+R,GAAG,EAAE+D,IAAI,EAAE;IAC1B,IAAI,CAAC\u002FD,GAAG,EAAE;MACR,MAAM,IAAIrU,KAAK,CAAC,wDAAwD,CAAC;IAC3E;IACA,IAAI,IAAI,CAAC2uP,WAAW,CAACv7O,GAAG,CAACiB,GAAG,CAAC,EAAE;MAC7B;IACF;IACA,IAAI,CAACs6O,WAAW,CAAC\u002F5O,GAAG,CAACP,GAAG,EAAE+D,IAAI,CAAC;EACjC;AACF;AAEA,MAAM62O,kBAAkB,SAASX,cAAc,CAAC;EAC9C9rP,WAAWA,CAAChC,OAAO,EAAE;IACnB,KAAK,CAAC;MAAEguP,QAAQ,EAAE;IAAK,CAAC,CAAC;EAC3B;EAEAr7O,GAAGA,CAAC7Q,IAAI,GAAG,IAAI,EAAE+R,GAAG,EAAE+D,IAAI,EAAE;IAC1B,IAAI,CAAC\u002FD,GAAG,EAAE;MACR,MAAM,IAAIrU,KAAK,CAAC,mDAAmD,CAAC;IACtE;IACA,IAAI,IAAI,CAAC2uP,WAAW,CAACv7O,GAAG,CAACiB,GAAG,CAAC,EAAE;MAC7B;IACF;IACA,IAAI,CAACs6O,WAAW,CAAC\u002F5O,GAAG,CAACP,GAAG,EAAE+D,IAAI,CAAC;EACjC;AACF;AAEA,MAAM82O,qBAAqB,SAASZ,cAAc,CAAC;EACjD9rP,WAAWA,CAAChC,OAAO,EAAE;IACnB,KAAK,CAAC;MAAEguP,QAAQ,EAAE;IAAK,CAAC,CAAC;EAC3B;EAEAr7O,GAAGA,CAAC7Q,IAAI,GAAG,IAAI,EAAE+R,GAAG,EAAE+D,IAAI,EAAE;IAC1B,IAAI,CAAC\u002FD,GAAG,EAAE;MACR,MAAM,IAAIrU,KAAK,CAAC,sDAAsD,CAAC;IACzE;IACA,IAAI,IAAI,CAAC2uP,WAAW,CAACv7O,GAAG,CAACiB,GAAG,CAAC,EAAE;MAC7B;IACF;IACA,IAAI,CAACs6O,WAAW,CAAC\u002F5O,GAAG,CAACP,GAAG,EAAE+D,IAAI,CAAC;EACjC;EAEApE,KAAKA,CAAA,EAAG;IACN,IAAI,CAAC26O,WAAW,CAAC36O,KAAK,CAAC,CAAC;EAC1B;AACF;AAEA,MAAMm7O,gBAAgB,CAAC;EACrB,OAAOC,mBAAmB,GAAG,CAAC;EAE9B,OAAOC,mBAAmB,GAAG,EAAE;EAE\u002FB,OAAOC,aAAa,GAAG,GAAG;EAE1B,CAACC,eAAe,GAAG,IAAI\u002F6O,MAAM,CAAC,CAAC;EAE\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\u002FC,KAAK,CAACgwP,OAAO,EAAEp\u002FO,IAAI,CAAC+tB,UAAU,CAAC8f,EAAE,CAAC,CAAC,CAAC;IACxD;IACA,OAAO,UAAU3+B,GAAG,EAAE2F,SAAS,EAAE5X,IAAI,EAAE+X,UAAU,EAAE;MACjD,KAAK,IAAInjB,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAGkvC,OAAO,CAAC\u002F6C,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,EAAE,EAAE;QAChDi4C,OAAO,CAACj4C,CAAC,CAAC,CAACqd,GAAG,EAAE2F,SAAS,EAAE5X,IAAI,EAAE+X,UAAU,GAAGnjB,CAAC,CAAC;MAClD;IACF,CAAC;EACH;EAEA,OAAOytP,gBAAgBA,CAACF,OAAO,EAAEvxM,EAAE,EAAE9rC,IAAI,EAAE;IACzC,SAAS29O,YAAYA,CAAC9hP,GAAG,EAAE;MACzB,MAAMyX,WAAW,GAAGzX,GAAG,CAAC7O,MAAM;MAC9B,MAAMorC,GAAG,GAAG,EAAE;MACd,IAAIvK,KAAK,GAAG,CAAC;MACb,KAAK,IAAI\u002F9B,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGwjB,WAAW,EAAExjB,CAAC,IAAI,CAAC,EAAE;QACvCsoC,GAAG,CAACvK,KAAK,EAAE,CAAC,GAAG,CAAChyB,GAAG,CAAC\u002FL,CAAC,CAAC,EAAE+L,GAAG,CAAC\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\u002F\u002FB,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAGk8O,EAAE,CAAC\u002FnP,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE,EAAE\u002FI,CAAC,EAAE;MAC3C+\u002FB,IAAI,CAACz\u002FB,IAAI,CAAC2kO,EAAE,CAACjlO,CAAC,CAAC,GAAGilP,EAAE,CAACjlP,CAAC,CAAC,CAAC;IAC1B;IACA,MAAM9C,MAAM,GAAG6iC,IAAI,CAAC7iC,MAAM;IAE1B,OAAO,SAAS+xP,uBAAuBA,CAAC5xO,GAAG,EAAE2F,SAAS,EAAE5X,IAAI,EAAE+X,UAAU,EAAE;MACxE,MAAMtc,CAAC,GAAGlE,CAAC,KAAK,CAAC,GAAG0a,GAAG,CAAC2F,SAAS,CAAC,GAAG3F,GAAG,CAAC2F,SAAS,CAAC,IAAIrgB,CAAC;MAExD,KAAK,IAAI2Z,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGpf,MAAM,EAAE,EAAEof,CAAC,EAAE;QAC\u002FBlR,IAAI,CAAC+X,UAAU,GAAG7G,CAAC,CAAC,GAAG2oO,EAAE,CAAC3oO,CAAC,CAAC,GAAGzV,CAAC,GAAGk5B,IAAI,CAACzjB,CAAC,CAAC;MAC5C;IACF,CAAC;EACH;EAEA,OAAOqxO,gBAAgBA,CAACJ,OAAO,EAAEr9O,IAAI,EAAE;IACrC,MAAMg+O,MAAM,GAAGlB,aAAa,CAAC98O,IAAI,CAAChB,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAErD,IAAI,CAACg\u002FO,MAAM,EAAE;MACX,MAAM,IAAI5uP,WAAW,CAAC,WAAW,CAAC;IACpC;IAEA,MAAM6uP,SAAS,GAAGD,MAAM,CAAChxP,MAAM,GAAG,CAAC;IACnC,IAAIixP,SAAS,KAAK,CAAC,EAAE;MACnB,MAAM,IAAI7uP,WAAW,CAAC,iCAAiC,CAAC;IAC1D;IACA,MAAM;MAAE6O;IAAK,CAAC,GAAGo\u002FO,OAAO;IAExB,MAAM2B,GAAG,GAAG,EAAE;IACd,KAAK,MAAMlzM,EAAE,IAAI9rC,IAAI,CAACxF,GAAG,CAAC,WAAW,CAAC,EAAE;MACtCwkP,GAAG,CAAC5uP,IAAI,CAAC,IAAI,CAAC\u002FC,KAAK,CAACgwP,OAAO,EAAEp\u002FO,IAAI,CAAC+tB,UAAU,CAAC8f,EAAE,CAAC,CAAC,CAAC;IACpD;IAEA,MAAM2oM,MAAM,GAAGqI,aAAa,CAAC98O,IAAI,CAAChB,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrD,MAAMk\u002FO,MAAM,GAAGpB,aAAa,CAAC98O,IAAI,CAAChB,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrD,MAAM0V,MAAM,GAAG,IAAIC,YAAY,CAAC,CAAC,CAAC;IAElC,OAAO,SAASsqO,kBAAkBA,CAAC9xO,GAAG,EAAE2F,SAAS,EAAE5X,IAAI,EAAE+X,UAAU,EAAE;MAEnE,MAAMtX,CAAC,GAAGD,SAAS,CAACyR,GAAG,CAAC2F,SAAS,CAAC,EAAEkrO,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,CAAC;MAEzD,MAAMhxP,MAAM,GAAGynP,MAAM,CAACznP,MAAM;MAC5B,IAAI8C,CAAC;MACL,KAAKA,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG9C,MAAM,EAAE,EAAE8C,CAAC,EAAE;QAC3B,IAAI6L,CAAC,GAAG84O,MAAM,CAAC3kP,CAAC,CAAC,EAAE;UACjB;QACF;MACF;MAGA,IAAIovP,IAAI,GAAGlB,MAAM,CAAC,CAAC,CAAC;MACpB,IAAIluP,CAAC,GAAG,CAAC,EAAE;QACTovP,IAAI,GAAGzK,MAAM,CAAC3kP,CAAC,GAAG,CAAC,CAAC;MACtB;MACA,IAAIqvP,IAAI,GAAGnB,MAAM,CAAC,CAAC,CAAC;MACpB,IAAIluP,CAAC,GAAG2kP,MAAM,CAACznP,MAAM,EAAE;QACrBmyP,IAAI,GAAG1K,MAAM,CAAC3kP,CAAC,CAAC;MAClB;MAEA,MAAMsvP,IAAI,GAAGlB,MAAM,CAAC,CAAC,GAAGpuP,CAAC,CAAC;MAC1B,MAAMuvP,IAAI,GAAGnB,MAAM,CAAC,CAAC,GAAGpuP,CAAC,GAAG,CAAC,CAAC;MAI9B4kB,MAAM,CAAC,CAAC,CAAC,GACPwqO,IAAI,KAAKC,IAAI,GACTC,IAAI,GACJA,IAAI,GAAI,CAACzjP,CAAC,GAAGujP,IAAI,KAAKG,IAAI,GAAGD,IAAI,CAAC,IAAKD,IAAI,GAAGD,IAAI,CAAC;MAGzDF,GAAG,CAAClvP,CAAC,CAAC,CAAC4kB,MAAM,EAAE,CAAC,EAAExZ,IAAI,EAAE+X,UAAU,CAAC;IACrC,CAAC;EACH;EAEA,OAAOyqO,mBAAmBA,CAACL,OAAO,EAAEvxM,EAAE,EAAE9rC,IAAI,EAAE;IAC5C,MAAMg+O,MAAM,GAAGlB,aAAa,CAAC98O,IAAI,CAAChB,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrD,MAAMwc,KAAK,GAAGshO,aAAa,CAAC98O,IAAI,CAAChB,QAAQ,CAAC,OAAO,CAAC,CAAC;IAEnD,IAAI,CAACg\u002FO,MAAM,EAAE;MACX,MAAM,IAAI5uP,WAAW,CAAC,YAAY,CAAC;IACrC;IAEA,IAAI,CAACosB,KAAK,EAAE;MACV,MAAM,IAAIpsB,WAAW,CAAC,WAAW,CAAC;IACpC;IAEA,MAAMk\u002FD,KAAK,GAAG,IAAIksL,eAAe,CAAC1uM,EAAE,CAAC;IACrC,MAAM4oB,MAAM,GAAG,IAAI2kL,gBAAgB,CAAC\u002FqL,KAAK,CAAC;IAC1C,MAAMz\u002FD,IAAI,GAAG6lE,MAAM,CAACrnE,KAAK,CAAC,CAAC;IAE3B,IAAIgwP,OAAO,CAACnsP,eAAe,IAAIE,WAAW,CAACF,eAAe,EAAE;MAC1D,MAAM0sN,QAAQ,GAAG,IAAI0hC,kBAAkB,CAAC,CAAC,CAAC9hC,OAAO,CAAC3uN,IAAI,EAAEmvP,MAAM,EAAExiO,KAAK,CAAC;MACtE,IAAIoiM,QAAQ,EAAE;QAKZ,OAAO,IAAIzsN,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAEysN,QAAQ,CAAC;MACzE;IACF;IACA\u002FxN,IAAI,CAAC,+BAA+B,CAAC;IAErC,MAAM0zP,UAAU,GAAG\u002FjO,KAAK,CAACxuB,MAAM,IAAI,CAAC;IACpC,MAAMwyP,SAAS,GAAGxB,MAAM,CAAChxP,MAAM,IAAI,CAAC;IACpC,MAAMyyP,SAAS,GAAG,IAAIC,mBAAmB,CAAC7wP,IAAI,CAAC;IAG\u002FC,MAAMipD,KAAK,GAAG7pD,MAAM,CAACuP,MAAM,CAAC,IAAI,CAAC;IAGjC,MAAMmiP,cAAc,GAAG,IAAI,GAAG,CAAC;IAC\u002FB,IAAIC,eAAe,GAAGD,cAAc;IACpC,MAAMjrO,MAAM,GAAG,IAAIC,YAAY,CAAC6qO,SAAS,CAAC;IAE1C,OAAO,SAASK,qBAAqBA,CAAC1yO,GAAG,EAAE2F,SAAS,EAAE5X,IAAI,EAAE+X,UAAU,EAAE;MACtE,IAAInjB,CAAC,EAAE\u002FB,KAAK;MACZ,IAAImR,GAAG,GAAG,EAAE;MACZ,MAAM2wC,KAAK,GAAGn7B,MAAM;MACpB,KAAK5kB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG0vP,SAAS,EAAE1vP,CAAC,EAAE,EAAE;QAC9B\u002FB,KAAK,GAAGof,GAAG,CAAC2F,SAAS,GAAGhjB,CAAC,CAAC;QAC1B+\u002FC,KAAK,CAAC\u002F\u002FC,CAAC,CAAC,GAAG\u002FB,KAAK;QAChBmR,GAAG,IAAInR,KAAK,GAAG,GAAG;MACpB;MAEA,MAAM+xP,WAAW,GAAGhoM,KAAK,CAAC54C,GAAG,CAAC;MAC9B,IAAI4gP,WAAW,KAAKtwP,SAAS,EAAE;QAC7B0L,IAAI,CAACoE,GAAG,CAACwgP,WAAW,EAAE7sO,UAAU,CAAC;QACjC;MACF;MAEA,MAAM1e,MAAM,GAAG,IAAIogB,YAAY,CAAC4qO,UAAU,CAAC;MAC3C,MAAM9wM,KAAK,GAAGgxM,SAAS,CAACM,OAAO,CAAClwM,KAAK,CAAC;MACtC,MAAMmwM,UAAU,GAAGvxM,KAAK,CAACzhD,MAAM,GAAGuyP,UAAU;MAC5C,KAAKzvP,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGyvP,UAAU,EAAEzvP,CAAC,EAAE,EAAE;QAC\u002FB\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\u002FoB,CAAC,GAAGvW,CAAC,GAAG,CAAC,EAAE\u002FF,CAAC,GAAGsc,CAAC,EAAEtc,CAAC,EAAE,EAAEsc,CAAC,EAAE,EAAE;MAC1C,MAAM5U,CAAC,GAAGi3C,KAAK,CAAC3+C,CAAC,CAAC;MAClB2+C,KAAK,CAAC3+C,CAAC,CAAC,GAAG2+C,KAAK,CAACriC,CAAC,CAAC;MACnBqiC,KAAK,CAACriC,CAAC,CAAC,GAAG5U,CAAC;IACd;IACA,KAAK,IAAI1H,CAAC,GAAG+F,CAAC,EAAEuW,CAAC,GAAGtZ,CAAC,EAAEhD,CAAC,GAAGsc,CAAC,EAAEtc,CAAC,EAAE,EAAEsc,CAAC,EAAE,EAAE;MACtC,MAAM5U,CAAC,GAAGi3C,KAAK,CAAC3+C,CAAC,CAAC;MAClB2+C,KAAK,CAAC3+C,CAAC,CAAC,GAAG2+C,KAAK,CAACriC,CAAC,CAAC;MACnBqiC,KAAK,CAACriC,CAAC,CAAC,GAAG5U,CAAC;IACd;EACF;AACF;AAEA,MAAMkoP,mBAAmB,CAAC;EACxB\u002FwP,WAAWA,CAACglP,SAAS,EAAE;IACrB,IAAI,CAACA,SAAS,GAAGA,SAAS;EAC5B;EAEAoM,OAAOA,CAACO,YAAY,EAAE;IACpB,MAAM7xM,KAAK,GAAG,IAAI2xM,eAAe,CAACE,YAAY,CAAC;IAC\u002FC,IAAIG,OAAO,GAAG,CAAC;IACf,MAAM9M,SAAS,GAAG,IAAI,CAACA,SAAS;IAChC,MAAM3mP,MAAM,GAAG2mP,SAAS,CAAC3mP,MAAM;IAC\u002FB,IAAI0zP,QAAQ,EAAE9qP,CAAC,EAAE5C,CAAC;IAClB,OAAOytP,OAAO,GAAGzzP,MAAM,EAAE;MACvB0zP,QAAQ,GAAG\u002FM,SAAS,CAAC8M,OAAO,EAAE,CAAC;MAC\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\u002FU,IAAI,CAACgoC,GAAG,CAAC\u002FnC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3B;IACA,OAAO8U,MAAM,CAAC9U,IAAI,CAAC,IAAI,CAAC;EAC1B;AACF;;;ACroCyC;AAKzC,MAAMyyP,SAAS,GAAG,CAChB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACnE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACrE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAClE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACpE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACpE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACrE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACpE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACnE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACrE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACrE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EACpE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACpE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACpE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACrE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EACpE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CACtE;AASD,MAAMC,WAAW,GAAG,CAClB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EACvE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACxE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EACvE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EACpE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACpE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EACvE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EACvE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EACxE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACpE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CACvE;AAED,SAASC,KAAKA,CAAClzP,CAAC,EAAE;EAChB,OAAO,CAACA,CAAC,GAAG,CAAC,MAAM,CAAC;AACtB;AAEA,SAASmzP,MAAMA,CAACnzP,CAAC,EAAE;EACjB,OAAO,CAACA,CAAC,GAAG,CAAC,MAAM,CAAC;AACtB;AAEA,SAASozP,WAAWA,CAACrnP,GAAG,EAAEwH,KAAK,EAAEtV,KAAK,EAAE;EACtC,IAAIqe,CAAC,EAAEgY,EAAE;EACT,KAAKhY,CAAC,GAAG\u002FI,KAAK,EAAE+gB,EAAE,GAAGvoB,GAAG,CAAC7O,MAAM,EAAEof,CAAC,GAAGgY,EAAE,EAAE,EAAEhY,CAAC,EAAE;IAC5C,IAAIvQ,GAAG,CAACuQ,CAAC,CAAC,KAAKre,KAAK,EAAE;MACpB,OAAOqe,CAAC;IACV;EACF;EACA,OAAOA,CAAC;AACV;AAEA,SAAS+2O,aAAaA,CAACtnP,GAAG,EAAEwH,KAAK,EAAEN,GAAG,EAAE;EACtC,KAAK,IAAIjT,CAAC,GAAGuT,KAAK,EAAE+I,CAAC,GAAGrJ,GAAG,GAAG,CAAC,EAAEjT,CAAC,GAAGsc,CAAC,EAAE,EAAEtc,CAAC,EAAE,EAAEsc,CAAC,EAAE;IAChD,MAAMjZ,IAAI,GAAG0I,GAAG,CAAC\u002FL,CAAC,CAAC;IACnB+L,GAAG,CAAC\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\u002FO,WAAW,CAAC,CAAC,CAAC,CAAC,CAC\u002FCrV,IAAI,CAAC,GAAG,CAAC;AACd;AAYA,SAAS60P,YAAYA,CACnB;EAAEN,KAAK;EAAEF,KAAK;EAAEz9O,IAAI;EAAEJ,QAAQ;EAAEw9O,KAAK;EAAEM;AAAS,CAAC,EACjDx3O,GAAG,EACHg4O,aAAa,EACbC,WAAW,GAAG,IAAI,EAClBC,OAAO,GAAG,IAAI,EACdC,MAAM,GAAG,EAAE,EACX;EACA,MAAMngP,MAAM,GAAG;IACbk\u002FO,KAAK,EAAE,IAAI;IACXM,QAAQ,EAAE;EACZ,CAAC;EACD,IAAID,KAAK,EAAE;IACT,MAAMa,KAAK,GAAGD,MAAM,GAAG,IAAIA,MAAM,EAAE,GAAG,EAAE;IACxC,KAAK,MAAM72P,IAAI,IAAIi2P,KAAK,EAAE;MACxBv3O,GAAG,CAAC\u002Fc,IAAI,CAAC,SAAS3B,IAAI,GAAG82P,KAAK,GAAG,CAAC;IACpC;EACF;EACA,IAAIX,KAAK,EAAE;IACT,MAAMY,YAAY,GAAGf,eAAe,CAACjqP,GAAG,CAACoqP,KAAK,CAAC;IAC\u002FC,MAAMa,WAAW,GAAGH,MAAM,IAAIR,gBAAgB,CAACT,KAAK,CAAC;IACrDp2P,MAAM,CAACy3P,MAAM,CACXvgP,MAAM,EACN+\u002FO,YAAY,CACVM,YAAY,EACZr4O,GAAG,EACHg4O,aAAa,EACOC,WAAW,IAAI,CAACv+O,QAAQ,EAC5Bw+O,OAAO,IAAI,CAACp+O,IAAI,EAChCw+O,WACF,CACF,CAAC;EACH;EACA,IAAIpB,KAAK,EAAE;IACTl\u002FO,MAAM,CAACk\u002FO,KAAK,GAAGA,KAAK;EACtB;EACA,IAAIM,QAAQ,EAAE;IACZx\u002FO,MAAM,CAACw\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\u002FT,UAAU,CAACq\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\u002FC,IAAI,CAACutP,SAAS,GAAG\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\u002FB,IAAI,CAACq4P,kBAAkB,CAAC\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\u002FB;IAAY,CAAC;EAC7C;EAEA,IAAI\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\u002FhB,IAAI;cACJ4e,IAAI;cACJ\u002FX,KAAK,EAAEouB,SAAS;cAChBnuB,MAAM,EAAEouB,UAAU;cAClB8Q,WAAW,EAAE,IAAI,CAACA;YACpB,CAAC,EACD,IAAI,CAAC29M,WACP,CAAC;UACH;UACA,OAAO,IAAI,CAACoC,YAAY,CAACnnO,IAAI,EAAEvP,aAAa,EAAEC,cAAc,EAAEtP,IAAI,CAAC;QACrE;QACAogB,OAAO,CAACxB,IAAI,GAAGA,IAAI;QACnBwB,OAAO,CAACpgB,IAAI,GAAGA,IAAI;QAEnB,IAAI,IAAI,CAAC2jP,WAAW,EAAE;UAEpB97P,MAAM,CACJ+2B,IAAI,KAAKtjC,SAAS,CAACC,cAAc,EACjC,wDACF,CAAC;UACD,MAAMmR,MAAM,GAAG0zB,OAAO,CAACpgB,IAAI;UAC3B,KAAK,IAAIzU,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAG5H,MAAM,CAACjE,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,EAAE,EAAE;YAC\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\u002F6K,QAAQ,GAAGsnN,0BAA0B,CAACh\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\u002FC,MAAMl\u002FP,GAAG,GAAG,sDAAsD;MAElE,IAAI,CAACm\u002FP,YAAY,EAAE;QACjB,MAAM,IAAI9+P,KAAK,CAACL,GAAG,CAAC;MACtB;MACAG,IAAI,CAACH,GAAG,CAAC;MACT;IACF;IAEA,IAAIkhD,eAAe;IACnB,IAAIhtC,IAAI,CAACT,GAAG,CAAC,IAAI,CAAC,EAAE;MAClBytC,eAAe,GAAG,MAAM,IAAI,CAACghN,uBAAuB,CAClDhuP,IAAI,CAACxF,GAAG,CAAC,IAAI,CAAC,EACd0wB,SACF,CAAC;IACH;IAEA,MAAM68N,SAAS,GAAG\u002FnP,IAAI,CAACxF,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,KAAK;IACtD,IAAImqB,OAAO,EAAEmnB,EAAE,EAAExwC,IAAI;IACrB,IAAIysP,SAAS,EAAE;MAMbpjO,OAAO,GAAG,MAAM6iO,QAAQ,CAACkB,UAAU,CAAC;QAClClhO,KAAK;QACLn2B,0BAA0B,EACxBA,0BAA0B,IAAI,CAAC,IAAI,CAACu7P;MACxC,CAAC,CAAC;MAEF,IAAIjoO,OAAO,CAACkkO,mBAAmB,EAAE;QAG\u002FB\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\u002FL,IAAI;MAC5B8\u002FP,QAAQ,EAAE7G,KAAK,CAACltP,GAAG,CAAC,IAAI;IAC1B,CAAC;IAID,MAAMq1P,WAAW,GAAGnI,KAAK,CAACltP,GAAG,CAAC,IAAI,CAAC;IACnC,IAAI0lP,aAAa,CAAC2P,WAAW,CAAC,EAAE;MAC9B,MAAMC,UAAU,GAAG,IAAI,CAACnD,mBAAmB,CAACnvP,MAAM,CAACqyP,WAAW,CAAC;MAC\u002FD,MAAME,WAAW,GAAG,IAAIv\u002FP,UAAU,CAAC,GAAG,CAAC;MACvC,MAAMy4B,GAAG,GAAG,IAAItU,YAAY,CAAC,CAAC,CAAC;MAC\u002FB,KAAK,IAAI7kB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,GAAG,EAAEA,CAAC,EAAE,EAAE;QAC5Bm5B,GAAG,CAAC,CAAC,CAAC,GAAGn5B,CAAC,GAAG,GAAG;QAChBggQ,UAAU,CAAC7mO,GAAG,EAAE,CAAC,EAAEA,GAAG,EAAE,CAAC,CAAC;QAC1B8mO,WAAW,CAACjgQ,CAAC,CAAC,GAAIm5B,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAI,CAAC;MACrC;MACA2mO,YAAY,CAACG,WAAW,GAAGA,WAAW;IACxC;IAEA,OAAO,IAAI,CAACrC,gBAAgB,CAC1BxiO,SAAS,EACTykO,YAAY,EACZC,YAAY,EACZna,YAAY,EACZmY,IAAI,EACJ8B,YAAY,CAAChoN,KAAK,CAACtnC,KAAK,CAAC;MAAE4vP,OAAO,EAAE;IAAK,CAAC,CAAC,EAC3C3kO,oBAAoB,EACpByiO,QACF,CAAC;EACH;EAEAmC,sBAAsBA,CAACC,EAAE,EAAE;IACzB,IAAIC,aAAa;IACjB,IAAI59P,KAAK,CAAC4I,OAAO,CAAC+0P,EAAE,CAAC,EAAE;MACrBC,aAAa,GAAGD,EAAE;IACpB,CAAC,MAAM,IAAIhQ,aAAa,CAACgQ,EAAE,CAAC,EAAE;MAC5BC,aAAa,GAAG,CAACD,EAAE,CAAC;IACtB,CAAC,MAAM;MACL,OAAO,IAAI;IACb;IAEA,MAAME,YAAY,GAAG,EAAE;IACvB,IAAIC,MAAM,GAAG,CAAC;MACZC,eAAe,GAAG,CAAC;IACrB,KAAK,MAAM5oP,KAAK,IAAIyoP,aAAa,EAAE;MACjC,MAAMN,WAAW,GAAG,IAAI,CAAC5xP,IAAI,CAAC+tB,UAAU,CAACtkB,KAAK,CAAC;MAC\u002FC2oP,MAAM,EAAE;MAER,IAAI\u002FuP,MAAM,CAACuuP,WAAW,EAAE,UAAU,CAAC,EAAE;QACnCO,YAAY,CAAChgQ,IAAI,CAAC,IAAI,CAAC;QACvB;MACF,CAAC,MAAM,IAAI,CAAC8vP,aAAa,CAAC2P,WAAW,CAAC,EAAE;QACtC,OAAO,IAAI;MACb;MAEA,MAAMC,UAAU,GAAG,IAAI,CAACnD,mBAAmB,CAACnvP,MAAM,CAACqyP,WAAW,CAAC;MAC\u002FD,MAAME,WAAW,GAAG,IAAIv\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\u002FpC,UAAU,EAAE+B,IAAI,CAAC\u002FB,UAAU;QAC3B+B,IAAI,EAAEwoC,cAAc;QACpBzyP,IAAI,EAAEiqN;MACR,CAAC,CAAC;MAEF,IAAIwoC,cAAc,CAACxyB,WAAW,EAAE;QAC9B,IAAI;UACF,MAAMixB,UAAU,CAACwB,aAAa,CAAC,IAAI,EAAExnO,SAAS,EAAE0iO,IAAI,CAAC;QACvD,CAAC,CAAC,OAAO1wP,MAAM,EAAE;UACf,MAAM,IAAI\u002FQ,KAAK,CAAC,0BAA0B+Q,MAAM,EAAE,CAAC;QACrD;MACF;MACA2jB,OAAO,CAACqwO,UAAU,CAAC;IACrB,CAAC,CAAC,CACDlvO,KAAK,CAAC9kB,MAAM,IAAI;MAEfjR,IAAI,CAAC,qCAAqCiR,MAAM,IAAI,CAAC;MAErD2jB,OAAO,CACL,IAAIoxO,cAAc,CAAC;QACjB\u002FpC,UAAU,EAAE+B,IAAI,CAAC\u002FB,UAAU;QAC3B+B,IAAI,EAAE,IAAIqkB,SAAS,CAACpxO,MAAM,EAAE1O,OAAO,CAAC;QACpCwR,IAAI,EAAEiqN;MACR,CAAC,CACH,CAAC;IACH,CAAC,CAAC;IACJ,OAAO1oM,OAAO;EAChB;EAEAoxO,SAASA,CAAC7mN,EAAE,EAAExwC,IAAI,EAAEosC,KAAK,EAAE;IACzB,MAAM;MAAEkrN,UAAU,EAAE1\u002FP,MAAM;MAAE2\u002FP;IAAW,CAAC,GAAGnrN,KAAK;IAChD,QAAQoE,EAAE,GAAG,CAAC;MACZ,KAAKvmD,GAAG,CAACmB,SAAS;QAAE;UAClB,MAAMiQ,CAAC,GAAI+wC,KAAK,CAACorN,aAAa,GAAGx3P,IAAI,CAAC,CAAC,CAAE;UACzC,MAAM1E,CAAC,GAAI8wC,KAAK,CAACqrN,aAAa,GAAGz3P,IAAI,CAAC,CAAC,CAAE;UACzC,MAAM8P,KAAK,GAAG9P,IAAI,CAAC,CAAC,CAAC;UACrB,MAAM+P,MAAM,GAAG\u002FP,IAAI,CAAC,CAAC,CAAC;UACtB,MAAM03P,EAAE,GAAGr8P,CAAC,GAAGyU,KAAK;UACpB,MAAM6nP,EAAE,GAAGr8P,CAAC,GAAGyU,MAAM;UACrB,IAAID,KAAK,KAAK,CAAC,IAAIC,MAAM,KAAK,CAAC,EAAE;YAC\u002FBwnP,UAAU,CAACziQ,IAAI,CACbjF,OAAO,CAAC\u002FE,MAAM,EACduQ,CAAC,EACDC,CAAC,EACDzL,OAAO,CAAC9E,MAAM,EACd2sQ,EAAE,EACFC,EAAE,EACF9nQ,OAAO,CAAC1E,SACV,CAAC;UACH,CAAC,MAAM;YACLosQ,UAAU,CAACziQ,IAAI,CACbjF,OAAO,CAAC\u002FE,MAAM,EACduQ,CAAC,EACDC,CAAC,EACDzL,OAAO,CAAC9E,MAAM,EACd2sQ,EAAE,EACFp8P,CAAC,EACDzL,OAAO,CAAC9E,MAAM,EACd2sQ,EAAE,EACFC,EAAE,EACF9nQ,OAAO,CAAC9E,MAAM,EACdsQ,CAAC,EACDs8P,EAAE,EACF9nQ,OAAO,CAAC1E,SACV,CAAC;UACH;UACAmM,IAAI,CAACiE,eAAe,CAACF,CAAC,EAAEC,CAAC,EAAEo8P,EAAE,EAAEC,EAAE,EAAE\u002F\u002FP,MAAM,CAAC;UAC1C;QACF;MACA,KAAK3N,GAAG,CAACa,MAAM;QAAE;UACf,MAAMuQ,CAAC,GAAI+wC,KAAK,CAACorN,aAAa,GAAGx3P,IAAI,CAAC,CAAC,CAAE;UACzC,MAAM1E,CAAC,GAAI8wC,KAAK,CAACqrN,aAAa,GAAGz3P,IAAI,CAAC,CAAC,CAAE;UACzCu3P,UAAU,CAACziQ,IAAI,CAACjF,OAAO,CAAC\u002FE,MAAM,EAAEuQ,CAAC,EAAEC,CAAC,CAAC;UACrChE,IAAI,CAAC8D,gBAAgB,CAACC,CAAC,EAAEC,CAAC,EAAE1D,MAAM,CAAC;UACnC;QACF;MACA,KAAK3N,GAAG,CAACc,MAAM;QAAE;UACf,MAAMsQ,CAAC,GAAI+wC,KAAK,CAACorN,aAAa,GAAGx3P,IAAI,CAAC,CAAC,CAAE;UACzC,MAAM1E,CAAC,GAAI8wC,KAAK,CAACqrN,aAAa,GAAGz3P,IAAI,CAAC,CAAC,CAAE;UACzCu3P,UAAU,CAACziQ,IAAI,CAACjF,OAAO,CAAC9E,MAAM,EAAEsQ,CAAC,EAAEC,CAAC,CAAC;UACrChE,IAAI,CAAC8D,gBAAgB,CAACC,CAAC,EAAEC,CAAC,EAAE1D,MAAM,CAAC;UACnC;QACF;MACA,KAAK3N,GAAG,CAACe,OAAO;QAAE;UAChB,MAAM4sQ,MAAM,GAAGxrN,KAAK,CAACorN,aAAa;UAClC,MAAMK,MAAM,GAAGzrN,KAAK,CAACqrN,aAAa;UAClC,MAAM,CAAC\u002F7P,EAAE,EAAEC,EAAE,EAAEG,EAAE,EAAEE,EAAE,EAAEX,CAAC,EAAEC,CAAC,CAAC,GAAG0E,IAAI;UACnCosC,KAAK,CAACorN,aAAa,GAAGn8P,CAAC;UACvB+wC,KAAK,CAACqrN,aAAa,GAAGn8P,CAAC;UACvBi8P,UAAU,CAACziQ,IAAI,CAACjF,OAAO,CAAC7E,OAAO,EAAE0Q,EAAE,EAAEC,EAAE,EAAEG,EAAE,EAAEE,EAAE,EAAEX,CAAC,EAAEC,CAAC,CAAC;UACtDhE,IAAI,CAACqF,iBAAiB,CAACi7P,MAAM,EAAEC,MAAM,EAAEn8P,EAAE,EAAEC,EAAE,EAAEG,EAAE,EAAEE,EAAE,EAAEX,CAAC,EAAEC,CAAC,EAAE1D,MAAM,CAAC;UACpE;QACF;MACA,KAAK3N,GAAG,CAACgB,QAAQ;QAAE;UACjB,MAAM2sQ,MAAM,GAAGxrN,KAAK,CAACorN,aAAa;UAClC,MAAMK,MAAM,GAAGzrN,KAAK,CAACqrN,aAAa;UAClC,MAAM,CAAC\u002F7P,EAAE,EAAEC,EAAE,EAAEN,CAAC,EAAEC,CAAC,CAAC,GAAG0E,IAAI;UAC3BosC,KAAK,CAACorN,aAAa,GAAGn8P,CAAC;UACvB+wC,KAAK,CAACqrN,aAAa,GAAGn8P,CAAC;UACvBi8P,UAAU,CAACziQ,IAAI,CAACjF,OAAO,CAAC7E,OAAO,EAAE4sQ,MAAM,EAAEC,MAAM,EAAEn8P,EAAE,EAAEC,EAAE,EAAEN,CAAC,EAAEC,CAAC,CAAC;UAC9DhE,IAAI,CAACqF,iBAAiB,CACpBi7P,MAAM,EACNC,MAAM,EACND,MAAM,EACNC,MAAM,EACNn8P,EAAE,EACFC,EAAE,EACFN,CAAC,EACDC,CAAC,EACD1D,MACF,CAAC;UACD;QACF;MACA,KAAK3N,GAAG,CAACiB,QAAQ;QAAE;UACjB,MAAM0sQ,MAAM,GAAGxrN,KAAK,CAACorN,aAAa;UAClC,MAAMK,MAAM,GAAGzrN,KAAK,CAACqrN,aAAa;UAClC,MAAM,CAAC\u002F7P,EAAE,EAAEC,EAAE,EAAEN,CAAC,EAAEC,CAAC,CAAC,GAAG0E,IAAI;UAC3BosC,KAAK,CAACorN,aAAa,GAAGn8P,CAAC;UACvB+wC,KAAK,CAACqrN,aAAa,GAAGn8P,CAAC;UACvBi8P,UAAU,CAACziQ,IAAI,CAACjF,OAAO,CAAC7E,OAAO,EAAE0Q,EAAE,EAAEC,EAAE,EAAEN,CAAC,EAAEC,CAAC,EAAED,CAAC,EAAEC,CAAC,CAAC;UACpDhE,IAAI,CAACqF,iBAAiB,CAACi7P,MAAM,EAAEC,MAAM,EAAEn8P,EAAE,EAAEC,EAAE,EAAEN,CAAC,EAAEC,CAAC,EAAED,CAAC,EAAEC,CAAC,EAAE1D,MAAM,CAAC;UAClE;QACF;MACA,KAAK3N,GAAG,CAACkB,SAAS;QAChBosQ,UAAU,CAACziQ,IAAI,CAACjF,OAAO,CAAC1E,SAAS,CAAC;QAClC;IACJ;EACF;EAEA4nQ,cAAcA,CAACpjO,EAAE,EAAEC,SAAS,EAAEG,oBAAoB,EAAE;IAClD,OAAOL,eAAe,CAAC39B,KAAK,CAAC;MAC3B49B,EAAE;MACFhtB,IAAI,EAAE,IAAI,CAACA,IAAI;MACfitB,SAAS;MACTC,kBAAkB,EAAE,IAAI,CAACwhO,mBAAmB;MAC5CvhO,qBAAqB,EAAE,IAAI,CAACA,qBAAqB;MACjDC,oBAAoB;MACpBC,gBAAgB,EAAE;IACpB,CAAC,CAAC;EACJ;EAEA,MAAMgjO,iBAAiBA,CAAC8E,SAAS,EAAE;IACjC,IAAI;MACF,OAAO,MAAMA,SAAS;IACxB,CAAC,CAAC,OAAOx6P,EAAE,EAAE;MACX,IAAIA,EAAE,YAAYvJ,cAAc,EAAE;QAChC,OAAO,IAAI;MACb;MACA,IAAI,IAAI,CAAC1C,OAAO,CAACs+P,YAAY,EAAE;QAC7Bh\u002FP,IAAI,CAAC,6CAA6C2M,EAAE,IAAI,CAAC;QACzD,OAAO,IAAI;MACb;MACA,MAAMA,EAAE;IACV;EACF;EAEAo2O,YAAYA,CAAC;IACXC,OAAO;IACP\u002FjN,SAAS;IACTG,oBAAoB;IACpBgoO;EACF,CAAC,EAAE;IAGD,IAAIx2N,EAAE,GAAGw2N,wBAAwB,CAAC74P,GAAG,CAACy0O,OAAO,CAAC;IAC9C,IAAIpyM,EAAE,EAAE;MACN,OAAOA,EAAE;IACX;IACA,IAAIy2N,SAAS;IAEb,IAAI;MACF,MAAMjqQ,WAAW,GAAG0lP,OAAO,CAACC,YAAY,CACtCC,OAAO,EACP,IAAI,CAAChxO,IAAI,EACTitB,SAAS,EACT,IAAI,CAACyhO,mBAAmB,EACxB,IAAI,CAACvhO,qBAAqB,EAC1BC,oBACF,CAAC;MACDioO,SAAS,GAAGjqQ,WAAW,CAACikD,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC,OAAOpwC,MAAM,EAAE;MACf,IAAIA,MAAM,YAAY7N,cAAc,EAAE;QACpC,OAAO,IAAI;MACb;MACA,IAAI,IAAI,CAAC1C,OAAO,CAACs+P,YAAY,EAAE;QAC7Bh\u002FP,IAAI,CAAC,qCAAqCiR,MAAM,IAAI,CAAC;QAErDm2P,wBAAwB,CAAC\u002FzP,GAAG,CAAC2vO,OAAO,EAAE,IAAI,CAAC;QAC3C,OAAO,IAAI;MACb;MACA,MAAM\u002FxO,MAAM;IACd;IAEA2\u002FB,EAAE,GAAG,WAAW,IAAI,CAACkpN,SAAS,CAACoJ,WAAW,CAAC,CAAC,EAAE;IAC9C,IAAI,IAAI,CAACvC,gBAAgB,EAAE;MACzB\u002FvN,EAAE,GAAG,GAAG,IAAI,CAACkpN,SAAS,CAACM,QAAQ,CAAC,CAAC,UAAUxpN,EAAE,EAAE;IACjD;IACAw2N,wBAAwB,CAAC\u002FzP,GAAG,CAAC2vO,OAAO,EAAEpyM,EAAE,CAAC;IAEzC,IAAI,IAAI,CAAC+vN,gBAAgB,EAAE;MACzB,IAAI,CAAClnN,OAAO,CAAC5oB,IAAI,CAAC,WAAW,EAAE,CAAC+f,EAAE,EAAE,SAAS,EAAEy2N,SAAS,CAAC,CAAC;IAC5D,CAAC,MAAM;MACL,IAAI,CAAC5tN,OAAO,CAAC5oB,IAAI,CAAC,KAAK,EAAE,CAAC+f,EAAE,EAAE,IAAI,CAACjyB,SAAS,EAAE,SAAS,EAAE0oP,SAAS,CAAC,CAAC;IACtE;IACA,OAAOz2N,EAAE;EACX;EAEA02N,YAAYA,CACV9d,YAAY,EACZ3pM,EAAE,EACFxwC,IAAI,EACJ2vB,EAAE,EACF+1B,QAAQ,EACR91B,SAAS,EACT0iO,IAAI,EACJviO,oBAAoB,EACpBolO,uBAAuB,EACvB4C,wBAAwB,EACxB;IAEA,MAAMG,WAAW,GAAGl4P,IAAI,CAACwyB,GAAG,CAAC,CAAC;IAE9B,IAAI0lO,WAAW,YAAY51P,IAAI,EAAE;MAC\u002FB,MAAM61P,UAAU,GAAGzyM,QAAQ,CAAC\u002FhD,MAAM,CAACu0P,WAAW,CAAC\u002FkQ,IAAI,CAAC;MAEpD,MAAMilQ,kBAAkB,GACtBD,UAAU,YAAY70P,GAAG,IACzB6xP,uBAAuB,CAAC9kO,QAAQ,CAAC8nO,UAAU,CAAC;MAC9C,IAAIC,kBAAkB,EAAE;QACtB,IAAI;UACF,MAAMx6O,KAAK,GAAG+R,EAAE,CAACzW,IAAI,GAAGyW,EAAE,CAACzW,IAAI,CAACxB,SAAS,CAAC1X,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI;UACzD,MAAMu1P,eAAe,GAAGrb,kBAAkB,CACxCke,kBAAkB,CAAC9C,cAAc,EACjC8C,kBAAkB,CAAC1zP,IAAI,EACvBkZ,KACF,CAAC;UACDu8N,YAAY,CAAC3oM,KAAK,CAAChB,EAAE,EAAE+kN,eAAe,CAAC;UACvC,OAAOrhQ,SAAS;QAClB,CAAC,CAAC,MAAM,CAER;MACF;MAEA,MAAM83C,OAAO,GAAG,IAAI,CAACrpC,IAAI,CAAC+tB,UAAU,CAACynO,UAAU,CAAC;MAChD,IAAInsN,OAAO,EAAE;QACX,MAAMtnC,IAAI,GAAGsnC,OAAO,YAAY1lC,UAAU,GAAG0lC,OAAO,CAACtnC,IAAI,GAAGsnC,OAAO;QACnE,MAAMg2M,OAAO,GAAGt9O,IAAI,CAACxF,GAAG,CAAC,aAAa,CAAC;QAEvC,IAAI8iP,OAAO,KAAK+N,WAAW,CAACC,MAAM,EAAE;UAClC,MAAMpyO,KAAK,GAAG+R,EAAE,CAACzW,IAAI,GAAGyW,EAAE,CAACzW,IAAI,CAACxB,SAAS,CAAC1X,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI;UACzD,OAAO,IAAI,CAACi1P,gBAAgB,CAC1BzkN,EAAE,EACF5yB,KAAK,EACLgS,SAAS,EACToc,OAAO,EACPtnC,IAAI,EACJy1O,YAAY,EACZmY,IAAI,EACJ6C,uBACF,CAAC;QACH,CAAC,MAAM,IAAInT,OAAO,KAAK+N,WAAW,CAACE,OAAO,EAAE;UAC1C,MAAMtc,OAAO,GAAGjvO,IAAI,CAACxF,GAAG,CAAC,SAAS,CAAC;UACnC,MAAM2D,KAAK,GAAG,IAAI,CAAC6wO,YAAY,CAAC;YAC9BC,OAAO;YACP\u002FjN,SAAS;YACTG,oBAAoB;YACpBgoO;UACF,CAAC,CAAC;UACF,IAAIl1P,KAAK,EAAE;YACT,MAAMxI,MAAM,GAAGiR,YAAY,CAAC5G,IAAI,CAAChB,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC;YAC1Dy2O,YAAY,CAAC3oM,KAAK,CAAChB,EAAE,EAAE,CAAC,SAAS,EAAE3tC,KAAK,EAAExI,MAAM,CAAC,CAAC;UACpD;UACA,OAAOnG,SAAS;QAClB;QACA,MAAM,IAAIJ,WAAW,CAAC,wBAAwBkuP,OAAO,EAAE,CAAC;MAC1D;IACF;IACA,MAAM,IAAIluP,WAAW,CAAC,wBAAwBokQ,WAAW,EAAE,CAAC;EAC9D;EAEAG,0BAA0BA,CAAC1nP,KAAK,EAAE2nP,cAAc,EAAEC,aAAa,EAAE;IAC\u002FD,MAAMC,WAAW,GAAG,EAAE;IACtB,IAAI,EAAEF,cAAc,GAAGE,WAAW,EAAE;MAClC7nQ,IAAI,CAAC,4CAA4C,CAAC;MAClD;IACF;IACA,MAAMe,MAAM,GAAGif,KAAK,CAACjf,MAAM;IAC3B,MAAM0zP,QAAQ,GAAG,IAAI,CAACziP,IAAI,CAAC+tB,UAAU,CAAC\u002Ff,KAAK,CAAC,CAAC,CAAC,CAAC;IAC\u002FC,IAAIjf,MAAM,GAAG,CAAC,IAAI,EAAE0zP,QAAQ,YAAY9iP,IAAI,CAAC,EAAE;MAC7C3R,IAAI,CAAC,+BAA+B,CAAC;MACrC;IACF;IACA,QAAQy0P,QAAQ,CAACjyP,IAAI;MACnB,KAAK,KAAK;MACV,KAAK,IAAI;MACT,KAAK,KAAK;QACRolQ,aAAa,CAACzjQ,IAAI,CAACswP,QAAQ,CAACjyP,IAAI,CAAC;QACjC;MACF;QACExC,IAAI,CAAC,oBAAoBy0P,QAAQ,CAACjyP,IAAI,2BAA2B,CAAC;QAClE;IACJ;IACA,KAAK,IAAIqB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG9C,MAAM,EAAE8C,CAAC,EAAE,EAAE;MAC\u002FB,MAAMkrN,GAAG,GAAG\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\u002FI,CAAC,EAAE,EAAE;QAC\u002FD2lP,YAAY,CAAC3oM,KAAK,CAACvnD,GAAG,CAACW,OAAO,EAAE,EAAE,CAAC;MACrC;IACF;IAEA,OAAO,IAAIk6B,OAAO,CAAC,SAAS80O,WAAWA,CAACr0O,OAAO,EAAEC,MAAM,EAAE;MACvD,MAAM0wB,IAAI,GAAG,SAAAA,CAAUjwB,OAAO,EAAE;QAC9BnB,OAAO,CAAC+0O,GAAG,CAAC,CAAC5zO,OAAO,EAAEk0N,YAAY,CAAC7oM,KAAK,CAAC,CAAC,CAACzrB,IAAI,CAAC,YAAY;UAC1D,IAAI;YACF+zO,WAAW,CAACr0O,OAAO,EAAEC,MAAM,CAAC;UAC9B,CAAC,CAAC,OAAOloB,EAAE,EAAE;YACXkoB,MAAM,CAACloB,EAAE,CAAC;UACZ;QACF,CAAC,EAAEkoB,MAAM,CAAC;MACZ,CAAC;MACD8sO,IAAI,CAACwH,mBAAmB,CAAC,CAAC;MAC1BN,eAAe,CAAC5xP,KAAK,CAAC,CAAC;MAEvB,MAAM++O,SAAS,GAAG,CAAC,CAAC;MACpB,IAAIoT,IAAI,EAAEvlQ,CAAC,EAAE+I,EAAE,EAAEoyB,EAAE,EAAEx8B,IAAI,EAAE6mQ,WAAW;MACtC,OAAO,EAAED,IAAI,GAAGP,eAAe,CAACn\u002FM,KAAK,CAAC,CAAC,CAAC,EAAE;QAKxCssM,SAAS,CAAC3mP,IAAI,GAAG,IAAI;QACrB,IAAI,CAACs5P,YAAY,CAAC1zO,IAAI,CAAC+gO,SAAS,CAAC,EAAE;UACjC;QACF;QACA,IAAI3mP,IAAI,GAAG2mP,SAAS,CAAC3mP,IAAI;QACzB,IAAIwwC,EAAE,GAAGm2M,SAAS,CAACn2M,EAAE;QAErB,QAAQA,EAAE,GAAG,CAAC;UACZ,KAAKvmD,GAAG,CAACkE,YAAY;YAEnB6rQ,WAAW,GAAGh6P,IAAI,CAAC,CAAC,CAAC,YAAYsC,IAAI;YACrCnP,IAAI,GAAG6M,IAAI,CAAC,CAAC,CAAC,CAAC7M,IAAI;YAEnB,IAAI6mQ,WAAW,EAAE;cACf,MAAMC,UAAU,GAAGvG,eAAe,CAACpjO,SAAS,CAACn9B,IAAI,CAAC;cAClD,IAAI8mQ,UAAU,EAAE;gBACd1J,iBAAiB,CAACpW,YAAY,EAAE8f,UAAU,CAAC;gBAC3Cj6P,IAAI,GAAG,IAAI;gBACX;cACF;YACF;YAEAk2C,IAAI,CACF,IAAIpxB,OAAO,CAAC,UAAUo1O,cAAc,EAAEC,aAAa,EAAE;cACnD,IAAI,CAACH,WAAW,EAAE;gBAChB,MAAM,IAAIlmQ,WAAW,CAAC,sCAAsC,CAAC;cAC\u002FD;cAEA,IAAIu+P,IAAI,GAAG+G,KAAK,CAACz1P,MAAM,CAACxQ,IAAI,CAAC;cAC7B,IAAIk\u002FP,IAAI,YAAY\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\u002FC;UACF,KAAK\u002FV,GAAG,CAAC0D,iBAAiB;YACxBymQ,YAAY,CAAChoN,KAAK,CAACsuN,gBAAgB,GAAGhrO,eAAe,CAACkB,GAAG;YACzD5wB,IAAI,GAAG,CAAC0vB,eAAe,CAACkB,GAAG,CAAClZ,SAAS,CAAC1X,IAAI,EAAE,CAAC,CAAC,CAAC;YAC\u002FC;UACF,KAAK\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\u002FP,IAAI,CACF,6CAA6C2hQ,IAAI,CAACn\u002FP,IAAI,IAAI,GACxD,UAAUyO,MAAM,IACpB,CAAC;QAED63P,sBAAsB,CAAC,CAAC;QACxB;MACF;MACA,MAAM73P,MAAM;IACd,CAAC,CAAC;EACJ;EAEAw5P,cAAcA,CAAC;IACb92O,MAAM;IACNguO,IAAI;IACJ1iO,SAAS;IACTwkO,YAAY,GAAG,IAAI;IACnBiH,oBAAoB,GAAG,KAAK;IAC5BC,IAAI;IACJC,UAAU,GAAG,IAAI\u002F1P,GAAG,CAAC,CAAC;IACtBg2P,OAAO;IACP91N,IAAI,GAAG,IAAI;IACX+1N,iBAAiB,GAAG,IAAI;IACxBC,oBAAoB,GAAG,KAAK;IAC5BC,cAAc,GAAG,KAAK;IACtBrI,QAAQ,GAAG;EACb,CAAC,EAAE;IACD,MAAMzwP,KAAK,GAAGyhB,MAAM,CAAC5f,IAAI,EAAE7B,KAAK;IAChC,MAAM2vP,QAAQ,GAAG,IAAIntP,MAAM,CAACiuP,QAAQ,CAAC;IAErC,IAAIzwP,KAAK,EAAE;MACT,IAAIywP,QAAQ,EAAErvP,GAAG,CAACpB,KAAK,CAAC,EAAE;QACxB,MAAM,IAAIhS,KAAK,CACb,iDAAiDgS,KAAK,EACxD,CAAC;MACH;MACA2vP,QAAQ,CAAC\u002FsP,GAAG,CAAC5C,KAAK,CAAC;IACrB;IAGA+sB,SAAS,KAAKltB,IAAI,CAACyB,KAAK;IACxBiwP,YAAY,KAAK,IAAIiF,YAAY,CAAC,IAAIuC,SAAS,CAAC,CAAC,CAAC;IAElD,IAAIP,oBAAoB,EAAE;MACxBI,iBAAiB,KAAK;QAAEtrQ,KAAK,EAAE;MAAE,CAAC;IACpC;IAEA,MAAM0rQ,WAAW,GAAG;MAClB91P,KAAK,EAAE,EAAE;MACT+1P,MAAM,EAAEnpQ,MAAM,CAACuP,MAAM,CAAC,IAAI,CAAC;MAC3BwjC;IACF,CAAC;IACD,MAAMq2N,eAAe,GAAG;MACtBC,WAAW,EAAE,KAAK;MAClB\u002FmQ,GAAG,EAAE,EAAE;MACP2sD,UAAU,EAAE,CAAC;MACbq6M,WAAW,EAAE,CAAC;MACdnsP,KAAK,EAAE,CAAC;MACRC,MAAM,EAAE,CAAC;MACT6jC,QAAQ,EAAE,KAAK;MACfsoN,aAAa,EAAE,IAAI;MACnBC,gBAAgB,EAAE,CAAC;MACnBC,cAAc,EAAE,CAAC;MACjBC,cAAc,EAAE,CAAC;MACjBC,gBAAgB,EAAEl1N,QAAQ;MAC1Bm1N,gBAAgB,EAAE,CAACn1N,QAAQ;MAC3Bo1N,SAAS,EAAE,CAACp1N,QAAQ;MACpBv8C,SAAS,EAAE,IAAI;MACfohO,QAAQ,EAAE,IAAI;MACdwwC,MAAM,EAAE;IACV,CAAC;IAkBD,MAAMC,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC;IAC\u002FB,IAAIC,eAAe,GAAG,CAAC;IAQvB,SAASC,YAAYA,CAAC5wP,IAAI,EAAE;MAC1B,MAAM6wP,OAAO,GAAG,CAACF,eAAe,GAAG,CAAC,IAAI,CAAC;MACzC,MAAM9pP,GAAG,GACP6pP,YAAY,CAACC,eAAe,CAAC,KAAK,GAAG,IAAID,YAAY,CAACG,OAAO,CAAC,KAAK,GAAG;MACxEH,YAAY,CAACC,eAAe,CAAC,GAAG3wP,IAAI;MACpC2wP,eAAe,GAAGE,OAAO;MAEzB,OAAO,CAAClB,cAAc,IAAI9oP,GAAG;IAC\u002FB;IAEA,SAASiqP,mBAAmBA,CAAA,EAAG;MAC7B,OACE,CAACnB,cAAc,IACfe,YAAY,CAACC,eAAe,CAAC,KAAK,GAAG,IACrCD,YAAY,CAAC,CAACC,eAAe,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG;IAEnD;IAEA,SAASI,cAAcA,CAAA,EAAG;MACxBL,YAAY,CAAC,CAAC,CAAC,GAAGA,YAAY,CAAC,CAAC,CAAC,GAAG,GAAG;MACvCC,eAAe,GAAG,CAAC;IACrB;IAMA,MAAMK,qBAAqB,GAAG,KAAK;IAInC,MAAMC,kBAAkB,GAAG,IAAI;IAM\u002FB,MAAMC,qBAAqB,GAAG,CAAC,GAAG;IAQlC,MAAMC,wBAAwB,GAAG,KAAK;IACtC,MAAMC,wBAAwB,GAAG,GAAG;IAMpC,MAAMC,oBAAoB,GAAG,IAAI;IAEjC,MAAMlE,IAAI,GAAG,IAAI;IACjB,MAAMx2P,IAAI,GAAG,IAAI,CAACA,IAAI;IACtB,MAAM26P,oBAAoB,GAAG,EAAE;IAG\u002FB,IAAIlE,KAAK,GAAG,IAAI;IAChB,MAAMmE,iBAAiB,GAAG,IAAI9d,eAAe,CAAC,CAAC;IAC\u002FC,MAAM+d,gBAAgB,GAAG,IAAI5d,gBAAgB,CAAC,CAAC;IAE\u002FC,MAAM0Z,YAAY,GAAG,IAAIC,qBAAqB,CAACj1O,MAAM,EAAE3hB,IAAI,EAAEyxP,YAAY,CAAC;IAE1E,IAAIqJ,SAAS;IAEb,SAASC,cAAcA,CAAC;MACtB5tP,KAAK,GAAG,CAAC;MACTC,MAAM,GAAG,CAAC;MACVllB,SAAS,GAAGkxQ,eAAe,CAACG,aAAa;MACzCjwC,QAAQ,GAAG8vC,eAAe,CAAC9vC;IAC7B,CAAC,EAAE;MACD4vC,WAAW,CAAC91P,KAAK,CAACjR,IAAI,CAAC;QACrBG,GAAG,EAAE,GAAG;QACR+yP,GAAG,EAAE,KAAK;QACVl4O,KAAK;QACLC,MAAM;QACNllB,SAAS;QACTohO,QAAQ;QACRwwC,MAAM,EAAE;MACV,CAAC,CAAC;IACJ;IAEA,SAASkB,uBAAuBA,CAAA,EAAG;MAEjC,MAAMhvC,IAAI,GAAG8uC,SAAS,CAAC9uC,IAAI;MAC3B,MAAMivC,GAAG,GAAG,CACVH,SAAS,CAACpD,QAAQ,GAAGoD,SAAS,CAACI,UAAU,EACzC,CAAC,EACD,CAAC,EACDJ,SAAS,CAACpD,QAAQ,EAClB,CAAC,EACDoD,SAAS,CAACK,QAAQ,CACnB;MAED,IACEnvC,IAAI,CAACgW,WAAW,KACf84B,SAAS,CAACpD,QAAQ,IAAI,CAAC,IAAI1rC,IAAI,CAACovC,UAAU,CAAC,IAC5C,CAAChgQ,YAAY,CAAC0\u002FP,SAAS,CAAC1iD,UAAU,EAAEr6N,oBAAoB,CAAC,EACzD;QACA,MAAMs9Q,WAAW,GAAGrvC,IAAI,CAACx8K,IAAI,CAAC,CAAC,CAAC,GAAGw8K,IAAI,CAACx8K,IAAI,CAAC,CAAC,CAAC;QAC\u002FC,IAAI6rN,WAAW,GAAG,CAAC,EAAE;UACnBJ,GAAG,CAAC,CAAC,CAAC,IAAII,WAAW,GAAGP,SAAS,CAAC1iD,UAAU,CAAC,CAAC,CAAC;QACjD;MACF;MAEA,OAAOzjN,IAAI,CAACzM,SAAS,CACnB4yQ,SAAS,CAACQ,GAAG,EACb3mQ,IAAI,CAACzM,SAAS,CAAC4yQ,SAAS,CAACS,UAAU,EAAEN,GAAG,CAC1C,CAAC;IACH;IAEA,SAASO,qBAAqBA,CAAA,EAAG;MAC\u002FB,IAAIpC,eAAe,CAACC,WAAW,EAAE;QAC\u002FB,OAAOD,eAAe;MACxB;MACA,MAAM;QAAEptC,IAAI;QAAE\u002FB;MAAW,CAAC,GAAG6wC,SAAS;MACtC,IAAI,CAAClC,UAAU,CAACt3P,GAAG,CAAC2oN,UAAU,CAAC,EAAE;QAC\u002FB2uC,UAAU,CAAC71P,GAAG,CAACknN,UAAU,CAAC;QAC1BivC,WAAW,CAACC,MAAM,CAAClvC,UAAU,CAAC,GAAG;UAC\u002FBp\u002FM,UAAU,EAAEmhN,IAAI,CAAC6W,YAAY;UAC7BvqB,MAAM,EAAE0T,IAAI,CAAC1T,MAAM;UACnBC,OAAO,EAAEyT,IAAI,CAACzT,OAAO;UACrBtnK,QAAQ,EAAE+6K,IAAI,CAAC\u002F6K;QACjB,CAAC;QACD,IAAIulN,IAAI,CAAC9nQ,OAAO,CAACqzO,mBAAmB,IAAI\u002FV,IAAI,CAAC0W,cAAc,EAAE;UAC3D,MAAM0jB,KAAK,GAAG8S,WAAW,CAACC,MAAM,CAAClvC,UAAU,CAAC;UAC5Cm8B,KAAK,CAACqV,gBAAgB,GAAGzvC,IAAI,CAAC0W,cAAc,CAACnzN,GAAG;UAChD62O,KAAK,CAACsV,0BAA0B,GAAG1vC,IAAI,CAAC0W,cAAc,CAACzY,UAAU;QACnE;MACF;MACAmvC,eAAe,CAAC9vC,QAAQ,GAAGW,UAAU;MAErC,MAAM0xC,GAAG,GAAIvC,eAAe,CAAClxQ,SAAS,GAAG8yQ,uBAAuB,CAAC,CAAE;MACnE,IAAI,CAAChvC,IAAI,CAAC\u002F6K,QAAQ,EAAE;QAClBmoN,eAAe,CAACjsP,KAAK,GAAGisP,eAAe,CAACn6M,UAAU,GAAG,CAAC;QACtDm6M,eAAe,CAAChsP,MAAM,GAAGgsP,eAAe,CAACE,WAAW,GAAGvnQ,IAAI,CAACigP,KAAK,CAC\u002FD2pB,GAAG,CAAC,CAAC,CAAC,EACNA,GAAG,CAAC,CAAC,CACP,CAAC;QACDvC,eAAe,CAACnoN,QAAQ,GAAG,KAAK;MAClC,CAAC,MAAM;QACLmoN,eAAe,CAACjsP,KAAK,GAAGisP,eAAe,CAACn6M,UAAU,GAAGltD,IAAI,CAACigP,KAAK,CAC7D2pB,GAAG,CAAC,CAAC,CAAC,EACNA,GAAG,CAAC,CAAC,CACP,CAAC;QACDvC,eAAe,CAAChsP,MAAM,GAAGgsP,eAAe,CAACE,WAAW,GAAG,CAAC;QACxDF,eAAe,CAACnoN,QAAQ,GAAG,IAAI;MACjC;MAEA,MAAM2qN,UAAU,GAAG7pQ,IAAI,CAACigP,KAAK,CAC3B8oB,SAAS,CAACe,cAAc,CAAC,CAAC,CAAC,EAC3Bf,SAAS,CAACe,cAAc,CAAC,CAAC,CAC5B,CAAC;MACD,MAAMC,SAAS,GAAG\u002FpQ,IAAI,CAACigP,KAAK,CAAC8oB,SAAS,CAACQ,GAAG,CAAC,CAAC,CAAC,EAAER,SAAS,CAACQ,GAAG,CAAC,CAAC,CAAC,CAAC;MAChElC,eAAe,CAACI,gBAAgB,GAAGsC,SAAS,GAAGF,UAAU;MAEzD,MAAM;QAAElE;MAAS,CAAC,GAAGoD,SAAS;MAC9B1B,eAAe,CAACO,gBAAgB,GAAGjC,QAAQ,GAAG2C,qBAAqB;MACnEjB,eAAe,CAACS,SAAS,GAAGnC,QAAQ,GAAG4C,kBAAkB;MACzDlB,eAAe,CAACQ,gBAAgB,GAAGlC,QAAQ,GAAG6C,qBAAqB;MACnEnB,eAAe,CAACK,cAAc,GAAG\u002FB,QAAQ,GAAG8C,wBAAwB;MACpEpB,eAAe,CAACM,cAAc,GAAGhC,QAAQ,GAAG+C,wBAAwB;MACpErB,eAAe,CAACU,MAAM,GAAG,KAAK;MAE9BV,eAAe,CAACC,WAAW,GAAG,IAAI;MAClC,OAAOD,eAAe;IACxB;IAEA,SAAS2C,kBAAkBA,CAAA,EAAG;MAC5B,IAAI,CAAC3C,eAAe,CAACC,WAAW,EAAE;QAChC;MACF;MAEA,MAAMuC,UAAU,GAAG7pQ,IAAI,CAACigP,KAAK,CAC3B8oB,SAAS,CAACe,cAAc,CAAC,CAAC,CAAC,EAC3Bf,SAAS,CAACe,cAAc,CAAC,CAAC,CAC5B,CAAC;MACD,MAAMC,SAAS,GAAG\u002FpQ,IAAI,CAACigP,KAAK,CAAC8oB,SAAS,CAACQ,GAAG,CAAC,CAAC,CAAC,EAAER,SAAS,CAACQ,GAAG,CAAC,CAAC,CAAC,CAAC;MAChE,MAAMU,WAAW,GAAGF,SAAS,GAAGF,UAAU;MAC1C,IAAII,WAAW,KAAK5C,eAAe,CAACI,gBAAgB,EAAE;QACpD;MACF;MAEA,IAAI,CAACJ,eAAe,CAACnoN,QAAQ,EAAE;QAC7BmoN,eAAe,CAACn6M,UAAU,IACxBm6M,eAAe,CAACjsP,KAAK,GAAGisP,eAAe,CAACI,gBAAgB;QAC1DJ,eAAe,CAACjsP,KAAK,GAAG,CAAC;MAC3B,CAAC,MAAM;QACLisP,eAAe,CAACE,WAAW,IACzBF,eAAe,CAAChsP,MAAM,GAAGgsP,eAAe,CAACI,gBAAgB;QAC3DJ,eAAe,CAAChsP,MAAM,GAAG,CAAC;MAC5B;MAEAgsP,eAAe,CAACI,gBAAgB,GAAGwC,WAAW;IAChD;IAEA,SAASC,gBAAgBA,CAACC,SAAS,EAAE;MACnC,IAAIC,IAAI,GAAGD,SAAS,CAAC5pQ,GAAG,CAACF,IAAI,CAAC,EAAE,CAAC;MACjC,IAAI,CAAC2mQ,oBAAoB,EAAE;QACzBoD,IAAI,GAAGjgQ,gBAAgB,CAACigQ,IAAI,CAAC;MAC\u002FB;MACA,MAAMC,UAAU,GAAG9W,IAAI,CAAC6W,IAAI,EAAE,CAAC,CAAC,EAAED,SAAS,CAACjrN,QAAQ,CAAC;MACrD,OAAO;QACL3+C,GAAG,EAAE8pQ,UAAU,CAAC9pQ,GAAG;QACnB+yP,GAAG,EAAE+W,UAAU,CAAC\u002FW,GAAG;QACnBl4O,KAAK,EAAEpb,IAAI,CAAC8H,GAAG,CAACqiQ,SAAS,CAACj9M,UAAU,CAAC;QACrC7xC,MAAM,EAAErb,IAAI,CAAC8H,GAAG,CAACqiQ,SAAS,CAAC5C,WAAW,CAAC;QACvCpxQ,SAAS,EAAEg0Q,SAAS,CAACh0Q,SAAS;QAC9BohO,QAAQ,EAAE4yC,SAAS,CAAC5yC,QAAQ;QAC5BwwC,MAAM,EAAEoC,SAAS,CAACpC;MACpB,CAAC;IACH;IAEA,eAAejH,aAAaA,CAACvpC,QAAQ,EAAEypC,OAAO,EAAE;MAC9C,MAAME,UAAU,GAAG,MAAMuD,IAAI,CAACtD,QAAQ,CACpC5pC,QAAQ,EACRypC,OAAO,EACP9lO,SAAS,EACT0iO,IACF,CAAC;MAEDmL,SAAS,CAAC7wC,UAAU,GAAGgpC,UAAU,CAAChpC,UAAU;MAC5C6wC,SAAS,CAAC9uC,IAAI,GAAGinC,UAAU,CAACjnC,IAAI;MAChC8uC,SAAS,CAAC1iD,UAAU,GAAG66C,UAAU,CAACjnC,IAAI,CAAC5T,UAAU,IAAIr6N,oBAAoB;IAC3E;IAEA,SAASs+Q,oBAAoBA,CAAC3jQ,CAAC,EAAEC,CAAC,EAAEjB,MAAM,EAAE;MAC1C,MAAMif,KAAK,GAAG5kB,IAAI,CAACigP,KAAK,CAACt6O,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,CAAC;MAC9C,OAAO,CACL,CAACA,MAAM,CAAC,CAAC,CAAC,GAAGgB,CAAC,GAAGhB,MAAM,CAAC,CAAC,CAAC,GAAGiB,CAAC,IAAIge,KAAK,EACvC,CAACjf,MAAM,CAAC,CAAC,CAAC,GAAGgB,CAAC,GAAGhB,MAAM,CAAC,CAAC,CAAC,GAAGiB,CAAC,IAAIge,KAAK,CACxC;IACH;IAEA,SAAS2lP,uBAAuBA,CAACC,UAAU,EAAE;MAC3C,MAAMruC,gBAAgB,GAAG8sC,uBAAuB,CAAC,CAAC;MAClD,IAAIwB,IAAI,GAAGtuC,gBAAgB,CAAC,CAAC,CAAC;MAC9B,IAAIuuC,IAAI,GAAGvuC,gBAAgB,CAAC,CAAC,CAAC;MAG9B,IAAI4sC,SAAS,CAAC9uC,IAAI,EAAE\u002F6K,QAAQ,EAAE;QAC5B,IACEurN,IAAI,GAAG3D,OAAO,CAAC,CAAC,CAAC,IACjB2D,IAAI,GAAG3D,OAAO,CAAC,CAAC,CAAC,IACjB4D,IAAI,GAAGF,UAAU,GAAG1D,OAAO,CAAC,CAAC,CAAC,IAC9B4D,IAAI,GAAG5D,OAAO,CAAC,CAAC,CAAC,EACjB;UACA,OAAO,KAAK;QACd;MACF,CAAC,MAAM,IACL2D,IAAI,GAAGD,UAAU,GAAG1D,OAAO,CAAC,CAAC,CAAC,IAC9B2D,IAAI,GAAG3D,OAAO,CAAC,CAAC,CAAC,IACjB4D,IAAI,GAAG5D,OAAO,CAAC,CAAC,CAAC,IACjB4D,IAAI,GAAG5D,OAAO,CAAC,CAAC,CAAC,EACjB;QACA,OAAO,KAAK;MACd;MAEA,IAAI,CAACiC,SAAS,CAAC9uC,IAAI,IAAI,CAACotC,eAAe,CAACG,aAAa,EAAE;QACrD,OAAO,IAAI;MACb;MAEA,IAAImD,QAAQ,GAAGtD,eAAe,CAACG,aAAa,CAAC,CAAC,CAAC;MAC\u002FC,IAAIoD,QAAQ,GAAGvD,eAAe,CAACG,aAAa,CAAC,CAAC,CAAC;MAE\u002FC,IAAImD,QAAQ,KAAKF,IAAI,IAAIG,QAAQ,KAAKF,IAAI,EAAE;QAC1C,OAAO,IAAI;MACb;MAEA,IAAIG,MAAM,GAAG,CAAC,CAAC;MAEf,IACE1uC,gBAAgB,CAAC,CAAC,CAAC,IACnBA,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,IACzBA,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,EACzB;QACA0uC,MAAM,GAAG1uC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG;MAC5C,CAAC,MAAM,IACLA,gBAAgB,CAAC,CAAC,CAAC,IACnBA,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,IACzBA,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,EACzB;QACA0uC,MAAM,GAAG1uC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG;MAC7C;MAEA,QAAQ0uC,MAAM;QACZ,KAAK,CAAC;UACJ;QACF,KAAK,EAAE;UACL,CAACJ,IAAI,EAAEC,IAAI,CAAC,GAAG,CAACA,IAAI,EAAED,IAAI,CAAC;UAC3B,CAACE,QAAQ,EAAEC,QAAQ,CAAC,GAAG,CAACA,QAAQ,EAAED,QAAQ,CAAC;UAC3C;QACF,KAAK,GAAG;UACN,CAACF,IAAI,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,QAAQ,CAAC,GAAG,CACjC,CAACH,IAAI,EACL,CAACC,IAAI,EACL,CAACC,QAAQ,EACT,CAACC,QAAQ,CACV;UACD;QACF,KAAK,GAAG;UACN,CAACH,IAAI,EAAEC,IAAI,CAAC,GAAG,CAAC,CAACA,IAAI,EAAE,CAACD,IAAI,CAAC;UAC7B,CAACE,QAAQ,EAAEC,QAAQ,CAAC,GAAG,CAAC,CAACA,QAAQ,EAAE,CAACD,QAAQ,CAAC;UAC7C;QACF;UAME,CAACF,IAAI,EAAEC,IAAI,CAAC,GAAGJ,oBAAoB,CAACG,IAAI,EAAEC,IAAI,EAAEvuC,gBAAgB,CAAC;UACjE,CAACwuC,QAAQ,EAAEC,QAAQ,CAAC,GAAGN,oBAAoB,CACzCK,QAAQ,EACRC,QAAQ,EACRvD,eAAe,CAACG,aAClB,CAAC;MACL;MAEA,IAAIuB,SAAS,CAAC9uC,IAAI,CAAC\u002F6K,QAAQ,EAAE;QAC3B,MAAM4rN,QAAQ,GAAG,CAACF,QAAQ,GAAGF,IAAI,IAAIrD,eAAe,CAACI,gBAAgB;QACrE,MAAMsD,QAAQ,GAAGN,IAAI,GAAGE,QAAQ;QAIhC,MAAMK,eAAe,GAAGhrQ,IAAI,CAAC2gC,IAAI,CAAC0mO,eAAe,CAAChsP,MAAM,CAAC;QACzD,IAAIyvP,QAAQ,GAAGE,eAAe,GAAG3D,eAAe,CAACQ,gBAAgB,EAAE;UACjE,IACE7nQ,IAAI,CAAC8H,GAAG,CAACijQ,QAAQ,CAAC,GAClB,GAAG,GAAG1D,eAAe,CAACjsP,KAAK,EAC3B;YACA6vP,SAAS,CAAC,CAAC;YACX,OAAO,IAAI;UACb;UAEA5C,cAAc,CAAC,CAAC;UAChB6C,oBAAoB,CAAC,CAAC;UACtB,OAAO,IAAI;QACb;QAEA,IAAIlrQ,IAAI,CAAC8H,GAAG,CAACijQ,QAAQ,CAAC,GAAG1D,eAAe,CAACjsP,KAAK,EAAE;UAC9C6vP,SAAS,CAAC,CAAC;UACX,OAAO,IAAI;QACb;QAEA,IAAIH,QAAQ,IAAIE,eAAe,GAAG3D,eAAe,CAACS,SAAS,EAAE;UAG3DO,cAAc,CAAC,CAAC;QAClB;QAEA,IAAIyC,QAAQ,IAAIE,eAAe,GAAG3D,eAAe,CAACO,gBAAgB,EAAE;UAClE,IAAIQ,mBAAmB,CAAC,CAAC,EAAE;YAIzBC,cAAc,CAAC,CAAC;YAChB6C,oBAAoB,CAAC,CAAC;YACtBlC,cAAc,CAAC;cAAE3tP,MAAM,EAAErb,IAAI,CAAC8H,GAAG,CAACgjQ,QAAQ;YAAE,CAAC,CAAC;UAChD,CAAC,MAAM;YACLzD,eAAe,CAAChsP,MAAM,IAAIyvP,QAAQ;UACpC;QACF,CAAC,MAAM,IACL,CAACK,aAAa,CACZL,QAAQ,EACRzD,eAAe,CAACG,aAAa,EAC7BwD,eACF,CAAC,EACD;UACA,IAAI3D,eAAe,CAAC9mQ,GAAG,CAACvD,MAAM,KAAK,CAAC,EAAE;YACpCqrQ,cAAc,CAAC,CAAC;YAChBW,cAAc,CAAC;cAAE3tP,MAAM,EAAErb,IAAI,CAAC8H,GAAG,CAACgjQ,QAAQ;YAAE,CAAC,CAAC;UAChD,CAAC,MAAM;YACLzD,eAAe,CAAChsP,MAAM,IAAIyvP,QAAQ;UACpC;QACF;QAEA,IAAI9qQ,IAAI,CAAC8H,GAAG,CAACijQ,QAAQ,CAAC,GAAG1D,eAAe,CAACjsP,KAAK,GAAGutP,oBAAoB,EAAE;UACrEuC,oBAAoB,CAAC,CAAC;QACxB;QAEA,OAAO,IAAI;MACb;MAEA,MAAMH,QAAQ,GAAG,CAACN,IAAI,GAAGE,QAAQ,IAAItD,eAAe,CAACI,gBAAgB;MACrE,MAAMqD,QAAQ,GAAGJ,IAAI,GAAGE,QAAQ;MAIhC,MAAMI,eAAe,GAAGhrQ,IAAI,CAAC2gC,IAAI,CAAC0mO,eAAe,CAACjsP,KAAK,CAAC;MACxD,IAAI2vP,QAAQ,GAAGC,eAAe,GAAG3D,eAAe,CAACQ,gBAAgB,EAAE;QACjE,IACE7nQ,IAAI,CAAC8H,GAAG,CAACgjQ,QAAQ,CAAC,GAClB,GAAG,GAAGzD,eAAe,CAAChsP,MAAM,EAC5B;UACA4vP,SAAS,CAAC,CAAC;UACX,OAAO,IAAI;QACb;QAIA5C,cAAc,CAAC,CAAC;QAChB6C,oBAAoB,CAAC,CAAC;QACtB,OAAO,IAAI;MACb;MAEA,IAAIlrQ,IAAI,CAAC8H,GAAG,CAACgjQ,QAAQ,CAAC,GAAGzD,eAAe,CAAChsP,MAAM,EAAE;QAC\u002FC4vP,SAAS,CAAC,CAAC;QACX,OAAO,IAAI;MACb;MAEA,IAAIF,QAAQ,IAAIC,eAAe,GAAG3D,eAAe,CAACS,SAAS,EAAE;QAG3DO,cAAc,CAAC,CAAC;MAClB;MAEA,IAAI0C,QAAQ,IAAIC,eAAe,GAAG3D,eAAe,CAACO,gBAAgB,EAAE;QAClE,IAAIQ,mBAAmB,CAAC,CAAC,EAAE;UAIzBC,cAAc,CAAC,CAAC;UAChB6C,oBAAoB,CAAC,CAAC;UACtBlC,cAAc,CAAC;YAAE5tP,KAAK,EAAEpb,IAAI,CAAC8H,GAAG,CAACijQ,QAAQ;UAAE,CAAC,CAAC;QAC\u002FC,CAAC,MAAM;UACL1D,eAAe,CAACjsP,KAAK,IAAI2vP,QAAQ;QACnC;MACF,CAAC,MAAM,IACL,CAACI,aAAa,CAACJ,QAAQ,EAAE1D,eAAe,CAACG,aAAa,EAAEwD,eAAe,CAAC,EACxE;QACA,IAAI3D,eAAe,CAAC9mQ,GAAG,CAACvD,MAAM,KAAK,CAAC,EAAE;UACpCqrQ,cAAc,CAAC,CAAC;UAChBW,cAAc,CAAC;YAAE5tP,KAAK,EAAEpb,IAAI,CAAC8H,GAAG,CAACijQ,QAAQ;UAAE,CAAC,CAAC;QAC\u002FC,CAAC,MAAM;UACL1D,eAAe,CAACjsP,KAAK,IAAI2vP,QAAQ;QACnC;MACF;MAEA,IAAI\u002FqQ,IAAI,CAAC8H,GAAG,CAACgjQ,QAAQ,CAAC,GAAGzD,eAAe,CAAChsP,MAAM,GAAGstP,oBAAoB,EAAE;QACtEuC,oBAAoB,CAAC,CAAC;MACxB;MAEA,OAAO,IAAI;IACb;IAEA,SAASE,oBAAoBA,CAAC;MAAEvtB,KAAK;MAAEwtB;IAAa,CAAC,EAAE;MACrD,MAAMpxC,IAAI,GAAG8uC,SAAS,CAAC9uC,IAAI;MAC3B,IAAI,CAAC4jB,KAAK,EAAE;QAEV,MAAMytB,WAAW,GAAGvC,SAAS,CAACuC,WAAW,GAAGD,YAAY;QACxD,IAAIC,WAAW,EAAE;UACf,IAAI,CAACrxC,IAAI,CAAC\u002F6K,QAAQ,EAAE;YAClB6pN,SAAS,CAACwC,mBAAmB,CAC3BD,WAAW,GAAGvC,SAAS,CAACI,UAAU,EAClC,CACF,CAAC;UACH,CAAC,MAAM;YACLJ,SAAS,CAACwC,mBAAmB,CAAC,CAAC,EAAE,CAACD,WAAW,CAAC;UAChD;QACF;QAEA,IAAIrE,cAAc,EAAE;UAClBsD,uBAAuB,CAAC,CAAC,CAAC;QAC5B;QAEA;MACF;MAEA,MAAMlxC,MAAM,GAAGY,IAAI,CAAC2jB,aAAa,CAACC,KAAK,CAAC;MACxC,MAAMj5N,KAAK,GAAGmkP,SAAS,CAAC1iD,UAAU,CAAC,CAAC,CAAC,GAAG0iD,SAAS,CAACpD,QAAQ;MAE1D,KAAK,IAAI7lQ,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAGwwN,MAAM,CAACr8N,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,EAAE,EAAE;QAC\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\u002FB;UACF,KAAK\u002FV,GAAG,CAACkC,cAAc;YACrBsxQ,SAAS,CAAC0C,WAAW,GAAGngQ,IAAI,CAAC,CAAC,CAAC;YAC\u002FB;UACF,KAAK\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\u002FP,IAAI,YAAY\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\u002FP,IAAI,CACF,4CAA4C2hQ,IAAI,CAACn\u002FP,IAAI,IAAI,GACvD,UAAUyO,MAAM,IACpB,CAAC;QAEDg+P,oBAAoB,CAAC,CAAC;QACtBQ,YAAY,CAAC,CAAC;QACd;MACF;MACA,MAAMx+P,MAAM;IACd,CAAC,CAAC;EACJ;EAEA,MAAM4\u002FP,qBAAqBA,CAAC98P,IAAI,EAAED,UAAU,EAAE;IAC5C,MAAM9B,IAAI,GAAG,IAAI,CAACA,IAAI;IACtB,IAAI8+P,aAAa;IAEjB,MAAMC,gBAAgB,GAAG,IAAI,CAACC,aAAa,CAACl9P,UAAU,CAAC85N,SAAS,CAAC;IAEjE,IAAI95N,UAAU,CAACyoN,SAAS,EAAE;MAExB,MAAM00C,aAAa,GAAGl9P,IAAI,CAACxF,GAAG,CAAC,eAAe,CAAC;MAC\u002FC,IAAI0iQ,aAAa,YAAYl\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\u002FI,CAAC,EAAE,EAAE;UAC\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\u002FP,QAAQ,GAAGp\u002FP,IAAI;IACrB,IAAIjkB,IAAI,GAAGikB,IAAI,CAACxF,GAAG,CAAC,SAAS,CAAC;IAC9B,IAAI,EAAEze,IAAI,YAAY6hB,IAAI,CAAC,EAAE;MAC3B,MAAM,IAAIxO,WAAW,CAAC,sBAAsB,CAAC;IAC\u002FC;IAEA,IAAIo5N,SAAS,GAAG,KAAK;IACrB,IAAIj7N,IAAI;IACR,IAAIxR,IAAI,CAAC0S,IAAI,KAAK,OAAO,EAAE;MAKzB,MAAM4wQ,EAAE,GAAGr\u002FP,IAAI,CAACxF,GAAG,CAAC,iBAAiB,CAAC;MACtC,IAAI,CAAC6kQ,EAAE,EAAE;QACP,MAAM,IAAIjwQ,WAAW,CAAC,oCAAoC,CAAC;MAC7D;MACA4Q,IAAI,GAAGzN,KAAK,CAAC4I,OAAO,CAACkkQ,EAAE,CAAC,GAAG,IAAI,CAACphQ,IAAI,CAAC+tB,UAAU,CAACqzO,EAAE,CAAC,CAAC,CAAC,CAAC,GAAGA,EAAE;MAE3D,IAAI,EAAEr\u002FP,IAAI,YAAYhC,IAAI,CAAC,EAAE;QAC3B,MAAM,IAAI5O,WAAW,CAAC,sCAAsC,CAAC;MAC\u002FD;MACArT,IAAI,GAAGikB,IAAI,CAACxF,GAAG,CAAC,SAAS,CAAC;MAC1B,IAAI,EAAEze,IAAI,YAAY6hB,IAAI,CAAC,EAAE;QAC3B,MAAM,IAAIxO,WAAW,CAAC,sBAAsB,CAAC;MAC\u002FC;MACAo5N,SAAS,GAAG,IAAI;IAClB;IAEA,IAAIV,SAAS,GAAG9nN,IAAI,CAACxF,GAAG,CAAC,WAAW,CAAC;IACrC,IAAI,CAAC9O,MAAM,CAACC,SAAS,CAACm8N,SAAS,CAAC,EAAE;MAChCA,SAAS,GAAG,CAAC;IACf;IACA,IAAIC,QAAQ,GAAG\u002FnN,IAAI,CAACxF,GAAG,CAAC,UAAU,CAAC;IACnC,IAAI,CAAC9O,MAAM,CAACC,SAAS,CAACo8N,QAAQ,CAAC,EAAE;MAC\u002FBA,QAAQ,GAAGS,SAAS,GAAG,MAAM,GAAG,IAAI;IACtC;IACA,MAAM2wB,UAAU,GAAGn5O,IAAI,CAACxF,GAAG,CAAC,gBAAgB,CAAC;IAC7C,MAAMq\u002FN,SAAS,GAAG75N,IAAI,CAACxF,GAAG,CAAC,WAAW,CAAC,IAAI4kQ,QAAQ,CAAC5kQ,GAAG,CAAC,WAAW,CAAC;IAEpE,IAAI2+O,UAAU,EAAE;MACd5rP,IAAI,GAAG,IAAIm5P,cAAc,CAAC,CAAC;MAE3B,MAAMruP,QAAQ,GAAG+mQ,QAAQ,CAACngQ,MAAM,CAAC,UAAU,CAAC;MAC5C,IAAI5G,QAAQ,YAAYuF,IAAI,EAAE;QAC5BrQ,IAAI,CAACq5P,MAAM,CAACvuP,QAAQ,CAAC5J,IAAI,CAAC;MAC5B,CAAC,MAAM,IAAI4J,QAAQ,YAAYuG,GAAG,EAAE;QAClCrR,IAAI,CAACq5P,MAAM,CAACvuP,QAAQ,CAAC3F,QAAQ,CAAC,CAAC,CAAC;MAClC,CAAC,MAAM,IAAI2F,QAAQ,YAAY2F,IAAI,EAAE;QACnC,KAAK,MAAM0J,KAAK,IAAIrP,QAAQ,CAAC+G,YAAY,CAAC,CAAC,EAAE;UAC3C,IAAIsI,KAAK,YAAY9J,IAAI,EAAE;YACzBrQ,IAAI,CAACq5P,MAAM,CAACl\u002FO,KAAK,CAACjZ,IAAI,CAAC;UACzB,CAAC,MAAM,IAAIiZ,KAAK,YAAY9I,GAAG,EAAE;YAC\u002FBrR,IAAI,CAACq5P,MAAM,CAACl\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\u002FB,cAAc,GAAG,IAAI;IACzB,IAAIs\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\u002FBx\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\u002FO,IAAI,CAAC,MAAM;QACrD,MAAM0\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\u002FP,MAAM,CAAC8\u002FP,SAAS,CAAC\u002FuQ,KAAK,CAAC,CAAC;cACnCs7P,cAAc,EAAErsP,MAAM,CAACqsP;YACzB,CAAC,CAAC;YACF;UACF,KAAKjsQ,GAAG,CAACW,OAAO;YACdif,MAAM,GAAGspC,KAAK,CAAC3gB,GAAG,CAAC,CAAC,IAAI3oB,MAAM;YAC9B;UACF,KAAK5f,GAAG,CAAC0C,aAAa;YACpBkd,MAAM,CAAC80P,WAAW,IAAIjqQ,IAAI,CAACigP,KAAK,CAAC30O,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAI,CAAC,CAAC,CAAC,CAAC;YAClD;UACF,KAAK\u002FV,GAAG,CAACqC,OAAO;YACd,MAAM,CAAC2\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\u002FCm5Q,aAAa,CAAC\u002F1Q,IAAI,CAACgb,KAAK,CAAC;MAC3B,CAAC,MAAM;QACLssM,MAAM,CAACtnN,IAAI,CAAC2iE,WAAW,EAAEozM,aAAa,CAAC;QACvCpzM,WAAW,GAAGzrD,IAAI;QAClB6+P,aAAa,GAAG,CAAC\u002F6P,KAAK,CAAC;MACzB;IACF;IAEA,IAAI2nD,WAAW,EAAE;MACf2kJ,MAAM,CAACtnN,IAAI,CAAC2iE,WAAW,EAAEozM,aAAa,CAAC;IACzC;IAEAD,cAAc,CAAC5mQ,GAAG,CAAC,GAAG,EAAEo4M,MAAM,CAAC;IAE\u002FB,MAAMwlD,aAAa,GAAG,IAAIl\u002FP,IAAI,CAAC,IAAI,CAACC,IAAI,CAAC;IACzCi\u002FP,aAAa,CAAC59P,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC;IACzC49P,aAAa,CAAC59P,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC;IACtC49P,aAAa,CAAC59P,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;IAClC4mQ,cAAc,CAAC5mQ,GAAG,CAAC,eAAe,EAAE49P,aAAa,CAAC;IAElD,OAAO,IAAI,CAACj\u002FP,IAAI,CAAC+nQ,mBAAmB,CAACE,cAAc,CAAC;EACtD;EAEA,IAAIE,WAAWA,CAAA,EAAG;IAChB,MAAMtG,QAAQ,GAAG,IAAI9hQ,IAAI,CAAC,IAAI,CAACC,IAAI,CAAC;IACpC6hQ,QAAQ,CAACxgQ,GAAG,CAAC,UAAU,EAAE,IAAI,CAACioN,QAAQ,CAAC;IACvCu4C,QAAQ,CAACxgQ,GAAG,CAAC,MAAM,EAAE1B,IAAI,CAACpD,GAAG,CAAC,MAAM,CAAC,CAAC;IACtCslQ,QAAQ,CAACxgQ,GAAG,CAAC,SAAS,EAAE1B,IAAI,CAACpD,GAAG,CAAC,OAAO,CAAC,CAAC;IAC1CslQ,QAAQ,CAACxgQ,GAAG,CAAC,UAAU,EAAE1B,IAAI,CAACpD,GAAG,CAAC,YAAY,CAAC,CAAC;IAChDslQ,QAAQ,CAACxgQ,GAAG,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC2mQ,iBAAiB,CAAC,CAAC;IACzDnG,QAAQ,CAACxgQ,GAAG,CAAC,WAAW,EAAE1B,IAAI,CAACpD,GAAG,CAAC,YAAY,CAAC,CAAC;IAEjD,OAAO,IAAI,CAACyD,IAAI,CAAC+nQ,mBAAmB,CAAClG,QAAQ,CAAC;EAChD;EAEA,IAAI50O,SAASA,CAAA,EAAG;IACd,MAAMA,SAAS,GAAG,IAAIltB,IAAI,CAAC,IAAI,CAACC,IAAI,CAAC;IACrC,MAAMgsN,IAAI,GAAG,IAAIjsN,IAAI,CAAC,IAAI,CAACC,IAAI,CAAC;IAChCgsN,IAAI,CAAC3qN,GAAG,CAAC,IAAI,CAACioN,QAAQ,CAAC94N,IAAI,EAAE,IAAI,CAAC23Q,WAAW,CAAC;IAC9Cl7O,SAAS,CAAC5rB,GAAG,CAAC,MAAM,EAAE2qN,IAAI,CAAC;IAE3B,OAAO\u002F+L,SAAS;EAClB;EAEAm7O,cAAcA,CAAA,EAAG;IACf,IAAI,CAAC3uD,MAAM,GAAG,IAAIt9M,GAAG,CAAC,CAAC;IACvB,IAAI,CAACurQ,UAAU,CAAC17C,IAAI,GAAG,UAAU,IAAI,CAACnhN,UAAU,EAAE;IAElD,OAAO,IAAI,CAAC68P,UAAU;EACxB;EAEAW,mBAAmBA,CAAClM,IAAI,EAAE;IACxB,MAAMr0O,GAAG,GAAG,IAAI,CAACsgP,cAAc,CAAC,CAAC;IACjC,KAAK,MAAM19M,IAAI,IAAIyxM,IAAI,CAACzsQ,KAAK,CAAC,UAAU,CAAC,EAAE;MACzC,KAAK,MAAM2Z,IAAI,IAAIqhD,IAAI,CAACh7D,KAAK,CAAC,EAAE,CAAC,EAAE;QACjC,MAAMkB,IAAI,GAAGyY,IAAI,CAAC7W,UAAU,CAAC,CAAC,CAAC;QAC\u002FB,IAAI,IAAI,CAACinN,MAAM,CAACn4M,GAAG,CAAC1Q,IAAI,CAAC,EAAE;UACzB;QACF;QACA,MAAMizO,OAAO,GAAG\u002F7M,GAAG,CAACwgP,WAAW,CAACj\u002FP,IAAI,CAAC;QACrC,MAAM8D,KAAK,GAAGpb,IAAI,CAAC4V,IAAI,CAACk8N,OAAO,CAAC12N,KAAK,CAAC;QACtC,IAAI,CAACssM,MAAM,CAACp4M,GAAG,CAACzQ,IAAI,EAAEuc,KAAK,CAAC;QAC5B,IAAI,CAAC08M,SAAS,GAAG93N,IAAI,CAACC,GAAG,CAACpB,IAAI,EAAE,IAAI,CAACi5N,SAAS,CAAC;QAC\u002FC,IAAI,CAACC,QAAQ,GAAG\u002F3N,IAAI,CAACwF,GAAG,CAAC3G,IAAI,EAAE,IAAI,CAACk5N,QAAQ,CAAC;MAC\u002FC;IACF;IAEA,OAAO,IAAI,CAAC78L,SAAS;EACvB;EAEA,OAAOs7O,oBAAoBA,CAAClyQ,IAAI,EAAE6W,QAAQ,EAAEwqP,QAAQ,EAAE;IAEpD,MAAM,CAAC3+P,EAAE,EAAEC,EAAE,EAAEG,EAAE,EAAEE,EAAE,CAAC,GAAGhD,IAAI;IAC7B,IAAIy0C,CAAC,GAAG3xC,EAAE,GAAGJ,EAAE;IACf,IAAIoxB,CAAC,GAAG9wB,EAAE,GAAGL,EAAE;IAEf,IAAIkU,QAAQ,GAAG,GAAG,KAAK,CAAC,EAAE;MACxB,CAAC49B,CAAC,EAAE3gB,CAAC,CAAC,GAAG,CAACA,CAAC,EAAE2gB,CAAC,CAAC;IACjB;IACA,MAAMi4L,UAAU,GAAG\u002FkP,WAAW,GAAG05Q,QAAQ;IACzC,MAAM8Q,WAAW,GAAGvqR,mBAAmB,GAAGy5Q,QAAQ;IAElD,OAAO;MACL5iB,MAAM,EAAE,CAAC,CAAC,EAAE3qN,CAAC,GAAGq+O,WAAW,GAAGzlC,UAAU,CAAC;MACzCvzL,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE1E,CAAC,EAAE3gB,CAAC,CAAC;MAClBzyB,MAAM,EACJwV,QAAQ,KAAK,CAAC,GAAGD,iBAAiB,CAACC,QAAQ,EAAEid,CAAC,EAAE44M,UAAU,CAAC,GAAGxxO;IAClE,CAAC;EACH;EAEAk3Q,gBAAgBA,CAACtM,IAAI,EAAE9lQ,IAAI,EAAE6W,QAAQ,EAAEwqP,QAAQ,EAAEgR,OAAO,EAAEC,WAAW,EAAE;IACrE,MAAM7gP,GAAG,GAAG,IAAI,CAACsgP,cAAc,CAAC,CAAC;IACjC,MAAMn9M,KAAK,GAAG,EAAE;IAChB,IAAI1I,QAAQ,GAAG,CAAC9d,QAAQ;IACxB,KAAK,MAAMimB,IAAI,IAAIyxM,IAAI,CAACzsQ,KAAK,CAAC,UAAU,CAAC,EAAE;MACzCu7D,KAAK,CAAC94D,IAAI,CAACu4D,IAAI,CAAC;MAGhB,MAAMk+M,SAAS,GAAG9gP,GAAG,CAACwgP,WAAW,CAAC59M,IAAI,CAAC,CAACv9C,KAAK;MAC7Co1C,QAAQ,GAAGxwD,IAAI,CAACwF,GAAG,CAACgrD,QAAQ,EAAEqmN,SAAS,CAAC;MACxC,KAAK,MAAMh4Q,IAAI,IAAI2Z,aAAa,CAACmgD,IAAI,CAAC,EAAE;QACtC,MAAMrhD,IAAI,GAAG5X,MAAM,CAACi+O,aAAa,CAAC9+O,IAAI,CAAC;QACvC,IAAIuc,KAAK,GAAG,IAAI,CAACssM,MAAM,CAACl9M,GAAG,CAAC3L,IAAI,CAAC;QACjC,IAAIuc,KAAK,KAAK5b,SAAS,EAAE;UACvB,MAAMsyO,OAAO,GAAG\u002F7M,GAAG,CAACwgP,WAAW,CAACj\u002FP,IAAI,CAAC;UACrC8D,KAAK,GAAGpb,IAAI,CAAC4V,IAAI,CAACk8N,OAAO,CAAC12N,KAAK,CAAC;UAChC,IAAI,CAACssM,MAAM,CAACp4M,GAAG,CAACzQ,IAAI,EAAEuc,KAAK,CAAC;UAC5B,IAAI,CAAC08M,SAAS,GAAG93N,IAAI,CAACC,GAAG,CAACpB,IAAI,EAAE,IAAI,CAACi5N,SAAS,CAAC;UAC\u002FC,IAAI,CAACC,QAAQ,GAAG\u002F3N,IAAI,CAACwF,GAAG,CAAC3G,IAAI,EAAE,IAAI,CAACk5N,QAAQ,CAAC;QAC\u002FC;MACF;IACF;IACAvnK,QAAQ,IAAIm1M,QAAQ,GAAG,IAAI;IAE3B,MAAM,CAAC3+P,EAAE,EAAEC,EAAE,EAAEG,EAAE,EAAEE,EAAE,CAAC,GAAGhD,IAAI;IAC7B,IAAIy0C,CAAC,GAAG3xC,EAAE,GAAGJ,EAAE;IACf,IAAIoxB,CAAC,GAAG9wB,EAAE,GAAGL,EAAE;IAEf,IAAIkU,QAAQ,GAAG,GAAG,KAAK,CAAC,EAAE;MACxB,CAAC49B,CAAC,EAAE3gB,CAAC,CAAC,GAAG,CAACA,CAAC,EAAE2gB,CAAC,CAAC;IACjB;IAEA,IAAI+9N,MAAM,GAAG,CAAC;IACd,IAAItmN,QAAQ,GAAGzX,CAAC,EAAE;MAChB+9N,MAAM,GAAG\u002F9N,CAAC,GAAGyX,QAAQ;IACvB;IACA,IAAIumN,MAAM,GAAG,CAAC;IACd,MAAM\u002FlC,UAAU,GAAG\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\u002FsB,MAAM,CAACC,GAAG,CAAC,CAAC;EAC\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\u002FB,OAAO,GAAG,IAAI,CAACy\u002FB,aAAa,CAACltQ,CAAC,EAAEqP,CAAC,CAAC;YACxC,IAAIo+N,OAAO,KAAK,IAAI,EAAE;cACpB,IAAI,CAAC1nN,OAAO,CAACmmP,kBAAkB,CAACO,gBAAgB,CAAC;cACjD;YACF;YACA,IAAI6B,QAAQ,GAAG,KAAK;YACpB,IACEtuQ,CAAC,CAACwK,SAAS,CAAC6E,CAAC,GAAGo+N,OAAO,CAACggC,MAAM,EAAEp+P,CAAC,GAAGo+N,OAAO,CAACggC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,EAChE;cACAa,QAAQ,GAAG,IAAI;YACjB,CAAC,MAAM,IACLtuQ,CAAC,CAACwK,SAAS,CAAC6E,CAAC,GAAGo+N,OAAO,CAACggC,MAAM,EAAEp+P,CAAC,GAAGo+N,OAAO,CAACggC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAC\u002FD;cACA,IAAI,CAAC1nP,OAAO,CAACmmP,kBAAkB,CAACU,mBAAmB,CAAC;cACpD;YACF;YACA,IAAI,CAAC2B,cAAc,CAAC9gC,OAAO,CAAC\u002F7O,IAAI,EAAE+7O,OAAO,CAAC0\u002FB,UAAU,EAAEmB,QAAQ,CAAC;YAC\u002FDj\u002FP,CAAC,IAAIo+N,OAAO,CAACggC,MAAM,IAAIa,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;YACxC;QACJ;MACF,CAAC,MAAM;QACL,OAAOj\u002FP,CAAC,GAAGrP,CAAC,CAAC\u002FP,MAAM,IAAI+P,CAAC,CAACqP,CAAC,CAAC,KAAK,GAAG,EAAE;UACnCA,CAAC,EAAE;QACL;QACA,MAAMguP,IAAI,GAAGr9P,CAAC,CAACwK,SAAS,CAACzX,CAAC,EAAEsc,CAAC,CAAC;QAC9B,IAAI,CAACm\u002FP,MAAM,CAAC,IAAI,CAACxB,gBAAgB,CAAC3P,IAAI,CAAC,CAAC;MAC1C;MACAtqQ,CAAC,GAAGsc,CAAC;IACP;EACF;EAEA49P,eAAeA,CAACv7Q,IAAI,EAAE;IACpB,OAAO,IAAIA,IAAI,GAAG;EACpB;EAEAq8Q,IAAIA,CAACr8Q,IAAI,EAAEV,KAAK,EAAE,CAAC;EAEnBg9Q,SAASA,CAAC3Q,IAAI,EAAE,CAAC;EAEjB4Q,OAAOA,CAAC5Q,IAAI,EAAE,CAAC;EAEfgR,SAASA,CAACD,cAAc,EAAE,CAAC;EAE3BI,MAAMA,CAACnR,IAAI,EAAE,CAAC;EAEdkR,cAAcA,CAAC78Q,IAAI,EAAEy7Q,UAAU,EAAEroQ,OAAO,EAAE,CAAC;EAE3CgpQ,YAAYA,CAACp8Q,IAAI,EAAE,CAAC;EAEpBq0B,OAAOA,CAACj0B,IAAI,EAAE,CAAC;AACjB;AAEA,MAAM28Q,aAAa,CAAC;EAClB78Q,WAAWA,CAAC88Q,QAAQ,EAAEC,SAAS,EAAE;IAC\u002FB,IAAI,CAACD,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACC,SAAS,GAAGA,SAAS;IAE1Bz9Q,MAAM,CAACC,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE;MAAEH,KAAK,EAAE,IAAI;MAAEM,QAAQ,EAAE;IAAK,CAAC,CAAC;EAC5E;EAEA,IAAIs9Q,UAAUA,CAAA,EAAG;IACf,OAAO,IAAI,CAACC,UAAU,GAAG,CAAC,CAAC;EAC7B;EAEA,IAAIC,WAAWA,CAAA,EAAG;IAChB,MAAMD,UAAU,GAAG,IAAI,CAACE,UAAU,CAACF,UAAU;IAC7C,IAAI,CAACA,UAAU,EAAE;MACf,OAAOp8Q,SAAS;IAClB;IACA,MAAMq+B,KAAK,GAAG+9O,UAAU,CAAC11M,OAAO,CAAC,IAAI,CAAC;IACtC,IAAIroC,KAAK,KAAK,CAAC,CAAC,EAAE;MAChB,OAAOr+B,SAAS;IAClB;IACA,OAAOo8Q,UAAU,CAAC\u002F9O,KAAK,GAAG,CAAC,CAAC;EAC9B;EAEA,IAAIspO,WAAWA,CAAA,EAAG;IAChB,IAAI,CAAC,IAAI,CAACyU,UAAU,EAAE;MACpB,OAAO,IAAI,CAACF,SAAS,IAAI,EAAE;IAC7B;IACA,OAAO,IAAI,CAACE,UAAU,CAACzkQ,GAAG,CAAC4kQ,KAAK,IAAIA,KAAK,CAAC5U,WAAW,CAAC,CAAC9mQ,IAAI,CAAC,EAAE,CAAC;EACjE;EAEA,IAAIu9B,QAAQA,CAAA,EAAG;IACb,OAAO,IAAI,CAACg+O,UAAU,IAAI,EAAE;EAC9B;EAEAI,aAAaA,CAAA,EAAG;IACd,OAAO,IAAI,CAACJ,UAAU,EAAE5+Q,MAAM,GAAG,CAAC;EACpC;EAcAi\u002FQ,UAAUA,CAACC,KAAK,EAAEz4Q,GAAG,EAAE;IACrB,IAAIA,GAAG,IAAIy4Q,KAAK,CAACl\u002FQ,MAAM,EAAE;MACvB,OAAO,IAAI;IACb;IAEA,MAAMoa,SAAS,GAAG8kQ,KAAK,CAACz4Q,GAAG,CAAC;IAC5B,IAAI2T,SAAS,CAAC3Y,IAAI,CAAC5B,UAAU,CAAC,GAAG,CAAC,IAAI4G,GAAG,GAAGy4Q,KAAK,CAACl\u002FQ,MAAM,GAAG,CAAC,EAAE;MAG5D,OAAO,IAAI,CAACi\u002FQ,UAAU,CAACC,KAAK,EAAEz4Q,GAAG,GAAG,CAAC,CAAC;IACxC;IACA,MAAMg7C,KAAK,GAAG,EAAE;IAChB,IAAIlf,IAAI,GAAG,IAAI;IAEf,OAAO,IAAI,EAAE;MACX,IAAInoB,SAAS,CAAC3Y,IAAI,KAAK8gC,IAAI,CAACk8O,QAAQ,EAAE;QACpC,IAAIrkQ,SAAS,CAAC3T,GAAG,KAAK,CAAC,EAAE;UACvB,MAAMhG,GAAG,GAAG8hC,IAAI,CAAC08O,UAAU,CAACC,KAAK,EAAEz4Q,GAAG,GAAG,CAAC,CAAC;UAC3C,IAAIhG,GAAG,KAAK,IAAI,EAAE;YAChB,OAAOA,GAAG;UACZ;QACF,CAAC,MAAM,IAAIghD,KAAK,CAACzhD,MAAM,KAAK,CAAC,EAAE;UAC7B,OAAO,IAAI;QACb,CAAC,MAAM;UACL,MAAM,CAAC4T,MAAM,CAAC,GAAG6tC,KAAK,CAAC3gB,GAAG,CAAC,CAAC;UAC5B,IAAIq+O,UAAU,GAAG,CAAC;UAClB,KAAK,MAAMJ,KAAK,IAAInrQ,MAAM,CAACgrQ,UAAU,EAAE;YACrC,IAAIxkQ,SAAS,CAAC3Y,IAAI,KAAKs9Q,KAAK,CAACN,QAAQ,EAAE;cACrC,IAAIU,UAAU,KAAK\u002FkQ,SAAS,CAAC3T,GAAG,EAAE;gBAChC,OAAOs4Q,KAAK,CAACE,UAAU,CAACC,KAAK,EAAEz4Q,GAAG,GAAG,CAAC,CAAC;cACzC;cACA04Q,UAAU,EAAE;YACd;UACF;UAGA,OAAO58O,IAAI,CAAC08O,UAAU,CAACC,KAAK,EAAEz4Q,GAAG,GAAG,CAAC,CAAC;QACxC;MACF;MAEA,IAAI87B,IAAI,CAACq8O,UAAU,EAAE5+Q,MAAM,GAAG,CAAC,EAAE;QAC\u002FByhD,KAAK,CAACr+C,IAAI,CAAC,CAACm\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\u002FC,MAAMk\u002FO,WAAW,GAAG,IAAI,CAACP,gBAAgB,CAAC9kO,EAAE,CAAC,CAAC,CAAC,CAAC;IAChD,IAAI,CAACqlO,WAAW,EAAE;MAChB,OAAO,IAAI;IACb;IACA,KAAK,MAAMC,SAAS,IAAID,WAAW,CAACpB,UAAU,EAAE;MAC9CqB,SAAS,CAACnB,UAAU,GAAGkB,WAAW;IACpC;IACA,OAAOA,WAAW;EACpB;EAEAlqP,OAAOA,CAACj0B,IAAI,EAAE;IACZ,IAAI,CAAC89Q,UAAU,GAAG99Q,IAAI;EACxB;AACF;;;;;;;AC\u002FekD;AAElD,MAAMq+Q,cAAc,CAAC;EACnBv+Q,WAAWA,CAAC4V,IAAI,EAAE;IAEhBA,IAAI,GAAG,IAAI,CAAC4oQ,OAAO,CAAC5oQ,IAAI,CAAC;IAGzB,MAAMmwD,MAAM,GAAG,IAAI43M,eAAe,CAAC;MAAEE,aAAa,EAAE;IAAK,CAAC,CAAC;IAC3D,MAAMY,WAAW,GAAG14M,MAAM,CAACo4M,eAAe,CAACvoQ,IAAI,CAAC;IAEhD,IAAI,CAAC8oQ,YAAY,GAAG,IAAIjzQ,GAAG,CAAC,CAAC;IAC7B,IAAI,CAACkzQ,KAAK,GAAG\u002FoQ,IAAI;IAEjB,IAAI6oQ,WAAW,EAAE;MACf,IAAI,CAACG,MAAM,CAACH,WAAW,CAAC;IAC1B;EACF;EAEAD,OAAOA,CAAC5oQ,IAAI,EAAE;IAEZ,OAAOA,IAAI,CACR28B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CACrBvoC,UAAU,CAAC,qBAAqB,EAAE,UAAUw8P,GAAG,EAAElgN,KAAK,EAAE;MACvD,MAAM1lD,KAAK,GAAG0lD,KAAK,CAChBt8C,UAAU,CAAC,0BAA0B,EAAE,UAAU9J,IAAI,EAAEi0Q,EAAE,EAAE0K,EAAE,EAAEC,EAAE,EAAE;QAClE,OAAO\u002F9Q,MAAM,CAACC,YAAY,CAACmzQ,EAAE,GAAG,EAAE,GAAG0K,EAAE,GAAG,CAAC,GAAGC,EAAE,GAAG,CAAC,CAAC;MACvD,CAAC,CAAC,CACD90Q,UAAU,CAAC,0BAA0B,EAAE,UAAUpI,GAAG,EAAE9B,IAAI,EAAE;QAC3D,QAAQA,IAAI;UACV,KAAK,KAAK;YACR,OAAO,GAAG;UACZ,KAAK,MAAM;YACT,OAAO,GAAG;UACZ,KAAK,IAAI;YACP,OAAO,GAAG;UACZ,KAAK,IAAI;YACP,OAAO,GAAG;UACZ,KAAK,MAAM;YACT,OAAO,GAAG;QACd;QACA,MAAM,IAAItC,KAAK,CAAC,YAAYsC,IAAI,iBAAiB,CAAC;MACpD,CAAC,CAAC;MAEJ,MAAMi\u002FQ,OAAO,GAAG,CAAC,GAAG,CAAC;MACrB,KAAK,IAAI59Q,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAGtJ,KAAK,CAACvC,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,IAAI,CAAC,EAAE;QACjD,MAAMjB,IAAI,GAAGU,KAAK,CAACkB,UAAU,CAACX,CAAC,CAAC,GAAG,GAAG,GAAGP,KAAK,CAACkB,UAAU,CAACX,CAAC,GAAG,CAAC,CAAC;QAChE,IACEjB,IAAI,IAAkB,EAAE,IACxBA,IAAI,GAAkB,GAAG,IACzBA,IAAI,KAAiB,EAAE,IACvBA,IAAI,KAAiB,EAAE,IACvBA,IAAI,KAAiB,EAAE,EACvB;UACA6+Q,OAAO,CAACt9Q,IAAI,CAACV,MAAM,CAACC,YAAY,CAACd,IAAI,CAAC,CAAC;QACzC,CAAC,MAAM;UACL6+Q,OAAO,CAACt9Q,IAAI,CACV,KAAK,GAAG,CAAC,OAAO,GAAGvB,IAAI,EAAE6D,QAAQ,CAAC,EAAE,CAAC,CAAC6U,SAAS,CAAC,CAAC,CAAC,GAAG,GACvD,CAAC;QACH;MACF;MACA,OAAOmmQ,OAAO,CAACr9Q,IAAI,CAAC,EAAE,CAAC;IACzB,CAAC,CAAC;EACN;EAEAs9Q,YAAYA,CAACjmQ,KAAK,EAAE;IAClB,MAAMjZ,IAAI,GAAGiZ,KAAK,CAAC+jQ,QAAQ;IAC3B,IAAIh9Q,IAAI,KAAK,SAAS,IAAIA,IAAI,KAAK,SAAS,IAAIA,IAAI,KAAK,SAAS,EAAE;MAClE,OAAO,IAAI;IACb;IACA,OAAOiZ,KAAK,CAACkkQ,UAAU,CAACnhP,MAAM,CAAC8E,IAAI,IAAIA,IAAI,CAACk8O,QAAQ,KAAK,QAAQ,CAAC;EACpE;EAEAmC,WAAWA,CAAClmQ,KAAK,EAAE;IACjB,IAAI,CAACA,KAAK,CAACskQ,aAAa,CAAC,CAAC,EAAE;MAC1B;IACF;IAEA,MAAM,CAAC6B,OAAO,CAAC,GAAGnmQ,KAAK,CAACkkQ,UAAU;IAClC,MAAMx8N,QAAQ,GAAG,IAAI,CAACu+N,YAAY,CAACE,OAAO,CAAC,IAAI,EAAE;IAEjD,IAAI,CAACR,YAAY,CAAC\u002FtQ,GAAG,CACnBoI,KAAK,CAAC+jQ,QAAQ,EACdr8N,QAAQ,CAACjoC,GAAG,CAACooB,IAAI,IAAIA,IAAI,CAAC4nO,WAAW,CAAC2W,IAAI,CAAC,CAAC,CAC9C,CAAC;EACH;EAEAP,MAAMA,CAACH,WAAW,EAAE;IAClB,IAAIW,GAAG,GAAGX,WAAW,CAACL,eAAe;IAErC,IAAIgB,GAAG,CAACtC,QAAQ,KAAK,SAAS,EAAE;MAE9BsC,GAAG,GAAGA,GAAG,CAACpC,UAAU;MACpB,OAAOoC,GAAG,IAAIA,GAAG,CAACtC,QAAQ,KAAK,SAAS,EAAE;QACxCsC,GAAG,GAAGA,GAAG,CAAClC,WAAW;MACvB;IACF;IAEA,IAAI,CAACkC,GAAG,IAAIA,GAAG,CAACtC,QAAQ,KAAK,SAAS,IAAI,CAACsC,GAAG,CAAC\u002FB,aAAa,CAAC,CAAC,EAAE;MAC9D;IACF;IAEA,KAAK,MAAMlD,IAAI,IAAIiF,GAAG,CAACnC,UAAU,EAAE;MACjC,IAAI9C,IAAI,CAAC2C,QAAQ,KAAK,iBAAiB,EAAE;QACvC;MACF;MAEA,KAAK,MAAM\u002FjQ,KAAK,IAAIohQ,IAAI,CAAC8C,UAAU,EAAE;QACnC,MAAMn9Q,IAAI,GAAGiZ,KAAK,CAAC+jQ,QAAQ;QAC3B,QAAQh9Q,IAAI;UACV,KAAK,OAAO;YACV;UACF,KAAK,YAAY;UACjB,KAAK,YAAY;YACf,IAAI,CAACm\u002FQ,WAAW,CAAClmQ,KAAK,CAAC;YACvB;QACJ;QACA,IAAI,CAAC2lQ,YAAY,CAAC\u002FtQ,GAAG,CAAC7Q,IAAI,EAAEiZ,KAAK,CAACyvP,WAAW,CAAC2W,IAAI,CAAC,CAAC,CAAC;MACvD;IACF;EACF;EAEA,IAAI\u002FE,YAAYA,CAAA,EAAG;IACjB,OAAO;MACLiF,UAAU,EAAE,IAAI,CAACX,YAAY;MAC7BY,OAAO,EAAE,IAAI,CAACX;IAChB,CAAC;EACH;AACF;;;;AChI8E;AACP;AACI;AACxB;AAEnD,MAAMY,SAAS,GAAG,EAAE;AAEpB,MAAMC,iBAAiB,GAAG;EACxBC,YAAY,EAAE,CAAC;EACfC,cAAc,EAAE,CAAC;EACjBC,MAAM,EAAE,CAAC;EACTC,UAAU,EAAE,CAAC;EACbC,OAAO,EAAE;AACX,CAAC;AAED,MAAMC,cAAc,CAAC;EACnB9\u002FQ,WAAWA,CAACsP,IAAI,EAAEywQ,QAAQ,EAAEC,OAAO,EAAE;IACnC,IAAI,CAAC1wQ,IAAI,GAAGA,IAAI;IAChB,IAAI,CAAC+B,IAAI,GAAG0uQ,QAAQ;IACpB,IAAI,CAACluQ,GAAG,GAAGmuQ,OAAO,YAAY\u002FvQ,GAAG,GAAG+vQ,OAAO,GAAG,IAAI;IAClD,IAAI,CAACC,OAAO,GAAG,IAAIx0Q,GAAG,CAAC,CAAC;IACxB,IAAI,CAACy0Q,eAAe,GAAG,IAAI;EAC7B;EAEAC,IAAIA,CAAA,EAAG;IACL,IAAI,CAACC,WAAW,CAAC,CAAC;EACpB;EAEA,CAACC,WAAWC,CAACC,OAAO,EAAEryO,EAAE,EAAE9gD,IAAI,EAAE;IAC9B,IAAI,EAAEmzR,OAAO,YAAYtwQ,GAAG,CAAC,IAAIi+B,EAAE,GAAG,CAAC,EAAE;MACvC;IACF;IACA,IAAI,CAACgyO,eAAe,KAAK,IAAI3tQ,WAAW,CAAC,CAAC;IAC1C,IAAIioN,GAAG,GAAG,IAAI,CAAC0lD,eAAe,CAACr0Q,GAAG,CAAC00Q,OAAO,CAAC;IAC3C,IAAI,CAAC\u002FlD,GAAG,EAAE;MACRA,GAAG,GAAG,EAAE;MACR,IAAI,CAAC0lD,eAAe,CAAC9tQ,GAAG,CAACmuQ,OAAO,EAAE\u002FlD,GAAG,CAAC;IACxC;IACAA,GAAG,CAAC\u002F4N,IAAI,CAAC,CAACysC,EAAE,EAAE9gD,IAAI,CAAC,CAAC;EACtB;EAEAozR,qBAAqBA,CAACD,OAAO,EAAEryO,EAAE,EAAE;IACjC,IAAI,CAAC,CAACmyO,WAAW,CAACE,OAAO,EAAEryO,EAAE,EAAEsxO,iBAAiB,CAACI,UAAU,CAAC;EAC9D;EAEAQ,WAAWA,CAAA,EAAG;IACZ,MAAMK,WAAW,GAAG,IAAI,CAACpvQ,IAAI,CAACxF,GAAG,CAAC,SAAS,CAAC;IAC5C,IAAI,EAAE40Q,WAAW,YAAYpxQ,IAAI,CAAC,EAAE;MAClC;IACF;IACA,KAAK,MAAM,CAACkB,GAAG,EAAEnR,KAAK,CAAC,IAAIqhR,WAAW,EAAE;MACtC,IAAIrhR,KAAK,YAAY6P,IAAI,EAAE;QACzB,IAAI,CAACgxQ,OAAO,CAACtvQ,GAAG,CAACJ,GAAG,EAAEnR,KAAK,CAACU,IAAI,CAAC;MACnC;IACF;EACF;EAEA,aAAa4gR,sBAAsBA,CAAC;IAClCC,UAAU;IACVC,UAAU;IACV7kQ;EACF,CAAC,EAAE;IACD,IAAI,EAAE4kQ,UAAU,YAAY1wQ,GAAG,CAAC,EAAE;MAChC3S,IAAI,CAAC,oDAAoD,CAAC;MAC1D,OAAO,KAAK;IACd;IAEA,IAAIujR,OAAO,GAAG,CAAC;IACf,IAAIC,kBAAkB,GAAG,IAAI;IAE7B,KAAK,MAAM,CAAC7kQ,SAAS,EAAEwxP,QAAQ,CAAC,IAAI1xP,oBAAoB,EAAE;MACxD,MAAM;QAAElK,GAAG,EAAE0uQ;MAAQ,CAAC,GAAG,MAAMK,UAAU,CAACG,OAAO,CAAC9kQ,SAAS,CAAC;MAC5D,IAAI,EAAEskQ,OAAO,YAAYtwQ,GAAG,CAAC,EAAE;QAC7B3S,IAAI,CAAC,qCAAqC2e,SAAS,cAAc,CAAC;QAClE6kQ,kBAAkB,GAAG,IAAI;QACzB;MACF;MACA,KAAK,MAAM5nQ,OAAO,IAAIu0P,QAAQ,EAAE;QAC9B,IAAIv0P,OAAO,CAAC8nQ,iBAAiB,EAAE5zR,IAAI,EAAE;UAEnC8rB,OAAO,CAAC+nQ,YAAY,GAAGJ,OAAO,EAAE;UAChCC,kBAAkB,GAAG,KAAK;QAC5B;MACF;IACF;IAEA,IAAIA,kBAAkB,EAAE;MACtB,KAAK,MAAMrT,QAAQ,IAAI1xP,oBAAoB,CAACrL,MAAM,CAAC,CAAC,EAAE;QACpD,KAAK,MAAMwI,OAAO,IAAIu0P,QAAQ,EAAE;UAC9B,OAAOv0P,OAAO,CAAC+nQ,YAAY;QAC7B;MACF;MACA,OAAO,KAAK;IACd;IAEA,OAAO,IAAI;EACb;EAEA,aAAaC,mBAAmBA,CAAC;IAC\u002FBnlQ,oBAAoB;IACpBzM,IAAI;IACJqxQ,UAAU;IACVC,UAAU;IACVO;EACF,CAAC,EAAE;IACD,MAAMvI,IAAI,GAAG,MAAMgI,UAAU,CAACQ,aAAa,CAAC,WAAW,CAAC;IACxD,MAAMj4N,KAAK,GAAG,IAAI52C,WAAW,CAAC,CAAC;IAC\u002FB42C,KAAK,CAAC\u002F2C,GAAG,CAACuuQ,UAAU,EAAE\u002FH,IAAI,CAAC;IAE3B,MAAMyI,iBAAiB,GAAG\u002FxQ,IAAI,CAACgyQ,kBAAkB,CAAC,CAAC;IACnD1I,IAAI,CAACjoQ,GAAG,CAAC,gBAAgB,EAAE0wQ,iBAAiB,CAAC;IAE7C,MAAME,cAAc,GAAG,IAAIlyQ,IAAI,CAACC,IAAI,CAAC;IACrCiyQ,cAAc,CAAC5wQ,GAAG,CAAC,MAAM,EAAE1B,IAAI,CAACpD,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACtD,MAAM21Q,aAAa,GAAGlyQ,IAAI,CAACgyQ,kBAAkB,CAAC,CAAC;IAC\u002FCC,cAAc,CAAC5wQ,GAAG,CAAC,YAAY,EAAE6wQ,aAAa,CAAC;IAC\u002FC,MAAMzI,IAAI,GAAG,EAAE;IACfwI,cAAc,CAAC5wQ,GAAG,CAAC,GAAG,EAAEooQ,IAAI,CAAC;IAC7B5vN,KAAK,CAAC\u002F2C,GAAG,CAACivQ,iBAAiB,EAAEE,cAAc,CAAC;IAE5C,MAAME,UAAU,GAAG,IAAIpyQ,IAAI,CAACC,IAAI,CAAC;IACjC,MAAMoyQ,IAAI,GAAG,EAAE;IACfD,UAAU,CAAC9wQ,GAAG,CAAC,MAAM,EAAE+wQ,IAAI,CAAC;IAE5B,MAAMb,OAAO,GAAG,MAAM,IAAI,CAAC,CAACc,SAAS,CAAC;MACpC5lQ,oBAAoB;MACpBslQ,iBAAiB;MACjBE,cAAc,EAAE,IAAI;MACpBxI,IAAI;MACJ2I,IAAI;MACJpyQ,IAAI;MACJsxQ,UAAU;MACVO,OAAO;MACPh4N;IACF,CAAC,CAAC;IACFo4N,cAAc,CAAC5wQ,GAAG,CAAC,mBAAmB,EAAEkwQ,OAAO,CAAC;IAEhD13N,KAAK,CAAC\u002F2C,GAAG,CAACovQ,aAAa,EAAEC,UAAU,CAAC;IAEpC,KAAK,MAAM,CAAC5vQ,GAAG,EAAE3S,GAAG,CAAC,IAAIiqD,KAAK,CAACz2C,KAAK,CAAC,CAAC,EAAE;MACtCyuQ,OAAO,CAAC\u002FuQ,GAAG,CAACP,GAAG,EAAE;QACf+D,IAAI,EAAE1W;MACR,CAAC,CAAC;IACJ;EACF;EAEA,MAAM0iR,mBAAmBA,CAAC;IAAEhB,UAAU;IAAE7kQ;EAAqB,CAAC,EAAE;IAC9D,IAAI,CAAC,IAAI,CAAClK,GAAG,EAAE;MACbvU,IAAI,CAAC,mDAAmD,CAAC;MACzD,OAAO,KAAK;IACd;IAEA,IAAIujR,OAAO,GAAG,IAAI,CAACxvQ,IAAI,CAACxF,GAAG,CAAC,mBAAmB,CAAC;IAChD,IAAI,CAAC9O,MAAM,CAACC,SAAS,CAAC6jR,OAAO,CAAC,IAAIA,OAAO,GAAG,CAAC,EAAE;MAC7CvjR,IAAI,CAAC,kDAAkD,CAAC;MACxD,OAAO,KAAK;IACd;IAEA,MAAMmkR,UAAU,GAAG,IAAI,CAACpwQ,IAAI,CAACxF,GAAG,CAAC,YAAY,CAAC;IAC9C,IAAI,EAAE41Q,UAAU,YAAYpyQ,IAAI,CAAC,EAAE;MACjC\u002FR,IAAI,CAAC,yDAAyD,CAAC;MAC\u002FD,OAAO,KAAK;IACd;IACA,MAAMokR,IAAI,GAAGD,UAAU,CAAC51Q,GAAG,CAAC,MAAM,CAAC;IACnC,IAAI,CAACjI,KAAK,CAAC4I,OAAO,CAACk1Q,IAAI,CAAC,EAAE;MACxBpkR,IAAI,CAAC,qDAAqD,CAAC;MAC3D,OAAO,KAAK;IACd;IACA,MAAMukR,UAAU,GAAG,IAAItI,UAAU,CAACkI,UAAU,EAAE,IAAI,CAACnyQ,IAAI,CAAC;IAExD,KAAK,MAAM2M,SAAS,IAAIF,oBAAoB,CAAC9Z,IAAI,CAAC,CAAC,EAAE;MACnD,MAAM;QAAE6\u002FQ;MAAS,CAAC,GAAG,MAAMlB,UAAU,CAACG,OAAO,CAAC9kQ,SAAS,CAAC;MACxD,IAAI,CAAC6lQ,QAAQ,CAAClxQ,GAAG,CAAC,eAAe,CAAC,EAAE;QAGlC;MACF;MACA,MAAMs9B,EAAE,GAAG4zO,QAAQ,CAACj2Q,GAAG,CAAC,eAAe,CAAC;MACxC,IAAI,CAAC9O,MAAM,CAACC,SAAS,CAACkxC,EAAE,CAAC,IAAI,CAACtqC,KAAK,CAAC4I,OAAO,CAACq1Q,UAAU,CAACh2Q,GAAG,CAACqiC,EAAE,CAAC,CAAC,EAAE;QAC\u002FD5wC,IAAI,CAAC,qCAAqC2e,SAAS,kBAAkB,CAAC;QACtE,OAAO,KAAK;MACd;IACF;IAEA,IAAI6kQ,kBAAkB,GAAG,IAAI;IAC7B,KAAK,MAAM,CAAC7kQ,SAAS,EAAEwxP,QAAQ,CAAC,IAAI1xP,oBAAoB,EAAE;MACxD,MAAM;QAAE+lQ;MAAS,CAAC,GAAG,MAAMlB,UAAU,CAACG,OAAO,CAAC9kQ,SAAS,CAAC;MACxD6jQ,cAAc,CAAC,CAACiC,cAAc,CAAC;QAC7BtU,QAAQ;QACRn+P,IAAI,EAAE,IAAI,CAACA,IAAI;QACfwyQ,QAAQ;QACRD;MACF,CAAC,CAAC;MAEF,KAAK,MAAM3oQ,OAAO,IAAIu0P,QAAQ,EAAE;QAC9B,IAAIv0P,OAAO,CAAC8nQ,iBAAiB,EAAE5zR,IAAI,EAAE;UAGnC,IAAI,EAAE8rB,OAAO,CAAC8nQ,iBAAiB,CAACgB,YAAY,IAAI,CAAC,CAAC,EAAE;YAElD9oQ,OAAO,CAAC+nQ,YAAY,GAAGJ,OAAO,EAAE;UAClC;UACAC,kBAAkB,GAAG,KAAK;QAC5B;MACF;IACF;IAEA,IAAIA,kBAAkB,EAAE;MACtB,KAAK,MAAMrT,QAAQ,IAAI1xP,oBAAoB,CAACrL,MAAM,CAAC,CAAC,EAAE;QACpD,KAAK,MAAMwI,OAAO,IAAIu0P,QAAQ,EAAE;UAC9B,OAAOv0P,OAAO,CAAC+nQ,YAAY;UAC3B,OAAO\u002FnQ,OAAO,CAAC+oQ,gBAAgB;QACjC;MACF;MACA,OAAO,KAAK;IACd;IAEA,OAAO,IAAI;EACb;EAEA,MAAMC,mBAAmBA,CAAC;IAAEnmQ,oBAAoB;IAAE6kQ,UAAU;IAAEO;EAAQ,CAAC,EAAE;IACvE,MAAM;MAAEtvQ,GAAG,EAAEwvQ,iBAAiB;MAAE\u002FxQ;IAAK,CAAC,GAAG,IAAI;IAC7C,MAAMiyQ,cAAc,GAAG,IAAI,CAAClwQ,IAAI,CAACI,KAAK,CAAC,CAAC;IACxC,MAAM03C,KAAK,GAAG,IAAI52C,WAAW,CAAC,CAAC;IAC\u002FB42C,KAAK,CAAC\u002F2C,GAAG,CAACivQ,iBAAiB,EAAEE,cAAc,CAAC;IAE5C,IAAIC,aAAa,GAAGD,cAAc,CAACjxQ,MAAM,CAAC,YAAY,CAAC;IACvD,IAAImxQ,UAAU;IACd,IAAID,aAAa,YAAYvxQ,GAAG,EAAE;MAChCwxQ,UAAU,GAAGnyQ,IAAI,CAACY,KAAK,CAACsxQ,aAAa,CAAC;IACxC,CAAC,MAAM;MACLC,UAAU,GAAGD,aAAa;MAC1BA,aAAa,GAAGlyQ,IAAI,CAACgyQ,kBAAkB,CAAC,CAAC;MACzCC,cAAc,CAAC5wQ,GAAG,CAAC,YAAY,EAAE6wQ,aAAa,CAAC;IACjD;IACAC,UAAU,GAAGA,UAAU,CAAChwQ,KAAK,CAAC,CAAC;IAC\u002FB03C,KAAK,CAAC\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\u002FB,MAAM,CAAC9+Q,QAAQ,CAAC,CAAC;IAC\u002FB;IACA,MAAMg1Q,IAAI,GAAG,IAAI,CAAC1nQ,IAAI,CAACxF,GAAG,CAAC,GAAG,CAAC;IAC\u002FB,IAAIjI,KAAK,CAAC4I,OAAO,CAACusQ,IAAI,CAAC,EAAE;MACvB,KAAK,MAAMC,GAAG,IAAID,IAAI,EAAE;QACtB,MAAM7\u002FP,OAAO,GAAG,IAAI,CAAC2rQ,QAAQ,CAACD,SAAS,EAAE,IAAI,CAACt1Q,IAAI,CAAC+tB,UAAU,CAAC27O,GAAG,CAAC,CAAC;QACnE,IAAI9\u002FP,OAAO,EAAE;UACX,IAAI,CAAC6\u002FP,IAAI,CAACt3Q,IAAI,CAACyX,OAAO,CAAC;QACzB;MACF;IACF,CAAC,MAAM;MACL,MAAMA,OAAO,GAAG,IAAI,CAAC2rQ,QAAQ,CAACD,SAAS,EAAE7L,IAAI,CAAC;MAC9C,IAAI7\u002FP,OAAO,EAAE;QACX,IAAI,CAAC6\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\u002FC,GAAG,CAAC4\u002FC,IAAI,GAAGA,IAAI;QACjB,CAAC,MAAM;UACL,MAAMriC,KAAK,GAAGxV,CAAC,CAAC4E,GAAG,CAAC,OAAO,CAAC;UAC5B,MAAM6Q,MAAM,GAAGzV,CAAC,CAAC4E,GAAG,CAAC,QAAQ,CAAC;UAC9B,IACE,OAAO4Q,KAAK,KAAK,QAAQ,IACzBA,KAAK,GAAG,CAAC,IACT,OAAOC,MAAM,KAAK,QAAQ,IAC1BA,MAAM,GAAG,CAAC,EACV;YACAxd,GAAG,CAAC4\u002FC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAEriC,KAAK,EAAEC,MAAM,CAAC;UAClC;QACF;MAMF;MAEA,MAAM21B,IAAI,GAAGzR,IAAI,CAACvvB,IAAI,CAACxF,GAAG,CAAC,MAAM,CAAC;MAClC,IAAI,OAAOwmC,IAAI,KAAK,QAAQ,EAAE;QAC5BnzC,GAAG,CAACmzC,IAAI,GAAG7oC,iBAAiB,CAAC6oC,IAAI,CAAC;MACpC;MAEA,KAAK,MAAM2mO,GAAG,IAAIp4O,IAAI,CAACm4O,IAAI,EAAE;QAC3B,MAAMqM,UAAU,GACdpM,GAAG,CAAC5rR,IAAI,KAAKoyR,iBAAiB,CAACK,OAAO,GAAG7G,GAAG,CAACmE,UAAU,GAAG,IAAI;QAChE,IAAIiI,UAAU,EAAE;UACdD,kBAAkB,CAACC,UAAU,EAAElmR,GAAG,EAAEpC,KAAK,GAAG,CAAC,CAAC;UAC9C;QACF,CAAC,MAAM,IACLk8Q,GAAG,CAAC5rR,IAAI,KAAKoyR,iBAAiB,CAACC,YAAY,IAC3CzG,GAAG,CAAC5rR,IAAI,KAAKoyR,iBAAiB,CAACE,cAAc,EAC7C;UACAxgR,GAAG,CAAC+\u002FB,QAAQ,CAACx9B,IAAI,CAAC;YAChBrU,IAAI,EAAE,SAAS;YACf8gD,EAAE,EAAE,IAAI8qO,GAAG,CAAC4L,SAAS,MAAM5L,GAAG,CAAC\u002FK,IAAI;UACrC,CAAC,CAAC;QACJ,CAAC,MAAM,IAAI+K,GAAG,CAAC5rR,IAAI,KAAKoyR,iBAAiB,CAACG,MAAM,EAAE;UAChDzgR,GAAG,CAAC+\u002FB,QAAQ,CAACx9B,IAAI,CAAC;YAChBrU,IAAI,EAAE,QAAQ;YACd8gD,EAAE,EAAE8qO,GAAG,CAAC+L;UACV,CAAC,CAAC;QACJ,CAAC,MAAM,IAAI\u002FL,GAAG,CAAC5rR,IAAI,KAAKoyR,iBAAiB,CAACI,UAAU,EAAE;UACpD1gR,GAAG,CAAC+\u002FB,QAAQ,CAACx9B,IAAI,CAAC;YAChBrU,IAAI,EAAE,YAAY;YAClB8gD,EAAE,EAAE,GAAG\u002FhC,gBAAgB,GAAG6sQ,GAAG,CAAC+L,QAAQ;UACxC,CAAC,CAAC;QACJ;MACF;IACF;IAEA,MAAMnM,IAAI,GAAGt5Q,MAAM,CAACuP,MAAM,CAAC,IAAI,CAAC;IAChC+pQ,IAAI,CAAC35O,QAAQ,GAAG,EAAE;IAClB25O,IAAI,CAAC8L,IAAI,GAAG,MAAM;IAClB,KAAK,MAAMtH,KAAK,IAAI,IAAI,CAAC9e,KAAK,EAAE;MAC9B,IAAI,CAAC8e,KAAK,EAAE;QACV;MACF;MACA+H,kBAAkB,CAAC\u002FH,KAAK,EAAExE,IAAI,CAAC;IACjC;IACA,OAAOA,IAAI;EACb;AACF;;;;;;;;;;;;;;;;;AC92B2B;AASF;AAUA;AACkD;AACd;AACf;AACU;AACA;AACd;AACY;AACJ;AAElD,MAAM\u002F6O,KAAK,GAAG7wB,CAAC,IAAIA,CAAC,YAAYiD,GAAG;AAEnC,MAAMo1Q,mBAAmB,GAAGj5Q,oBAAoB,CAAC4lB,IAAI,CACnD,IAAI,EACa6L,KAAK,EACJlrB,MACpB,CAAC;AAED,SAAS2yQ,SAASA,CAAC\u002F4Q,IAAI,EAAE;EACvB,IAAIA,IAAI,YAAY8C,IAAI,EAAE;IACxB9C,IAAI,GAAGA,IAAI,CAACV,GAAG,CAAC,GAAG,CAAC;EACtB;EACA,OAAOw5Q,mBAAmB,CAAC94Q,IAAI,CAAC,GAAGA,IAAI,GAAG,IAAI;AAChD;AAEA,SAASg5Q,eAAeA,CAAC9rQ,MAAM,EAAE;EAC\u002FB,IAAIlN,IAAI,GAAGkN,MAAM,CAAC5N,GAAG,CAAC,GAAG,CAAC;EAC1B,IAAIU,IAAI,EAAE;IACR,IAAIA,IAAI,YAAY0C,IAAI,EAAE;MACxB1C,IAAI,GAAGA,IAAI,CAACzM,IAAI;IAClB;IACA,IAAI,OAAOyM,IAAI,KAAK,QAAQ,EAAE;MAC5B,OAAO\u002FC,iBAAiB,CAAC+C,IAAI,EAA6B,IAAI,CAAC;IACjE,CAAC,MAAM,IAAI84Q,mBAAmB,CAAC94Q,IAAI,CAAC,EAAE;MACpC,OAAOi5Q,IAAI,CAACC,SAAS,CAACl5Q,IAAI,CAAC;IAC7B;EACF;EACA,OAAO,IAAI;AACb;AAEA,MAAMm5Q,OAAO,CAAC;EACZ,CAACC,cAAc,GAAG,IAAI;EAEtB,CAACC,OAAO,GAAG,IAAI;EAEfloB,gBAAgB,GAAG,IAAIjyP,GAAG,CAAC,CAAC;EAE5BgyP,SAAS,GAAG,IAAIlrP,WAAW,CAAC,CAAC;EAE7BkqB,qBAAqB,GAAG,IAAIiwN,qBAAqB,CAAC,CAAC;EAEnDkR,gBAAgB,GAAG,IAAIjR,gBAAgB,CAAC,CAAC;EAEzC0R,gBAAgB,GAAG,IAAIrsP,MAAM,CAAC,CAAC;EAE\u002FB6zQ,aAAa,GAAG,IAAItzQ,WAAW,CAAC,CAAC;EAEjCuzQ,cAAc,GAAG,IAAIvzQ,WAAW,CAAC,CAAC;EAElCwzQ,kBAAkB,GAAG,IAAIxzQ,WAAW,CAAC,CAAC;EAEtCorP,qBAAqB,GAAG,IAAIlyP,GAAG,CAAC,CAAC;EAEjC0rP,eAAe,GAAG,IAAI1rP,GAAG,CAAC,CAAC;EAE3BzL,WAAWA,CAAC4gR,UAAU,EAAEtxQ,IAAI,EAAE;IAC5B,IAAI,CAACsxQ,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACtxQ,IAAI,GAAGA,IAAI;IAEhB,IAAI,CAAC,CAACs2Q,OAAO,GAAGt2Q,IAAI,CAAC02Q,aAAa,CAAC,CAAC;IACpC,IAAI,EAAE,IAAI,CAAC,CAACJ,OAAO,YAAYv2Q,IAAI,CAAC,EAAE;MACpC,MAAM,IAAI5O,WAAW,CAAC,qCAAqC,CAAC;IAC9D;IAGA,IAAI,CAACwlR,iBAAiB;EACxB;EAEAC,SAASA,CAAA,EAAG;IACV,OAAO,IAAI,CAAC,CAACN,OAAO,CAACn0Q,KAAK,CAAC,CAAC;EAC9B;EAEA,IAAIg1B,OAAOA,CAAA,EAAG;IACZ,MAAMA,OAAO,GAAG,IAAI,CAAC,CAACm\u002FO,OAAO,CAAC\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\u002F5Q,GAAG,CAAC,OAAO,CAAC;IACtC,MAAMm\u002FQ,QAAQ,GAAG,EAAE;IACnB,IAAI9rR,GAAG,EAAE0R,GAAG,CAAC,OAAO,CAAC,EAAE;MACrBo6Q,QAAQ,CAACvpR,IAAI,CAAC,IAAI63Q,QAAQ,CAACp6Q,GAAG,CAACoR,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,CAAChB,IAAI,CAAC,CAAC;IAC7D;IACA,IAAI,IAAI,CAAC,CAACs2Q,OAAO,CAACh1Q,GAAG,CAAC,OAAO,CAAC,EAAE;MAE9Bo6Q,QAAQ,CAACvpR,IAAI,CAAC,IAAI,CAAC,CAACmkR,OAAO,CAAC\u002F5Q,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3C;IACA,OAAOm\u002FQ,QAAQ;EACjB;EAEA,IAAIM,UAAUA,CAAA,EAAG;IACf,IAAIpsR,GAAG,GAAG,IAAI;IACd,IAAI;MACFA,GAAG,GAAG,IAAI,CAAC,CAACqsR,cAAc,CAAC,CAAC;IAC9B,CAAC,CAAC,OAAOthR,EAAE,EAAE;MACX,IAAIA,EAAE,YAAYoL,oBAAoB,EAAE;QACtC,MAAMpL,EAAE;MACV;MACA3M,IAAI,CAAC,6BAA6B,CAAC;IACrC;IACA,OAAO2B,MAAM,CAAC,IAAI,EAAE,YAAY,EAAEC,GAAG,CAAC;EACxC;EAEA,CAACqsR,cAAcC,CAAA,EAAG;IAChB,MAAMtsR,GAAG,GAAG,IAAI,CAAC,CAAC0mR,OAAO,CAACt1Q,MAAM,CAAC,YAAY,CAAC;IAC9C,IAAI,CAACpR,GAAG,EAAE;MACR,OAAO,IAAI;IACb;IAEA,MAAMosR,UAAU,GAAG,IAAI1nR,KAAK,CAAC,IAAI,CAACyiE,QAAQ,CAAC;IAC3C,IAAIqvL,KAAK,GAAG,IAAI;MACd+1B,MAAM,GAAG,EAAE;IAEb,MAAM5J,UAAU,GAAG,IAAItI,UAAU,CAACr6Q,GAAG,EAAE,IAAI,CAACoQ,IAAI,CAAC;IACjD,MAAMoyQ,IAAI,GAAGG,UAAU,CAAC\u002FI,MAAM,CAAC,CAAC;IAChC,IAAI4S,YAAY,GAAG,EAAE;MACnB\u002FvN,YAAY,GAAG,CAAC;IAElB,KAAK,IAAIx6D,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAG,IAAI,CAACm8D,QAAQ,EAAEllE,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,EAAE,EAAE;MAC\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\u002FL,CAAC,GAAG,CAAC,CAAC,CAAC,IAC\u002FBsL,IAAI,IAAI,IAAI,CAAC45D,QACjB,CAAC;YACD,IAAImmN,OAAO,EAAE;cACXD,SAAS,GAAGntR,KAAK;YACnB;UACF;UACA;QACF,KAAK,WAAW;UACd,IAAIrC,MAAM,CAACC,SAAS,CAACoC,KAAK,CAAC,IAAIA,KAAK,GAAG,CAAC,EAAE;YACxCmtR,SAAS,GAAGntR,KAAK;UACnB;UACA;QACF;UACE9B,IAAI,CAAC,mDAAmDiT,GAAG,GAAG,CAAC;UAC\u002FD;MACJ;MAEA,IAAIg8Q,SAAS,KAAK1rR,SAAS,EAAE;QAC3BvD,IAAI,CAAC,uBAAuBiT,GAAG,4BAA4BnR,KAAK,GAAG,CAAC;QACpE;MACF;MACAktR,KAAK,KAAKhtR,MAAM,CAACuP,MAAM,CAAC,IAAI,CAAC;MAC7By9Q,KAAK,CAAC\u002F7Q,GAAG,CAAC,GAAGg8Q,SAAS;IACxB;IACA,OAAOttR,MAAM,CAAC,IAAI,EAAE,mBAAmB,EAAEqtR,KAAK,CAAC;EACjD;EAEA,IAAIG,UAAUA,CAAA,EAAG;IACf,MAAMvtR,GAAG,GAAG,IAAI,CAAC,CAAC0mR,OAAO,CAAC\u002F5Q,GAAG,CAAC,YAAY,CAAC;IAC3C,MAAM4gR,UAAU,GAAGntR,MAAM,CAACuP,MAAM,CAAC,IAAI,CAAC;IAEtC,IAAI3P,GAAG,YAAYmQ,IAAI,EAAE;MAGvB,MAAMu4Q,QAAQ,GAAG,IAAIv4Q,IAAI,CAAC,IAAI,CAACC,IAAI,CAAC;MACpCs4Q,QAAQ,CAACj3Q,GAAG,CAAC,GAAG,EAAEzR,GAAG,CAAC;MAEtB,MAAM2oR,SAAS,GAAG;QAAEjqR,GAAG,EAAE,IAAI;QAAE2O,IAAI,EAAE,IAAI;QAAEkN,MAAM,EAAE;MAAK,CAAC;MACzDisQ,OAAO,CAACiC,mBAAmB,CAAC;QAAEC,QAAQ;QAAEC;MAAU,CAAC,CAAC;MAEpD,IAAIjkR,KAAK,CAAC4I,OAAO,CAACq7Q,SAAS,CAACt7Q,IAAI,CAAC,EAAE;QACjCkgR,UAAU,CAAClgR,IAAI,GAAGs7Q,SAAS,CAACt7Q,IAAI;MAClC,CAAC,MAAM,IAAIs7Q,SAAS,CAACpuQ,MAAM,EAAE;QAC3BgzQ,UAAU,CAAChzQ,MAAM,GAAGouQ,SAAS,CAACpuQ,MAAM;MACtC;IACF,CAAC,MAAM,IAAI4rQ,mBAAmB,CAACnmR,GAAG,CAAC,EAAE;MACnCutR,UAAU,CAAClgR,IAAI,GAAGrN,GAAG;IACvB;IACA,OAAOD,MAAM,CACX,IAAI,EACJ,YAAY,EACZ+C,UAAU,CAACyqR,UAAU,CAAC,GAAG,CAAC,GAAGA,UAAU,GAAG,IAC5C,CAAC;EACH;EAEA,IAAIzE,WAAWA,CAAA,EAAG;IAChB,MAAM9oR,GAAG,GAAG,IAAI,CAAC,CAAC0mR,OAAO,CAAC\u002F5Q,GAAG,CAAC,OAAO,CAAC;IACtC,IAAIm8Q,WAAW,GAAG,IAAI;IAEtB,IAAI9oR,GAAG,YAAYmQ,IAAI,IAAInQ,GAAG,CAAC0R,GAAG,CAAC,eAAe,CAAC,EAAE;MACnD,MAAM87Q,QAAQ,GAAG,IAAIpT,QAAQ,CAACp6Q,GAAG,CAACoR,MAAM,CAAC,eAAe,CAAC,EAAE,IAAI,CAAChB,IAAI,CAAC;MACrE,KAAK,MAAM,CAACiB,GAAG,EAAEnR,KAAK,CAAC,IAAIstR,QAAQ,CAAC5T,MAAM,CAAC,CAAC,EAAE;QAC5C,MAAMiB,EAAE,GAAG,IAAIH,QAAQ,CAACx6Q,KAAK,EAAE,IAAI,CAACkQ,IAAI,CAAC;QACzC04Q,WAAW,KAAK1oR,MAAM,CAACuP,MAAM,CAAC,IAAI,CAAC;QACnCm5Q,WAAW,CAACx+Q,iBAAiB,CAAC+G,GAAG,EAA6B,IAAI,CAAC,CAAC,GAClEwpQ,EAAE,CAACK,YAAY;MACnB;IACF;IACA,OAAOn7Q,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE+oR,WAAW,CAAC;EACjD;EAEA,IAAI2E,SAASA,CAAA,EAAG;IACd,MAAMztR,GAAG,GAAG,IAAI,CAAC,CAAC0mR,OAAO,CAAC\u002F5Q,GAAG,CAAC,OAAO,CAAC;IACtC,IAAI8gR,SAAS,GAAG,IAAI;IAEpB,IAAIztR,GAAG,YAAYmQ,IAAI,IAAInQ,GAAG,CAAC0R,GAAG,CAAC,WAAW,CAAC,EAAE;MAC\u002FC,MAAM87Q,QAAQ,GAAG,IAAIpT,QAAQ,CAACp6Q,GAAG,CAACoR,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,CAAChB,IAAI,CAAC;MACjE,KAAK,MAAM,CAACiB,GAAG,EAAEnR,KAAK,CAAC,IAAIstR,QAAQ,CAAC5T,MAAM,CAAC,CAAC,EAAE;QAC5C,IAAI15Q,KAAK,YAAY6T,UAAU,EAAE;UAC\u002FB05Q,SAAS,KAAK,IAAIlhR,GAAG,CAAC,CAAC;UACvBkhR,SAAS,CAACh8Q,GAAG,CACXnH,iBAAiB,CAAC+G,GAAG,EAA6B,IAAI,CAAC,EACvDnR,KAAK,CAACiU,QAAQ,CAAC,CACjB,CAAC;QACH;MACF;IACF;IACA,OAAOpU,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE0tR,SAAS,CAAC;EAC7C;EAEA,CAACC,iBAAiBC,CAAA,EAAG;IACnB,MAAM3tR,GAAG,GAAG,IAAI,CAAC,CAAC0mR,OAAO,CAAC\u002F5Q,GAAG,CAAC,OAAO,CAAC;IACtC,IAAIihR,UAAU,GAAG,IAAI;IAErB,SAASC,sBAAsBA,CAACjtR,IAAI,EAAEktR,MAAM,EAAE;MAC5C,IAAI,EAAEA,MAAM,YAAY39Q,IAAI,CAAC,EAAE;QAC7B;MACF;MACA,IAAI,CAACsD,MAAM,CAACq6Q,MAAM,CAACnhR,GAAG,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,EAAE;QAC1C;MACF;MAEA,IAAIsN,EAAE,GAAG6zQ,MAAM,CAACnhR,GAAG,CAAC,IAAI,CAAC;MACzB,IAAIsN,EAAE,YAAYlG,UAAU,EAAE;QAC5BkG,EAAE,GAAGA,EAAE,CAAC9E,SAAS,CAAC,CAAC;MACrB,CAAC,MAAM,IAAI,OAAO8E,EAAE,KAAK,QAAQ,EAAE;QACjC;MACF;MACAA,EAAE,GAAG3P,iBAAiB,CAAC2P,EAAE,EAA6B,IAAI,CAAC,CAACnP,UAAU,CACpE,MAAM,EACN,EACF,CAAC;MAED,IAAImP,EAAE,EAAE;QACN,CAAC2zQ,UAAU,KAAK,IAAIrhR,GAAG,CAAC,CAAC,EAAEkF,GAAG,CAAC7Q,IAAI,EAAEqZ,EAAE,CAAC;MAC1C;IACF;IAEA,IAAIja,GAAG,YAAYmQ,IAAI,IAAInQ,GAAG,CAAC0R,GAAG,CAAC,YAAY,CAAC,EAAE;MAChD,MAAM87Q,QAAQ,GAAG,IAAIpT,QAAQ,CAACp6Q,GAAG,CAACoR,MAAM,CAAC,YAAY,CAAC,EAAE,IAAI,CAAChB,IAAI,CAAC;MAClE,KAAK,MAAM,CAACiB,GAAG,EAAEnR,KAAK,CAAC,IAAIstR,QAAQ,CAAC5T,MAAM,CAAC,CAAC,EAAE;QAC5CiU,sBAAsB,CACpBvjR,iBAAiB,CAAC+G,GAAG,EAA6B,IAAI,CAAC,EACvDnR,KACF,CAAC;MACH;IACF;IAEA,MAAMqtR,UAAU,GAAG,IAAI,CAAC,CAAC7G,OAAO,CAAC\u002F5Q,GAAG,CAAC,YAAY,CAAC;IAClD,IAAI4gR,UAAU,EAAE;MACdM,sBAAsB,CAAC,YAAY,EAAEN,UAAU,CAAC;IAClD;IAEA,OAAOK,UAAU;EACnB;EAEA,IAAIG,SAASA,CAAA,EAAG;IACd,MAAMH,UAAU,GAAG,IAAI,CAAC,CAACF,iBAAiB,CAAC,CAAC;IAC5C,IAAItzQ,OAAO,GAAGF,cAAc,CAC1B,IAAI,CAAC9J,IAAI,EACT,IAAI,CAAC,CAACs2Q,OAAO,EACb5vR,uBACF,CAAC;IAED,IAAI82R,UAAU,EAAE;MACdxzQ,OAAO,KAAKha,MAAM,CAACuP,MAAM,CAAC,IAAI,CAAC;MAE\u002FB,KAAK,MAAM,CAAC0B,GAAG,EAAE6X,GAAG,CAAC,IAAI0kQ,UAAU,EAAE;QACnC,IAAIv8Q,GAAG,IAAI+I,OAAO,EAAE;UAClBA,OAAO,CAAC\u002FI,GAAG,CAAC,CAAC9O,IAAI,CAAC2mB,GAAG,CAAC;QACxB,CAAC,MAAM;UACL9O,OAAO,CAAC\u002FI,GAAG,CAAC,GAAG,CAAC6X,GAAG,CAAC;QACtB;MACF;IACF;IACA,OAAOnpB,MAAM,CAAC,IAAI,EAAE,WAAW,EAAEqa,OAAO,CAAC;EAC3C;EAEA,MAAM0+B,OAAOA,CAACk1O,iBAAiB,GAAG,KAAK,EAAE;IACvC1T,iBAAiB,CAAC,CAAC;IACnB,IAAI,CAAC\u002F8O,qBAAqB,CAACjrB,KAAK,CAAC,CAAC;IAClC,IAAI,CAACosP,gBAAgB,CAACpsP,KAAK,CAAkB07Q,iBAAiB,CAAC;IAC\u002FD,IAAI,CAACnH,kBAAkB,CAACv0Q,KAAK,CAAC,CAAC;IAC\u002FB,IAAI,CAACs0Q,cAAc,CAACt0Q,KAAK,CAAC,CAAC;IAC3B,IAAI,CAACq0Q,aAAa,CAACr0Q,KAAK,CAAC,CAAC;IAC1B,IAAI,CAAC6sP,gBAAgB,CAAC7sP,KAAK,CAAC,CAAC;IAE7B,KAAK,MAAM;MAAEH;IAAK,CAAC,IAAI,MAAMogB,OAAO,CAAC+0O,GAAG,CAAC,IAAI,CAAC\u002FI,SAAS,CAAC,EAAE;MACxD,OAAOpsP,IAAI,CAACoxD,QAAQ;IACtB;IACA,IAAI,CAACg7L,SAAS,CAACjsP,KAAK,CAAC,CAAC;IACtB,IAAI,CAACksP,gBAAgB,CAAClsP,KAAK,CAAC,CAAC;IAC7B,IAAI,CAACmsP,qBAAqB,CAACnsP,KAAK,CAAC,CAAC;IAClC,IAAI,CAAC2lP,eAAe,CAAC3lP,KAAK,CAAC,CAAC;EAC9B;EAEA,MAAM27Q,WAAWA,CAAClxQ,SAAS,EAAE;IAC3B,MAAMmxQ,YAAY,GAAG,CAAC,IAAI,CAACnH,iBAAiB,CAAC;IAC7C,MAAMoH,YAAY,GAAG,IAAIr7Q,MAAM,CAAC,CAAC;IAEjC,MAAMs7Q,QAAQ,GAAG,IAAI,CAAC,CAAC1H,OAAO,CAACt1Q,MAAM,CAAC,OAAO,CAAC;IAC9C,IAAIg9Q,QAAQ,YAAYr9Q,GAAG,EAAE;MAC3Bo9Q,YAAY,CAACj7Q,GAAG,CAACk7Q,QAAQ,CAAC;IAC5B;IACA,MAAMh+Q,IAAI,GAAG,IAAI,CAACA,IAAI;MACpBy2Q,kBAAkB,GAAG,IAAI,CAACA,kBAAkB;MAC5CD,cAAc,GAAG,IAAI,CAACA,cAAc;MACpCD,aAAa,GAAG,IAAI,CAACA,aAAa;IACpC,IAAI0H,gBAAgB,GAAG,CAAC;IAExB,OAAOH,YAAY,CAAC\u002FuR,MAAM,EAAE;MAC1B,MAAMmvR,WAAW,GAAGJ,YAAY,CAACjuP,GAAG,CAAC,CAAC;MAEtC,IAAIquP,WAAW,YAAYv9Q,GAAG,EAAE;QAC9B,MAAMuU,KAAK,GAAGuhQ,kBAAkB,CAACl6Q,GAAG,CAAC2hR,WAAW,CAAC;QAEjD,IAAIhpQ,KAAK,IAAI,CAAC,IAAI+oQ,gBAAgB,GAAG\u002FoQ,KAAK,IAAIvI,SAAS,EAAE;UACvDsxQ,gBAAgB,IAAI\u002FoQ,KAAK;UACzB;QACF;QAEA,IAAI6oQ,YAAY,CAACz8Q,GAAG,CAAC48Q,WAAW,CAAC,EAAE;UACjC,MAAM,IAAI\u002FsR,WAAW,CAAC,yCAAyC,CAAC;QAClE;QACA4sR,YAAY,CAACj7Q,GAAG,CAACo7Q,WAAW,CAAC;QAE7B,MAAMtuR,GAAG,GAAG,OAAO2mR,aAAa,CAACh6Q,GAAG,CAAC2hR,WAAW,CAAC,IAC\u002FCl+Q,IAAI,CAACc,UAAU,CAACo9Q,WAAW,CAAC,CAAC;QAC\u002FB,IAAItuR,GAAG,YAAYmQ,IAAI,EAAE;UACvB,IAAIjiB,IAAI,GAAG8R,GAAG,CAACoR,MAAM,CAAC,MAAM,CAAC;UAC7B,IAAIljB,IAAI,YAAY6iB,GAAG,EAAE;YACvB7iB,IAAI,GAAG,MAAMkiB,IAAI,CAACc,UAAU,CAAChjB,IAAI,CAAC;UACpC;UACA,IAAIulB,MAAM,CAACvlB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC8R,GAAG,CAAC0R,GAAG,CAAC,MAAM,CAAC,EAAE;YAI5C,IAAI,CAACm1Q,kBAAkB,CAACn1Q,GAAG,CAAC48Q,WAAW,CAAC,EAAE;cACxCzH,kBAAkB,CAAC3zQ,GAAG,CAACo7Q,WAAW,EAAE,CAAC,CAAC;YACxC;YAEA,IAAI,CAAC1H,cAAc,CAACl1Q,GAAG,CAAC48Q,WAAW,CAAC,EAAE;cACpC1H,cAAc,CAAC1zQ,GAAG,CAACo7Q,WAAW,EAAED,gBAAgB,CAAC;YACnD;YAEA,IAAIA,gBAAgB,KAAKtxQ,SAAS,EAAE;cAClC,OAAO,CAAC\u002Fc,GAAG,EAAEsuR,WAAW,CAAC;YAC3B;YACAD,gBAAgB,EAAE;YAClB;UACF;QACF;QACAH,YAAY,CAAC3rR,IAAI,CAACvC,GAAG,CAAC;QACtB;MACF;MAGA,IAAI,EAAEsuR,WAAW,YAAYn+Q,IAAI,CAAC,EAAE;QAClC,MAAM,IAAI5O,WAAW,CACnB,+DACF,CAAC;MACH;MACA,MAAM;QAAE+O;MAAM,CAAC,GAAGg+Q,WAAW;MAE7B,IAAIhpQ,KAAK,GAAGgpQ,WAAW,CAACl9Q,MAAM,CAAC,OAAO,CAAC;MACvC,IAAIkU,KAAK,YAAYvU,GAAG,EAAE;QACxBuU,KAAK,GAAG,MAAMlV,IAAI,CAACc,UAAU,CAACoU,KAAK,CAAC;MACtC;MACA,IAAIznB,MAAM,CAACC,SAAS,CAACwnB,KAAK,CAAC,IAAIA,KAAK,IAAI,CAAC,EAAE;QAGzC,IAAIhV,KAAK,IAAI,CAACu2Q,kBAAkB,CAACn1Q,GAAG,CAACpB,KAAK,CAAC,EAAE;UAC3Cu2Q,kBAAkB,CAAC3zQ,GAAG,CAAC5C,KAAK,EAAEgV,KAAK,CAAC;QACtC;QAGA,IAAI+oQ,gBAAgB,GAAG\u002FoQ,KAAK,IAAIvI,SAAS,EAAE;UACzCsxQ,gBAAgB,IAAI\u002FoQ,KAAK;UACzB;QACF;MACF;MAEA,IAAIu0P,IAAI,GAAGyU,WAAW,CAACl9Q,MAAM,CAAC,MAAM,CAAC;MACrC,IAAIyoQ,IAAI,YAAY9oQ,GAAG,EAAE;QACvB8oQ,IAAI,GAAG,MAAMzpQ,IAAI,CAACc,UAAU,CAAC2oQ,IAAI,CAAC;MACpC;MACA,IAAI,CAACn1Q,KAAK,CAAC4I,OAAO,CAACusQ,IAAI,CAAC,EAAE;QAIxB,IAAI3rR,IAAI,GAAGogS,WAAW,CAACl9Q,MAAM,CAAC,MAAM,CAAC;QACrC,IAAIljB,IAAI,YAAY6iB,GAAG,EAAE;UACvB7iB,IAAI,GAAG,MAAMkiB,IAAI,CAACc,UAAU,CAAChjB,IAAI,CAAC;QACpC;QACA,IAAIulB,MAAM,CAACvlB,IAAI,EAAE,MAAM,CAAC,IAAI,CAACogS,WAAW,CAAC58Q,GAAG,CAAC,MAAM,CAAC,EAAE;UACpD,IAAI28Q,gBAAgB,KAAKtxQ,SAAS,EAAE;YAClC,OAAO,CAACuxQ,WAAW,EAAE,IAAI,CAAC;UAC5B;UACAD,gBAAgB,EAAE;UAClB;QACF;QAEA,MAAM,IAAI9sR,WAAW,CAAC,8CAA8C,CAAC;MACvE;MAKA,KAAK,IAAIi\u002FC,IAAI,GAAGq5N,IAAI,CAAC16Q,MAAM,GAAG,CAAC,EAAEqhD,IAAI,IAAI,CAAC,EAAEA,IAAI,EAAE,EAAE;QAClD,MAAM+tO,OAAO,GAAG1U,IAAI,CAACr5N,IAAI,CAAC;QAC1B0tO,YAAY,CAAC3rR,IAAI,CAACgsR,OAAO,CAAC;QAI1B,IACED,WAAW,KAAK,IAAI,CAACvH,iBAAiB,IACtCwH,OAAO,YAAYx9Q,GAAG,IACtB,CAAC41Q,aAAa,CAACj1Q,GAAG,CAAC68Q,OAAO,CAAC,EAC3B;UACA5H,aAAa,CAACzzQ,GAAG,CAACq7Q,OAAO,EAAEn+Q,IAAI,CAACc,UAAU,CAACq9Q,OAAO,CAAC,CAAC;QACtD;MACF;IACF;IAEA,MAAM,IAAIjwR,KAAK,CAAC,cAAcye,SAAS,aAAa,CAAC;EACvD;EAMA,MAAMyxQ,eAAeA,CAAC7tN,YAAY,GAAG,KAAK,EAAE;IAC1C,MAAM;MAAEy8L;IAAa,CAAC,GAAG,IAAI,CAACskB,UAAU,CAAC3vC,gBAAgB;IAEzD,MAAMh0L,KAAK,GAAG,CAAC;MAAEuwO,WAAW,EAAE,IAAI,CAACvH,iBAAiB;MAAE0H,SAAS,EAAE;IAAE,CAAC,CAAC;IACrE,MAAMN,YAAY,GAAG,IAAIr7Q,MAAM,CAAC,CAAC;IAEjC,MAAMs7Q,QAAQ,GAAG,IAAI,CAAC,CAAC1H,OAAO,CAACt1Q,MAAM,CAAC,OAAO,CAAC;IAC9C,IAAIg9Q,QAAQ,YAAYr9Q,GAAG,EAAE;MAC3Bo9Q,YAAY,CAACj7Q,GAAG,CAACk7Q,QAAQ,CAAC;IAC5B;IACA,MAAM90Q,GAAG,GAAG,IAAI\u002FM,GAAG,CAAC,CAAC;MACnB6D,IAAI,GAAG,IAAI,CAACA,IAAI;MAChBw2Q,cAAc,GAAG,IAAI,CAACA,cAAc;IACtC,IAAI7pQ,SAAS,GAAG,CAAC;IAEjB,SAAS2xQ,WAAWA,CAAC9L,QAAQ,EAAEvB,OAAO,EAAE;MAEtC,IAAIA,OAAO,IAAI,CAACuF,cAAc,CAACl1Q,GAAG,CAAC2vQ,OAAO,CAAC,EAAE;QAC3CuF,cAAc,CAAC1zQ,GAAG,CAACmuQ,OAAO,EAAEtkQ,SAAS,CAAC;MACxC;MAEAzD,GAAG,CAAC7H,GAAG,CAACsL,SAAS,EAAE,EAAE,CAAC6lQ,QAAQ,EAAEvB,OAAO,CAAC,CAAC;IAC3C;IACA,SAASsN,YAAYA,CAAC1hP,KAAK,EAAE;MAC3B,IAAIA,KAAK,YAAY52B,kBAAkB,IAAI,CAACsqD,YAAY,EAAE;QACxD,MAAM1zB,KAAK;MACb;MACA,IAAI0zB,YAAY,IAAIy8L,YAAY,IAAIrgP,SAAS,KAAK,CAAC,EAAE;QAEnD3e,IAAI,CAAC,mDAAmD6uC,KAAK,IAAI,CAAC;QAClEA,KAAK,GAAG98B,IAAI,CAACyB,KAAK;MACpB;MAEA0H,GAAG,CAAC7H,GAAG,CAACsL,SAAS,EAAE,EAAE,CAACkwB,KAAK,EAAE,IAAI,CAAC,CAAC;IACrC;IAEA,OAAO8Q,KAAK,CAAC5+C,MAAM,GAAG,CAAC,EAAE;MACvB,MAAMyvR,SAAS,GAAG7wO,KAAK,CAACjE,EAAE,CAAC,CAAC,CAAC,CAAC;MAC9B,MAAM;QAAEw0O,WAAW;QAAEG;MAAU,CAAC,GAAGG,SAAS;MAE5C,IAAI\u002FU,IAAI,GAAGyU,WAAW,CAACl9Q,MAAM,CAAC,MAAM,CAAC;MACrC,IAAIyoQ,IAAI,YAAY9oQ,GAAG,EAAE;QACvB,IAAI;UACF8oQ,IAAI,GAAG,MAAMzpQ,IAAI,CAACc,UAAU,CAAC2oQ,IAAI,CAAC;QACpC,CAAC,CAAC,OAAO9uQ,EAAE,EAAE;UACX4jR,YAAY,CAAC5jR,EAAE,CAAC;UAChB;QACF;MACF;MACA,IAAI,CAACrG,KAAK,CAAC4I,OAAO,CAACusQ,IAAI,CAAC,EAAE;QACxB8U,YAAY,CACV,IAAIptR,WAAW,CAAC,8CAA8C,CAChE,CAAC;QACD;MACF;MAEA,IAAIktR,SAAS,IAAI5U,IAAI,CAAC16Q,MAAM,EAAE;QAC5B4+C,KAAK,CAAC9d,GAAG,CAAC,CAAC;QACX;MACF;MAEA,MAAM4uP,MAAM,GAAGhV,IAAI,CAAC4U,SAAS,CAAC;MAC9B,IAAIzuR,GAAG;MACP,IAAI6uR,MAAM,YAAY99Q,GAAG,EAAE;QAEzB,IAAIo9Q,YAAY,CAACz8Q,GAAG,CAACm9Q,MAAM,CAAC,EAAE;UAC5BF,YAAY,CACV,IAAIptR,WAAW,CAAC,yCAAyC,CAC3D,CAAC;UACD;QACF;QACA4sR,YAAY,CAACj7Q,GAAG,CAAC27Q,MAAM,CAAC;QAExB,IAAI;UACF7uR,GAAG,GAAG,MAAMoQ,IAAI,CAACc,UAAU,CAAC29Q,MAAM,CAAC;QACrC,CAAC,CAAC,OAAO9jR,EAAE,EAAE;UACX4jR,YAAY,CAAC5jR,EAAE,CAAC;UAChB;QACF;MACF,CAAC,MAAM;QAIL\u002FK,GAAG,GAAG6uR,MAAM;MACd;MACA,IAAI,EAAE7uR,GAAG,YAAYmQ,IAAI,CAAC,EAAE;QAC1Bw+Q,YAAY,CACV,IAAIptR,WAAW,CACb,+DACF,CACF,CAAC;QACD;MACF;MAEA,IAAIrT,IAAI,GAAG8R,GAAG,CAACoR,MAAM,CAAC,MAAM,CAAC;MAC7B,IAAIljB,IAAI,YAAY6iB,GAAG,EAAE;QACvB,IAAI;UACF7iB,IAAI,GAAG,MAAMkiB,IAAI,CAACc,UAAU,CAAChjB,IAAI,CAAC;QACpC,CAAC,CAAC,OAAO6c,EAAE,EAAE;UACX4jR,YAAY,CAAC5jR,EAAE,CAAC;UAChB;QACF;MACF;MACA,IAAI0I,MAAM,CAACvlB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC8R,GAAG,CAAC0R,GAAG,CAAC,MAAM,CAAC,EAAE;QAC5Cg9Q,WAAW,CAAC1uR,GAAG,EAAE6uR,MAAM,YAAY99Q,GAAG,GAAG89Q,MAAM,GAAG,IAAI,CAAC;MACzD,CAAC,MAAM;QACL9wO,KAAK,CAACx7C,IAAI,CAAC;UAAE+rR,WAAW,EAAEtuR,GAAG;UAAEyuR,SAAS,EAAE;QAAE,CAAC,CAAC;MAChD;MACAG,SAAS,CAACH,SAAS,EAAE;IACvB;IACA,OAAOn1Q,GAAG;EACZ;EAEAw1Q,YAAYA,CAACzN,OAAO,EAAE;IACpB,MAAM0N,eAAe,GAAG,IAAI,CAACnI,cAAc,CAACj6Q,GAAG,CAAC00Q,OAAO,CAAC;IACxD,IAAI0N,eAAe,KAAKptR,SAAS,EAAE;MACjC,OAAO4wB,OAAO,CAACS,OAAO,CAAC+7P,eAAe,CAAC;IACzC;IAKA,MAAM3+Q,IAAI,GAAG,IAAI,CAACA,IAAI;IAEtB,SAAS4+Q,cAAcA,CAACjK,MAAM,EAAE;MAC9B,IAAIlwP,KAAK,GAAG,CAAC;QACXmwP,SAAS;MAEX,OAAO50Q,IAAI,CACRc,UAAU,CAAC6zQ,MAAM,CAAC,CAClBzxP,IAAI,CAAC,UAAUoO,IAAI,EAAE;QACpB,IACE9tB,WAAW,CAACmxQ,MAAM,EAAE1D,OAAO,CAAC,IAC5B,CAAC1tQ,MAAM,CAAC+tB,IAAI,EAAE,MAAM,CAAC,IACrB,EAAEA,IAAI,YAAYvxB,IAAI,IAAI,CAACuxB,IAAI,CAAChwB,GAAG,CAAC,MAAM,CAAC,IAAIgwB,IAAI,CAAChwB,GAAG,CAAC,UAAU,CAAC,CAAC,EACpE;UACA,MAAM,IAAInQ,WAAW,CACnB,qDACF,CAAC;QACH;QACA,IAAI,CAACmgC,IAAI,EAAE;UACT,OAAO,IAAI;QACb;QACA,IAAI,EAAEA,IAAI,YAAYvxB,IAAI,CAAC,EAAE;UAC3B,MAAM,IAAI5O,WAAW,CAAC,4BAA4B,CAAC;QACrD;QACAyjR,SAAS,GAAGtjP,IAAI,CAACtwB,MAAM,CAAC,QAAQ,CAAC;QACjC,OAAOswB,IAAI,CAACzwB,QAAQ,CAAC,QAAQ,CAAC;MAChC,CAAC,CAAC,CACDqiB,IAAI,CAAC,UAAUvgB,MAAM,EAAE;QACtB,IAAI,CAACA,MAAM,EAAE;UACX,OAAO,IAAI;QACb;QACA,IAAI,EAAEA,MAAM,YAAY5C,IAAI,CAAC,EAAE;UAC7B,MAAM,IAAI5O,WAAW,CAAC,8BAA8B,CAAC;QACvD;QACA,OAAOwR,MAAM,CAAC9B,QAAQ,CAAC,MAAM,CAAC;MAChC,CAAC,CAAC,CACDqiB,IAAI,CAAC,UAAUumP,IAAI,EAAE;QACpB,IAAI,CAACA,IAAI,EAAE;UACT,OAAO,IAAI;QACb;QAEA,MAAMoV,WAAW,GAAG,EAAE;QACtB,IAAI3qN,KAAK,GAAG,KAAK;QACjB,KAAK,MAAMw1M,GAAG,IAAID,IAAI,EAAE;UACtB,IAAI,EAAEC,GAAG,YAAY\u002FoQ,GAAG,CAAC,EAAE;YACzB,MAAM,IAAIxP,WAAW,CAAC,0BAA0B,CAAC;UACnD;UACA,IAAIqS,WAAW,CAACkmQ,GAAG,EAAEiL,MAAM,CAAC,EAAE;YAC5BzgN,KAAK,GAAG,IAAI;YACZ;UACF;UACA2qN,WAAW,CAAC1sR,IAAI,CACd6N,IAAI,CAACc,UAAU,CAAC4oQ,GAAG,CAAC,CAACxmP,IAAI,CAAC,UAAUtzB,GAAG,EAAE;YACvC,IAAI,EAAEA,GAAG,YAAYmQ,IAAI,CAAC,EAAE;cAC1B,MAAM,IAAI5O,WAAW,CAAC,gCAAgC,CAAC;YACzD;YACA,IAAIvB,GAAG,CAAC0R,GAAG,CAAC,OAAO,CAAC,EAAE;cACpBmjB,KAAK,IAAI70B,GAAG,CAAC2M,GAAG,CAAC,OAAO,CAAC;YAC3B,CAAC,MAAM;cAELkoB,KAAK,EAAE;YACT;UACF,CAAC,CACH,CAAC;QACH;QACA,IAAI,CAACyvC,KAAK,EAAE;UACV,MAAM,IAAI\u002FiE,WAAW,CAAC,2CAA2C,CAAC;QACpE;QACA,OAAOgxB,OAAO,CAAC+0O,GAAG,CAAC2nB,WAAW,CAAC,CAAC37P,IAAI,CAAC,MAAM,CAACuB,KAAK,EAAEmwP,SAAS,CAAC,CAAC;MAChE,CAAC,CAAC;IACN;IAEA,IAAInwP,KAAK,GAAG,CAAC;IACb,MAAM8uB,IAAI,GAAGhxC,GAAG,IACdq8Q,cAAc,CAACr8Q,GAAG,CAAC,CAAC2gB,IAAI,CAAC7lB,IAAI,IAAI;MAC\u002FB,IAAI,CAACA,IAAI,EAAE;QACT,IAAI,CAACm5Q,cAAc,CAAC1zQ,GAAG,CAACmuQ,OAAO,EAAExsP,KAAK,CAAC;QACvC,OAAOA,KAAK;MACd;MACA,MAAM,CAACvP,KAAK,EAAE0\u002FP,SAAS,CAAC,GAAGv3Q,IAAI;MAC\u002FBonB,KAAK,IAAIvP,KAAK;MACd,OAAOq+B,IAAI,CAACqhO,SAAS,CAAC;IACxB,CAAC,CAAC;IAEJ,OAAOrhO,IAAI,CAAC09N,OAAO,CAAC;EACtB;EAEA,IAAIxiR,OAAOA,CAAA,EAAG;IACZ,MAAMqwR,GAAG,GAAG,IAAI,CAAC,CAACxI,OAAO,CAAC\u002F5Q,GAAG,CAAC,KAAK,CAAC;IACpC,IAAIuiR,GAAG,YAAY\u002F+Q,IAAI,EAAE;MACvB,MAAMwW,IAAI,GAAGuoQ,GAAG,CAACviR,GAAG,CAAC,MAAM,CAAC;MAC5B,IAAI,OAAOga,IAAI,KAAK,QAAQ,EAAE;QAC5B,MAAMrnB,WAAW,GAAGV,sBAAsB,CAAC+nB,IAAI,EAAE,IAAI,EAAE;UACrDvnB,kBAAkB,EAAE;QACtB,CAAC,CAAC;QACF,IAAIE,WAAW,EAAE;UACf,OAAOS,MAAM,CAAC,IAAI,EAAE,SAAS,EAAET,WAAW,CAACO,IAAI,CAAC;QAClD;MACF;IACF;IACA,OAAOE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC2hR,UAAU,CAACkH,UAAU,CAAC;EAC5D;EAiBA,OAAOH,mBAAmBA,CAAC;IACzBC,QAAQ;IACRC,SAAS;IACTC,UAAU,GAAG,IAAI;IACjBC,cAAc,GAAG;EACnB,CAAC,EAAE;IACD,IAAI,EAAEH,QAAQ,YAAYv4Q,IAAI,CAAC,EAAE;MAC\u002FB\u002FR,IAAI,CAAC,uDAAuD,CAAC;MAC7D;IACF;IAEA,IAAImc,MAAM,GAAGmuQ,QAAQ,CAAC\u002F7Q,GAAG,CAAC,GAAG,CAAC;MAC5BjO,GAAG;MACH2O,IAAI;IACN,IAAI,EAAEkN,MAAM,YAAYpK,IAAI,CAAC,EAAE;MAC7B,IAAIu4Q,QAAQ,CAACh3Q,GAAG,CAAC,MAAM,CAAC,EAAE;QAGxB6I,MAAM,GAAGmuQ,QAAQ,CAAC\u002F7Q,GAAG,CAAC,MAAM,CAAC;MAC\u002FB,CAAC,MAAM;QACL4N,MAAM,GAAGmuQ,QAAQ,CAAC\u002F7Q,GAAG,CAAC,IAAI,CAAC;QAC3B,IAAI4N,MAAM,YAAYpK,IAAI,EAAE;UAC1B,IAAIoK,MAAM,CAAC7I,GAAG,CAAC,GAAG,CAAC,EAAE;YAEnB6I,MAAM,GAAGA,MAAM,CAAC5N,GAAG,CAAC,GAAG,CAAC;UAC1B,CAAC,MAAM,IAAI4N,MAAM,CAAC7I,GAAG,CAAC,GAAG,CAAC,EAAE;YAE1B6I,MAAM,GAAGA,MAAM,CAAC5N,GAAG,CAAC,GAAG,CAAC;UAC1B;QACF;MACF;IACF;IAEA,IAAI4N,MAAM,YAAYpK,IAAI,EAAE;MAC1B,MAAMg\u002FQ,UAAU,GAAG50Q,MAAM,CAAC5N,GAAG,CAAC,GAAG,CAAC;MAClC,IAAI,EAAEwiR,UAAU,YAAYp\u002FQ,IAAI,CAAC,EAAE;QACjC3R,IAAI,CAAC,yDAAyD,CAAC;QAC\u002FD;MACF;MACA,MAAMgxR,UAAU,GAAGD,UAAU,CAACvuR,IAAI;MAElC,QAAQwuR,UAAU;QAChB,KAAK,WAAW;UACd,MAAMz+N,KAAK,GAAGp2C,MAAM,CAAC5N,GAAG,CAAC,OAAO,CAAC;UACjC,MAAM0iR,OAAO,GAAG,CAAC,CAAC,OAAO1+N,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;UACnE,MAAMw6K,MAAM,GAAG,EAAE;UACjB,MAAMs\u002FC,IAAI,GAAG,EAAE;UACf,KAAK,MAAMzqR,GAAG,IAAIua,MAAM,CAAC5N,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE;YAC5C,IAAI3M,GAAG,YAAY+Q,GAAG,EAAE;cACtB05Q,IAAI,CAACloR,IAAI,CAACvC,GAAG,CAAC6E,QAAQ,CAAC,CAAC,CAAC;YAC3B,CAAC,MAAM,IAAI,OAAO7E,GAAG,KAAK,QAAQ,EAAE;cAClCmrO,MAAM,CAAC5oO,IAAI,CAAC+H,iBAAiB,CAACtK,GAAG,CAAC,CAAC;YACrC;UACF;UACA2oR,SAAS,CAAC2G,SAAS,GAAG;YAAEnkD,MAAM;YAAEs\u002FC,IAAI;YAAE4E;UAAQ,CAAC;UAC\u002FC;QACF,KAAK,KAAK;UACR3wR,GAAG,GAAG6b,MAAM,CAAC5N,GAAG,CAAC,KAAK,CAAC;UACvB,IAAIjO,GAAG,YAAYqR,IAAI,EAAE;YAEvBrR,GAAG,GAAG,GAAG,GAAGA,GAAG,CAACkC,IAAI;UACtB;UACA;QAEF,KAAK,MAAM;UACTyM,IAAI,GAAGkN,MAAM,CAAC5N,GAAG,CAAC,GAAG,CAAC;UACtB;QAEF,KAAK,QAAQ;QAMb,KAAK,OAAO;UACV,MAAM4iR,OAAO,GAAGh1Q,MAAM,CAAC5N,GAAG,CAAC,GAAG,CAAC;UAC\u002FB,IAAI4iR,OAAO,YAAYp\u002FQ,IAAI,EAAE;YAC3B,MAAM0qQ,EAAE,GAAG,IAAIH,QAAQ,CACrB6U,OAAO,EACM,IAAI,EACG,IACtB,CAAC;YACD,MAAM;cAAEpU;YAAY,CAAC,GAAGN,EAAE,CAACK,YAAY;YACvCx8Q,GAAG,GAAGy8Q,WAAW;UACnB,CAAC,MAAM,IAAI,OAAOoU,OAAO,KAAK,QAAQ,EAAE;YACtC7wR,GAAG,GAAG6wR,OAAO;UACf;UAGA,MAAMC,UAAU,GAAGnJ,eAAe,CAAC9rQ,MAAM,CAAC;UAC1C,IAAIi1Q,UAAU,IAAI,OAAO9wR,GAAG,KAAK,QAAQ,EAAE;YAIzCA,GAAG,GAAmBA,GAAG,CAACoB,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG0vR,UAAU;UAC\u002FD;UAEA,MAAMlzQ,SAAS,GAAG\u002FB,MAAM,CAAC5N,GAAG,CAAC,WAAW,CAAC;UACzC,IAAI,OAAO2P,SAAS,KAAK,SAAS,EAAE;YAClCqsQ,SAAS,CAACrsQ,SAAS,GAAGA,SAAS;UACjC;UACA;QAEF,KAAK,OAAO;UACV,MAAMmzQ,MAAM,GAAGl1Q,MAAM,CAAC5N,GAAG,CAAC,GAAG,CAAC;UAC9B,IAAIs8Q,UAAU;UAEd,IAAIJ,cAAc,IAAI4G,MAAM,YAAYt\u002FQ,IAAI,EAAE;YAC5C,MAAMu\u002FQ,YAAY,GAAGD,MAAM,CAAC9iR,GAAG,CAAC,GAAG,CAAC;YACpC,MAAM\u002FL,IAAI,GAAG6uR,MAAM,CAAC9iR,GAAG,CAAC,GAAG,CAAC;YAE5B,IAAI8G,MAAM,CAACi8Q,YAAY,EAAE,GAAG,CAAC,IAAI,OAAO9uR,IAAI,KAAK,QAAQ,EAAE;cACzDqoR,UAAU,GACRJ,cAAc,CACZv+Q,iBAAiB,CAAC1J,IAAI,EAA6B,IAAI,CAAC,CACzD;YACL;UACF;UAEA,IAAIqoR,UAAU,EAAE;YACdN,SAAS,CAACM,UAAU,GAAGA,UAAU;YAGjC,MAAM0G,cAAc,GAAGtJ,eAAe,CAAC9rQ,MAAM,CAAC;YAC9C,IAAIo1Q,cAAc,EAAE;cAClBhH,SAAS,CAACgH,cAAc,GAAGA,cAAc;YAC3C;UACF,CAAC,MAAM;YACLvxR,IAAI,CAAC,qDAAqD,CAAC;UAC7D;UACA;QAEF,KAAK,OAAO;UACV,MAAMwxR,WAAW,GAAGr1Q,MAAM,CAAC5N,GAAG,CAAC,GAAG,CAAC;UACnC,IAAIijR,WAAW,YAAY7\u002FQ,IAAI,EAAE;YAC\u002FB44Q,SAAS,CAACpuQ,MAAM,GAAGq1Q,WAAW,CAAChvR,IAAI;UACrC;UACA;QAEF,KAAK,aAAa;UAChB,MAAMi5C,KAAK,GAAGt\u002FB,MAAM,CAAC5N,GAAG,CAAC,OAAO,CAAC;UACjC,MAAMkjR,UAAU,GAAGt1Q,MAAM,CAAC5N,GAAG,CAAC,YAAY,CAAC;UAE3C,IAAI,CAACjI,KAAK,CAAC4I,OAAO,CAACusC,KAAK,CAAC,IAAIA,KAAK,CAAC16C,MAAM,KAAK,CAAC,EAAE;YAC\u002FC;UACF;UACA,MAAM2wR,QAAQ,GAAG,EAAE;UAEnB,KAAK,MAAM55P,IAAI,IAAI2jB,KAAK,EAAE;YACxB,IAAI3jB,IAAI,YAAYnmB,IAAI,EAAE;cACxB,QAAQmmB,IAAI,CAACt1B,IAAI;gBACf,KAAK,IAAI;gBACT,KAAK,KAAK;gBACV,KAAK,QAAQ;kBACXkvR,QAAQ,CAACvtR,IAAI,CAAC2zB,IAAI,CAACt1B,IAAI,CAAC;kBACxB;cACJ;YACF,CAAC,MAAM,IAAIs1B,IAAI,YAAYnlB,GAAG,EAAE;cAC9B++Q,QAAQ,CAACvtR,IAAI,CAAC2zB,IAAI,CAACrxB,QAAQ,CAAC,CAAC,CAAC;YAChC;UACF;UAEA,IAAIirR,QAAQ,CAAC3wR,MAAM,KAAK06C,KAAK,CAAC16C,MAAM,EAAE;YACpC;UACF;UACAwpR,SAAS,CAACQ,WAAW,GAAG;YACtBtvO,KAAK,EAAEi2O,QAAQ;YACfD,UAAU,EAAE,OAAOA,UAAU,KAAK,SAAS,GAAGA,UAAU,GAAG;UAC7D,CAAC;UACD;QAEF,KAAK,YAAY;UACf,MAAME,QAAQ,GAAGx1Q,MAAM,CAAC5N,GAAG,CAAC,IAAI,CAAC;UACjC,IAAIsN,EAAE;UAEN,IAAI81Q,QAAQ,YAAYh8Q,UAAU,EAAE;YAClCkG,EAAE,GAAG81Q,QAAQ,CAAC56Q,SAAS,CAAC,CAAC;UAC3B,CAAC,MAAM,IAAI,OAAO46Q,QAAQ,KAAK,QAAQ,EAAE;YACvC91Q,EAAE,GAAG81Q,QAAQ;UACf;UAEA,MAAMC,KAAK,GACT\u002F1Q,EAAE,IACFiC,YAAY,CACV5R,iBAAiB,CAAC2P,EAAE,EAA6B,IAAI,CACvD,CAAC;UACH,IAAI+1Q,KAAK,EAAE;YACTtxR,GAAG,GAAGsxR,KAAK,CAACtxR,GAAG;YACfiqR,SAAS,CAACrsQ,SAAS,GAAG0zQ,KAAK,CAAC1zQ,SAAS;YACrC;UACF;QAEF;UACE,IAAI8yQ,UAAU,KAAK,YAAY,IAAIA,UAAU,KAAK,YAAY,EAAE;YAG9D;UACF;UACAhxR,IAAI,CAAC,8CAA8CgxR,UAAU,IAAI,CAAC;UAClE;MACJ;IACF,CAAC,MAAM,IAAI1G,QAAQ,CAACh3Q,GAAG,CAAC,MAAM,CAAC,EAAE;MAE\u002FBrE,IAAI,GAAGq7Q,QAAQ,CAAC\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\u002FjR,MAAM,CAAC,CAAC;AAC\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\u002FQ,IAAI;EAAE8\u002FQ,YAAY;EAAEC;AAAS,CAAC,EAAE;EACpD,IAAI,CAAC\u002F\u002FQ,IAAI,EAAE;IACT,OAAO8\u002FQ,YAAY;EACrB;EACA9\u002FQ,IAAI,GAAGA,IAAI,CAACupQ,IAAI,CAAC,CAAC;EAClB,MAAMr7Q,CAAC,GAAGiO,QAAQ,CAAC6D,IAAI,EAAE,EAAE,CAAC;EAC5B,IAAI,CAACuF,KAAK,CAACrX,CAAC,CAAC,IAAI6xR,QAAQ,CAAC7xR,CAAC,CAAC,EAAE;IAC5B,OAAOA,CAAC;EACV;EACA,OAAO4xR,YAAY;AACrB;AAEA,SAASE,QAAQA,CAAC;EAAEhgR,IAAI;EAAE8\u002FQ,YAAY;EAAEC;AAAS,CAAC,EAAE;EAClD,IAAI,CAAC\u002F\u002FQ,IAAI,EAAE;IACT,OAAO8\u002FQ,YAAY;EACrB;EACA9\u002FQ,IAAI,GAAGA,IAAI,CAACupQ,IAAI,CAAC,CAAC;EAClB,MAAMr7Q,CAAC,GAAGoX,UAAU,CAACtF,IAAI,CAAC;EAC1B,IAAI,CAACuF,KAAK,CAACrX,CAAC,CAAC,IAAI6xR,QAAQ,CAAC7xR,CAAC,CAAC,EAAE;IAC5B,OAAOA,CAAC;EACV;EACA,OAAO4xR,YAAY;AACrB;AAEA,SAASG,UAAUA,CAAC;EAAEjgR,IAAI;EAAE8\u002FQ,YAAY;EAAEC;AAAS,CAAC,EAAE;EACpD,IAAI,CAAC\u002F\u002FQ,IAAI,EAAE;IACT,OAAO8\u002FQ,YAAY;EACrB;EACA9\u002FQ,IAAI,GAAGA,IAAI,CAACupQ,IAAI,CAAC,CAAC;EAClB,IAAIwW,QAAQ,CAAC\u002F\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\u002FL,IAAI,CAAC;IAC\u002FB,IAAI,CAACw7N,IAAI,EAAE;MACTA,IAAI,GAAGh8N,MAAM,CAACuP,MAAM,CAAC,IAAI,CAAC;MAC1B,IAAI,CAACuoR,KAAK,CAACzmR,GAAG,CAAC7Q,IAAI,EAAEw7N,IAAI,CAAC;MAC1B,IAAI,CAAC,IAAI,CAAC+7D,WAAW,EAAE;QACrB,IAAI,CAACA,WAAW,GAAG\u002F7D,IAAI;MACzB;IACF;IACA,IAAIhqN,QAAQ,GAAG,EAAE;IACjB,MAAMwJ,UAAU,GAAGI,UAAU,CAACR,WAAW,CAACI,UAAU,CAAC;IACrD,IAAII,UAAU,CAACR,WAAW,CAACK,WAAW,CAAC,KAAK,CAAC,EAAE;MAC7CzJ,QAAQ,GAAGwJ,UAAU,IAAI,GAAG,GAAG,YAAY,GAAG,QAAQ;IACxD,CAAC,MAAM,IAAIA,UAAU,IAAI,GAAG,EAAE;MAC5BxJ,QAAQ,GAAG,MAAM;IACnB;IAEA,IAAI,CAACA,QAAQ,EAAE;MACb,IAAIimR,OAAO,CAACz3R,IAAI,CAACoD,QAAQ,CAAC,MAAM,CAAC,IAAIq0R,OAAO,CAACrmD,MAAM,EAAEhuO,QAAQ,CAAC,MAAM,CAAC,EAAE;QACrEoO,QAAQ,GAAG,MAAM;MACnB;MACA,IACEimR,OAAO,CAACz3R,IAAI,CAACoD,QAAQ,CAAC,QAAQ,CAAC,IAC\u002FBq0R,OAAO,CAACz3R,IAAI,CAAC83R,QAAQ,CAAC,IAAI,CAAC,IAC3BL,OAAO,CAACrmD,MAAM,EAAEhuO,QAAQ,CAAC,QAAQ,CAAC,IAClCq0R,OAAO,CAACrmD,MAAM,EAAE0mD,QAAQ,CAAC,IAAI,CAAC,EAC9B;QACAtmR,QAAQ,IAAI,QAAQ;MACtB;IACF;IAEA,IAAI,CAACA,QAAQ,EAAE;MACbA,QAAQ,GAAG,SAAS;IACtB;IAEAgqN,IAAI,CAAChqN,QAAQ,CAAC,GAAGimR,OAAO;EAC1B;EAEAM,UAAUA,CAAA,EAAG;IACX,OAAO,IAAI,CAACR,WAAW;EACzB;EAEAS,IAAIA,CAACl\u002FD,QAAQ,EAAEx+M,QAAQ,GAAG,IAAI,EAAE;IAC9B,IAAIkhN,IAAI,GAAG,IAAI,CAAC87D,KAAK,CAACvrR,GAAG,CAAC+sN,QAAQ,CAAC,IAAI,IAAI,CAACzvK,KAAK,CAACt9C,GAAG,CAAC+sN,QAAQ,CAAC;IAC\u002FD,IAAI0C,IAAI,EAAE;MACR,OAAOA,IAAI;IACb;IAEA,MAAM3iL,OAAO,GAAG,6CAA6C;IAC7D,IAAI74C,IAAI,GAAG84N,QAAQ,CAAC5uN,UAAU,CAAC2uC,OAAO,EAAE,EAAE,CAAC;IAC3C2iL,IAAI,GAAG,IAAI,CAAC87D,KAAK,CAACvrR,GAAG,CAAC\u002FL,IAAI,CAAC;IAC3B,IAAIw7N,IAAI,EAAE;MACR,IAAI,CAACnyK,KAAK,CAACx4C,GAAG,CAACioN,QAAQ,EAAE0C,IAAI,CAAC;MAC9B,OAAOA,IAAI;IACb;IACAx7N,IAAI,GAAGA,IAAI,CAACiX,WAAW,CAAC,CAAC;IAEzB,MAAMghR,KAAK,GAAG,EAAE;IAChB,KAAK,MAAM,CAACC,MAAM,EAAET,OAAO,CAAC,IAAI,IAAI,CAACH,KAAK,CAAC7tE,OAAO,CAAC,CAAC,EAAE;MACpD,IAAIyuE,MAAM,CAAChuR,UAAU,CAAC2uC,OAAO,EAAE,EAAE,CAAC,CAAC5hC,WAAW,CAAC,CAAC,CAAC7Y,UAAU,CAAC4B,IAAI,CAAC,EAAE;QACjEi4R,KAAK,CAACt2R,IAAI,CAAC81R,OAAO,CAAC;MACrB;IACF;IAEA,IAAIQ,KAAK,CAAC15R,MAAM,KAAK,CAAC,EAAE;MACtB,KAAK,MAAM,GAAGk5R,OAAO,CAAC,IAAI,IAAI,CAACH,KAAK,CAAC7tE,OAAO,CAAC,CAAC,EAAE;QAC9C,IACEguE,OAAO,CAACE,OAAO,CAAC33R,IAAI,EAChBkK,UAAU,CAAC2uC,OAAO,EAAE,EAAE,CAAC,CACxB5hC,WAAW,CAAC,CAAC,CACb7Y,UAAU,CAAC4B,IAAI,CAAC,EACnB;UACAi4R,KAAK,CAACt2R,IAAI,CAAC81R,OAAO,CAAC;QACrB;MACF;IACF;IAEA,IAAIQ,KAAK,CAAC15R,MAAM,KAAK,CAAC,EAAE;MACtByB,IAAI,GAAGA,IAAI,CAACkK,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC;MACvC,KAAK,MAAM,CAACguR,MAAM,EAAET,OAAO,CAAC,IAAI,IAAI,CAACH,KAAK,CAAC7tE,OAAO,CAAC,CAAC,EAAE;QACpD,IAAIyuE,MAAM,CAAChuR,UAAU,CAAC2uC,OAAO,EAAE,EAAE,CAAC,CAAC5hC,WAAW,CAAC,CAAC,CAAC7Y,UAAU,CAAC4B,IAAI,CAAC,EAAE;UACjEi4R,KAAK,CAACt2R,IAAI,CAAC81R,OAAO,CAAC;QACrB;MACF;IACF;IAEA,IAAIQ,KAAK,CAAC15R,MAAM,KAAK,CAAC,EAAE;MACtB,KAAK,MAAMk5R,OAAO,IAAI,IAAI,CAACH,KAAK,CAAC1mR,MAAM,CAAC,CAAC,EAAE;QACzC,IACE6mR,OAAO,CAACE,OAAO,CAAC33R,IAAI,EAChBkK,UAAU,CAAC2uC,OAAO,EAAE,EAAE,CAAC,CACxB5hC,WAAW,CAAC,CAAC,CACb7Y,UAAU,CAAC4B,IAAI,CAAC,EACnB;UACAi4R,KAAK,CAACt2R,IAAI,CAAC81R,OAAO,CAAC;QACrB;MACF;IACF;IAEA,IAAIQ,KAAK,CAAC15R,MAAM,IAAI,CAAC,EAAE;MACrB,IAAI05R,KAAK,CAAC15R,MAAM,KAAK,CAAC,IAAI+b,QAAQ,EAAE;QAClC9c,IAAI,CAAC,qDAAqDs7N,QAAQ,EAAE,CAAC;MACvE;MACA,IAAI,CAACzvK,KAAK,CAACx4C,GAAG,CAACioN,QAAQ,EAAEm\u002FD,KAAK,CAAC,CAAC,CAAC,CAAC;MAClC,OAAOA,KAAK,CAAC,CAAC,CAAC;IACjB;IAEA,IAAI39Q,QAAQ,IAAI,CAAC,IAAI,CAAC+2M,MAAM,CAACvgN,GAAG,CAACgoN,QAAQ,CAAC,EAAE;MAC1C,IAAI,CAACzH,MAAM,CAAC9+M,GAAG,CAACumN,QAAQ,CAAC;MACzBt7N,IAAI,CAAC,+BAA+Bs7N,QAAQ,EAAE,CAAC;IACjD;IACA,OAAO,IAAI;EACb;AACF;AAEA,SAASq\u002FD,UAAUA,CAACC,OAAO,EAAEC,QAAQ,EAAE;EACrC,IAAID,OAAO,CAACE,OAAO,KAAK,QAAQ,EAAE;IAChC,IAAIF,OAAO,CAACl9Q,MAAM,KAAK,MAAM,EAAE;MAC7B,OAAOm9Q,QAAQ,CAACT,UAAU;IAC5B;IACA,OAAOS,QAAQ,CAAC9kD,MAAM;EACxB,CAAC,MAAM,IAAI6kD,OAAO,CAACl9Q,MAAM,KAAK,MAAM,EAAE;IACpC,OAAOm9Q,QAAQ,CAAC\u002FkD,IAAI;EACtB;EAEA,OAAO+kD,QAAQ,CAACV,OAAO;AACzB;AAEA,SAAS94D,gBAAUA,CAACu5D,OAAO,EAAEG,IAAI,GAAG,KAAK,EAAE;EACzC,IAAId,OAAO,GAAG,IAAI;EAClB,IAAIW,OAAO,EAAE;IACX,MAAMp4R,IAAI,GAAG01R,WAAW,CAAC0C,OAAO,CAACC,QAAQ,CAAC;IAC1C,MAAMA,QAAQ,GAAGD,OAAO,CAACrG,WAAW,CAAC,CAACyG,UAAU,CAACR,IAAI,CAACh4R,IAAI,CAAC;IAC3Dy3R,OAAO,GAAGU,UAAU,CAACC,OAAO,EAAEC,QAAQ,CAAC;EACzC;EAEA,IAAI,CAACZ,OAAO,EAAE;IACZ,OAAO;MACLllD,UAAU,EAAE,EAAE;MACd0K,OAAO,EAAE,CAAC;MACVw7C,SAAS,EAAE;IACb,CAAC;EACH;EAEA,MAAM1oR,IAAI,GAAGqoR,OAAO,CAACroR,IAAI,IAAI,EAAE;EAC\u002FB,MAAMwiO,UAAU,GAAGklD,OAAO,CAACllD,UAAU,GACjChxO,IAAI,CAACwF,GAAG,CAACwxR,IAAI,GAAG,CAAC,GAAG,GAAG,EAAEd,OAAO,CAACllD,UAAU,CAAC,GAC5C,GAAG;EACP,MAAM0K,OAAO,GAAGw6C,OAAO,CAACx6C,OAAO,KAAKl8O,SAAS,GAAG,GAAG,GAAG02R,OAAO,CAACx6C,OAAO;EACrE,OAAO;IACL1K,UAAU,EAAEA,UAAU,GAAGxiO,IAAI;IAC7BktO,OAAO,EAAEA,OAAO,GAAGltO,IAAI;IACvB0oR,SAAS,EAAEl3R,IAAI,CAACwF,GAAG,CAAC,CAAC,EAAEwrO,UAAU,GAAG0K,OAAO,CAAC,GAAGltO;EACjD,CAAC;AACH;;;;;;AC5LwC;AAExC,MAAM2oR,YAAY,GAAG,IAAI;AAEzB,MAAMC,QAAQ,CAAC;EACbz4R,WAAWA,CAACk4R,OAAO,EAAEQ,MAAM,EAAErmD,UAAU,EAAEimD,UAAU,EAAE;IACnD,IAAI,CAACjmD,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACsmD,UAAU,GAAGD,MAAM,IAAI;MAC1BE,GAAG,EAAE,CAAC;MACNC,MAAM,EAAE,CAAC;MACT35N,IAAI,EAAE,CAAC;MACP45N,KAAK,EAAE;IACT,CAAC;IAED,IAAI,CAACZ,OAAO,EAAE;MACZ,CAAC,IAAI,CAACX,OAAO,EAAE,IAAI,CAACW,OAAO,CAAC,GAAG,IAAI,CAACb,WAAW,CAACiB,UAAU,CAAC;MAC3D;IACF;IAEA,IAAI,CAACJ,OAAO,GAAG;MACbC,QAAQ,EAAED,OAAO,CAACC,QAAQ;MAC1BC,OAAO,EAAEF,OAAO,CAACE,OAAO;MACxBp9Q,MAAM,EAAEk9Q,OAAO,CAACl9Q,MAAM;MACtBnL,IAAI,EAAEqoR,OAAO,CAACroR,IAAI;MAClBkpR,aAAa,EAAEb,OAAO,CAACa;IACzB,CAAC;IACD,MAAMZ,QAAQ,GAAGG,UAAU,CAACR,IAAI,CAACI,OAAO,CAACC,QAAQ,CAAC;IAClD,IAAI,CAACA,QAAQ,EAAE;MACb,CAAC,IAAI,CAACZ,OAAO,EAAE,IAAI,CAACW,OAAO,CAAC,GAAG,IAAI,CAACb,WAAW,CAACiB,UAAU,CAAC;MAC3D;IACF;IAEA,IAAI,CAACf,OAAO,GAAGU,UAAU,CAACC,OAAO,EAAEC,QAAQ,CAAC;IAE5C,IAAI,CAAC,IAAI,CAACZ,OAAO,EAAE;MACjB,CAAC,IAAI,CAACA,OAAO,EAAE,IAAI,CAACW,OAAO,CAAC,GAAG,IAAI,CAACb,WAAW,CAACiB,UAAU,CAAC;IAC7D;EACF;EAEAjB,WAAWA,CAACiB,UAAU,EAAE;IAEtB,MAAMh9D,IAAI,GACRg9D,UAAU,CAACR,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IACnCQ,UAAU,CAACR,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,IACpCQ,UAAU,CAACR,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAC\u002FBQ,UAAU,CAACT,UAAU,CAAC,CAAC;IACzB,IAAIv8D,IAAI,EAAEm8D,OAAO,EAAE;MACjB,MAAMF,OAAO,GAAGj8D,IAAI,CAACm8D,OAAO;MAC5B,MAAMv6R,IAAI,GAAGq6R,OAAO,CAAC78Q,WAAW;MAChC,MAAMw9Q,OAAO,GAAG;QACdC,QAAQ,EAAEj7R,IAAI,CAACid,UAAU;QACzBi+Q,OAAO,EAAE,QAAQ;QACjBp9Q,MAAM,EAAE,QAAQ;QAChBnL,IAAI,EAAE,EAAE;QACRkpR,aAAa,EAAE;MACjB,CAAC;MACD,OAAO,CAACxB,OAAO,EAAEW,OAAO,CAAC;IAC3B;IAEA,MAAMA,OAAO,GAAG;MACdC,QAAQ,EAAE,SAAS;MACnBC,OAAO,EAAE,QAAQ;MACjBp9Q,MAAM,EAAE,QAAQ;MAChBnL,IAAI,EAAE,EAAE;MACRkpR,aAAa,EAAE;IACjB,CAAC;IACD,OAAO,CAAC,IAAI,EAAEb,OAAO,CAAC;EACxB;AACF;AAEA,MAAMc,YAAY,CAAC;EACjBh5R,WAAWA,CACTi5R,cAAc,EACdC,iBAAiB,EACjBC,iBAAiB,EACjBb,UAAU,EACV;IACA,IAAI,CAACA,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACx4O,KAAK,GAAG,CACX,IAAI24O,QAAQ,CACVQ,cAAc,EACdC,iBAAiB,EACjBC,iBAAiB,EACjBb,UACF,CAAC,CACF;EACH;EAEAc,QAAQA,CAAClB,OAAO,EAAEQ,MAAM,EAAErmD,UAAU,EAAE;IACpC,MAAMgnD,QAAQ,GAAG,IAAI,CAACv5O,KAAK,CAAC9G,EAAE,CAAC,CAAC,CAAC,CAAC;IAClC,KAAK,MAAMl5C,IAAI,IAAI,CACjB,UAAU,EACV,SAAS,EACT,QAAQ,EACR,MAAM,EACN,eAAe,CAChB,EAAE;MACD,IAAI,CAACo4R,OAAO,CAACp4R,IAAI,CAAC,EAAE;QAClBo4R,OAAO,CAACp4R,IAAI,CAAC,GAAGu5R,QAAQ,CAACnB,OAAO,CAACp4R,IAAI,CAAC;MACxC;IACF;IAEA,KAAK,MAAMA,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;MACrD,IAAIqb,KAAK,CAACu9Q,MAAM,CAAC54R,IAAI,CAAC,CAAC,EAAE;QACvB44R,MAAM,CAAC54R,IAAI,CAAC,GAAGu5R,QAAQ,CAACV,UAAU,CAAC74R,IAAI,CAAC;MAC1C;IACF;IAEA,MAAMw5R,QAAQ,GAAG,IAAIb,QAAQ,CAC3BP,OAAO,EACPQ,MAAM,EACNrmD,UAAU,IAAIgnD,QAAQ,CAAChnD,UAAU,EACjC,IAAI,CAACimD,UACP,CAAC;IACD,IAAI,CAACgB,QAAQ,CAAC\u002FB,OAAO,EAAE;MACrB+B,QAAQ,CAAC\u002FB,OAAO,GAAG8B,QAAQ,CAAC9B,OAAO;IACrC;IAEA,IAAI,CAACz3O,KAAK,CAACr+C,IAAI,CAAC63R,QAAQ,CAAC;EAC3B;EAEAC,OAAOA,CAAA,EAAG;IACR,IAAI,CAACz5O,KAAK,CAAC3gB,GAAG,CAAC,CAAC;EAClB;EAEAq6P,OAAOA,CAAA,EAAG;IACR,OAAO,IAAI,CAAC15O,KAAK,CAAC9G,EAAE,CAAC,CAAC,CAAC,CAAC;EAC1B;AACF;AAKA,MAAMygP,WAAW,CAAC;EAChBz5R,WAAWA,CAACi5R,cAAc,EAAEC,iBAAiB,EAAEC,iBAAiB,EAAE\u002FB,KAAK,EAAE;IACvE,IAAI,CAAC18D,MAAM,GAAG,EAAE;IAChB,IAAI,CAACg\u002FD,YAAY,GAAG,IAAIV,YAAY,CAClCC,cAAc,EACdC,iBAAiB,EACjBC,iBAAiB,EACjB\u002FB,KACF,CAAC;IACD,IAAI,CAACuC,WAAW,GAAG,CAAC;EACtB;EAEAP,QAAQA,CAAClB,OAAO,EAAEQ,MAAM,EAAErmD,UAAU,EAAE;IACpC,IAAI,CAACqnD,YAAY,CAACN,QAAQ,CAAClB,OAAO,EAAEQ,MAAM,EAAErmD,UAAU,CAAC;EACzD;EAEAknD,OAAOA,CAACrB,OAAO,EAAE;IACf,OAAO,IAAI,CAACwB,YAAY,CAACH,OAAO,CAAC,CAAC;EACpC;EAEAK,OAAOA,CAAA,EAAG;IACR,MAAMP,QAAQ,GAAG,IAAI,CAACK,YAAY,CAACF,OAAO,CAAC,CAAC;IAC5C,IAAI,CAACG,WAAW,IAAIN,QAAQ,CAACV,UAAU,CAACC,GAAG,GAAGS,QAAQ,CAACV,UAAU,CAACE,MAAM;EAC1E;EAEAgB,SAASA,CAACj4R,GAAG,EAAE;IACb,IAAI,CAACA,GAAG,EAAE;MACR;IACF;IAEA,MAAMy3R,QAAQ,GAAG,IAAI,CAACK,YAAY,CAACF,OAAO,CAAC,CAAC;IAC5C,MAAMxyB,QAAQ,GAAGqyB,QAAQ,CAACnB,OAAO,CAACroR,IAAI;IACtC,IAAIwpR,QAAQ,CAAC9B,OAAO,EAAE;MACpB,MAAMwB,aAAa,GAAGM,QAAQ,CAACnB,OAAO,CAACa,aAAa;MACpD,MAAMxB,OAAO,GAAG8B,QAAQ,CAAC9B,OAAO;MAChC,MAAMuC,cAAc,GAAGvC,OAAO,CAACllD,UAAU,IAAI,GAAG;MAChD,MAAMA,UAAU,GACdgnD,QAAQ,CAAChnD,UAAU,IAAIhxO,IAAI,CAACwF,GAAG,CAAC,GAAG,EAAEizR,cAAc,CAAC,GAAG9yB,QAAQ;MACjE,MAAMjqB,OAAO,GAAGw6C,OAAO,CAACx6C,OAAO,KAAKl8O,SAAS,GAAG,GAAG,GAAG02R,OAAO,CAACx6C,OAAO;MACrE,MAAMg9C,KAAK,GAAGD,cAAc,GAAG\u002F8C,OAAO;MACtC,MAAMi9C,eAAe,GAAG34R,IAAI,CAACwF,GAAG,CAAC,CAAC,EAAEkzR,KAAK,CAAC,GAAG\u002FyB,QAAQ;MACrD,MAAM\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\u002FB,KAAK,EAAE,CAAC;IACR\u002FlB,EAAE,EAAE,IAAI;IACR0iR,QAAQ,EAAE,IAAI;IACd9pC,QAAQ,EAAE\u002FM,SAAS,CAAC61C;EACtB,CAAC,CACF;EAED,IAAI\u002F1R,GAAG,GAAGhF,IAAI,CAACzB,MAAM;EAErB,OAAOyG,GAAG,GAAGovP,IAAI,CAAC71P,MAAM,EAAE;IACxB,MAAMwiO,IAAI,GAAG\u002F7N,GAAG;IAChB,MAAM6T,IAAI,GAAGu7O,IAAI,CAAC9pP,MAAM,CAACtF,GAAG,EAAE,CAAC;IAC\u002FB,IAAI6T,IAAI,KAAK,GAAG,EAAE;MAChBva,KAAK,GAAG81P,IAAI,CAAC3sP,KAAK,CAACzC,GAAG,CAAC,CAAC1G,KAAK,CAACw8R,YAAY,CAAC;MAC3C,IAAI,CAACx8R,KAAK,EAAE;QACVd,IAAI,CAAC,uCAAuC,CAAC;QAC7C,OAAO,IAAI;MACb;MACAu+Q,MAAM,CAAC7iO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC9Z,KAAK,GAAGsnL,UAAU,CAACpoN,KAAK,CAAC,CAAC,CAAC,CAAC;MAC1C0G,GAAG,IAAI1G,KAAK,CAAC,CAAC,CAAC,CAACC,MAAM,GAAG,CAAC;MAC1B;IACF;IAEA,IAAI0zP,QAAQ;IACZ,QAAQmC,IAAI,CAAC9pP,MAAM,CAACtF,GAAG,CAAC;MACtB,KAAK,GAAG;QACN,IAAI,CAAC42R,aAAa,EAAE;UAClB,OAAO,IAAI;QACb;QACA52R,GAAG,EAAE;QACLitP,QAAQ,GAAG\u002FM,SAAS,CAAC81C,MAAM;QAC3B;MACF,KAAK,GAAG;QACNh2R,GAAG,EAAE;QACLitP,QAAQ,GAAG\u002FM,SAAS,CAAC+1C,OAAO;QAC5B;MACF,KAAK,GAAG;QACN,IAAIY,MAAM,EAAE;UACVr+R,IAAI,CACF,wFACF,CAAC;UACD,OAAO,IAAI;QACb;QAEAy0P,QAAQ,GAAG\u002FM,SAAS,CAACg2C,UAAU;QAC\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\u002FB,MAAM+uR,UAAU,GAAG\u002FuR,MAAM,CAAC,CAAC;AAE3B,IAAIgvR,GAAG,GAAG,CAAC;AAEX,MAAMC,WAAW,GAAGvJ,YAAY,CAACG,QAAQ,CAACrmP,EAAE;AAE5C,MAAM0vP,SAAS,CAAC;EACd59R,WAAWA,CAAC69R,IAAI,EAAE\u002F9R,IAAI,EAAEg+R,WAAW,GAAG,KAAK,EAAE;IAC3C,IAAI,CAAClL,YAAY,CAAC,GAAGiL,IAAI;IACzB,IAAI,CAAChL,SAAS,CAAC,GAAG\u002FyR,IAAI;IACtB,IAAI,CAACq9R,YAAY,CAAC,GAAGW,WAAW;IAChC,IAAI,CAACR,OAAO,CAAC,GAAG,IAAI;IACpB,IAAI,CAACV,SAAS,CAAC,GAAG,EAAE;IACpB,IAAI,CAAC1I,IAAI,CAAC,GAAG,GAAGp0R,IAAI,GAAG49R,GAAG,EAAE,EAAE;IAC9B,IAAI,CAAC7L,WAAW,CAAC,GAAG,IAAI;EAC1B;EAEA,IAAIoK,WAAWA,CAAA,EAAG;IAChB,OAAO,IAAI;EACb;EAEA,IAAIE,gBAAgBA,CAAA,EAAG;IACrB,OAAO,KAAK;EACd;EAEAK,WAAWA,CAAClkR,IAAI,EAAE;IAChB,IAAIsgQ,IAAI,GAAG,IAAI;MACbh4O,IAAI,GAAG,IAAI;IACb,KAAK,MAAM;MAAE9gC,IAAI;MAAEo\u002FB;IAAM,CAAC,IAAI5mB,IAAI,EAAE;MAClC,KAAK,IAAInX,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAGkyR,QAAQ,CAACl9P,KAAK,CAAC,GAAGA,KAAK,GAAG,CAAC,EAAE\u002F9B,CAAC,IAAI+I,EAAE,EAAE\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\u002F\u002FR,KAAK,CAACq9R,eAAe,CAAC,CAAC0C,UAAU,EAAE3kE,GAAG,EAAEokE,SAAS,CAAC;QACpD;QACA;MACF;MAEA,IAAIO,UAAU,KAAK,IAAI,EAAE;QACvB,MAAM\u002FhB,KAAK,GAAG+hB,UAAU,CAAC7O,MAAM,CAAC,CAAC,CAAC;QAClClT,KAAK,CAACkgB,OAAO,CAAC,GAAG,IAAI;QACrB,IAAI,CAACx9R,IAAI,CAAC,GAAGs9Q,KAAK;QAClB,IAAI,CAACwf,SAAS,CAAC,CAACn7R,IAAI,CAAC27Q,KAAK,CAAC;QAC3BA,KAAK,CAACmgB,wBAAwB,CAAC,CAAC\u002FiE,GAAG,EAAEokE,SAAS,CAAC;MACjD;IACF;EACF;EAEA,QAAQ\u002FB,eAAe,EAAE39R,GAAG,EAAE;IAC5B,IAAI0E,KAAK,CAAC4I,OAAO,CAACtN,GAAG,CAAC,EAAE;MACtB,OAAOA,GAAG,CAACsZ,GAAG,CAACxQ,CAAC,IAAI41R,SAAS,CAACf,eAAe,CAAC,CAAC70R,CAAC,CAAC,CAAC;IACpD;IACA,IAAI,OAAO9I,GAAG,KAAK,QAAQ,IAAIA,GAAG,KAAK,IAAI,EAAE;MAC3C,OAAOI,MAAM,CAACy3P,MAAM,CAAC,CAAC,CAAC,EAAE73P,GAAG,CAAC;IAC\u002FB;IACA,OAAOA,GAAG;EACZ;EAEA,CAACoxR,MAAM,IAAI;IACT,MAAM7+Q,KAAK,GAAGnS,MAAM,CAACuP,MAAM,CAACvP,MAAM,CAAC+iB,cAAc,CAAC,IAAI,CAAC,CAAC;IACxD,KAAK,MAAM+8Q,OAAO,IAAI9\u002FR,MAAM,CAAC+\u002FR,qBAAqB,CAAC,IAAI,CAAC,EAAE;MACxD,IAAI;QACF5tR,KAAK,CAAC2tR,OAAO,CAAC,GAAG,IAAI,CAACA,OAAO,CAAC;MAChC,CAAC,CAAC,MAAM;QACNngS,MAAM,CAACwS,KAAK,EAAE2tR,OAAO,EAAE,IAAI,CAACA,OAAO,CAAC,CAAC;MACvC;IACF;IACA3tR,KAAK,CAACyiR,IAAI,CAAC,GAAG,GAAGziR,KAAK,CAACohR,SAAS,CAAC,GAAG6K,GAAG,EAAE,EAAE;IAC3CjsR,KAAK,CAACmrR,SAAS,CAAC,GAAG,EAAE;IAErB,KAAK,MAAM98R,IAAI,IAAIR,MAAM,CAAC8+R,mBAAmB,CAAC,IAAI,CAAC,EAAE;MACnD,IAAI,IAAI,CAACzB,eAAe,CAAC,CAAC\u002FrR,GAAG,CAAC9Q,IAAI,CAAC,EAAE;QACnC2R,KAAK,CAAC3R,IAAI,CAAC,GAAG89R,SAAS,CAACf,eAAe,CAAC,CAAC,IAAI,CAAC\u002F8R,IAAI,CAAC,CAAC;QACpD;MACF;MACA,MAAMV,KAAK,GAAG,IAAI,CAACU,IAAI,CAAC;MACxB2R,KAAK,CAAC3R,IAAI,CAAC,GACTV,KAAK,YAAY4+R,cAAc,GAC3B,IAAIA,cAAc,CAAC5+R,KAAK,CAACg+R,IAAI,CAAC,CAAC,GAC\u002FB,IAAI;IACZ;IAEA,KAAK,MAAMhgB,KAAK,IAAI,IAAI,CAACwf,SAAS,CAAC,EAAE;MACnC,MAAM98R,IAAI,GAAGs9Q,KAAK,CAACyV,SAAS,CAAC;MAC7B,MAAMyM,WAAW,GAAGliB,KAAK,CAACkT,MAAM,CAAC,CAAC,CAAC;MACnC7+Q,KAAK,CAACmrR,SAAS,CAAC,CAACn7R,IAAI,CAAC69R,WAAW,CAAC;MAClCA,WAAW,CAAChC,OAAO,CAAC,GAAG7rR,KAAK;MAC5B,IAAIA,KAAK,CAAC3R,IAAI,CAAC,KAAK,IAAI,EAAE;QACxB2R,KAAK,CAAC3R,IAAI,CAAC,GAAGw\u002FR,WAAW;MAC3B,CAAC,MAAM;QACL7tR,KAAK,CAAC3R,IAAI,CAAC,CAAC88R,SAAS,CAAC,CAACn7R,IAAI,CAAC69R,WAAW,CAAC;MAC1C;IACF;IAEA,OAAO7tR,KAAK;EACd;EAEA,CAAC8\u002FQ,YAAY,EAAEzxR,IAAI,GAAG,IAAI,EAAE;IAC1B,IAAI,CAACA,IAAI,EAAE;MACT,OAAO,IAAI,CAAC88R,SAAS,CAAC;IACxB;IAEA,OAAO,IAAI,CAACA,SAAS,CAAC,CAAC9gQ,MAAM,CAAC50B,CAAC,IAAIA,CAAC,CAAC2rR,SAAS,CAAC,KAAK\u002FyR,IAAI,CAAC;EAC3D;EAEA,CAACmxR,mBAAmB,EAAEnxR,IAAI,EAAE;IAC1B,OAAO,IAAI,CAACA,IAAI,CAAC;EACnB;EAEA,CAACoxR,kBAAkB,EAAEpxR,IAAI,EAAEy\u002FR,cAAc,EAAEp4R,KAAK,GAAG,IAAI,EAAE;IACvD,OAAOvD,KAAK,CAACC,IAAI,CAAC,IAAI,CAACstR,oBAAoB,CAAC,CAACrxR,IAAI,EAAEy\u002FR,cAAc,EAAEp4R,KAAK,CAAC,CAAC;EAC5E;EAEA,EAAEgqR,oBAAoB,EAAErxR,IAAI,EAAEy\u002FR,cAAc,EAAEp4R,KAAK,GAAG,IAAI,EAAE;IAC1D,IAAIrH,IAAI,KAAK,QAAQ,EAAE;MACrB,MAAM,IAAI,CAACw9R,OAAO,CAAC;MACnB;IACF;IAEA,KAAK,MAAMlgB,KAAK,IAAI,IAAI,CAACwf,SAAS,CAAC,EAAE;MACnC,IAAIxf,KAAK,CAACyV,SAAS,CAAC,KAAK\u002FyR,IAAI,EAAE;QAC7B,MAAMs9Q,KAAK;MACb;MAEA,IAAIA,KAAK,CAACt9Q,IAAI,KAAKA,IAAI,EAAE;QACvB,MAAMs9Q,KAAK;MACb;MAEA,IAAImiB,cAAc,IAAIniB,KAAK,CAACqV,cAAc,CAAC,CAAC,CAAC,EAAE;QAC7C,OAAOrV,KAAK,CAAC+T,oBAAoB,CAAC,CAACrxR,IAAI,EAAEy\u002FR,cAAc,EAAE,KAAK,CAAC;MACjE;IACF;IAEA,IAAIp4R,KAAK,IAAI,IAAI,CAACw1R,eAAe,CAAC,CAAC\u002FrR,GAAG,CAAC9Q,IAAI,CAAC,EAAE;MAC5C,MAAM,IAAI0\u002FR,YAAY,CAAC,IAAI,EAAE1\u002FR,IAAI,EAAE,IAAI,CAACA,IAAI,CAAC,CAAC;IAChD;EACF;AACF;AAEA,MAAMk+R,cAAc,CAAC;EACnBh+R,WAAWA,CAAC6G,GAAG,GAAGktC,QAAQ,EAAE;IAC1B,IAAI,CAACqpP,IAAI,CAAC,GAAGv2R,GAAG;IAChB,IAAI,CAAC+1R,SAAS,CAAC,GAAG,EAAE;EACtB;EAEA,IAAIX,WAAWA,CAAA,EAAG;IAChB,OAAO,KAAK;EACd;EAEA,IAAIE,gBAAgBA,CAAA,EAAG;IACrB,OAAO,IAAI;EACb;EAEA16R,IAAIA,CAAC27Q,KAAK,EAAE;IACV,MAAM1lQ,GAAG,GAAG,IAAI,CAACklR,SAAS,CAAC,CAACv+R,MAAM;IAClC,IAAIqZ,GAAG,IAAI,IAAI,CAAC0lR,IAAI,CAAC,EAAE;MACrB,IAAI,CAACR,SAAS,CAAC,CAACn7R,IAAI,CAAC27Q,KAAK,CAAC;MAC3B,OAAO,IAAI;IACb;IACA9\u002FQ,IAAI,CACF,eAAe8\u002FQ,KAAK,CAACyV,SAAS,CAAC,0BAA0B,IAAI,CAACuK,IAAI,CAAC,WACrE,CAAC;IACD,OAAO,KAAK;EACd;EAEAlqR,OAAOA,CAAA,EAAG;IACR,OAAO,IAAI,CAAC0pR,SAAS,CAAC,CAACv+R,MAAM,KAAK,CAAC;EACrC;EAEAo\u002FQ,IAAIA,CAAA,EAAG;IACL,OAAO,IAAI,CAACmf,SAAS,CAAC,CAACv+R,MAAM,KAAK,CAAC,GAC\u002FB,IAAI,CAACu+R,SAAS,CAAC,CAAC,CAAC,CAAC,CAAClM,KAAK,CAAC,CAAC,CAAC,GAC3B,IAAI,CAACkM,SAAS,CAAC,CAACpkR,GAAG,CAACxQ,CAAC,IAAIA,CAAC,CAAC0oR,KAAK,CAAC,CAAC,CAAC,CAAC;EAC1C;EAEA,CAACJ,MAAM,IAAI;IACT,MAAM7+Q,KAAK,GAAG,IAAIusR,cAAc,CAAC,IAAI,CAACZ,IAAI,CAAC,CAAC;IAC5C3rR,KAAK,CAACmrR,SAAS,CAAC,GAAG,IAAI,CAACA,SAAS,CAAC,CAACpkR,GAAG,CAACtR,CAAC,IAAIA,CAAC,CAACopR,MAAM,CAAC,CAAC,CAAC,CAAC;IACxD,OAAO7+Q,KAAK;EACd;EAEA,IAAIwtB,QAAQA,CAAA,EAAG;IACb,OAAO,IAAI,CAAC29P,SAAS,CAAC;EACxB;EAEAprR,KAAKA,CAAA,EAAG;IACN,IAAI,CAACorR,SAAS,CAAC,CAACv+R,MAAM,GAAG,CAAC;EAC5B;AACF;AAEA,MAAMmhS,YAAY,CAAC;EACjBx\u002FR,WAAWA,CAAC4gC,IAAI,EAAE9gC,IAAI,EAAEV,KAAK,EAAE;IAC7B,IAAI,CAACk+R,OAAO,CAAC,GAAG18P,IAAI;IACpB,IAAI,CAACiyP,SAAS,CAAC,GAAG\u002FyR,IAAI;IACtB,IAAI,CAAC0wR,QAAQ,CAAC,GAAGpxR,KAAK;IACtB,IAAI,CAACmxR,SAAS,CAAC,GAAG,KAAK;IACvB,IAAI,CAAC2D,IAAI,CAAC,GAAG,YAAYwJ,GAAG,EAAE,EAAE;EAClC;EAEA,CAAC\u002FL,UAAU,IAAI;IACb,OAAO,IAAI,CAAC2L,OAAO,CAAC;EACtB;EAEA,CAAClL,YAAY,IAAI;IACf,OAAO,IAAI;EACb;EAEA,CAAChB,aAAa,IAAI;IAChB,OAAO,IAAI,CAACZ,QAAQ,CAAC,CAACrR,IAAI,CAAC,CAAC;EAC9B;EAEA,CAACwU,SAAS,EAAEv0R,KAAK,EAAE;IACjBA,KAAK,GAAGA,KAAK,CAACA,KAAK,IAAI,EAAE;IACzB,IAAI,CAACoxR,QAAQ,CAAC,GAAGpxR,KAAK,CAAC2E,QAAQ,CAAC,CAAC;EACnC;EAEA,CAAC8vR,KAAK,IAAI;IACR,OAAO,IAAI,CAACrD,QAAQ,CAAC;EACvB;EAEA,CAAC6B,aAAa,EAAEpgR,MAAM,EAAE;IACtB,OAAO,IAAI,CAACqrR,OAAO,CAAC,KAAKrrR,MAAM,IAAI,IAAI,CAACqrR,OAAO,CAAC,CAACjL,aAAa,CAAC,CAACpgR,MAAM,CAAC;EACzE;AACF;AAEA,MAAM8rR,SAAS,SAASH,SAAS,CAAC;EAChC59R,WAAWA,CAAC69R,IAAI,EAAE\u002F9R,IAAI,EAAEy7Q,UAAU,GAAG,CAAC,CAAC,EAAE;IACvC,KAAK,CAACsiB,IAAI,EAAE\u002F9R,IAAI,CAAC;IACjB,IAAI,CAAC0wR,QAAQ,CAAC,GAAG,EAAE;IACnB,IAAI,CAACsM,UAAU,CAAC,GAAG,IAAI;IACvB,IAAIh9R,IAAI,KAAK,OAAO,EAAE;MACpB,MAAM0Y,GAAG,GAAG,IAAI\u002FM,GAAG,CAAC,CAAC;MACrB,IAAI,CAACixR,WAAW,CAAC,GAAGlkR,GAAG;MACvB,KAAK,MAAM,CAACijQ,QAAQ,EAAEr8Q,KAAK,CAAC,IAAIE,MAAM,CAACiqN,OAAO,CAACgyD,UAAU,CAAC,EAAE;QAC1D\u002FiQ,GAAG,CAAC7H,GAAG,CAAC8qQ,QAAQ,EAAE,IAAI+jB,YAAY,CAAC,IAAI,EAAE\u002FjB,QAAQ,EAAEr8Q,KAAK,CAAC,CAAC;MAC5D;MACA,IAAIm8Q,UAAU,CAAC6P,cAAc,CAAC0H,aAAa,CAAC,EAAE;QAE5C,MAAM2M,QAAQ,GAAGlkB,UAAU,CAACuX,aAAa,CAAC,CAAC4M,GAAG,CAACD,QAAQ;QACvD,IAAIA,QAAQ,KAAK5+R,SAAS,EAAE;UAC1B,IAAI4+R,QAAQ,KAAK,WAAW,EAAE;YAC5B,IAAI,CAAC3C,UAAU,CAAC,GAAG,KAAK;UAC1B,CAAC,MAAM,IAAI2C,QAAQ,KAAK,WAAW,EAAE;YACnC,IAAI,CAAC3C,UAAU,CAAC,GAAG,IAAI;UACzB;QACF;MACF;IACF;IACA,IAAI,CAACvM,SAAS,CAAC,GAAG,KAAK;EACzB;EAEA,CAACyD,SAAS,EAAE\u002FnR,GAAG,EAAE;IACf,MAAM0zR,OAAO,GAAG,IAAI,CAAC9M,SAAS,CAAC;IAC\u002FB,IAAI8M,OAAO,KAAK,OAAO,EAAE;MACvB1zR,GAAG,CAACxK,IAAI,CAACsY,iBAAiB,CAAC,IAAI,CAACy2Q,QAAQ,CAAC,CAAC,CAAC;MAC3C;IACF;IACA,MAAMoP,WAAW,GAAGr1R,kBAAkB,CAACo1R,OAAO,CAAC;IAC\u002FC,MAAMlU,MAAM,GAAG,IAAI,CAACmH,YAAY,CAAC,KAAK+K,WAAW,GAAG,MAAM,GAAG,EAAE;IAC\u002FD1xR,GAAG,CAACxK,IAAI,CAAC,IAAIgqR,MAAM,GAAGmU,WAAW,EAAE,CAAC;IACpC,KAAK,MAAM,CAAC9\u002FR,IAAI,EAAEV,KAAK,CAAC,IAAI,IAAI,CAACs9R,WAAW,CAAC,CAACnzE,OAAO,CAAC,CAAC,EAAE;MACvD,MAAMs2E,QAAQ,GAAGt1R,kBAAkB,CAACzK,IAAI,CAAC;MACzCmM,GAAG,CAACxK,IAAI,CAAC,IAAIo+R,QAAQ,KAAK9lR,iBAAiB,CAAC3a,KAAK,CAACoxR,QAAQ,CAAC,CAAC,GAAG,CAAC;IAClE;IACA,IAAI,IAAI,CAACsM,UAAU,CAAC,KAAK,IAAI,EAAE;MAC7B,IAAI,IAAI,CAACA,UAAU,CAAC,EAAE;QACpB7wR,GAAG,CAACxK,IAAI,CAAC,2BAA2B,CAAC;MACvC,CAAC,MAAM;QACLwK,GAAG,CAACxK,IAAI,CAAC,2BAA2B,CAAC;MACvC;IACF;IACA,IAAI,CAAC,IAAI,CAAC+uR,QAAQ,CAAC,IAAI,IAAI,CAACoM,SAAS,CAAC,CAACv+R,MAAM,KAAK,CAAC,EAAE;MACnD4N,GAAG,CAACxK,IAAI,CAAC,IAAI,CAAC;MACd;IACF;IAEAwK,GAAG,CAACxK,IAAI,CAAC,GAAG,CAAC;IACb,IAAI,IAAI,CAAC+uR,QAAQ,CAAC,EAAE;MAClB,IAAI,OAAO,IAAI,CAACA,QAAQ,CAAC,KAAK,QAAQ,EAAE;QACtCvkR,GAAG,CAACxK,IAAI,CAACsY,iBAAiB,CAAC,IAAI,CAACy2Q,QAAQ,CAAC,CAAC,CAAC;MAC7C,CAAC,MAAM;QACL,IAAI,CAACA,QAAQ,CAAC,CAACwD,SAAS,CAAC,CAAC\u002FnR,GAAG,CAAC;MAChC;IACF,CAAC,MAAM;MACL,KAAK,MAAMmxQ,KAAK,IAAI,IAAI,CAACwf,SAAS,CAAC,EAAE;QACnCxf,KAAK,CAAC4W,SAAS,CAAC,CAAC\u002FnR,GAAG,CAAC;MACvB;IACF;IACAA,GAAG,CAACxK,IAAI,CAAC,KAAKgqR,MAAM,GAAGmU,WAAW,GAAG,CAAC;EACxC;EAEA,CAAC7M,QAAQ,EAAE3V,KAAK,EAAE;IAChB,IAAI,IAAI,CAACoT,QAAQ,CAAC,EAAE;MAClB,MAAM5vP,IAAI,GAAG,IAAIm9P,SAAS,CAAC,IAAI,CAACnL,YAAY,CAAC,EAAE,OAAO,CAAC;MACvD,IAAI,CAAC3C,YAAY,CAAC,CAACrvP,IAAI,CAAC;MACxBA,IAAI,CAAC4vP,QAAQ,CAAC,GAAG,IAAI,CAACA,QAAQ,CAAC;MAC\u002FB,IAAI,CAACA,QAAQ,CAAC,GAAG,EAAE;IACrB;IACA,IAAI,CAACP,YAAY,CAAC,CAAC7S,KAAK,CAAC;IACzB,OAAO,IAAI;EACb;EAEA,CAAC6V,OAAO,EAAErxR,GAAG,EAAE;IACb,IAAI,CAAC4uR,QAAQ,CAAC,IAAI5uR,GAAG;EACvB;EAEA,CAACgvR,SAAS,IAAI;IACZ,IAAI,IAAI,CAACJ,QAAQ,CAAC,IAAI,IAAI,CAACoM,SAAS,CAAC,CAACv+R,MAAM,GAAG,CAAC,EAAE;MAChD,MAAMuiC,IAAI,GAAG,IAAIm9P,SAAS,CAAC,IAAI,CAACnL,YAAY,CAAC,EAAE,OAAO,CAAC;MACvD,IAAI,CAAC3C,YAAY,CAAC,CAACrvP,IAAI,CAAC;MACxBA,IAAI,CAAC4vP,QAAQ,CAAC,GAAG,IAAI,CAACA,QAAQ,CAAC;MAC\u002FB,OAAO,IAAI,CAACA,QAAQ,CAAC;IACvB;EACF;EAEA,CAACuD,OAAO,IAAI;IACV,IAAI,IAAI,CAAClB,SAAS,CAAC,KAAK,OAAO,EAAE;MAC\u002FB,OAAO8D,UAAU,CAACG,OAAO,CAAC;QACxBh3R,IAAI,EAAE,OAAO;QACbV,KAAK,EAAE,IAAI,CAACoxR,QAAQ;MACtB,CAAC,CAAC;IACJ;IAEA,OAAOmG,UAAU,CAACE,KAAK;EACzB;EAEA,CAACtF,YAAY,EAAEzxR,IAAI,GAAG,IAAI,EAAE;IAC1B,IAAI,CAACA,IAAI,EAAE;MACT,OAAO,IAAI,CAAC88R,SAAS,CAAC;IACxB;IAEA,OAAO,IAAI,CAACA,SAAS,CAAC,CAAC9gQ,MAAM,CAAC50B,CAAC,IAAIA,CAAC,CAAC2rR,SAAS,CAAC,KAAK\u002FyR,IAAI,CAAC;EAC3D;EAEA,CAACixR,cAAc,IAAI;IACjB,OAAO,IAAI,CAAC2L,WAAW,CAAC;EAC1B;EAEA,CAACzL,mBAAmB,EAAEnxR,IAAI,EAAE;IAC1B,MAAMV,KAAK,GAAG,IAAI,CAACs9R,WAAW,CAAC,CAAC7wR,GAAG,CAAC\u002FL,IAAI,CAAC;IACzC,IAAIV,KAAK,KAAKyB,SAAS,EAAE;MACvB,OAAOzB,KAAK;IACd;IACA,OAAO,IAAI,CAACmyR,YAAY,CAAC,CAACzxR,IAAI,CAAC;EACjC;EAEA,EAAEqxR,oBAAoB,EAAErxR,IAAI,EAAEy\u002FR,cAAc,EAAE;IAC5C,MAAMngS,KAAK,GAAG,IAAI,CAACs9R,WAAW,CAAC,CAAC7wR,GAAG,CAAC\u002FL,IAAI,CAAC;IACzC,IAAIV,KAAK,EAAE;MACT,MAAMA,KAAK;IACb;IAEA,KAAK,MAAMg+Q,KAAK,IAAI,IAAI,CAACwf,SAAS,CAAC,EAAE;MACnC,IAAIxf,KAAK,CAACyV,SAAS,CAAC,KAAK\u002FyR,IAAI,EAAE;QAC7B,MAAMs9Q,KAAK;MACb;MAEA,IAAImiB,cAAc,EAAE;QAClB,OAAOniB,KAAK,CAAC+T,oBAAoB,CAAC,CAACrxR,IAAI,EAAEy\u002FR,cAAc,CAAC;MAC1D;IACF;EACF;EAEA,EAAEzO,eAAe,EAAEhxR,IAAI,EAAEggS,YAAY,EAAE;IACrC,MAAM1gS,KAAK,GAAG,IAAI,CAACs9R,WAAW,CAAC,CAAC7wR,GAAG,CAAC\u002FL,IAAI,CAAC;IACzC,IAAIV,KAAK,KAAK,CAAC0gS,YAAY,IAAI,CAAC1gS,KAAK,CAACmxR,SAAS,CAAC,CAAC,EAAE;MACjD,MAAMnxR,KAAK;IACb;IACA,KAAK,MAAMg+Q,KAAK,IAAI,IAAI,CAACwf,SAAS,CAAC,EAAE;MACnC,OAAOxf,KAAK,CAAC0T,eAAe,CAAC,CAAChxR,IAAI,EAAEggS,YAAY,CAAC;IACnD;EACF;EAEA,EAAExO,wBAAwB,EAAExxR,IAAI,EAAEy\u002FR,cAAc,EAAEO,YAAY,EAAE;IAC9D,KAAK,MAAM1iB,KAAK,IAAI,IAAI,CAACwf,SAAS,CAAC,EAAE;MACnC,IAAIxf,KAAK,CAACyV,SAAS,CAAC,KAAK\u002FyR,IAAI,KAAK,CAACggS,YAAY,IAAI,CAAC1iB,KAAK,CAACmT,SAAS,CAAC,CAAC,EAAE;QACrE,MAAMnT,KAAK;MACb;MAEA,IAAImiB,cAAc,EAAE;QAClB,OAAOniB,KAAK,CAACkU,wBAAwB,CAAC,CACpCxxR,IAAI,EACJy\u002FR,cAAc,EACdO,YACF,CAAC;MACH;IACF;EACF;EAEA,CAAC1N,YAAY,IAAI;IACf,IAAI,IAAI,CAAC0K,UAAU,CAAC,KAAK,IAAI,EAAE;MAC7B,OACE,IAAI,CAACF,SAAS,CAAC,CAACv+R,MAAM,KAAK,CAAC,IAC5B,IAAI,CAACu+R,SAAS,CAAC,CAAC,CAAC,CAAC,CAAChK,YAAY,CAAC,KAAKwB,YAAY,CAACY,KAAK,CAAC9mP,EAAE;IAE9D;IACA,OAAO,IAAI,CAAC4uP,UAAU,CAAC;EACzB;EAEA,CAAC1L,aAAa,IAAI;IAChB,IAAI,IAAI,CAAC0L,UAAU,CAAC,KAAK,IAAI,EAAE;MAC7B,IAAI,IAAI,CAACF,SAAS,CAAC,CAACv+R,MAAM,KAAK,CAAC,EAAE;QAChC,OAAO,IAAI,CAACmyR,QAAQ,CAAC,CAACrR,IAAI,CAAC,CAAC;MAC9B;MACA,IAAI,IAAI,CAACyd,SAAS,CAAC,CAAC,CAAC,CAAC,CAAChK,YAAY,CAAC,KAAKwB,YAAY,CAACY,KAAK,CAAC9mP,EAAE,EAAE;QAC9D,OAAO,IAAI,CAAC0uP,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC\u002FI,KAAK,CAAC,CAAC,CAAC,CAAC1U,IAAI,CAAC,CAAC;MAC3C;MACA,OAAO,IAAI;IACb;IACA,OAAO,IAAI,CAACqR,QAAQ,CAAC,CAACrR,IAAI,CAAC,CAAC;EAC9B;EAEA,CAACwU,SAAS,EAAEv0R,KAAK,EAAE;IACjBA,KAAK,GAAGA,KAAK,CAACA,KAAK,IAAI,EAAE;IACzB,IAAI,CAACoxR,QAAQ,CAAC,GAAGpxR,KAAK,CAAC2E,QAAQ,CAAC,CAAC;EACnC;EAEA,CAAC2sR,KAAK,EAAEqP,KAAK,GAAG,KAAK,EAAE;IACrB,MAAM1B,MAAM,GAAG\u002F+R,MAAM,CAACuP,MAAM,CAAC,IAAI,CAAC;IAClC,IAAIkxR,KAAK,EAAE;MACT1B,MAAM,CAAC2B,GAAG,GAAG,IAAI,CAACpN,YAAY,CAAC;IACjC;IACA,IAAI,IAAI,CAACpC,QAAQ,CAAC,EAAE;MAClB6N,MAAM,CAAC7N,QAAQ,GAAG,IAAI,CAACA,QAAQ,CAAC;IAClC;IACA6N,MAAM,CAAC4B,KAAK,GAAG,IAAI,CAACpN,SAAS,CAAC;IAE9BwL,MAAM,CAACp\u002FP,QAAQ,GAAG,EAAE;IACpB,KAAK,MAAMm+O,KAAK,IAAI,IAAI,CAACwf,SAAS,CAAC,EAAE;MACnCyB,MAAM,CAACp\u002FP,QAAQ,CAACx9B,IAAI,CAAC27Q,KAAK,CAACsT,KAAK,CAAC,CAACqP,KAAK,CAAC,CAAC;IAC3C;IAEA1B,MAAM,CAAC9iB,UAAU,GAAGj8Q,MAAM,CAACuP,MAAM,CAAC,IAAI,CAAC;IACvC,KAAK,MAAM,CAAC\u002FO,IAAI,EAAEV,KAAK,CAAC,IAAI,IAAI,CAACs9R,WAAW,CAAC,EAAE;MAC7C2B,MAAM,CAAC9iB,UAAU,CAACz7Q,IAAI,CAAC,GAAGV,KAAK,CAACoxR,QAAQ,CAAC;IAC3C;IAEA,OAAO6N,MAAM;EACf;AACF;AAEA,MAAM6B,aAAa,SAAStC,SAAS,CAAC;EACpC59R,WAAWA,CAAC69R,IAAI,EAAE\u002F9R,IAAI,EAAE;IACtB,KAAK,CAAC+9R,IAAI,EAAE\u002F9R,IAAI,CAAC;IACjB,IAAI,CAAC0wR,QAAQ,CAAC,GAAG,EAAE;EACrB;EAEA,CAACyC,OAAO,EAAExnB,IAAI,EAAE;IACd,IAAI,CAAC+kB,QAAQ,CAAC,IAAI\u002FkB,IAAI;EACxB;EAEA,CAACmlB,SAAS,IAAI,CAAC;AACjB;AAEA,MAAMuP,YAAY,SAASD,aAAa,CAAC;EACvClgS,WAAWA,CAAC69R,IAAI,EAAE\u002F9R,IAAI,EAAE9B,OAAO,EAAE;IAC\u002FB,KAAK,CAAC6\u002FR,IAAI,EAAE\u002F9R,IAAI,CAAC;IACjB,IAAI,CAACu9R,QAAQ,CAAC,GAAGr\u002FR,OAAO;EAC1B;EAEA,CAAC4yR,SAAS,IAAI;IACZ,IAAI,CAACJ,QAAQ,CAAC,GAAGqF,UAAU,CAAC;MAC1BjgR,IAAI,EAAE,IAAI,CAAC46Q,QAAQ,CAAC;MACpBkF,YAAY,EAAE,IAAI,CAAC2H,QAAQ,CAAC,CAAC,CAAC,CAAC;MAC\u002FB1H,QAAQ,EAAEtuQ,CAAC,IAAI,IAAI,CAACg2Q,QAAQ,CAAC,CAACn6R,QAAQ,CAACmkB,CAAC;IAC1C,CAAC,CAAC;EACJ;EAEA,CAAC8oQ,MAAM,EAAExyC,OAAO,EAAE;IAChB,KAAK,CAACwyC,MAAM,CAAC,CAACxyC,OAAO,CAAC;IACtB,OAAO,IAAI,CAAC0\u002FC,QAAQ,CAAC;EACvB;AACF;AAEA,MAAM+C,YAAY,SAASF,aAAa,CAAC;EACvC,CAACtP,SAAS,IAAI;IACZ,IAAI,CAACJ,QAAQ,CAAC,GAAG,IAAI,CAACA,QAAQ,CAAC,CAACrR,IAAI,CAAC,CAAC;EACxC;AACF;AAEA,MAAMkhB,aAAa,SAASH,aAAa,CAAC;EACxClgS,WAAWA,CAAC69R,IAAI,EAAE\u002F9R,IAAI,EAAE41R,YAAY,EAAE4K,SAAS,EAAE;IAC\u002FC,KAAK,CAACzC,IAAI,EAAE\u002F9R,IAAI,CAAC;IACjB,IAAI,CAACi9R,aAAa,CAAC,GAAGrH,YAAY;IAClC,IAAI,CAAC+H,UAAU,CAAC,GAAG6C,SAAS;EAC9B;EAEA,CAAC1P,SAAS,IAAI;IACZ,IAAI,CAACJ,QAAQ,CAAC,GAAGiF,UAAU,CAAC;MAC1B7\u002FQ,IAAI,EAAE,IAAI,CAAC46Q,QAAQ,CAAC;MACpBkF,YAAY,EAAE,IAAI,CAACqH,aAAa,CAAC;MACjCpH,QAAQ,EAAE,IAAI,CAAC8H,UAAU;IAC3B,CAAC,CAAC;EACJ;EAEA,CAACtN,MAAM,EAAExyC,OAAO,EAAE;IAChB,KAAK,CAACwyC,MAAM,CAAC,CAACxyC,OAAO,CAAC;IACtB,OAAO,IAAI,CAACo\u002FC,aAAa,CAAC;IAC1B,OAAO,IAAI,CAACU,UAAU,CAAC;EACzB;AACF;AAEA,MAAM8C,QAAQ,SAASF,aAAa,CAAC;EACnCrgS,WAAWA,CAAC69R,IAAI,EAAE\u002F9R,IAAI,EAAE;IACtB,KAAK,CAAC+9R,IAAI,EAAE\u002F9R,IAAI,EAAE,CAAC,EAAEgE,CAAC,IAAIA,CAAC,KAAK,CAAC,CAAC;EACpC;AACF;AAEA,MAAM08R,QAAQ,SAASH,aAAa,CAAC;EACnCrgS,WAAWA,CAAC69R,IAAI,EAAE\u002F9R,IAAI,EAAE;IACtB,KAAK,CAAC+9R,IAAI,EAAE\u002F9R,IAAI,EAAE,CAAC,EAAEgE,CAAC,IAAIA,CAAC,KAAK,CAAC,CAAC;EACpC;AACF;;;;;;AC7iC2B;AACyC;AACX;AACjB;AACA;AACI;AAE5C,SAAS28R,eAAeA,CAAC57R,CAAC,EAAE;EAC1B,IAAI,OAAOA,CAAC,KAAK,QAAQ,EAAE;IACzB,OAAO,KAAK;EACd;EAEA,OAAO9H,MAAM,CAACC,SAAS,CAAC6H,CAAC,CAAC,GAAG,GAAGA,CAAC,IAAI,GAAG,GAAGA,CAAC,CAAC+W,OAAO,CAAC,CAAC,CAAC,IAAI;AAC7D;AAEA,MAAM8kR,UAAU,GAAG;EACjBC,UAAUA,CAAC\u002F\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\u002FB,OAAO1\u002FQ,MAAM,IAAIA,MAAM,KAAK2mQ,IAAI,EAAE;QAChC,IAAI3mQ,MAAM,CAACqpN,IAAI,EAAE;UACfA,IAAI,GAAGrpN,MAAM,CAACqpN,IAAI;UAClB;QACF;QACArpN,MAAM,GAAGA,MAAM,CAAC0\u002FQ,UAAU,CAAC,CAAC,CAAC;MAC\u002FB;IACF;IAEA,MAAM9\u002FN,QAAQ,GAAG,CAACjxB,IAAI,CAACwZ,CAAC,IAAIkkP,cAAc,CAAC7hR,KAAK,IAAIulR,OAAO;IAC3D,MAAM1J,UAAU,GAAG13P,IAAI,CAACixP,WAAW,CAAC,CAACyG,UAAU;IAC\u002FC,IACE13P,IAAI,CAACxhC,KAAK,CAACsjS,MAAM,IACjB9hQ,IAAI,CAACxhC,KAAK,CAACsjS,MAAM,CAAClS,QAAQ,CAAC,IAC3B5vP,IAAI,CAACxhC,KAAK,CAACsjS,MAAM,CAACC,WAAW,KAAK,WAAW,EAC7C;MACA,MAAM7jS,GAAG,GAAG+iS,UAAU,CACpBjhQ,IAAI,CAACxhC,KAAK,CAACsjS,MAAM,CAAClS,QAAQ,CAAC,EAC3Bl1D,IAAI,EACJo9D,MAAM,EACNrmD,UAAU,EACVimD,UAAU,EACVzmO,QACF,CAAC;MACDp1C,KAAK,GAAG3d,GAAG,CAAC2d,KAAK;MACjBC,MAAM,GAAG5d,GAAG,CAAC4d,MAAM;MACnB89Q,QAAQ,GAAG17R,GAAG,CAAC07R,QAAQ;IACzB,CAAC,MAAM;MACL,MAAM\u002FuB,IAAI,GAAG7qO,IAAI,CAACxhC,KAAK,CAACy0R,KAAK,CAAC,CAAC,CAAC;MAChC,IAAIpoB,IAAI,EAAE;QACR,MAAM3sQ,GAAG,GAAG+iS,UAAU,CACpBp2B,IAAI,EACJnwC,IAAI,EACJo9D,MAAM,EACNrmD,UAAU,EACVimD,UAAU,EACVzmO,QACF,CAAC;QACDp1C,KAAK,GAAG3d,GAAG,CAAC2d,KAAK;QACjBC,MAAM,GAAG5d,GAAG,CAAC4d,MAAM;QACnB89Q,QAAQ,GAAG17R,GAAG,CAAC07R,QAAQ;MACzB;IACF;IAEA,IAAI\u002F9Q,KAAK,KAAK,IAAI,IAAI,CAACmkB,IAAI,CAACwZ,CAAC,EAAE;MAC7B39B,KAAK,IAAIulR,OAAO;IAClB;IAEA,IAAItlR,MAAM,KAAK,IAAI,IAAI,CAACkkB,IAAI,CAACnH,CAAC,EAAE;MAC9B\u002Fc,MAAM,IAAIulR,OAAO;IACnB;EACF;EACA,OAAO;IAAE7nP,CAAC,EAAE39B,KAAK;IAAEgd,CAAC,EAAE\u002Fc,MAAM;IAAE89Q;EAAS,CAAC;AAC1C;AAEA,SAASoI,WAAWA,CAAChiQ,IAAI,EAAEm2P,IAAI,EAAEuH,cAAc,EAAE;EAC\u002FC,IAAIx\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\u002FB,QAAQzkQ,IAAI,CAAC+\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\u002Fc,EAAE;AAC\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\u002FU,UAAU,CAAC;MAChC7\u002FQ,IAAI,EAAE2lQ,UAAU,CAACivB,eAAe;MAChC9U,YAAY,EAAE,CAAC,CAAC;MAChBC,QAAQ,EAAE3tR,CAAC,IAAIA,CAAC,IAAI;IACtB,CAAC,CAAC;IACF,IAAI,CAAC0N,UAAU,GAAG+\u002FQ,UAAU,CAAC;MAC3B7\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\u002FC;IAEA,IAAI,IAAI,CAAC\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\u002FD,QAAQ,GAAGrS,UAAU,CAAC;MACzB7\u002FQ,IAAI,EAAE2lQ,UAAU,CAACusB,QAAQ;MACzBpS,YAAY,EAAE,CAAC;MACfC,QAAQ,EAAE3tR,CAAC,IAAIA,CAAC,KAAK;IACvB,CAAC,CAAC;IACF,IAAI,CAAC2mR,MAAM,GAAGpT,UAAU,CAACoT,MAAM,IAAI,EAAE;IACrC,IAAI,CAACgZ,UAAU,GAAG7R,eAAe,CAACva,UAAU,CAACosB,UAAU,EAAE,CACvD,MAAM,EACN,aAAa,EACb,UAAU,CACX,CAAC;IACF,IAAI,CAAClf,OAAO,GAAGlN,UAAU,CAACkN,OAAO,IAAI,EAAE;IACvC,IAAI,CAACoW,GAAG,GAAGtjB,UAAU,CAACsjB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGvjB,UAAU,CAACujB,OAAO,IAAI,EAAE;IACvC,IAAI,CAACsO,MAAM,GAAG,IAAI;EACpB;AACF;AAEA,MAAMC,WAAW,SAASzP,SAAS,CAAC;EAClC59R,WAAWA,CAACu7Q,UAAU,EAAE;IACtB,KAAK,CAACoqB,cAAc,EAAE,aAAa,EAAsB,IAAI,CAAC;IAC9D,IAAI,CAACz3P,EAAE,GAAGqtO,UAAU,CAACrtO,EAAE,IAAI,EAAE;IAC7B,IAAI,CAAC29P,MAAM,GAAGtwB,UAAU,CAACswB,MAAM,IAAI,EAAE;IACrC,IAAI,CAAC\u002FD,QAAQ,GAAGrS,UAAU,CAAC;MACzB7\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\u002FP,SAAS,GAAG\u002FX,eAAe,CAACva,UAAU,CAACsyB,SAAS,EAAE,CACrD,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,KAAK,CACN,CAAC;IACF,IAAI,CAAC5M,QAAQ,GAAGnL,eAAe,CAACva,UAAU,CAAC0lB,QAAQ,EAAE,CACnD,SAAS,EACT,QAAQ,EACR,UAAU,EACV,WAAW,CACZ,CAAC;IACF,IAAI,CAAC6M,OAAO,GAAGzsS,IAAI,CAAC4V,IAAI,CAAC8+Q,cAAc,CAACxa,UAAU,CAACuyB,OAAO,CAAC,CAAC;IAC5D,IAAI,CAACjP,GAAG,GAAGtjB,UAAU,CAACsjB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGvjB,UAAU,CAACujB,OAAO,IAAI,EAAE;IACvC,IAAI,CAACgL,MAAM,GAAG,IAAI;IAClB,IAAI,CAACxuE,IAAI,GAAG,IAAI;IAChB,IAAI,CAACo9D,MAAM,GAAG,IAAI;IAClB,IAAI,CAACuF,IAAI,GAAG,IAAI;IAChB,IAAI,CAAC7+R,KAAK,GAAG,IAAI;EACnB;EAEA,CAACu0R,SAAS,EAAEv0R,KAAK,EAAE;IACjBknS,SAAS,CAAC,IAAI,EAAElnS,KAAK,CAAC;EACxB;EAEA,CAACiyR,SAAS,EAAEiN,cAAc,EAAE;IAC1B,IAAI,CAAC,IAAI,CAAC3N,MAAM,CAAC,EAAE;MACjB,IAAI;QAAEl0Q,KAAK;QAAEC;MAAO,CAAC,GAAG4hR,cAAc;MACtC,QAAQ,IAAI,CAACuP,SAAS;QACpB,KAAK,MAAM;QACX,KAAK,OAAO;QACZ,KAAK,QAAQ;UACXpxR,KAAK,GAAG,IAAI,CAACqxR,OAAO,IAAI,CAAC,GAAGrxR,KAAK,GAAG,IAAI,CAACqxR,OAAO;UAChD;QACF,KAAK,KAAK;QACV,KAAK,QAAQ;UACXpxR,MAAM,GAAG,IAAI,CAACoxR,OAAO,IAAI,CAAC,GAAGpxR,MAAM,GAAG,IAAI,CAACoxR,OAAO;UAClD;MACJ;MAEA,IAAI,CAACnd,MAAM,CAAC,GAAGoR,UAAU,CAAC,IAAI,EAAE;QAAEtlR,KAAK;QAAEC;MAAO,CAAC,CAAC;IACpD;IACA,OAAO,IAAI,CAACi0Q,MAAM,CAAC;EACrB;EAEA,CAACoD,OAAO,EAAEuK,cAAc,EAAE;IAExB,IAAI,CAAC,IAAI,CAACl\u002FR,KAAK,EAAE;MACf,OAAOu3R,UAAU,CAACE,KAAK;IACzB;IAEA,IAAI,CAACzD,SAAS,CAAC,CAAC,CAAC;IACjB,MAAMh0R,KAAK,GAAG,IAAI,CAACA,KAAK,CAAC20R,OAAO,CAAC,CAACuK,cAAc,CAAC,CAACvH,IAAI;IAEtD,IAAI,CAAC33R,KAAK,EAAE;MACV,IAAI,CAAC+zR,QAAQ,CAAC,CAAC,CAAC;MAChB,OAAOwD,UAAU,CAACE,KAAK;IACzB;IAEA,MAAMkX,YAAY,GAAG,IAAI,CAACD,OAAO;IACjC,IAAI,IAAI,CAACA,OAAO,IAAI,CAAC,EAAE;MACrB,MAAM;QAAE1zP,CAAC;QAAE3gB;MAAE,CAAC,GAAG,IAAI,CAAC43P,SAAS,CAAC,CAACiN,cAAc,CAAC;MAChD,QAAQ,IAAI,CAACuP,SAAS;QACpB,KAAK,MAAM;QACX,KAAK,OAAO;QACZ,KAAK,QAAQ;UACX,IAAI,CAACC,OAAO,GAAG1zP,CAAC;UAChB;QACF,KAAK,KAAK;QACV,KAAK,QAAQ;UACX,IAAI,CAAC0zP,OAAO,GAAGr0Q,CAAC;UAChB;MACJ;IACF;IAEA,MAAMwF,QAAQ,GAAG,EAAE;IACnB,IAAI,OAAO7\u002FB,KAAK,KAAK,QAAQ,EAAE;MAC7B6\u002FB,QAAQ,CAACx9B,IAAI,CAAC;QACZ3B,IAAI,EAAE,OAAO;QACbV;MACF,CAAC,CAAC;IACJ,CAAC,MAAM;MACL6\u002FB,QAAQ,CAACx9B,IAAI,CAACrC,KAAK,CAAC;IACtB;IAEA,MAAMs2P,KAAK,GAAGqtC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC;IAC3D,QAAQ,IAAI,CAAC8K,SAAS;MACpB,KAAK,MAAM;MACX,KAAK,OAAO;QACV,IAAI,IAAI,CAACC,OAAO,GAAG,CAAC,EAAE;UACpBp4C,KAAK,CAACj5O,KAAK,GAAGgkR,eAAe,CAAC,IAAI,CAACqN,OAAO,CAAC;QAC7C;QACA;MACF,KAAK,KAAK;MACV,KAAK,QAAQ;QACX,IAAI,IAAI,CAACA,OAAO,GAAG,CAAC,EAAE;UACpBp4C,KAAK,CAACh5O,MAAM,GAAG+jR,eAAe,CAAC,IAAI,CAACqN,OAAO,CAAC;QAC9C;QACA;IACJ;IAEA3J,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE\u002FkS,KAAK,CAAC;IAC1B,IAAI,CAAC+zR,QAAQ,CAAC,CAAC,CAAC;IAEhB,IAAI,CAAC2a,OAAO,GAAGC,YAAY;IAE3B,OAAOpX,UAAU,CAACG,OAAO,CAAC;MACxBh3R,IAAI,EAAE,KAAK;MACXy7Q,UAAU,EAAE;QACV7lB,KAAK;QACLytC,KAAK,EAAE,CAAC,YAAY;MACtB,CAAC;MACDlkQ;IACF,CAAC,CAAC;EACJ;AACF;AAEA,MAAM+uQ,WAAW,SAAS5N,YAAY,CAAC;EACrCpgS,WAAWA,CAACu7Q,UAAU,EAAE;IACtB,KAAK,CAACoqB,cAAc,EAAE,aAAa,CAAC;IACpC,IAAI,CAACz3P,EAAE,GAAGqtO,UAAU,CAACrtO,EAAE,IAAI,EAAE;IAC7B,IAAI,CAACpuC,IAAI,GAAGy7Q,UAAU,CAACz7Q,IAAI,IAAI,EAAE;IACjC,IAAI,CAAC++R,GAAG,GAAGtjB,UAAU,CAACsjB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGvjB,UAAU,CAACujB,OAAO,IAAI,EAAE;EACzC;AACF;AAEA,MAAMmP,YAAY,SAASrQ,SAAS,CAAC;EACnC59R,WAAWA,CAACu7Q,UAAU,EAAE;IACtB,KAAK,CAACoqB,cAAc,EAAE,cAAc,EAAsB,IAAI,CAAC;IAC\u002FD,IAAI,CAACuI,sBAAsB,GAAGpY,eAAe,CAC3Cva,UAAU,CAAC2yB,sBAAsB,EACjC,CAAC,UAAU,EAAE,UAAU,CACzB,CAAC;IACD,IAAI,CAAChgQ,EAAE,GAAGqtO,UAAU,CAACrtO,EAAE,IAAI,EAAE;IAC7B,IAAI,CAACtwC,GAAG,GAAG29Q,UAAU,CAAC39Q,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACuwS,SAAS,GAAG5yB,UAAU,CAAC4yB,SAAS,IAAI,EAAE;IAC3C,IAAI,CAACtP,GAAG,GAAGtjB,UAAU,CAACsjB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGvjB,UAAU,CAACujB,OAAO,IAAI,EAAE;IACvC,IAAI,CAACsP,UAAU,GAAG,IAAI;IACtB,IAAI,CAACC,OAAO,GAAG,IAAI;IACnB,IAAI,CAACC,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACC,IAAI,GAAG,IAAI;IAChB,IAAI,CAACC,OAAO,GAAG,IAAI;IACnB,IAAI,CAACC,UAAU,GAAG,IAAI;EACxB;AACF;AAEA,MAAMC,WAAW,SAAS9Q,SAAS,CAAC;EAClC59R,WAAWA,CAACu7Q,UAAU,EAAE;IACtB,KAAK,CAACoqB,cAAc,EAAE,aAAa,EAAsB,IAAI,CAAC;IAC9D,IAAI,CAACz3P,EAAE,GAAGqtO,UAAU,CAACrtO,EAAE,IAAI,EAAE;IAC7B,IAAI,CAACygQ,IAAI,GAAG7Y,eAAe,CAACva,UAAU,CAACozB,IAAI,EAAE,CAC3C,SAAS,EACT,OAAO,EACP,QAAQ,EACR,OAAO,EACP,SAAS,EACT,QAAQ,EACR,MAAM,CACP,CAAC;IACF,IAAI,CAACC,KAAK,GAAG9Y,eAAe,CAACva,UAAU,CAACqzB,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnE,IAAI,CAAC\u002F+R,IAAI,GAAGkmR,cAAc,CAACxa,UAAU,CAAC1rQ,IAAI,EAAE,MAAM,CAAC;IACnD,IAAI,CAACgvR,GAAG,GAAGtjB,UAAU,CAACsjB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGvjB,UAAU,CAACujB,OAAO,IAAI,EAAE;IACvC,IAAI,CAACsE,MAAM,GAAG,IAAI;IAClB,IAAI,CAAC0G,MAAM,GAAG,IAAI;IAClB,IAAI,CAACpR,MAAM,GAAG,IAAI;EACpB;EAEA,CAAC3E,OAAO,EAAEuK,cAAc,EAAE;IAGxB,MAAM5oC,KAAK,GAAGqtC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;IACrC,MAAMlzR,IAAI,GAAG4wR,eAAe,CAAC,IAAI,CAAC5wR,IAAI,CAAC;IAEvC6lP,KAAK,CAACj5O,KAAK,GAAGi5O,KAAK,CAACh5O,MAAM,GAAG7M,IAAI;IAEjC,IAAIziB,IAAI;IACR,IAAIyhT,SAAS;IACb,IAAIC,OAAO;IACX,MAAMxkE,KAAK,GAAG,IAAI,CAACqnD,UAAU,CAAC,CAAC,CAAC,CAACA,UAAU,CAAC,CAAC,CAAC;IAC9C,MAAMj\u002FQ,KAAK,GACR43N,KAAK,CAAC53N,KAAK,CAACusB,QAAQ,CAAC5gC,MAAM,IAC1BisO,KAAK,CAAC53N,KAAK,CAACusB,QAAQ,CAAC,CAAC,CAAC,CAAC80P,OAAO,CAAC,CAAC,CAAC,CAACgD,IAAI,IACzC,EAAE;IACJ,MAAMgY,aAAa,GAAG;MACpBrkB,EAAE,EAAE,CAACh4Q,KAAK,CAAC,CAAC,CAAC,KAAK7R,SAAS,GAAG6R,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE3O,QAAQ,CAAC,CAAC;MACzD4mR,GAAG,EAAE,CAACj4Q,KAAK,CAAC,CAAC,CAAC,KAAK7R,SAAS,GAAG6R,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE3O,QAAQ,CAAC;IAC5D,CAAC;IAED,MAAM3E,KAAK,GAAGkrO,KAAK,CAAClrO,KAAK,GAAGy0R,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK;IAC7C,MAAMv2B,OAAO,GAAGl+P,KAAK,KAAK2vS,aAAa,CAACrkB,EAAE,IAAI7pR,SAAS;IACvD,MAAMi7R,SAAS,GAAGxxD,KAAK,CAAConD,iBAAiB,CAAC,CAAC,CAAC;IAC5C,MAAMsd,OAAO,GAAG1kE,KAAK,CAAC4pD,IAAI,CAAC;IAC3B,IAAI+a,MAAM;IAEV,IAAInT,SAAS,YAAYoT,SAAS,EAAE;MAClCJ,OAAO,GAAGhT,SAAS,CAAC5H,IAAI,CAAC;MACzB9mS,IAAI,GAAG,OAAO;MACdyhT,SAAS,GAAG,UAAU;MACtBI,MAAM,GAAGnT,SAAS,CAACrL,KAAK,CAAC,GAAGyD,IAAI,CAAC,IAAI4H,SAAS,CAAC5H,IAAI,CAAC;IACtD,CAAC,MAAM;MACL9mS,IAAI,GAAG,UAAU;MACjByhT,SAAS,GAAG,aAAa;MACzBI,MAAM,GAAG3kE,KAAK,CAACmmD,KAAK,CAAC,GAAGyD,IAAI,CAAC,IAAI5pD,KAAK,CAAC4pD,IAAI,CAAC;IAC9C;IAEA,MAAMhzO,KAAK,GAAG;MACZphD,IAAI,EAAE,OAAO;MACby7Q,UAAU,EAAE;QACV4nB,KAAK,EAAE,CAAC0L,SAAS,CAAC;QAClBn5C,KAAK;QACLs5C,OAAO;QACPC,MAAM;QACN7hT,IAAI;QACJkwQ,OAAO;QACP6xC,KAAK,EAAEJ,aAAa,CAACrkB,EAAE;QACvB0kB,MAAM,EAAEL,aAAa,CAACpkB,GAAG;QACzB,YAAY,EAAEyc,SAAS,CAAC98D,KAAK,CAAC;QAC9B,eAAe,EAAE;MACnB;IACF,CAAC;IAED,IAAIwkE,OAAO,EAAE;MACX5tP,KAAK,CAACq6N,UAAU,CAACz7Q,IAAI,GAAGgvS,OAAO;IACjC;IAEA,IAAInI,UAAU,CAACr8D,KAAK,CAAC,EAAE;MACrBppL,KAAK,CAACq6N,UAAU,CAAC,eAAe,CAAC,GAAG,IAAI;MACxCr6N,KAAK,CAACq6N,UAAU,CAAC8zB,QAAQ,GAAG,IAAI;IAClC;IAEA,OAAO1Y,UAAU,CAACG,OAAO,CAAC;MACxBh3R,IAAI,EAAE,OAAO;MACby7Q,UAAU,EAAE;QACV4nB,KAAK,EAAE,CAAC,UAAU;MACpB,CAAC;MACDlkQ,QAAQ,EAAE,CAACiiB,KAAK;IAClB,CAAC,CAAC;EACJ;AACF;AAEA,MAAMouP,UAAU,SAAS1R,SAAS,CAAC;EACjC59R,WAAWA,CAACu7Q,UAAU,EAAE;IACtB,KAAK,CAACoqB,cAAc,EAAE,YAAY,EAAsB,IAAI,CAAC;IAC7D,IAAI,CAAC4J,QAAQ,GAAGzZ,eAAe,CAACva,UAAU,CAACg0B,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACxE,IAAI,CAACrhQ,EAAE,GAAGqtO,UAAU,CAACrtO,EAAE,IAAI,EAAE;IAC7B,IAAI,CAACjgB,IAAI,GAAG6nQ,eAAe,CAACva,UAAU,CAACttP,IAAI,EAAE,CAC3C,aAAa,EACb,QAAQ,EACR,aAAa,EACb,SAAS,CACV,CAAC;IACF,IAAI,CAACuhR,SAAS,GAAG\u002FZ,UAAU,CAAC;MAC1B7\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\u002FB,IAAI,EAAE,QAAQ;QACdm\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\u002Fa,UAAU,CAAC;MACzB7\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\u002F3B,MAAM,GAAGupB,UAAU,CAAC;MACvB7\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\u002F3B,MAAM,GAAGupB,UAAU,CAAC;MACvB7\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\u002FS,WAAW,GAAGppQ,KAAK;UAC\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\u002FP,OAAO,GAAG,IAAI;IACnB,IAAI,CAAC4\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\u002FB7\u002FQ,IAAI,EAAE2lQ,UAAU,CAAC48B,cAAc;MAC\u002FBziB,YAAY,EAAE,CAAC;MACfC,QAAQ,EAAE3tR,CAAC,IAAIA,CAAC,KAAK;IACvB,CAAC,CAAC;IACF,IAAI,CAACowS,iBAAiB,GAAG3iB,UAAU,CAAC;MAClC7\u002FQ,IAAI,EAAE2lQ,UAAU,CAAC68B,iBAAiB;MAClC1iB,YAAY,EAAE,CAAC;MACfC,QAAQ,EAAE3tR,CAAC,IAAIA,CAAC,KAAK;IACvB,CAAC,CAAC;IACF,IAAI,CAACqwS,SAAS,GAAG5iB,UAAU,CAAC;MAC1B7\u002FQ,IAAI,EAAE2lQ,UAAU,CAAC88B,SAAS;MAC1B3iB,YAAY,EAAE,CAAC;MACfC,QAAQ,EAAE3tR,CAAC,IAAIA,CAAC,KAAK;IACvB,CAAC,CAAC;IACF,IAAI,CAACkmC,EAAE,GAAGqtO,UAAU,CAACrtO,EAAE,IAAI,EAAE;IAC7B,IAAI,CAACoqQ,kBAAkB,GAAG7iB,UAAU,CAAC;MACnC7\u002FQ,IAAI,EAAE2lQ,UAAU,CAAC+8B,kBAAkB;MACnC5iB,YAAY,EAAE,CAAC;MACfC,QAAQ,EAAE3tR,CAAC,IAAIA,CAAC,IAAI;IACtB,CAAC,CAAC;IACF,IAAI,CAACuwS,oBAAoB,GAAG9iB,UAAU,CAAC;MACrC7\u002FQ,IAAI,EAAE2lQ,UAAU,CAACg9B,oBAAoB;MACrC7iB,YAAY,EAAE,CAAC;MACfC,QAAQ,EAAE3tR,CAAC,IAAIA,CAAC,IAAI;IACtB,CAAC,CAAC;IACF,IAAI,CAAC62R,GAAG,GAAGtjB,UAAU,CAACsjB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGvjB,UAAU,CAACujB,OAAO,IAAI,EAAE;IACvC,IAAI,CAAC0Z,kBAAkB,GAAG\u002FiB,UAAU,CAAC;MACnC7\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\u002FjB,OAAO,CAACnb,UAAU,CAACk\u002FB,WAAW,CAAC;IAClD,IAAI,CAACC,IAAI,GAAG3kB,cAAc,CAACxa,UAAU,CAACm\u002FB,IAAI,CAAC;IAC3C,IAAI,CAACC,WAAW,GAAG7kB,eAAe,CAACva,UAAU,CAACo\u002FB,WAAW,EAAE,CACzD,UAAU,EACV,WAAW,CACZ,CAAC;IACF,IAAI,CAACC,KAAK,GAAG7kB,cAAc,CAACxa,UAAU,CAACq\u002FB,KAAK,CAAC;IAC7C,IAAI,CAACC,KAAK,GAAGt\u002FB,UAAU,CAACs\u002FB,KAAK,IAAI,EAAE;IACnC,IAAI,CAACC,MAAM,GAAGhlB,eAAe,CAACva,UAAU,CAACu\u002FB,MAAM,EAAE,CAC\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\u002FB,UAAU,CAAC4\u002FB,OAAO,KAAK,EAAE,GACrB1lB,UAAU,CAAC;MACT7\u002FQ,IAAI,EAAE2lQ,UAAU,CAAC4\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\u002FQ,UAAU,CAAC,CAAC,CAAC;MACjC,MAAM\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\u002FQ,UAAU,CAAC,CAAC,CAAC;IACjC,IAAI1\u002FQ,MAAM,CAACoqS,QAAQ,KAAK,mBAAmB,EAAE;MAC3C,IAAI,IAAI,CAAC3pB,SAAS,CAAC,CAAC,CAAC,EAAE;QACrB,IAAI,CAAC\u002FB,MAAM,CAAC,CAACyrB,WAAW,IAAI,CAAC;QAC7B,OAAO,IAAI;MACb;IACF;IAEA,OAAOnqS,MAAM,CAACw\u002FQ,YAAY,CAAC,CAAC,CAAC;EAC\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\u002FQ,MAAM,GAAG,IAAI,CAAC0\u002FQ,UAAU,CAAC,CAAC,CAAC;MACjC,IAAI1\u002FQ,MAAM,YAAYopS,OAAO,EAAE;QAC7B,OAAOppS,MAAM,CAACw\u002FQ,YAAY,CAAC,CAAC,CAAC;MAC\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\u002FpB,UAAU,CAAC;MAC3B7\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\u002FQ,MAAM,GAAG,IAAI,CAAC0\u002FQ,UAAU,CAAC,CAAC,CAAC;IACjC,IAAI1\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\u002FB\u002FE,QAAQ,EAAE,IAAI,CAACkE,KAAK,CAAClE,QAAQ,CAAC\u002FjS,QAAQ,CAAC;QACzC,CAAC,CAAC;QACF68B,IAAI,CAACixP,WAAW,CAAC,GAAG,IAAI,CAACA,WAAW,CAAC;QACrC,IAAI,CAAC5B,YAAY,CAAC,CAACrvP,IAAI,CAAC;QACxB,IAAI,CAACo9Q,WAAW,CAACv8S,IAAI,CAACm\u002FB,IAAI,CAAC;MAC7B;MAEA,IAAI,IAAI,CAACorQ,KAAK,CAACiB,cAAc,KAAK,EAAE,EAAE;QACpC,MAAMrsQ,IAAI,GAAG,IAAI86Q,QAAQ,CAAC;UACxB\u002FsB,MAAM,EAAE,IAAI,CAACqd,KAAK,CAACiB,cAAc;UACjCpB,MAAM,EAAE,IAAI,CAACG,KAAK,CAACgB,cAAc;UACjCvkB,OAAO,EAAE,IAAI,CAACujB,KAAK,CAACkB;QACtB,CAAC,CAAC;QACFtsQ,IAAI,CAACixP,WAAW,CAAC,GAAG,IAAI,CAACA,WAAW,CAAC;QACrC,IAAI,CAAC5B,YAAY,CAAC,CAACrvP,IAAI,CAAC;QACxB,IAAI,CAACwoQ,QAAQ,CAAC3nS,IAAI,CAACm\u002FB,IAAI,CAAC;MAC1B;MAEA,IAAI,CAACyyP,YAAY,CAAC,CAAC,IAAI,CAAC2Y,KAAK,CAAC;MAC9B,IAAI,CAACA,KAAK,GAAG,IAAI;IACnB;IAEA,IAAI,IAAI,CAAC\u002FK,QAAQ,KAAK,QAAQ,IAAI,IAAI,CAACA,QAAQ,KAAK,UAAU,EAAE;MAC9D,OAAOtK,UAAU,CAACE,KAAK;IACzB;IAEA,IACE,IAAI,CAACmnB,WAAW,CAAC\u002F+Q,QAAQ,CAAC5gC,MAAM,GAAG,CAAC,IACpC,IAAI,CAAC0\u002FS,UAAU,CAAC9+Q,QAAQ,CAAC5gC,MAAM,GAAG,CAAC,EACnC;MAGAf,IAAI,CACF,yEACF,CAAC;IACH;IAEA,IAAI,IAAI,CAAC0gT,WAAW,CAAC\u002F+Q,QAAQ,CAAC5gC,MAAM,IAAI,CAAC,EAAE;MACzC,MAAM2\u002FS,WAAW,GAAG,IAAI,CAACA,WAAW,CAAC\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\u002FU,iBAAiB,IAAI;IACpB,IAAIz\u002FQ,MAAM,GAAG,IAAI,CAAC0\u002FQ,UAAU,CAAC,CAAC,CAAC;IAC\u002FB,OAAO,EAAE1\u002FQ,MAAM,YAAYstS,OAAO,CAAC,EAAE;MACnCttS,MAAM,GAAGA,MAAM,CAAC0\u002FQ,UAAU,CAAC,CAAC,CAAC;IAC\u002FB;IACA,OAAO1\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\u002FnC,IAAI,CAAColC,WAAW,CAAC\u002F+Q,QAAQ,CAAC5gC,MAAM,IAAI,CAAC,EAAE;MACzC2\u002FS,WAAW,GAAGplC,IAAI,CAAColC,WAAW,CAAC\u002F+Q,QAAQ,CAAC,CAAC,CAAC;MAC1C0hR,iBAAiB,GAAG3C,WAAW,CAACrvB,MAAM;IACxC,CAAC,MAAM,IACL\u002FV,IAAI,CAACsxB,OAAO,CAACjrQ,QAAQ,CAAC5gC,MAAM,IAAI,CAAC,IACjCu6Q,IAAI,CAACsxB,OAAO,CAACjrQ,QAAQ,CAAC,CAAC,CAAC,CAAC++Q,WAAW,CAAC\u002F+Q,QAAQ,CAAC5gC,MAAM,IAAI,CAAC,EACzD;MACA2\u002FS,WAAW,GAAGplC,IAAI,CAACsxB,OAAO,CAACjrQ,QAAQ,CAAC,CAAC,CAAC,CAAC++Q,WAAW,CAAC\u002F+Q,QAAQ,CAAC,CAAC,CAAC;MAC9D0hR,iBAAiB,GAAG3C,WAAW,CAACrvB,MAAM;IACxC,CAAC,MAAM,IAAI\u002FV,IAAI,CAACozB,KAAK,EAAEa,YAAY,EAAE;MACnCmR,WAAW,GAAGplC,IAAI,CAACozB,KAAK;MACxB2U,iBAAiB,GAAG3C,WAAW,CAACnR,YAAY;IAC9C,CAAC,MAAM,IACLj0B,IAAI,CAACsxB,OAAO,CAACjrQ,QAAQ,CAAC5gC,MAAM,IAAI,CAAC,IACjCu6Q,IAAI,CAACsxB,OAAO,CAACjrQ,QAAQ,CAAC,CAAC,CAAC,CAAC+sQ,KAAK,EAAEa,YAAY,EAC5C;MACAmR,WAAW,GAAGplC,IAAI,CAACsxB,OAAO,CAACjrQ,QAAQ,CAAC,CAAC,CAAC,CAAC+sQ,KAAK;MAC5C2U,iBAAiB,GAAG3C,WAAW,CAACnR,YAAY;IAC9C;IAEA,IAAImR,WAAW,EAAE;MACf,MAAMrvB,MAAM,GAAG,IAAI,CAAC6E,WAAW,CAAC,CAC9BmtB,iBAAiB,EACjB3C,WAAW,CAACrsB,UAAU,CAAC,CAAC,CAC1B,CAAC;MACD,IAAIhD,MAAM,YAAYkZ,QAAQ,EAAE;QAC9BG,QAAQ,GAAGrZ,MAAM;QAEjBqvB,WAAW,CAACrtB,MAAM,CAAC,GAAG,CAAC,CAAC;MAC1B;IACF;IAEAqX,QAAQ,KAAKyY,SAAS,CAAC,CAAC,CAAC;IAEzBzY,QAAQ,CAACrX,MAAM,CAAC,GAAG;MACjByrB,WAAW,EAAE;IACf,CAAC;IAED,MAAMwE,cAAc,GAAG5Y,QAAQ,CAACrW,UAAU,CAAC,CAAC,CAAC;IAC7CivB,cAAc,CAACjwB,MAAM,CAAC,GAAG;MACvByrB,WAAW,EAAE,CAAC;MACdngS,SAAS,EAAE2kS,cAAc,CAAC5Y,QAAQ,CAAC\u002FoQ,QAAQ,CAACsoC,OAAO,CAACygO,QAAQ,CAAC;MAC7DwU,YAAY,EAAE;IAChB,CAAC;IAED,IAAIqE,cAAc;IAClB,IAAIhV,MAAM,GAAG,IAAI;IACjB,IAAIpjB,OAAO,GAAG,IAAI;IAClB,IAAIq4B,YAAY,GAAG,IAAI;IACvB,IAAIC,mBAAmB,GAAG,CAAC;IAC3B,IAAI74E,UAAU,GAAG,CAAC;IAElB,OAAO,IAAI,EAAE;MACX,IAAI,CAAC44E,YAAY,EAAE;QACjBJ,QAAQ,CAACzhR,QAAQ,CAACE,GAAG,CAAC,CAAC;QAEvB,IAAI,EAAE4hR,mBAAmB,KAAKjb,eAAe,EAAE;UAC7CxoS,IAAI,CAAC,gDAAgD,CAAC;UACtD,OAAOojT,QAAQ;QACjB;MACF,CAAC,MAAM;QACLK,mBAAmB,GAAG,CAAC;MACzB;MAEAF,cAAc,GAAG,IAAI;MACrB,IAAI,CAAClwB,MAAM,CAAC,CAACiX,eAAe,GAAGI,QAAQ;MACvC,MAAMv7R,IAAI,GAAGu7R,QAAQ,CAACjU,OAAO,CAAC,CAAC,CAAC,CAACgD,IAAI;MACrC2pB,QAAQ,CAACzhR,QAAQ,CAACx9B,IAAI,CAACgL,IAAI,CAAC;MAE5B,IAAIo\u002FR,MAAM,EAAE;QACV,IAAI,CAAClb,MAAM,CAAC,CAAC8U,eAAe,GAAG,IAAI;QACnCh5R,IAAI,CAACwyB,QAAQ,CAACx9B,IAAI,CAACoqS,MAAM,CAAC9X,OAAO,CAAC,CAACiU,QAAQ,CAACrX,MAAM,CAAC,CAACruG,KAAK,CAAC,CAACy0G,IAAI,CAAC;QAChE8U,MAAM,GAAG,IAAI;MACf;MAEA,IAAIpjB,OAAO,EAAE;QACX,IAAI,CAACkI,MAAM,CAAC,CAAC8U,eAAe,GAAG,IAAI;QACnCh5R,IAAI,CAACwyB,QAAQ,CAACx9B,IAAI,CAACgnR,OAAO,CAACsL,OAAO,CAAC,CAACiU,QAAQ,CAACrX,MAAM,CAAC,CAACruG,KAAK,CAAC,CAACy0G,IAAI,CAAC;QACjEtO,OAAO,GAAG,IAAI;MAChB;MAEA,MAAMyf,YAAY,GAAGF,QAAQ,CAACG,WAAW,CAAClpQ,QAAQ;MAClD,MAAM+hR,gBAAgB,GAAGv0S,IAAI,CAACwyB,QAAQ,CAACnD,MAAM,CAAC8E,IAAI,IAChDA,IAAI,CAAC26O,UAAU,CAAC4nB,KAAK,CAACjgS,QAAQ,CAAC,gBAAgB,CACjD,CAAC;MAED49S,YAAY,GAAG,KAAK;MACpB,IAAI,CAACnwB,MAAM,CAAC,CAAC4U,iBAAiB,GAAG,IAAI;MACrC,IAAI,CAAC5U,MAAM,CAAC,CAAC8U,eAAe,GAAG,KAAK;MAEpC,MAAMroP,KAAK,GAAGle,KAAK,IAAI;QACrB,MAAM63P,IAAI,GAAGne,IAAI,CAACiY,UAAU,CAAC,CAAC,CAAC;QAC\u002FB,IAAIkG,IAAI,EAAE;UACR+pB,YAAY,KAAK\u002FpB,IAAI,CAAC93P,QAAQ,EAAE5gC,MAAM,GAAG,CAAC;UAC1C2iT,gBAAgB,CAAC9hR,KAAK,CAAC,CAACD,QAAQ,CAACx9B,IAAI,CAACs1R,IAAI,CAAC;QAC7C;MACF,CAAC;MAED,KAAK,IAAI51R,CAAC,GAAG+mO,UAAU,EAAEh+N,EAAE,GAAGg+R,YAAY,CAAC7pS,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,EAAE,EAAE;QAC9D,MAAMgnS,WAAW,GAAI,IAAI,CAACxX,MAAM,CAAC,CAAC+U,kBAAkB,GAAGwC,YAAY,CAAC\u002FmS,CAAC,CAAE;QACvE,MAAMmhL,KAAK,GAAG;UAAE7lK,KAAK,EAAE0rR,WAAW,CAAC\u002FtP,CAAC;UAAE19B,MAAM,EAAEyrR,WAAW,CAAC1uQ;QAAE,CAAC;QAC7DyuM,UAAU,GAAG,CAAC;QAEd,IAAI2jE,MAAM,EAAE;UACVmV,gBAAgB,CAAC7\u002FS,CAAC,CAAC,CAAC89B,QAAQ,CAACx9B,IAAI,CAACoqS,MAAM,CAAC9X,OAAO,CAAC,CAACzxG,KAAK,CAAC,CAACy0G,IAAI,CAAC;UAC9D8U,MAAM,GAAG,IAAI;QACf;QAEA,IAAIpjB,OAAO,EAAE;UACXu4B,gBAAgB,CAAC7\u002FS,CAAC,CAAC,CAAC89B,QAAQ,CAACx9B,IAAI,CAACgnR,OAAO,CAACsL,OAAO,CAAC,CAACzxG,KAAK,CAAC,CAACy0G,IAAI,CAAC;UAC\u002FDtO,OAAO,GAAG,IAAI;QAChB;QAEA,MAAMsO,IAAI,GAAGne,IAAI,CAACmb,OAAO,CAAC,CAACzxG,KAAK,CAAC;QACjC,IAAIy0G,IAAI,CAACD,OAAO,EAAE;UAChB,IAAIC,IAAI,CAACA,IAAI,EAAE;YACb+pB,YAAY,KAAK\u002FpB,IAAI,CAACA,IAAI,CAAC93P,QAAQ,EAAE5gC,MAAM,GAAG,CAAC;YAC\u002FC2iT,gBAAgB,CAAC7\u002FS,CAAC,CAAC,CAAC89B,QAAQ,CAACx9B,IAAI,CAACs1R,IAAI,CAACA,IAAI,CAAC;UAC9C,CAAC,MAAM,IAAI,CAAC+pB,YAAY,IAAIJ,QAAQ,CAACzhR,QAAQ,CAAC5gC,MAAM,GAAG,CAAC,EAAE;YACxDqiT,QAAQ,CAACzhR,QAAQ,CAACE,GAAG,CAAC,CAAC;UACzB;UACA,OAAOuhR,QAAQ;QACjB;QAEA,IAAI3pB,IAAI,CAACE,OAAO,CAAC,CAAC,EAAE;UAClB,MAAMr2P,IAAI,GAAGm2P,IAAI,CAACC,SAAS;UAC3B55O,KAAK,CAACj8C,CAAC,CAAC;UAER,IAAIy\u002FB,IAAI,CAAC+mQ,UAAU,KAAK,MAAM,EAAE;YAC9B;UACF;UAEA,IAAI\u002FmQ,IAAI,CAACirQ,MAAM,EAAE;YACfA,MAAM,GAAG,IAAI,CAACrY,WAAW,CAAC,CAAC5yP,IAAI,CAACirQ,MAAM,EAAEjrQ,IAAI,CAAC+wP,UAAU,CAAC,CAAC,CAAC,CAAC;YAC3Dka,MAAM,GAAGA,MAAM,GAAGA,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI;UACpC;UAEA,IAAIjrQ,IAAI,CAAC6nP,OAAO,EAAE;YAChBA,OAAO,GAAG,IAAI,CAAC+K,WAAW,CAAC,CAAC5yP,IAAI,CAAC6nP,OAAO,EAAE7nP,IAAI,CAAC+wP,UAAU,CAAC,CAAC,CAAC,CAAC;YAC7DlJ,OAAO,GAAGA,OAAO,GAAGA,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;UACvC;UAEA,IAAI7nP,IAAI,CAAC+mQ,UAAU,KAAK,UAAU,EAAE;YAClCkZ,cAAc,GAAGjgR,IAAI,CAAC+vP,MAAM,CAAC,CAAChC,MAAM;YACpCxtR,CAAC,GAAG4yC,QAAQ;UACd,CAAC,MAAM,IAAI,CAACnT,IAAI,CAAC+vP,MAAM,CAAC,CAAChC,MAAM,EAAE;YAE\u002FBxtR,CAAC,GAAGy\u002FB,IAAI,CAAC+vP,MAAM,CAAC,CAACzxP,KAAK;UACxB,CAAC,MAAM;YACL2hR,cAAc,GAAGjgR,IAAI,CAAC+vP,MAAM,CAAC,CAAChC,MAAM;YACpCzmD,UAAU,GAAGtnM,IAAI,CAAC+vP,MAAM,CAAC,CAACzxP,KAAK,GAAG,CAAC;YACnC\u002F9B,CAAC,GAAG4yC,QAAQ;UACd;UAEA;QACF;QAEA,IAAI,IAAI,CAAC48O,MAAM,CAAC,CAACovB,YAAY,EAAE;UAC7B,MAAMn\u002FQ,IAAI,GAAG,IAAI,CAAC+vP,MAAM,CAAC,CAACovB,YAAY;UACtC,IAAI,CAACpvB,MAAM,CAAC,CAACovB,YAAY,GAAG,IAAI;UAEhC,MAAMD,aAAa,GAAGl\u002FQ,IAAI,CAACywP,SAAS,CAAC,CAAC,CAAC;UACvC,MAAM1C,MAAM,GAAGmxB,aAAa,CAACnxB,MAAM;UACnCmxB,aAAa,CAACnE,SAAS,GAAGmE,aAAa,CAACjU,MAAM,KAAK,IAAI;UACvDiU,aAAa,CAAClE,UAAU,GAAGkE,aAAa,CAACr3B,OAAO,KAAK,IAAI;UAEzDrrO,KAAK,CAACj8C,CAAC,CAAC;UAER,MAAMw6D,YAAY,GAAGx6D,CAAC;UAEtBA,CAAC,GAAG4yC,QAAQ;UACZ,IAAI46O,MAAM,YAAYkZ,QAAQ,EAAE;YAE9BgZ,cAAc,GAAGlyB,MAAM;UACzB,CAAC,MAAM,IAAIA,MAAM,YAAYoZ,WAAW,EAAE;YACxC,MAAM7oQ,KAAK,GAAGgpQ,YAAY,CAAC3gO,OAAO,CAAConN,MAAM,CAAC;YAC1C,IAAIzvP,KAAK,KAAK,CAAC,CAAC,EAAE;cAChB,IAAIA,KAAK,GAAGy8B,YAAY,EAAE;gBAGxBx6D,CAAC,GAAG+9B,KAAK,GAAG,CAAC;cACf,CAAC,MAAM;gBAGLgpM,UAAU,GAAGhpM,KAAK;cACpB;YACF,CAAC,MAAM;cACL2hR,cAAc,GAAGlyB,MAAM,CAACgD,UAAU,CAAC,CAAC,CAAC;cACrCzpD,UAAU,GAAG24E,cAAc,CAAC1Y,WAAW,CAAClpQ,QAAQ,CAACsoC,OAAO,CAAConN,MAAM,CAAC;YAClE;UACF;UACA;QACF;QAEAvxO,KAAK,CAACj8C,CAAC,CAAC;MACV;MAEA,IAAI,CAACwvR,MAAM,CAAC,CAAC8rB,UAAU,IAAI,CAAC;MAC5B,IAAIoE,cAAc,EAAE;QAClB,IAAIA,cAAc,CAACnuB,SAAS,CAAC,CAAC,CAAC,EAAE;UAC\u002FBmuB,cAAc,CAAClwB,MAAM,CAAC,CAACyrB,WAAW,IAAI,CAAC;QACzC,CAAC,MAAM;UACLyE,cAAc,GAAG,IAAI;QACvB;MACF;MACA7Y,QAAQ,GAAG6Y,cAAc,IAAI7Y,QAAQ,CAACvW,YAAY,CAAC,CAAC,CAAC;MACrD,MAAM,IAAI;IACZ;EACF;AACF;AAEA,MAAMwvB,IAAI,SAAS\u002FgB,aAAa,CAAC;EAC\u002FBlgS,WAAWA,CAACu7Q,UAAU,EAAE;IACtB,KAAK,CAACoqB,cAAc,EAAE,MAAM,CAAC;IAC7B,IAAI,CAACz3P,EAAE,GAAGqtO,UAAU,CAACrtO,EAAE,IAAI,EAAE;IAC7B,IAAI,CAACsnQ,QAAQ,GAAG\u002Ff,UAAU,CAAC;MACzB7\u002FQ,IAAI,EAAE2lQ,UAAU,CAACi6B,QAAQ;MACzB9f,YAAY,EAAE,CAAC;MACfC,QAAQ,EAAE3tR,CAAC,IAAIA,CAAC,IAAI;IACtB,CAAC,CAAC;IACF,IAAI,CAAClI,IAAI,GAAGy7Q,UAAU,CAACz7Q,IAAI,IAAI,EAAE;IACjC,IAAI,CAACyzS,GAAG,GAAGh4B,UAAU,CAACg4B,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAAC1U,GAAG,GAAGtjB,UAAU,CAACsjB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGvjB,UAAU,CAACujB,OAAO,IAAI,EAAE;EACzC;EAEA,CAAC\u002FO,iBAAiB,IAAI;IACpB,OAAO,IAAI;EACb;EAEA,CAACgD,QAAQ,EAAE3V,KAAK,EAAE;IAChB,IAAIA,KAAK,CAACwV,YAAY,CAAC,KAAKwB,YAAY,CAACY,KAAK,CAAC9mP,EAAE,EAAE;MACjD,IAAI,CAACsiP,QAAQ,CAAC,GAAGpT,KAAK;MACtB,OAAO,IAAI;IACb;IACA9\u002FQ,IAAI,CAAC,kCAAkC8\u002FQ,KAAK,CAACyV,SAAS,CAAC,GAAG,CAAC;IAC3D,OAAO,KAAK;EACd;EAEA,CAACI,OAAO,EAAErxR,GAAG,EAAE;IACb,IAAI,IAAI,CAAC4uR,QAAQ,CAAC,YAAYoN,SAAS,EAAE;MACvC;IACF;IACA,KAAK,CAAC3K,OAAO,CAAC,CAACrxR,GAAG,CAAC;EACrB;EAEA,CAACgvR,SAAS,IAAI;IACZ,IAAI,OAAO,IAAI,CAACJ,QAAQ,CAAC,KAAK,QAAQ,EAAE;MACtC,IAAI,CAACA,QAAQ,CAAC,GAAG,IAAI,CAACA,QAAQ,CAAC,CAACxmR,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC;IAC1D;EACF;EAEA,CAACqnR,SAAS,IAAI;IACZ,IAAI,OAAO,IAAI,CAACb,QAAQ,CAAC,KAAK,QAAQ,EAAE;MACtC,OAAO,IAAI,CAACA,QAAQ,CAAC,CAClBxxR,KAAK,CAAC,kBAAkB,CAAC,CACzB88B,MAAM,CAACk+B,IAAI,IAAI,CAAC,CAACA,IAAI,CAAC,CACtBt4D,IAAI,CAAC,IAAI,CAAC;IACf;IACA,OAAO,IAAI,CAAC8uR,QAAQ,CAAC,CAACqD,KAAK,CAAC,CAAC,CAAC;EAChC;EAEA,CAACE,OAAO,EAAEuK,cAAc,EAAE;IACxB,IAAI,OAAO,IAAI,CAAC9N,QAAQ,CAAC,KAAK,QAAQ,EAAE;MAGtC,MAAMuG,IAAI,GAAGwQ,WAAW,CAAC,IAAI,CAAC\u002FW,QAAQ,CAAC,CAAC,CAACuG,IAAI;MAE7C,IAAI,IAAI,CAACvG,QAAQ,CAAC,CAACttR,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAGrC6zR,IAAI,CAACj3R,IAAI,GAAG,KAAK;QACjBi3R,IAAI,CAAC93P,QAAQ,GAAG,EAAE;QAClB,IAAI,CAACuxP,QAAQ,CAAC,CACXxxR,KAAK,CAAC,QAAQ,CAAC,CACfwZ,GAAG,CAACylR,IAAI,IAGPA,IAAI,CAACj\u002FR,KAAK,CAAC,YAAY,CAAC,CAACkiT,OAAO,CAAClnP,IAAI,IAAI,CACvC;UACEl6D,IAAI,EAAE,MAAM;UACZV,KAAK,EAAE46D;QACT,CAAC,EACD;UACEl6D,IAAI,EAAE;QACR,CAAC,CACF,CACH,CAAC,CACAunE,OAAO,CAAC9M,KAAK,IAAI;UAChBw8N,IAAI,CAAC93P,QAAQ,CAACx9B,IAAI,CAAC;YACjB3B,IAAI,EAAE,GAAG;YACTm\u002FB,QAAQ,EAAEs7B;UACZ,CAAC,CAAC;QACJ,CAAC,CAAC;MACN,CAAC,MAAM,IAAI,YAAY,CAAChgD,IAAI,CAAC,IAAI,CAACi2Q,QAAQ,CAAC,CAAC,EAAE;QAC5CuG,IAAI,CAACj3R,IAAI,GAAG,KAAK;QACjBi3R,IAAI,CAAC93P,QAAQ,GAAG,EAAE;QAGlB,IAAI,CAACuxP,QAAQ,CAAC,CAACxxR,KAAK,CAAC,YAAY,CAAC,CAACqoE,OAAO,CAACrN,IAAI,IAAI;UACjD+8N,IAAI,CAAC93P,QAAQ,CAACx9B,IAAI,CAChB;YACE3B,IAAI,EAAE,MAAM;YACZV,KAAK,EAAE46D;UACT,CAAC,EACD;YACEl6D,IAAI,EAAE;UACR,CACF,CAAC;QACH,CAAC,CAAC;MACJ;MAEA,OAAO62R,UAAU,CAACG,OAAO,CAACC,IAAI,CAAC;IACjC;IAEA,OAAO,IAAI,CAACvG,QAAQ,CAAC,CAACuD,OAAO,CAAC,CAACuK,cAAc,CAAC;EAChD;AACF;AAEA,MAAMsW,QAAQ,SAAShX,SAAS,CAAC;EAC\u002FB59R,WAAWA,CAACu7Q,UAAU,EAAE;IACtB,KAAK,CAACoqB,cAAc,EAAE,UAAU,EAAsB,IAAI,CAAC;IAC3D,IAAI,CAACwb,aAAa,GAAG1rB,UAAU,CAAC;MAC9B7\u002FQ,IAAI,EAAE2lQ,UAAU,CAAC4lC,aAAa;MAC9BzrB,YAAY,EAAE,CAAC;MACfC,QAAQ,EAAE3tR,CAAC,IAAIA,CAAC,KAAK;IACvB,CAAC,CAAC;IACF,IAAI,CAAC4oS,aAAa,GAAG9a,eAAe,CAACva,UAAU,CAACq1B,aAAa,EAAE,CAC7D,MAAM,EACN,KAAK,EACL,IAAI,CACL,CAAC;IACF,IAAI,CAAC1iQ,EAAE,GAAGqtO,UAAU,CAACrtO,EAAE,IAAI,EAAE;IAC7B,IAAI,CAACkzQ,SAAS,GAAG3rB,UAAU,CAAC;MAC1B7\u002FQ,IAAI,EAAE2lQ,UAAU,CAAC6lC,SAAS;MAC1B1rB,YAAY,EAAE,EAAE;MAChBC,QAAQ,EAAE3tR,CAAC,IAAIA,CAAC,KAAK,CAAC,IAAIA,CAAC,KAAK;IAClC,CAAC,CAAC;IACF,IAAI,CAAC62R,GAAG,GAAGtjB,UAAU,CAACsjB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGvjB,UAAU,CAACujB,OAAO,IAAI,EAAE;IACvC,IAAI,CAACuiB,aAAa,GAAGvrB,eAAe,CAACva,UAAU,CAAC8lC,aAAa,EAAE,CAC7D,MAAM,EACN,KAAK,EACL,IAAI,CACL,CAAC;IACF,IAAI,CAACje,MAAM,GAAG,IAAI;IAClB,IAAI,CAAC0N,IAAI,GAAG,IAAI;IAChB,IAAI,CAAChH,MAAM,GAAG,IAAI;IAClB,IAAI,CAACpR,MAAM,GAAG,IAAI;EACpB;EAEA,CAAC3E,OAAO,EAAEuK,cAAc,EAAE;IAExB,MAAM5oC,KAAK,GAAGqtC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;IACvD,IAAIhM,IAAI;IACR,MAAMzsD,KAAK,GAAG,IAAI,CAACqnD,UAAU,CAAC,CAAC,CAAC,CAACA,UAAU,CAAC,CAAC,CAAC;IAC9C,IAAI,IAAI,CAACyvB,SAAS,KAAK,EAAE,EAAE;MACzB,IAAI,CAACA,SAAS,GAAG92E,KAAK,YAAYunE,IAAI,GAAG,CAAC,GAAG,CAAC;IAChD;IACA,IAAI,IAAI,CAACuP,SAAS,KAAK,CAAC,EAAE;MACxBrqB,IAAI,GAAG;QACLj3R,IAAI,EAAE,UAAU;QAChBy7Q,UAAU,EAAE;UACV0zB,MAAM,EAAE3kE,KAAK,CAACmmD,KAAK,CAAC,GAAGyD,IAAI,CAAC,IAAI5pD,KAAK,CAAC4pD,IAAI,CAAC;UAC3C8a,OAAO,EAAE1kE,KAAK,CAAC4pD,IAAI,CAAC;UACpBiP,KAAK,EAAE,CAAC,cAAc,CAAC;UACvBztC,KAAK;UACL,YAAY,EAAE0xC,SAAS,CAAC98D,KAAK,CAAC;UAC9B,eAAe,EAAE;QACnB;MACF,CAAC;IACH,CAAC,MAAM;MACLysD,IAAI,GAAG;QACLj3R,IAAI,EAAE,OAAO;QACby7Q,UAAU,EAAE;UACVnuR,IAAI,EAAE,MAAM;UACZ6hT,MAAM,EAAE3kE,KAAK,CAACmmD,KAAK,CAAC,GAAGyD,IAAI,CAAC,IAAI5pD,KAAK,CAAC4pD,IAAI,CAAC;UAC3C8a,OAAO,EAAE1kE,KAAK,CAAC4pD,IAAI,CAAC;UACpBiP,KAAK,EAAE,CAAC,cAAc,CAAC;UACvBztC,KAAK;UACL,YAAY,EAAE0xC,SAAS,CAAC98D,KAAK,CAAC;UAC9B,eAAe,EAAE;QACnB;MACF,CAAC;IACH;IAEA,IAAIq8D,UAAU,CAACr8D,KAAK,CAAC,EAAE;MACrBysD,IAAI,CAACxb,UAAU,CAAC,eAAe,CAAC,GAAG,IAAI;MACvCwb,IAAI,CAACxb,UAAU,CAAC8zB,QAAQ,GAAG,IAAI;IACjC;IAEA,OAAO1Y,UAAU,CAACG,OAAO,CAAC;MACxBh3R,IAAI,EAAE,OAAO;MACby7Q,UAAU,EAAE;QACV4nB,KAAK,EAAE,CAAC,UAAU;MACpB,CAAC;MACDlkQ,QAAQ,EAAE,CAAC83P,IAAI;IACjB,CAAC,CAAC;EACJ;AACF;AAEA,MAAMuqB,IAAI,SAASlhB,YAAY,CAAC;EAC9BpgS,WAAWA,CAACu7Q,UAAU,EAAE;IACtB,KAAK,CAACoqB,cAAc,EAAE,MAAM,CAAC;IAC7B,IAAI,CAACz3P,EAAE,GAAGqtO,UAAU,CAACrtO,EAAE,IAAI,EAAE;IAC7B,IAAI,CAACpuC,IAAI,GAAGy7Q,UAAU,CAACz7Q,IAAI,IAAI,EAAE;IACjC,IAAI,CAAC++R,GAAG,GAAGtjB,UAAU,CAACsjB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGvjB,UAAU,CAACujB,OAAO,IAAI,EAAE;EACzC;EAEA,CAAClO,SAAS,IAAI;IAEZ,MAAM9lR,IAAI,GAAG,IAAI,CAAC0lR,QAAQ,CAAC,CAACrR,IAAI,CAAC,CAAC;IAClC,IAAI,CAACqR,QAAQ,CAAC,GAAG1lR,IAAI,GAAG,IAAIC,IAAI,CAACD,IAAI,CAAC,GAAG,IAAI;EAC\u002FC;EAEA,CAACipR,OAAO,EAAEuK,cAAc,EAAE;IACxB,OAAOiJ,WAAW,CAAC,IAAI,CAAC\u002FW,QAAQ,CAAC,GAAG,IAAI,CAACA,QAAQ,CAAC,CAACzsR,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;EACrE;AACF;AAEA,MAAMw9S,SAAS,SAAS3jB,SAAS,CAAC;EAChC59R,WAAWA,CAACu7Q,UAAU,EAAE;IACtB,KAAK,CAACoqB,cAAc,EAAE,WAAW,CAAC;IAClC,IAAI,CAACz3P,EAAE,GAAGqtO,UAAU,CAACrtO,EAAE,IAAI,EAAE;IAC7B,IAAI,CAACszQ,MAAM,GAAGjmC,UAAU,CAACimC,MAAM,IAAI,EAAE;IACrC,IAAI,CAACp0T,IAAI,GAAG0oS,eAAe,CAACva,UAAU,CAACnuR,IAAI,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACtE,IAAI,CAACyxS,GAAG,GAAGtjB,UAAU,CAACsjB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGvjB,UAAU,CAACujB,OAAO,IAAI,EAAE;EACzC;AACF;AAEA,MAAM2iB,OAAO,SAASrhB,YAAY,CAAC;EACjCpgS,WAAWA,CAACu7Q,UAAU,EAAE;IACtB,KAAK,CAACoqB,cAAc,EAAE,SAAS,CAAC;IAChC,IAAI,CAACz3P,EAAE,GAAGqtO,UAAU,CAACrtO,EAAE,IAAI,EAAE;IAC7B,IAAI,CAACqlQ,GAAG,GAAGh4B,UAAU,CAACg4B,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAAC1U,GAAG,GAAGtjB,UAAU,CAACsjB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGvjB,UAAU,CAACujB,OAAO,IAAI,EAAE;EACzC;AACF;AAEA,MAAM4iB,SAAS,SAAS9jB,SAAS,CAAC;EAChC59R,WAAWA,CAACu7Q,UAAU,EAAE;IACtB,KAAK,CAACoqB,cAAc,EAAE,WAAW,EAAsB,IAAI,CAAC;IAC5D,IAAI,CAACz3P,EAAE,GAAGqtO,UAAU,CAACrtO,EAAE,IAAI,EAAE;IAC7B,IAAI,CAAC2wP,GAAG,GAAGtjB,UAAU,CAACsjB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGvjB,UAAU,CAACujB,OAAO,IAAI,EAAE;IACvC,IAAI,CAACgL,MAAM,GAAG,IAAI;IAClB,IAAI,CAACuU,QAAQ,GAAG,IAAIrgB,cAAc,CAAC,CAAC;EACtC;AACF;AAEA,MAAM2jB,QAAQ,SAAS\u002FjB,SAAS,CAAC;EAC\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\u002FQ,IAAI,EAAE2lQ,UAAU,CAAC\u002FrC,QAAQ;MACzBkmD,YAAY,EAAE,CAAC;MACfC,QAAQ,EAAE3tR,CAAC,IAAIA,CAAC,KAAK;IACvB,CAAC,CAAC;IACF,IAAI,CAACi8R,QAAQ,GAAG3N,WAAW,CAAC\u002Fa,UAAU,CAAC0oB,QAAQ,CAAC;IAChD,IAAI,CAACpF,GAAG,GAAGtjB,UAAU,CAACsjB,GAAG,IAAI,EAAE;IAC\u002FB,IAAI,CAACC,OAAO,GAAGvjB,UAAU,CAACujB,OAAO,IAAI,EAAE;IAGvC,IAAI,CAAC3wL,GAAG,GAAG,IAAI;IACf,IAAI,CAACijM,OAAO,GAAG,IAAI;IACnB,IAAI,CAACtmS,IAAI,GAAG,IAAI;IAChB,IAAI,CAACumS,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACC,OAAO,GAAG,IAAI;IACnB,IAAI,CAAC5O,MAAM,GAAG,IAAI;IAClB,IAAI,CAAC6O,KAAK,GAAG,IAAI;IACjB,IAAI,CAAC14Q,KAAK,GAAG,IAAI;IACjB,IAAI,CAAC24Q,OAAO,GAAG,IAAI;IACnB,IAAI,CAACx3O,IAAI,GAAG,IAAI;IAChB,IAAI,CAACjiE,SAAS,GAAG,IAAI;IACrB,IAAI,CAAC0zQ,IAAI,GAAG,IAAI;IAChB,IAAI,CAACgmC,IAAI,GAAG,IAAI;EAClB;EAEA,CAAC9d,SAAS,EAAEv0R,KAAK,EAAE;IACjB,MAAM6S,MAAM,GAAG,IAAI,CAAC0\u002FQ,UAAU,CAAC,CAAC,CAAC;IACjC,IAAI1\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\u002F\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\u002FO,MAAM,CAAC4\u002FO,KAAK,CAAC;EAC1B;EAEA,OAAO3Q,KAAKA,CAAC2Q,KAAK,EAAE;IAClB,OAAO,IAAInL,KAAK,CAACmL,KAAK,CAAC;EACzB;EAEA,OAAO5mF,IAAIA,CAAC4mF,KAAK,EAAE;IACjB,OAAO,IAAIlxE,aAAI,CAACkxE,KAAK,CAAC;EACxB;EAEA,OAAO91F,MAAMA,CAAC81F,KAAK,EAAE;IACnB,OAAO,IAAIlK,MAAM,CAACkK,KAAK,CAAC;EAC1B;EAEA,OAAOnrQ,OAAOA,CAACmrQ,KAAK,EAAE;IACpB,OAAO,IAAIjK,OAAO,CAACiK,KAAK,CAAC;EAC3B;EAEA,OAAOhF,WAAWA,CAACgF,KAAK,EAAE;IACxB,OAAO,IAAIhK,WAAW,CAACgK,KAAK,CAAC;EAC\u002FB;EAEA,OAAOrpR,KAAKA,CAACqpR,KAAK,EAAE;IAClB,OAAO,IAAIzJ,KAAK,CAACyJ,KAAK,CAAC;EACzB;EAEA,OAAO5M,SAASA,CAAC4M,KAAK,EAAE;IACtB,OAAO,IAAIpJ,SAAS,CAACoJ,KAAK,CAAC;EAC7B;EAEA,OAAO1Q,OAAOA,CAAC0Q,KAAK,EAAE;IACpB,OAAO,IAAInJ,OAAO,CAACmJ,KAAK,CAAC;EAC3B;EAEA,OAAO7T,OAAOA,CAAC6T,KAAK,EAAE;IACpB,OAAO,IAAIlJ,OAAO,CAACkJ,KAAK,CAAC;EAC3B;EAEA,OAAOxvS,KAAKA,CAACwvS,KAAK,EAAE;IAClB,OAAO,IAAIjJ,KAAK,CAACiJ,KAAK,CAAC;EACzB;EAEA,OAAOlQ,IAAIA,CAACkQ,KAAK,EAAE;IACjB,OAAO,IAAIhJ,IAAI,CAACgJ,KAAK,CAAC;EACxB;EAEA,OAAO5T,QAAQA,CAAC4T,KAAK,EAAE;IACrB,OAAO,IAAI9I,QAAQ,CAAC8I,KAAK,CAAC;EAC5B;EAEA,OAAOloP,IAAIA,CAACkoP,KAAK,EAAE;IACjB,OAAO,IAAIpI,IAAI,CAACoI,KAAK,CAAC;EACxB;EAEA,OAAOrM,MAAMA,CAACqM,KAAK,EAAE;IACnB,OAAO,IAAIlI,MAAM,CAACkI,KAAK,CAAC;EAC1B;EAEA,OAAOvL,YAAYA,CAACuL,KAAK,EAAE;IACzB,OAAO,IAAI\u002FH,YAAY,CAAC+H,KAAK,CAAC;EAChC;EAEA,OAAOvP,QAAQA,CAACuP,KAAK,EAAE;IACrB,OAAO,IAAI9H,QAAQ,CAAC8H,KAAK,CAAC;EAC5B;EAEA,OAAOxpB,MAAMA,CAACwpB,KAAK,EAAE;IACnB,OAAO,IAAI7H,MAAM,CAAC6H,KAAK,CAAC;EAC1B;EAEA,OAAOtL,GAAGA,CAACsL,KAAK,EAAE;IAChB,OAAO,IAAI5H,GAAG,CAAC4H,KAAK,CAAC;EACvB;EAEA,OAAOhG,MAAMA,CAACgG,KAAK,EAAE;IACnB,OAAO,IAAI1H,MAAM,CAAC0H,KAAK,CAAC;EAC1B;EAEA,OAAOriT,OAAOA,CAACqiT,KAAK,EAAE;IACpB,OAAO,IAAIlH,OAAO,CAACkH,KAAK,CAAC;EAC3B;EAEA,OAAOzM,WAAWA,CAACyM,KAAK,EAAE;IACxB,OAAO,IAAIjH,WAAW,CAACiH,KAAK,CAAC;EAC\u002FB;EAEA,OAAO\u002FF,KAAKA,CAAC+F,KAAK,EAAE;IAClB,OAAO,IAAIhH,KAAK,CAACgH,KAAK,CAAC;EACzB;EAEA,OAAOzG,GAAGA,CAACyG,KAAK,EAAE;IAChB,OAAO,IAAI3G,GAAG,CAAC2G,KAAK,CAAC;EACvB;EAEA,OAAO3T,IAAIA,CAAC2T,KAAK,EAAE;IACjB,OAAO,IAAI1G,IAAI,CAAC0G,KAAK,CAAC;EACxB;EAEA,OAAO9Y,QAAQA,CAAC8Y,KAAK,EAAE;IACrB,OAAO,IAAIxG,QAAQ,CAACwG,KAAK,CAAC;EAC5B;EAEA,OAAOla,QAAQA,CAACka,KAAK,EAAE;IACrB,OAAO,IAAIra,QAAQ,CAACqa,KAAK,CAAC;EAC5B;EAEA,OAAO3F,OAAOA,CAAC2F,KAAK,EAAE;IACpB,OAAO,IAAI7G,OAAO,CAAC6G,KAAK,CAAC;EAC3B;EAEA,OAAOjkB,IAAIA,CAACikB,KAAK,EAAE;IACjB,OAAO,IAAIvF,IAAI,CAACuF,KAAK,CAAC;EACxB;EAEA,OAAO\u002FD,YAAYA,CAAC+D,KAAK,EAAE;IACzB,OAAO,IAAIzE,YAAY,CAACyE,KAAK,CAAC;EAChC;EAEA,OAAOvpQ,OAAOA,CAACupQ,KAAK,EAAE;IACpB,OAAO,IAAI9hE,gBAAO,CAAC8hE,KAAK,CAAC;EAC3B;EAEA,OAAO3W,OAAOA,CAAC2W,KAAK,EAAE;IACpB,OAAO,IAAIvE,OAAO,CAACuE,KAAK,CAAC;EAC3B;EAEA,OAAO3xE,KAAKA,CAAC2xE,KAAK,EAAE;IAClB,OAAO,IAAItE,KAAK,CAACsE,KAAK,CAAC;EACzB;EAEA,OAAOpM,MAAMA,CAACoM,KAAK,EAAE;IACnB,OAAO,IAAI3D,MAAM,CAAC2D,KAAK,CAAC;EAC1B;EAEA,OAAO3zS,MAAMA,CAAC2zS,KAAK,EAAE;IACnB,OAAO,IAAI1D,MAAM,CAAC0D,KAAK,CAAC;EAC1B;EAEA,OAAOrL,OAAOA,CAACqL,KAAK,EAAE;IACpB,OAAO,IAAIzD,OAAO,CAACyD,KAAK,CAAC;EAC3B;EAEA,OAAOnqT,SAASA,CAACmqT,KAAK,EAAE;IACtB,OAAO,IAAI7L,SAAS,CAAC6L,KAAK,CAAC;EAC7B;EAEA,OAAOrwS,GAAGA,CAACqwS,KAAK,EAAE;IAChB,OAAO,IAAIvD,UAAU,CAACuD,KAAK,CAAC;EAC9B;EAEA,OAAO9U,MAAMA,CAAC8U,KAAK,EAAE;IACnB,OAAO,IAAIj\u002FF,MAAM,CAACi\u002FF,KAAK,CAAC;EAC1B;EAEA,OAAOjQ,WAAWA,CAACiQ,KAAK,EAAE;IACxB,OAAO,IAAIrD,WAAW,CAACqD,KAAK,CAAC;EAC\u002FB;EAEA,OAAO\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\u002FB\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\u002FtR,GAAG,GAAGmN,MAAM,CAAC+\u002FQ,QAAQ,CAAC,CAAC2wB,QAAQ,CAAC;IAEtC,KAAK,IAAIxhT,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAG+nO,OAAO,CAAC5zO,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,EAAE,EAAE;MAChD,MAAM\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\u002FBzV,KAAK,CAAC4W,SAAS,CAAC,CAAC\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\u002FB,IAAI,CAAC\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\u002FB;EAEA,CAAC\u002FzB,SAAS,IAAI;IACZ,IAAI,CAACJ,QAAQ,CAAC,GAAG,IAAI,CAACA,QAAQ,CAAC,CAACrR,IAAI,CAAC,CAAC;IACtC,MAAMr7Q,CAAC,GAAGiO,QAAQ,CAAC,IAAI,CAACy+Q,QAAQ,CAAC,EAAE,EAAE,CAAC;IACtC,IAAI,CAACr1Q,KAAK,CAACrX,CAAC,CAAC,IAAIA,CAAC,IAAI,CAAC,EAAE;MACvB,IAAI,CAAC0sR,QAAQ,CAAC,GAAG1sR,CAAC;IACpB;EACF;AACF;AAEA,MAAM+rT,QAAQ,SAAS3vB,aAAa,CAAC;EACnClgS,WAAWA,CAACu7Q,UAAU,EAAE;IACtB,KAAK,CAACopC,YAAY,EAAE,UAAU,CAAC;EACjC;EAEA,CAAC\u002FzB,SAAS,IAAI;IACZ,IAAI,CAACJ,QAAQ,CAAC,GAAG,IAAI,CAACA,QAAQ,CAAC,CAACrR,IAAI,CAAC,CAAC,CAACngR,KAAK,CAAC,KAAK,CAAC;EACrD;AACF;AAEA,MAAM8wT,MAAM,SAAS5vB,aAAa,CAAC;EACjClgS,WAAWA,CAACu7Q,UAAU,EAAE;IACtB,KAAK,CAACopC,YAAY,EAAE,QAAQ,CAAC;EAC\u002FB;EAEA,CAAC\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\u002FB;EAEA,CAAC\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\u002FD,KAAK,CAAC;EACpC;EAEA,OAAO\u002F4P,KAAKA,CAAC+4P,KAAK,EAAE;IAClB,OAAO,IAAIgE,KAAK,CAAChE,KAAK,CAAC;EACzB;EAEA,OAAO6L,MAAMA,CAAC7L,KAAK,EAAE;IACnB,OAAO,IAAIkE,MAAM,CAAClE,KAAK,CAAC;EAC1B;EAEA,OAAO6C,MAAMA,CAAC7C,KAAK,EAAE;IACnB,OAAO,IAAImE,MAAM,CAACnE,KAAK,CAAC;EAC1B;EAEA,OAAOsR,QAAQA,CAACtR,KAAK,EAAE;IACrB,OAAO,IAAIwE,QAAQ,CAACxE,KAAK,CAAC;EAC5B;EAEA,OAAO4E,wBAAwBA,CAAC5E,KAAK,EAAE;IACrC,OAAO,IAAIyE,wBAAwB,CAACzE,KAAK,CAAC;EAC5C;EAEA,OAAO6E,oBAAoBA,CAAC7E,KAAK,EAAE;IACjC,OAAO,IAAI0E,oBAAoB,CAAC1E,KAAK,CAAC;EACxC;EAEA,OAAOloR,WAAWA,CAACkoR,KAAK,EAAE;IACxB,OAAO,IAAI2E,WAAW,CAAC3E,KAAK,CAAC;EAC\u002FB;EAEA,OAAOv5B,MAAMA,CAACu5B,KAAK,EAAE;IACnB,OAAO,IAAI8E,MAAM,CAAC9E,KAAK,CAAC;EAC1B;EAEA,OAAOyL,WAAWA,CAACzL,KAAK,EAAE;IACxB,OAAO,IAAImF,WAAW,CAACnF,KAAK,CAAC;EAC\u002FB;EAEA,OAAO8L,WAAWA,CAAC9L,KAAK,EAAE;IACxB,OAAO,IAAIoF,WAAW,CAACpF,KAAK,CAAC;EAC\u002FB;EAEA,OAAOyM,MAAMA,CAACzM,KAAK,EAAE;IACnB,OAAO,IAAIqF,MAAM,CAACrF,KAAK,CAAC;EAC1B;EAEA,OAAO13B,OAAOA,CAAC03B,KAAK,EAAE;IACpB,OAAO,IAAIsF,OAAO,CAACtF,KAAK,CAAC;EAC3B;EAEA,OAAO+N,WAAWA,CAAC\u002FN,KAAK,EAAE;IACxB,OAAO,IAAIuF,WAAW,CAACvF,KAAK,CAAC;EAC\u002FB;EAEA,OAAOtsS,IAAIA,CAACssS,KAAK,EAAE;IACjB,OAAO,IAAIwF,IAAI,CAACxF,KAAK,CAAC;EACxB;EAEA,OAAOmR,KAAKA,CAACnR,KAAK,EAAE;IAClB,OAAO,IAAIgG,KAAK,CAAChG,KAAK,CAAC;EACzB;EAEA,OAAOyH,eAAeA,CAACzH,KAAK,EAAE;IAC5B,OAAO,IAAIiG,eAAe,CAACjG,KAAK,CAAC;EACnC;EAEA,OAAO2J,WAAWA,CAAC3J,KAAK,EAAE;IACxB,OAAO,IAAImG,WAAW,CAACnG,KAAK,CAAC;EAC\u002FB;EAEA,OAAO+L,gBAAgBA,CAAC\u002FL,KAAK,EAAE;IAC7B,OAAO,IAAIoG,gBAAgB,CAACpG,KAAK,CAAC;EACpC;EAEA,OAAO8M,MAAMA,CAAC9M,KAAK,EAAE;IACnB,OAAO,IAAIqG,MAAM,CAACrG,KAAK,CAAC;EAC1B;EAEA,OAAOqQ,YAAYA,CAACrQ,KAAK,EAAE;IACzB,OAAO,IAAIsG,YAAY,CAACtG,KAAK,CAAC;EAChC;EAEA,OAAOiD,aAAaA,CAACjD,KAAK,EAAE;IAC1B,OAAO,IAAIuG,aAAa,CAACvG,KAAK,CAAC;EACjC;EAEA,OAAOsH,KAAKA,CAACtH,KAAK,EAAE;IAClB,OAAO,IAAIwG,KAAK,CAACxG,KAAK,CAAC;EACzB;EAEA,OAAOz7B,OAAOA,CAACy7B,KAAK,EAAE;IACpB,OAAO,IAAI1P,cAAO,CAAC0P,KAAK,CAAC;EAC3B;EAEA,OAAO9T,UAAUA,CAAC8T,KAAK,EAAE;IACvB,OAAO,IAAItP,iBAAU,CAACsP,KAAK,CAAC;EAC9B;EAEA,OAAOyG,eAAeA,CAACzG,KAAK,EAAE;IAC5B,OAAO,IAAI0G,eAAe,CAAC1G,KAAK,CAAC;EACnC;EAEA,OAAOsQ,OAAOA,CAACtQ,KAAK,EAAE;IACpB,OAAO,IAAI2G,OAAO,CAAC3G,KAAK,CAAC;EAC3B;EAEA,OAAO8I,MAAMA,CAAC9I,KAAK,EAAE;IACnB,OAAO,IAAI4G,MAAM,CAAC5G,KAAK,CAAC;EAC1B;EAEA,OAAO+I,WAAWA,CAAC\u002FI,KAAK,EAAE;IACxB,OAAO,IAAI+G,WAAW,CAAC\u002FG,KAAK,CAAC;EAC\u002FB;EAEA,OAAOgO,OAAOA,CAAChO,KAAK,EAAE;IACpB,OAAO,IAAImH,OAAO,CAACnH,KAAK,CAAC;EAC3B;EAEA,OAAO+F,SAASA,CAAC\u002FF,KAAK,EAAE;IACtB,OAAO,IAAIoH,SAAS,CAACpH,KAAK,CAAC;EAC7B;EAEA,OAAOqI,SAASA,CAACrI,KAAK,EAAE;IACtB,OAAO,IAAIqH,SAAS,CAACrH,KAAK,CAAC;EAC7B;EAEA,OAAO5oB,QAAQA,CAAC4oB,KAAK,EAAE;IACrB,OAAO,IAAIzpB,eAAQ,CAACypB,KAAK,CAAC;EAC5B;EAEA,OAAOgM,gBAAgBA,CAAChM,KAAK,EAAE;IAC7B,OAAO,IAAI2H,gBAAgB,CAAC3H,KAAK,CAAC;EACpC;EAEA,OAAOsP,WAAWA,CAACtP,KAAK,EAAE;IACxB,OAAO,IAAI4H,WAAW,CAAC5H,KAAK,CAAC;EAC\u002FB;EAEA,OAAOuP,OAAOA,CAACvP,KAAK,EAAE;IACpB,OAAO,IAAI6H,OAAO,CAAC7H,KAAK,CAAC;EAC3B;EAEA,OAAO0L,iBAAiBA,CAAC1L,KAAK,EAAE;IAC9B,OAAO,IAAI8H,iBAAiB,CAAC9H,KAAK,CAAC;EACrC;EAEA,OAAO0F,eAAeA,CAAC1F,KAAK,EAAE;IAC5B,OAAO,IAAI+H,eAAe,CAAC\u002FH,KAAK,CAAC;EACnC;EAEA,OAAO0M,gBAAgBA,CAAC1M,KAAK,EAAE;IAC7B,OAAO,IAAIgI,gBAAgB,CAAChI,KAAK,CAAC;EACpC;EAEA,OAAO8K,WAAWA,CAAC9K,KAAK,EAAE;IACxB,OAAO,IAAIiI,WAAW,CAACjI,KAAK,CAAC;EAC\u002FB;EAEA,OAAOuK,GAAGA,CAACvK,KAAK,EAAE;IAChB,OAAO,IAAIkI,GAAG,CAAClI,KAAK,CAAC;EACvB;EAEA,OAAO+M,YAAYA,CAAC\u002FM,KAAK,EAAE;IACzB,OAAO,IAAImI,YAAY,CAACnI,KAAK,CAAC;EAChC;EAEA,OAAOn0F,MAAMA,CAACm0F,KAAK,EAAE;IACnB,OAAO,IAAIsI,MAAM,CAACtI,KAAK,CAAC;EAC1B;EAEA,OAAOplT,KAAKA,CAAColT,KAAK,EAAE;IAClB,OAAO,IAAIuI,KAAK,CAACvI,KAAK,CAAC;EACzB;EAEA,OAAO+K,UAAUA,CAAC\u002FK,KAAK,EAAE;IACvB,OAAO,IAAIwI,UAAU,CAACxI,KAAK,CAAC;EAC9B;EAEA,OAAOpQ,MAAMA,CAACoQ,KAAK,EAAE;IACnB,OAAO,IAAIyI,MAAM,CAACzI,KAAK,CAAC;EAC1B;EAEA,OAAOztB,SAASA,CAACytB,KAAK,EAAE;IACtB,OAAO,IAAI0I,SAAS,CAAC1I,KAAK,CAAC;EAC7B;EAEA,OAAO7kT,GAAGA,CAAC6kT,KAAK,EAAE;IAChB,OAAO,IAAI2I,GAAG,CAAC3I,KAAK,CAAC;EACvB;EAEA,OAAO1pS,GAAGA,CAAC0pS,KAAK,EAAE;IAChB,OAAO,IAAI6I,UAAU,CAAC7I,KAAK,CAAC;EAC9B;EAEA,OAAOwK,UAAUA,CAACxK,KAAK,EAAE;IACvB,OAAO,IAAIgJ,UAAU,CAAChJ,KAAK,CAAC;EAC9B;EAEA,OAAOriT,OAAOA,CAACqiT,KAAK,EAAE;IACpB,OAAO,IAAIlH,cAAO,CAACkH,KAAK,CAAC;EAC3B;EAEA,OAAOoE,SAASA,CAACpE,KAAK,EAAE;IACtB,OAAO,IAAImJ,SAAS,CAACnJ,KAAK,CAAC;EAC7B;EAEA,OAAOtkR,IAAIA,CAACskR,KAAK,EAAE;IACjB,OAAO,IAAIoJ,IAAI,CAACpJ,KAAK,CAAC;EACxB;EAEA,OAAOiM,YAAYA,CAACjM,KAAK,EAAE;IACzB,OAAO,IAAIqJ,YAAY,CAACrJ,KAAK,CAAC;EAChC;EAEA,OAAOiJ,KAAKA,CAACjJ,KAAK,EAAE;IAClB,OAAO,IAAIsJ,KAAK,CAACtJ,KAAK,CAAC;EACzB;EAEA,OAAOwP,QAAQA,CAACxP,KAAK,EAAE;IACrB,OAAO,IAAIuJ,QAAQ,CAACvJ,KAAK,CAAC;EAC5B;EAEA,OAAO0H,UAAUA,CAAC1H,KAAK,EAAE;IACvB,OAAO,IAAIwJ,UAAU,CAACxJ,KAAK,CAAC;EAC9B;EAEA,OAAOuQ,cAAcA,CAACvQ,KAAK,EAAE;IAC3B,OAAO,IAAIyJ,cAAc,CAACzJ,KAAK,CAAC;EAClC;EAEA,OAAOz1B,UAAUA,CAACy1B,KAAK,EAAE;IACvB,OAAO,IAAI0J,UAAU,CAAC1J,KAAK,CAAC;EAC9B;EAEA,OAAOt8S,MAAMA,CAACs8S,KAAK,EAAE;IACnB,OAAO,IAAI4J,MAAM,CAAC5J,KAAK,CAAC;EAC1B;EAEA,OAAOyK,SAASA,CAACzK,KAAK,EAAE;IACtB,OAAO,IAAI6J,SAAS,CAAC7J,KAAK,CAAC;EAC7B;EAEA,OAAO2F,SAASA,CAAC3F,KAAK,EAAE;IACtB,OAAO,IAAI8J,SAAS,CAAC9J,KAAK,CAAC;EAC7B;EAEA,OAAO2M,SAASA,CAAC3M,KAAK,EAAE;IACtB,OAAO,IAAI+J,SAAS,CAAC\u002FJ,KAAK,CAAC;EAC7B;EAEA,OAAOiR,OAAOA,CAACjR,KAAK,EAAE;IACpB,OAAO,IAAIgK,OAAO,CAAChK,KAAK,CAAC;EAC3B;EAEA,OAAO0K,UAAUA,CAAC1K,KAAK,EAAE;IACvB,OAAO,IAAIiK,UAAU,CAACjK,KAAK,CAAC;EAC9B;EAEA,OAAOwQ,SAASA,CAACxQ,KAAK,EAAE;IACtB,OAAO,IAAIkK,SAAS,CAAClK,KAAK,CAAC;EAC7B;EAEA,OAAO4M,UAAUA,CAAC5M,KAAK,EAAE;IACvB,OAAO,IAAImK,UAAU,CAACnK,KAAK,CAAC;EAC9B;EAEA,OAAO6M,kBAAkBA,CAAC7M,KAAK,EAAE;IAC\u002FB,OAAO,IAAIoK,kBAAkB,CAACpK,KAAK,CAAC;EACtC;EAEA,OAAOz+O,IAAIA,CAACy+O,KAAK,EAAE;IACjB,OAAO,IAAIqK,IAAI,CAACrK,KAAK,CAAC;EACxB;EAEA,OAAOgN,GAAGA,CAAChN,KAAK,EAAE;IAChB,OAAO,IAAIsK,GAAG,CAACtK,KAAK,CAAC;EACvB;EAEA,OAAOxtB,GAAGA,CAACwtB,KAAK,EAAE;IAChB,OAAO,IAAI4K,GAAG,CAAC5K,KAAK,CAAC;EACvB;EAEA,OAAOgL,IAAIA,CAAChL,KAAK,EAAE;IACjB,OAAO,IAAIuL,IAAI,CAACvL,KAAK,CAAC;EACxB;EAEA,OAAO55B,WAAWA,CAAC45B,KAAK,EAAE;IACxB,OAAO,IAAI2L,WAAW,CAAC3L,KAAK,CAAC;EAC\u002FB;EAEA,OAAOyQ,iBAAiBA,CAACzQ,KAAK,EAAE;IAC9B,OAAO,IAAIoM,iBAAiB,CAACpM,KAAK,CAAC;EACrC;EAEA,OAAO3W,OAAOA,CAAC2W,KAAK,EAAE;IACpB,OAAO,IAAIvE,cAAO,CAACuE,KAAK,CAAC;EAC3B;EAEA,OAAOkM,iBAAiBA,CAAClM,KAAK,EAAE;IAC9B,OAAO,IAAIqM,iBAAiB,CAACrM,KAAK,CAAC;EACrC;EAEA,OAAOjhB,QAAQA,CAACihB,KAAK,EAAE;IACrB,OAAO,IAAIsM,QAAQ,CAACtM,KAAK,CAAC;EAC5B;EAEA,OAAOgF,OAAOA,CAAChF,KAAK,EAAE;IACpB,OAAO,IAAIuM,OAAO,CAACvM,KAAK,CAAC;EAC3B;EAEA,OAAO94B,KAAKA,CAAC84B,KAAK,EAAE;IAClB,OAAO,IAAImN,KAAK,CAACnN,KAAK,CAAC;EACzB;EAEA,OAAOmM,gBAAgBA,CAACnM,KAAK,EAAE;IAC7B,OAAO,IAAIoN,gBAAgB,CAACpN,KAAK,CAAC;EACpC;EAEA,OAAO0Q,YAAYA,CAAC1Q,KAAK,EAAE;IACzB,OAAO,IAAIqN,YAAY,CAACrN,KAAK,CAAC;EAChC;EAEA,OAAOsO,WAAWA,CAACtO,KAAK,EAAE;IACxB,OAAO,IAAIsN,WAAW,CAACtN,KAAK,CAAC;EAC\u002FB;EAEA,OAAOiL,QAAQA,CAACjL,KAAK,EAAE;IACrB,OAAO,IAAIuN,QAAQ,CAACvN,KAAK,CAAC;EAC5B;EAEA,OAAOj9D,EAAEA,CAACi9D,KAAK,EAAE;IACf,OAAO,IAAIwN,EAAE,CAACxN,KAAK,CAAC;EACtB;EAEA,OAAOr1R,KAAKA,CAACq1R,KAAK,EAAE;IAClB,OAAO,IAAIyN,KAAK,CAACzN,KAAK,CAAC;EACzB;EAEA,OAAOvnE,MAAMA,CAACunE,KAAK,EAAE;IACnB,OAAO,IAAI0N,MAAM,CAAC1N,KAAK,CAAC;EAC1B;EAEA,OAAOje,QAAQA,CAACie,KAAK,EAAE;IACrB,OAAO,IAAI2N,QAAQ,CAAC3N,KAAK,CAAC;EAC5B;EAEA,OAAOyP,MAAMA,CAACzP,KAAK,EAAE;IACnB,OAAO,IAAI4N,MAAM,CAAC5N,KAAK,CAAC;EAC1B;EAEA,OAAOkL,YAAYA,CAAClL,KAAK,EAAE;IACzB,OAAO,IAAI6N,YAAY,CAAC7N,KAAK,CAAC;EAChC;EAEA,OAAOiO,UAAUA,CAACjO,KAAK,EAAE;IACvB,OAAO,IAAI8N,UAAU,CAAC9N,KAAK,CAAC;EAC9B;EAEA,OAAO9U,MAAMA,CAAC8U,KAAK,EAAE;IACnB,OAAO,IAAIj\u002FF,aAAM,CAACi\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\u002FR,KAAK,CAAC;EAC\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\u002FC,IAAIA,CAACj\u002FC,UAAU,EAAE;IACtB,OAAO,IAAIs+C,IAAI,CAACt+C,UAAU,CAAC;EAC7B;EAEA,OAAOk\u002FC,EAAEA,CAACl\u002FC,UAAU,EAAE;IACpB,OAAO,IAAIu+C,EAAE,CAACv+C,UAAU,CAAC;EAC3B;EAEA,OAAOwb,IAAIA,CAACxb,UAAU,EAAE;IACtB,OAAO,IAAIw+C,IAAI,CAACx+C,UAAU,CAAC;EAC7B;EAEA,OAAOp6Q,CAACA,CAACo6Q,UAAU,EAAE;IACnB,OAAO,IAAI76M,CAAC,CAAC66M,UAAU,CAAC;EAC1B;EAEA,OAAOm\u002FC,EAAEA,CAACn\u002FC,UAAU,EAAE;IACpB,OAAO,IAAIy+C,EAAE,CAACz+C,UAAU,CAAC;EAC3B;EAEA,OAAOo\u002FC,EAAEA,CAACp\u002FC,UAAU,EAAE;IACpB,OAAO,IAAI0+C,EAAE,CAAC1+C,UAAU,CAAC;EAC3B;EAEA,OAAO32Q,CAACA,CAAC22Q,UAAU,EAAE;IACnB,OAAO,IAAIz1L,CAAC,CAACy1L,UAAU,CAAC;EAC1B;EAEA,OAAOq\u002FC,IAAIA,CAACr\u002FC,UAAU,EAAE;IACtB,OAAO,IAAI4+C,IAAI,CAAC5+C,UAAU,CAAC;EAC7B;EAEA,OAAOs\u002FC,GAAGA,CAACt\u002FC,UAAU,EAAE;IACrB,OAAO,IAAI6+C,GAAG,CAAC7+C,UAAU,CAAC;EAC5B;EAEA,OAAOu\u002FC,GAAGA,CAACv\u002FC,UAAU,EAAE;IACrB,OAAO,IAAI8+C,GAAG,CAAC9+C,UAAU,CAAC;EAC5B;EAEA,OAAOw\u002FC,EAAEA,CAACx\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\u002FzR,OAAO,CAAC,CAAC,CAAC;MAC\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\u002FpC,KAAK,CAAC+pC,WAAW,GAAG\u002FpC,KAAK,CAACmpS,WAAW,GAAG,IAAI;UAC9C;UACAlqR,QAAQ,CAACr2C,IAAI,CACXw\u002FT,eAAe,CAACa,mBAAmB,CAACxyT,IAAI,EAAEqyT,UAAU,EAAExgD,OAAO,EAAE;YAC7DtoP;UACF,CAAC,CACH,CAAC;UACD;QACF,KAAKpqC,oBAAoB,CAACM,SAAS;UACjC+oD,QAAQ,CAACr2C,IAAI,CACXw\u002FT,eAAe,CAACa,mBAAmB,CAACxyT,IAAI,EAAEqyT,UAAU,EAAExgD,OAAO,EAAE,CAAC,CAAC,CACnE,CAAC;UACD;MACJ;IACF;IAEA,OAAO;MACLnlQ,WAAW,EAAE,MAAMyV,OAAO,CAAC+0O,GAAG,CAAC1uN,QAAQ;IACzC,CAAC;EACH;EAEA,aAAaoqR,mBAAmBA,CAC9B9C,iBAAiB,EACjBtuE,SAAS,EACTmO,IAAI,EACJjjP,WAAW,EACXwlT,aAAa,EACb;IACA,IAAI,CAACxlT,WAAW,EAAE;MAChB,OAAO,IAAI;IACb;IAEA,MAAM;MAAEhe,OAAO;MAAEsR;IAAK,CAAC,GAAGwhP,SAAS;IACnC,MAAMh5M,QAAQ,GAAG,EAAE;IACnB,KAAK,MAAM6pR,UAAU,IAAI3lT,WAAW,EAAE;MACpC,IAAI2lT,UAAU,CAACC,OAAO,EAAE;QACtB;MACF;MACA,QAAQD,UAAU,CAACE,cAAc;QAC\u002FB,KAAKpzU,oBAAoB,CAACE,QAAQ;UAChCmpD,QAAQ,CAACr2C,IAAI,CACX4+T,kBAAkB,CAAC8B,wBAAwB,CACzC\u002FC,iBAAiB,EACjB9vT,IAAI,EACJqyT,UAAU,EACV;YACE7wE,SAAS;YACTmO,IAAI;YACJhuB,gBAAgB,EAAEjzO;UACpB,CACF,CACF,CAAC;UACD;QACF,KAAKvP,oBAAoB,CAACG,SAAS;UACjC,IAAI+yU,UAAU,CAACI,UAAU,EAAE;YACzBjqR,QAAQ,CAACr2C,IAAI,CACXo\u002FT,mBAAmB,CAACsB,wBAAwB,CAC1C\u002FC,iBAAiB,EACjB9vT,IAAI,EACJqyT,UAAU,EACV;cACE1wF,gBAAgB,EAAEjzO;YACpB,CACF,CACF,CAAC;UACH,CAAC,MAAM;YACL85C,QAAQ,CAACr2C,IAAI,CACXm\u002FT,aAAa,CAACuB,wBAAwB,CACpC\u002FC,iBAAiB,EACjB9vT,IAAI,EACJqyT,UAAU,EACV;cACE1wF,gBAAgB,EAAEjzO;YACpB,CACF,CACF,CAAC;UACH;UACA;QACF,KAAKvP,oBAAoB,CAACK,GAAG;UAC3BgpD,QAAQ,CAACr2C,IAAI,CACXm\u002FT,aAAa,CAACuB,wBAAwB,CACpC\u002FC,iBAAiB,EACjB9vT,IAAI,EACJqyT,UAAU,EACV;YACE1wF,gBAAgB,EAAEjzO;UACpB,CACF,CACF,CAAC;UACD;QACF,KAAKvP,oBAAoB,CAACI,KAAK;UAC7B,MAAMgqC,KAAK,GAAG76B,OAAO,CAAC0E,0BAA0B,GAC5C,MAAM8+T,aAAa,EAAE31T,GAAG,CAAC81T,UAAU,CAACF,QAAQ,CAAC,GAC7C,IAAI;UACR,IAAI5oS,KAAK,EAAE+pC,WAAW,EAAE;YACtB,MAAM;cAAEA,WAAW;cAAEo\u002FP;YAAY,CAAC,GAAGnpS,KAAK;YAC1C,IAAImpS,WAAW,EAAE;cACfp\u002FP,WAAW,CAACvxD,IAAI,CAACV,GAAG,CAAC,OAAO,EAAEqxT,WAAW,CAAC;YAC5C;YACAnpS,KAAK,CAACynO,QAAQ,GAAG,IAAIn2N,UAAU,CAACy4B,WAAW,EAAEA,WAAW,CAACvkE,MAAM,CAAC;YAChEw6B,KAAK,CAAC+pC,WAAW,GAAG\u002FpC,KAAK,CAACmpS,WAAW,GAAG,IAAI;UAC9C;UACAlqR,QAAQ,CAACr2C,IAAI,CACXw\u002FT,eAAe,CAACkB,wBAAwB,CACtC\u002FC,iBAAiB,EACjB9vT,IAAI,EACJqyT,UAAU,EACV;YACE9oS,KAAK;YACLo4M,gBAAgB,EAAEjzO;UACpB,CACF,CACF,CAAC;UACD;QACF,KAAKvP,oBAAoB,CAACM,SAAS;UACjC+oD,QAAQ,CAACr2C,IAAI,CACXw\u002FT,eAAe,CAACkB,wBAAwB,CACtC\u002FC,iBAAiB,EACjB9vT,IAAI,EACJqyT,UAAU,EACV;YACE1wF,gBAAgB,EAAEjzO;UACpB,CACF,CACF,CAAC;UACD;MACJ;IACF;IAEA,OAAOyzB,OAAO,CAAC+0O,GAAG,CAAC1uN,QAAQ,CAAC;EAC9B;AACF;AAEA,SAASsqR,WAAWA,CAAC73S,KAAK,EAAE83S,YAAY,GAAG,IAAIr+S,iBAAiB,CAAC,CAAC,CAAC,EAAE;EACnE,IAAI,CAACpgB,KAAK,CAAC4I,OAAO,CAAC+d,KAAK,CAAC,EAAE;IACzB,OAAO83S,YAAY;EACrB;EAEA,MAAMp6C,QAAQ,GAAGo6C,YAAY,IAAI,IAAIr+S,iBAAiB,CAAC,CAAC,CAAC;EACzD,QAAQuG,KAAK,CAAClsB,MAAM;IAClB,KAAK,CAAC;MACJ,OAAO,IAAI;IAEb,KAAK,CAAC;MACJg+B,eAAe,CAACiB,IAAI,CAAClZ,UAAU,CAACmG,KAAK,EAAE,CAAC,EAAE09P,QAAQ,EAAE,CAAC,CAAC;MACtD,OAAOA,QAAQ;IAEjB,KAAK,CAAC;MACJ5rP,eAAe,CAACkB,GAAG,CAACnZ,UAAU,CAACmG,KAAK,EAAE,CAAC,EAAE09P,QAAQ,EAAE,CAAC,CAAC;MACrD,OAAOA,QAAQ;IAEjB,KAAK,CAAC;MACJ5rP,eAAe,CAACoB,IAAI,CAACrZ,UAAU,CAACmG,KAAK,EAAE,CAAC,EAAE09P,QAAQ,EAAE,CAAC,CAAC;MACtD,OAAOA,QAAQ;IAEjB;MACE,OAAOo6C,YAAY;EACvB;AACF;AAEA,SAASC,gBAAgBA,CAAC\u002F3S,KAAK,EAAE;EAC\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\u002FB,IAAI,CAACC,oBAAoB,GAAG,CAAC;EAC\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\u002FB;EAEA,aAAanH,wBAAwBA,CACnC\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\u002FK,iBAAiB,CAAC\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\u002FvR,KAAK,IAAI,CAAC;MAC\u002FC7a,GAAG,IAAI,GAAG6qS,WAAW,MAAM71B,WAAW,CACpC,IAAI,CAAC81B,WAAW,EACH,KACf,CAAC,IAAI\u002FmS,IAAI,KAAK;IAChB;IAEA,OAAO\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\u002FO,MAAM,EAAEzD,iBAAiB,EAAE;IAC\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\u002FU,aAAa,GAAG\u002FrU,IAAI,CAACsa,KAAK,CAACe,MAAM,GAAG21N,UAAU,CAAC;IAEjD,IAAI,CAAC20B,QAAQ,EAAE;MAKb,MAAMqmE,kBAAkB,GAAGrlU,CAAC,IAAI3G,IAAI,CAACkiB,KAAK,CAACvb,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG;MAEzD,IAAI8jU,SAAS,KAAK,CAAC,CAAC,EAAE;QAEpB,MAAMwB,SAAS,GAAG,IAAI,CAACH,aAAa,CAAC1hE,IAAI,EAAEnwC,IAAI,CAAC;QAIhD0rC,QAAQ,GAAGqmE,kBAAkB,CAC3BhsU,IAAI,CAACC,GAAG,CAACob,MAAM,GAAGpvB,WAAW,EAAEmvB,KAAK,GAAG6wT,SAAS,CAClD,CAAC;QACDF,aAAa,GAAG,CAAC;MACnB,CAAC,MAAM;QACL,MAAM7yQ,KAAK,GAAGkxM,IAAI,CAACzsQ,KAAK,CAAC,UAAU,CAAC;QACpC,MAAMuuU,WAAW,GAAG,EAAE;QACtB,KAAK,MAAMvzQ,IAAI,IAAIO,KAAK,EAAE;UACxB,MAAM0qK,OAAO,GAAG3J,IAAI,CAAC+jB,YAAY,CAACrlL,IAAI,CAAC,CAACt4D,IAAI,CAAC,EAAE,CAAC;UAChD,MAAMg5N,MAAM,GAAGY,IAAI,CAAC2jB,aAAa,CAACha,OAAO,CAAC;UAC1C,MAAMxpL,SAAS,GAAG6\u002FK,IAAI,CAAC6jB,gBAAgB,CAACla,OAAO,CAAC;UAChDsoG,WAAW,CAAC9rU,IAAI,CAAC;YACfu4D,IAAI,EAAEirK,OAAO;YACbvK,MAAM;YACNj\u002FK;UACF,CAAC,CAAC;QACJ;QAEA,MAAM+xR,QAAQ,GAAGC,KAAK,IAAI;UAExB,IAAI7kE,WAAW,GAAG,CAAC;UACnB,KAAK,MAAMz\u002FM,KAAK,IAAIokR,WAAW,EAAE;YAC\u002FB,MAAMx9S,MAAM,GAAG,IAAI,CAAC29S,UAAU,CAAC,IAAI,EAAEpyG,IAAI,EAAEmyG,KAAK,EAAEhxT,KAAK,EAAE0sC,KAAK,CAAC;YAC\u002FDy\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\u002FI,CAAC,EAAE,EAAE;MAC\u002FC,MAAM,CAACuT,KAAK,EAAEN,GAAG,CAAC,GAAGqnC,SAAS,CAACt6C,CAAC,CAAC;MACjC,MAAMgsN,KAAK,GAAGuN,MAAM,CAACv5N,CAAC,CAAC;MACvB,MAAM0qQ,UAAU,GAAG1+C,KAAK,CAAC1wM,KAAK,GAAGwJ,KAAK;MACtC,IAAIknM,KAAK,CAACvL,OAAO,KAAK,GAAG,EAAE;QACzB,IAAItzJ,YAAY,GAAGu9M,UAAU,GAAGpvP,KAAK,EAAE;UAErCsT,MAAM,CAACtuB,IAAI,CAACu4D,IAAI,CAACphD,SAAS,CAAC41T,UAAU,EAAE95T,KAAK,CAAC,CAAC;UAC9C85T,UAAU,GAAG95T,KAAK;UAClB45C,YAAY,GAAGu9M,UAAU;UACzByiE,yBAAyB,GAAG,CAAC,CAAC;UAC9Bl0C,YAAY,GAAG,CAAC,CAAC;QACnB,CAAC,MAAM;UACL9rO,YAAY,IAAIu9M,UAAU;UAC1ByiE,yBAAyB,GAAG55T,KAAK;UACjC65T,uBAAuB,GAAGn6T,GAAG;UAC7BgmR,YAAY,GAAGj5R,CAAC;QAClB;MACF,CAAC,MAAM,IAAImtD,YAAY,GAAGu9M,UAAU,GAAGpvP,KAAK,EAAE;QAE5C,IAAI6xT,yBAAyB,KAAK,CAAC,CAAC,EAAE;UACpCv+S,MAAM,CAACtuB,IAAI,CAACu4D,IAAI,CAACphD,SAAS,CAAC41T,UAAU,EAAED,uBAAuB,CAAC,CAAC;UAChEC,UAAU,GAAGD,uBAAuB;UACpCptU,CAAC,GAAGi5R,YAAY,GAAG,CAAC;UACpBk0C,yBAAyB,GAAG,CAAC,CAAC;UAC9BhgR,YAAY,GAAG,CAAC;QAClB,CAAC,MAAM;UAELv+B,MAAM,CAACtuB,IAAI,CAACu4D,IAAI,CAACphD,SAAS,CAAC41T,UAAU,EAAE95T,KAAK,CAAC,CAAC;UAC9C85T,UAAU,GAAG95T,KAAK;UAClB45C,YAAY,GAAGu9M,UAAU;QAC3B;MACF,CAAC,MAAM;QACLv9M,YAAY,IAAIu9M,UAAU;MAC5B;IACF;IAEA,IAAI2iE,UAAU,GAAGx0Q,IAAI,CAAC37D,MAAM,EAAE;MAC5B0xB,MAAM,CAACtuB,IAAI,CAACu4D,IAAI,CAACphD,SAAS,CAAC41T,UAAU,EAAEx0Q,IAAI,CAAC37D,MAAM,CAAC,CAAC;IACtD;IAEA,OAAO0xB,MAAM;EACf;EAEA,MAAMq3S,kBAAkBA,CAACt2E,SAAS,EAAEmO,IAAI,EAAEkJ,OAAO,EAAE;IACjD,MAAM,KAAK,CAACi\u002FD,kBAAkB,CAACt2E,SAAS,EAAEmO,IAAI,EAAEkJ,OAAO,CAAC;IACxD,MAAMsD,IAAI,GAAG,IAAI,CAAC71P,IAAI,CAAC4yP,WAAW;IAClC,IAAI,CAACiD,IAAI,EAAE;MACT;IACF;IAKA,MAAMgjE,OAAO,GAAGhjE,IAAI,CAAC\u002FpQ,IAAI,CAAC,IAAI,CAAC;IAC\u002FB,IAAI+sU,OAAO,KAAK,IAAI,CAAC74T,IAAI,CAACi0T,UAAU,EAAE;MACpC;IACF;IACA,MAAMvuT,KAAK,GAAGmzT,OAAO,CAACzkU,UAAU,CAAC,6BAA6B,EAAE,CAAC0kU,EAAE,EAAE1pU,EAAE,KACrEA,EAAE,GAAG,KAAKA,EAAE,EAAE,GAAG,MACnB,CAAC;IACD,IAAI,IAAIsV,MAAM,CAAC,QAAQgB,KAAK,OAAO,CAAC,CAACf,IAAI,CAAC,IAAI,CAAC3E,IAAI,CAACi0T,UAAU,CAAC,EAAE;MAC\u002FD,IAAI,CAACj0T,IAAI,CAAC4yP,WAAW,GAAG,IAAI,CAAC5yP,IAAI,CAACi0T,UAAU,CAAC7qU,KAAK,CAAC,IAAI,CAAC;IAC1D;EACF;EAEAyoU,cAAcA,CAAA,EAAG;IACf,OAAO;MACLv5R,EAAE,EAAE,IAAI,CAACt4B,IAAI,CAACs4B,EAAE;MAChB9uC,KAAK,EAAE,IAAI,CAACwW,IAAI,CAACi0T,UAAU;MAC3Bn0C,YAAY,EAAE,IAAI,CAAC9\u002FQ,IAAI,CAACm0T,iBAAiB,IAAI,EAAE;MAC\u002FC4E,SAAS,EAAE,IAAI,CAAC\u002F4T,IAAI,CAACwrS,SAAS;MAC9BopB,QAAQ,EAAE,IAAI,CAAC50T,IAAI,CAAC40T,QAAQ;MAC5BoE,SAAS,EAAE,IAAI,CAACh5T,IAAI,CAAC2wC,MAAM;MAC3BuqP,IAAI,EAAE,IAAI,CAACl7R,IAAI,CAACk7R,IAAI;MACpB+9B,QAAQ,EAAE,CAAC,IAAI,CAACj5T,IAAI,CAAC80T,QAAQ;MAC7B36B,MAAM,EAAE,IAAI,CAACn6R,IAAI,CAACm6R,MAAM;MACxBjwS,IAAI,EAAE,IAAI,CAAC8V,IAAI,CAACyuT,SAAS;MACzB1+T,IAAI,EAAE,IAAI,CAACiQ,IAAI,CAACjQ,IAAI;MACpB2T,OAAO,EAAE,IAAI,CAAC1D,IAAI,CAAC0D,OAAO;MAC1B7M,IAAI,EAAE,IAAI,CAACmJ,IAAI,CAACqG,SAAS;MACzByrT,WAAW,EAAE,IAAI,CAAC9xT,IAAI,CAAC82R,WAAW;MAClCi7B,SAAS,EAAE,IAAI,CAAC\u002FxT,IAAI,CAACwgS,eAAe;MACpC55R,QAAQ,EAAE,IAAI,CAACA,QAAQ;MACvBpvB,IAAI,EAAE;IACR,CAAC;EACH;AACF;AAEA,MAAM4yU,sBAAsB,SAASG,gBAAgB,CAAC;EACpDngU,WAAWA,CAACu0B,MAAM,EAAE;IAClB,KAAK,CAACA,MAAM,CAAC;IAEb,IAAI,CAACu6S,iBAAiB,GAAG,IAAI;IAC7B,IAAI,CAACC,mBAAmB,GAAG,IAAI;IAE\u002FB,MAAMC,OAAO,GAAG,IAAI,CAACvE,YAAY,CAACh3U,mBAAmB,CAACM,KAAK,CAAC;MAC1Dk7U,YAAY,GAAG,IAAI,CAACxE,YAAY,CAACh3U,mBAAmB,CAACO,UAAU,CAAC;IAElE,IAAI,CAAC4hB,IAAI,CAACs5T,QAAQ,GAAG,CAACF,OAAO,IAAI,CAACC,YAAY;IAC9C,IAAI,CAACr5T,IAAI,CAACu5T,WAAW,GAAGH,OAAO,IAAI,CAACC,YAAY;IAChD,IAAI,CAACr5T,IAAI,CAACw5T,UAAU,GAAGH,YAAY;IACnC,IAAI,CAACr5T,IAAI,CAACy5T,aAAa,GAAG,KAAK;IAE\u002FB,IAAI,IAAI,CAACz5T,IAAI,CAACs5T,QAAQ,EAAE;MACtB,IAAI,CAACI,gBAAgB,CAAC\u002F6S,MAAM,CAAC;IAC\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\u002FT,OAAO,CAAC,CAAC,CAAC;IACtE,IAAI8\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\u002FT,gBAAgB,CAAC3\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\u002FC,CAAC;UACDivK,YAAY,EAAE,IAAI,CAAC\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\u002FO,MAAM,EAAEzD,iBAAiB,EAAE;IAC\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\u002F8T,GAAG,GAAG\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\u002FlC,UAAU,GAAG\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AAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,EAClC,IAAIA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CACnC,CAAC;EACJ;AACF,CAAC;AAED,SAAS39T,EAAEA,CAAChB,MAAM,EAAExO,CAAC,EAAEC,CAAC,EAAEs5B,CAAC,EAAEjH,GAAG,EAAE;EAChC9jB,MAAM,CAACugP,MAAM,CAAC\u002FuP,CAAC,CAAC;EAChBwO,MAAM,CAAC8+T,GAAG,CAACrtU,CAAC,CAAC;EACbqyB,GAAG,CAACy8N,MAAM,CAAC\u002FuP,CAAC,CAAC;EACbsyB,GAAG,CAACs7S,GAAG,CAAC,CAAC;EACTt7S,GAAG,CAACg7S,GAAG,CAAC\u002FzS,CAAC,CAAC;EACV\u002FqB,MAAM,CAACg\u002FT,GAAG,CAACl7S,GAAG,CAAC;AACjB;AAEA,SAAS07S,GAAGA,CAACx\u002FT,MAAM,EAAExO,CAAC,EAAEC,CAAC,EAAEs5B,CAAC,EAAEjH,GAAG,EAAE;EACjC9jB,MAAM,CAACugP,MAAM,CAAC\u002FuP,CAAC,CAAC;EAChBwO,MAAM,CAAC8+T,GAAG,CAACrtU,CAAC,CAAC;EACbqyB,GAAG,CAACy8N,MAAM,CAAC\u002FuP,CAAC,CAAC;EACbsyB,GAAG,CAACg7S,GAAG,CAAC\u002FzS,CAAC,CAAC;EACV\u002FqB,MAAM,CAACg\u002FT,GAAG,CAACl7S,GAAG,CAAC;EACfA,GAAG,CAACy8N,MAAM,CAAC9uP,CAAC,CAAC;EACbqyB,GAAG,CAACg7S,GAAG,CAAC\u002FzS,CAAC,CAAC;EACV\u002FqB,MAAM,CAACg\u002FT,GAAG,CAACl7S,GAAG,CAAC;AACjB;AAEA,SAASikJ,KAAKA,CAAC\u002FnK,MAAM,EAAExO,CAAC,EAAEsyB,GAAG,EAAE;EAC7B9jB,MAAM,CAACugP,MAAM,CAAC\u002FuP,CAAC,CAAC;EAChBwO,MAAM,CAACm\u002FT,WAAW,CAAC,EAAE,CAAC;EACtBr7S,GAAG,CAACy8N,MAAM,CAAC\u002FuP,CAAC,CAAC;EACbsyB,GAAG,CAACq7S,WAAW,CAAC,EAAE,CAAC;EACnBn\u002FT,MAAM,CAACg\u002FT,GAAG,CAACl7S,GAAG,CAAC;EACfA,GAAG,CAACy8N,MAAM,CAAC\u002FuP,CAAC,CAAC;EACbsyB,GAAG,CAACq7S,WAAW,CAAC,EAAE,CAAC;EACnBn\u002FT,MAAM,CAACg\u002FT,GAAG,CAACl7S,GAAG,CAAC;AACjB;AAEA,SAAS27S,UAAUA,CAACz\u002FT,MAAM,EAAExO,CAAC,EAAEsyB,GAAG,EAAE;EAClC9jB,MAAM,CAACugP,MAAM,CAAC\u002FuP,CAAC,CAAC;EAChBwO,MAAM,CAACm\u002FT,WAAW,CAAC,EAAE,CAAC;EACtBr7S,GAAG,CAACy8N,MAAM,CAAC\u002FuP,CAAC,CAAC;EACbsyB,GAAG,CAACq7S,WAAW,CAAC,EAAE,CAAC;EACnBn\u002FT,MAAM,CAACg\u002FT,GAAG,CAACl7S,GAAG,CAAC;EACfA,GAAG,CAACy8N,MAAM,CAAC\u002FuP,CAAC,CAAC;EACbsyB,GAAG,CAACq7S,WAAW,CAAC,EAAE,CAAC;EACnBn\u002FT,MAAM,CAACg\u002FT,GAAG,CAACl7S,GAAG,CAAC;AACjB;AAEA,SAAS47S,WAAWA,CAAC1\u002FT,MAAM,EAAExO,CAAC,EAAEsyB,GAAG,EAAE;EACnC9jB,MAAM,CAACugP,MAAM,CAAC\u002FuP,CAAC,CAAC;EAChBwO,MAAM,CAACm\u002FT,WAAW,CAAC,CAAC,CAAC;EACrBr7S,GAAG,CAACy8N,MAAM,CAAC\u002FuP,CAAC,CAAC;EACbsyB,GAAG,CAACq7S,WAAW,CAAC,CAAC,CAAC;EAClBn\u002FT,MAAM,CAACg\u002FT,GAAG,CAACl7S,GAAG,CAAC;EACfA,GAAG,CAACy8N,MAAM,CAAC\u002FuP,CAAC,CAAC;EACbsyB,GAAG,CAACm7S,UAAU,CAAC,CAAC,CAAC;EACjBj\u002FT,MAAM,CAACg\u002FT,GAAG,CAACl7S,GAAG,CAAC;AACjB;AAEA,SAAS67S,gBAAgBA,CAAC3\u002FT,MAAM,EAAExO,CAAC,EAAEsyB,GAAG,EAAE;EACxC9jB,MAAM,CAACugP,MAAM,CAAC\u002FuP,CAAC,CAAC;EAChBwO,MAAM,CAACm\u002FT,WAAW,CAAC,EAAE,CAAC;EACtBr7S,GAAG,CAACy8N,MAAM,CAAC\u002FuP,CAAC,CAAC;EACbsyB,GAAG,CAACq7S,WAAW,CAAC,EAAE,CAAC;EACnBn\u002FT,MAAM,CAACg\u002FT,GAAG,CAACl7S,GAAG,CAAC;EACfA,GAAG,CAACy8N,MAAM,CAAC\u002FuP,CAAC,CAAC;EACbsyB,GAAG,CAACm7S,UAAU,CAAC,CAAC,CAAC;EACjBj\u002FT,MAAM,CAACg\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\u002FE,EAAE,CAAC;IACZ\u002F8S,CAAC,CAACs9N,MAAM,CAAC0\u002FE,EAAE,CAAC;IACZ,KAAKh5T,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,EAAE,EAAE,EAAEA,CAAC,EAAE;MACvBujO,EAAE,CAAC+V,MAAM,CAACt9N,CAAC,CAAC;MACZw8S,UAAU,CAAC7wF,IAAI,EAAEvkO,CAAC,EAAEwkO,IAAI,CAAC;MACzBrE,EAAE,CAAC3uO,GAAG,CAAC+yO,IAAI,CAAC;MACZ5tO,EAAE,CAAC4tO,IAAI,EAAEvkO,CAAC,EAAEu1B,CAAC,EAAEhyC,CAAC,EAAEihP,IAAI,CAAC;MACvBrE,EAAE,CAAC3uO,GAAG,CAAC+yO,IAAI,CAAC;MACZpE,EAAE,CAAC3uO,GAAG,CAACgV,CAAC,CAAC5J,CAAC,CAAC,CAAC;MACZujO,EAAE,CAAC3uO,GAAG,CAAC+nC,CAAC,CAAC38B,CAAC,CAAC,CAAC;MAEZ8gK,KAAK,CAAC5sH,EAAE,EAAE1qD,CAAC,EAAEo+O,IAAI,CAAC;MAClB2wF,GAAG,CAAC5wF,IAAI,EAAEn+O,CAAC,EAAE5C,CAAC,EAAE6C,CAAC,EAAEm+O,IAAI,CAAC;MACxB1zL,EAAE,CAACt\u002FC,GAAG,CAAC+yO,IAAI,CAAC;MAEZE,IAAI,GAAG7rN,CAAC;MACRA,CAAC,GAAGr1B,CAAC;MACLA,CAAC,GAAGgyC,CAAC;MACLA,CAAC,GAAGv1B,CAAC;MACLpb,CAAC,CAAC4M,GAAG,CAAC2uO,EAAE,CAAC;MACTngO,CAAC,GAAGpb,CAAC;MACLA,CAAC,GAAGyB,CAAC;MACLA,CAAC,GAAG7C,CAAC;MACLA,CAAC,GAAG4C,CAAC;MACLq+O,IAAI,CAACyR,MAAM,CAAC\u002FV,EAAE,CAAC;MACfsE,IAAI,CAACjzO,GAAG,CAACs\u002FC,EAAE,CAAC;MACZ1qD,CAAC,GAAGq+O,IAAI;IACV;IACAsvF,EAAE,CAACviU,GAAG,CAACpL,CAAC,CAAC;IACT0b,EAAE,CAACtQ,GAAG,CAAChO,CAAC,CAAC;IACTwe,EAAE,CAACxQ,GAAG,CAACnL,CAAC,CAAC;IACT2tU,EAAE,CAACxiU,GAAG,CAAC5M,CAAC,CAAC;IACT6wU,EAAE,CAACjkU,GAAG,CAACwO,CAAC,CAAC;IACT01T,EAAE,CAAClkU,GAAG,CAAC+jC,CAAC,CAAC;IACTogS,EAAE,CAACnkU,GAAG,CAACjO,CAAC,CAAC;IACTqyU,EAAE,CAACpkU,GAAG,CAAConB,CAAC,CAAC;EACX;EAEA,IAAIjjB,MAAM;EACV,IAAI,CAAC6\u002FT,OAAO,EAAE;IACZ7\u002FT,MAAM,GAAG,IAAI3U,UAAU,CAAC,EAAE,CAAC;IAC3B+yU,EAAE,CAACmB,MAAM,CAACv\u002FT,MAAM,EAAE,CAAC,CAAC;IACpBmM,EAAE,CAACozT,MAAM,CAACv\u002FT,MAAM,EAAE,CAAC,CAAC;IACpBqM,EAAE,CAACkzT,MAAM,CAACv\u002FT,MAAM,EAAE,EAAE,CAAC;IACrBq+T,EAAE,CAACkB,MAAM,CAACv\u002FT,MAAM,EAAE,EAAE,CAAC;IACrB8\u002FT,EAAE,CAACP,MAAM,CAACv\u002FT,MAAM,EAAE,EAAE,CAAC;IACrB+\u002FT,EAAE,CAACR,MAAM,CAACv\u002FT,MAAM,EAAE,EAAE,CAAC;IACrBggU,EAAE,CAACT,MAAM,CAACv\u002FT,MAAM,EAAE,EAAE,CAAC;IACrBigU,EAAE,CAACV,MAAM,CAACv\u002FT,MAAM,EAAE,EAAE,CAAC;EACvB,CAAC,MAAM;IACLA,MAAM,GAAG,IAAI3U,UAAU,CAAC,EAAE,CAAC;IAC3B+yU,EAAE,CAACmB,MAAM,CAACv\u002FT,MAAM,EAAE,CAAC,CAAC;IACpBmM,EAAE,CAACozT,MAAM,CAACv\u002FT,MAAM,EAAE,CAAC,CAAC;IACpBqM,EAAE,CAACkzT,MAAM,CAACv\u002FT,MAAM,EAAE,EAAE,CAAC;IACrBq+T,EAAE,CAACkB,MAAM,CAACv\u002FT,MAAM,EAAE,EAAE,CAAC;IACrB8\u002FT,EAAE,CAACP,MAAM,CAACv\u002FT,MAAM,EAAE,EAAE,CAAC;IACrB+\u002FT,EAAE,CAACR,MAAM,CAACv\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\u002FB,IAAI,CAACA,YAAY,GAAGe,SAAS;EAC\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E,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CACvB,CAAC;EAEF01U,MAAM,GAAG,IAAI11U,UAAU,CAAC,CACtB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CACvB,CAAC;EAEF21U,IAAI,GAAG,IAAIn1U,WAAW,CAAC,CACrB,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EACtE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAA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\u002FR,QAAQA,CAAC\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\u002F1U,MAAM;MACXkU,MAAM,CAAC\u002FU,IAAI,CAAC62U,KAAK,CAAC;MAClBh2U,MAAM,GAAG,IAAIT,UAAU,CAAC,EAAE,CAAC;MAC3Bs5B,YAAY,GAAG,CAAC;IAClB;IAEA,IAAI,CAAC74B,MAAM,GAAGA,MAAM;IACpB,IAAI,CAAC64B,YAAY,GAAGA,YAAY;IAChC,IAAI,CAACk9S,EAAE,GAAGA,EAAE;IACZ,IAAI7hU,MAAM,CAACnY,MAAM,KAAK,CAAC,EAAE;MACvB,OAAO,IAAIwD,UAAU,CAAC,CAAC,CAAC;IAC1B;IAEA,IAAI6uN,YAAY,GAAG,EAAE,GAAGl6M,MAAM,CAACnY,MAAM;IACrC,IAAI85U,QAAQ,EAAE;MAEZ,MAAMK,SAAS,GAAGhiU,MAAM,CAACwiC,EAAE,CAAC,CAAC,CAAC,CAAC;MAC\u002FB,IAAIy\u002FR,KAAK,GAAGD,SAAS,CAAC,EAAE,CAAC;MACzB,IAAIC,KAAK,IAAI,EAAE,EAAE;QACf,KAAK,IAAIt3U,CAAC,GAAG,EAAE,EAAE+I,EAAE,GAAG,EAAE,GAAGuuU,KAAK,EAAEt3U,CAAC,IAAI+I,EAAE,EAAE,EAAE\u002FI,CAAC,EAAE;UAC9C,IAAIq3U,SAAS,CAACr3U,CAAC,CAAC,KAAKs3U,KAAK,EAAE;YAE1BA,KAAK,GAAG,CAAC;YACT;UACF;QACF;QACA\u002FnH,YAAY,IAAI+nH,KAAK;QACrBjiU,MAAM,CAACA,MAAM,CAACnY,MAAM,GAAG,CAAC,CAAC,GAAGm6U,SAAS,CAACh3U,QAAQ,CAAC,CAAC,EAAE,EAAE,GAAGi3U,KAAK,CAAC;MAC\u002FD;IACF;IACA,MAAM7yU,MAAM,GAAG,IAAI\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AE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EA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\u002FsQ,GAAG,CAAC,OAAO,CAAC;QAC\u002FB,IAAI4lC,KAAK,YAAYpiC,IAAI,EAAE;UACzB,IAAI,CAACupQ,IAAI,GAAGA,IAAI;UAChB;QACF;MACF,CAAC,CAAC,OAAO3uQ,EAAE,EAAE;QACX,IAAIA,EAAE,YAAYoL,oBAAoB,EAAE;UACtC,MAAMpL,EAAE;QACV;QACA3M,IAAI,CAAC,4CAA4C2M,EAAE,IAAI,CAAC;MAC1D;IACF;IAEA,IAAI,CAAC41D,YAAY,EAAE;MACjB,MAAM,IAAIrqD,kBAAkB,CAAC,CAAC;IAChC;IAEA,MAAM,IAAInV,mBAAmB,CAAC,yBAAyB,CAAC;EAC1D;EAEAg+U,gBAAgBA,CAACt4Q,MAAM,EAAE;IACvB,IAAI,EAAE,YAAY,IAAI,IAAI,CAAC,EAAE;MAG3B,IAAI,CAACu4Q,UAAU,GAAG;QAChBC,QAAQ,EAAE,CAAC;QACXC,SAAS,EAAEz4Q,MAAM,CAACpG,KAAK,CAAC1uC,MAAM,CAACnsB,GAAG;QAClC25U,UAAU,EAAE14Q,MAAM,CAAC9F,IAAI;QACvBy+Q,UAAU,EAAE34Q,MAAM,CAAC5F;MACrB,CAAC;IACH;IAEA,MAAMjhE,GAAG,GAAG,IAAI,CAACy\u002FU,aAAa,CAAC54Q,MAAM,CAAC;IAGtC,IAAI,CAACnzD,KAAK,CAAC1T,GAAG,EAAE,SAAS,CAAC,EAAE;MAC1B,MAAM,IAAIuB,WAAW,CACnB,uDACF,CAAC;IACH;IAUA,IAAI4Q,IAAI,GAAG00D,MAAM,CAAC7F,MAAM,CAAC,CAAC;IAG1B,IAAI,EAAE7uD,IAAI,YAAYhC,IAAI,CAAC,IAAIgC,IAAI,CAACA,IAAI,EAAE;MACxCA,IAAI,GAAGA,IAAI,CAACA,IAAI;IAClB;IACA,IAAI,EAAEA,IAAI,YAAYhC,IAAI,CAAC,EAAE;MAC3B,MAAM,IAAI5O,WAAW,CACnB,wDACF,CAAC;IACH;IACA,OAAO,IAAI,CAAC69U,UAAU;IAEtB,OAAOjtU,IAAI;EACb;EAEAstU,aAAaA,CAAC54Q,MAAM,EAAE;IAWpB,MAAM90C,MAAM,GAAG80C,MAAM,CAACpG,KAAK,CAAC1uC,MAAM;IAClC,MAAMqtT,UAAU,GAAG,IAAI,CAACA,UAAU;IAClCrtT,MAAM,CAACnsB,GAAG,GAAGw5U,UAAU,CAACE,SAAS;IACjCz4Q,MAAM,CAAC9F,IAAI,GAAGq+Q,UAAU,CAACG,UAAU;IACnC14Q,MAAM,CAAC5F,IAAI,GAAGm+Q,UAAU,CAACI,UAAU;IAGnC,IAAIx\u002FU,GAAG;IAEP,OAAO,IAAI,EAAE;MACX,IAAI,EAAE,eAAe,IAAIo\u002FU,UAAU,CAAC,IAAI,EAAE,YAAY,IAAIA,UAAU,CAAC,EAAE;QACrE,IAAI1rU,KAAK,CAAE1T,GAAG,GAAG6mE,MAAM,CAAC7F,MAAM,CAAC,CAAC,EAAG,SAAS,CAAC,EAAE;UAC7C;QACF;QACAo+Q,UAAU,CAACM,aAAa,GAAG1\u002FU,GAAG;QAC9Bo\u002FU,UAAU,CAACjoG,UAAU,GAAGtwK,MAAM,CAAC7F,MAAM,CAAC,CAAC;MACzC;MAEA,IAAI\u002F4D,KAAK,GAAGm3U,UAAU,CAACM,aAAa;MACpC,MAAMp6T,KAAK,GAAG85T,UAAU,CAACjoG,UAAU;MACnC,IAAI,CAACt5O,MAAM,CAACC,SAAS,CAACmK,KAAK,CAAC,IAAI,CAACpK,MAAM,CAACC,SAAS,CAACwnB,KAAK,CAAC,EAAE;QACxD,MAAM,IAAI\u002FjB,WAAW,CACnB,sDACF,CAAC;MACH;MAEA,KAAK,IAAIU,CAAC,GAAGm9U,UAAU,CAACC,QAAQ,EAAEp9U,CAAC,GAAGqjB,KAAK,EAAErjB,CAAC,EAAE,EAAE;QAChDm9U,UAAU,CAACE,SAAS,GAAGvtT,MAAM,CAACnsB,GAAG;QACjCw5U,UAAU,CAACC,QAAQ,GAAGp9U,CAAC;QACvBm9U,UAAU,CAACG,UAAU,GAAG14Q,MAAM,CAAC9F,IAAI;QACnCq+Q,UAAU,CAACI,UAAU,GAAG34Q,MAAM,CAAC5F,IAAI;QAEnC,MAAMpnD,KAAK,GAAG,CAAC,CAAC;QAChBA,KAAK,CAAC5B,MAAM,GAAG4uD,MAAM,CAAC7F,MAAM,CAAC,CAAC;QAC9BnnD,KAAK,CAACpH,GAAG,GAAGo0D,MAAM,CAAC7F,MAAM,CAAC,CAAC;QAC3B,MAAM9yE,IAAI,GAAG24E,MAAM,CAAC7F,MAAM,CAAC,CAAC;QAE5B,IAAI9yE,IAAI,YAAY8hB,GAAG,EAAE;UACvB,QAAQ9hB,IAAI,CAAC+hB,GAAG;YACd,KAAK,GAAG;cACN4J,KAAK,CAAC8lU,IAAI,GAAG,IAAI;cACjB;YACF,KAAK,GAAG;cACN9lU,KAAK,CAAC+lU,YAAY,GAAG,IAAI;cACzB;UACJ;QACF;QAGA,IACE,CAAC\u002FhV,MAAM,CAACC,SAAS,CAAC+b,KAAK,CAAC5B,MAAM,CAAC,IAC\u002FB,CAACpa,MAAM,CAACC,SAAS,CAAC+b,KAAK,CAACpH,GAAG,CAAC,IAC5B,EAAEoH,KAAK,CAAC8lU,IAAI,IAAI9lU,KAAK,CAAC+lU,YAAY,CAAC,EACnC;UACA,MAAM,IAAIr+U,WAAW,CACnB,qCAAqC0G,KAAK,KAAKqd,KAAK,EACtD,CAAC;QACH;QAIA,IAAIrjB,CAAC,KAAK,CAAC,IAAI4X,KAAK,CAAC8lU,IAAI,IAAI13U,KAAK,KAAK,CAAC,EAAE;UACxCA,KAAK,GAAG,CAAC;QACX;QAEA,IAAI,CAAC,IAAI,CAACoiN,OAAO,CAACpoN,CAAC,GAAGgG,KAAK,CAAC,EAAE;UAC5B,IAAI,CAACoiN,OAAO,CAACpoN,CAAC,GAAGgG,KAAK,CAAC,GAAG4R,KAAK;QACjC;MACF;MAEAulU,UAAU,CAACC,QAAQ,GAAG,CAAC;MACvBD,UAAU,CAACE,SAAS,GAAGvtT,MAAM,CAACnsB,GAAG;MACjCw5U,UAAU,CAACG,UAAU,GAAG14Q,MAAM,CAAC9F,IAAI;MACnCq+Q,UAAU,CAACI,UAAU,GAAG34Q,MAAM,CAAC5F,IAAI;MACnC,OAAOm+Q,UAAU,CAACM,aAAa;MAC\u002FB,OAAON,UAAU,CAACjoG,UAAU;IAC9B;IAGA,IAAI,IAAI,CAAC9sB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAACA,OAAO,CAAC,CAAC,CAAC,CAACs1H,IAAI,EAAE;MAC5C,MAAM,IAAIp+U,WAAW,CAAC,6CAA6C,CAAC;IACtE;IACA,OAAOvB,GAAG;EACZ;EAEA6\u002FU,iBAAiBA,CAAC9tT,MAAM,EAAE;IACxB,IAAI,EAAE,aAAa,IAAI,IAAI,CAAC,EAAE;MAG5B,MAAM;QAAE5f,IAAI;QAAEvM;MAAI,CAAC,GAAGmsB,MAAM;MAC5B,MAAM+tT,UAAU,GAAG3tU,IAAI,CAACxF,GAAG,CAAC,GAAG,CAAC;MAChC,MAAMghB,KAAK,GAAGxb,IAAI,CAACxF,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAEwF,IAAI,CAACxF,GAAG,CAAC,MAAM,CAAC,CAAC;MAExD,IAAI,CAACozU,WAAW,GAAG;QACjBC,WAAW,EAAEryT,KAAK;QAClBmyT,UAAU;QACVT,QAAQ,EAAE,CAAC;QACXC,SAAS,EAAE15U;MACb,CAAC;IACH;IACA,IAAI,CAACq6U,cAAc,CAACluT,MAAM,CAAC;IAC3B,OAAO,IAAI,CAACguT,WAAW;IAEvB,OAAOhuT,MAAM,CAAC5f,IAAI;EACpB;EAEA8tU,cAAcA,CAACluT,MAAM,EAAE;IACrB,MAAMguT,WAAW,GAAG,IAAI,CAACA,WAAW;IACpChuT,MAAM,CAACnsB,GAAG,GAAGm6U,WAAW,CAACT,SAAS;IAElC,MAAM,CAACY,cAAc,EAAEC,gBAAgB,EAAEC,oBAAoB,CAAC,GAC5DL,WAAW,CAACD,UAAU;IAExB,MAAME,WAAW,GAAGD,WAAW,CAACC,WAAW;IAC3C,OAAOA,WAAW,CAAC7gV,MAAM,GAAG,CAAC,EAAE;MAC7B,MAAM,CAAC8I,KAAK,EAAErD,CAAC,CAAC,GAAGo7U,WAAW;MAE9B,IAAI,CAACniV,MAAM,CAACC,SAAS,CAACmK,KAAK,CAAC,IAAI,CAACpK,MAAM,CAACC,SAAS,CAAC8G,CAAC,CAAC,EAAE;QACpD,MAAM,IAAIrD,WAAW,CAAC,8BAA8B0G,KAAK,KAAKrD,CAAC,EAAE,CAAC;MACpE;MACA,IACE,CAAC\u002FG,MAAM,CAACC,SAAS,CAACoiV,cAAc,CAAC,IACjC,CAACriV,MAAM,CAACC,SAAS,CAACqiV,gBAAgB,CAAC,IACnC,CAACtiV,MAAM,CAACC,SAAS,CAACsiV,oBAAoB,CAAC,EACvC;QACA,MAAM,IAAI7+U,WAAW,CACnB,qCAAqC0G,KAAK,KAAKrD,CAAC,EAClD,CAAC;MACH;MACA,KAAK,IAAI3C,CAAC,GAAG89U,WAAW,CAACV,QAAQ,EAAEp9U,CAAC,GAAG2C,CAAC,EAAE,EAAE3C,CAAC,EAAE;QAC7C89U,WAAW,CAACV,QAAQ,GAAGp9U,CAAC;QACxB89U,WAAW,CAACT,SAAS,GAAGvtT,MAAM,CAACnsB,GAAG;QAElC,IAAI1X,IAAI,GAAG,CAAC;UACV+pB,MAAM,GAAG,CAAC;UACVooU,UAAU,GAAG,CAAC;QAChB,KAAK,IAAI9hU,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG2hU,cAAc,EAAE,EAAE3hU,CAAC,EAAE;UACvC,MAAM+hU,QAAQ,GAAGvuT,MAAM,CAAC7d,OAAO,CAAC,CAAC;UACjC,IAAIosU,QAAQ,KAAK,CAAC,CAAC,EAAE;YACnB,MAAM,IAAI\u002F+U,WAAW,CAAC,iCAAiC,CAAC;UAC1D;UACArT,IAAI,GAAIA,IAAI,IAAI,CAAC,GAAIoyV,QAAQ;QAC\u002FB;QAEA,IAAIJ,cAAc,KAAK,CAAC,EAAE;UACxBhyV,IAAI,GAAG,CAAC;QACV;QACA,KAAK,IAAIqwB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG4hU,gBAAgB,EAAE,EAAE5hU,CAAC,EAAE;UACzC,MAAMgiU,UAAU,GAAGxuT,MAAM,CAAC7d,OAAO,CAAC,CAAC;UACnC,IAAIqsU,UAAU,KAAK,CAAC,CAAC,EAAE;YACrB,MAAM,IAAIh\u002FU,WAAW,CAAC,mCAAmC,CAAC;UAC5D;UACA0W,MAAM,GAAIA,MAAM,IAAI,CAAC,GAAIsoU,UAAU;QACrC;QACA,KAAK,IAAIhiU,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6hU,oBAAoB,EAAE,EAAE7hU,CAAC,EAAE;UAC7C,MAAMiiU,cAAc,GAAGzuT,MAAM,CAAC7d,OAAO,CAAC,CAAC;UACvC,IAAIssU,cAAc,KAAK,CAAC,CAAC,EAAE;YACzB,MAAM,IAAIj\u002FU,WAAW,CAAC,uCAAuC,CAAC;UAChE;UACA8+U,UAAU,GAAIA,UAAU,IAAI,CAAC,GAAIG,cAAc;QACjD;QACA,MAAM3mU,KAAK,GAAG,CAAC,CAAC;QAChBA,KAAK,CAAC5B,MAAM,GAAGA,MAAM;QACrB4B,KAAK,CAACpH,GAAG,GAAG4tU,UAAU;QACtB,QAAQnyV,IAAI;UACV,KAAK,CAAC;YACJ2rB,KAAK,CAAC8lU,IAAI,GAAG,IAAI;YACjB;UACF,KAAK,CAAC;YACJ9lU,KAAK,CAAC+lU,YAAY,GAAG,IAAI;YACzB;UACF,KAAK,CAAC;YACJ;UACF;YACE,MAAM,IAAIr+U,WAAW,CAAC,4BAA4BrT,IAAI,EAAE,CAAC;QAC7D;QACA,IAAI,CAAC,IAAI,CAACm8N,OAAO,CAACpiN,KAAK,GAAGhG,CAAC,CAAC,EAAE;UAC5B,IAAI,CAACooN,OAAO,CAACpiN,KAAK,GAAGhG,CAAC,CAAC,GAAG4X,KAAK;QACjC;MACF;MAEAkmU,WAAW,CAACV,QAAQ,GAAG,CAAC;MACxBU,WAAW,CAACT,SAAS,GAAGvtT,MAAM,CAACnsB,GAAG;MAClCo6U,WAAW,CAACzmT,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1B;EACF;EAEA2lT,YAAYA,CAAA,EAAG;IAGb,MAAMuB,GAAG,GAAG,GAAG;MACb\u002F+Q,EAAE,GAAG,GAAG;MACRC,EAAE,GAAG,GAAG;MACRF,KAAK,GAAG,IAAI;IACd,MAAMi\u002FQ,OAAO,GAAG,IAAI;MAClBC,EAAE,GAAG,IAAI;IAEX,SAASC,SAASA,CAAClqU,IAAI,EAAEuB,MAAM,EAAE;MAC\u002FB,IAAI6vN,KAAK,GAAG,EAAE;QACZxvN,EAAE,GAAG5B,IAAI,CAACuB,MAAM,CAAC;MACnB,OAAOK,EAAE,KAAKopD,EAAE,IAAIppD,EAAE,KAAKqpD,EAAE,IAAIrpD,EAAE,KAAKqoU,EAAE,EAAE;QAC1C,IAAI,EAAE1oU,MAAM,IAAIvB,IAAI,CAACvX,MAAM,EAAE;UAC3B;QACF;QACA2oO,KAAK,IAAIjmO,MAAM,CAACC,YAAY,CAACwW,EAAE,CAAC;QAChCA,EAAE,GAAG5B,IAAI,CAACuB,MAAM,CAAC;MACnB;MACA,OAAO6vN,KAAK;IACd;IACA,SAAS+4G,SAASA,CAACnqU,IAAI,EAAEuB,MAAM,EAAEk3B,IAAI,EAAE;MACrC,MAAMhwC,MAAM,GAAGgwC,IAAI,CAAChwC,MAAM;QACxBqX,UAAU,GAAGE,IAAI,CAACvX,MAAM;MAC1B,IAAI2hV,OAAO,GAAG,CAAC;MAEf,OAAO7oU,MAAM,GAAGzB,UAAU,EAAE;QAC1B,IAAIvU,CAAC,GAAG,CAAC;QACT,OAAOA,CAAC,GAAG9C,MAAM,IAAIuX,IAAI,CAACuB,MAAM,GAAGhW,CAAC,CAAC,KAAKktC,IAAI,CAACltC,CAAC,CAAC,EAAE;UACjD,EAAEA,CAAC;QACL;QACA,IAAIA,CAAC,IAAI9C,MAAM,EAAE;UACf;QACF;QACA8Y,MAAM,EAAE;QACR6oU,OAAO,EAAE;MACX;MACA,OAAOA,OAAO;IAChB;IACA,MAAMC,aAAa,GAAG,iDAAiD;IACvE,MAAMC,gBAAgB,GAAG,kCAAkC;IAC3D,MAAMC,SAAS,GAAG,wBAAwB;IAE1C,MAAMC,YAAY,GAAG,IAAIv+U,UAAU,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACvE,MAAMw+U,cAAc,GAAG,IAAIx+U,UAAU,CAAC,CACpC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAC3C,CAAC;IACF,MAAMy+U,SAAS,GAAG,IAAIz+U,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAGxD,IAAI,CAAC0nN,OAAO,CAAClrN,MAAM,GAAG,CAAC;IACvB,IAAI,CAACo\u002FU,SAAS,CAACjsU,KAAK,CAAC,CAAC;IAEtB,MAAMyf,MAAM,GAAG,IAAI,CAACA,MAAM;IAC1BA,MAAM,CAACnsB,GAAG,GAAG,CAAC;IACd,MAAMxC,MAAM,GAAG2uB,MAAM,CAAC5d,QAAQ,CAAC,CAAC;MAC9BktU,SAAS,GAAG5\u002FU,aAAa,CAAC2B,MAAM,CAAC;MACjCjE,MAAM,GAAGiE,MAAM,CAACjE,MAAM;IACxB,IAAIiyB,QAAQ,GAAGW,MAAM,CAACvc,KAAK;IAC3B,MAAM8rU,QAAQ,GAAG,EAAE;MACjBC,QAAQ,GAAG,EAAE;IACf,OAAOnwT,QAAQ,GAAGjyB,MAAM,EAAE;MACxB,IAAImZ,EAAE,GAAGlV,MAAM,CAACguB,QAAQ,CAAC;MACzB,IAAI9Y,EAAE,KAAKmoU,GAAG,IAAInoU,EAAE,KAAKopD,EAAE,IAAIppD,EAAE,KAAKqpD,EAAE,IAAIrpD,EAAE,KAAKmpD,KAAK,EAAE;QACxD,EAAErwC,QAAQ;QACV;MACF;MACA,IAAI9Y,EAAE,KAAKooU,OAAO,EAAE;QAElB,GAAG;UACD,EAAEtvT,QAAQ;UACV,IAAIA,QAAQ,IAAIjyB,MAAM,EAAE;YACtB;UACF;UACAmZ,EAAE,GAAGlV,MAAM,CAACguB,QAAQ,CAAC;QACvB,CAAC,QAAQ9Y,EAAE,KAAKopD,EAAE,IAAIppD,EAAE,KAAKqpD,EAAE;QAC\u002FB;MACF;MACA,MAAMmmK,KAAK,GAAG84G,SAAS,CAACx9U,MAAM,EAAEguB,QAAQ,CAAC;MACzC,IAAIzrB,CAAC;MACL,IACEmiO,KAAK,CAAC9oO,UAAU,CAAC,MAAM,CAAC,KACvB8oO,KAAK,CAAC3oO,MAAM,KAAK,CAAC,IAAI,IAAI,CAACkc,IAAI,CAACysN,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAC3C;QACA12M,QAAQ,IAAIyvT,SAAS,CAACz9U,MAAM,EAAEguB,QAAQ,EAAE8vT,YAAY,CAAC;QACrDI,QAAQ,CAAC\u002F+U,IAAI,CAAC6uB,QAAQ,CAAC;QACvBA,QAAQ,IAAIyvT,SAAS,CAACz9U,MAAM,EAAEguB,QAAQ,EAAE+vT,cAAc,CAAC;MACzD,CAAC,MAAM,IAAKx7U,CAAC,GAAGs7U,SAAS,CAACruU,IAAI,CAACk1N,KAAK,CAAC,EAAG;QACtC,MAAM55N,GAAG,GAAGvI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;UAClB8M,GAAG,GAAG9M,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAEhB,MAAMw\u002FB,QAAQ,GAAG\u002FT,QAAQ,GAAG02M,KAAK,CAAC3oO,MAAM;QACxC,IAAIqiV,aAAa;UACfC,aAAa,GAAG,KAAK;QACvB,IAAI,CAAC,IAAI,CAACp3H,OAAO,CAACn8M,GAAG,CAAC,EAAE;UACtBuzU,aAAa,GAAG,IAAI;QACtB,CAAC,MAAM,IAAI,IAAI,CAACp3H,OAAO,CAACn8M,GAAG,CAAC,CAACuE,GAAG,KAAKA,GAAG,EAAE;UAGxC,IAAI;YACF,MAAMo0D,MAAM,GAAG,IAAIrG,MAAM,CAAC;cACxBC,KAAK,EAAE,IAAIwB,KAAK,CAAClwC,MAAM,CAACxc,aAAa,CAAC4vB,QAAQ,CAAC;YACjD,CAAC,CAAC;YACF0hC,MAAM,CAAC7F,MAAM,CAAC,CAAC;YACfygR,aAAa,GAAG,IAAI;UACtB,CAAC,CAAC,OAAO12U,EAAE,EAAE;YACX,IAAIA,EAAE,YAAYqL,kBAAkB,EAAE;cACpChY,IAAI,CAAC,oCAAoC0pO,KAAK,OAAO\u002F8N,EAAE,IAAI,CAAC;YAC9D,CAAC,MAAM;cAGL02U,aAAa,GAAG,IAAI;YACtB;UACF;QACF;QACA,IAAIA,aAAa,EAAE;UACjB,IAAI,CAACp3H,OAAO,CAACn8M,GAAG,CAAC,GAAG;YAClB+J,MAAM,EAAEmZ,QAAQ,GAAGW,MAAM,CAACvc,KAAK;YAC\u002FB\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\u002FU,MAAM,EAAE;MACjC,IAAI;QACF,MAAM2\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\u002FhE,OAAO,CAAC\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\u002FlB,YAAY;MAC\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\u002F\u002FQ,QAAQ;IACnC,CAAC,MAAM;MACLj5D,GAAG,GAAG,IAAI,CAAC+4U,OAAO,CAAC9\u002FQ,QAAQ;IAC7B;IACA,OAAOpnE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAEmO,GAAG,CAAC;EACtC;EAEA,CAACo5U,yBAAyBC,CAACp8G,MAAM,EAAEq8G,cAAc,GAAG,CAAC,EAAE;IACrD,MAAMC,eAAe,GAAG,EAAE;IAE1B,IAAI,CAAC\u002FiV,KAAK,CAAC4I,OAAO,CAAC69N,MAAM,CAAC,EAAE;MAC1B,OAAO,KAAK;IACd;IACA,OAAOA,MAAM,CAAC1yN,KAAK,CAAC2yN,KAAK,IAAI;MAC3BA,KAAK,GAAG,IAAI,CAACh7N,IAAI,CAAC+tB,UAAU,CAACitM,KAAK,CAAC;MACnC,IAAI,EAAEA,KAAK,YAAYj7N,IAAI,CAAC,EAAE;QAC5B,OAAO,KAAK;MACd;MACA,IAAIi7N,KAAK,CAAC15N,GAAG,CAAC,MAAM,CAAC,EAAE;QACrB,IAAI,EAAE81U,cAAc,GAAGC,eAAe,EAAE;UACtCrpV,IAAI,CAAC,6DAA6D,CAAC;UACnE,OAAO,KAAK;QACd;QACA,OAAO,IAAI,CAAC,CAACkpV,yBAAyB,CACpCl8G,KAAK,CAACz+N,GAAG,CAAC,MAAM,CAAC,EACjB66U,cACF,CAAC;MACH;MACA,MAAMlS,WAAW,GAAG7hU,MAAM,CAAC23N,KAAK,CAACz+N,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;MAClD,MAAM9T,SAAS,GAAGuyO,KAAK,CAACz+N,GAAG,CAAC,MAAM,CAAC;MACnC,MAAM+6U,WAAW,GACfhjV,KAAK,CAAC4I,OAAO,CAACzU,SAAS,CAAC,IAAIA,SAAS,CAAC4f,KAAK,CAACvY,KAAK,IAAIA,KAAK,KAAK,CAAC,CAAC;MACnE,OAAOo1U,WAAW,IAAIoS,WAAW;IACnC,CAAC,CAAC;EACJ;EAEA,IAAIC,WAAWA,CAAA,EAAG;IAChB,MAAM;MAAExgE;IAAS,CAAC,GAAG,IAAI,CAAC8\u002FD,OAAO;IACjC,IAAI,CAAC9\u002FD,QAAQ,EAAE;MACb,OAAO,IAAI;IACb;IAEA,MAAMqZ,GAAG,GAAGrZ,QAAQ,CAACx6Q,GAAG,CAAC,KAAK,CAAC;IAC\u002FB,MAAM09M,OAAO,GAAG,IAAI99M,GAAG,CACrB,CACE,SAAS,EACT,UAAU,EACV,UAAU,EACV,QAAQ,EACR,eAAe,EACf,WAAW,EACX,YAAY,EACZ,UAAU,CACX,CAAC+M,GAAG,CAACqI,CAAC,IAAI,CAACA,CAAC,EAAE,IAAI,CAAC,CACtB,CAAC;IACD,IAAI6+Q,GAAG,YAAYzsR,UAAU,IAAI,CAACysR,GAAG,CAACxsR,OAAO,EAAE;MAC7Cq2M,OAAO,CAAC54M,GAAG,CAAC,SAAS,EAAE+uR,GAAG,CAAC;MAC3B,OAAOn2E,OAAO;IAChB;IAEA,IAAI,CAAC3lN,KAAK,CAAC4I,OAAO,CAACkzR,GAAG,CAAC,IAAIA,GAAG,CAACrhS,MAAM,KAAK,CAAC,EAAE;MAC3C,OAAO,IAAI;IACb;IAEA,KAAK,IAAI8C,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAGw1R,GAAG,CAACrhS,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,IAAI,CAAC,EAAE;MAC\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\u002FS,OAAO,CAAC1\u002FS,OAAO,IAAI,IAAI,CAAC,CAACA,OAAO;EAC9C;EAEA,IAAIsgT,QAAQA,CAAA,EAAG;IACb,MAAMA,QAAQ,GAAG;MACfY,SAAS,EAAE,KAAK;MAChBV,WAAW,EAAE,KAAK;MAClBD,MAAM,EAAE,KAAK;MACbY,aAAa,EAAE;IACjB,CAAC;IACD,MAAM;MAAEvhE;IAAS,CAAC,GAAG,IAAI,CAAC8\u002FD,OAAO;IACjC,IAAI,CAAC9\u002FD,QAAQ,EAAE;MACb,OAAOpnR,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE8nV,QAAQ,CAAC;IAC3C;IAEA,IAAI;MACF,MAAM18G,MAAM,GAAGg8C,QAAQ,CAACx6Q,GAAG,CAAC,QAAQ,CAAC;MACrC,MAAM87U,SAAS,GAAG\u002FjV,KAAK,CAAC4I,OAAO,CAAC69N,MAAM,CAAC,IAAIA,MAAM,CAAChsO,MAAM,GAAG,CAAC;MAC5D0oV,QAAQ,CAACY,SAAS,GAAGA,SAAS;MAI9B,MAAMjoD,GAAG,GAAGrZ,QAAQ,CAACx6Q,GAAG,CAAC,KAAK,CAAC;MAC\u002FBk7U,QAAQ,CAACC,MAAM,GACZpjV,KAAK,CAAC4I,OAAO,CAACkzR,GAAG,CAAC,IAAIA,GAAG,CAACrhS,MAAM,GAAG,CAAC,IACpCqhS,GAAG,YAAYzsR,UAAU,IAAI,CAACysR,GAAG,CAACxsR,OAAQ;MAS7C,MAAM20U,QAAQ,GAAGxhE,QAAQ,CAACx6Q,GAAG,CAAC,UAAU,CAAC;MACzC,MAAM+7U,aAAa,GAAG,CAAC,EAAEC,QAAQ,GAAG,GAAG,CAAC;MACxC,MAAMrB,yBAAyB,GAC7BoB,aAAa,IAAI,IAAI,CAAC,CAACpB,yBAAyB,CAACn8G,MAAM,CAAC;MAC1D08G,QAAQ,CAACE,WAAW,GAAGU,SAAS,IAAI,CAACnB,yBAAyB;MAC9DO,QAAQ,CAACa,aAAa,GAAGA,aAAa;IACxC,CAAC,CAAC,OAAO39U,EAAE,EAAE;MACX,IAAIA,EAAE,YAAYoL,oBAAoB,EAAE;QACtC,MAAMpL,EAAE;MACV;MACA3M,IAAI,CAAC,mCAAmC2M,EAAE,IAAI,CAAC;IACjD;IACA,OAAOhL,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE8nV,QAAQ,CAAC;EAC3C;EAEA,IAAIe,YAAYA,CAAA,EAAG;IACjB,MAAM;MAAE3B,OAAO;MAAEY,QAAQ;MAAEz3U;IAAK,CAAC,GAAG,IAAI;IAExC,MAAMy4U,OAAO,GAAG;MACdC,gBAAgB,EAAE,IAAI,CAACvhT,OAAO;MAC9BwhT,QAAQ,EAAE9B,OAAO,CAAC9zS,IAAI;MACtB61S,iBAAiB,EAAE54U,IAAI,CAACm3Q,OAAO,EAAElkN,UAAU,IAAI,IAAI;MACnD4lR,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC\u002FB,aAAa;MAClCgC,iBAAiB,EAAErB,QAAQ,CAACE,WAAW;MACvCoB,YAAY,EAAEtB,QAAQ,CAACC,MAAM;MAC7BsB,mBAAmB,EAAE,CAAC,CAACnC,OAAO,CAAC\u002F\u002FD,UAAU;MACzCmiE,mBAAmB,EAAExB,QAAQ,CAACa;IAChC,CAAC;IAED,IAAIY,QAAQ;IACZ,IAAI;MACFA,QAAQ,GAAGl5U,IAAI,CAACm5Q,OAAO,CAAC58Q,GAAG,CAAC,MAAM,CAAC;IACrC,CAAC,CAAC,OAAOuoB,GAAG,EAAE;MACZ,IAAIA,GAAG,YAAY\u002Fe,oBAAoB,EAAE;QACvC,MAAM+e,GAAG;MACX;MACAl3B,IAAI,CAAC,iDAAiD,CAAC;IACzD;IACA,IAAI,EAAEsrV,QAAQ,YAAYn5U,IAAI,CAAC,EAAE;MAC\u002FB,OAAOpQ,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE8oV,OAAO,CAAC;IAC9C;IAEA,KAAK,MAAM,CAACx3U,GAAG,EAAEnR,KAAK,CAAC,IAAIopV,QAAQ,EAAE;MACnC,QAAQj4U,GAAG;QACT,KAAK,OAAO;QACZ,KAAK,QAAQ;QACb,KAAK,SAAS;QACd,KAAK,UAAU;QACf,KAAK,SAAS;QACd,KAAK,UAAU;QACf,KAAK,cAAc;QACnB,KAAK,SAAS;UACZ,IAAI,OAAOnR,KAAK,KAAK,QAAQ,EAAE;YAC7B2oV,OAAO,CAACx3U,GAAG,CAAC,GAAG\u002FG,iBAAiB,CAACpK,KAAK,CAAC;YACvC;UACF;UACA;QACF,KAAK,SAAS;UACZ,IAAIA,KAAK,YAAY6P,IAAI,EAAE;YACzB84U,OAAO,CAACx3U,GAAG,CAAC,GAAGnR,KAAK;YACpB;UACF;UACA;QACF;UAIE,IAAIqpV,WAAW;UACf,QAAQ,OAAOrpV,KAAK;YAClB,KAAK,QAAQ;cACXqpV,WAAW,GAAGj\u002FU,iBAAiB,CAACpK,KAAK,CAAC;cACtC;YACF,KAAK,QAAQ;YACb,KAAK,SAAS;cACZqpV,WAAW,GAAGrpV,KAAK;cACnB;YACF;cACE,IAAIA,KAAK,YAAY6P,IAAI,EAAE;gBACzBw5U,WAAW,GAAGrpV,KAAK;cACrB;cACA;UACJ;UAEA,IAAIqpV,WAAW,KAAK5nV,SAAS,EAAE;YAC7BvD,IAAI,CAAC,8BAA8BiT,GAAG,eAAenR,KAAK,GAAG,CAAC;YAC9D;UACF;UACA2oV,OAAO,CAACW,MAAM,KAAKppV,MAAM,CAACuP,MAAM,CAAC,IAAI,CAAC;UACtCk5U,OAAO,CAACW,MAAM,CAACn4U,GAAG,CAAC,GAAGk4U,WAAW;UACjC;MACJ;MACAnrV,IAAI,CAAC,uBAAuBiT,GAAG,eAAenR,KAAK,GAAG,CAAC;IACzD;IACA,OAAOH,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE8oV,OAAO,CAAC;EAC9C;EAEA,IAAIY,YAAYA,CAAA,EAAG;IACjB,MAAMC,uBAAuB,GAAG,IAAI;IACpC,MAAMC,iBAAiB,GAAG,MAAM,CAAC\u002FxU,MAAM,CAAC,EAAE,CAAC;IAE3C,SAAS6+Q,QAAQA,CAAC\u002F\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\u002FC,CAAC,MAAM,IAAIs1U,aAAa,EAAE7\u002FQ,SAAS,KAAKtqD,SAAS,EAAE;MACjD2W,OAAO,GAAG,IAAI,CAAC,CAACo2T,oBAAoB,CAAC\u002FsU,SAAS,CAAC;IACjD,CAAC,MAAM;MACL2W,OAAO,GAAGuzT,OAAO,CAACh5D,WAAW,CAAClxQ,SAAS,CAAC;IAC1C;IACA2W,OAAO,GAAGA,OAAO,CAACJ,IAAI,CACpB,CAAC,CAACsvP,QAAQ,EAAEjwQ,GAAG,CAAC,KACd,IAAIiwU,IAAI,CAAC;MACPlhE,UAAU,EAAE,IAAI,CAACA,UAAU;MAC3BtxQ,IAAI,EAAE,IAAI,CAACA,IAAI;MACf2M,SAAS;MACT6lQ,QAAQ;MACRjwQ,GAAG;MACHmwU,eAAe,EAAE,IAAI,CAACiE,gBAAgB;MACtCxoF,SAAS,EAAE0oF,OAAO,CAAC1oF,SAAS;MAC5BC,gBAAgB,EAAEyoF,OAAO,CAACzoF,gBAAgB;MAC1CC,qBAAqB,EAAEwoF,OAAO,CAACxoF,qBAAqB;MACpDlhO,qBAAqB,EAAE0pT,OAAO,CAAC1pT,qBAAqB;MACpDmhO,gBAAgB,EAAEuoF,OAAO,CAACvoF,gBAAgB;MAC1CzG,eAAe,EAAEgvF,OAAO,CAAChvF,eAAe;MACxCkH,gBAAgB,EAAE8nF,OAAO,CAAC9nF,gBAAgB;MAC1C4jF;IACF,CAAC,CACL,CAAC;IAED,IAAI,CAAC,CAAC+D,YAAY,CAACr1U,GAAG,CAACsL,SAAS,EAAE2W,OAAO,CAAC;IAC1C,OAAOA,OAAO;EAChB;EAEA,MAAMu2T,cAAcA,CAACtpR,YAAY,GAAG,KAAK,EAAE;IACzC,IAAIA,YAAY,EAAE;MAChB;IACF;IACA,IAAI;MACF,MAAM,IAAI,CAACkhN,OAAO,CAAC,CAAC,CAAC;IACvB,CAAC,CAAC,OAAOxyQ,MAAM,EAAE;MACf,IAAIA,MAAM,YAAYgH,kBAAkB,EAAE;QAIxC,IAAI,CAAC,CAACywU,YAAY,CAACt0U,MAAM,CAAC,CAAC,CAAC;QAC5B,MAAM,IAAI,CAACsmC,OAAO,CAAC,CAAC;QAEpB,MAAM,IAAIxiC,kBAAkB,CAAC,CAAC;MAChC;IACF;EACF;EAEA,MAAM4zU,aAAaA,CAACvpR,YAAY,GAAG,KAAK,EAAE;IACxC,MAAM;MAAEsmR,OAAO;MAAEvlE;IAAW,CAAC,GAAG,IAAI;IAEpCulE,OAAO,CAACv7D,iBAAiB,CAAC,CAAC;IAC3B,IAAIvkN,QAAQ;IAEZ,IAAI;MACF,MAAM50C,OAAO,CAAC+0O,GAAG,CAAC,CAChBoa,UAAU,CAACs+C,SAAS,CAAC,YAAY,CAAC,EAClCt+C,UAAU,CAACs+C,SAAS,CAAC,eAAe,CAAC,EACrCt+C,UAAU,CAACQ,aAAa,CAAC,UAAU,CAAC,CACrC,CAAC;MAEF,IAAI,IAAI,CAAC6gE,UAAU,EAAE;QACnB;MACF,CAAC,MAAM,IAAI,IAAI,CAACmE,aAAa,EAAE;QAC7B\u002F\u002FQ,QAAQ,GAAG,IAAI,CAAC+\u002FQ,aAAa,CAAC\u002F\u002FQ,QAAQ;MACxC,CAAC,MAAM;QACLA,QAAQ,GAAG8\u002FQ,OAAO,CAAC9\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\u002FB,MAAM6zT,YAAY,GAAG,IAAI\u002FsT,WAAW,CAAC,CAAC;MACtC,KAAK,MAAMm3U,QAAQ,IAAIrjE,QAAQ,CAACx6Q,GAAG,CAAC,QAAQ,CAAC,EAAE;QAC7C,MAAM,IAAI,CAAC,CAAC29U,mBAAmB,CAC7B,EAAE,EACF,IAAI,EACJE,QAAQ,EACRI,aAAa,EACb1qB,iBAAiB,EACjBuqB,WAAW,EACXrqB,YACF,CAAC;MACH;MAEA,MAAMyqB,WAAW,GAAG,EAAE;MACtB,KAAK,MAAM,CAACjqV,IAAI,EAAEg4C,QAAQ,CAAC,IAAIgyS,aAAa,EAAE;QAC5CC,WAAW,CAACtoV,IAAI,CACdgwB,OAAO,CAAC+0O,GAAG,CAAC1uN,QAAQ,CAAC,CAACtlB,IAAI,CAAC63M,MAAM,IAAI;UACnCA,MAAM,GAAGA,MAAM,CAACvuM,MAAM,CAACwuM,KAAK,IAAI,CAAC,CAACA,KAAK,CAAC;UACxC,IAAID,MAAM,CAAChsO,MAAM,GAAG,CAAC,EAAE;YACrBwrV,SAAS,CAAC\u002FpV,IAAI,CAAC,GAAGuqO,MAAM;UAC1B;QACF,CAAC,CACH,CAAC;MACH;MACA,MAAM54M,OAAO,CAAC+0O,GAAG,CAACujF,WAAW,CAAC;MAE9B,OAAO;QACLF,SAAS,EAAE7nV,UAAU,CAAC6nV,SAAS,CAAC,GAAG,CAAC,GAAGA,SAAS,GAAG,IAAI;QACvDvqB;MACF,CAAC;IACH,CAAC,CAAC;IAEJ,OAAOrgU,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE2zB,OAAO,CAAC;EAC9C;EAEA,IAAIo3T,YAAYA,CAAA,EAAG;IACjB,MAAMp3T,OAAO,GAAG,IAAI,CAACguP,UAAU,CAACs+C,SAAS,CAAC,oBAAoB,CAAC;IAC\u002FD,OAAOjgU,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE2zB,OAAO,CAAC;EAC9C;EAKA,MAAMq3T,kBAAkBA,CAAA,EAAG;IACzB,MAAM,CAACC,gBAAgB,EAAE7E,YAAY,CAAC,GAAG,MAAM5zT,OAAO,CAAC+0O,GAAG,CAAC,CACzD,IAAI,CAACoa,UAAU,CAACQ,aAAa,CAAC,WAAW,CAAC,EAC1C,IAAI,CAACR,UAAU,CAACs+C,SAAS,CAAC,cAAc,CAAC,CAC1C,CAAC;IAEF,IAAIgrB,gBAAgB,EAAE;MACpB,OAAO,IAAI;IACb;IACA,IAAI7E,YAAY,EAAEwE,SAAS,EAAE;MAC3B,OAAOvqV,MAAM,CAACoR,MAAM,CAAC20U,YAAY,CAACwE,SAAS,CAAC,CAACttD,IAAI,CAAC4tD,WAAW,IAC3DA,WAAW,CAAC5tD,IAAI,CAACn3B,MAAM,IAAIA,MAAM,CAAC9rP,OAAO,KAAK,IAAI,CACpD,CAAC;IACH;IACA,OAAO,KAAK;EACd;EAEA,IAAI8wU,mBAAmBA,CAAA,EAAG;IACxB,MAAMC,gBAAgB,GAAG,IAAI,CAAClE,OAAO,CAAC9\u002FD,QAAQ,EAAEx6Q,GAAG,CAAC,IAAI,CAAC;IACzD,IAAI,CAACjI,KAAK,CAAC4I,OAAO,CAAC69U,gBAAgB,CAAC,IAAIA,gBAAgB,CAAChsV,MAAM,KAAK,CAAC,EAAE;MACrE,OAAOY,MAAM,CAAC,IAAI,EAAE,qBAAqB,EAAE,IAAI,CAAC;IAClD;IAEA,MAAMu7N,GAAG,GAAG,EAAE;IACd,KAAK,MAAMtsL,EAAE,IAAIm8S,gBAAgB,EAAE;MACjC,IAAIn8S,EAAE,YAAYj+B,GAAG,EAAE;QACrBuqN,GAAG,CAAC\u002F4N,IAAI,CAACysC,EAAE,CAACnqC,QAAQ,CAAC,CAAC,CAAC;MACzB;IACF;IACA,OAAO9E,MAAM,CAAC,IAAI,EAAE,qBAAqB,EAAEu7N,GAAG,CAACn8N,MAAM,GAAGm8N,GAAG,GAAG,IAAI,CAAC;EACrE;EAEA,IAAI4kG,iBAAiBA,CAAA,EAAG;IACtB,OAAOngU,MAAM,CACX,IAAI,EACJ,mBAAmB,EACnB+\u002FT,iBAAiB,CAACC,aAAa,CAAC,IAAI,CAACr+C,UAAU,CACjD,CAAC;EACH;AACF;;;AC72DoE;AAMzC;AACgC;AACT;AACJ;AACV;AACmB;AACL;AACN;AACP;AAErC,SAAS0pE,eAAeA,CAAC1sV,GAAG,EAAE;EAC5B,IAAIA,GAAG,EAAE;IACP,MAAMY,WAAW,GAAGV,sBAAsB,CAACF,GAAG,CAAC;IAC\u002FC,IAAIY,WAAW,EAAE;MACf,OAAOA,WAAW,CAACO,IAAI;IACzB;IACAzB,IAAI,CAAC,iCAAiCM,GAAG,IAAI,CAAC;EAChD;EACA,OAAO,IAAI;AACb;AAEA,MAAM2sV,cAAc,CAAC;EACnBvqV,WAAWA,CAAC;IAGV8nR,UAAU;IACVo+D,KAAK;IACLY,SAAS;IACT71G,gBAAgB;IAChBl6L,OAAO;IAEPyzR;EAEF,CAAC,EAAE;IAOD,IAAI,CAACggB,WAAW,GAAGF,eAAe,CAACxiE,UAAU,CAAC;IAC9C,IAAI,CAAC2iE,MAAM,GAAGvE,KAAK;IACnB,IAAI,CAACwE,SAAS,GAAGlgB,QAAQ;IACzB,IAAI,CAACsc,SAAS,GAAGA,SAAS;IAI1B71G,gBAAgB,CAACvuO,0BAA0B,KACzCD,WAAW,CAACC,0BAA0B;IACxCuuO,gBAAgB,CAACruO,uBAAuB,KACtCH,WAAW,CAACG,uBAAuB;IACrC,IAAI,CAACquO,gBAAgB,GAAG3xO,MAAM,CAACqgB,MAAM,CAACsxN,gBAAgB,CAAC;IAGvDn7M,YAAY,CAAChH,UAAU,CAACmiN,gBAAgB,CAAC;IACzC9mM,UAAU,CAACrb,UAAU,CAACmiN,gBAAgB,CAAC;IACvC3zL,YAAY,CAACxuB,UAAU,CAACmiN,gBAAgB,CAAC;IAEzC,MAAMjzO,OAAO,GAAG;MAAE,GAAGizO,gBAAgB;MAAEl6L;IAAQ,CAAC;IAChDD,QAAQ,CAAChoB,UAAU,CAAC9wB,OAAO,CAAC;IAC5BowB,aAAa,CAACU,UAAU,CAAC9wB,OAAO,CAAC;IACjCixB,cAAc,CAACH,UAAU,CAAC9wB,OAAO,CAAC;EACpC;EAEA,IAAIkoV,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAACuE,MAAM;EACpB;EAEA,IAAIjgB,QAAQA,CAAA,EAAG;IACb,OAAO,IAAI,CAACkgB,SAAS;EACvB;EAEA,IAAI5iE,UAAUA,CAAA,EAAG;IACf,OAAO,IAAI,CAAC0iE,WAAW;EACzB;EAEAtrB,SAASA,CAAC\u002F\u002FT,IAAI,EAAEwN,IAAI,EAAE;IACpB,OAAO,IAAI,CAAC6yT,MAAM,CAAC,IAAI,CAACmrB,WAAW,EAAExrV,IAAI,EAAEwN,IAAI,CAAC;EAClD;EAEAi+U,UAAUA,CAACzrV,IAAI,EAAEwN,IAAI,EAAE;IACrB,OAAO,IAAI,CAAC6yT,MAAM,CAAC,IAAI,CAACmrB,WAAW,CAACr7U,IAAI,EAAEnQ,IAAI,EAAEwN,IAAI,CAAC;EACvD;EAEAy0Q,aAAaA,CAACjiR,IAAI,EAAEwN,IAAI,EAAE;IACxB,OAAO,IAAI,CAAC6yT,MAAM,CAAC,IAAI,CAACmrB,WAAW,CAACxE,OAAO,EAAEhnV,IAAI,EAAEwN,IAAI,CAAC;EAC1D;EAEAo0Q,OAAOA,CAAC9kQ,SAAS,EAAE;IACjB,OAAO,IAAI,CAAC0uU,WAAW,CAAC5pE,OAAO,CAAC9kQ,SAAS,CAAC;EAC5C;EAEAstU,YAAYA,CAACr7S,EAAE,EAAE6I,OAAO,EAAE;IACxB,OAAO,IAAI,CAAC4zS,WAAW,CAACpB,YAAY,CAACr7S,EAAE,EAAE6I,OAAO,CAAC;EACnD;EAEAiB,OAAOA,CAACk1O,iBAAiB,GAAG,KAAK,EAAE;IACjC,OAAO,IAAI,CAACy9D,WAAW,CAAC3yS,OAAO,CAACk1O,iBAAiB,CAAC;EACpD;EAEA,MAAMsyC,MAAMA,CAACtgU,GAAG,EAAEC,IAAI,EAAEwN,IAAI,EAAE;IAC5BpP,WAAW,CAAC,iCAAiC,CAAC;EAChD;EAEAg2B,YAAYA,CAACpf,KAAK,EAAEC,GAAG,EAAE;IACvB7W,WAAW,CAAC,uCAAuC,CAAC;EACtD;EAEAstV,mBAAmBA,CAACn4T,OAAO,GAAG,KAAK,EAAE;IACnCn1B,WAAW,CAAC,8CAA8C,CAAC;EAC7D;EAEAutV,mBAAmBA,CAACvpV,KAAK,EAAE;IACzBhE,WAAW,CAAC,8CAA8C,CAAC;EAC7D;EAEAwtV,cAAcA,CAACvgB,QAAQ,EAAE;IACvB,IAAI,CAACkgB,SAAS,GAAGlgB,QAAQ;EAC3B;EAEAwgB,SAASA,CAACz8U,MAAM,EAAE;IAChBhR,WAAW,CAAC,oCAAoC,CAAC;EACnD;AACF;AAEA,MAAM0tV,eAAe,SAASV,cAAc,CAAC;EAC3CvqV,WAAWA,CAAC2M,IAAI,EAAE;IAChB,KAAK,CAACA,IAAI,CAAC;IAEX,MAAMskB,MAAM,GAAG,IAAI9B,MAAM,CAACxiB,IAAI,CAACi2C,MAAM,CAAC;IACtC,IAAI,CAAC+nS,WAAW,GAAG,IAAI5E,WAAW,CAAC,IAAI,EAAE90T,MAAM,CAAC;IAChD,IAAI,CAACi6T,oBAAoB,GAAGz5T,OAAO,CAACS,OAAO,CAACjB,MAAM,CAAC;EACrD;EAEA,MAAMuuS,MAAMA,CAACtgU,GAAG,EAAEC,IAAI,EAAEwN,IAAI,EAAE;IAC5B,MAAMvN,KAAK,GAAGF,GAAG,CAACC,IAAI,CAAC;IACvB,IAAI,OAAOC,KAAK,KAAK,UAAU,EAAE;MAC\u002FB,OAAOA,KAAK,CAAC6B,KAAK,CAAC\u002FB,GAAG,EAAEyN,IAAI,CAAC;IAC\u002FB;IACA,OAAOvN,KAAK;EACd;EAEAm0B,YAAYA,CAACpf,KAAK,EAAEC,GAAG,EAAE;IACvB,OAAOqd,OAAO,CAACS,OAAO,CAAC,CAAC;EAC1B;EAEA24T,mBAAmBA,CAACn4T,OAAO,GAAG,KAAK,EAAE;IACnC,OAAO,IAAI,CAACw4T,oBAAoB;EAClC;EAEAF,SAASA,CAACz8U,MAAM,EAAE,CAAC;AACrB;AAEA,MAAM48U,iBAAiB,SAASZ,cAAc,CAAC;EAC7CvqV,WAAWA,CAAC2M,IAAI,EAAE;IAChB,KAAK,CAACA,IAAI,CAAC;IAEX,IAAI,CAACy+U,aAAa,GAAG,IAAIt6T,oBAAoB,CAACnkB,IAAI,CAACi2C,MAAM,EAAE;MACzDzxB,UAAU,EAAExkB,IAAI,CAACoqC,OAAO;MACxB14C,MAAM,EAAEsO,IAAI,CAACtO,MAAM;MACnB6yB,gBAAgB,EAAEvkB,IAAI,CAACukB,gBAAgB;MACvCF,cAAc,EAAErkB,IAAI,CAACqkB;IACvB,CAAC,CAAC;IACF,IAAI,CAAC25T,WAAW,GAAG,IAAI5E,WAAW,CAAC,IAAI,EAAE,IAAI,CAACqF,aAAa,CAAC93T,SAAS,CAAC,CAAC,CAAC;EAC1E;EAEA,MAAMksS,MAAMA,CAACtgU,GAAG,EAAEC,IAAI,EAAEwN,IAAI,EAAE;IAC5B,IAAI;MACF,MAAMvN,KAAK,GAAGF,GAAG,CAACC,IAAI,CAAC;MACvB,IAAI,OAAOC,KAAK,KAAK,UAAU,EAAE;QAC\u002FB,OAAOA,KAAK,CAAC6B,KAAK,CAAC\u002FB,GAAG,EAAEyN,IAAI,CAAC;MAC\u002FB;MACA,OAAOvN,KAAK;IACd,CAAC,CAAC,OAAO6K,EAAE,EAAE;MACX,IAAI,EAAEA,EAAE,YAAYoL,oBAAoB,CAAC,EAAE;QACzC,MAAMpL,EAAE;MACV;MACA,MAAM,IAAI,CAACspB,YAAY,CAACtpB,EAAE,CAACkK,KAAK,EAAElK,EAAE,CAACmK,GAAG,CAAC;MACzC,OAAO,IAAI,CAACorT,MAAM,CAACtgU,GAAG,EAAEC,IAAI,EAAEwN,IAAI,CAAC;IACrC;EACF;EAEA4mB,YAAYA,CAACpf,KAAK,EAAEC,GAAG,EAAE;IACvB,OAAO,IAAI,CAACg3U,aAAa,CAAC73T,YAAY,CAACpf,KAAK,EAAEC,GAAG,CAAC;EACpD;EAEAy2U,mBAAmBA,CAACn4T,OAAO,GAAG,KAAK,EAAE;IACnC,OAAO,IAAI,CAAC04T,aAAa,CAAC34T,gBAAgB,CAACC,OAAO,CAAC;EACrD;EAEAo4T,mBAAmBA,CAACvpV,KAAK,EAAE;IACzB,IAAI,CAAC6pV,aAAa,CAACn7T,aAAa,CAAC;MAAE1uB;IAAM,CAAC,CAAC;EAC7C;EAEAypV,SAASA,CAACz8U,MAAM,EAAE;IAChB,IAAI,CAAC68U,aAAa,CAAC98U,KAAK,CAACC,MAAM,CAAC;EAClC;AACF;;;;;ACnMmB;AAEnB,MAAM88U,YAAY,GAAG;EACnBC,IAAI,EAAE,CAAC;EACP9lD,KAAK,EAAE;AACT,CAAC;AAED,MAAM+lD,UAAU,GAAG;EACjBC,MAAM,EAAE,CAAC;EACTC,eAAe,EAAE,CAAC;EAClBC,KAAK,EAAE,CAAC;EACRC,OAAO,EAAE,CAAC;EACVnmD,KAAK,EAAE,CAAC;EACRomD,IAAI,EAAE,CAAC;EACPC,aAAa,EAAE,CAAC;EAChBC,cAAc,EAAE;AAClB,CAAC;AAED,SAASC,IAAIA,CAAA,EAAG,CAAC;AAEjB,SAASC,UAAUA,CAAC\u002FhV,EAAE,EAAE;EACtB,IACEA,EAAE,YAAYvJ,cAAc,IAC5BuJ,EAAE,YAAY5J,mBAAmB,IACjC4J,EAAE,YAAYhK,iBAAiB,IAC\u002FBgK,EAAE,YAAY3J,iBAAiB,IAC\u002FB2J,EAAE,YAAY9J,qBAAqB,EACnC;IAEA,OAAO8J,EAAE;EACX;EAEA,IAAI,EAAEA,EAAE,YAAYzM,KAAK,IAAK,OAAOyM,EAAE,KAAK,QAAQ,IAAIA,EAAE,KAAK,IAAK,CAAC,EAAE;IACrE1M,WAAW,CACT,gEACF,CAAC;EACH;EACA,QAAQ0M,EAAE,CAACnK,IAAI;IACb,KAAK,gBAAgB;MACnB,OAAO,IAAIY,cAAc,CAACuJ,EAAE,CAACpK,OAAO,CAAC;IACvC,KAAK,qBAAqB;MACxB,OAAO,IAAIQ,mBAAmB,CAAC4J,EAAE,CAACpK,OAAO,CAAC;IAC5C,KAAK,mBAAmB;MACtB,OAAO,IAAII,iBAAiB,CAACgK,EAAE,CAACpK,OAAO,EAAEoK,EAAE,CAAC\u002FJ,IAAI,CAAC;IACnD,KAAK,mBAAmB;MACtB,OAAO,IAAII,iBAAiB,CAAC2J,EAAE,CAACpK,OAAO,EAAEoK,EAAE,CAAC1J,MAAM,EAAE0J,EAAE,CAACzJ,OAAO,CAAC;IACjE,KAAK,uBAAuB;MAC1B,OAAO,IAAIL,qBAAqB,CAAC8J,EAAE,CAACpK,OAAO,EAAEoK,EAAE,CAAC7J,OAAO,CAAC;EAC5D;EACA,OAAO,IAAID,qBAAqB,CAAC8J,EAAE,CAACpK,OAAO,EAAEoK,EAAE,CAAClG,QAAQ,CAAC,CAAC,CAAC;AAC7D;AAEA,MAAMkoV,cAAc,CAAC;EACnB,CAACC,SAAS,GAAG,IAAIh+U,eAAe,CAAC,CAAC;EAElClO,WAAWA,CAACmsV,UAAU,EAAEC,UAAU,EAAEC,MAAM,EAAE;IAC1C,IAAI,CAACF,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACC,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACC,MAAM,GAAGA,MAAM;IACpB,IAAI,CAACC,UAAU,GAAG,CAAC;IACnB,IAAI,CAACC,QAAQ,GAAG,CAAC;IACjB,IAAI,CAACC,WAAW,GAAGltV,MAAM,CAACuP,MAAM,CAAC,IAAI,CAAC;IACtC,IAAI,CAAC49U,iBAAiB,GAAGntV,MAAM,CAACuP,MAAM,CAAC,IAAI,CAAC;IAC5C,IAAI,CAAC69U,oBAAoB,GAAGptV,MAAM,CAACuP,MAAM,CAAC,IAAI,CAAC;IAC\u002FC,IAAI,CAAC89U,aAAa,GAAGrtV,MAAM,CAACuP,MAAM,CAAC,IAAI,CAAC;IAExCw9U,MAAM,CAAC79U,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAACo+U,SAAS,CAAC56T,IAAI,CAAC,IAAI,CAAC,EAAE;MAC7D7jB,MAAM,EAAE,IAAI,CAAC,CAAC+9U,SAAS,CAAC\u002F9U;IAC1B,CAAC,CAAC;EACJ;EAEA,CAACy+U,SAASC,CAAC;IAAEj3U;EAAK,CAAC,EAAE;IACnB,IAAIA,IAAI,CAACw2U,UAAU,KAAK,IAAI,CAACD,UAAU,EAAE;MACvC;IACF;IACA,IAAIv2U,IAAI,CAACqb,MAAM,EAAE;MACf,IAAI,CAAC,CAAC67T,oBAAoB,CAACl3U,IAAI,CAAC;MAChC;IACF;IACA,IAAIA,IAAI,CAACw4B,QAAQ,EAAE;MACjB,MAAMk+S,UAAU,GAAG12U,IAAI,CAAC02U,UAAU;MAClC,MAAMv5T,UAAU,GAAG,IAAI,CAAC25T,oBAAoB,CAACJ,UAAU,CAAC;MACxD,IAAI,CAACv5T,UAAU,EAAE;QACf,MAAM,IAAIv1B,KAAK,CAAC,2BAA2B8uV,UAAU,EAAE,CAAC;MAC1D;MACA,OAAO,IAAI,CAACI,oBAAoB,CAACJ,UAAU,CAAC;MAE5C,IAAI12U,IAAI,CAACw4B,QAAQ,KAAKi9S,YAAY,CAACC,IAAI,EAAE;QACvCv4T,UAAU,CAACb,OAAO,CAACtc,IAAI,CAACA,IAAI,CAAC;MAC\u002FB,CAAC,MAAM,IAAIA,IAAI,CAACw4B,QAAQ,KAAKi9S,YAAY,CAAC7lD,KAAK,EAAE;QAC\u002FCzyQ,UAAU,CAACZ,MAAM,CAAC65T,UAAU,CAACp2U,IAAI,CAACrH,MAAM,CAAC,CAAC;MAC5C,CAAC,MAAM;QACL,MAAM,IAAI\u002FQ,KAAK,CAAC,0BAA0B,CAAC;MAC7C;MACA;IACF;IACA,MAAMic,MAAM,GAAG,IAAI,CAACkzU,aAAa,CAAC\u002F2U,IAAI,CAAC6D,MAAM,CAAC;IAC9C,IAAI,CAACA,MAAM,EAAE;MACX,MAAM,IAAIjc,KAAK,CAAC,+BAA+BoY,IAAI,CAAC6D,MAAM,EAAE,CAAC;IAC\u002FD;IACA,IAAI7D,IAAI,CAAC02U,UAAU,EAAE;MACnB,MAAMH,UAAU,GAAG,IAAI,CAACA,UAAU;QAChCC,UAAU,GAAGx2U,IAAI,CAACu2U,UAAU;QAC5BE,MAAM,GAAG,IAAI,CAACA,MAAM;MAEtB56T,OAAO,CAACs7T,GAAG,CAACtzU,MAAM,EAAE7D,IAAI,CAACA,IAAI,CAAC,CAAC4c,IAAI,CACjC,UAAUhc,MAAM,EAAE;QAChB61U,MAAM,CAACW,WAAW,CAAC;UACjBb,UAAU;UACVC,UAAU;UACVh+S,QAAQ,EAAEi9S,YAAY,CAACC,IAAI;UAC3BgB,UAAU,EAAE12U,IAAI,CAAC02U,UAAU;UAC3B12U,IAAI,EAAEY;QACR,CAAC,CAAC;MACJ,CAAC,EACD,UAAUjI,MAAM,EAAE;QAChB89U,MAAM,CAACW,WAAW,CAAC;UACjBb,UAAU;UACVC,UAAU;UACVh+S,QAAQ,EAAEi9S,YAAY,CAAC7lD,KAAK;UAC5B8mD,UAAU,EAAE12U,IAAI,CAAC02U,UAAU;UAC3B\u002F9U,MAAM,EAAEy9U,UAAU,CAACz9U,MAAM;QAC3B,CAAC,CAAC;MACJ,CACF,CAAC;MACD;IACF;IACA,IAAIqH,IAAI,CAAC22U,QAAQ,EAAE;MACjB,IAAI,CAAC,CAACU,gBAAgB,CAACr3U,IAAI,CAAC;MAC5B;IACF;IACA6D,MAAM,CAAC7D,IAAI,CAACA,IAAI,CAAC;EACnB;EAEA80Q,EAAEA,CAAC4D,UAAU,EAAEv3O,OAAO,EAAE;IAOtB,MAAMm2S,EAAE,GAAG,IAAI,CAACP,aAAa;IAC7B,IAAIO,EAAE,CAAC5+D,UAAU,CAAC,EAAE;MAClB,MAAM,IAAI9wR,KAAK,CAAC,0CAA0C8wR,UAAU,GAAG,CAAC;IAC1E;IACA4+D,EAAE,CAAC5+D,UAAU,CAAC,GAAGv3O,OAAO;EAC1B;EAQA5oB,IAAIA,CAACmgQ,UAAU,EAAE14Q,IAAI,EAAEipC,SAAS,EAAE;IAChC,IAAI,CAACwtS,MAAM,CAACW,WAAW,CACrB;MACEb,UAAU,EAAE,IAAI,CAACA,UAAU;MAC3BC,UAAU,EAAE,IAAI,CAACA,UAAU;MAC3B3yU,MAAM,EAAE60Q,UAAU;MAClB14Q;IACF,CAAC,EACDipC,SACF,CAAC;EACH;EAUApH,eAAeA,CAAC62O,UAAU,EAAE14Q,IAAI,EAAEipC,SAAS,EAAE;IAC3C,MAAMytS,UAAU,GAAG,IAAI,CAACA,UAAU,EAAE;IACpC,MAAMv5T,UAAU,GAAGtB,OAAO,CAACC,aAAa,CAAC,CAAC;IAC1C,IAAI,CAACg7T,oBAAoB,CAACJ,UAAU,CAAC,GAAGv5T,UAAU;IAClD,IAAI;MACF,IAAI,CAACs5T,MAAM,CAACW,WAAW,CACrB;QACEb,UAAU,EAAE,IAAI,CAACA,UAAU;QAC3BC,UAAU,EAAE,IAAI,CAACA,UAAU;QAC3B3yU,MAAM,EAAE60Q,UAAU;QAClBg+D,UAAU;QACV12U;MACF,CAAC,EACDipC,SACF,CAAC;IACH,CAAC,CAAC,OAAO50C,EAAE,EAAE;MACX8oB,UAAU,CAACZ,MAAM,CAACloB,EAAE,CAAC;IACvB;IACA,OAAO8oB,UAAU,CAACH,OAAO;EAC3B;EAYAu6T,cAAcA,CAAC7+D,UAAU,EAAE14Q,IAAI,EAAEw3U,gBAAgB,EAAEvuS,SAAS,EAAE;IAC5D,MAAM0tS,QAAQ,GAAG,IAAI,CAACA,QAAQ,EAAE;MAC9BJ,UAAU,GAAG,IAAI,CAACA,UAAU;MAC5BC,UAAU,GAAG,IAAI,CAACA,UAAU;MAC5BC,MAAM,GAAG,IAAI,CAACA,MAAM;IAEtB,OAAO,IAAIgB,cAAc,CACvB;MACE34U,KAAK,EAAE44U,UAAU,IAAI;QACnB,MAAMC,eAAe,GAAG97T,OAAO,CAACC,aAAa,CAAC,CAAC;QAC\u002FC,IAAI,CAAC+6T,iBAAiB,CAACF,QAAQ,CAAC,GAAG;UACjCe,UAAU;UACVE,SAAS,EAAED,eAAe;UAC1BE,QAAQ,EAAE,IAAI;UACdC,UAAU,EAAE,IAAI;UAChBhxE,QAAQ,EAAE;QACZ,CAAC;QACD2vE,MAAM,CAACW,WAAW,CAChB;UACEb,UAAU;UACVC,UAAU;UACV3yU,MAAM,EAAE60Q,UAAU;UAClBi+D,QAAQ;UACR32U,IAAI;UACJm4P,WAAW,EAAEu\u002FE,UAAU,CAACv\u002FE;QAC1B,CAAC,EACDlvN,SACF,CAAC;QAED,OAAO0uS,eAAe,CAAC36T,OAAO;MAChC,CAAC;MAED+6T,IAAI,EAAEL,UAAU,IAAI;QAClB,MAAMM,cAAc,GAAGn8T,OAAO,CAACC,aAAa,CAAC,CAAC;QAC9C,IAAI,CAAC+6T,iBAAiB,CAACF,QAAQ,CAAC,CAACkB,QAAQ,GAAGG,cAAc;QAC1DvB,MAAM,CAACW,WAAW,CAAC;UACjBb,UAAU;UACVC,UAAU;UACVn7T,MAAM,EAAEs6T,UAAU,CAACK,IAAI;UACvBW,QAAQ;UACRx+E,WAAW,EAAEu\u002FE,UAAU,CAACv\u002FE;QAC1B,CAAC,CAAC;QAGF,OAAO6\u002FE,cAAc,CAACh7T,OAAO;MAC\u002FB,CAAC;MAEDi7T,MAAM,EAAEt\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\u002FlD,KAAK;QACnB\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\u002FU,MAAM,CAAC,CAAC,CAC7B;EACD,MAAMm\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\u002FC8N,aAAa,CAACj\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\u002FBo\u002FU,aAAa,CAACtvV,IAAI,CAAC,CAAC,CAAC,EAAE+uV,UAAU,EAAE7+U,GAAG,CAAC,CAAC;MACxC6+U,UAAU,IAAI56U,IAAI,CAACvX,MAAM;IAC3B,CAAC,MAAM;MACLsT,GAAG,GAAGtQ,IAAI,CAACC,GAAG,CAACuQ,GAAG,CAACF,GAAG,GAAG,CAAC,EAAE,MAAM,CAAC;MACnCo\u002FU,aAAa,CAACtvV,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAEkQ,GAAG,CAAC,CAAC;IACjC;IACAs\u002FU,MAAM,GAAG5vV,IAAI,CAACwF,GAAG,CAACoqV,MAAM,EAAEt\u002FU,GAAG,CAAC;EAChC;EACA\u002FB,OAAO,CAACe,GAAG,CAAC,OAAO,EAAEggV,UAAU,CAACF,OAAO,CAAC,CAAC;EACzC,MAAM9mI,UAAU,GAAGhtM,cAAc,CAACq0U,SAAS,CAAC;EAC5C,MAAME,UAAU,GAAGv0U,cAAc,CAACs0U,MAAM,CAAC;EACzC,MAAME,KAAK,GAAG,CAAC,CAAC,EAAExnI,UAAU,EAAEunI,UAAU,CAAC;EACzCthV,OAAO,CAACe,GAAG,CAAC,GAAG,EAAEwgV,KAAK,CAAC;EACvBN,UAAU,CAACL,UAAU,EAAEd,QAAQ,EAAE9\u002FU,OAAO,CAAC;EAEzC,MAAMwhV,UAAU,GAAG\u002FvV,IAAI,CAACsM,UAAU,CAACwjV,KAAK,CAAC;EACzC,MAAMv7U,IAAI,GAAG,IAAI\u002FT,UAAU,CAACuvV,UAAU,GAAGL,aAAa,CAAC1yV,MAAM,CAAC;EAC9D,MAAM4yB,MAAM,GAAG,IAAI9B,MAAM,CAACvZ,IAAI,CAAC;EAC\u002FBqb,MAAM,CAAC5f,IAAI,GAAGzB,OAAO;EAErB,IAAIuH,MAAM,GAAG,CAAC;EACd,KAAK,MAAM,CAAC\u002FpB,IAAI,EAAEikW,SAAS,EAAE1\u002FU,GAAG,CAAC,IAAIo\u002FU,aAAa,EAAE;IAClD55U,MAAM,GAAGm4U,QAAQ,CAACliW,IAAI,EAAE+jW,KAAK,CAAC,CAAC,CAAC,EAAEh6U,MAAM,EAAEvB,IAAI,CAAC;IAC\u002FCuB,MAAM,GAAGm4U,QAAQ,CAAC+B,SAAS,EAAEF,KAAK,CAAC,CAAC,CAAC,EAAEh6U,MAAM,EAAEvB,IAAI,CAAC;IACpDuB,MAAM,GAAGm4U,QAAQ,CAAC39U,GAAG,EAAEw\u002FU,KAAK,CAAC,CAAC,CAAC,EAAEh6U,MAAM,EAAEvB,IAAI,CAAC;EAChD;EAEA,MAAMg5U,WAAW,CAACc,QAAQ,CAACpkB,MAAM,EAAEr6S,MAAM,EAAE3uB,MAAM,EAAE,CAAC,CAAC,CAAC;EACtDA,MAAM,CAACb,IAAI,CAAC,aAAa,EAAE+uV,UAAU,CAACzsV,QAAQ,CAAC,CAAC,EAAE,WAAW,CAAC;AAChE;AAEA,SAAS8sV,UAAUA,CAACL,UAAU,EAAEd,QAAQ,EAAE9\u002FU,OAAO,EAAE;EACjD,IAAIhM,KAAK,CAAC4I,OAAO,CAACkjV,QAAQ,CAAC4B,OAAO,CAAC,IAAI5B,QAAQ,CAAC4B,OAAO,CAACjzV,MAAM,GAAG,CAAC,EAAE;IAClE,MAAMkzV,GAAG,GAAG\u002FB,UAAU,CAACgB,UAAU,EAAEd,QAAQ,CAAC;IAC5C9\u002FU,OAAO,CAACe,GAAG,CAAC,IAAI,EAAE,CAAC++U,QAAQ,CAAC4B,OAAO,CAAC,CAAC,CAAC,EAAEC,GAAG,CAAC,CAAC;EAC\u002FC;AACF;AAEA,SAASC,cAAcA,CAAC9B,QAAQ,EAAEvuE,OAAO,EAAEswE,aAAa,EAAE;EACxD,MAAM7hV,OAAO,GAAG,IAAIP,IAAI,CAAC,IAAI,CAAC;EAC9BO,OAAO,CAACe,GAAG,CAAC,MAAM,EAAE++U,QAAQ,CAAC1R,SAAS,CAAC;EACvC,MAAM0T,eAAe,GAAGhC,QAAQ,CAACpkB,MAAM;EACvC,IAAImmB,aAAa,EAAE;IACjBtwE,OAAO,CAAC\u002FuQ,GAAG,CAACs\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\u002FN,KAAK,EAAEsN,IAAI,CAAC;IAEhE,SAAS\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\u002FU,mBAAmB,CAACk\u002FU,YAAY,CAAC;gBACjDA,YAAY,GAAG,EAAE;gBAEjB,IAAIt2V,MAAM,IAAIu2V,OAAO,CAACv2V,MAAM,KAAKA,MAAM,EAAE;kBACvCf,IAAI,CAAC,+CAA+C,CAAC;gBACvD;gBACAg3V,cAAc,CAAC1xS,MAAM,GAAGgyS,OAAO;gBAE\u002FBF,aAAa,GAAG,IAAIzJ,eAAe,CAACqJ,cAAc,CAAC;gBACnDG,oBAAoB,CAACviU,OAAO,CAACwiU,aAAa,CAAC;cAC7C;cACAd,UAAU,GAAG,IAAI;cACjB;YACF;YAOA3hU,MAAM,IAAI7yB,KAAK,CAACuW,UAAU;YAE1B,IAAI,CAAC6+U,WAAW,CAAC1iU,oBAAoB,EAAE;cACrCilB,OAAO,CAAC5oB,IAAI,CAAC,aAAa,EAAE;gBAC1B8D,MAAM;gBACN8B,KAAK,EAAE1yB,IAAI,CAACwF,GAAG,CAACorB,MAAM,EAAEuiU,WAAW,CAAC9T,aAAa,IAAI,CAAC;cACxD,CAAC,CAAC;YACJ;YAEA,IAAIgU,aAAa,EAAE;cACjBA,aAAa,CAAC5J,mBAAmB,CAAC1rV,KAAK,CAAC;YAC1C,CAAC,MAAM;cACLu1V,YAAY,CAAClzV,IAAI,CAACrC,KAAK,CAAC;YAC1B;YACAo1V,WAAW,CAACjiU,IAAI,CAAC,CAAC,CAACC,IAAI,CAACJ,SAAS,EAAED,MAAM,CAAC;UAC5C,CAAC,CAAC,OAAOtR,CAAC,EAAE;YACVsR,MAAM,CAACtR,CAAC,CAAC;UACX;QACF,CAAC;QACD2zU,WAAW,CAACjiU,IAAI,CAAC,CAAC,CAACC,IAAI,CAACJ,SAAS,EAAED,MAAM,CAAC;MAC5C,CAAC,CAAC,CAACkB,KAAK,CAAC,UAAUxS,CAAC,EAAE;QACpB4zU,oBAAoB,CAACtiU,MAAM,CAACtR,CAAC,CAAC;QAC9B+yU,UAAU,GAAG,IAAI;MACnB,CAAC,CAAC;MAEFA,UAAU,GAAGrlV,MAAM,IAAI;QACrBgmV,SAAS,CAAClgU,iBAAiB,CAAC9lB,MAAM,CAAC;MACrC,CAAC;MAED,OAAOkmV,oBAAoB,CAAC7hU,OAAO;IACrC;IAEA,SAASiiU,QAAQA,CAACj\u002FU,IAAI,EAAE;MACtB,SAASk\u002FU,SAASA,CAACC,GAAG,EAAE;QACtBtuF,mBAAmB,CAAC,CAAC;QACrB1vN,OAAO,CAAC5oB,IAAI,CAAC,QAAQ,EAAE;UAAE6mU,OAAO,EAAED;QAAI,CAAC,CAAC;MAC1C;MAEA,SAASE,SAASA,CAAChrV,EAAE,EAAE;QACrBw8P,mBAAmB,CAAC,CAAC;QAErB,IAAIx8P,EAAE,YAAYhK,iBAAiB,EAAE;UACnC,MAAMg\u002FP,IAAI,GAAG,IAAI+zF,UAAU,CAAC,+BAA+B\u002FoV,EAAE,CAAC\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\u002F2U,SAAS,EAAE,CAAC;YAC\u002FDi4U,eAAe,CAACj1F,IAAI,CAAC;YAErB,OAAOxyP,IAAI,CACRi1T,kBAAkB,CACjB3qR,OAAO,EACPkoN,IAAI,EACJjjP,WAAW,EACXwlT,aAAa,EACbrgD,OACF,CAAC,CACA\u002FoP,OAAO,CAAC,YAAY;cACnB+7T,gBAAgB,CAACl1F,IAAI,CAAC;YACxB,CAAC,CAAC;UACN,CAAC,CACH,CAAC;QACH;QACA,IAAIsiB,cAAc,KAAK,IAAI,EAAE;UAE3BzpO,QAAQ,CAACr2C,IAAI,CACXgwB,OAAO,CAAC+0O,GAAG,CAAC8uF,qBAAqB,CAAC,CAAC9iU,IAAI,CAAC,YAAY;YAClD,MAAMstP,cAAc,CAACoB,mBAAmB,CAAC;cACvCnlQ,oBAAoB;cACpBzM,IAAI;cACJqxQ,UAAU;cACVC,UAAU;cACVO;YACF,CAAC,CAAC;UACJ,CAAC,CACH,CAAC;QACH,CAAC,MAAM,IAAII,cAAc,EAAE;UACzBzpO,QAAQ,CAACr2C,IAAI,CACXgwB,OAAO,CAAC+0O,GAAG,CAAC8uF,qBAAqB,CAAC,CAAC9iU,IAAI,CAAC,YAAY;YAClD,MAAM+uP,cAAc,CAACW,mBAAmB,CAAC;cACvCnmQ,oBAAoB;cACpB6kQ,UAAU;cACVO;YACF,CAAC,CAAC;UACJ,CAAC,CACH,CAAC;QACH;MACF;MAEA,IAAI+lE,SAAS,EAAE;QACbpvS,QAAQ,CAACr2C,IAAI,CACXm\u002FQ,UAAU,CAACs+C,SAAS,CAAC,kBAAkB,EAAE,CAACpjT,iBAAiB,CAAC,CAC9D,CAAC;MACH,CAAC,MAAM;QACL,KAAK,IAAIG,SAAS,GAAG,CAAC,EAAEA,SAAS,GAAGoqD,QAAQ,EAAEpqD,SAAS,EAAE,EAAE;UACzD67B,QAAQ,CAACr2C,IAAI,CACXm\u002FQ,UAAU,CAACG,OAAO,CAAC9kQ,SAAS,CAAC,CAACuW,IAAI,CAAC,UAAU\u002FlB,IAAI,EAAE;YACjD,MAAMwyP,IAAI,GAAG,IAAI+zF,UAAU,CAAC,cAAc\u002F2U,SAAS,EAAE,CAAC;YACtDi4U,eAAe,CAACj1F,IAAI,CAAC;YAErB,OAAOxyP,IAAI,CACRnV,IAAI,CAACy\u002FC,OAAO,EAAEkoN,IAAI,EAAEnjP,iBAAiB,EAAEqlQ,OAAO,CAAC,CAC\u002FC\u002FoP,OAAO,CAAC,YAAY;cACnB+7T,gBAAgB,CAACl1F,IAAI,CAAC;YACxB,CAAC,CAAC;UACN,CAAC,CACH,CAAC;QACH;MACF;MACA,MAAM0qB,IAAI,GAAG,MAAMl4P,OAAO,CAAC+0O,GAAG,CAAC1uN,QAAQ,CAAC;MAExC,IAAI0qS,OAAO,GAAG,IAAI;MAClB,IAAI0E,SAAS,EAAE;QACb1E,OAAO,GAAG74D,IAAI,CAAC,CAAC,CAAC;QACjB,IAAI,CAAC64D,OAAO,EAAE;UACZ,OAAOvxT,MAAM,CAACrwB,KAAK;QACrB;MACF,CAAC,MAAM,IAAIugR,OAAO,CAACtxQ,IAAI,KAAK,CAAC,EAAE;QAE7B,OAAOohB,MAAM,CAACrwB,KAAK;MACrB;MAEA,MAAM++T,eAAe,GACnBr5C,WAAW,IACXD,QAAQ,YAAYh3Q,IAAI,IACxB8xQ,OAAO,CAACzwQ,MAAM,CAAC,CAAC,CAAC6rR,IAAI,CAAC1qR,GAAG,IAAIA,GAAG,CAAC8tT,eAAe,CAAC;MAEnD,MAAMjgC,GAAG,GAAIrZ,QAAQ,YAAYh3Q,IAAI,IAAIg3Q,QAAQ,CAACx6Q,GAAG,CAAC,KAAK,CAAC,IAAK,IAAI;MACrE,IAAIskV,cAAc,GAAG,IAAI;MACzB,IAAID,mBAAmB,GAAG,KAAK;MAC\u002FB,IAAItsV,KAAK,CAAC4I,OAAO,CAACkzR,GAAG,CAAC,EAAE;QACtB,KAAK,IAAIv+R,CAAC,GAAG,CAAC,EAAE+I,EAAE,GAAGw1R,GAAG,CAACrhS,MAAM,EAAE8C,CAAC,GAAG+I,EAAE,EAAE\u002FI,CAAC,IAAI,CAAC,EAAE;UAC\u002FC,IAAIu+R,GAAG,CAACv+R,CAAC,CAAC,KAAK,UAAU,EAAE;YACzBgvV,cAAc,GAAGzwD,GAAG,CAACv+R,CAAC,GAAG,CAAC,CAAC;YAC3B+uV,mBAAmB,GAAG,IAAI;UAC5B;QACF;QACA,IAAIC,cAAc,KAAK,IAAI,EAAE;UAC3BA,cAAc,GAAG7gV,IAAI,CAACgyQ,kBAAkB,CAAC,CAAC;QAC5C;MACF,CAAC,MAAM,IAAIoe,GAAG,EAAE;QAEdpiS,IAAI,CAAC,uBAAuB,CAAC;MAC\u002FB;MAEA,IAAIi4V,WAAW,GAAGj2V,MAAM,CAACuP,MAAM,CAAC,IAAI,CAAC;MACrC,IAAIS,IAAI,CAACm5Q,OAAO,EAAE;QAEhB,MAAMmnE,OAAO,GAAG,IAAInkV,GAAG,CAAC,CAAC;QACzB,MAAMikV,QAAQ,GAAGpgV,IAAI,CAACm5Q,OAAO,CAAC58Q,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI;QACjD,IAAI6jV,QAAQ,YAAYrgV,IAAI,EAAE;UAC5B,KAAK,MAAM,CAACkB,GAAG,EAAEnR,KAAK,CAAC,IAAIswV,QAAQ,EAAE;YACnC,IAAI,OAAOtwV,KAAK,KAAK,QAAQ,EAAE;cAC7BwwV,OAAO,CAACj\u002FU,GAAG,CAACJ,GAAG,EAAE\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\",\"sources\":[\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-object.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-iterator.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.find.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fmake-built-in.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffunction-name.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fhtml.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fhidden-keys.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fiterate-simple.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.flat-map.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffunction-bind-native.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-string.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fan-instance.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fmath-trunc.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-symbol.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-iterator-method.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-alphabet-option.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-keys.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fperform.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.every.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Finternal-state.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-integer-or-infinity.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fstructured-clone-proper-transfer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.uint8-array.set-from-base64.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-is-prototype-of.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.promise.try.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.union.v2.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.map.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-iterator-direct.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.to-array.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-keys-internal.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdefine-built-in-accessor.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-string-tag-support.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fclassof-raw.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fcorrect-prototype-getter.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fuint8-from-hex.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-create.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.is-superset-of.v2.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.filter.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fcreate-iter-result-object.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fnormalize-string-argument.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fiterate.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-primitive.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-get-prototype-of.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-forced.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fbase64-map.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fvalidate-arguments-length.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fenvironment-user-agent.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-set-prototype-of.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Finherit-if-required.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-buffer-is-detached.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fuid.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-difference.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fa-string.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fa-possible-prototype.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.some.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.self.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-symmetric-difference.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Finspect-source.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-get-own-property-symbols.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdescriptors.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-set-record.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-is-subset-of.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.is-disjoint-from.v2.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-possible-prototype.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fan-object-or-undefined.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdocument-create-element.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array.push.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-null-or-undefined.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fan-uint8-array.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-union.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-array-iterator-method.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fenvironment.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fordinary-to-primitive.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-array.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-helpers.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-is-disjoint-from.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdetach-transferable.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fsymbol-constructor-detection.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-set-length.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fiterator-helper-without-closing-on-early-error.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fglobal-this.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.url-search-params.delete.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.promise.with-resolvers.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fcreate-property.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-callable.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-define-property.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-method-accept-set-like.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.dom-exception.stack.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdom-exception-constants.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.symmetric-difference.v2.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fown-keys.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-buffer-not-detached.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-size.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-from-constructor-and-list.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-indexed-object.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-absolute-index.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.uint8-array.to-hex.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-buffer-transfer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fshared.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.url.parse.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.is-subset-of.v2.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fie8-dom-define.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-method.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fnew-promise-capability.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffunction-bind-context.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fshared-key.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fenvironment-is-node.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Flength-of-array-like.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fiterators.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdefine-built-ins.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fcall-with-safe-iteration-closing.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-pure.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fexport.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array-buffer.detached.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fcreate-non-enumerable-property.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffunction-uncurry-this-accessor.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-define-properties.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ftry-to-string.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdoes-not-exceed-safe-integer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdefine-built-in.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fclassof.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-property-key.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fcreate-property-descriptor.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fuse-symbol-as-uid.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Findexed-object.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fa-set.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-get-own-property-descriptor.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-buffer-byte-length.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Furl-constructor-detection.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffunction-uncurry-this-clause.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.url-search-params.has.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.for-each.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fshared-store.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.difference.v2.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fiterators-core.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-slice.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-index.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fcopy-constructor-properties.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Frequire-object-coercible.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-built-in.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-buffer-basic-detection.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array-buffer.transfer-to-fixed-length.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fregexp-flags.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.intersection.v2.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-length.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array-buffer.transfer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.constructor.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fwell-known-symbol.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.reduce.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-iterate.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-get-own-property-names.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-is-superset-of.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fan-object.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ferror-stack-clear.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fweak-map-basic-detection.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-iterator-flattenable.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fv8-prototype-define-bug.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.url-search-params.size.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fenum-bug-keys.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffunction-apply.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-intersection.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-property-is-enumerable.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-object.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffails.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fuint8-from-base64.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-clone.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fhas-own-property.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fa-callable.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-built-in-node-module.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.uint8-array.from-base64.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdefine-global-property.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fiterator-create-proxy.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.regexp.flags.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffunction-uncurry-this.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fenvironment-v8-version.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fiterator-close.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffunction-call.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-includes.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.uint8-array.to-base64.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.uint8-array.set-from-hex.js\",\"webpack:\u002F\u002Fpdf.js\u002Fwebpack\u002Fbootstrap\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fshared\u002Futil.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fprimitives.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fbase_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fcore_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fexternal\u002Fqcms\u002Fqcms_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fexternal\u002Fqcms\u002Fqcms.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fcolorspace.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Ficc_colorspace.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fstream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fchunked_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fshared\u002Fimage_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fimage_resizer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fdecode_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fcolorspace_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fjpg.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fjpeg_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fexternal\u002Fopenjpeg\u002Fopenjpeg.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fjpx.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Foperator_list.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fbinary_cmap.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fascii_85_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fascii_hex_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fccitt.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fccitt_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fflate_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Farithmetic_decoder.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fjbig2.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fjbig2_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fjpx_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Flzw_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fpredictor_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Frun_length_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fparser.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fcmap.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fencodings.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fglyphlist.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Funicode.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Ffonts_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fcharsets.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fcff_parser.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fstandard_fonts.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fto_unicode_map.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fcff_font.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Ffont_renderer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fmetrics.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fglyf.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fopentype_file_builder.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Ftype1_parser.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Ftype1_font.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Ffonts.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fpattern.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fcalibri_factors.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fhelvetica_factors.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fliberationsans_widths.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fmyriadpro_factors.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fsegoeui_factors.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa_fonts.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fps_parser.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fimage_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Ffunction.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fbidi.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Ffont_substitutions.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fshared\u002Fmurmurhash3.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fimage.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fevaluator.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fdefault_appearance.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fname_number_tree.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fcleanup_helper.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Ffile_spec.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxml_parser.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fmetadata_parser.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fstruct_tree.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fcatalog.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fobject_loader.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fsymbol_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fnamespaces.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Futils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Ffonts.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Ftext.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fsom.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fxfa_object.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fhtml_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Flayout.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Ftemplate.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fbind.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fdata.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fconfig.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fconnection_set.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fdatasets.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Flocale_set.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fsignature.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fstylesheet.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fxdp.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fxhtml.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fsetup.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Funknown.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fbuilder.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Fparser.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxfa\u002Ffactory.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fannotation.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fcalculate_md5.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fdataset_reader.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fcalculate_sha_other.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fcalculate_sha256.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fdecrypt_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fcrypto.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fxref.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fdocument.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fpdf_manager.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fshared\u002Fmessage_handler.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fwriter.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fworker_stream.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fcore\u002Fworker.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fsrc\u002Fpdf.worker.js\"],\"sourcesContent\":[\"'use strict';\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\n\\nmodule.exports = function (it) {\\n  return typeof it == 'object' ? it !== null : isCallable(it);\\n};\\n\",\"'use strict';\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar tryToString = require('..\u002Finternals\u002Ftry-to-string');\\nvar getIteratorMethod = require('..\u002Finternals\u002Fget-iterator-method');\\n\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (argument, usingIterator) {\\n  var iteratorMethod = arguments.length \u003C 2 ? getIteratorMethod(argument) : usingIterator;\\n  if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\\n  throw new $TypeError(tryToString(argument) + ' is not iterable');\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar iterate = require('..\u002Finternals\u002Fiterate');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar getIteratorDirect = require('..\u002Finternals\u002Fget-iterator-direct');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\nvar iteratorHelperWithoutClosingOnEarlyError = require('..\u002Finternals\u002Fiterator-helper-without-closing-on-early-error');\\n\\nvar findWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('find', TypeError);\\n\\n\u002F\u002F `Iterator.prototype.find` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.find\\n$({ target: 'Iterator', proto: true, real: true, forced: findWithoutClosingOnEarlyError }, {\\n  find: function find(predicate) {\\n    anObject(this);\\n    try {\\n      aCallable(predicate);\\n    } catch (error) {\\n      iteratorClose(this, 'throw', error);\\n    }\\n\\n    if (findWithoutClosingOnEarlyError) return call(findWithoutClosingOnEarlyError, this, predicate);\\n\\n    var record = getIteratorDirect(this);\\n    var counter = 0;\\n    return iterate(record, function (value, stop) {\\n      if (predicate(value, counter++)) return stop(value);\\n    }, { IS_RECORD: true, INTERRUPTED: true }).result;\\n  }\\n});\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar CONFIGURABLE_FUNCTION_NAME = require('..\u002Finternals\u002Ffunction-name').CONFIGURABLE;\\nvar inspectSource = require('..\u002Finternals\u002Finspect-source');\\nvar InternalStateModule = require('..\u002Finternals\u002Finternal-state');\\n\\nvar enforceInternalState = InternalStateModule.enforce;\\nvar getInternalState = InternalStateModule.get;\\nvar $String = String;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\\nvar defineProperty = Object.defineProperty;\\nvar stringSlice = uncurryThis(''.slice);\\nvar replace = uncurryThis(''.replace);\\nvar join = uncurryThis([].join);\\n\\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\\n  return defineProperty(function () { \u002F* empty *\u002F }, 'length', { value: 8 }).length !== 8;\\n});\\n\\nvar TEMPLATE = String(String).split('String');\\n\\nvar makeBuiltIn = module.exports = function (value, name, options) {\\n  if (stringSlice($String(name), 0, 7) === 'Symbol(') {\\n    name = '[' + replace($String(name), \u002F^Symbol\\\\(([^)]*)\\\\).*$\u002F, '$1') + ']';\\n  }\\n  if (options && options.getter) name = 'get ' + name;\\n  if (options && options.setter) name = 'set ' + name;\\n  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\\n    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\\n    else value.name = name;\\n  }\\n  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\\n    defineProperty(value, 'length', { value: options.arity });\\n  }\\n  try {\\n    if (options && hasOwn(options, 'constructor') && options.constructor) {\\n      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\\n    \u002F\u002F in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\\n    } else if (value.prototype) value.prototype = undefined;\\n  } catch (error) { \u002F* empty *\u002F }\\n  var state = enforceInternalState(value);\\n  if (!hasOwn(state, 'source')) {\\n    state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\\n  } return value;\\n};\\n\\n\u002F\u002F add fake Function#toString for correct work wrapped methods \u002F constructors with methods like LoDash isNative\\n\u002F\u002F eslint-disable-next-line no-extend-native -- required\\nFunction.prototype.toString = makeBuiltIn(function toString() {\\n  return isCallable(this) && getInternalState(this).source || inspectSource(this);\\n}, 'toString');\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\n\\nvar FunctionPrototype = Function.prototype;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\\n\\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\\n\u002F\u002F additional protection from minified \u002F mangled \u002F dropped function names\\nvar PROPER = EXISTS && (function something() { \u002F* empty *\u002F }).name === 'something';\\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\\n\\nmodule.exports = {\\n  EXISTS: EXISTS,\\n  PROPER: PROPER,\\n  CONFIGURABLE: CONFIGURABLE\\n};\\n\",\"'use strict';\\nvar getBuiltIn = require('..\u002Finternals\u002Fget-built-in');\\n\\nmodule.exports = getBuiltIn('document', 'documentElement');\\n\",\"'use strict';\\nmodule.exports = {};\\n\",\"'use strict';\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\n\\nmodule.exports = function (record, fn, ITERATOR_INSTEAD_OF_RECORD) {\\n  var iterator = ITERATOR_INSTEAD_OF_RECORD ? record : record.iterator;\\n  var next = record.next;\\n  var step, result;\\n  while (!(step = call(next, iterator)).done) {\\n    result = fn(step.value);\\n    if (result !== undefined) return result;\\n  }\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar getIteratorDirect = require('..\u002Finternals\u002Fget-iterator-direct');\\nvar getIteratorFlattenable = require('..\u002Finternals\u002Fget-iterator-flattenable');\\nvar createIteratorProxy = require('..\u002Finternals\u002Fiterator-create-proxy');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\nvar IS_PURE = require('..\u002Finternals\u002Fis-pure');\\nvar iteratorHelperWithoutClosingOnEarlyError = require('..\u002Finternals\u002Fiterator-helper-without-closing-on-early-error');\\n\\nvar flatMapWithoutClosingOnEarlyError = !IS_PURE && iteratorHelperWithoutClosingOnEarlyError('flatMap', TypeError);\\n\\nvar IteratorProxy = createIteratorProxy(function () {\\n  var iterator = this.iterator;\\n  var mapper = this.mapper;\\n  var result, inner;\\n\\n  while (true) {\\n    if (inner = this.inner) try {\\n      result = anObject(call(inner.next, inner.iterator));\\n      if (!result.done) return result.value;\\n      this.inner = null;\\n    } catch (error) { iteratorClose(iterator, 'throw', error); }\\n\\n    result = anObject(call(this.next, iterator));\\n\\n    if (this.done = !!result.done) return;\\n\\n    try {\\n      this.inner = getIteratorFlattenable(mapper(result.value, this.counter++), false);\\n    } catch (error) { iteratorClose(iterator, 'throw', error); }\\n  }\\n});\\n\\n\u002F\u002F `Iterator.prototype.flatMap` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.flatmap\\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE || flatMapWithoutClosingOnEarlyError }, {\\n  flatMap: function flatMap(mapper) {\\n    anObject(this);\\n    try {\\n      aCallable(mapper);\\n    } catch (error) {\\n      iteratorClose(this, 'throw', error);\\n    }\\n\\n    if (flatMapWithoutClosingOnEarlyError) return call(flatMapWithoutClosingOnEarlyError, this, mapper);\\n\\n    return new IteratorProxy(getIteratorDirect(this), {\\n      mapper: mapper,\\n      inner: null\\n    });\\n  }\\n});\\n\",\"'use strict';\\nvar fails = require('..\u002Finternals\u002Ffails');\\n\\nmodule.exports = !fails(function () {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind -- safe\\n  var test = (function () { \u002F* empty *\u002F }).bind();\\n  \u002F\u002F eslint-disable-next-line no-prototype-builtins -- safe\\n  return typeof test != 'function' || test.hasOwnProperty('prototype');\\n});\\n\",\"'use strict';\\nvar classof = require('..\u002Finternals\u002Fclassof');\\n\\nvar $String = String;\\n\\nmodule.exports = function (argument) {\\n  if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\\n  return $String(argument);\\n};\\n\",\"'use strict';\\nvar isPrototypeOf = require('..\u002Finternals\u002Fobject-is-prototype-of');\\n\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (it, Prototype) {\\n  if (isPrototypeOf(Prototype, it)) return it;\\n  throw new $TypeError('Incorrect invocation');\\n};\\n\",\"'use strict';\\nvar ceil = Math.ceil;\\nvar floor = Math.floor;\\n\\n\u002F\u002F `Math.trunc` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-math.trunc\\n\u002F\u002F eslint-disable-next-line es\u002Fno-math-trunc -- safe\\nmodule.exports = Math.trunc || function trunc(x) {\\n  var n = +x;\\n  return (n > 0 ? floor : ceil)(n);\\n};\\n\",\"'use strict';\\nvar getBuiltIn = require('..\u002Finternals\u002Fget-built-in');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar isPrototypeOf = require('..\u002Finternals\u002Fobject-is-prototype-of');\\nvar USE_SYMBOL_AS_UID = require('..\u002Finternals\u002Fuse-symbol-as-uid');\\n\\nvar $Object = Object;\\n\\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\\n  return typeof it == 'symbol';\\n} : function (it) {\\n  var $Symbol = getBuiltIn('Symbol');\\n  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\\n};\\n\",\"'use strict';\\nvar classof = require('..\u002Finternals\u002Fclassof');\\nvar getMethod = require('..\u002Finternals\u002Fget-method');\\nvar isNullOrUndefined = require('..\u002Finternals\u002Fis-null-or-undefined');\\nvar Iterators = require('..\u002Finternals\u002Fiterators');\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\n\\nmodule.exports = function (it) {\\n  if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\\n    || getMethod(it, '@@iterator')\\n    || Iterators[classof(it)];\\n};\\n\",\"'use strict';\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (options) {\\n  var alphabet = options && options.alphabet;\\n  if (alphabet === undefined || alphabet === 'base64' || alphabet === 'base64url') return alphabet || 'base64';\\n  throw new $TypeError('Incorrect `alphabet` option');\\n};\\n\",\"'use strict';\\nvar internalObjectKeys = require('..\u002Finternals\u002Fobject-keys-internal');\\nvar enumBugKeys = require('..\u002Finternals\u002Fenum-bug-keys');\\n\\n\u002F\u002F `Object.keys` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.keys\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-keys -- safe\\nmodule.exports = Object.keys || function keys(O) {\\n  return internalObjectKeys(O, enumBugKeys);\\n};\\n\",\"'use strict';\\nmodule.exports = function (exec) {\\n  try {\\n    return { error: false, value: exec() };\\n  } catch (error) {\\n    return { error: true, value: error };\\n  }\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar iterate = require('..\u002Finternals\u002Fiterate');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar getIteratorDirect = require('..\u002Finternals\u002Fget-iterator-direct');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\nvar iteratorHelperWithoutClosingOnEarlyError = require('..\u002Finternals\u002Fiterator-helper-without-closing-on-early-error');\\n\\nvar everyWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('every', TypeError);\\n\\n\u002F\u002F `Iterator.prototype.every` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.every\\n$({ target: 'Iterator', proto: true, real: true, forced: everyWithoutClosingOnEarlyError }, {\\n  every: function every(predicate) {\\n    anObject(this);\\n    try {\\n      aCallable(predicate);\\n    } catch (error) {\\n      iteratorClose(this, 'throw', error);\\n    }\\n\\n    if (everyWithoutClosingOnEarlyError) return call(everyWithoutClosingOnEarlyError, this, predicate);\\n\\n    var record = getIteratorDirect(this);\\n    var counter = 0;\\n    return !iterate(record, function (value, stop) {\\n      if (!predicate(value, counter++)) return stop();\\n    }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\\n  }\\n});\\n\",\"'use strict';\\nvar NATIVE_WEAK_MAP = require('..\u002Finternals\u002Fweak-map-basic-detection');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\nvar createNonEnumerableProperty = require('..\u002Finternals\u002Fcreate-non-enumerable-property');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar shared = require('..\u002Finternals\u002Fshared-store');\\nvar sharedKey = require('..\u002Finternals\u002Fshared-key');\\nvar hiddenKeys = require('..\u002Finternals\u002Fhidden-keys');\\n\\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\\nvar TypeError = globalThis.TypeError;\\nvar WeakMap = globalThis.WeakMap;\\nvar set, get, has;\\n\\nvar enforce = function (it) {\\n  return has(it) ? get(it) : set(it, {});\\n};\\n\\nvar getterFor = function (TYPE) {\\n  return function (it) {\\n    var state;\\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\\n      throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\\n    } return state;\\n  };\\n};\\n\\nif (NATIVE_WEAK_MAP || shared.state) {\\n  var store = shared.state || (shared.state = new WeakMap());\\n  \u002F* eslint-disable no-self-assign -- prototype methods protection *\u002F\\n  store.get = store.get;\\n  store.has = store.has;\\n  store.set = store.set;\\n  \u002F* eslint-enable no-self-assign -- prototype methods protection *\u002F\\n  set = function (it, metadata) {\\n    if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\\n    metadata.facade = it;\\n    store.set(it, metadata);\\n    return metadata;\\n  };\\n  get = function (it) {\\n    return store.get(it) || {};\\n  };\\n  has = function (it) {\\n    return store.has(it);\\n  };\\n} else {\\n  var STATE = sharedKey('state');\\n  hiddenKeys[STATE] = true;\\n  set = function (it, metadata) {\\n    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\\n    metadata.facade = it;\\n    createNonEnumerableProperty(it, STATE, metadata);\\n    return metadata;\\n  };\\n  get = function (it) {\\n    return hasOwn(it, STATE) ? it[STATE] : {};\\n  };\\n  has = function (it) {\\n    return hasOwn(it, STATE);\\n  };\\n}\\n\\nmodule.exports = {\\n  set: set,\\n  get: get,\\n  has: has,\\n  enforce: enforce,\\n  getterFor: getterFor\\n};\\n\",\"'use strict';\\nvar trunc = require('..\u002Finternals\u002Fmath-trunc');\\n\\n\u002F\u002F `ToIntegerOrInfinity` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-tointegerorinfinity\\nmodule.exports = function (argument) {\\n  var number = +argument;\\n  \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\\n  return number !== number || number === 0 ? 0 : trunc(number);\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar V8 = require('..\u002Finternals\u002Fenvironment-v8-version');\\nvar ENVIRONMENT = require('..\u002Finternals\u002Fenvironment');\\n\\nvar structuredClone = globalThis.structuredClone;\\n\\nmodule.exports = !!structuredClone && !fails(function () {\\n  \u002F\u002F prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation\\n  \u002F\u002F https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F679\\n  if ((ENVIRONMENT === 'DENO' && V8 > 92) || (ENVIRONMENT === 'NODE' && V8 > 94) || (ENVIRONMENT === 'BROWSER' && V8 > 97)) return false;\\n  var buffer = new ArrayBuffer(8);\\n  var clone = structuredClone(buffer, { transfer: [buffer] });\\n  return buffer.byteLength !== 0 || clone.byteLength !== 8;\\n});\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar $fromBase64 = require('..\u002Finternals\u002Fuint8-from-base64');\\nvar anUint8Array = require('..\u002Finternals\u002Fan-uint8-array');\\n\\nvar Uint8Array = globalThis.Uint8Array;\\n\\nvar INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS = !Uint8Array || !Uint8Array.prototype.setFromBase64 || !(function () {\\n  var target = new Uint8Array([255, 255, 255, 255, 255]);\\n  try {\\n    target.setFromBase64('MjYyZg===');\\n  } catch (error) {\\n    return target[0] === 50 && target[1] === 54 && target[2] === 50 && target[3] === 255 && target[4] === 255;\\n  }\\n})();\\n\\n\u002F\u002F `Uint8Array.prototype.setFromBase64` method\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-arraybuffer-base64\\nif (Uint8Array) $({ target: 'Uint8Array', proto: true, forced: INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS }, {\\n  setFromBase64: function setFromBase64(string \u002F* , options *\u002F) {\\n    anUint8Array(this);\\n\\n    var result = $fromBase64(string, arguments.length > 1 ? arguments[1] : undefined, this, this.length);\\n\\n    return { read: result.read, written: result.written };\\n  }\\n});\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\n\\nmodule.exports = uncurryThis({}.isPrototypeOf);\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar apply = require('..\u002Finternals\u002Ffunction-apply');\\nvar slice = require('..\u002Finternals\u002Farray-slice');\\nvar newPromiseCapabilityModule = require('..\u002Finternals\u002Fnew-promise-capability');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar perform = require('..\u002Finternals\u002Fperform');\\n\\nvar Promise = globalThis.Promise;\\n\\nvar ACCEPT_ARGUMENTS = false;\\n\u002F\u002F Avoiding the use of polyfills of the previous iteration of this proposal\\n\u002F\u002F that does not accept arguments of the callback\\nvar FORCED = !Promise || !Promise['try'] || perform(function () {\\n  Promise['try'](function (argument) {\\n    ACCEPT_ARGUMENTS = argument === 8;\\n  }, 8);\\n}).error || !ACCEPT_ARGUMENTS;\\n\\n\u002F\u002F `Promise.try` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-promise.try\\n$({ target: 'Promise', stat: true, forced: FORCED }, {\\n  'try': function (callbackfn \u002F* , ...args *\u002F) {\\n    var args = arguments.length > 1 ? slice(arguments, 1) : [];\\n    var promiseCapability = newPromiseCapabilityModule.f(this);\\n    var result = perform(function () {\\n      return apply(aCallable(callbackfn), undefined, args);\\n    });\\n    (result.error ? promiseCapability.reject : promiseCapability.resolve)(result.value);\\n    return promiseCapability.promise;\\n  }\\n});\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar union = require('..\u002Finternals\u002Fset-union');\\nvar setMethodAcceptSetLike = require('..\u002Finternals\u002Fset-method-accept-set-like');\\n\\n\u002F\u002F `Set.prototype.union` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.union\\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('union') }, {\\n  union: union\\n});\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar getIteratorDirect = require('..\u002Finternals\u002Fget-iterator-direct');\\nvar createIteratorProxy = require('..\u002Finternals\u002Fiterator-create-proxy');\\nvar callWithSafeIterationClosing = require('..\u002Finternals\u002Fcall-with-safe-iteration-closing');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\nvar iteratorHelperWithoutClosingOnEarlyError = require('..\u002Finternals\u002Fiterator-helper-without-closing-on-early-error');\\nvar IS_PURE = require('..\u002Finternals\u002Fis-pure');\\n\\nvar mapWithoutClosingOnEarlyError = !IS_PURE && iteratorHelperWithoutClosingOnEarlyError('map', TypeError);\\n\\nvar IteratorProxy = createIteratorProxy(function () {\\n  var iterator = this.iterator;\\n  var result = anObject(call(this.next, iterator));\\n  var done = this.done = !!result.done;\\n  if (!done) return callWithSafeIterationClosing(iterator, this.mapper, [result.value, this.counter++], true);\\n});\\n\\n\u002F\u002F `Iterator.prototype.map` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.map\\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE || mapWithoutClosingOnEarlyError }, {\\n  map: function map(mapper) {\\n    anObject(this);\\n    try {\\n      aCallable(mapper);\\n    } catch (error) {\\n      iteratorClose(this, 'throw', error);\\n    }\\n\\n    if (mapWithoutClosingOnEarlyError) return call(mapWithoutClosingOnEarlyError, this, mapper);\\n\\n    return new IteratorProxy(getIteratorDirect(this), {\\n      mapper: mapper\\n    });\\n  }\\n});\\n\",\"'use strict';\\n\u002F\u002F `GetIteratorDirect(obj)` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-iterator-helpers\u002F#sec-getiteratordirect\\nmodule.exports = function (obj) {\\n  return {\\n    iterator: obj,\\n    next: obj.next,\\n    done: false\\n  };\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar iterate = require('..\u002Finternals\u002Fiterate');\\nvar getIteratorDirect = require('..\u002Finternals\u002Fget-iterator-direct');\\n\\nvar push = [].push;\\n\\n\u002F\u002F `Iterator.prototype.toArray` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.toarray\\n$({ target: 'Iterator', proto: true, real: true }, {\\n  toArray: function toArray() {\\n    var result = [];\\n    iterate(getIteratorDirect(anObject(this)), push, { that: result, IS_RECORD: true });\\n    return result;\\n  }\\n});\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar toIndexedObject = require('..\u002Finternals\u002Fto-indexed-object');\\nvar indexOf = require('..\u002Finternals\u002Farray-includes').indexOf;\\nvar hiddenKeys = require('..\u002Finternals\u002Fhidden-keys');\\n\\nvar push = uncurryThis([].push);\\n\\nmodule.exports = function (object, names) {\\n  var O = toIndexedObject(object);\\n  var i = 0;\\n  var result = [];\\n  var key;\\n  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\\n  \u002F\u002F Don't enum bug & hidden keys\\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\\n    ~indexOf(result, key) || push(result, key);\\n  }\\n  return result;\\n};\\n\",\"'use strict';\\nvar makeBuiltIn = require('..\u002Finternals\u002Fmake-built-in');\\nvar defineProperty = require('..\u002Finternals\u002Fobject-define-property');\\n\\nmodule.exports = function (target, name, descriptor) {\\n  if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\\n  if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\\n  return defineProperty.f(target, name, descriptor);\\n};\\n\",\"'use strict';\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\n\\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\\nvar test = {};\\n\\ntest[TO_STRING_TAG] = 'z';\\n\\nmodule.exports = String(test) === '[object z]';\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\n\\nvar toString = uncurryThis({}.toString);\\nvar stringSlice = uncurryThis(''.slice);\\n\\nmodule.exports = function (it) {\\n  return stringSlice(toString(it), 8, -1);\\n};\\n\",\"'use strict';\\nvar fails = require('..\u002Finternals\u002Ffails');\\n\\nmodule.exports = !fails(function () {\\n  function F() { \u002F* empty *\u002F }\\n  F.prototype.constructor = null;\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-object-getprototypeof -- required for testing\\n  return Object.getPrototypeOf(new F()) !== F.prototype;\\n});\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\n\\nvar Uint8Array = globalThis.Uint8Array;\\nvar SyntaxError = globalThis.SyntaxError;\\nvar parseInt = globalThis.parseInt;\\nvar min = Math.min;\\nvar NOT_HEX = \u002F[^\\\\da-f]\u002Fi;\\nvar exec = uncurryThis(NOT_HEX.exec);\\nvar stringSlice = uncurryThis(''.slice);\\n\\nmodule.exports = function (string, into) {\\n  var stringLength = string.length;\\n  if (stringLength % 2 !== 0) throw new SyntaxError('String should be an even number of characters');\\n  var maxLength = into ? min(into.length, stringLength \u002F 2) : stringLength \u002F 2;\\n  var bytes = into || new Uint8Array(maxLength);\\n  var read = 0;\\n  var written = 0;\\n  while (written \u003C maxLength) {\\n    var hexits = stringSlice(string, read, read += 2);\\n    if (exec(NOT_HEX, hexits)) throw new SyntaxError('String should only contain hex characters');\\n    bytes[written++] = parseInt(hexits, 16);\\n  }\\n  return { bytes: bytes, read: read };\\n};\\n\",\"'use strict';\\n\u002F* global ActiveXObject -- old IE, WSH *\u002F\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar definePropertiesModule = require('..\u002Finternals\u002Fobject-define-properties');\\nvar enumBugKeys = require('..\u002Finternals\u002Fenum-bug-keys');\\nvar hiddenKeys = require('..\u002Finternals\u002Fhidden-keys');\\nvar html = require('..\u002Finternals\u002Fhtml');\\nvar documentCreateElement = require('..\u002Finternals\u002Fdocument-create-element');\\nvar sharedKey = require('..\u002Finternals\u002Fshared-key');\\n\\nvar GT = '>';\\nvar LT = '\u003C';\\nvar PROTOTYPE = 'prototype';\\nvar SCRIPT = 'script';\\nvar IE_PROTO = sharedKey('IE_PROTO');\\n\\nvar EmptyConstructor = function () { \u002F* empty *\u002F };\\n\\nvar scriptTag = function (content) {\\n  return LT + SCRIPT + GT + content + LT + '\u002F' + SCRIPT + GT;\\n};\\n\\n\u002F\u002F Create object with fake `null` prototype: use ActiveX Object with cleared prototype\\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\\n  activeXDocument.write(scriptTag(''));\\n  activeXDocument.close();\\n  var temp = activeXDocument.parentWindow.Object;\\n  \u002F\u002F eslint-disable-next-line no-useless-assignment -- avoid memory leak\\n  activeXDocument = null;\\n  return temp;\\n};\\n\\n\u002F\u002F Create object with fake `null` prototype: use iframe Object with cleared prototype\\nvar NullProtoObjectViaIFrame = function () {\\n  \u002F\u002F Thrash, waste and sodomy: IE GC bug\\n  var iframe = documentCreateElement('iframe');\\n  var JS = 'java' + SCRIPT + ':';\\n  var iframeDocument;\\n  iframe.style.display = 'none';\\n  html.appendChild(iframe);\\n  \u002F\u002F https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F475\\n  iframe.src = String(JS);\\n  iframeDocument = iframe.contentWindow.document;\\n  iframeDocument.open();\\n  iframeDocument.write(scriptTag('document.F=Object'));\\n  iframeDocument.close();\\n  return iframeDocument.F;\\n};\\n\\n\u002F\u002F Check for document.domain and active x support\\n\u002F\u002F No need to use active x approach when document.domain is not set\\n\u002F\u002F see https:\u002F\u002Fgithub.com\u002Fes-shims\u002Fes5-shim\u002Fissues\u002F150\\n\u002F\u002F variation of https:\u002F\u002Fgithub.com\u002Fkitcambridge\u002Fes5-shim\u002Fcommit\u002F4f738ac066346\\n\u002F\u002F avoid IE GC bug\\nvar activeXDocument;\\nvar NullProtoObject = function () {\\n  try {\\n    activeXDocument = new ActiveXObject('htmlfile');\\n  } catch (error) { \u002F* ignore *\u002F }\\n  NullProtoObject = typeof document != 'undefined'\\n    ? document.domain && activeXDocument\\n      ? NullProtoObjectViaActiveX(activeXDocument) \u002F\u002F old IE\\n      : NullProtoObjectViaIFrame()\\n    : NullProtoObjectViaActiveX(activeXDocument); \u002F\u002F WSH\\n  var length = enumBugKeys.length;\\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\\n  return NullProtoObject();\\n};\\n\\nhiddenKeys[IE_PROTO] = true;\\n\\n\u002F\u002F `Object.create` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.create\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-create -- safe\\nmodule.exports = Object.create || function create(O, Properties) {\\n  var result;\\n  if (O !== null) {\\n    EmptyConstructor[PROTOTYPE] = anObject(O);\\n    result = new EmptyConstructor();\\n    EmptyConstructor[PROTOTYPE] = null;\\n    \u002F\u002F add \\\"__proto__\\\" for Object.getPrototypeOf polyfill\\n    result[IE_PROTO] = O;\\n  } else result = NullProtoObject();\\n  return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar isSupersetOf = require('..\u002Finternals\u002Fset-is-superset-of');\\nvar setMethodAcceptSetLike = require('..\u002Finternals\u002Fset-method-accept-set-like');\\n\\nvar INCORRECT = !setMethodAcceptSetLike('isSupersetOf', function (result) {\\n  return !result;\\n});\\n\\n\u002F\u002F `Set.prototype.isSupersetOf` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.issupersetof\\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\\n  isSupersetOf: isSupersetOf\\n});\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar getIteratorDirect = require('..\u002Finternals\u002Fget-iterator-direct');\\nvar createIteratorProxy = require('..\u002Finternals\u002Fiterator-create-proxy');\\nvar callWithSafeIterationClosing = require('..\u002Finternals\u002Fcall-with-safe-iteration-closing');\\nvar IS_PURE = require('..\u002Finternals\u002Fis-pure');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\nvar iteratorHelperWithoutClosingOnEarlyError = require('..\u002Finternals\u002Fiterator-helper-without-closing-on-early-error');\\n\\nvar filterWithoutClosingOnEarlyError = !IS_PURE && iteratorHelperWithoutClosingOnEarlyError('filter', TypeError);\\n\\nvar IteratorProxy = createIteratorProxy(function () {\\n  var iterator = this.iterator;\\n  var predicate = this.predicate;\\n  var next = this.next;\\n  var result, done, value;\\n  while (true) {\\n    result = anObject(call(next, iterator));\\n    done = this.done = !!result.done;\\n    if (done) return;\\n    value = result.value;\\n    if (callWithSafeIterationClosing(iterator, predicate, [value, this.counter++], true)) return value;\\n  }\\n});\\n\\n\u002F\u002F `Iterator.prototype.filter` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.filter\\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE || filterWithoutClosingOnEarlyError }, {\\n  filter: function filter(predicate) {\\n    anObject(this);\\n    try {\\n      aCallable(predicate);\\n    } catch (error) {\\n      iteratorClose(this, 'throw', error);\\n    }\\n\\n    if (filterWithoutClosingOnEarlyError) return call(filterWithoutClosingOnEarlyError, this, predicate);\\n\\n    return new IteratorProxy(getIteratorDirect(this), {\\n      predicate: predicate\\n    });\\n  }\\n});\\n\",\"'use strict';\\n\u002F\u002F `CreateIterResultObject` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-createiterresultobject\\nmodule.exports = function (value, done) {\\n  return { value: value, done: done };\\n};\\n\",\"'use strict';\\nvar toString = require('..\u002Finternals\u002Fto-string');\\n\\nmodule.exports = function (argument, $default) {\\n  return argument === undefined ? arguments.length \u003C 2 ? '' : $default : toString(argument);\\n};\\n\",\"'use strict';\\nvar bind = require('..\u002Finternals\u002Ffunction-bind-context');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar tryToString = require('..\u002Finternals\u002Ftry-to-string');\\nvar isArrayIteratorMethod = require('..\u002Finternals\u002Fis-array-iterator-method');\\nvar lengthOfArrayLike = require('..\u002Finternals\u002Flength-of-array-like');\\nvar isPrototypeOf = require('..\u002Finternals\u002Fobject-is-prototype-of');\\nvar getIterator = require('..\u002Finternals\u002Fget-iterator');\\nvar getIteratorMethod = require('..\u002Finternals\u002Fget-iterator-method');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\n\\nvar $TypeError = TypeError;\\n\\nvar Result = function (stopped, result) {\\n  this.stopped = stopped;\\n  this.result = result;\\n};\\n\\nvar ResultPrototype = Result.prototype;\\n\\nmodule.exports = function (iterable, unboundFunction, options) {\\n  var that = options && options.that;\\n  var AS_ENTRIES = !!(options && options.AS_ENTRIES);\\n  var IS_RECORD = !!(options && options.IS_RECORD);\\n  var IS_ITERATOR = !!(options && options.IS_ITERATOR);\\n  var INTERRUPTED = !!(options && options.INTERRUPTED);\\n  var fn = bind(unboundFunction, that);\\n  var iterator, iterFn, index, length, result, next, step;\\n\\n  var stop = function (condition) {\\n    if (iterator) iteratorClose(iterator, 'normal', condition);\\n    return new Result(true, condition);\\n  };\\n\\n  var callFn = function (value) {\\n    if (AS_ENTRIES) {\\n      anObject(value);\\n      return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\\n    } return INTERRUPTED ? fn(value, stop) : fn(value);\\n  };\\n\\n  if (IS_RECORD) {\\n    iterator = iterable.iterator;\\n  } else if (IS_ITERATOR) {\\n    iterator = iterable;\\n  } else {\\n    iterFn = getIteratorMethod(iterable);\\n    if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');\\n    \u002F\u002F optimisation for array iterators\\n    if (isArrayIteratorMethod(iterFn)) {\\n      for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\\n        result = callFn(iterable[index]);\\n        if (result && isPrototypeOf(ResultPrototype, result)) return result;\\n      } return new Result(false);\\n    }\\n    iterator = getIterator(iterable, iterFn);\\n  }\\n\\n  next = IS_RECORD ? iterable.next : iterator.next;\\n  while (!(step = call(next, iterator)).done) {\\n    try {\\n      result = callFn(step.value);\\n    } catch (error) {\\n      iteratorClose(iterator, 'throw', error);\\n    }\\n    if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\\n  } return new Result(false);\\n};\\n\",\"'use strict';\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\nvar isSymbol = require('..\u002Finternals\u002Fis-symbol');\\nvar getMethod = require('..\u002Finternals\u002Fget-method');\\nvar ordinaryToPrimitive = require('..\u002Finternals\u002Fordinary-to-primitive');\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\n\\nvar $TypeError = TypeError;\\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\\n\\n\u002F\u002F `ToPrimitive` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-toprimitive\\nmodule.exports = function (input, pref) {\\n  if (!isObject(input) || isSymbol(input)) return input;\\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\\n  var result;\\n  if (exoticToPrim) {\\n    if (pref === undefined) pref = 'default';\\n    result = call(exoticToPrim, input, pref);\\n    if (!isObject(result) || isSymbol(result)) return result;\\n    throw new $TypeError(\\\"Can't convert object to primitive value\\\");\\n  }\\n  if (pref === undefined) pref = 'number';\\n  return ordinaryToPrimitive(input, pref);\\n};\\n\",\"'use strict';\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar toObject = require('..\u002Finternals\u002Fto-object');\\nvar sharedKey = require('..\u002Finternals\u002Fshared-key');\\nvar CORRECT_PROTOTYPE_GETTER = require('..\u002Finternals\u002Fcorrect-prototype-getter');\\n\\nvar IE_PROTO = sharedKey('IE_PROTO');\\nvar $Object = Object;\\nvar ObjectPrototype = $Object.prototype;\\n\\n\u002F\u002F `Object.getPrototypeOf` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.getprototypeof\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getprototypeof -- safe\\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\\n  var object = toObject(O);\\n  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\\n  var constructor = object.constructor;\\n  if (isCallable(constructor) && object instanceof constructor) {\\n    return constructor.prototype;\\n  } return object instanceof $Object ? ObjectPrototype : null;\\n};\\n\",\"'use strict';\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\n\\nvar replacement = \u002F#|\\\\.prototype\\\\.\u002F;\\n\\nvar isForced = function (feature, detection) {\\n  var value = data[normalize(feature)];\\n  return value === POLYFILL ? true\\n    : value === NATIVE ? false\\n    : isCallable(detection) ? fails(detection)\\n    : !!detection;\\n};\\n\\nvar normalize = isForced.normalize = function (string) {\\n  return String(string).replace(replacement, '.').toLowerCase();\\n};\\n\\nvar data = isForced.data = {};\\nvar NATIVE = isForced.NATIVE = 'N';\\nvar POLYFILL = isForced.POLYFILL = 'P';\\n\\nmodule.exports = isForced;\\n\",\"'use strict';\\nvar commonAlphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\\nvar base64Alphabet = commonAlphabet + '+\u002F';\\nvar base64UrlAlphabet = commonAlphabet + '-_';\\n\\nvar inverse = function (characters) {\\n  \u002F\u002F TODO: use `Object.create(null)` in `core-js@4`\\n  var result = {};\\n  var index = 0;\\n  for (; index \u003C 64; index++) result[characters.charAt(index)] = index;\\n  return result;\\n};\\n\\nmodule.exports = {\\n  i2c: base64Alphabet,\\n  c2i: inverse(base64Alphabet),\\n  i2cUrl: base64UrlAlphabet,\\n  c2iUrl: inverse(base64UrlAlphabet)\\n};\\n\",\"'use strict';\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (passed, required) {\\n  if (passed \u003C required) throw new $TypeError('Not enough arguments');\\n  return passed;\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\n\\nvar navigator = globalThis.navigator;\\nvar userAgent = navigator && navigator.userAgent;\\n\\nmodule.exports = userAgent ? String(userAgent) : '';\\n\",\"'use strict';\\n\u002F* eslint-disable no-proto -- safe *\u002F\\nvar uncurryThisAccessor = require('..\u002Finternals\u002Ffunction-uncurry-this-accessor');\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\nvar requireObjectCoercible = require('..\u002Finternals\u002Frequire-object-coercible');\\nvar aPossiblePrototype = require('..\u002Finternals\u002Fa-possible-prototype');\\n\\n\u002F\u002F `Object.setPrototypeOf` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.setprototypeof\\n\u002F\u002F Works with __proto__ only. Old v8 can't work with null proto objects.\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-setprototypeof -- safe\\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\\n  var CORRECT_SETTER = false;\\n  var test = {};\\n  var setter;\\n  try {\\n    setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\\n    setter(test, []);\\n    CORRECT_SETTER = test instanceof Array;\\n  } catch (error) { \u002F* empty *\u002F }\\n  return function setPrototypeOf(O, proto) {\\n    requireObjectCoercible(O);\\n    aPossiblePrototype(proto);\\n    if (!isObject(O)) return O;\\n    if (CORRECT_SETTER) setter(O, proto);\\n    else O.__proto__ = proto;\\n    return O;\\n  };\\n}() : undefined);\\n\",\"'use strict';\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\nvar setPrototypeOf = require('..\u002Finternals\u002Fobject-set-prototype-of');\\n\\n\u002F\u002F makes subclassing work correct for wrapped built-ins\\nmodule.exports = function ($this, dummy, Wrapper) {\\n  var NewTarget, NewTargetPrototype;\\n  if (\\n    \u002F\u002F it can work only with native `setPrototypeOf`\\n    setPrototypeOf &&\\n    \u002F\u002F we haven't completely correct pre-ES6 way for getting `new.target`, so use this\\n    isCallable(NewTarget = dummy.constructor) &&\\n    NewTarget !== Wrapper &&\\n    isObject(NewTargetPrototype = NewTarget.prototype) &&\\n    NewTargetPrototype !== Wrapper.prototype\\n  ) setPrototypeOf($this, NewTargetPrototype);\\n  return $this;\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar NATIVE_ARRAY_BUFFER = require('..\u002Finternals\u002Farray-buffer-basic-detection');\\nvar arrayBufferByteLength = require('..\u002Finternals\u002Farray-buffer-byte-length');\\n\\nvar DataView = globalThis.DataView;\\n\\nmodule.exports = function (O) {\\n  if (!NATIVE_ARRAY_BUFFER || arrayBufferByteLength(O) !== 0) return false;\\n  try {\\n    \u002F\u002F eslint-disable-next-line no-new -- thrower\\n    new DataView(O);\\n    return false;\\n  } catch (error) {\\n    return true;\\n  }\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\n\\nvar id = 0;\\nvar postfix = Math.random();\\nvar toString = uncurryThis(1.0.toString);\\n\\nmodule.exports = function (key) {\\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\\n};\\n\",\"'use strict';\\nvar aSet = require('..\u002Finternals\u002Fa-set');\\nvar SetHelpers = require('..\u002Finternals\u002Fset-helpers');\\nvar clone = require('..\u002Finternals\u002Fset-clone');\\nvar size = require('..\u002Finternals\u002Fset-size');\\nvar getSetRecord = require('..\u002Finternals\u002Fget-set-record');\\nvar iterateSet = require('..\u002Finternals\u002Fset-iterate');\\nvar iterateSimple = require('..\u002Finternals\u002Fiterate-simple');\\n\\nvar has = SetHelpers.has;\\nvar remove = SetHelpers.remove;\\n\\n\u002F\u002F `Set.prototype.difference` method\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\\nmodule.exports = function difference(other) {\\n  var O = aSet(this);\\n  var otherRec = getSetRecord(other);\\n  var result = clone(O);\\n  if (size(O) \u003C= otherRec.size) iterateSet(O, function (e) {\\n    if (otherRec.includes(e)) remove(result, e);\\n  });\\n  else iterateSimple(otherRec.getIterator(), function (e) {\\n    if (has(O, e)) remove(result, e);\\n  });\\n  return result;\\n};\\n\",\"'use strict';\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (argument) {\\n  if (typeof argument == 'string') return argument;\\n  throw new $TypeError('Argument is not a string');\\n};\\n\",\"'use strict';\\nvar isPossiblePrototype = require('..\u002Finternals\u002Fis-possible-prototype');\\n\\nvar $String = String;\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (argument) {\\n  if (isPossiblePrototype(argument)) return argument;\\n  throw new $TypeError(\\\"Can't set \\\" + $String(argument) + ' as a prototype');\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar iterate = require('..\u002Finternals\u002Fiterate');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar getIteratorDirect = require('..\u002Finternals\u002Fget-iterator-direct');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\nvar iteratorHelperWithoutClosingOnEarlyError = require('..\u002Finternals\u002Fiterator-helper-without-closing-on-early-error');\\n\\nvar someWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('some', TypeError);\\n\\n\u002F\u002F `Iterator.prototype.some` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.some\\n$({ target: 'Iterator', proto: true, real: true, forced: someWithoutClosingOnEarlyError }, {\\n  some: function some(predicate) {\\n    anObject(this);\\n    try {\\n      aCallable(predicate);\\n    } catch (error) {\\n      iteratorClose(this, 'throw', error);\\n    }\\n\\n    if (someWithoutClosingOnEarlyError) return call(someWithoutClosingOnEarlyError, this, predicate);\\n\\n    var record = getIteratorDirect(this);\\n    var counter = 0;\\n    return iterate(record, function (value, stop) {\\n      if (predicate(value, counter++)) return stop();\\n    }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\\n  }\\n});\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar defineBuiltInAccessor = require('..\u002Finternals\u002Fdefine-built-in-accessor');\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\n\\nvar $TypeError = TypeError;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\\nvar defineProperty = Object.defineProperty;\\nvar INCORRECT_VALUE = globalThis.self !== globalThis;\\n\\n\u002F\u002F `self` getter\\n\u002F\u002F https:\u002F\u002Fhtml.spec.whatwg.org\u002Fmultipage\u002Fwindow-object.html#dom-self\\ntry {\\n  if (DESCRIPTORS) {\\n    \u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\n    var descriptor = Object.getOwnPropertyDescriptor(globalThis, 'self');\\n    \u002F\u002F some engines have `self`, but with incorrect descriptor\\n    \u002F\u002F https:\u002F\u002Fgithub.com\u002Fdenoland\u002Fdeno\u002Fissues\u002F15765\\n    if (INCORRECT_VALUE || !descriptor || !descriptor.get || !descriptor.enumerable) {\\n      defineBuiltInAccessor(globalThis, 'self', {\\n        get: function self() {\\n          return globalThis;\\n        },\\n        set: function self(value) {\\n          if (this !== globalThis) throw new $TypeError('Illegal invocation');\\n          defineProperty(globalThis, 'self', {\\n            value: value,\\n            writable: true,\\n            configurable: true,\\n            enumerable: true\\n          });\\n        },\\n        configurable: true,\\n        enumerable: true\\n      });\\n    }\\n  } else $({ global: true, simple: true, forced: INCORRECT_VALUE }, {\\n    self: globalThis\\n  });\\n} catch (error) { \u002F* empty *\u002F }\\n\",\"'use strict';\\nvar aSet = require('..\u002Finternals\u002Fa-set');\\nvar SetHelpers = require('..\u002Finternals\u002Fset-helpers');\\nvar clone = require('..\u002Finternals\u002Fset-clone');\\nvar getSetRecord = require('..\u002Finternals\u002Fget-set-record');\\nvar iterateSimple = require('..\u002Finternals\u002Fiterate-simple');\\n\\nvar add = SetHelpers.add;\\nvar has = SetHelpers.has;\\nvar remove = SetHelpers.remove;\\n\\n\u002F\u002F `Set.prototype.symmetricDifference` method\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\\nmodule.exports = function symmetricDifference(other) {\\n  var O = aSet(this);\\n  var keysIter = getSetRecord(other).getIterator();\\n  var result = clone(O);\\n  iterateSimple(keysIter, function (e) {\\n    if (has(O, e)) remove(result, e);\\n    else add(result, e);\\n  });\\n  return result;\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar store = require('..\u002Finternals\u002Fshared-store');\\n\\nvar functionToString = uncurryThis(Function.toString);\\n\\n\u002F\u002F this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\\nif (!isCallable(store.inspectSource)) {\\n  store.inspectSource = function (it) {\\n    return functionToString(it);\\n  };\\n}\\n\\nmodule.exports = store.inspectSource;\\n\",\"'use strict';\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertysymbols -- safe\\nexports.f = Object.getOwnPropertySymbols;\\n\",\"'use strict';\\nvar fails = require('..\u002Finternals\u002Ffails');\\n\\n\u002F\u002F Detect IE8's incomplete defineProperty implementation\\nmodule.exports = !fails(function () {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- required for testing\\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\\n});\\n\",\"'use strict';\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar toIntegerOrInfinity = require('..\u002Finternals\u002Fto-integer-or-infinity');\\nvar getIteratorDirect = require('..\u002Finternals\u002Fget-iterator-direct');\\n\\nvar INVALID_SIZE = 'Invalid size';\\nvar $RangeError = RangeError;\\nvar $TypeError = TypeError;\\nvar max = Math.max;\\n\\nvar SetRecord = function (set, intSize) {\\n  this.set = set;\\n  this.size = max(intSize, 0);\\n  this.has = aCallable(set.has);\\n  this.keys = aCallable(set.keys);\\n};\\n\\nSetRecord.prototype = {\\n  getIterator: function () {\\n    return getIteratorDirect(anObject(call(this.keys, this.set)));\\n  },\\n  includes: function (it) {\\n    return call(this.has, this.set, it);\\n  }\\n};\\n\\n\u002F\u002F `GetSetRecord` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-set-methods\u002F#sec-getsetrecord\\nmodule.exports = function (obj) {\\n  anObject(obj);\\n  var numSize = +obj.size;\\n  \u002F\u002F NOTE: If size is undefined, then numSize will be NaN\\n  \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\\n  if (numSize !== numSize) throw new $TypeError(INVALID_SIZE);\\n  var intSize = toIntegerOrInfinity(numSize);\\n  if (intSize \u003C 0) throw new $RangeError(INVALID_SIZE);\\n  return new SetRecord(obj, intSize);\\n};\\n\",\"'use strict';\\nvar aSet = require('..\u002Finternals\u002Fa-set');\\nvar size = require('..\u002Finternals\u002Fset-size');\\nvar iterate = require('..\u002Finternals\u002Fset-iterate');\\nvar getSetRecord = require('..\u002Finternals\u002Fget-set-record');\\n\\n\u002F\u002F `Set.prototype.isSubsetOf` method\\n\u002F\u002F https:\u002F\u002Ftc39.github.io\u002Fproposal-set-methods\u002F#Set.prototype.isSubsetOf\\nmodule.exports = function isSubsetOf(other) {\\n  var O = aSet(this);\\n  var otherRec = getSetRecord(other);\\n  if (size(O) > otherRec.size) return false;\\n  return iterate(O, function (e) {\\n    if (!otherRec.includes(e)) return false;\\n  }, true) !== false;\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar isDisjointFrom = require('..\u002Finternals\u002Fset-is-disjoint-from');\\nvar setMethodAcceptSetLike = require('..\u002Finternals\u002Fset-method-accept-set-like');\\n\\nvar INCORRECT = !setMethodAcceptSetLike('isDisjointFrom', function (result) {\\n  return !result;\\n});\\n\\n\u002F\u002F `Set.prototype.isDisjointFrom` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.isdisjointfrom\\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\\n  isDisjointFrom: isDisjointFrom\\n});\\n\",\"'use strict';\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\n\\nmodule.exports = function (argument) {\\n  return isObject(argument) || argument === null;\\n};\\n\",\"'use strict';\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\n\\nvar $String = String;\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (argument) {\\n  if (argument === undefined || isObject(argument)) return argument;\\n  throw new $TypeError($String(argument) + ' is not an object or undefined');\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\n\\nvar document = globalThis.document;\\n\u002F\u002F typeof document.createElement is 'object' in old IE\\nvar EXISTS = isObject(document) && isObject(document.createElement);\\n\\nmodule.exports = function (it) {\\n  return EXISTS ? document.createElement(it) : {};\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar toObject = require('..\u002Finternals\u002Fto-object');\\nvar lengthOfArrayLike = require('..\u002Finternals\u002Flength-of-array-like');\\nvar setArrayLength = require('..\u002Finternals\u002Farray-set-length');\\nvar doesNotExceedSafeInteger = require('..\u002Finternals\u002Fdoes-not-exceed-safe-integer');\\nvar fails = require('..\u002Finternals\u002Ffails');\\n\\nvar INCORRECT_TO_LENGTH = fails(function () {\\n  return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\\n});\\n\\n\u002F\u002F V8 \u003C= 121 and Safari \u003C= 15.4; FF \u003C 23 throws InternalError\\n\u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=12681\\nvar properErrorOnNonWritableLength = function () {\\n  try {\\n    \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\\n    Object.defineProperty([], 'length', { writable: false }).push();\\n  } catch (error) {\\n    return error instanceof TypeError;\\n  }\\n};\\n\\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\\n\\n\u002F\u002F `Array.prototype.push` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-array.prototype.push\\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\\n  \u002F\u002F eslint-disable-next-line no-unused-vars -- required for `.length`\\n  push: function push(item) {\\n    var O = toObject(this);\\n    var len = lengthOfArrayLike(O);\\n    var argCount = arguments.length;\\n    doesNotExceedSafeInteger(len + argCount);\\n    for (var i = 0; i \u003C argCount; i++) {\\n      O[len] = arguments[i];\\n      len++;\\n    }\\n    setArrayLength(O, len);\\n    return len;\\n  }\\n});\\n\",\"'use strict';\\n\u002F\u002F we can't use just `it == null` since of `document.all` special case\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-IsHTMLDDA-internal-slot-aec\\nmodule.exports = function (it) {\\n  return it === null || it === undefined;\\n};\\n\",\"'use strict';\\nvar classof = require('..\u002Finternals\u002Fclassof');\\n\\nvar $TypeError = TypeError;\\n\\n\u002F\u002F Perform ? RequireInternalSlot(argument, [[TypedArrayName]])\\n\u002F\u002F If argument.[[TypedArrayName]] is not \\\"Uint8Array\\\", throw a TypeError exception\\nmodule.exports = function (argument) {\\n  if (classof(argument) === 'Uint8Array') return argument;\\n  throw new $TypeError('Argument is not an Uint8Array');\\n};\\n\",\"'use strict';\\nvar aSet = require('..\u002Finternals\u002Fa-set');\\nvar add = require('..\u002Finternals\u002Fset-helpers').add;\\nvar clone = require('..\u002Finternals\u002Fset-clone');\\nvar getSetRecord = require('..\u002Finternals\u002Fget-set-record');\\nvar iterateSimple = require('..\u002Finternals\u002Fiterate-simple');\\n\\n\u002F\u002F `Set.prototype.union` method\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\\nmodule.exports = function union(other) {\\n  var O = aSet(this);\\n  var keysIter = getSetRecord(other).getIterator();\\n  var result = clone(O);\\n  iterateSimple(keysIter, function (it) {\\n    add(result, it);\\n  });\\n  return result;\\n};\\n\",\"'use strict';\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\nvar Iterators = require('..\u002Finternals\u002Fiterators');\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\nvar ArrayPrototype = Array.prototype;\\n\\n\u002F\u002F check on default Array iterator\\nmodule.exports = function (it) {\\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\\n};\\n\",\"'use strict';\\n\u002F* global Bun, Deno -- detection *\u002F\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar userAgent = require('..\u002Finternals\u002Fenvironment-user-agent');\\nvar classof = require('..\u002Finternals\u002Fclassof-raw');\\n\\nvar userAgentStartsWith = function (string) {\\n  return userAgent.slice(0, string.length) === string;\\n};\\n\\nmodule.exports = (function () {\\n  if (userAgentStartsWith('Bun\u002F')) return 'BUN';\\n  if (userAgentStartsWith('Cloudflare-Workers')) return 'CLOUDFLARE';\\n  if (userAgentStartsWith('Deno\u002F')) return 'DENO';\\n  if (userAgentStartsWith('Node.js\u002F')) return 'NODE';\\n  if (globalThis.Bun && typeof Bun.version == 'string') return 'BUN';\\n  if (globalThis.Deno && typeof Deno.version == 'object') return 'DENO';\\n  if (classof(globalThis.process) === 'process') return 'NODE';\\n  if (globalThis.window && globalThis.document) return 'BROWSER';\\n  return 'REST';\\n})();\\n\",\"'use strict';\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\n\\nvar $TypeError = TypeError;\\n\\n\u002F\u002F `OrdinaryToPrimitive` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-ordinarytoprimitive\\nmodule.exports = function (input, pref) {\\n  var fn, val;\\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\\n  throw new $TypeError(\\\"Can't convert object to primitive value\\\");\\n};\\n\",\"'use strict';\\nvar classof = require('..\u002Finternals\u002Fclassof-raw');\\n\\n\u002F\u002F `IsArray` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-isarray\\n\u002F\u002F eslint-disable-next-line es\u002Fno-array-isarray -- safe\\nmodule.exports = Array.isArray || function isArray(argument) {\\n  return classof(argument) === 'Array';\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\n\\n\u002F\u002F eslint-disable-next-line es\u002Fno-set -- safe\\nvar SetPrototype = Set.prototype;\\n\\nmodule.exports = {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-set -- safe\\n  Set: Set,\\n  add: uncurryThis(SetPrototype.add),\\n  has: uncurryThis(SetPrototype.has),\\n  remove: uncurryThis(SetPrototype['delete']),\\n  proto: SetPrototype\\n};\\n\",\"'use strict';\\nvar aSet = require('..\u002Finternals\u002Fa-set');\\nvar has = require('..\u002Finternals\u002Fset-helpers').has;\\nvar size = require('..\u002Finternals\u002Fset-size');\\nvar getSetRecord = require('..\u002Finternals\u002Fget-set-record');\\nvar iterateSet = require('..\u002Finternals\u002Fset-iterate');\\nvar iterateSimple = require('..\u002Finternals\u002Fiterate-simple');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\n\\n\u002F\u002F `Set.prototype.isDisjointFrom` method\\n\u002F\u002F https:\u002F\u002Ftc39.github.io\u002Fproposal-set-methods\u002F#Set.prototype.isDisjointFrom\\nmodule.exports = function isDisjointFrom(other) {\\n  var O = aSet(this);\\n  var otherRec = getSetRecord(other);\\n  if (size(O) \u003C= otherRec.size) return iterateSet(O, function (e) {\\n    if (otherRec.includes(e)) return false;\\n  }, true) !== false;\\n  var iterator = otherRec.getIterator();\\n  return iterateSimple(iterator, function (e) {\\n    if (has(O, e)) return iteratorClose(iterator, 'normal', false);\\n  }) !== false;\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar getBuiltInNodeModule = require('..\u002Finternals\u002Fget-built-in-node-module');\\nvar PROPER_STRUCTURED_CLONE_TRANSFER = require('..\u002Finternals\u002Fstructured-clone-proper-transfer');\\n\\nvar structuredClone = globalThis.structuredClone;\\nvar $ArrayBuffer = globalThis.ArrayBuffer;\\nvar $MessageChannel = globalThis.MessageChannel;\\nvar detach = false;\\nvar WorkerThreads, channel, buffer, $detach;\\n\\nif (PROPER_STRUCTURED_CLONE_TRANSFER) {\\n  detach = function (transferable) {\\n    structuredClone(transferable, { transfer: [transferable] });\\n  };\\n} else if ($ArrayBuffer) try {\\n  if (!$MessageChannel) {\\n    WorkerThreads = getBuiltInNodeModule('worker_threads');\\n    if (WorkerThreads) $MessageChannel = WorkerThreads.MessageChannel;\\n  }\\n\\n  if ($MessageChannel) {\\n    channel = new $MessageChannel();\\n    buffer = new $ArrayBuffer(2);\\n\\n    $detach = function (transferable) {\\n      channel.port1.postMessage(null, [transferable]);\\n    };\\n\\n    if (buffer.byteLength === 2) {\\n      $detach(buffer);\\n      if (buffer.byteLength === 0) detach = $detach;\\n    }\\n  }\\n} catch (error) { \u002F* empty *\u002F }\\n\\nmodule.exports = detach;\\n\",\"'use strict';\\n\u002F* eslint-disable es\u002Fno-symbol -- required for testing *\u002F\\nvar V8_VERSION = require('..\u002Finternals\u002Fenvironment-v8-version');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\n\\nvar $String = globalThis.String;\\n\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertysymbols -- required for testing\\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\\n  var symbol = Symbol('symbol detection');\\n  \u002F\u002F Chrome 38 Symbol has incorrect toString conversion\\n  \u002F\u002F `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\\n  \u002F\u002F nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\\n  \u002F\u002F of course, fail.\\n  return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\\n    \u002F\u002F Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\\n    !Symbol.sham && V8_VERSION && V8_VERSION \u003C 41;\\n});\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar isArray = require('..\u002Finternals\u002Fis-array');\\n\\nvar $TypeError = TypeError;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\n\\n\u002F\u002F Safari \u003C 13 does not throw an error in this case\\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\\n  \u002F\u002F makes no sense without proper strict mode support\\n  if (this !== undefined) return true;\\n  try {\\n    \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\\n    Object.defineProperty([], 'length', { writable: false }).length = 1;\\n  } catch (error) {\\n    return error instanceof TypeError;\\n  }\\n}();\\n\\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\\n  if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\\n    throw new $TypeError('Cannot set read only .length');\\n  } return O.length = length;\\n} : function (O, length) {\\n  return O.length = length;\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\n\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fecma262\u002Fpull\u002F3467\\nmodule.exports = function (METHOD_NAME, ExpectedError) {\\n  var Iterator = globalThis.Iterator;\\n  var IteratorPrototype = Iterator && Iterator.prototype;\\n  var method = IteratorPrototype && IteratorPrototype[METHOD_NAME];\\n\\n  var CLOSED = false;\\n\\n  if (method) try {\\n    method.call({\\n      next: function () { return { done: true }; },\\n      'return': function () { CLOSED = true; }\\n    }, -1);\\n  } catch (error) {\\n    \u002F\u002F https:\u002F\u002Fbugs.webkit.org\u002Fshow_bug.cgi?id=291195\\n    if (!(error instanceof ExpectedError)) CLOSED = false;\\n  }\\n\\n  if (!CLOSED) return method;\\n};\\n\",\"'use strict';\\nvar check = function (it) {\\n  return it && it.Math === Math && it;\\n};\\n\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F86#issuecomment-115759028\\nmodule.exports =\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-global-this -- safe\\n  check(typeof globalThis == 'object' && globalThis) ||\\n  check(typeof window == 'object' && window) ||\\n  \u002F\u002F eslint-disable-next-line no-restricted-globals -- safe\\n  check(typeof self == 'object' && self) ||\\n  check(typeof global == 'object' && global) ||\\n  check(typeof this == 'object' && this) ||\\n  \u002F\u002F eslint-disable-next-line no-new-func -- fallback\\n  (function () { return this; })() || Function('return this')();\\n\",\"'use strict';\\nvar defineBuiltIn = require('..\u002Finternals\u002Fdefine-built-in');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar toString = require('..\u002Finternals\u002Fto-string');\\nvar validateArgumentsLength = require('..\u002Finternals\u002Fvalidate-arguments-length');\\n\\nvar $URLSearchParams = URLSearchParams;\\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\\nvar append = uncurryThis(URLSearchParamsPrototype.append);\\nvar $delete = uncurryThis(URLSearchParamsPrototype['delete']);\\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\\nvar push = uncurryThis([].push);\\nvar params = new $URLSearchParams('a=1&a=2&b=3');\\n\\nparams['delete']('a', 1);\\n\u002F\u002F `undefined` case is a Chromium 117 bug\\n\u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=14222\\nparams['delete']('b', undefined);\\n\\nif (params + '' !== 'a=2') {\\n  defineBuiltIn(URLSearchParamsPrototype, 'delete', function (name \u002F* , value *\u002F) {\\n    var length = arguments.length;\\n    var $value = length \u003C 2 ? undefined : arguments[1];\\n    if (length && $value === undefined) return $delete(this, name);\\n    var entries = [];\\n    forEach(this, function (v, k) { \u002F\u002F also validates `this`\\n      push(entries, { key: k, value: v });\\n    });\\n    validateArgumentsLength(length, 1);\\n    var key = toString(name);\\n    var value = toString($value);\\n    var index = 0;\\n    var dindex = 0;\\n    var found = false;\\n    var entriesLength = entries.length;\\n    var entry;\\n    while (index \u003C entriesLength) {\\n      entry = entries[index++];\\n      if (found || entry.key === key) {\\n        found = true;\\n        $delete(this, entry.key);\\n      } else dindex++;\\n    }\\n    while (dindex \u003C entriesLength) {\\n      entry = entries[dindex++];\\n      if (!(entry.key === key && entry.value === value)) append(this, entry.key, entry.value);\\n    }\\n  }, { enumerable: true, unsafe: true });\\n}\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar newPromiseCapabilityModule = require('..\u002Finternals\u002Fnew-promise-capability');\\n\\n\u002F\u002F `Promise.withResolvers` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-promise.withResolvers\\n$({ target: 'Promise', stat: true }, {\\n  withResolvers: function withResolvers() {\\n    var promiseCapability = newPromiseCapabilityModule.f(this);\\n    return {\\n      promise: promiseCapability.promise,\\n      resolve: promiseCapability.resolve,\\n      reject: promiseCapability.reject\\n    };\\n  }\\n});\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar definePropertyModule = require('..\u002Finternals\u002Fobject-define-property');\\nvar createPropertyDescriptor = require('..\u002Finternals\u002Fcreate-property-descriptor');\\n\\nmodule.exports = function (object, key, value) {\\n  if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));\\n  else object[key] = value;\\n};\\n\",\"'use strict';\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-IsHTMLDDA-internal-slot\\nvar documentAll = typeof document == 'object' && document.all;\\n\\n\u002F\u002F `IsCallable` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iscallable\\n\u002F\u002F eslint-disable-next-line unicorn\u002Fno-typeof-undefined -- required for testing\\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\\n  return typeof argument == 'function' || argument === documentAll;\\n} : function (argument) {\\n  return typeof argument == 'function';\\n};\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar IE8_DOM_DEFINE = require('..\u002Finternals\u002Fie8-dom-define');\\nvar V8_PROTOTYPE_DEFINE_BUG = require('..\u002Finternals\u002Fv8-prototype-define-bug');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar toPropertyKey = require('..\u002Finternals\u002Fto-property-key');\\n\\nvar $TypeError = TypeError;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\\nvar $defineProperty = Object.defineProperty;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\nvar ENUMERABLE = 'enumerable';\\nvar CONFIGURABLE = 'configurable';\\nvar WRITABLE = 'writable';\\n\\n\u002F\u002F `Object.defineProperty` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.defineproperty\\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\\n  anObject(O);\\n  P = toPropertyKey(P);\\n  anObject(Attributes);\\n  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\\n    var current = $getOwnPropertyDescriptor(O, P);\\n    if (current && current[WRITABLE]) {\\n      O[P] = Attributes.value;\\n      Attributes = {\\n        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\\n        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\\n        writable: false\\n      };\\n    }\\n  } return $defineProperty(O, P, Attributes);\\n} : $defineProperty : function defineProperty(O, P, Attributes) {\\n  anObject(O);\\n  P = toPropertyKey(P);\\n  anObject(Attributes);\\n  if (IE8_DOM_DEFINE) try {\\n    return $defineProperty(O, P, Attributes);\\n  } catch (error) { \u002F* empty *\u002F }\\n  if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\\n  if ('value' in Attributes) O[P] = Attributes.value;\\n  return O;\\n};\\n\",\"'use strict';\\nvar getBuiltIn = require('..\u002Finternals\u002Fget-built-in');\\n\\nvar createSetLike = function (size) {\\n  return {\\n    size: size,\\n    has: function () {\\n      return false;\\n    },\\n    keys: function () {\\n      return {\\n        next: function () {\\n          return { done: true };\\n        }\\n      };\\n    }\\n  };\\n};\\n\\nvar createSetLikeWithInfinitySize = function (size) {\\n  return {\\n    size: size,\\n    has: function () {\\n      return true;\\n    },\\n    keys: function () {\\n      throw new Error('e');\\n    }\\n  };\\n};\\n\\nmodule.exports = function (name, callback) {\\n  var Set = getBuiltIn('Set');\\n  try {\\n    new Set()[name](createSetLike(0));\\n    try {\\n      \u002F\u002F late spec change, early WebKit ~ Safari 17 implementation does not pass it\\n      \u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\u002Fpull\u002F88\\n      \u002F\u002F also covered engines with\\n      \u002F\u002F https:\u002F\u002Fbugs.webkit.org\u002Fshow_bug.cgi?id=272679\\n      new Set()[name](createSetLike(-1));\\n      return false;\\n    } catch (error2) {\\n      if (!callback) return true;\\n      \u002F\u002F early V8 implementation bug\\n      \u002F\u002F https:\u002F\u002Fissues.chromium.org\u002Fissues\u002F351332634\\n      try {\\n        new Set()[name](createSetLikeWithInfinitySize(-Infinity));\\n        return false;\\n      } catch (error) {\\n        var set = new Set();\\n        set.add(1);\\n        set.add(2);\\n        return callback(set[name](createSetLikeWithInfinitySize(Infinity)));\\n      }\\n    }\\n  } catch (error) {\\n    return false;\\n  }\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar getBuiltIn = require('..\u002Finternals\u002Fget-built-in');\\nvar createPropertyDescriptor = require('..\u002Finternals\u002Fcreate-property-descriptor');\\nvar defineProperty = require('..\u002Finternals\u002Fobject-define-property').f;\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar anInstance = require('..\u002Finternals\u002Fan-instance');\\nvar inheritIfRequired = require('..\u002Finternals\u002Finherit-if-required');\\nvar normalizeStringArgument = require('..\u002Finternals\u002Fnormalize-string-argument');\\nvar DOMExceptionConstants = require('..\u002Finternals\u002Fdom-exception-constants');\\nvar clearErrorStack = require('..\u002Finternals\u002Ferror-stack-clear');\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar IS_PURE = require('..\u002Finternals\u002Fis-pure');\\n\\nvar DOM_EXCEPTION = 'DOMException';\\nvar Error = getBuiltIn('Error');\\nvar NativeDOMException = getBuiltIn(DOM_EXCEPTION);\\n\\nvar $DOMException = function DOMException() {\\n  anInstance(this, DOMExceptionPrototype);\\n  var argumentsLength = arguments.length;\\n  var message = normalizeStringArgument(argumentsLength \u003C 1 ? undefined : arguments[0]);\\n  var name = normalizeStringArgument(argumentsLength \u003C 2 ? undefined : arguments[1], 'Error');\\n  var that = new NativeDOMException(message, name);\\n  var error = new Error(message);\\n  error.name = DOM_EXCEPTION;\\n  defineProperty(that, 'stack', createPropertyDescriptor(1, clearErrorStack(error.stack, 1)));\\n  inheritIfRequired(that, this, $DOMException);\\n  return that;\\n};\\n\\nvar DOMExceptionPrototype = $DOMException.prototype = NativeDOMException.prototype;\\n\\nvar ERROR_HAS_STACK = 'stack' in new Error(DOM_EXCEPTION);\\nvar DOM_EXCEPTION_HAS_STACK = 'stack' in new NativeDOMException(1, 2);\\n\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar descriptor = NativeDOMException && DESCRIPTORS && Object.getOwnPropertyDescriptor(globalThis, DOM_EXCEPTION);\\n\\n\u002F\u002F Bun ~ 0.1.1 DOMException have incorrect descriptor and we can't redefine it\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002FJarred-Sumner\u002Fbun\u002Fissues\u002F399\\nvar BUGGY_DESCRIPTOR = !!descriptor && !(descriptor.writable && descriptor.configurable);\\n\\nvar FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !BUGGY_DESCRIPTOR && !DOM_EXCEPTION_HAS_STACK;\\n\\n\u002F\u002F `DOMException` constructor patch for `.stack` where it's required\\n\u002F\u002F https:\u002F\u002Fwebidl.spec.whatwg.org\u002F#es-DOMException-specialness\\n$({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { \u002F\u002F TODO: fix export logic\\n  DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException\\n});\\n\\nvar PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);\\nvar PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;\\n\\nif (PolyfilledDOMExceptionPrototype.constructor !== PolyfilledDOMException) {\\n  if (!IS_PURE) {\\n    defineProperty(PolyfilledDOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, PolyfilledDOMException));\\n  }\\n\\n  for (var key in DOMExceptionConstants) if (hasOwn(DOMExceptionConstants, key)) {\\n    var constant = DOMExceptionConstants[key];\\n    var constantName = constant.s;\\n    if (!hasOwn(PolyfilledDOMException, constantName)) {\\n      defineProperty(PolyfilledDOMException, constantName, createPropertyDescriptor(6, constant.c));\\n    }\\n  }\\n}\\n\",\"'use strict';\\nmodule.exports = {\\n  IndexSizeError: { s: 'INDEX_SIZE_ERR', c: 1, m: 1 },\\n  DOMStringSizeError: { s: 'DOMSTRING_SIZE_ERR', c: 2, m: 0 },\\n  HierarchyRequestError: { s: 'HIERARCHY_REQUEST_ERR', c: 3, m: 1 },\\n  WrongDocumentError: { s: 'WRONG_DOCUMENT_ERR', c: 4, m: 1 },\\n  InvalidCharacterError: { s: 'INVALID_CHARACTER_ERR', c: 5, m: 1 },\\n  NoDataAllowedError: { s: 'NO_DATA_ALLOWED_ERR', c: 6, m: 0 },\\n  NoModificationAllowedError: { s: 'NO_MODIFICATION_ALLOWED_ERR', c: 7, m: 1 },\\n  NotFoundError: { s: 'NOT_FOUND_ERR', c: 8, m: 1 },\\n  NotSupportedError: { s: 'NOT_SUPPORTED_ERR', c: 9, m: 1 },\\n  InUseAttributeError: { s: 'INUSE_ATTRIBUTE_ERR', c: 10, m: 1 },\\n  InvalidStateError: { s: 'INVALID_STATE_ERR', c: 11, m: 1 },\\n  SyntaxError: { s: 'SYNTAX_ERR', c: 12, m: 1 },\\n  InvalidModificationError: { s: 'INVALID_MODIFICATION_ERR', c: 13, m: 1 },\\n  NamespaceError: { s: 'NAMESPACE_ERR', c: 14, m: 1 },\\n  InvalidAccessError: { s: 'INVALID_ACCESS_ERR', c: 15, m: 1 },\\n  ValidationError: { s: 'VALIDATION_ERR', c: 16, m: 0 },\\n  TypeMismatchError: { s: 'TYPE_MISMATCH_ERR', c: 17, m: 1 },\\n  SecurityError: { s: 'SECURITY_ERR', c: 18, m: 1 },\\n  NetworkError: { s: 'NETWORK_ERR', c: 19, m: 1 },\\n  AbortError: { s: 'ABORT_ERR', c: 20, m: 1 },\\n  URLMismatchError: { s: 'URL_MISMATCH_ERR', c: 21, m: 1 },\\n  QuotaExceededError: { s: 'QUOTA_EXCEEDED_ERR', c: 22, m: 1 },\\n  TimeoutError: { s: 'TIMEOUT_ERR', c: 23, m: 1 },\\n  InvalidNodeTypeError: { s: 'INVALID_NODE_TYPE_ERR', c: 24, m: 1 },\\n  DataCloneError: { s: 'DATA_CLONE_ERR', c: 25, m: 1 }\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar symmetricDifference = require('..\u002Finternals\u002Fset-symmetric-difference');\\nvar setMethodAcceptSetLike = require('..\u002Finternals\u002Fset-method-accept-set-like');\\n\\n\u002F\u002F `Set.prototype.symmetricDifference` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.symmetricdifference\\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('symmetricDifference') }, {\\n  symmetricDifference: symmetricDifference\\n});\\n\",\"'use strict';\\nvar getBuiltIn = require('..\u002Finternals\u002Fget-built-in');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar getOwnPropertyNamesModule = require('..\u002Finternals\u002Fobject-get-own-property-names');\\nvar getOwnPropertySymbolsModule = require('..\u002Finternals\u002Fobject-get-own-property-symbols');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\n\\nvar concat = uncurryThis([].concat);\\n\\n\u002F\u002F all object keys, includes non-enumerable and symbols\\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\\n  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\\n};\\n\",\"'use strict';\\nvar isDetached = require('..\u002Finternals\u002Farray-buffer-is-detached');\\n\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (it) {\\n  if (isDetached(it)) throw new $TypeError('ArrayBuffer is detached');\\n  return it;\\n};\\n\",\"'use strict';\\nvar uncurryThisAccessor = require('..\u002Finternals\u002Ffunction-uncurry-this-accessor');\\nvar SetHelpers = require('..\u002Finternals\u002Fset-helpers');\\n\\nmodule.exports = uncurryThisAccessor(SetHelpers.proto, 'size', 'get') || function (set) {\\n  return set.size;\\n};\\n\",\"'use strict';\\nvar lengthOfArrayLike = require('..\u002Finternals\u002Flength-of-array-like');\\n\\nmodule.exports = function (Constructor, list, $length) {\\n  var index = 0;\\n  var length = arguments.length > 2 ? $length : lengthOfArrayLike(list);\\n  var result = new Constructor(length);\\n  while (length > index) result[index] = list[index++];\\n  return result;\\n};\\n\",\"'use strict';\\n\u002F\u002F toObject with fallback for non-array-like ES3 strings\\nvar IndexedObject = require('..\u002Finternals\u002Findexed-object');\\nvar requireObjectCoercible = require('..\u002Finternals\u002Frequire-object-coercible');\\n\\nmodule.exports = function (it) {\\n  return IndexedObject(requireObjectCoercible(it));\\n};\\n\",\"'use strict';\\nvar toIntegerOrInfinity = require('..\u002Finternals\u002Fto-integer-or-infinity');\\n\\nvar max = Math.max;\\nvar min = Math.min;\\n\\n\u002F\u002F Helper for a popular repeating case of the spec:\\n\u002F\u002F Let integer be ? ToInteger(index).\\n\u002F\u002F If integer \u003C 0, let result be max((length + integer), 0); else let result be min(integer, length).\\nmodule.exports = function (index, length) {\\n  var integer = toIntegerOrInfinity(index);\\n  return integer \u003C 0 ? max(integer + length, 0) : min(integer, length);\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar anUint8Array = require('..\u002Finternals\u002Fan-uint8-array');\\nvar notDetached = require('..\u002Finternals\u002Farray-buffer-not-detached');\\n\\nvar numberToString = uncurryThis(1.0.toString);\\n\\n\u002F\u002F `Uint8Array.prototype.toHex` method\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-arraybuffer-base64\\nif (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {\\n  toHex: function toHex() {\\n    anUint8Array(this);\\n    notDetached(this.buffer);\\n    var result = '';\\n    for (var i = 0, length = this.length; i \u003C length; i++) {\\n      var hex = numberToString(this[i], 16);\\n      result += hex.length === 1 ? '0' + hex : hex;\\n    }\\n    return result;\\n  }\\n});\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar uncurryThisAccessor = require('..\u002Finternals\u002Ffunction-uncurry-this-accessor');\\nvar toIndex = require('..\u002Finternals\u002Fto-index');\\nvar notDetached = require('..\u002Finternals\u002Farray-buffer-not-detached');\\nvar arrayBufferByteLength = require('..\u002Finternals\u002Farray-buffer-byte-length');\\nvar detachTransferable = require('..\u002Finternals\u002Fdetach-transferable');\\nvar PROPER_STRUCTURED_CLONE_TRANSFER = require('..\u002Finternals\u002Fstructured-clone-proper-transfer');\\n\\nvar structuredClone = globalThis.structuredClone;\\nvar ArrayBuffer = globalThis.ArrayBuffer;\\nvar DataView = globalThis.DataView;\\nvar min = Math.min;\\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\\nvar DataViewPrototype = DataView.prototype;\\nvar slice = uncurryThis(ArrayBufferPrototype.slice);\\nvar isResizable = uncurryThisAccessor(ArrayBufferPrototype, 'resizable', 'get');\\nvar maxByteLength = uncurryThisAccessor(ArrayBufferPrototype, 'maxByteLength', 'get');\\nvar getInt8 = uncurryThis(DataViewPrototype.getInt8);\\nvar setInt8 = uncurryThis(DataViewPrototype.setInt8);\\n\\nmodule.exports = (PROPER_STRUCTURED_CLONE_TRANSFER || detachTransferable) && function (arrayBuffer, newLength, preserveResizability) {\\n  var byteLength = arrayBufferByteLength(arrayBuffer);\\n  var newByteLength = newLength === undefined ? byteLength : toIndex(newLength);\\n  var fixedLength = !isResizable || !isResizable(arrayBuffer);\\n  var newBuffer;\\n  notDetached(arrayBuffer);\\n  if (PROPER_STRUCTURED_CLONE_TRANSFER) {\\n    arrayBuffer = structuredClone(arrayBuffer, { transfer: [arrayBuffer] });\\n    if (byteLength === newByteLength && (preserveResizability || fixedLength)) return arrayBuffer;\\n  }\\n  if (byteLength >= newByteLength && (!preserveResizability || fixedLength)) {\\n    newBuffer = slice(arrayBuffer, 0, newByteLength);\\n  } else {\\n    var options = preserveResizability && !fixedLength && maxByteLength ? { maxByteLength: maxByteLength(arrayBuffer) } : undefined;\\n    newBuffer = new ArrayBuffer(newByteLength, options);\\n    var a = new DataView(arrayBuffer);\\n    var b = new DataView(newBuffer);\\n    var copyLength = min(newByteLength, byteLength);\\n    for (var i = 0; i \u003C copyLength; i++) setInt8(b, i, getInt8(a, i));\\n  }\\n  if (!PROPER_STRUCTURED_CLONE_TRANSFER) detachTransferable(arrayBuffer);\\n  return newBuffer;\\n};\\n\",\"'use strict';\\nvar store = require('..\u002Finternals\u002Fshared-store');\\n\\nmodule.exports = function (key, value) {\\n  return store[key] || (store[key] = value || {});\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar getBuiltIn = require('..\u002Finternals\u002Fget-built-in');\\nvar validateArgumentsLength = require('..\u002Finternals\u002Fvalidate-arguments-length');\\nvar toString = require('..\u002Finternals\u002Fto-string');\\nvar USE_NATIVE_URL = require('..\u002Finternals\u002Furl-constructor-detection');\\n\\nvar URL = getBuiltIn('URL');\\n\\n\u002F\u002F `URL.parse` method\\n\u002F\u002F https:\u002F\u002Furl.spec.whatwg.org\u002F#dom-url-canparse\\n$({ target: 'URL', stat: true, forced: !USE_NATIVE_URL }, {\\n  parse: function parse(url) {\\n    var length = validateArgumentsLength(arguments.length, 1);\\n    var urlString = toString(url);\\n    var base = length \u003C 2 || arguments[1] === undefined ? undefined : toString(arguments[1]);\\n    try {\\n      return new URL(urlString, base);\\n    } catch (error) {\\n      return null;\\n    }\\n  }\\n});\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar isSubsetOf = require('..\u002Finternals\u002Fset-is-subset-of');\\nvar setMethodAcceptSetLike = require('..\u002Finternals\u002Fset-method-accept-set-like');\\n\\nvar INCORRECT = !setMethodAcceptSetLike('isSubsetOf', function (result) {\\n  return result;\\n});\\n\\n\u002F\u002F `Set.prototype.isSubsetOf` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.issubsetof\\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\\n  isSubsetOf: isSubsetOf\\n});\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar createElement = require('..\u002Finternals\u002Fdocument-create-element');\\n\\n\u002F\u002F Thanks to IE8 for its funny defineProperty\\nmodule.exports = !DESCRIPTORS && !fails(function () {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- required for testing\\n  return Object.defineProperty(createElement('div'), 'a', {\\n    get: function () { return 7; }\\n  }).a !== 7;\\n});\\n\",\"'use strict';\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar isNullOrUndefined = require('..\u002Finternals\u002Fis-null-or-undefined');\\n\\n\u002F\u002F `GetMethod` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-getmethod\\nmodule.exports = function (V, P) {\\n  var func = V[P];\\n  return isNullOrUndefined(func) ? undefined : aCallable(func);\\n};\\n\",\"'use strict';\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\n\\nvar $TypeError = TypeError;\\n\\nvar PromiseCapability = function (C) {\\n  var resolve, reject;\\n  this.promise = new C(function ($$resolve, $$reject) {\\n    if (resolve !== undefined || reject !== undefined) throw new $TypeError('Bad Promise constructor');\\n    resolve = $$resolve;\\n    reject = $$reject;\\n  });\\n  this.resolve = aCallable(resolve);\\n  this.reject = aCallable(reject);\\n};\\n\\n\u002F\u002F `NewPromiseCapability` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-newpromisecapability\\nmodule.exports.f = function (C) {\\n  return new PromiseCapability(C);\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this-clause');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar NATIVE_BIND = require('..\u002Finternals\u002Ffunction-bind-native');\\n\\nvar bind = uncurryThis(uncurryThis.bind);\\n\\n\u002F\u002F optional \u002F simple context binding\\nmodule.exports = function (fn, that) {\\n  aCallable(fn);\\n  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (\u002F* ...args *\u002F) {\\n    return fn.apply(that, arguments);\\n  };\\n};\\n\",\"'use strict';\\nvar shared = require('..\u002Finternals\u002Fshared');\\nvar uid = require('..\u002Finternals\u002Fuid');\\n\\nvar keys = shared('keys');\\n\\nmodule.exports = function (key) {\\n  return keys[key] || (keys[key] = uid(key));\\n};\\n\",\"'use strict';\\nvar ENVIRONMENT = require('..\u002Finternals\u002Fenvironment');\\n\\nmodule.exports = ENVIRONMENT === 'NODE';\\n\",\"'use strict';\\nvar toLength = require('..\u002Finternals\u002Fto-length');\\n\\n\u002F\u002F `LengthOfArrayLike` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-lengthofarraylike\\nmodule.exports = function (obj) {\\n  return toLength(obj.length);\\n};\\n\",\"'use strict';\\nmodule.exports = {};\\n\",\"'use strict';\\nvar defineBuiltIn = require('..\u002Finternals\u002Fdefine-built-in');\\n\\nmodule.exports = function (target, src, options) {\\n  for (var key in src) defineBuiltIn(target, key, src[key], options);\\n  return target;\\n};\\n\",\"'use strict';\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\n\\n\u002F\u002F call something on iterator step with safe closing on error\\nmodule.exports = function (iterator, fn, value, ENTRIES) {\\n  try {\\n    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\\n  } catch (error) {\\n    iteratorClose(iterator, 'throw', error);\\n  }\\n};\\n\",\"'use strict';\\nmodule.exports = false;\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar getOwnPropertyDescriptor = require('..\u002Finternals\u002Fobject-get-own-property-descriptor').f;\\nvar createNonEnumerableProperty = require('..\u002Finternals\u002Fcreate-non-enumerable-property');\\nvar defineBuiltIn = require('..\u002Finternals\u002Fdefine-built-in');\\nvar defineGlobalProperty = require('..\u002Finternals\u002Fdefine-global-property');\\nvar copyConstructorProperties = require('..\u002Finternals\u002Fcopy-constructor-properties');\\nvar isForced = require('..\u002Finternals\u002Fis-forced');\\n\\n\u002F*\\n  options.target         - name of the target object\\n  options.global         - target is the global object\\n  options.stat           - export as static methods of target\\n  options.proto          - export as prototype methods of target\\n  options.real           - real prototype method for the `pure` version\\n  options.forced         - export even if the native feature is available\\n  options.bind           - bind methods to the target, required for the `pure` version\\n  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version\\n  options.unsafe         - use the simple assignment of property instead of delete + defineProperty\\n  options.sham           - add a flag to not completely full polyfills\\n  options.enumerable     - export as enumerable property\\n  options.dontCallGetSet - prevent calling a getter on target\\n  options.name           - the .name of the function if it does not match the key\\n*\u002F\\nmodule.exports = function (options, source) {\\n  var TARGET = options.target;\\n  var GLOBAL = options.global;\\n  var STATIC = options.stat;\\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\\n  if (GLOBAL) {\\n    target = globalThis;\\n  } else if (STATIC) {\\n    target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\\n  } else {\\n    target = globalThis[TARGET] && globalThis[TARGET].prototype;\\n  }\\n  if (target) for (key in source) {\\n    sourceProperty = source[key];\\n    if (options.dontCallGetSet) {\\n      descriptor = getOwnPropertyDescriptor(target, key);\\n      targetProperty = descriptor && descriptor.value;\\n    } else targetProperty = target[key];\\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\\n    \u002F\u002F contained in target\\n    if (!FORCED && targetProperty !== undefined) {\\n      if (typeof sourceProperty == typeof targetProperty) continue;\\n      copyConstructorProperties(sourceProperty, targetProperty);\\n    }\\n    \u002F\u002F add a flag to not completely full polyfills\\n    if (options.sham || (targetProperty && targetProperty.sham)) {\\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\\n    }\\n    defineBuiltIn(target, key, sourceProperty, options);\\n  }\\n};\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar defineBuiltInAccessor = require('..\u002Finternals\u002Fdefine-built-in-accessor');\\nvar isDetached = require('..\u002Finternals\u002Farray-buffer-is-detached');\\n\\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\\n\\n\u002F\u002F `ArrayBuffer.prototype.detached` getter\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-get-arraybuffer.prototype.detached\\nif (DESCRIPTORS && !('detached' in ArrayBufferPrototype)) {\\n  defineBuiltInAccessor(ArrayBufferPrototype, 'detached', {\\n    configurable: true,\\n    get: function detached() {\\n      return isDetached(this);\\n    }\\n  });\\n}\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar definePropertyModule = require('..\u002Finternals\u002Fobject-define-property');\\nvar createPropertyDescriptor = require('..\u002Finternals\u002Fcreate-property-descriptor');\\n\\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\\n} : function (object, key, value) {\\n  object[key] = value;\\n  return object;\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\n\\nmodule.exports = function (object, key, method) {\\n  try {\\n    \u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\n    return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\\n  } catch (error) { \u002F* empty *\u002F }\\n};\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar V8_PROTOTYPE_DEFINE_BUG = require('..\u002Finternals\u002Fv8-prototype-define-bug');\\nvar definePropertyModule = require('..\u002Finternals\u002Fobject-define-property');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar toIndexedObject = require('..\u002Finternals\u002Fto-indexed-object');\\nvar objectKeys = require('..\u002Finternals\u002Fobject-keys');\\n\\n\u002F\u002F `Object.defineProperties` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.defineproperties\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperties -- safe\\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\\n  anObject(O);\\n  var props = toIndexedObject(Properties);\\n  var keys = objectKeys(Properties);\\n  var length = keys.length;\\n  var index = 0;\\n  var key;\\n  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\\n  return O;\\n};\\n\",\"'use strict';\\nvar $String = String;\\n\\nmodule.exports = function (argument) {\\n  try {\\n    return $String(argument);\\n  } catch (error) {\\n    return 'Object';\\n  }\\n};\\n\",\"'use strict';\\nvar $TypeError = TypeError;\\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; \u002F\u002F 2 ** 53 - 1 == 9007199254740991\\n\\nmodule.exports = function (it) {\\n  if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\\n  return it;\\n};\\n\",\"'use strict';\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar definePropertyModule = require('..\u002Finternals\u002Fobject-define-property');\\nvar makeBuiltIn = require('..\u002Finternals\u002Fmake-built-in');\\nvar defineGlobalProperty = require('..\u002Finternals\u002Fdefine-global-property');\\n\\nmodule.exports = function (O, key, value, options) {\\n  if (!options) options = {};\\n  var simple = options.enumerable;\\n  var name = options.name !== undefined ? options.name : key;\\n  if (isCallable(value)) makeBuiltIn(value, name, options);\\n  if (options.global) {\\n    if (simple) O[key] = value;\\n    else defineGlobalProperty(key, value);\\n  } else {\\n    try {\\n      if (!options.unsafe) delete O[key];\\n      else if (O[key]) simple = true;\\n    } catch (error) { \u002F* empty *\u002F }\\n    if (simple) O[key] = value;\\n    else definePropertyModule.f(O, key, {\\n      value: value,\\n      enumerable: false,\\n      configurable: !options.nonConfigurable,\\n      writable: !options.nonWritable\\n    });\\n  } return O;\\n};\\n\",\"'use strict';\\nvar TO_STRING_TAG_SUPPORT = require('..\u002Finternals\u002Fto-string-tag-support');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar classofRaw = require('..\u002Finternals\u002Fclassof-raw');\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\n\\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\\nvar $Object = Object;\\n\\n\u002F\u002F ES3 wrong here\\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\\n\\n\u002F\u002F fallback for IE11 Script Access Denied error\\nvar tryGet = function (it, key) {\\n  try {\\n    return it[key];\\n  } catch (error) { \u002F* empty *\u002F }\\n};\\n\\n\u002F\u002F getting tag from ES6+ `Object.prototype.toString`\\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\\n  var O, tag, result;\\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\\n    \u002F\u002F @@toStringTag case\\n    : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\\n    \u002F\u002F builtinTag case\\n    : CORRECT_ARGUMENTS ? classofRaw(O)\\n    \u002F\u002F ES3 arguments fallback\\n    : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\\n};\\n\",\"'use strict';\\nvar toPrimitive = require('..\u002Finternals\u002Fto-primitive');\\nvar isSymbol = require('..\u002Finternals\u002Fis-symbol');\\n\\n\u002F\u002F `ToPropertyKey` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-topropertykey\\nmodule.exports = function (argument) {\\n  var key = toPrimitive(argument, 'string');\\n  return isSymbol(key) ? key : key + '';\\n};\\n\",\"'use strict';\\nmodule.exports = function (bitmap, value) {\\n  return {\\n    enumerable: !(bitmap & 1),\\n    configurable: !(bitmap & 2),\\n    writable: !(bitmap & 4),\\n    value: value\\n  };\\n};\\n\",\"'use strict';\\n\u002F* eslint-disable es\u002Fno-symbol -- required for testing *\u002F\\nvar NATIVE_SYMBOL = require('..\u002Finternals\u002Fsymbol-constructor-detection');\\n\\nmodule.exports = NATIVE_SYMBOL &&\\n  !Symbol.sham &&\\n  typeof Symbol.iterator == 'symbol';\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar classof = require('..\u002Finternals\u002Fclassof-raw');\\n\\nvar $Object = Object;\\nvar split = uncurryThis(''.split);\\n\\n\u002F\u002F fallback for non-array-like ES3 and non-enumerable old V8 strings\\nmodule.exports = fails(function () {\\n  \u002F\u002F throws an error in rhino, see https:\u002F\u002Fgithub.com\u002Fmozilla\u002Frhino\u002Fissues\u002F346\\n  \u002F\u002F eslint-disable-next-line no-prototype-builtins -- safe\\n  return !$Object('z').propertyIsEnumerable(0);\\n}) ? function (it) {\\n  return classof(it) === 'String' ? split(it, '') : $Object(it);\\n} : $Object;\\n\",\"'use strict';\\nvar has = require('..\u002Finternals\u002Fset-helpers').has;\\n\\n\u002F\u002F Perform ? RequireInternalSlot(M, [[SetData]])\\nmodule.exports = function (it) {\\n  has(it);\\n  return it;\\n};\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar propertyIsEnumerableModule = require('..\u002Finternals\u002Fobject-property-is-enumerable');\\nvar createPropertyDescriptor = require('..\u002Finternals\u002Fcreate-property-descriptor');\\nvar toIndexedObject = require('..\u002Finternals\u002Fto-indexed-object');\\nvar toPropertyKey = require('..\u002Finternals\u002Fto-property-key');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar IE8_DOM_DEFINE = require('..\u002Finternals\u002Fie8-dom-define');\\n\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\n\\n\u002F\u002F `Object.getOwnPropertyDescriptor` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.getownpropertydescriptor\\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\\n  O = toIndexedObject(O);\\n  P = toPropertyKey(P);\\n  if (IE8_DOM_DEFINE) try {\\n    return $getOwnPropertyDescriptor(O, P);\\n  } catch (error) { \u002F* empty *\u002F }\\n  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar uncurryThisAccessor = require('..\u002Finternals\u002Ffunction-uncurry-this-accessor');\\nvar classof = require('..\u002Finternals\u002Fclassof-raw');\\n\\nvar ArrayBuffer = globalThis.ArrayBuffer;\\nvar TypeError = globalThis.TypeError;\\n\\n\u002F\u002F Includes\\n\u002F\u002F - Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).\\n\u002F\u002F - If IsSharedArrayBuffer(O) is true, throw a TypeError exception.\\nmodule.exports = ArrayBuffer && uncurryThisAccessor(ArrayBuffer.prototype, 'byteLength', 'get') || function (O) {\\n  if (classof(O) !== 'ArrayBuffer') throw new TypeError('ArrayBuffer expected');\\n  return O.byteLength;\\n};\\n\",\"'use strict';\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar IS_PURE = require('..\u002Finternals\u002Fis-pure');\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\n\\nmodule.exports = !fails(function () {\\n  \u002F\u002F eslint-disable-next-line unicorn\u002Frelative-url-style -- required for testing\\n  var url = new URL('b?a=1&b=2&c=3', 'https:\u002F\u002Fa');\\n  var params = url.searchParams;\\n  var params2 = new URLSearchParams('a=1&a=2&b=3');\\n  var result = '';\\n  url.pathname = 'c%20d';\\n  params.forEach(function (value, key) {\\n    params['delete']('b');\\n    result += key + value;\\n  });\\n  params2['delete']('a', 2);\\n  \u002F\u002F `undefined` case is a Chromium 117 bug\\n  \u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=14222\\n  params2['delete']('b', undefined);\\n  return (IS_PURE && (!url.toJSON || !params2.has('a', 1) || params2.has('a', 2) || !params2.has('a', undefined) || params2.has('b')))\\n    || (!params.size && (IS_PURE || !DESCRIPTORS))\\n    || !params.sort\\n    || url.href !== 'https:\u002F\u002Fa\u002Fc%20d?a=1&c=3'\\n    || params.get('c') !== '3'\\n    || String(new URLSearchParams('?a=1')) !== 'a=1'\\n    || !params[ITERATOR]\\n    \u002F\u002F throws in Edge\\n    || new URL('https:\u002F\u002Fa@b').username !== 'a'\\n    || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\\n    \u002F\u002F not punycoded in Edge\\n    || new URL('https:\u002F\u002Fтест').host !== 'xn--e1aybc'\\n    \u002F\u002F not escaped in Chrome 62-\\n    || new URL('https:\u002F\u002Fa#б').hash !== '#%D0%B1'\\n    \u002F\u002F fails in Chrome 66-\\n    || result !== 'a1c3'\\n    \u002F\u002F throws in Safari\\n    || new URL('https:\u002F\u002Fx', undefined).host !== 'x';\\n});\\n\",\"'use strict';\\nvar classofRaw = require('..\u002Finternals\u002Fclassof-raw');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\n\\nmodule.exports = function (fn) {\\n  \u002F\u002F Nashorn bug:\\n  \u002F\u002F   https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F1128\\n  \u002F\u002F   https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F1130\\n  if (classofRaw(fn) === 'Function') return uncurryThis(fn);\\n};\\n\",\"'use strict';\\nvar defineBuiltIn = require('..\u002Finternals\u002Fdefine-built-in');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar toString = require('..\u002Finternals\u002Fto-string');\\nvar validateArgumentsLength = require('..\u002Finternals\u002Fvalidate-arguments-length');\\n\\nvar $URLSearchParams = URLSearchParams;\\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\\nvar getAll = uncurryThis(URLSearchParamsPrototype.getAll);\\nvar $has = uncurryThis(URLSearchParamsPrototype.has);\\nvar params = new $URLSearchParams('a=1');\\n\\n\u002F\u002F `undefined` case is a Chromium 117 bug\\n\u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=14222\\nif (params.has('a', 2) || !params.has('a', undefined)) {\\n  defineBuiltIn(URLSearchParamsPrototype, 'has', function has(name \u002F* , value *\u002F) {\\n    var length = arguments.length;\\n    var $value = length \u003C 2 ? undefined : arguments[1];\\n    if (length && $value === undefined) return $has(this, name);\\n    var values = getAll(this, name); \u002F\u002F also validates `this`\\n    validateArgumentsLength(length, 1);\\n    var value = toString($value);\\n    var index = 0;\\n    while (index \u003C values.length) {\\n      if (values[index++] === value) return true;\\n    } return false;\\n  }, { enumerable: true, unsafe: true });\\n}\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar iterate = require('..\u002Finternals\u002Fiterate');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar getIteratorDirect = require('..\u002Finternals\u002Fget-iterator-direct');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\nvar iteratorHelperWithoutClosingOnEarlyError = require('..\u002Finternals\u002Fiterator-helper-without-closing-on-early-error');\\n\\nvar forEachWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('forEach', TypeError);\\n\\n\u002F\u002F `Iterator.prototype.forEach` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.foreach\\n$({ target: 'Iterator', proto: true, real: true, forced: forEachWithoutClosingOnEarlyError }, {\\n  forEach: function forEach(fn) {\\n    anObject(this);\\n    try {\\n      aCallable(fn);\\n    } catch (error) {\\n      iteratorClose(this, 'throw', error);\\n    }\\n\\n    if (forEachWithoutClosingOnEarlyError) return call(forEachWithoutClosingOnEarlyError, this, fn);\\n\\n    var record = getIteratorDirect(this);\\n    var counter = 0;\\n    iterate(record, function (value) {\\n      fn(value, counter++);\\n    }, { IS_RECORD: true });\\n  }\\n});\\n\",\"'use strict';\\nvar IS_PURE = require('..\u002Finternals\u002Fis-pure');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar defineGlobalProperty = require('..\u002Finternals\u002Fdefine-global-property');\\n\\nvar SHARED = '__core-js_shared__';\\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\\n\\n(store.versions || (store.versions = [])).push({\\n  version: '3.42.0',\\n  mode: IS_PURE ? 'pure' : 'global',\\n  copyright: '© 2014-2025 Denis Pushkarev (zloirock.ru)',\\n  license: 'https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fv3.42.0\u002FLICENSE',\\n  source: 'https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js'\\n});\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar difference = require('..\u002Finternals\u002Fset-difference');\\nvar setMethodAcceptSetLike = require('..\u002Finternals\u002Fset-method-accept-set-like');\\n\\nvar INCORRECT = !setMethodAcceptSetLike('difference', function (result) {\\n  return result.size === 0;\\n});\\n\\n\u002F\u002F `Set.prototype.difference` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.difference\\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\\n  difference: difference\\n});\\n\",\"'use strict';\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\nvar create = require('..\u002Finternals\u002Fobject-create');\\nvar getPrototypeOf = require('..\u002Finternals\u002Fobject-get-prototype-of');\\nvar defineBuiltIn = require('..\u002Finternals\u002Fdefine-built-in');\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\nvar IS_PURE = require('..\u002Finternals\u002Fis-pure');\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\nvar BUGGY_SAFARI_ITERATORS = false;\\n\\n\u002F\u002F `%IteratorPrototype%` object\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-%iteratorprototype%-object\\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\\n\\n\u002F* eslint-disable es\u002Fno-array-prototype-keys -- safe *\u002F\\nif ([].keys) {\\n  arrayIterator = [].keys();\\n  \u002F\u002F Safari 8 has buggy iterators w\u002Fo `next`\\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\\n  else {\\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\\n  }\\n}\\n\\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\\n  var test = {};\\n  \u002F\u002F FF44- legacy iterators case\\n  return IteratorPrototype[ITERATOR].call(test) !== test;\\n});\\n\\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\\n\\n\u002F\u002F `%IteratorPrototype%[@@iterator]()` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-%iteratorprototype%-@@iterator\\nif (!isCallable(IteratorPrototype[ITERATOR])) {\\n  defineBuiltIn(IteratorPrototype, ITERATOR, function () {\\n    return this;\\n  });\\n}\\n\\nmodule.exports = {\\n  IteratorPrototype: IteratorPrototype,\\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\n\\nmodule.exports = uncurryThis([].slice);\\n\",\"'use strict';\\nvar toIntegerOrInfinity = require('..\u002Finternals\u002Fto-integer-or-infinity');\\nvar toLength = require('..\u002Finternals\u002Fto-length');\\n\\nvar $RangeError = RangeError;\\n\\n\u002F\u002F `ToIndex` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-toindex\\nmodule.exports = function (it) {\\n  if (it === undefined) return 0;\\n  var number = toIntegerOrInfinity(it);\\n  var length = toLength(number);\\n  if (number !== length) throw new $RangeError('Wrong length or index');\\n  return length;\\n};\\n\",\"'use strict';\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar ownKeys = require('..\u002Finternals\u002Fown-keys');\\nvar getOwnPropertyDescriptorModule = require('..\u002Finternals\u002Fobject-get-own-property-descriptor');\\nvar definePropertyModule = require('..\u002Finternals\u002Fobject-define-property');\\n\\nmodule.exports = function (target, source, exceptions) {\\n  var keys = ownKeys(source);\\n  var defineProperty = definePropertyModule.f;\\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\\n  for (var i = 0; i \u003C keys.length; i++) {\\n    var key = keys[i];\\n    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\\n    }\\n  }\\n};\\n\",\"'use strict';\\nvar isNullOrUndefined = require('..\u002Finternals\u002Fis-null-or-undefined');\\n\\nvar $TypeError = TypeError;\\n\\n\u002F\u002F `RequireObjectCoercible` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-requireobjectcoercible\\nmodule.exports = function (it) {\\n  if (isNullOrUndefined(it)) throw new $TypeError(\\\"Can't call method on \\\" + it);\\n  return it;\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\n\\nvar aFunction = function (argument) {\\n  return isCallable(argument) ? argument : undefined;\\n};\\n\\nmodule.exports = function (namespace, method) {\\n  return arguments.length \u003C 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\\n};\\n\",\"'use strict';\\n\u002F\u002F eslint-disable-next-line es\u002Fno-typed-arrays -- safe\\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar $transfer = require('..\u002Finternals\u002Farray-buffer-transfer');\\n\\n\u002F\u002F `ArrayBuffer.prototype.transferToFixedLength` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-arraybuffer-transfer\u002F#sec-arraybuffer.prototype.transfertofixedlength\\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\\n  transferToFixedLength: function transferToFixedLength() {\\n    return $transfer(this, arguments.length ? arguments[0] : undefined, false);\\n  }\\n});\\n\",\"'use strict';\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\n\\n\u002F\u002F `RegExp.prototype.flags` getter implementation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-get-regexp.prototype.flags\\nmodule.exports = function () {\\n  var that = anObject(this);\\n  var result = '';\\n  if (that.hasIndices) result += 'd';\\n  if (that.global) result += 'g';\\n  if (that.ignoreCase) result += 'i';\\n  if (that.multiline) result += 'm';\\n  if (that.dotAll) result += 's';\\n  if (that.unicode) result += 'u';\\n  if (that.unicodeSets) result += 'v';\\n  if (that.sticky) result += 'y';\\n  return result;\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar intersection = require('..\u002Finternals\u002Fset-intersection');\\nvar setMethodAcceptSetLike = require('..\u002Finternals\u002Fset-method-accept-set-like');\\n\\nvar INCORRECT = !setMethodAcceptSetLike('intersection', function (result) {\\n  return result.size === 2 && result.has(1) && result.has(2);\\n}) || fails(function () {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-array-from, es\u002Fno-set, es\u002Fno-set-prototype-intersection -- testing\\n  return String(Array.from(new Set([1, 2, 3]).intersection(new Set([3, 2])))) !== '3,2';\\n});\\n\\n\u002F\u002F `Set.prototype.intersection` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.intersection\\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\\n  intersection: intersection\\n});\\n\",\"'use strict';\\nvar toIntegerOrInfinity = require('..\u002Finternals\u002Fto-integer-or-infinity');\\n\\nvar min = Math.min;\\n\\n\u002F\u002F `ToLength` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-tolength\\nmodule.exports = function (argument) {\\n  var len = toIntegerOrInfinity(argument);\\n  return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; \u002F\u002F 2 ** 53 - 1 == 9007199254740991\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar $transfer = require('..\u002Finternals\u002Farray-buffer-transfer');\\n\\n\u002F\u002F `ArrayBuffer.prototype.transfer` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-arraybuffer-transfer\u002F#sec-arraybuffer.prototype.transfer\\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\\n  transfer: function transfer() {\\n    return $transfer(this, arguments.length ? arguments[0] : undefined, true);\\n  }\\n});\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar anInstance = require('..\u002Finternals\u002Fan-instance');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar getPrototypeOf = require('..\u002Finternals\u002Fobject-get-prototype-of');\\nvar defineBuiltInAccessor = require('..\u002Finternals\u002Fdefine-built-in-accessor');\\nvar createProperty = require('..\u002Finternals\u002Fcreate-property');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\nvar IteratorPrototype = require('..\u002Finternals\u002Fiterators-core').IteratorPrototype;\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar IS_PURE = require('..\u002Finternals\u002Fis-pure');\\n\\nvar CONSTRUCTOR = 'constructor';\\nvar ITERATOR = 'Iterator';\\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\\n\\nvar $TypeError = TypeError;\\nvar NativeIterator = globalThis[ITERATOR];\\n\\n\u002F\u002F FF56- have non-standard global helper `Iterator`\\nvar FORCED = IS_PURE\\n  || !isCallable(NativeIterator)\\n  || NativeIterator.prototype !== IteratorPrototype\\n  \u002F\u002F FF44- non-standard `Iterator` passes previous tests\\n  || !fails(function () { NativeIterator({}); });\\n\\nvar IteratorConstructor = function Iterator() {\\n  anInstance(this, IteratorPrototype);\\n  if (getPrototypeOf(this) === IteratorPrototype) throw new $TypeError('Abstract class Iterator not directly constructable');\\n};\\n\\nvar defineIteratorPrototypeAccessor = function (key, value) {\\n  if (DESCRIPTORS) {\\n    defineBuiltInAccessor(IteratorPrototype, key, {\\n      configurable: true,\\n      get: function () {\\n        return value;\\n      },\\n      set: function (replacement) {\\n        anObject(this);\\n        if (this === IteratorPrototype) throw new $TypeError(\\\"You can't redefine this property\\\");\\n        if (hasOwn(this, key)) this[key] = replacement;\\n        else createProperty(this, key, replacement);\\n      }\\n    });\\n  } else IteratorPrototype[key] = value;\\n};\\n\\nif (!hasOwn(IteratorPrototype, TO_STRING_TAG)) defineIteratorPrototypeAccessor(TO_STRING_TAG, ITERATOR);\\n\\nif (FORCED || !hasOwn(IteratorPrototype, CONSTRUCTOR) || IteratorPrototype[CONSTRUCTOR] === Object) {\\n  defineIteratorPrototypeAccessor(CONSTRUCTOR, IteratorConstructor);\\n}\\n\\nIteratorConstructor.prototype = IteratorPrototype;\\n\\n\u002F\u002F `Iterator` constructor\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator\\n$({ global: true, constructor: true, forced: FORCED }, {\\n  Iterator: IteratorConstructor\\n});\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar shared = require('..\u002Finternals\u002Fshared');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar uid = require('..\u002Finternals\u002Fuid');\\nvar NATIVE_SYMBOL = require('..\u002Finternals\u002Fsymbol-constructor-detection');\\nvar USE_SYMBOL_AS_UID = require('..\u002Finternals\u002Fuse-symbol-as-uid');\\n\\nvar Symbol = globalThis.Symbol;\\nvar WellKnownSymbolsStore = shared('wks');\\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\\n\\nmodule.exports = function (name) {\\n  if (!hasOwn(WellKnownSymbolsStore, name)) {\\n    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\\n      ? Symbol[name]\\n      : createWellKnownSymbol('Symbol.' + name);\\n  } return WellKnownSymbolsStore[name];\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar iterate = require('..\u002Finternals\u002Fiterate');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar getIteratorDirect = require('..\u002Finternals\u002Fget-iterator-direct');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\nvar iteratorHelperWithoutClosingOnEarlyError = require('..\u002Finternals\u002Fiterator-helper-without-closing-on-early-error');\\nvar apply = require('..\u002Finternals\u002Ffunction-apply');\\nvar fails = require('..\u002Finternals\u002Ffails');\\n\\nvar $TypeError = TypeError;\\n\\n\u002F\u002F https:\u002F\u002Fbugs.webkit.org\u002Fshow_bug.cgi?id=291651\\nvar FAILS_ON_INITIAL_UNDEFINED = fails(function () {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-iterator-prototype-reduce, es\u002Fno-array-prototype-keys, array-callback-return -- required for testing\\n  [].keys().reduce(function () { \u002F* empty *\u002F }, undefined);\\n});\\n\\nvar reduceWithoutClosingOnEarlyError = !FAILS_ON_INITIAL_UNDEFINED && iteratorHelperWithoutClosingOnEarlyError('reduce', $TypeError);\\n\\n\u002F\u002F `Iterator.prototype.reduce` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.reduce\\n$({ target: 'Iterator', proto: true, real: true, forced: FAILS_ON_INITIAL_UNDEFINED || reduceWithoutClosingOnEarlyError }, {\\n  reduce: function reduce(reducer \u002F* , initialValue *\u002F) {\\n    anObject(this);\\n    try {\\n      aCallable(reducer);\\n    } catch (error) {\\n      iteratorClose(this, 'throw', error);\\n    }\\n\\n    var noInitial = arguments.length \u003C 2;\\n    var accumulator = noInitial ? undefined : arguments[1];\\n    if (reduceWithoutClosingOnEarlyError) {\\n      return apply(reduceWithoutClosingOnEarlyError, this, noInitial ? [reducer] : [reducer, accumulator]);\\n    }\\n    var record = getIteratorDirect(this);\\n    var counter = 0;\\n    iterate(record, function (value) {\\n      if (noInitial) {\\n        noInitial = false;\\n        accumulator = value;\\n      } else {\\n        accumulator = reducer(accumulator, value, counter);\\n      }\\n      counter++;\\n    }, { IS_RECORD: true });\\n    if (noInitial) throw new $TypeError('Reduce of empty iterator with no initial value');\\n    return accumulator;\\n  }\\n});\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar iterateSimple = require('..\u002Finternals\u002Fiterate-simple');\\nvar SetHelpers = require('..\u002Finternals\u002Fset-helpers');\\n\\nvar Set = SetHelpers.Set;\\nvar SetPrototype = SetHelpers.proto;\\nvar forEach = uncurryThis(SetPrototype.forEach);\\nvar keys = uncurryThis(SetPrototype.keys);\\nvar next = keys(new Set()).next;\\n\\nmodule.exports = function (set, fn, interruptible) {\\n  return interruptible ? iterateSimple({ iterator: keys(set), next: next }, fn) : forEach(set, fn);\\n};\\n\",\"'use strict';\\nvar internalObjectKeys = require('..\u002Finternals\u002Fobject-keys-internal');\\nvar enumBugKeys = require('..\u002Finternals\u002Fenum-bug-keys');\\n\\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\\n\\n\u002F\u002F `Object.getOwnPropertyNames` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.getownpropertynames\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertynames -- safe\\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\\n  return internalObjectKeys(O, hiddenKeys);\\n};\\n\",\"'use strict';\\nvar aSet = require('..\u002Finternals\u002Fa-set');\\nvar has = require('..\u002Finternals\u002Fset-helpers').has;\\nvar size = require('..\u002Finternals\u002Fset-size');\\nvar getSetRecord = require('..\u002Finternals\u002Fget-set-record');\\nvar iterateSimple = require('..\u002Finternals\u002Fiterate-simple');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\n\\n\u002F\u002F `Set.prototype.isSupersetOf` method\\n\u002F\u002F https:\u002F\u002Ftc39.github.io\u002Fproposal-set-methods\u002F#Set.prototype.isSupersetOf\\nmodule.exports = function isSupersetOf(other) {\\n  var O = aSet(this);\\n  var otherRec = getSetRecord(other);\\n  if (size(O) \u003C otherRec.size) return false;\\n  var iterator = otherRec.getIterator();\\n  return iterateSimple(iterator, function (e) {\\n    if (!has(O, e)) return iteratorClose(iterator, 'normal', false);\\n  }) !== false;\\n};\\n\",\"'use strict';\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\n\\nvar $String = String;\\nvar $TypeError = TypeError;\\n\\n\u002F\u002F `Assert: Type(argument) is Object`\\nmodule.exports = function (argument) {\\n  if (isObject(argument)) return argument;\\n  throw new $TypeError($String(argument) + ' is not an object');\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\n\\nvar $Error = Error;\\nvar replace = uncurryThis(''.replace);\\n\\nvar TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd');\\n\u002F\u002F eslint-disable-next-line redos\u002Fno-vulnerable, sonarjs\u002Fslow-regex -- safe\\nvar V8_OR_CHAKRA_STACK_ENTRY = \u002F\\\\n\\\\s*at [^:]*:[^\\\\n]*\u002F;\\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\\n\\nmodule.exports = function (stack, dropEntries) {\\n  if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\\n    while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\\n  } return stack;\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\n\\nvar WeakMap = globalThis.WeakMap;\\n\\nmodule.exports = isCallable(WeakMap) && \u002Fnative code\u002F.test(String(WeakMap));\\n\",\"'use strict';\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar getIteratorDirect = require('..\u002Finternals\u002Fget-iterator-direct');\\nvar getIteratorMethod = require('..\u002Finternals\u002Fget-iterator-method');\\n\\nmodule.exports = function (obj, stringHandling) {\\n  if (!stringHandling || typeof obj !== 'string') anObject(obj);\\n  var method = getIteratorMethod(obj);\\n  return getIteratorDirect(anObject(method !== undefined ? call(method, obj) : obj));\\n};\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar fails = require('..\u002Finternals\u002Ffails');\\n\\n\u002F\u002F V8 ~ Chrome 36-\\n\u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=3334\\nmodule.exports = DESCRIPTORS && fails(function () {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- required for testing\\n  return Object.defineProperty(function () { \u002F* empty *\u002F }, 'prototype', {\\n    value: 42,\\n    writable: false\\n  }).prototype !== 42;\\n});\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar defineBuiltInAccessor = require('..\u002Finternals\u002Fdefine-built-in-accessor');\\n\\nvar URLSearchParamsPrototype = URLSearchParams.prototype;\\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\\n\\n\u002F\u002F `URLSearchParams.prototype.size` getter\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Fwhatwg\u002Furl\u002Fpull\u002F734\\nif (DESCRIPTORS && !('size' in URLSearchParamsPrototype)) {\\n  defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\\n    get: function size() {\\n      var count = 0;\\n      forEach(this, function () { count++; });\\n      return count;\\n    },\\n    configurable: true,\\n    enumerable: true\\n  });\\n}\\n\",\"'use strict';\\n\u002F\u002F IE8- don't enum bug keys\\nmodule.exports = [\\n  'constructor',\\n  'hasOwnProperty',\\n  'isPrototypeOf',\\n  'propertyIsEnumerable',\\n  'toLocaleString',\\n  'toString',\\n  'valueOf'\\n];\\n\",\"'use strict';\\nvar NATIVE_BIND = require('..\u002Finternals\u002Ffunction-bind-native');\\n\\nvar FunctionPrototype = Function.prototype;\\nvar apply = FunctionPrototype.apply;\\nvar call = FunctionPrototype.call;\\n\\n\u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind, es\u002Fno-reflect -- safe\\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\\n  return call.apply(apply, arguments);\\n});\\n\",\"'use strict';\\nvar aSet = require('..\u002Finternals\u002Fa-set');\\nvar SetHelpers = require('..\u002Finternals\u002Fset-helpers');\\nvar size = require('..\u002Finternals\u002Fset-size');\\nvar getSetRecord = require('..\u002Finternals\u002Fget-set-record');\\nvar iterateSet = require('..\u002Finternals\u002Fset-iterate');\\nvar iterateSimple = require('..\u002Finternals\u002Fiterate-simple');\\n\\nvar Set = SetHelpers.Set;\\nvar add = SetHelpers.add;\\nvar has = SetHelpers.has;\\n\\n\u002F\u002F `Set.prototype.intersection` method\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\\nmodule.exports = function intersection(other) {\\n  var O = aSet(this);\\n  var otherRec = getSetRecord(other);\\n  var result = new Set();\\n\\n  if (size(O) > otherRec.size) {\\n    iterateSimple(otherRec.getIterator(), function (e) {\\n      if (has(O, e)) add(result, e);\\n    });\\n  } else {\\n    iterateSet(O, function (e) {\\n      if (otherRec.includes(e)) add(result, e);\\n    });\\n  }\\n\\n  return result;\\n};\\n\",\"'use strict';\\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\n\\n\u002F\u002F Nashorn ~ JDK8 bug\\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\\n\\n\u002F\u002F `Object.prototype.propertyIsEnumerable` method implementation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.prototype.propertyisenumerable\\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\\n  var descriptor = getOwnPropertyDescriptor(this, V);\\n  return !!descriptor && descriptor.enumerable;\\n} : $propertyIsEnumerable;\\n\",\"'use strict';\\nvar requireObjectCoercible = require('..\u002Finternals\u002Frequire-object-coercible');\\n\\nvar $Object = Object;\\n\\n\u002F\u002F `ToObject` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-toobject\\nmodule.exports = function (argument) {\\n  return $Object(requireObjectCoercible(argument));\\n};\\n\",\"'use strict';\\nmodule.exports = function (exec) {\\n  try {\\n    return !!exec();\\n  } catch (error) {\\n    return true;\\n  }\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar anObjectOrUndefined = require('..\u002Finternals\u002Fan-object-or-undefined');\\nvar aString = require('..\u002Finternals\u002Fa-string');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar base64Map = require('..\u002Finternals\u002Fbase64-map');\\nvar getAlphabetOption = require('..\u002Finternals\u002Fget-alphabet-option');\\nvar notDetached = require('..\u002Finternals\u002Farray-buffer-not-detached');\\n\\nvar base64Alphabet = base64Map.c2i;\\nvar base64UrlAlphabet = base64Map.c2iUrl;\\n\\nvar SyntaxError = globalThis.SyntaxError;\\nvar TypeError = globalThis.TypeError;\\nvar at = uncurryThis(''.charAt);\\n\\nvar skipAsciiWhitespace = function (string, index) {\\n  var length = string.length;\\n  for (;index \u003C length; index++) {\\n    var chr = at(string, index);\\n    if (chr !== ' ' && chr !== '\\\\t' && chr !== '\\\\n' && chr !== '\\\\f' && chr !== '\\\\r') break;\\n  } return index;\\n};\\n\\nvar decodeBase64Chunk = function (chunk, alphabet, throwOnExtraBits) {\\n  var chunkLength = chunk.length;\\n\\n  if (chunkLength \u003C 4) {\\n    chunk += chunkLength === 2 ? 'AA' : 'A';\\n  }\\n\\n  var triplet = (alphabet[at(chunk, 0)] \u003C\u003C 18)\\n    + (alphabet[at(chunk, 1)] \u003C\u003C 12)\\n    + (alphabet[at(chunk, 2)] \u003C\u003C 6)\\n    + alphabet[at(chunk, 3)];\\n\\n  var chunkBytes = [\\n    (triplet >> 16) & 255,\\n    (triplet >> 8) & 255,\\n    triplet & 255\\n  ];\\n\\n  if (chunkLength === 2) {\\n    if (throwOnExtraBits && chunkBytes[1] !== 0) {\\n      throw new SyntaxError('Extra bits');\\n    }\\n    return [chunkBytes[0]];\\n  }\\n\\n  if (chunkLength === 3) {\\n    if (throwOnExtraBits && chunkBytes[2] !== 0) {\\n      throw new SyntaxError('Extra bits');\\n    }\\n    return [chunkBytes[0], chunkBytes[1]];\\n  }\\n\\n  return chunkBytes;\\n};\\n\\nvar writeBytes = function (bytes, elements, written) {\\n  var elementsLength = elements.length;\\n  for (var index = 0; index \u003C elementsLength; index++) {\\n    bytes[written + index] = elements[index];\\n  }\\n  return written + elementsLength;\\n};\\n\\n\u002F* eslint-disable max-statements, max-depth -- TODO *\u002F\\nmodule.exports = function (string, options, into, maxLength) {\\n  aString(string);\\n  anObjectOrUndefined(options);\\n  var alphabet = getAlphabetOption(options) === 'base64' ? base64Alphabet : base64UrlAlphabet;\\n  var lastChunkHandling = options ? options.lastChunkHandling : undefined;\\n\\n  if (lastChunkHandling === undefined) lastChunkHandling = 'loose';\\n\\n  if (lastChunkHandling !== 'loose' && lastChunkHandling !== 'strict' && lastChunkHandling !== 'stop-before-partial') {\\n    throw new TypeError('Incorrect `lastChunkHandling` option');\\n  }\\n\\n  if (into) notDetached(into.buffer);\\n\\n  var bytes = into || [];\\n  var written = 0;\\n  var read = 0;\\n  var chunk = '';\\n  var index = 0;\\n\\n  if (maxLength) while (true) {\\n    index = skipAsciiWhitespace(string, index);\\n    if (index === string.length) {\\n      if (chunk.length > 0) {\\n        if (lastChunkHandling === 'stop-before-partial') {\\n          break;\\n        }\\n        if (lastChunkHandling === 'loose') {\\n          if (chunk.length === 1) {\\n            throw new SyntaxError('Malformed padding: exactly one additional character');\\n          }\\n          written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, false), written);\\n        } else {\\n          throw new SyntaxError('Missing padding');\\n        }\\n      }\\n      read = string.length;\\n      break;\\n    }\\n    var chr = at(string, index);\\n    ++index;\\n    if (chr === '=') {\\n      if (chunk.length \u003C 2) {\\n        throw new SyntaxError('Padding is too early');\\n      }\\n      index = skipAsciiWhitespace(string, index);\\n      if (chunk.length === 2) {\\n        if (index === string.length) {\\n          if (lastChunkHandling === 'stop-before-partial') {\\n            break;\\n          }\\n          throw new SyntaxError('Malformed padding: only one =');\\n        }\\n        if (at(string, index) === '=') {\\n          ++index;\\n          index = skipAsciiWhitespace(string, index);\\n        }\\n      }\\n      if (index \u003C string.length) {\\n        throw new SyntaxError('Unexpected character after padding');\\n      }\\n      written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, lastChunkHandling === 'strict'), written);\\n      read = string.length;\\n      break;\\n    }\\n    if (!hasOwn(alphabet, chr)) {\\n      throw new SyntaxError('Unexpected character');\\n    }\\n    var remainingBytes = maxLength - written;\\n    if (remainingBytes === 1 && chunk.length === 2 || remainingBytes === 2 && chunk.length === 3) {\\n      \u002F\u002F special case: we can fit exactly the number of bytes currently represented by chunk, so we were just checking for `=`\\n      break;\\n    }\\n\\n    chunk += chr;\\n    if (chunk.length === 4) {\\n      written = writeBytes(bytes, decodeBase64Chunk(chunk, alphabet, false), written);\\n      chunk = '';\\n      read = index;\\n      if (written === maxLength) {\\n        break;\\n      }\\n    }\\n  }\\n\\n  return { bytes: bytes, read: read, written: written };\\n};\\n\",\"'use strict';\\nvar SetHelpers = require('..\u002Finternals\u002Fset-helpers');\\nvar iterate = require('..\u002Finternals\u002Fset-iterate');\\n\\nvar Set = SetHelpers.Set;\\nvar add = SetHelpers.add;\\n\\nmodule.exports = function (set) {\\n  var result = new Set();\\n  iterate(set, function (it) {\\n    add(result, it);\\n  });\\n  return result;\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar toObject = require('..\u002Finternals\u002Fto-object');\\n\\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\\n\\n\u002F\u002F `HasOwnProperty` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-hasownproperty\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-hasown -- safe\\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\\n  return hasOwnProperty(toObject(it), key);\\n};\\n\",\"'use strict';\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar tryToString = require('..\u002Finternals\u002Ftry-to-string');\\n\\nvar $TypeError = TypeError;\\n\\n\u002F\u002F `Assert: IsCallable(argument) is true`\\nmodule.exports = function (argument) {\\n  if (isCallable(argument)) return argument;\\n  throw new $TypeError(tryToString(argument) + ' is not a function');\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar IS_NODE = require('..\u002Finternals\u002Fenvironment-is-node');\\n\\nmodule.exports = function (name) {\\n  if (IS_NODE) {\\n    try {\\n      return globalThis.process.getBuiltinModule(name);\\n    } catch (error) { \u002F* empty *\u002F }\\n    try {\\n      \u002F\u002F eslint-disable-next-line no-new-func -- safe\\n      return Function('return require(\\\"' + name + '\\\")')();\\n    } catch (error) { \u002F* empty *\u002F }\\n  }\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar arrayFromConstructorAndList = require('..\u002Finternals\u002Farray-from-constructor-and-list');\\nvar $fromBase64 = require('..\u002Finternals\u002Fuint8-from-base64');\\n\\nvar Uint8Array = globalThis.Uint8Array;\\n\\n\u002F\u002F `Uint8Array.fromBase64` method\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-arraybuffer-base64\\nif (Uint8Array) $({ target: 'Uint8Array', stat: true }, {\\n  fromBase64: function fromBase64(string \u002F* , options *\u002F) {\\n    var result = $fromBase64(string, arguments.length > 1 ? arguments[1] : undefined, null, 0x1FFFFFFFFFFFFF);\\n    return arrayFromConstructorAndList(Uint8Array, result.bytes);\\n  }\\n});\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\n\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\\nvar defineProperty = Object.defineProperty;\\n\\nmodule.exports = function (key, value) {\\n  try {\\n    defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\\n  } catch (error) {\\n    globalThis[key] = value;\\n  } return value;\\n};\\n\",\"'use strict';\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar create = require('..\u002Finternals\u002Fobject-create');\\nvar createNonEnumerableProperty = require('..\u002Finternals\u002Fcreate-non-enumerable-property');\\nvar defineBuiltIns = require('..\u002Finternals\u002Fdefine-built-ins');\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\nvar InternalStateModule = require('..\u002Finternals\u002Finternal-state');\\nvar getMethod = require('..\u002Finternals\u002Fget-method');\\nvar IteratorPrototype = require('..\u002Finternals\u002Fiterators-core').IteratorPrototype;\\nvar createIterResultObject = require('..\u002Finternals\u002Fcreate-iter-result-object');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\n\\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\\nvar ITERATOR_HELPER = 'IteratorHelper';\\nvar WRAP_FOR_VALID_ITERATOR = 'WrapForValidIterator';\\nvar setInternalState = InternalStateModule.set;\\n\\nvar createIteratorProxyPrototype = function (IS_ITERATOR) {\\n  var getInternalState = InternalStateModule.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER);\\n\\n  return defineBuiltIns(create(IteratorPrototype), {\\n    next: function next() {\\n      var state = getInternalState(this);\\n      \u002F\u002F for simplification:\\n      \u002F\u002F   for `%WrapForValidIteratorPrototype%.next` or with `state.returnHandlerResult` our `nextHandler` returns `IterResultObject`\\n      \u002F\u002F   for `%IteratorHelperPrototype%.next` - just a value\\n      if (IS_ITERATOR) return state.nextHandler();\\n      if (state.done) return createIterResultObject(undefined, true);\\n      try {\\n        var result = state.nextHandler();\\n        return state.returnHandlerResult ? result : createIterResultObject(result, state.done);\\n      } catch (error) {\\n        state.done = true;\\n        throw error;\\n      }\\n    },\\n    'return': function () {\\n      var state = getInternalState(this);\\n      var iterator = state.iterator;\\n      state.done = true;\\n      if (IS_ITERATOR) {\\n        var returnMethod = getMethod(iterator, 'return');\\n        return returnMethod ? call(returnMethod, iterator) : createIterResultObject(undefined, true);\\n      }\\n      if (state.inner) try {\\n        iteratorClose(state.inner.iterator, 'normal');\\n      } catch (error) {\\n        return iteratorClose(iterator, 'throw', error);\\n      }\\n      if (iterator) iteratorClose(iterator, 'normal');\\n      return createIterResultObject(undefined, true);\\n    }\\n  });\\n};\\n\\nvar WrapForValidIteratorPrototype = createIteratorProxyPrototype(true);\\nvar IteratorHelperPrototype = createIteratorProxyPrototype(false);\\n\\ncreateNonEnumerableProperty(IteratorHelperPrototype, TO_STRING_TAG, 'Iterator Helper');\\n\\nmodule.exports = function (nextHandler, IS_ITERATOR, RETURN_HANDLER_RESULT) {\\n  var IteratorProxy = function Iterator(record, state) {\\n    if (state) {\\n      state.iterator = record.iterator;\\n      state.next = record.next;\\n    } else state = record;\\n    state.type = IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER;\\n    state.returnHandlerResult = !!RETURN_HANDLER_RESULT;\\n    state.nextHandler = nextHandler;\\n    state.counter = 0;\\n    state.done = false;\\n    setInternalState(this, state);\\n  };\\n\\n  IteratorProxy.prototype = IS_ITERATOR ? WrapForValidIteratorPrototype : IteratorHelperPrototype;\\n\\n  return IteratorProxy;\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar defineBuiltInAccessor = require('..\u002Finternals\u002Fdefine-built-in-accessor');\\nvar regExpFlags = require('..\u002Finternals\u002Fregexp-flags');\\nvar fails = require('..\u002Finternals\u002Ffails');\\n\\n\u002F\u002F babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> \u002F.\u002Fd and it causes SyntaxError\\nvar RegExp = globalThis.RegExp;\\nvar RegExpPrototype = RegExp.prototype;\\n\\nvar FORCED = DESCRIPTORS && fails(function () {\\n  var INDICES_SUPPORT = true;\\n  try {\\n    RegExp('.', 'd');\\n  } catch (error) {\\n    INDICES_SUPPORT = false;\\n  }\\n\\n  var O = {};\\n  \u002F\u002F modern V8 bug\\n  var calls = '';\\n  var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';\\n\\n  var addGetter = function (key, chr) {\\n    \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\\n    Object.defineProperty(O, key, { get: function () {\\n      calls += chr;\\n      return true;\\n    } });\\n  };\\n\\n  var pairs = {\\n    dotAll: 's',\\n    global: 'g',\\n    ignoreCase: 'i',\\n    multiline: 'm',\\n    sticky: 'y'\\n  };\\n\\n  if (INDICES_SUPPORT) pairs.hasIndices = 'd';\\n\\n  for (var key in pairs) addGetter(key, pairs[key]);\\n\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\n  var result = Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call(O);\\n\\n  return result !== expected || calls !== expected;\\n});\\n\\n\u002F\u002F `RegExp.prototype.flags` getter\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-get-regexp.prototype.flags\\nif (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {\\n  configurable: true,\\n  get: regExpFlags\\n});\\n\",\"'use strict';\\nvar NATIVE_BIND = require('..\u002Finternals\u002Ffunction-bind-native');\\n\\nvar FunctionPrototype = Function.prototype;\\nvar call = FunctionPrototype.call;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind -- safe\\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\\n\\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\\n  return function () {\\n    return call.apply(fn, arguments);\\n  };\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar userAgent = require('..\u002Finternals\u002Fenvironment-user-agent');\\n\\nvar process = globalThis.process;\\nvar Deno = globalThis.Deno;\\nvar versions = process && process.versions || Deno && Deno.version;\\nvar v8 = versions && versions.v8;\\nvar match, version;\\n\\nif (v8) {\\n  match = v8.split('.');\\n  \u002F\u002F in old Chrome, versions of V8 isn't V8 = Chrome \u002F 10\\n  \u002F\u002F but their correct versions are not interesting for us\\n  version = match[0] > 0 && match[0] \u003C 4 ? 1 : +(match[0] + match[1]);\\n}\\n\\n\u002F\u002F BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\\n\u002F\u002F so check `userAgent` even if `.v8` exists, but 0\\nif (!version && userAgent) {\\n  match = userAgent.match(\u002FEdge\\\\\u002F(\\\\d+)\u002F);\\n  if (!match || match[1] >= 74) {\\n    match = userAgent.match(\u002FChrome\\\\\u002F(\\\\d+)\u002F);\\n    if (match) version = +match[1];\\n  }\\n}\\n\\nmodule.exports = version;\\n\",\"'use strict';\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar getMethod = require('..\u002Finternals\u002Fget-method');\\n\\nmodule.exports = function (iterator, kind, value) {\\n  var innerResult, innerError;\\n  anObject(iterator);\\n  try {\\n    innerResult = getMethod(iterator, 'return');\\n    if (!innerResult) {\\n      if (kind === 'throw') throw value;\\n      return value;\\n    }\\n    innerResult = call(innerResult, iterator);\\n  } catch (error) {\\n    innerError = true;\\n    innerResult = error;\\n  }\\n  if (kind === 'throw') throw value;\\n  if (innerError) throw innerResult;\\n  anObject(innerResult);\\n  return value;\\n};\\n\",\"'use strict';\\nvar NATIVE_BIND = require('..\u002Finternals\u002Ffunction-bind-native');\\n\\nvar call = Function.prototype.call;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind -- safe\\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\\n  return call.apply(call, arguments);\\n};\\n\",\"'use strict';\\nvar toIndexedObject = require('..\u002Finternals\u002Fto-indexed-object');\\nvar toAbsoluteIndex = require('..\u002Finternals\u002Fto-absolute-index');\\nvar lengthOfArrayLike = require('..\u002Finternals\u002Flength-of-array-like');\\n\\n\u002F\u002F `Array.prototype.{ indexOf, includes }` methods implementation\\nvar createMethod = function (IS_INCLUDES) {\\n  return function ($this, el, fromIndex) {\\n    var O = toIndexedObject($this);\\n    var length = lengthOfArrayLike(O);\\n    if (length === 0) return !IS_INCLUDES && -1;\\n    var index = toAbsoluteIndex(fromIndex, length);\\n    var value;\\n    \u002F\u002F Array#includes uses SameValueZero equality algorithm\\n    \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\\n    if (IS_INCLUDES && el !== el) while (length > index) {\\n      value = O[index++];\\n      \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\\n      if (value !== value) return true;\\n    \u002F\u002F Array#indexOf ignores holes, Array#includes - not\\n    } else for (;length > index; index++) {\\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\\n    } return !IS_INCLUDES && -1;\\n  };\\n};\\n\\nmodule.exports = {\\n  \u002F\u002F `Array.prototype.includes` method\\n  \u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-array.prototype.includes\\n  includes: createMethod(true),\\n  \u002F\u002F `Array.prototype.indexOf` method\\n  \u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-array.prototype.indexof\\n  indexOf: createMethod(false)\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar anObjectOrUndefined = require('..\u002Finternals\u002Fan-object-or-undefined');\\nvar anUint8Array = require('..\u002Finternals\u002Fan-uint8-array');\\nvar notDetached = require('..\u002Finternals\u002Farray-buffer-not-detached');\\nvar base64Map = require('..\u002Finternals\u002Fbase64-map');\\nvar getAlphabetOption = require('..\u002Finternals\u002Fget-alphabet-option');\\n\\nvar base64Alphabet = base64Map.i2c;\\nvar base64UrlAlphabet = base64Map.i2cUrl;\\n\\nvar charAt = uncurryThis(''.charAt);\\n\\n\u002F\u002F `Uint8Array.prototype.toBase64` method\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-arraybuffer-base64\\nif (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {\\n  toBase64: function toBase64(\u002F* options *\u002F) {\\n    var array = anUint8Array(this);\\n    var options = arguments.length ? anObjectOrUndefined(arguments[0]) : undefined;\\n    var alphabet = getAlphabetOption(options) === 'base64' ? base64Alphabet : base64UrlAlphabet;\\n    var omitPadding = !!options && !!options.omitPadding;\\n    notDetached(this.buffer);\\n\\n    var result = '';\\n    var i = 0;\\n    var length = array.length;\\n    var triplet;\\n\\n    var at = function (shift) {\\n      return charAt(alphabet, (triplet >> (6 * shift)) & 63);\\n    };\\n\\n    for (; i + 2 \u003C length; i += 3) {\\n      triplet = (array[i] \u003C\u003C 16) + (array[i + 1] \u003C\u003C 8) + array[i + 2];\\n      result += at(3) + at(2) + at(1) + at(0);\\n    }\\n    if (i + 2 === length) {\\n      triplet = (array[i] \u003C\u003C 16) + (array[i + 1] \u003C\u003C 8);\\n      result += at(3) + at(2) + at(1) + (omitPadding ? '' : '=');\\n    } else if (i + 1 === length) {\\n      triplet = array[i] \u003C\u003C 16;\\n      result += at(3) + at(2) + (omitPadding ? '' : '==');\\n    }\\n\\n    return result;\\n  }\\n});\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar aString = require('..\u002Finternals\u002Fa-string');\\nvar anUint8Array = require('..\u002Finternals\u002Fan-uint8-array');\\nvar notDetached = require('..\u002Finternals\u002Farray-buffer-not-detached');\\nvar $fromHex = require('..\u002Finternals\u002Fuint8-from-hex');\\n\\n\u002F\u002F `Uint8Array.prototype.setFromHex` method\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-arraybuffer-base64\\nif (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {\\n  setFromHex: function setFromHex(string) {\\n    anUint8Array(this);\\n    aString(string);\\n    notDetached(this.buffer);\\n    var read = $fromHex(string, this).read;\\n    return { read: read, written: read \u002F 2 };\\n  }\\n});\\n\",\"\u002F\u002F The module cache\\nvar __webpack_module_cache__ = {};\\n\\n\u002F\u002F The require function\\nfunction __webpack_require__(moduleId) {\\n\\t\u002F\u002F Check if module is in cache\\n\\tvar cachedModule = __webpack_module_cache__[moduleId];\\n\\tif (cachedModule !== undefined) {\\n\\t\\treturn cachedModule.exports;\\n\\t}\\n\\t\u002F\u002F Create a new module (and put it into the cache)\\n\\tvar module = __webpack_module_cache__[moduleId] = {\\n\\t\\t\u002F\u002F no module.id needed\\n\\t\\t\u002F\u002F no module.loaded needed\\n\\t\\texports: {}\\n\\t};\\n\\n\\t\u002F\u002F Execute the module function\\n\\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\\n\\n\\t\u002F\u002F Return the exports of the module\\n\\treturn module.exports;\\n}\\n\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\u002F* globals process *\u002F\\n\\n\u002F\u002F NW.js \u002F Electron is a browser context, but copies some Node.js objects; see\\n\u002F\u002F http:\u002F\u002Fdocs.nwjs.io\u002Fen\u002Flatest\u002FFor%20Users\u002FAdvanced\u002FJavaScript%20Contexts%20in%20NW.js\u002F#access-nodejs-and-nwjs-api-in-browser-context\\n\u002F\u002F https:\u002F\u002Fwww.electronjs.org\u002Fdocs\u002Fapi\u002Fprocess#processversionselectron-readonly\\n\u002F\u002F https:\u002F\u002Fwww.electronjs.org\u002Fdocs\u002Fapi\u002Fprocess#processtype-readonly\\nconst isNodeJS =\\n  (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) &&\\n  typeof process === \\\"object\\\" &&\\n  process + \\\"\\\" === \\\"[object process]\\\" &&\\n  !process.versions.nw &&\\n  !(process.versions.electron && process.type && process.type !== \\\"browser\\\");\\n\\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\\n\\n\u002F\u002F Represent the percentage of the height of a single-line field over\\n\u002F\u002F the font size. Acrobat seems to use this value.\\nconst LINE_FACTOR = 1.35;\\nconst LINE_DESCENT_FACTOR = 0.35;\\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR \u002F LINE_FACTOR;\\n\\n\u002F**\\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\\n * how these flags are being used:\\n *  - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\\n *    `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\\n *  - SAVE is used, on the worker-thread, when saving modified annotations.\\n *  - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\\n *    annotations are rendered onto the canvas (i.e. by being included in the\\n *    operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\\n *    and their `annotationMode`-option.\\n *  - IS_EDITING is used when editing is active in the viewer.\\n *  - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\\n *    `OperatorList`-constructor (on the worker-thread).\\n *\u002F\\nconst RenderingIntentFlag = {\\n  ANY: 0x01,\\n  DISPLAY: 0x02,\\n  PRINT: 0x04,\\n  SAVE: 0x08,\\n  ANNOTATIONS_FORMS: 0x10,\\n  ANNOTATIONS_STORAGE: 0x20,\\n  ANNOTATIONS_DISABLE: 0x40,\\n  IS_EDITING: 0x80,\\n  OPLIST: 0x100,\\n};\\n\\nconst AnnotationMode = {\\n  DISABLE: 0,\\n  ENABLE: 1,\\n  ENABLE_FORMS: 2,\\n  ENABLE_STORAGE: 3,\\n};\\n\\nconst AnnotationEditorPrefix = \\\"pdfjs_internal_editor_\\\";\\n\\nconst AnnotationEditorType = {\\n  DISABLE: -1,\\n  NONE: 0,\\n  FREETEXT: 3,\\n  HIGHLIGHT: 9,\\n  STAMP: 13,\\n  INK: 15,\\n  SIGNATURE: 101,\\n};\\n\\nconst AnnotationEditorParamsType = {\\n  RESIZE: 1,\\n  CREATE: 2,\\n  FREETEXT_SIZE: 11,\\n  FREETEXT_COLOR: 12,\\n  FREETEXT_OPACITY: 13,\\n  INK_COLOR: 21,\\n  INK_THICKNESS: 22,\\n  INK_OPACITY: 23,\\n  HIGHLIGHT_COLOR: 31,\\n  HIGHLIGHT_DEFAULT_COLOR: 32,\\n  HIGHLIGHT_THICKNESS: 33,\\n  HIGHLIGHT_FREE: 34,\\n  HIGHLIGHT_SHOW_ALL: 35,\\n  DRAW_STEP: 41,\\n};\\n\\n\u002F\u002F Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\\nconst PermissionFlag = {\\n  PRINT: 0x04,\\n  MODIFY_CONTENTS: 0x08,\\n  COPY: 0x10,\\n  MODIFY_ANNOTATIONS: 0x20,\\n  FILL_INTERACTIVE_FORMS: 0x100,\\n  COPY_FOR_ACCESSIBILITY: 0x200,\\n  ASSEMBLE: 0x400,\\n  PRINT_HIGH_QUALITY: 0x800,\\n};\\n\\nconst TextRenderingMode = {\\n  FILL: 0,\\n  STROKE: 1,\\n  FILL_STROKE: 2,\\n  INVISIBLE: 3,\\n  FILL_ADD_TO_PATH: 4,\\n  STROKE_ADD_TO_PATH: 5,\\n  FILL_STROKE_ADD_TO_PATH: 6,\\n  ADD_TO_PATH: 7,\\n  FILL_STROKE_MASK: 3,\\n  ADD_TO_PATH_FLAG: 4,\\n};\\n\\nconst ImageKind = {\\n  GRAYSCALE_1BPP: 1,\\n  RGB_24BPP: 2,\\n  RGBA_32BPP: 3,\\n};\\n\\nconst AnnotationType = {\\n  TEXT: 1,\\n  LINK: 2,\\n  FREETEXT: 3,\\n  LINE: 4,\\n  SQUARE: 5,\\n  CIRCLE: 6,\\n  POLYGON: 7,\\n  POLYLINE: 8,\\n  HIGHLIGHT: 9,\\n  UNDERLINE: 10,\\n  SQUIGGLY: 11,\\n  STRIKEOUT: 12,\\n  STAMP: 13,\\n  CARET: 14,\\n  INK: 15,\\n  POPUP: 16,\\n  FILEATTACHMENT: 17,\\n  SOUND: 18,\\n  MOVIE: 19,\\n  WIDGET: 20,\\n  SCREEN: 21,\\n  PRINTERMARK: 22,\\n  TRAPNET: 23,\\n  WATERMARK: 24,\\n  THREED: 25,\\n  REDACT: 26,\\n};\\n\\nconst AnnotationReplyType = {\\n  GROUP: \\\"Group\\\",\\n  REPLY: \\\"R\\\",\\n};\\n\\nconst AnnotationFlag = {\\n  INVISIBLE: 0x01,\\n  HIDDEN: 0x02,\\n  PRINT: 0x04,\\n  NOZOOM: 0x08,\\n  NOROTATE: 0x10,\\n  NOVIEW: 0x20,\\n  READONLY: 0x40,\\n  LOCKED: 0x80,\\n  TOGGLENOVIEW: 0x100,\\n  LOCKEDCONTENTS: 0x200,\\n};\\n\\nconst AnnotationFieldFlag = {\\n  READONLY: 0x0000001,\\n  REQUIRED: 0x0000002,\\n  NOEXPORT: 0x0000004,\\n  MULTILINE: 0x0001000,\\n  PASSWORD: 0x0002000,\\n  NOTOGGLETOOFF: 0x0004000,\\n  RADIO: 0x0008000,\\n  PUSHBUTTON: 0x0010000,\\n  COMBO: 0x0020000,\\n  EDIT: 0x0040000,\\n  SORT: 0x0080000,\\n  FILESELECT: 0x0100000,\\n  MULTISELECT: 0x0200000,\\n  DONOTSPELLCHECK: 0x0400000,\\n  DONOTSCROLL: 0x0800000,\\n  COMB: 0x1000000,\\n  RICHTEXT: 0x2000000,\\n  RADIOSINUNISON: 0x2000000,\\n  COMMITONSELCHANGE: 0x4000000,\\n};\\n\\nconst AnnotationBorderStyleType = {\\n  SOLID: 1,\\n  DASHED: 2,\\n  BEVELED: 3,\\n  INSET: 4,\\n  UNDERLINE: 5,\\n};\\n\\nconst AnnotationActionEventType = {\\n  E: \\\"Mouse Enter\\\",\\n  X: \\\"Mouse Exit\\\",\\n  D: \\\"Mouse Down\\\",\\n  U: \\\"Mouse Up\\\",\\n  Fo: \\\"Focus\\\",\\n  Bl: \\\"Blur\\\",\\n  PO: \\\"PageOpen\\\",\\n  PC: \\\"PageClose\\\",\\n  PV: \\\"PageVisible\\\",\\n  PI: \\\"PageInvisible\\\",\\n  K: \\\"Keystroke\\\",\\n  F: \\\"Format\\\",\\n  V: \\\"Validate\\\",\\n  C: \\\"Calculate\\\",\\n};\\n\\nconst DocumentActionEventType = {\\n  WC: \\\"WillClose\\\",\\n  WS: \\\"WillSave\\\",\\n  DS: \\\"DidSave\\\",\\n  WP: \\\"WillPrint\\\",\\n  DP: \\\"DidPrint\\\",\\n};\\n\\nconst PageActionEventType = {\\n  O: \\\"PageOpen\\\",\\n  C: \\\"PageClose\\\",\\n};\\n\\nconst VerbosityLevel = {\\n  ERRORS: 0,\\n  WARNINGS: 1,\\n  INFOS: 5,\\n};\\n\\n\u002F\u002F All the possible operations for an operator list.\\nconst OPS = {\\n  \u002F\u002F Intentionally start from 1 so it is easy to spot bad operators that will be\\n  \u002F\u002F 0's.\\n  \u002F\u002F PLEASE NOTE: We purposely keep any removed operators commented out, since\\n  \u002F\u002F              re-numbering the list would risk breaking third-party users.\\n  dependency: 1,\\n  setLineWidth: 2,\\n  setLineCap: 3,\\n  setLineJoin: 4,\\n  setMiterLimit: 5,\\n  setDash: 6,\\n  setRenderingIntent: 7,\\n  setFlatness: 8,\\n  setGState: 9,\\n  save: 10,\\n  restore: 11,\\n  transform: 12,\\n  moveTo: 13,\\n  lineTo: 14,\\n  curveTo: 15,\\n  curveTo2: 16,\\n  curveTo3: 17,\\n  closePath: 18,\\n  rectangle: 19,\\n  stroke: 20,\\n  closeStroke: 21,\\n  fill: 22,\\n  eoFill: 23,\\n  fillStroke: 24,\\n  eoFillStroke: 25,\\n  closeFillStroke: 26,\\n  closeEOFillStroke: 27,\\n  endPath: 28,\\n  clip: 29,\\n  eoClip: 30,\\n  beginText: 31,\\n  endText: 32,\\n  setCharSpacing: 33,\\n  setWordSpacing: 34,\\n  setHScale: 35,\\n  setLeading: 36,\\n  setFont: 37,\\n  setTextRenderingMode: 38,\\n  setTextRise: 39,\\n  moveText: 40,\\n  setLeadingMoveText: 41,\\n  setTextMatrix: 42,\\n  nextLine: 43,\\n  showText: 44,\\n  showSpacedText: 45,\\n  nextLineShowText: 46,\\n  nextLineSetSpacingShowText: 47,\\n  setCharWidth: 48,\\n  setCharWidthAndBounds: 49,\\n  setStrokeColorSpace: 50,\\n  setFillColorSpace: 51,\\n  setStrokeColor: 52,\\n  setStrokeColorN: 53,\\n  setFillColor: 54,\\n  setFillColorN: 55,\\n  setStrokeGray: 56,\\n  setFillGray: 57,\\n  setStrokeRGBColor: 58,\\n  setFillRGBColor: 59,\\n  setStrokeCMYKColor: 60,\\n  setFillCMYKColor: 61,\\n  shadingFill: 62,\\n  beginInlineImage: 63,\\n  beginImageData: 64,\\n  endInlineImage: 65,\\n  paintXObject: 66,\\n  markPoint: 67,\\n  markPointProps: 68,\\n  beginMarkedContent: 69,\\n  beginMarkedContentProps: 70,\\n  endMarkedContent: 71,\\n  beginCompat: 72,\\n  endCompat: 73,\\n  paintFormXObjectBegin: 74,\\n  paintFormXObjectEnd: 75,\\n  beginGroup: 76,\\n  endGroup: 77,\\n  \u002F\u002F beginAnnotations: 78,\\n  \u002F\u002F endAnnotations: 79,\\n  beginAnnotation: 80,\\n  endAnnotation: 81,\\n  \u002F\u002F paintJpegXObject: 82,\\n  paintImageMaskXObject: 83,\\n  paintImageMaskXObjectGroup: 84,\\n  paintImageXObject: 85,\\n  paintInlineImageXObject: 86,\\n  paintInlineImageXObjectGroup: 87,\\n  paintImageXObjectRepeat: 88,\\n  paintImageMaskXObjectRepeat: 89,\\n  paintSolidColorImageMask: 90,\\n  constructPath: 91,\\n  setStrokeTransparent: 92,\\n  setFillTransparent: 93,\\n  rawFillPath: 94,\\n};\\n\\n\u002F\u002F In order to have a switch statement that is fast (i.e. which use a jump\\n\u002F\u002F table), we need to have the OPS in a contiguous range.\\nconst DrawOPS = {\\n  moveTo: 0,\\n  lineTo: 1,\\n  curveTo: 2,\\n  closePath: 3,\\n};\\n\\nconst PasswordResponses = {\\n  NEED_PASSWORD: 1,\\n  INCORRECT_PASSWORD: 2,\\n};\\n\\nlet verbosity = VerbosityLevel.WARNINGS;\\n\\nfunction setVerbosityLevel(level) {\\n  if (Number.isInteger(level)) {\\n    verbosity = level;\\n  }\\n}\\n\\nfunction getVerbosityLevel() {\\n  return verbosity;\\n}\\n\\n\u002F\u002F A notice for devs. These are good for things that are helpful to devs, such\\n\u002F\u002F as warning that Workers were disabled, which is important to devs but not\\n\u002F\u002F end users.\\nfunction info(msg) {\\n  if (verbosity >= VerbosityLevel.INFOS) {\\n    \u002F\u002F eslint-disable-next-line no-console\\n    console.log(`Info: ${msg}`);\\n  }\\n}\\n\\n\u002F\u002F Non-fatal warnings.\\nfunction warn(msg) {\\n  if (verbosity >= VerbosityLevel.WARNINGS) {\\n    \u002F\u002F eslint-disable-next-line no-console\\n    console.log(`Warning: ${msg}`);\\n  }\\n}\\n\\nfunction unreachable(msg) {\\n  throw new Error(msg);\\n}\\n\\nfunction assert(cond, msg) {\\n  if (!cond) {\\n    unreachable(msg);\\n  }\\n}\\n\\n\u002F\u002F Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\\nfunction _isValidProtocol(url) {\\n  switch (url?.protocol) {\\n    case \\\"http:\\\":\\n    case \\\"https:\\\":\\n    case \\\"ftp:\\\":\\n    case \\\"mailto:\\\":\\n    case \\\"tel:\\\":\\n      return true;\\n    default:\\n      return false;\\n  }\\n}\\n\\n\u002F**\\n * Attempts to create a valid absolute URL.\\n *\\n * @param {URL|string} url - An absolute, or relative, URL.\\n * @param {URL|string} [baseUrl] - An absolute URL.\\n * @param {Object} [options]\\n * @returns Either a valid {URL}, or `null` otherwise.\\n *\u002F\\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\\n  if (!url) {\\n    return null;\\n  }\\n  if (options && typeof url === \\\"string\\\") {\\n    \u002F\u002F Let URLs beginning with \\\"www.\\\" default to using the \\\"http:\u002F\u002F\\\" protocol.\\n    if (options.addDefaultProtocol && url.startsWith(\\\"www.\\\")) {\\n      const dots = url.match(\u002F\\\\.\u002Fg);\\n      \u002F\u002F Avoid accidentally matching a *relative* URL pointing to a file named\\n      \u002F\u002F e.g. \\\"www.pdf\\\" or similar.\\n      if (dots?.length >= 2) {\\n        url = `http:\u002F\u002F${url}`;\\n      }\\n    }\\n\\n    \u002F\u002F According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\\n    \u002F\u002F in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\\n    if (options.tryConvertEncoding) {\\n      try {\\n        url = stringToUTF8String(url);\\n      } catch {}\\n    }\\n  }\\n\\n  const absoluteUrl = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\\n  return _isValidProtocol(absoluteUrl) ? absoluteUrl : null;\\n}\\n\\n\u002F**\\n * Remove, or replace, the hash property of the URL.\\n *\\n * @param {URL|string} url - The absolute, or relative, URL.\\n * @param {string} hash - The hash property (use an empty string to remove it).\\n * @param {boolean} [allowRel] - Allow relative URLs.\\n * @returns {string} The resulting URL string.\\n *\u002F\\nfunction updateUrlHash(url, hash, allowRel = false) {\\n  const res = URL.parse(url);\\n  if (res) {\\n    res.hash = hash;\\n    return res.href;\\n  }\\n  \u002F\u002F Support well-formed relative URLs, necessary for `web\u002Fapp.js` in GENERIC\\n  \u002F\u002F builds, by optionally falling back to string parsing.\\n  if (allowRel && createValidAbsoluteUrl(url, \\\"http:\u002F\u002Fexample.com\\\")) {\\n    return url.split(\\\"#\\\", 1)[0] + `${hash ? `#${hash}` : \\\"\\\"}`;\\n  }\\n  return \\\"\\\";\\n}\\n\\nfunction shadow(obj, prop, value, nonSerializable = false) {\\n  if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n    assert(\\n      prop in obj,\\n      `shadow: Property \\\"${prop && prop.toString()}\\\" not found in object.`\\n    );\\n  }\\n  Object.defineProperty(obj, prop, {\\n    value,\\n    enumerable: !nonSerializable,\\n    configurable: true,\\n    writable: false,\\n  });\\n  return value;\\n}\\n\\n\u002F**\\n * @type {any}\\n *\u002F\\nconst BaseException = (function BaseExceptionClosure() {\\n  \u002F\u002F eslint-disable-next-line no-shadow\\n  function BaseException(message, name) {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      this.constructor === BaseException\\n    ) {\\n      unreachable(\\\"Cannot initialize BaseException.\\\");\\n    }\\n    this.message = message;\\n    this.name = name;\\n  }\\n  BaseException.prototype = new Error();\\n  BaseException.constructor = BaseException;\\n\\n  return BaseException;\\n})();\\n\\nclass PasswordException extends BaseException {\\n  constructor(msg, code) {\\n    super(msg, \\\"PasswordException\\\");\\n    this.code = code;\\n  }\\n}\\n\\nclass UnknownErrorException extends BaseException {\\n  constructor(msg, details) {\\n    super(msg, \\\"UnknownErrorException\\\");\\n    this.details = details;\\n  }\\n}\\n\\nclass InvalidPDFException extends BaseException {\\n  constructor(msg) {\\n    super(msg, \\\"InvalidPDFException\\\");\\n  }\\n}\\n\\nclass ResponseException extends BaseException {\\n  constructor(msg, status, missing) {\\n    super(msg, \\\"ResponseException\\\");\\n    this.status = status;\\n    this.missing = missing;\\n  }\\n}\\n\\n\u002F**\\n * Error caused during parsing PDF data.\\n *\u002F\\nclass FormatError extends BaseException {\\n  constructor(msg) {\\n    super(msg, \\\"FormatError\\\");\\n  }\\n}\\n\\n\u002F**\\n * Error used to indicate task cancellation.\\n *\u002F\\nclass AbortException extends BaseException {\\n  constructor(msg) {\\n    super(msg, \\\"AbortException\\\");\\n  }\\n}\\n\\nfunction bytesToString(bytes) {\\n  if (typeof bytes !== \\\"object\\\" || bytes?.length === undefined) {\\n    unreachable(\\\"Invalid argument for bytesToString\\\");\\n  }\\n  const length = bytes.length;\\n  const MAX_ARGUMENT_COUNT = 8192;\\n  if (length \u003C MAX_ARGUMENT_COUNT) {\\n    return String.fromCharCode.apply(null, bytes);\\n  }\\n  const strBuf = [];\\n  for (let i = 0; i \u003C length; i += MAX_ARGUMENT_COUNT) {\\n    const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\\n    const chunk = bytes.subarray(i, chunkEnd);\\n    strBuf.push(String.fromCharCode.apply(null, chunk));\\n  }\\n  return strBuf.join(\\\"\\\");\\n}\\n\\nfunction stringToBytes(str) {\\n  if (typeof str !== \\\"string\\\") {\\n    unreachable(\\\"Invalid argument for stringToBytes\\\");\\n  }\\n  const length = str.length;\\n  const bytes = new Uint8Array(length);\\n  for (let i = 0; i \u003C length; ++i) {\\n    bytes[i] = str.charCodeAt(i) & 0xff;\\n  }\\n  return bytes;\\n}\\n\\nfunction string32(value) {\\n  if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n    assert(\\n      typeof value === \\\"number\\\" && Math.abs(value) \u003C 2 ** 32,\\n      `string32: Unexpected input \\\"${value}\\\".`\\n    );\\n  }\\n  return String.fromCharCode(\\n    (value >> 24) & 0xff,\\n    (value >> 16) & 0xff,\\n    (value >> 8) & 0xff,\\n    value & 0xff\\n  );\\n}\\n\\nfunction objectSize(obj) {\\n  return Object.keys(obj).length;\\n}\\n\\n\u002F\u002F Checks the endianness of the platform.\\nfunction isLittleEndian() {\\n  const buffer8 = new Uint8Array(4);\\n  buffer8[0] = 1;\\n  const view32 = new Uint32Array(buffer8.buffer, 0, 1);\\n  return view32[0] === 1;\\n}\\n\\n\u002F\u002F Checks if it's possible to eval JS expressions.\\nfunction isEvalSupported() {\\n  try {\\n    new Function(\\\"\\\"); \u002F\u002F eslint-disable-line no-new, no-new-func\\n    return true;\\n  } catch {\\n    return false;\\n  }\\n}\\n\\nclass FeatureTest {\\n  static get isLittleEndian() {\\n    return shadow(this, \\\"isLittleEndian\\\", isLittleEndian());\\n  }\\n\\n  static get isEvalSupported() {\\n    return shadow(this, \\\"isEvalSupported\\\", isEvalSupported());\\n  }\\n\\n  static get isOffscreenCanvasSupported() {\\n    return shadow(\\n      this,\\n      \\\"isOffscreenCanvasSupported\\\",\\n      typeof OffscreenCanvas !== \\\"undefined\\\"\\n    );\\n  }\\n\\n  static get isImageDecoderSupported() {\\n    return shadow(\\n      this,\\n      \\\"isImageDecoderSupported\\\",\\n      typeof ImageDecoder !== \\\"undefined\\\"\\n    );\\n  }\\n\\n  static get platform() {\\n    const { platform, userAgent } = navigator;\\n\\n    return shadow(this, \\\"platform\\\", {\\n      isAndroid: userAgent.includes(\\\"Android\\\"),\\n      isLinux: platform.includes(\\\"Linux\\\"),\\n      isMac: platform.includes(\\\"Mac\\\"),\\n      isWindows: platform.includes(\\\"Win\\\"),\\n      isFirefox:\\n        (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) ||\\n        userAgent.includes(\\\"Firefox\\\"),\\n    });\\n  }\\n\\n  static get isCSSRoundSupported() {\\n    return shadow(\\n      this,\\n      \\\"isCSSRoundSupported\\\",\\n      globalThis.CSS?.supports?.(\\\"width: round(1.5px, 1px)\\\")\\n    );\\n  }\\n}\\n\\nconst hexNumbers = Array.from(Array(256).keys(), n =>\\n  n.toString(16).padStart(2, \\\"0\\\")\\n);\\n\\nclass Util {\\n  static makeHexColor(r, g, b) {\\n    return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\\n  }\\n\\n  \u002F\u002F Apply a scaling matrix to some min\u002Fmax values.\\n  \u002F\u002F If a scaling factor is negative then min and max must be\\n  \u002F\u002F swapped.\\n  static scaleMinMax(transform, minMax) {\\n    let temp;\\n    if (transform[0]) {\\n      if (transform[0] \u003C 0) {\\n        temp = minMax[0];\\n        minMax[0] = minMax[2];\\n        minMax[2] = temp;\\n      }\\n      minMax[0] *= transform[0];\\n      minMax[2] *= transform[0];\\n\\n      if (transform[3] \u003C 0) {\\n        temp = minMax[1];\\n        minMax[1] = minMax[3];\\n        minMax[3] = temp;\\n      }\\n      minMax[1] *= transform[3];\\n      minMax[3] *= transform[3];\\n    } else {\\n      temp = minMax[0];\\n      minMax[0] = minMax[1];\\n      minMax[1] = temp;\\n      temp = minMax[2];\\n      minMax[2] = minMax[3];\\n      minMax[3] = temp;\\n\\n      if (transform[1] \u003C 0) {\\n        temp = minMax[1];\\n        minMax[1] = minMax[3];\\n        minMax[3] = temp;\\n      }\\n      minMax[1] *= transform[1];\\n      minMax[3] *= transform[1];\\n\\n      if (transform[2] \u003C 0) {\\n        temp = minMax[0];\\n        minMax[0] = minMax[2];\\n        minMax[2] = temp;\\n      }\\n      minMax[0] *= transform[2];\\n      minMax[2] *= transform[2];\\n    }\\n    minMax[0] += transform[4];\\n    minMax[1] += transform[5];\\n    minMax[2] += transform[4];\\n    minMax[3] += transform[5];\\n  }\\n\\n  \u002F\u002F Concatenates two transformation matrices together and returns the result.\\n  static transform(m1, m2) {\\n    return [\\n      m1[0] * m2[0] + m1[2] * m2[1],\\n      m1[1] * m2[0] + m1[3] * m2[1],\\n      m1[0] * m2[2] + m1[2] * m2[3],\\n      m1[1] * m2[2] + m1[3] * m2[3],\\n      m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\\n      m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\\n    ];\\n  }\\n\\n  \u002F\u002F For 2d affine transforms\\n  static applyTransform(p, m, pos = 0) {\\n    const p0 = p[pos];\\n    const p1 = p[pos + 1];\\n    p[pos] = p0 * m[0] + p1 * m[2] + m[4];\\n    p[pos + 1] = p0 * m[1] + p1 * m[3] + m[5];\\n  }\\n\\n  static applyTransformToBezier(p, transform, pos = 0) {\\n    const m0 = transform[0];\\n    const m1 = transform[1];\\n    const m2 = transform[2];\\n    const m3 = transform[3];\\n    const m4 = transform[4];\\n    const m5 = transform[5];\\n    for (let i = 0; i \u003C 6; i += 2) {\\n      const pI = p[pos + i];\\n      const pI1 = p[pos + i + 1];\\n      p[pos + i] = pI * m0 + pI1 * m2 + m4;\\n      p[pos + i + 1] = pI * m1 + pI1 * m3 + m5;\\n    }\\n  }\\n\\n  static applyInverseTransform(p, m) {\\n    const p0 = p[0];\\n    const p1 = p[1];\\n    const d = m[0] * m[3] - m[1] * m[2];\\n    p[0] = (p0 * m[3] - p1 * m[2] + m[2] * m[5] - m[4] * m[3]) \u002F d;\\n    p[1] = (-p0 * m[1] + p1 * m[0] + m[4] * m[1] - m[5] * m[0]) \u002F d;\\n  }\\n\\n  \u002F\u002F Applies the transform to the rectangle and finds the minimum axially\\n  \u002F\u002F aligned bounding box.\\n  static axialAlignedBoundingBox(rect, transform, output) {\\n    const m0 = transform[0];\\n    const m1 = transform[1];\\n    const m2 = transform[2];\\n    const m3 = transform[3];\\n    const m4 = transform[4];\\n    const m5 = transform[5];\\n    const r0 = rect[0];\\n    const r1 = rect[1];\\n    const r2 = rect[2];\\n    const r3 = rect[3];\\n\\n    let a0 = m0 * r0 + m4;\\n    let a2 = a0;\\n    let a1 = m0 * r2 + m4;\\n    let a3 = a1;\\n    let b0 = m3 * r1 + m5;\\n    let b2 = b0;\\n    let b1 = m3 * r3 + m5;\\n    let b3 = b1;\\n\\n    if (m1 !== 0 || m2 !== 0) {\\n      \u002F\u002F Non-scaling matrix: shouldn't be frequent.\\n      const m1r0 = m1 * r0;\\n      const m1r2 = m1 * r2;\\n      const m2r1 = m2 * r1;\\n      const m2r3 = m2 * r3;\\n      a0 += m2r1;\\n      a3 += m2r1;\\n      a1 += m2r3;\\n      a2 += m2r3;\\n      b0 += m1r0;\\n      b3 += m1r0;\\n      b1 += m1r2;\\n      b2 += m1r2;\\n    }\\n\\n    output[0] = Math.min(output[0], a0, a1, a2, a3);\\n    output[1] = Math.min(output[1], b0, b1, b2, b3);\\n    output[2] = Math.max(output[2], a0, a1, a2, a3);\\n    output[3] = Math.max(output[3], b0, b1, b2, b3);\\n  }\\n\\n  static inverseTransform(m) {\\n    const d = m[0] * m[3] - m[1] * m[2];\\n    return [\\n      m[3] \u002F d,\\n      -m[1] \u002F d,\\n      -m[2] \u002F d,\\n      m[0] \u002F d,\\n      (m[2] * m[5] - m[4] * m[3]) \u002F d,\\n      (m[4] * m[1] - m[5] * m[0]) \u002F d,\\n    ];\\n  }\\n\\n  \u002F\u002F This calculation uses Singular Value Decomposition.\\n  \u002F\u002F The SVD can be represented with formula A = USV. We are interested in the\\n  \u002F\u002F matrix S here because it represents the scale values.\\n  static singularValueDecompose2dScale(matrix, output) {\\n    const m0 = matrix[0];\\n    const m1 = matrix[1];\\n    const m2 = matrix[2];\\n    const m3 = matrix[3];\\n    \u002F\u002F Multiply matrix m with its transpose.\\n    const a = m0 ** 2 + m1 ** 2;\\n    const b = m0 * m2 + m1 * m3;\\n    const c = m2 ** 2 + m3 ** 2;\\n\\n    \u002F\u002F Solve the second degree polynomial to get roots.\\n    const first = (a + c) \u002F 2;\\n    const second = Math.sqrt(first ** 2 - (a * c - b ** 2));\\n    output[0] = Math.sqrt(first + second || 1);\\n    output[1] = Math.sqrt(first - second || 1);\\n  }\\n\\n  \u002F\u002F Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) \u003C (x2,y2)\\n  \u002F\u002F For coordinate systems whose origin lies in the bottom-left, this\\n  \u002F\u002F means normalization to (BL,TR) ordering. For systems with origin in the\\n  \u002F\u002F top-left, this means (TL,BR) ordering.\\n  static normalizeRect(rect) {\\n    const r = rect.slice(0); \u002F\u002F clone rect\\n    if (rect[0] > rect[2]) {\\n      r[0] = rect[2];\\n      r[2] = rect[0];\\n    }\\n    if (rect[1] > rect[3]) {\\n      r[1] = rect[3];\\n      r[3] = rect[1];\\n    }\\n    return r;\\n  }\\n\\n  \u002F\u002F Returns a rectangle [x1, y1, x2, y2] corresponding to the\\n  \u002F\u002F intersection of rect1 and rect2. If no intersection, returns 'null'\\n  \u002F\u002F The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\\n  static intersect(rect1, rect2) {\\n    const xLow = Math.max(\\n      Math.min(rect1[0], rect1[2]),\\n      Math.min(rect2[0], rect2[2])\\n    );\\n    const xHigh = Math.min(\\n      Math.max(rect1[0], rect1[2]),\\n      Math.max(rect2[0], rect2[2])\\n    );\\n    if (xLow > xHigh) {\\n      return null;\\n    }\\n    const yLow = Math.max(\\n      Math.min(rect1[1], rect1[3]),\\n      Math.min(rect2[1], rect2[3])\\n    );\\n    const yHigh = Math.min(\\n      Math.max(rect1[1], rect1[3]),\\n      Math.max(rect2[1], rect2[3])\\n    );\\n    if (yLow > yHigh) {\\n      return null;\\n    }\\n\\n    return [xLow, yLow, xHigh, yHigh];\\n  }\\n\\n  static pointBoundingBox(x, y, minMax) {\\n    minMax[0] = Math.min(minMax[0], x);\\n    minMax[1] = Math.min(minMax[1], y);\\n    minMax[2] = Math.max(minMax[2], x);\\n    minMax[3] = Math.max(minMax[3], y);\\n  }\\n\\n  static rectBoundingBox(x0, y0, x1, y1, minMax) {\\n    minMax[0] = Math.min(minMax[0], x0, x1);\\n    minMax[1] = Math.min(minMax[1], y0, y1);\\n    minMax[2] = Math.max(minMax[2], x0, x1);\\n    minMax[3] = Math.max(minMax[3], y0, y1);\\n  }\\n\\n  static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\\n    if (t \u003C= 0 || t >= 1) {\\n      return;\\n    }\\n    const mt = 1 - t;\\n    const tt = t * t;\\n    const ttt = tt * t;\\n    const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\\n    const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\\n    minMax[0] = Math.min(minMax[0], x);\\n    minMax[1] = Math.min(minMax[1], y);\\n    minMax[2] = Math.max(minMax[2], x);\\n    minMax[3] = Math.max(minMax[3], y);\\n  }\\n\\n  static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\\n    if (Math.abs(a) \u003C 1e-12) {\\n      if (Math.abs(b) >= 1e-12) {\\n        this.#getExtremumOnCurve(\\n          x0,\\n          x1,\\n          x2,\\n          x3,\\n          y0,\\n          y1,\\n          y2,\\n          y3,\\n          -c \u002F b,\\n          minMax\\n        );\\n      }\\n      return;\\n    }\\n\\n    const delta = b ** 2 - 4 * c * a;\\n    if (delta \u003C 0) {\\n      return;\\n    }\\n    const sqrtDelta = Math.sqrt(delta);\\n    const a2 = 2 * a;\\n    this.#getExtremumOnCurve(\\n      x0,\\n      x1,\\n      x2,\\n      x3,\\n      y0,\\n      y1,\\n      y2,\\n      y3,\\n      (-b + sqrtDelta) \u002F a2,\\n      minMax\\n    );\\n    this.#getExtremumOnCurve(\\n      x0,\\n      x1,\\n      x2,\\n      x3,\\n      y0,\\n      y1,\\n      y2,\\n      y3,\\n      (-b - sqrtDelta) \u002F a2,\\n      minMax\\n    );\\n  }\\n\\n  \u002F\u002F From https:\u002F\u002Fgithub.com\u002Fadobe-webplatform\u002FSnap.svg\u002Fblob\u002Fb365287722a72526000ac4bfcf0ce4cac2faa015\u002Fsrc\u002Fpath.js#L852\\n  static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\\n    minMax[0] = Math.min(minMax[0], x0, x3);\\n    minMax[1] = Math.min(minMax[1], y0, y3);\\n    minMax[2] = Math.max(minMax[2], x0, x3);\\n    minMax[3] = Math.max(minMax[3], y0, y3);\\n\\n    this.#getExtremum(\\n      x0,\\n      x1,\\n      x2,\\n      x3,\\n      y0,\\n      y1,\\n      y2,\\n      y3,\\n      3 * (-x0 + 3 * (x1 - x2) + x3),\\n      6 * (x0 - 2 * x1 + x2),\\n      3 * (x1 - x0),\\n      minMax\\n    );\\n    this.#getExtremum(\\n      x0,\\n      x1,\\n      x2,\\n      x3,\\n      y0,\\n      y1,\\n      y2,\\n      y3,\\n      3 * (-y0 + 3 * (y1 - y2) + y3),\\n      6 * (y0 - 2 * y1 + y2),\\n      3 * (y1 - y0),\\n      minMax\\n    );\\n  }\\n}\\n\\nconst PDFStringTranslateTable = [\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\\n  0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\\n  0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\\n  0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\\n  0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\\n  0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\\n];\\n\\nfunction stringToPDFString(str, keepEscapeSequence = false) {\\n  \u002F\u002F See section 7.9.2.2 Text String Type.\\n  \u002F\u002F The string can contain some language codes bracketed with 0x1b,\\n  \u002F\u002F so we must remove them.\\n  if (str[0] >= \\\"\\\\xEF\\\") {\\n    let encoding;\\n    if (str[0] === \\\"\\\\xFE\\\" && str[1] === \\\"\\\\xFF\\\") {\\n      encoding = \\\"utf-16be\\\";\\n      if (str.length % 2 === 1) {\\n        str = str.slice(0, -1);\\n      }\\n    } else if (str[0] === \\\"\\\\xFF\\\" && str[1] === \\\"\\\\xFE\\\") {\\n      encoding = \\\"utf-16le\\\";\\n      if (str.length % 2 === 1) {\\n        str = str.slice(0, -1);\\n      }\\n    } else if (str[0] === \\\"\\\\xEF\\\" && str[1] === \\\"\\\\xBB\\\" && str[2] === \\\"\\\\xBF\\\") {\\n      encoding = \\\"utf-8\\\";\\n    }\\n\\n    if (encoding) {\\n      try {\\n        const decoder = new TextDecoder(encoding, { fatal: true });\\n        const buffer = stringToBytes(str);\\n        const decoded = decoder.decode(buffer);\\n        if (keepEscapeSequence || !decoded.includes(\\\"\\\\x1b\\\")) {\\n          return decoded;\\n        }\\n        return decoded.replaceAll(\u002F\\\\x1b[^\\\\x1b]*(?:\\\\x1b|$)\u002Fg, \\\"\\\");\\n      } catch (ex) {\\n        warn(`stringToPDFString: \\\"${ex}\\\".`);\\n      }\\n    }\\n  }\\n  \u002F\u002F ISO Latin 1\\n  const strBuf = [];\\n  for (let i = 0, ii = str.length; i \u003C ii; i++) {\\n    const charCode = str.charCodeAt(i);\\n    if (!keepEscapeSequence && charCode === 0x1b) {\\n      \u002F\u002F eslint-disable-next-line no-empty\\n      while (++i \u003C ii && str.charCodeAt(i) !== 0x1b) {}\\n      continue;\\n    }\\n    const code = PDFStringTranslateTable[charCode];\\n    strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\\n  }\\n  return strBuf.join(\\\"\\\");\\n}\\n\\nfunction stringToUTF8String(str) {\\n  return decodeURIComponent(escape(str));\\n}\\n\\nfunction utf8StringToString(str) {\\n  return unescape(encodeURIComponent(str));\\n}\\n\\nfunction isArrayEqual(arr1, arr2) {\\n  if (arr1.length !== arr2.length) {\\n    return false;\\n  }\\n  for (let i = 0, ii = arr1.length; i \u003C ii; i++) {\\n    if (arr1[i] !== arr2[i]) {\\n      return false;\\n    }\\n  }\\n  return true;\\n}\\n\\nfunction getModificationDate(date = new Date()) {\\n  const buffer = [\\n    date.getUTCFullYear().toString(),\\n    (date.getUTCMonth() + 1).toString().padStart(2, \\\"0\\\"),\\n    date.getUTCDate().toString().padStart(2, \\\"0\\\"),\\n    date.getUTCHours().toString().padStart(2, \\\"0\\\"),\\n    date.getUTCMinutes().toString().padStart(2, \\\"0\\\"),\\n    date.getUTCSeconds().toString().padStart(2, \\\"0\\\"),\\n  ];\\n\\n  return buffer.join(\\\"\\\");\\n}\\n\\nlet NormalizeRegex = null;\\nlet NormalizationMap = null;\\nfunction normalizeUnicode(str) {\\n  if (!NormalizeRegex) {\\n    \u002F\u002F In order to generate the following regex:\\n    \u002F\u002F  - create a PDF containing all the chars in the range 0000-FFFF with\\n    \u002F\u002F    a NFKC which is different of the char.\\n    \u002F\u002F  - copy and paste all those chars and get the ones where NFKC is\\n    \u002F\u002F    required.\\n    \u002F\u002F It appears that most the chars here contain some ligatures.\\n    NormalizeRegex =\\n      \u002F([\\\\u00a0\\\\u00b5\\\\u037e\\\\u0eb3\\\\u2000-\\\\u200a\\\\u202f\\\\u2126\\\\ufb00-\\\\ufb04\\\\ufb06\\\\ufb20-\\\\ufb36\\\\ufb38-\\\\ufb3c\\\\ufb3e\\\\ufb40-\\\\ufb41\\\\ufb43-\\\\ufb44\\\\ufb46-\\\\ufba1\\\\ufba4-\\\\ufba9\\\\ufbae-\\\\ufbb1\\\\ufbd3-\\\\ufbdc\\\\ufbde-\\\\ufbe7\\\\ufbea-\\\\ufbf8\\\\ufbfc-\\\\ufbfd\\\\ufc00-\\\\ufc5d\\\\ufc64-\\\\ufcf1\\\\ufcf5-\\\\ufd3d\\\\ufd88\\\\ufdf4\\\\ufdfa-\\\\ufdfb\\\\ufe71\\\\ufe77\\\\ufe79\\\\ufe7b\\\\ufe7d]+)|(\\\\ufb05+)\u002Fgu;\\n    NormalizationMap = new Map([[\\\"ﬅ\\\", \\\"ſt\\\"]]);\\n  }\\n  return str.replaceAll(NormalizeRegex, (_, p1, p2) =>\\n    p1 ? p1.normalize(\\\"NFKC\\\") : NormalizationMap.get(p2)\\n  );\\n}\\n\\nfunction getUuid() {\\n  if (\\n    (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) ||\\n    typeof crypto.randomUUID === \\\"function\\\"\\n  ) {\\n    return crypto.randomUUID();\\n  }\\n  const buf = new Uint8Array(32);\\n  crypto.getRandomValues(buf);\\n  return bytesToString(buf);\\n}\\n\\nconst AnnotationPrefix = \\\"pdfjs_internal_id_\\\";\\n\\nfunction _isValidExplicitDest(validRef, validName, dest) {\\n  if (!Array.isArray(dest) || dest.length \u003C 2) {\\n    return false;\\n  }\\n  const [page, zoom, ...args] = dest;\\n  if (!validRef(page) && !Number.isInteger(page)) {\\n    return false;\\n  }\\n  if (!validName(zoom)) {\\n    return false;\\n  }\\n  const argsLen = args.length;\\n  let allowNull = true;\\n  switch (zoom.name) {\\n    case \\\"XYZ\\\":\\n      if (argsLen \u003C 2 || argsLen > 3) {\\n        return false;\\n      }\\n      break;\\n    case \\\"Fit\\\":\\n    case \\\"FitB\\\":\\n      return argsLen === 0;\\n    case \\\"FitH\\\":\\n    case \\\"FitBH\\\":\\n    case \\\"FitV\\\":\\n    case \\\"FitBV\\\":\\n      if (argsLen > 1) {\\n        return false;\\n      }\\n      break;\\n    case \\\"FitR\\\":\\n      if (argsLen !== 4) {\\n        return false;\\n      }\\n      allowNull = false;\\n      break;\\n    default:\\n      return false;\\n  }\\n  for (const arg of args) {\\n    if (typeof arg === \\\"number\\\" || (allowNull && arg === null)) {\\n      continue;\\n    }\\n    return false;\\n  }\\n  return true;\\n}\\n\\n\u002F\u002F TOOD: Replace all occurrences of this function with `Math.clamp` once\\n\u002F\u002F       https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-math-clamp\u002F is generally available.\\nfunction MathClamp(v, min, max) {\\n  return Math.min(Math.max(v, min), max);\\n}\\n\\n\u002F\u002F TODO: Remove this once `Uint8Array.prototype.toHex` is generally available.\\nfunction toHexUtil(arr) {\\n  if (Uint8Array.prototype.toHex) {\\n    return arr.toHex();\\n  }\\n  return Array.from(arr, num => hexNumbers[num]).join(\\\"\\\");\\n}\\n\\n\u002F\u002F TODO: Remove this once `Uint8Array.prototype.toBase64` is generally\\n\u002F\u002F       available.\\nfunction toBase64Util(arr) {\\n  if (Uint8Array.prototype.toBase64) {\\n    return arr.toBase64();\\n  }\\n  return btoa(bytesToString(arr));\\n}\\n\\n\u002F\u002F TODO: Remove this once `Uint8Array.fromBase64` is generally available.\\nfunction fromBase64Util(str) {\\n  if (Uint8Array.fromBase64) {\\n    return Uint8Array.fromBase64(str);\\n  }\\n  return stringToBytes(atob(str));\\n}\\n\\n\u002F\u002F TODO: Remove this once https:\u002F\u002Fbugzilla.mozilla.org\u002Fshow_bug.cgi?id=1928493\\n\u002F\u002F       is fixed.\\nif (\\n  (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"SKIP_BABEL\\\")) &&\\n  typeof Promise.try !== \\\"function\\\"\\n) {\\n  Promise.try = function (fn, ...args) {\\n    return new Promise(resolve => {\\n      resolve(fn(...args));\\n    });\\n  };\\n}\\n\\n\u002F\u002F TODO: Remove this once the `javascript.options.experimental.math_sumprecise`\\n\u002F\u002F       preference is removed from Firefox.\\nif (typeof Math.sumPrecise !== \\\"function\\\") {\\n  \u002F\u002F Note that this isn't a \\\"proper\\\" polyfill, but since we're only using it to\\n  \u002F\u002F replace `Array.prototype.reduce()` invocations it should be fine.\\n  Math.sumPrecise = function (numbers) {\\n    return numbers.reduce((a, b) => a + b, 0);\\n  };\\n}\\n\\nif (\\n  typeof PDFJSDev !== \\\"undefined\\\" &&\\n  !PDFJSDev.test(\\\"SKIP_BABEL\\\") &&\\n  typeof AbortSignal.any !== \\\"function\\\"\\n) {\\n  AbortSignal.any = function (iterable) {\\n    const ac = new AbortController();\\n    const { signal } = ac;\\n\\n    \u002F\u002F Return immediately if any of the signals are already aborted.\\n    for (const s of iterable) {\\n      if (s.aborted) {\\n        ac.abort(s.reason);\\n        return signal;\\n      }\\n    }\\n    \u002F\u002F Register \\\"abort\\\" listeners for all signals.\\n    for (const s of iterable) {\\n      s.addEventListener(\\n        \\\"abort\\\",\\n        () => {\\n          ac.abort(s.reason);\\n        },\\n        { signal } \u002F\u002F Automatically remove the listener.\\n      );\\n    }\\n\\n    return signal;\\n  };\\n}\\n\\nexport {\\n  _isValidExplicitDest,\\n  AbortException,\\n  AnnotationActionEventType,\\n  AnnotationBorderStyleType,\\n  AnnotationEditorParamsType,\\n  AnnotationEditorPrefix,\\n  AnnotationEditorType,\\n  AnnotationFieldFlag,\\n  AnnotationFlag,\\n  AnnotationMode,\\n  AnnotationPrefix,\\n  AnnotationReplyType,\\n  AnnotationType,\\n  assert,\\n  BaseException,\\n  BASELINE_FACTOR,\\n  bytesToString,\\n  createValidAbsoluteUrl,\\n  DocumentActionEventType,\\n  DrawOPS,\\n  FeatureTest,\\n  FONT_IDENTITY_MATRIX,\\n  FormatError,\\n  fromBase64Util,\\n  getModificationDate,\\n  getUuid,\\n  getVerbosityLevel,\\n  hexNumbers,\\n  ImageKind,\\n  info,\\n  InvalidPDFException,\\n  isArrayEqual,\\n  isNodeJS,\\n  LINE_DESCENT_FACTOR,\\n  LINE_FACTOR,\\n  MathClamp,\\n  normalizeUnicode,\\n  objectSize,\\n  OPS,\\n  PageActionEventType,\\n  PasswordException,\\n  PasswordResponses,\\n  PermissionFlag,\\n  RenderingIntentFlag,\\n  ResponseException,\\n  setVerbosityLevel,\\n  shadow,\\n  string32,\\n  stringToBytes,\\n  stringToPDFString,\\n  stringToUTF8String,\\n  TextRenderingMode,\\n  toBase64Util,\\n  toHexUtil,\\n  UnknownErrorException,\\n  unreachable,\\n  updateUrlHash,\\n  utf8StringToString,\\n  Util,\\n  VerbosityLevel,\\n  warn,\\n};\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { assert, shadow, unreachable } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nconst CIRCULAR_REF = Symbol(\\\"CIRCULAR_REF\\\");\\nconst EOF = Symbol(\\\"EOF\\\");\\n\\nlet CmdCache = Object.create(null);\\nlet NameCache = Object.create(null);\\nlet RefCache = Object.create(null);\\n\\nfunction clearPrimitiveCaches() {\\n  CmdCache = Object.create(null);\\n  NameCache = Object.create(null);\\n  RefCache = Object.create(null);\\n}\\n\\nclass Name {\\n  constructor(name) {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      typeof name !== \\\"string\\\"\\n    ) {\\n      unreachable('Name: The \\\"name\\\" must be a string.');\\n    }\\n    this.name = name;\\n  }\\n\\n  static get(name) {\\n    \u002F\u002F eslint-disable-next-line no-restricted-syntax\\n    return (NameCache[name] ||= new Name(name));\\n  }\\n}\\n\\nclass Cmd {\\n  constructor(cmd) {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      typeof cmd !== \\\"string\\\"\\n    ) {\\n      unreachable('Cmd: The \\\"cmd\\\" must be a string.');\\n    }\\n    this.cmd = cmd;\\n  }\\n\\n  static get(cmd) {\\n    \u002F\u002F eslint-disable-next-line no-restricted-syntax\\n    return (CmdCache[cmd] ||= new Cmd(cmd));\\n  }\\n}\\n\\nconst nonSerializable = function nonSerializableClosure() {\\n  return nonSerializable; \u002F\u002F Creating closure on some variable.\\n};\\n\\nclass Dict {\\n  constructor(xref = null) {\\n    \u002F\u002F Map should only be used internally, use functions below to access.\\n    this._map = new Map();\\n    this.xref = xref;\\n    this.objId = null;\\n    this.suppressEncryption = false;\\n    this.__nonSerializable__ = nonSerializable; \u002F\u002F Disable cloning of the Dict.\\n  }\\n\\n  assignXref(newXref) {\\n    this.xref = newXref;\\n  }\\n\\n  get size() {\\n    return this._map.size;\\n  }\\n\\n  \u002F\u002F Automatically dereferences Ref objects.\\n  get(key1, key2, key3) {\\n    let value = this._map.get(key1);\\n    if (value === undefined && key2 !== undefined) {\\n      if (\\n        (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n        key2.length \u003C key1.length\\n      ) {\\n        unreachable(\\\"Dict.get: Expected keys to be ordered by length.\\\");\\n      }\\n      value = this._map.get(key2);\\n      if (value === undefined && key3 !== undefined) {\\n        if (\\n          (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n          key3.length \u003C key2.length\\n        ) {\\n          unreachable(\\\"Dict.get: Expected keys to be ordered by length.\\\");\\n        }\\n        value = this._map.get(key3);\\n      }\\n    }\\n    if (value instanceof Ref && this.xref) {\\n      return this.xref.fetch(value, this.suppressEncryption);\\n    }\\n    return value;\\n  }\\n\\n  \u002F\u002F Same as get(), but returns a promise and uses fetchIfRefAsync().\\n  async getAsync(key1, key2, key3) {\\n    let value = this._map.get(key1);\\n    if (value === undefined && key2 !== undefined) {\\n      if (\\n        (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n        key2.length \u003C key1.length\\n      ) {\\n        unreachable(\\\"Dict.getAsync: Expected keys to be ordered by length.\\\");\\n      }\\n      value = this._map.get(key2);\\n      if (value === undefined && key3 !== undefined) {\\n        if (\\n          (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n          key3.length \u003C key2.length\\n        ) {\\n          unreachable(\\\"Dict.getAsync: Expected keys to be ordered by length.\\\");\\n        }\\n        value = this._map.get(key3);\\n      }\\n    }\\n    if (value instanceof Ref && this.xref) {\\n      return this.xref.fetchAsync(value, this.suppressEncryption);\\n    }\\n    return value;\\n  }\\n\\n  \u002F\u002F Same as get(), but dereferences all elements if the result is an Array.\\n  getArray(key1, key2, key3) {\\n    let value = this._map.get(key1);\\n    if (value === undefined && key2 !== undefined) {\\n      if (\\n        (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n        key2.length \u003C key1.length\\n      ) {\\n        unreachable(\\\"Dict.getArray: Expected keys to be ordered by length.\\\");\\n      }\\n      value = this._map.get(key2);\\n      if (value === undefined && key3 !== undefined) {\\n        if (\\n          (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n          key3.length \u003C key2.length\\n        ) {\\n          unreachable(\\\"Dict.getArray: Expected keys to be ordered by length.\\\");\\n        }\\n        value = this._map.get(key3);\\n      }\\n    }\\n    if (value instanceof Ref && this.xref) {\\n      value = this.xref.fetch(value, this.suppressEncryption);\\n    }\\n\\n    if (Array.isArray(value)) {\\n      value = value.slice(); \u002F\u002F Ensure that we don't modify the Dict data.\\n      for (let i = 0, ii = value.length; i \u003C ii; i++) {\\n        if (value[i] instanceof Ref && this.xref) {\\n          value[i] = this.xref.fetch(value[i], this.suppressEncryption);\\n        }\\n      }\\n    }\\n    return value;\\n  }\\n\\n  \u002F\u002F No dereferencing.\\n  getRaw(key) {\\n    return this._map.get(key);\\n  }\\n\\n  getKeys() {\\n    return [...this._map.keys()];\\n  }\\n\\n  \u002F\u002F No dereferencing.\\n  getRawValues() {\\n    return [...this._map.values()];\\n  }\\n\\n  set(key, value) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      if (typeof key !== \\\"string\\\") {\\n        unreachable('Dict.set: The \\\"key\\\" must be a string.');\\n      } else if (value === undefined) {\\n        unreachable('Dict.set: The \\\"value\\\" cannot be undefined.');\\n      }\\n    }\\n    this._map.set(key, value);\\n  }\\n\\n  has(key) {\\n    return this._map.has(key);\\n  }\\n\\n  *[Symbol.iterator]() {\\n    for (const [key, value] of this._map) {\\n      yield [\\n        key,\\n        value instanceof Ref && this.xref\\n          ? this.xref.fetch(value, this.suppressEncryption)\\n          : value,\\n      ];\\n    }\\n  }\\n\\n  static get empty() {\\n    const emptyDict = new Dict(null);\\n\\n    emptyDict.set = (key, value) => {\\n      unreachable(\\\"Should not call `set` on the empty dictionary.\\\");\\n    };\\n    return shadow(this, \\\"empty\\\", emptyDict);\\n  }\\n\\n  static merge({ xref, dictArray, mergeSubDicts = false }) {\\n    const mergedDict = new Dict(xref),\\n      properties = new Map();\\n\\n    for (const dict of dictArray) {\\n      if (!(dict instanceof Dict)) {\\n        continue;\\n      }\\n      for (const [key, value] of dict._map) {\\n        let property = properties.get(key);\\n        if (property === undefined) {\\n          property = [];\\n          properties.set(key, property);\\n        } else if (!mergeSubDicts || !(value instanceof Dict)) {\\n          \u002F\u002F Ignore additional entries, if either:\\n          \u002F\u002F  - This is a \\\"shallow\\\" merge, where only the first element matters.\\n          \u002F\u002F  - The value is *not* a `Dict`, since other types cannot be merged.\\n          continue;\\n        }\\n        property.push(value);\\n      }\\n    }\\n    for (const [name, values] of properties) {\\n      if (values.length === 1 || !(values[0] instanceof Dict)) {\\n        mergedDict._map.set(name, values[0]);\\n        continue;\\n      }\\n      const subDict = new Dict(xref);\\n\\n      for (const dict of values) {\\n        for (const [key, value] of dict._map) {\\n          if (!subDict._map.has(key)) {\\n            subDict._map.set(key, value);\\n          }\\n        }\\n      }\\n      if (subDict.size > 0) {\\n        mergedDict._map.set(name, subDict);\\n      }\\n    }\\n    properties.clear();\\n\\n    return mergedDict.size > 0 ? mergedDict : Dict.empty;\\n  }\\n\\n  clone() {\\n    const dict = new Dict(this.xref);\\n    for (const key of this.getKeys()) {\\n      dict.set(key, this.getRaw(key));\\n    }\\n    return dict;\\n  }\\n\\n  delete(key) {\\n    delete this._map[key];\\n  }\\n}\\n\\nclass Ref {\\n  constructor(num, gen) {\\n    this.num = num;\\n    this.gen = gen;\\n  }\\n\\n  toString() {\\n    \u002F\u002F This function is hot, so we make the string as compact as possible.\\n    \u002F\u002F |this.gen| is almost always zero, so we treat that case specially.\\n    if (this.gen === 0) {\\n      return `${this.num}R`;\\n    }\\n    return `${this.num}R${this.gen}`;\\n  }\\n\\n  static fromString(str) {\\n    const ref = RefCache[str];\\n    if (ref) {\\n      return ref;\\n    }\\n    const m = \u002F^(\\\\d+)R(\\\\d*)$\u002F.exec(str);\\n    if (!m || m[1] === \\\"0\\\") {\\n      return null;\\n    }\\n\\n    \u002F\u002F eslint-disable-next-line no-restricted-syntax\\n    return (RefCache[str] = new Ref(\\n      parseInt(m[1]),\\n      !m[2] ? 0 : parseInt(m[2])\\n    ));\\n  }\\n\\n  static get(num, gen) {\\n    const key = gen === 0 ? `${num}R` : `${num}R${gen}`;\\n    \u002F\u002F eslint-disable-next-line no-restricted-syntax\\n    return (RefCache[key] ||= new Ref(num, gen));\\n  }\\n}\\n\\n\u002F\u002F The reference is identified by number and generation.\\n\u002F\u002F This structure stores only one instance of the reference.\\nclass RefSet {\\n  constructor(parent = null) {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      parent &&\\n      !(parent instanceof RefSet)\\n    ) {\\n      unreachable('RefSet: Invalid \\\"parent\\\" value.');\\n    }\\n    this._set = new Set(parent?._set);\\n  }\\n\\n  has(ref) {\\n    return this._set.has(ref.toString());\\n  }\\n\\n  put(ref) {\\n    this._set.add(ref.toString());\\n  }\\n\\n  remove(ref) {\\n    this._set.delete(ref.toString());\\n  }\\n\\n  [Symbol.iterator]() {\\n    return this._set.values();\\n  }\\n\\n  clear() {\\n    this._set.clear();\\n  }\\n}\\n\\nclass RefSetCache {\\n  constructor() {\\n    this._map = new Map();\\n  }\\n\\n  get size() {\\n    return this._map.size;\\n  }\\n\\n  get(ref) {\\n    return this._map.get(ref.toString());\\n  }\\n\\n  has(ref) {\\n    return this._map.has(ref.toString());\\n  }\\n\\n  put(ref, obj) {\\n    this._map.set(ref.toString(), obj);\\n  }\\n\\n  putAlias(ref, aliasRef) {\\n    this._map.set(ref.toString(), this.get(aliasRef));\\n  }\\n\\n  [Symbol.iterator]() {\\n    return this._map.values();\\n  }\\n\\n  clear() {\\n    this._map.clear();\\n  }\\n\\n  *values() {\\n    yield* this._map.values();\\n  }\\n\\n  *items() {\\n    for (const [ref, value] of this._map) {\\n      yield [Ref.fromString(ref), value];\\n    }\\n  }\\n}\\n\\nfunction isName(v, name) {\\n  return v instanceof Name && (name === undefined || v.name === name);\\n}\\n\\nfunction isCmd(v, cmd) {\\n  return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);\\n}\\n\\nfunction isDict(v, type) {\\n  return (\\n    v instanceof Dict && (type === undefined || isName(v.get(\\\"Type\\\"), type))\\n  );\\n}\\n\\nfunction isRefsEqual(v1, v2) {\\n  if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n    assert(\\n      v1 instanceof Ref && v2 instanceof Ref,\\n      \\\"isRefsEqual: Both parameters should be `Ref`s.\\\"\\n    );\\n  }\\n  return v1.num === v2.num && v1.gen === v2.gen;\\n}\\n\\nexport {\\n  CIRCULAR_REF,\\n  clearPrimitiveCaches,\\n  Cmd,\\n  Dict,\\n  EOF,\\n  isCmd,\\n  isDict,\\n  isName,\\n  isRefsEqual,\\n  Name,\\n  Ref,\\n  RefSet,\\n  RefSetCache,\\n};\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { bytesToString, shadow, unreachable } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nclass BaseStream {\\n  constructor() {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      this.constructor === BaseStream\\n    ) {\\n      unreachable(\\\"Cannot initialize BaseStream.\\\");\\n    }\\n  }\\n\\n  \u002F\u002F eslint-disable-next-line getter-return\\n  get length() {\\n    unreachable(\\\"Abstract getter `length` accessed\\\");\\n  }\\n\\n  \u002F\u002F eslint-disable-next-line getter-return\\n  get isEmpty() {\\n    unreachable(\\\"Abstract getter `isEmpty` accessed\\\");\\n  }\\n\\n  get isDataLoaded() {\\n    return shadow(this, \\\"isDataLoaded\\\", true);\\n  }\\n\\n  getByte() {\\n    unreachable(\\\"Abstract method `getByte` called\\\");\\n  }\\n\\n  getBytes(length) {\\n    unreachable(\\\"Abstract method `getBytes` called\\\");\\n  }\\n\\n  \u002F**\\n   * NOTE: This method can only be used to get image-data that is guaranteed\\n   *       to be fully loaded, since otherwise intermittent errors may occur;\\n   *       note the `ObjectLoader` class.\\n   *\u002F\\n  async getImageData(length, decoderOptions) {\\n    return this.getBytes(length, decoderOptions);\\n  }\\n\\n  async asyncGetBytes() {\\n    unreachable(\\\"Abstract method `asyncGetBytes` called\\\");\\n  }\\n\\n  get isAsync() {\\n    return false;\\n  }\\n\\n  get isAsyncDecoder() {\\n    return false;\\n  }\\n\\n  get canAsyncDecodeImageFromBuffer() {\\n    return false;\\n  }\\n\\n  async getTransferableImage() {\\n    return null;\\n  }\\n\\n  peekByte() {\\n    const peekedByte = this.getByte();\\n    if (peekedByte !== -1) {\\n      this.pos--;\\n    }\\n    return peekedByte;\\n  }\\n\\n  peekBytes(length) {\\n    const bytes = this.getBytes(length);\\n    this.pos -= bytes.length;\\n    return bytes;\\n  }\\n\\n  getUint16() {\\n    const b0 = this.getByte();\\n    const b1 = this.getByte();\\n    if (b0 === -1 || b1 === -1) {\\n      return -1;\\n    }\\n    return (b0 \u003C\u003C 8) + b1;\\n  }\\n\\n  getInt32() {\\n    const b0 = this.getByte();\\n    const b1 = this.getByte();\\n    const b2 = this.getByte();\\n    const b3 = this.getByte();\\n    return (b0 \u003C\u003C 24) + (b1 \u003C\u003C 16) + (b2 \u003C\u003C 8) + b3;\\n  }\\n\\n  getByteRange(begin, end) {\\n    unreachable(\\\"Abstract method `getByteRange` called\\\");\\n  }\\n\\n  getString(length) {\\n    return bytesToString(this.getBytes(length));\\n  }\\n\\n  skip(n) {\\n    this.pos += n || 1;\\n  }\\n\\n  reset() {\\n    unreachable(\\\"Abstract method `reset` called\\\");\\n  }\\n\\n  moveStart() {\\n    unreachable(\\\"Abstract method `moveStart` called\\\");\\n  }\\n\\n  makeSubStream(start, length, dict = null) {\\n    unreachable(\\\"Abstract method `makeSubStream` called\\\");\\n  }\\n\\n  \u002F**\\n   * @returns {Array | null}\\n   *\u002F\\n  getBaseStreams() {\\n    return null;\\n  }\\n}\\n\\nexport { BaseStream };\\n\",\"\u002F* Copyright 2019 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  AnnotationEditorPrefix,\\n  assert,\\n  BaseException,\\n  hexNumbers,\\n  objectSize,\\n  stringToPDFString,\\n  Util,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { Dict, isName, Ref, RefSet } from \\\".\u002Fprimitives.js\\\";\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\n\\nconst PDF_VERSION_REGEXP = \u002F^[1-9]\\\\.\\\\d$\u002F;\\nconst MAX_INT_32 = 2 ** 31 - 1;\\nconst MIN_INT_32 = -(2 ** 31);\\n\\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\\n\\nconst RESOURCES_KEYS_OPERATOR_LIST = [\\n  \\\"ColorSpace\\\",\\n  \\\"ExtGState\\\",\\n  \\\"Font\\\",\\n  \\\"Pattern\\\",\\n  \\\"Properties\\\",\\n  \\\"Shading\\\",\\n  \\\"XObject\\\",\\n];\\n\\nconst RESOURCES_KEYS_TEXT_CONTENT = [\\n  \\\"ExtGState\\\",\\n  \\\"Font\\\",\\n  \\\"Properties\\\",\\n  \\\"XObject\\\",\\n];\\n\\nfunction getLookupTableFactory(initializer) {\\n  let lookup;\\n  return function () {\\n    if (initializer) {\\n      lookup = Object.create(null);\\n      initializer(lookup);\\n      initializer = null;\\n    }\\n    return lookup;\\n  };\\n}\\n\\nclass MissingDataException extends BaseException {\\n  constructor(begin, end) {\\n    super(`Missing data [${begin}, ${end})`, \\\"MissingDataException\\\");\\n    this.begin = begin;\\n    this.end = end;\\n  }\\n}\\n\\nclass ParserEOFException extends BaseException {\\n  constructor(msg) {\\n    super(msg, \\\"ParserEOFException\\\");\\n  }\\n}\\n\\nclass XRefEntryException extends BaseException {\\n  constructor(msg) {\\n    super(msg, \\\"XRefEntryException\\\");\\n  }\\n}\\n\\nclass XRefParseException extends BaseException {\\n  constructor(msg) {\\n    super(msg, \\\"XRefParseException\\\");\\n  }\\n}\\n\\n\u002F**\\n * Combines multiple ArrayBuffers into a single Uint8Array.\\n * @param {Array\u003CArrayBuffer>} arr - An array of ArrayBuffers.\\n * @returns {Uint8Array}\\n *\u002F\\nfunction arrayBuffersToBytes(arr) {\\n  if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n    for (const item of arr) {\\n      assert(\\n        item instanceof ArrayBuffer,\\n        \\\"arrayBuffersToBytes - expected an ArrayBuffer.\\\"\\n      );\\n    }\\n  }\\n  const length = arr.length;\\n  if (length === 0) {\\n    return new Uint8Array(0);\\n  }\\n  if (length === 1) {\\n    return new Uint8Array(arr[0]);\\n  }\\n  let dataLength = 0;\\n  for (let i = 0; i \u003C length; i++) {\\n    dataLength += arr[i].byteLength;\\n  }\\n  const data = new Uint8Array(dataLength);\\n  let pos = 0;\\n  for (let i = 0; i \u003C length; i++) {\\n    const item = new Uint8Array(arr[i]);\\n    data.set(item, pos);\\n    pos += item.byteLength;\\n  }\\n  return data;\\n}\\n\\nasync function fetchBinaryData(url) {\\n  const response = await fetch(url);\\n  if (!response.ok) {\\n    throw new Error(\\n      `Failed to fetch file \\\"${url}\\\" with \\\"${response.statusText}\\\".`\\n    );\\n  }\\n  return new Uint8Array(await response.arrayBuffer());\\n}\\n\\n\u002F**\\n * Get the value of an inheritable property.\\n *\\n * If the PDF specification explicitly lists a property in a dictionary as\\n * inheritable, then the value of the property may be present in the dictionary\\n * itself or in one or more parents of the dictionary.\\n *\\n * If the key is not found in the tree, `undefined` is returned. Otherwise,\\n * the value for the key is returned or, if `stopWhenFound` is `false`, a list\\n * of values is returned.\\n *\\n * @param {Dict} dict - Dictionary from where to start the traversal.\\n * @param {string} key - The key of the property to find the value for.\\n * @param {boolean} getArray - Whether or not the value should be fetched as an\\n *   array. The default value is `false`.\\n * @param {boolean} stopWhenFound - Whether or not to stop the traversal when\\n *   the key is found. If set to `false`, we always walk up the entire parent\\n *   chain, for example to be able to find `\\\\Resources` placed on multiple\\n *   levels of the tree. The default value is `true`.\\n *\u002F\\nfunction getInheritableProperty({\\n  dict,\\n  key,\\n  getArray = false,\\n  stopWhenFound = true,\\n}) {\\n  let values;\\n  const visited = new RefSet();\\n\\n  while (dict instanceof Dict && !(dict.objId && visited.has(dict.objId))) {\\n    if (dict.objId) {\\n      visited.put(dict.objId);\\n    }\\n    const value = getArray ? dict.getArray(key) : dict.get(key);\\n    if (value !== undefined) {\\n      if (stopWhenFound) {\\n        return value;\\n      }\\n      (values ||= []).push(value);\\n    }\\n    dict = dict.get(\\\"Parent\\\");\\n  }\\n  return values;\\n}\\n\\n\u002F**\\n * Get the parent dictionary to update when a property is set.\\n *\\n * @param {Dict} dict - Dictionary from where to start the traversal.\\n * @param {Ref} ref - The reference to the dictionary.\\n * @param {XRef} xref - The `XRef` instance.\\n *\u002F\\nfunction getParentToUpdate(dict, ref, xref) {\\n  const visited = new RefSet();\\n  const firstDict = dict;\\n  const result = { dict: null, ref: null };\\n\\n  while (dict instanceof Dict && !visited.has(ref)) {\\n    visited.put(ref);\\n    if (dict.has(\\\"T\\\")) {\\n      break;\\n    }\\n    ref = dict.getRaw(\\\"Parent\\\");\\n    if (!(ref instanceof Ref)) {\\n      return result;\\n    }\\n    dict = xref.fetch(ref);\\n  }\\n  if (dict instanceof Dict && dict !== firstDict) {\\n    result.dict = dict;\\n    result.ref = ref;\\n  }\\n  return result;\\n}\\n\\n\u002F\u002F prettier-ignore\\nconst ROMAN_NUMBER_MAP = [\\n  \\\"\\\", \\\"C\\\", \\\"CC\\\", \\\"CCC\\\", \\\"CD\\\", \\\"D\\\", \\\"DC\\\", \\\"DCC\\\", \\\"DCCC\\\", \\\"CM\\\",\\n  \\\"\\\", \\\"X\\\", \\\"XX\\\", \\\"XXX\\\", \\\"XL\\\", \\\"L\\\", \\\"LX\\\", \\\"LXX\\\", \\\"LXXX\\\", \\\"XC\\\",\\n  \\\"\\\", \\\"I\\\", \\\"II\\\", \\\"III\\\", \\\"IV\\\", \\\"V\\\", \\\"VI\\\", \\\"VII\\\", \\\"VIII\\\", \\\"IX\\\"\\n];\\n\\n\u002F**\\n * Converts positive integers to (upper case) Roman numerals.\\n * @param {number} number - The number that should be converted.\\n * @param {boolean} lowerCase - Indicates if the result should be converted\\n *   to lower case letters. The default value is `false`.\\n * @returns {string} The resulting Roman number.\\n *\u002F\\nfunction toRomanNumerals(number, lowerCase = false) {\\n  assert(\\n    Number.isInteger(number) && number > 0,\\n    \\\"The number should be a positive integer.\\\"\\n  );\\n\\n  const roman =\\n    \\\"M\\\".repeat((number \u002F 1000) | 0) +\\n    ROMAN_NUMBER_MAP[((number % 1000) \u002F 100) | 0] +\\n    ROMAN_NUMBER_MAP[10 + (((number % 100) \u002F 10) | 0)] +\\n    ROMAN_NUMBER_MAP[20 + (number % 10)];\\n  return lowerCase ? roman.toLowerCase() : roman;\\n}\\n\\n\u002F\u002F Calculate the base 2 logarithm of the number `x`. This differs from the\\n\u002F\u002F native function in the sense that it returns the ceiling value and that it\\n\u002F\u002F returns 0 instead of `Infinity`\u002F`NaN` for `x` values smaller than\u002Fequal to 0.\\nfunction log2(x) {\\n  return x > 0 ? Math.ceil(Math.log2(x)) : 0;\\n}\\n\\nfunction readInt8(data, offset) {\\n  return (data[offset] \u003C\u003C 24) >> 24;\\n}\\n\\nfunction readInt16(data, offset) {\\n  return ((data[offset] \u003C\u003C 24) | (data[offset + 1] \u003C\u003C 16)) >> 16;\\n}\\n\\nfunction readUint16(data, offset) {\\n  return (data[offset] \u003C\u003C 8) | data[offset + 1];\\n}\\n\\nfunction readUint32(data, offset) {\\n  return (\\n    ((data[offset] \u003C\u003C 24) |\\n      (data[offset + 1] \u003C\u003C 16) |\\n      (data[offset + 2] \u003C\u003C 8) |\\n      data[offset + 3]) >>>\\n    0\\n  );\\n}\\n\\n\u002F\u002F Checks if ch is one of the following characters: SPACE, TAB, CR or LF.\\nfunction isWhiteSpace(ch) {\\n  return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a;\\n}\\n\\n\u002F**\\n * Checks if something is an Array containing only boolean values,\\n * and (optionally) checks its length.\\n * @param {any} arr\\n * @param {number | null} len\\n * @returns {boolean}\\n *\u002F\\nfunction isBooleanArray(arr, len) {\\n  return (\\n    Array.isArray(arr) &&\\n    (len === null || arr.length === len) &&\\n    arr.every(x => typeof x === \\\"boolean\\\")\\n  );\\n}\\n\\n\u002F**\\n * Checks if something is an Array containing only numbers,\\n * and (optionally) checks its length.\\n * @param {any} arr\\n * @param {number | null} len\\n * @returns {boolean}\\n *\u002F\\nfunction isNumberArray(arr, len) {\\n  if (Array.isArray(arr)) {\\n    return (\\n      (len === null || arr.length === len) &&\\n      arr.every(x => typeof x === \\\"number\\\")\\n    );\\n  }\\n\\n  \u002F\u002F This check allows us to have typed arrays but not the\\n  \u002F\u002F BigInt64Array\u002FBigUint64Array types (their elements aren't \\\"number\\\").\\n  return (\\n    ArrayBuffer.isView(arr) &&\\n    !(arr instanceof BigInt64Array || arr instanceof BigUint64Array) &&\\n    (len === null || arr.length === len)\\n  );\\n}\\n\\n\u002F\u002F Returns the matrix, or the fallback value if it's invalid.\\nfunction lookupMatrix(arr, fallback) {\\n  return isNumberArray(arr, 6) ? arr : fallback;\\n}\\n\\n\u002F\u002F Returns the rectangle, or the fallback value if it's invalid.\\nfunction lookupRect(arr, fallback) {\\n  return isNumberArray(arr, 4) ? arr : fallback;\\n}\\n\\n\u002F\u002F Returns the normalized rectangle, or the fallback value if it's invalid.\\nfunction lookupNormalRect(arr, fallback) {\\n  return isNumberArray(arr, 4) ? Util.normalizeRect(arr) : fallback;\\n}\\n\\n\u002F**\\n * AcroForm field names use an array like notation to refer to\\n * repeated XFA elements e.g. foo.bar[nnn].\\n * see: XFA Spec Chapter 3 - Repeated Elements\\n *\\n * @param {string} path - XFA path name.\\n * @returns {Array} - Array of Objects with the name and pos of\\n * each part of the path.\\n *\u002F\\nfunction parseXFAPath(path) {\\n  const positionPattern = \u002F(.+)\\\\[(\\\\d+)\\\\]$\u002F;\\n  return path.split(\\\".\\\").map(component => {\\n    const m = component.match(positionPattern);\\n    if (m) {\\n      return { name: m[1], pos: parseInt(m[2], 10) };\\n    }\\n    return { name: component, pos: 0 };\\n  });\\n}\\n\\nfunction escapePDFName(str) {\\n  const buffer = [];\\n  let start = 0;\\n  for (let i = 0, ii = str.length; i \u003C ii; i++) {\\n    const char = str.charCodeAt(i);\\n    \u002F\u002F Whitespace or delimiters aren't regular chars, so escape them.\\n    if (\\n      char \u003C 0x21 ||\\n      char > 0x7e ||\\n      char === 0x23 \u002F* # *\u002F ||\\n      char === 0x28 \u002F* ( *\u002F ||\\n      char === 0x29 \u002F* ) *\u002F ||\\n      char === 0x3c \u002F* \u003C *\u002F ||\\n      char === 0x3e \u002F* > *\u002F ||\\n      char === 0x5b \u002F* [ *\u002F ||\\n      char === 0x5d \u002F* ] *\u002F ||\\n      char === 0x7b \u002F* { *\u002F ||\\n      char === 0x7d \u002F* } *\u002F ||\\n      char === 0x2f \u002F* \u002F *\u002F ||\\n      char === 0x25 \u002F* % *\u002F\\n    ) {\\n      if (start \u003C i) {\\n        buffer.push(str.substring(start, i));\\n      }\\n      buffer.push(`#${char.toString(16)}`);\\n      start = i + 1;\\n    }\\n  }\\n\\n  if (buffer.length === 0) {\\n    return str;\\n  }\\n\\n  if (start \u003C str.length) {\\n    buffer.push(str.substring(start, str.length));\\n  }\\n\\n  return buffer.join(\\\"\\\");\\n}\\n\\n\u002F\u002F Replace \\\"(\\\", \\\")\\\", \\\"\\\\n\\\", \\\"\\\\r\\\" and \\\"\\\\\\\" by \\\"\\\\(\\\", \\\"\\\\)\\\", \\\"\\\\\\\\n\\\", \\\"\\\\\\\\r\\\" and \\\"\\\\\\\\\\\"\\n\u002F\u002F in order to write it in a PDF file.\\nfunction escapeString(str) {\\n  return str.replaceAll(\u002F([()\\\\\\\\\\\\n\\\\r])\u002Fg, match => {\\n    if (match === \\\"\\\\n\\\") {\\n      return \\\"\\\\\\\\n\\\";\\n    } else if (match === \\\"\\\\r\\\") {\\n      return \\\"\\\\\\\\r\\\";\\n    }\\n    return `\\\\\\\\${match}`;\\n  });\\n}\\n\\nfunction _collectJS(entry, xref, list, parents) {\\n  if (!entry) {\\n    return;\\n  }\\n\\n  let parent = null;\\n  if (entry instanceof Ref) {\\n    if (parents.has(entry)) {\\n      \u002F\u002F If we've already found entry then we've a cycle.\\n      return;\\n    }\\n    parent = entry;\\n    parents.put(parent);\\n    entry = xref.fetch(entry);\\n  }\\n  if (Array.isArray(entry)) {\\n    for (const element of entry) {\\n      _collectJS(element, xref, list, parents);\\n    }\\n  } else if (entry instanceof Dict) {\\n    if (isName(entry.get(\\\"S\\\"), \\\"JavaScript\\\")) {\\n      const js = entry.get(\\\"JS\\\");\\n      let code;\\n      if (js instanceof BaseStream) {\\n        code = js.getString();\\n      } else if (typeof js === \\\"string\\\") {\\n        code = js;\\n      }\\n      code &&= stringToPDFString(\\n        code,\\n        \u002F* keepEscapeSequence = *\u002F true\\n      ).replaceAll(\\\"\\\\x00\\\", \\\"\\\");\\n      if (code) {\\n        list.push(code);\\n      }\\n    }\\n    _collectJS(entry.getRaw(\\\"Next\\\"), xref, list, parents);\\n  }\\n\\n  if (parent) {\\n    parents.remove(parent);\\n  }\\n}\\n\\nfunction collectActions(xref, dict, eventType) {\\n  const actions = Object.create(null);\\n  const additionalActionsDicts = getInheritableProperty({\\n    dict,\\n    key: \\\"AA\\\",\\n    stopWhenFound: false,\\n  });\\n  if (additionalActionsDicts) {\\n    \u002F\u002F additionalActionsDicts contains dicts from ancestors\\n    \u002F\u002F as they're found in the tree from bottom to top.\\n    \u002F\u002F So the dicts are visited in reverse order to guarantee\\n    \u002F\u002F that actions from elder ancestors will be overwritten\\n    \u002F\u002F by ones from younger ancestors.\\n    for (let i = additionalActionsDicts.length - 1; i >= 0; i--) {\\n      const additionalActions = additionalActionsDicts[i];\\n      if (!(additionalActions instanceof Dict)) {\\n        continue;\\n      }\\n      for (const key of additionalActions.getKeys()) {\\n        const action = eventType[key];\\n        if (!action) {\\n          continue;\\n        }\\n        const actionDict = additionalActions.getRaw(key);\\n        const parents = new RefSet();\\n        const list = [];\\n        _collectJS(actionDict, xref, list, parents);\\n        if (list.length > 0) {\\n          actions[action] = list;\\n        }\\n      }\\n    }\\n  }\\n  \u002F\u002F Collect the Action if any (we may have one on pushbutton).\\n  if (dict.has(\\\"A\\\")) {\\n    const actionDict = dict.get(\\\"A\\\");\\n    const parents = new RefSet();\\n    const list = [];\\n    _collectJS(actionDict, xref, list, parents);\\n    if (list.length > 0) {\\n      actions.Action = list;\\n    }\\n  }\\n  return objectSize(actions) > 0 ? actions : null;\\n}\\n\\nconst XMLEntities = {\\n  \u002F* \u003C *\u002F 0x3c: \\\"&lt;\\\",\\n  \u002F* > *\u002F 0x3e: \\\"&gt;\\\",\\n  \u002F* & *\u002F 0x26: \\\"&amp;\\\",\\n  \u002F* \\\" *\u002F 0x22: \\\"&quot;\\\",\\n  \u002F* ' *\u002F 0x27: \\\"&apos;\\\",\\n};\\n\\nfunction* codePointIter(str) {\\n  for (let i = 0, ii = str.length; i \u003C ii; i++) {\\n    const char = str.codePointAt(i);\\n    if (char > 0xd7ff && (char \u003C 0xe000 || char > 0xfffd)) {\\n      \u002F\u002F char is represented by two u16\\n      i++;\\n    }\\n    yield char;\\n  }\\n}\\n\\nfunction encodeToXmlString(str) {\\n  const buffer = [];\\n  let start = 0;\\n  for (let i = 0, ii = str.length; i \u003C ii; i++) {\\n    const char = str.codePointAt(i);\\n    if (0x20 \u003C= char && char \u003C= 0x7e) {\\n      \u002F\u002F ascii\\n      const entity = XMLEntities[char];\\n      if (entity) {\\n        if (start \u003C i) {\\n          buffer.push(str.substring(start, i));\\n        }\\n        buffer.push(entity);\\n        start = i + 1;\\n      }\\n    } else {\\n      if (start \u003C i) {\\n        buffer.push(str.substring(start, i));\\n      }\\n      buffer.push(`&#x${char.toString(16).toUpperCase()};`);\\n      if (char > 0xd7ff && (char \u003C 0xe000 || char > 0xfffd)) {\\n        \u002F\u002F char is represented by two u16\\n        i++;\\n      }\\n      start = i + 1;\\n    }\\n  }\\n\\n  if (buffer.length === 0) {\\n    return str;\\n  }\\n  if (start \u003C str.length) {\\n    buffer.push(str.substring(start, str.length));\\n  }\\n  return buffer.join(\\\"\\\");\\n}\\n\\nfunction validateFontName(fontFamily, mustWarn = false) {\\n  \u002F\u002F See https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FCSS\u002Fstring.\\n  const m = \u002F^(\\\"|').*(\\\"|')$\u002F.exec(fontFamily);\\n  if (m && m[1] === m[2]) {\\n    const re = new RegExp(`[^\\\\\\\\\\\\\\\\]${m[1]}`);\\n    if (re.test(fontFamily.slice(1, -1))) {\\n      if (mustWarn) {\\n        warn(`FontFamily contains unescaped ${m[1]}: ${fontFamily}.`);\\n      }\\n      return false;\\n    }\\n  } else {\\n    \u002F\u002F See https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FCSS\u002Fcustom-ident.\\n    for (const ident of fontFamily.split(\u002F[ \\\\t]+\u002F)) {\\n      if (\u002F^(\\\\d|(-(\\\\d|-)))\u002F.test(ident) || !\u002F^[\\\\w-\\\\\\\\]+$\u002F.test(ident)) {\\n        if (mustWarn) {\\n          warn(`FontFamily contains invalid \u003Ccustom-ident>: ${fontFamily}.`);\\n        }\\n        return false;\\n      }\\n    }\\n  }\\n  return true;\\n}\\n\\nfunction validateCSSFont(cssFontInfo) {\\n  \u002F\u002F See https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FCSS\u002Ffont-style.\\n  const DEFAULT_CSS_FONT_OBLIQUE = \\\"14\\\";\\n  \u002F\u002F See https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FCSS\u002Ffont-weight.\\n  const DEFAULT_CSS_FONT_WEIGHT = \\\"400\\\";\\n  const CSS_FONT_WEIGHT_VALUES = new Set([\\n    \\\"100\\\",\\n    \\\"200\\\",\\n    \\\"300\\\",\\n    \\\"400\\\",\\n    \\\"500\\\",\\n    \\\"600\\\",\\n    \\\"700\\\",\\n    \\\"800\\\",\\n    \\\"900\\\",\\n    \\\"1000\\\",\\n    \\\"normal\\\",\\n    \\\"bold\\\",\\n    \\\"bolder\\\",\\n    \\\"lighter\\\",\\n  ]);\\n\\n  const { fontFamily, fontWeight, italicAngle } = cssFontInfo;\\n\\n  if (!validateFontName(fontFamily, true)) {\\n    return false;\\n  }\\n\\n  const weight = fontWeight ? fontWeight.toString() : \\\"\\\";\\n  cssFontInfo.fontWeight = CSS_FONT_WEIGHT_VALUES.has(weight)\\n    ? weight\\n    : DEFAULT_CSS_FONT_WEIGHT;\\n\\n  const angle = parseFloat(italicAngle);\\n  cssFontInfo.italicAngle =\\n    isNaN(angle) || angle \u003C -90 || angle > 90\\n      ? DEFAULT_CSS_FONT_OBLIQUE\\n      : italicAngle.toString();\\n\\n  return true;\\n}\\n\\nfunction recoverJsURL(str) {\\n  \u002F\u002F Attempt to recover valid URLs from `JS` entries with certain\\n  \u002F\u002F white-listed formats:\\n  \u002F\u002F  - window.open('http:\u002F\u002Fexample.com')\\n  \u002F\u002F  - app.launchURL('http:\u002F\u002Fexample.com', true)\\n  \u002F\u002F  - xfa.host.gotoURL('http:\u002F\u002Fexample.com')\\n  const URL_OPEN_METHODS = [\\\"app.launchURL\\\", \\\"window.open\\\", \\\"xfa.host.gotoURL\\\"];\\n  const regex = new RegExp(\\n    \\\"^\\\\\\\\s*(\\\" +\\n      URL_OPEN_METHODS.join(\\\"|\\\").replaceAll(\\\".\\\", \\\"\\\\\\\\.\\\") +\\n      \\\")\\\\\\\\((?:'|\\\\\\\")([^'\\\\\\\"]*)(?:'|\\\\\\\")(?:,\\\\\\\\s*(\\\\\\\\w+)\\\\\\\\)|\\\\\\\\))\\\",\\n    \\\"i\\\"\\n  );\\n\\n  const jsUrl = regex.exec(str);\\n  if (jsUrl?.[2]) {\\n    return {\\n      url: jsUrl[2],\\n      newWindow: jsUrl[1] === \\\"app.launchURL\\\" && jsUrl[3] === \\\"true\\\",\\n    };\\n  }\\n\\n  return null;\\n}\\n\\nfunction numberToString(value) {\\n  if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n    assert(\\n      typeof value === \\\"number\\\",\\n      `numberToString - the value (${value}) should be a number.`\\n    );\\n  }\\n\\n  if (Number.isInteger(value)) {\\n    return value.toString();\\n  }\\n\\n  const roundedValue = Math.round(value * 100);\\n  if (roundedValue % 100 === 0) {\\n    return (roundedValue \u002F 100).toString();\\n  }\\n\\n  if (roundedValue % 10 === 0) {\\n    return value.toFixed(1);\\n  }\\n\\n  return value.toFixed(2);\\n}\\n\\nfunction getNewAnnotationsMap(annotationStorage) {\\n  if (!annotationStorage) {\\n    return null;\\n  }\\n  const newAnnotationsByPage = new Map();\\n  \u002F\u002F The concept of page in a XFA is very different, so\\n  \u002F\u002F editing is just not implemented.\\n  for (const [key, value] of annotationStorage) {\\n    if (!key.startsWith(AnnotationEditorPrefix)) {\\n      continue;\\n    }\\n    let annotations = newAnnotationsByPage.get(value.pageIndex);\\n    if (!annotations) {\\n      annotations = [];\\n      newAnnotationsByPage.set(value.pageIndex, annotations);\\n    }\\n    annotations.push(value);\\n  }\\n  return newAnnotationsByPage.size > 0 ? newAnnotationsByPage : null;\\n}\\n\\nfunction stringToAsciiOrUTF16BE(str) {\\n  return isAscii(str) ? str : stringToUTF16String(str, \u002F* bigEndian = *\u002F true);\\n}\\n\\nfunction isAscii(str) {\\n  return \u002F^[\\\\x00-\\\\x7F]*$\u002F.test(str);\\n}\\n\\nfunction stringToUTF16HexString(str) {\\n  const buf = [];\\n  for (let i = 0, ii = str.length; i \u003C ii; i++) {\\n    const char = str.charCodeAt(i);\\n    buf.push(hexNumbers[(char >> 8) & 0xff], hexNumbers[char & 0xff]);\\n  }\\n  return buf.join(\\\"\\\");\\n}\\n\\nfunction stringToUTF16String(str, bigEndian = false) {\\n  const buf = [];\\n  if (bigEndian) {\\n    buf.push(\\\"\\\\xFE\\\\xFF\\\");\\n  }\\n  for (let i = 0, ii = str.length; i \u003C ii; i++) {\\n    const char = str.charCodeAt(i);\\n    buf.push(\\n      String.fromCharCode((char >> 8) & 0xff),\\n      String.fromCharCode(char & 0xff)\\n    );\\n  }\\n  return buf.join(\\\"\\\");\\n}\\n\\nfunction getRotationMatrix(rotation, width, height) {\\n  switch (rotation) {\\n    case 90:\\n      return [0, 1, -1, 0, width, 0];\\n    case 180:\\n      return [-1, 0, 0, -1, width, height];\\n    case 270:\\n      return [0, -1, 1, 0, 0, height];\\n    default:\\n      throw new Error(\\\"Invalid rotation\\\");\\n  }\\n}\\n\\n\u002F**\\n * Get the number of bytes to use to represent the given positive integer.\\n * If n is zero, the function returns 0 which means that we don't need to waste\\n * a byte to represent it.\\n * @param {number} x - a positive integer.\\n * @returns {number}\\n *\u002F\\nfunction getSizeInBytes(x) {\\n  \u002F\u002F n bits are required for numbers up to 2^n - 1.\\n  \u002F\u002F So for a number x, we need ceil(log2(1 + x)) bits.\\n  return Math.ceil(Math.ceil(Math.log2(1 + x)) \u002F 8);\\n}\\n\\nexport {\\n  arrayBuffersToBytes,\\n  codePointIter,\\n  collectActions,\\n  encodeToXmlString,\\n  escapePDFName,\\n  escapeString,\\n  fetchBinaryData,\\n  getInheritableProperty,\\n  getLookupTableFactory,\\n  getNewAnnotationsMap,\\n  getParentToUpdate,\\n  getRotationMatrix,\\n  getSizeInBytes,\\n  IDENTITY_MATRIX,\\n  isAscii,\\n  isBooleanArray,\\n  isNumberArray,\\n  isWhiteSpace,\\n  log2,\\n  lookupMatrix,\\n  lookupNormalRect,\\n  lookupRect,\\n  MAX_INT_32,\\n  MIN_INT_32,\\n  MissingDataException,\\n  numberToString,\\n  ParserEOFException,\\n  parseXFAPath,\\n  PDF_VERSION_REGEXP,\\n  readInt16,\\n  readInt8,\\n  readUint16,\\n  readUint32,\\n  recoverJsURL,\\n  RESOURCES_KEYS_OPERATOR_LIST,\\n  RESOURCES_KEYS_TEXT_CONTENT,\\n  stringToAsciiOrUTF16BE,\\n  stringToUTF16HexString,\\n  stringToUTF16String,\\n  toRomanNumerals,\\n  validateCSSFont,\\n  validateFontName,\\n  XRefEntryException,\\n  XRefParseException,\\n};\\n\",\"\u002F* Copyright 2025 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nclass QCMS {\\n  static #memoryArray = null;\\n\\n  static _memory = null;\\n\\n  static _mustAddAlpha = false;\\n\\n  static _destBuffer = null;\\n\\n  static _destOffset = 0;\\n\\n  static _destLength = 0;\\n\\n  static _cssColor = \\\"\\\";\\n\\n  static _makeHexColor = null;\\n\\n  static get _memoryArray() {\\n    const array = this.#memoryArray;\\n    if (array?.byteLength) {\\n      return array;\\n    }\\n    return (this.#memoryArray = new Uint8Array(this._memory.buffer));\\n  }\\n}\\n\\nfunction copy_result(ptr, len) {\\n  \u002F\u002F This function is called from the wasm module (it's an external\\n  \u002F\u002F \\\"C\\\" function). Its goal is to copy the result from the wasm memory\\n  \u002F\u002F to the destination buffer without any intermediate copies.\\n  const { _mustAddAlpha, _destBuffer, _destOffset, _destLength, _memoryArray } =\\n    QCMS;\\n  if (len === _destLength) {\\n    _destBuffer.set(_memoryArray.subarray(ptr, ptr + len), _destOffset);\\n    return;\\n  }\\n  if (_mustAddAlpha) {\\n    for (let i = ptr, ii = ptr + len, j = _destOffset; i \u003C ii; i += 3, j += 4) {\\n      _destBuffer[j] = _memoryArray[i];\\n      _destBuffer[j + 1] = _memoryArray[i + 1];\\n      _destBuffer[j + 2] = _memoryArray[i + 2];\\n      _destBuffer[j + 3] = 255;\\n    }\\n  } else {\\n    for (let i = ptr, ii = ptr + len, j = _destOffset; i \u003C ii; i += 3, j += 4) {\\n      _destBuffer[j] = _memoryArray[i];\\n      _destBuffer[j + 1] = _memoryArray[i + 1];\\n      _destBuffer[j + 2] = _memoryArray[i + 2];\\n    }\\n  }\\n}\\n\\nfunction copy_rgb(ptr) {\\n  const { _destBuffer, _destOffset, _memoryArray } = QCMS;\\n  _destBuffer[_destOffset] = _memoryArray[ptr];\\n  _destBuffer[_destOffset + 1] = _memoryArray[ptr + 1];\\n  _destBuffer[_destOffset + 2] = _memoryArray[ptr + 2];\\n}\\n\\nfunction make_cssRGB(ptr) {\\n  const { _memoryArray } = QCMS;\\n  QCMS._cssColor = QCMS._makeHexColor(\\n    _memoryArray[ptr],\\n    _memoryArray[ptr + 1],\\n    _memoryArray[ptr + 2]\\n  );\\n}\\n\\nexport { copy_result, copy_rgb, make_cssRGB, QCMS };\\n\",\"\u002F* THIS FILE IS GENERATED - DO NOT EDIT *\u002F\\nimport { copy_result, copy_rgb, make_cssRGB } from '.\u002Fqcms_utils.js';\\n\\nlet wasm;\\n\\nconst cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );\\n\\nif (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };\\n\\nlet cachedUint8ArrayMemory0 = null;\\n\\nfunction getUint8ArrayMemory0() {\\n    if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\\n        cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\\n    }\\n    return cachedUint8ArrayMemory0;\\n}\\n\\nfunction getStringFromWasm0(ptr, len) {\\n    ptr = ptr >>> 0;\\n    return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\\n}\\n\\nlet WASM_VECTOR_LEN = 0;\\n\\nfunction passArray8ToWasm0(arg, malloc) {\\n    const ptr = malloc(arg.length * 1, 1) >>> 0;\\n    getUint8ArrayMemory0().set(arg, ptr \u002F 1);\\n    WASM_VECTOR_LEN = arg.length;\\n    return ptr;\\n}\\n\u002F**\\n * # Safety\\n *\\n * This function is called directly from JavaScript.\\n * @param {number} transformer\\n * @param {Uint8Array} src\\n *\u002F\\nexport function qcms_convert_array(transformer, src) {\\n    const ptr0 = passArray8ToWasm0(src, wasm.__wbindgen_malloc);\\n    const len0 = WASM_VECTOR_LEN;\\n    wasm.qcms_convert_array(transformer, ptr0, len0);\\n}\\n\\n\u002F**\\n * # Safety\\n *\\n * This function is called directly from JavaScript.\\n * @param {number} transformer\\n * @param {number} src\\n * @param {boolean} css\\n *\u002F\\nexport function qcms_convert_one(transformer, src, css) {\\n    wasm.qcms_convert_one(transformer, src, css);\\n}\\n\\n\u002F**\\n * # Safety\\n *\\n * This function is called directly from JavaScript.\\n * @param {number} transformer\\n * @param {number} src1\\n * @param {number} src2\\n * @param {number} src3\\n * @param {boolean} css\\n *\u002F\\nexport function qcms_convert_three(transformer, src1, src2, src3, css) {\\n    wasm.qcms_convert_three(transformer, src1, src2, src3, css);\\n}\\n\\n\u002F**\\n * # Safety\\n *\\n * This function is called directly from JavaScript.\\n * @param {number} transformer\\n * @param {number} src1\\n * @param {number} src2\\n * @param {number} src3\\n * @param {number} src4\\n * @param {boolean} css\\n *\u002F\\nexport function qcms_convert_four(transformer, src1, src2, src3, src4, css) {\\n    wasm.qcms_convert_four(transformer, src1, src2, src3, src4, css);\\n}\\n\\n\u002F**\\n * # Safety\\n *\\n * This function is called directly from JavaScript.\\n * @param {Uint8Array} mem\\n * @param {DataType} in_type\\n * @param {Intent} intent\\n * @returns {number}\\n *\u002F\\nexport function qcms_transformer_from_memory(mem, in_type, intent) {\\n    const ptr0 = passArray8ToWasm0(mem, wasm.__wbindgen_malloc);\\n    const len0 = WASM_VECTOR_LEN;\\n    const ret = wasm.qcms_transformer_from_memory(ptr0, len0, in_type, intent);\\n    return ret >>> 0;\\n}\\n\\n\u002F**\\n * # Safety\\n *\\n * This function is called directly from JavaScript.\\n * @param {number} transformer\\n *\u002F\\nexport function qcms_drop_transformer(transformer) {\\n    wasm.qcms_drop_transformer(transformer);\\n}\\n\\n\u002F**\\n * @enum {0 | 1 | 2 | 3 | 4 | 5}\\n *\u002F\\nexport const DataType = Object.freeze({\\n    RGB8: 0, \\\"0\\\": \\\"RGB8\\\",\\n    RGBA8: 1, \\\"1\\\": \\\"RGBA8\\\",\\n    BGRA8: 2, \\\"2\\\": \\\"BGRA8\\\",\\n    Gray8: 3, \\\"3\\\": \\\"Gray8\\\",\\n    GrayA8: 4, \\\"4\\\": \\\"GrayA8\\\",\\n    CMYK: 5, \\\"5\\\": \\\"CMYK\\\",\\n});\\n\u002F**\\n * @enum {0 | 1 | 2 | 3}\\n *\u002F\\nexport const Intent = Object.freeze({\\n    Perceptual: 0, \\\"0\\\": \\\"Perceptual\\\",\\n    RelativeColorimetric: 1, \\\"1\\\": \\\"RelativeColorimetric\\\",\\n    Saturation: 2, \\\"2\\\": \\\"Saturation\\\",\\n    AbsoluteColorimetric: 3, \\\"3\\\": \\\"AbsoluteColorimetric\\\",\\n});\\n\\nasync function __wbg_load(module, imports) {\\n    if (typeof Response === 'function' && module instanceof Response) {\\n        if (typeof WebAssembly.instantiateStreaming === 'function') {\\n            try {\\n                return await WebAssembly.instantiateStreaming(module, imports);\\n\\n            } catch (e) {\\n                if (module.headers.get('Content-Type') != 'application\u002Fwasm') {\\n                    console.warn(\\\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application\u002Fwasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\\\n\\\", e);\\n\\n                } else {\\n                    throw e;\\n                }\\n            }\\n        }\\n\\n        const bytes = await module.arrayBuffer();\\n        return await WebAssembly.instantiate(bytes, imports);\\n\\n    } else {\\n        const instance = await WebAssembly.instantiate(module, imports);\\n\\n        if (instance instanceof WebAssembly.Instance) {\\n            return { instance, module };\\n\\n        } else {\\n            return instance;\\n        }\\n    }\\n}\\n\\nfunction __wbg_get_imports() {\\n    const imports = {};\\n    imports.wbg = {};\\n    imports.wbg.__wbg_copyresult_b08ee7d273f295dd = function(arg0, arg1) {\\n        copy_result(arg0 >>> 0, arg1 >>> 0);\\n    };\\n    imports.wbg.__wbg_copyrgb_d60ce17bb05d9b67 = function(arg0) {\\n        copy_rgb(arg0 >>> 0);\\n    };\\n    imports.wbg.__wbg_makecssRGB_893bf0cd9fdb302d = function(arg0) {\\n        make_cssRGB(arg0 >>> 0);\\n    };\\n    imports.wbg.__wbindgen_init_externref_table = function() {\\n        const table = wasm.__wbindgen_export_0;\\n        const offset = table.grow(4);\\n        table.set(0, undefined);\\n        table.set(offset + 0, undefined);\\n        table.set(offset + 1, null);\\n        table.set(offset + 2, true);\\n        table.set(offset + 3, false);\\n        ;\\n    };\\n    imports.wbg.__wbindgen_throw = function(arg0, arg1) {\\n        throw new Error(getStringFromWasm0(arg0, arg1));\\n    };\\n\\n    return imports;\\n}\\n\\nfunction __wbg_init_memory(imports, memory) {\\n\\n}\\n\\nfunction __wbg_finalize_init(instance, module) {\\n    wasm = instance.exports;\\n    __wbg_init.__wbindgen_wasm_module = module;\\n    cachedUint8ArrayMemory0 = null;\\n\\n\\n    wasm.__wbindgen_start();\\n    return wasm;\\n}\\n\\nfunction initSync(module) {\\n    if (wasm !== undefined) return wasm;\\n\\n\\n    if (typeof module !== 'undefined') {\\n        if (Object.getPrototypeOf(module) === Object.prototype) {\\n            ({module} = module)\\n        } else {\\n            console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\\n        }\\n    }\\n\\n    const imports = __wbg_get_imports();\\n\\n    __wbg_init_memory(imports);\\n\\n    if (!(module instanceof WebAssembly.Module)) {\\n        module = new WebAssembly.Module(module);\\n    }\\n\\n    const instance = new WebAssembly.Instance(module, imports);\\n\\n    return __wbg_finalize_init(instance, module);\\n}\\n\\nasync function __wbg_init(module_or_path) {\\n    if (wasm !== undefined) return wasm;\\n\\n\\n    if (typeof module_or_path !== 'undefined') {\\n        if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\\n            ({module_or_path} = module_or_path)\\n        } else {\\n            console.warn('using deprecated parameters for the initialization function; pass a single object instead')\\n        }\\n    }\\n\\n\\n    const imports = __wbg_get_imports();\\n\\n    if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\\n        module_or_path = fetch(module_or_path);\\n    }\\n\\n    __wbg_init_memory(imports);\\n\\n    const { instance, module } = await __wbg_load(await module_or_path, imports);\\n\\n    return __wbg_finalize_init(instance, module);\\n}\\n\\nexport { initSync };\\nexport default __wbg_init;\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  assert,\\n  FeatureTest,\\n  FormatError,\\n  info,\\n  MathClamp,\\n  shadow,\\n  unreachable,\\n  Util,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\n\\n\u002F**\\n * Resizes an RGB image with 3 components.\\n * @param {TypedArray} src - The source buffer.\\n * @param {TypedArray} dest - The destination buffer.\\n * @param {number} w1 - Original width.\\n * @param {number} h1 - Original height.\\n * @param {number} w2 - New width.\\n * @param {number} h2 - New height.\\n * @param {number} alpha01 - Size reserved for the alpha channel.\\n *\u002F\\nfunction resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {\\n  const COMPONENTS = 3;\\n  alpha01 = alpha01 !== 1 ? 0 : alpha01;\\n  const xRatio = w1 \u002F w2;\\n  const yRatio = h1 \u002F h2;\\n  let newIndex = 0,\\n    oldIndex;\\n  const xScaled = new Uint16Array(w2);\\n  const w1Scanline = w1 * COMPONENTS;\\n\\n  for (let i = 0; i \u003C w2; i++) {\\n    xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\\n  }\\n  for (let i = 0; i \u003C h2; i++) {\\n    const py = Math.floor(i * yRatio) * w1Scanline;\\n    for (let j = 0; j \u003C w2; j++) {\\n      oldIndex = py + xScaled[j];\\n      dest[newIndex++] = src[oldIndex++];\\n      dest[newIndex++] = src[oldIndex++];\\n      dest[newIndex++] = src[oldIndex++];\\n      newIndex += alpha01;\\n    }\\n  }\\n}\\n\\nfunction resizeRgbaImage(src, dest, w1, h1, w2, h2, alpha01) {\\n  const xRatio = w1 \u002F w2;\\n  const yRatio = h1 \u002F h2;\\n  let newIndex = 0;\\n  const xScaled = new Uint16Array(w2);\\n\\n  if (alpha01 === 1) {\\n    for (let i = 0; i \u003C w2; i++) {\\n      xScaled[i] = Math.floor(i * xRatio);\\n    }\\n    const src32 = new Uint32Array(src.buffer);\\n    const dest32 = new Uint32Array(dest.buffer);\\n    const rgbMask = FeatureTest.isLittleEndian ? 0x00ffffff : 0xffffff00;\\n    for (let i = 0; i \u003C h2; i++) {\\n      const buf = src32.subarray(Math.floor(i * yRatio) * w1);\\n      for (let j = 0; j \u003C w2; j++) {\\n        dest32[newIndex++] |= buf[xScaled[j]] & rgbMask;\\n      }\\n    }\\n  } else {\\n    const COMPONENTS = 4;\\n    const w1Scanline = w1 * COMPONENTS;\\n    for (let i = 0; i \u003C w2; i++) {\\n      xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\\n    }\\n    for (let i = 0; i \u003C h2; i++) {\\n      const buf = src.subarray(Math.floor(i * yRatio) * w1Scanline);\\n      for (let j = 0; j \u003C w2; j++) {\\n        const oldIndex = xScaled[j];\\n        dest[newIndex++] = buf[oldIndex];\\n        dest[newIndex++] = buf[oldIndex + 1];\\n        dest[newIndex++] = buf[oldIndex + 2];\\n      }\\n    }\\n  }\\n}\\n\\nfunction copyRgbaImage(src, dest, alpha01) {\\n  if (alpha01 === 1) {\\n    const src32 = new Uint32Array(src.buffer);\\n    const dest32 = new Uint32Array(dest.buffer);\\n    const rgbMask = FeatureTest.isLittleEndian ? 0x00ffffff : 0xffffff00;\\n    for (let i = 0, ii = src32.length; i \u003C ii; i++) {\\n      dest32[i] |= src32[i] & rgbMask;\\n    }\\n  } else {\\n    let j = 0;\\n    for (let i = 0, ii = src.length; i \u003C ii; i += 4) {\\n      dest[j++] = src[i];\\n      dest[j++] = src[i + 1];\\n      dest[j++] = src[i + 2];\\n    }\\n  }\\n}\\n\\nclass ColorSpace {\\n  static #rgbBuf = new Uint8ClampedArray(3);\\n\\n  constructor(name, numComps) {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      this.constructor === ColorSpace\\n    ) {\\n      unreachable(\\\"Cannot initialize ColorSpace.\\\");\\n    }\\n    this.name = name;\\n    this.numComps = numComps;\\n  }\\n\\n  \u002F**\\n   * Converts the color value to the RGB color. The color components are\\n   * located in the src array starting from the srcOffset. Returns the array\\n   * of the rgb components, each value ranging from [0,255].\\n   *\u002F\\n  getRgb(src, srcOffset, output = new Uint8ClampedArray(3)) {\\n    this.getRgbItem(src, srcOffset, output, 0);\\n    return output;\\n  }\\n\\n  getRgbHex(src, srcOffset) {\\n    const buffer = this.getRgb(src, srcOffset, ColorSpace.#rgbBuf);\\n    return Util.makeHexColor(buffer[0], buffer[1], buffer[2]);\\n  }\\n\\n  \u002F**\\n   * Converts the color value to the RGB color, similar to the getRgb method.\\n   * The result placed into the dest array starting from the destOffset.\\n   *\u002F\\n  getRgbItem(src, srcOffset, dest, destOffset) {\\n    unreachable(\\\"Should not call ColorSpace.getRgbItem\\\");\\n  }\\n\\n  \u002F**\\n   * Converts the specified number of the color values to the RGB colors.\\n   * The colors are located in the src array starting from the srcOffset.\\n   * The result is placed into the dest array starting from the destOffset.\\n   * The src array items shall be in [0,2^bits) range, the dest array items\\n   * will be in [0,255] range. alpha01 indicates how many alpha components\\n   * there are in the dest array; it will be either 0 (RGB array) or 1 (RGBA\\n   * array).\\n   *\u002F\\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\\n    unreachable(\\\"Should not call ColorSpace.getRgbBuffer\\\");\\n  }\\n\\n  \u002F**\\n   * Determines the number of bytes required to store the result of the\\n   * conversion done by the getRgbBuffer method. As in getRgbBuffer,\\n   * |alpha01| is either 0 (RGB output) or 1 (RGBA output).\\n   *\u002F\\n  getOutputLength(inputLength, alpha01) {\\n    unreachable(\\\"Should not call ColorSpace.getOutputLength\\\");\\n  }\\n\\n  \u002F**\\n   * Returns true if source data will be equal the result\u002Foutput data.\\n   *\u002F\\n  isPassthrough(bits) {\\n    return false;\\n  }\\n\\n  \u002F**\\n   * Refer to the static `ColorSpace.isDefaultDecode` method below.\\n   *\u002F\\n  isDefaultDecode(decodeMap, bpc) {\\n    return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\\n  }\\n\\n  \u002F**\\n   * Fills in the RGB colors in the destination buffer.  alpha01 indicates\\n   * how many alpha components there are in the dest array; it will be either\\n   * 0 (RGB array) or 1 (RGBA array).\\n   *\u002F\\n  fillRgb(\\n    dest,\\n    originalWidth,\\n    originalHeight,\\n    width,\\n    height,\\n    actualHeight,\\n    bpc,\\n    comps,\\n    alpha01\\n  ) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'ColorSpace.fillRgb: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    const count = originalWidth * originalHeight;\\n    let rgbBuf = null;\\n    const numComponentColors = 1 \u003C\u003C bpc;\\n    const needsResizing = originalHeight !== height || originalWidth !== width;\\n\\n    if (this.isPassthrough(bpc)) {\\n      rgbBuf = comps;\\n    } else if (\\n      this.numComps === 1 &&\\n      count > numComponentColors &&\\n      this.name !== \\\"DeviceGray\\\" &&\\n      this.name !== \\\"DeviceRGB\\\"\\n    ) {\\n      \u002F\u002F Optimization: create a color map when there is just one component and\\n      \u002F\u002F we are converting more colors than the size of the color map. We\\n      \u002F\u002F don't build the map if the colorspace is gray or rgb since those\\n      \u002F\u002F methods are faster than building a map. This mainly offers big speed\\n      \u002F\u002F ups for indexed and alternate colorspaces.\\n      \u002F\u002F\\n      \u002F\u002F TODO it may be worth while to cache the color map. While running\\n      \u002F\u002F testing I never hit a cache so I will leave that out for now (perhaps\\n      \u002F\u002F we are reparsing colorspaces too much?).\\n      const allColors =\\n        bpc \u003C= 8\\n          ? new Uint8Array(numComponentColors)\\n          : new Uint16Array(numComponentColors);\\n      for (let i = 0; i \u003C numComponentColors; i++) {\\n        allColors[i] = i;\\n      }\\n      const colorMap = new Uint8ClampedArray(numComponentColors * 3);\\n      this.getRgbBuffer(\\n        allColors,\\n        0,\\n        numComponentColors,\\n        colorMap,\\n        0,\\n        bpc,\\n        \u002F* alpha01 = *\u002F 0\\n      );\\n\\n      if (!needsResizing) {\\n        \u002F\u002F Fill in the RGB values directly into |dest|.\\n        let destPos = 0;\\n        for (let i = 0; i \u003C count; ++i) {\\n          const key = comps[i] * 3;\\n          dest[destPos++] = colorMap[key];\\n          dest[destPos++] = colorMap[key + 1];\\n          dest[destPos++] = colorMap[key + 2];\\n          destPos += alpha01;\\n        }\\n      } else {\\n        rgbBuf = new Uint8Array(count * 3);\\n        let rgbPos = 0;\\n        for (let i = 0; i \u003C count; ++i) {\\n          const key = comps[i] * 3;\\n          rgbBuf[rgbPos++] = colorMap[key];\\n          rgbBuf[rgbPos++] = colorMap[key + 1];\\n          rgbBuf[rgbPos++] = colorMap[key + 2];\\n        }\\n      }\\n    } else if (!needsResizing) {\\n      \u002F\u002F Fill in the RGB values directly into |dest|.\\n      this.getRgbBuffer(comps, 0, width * actualHeight, dest, 0, bpc, alpha01);\\n    } else {\\n      rgbBuf = new Uint8ClampedArray(count * 3);\\n      this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, \u002F* alpha01 = *\u002F 0);\\n    }\\n\\n    if (rgbBuf) {\\n      if (needsResizing) {\\n        resizeRgbImage(\\n          rgbBuf,\\n          dest,\\n          originalWidth,\\n          originalHeight,\\n          width,\\n          height,\\n          alpha01\\n        );\\n      } else {\\n        let destPos = 0,\\n          rgbPos = 0;\\n        for (let i = 0, ii = width * actualHeight; i \u003C ii; i++) {\\n          dest[destPos++] = rgbBuf[rgbPos++];\\n          dest[destPos++] = rgbBuf[rgbPos++];\\n          dest[destPos++] = rgbBuf[rgbPos++];\\n          destPos += alpha01;\\n        }\\n      }\\n    }\\n  }\\n\\n  \u002F**\\n   * True if the colorspace has components in the default range of [0, 1].\\n   * This should be true for all colorspaces except for lab color spaces\\n   * which are [0,100], [-128, 127], [-128, 127].\\n   *\u002F\\n  get usesZeroToOneRange() {\\n    return shadow(this, \\\"usesZeroToOneRange\\\", true);\\n  }\\n\\n  \u002F**\\n   * Checks if a decode map matches the default decode map for a color space.\\n   * This handles the general decode maps where there are two values per\\n   * component, e.g. [0, 1, 0, 1, 0, 1] for a RGB color.\\n   * This does not handle Lab, Indexed, or Pattern decode maps since they are\\n   * slightly different.\\n   * @param {Array} decode - Decode map (usually from an image).\\n   * @param {number} numComps - Number of components the color space has.\\n   *\u002F\\n  static isDefaultDecode(decode, numComps) {\\n    if (!Array.isArray(decode)) {\\n      return true;\\n    }\\n    if (numComps * 2 !== decode.length) {\\n      warn(\\\"The decode map is not the correct length\\\");\\n      return true;\\n    }\\n    for (let i = 0, ii = decode.length; i \u003C ii; i += 2) {\\n      if (decode[i] !== 0 || decode[i + 1] !== 1) {\\n        return false;\\n      }\\n    }\\n    return true;\\n  }\\n}\\n\\n\u002F**\\n * Alternate color space handles both Separation and DeviceN color spaces.  A\\n * Separation color space is actually just a DeviceN with one color component.\\n * Both color spaces use a tinting function to convert colors to a base color\\n * space.\\n *\\n * The default color is `new Float32Array(new Array(numComps).fill(1))`.\\n *\u002F\\nclass AlternateCS extends ColorSpace {\\n  constructor(numComps, base, tintFn) {\\n    super(\\\"Alternate\\\", numComps);\\n    this.base = base;\\n    this.tintFn = tintFn;\\n    this.tmpBuf = new Float32Array(base.numComps);\\n  }\\n\\n  getRgbItem(src, srcOffset, dest, destOffset) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'AlternateCS.getRgbItem: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    const tmpBuf = this.tmpBuf;\\n    this.tintFn(src, srcOffset, tmpBuf, 0);\\n    this.base.getRgbItem(tmpBuf, 0, dest, destOffset);\\n  }\\n\\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'AlternateCS.getRgbBuffer: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    const tintFn = this.tintFn;\\n    const base = this.base;\\n    const scale = 1 \u002F ((1 \u003C\u003C bits) - 1);\\n    const baseNumComps = base.numComps;\\n    const usesZeroToOneRange = base.usesZeroToOneRange;\\n    const isPassthrough =\\n      (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0;\\n    let pos = isPassthrough ? destOffset : 0;\\n    const baseBuf = isPassthrough\\n      ? dest\\n      : new Uint8ClampedArray(baseNumComps * count);\\n    const numComps = this.numComps;\\n\\n    const scaled = new Float32Array(numComps);\\n    const tinted = new Float32Array(baseNumComps);\\n    let i, j;\\n\\n    for (i = 0; i \u003C count; i++) {\\n      for (j = 0; j \u003C numComps; j++) {\\n        scaled[j] = src[srcOffset++] * scale;\\n      }\\n      tintFn(scaled, 0, tinted, 0);\\n      if (usesZeroToOneRange) {\\n        for (j = 0; j \u003C baseNumComps; j++) {\\n          baseBuf[pos++] = tinted[j] * 255;\\n        }\\n      } else {\\n        base.getRgbItem(tinted, 0, baseBuf, pos);\\n        pos += baseNumComps;\\n      }\\n    }\\n\\n    if (!isPassthrough) {\\n      base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);\\n    }\\n  }\\n\\n  getOutputLength(inputLength, alpha01) {\\n    return this.base.getOutputLength(\\n      (inputLength * this.base.numComps) \u002F this.numComps,\\n      alpha01\\n    );\\n  }\\n}\\n\\nclass PatternCS extends ColorSpace {\\n  constructor(baseCS) {\\n    super(\\\"Pattern\\\", null);\\n    this.base = baseCS;\\n  }\\n\\n  isDefaultDecode(decodeMap, bpc) {\\n    unreachable(\\\"Should not call PatternCS.isDefaultDecode\\\");\\n  }\\n}\\n\\n\u002F**\\n * The default color is `new Uint8Array([0])`.\\n *\u002F\\nclass IndexedCS extends ColorSpace {\\n  constructor(base, highVal, lookup) {\\n    super(\\\"Indexed\\\", 1);\\n    this.base = base;\\n    this.highVal = highVal;\\n\\n    const length = base.numComps * (highVal + 1);\\n    this.lookup = new Uint8Array(length);\\n\\n    if (lookup instanceof BaseStream) {\\n      const bytes = lookup.getBytes(length);\\n      this.lookup.set(bytes);\\n    } else if (typeof lookup === \\\"string\\\") {\\n      for (let i = 0; i \u003C length; ++i) {\\n        this.lookup[i] = lookup.charCodeAt(i) & 0xff;\\n      }\\n    } else {\\n      throw new FormatError(`IndexedCS - unrecognized lookup table: ${lookup}`);\\n    }\\n  }\\n\\n  getRgbItem(src, srcOffset, dest, destOffset) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'IndexedCS.getRgbItem: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    const { base, highVal, lookup } = this;\\n    const start =\\n      MathClamp(Math.round(src[srcOffset]), 0, highVal) * base.numComps;\\n    base.getRgbBuffer(lookup, start, 1, dest, destOffset, 8, 0);\\n  }\\n\\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'IndexedCS.getRgbBuffer: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    const { base, highVal, lookup } = this;\\n    const { numComps } = base;\\n    const outputDelta = base.getOutputLength(numComps, alpha01);\\n\\n    for (let i = 0; i \u003C count; ++i) {\\n      const lookupPos =\\n        MathClamp(Math.round(src[srcOffset++]), 0, highVal) * numComps;\\n      base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01);\\n      destOffset += outputDelta;\\n    }\\n  }\\n\\n  getOutputLength(inputLength, alpha01) {\\n    return this.base.getOutputLength(inputLength * this.base.numComps, alpha01);\\n  }\\n\\n  isDefaultDecode(decodeMap, bpc) {\\n    if (!Array.isArray(decodeMap)) {\\n      return true;\\n    }\\n    if (decodeMap.length !== 2) {\\n      warn(\\\"Decode map length is not correct\\\");\\n      return true;\\n    }\\n    if (!Number.isInteger(bpc) || bpc \u003C 1) {\\n      warn(\\\"Bits per component is not correct\\\");\\n      return true;\\n    }\\n    return decodeMap[0] === 0 && decodeMap[1] === (1 \u003C\u003C bpc) - 1;\\n  }\\n}\\n\\n\u002F**\\n * The default color is `new Float32Array([0])`.\\n *\u002F\\nclass DeviceGrayCS extends ColorSpace {\\n  constructor() {\\n    super(\\\"DeviceGray\\\", 1);\\n  }\\n\\n  getRgbItem(src, srcOffset, dest, destOffset) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'DeviceGrayCS.getRgbItem: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    const c = src[srcOffset] * 255;\\n    dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;\\n  }\\n\\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'DeviceGrayCS.getRgbBuffer: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    const scale = 255 \u002F ((1 \u003C\u003C bits) - 1);\\n    let j = srcOffset,\\n      q = destOffset;\\n    for (let i = 0; i \u003C count; ++i) {\\n      const c = scale * src[j++];\\n      dest[q++] = c;\\n      dest[q++] = c;\\n      dest[q++] = c;\\n      q += alpha01;\\n    }\\n  }\\n\\n  getOutputLength(inputLength, alpha01) {\\n    return inputLength * (3 + alpha01);\\n  }\\n}\\n\\n\u002F**\\n * The default color is `new Float32Array([0, 0, 0])`.\\n *\u002F\\nclass DeviceRgbCS extends ColorSpace {\\n  constructor() {\\n    super(\\\"DeviceRGB\\\", 3);\\n  }\\n\\n  getRgbItem(src, srcOffset, dest, destOffset) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'DeviceRgbCS.getRgbItem: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    dest[destOffset] = src[srcOffset] * 255;\\n    dest[destOffset + 1] = src[srcOffset + 1] * 255;\\n    dest[destOffset + 2] = src[srcOffset + 2] * 255;\\n  }\\n\\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'DeviceRgbCS.getRgbBuffer: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    if (bits === 8 && alpha01 === 0) {\\n      dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);\\n      return;\\n    }\\n    const scale = 255 \u002F ((1 \u003C\u003C bits) - 1);\\n    let j = srcOffset,\\n      q = destOffset;\\n    for (let i = 0; i \u003C count; ++i) {\\n      dest[q++] = scale * src[j++];\\n      dest[q++] = scale * src[j++];\\n      dest[q++] = scale * src[j++];\\n      q += alpha01;\\n    }\\n  }\\n\\n  getOutputLength(inputLength, alpha01) {\\n    return ((inputLength * (3 + alpha01)) \u002F 3) | 0;\\n  }\\n\\n  isPassthrough(bits) {\\n    return bits === 8;\\n  }\\n}\\n\\n\u002F**\\n * The default color is `new Float32Array([0, 0, 0, 1])`.\\n *\u002F\\nclass DeviceRgbaCS extends ColorSpace {\\n  constructor() {\\n    super(\\\"DeviceRGBA\\\", 4);\\n  }\\n\\n  getOutputLength(inputLength, _alpha01) {\\n    return inputLength * 4;\\n  }\\n\\n  isPassthrough(bits) {\\n    return bits === 8;\\n  }\\n\\n  fillRgb(\\n    dest,\\n    originalWidth,\\n    originalHeight,\\n    width,\\n    height,\\n    actualHeight,\\n    bpc,\\n    comps,\\n    alpha01\\n  ) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'DeviceRgbaCS.fillRgb: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    if (originalHeight !== height || originalWidth !== width) {\\n      resizeRgbaImage(\\n        comps,\\n        dest,\\n        originalWidth,\\n        originalHeight,\\n        width,\\n        height,\\n        alpha01\\n      );\\n    } else {\\n      copyRgbaImage(comps, dest, alpha01);\\n    }\\n  }\\n}\\n\\n\u002F**\\n * The default color is `new Float32Array([0, 0, 0, 1])`.\\n *\u002F\\nclass DeviceCmykCS extends ColorSpace {\\n  constructor() {\\n    super(\\\"DeviceCMYK\\\", 4);\\n  }\\n\\n  \u002F\u002F The coefficients below was found using numerical analysis: the method of\\n  \u002F\u002F steepest descent for the sum((f_i - color_value_i)^2) for r\u002Fg\u002Fb colors,\\n  \u002F\u002F where color_value is the tabular value from the table of sampled RGB colors\\n  \u002F\u002F from CMYK US Web Coated (SWOP) colorspace, and f_i is the corresponding\\n  \u002F\u002F CMYK color conversion using the estimation below:\\n  \u002F\u002F   f(A, B,.. N) = Acc+Bcm+Ccy+Dck+c+Fmm+Gmy+Hmk+Im+Jyy+Kyk+Ly+Mkk+Nk+255\\n  #toRgb(src, srcOffset, srcScale, dest, destOffset) {\\n    const c = src[srcOffset] * srcScale;\\n    const m = src[srcOffset + 1] * srcScale;\\n    const y = src[srcOffset + 2] * srcScale;\\n    const k = src[srcOffset + 3] * srcScale;\\n\\n    dest[destOffset] =\\n      255 +\\n      c *\\n        (-4.387332384609988 * c +\\n          54.48615194189176 * m +\\n          18.82290502165302 * y +\\n          212.25662451639585 * k +\\n          -285.2331026137004) +\\n      m *\\n        (1.7149763477362134 * m -\\n          5.6096736904047315 * y +\\n          -17.873870861415444 * k -\\n          5.497006427196366) +\\n      y *\\n        (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) +\\n      k * (-21.86122147463605 * k - 189.48180835922747);\\n\\n    dest[destOffset + 1] =\\n      255 +\\n      c *\\n        (8.841041422036149 * c +\\n          60.118027045597366 * m +\\n          6.871425592049007 * y +\\n          31.159100130055922 * k +\\n          -79.2970844816548) +\\n      m *\\n        (-15.310361306967817 * m +\\n          17.575251261109482 * y +\\n          131.35250912493976 * k -\\n          190.9453302588951) +\\n      y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) +\\n      k * (-20.737325471181034 * k - 187.80453709719578);\\n\\n    dest[destOffset + 2] =\\n      255 +\\n      c *\\n        (0.8842522430003296 * c +\\n          8.078677503112928 * m +\\n          30.89978309703729 * y -\\n          0.23883238689178934 * k +\\n          -14.183576799673286) +\\n      m *\\n        (10.49593273432072 * m +\\n          63.02378494754052 * y +\\n          50.606957656360734 * k -\\n          112.23884253719248) +\\n      y *\\n        (0.03296041114873217 * y +\\n          115.60384449646641 * k +\\n          -193.58209356861505) +\\n      k * (-22.33816807309886 * k - 180.12613974708367);\\n  }\\n\\n  getRgbItem(src, srcOffset, dest, destOffset) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'DeviceCmykCS.getRgbItem: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    this.#toRgb(src, srcOffset, 1, dest, destOffset);\\n  }\\n\\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'DeviceCmykCS.getRgbBuffer: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    const scale = 1 \u002F ((1 \u003C\u003C bits) - 1);\\n    for (let i = 0; i \u003C count; i++) {\\n      this.#toRgb(src, srcOffset, scale, dest, destOffset);\\n      srcOffset += 4;\\n      destOffset += 3 + alpha01;\\n    }\\n  }\\n\\n  getOutputLength(inputLength, alpha01) {\\n    return ((inputLength \u002F 4) * (3 + alpha01)) | 0;\\n  }\\n}\\n\\n\u002F**\\n * CalGrayCS: Based on \\\"PDF Reference, Sixth Ed\\\", p.245\\n *\\n * The default color is `new Float32Array([0])`.\\n *\u002F\\nclass CalGrayCS extends ColorSpace {\\n  constructor(whitePoint, blackPoint, gamma) {\\n    super(\\\"CalGray\\\", 1);\\n\\n    if (!whitePoint) {\\n      throw new FormatError(\\n        \\\"WhitePoint missing - required for color space CalGray\\\"\\n      );\\n    }\\n    \u002F\u002F Translate arguments to spec variables.\\n    [this.XW, this.YW, this.ZW] = whitePoint;\\n    [this.XB, this.YB, this.ZB] = blackPoint || [0, 0, 0];\\n    this.G = gamma || 1;\\n\\n    \u002F\u002F Validate variables as per spec.\\n    if (this.XW \u003C 0 || this.ZW \u003C 0 || this.YW !== 1) {\\n      throw new FormatError(\\n        `Invalid WhitePoint components for ${this.name}, no fallback available`\\n      );\\n    }\\n\\n    if (this.XB \u003C 0 || this.YB \u003C 0 || this.ZB \u003C 0) {\\n      info(`Invalid BlackPoint for ${this.name}, falling back to default.`);\\n      this.XB = this.YB = this.ZB = 0;\\n    }\\n\\n    if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) {\\n      warn(\\n        `${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` +\\n          `ZB: ${this.ZB}, only default values are supported.`\\n      );\\n    }\\n\\n    if (this.G \u003C 1) {\\n      info(\\n        `Invalid Gamma: ${this.G} for ${this.name}, falling back to default.`\\n      );\\n      this.G = 1;\\n    }\\n  }\\n\\n  #toRgb(src, srcOffset, dest, destOffset, scale) {\\n    \u002F\u002F A represents a gray component of a calibrated gray space.\\n    \u002F\u002F A \u003C---> AG in the spec\\n    const A = src[srcOffset] * scale;\\n    const AG = A ** this.G;\\n\\n    \u002F\u002F Computes L as per spec. ( = this.YW * AG )\\n    \u002F\u002F Except if other than default BlackPoint values are used.\\n    const L = this.YW * AG;\\n    \u002F\u002F http:\u002F\u002Fwww.poynton.com\u002Fnotes\u002Fcolour_and_gamma\u002FColorFAQ.html, Ch 4.\\n    \u002F\u002F Convert values to rgb range [0, 255].\\n    const val = Math.max(295.8 * L ** 0.3333333333333333 - 40.8, 0);\\n    dest[destOffset] = val;\\n    dest[destOffset + 1] = val;\\n    dest[destOffset + 2] = val;\\n  }\\n\\n  getRgbItem(src, srcOffset, dest, destOffset) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'CalGrayCS.getRgbItem: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    this.#toRgb(src, srcOffset, dest, destOffset, 1);\\n  }\\n\\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'CalGrayCS.getRgbBuffer: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    const scale = 1 \u002F ((1 \u003C\u003C bits) - 1);\\n\\n    for (let i = 0; i \u003C count; ++i) {\\n      this.#toRgb(src, srcOffset, dest, destOffset, scale);\\n      srcOffset += 1;\\n      destOffset += 3 + alpha01;\\n    }\\n  }\\n\\n  getOutputLength(inputLength, alpha01) {\\n    return inputLength * (3 + alpha01);\\n  }\\n}\\n\\n\u002F**\\n * CalRGBCS: Based on \\\"PDF Reference, Sixth Ed\\\", p.247\\n *\\n * The default color is `new Float32Array([0, 0, 0])`.\\n *\u002F\\nclass CalRGBCS extends ColorSpace {\\n  \u002F\u002F See http:\u002F\u002Fwww.brucelindbloom.com\u002Findex.html?Eqn_ChromAdapt.html for these\\n  \u002F\u002F matrices.\\n  \u002F\u002F prettier-ignore\\n  static #BRADFORD_SCALE_MATRIX = new Float32Array([\\n    0.8951, 0.2664, -0.1614,\\n    -0.7502, 1.7135, 0.0367,\\n    0.0389, -0.0685, 1.0296]);\\n\\n  \u002F\u002F prettier-ignore\\n  static #BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([\\n    0.9869929, -0.1470543, 0.1599627,\\n    0.4323053, 0.5183603, 0.0492912,\\n    -0.0085287, 0.0400428, 0.9684867]);\\n\\n  \u002F\u002F See http:\u002F\u002Fwww.brucelindbloom.com\u002Findex.html?Eqn_RGB_XYZ_Matrix.html.\\n  \u002F\u002F prettier-ignore\\n  static #SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([\\n    3.2404542, -1.5371385, -0.4985314,\\n    -0.9692660, 1.8760108, 0.0415560,\\n    0.0556434, -0.2040259, 1.0572252]);\\n\\n  static #FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);\\n\\n  static #tempNormalizeMatrix = new Float32Array(3);\\n\\n  static #tempConvertMatrix1 = new Float32Array(3);\\n\\n  static #tempConvertMatrix2 = new Float32Array(3);\\n\\n  static #DECODE_L_CONSTANT = ((8 + 16) \u002F 116) ** 3 \u002F 8.0;\\n\\n  constructor(whitePoint, blackPoint, gamma, matrix) {\\n    super(\\\"CalRGB\\\", 3);\\n\\n    if (!whitePoint) {\\n      throw new FormatError(\\n        \\\"WhitePoint missing - required for color space CalRGB\\\"\\n      );\\n    }\\n    \u002F\u002F Translate arguments to spec variables.\\n    const [XW, YW, ZW] = (this.whitePoint = whitePoint);\\n    const [XB, YB, ZB] = (this.blackPoint = blackPoint || new Float32Array(3));\\n\\n    [this.GR, this.GG, this.GB] = gamma || new Float32Array([1, 1, 1]);\\n    [\\n      this.MXA,\\n      this.MYA,\\n      this.MZA,\\n      this.MXB,\\n      this.MYB,\\n      this.MZB,\\n      this.MXC,\\n      this.MYC,\\n      this.MZC,\\n    ] = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\\n\\n    \u002F\u002F Validate variables as per spec.\\n    if (XW \u003C 0 || ZW \u003C 0 || YW !== 1) {\\n      throw new FormatError(\\n        `Invalid WhitePoint components for ${this.name}, no fallback available`\\n      );\\n    }\\n\\n    if (XB \u003C 0 || YB \u003C 0 || ZB \u003C 0) {\\n      info(\\n        `Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` +\\n          \\\"falling back to default.\\\"\\n      );\\n      this.blackPoint = new Float32Array(3);\\n    }\\n\\n    if (this.GR \u003C 0 || this.GG \u003C 0 || this.GB \u003C 0) {\\n      info(\\n        `Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` +\\n          `${this.name}, falling back to default.`\\n      );\\n      this.GR = this.GG = this.GB = 1;\\n    }\\n  }\\n\\n  #matrixProduct(a, b, result) {\\n    result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\\n    result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];\\n    result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];\\n  }\\n\\n  #toFlat(sourceWhitePoint, LMS, result) {\\n    result[0] = (LMS[0] * 1) \u002F sourceWhitePoint[0];\\n    result[1] = (LMS[1] * 1) \u002F sourceWhitePoint[1];\\n    result[2] = (LMS[2] * 1) \u002F sourceWhitePoint[2];\\n  }\\n\\n  #toD65(sourceWhitePoint, LMS, result) {\\n    const D65X = 0.95047;\\n    const D65Y = 1;\\n    const D65Z = 1.08883;\\n\\n    result[0] = (LMS[0] * D65X) \u002F sourceWhitePoint[0];\\n    result[1] = (LMS[1] * D65Y) \u002F sourceWhitePoint[1];\\n    result[2] = (LMS[2] * D65Z) \u002F sourceWhitePoint[2];\\n  }\\n\\n  #sRGBTransferFunction(color) {\\n    \u002F\u002F See http:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSRGB.\\n    if (color \u003C= 0.0031308) {\\n      return MathClamp(12.92 * color, 0, 1);\\n    }\\n    \u002F\u002F Optimization:\\n    \u002F\u002F If color is close enough to 1, skip calling the following transform\\n    \u002F\u002F since calling Math.pow is expensive. If color is larger than\\n    \u002F\u002F the threshold, the final result is larger than 254.5 since\\n    \u002F\u002F ((1 + 0.055) * 0.99554525 ** (1 \u002F 2.4) - 0.055) * 255 ===\\n    \u002F\u002F 254.50000003134699\\n    if (color >= 0.99554525) {\\n      return 1;\\n    }\\n    return MathClamp((1 + 0.055) * color ** (1 \u002F 2.4) - 0.055, 0, 1);\\n  }\\n\\n  #decodeL(L) {\\n    if (L \u003C 0) {\\n      return -this.#decodeL(-L);\\n    }\\n    if (L > 8.0) {\\n      return ((L + 16) \u002F 116) ** 3;\\n    }\\n    return L * CalRGBCS.#DECODE_L_CONSTANT;\\n  }\\n\\n  #compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {\\n    \u002F\u002F In case the blackPoint is already the default blackPoint then there is\\n    \u002F\u002F no need to do compensation.\\n    if (\\n      sourceBlackPoint[0] === 0 &&\\n      sourceBlackPoint[1] === 0 &&\\n      sourceBlackPoint[2] === 0\\n    ) {\\n      result[0] = XYZ_Flat[0];\\n      result[1] = XYZ_Flat[1];\\n      result[2] = XYZ_Flat[2];\\n      return;\\n    }\\n\\n    \u002F\u002F For the blackPoint calculation details, please see\\n    \u002F\u002F http:\u002F\u002Fwww.adobe.com\u002Fcontent\u002Fdam\u002FAdobe\u002Fen\u002Fdevnet\u002Fphotoshop\u002Fsdk\u002F\\n    \u002F\u002F AdobeBPC.pdf.\\n    \u002F\u002F The destination blackPoint is the default blackPoint [0, 0, 0].\\n    const zeroDecodeL = this.#decodeL(0);\\n\\n    const X_DST = zeroDecodeL;\\n    const X_SRC = this.#decodeL(sourceBlackPoint[0]);\\n\\n    const Y_DST = zeroDecodeL;\\n    const Y_SRC = this.#decodeL(sourceBlackPoint[1]);\\n\\n    const Z_DST = zeroDecodeL;\\n    const Z_SRC = this.#decodeL(sourceBlackPoint[2]);\\n\\n    const X_Scale = (1 - X_DST) \u002F (1 - X_SRC);\\n    const X_Offset = 1 - X_Scale;\\n\\n    const Y_Scale = (1 - Y_DST) \u002F (1 - Y_SRC);\\n    const Y_Offset = 1 - Y_Scale;\\n\\n    const Z_Scale = (1 - Z_DST) \u002F (1 - Z_SRC);\\n    const Z_Offset = 1 - Z_Scale;\\n\\n    result[0] = XYZ_Flat[0] * X_Scale + X_Offset;\\n    result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;\\n    result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;\\n  }\\n\\n  #normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {\\n    \u002F\u002F In case the whitePoint is already flat then there is no need to do\\n    \u002F\u002F normalization.\\n    if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {\\n      result[0] = XYZ_In[0];\\n      result[1] = XYZ_In[1];\\n      result[2] = XYZ_In[2];\\n      return;\\n    }\\n\\n    const LMS = result;\\n    this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\\n\\n    const LMS_Flat = CalRGBCS.#tempNormalizeMatrix;\\n    this.#toFlat(sourceWhitePoint, LMS, LMS_Flat);\\n\\n    this.#matrixProduct(\\n      CalRGBCS.#BRADFORD_SCALE_INVERSE_MATRIX,\\n      LMS_Flat,\\n      result\\n    );\\n  }\\n\\n  #normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {\\n    const LMS = result;\\n    this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\\n\\n    const LMS_D65 = CalRGBCS.#tempNormalizeMatrix;\\n    this.#toD65(sourceWhitePoint, LMS, LMS_D65);\\n\\n    this.#matrixProduct(\\n      CalRGBCS.#BRADFORD_SCALE_INVERSE_MATRIX,\\n      LMS_D65,\\n      result\\n    );\\n  }\\n\\n  #toRgb(src, srcOffset, dest, destOffset, scale) {\\n    \u002F\u002F A, B and C represent a red, green and blue components of a calibrated\\n    \u002F\u002F rgb space.\\n    const A = MathClamp(src[srcOffset] * scale, 0, 1);\\n    const B = MathClamp(src[srcOffset + 1] * scale, 0, 1);\\n    const C = MathClamp(src[srcOffset + 2] * scale, 0, 1);\\n\\n    \u002F\u002F A \u003C---> AGR in the spec\\n    \u002F\u002F B \u003C---> BGG in the spec\\n    \u002F\u002F C \u003C---> CGB in the spec\\n    const AGR = A === 1 ? 1 : A ** this.GR;\\n    const BGG = B === 1 ? 1 : B ** this.GG;\\n    const CGB = C === 1 ? 1 : C ** this.GB;\\n\\n    \u002F\u002F Computes intermediate variables L, M, N as per spec.\\n    \u002F\u002F To decode X, Y, Z values map L, M, N directly to them.\\n    const X = this.MXA * AGR + this.MXB * BGG + this.MXC * CGB;\\n    const Y = this.MYA * AGR + this.MYB * BGG + this.MYC * CGB;\\n    const Z = this.MZA * AGR + this.MZB * BGG + this.MZC * CGB;\\n\\n    \u002F\u002F The following calculations are based on this document:\\n    \u002F\u002F http:\u002F\u002Fwww.adobe.com\u002Fcontent\u002Fdam\u002FAdobe\u002Fen\u002Fdevnet\u002Fphotoshop\u002Fsdk\u002F\\n    \u002F\u002F AdobeBPC.pdf.\\n    const XYZ = CalRGBCS.#tempConvertMatrix1;\\n    XYZ[0] = X;\\n    XYZ[1] = Y;\\n    XYZ[2] = Z;\\n    const XYZ_Flat = CalRGBCS.#tempConvertMatrix2;\\n\\n    this.#normalizeWhitePointToFlat(this.whitePoint, XYZ, XYZ_Flat);\\n\\n    const XYZ_Black = CalRGBCS.#tempConvertMatrix1;\\n    this.#compensateBlackPoint(this.blackPoint, XYZ_Flat, XYZ_Black);\\n\\n    const XYZ_D65 = CalRGBCS.#tempConvertMatrix2;\\n    this.#normalizeWhitePointToD65(\\n      CalRGBCS.#FLAT_WHITEPOINT_MATRIX,\\n      XYZ_Black,\\n      XYZ_D65\\n    );\\n\\n    const SRGB = CalRGBCS.#tempConvertMatrix1;\\n    this.#matrixProduct(CalRGBCS.#SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);\\n\\n    \u002F\u002F Convert the values to rgb range [0, 255].\\n    dest[destOffset] = this.#sRGBTransferFunction(SRGB[0]) * 255;\\n    dest[destOffset + 1] = this.#sRGBTransferFunction(SRGB[1]) * 255;\\n    dest[destOffset + 2] = this.#sRGBTransferFunction(SRGB[2]) * 255;\\n  }\\n\\n  getRgbItem(src, srcOffset, dest, destOffset) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'CalRGBCS.getRgbItem: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    this.#toRgb(src, srcOffset, dest, destOffset, 1);\\n  }\\n\\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'CalRGBCS.getRgbBuffer: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    const scale = 1 \u002F ((1 \u003C\u003C bits) - 1);\\n\\n    for (let i = 0; i \u003C count; ++i) {\\n      this.#toRgb(src, srcOffset, dest, destOffset, scale);\\n      srcOffset += 3;\\n      destOffset += 3 + alpha01;\\n    }\\n  }\\n\\n  getOutputLength(inputLength, alpha01) {\\n    return ((inputLength * (3 + alpha01)) \u002F 3) | 0;\\n  }\\n}\\n\\n\u002F**\\n * LabCS: Based on \\\"PDF Reference, Sixth Ed\\\", p.250\\n *\\n * The default color is `new Float32Array([0, 0, 0])`.\\n *\u002F\\nclass LabCS extends ColorSpace {\\n  constructor(whitePoint, blackPoint, range) {\\n    super(\\\"Lab\\\", 3);\\n\\n    if (!whitePoint) {\\n      throw new FormatError(\\n        \\\"WhitePoint missing - required for color space Lab\\\"\\n      );\\n    }\\n    \u002F\u002F Translate args to spec variables\\n    [this.XW, this.YW, this.ZW] = whitePoint;\\n    [this.amin, this.amax, this.bmin, this.bmax] = range || [\\n      -100, 100, -100, 100,\\n    ];\\n\\n    \u002F\u002F These are here just for completeness - the spec doesn't offer any\\n    \u002F\u002F formulas that use BlackPoint in Lab\\n    [this.XB, this.YB, this.ZB] = blackPoint || [0, 0, 0];\\n\\n    \u002F\u002F Validate vars as per spec\\n    if (this.XW \u003C 0 || this.ZW \u003C 0 || this.YW !== 1) {\\n      throw new FormatError(\\n        \\\"Invalid WhitePoint components, no fallback available\\\"\\n      );\\n    }\\n\\n    if (this.XB \u003C 0 || this.YB \u003C 0 || this.ZB \u003C 0) {\\n      info(\\\"Invalid BlackPoint, falling back to default\\\");\\n      this.XB = this.YB = this.ZB = 0;\\n    }\\n\\n    if (this.amin > this.amax || this.bmin > this.bmax) {\\n      info(\\\"Invalid Range, falling back to defaults\\\");\\n      this.amin = -100;\\n      this.amax = 100;\\n      this.bmin = -100;\\n      this.bmax = 100;\\n    }\\n  }\\n\\n  \u002F\u002F Function g(x) from spec\\n  #fn_g(x) {\\n    return x >= 6 \u002F 29 ? x ** 3 : (108 \u002F 841) * (x - 4 \u002F 29);\\n  }\\n\\n  #decode(value, high1, low2, high2) {\\n    return low2 + (value * (high2 - low2)) \u002F high1;\\n  }\\n\\n  \u002F\u002F If decoding is needed maxVal should be 2^bits per component - 1.\\n  #toRgb(src, srcOffset, maxVal, dest, destOffset) {\\n    \u002F\u002F XXX: Lab input is in the range of [0, 100], [amin, amax], [bmin, bmax]\\n    \u002F\u002F not the usual [0, 1]. If a command like setFillColor is used the src\\n    \u002F\u002F values will already be within the correct range. However, if we are\\n    \u002F\u002F converting an image we have to map the values to the correct range given\\n    \u002F\u002F above.\\n    \u002F\u002F Ls,as,bs \u003C---> L*,a*,b* in the spec\\n    let Ls = src[srcOffset];\\n    let as = src[srcOffset + 1];\\n    let bs = src[srcOffset + 2];\\n    if (maxVal !== false) {\\n      Ls = this.#decode(Ls, maxVal, 0, 100);\\n      as = this.#decode(as, maxVal, this.amin, this.amax);\\n      bs = this.#decode(bs, maxVal, this.bmin, this.bmax);\\n    }\\n\\n    \u002F\u002F Adjust limits of 'as' and 'bs'\\n    if (as > this.amax) {\\n      as = this.amax;\\n    } else if (as \u003C this.amin) {\\n      as = this.amin;\\n    }\\n    if (bs > this.bmax) {\\n      bs = this.bmax;\\n    } else if (bs \u003C this.bmin) {\\n      bs = this.bmin;\\n    }\\n\\n    \u002F\u002F Computes intermediate variables X,Y,Z as per spec\\n    const M = (Ls + 16) \u002F 116;\\n    const L = M + as \u002F 500;\\n    const N = M - bs \u002F 200;\\n\\n    const X = this.XW * this.#fn_g(L);\\n    const Y = this.YW * this.#fn_g(M);\\n    const Z = this.ZW * this.#fn_g(N);\\n\\n    let r, g, b;\\n    \u002F\u002F Using different conversions for D50 and D65 white points,\\n    \u002F\u002F per http:\u002F\u002Fwww.color.org\u002Fsrgb.pdf\\n    if (this.ZW \u003C 1) {\\n      \u002F\u002F Assuming D50 (X=0.9642, Y=1.00, Z=0.8249)\\n      r = X * 3.1339 + Y * -1.617 + Z * -0.4906;\\n      g = X * -0.9785 + Y * 1.916 + Z * 0.0333;\\n      b = X * 0.072 + Y * -0.229 + Z * 1.4057;\\n    } else {\\n      \u002F\u002F Assuming D65 (X=0.9505, Y=1.00, Z=1.0888)\\n      r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;\\n      g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;\\n      b = X * 0.0557 + Y * -0.204 + Z * 1.057;\\n    }\\n    \u002F\u002F Convert the color values to the [0,255] range (clamping is automatic).\\n    dest[destOffset] = Math.sqrt(r) * 255;\\n    dest[destOffset + 1] = Math.sqrt(g) * 255;\\n    dest[destOffset + 2] = Math.sqrt(b) * 255;\\n  }\\n\\n  getRgbItem(src, srcOffset, dest, destOffset) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'LabCS.getRgbItem: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    this.#toRgb(src, srcOffset, false, dest, destOffset);\\n  }\\n\\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        dest instanceof Uint8ClampedArray,\\n        'LabCS.getRgbBuffer: Unsupported \\\"dest\\\" type.'\\n      );\\n    }\\n    const maxVal = (1 \u003C\u003C bits) - 1;\\n    for (let i = 0; i \u003C count; i++) {\\n      this.#toRgb(src, srcOffset, maxVal, dest, destOffset);\\n      srcOffset += 3;\\n      destOffset += 3 + alpha01;\\n    }\\n  }\\n\\n  getOutputLength(inputLength, alpha01) {\\n    return ((inputLength * (3 + alpha01)) \u002F 3) | 0;\\n  }\\n\\n  isDefaultDecode(decodeMap, bpc) {\\n    \u002F\u002F XXX: Decoding is handled with the lab conversion because of the strange\\n    \u002F\u002F ranges that are used.\\n    return true;\\n  }\\n\\n  get usesZeroToOneRange() {\\n    return shadow(this, \\\"usesZeroToOneRange\\\", false);\\n  }\\n}\\n\\nexport {\\n  AlternateCS,\\n  CalGrayCS,\\n  CalRGBCS,\\n  ColorSpace,\\n  DeviceCmykCS,\\n  DeviceGrayCS,\\n  DeviceRgbaCS,\\n  DeviceRgbCS,\\n  IndexedCS,\\n  LabCS,\\n  PatternCS,\\n};\\n\",\"\u002F* Copyright 2025 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  DataType,\\n  initSync,\\n  Intent,\\n  qcms_convert_array,\\n  qcms_convert_four,\\n  qcms_convert_one,\\n  qcms_convert_three,\\n  qcms_drop_transformer,\\n  qcms_transformer_from_memory,\\n} from \\\"..\u002F..\u002Fexternal\u002Fqcms\u002Fqcms.js\\\";\\nimport { shadow, Util, warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { ColorSpace } from \\\".\u002Fcolorspace.js\\\";\\nimport { QCMS } from \\\"..\u002F..\u002Fexternal\u002Fqcms\u002Fqcms_utils.js\\\";\\n\\nfunction fetchSync(url) {\\n  \u002F\u002F Parsing and using color spaces is still synchronous,\\n  \u002F\u002F so we must load the wasm module synchronously.\\n  \u002F\u002F TODO: Make the color space stuff asynchronous and use fetch.\\n  const xhr = new XMLHttpRequest();\\n  xhr.open(\\\"GET\\\", url, false);\\n  xhr.responseType = \\\"arraybuffer\\\";\\n  xhr.send(null);\\n  return xhr.response;\\n}\\n\\nclass IccColorSpace extends ColorSpace {\\n  #transformer;\\n\\n  #convertPixel;\\n\\n  static #useWasm = true;\\n\\n  static #wasmUrl = null;\\n\\n  static #finalizer = new FinalizationRegistry(transformer => {\\n    qcms_drop_transformer(transformer);\\n  });\\n\\n  constructor(iccProfile, name, numComps) {\\n    if (!IccColorSpace.isUsable) {\\n      throw new Error(\\\"No ICC color space support\\\");\\n    }\\n\\n    super(name, numComps);\\n\\n    let inType;\\n    switch (numComps) {\\n      case 1:\\n        inType = DataType.Gray8;\\n        this.#convertPixel = (src, srcOffset, css) =>\\n          qcms_convert_one(this.#transformer, src[srcOffset] * 255, css);\\n        break;\\n      case 3:\\n        inType = DataType.RGB8;\\n        this.#convertPixel = (src, srcOffset, css) =>\\n          qcms_convert_three(\\n            this.#transformer,\\n            src[srcOffset] * 255,\\n            src[srcOffset + 1] * 255,\\n            src[srcOffset + 2] * 255,\\n            css\\n          );\\n        break;\\n      case 4:\\n        inType = DataType.CMYK;\\n        this.#convertPixel = (src, srcOffset, css) =>\\n          qcms_convert_four(\\n            this.#transformer,\\n            src[srcOffset] * 255,\\n            src[srcOffset + 1] * 255,\\n            src[srcOffset + 2] * 255,\\n            src[srcOffset + 3] * 255,\\n            css\\n          );\\n        break;\\n      default:\\n        throw new Error(`Unsupported number of components: ${numComps}`);\\n    }\\n    this.#transformer = qcms_transformer_from_memory(\\n      iccProfile,\\n      inType,\\n      Intent.Perceptual\\n    );\\n    if (!this.#transformer) {\\n      throw new Error(\\\"Failed to create ICC color space\\\");\\n    }\\n    IccColorSpace.#finalizer.register(this, this.#transformer);\\n  }\\n\\n  getRgbHex(src, srcOffset) {\\n    this.#convertPixel(src, srcOffset, \u002F* css *\u002F true);\\n    return QCMS._cssColor;\\n  }\\n\\n  getRgbItem(src, srcOffset, dest, destOffset) {\\n    QCMS._destBuffer = dest;\\n    QCMS._destOffset = destOffset;\\n    QCMS._destLength = 3;\\n    this.#convertPixel(src, srcOffset, \u002F* css *\u002F false);\\n    QCMS._destBuffer = null;\\n  }\\n\\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\\n    src = src.subarray(srcOffset, srcOffset + count * this.numComps);\\n    if (bits !== 8) {\\n      const scale = 255 \u002F ((1 \u003C\u003C bits) - 1);\\n      for (let i = 0, ii = src.length; i \u003C ii; i++) {\\n        src[i] *= scale;\\n      }\\n    }\\n    QCMS._mustAddAlpha = alpha01 && dest.buffer === src.buffer;\\n    QCMS._destBuffer = dest;\\n    QCMS._destOffset = destOffset;\\n    QCMS._destLength = count * (3 + alpha01);\\n    qcms_convert_array(this.#transformer, src);\\n    QCMS._mustAddAlpha = false;\\n    QCMS._destBuffer = null;\\n  }\\n\\n  getOutputLength(inputLength, alpha01) {\\n    return ((inputLength \u002F this.numComps) * (3 + alpha01)) | 0;\\n  }\\n\\n  static setOptions({ useWasm, useWorkerFetch, wasmUrl }) {\\n    if (!useWorkerFetch) {\\n      this.#useWasm = false;\\n      return;\\n    }\\n    this.#useWasm = useWasm;\\n    this.#wasmUrl = wasmUrl;\\n  }\\n\\n  static get isUsable() {\\n    let isUsable = false;\\n    if (this.#useWasm) {\\n      if (this.#wasmUrl) {\\n        try {\\n          this._module = initSync({\\n            module: fetchSync(`${this.#wasmUrl}qcms_bg.wasm`),\\n          });\\n          isUsable = !!this._module;\\n          QCMS._memory = this._module.memory;\\n          QCMS._makeHexColor = Util.makeHexColor;\\n        } catch (e) {\\n          warn(`ICCBased color space: \\\"${e}\\\".`);\\n        }\\n      } else {\\n        warn(\\\"No ICC color space support due to missing `wasmUrl` API option\\\");\\n      }\\n    }\\n\\n    return shadow(this, \\\"isUsable\\\", isUsable);\\n  }\\n}\\n\\nclass CmykICCBasedCS extends IccColorSpace {\\n  static #iccUrl;\\n\\n  constructor() {\\n    const iccProfile = new Uint8Array(\\n      fetchSync(`${CmykICCBasedCS.#iccUrl}CGATS001Compat-v2-micro.icc`)\\n    );\\n    super(iccProfile, \\\"DeviceCMYK\\\", 4);\\n  }\\n\\n  static setOptions({ iccUrl }) {\\n    this.#iccUrl = iccUrl;\\n  }\\n\\n  static get isUsable() {\\n    let isUsable = false;\\n    if (IccColorSpace.isUsable) {\\n      if (this.#iccUrl) {\\n        isUsable = true;\\n      } else {\\n        warn(\\\"No CMYK ICC profile support due to missing `iccUrl` API option\\\");\\n      }\\n    }\\n\\n    return shadow(this, \\\"isUsable\\\", isUsable);\\n  }\\n}\\n\\nexport { CmykICCBasedCS, IccColorSpace };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { stringToBytes } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nclass Stream extends BaseStream {\\n  constructor(arrayBuffer, start, length, dict) {\\n    super();\\n\\n    this.bytes =\\n      arrayBuffer instanceof Uint8Array\\n        ? arrayBuffer\\n        : new Uint8Array(arrayBuffer);\\n    this.start = start || 0;\\n    this.pos = this.start;\\n    this.end = start + length || this.bytes.length;\\n    this.dict = dict;\\n  }\\n\\n  get length() {\\n    return this.end - this.start;\\n  }\\n\\n  get isEmpty() {\\n    return this.length === 0;\\n  }\\n\\n  getByte() {\\n    if (this.pos >= this.end) {\\n      return -1;\\n    }\\n    return this.bytes[this.pos++];\\n  }\\n\\n  getBytes(length) {\\n    const bytes = this.bytes;\\n    const pos = this.pos;\\n    const strEnd = this.end;\\n\\n    if (!length) {\\n      return bytes.subarray(pos, strEnd);\\n    }\\n    let end = pos + length;\\n    if (end > strEnd) {\\n      end = strEnd;\\n    }\\n    this.pos = end;\\n    return bytes.subarray(pos, end);\\n  }\\n\\n  getByteRange(begin, end) {\\n    if (begin \u003C 0) {\\n      begin = 0;\\n    }\\n    if (end > this.end) {\\n      end = this.end;\\n    }\\n    return this.bytes.subarray(begin, end);\\n  }\\n\\n  reset() {\\n    this.pos = this.start;\\n  }\\n\\n  moveStart() {\\n    this.start = this.pos;\\n  }\\n\\n  makeSubStream(start, length, dict = null) {\\n    return new Stream(this.bytes.buffer, start, length, dict);\\n  }\\n}\\n\\nclass StringStream extends Stream {\\n  constructor(str) {\\n    super(stringToBytes(str));\\n  }\\n}\\n\\nclass NullStream extends Stream {\\n  constructor() {\\n    super(new Uint8Array(0));\\n  }\\n}\\n\\nexport { NullStream, Stream, StringStream };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { arrayBuffersToBytes, MissingDataException } from \\\".\u002Fcore_utils.js\\\";\\nimport { assert } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { Stream } from \\\".\u002Fstream.js\\\";\\n\\nclass ChunkedStream extends Stream {\\n  constructor(length, chunkSize, manager) {\\n    super(\\n      \u002F* arrayBuffer = *\u002F new Uint8Array(length),\\n      \u002F* start = *\u002F 0,\\n      \u002F* length = *\u002F length,\\n      \u002F* dict = *\u002F null\\n    );\\n\\n    this.chunkSize = chunkSize;\\n    this._loadedChunks = new Set();\\n    this.numChunks = Math.ceil(length \u002F chunkSize);\\n    this.manager = manager;\\n    this.progressiveDataLength = 0;\\n    this.lastSuccessfulEnsureByteChunk = -1; \u002F\u002F Single-entry cache\\n  }\\n\\n  \u002F\u002F If a particular stream does not implement one or more of these methods,\\n  \u002F\u002F an error should be thrown.\\n  getMissingChunks() {\\n    const chunks = [];\\n    for (let chunk = 0, n = this.numChunks; chunk \u003C n; ++chunk) {\\n      if (!this._loadedChunks.has(chunk)) {\\n        chunks.push(chunk);\\n      }\\n    }\\n    return chunks;\\n  }\\n\\n  get numChunksLoaded() {\\n    return this._loadedChunks.size;\\n  }\\n\\n  get isDataLoaded() {\\n    return this.numChunksLoaded === this.numChunks;\\n  }\\n\\n  onReceiveData(begin, chunk) {\\n    const chunkSize = this.chunkSize;\\n    if (begin % chunkSize !== 0) {\\n      throw new Error(`Bad begin offset: ${begin}`);\\n    }\\n\\n    \u002F\u002F Using `this.length` is inaccurate here since `this.start` can be moved\\n    \u002F\u002F (see the `moveStart` method).\\n    const end = begin + chunk.byteLength;\\n    if (end % chunkSize !== 0 && end !== this.bytes.length) {\\n      throw new Error(`Bad end offset: ${end}`);\\n    }\\n\\n    this.bytes.set(new Uint8Array(chunk), begin);\\n    const beginChunk = Math.floor(begin \u002F chunkSize);\\n    const endChunk = Math.floor((end - 1) \u002F chunkSize) + 1;\\n\\n    for (let curChunk = beginChunk; curChunk \u003C endChunk; ++curChunk) {\\n      \u002F\u002F Since a value can only occur *once* in a `Set`, there's no need to\\n      \u002F\u002F manually check `Set.prototype.has()` before adding the value here.\\n      this._loadedChunks.add(curChunk);\\n    }\\n  }\\n\\n  onReceiveProgressiveData(data) {\\n    let position = this.progressiveDataLength;\\n    const beginChunk = Math.floor(position \u002F this.chunkSize);\\n\\n    this.bytes.set(new Uint8Array(data), position);\\n    position += data.byteLength;\\n    this.progressiveDataLength = position;\\n    const endChunk =\\n      position >= this.end\\n        ? this.numChunks\\n        : Math.floor(position \u002F this.chunkSize);\\n\\n    for (let curChunk = beginChunk; curChunk \u003C endChunk; ++curChunk) {\\n      \u002F\u002F Since a value can only occur *once* in a `Set`, there's no need to\\n      \u002F\u002F manually check `Set.prototype.has()` before adding the value here.\\n      this._loadedChunks.add(curChunk);\\n    }\\n  }\\n\\n  ensureByte(pos) {\\n    if (pos \u003C this.progressiveDataLength) {\\n      return;\\n    }\\n\\n    const chunk = Math.floor(pos \u002F this.chunkSize);\\n    if (chunk > this.numChunks) {\\n      return;\\n    }\\n    if (chunk === this.lastSuccessfulEnsureByteChunk) {\\n      return;\\n    }\\n\\n    if (!this._loadedChunks.has(chunk)) {\\n      throw new MissingDataException(pos, pos + 1);\\n    }\\n    this.lastSuccessfulEnsureByteChunk = chunk;\\n  }\\n\\n  ensureRange(begin, end) {\\n    if (begin >= end) {\\n      return;\\n    }\\n    if (end \u003C= this.progressiveDataLength) {\\n      return;\\n    }\\n\\n    const beginChunk = Math.floor(begin \u002F this.chunkSize);\\n    if (beginChunk > this.numChunks) {\\n      return;\\n    }\\n    const endChunk = Math.min(\\n      Math.floor((end - 1) \u002F this.chunkSize) + 1,\\n      this.numChunks\\n    );\\n    for (let chunk = beginChunk; chunk \u003C endChunk; ++chunk) {\\n      if (!this._loadedChunks.has(chunk)) {\\n        throw new MissingDataException(begin, end);\\n      }\\n    }\\n  }\\n\\n  nextEmptyChunk(beginChunk) {\\n    const numChunks = this.numChunks;\\n    for (let i = 0; i \u003C numChunks; ++i) {\\n      const chunk = (beginChunk + i) % numChunks; \u002F\u002F Wrap around to beginning.\\n      if (!this._loadedChunks.has(chunk)) {\\n        return chunk;\\n      }\\n    }\\n    return null;\\n  }\\n\\n  hasChunk(chunk) {\\n    return this._loadedChunks.has(chunk);\\n  }\\n\\n  getByte() {\\n    const pos = this.pos;\\n    if (pos >= this.end) {\\n      return -1;\\n    }\\n    if (pos >= this.progressiveDataLength) {\\n      this.ensureByte(pos);\\n    }\\n    return this.bytes[this.pos++];\\n  }\\n\\n  getBytes(length) {\\n    const bytes = this.bytes;\\n    const pos = this.pos;\\n    const strEnd = this.end;\\n\\n    if (!length) {\\n      if (strEnd > this.progressiveDataLength) {\\n        this.ensureRange(pos, strEnd);\\n      }\\n      return bytes.subarray(pos, strEnd);\\n    }\\n\\n    let end = pos + length;\\n    if (end > strEnd) {\\n      end = strEnd;\\n    }\\n    if (end > this.progressiveDataLength) {\\n      this.ensureRange(pos, end);\\n    }\\n\\n    this.pos = end;\\n    return bytes.subarray(pos, end);\\n  }\\n\\n  getByteRange(begin, end) {\\n    if (begin \u003C 0) {\\n      begin = 0;\\n    }\\n    if (end > this.end) {\\n      end = this.end;\\n    }\\n    if (end > this.progressiveDataLength) {\\n      this.ensureRange(begin, end);\\n    }\\n    return this.bytes.subarray(begin, end);\\n  }\\n\\n  makeSubStream(start, length, dict = null) {\\n    if (length) {\\n      if (start + length > this.progressiveDataLength) {\\n        this.ensureRange(start, start + length);\\n      }\\n    } else if (start >= this.progressiveDataLength) {\\n      \u002F\u002F When the `length` is undefined you do *not*, under any circumstances,\\n      \u002F\u002F want to fallback on calling `this.ensureRange(start, this.end)` since\\n      \u002F\u002F that would force the *entire* PDF file to be loaded, thus completely\\n      \u002F\u002F breaking the whole purpose of using streaming and\u002For range requests.\\n      \u002F\u002F\\n      \u002F\u002F However, not doing any checking here could very easily lead to wasted\\n      \u002F\u002F time\u002Fresources during e.g. parsing, since `MissingDataException`s will\\n      \u002F\u002F require data to be re-parsed, which we attempt to minimize by at least\\n      \u002F\u002F checking that the *beginning* of the data is available here.\\n      this.ensureByte(start);\\n    }\\n\\n    function ChunkedStreamSubstream() {}\\n    ChunkedStreamSubstream.prototype = Object.create(this);\\n    ChunkedStreamSubstream.prototype.getMissingChunks = function () {\\n      const chunkSize = this.chunkSize;\\n      const beginChunk = Math.floor(this.start \u002F chunkSize);\\n      const endChunk = Math.floor((this.end - 1) \u002F chunkSize) + 1;\\n      const missingChunks = [];\\n      for (let chunk = beginChunk; chunk \u003C endChunk; ++chunk) {\\n        if (!this._loadedChunks.has(chunk)) {\\n          missingChunks.push(chunk);\\n        }\\n      }\\n      return missingChunks;\\n    };\\n    Object.defineProperty(ChunkedStreamSubstream.prototype, \\\"isDataLoaded\\\", {\\n      get() {\\n        if (this.numChunksLoaded === this.numChunks) {\\n          return true;\\n        }\\n        return this.getMissingChunks().length === 0;\\n      },\\n      configurable: true,\\n    });\\n\\n    const subStream = new ChunkedStreamSubstream();\\n    subStream.pos = subStream.start = start;\\n    subStream.end = start + length || this.end;\\n    subStream.dict = dict;\\n    return subStream;\\n  }\\n\\n  getBaseStreams() {\\n    return [this];\\n  }\\n}\\n\\nclass ChunkedStreamManager {\\n  constructor(pdfNetworkStream, args) {\\n    this.length = args.length;\\n    this.chunkSize = args.rangeChunkSize;\\n    this.stream = new ChunkedStream(this.length, this.chunkSize, this);\\n    this.pdfNetworkStream = pdfNetworkStream;\\n    this.disableAutoFetch = args.disableAutoFetch;\\n    this.msgHandler = args.msgHandler;\\n\\n    this.currRequestId = 0;\\n\\n    this._chunksNeededByRequest = new Map();\\n    this._requestsByChunk = new Map();\\n    this._promisesByRequest = new Map();\\n    this.progressiveDataLength = 0;\\n    this.aborted = false;\\n\\n    this._loadedStreamCapability = Promise.withResolvers();\\n  }\\n\\n  sendRequest(begin, end) {\\n    const rangeReader = this.pdfNetworkStream.getRangeReader(begin, end);\\n    if (!rangeReader.isStreamingSupported) {\\n      rangeReader.onProgress = this.onProgress.bind(this);\\n    }\\n\\n    let chunks = [],\\n      loaded = 0;\\n    return new Promise((resolve, reject) => {\\n      const readChunk = ({ value, done }) => {\\n        try {\\n          if (done) {\\n            const chunkData = arrayBuffersToBytes(chunks);\\n            chunks = null;\\n            resolve(chunkData);\\n            return;\\n          }\\n          if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n            assert(\\n              value instanceof ArrayBuffer,\\n              \\\"readChunk (sendRequest) - expected an ArrayBuffer.\\\"\\n            );\\n          }\\n          loaded += value.byteLength;\\n\\n          if (rangeReader.isStreamingSupported) {\\n            this.onProgress({ loaded });\\n          }\\n\\n          chunks.push(value);\\n          rangeReader.read().then(readChunk, reject);\\n        } catch (e) {\\n          reject(e);\\n        }\\n      };\\n      rangeReader.read().then(readChunk, reject);\\n    }).then(data => {\\n      if (this.aborted) {\\n        return; \u002F\u002F Ignoring any data after abort.\\n      }\\n      this.onReceiveData({ chunk: data, begin });\\n    });\\n  }\\n\\n  \u002F**\\n   * Get all the chunks that are not yet loaded and group them into\\n   * contiguous ranges to load in as few requests as possible.\\n   *\u002F\\n  requestAllChunks(noFetch = false) {\\n    if (!noFetch) {\\n      const missingChunks = this.stream.getMissingChunks();\\n      this._requestChunks(missingChunks);\\n    }\\n    return this._loadedStreamCapability.promise;\\n  }\\n\\n  _requestChunks(chunks) {\\n    const requestId = this.currRequestId++;\\n\\n    const chunksNeeded = new Set();\\n    this._chunksNeededByRequest.set(requestId, chunksNeeded);\\n    for (const chunk of chunks) {\\n      if (!this.stream.hasChunk(chunk)) {\\n        chunksNeeded.add(chunk);\\n      }\\n    }\\n\\n    if (chunksNeeded.size === 0) {\\n      return Promise.resolve();\\n    }\\n\\n    const capability = Promise.withResolvers();\\n    this._promisesByRequest.set(requestId, capability);\\n\\n    const chunksToRequest = [];\\n    for (const chunk of chunksNeeded) {\\n      let requestIds = this._requestsByChunk.get(chunk);\\n      if (!requestIds) {\\n        requestIds = [];\\n        this._requestsByChunk.set(chunk, requestIds);\\n\\n        chunksToRequest.push(chunk);\\n      }\\n      requestIds.push(requestId);\\n    }\\n\\n    if (chunksToRequest.length > 0) {\\n      const groupedChunksToRequest = this.groupChunks(chunksToRequest);\\n      for (const groupedChunk of groupedChunksToRequest) {\\n        const begin = groupedChunk.beginChunk * this.chunkSize;\\n        const end = Math.min(\\n          groupedChunk.endChunk * this.chunkSize,\\n          this.length\\n        );\\n        this.sendRequest(begin, end).catch(capability.reject);\\n      }\\n    }\\n\\n    return capability.promise.catch(reason => {\\n      if (this.aborted) {\\n        return; \u002F\u002F Ignoring any pending requests after abort.\\n      }\\n      throw reason;\\n    });\\n  }\\n\\n  getStream() {\\n    return this.stream;\\n  }\\n\\n  \u002F**\\n   * Loads any chunks in the requested range that are not yet loaded.\\n   *\u002F\\n  requestRange(begin, end) {\\n    end = Math.min(end, this.length);\\n\\n    const beginChunk = this.getBeginChunk(begin);\\n    const endChunk = this.getEndChunk(end);\\n\\n    const chunks = [];\\n    for (let chunk = beginChunk; chunk \u003C endChunk; ++chunk) {\\n      chunks.push(chunk);\\n    }\\n    return this._requestChunks(chunks);\\n  }\\n\\n  requestRanges(ranges = []) {\\n    const chunksToRequest = [];\\n    for (const range of ranges) {\\n      const beginChunk = this.getBeginChunk(range.begin);\\n      const endChunk = this.getEndChunk(range.end);\\n      for (let chunk = beginChunk; chunk \u003C endChunk; ++chunk) {\\n        if (!chunksToRequest.includes(chunk)) {\\n          chunksToRequest.push(chunk);\\n        }\\n      }\\n    }\\n\\n    chunksToRequest.sort((a, b) => a - b);\\n    return this._requestChunks(chunksToRequest);\\n  }\\n\\n  \u002F**\\n   * Groups a sorted array of chunks into as few contiguous larger\\n   * chunks as possible.\\n   *\u002F\\n  groupChunks(chunks) {\\n    const groupedChunks = [];\\n    let beginChunk = -1;\\n    let prevChunk = -1;\\n\\n    for (let i = 0, ii = chunks.length; i \u003C ii; ++i) {\\n      const chunk = chunks[i];\\n      if (beginChunk \u003C 0) {\\n        beginChunk = chunk;\\n      }\\n\\n      if (prevChunk >= 0 && prevChunk + 1 !== chunk) {\\n        groupedChunks.push({ beginChunk, endChunk: prevChunk + 1 });\\n        beginChunk = chunk;\\n      }\\n      if (i + 1 === chunks.length) {\\n        groupedChunks.push({ beginChunk, endChunk: chunk + 1 });\\n      }\\n\\n      prevChunk = chunk;\\n    }\\n    return groupedChunks;\\n  }\\n\\n  onProgress(args) {\\n    this.msgHandler.send(\\\"DocProgress\\\", {\\n      loaded: this.stream.numChunksLoaded * this.chunkSize + args.loaded,\\n      total: this.length,\\n    });\\n  }\\n\\n  onReceiveData(args) {\\n    const chunk = args.chunk;\\n    const isProgressive = args.begin === undefined;\\n    const begin = isProgressive ? this.progressiveDataLength : args.begin;\\n    const end = begin + chunk.byteLength;\\n\\n    const beginChunk = Math.floor(begin \u002F this.chunkSize);\\n    const endChunk =\\n      end \u003C this.length\\n        ? Math.floor(end \u002F this.chunkSize)\\n        : Math.ceil(end \u002F this.chunkSize);\\n\\n    if (isProgressive) {\\n      this.stream.onReceiveProgressiveData(chunk);\\n      this.progressiveDataLength = end;\\n    } else {\\n      this.stream.onReceiveData(begin, chunk);\\n    }\\n\\n    if (this.stream.isDataLoaded) {\\n      this._loadedStreamCapability.resolve(this.stream);\\n    }\\n\\n    const loadedRequests = [];\\n    for (let curChunk = beginChunk; curChunk \u003C endChunk; ++curChunk) {\\n      \u002F\u002F The server might return more chunks than requested.\\n      const requestIds = this._requestsByChunk.get(curChunk);\\n      if (!requestIds) {\\n        continue;\\n      }\\n      this._requestsByChunk.delete(curChunk);\\n\\n      for (const requestId of requestIds) {\\n        const chunksNeeded = this._chunksNeededByRequest.get(requestId);\\n        if (chunksNeeded.has(curChunk)) {\\n          chunksNeeded.delete(curChunk);\\n        }\\n\\n        if (chunksNeeded.size > 0) {\\n          continue;\\n        }\\n        loadedRequests.push(requestId);\\n      }\\n    }\\n\\n    \u002F\u002F If there are no pending requests, automatically fetch the next\\n    \u002F\u002F unfetched chunk of the PDF file.\\n    if (!this.disableAutoFetch && this._requestsByChunk.size === 0) {\\n      let nextEmptyChunk;\\n      if (this.stream.numChunksLoaded === 1) {\\n        \u002F\u002F This is a special optimization so that after fetching the first\\n        \u002F\u002F chunk, rather than fetching the second chunk, we fetch the last\\n        \u002F\u002F chunk.\\n        const lastChunk = this.stream.numChunks - 1;\\n        if (!this.stream.hasChunk(lastChunk)) {\\n          nextEmptyChunk = lastChunk;\\n        }\\n      } else {\\n        nextEmptyChunk = this.stream.nextEmptyChunk(endChunk);\\n      }\\n      if (Number.isInteger(nextEmptyChunk)) {\\n        this._requestChunks([nextEmptyChunk]);\\n      }\\n    }\\n\\n    for (const requestId of loadedRequests) {\\n      const capability = this._promisesByRequest.get(requestId);\\n      this._promisesByRequest.delete(requestId);\\n      capability.resolve();\\n    }\\n\\n    this.msgHandler.send(\\\"DocProgress\\\", {\\n      loaded: this.stream.numChunksLoaded * this.chunkSize,\\n      total: this.length,\\n    });\\n  }\\n\\n  onError(err) {\\n    this._loadedStreamCapability.reject(err);\\n  }\\n\\n  getBeginChunk(begin) {\\n    return Math.floor(begin \u002F this.chunkSize);\\n  }\\n\\n  getEndChunk(end) {\\n    return Math.floor((end - 1) \u002F this.chunkSize) + 1;\\n  }\\n\\n  abort(reason) {\\n    this.aborted = true;\\n    this.pdfNetworkStream?.cancelAllRequests(reason);\\n\\n    for (const capability of this._promisesByRequest.values()) {\\n      capability.reject(reason);\\n    }\\n  }\\n}\\n\\nexport { ChunkedStream, ChunkedStreamManager };\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { FeatureTest, ImageKind } from \\\".\u002Futil.js\\\";\\n\\nfunction convertToRGBA(params) {\\n  switch (params.kind) {\\n    case ImageKind.GRAYSCALE_1BPP:\\n      return convertBlackAndWhiteToRGBA(params);\\n    case ImageKind.RGB_24BPP:\\n      return convertRGBToRGBA(params);\\n  }\\n\\n  return null;\\n}\\n\\nfunction convertBlackAndWhiteToRGBA({\\n  src,\\n  srcPos = 0,\\n  dest,\\n  width,\\n  height,\\n  nonBlackColor = 0xffffffff,\\n  inverseDecode = false,\\n}) {\\n  const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\\n  const [zeroMapping, oneMapping] = inverseDecode\\n    ? [nonBlackColor, black]\\n    : [black, nonBlackColor];\\n  const widthInSource = width >> 3;\\n  const widthRemainder = width & 7;\\n  const srcLength = src.length;\\n  dest = new Uint32Array(dest.buffer);\\n  let destPos = 0;\\n\\n  for (let i = 0; i \u003C height; i++) {\\n    for (const max = srcPos + widthInSource; srcPos \u003C max; srcPos++) {\\n      const elem = srcPos \u003C srcLength ? src[srcPos] : 255;\\n      dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\\n      dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\\n      dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\\n      dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\\n      dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\\n      dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\\n      dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\\n      dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\\n    }\\n    if (widthRemainder === 0) {\\n      continue;\\n    }\\n    const elem = srcPos \u003C srcLength ? src[srcPos++] : 255;\\n    for (let j = 0; j \u003C widthRemainder; j++) {\\n      dest[destPos++] = elem & (1 \u003C\u003C (7 - j)) ? oneMapping : zeroMapping;\\n    }\\n  }\\n  return { srcPos, destPos };\\n}\\n\\nfunction convertRGBToRGBA({\\n  src,\\n  srcPos = 0,\\n  dest,\\n  destPos = 0,\\n  width,\\n  height,\\n}) {\\n  let i = 0;\\n  const len = width * height * 3;\\n  const len32 = len >> 2;\\n  const src32 = new Uint32Array(src.buffer, srcPos, len32);\\n\\n  if (FeatureTest.isLittleEndian) {\\n    \u002F\u002F It's a way faster to do the shuffle manually instead of working\\n    \u002F\u002F component by component with some Uint8 arrays.\\n    for (; i \u003C len32 - 2; i += 3, destPos += 4) {\\n      const s1 = src32[i]; \u002F\u002F R2B1G1R1\\n      const s2 = src32[i + 1]; \u002F\u002F G3R3B2G2\\n      const s3 = src32[i + 2]; \u002F\u002F B4G4R4B3\\n\\n      dest[destPos] = s1 | 0xff000000;\\n      dest[destPos + 1] = (s1 >>> 24) | (s2 \u003C\u003C 8) | 0xff000000;\\n      dest[destPos + 2] = (s2 >>> 16) | (s3 \u003C\u003C 16) | 0xff000000;\\n      dest[destPos + 3] = (s3 >>> 8) | 0xff000000;\\n    }\\n\\n    for (let j = i * 4, jj = srcPos + len; j \u003C jj; j += 3) {\\n      dest[destPos++] =\\n        src[j] | (src[j + 1] \u003C\u003C 8) | (src[j + 2] \u003C\u003C 16) | 0xff000000;\\n    }\\n  } else {\\n    for (; i \u003C len32 - 2; i += 3, destPos += 4) {\\n      const s1 = src32[i]; \u002F\u002F R1G1B1R2\\n      const s2 = src32[i + 1]; \u002F\u002F G2B2R3G3\\n      const s3 = src32[i + 2]; \u002F\u002F B3R4G4B4\\n\\n      dest[destPos] = s1 | 0xff;\\n      dest[destPos + 1] = (s1 \u003C\u003C 24) | (s2 >>> 8) | 0xff;\\n      dest[destPos + 2] = (s2 \u003C\u003C 16) | (s3 >>> 16) | 0xff;\\n      dest[destPos + 3] = (s3 \u003C\u003C 8) | 0xff;\\n    }\\n\\n    for (let j = i * 4, jj = srcPos + len; j \u003C jj; j += 3) {\\n      dest[destPos++] =\\n        (src[j] \u003C\u003C 24) | (src[j + 1] \u003C\u003C 16) | (src[j + 2] \u003C\u003C 8) | 0xff;\\n    }\\n  }\\n\\n  return { srcPos: srcPos + len, destPos };\\n}\\n\\nfunction grayToRGBA(src, dest) {\\n  if (FeatureTest.isLittleEndian) {\\n    for (let i = 0, ii = src.length; i \u003C ii; i++) {\\n      dest[i] = (src[i] * 0x10101) | 0xff000000;\\n    }\\n  } else {\\n    for (let i = 0, ii = src.length; i \u003C ii; i++) {\\n      dest[i] = (src[i] * 0x1010100) | 0x000000ff;\\n    }\\n  }\\n}\\n\\nexport { convertBlackAndWhiteToRGBA, convertToRGBA, grayToRGBA };\\n\",\"\u002F* Copyright 2023 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { FeatureTest, ImageKind, shadow, warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { convertToRGBA } from \\\"..\u002Fshared\u002Fimage_utils.js\\\";\\nimport { MAX_INT_32 } from \\\".\u002Fcore_utils.js\\\";\\n\\nconst MIN_IMAGE_DIM = 2048;\\n\\n\u002F\u002F In Chrome, there aren't max dimensions but only a max area. So an image with\\n\u002F\u002F a very large dimensions is acceptable but it probably doesn't hurt to reduce\\n\u002F\u002F it when considering that it will finally rendered on a small canvas.\\nconst MAX_IMAGE_DIM = 65537;\\nconst MAX_ERROR = 128;\\n\\n\u002F\u002F Large images are encoded in using the BMP format (it's a way faster than\\n\u002F\u002F encoding in PNG because there are no checksums to compute).\\n\u002F\u002F Unfortunately, createImageBitmap will create a task in the main thread in\\n\u002F\u002F order to build the bitmap, hence the main thread is blocked during the\\n\u002F\u002F decoding which can be a bit long (see bug 1817244).\\n\u002F\u002F When bug 1759728 is fixed we can remove the BMP workaround and at least it\\n\u002F\u002F should be a way faster to create the bitmap.\\n\\nclass ImageResizer {\\n  static #goodSquareLength = MIN_IMAGE_DIM;\\n\\n  static #isImageDecoderSupported = FeatureTest.isImageDecoderSupported;\\n\\n  constructor(imgData, isMask) {\\n    this._imgData = imgData;\\n    this._isMask = isMask;\\n  }\\n\\n  static get canUseImageDecoder() {\\n    return shadow(\\n      this,\\n      \\\"canUseImageDecoder\\\",\\n      this.#isImageDecoderSupported\\n        ? ImageDecoder.isTypeSupported(\\\"image\u002Fbmp\\\")\\n        : Promise.resolve(false)\\n    );\\n  }\\n\\n  static needsToBeResized(width, height) {\\n    if (width \u003C= this.#goodSquareLength && height \u003C= this.#goodSquareLength) {\\n      return false;\\n    }\\n\\n    const { MAX_DIM } = this;\\n    if (width > MAX_DIM || height > MAX_DIM) {\\n      return true;\\n    }\\n\\n    const area = width * height;\\n    if (this._hasMaxArea) {\\n      return area > this.MAX_AREA;\\n    }\\n\\n    if (area \u003C this.#goodSquareLength ** 2) {\\n      return false;\\n    }\\n\\n    \u002F\u002F We try as much as possible to avoid to compute the max area.\\n    if (this._areGoodDims(width, height)) {\\n      this.#goodSquareLength = Math.max(\\n        this.#goodSquareLength,\\n        Math.floor(Math.sqrt(width * height))\\n      );\\n      return false;\\n    }\\n\\n    \u002F\u002F TODO: the computation can be a bit long because we potentially allocate\\n    \u002F\u002F some large canvas, so in the Firefox case this value (and MAX_DIM) can be\\n    \u002F\u002F infered from prefs (MAX_AREA = gfx.max-alloc-size \u002F 4, 4 is because of\\n    \u002F\u002F RGBA).\\n    this.#goodSquareLength = this._guessMax(\\n      this.#goodSquareLength,\\n      MAX_DIM,\\n      MAX_ERROR,\\n      0\\n    );\\n    const maxArea = (this.MAX_AREA = this.#goodSquareLength ** 2);\\n\\n    return area > maxArea;\\n  }\\n\\n  static getReducePowerForJPX(width, height, componentsCount) {\\n    const area = width * height;\\n    \u002F\u002F The maximum memory we've in the wasm runtime is 2GB.\\n    \u002F\u002F Each component is 4 bytes and we can't allocate all the memory just for\\n    \u002F\u002F the buffers so we limit the size to 1GB \u002F (componentsCount * 4).\\n    \u002F\u002F We could use more than 2GB by setting MAXIMUM_MEMORY but it would take\\n    \u002F\u002F too much time to decode a big image.\\n    const maxJPXArea = 2 ** 30 \u002F (componentsCount * 4);\\n    if (!this.needsToBeResized(width, height)) {\\n      if (area > maxJPXArea) {\\n        \u002F\u002F The image is too large, we need to rescale it.\\n        return Math.ceil(Math.log2(area \u002F maxJPXArea));\\n      }\\n      return 0;\\n    }\\n    const { MAX_DIM, MAX_AREA } = this;\\n    const minFactor = Math.max(\\n      width \u002F MAX_DIM,\\n      height \u002F MAX_DIM,\\n      Math.sqrt(area \u002F Math.min(maxJPXArea, MAX_AREA))\\n    );\\n    return Math.ceil(Math.log2(minFactor));\\n  }\\n\\n  static get MAX_DIM() {\\n    return shadow(\\n      this,\\n      \\\"MAX_DIM\\\",\\n      this._guessMax(MIN_IMAGE_DIM, MAX_IMAGE_DIM, 0, 1)\\n    );\\n  }\\n\\n  static get MAX_AREA() {\\n    this._hasMaxArea = true;\\n    return shadow(\\n      this,\\n      \\\"MAX_AREA\\\",\\n      this._guessMax(this.#goodSquareLength, this.MAX_DIM, MAX_ERROR, 0) ** 2\\n    );\\n  }\\n\\n  static set MAX_AREA(area) {\\n    if (area >= 0) {\\n      this._hasMaxArea = true;\\n      shadow(this, \\\"MAX_AREA\\\", area);\\n    }\\n  }\\n\\n  static setOptions({\\n    canvasMaxAreaInBytes = -1,\\n    isImageDecoderSupported = false,\\n  }) {\\n    if (!this._hasMaxArea) {\\n      \u002F\u002F Divide by 4 to have the value in pixels.\\n      this.MAX_AREA = canvasMaxAreaInBytes >> 2;\\n    }\\n    this.#isImageDecoderSupported = isImageDecoderSupported;\\n  }\\n\\n  static _areGoodDims(width, height) {\\n    try {\\n      \u002F\u002F This code is working in either Firefox or Chrome.\\n      \u002F\u002F There is a faster solution using transferToImageBitmap which is faster\\n      \u002F\u002F in Firefox (when the dimensions are wrong the resulting bitmap has its\\n      \u002F\u002F dimensions equal to 1) but it doesn't find the correct values in\\n      \u002F\u002F Chrome.\\n      const canvas = new OffscreenCanvas(width, height);\\n      const ctx = canvas.getContext(\\\"2d\\\");\\n      ctx.fillRect(0, 0, 1, 1);\\n      const opacity = ctx.getImageData(0, 0, 1, 1).data[3];\\n      canvas.width = canvas.height = 1;\\n      return opacity !== 0;\\n    } catch {\\n      return false;\\n    }\\n  }\\n\\n  static _guessMax(start, end, tolerance, defaultHeight) {\\n    \u002F\u002F We don't really need to have exact values.\\n    \u002F\u002F When we're here then we're in a corner case: we've a very large image.\\n    \u002F\u002F So we could potentially downscale an image which fits in the canvas,\\n    \u002F\u002F it's maybe a pity in term of perfs but we'll reduce the memory use.\\n    \u002F\u002F The tolerance is the acceptable error we can make on the limit we want.\\n    \u002F\u002F On Chrome, when the tolerance 0 then it can take ~5s to compute the max\\n    \u002F\u002F area... and having a tolerance of 128 divides the time by 2.\\n    while (start + tolerance + 1 \u003C end) {\\n      const middle = Math.floor((start + end) \u002F 2);\\n      const height = defaultHeight || middle;\\n      if (this._areGoodDims(middle, height)) {\\n        start = middle;\\n      } else {\\n        end = middle;\\n      }\\n    }\\n    return start;\\n  }\\n\\n  static async createImage(imgData, isMask = false) {\\n    return new ImageResizer(imgData, isMask)._createImage();\\n  }\\n\\n  async _createImage() {\\n    const { _imgData: imgData } = this;\\n    const { width, height } = imgData;\\n\\n    if (width * height * 4 > MAX_INT_32) {\\n      \u002F\u002F The resulting RGBA image is too large.\\n      \u002F\u002F We just rescale the data.\\n      const result = this.#rescaleImageData();\\n      if (result) {\\n        return result;\\n      }\\n    }\\n\\n    const data = this._encodeBMP();\\n    let decoder, imagePromise;\\n\\n    if (await ImageResizer.canUseImageDecoder) {\\n      decoder = new ImageDecoder({\\n        data,\\n        type: \\\"image\u002Fbmp\\\",\\n        preferAnimation: false,\\n        transfer: [data.buffer],\\n      });\\n      imagePromise = decoder\\n        .decode()\\n        .catch(reason => {\\n          warn(`BMP image decoding failed: ${reason}`);\\n          \u002F\u002F It's a bit unfortunate to create the BMP twice but we shouldn't be\\n          \u002F\u002F here in the first place.\\n          return createImageBitmap(\\n            new Blob([this._encodeBMP().buffer], {\\n              type: \\\"image\u002Fbmp\\\",\\n            })\\n          );\\n        })\\n        .finally(() => {\\n          decoder.close();\\n        });\\n    } else {\\n      imagePromise = createImageBitmap(\\n        new Blob([data.buffer], {\\n          type: \\\"image\u002Fbmp\\\",\\n        })\\n      );\\n    }\\n\\n    const { MAX_AREA, MAX_DIM } = ImageResizer;\\n    const minFactor = Math.max(\\n      width \u002F MAX_DIM,\\n      height \u002F MAX_DIM,\\n      Math.sqrt((width * height) \u002F MAX_AREA)\\n    );\\n\\n    const firstFactor = Math.max(minFactor, 2);\\n\\n    \u002F\u002F Add 1 to the ratio and round it with 1 digit.\\n    \u002F\u002F We add 1.25 in order to have a final image under the limits\\n    \u002F\u002F (and not just at the limits) to reduce memory use.\\n    const factor = Math.round(10 * (minFactor + 1.25)) \u002F 10 \u002F firstFactor;\\n\\n    const N = Math.floor(Math.log2(factor));\\n    const steps = new Array(N + 2).fill(2);\\n    steps[0] = firstFactor;\\n    steps.splice(-1, 1, factor \u002F (1 \u003C\u003C N));\\n\\n    let newWidth = width;\\n    let newHeight = height;\\n    const result = await imagePromise;\\n    let bitmap = result.image || result;\\n\\n    for (const step of steps) {\\n      const prevWidth = newWidth;\\n      const prevHeight = newHeight;\\n\\n      \u002F\u002F See bug 1820511 (Windows specific bug).\\n      \u002F\u002F TODO: once the above bug is fixed we could revert to:\\n      \u002F\u002F newWidth = Math.floor(newWidth \u002F 2);\\n      newWidth = Math.floor(newWidth \u002F step) - 1;\\n      newHeight = Math.floor(newHeight \u002F step) - 1;\\n\\n      const canvas = new OffscreenCanvas(newWidth, newHeight);\\n      const ctx = canvas.getContext(\\\"2d\\\");\\n      ctx.drawImage(\\n        bitmap,\\n        0,\\n        0,\\n        prevWidth,\\n        prevHeight,\\n        0,\\n        0,\\n        newWidth,\\n        newHeight\\n      );\\n\\n      \u002F\u002F Release the resources associated with the bitmap.\\n      bitmap.close();\\n      bitmap = canvas.transferToImageBitmap();\\n    }\\n\\n    imgData.data = null;\\n    imgData.bitmap = bitmap;\\n    imgData.width = newWidth;\\n    imgData.height = newHeight;\\n\\n    return imgData;\\n  }\\n\\n  #rescaleImageData() {\\n    const { _imgData: imgData } = this;\\n    const { data, width, height, kind } = imgData;\\n    const rgbaSize = width * height * 4;\\n    \u002F\u002F K is such as width * height * 4 \u002F 2 ** K \u003C= 2 ** 31 - 1\\n    const K = Math.ceil(Math.log2(rgbaSize \u002F MAX_INT_32));\\n    const newWidth = width >> K;\\n    const newHeight = height >> K;\\n    let rgbaData;\\n    let maxHeight = height;\\n\\n    \u002F\u002F We try to allocate the buffer with the maximum size but it can fail.\\n    try {\\n      rgbaData = new Uint8Array(rgbaSize);\\n    } catch {\\n      \u002F\u002F n is such as 2 ** n - 1 > width * height * 4\\n      let n = Math.floor(Math.log2(rgbaSize + 1));\\n\\n      while (true) {\\n        try {\\n          rgbaData = new Uint8Array(2 ** n - 1);\\n          break;\\n        } catch {\\n          n -= 1;\\n        }\\n      }\\n\\n      maxHeight = Math.floor((2 ** n - 1) \u002F (width * 4));\\n      const newSize = width * maxHeight * 4;\\n      if (newSize \u003C rgbaData.length) {\\n        rgbaData = new Uint8Array(newSize);\\n      }\\n    }\\n\\n    const src32 = new Uint32Array(rgbaData.buffer);\\n    const dest32 = new Uint32Array(newWidth * newHeight);\\n\\n    let srcPos = 0;\\n    let newIndex = 0;\\n    const step = Math.ceil(height \u002F maxHeight);\\n    const remainder = height % maxHeight === 0 ? height : height % maxHeight;\\n    for (let k = 0; k \u003C step; k++) {\\n      const h = k \u003C step - 1 ? maxHeight : remainder;\\n      ({ srcPos } = convertToRGBA({\\n        kind,\\n        src: data,\\n        dest: src32,\\n        width,\\n        height: h,\\n        inverseDecode: this._isMask,\\n        srcPos,\\n      }));\\n\\n      for (let i = 0, ii = h >> K; i \u003C ii; i++) {\\n        const buf = src32.subarray((i \u003C\u003C K) * width);\\n        for (let j = 0; j \u003C newWidth; j++) {\\n          dest32[newIndex++] = buf[j \u003C\u003C K];\\n        }\\n      }\\n    }\\n\\n    if (ImageResizer.needsToBeResized(newWidth, newHeight)) {\\n      imgData.data = dest32;\\n      imgData.width = newWidth;\\n      imgData.height = newHeight;\\n      imgData.kind = ImageKind.RGBA_32BPP;\\n\\n      return null;\\n    }\\n\\n    const canvas = new OffscreenCanvas(newWidth, newHeight);\\n    const ctx = canvas.getContext(\\\"2d\\\", { willReadFrequently: true });\\n    ctx.putImageData(\\n      new ImageData(new Uint8ClampedArray(dest32.buffer), newWidth, newHeight),\\n      0,\\n      0\\n    );\\n    imgData.data = null;\\n    imgData.bitmap = canvas.transferToImageBitmap();\\n    imgData.width = newWidth;\\n    imgData.height = newHeight;\\n\\n    return imgData;\\n  }\\n\\n  _encodeBMP() {\\n    const { width, height, kind } = this._imgData;\\n    let data = this._imgData.data;\\n    let bitPerPixel;\\n    let colorTable = new Uint8Array(0);\\n    let maskTable = colorTable;\\n    let compression = 0;\\n\\n    \u002F\u002F Each row of the image must be padded in order to have a final size which\\n    \u002F\u002F is a multiple of 4.\\n\\n    switch (kind) {\\n      case ImageKind.GRAYSCALE_1BPP: {\\n        bitPerPixel = 1;\\n        colorTable = new Uint8Array(\\n          this._isMask\\n            ? [255, 255, 255, 255, 0, 0, 0, 0]\\n            : [0, 0, 0, 0, 255, 255, 255, 255]\\n        );\\n        const rowLen = (width + 7) >> 3;\\n        const rowSize = (rowLen + 3) & -4;\\n        if (rowLen !== rowSize) {\\n          const newData = new Uint8Array(rowSize * height);\\n          let k = 0;\\n          for (\\n            let i = 0, ii = height * rowLen;\\n            i \u003C ii;\\n            i += rowLen, k += rowSize\\n          ) {\\n            newData.set(data.subarray(i, i + rowLen), k);\\n          }\\n          data = newData;\\n        }\\n        break;\\n      }\\n      case ImageKind.RGB_24BPP: {\\n        bitPerPixel = 24;\\n        if (width & 3) {\\n          const rowLen = 3 * width;\\n          const rowSize = (rowLen + 3) & -4;\\n          const extraLen = rowSize - rowLen;\\n          const newData = new Uint8Array(rowSize * height);\\n          let k = 0;\\n          for (let i = 0, ii = height * rowLen; i \u003C ii; i += rowLen) {\\n            const row = data.subarray(i, i + rowLen);\\n            for (let j = 0; j \u003C rowLen; j += 3) {\\n              newData[k++] = row[j + 2];\\n              newData[k++] = row[j + 1];\\n              newData[k++] = row[j];\\n            }\\n            k += extraLen;\\n          }\\n          data = newData;\\n        } else {\\n          for (let i = 0, ii = data.length; i \u003C ii; i += 3) {\\n            \u002F\u002F Just swap R and B.\\n            const tmp = data[i];\\n            data[i] = data[i + 2];\\n            data[i + 2] = tmp;\\n          }\\n        }\\n        break;\\n      }\\n      case ImageKind.RGBA_32BPP:\\n        bitPerPixel = 32;\\n        compression = 3;\\n        maskTable = new Uint8Array(\\n          4 \u002F* R mask *\u002F +\\n            4 \u002F* G mask *\u002F +\\n            4 \u002F* B mask *\u002F +\\n            4 \u002F* A mask *\u002F +\\n            52 \u002F* Windows color space stuff *\u002F\\n        );\\n        const view = new DataView(maskTable.buffer);\\n        if (FeatureTest.isLittleEndian) {\\n          view.setUint32(0, 0x000000ff, true);\\n          view.setUint32(4, 0x0000ff00, true);\\n          view.setUint32(8, 0x00ff0000, true);\\n          view.setUint32(12, 0xff000000, true);\\n        } else {\\n          view.setUint32(0, 0xff000000, true);\\n          view.setUint32(4, 0x00ff0000, true);\\n          view.setUint32(8, 0x0000ff00, true);\\n          view.setUint32(12, 0x000000ff, true);\\n        }\\n        break;\\n      default:\\n        throw new Error(\\\"invalid format\\\");\\n    }\\n\\n    let i = 0;\\n    const headerLength = 40 + maskTable.length;\\n    const fileLength = 14 + headerLength + colorTable.length + data.length;\\n    const bmpData = new Uint8Array(fileLength);\\n    const view = new DataView(bmpData.buffer);\\n\\n    \u002F\u002F Signature.\\n    view.setUint16(i, 0x4d42, true);\\n    i += 2;\\n\\n    \u002F\u002F File size.\\n    view.setUint32(i, fileLength, true);\\n    i += 4;\\n\\n    \u002F\u002F Reserved.\\n    view.setUint32(i, 0, true);\\n    i += 4;\\n\\n    \u002F\u002F Data offset.\\n    view.setUint32(i, 14 + headerLength + colorTable.length, true);\\n    i += 4;\\n\\n    \u002F\u002F Header size.\\n    view.setUint32(i, headerLength, true);\\n    i += 4;\\n\\n    \u002F\u002F Width.\\n    view.setInt32(i, width, true);\\n    i += 4;\\n\\n    \u002F\u002F Height.\\n    \u002F\u002F Negative height indicates that the image is stored from top to bottom.\\n    view.setInt32(i, -height, true);\\n    i += 4;\\n\\n    \u002F\u002F Number of planes (must be 1).\\n    view.setUint16(i, 1, true);\\n    i += 2;\\n\\n    \u002F\u002F Number of bit per pixel.\\n    view.setUint16(i, bitPerPixel, true);\\n    i += 2;\\n\\n    \u002F\u002F Compression method.\\n    view.setUint32(i, compression, true);\\n    i += 4;\\n\\n    \u002F\u002F The image size.\\n    view.setUint32(i, 0, true);\\n    i += 4;\\n\\n    \u002F\u002F Horizontal resolution.\\n    view.setInt32(i, 0, true);\\n    i += 4;\\n\\n    \u002F\u002F Vertical resolution.\\n    view.setInt32(i, 0, true);\\n    i += 4;\\n\\n    \u002F\u002F Number of colors in the palette (0 to default).\\n    view.setUint32(i, colorTable.length \u002F 4, true);\\n    i += 4;\\n\\n    \u002F\u002F Number of important colors used (0 to default).\\n    view.setUint32(i, 0, true);\\n    i += 4;\\n\\n    bmpData.set(maskTable, i);\\n    i += maskTable.length;\\n\\n    bmpData.set(colorTable, i);\\n    i += colorTable.length;\\n\\n    bmpData.set(data, i);\\n\\n    return bmpData;\\n  }\\n}\\n\\nexport { ImageResizer };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { Stream } from \\\".\u002Fstream.js\\\";\\n\\n\u002F\u002F Lots of DecodeStreams are created whose buffers are never used.  For these\\n\u002F\u002F we share a single empty buffer. This is (a) space-efficient and (b) avoids\\n\u002F\u002F having special cases that would be required if we used |null| for an empty\\n\u002F\u002F buffer.\\nconst emptyBuffer = new Uint8Array(0);\\n\\n\u002F\u002F Super class for the decoding streams.\\nclass DecodeStream extends BaseStream {\\n  constructor(maybeMinBufferLength) {\\n    super();\\n    this._rawMinBufferLength = maybeMinBufferLength || 0;\\n\\n    this.pos = 0;\\n    this.bufferLength = 0;\\n    this.eof = false;\\n    this.buffer = emptyBuffer;\\n    this.minBufferLength = 512;\\n    if (maybeMinBufferLength) {\\n      \u002F\u002F Compute the first power of two that is as big as maybeMinBufferLength.\\n      while (this.minBufferLength \u003C maybeMinBufferLength) {\\n        this.minBufferLength *= 2;\\n      }\\n    }\\n  }\\n\\n  get isEmpty() {\\n    while (!this.eof && this.bufferLength === 0) {\\n      this.readBlock();\\n    }\\n    return this.bufferLength === 0;\\n  }\\n\\n  ensureBuffer(requested) {\\n    const buffer = this.buffer;\\n    if (requested \u003C= buffer.byteLength) {\\n      return buffer;\\n    }\\n    let size = this.minBufferLength;\\n    while (size \u003C requested) {\\n      size *= 2;\\n    }\\n    const buffer2 = new Uint8Array(size);\\n    buffer2.set(buffer);\\n    return (this.buffer = buffer2);\\n  }\\n\\n  getByte() {\\n    const pos = this.pos;\\n    while (this.bufferLength \u003C= pos) {\\n      if (this.eof) {\\n        return -1;\\n      }\\n      this.readBlock();\\n    }\\n    return this.buffer[this.pos++];\\n  }\\n\\n  getBytes(length, decoderOptions = null) {\\n    const pos = this.pos;\\n    let end;\\n\\n    if (length) {\\n      this.ensureBuffer(pos + length);\\n      end = pos + length;\\n\\n      while (!this.eof && this.bufferLength \u003C end) {\\n        this.readBlock(decoderOptions);\\n      }\\n      const bufEnd = this.bufferLength;\\n      if (end > bufEnd) {\\n        end = bufEnd;\\n      }\\n    } else {\\n      while (!this.eof) {\\n        this.readBlock(decoderOptions);\\n      }\\n      end = this.bufferLength;\\n    }\\n\\n    this.pos = end;\\n    return this.buffer.subarray(pos, end);\\n  }\\n\\n  async getImageData(length, decoderOptions) {\\n    if (!this.canAsyncDecodeImageFromBuffer) {\\n      if (this.isAsyncDecoder) {\\n        return this.decodeImage(null, decoderOptions);\\n      }\\n      return this.getBytes(length, decoderOptions);\\n    }\\n    const data = await this.stream.asyncGetBytes();\\n    return this.decodeImage(data, decoderOptions);\\n  }\\n\\n  reset() {\\n    this.pos = 0;\\n  }\\n\\n  makeSubStream(start, length, dict = null) {\\n    if (length === undefined) {\\n      while (!this.eof) {\\n        this.readBlock();\\n      }\\n    } else {\\n      const end = start + length;\\n      while (this.bufferLength \u003C= end && !this.eof) {\\n        this.readBlock();\\n      }\\n    }\\n    return new Stream(this.buffer, start, length, dict);\\n  }\\n\\n  getBaseStreams() {\\n    return this.str ? this.str.getBaseStreams() : null;\\n  }\\n}\\n\\nclass StreamsSequenceStream extends DecodeStream {\\n  constructor(streams, onError = null) {\\n    streams = streams.filter(s => s instanceof BaseStream);\\n\\n    let maybeLength = 0;\\n    for (const stream of streams) {\\n      maybeLength +=\\n        stream instanceof DecodeStream\\n          ? stream._rawMinBufferLength\\n          : stream.length;\\n    }\\n    super(maybeLength);\\n\\n    this.streams = streams;\\n    this._onError = onError;\\n  }\\n\\n  readBlock() {\\n    const streams = this.streams;\\n    if (streams.length === 0) {\\n      this.eof = true;\\n      return;\\n    }\\n    const stream = streams.shift();\\n    let chunk;\\n    try {\\n      chunk = stream.getBytes();\\n    } catch (reason) {\\n      if (this._onError) {\\n        this._onError(reason, stream.dict?.objId);\\n        return;\\n      }\\n      throw reason;\\n    }\\n    const bufferLength = this.bufferLength;\\n    const newLength = bufferLength + chunk.length;\\n    const buffer = this.ensureBuffer(newLength);\\n    buffer.set(chunk, bufferLength);\\n    this.bufferLength = newLength;\\n  }\\n\\n  getBaseStreams() {\\n    const baseStreamsBuf = [];\\n    for (const stream of this.streams) {\\n      const baseStreams = stream.getBaseStreams();\\n      if (baseStreams) {\\n        baseStreamsBuf.push(...baseStreams);\\n      }\\n    }\\n    return baseStreamsBuf.length > 0 ? baseStreamsBuf : null;\\n  }\\n}\\n\\nexport { DecodeStream, StreamsSequenceStream };\\n\",\"\u002F* Copyright 2024 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  AlternateCS,\\n  CalGrayCS,\\n  CalRGBCS,\\n  DeviceCmykCS,\\n  DeviceGrayCS,\\n  DeviceRgbaCS,\\n  DeviceRgbCS,\\n  IndexedCS,\\n  LabCS,\\n  PatternCS,\\n} from \\\".\u002Fcolorspace.js\\\";\\nimport { CmykICCBasedCS, IccColorSpace } from \\\".\u002Ficc_colorspace.js\\\";\\nimport { Dict, Name, Ref } from \\\".\u002Fprimitives.js\\\";\\nimport { MathClamp, shadow, unreachable, warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { MissingDataException } from \\\".\u002Fcore_utils.js\\\";\\n\\nclass ColorSpaceUtils {\\n  static parse({\\n    cs,\\n    xref,\\n    resources = null,\\n    pdfFunctionFactory,\\n    globalColorSpaceCache,\\n    localColorSpaceCache,\\n    asyncIfNotCached = false,\\n  }) {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      (!globalColorSpaceCache || !localColorSpaceCache)\\n    ) {\\n      unreachable(\\n        'ColorSpaceUtils.parse - expected \\\"globalColorSpaceCache\\\"\u002F\\\"localColorSpaceCache\\\" argument.'\\n      );\\n    }\\n    const options = {\\n      xref,\\n      resources,\\n      pdfFunctionFactory,\\n      globalColorSpaceCache,\\n      localColorSpaceCache,\\n    };\\n    let csName, csRef, parsedCS;\\n\\n    \u002F\u002F Check if the ColorSpace is cached first, to avoid re-parsing it.\\n    if (cs instanceof Ref) {\\n      csRef = cs;\\n\\n      const cachedCS =\\n        globalColorSpaceCache.getByRef(csRef) ||\\n        localColorSpaceCache.getByRef(csRef);\\n      if (cachedCS) {\\n        return cachedCS;\\n      }\\n      cs = xref.fetch(cs);\\n    }\\n    if (cs instanceof Name) {\\n      csName = cs.name;\\n\\n      const cachedCS = localColorSpaceCache.getByName(csName);\\n      if (cachedCS) {\\n        return cachedCS;\\n      }\\n    }\\n\\n    try {\\n      parsedCS = this.#parse(cs, options);\\n    } catch (ex) {\\n      if (asyncIfNotCached && !(ex instanceof MissingDataException)) {\\n        return Promise.reject(ex);\\n      }\\n      throw ex;\\n    }\\n\\n    \u002F\u002F Attempt to cache the parsed ColorSpace, by name and\u002For reference.\\n    if (csName || csRef) {\\n      localColorSpaceCache.set(csName, csRef, parsedCS);\\n\\n      if (csRef) {\\n        globalColorSpaceCache.set(\u002F* name = *\u002F null, csRef, parsedCS);\\n      }\\n    }\\n    return asyncIfNotCached ? Promise.resolve(parsedCS) : parsedCS;\\n  }\\n\\n  \u002F**\\n   * NOTE: This method should *only* be invoked from `this.#parse`,\\n   *       when parsing \\\"sub\\\" ColorSpaces.\\n   *\u002F\\n  static #subParse(cs, options) {\\n    const { globalColorSpaceCache } = options;\\n    let csRef;\\n\\n    \u002F\u002F Check if the ColorSpace is cached first, to avoid re-parsing it.\\n    if (cs instanceof Ref) {\\n      csRef = cs;\\n\\n      const cachedCS = globalColorSpaceCache.getByRef(csRef);\\n      if (cachedCS) {\\n        return cachedCS;\\n      }\\n    }\\n    const parsedCS = this.#parse(cs, options);\\n\\n    \u002F\u002F Only cache the parsed ColorSpace globally, by reference.\\n    if (csRef) {\\n      globalColorSpaceCache.set(\u002F* name = *\u002F null, csRef, parsedCS);\\n    }\\n    return parsedCS;\\n  }\\n\\n  static #parse(cs, options) {\\n    const { xref, resources, pdfFunctionFactory, globalColorSpaceCache } =\\n      options;\\n\\n    cs = xref.fetchIfRef(cs);\\n    if (cs instanceof Name) {\\n      switch (cs.name) {\\n        case \\\"G\\\":\\n        case \\\"DeviceGray\\\":\\n          return this.gray;\\n        case \\\"RGB\\\":\\n        case \\\"DeviceRGB\\\":\\n          return this.rgb;\\n        case \\\"DeviceRGBA\\\":\\n          return this.rgba;\\n        case \\\"CMYK\\\":\\n        case \\\"DeviceCMYK\\\":\\n          return this.cmyk;\\n        case \\\"Pattern\\\":\\n          return new PatternCS(\u002F* baseCS = *\u002F null);\\n        default:\\n          if (resources instanceof Dict) {\\n            const colorSpaces = resources.get(\\\"ColorSpace\\\");\\n            if (colorSpaces instanceof Dict) {\\n              const resourcesCS = colorSpaces.get(cs.name);\\n              if (resourcesCS) {\\n                if (resourcesCS instanceof Name) {\\n                  return this.#parse(resourcesCS, options);\\n                }\\n                cs = resourcesCS;\\n                break;\\n              }\\n            }\\n          }\\n          \u002F\u002F Fallback to the default gray color space.\\n          warn(`Unrecognized ColorSpace: ${cs.name}`);\\n          return this.gray;\\n      }\\n    }\\n    if (Array.isArray(cs)) {\\n      const mode = xref.fetchIfRef(cs[0]).name;\\n      let params, numComps, baseCS, whitePoint, blackPoint, gamma;\\n\\n      switch (mode) {\\n        case \\\"G\\\":\\n        case \\\"DeviceGray\\\":\\n          return this.gray;\\n        case \\\"RGB\\\":\\n        case \\\"DeviceRGB\\\":\\n          return this.rgb;\\n        case \\\"CMYK\\\":\\n        case \\\"DeviceCMYK\\\":\\n          return this.cmyk;\\n        case \\\"CalGray\\\":\\n          params = xref.fetchIfRef(cs[1]);\\n          whitePoint = params.getArray(\\\"WhitePoint\\\");\\n          blackPoint = params.getArray(\\\"BlackPoint\\\");\\n          gamma = params.get(\\\"Gamma\\\");\\n          return new CalGrayCS(whitePoint, blackPoint, gamma);\\n        case \\\"CalRGB\\\":\\n          params = xref.fetchIfRef(cs[1]);\\n          whitePoint = params.getArray(\\\"WhitePoint\\\");\\n          blackPoint = params.getArray(\\\"BlackPoint\\\");\\n          gamma = params.getArray(\\\"Gamma\\\");\\n          const matrix = params.getArray(\\\"Matrix\\\");\\n          return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);\\n        case \\\"ICCBased\\\":\\n          const isRef = cs[1] instanceof Ref;\\n          if (isRef) {\\n            const cachedCS = globalColorSpaceCache.getByRef(cs[1]);\\n            if (cachedCS) {\\n              return cachedCS;\\n            }\\n          }\\n\\n          const stream = xref.fetchIfRef(cs[1]);\\n          const dict = stream.dict;\\n          numComps = dict.get(\\\"N\\\");\\n\\n          if (IccColorSpace.isUsable) {\\n            try {\\n              const iccCS = new IccColorSpace(\\n                stream.getBytes(),\\n                \\\"ICCBased\\\",\\n                numComps\\n              );\\n              if (isRef) {\\n                globalColorSpaceCache.set(\u002F* name = *\u002F null, cs[1], iccCS);\\n              }\\n              return iccCS;\\n            } catch (ex) {\\n              if (ex instanceof MissingDataException) {\\n                throw ex;\\n              }\\n              warn(`ICCBased color space (${cs[1]}): \\\"${ex}\\\".`);\\n            }\\n          }\\n\\n          const altRaw = dict.getRaw(\\\"Alternate\\\");\\n          if (altRaw) {\\n            const altCS = this.#subParse(altRaw, options);\\n            \u002F\u002F Ensure that the number of components are correct,\\n            \u002F\u002F and also (indirectly) that it is not a PatternCS.\\n            if (altCS.numComps === numComps) {\\n              return altCS;\\n            }\\n            warn(\\\"ICCBased color space: Ignoring incorrect \u002FAlternate entry.\\\");\\n          }\\n          if (numComps === 1) {\\n            return this.gray;\\n          } else if (numComps === 3) {\\n            return this.rgb;\\n          } else if (numComps === 4) {\\n            return this.cmyk;\\n          }\\n          break;\\n        case \\\"Pattern\\\":\\n          baseCS = cs[1] || null;\\n          if (baseCS) {\\n            baseCS = this.#subParse(baseCS, options);\\n          }\\n          return new PatternCS(baseCS);\\n        case \\\"I\\\":\\n        case \\\"Indexed\\\":\\n          baseCS = this.#subParse(cs[1], options);\\n          const hiVal = MathClamp(xref.fetchIfRef(cs[2]), 0, 255);\\n          const lookup = xref.fetchIfRef(cs[3]);\\n          return new IndexedCS(baseCS, hiVal, lookup);\\n        case \\\"Separation\\\":\\n        case \\\"DeviceN\\\":\\n          const name = xref.fetchIfRef(cs[1]);\\n          numComps = Array.isArray(name) ? name.length : 1;\\n          baseCS = this.#subParse(cs[2], options);\\n          const tintFn = pdfFunctionFactory.create(cs[3]);\\n          return new AlternateCS(numComps, baseCS, tintFn);\\n        case \\\"Lab\\\":\\n          params = xref.fetchIfRef(cs[1]);\\n          whitePoint = params.getArray(\\\"WhitePoint\\\");\\n          blackPoint = params.getArray(\\\"BlackPoint\\\");\\n          const range = params.getArray(\\\"Range\\\");\\n          return new LabCS(whitePoint, blackPoint, range);\\n        default:\\n          \u002F\u002F Fallback to the default gray color space.\\n          warn(`Unimplemented ColorSpace object: ${mode}`);\\n          return this.gray;\\n      }\\n    }\\n    \u002F\u002F Fallback to the default gray color space.\\n    warn(`Unrecognized ColorSpace object: ${cs}`);\\n    return this.gray;\\n  }\\n\\n  static get gray() {\\n    return shadow(this, \\\"gray\\\", new DeviceGrayCS());\\n  }\\n\\n  static get rgb() {\\n    return shadow(this, \\\"rgb\\\", new DeviceRgbCS());\\n  }\\n\\n  static get rgba() {\\n    return shadow(this, \\\"rgba\\\", new DeviceRgbaCS());\\n  }\\n\\n  static get cmyk() {\\n    if (CmykICCBasedCS.isUsable) {\\n      try {\\n        return shadow(this, \\\"cmyk\\\", new CmykICCBasedCS());\\n      } catch {\\n        warn(\\\"CMYK fallback: DeviceCMYK\\\");\\n      }\\n    }\\n    return shadow(this, \\\"cmyk\\\", new DeviceCmykCS());\\n  }\\n}\\n\\nexport { ColorSpaceUtils };\\n\",\"\u002F* Copyright 2014 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the 'License');\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an 'AS IS' BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { assert, BaseException, warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { ColorSpaceUtils } from \\\".\u002Fcolorspace_utils.js\\\";\\nimport { DeviceCmykCS } from \\\".\u002Fcolorspace.js\\\";\\nimport { grayToRGBA } from \\\"..\u002Fshared\u002Fimage_utils.js\\\";\\nimport { readUint16 } from \\\".\u002Fcore_utils.js\\\";\\n\\nclass JpegError extends BaseException {\\n  constructor(msg) {\\n    super(msg, \\\"JpegError\\\");\\n  }\\n}\\n\\nclass DNLMarkerError extends BaseException {\\n  constructor(message, scanLines) {\\n    super(message, \\\"DNLMarkerError\\\");\\n    this.scanLines = scanLines;\\n  }\\n}\\n\\nclass EOIMarkerError extends BaseException {\\n  constructor(msg) {\\n    super(msg, \\\"EOIMarkerError\\\");\\n  }\\n}\\n\\n\u002F**\\n * This code was forked from https:\u002F\u002Fgithub.com\u002Fnotmasteryet\u002Fjpgjs.\\n * The original version was created by GitHub user notmasteryet.\\n *\\n * - The JPEG specification can be found in the ITU CCITT Recommendation T.81\\n *   (www.w3.org\u002FGraphics\u002FJPEG\u002Fitu-t81.pdf)\\n * - The JFIF specification can be found in the JPEG File Interchange Format\\n *   (www.w3.org\u002FGraphics\u002FJPEG\u002Fjfif3.pdf)\\n * - The Adobe Application-Specific JPEG markers in the\\n *   Supporting the DCT Filters in PostScript Level 2, Technical Note #5116\\n *   (partners.adobe.com\u002Fpublic\u002Fdeveloper\u002Fen\u002Fps\u002Fsdk\u002F5116.DCT_Filter.pdf)\\n *\u002F\\n\\n\u002F\u002F prettier-ignore\\nconst dctZigZag = new Uint8Array([\\n   0,\\n   1,  8,\\n  16,  9,  2,\\n   3, 10, 17, 24,\\n  32, 25, 18, 11, 4,\\n   5, 12, 19, 26, 33, 40,\\n  48, 41, 34, 27, 20, 13,  6,\\n   7, 14, 21, 28, 35, 42, 49, 56,\\n  57, 50, 43, 36, 29, 22, 15,\\n  23, 30, 37, 44, 51, 58,\\n  59, 52, 45, 38, 31,\\n  39, 46, 53, 60,\\n  61, 54, 47,\\n  55, 62,\\n  63\\n]);\\n\\nconst dctCos1 = 4017; \u002F\u002F cos(pi\u002F16)\\nconst dctSin1 = 799; \u002F\u002F sin(pi\u002F16)\\nconst dctCos3 = 3406; \u002F\u002F cos(3*pi\u002F16)\\nconst dctSin3 = 2276; \u002F\u002F sin(3*pi\u002F16)\\nconst dctCos6 = 1567; \u002F\u002F cos(6*pi\u002F16)\\nconst dctSin6 = 3784; \u002F\u002F sin(6*pi\u002F16)\\nconst dctSqrt2 = 5793; \u002F\u002F sqrt(2)\\nconst dctSqrt1d2 = 2896; \u002F\u002F sqrt(2) \u002F 2\\n\\nfunction buildHuffmanTable(codeLengths, values) {\\n  let k = 0,\\n    i,\\n    j,\\n    length = 16;\\n  while (length > 0 && !codeLengths[length - 1]) {\\n    length--;\\n  }\\n  const code = [{ children: [], index: 0 }];\\n  let p = code[0],\\n    q;\\n  for (i = 0; i \u003C length; i++) {\\n    for (j = 0; j \u003C codeLengths[i]; j++) {\\n      p = code.pop();\\n      p.children[p.index] = values[k];\\n      while (p.index > 0) {\\n        p = code.pop();\\n      }\\n      p.index++;\\n      code.push(p);\\n      while (code.length \u003C= i) {\\n        code.push((q = { children: [], index: 0 }));\\n        p.children[p.index] = q.children;\\n        p = q;\\n      }\\n      k++;\\n    }\\n    if (i + 1 \u003C length) {\\n      \u002F\u002F p here points to last code\\n      code.push((q = { children: [], index: 0 }));\\n      p.children[p.index] = q.children;\\n      p = q;\\n    }\\n  }\\n  return code[0].children;\\n}\\n\\nfunction getBlockBufferOffset(component, row, col) {\\n  return 64 * ((component.blocksPerLine + 1) * row + col);\\n}\\n\\nfunction decodeScan(\\n  data,\\n  offset,\\n  frame,\\n  components,\\n  resetInterval,\\n  spectralStart,\\n  spectralEnd,\\n  successivePrev,\\n  successive,\\n  parseDNLMarker = false\\n) {\\n  const mcusPerLine = frame.mcusPerLine;\\n  const progressive = frame.progressive;\\n\\n  const startOffset = offset;\\n  let bitsData = 0,\\n    bitsCount = 0;\\n\\n  function readBit() {\\n    if (bitsCount > 0) {\\n      bitsCount--;\\n      return (bitsData >> bitsCount) & 1;\\n    }\\n    bitsData = data[offset++];\\n    if (bitsData === 0xff) {\\n      const nextByte = data[offset++];\\n      if (nextByte) {\\n        if (nextByte === \u002F* DNL = *\u002F 0xdc && parseDNLMarker) {\\n          offset += 2; \u002F\u002F Skip marker length.\\n\\n          const scanLines = readUint16(data, offset);\\n          offset += 2;\\n          if (scanLines > 0 && scanLines !== frame.scanLines) {\\n            throw new DNLMarkerError(\\n              \\\"Found DNL marker (0xFFDC) while parsing scan data\\\",\\n              scanLines\\n            );\\n          }\\n        } else if (nextByte === \u002F* EOI = *\u002F 0xd9) {\\n          if (parseDNLMarker) {\\n            \u002F\u002F NOTE: only 8-bit JPEG images are supported in this decoder.\\n            const maybeScanLines = blockRow * (frame.precision === 8 ? 8 : 0);\\n            \u002F\u002F Heuristic to attempt to handle corrupt JPEG images with too\\n            \u002F\u002F large `scanLines` parameter, by falling back to the currently\\n            \u002F\u002F parsed number of scanLines when it's at least (approximately)\\n            \u002F\u002F one \\\"half\\\" order of magnitude smaller than expected (fixes\\n            \u002F\u002F issue10880.pdf, issue10989.pdf, issue15492.pdf).\\n            if (\\n              maybeScanLines > 0 &&\\n              Math.round(frame.scanLines \u002F maybeScanLines) >= 5\\n            ) {\\n              throw new DNLMarkerError(\\n                \\\"Found EOI marker (0xFFD9) while parsing scan data, \\\" +\\n                  \\\"possibly caused by incorrect `scanLines` parameter\\\",\\n                maybeScanLines\\n              );\\n            }\\n          }\\n          throw new EOIMarkerError(\\n            \\\"Found EOI marker (0xFFD9) while parsing scan data\\\"\\n          );\\n        }\\n        throw new JpegError(\\n          `unexpected marker ${((bitsData \u003C\u003C 8) | nextByte).toString(16)}`\\n        );\\n      }\\n      \u002F\u002F unstuff 0\\n    }\\n    bitsCount = 7;\\n    return bitsData >>> 7;\\n  }\\n\\n  function decodeHuffman(tree) {\\n    let node = tree;\\n    while (true) {\\n      node = node[readBit()];\\n      switch (typeof node) {\\n        case \\\"number\\\":\\n          return node;\\n        case \\\"object\\\":\\n          continue;\\n      }\\n      throw new JpegError(\\\"invalid huffman sequence\\\");\\n    }\\n  }\\n\\n  function receive(length) {\\n    let n = 0;\\n    while (length > 0) {\\n      n = (n \u003C\u003C 1) | readBit();\\n      length--;\\n    }\\n    return n;\\n  }\\n\\n  function receiveAndExtend(length) {\\n    if (length === 1) {\\n      return readBit() === 1 ? 1 : -1;\\n    }\\n    const n = receive(length);\\n    if (n >= 1 \u003C\u003C (length - 1)) {\\n      return n;\\n    }\\n    return n + (-1 \u003C\u003C length) + 1;\\n  }\\n\\n  function decodeBaseline(component, blockOffset) {\\n    const t = decodeHuffman(component.huffmanTableDC);\\n    const diff = t === 0 ? 0 : receiveAndExtend(t);\\n    component.blockData[blockOffset] = component.pred += diff;\\n    let k = 1;\\n    while (k \u003C 64) {\\n      const rs = decodeHuffman(component.huffmanTableAC);\\n      const s = rs & 15,\\n        r = rs >> 4;\\n      if (s === 0) {\\n        if (r \u003C 15) {\\n          break;\\n        }\\n        k += 16;\\n        continue;\\n      }\\n      k += r;\\n      const z = dctZigZag[k];\\n      component.blockData[blockOffset + z] = receiveAndExtend(s);\\n      k++;\\n    }\\n  }\\n\\n  function decodeDCFirst(component, blockOffset) {\\n    const t = decodeHuffman(component.huffmanTableDC);\\n    const diff = t === 0 ? 0 : receiveAndExtend(t) \u003C\u003C successive;\\n    component.blockData[blockOffset] = component.pred += diff;\\n  }\\n\\n  function decodeDCSuccessive(component, blockOffset) {\\n    component.blockData[blockOffset] |= readBit() \u003C\u003C successive;\\n  }\\n\\n  let eobrun = 0;\\n  function decodeACFirst(component, blockOffset) {\\n    if (eobrun > 0) {\\n      eobrun--;\\n      return;\\n    }\\n    let k = spectralStart;\\n    const e = spectralEnd;\\n    while (k \u003C= e) {\\n      const rs = decodeHuffman(component.huffmanTableAC);\\n      const s = rs & 15,\\n        r = rs >> 4;\\n      if (s === 0) {\\n        if (r \u003C 15) {\\n          eobrun = receive(r) + (1 \u003C\u003C r) - 1;\\n          break;\\n        }\\n        k += 16;\\n        continue;\\n      }\\n      k += r;\\n      const z = dctZigZag[k];\\n      component.blockData[blockOffset + z] =\\n        receiveAndExtend(s) * (1 \u003C\u003C successive);\\n      k++;\\n    }\\n  }\\n\\n  let successiveACState = 0,\\n    successiveACNextValue;\\n  function decodeACSuccessive(component, blockOffset) {\\n    let k = spectralStart;\\n    const e = spectralEnd;\\n    let r = 0;\\n    let s;\\n    let rs;\\n    while (k \u003C= e) {\\n      const offsetZ = blockOffset + dctZigZag[k];\\n      const sign = component.blockData[offsetZ] \u003C 0 ? -1 : 1;\\n      switch (successiveACState) {\\n        case 0: \u002F\u002F initial state\\n          rs = decodeHuffman(component.huffmanTableAC);\\n          s = rs & 15;\\n          r = rs >> 4;\\n          if (s === 0) {\\n            if (r \u003C 15) {\\n              eobrun = receive(r) + (1 \u003C\u003C r);\\n              successiveACState = 4;\\n            } else {\\n              r = 16;\\n              successiveACState = 1;\\n            }\\n          } else {\\n            if (s !== 1) {\\n              throw new JpegError(\\\"invalid ACn encoding\\\");\\n            }\\n            successiveACNextValue = receiveAndExtend(s);\\n            successiveACState = r ? 2 : 3;\\n          }\\n          continue;\\n        case 1: \u002F\u002F skipping r zero items\\n        case 2:\\n          if (component.blockData[offsetZ]) {\\n            component.blockData[offsetZ] += sign * (readBit() \u003C\u003C successive);\\n          } else {\\n            r--;\\n            if (r === 0) {\\n              successiveACState = successiveACState === 2 ? 3 : 0;\\n            }\\n          }\\n          break;\\n        case 3: \u002F\u002F set value for a zero item\\n          if (component.blockData[offsetZ]) {\\n            component.blockData[offsetZ] += sign * (readBit() \u003C\u003C successive);\\n          } else {\\n            component.blockData[offsetZ] = successiveACNextValue \u003C\u003C successive;\\n            successiveACState = 0;\\n          }\\n          break;\\n        case 4: \u002F\u002F eob\\n          if (component.blockData[offsetZ]) {\\n            component.blockData[offsetZ] += sign * (readBit() \u003C\u003C successive);\\n          }\\n          break;\\n      }\\n      k++;\\n    }\\n    if (successiveACState === 4) {\\n      eobrun--;\\n      if (eobrun === 0) {\\n        successiveACState = 0;\\n      }\\n    }\\n  }\\n\\n  let blockRow = 0;\\n  function decodeMcu(component, decode, mcu, row, col) {\\n    const mcuRow = (mcu \u002F mcusPerLine) | 0;\\n    const mcuCol = mcu % mcusPerLine;\\n    blockRow = mcuRow * component.v + row;\\n    const blockCol = mcuCol * component.h + col;\\n    const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\\n    decode(component, blockOffset);\\n  }\\n\\n  function decodeBlock(component, decode, mcu) {\\n    blockRow = (mcu \u002F component.blocksPerLine) | 0;\\n    const blockCol = mcu % component.blocksPerLine;\\n    const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\\n    decode(component, blockOffset);\\n  }\\n\\n  const componentsLength = components.length;\\n  let component, i, j, k, n;\\n  let decodeFn;\\n  if (progressive) {\\n    if (spectralStart === 0) {\\n      decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\\n    } else {\\n      decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\\n    }\\n  } else {\\n    decodeFn = decodeBaseline;\\n  }\\n\\n  let mcu = 0,\\n    fileMarker;\\n  const mcuExpected =\\n    componentsLength === 1\\n      ? components[0].blocksPerLine * components[0].blocksPerColumn\\n      : mcusPerLine * frame.mcusPerColumn;\\n\\n  let h, v;\\n  while (mcu \u003C= mcuExpected) {\\n    \u002F\u002F reset interval stuff\\n    const mcuToRead = resetInterval\\n      ? Math.min(mcuExpected - mcu, resetInterval)\\n      : mcuExpected;\\n\\n    \u002F\u002F The `mcuToRead === 0` case should only occur when all of the expected\\n    \u002F\u002F MCU data has been already parsed, i.e. when `mcu === mcuExpected`, but\\n    \u002F\u002F some corrupt JPEG images contain more data than intended and we thus\\n    \u002F\u002F want to skip over any extra RSTx markers below (fixes issue11794.pdf).\\n    if (mcuToRead > 0) {\\n      for (i = 0; i \u003C componentsLength; i++) {\\n        components[i].pred = 0;\\n      }\\n      eobrun = 0;\\n\\n      if (componentsLength === 1) {\\n        component = components[0];\\n        for (n = 0; n \u003C mcuToRead; n++) {\\n          decodeBlock(component, decodeFn, mcu);\\n          mcu++;\\n        }\\n      } else {\\n        for (n = 0; n \u003C mcuToRead; n++) {\\n          for (i = 0; i \u003C componentsLength; i++) {\\n            component = components[i];\\n            h = component.h;\\n            v = component.v;\\n            for (j = 0; j \u003C v; j++) {\\n              for (k = 0; k \u003C h; k++) {\\n                decodeMcu(component, decodeFn, mcu, j, k);\\n              }\\n            }\\n          }\\n          mcu++;\\n        }\\n      }\\n    }\\n\\n    \u002F\u002F find marker\\n    bitsCount = 0;\\n    fileMarker = findNextFileMarker(data, offset);\\n    if (!fileMarker) {\\n      break; \u002F\u002F Reached the end of the image data without finding any marker.\\n    }\\n    if (fileMarker.invalid) {\\n      \u002F\u002F Some bad images seem to pad Scan blocks with e.g. zero bytes, skip\\n      \u002F\u002F past those to attempt to find a valid marker (fixes issue4090.pdf).\\n      const partialMsg = mcuToRead > 0 ? \\\"unexpected\\\" : \\\"excessive\\\";\\n      warn(\\n        `decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`\\n      );\\n      offset = fileMarker.offset;\\n    }\\n    if (fileMarker.marker >= 0xffd0 && fileMarker.marker \u003C= 0xffd7) {\\n      \u002F\u002F RSTx\\n      offset += 2;\\n    } else {\\n      break;\\n    }\\n  }\\n\\n  return offset - startOffset;\\n}\\n\\n\u002F\u002F A port of poppler's IDCT method which in turn is taken from:\\n\u002F\u002F   Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz,\\n\u002F\u002F   'Practical Fast 1-D DCT Algorithms with 11 Multiplications',\\n\u002F\u002F   IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989,\\n\u002F\u002F   988-991.\\nfunction quantizeAndInverse(component, blockBufferOffset, p) {\\n  const qt = component.quantizationTable,\\n    blockData = component.blockData;\\n  let v0, v1, v2, v3, v4, v5, v6, v7;\\n  let p0, p1, p2, p3, p4, p5, p6, p7;\\n  let t;\\n\\n  if (!qt) {\\n    throw new JpegError(\\\"missing required Quantization Table.\\\");\\n  }\\n\\n  \u002F\u002F inverse DCT on rows\\n  for (let row = 0; row \u003C 64; row += 8) {\\n    \u002F\u002F gather block data\\n    p0 = blockData[blockBufferOffset + row];\\n    p1 = blockData[blockBufferOffset + row + 1];\\n    p2 = blockData[blockBufferOffset + row + 2];\\n    p3 = blockData[blockBufferOffset + row + 3];\\n    p4 = blockData[blockBufferOffset + row + 4];\\n    p5 = blockData[blockBufferOffset + row + 5];\\n    p6 = blockData[blockBufferOffset + row + 6];\\n    p7 = blockData[blockBufferOffset + row + 7];\\n\\n    \u002F\u002F dequant p0\\n    p0 *= qt[row];\\n\\n    \u002F\u002F check for all-zero AC coefficients\\n    if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\\n      t = (dctSqrt2 * p0 + 512) >> 10;\\n      p[row] = t;\\n      p[row + 1] = t;\\n      p[row + 2] = t;\\n      p[row + 3] = t;\\n      p[row + 4] = t;\\n      p[row + 5] = t;\\n      p[row + 6] = t;\\n      p[row + 7] = t;\\n      continue;\\n    }\\n    \u002F\u002F dequant p1 ... p7\\n    p1 *= qt[row + 1];\\n    p2 *= qt[row + 2];\\n    p3 *= qt[row + 3];\\n    p4 *= qt[row + 4];\\n    p5 *= qt[row + 5];\\n    p6 *= qt[row + 6];\\n    p7 *= qt[row + 7];\\n\\n    \u002F\u002F stage 4\\n    v0 = (dctSqrt2 * p0 + 128) >> 8;\\n    v1 = (dctSqrt2 * p4 + 128) >> 8;\\n    v2 = p2;\\n    v3 = p6;\\n    v4 = (dctSqrt1d2 * (p1 - p7) + 128) >> 8;\\n    v7 = (dctSqrt1d2 * (p1 + p7) + 128) >> 8;\\n    v5 = p3 \u003C\u003C 4;\\n    v6 = p5 \u003C\u003C 4;\\n\\n    \u002F\u002F stage 3\\n    v0 = (v0 + v1 + 1) >> 1;\\n    v1 = v0 - v1;\\n    t = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8;\\n    v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8;\\n    v3 = t;\\n    v4 = (v4 + v6 + 1) >> 1;\\n    v6 = v4 - v6;\\n    v7 = (v7 + v5 + 1) >> 1;\\n    v5 = v7 - v5;\\n\\n    \u002F\u002F stage 2\\n    v0 = (v0 + v3 + 1) >> 1;\\n    v3 = v0 - v3;\\n    v1 = (v1 + v2 + 1) >> 1;\\n    v2 = v1 - v2;\\n    t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\\n    v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\\n    v7 = t;\\n    t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\\n    v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\\n    v6 = t;\\n\\n    \u002F\u002F stage 1\\n    p[row] = v0 + v7;\\n    p[row + 7] = v0 - v7;\\n    p[row + 1] = v1 + v6;\\n    p[row + 6] = v1 - v6;\\n    p[row + 2] = v2 + v5;\\n    p[row + 5] = v2 - v5;\\n    p[row + 3] = v3 + v4;\\n    p[row + 4] = v3 - v4;\\n  }\\n\\n  \u002F\u002F inverse DCT on columns\\n  for (let col = 0; col \u003C 8; ++col) {\\n    p0 = p[col];\\n    p1 = p[col + 8];\\n    p2 = p[col + 16];\\n    p3 = p[col + 24];\\n    p4 = p[col + 32];\\n    p5 = p[col + 40];\\n    p6 = p[col + 48];\\n    p7 = p[col + 56];\\n\\n    \u002F\u002F check for all-zero AC coefficients\\n    if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\\n      t = (dctSqrt2 * p0 + 8192) >> 14;\\n      \u002F\u002F Convert to 8-bit.\\n      if (t \u003C -2040) {\\n        t = 0;\\n      } else if (t >= 2024) {\\n        t = 255;\\n      } else {\\n        t = (t + 2056) >> 4;\\n      }\\n      blockData[blockBufferOffset + col] = t;\\n      blockData[blockBufferOffset + col + 8] = t;\\n      blockData[blockBufferOffset + col + 16] = t;\\n      blockData[blockBufferOffset + col + 24] = t;\\n      blockData[blockBufferOffset + col + 32] = t;\\n      blockData[blockBufferOffset + col + 40] = t;\\n      blockData[blockBufferOffset + col + 48] = t;\\n      blockData[blockBufferOffset + col + 56] = t;\\n      continue;\\n    }\\n\\n    \u002F\u002F stage 4\\n    v0 = (dctSqrt2 * p0 + 2048) >> 12;\\n    v1 = (dctSqrt2 * p4 + 2048) >> 12;\\n    v2 = p2;\\n    v3 = p6;\\n    v4 = (dctSqrt1d2 * (p1 - p7) + 2048) >> 12;\\n    v7 = (dctSqrt1d2 * (p1 + p7) + 2048) >> 12;\\n    v5 = p3;\\n    v6 = p5;\\n\\n    \u002F\u002F stage 3\\n    \u002F\u002F Shift v0 by 128.5 \u003C\u003C 5 here, so we don't need to shift p0...p7 when\\n    \u002F\u002F converting to UInt8 range later.\\n    v0 = ((v0 + v1 + 1) >> 1) + 4112;\\n    v1 = v0 - v1;\\n    t = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12;\\n    v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12;\\n    v3 = t;\\n    v4 = (v4 + v6 + 1) >> 1;\\n    v6 = v4 - v6;\\n    v7 = (v7 + v5 + 1) >> 1;\\n    v5 = v7 - v5;\\n\\n    \u002F\u002F stage 2\\n    v0 = (v0 + v3 + 1) >> 1;\\n    v3 = v0 - v3;\\n    v1 = (v1 + v2 + 1) >> 1;\\n    v2 = v1 - v2;\\n    t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\\n    v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\\n    v7 = t;\\n    t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\\n    v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\\n    v6 = t;\\n\\n    \u002F\u002F stage 1\\n    p0 = v0 + v7;\\n    p7 = v0 - v7;\\n    p1 = v1 + v6;\\n    p6 = v1 - v6;\\n    p2 = v2 + v5;\\n    p5 = v2 - v5;\\n    p3 = v3 + v4;\\n    p4 = v3 - v4;\\n\\n    \u002F\u002F Convert to 8-bit integers.\\n    if (p0 \u003C 16) {\\n      p0 = 0;\\n    } else if (p0 >= 4080) {\\n      p0 = 255;\\n    } else {\\n      p0 >>= 4;\\n    }\\n    if (p1 \u003C 16) {\\n      p1 = 0;\\n    } else if (p1 >= 4080) {\\n      p1 = 255;\\n    } else {\\n      p1 >>= 4;\\n    }\\n    if (p2 \u003C 16) {\\n      p2 = 0;\\n    } else if (p2 >= 4080) {\\n      p2 = 255;\\n    } else {\\n      p2 >>= 4;\\n    }\\n    if (p3 \u003C 16) {\\n      p3 = 0;\\n    } else if (p3 >= 4080) {\\n      p3 = 255;\\n    } else {\\n      p3 >>= 4;\\n    }\\n    if (p4 \u003C 16) {\\n      p4 = 0;\\n    } else if (p4 >= 4080) {\\n      p4 = 255;\\n    } else {\\n      p4 >>= 4;\\n    }\\n    if (p5 \u003C 16) {\\n      p5 = 0;\\n    } else if (p5 >= 4080) {\\n      p5 = 255;\\n    } else {\\n      p5 >>= 4;\\n    }\\n    if (p6 \u003C 16) {\\n      p6 = 0;\\n    } else if (p6 >= 4080) {\\n      p6 = 255;\\n    } else {\\n      p6 >>= 4;\\n    }\\n    if (p7 \u003C 16) {\\n      p7 = 0;\\n    } else if (p7 >= 4080) {\\n      p7 = 255;\\n    } else {\\n      p7 >>= 4;\\n    }\\n\\n    \u002F\u002F store block data\\n    blockData[blockBufferOffset + col] = p0;\\n    blockData[blockBufferOffset + col + 8] = p1;\\n    blockData[blockBufferOffset + col + 16] = p2;\\n    blockData[blockBufferOffset + col + 24] = p3;\\n    blockData[blockBufferOffset + col + 32] = p4;\\n    blockData[blockBufferOffset + col + 40] = p5;\\n    blockData[blockBufferOffset + col + 48] = p6;\\n    blockData[blockBufferOffset + col + 56] = p7;\\n  }\\n}\\n\\nfunction buildComponentData(frame, component) {\\n  const blocksPerLine = component.blocksPerLine;\\n  const blocksPerColumn = component.blocksPerColumn;\\n  const computationBuffer = new Int16Array(64);\\n\\n  for (let blockRow = 0; blockRow \u003C blocksPerColumn; blockRow++) {\\n    for (let blockCol = 0; blockCol \u003C blocksPerLine; blockCol++) {\\n      const offset = getBlockBufferOffset(component, blockRow, blockCol);\\n      quantizeAndInverse(component, offset, computationBuffer);\\n    }\\n  }\\n  return component.blockData;\\n}\\n\\nfunction findNextFileMarker(data, currentPos, startPos = currentPos) {\\n  const maxPos = data.length - 1;\\n  let newPos = startPos \u003C currentPos ? startPos : currentPos;\\n\\n  if (currentPos >= maxPos) {\\n    return null; \u002F\u002F Don't attempt to read non-existent data and just return.\\n  }\\n  const currentMarker = readUint16(data, currentPos);\\n  if (currentMarker >= 0xffc0 && currentMarker \u003C= 0xfffe) {\\n    return {\\n      invalid: null,\\n      marker: currentMarker,\\n      offset: currentPos,\\n    };\\n  }\\n  let newMarker = readUint16(data, newPos);\\n  while (!(newMarker >= 0xffc0 && newMarker \u003C= 0xfffe)) {\\n    if (++newPos >= maxPos) {\\n      return null; \u002F\u002F Don't attempt to read non-existent data and just return.\\n    }\\n    newMarker = readUint16(data, newPos);\\n  }\\n  return {\\n    invalid: currentMarker.toString(16),\\n    marker: newMarker,\\n    offset: newPos,\\n  };\\n}\\n\\nfunction prepareComponents(frame) {\\n  const mcusPerLine = Math.ceil(frame.samplesPerLine \u002F 8 \u002F frame.maxH);\\n  const mcusPerColumn = Math.ceil(frame.scanLines \u002F 8 \u002F frame.maxV);\\n  for (const component of frame.components) {\\n    const blocksPerLine = Math.ceil(\\n      (Math.ceil(frame.samplesPerLine \u002F 8) * component.h) \u002F frame.maxH\\n    );\\n    const blocksPerColumn = Math.ceil(\\n      (Math.ceil(frame.scanLines \u002F 8) * component.v) \u002F frame.maxV\\n    );\\n    const blocksPerLineForMcu = mcusPerLine * component.h;\\n    const blocksPerColumnForMcu = mcusPerColumn * component.v;\\n\\n    const blocksBufferSize =\\n      64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);\\n    component.blockData = new Int16Array(blocksBufferSize);\\n    component.blocksPerLine = blocksPerLine;\\n    component.blocksPerColumn = blocksPerColumn;\\n  }\\n  frame.mcusPerLine = mcusPerLine;\\n  frame.mcusPerColumn = mcusPerColumn;\\n}\\n\\nfunction readDataBlock(data, offset) {\\n  const length = readUint16(data, offset);\\n  offset += 2;\\n  let endOffset = offset + length - 2;\\n\\n  const fileMarker = findNextFileMarker(data, endOffset, offset);\\n  if (fileMarker?.invalid) {\\n    warn(\\n      \\\"readDataBlock - incorrect length, current marker is: \\\" +\\n        fileMarker.invalid\\n    );\\n    endOffset = fileMarker.offset;\\n  }\\n\\n  const array = data.subarray(offset, endOffset);\\n  return {\\n    appData: array,\\n    oldOffset: offset,\\n    newOffset: offset + array.length,\\n  };\\n}\\n\\nfunction skipData(data, offset) {\\n  const length = readUint16(data, offset);\\n  offset += 2;\\n  const endOffset = offset + length - 2;\\n\\n  const fileMarker = findNextFileMarker(data, endOffset, offset);\\n  if (fileMarker?.invalid) {\\n    return fileMarker.offset;\\n  }\\n  return endOffset;\\n}\\n\\nclass JpegImage {\\n  constructor({ decodeTransform = null, colorTransform = -1 } = {}) {\\n    this._decodeTransform = decodeTransform;\\n    this._colorTransform = colorTransform;\\n  }\\n\\n  static canUseImageDecoder(data, colorTransform = -1) {\\n    let exifOffsets = null;\\n    let offset = 0;\\n    let numComponents = null;\\n    let fileMarker = readUint16(data, offset);\\n    offset += 2;\\n    if (fileMarker !== \u002F* SOI (Start of Image) = *\u002F 0xffd8) {\\n      throw new JpegError(\\\"SOI not found\\\");\\n    }\\n    fileMarker = readUint16(data, offset);\\n    offset += 2;\\n\\n    markerLoop: while (fileMarker !== \u002F* EOI (End of Image) = *\u002F 0xffd9) {\\n      switch (fileMarker) {\\n        case 0xffe1: \u002F\u002F APP1 - Exif\\n          \u002F\u002F TODO: Remove this once https:\u002F\u002Fgithub.com\u002Fw3c\u002Fwebcodecs\u002Fissues\u002F870\\n          \u002F\u002F       is fixed.\\n          const { appData, oldOffset, newOffset } = readDataBlock(data, offset);\\n          offset = newOffset;\\n\\n          \u002F\u002F 'Exif\\\\x00\\\\x00'\\n          if (\\n            appData[0] === 0x45 &&\\n            appData[1] === 0x78 &&\\n            appData[2] === 0x69 &&\\n            appData[3] === 0x66 &&\\n            appData[4] === 0 &&\\n            appData[5] === 0\\n          ) {\\n            if (exifOffsets) {\\n              throw new JpegError(\\\"Duplicate EXIF-blocks found.\\\");\\n            }\\n            \u002F\u002F Don't do the EXIF-block replacement here, see `JpegStream`,\\n            \u002F\u002F since that can modify the original PDF document.\\n            exifOffsets = { exifStart: oldOffset + 6, exifEnd: newOffset };\\n          }\\n          fileMarker = readUint16(data, offset);\\n          offset += 2;\\n          continue;\\n        case 0xffc0: \u002F\u002F SOF0 (Start of Frame, Baseline DCT)\\n        case 0xffc1: \u002F\u002F SOF1 (Start of Frame, Extended DCT)\\n        case 0xffc2: \u002F\u002F SOF2 (Start of Frame, Progressive DCT)\\n          \u002F\u002F Skip marker length.\\n          \u002F\u002F Skip precision.\\n          \u002F\u002F Skip scanLines.\\n          \u002F\u002F Skip samplesPerLine.\\n          numComponents = data[offset + (2 + 1 + 2 + 2)];\\n          break markerLoop;\\n        case 0xffff: \u002F\u002F Fill bytes\\n          if (data[offset] !== 0xff) {\\n            \u002F\u002F Avoid skipping a valid marker.\\n            offset--;\\n          }\\n          break;\\n      }\\n      offset = skipData(data, offset);\\n      fileMarker = readUint16(data, offset);\\n      offset += 2;\\n    }\\n    if (numComponents === 4) {\\n      return null;\\n    }\\n    if (numComponents === 3 && colorTransform === 0) {\\n      return null;\\n    }\\n    return exifOffsets || {};\\n  }\\n\\n  parse(data, { dnlScanLines = null } = {}) {\\n    let offset = 0;\\n    let jfif = null;\\n    let adobe = null;\\n    let frame, resetInterval;\\n    let numSOSMarkers = 0;\\n    const quantizationTables = [];\\n    const huffmanTablesAC = [],\\n      huffmanTablesDC = [];\\n\\n    let fileMarker = readUint16(data, offset);\\n    offset += 2;\\n    if (fileMarker !== \u002F* SOI (Start of Image) = *\u002F 0xffd8) {\\n      throw new JpegError(\\\"SOI not found\\\");\\n    }\\n    fileMarker = readUint16(data, offset);\\n    offset += 2;\\n\\n    markerLoop: while (fileMarker !== \u002F* EOI (End of Image) = *\u002F 0xffd9) {\\n      let i, j, l;\\n      switch (fileMarker) {\\n        case 0xffe0: \u002F\u002F APP0 (Application Specific)\\n        case 0xffe1: \u002F\u002F APP1\\n        case 0xffe2: \u002F\u002F APP2\\n        case 0xffe3: \u002F\u002F APP3\\n        case 0xffe4: \u002F\u002F APP4\\n        case 0xffe5: \u002F\u002F APP5\\n        case 0xffe6: \u002F\u002F APP6\\n        case 0xffe7: \u002F\u002F APP7\\n        case 0xffe8: \u002F\u002F APP8\\n        case 0xffe9: \u002F\u002F APP9\\n        case 0xffea: \u002F\u002F APP10\\n        case 0xffeb: \u002F\u002F APP11\\n        case 0xffec: \u002F\u002F APP12\\n        case 0xffed: \u002F\u002F APP13\\n        case 0xffee: \u002F\u002F APP14\\n        case 0xffef: \u002F\u002F APP15\\n        case 0xfffe: \u002F\u002F COM (Comment)\\n          const { appData, newOffset } = readDataBlock(data, offset);\\n          offset = newOffset;\\n\\n          if (fileMarker === 0xffe0) {\\n            \u002F\u002F 'JFIF\\\\x00'\\n            if (\\n              appData[0] === 0x4a &&\\n              appData[1] === 0x46 &&\\n              appData[2] === 0x49 &&\\n              appData[3] === 0x46 &&\\n              appData[4] === 0\\n            ) {\\n              jfif = {\\n                version: { major: appData[5], minor: appData[6] },\\n                densityUnits: appData[7],\\n                xDensity: (appData[8] \u003C\u003C 8) | appData[9],\\n                yDensity: (appData[10] \u003C\u003C 8) | appData[11],\\n                thumbWidth: appData[12],\\n                thumbHeight: appData[13],\\n                thumbData: appData.subarray(\\n                  14,\\n                  14 + 3 * appData[12] * appData[13]\\n                ),\\n              };\\n            }\\n          }\\n          \u002F\u002F TODO APP1 - Exif\\n          if (fileMarker === 0xffee) {\\n            \u002F\u002F 'Adobe'\\n            if (\\n              appData[0] === 0x41 &&\\n              appData[1] === 0x64 &&\\n              appData[2] === 0x6f &&\\n              appData[3] === 0x62 &&\\n              appData[4] === 0x65\\n            ) {\\n              adobe = {\\n                version: (appData[5] \u003C\u003C 8) | appData[6],\\n                flags0: (appData[7] \u003C\u003C 8) | appData[8],\\n                flags1: (appData[9] \u003C\u003C 8) | appData[10],\\n                transformCode: appData[11],\\n              };\\n            }\\n          }\\n          break;\\n\\n        case 0xffdb: \u002F\u002F DQT (Define Quantization Tables)\\n          const quantizationTablesLength = readUint16(data, offset);\\n          offset += 2;\\n          const quantizationTablesEnd = quantizationTablesLength + offset - 2;\\n          let z;\\n          while (offset \u003C quantizationTablesEnd) {\\n            const quantizationTableSpec = data[offset++];\\n            const tableData = new Uint16Array(64);\\n            if (quantizationTableSpec >> 4 === 0) {\\n              \u002F\u002F 8 bit values\\n              for (j = 0; j \u003C 64; j++) {\\n                z = dctZigZag[j];\\n                tableData[z] = data[offset++];\\n              }\\n            } else if (quantizationTableSpec >> 4 === 1) {\\n              \u002F\u002F 16 bit values\\n              for (j = 0; j \u003C 64; j++) {\\n                z = dctZigZag[j];\\n                tableData[z] = readUint16(data, offset);\\n                offset += 2;\\n              }\\n            } else {\\n              throw new JpegError(\\\"DQT - invalid table spec\\\");\\n            }\\n            quantizationTables[quantizationTableSpec & 15] = tableData;\\n          }\\n          break;\\n\\n        case 0xffc0: \u002F\u002F SOF0 (Start of Frame, Baseline DCT)\\n        case 0xffc1: \u002F\u002F SOF1 (Start of Frame, Extended DCT)\\n        case 0xffc2: \u002F\u002F SOF2 (Start of Frame, Progressive DCT)\\n          if (frame) {\\n            throw new JpegError(\\\"Only single frame JPEGs supported\\\");\\n          }\\n          offset += 2; \u002F\u002F Skip marker length.\\n\\n          frame = {};\\n          frame.extended = fileMarker === 0xffc1;\\n          frame.progressive = fileMarker === 0xffc2;\\n          frame.precision = data[offset++];\\n          const sofScanLines = readUint16(data, offset);\\n          offset += 2;\\n          frame.scanLines = dnlScanLines || sofScanLines;\\n          frame.samplesPerLine = readUint16(data, offset);\\n          offset += 2;\\n          frame.components = [];\\n          frame.componentIds = {};\\n          const componentsCount = data[offset++];\\n          let maxH = 0,\\n            maxV = 0;\\n          for (i = 0; i \u003C componentsCount; i++) {\\n            const componentId = data[offset];\\n            const h = data[offset + 1] >> 4;\\n            const v = data[offset + 1] & 15;\\n            if (maxH \u003C h) {\\n              maxH = h;\\n            }\\n            if (maxV \u003C v) {\\n              maxV = v;\\n            }\\n            const qId = data[offset + 2];\\n            l = frame.components.push({\\n              h,\\n              v,\\n              quantizationId: qId,\\n              quantizationTable: null, \u002F\u002F See comment below.\\n            });\\n            frame.componentIds[componentId] = l - 1;\\n            offset += 3;\\n          }\\n          frame.maxH = maxH;\\n          frame.maxV = maxV;\\n          prepareComponents(frame);\\n          break;\\n\\n        case 0xffc4: \u002F\u002F DHT (Define Huffman Tables)\\n          const huffmanLength = readUint16(data, offset);\\n          offset += 2;\\n          for (i = 2; i \u003C huffmanLength; ) {\\n            const huffmanTableSpec = data[offset++];\\n            const codeLengths = new Uint8Array(16);\\n            let codeLengthSum = 0;\\n            for (j = 0; j \u003C 16; j++, offset++) {\\n              codeLengthSum += codeLengths[j] = data[offset];\\n            }\\n            const huffmanValues = new Uint8Array(codeLengthSum);\\n            for (j = 0; j \u003C codeLengthSum; j++, offset++) {\\n              huffmanValues[j] = data[offset];\\n            }\\n            i += 17 + codeLengthSum;\\n\\n            (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[\\n              huffmanTableSpec & 15\\n            ] = buildHuffmanTable(codeLengths, huffmanValues);\\n          }\\n          break;\\n\\n        case 0xffdd: \u002F\u002F DRI (Define Restart Interval)\\n          offset += 2; \u002F\u002F Skip marker length.\\n\\n          resetInterval = readUint16(data, offset);\\n          offset += 2;\\n          break;\\n\\n        case 0xffda: \u002F\u002F SOS (Start of Scan)\\n          \u002F\u002F A DNL marker (0xFFDC), if it exists, is only allowed at the end\\n          \u002F\u002F of the first scan segment and may only occur once in an image.\\n          \u002F\u002F Furthermore, to prevent an infinite loop, do *not* attempt to\\n          \u002F\u002F parse DNL markers during re-parsing of the JPEG scan data.\\n          const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;\\n\\n          offset += 2; \u002F\u002F Skip marker length.\\n\\n          const selectorsCount = data[offset++],\\n            components = [];\\n          for (i = 0; i \u003C selectorsCount; i++) {\\n            const index = data[offset++];\\n            const componentIndex = frame.componentIds[index];\\n            const component = frame.components[componentIndex];\\n            component.index = index;\\n            const tableSpec = data[offset++];\\n            component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\\n            component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\\n            components.push(component);\\n          }\\n          const spectralStart = data[offset++],\\n            spectralEnd = data[offset++],\\n            successiveApproximation = data[offset++];\\n          try {\\n            const processed = decodeScan(\\n              data,\\n              offset,\\n              frame,\\n              components,\\n              resetInterval,\\n              spectralStart,\\n              spectralEnd,\\n              successiveApproximation >> 4,\\n              successiveApproximation & 15,\\n              parseDNLMarker\\n            );\\n            offset += processed;\\n          } catch (ex) {\\n            if (ex instanceof DNLMarkerError) {\\n              warn(`${ex.message} -- attempting to re-parse the JPEG image.`);\\n              return this.parse(data, { dnlScanLines: ex.scanLines });\\n            } else if (ex instanceof EOIMarkerError) {\\n              warn(`${ex.message} -- ignoring the rest of the image data.`);\\n              break markerLoop;\\n            }\\n            throw ex;\\n          }\\n          break;\\n\\n        case 0xffdc: \u002F\u002F DNL (Define Number of Lines)\\n          \u002F\u002F Ignore the marker, since it's being handled in `decodeScan`.\\n          offset += 4;\\n          break;\\n\\n        case 0xffff: \u002F\u002F Fill bytes\\n          if (data[offset] !== 0xff) {\\n            \u002F\u002F Avoid skipping a valid marker.\\n            offset--;\\n          }\\n          break;\\n\\n        default:\\n          \u002F\u002F Could be incorrect encoding -- the last 0xFF byte of the previous\\n          \u002F\u002F block could have been eaten by the encoder, hence we fallback to\\n          \u002F\u002F `startPos = offset - 3` when looking for the next valid marker.\\n          const nextFileMarker = findNextFileMarker(\\n            data,\\n            \u002F* currentPos = *\u002F offset - 2,\\n            \u002F* startPos = *\u002F offset - 3\\n          );\\n          if (nextFileMarker?.invalid) {\\n            warn(\\n              \\\"JpegImage.parse - unexpected data, current marker is: \\\" +\\n                nextFileMarker.invalid\\n            );\\n            offset = nextFileMarker.offset;\\n            break;\\n          }\\n          if (!nextFileMarker || offset >= data.length - 1) {\\n            warn(\\n              \\\"JpegImage.parse - reached the end of the image data \\\" +\\n                \\\"without finding an EOI marker (0xFFD9).\\\"\\n            );\\n            break markerLoop;\\n          }\\n          throw new JpegError(\\n            \\\"JpegImage.parse - unknown marker: \\\" + fileMarker.toString(16)\\n          );\\n      }\\n      fileMarker = readUint16(data, offset);\\n      offset += 2;\\n    }\\n\\n    if (!frame) {\\n      throw new JpegError(\\\"JpegImage.parse - no frame data found.\\\");\\n    }\\n    this.width = frame.samplesPerLine;\\n    this.height = frame.scanLines;\\n    this.jfif = jfif;\\n    this.adobe = adobe;\\n    this.components = [];\\n    for (const component of frame.components) {\\n      \u002F\u002F Prevent errors when DQT markers are placed after SOF{n} markers,\\n      \u002F\u002F by assigning the `quantizationTable` entry after the entire image\\n      \u002F\u002F has been parsed (fixes issue7406.pdf).\\n      const quantizationTable = quantizationTables[component.quantizationId];\\n      if (quantizationTable) {\\n        component.quantizationTable = quantizationTable;\\n      }\\n\\n      this.components.push({\\n        index: component.index,\\n        output: buildComponentData(frame, component),\\n        scaleX: component.h \u002F frame.maxH,\\n        scaleY: component.v \u002F frame.maxV,\\n        blocksPerLine: component.blocksPerLine,\\n        blocksPerColumn: component.blocksPerColumn,\\n      });\\n    }\\n    this.numComponents = this.components.length;\\n    return undefined;\\n  }\\n\\n  _getLinearizedBlockData(width, height, isSourcePDF = false) {\\n    const scaleX = this.width \u002F width,\\n      scaleY = this.height \u002F height;\\n\\n    let component, componentScaleX, componentScaleY, blocksPerScanline;\\n    let x, y, i, j, k;\\n    let index;\\n    let offset = 0;\\n    let output;\\n    const numComponents = this.components.length;\\n    const dataLength = width * height * numComponents;\\n    const data = new Uint8ClampedArray(dataLength);\\n    const xScaleBlockOffset = new Uint32Array(width);\\n    const mask3LSB = 0xfffffff8; \u002F\u002F used to clear the 3 LSBs\\n    let lastComponentScaleX;\\n\\n    for (i = 0; i \u003C numComponents; i++) {\\n      component = this.components[i];\\n      componentScaleX = component.scaleX * scaleX;\\n      componentScaleY = component.scaleY * scaleY;\\n      offset = i;\\n      output = component.output;\\n      blocksPerScanline = (component.blocksPerLine + 1) \u003C\u003C 3;\\n      \u002F\u002F Precalculate the `xScaleBlockOffset`. Since it doesn't depend on the\\n      \u002F\u002F component data, that's only necessary when `componentScaleX` changes.\\n      if (componentScaleX !== lastComponentScaleX) {\\n        for (x = 0; x \u003C width; x++) {\\n          j = 0 | (x * componentScaleX);\\n          xScaleBlockOffset[x] = ((j & mask3LSB) \u003C\u003C 3) | (j & 7);\\n        }\\n        lastComponentScaleX = componentScaleX;\\n      }\\n      \u002F\u002F linearize the blocks of the component\\n      for (y = 0; y \u003C height; y++) {\\n        j = 0 | (y * componentScaleY);\\n        index = (blocksPerScanline * (j & mask3LSB)) | ((j & 7) \u003C\u003C 3);\\n        for (x = 0; x \u003C width; x++) {\\n          data[offset] = output[index + xScaleBlockOffset[x]];\\n          offset += numComponents;\\n        }\\n      }\\n    }\\n\\n    \u002F\u002F decodeTransform contains pairs of multiplier (-256..256) and additive\\n    let transform = this._decodeTransform;\\n\\n    \u002F\u002F In PDF files, JPEG images with CMYK colour spaces are usually inverted\\n    \u002F\u002F (this can be observed by extracting the raw image data).\\n    \u002F\u002F Since the conversion algorithms (see below) were written primarily for\\n    \u002F\u002F the PDF use-cases, attempting to use `JpegImage` to parse standalone\\n    \u002F\u002F JPEG (CMYK) images may thus result in inverted images (see issue 9513).\\n    \u002F\u002F\\n    \u002F\u002F Unfortunately it's not (always) possible to tell, from the image data\\n    \u002F\u002F alone, if it needs to be inverted. Thus in an attempt to provide better\\n    \u002F\u002F out-of-box behaviour when `JpegImage` is used standalone, default to\\n    \u002F\u002F inverting JPEG (CMYK) images if and only if the image data does *not*\\n    \u002F\u002F come from a PDF file and no `decodeTransform` was passed by the user.\\n    if (!isSourcePDF && numComponents === 4 && !transform) {\\n      transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]);\\n    }\\n\\n    if (transform) {\\n      for (i = 0; i \u003C dataLength; ) {\\n        for (j = 0, k = 0; j \u003C numComponents; j++, i++, k += 2) {\\n          data[i] = ((data[i] * transform[k]) >> 8) + transform[k + 1];\\n        }\\n      }\\n    }\\n    return data;\\n  }\\n\\n  get _isColorConversionNeeded() {\\n    if (this.adobe) {\\n      \u002F\u002F The adobe transform marker overrides any previous setting.\\n      return !!this.adobe.transformCode;\\n    }\\n    if (this.numComponents === 3) {\\n      if (this._colorTransform === 0) {\\n        \u002F\u002F If the Adobe transform marker is not present and the image\\n        \u002F\u002F dictionary has a 'ColorTransform' entry, explicitly set to `0`,\\n        \u002F\u002F then the colours should *not* be transformed.\\n        return false;\\n      } else if (\\n        this.components[0].index === \u002F* \\\"R\\\" = *\u002F 0x52 &&\\n        this.components[1].index === \u002F* \\\"G\\\" = *\u002F 0x47 &&\\n        this.components[2].index === \u002F* \\\"B\\\" = *\u002F 0x42\\n      ) {\\n        \u002F\u002F If the three components are indexed as RGB in ASCII\\n        \u002F\u002F then the colours should *not* be transformed.\\n        return false;\\n      }\\n      return true;\\n    }\\n    \u002F\u002F `this.numComponents !== 3`\\n    if (this._colorTransform === 1) {\\n      \u002F\u002F If the Adobe transform marker is not present and the image\\n      \u002F\u002F dictionary has a 'ColorTransform' entry, explicitly set to `1`,\\n      \u002F\u002F then the colours should be transformed.\\n      return true;\\n    }\\n    return false;\\n  }\\n\\n  _convertYccToRgb(data) {\\n    let Y, Cb, Cr;\\n    for (let i = 0, length = data.length; i \u003C length; i += 3) {\\n      Y = data[i];\\n      Cb = data[i + 1];\\n      Cr = data[i + 2];\\n      data[i] = Y - 179.456 + 1.402 * Cr;\\n      data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\\n      data[i + 2] = Y - 226.816 + 1.772 * Cb;\\n    }\\n    return data;\\n  }\\n\\n  _convertYccToRgba(data, out) {\\n    for (let i = 0, j = 0, length = data.length; i \u003C length; i += 3, j += 4) {\\n      const Y = data[i];\\n      const Cb = data[i + 1];\\n      const Cr = data[i + 2];\\n      out[j] = Y - 179.456 + 1.402 * Cr;\\n      out[j + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\\n      out[j + 2] = Y - 226.816 + 1.772 * Cb;\\n      out[j + 3] = 255;\\n    }\\n    return out;\\n  }\\n\\n  _convertYcckToRgb(data) {\\n    this._convertYcckToCmyk(data);\\n    return this._convertCmykToRgb(data);\\n  }\\n\\n  _convertYcckToRgba(data) {\\n    this._convertYcckToCmyk(data);\\n    return this._convertCmykToRgba(data);\\n  }\\n\\n  _convertYcckToCmyk(data) {\\n    let Y, Cb, Cr;\\n    for (let i = 0, length = data.length; i \u003C length; i += 4) {\\n      Y = data[i];\\n      Cb = data[i + 1];\\n      Cr = data[i + 2];\\n      data[i] = 434.456 - Y - 1.402 * Cr;\\n      data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;\\n      data[i + 2] = 481.816 - Y - 1.772 * Cb;\\n      \u002F\u002F K in data[i + 3] is unchanged\\n    }\\n    return data;\\n  }\\n\\n  _convertCmykToRgb(data) {\\n    const count = data.length \u002F 4;\\n    ColorSpaceUtils.cmyk.getRgbBuffer(data, 0, count, data, 0, 8, 0);\\n    return data.subarray(0, count * 3);\\n  }\\n\\n  _convertCmykToRgba(data) {\\n    ColorSpaceUtils.cmyk.getRgbBuffer(data, 0, data.length \u002F 4, data, 0, 8, 1);\\n\\n    if (ColorSpaceUtils.cmyk instanceof DeviceCmykCS) {\\n      \u002F\u002F The alpha-component isn't updated by `DeviceCmykCS`, doing it manually.\\n      for (let i = 3, ii = data.length; i \u003C ii; i += 4) {\\n        data[i] = 255;\\n      }\\n    }\\n    return data;\\n  }\\n\\n  getData({\\n    width,\\n    height,\\n    forceRGBA = false,\\n    forceRGB = false,\\n    isSourcePDF = false,\\n  }) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        isSourcePDF === true,\\n        'JpegImage.getData: Unexpected \\\"isSourcePDF\\\" value for PDF files.'\\n      );\\n    }\\n    if (this.numComponents > 4) {\\n      throw new JpegError(\\\"Unsupported color mode\\\");\\n    }\\n    \u002F\u002F Type of data: Uint8ClampedArray(width * height * numComponents)\\n    const data = this._getLinearizedBlockData(width, height, isSourcePDF);\\n\\n    if (this.numComponents === 1 && (forceRGBA || forceRGB)) {\\n      const len = data.length * (forceRGBA ? 4 : 3);\\n      const rgbaData = new Uint8ClampedArray(len);\\n      let offset = 0;\\n      if (forceRGBA) {\\n        grayToRGBA(data, new Uint32Array(rgbaData.buffer));\\n      } else {\\n        for (const grayColor of data) {\\n          rgbaData[offset++] = grayColor;\\n          rgbaData[offset++] = grayColor;\\n          rgbaData[offset++] = grayColor;\\n        }\\n      }\\n      return rgbaData;\\n    } else if (this.numComponents === 3 && this._isColorConversionNeeded) {\\n      if (forceRGBA) {\\n        const rgbaData = new Uint8ClampedArray((data.length \u002F 3) * 4);\\n        return this._convertYccToRgba(data, rgbaData);\\n      }\\n      return this._convertYccToRgb(data);\\n    } else if (this.numComponents === 4) {\\n      if (this._isColorConversionNeeded) {\\n        if (forceRGBA) {\\n          return this._convertYcckToRgba(data);\\n        }\\n        if (forceRGB) {\\n          return this._convertYcckToRgb(data);\\n        }\\n        return this._convertYcckToCmyk(data);\\n      } else if (forceRGBA) {\\n        return this._convertCmykToRgba(data);\\n      } else if (forceRGB) {\\n        return this._convertCmykToRgb(data);\\n      }\\n    }\\n    return data;\\n  }\\n}\\n\\nexport { JpegError, JpegImage };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { FeatureTest, shadow, warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { DecodeStream } from \\\".\u002Fdecode_stream.js\\\";\\nimport { Dict } from \\\".\u002Fprimitives.js\\\";\\nimport { JpegImage } from \\\".\u002Fjpg.js\\\";\\n\\n\u002F**\\n * For JPEG's we use a library to decode these images and the stream behaves\\n * like all the other DecodeStreams.\\n *\u002F\\nclass JpegStream extends DecodeStream {\\n  static #isImageDecoderSupported = FeatureTest.isImageDecoderSupported;\\n\\n  constructor(stream, maybeLength, params) {\\n    super(maybeLength);\\n\\n    this.stream = stream;\\n    this.dict = stream.dict;\\n    this.maybeLength = maybeLength;\\n    this.params = params;\\n  }\\n\\n  static get canUseImageDecoder() {\\n    return shadow(\\n      this,\\n      \\\"canUseImageDecoder\\\",\\n      this.#isImageDecoderSupported\\n        ? ImageDecoder.isTypeSupported(\\\"image\u002Fjpeg\\\")\\n        : Promise.resolve(false)\\n    );\\n  }\\n\\n  static setOptions({ isImageDecoderSupported = false }) {\\n    this.#isImageDecoderSupported = isImageDecoderSupported;\\n  }\\n\\n  get bytes() {\\n    \u002F\u002F If `this.maybeLength` is null, we'll get the entire stream.\\n    return shadow(this, \\\"bytes\\\", this.stream.getBytes(this.maybeLength));\\n  }\\n\\n  ensureBuffer(requested) {\\n    \u002F\u002F No-op, since `this.readBlock` will always parse the entire image and\\n    \u002F\u002F directly insert all of its data into `this.buffer`.\\n  }\\n\\n  readBlock() {\\n    this.decodeImage();\\n  }\\n\\n  get jpegOptions() {\\n    const jpegOptions = {\\n      decodeTransform: undefined,\\n      colorTransform: undefined,\\n    };\\n\\n    \u002F\u002F Checking if values need to be transformed before conversion.\\n    const decodeArr = this.dict.getArray(\\\"D\\\", \\\"Decode\\\");\\n    if ((this.forceRGBA || this.forceRGB) && Array.isArray(decodeArr)) {\\n      const bitsPerComponent = this.dict.get(\\\"BPC\\\", \\\"BitsPerComponent\\\") || 8;\\n      const decodeArrLength = decodeArr.length;\\n      const transform = new Int32Array(decodeArrLength);\\n      let transformNeeded = false;\\n      const maxValue = (1 \u003C\u003C bitsPerComponent) - 1;\\n      for (let i = 0; i \u003C decodeArrLength; i += 2) {\\n        transform[i] = ((decodeArr[i + 1] - decodeArr[i]) * 256) | 0;\\n        transform[i + 1] = (decodeArr[i] * maxValue) | 0;\\n        if (transform[i] !== 256 || transform[i + 1] !== 0) {\\n          transformNeeded = true;\\n        }\\n      }\\n      if (transformNeeded) {\\n        jpegOptions.decodeTransform = transform;\\n      }\\n    }\\n    \u002F\u002F Fetching the 'ColorTransform' entry, if it exists.\\n    if (this.params instanceof Dict) {\\n      const colorTransform = this.params.get(\\\"ColorTransform\\\");\\n      if (Number.isInteger(colorTransform)) {\\n        jpegOptions.colorTransform = colorTransform;\\n      }\\n    }\\n    return shadow(this, \\\"jpegOptions\\\", jpegOptions);\\n  }\\n\\n  #skipUselessBytes(data) {\\n    \u002F\u002F Some images may contain 'junk' before the SOI (start-of-image) marker.\\n    \u002F\u002F Note: this seems to mainly affect inline images.\\n    for (let i = 0, ii = data.length - 1; i \u003C ii; i++) {\\n      if (data[i] === 0xff && data[i + 1] === 0xd8) {\\n        if (i > 0) {\\n          data = data.subarray(i);\\n        }\\n        break;\\n      }\\n    }\\n    return data;\\n  }\\n\\n  decodeImage(bytes) {\\n    if (this.eof) {\\n      return this.buffer;\\n    }\\n    bytes = this.#skipUselessBytes(bytes || this.bytes);\\n\\n    \u002F\u002F TODO: if an image has a mask we need to combine the data.\\n    \u002F\u002F So ideally get a VideoFrame from getTransferableImage and then use\\n    \u002F\u002F copyTo.\\n\\n    const jpegImage = new JpegImage(this.jpegOptions);\\n    jpegImage.parse(bytes);\\n    const data = jpegImage.getData({\\n      width: this.drawWidth,\\n      height: this.drawHeight,\\n      forceRGBA: this.forceRGBA,\\n      forceRGB: this.forceRGB,\\n      isSourcePDF: true,\\n    });\\n    this.buffer = data;\\n    this.bufferLength = data.length;\\n    this.eof = true;\\n\\n    return this.buffer;\\n  }\\n\\n  get canAsyncDecodeImageFromBuffer() {\\n    return this.stream.isAsync;\\n  }\\n\\n  async getTransferableImage() {\\n    if (!(await JpegStream.canUseImageDecoder)) {\\n      return null;\\n    }\\n    const jpegOptions = this.jpegOptions;\\n    if (jpegOptions.decodeTransform) {\\n      \u002F\u002F TODO: We could decode the image thanks to ImageDecoder and then\\n      \u002F\u002F get the pixels with copyTo and apply the decodeTransform.\\n      return null;\\n    }\\n    let decoder;\\n    try {\\n      \u002F\u002F TODO: If the stream is Flate & DCT we could try to just pipe the\\n      \u002F\u002F the DecompressionStream into the ImageDecoder: it'll avoid the\\n      \u002F\u002F intermediate ArrayBuffer.\\n      const bytes =\\n        (this.canAsyncDecodeImageFromBuffer &&\\n          (await this.stream.asyncGetBytes())) ||\\n        this.bytes;\\n      if (!bytes) {\\n        return null;\\n      }\\n      let data = this.#skipUselessBytes(bytes);\\n      const useImageDecoder = JpegImage.canUseImageDecoder(\\n        data,\\n        jpegOptions.colorTransform\\n      );\\n      if (!useImageDecoder) {\\n        return null;\\n      }\\n      if (useImageDecoder.exifStart) {\\n        \u002F\u002F Replace the entire EXIF-block with dummy data, to ensure that a\\n        \u002F\u002F non-default EXIF orientation won't cause the image to be rotated\\n        \u002F\u002F when using `ImageDecoder` (fixes bug1942064.pdf).\\n        \u002F\u002F\\n        \u002F\u002F Copy the data first, to avoid modifying the original PDF document.\\n        data = data.slice();\\n        data.fill(0x00, useImageDecoder.exifStart, useImageDecoder.exifEnd);\\n      }\\n      decoder = new ImageDecoder({\\n        data,\\n        type: \\\"image\u002Fjpeg\\\",\\n        preferAnimation: false,\\n      });\\n\\n      return (await decoder.decode()).image;\\n    } catch (reason) {\\n      warn(`getTransferableImage - failed: \\\"${reason}\\\".`);\\n      return null;\\n    } finally {\\n      decoder?.close();\\n    }\\n  }\\n}\\n\\nexport { JpegStream };\\n\",\"\u002F* THIS FILE IS GENERATED - DO NOT EDIT *\u002F\\nvar OpenJPEG = (() => {\\n  \\n  return (\\nasync function(moduleArg = {}) {\\n  var moduleRtn;\\n\\nvar Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=true;var ENVIRONMENT_IS_WORKER=false;var arguments_=[];var thisProgram=\\\".\u002Fthis.program\\\";var quit_=(status,toThrow)=>{throw toThrow};var _scriptName=import.meta.url;var scriptDirectory=\\\"\\\";function locateFile(path){if(Module[\\\"locateFile\\\"]){return Module[\\\"locateFile\\\"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(\\\".\\\",_scriptName).href}catch{}{readAsync=async url=>{var response=await fetch(url,{credentials:\\\"same-origin\\\"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+\\\" : \\\"+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);var wasmBinary;var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAP64,HEAPU64,HEAPF64;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);HEAP32=new Int32Array(b);HEAPU32=new Uint32Array(b);HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(b);HEAP64=new BigInt64Array(b);HEAPU64=new BigUint64Array(b)}function preRun(){if(Module[\\\"preRun\\\"]){if(typeof Module[\\\"preRun\\\"]==\\\"function\\\")Module[\\\"preRun\\\"]=[Module[\\\"preRun\\\"]];while(Module[\\\"preRun\\\"].length){addOnPreRun(Module[\\\"preRun\\\"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;wasmExports[\\\"t\\\"]()}function postRun(){if(Module[\\\"postRun\\\"]){if(typeof Module[\\\"postRun\\\"]==\\\"function\\\")Module[\\\"postRun\\\"]=[Module[\\\"postRun\\\"]];while(Module[\\\"postRun\\\"].length){addOnPostRun(Module[\\\"postRun\\\"].shift())}}callRuntimeCallbacks(onPostRuns)}var runDependencies=0;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;Module[\\\"monitorRunDependencies\\\"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module[\\\"monitorRunDependencies\\\"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module[\\\"onAbort\\\"]?.(what);what=\\\"Aborted(\\\"+what+\\\")\\\";err(what);ABORT=true;what+=\\\". Build with -sASSERTIONS for more info.\\\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var wasmBinaryFile;function findWasmBinary(){if(Module[\\\"locateFile\\\"]){return locateFile(\\\"openjpeg.wasm\\\")}return new URL(\\\"openjpeg.wasm\\\",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw\\\"both async and sync fetching of the wasm failed\\\"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&typeof WebAssembly.instantiateStreaming==\\\"function\\\"){try{var response=fetch(binaryFile,{credentials:\\\"same-origin\\\"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err(\\\"falling back to ArrayBuffer instantiation\\\")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){return{a:wasmImports}}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports[\\\"s\\\"];updateMemoryViews();removeRunDependency(\\\"wasm-instantiate\\\");return wasmExports}addRunDependency(\\\"wasm-instantiate\\\");function receiveInstantiationResult(result){return receiveInstance(result[\\\"instance\\\"])}var info=getWasmImports();if(Module[\\\"instantiateWasm\\\"]){return new Promise((resolve,reject)=>{Module[\\\"instantiateWasm\\\"](info,(mod,inst)=>{resolve(receiveInstance(mod,inst))})})}wasmBinaryFile??=findWasmBinary();try{var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}catch(e){readyPromiseReject(e);return Promise.reject(e)}}class ExitStatus{name=\\\"ExitStatus\\\";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var noExitRuntime=true;var __abort_js=()=>abort(\\\"\\\");var runtimeKeepaliveCounter=0;var __emscripten_runtime_keepalive_clear=()=>{noExitRuntime=false;runtimeKeepaliveCounter=0};var timers={};var handleException=e=>{if(e instanceof ExitStatus||e==\\\"unwind\\\"){return EXITSTATUS}quit_(1,e)};var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module[\\\"onExit\\\"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var _emscripten_get_now=()=>performance.now();var __setitimer_js=(which,timeout_ms)=>{if(timers[which]){clearTimeout(timers[which].id);delete timers[which]}if(!timeout_ms)return 0;var id=setTimeout(()=>{delete timers[which];callUserCallback(()=>__emscripten_timeout(which,_emscripten_get_now()))},timeout_ms);timers[which]={id,timeout_ms};return 0};function _copy_pixels_1(compG_ptr,nb_pixels){compG_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels);const compG=HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);imageData.set(compG)}function _copy_pixels_3(compR_ptr,compG_ptr,compB_ptr,nb_pixels){compR_ptr>>=2;compG_ptr>>=2;compB_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*3);const compR=HEAP32.subarray(compR_ptr,compR_ptr+nb_pixels);const compG=HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compB=HEAP32.subarray(compB_ptr,compB_ptr+nb_pixels);for(let i=0;i\u003Cnb_pixels;i++){imageData[3*i]=compR[i];imageData[3*i+1]=compG[i];imageData[3*i+2]=compB[i]}}function _copy_pixels_4(compR_ptr,compG_ptr,compB_ptr,compA_ptr,nb_pixels){compR_ptr>>=2;compG_ptr>>=2;compB_ptr>>=2;compA_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compR=HEAP32.subarray(compR_ptr,compR_ptr+nb_pixels);const compG=HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compB=HEAP32.subarray(compB_ptr,compB_ptr+nb_pixels);const compA=HEAP32.subarray(compA_ptr,compA_ptr+nb_pixels);for(let i=0;i\u003Cnb_pixels;i++){imageData[4*i]=compR[i];imageData[4*i+1]=compG[i];imageData[4*i+2]=compB[i];imageData[4*i+3]=compA[i]}}var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size\u002Falignment)*alignment;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)\u002F65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown\u003C=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2\u002FcutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||\\\".\u002Fthis.program\\\";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator==\\\"object\\\"&&navigator.languages&&navigator.languages[0]||\\\"C\\\").replace(\\\"-\\\",\\\"_\\\")+\\\".UTF-8\\\";var env={USER:\\\"web_user\\\",LOGNAME:\\\"web_user\\\",PATH:\\\"\u002F\\\",PWD:\\\"\u002F\\\",HOME:\\\"\u002Fhome\u002Fweb_user\\\",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i\u003Cstr.length;++i){var u=str.charCodeAt(i);if(u>=55296&&u\u003C=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)\u003C\u003C10)|u1&1023}if(u\u003C=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u\u003C=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u\u003C=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var _environ_get=(__environ,environ_buf)=>{var bufSize=0;var envp=0;for(var string of getEnvStrings()){var ptr=environ_buf+bufSize;HEAPU32[__environ+envp>>2]=ptr;bufSize+=stringToUTF8(string,ptr,Infinity)+1;envp+=4}return 0};var lengthBytesUTF8=str=>{var len=0;for(var i=0;i\u003Cstr.length;++i){var c=str.charCodeAt(i);if(c\u003C=127){len++}else if(c\u003C=2047){len+=2}else if(c>=55296&&c\u003C=57343){len+=4;++i}else{len+=3}}return len};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;for(var string of strings){bufSize+=lengthBytesUTF8(string)+1}HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var _fd_close=fd=>52;var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>num\u003CINT53_MIN||num>INT53_MAX?NaN:Number(num);function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);return 70}var printCharBuffers=[null,[],[]];var UTF8Decoder=typeof TextDecoder!=\\\"undefined\\\"?new TextDecoder:undefined;var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead=NaN)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str=\\\"\\\";while(idx\u003CendPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)\u003C\u003C6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224){u0=(u0&15)\u003C\u003C12|u1\u003C\u003C6|u2}else{u0=(u0&7)\u003C\u003C18|u1\u003C\u003C12|u2\u003C\u003C6|heapOrArray[idx++]&63}if(u0\u003C65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str};var printChar=(stream,curr)=>{var buffer=printCharBuffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer));buffer.length=0}else{buffer.push(curr)}};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\\\"\\\";var _fd_write=(fd,iov,iovcnt,pnum)=>{var num=0;for(var i=0;i\u003Ciovcnt;i++){var ptr=HEAPU32[iov>>2];var len=HEAPU32[iov+4>>2];iov+=8;for(var j=0;j\u003Clen;j++){printChar(fd,HEAPU8[ptr+j])}num+=len}HEAPU32[pnum>>2]=num;return 0};function _gray_to_rgba(compG_ptr,nb_pixels){compG_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compG=HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);for(let i=0;i\u003Cnb_pixels;i++){imageData[4*i]=imageData[4*i+1]=imageData[4*i+2]=compG[i];imageData[4*i+3]=255}}function _graya_to_rgba(compG_ptr,compA_ptr,nb_pixels){compG_ptr>>=2;compA_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compG=HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compA=HEAP32.subarray(compA_ptr,compA_ptr+nb_pixels);for(let i=0;i\u003Cnb_pixels;i++){imageData[4*i]=imageData[4*i+1]=imageData[4*i+2]=compG[i];imageData[4*i+3]=compA[i]}}function _jsPrintWarning(message_ptr){const message=UTF8ToString(message_ptr);(Module.warn||console.warn)(`OpenJPEG: ${message}`)}function _rgb_to_rgba(compR_ptr,compG_ptr,compB_ptr,nb_pixels){compR_ptr>>=2;compG_ptr>>=2;compB_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compR=HEAP32.subarray(compR_ptr,compR_ptr+nb_pixels);const compG=HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compB=HEAP32.subarray(compB_ptr,compB_ptr+nb_pixels);for(let i=0;i\u003Cnb_pixels;i++){imageData[4*i]=compR[i];imageData[4*i+1]=compG[i];imageData[4*i+2]=compB[i];imageData[4*i+3]=255}}function _storeErrorMessage(message_ptr){const message=UTF8ToString(message_ptr);if(!Module.errorMessages){Module.errorMessages=message}else{Module.errorMessages+=\\\"\\\\n\\\"+message}}var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};{if(Module[\\\"noExitRuntime\\\"])noExitRuntime=Module[\\\"noExitRuntime\\\"];if(Module[\\\"print\\\"])out=Module[\\\"print\\\"];if(Module[\\\"printErr\\\"])err=Module[\\\"printErr\\\"];if(Module[\\\"wasmBinary\\\"])wasmBinary=Module[\\\"wasmBinary\\\"];if(Module[\\\"arguments\\\"])arguments_=Module[\\\"arguments\\\"];if(Module[\\\"thisProgram\\\"])thisProgram=Module[\\\"thisProgram\\\"]}Module[\\\"writeArrayToMemory\\\"]=writeArrayToMemory;var wasmImports={l:__abort_js,k:__emscripten_runtime_keepalive_clear,m:__setitimer_js,g:_copy_pixels_1,f:_copy_pixels_3,e:_copy_pixels_4,n:_emscripten_resize_heap,p:_environ_get,q:_environ_sizes_get,b:_fd_close,o:_fd_seek,c:_fd_write,r:_gray_to_rgba,i:_graya_to_rgba,d:_jsPrintWarning,j:_proc_exit,h:_rgb_to_rgba,a:_storeErrorMessage};var wasmExports=await createWasm();var ___wasm_call_ctors=wasmExports[\\\"t\\\"];var _malloc=Module[\\\"_malloc\\\"]=wasmExports[\\\"u\\\"];var _free=Module[\\\"_free\\\"]=wasmExports[\\\"v\\\"];var _jp2_decode=Module[\\\"_jp2_decode\\\"]=wasmExports[\\\"w\\\"];var __emscripten_timeout=wasmExports[\\\"x\\\"];function run(){if(runDependencies>0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module[\\\"calledRun\\\"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);Module[\\\"onRuntimeInitialized\\\"]?.();postRun()}if(Module[\\\"setStatus\\\"]){Module[\\\"setStatus\\\"](\\\"Running...\\\");setTimeout(()=>{setTimeout(()=>Module[\\\"setStatus\\\"](\\\"\\\"),1);doRun()},1)}else{doRun()}}function preInit(){if(Module[\\\"preInit\\\"]){if(typeof Module[\\\"preInit\\\"]==\\\"function\\\")Module[\\\"preInit\\\"]=[Module[\\\"preInit\\\"]];while(Module[\\\"preInit\\\"].length>0){Module[\\\"preInit\\\"].shift()()}}}preInit();run();moduleRtn=readyPromise;\\n\\n\\n  return moduleRtn;\\n}\\n);\\n})();\\nexport default OpenJPEG;\\n\",\"\u002F* Copyright 2024 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { BaseException, warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { fetchBinaryData } from \\\".\u002Fcore_utils.js\\\";\\nimport OpenJPEG from \\\"..\u002F..\u002Fexternal\u002Fopenjpeg\u002Fopenjpeg.js\\\";\\nimport { Stream } from \\\".\u002Fstream.js\\\";\\n\\nclass JpxError extends BaseException {\\n  constructor(msg) {\\n    super(msg, \\\"JpxError\\\");\\n  }\\n}\\n\\nclass JpxImage {\\n  static #buffer = null;\\n\\n  static #handler = null;\\n\\n  static #modulePromise = null;\\n\\n  static #useWasm = true;\\n\\n  static #useWorkerFetch = true;\\n\\n  static #wasmUrl = null;\\n\\n  static setOptions({ handler, useWasm, useWorkerFetch, wasmUrl }) {\\n    this.#useWasm = useWasm;\\n    this.#useWorkerFetch = useWorkerFetch;\\n    this.#wasmUrl = wasmUrl;\\n\\n    if (!useWorkerFetch) {\\n      this.#handler = handler;\\n    }\\n  }\\n\\n  static async #getJsModule(fallbackCallback) {\\n    const path =\\n      typeof PDFJSDev === \\\"undefined\\\"\\n        ? `..\u002F${this.#wasmUrl}openjpeg_nowasm_fallback.js`\\n        : `${this.#wasmUrl}openjpeg_nowasm_fallback.js`;\\n\\n    let instance = null;\\n    try {\\n      const mod = await (typeof PDFJSDev === \\\"undefined\\\"\\n        ? import(path) \u002F\u002F eslint-disable-line no-unsanitized\u002Fmethod\\n        : __raw_import__(path));\\n      instance = mod.default();\\n    } catch (e) {\\n      warn(`JpxImage#getJsModule: ${e}`);\\n    }\\n    fallbackCallback(instance);\\n  }\\n\\n  static async #instantiateWasm(fallbackCallback, imports, successCallback) {\\n    const filename = \\\"openjpeg.wasm\\\";\\n    try {\\n      if (!this.#buffer) {\\n        if (this.#useWorkerFetch) {\\n          this.#buffer = await fetchBinaryData(`${this.#wasmUrl}${filename}`);\\n        } else {\\n          this.#buffer = await this.#handler.sendWithPromise(\\n            \\\"FetchBinaryData\\\",\\n            { type: \\\"wasmFactory\\\", filename }\\n          );\\n        }\\n      }\\n      const results = await WebAssembly.instantiate(this.#buffer, imports);\\n      return successCallback(results.instance);\\n    } catch (reason) {\\n      warn(`JpxImage#instantiateWasm: ${reason}`);\\n\\n      this.#getJsModule(fallbackCallback);\\n      return null;\\n    } finally {\\n      this.#handler = null;\\n    }\\n  }\\n\\n  static async decode(\\n    bytes,\\n    {\\n      numComponents = 4,\\n      isIndexedColormap = false,\\n      smaskInData = false,\\n      reducePower = 0,\\n    } = {}\\n  ) {\\n    if (!this.#modulePromise) {\\n      const { promise, resolve } = Promise.withResolvers();\\n      const promises = [promise];\\n      if (!this.#useWasm) {\\n        this.#getJsModule(resolve);\\n      } else {\\n        promises.push(\\n          OpenJPEG({\\n            warn,\\n            instantiateWasm: this.#instantiateWasm.bind(this, resolve),\\n          })\\n        );\\n      }\\n      this.#modulePromise = Promise.race(promises);\\n    }\\n    const module = await this.#modulePromise;\\n\\n    if (!module) {\\n      throw new JpxError(\\\"OpenJPEG failed to initialize\\\");\\n    }\\n    let ptr;\\n\\n    try {\\n      const size = bytes.length;\\n      ptr = module._malloc(size);\\n      module.writeArrayToMemory(bytes, ptr);\\n      const ret = module._jp2_decode(\\n        ptr,\\n        size,\\n        numComponents > 0 ? numComponents : 0,\\n        !!isIndexedColormap,\\n        !!smaskInData,\\n        reducePower\\n      );\\n      if (ret) {\\n        const { errorMessages } = module;\\n        if (errorMessages) {\\n          delete module.errorMessages;\\n          throw new JpxError(errorMessages);\\n        }\\n        throw new JpxError(\\\"Unknown error\\\");\\n      }\\n      const { imageData } = module;\\n      module.imageData = null;\\n\\n      return imageData;\\n    } finally {\\n      if (ptr) {\\n        module._free(ptr);\\n      }\\n    }\\n  }\\n\\n  static cleanup() {\\n    this.#modulePromise = null;\\n  }\\n\\n  static parseImageProperties(stream) {\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"IMAGE_DECODERS\\\")) {\\n      if (stream instanceof ArrayBuffer || ArrayBuffer.isView(stream)) {\\n        stream = new Stream(stream);\\n      } else {\\n        throw new JpxError(\\\"Invalid data format, must be a TypedArray.\\\");\\n      }\\n    }\\n    \u002F\u002F No need to use OpenJPEG here since we're only getting very basic\\n    \u002F\u002F information which are located in the first bytes of the file.\\n    let newByte = stream.getByte();\\n    while (newByte >= 0) {\\n      const oldByte = newByte;\\n      newByte = stream.getByte();\\n      const code = (oldByte \u003C\u003C 8) | newByte;\\n      \u002F\u002F Image and tile size (SIZ)\\n      if (code === 0xff51) {\\n        stream.skip(4);\\n        const Xsiz = stream.getInt32() >>> 0; \u002F\u002F Byte 4\\n        const Ysiz = stream.getInt32() >>> 0; \u002F\u002F Byte 8\\n        const XOsiz = stream.getInt32() >>> 0; \u002F\u002F Byte 12\\n        const YOsiz = stream.getInt32() >>> 0; \u002F\u002F Byte 16\\n        stream.skip(16);\\n        const Csiz = stream.getUint16(); \u002F\u002F Byte 36\\n        return {\\n          width: Xsiz - XOsiz,\\n          height: Ysiz - YOsiz,\\n          \u002F\u002F Results are always returned as `Uint8ClampedArray`s.\\n          bitsPerComponent: 8,\\n          componentsCount: Csiz,\\n        };\\n      }\\n    }\\n    throw new JpxError(\\\"No size marker found in JPX stream\\\");\\n  }\\n}\\n\\nexport { JpxError, JpxImage };\\n\",\"\u002F* Copyright 2017 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  DrawOPS,\\n  ImageKind,\\n  OPS,\\n  RenderingIntentFlag,\\n  Util,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nfunction addState(parentState, pattern, checkFn, iterateFn, processFn) {\\n  let state = parentState;\\n  for (let i = 0, ii = pattern.length - 1; i \u003C ii; i++) {\\n    const item = pattern[i];\\n    state = state[item] ||= [];\\n  }\\n  state[pattern.at(-1)] = {\\n    checkFn,\\n    iterateFn,\\n    processFn,\\n  };\\n}\\n\\nconst InitialState = [];\\n\\n\u002F\u002F This replaces (save, transform, paintInlineImageXObject, restore)+\\n\u002F\u002F sequences with one |paintInlineImageXObjectGroup| operation.\\naddState(\\n  InitialState,\\n  [OPS.save, OPS.transform, OPS.paintInlineImageXObject, OPS.restore],\\n  null,\\n  function iterateInlineImageGroup(context, i) {\\n    const fnArray = context.fnArray;\\n    const iFirstSave = context.iCurr - 3;\\n    const pos = (i - iFirstSave) % 4;\\n    switch (pos) {\\n      case 0:\\n        return fnArray[i] === OPS.save;\\n      case 1:\\n        return fnArray[i] === OPS.transform;\\n      case 2:\\n        return fnArray[i] === OPS.paintInlineImageXObject;\\n      case 3:\\n        return fnArray[i] === OPS.restore;\\n    }\\n    throw new Error(`iterateInlineImageGroup - invalid pos: ${pos}`);\\n  },\\n  function foundInlineImageGroup(context, i) {\\n    const MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;\\n    const MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;\\n    const MAX_WIDTH = 1000;\\n    const IMAGE_PADDING = 1;\\n\\n    const fnArray = context.fnArray,\\n      argsArray = context.argsArray;\\n    const curr = context.iCurr;\\n    const iFirstSave = curr - 3;\\n    const iFirstTransform = curr - 2;\\n    const iFirstPIIXO = curr - 1;\\n\\n    const count = Math.min(\\n      Math.floor((i - iFirstSave) \u002F 4),\\n      MAX_IMAGES_IN_INLINE_IMAGES_BLOCK\\n    );\\n    if (count \u003C MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {\\n      return i - ((i - iFirstSave) % 4);\\n    }\\n\\n    \u002F\u002F assuming that heights of those image is too small (~1 pixel)\\n    \u002F\u002F packing as much as possible by lines\\n    let maxX = 0;\\n    const map = [];\\n    let maxLineHeight = 0;\\n    let currentX = IMAGE_PADDING,\\n      currentY = IMAGE_PADDING;\\n    for (let q = 0; q \u003C count; q++) {\\n      const transform = argsArray[iFirstTransform + (q \u003C\u003C 2)];\\n      const img = argsArray[iFirstPIIXO + (q \u003C\u003C 2)][0];\\n      if (currentX + img.width > MAX_WIDTH) {\\n        \u002F\u002F starting new line\\n        maxX = Math.max(maxX, currentX);\\n        currentY += maxLineHeight + 2 * IMAGE_PADDING;\\n        currentX = 0;\\n        maxLineHeight = 0;\\n      }\\n      map.push({\\n        transform,\\n        x: currentX,\\n        y: currentY,\\n        w: img.width,\\n        h: img.height,\\n      });\\n      currentX += img.width + 2 * IMAGE_PADDING;\\n      maxLineHeight = Math.max(maxLineHeight, img.height);\\n    }\\n    const imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;\\n    const imgHeight = currentY + maxLineHeight + IMAGE_PADDING;\\n    const imgData = new Uint8Array(imgWidth * imgHeight * 4);\\n    const imgRowSize = imgWidth \u003C\u003C 2;\\n    for (let q = 0; q \u003C count; q++) {\\n      const data = argsArray[iFirstPIIXO + (q \u003C\u003C 2)][0].data;\\n      \u002F\u002F Copy image by lines and extends pixels into padding.\\n      const rowSize = map[q].w \u003C\u003C 2;\\n      let dataOffset = 0;\\n      let offset = (map[q].x + map[q].y * imgWidth) \u003C\u003C 2;\\n      imgData.set(data.subarray(0, rowSize), offset - imgRowSize);\\n      for (let k = 0, kk = map[q].h; k \u003C kk; k++) {\\n        imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);\\n        dataOffset += rowSize;\\n        offset += imgRowSize;\\n      }\\n      imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);\\n      while (offset >= 0) {\\n        data[offset - 4] = data[offset];\\n        data[offset - 3] = data[offset + 1];\\n        data[offset - 2] = data[offset + 2];\\n        data[offset - 1] = data[offset + 3];\\n        data[offset + rowSize] = data[offset + rowSize - 4];\\n        data[offset + rowSize + 1] = data[offset + rowSize - 3];\\n        data[offset + rowSize + 2] = data[offset + rowSize - 2];\\n        data[offset + rowSize + 3] = data[offset + rowSize - 1];\\n        offset -= imgRowSize;\\n      }\\n    }\\n\\n    const img = {\\n      width: imgWidth,\\n      height: imgHeight,\\n    };\\n    if (context.isOffscreenCanvasSupported) {\\n      const canvas = new OffscreenCanvas(imgWidth, imgHeight);\\n      const ctx = canvas.getContext(\\\"2d\\\");\\n      ctx.putImageData(\\n        new ImageData(\\n          new Uint8ClampedArray(imgData.buffer),\\n          imgWidth,\\n          imgHeight\\n        ),\\n        0,\\n        0\\n      );\\n      img.bitmap = canvas.transferToImageBitmap();\\n      img.data = null;\\n    } else {\\n      img.kind = ImageKind.RGBA_32BPP;\\n      img.data = imgData;\\n    }\\n\\n    \u002F\u002F Replace queue items.\\n    fnArray.splice(iFirstSave, count * 4, OPS.paintInlineImageXObjectGroup);\\n    argsArray.splice(iFirstSave, count * 4, [img, map]);\\n\\n    return iFirstSave + 1;\\n  }\\n);\\n\\n\u002F\u002F This replaces (save, transform, paintImageMaskXObject, restore)+\\n\u002F\u002F sequences with one |paintImageMaskXObjectGroup| or one\\n\u002F\u002F |paintImageMaskXObjectRepeat| operation.\\naddState(\\n  InitialState,\\n  [OPS.save, OPS.transform, OPS.paintImageMaskXObject, OPS.restore],\\n  null,\\n  function iterateImageMaskGroup(context, i) {\\n    const fnArray = context.fnArray;\\n    const iFirstSave = context.iCurr - 3;\\n    const pos = (i - iFirstSave) % 4;\\n    switch (pos) {\\n      case 0:\\n        return fnArray[i] === OPS.save;\\n      case 1:\\n        return fnArray[i] === OPS.transform;\\n      case 2:\\n        return fnArray[i] === OPS.paintImageMaskXObject;\\n      case 3:\\n        return fnArray[i] === OPS.restore;\\n    }\\n    throw new Error(`iterateImageMaskGroup - invalid pos: ${pos}`);\\n  },\\n  function foundImageMaskGroup(context, i) {\\n    const MIN_IMAGES_IN_MASKS_BLOCK = 10;\\n    const MAX_IMAGES_IN_MASKS_BLOCK = 100;\\n    const MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;\\n\\n    const fnArray = context.fnArray,\\n      argsArray = context.argsArray;\\n    const curr = context.iCurr;\\n    const iFirstSave = curr - 3;\\n    const iFirstTransform = curr - 2;\\n    const iFirstPIMXO = curr - 1;\\n\\n    \u002F\u002F At this point, i is the index of the first op past the last valid\\n    \u002F\u002F quartet.\\n    let count = Math.floor((i - iFirstSave) \u002F 4);\\n    if (count \u003C MIN_IMAGES_IN_MASKS_BLOCK) {\\n      return i - ((i - iFirstSave) % 4);\\n    }\\n\\n    let isSameImage = false;\\n    let iTransform, transformArgs;\\n    const firstPIMXOArg0 = argsArray[iFirstPIMXO][0];\\n    const firstTransformArg0 = argsArray[iFirstTransform][0],\\n      firstTransformArg1 = argsArray[iFirstTransform][1],\\n      firstTransformArg2 = argsArray[iFirstTransform][2],\\n      firstTransformArg3 = argsArray[iFirstTransform][3];\\n\\n    if (firstTransformArg1 === firstTransformArg2) {\\n      isSameImage = true;\\n      iTransform = iFirstTransform + 4;\\n      let iPIMXO = iFirstPIMXO + 4;\\n      for (let q = 1; q \u003C count; q++, iTransform += 4, iPIMXO += 4) {\\n        transformArgs = argsArray[iTransform];\\n        if (\\n          argsArray[iPIMXO][0] !== firstPIMXOArg0 ||\\n          transformArgs[0] !== firstTransformArg0 ||\\n          transformArgs[1] !== firstTransformArg1 ||\\n          transformArgs[2] !== firstTransformArg2 ||\\n          transformArgs[3] !== firstTransformArg3\\n        ) {\\n          if (q \u003C MIN_IMAGES_IN_MASKS_BLOCK) {\\n            isSameImage = false;\\n          } else {\\n            count = q;\\n          }\\n          break; \u002F\u002F different image or transform\\n        }\\n      }\\n    }\\n\\n    if (isSameImage) {\\n      count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);\\n      const positions = new Float32Array(count * 2);\\n      iTransform = iFirstTransform;\\n      for (let q = 0; q \u003C count; q++, iTransform += 4) {\\n        transformArgs = argsArray[iTransform];\\n        positions[q \u003C\u003C 1] = transformArgs[4];\\n        positions[(q \u003C\u003C 1) + 1] = transformArgs[5];\\n      }\\n\\n      \u002F\u002F Replace queue items.\\n      fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectRepeat);\\n      argsArray.splice(iFirstSave, count * 4, [\\n        firstPIMXOArg0,\\n        firstTransformArg0,\\n        firstTransformArg1,\\n        firstTransformArg2,\\n        firstTransformArg3,\\n        positions,\\n      ]);\\n    } else {\\n      count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);\\n      const images = [];\\n      for (let q = 0; q \u003C count; q++) {\\n        transformArgs = argsArray[iFirstTransform + (q \u003C\u003C 2)];\\n        const maskParams = argsArray[iFirstPIMXO + (q \u003C\u003C 2)][0];\\n        images.push({\\n          data: maskParams.data,\\n          width: maskParams.width,\\n          height: maskParams.height,\\n          interpolate: maskParams.interpolate,\\n          count: maskParams.count,\\n          transform: transformArgs,\\n        });\\n      }\\n\\n      \u002F\u002F Replace queue items.\\n      fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectGroup);\\n      argsArray.splice(iFirstSave, count * 4, [images]);\\n    }\\n\\n    return iFirstSave + 1;\\n  }\\n);\\n\\n\u002F\u002F This replaces (save, transform, paintImageXObject, restore)+ sequences\\n\u002F\u002F with one paintImageXObjectRepeat operation, if the |transform| and\\n\u002F\u002F |paintImageXObjectRepeat| ops are appropriate.\\naddState(\\n  InitialState,\\n  [OPS.save, OPS.transform, OPS.paintImageXObject, OPS.restore],\\n  function (context) {\\n    const argsArray = context.argsArray;\\n    const iFirstTransform = context.iCurr - 2;\\n    return (\\n      argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0\\n    );\\n  },\\n  function iterateImageGroup(context, i) {\\n    const fnArray = context.fnArray,\\n      argsArray = context.argsArray;\\n    const iFirstSave = context.iCurr - 3;\\n    const pos = (i - iFirstSave) % 4;\\n    switch (pos) {\\n      case 0:\\n        return fnArray[i] === OPS.save;\\n      case 1:\\n        if (fnArray[i] !== OPS.transform) {\\n          return false;\\n        }\\n        const iFirstTransform = context.iCurr - 2;\\n        const firstTransformArg0 = argsArray[iFirstTransform][0];\\n        const firstTransformArg3 = argsArray[iFirstTransform][3];\\n        if (\\n          argsArray[i][0] !== firstTransformArg0 ||\\n          argsArray[i][1] !== 0 ||\\n          argsArray[i][2] !== 0 ||\\n          argsArray[i][3] !== firstTransformArg3\\n        ) {\\n          return false; \u002F\u002F transforms don't match\\n        }\\n        return true;\\n      case 2:\\n        if (fnArray[i] !== OPS.paintImageXObject) {\\n          return false;\\n        }\\n        const iFirstPIXO = context.iCurr - 1;\\n        const firstPIXOArg0 = argsArray[iFirstPIXO][0];\\n        if (argsArray[i][0] !== firstPIXOArg0) {\\n          return false; \u002F\u002F images don't match\\n        }\\n        return true;\\n      case 3:\\n        return fnArray[i] === OPS.restore;\\n    }\\n    throw new Error(`iterateImageGroup - invalid pos: ${pos}`);\\n  },\\n  function (context, i) {\\n    const MIN_IMAGES_IN_BLOCK = 3;\\n    const MAX_IMAGES_IN_BLOCK = 1000;\\n\\n    const fnArray = context.fnArray,\\n      argsArray = context.argsArray;\\n    const curr = context.iCurr;\\n    const iFirstSave = curr - 3;\\n    const iFirstTransform = curr - 2;\\n    const iFirstPIXO = curr - 1;\\n    const firstPIXOArg0 = argsArray[iFirstPIXO][0];\\n    const firstTransformArg0 = argsArray[iFirstTransform][0];\\n    const firstTransformArg3 = argsArray[iFirstTransform][3];\\n\\n    \u002F\u002F At this point, i is the index of the first op past the last valid\\n    \u002F\u002F quartet.\\n    const count = Math.min(\\n      Math.floor((i - iFirstSave) \u002F 4),\\n      MAX_IMAGES_IN_BLOCK\\n    );\\n    if (count \u003C MIN_IMAGES_IN_BLOCK) {\\n      return i - ((i - iFirstSave) % 4);\\n    }\\n\\n    \u002F\u002F Extract the (x,y) positions from all of the matching transforms.\\n    const positions = new Float32Array(count * 2);\\n    let iTransform = iFirstTransform;\\n    for (let q = 0; q \u003C count; q++, iTransform += 4) {\\n      const transformArgs = argsArray[iTransform];\\n      positions[q \u003C\u003C 1] = transformArgs[4];\\n      positions[(q \u003C\u003C 1) + 1] = transformArgs[5];\\n    }\\n\\n    \u002F\u002F Replace queue items.\\n    const args = [\\n      firstPIXOArg0,\\n      firstTransformArg0,\\n      firstTransformArg3,\\n      positions,\\n    ];\\n    fnArray.splice(iFirstSave, count * 4, OPS.paintImageXObjectRepeat);\\n    argsArray.splice(iFirstSave, count * 4, args);\\n\\n    return iFirstSave + 1;\\n  }\\n);\\n\\n\u002F\u002F This replaces (beginText, setFont, setTextMatrix, showText, endText)+\\n\u002F\u002F sequences with (beginText, setFont, (setTextMatrix, showText)+, endText)+\\n\u002F\u002F sequences, if the font for each one is the same.\\naddState(\\n  InitialState,\\n  [OPS.beginText, OPS.setFont, OPS.setTextMatrix, OPS.showText, OPS.endText],\\n  null,\\n  function iterateShowTextGroup(context, i) {\\n    const fnArray = context.fnArray,\\n      argsArray = context.argsArray;\\n    const iFirstSave = context.iCurr - 4;\\n    const pos = (i - iFirstSave) % 5;\\n    switch (pos) {\\n      case 0:\\n        return fnArray[i] === OPS.beginText;\\n      case 1:\\n        return fnArray[i] === OPS.setFont;\\n      case 2:\\n        return fnArray[i] === OPS.setTextMatrix;\\n      case 3:\\n        if (fnArray[i] !== OPS.showText) {\\n          return false;\\n        }\\n        const iFirstSetFont = context.iCurr - 3;\\n        const firstSetFontArg0 = argsArray[iFirstSetFont][0];\\n        const firstSetFontArg1 = argsArray[iFirstSetFont][1];\\n        if (\\n          argsArray[i][0] !== firstSetFontArg0 ||\\n          argsArray[i][1] !== firstSetFontArg1\\n        ) {\\n          return false; \u002F\u002F fonts don't match\\n        }\\n        return true;\\n      case 4:\\n        return fnArray[i] === OPS.endText;\\n    }\\n    throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`);\\n  },\\n  function (context, i) {\\n    const MIN_CHARS_IN_BLOCK = 3;\\n    const MAX_CHARS_IN_BLOCK = 1000;\\n\\n    const fnArray = context.fnArray,\\n      argsArray = context.argsArray;\\n    const curr = context.iCurr;\\n    const iFirstBeginText = curr - 4;\\n    const iFirstSetFont = curr - 3;\\n    const iFirstSetTextMatrix = curr - 2;\\n    const iFirstShowText = curr - 1;\\n    const iFirstEndText = curr;\\n    const firstSetFontArg0 = argsArray[iFirstSetFont][0];\\n    const firstSetFontArg1 = argsArray[iFirstSetFont][1];\\n\\n    \u002F\u002F At this point, i is the index of the first op past the last valid\\n    \u002F\u002F quintet.\\n    let count = Math.min(\\n      Math.floor((i - iFirstBeginText) \u002F 5),\\n      MAX_CHARS_IN_BLOCK\\n    );\\n    if (count \u003C MIN_CHARS_IN_BLOCK) {\\n      return i - ((i - iFirstBeginText) % 5);\\n    }\\n\\n    \u002F\u002F If the preceding quintet is (\u003Csomething>, setFont, setTextMatrix,\\n    \u002F\u002F showText, endText), include that as well. (E.g. \u003Csomething> might be\\n    \u002F\u002F |dependency|.)\\n    let iFirst = iFirstBeginText;\\n    if (\\n      iFirstBeginText >= 4 &&\\n      fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] &&\\n      fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] &&\\n      fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] &&\\n      fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] &&\\n      argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 &&\\n      argsArray[iFirstBeginText - 4][1] === firstSetFontArg1\\n    ) {\\n      count++;\\n      iFirst -= 5;\\n    }\\n\\n    \u002F\u002F Remove (endText, beginText, setFont) trios.\\n    let iEndText = iFirst + 4;\\n    for (let q = 1; q \u003C count; q++) {\\n      fnArray.splice(iEndText, 3);\\n      argsArray.splice(iEndText, 3);\\n      iEndText += 2;\\n    }\\n\\n    return iEndText + 1;\\n  }\\n);\\n\\n\u002F\u002F This replaces (save, transform, constructPath, restore)\\n\u002F\u002F sequences with |constructPath| operation.\\naddState(\\n  InitialState,\\n  [OPS.save, OPS.transform, OPS.constructPath, OPS.restore],\\n  context => {\\n    const argsArray = context.argsArray;\\n    const iFirstConstructPath = context.iCurr - 1;\\n    const op = argsArray[iFirstConstructPath][0];\\n\\n    \u002F\u002F When stroking the transform has to be applied to the line width too.\\n    \u002F\u002F So we can only optimize if the transform is an identity.\\n    if (\\n      op !== OPS.stroke &&\\n      op !== OPS.closeStroke &&\\n      op !== OPS.fillStroke &&\\n      op !== OPS.eoFillStroke &&\\n      op !== OPS.closeFillStroke &&\\n      op !== OPS.closeEOFillStroke\\n    ) {\\n      return true;\\n    }\\n    const iFirstTransform = context.iCurr - 2;\\n    const transform = argsArray[iFirstTransform];\\n    return (\\n      transform[0] === 1 &&\\n      transform[1] === 0 &&\\n      transform[2] === 0 &&\\n      transform[3] === 1\\n    );\\n  },\\n  () => false,\\n  (context, i) => {\\n    const { fnArray, argsArray } = context;\\n    const curr = context.iCurr;\\n    const iFirstSave = curr - 3;\\n    const iFirstTransform = curr - 2;\\n    const iFirstConstructPath = curr - 1;\\n    const args = argsArray[iFirstConstructPath];\\n    const transform = argsArray[iFirstTransform];\\n    const [, [buffer], minMax] = args;\\n\\n    if (minMax) {\\n      Util.scaleMinMax(transform, minMax);\\n      for (let k = 0, kk = buffer.length; k \u003C kk; ) {\\n        switch (buffer[k++]) {\\n          case DrawOPS.moveTo:\\n          case DrawOPS.lineTo:\\n            Util.applyTransform(buffer, transform, k);\\n            k += 2;\\n            break;\\n          case DrawOPS.curveTo:\\n            Util.applyTransformToBezier(buffer, transform, k);\\n            k += 6;\\n            break;\\n        }\\n      }\\n    }\\n    \u002F\u002F Replace queue items.\\n    fnArray.splice(iFirstSave, 4, OPS.constructPath);\\n    argsArray.splice(iFirstSave, 4, args);\\n\\n    return iFirstSave + 1;\\n  }\\n);\\n\\nclass NullOptimizer {\\n  constructor(queue) {\\n    this.queue = queue;\\n  }\\n\\n  _optimize() {}\\n\\n  push(fn, args) {\\n    this.queue.fnArray.push(fn);\\n    this.queue.argsArray.push(args);\\n    this._optimize();\\n  }\\n\\n  flush() {}\\n\\n  reset() {}\\n}\\n\\nclass QueueOptimizer extends NullOptimizer {\\n  constructor(queue) {\\n    super(queue);\\n    this.state = null;\\n    this.context = {\\n      iCurr: 0,\\n      fnArray: queue.fnArray,\\n      argsArray: queue.argsArray,\\n      isOffscreenCanvasSupported: OperatorList.isOffscreenCanvasSupported,\\n    };\\n    this.match = null;\\n    this.lastProcessed = 0;\\n  }\\n\\n  _optimize() {\\n    \u002F\u002F Process new fnArray item(s) chunk.\\n    const fnArray = this.queue.fnArray;\\n    let i = this.lastProcessed,\\n      ii = fnArray.length;\\n    let state = this.state;\\n    let match = this.match;\\n    if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) {\\n      \u002F\u002F Micro-optimization for the common case: last item is not\\n      \u002F\u002F optimizable, just skipping it.\\n      this.lastProcessed = ii;\\n      return;\\n    }\\n\\n    const context = this.context;\\n    while (i \u003C ii) {\\n      if (match) {\\n        \u002F\u002F Already find a block of potentially optimizable items, iterating...\\n        const iterate = (0, match.iterateFn)(context, i);\\n        if (iterate) {\\n          i++;\\n          continue;\\n        }\\n        \u002F\u002F Found last items for the block, processing...\\n        i = (0, match.processFn)(context, i + 1);\\n        ii = fnArray.length;\\n        match = null;\\n        state = null;\\n        if (i >= ii) {\\n          break;\\n        }\\n      }\\n      \u002F\u002F Find the potentially optimizable items.\\n      state = (state || InitialState)[fnArray[i]];\\n      if (!state || Array.isArray(state)) {\\n        i++;\\n        continue;\\n      }\\n      \u002F\u002F Found a start of the block based on addState rules.\\n      context.iCurr = i;\\n      i++;\\n      if (state.checkFn && !(0, state.checkFn)(context)) {\\n        \u002F\u002F Check failed, continue search...\\n        state = null;\\n        continue;\\n      }\\n      match = state;\\n      state = null;\\n    }\\n    this.state = state;\\n    this.match = match;\\n    this.lastProcessed = i;\\n  }\\n\\n  flush() {\\n    while (this.match) {\\n      const length = this.queue.fnArray.length;\\n      this.lastProcessed = (0, this.match.processFn)(this.context, length);\\n      this.match = null;\\n      this.state = null;\\n      \u002F\u002F Repeat optimization until all chunks are exhausted.\\n      this._optimize();\\n    }\\n  }\\n\\n  reset() {\\n    this.state = null;\\n    this.match = null;\\n    this.lastProcessed = 0;\\n  }\\n}\\n\\nclass OperatorList {\\n  static CHUNK_SIZE = 1000;\\n\\n  \u002F\u002F Close to chunk size.\\n  static CHUNK_SIZE_ABOUT = this.CHUNK_SIZE - 5;\\n\\n  static isOffscreenCanvasSupported = false;\\n\\n  constructor(intent = 0, streamSink) {\\n    this._streamSink = streamSink;\\n    this.fnArray = [];\\n    this.argsArray = [];\\n    this.optimizer =\\n      streamSink && !(intent & RenderingIntentFlag.OPLIST)\\n        ? new QueueOptimizer(this)\\n        : new NullOptimizer(this);\\n    this.dependencies = new Set();\\n    this._totalLength = 0;\\n    this.weight = 0;\\n    this._resolved = streamSink ? null : Promise.resolve();\\n  }\\n\\n  static setOptions({ isOffscreenCanvasSupported }) {\\n    this.isOffscreenCanvasSupported = isOffscreenCanvasSupported;\\n  }\\n\\n  get length() {\\n    return this.argsArray.length;\\n  }\\n\\n  get ready() {\\n    return this._resolved || this._streamSink.ready;\\n  }\\n\\n  \u002F**\\n   * @type {number} The total length of the entire operator list, since\\n   *                `this.length === 0` after flushing.\\n   *\u002F\\n  get totalLength() {\\n    return this._totalLength + this.length;\\n  }\\n\\n  addOp(fn, args) {\\n    this.optimizer.push(fn, args);\\n    this.weight++;\\n    if (this._streamSink) {\\n      if (this.weight >= OperatorList.CHUNK_SIZE) {\\n        this.flush();\\n      } else if (\\n        this.weight >= OperatorList.CHUNK_SIZE_ABOUT &&\\n        (fn === OPS.restore || fn === OPS.endText)\\n      ) {\\n        \u002F\u002F Heuristic to flush on boundary of restore or endText.\\n        this.flush();\\n      }\\n    }\\n  }\\n\\n  addImageOps(fn, args, optionalContent, hasMask = false) {\\n    if (hasMask) {\\n      this.addOp(OPS.save);\\n      this.addOp(OPS.setGState, [[[\\\"SMask\\\", false]]]);\\n    }\\n    if (optionalContent !== undefined) {\\n      this.addOp(OPS.beginMarkedContentProps, [\\\"OC\\\", optionalContent]);\\n    }\\n\\n    this.addOp(fn, args);\\n\\n    if (optionalContent !== undefined) {\\n      this.addOp(OPS.endMarkedContent, []);\\n    }\\n    if (hasMask) {\\n      this.addOp(OPS.restore);\\n    }\\n  }\\n\\n  addDependency(dependency) {\\n    if (this.dependencies.has(dependency)) {\\n      return;\\n    }\\n    this.dependencies.add(dependency);\\n    this.addOp(OPS.dependency, [dependency]);\\n  }\\n\\n  addDependencies(dependencies) {\\n    for (const dependency of dependencies) {\\n      this.addDependency(dependency);\\n    }\\n  }\\n\\n  addOpList(opList) {\\n    if (!(opList instanceof OperatorList)) {\\n      warn('addOpList - ignoring invalid \\\"opList\\\" parameter.');\\n      return;\\n    }\\n    for (const dependency of opList.dependencies) {\\n      this.dependencies.add(dependency);\\n    }\\n    for (let i = 0, ii = opList.length; i \u003C ii; i++) {\\n      this.addOp(opList.fnArray[i], opList.argsArray[i]);\\n    }\\n  }\\n\\n  getIR() {\\n    return {\\n      fnArray: this.fnArray,\\n      argsArray: this.argsArray,\\n      length: this.length,\\n    };\\n  }\\n\\n  get _transfers() {\\n    const transfers = [];\\n    const { fnArray, argsArray, length } = this;\\n    for (let i = 0; i \u003C length; i++) {\\n      switch (fnArray[i]) {\\n        case OPS.paintInlineImageXObject:\\n        case OPS.paintInlineImageXObjectGroup:\\n        case OPS.paintImageMaskXObject: {\\n          const { bitmap, data } = argsArray[i][0]; \u002F\u002F First parameter in imgData.\\n          if (bitmap || data?.buffer) {\\n            transfers.push(bitmap || data.buffer);\\n          }\\n          break;\\n        }\\n        case OPS.constructPath: {\\n          const [, [data], minMax] = argsArray[i];\\n          if (data) {\\n            transfers.push(data.buffer, minMax.buffer);\\n          }\\n          break;\\n        }\\n        case OPS.paintFormXObjectBegin:\\n          const [matrix, bbox] = argsArray[i];\\n          if (matrix) {\\n            transfers.push(matrix.buffer);\\n          }\\n          if (bbox) {\\n            transfers.push(bbox.buffer);\\n          }\\n          break;\\n        case OPS.setTextMatrix:\\n          transfers.push(argsArray[i][0].buffer);\\n          break;\\n      }\\n    }\\n    return transfers;\\n  }\\n\\n  flush(lastChunk = false, separateAnnots = null) {\\n    this.optimizer.flush();\\n    const length = this.length;\\n    this._totalLength += length;\\n\\n    this._streamSink.enqueue(\\n      {\\n        fnArray: this.fnArray,\\n        argsArray: this.argsArray,\\n        lastChunk,\\n        separateAnnots,\\n        length,\\n      },\\n      1,\\n      this._transfers\\n    );\\n\\n    this.dependencies.clear();\\n    this.fnArray.length = 0;\\n    this.argsArray.length = 0;\\n    this.weight = 0;\\n    this.optimizer.reset();\\n  }\\n}\\n\\nexport { OperatorList };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { FormatError } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nfunction hexToInt(a, size) {\\n  let n = 0;\\n  for (let i = 0; i \u003C= size; i++) {\\n    n = (n \u003C\u003C 8) | a[i];\\n  }\\n  return n >>> 0;\\n}\\n\\nfunction hexToStr(a, size) {\\n  \u002F\u002F This code is hot. Special-case some common values to avoid creating an\\n  \u002F\u002F object with subarray().\\n  if (size === 1) {\\n    return String.fromCharCode(a[0], a[1]);\\n  }\\n  if (size === 3) {\\n    return String.fromCharCode(a[0], a[1], a[2], a[3]);\\n  }\\n  return String.fromCharCode(...a.subarray(0, size + 1));\\n}\\n\\nfunction addHex(a, b, size) {\\n  let c = 0;\\n  for (let i = size; i >= 0; i--) {\\n    c += a[i] + b[i];\\n    a[i] = c & 255;\\n    c >>= 8;\\n  }\\n}\\n\\nfunction incHex(a, size) {\\n  let c = 1;\\n  for (let i = size; i >= 0 && c > 0; i--) {\\n    c += a[i];\\n    a[i] = c & 255;\\n    c >>= 8;\\n  }\\n}\\n\\nconst MAX_NUM_SIZE = 16;\\nconst MAX_ENCODED_NUM_SIZE = 19; \u002F\u002F ceil(MAX_NUM_SIZE * 7 \u002F 8)\\n\\nclass BinaryCMapStream {\\n  constructor(data) {\\n    this.buffer = data;\\n    this.pos = 0;\\n    this.end = data.length;\\n    this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);\\n  }\\n\\n  readByte() {\\n    if (this.pos >= this.end) {\\n      return -1;\\n    }\\n    return this.buffer[this.pos++];\\n  }\\n\\n  readNumber() {\\n    let n = 0;\\n    let last;\\n    do {\\n      const b = this.readByte();\\n      if (b \u003C 0) {\\n        throw new FormatError(\\\"unexpected EOF in bcmap\\\");\\n      }\\n      last = !(b & 0x80);\\n      n = (n \u003C\u003C 7) | (b & 0x7f);\\n    } while (!last);\\n    return n;\\n  }\\n\\n  readSigned() {\\n    const n = this.readNumber();\\n    return n & 1 ? ~(n >>> 1) : n >>> 1;\\n  }\\n\\n  readHex(num, size) {\\n    num.set(this.buffer.subarray(this.pos, this.pos + size + 1));\\n    this.pos += size + 1;\\n  }\\n\\n  readHexNumber(num, size) {\\n    let last;\\n    const stack = this.tmpBuf;\\n    let sp = 0;\\n    do {\\n      const b = this.readByte();\\n      if (b \u003C 0) {\\n        throw new FormatError(\\\"unexpected EOF in bcmap\\\");\\n      }\\n      last = !(b & 0x80);\\n      stack[sp++] = b & 0x7f;\\n    } while (!last);\\n    let i = size,\\n      buffer = 0,\\n      bufferSize = 0;\\n    while (i >= 0) {\\n      while (bufferSize \u003C 8 && stack.length > 0) {\\n        buffer |= stack[--sp] \u003C\u003C bufferSize;\\n        bufferSize += 7;\\n      }\\n      num[i] = buffer & 255;\\n      i--;\\n      buffer >>= 8;\\n      bufferSize -= 8;\\n    }\\n  }\\n\\n  readHexSigned(num, size) {\\n    this.readHexNumber(num, size);\\n    const sign = num[size] & 1 ? 255 : 0;\\n    let c = 0;\\n    for (let i = 0; i \u003C= size; i++) {\\n      c = ((c & 1) \u003C\u003C 8) | num[i];\\n      num[i] = (c >> 1) ^ sign;\\n    }\\n  }\\n\\n  readString() {\\n    const len = this.readNumber(),\\n      buf = new Array(len);\\n    for (let i = 0; i \u003C len; i++) {\\n      buf[i] = this.readNumber();\\n    }\\n    return String.fromCharCode(...buf);\\n  }\\n}\\n\\nclass BinaryCMapReader {\\n  async process(data, cMap, extend) {\\n    const stream = new BinaryCMapStream(data);\\n    const header = stream.readByte();\\n    cMap.vertical = !!(header & 1);\\n\\n    let useCMap = null;\\n    const start = new Uint8Array(MAX_NUM_SIZE);\\n    const end = new Uint8Array(MAX_NUM_SIZE);\\n    const char = new Uint8Array(MAX_NUM_SIZE);\\n    const charCode = new Uint8Array(MAX_NUM_SIZE);\\n    const tmp = new Uint8Array(MAX_NUM_SIZE);\\n    let code;\\n\\n    let b;\\n    while ((b = stream.readByte()) >= 0) {\\n      const type = b >> 5;\\n      if (type === 7) {\\n        \u002F\u002F metadata, e.g. comment or usecmap\\n        switch (b & 0x1f) {\\n          case 0:\\n            stream.readString(); \u002F\u002F skipping comment\\n            break;\\n          case 1:\\n            useCMap = stream.readString();\\n            break;\\n        }\\n        continue;\\n      }\\n      const sequence = !!(b & 0x10);\\n      const dataSize = b & 15;\\n\\n      if (dataSize + 1 > MAX_NUM_SIZE) {\\n        throw new Error(\\\"BinaryCMapReader.process: Invalid dataSize.\\\");\\n      }\\n\\n      const ucs2DataSize = 1;\\n      const subitemsCount = stream.readNumber();\\n      switch (type) {\\n        case 0: \u002F\u002F codespacerange\\n          stream.readHex(start, dataSize);\\n          stream.readHexNumber(end, dataSize);\\n          addHex(end, start, dataSize);\\n          cMap.addCodespaceRange(\\n            dataSize + 1,\\n            hexToInt(start, dataSize),\\n            hexToInt(end, dataSize)\\n          );\\n          for (let i = 1; i \u003C subitemsCount; i++) {\\n            incHex(end, dataSize);\\n            stream.readHexNumber(start, dataSize);\\n            addHex(start, end, dataSize);\\n            stream.readHexNumber(end, dataSize);\\n            addHex(end, start, dataSize);\\n            cMap.addCodespaceRange(\\n              dataSize + 1,\\n              hexToInt(start, dataSize),\\n              hexToInt(end, dataSize)\\n            );\\n          }\\n          break;\\n        case 1: \u002F\u002F notdefrange\\n          stream.readHex(start, dataSize);\\n          stream.readHexNumber(end, dataSize);\\n          addHex(end, start, dataSize);\\n          stream.readNumber(); \u002F\u002F code\\n          \u002F\u002F undefined range, skipping\\n          for (let i = 1; i \u003C subitemsCount; i++) {\\n            incHex(end, dataSize);\\n            stream.readHexNumber(start, dataSize);\\n            addHex(start, end, dataSize);\\n            stream.readHexNumber(end, dataSize);\\n            addHex(end, start, dataSize);\\n            stream.readNumber(); \u002F\u002F code\\n            \u002F\u002F nop\\n          }\\n          break;\\n        case 2: \u002F\u002F cidchar\\n          stream.readHex(char, dataSize);\\n          code = stream.readNumber();\\n          cMap.mapOne(hexToInt(char, dataSize), code);\\n          for (let i = 1; i \u003C subitemsCount; i++) {\\n            incHex(char, dataSize);\\n            if (!sequence) {\\n              stream.readHexNumber(tmp, dataSize);\\n              addHex(char, tmp, dataSize);\\n            }\\n            code = stream.readSigned() + (code + 1);\\n            cMap.mapOne(hexToInt(char, dataSize), code);\\n          }\\n          break;\\n        case 3: \u002F\u002F cidrange\\n          stream.readHex(start, dataSize);\\n          stream.readHexNumber(end, dataSize);\\n          addHex(end, start, dataSize);\\n          code = stream.readNumber();\\n          cMap.mapCidRange(\\n            hexToInt(start, dataSize),\\n            hexToInt(end, dataSize),\\n            code\\n          );\\n          for (let i = 1; i \u003C subitemsCount; i++) {\\n            incHex(end, dataSize);\\n            if (!sequence) {\\n              stream.readHexNumber(start, dataSize);\\n              addHex(start, end, dataSize);\\n            } else {\\n              start.set(end);\\n            }\\n            stream.readHexNumber(end, dataSize);\\n            addHex(end, start, dataSize);\\n            code = stream.readNumber();\\n            cMap.mapCidRange(\\n              hexToInt(start, dataSize),\\n              hexToInt(end, dataSize),\\n              code\\n            );\\n          }\\n          break;\\n        case 4: \u002F\u002F bfchar\\n          stream.readHex(char, ucs2DataSize);\\n          stream.readHex(charCode, dataSize);\\n          cMap.mapOne(\\n            hexToInt(char, ucs2DataSize),\\n            hexToStr(charCode, dataSize)\\n          );\\n          for (let i = 1; i \u003C subitemsCount; i++) {\\n            incHex(char, ucs2DataSize);\\n            if (!sequence) {\\n              stream.readHexNumber(tmp, ucs2DataSize);\\n              addHex(char, tmp, ucs2DataSize);\\n            }\\n            incHex(charCode, dataSize);\\n            stream.readHexSigned(tmp, dataSize);\\n            addHex(charCode, tmp, dataSize);\\n            cMap.mapOne(\\n              hexToInt(char, ucs2DataSize),\\n              hexToStr(charCode, dataSize)\\n            );\\n          }\\n          break;\\n        case 5: \u002F\u002F bfrange\\n          stream.readHex(start, ucs2DataSize);\\n          stream.readHexNumber(end, ucs2DataSize);\\n          addHex(end, start, ucs2DataSize);\\n          stream.readHex(charCode, dataSize);\\n          cMap.mapBfRange(\\n            hexToInt(start, ucs2DataSize),\\n            hexToInt(end, ucs2DataSize),\\n            hexToStr(charCode, dataSize)\\n          );\\n          for (let i = 1; i \u003C subitemsCount; i++) {\\n            incHex(end, ucs2DataSize);\\n            if (!sequence) {\\n              stream.readHexNumber(start, ucs2DataSize);\\n              addHex(start, end, ucs2DataSize);\\n            } else {\\n              start.set(end);\\n            }\\n            stream.readHexNumber(end, ucs2DataSize);\\n            addHex(end, start, ucs2DataSize);\\n            stream.readHex(charCode, dataSize);\\n            cMap.mapBfRange(\\n              hexToInt(start, ucs2DataSize),\\n              hexToInt(end, ucs2DataSize),\\n              hexToStr(charCode, dataSize)\\n            );\\n          }\\n          break;\\n        default:\\n          throw new Error(`BinaryCMapReader.process - unknown type: ${type}`);\\n      }\\n    }\\n\\n    if (useCMap) {\\n      return extend(useCMap);\\n    }\\n    return cMap;\\n  }\\n}\\n\\nexport { BinaryCMapReader };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { DecodeStream } from \\\".\u002Fdecode_stream.js\\\";\\nimport { isWhiteSpace } from \\\".\u002Fcore_utils.js\\\";\\n\\nclass Ascii85Stream extends DecodeStream {\\n  constructor(str, maybeLength) {\\n    \u002F\u002F Most streams increase in size when decoded, but Ascii85 streams\\n    \u002F\u002F typically shrink by ~20%.\\n    if (maybeLength) {\\n      maybeLength *= 0.8;\\n    }\\n    super(maybeLength);\\n\\n    this.str = str;\\n    this.dict = str.dict;\\n    this.input = new Uint8Array(5);\\n  }\\n\\n  readBlock() {\\n    const TILDA_CHAR = 0x7e; \u002F\u002F '~'\\n    const Z_LOWER_CHAR = 0x7a; \u002F\u002F 'z'\\n    const EOF = -1;\\n\\n    const str = this.str;\\n\\n    let c = str.getByte();\\n    while (isWhiteSpace(c)) {\\n      c = str.getByte();\\n    }\\n\\n    if (c === EOF || c === TILDA_CHAR) {\\n      this.eof = true;\\n      return;\\n    }\\n\\n    const bufferLength = this.bufferLength;\\n    let buffer, i;\\n\\n    \u002F\u002F special code for z\\n    if (c === Z_LOWER_CHAR) {\\n      buffer = this.ensureBuffer(bufferLength + 4);\\n      for (i = 0; i \u003C 4; ++i) {\\n        buffer[bufferLength + i] = 0;\\n      }\\n      this.bufferLength += 4;\\n    } else {\\n      const input = this.input;\\n      input[0] = c;\\n      for (i = 1; i \u003C 5; ++i) {\\n        c = str.getByte();\\n        while (isWhiteSpace(c)) {\\n          c = str.getByte();\\n        }\\n\\n        input[i] = c;\\n\\n        if (c === EOF || c === TILDA_CHAR) {\\n          break;\\n        }\\n      }\\n      buffer = this.ensureBuffer(bufferLength + i - 1);\\n      this.bufferLength += i - 1;\\n\\n      \u002F\u002F partial ending;\\n      if (i \u003C 5) {\\n        for (; i \u003C 5; ++i) {\\n          input[i] = 0x21 + 84;\\n        }\\n        this.eof = true;\\n      }\\n      let t = 0;\\n      for (i = 0; i \u003C 5; ++i) {\\n        t = t * 85 + (input[i] - 0x21);\\n      }\\n\\n      for (i = 3; i >= 0; --i) {\\n        buffer[bufferLength + i] = t & 0xff;\\n        t >>= 8;\\n      }\\n    }\\n  }\\n}\\n\\nexport { Ascii85Stream };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { DecodeStream } from \\\".\u002Fdecode_stream.js\\\";\\n\\nclass AsciiHexStream extends DecodeStream {\\n  constructor(str, maybeLength) {\\n    \u002F\u002F Most streams increase in size when decoded, but AsciiHex streams shrink\\n    \u002F\u002F by 50%.\\n    if (maybeLength) {\\n      maybeLength *= 0.5;\\n    }\\n    super(maybeLength);\\n\\n    this.str = str;\\n    this.dict = str.dict;\\n\\n    this.firstDigit = -1;\\n  }\\n\\n  readBlock() {\\n    const UPSTREAM_BLOCK_SIZE = 8000;\\n    const bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE);\\n    if (!bytes.length) {\\n      this.eof = true;\\n      return;\\n    }\\n\\n    const maxDecodeLength = (bytes.length + 1) >> 1;\\n    const buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);\\n    let bufferLength = this.bufferLength;\\n\\n    let firstDigit = this.firstDigit;\\n    for (const ch of bytes) {\\n      let digit;\\n      if (ch >= \u002F* '0' = *\u002F 0x30 && ch \u003C= \u002F* '9' = *\u002F 0x39) {\\n        digit = ch & 0x0f;\\n      } else if (\\n        (ch >= \u002F* 'A' = *\u002F 0x41 && ch \u003C= \u002F* 'Z' = *\u002F 0x46) ||\\n        (ch >= \u002F* 'a' = *\u002F 0x61 && ch \u003C= \u002F* 'z' = *\u002F 0x66)\\n      ) {\\n        digit = (ch & 0x0f) + 9;\\n      } else if (ch === \u002F* '>' = *\u002F 0x3e) {\\n        this.eof = true;\\n        break;\\n      } else {\\n        \u002F\u002F Probably whitespace, ignoring.\\n        continue;\\n      }\\n      if (firstDigit \u003C 0) {\\n        firstDigit = digit;\\n      } else {\\n        buffer[bufferLength++] = (firstDigit \u003C\u003C 4) | digit;\\n        firstDigit = -1;\\n      }\\n    }\\n    if (firstDigit >= 0 && this.eof) {\\n      \u002F\u002F incomplete byte\\n      buffer[bufferLength++] = firstDigit \u003C\u003C 4;\\n      firstDigit = -1;\\n    }\\n    this.firstDigit = firstDigit;\\n    this.bufferLength = bufferLength;\\n  }\\n}\\n\\nexport { AsciiHexStream };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\u002F* Copyright 1996-2003 Glyph & Cog, LLC\\n *\\n * The CCITT stream implementation contained in this file is a JavaScript port\\n * of XPDF's implementation, made available under the Apache 2.0 open source\\n * license.\\n *\u002F\\n\\nimport { FormatError, info } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\n\u002F**\\n * @typedef {Object} CCITTFaxDecoderSource\\n * @property {function} next - Method that return one byte of data for decoding,\\n *   or -1 when EOF is reached.\\n *\u002F\\n\\nconst ccittEOL = -2;\\nconst ccittEOF = -1;\\nconst twoDimPass = 0;\\nconst twoDimHoriz = 1;\\nconst twoDimVert0 = 2;\\nconst twoDimVertR1 = 3;\\nconst twoDimVertL1 = 4;\\nconst twoDimVertR2 = 5;\\nconst twoDimVertL2 = 6;\\nconst twoDimVertR3 = 7;\\nconst twoDimVertL3 = 8;\\n\\n\u002F\u002F prettier-ignore\\nconst twoDimTable = [\\n  [-1, -1], [-1, -1],                   \u002F\u002F 000000x\\n  [7, twoDimVertL3],                    \u002F\u002F 0000010\\n  [7, twoDimVertR3],                    \u002F\u002F 0000011\\n  [6, twoDimVertL2], [6, twoDimVertL2], \u002F\u002F 000010x\\n  [6, twoDimVertR2], [6, twoDimVertR2], \u002F\u002F 000011x\\n  [4, twoDimPass], [4, twoDimPass],     \u002F\u002F 0001xxx\\n  [4, twoDimPass], [4, twoDimPass],\\n  [4, twoDimPass], [4, twoDimPass],\\n  [4, twoDimPass], [4, twoDimPass],\\n  [3, twoDimHoriz], [3, twoDimHoriz],   \u002F\u002F 001xxxx\\n  [3, twoDimHoriz], [3, twoDimHoriz],\\n  [3, twoDimHoriz], [3, twoDimHoriz],\\n  [3, twoDimHoriz], [3, twoDimHoriz],\\n  [3, twoDimHoriz], [3, twoDimHoriz],\\n  [3, twoDimHoriz], [3, twoDimHoriz],\\n  [3, twoDimHoriz], [3, twoDimHoriz],\\n  [3, twoDimHoriz], [3, twoDimHoriz],\\n  [3, twoDimVertL1], [3, twoDimVertL1], \u002F\u002F 010xxxx\\n  [3, twoDimVertL1], [3, twoDimVertL1],\\n  [3, twoDimVertL1], [3, twoDimVertL1],\\n  [3, twoDimVertL1], [3, twoDimVertL1],\\n  [3, twoDimVertL1], [3, twoDimVertL1],\\n  [3, twoDimVertL1], [3, twoDimVertL1],\\n  [3, twoDimVertL1], [3, twoDimVertL1],\\n  [3, twoDimVertL1], [3, twoDimVertL1],\\n  [3, twoDimVertR1], [3, twoDimVertR1], \u002F\u002F 011xxxx\\n  [3, twoDimVertR1], [3, twoDimVertR1],\\n  [3, twoDimVertR1], [3, twoDimVertR1],\\n  [3, twoDimVertR1], [3, twoDimVertR1],\\n  [3, twoDimVertR1], [3, twoDimVertR1],\\n  [3, twoDimVertR1], [3, twoDimVertR1],\\n  [3, twoDimVertR1], [3, twoDimVertR1],\\n  [3, twoDimVertR1], [3, twoDimVertR1],\\n  [1, twoDimVert0], [1, twoDimVert0],   \u002F\u002F 1xxxxxx\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0],\\n  [1, twoDimVert0], [1, twoDimVert0]\\n];\\n\\n\u002F\u002F prettier-ignore\\nconst whiteTable1 = [\\n  [-1, -1],                               \u002F\u002F 00000\\n  [12, ccittEOL],                         \u002F\u002F 00001\\n  [-1, -1], [-1, -1],                     \u002F\u002F 0001x\\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1], \u002F\u002F 001xx\\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1], \u002F\u002F 010xx\\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1], \u002F\u002F 011xx\\n  [11, 1792], [11, 1792],                 \u002F\u002F 1000x\\n  [12, 1984],                             \u002F\u002F 10010\\n  [12, 2048],                             \u002F\u002F 10011\\n  [12, 2112],                             \u002F\u002F 10100\\n  [12, 2176],                             \u002F\u002F 10101\\n  [12, 2240],                             \u002F\u002F 10110\\n  [12, 2304],                             \u002F\u002F 10111\\n  [11, 1856], [11, 1856],                 \u002F\u002F 1100x\\n  [11, 1920], [11, 1920],                 \u002F\u002F 1101x\\n  [12, 2368],                             \u002F\u002F 11100\\n  [12, 2432],                             \u002F\u002F 11101\\n  [12, 2496],                             \u002F\u002F 11110\\n  [12, 2560]                              \u002F\u002F 11111\\n];\\n\\n\u002F\u002F prettier-ignore\\nconst whiteTable2 = [\\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],     \u002F\u002F 0000000xx\\n  [8, 29], [8, 29],                           \u002F\u002F 00000010x\\n  [8, 30], [8, 30],                           \u002F\u002F 00000011x\\n  [8, 45], [8, 45],                           \u002F\u002F 00000100x\\n  [8, 46], [8, 46],                           \u002F\u002F 00000101x\\n  [7, 22], [7, 22], [7, 22], [7, 22],         \u002F\u002F 0000011xx\\n  [7, 23], [7, 23], [7, 23], [7, 23],         \u002F\u002F 0000100xx\\n  [8, 47], [8, 47],                           \u002F\u002F 00001010x\\n  [8, 48], [8, 48],                           \u002F\u002F 00001011x\\n  [6, 13], [6, 13], [6, 13], [6, 13],         \u002F\u002F 000011xxx\\n  [6, 13], [6, 13], [6, 13], [6, 13],\\n  [7, 20], [7, 20], [7, 20], [7, 20],         \u002F\u002F 0001000xx\\n  [8, 33], [8, 33],                           \u002F\u002F 00010010x\\n  [8, 34], [8, 34],                           \u002F\u002F 00010011x\\n  [8, 35], [8, 35],                           \u002F\u002F 00010100x\\n  [8, 36], [8, 36],                           \u002F\u002F 00010101x\\n  [8, 37], [8, 37],                           \u002F\u002F 00010110x\\n  [8, 38], [8, 38],                           \u002F\u002F 00010111x\\n  [7, 19], [7, 19], [7, 19], [7, 19],         \u002F\u002F 0001100xx\\n  [8, 31], [8, 31],                           \u002F\u002F 00011010x\\n  [8, 32], [8, 32],                           \u002F\u002F 00011011x\\n  [6, 1], [6, 1], [6, 1], [6, 1],             \u002F\u002F 000111xxx\\n  [6, 1], [6, 1], [6, 1], [6, 1],\\n  [6, 12], [6, 12], [6, 12], [6, 12],         \u002F\u002F 001000xxx\\n  [6, 12], [6, 12], [6, 12], [6, 12],\\n  [8, 53], [8, 53],                           \u002F\u002F 00100100x\\n  [8, 54], [8, 54],                           \u002F\u002F 00100101x\\n  [7, 26], [7, 26], [7, 26], [7, 26],         \u002F\u002F 0010011xx\\n  [8, 39], [8, 39],                           \u002F\u002F 00101000x\\n  [8, 40], [8, 40],                           \u002F\u002F 00101001x\\n  [8, 41], [8, 41],                           \u002F\u002F 00101010x\\n  [8, 42], [8, 42],                           \u002F\u002F 00101011x\\n  [8, 43], [8, 43],                           \u002F\u002F 00101100x\\n  [8, 44], [8, 44],                           \u002F\u002F 00101101x\\n  [7, 21], [7, 21], [7, 21], [7, 21],         \u002F\u002F 0010111xx\\n  [7, 28], [7, 28], [7, 28], [7, 28],         \u002F\u002F 0011000xx\\n  [8, 61], [8, 61],                           \u002F\u002F 00110010x\\n  [8, 62], [8, 62],                           \u002F\u002F 00110011x\\n  [8, 63], [8, 63],                           \u002F\u002F 00110100x\\n  [8, 0], [8, 0],                             \u002F\u002F 00110101x\\n  [8, 320], [8, 320],                         \u002F\u002F 00110110x\\n  [8, 384], [8, 384],                         \u002F\u002F 00110111x\\n  [5, 10], [5, 10], [5, 10], [5, 10],         \u002F\u002F 00111xxxx\\n  [5, 10], [5, 10], [5, 10], [5, 10],\\n  [5, 10], [5, 10], [5, 10], [5, 10],\\n  [5, 10], [5, 10], [5, 10], [5, 10],\\n  [5, 11], [5, 11], [5, 11], [5, 11],         \u002F\u002F 01000xxxx\\n  [5, 11], [5, 11], [5, 11], [5, 11],\\n  [5, 11], [5, 11], [5, 11], [5, 11],\\n  [5, 11], [5, 11], [5, 11], [5, 11],\\n  [7, 27], [7, 27], [7, 27], [7, 27],         \u002F\u002F 0100100xx\\n  [8, 59], [8, 59],                           \u002F\u002F 01001010x\\n  [8, 60], [8, 60],                           \u002F\u002F 01001011x\\n  [9, 1472],                                  \u002F\u002F 010011000\\n  [9, 1536],                                  \u002F\u002F 010011001\\n  [9, 1600],                                  \u002F\u002F 010011010\\n  [9, 1728],                                  \u002F\u002F 010011011\\n  [7, 18], [7, 18], [7, 18], [7, 18],         \u002F\u002F 0100111xx\\n  [7, 24], [7, 24], [7, 24], [7, 24],         \u002F\u002F 0101000xx\\n  [8, 49], [8, 49],                           \u002F\u002F 01010010x\\n  [8, 50], [8, 50],                           \u002F\u002F 01010011x\\n  [8, 51], [8, 51],                           \u002F\u002F 01010100x\\n  [8, 52], [8, 52],                           \u002F\u002F 01010101x\\n  [7, 25], [7, 25], [7, 25], [7, 25],         \u002F\u002F 0101011xx\\n  [8, 55], [8, 55],                           \u002F\u002F 01011000x\\n  [8, 56], [8, 56],                           \u002F\u002F 01011001x\\n  [8, 57], [8, 57],                           \u002F\u002F 01011010x\\n  [8, 58], [8, 58],                           \u002F\u002F 01011011x\\n  [6, 192], [6, 192], [6, 192], [6, 192],     \u002F\u002F 010111xxx\\n  [6, 192], [6, 192], [6, 192], [6, 192],\\n  [6, 1664], [6, 1664], [6, 1664], [6, 1664], \u002F\u002F 011000xxx\\n  [6, 1664], [6, 1664], [6, 1664], [6, 1664],\\n  [8, 448], [8, 448],                         \u002F\u002F 01100100x\\n  [8, 512], [8, 512],                         \u002F\u002F 01100101x\\n  [9, 704],                                   \u002F\u002F 011001100\\n  [9, 768],                                   \u002F\u002F 011001101\\n  [8, 640], [8, 640],                         \u002F\u002F 01100111x\\n  [8, 576], [8, 576],                         \u002F\u002F 01101000x\\n  [9, 832],                                   \u002F\u002F 011010010\\n  [9, 896],                                   \u002F\u002F 011010011\\n  [9, 960],                                   \u002F\u002F 011010100\\n  [9, 1024],                                  \u002F\u002F 011010101\\n  [9, 1088],                                  \u002F\u002F 011010110\\n  [9, 1152],                                  \u002F\u002F 011010111\\n  [9, 1216],                                  \u002F\u002F 011011000\\n  [9, 1280],                                  \u002F\u002F 011011001\\n  [9, 1344],                                  \u002F\u002F 011011010\\n  [9, 1408],                                  \u002F\u002F 011011011\\n  [7, 256], [7, 256], [7, 256], [7, 256],     \u002F\u002F 0110111xx\\n  [4, 2], [4, 2], [4, 2], [4, 2],             \u002F\u002F 0111xxxxx\\n  [4, 2], [4, 2], [4, 2], [4, 2],\\n  [4, 2], [4, 2], [4, 2], [4, 2],\\n  [4, 2], [4, 2], [4, 2], [4, 2],\\n  [4, 2], [4, 2], [4, 2], [4, 2],\\n  [4, 2], [4, 2], [4, 2], [4, 2],\\n  [4, 2], [4, 2], [4, 2], [4, 2],\\n  [4, 2], [4, 2], [4, 2], [4, 2],\\n  [4, 3], [4, 3], [4, 3], [4, 3],             \u002F\u002F 1000xxxxx\\n  [4, 3], [4, 3], [4, 3], [4, 3],\\n  [4, 3], [4, 3], [4, 3], [4, 3],\\n  [4, 3], [4, 3], [4, 3], [4, 3],\\n  [4, 3], [4, 3], [4, 3], [4, 3],\\n  [4, 3], [4, 3], [4, 3], [4, 3],\\n  [4, 3], [4, 3], [4, 3], [4, 3],\\n  [4, 3], [4, 3], [4, 3], [4, 3],\\n  [5, 128], [5, 128], [5, 128], [5, 128],     \u002F\u002F 10010xxxx\\n  [5, 128], [5, 128], [5, 128], [5, 128],\\n  [5, 128], [5, 128], [5, 128], [5, 128],\\n  [5, 128], [5, 128], [5, 128], [5, 128],\\n  [5, 8], [5, 8], [5, 8], [5, 8],             \u002F\u002F 10011xxxx\\n  [5, 8], [5, 8], [5, 8], [5, 8],\\n  [5, 8], [5, 8], [5, 8], [5, 8],\\n  [5, 8], [5, 8], [5, 8], [5, 8],\\n  [5, 9], [5, 9], [5, 9], [5, 9],             \u002F\u002F 10100xxxx\\n  [5, 9], [5, 9], [5, 9], [5, 9],\\n  [5, 9], [5, 9], [5, 9], [5, 9],\\n  [5, 9], [5, 9], [5, 9], [5, 9],\\n  [6, 16], [6, 16], [6, 16], [6, 16],         \u002F\u002F 101010xxx\\n  [6, 16], [6, 16], [6, 16], [6, 16],\\n  [6, 17], [6, 17], [6, 17], [6, 17],         \u002F\u002F 101011xxx\\n  [6, 17], [6, 17], [6, 17], [6, 17],\\n  [4, 4], [4, 4], [4, 4], [4, 4],             \u002F\u002F 1011xxxxx\\n  [4, 4], [4, 4], [4, 4], [4, 4],\\n  [4, 4], [4, 4], [4, 4], [4, 4],\\n  [4, 4], [4, 4], [4, 4], [4, 4],\\n  [4, 4], [4, 4], [4, 4], [4, 4],\\n  [4, 4], [4, 4], [4, 4], [4, 4],\\n  [4, 4], [4, 4], [4, 4], [4, 4],\\n  [4, 4], [4, 4], [4, 4], [4, 4],\\n  [4, 5], [4, 5], [4, 5], [4, 5],             \u002F\u002F 1100xxxxx\\n  [4, 5], [4, 5], [4, 5], [4, 5],\\n  [4, 5], [4, 5], [4, 5], [4, 5],\\n  [4, 5], [4, 5], [4, 5], [4, 5],\\n  [4, 5], [4, 5], [4, 5], [4, 5],\\n  [4, 5], [4, 5], [4, 5], [4, 5],\\n  [4, 5], [4, 5], [4, 5], [4, 5],\\n  [4, 5], [4, 5], [4, 5], [4, 5],\\n  [6, 14], [6, 14], [6, 14], [6, 14],         \u002F\u002F 110100xxx\\n  [6, 14], [6, 14], [6, 14], [6, 14],\\n  [6, 15], [6, 15], [6, 15], [6, 15],         \u002F\u002F 110101xxx\\n  [6, 15], [6, 15], [6, 15], [6, 15],\\n  [5, 64], [5, 64], [5, 64], [5, 64],         \u002F\u002F 11011xxxx\\n  [5, 64], [5, 64], [5, 64], [5, 64],\\n  [5, 64], [5, 64], [5, 64], [5, 64],\\n  [5, 64], [5, 64], [5, 64], [5, 64],\\n  [4, 6], [4, 6], [4, 6], [4, 6],             \u002F\u002F 1110xxxxx\\n  [4, 6], [4, 6], [4, 6], [4, 6],\\n  [4, 6], [4, 6], [4, 6], [4, 6],\\n  [4, 6], [4, 6], [4, 6], [4, 6],\\n  [4, 6], [4, 6], [4, 6], [4, 6],\\n  [4, 6], [4, 6], [4, 6], [4, 6],\\n  [4, 6], [4, 6], [4, 6], [4, 6],\\n  [4, 6], [4, 6], [4, 6], [4, 6],\\n  [4, 7], [4, 7], [4, 7], [4, 7],             \u002F\u002F 1111xxxxx\\n  [4, 7], [4, 7], [4, 7], [4, 7],\\n  [4, 7], [4, 7], [4, 7], [4, 7],\\n  [4, 7], [4, 7], [4, 7], [4, 7],\\n  [4, 7], [4, 7], [4, 7], [4, 7],\\n  [4, 7], [4, 7], [4, 7], [4, 7],\\n  [4, 7], [4, 7], [4, 7], [4, 7],\\n  [4, 7], [4, 7], [4, 7], [4, 7]\\n];\\n\\n\u002F\u002F prettier-ignore\\nconst blackTable1 = [\\n  [-1, -1], [-1, -1],                             \u002F\u002F 000000000000x\\n  [12, ccittEOL], [12, ccittEOL],                 \u002F\u002F 000000000001x\\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         \u002F\u002F 00000000001xx\\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         \u002F\u002F 00000000010xx\\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         \u002F\u002F 00000000011xx\\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         \u002F\u002F 00000000100xx\\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         \u002F\u002F 00000000101xx\\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         \u002F\u002F 00000000110xx\\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1],         \u002F\u002F 00000000111xx\\n  [11, 1792], [11, 1792], [11, 1792], [11, 1792], \u002F\u002F 00000001000xx\\n  [12, 1984], [12, 1984],                         \u002F\u002F 000000010010x\\n  [12, 2048], [12, 2048],                         \u002F\u002F 000000010011x\\n  [12, 2112], [12, 2112],                         \u002F\u002F 000000010100x\\n  [12, 2176], [12, 2176],                         \u002F\u002F 000000010101x\\n  [12, 2240], [12, 2240],                         \u002F\u002F 000000010110x\\n  [12, 2304], [12, 2304],                         \u002F\u002F 000000010111x\\n  [11, 1856], [11, 1856], [11, 1856], [11, 1856], \u002F\u002F 00000001100xx\\n  [11, 1920], [11, 1920], [11, 1920], [11, 1920], \u002F\u002F 00000001101xx\\n  [12, 2368], [12, 2368],                         \u002F\u002F 000000011100x\\n  [12, 2432], [12, 2432],                         \u002F\u002F 000000011101x\\n  [12, 2496], [12, 2496],                         \u002F\u002F 000000011110x\\n  [12, 2560], [12, 2560],                         \u002F\u002F 000000011111x\\n  [10, 18], [10, 18], [10, 18], [10, 18],         \u002F\u002F 0000001000xxx\\n  [10, 18], [10, 18], [10, 18], [10, 18],\\n  [12, 52], [12, 52],                             \u002F\u002F 000000100100x\\n  [13, 640],                                      \u002F\u002F 0000001001010\\n  [13, 704],                                      \u002F\u002F 0000001001011\\n  [13, 768],                                      \u002F\u002F 0000001001100\\n  [13, 832],                                      \u002F\u002F 0000001001101\\n  [12, 55], [12, 55],                             \u002F\u002F 000000100111x\\n  [12, 56], [12, 56],                             \u002F\u002F 000000101000x\\n  [13, 1280],                                     \u002F\u002F 0000001010010\\n  [13, 1344],                                     \u002F\u002F 0000001010011\\n  [13, 1408],                                     \u002F\u002F 0000001010100\\n  [13, 1472],                                     \u002F\u002F 0000001010101\\n  [12, 59], [12, 59],                             \u002F\u002F 000000101011x\\n  [12, 60], [12, 60],                             \u002F\u002F 000000101100x\\n  [13, 1536],                                     \u002F\u002F 0000001011010\\n  [13, 1600],                                     \u002F\u002F 0000001011011\\n  [11, 24], [11, 24], [11, 24], [11, 24],         \u002F\u002F 00000010111xx\\n  [11, 25], [11, 25], [11, 25], [11, 25],         \u002F\u002F 00000011000xx\\n  [13, 1664],                                     \u002F\u002F 0000001100100\\n  [13, 1728],                                     \u002F\u002F 0000001100101\\n  [12, 320], [12, 320],                           \u002F\u002F 000000110011x\\n  [12, 384], [12, 384],                           \u002F\u002F 000000110100x\\n  [12, 448], [12, 448],                           \u002F\u002F 000000110101x\\n  [13, 512],                                      \u002F\u002F 0000001101100\\n  [13, 576],                                      \u002F\u002F 0000001101101\\n  [12, 53], [12, 53],                             \u002F\u002F 000000110111x\\n  [12, 54], [12, 54],                             \u002F\u002F 000000111000x\\n  [13, 896],                                      \u002F\u002F 0000001110010\\n  [13, 960],                                      \u002F\u002F 0000001110011\\n  [13, 1024],                                     \u002F\u002F 0000001110100\\n  [13, 1088],                                     \u002F\u002F 0000001110101\\n  [13, 1152],                                     \u002F\u002F 0000001110110\\n  [13, 1216],                                     \u002F\u002F 0000001110111\\n  [10, 64], [10, 64], [10, 64], [10, 64],         \u002F\u002F 0000001111xxx\\n  [10, 64], [10, 64], [10, 64], [10, 64]\\n];\\n\\n\u002F\u002F prettier-ignore\\nconst blackTable2 = [\\n  [8, 13], [8, 13], [8, 13], [8, 13],     \u002F\u002F 00000100xxxx\\n  [8, 13], [8, 13], [8, 13], [8, 13],\\n  [8, 13], [8, 13], [8, 13], [8, 13],\\n  [8, 13], [8, 13], [8, 13], [8, 13],\\n  [11, 23], [11, 23],                     \u002F\u002F 00000101000x\\n  [12, 50],                               \u002F\u002F 000001010010\\n  [12, 51],                               \u002F\u002F 000001010011\\n  [12, 44],                               \u002F\u002F 000001010100\\n  [12, 45],                               \u002F\u002F 000001010101\\n  [12, 46],                               \u002F\u002F 000001010110\\n  [12, 47],                               \u002F\u002F 000001010111\\n  [12, 57],                               \u002F\u002F 000001011000\\n  [12, 58],                               \u002F\u002F 000001011001\\n  [12, 61],                               \u002F\u002F 000001011010\\n  [12, 256],                              \u002F\u002F 000001011011\\n  [10, 16], [10, 16], [10, 16], [10, 16], \u002F\u002F 0000010111xx\\n  [10, 17], [10, 17], [10, 17], [10, 17], \u002F\u002F 0000011000xx\\n  [12, 48],                               \u002F\u002F 000001100100\\n  [12, 49],                               \u002F\u002F 000001100101\\n  [12, 62],                               \u002F\u002F 000001100110\\n  [12, 63],                               \u002F\u002F 000001100111\\n  [12, 30],                               \u002F\u002F 000001101000\\n  [12, 31],                               \u002F\u002F 000001101001\\n  [12, 32],                               \u002F\u002F 000001101010\\n  [12, 33],                               \u002F\u002F 000001101011\\n  [12, 40],                               \u002F\u002F 000001101100\\n  [12, 41],                               \u002F\u002F 000001101101\\n  [11, 22], [11, 22],                     \u002F\u002F 00000110111x\\n  [8, 14], [8, 14], [8, 14], [8, 14],     \u002F\u002F 00000111xxxx\\n  [8, 14], [8, 14], [8, 14], [8, 14],\\n  [8, 14], [8, 14], [8, 14], [8, 14],\\n  [8, 14], [8, 14], [8, 14], [8, 14],\\n  [7, 10], [7, 10], [7, 10], [7, 10],     \u002F\u002F 0000100xxxxx\\n  [7, 10], [7, 10], [7, 10], [7, 10],\\n  [7, 10], [7, 10], [7, 10], [7, 10],\\n  [7, 10], [7, 10], [7, 10], [7, 10],\\n  [7, 10], [7, 10], [7, 10], [7, 10],\\n  [7, 10], [7, 10], [7, 10], [7, 10],\\n  [7, 10], [7, 10], [7, 10], [7, 10],\\n  [7, 10], [7, 10], [7, 10], [7, 10],\\n  [7, 11], [7, 11], [7, 11], [7, 11],     \u002F\u002F 0000101xxxxx\\n  [7, 11], [7, 11], [7, 11], [7, 11],\\n  [7, 11], [7, 11], [7, 11], [7, 11],\\n  [7, 11], [7, 11], [7, 11], [7, 11],\\n  [7, 11], [7, 11], [7, 11], [7, 11],\\n  [7, 11], [7, 11], [7, 11], [7, 11],\\n  [7, 11], [7, 11], [7, 11], [7, 11],\\n  [7, 11], [7, 11], [7, 11], [7, 11],\\n  [9, 15], [9, 15], [9, 15], [9, 15],     \u002F\u002F 000011000xxx\\n  [9, 15], [9, 15], [9, 15], [9, 15],\\n  [12, 128],                              \u002F\u002F 000011001000\\n  [12, 192],                              \u002F\u002F 000011001001\\n  [12, 26],                               \u002F\u002F 000011001010\\n  [12, 27],                               \u002F\u002F 000011001011\\n  [12, 28],                               \u002F\u002F 000011001100\\n  [12, 29],                               \u002F\u002F 000011001101\\n  [11, 19], [11, 19],                     \u002F\u002F 00001100111x\\n  [11, 20], [11, 20],                     \u002F\u002F 00001101000x\\n  [12, 34],                               \u002F\u002F 000011010010\\n  [12, 35],                               \u002F\u002F 000011010011\\n  [12, 36],                               \u002F\u002F 000011010100\\n  [12, 37],                               \u002F\u002F 000011010101\\n  [12, 38],                               \u002F\u002F 000011010110\\n  [12, 39],                               \u002F\u002F 000011010111\\n  [11, 21], [11, 21],                     \u002F\u002F 00001101100x\\n  [12, 42],                               \u002F\u002F 000011011010\\n  [12, 43],                               \u002F\u002F 000011011011\\n  [10, 0], [10, 0], [10, 0], [10, 0],     \u002F\u002F 0000110111xx\\n  [7, 12], [7, 12], [7, 12], [7, 12],     \u002F\u002F 0000111xxxxx\\n  [7, 12], [7, 12], [7, 12], [7, 12],\\n  [7, 12], [7, 12], [7, 12], [7, 12],\\n  [7, 12], [7, 12], [7, 12], [7, 12],\\n  [7, 12], [7, 12], [7, 12], [7, 12],\\n  [7, 12], [7, 12], [7, 12], [7, 12],\\n  [7, 12], [7, 12], [7, 12], [7, 12],\\n  [7, 12], [7, 12], [7, 12], [7, 12]\\n];\\n\\n\u002F\u002F prettier-ignore\\nconst blackTable3 = [\\n  [-1, -1], [-1, -1], [-1, -1], [-1, -1], \u002F\u002F 0000xx\\n  [6, 9],                                 \u002F\u002F 000100\\n  [6, 8],                                 \u002F\u002F 000101\\n  [5, 7], [5, 7],                         \u002F\u002F 00011x\\n  [4, 6], [4, 6], [4, 6], [4, 6],         \u002F\u002F 0010xx\\n  [4, 5], [4, 5], [4, 5], [4, 5],         \u002F\u002F 0011xx\\n  [3, 1], [3, 1], [3, 1], [3, 1],         \u002F\u002F 010xxx\\n  [3, 1], [3, 1], [3, 1], [3, 1],\\n  [3, 4], [3, 4], [3, 4], [3, 4],         \u002F\u002F 011xxx\\n  [3, 4], [3, 4], [3, 4], [3, 4],\\n  [2, 3], [2, 3], [2, 3], [2, 3],         \u002F\u002F 10xxxx\\n  [2, 3], [2, 3], [2, 3], [2, 3],\\n  [2, 3], [2, 3], [2, 3], [2, 3],\\n  [2, 3], [2, 3], [2, 3], [2, 3],\\n  [2, 2], [2, 2], [2, 2], [2, 2],         \u002F\u002F 11xxxx\\n  [2, 2], [2, 2], [2, 2], [2, 2],\\n  [2, 2], [2, 2], [2, 2], [2, 2],\\n  [2, 2], [2, 2], [2, 2], [2, 2]\\n];\\n\\n\u002F**\\n * @param {CCITTFaxDecoderSource} source - The data which should be decoded.\\n * @param {Object} [options] - Decoding options.\\n *\u002F\\nclass CCITTFaxDecoder {\\n  constructor(source, options = {}) {\\n    if (typeof source?.next !== \\\"function\\\") {\\n      throw new Error('CCITTFaxDecoder - invalid \\\"source\\\" parameter.');\\n    }\\n    this.source = source;\\n    this.eof = false;\\n\\n    this.encoding = options.K || 0;\\n    this.eoline = options.EndOfLine || false;\\n    this.byteAlign = options.EncodedByteAlign || false;\\n    this.columns = options.Columns || 1728;\\n    this.rows = options.Rows || 0;\\n    this.eoblock = options.EndOfBlock ?? true;\\n    this.black = options.BlackIs1 || false;\\n\\n    this.codingLine = new Uint32Array(this.columns + 1);\\n    this.refLine = new Uint32Array(this.columns + 2);\\n\\n    this.codingLine[0] = this.columns;\\n    this.codingPos = 0;\\n\\n    this.row = 0;\\n    this.nextLine2D = this.encoding \u003C 0;\\n    this.inputBits = 0;\\n    this.inputBuf = 0;\\n    this.outputBits = 0;\\n    this.rowsDone = false;\\n\\n    let code1;\\n    while ((code1 = this._lookBits(12)) === 0) {\\n      this._eatBits(1);\\n    }\\n    if (code1 === 1) {\\n      this._eatBits(12);\\n    }\\n    if (this.encoding > 0) {\\n      this.nextLine2D = !this._lookBits(1);\\n      this._eatBits(1);\\n    }\\n  }\\n\\n  readNextChar() {\\n    if (this.eof) {\\n      return -1;\\n    }\\n    const refLine = this.refLine;\\n    const codingLine = this.codingLine;\\n    const columns = this.columns;\\n\\n    let refPos, blackPixels, bits, i;\\n\\n    if (this.outputBits === 0) {\\n      if (this.rowsDone) {\\n        this.eof = true;\\n      }\\n      if (this.eof) {\\n        return -1;\\n      }\\n      this.err = false;\\n\\n      let code1, code2, code3;\\n      if (this.nextLine2D) {\\n        for (i = 0; codingLine[i] \u003C columns; ++i) {\\n          refLine[i] = codingLine[i];\\n        }\\n        refLine[i++] = columns;\\n        refLine[i] = columns;\\n        codingLine[0] = 0;\\n        this.codingPos = 0;\\n        refPos = 0;\\n        blackPixels = 0;\\n\\n        while (codingLine[this.codingPos] \u003C columns) {\\n          code1 = this._getTwoDimCode();\\n          switch (code1) {\\n            case twoDimPass:\\n              this._addPixels(refLine[refPos + 1], blackPixels);\\n              if (refLine[refPos + 1] \u003C columns) {\\n                refPos += 2;\\n              }\\n              break;\\n            case twoDimHoriz:\\n              code1 = code2 = 0;\\n              if (blackPixels) {\\n                do {\\n                  code1 += code3 = this._getBlackCode();\\n                } while (code3 >= 64);\\n                do {\\n                  code2 += code3 = this._getWhiteCode();\\n                } while (code3 >= 64);\\n              } else {\\n                do {\\n                  code1 += code3 = this._getWhiteCode();\\n                } while (code3 >= 64);\\n                do {\\n                  code2 += code3 = this._getBlackCode();\\n                } while (code3 >= 64);\\n              }\\n              this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\\n              if (codingLine[this.codingPos] \u003C columns) {\\n                this._addPixels(\\n                  codingLine[this.codingPos] + code2,\\n                  blackPixels ^ 1\\n                );\\n              }\\n              while (\\n                refLine[refPos] \u003C= codingLine[this.codingPos] &&\\n                refLine[refPos] \u003C columns\\n              ) {\\n                refPos += 2;\\n              }\\n              break;\\n            case twoDimVertR3:\\n              this._addPixels(refLine[refPos] + 3, blackPixels);\\n              blackPixels ^= 1;\\n              if (codingLine[this.codingPos] \u003C columns) {\\n                ++refPos;\\n                while (\\n                  refLine[refPos] \u003C= codingLine[this.codingPos] &&\\n                  refLine[refPos] \u003C columns\\n                ) {\\n                  refPos += 2;\\n                }\\n              }\\n              break;\\n            case twoDimVertR2:\\n              this._addPixels(refLine[refPos] + 2, blackPixels);\\n              blackPixels ^= 1;\\n              if (codingLine[this.codingPos] \u003C columns) {\\n                ++refPos;\\n                while (\\n                  refLine[refPos] \u003C= codingLine[this.codingPos] &&\\n                  refLine[refPos] \u003C columns\\n                ) {\\n                  refPos += 2;\\n                }\\n              }\\n              break;\\n            case twoDimVertR1:\\n              this._addPixels(refLine[refPos] + 1, blackPixels);\\n              blackPixels ^= 1;\\n              if (codingLine[this.codingPos] \u003C columns) {\\n                ++refPos;\\n                while (\\n                  refLine[refPos] \u003C= codingLine[this.codingPos] &&\\n                  refLine[refPos] \u003C columns\\n                ) {\\n                  refPos += 2;\\n                }\\n              }\\n              break;\\n            case twoDimVert0:\\n              this._addPixels(refLine[refPos], blackPixels);\\n              blackPixels ^= 1;\\n              if (codingLine[this.codingPos] \u003C columns) {\\n                ++refPos;\\n                while (\\n                  refLine[refPos] \u003C= codingLine[this.codingPos] &&\\n                  refLine[refPos] \u003C columns\\n                ) {\\n                  refPos += 2;\\n                }\\n              }\\n              break;\\n            case twoDimVertL3:\\n              this._addPixelsNeg(refLine[refPos] - 3, blackPixels);\\n              blackPixels ^= 1;\\n              if (codingLine[this.codingPos] \u003C columns) {\\n                if (refPos > 0) {\\n                  --refPos;\\n                } else {\\n                  ++refPos;\\n                }\\n                while (\\n                  refLine[refPos] \u003C= codingLine[this.codingPos] &&\\n                  refLine[refPos] \u003C columns\\n                ) {\\n                  refPos += 2;\\n                }\\n              }\\n              break;\\n            case twoDimVertL2:\\n              this._addPixelsNeg(refLine[refPos] - 2, blackPixels);\\n              blackPixels ^= 1;\\n              if (codingLine[this.codingPos] \u003C columns) {\\n                if (refPos > 0) {\\n                  --refPos;\\n                } else {\\n                  ++refPos;\\n                }\\n                while (\\n                  refLine[refPos] \u003C= codingLine[this.codingPos] &&\\n                  refLine[refPos] \u003C columns\\n                ) {\\n                  refPos += 2;\\n                }\\n              }\\n              break;\\n            case twoDimVertL1:\\n              this._addPixelsNeg(refLine[refPos] - 1, blackPixels);\\n              blackPixels ^= 1;\\n              if (codingLine[this.codingPos] \u003C columns) {\\n                if (refPos > 0) {\\n                  --refPos;\\n                } else {\\n                  ++refPos;\\n                }\\n                while (\\n                  refLine[refPos] \u003C= codingLine[this.codingPos] &&\\n                  refLine[refPos] \u003C columns\\n                ) {\\n                  refPos += 2;\\n                }\\n              }\\n              break;\\n            case ccittEOF:\\n              this._addPixels(columns, 0);\\n              this.eof = true;\\n              break;\\n            default:\\n              info(\\\"bad 2d code\\\");\\n              this._addPixels(columns, 0);\\n              this.err = true;\\n          }\\n        }\\n      } else {\\n        codingLine[0] = 0;\\n        this.codingPos = 0;\\n        blackPixels = 0;\\n        while (codingLine[this.codingPos] \u003C columns) {\\n          code1 = 0;\\n          if (blackPixels) {\\n            do {\\n              code1 += code3 = this._getBlackCode();\\n            } while (code3 >= 64);\\n          } else {\\n            do {\\n              code1 += code3 = this._getWhiteCode();\\n            } while (code3 >= 64);\\n          }\\n          this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\\n          blackPixels ^= 1;\\n        }\\n      }\\n\\n      let gotEOL = false;\\n\\n      if (this.byteAlign) {\\n        this.inputBits &= ~7;\\n      }\\n\\n      if (!this.eoblock && this.row === this.rows - 1) {\\n        this.rowsDone = true;\\n      } else {\\n        code1 = this._lookBits(12);\\n        if (this.eoline) {\\n          while (code1 !== ccittEOF && code1 !== 1) {\\n            this._eatBits(1);\\n            code1 = this._lookBits(12);\\n          }\\n        } else {\\n          while (code1 === 0) {\\n            this._eatBits(1);\\n            code1 = this._lookBits(12);\\n          }\\n        }\\n        if (code1 === 1) {\\n          this._eatBits(12);\\n          gotEOL = true;\\n        } else if (code1 === ccittEOF) {\\n          this.eof = true;\\n        }\\n      }\\n\\n      if (!this.eof && this.encoding > 0 && !this.rowsDone) {\\n        this.nextLine2D = !this._lookBits(1);\\n        this._eatBits(1);\\n      }\\n\\n      if (this.eoblock && gotEOL && this.byteAlign) {\\n        code1 = this._lookBits(12);\\n        if (code1 === 1) {\\n          this._eatBits(12);\\n          if (this.encoding > 0) {\\n            this._lookBits(1);\\n            this._eatBits(1);\\n          }\\n          if (this.encoding >= 0) {\\n            for (i = 0; i \u003C 4; ++i) {\\n              code1 = this._lookBits(12);\\n              if (code1 !== 1) {\\n                info(\\\"bad rtc code: \\\" + code1);\\n              }\\n              this._eatBits(12);\\n              if (this.encoding > 0) {\\n                this._lookBits(1);\\n                this._eatBits(1);\\n              }\\n            }\\n          }\\n          this.eof = true;\\n        }\\n      } else if (this.err && this.eoline) {\\n        while (true) {\\n          code1 = this._lookBits(13);\\n          if (code1 === ccittEOF) {\\n            this.eof = true;\\n            return -1;\\n          }\\n          if (code1 >> 1 === 1) {\\n            break;\\n          }\\n          this._eatBits(1);\\n        }\\n        this._eatBits(12);\\n        if (this.encoding > 0) {\\n          this._eatBits(1);\\n          this.nextLine2D = !(code1 & 1);\\n        }\\n      }\\n\\n      this.outputBits =\\n        codingLine[0] > 0\\n          ? codingLine[(this.codingPos = 0)]\\n          : codingLine[(this.codingPos = 1)];\\n      this.row++;\\n    }\\n\\n    let c;\\n    if (this.outputBits >= 8) {\\n      c = this.codingPos & 1 ? 0 : 0xff;\\n      this.outputBits -= 8;\\n      if (this.outputBits === 0 && codingLine[this.codingPos] \u003C columns) {\\n        this.codingPos++;\\n        this.outputBits =\\n          codingLine[this.codingPos] - codingLine[this.codingPos - 1];\\n      }\\n    } else {\\n      bits = 8;\\n      c = 0;\\n      do {\\n        if (typeof this.outputBits !== \\\"number\\\") {\\n          throw new FormatError(\\n            'Invalid \u002FCCITTFaxDecode data, \\\"outputBits\\\" must be a number.'\\n          );\\n        }\\n\\n        if (this.outputBits > bits) {\\n          c \u003C\u003C= bits;\\n          if (!(this.codingPos & 1)) {\\n            c |= 0xff >> (8 - bits);\\n          }\\n          this.outputBits -= bits;\\n          bits = 0;\\n        } else {\\n          c \u003C\u003C= this.outputBits;\\n          if (!(this.codingPos & 1)) {\\n            c |= 0xff >> (8 - this.outputBits);\\n          }\\n          bits -= this.outputBits;\\n          this.outputBits = 0;\\n          if (codingLine[this.codingPos] \u003C columns) {\\n            this.codingPos++;\\n            this.outputBits =\\n              codingLine[this.codingPos] - codingLine[this.codingPos - 1];\\n          } else if (bits > 0) {\\n            c \u003C\u003C= bits;\\n            bits = 0;\\n          }\\n        }\\n      } while (bits);\\n    }\\n    if (this.black) {\\n      c ^= 0xff;\\n    }\\n    return c;\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _addPixels(a1, blackPixels) {\\n    const codingLine = this.codingLine;\\n    let codingPos = this.codingPos;\\n\\n    if (a1 > codingLine[codingPos]) {\\n      if (a1 > this.columns) {\\n        info(\\\"row is wrong length\\\");\\n        this.err = true;\\n        a1 = this.columns;\\n      }\\n      if ((codingPos & 1) ^ blackPixels) {\\n        ++codingPos;\\n      }\\n\\n      codingLine[codingPos] = a1;\\n    }\\n    this.codingPos = codingPos;\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _addPixelsNeg(a1, blackPixels) {\\n    const codingLine = this.codingLine;\\n    let codingPos = this.codingPos;\\n\\n    if (a1 > codingLine[codingPos]) {\\n      if (a1 > this.columns) {\\n        info(\\\"row is wrong length\\\");\\n        this.err = true;\\n        a1 = this.columns;\\n      }\\n      if ((codingPos & 1) ^ blackPixels) {\\n        ++codingPos;\\n      }\\n\\n      codingLine[codingPos] = a1;\\n    } else if (a1 \u003C codingLine[codingPos]) {\\n      if (a1 \u003C 0) {\\n        info(\\\"invalid code\\\");\\n        this.err = true;\\n        a1 = 0;\\n      }\\n      while (codingPos > 0 && a1 \u003C codingLine[codingPos - 1]) {\\n        --codingPos;\\n      }\\n      codingLine[codingPos] = a1;\\n    }\\n\\n    this.codingPos = codingPos;\\n  }\\n\\n  \u002F**\\n   * This function returns the code found from the table.\\n   * The start and end parameters set the boundaries for searching the table.\\n   * The limit parameter is optional. Function returns an array with three\\n   * values. The first array element indicates whether a valid code is being\\n   * returned. The second array element is the actual code. The third array\\n   * element indicates whether EOF was reached.\\n   * @private\\n   *\u002F\\n  _findTableCode(start, end, table, limit) {\\n    const limitValue = limit || 0;\\n    for (let i = start; i \u003C= end; ++i) {\\n      let code = this._lookBits(i);\\n      if (code === ccittEOF) {\\n        return [true, 1, false];\\n      }\\n      if (i \u003C end) {\\n        code \u003C\u003C= end - i;\\n      }\\n      if (!limitValue || code >= limitValue) {\\n        const p = table[code - limitValue];\\n        if (p[0] === i) {\\n          this._eatBits(i);\\n          return [true, p[1], true];\\n        }\\n      }\\n    }\\n    return [false, 0, false];\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _getTwoDimCode() {\\n    let code = 0;\\n    let p;\\n    if (this.eoblock) {\\n      code = this._lookBits(7);\\n      p = twoDimTable[code];\\n      if (p?.[0] > 0) {\\n        this._eatBits(p[0]);\\n        return p[1];\\n      }\\n    } else {\\n      const result = this._findTableCode(1, 7, twoDimTable);\\n      if (result[0] && result[2]) {\\n        return result[1];\\n      }\\n    }\\n    info(\\\"Bad two dim code\\\");\\n    return ccittEOF;\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _getWhiteCode() {\\n    let code = 0;\\n    let p;\\n    if (this.eoblock) {\\n      code = this._lookBits(12);\\n      if (code === ccittEOF) {\\n        return 1;\\n      }\\n\\n      p = code >> 5 === 0 ? whiteTable1[code] : whiteTable2[code >> 3];\\n\\n      if (p[0] > 0) {\\n        this._eatBits(p[0]);\\n        return p[1];\\n      }\\n    } else {\\n      let result = this._findTableCode(1, 9, whiteTable2);\\n      if (result[0]) {\\n        return result[1];\\n      }\\n\\n      result = this._findTableCode(11, 12, whiteTable1);\\n      if (result[0]) {\\n        return result[1];\\n      }\\n    }\\n    info(\\\"bad white code\\\");\\n    this._eatBits(1);\\n    return 1;\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _getBlackCode() {\\n    let code, p;\\n    if (this.eoblock) {\\n      code = this._lookBits(13);\\n      if (code === ccittEOF) {\\n        return 1;\\n      }\\n      if (code >> 7 === 0) {\\n        p = blackTable1[code];\\n      } else if (code >> 9 === 0 && code >> 7 !== 0) {\\n        p = blackTable2[(code >> 1) - 64];\\n      } else {\\n        p = blackTable3[code >> 7];\\n      }\\n\\n      if (p[0] > 0) {\\n        this._eatBits(p[0]);\\n        return p[1];\\n      }\\n    } else {\\n      let result = this._findTableCode(2, 6, blackTable3);\\n      if (result[0]) {\\n        return result[1];\\n      }\\n\\n      result = this._findTableCode(7, 12, blackTable2, 64);\\n      if (result[0]) {\\n        return result[1];\\n      }\\n\\n      result = this._findTableCode(10, 13, blackTable1);\\n      if (result[0]) {\\n        return result[1];\\n      }\\n    }\\n    info(\\\"bad black code\\\");\\n    this._eatBits(1);\\n    return 1;\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _lookBits(n) {\\n    let c;\\n    while (this.inputBits \u003C n) {\\n      if ((c = this.source.next()) === -1) {\\n        if (this.inputBits === 0) {\\n          return ccittEOF;\\n        }\\n        return (this.inputBuf \u003C\u003C (n - this.inputBits)) & (0xffff >> (16 - n));\\n      }\\n      this.inputBuf = (this.inputBuf \u003C\u003C 8) | c;\\n      this.inputBits += 8;\\n    }\\n    return (this.inputBuf >> (this.inputBits - n)) & (0xffff >> (16 - n));\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _eatBits(n) {\\n    if ((this.inputBits -= n) \u003C 0) {\\n      this.inputBits = 0;\\n    }\\n  }\\n}\\n\\nexport { CCITTFaxDecoder };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { CCITTFaxDecoder } from \\\".\u002Fccitt.js\\\";\\nimport { DecodeStream } from \\\".\u002Fdecode_stream.js\\\";\\nimport { Dict } from \\\".\u002Fprimitives.js\\\";\\n\\nclass CCITTFaxStream extends DecodeStream {\\n  constructor(str, maybeLength, params) {\\n    super(maybeLength);\\n\\n    this.str = str;\\n    this.dict = str.dict;\\n\\n    if (!(params instanceof Dict)) {\\n      params = Dict.empty;\\n    }\\n\\n    const source = {\\n      next() {\\n        return str.getByte();\\n      },\\n    };\\n    this.ccittFaxDecoder = new CCITTFaxDecoder(source, {\\n      K: params.get(\\\"K\\\"),\\n      EndOfLine: params.get(\\\"EndOfLine\\\"),\\n      EncodedByteAlign: params.get(\\\"EncodedByteAlign\\\"),\\n      Columns: params.get(\\\"Columns\\\"),\\n      Rows: params.get(\\\"Rows\\\"),\\n      EndOfBlock: params.get(\\\"EndOfBlock\\\"),\\n      BlackIs1: params.get(\\\"BlackIs1\\\"),\\n    });\\n  }\\n\\n  readBlock() {\\n    while (!this.eof) {\\n      const c = this.ccittFaxDecoder.readNextChar();\\n      if (c === -1) {\\n        this.eof = true;\\n        return;\\n      }\\n      this.ensureBuffer(this.bufferLength + 1);\\n      this.buffer[this.bufferLength++] = c;\\n    }\\n  }\\n}\\n\\nexport { CCITTFaxStream };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\u002F* Copyright 1996-2003 Glyph & Cog, LLC\\n *\\n * The flate stream implementation contained in this file is a JavaScript port\\n * of XPDF's implementation, made available under the Apache 2.0 open source\\n * license.\\n *\u002F\\n\\nimport { FormatError, info } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { DecodeStream } from \\\".\u002Fdecode_stream.js\\\";\\nimport { Stream } from \\\".\u002Fstream.js\\\";\\n\\nconst codeLenCodeMap = new Int32Array([\\n  16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15,\\n]);\\n\\nconst lengthDecode = new Int32Array([\\n  0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a,\\n  0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f,\\n  0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073,\\n  0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102,\\n]);\\n\\nconst distDecode = new Int32Array([\\n  0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d,\\n  0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1,\\n  0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01,\\n  0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001,\\n]);\\n\\nconst fixedLitCodeTab = [\\n  new Int32Array([\\n    0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0,\\n    0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0,\\n    0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0,\\n    0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0,\\n    0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8,\\n    0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8,\\n    0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8,\\n    0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8,\\n    0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4,\\n    0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4,\\n    0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4,\\n    0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4,\\n    0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc,\\n    0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec,\\n    0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc,\\n    0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc,\\n    0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2,\\n    0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2,\\n    0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2,\\n    0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2,\\n    0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca,\\n    0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea,\\n    0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da,\\n    0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa,\\n    0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6,\\n    0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6,\\n    0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6,\\n    0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6,\\n    0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce,\\n    0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee,\\n    0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de,\\n    0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe,\\n    0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1,\\n    0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1,\\n    0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1,\\n    0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1,\\n    0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9,\\n    0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9,\\n    0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9,\\n    0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9,\\n    0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5,\\n    0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5,\\n    0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5,\\n    0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5,\\n    0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd,\\n    0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed,\\n    0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd,\\n    0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd,\\n    0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3,\\n    0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3,\\n    0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3,\\n    0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3,\\n    0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb,\\n    0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb,\\n    0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db,\\n    0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb,\\n    0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7,\\n    0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7,\\n    0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7,\\n    0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7,\\n    0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf,\\n    0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef,\\n    0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df,\\n    0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff,\\n  ]),\\n  9,\\n];\\n\\nconst fixedDistCodeTab = [\\n  new Int32Array([\\n    0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c,\\n    0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000,\\n    0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d,\\n    0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000,\\n  ]),\\n  5,\\n];\\n\\nclass FlateStream extends DecodeStream {\\n  constructor(str, maybeLength) {\\n    super(maybeLength);\\n\\n    this.str = str;\\n    this.dict = str.dict;\\n\\n    const cmf = str.getByte();\\n    const flg = str.getByte();\\n    if (cmf === -1 || flg === -1) {\\n      throw new FormatError(`Invalid header in flate stream: ${cmf}, ${flg}`);\\n    }\\n    if ((cmf & 0x0f) !== 0x08) {\\n      throw new FormatError(\\n        `Unknown compression method in flate stream: ${cmf}, ${flg}`\\n      );\\n    }\\n    if (((cmf \u003C\u003C 8) + flg) % 31 !== 0) {\\n      throw new FormatError(`Bad FCHECK in flate stream: ${cmf}, ${flg}`);\\n    }\\n    if (flg & 0x20) {\\n      throw new FormatError(`FDICT bit set in flate stream: ${cmf}, ${flg}`);\\n    }\\n\\n    this.codeSize = 0;\\n    this.codeBuf = 0;\\n  }\\n\\n  async getImageData(length, _decoderOptions) {\\n    const data = await this.asyncGetBytes();\\n    if (!data) {\\n      return this.getBytes(length);\\n    }\\n    if (data.length \u003C= length) {\\n      return data;\\n    }\\n    return data.subarray(0, length);\\n  }\\n\\n  async asyncGetBytes() {\\n    this.str.reset();\\n    const bytes = this.str.getBytes();\\n\\n    try {\\n      const { readable, writable } = new DecompressionStream(\\\"deflate\\\");\\n      const writer = writable.getWriter();\\n      await writer.ready;\\n\\n      \u002F\u002F We can't await writer.write() because it'll block until the reader\\n      \u002F\u002F starts which happens few lines below.\\n      writer\\n        .write(bytes)\\n        .then(async () => {\\n          await writer.ready;\\n          await writer.close();\\n        })\\n        .catch(() => {});\\n\\n      const chunks = [];\\n      let totalLength = 0;\\n\\n      for await (const chunk of readable) {\\n        chunks.push(chunk);\\n        totalLength += chunk.byteLength;\\n      }\\n      const data = new Uint8Array(totalLength);\\n      let offset = 0;\\n      for (const chunk of chunks) {\\n        data.set(chunk, offset);\\n        offset += chunk.byteLength;\\n      }\\n\\n      return data;\\n    } catch {\\n      \u002F\u002F DecompressionStream failed (for example because there are some extra\\n      \u002F\u002F bytes after the end of the compressed data), so we fallback to our\\n      \u002F\u002F decoder.\\n      \u002F\u002F We already get the bytes from the underlying stream, so we just reuse\\n      \u002F\u002F them to avoid get them again.\\n      this.str = new Stream(\\n        bytes,\\n        2 \u002F* = header size (see ctor) *\u002F,\\n        bytes.length,\\n        this.str.dict\\n      );\\n      this.reset();\\n      return null;\\n    }\\n  }\\n\\n  get isAsync() {\\n    return true;\\n  }\\n\\n  getBits(bits) {\\n    const str = this.str;\\n    let codeSize = this.codeSize;\\n    let codeBuf = this.codeBuf;\\n\\n    let b;\\n    while (codeSize \u003C bits) {\\n      if ((b = str.getByte()) === -1) {\\n        throw new FormatError(\\\"Bad encoding in flate stream\\\");\\n      }\\n      codeBuf |= b \u003C\u003C codeSize;\\n      codeSize += 8;\\n    }\\n    b = codeBuf & ((1 \u003C\u003C bits) - 1);\\n    this.codeBuf = codeBuf >> bits;\\n    this.codeSize = codeSize -= bits;\\n\\n    return b;\\n  }\\n\\n  getCode(table) {\\n    const str = this.str;\\n    const codes = table[0];\\n    const maxLen = table[1];\\n    let codeSize = this.codeSize;\\n    let codeBuf = this.codeBuf;\\n\\n    let b;\\n    while (codeSize \u003C maxLen) {\\n      if ((b = str.getByte()) === -1) {\\n        \u002F\u002F premature end of stream. code might however still be valid.\\n        \u002F\u002F codeSize \u003C codeLen check below guards against incomplete codeVal.\\n        break;\\n      }\\n      codeBuf |= b \u003C\u003C codeSize;\\n      codeSize += 8;\\n    }\\n    const code = codes[codeBuf & ((1 \u003C\u003C maxLen) - 1)];\\n    const codeLen = code >> 16;\\n    const codeVal = code & 0xffff;\\n    if (codeLen \u003C 1 || codeSize \u003C codeLen) {\\n      throw new FormatError(\\\"Bad encoding in flate stream\\\");\\n    }\\n    this.codeBuf = codeBuf >> codeLen;\\n    this.codeSize = codeSize - codeLen;\\n    return codeVal;\\n  }\\n\\n  generateHuffmanTable(lengths) {\\n    const n = lengths.length;\\n\\n    \u002F\u002F find max code length\\n    let maxLen = 0;\\n    let i;\\n    for (i = 0; i \u003C n; ++i) {\\n      if (lengths[i] > maxLen) {\\n        maxLen = lengths[i];\\n      }\\n    }\\n\\n    \u002F\u002F build the table\\n    const size = 1 \u003C\u003C maxLen;\\n    const codes = new Int32Array(size);\\n    for (\\n      let len = 1, code = 0, skip = 2;\\n      len \u003C= maxLen;\\n      ++len, code \u003C\u003C= 1, skip \u003C\u003C= 1\\n    ) {\\n      for (let val = 0; val \u003C n; ++val) {\\n        if (lengths[val] === len) {\\n          \u002F\u002F bit-reverse the code\\n          let code2 = 0;\\n          let t = code;\\n          for (i = 0; i \u003C len; ++i) {\\n            code2 = (code2 \u003C\u003C 1) | (t & 1);\\n            t >>= 1;\\n          }\\n\\n          \u002F\u002F fill the table entries\\n          for (i = code2; i \u003C size; i += skip) {\\n            codes[i] = (len \u003C\u003C 16) | val;\\n          }\\n          ++code;\\n        }\\n      }\\n    }\\n\\n    return [codes, maxLen];\\n  }\\n\\n  #endsStreamOnError(err) {\\n    info(err);\\n    this.eof = true;\\n  }\\n\\n  readBlock() {\\n    let buffer, hdr, len;\\n    const str = this.str;\\n    \u002F\u002F read block header\\n    try {\\n      hdr = this.getBits(3);\\n    } catch (ex) {\\n      this.#endsStreamOnError(ex.message);\\n      return;\\n    }\\n    if (hdr & 1) {\\n      this.eof = true;\\n    }\\n    hdr >>= 1;\\n\\n    if (hdr === 0) {\\n      \u002F\u002F uncompressed block\\n      let b;\\n\\n      if ((b = str.getByte()) === -1) {\\n        this.#endsStreamOnError(\\\"Bad block header in flate stream\\\");\\n        return;\\n      }\\n      let blockLen = b;\\n      if ((b = str.getByte()) === -1) {\\n        this.#endsStreamOnError(\\\"Bad block header in flate stream\\\");\\n        return;\\n      }\\n      blockLen |= b \u003C\u003C 8;\\n      if ((b = str.getByte()) === -1) {\\n        this.#endsStreamOnError(\\\"Bad block header in flate stream\\\");\\n        return;\\n      }\\n      let check = b;\\n      if ((b = str.getByte()) === -1) {\\n        this.#endsStreamOnError(\\\"Bad block header in flate stream\\\");\\n        return;\\n      }\\n      check |= b \u003C\u003C 8;\\n      if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) {\\n        \u002F\u002F Ignoring error for bad \\\"empty\\\" block (see issue 1277)\\n        throw new FormatError(\\\"Bad uncompressed block length in flate stream\\\");\\n      }\\n\\n      this.codeBuf = 0;\\n      this.codeSize = 0;\\n\\n      const bufferLength = this.bufferLength,\\n        end = bufferLength + blockLen;\\n      buffer = this.ensureBuffer(end);\\n      this.bufferLength = end;\\n\\n      if (blockLen === 0) {\\n        if (str.peekByte() === -1) {\\n          this.eof = true;\\n        }\\n      } else {\\n        const block = str.getBytes(blockLen);\\n        buffer.set(block, bufferLength);\\n        if (block.length \u003C blockLen) {\\n          this.eof = true;\\n        }\\n      }\\n      return;\\n    }\\n\\n    let litCodeTable;\\n    let distCodeTable;\\n    if (hdr === 1) {\\n      \u002F\u002F compressed block, fixed codes\\n      litCodeTable = fixedLitCodeTab;\\n      distCodeTable = fixedDistCodeTab;\\n    } else if (hdr === 2) {\\n      \u002F\u002F compressed block, dynamic codes\\n      const numLitCodes = this.getBits(5) + 257;\\n      const numDistCodes = this.getBits(5) + 1;\\n      const numCodeLenCodes = this.getBits(4) + 4;\\n\\n      \u002F\u002F build the code lengths code table\\n      const codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);\\n\\n      let i;\\n      for (i = 0; i \u003C numCodeLenCodes; ++i) {\\n        codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);\\n      }\\n      const codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);\\n\\n      \u002F\u002F build the literal and distance code tables\\n      len = 0;\\n      i = 0;\\n      const codes = numLitCodes + numDistCodes;\\n      const codeLengths = new Uint8Array(codes);\\n      let bitsLength, bitsOffset, what;\\n      while (i \u003C codes) {\\n        const code = this.getCode(codeLenCodeTab);\\n        if (code === 16) {\\n          bitsLength = 2;\\n          bitsOffset = 3;\\n          what = len;\\n        } else if (code === 17) {\\n          bitsLength = 3;\\n          bitsOffset = 3;\\n          what = len = 0;\\n        } else if (code === 18) {\\n          bitsLength = 7;\\n          bitsOffset = 11;\\n          what = len = 0;\\n        } else {\\n          codeLengths[i++] = len = code;\\n          continue;\\n        }\\n\\n        let repeatLength = this.getBits(bitsLength) + bitsOffset;\\n        while (repeatLength-- > 0) {\\n          codeLengths[i++] = what;\\n        }\\n      }\\n\\n      litCodeTable = this.generateHuffmanTable(\\n        codeLengths.subarray(0, numLitCodes)\\n      );\\n      distCodeTable = this.generateHuffmanTable(\\n        codeLengths.subarray(numLitCodes, codes)\\n      );\\n    } else {\\n      throw new FormatError(\\\"Unknown block type in flate stream\\\");\\n    }\\n\\n    buffer = this.buffer;\\n    let limit = buffer ? buffer.length : 0;\\n    let pos = this.bufferLength;\\n    while (true) {\\n      let code1 = this.getCode(litCodeTable);\\n      if (code1 \u003C 256) {\\n        if (pos + 1 >= limit) {\\n          buffer = this.ensureBuffer(pos + 1);\\n          limit = buffer.length;\\n        }\\n        buffer[pos++] = code1;\\n        continue;\\n      }\\n      if (code1 === 256) {\\n        this.bufferLength = pos;\\n        return;\\n      }\\n      code1 -= 257;\\n      code1 = lengthDecode[code1];\\n      let code2 = code1 >> 16;\\n      if (code2 > 0) {\\n        code2 = this.getBits(code2);\\n      }\\n      len = (code1 & 0xffff) + code2;\\n      code1 = this.getCode(distCodeTable);\\n      code1 = distDecode[code1];\\n      code2 = code1 >> 16;\\n      if (code2 > 0) {\\n        code2 = this.getBits(code2);\\n      }\\n      const dist = (code1 & 0xffff) + code2;\\n      if (pos + len >= limit) {\\n        buffer = this.ensureBuffer(pos + len);\\n        limit = buffer.length;\\n      }\\n      for (let k = 0; k \u003C len; ++k, ++pos) {\\n        buffer[pos] = buffer[pos - dist];\\n      }\\n    }\\n  }\\n}\\n\\nexport { FlateStream };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F Table C-2\\nconst QeTable = [\\n  { qe: 0x5601, nmps: 1, nlps: 1, switchFlag: 1 },\\n  { qe: 0x3401, nmps: 2, nlps: 6, switchFlag: 0 },\\n  { qe: 0x1801, nmps: 3, nlps: 9, switchFlag: 0 },\\n  { qe: 0x0ac1, nmps: 4, nlps: 12, switchFlag: 0 },\\n  { qe: 0x0521, nmps: 5, nlps: 29, switchFlag: 0 },\\n  { qe: 0x0221, nmps: 38, nlps: 33, switchFlag: 0 },\\n  { qe: 0x5601, nmps: 7, nlps: 6, switchFlag: 1 },\\n  { qe: 0x5401, nmps: 8, nlps: 14, switchFlag: 0 },\\n  { qe: 0x4801, nmps: 9, nlps: 14, switchFlag: 0 },\\n  { qe: 0x3801, nmps: 10, nlps: 14, switchFlag: 0 },\\n  { qe: 0x3001, nmps: 11, nlps: 17, switchFlag: 0 },\\n  { qe: 0x2401, nmps: 12, nlps: 18, switchFlag: 0 },\\n  { qe: 0x1c01, nmps: 13, nlps: 20, switchFlag: 0 },\\n  { qe: 0x1601, nmps: 29, nlps: 21, switchFlag: 0 },\\n  { qe: 0x5601, nmps: 15, nlps: 14, switchFlag: 1 },\\n  { qe: 0x5401, nmps: 16, nlps: 14, switchFlag: 0 },\\n  { qe: 0x5101, nmps: 17, nlps: 15, switchFlag: 0 },\\n  { qe: 0x4801, nmps: 18, nlps: 16, switchFlag: 0 },\\n  { qe: 0x3801, nmps: 19, nlps: 17, switchFlag: 0 },\\n  { qe: 0x3401, nmps: 20, nlps: 18, switchFlag: 0 },\\n  { qe: 0x3001, nmps: 21, nlps: 19, switchFlag: 0 },\\n  { qe: 0x2801, nmps: 22, nlps: 19, switchFlag: 0 },\\n  { qe: 0x2401, nmps: 23, nlps: 20, switchFlag: 0 },\\n  { qe: 0x2201, nmps: 24, nlps: 21, switchFlag: 0 },\\n  { qe: 0x1c01, nmps: 25, nlps: 22, switchFlag: 0 },\\n  { qe: 0x1801, nmps: 26, nlps: 23, switchFlag: 0 },\\n  { qe: 0x1601, nmps: 27, nlps: 24, switchFlag: 0 },\\n  { qe: 0x1401, nmps: 28, nlps: 25, switchFlag: 0 },\\n  { qe: 0x1201, nmps: 29, nlps: 26, switchFlag: 0 },\\n  { qe: 0x1101, nmps: 30, nlps: 27, switchFlag: 0 },\\n  { qe: 0x0ac1, nmps: 31, nlps: 28, switchFlag: 0 },\\n  { qe: 0x09c1, nmps: 32, nlps: 29, switchFlag: 0 },\\n  { qe: 0x08a1, nmps: 33, nlps: 30, switchFlag: 0 },\\n  { qe: 0x0521, nmps: 34, nlps: 31, switchFlag: 0 },\\n  { qe: 0x0441, nmps: 35, nlps: 32, switchFlag: 0 },\\n  { qe: 0x02a1, nmps: 36, nlps: 33, switchFlag: 0 },\\n  { qe: 0x0221, nmps: 37, nlps: 34, switchFlag: 0 },\\n  { qe: 0x0141, nmps: 38, nlps: 35, switchFlag: 0 },\\n  { qe: 0x0111, nmps: 39, nlps: 36, switchFlag: 0 },\\n  { qe: 0x0085, nmps: 40, nlps: 37, switchFlag: 0 },\\n  { qe: 0x0049, nmps: 41, nlps: 38, switchFlag: 0 },\\n  { qe: 0x0025, nmps: 42, nlps: 39, switchFlag: 0 },\\n  { qe: 0x0015, nmps: 43, nlps: 40, switchFlag: 0 },\\n  { qe: 0x0009, nmps: 44, nlps: 41, switchFlag: 0 },\\n  { qe: 0x0005, nmps: 45, nlps: 42, switchFlag: 0 },\\n  { qe: 0x0001, nmps: 45, nlps: 43, switchFlag: 0 },\\n  { qe: 0x5601, nmps: 46, nlps: 46, switchFlag: 0 },\\n];\\n\\n\u002F**\\n * This class implements the QM Coder decoding as defined in\\n *   JPEG 2000 Part I Final Committee Draft Version 1.0\\n *   Annex C.3 Arithmetic decoding procedure\\n * available at http:\u002F\u002Fwww.jpeg.org\u002Fpublic\u002Ffcd15444-1.pdf\\n *\\n * The arithmetic decoder is used in conjunction with context models to decode\\n * JPEG2000 and JBIG2 streams.\\n *\u002F\\nclass ArithmeticDecoder {\\n  \u002F\u002F C.3.5 Initialisation of the decoder (INITDEC)\\n  constructor(data, start, end) {\\n    this.data = data;\\n    this.bp = start;\\n    this.dataEnd = end;\\n\\n    this.chigh = data[start];\\n    this.clow = 0;\\n\\n    this.byteIn();\\n\\n    this.chigh = ((this.chigh \u003C\u003C 7) & 0xffff) | ((this.clow >> 9) & 0x7f);\\n    this.clow = (this.clow \u003C\u003C 7) & 0xffff;\\n    this.ct -= 7;\\n    this.a = 0x8000;\\n  }\\n\\n  \u002F\u002F C.3.4 Compressed data input (BYTEIN)\\n  byteIn() {\\n    const data = this.data;\\n    let bp = this.bp;\\n\\n    if (data[bp] === 0xff) {\\n      if (data[bp + 1] > 0x8f) {\\n        this.clow += 0xff00;\\n        this.ct = 8;\\n      } else {\\n        bp++;\\n        this.clow += data[bp] \u003C\u003C 9;\\n        this.ct = 7;\\n        this.bp = bp;\\n      }\\n    } else {\\n      bp++;\\n      this.clow += bp \u003C this.dataEnd ? data[bp] \u003C\u003C 8 : 0xff00;\\n      this.ct = 8;\\n      this.bp = bp;\\n    }\\n    if (this.clow > 0xffff) {\\n      this.chigh += this.clow >> 16;\\n      this.clow &= 0xffff;\\n    }\\n  }\\n\\n  \u002F\u002F C.3.2 Decoding a decision (DECODE)\\n  readBit(contexts, pos) {\\n    \u002F\u002F Contexts are packed into 1 byte:\\n    \u002F\u002F highest 7 bits carry cx.index, lowest bit carries cx.mps\\n    let cx_index = contexts[pos] >> 1,\\n      cx_mps = contexts[pos] & 1;\\n    const qeTableIcx = QeTable[cx_index];\\n    const qeIcx = qeTableIcx.qe;\\n    let d;\\n    let a = this.a - qeIcx;\\n\\n    if (this.chigh \u003C qeIcx) {\\n      \u002F\u002F exchangeLps\\n      if (a \u003C qeIcx) {\\n        a = qeIcx;\\n        d = cx_mps;\\n        cx_index = qeTableIcx.nmps;\\n      } else {\\n        a = qeIcx;\\n        d = 1 ^ cx_mps;\\n        if (qeTableIcx.switchFlag === 1) {\\n          cx_mps = d;\\n        }\\n        cx_index = qeTableIcx.nlps;\\n      }\\n    } else {\\n      this.chigh -= qeIcx;\\n      if ((a & 0x8000) !== 0) {\\n        this.a = a;\\n        return cx_mps;\\n      }\\n      \u002F\u002F exchangeMps\\n      if (a \u003C qeIcx) {\\n        d = 1 ^ cx_mps;\\n        if (qeTableIcx.switchFlag === 1) {\\n          cx_mps = d;\\n        }\\n        cx_index = qeTableIcx.nlps;\\n      } else {\\n        d = cx_mps;\\n        cx_index = qeTableIcx.nmps;\\n      }\\n    }\\n    \u002F\u002F C.3.3 renormD;\\n    do {\\n      if (this.ct === 0) {\\n        this.byteIn();\\n      }\\n\\n      a \u003C\u003C= 1;\\n      this.chigh = ((this.chigh \u003C\u003C 1) & 0xffff) | ((this.clow >> 15) & 1);\\n      this.clow = (this.clow \u003C\u003C 1) & 0xffff;\\n      this.ct--;\\n    } while ((a & 0x8000) === 0);\\n    this.a = a;\\n\\n    contexts[pos] = (cx_index \u003C\u003C 1) | cx_mps;\\n    return d;\\n  }\\n}\\n\\nexport { ArithmeticDecoder };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { BaseException, shadow } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  log2,\\n  MAX_INT_32,\\n  MIN_INT_32,\\n  readInt8,\\n  readUint16,\\n  readUint32,\\n} from \\\".\u002Fcore_utils.js\\\";\\nimport { ArithmeticDecoder } from \\\".\u002Farithmetic_decoder.js\\\";\\nimport { CCITTFaxDecoder } from \\\".\u002Fccitt.js\\\";\\n\\nclass Jbig2Error extends BaseException {\\n  constructor(msg) {\\n    super(msg, \\\"Jbig2Error\\\");\\n  }\\n}\\n\\n\u002F\u002F Utility data structures\\nclass ContextCache {\\n  getContexts(id) {\\n    if (id in this) {\\n      return this[id];\\n    }\\n    return (this[id] = new Int8Array(1 \u003C\u003C 16));\\n  }\\n}\\n\\nclass DecodingContext {\\n  constructor(data, start, end) {\\n    this.data = data;\\n    this.start = start;\\n    this.end = end;\\n  }\\n\\n  get decoder() {\\n    const decoder = new ArithmeticDecoder(this.data, this.start, this.end);\\n    return shadow(this, \\\"decoder\\\", decoder);\\n  }\\n\\n  get contextCache() {\\n    const cache = new ContextCache();\\n    return shadow(this, \\\"contextCache\\\", cache);\\n  }\\n}\\n\\n\u002F\u002F Annex A. Arithmetic Integer Decoding Procedure\\n\u002F\u002F A.2 Procedure for decoding values\\nfunction decodeInteger(contextCache, procedure, decoder) {\\n  const contexts = contextCache.getContexts(procedure);\\n  let prev = 1;\\n\\n  function readBits(length) {\\n    let v = 0;\\n    for (let i = 0; i \u003C length; i++) {\\n      const bit = decoder.readBit(contexts, prev);\\n      prev = prev \u003C 256 ? (prev \u003C\u003C 1) | bit : (((prev \u003C\u003C 1) | bit) & 511) | 256;\\n      v = (v \u003C\u003C 1) | bit;\\n    }\\n    return v >>> 0;\\n  }\\n\\n  const sign = readBits(1);\\n  \u002F\u002F prettier-ignore\\n  \u002F* eslint-disable no-nested-ternary *\u002F\\n  const value = readBits(1) ?\\n                  (readBits(1) ?\\n                    (readBits(1) ?\\n                      (readBits(1) ?\\n                        (readBits(1) ?\\n                          (readBits(32) + 4436) :\\n                        readBits(12) + 340) :\\n                      readBits(8) + 84) :\\n                    readBits(6) + 20) :\\n                  readBits(4) + 4) :\\n                readBits(2);\\n  \u002F* eslint-enable no-nested-ternary *\u002F\\n  let signedValue;\\n  if (sign === 0) {\\n    signedValue = value;\\n  } else if (value > 0) {\\n    signedValue = -value;\\n  }\\n  \u002F\u002F Ensure that the integer value doesn't underflow or overflow.\\n  if (signedValue >= MIN_INT_32 && signedValue \u003C= MAX_INT_32) {\\n    return signedValue;\\n  }\\n  return null;\\n}\\n\\n\u002F\u002F A.3 The IAID decoding procedure\\nfunction decodeIAID(contextCache, decoder, codeLength) {\\n  const contexts = contextCache.getContexts(\\\"IAID\\\");\\n\\n  let prev = 1;\\n  for (let i = 0; i \u003C codeLength; i++) {\\n    const bit = decoder.readBit(contexts, prev);\\n    prev = (prev \u003C\u003C 1) | bit;\\n  }\\n  if (codeLength \u003C 31) {\\n    return prev & ((1 \u003C\u003C codeLength) - 1);\\n  }\\n  return prev & 0x7fffffff;\\n}\\n\\n\u002F\u002F 7.3 Segment types\\nconst SegmentTypes = [\\n  \\\"SymbolDictionary\\\",\\n  null,\\n  null,\\n  null,\\n  \\\"IntermediateTextRegion\\\",\\n  null,\\n  \\\"ImmediateTextRegion\\\",\\n  \\\"ImmediateLosslessTextRegion\\\",\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  \\\"PatternDictionary\\\",\\n  null,\\n  null,\\n  null,\\n  \\\"IntermediateHalftoneRegion\\\",\\n  null,\\n  \\\"ImmediateHalftoneRegion\\\",\\n  \\\"ImmediateLosslessHalftoneRegion\\\",\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  \\\"IntermediateGenericRegion\\\",\\n  null,\\n  \\\"ImmediateGenericRegion\\\",\\n  \\\"ImmediateLosslessGenericRegion\\\",\\n  \\\"IntermediateGenericRefinementRegion\\\",\\n  null,\\n  \\\"ImmediateGenericRefinementRegion\\\",\\n  \\\"ImmediateLosslessGenericRefinementRegion\\\",\\n  null,\\n  null,\\n  null,\\n  null,\\n  \\\"PageInformation\\\",\\n  \\\"EndOfPage\\\",\\n  \\\"EndOfStripe\\\",\\n  \\\"EndOfFile\\\",\\n  \\\"Profiles\\\",\\n  \\\"Tables\\\",\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  null,\\n  \\\"Extension\\\",\\n];\\n\\nconst CodingTemplates = [\\n  [\\n    { x: -1, y: -2 },\\n    { x: 0, y: -2 },\\n    { x: 1, y: -2 },\\n    { x: -2, y: -1 },\\n    { x: -1, y: -1 },\\n    { x: 0, y: -1 },\\n    { x: 1, y: -1 },\\n    { x: 2, y: -1 },\\n    { x: -4, y: 0 },\\n    { x: -3, y: 0 },\\n    { x: -2, y: 0 },\\n    { x: -1, y: 0 },\\n  ],\\n  [\\n    { x: -1, y: -2 },\\n    { x: 0, y: -2 },\\n    { x: 1, y: -2 },\\n    { x: 2, y: -2 },\\n    { x: -2, y: -1 },\\n    { x: -1, y: -1 },\\n    { x: 0, y: -1 },\\n    { x: 1, y: -1 },\\n    { x: 2, y: -1 },\\n    { x: -3, y: 0 },\\n    { x: -2, y: 0 },\\n    { x: -1, y: 0 },\\n  ],\\n  [\\n    { x: -1, y: -2 },\\n    { x: 0, y: -2 },\\n    { x: 1, y: -2 },\\n    { x: -2, y: -1 },\\n    { x: -1, y: -1 },\\n    { x: 0, y: -1 },\\n    { x: 1, y: -1 },\\n    { x: -2, y: 0 },\\n    { x: -1, y: 0 },\\n  ],\\n  [\\n    { x: -3, y: -1 },\\n    { x: -2, y: -1 },\\n    { x: -1, y: -1 },\\n    { x: 0, y: -1 },\\n    { x: 1, y: -1 },\\n    { x: -4, y: 0 },\\n    { x: -3, y: 0 },\\n    { x: -2, y: 0 },\\n    { x: -1, y: 0 },\\n  ],\\n];\\n\\nconst RefinementTemplates = [\\n  {\\n    coding: [\\n      { x: 0, y: -1 },\\n      { x: 1, y: -1 },\\n      { x: -1, y: 0 },\\n    ],\\n    reference: [\\n      { x: 0, y: -1 },\\n      { x: 1, y: -1 },\\n      { x: -1, y: 0 },\\n      { x: 0, y: 0 },\\n      { x: 1, y: 0 },\\n      { x: -1, y: 1 },\\n      { x: 0, y: 1 },\\n      { x: 1, y: 1 },\\n    ],\\n  },\\n  {\\n    coding: [\\n      { x: -1, y: -1 },\\n      { x: 0, y: -1 },\\n      { x: 1, y: -1 },\\n      { x: -1, y: 0 },\\n    ],\\n    reference: [\\n      { x: 0, y: -1 },\\n      { x: -1, y: 0 },\\n      { x: 0, y: 0 },\\n      { x: 1, y: 0 },\\n      { x: 0, y: 1 },\\n      { x: 1, y: 1 },\\n    ],\\n  },\\n];\\n\\n\u002F\u002F See 6.2.5.7 Decoding the bitmap.\\nconst ReusedContexts = [\\n  0x9b25, \u002F\u002F 10011 0110010 0101\\n  0x0795, \u002F\u002F 0011 110010 101\\n  0x00e5, \u002F\u002F 001 11001 01\\n  0x0195, \u002F\u002F 011001 0101\\n];\\n\\nconst RefinementReusedContexts = [\\n  0x0020, \u002F\u002F '000' + '0' (coding) + '00010000' + '0' (reference)\\n  0x0008, \u002F\u002F '0000' + '001000'\\n];\\n\\nfunction decodeBitmapTemplate0(width, height, decodingContext) {\\n  const decoder = decodingContext.decoder;\\n  const contexts = decodingContext.contextCache.getContexts(\\\"GB\\\");\\n  const bitmap = [];\\n  let contextLabel, i, j, pixel, row, row1, row2;\\n\\n  \u002F\u002F ...ooooo....\\n  \u002F\u002F ..ooooooo... Context template for current pixel (X)\\n  \u002F\u002F .ooooX...... (concatenate values of 'o'-pixels to get contextLabel)\\n  const OLD_PIXEL_MASK = 0x7bf7; \u002F\u002F 01111 0111111 0111\\n\\n  for (i = 0; i \u003C height; i++) {\\n    row = bitmap[i] = new Uint8Array(width);\\n    row1 = i \u003C 1 ? row : bitmap[i - 1];\\n    row2 = i \u003C 2 ? row : bitmap[i - 2];\\n\\n    \u002F\u002F At the beginning of each row:\\n    \u002F\u002F Fill contextLabel with pixels that are above\u002Fright of (X)\\n    contextLabel =\\n      (row2[0] \u003C\u003C 13) |\\n      (row2[1] \u003C\u003C 12) |\\n      (row2[2] \u003C\u003C 11) |\\n      (row1[0] \u003C\u003C 7) |\\n      (row1[1] \u003C\u003C 6) |\\n      (row1[2] \u003C\u003C 5) |\\n      (row1[3] \u003C\u003C 4);\\n\\n    for (j = 0; j \u003C width; j++) {\\n      row[j] = pixel = decoder.readBit(contexts, contextLabel);\\n\\n      \u002F\u002F At each pixel: Clear contextLabel pixels that are shifted\\n      \u002F\u002F out of the context, then add new ones.\\n      contextLabel =\\n        ((contextLabel & OLD_PIXEL_MASK) \u003C\u003C 1) |\\n        (j + 3 \u003C width ? row2[j + 3] \u003C\u003C 11 : 0) |\\n        (j + 4 \u003C width ? row1[j + 4] \u003C\u003C 4 : 0) |\\n        pixel;\\n    }\\n  }\\n\\n  return bitmap;\\n}\\n\\n\u002F\u002F 6.2 Generic Region Decoding Procedure\\nfunction decodeBitmap(\\n  mmr,\\n  width,\\n  height,\\n  templateIndex,\\n  prediction,\\n  skip,\\n  at,\\n  decodingContext\\n) {\\n  if (mmr) {\\n    const input = new Reader(\\n      decodingContext.data,\\n      decodingContext.start,\\n      decodingContext.end\\n    );\\n    return decodeMMRBitmap(input, width, height, false);\\n  }\\n\\n  \u002F\u002F Use optimized version for the most common case\\n  if (\\n    templateIndex === 0 &&\\n    !skip &&\\n    !prediction &&\\n    at.length === 4 &&\\n    at[0].x === 3 &&\\n    at[0].y === -1 &&\\n    at[1].x === -3 &&\\n    at[1].y === -1 &&\\n    at[2].x === 2 &&\\n    at[2].y === -2 &&\\n    at[3].x === -2 &&\\n    at[3].y === -2\\n  ) {\\n    return decodeBitmapTemplate0(width, height, decodingContext);\\n  }\\n\\n  const useskip = !!skip;\\n  const template = CodingTemplates[templateIndex].concat(at);\\n\\n  \u002F\u002F Sorting is non-standard, and it is not required. But sorting increases\\n  \u002F\u002F the number of template bits that can be reused from the previous\\n  \u002F\u002F contextLabel in the main loop.\\n  template.sort((a, b) => a.y - b.y || a.x - b.x);\\n\\n  const templateLength = template.length;\\n  const templateX = new Int8Array(templateLength);\\n  const templateY = new Int8Array(templateLength);\\n  const changingTemplateEntries = [];\\n  let reuseMask = 0,\\n    minX = 0,\\n    maxX = 0,\\n    minY = 0;\\n  let c, k;\\n\\n  for (k = 0; k \u003C templateLength; k++) {\\n    templateX[k] = template[k].x;\\n    templateY[k] = template[k].y;\\n    minX = Math.min(minX, template[k].x);\\n    maxX = Math.max(maxX, template[k].x);\\n    minY = Math.min(minY, template[k].y);\\n    \u002F\u002F Check if the template pixel appears in two consecutive context labels,\\n    \u002F\u002F so it can be reused. Otherwise, we add it to the list of changing\\n    \u002F\u002F template entries.\\n    if (\\n      k \u003C templateLength - 1 &&\\n      template[k].y === template[k + 1].y &&\\n      template[k].x === template[k + 1].x - 1\\n    ) {\\n      reuseMask |= 1 \u003C\u003C (templateLength - 1 - k);\\n    } else {\\n      changingTemplateEntries.push(k);\\n    }\\n  }\\n  const changingEntriesLength = changingTemplateEntries.length;\\n\\n  const changingTemplateX = new Int8Array(changingEntriesLength);\\n  const changingTemplateY = new Int8Array(changingEntriesLength);\\n  const changingTemplateBit = new Uint16Array(changingEntriesLength);\\n  for (c = 0; c \u003C changingEntriesLength; c++) {\\n    k = changingTemplateEntries[c];\\n    changingTemplateX[c] = template[k].x;\\n    changingTemplateY[c] = template[k].y;\\n    changingTemplateBit[c] = 1 \u003C\u003C (templateLength - 1 - k);\\n  }\\n\\n  \u002F\u002F Get the safe bounding box edges from the width, height, minX, maxX, minY\\n  const sbb_left = -minX;\\n  const sbb_top = -minY;\\n  const sbb_right = width - maxX;\\n\\n  const pseudoPixelContext = ReusedContexts[templateIndex];\\n  let row = new Uint8Array(width);\\n  const bitmap = [];\\n\\n  const decoder = decodingContext.decoder;\\n  const contexts = decodingContext.contextCache.getContexts(\\\"GB\\\");\\n\\n  let ltp = 0,\\n    j,\\n    i0,\\n    j0,\\n    contextLabel = 0,\\n    bit,\\n    shift;\\n  for (let i = 0; i \u003C height; i++) {\\n    if (prediction) {\\n      const sltp = decoder.readBit(contexts, pseudoPixelContext);\\n      ltp ^= sltp;\\n      if (ltp) {\\n        bitmap.push(row); \u002F\u002F duplicate previous row\\n        continue;\\n      }\\n    }\\n    row = new Uint8Array(row);\\n    bitmap.push(row);\\n    for (j = 0; j \u003C width; j++) {\\n      if (useskip && skip[i][j]) {\\n        row[j] = 0;\\n        continue;\\n      }\\n      \u002F\u002F Are we in the middle of a scanline, so we can reuse contextLabel\\n      \u002F\u002F bits?\\n      if (j >= sbb_left && j \u003C sbb_right && i >= sbb_top) {\\n        \u002F\u002F If yes, we can just shift the bits that are reusable and only\\n        \u002F\u002F fetch the remaining ones.\\n        contextLabel = (contextLabel \u003C\u003C 1) & reuseMask;\\n        for (k = 0; k \u003C changingEntriesLength; k++) {\\n          i0 = i + changingTemplateY[k];\\n          j0 = j + changingTemplateX[k];\\n          bit = bitmap[i0][j0];\\n          if (bit) {\\n            bit = changingTemplateBit[k];\\n            contextLabel |= bit;\\n          }\\n        }\\n      } else {\\n        \u002F\u002F compute the contextLabel from scratch\\n        contextLabel = 0;\\n        shift = templateLength - 1;\\n        for (k = 0; k \u003C templateLength; k++, shift--) {\\n          j0 = j + templateX[k];\\n          if (j0 >= 0 && j0 \u003C width) {\\n            i0 = i + templateY[k];\\n            if (i0 >= 0) {\\n              bit = bitmap[i0][j0];\\n              if (bit) {\\n                contextLabel |= bit \u003C\u003C shift;\\n              }\\n            }\\n          }\\n        }\\n      }\\n      const pixel = decoder.readBit(contexts, contextLabel);\\n      row[j] = pixel;\\n    }\\n  }\\n  return bitmap;\\n}\\n\\n\u002F\u002F 6.3.2 Generic Refinement Region Decoding Procedure\\nfunction decodeRefinement(\\n  width,\\n  height,\\n  templateIndex,\\n  referenceBitmap,\\n  offsetX,\\n  offsetY,\\n  prediction,\\n  at,\\n  decodingContext\\n) {\\n  let codingTemplate = RefinementTemplates[templateIndex].coding;\\n  if (templateIndex === 0) {\\n    codingTemplate = codingTemplate.concat([at[0]]);\\n  }\\n  const codingTemplateLength = codingTemplate.length;\\n  const codingTemplateX = new Int32Array(codingTemplateLength);\\n  const codingTemplateY = new Int32Array(codingTemplateLength);\\n  let k;\\n  for (k = 0; k \u003C codingTemplateLength; k++) {\\n    codingTemplateX[k] = codingTemplate[k].x;\\n    codingTemplateY[k] = codingTemplate[k].y;\\n  }\\n\\n  let referenceTemplate = RefinementTemplates[templateIndex].reference;\\n  if (templateIndex === 0) {\\n    referenceTemplate = referenceTemplate.concat([at[1]]);\\n  }\\n  const referenceTemplateLength = referenceTemplate.length;\\n  const referenceTemplateX = new Int32Array(referenceTemplateLength);\\n  const referenceTemplateY = new Int32Array(referenceTemplateLength);\\n  for (k = 0; k \u003C referenceTemplateLength; k++) {\\n    referenceTemplateX[k] = referenceTemplate[k].x;\\n    referenceTemplateY[k] = referenceTemplate[k].y;\\n  }\\n  const referenceWidth = referenceBitmap[0].length;\\n  const referenceHeight = referenceBitmap.length;\\n\\n  const pseudoPixelContext = RefinementReusedContexts[templateIndex];\\n  const bitmap = [];\\n\\n  const decoder = decodingContext.decoder;\\n  const contexts = decodingContext.contextCache.getContexts(\\\"GR\\\");\\n\\n  let ltp = 0;\\n  for (let i = 0; i \u003C height; i++) {\\n    if (prediction) {\\n      const sltp = decoder.readBit(contexts, pseudoPixelContext);\\n      ltp ^= sltp;\\n      if (ltp) {\\n        throw new Jbig2Error(\\\"prediction is not supported\\\");\\n      }\\n    }\\n    const row = new Uint8Array(width);\\n    bitmap.push(row);\\n    for (let j = 0; j \u003C width; j++) {\\n      let i0, j0;\\n      let contextLabel = 0;\\n      for (k = 0; k \u003C codingTemplateLength; k++) {\\n        i0 = i + codingTemplateY[k];\\n        j0 = j + codingTemplateX[k];\\n        if (i0 \u003C 0 || j0 \u003C 0 || j0 >= width) {\\n          contextLabel \u003C\u003C= 1; \u002F\u002F out of bound pixel\\n        } else {\\n          contextLabel = (contextLabel \u003C\u003C 1) | bitmap[i0][j0];\\n        }\\n      }\\n      for (k = 0; k \u003C referenceTemplateLength; k++) {\\n        i0 = i + referenceTemplateY[k] - offsetY;\\n        j0 = j + referenceTemplateX[k] - offsetX;\\n        if (i0 \u003C 0 || i0 >= referenceHeight || j0 \u003C 0 || j0 >= referenceWidth) {\\n          contextLabel \u003C\u003C= 1; \u002F\u002F out of bound pixel\\n        } else {\\n          contextLabel = (contextLabel \u003C\u003C 1) | referenceBitmap[i0][j0];\\n        }\\n      }\\n      const pixel = decoder.readBit(contexts, contextLabel);\\n      row[j] = pixel;\\n    }\\n  }\\n\\n  return bitmap;\\n}\\n\\n\u002F\u002F 6.5.5 Decoding the symbol dictionary\\nfunction decodeSymbolDictionary(\\n  huffman,\\n  refinement,\\n  symbols,\\n  numberOfNewSymbols,\\n  numberOfExportedSymbols,\\n  huffmanTables,\\n  templateIndex,\\n  at,\\n  refinementTemplateIndex,\\n  refinementAt,\\n  decodingContext,\\n  huffmanInput\\n) {\\n  if (huffman && refinement) {\\n    throw new Jbig2Error(\\\"symbol refinement with Huffman is not supported\\\");\\n  }\\n\\n  const newSymbols = [];\\n  let currentHeight = 0;\\n  let symbolCodeLength = log2(symbols.length + numberOfNewSymbols);\\n\\n  const decoder = decodingContext.decoder;\\n  const contextCache = decodingContext.contextCache;\\n  let tableB1, symbolWidths;\\n  if (huffman) {\\n    tableB1 = getStandardTable(1); \u002F\u002F standard table B.1\\n    symbolWidths = [];\\n    symbolCodeLength = Math.max(symbolCodeLength, 1); \u002F\u002F 6.5.8.2.3\\n  }\\n\\n  while (newSymbols.length \u003C numberOfNewSymbols) {\\n    const deltaHeight = huffman\\n      ? huffmanTables.tableDeltaHeight.decode(huffmanInput)\\n      : decodeInteger(contextCache, \\\"IADH\\\", decoder); \u002F\u002F 6.5.6\\n    currentHeight += deltaHeight;\\n    let currentWidth = 0,\\n      totalWidth = 0;\\n    const firstSymbol = huffman ? symbolWidths.length : 0;\\n    while (true) {\\n      const deltaWidth = huffman\\n        ? huffmanTables.tableDeltaWidth.decode(huffmanInput)\\n        : decodeInteger(contextCache, \\\"IADW\\\", decoder); \u002F\u002F 6.5.7\\n      if (deltaWidth === null) {\\n        break; \u002F\u002F OOB\\n      }\\n      currentWidth += deltaWidth;\\n      totalWidth += currentWidth;\\n      let bitmap;\\n      if (refinement) {\\n        \u002F\u002F 6.5.8.2 Refinement\u002Faggregate-coded symbol bitmap\\n        const numberOfInstances = decodeInteger(contextCache, \\\"IAAI\\\", decoder);\\n        if (numberOfInstances > 1) {\\n          bitmap = decodeTextRegion(\\n            huffman,\\n            refinement,\\n            currentWidth,\\n            currentHeight,\\n            0,\\n            numberOfInstances,\\n            1, \u002F\u002F strip size\\n            symbols.concat(newSymbols),\\n            symbolCodeLength,\\n            0, \u002F\u002F transposed\\n            0, \u002F\u002F ds offset\\n            1, \u002F\u002F top left 7.4.3.1.1\\n            0, \u002F\u002F OR operator\\n            huffmanTables,\\n            refinementTemplateIndex,\\n            refinementAt,\\n            decodingContext,\\n            0,\\n            huffmanInput\\n          );\\n        } else {\\n          const symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);\\n          const rdx = decodeInteger(contextCache, \\\"IARDX\\\", decoder); \u002F\u002F 6.4.11.3\\n          const rdy = decodeInteger(contextCache, \\\"IARDY\\\", decoder); \u002F\u002F 6.4.11.4\\n          const symbol =\\n            symbolId \u003C symbols.length\\n              ? symbols[symbolId]\\n              : newSymbols[symbolId - symbols.length];\\n          bitmap = decodeRefinement(\\n            currentWidth,\\n            currentHeight,\\n            refinementTemplateIndex,\\n            symbol,\\n            rdx,\\n            rdy,\\n            false,\\n            refinementAt,\\n            decodingContext\\n          );\\n        }\\n        newSymbols.push(bitmap);\\n      } else if (huffman) {\\n        \u002F\u002F Store only symbol width and decode a collective bitmap when the\\n        \u002F\u002F height class is done.\\n        symbolWidths.push(currentWidth);\\n      } else {\\n        \u002F\u002F 6.5.8.1 Direct-coded symbol bitmap\\n        bitmap = decodeBitmap(\\n          false,\\n          currentWidth,\\n          currentHeight,\\n          templateIndex,\\n          false,\\n          null,\\n          at,\\n          decodingContext\\n        );\\n        newSymbols.push(bitmap);\\n      }\\n    }\\n    if (huffman && !refinement) {\\n      \u002F\u002F 6.5.9 Height class collective bitmap\\n      const bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput);\\n      huffmanInput.byteAlign();\\n      let collectiveBitmap;\\n      if (bitmapSize === 0) {\\n        \u002F\u002F Uncompressed collective bitmap\\n        collectiveBitmap = readUncompressedBitmap(\\n          huffmanInput,\\n          totalWidth,\\n          currentHeight\\n        );\\n      } else {\\n        \u002F\u002F MMR collective bitmap\\n        const originalEnd = huffmanInput.end;\\n        const bitmapEnd = huffmanInput.position + bitmapSize;\\n        huffmanInput.end = bitmapEnd;\\n        collectiveBitmap = decodeMMRBitmap(\\n          huffmanInput,\\n          totalWidth,\\n          currentHeight,\\n          false\\n        );\\n        huffmanInput.end = originalEnd;\\n        huffmanInput.position = bitmapEnd;\\n      }\\n      const numberOfSymbolsDecoded = symbolWidths.length;\\n      if (firstSymbol === numberOfSymbolsDecoded - 1) {\\n        \u002F\u002F collectiveBitmap is a single symbol.\\n        newSymbols.push(collectiveBitmap);\\n      } else {\\n        \u002F\u002F Divide collectiveBitmap into symbols.\\n        let i,\\n          y,\\n          xMin = 0,\\n          xMax,\\n          bitmapWidth,\\n          symbolBitmap;\\n        for (i = firstSymbol; i \u003C numberOfSymbolsDecoded; i++) {\\n          bitmapWidth = symbolWidths[i];\\n          xMax = xMin + bitmapWidth;\\n          symbolBitmap = [];\\n          for (y = 0; y \u003C currentHeight; y++) {\\n            symbolBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\\n          }\\n          newSymbols.push(symbolBitmap);\\n          xMin = xMax;\\n        }\\n      }\\n    }\\n  }\\n\\n  \u002F\u002F 6.5.10 Exported symbols\\n  const exportedSymbols = [],\\n    flags = [];\\n  let currentFlag = false,\\n    i,\\n    ii;\\n  const totalSymbolsLength = symbols.length + numberOfNewSymbols;\\n  while (flags.length \u003C totalSymbolsLength) {\\n    let runLength = huffman\\n      ? tableB1.decode(huffmanInput)\\n      : decodeInteger(contextCache, \\\"IAEX\\\", decoder);\\n    while (runLength--) {\\n      flags.push(currentFlag);\\n    }\\n    currentFlag = !currentFlag;\\n  }\\n  for (i = 0, ii = symbols.length; i \u003C ii; i++) {\\n    if (flags[i]) {\\n      exportedSymbols.push(symbols[i]);\\n    }\\n  }\\n  for (let j = 0; j \u003C numberOfNewSymbols; i++, j++) {\\n    if (flags[i]) {\\n      exportedSymbols.push(newSymbols[j]);\\n    }\\n  }\\n  return exportedSymbols;\\n}\\n\\nfunction decodeTextRegion(\\n  huffman,\\n  refinement,\\n  width,\\n  height,\\n  defaultPixelValue,\\n  numberOfSymbolInstances,\\n  stripSize,\\n  inputSymbols,\\n  symbolCodeLength,\\n  transposed,\\n  dsOffset,\\n  referenceCorner,\\n  combinationOperator,\\n  huffmanTables,\\n  refinementTemplateIndex,\\n  refinementAt,\\n  decodingContext,\\n  logStripSize,\\n  huffmanInput\\n) {\\n  if (huffman && refinement) {\\n    throw new Jbig2Error(\\\"refinement with Huffman is not supported\\\");\\n  }\\n\\n  \u002F\u002F Prepare bitmap\\n  const bitmap = [];\\n  let i, row;\\n  for (i = 0; i \u003C height; i++) {\\n    row = new Uint8Array(width);\\n    if (defaultPixelValue) {\\n      row.fill(defaultPixelValue);\\n    }\\n    bitmap.push(row);\\n  }\\n\\n  const decoder = decodingContext.decoder;\\n  const contextCache = decodingContext.contextCache;\\n\\n  let stripT = huffman\\n    ? -huffmanTables.tableDeltaT.decode(huffmanInput)\\n    : -decodeInteger(contextCache, \\\"IADT\\\", decoder); \u002F\u002F 6.4.6\\n  let firstS = 0;\\n  i = 0;\\n  while (i \u003C numberOfSymbolInstances) {\\n    const deltaT = huffman\\n      ? huffmanTables.tableDeltaT.decode(huffmanInput)\\n      : decodeInteger(contextCache, \\\"IADT\\\", decoder); \u002F\u002F 6.4.6\\n    stripT += deltaT;\\n\\n    const deltaFirstS = huffman\\n      ? huffmanTables.tableFirstS.decode(huffmanInput)\\n      : decodeInteger(contextCache, \\\"IAFS\\\", decoder); \u002F\u002F 6.4.7\\n    firstS += deltaFirstS;\\n    let currentS = firstS;\\n    do {\\n      let currentT = 0; \u002F\u002F 6.4.9\\n      if (stripSize > 1) {\\n        currentT = huffman\\n          ? huffmanInput.readBits(logStripSize)\\n          : decodeInteger(contextCache, \\\"IAIT\\\", decoder);\\n      }\\n      const t = stripSize * stripT + currentT;\\n      const symbolId = huffman\\n        ? huffmanTables.symbolIDTable.decode(huffmanInput)\\n        : decodeIAID(contextCache, decoder, symbolCodeLength);\\n      const applyRefinement =\\n        refinement &&\\n        (huffman\\n          ? huffmanInput.readBit()\\n          : decodeInteger(contextCache, \\\"IARI\\\", decoder));\\n      let symbolBitmap = inputSymbols[symbolId];\\n      let symbolWidth = symbolBitmap[0].length;\\n      let symbolHeight = symbolBitmap.length;\\n      if (applyRefinement) {\\n        const rdw = decodeInteger(contextCache, \\\"IARDW\\\", decoder); \u002F\u002F 6.4.11.1\\n        const rdh = decodeInteger(contextCache, \\\"IARDH\\\", decoder); \u002F\u002F 6.4.11.2\\n        const rdx = decodeInteger(contextCache, \\\"IARDX\\\", decoder); \u002F\u002F 6.4.11.3\\n        const rdy = decodeInteger(contextCache, \\\"IARDY\\\", decoder); \u002F\u002F 6.4.11.4\\n        symbolWidth += rdw;\\n        symbolHeight += rdh;\\n        symbolBitmap = decodeRefinement(\\n          symbolWidth,\\n          symbolHeight,\\n          refinementTemplateIndex,\\n          symbolBitmap,\\n          (rdw >> 1) + rdx,\\n          (rdh >> 1) + rdy,\\n          false,\\n          refinementAt,\\n          decodingContext\\n        );\\n      }\\n\\n      let increment = 0;\\n      if (!transposed) {\\n        if (referenceCorner > 1) {\\n          currentS += symbolWidth - 1;\\n        } else {\\n          increment = symbolWidth - 1;\\n        }\\n      } else if (!(referenceCorner & 1)) {\\n        currentS += symbolHeight - 1;\\n      } else {\\n        increment = symbolHeight - 1;\\n      }\\n\\n      const offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1);\\n      const offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0);\\n      let s2, t2, symbolRow;\\n      if (transposed) {\\n        \u002F\u002F Place Symbol Bitmap from T1,S1\\n        for (s2 = 0; s2 \u003C symbolHeight; s2++) {\\n          row = bitmap[offsetS + s2];\\n          if (!row) {\\n            continue;\\n          }\\n          symbolRow = symbolBitmap[s2];\\n          \u002F\u002F To ignore Parts of Symbol bitmap which goes\\n          \u002F\u002F outside bitmap region\\n          const maxWidth = Math.min(width - offsetT, symbolWidth);\\n          switch (combinationOperator) {\\n            case 0: \u002F\u002F OR\\n              for (t2 = 0; t2 \u003C maxWidth; t2++) {\\n                row[offsetT + t2] |= symbolRow[t2];\\n              }\\n              break;\\n            case 2: \u002F\u002F XOR\\n              for (t2 = 0; t2 \u003C maxWidth; t2++) {\\n                row[offsetT + t2] ^= symbolRow[t2];\\n              }\\n              break;\\n            default:\\n              throw new Jbig2Error(\\n                `operator ${combinationOperator} is not supported`\\n              );\\n          }\\n        }\\n      } else {\\n        for (t2 = 0; t2 \u003C symbolHeight; t2++) {\\n          row = bitmap[offsetT + t2];\\n          if (!row) {\\n            continue;\\n          }\\n          symbolRow = symbolBitmap[t2];\\n          switch (combinationOperator) {\\n            case 0: \u002F\u002F OR\\n              for (s2 = 0; s2 \u003C symbolWidth; s2++) {\\n                row[offsetS + s2] |= symbolRow[s2];\\n              }\\n              break;\\n            case 2: \u002F\u002F XOR\\n              for (s2 = 0; s2 \u003C symbolWidth; s2++) {\\n                row[offsetS + s2] ^= symbolRow[s2];\\n              }\\n              break;\\n            default:\\n              throw new Jbig2Error(\\n                `operator ${combinationOperator} is not supported`\\n              );\\n          }\\n        }\\n      }\\n      i++;\\n      const deltaS = huffman\\n        ? huffmanTables.tableDeltaS.decode(huffmanInput)\\n        : decodeInteger(contextCache, \\\"IADS\\\", decoder); \u002F\u002F 6.4.8\\n      if (deltaS === null) {\\n        break; \u002F\u002F OOB\\n      }\\n      currentS += increment + deltaS + dsOffset;\\n    } while (true);\\n  }\\n  return bitmap;\\n}\\n\\nfunction decodePatternDictionary(\\n  mmr,\\n  patternWidth,\\n  patternHeight,\\n  maxPatternIndex,\\n  template,\\n  decodingContext\\n) {\\n  const at = [];\\n  if (!mmr) {\\n    at.push({\\n      x: -patternWidth,\\n      y: 0,\\n    });\\n    if (template === 0) {\\n      at.push(\\n        {\\n          x: -3,\\n          y: -1,\\n        },\\n        {\\n          x: 2,\\n          y: -2,\\n        },\\n        {\\n          x: -2,\\n          y: -2,\\n        }\\n      );\\n    }\\n  }\\n  const collectiveWidth = (maxPatternIndex + 1) * patternWidth;\\n  const collectiveBitmap = decodeBitmap(\\n    mmr,\\n    collectiveWidth,\\n    patternHeight,\\n    template,\\n    false,\\n    null,\\n    at,\\n    decodingContext\\n  );\\n  \u002F\u002F Divide collective bitmap into patterns.\\n  const patterns = [];\\n  for (let i = 0; i \u003C= maxPatternIndex; i++) {\\n    const patternBitmap = [];\\n    const xMin = patternWidth * i;\\n    const xMax = xMin + patternWidth;\\n    for (let y = 0; y \u003C patternHeight; y++) {\\n      patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\\n    }\\n    patterns.push(patternBitmap);\\n  }\\n  return patterns;\\n}\\n\\nfunction decodeHalftoneRegion(\\n  mmr,\\n  patterns,\\n  template,\\n  regionWidth,\\n  regionHeight,\\n  defaultPixelValue,\\n  enableSkip,\\n  combinationOperator,\\n  gridWidth,\\n  gridHeight,\\n  gridOffsetX,\\n  gridOffsetY,\\n  gridVectorX,\\n  gridVectorY,\\n  decodingContext\\n) {\\n  const skip = null;\\n  if (enableSkip) {\\n    throw new Jbig2Error(\\\"skip is not supported\\\");\\n  }\\n  if (combinationOperator !== 0) {\\n    throw new Jbig2Error(\\n      `operator \\\"${combinationOperator}\\\" is not supported in halftone region`\\n    );\\n  }\\n\\n  \u002F\u002F Prepare bitmap.\\n  const regionBitmap = [];\\n  let i, j, row;\\n  for (i = 0; i \u003C regionHeight; i++) {\\n    row = new Uint8Array(regionWidth);\\n    if (defaultPixelValue) {\\n      row.fill(defaultPixelValue);\\n    }\\n    regionBitmap.push(row);\\n  }\\n\\n  const numberOfPatterns = patterns.length;\\n  const pattern0 = patterns[0];\\n  const patternWidth = pattern0[0].length,\\n    patternHeight = pattern0.length;\\n  const bitsPerValue = log2(numberOfPatterns);\\n  const at = [];\\n  if (!mmr) {\\n    at.push({\\n      x: template \u003C= 1 ? 3 : 2,\\n      y: -1,\\n    });\\n    if (template === 0) {\\n      at.push(\\n        {\\n          x: -3,\\n          y: -1,\\n        },\\n        {\\n          x: 2,\\n          y: -2,\\n        },\\n        {\\n          x: -2,\\n          y: -2,\\n        }\\n      );\\n    }\\n  }\\n  \u002F\u002F Annex C. Gray-scale Image Decoding Procedure.\\n  const grayScaleBitPlanes = [];\\n  let mmrInput, bitmap;\\n  if (mmr) {\\n    \u002F\u002F MMR bit planes are in one continuous stream. Only EOFB codes indicate\\n    \u002F\u002F the end of each bitmap, so EOFBs must be decoded.\\n    mmrInput = new Reader(\\n      decodingContext.data,\\n      decodingContext.start,\\n      decodingContext.end\\n    );\\n  }\\n  for (i = bitsPerValue - 1; i >= 0; i--) {\\n    if (mmr) {\\n      bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true);\\n    } else {\\n      bitmap = decodeBitmap(\\n        false,\\n        gridWidth,\\n        gridHeight,\\n        template,\\n        false,\\n        skip,\\n        at,\\n        decodingContext\\n      );\\n    }\\n    grayScaleBitPlanes[i] = bitmap;\\n  }\\n  \u002F\u002F 6.6.5.2 Rendering the patterns.\\n  let mg, ng, bit, patternIndex, patternBitmap, x, y, patternRow, regionRow;\\n  for (mg = 0; mg \u003C gridHeight; mg++) {\\n    for (ng = 0; ng \u003C gridWidth; ng++) {\\n      bit = 0;\\n      patternIndex = 0;\\n      for (j = bitsPerValue - 1; j >= 0; j--) {\\n        bit ^= grayScaleBitPlanes[j][mg][ng]; \u002F\u002F Gray decoding\\n        patternIndex |= bit \u003C\u003C j;\\n      }\\n      patternBitmap = patterns[patternIndex];\\n      x = (gridOffsetX + mg * gridVectorY + ng * gridVectorX) >> 8;\\n      y = (gridOffsetY + mg * gridVectorX - ng * gridVectorY) >> 8;\\n      \u002F\u002F Draw patternBitmap at (x, y).\\n      if (\\n        x >= 0 &&\\n        x + patternWidth \u003C= regionWidth &&\\n        y >= 0 &&\\n        y + patternHeight \u003C= regionHeight\\n      ) {\\n        for (i = 0; i \u003C patternHeight; i++) {\\n          regionRow = regionBitmap[y + i];\\n          patternRow = patternBitmap[i];\\n          for (j = 0; j \u003C patternWidth; j++) {\\n            regionRow[x + j] |= patternRow[j];\\n          }\\n        }\\n      } else {\\n        let regionX, regionY;\\n        for (i = 0; i \u003C patternHeight; i++) {\\n          regionY = y + i;\\n          if (regionY \u003C 0 || regionY >= regionHeight) {\\n            continue;\\n          }\\n          regionRow = regionBitmap[regionY];\\n          patternRow = patternBitmap[i];\\n          for (j = 0; j \u003C patternWidth; j++) {\\n            regionX = x + j;\\n            if (regionX >= 0 && regionX \u003C regionWidth) {\\n              regionRow[regionX] |= patternRow[j];\\n            }\\n          }\\n        }\\n      }\\n    }\\n  }\\n  return regionBitmap;\\n}\\n\\nfunction readSegmentHeader(data, start) {\\n  const segmentHeader = {};\\n  segmentHeader.number = readUint32(data, start);\\n  const flags = data[start + 4];\\n  const segmentType = flags & 0x3f;\\n  if (!SegmentTypes[segmentType]) {\\n    throw new Jbig2Error(\\\"invalid segment type: \\\" + segmentType);\\n  }\\n  segmentHeader.type = segmentType;\\n  segmentHeader.typeName = SegmentTypes[segmentType];\\n  segmentHeader.deferredNonRetain = !!(flags & 0x80);\\n\\n  const pageAssociationFieldSize = !!(flags & 0x40);\\n  const referredFlags = data[start + 5];\\n  let referredToCount = (referredFlags >> 5) & 7;\\n  const retainBits = [referredFlags & 31];\\n  let position = start + 6;\\n  if (referredFlags === 7) {\\n    referredToCount = readUint32(data, position - 1) & 0x1fffffff;\\n    position += 3;\\n    let bytes = (referredToCount + 7) >> 3;\\n    retainBits[0] = data[position++];\\n    while (--bytes > 0) {\\n      retainBits.push(data[position++]);\\n    }\\n  } else if (referredFlags === 5 || referredFlags === 6) {\\n    throw new Jbig2Error(\\\"invalid referred-to flags\\\");\\n  }\\n\\n  segmentHeader.retainBits = retainBits;\\n\\n  let referredToSegmentNumberSize = 4;\\n  if (segmentHeader.number \u003C= 256) {\\n    referredToSegmentNumberSize = 1;\\n  } else if (segmentHeader.number \u003C= 65536) {\\n    referredToSegmentNumberSize = 2;\\n  }\\n  const referredTo = [];\\n  let i, ii;\\n  for (i = 0; i \u003C referredToCount; i++) {\\n    let number;\\n    if (referredToSegmentNumberSize === 1) {\\n      number = data[position];\\n    } else if (referredToSegmentNumberSize === 2) {\\n      number = readUint16(data, position);\\n    } else {\\n      number = readUint32(data, position);\\n    }\\n    referredTo.push(number);\\n    position += referredToSegmentNumberSize;\\n  }\\n  segmentHeader.referredTo = referredTo;\\n  if (!pageAssociationFieldSize) {\\n    segmentHeader.pageAssociation = data[position++];\\n  } else {\\n    segmentHeader.pageAssociation = readUint32(data, position);\\n    position += 4;\\n  }\\n  segmentHeader.length = readUint32(data, position);\\n  position += 4;\\n\\n  if (segmentHeader.length === 0xffffffff) {\\n    \u002F\u002F 7.2.7 Segment data length, unknown segment length\\n    if (segmentType === 38) {\\n      \u002F\u002F ImmediateGenericRegion\\n      const genericRegionInfo = readRegionSegmentInformation(data, position);\\n      const genericRegionSegmentFlags =\\n        data[position + RegionSegmentInformationFieldLength];\\n      const genericRegionMmr = !!(genericRegionSegmentFlags & 1);\\n      \u002F\u002F searching for the segment end\\n      const searchPatternLength = 6;\\n      const searchPattern = new Uint8Array(searchPatternLength);\\n      if (!genericRegionMmr) {\\n        searchPattern[0] = 0xff;\\n        searchPattern[1] = 0xac;\\n      }\\n      searchPattern[2] = (genericRegionInfo.height >>> 24) & 0xff;\\n      searchPattern[3] = (genericRegionInfo.height >> 16) & 0xff;\\n      searchPattern[4] = (genericRegionInfo.height >> 8) & 0xff;\\n      searchPattern[5] = genericRegionInfo.height & 0xff;\\n      for (i = position, ii = data.length; i \u003C ii; i++) {\\n        let j = 0;\\n        while (j \u003C searchPatternLength && searchPattern[j] === data[i + j]) {\\n          j++;\\n        }\\n        if (j === searchPatternLength) {\\n          segmentHeader.length = i + searchPatternLength;\\n          break;\\n        }\\n      }\\n      if (segmentHeader.length === 0xffffffff) {\\n        throw new Jbig2Error(\\\"segment end was not found\\\");\\n      }\\n    } else {\\n      throw new Jbig2Error(\\\"invalid unknown segment length\\\");\\n    }\\n  }\\n  segmentHeader.headerEnd = position;\\n  return segmentHeader;\\n}\\n\\nfunction readSegments(header, data, start, end) {\\n  const segments = [];\\n  let position = start;\\n  while (position \u003C end) {\\n    const segmentHeader = readSegmentHeader(data, position);\\n    position = segmentHeader.headerEnd;\\n    const segment = {\\n      header: segmentHeader,\\n      data,\\n    };\\n    if (!header.randomAccess) {\\n      segment.start = position;\\n      position += segmentHeader.length;\\n      segment.end = position;\\n    }\\n    segments.push(segment);\\n    if (segmentHeader.type === 51) {\\n      break; \u002F\u002F end of file is found\\n    }\\n  }\\n  if (header.randomAccess) {\\n    for (let i = 0, ii = segments.length; i \u003C ii; i++) {\\n      segments[i].start = position;\\n      position += segments[i].header.length;\\n      segments[i].end = position;\\n    }\\n  }\\n  return segments;\\n}\\n\\n\u002F\u002F 7.4.1 Region segment information field\\nfunction readRegionSegmentInformation(data, start) {\\n  return {\\n    width: readUint32(data, start),\\n    height: readUint32(data, start + 4),\\n    x: readUint32(data, start + 8),\\n    y: readUint32(data, start + 12),\\n    combinationOperator: data[start + 16] & 7,\\n  };\\n}\\nconst RegionSegmentInformationFieldLength = 17;\\n\\nfunction processSegment(segment, visitor) {\\n  const header = segment.header;\\n\\n  const data = segment.data,\\n    end = segment.end;\\n  let position = segment.start;\\n  let args, at, i, atLength;\\n  switch (header.type) {\\n    case 0: \u002F\u002F SymbolDictionary\\n      \u002F\u002F 7.4.2 Symbol dictionary segment syntax\\n      const dictionary = {};\\n      const dictionaryFlags = readUint16(data, position); \u002F\u002F 7.4.2.1.1\\n      dictionary.huffman = !!(dictionaryFlags & 1);\\n      dictionary.refinement = !!(dictionaryFlags & 2);\\n      dictionary.huffmanDHSelector = (dictionaryFlags >> 2) & 3;\\n      dictionary.huffmanDWSelector = (dictionaryFlags >> 4) & 3;\\n      dictionary.bitmapSizeSelector = (dictionaryFlags >> 6) & 1;\\n      dictionary.aggregationInstancesSelector = (dictionaryFlags >> 7) & 1;\\n      dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256);\\n      dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512);\\n      dictionary.template = (dictionaryFlags >> 10) & 3;\\n      dictionary.refinementTemplate = (dictionaryFlags >> 12) & 1;\\n      position += 2;\\n      if (!dictionary.huffman) {\\n        atLength = dictionary.template === 0 ? 4 : 1;\\n        at = [];\\n        for (i = 0; i \u003C atLength; i++) {\\n          at.push({\\n            x: readInt8(data, position),\\n            y: readInt8(data, position + 1),\\n          });\\n          position += 2;\\n        }\\n        dictionary.at = at;\\n      }\\n      if (dictionary.refinement && !dictionary.refinementTemplate) {\\n        at = [];\\n        for (i = 0; i \u003C 2; i++) {\\n          at.push({\\n            x: readInt8(data, position),\\n            y: readInt8(data, position + 1),\\n          });\\n          position += 2;\\n        }\\n        dictionary.refinementAt = at;\\n      }\\n      dictionary.numberOfExportedSymbols = readUint32(data, position);\\n      position += 4;\\n      dictionary.numberOfNewSymbols = readUint32(data, position);\\n      position += 4;\\n      args = [\\n        dictionary,\\n        header.number,\\n        header.referredTo,\\n        data,\\n        position,\\n        end,\\n      ];\\n      break;\\n    case 6: \u002F\u002F ImmediateTextRegion\\n    case 7: \u002F\u002F ImmediateLosslessTextRegion\\n      const textRegion = {};\\n      textRegion.info = readRegionSegmentInformation(data, position);\\n      position += RegionSegmentInformationFieldLength;\\n      const textRegionSegmentFlags = readUint16(data, position);\\n      position += 2;\\n      textRegion.huffman = !!(textRegionSegmentFlags & 1);\\n      textRegion.refinement = !!(textRegionSegmentFlags & 2);\\n      textRegion.logStripSize = (textRegionSegmentFlags >> 2) & 3;\\n      textRegion.stripSize = 1 \u003C\u003C textRegion.logStripSize;\\n      textRegion.referenceCorner = (textRegionSegmentFlags >> 4) & 3;\\n      textRegion.transposed = !!(textRegionSegmentFlags & 64);\\n      textRegion.combinationOperator = (textRegionSegmentFlags >> 7) & 3;\\n      textRegion.defaultPixelValue = (textRegionSegmentFlags >> 9) & 1;\\n      textRegion.dsOffset = (textRegionSegmentFlags \u003C\u003C 17) >> 27;\\n      textRegion.refinementTemplate = (textRegionSegmentFlags >> 15) & 1;\\n      if (textRegion.huffman) {\\n        const textRegionHuffmanFlags = readUint16(data, position);\\n        position += 2;\\n        textRegion.huffmanFS = textRegionHuffmanFlags & 3;\\n        textRegion.huffmanDS = (textRegionHuffmanFlags >> 2) & 3;\\n        textRegion.huffmanDT = (textRegionHuffmanFlags >> 4) & 3;\\n        textRegion.huffmanRefinementDW = (textRegionHuffmanFlags >> 6) & 3;\\n        textRegion.huffmanRefinementDH = (textRegionHuffmanFlags >> 8) & 3;\\n        textRegion.huffmanRefinementDX = (textRegionHuffmanFlags >> 10) & 3;\\n        textRegion.huffmanRefinementDY = (textRegionHuffmanFlags >> 12) & 3;\\n        textRegion.huffmanRefinementSizeSelector = !!(\\n          textRegionHuffmanFlags & 0x4000\\n        );\\n      }\\n      if (textRegion.refinement && !textRegion.refinementTemplate) {\\n        at = [];\\n        for (i = 0; i \u003C 2; i++) {\\n          at.push({\\n            x: readInt8(data, position),\\n            y: readInt8(data, position + 1),\\n          });\\n          position += 2;\\n        }\\n        textRegion.refinementAt = at;\\n      }\\n      textRegion.numberOfSymbolInstances = readUint32(data, position);\\n      position += 4;\\n      args = [textRegion, header.referredTo, data, position, end];\\n      break;\\n    case 16: \u002F\u002F PatternDictionary\\n      \u002F\u002F 7.4.4. Pattern dictionary segment syntax\\n      const patternDictionary = {};\\n      const patternDictionaryFlags = data[position++];\\n      patternDictionary.mmr = !!(patternDictionaryFlags & 1);\\n      patternDictionary.template = (patternDictionaryFlags >> 1) & 3;\\n      patternDictionary.patternWidth = data[position++];\\n      patternDictionary.patternHeight = data[position++];\\n      patternDictionary.maxPatternIndex = readUint32(data, position);\\n      position += 4;\\n      args = [patternDictionary, header.number, data, position, end];\\n      break;\\n    case 22: \u002F\u002F ImmediateHalftoneRegion\\n    case 23: \u002F\u002F ImmediateLosslessHalftoneRegion\\n      \u002F\u002F 7.4.5 Halftone region segment syntax\\n      const halftoneRegion = {};\\n      halftoneRegion.info = readRegionSegmentInformation(data, position);\\n      position += RegionSegmentInformationFieldLength;\\n      const halftoneRegionFlags = data[position++];\\n      halftoneRegion.mmr = !!(halftoneRegionFlags & 1);\\n      halftoneRegion.template = (halftoneRegionFlags >> 1) & 3;\\n      halftoneRegion.enableSkip = !!(halftoneRegionFlags & 8);\\n      halftoneRegion.combinationOperator = (halftoneRegionFlags >> 4) & 7;\\n      halftoneRegion.defaultPixelValue = (halftoneRegionFlags >> 7) & 1;\\n      halftoneRegion.gridWidth = readUint32(data, position);\\n      position += 4;\\n      halftoneRegion.gridHeight = readUint32(data, position);\\n      position += 4;\\n      halftoneRegion.gridOffsetX = readUint32(data, position) & 0xffffffff;\\n      position += 4;\\n      halftoneRegion.gridOffsetY = readUint32(data, position) & 0xffffffff;\\n      position += 4;\\n      halftoneRegion.gridVectorX = readUint16(data, position);\\n      position += 2;\\n      halftoneRegion.gridVectorY = readUint16(data, position);\\n      position += 2;\\n      args = [halftoneRegion, header.referredTo, data, position, end];\\n      break;\\n    case 38: \u002F\u002F ImmediateGenericRegion\\n    case 39: \u002F\u002F ImmediateLosslessGenericRegion\\n      const genericRegion = {};\\n      genericRegion.info = readRegionSegmentInformation(data, position);\\n      position += RegionSegmentInformationFieldLength;\\n      const genericRegionSegmentFlags = data[position++];\\n      genericRegion.mmr = !!(genericRegionSegmentFlags & 1);\\n      genericRegion.template = (genericRegionSegmentFlags >> 1) & 3;\\n      genericRegion.prediction = !!(genericRegionSegmentFlags & 8);\\n      if (!genericRegion.mmr) {\\n        atLength = genericRegion.template === 0 ? 4 : 1;\\n        at = [];\\n        for (i = 0; i \u003C atLength; i++) {\\n          at.push({\\n            x: readInt8(data, position),\\n            y: readInt8(data, position + 1),\\n          });\\n          position += 2;\\n        }\\n        genericRegion.at = at;\\n      }\\n      args = [genericRegion, data, position, end];\\n      break;\\n    case 48: \u002F\u002F PageInformation\\n      const pageInfo = {\\n        width: readUint32(data, position),\\n        height: readUint32(data, position + 4),\\n        resolutionX: readUint32(data, position + 8),\\n        resolutionY: readUint32(data, position + 12),\\n      };\\n      if (pageInfo.height === 0xffffffff) {\\n        delete pageInfo.height;\\n      }\\n      const pageSegmentFlags = data[position + 16];\\n      readUint16(data, position + 17); \u002F\u002F pageStripingInformation\\n      pageInfo.lossless = !!(pageSegmentFlags & 1);\\n      pageInfo.refinement = !!(pageSegmentFlags & 2);\\n      pageInfo.defaultPixelValue = (pageSegmentFlags >> 2) & 1;\\n      pageInfo.combinationOperator = (pageSegmentFlags >> 3) & 3;\\n      pageInfo.requiresBuffer = !!(pageSegmentFlags & 32);\\n      pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64);\\n      args = [pageInfo];\\n      break;\\n    case 49: \u002F\u002F EndOfPage\\n      break;\\n    case 50: \u002F\u002F EndOfStripe\\n      break;\\n    case 51: \u002F\u002F EndOfFile\\n      break;\\n    case 53: \u002F\u002F Tables\\n      args = [header.number, data, position, end];\\n      break;\\n    case 62: \u002F\u002F 7.4.15 defines 2 extension types which\\n      \u002F\u002F are comments and can be ignored.\\n      break;\\n    default:\\n      throw new Jbig2Error(\\n        `segment type ${header.typeName}(${header.type}) is not implemented`\\n      );\\n  }\\n  const callbackName = \\\"on\\\" + header.typeName;\\n  if (callbackName in visitor) {\\n    \u002F\u002F eslint-disable-next-line prefer-spread\\n    visitor[callbackName].apply(visitor, args);\\n  }\\n}\\n\\nfunction processSegments(segments, visitor) {\\n  for (let i = 0, ii = segments.length; i \u003C ii; i++) {\\n    processSegment(segments[i], visitor);\\n  }\\n}\\n\\nfunction parseJbig2Chunks(chunks) {\\n  const visitor = new SimpleSegmentVisitor();\\n  for (let i = 0, ii = chunks.length; i \u003C ii; i++) {\\n    const chunk = chunks[i];\\n    const segments = readSegments({}, chunk.data, chunk.start, chunk.end);\\n    processSegments(segments, visitor);\\n  }\\n  return visitor.buffer;\\n}\\n\\nfunction parseJbig2(data) {\\n  if (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"IMAGE_DECODERS\\\")) {\\n    throw new Error(\\\"Not implemented: parseJbig2\\\");\\n  }\\n  const end = data.length;\\n  let position = 0;\\n\\n  if (\\n    data[position] !== 0x97 ||\\n    data[position + 1] !== 0x4a ||\\n    data[position + 2] !== 0x42 ||\\n    data[position + 3] !== 0x32 ||\\n    data[position + 4] !== 0x0d ||\\n    data[position + 5] !== 0x0a ||\\n    data[position + 6] !== 0x1a ||\\n    data[position + 7] !== 0x0a\\n  ) {\\n    throw new Jbig2Error(\\\"parseJbig2 - invalid header.\\\");\\n  }\\n\\n  const header = Object.create(null);\\n  position += 8;\\n  const flags = data[position++];\\n  header.randomAccess = !(flags & 1);\\n  if (!(flags & 2)) {\\n    header.numberOfPages = readUint32(data, position);\\n    position += 4;\\n  }\\n\\n  const segments = readSegments(header, data, position, end);\\n  const visitor = new SimpleSegmentVisitor();\\n  processSegments(segments, visitor);\\n\\n  const { width, height } = visitor.currentPageInfo;\\n  const bitPacked = visitor.buffer;\\n  const imgData = new Uint8ClampedArray(width * height);\\n  let q = 0,\\n    k = 0;\\n  for (let i = 0; i \u003C height; i++) {\\n    let mask = 0,\\n      buffer;\\n    for (let j = 0; j \u003C width; j++) {\\n      if (!mask) {\\n        mask = 128;\\n        buffer = bitPacked[k++];\\n      }\\n      imgData[q++] = buffer & mask ? 0 : 255;\\n      mask >>= 1;\\n    }\\n  }\\n\\n  return { imgData, width, height };\\n}\\n\\nclass SimpleSegmentVisitor {\\n  onPageInformation(info) {\\n    this.currentPageInfo = info;\\n    const rowSize = (info.width + 7) >> 3;\\n    const buffer = new Uint8ClampedArray(rowSize * info.height);\\n    \u002F\u002F The contents of ArrayBuffers are initialized to 0.\\n    \u002F\u002F Fill the buffer with 0xFF only if info.defaultPixelValue is set\\n    if (info.defaultPixelValue) {\\n      buffer.fill(0xff);\\n    }\\n    this.buffer = buffer;\\n  }\\n\\n  drawBitmap(regionInfo, bitmap) {\\n    const pageInfo = this.currentPageInfo;\\n    const width = regionInfo.width,\\n      height = regionInfo.height;\\n    const rowSize = (pageInfo.width + 7) >> 3;\\n    const combinationOperator = pageInfo.combinationOperatorOverride\\n      ? regionInfo.combinationOperator\\n      : pageInfo.combinationOperator;\\n    const buffer = this.buffer;\\n    const mask0 = 128 >> (regionInfo.x & 7);\\n    let offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);\\n    let i, j, mask, offset;\\n    switch (combinationOperator) {\\n      case 0: \u002F\u002F OR\\n        for (i = 0; i \u003C height; i++) {\\n          mask = mask0;\\n          offset = offset0;\\n          for (j = 0; j \u003C width; j++) {\\n            if (bitmap[i][j]) {\\n              buffer[offset] |= mask;\\n            }\\n            mask >>= 1;\\n            if (!mask) {\\n              mask = 128;\\n              offset++;\\n            }\\n          }\\n          offset0 += rowSize;\\n        }\\n        break;\\n      case 2: \u002F\u002F XOR\\n        for (i = 0; i \u003C height; i++) {\\n          mask = mask0;\\n          offset = offset0;\\n          for (j = 0; j \u003C width; j++) {\\n            if (bitmap[i][j]) {\\n              buffer[offset] ^= mask;\\n            }\\n            mask >>= 1;\\n            if (!mask) {\\n              mask = 128;\\n              offset++;\\n            }\\n          }\\n          offset0 += rowSize;\\n        }\\n        break;\\n      default:\\n        throw new Jbig2Error(\\n          `operator ${combinationOperator} is not supported`\\n        );\\n    }\\n  }\\n\\n  onImmediateGenericRegion(region, data, start, end) {\\n    const regionInfo = region.info;\\n    const decodingContext = new DecodingContext(data, start, end);\\n    const bitmap = decodeBitmap(\\n      region.mmr,\\n      regionInfo.width,\\n      regionInfo.height,\\n      region.template,\\n      region.prediction,\\n      null,\\n      region.at,\\n      decodingContext\\n    );\\n    this.drawBitmap(regionInfo, bitmap);\\n  }\\n\\n  onImmediateLosslessGenericRegion() {\\n    this.onImmediateGenericRegion(...arguments);\\n  }\\n\\n  onSymbolDictionary(\\n    dictionary,\\n    currentSegment,\\n    referredSegments,\\n    data,\\n    start,\\n    end\\n  ) {\\n    let huffmanTables, huffmanInput;\\n    if (dictionary.huffman) {\\n      huffmanTables = getSymbolDictionaryHuffmanTables(\\n        dictionary,\\n        referredSegments,\\n        this.customTables\\n      );\\n      huffmanInput = new Reader(data, start, end);\\n    }\\n\\n    \u002F\u002F Combines exported symbols from all referred segments\\n    let symbols = this.symbols;\\n    if (!symbols) {\\n      this.symbols = symbols = {};\\n    }\\n\\n    const inputSymbols = [];\\n    for (const referredSegment of referredSegments) {\\n      const referredSymbols = symbols[referredSegment];\\n      \u002F\u002F referredSymbols is undefined when we have a reference to a Tables\\n      \u002F\u002F segment instead of a SymbolDictionary.\\n      if (referredSymbols) {\\n        inputSymbols.push(...referredSymbols);\\n      }\\n    }\\n\\n    const decodingContext = new DecodingContext(data, start, end);\\n    symbols[currentSegment] = decodeSymbolDictionary(\\n      dictionary.huffman,\\n      dictionary.refinement,\\n      inputSymbols,\\n      dictionary.numberOfNewSymbols,\\n      dictionary.numberOfExportedSymbols,\\n      huffmanTables,\\n      dictionary.template,\\n      dictionary.at,\\n      dictionary.refinementTemplate,\\n      dictionary.refinementAt,\\n      decodingContext,\\n      huffmanInput\\n    );\\n  }\\n\\n  onImmediateTextRegion(region, referredSegments, data, start, end) {\\n    const regionInfo = region.info;\\n    let huffmanTables, huffmanInput;\\n\\n    \u002F\u002F Combines exported symbols from all referred segments\\n    const symbols = this.symbols;\\n    const inputSymbols = [];\\n    for (const referredSegment of referredSegments) {\\n      const referredSymbols = symbols[referredSegment];\\n      \u002F\u002F referredSymbols is undefined when we have a reference to a Tables\\n      \u002F\u002F segment instead of a SymbolDictionary.\\n      if (referredSymbols) {\\n        inputSymbols.push(...referredSymbols);\\n      }\\n    }\\n    const symbolCodeLength = log2(inputSymbols.length);\\n    if (region.huffman) {\\n      huffmanInput = new Reader(data, start, end);\\n      huffmanTables = getTextRegionHuffmanTables(\\n        region,\\n        referredSegments,\\n        this.customTables,\\n        inputSymbols.length,\\n        huffmanInput\\n      );\\n    }\\n\\n    const decodingContext = new DecodingContext(data, start, end);\\n    const bitmap = decodeTextRegion(\\n      region.huffman,\\n      region.refinement,\\n      regionInfo.width,\\n      regionInfo.height,\\n      region.defaultPixelValue,\\n      region.numberOfSymbolInstances,\\n      region.stripSize,\\n      inputSymbols,\\n      symbolCodeLength,\\n      region.transposed,\\n      region.dsOffset,\\n      region.referenceCorner,\\n      region.combinationOperator,\\n      huffmanTables,\\n      region.refinementTemplate,\\n      region.refinementAt,\\n      decodingContext,\\n      region.logStripSize,\\n      huffmanInput\\n    );\\n    this.drawBitmap(regionInfo, bitmap);\\n  }\\n\\n  onImmediateLosslessTextRegion() {\\n    this.onImmediateTextRegion(...arguments);\\n  }\\n\\n  onPatternDictionary(dictionary, currentSegment, data, start, end) {\\n    let patterns = this.patterns;\\n    if (!patterns) {\\n      this.patterns = patterns = {};\\n    }\\n    const decodingContext = new DecodingContext(data, start, end);\\n    patterns[currentSegment] = decodePatternDictionary(\\n      dictionary.mmr,\\n      dictionary.patternWidth,\\n      dictionary.patternHeight,\\n      dictionary.maxPatternIndex,\\n      dictionary.template,\\n      decodingContext\\n    );\\n  }\\n\\n  onImmediateHalftoneRegion(region, referredSegments, data, start, end) {\\n    \u002F\u002F HalftoneRegion refers to exactly one PatternDictionary.\\n    const patterns = this.patterns[referredSegments[0]];\\n    const regionInfo = region.info;\\n    const decodingContext = new DecodingContext(data, start, end);\\n    const bitmap = decodeHalftoneRegion(\\n      region.mmr,\\n      patterns,\\n      region.template,\\n      regionInfo.width,\\n      regionInfo.height,\\n      region.defaultPixelValue,\\n      region.enableSkip,\\n      region.combinationOperator,\\n      region.gridWidth,\\n      region.gridHeight,\\n      region.gridOffsetX,\\n      region.gridOffsetY,\\n      region.gridVectorX,\\n      region.gridVectorY,\\n      decodingContext\\n    );\\n    this.drawBitmap(regionInfo, bitmap);\\n  }\\n\\n  onImmediateLosslessHalftoneRegion() {\\n    this.onImmediateHalftoneRegion(...arguments);\\n  }\\n\\n  onTables(currentSegment, data, start, end) {\\n    let customTables = this.customTables;\\n    if (!customTables) {\\n      this.customTables = customTables = {};\\n    }\\n    customTables[currentSegment] = decodeTablesSegment(data, start, end);\\n  }\\n}\\n\\nclass HuffmanLine {\\n  constructor(lineData) {\\n    if (lineData.length === 2) {\\n      \u002F\u002F OOB line.\\n      this.isOOB = true;\\n      this.rangeLow = 0;\\n      this.prefixLength = lineData[0];\\n      this.rangeLength = 0;\\n      this.prefixCode = lineData[1];\\n      this.isLowerRange = false;\\n    } else {\\n      \u002F\u002F Normal, upper range or lower range line.\\n      \u002F\u002F Upper range lines are processed like normal lines.\\n      this.isOOB = false;\\n      this.rangeLow = lineData[0];\\n      this.prefixLength = lineData[1];\\n      this.rangeLength = lineData[2];\\n      this.prefixCode = lineData[3];\\n      this.isLowerRange = lineData[4] === \\\"lower\\\";\\n    }\\n  }\\n}\\n\\nclass HuffmanTreeNode {\\n  constructor(line) {\\n    this.children = [];\\n    if (line) {\\n      \u002F\u002F Leaf node\\n      this.isLeaf = true;\\n      this.rangeLength = line.rangeLength;\\n      this.rangeLow = line.rangeLow;\\n      this.isLowerRange = line.isLowerRange;\\n      this.isOOB = line.isOOB;\\n    } else {\\n      \u002F\u002F Intermediate or root node\\n      this.isLeaf = false;\\n    }\\n  }\\n\\n  buildTree(line, shift) {\\n    const bit = (line.prefixCode >> shift) & 1;\\n    if (shift \u003C= 0) {\\n      \u002F\u002F Create a leaf node.\\n      this.children[bit] = new HuffmanTreeNode(line);\\n    } else {\\n      \u002F\u002F Create an intermediate node and continue recursively.\\n      let node = this.children[bit];\\n      if (!node) {\\n        this.children[bit] = node = new HuffmanTreeNode(null);\\n      }\\n      node.buildTree(line, shift - 1);\\n    }\\n  }\\n\\n  decodeNode(reader) {\\n    if (this.isLeaf) {\\n      if (this.isOOB) {\\n        return null;\\n      }\\n      const htOffset = reader.readBits(this.rangeLength);\\n      return this.rangeLow + (this.isLowerRange ? -htOffset : htOffset);\\n    }\\n    const node = this.children[reader.readBit()];\\n    if (!node) {\\n      throw new Jbig2Error(\\\"invalid Huffman data\\\");\\n    }\\n    return node.decodeNode(reader);\\n  }\\n}\\n\\nclass HuffmanTable {\\n  constructor(lines, prefixCodesDone) {\\n    if (!prefixCodesDone) {\\n      this.assignPrefixCodes(lines);\\n    }\\n    \u002F\u002F Create Huffman tree.\\n    this.rootNode = new HuffmanTreeNode(null);\\n    for (let i = 0, ii = lines.length; i \u003C ii; i++) {\\n      const line = lines[i];\\n      if (line.prefixLength > 0) {\\n        this.rootNode.buildTree(line, line.prefixLength - 1);\\n      }\\n    }\\n  }\\n\\n  decode(reader) {\\n    return this.rootNode.decodeNode(reader);\\n  }\\n\\n  assignPrefixCodes(lines) {\\n    \u002F\u002F Annex B.3 Assigning the prefix codes.\\n    const linesLength = lines.length;\\n    let prefixLengthMax = 0;\\n    for (let i = 0; i \u003C linesLength; i++) {\\n      prefixLengthMax = Math.max(prefixLengthMax, lines[i].prefixLength);\\n    }\\n\\n    const histogram = new Uint32Array(prefixLengthMax + 1);\\n    for (let i = 0; i \u003C linesLength; i++) {\\n      histogram[lines[i].prefixLength]++;\\n    }\\n    let currentLength = 1,\\n      firstCode = 0,\\n      currentCode,\\n      currentTemp,\\n      line;\\n    histogram[0] = 0;\\n\\n    while (currentLength \u003C= prefixLengthMax) {\\n      firstCode = (firstCode + histogram[currentLength - 1]) \u003C\u003C 1;\\n      currentCode = firstCode;\\n      currentTemp = 0;\\n      while (currentTemp \u003C linesLength) {\\n        line = lines[currentTemp];\\n        if (line.prefixLength === currentLength) {\\n          line.prefixCode = currentCode;\\n          currentCode++;\\n        }\\n        currentTemp++;\\n      }\\n      currentLength++;\\n    }\\n  }\\n}\\n\\nfunction decodeTablesSegment(data, start, end) {\\n  \u002F\u002F Decodes a Tables segment, i.e., a custom Huffman table.\\n  \u002F\u002F Annex B.2 Code table structure.\\n  const flags = data[start];\\n  const lowestValue = readUint32(data, start + 1) & 0xffffffff;\\n  const highestValue = readUint32(data, start + 5) & 0xffffffff;\\n  const reader = new Reader(data, start + 9, end);\\n\\n  const prefixSizeBits = ((flags >> 1) & 7) + 1;\\n  const rangeSizeBits = ((flags >> 4) & 7) + 1;\\n  const lines = [];\\n  let prefixLength,\\n    rangeLength,\\n    currentRangeLow = lowestValue;\\n\\n  \u002F\u002F Normal table lines\\n  do {\\n    prefixLength = reader.readBits(prefixSizeBits);\\n    rangeLength = reader.readBits(rangeSizeBits);\\n    lines.push(\\n      new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0])\\n    );\\n    currentRangeLow += 1 \u003C\u003C rangeLength;\\n  } while (currentRangeLow \u003C highestValue);\\n\\n  \u002F\u002F Lower range table line\\n  prefixLength = reader.readBits(prefixSizeBits);\\n  lines.push(new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, \\\"lower\\\"]));\\n\\n  \u002F\u002F Upper range table line\\n  prefixLength = reader.readBits(prefixSizeBits);\\n  lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0]));\\n\\n  if (flags & 1) {\\n    \u002F\u002F Out-of-band table line\\n    prefixLength = reader.readBits(prefixSizeBits);\\n    lines.push(new HuffmanLine([prefixLength, 0]));\\n  }\\n\\n  return new HuffmanTable(lines, false);\\n}\\n\\nconst standardTablesCache = {};\\n\\nfunction getStandardTable(number) {\\n  \u002F\u002F Annex B.5 Standard Huffman tables.\\n  let table = standardTablesCache[number];\\n  if (table) {\\n    return table;\\n  }\\n  let lines;\\n  switch (number) {\\n    case 1:\\n      lines = [\\n        [0, 1, 4, 0x0],\\n        [16, 2, 8, 0x2],\\n        [272, 3, 16, 0x6],\\n        [65808, 3, 32, 0x7], \u002F\u002F upper\\n      ];\\n      break;\\n    case 2:\\n      lines = [\\n        [0, 1, 0, 0x0],\\n        [1, 2, 0, 0x2],\\n        [2, 3, 0, 0x6],\\n        [3, 4, 3, 0xe],\\n        [11, 5, 6, 0x1e],\\n        [75, 6, 32, 0x3e], \u002F\u002F upper\\n        [6, 0x3f], \u002F\u002F OOB\\n      ];\\n      break;\\n    case 3:\\n      lines = [\\n        [-256, 8, 8, 0xfe],\\n        [0, 1, 0, 0x0],\\n        [1, 2, 0, 0x2],\\n        [2, 3, 0, 0x6],\\n        [3, 4, 3, 0xe],\\n        [11, 5, 6, 0x1e],\\n        [-257, 8, 32, 0xff, \\\"lower\\\"],\\n        [75, 7, 32, 0x7e], \u002F\u002F upper\\n        [6, 0x3e], \u002F\u002F OOB\\n      ];\\n      break;\\n    case 4:\\n      lines = [\\n        [1, 1, 0, 0x0],\\n        [2, 2, 0, 0x2],\\n        [3, 3, 0, 0x6],\\n        [4, 4, 3, 0xe],\\n        [12, 5, 6, 0x1e],\\n        [76, 5, 32, 0x1f], \u002F\u002F upper\\n      ];\\n      break;\\n    case 5:\\n      lines = [\\n        [-255, 7, 8, 0x7e],\\n        [1, 1, 0, 0x0],\\n        [2, 2, 0, 0x2],\\n        [3, 3, 0, 0x6],\\n        [4, 4, 3, 0xe],\\n        [12, 5, 6, 0x1e],\\n        [-256, 7, 32, 0x7f, \\\"lower\\\"],\\n        [76, 6, 32, 0x3e], \u002F\u002F upper\\n      ];\\n      break;\\n    case 6:\\n      lines = [\\n        [-2048, 5, 10, 0x1c],\\n        [-1024, 4, 9, 0x8],\\n        [-512, 4, 8, 0x9],\\n        [-256, 4, 7, 0xa],\\n        [-128, 5, 6, 0x1d],\\n        [-64, 5, 5, 0x1e],\\n        [-32, 4, 5, 0xb],\\n        [0, 2, 7, 0x0],\\n        [128, 3, 7, 0x2],\\n        [256, 3, 8, 0x3],\\n        [512, 4, 9, 0xc],\\n        [1024, 4, 10, 0xd],\\n        [-2049, 6, 32, 0x3e, \\\"lower\\\"],\\n        [2048, 6, 32, 0x3f], \u002F\u002F upper\\n      ];\\n      break;\\n    case 7:\\n      lines = [\\n        [-1024, 4, 9, 0x8],\\n        [-512, 3, 8, 0x0],\\n        [-256, 4, 7, 0x9],\\n        [-128, 5, 6, 0x1a],\\n        [-64, 5, 5, 0x1b],\\n        [-32, 4, 5, 0xa],\\n        [0, 4, 5, 0xb],\\n        [32, 5, 5, 0x1c],\\n        [64, 5, 6, 0x1d],\\n        [128, 4, 7, 0xc],\\n        [256, 3, 8, 0x1],\\n        [512, 3, 9, 0x2],\\n        [1024, 3, 10, 0x3],\\n        [-1025, 5, 32, 0x1e, \\\"lower\\\"],\\n        [2048, 5, 32, 0x1f], \u002F\u002F upper\\n      ];\\n      break;\\n    case 8:\\n      lines = [\\n        [-15, 8, 3, 0xfc],\\n        [-7, 9, 1, 0x1fc],\\n        [-5, 8, 1, 0xfd],\\n        [-3, 9, 0, 0x1fd],\\n        [-2, 7, 0, 0x7c],\\n        [-1, 4, 0, 0xa],\\n        [0, 2, 1, 0x0],\\n        [2, 5, 0, 0x1a],\\n        [3, 6, 0, 0x3a],\\n        [4, 3, 4, 0x4],\\n        [20, 6, 1, 0x3b],\\n        [22, 4, 4, 0xb],\\n        [38, 4, 5, 0xc],\\n        [70, 5, 6, 0x1b],\\n        [134, 5, 7, 0x1c],\\n        [262, 6, 7, 0x3c],\\n        [390, 7, 8, 0x7d],\\n        [646, 6, 10, 0x3d],\\n        [-16, 9, 32, 0x1fe, \\\"lower\\\"],\\n        [1670, 9, 32, 0x1ff], \u002F\u002F upper\\n        [2, 0x1], \u002F\u002F OOB\\n      ];\\n      break;\\n    case 9:\\n      lines = [\\n        [-31, 8, 4, 0xfc],\\n        [-15, 9, 2, 0x1fc],\\n        [-11, 8, 2, 0xfd],\\n        [-7, 9, 1, 0x1fd],\\n        [-5, 7, 1, 0x7c],\\n        [-3, 4, 1, 0xa],\\n        [-1, 3, 1, 0x2],\\n        [1, 3, 1, 0x3],\\n        [3, 5, 1, 0x1a],\\n        [5, 6, 1, 0x3a],\\n        [7, 3, 5, 0x4],\\n        [39, 6, 2, 0x3b],\\n        [43, 4, 5, 0xb],\\n        [75, 4, 6, 0xc],\\n        [139, 5, 7, 0x1b],\\n        [267, 5, 8, 0x1c],\\n        [523, 6, 8, 0x3c],\\n        [779, 7, 9, 0x7d],\\n        [1291, 6, 11, 0x3d],\\n        [-32, 9, 32, 0x1fe, \\\"lower\\\"],\\n        [3339, 9, 32, 0x1ff], \u002F\u002F upper\\n        [2, 0x0], \u002F\u002F OOB\\n      ];\\n      break;\\n    case 10:\\n      lines = [\\n        [-21, 7, 4, 0x7a],\\n        [-5, 8, 0, 0xfc],\\n        [-4, 7, 0, 0x7b],\\n        [-3, 5, 0, 0x18],\\n        [-2, 2, 2, 0x0],\\n        [2, 5, 0, 0x19],\\n        [3, 6, 0, 0x36],\\n        [4, 7, 0, 0x7c],\\n        [5, 8, 0, 0xfd],\\n        [6, 2, 6, 0x1],\\n        [70, 5, 5, 0x1a],\\n        [102, 6, 5, 0x37],\\n        [134, 6, 6, 0x38],\\n        [198, 6, 7, 0x39],\\n        [326, 6, 8, 0x3a],\\n        [582, 6, 9, 0x3b],\\n        [1094, 6, 10, 0x3c],\\n        [2118, 7, 11, 0x7d],\\n        [-22, 8, 32, 0xfe, \\\"lower\\\"],\\n        [4166, 8, 32, 0xff], \u002F\u002F upper\\n        [2, 0x2], \u002F\u002F OOB\\n      ];\\n      break;\\n    case 11:\\n      lines = [\\n        [1, 1, 0, 0x0],\\n        [2, 2, 1, 0x2],\\n        [4, 4, 0, 0xc],\\n        [5, 4, 1, 0xd],\\n        [7, 5, 1, 0x1c],\\n        [9, 5, 2, 0x1d],\\n        [13, 6, 2, 0x3c],\\n        [17, 7, 2, 0x7a],\\n        [21, 7, 3, 0x7b],\\n        [29, 7, 4, 0x7c],\\n        [45, 7, 5, 0x7d],\\n        [77, 7, 6, 0x7e],\\n        [141, 7, 32, 0x7f], \u002F\u002F upper\\n      ];\\n      break;\\n    case 12:\\n      lines = [\\n        [1, 1, 0, 0x0],\\n        [2, 2, 0, 0x2],\\n        [3, 3, 1, 0x6],\\n        [5, 5, 0, 0x1c],\\n        [6, 5, 1, 0x1d],\\n        [8, 6, 1, 0x3c],\\n        [10, 7, 0, 0x7a],\\n        [11, 7, 1, 0x7b],\\n        [13, 7, 2, 0x7c],\\n        [17, 7, 3, 0x7d],\\n        [25, 7, 4, 0x7e],\\n        [41, 8, 5, 0xfe],\\n        [73, 8, 32, 0xff], \u002F\u002F upper\\n      ];\\n      break;\\n    case 13:\\n      lines = [\\n        [1, 1, 0, 0x0],\\n        [2, 3, 0, 0x4],\\n        [3, 4, 0, 0xc],\\n        [4, 5, 0, 0x1c],\\n        [5, 4, 1, 0xd],\\n        [7, 3, 3, 0x5],\\n        [15, 6, 1, 0x3a],\\n        [17, 6, 2, 0x3b],\\n        [21, 6, 3, 0x3c],\\n        [29, 6, 4, 0x3d],\\n        [45, 6, 5, 0x3e],\\n        [77, 7, 6, 0x7e],\\n        [141, 7, 32, 0x7f], \u002F\u002F upper\\n      ];\\n      break;\\n    case 14:\\n      lines = [\\n        [-2, 3, 0, 0x4],\\n        [-1, 3, 0, 0x5],\\n        [0, 1, 0, 0x0],\\n        [1, 3, 0, 0x6],\\n        [2, 3, 0, 0x7],\\n      ];\\n      break;\\n    case 15:\\n      lines = [\\n        [-24, 7, 4, 0x7c],\\n        [-8, 6, 2, 0x3c],\\n        [-4, 5, 1, 0x1c],\\n        [-2, 4, 0, 0xc],\\n        [-1, 3, 0, 0x4],\\n        [0, 1, 0, 0x0],\\n        [1, 3, 0, 0x5],\\n        [2, 4, 0, 0xd],\\n        [3, 5, 1, 0x1d],\\n        [5, 6, 2, 0x3d],\\n        [9, 7, 4, 0x7d],\\n        [-25, 7, 32, 0x7e, \\\"lower\\\"],\\n        [25, 7, 32, 0x7f], \u002F\u002F upper\\n      ];\\n      break;\\n    default:\\n      throw new Jbig2Error(`standard table B.${number} does not exist`);\\n  }\\n\\n  for (let i = 0, ii = lines.length; i \u003C ii; i++) {\\n    lines[i] = new HuffmanLine(lines[i]);\\n  }\\n  table = new HuffmanTable(lines, true);\\n  standardTablesCache[number] = table;\\n  return table;\\n}\\n\\nclass Reader {\\n  constructor(data, start, end) {\\n    this.data = data;\\n    this.start = start;\\n    this.end = end;\\n    this.position = start;\\n    this.shift = -1;\\n    this.currentByte = 0;\\n  }\\n\\n  readBit() {\\n    if (this.shift \u003C 0) {\\n      if (this.position >= this.end) {\\n        throw new Jbig2Error(\\\"end of data while reading bit\\\");\\n      }\\n      this.currentByte = this.data[this.position++];\\n      this.shift = 7;\\n    }\\n    const bit = (this.currentByte >> this.shift) & 1;\\n    this.shift--;\\n    return bit;\\n  }\\n\\n  readBits(numBits) {\\n    let result = 0,\\n      i;\\n    for (i = numBits - 1; i >= 0; i--) {\\n      result |= this.readBit() \u003C\u003C i;\\n    }\\n    return result;\\n  }\\n\\n  byteAlign() {\\n    this.shift = -1;\\n  }\\n\\n  next() {\\n    if (this.position >= this.end) {\\n      return -1;\\n    }\\n    return this.data[this.position++];\\n  }\\n}\\n\\nfunction getCustomHuffmanTable(index, referredTo, customTables) {\\n  \u002F\u002F Returns a Tables segment that has been earlier decoded.\\n  \u002F\u002F See 7.4.2.1.6 (symbol dictionary) or 7.4.3.1.6 (text region).\\n  let currentIndex = 0;\\n  for (let i = 0, ii = referredTo.length; i \u003C ii; i++) {\\n    const table = customTables[referredTo[i]];\\n    if (table) {\\n      if (index === currentIndex) {\\n        return table;\\n      }\\n      currentIndex++;\\n    }\\n  }\\n  throw new Jbig2Error(\\\"can't find custom Huffman table\\\");\\n}\\n\\nfunction getTextRegionHuffmanTables(\\n  textRegion,\\n  referredTo,\\n  customTables,\\n  numberOfSymbols,\\n  reader\\n) {\\n  \u002F\u002F 7.4.3.1.7 Symbol ID Huffman table decoding\\n\\n  \u002F\u002F Read code lengths for RUNCODEs 0...34.\\n  const codes = [];\\n  for (let i = 0; i \u003C= 34; i++) {\\n    const codeLength = reader.readBits(4);\\n    codes.push(new HuffmanLine([i, codeLength, 0, 0]));\\n  }\\n  \u002F\u002F Assign Huffman codes for RUNCODEs.\\n  const runCodesTable = new HuffmanTable(codes, false);\\n\\n  \u002F\u002F Read a Huffman code using the assignment above.\\n  \u002F\u002F Interpret the RUNCODE codes and the additional bits (if any).\\n  codes.length = 0;\\n  for (let i = 0; i \u003C numberOfSymbols; ) {\\n    const codeLength = runCodesTable.decode(reader);\\n    if (codeLength >= 32) {\\n      let repeatedLength, numberOfRepeats, j;\\n      switch (codeLength) {\\n        case 32:\\n          if (i === 0) {\\n            throw new Jbig2Error(\\\"no previous value in symbol ID table\\\");\\n          }\\n          numberOfRepeats = reader.readBits(2) + 3;\\n          repeatedLength = codes[i - 1].prefixLength;\\n          break;\\n        case 33:\\n          numberOfRepeats = reader.readBits(3) + 3;\\n          repeatedLength = 0;\\n          break;\\n        case 34:\\n          numberOfRepeats = reader.readBits(7) + 11;\\n          repeatedLength = 0;\\n          break;\\n        default:\\n          throw new Jbig2Error(\\\"invalid code length in symbol ID table\\\");\\n      }\\n      for (j = 0; j \u003C numberOfRepeats; j++) {\\n        codes.push(new HuffmanLine([i, repeatedLength, 0, 0]));\\n        i++;\\n      }\\n    } else {\\n      codes.push(new HuffmanLine([i, codeLength, 0, 0]));\\n      i++;\\n    }\\n  }\\n  reader.byteAlign();\\n  const symbolIDTable = new HuffmanTable(codes, false);\\n\\n  \u002F\u002F 7.4.3.1.6 Text region segment Huffman table selection\\n\\n  let customIndex = 0,\\n    tableFirstS,\\n    tableDeltaS,\\n    tableDeltaT;\\n\\n  switch (textRegion.huffmanFS) {\\n    case 0:\\n    case 1:\\n      tableFirstS = getStandardTable(textRegion.huffmanFS + 6);\\n      break;\\n    case 3:\\n      tableFirstS = getCustomHuffmanTable(\\n        customIndex,\\n        referredTo,\\n        customTables\\n      );\\n      customIndex++;\\n      break;\\n    default:\\n      throw new Jbig2Error(\\\"invalid Huffman FS selector\\\");\\n  }\\n\\n  switch (textRegion.huffmanDS) {\\n    case 0:\\n    case 1:\\n    case 2:\\n      tableDeltaS = getStandardTable(textRegion.huffmanDS + 8);\\n      break;\\n    case 3:\\n      tableDeltaS = getCustomHuffmanTable(\\n        customIndex,\\n        referredTo,\\n        customTables\\n      );\\n      customIndex++;\\n      break;\\n    default:\\n      throw new Jbig2Error(\\\"invalid Huffman DS selector\\\");\\n  }\\n\\n  switch (textRegion.huffmanDT) {\\n    case 0:\\n    case 1:\\n    case 2:\\n      tableDeltaT = getStandardTable(textRegion.huffmanDT + 11);\\n      break;\\n    case 3:\\n      tableDeltaT = getCustomHuffmanTable(\\n        customIndex,\\n        referredTo,\\n        customTables\\n      );\\n      customIndex++;\\n      break;\\n    default:\\n      throw new Jbig2Error(\\\"invalid Huffman DT selector\\\");\\n  }\\n\\n  if (textRegion.refinement) {\\n    \u002F\u002F Load tables RDW, RDH, RDX and RDY.\\n    throw new Jbig2Error(\\\"refinement with Huffman is not supported\\\");\\n  }\\n\\n  return {\\n    symbolIDTable,\\n    tableFirstS,\\n    tableDeltaS,\\n    tableDeltaT,\\n  };\\n}\\n\\nfunction getSymbolDictionaryHuffmanTables(\\n  dictionary,\\n  referredTo,\\n  customTables\\n) {\\n  \u002F\u002F 7.4.2.1.6 Symbol dictionary segment Huffman table selection\\n\\n  let customIndex = 0,\\n    tableDeltaHeight,\\n    tableDeltaWidth;\\n  switch (dictionary.huffmanDHSelector) {\\n    case 0:\\n    case 1:\\n      tableDeltaHeight = getStandardTable(dictionary.huffmanDHSelector + 4);\\n      break;\\n    case 3:\\n      tableDeltaHeight = getCustomHuffmanTable(\\n        customIndex,\\n        referredTo,\\n        customTables\\n      );\\n      customIndex++;\\n      break;\\n    default:\\n      throw new Jbig2Error(\\\"invalid Huffman DH selector\\\");\\n  }\\n\\n  switch (dictionary.huffmanDWSelector) {\\n    case 0:\\n    case 1:\\n      tableDeltaWidth = getStandardTable(dictionary.huffmanDWSelector + 2);\\n      break;\\n    case 3:\\n      tableDeltaWidth = getCustomHuffmanTable(\\n        customIndex,\\n        referredTo,\\n        customTables\\n      );\\n      customIndex++;\\n      break;\\n    default:\\n      throw new Jbig2Error(\\\"invalid Huffman DW selector\\\");\\n  }\\n\\n  let tableBitmapSize, tableAggregateInstances;\\n  if (dictionary.bitmapSizeSelector) {\\n    tableBitmapSize = getCustomHuffmanTable(\\n      customIndex,\\n      referredTo,\\n      customTables\\n    );\\n    customIndex++;\\n  } else {\\n    tableBitmapSize = getStandardTable(1);\\n  }\\n\\n  if (dictionary.aggregationInstancesSelector) {\\n    tableAggregateInstances = getCustomHuffmanTable(\\n      customIndex,\\n      referredTo,\\n      customTables\\n    );\\n  } else {\\n    tableAggregateInstances = getStandardTable(1);\\n  }\\n\\n  return {\\n    tableDeltaHeight,\\n    tableDeltaWidth,\\n    tableBitmapSize,\\n    tableAggregateInstances,\\n  };\\n}\\n\\nfunction readUncompressedBitmap(reader, width, height) {\\n  const bitmap = [];\\n  for (let y = 0; y \u003C height; y++) {\\n    const row = new Uint8Array(width);\\n    bitmap.push(row);\\n    for (let x = 0; x \u003C width; x++) {\\n      row[x] = reader.readBit();\\n    }\\n    reader.byteAlign();\\n  }\\n  return bitmap;\\n}\\n\\nfunction decodeMMRBitmap(input, width, height, endOfBlock) {\\n  \u002F\u002F MMR is the same compression algorithm as the PDF filter\\n  \u002F\u002F CCITTFaxDecode with \u002FK -1.\\n  const params = {\\n    K: -1,\\n    Columns: width,\\n    Rows: height,\\n    BlackIs1: true,\\n    EndOfBlock: endOfBlock,\\n  };\\n  const decoder = new CCITTFaxDecoder(input, params);\\n  const bitmap = [];\\n  let currentByte,\\n    eof = false;\\n\\n  for (let y = 0; y \u003C height; y++) {\\n    const row = new Uint8Array(width);\\n    bitmap.push(row);\\n    let shift = -1;\\n    for (let x = 0; x \u003C width; x++) {\\n      if (shift \u003C 0) {\\n        currentByte = decoder.readNextChar();\\n        if (currentByte === -1) {\\n          \u002F\u002F Set the rest of the bits to zero.\\n          currentByte = 0;\\n          eof = true;\\n        }\\n        shift = 7;\\n      }\\n      row[x] = (currentByte >> shift) & 1;\\n      shift--;\\n    }\\n  }\\n\\n  if (endOfBlock && !eof) {\\n    \u002F\u002F Read until EOFB has been consumed.\\n    const lookForEOFLimit = 5;\\n    for (let i = 0; i \u003C lookForEOFLimit; i++) {\\n      if (decoder.readNextChar() === -1) {\\n        break;\\n      }\\n    }\\n  }\\n\\n  return bitmap;\\n}\\n\\nclass Jbig2Image {\\n  parseChunks(chunks) {\\n    return parseJbig2Chunks(chunks);\\n  }\\n\\n  parse(data) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"IMAGE_DECODERS\\\")) {\\n      throw new Error(\\\"Not implemented: Jbig2Image.parse\\\");\\n    }\\n    const { imgData, width, height } = parseJbig2(data);\\n    this.width = width;\\n    this.height = height;\\n    return imgData;\\n  }\\n}\\n\\nexport { Jbig2Error, Jbig2Image };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { DecodeStream } from \\\".\u002Fdecode_stream.js\\\";\\nimport { Dict } from \\\".\u002Fprimitives.js\\\";\\nimport { Jbig2Image } from \\\".\u002Fjbig2.js\\\";\\nimport { shadow } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\n\u002F**\\n * For JBIG2's we use a library to decode these images and\\n * the stream behaves like all the other DecodeStreams.\\n *\u002F\\nclass Jbig2Stream extends DecodeStream {\\n  constructor(stream, maybeLength, params) {\\n    super(maybeLength);\\n\\n    this.stream = stream;\\n    this.dict = stream.dict;\\n    this.maybeLength = maybeLength;\\n    this.params = params;\\n  }\\n\\n  get bytes() {\\n    \u002F\u002F If `this.maybeLength` is null, we'll get the entire stream.\\n    return shadow(this, \\\"bytes\\\", this.stream.getBytes(this.maybeLength));\\n  }\\n\\n  ensureBuffer(requested) {\\n    \u002F\u002F No-op, since `this.readBlock` will always parse the entire image and\\n    \u002F\u002F directly insert all of its data into `this.buffer`.\\n  }\\n\\n  readBlock() {\\n    this.decodeImage();\\n  }\\n\\n  decodeImage(bytes) {\\n    if (this.eof) {\\n      return this.buffer;\\n    }\\n    bytes ||= this.bytes;\\n    const jbig2Image = new Jbig2Image();\\n\\n    const chunks = [];\\n    if (this.params instanceof Dict) {\\n      const globalsStream = this.params.get(\\\"JBIG2Globals\\\");\\n      if (globalsStream instanceof BaseStream) {\\n        const globals = globalsStream.getBytes();\\n        chunks.push({ data: globals, start: 0, end: globals.length });\\n      }\\n    }\\n    chunks.push({ data: bytes, start: 0, end: bytes.length });\\n    const data = jbig2Image.parseChunks(chunks);\\n    const dataLength = data.length;\\n\\n    \u002F\u002F JBIG2 had black as 1 and white as 0, inverting the colors\\n    for (let i = 0; i \u003C dataLength; i++) {\\n      data[i] ^= 0xff;\\n    }\\n    this.buffer = data;\\n    this.bufferLength = dataLength;\\n    this.eof = true;\\n\\n    return this.buffer;\\n  }\\n\\n  get canAsyncDecodeImageFromBuffer() {\\n    return this.stream.isAsync;\\n  }\\n}\\n\\nexport { Jbig2Stream };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { shadow, unreachable } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { DecodeStream } from \\\".\u002Fdecode_stream.js\\\";\\nimport { JpxImage } from \\\".\u002Fjpx.js\\\";\\n\\n\u002F**\\n * For JPEG 2000's we use a library to decode these images and\\n * the stream behaves like all the other DecodeStreams.\\n *\u002F\\nclass JpxStream extends DecodeStream {\\n  constructor(stream, maybeLength, params) {\\n    super(maybeLength);\\n\\n    this.stream = stream;\\n    this.dict = stream.dict;\\n    this.maybeLength = maybeLength;\\n    this.params = params;\\n  }\\n\\n  get bytes() {\\n    \u002F\u002F If `this.maybeLength` is null, we'll get the entire stream.\\n    return shadow(this, \\\"bytes\\\", this.stream.getBytes(this.maybeLength));\\n  }\\n\\n  ensureBuffer(requested) {\\n    \u002F\u002F No-op, since `this.readBlock` will always parse the entire image and\\n    \u002F\u002F directly insert all of its data into `this.buffer`.\\n  }\\n\\n  readBlock(decoderOptions) {\\n    unreachable(\\\"JpxStream.readBlock\\\");\\n  }\\n\\n  get isAsyncDecoder() {\\n    return true;\\n  }\\n\\n  async decodeImage(bytes, decoderOptions) {\\n    if (this.eof) {\\n      return this.buffer;\\n    }\\n    bytes ||= this.bytes;\\n    this.buffer = await JpxImage.decode(bytes, decoderOptions);\\n    this.bufferLength = this.buffer.length;\\n    this.eof = true;\\n\\n    return this.buffer;\\n  }\\n\\n  get canAsyncDecodeImageFromBuffer() {\\n    return this.stream.isAsync;\\n  }\\n}\\n\\nexport { JpxStream };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { DecodeStream } from \\\".\u002Fdecode_stream.js\\\";\\n\\nclass LZWStream extends DecodeStream {\\n  constructor(str, maybeLength, earlyChange) {\\n    super(maybeLength);\\n\\n    this.str = str;\\n    this.dict = str.dict;\\n    this.cachedData = 0;\\n    this.bitsCached = 0;\\n\\n    const maxLzwDictionarySize = 4096;\\n    const lzwState = {\\n      earlyChange,\\n      codeLength: 9,\\n      nextCode: 258,\\n      dictionaryValues: new Uint8Array(maxLzwDictionarySize),\\n      dictionaryLengths: new Uint16Array(maxLzwDictionarySize),\\n      dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize),\\n      currentSequence: new Uint8Array(maxLzwDictionarySize),\\n      currentSequenceLength: 0,\\n    };\\n    for (let i = 0; i \u003C 256; ++i) {\\n      lzwState.dictionaryValues[i] = i;\\n      lzwState.dictionaryLengths[i] = 1;\\n    }\\n    this.lzwState = lzwState;\\n  }\\n\\n  readBits(n) {\\n    let bitsCached = this.bitsCached;\\n    let cachedData = this.cachedData;\\n    while (bitsCached \u003C n) {\\n      const c = this.str.getByte();\\n      if (c === -1) {\\n        this.eof = true;\\n        return null;\\n      }\\n      cachedData = (cachedData \u003C\u003C 8) | c;\\n      bitsCached += 8;\\n    }\\n    this.bitsCached = bitsCached -= n;\\n    this.cachedData = cachedData;\\n    this.lastCode = null;\\n    return (cachedData >>> bitsCached) & ((1 \u003C\u003C n) - 1);\\n  }\\n\\n  readBlock() {\\n    const blockSize = 512,\\n      decodedSizeDelta = blockSize;\\n    let estimatedDecodedSize = blockSize * 2;\\n    let i, j, q;\\n\\n    const lzwState = this.lzwState;\\n    if (!lzwState) {\\n      return; \u002F\u002F eof was found\\n    }\\n\\n    const earlyChange = lzwState.earlyChange;\\n    let nextCode = lzwState.nextCode;\\n    const dictionaryValues = lzwState.dictionaryValues;\\n    const dictionaryLengths = lzwState.dictionaryLengths;\\n    const dictionaryPrevCodes = lzwState.dictionaryPrevCodes;\\n    let codeLength = lzwState.codeLength;\\n    let prevCode = lzwState.prevCode;\\n    const currentSequence = lzwState.currentSequence;\\n    let currentSequenceLength = lzwState.currentSequenceLength;\\n\\n    let decodedLength = 0;\\n    let currentBufferLength = this.bufferLength;\\n    let buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\\n\\n    for (i = 0; i \u003C blockSize; i++) {\\n      const code = this.readBits(codeLength);\\n      const hasPrev = currentSequenceLength > 0;\\n      if (code \u003C 256) {\\n        currentSequence[0] = code;\\n        currentSequenceLength = 1;\\n      } else if (code >= 258) {\\n        if (code \u003C nextCode) {\\n          currentSequenceLength = dictionaryLengths[code];\\n          for (j = currentSequenceLength - 1, q = code; j >= 0; j--) {\\n            currentSequence[j] = dictionaryValues[q];\\n            q = dictionaryPrevCodes[q];\\n          }\\n        } else {\\n          currentSequence[currentSequenceLength++] = currentSequence[0];\\n        }\\n      } else if (code === 256) {\\n        codeLength = 9;\\n        nextCode = 258;\\n        currentSequenceLength = 0;\\n        continue;\\n      } else {\\n        this.eof = true;\\n        delete this.lzwState;\\n        break;\\n      }\\n\\n      if (hasPrev) {\\n        dictionaryPrevCodes[nextCode] = prevCode;\\n        dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1;\\n        dictionaryValues[nextCode] = currentSequence[0];\\n        nextCode++;\\n        codeLength =\\n          (nextCode + earlyChange) & (nextCode + earlyChange - 1)\\n            ? codeLength\\n            : Math.min(\\n                Math.log(nextCode + earlyChange) \u002F 0.6931471805599453 + 1,\\n                12\\n              ) | 0;\\n      }\\n      prevCode = code;\\n\\n      decodedLength += currentSequenceLength;\\n      if (estimatedDecodedSize \u003C decodedLength) {\\n        do {\\n          estimatedDecodedSize += decodedSizeDelta;\\n        } while (estimatedDecodedSize \u003C decodedLength);\\n        buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\\n      }\\n      for (j = 0; j \u003C currentSequenceLength; j++) {\\n        buffer[currentBufferLength++] = currentSequence[j];\\n      }\\n    }\\n    lzwState.nextCode = nextCode;\\n    lzwState.codeLength = codeLength;\\n    lzwState.prevCode = prevCode;\\n    lzwState.currentSequenceLength = currentSequenceLength;\\n\\n    this.bufferLength = currentBufferLength;\\n  }\\n}\\n\\nexport { LZWStream };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { DecodeStream } from \\\".\u002Fdecode_stream.js\\\";\\nimport { Dict } from \\\".\u002Fprimitives.js\\\";\\nimport { FormatError } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nclass PredictorStream extends DecodeStream {\\n  constructor(str, maybeLength, params) {\\n    super(maybeLength);\\n\\n    if (!(params instanceof Dict)) {\\n      return str; \u002F\u002F no prediction\\n    }\\n    const predictor = (this.predictor = params.get(\\\"Predictor\\\") || 1);\\n\\n    if (predictor \u003C= 1) {\\n      return str; \u002F\u002F no prediction\\n    }\\n    if (predictor !== 2 && (predictor \u003C 10 || predictor > 15)) {\\n      throw new FormatError(`Unsupported predictor: ${predictor}`);\\n    }\\n\\n    this.readBlock = predictor === 2 ? this.readBlockTiff : this.readBlockPng;\\n\\n    this.str = str;\\n    this.dict = str.dict;\\n\\n    const colors = (this.colors = params.get(\\\"Colors\\\") || 1);\\n    const bits = (this.bits = params.get(\\\"BPC\\\", \\\"BitsPerComponent\\\") || 8);\\n    const columns = (this.columns = params.get(\\\"Columns\\\") || 1);\\n\\n    this.pixBytes = (colors * bits + 7) >> 3;\\n    this.rowBytes = (columns * colors * bits + 7) >> 3;\\n\\n    return this;\\n  }\\n\\n  readBlockTiff() {\\n    const rowBytes = this.rowBytes;\\n\\n    const bufferLength = this.bufferLength;\\n    const buffer = this.ensureBuffer(bufferLength + rowBytes);\\n\\n    const bits = this.bits;\\n    const colors = this.colors;\\n\\n    const rawBytes = this.str.getBytes(rowBytes);\\n    this.eof = !rawBytes.length;\\n    if (this.eof) {\\n      return;\\n    }\\n\\n    let inbuf = 0,\\n      outbuf = 0;\\n    let inbits = 0,\\n      outbits = 0;\\n    let pos = bufferLength;\\n    let i;\\n\\n    if (bits === 1 && colors === 1) {\\n      \u002F\u002F Optimized version of the loop in the \\\"else\\\"-branch\\n      \u002F\u002F for 1 bit-per-component and 1 color TIFF images.\\n      for (i = 0; i \u003C rowBytes; ++i) {\\n        let c = rawBytes[i] ^ inbuf;\\n        c ^= c >> 1;\\n        c ^= c >> 2;\\n        c ^= c >> 4;\\n        inbuf = (c & 1) \u003C\u003C 7;\\n        buffer[pos++] = c;\\n      }\\n    } else if (bits === 8) {\\n      for (i = 0; i \u003C colors; ++i) {\\n        buffer[pos++] = rawBytes[i];\\n      }\\n      for (; i \u003C rowBytes; ++i) {\\n        buffer[pos] = buffer[pos - colors] + rawBytes[i];\\n        pos++;\\n      }\\n    } else if (bits === 16) {\\n      const bytesPerPixel = colors * 2;\\n      for (i = 0; i \u003C bytesPerPixel; ++i) {\\n        buffer[pos++] = rawBytes[i];\\n      }\\n      for (; i \u003C rowBytes; i += 2) {\\n        const sum =\\n          ((rawBytes[i] & 0xff) \u003C\u003C 8) +\\n          (rawBytes[i + 1] & 0xff) +\\n          ((buffer[pos - bytesPerPixel] & 0xff) \u003C\u003C 8) +\\n          (buffer[pos - bytesPerPixel + 1] & 0xff);\\n        buffer[pos++] = (sum >> 8) & 0xff;\\n        buffer[pos++] = sum & 0xff;\\n      }\\n    } else {\\n      const compArray = new Uint8Array(colors + 1);\\n      const bitMask = (1 \u003C\u003C bits) - 1;\\n      let j = 0,\\n        k = bufferLength;\\n      const columns = this.columns;\\n      for (i = 0; i \u003C columns; ++i) {\\n        for (let kk = 0; kk \u003C colors; ++kk) {\\n          if (inbits \u003C bits) {\\n            inbuf = (inbuf \u003C\u003C 8) | (rawBytes[j++] & 0xff);\\n            inbits += 8;\\n          }\\n          compArray[kk] =\\n            (compArray[kk] + (inbuf >> (inbits - bits))) & bitMask;\\n          inbits -= bits;\\n          outbuf = (outbuf \u003C\u003C bits) | compArray[kk];\\n          outbits += bits;\\n          if (outbits >= 8) {\\n            buffer[k++] = (outbuf >> (outbits - 8)) & 0xff;\\n            outbits -= 8;\\n          }\\n        }\\n      }\\n      if (outbits > 0) {\\n        buffer[k++] =\\n          (outbuf \u003C\u003C (8 - outbits)) + (inbuf & ((1 \u003C\u003C (8 - outbits)) - 1));\\n      }\\n    }\\n    this.bufferLength += rowBytes;\\n  }\\n\\n  readBlockPng() {\\n    const rowBytes = this.rowBytes;\\n    const pixBytes = this.pixBytes;\\n\\n    const predictor = this.str.getByte();\\n    const rawBytes = this.str.getBytes(rowBytes);\\n    this.eof = !rawBytes.length;\\n    if (this.eof) {\\n      return;\\n    }\\n\\n    const bufferLength = this.bufferLength;\\n    const buffer = this.ensureBuffer(bufferLength + rowBytes);\\n\\n    let prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);\\n    if (prevRow.length === 0) {\\n      prevRow = new Uint8Array(rowBytes);\\n    }\\n\\n    let i,\\n      j = bufferLength,\\n      up,\\n      c;\\n    switch (predictor) {\\n      case 0:\\n        for (i = 0; i \u003C rowBytes; ++i) {\\n          buffer[j++] = rawBytes[i];\\n        }\\n        break;\\n      case 1:\\n        for (i = 0; i \u003C pixBytes; ++i) {\\n          buffer[j++] = rawBytes[i];\\n        }\\n        for (; i \u003C rowBytes; ++i) {\\n          buffer[j] = (buffer[j - pixBytes] + rawBytes[i]) & 0xff;\\n          j++;\\n        }\\n        break;\\n      case 2:\\n        for (i = 0; i \u003C rowBytes; ++i) {\\n          buffer[j++] = (prevRow[i] + rawBytes[i]) & 0xff;\\n        }\\n        break;\\n      case 3:\\n        for (i = 0; i \u003C pixBytes; ++i) {\\n          buffer[j++] = (prevRow[i] >> 1) + rawBytes[i];\\n        }\\n        for (; i \u003C rowBytes; ++i) {\\n          buffer[j] =\\n            (((prevRow[i] + buffer[j - pixBytes]) >> 1) + rawBytes[i]) & 0xff;\\n          j++;\\n        }\\n        break;\\n      case 4:\\n        \u002F\u002F we need to save the up left pixels values. the simplest way\\n        \u002F\u002F is to create a new buffer\\n        for (i = 0; i \u003C pixBytes; ++i) {\\n          up = prevRow[i];\\n          c = rawBytes[i];\\n          buffer[j++] = up + c;\\n        }\\n        for (; i \u003C rowBytes; ++i) {\\n          up = prevRow[i];\\n          const upLeft = prevRow[i - pixBytes];\\n          const left = buffer[j - pixBytes];\\n          const p = left + up - upLeft;\\n\\n          let pa = p - left;\\n          if (pa \u003C 0) {\\n            pa = -pa;\\n          }\\n          let pb = p - up;\\n          if (pb \u003C 0) {\\n            pb = -pb;\\n          }\\n          let pc = p - upLeft;\\n          if (pc \u003C 0) {\\n            pc = -pc;\\n          }\\n\\n          c = rawBytes[i];\\n          if (pa \u003C= pb && pa \u003C= pc) {\\n            buffer[j++] = left + c;\\n          } else if (pb \u003C= pc) {\\n            buffer[j++] = up + c;\\n          } else {\\n            buffer[j++] = upLeft + c;\\n          }\\n        }\\n        break;\\n      default:\\n        throw new FormatError(`Unsupported predictor: ${predictor}`);\\n    }\\n    this.bufferLength += rowBytes;\\n  }\\n}\\n\\nexport { PredictorStream };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { DecodeStream } from \\\".\u002Fdecode_stream.js\\\";\\n\\nclass RunLengthStream extends DecodeStream {\\n  constructor(str, maybeLength) {\\n    super(maybeLength);\\n\\n    this.str = str;\\n    this.dict = str.dict;\\n  }\\n\\n  readBlock() {\\n    \u002F\u002F The repeatHeader has following format. The first byte defines type of run\\n    \u002F\u002F and amount of bytes to repeat\u002Fcopy: n = 0 through 127 - copy next n bytes\\n    \u002F\u002F (in addition to the second byte from the header), n = 129 through 255 -\\n    \u002F\u002F duplicate the second byte from the header (257 - n) times, n = 128 - end.\\n    const repeatHeader = this.str.getBytes(2);\\n    if (!repeatHeader || repeatHeader.length \u003C 2 || repeatHeader[0] === 128) {\\n      this.eof = true;\\n      return;\\n    }\\n\\n    let buffer;\\n    let bufferLength = this.bufferLength;\\n    let n = repeatHeader[0];\\n    if (n \u003C 128) {\\n      \u002F\u002F copy n bytes\\n      buffer = this.ensureBuffer(bufferLength + n + 1);\\n      buffer[bufferLength++] = repeatHeader[1];\\n      if (n > 0) {\\n        const source = this.str.getBytes(n);\\n        buffer.set(source, bufferLength);\\n        bufferLength += n;\\n      }\\n    } else {\\n      n = 257 - n;\\n      buffer = this.ensureBuffer(bufferLength + n + 1);\\n      buffer.fill(repeatHeader[1], bufferLength, bufferLength + n);\\n      bufferLength += n;\\n    }\\n    this.bufferLength = bufferLength;\\n  }\\n}\\n\\nexport { RunLengthStream };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  assert,\\n  bytesToString,\\n  FormatError,\\n  info,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { Cmd, Dict, EOF, isCmd, Name, Ref } from \\\".\u002Fprimitives.js\\\";\\nimport {\\n  isWhiteSpace,\\n  MissingDataException,\\n  ParserEOFException,\\n} from \\\".\u002Fcore_utils.js\\\";\\nimport { NullStream, Stream } from \\\".\u002Fstream.js\\\";\\nimport { Ascii85Stream } from \\\".\u002Fascii_85_stream.js\\\";\\nimport { AsciiHexStream } from \\\".\u002Fascii_hex_stream.js\\\";\\nimport { CCITTFaxStream } from \\\".\u002Fccitt_stream.js\\\";\\nimport { FlateStream } from \\\".\u002Fflate_stream.js\\\";\\nimport { Jbig2Stream } from \\\".\u002Fjbig2_stream.js\\\";\\nimport { JpegStream } from \\\".\u002Fjpeg_stream.js\\\";\\nimport { JpxStream } from \\\".\u002Fjpx_stream.js\\\";\\nimport { LZWStream } from \\\".\u002Flzw_stream.js\\\";\\nimport { PredictorStream } from \\\".\u002Fpredictor_stream.js\\\";\\nimport { RunLengthStream } from \\\".\u002Frun_length_stream.js\\\";\\n\\nconst MAX_LENGTH_TO_CACHE = 1000;\\n\\nfunction getInlineImageCacheKey(bytes) {\\n  const strBuf = [],\\n    ii = bytes.length;\\n  let i = 0;\\n  while (i \u003C ii - 1) {\\n    strBuf.push((bytes[i++] \u003C\u003C 8) | bytes[i++]);\\n  }\\n  \u002F\u002F Handle an odd number of elements.\\n  if (i \u003C ii) {\\n    strBuf.push(bytes[i]);\\n  }\\n  \u002F\u002F We purposely include the \\\"raw\\\" length in the cacheKey, to prevent any\\n  \u002F\u002F possible issues with hash collisions in the inline image cache.\\n  \u002F\u002F Here we also assume that `strBuf` is never larger than 8192 elements,\\n  \u002F\u002F please refer to the `bytesToString` implementation.\\n  return ii + \\\"_\\\" + String.fromCharCode.apply(null, strBuf);\\n}\\n\\nclass Parser {\\n  constructor({ lexer, xref, allowStreams = false, recoveryMode = false }) {\\n    this.lexer = lexer;\\n    this.xref = xref;\\n    this.allowStreams = allowStreams;\\n    this.recoveryMode = recoveryMode;\\n\\n    this.imageCache = Object.create(null);\\n    this._imageId = 0;\\n    this.refill();\\n  }\\n\\n  refill() {\\n    this.buf1 = this.lexer.getObj();\\n    this.buf2 = this.lexer.getObj();\\n  }\\n\\n  shift() {\\n    if (this.buf2 instanceof Cmd && this.buf2.cmd === \\\"ID\\\") {\\n      this.buf1 = this.buf2;\\n      this.buf2 = null;\\n    } else {\\n      this.buf1 = this.buf2;\\n      this.buf2 = this.lexer.getObj();\\n    }\\n  }\\n\\n  tryShift() {\\n    try {\\n      this.shift();\\n      return true;\\n    } catch (e) {\\n      if (e instanceof MissingDataException) {\\n        throw e;\\n      }\\n      \u002F\u002F Upon failure, the caller should reset this.lexer.pos to a known good\\n      \u002F\u002F state and call this.shift() twice to reset the buffers.\\n      return false;\\n    }\\n  }\\n\\n  getObj(cipherTransform = null) {\\n    const buf1 = this.buf1;\\n    this.shift();\\n\\n    if (buf1 instanceof Cmd) {\\n      switch (buf1.cmd) {\\n        case \\\"BI\\\": \u002F\u002F inline image\\n          return this.makeInlineImage(cipherTransform);\\n        case \\\"[\\\": \u002F\u002F array\\n          const array = [];\\n          while (!isCmd(this.buf1, \\\"]\\\") && this.buf1 !== EOF) {\\n            array.push(this.getObj(cipherTransform));\\n          }\\n          if (this.buf1 === EOF) {\\n            if (this.recoveryMode) {\\n              return array;\\n            }\\n            throw new ParserEOFException(\\\"End of file inside array.\\\");\\n          }\\n          this.shift();\\n          return array;\\n        case \\\"\u003C\u003C\\\": \u002F\u002F dictionary or stream\\n          const dict = new Dict(this.xref);\\n          while (!isCmd(this.buf1, \\\">>\\\") && this.buf1 !== EOF) {\\n            if (!(this.buf1 instanceof Name)) {\\n              info(\\\"Malformed dictionary: key must be a name object\\\");\\n              this.shift();\\n              continue;\\n            }\\n\\n            const key = this.buf1.name;\\n            this.shift();\\n            if (this.buf1 === EOF) {\\n              break;\\n            }\\n            dict.set(key, this.getObj(cipherTransform));\\n          }\\n          if (this.buf1 === EOF) {\\n            if (this.recoveryMode) {\\n              return dict;\\n            }\\n            throw new ParserEOFException(\\\"End of file inside dictionary.\\\");\\n          }\\n\\n          \u002F\u002F Stream objects are not allowed inside content streams or\\n          \u002F\u002F object streams.\\n          if (isCmd(this.buf2, \\\"stream\\\")) {\\n            return this.allowStreams\\n              ? this.makeStream(dict, cipherTransform)\\n              : dict;\\n          }\\n          this.shift();\\n          return dict;\\n        default: \u002F\u002F simple object\\n          return buf1;\\n      }\\n    }\\n\\n    if (Number.isInteger(buf1)) {\\n      \u002F\u002F indirect reference or integer\\n      if (Number.isInteger(this.buf1) && isCmd(this.buf2, \\\"R\\\")) {\\n        const ref = Ref.get(buf1, this.buf1);\\n        this.shift();\\n        this.shift();\\n        return ref;\\n      }\\n      return buf1;\\n    }\\n\\n    if (typeof buf1 === \\\"string\\\") {\\n      if (cipherTransform) {\\n        return cipherTransform.decryptString(buf1);\\n      }\\n      return buf1;\\n    }\\n\\n    \u002F\u002F simple object\\n    return buf1;\\n  }\\n\\n  \u002F**\\n   * Find the end of the stream by searching for the \u002FEI\\\\s\u002F.\\n   * @returns {number} The inline stream length.\\n   *\u002F\\n  findDefaultInlineStreamEnd(stream) {\\n    const E = 0x45,\\n      I = 0x49,\\n      SPACE = 0x20,\\n      LF = 0xa,\\n      CR = 0xd,\\n      NUL = 0x0;\\n    const { knownCommands } = this.lexer,\\n      startPos = stream.pos,\\n      n = 15;\\n    let state = 0,\\n      ch,\\n      maybeEIPos;\\n    while ((ch = stream.getByte()) !== -1) {\\n      if (state === 0) {\\n        state = ch === E ? 1 : 0;\\n      } else if (state === 1) {\\n        state = ch === I ? 2 : 0;\\n      } else {\\n        if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n          assert(state === 2, \\\"findDefaultInlineStreamEnd - invalid state.\\\");\\n        }\\n        if (ch === SPACE || ch === LF || ch === CR) {\\n          maybeEIPos = stream.pos;\\n          \u002F\u002F Let's check that the next `n` bytes are ASCII... just to be sure.\\n          const followingBytes = stream.peekBytes(n);\\n\\n          const ii = followingBytes.length;\\n          if (ii === 0) {\\n            break; \u002F\u002F The end of the stream was reached, nothing to check.\\n          }\\n          for (let i = 0; i \u003C ii; i++) {\\n            ch = followingBytes[i];\\n            if (ch === NUL && followingBytes[i + 1] !== NUL) {\\n              \u002F\u002F NUL bytes are not supposed to occur *outside* of inline\\n              \u002F\u002F images, but some PDF generators violate that assumption,\\n              \u002F\u002F thus breaking the EI detection heuristics used below.\\n              \u002F\u002F\\n              \u002F\u002F However, we can't unconditionally treat NUL bytes as \\\"ASCII\\\",\\n              \u002F\u002F since that *could* result in inline images being truncated.\\n              \u002F\u002F\\n              \u002F\u002F To attempt to address this, we'll still treat any *sequence*\\n              \u002F\u002F of NUL bytes as non-ASCII, but for a *single* NUL byte we'll\\n              \u002F\u002F continue checking the `followingBytes` (fixes issue8823.pdf).\\n              continue;\\n            }\\n            if (ch !== LF && ch !== CR && (ch \u003C SPACE || ch > 0x7f)) {\\n              \u002F\u002F Not a LF, CR, SPACE or any visible ASCII character, i.e.\\n              \u002F\u002F it's binary stuff. Resetting the state.\\n              state = 0;\\n              break;\\n            }\\n          }\\n\\n          if (state !== 2) {\\n            continue;\\n          }\\n          if (!knownCommands) {\\n            warn(\\n              \\\"findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.\\\"\\n            );\\n            continue;\\n          }\\n          \u002F\u002F Check that the \\\"EI\\\" sequence isn't part of the image data, since\\n          \u002F\u002F that would cause the image to be truncated (fixes issue11124.pdf).\\n          \u002F\u002F\\n          \u002F\u002F Check more than the `followingBytes` to be able to find operators\\n          \u002F\u002F with multiple arguments, e.g. transform (cm) with decimal arguments\\n          \u002F\u002F (fixes issue19494.pdf).\\n          const tmpLexer = new Lexer(\\n            new Stream(stream.peekBytes(5 * n)),\\n            knownCommands\\n          );\\n          \u002F\u002F Reduce the number of (potential) warning messages.\\n          tmpLexer._hexStringWarn = () => {};\\n          let numArgs = 0;\\n\\n          while (true) {\\n            const nextObj = tmpLexer.getObj();\\n\\n            if (nextObj === EOF) {\\n              state = 0; \u002F\u002F No valid command found, resetting the state.\\n              break;\\n            }\\n            if (nextObj instanceof Cmd) {\\n              const knownCommand = knownCommands[nextObj.cmd];\\n              if (!knownCommand) {\\n                \u002F\u002F Not a valid command, i.e. the inline image data *itself*\\n                \u002F\u002F contains an \\\"EI\\\" sequence. Resetting the state.\\n                state = 0;\\n                break;\\n              } else if (\\n                knownCommand.variableArgs\\n                  ? numArgs \u003C= knownCommand.numArgs\\n                  : numArgs === knownCommand.numArgs\\n              ) {\\n                break; \u002F\u002F Valid command found.\\n              }\\n              numArgs = 0;\\n              continue;\\n            }\\n            numArgs++;\\n          }\\n\\n          if (state === 2) {\\n            break; \u002F\u002F Finished!\\n          }\\n        } else {\\n          state = 0;\\n        }\\n      }\\n    }\\n\\n    if (ch === -1) {\\n      warn(\\n        \\\"findDefaultInlineStreamEnd: \\\" +\\n          \\\"Reached the end of the stream without finding a valid EI marker\\\"\\n      );\\n      if (maybeEIPos) {\\n        warn('... trying to recover by using the last \\\"EI\\\" occurrence.');\\n        stream.skip(-(stream.pos - maybeEIPos)); \u002F\u002F Reset the stream position.\\n      }\\n    }\\n\\n    let endOffset = 4;\\n    stream.skip(-endOffset); \u002F\u002F Set the stream position to just before \\\"EI\\\".\\n    ch = stream.peekByte();\\n    stream.skip(endOffset); \u002F\u002F ... and remember to reset the stream position.\\n\\n    \u002F\u002F Ensure that we don't accidentally truncate the inline image, when the\\n    \u002F\u002F data is immediately followed by the \\\"EI\\\" marker (fixes issue10388.pdf).\\n    if (!isWhiteSpace(ch)) {\\n      endOffset--;\\n    }\\n    return stream.pos - endOffset - startPos;\\n  }\\n\\n  \u002F**\\n   * Find the EOI (end-of-image) marker 0xFFD9 of the stream.\\n   * @returns {number} The inline stream length.\\n   *\u002F\\n  findDCTDecodeInlineStreamEnd(stream) {\\n    const startPos = stream.pos;\\n    let foundEOI = false,\\n      b,\\n      markerLength;\\n    while ((b = stream.getByte()) !== -1) {\\n      if (b !== 0xff) {\\n        \u002F\u002F Not a valid marker.\\n        continue;\\n      }\\n      switch (stream.getByte()) {\\n        case 0x00: \u002F\u002F Byte stuffing.\\n          \u002F\u002F 0xFF00 appears to be a very common byte sequence in JPEG images.\\n          break;\\n\\n        case 0xff: \u002F\u002F Fill byte.\\n          \u002F\u002F Avoid skipping a valid marker, resetting the stream position.\\n          stream.skip(-1);\\n          break;\\n\\n        case 0xd9: \u002F\u002F EOI\\n          foundEOI = true;\\n          break;\\n\\n        case 0xc0: \u002F\u002F SOF0\\n        case 0xc1: \u002F\u002F SOF1\\n        case 0xc2: \u002F\u002F SOF2\\n        case 0xc3: \u002F\u002F SOF3\\n        \u002F* falls through *\u002F\\n        case 0xc5: \u002F\u002F SOF5\\n        case 0xc6: \u002F\u002F SOF6\\n        case 0xc7: \u002F\u002F SOF7\\n        \u002F* falls through *\u002F\\n        case 0xc9: \u002F\u002F SOF9\\n        case 0xca: \u002F\u002F SOF10\\n        case 0xcb: \u002F\u002F SOF11\\n        \u002F* falls through *\u002F\\n        case 0xcd: \u002F\u002F SOF13\\n        case 0xce: \u002F\u002F SOF14\\n        case 0xcf: \u002F\u002F SOF15\\n        \u002F* falls through *\u002F\\n        case 0xc4: \u002F\u002F DHT\\n        case 0xcc: \u002F\u002F DAC\\n        \u002F* falls through *\u002F\\n        case 0xda: \u002F\u002F SOS\\n        case 0xdb: \u002F\u002F DQT\\n        case 0xdc: \u002F\u002F DNL\\n        case 0xdd: \u002F\u002F DRI\\n        case 0xde: \u002F\u002F DHP\\n        case 0xdf: \u002F\u002F EXP\\n        \u002F* falls through *\u002F\\n        case 0xe0: \u002F\u002F APP0\\n        case 0xe1: \u002F\u002F APP1\\n        case 0xe2: \u002F\u002F APP2\\n        case 0xe3: \u002F\u002F APP3\\n        case 0xe4: \u002F\u002F APP4\\n        case 0xe5: \u002F\u002F APP5\\n        case 0xe6: \u002F\u002F APP6\\n        case 0xe7: \u002F\u002F APP7\\n        case 0xe8: \u002F\u002F APP8\\n        case 0xe9: \u002F\u002F APP9\\n        case 0xea: \u002F\u002F APP10\\n        case 0xeb: \u002F\u002F APP11\\n        case 0xec: \u002F\u002F APP12\\n        case 0xed: \u002F\u002F APP13\\n        case 0xee: \u002F\u002F APP14\\n        case 0xef: \u002F\u002F APP15\\n        \u002F* falls through *\u002F\\n        case 0xfe: \u002F\u002F COM\\n          \u002F\u002F The marker should be followed by the length of the segment.\\n          markerLength = stream.getUint16();\\n          if (markerLength > 2) {\\n            \u002F\u002F |markerLength| contains the byte length of the marker segment,\\n            \u002F\u002F including its own length (2 bytes) and excluding the marker.\\n            stream.skip(markerLength - 2); \u002F\u002F Jump to the next marker.\\n          } else {\\n            \u002F\u002F The marker length is invalid, resetting the stream position.\\n            stream.skip(-2);\\n          }\\n          break;\\n      }\\n      if (foundEOI) {\\n        break;\\n      }\\n    }\\n    const length = stream.pos - startPos;\\n    if (b === -1) {\\n      warn(\\n        \\\"Inline DCTDecode image stream: \\\" +\\n          \\\"EOI marker not found, searching for \u002FEI\u002F instead.\\\"\\n      );\\n      stream.skip(-length); \u002F\u002F Reset the stream position.\\n      return this.findDefaultInlineStreamEnd(stream);\\n    }\\n    this.inlineStreamSkipEI(stream);\\n    return length;\\n  }\\n\\n  \u002F**\\n   * Find the EOD (end-of-data) marker '~>' (i.e. TILDE + GT) of the stream.\\n   * @returns {number} The inline stream length.\\n   *\u002F\\n  findASCII85DecodeInlineStreamEnd(stream) {\\n    const TILDE = 0x7e,\\n      GT = 0x3e;\\n    const startPos = stream.pos;\\n    let ch;\\n    while ((ch = stream.getByte()) !== -1) {\\n      if (ch === TILDE) {\\n        const tildePos = stream.pos;\\n\\n        ch = stream.peekByte();\\n        \u002F\u002F Handle corrupt PDF documents which contains whitespace \\\"inside\\\" of\\n        \u002F\u002F the EOD marker (fixes issue10614.pdf).\\n        while (isWhiteSpace(ch)) {\\n          stream.skip();\\n          ch = stream.peekByte();\\n        }\\n        if (ch === GT) {\\n          stream.skip();\\n          break;\\n        }\\n        \u002F\u002F Handle corrupt PDF documents which contains truncated EOD markers,\\n        \u002F\u002F where the '>' character is missing (fixes issue11385.pdf).\\n        if (stream.pos > tildePos) {\\n          const maybeEI = stream.peekBytes(2);\\n          if (maybeEI[0] === \u002F* E = *\u002F 0x45 && maybeEI[1] === \u002F* I = *\u002F 0x49) {\\n            break;\\n          }\\n        }\\n      }\\n    }\\n    const length = stream.pos - startPos;\\n    if (ch === -1) {\\n      warn(\\n        \\\"Inline ASCII85Decode image stream: \\\" +\\n          \\\"EOD marker not found, searching for \u002FEI\u002F instead.\\\"\\n      );\\n      stream.skip(-length); \u002F\u002F Reset the stream position.\\n      return this.findDefaultInlineStreamEnd(stream);\\n    }\\n    this.inlineStreamSkipEI(stream);\\n    return length;\\n  }\\n\\n  \u002F**\\n   * Find the EOD (end-of-data) marker '>' (i.e. GT) of the stream.\\n   * @returns {number} The inline stream length.\\n   *\u002F\\n  findASCIIHexDecodeInlineStreamEnd(stream) {\\n    const GT = 0x3e;\\n    const startPos = stream.pos;\\n    let ch;\\n    while ((ch = stream.getByte()) !== -1) {\\n      if (ch === GT) {\\n        break;\\n      }\\n    }\\n    const length = stream.pos - startPos;\\n    if (ch === -1) {\\n      warn(\\n        \\\"Inline ASCIIHexDecode image stream: \\\" +\\n          \\\"EOD marker not found, searching for \u002FEI\u002F instead.\\\"\\n      );\\n      stream.skip(-length); \u002F\u002F Reset the stream position.\\n      return this.findDefaultInlineStreamEnd(stream);\\n    }\\n    this.inlineStreamSkipEI(stream);\\n    return length;\\n  }\\n\\n  \u002F**\\n   * Skip over the \u002FEI\u002F for streams where we search for an EOD marker.\\n   *\u002F\\n  inlineStreamSkipEI(stream) {\\n    const E = 0x45,\\n      I = 0x49;\\n    let state = 0,\\n      ch;\\n    while ((ch = stream.getByte()) !== -1) {\\n      if (state === 0) {\\n        state = ch === E ? 1 : 0;\\n      } else if (state === 1) {\\n        state = ch === I ? 2 : 0;\\n      } else if (state === 2) {\\n        break;\\n      }\\n    }\\n  }\\n\\n  makeInlineImage(cipherTransform) {\\n    const lexer = this.lexer;\\n    const stream = lexer.stream;\\n\\n    \u002F\u002F Parse dictionary, but initialize it lazily to improve performance with\\n    \u002F\u002F cached inline images (see issue 2618).\\n    const dictMap = Object.create(null);\\n    let dictLength;\\n    while (!isCmd(this.buf1, \\\"ID\\\") && this.buf1 !== EOF) {\\n      if (!(this.buf1 instanceof Name)) {\\n        throw new FormatError(\\\"Dictionary key must be a name object\\\");\\n      }\\n      const key = this.buf1.name;\\n      this.shift();\\n      if (this.buf1 === EOF) {\\n        break;\\n      }\\n      dictMap[key] = this.getObj(cipherTransform);\\n    }\\n    if (lexer.beginInlineImagePos !== -1) {\\n      dictLength = stream.pos - lexer.beginInlineImagePos;\\n    }\\n\\n    \u002F\u002F Extract the name of the first (i.e. the current) image filter.\\n    const filter = this.xref.fetchIfRef(dictMap.F || dictMap.Filter);\\n    let filterName;\\n    if (filter instanceof Name) {\\n      filterName = filter.name;\\n    } else if (Array.isArray(filter)) {\\n      const filterZero = this.xref.fetchIfRef(filter[0]);\\n      if (filterZero instanceof Name) {\\n        filterName = filterZero.name;\\n      }\\n    }\\n\\n    \u002F\u002F Parse image stream.\\n    const startPos = stream.pos;\\n    let length;\\n    switch (filterName) {\\n      case \\\"DCT\\\":\\n      case \\\"DCTDecode\\\":\\n        length = this.findDCTDecodeInlineStreamEnd(stream);\\n        break;\\n      case \\\"A85\\\":\\n      case \\\"ASCII85Decode\\\":\\n        length = this.findASCII85DecodeInlineStreamEnd(stream);\\n        break;\\n      case \\\"AHx\\\":\\n      case \\\"ASCIIHexDecode\\\":\\n        length = this.findASCIIHexDecodeInlineStreamEnd(stream);\\n        break;\\n      default:\\n        length = this.findDefaultInlineStreamEnd(stream);\\n    }\\n\\n    \u002F\u002F Cache all images below the MAX_LENGTH_TO_CACHE threshold by their\\n    \u002F\u002F stringified content, to prevent possible hash collisions.\\n    let cacheKey;\\n    if (length \u003C MAX_LENGTH_TO_CACHE && dictLength > 0) {\\n      const initialStreamPos = stream.pos;\\n      \u002F\u002F Set the stream position to the beginning of the dictionary data...\\n      stream.pos = lexer.beginInlineImagePos;\\n      \u002F\u002F ... and fetch the bytes of the dictionary *and* the inline image.\\n      cacheKey = getInlineImageCacheKey(stream.getBytes(dictLength + length));\\n      \u002F\u002F Finally, don't forget to reset the stream position.\\n      stream.pos = initialStreamPos;\\n\\n      const cacheEntry = this.imageCache[cacheKey];\\n      if (cacheEntry !== undefined) {\\n        this.buf2 = Cmd.get(\\\"EI\\\");\\n        this.shift();\\n\\n        cacheEntry.reset();\\n        return cacheEntry;\\n      }\\n    }\\n\\n    const dict = new Dict(this.xref);\\n    for (const key in dictMap) {\\n      dict.set(key, dictMap[key]);\\n    }\\n    let imageStream = stream.makeSubStream(startPos, length, dict);\\n    if (cipherTransform) {\\n      imageStream = cipherTransform.createStream(imageStream, length);\\n    }\\n\\n    imageStream = this.filter(imageStream, dict, length);\\n    imageStream.dict = dict;\\n    if (cacheKey !== undefined) {\\n      imageStream.cacheKey = `inline_img_${++this._imageId}`;\\n      this.imageCache[cacheKey] = imageStream;\\n    }\\n\\n    this.buf2 = Cmd.get(\\\"EI\\\");\\n    this.shift();\\n\\n    return imageStream;\\n  }\\n\\n  #findStreamLength(startPos) {\\n    const { stream } = this.lexer;\\n    stream.pos = startPos;\\n\\n    const SCAN_BLOCK_LENGTH = 2048;\\n    const signatureLength = \\\"endstream\\\".length;\\n\\n    const END_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64]);\\n    const endLength = END_SIGNATURE.length;\\n\\n    \u002F\u002F Ideally we'd directly search for \\\"endstream\\\", however there are corrupt\\n    \u002F\u002F PDF documents where the command is incomplete; hence we search for:\\n    \u002F\u002F  1. The normal case.\\n    \u002F\u002F  2. The misspelled case (fixes issue18122.pdf).\\n    \u002F\u002F  3. The truncated case (fixes issue10004.pdf).\\n    const PARTIAL_SIGNATURE = [\\n      new Uint8Array([0x73, 0x74, 0x72, 0x65, 0x61, 0x6d]), \u002F\u002F \\\"stream\\\"\\n      new Uint8Array([0x73, 0x74, 0x65, 0x61, 0x6d]), \u002F\u002F \\\"steam\\\",\\n      new Uint8Array([0x73, 0x74, 0x72, 0x65, 0x61]), \u002F\u002F \\\"strea\\\"\\n    ];\\n    const normalLength = signatureLength - endLength;\\n\\n    while (stream.pos \u003C stream.end) {\\n      const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\\n      const scanLength = scanBytes.length - signatureLength;\\n\\n      if (scanLength \u003C= 0) {\\n        break;\\n      }\\n      let pos = 0;\\n      while (pos \u003C scanLength) {\\n        let j = 0;\\n        while (j \u003C endLength && scanBytes[pos + j] === END_SIGNATURE[j]) {\\n          j++;\\n        }\\n        if (j >= endLength) {\\n          \u002F\u002F \\\"end\\\" found, find the complete command.\\n          let found = false;\\n          for (const part of PARTIAL_SIGNATURE) {\\n            const partLen = part.length;\\n            let k = 0;\\n            while (k \u003C partLen && scanBytes[pos + j + k] === part[k]) {\\n              k++;\\n            }\\n            if (k >= normalLength) {\\n              \u002F\u002F Found \\\"endstream\\\" command.\\n              found = true;\\n              break;\\n            }\\n            if (k >= partLen) {\\n              \u002F\u002F Found \\\"endsteam\\\" or \\\"endstea\\\" command.\\n              \u002F\u002F Ensure that the byte immediately following the corrupt\\n              \u002F\u002F endstream command is a space, to prevent false positives.\\n              const lastByte = scanBytes[pos + j + k];\\n              if (isWhiteSpace(lastByte)) {\\n                info(\\n                  `Found \\\"${bytesToString([...END_SIGNATURE, ...part])}\\\" when ` +\\n                    \\\"searching for endstream command.\\\"\\n                );\\n                found = true;\\n              }\\n              break;\\n            }\\n          }\\n\\n          if (found) {\\n            stream.pos += pos;\\n            return stream.pos - startPos;\\n          }\\n        }\\n        pos++;\\n      }\\n      stream.pos += scanLength;\\n    }\\n    return -1;\\n  }\\n\\n  makeStream(dict, cipherTransform) {\\n    const lexer = this.lexer;\\n    let stream = lexer.stream;\\n\\n    \u002F\u002F Get the stream's start position.\\n    lexer.skipToNextLine();\\n    const startPos = stream.pos - 1;\\n\\n    \u002F\u002F Get the length.\\n    let length = dict.get(\\\"Length\\\");\\n    if (!Number.isInteger(length)) {\\n      info(`Bad length \\\"${length && length.toString()}\\\" in stream.`);\\n      length = 0;\\n    }\\n\\n    \u002F\u002F Skip over the stream data.\\n    stream.pos = startPos + length;\\n    lexer.nextChar();\\n\\n    \u002F\u002F Shift '>>' and check whether the new object marks the end of the stream.\\n    if (this.tryShift() && isCmd(this.buf2, \\\"endstream\\\")) {\\n      this.shift(); \u002F\u002F 'stream'\\n    } else {\\n      \u002F\u002F Bad stream length, scanning for endstream command.\\n      length = this.#findStreamLength(startPos);\\n      if (length \u003C 0) {\\n        throw new FormatError(\\\"Missing endstream command.\\\");\\n      }\\n\\n      lexer.nextChar();\\n      this.shift();\\n      this.shift();\\n    }\\n    this.shift(); \u002F\u002F 'endstream'\\n\\n    stream = stream.makeSubStream(startPos, length, dict);\\n    if (cipherTransform) {\\n      stream = cipherTransform.createStream(stream, length);\\n    }\\n    stream = this.filter(stream, dict, length);\\n    stream.dict = dict;\\n    return stream;\\n  }\\n\\n  filter(stream, dict, length) {\\n    let filter = dict.get(\\\"F\\\", \\\"Filter\\\");\\n    let params = dict.get(\\\"DP\\\", \\\"DecodeParms\\\");\\n\\n    if (filter instanceof Name) {\\n      if (Array.isArray(params)) {\\n        warn(\\\"\u002FDecodeParms should not be an Array, when \u002FFilter is a Name.\\\");\\n      }\\n      return this.makeFilter(stream, filter.name, length, params);\\n    }\\n\\n    let maybeLength = length;\\n    if (Array.isArray(filter)) {\\n      const filterArray = filter;\\n      const paramsArray = params;\\n      for (let i = 0, ii = filterArray.length; i \u003C ii; ++i) {\\n        filter = this.xref.fetchIfRef(filterArray[i]);\\n        if (!(filter instanceof Name)) {\\n          throw new FormatError(`Bad filter name \\\"${filter}\\\"`);\\n        }\\n\\n        params = null;\\n        if (Array.isArray(paramsArray) && i in paramsArray) {\\n          params = this.xref.fetchIfRef(paramsArray[i]);\\n        }\\n        stream = this.makeFilter(stream, filter.name, maybeLength, params);\\n        \u002F\u002F After the first stream the `length` variable is invalid.\\n        maybeLength = null;\\n      }\\n    }\\n    return stream;\\n  }\\n\\n  makeFilter(stream, name, maybeLength, params) {\\n    \u002F\u002F Since the 'Length' entry in the stream dictionary can be completely\\n    \u002F\u002F wrong, e.g. zero for non-empty streams, only skip parsing the stream\\n    \u002F\u002F when we can be absolutely certain that it actually is empty.\\n    if (maybeLength === 0) {\\n      warn(`Empty \\\"${name}\\\" stream.`);\\n      return new NullStream();\\n    }\\n\\n    try {\\n      switch (name) {\\n        case \\\"Fl\\\":\\n        case \\\"FlateDecode\\\":\\n          if (params) {\\n            return new PredictorStream(\\n              new FlateStream(stream, maybeLength),\\n              maybeLength,\\n              params\\n            );\\n          }\\n          return new FlateStream(stream, maybeLength);\\n        case \\\"LZW\\\":\\n        case \\\"LZWDecode\\\":\\n          let earlyChange = 1;\\n          if (params) {\\n            if (params.has(\\\"EarlyChange\\\")) {\\n              earlyChange = params.get(\\\"EarlyChange\\\");\\n            }\\n            return new PredictorStream(\\n              new LZWStream(stream, maybeLength, earlyChange),\\n              maybeLength,\\n              params\\n            );\\n          }\\n          return new LZWStream(stream, maybeLength, earlyChange);\\n        case \\\"DCT\\\":\\n        case \\\"DCTDecode\\\":\\n          return new JpegStream(stream, maybeLength, params);\\n        case \\\"JPX\\\":\\n        case \\\"JPXDecode\\\":\\n          return new JpxStream(stream, maybeLength, params);\\n        case \\\"A85\\\":\\n        case \\\"ASCII85Decode\\\":\\n          return new Ascii85Stream(stream, maybeLength);\\n        case \\\"AHx\\\":\\n        case \\\"ASCIIHexDecode\\\":\\n          return new AsciiHexStream(stream, maybeLength);\\n        case \\\"CCF\\\":\\n        case \\\"CCITTFaxDecode\\\":\\n          return new CCITTFaxStream(stream, maybeLength, params);\\n        case \\\"RL\\\":\\n        case \\\"RunLengthDecode\\\":\\n          return new RunLengthStream(stream, maybeLength);\\n        case \\\"JBIG2Decode\\\":\\n          return new Jbig2Stream(stream, maybeLength, params);\\n      }\\n      warn(`Filter \\\"${name}\\\" is not supported.`);\\n      return stream;\\n    } catch (ex) {\\n      if (ex instanceof MissingDataException) {\\n        throw ex;\\n      }\\n      warn(`Invalid stream: \\\"${ex}\\\"`);\\n      return new NullStream();\\n    }\\n  }\\n}\\n\\n\u002F\u002F A '1' in this array means the character is white space. A '1' or\\n\u002F\u002F '2' means the character ends a name or command.\\n\u002F\u002F prettier-ignore\\nconst specialChars = [\\n  1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, \u002F\u002F 0x\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \u002F\u002F 1x\\n  1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, \u002F\u002F 2x\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, \u002F\u002F 3x\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \u002F\u002F 4x\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, \u002F\u002F 5x\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \u002F\u002F 6x\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, \u002F\u002F 7x\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \u002F\u002F 8x\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \u002F\u002F 9x\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \u002F\u002F ax\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \u002F\u002F bx\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \u002F\u002F cx\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \u002F\u002F dx\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \u002F\u002F ex\\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0  \u002F\u002F fx\\n];\\n\\nfunction toHexDigit(ch) {\\n  if (ch >= \u002F* '0' = *\u002F 0x30 && ch \u002F* '9' = *\u002F \u003C= 0x39) {\\n    return ch & 0x0f;\\n  }\\n  if (\\n    (ch >= \u002F* 'A' = *\u002F 0x41 && ch \u003C= \u002F* 'F' = *\u002F 0x46) ||\\n    (ch >= \u002F* 'a' = *\u002F 0x61 && ch \u003C= \u002F* 'f' = *\u002F 0x66)\\n  ) {\\n    return (ch & 0x0f) + 9;\\n  }\\n  return -1;\\n}\\n\\nclass Lexer {\\n  constructor(stream, knownCommands = null) {\\n    this.stream = stream;\\n    this.nextChar();\\n\\n    \u002F\u002F While lexing, we build up many strings one char at a time. Using += for\\n    \u002F\u002F this can result in lots of garbage strings. It's better to build an\\n    \u002F\u002F array of single-char strings and then join() them together at the end.\\n    \u002F\u002F And reusing a single array (i.e. |this.strBuf|) over and over for this\\n    \u002F\u002F purpose uses less memory than using a new array for each string.\\n    this.strBuf = [];\\n\\n    \u002F\u002F The PDFs might have \\\"glued\\\" commands with other commands, operands or\\n    \u002F\u002F literals, e.g. \\\"q1\\\". The knownCommands is a dictionary of the valid\\n    \u002F\u002F commands and their prefixes. The prefixes are built the following way:\\n    \u002F\u002F if there a command that is a prefix of the other valid command or\\n    \u002F\u002F literal (e.g. 'f' and 'false') the following prefixes must be included,\\n    \u002F\u002F 'fa', 'fal', 'fals'. The prefixes are not needed, if the command has no\\n    \u002F\u002F other commands or literals as a prefix. The knowCommands is optional.\\n    this.knownCommands = knownCommands;\\n\\n    this._hexStringNumWarn = 0;\\n    this.beginInlineImagePos = -1;\\n  }\\n\\n  nextChar() {\\n    return (this.currentChar = this.stream.getByte());\\n  }\\n\\n  peekChar() {\\n    return this.stream.peekByte();\\n  }\\n\\n  getNumber() {\\n    let ch = this.currentChar;\\n    let eNotation = false;\\n    let divideBy = 0; \u002F\u002F Different from 0 if it's a floating point value.\\n    let sign = 1;\\n\\n    if (ch === \u002F* '-' = *\u002F 0x2d) {\\n      sign = -1;\\n      ch = this.nextChar();\\n\\n      if (ch === \u002F* '-' = *\u002F 0x2d) {\\n        \u002F\u002F Ignore double negative (this is consistent with Adobe Reader).\\n        ch = this.nextChar();\\n      }\\n    } else if (ch === \u002F* '+' = *\u002F 0x2b) {\\n      ch = this.nextChar();\\n    }\\n    if (ch === \u002F* LF = *\u002F 0x0a || ch === \u002F* CR = *\u002F 0x0d) {\\n      \u002F\u002F Ignore line-breaks (this is consistent with Adobe Reader).\\n      do {\\n        ch = this.nextChar();\\n      } while (ch === 0x0a || ch === 0x0d);\\n    }\\n    if (ch === \u002F* '.' = *\u002F 0x2e) {\\n      divideBy = 10;\\n      ch = this.nextChar();\\n    }\\n    if (ch \u003C \u002F* '0' = *\u002F 0x30 || ch > \u002F* '9' = *\u002F 0x39) {\\n      const msg = `Invalid number: ${String.fromCharCode(ch)} (charCode ${ch})`;\\n\\n      if (\\n        isWhiteSpace(ch) ||\\n        \u002F* '(' = *\u002F ch === 0x28 ||\\n        \u002F* '\u003C' = *\u002F ch === 0x3c ||\\n        ch === \u002F* EOF = *\u002F -1\\n      ) {\\n        \u002F\u002F This is consistent with Adobe Reader (fixes issue9252.pdf,\\n        \u002F\u002F issue15604.pdf, bug1753983.pdf, bug1953099.pdf).\\n        info(`Lexer.getNumber - \\\"${msg}\\\".`);\\n        return 0;\\n      }\\n      throw new FormatError(msg);\\n    }\\n\\n    let baseValue = ch - 0x30; \u002F\u002F '0'\\n    let powerValue = 0;\\n    let powerValueSign = 1;\\n\\n    while ((ch = this.nextChar()) >= 0) {\\n      if (ch >= \u002F* '0' = *\u002F 0x30 && ch \u003C= \u002F* '9' = *\u002F 0x39) {\\n        const currentDigit = ch - 0x30; \u002F\u002F '0'\\n        if (eNotation) {\\n          \u002F\u002F We are after an 'e' or 'E'.\\n          powerValue = powerValue * 10 + currentDigit;\\n        } else {\\n          if (divideBy !== 0) {\\n            \u002F\u002F We are after a point.\\n            divideBy *= 10;\\n          }\\n          baseValue = baseValue * 10 + currentDigit;\\n        }\\n      } else if (ch === \u002F* '.' = *\u002F 0x2e) {\\n        if (divideBy === 0) {\\n          divideBy = 1;\\n        } else {\\n          \u002F\u002F A number can have only one dot.\\n          break;\\n        }\\n      } else if (ch === \u002F* '-' = *\u002F 0x2d) {\\n        \u002F\u002F Ignore minus signs in the middle of numbers to match\\n        \u002F\u002F Adobe's behavior.\\n        warn(\\\"Badly formatted number: minus sign in the middle\\\");\\n      } else if (ch === \u002F* 'E' = *\u002F 0x45 || ch === \u002F* 'e' = *\u002F 0x65) {\\n        \u002F\u002F 'E' can be either a scientific notation or the beginning of a new\\n        \u002F\u002F operator.\\n        ch = this.peekChar();\\n        if (ch === \u002F* '+' = *\u002F 0x2b || ch === \u002F* '-' = *\u002F 0x2d) {\\n          powerValueSign = ch === 0x2d ? -1 : 1;\\n          this.nextChar(); \u002F\u002F Consume the sign character.\\n        } else if (ch \u003C \u002F* '0' = *\u002F 0x30 || ch > \u002F* '9' = *\u002F 0x39) {\\n          \u002F\u002F The 'E' must be the beginning of a new operator.\\n          break;\\n        }\\n        eNotation = true;\\n      } else {\\n        \u002F\u002F The last character doesn't belong to us.\\n        break;\\n      }\\n    }\\n\\n    if (divideBy !== 0) {\\n      baseValue \u002F= divideBy;\\n    }\\n    if (eNotation) {\\n      baseValue *= 10 ** (powerValueSign * powerValue);\\n    }\\n    return sign * baseValue;\\n  }\\n\\n  getString() {\\n    let numParen = 1;\\n    let done = false;\\n    const strBuf = this.strBuf;\\n    strBuf.length = 0;\\n\\n    let ch = this.nextChar();\\n    while (true) {\\n      let charBuffered = false;\\n      switch (ch | 0) {\\n        case -1:\\n          warn(\\\"Unterminated string\\\");\\n          done = true;\\n          break;\\n        case 0x28: \u002F\u002F '('\\n          ++numParen;\\n          strBuf.push(\\\"(\\\");\\n          break;\\n        case 0x29: \u002F\u002F ')'\\n          if (--numParen === 0) {\\n            this.nextChar(); \u002F\u002F consume strings ')'\\n            done = true;\\n          } else {\\n            strBuf.push(\\\")\\\");\\n          }\\n          break;\\n        case 0x5c: \u002F\u002F '\\\\\\\\'\\n          ch = this.nextChar();\\n          switch (ch) {\\n            case -1:\\n              warn(\\\"Unterminated string\\\");\\n              done = true;\\n              break;\\n            case 0x6e: \u002F\u002F 'n'\\n              strBuf.push(\\\"\\\\n\\\");\\n              break;\\n            case 0x72: \u002F\u002F 'r'\\n              strBuf.push(\\\"\\\\r\\\");\\n              break;\\n            case 0x74: \u002F\u002F 't'\\n              strBuf.push(\\\"\\\\t\\\");\\n              break;\\n            case 0x62: \u002F\u002F 'b'\\n              strBuf.push(\\\"\\\\b\\\");\\n              break;\\n            case 0x66: \u002F\u002F 'f'\\n              strBuf.push(\\\"\\\\f\\\");\\n              break;\\n            case 0x5c: \u002F\u002F '\\\\'\\n            case 0x28: \u002F\u002F '('\\n            case 0x29: \u002F\u002F ')'\\n              strBuf.push(String.fromCharCode(ch));\\n              break;\\n            case 0x30: \u002F\u002F '0'\\n            case 0x31: \u002F\u002F '1'\\n            case 0x32: \u002F\u002F '2'\\n            case 0x33: \u002F\u002F '3'\\n            case 0x34: \u002F\u002F '4'\\n            case 0x35: \u002F\u002F '5'\\n            case 0x36: \u002F\u002F '6'\\n            case 0x37: \u002F\u002F '7'\\n              let x = ch & 0x0f;\\n              ch = this.nextChar();\\n              charBuffered = true;\\n              if (ch >= \u002F* '0' = *\u002F 0x30 && ch \u003C= \u002F* '7' = *\u002F 0x37) {\\n                x = (x \u003C\u003C 3) + (ch & 0x0f);\\n                ch = this.nextChar();\\n                if (ch >= \u002F* '0' = *\u002F 0x30 && ch \u002F* '7' = *\u002F \u003C= 0x37) {\\n                  charBuffered = false;\\n                  x = (x \u003C\u003C 3) + (ch & 0x0f);\\n                }\\n              }\\n              strBuf.push(String.fromCharCode(x));\\n              break;\\n            case 0x0d: \u002F\u002F CR\\n              if (this.peekChar() === \u002F* LF = *\u002F 0x0a) {\\n                this.nextChar();\\n              }\\n              break;\\n            case 0x0a: \u002F\u002F LF\\n              break;\\n            default:\\n              strBuf.push(String.fromCharCode(ch));\\n              break;\\n          }\\n          break;\\n        default:\\n          strBuf.push(String.fromCharCode(ch));\\n          break;\\n      }\\n      if (done) {\\n        break;\\n      }\\n      if (!charBuffered) {\\n        ch = this.nextChar();\\n      }\\n    }\\n    return strBuf.join(\\\"\\\");\\n  }\\n\\n  getName() {\\n    let ch, previousCh;\\n    const strBuf = this.strBuf;\\n    strBuf.length = 0;\\n\\n    while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\\n      if (ch === \u002F* '#' = *\u002F 0x23) {\\n        ch = this.nextChar();\\n        if (specialChars[ch]) {\\n          warn(\\n            \\\"Lexer_getName: \\\" +\\n              \\\"NUMBER SIGN (#) should be followed by a hexadecimal number.\\\"\\n          );\\n          strBuf.push(\\\"#\\\");\\n          break;\\n        }\\n        const x = toHexDigit(ch);\\n        if (x !== -1) {\\n          previousCh = ch;\\n          ch = this.nextChar();\\n          const x2 = toHexDigit(ch);\\n          if (x2 === -1) {\\n            warn(\\n              `Lexer_getName: Illegal digit (${String.fromCharCode(ch)}) ` +\\n                \\\"in hexadecimal number.\\\"\\n            );\\n            strBuf.push(\\\"#\\\", String.fromCharCode(previousCh));\\n            if (specialChars[ch]) {\\n              break;\\n            }\\n            strBuf.push(String.fromCharCode(ch));\\n            continue;\\n          }\\n          strBuf.push(String.fromCharCode((x \u003C\u003C 4) | x2));\\n        } else {\\n          strBuf.push(\\\"#\\\", String.fromCharCode(ch));\\n        }\\n      } else {\\n        strBuf.push(String.fromCharCode(ch));\\n      }\\n    }\\n    if (strBuf.length > 127) {\\n      warn(`Name token is longer than allowed by the spec: ${strBuf.length}`);\\n    }\\n    return Name.get(strBuf.join(\\\"\\\"));\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _hexStringWarn(ch) {\\n    const MAX_HEX_STRING_NUM_WARN = 5;\\n\\n    if (this._hexStringNumWarn++ === MAX_HEX_STRING_NUM_WARN) {\\n      warn(\\\"getHexString - ignoring additional invalid characters.\\\");\\n      return;\\n    }\\n    if (this._hexStringNumWarn > MAX_HEX_STRING_NUM_WARN) {\\n      \u002F\u002F Limit the number of warning messages printed for a `this.getHexString`\\n      \u002F\u002F invocation, since corrupt PDF documents may otherwise spam the console\\n      \u002F\u002F enough to affect general performance negatively.\\n      return;\\n    }\\n    warn(`getHexString - ignoring invalid character: ${ch}`);\\n  }\\n\\n  getHexString() {\\n    const strBuf = this.strBuf;\\n    strBuf.length = 0;\\n    let ch = this.currentChar;\\n    let firstDigit = -1,\\n      digit = -1;\\n    this._hexStringNumWarn = 0;\\n\\n    while (true) {\\n      if (ch \u003C 0) {\\n        warn(\\\"Unterminated hex string\\\");\\n        break;\\n      } else if (ch === \u002F* '>' = *\u002F 0x3e) {\\n        this.nextChar();\\n        break;\\n      } else if (specialChars[ch] === 1) {\\n        ch = this.nextChar();\\n        continue;\\n      } else {\\n        digit = toHexDigit(ch);\\n        if (digit === -1) {\\n          this._hexStringWarn(ch);\\n        } else if (firstDigit === -1) {\\n          firstDigit = digit;\\n        } else {\\n          strBuf.push(String.fromCharCode((firstDigit \u003C\u003C 4) | digit));\\n          firstDigit = -1;\\n        }\\n        ch = this.nextChar();\\n      }\\n    }\\n\\n    \u002F\u002F According to the PDF spec, section \\\"7.3.4.3 Hexadecimal Strings\\\":\\n    \u002F\u002F  \\\"If the final digit of a hexadecimal string is missing—that is, if there\\n    \u002F\u002F   is an odd number of digits—the final digit shall be assumed to be 0.\\\"\\n    if (firstDigit !== -1) {\\n      strBuf.push(String.fromCharCode(firstDigit \u003C\u003C 4));\\n    }\\n    return strBuf.join(\\\"\\\");\\n  }\\n\\n  getObj() {\\n    \u002F\u002F Skip whitespace and comments.\\n    let comment = false;\\n    let ch = this.currentChar;\\n    while (true) {\\n      if (ch \u003C 0) {\\n        return EOF;\\n      }\\n      if (comment) {\\n        if (ch === \u002F* LF = *\u002F 0x0a || ch === \u002F* CR = *\u002F 0x0d) {\\n          comment = false;\\n        }\\n      } else if (ch === \u002F* '%' = *\u002F 0x25) {\\n        comment = true;\\n      } else if (specialChars[ch] !== 1) {\\n        break;\\n      }\\n      ch = this.nextChar();\\n    }\\n\\n    \u002F\u002F Start reading a token.\\n    switch (ch | 0) {\\n      case 0x30: \u002F\u002F '0'\\n      case 0x31: \u002F\u002F '1'\\n      case 0x32: \u002F\u002F '2'\\n      case 0x33: \u002F\u002F '3'\\n      case 0x34: \u002F\u002F '4'\\n      case 0x35: \u002F\u002F '5'\\n      case 0x36: \u002F\u002F '6'\\n      case 0x37: \u002F\u002F '7'\\n      case 0x38: \u002F\u002F '8'\\n      case 0x39: \u002F\u002F '9'\\n      case 0x2b: \u002F\u002F '+'\\n      case 0x2d: \u002F\u002F '-'\\n      case 0x2e: \u002F\u002F '.'\\n        return this.getNumber();\\n      case 0x28: \u002F\u002F '('\\n        return this.getString();\\n      case 0x2f: \u002F\u002F '\u002F'\\n        return this.getName();\\n      \u002F\u002F array punctuation\\n      case 0x5b: \u002F\u002F '['\\n        this.nextChar();\\n        return Cmd.get(\\\"[\\\");\\n      case 0x5d: \u002F\u002F ']'\\n        this.nextChar();\\n        return Cmd.get(\\\"]\\\");\\n      \u002F\u002F hex string or dict punctuation\\n      case 0x3c: \u002F\u002F '\u003C'\\n        ch = this.nextChar();\\n        if (ch === 0x3c) {\\n          \u002F\u002F dict punctuation\\n          this.nextChar();\\n          return Cmd.get(\\\"\u003C\u003C\\\");\\n        }\\n        return this.getHexString();\\n      \u002F\u002F dict punctuation\\n      case 0x3e: \u002F\u002F '>'\\n        ch = this.nextChar();\\n        if (ch === 0x3e) {\\n          this.nextChar();\\n          return Cmd.get(\\\">>\\\");\\n        }\\n        return Cmd.get(\\\">\\\");\\n      case 0x7b: \u002F\u002F '{'\\n        this.nextChar();\\n        return Cmd.get(\\\"{\\\");\\n      case 0x7d: \u002F\u002F '}'\\n        this.nextChar();\\n        return Cmd.get(\\\"}\\\");\\n      case 0x29: \u002F\u002F ')'\\n        \u002F\u002F Consume the current character in order to avoid permanently hanging\\n        \u002F\u002F the worker thread if `Lexer.getObj` is called from within a loop\\n        \u002F\u002F containing try-catch statements, since we would otherwise attempt\\n        \u002F\u002F to parse the *same* character over and over (fixes issue8061.pdf).\\n        this.nextChar();\\n        throw new FormatError(`Illegal character: ${ch}`);\\n    }\\n\\n    \u002F\u002F Start reading a command.\\n    let str = String.fromCharCode(ch);\\n    \u002F\u002F A valid command cannot start with a non-visible ASCII character,\\n    \u002F\u002F and the next character may be (the start of) a valid command.\\n    if (ch \u003C 0x20 || ch > 0x7f) {\\n      const nextCh = this.peekChar();\\n      if (nextCh >= 0x20 && nextCh \u003C= 0x7f) {\\n        this.nextChar();\\n        return Cmd.get(str);\\n      }\\n    }\\n    const knownCommands = this.knownCommands;\\n    let knownCommandFound = knownCommands?.[str] !== undefined;\\n    while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\\n      \u002F\u002F Stop if a known command is found and next character does not make\\n      \u002F\u002F the string a command.\\n      const possibleCommand = str + String.fromCharCode(ch);\\n      if (knownCommandFound && knownCommands[possibleCommand] === undefined) {\\n        break;\\n      }\\n      if (str.length === 128) {\\n        throw new FormatError(`Command token too long: ${str.length}`);\\n      }\\n      str = possibleCommand;\\n      knownCommandFound = knownCommands?.[str] !== undefined;\\n    }\\n    if (str === \\\"true\\\") {\\n      return true;\\n    }\\n    if (str === \\\"false\\\") {\\n      return false;\\n    }\\n    if (str === \\\"null\\\") {\\n      return null;\\n    }\\n\\n    if (str === \\\"BI\\\") {\\n      \u002F\u002F Keep track of the current stream position, since it's needed in order\\n      \u002F\u002F to correctly cache inline images; see `Parser.makeInlineImage`.\\n      this.beginInlineImagePos = this.stream.pos;\\n    }\\n\\n    return Cmd.get(str);\\n  }\\n\\n  skipToNextLine() {\\n    let ch = this.currentChar;\\n    while (ch >= 0) {\\n      if (ch === \u002F* CR = *\u002F 0x0d) {\\n        ch = this.nextChar();\\n        if (ch === \u002F* LF = *\u002F 0x0a) {\\n          this.nextChar();\\n        }\\n        break;\\n      } else if (ch === \u002F* LF = *\u002F 0x0a) {\\n        this.nextChar();\\n        break;\\n      }\\n      ch = this.nextChar();\\n    }\\n  }\\n}\\n\\nclass Linearization {\\n  static create(stream) {\\n    function getInt(linDict, name, allowZeroValue = false) {\\n      const obj = linDict.get(name);\\n      if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) {\\n        return obj;\\n      }\\n      throw new Error(\\n        `The \\\"${name}\\\" parameter in the linearization ` +\\n          \\\"dictionary is invalid.\\\"\\n      );\\n    }\\n\\n    function getHints(linDict) {\\n      const hints = linDict.get(\\\"H\\\");\\n      let hintsLength;\\n\\n      if (\\n        Array.isArray(hints) &&\\n        ((hintsLength = hints.length) === 2 || hintsLength === 4)\\n      ) {\\n        for (let index = 0; index \u003C hintsLength; index++) {\\n          const hint = hints[index];\\n          if (!(Number.isInteger(hint) && hint > 0)) {\\n            throw new Error(\\n              `Hint (${index}) in the linearization dictionary is invalid.`\\n            );\\n          }\\n        }\\n        return hints;\\n      }\\n      throw new Error(\\\"Hint array in the linearization dictionary is invalid.\\\");\\n    }\\n\\n    const parser = new Parser({\\n      lexer: new Lexer(stream),\\n      xref: null,\\n    });\\n    const obj1 = parser.getObj();\\n    const obj2 = parser.getObj();\\n    const obj3 = parser.getObj();\\n    const linDict = parser.getObj();\\n    let obj, length;\\n    if (\\n      !(\\n        Number.isInteger(obj1) &&\\n        Number.isInteger(obj2) &&\\n        isCmd(obj3, \\\"obj\\\") &&\\n        linDict instanceof Dict &&\\n        typeof (obj = linDict.get(\\\"Linearized\\\")) === \\\"number\\\" &&\\n        obj > 0\\n      )\\n    ) {\\n      return null; \u002F\u002F No valid linearization dictionary found.\\n    } else if ((length = getInt(linDict, \\\"L\\\")) !== stream.length) {\\n      throw new Error(\\n        'The \\\"L\\\" parameter in the linearization dictionary ' +\\n          \\\"does not equal the stream length.\\\"\\n      );\\n    }\\n    return {\\n      length,\\n      hints: getHints(linDict),\\n      objectNumberFirst: getInt(linDict, \\\"O\\\"),\\n      endFirst: getInt(linDict, \\\"E\\\"),\\n      numPages: getInt(linDict, \\\"N\\\"),\\n      mainXRefEntriesOffset: getInt(linDict, \\\"T\\\"),\\n      pageFirst: linDict.has(\\\"P\\\")\\n        ? getInt(linDict, \\\"P\\\", \u002F* allowZeroValue = *\u002F true)\\n        : 0,\\n    };\\n  }\\n}\\n\\nexport { Lexer, Linearization, Parser };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { Cmd, EOF, isCmd, Name } from \\\".\u002Fprimitives.js\\\";\\nimport { FormatError, unreachable, warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { BinaryCMapReader } from \\\".\u002Fbinary_cmap.js\\\";\\nimport { Lexer } from \\\".\u002Fparser.js\\\";\\nimport { MissingDataException } from \\\".\u002Fcore_utils.js\\\";\\nimport { Stream } from \\\".\u002Fstream.js\\\";\\n\\nconst BUILT_IN_CMAPS = [\\n  \u002F\u002F \u003C\u003C Start unicode maps.\\n  \\\"Adobe-GB1-UCS2\\\",\\n  \\\"Adobe-CNS1-UCS2\\\",\\n  \\\"Adobe-Japan1-UCS2\\\",\\n  \\\"Adobe-Korea1-UCS2\\\",\\n  \u002F\u002F >> End unicode maps.\\n  \\\"78-EUC-H\\\",\\n  \\\"78-EUC-V\\\",\\n  \\\"78-H\\\",\\n  \\\"78-RKSJ-H\\\",\\n  \\\"78-RKSJ-V\\\",\\n  \\\"78-V\\\",\\n  \\\"78ms-RKSJ-H\\\",\\n  \\\"78ms-RKSJ-V\\\",\\n  \\\"83pv-RKSJ-H\\\",\\n  \\\"90ms-RKSJ-H\\\",\\n  \\\"90ms-RKSJ-V\\\",\\n  \\\"90msp-RKSJ-H\\\",\\n  \\\"90msp-RKSJ-V\\\",\\n  \\\"90pv-RKSJ-H\\\",\\n  \\\"90pv-RKSJ-V\\\",\\n  \\\"Add-H\\\",\\n  \\\"Add-RKSJ-H\\\",\\n  \\\"Add-RKSJ-V\\\",\\n  \\\"Add-V\\\",\\n  \\\"Adobe-CNS1-0\\\",\\n  \\\"Adobe-CNS1-1\\\",\\n  \\\"Adobe-CNS1-2\\\",\\n  \\\"Adobe-CNS1-3\\\",\\n  \\\"Adobe-CNS1-4\\\",\\n  \\\"Adobe-CNS1-5\\\",\\n  \\\"Adobe-CNS1-6\\\",\\n  \\\"Adobe-GB1-0\\\",\\n  \\\"Adobe-GB1-1\\\",\\n  \\\"Adobe-GB1-2\\\",\\n  \\\"Adobe-GB1-3\\\",\\n  \\\"Adobe-GB1-4\\\",\\n  \\\"Adobe-GB1-5\\\",\\n  \\\"Adobe-Japan1-0\\\",\\n  \\\"Adobe-Japan1-1\\\",\\n  \\\"Adobe-Japan1-2\\\",\\n  \\\"Adobe-Japan1-3\\\",\\n  \\\"Adobe-Japan1-4\\\",\\n  \\\"Adobe-Japan1-5\\\",\\n  \\\"Adobe-Japan1-6\\\",\\n  \\\"Adobe-Korea1-0\\\",\\n  \\\"Adobe-Korea1-1\\\",\\n  \\\"Adobe-Korea1-2\\\",\\n  \\\"B5-H\\\",\\n  \\\"B5-V\\\",\\n  \\\"B5pc-H\\\",\\n  \\\"B5pc-V\\\",\\n  \\\"CNS-EUC-H\\\",\\n  \\\"CNS-EUC-V\\\",\\n  \\\"CNS1-H\\\",\\n  \\\"CNS1-V\\\",\\n  \\\"CNS2-H\\\",\\n  \\\"CNS2-V\\\",\\n  \\\"ETHK-B5-H\\\",\\n  \\\"ETHK-B5-V\\\",\\n  \\\"ETen-B5-H\\\",\\n  \\\"ETen-B5-V\\\",\\n  \\\"ETenms-B5-H\\\",\\n  \\\"ETenms-B5-V\\\",\\n  \\\"EUC-H\\\",\\n  \\\"EUC-V\\\",\\n  \\\"Ext-H\\\",\\n  \\\"Ext-RKSJ-H\\\",\\n  \\\"Ext-RKSJ-V\\\",\\n  \\\"Ext-V\\\",\\n  \\\"GB-EUC-H\\\",\\n  \\\"GB-EUC-V\\\",\\n  \\\"GB-H\\\",\\n  \\\"GB-V\\\",\\n  \\\"GBK-EUC-H\\\",\\n  \\\"GBK-EUC-V\\\",\\n  \\\"GBK2K-H\\\",\\n  \\\"GBK2K-V\\\",\\n  \\\"GBKp-EUC-H\\\",\\n  \\\"GBKp-EUC-V\\\",\\n  \\\"GBT-EUC-H\\\",\\n  \\\"GBT-EUC-V\\\",\\n  \\\"GBT-H\\\",\\n  \\\"GBT-V\\\",\\n  \\\"GBTpc-EUC-H\\\",\\n  \\\"GBTpc-EUC-V\\\",\\n  \\\"GBpc-EUC-H\\\",\\n  \\\"GBpc-EUC-V\\\",\\n  \\\"H\\\",\\n  \\\"HKdla-B5-H\\\",\\n  \\\"HKdla-B5-V\\\",\\n  \\\"HKdlb-B5-H\\\",\\n  \\\"HKdlb-B5-V\\\",\\n  \\\"HKgccs-B5-H\\\",\\n  \\\"HKgccs-B5-V\\\",\\n  \\\"HKm314-B5-H\\\",\\n  \\\"HKm314-B5-V\\\",\\n  \\\"HKm471-B5-H\\\",\\n  \\\"HKm471-B5-V\\\",\\n  \\\"HKscs-B5-H\\\",\\n  \\\"HKscs-B5-V\\\",\\n  \\\"Hankaku\\\",\\n  \\\"Hiragana\\\",\\n  \\\"KSC-EUC-H\\\",\\n  \\\"KSC-EUC-V\\\",\\n  \\\"KSC-H\\\",\\n  \\\"KSC-Johab-H\\\",\\n  \\\"KSC-Johab-V\\\",\\n  \\\"KSC-V\\\",\\n  \\\"KSCms-UHC-H\\\",\\n  \\\"KSCms-UHC-HW-H\\\",\\n  \\\"KSCms-UHC-HW-V\\\",\\n  \\\"KSCms-UHC-V\\\",\\n  \\\"KSCpc-EUC-H\\\",\\n  \\\"KSCpc-EUC-V\\\",\\n  \\\"Katakana\\\",\\n  \\\"NWP-H\\\",\\n  \\\"NWP-V\\\",\\n  \\\"RKSJ-H\\\",\\n  \\\"RKSJ-V\\\",\\n  \\\"Roman\\\",\\n  \\\"UniCNS-UCS2-H\\\",\\n  \\\"UniCNS-UCS2-V\\\",\\n  \\\"UniCNS-UTF16-H\\\",\\n  \\\"UniCNS-UTF16-V\\\",\\n  \\\"UniCNS-UTF32-H\\\",\\n  \\\"UniCNS-UTF32-V\\\",\\n  \\\"UniCNS-UTF8-H\\\",\\n  \\\"UniCNS-UTF8-V\\\",\\n  \\\"UniGB-UCS2-H\\\",\\n  \\\"UniGB-UCS2-V\\\",\\n  \\\"UniGB-UTF16-H\\\",\\n  \\\"UniGB-UTF16-V\\\",\\n  \\\"UniGB-UTF32-H\\\",\\n  \\\"UniGB-UTF32-V\\\",\\n  \\\"UniGB-UTF8-H\\\",\\n  \\\"UniGB-UTF8-V\\\",\\n  \\\"UniJIS-UCS2-H\\\",\\n  \\\"UniJIS-UCS2-HW-H\\\",\\n  \\\"UniJIS-UCS2-HW-V\\\",\\n  \\\"UniJIS-UCS2-V\\\",\\n  \\\"UniJIS-UTF16-H\\\",\\n  \\\"UniJIS-UTF16-V\\\",\\n  \\\"UniJIS-UTF32-H\\\",\\n  \\\"UniJIS-UTF32-V\\\",\\n  \\\"UniJIS-UTF8-H\\\",\\n  \\\"UniJIS-UTF8-V\\\",\\n  \\\"UniJIS2004-UTF16-H\\\",\\n  \\\"UniJIS2004-UTF16-V\\\",\\n  \\\"UniJIS2004-UTF32-H\\\",\\n  \\\"UniJIS2004-UTF32-V\\\",\\n  \\\"UniJIS2004-UTF8-H\\\",\\n  \\\"UniJIS2004-UTF8-V\\\",\\n  \\\"UniJISPro-UCS2-HW-V\\\",\\n  \\\"UniJISPro-UCS2-V\\\",\\n  \\\"UniJISPro-UTF8-V\\\",\\n  \\\"UniJISX0213-UTF32-H\\\",\\n  \\\"UniJISX0213-UTF32-V\\\",\\n  \\\"UniJISX02132004-UTF32-H\\\",\\n  \\\"UniJISX02132004-UTF32-V\\\",\\n  \\\"UniKS-UCS2-H\\\",\\n  \\\"UniKS-UCS2-V\\\",\\n  \\\"UniKS-UTF16-H\\\",\\n  \\\"UniKS-UTF16-V\\\",\\n  \\\"UniKS-UTF32-H\\\",\\n  \\\"UniKS-UTF32-V\\\",\\n  \\\"UniKS-UTF8-H\\\",\\n  \\\"UniKS-UTF8-V\\\",\\n  \\\"V\\\",\\n  \\\"WP-Symbol\\\",\\n];\\n\\n\u002F\u002F Heuristic to avoid hanging the worker-thread for CMap data with ridiculously\\n\u002F\u002F large ranges, such as e.g. 0xFFFFFFFF (fixes issue11922_reduced.pdf).\\nconst MAX_MAP_RANGE = 2 ** 24 - 1; \u002F\u002F = 0xFFFFFF\\n\\n\u002F\u002F CMap, not to be confused with TrueType's cmap.\\nclass CMap {\\n  constructor(builtInCMap = false) {\\n    \u002F\u002F Codespace ranges are stored as follows:\\n    \u002F\u002F [[1BytePairs], [2BytePairs], [3BytePairs], [4BytePairs]]\\n    \u002F\u002F where nBytePairs are ranges e.g. [low1, high1, low2, high2, ...]\\n    this.codespaceRanges = [[], [], [], []];\\n    this.numCodespaceRanges = 0;\\n    \u002F\u002F Map entries have one of two forms.\\n    \u002F\u002F - cid chars are 16-bit unsigned integers, stored as integers.\\n    \u002F\u002F - bf chars are variable-length byte sequences, stored as strings, with\\n    \u002F\u002F   one byte per character.\\n    this._map = [];\\n    this.name = \\\"\\\";\\n    this.vertical = false;\\n    this.useCMap = null;\\n    this.builtInCMap = builtInCMap;\\n  }\\n\\n  addCodespaceRange(n, low, high) {\\n    this.codespaceRanges[n - 1].push(low, high);\\n    this.numCodespaceRanges++;\\n  }\\n\\n  mapCidRange(low, high, dstLow) {\\n    if (high - low > MAX_MAP_RANGE) {\\n      throw new Error(\\\"mapCidRange - ignoring data above MAX_MAP_RANGE.\\\");\\n    }\\n    while (low \u003C= high) {\\n      this._map[low++] = dstLow++;\\n    }\\n  }\\n\\n  mapBfRange(low, high, dstLow) {\\n    if (high - low > MAX_MAP_RANGE) {\\n      throw new Error(\\\"mapBfRange - ignoring data above MAX_MAP_RANGE.\\\");\\n    }\\n    const lastByte = dstLow.length - 1;\\n    while (low \u003C= high) {\\n      this._map[low++] = dstLow;\\n      \u002F\u002F Only the last byte has to be incremented (in the normal case).\\n      const nextCharCode = dstLow.charCodeAt(lastByte) + 1;\\n      if (nextCharCode > 0xff) {\\n        dstLow =\\n          dstLow.substring(0, lastByte - 1) +\\n          String.fromCharCode(dstLow.charCodeAt(lastByte - 1) + 1) +\\n          \\\"\\\\x00\\\";\\n        continue;\\n      }\\n      dstLow =\\n        dstLow.substring(0, lastByte) + String.fromCharCode(nextCharCode);\\n    }\\n  }\\n\\n  mapBfRangeToArray(low, high, array) {\\n    if (high - low > MAX_MAP_RANGE) {\\n      throw new Error(\\\"mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.\\\");\\n    }\\n    const ii = array.length;\\n    let i = 0;\\n    while (low \u003C= high && i \u003C ii) {\\n      this._map[low] = array[i++];\\n      ++low;\\n    }\\n  }\\n\\n  \u002F\u002F This is used for both bf and cid chars.\\n  mapOne(src, dst) {\\n    this._map[src] = dst;\\n  }\\n\\n  lookup(code) {\\n    return this._map[code];\\n  }\\n\\n  contains(code) {\\n    return this._map[code] !== undefined;\\n  }\\n\\n  forEach(callback) {\\n    \u002F\u002F Most maps have fewer than 65536 entries, and for those we use normal\\n    \u002F\u002F array iteration. But really sparse tables are possible -- e.g. with\\n    \u002F\u002F indices in the *billions*. For such tables we use for..in, which isn't\\n    \u002F\u002F ideal because it stringifies the indices for all present elements, but\\n    \u002F\u002F it does avoid iterating over every undefined entry.\\n    const map = this._map;\\n    const length = map.length;\\n    if (length \u003C= 0x10000) {\\n      for (let i = 0; i \u003C length; i++) {\\n        if (map[i] !== undefined) {\\n          callback(i, map[i]);\\n        }\\n      }\\n    } else {\\n      for (const i in map) {\\n        callback(i, map[i]);\\n      }\\n    }\\n  }\\n\\n  charCodeOf(value) {\\n    \u002F\u002F `Array.prototype.indexOf` is *extremely* inefficient for arrays which\\n    \u002F\u002F are both very sparse and very large (see issue8372.pdf).\\n    const map = this._map;\\n    if (map.length \u003C= 0x10000) {\\n      return map.indexOf(value);\\n    }\\n    for (const charCode in map) {\\n      if (map[charCode] === value) {\\n        return charCode | 0;\\n      }\\n    }\\n    return -1;\\n  }\\n\\n  getMap() {\\n    return this._map;\\n  }\\n\\n  readCharCode(str, offset, out) {\\n    let c = 0;\\n    const codespaceRanges = this.codespaceRanges;\\n    \u002F\u002F 9.7.6.2 CMap Mapping\\n    \u002F\u002F The code length is at most 4.\\n    for (let n = 0, nn = codespaceRanges.length; n \u003C nn; n++) {\\n      c = ((c \u003C\u003C 8) | str.charCodeAt(offset + n)) >>> 0;\\n      \u002F\u002F Check each codespace range to see if it falls within.\\n      const codespaceRange = codespaceRanges[n];\\n      for (let k = 0, kk = codespaceRange.length; k \u003C kk; ) {\\n        const low = codespaceRange[k++];\\n        const high = codespaceRange[k++];\\n        if (c >= low && c \u003C= high) {\\n          out.charcode = c;\\n          out.length = n + 1;\\n          return;\\n        }\\n      }\\n    }\\n    out.charcode = 0;\\n    out.length = 1;\\n  }\\n\\n  getCharCodeLength(charCode) {\\n    const codespaceRanges = this.codespaceRanges;\\n    for (let n = 0, nn = codespaceRanges.length; n \u003C nn; n++) {\\n      \u002F\u002F Check each codespace range to see if it falls within.\\n      const codespaceRange = codespaceRanges[n];\\n      for (let k = 0, kk = codespaceRange.length; k \u003C kk; ) {\\n        const low = codespaceRange[k++];\\n        const high = codespaceRange[k++];\\n        if (charCode >= low && charCode \u003C= high) {\\n          return n + 1;\\n        }\\n      }\\n    }\\n    return 1;\\n  }\\n\\n  get length() {\\n    return this._map.length;\\n  }\\n\\n  get isIdentityCMap() {\\n    if (!(this.name === \\\"Identity-H\\\" || this.name === \\\"Identity-V\\\")) {\\n      return false;\\n    }\\n    if (this._map.length !== 0x10000) {\\n      return false;\\n    }\\n    for (let i = 0; i \u003C 0x10000; i++) {\\n      if (this._map[i] !== i) {\\n        return false;\\n      }\\n    }\\n    return true;\\n  }\\n}\\n\\n\u002F\u002F A special case of CMap, where the _map array implicitly has a length of\\n\u002F\u002F 65536 and each element is equal to its index.\\nclass IdentityCMap extends CMap {\\n  constructor(vertical, n) {\\n    super();\\n\\n    this.vertical = vertical;\\n    this.addCodespaceRange(n, 0, 0xffff);\\n  }\\n\\n  mapCidRange(low, high, dstLow) {\\n    unreachable(\\\"should not call mapCidRange\\\");\\n  }\\n\\n  mapBfRange(low, high, dstLow) {\\n    unreachable(\\\"should not call mapBfRange\\\");\\n  }\\n\\n  mapBfRangeToArray(low, high, array) {\\n    unreachable(\\\"should not call mapBfRangeToArray\\\");\\n  }\\n\\n  mapOne(src, dst) {\\n    unreachable(\\\"should not call mapCidOne\\\");\\n  }\\n\\n  lookup(code) {\\n    return Number.isInteger(code) && code \u003C= 0xffff ? code : undefined;\\n  }\\n\\n  contains(code) {\\n    return Number.isInteger(code) && code \u003C= 0xffff;\\n  }\\n\\n  forEach(callback) {\\n    for (let i = 0; i \u003C= 0xffff; i++) {\\n      callback(i, i);\\n    }\\n  }\\n\\n  charCodeOf(value) {\\n    return Number.isInteger(value) && value \u003C= 0xffff ? value : -1;\\n  }\\n\\n  getMap() {\\n    \u002F\u002F Sometimes identity maps must be instantiated, but it's rare.\\n    const map = new Array(0x10000);\\n    for (let i = 0; i \u003C= 0xffff; i++) {\\n      map[i] = i;\\n    }\\n    return map;\\n  }\\n\\n  get length() {\\n    return 0x10000;\\n  }\\n\\n  \u002F\u002F eslint-disable-next-line getter-return\\n  get isIdentityCMap() {\\n    unreachable(\\\"should not access .isIdentityCMap\\\");\\n  }\\n}\\n\\nfunction strToInt(str) {\\n  let a = 0;\\n  for (let i = 0; i \u003C str.length; i++) {\\n    a = (a \u003C\u003C 8) | str.charCodeAt(i);\\n  }\\n  return a >>> 0;\\n}\\n\\nfunction expectString(obj) {\\n  if (typeof obj !== \\\"string\\\") {\\n    throw new FormatError(\\\"Malformed CMap: expected string.\\\");\\n  }\\n}\\n\\nfunction expectInt(obj) {\\n  if (!Number.isInteger(obj)) {\\n    throw new FormatError(\\\"Malformed CMap: expected int.\\\");\\n  }\\n}\\n\\nfunction parseBfChar(cMap, lexer) {\\n  while (true) {\\n    let obj = lexer.getObj();\\n    if (obj === EOF) {\\n      break;\\n    }\\n    if (isCmd(obj, \\\"endbfchar\\\")) {\\n      return;\\n    }\\n    expectString(obj);\\n    const src = strToInt(obj);\\n    obj = lexer.getObj();\\n    \u002F\u002F TODO are \u002FdstName used?\\n    expectString(obj);\\n    const dst = obj;\\n    cMap.mapOne(src, dst);\\n  }\\n}\\n\\nfunction parseBfRange(cMap, lexer) {\\n  while (true) {\\n    let obj = lexer.getObj();\\n    if (obj === EOF) {\\n      break;\\n    }\\n    if (isCmd(obj, \\\"endbfrange\\\")) {\\n      return;\\n    }\\n    expectString(obj);\\n    const low = strToInt(obj);\\n    obj = lexer.getObj();\\n    expectString(obj);\\n    const high = strToInt(obj);\\n    obj = lexer.getObj();\\n    if (Number.isInteger(obj) || typeof obj === \\\"string\\\") {\\n      const dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj;\\n      cMap.mapBfRange(low, high, dstLow);\\n    } else if (isCmd(obj, \\\"[\\\")) {\\n      obj = lexer.getObj();\\n      const array = [];\\n      while (!isCmd(obj, \\\"]\\\") && obj !== EOF) {\\n        array.push(obj);\\n        obj = lexer.getObj();\\n      }\\n      cMap.mapBfRangeToArray(low, high, array);\\n    } else {\\n      break;\\n    }\\n  }\\n  throw new FormatError(\\\"Invalid bf range.\\\");\\n}\\n\\nfunction parseCidChar(cMap, lexer) {\\n  while (true) {\\n    let obj = lexer.getObj();\\n    if (obj === EOF) {\\n      break;\\n    }\\n    if (isCmd(obj, \\\"endcidchar\\\")) {\\n      return;\\n    }\\n    expectString(obj);\\n    const src = strToInt(obj);\\n    obj = lexer.getObj();\\n    expectInt(obj);\\n    const dst = obj;\\n    cMap.mapOne(src, dst);\\n  }\\n}\\n\\nfunction parseCidRange(cMap, lexer) {\\n  while (true) {\\n    let obj = lexer.getObj();\\n    if (obj === EOF) {\\n      break;\\n    }\\n    if (isCmd(obj, \\\"endcidrange\\\")) {\\n      return;\\n    }\\n    expectString(obj);\\n    const low = strToInt(obj);\\n    obj = lexer.getObj();\\n    expectString(obj);\\n    const high = strToInt(obj);\\n    obj = lexer.getObj();\\n    expectInt(obj);\\n    const dstLow = obj;\\n    cMap.mapCidRange(low, high, dstLow);\\n  }\\n}\\n\\nfunction parseCodespaceRange(cMap, lexer) {\\n  while (true) {\\n    let obj = lexer.getObj();\\n    if (obj === EOF) {\\n      break;\\n    }\\n    if (isCmd(obj, \\\"endcodespacerange\\\")) {\\n      return;\\n    }\\n    if (typeof obj !== \\\"string\\\") {\\n      break;\\n    }\\n    const low = strToInt(obj);\\n    obj = lexer.getObj();\\n    if (typeof obj !== \\\"string\\\") {\\n      break;\\n    }\\n    const high = strToInt(obj);\\n    cMap.addCodespaceRange(obj.length, low, high);\\n  }\\n  throw new FormatError(\\\"Invalid codespace range.\\\");\\n}\\n\\nfunction parseWMode(cMap, lexer) {\\n  const obj = lexer.getObj();\\n  if (Number.isInteger(obj)) {\\n    cMap.vertical = !!obj;\\n  }\\n}\\n\\nfunction parseCMapName(cMap, lexer) {\\n  const obj = lexer.getObj();\\n  if (obj instanceof Name) {\\n    cMap.name = obj.name;\\n  }\\n}\\n\\nasync function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {\\n  let previous, embeddedUseCMap;\\n  objLoop: while (true) {\\n    try {\\n      const obj = lexer.getObj();\\n      if (obj === EOF) {\\n        break;\\n      } else if (obj instanceof Name) {\\n        if (obj.name === \\\"WMode\\\") {\\n          parseWMode(cMap, lexer);\\n        } else if (obj.name === \\\"CMapName\\\") {\\n          parseCMapName(cMap, lexer);\\n        }\\n        previous = obj;\\n      } else if (obj instanceof Cmd) {\\n        switch (obj.cmd) {\\n          case \\\"endcmap\\\":\\n            break objLoop;\\n          case \\\"usecmap\\\":\\n            if (previous instanceof Name) {\\n              embeddedUseCMap = previous.name;\\n            }\\n            break;\\n          case \\\"begincodespacerange\\\":\\n            parseCodespaceRange(cMap, lexer);\\n            break;\\n          case \\\"beginbfchar\\\":\\n            parseBfChar(cMap, lexer);\\n            break;\\n          case \\\"begincidchar\\\":\\n            parseCidChar(cMap, lexer);\\n            break;\\n          case \\\"beginbfrange\\\":\\n            parseBfRange(cMap, lexer);\\n            break;\\n          case \\\"begincidrange\\\":\\n            parseCidRange(cMap, lexer);\\n            break;\\n        }\\n      }\\n    } catch (ex) {\\n      if (ex instanceof MissingDataException) {\\n        throw ex;\\n      }\\n      warn(\\\"Invalid cMap data: \\\" + ex);\\n      continue;\\n    }\\n  }\\n\\n  if (!useCMap && embeddedUseCMap) {\\n    \u002F\u002F Load the useCMap definition from the file only if there wasn't one\\n    \u002F\u002F specified.\\n    useCMap = embeddedUseCMap;\\n  }\\n  if (useCMap) {\\n    return extendCMap(cMap, fetchBuiltInCMap, useCMap);\\n  }\\n  return cMap;\\n}\\n\\nasync function extendCMap(cMap, fetchBuiltInCMap, useCMap) {\\n  cMap.useCMap = await createBuiltInCMap(useCMap, fetchBuiltInCMap);\\n  \u002F\u002F If there aren't any code space ranges defined clone all the parent ones\\n  \u002F\u002F into this cMap.\\n  if (cMap.numCodespaceRanges === 0) {\\n    const useCodespaceRanges = cMap.useCMap.codespaceRanges;\\n    for (let i = 0; i \u003C useCodespaceRanges.length; i++) {\\n      cMap.codespaceRanges[i] = useCodespaceRanges[i].slice();\\n    }\\n    cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges;\\n  }\\n  \u002F\u002F Merge the map into the current one, making sure not to override\\n  \u002F\u002F any previously defined entries.\\n  cMap.useCMap.forEach(function (key, value) {\\n    if (!cMap.contains(key)) {\\n      cMap.mapOne(key, value);\\n    }\\n  });\\n\\n  return cMap;\\n}\\n\\nasync function createBuiltInCMap(name, fetchBuiltInCMap) {\\n  if (name === \\\"Identity-H\\\") {\\n    return new IdentityCMap(false, 2);\\n  } else if (name === \\\"Identity-V\\\") {\\n    return new IdentityCMap(true, 2);\\n  }\\n  if (!BUILT_IN_CMAPS.includes(name)) {\\n    throw new Error(\\\"Unknown CMap name: \\\" + name);\\n  }\\n  if (!fetchBuiltInCMap) {\\n    throw new Error(\\\"Built-in CMap parameters are not provided.\\\");\\n  }\\n\\n  const { cMapData, isCompressed } = await fetchBuiltInCMap(name);\\n  const cMap = new CMap(true);\\n\\n  if (isCompressed) {\\n    return new BinaryCMapReader().process(cMapData, cMap, useCMap =>\\n      extendCMap(cMap, fetchBuiltInCMap, useCMap)\\n    );\\n  }\\n  const lexer = new Lexer(new Stream(cMapData));\\n  return parseCMap(cMap, lexer, fetchBuiltInCMap, null);\\n}\\n\\nclass CMapFactory {\\n  static async create({ encoding, fetchBuiltInCMap, useCMap }) {\\n    if (encoding instanceof Name) {\\n      return createBuiltInCMap(encoding.name, fetchBuiltInCMap);\\n    } else if (encoding instanceof BaseStream) {\\n      const parsedCMap = await parseCMap(\\n        \u002F* cMap = *\u002F new CMap(),\\n        \u002F* lexer = *\u002F new Lexer(encoding),\\n        fetchBuiltInCMap,\\n        useCMap\\n      );\\n\\n      if (parsedCMap.isIdentityCMap) {\\n        return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap);\\n      }\\n      return parsedCMap;\\n    }\\n    throw new Error(\\\"Encoding required.\\\");\\n  }\\n}\\n\\nexport { CMap, CMapFactory, IdentityCMap };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F prettier-ignore\\nconst ExpertEncoding = [\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"space\\\", \\\"exclamsmall\\\", \\\"Hungarumlautsmall\\\", \\\"\\\", \\\"dollaroldstyle\\\",\\n  \\\"dollarsuperior\\\", \\\"ampersandsmall\\\", \\\"Acutesmall\\\", \\\"parenleftsuperior\\\",\\n  \\\"parenrightsuperior\\\", \\\"twodotenleader\\\", \\\"onedotenleader\\\", \\\"comma\\\",\\n  \\\"hyphen\\\", \\\"period\\\", \\\"fraction\\\", \\\"zerooldstyle\\\", \\\"oneoldstyle\\\",\\n  \\\"twooldstyle\\\", \\\"threeoldstyle\\\", \\\"fouroldstyle\\\", \\\"fiveoldstyle\\\",\\n  \\\"sixoldstyle\\\", \\\"sevenoldstyle\\\", \\\"eightoldstyle\\\", \\\"nineoldstyle\\\", \\\"colon\\\",\\n  \\\"semicolon\\\", \\\"commasuperior\\\", \\\"threequartersemdash\\\", \\\"periodsuperior\\\",\\n  \\\"questionsmall\\\", \\\"\\\", \\\"asuperior\\\", \\\"bsuperior\\\", \\\"centsuperior\\\", \\\"dsuperior\\\",\\n  \\\"esuperior\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"isuperior\\\", \\\"\\\", \\\"\\\", \\\"lsuperior\\\", \\\"msuperior\\\",\\n  \\\"nsuperior\\\", \\\"osuperior\\\", \\\"\\\", \\\"\\\", \\\"rsuperior\\\", \\\"ssuperior\\\", \\\"tsuperior\\\",\\n  \\\"\\\", \\\"ff\\\", \\\"fi\\\", \\\"fl\\\", \\\"ffi\\\", \\\"ffl\\\", \\\"parenleftinferior\\\", \\\"\\\",\\n  \\\"parenrightinferior\\\", \\\"Circumflexsmall\\\", \\\"hyphensuperior\\\", \\\"Gravesmall\\\",\\n  \\\"Asmall\\\", \\\"Bsmall\\\", \\\"Csmall\\\", \\\"Dsmall\\\", \\\"Esmall\\\", \\\"Fsmall\\\", \\\"Gsmall\\\",\\n  \\\"Hsmall\\\", \\\"Ismall\\\", \\\"Jsmall\\\", \\\"Ksmall\\\", \\\"Lsmall\\\", \\\"Msmall\\\", \\\"Nsmall\\\",\\n  \\\"Osmall\\\", \\\"Psmall\\\", \\\"Qsmall\\\", \\\"Rsmall\\\", \\\"Ssmall\\\", \\\"Tsmall\\\", \\\"Usmall\\\",\\n  \\\"Vsmall\\\", \\\"Wsmall\\\", \\\"Xsmall\\\", \\\"Ysmall\\\", \\\"Zsmall\\\", \\\"colonmonetary\\\",\\n  \\\"onefitted\\\", \\\"rupiah\\\", \\\"Tildesmall\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"exclamdownsmall\\\", \\\"centoldstyle\\\", \\\"Lslashsmall\\\",\\n  \\\"\\\", \\\"\\\", \\\"Scaronsmall\\\", \\\"Zcaronsmall\\\", \\\"Dieresissmall\\\", \\\"Brevesmall\\\",\\n  \\\"Caronsmall\\\", \\\"\\\", \\\"Dotaccentsmall\\\", \\\"\\\", \\\"\\\", \\\"Macronsmall\\\", \\\"\\\", \\\"\\\",\\n  \\\"figuredash\\\", \\\"hypheninferior\\\", \\\"\\\", \\\"\\\", \\\"Ogoneksmall\\\", \\\"Ringsmall\\\",\\n  \\\"Cedillasmall\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"onequarter\\\", \\\"onehalf\\\", \\\"threequarters\\\",\\n  \\\"questiondownsmall\\\", \\\"oneeighth\\\", \\\"threeeighths\\\", \\\"fiveeighths\\\",\\n  \\\"seveneighths\\\", \\\"onethird\\\", \\\"twothirds\\\", \\\"\\\", \\\"\\\", \\\"zerosuperior\\\",\\n  \\\"onesuperior\\\", \\\"twosuperior\\\", \\\"threesuperior\\\", \\\"foursuperior\\\",\\n  \\\"fivesuperior\\\", \\\"sixsuperior\\\", \\\"sevensuperior\\\", \\\"eightsuperior\\\",\\n  \\\"ninesuperior\\\", \\\"zeroinferior\\\", \\\"oneinferior\\\", \\\"twoinferior\\\",\\n  \\\"threeinferior\\\", \\\"fourinferior\\\", \\\"fiveinferior\\\", \\\"sixinferior\\\",\\n  \\\"seveninferior\\\", \\\"eightinferior\\\", \\\"nineinferior\\\", \\\"centinferior\\\",\\n  \\\"dollarinferior\\\", \\\"periodinferior\\\", \\\"commainferior\\\", \\\"Agravesmall\\\",\\n  \\\"Aacutesmall\\\", \\\"Acircumflexsmall\\\", \\\"Atildesmall\\\", \\\"Adieresissmall\\\",\\n  \\\"Aringsmall\\\", \\\"AEsmall\\\", \\\"Ccedillasmall\\\", \\\"Egravesmall\\\", \\\"Eacutesmall\\\",\\n  \\\"Ecircumflexsmall\\\", \\\"Edieresissmall\\\", \\\"Igravesmall\\\", \\\"Iacutesmall\\\",\\n  \\\"Icircumflexsmall\\\", \\\"Idieresissmall\\\", \\\"Ethsmall\\\", \\\"Ntildesmall\\\",\\n  \\\"Ogravesmall\\\", \\\"Oacutesmall\\\", \\\"Ocircumflexsmall\\\", \\\"Otildesmall\\\",\\n  \\\"Odieresissmall\\\", \\\"OEsmall\\\", \\\"Oslashsmall\\\", \\\"Ugravesmall\\\", \\\"Uacutesmall\\\",\\n  \\\"Ucircumflexsmall\\\", \\\"Udieresissmall\\\", \\\"Yacutesmall\\\", \\\"Thornsmall\\\",\\n  \\\"Ydieresissmall\\\"];\\n\\n\u002F\u002F prettier-ignore\\nconst MacExpertEncoding = [\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"space\\\", \\\"exclamsmall\\\", \\\"Hungarumlautsmall\\\", \\\"centoldstyle\\\",\\n  \\\"dollaroldstyle\\\", \\\"dollarsuperior\\\", \\\"ampersandsmall\\\", \\\"Acutesmall\\\",\\n  \\\"parenleftsuperior\\\", \\\"parenrightsuperior\\\", \\\"twodotenleader\\\",\\n  \\\"onedotenleader\\\", \\\"comma\\\", \\\"hyphen\\\", \\\"period\\\", \\\"fraction\\\", \\\"zerooldstyle\\\",\\n  \\\"oneoldstyle\\\", \\\"twooldstyle\\\", \\\"threeoldstyle\\\", \\\"fouroldstyle\\\",\\n  \\\"fiveoldstyle\\\", \\\"sixoldstyle\\\", \\\"sevenoldstyle\\\", \\\"eightoldstyle\\\",\\n  \\\"nineoldstyle\\\", \\\"colon\\\", \\\"semicolon\\\", \\\"\\\", \\\"threequartersemdash\\\", \\\"\\\",\\n  \\\"questionsmall\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"Ethsmall\\\", \\\"\\\", \\\"\\\", \\\"onequarter\\\",\\n  \\\"onehalf\\\", \\\"threequarters\\\", \\\"oneeighth\\\", \\\"threeeighths\\\", \\\"fiveeighths\\\",\\n  \\\"seveneighths\\\", \\\"onethird\\\", \\\"twothirds\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"ff\\\",\\n  \\\"fi\\\", \\\"fl\\\", \\\"ffi\\\", \\\"ffl\\\", \\\"parenleftinferior\\\", \\\"\\\", \\\"parenrightinferior\\\",\\n  \\\"Circumflexsmall\\\", \\\"hypheninferior\\\", \\\"Gravesmall\\\", \\\"Asmall\\\", \\\"Bsmall\\\",\\n  \\\"Csmall\\\", \\\"Dsmall\\\", \\\"Esmall\\\", \\\"Fsmall\\\", \\\"Gsmall\\\", \\\"Hsmall\\\", \\\"Ismall\\\",\\n  \\\"Jsmall\\\", \\\"Ksmall\\\", \\\"Lsmall\\\", \\\"Msmall\\\", \\\"Nsmall\\\", \\\"Osmall\\\", \\\"Psmall\\\",\\n  \\\"Qsmall\\\", \\\"Rsmall\\\", \\\"Ssmall\\\", \\\"Tsmall\\\", \\\"Usmall\\\", \\\"Vsmall\\\", \\\"Wsmall\\\",\\n  \\\"Xsmall\\\", \\\"Ysmall\\\", \\\"Zsmall\\\", \\\"colonmonetary\\\", \\\"onefitted\\\", \\\"rupiah\\\",\\n  \\\"Tildesmall\\\", \\\"\\\", \\\"\\\", \\\"asuperior\\\", \\\"centsuperior\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"Aacutesmall\\\", \\\"Agravesmall\\\", \\\"Acircumflexsmall\\\", \\\"Adieresissmall\\\",\\n  \\\"Atildesmall\\\", \\\"Aringsmall\\\", \\\"Ccedillasmall\\\", \\\"Eacutesmall\\\", \\\"Egravesmall\\\",\\n  \\\"Ecircumflexsmall\\\", \\\"Edieresissmall\\\", \\\"Iacutesmall\\\", \\\"Igravesmall\\\",\\n  \\\"Icircumflexsmall\\\", \\\"Idieresissmall\\\", \\\"Ntildesmall\\\", \\\"Oacutesmall\\\",\\n  \\\"Ogravesmall\\\", \\\"Ocircumflexsmall\\\", \\\"Odieresissmall\\\", \\\"Otildesmall\\\",\\n  \\\"Uacutesmall\\\", \\\"Ugravesmall\\\", \\\"Ucircumflexsmall\\\", \\\"Udieresissmall\\\", \\\"\\\",\\n  \\\"eightsuperior\\\", \\\"fourinferior\\\", \\\"threeinferior\\\", \\\"sixinferior\\\",\\n  \\\"eightinferior\\\", \\\"seveninferior\\\", \\\"Scaronsmall\\\", \\\"\\\", \\\"centinferior\\\",\\n  \\\"twoinferior\\\", \\\"\\\", \\\"Dieresissmall\\\", \\\"\\\", \\\"Caronsmall\\\", \\\"osuperior\\\",\\n  \\\"fiveinferior\\\", \\\"\\\", \\\"commainferior\\\", \\\"periodinferior\\\", \\\"Yacutesmall\\\", \\\"\\\",\\n  \\\"dollarinferior\\\", \\\"\\\", \\\"\\\", \\\"Thornsmall\\\", \\\"\\\", \\\"nineinferior\\\", \\\"zeroinferior\\\",\\n  \\\"Zcaronsmall\\\", \\\"AEsmall\\\", \\\"Oslashsmall\\\", \\\"questiondownsmall\\\",\\n  \\\"oneinferior\\\", \\\"Lslashsmall\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"Cedillasmall\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"OEsmall\\\", \\\"figuredash\\\", \\\"hyphensuperior\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"exclamdownsmall\\\", \\\"\\\", \\\"Ydieresissmall\\\", \\\"\\\", \\\"onesuperior\\\", \\\"twosuperior\\\",\\n  \\\"threesuperior\\\", \\\"foursuperior\\\", \\\"fivesuperior\\\", \\\"sixsuperior\\\",\\n  \\\"sevensuperior\\\", \\\"ninesuperior\\\", \\\"zerosuperior\\\", \\\"\\\", \\\"esuperior\\\",\\n  \\\"rsuperior\\\", \\\"tsuperior\\\", \\\"\\\", \\\"\\\", \\\"isuperior\\\", \\\"ssuperior\\\", \\\"dsuperior\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"lsuperior\\\", \\\"Ogoneksmall\\\", \\\"Brevesmall\\\",\\n  \\\"Macronsmall\\\", \\\"bsuperior\\\", \\\"nsuperior\\\", \\\"msuperior\\\", \\\"commasuperior\\\",\\n  \\\"periodsuperior\\\", \\\"Dotaccentsmall\\\", \\\"Ringsmall\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\"];\\n\\n\u002F\u002F prettier-ignore\\nconst MacRomanEncoding = [\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"space\\\", \\\"exclam\\\", \\\"quotedbl\\\", \\\"numbersign\\\", \\\"dollar\\\", \\\"percent\\\",\\n  \\\"ampersand\\\", \\\"quotesingle\\\", \\\"parenleft\\\", \\\"parenright\\\", \\\"asterisk\\\", \\\"plus\\\",\\n  \\\"comma\\\", \\\"hyphen\\\", \\\"period\\\", \\\"slash\\\", \\\"zero\\\", \\\"one\\\", \\\"two\\\", \\\"three\\\",\\n  \\\"four\\\", \\\"five\\\", \\\"six\\\", \\\"seven\\\", \\\"eight\\\", \\\"nine\\\", \\\"colon\\\", \\\"semicolon\\\",\\n  \\\"less\\\", \\\"equal\\\", \\\"greater\\\", \\\"question\\\", \\\"at\\\", \\\"A\\\", \\\"B\\\", \\\"C\\\", \\\"D\\\", \\\"E\\\", \\\"F\\\",\\n  \\\"G\\\", \\\"H\\\", \\\"I\\\", \\\"J\\\", \\\"K\\\", \\\"L\\\", \\\"M\\\", \\\"N\\\", \\\"O\\\", \\\"P\\\", \\\"Q\\\", \\\"R\\\", \\\"S\\\", \\\"T\\\", \\\"U\\\",\\n  \\\"V\\\", \\\"W\\\", \\\"X\\\", \\\"Y\\\", \\\"Z\\\", \\\"bracketleft\\\", \\\"backslash\\\", \\\"bracketright\\\",\\n  \\\"asciicircum\\\", \\\"underscore\\\", \\\"grave\\\", \\\"a\\\", \\\"b\\\", \\\"c\\\", \\\"d\\\", \\\"e\\\", \\\"f\\\", \\\"g\\\",\\n  \\\"h\\\", \\\"i\\\", \\\"j\\\", \\\"k\\\", \\\"l\\\", \\\"m\\\", \\\"n\\\", \\\"o\\\", \\\"p\\\", \\\"q\\\", \\\"r\\\", \\\"s\\\", \\\"t\\\", \\\"u\\\", \\\"v\\\",\\n  \\\"w\\\", \\\"x\\\", \\\"y\\\", \\\"z\\\", \\\"braceleft\\\", \\\"bar\\\", \\\"braceright\\\", \\\"asciitilde\\\", \\\"\\\",\\n  \\\"Adieresis\\\", \\\"Aring\\\", \\\"Ccedilla\\\", \\\"Eacute\\\", \\\"Ntilde\\\", \\\"Odieresis\\\",\\n  \\\"Udieresis\\\", \\\"aacute\\\", \\\"agrave\\\", \\\"acircumflex\\\", \\\"adieresis\\\", \\\"atilde\\\",\\n  \\\"aring\\\", \\\"ccedilla\\\", \\\"eacute\\\", \\\"egrave\\\", \\\"ecircumflex\\\", \\\"edieresis\\\",\\n  \\\"iacute\\\", \\\"igrave\\\", \\\"icircumflex\\\", \\\"idieresis\\\", \\\"ntilde\\\", \\\"oacute\\\",\\n  \\\"ograve\\\", \\\"ocircumflex\\\", \\\"odieresis\\\", \\\"otilde\\\", \\\"uacute\\\", \\\"ugrave\\\",\\n  \\\"ucircumflex\\\", \\\"udieresis\\\", \\\"dagger\\\", \\\"degree\\\", \\\"cent\\\", \\\"sterling\\\",\\n  \\\"section\\\", \\\"bullet\\\", \\\"paragraph\\\", \\\"germandbls\\\", \\\"registered\\\", \\\"copyright\\\",\\n  \\\"trademark\\\", \\\"acute\\\", \\\"dieresis\\\", \\\"notequal\\\", \\\"AE\\\", \\\"Oslash\\\", \\\"infinity\\\",\\n  \\\"plusminus\\\", \\\"lessequal\\\", \\\"greaterequal\\\", \\\"yen\\\", \\\"mu\\\", \\\"partialdiff\\\",\\n  \\\"summation\\\", \\\"product\\\", \\\"pi\\\", \\\"integral\\\", \\\"ordfeminine\\\", \\\"ordmasculine\\\",\\n  \\\"Omega\\\", \\\"ae\\\", \\\"oslash\\\", \\\"questiondown\\\", \\\"exclamdown\\\", \\\"logicalnot\\\",\\n  \\\"radical\\\", \\\"florin\\\", \\\"approxequal\\\", \\\"Delta\\\", \\\"guillemotleft\\\",\\n  \\\"guillemotright\\\", \\\"ellipsis\\\", \\\"space\\\", \\\"Agrave\\\", \\\"Atilde\\\", \\\"Otilde\\\", \\\"OE\\\",\\n  \\\"oe\\\", \\\"endash\\\", \\\"emdash\\\", \\\"quotedblleft\\\", \\\"quotedblright\\\", \\\"quoteleft\\\",\\n  \\\"quoteright\\\", \\\"divide\\\", \\\"lozenge\\\", \\\"ydieresis\\\", \\\"Ydieresis\\\", \\\"fraction\\\",\\n  \\\"currency\\\", \\\"guilsinglleft\\\", \\\"guilsinglright\\\", \\\"fi\\\", \\\"fl\\\", \\\"daggerdbl\\\",\\n  \\\"periodcentered\\\", \\\"quotesinglbase\\\", \\\"quotedblbase\\\", \\\"perthousand\\\",\\n  \\\"Acircumflex\\\", \\\"Ecircumflex\\\", \\\"Aacute\\\", \\\"Edieresis\\\", \\\"Egrave\\\", \\\"Iacute\\\",\\n  \\\"Icircumflex\\\", \\\"Idieresis\\\", \\\"Igrave\\\", \\\"Oacute\\\", \\\"Ocircumflex\\\", \\\"apple\\\",\\n  \\\"Ograve\\\", \\\"Uacute\\\", \\\"Ucircumflex\\\", \\\"Ugrave\\\", \\\"dotlessi\\\", \\\"circumflex\\\",\\n  \\\"tilde\\\", \\\"macron\\\", \\\"breve\\\", \\\"dotaccent\\\", \\\"ring\\\", \\\"cedilla\\\", \\\"hungarumlaut\\\",\\n  \\\"ogonek\\\", \\\"caron\\\"];\\n\\n\u002F\u002F prettier-ignore\\nconst StandardEncoding = [\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"space\\\", \\\"exclam\\\", \\\"quotedbl\\\", \\\"numbersign\\\", \\\"dollar\\\", \\\"percent\\\",\\n  \\\"ampersand\\\", \\\"quoteright\\\", \\\"parenleft\\\", \\\"parenright\\\", \\\"asterisk\\\", \\\"plus\\\",\\n  \\\"comma\\\", \\\"hyphen\\\", \\\"period\\\", \\\"slash\\\", \\\"zero\\\", \\\"one\\\", \\\"two\\\", \\\"three\\\",\\n  \\\"four\\\", \\\"five\\\", \\\"six\\\", \\\"seven\\\", \\\"eight\\\", \\\"nine\\\", \\\"colon\\\", \\\"semicolon\\\",\\n  \\\"less\\\", \\\"equal\\\", \\\"greater\\\", \\\"question\\\", \\\"at\\\", \\\"A\\\", \\\"B\\\", \\\"C\\\", \\\"D\\\", \\\"E\\\", \\\"F\\\",\\n  \\\"G\\\", \\\"H\\\", \\\"I\\\", \\\"J\\\", \\\"K\\\", \\\"L\\\", \\\"M\\\", \\\"N\\\", \\\"O\\\", \\\"P\\\", \\\"Q\\\", \\\"R\\\", \\\"S\\\", \\\"T\\\", \\\"U\\\",\\n  \\\"V\\\", \\\"W\\\", \\\"X\\\", \\\"Y\\\", \\\"Z\\\", \\\"bracketleft\\\", \\\"backslash\\\", \\\"bracketright\\\",\\n  \\\"asciicircum\\\", \\\"underscore\\\", \\\"quoteleft\\\", \\\"a\\\", \\\"b\\\", \\\"c\\\", \\\"d\\\", \\\"e\\\", \\\"f\\\",\\n  \\\"g\\\", \\\"h\\\", \\\"i\\\", \\\"j\\\", \\\"k\\\", \\\"l\\\", \\\"m\\\", \\\"n\\\", \\\"o\\\", \\\"p\\\", \\\"q\\\", \\\"r\\\", \\\"s\\\", \\\"t\\\", \\\"u\\\",\\n  \\\"v\\\", \\\"w\\\", \\\"x\\\", \\\"y\\\", \\\"z\\\", \\\"braceleft\\\", \\\"bar\\\", \\\"braceright\\\", \\\"asciitilde\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"exclamdown\\\",\\n  \\\"cent\\\", \\\"sterling\\\", \\\"fraction\\\", \\\"yen\\\", \\\"florin\\\", \\\"section\\\", \\\"currency\\\",\\n  \\\"quotesingle\\\", \\\"quotedblleft\\\", \\\"guillemotleft\\\", \\\"guilsinglleft\\\",\\n  \\\"guilsinglright\\\", \\\"fi\\\", \\\"fl\\\", \\\"\\\", \\\"endash\\\", \\\"dagger\\\", \\\"daggerdbl\\\",\\n  \\\"periodcentered\\\", \\\"\\\", \\\"paragraph\\\", \\\"bullet\\\", \\\"quotesinglbase\\\",\\n  \\\"quotedblbase\\\", \\\"quotedblright\\\", \\\"guillemotright\\\", \\\"ellipsis\\\",\\n  \\\"perthousand\\\", \\\"\\\", \\\"questiondown\\\", \\\"\\\", \\\"grave\\\", \\\"acute\\\", \\\"circumflex\\\",\\n  \\\"tilde\\\", \\\"macron\\\", \\\"breve\\\", \\\"dotaccent\\\", \\\"dieresis\\\", \\\"\\\", \\\"ring\\\", \\\"cedilla\\\",\\n  \\\"\\\", \\\"hungarumlaut\\\", \\\"ogonek\\\", \\\"caron\\\", \\\"emdash\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"AE\\\", \\\"\\\", \\\"ordfeminine\\\", \\\"\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"Lslash\\\", \\\"Oslash\\\", \\\"OE\\\", \\\"ordmasculine\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"ae\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"dotlessi\\\", \\\"\\\", \\\"\\\", \\\"lslash\\\", \\\"oslash\\\", \\\"oe\\\", \\\"germandbls\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\"];\\n\\n\u002F\u002F prettier-ignore\\nconst WinAnsiEncoding = [\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"space\\\", \\\"exclam\\\", \\\"quotedbl\\\", \\\"numbersign\\\", \\\"dollar\\\", \\\"percent\\\",\\n  \\\"ampersand\\\", \\\"quotesingle\\\", \\\"parenleft\\\", \\\"parenright\\\", \\\"asterisk\\\", \\\"plus\\\",\\n  \\\"comma\\\", \\\"hyphen\\\", \\\"period\\\", \\\"slash\\\", \\\"zero\\\", \\\"one\\\", \\\"two\\\", \\\"three\\\",\\n  \\\"four\\\", \\\"five\\\", \\\"six\\\", \\\"seven\\\", \\\"eight\\\", \\\"nine\\\", \\\"colon\\\", \\\"semicolon\\\",\\n  \\\"less\\\", \\\"equal\\\", \\\"greater\\\", \\\"question\\\", \\\"at\\\", \\\"A\\\", \\\"B\\\", \\\"C\\\", \\\"D\\\", \\\"E\\\", \\\"F\\\",\\n  \\\"G\\\", \\\"H\\\", \\\"I\\\", \\\"J\\\", \\\"K\\\", \\\"L\\\", \\\"M\\\", \\\"N\\\", \\\"O\\\", \\\"P\\\", \\\"Q\\\", \\\"R\\\", \\\"S\\\", \\\"T\\\", \\\"U\\\",\\n  \\\"V\\\", \\\"W\\\", \\\"X\\\", \\\"Y\\\", \\\"Z\\\", \\\"bracketleft\\\", \\\"backslash\\\", \\\"bracketright\\\",\\n  \\\"asciicircum\\\", \\\"underscore\\\", \\\"grave\\\", \\\"a\\\", \\\"b\\\", \\\"c\\\", \\\"d\\\", \\\"e\\\", \\\"f\\\", \\\"g\\\",\\n  \\\"h\\\", \\\"i\\\", \\\"j\\\", \\\"k\\\", \\\"l\\\", \\\"m\\\", \\\"n\\\", \\\"o\\\", \\\"p\\\", \\\"q\\\", \\\"r\\\", \\\"s\\\", \\\"t\\\", \\\"u\\\", \\\"v\\\",\\n  \\\"w\\\", \\\"x\\\", \\\"y\\\", \\\"z\\\", \\\"braceleft\\\", \\\"bar\\\", \\\"braceright\\\", \\\"asciitilde\\\",\\n  \\\"bullet\\\", \\\"Euro\\\", \\\"bullet\\\", \\\"quotesinglbase\\\", \\\"florin\\\", \\\"quotedblbase\\\",\\n  \\\"ellipsis\\\", \\\"dagger\\\", \\\"daggerdbl\\\", \\\"circumflex\\\", \\\"perthousand\\\", \\\"Scaron\\\",\\n  \\\"guilsinglleft\\\", \\\"OE\\\", \\\"bullet\\\", \\\"Zcaron\\\", \\\"bullet\\\", \\\"bullet\\\", \\\"quoteleft\\\",\\n  \\\"quoteright\\\", \\\"quotedblleft\\\", \\\"quotedblright\\\", \\\"bullet\\\", \\\"endash\\\",\\n  \\\"emdash\\\", \\\"tilde\\\", \\\"trademark\\\", \\\"scaron\\\", \\\"guilsinglright\\\", \\\"oe\\\", \\\"bullet\\\",\\n  \\\"zcaron\\\", \\\"Ydieresis\\\", \\\"space\\\", \\\"exclamdown\\\", \\\"cent\\\", \\\"sterling\\\",\\n  \\\"currency\\\", \\\"yen\\\", \\\"brokenbar\\\", \\\"section\\\", \\\"dieresis\\\", \\\"copyright\\\",\\n  \\\"ordfeminine\\\", \\\"guillemotleft\\\", \\\"logicalnot\\\", \\\"hyphen\\\", \\\"registered\\\",\\n  \\\"macron\\\", \\\"degree\\\", \\\"plusminus\\\", \\\"twosuperior\\\", \\\"threesuperior\\\", \\\"acute\\\",\\n  \\\"mu\\\", \\\"paragraph\\\", \\\"periodcentered\\\", \\\"cedilla\\\", \\\"onesuperior\\\",\\n  \\\"ordmasculine\\\", \\\"guillemotright\\\", \\\"onequarter\\\", \\\"onehalf\\\", \\\"threequarters\\\",\\n  \\\"questiondown\\\", \\\"Agrave\\\", \\\"Aacute\\\", \\\"Acircumflex\\\", \\\"Atilde\\\", \\\"Adieresis\\\",\\n  \\\"Aring\\\", \\\"AE\\\", \\\"Ccedilla\\\", \\\"Egrave\\\", \\\"Eacute\\\", \\\"Ecircumflex\\\", \\\"Edieresis\\\",\\n  \\\"Igrave\\\", \\\"Iacute\\\", \\\"Icircumflex\\\", \\\"Idieresis\\\", \\\"Eth\\\", \\\"Ntilde\\\", \\\"Ograve\\\",\\n  \\\"Oacute\\\", \\\"Ocircumflex\\\", \\\"Otilde\\\", \\\"Odieresis\\\", \\\"multiply\\\", \\\"Oslash\\\",\\n  \\\"Ugrave\\\", \\\"Uacute\\\", \\\"Ucircumflex\\\", \\\"Udieresis\\\", \\\"Yacute\\\", \\\"Thorn\\\",\\n  \\\"germandbls\\\", \\\"agrave\\\", \\\"aacute\\\", \\\"acircumflex\\\", \\\"atilde\\\", \\\"adieresis\\\",\\n  \\\"aring\\\", \\\"ae\\\", \\\"ccedilla\\\", \\\"egrave\\\", \\\"eacute\\\", \\\"ecircumflex\\\", \\\"edieresis\\\",\\n  \\\"igrave\\\", \\\"iacute\\\", \\\"icircumflex\\\", \\\"idieresis\\\", \\\"eth\\\", \\\"ntilde\\\", \\\"ograve\\\",\\n  \\\"oacute\\\", \\\"ocircumflex\\\", \\\"otilde\\\", \\\"odieresis\\\", \\\"divide\\\", \\\"oslash\\\",\\n  \\\"ugrave\\\", \\\"uacute\\\", \\\"ucircumflex\\\", \\\"udieresis\\\", \\\"yacute\\\", \\\"thorn\\\",\\n  \\\"ydieresis\\\"];\\n\\n\u002F\u002F prettier-ignore\\nconst SymbolSetEncoding = [\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"space\\\", \\\"exclam\\\", \\\"universal\\\", \\\"numbersign\\\", \\\"existential\\\", \\\"percent\\\",\\n  \\\"ampersand\\\", \\\"suchthat\\\", \\\"parenleft\\\", \\\"parenright\\\", \\\"asteriskmath\\\", \\\"plus\\\",\\n  \\\"comma\\\", \\\"minus\\\", \\\"period\\\", \\\"slash\\\", \\\"zero\\\", \\\"one\\\", \\\"two\\\", \\\"three\\\", \\\"four\\\",\\n  \\\"five\\\", \\\"six\\\", \\\"seven\\\", \\\"eight\\\", \\\"nine\\\", \\\"colon\\\", \\\"semicolon\\\", \\\"less\\\",\\n  \\\"equal\\\", \\\"greater\\\", \\\"question\\\", \\\"congruent\\\", \\\"Alpha\\\", \\\"Beta\\\", \\\"Chi\\\",\\n  \\\"Delta\\\", \\\"Epsilon\\\", \\\"Phi\\\", \\\"Gamma\\\", \\\"Eta\\\", \\\"Iota\\\", \\\"theta1\\\", \\\"Kappa\\\",\\n  \\\"Lambda\\\", \\\"Mu\\\", \\\"Nu\\\", \\\"Omicron\\\", \\\"Pi\\\", \\\"Theta\\\", \\\"Rho\\\", \\\"Sigma\\\", \\\"Tau\\\",\\n  \\\"Upsilon\\\", \\\"sigma1\\\", \\\"Omega\\\", \\\"Xi\\\", \\\"Psi\\\", \\\"Zeta\\\", \\\"bracketleft\\\",\\n  \\\"therefore\\\", \\\"bracketright\\\", \\\"perpendicular\\\", \\\"underscore\\\", \\\"radicalex\\\",\\n  \\\"alpha\\\", \\\"beta\\\", \\\"chi\\\", \\\"delta\\\", \\\"epsilon\\\", \\\"phi\\\", \\\"gamma\\\", \\\"eta\\\", \\\"iota\\\",\\n  \\\"phi1\\\", \\\"kappa\\\", \\\"lambda\\\", \\\"mu\\\", \\\"nu\\\", \\\"omicron\\\", \\\"pi\\\", \\\"theta\\\", \\\"rho\\\",\\n  \\\"sigma\\\", \\\"tau\\\", \\\"upsilon\\\", \\\"omega1\\\", \\\"omega\\\", \\\"xi\\\", \\\"psi\\\", \\\"zeta\\\",\\n  \\\"braceleft\\\", \\\"bar\\\", \\\"braceright\\\", \\\"similar\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"Euro\\\", \\\"Upsilon1\\\", \\\"minute\\\", \\\"lessequal\\\",\\n  \\\"fraction\\\", \\\"infinity\\\", \\\"florin\\\", \\\"club\\\", \\\"diamond\\\", \\\"heart\\\", \\\"spade\\\",\\n  \\\"arrowboth\\\", \\\"arrowleft\\\", \\\"arrowup\\\", \\\"arrowright\\\", \\\"arrowdown\\\", \\\"degree\\\",\\n  \\\"plusminus\\\", \\\"second\\\", \\\"greaterequal\\\", \\\"multiply\\\", \\\"proportional\\\",\\n  \\\"partialdiff\\\", \\\"bullet\\\", \\\"divide\\\", \\\"notequal\\\", \\\"equivalence\\\",\\n  \\\"approxequal\\\", \\\"ellipsis\\\", \\\"arrowvertex\\\", \\\"arrowhorizex\\\", \\\"carriagereturn\\\",\\n  \\\"aleph\\\", \\\"Ifraktur\\\", \\\"Rfraktur\\\", \\\"weierstrass\\\", \\\"circlemultiply\\\",\\n  \\\"circleplus\\\", \\\"emptyset\\\", \\\"intersection\\\", \\\"union\\\", \\\"propersuperset\\\",\\n  \\\"reflexsuperset\\\", \\\"notsubset\\\", \\\"propersubset\\\", \\\"reflexsubset\\\", \\\"element\\\",\\n  \\\"notelement\\\", \\\"angle\\\", \\\"gradient\\\", \\\"registerserif\\\", \\\"copyrightserif\\\",\\n  \\\"trademarkserif\\\", \\\"product\\\", \\\"radical\\\", \\\"dotmath\\\", \\\"logicalnot\\\",\\n  \\\"logicaland\\\", \\\"logicalor\\\", \\\"arrowdblboth\\\", \\\"arrowdblleft\\\", \\\"arrowdblup\\\",\\n  \\\"arrowdblright\\\", \\\"arrowdbldown\\\", \\\"lozenge\\\", \\\"angleleft\\\", \\\"registersans\\\",\\n  \\\"copyrightsans\\\", \\\"trademarksans\\\", \\\"summation\\\", \\\"parenlefttp\\\",\\n  \\\"parenleftex\\\", \\\"parenleftbt\\\", \\\"bracketlefttp\\\", \\\"bracketleftex\\\",\\n  \\\"bracketleftbt\\\", \\\"bracelefttp\\\", \\\"braceleftmid\\\", \\\"braceleftbt\\\", \\\"braceex\\\",\\n  \\\"\\\", \\\"angleright\\\", \\\"integral\\\", \\\"integraltp\\\", \\\"integralex\\\", \\\"integralbt\\\",\\n  \\\"parenrighttp\\\", \\\"parenrightex\\\", \\\"parenrightbt\\\", \\\"bracketrighttp\\\",\\n  \\\"bracketrightex\\\", \\\"bracketrightbt\\\", \\\"bracerighttp\\\", \\\"bracerightmid\\\",\\n  \\\"bracerightbt\\\", \\\"\\\"];\\n\\n\u002F\u002F prettier-ignore\\nconst ZapfDingbatsEncoding = [\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"space\\\", \\\"a1\\\", \\\"a2\\\", \\\"a202\\\", \\\"a3\\\", \\\"a4\\\", \\\"a5\\\", \\\"a119\\\", \\\"a118\\\", \\\"a117\\\",\\n  \\\"a11\\\", \\\"a12\\\", \\\"a13\\\", \\\"a14\\\", \\\"a15\\\", \\\"a16\\\", \\\"a105\\\", \\\"a17\\\", \\\"a18\\\", \\\"a19\\\",\\n  \\\"a20\\\", \\\"a21\\\", \\\"a22\\\", \\\"a23\\\", \\\"a24\\\", \\\"a25\\\", \\\"a26\\\", \\\"a27\\\", \\\"a28\\\", \\\"a6\\\", \\\"a7\\\",\\n  \\\"a8\\\", \\\"a9\\\", \\\"a10\\\", \\\"a29\\\", \\\"a30\\\", \\\"a31\\\", \\\"a32\\\", \\\"a33\\\", \\\"a34\\\", \\\"a35\\\", \\\"a36\\\",\\n  \\\"a37\\\", \\\"a38\\\", \\\"a39\\\", \\\"a40\\\", \\\"a41\\\", \\\"a42\\\", \\\"a43\\\", \\\"a44\\\", \\\"a45\\\", \\\"a46\\\",\\n  \\\"a47\\\", \\\"a48\\\", \\\"a49\\\", \\\"a50\\\", \\\"a51\\\", \\\"a52\\\", \\\"a53\\\", \\\"a54\\\", \\\"a55\\\", \\\"a56\\\",\\n  \\\"a57\\\", \\\"a58\\\", \\\"a59\\\", \\\"a60\\\", \\\"a61\\\", \\\"a62\\\", \\\"a63\\\", \\\"a64\\\", \\\"a65\\\", \\\"a66\\\",\\n  \\\"a67\\\", \\\"a68\\\", \\\"a69\\\", \\\"a70\\\", \\\"a71\\\", \\\"a72\\\", \\\"a73\\\", \\\"a74\\\", \\\"a203\\\", \\\"a75\\\",\\n  \\\"a204\\\", \\\"a76\\\", \\\"a77\\\", \\\"a78\\\", \\\"a79\\\", \\\"a81\\\", \\\"a82\\\", \\\"a83\\\", \\\"a84\\\", \\\"a97\\\",\\n  \\\"a98\\\", \\\"a99\\\", \\\"a100\\\", \\\"\\\", \\\"a89\\\", \\\"a90\\\", \\\"a93\\\", \\\"a94\\\", \\\"a91\\\", \\\"a92\\\", \\\"a205\\\",\\n  \\\"a85\\\", \\\"a206\\\", \\\"a86\\\", \\\"a87\\\", \\\"a88\\\", \\\"a95\\\", \\\"a96\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\",\\n  \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"\\\", \\\"a101\\\", \\\"a102\\\", \\\"a103\\\",\\n  \\\"a104\\\", \\\"a106\\\", \\\"a107\\\", \\\"a108\\\", \\\"a112\\\", \\\"a111\\\", \\\"a110\\\", \\\"a109\\\", \\\"a120\\\",\\n  \\\"a121\\\", \\\"a122\\\", \\\"a123\\\", \\\"a124\\\", \\\"a125\\\", \\\"a126\\\", \\\"a127\\\", \\\"a128\\\", \\\"a129\\\",\\n  \\\"a130\\\", \\\"a131\\\", \\\"a132\\\", \\\"a133\\\", \\\"a134\\\", \\\"a135\\\", \\\"a136\\\", \\\"a137\\\", \\\"a138\\\",\\n  \\\"a139\\\", \\\"a140\\\", \\\"a141\\\", \\\"a142\\\", \\\"a143\\\", \\\"a144\\\", \\\"a145\\\", \\\"a146\\\", \\\"a147\\\",\\n  \\\"a148\\\", \\\"a149\\\", \\\"a150\\\", \\\"a151\\\", \\\"a152\\\", \\\"a153\\\", \\\"a154\\\", \\\"a155\\\", \\\"a156\\\",\\n  \\\"a157\\\", \\\"a158\\\", \\\"a159\\\", \\\"a160\\\", \\\"a161\\\", \\\"a163\\\", \\\"a164\\\", \\\"a196\\\", \\\"a165\\\",\\n  \\\"a192\\\", \\\"a166\\\", \\\"a167\\\", \\\"a168\\\", \\\"a169\\\", \\\"a170\\\", \\\"a171\\\", \\\"a172\\\", \\\"a173\\\",\\n  \\\"a162\\\", \\\"a174\\\", \\\"a175\\\", \\\"a176\\\", \\\"a177\\\", \\\"a178\\\", \\\"a179\\\", \\\"a193\\\", \\\"a180\\\",\\n  \\\"a199\\\", \\\"a181\\\", \\\"a200\\\", \\\"a182\\\", \\\"\\\", \\\"a201\\\", \\\"a183\\\", \\\"a184\\\", \\\"a197\\\", \\\"a185\\\",\\n  \\\"a194\\\", \\\"a198\\\", \\\"a186\\\", \\\"a195\\\", \\\"a187\\\", \\\"a188\\\", \\\"a189\\\", \\\"a190\\\", \\\"a191\\\", \\\"\\\"];\\n\\nfunction getEncoding(encodingName) {\\n  switch (encodingName) {\\n    case \\\"WinAnsiEncoding\\\":\\n      return WinAnsiEncoding;\\n    case \\\"StandardEncoding\\\":\\n      return StandardEncoding;\\n    case \\\"MacRomanEncoding\\\":\\n      return MacRomanEncoding;\\n    case \\\"SymbolSetEncoding\\\":\\n      return SymbolSetEncoding;\\n    case \\\"ZapfDingbatsEncoding\\\":\\n      return ZapfDingbatsEncoding;\\n    case \\\"ExpertEncoding\\\":\\n      return ExpertEncoding;\\n    case \\\"MacExpertEncoding\\\":\\n      return MacExpertEncoding;\\n    default:\\n      return null;\\n  }\\n}\\n\\nexport {\\n  ExpertEncoding,\\n  getEncoding,\\n  MacRomanEncoding,\\n  StandardEncoding,\\n  SymbolSetEncoding,\\n  WinAnsiEncoding,\\n  ZapfDingbatsEncoding,\\n};\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { getLookupTableFactory } from \\\".\u002Fcore_utils.js\\\";\\n\\nconst getGlyphsUnicode = getLookupTableFactory(function (t) {\\n  t.A = 0x0041;\\n  t.AE = 0x00c6;\\n  t.AEacute = 0x01fc;\\n  t.AEmacron = 0x01e2;\\n  t.AEsmall = 0xf7e6;\\n  t.Aacute = 0x00c1;\\n  t.Aacutesmall = 0xf7e1;\\n  t.Abreve = 0x0102;\\n  t.Abreveacute = 0x1eae;\\n  t.Abrevecyrillic = 0x04d0;\\n  t.Abrevedotbelow = 0x1eb6;\\n  t.Abrevegrave = 0x1eb0;\\n  t.Abrevehookabove = 0x1eb2;\\n  t.Abrevetilde = 0x1eb4;\\n  t.Acaron = 0x01cd;\\n  t.Acircle = 0x24b6;\\n  t.Acircumflex = 0x00c2;\\n  t.Acircumflexacute = 0x1ea4;\\n  t.Acircumflexdotbelow = 0x1eac;\\n  t.Acircumflexgrave = 0x1ea6;\\n  t.Acircumflexhookabove = 0x1ea8;\\n  t.Acircumflexsmall = 0xf7e2;\\n  t.Acircumflextilde = 0x1eaa;\\n  t.Acute = 0xf6c9;\\n  t.Acutesmall = 0xf7b4;\\n  t.Acyrillic = 0x0410;\\n  t.Adblgrave = 0x0200;\\n  t.Adieresis = 0x00c4;\\n  t.Adieresiscyrillic = 0x04d2;\\n  t.Adieresismacron = 0x01de;\\n  t.Adieresissmall = 0xf7e4;\\n  t.Adotbelow = 0x1ea0;\\n  t.Adotmacron = 0x01e0;\\n  t.Agrave = 0x00c0;\\n  t.Agravesmall = 0xf7e0;\\n  t.Ahookabove = 0x1ea2;\\n  t.Aiecyrillic = 0x04d4;\\n  t.Ainvertedbreve = 0x0202;\\n  t.Alpha = 0x0391;\\n  t.Alphatonos = 0x0386;\\n  t.Amacron = 0x0100;\\n  t.Amonospace = 0xff21;\\n  t.Aogonek = 0x0104;\\n  t.Aring = 0x00c5;\\n  t.Aringacute = 0x01fa;\\n  t.Aringbelow = 0x1e00;\\n  t.Aringsmall = 0xf7e5;\\n  t.Asmall = 0xf761;\\n  t.Atilde = 0x00c3;\\n  t.Atildesmall = 0xf7e3;\\n  t.Aybarmenian = 0x0531;\\n  t.B = 0x0042;\\n  t.Bcircle = 0x24b7;\\n  t.Bdotaccent = 0x1e02;\\n  t.Bdotbelow = 0x1e04;\\n  t.Becyrillic = 0x0411;\\n  t.Benarmenian = 0x0532;\\n  t.Beta = 0x0392;\\n  t.Bhook = 0x0181;\\n  t.Blinebelow = 0x1e06;\\n  t.Bmonospace = 0xff22;\\n  t.Brevesmall = 0xf6f4;\\n  t.Bsmall = 0xf762;\\n  t.Btopbar = 0x0182;\\n  t.C = 0x0043;\\n  t.Caarmenian = 0x053e;\\n  t.Cacute = 0x0106;\\n  t.Caron = 0xf6ca;\\n  t.Caronsmall = 0xf6f5;\\n  t.Ccaron = 0x010c;\\n  t.Ccedilla = 0x00c7;\\n  t.Ccedillaacute = 0x1e08;\\n  t.Ccedillasmall = 0xf7e7;\\n  t.Ccircle = 0x24b8;\\n  t.Ccircumflex = 0x0108;\\n  t.Cdot = 0x010a;\\n  t.Cdotaccent = 0x010a;\\n  t.Cedillasmall = 0xf7b8;\\n  t.Chaarmenian = 0x0549;\\n  t.Cheabkhasiancyrillic = 0x04bc;\\n  t.Checyrillic = 0x0427;\\n  t.Chedescenderabkhasiancyrillic = 0x04be;\\n  t.Chedescendercyrillic = 0x04b6;\\n  t.Chedieresiscyrillic = 0x04f4;\\n  t.Cheharmenian = 0x0543;\\n  t.Chekhakassiancyrillic = 0x04cb;\\n  t.Cheverticalstrokecyrillic = 0x04b8;\\n  t.Chi = 0x03a7;\\n  t.Chook = 0x0187;\\n  t.Circumflexsmall = 0xf6f6;\\n  t.Cmonospace = 0xff23;\\n  t.Coarmenian = 0x0551;\\n  t.Csmall = 0xf763;\\n  t.D = 0x0044;\\n  t.DZ = 0x01f1;\\n  t.DZcaron = 0x01c4;\\n  t.Daarmenian = 0x0534;\\n  t.Dafrican = 0x0189;\\n  t.Dcaron = 0x010e;\\n  t.Dcedilla = 0x1e10;\\n  t.Dcircle = 0x24b9;\\n  t.Dcircumflexbelow = 0x1e12;\\n  t.Dcroat = 0x0110;\\n  t.Ddotaccent = 0x1e0a;\\n  t.Ddotbelow = 0x1e0c;\\n  t.Decyrillic = 0x0414;\\n  t.Deicoptic = 0x03ee;\\n  t.Delta = 0x2206;\\n  t.Deltagreek = 0x0394;\\n  t.Dhook = 0x018a;\\n  t.Dieresis = 0xf6cb;\\n  t.DieresisAcute = 0xf6cc;\\n  t.DieresisGrave = 0xf6cd;\\n  t.Dieresissmall = 0xf7a8;\\n  t.Digammagreek = 0x03dc;\\n  t.Djecyrillic = 0x0402;\\n  t.Dlinebelow = 0x1e0e;\\n  t.Dmonospace = 0xff24;\\n  t.Dotaccentsmall = 0xf6f7;\\n  t.Dslash = 0x0110;\\n  t.Dsmall = 0xf764;\\n  t.Dtopbar = 0x018b;\\n  t.Dz = 0x01f2;\\n  t.Dzcaron = 0x01c5;\\n  t.Dzeabkhasiancyrillic = 0x04e0;\\n  t.Dzecyrillic = 0x0405;\\n  t.Dzhecyrillic = 0x040f;\\n  t.E = 0x0045;\\n  t.Eacute = 0x00c9;\\n  t.Eacutesmall = 0xf7e9;\\n  t.Ebreve = 0x0114;\\n  t.Ecaron = 0x011a;\\n  t.Ecedillabreve = 0x1e1c;\\n  t.Echarmenian = 0x0535;\\n  t.Ecircle = 0x24ba;\\n  t.Ecircumflex = 0x00ca;\\n  t.Ecircumflexacute = 0x1ebe;\\n  t.Ecircumflexbelow = 0x1e18;\\n  t.Ecircumflexdotbelow = 0x1ec6;\\n  t.Ecircumflexgrave = 0x1ec0;\\n  t.Ecircumflexhookabove = 0x1ec2;\\n  t.Ecircumflexsmall = 0xf7ea;\\n  t.Ecircumflextilde = 0x1ec4;\\n  t.Ecyrillic = 0x0404;\\n  t.Edblgrave = 0x0204;\\n  t.Edieresis = 0x00cb;\\n  t.Edieresissmall = 0xf7eb;\\n  t.Edot = 0x0116;\\n  t.Edotaccent = 0x0116;\\n  t.Edotbelow = 0x1eb8;\\n  t.Efcyrillic = 0x0424;\\n  t.Egrave = 0x00c8;\\n  t.Egravesmall = 0xf7e8;\\n  t.Eharmenian = 0x0537;\\n  t.Ehookabove = 0x1eba;\\n  t.Eightroman = 0x2167;\\n  t.Einvertedbreve = 0x0206;\\n  t.Eiotifiedcyrillic = 0x0464;\\n  t.Elcyrillic = 0x041b;\\n  t.Elevenroman = 0x216a;\\n  t.Emacron = 0x0112;\\n  t.Emacronacute = 0x1e16;\\n  t.Emacrongrave = 0x1e14;\\n  t.Emcyrillic = 0x041c;\\n  t.Emonospace = 0xff25;\\n  t.Encyrillic = 0x041d;\\n  t.Endescendercyrillic = 0x04a2;\\n  t.Eng = 0x014a;\\n  t.Enghecyrillic = 0x04a4;\\n  t.Enhookcyrillic = 0x04c7;\\n  t.Eogonek = 0x0118;\\n  t.Eopen = 0x0190;\\n  t.Epsilon = 0x0395;\\n  t.Epsilontonos = 0x0388;\\n  t.Ercyrillic = 0x0420;\\n  t.Ereversed = 0x018e;\\n  t.Ereversedcyrillic = 0x042d;\\n  t.Escyrillic = 0x0421;\\n  t.Esdescendercyrillic = 0x04aa;\\n  t.Esh = 0x01a9;\\n  t.Esmall = 0xf765;\\n  t.Eta = 0x0397;\\n  t.Etarmenian = 0x0538;\\n  t.Etatonos = 0x0389;\\n  t.Eth = 0x00d0;\\n  t.Ethsmall = 0xf7f0;\\n  t.Etilde = 0x1ebc;\\n  t.Etildebelow = 0x1e1a;\\n  t.Euro = 0x20ac;\\n  t.Ezh = 0x01b7;\\n  t.Ezhcaron = 0x01ee;\\n  t.Ezhreversed = 0x01b8;\\n  t.F = 0x0046;\\n  t.Fcircle = 0x24bb;\\n  t.Fdotaccent = 0x1e1e;\\n  t.Feharmenian = 0x0556;\\n  t.Feicoptic = 0x03e4;\\n  t.Fhook = 0x0191;\\n  t.Fitacyrillic = 0x0472;\\n  t.Fiveroman = 0x2164;\\n  t.Fmonospace = 0xff26;\\n  t.Fourroman = 0x2163;\\n  t.Fsmall = 0xf766;\\n  t.G = 0x0047;\\n  t.GBsquare = 0x3387;\\n  t.Gacute = 0x01f4;\\n  t.Gamma = 0x0393;\\n  t.Gammaafrican = 0x0194;\\n  t.Gangiacoptic = 0x03ea;\\n  t.Gbreve = 0x011e;\\n  t.Gcaron = 0x01e6;\\n  t.Gcedilla = 0x0122;\\n  t.Gcircle = 0x24bc;\\n  t.Gcircumflex = 0x011c;\\n  t.Gcommaaccent = 0x0122;\\n  t.Gdot = 0x0120;\\n  t.Gdotaccent = 0x0120;\\n  t.Gecyrillic = 0x0413;\\n  t.Ghadarmenian = 0x0542;\\n  t.Ghemiddlehookcyrillic = 0x0494;\\n  t.Ghestrokecyrillic = 0x0492;\\n  t.Gheupturncyrillic = 0x0490;\\n  t.Ghook = 0x0193;\\n  t.Gimarmenian = 0x0533;\\n  t.Gjecyrillic = 0x0403;\\n  t.Gmacron = 0x1e20;\\n  t.Gmonospace = 0xff27;\\n  t.Grave = 0xf6ce;\\n  t.Gravesmall = 0xf760;\\n  t.Gsmall = 0xf767;\\n  t.Gsmallhook = 0x029b;\\n  t.Gstroke = 0x01e4;\\n  t.H = 0x0048;\\n  t.H18533 = 0x25cf;\\n  t.H18543 = 0x25aa;\\n  t.H18551 = 0x25ab;\\n  t.H22073 = 0x25a1;\\n  t.HPsquare = 0x33cb;\\n  t.Haabkhasiancyrillic = 0x04a8;\\n  t.Hadescendercyrillic = 0x04b2;\\n  t.Hardsigncyrillic = 0x042a;\\n  t.Hbar = 0x0126;\\n  t.Hbrevebelow = 0x1e2a;\\n  t.Hcedilla = 0x1e28;\\n  t.Hcircle = 0x24bd;\\n  t.Hcircumflex = 0x0124;\\n  t.Hdieresis = 0x1e26;\\n  t.Hdotaccent = 0x1e22;\\n  t.Hdotbelow = 0x1e24;\\n  t.Hmonospace = 0xff28;\\n  t.Hoarmenian = 0x0540;\\n  t.Horicoptic = 0x03e8;\\n  t.Hsmall = 0xf768;\\n  t.Hungarumlaut = 0xf6cf;\\n  t.Hungarumlautsmall = 0xf6f8;\\n  t.Hzsquare = 0x3390;\\n  t.I = 0x0049;\\n  t.IAcyrillic = 0x042f;\\n  t.IJ = 0x0132;\\n  t.IUcyrillic = 0x042e;\\n  t.Iacute = 0x00cd;\\n  t.Iacutesmall = 0xf7ed;\\n  t.Ibreve = 0x012c;\\n  t.Icaron = 0x01cf;\\n  t.Icircle = 0x24be;\\n  t.Icircumflex = 0x00ce;\\n  t.Icircumflexsmall = 0xf7ee;\\n  t.Icyrillic = 0x0406;\\n  t.Idblgrave = 0x0208;\\n  t.Idieresis = 0x00cf;\\n  t.Idieresisacute = 0x1e2e;\\n  t.Idieresiscyrillic = 0x04e4;\\n  t.Idieresissmall = 0xf7ef;\\n  t.Idot = 0x0130;\\n  t.Idotaccent = 0x0130;\\n  t.Idotbelow = 0x1eca;\\n  t.Iebrevecyrillic = 0x04d6;\\n  t.Iecyrillic = 0x0415;\\n  t.Ifraktur = 0x2111;\\n  t.Igrave = 0x00cc;\\n  t.Igravesmall = 0xf7ec;\\n  t.Ihookabove = 0x1ec8;\\n  t.Iicyrillic = 0x0418;\\n  t.Iinvertedbreve = 0x020a;\\n  t.Iishortcyrillic = 0x0419;\\n  t.Imacron = 0x012a;\\n  t.Imacroncyrillic = 0x04e2;\\n  t.Imonospace = 0xff29;\\n  t.Iniarmenian = 0x053b;\\n  t.Iocyrillic = 0x0401;\\n  t.Iogonek = 0x012e;\\n  t.Iota = 0x0399;\\n  t.Iotaafrican = 0x0196;\\n  t.Iotadieresis = 0x03aa;\\n  t.Iotatonos = 0x038a;\\n  t.Ismall = 0xf769;\\n  t.Istroke = 0x0197;\\n  t.Itilde = 0x0128;\\n  t.Itildebelow = 0x1e2c;\\n  t.Izhitsacyrillic = 0x0474;\\n  t.Izhitsadblgravecyrillic = 0x0476;\\n  t.J = 0x004a;\\n  t.Jaarmenian = 0x0541;\\n  t.Jcircle = 0x24bf;\\n  t.Jcircumflex = 0x0134;\\n  t.Jecyrillic = 0x0408;\\n  t.Jheharmenian = 0x054b;\\n  t.Jmonospace = 0xff2a;\\n  t.Jsmall = 0xf76a;\\n  t.K = 0x004b;\\n  t.KBsquare = 0x3385;\\n  t.KKsquare = 0x33cd;\\n  t.Kabashkircyrillic = 0x04a0;\\n  t.Kacute = 0x1e30;\\n  t.Kacyrillic = 0x041a;\\n  t.Kadescendercyrillic = 0x049a;\\n  t.Kahookcyrillic = 0x04c3;\\n  t.Kappa = 0x039a;\\n  t.Kastrokecyrillic = 0x049e;\\n  t.Kaverticalstrokecyrillic = 0x049c;\\n  t.Kcaron = 0x01e8;\\n  t.Kcedilla = 0x0136;\\n  t.Kcircle = 0x24c0;\\n  t.Kcommaaccent = 0x0136;\\n  t.Kdotbelow = 0x1e32;\\n  t.Keharmenian = 0x0554;\\n  t.Kenarmenian = 0x053f;\\n  t.Khacyrillic = 0x0425;\\n  t.Kheicoptic = 0x03e6;\\n  t.Khook = 0x0198;\\n  t.Kjecyrillic = 0x040c;\\n  t.Klinebelow = 0x1e34;\\n  t.Kmonospace = 0xff2b;\\n  t.Koppacyrillic = 0x0480;\\n  t.Koppagreek = 0x03de;\\n  t.Ksicyrillic = 0x046e;\\n  t.Ksmall = 0xf76b;\\n  t.L = 0x004c;\\n  t.LJ = 0x01c7;\\n  t.LL = 0xf6bf;\\n  t.Lacute = 0x0139;\\n  t.Lambda = 0x039b;\\n  t.Lcaron = 0x013d;\\n  t.Lcedilla = 0x013b;\\n  t.Lcircle = 0x24c1;\\n  t.Lcircumflexbelow = 0x1e3c;\\n  t.Lcommaaccent = 0x013b;\\n  t.Ldot = 0x013f;\\n  t.Ldotaccent = 0x013f;\\n  t.Ldotbelow = 0x1e36;\\n  t.Ldotbelowmacron = 0x1e38;\\n  t.Liwnarmenian = 0x053c;\\n  t.Lj = 0x01c8;\\n  t.Ljecyrillic = 0x0409;\\n  t.Llinebelow = 0x1e3a;\\n  t.Lmonospace = 0xff2c;\\n  t.Lslash = 0x0141;\\n  t.Lslashsmall = 0xf6f9;\\n  t.Lsmall = 0xf76c;\\n  t.M = 0x004d;\\n  t.MBsquare = 0x3386;\\n  t.Macron = 0xf6d0;\\n  t.Macronsmall = 0xf7af;\\n  t.Macute = 0x1e3e;\\n  t.Mcircle = 0x24c2;\\n  t.Mdotaccent = 0x1e40;\\n  t.Mdotbelow = 0x1e42;\\n  t.Menarmenian = 0x0544;\\n  t.Mmonospace = 0xff2d;\\n  t.Msmall = 0xf76d;\\n  t.Mturned = 0x019c;\\n  t.Mu = 0x039c;\\n  t.N = 0x004e;\\n  t.NJ = 0x01ca;\\n  t.Nacute = 0x0143;\\n  t.Ncaron = 0x0147;\\n  t.Ncedilla = 0x0145;\\n  t.Ncircle = 0x24c3;\\n  t.Ncircumflexbelow = 0x1e4a;\\n  t.Ncommaaccent = 0x0145;\\n  t.Ndotaccent = 0x1e44;\\n  t.Ndotbelow = 0x1e46;\\n  t.Nhookleft = 0x019d;\\n  t.Nineroman = 0x2168;\\n  t.Nj = 0x01cb;\\n  t.Njecyrillic = 0x040a;\\n  t.Nlinebelow = 0x1e48;\\n  t.Nmonospace = 0xff2e;\\n  t.Nowarmenian = 0x0546;\\n  t.Nsmall = 0xf76e;\\n  t.Ntilde = 0x00d1;\\n  t.Ntildesmall = 0xf7f1;\\n  t.Nu = 0x039d;\\n  t.O = 0x004f;\\n  t.OE = 0x0152;\\n  t.OEsmall = 0xf6fa;\\n  t.Oacute = 0x00d3;\\n  t.Oacutesmall = 0xf7f3;\\n  t.Obarredcyrillic = 0x04e8;\\n  t.Obarreddieresiscyrillic = 0x04ea;\\n  t.Obreve = 0x014e;\\n  t.Ocaron = 0x01d1;\\n  t.Ocenteredtilde = 0x019f;\\n  t.Ocircle = 0x24c4;\\n  t.Ocircumflex = 0x00d4;\\n  t.Ocircumflexacute = 0x1ed0;\\n  t.Ocircumflexdotbelow = 0x1ed8;\\n  t.Ocircumflexgrave = 0x1ed2;\\n  t.Ocircumflexhookabove = 0x1ed4;\\n  t.Ocircumflexsmall = 0xf7f4;\\n  t.Ocircumflextilde = 0x1ed6;\\n  t.Ocyrillic = 0x041e;\\n  t.Odblacute = 0x0150;\\n  t.Odblgrave = 0x020c;\\n  t.Odieresis = 0x00d6;\\n  t.Odieresiscyrillic = 0x04e6;\\n  t.Odieresissmall = 0xf7f6;\\n  t.Odotbelow = 0x1ecc;\\n  t.Ogoneksmall = 0xf6fb;\\n  t.Ograve = 0x00d2;\\n  t.Ogravesmall = 0xf7f2;\\n  t.Oharmenian = 0x0555;\\n  t.Ohm = 0x2126;\\n  t.Ohookabove = 0x1ece;\\n  t.Ohorn = 0x01a0;\\n  t.Ohornacute = 0x1eda;\\n  t.Ohorndotbelow = 0x1ee2;\\n  t.Ohorngrave = 0x1edc;\\n  t.Ohornhookabove = 0x1ede;\\n  t.Ohorntilde = 0x1ee0;\\n  t.Ohungarumlaut = 0x0150;\\n  t.Oi = 0x01a2;\\n  t.Oinvertedbreve = 0x020e;\\n  t.Omacron = 0x014c;\\n  t.Omacronacute = 0x1e52;\\n  t.Omacrongrave = 0x1e50;\\n  t.Omega = 0x2126;\\n  t.Omegacyrillic = 0x0460;\\n  t.Omegagreek = 0x03a9;\\n  t.Omegaroundcyrillic = 0x047a;\\n  t.Omegatitlocyrillic = 0x047c;\\n  t.Omegatonos = 0x038f;\\n  t.Omicron = 0x039f;\\n  t.Omicrontonos = 0x038c;\\n  t.Omonospace = 0xff2f;\\n  t.Oneroman = 0x2160;\\n  t.Oogonek = 0x01ea;\\n  t.Oogonekmacron = 0x01ec;\\n  t.Oopen = 0x0186;\\n  t.Oslash = 0x00d8;\\n  t.Oslashacute = 0x01fe;\\n  t.Oslashsmall = 0xf7f8;\\n  t.Osmall = 0xf76f;\\n  t.Ostrokeacute = 0x01fe;\\n  t.Otcyrillic = 0x047e;\\n  t.Otilde = 0x00d5;\\n  t.Otildeacute = 0x1e4c;\\n  t.Otildedieresis = 0x1e4e;\\n  t.Otildesmall = 0xf7f5;\\n  t.P = 0x0050;\\n  t.Pacute = 0x1e54;\\n  t.Pcircle = 0x24c5;\\n  t.Pdotaccent = 0x1e56;\\n  t.Pecyrillic = 0x041f;\\n  t.Peharmenian = 0x054a;\\n  t.Pemiddlehookcyrillic = 0x04a6;\\n  t.Phi = 0x03a6;\\n  t.Phook = 0x01a4;\\n  t.Pi = 0x03a0;\\n  t.Piwrarmenian = 0x0553;\\n  t.Pmonospace = 0xff30;\\n  t.Psi = 0x03a8;\\n  t.Psicyrillic = 0x0470;\\n  t.Psmall = 0xf770;\\n  t.Q = 0x0051;\\n  t.Qcircle = 0x24c6;\\n  t.Qmonospace = 0xff31;\\n  t.Qsmall = 0xf771;\\n  t.R = 0x0052;\\n  t.Raarmenian = 0x054c;\\n  t.Racute = 0x0154;\\n  t.Rcaron = 0x0158;\\n  t.Rcedilla = 0x0156;\\n  t.Rcircle = 0x24c7;\\n  t.Rcommaaccent = 0x0156;\\n  t.Rdblgrave = 0x0210;\\n  t.Rdotaccent = 0x1e58;\\n  t.Rdotbelow = 0x1e5a;\\n  t.Rdotbelowmacron = 0x1e5c;\\n  t.Reharmenian = 0x0550;\\n  t.Rfraktur = 0x211c;\\n  t.Rho = 0x03a1;\\n  t.Ringsmall = 0xf6fc;\\n  t.Rinvertedbreve = 0x0212;\\n  t.Rlinebelow = 0x1e5e;\\n  t.Rmonospace = 0xff32;\\n  t.Rsmall = 0xf772;\\n  t.Rsmallinverted = 0x0281;\\n  t.Rsmallinvertedsuperior = 0x02b6;\\n  t.S = 0x0053;\\n  t.SF010000 = 0x250c;\\n  t.SF020000 = 0x2514;\\n  t.SF030000 = 0x2510;\\n  t.SF040000 = 0x2518;\\n  t.SF050000 = 0x253c;\\n  t.SF060000 = 0x252c;\\n  t.SF070000 = 0x2534;\\n  t.SF080000 = 0x251c;\\n  t.SF090000 = 0x2524;\\n  t.SF100000 = 0x2500;\\n  t.SF110000 = 0x2502;\\n  t.SF190000 = 0x2561;\\n  t.SF200000 = 0x2562;\\n  t.SF210000 = 0x2556;\\n  t.SF220000 = 0x2555;\\n  t.SF230000 = 0x2563;\\n  t.SF240000 = 0x2551;\\n  t.SF250000 = 0x2557;\\n  t.SF260000 = 0x255d;\\n  t.SF270000 = 0x255c;\\n  t.SF280000 = 0x255b;\\n  t.SF360000 = 0x255e;\\n  t.SF370000 = 0x255f;\\n  t.SF380000 = 0x255a;\\n  t.SF390000 = 0x2554;\\n  t.SF400000 = 0x2569;\\n  t.SF410000 = 0x2566;\\n  t.SF420000 = 0x2560;\\n  t.SF430000 = 0x2550;\\n  t.SF440000 = 0x256c;\\n  t.SF450000 = 0x2567;\\n  t.SF460000 = 0x2568;\\n  t.SF470000 = 0x2564;\\n  t.SF480000 = 0x2565;\\n  t.SF490000 = 0x2559;\\n  t.SF500000 = 0x2558;\\n  t.SF510000 = 0x2552;\\n  t.SF520000 = 0x2553;\\n  t.SF530000 = 0x256b;\\n  t.SF540000 = 0x256a;\\n  t.Sacute = 0x015a;\\n  t.Sacutedotaccent = 0x1e64;\\n  t.Sampigreek = 0x03e0;\\n  t.Scaron = 0x0160;\\n  t.Scarondotaccent = 0x1e66;\\n  t.Scaronsmall = 0xf6fd;\\n  t.Scedilla = 0x015e;\\n  t.Schwa = 0x018f;\\n  t.Schwacyrillic = 0x04d8;\\n  t.Schwadieresiscyrillic = 0x04da;\\n  t.Scircle = 0x24c8;\\n  t.Scircumflex = 0x015c;\\n  t.Scommaaccent = 0x0218;\\n  t.Sdotaccent = 0x1e60;\\n  t.Sdotbelow = 0x1e62;\\n  t.Sdotbelowdotaccent = 0x1e68;\\n  t.Seharmenian = 0x054d;\\n  t.Sevenroman = 0x2166;\\n  t.Shaarmenian = 0x0547;\\n  t.Shacyrillic = 0x0428;\\n  t.Shchacyrillic = 0x0429;\\n  t.Sheicoptic = 0x03e2;\\n  t.Shhacyrillic = 0x04ba;\\n  t.Shimacoptic = 0x03ec;\\n  t.Sigma = 0x03a3;\\n  t.Sixroman = 0x2165;\\n  t.Smonospace = 0xff33;\\n  t.Softsigncyrillic = 0x042c;\\n  t.Ssmall = 0xf773;\\n  t.Stigmagreek = 0x03da;\\n  t.T = 0x0054;\\n  t.Tau = 0x03a4;\\n  t.Tbar = 0x0166;\\n  t.Tcaron = 0x0164;\\n  t.Tcedilla = 0x0162;\\n  t.Tcircle = 0x24c9;\\n  t.Tcircumflexbelow = 0x1e70;\\n  t.Tcommaaccent = 0x0162;\\n  t.Tdotaccent = 0x1e6a;\\n  t.Tdotbelow = 0x1e6c;\\n  t.Tecyrillic = 0x0422;\\n  t.Tedescendercyrillic = 0x04ac;\\n  t.Tenroman = 0x2169;\\n  t.Tetsecyrillic = 0x04b4;\\n  t.Theta = 0x0398;\\n  t.Thook = 0x01ac;\\n  t.Thorn = 0x00de;\\n  t.Thornsmall = 0xf7fe;\\n  t.Threeroman = 0x2162;\\n  t.Tildesmall = 0xf6fe;\\n  t.Tiwnarmenian = 0x054f;\\n  t.Tlinebelow = 0x1e6e;\\n  t.Tmonospace = 0xff34;\\n  t.Toarmenian = 0x0539;\\n  t.Tonefive = 0x01bc;\\n  t.Tonesix = 0x0184;\\n  t.Tonetwo = 0x01a7;\\n  t.Tretroflexhook = 0x01ae;\\n  t.Tsecyrillic = 0x0426;\\n  t.Tshecyrillic = 0x040b;\\n  t.Tsmall = 0xf774;\\n  t.Twelveroman = 0x216b;\\n  t.Tworoman = 0x2161;\\n  t.U = 0x0055;\\n  t.Uacute = 0x00da;\\n  t.Uacutesmall = 0xf7fa;\\n  t.Ubreve = 0x016c;\\n  t.Ucaron = 0x01d3;\\n  t.Ucircle = 0x24ca;\\n  t.Ucircumflex = 0x00db;\\n  t.Ucircumflexbelow = 0x1e76;\\n  t.Ucircumflexsmall = 0xf7fb;\\n  t.Ucyrillic = 0x0423;\\n  t.Udblacute = 0x0170;\\n  t.Udblgrave = 0x0214;\\n  t.Udieresis = 0x00dc;\\n  t.Udieresisacute = 0x01d7;\\n  t.Udieresisbelow = 0x1e72;\\n  t.Udieresiscaron = 0x01d9;\\n  t.Udieresiscyrillic = 0x04f0;\\n  t.Udieresisgrave = 0x01db;\\n  t.Udieresismacron = 0x01d5;\\n  t.Udieresissmall = 0xf7fc;\\n  t.Udotbelow = 0x1ee4;\\n  t.Ugrave = 0x00d9;\\n  t.Ugravesmall = 0xf7f9;\\n  t.Uhookabove = 0x1ee6;\\n  t.Uhorn = 0x01af;\\n  t.Uhornacute = 0x1ee8;\\n  t.Uhorndotbelow = 0x1ef0;\\n  t.Uhorngrave = 0x1eea;\\n  t.Uhornhookabove = 0x1eec;\\n  t.Uhorntilde = 0x1eee;\\n  t.Uhungarumlaut = 0x0170;\\n  t.Uhungarumlautcyrillic = 0x04f2;\\n  t.Uinvertedbreve = 0x0216;\\n  t.Ukcyrillic = 0x0478;\\n  t.Umacron = 0x016a;\\n  t.Umacroncyrillic = 0x04ee;\\n  t.Umacrondieresis = 0x1e7a;\\n  t.Umonospace = 0xff35;\\n  t.Uogonek = 0x0172;\\n  t.Upsilon = 0x03a5;\\n  t.Upsilon1 = 0x03d2;\\n  t.Upsilonacutehooksymbolgreek = 0x03d3;\\n  t.Upsilonafrican = 0x01b1;\\n  t.Upsilondieresis = 0x03ab;\\n  t.Upsilondieresishooksymbolgreek = 0x03d4;\\n  t.Upsilonhooksymbol = 0x03d2;\\n  t.Upsilontonos = 0x038e;\\n  t.Uring = 0x016e;\\n  t.Ushortcyrillic = 0x040e;\\n  t.Usmall = 0xf775;\\n  t.Ustraightcyrillic = 0x04ae;\\n  t.Ustraightstrokecyrillic = 0x04b0;\\n  t.Utilde = 0x0168;\\n  t.Utildeacute = 0x1e78;\\n  t.Utildebelow = 0x1e74;\\n  t.V = 0x0056;\\n  t.Vcircle = 0x24cb;\\n  t.Vdotbelow = 0x1e7e;\\n  t.Vecyrillic = 0x0412;\\n  t.Vewarmenian = 0x054e;\\n  t.Vhook = 0x01b2;\\n  t.Vmonospace = 0xff36;\\n  t.Voarmenian = 0x0548;\\n  t.Vsmall = 0xf776;\\n  t.Vtilde = 0x1e7c;\\n  t.W = 0x0057;\\n  t.Wacute = 0x1e82;\\n  t.Wcircle = 0x24cc;\\n  t.Wcircumflex = 0x0174;\\n  t.Wdieresis = 0x1e84;\\n  t.Wdotaccent = 0x1e86;\\n  t.Wdotbelow = 0x1e88;\\n  t.Wgrave = 0x1e80;\\n  t.Wmonospace = 0xff37;\\n  t.Wsmall = 0xf777;\\n  t.X = 0x0058;\\n  t.Xcircle = 0x24cd;\\n  t.Xdieresis = 0x1e8c;\\n  t.Xdotaccent = 0x1e8a;\\n  t.Xeharmenian = 0x053d;\\n  t.Xi = 0x039e;\\n  t.Xmonospace = 0xff38;\\n  t.Xsmall = 0xf778;\\n  t.Y = 0x0059;\\n  t.Yacute = 0x00dd;\\n  t.Yacutesmall = 0xf7fd;\\n  t.Yatcyrillic = 0x0462;\\n  t.Ycircle = 0x24ce;\\n  t.Ycircumflex = 0x0176;\\n  t.Ydieresis = 0x0178;\\n  t.Ydieresissmall = 0xf7ff;\\n  t.Ydotaccent = 0x1e8e;\\n  t.Ydotbelow = 0x1ef4;\\n  t.Yericyrillic = 0x042b;\\n  t.Yerudieresiscyrillic = 0x04f8;\\n  t.Ygrave = 0x1ef2;\\n  t.Yhook = 0x01b3;\\n  t.Yhookabove = 0x1ef6;\\n  t.Yiarmenian = 0x0545;\\n  t.Yicyrillic = 0x0407;\\n  t.Yiwnarmenian = 0x0552;\\n  t.Ymonospace = 0xff39;\\n  t.Ysmall = 0xf779;\\n  t.Ytilde = 0x1ef8;\\n  t.Yusbigcyrillic = 0x046a;\\n  t.Yusbigiotifiedcyrillic = 0x046c;\\n  t.Yuslittlecyrillic = 0x0466;\\n  t.Yuslittleiotifiedcyrillic = 0x0468;\\n  t.Z = 0x005a;\\n  t.Zaarmenian = 0x0536;\\n  t.Zacute = 0x0179;\\n  t.Zcaron = 0x017d;\\n  t.Zcaronsmall = 0xf6ff;\\n  t.Zcircle = 0x24cf;\\n  t.Zcircumflex = 0x1e90;\\n  t.Zdot = 0x017b;\\n  t.Zdotaccent = 0x017b;\\n  t.Zdotbelow = 0x1e92;\\n  t.Zecyrillic = 0x0417;\\n  t.Zedescendercyrillic = 0x0498;\\n  t.Zedieresiscyrillic = 0x04de;\\n  t.Zeta = 0x0396;\\n  t.Zhearmenian = 0x053a;\\n  t.Zhebrevecyrillic = 0x04c1;\\n  t.Zhecyrillic = 0x0416;\\n  t.Zhedescendercyrillic = 0x0496;\\n  t.Zhedieresiscyrillic = 0x04dc;\\n  t.Zlinebelow = 0x1e94;\\n  t.Zmonospace = 0xff3a;\\n  t.Zsmall = 0xf77a;\\n  t.Zstroke = 0x01b5;\\n  t.a = 0x0061;\\n  t.aabengali = 0x0986;\\n  t.aacute = 0x00e1;\\n  t.aadeva = 0x0906;\\n  t.aagujarati = 0x0a86;\\n  t.aagurmukhi = 0x0a06;\\n  t.aamatragurmukhi = 0x0a3e;\\n  t.aarusquare = 0x3303;\\n  t.aavowelsignbengali = 0x09be;\\n  t.aavowelsigndeva = 0x093e;\\n  t.aavowelsigngujarati = 0x0abe;\\n  t.abbreviationmarkarmenian = 0x055f;\\n  t.abbreviationsigndeva = 0x0970;\\n  t.abengali = 0x0985;\\n  t.abopomofo = 0x311a;\\n  t.abreve = 0x0103;\\n  t.abreveacute = 0x1eaf;\\n  t.abrevecyrillic = 0x04d1;\\n  t.abrevedotbelow = 0x1eb7;\\n  t.abrevegrave = 0x1eb1;\\n  t.abrevehookabove = 0x1eb3;\\n  t.abrevetilde = 0x1eb5;\\n  t.acaron = 0x01ce;\\n  t.acircle = 0x24d0;\\n  t.acircumflex = 0x00e2;\\n  t.acircumflexacute = 0x1ea5;\\n  t.acircumflexdotbelow = 0x1ead;\\n  t.acircumflexgrave = 0x1ea7;\\n  t.acircumflexhookabove = 0x1ea9;\\n  t.acircumflextilde = 0x1eab;\\n  t.acute = 0x00b4;\\n  t.acutebelowcmb = 0x0317;\\n  t.acutecmb = 0x0301;\\n  t.acutecomb = 0x0301;\\n  t.acutedeva = 0x0954;\\n  t.acutelowmod = 0x02cf;\\n  t.acutetonecmb = 0x0341;\\n  t.acyrillic = 0x0430;\\n  t.adblgrave = 0x0201;\\n  t.addakgurmukhi = 0x0a71;\\n  t.adeva = 0x0905;\\n  t.adieresis = 0x00e4;\\n  t.adieresiscyrillic = 0x04d3;\\n  t.adieresismacron = 0x01df;\\n  t.adotbelow = 0x1ea1;\\n  t.adotmacron = 0x01e1;\\n  t.ae = 0x00e6;\\n  t.aeacute = 0x01fd;\\n  t.aekorean = 0x3150;\\n  t.aemacron = 0x01e3;\\n  t.afii00208 = 0x2015;\\n  t.afii08941 = 0x20a4;\\n  t.afii10017 = 0x0410;\\n  t.afii10018 = 0x0411;\\n  t.afii10019 = 0x0412;\\n  t.afii10020 = 0x0413;\\n  t.afii10021 = 0x0414;\\n  t.afii10022 = 0x0415;\\n  t.afii10023 = 0x0401;\\n  t.afii10024 = 0x0416;\\n  t.afii10025 = 0x0417;\\n  t.afii10026 = 0x0418;\\n  t.afii10027 = 0x0419;\\n  t.afii10028 = 0x041a;\\n  t.afii10029 = 0x041b;\\n  t.afii10030 = 0x041c;\\n  t.afii10031 = 0x041d;\\n  t.afii10032 = 0x041e;\\n  t.afii10033 = 0x041f;\\n  t.afii10034 = 0x0420;\\n  t.afii10035 = 0x0421;\\n  t.afii10036 = 0x0422;\\n  t.afii10037 = 0x0423;\\n  t.afii10038 = 0x0424;\\n  t.afii10039 = 0x0425;\\n  t.afii10040 = 0x0426;\\n  t.afii10041 = 0x0427;\\n  t.afii10042 = 0x0428;\\n  t.afii10043 = 0x0429;\\n  t.afii10044 = 0x042a;\\n  t.afii10045 = 0x042b;\\n  t.afii10046 = 0x042c;\\n  t.afii10047 = 0x042d;\\n  t.afii10048 = 0x042e;\\n  t.afii10049 = 0x042f;\\n  t.afii10050 = 0x0490;\\n  t.afii10051 = 0x0402;\\n  t.afii10052 = 0x0403;\\n  t.afii10053 = 0x0404;\\n  t.afii10054 = 0x0405;\\n  t.afii10055 = 0x0406;\\n  t.afii10056 = 0x0407;\\n  t.afii10057 = 0x0408;\\n  t.afii10058 = 0x0409;\\n  t.afii10059 = 0x040a;\\n  t.afii10060 = 0x040b;\\n  t.afii10061 = 0x040c;\\n  t.afii10062 = 0x040e;\\n  t.afii10063 = 0xf6c4;\\n  t.afii10064 = 0xf6c5;\\n  t.afii10065 = 0x0430;\\n  t.afii10066 = 0x0431;\\n  t.afii10067 = 0x0432;\\n  t.afii10068 = 0x0433;\\n  t.afii10069 = 0x0434;\\n  t.afii10070 = 0x0435;\\n  t.afii10071 = 0x0451;\\n  t.afii10072 = 0x0436;\\n  t.afii10073 = 0x0437;\\n  t.afii10074 = 0x0438;\\n  t.afii10075 = 0x0439;\\n  t.afii10076 = 0x043a;\\n  t.afii10077 = 0x043b;\\n  t.afii10078 = 0x043c;\\n  t.afii10079 = 0x043d;\\n  t.afii10080 = 0x043e;\\n  t.afii10081 = 0x043f;\\n  t.afii10082 = 0x0440;\\n  t.afii10083 = 0x0441;\\n  t.afii10084 = 0x0442;\\n  t.afii10085 = 0x0443;\\n  t.afii10086 = 0x0444;\\n  t.afii10087 = 0x0445;\\n  t.afii10088 = 0x0446;\\n  t.afii10089 = 0x0447;\\n  t.afii10090 = 0x0448;\\n  t.afii10091 = 0x0449;\\n  t.afii10092 = 0x044a;\\n  t.afii10093 = 0x044b;\\n  t.afii10094 = 0x044c;\\n  t.afii10095 = 0x044d;\\n  t.afii10096 = 0x044e;\\n  t.afii10097 = 0x044f;\\n  t.afii10098 = 0x0491;\\n  t.afii10099 = 0x0452;\\n  t.afii10100 = 0x0453;\\n  t.afii10101 = 0x0454;\\n  t.afii10102 = 0x0455;\\n  t.afii10103 = 0x0456;\\n  t.afii10104 = 0x0457;\\n  t.afii10105 = 0x0458;\\n  t.afii10106 = 0x0459;\\n  t.afii10107 = 0x045a;\\n  t.afii10108 = 0x045b;\\n  t.afii10109 = 0x045c;\\n  t.afii10110 = 0x045e;\\n  t.afii10145 = 0x040f;\\n  t.afii10146 = 0x0462;\\n  t.afii10147 = 0x0472;\\n  t.afii10148 = 0x0474;\\n  t.afii10192 = 0xf6c6;\\n  t.afii10193 = 0x045f;\\n  t.afii10194 = 0x0463;\\n  t.afii10195 = 0x0473;\\n  t.afii10196 = 0x0475;\\n  t.afii10831 = 0xf6c7;\\n  t.afii10832 = 0xf6c8;\\n  t.afii10846 = 0x04d9;\\n  t.afii299 = 0x200e;\\n  t.afii300 = 0x200f;\\n  t.afii301 = 0x200d;\\n  t.afii57381 = 0x066a;\\n  t.afii57388 = 0x060c;\\n  t.afii57392 = 0x0660;\\n  t.afii57393 = 0x0661;\\n  t.afii57394 = 0x0662;\\n  t.afii57395 = 0x0663;\\n  t.afii57396 = 0x0664;\\n  t.afii57397 = 0x0665;\\n  t.afii57398 = 0x0666;\\n  t.afii57399 = 0x0667;\\n  t.afii57400 = 0x0668;\\n  t.afii57401 = 0x0669;\\n  t.afii57403 = 0x061b;\\n  t.afii57407 = 0x061f;\\n  t.afii57409 = 0x0621;\\n  t.afii57410 = 0x0622;\\n  t.afii57411 = 0x0623;\\n  t.afii57412 = 0x0624;\\n  t.afii57413 = 0x0625;\\n  t.afii57414 = 0x0626;\\n  t.afii57415 = 0x0627;\\n  t.afii57416 = 0x0628;\\n  t.afii57417 = 0x0629;\\n  t.afii57418 = 0x062a;\\n  t.afii57419 = 0x062b;\\n  t.afii57420 = 0x062c;\\n  t.afii57421 = 0x062d;\\n  t.afii57422 = 0x062e;\\n  t.afii57423 = 0x062f;\\n  t.afii57424 = 0x0630;\\n  t.afii57425 = 0x0631;\\n  t.afii57426 = 0x0632;\\n  t.afii57427 = 0x0633;\\n  t.afii57428 = 0x0634;\\n  t.afii57429 = 0x0635;\\n  t.afii57430 = 0x0636;\\n  t.afii57431 = 0x0637;\\n  t.afii57432 = 0x0638;\\n  t.afii57433 = 0x0639;\\n  t.afii57434 = 0x063a;\\n  t.afii57440 = 0x0640;\\n  t.afii57441 = 0x0641;\\n  t.afii57442 = 0x0642;\\n  t.afii57443 = 0x0643;\\n  t.afii57444 = 0x0644;\\n  t.afii57445 = 0x0645;\\n  t.afii57446 = 0x0646;\\n  t.afii57448 = 0x0648;\\n  t.afii57449 = 0x0649;\\n  t.afii57450 = 0x064a;\\n  t.afii57451 = 0x064b;\\n  t.afii57452 = 0x064c;\\n  t.afii57453 = 0x064d;\\n  t.afii57454 = 0x064e;\\n  t.afii57455 = 0x064f;\\n  t.afii57456 = 0x0650;\\n  t.afii57457 = 0x0651;\\n  t.afii57458 = 0x0652;\\n  t.afii57470 = 0x0647;\\n  t.afii57505 = 0x06a4;\\n  t.afii57506 = 0x067e;\\n  t.afii57507 = 0x0686;\\n  t.afii57508 = 0x0698;\\n  t.afii57509 = 0x06af;\\n  t.afii57511 = 0x0679;\\n  t.afii57512 = 0x0688;\\n  t.afii57513 = 0x0691;\\n  t.afii57514 = 0x06ba;\\n  t.afii57519 = 0x06d2;\\n  t.afii57534 = 0x06d5;\\n  t.afii57636 = 0x20aa;\\n  t.afii57645 = 0x05be;\\n  t.afii57658 = 0x05c3;\\n  t.afii57664 = 0x05d0;\\n  t.afii57665 = 0x05d1;\\n  t.afii57666 = 0x05d2;\\n  t.afii57667 = 0x05d3;\\n  t.afii57668 = 0x05d4;\\n  t.afii57669 = 0x05d5;\\n  t.afii57670 = 0x05d6;\\n  t.afii57671 = 0x05d7;\\n  t.afii57672 = 0x05d8;\\n  t.afii57673 = 0x05d9;\\n  t.afii57674 = 0x05da;\\n  t.afii57675 = 0x05db;\\n  t.afii57676 = 0x05dc;\\n  t.afii57677 = 0x05dd;\\n  t.afii57678 = 0x05de;\\n  t.afii57679 = 0x05df;\\n  t.afii57680 = 0x05e0;\\n  t.afii57681 = 0x05e1;\\n  t.afii57682 = 0x05e2;\\n  t.afii57683 = 0x05e3;\\n  t.afii57684 = 0x05e4;\\n  t.afii57685 = 0x05e5;\\n  t.afii57686 = 0x05e6;\\n  t.afii57687 = 0x05e7;\\n  t.afii57688 = 0x05e8;\\n  t.afii57689 = 0x05e9;\\n  t.afii57690 = 0x05ea;\\n  t.afii57694 = 0xfb2a;\\n  t.afii57695 = 0xfb2b;\\n  t.afii57700 = 0xfb4b;\\n  t.afii57705 = 0xfb1f;\\n  t.afii57716 = 0x05f0;\\n  t.afii57717 = 0x05f1;\\n  t.afii57718 = 0x05f2;\\n  t.afii57723 = 0xfb35;\\n  t.afii57793 = 0x05b4;\\n  t.afii57794 = 0x05b5;\\n  t.afii57795 = 0x05b6;\\n  t.afii57796 = 0x05bb;\\n  t.afii57797 = 0x05b8;\\n  t.afii57798 = 0x05b7;\\n  t.afii57799 = 0x05b0;\\n  t.afii57800 = 0x05b2;\\n  t.afii57801 = 0x05b1;\\n  t.afii57802 = 0x05b3;\\n  t.afii57803 = 0x05c2;\\n  t.afii57804 = 0x05c1;\\n  t.afii57806 = 0x05b9;\\n  t.afii57807 = 0x05bc;\\n  t.afii57839 = 0x05bd;\\n  t.afii57841 = 0x05bf;\\n  t.afii57842 = 0x05c0;\\n  t.afii57929 = 0x02bc;\\n  t.afii61248 = 0x2105;\\n  t.afii61289 = 0x2113;\\n  t.afii61352 = 0x2116;\\n  t.afii61573 = 0x202c;\\n  t.afii61574 = 0x202d;\\n  t.afii61575 = 0x202e;\\n  t.afii61664 = 0x200c;\\n  t.afii63167 = 0x066d;\\n  t.afii64937 = 0x02bd;\\n  t.agrave = 0x00e0;\\n  t.agujarati = 0x0a85;\\n  t.agurmukhi = 0x0a05;\\n  t.ahiragana = 0x3042;\\n  t.ahookabove = 0x1ea3;\\n  t.aibengali = 0x0990;\\n  t.aibopomofo = 0x311e;\\n  t.aideva = 0x0910;\\n  t.aiecyrillic = 0x04d5;\\n  t.aigujarati = 0x0a90;\\n  t.aigurmukhi = 0x0a10;\\n  t.aimatragurmukhi = 0x0a48;\\n  t.ainarabic = 0x0639;\\n  t.ainfinalarabic = 0xfeca;\\n  t.aininitialarabic = 0xfecb;\\n  t.ainmedialarabic = 0xfecc;\\n  t.ainvertedbreve = 0x0203;\\n  t.aivowelsignbengali = 0x09c8;\\n  t.aivowelsigndeva = 0x0948;\\n  t.aivowelsigngujarati = 0x0ac8;\\n  t.akatakana = 0x30a2;\\n  t.akatakanahalfwidth = 0xff71;\\n  t.akorean = 0x314f;\\n  t.alef = 0x05d0;\\n  t.alefarabic = 0x0627;\\n  t.alefdageshhebrew = 0xfb30;\\n  t.aleffinalarabic = 0xfe8e;\\n  t.alefhamzaabovearabic = 0x0623;\\n  t.alefhamzaabovefinalarabic = 0xfe84;\\n  t.alefhamzabelowarabic = 0x0625;\\n  t.alefhamzabelowfinalarabic = 0xfe88;\\n  t.alefhebrew = 0x05d0;\\n  t.aleflamedhebrew = 0xfb4f;\\n  t.alefmaddaabovearabic = 0x0622;\\n  t.alefmaddaabovefinalarabic = 0xfe82;\\n  t.alefmaksuraarabic = 0x0649;\\n  t.alefmaksurafinalarabic = 0xfef0;\\n  t.alefmaksurainitialarabic = 0xfef3;\\n  t.alefmaksuramedialarabic = 0xfef4;\\n  t.alefpatahhebrew = 0xfb2e;\\n  t.alefqamatshebrew = 0xfb2f;\\n  t.aleph = 0x2135;\\n  t.allequal = 0x224c;\\n  t.alpha = 0x03b1;\\n  t.alphatonos = 0x03ac;\\n  t.amacron = 0x0101;\\n  t.amonospace = 0xff41;\\n  t.ampersand = 0x0026;\\n  t.ampersandmonospace = 0xff06;\\n  t.ampersandsmall = 0xf726;\\n  t.amsquare = 0x33c2;\\n  t.anbopomofo = 0x3122;\\n  t.angbopomofo = 0x3124;\\n  t.angbracketleft = 0x3008; \u002F\u002F Glyph is missing from Adobe's original list.\\n  t.angbracketright = 0x3009; \u002F\u002F Glyph is missing from Adobe's original list.\\n  t.angkhankhuthai = 0x0e5a;\\n  t.angle = 0x2220;\\n  t.anglebracketleft = 0x3008;\\n  t.anglebracketleftvertical = 0xfe3f;\\n  t.anglebracketright = 0x3009;\\n  t.anglebracketrightvertical = 0xfe40;\\n  t.angleleft = 0x2329;\\n  t.angleright = 0x232a;\\n  t.angstrom = 0x212b;\\n  t.anoteleia = 0x0387;\\n  t.anudattadeva = 0x0952;\\n  t.anusvarabengali = 0x0982;\\n  t.anusvaradeva = 0x0902;\\n  t.anusvaragujarati = 0x0a82;\\n  t.aogonek = 0x0105;\\n  t.apaatosquare = 0x3300;\\n  t.aparen = 0x249c;\\n  t.apostrophearmenian = 0x055a;\\n  t.apostrophemod = 0x02bc;\\n  t.apple = 0xf8ff;\\n  t.approaches = 0x2250;\\n  t.approxequal = 0x2248;\\n  t.approxequalorimage = 0x2252;\\n  t.approximatelyequal = 0x2245;\\n  t.araeaekorean = 0x318e;\\n  t.araeakorean = 0x318d;\\n  t.arc = 0x2312;\\n  t.arighthalfring = 0x1e9a;\\n  t.aring = 0x00e5;\\n  t.aringacute = 0x01fb;\\n  t.aringbelow = 0x1e01;\\n  t.arrowboth = 0x2194;\\n  t.arrowdashdown = 0x21e3;\\n  t.arrowdashleft = 0x21e0;\\n  t.arrowdashright = 0x21e2;\\n  t.arrowdashup = 0x21e1;\\n  t.arrowdblboth = 0x21d4;\\n  t.arrowdbldown = 0x21d3;\\n  t.arrowdblleft = 0x21d0;\\n  t.arrowdblright = 0x21d2;\\n  t.arrowdblup = 0x21d1;\\n  t.arrowdown = 0x2193;\\n  t.arrowdownleft = 0x2199;\\n  t.arrowdownright = 0x2198;\\n  t.arrowdownwhite = 0x21e9;\\n  t.arrowheaddownmod = 0x02c5;\\n  t.arrowheadleftmod = 0x02c2;\\n  t.arrowheadrightmod = 0x02c3;\\n  t.arrowheadupmod = 0x02c4;\\n  t.arrowhorizex = 0xf8e7;\\n  t.arrowleft = 0x2190;\\n  t.arrowleftdbl = 0x21d0;\\n  t.arrowleftdblstroke = 0x21cd;\\n  t.arrowleftoverright = 0x21c6;\\n  t.arrowleftwhite = 0x21e6;\\n  t.arrowright = 0x2192;\\n  t.arrowrightdblstroke = 0x21cf;\\n  t.arrowrightheavy = 0x279e;\\n  t.arrowrightoverleft = 0x21c4;\\n  t.arrowrightwhite = 0x21e8;\\n  t.arrowtableft = 0x21e4;\\n  t.arrowtabright = 0x21e5;\\n  t.arrowup = 0x2191;\\n  t.arrowupdn = 0x2195;\\n  t.arrowupdnbse = 0x21a8;\\n  t.arrowupdownbase = 0x21a8;\\n  t.arrowupleft = 0x2196;\\n  t.arrowupleftofdown = 0x21c5;\\n  t.arrowupright = 0x2197;\\n  t.arrowupwhite = 0x21e7;\\n  t.arrowvertex = 0xf8e6;\\n  t.asciicircum = 0x005e;\\n  t.asciicircummonospace = 0xff3e;\\n  t.asciitilde = 0x007e;\\n  t.asciitildemonospace = 0xff5e;\\n  t.ascript = 0x0251;\\n  t.ascriptturned = 0x0252;\\n  t.asmallhiragana = 0x3041;\\n  t.asmallkatakana = 0x30a1;\\n  t.asmallkatakanahalfwidth = 0xff67;\\n  t.asterisk = 0x002a;\\n  t.asteriskaltonearabic = 0x066d;\\n  t.asteriskarabic = 0x066d;\\n  t.asteriskmath = 0x2217;\\n  t.asteriskmonospace = 0xff0a;\\n  t.asterisksmall = 0xfe61;\\n  t.asterism = 0x2042;\\n  t.asuperior = 0xf6e9;\\n  t.asymptoticallyequal = 0x2243;\\n  t.at = 0x0040;\\n  t.atilde = 0x00e3;\\n  t.atmonospace = 0xff20;\\n  t.atsmall = 0xfe6b;\\n  t.aturned = 0x0250;\\n  t.aubengali = 0x0994;\\n  t.aubopomofo = 0x3120;\\n  t.audeva = 0x0914;\\n  t.augujarati = 0x0a94;\\n  t.augurmukhi = 0x0a14;\\n  t.aulengthmarkbengali = 0x09d7;\\n  t.aumatragurmukhi = 0x0a4c;\\n  t.auvowelsignbengali = 0x09cc;\\n  t.auvowelsigndeva = 0x094c;\\n  t.auvowelsigngujarati = 0x0acc;\\n  t.avagrahadeva = 0x093d;\\n  t.aybarmenian = 0x0561;\\n  t.ayin = 0x05e2;\\n  t.ayinaltonehebrew = 0xfb20;\\n  t.ayinhebrew = 0x05e2;\\n  t.b = 0x0062;\\n  t.babengali = 0x09ac;\\n  t.backslash = 0x005c;\\n  t.backslashmonospace = 0xff3c;\\n  t.badeva = 0x092c;\\n  t.bagujarati = 0x0aac;\\n  t.bagurmukhi = 0x0a2c;\\n  t.bahiragana = 0x3070;\\n  t.bahtthai = 0x0e3f;\\n  t.bakatakana = 0x30d0;\\n  t.bar = 0x007c;\\n  t.barmonospace = 0xff5c;\\n  t.bbopomofo = 0x3105;\\n  t.bcircle = 0x24d1;\\n  t.bdotaccent = 0x1e03;\\n  t.bdotbelow = 0x1e05;\\n  t.beamedsixteenthnotes = 0x266c;\\n  t.because = 0x2235;\\n  t.becyrillic = 0x0431;\\n  t.beharabic = 0x0628;\\n  t.behfinalarabic = 0xfe90;\\n  t.behinitialarabic = 0xfe91;\\n  t.behiragana = 0x3079;\\n  t.behmedialarabic = 0xfe92;\\n  t.behmeeminitialarabic = 0xfc9f;\\n  t.behmeemisolatedarabic = 0xfc08;\\n  t.behnoonfinalarabic = 0xfc6d;\\n  t.bekatakana = 0x30d9;\\n  t.benarmenian = 0x0562;\\n  t.bet = 0x05d1;\\n  t.beta = 0x03b2;\\n  t.betasymbolgreek = 0x03d0;\\n  t.betdagesh = 0xfb31;\\n  t.betdageshhebrew = 0xfb31;\\n  t.bethebrew = 0x05d1;\\n  t.betrafehebrew = 0xfb4c;\\n  t.bhabengali = 0x09ad;\\n  t.bhadeva = 0x092d;\\n  t.bhagujarati = 0x0aad;\\n  t.bhagurmukhi = 0x0a2d;\\n  t.bhook = 0x0253;\\n  t.bihiragana = 0x3073;\\n  t.bikatakana = 0x30d3;\\n  t.bilabialclick = 0x0298;\\n  t.bindigurmukhi = 0x0a02;\\n  t.birusquare = 0x3331;\\n  t.blackcircle = 0x25cf;\\n  t.blackdiamond = 0x25c6;\\n  t.blackdownpointingtriangle = 0x25bc;\\n  t.blackleftpointingpointer = 0x25c4;\\n  t.blackleftpointingtriangle = 0x25c0;\\n  t.blacklenticularbracketleft = 0x3010;\\n  t.blacklenticularbracketleftvertical = 0xfe3b;\\n  t.blacklenticularbracketright = 0x3011;\\n  t.blacklenticularbracketrightvertical = 0xfe3c;\\n  t.blacklowerlefttriangle = 0x25e3;\\n  t.blacklowerrighttriangle = 0x25e2;\\n  t.blackrectangle = 0x25ac;\\n  t.blackrightpointingpointer = 0x25ba;\\n  t.blackrightpointingtriangle = 0x25b6;\\n  t.blacksmallsquare = 0x25aa;\\n  t.blacksmilingface = 0x263b;\\n  t.blacksquare = 0x25a0;\\n  t.blackstar = 0x2605;\\n  t.blackupperlefttriangle = 0x25e4;\\n  t.blackupperrighttriangle = 0x25e5;\\n  t.blackuppointingsmalltriangle = 0x25b4;\\n  t.blackuppointingtriangle = 0x25b2;\\n  t.blank = 0x2423;\\n  t.blinebelow = 0x1e07;\\n  t.block = 0x2588;\\n  t.bmonospace = 0xff42;\\n  t.bobaimaithai = 0x0e1a;\\n  t.bohiragana = 0x307c;\\n  t.bokatakana = 0x30dc;\\n  t.bparen = 0x249d;\\n  t.bqsquare = 0x33c3;\\n  t.braceex = 0xf8f4;\\n  t.braceleft = 0x007b;\\n  t.braceleftbt = 0xf8f3;\\n  t.braceleftmid = 0xf8f2;\\n  t.braceleftmonospace = 0xff5b;\\n  t.braceleftsmall = 0xfe5b;\\n  t.bracelefttp = 0xf8f1;\\n  t.braceleftvertical = 0xfe37;\\n  t.braceright = 0x007d;\\n  t.bracerightbt = 0xf8fe;\\n  t.bracerightmid = 0xf8fd;\\n  t.bracerightmonospace = 0xff5d;\\n  t.bracerightsmall = 0xfe5c;\\n  t.bracerighttp = 0xf8fc;\\n  t.bracerightvertical = 0xfe38;\\n  t.bracketleft = 0x005b;\\n  t.bracketleftbt = 0xf8f0;\\n  t.bracketleftex = 0xf8ef;\\n  t.bracketleftmonospace = 0xff3b;\\n  t.bracketlefttp = 0xf8ee;\\n  t.bracketright = 0x005d;\\n  t.bracketrightbt = 0xf8fb;\\n  t.bracketrightex = 0xf8fa;\\n  t.bracketrightmonospace = 0xff3d;\\n  t.bracketrighttp = 0xf8f9;\\n  t.breve = 0x02d8;\\n  t.brevebelowcmb = 0x032e;\\n  t.brevecmb = 0x0306;\\n  t.breveinvertedbelowcmb = 0x032f;\\n  t.breveinvertedcmb = 0x0311;\\n  t.breveinverteddoublecmb = 0x0361;\\n  t.bridgebelowcmb = 0x032a;\\n  t.bridgeinvertedbelowcmb = 0x033a;\\n  t.brokenbar = 0x00a6;\\n  t.bstroke = 0x0180;\\n  t.bsuperior = 0xf6ea;\\n  t.btopbar = 0x0183;\\n  t.buhiragana = 0x3076;\\n  t.bukatakana = 0x30d6;\\n  t.bullet = 0x2022;\\n  t.bulletinverse = 0x25d8;\\n  t.bulletoperator = 0x2219;\\n  t.bullseye = 0x25ce;\\n  t.c = 0x0063;\\n  t.caarmenian = 0x056e;\\n  t.cabengali = 0x099a;\\n  t.cacute = 0x0107;\\n  t.cadeva = 0x091a;\\n  t.cagujarati = 0x0a9a;\\n  t.cagurmukhi = 0x0a1a;\\n  t.calsquare = 0x3388;\\n  t.candrabindubengali = 0x0981;\\n  t.candrabinducmb = 0x0310;\\n  t.candrabindudeva = 0x0901;\\n  t.candrabindugujarati = 0x0a81;\\n  t.capslock = 0x21ea;\\n  t.careof = 0x2105;\\n  t.caron = 0x02c7;\\n  t.caronbelowcmb = 0x032c;\\n  t.caroncmb = 0x030c;\\n  t.carriagereturn = 0x21b5;\\n  t.cbopomofo = 0x3118;\\n  t.ccaron = 0x010d;\\n  t.ccedilla = 0x00e7;\\n  t.ccedillaacute = 0x1e09;\\n  t.ccircle = 0x24d2;\\n  t.ccircumflex = 0x0109;\\n  t.ccurl = 0x0255;\\n  t.cdot = 0x010b;\\n  t.cdotaccent = 0x010b;\\n  t.cdsquare = 0x33c5;\\n  t.cedilla = 0x00b8;\\n  t.cedillacmb = 0x0327;\\n  t.cent = 0x00a2;\\n  t.centigrade = 0x2103;\\n  t.centinferior = 0xf6df;\\n  t.centmonospace = 0xffe0;\\n  t.centoldstyle = 0xf7a2;\\n  t.centsuperior = 0xf6e0;\\n  t.chaarmenian = 0x0579;\\n  t.chabengali = 0x099b;\\n  t.chadeva = 0x091b;\\n  t.chagujarati = 0x0a9b;\\n  t.chagurmukhi = 0x0a1b;\\n  t.chbopomofo = 0x3114;\\n  t.cheabkhasiancyrillic = 0x04bd;\\n  t.checkmark = 0x2713;\\n  t.checyrillic = 0x0447;\\n  t.chedescenderabkhasiancyrillic = 0x04bf;\\n  t.chedescendercyrillic = 0x04b7;\\n  t.chedieresiscyrillic = 0x04f5;\\n  t.cheharmenian = 0x0573;\\n  t.chekhakassiancyrillic = 0x04cc;\\n  t.cheverticalstrokecyrillic = 0x04b9;\\n  t.chi = 0x03c7;\\n  t.chieuchacirclekorean = 0x3277;\\n  t.chieuchaparenkorean = 0x3217;\\n  t.chieuchcirclekorean = 0x3269;\\n  t.chieuchkorean = 0x314a;\\n  t.chieuchparenkorean = 0x3209;\\n  t.chochangthai = 0x0e0a;\\n  t.chochanthai = 0x0e08;\\n  t.chochingthai = 0x0e09;\\n  t.chochoethai = 0x0e0c;\\n  t.chook = 0x0188;\\n  t.cieucacirclekorean = 0x3276;\\n  t.cieucaparenkorean = 0x3216;\\n  t.cieuccirclekorean = 0x3268;\\n  t.cieuckorean = 0x3148;\\n  t.cieucparenkorean = 0x3208;\\n  t.cieucuparenkorean = 0x321c;\\n  t.circle = 0x25cb;\\n  t.circlecopyrt = 0x00a9; \u002F\u002F Glyph is missing from Adobe's original list.\\n  t.circlemultiply = 0x2297;\\n  t.circleot = 0x2299;\\n  t.circleplus = 0x2295;\\n  t.circlepostalmark = 0x3036;\\n  t.circlewithlefthalfblack = 0x25d0;\\n  t.circlewithrighthalfblack = 0x25d1;\\n  t.circumflex = 0x02c6;\\n  t.circumflexbelowcmb = 0x032d;\\n  t.circumflexcmb = 0x0302;\\n  t.clear = 0x2327;\\n  t.clickalveolar = 0x01c2;\\n  t.clickdental = 0x01c0;\\n  t.clicklateral = 0x01c1;\\n  t.clickretroflex = 0x01c3;\\n  t.club = 0x2663;\\n  t.clubsuitblack = 0x2663;\\n  t.clubsuitwhite = 0x2667;\\n  t.cmcubedsquare = 0x33a4;\\n  t.cmonospace = 0xff43;\\n  t.cmsquaredsquare = 0x33a0;\\n  t.coarmenian = 0x0581;\\n  t.colon = 0x003a;\\n  t.colonmonetary = 0x20a1;\\n  t.colonmonospace = 0xff1a;\\n  t.colonsign = 0x20a1;\\n  t.colonsmall = 0xfe55;\\n  t.colontriangularhalfmod = 0x02d1;\\n  t.colontriangularmod = 0x02d0;\\n  t.comma = 0x002c;\\n  t.commaabovecmb = 0x0313;\\n  t.commaaboverightcmb = 0x0315;\\n  t.commaaccent = 0xf6c3;\\n  t.commaarabic = 0x060c;\\n  t.commaarmenian = 0x055d;\\n  t.commainferior = 0xf6e1;\\n  t.commamonospace = 0xff0c;\\n  t.commareversedabovecmb = 0x0314;\\n  t.commareversedmod = 0x02bd;\\n  t.commasmall = 0xfe50;\\n  t.commasuperior = 0xf6e2;\\n  t.commaturnedabovecmb = 0x0312;\\n  t.commaturnedmod = 0x02bb;\\n  t.compass = 0x263c;\\n  t.congruent = 0x2245;\\n  t.contourintegral = 0x222e;\\n  t.control = 0x2303;\\n  t.controlACK = 0x0006;\\n  t.controlBEL = 0x0007;\\n  t.controlBS = 0x0008;\\n  t.controlCAN = 0x0018;\\n  t.controlCR = 0x000d;\\n  t.controlDC1 = 0x0011;\\n  t.controlDC2 = 0x0012;\\n  t.controlDC3 = 0x0013;\\n  t.controlDC4 = 0x0014;\\n  t.controlDEL = 0x007f;\\n  t.controlDLE = 0x0010;\\n  t.controlEM = 0x0019;\\n  t.controlENQ = 0x0005;\\n  t.controlEOT = 0x0004;\\n  t.controlESC = 0x001b;\\n  t.controlETB = 0x0017;\\n  t.controlETX = 0x0003;\\n  t.controlFF = 0x000c;\\n  t.controlFS = 0x001c;\\n  t.controlGS = 0x001d;\\n  t.controlHT = 0x0009;\\n  t.controlLF = 0x000a;\\n  t.controlNAK = 0x0015;\\n  t.controlNULL = 0x0000; \u002F\u002F Glyph is missing from Adobe's original list.\\n  t.controlRS = 0x001e;\\n  t.controlSI = 0x000f;\\n  t.controlSO = 0x000e;\\n  t.controlSOT = 0x0002;\\n  t.controlSTX = 0x0001;\\n  t.controlSUB = 0x001a;\\n  t.controlSYN = 0x0016;\\n  t.controlUS = 0x001f;\\n  t.controlVT = 0x000b;\\n  t.copyright = 0x00a9;\\n  t.copyrightsans = 0xf8e9;\\n  t.copyrightserif = 0xf6d9;\\n  t.cornerbracketleft = 0x300c;\\n  t.cornerbracketlefthalfwidth = 0xff62;\\n  t.cornerbracketleftvertical = 0xfe41;\\n  t.cornerbracketright = 0x300d;\\n  t.cornerbracketrighthalfwidth = 0xff63;\\n  t.cornerbracketrightvertical = 0xfe42;\\n  t.corporationsquare = 0x337f;\\n  t.cosquare = 0x33c7;\\n  t.coverkgsquare = 0x33c6;\\n  t.cparen = 0x249e;\\n  t.cruzeiro = 0x20a2;\\n  t.cstretched = 0x0297;\\n  t.curlyand = 0x22cf;\\n  t.curlyor = 0x22ce;\\n  t.currency = 0x00a4;\\n  t.cyrBreve = 0xf6d1;\\n  t.cyrFlex = 0xf6d2;\\n  t.cyrbreve = 0xf6d4;\\n  t.cyrflex = 0xf6d5;\\n  t.d = 0x0064;\\n  t.daarmenian = 0x0564;\\n  t.dabengali = 0x09a6;\\n  t.dadarabic = 0x0636;\\n  t.dadeva = 0x0926;\\n  t.dadfinalarabic = 0xfebe;\\n  t.dadinitialarabic = 0xfebf;\\n  t.dadmedialarabic = 0xfec0;\\n  t.dagesh = 0x05bc;\\n  t.dageshhebrew = 0x05bc;\\n  t.dagger = 0x2020;\\n  t.daggerdbl = 0x2021;\\n  t.dagujarati = 0x0aa6;\\n  t.dagurmukhi = 0x0a26;\\n  t.dahiragana = 0x3060;\\n  t.dakatakana = 0x30c0;\\n  t.dalarabic = 0x062f;\\n  t.dalet = 0x05d3;\\n  t.daletdagesh = 0xfb33;\\n  t.daletdageshhebrew = 0xfb33;\\n  t.dalethebrew = 0x05d3;\\n  t.dalfinalarabic = 0xfeaa;\\n  t.dammaarabic = 0x064f;\\n  t.dammalowarabic = 0x064f;\\n  t.dammatanaltonearabic = 0x064c;\\n  t.dammatanarabic = 0x064c;\\n  t.danda = 0x0964;\\n  t.dargahebrew = 0x05a7;\\n  t.dargalefthebrew = 0x05a7;\\n  t.dasiapneumatacyrilliccmb = 0x0485;\\n  t.dblGrave = 0xf6d3;\\n  t.dblanglebracketleft = 0x300a;\\n  t.dblanglebracketleftvertical = 0xfe3d;\\n  t.dblanglebracketright = 0x300b;\\n  t.dblanglebracketrightvertical = 0xfe3e;\\n  t.dblarchinvertedbelowcmb = 0x032b;\\n  t.dblarrowleft = 0x21d4;\\n  t.dblarrowright = 0x21d2;\\n  t.dbldanda = 0x0965;\\n  t.dblgrave = 0xf6d6;\\n  t.dblgravecmb = 0x030f;\\n  t.dblintegral = 0x222c;\\n  t.dbllowline = 0x2017;\\n  t.dbllowlinecmb = 0x0333;\\n  t.dbloverlinecmb = 0x033f;\\n  t.dblprimemod = 0x02ba;\\n  t.dblverticalbar = 0x2016;\\n  t.dblverticallineabovecmb = 0x030e;\\n  t.dbopomofo = 0x3109;\\n  t.dbsquare = 0x33c8;\\n  t.dcaron = 0x010f;\\n  t.dcedilla = 0x1e11;\\n  t.dcircle = 0x24d3;\\n  t.dcircumflexbelow = 0x1e13;\\n  t.dcroat = 0x0111;\\n  t.ddabengali = 0x09a1;\\n  t.ddadeva = 0x0921;\\n  t.ddagujarati = 0x0aa1;\\n  t.ddagurmukhi = 0x0a21;\\n  t.ddalarabic = 0x0688;\\n  t.ddalfinalarabic = 0xfb89;\\n  t.dddhadeva = 0x095c;\\n  t.ddhabengali = 0x09a2;\\n  t.ddhadeva = 0x0922;\\n  t.ddhagujarati = 0x0aa2;\\n  t.ddhagurmukhi = 0x0a22;\\n  t.ddotaccent = 0x1e0b;\\n  t.ddotbelow = 0x1e0d;\\n  t.decimalseparatorarabic = 0x066b;\\n  t.decimalseparatorpersian = 0x066b;\\n  t.decyrillic = 0x0434;\\n  t.degree = 0x00b0;\\n  t.dehihebrew = 0x05ad;\\n  t.dehiragana = 0x3067;\\n  t.deicoptic = 0x03ef;\\n  t.dekatakana = 0x30c7;\\n  t.deleteleft = 0x232b;\\n  t.deleteright = 0x2326;\\n  t.delta = 0x03b4;\\n  t.deltaturned = 0x018d;\\n  t.denominatorminusonenumeratorbengali = 0x09f8;\\n  t.dezh = 0x02a4;\\n  t.dhabengali = 0x09a7;\\n  t.dhadeva = 0x0927;\\n  t.dhagujarati = 0x0aa7;\\n  t.dhagurmukhi = 0x0a27;\\n  t.dhook = 0x0257;\\n  t.dialytikatonos = 0x0385;\\n  t.dialytikatonoscmb = 0x0344;\\n  t.diamond = 0x2666;\\n  t.diamondsuitwhite = 0x2662;\\n  t.dieresis = 0x00a8;\\n  t.dieresisacute = 0xf6d7;\\n  t.dieresisbelowcmb = 0x0324;\\n  t.dieresiscmb = 0x0308;\\n  t.dieresisgrave = 0xf6d8;\\n  t.dieresistonos = 0x0385;\\n  t.dihiragana = 0x3062;\\n  t.dikatakana = 0x30c2;\\n  t.dittomark = 0x3003;\\n  t.divide = 0x00f7;\\n  t.divides = 0x2223;\\n  t.divisionslash = 0x2215;\\n  t.djecyrillic = 0x0452;\\n  t.dkshade = 0x2593;\\n  t.dlinebelow = 0x1e0f;\\n  t.dlsquare = 0x3397;\\n  t.dmacron = 0x0111;\\n  t.dmonospace = 0xff44;\\n  t.dnblock = 0x2584;\\n  t.dochadathai = 0x0e0e;\\n  t.dodekthai = 0x0e14;\\n  t.dohiragana = 0x3069;\\n  t.dokatakana = 0x30c9;\\n  t.dollar = 0x0024;\\n  t.dollarinferior = 0xf6e3;\\n  t.dollarmonospace = 0xff04;\\n  t.dollaroldstyle = 0xf724;\\n  t.dollarsmall = 0xfe69;\\n  t.dollarsuperior = 0xf6e4;\\n  t.dong = 0x20ab;\\n  t.dorusquare = 0x3326;\\n  t.dotaccent = 0x02d9;\\n  t.dotaccentcmb = 0x0307;\\n  t.dotbelowcmb = 0x0323;\\n  t.dotbelowcomb = 0x0323;\\n  t.dotkatakana = 0x30fb;\\n  t.dotlessi = 0x0131;\\n  t.dotlessj = 0xf6be;\\n  t.dotlessjstrokehook = 0x0284;\\n  t.dotmath = 0x22c5;\\n  t.dottedcircle = 0x25cc;\\n  t.doubleyodpatah = 0xfb1f;\\n  t.doubleyodpatahhebrew = 0xfb1f;\\n  t.downtackbelowcmb = 0x031e;\\n  t.downtackmod = 0x02d5;\\n  t.dparen = 0x249f;\\n  t.dsuperior = 0xf6eb;\\n  t.dtail = 0x0256;\\n  t.dtopbar = 0x018c;\\n  t.duhiragana = 0x3065;\\n  t.dukatakana = 0x30c5;\\n  t.dz = 0x01f3;\\n  t.dzaltone = 0x02a3;\\n  t.dzcaron = 0x01c6;\\n  t.dzcurl = 0x02a5;\\n  t.dzeabkhasiancyrillic = 0x04e1;\\n  t.dzecyrillic = 0x0455;\\n  t.dzhecyrillic = 0x045f;\\n  t.e = 0x0065;\\n  t.eacute = 0x00e9;\\n  t.earth = 0x2641;\\n  t.ebengali = 0x098f;\\n  t.ebopomofo = 0x311c;\\n  t.ebreve = 0x0115;\\n  t.ecandradeva = 0x090d;\\n  t.ecandragujarati = 0x0a8d;\\n  t.ecandravowelsigndeva = 0x0945;\\n  t.ecandravowelsigngujarati = 0x0ac5;\\n  t.ecaron = 0x011b;\\n  t.ecedillabreve = 0x1e1d;\\n  t.echarmenian = 0x0565;\\n  t.echyiwnarmenian = 0x0587;\\n  t.ecircle = 0x24d4;\\n  t.ecircumflex = 0x00ea;\\n  t.ecircumflexacute = 0x1ebf;\\n  t.ecircumflexbelow = 0x1e19;\\n  t.ecircumflexdotbelow = 0x1ec7;\\n  t.ecircumflexgrave = 0x1ec1;\\n  t.ecircumflexhookabove = 0x1ec3;\\n  t.ecircumflextilde = 0x1ec5;\\n  t.ecyrillic = 0x0454;\\n  t.edblgrave = 0x0205;\\n  t.edeva = 0x090f;\\n  t.edieresis = 0x00eb;\\n  t.edot = 0x0117;\\n  t.edotaccent = 0x0117;\\n  t.edotbelow = 0x1eb9;\\n  t.eegurmukhi = 0x0a0f;\\n  t.eematragurmukhi = 0x0a47;\\n  t.efcyrillic = 0x0444;\\n  t.egrave = 0x00e8;\\n  t.egujarati = 0x0a8f;\\n  t.eharmenian = 0x0567;\\n  t.ehbopomofo = 0x311d;\\n  t.ehiragana = 0x3048;\\n  t.ehookabove = 0x1ebb;\\n  t.eibopomofo = 0x311f;\\n  t.eight = 0x0038;\\n  t.eightarabic = 0x0668;\\n  t.eightbengali = 0x09ee;\\n  t.eightcircle = 0x2467;\\n  t.eightcircleinversesansserif = 0x2791;\\n  t.eightdeva = 0x096e;\\n  t.eighteencircle = 0x2471;\\n  t.eighteenparen = 0x2485;\\n  t.eighteenperiod = 0x2499;\\n  t.eightgujarati = 0x0aee;\\n  t.eightgurmukhi = 0x0a6e;\\n  t.eighthackarabic = 0x0668;\\n  t.eighthangzhou = 0x3028;\\n  t.eighthnotebeamed = 0x266b;\\n  t.eightideographicparen = 0x3227;\\n  t.eightinferior = 0x2088;\\n  t.eightmonospace = 0xff18;\\n  t.eightoldstyle = 0xf738;\\n  t.eightparen = 0x247b;\\n  t.eightperiod = 0x248f;\\n  t.eightpersian = 0x06f8;\\n  t.eightroman = 0x2177;\\n  t.eightsuperior = 0x2078;\\n  t.eightthai = 0x0e58;\\n  t.einvertedbreve = 0x0207;\\n  t.eiotifiedcyrillic = 0x0465;\\n  t.ekatakana = 0x30a8;\\n  t.ekatakanahalfwidth = 0xff74;\\n  t.ekonkargurmukhi = 0x0a74;\\n  t.ekorean = 0x3154;\\n  t.elcyrillic = 0x043b;\\n  t.element = 0x2208;\\n  t.elevencircle = 0x246a;\\n  t.elevenparen = 0x247e;\\n  t.elevenperiod = 0x2492;\\n  t.elevenroman = 0x217a;\\n  t.ellipsis = 0x2026;\\n  t.ellipsisvertical = 0x22ee;\\n  t.emacron = 0x0113;\\n  t.emacronacute = 0x1e17;\\n  t.emacrongrave = 0x1e15;\\n  t.emcyrillic = 0x043c;\\n  t.emdash = 0x2014;\\n  t.emdashvertical = 0xfe31;\\n  t.emonospace = 0xff45;\\n  t.emphasismarkarmenian = 0x055b;\\n  t.emptyset = 0x2205;\\n  t.enbopomofo = 0x3123;\\n  t.encyrillic = 0x043d;\\n  t.endash = 0x2013;\\n  t.endashvertical = 0xfe32;\\n  t.endescendercyrillic = 0x04a3;\\n  t.eng = 0x014b;\\n  t.engbopomofo = 0x3125;\\n  t.enghecyrillic = 0x04a5;\\n  t.enhookcyrillic = 0x04c8;\\n  t.enspace = 0x2002;\\n  t.eogonek = 0x0119;\\n  t.eokorean = 0x3153;\\n  t.eopen = 0x025b;\\n  t.eopenclosed = 0x029a;\\n  t.eopenreversed = 0x025c;\\n  t.eopenreversedclosed = 0x025e;\\n  t.eopenreversedhook = 0x025d;\\n  t.eparen = 0x24a0;\\n  t.epsilon = 0x03b5;\\n  t.epsilontonos = 0x03ad;\\n  t.equal = 0x003d;\\n  t.equalmonospace = 0xff1d;\\n  t.equalsmall = 0xfe66;\\n  t.equalsuperior = 0x207c;\\n  t.equivalence = 0x2261;\\n  t.erbopomofo = 0x3126;\\n  t.ercyrillic = 0x0440;\\n  t.ereversed = 0x0258;\\n  t.ereversedcyrillic = 0x044d;\\n  t.escyrillic = 0x0441;\\n  t.esdescendercyrillic = 0x04ab;\\n  t.esh = 0x0283;\\n  t.eshcurl = 0x0286;\\n  t.eshortdeva = 0x090e;\\n  t.eshortvowelsigndeva = 0x0946;\\n  t.eshreversedloop = 0x01aa;\\n  t.eshsquatreversed = 0x0285;\\n  t.esmallhiragana = 0x3047;\\n  t.esmallkatakana = 0x30a7;\\n  t.esmallkatakanahalfwidth = 0xff6a;\\n  t.estimated = 0x212e;\\n  t.esuperior = 0xf6ec;\\n  t.eta = 0x03b7;\\n  t.etarmenian = 0x0568;\\n  t.etatonos = 0x03ae;\\n  t.eth = 0x00f0;\\n  t.etilde = 0x1ebd;\\n  t.etildebelow = 0x1e1b;\\n  t.etnahtafoukhhebrew = 0x0591;\\n  t.etnahtafoukhlefthebrew = 0x0591;\\n  t.etnahtahebrew = 0x0591;\\n  t.etnahtalefthebrew = 0x0591;\\n  t.eturned = 0x01dd;\\n  t.eukorean = 0x3161;\\n  t.euro = 0x20ac;\\n  t.evowelsignbengali = 0x09c7;\\n  t.evowelsigndeva = 0x0947;\\n  t.evowelsigngujarati = 0x0ac7;\\n  t.exclam = 0x0021;\\n  t.exclamarmenian = 0x055c;\\n  t.exclamdbl = 0x203c;\\n  t.exclamdown = 0x00a1;\\n  t.exclamdownsmall = 0xf7a1;\\n  t.exclammonospace = 0xff01;\\n  t.exclamsmall = 0xf721;\\n  t.existential = 0x2203;\\n  t.ezh = 0x0292;\\n  t.ezhcaron = 0x01ef;\\n  t.ezhcurl = 0x0293;\\n  t.ezhreversed = 0x01b9;\\n  t.ezhtail = 0x01ba;\\n  t.f = 0x0066;\\n  t.fadeva = 0x095e;\\n  t.fagurmukhi = 0x0a5e;\\n  t.fahrenheit = 0x2109;\\n  t.fathaarabic = 0x064e;\\n  t.fathalowarabic = 0x064e;\\n  t.fathatanarabic = 0x064b;\\n  t.fbopomofo = 0x3108;\\n  t.fcircle = 0x24d5;\\n  t.fdotaccent = 0x1e1f;\\n  t.feharabic = 0x0641;\\n  t.feharmenian = 0x0586;\\n  t.fehfinalarabic = 0xfed2;\\n  t.fehinitialarabic = 0xfed3;\\n  t.fehmedialarabic = 0xfed4;\\n  t.feicoptic = 0x03e5;\\n  t.female = 0x2640;\\n  t.ff = 0xfb00;\\n  t.f_f = 0xfb00;\\n  t.ffi = 0xfb03;\\n  t.f_f_i = 0xfb03;\\n  t.ffl = 0xfb04;\\n  t.f_f_l = 0xfb04;\\n  t.fi = 0xfb01;\\n  t.f_i = 0xfb01;\\n  t.fifteencircle = 0x246e;\\n  t.fifteenparen = 0x2482;\\n  t.fifteenperiod = 0x2496;\\n  t.figuredash = 0x2012;\\n  t.filledbox = 0x25a0;\\n  t.filledrect = 0x25ac;\\n  t.finalkaf = 0x05da;\\n  t.finalkafdagesh = 0xfb3a;\\n  t.finalkafdageshhebrew = 0xfb3a;\\n  t.finalkafhebrew = 0x05da;\\n  t.finalmem = 0x05dd;\\n  t.finalmemhebrew = 0x05dd;\\n  t.finalnun = 0x05df;\\n  t.finalnunhebrew = 0x05df;\\n  t.finalpe = 0x05e3;\\n  t.finalpehebrew = 0x05e3;\\n  t.finaltsadi = 0x05e5;\\n  t.finaltsadihebrew = 0x05e5;\\n  t.firsttonechinese = 0x02c9;\\n  t.fisheye = 0x25c9;\\n  t.fitacyrillic = 0x0473;\\n  t.five = 0x0035;\\n  t.fivearabic = 0x0665;\\n  t.fivebengali = 0x09eb;\\n  t.fivecircle = 0x2464;\\n  t.fivecircleinversesansserif = 0x278e;\\n  t.fivedeva = 0x096b;\\n  t.fiveeighths = 0x215d;\\n  t.fivegujarati = 0x0aeb;\\n  t.fivegurmukhi = 0x0a6b;\\n  t.fivehackarabic = 0x0665;\\n  t.fivehangzhou = 0x3025;\\n  t.fiveideographicparen = 0x3224;\\n  t.fiveinferior = 0x2085;\\n  t.fivemonospace = 0xff15;\\n  t.fiveoldstyle = 0xf735;\\n  t.fiveparen = 0x2478;\\n  t.fiveperiod = 0x248c;\\n  t.fivepersian = 0x06f5;\\n  t.fiveroman = 0x2174;\\n  t.fivesuperior = 0x2075;\\n  t.fivethai = 0x0e55;\\n  t.fl = 0xfb02;\\n  t.f_l = 0xfb02;\\n  t.florin = 0x0192;\\n  t.fmonospace = 0xff46;\\n  t.fmsquare = 0x3399;\\n  t.fofanthai = 0x0e1f;\\n  t.fofathai = 0x0e1d;\\n  t.fongmanthai = 0x0e4f;\\n  t.forall = 0x2200;\\n  t.four = 0x0034;\\n  t.fourarabic = 0x0664;\\n  t.fourbengali = 0x09ea;\\n  t.fourcircle = 0x2463;\\n  t.fourcircleinversesansserif = 0x278d;\\n  t.fourdeva = 0x096a;\\n  t.fourgujarati = 0x0aea;\\n  t.fourgurmukhi = 0x0a6a;\\n  t.fourhackarabic = 0x0664;\\n  t.fourhangzhou = 0x3024;\\n  t.fourideographicparen = 0x3223;\\n  t.fourinferior = 0x2084;\\n  t.fourmonospace = 0xff14;\\n  t.fournumeratorbengali = 0x09f7;\\n  t.fouroldstyle = 0xf734;\\n  t.fourparen = 0x2477;\\n  t.fourperiod = 0x248b;\\n  t.fourpersian = 0x06f4;\\n  t.fourroman = 0x2173;\\n  t.foursuperior = 0x2074;\\n  t.fourteencircle = 0x246d;\\n  t.fourteenparen = 0x2481;\\n  t.fourteenperiod = 0x2495;\\n  t.fourthai = 0x0e54;\\n  t.fourthtonechinese = 0x02cb;\\n  t.fparen = 0x24a1;\\n  t.fraction = 0x2044;\\n  t.franc = 0x20a3;\\n  t.g = 0x0067;\\n  t.gabengali = 0x0997;\\n  t.gacute = 0x01f5;\\n  t.gadeva = 0x0917;\\n  t.gafarabic = 0x06af;\\n  t.gaffinalarabic = 0xfb93;\\n  t.gafinitialarabic = 0xfb94;\\n  t.gafmedialarabic = 0xfb95;\\n  t.gagujarati = 0x0a97;\\n  t.gagurmukhi = 0x0a17;\\n  t.gahiragana = 0x304c;\\n  t.gakatakana = 0x30ac;\\n  t.gamma = 0x03b3;\\n  t.gammalatinsmall = 0x0263;\\n  t.gammasuperior = 0x02e0;\\n  t.gangiacoptic = 0x03eb;\\n  t.gbopomofo = 0x310d;\\n  t.gbreve = 0x011f;\\n  t.gcaron = 0x01e7;\\n  t.gcedilla = 0x0123;\\n  t.gcircle = 0x24d6;\\n  t.gcircumflex = 0x011d;\\n  t.gcommaaccent = 0x0123;\\n  t.gdot = 0x0121;\\n  t.gdotaccent = 0x0121;\\n  t.gecyrillic = 0x0433;\\n  t.gehiragana = 0x3052;\\n  t.gekatakana = 0x30b2;\\n  t.geometricallyequal = 0x2251;\\n  t.gereshaccenthebrew = 0x059c;\\n  t.gereshhebrew = 0x05f3;\\n  t.gereshmuqdamhebrew = 0x059d;\\n  t.germandbls = 0x00df;\\n  t.gershayimaccenthebrew = 0x059e;\\n  t.gershayimhebrew = 0x05f4;\\n  t.getamark = 0x3013;\\n  t.ghabengali = 0x0998;\\n  t.ghadarmenian = 0x0572;\\n  t.ghadeva = 0x0918;\\n  t.ghagujarati = 0x0a98;\\n  t.ghagurmukhi = 0x0a18;\\n  t.ghainarabic = 0x063a;\\n  t.ghainfinalarabic = 0xfece;\\n  t.ghaininitialarabic = 0xfecf;\\n  t.ghainmedialarabic = 0xfed0;\\n  t.ghemiddlehookcyrillic = 0x0495;\\n  t.ghestrokecyrillic = 0x0493;\\n  t.gheupturncyrillic = 0x0491;\\n  t.ghhadeva = 0x095a;\\n  t.ghhagurmukhi = 0x0a5a;\\n  t.ghook = 0x0260;\\n  t.ghzsquare = 0x3393;\\n  t.gihiragana = 0x304e;\\n  t.gikatakana = 0x30ae;\\n  t.gimarmenian = 0x0563;\\n  t.gimel = 0x05d2;\\n  t.gimeldagesh = 0xfb32;\\n  t.gimeldageshhebrew = 0xfb32;\\n  t.gimelhebrew = 0x05d2;\\n  t.gjecyrillic = 0x0453;\\n  t.glottalinvertedstroke = 0x01be;\\n  t.glottalstop = 0x0294;\\n  t.glottalstopinverted = 0x0296;\\n  t.glottalstopmod = 0x02c0;\\n  t.glottalstopreversed = 0x0295;\\n  t.glottalstopreversedmod = 0x02c1;\\n  t.glottalstopreversedsuperior = 0x02e4;\\n  t.glottalstopstroke = 0x02a1;\\n  t.glottalstopstrokereversed = 0x02a2;\\n  t.gmacron = 0x1e21;\\n  t.gmonospace = 0xff47;\\n  t.gohiragana = 0x3054;\\n  t.gokatakana = 0x30b4;\\n  t.gparen = 0x24a2;\\n  t.gpasquare = 0x33ac;\\n  t.gradient = 0x2207;\\n  t.grave = 0x0060;\\n  t.gravebelowcmb = 0x0316;\\n  t.gravecmb = 0x0300;\\n  t.gravecomb = 0x0300;\\n  t.gravedeva = 0x0953;\\n  t.gravelowmod = 0x02ce;\\n  t.gravemonospace = 0xff40;\\n  t.gravetonecmb = 0x0340;\\n  t.greater = 0x003e;\\n  t.greaterequal = 0x2265;\\n  t.greaterequalorless = 0x22db;\\n  t.greatermonospace = 0xff1e;\\n  t.greaterorequivalent = 0x2273;\\n  t.greaterorless = 0x2277;\\n  t.greateroverequal = 0x2267;\\n  t.greatersmall = 0xfe65;\\n  t.gscript = 0x0261;\\n  t.gstroke = 0x01e5;\\n  t.guhiragana = 0x3050;\\n  t.guillemotleft = 0x00ab;\\n  t.guillemotright = 0x00bb;\\n  t.guilsinglleft = 0x2039;\\n  t.guilsinglright = 0x203a;\\n  t.gukatakana = 0x30b0;\\n  t.guramusquare = 0x3318;\\n  t.gysquare = 0x33c9;\\n  t.h = 0x0068;\\n  t.haabkhasiancyrillic = 0x04a9;\\n  t.haaltonearabic = 0x06c1;\\n  t.habengali = 0x09b9;\\n  t.hadescendercyrillic = 0x04b3;\\n  t.hadeva = 0x0939;\\n  t.hagujarati = 0x0ab9;\\n  t.hagurmukhi = 0x0a39;\\n  t.haharabic = 0x062d;\\n  t.hahfinalarabic = 0xfea2;\\n  t.hahinitialarabic = 0xfea3;\\n  t.hahiragana = 0x306f;\\n  t.hahmedialarabic = 0xfea4;\\n  t.haitusquare = 0x332a;\\n  t.hakatakana = 0x30cf;\\n  t.hakatakanahalfwidth = 0xff8a;\\n  t.halantgurmukhi = 0x0a4d;\\n  t.hamzaarabic = 0x0621;\\n  t.hamzalowarabic = 0x0621;\\n  t.hangulfiller = 0x3164;\\n  t.hardsigncyrillic = 0x044a;\\n  t.harpoonleftbarbup = 0x21bc;\\n  t.harpoonrightbarbup = 0x21c0;\\n  t.hasquare = 0x33ca;\\n  t.hatafpatah = 0x05b2;\\n  t.hatafpatah16 = 0x05b2;\\n  t.hatafpatah23 = 0x05b2;\\n  t.hatafpatah2f = 0x05b2;\\n  t.hatafpatahhebrew = 0x05b2;\\n  t.hatafpatahnarrowhebrew = 0x05b2;\\n  t.hatafpatahquarterhebrew = 0x05b2;\\n  t.hatafpatahwidehebrew = 0x05b2;\\n  t.hatafqamats = 0x05b3;\\n  t.hatafqamats1b = 0x05b3;\\n  t.hatafqamats28 = 0x05b3;\\n  t.hatafqamats34 = 0x05b3;\\n  t.hatafqamatshebrew = 0x05b3;\\n  t.hatafqamatsnarrowhebrew = 0x05b3;\\n  t.hatafqamatsquarterhebrew = 0x05b3;\\n  t.hatafqamatswidehebrew = 0x05b3;\\n  t.hatafsegol = 0x05b1;\\n  t.hatafsegol17 = 0x05b1;\\n  t.hatafsegol24 = 0x05b1;\\n  t.hatafsegol30 = 0x05b1;\\n  t.hatafsegolhebrew = 0x05b1;\\n  t.hatafsegolnarrowhebrew = 0x05b1;\\n  t.hatafsegolquarterhebrew = 0x05b1;\\n  t.hatafsegolwidehebrew = 0x05b1;\\n  t.hbar = 0x0127;\\n  t.hbopomofo = 0x310f;\\n  t.hbrevebelow = 0x1e2b;\\n  t.hcedilla = 0x1e29;\\n  t.hcircle = 0x24d7;\\n  t.hcircumflex = 0x0125;\\n  t.hdieresis = 0x1e27;\\n  t.hdotaccent = 0x1e23;\\n  t.hdotbelow = 0x1e25;\\n  t.he = 0x05d4;\\n  t.heart = 0x2665;\\n  t.heartsuitblack = 0x2665;\\n  t.heartsuitwhite = 0x2661;\\n  t.hedagesh = 0xfb34;\\n  t.hedageshhebrew = 0xfb34;\\n  t.hehaltonearabic = 0x06c1;\\n  t.heharabic = 0x0647;\\n  t.hehebrew = 0x05d4;\\n  t.hehfinalaltonearabic = 0xfba7;\\n  t.hehfinalalttwoarabic = 0xfeea;\\n  t.hehfinalarabic = 0xfeea;\\n  t.hehhamzaabovefinalarabic = 0xfba5;\\n  t.hehhamzaaboveisolatedarabic = 0xfba4;\\n  t.hehinitialaltonearabic = 0xfba8;\\n  t.hehinitialarabic = 0xfeeb;\\n  t.hehiragana = 0x3078;\\n  t.hehmedialaltonearabic = 0xfba9;\\n  t.hehmedialarabic = 0xfeec;\\n  t.heiseierasquare = 0x337b;\\n  t.hekatakana = 0x30d8;\\n  t.hekatakanahalfwidth = 0xff8d;\\n  t.hekutaarusquare = 0x3336;\\n  t.henghook = 0x0267;\\n  t.herutusquare = 0x3339;\\n  t.het = 0x05d7;\\n  t.hethebrew = 0x05d7;\\n  t.hhook = 0x0266;\\n  t.hhooksuperior = 0x02b1;\\n  t.hieuhacirclekorean = 0x327b;\\n  t.hieuhaparenkorean = 0x321b;\\n  t.hieuhcirclekorean = 0x326d;\\n  t.hieuhkorean = 0x314e;\\n  t.hieuhparenkorean = 0x320d;\\n  t.hihiragana = 0x3072;\\n  t.hikatakana = 0x30d2;\\n  t.hikatakanahalfwidth = 0xff8b;\\n  t.hiriq = 0x05b4;\\n  t.hiriq14 = 0x05b4;\\n  t.hiriq21 = 0x05b4;\\n  t.hiriq2d = 0x05b4;\\n  t.hiriqhebrew = 0x05b4;\\n  t.hiriqnarrowhebrew = 0x05b4;\\n  t.hiriqquarterhebrew = 0x05b4;\\n  t.hiriqwidehebrew = 0x05b4;\\n  t.hlinebelow = 0x1e96;\\n  t.hmonospace = 0xff48;\\n  t.hoarmenian = 0x0570;\\n  t.hohipthai = 0x0e2b;\\n  t.hohiragana = 0x307b;\\n  t.hokatakana = 0x30db;\\n  t.hokatakanahalfwidth = 0xff8e;\\n  t.holam = 0x05b9;\\n  t.holam19 = 0x05b9;\\n  t.holam26 = 0x05b9;\\n  t.holam32 = 0x05b9;\\n  t.holamhebrew = 0x05b9;\\n  t.holamnarrowhebrew = 0x05b9;\\n  t.holamquarterhebrew = 0x05b9;\\n  t.holamwidehebrew = 0x05b9;\\n  t.honokhukthai = 0x0e2e;\\n  t.hookabovecomb = 0x0309;\\n  t.hookcmb = 0x0309;\\n  t.hookpalatalizedbelowcmb = 0x0321;\\n  t.hookretroflexbelowcmb = 0x0322;\\n  t.hoonsquare = 0x3342;\\n  t.horicoptic = 0x03e9;\\n  t.horizontalbar = 0x2015;\\n  t.horncmb = 0x031b;\\n  t.hotsprings = 0x2668;\\n  t.house = 0x2302;\\n  t.hparen = 0x24a3;\\n  t.hsuperior = 0x02b0;\\n  t.hturned = 0x0265;\\n  t.huhiragana = 0x3075;\\n  t.huiitosquare = 0x3333;\\n  t.hukatakana = 0x30d5;\\n  t.hukatakanahalfwidth = 0xff8c;\\n  t.hungarumlaut = 0x02dd;\\n  t.hungarumlautcmb = 0x030b;\\n  t.hv = 0x0195;\\n  t.hyphen = 0x002d;\\n  t.hypheninferior = 0xf6e5;\\n  t.hyphenmonospace = 0xff0d;\\n  t.hyphensmall = 0xfe63;\\n  t.hyphensuperior = 0xf6e6;\\n  t.hyphentwo = 0x2010;\\n  t.i = 0x0069;\\n  t.iacute = 0x00ed;\\n  t.iacyrillic = 0x044f;\\n  t.ibengali = 0x0987;\\n  t.ibopomofo = 0x3127;\\n  t.ibreve = 0x012d;\\n  t.icaron = 0x01d0;\\n  t.icircle = 0x24d8;\\n  t.icircumflex = 0x00ee;\\n  t.icyrillic = 0x0456;\\n  t.idblgrave = 0x0209;\\n  t.ideographearthcircle = 0x328f;\\n  t.ideographfirecircle = 0x328b;\\n  t.ideographicallianceparen = 0x323f;\\n  t.ideographiccallparen = 0x323a;\\n  t.ideographiccentrecircle = 0x32a5;\\n  t.ideographicclose = 0x3006;\\n  t.ideographiccomma = 0x3001;\\n  t.ideographiccommaleft = 0xff64;\\n  t.ideographiccongratulationparen = 0x3237;\\n  t.ideographiccorrectcircle = 0x32a3;\\n  t.ideographicearthparen = 0x322f;\\n  t.ideographicenterpriseparen = 0x323d;\\n  t.ideographicexcellentcircle = 0x329d;\\n  t.ideographicfestivalparen = 0x3240;\\n  t.ideographicfinancialcircle = 0x3296;\\n  t.ideographicfinancialparen = 0x3236;\\n  t.ideographicfireparen = 0x322b;\\n  t.ideographichaveparen = 0x3232;\\n  t.ideographichighcircle = 0x32a4;\\n  t.ideographiciterationmark = 0x3005;\\n  t.ideographiclaborcircle = 0x3298;\\n  t.ideographiclaborparen = 0x3238;\\n  t.ideographicleftcircle = 0x32a7;\\n  t.ideographiclowcircle = 0x32a6;\\n  t.ideographicmedicinecircle = 0x32a9;\\n  t.ideographicmetalparen = 0x322e;\\n  t.ideographicmoonparen = 0x322a;\\n  t.ideographicnameparen = 0x3234;\\n  t.ideographicperiod = 0x3002;\\n  t.ideographicprintcircle = 0x329e;\\n  t.ideographicreachparen = 0x3243;\\n  t.ideographicrepresentparen = 0x3239;\\n  t.ideographicresourceparen = 0x323e;\\n  t.ideographicrightcircle = 0x32a8;\\n  t.ideographicsecretcircle = 0x3299;\\n  t.ideographicselfparen = 0x3242;\\n  t.ideographicsocietyparen = 0x3233;\\n  t.ideographicspace = 0x3000;\\n  t.ideographicspecialparen = 0x3235;\\n  t.ideographicstockparen = 0x3231;\\n  t.ideographicstudyparen = 0x323b;\\n  t.ideographicsunparen = 0x3230;\\n  t.ideographicsuperviseparen = 0x323c;\\n  t.ideographicwaterparen = 0x322c;\\n  t.ideographicwoodparen = 0x322d;\\n  t.ideographiczero = 0x3007;\\n  t.ideographmetalcircle = 0x328e;\\n  t.ideographmooncircle = 0x328a;\\n  t.ideographnamecircle = 0x3294;\\n  t.ideographsuncircle = 0x3290;\\n  t.ideographwatercircle = 0x328c;\\n  t.ideographwoodcircle = 0x328d;\\n  t.ideva = 0x0907;\\n  t.idieresis = 0x00ef;\\n  t.idieresisacute = 0x1e2f;\\n  t.idieresiscyrillic = 0x04e5;\\n  t.idotbelow = 0x1ecb;\\n  t.iebrevecyrillic = 0x04d7;\\n  t.iecyrillic = 0x0435;\\n  t.ieungacirclekorean = 0x3275;\\n  t.ieungaparenkorean = 0x3215;\\n  t.ieungcirclekorean = 0x3267;\\n  t.ieungkorean = 0x3147;\\n  t.ieungparenkorean = 0x3207;\\n  t.igrave = 0x00ec;\\n  t.igujarati = 0x0a87;\\n  t.igurmukhi = 0x0a07;\\n  t.ihiragana = 0x3044;\\n  t.ihookabove = 0x1ec9;\\n  t.iibengali = 0x0988;\\n  t.iicyrillic = 0x0438;\\n  t.iideva = 0x0908;\\n  t.iigujarati = 0x0a88;\\n  t.iigurmukhi = 0x0a08;\\n  t.iimatragurmukhi = 0x0a40;\\n  t.iinvertedbreve = 0x020b;\\n  t.iishortcyrillic = 0x0439;\\n  t.iivowelsignbengali = 0x09c0;\\n  t.iivowelsigndeva = 0x0940;\\n  t.iivowelsigngujarati = 0x0ac0;\\n  t.ij = 0x0133;\\n  t.ikatakana = 0x30a4;\\n  t.ikatakanahalfwidth = 0xff72;\\n  t.ikorean = 0x3163;\\n  t.ilde = 0x02dc;\\n  t.iluyhebrew = 0x05ac;\\n  t.imacron = 0x012b;\\n  t.imacroncyrillic = 0x04e3;\\n  t.imageorapproximatelyequal = 0x2253;\\n  t.imatragurmukhi = 0x0a3f;\\n  t.imonospace = 0xff49;\\n  t.increment = 0x2206;\\n  t.infinity = 0x221e;\\n  t.iniarmenian = 0x056b;\\n  t.integral = 0x222b;\\n  t.integralbottom = 0x2321;\\n  t.integralbt = 0x2321;\\n  t.integralex = 0xf8f5;\\n  t.integraltop = 0x2320;\\n  t.integraltp = 0x2320;\\n  t.intersection = 0x2229;\\n  t.intisquare = 0x3305;\\n  t.invbullet = 0x25d8;\\n  t.invcircle = 0x25d9;\\n  t.invsmileface = 0x263b;\\n  t.iocyrillic = 0x0451;\\n  t.iogonek = 0x012f;\\n  t.iota = 0x03b9;\\n  t.iotadieresis = 0x03ca;\\n  t.iotadieresistonos = 0x0390;\\n  t.iotalatin = 0x0269;\\n  t.iotatonos = 0x03af;\\n  t.iparen = 0x24a4;\\n  t.irigurmukhi = 0x0a72;\\n  t.ismallhiragana = 0x3043;\\n  t.ismallkatakana = 0x30a3;\\n  t.ismallkatakanahalfwidth = 0xff68;\\n  t.issharbengali = 0x09fa;\\n  t.istroke = 0x0268;\\n  t.isuperior = 0xf6ed;\\n  t.iterationhiragana = 0x309d;\\n  t.iterationkatakana = 0x30fd;\\n  t.itilde = 0x0129;\\n  t.itildebelow = 0x1e2d;\\n  t.iubopomofo = 0x3129;\\n  t.iucyrillic = 0x044e;\\n  t.ivowelsignbengali = 0x09bf;\\n  t.ivowelsigndeva = 0x093f;\\n  t.ivowelsigngujarati = 0x0abf;\\n  t.izhitsacyrillic = 0x0475;\\n  t.izhitsadblgravecyrillic = 0x0477;\\n  t.j = 0x006a;\\n  t.jaarmenian = 0x0571;\\n  t.jabengali = 0x099c;\\n  t.jadeva = 0x091c;\\n  t.jagujarati = 0x0a9c;\\n  t.jagurmukhi = 0x0a1c;\\n  t.jbopomofo = 0x3110;\\n  t.jcaron = 0x01f0;\\n  t.jcircle = 0x24d9;\\n  t.jcircumflex = 0x0135;\\n  t.jcrossedtail = 0x029d;\\n  t.jdotlessstroke = 0x025f;\\n  t.jecyrillic = 0x0458;\\n  t.jeemarabic = 0x062c;\\n  t.jeemfinalarabic = 0xfe9e;\\n  t.jeeminitialarabic = 0xfe9f;\\n  t.jeemmedialarabic = 0xfea0;\\n  t.jeharabic = 0x0698;\\n  t.jehfinalarabic = 0xfb8b;\\n  t.jhabengali = 0x099d;\\n  t.jhadeva = 0x091d;\\n  t.jhagujarati = 0x0a9d;\\n  t.jhagurmukhi = 0x0a1d;\\n  t.jheharmenian = 0x057b;\\n  t.jis = 0x3004;\\n  t.jmonospace = 0xff4a;\\n  t.jparen = 0x24a5;\\n  t.jsuperior = 0x02b2;\\n  t.k = 0x006b;\\n  t.kabashkircyrillic = 0x04a1;\\n  t.kabengali = 0x0995;\\n  t.kacute = 0x1e31;\\n  t.kacyrillic = 0x043a;\\n  t.kadescendercyrillic = 0x049b;\\n  t.kadeva = 0x0915;\\n  t.kaf = 0x05db;\\n  t.kafarabic = 0x0643;\\n  t.kafdagesh = 0xfb3b;\\n  t.kafdageshhebrew = 0xfb3b;\\n  t.kaffinalarabic = 0xfeda;\\n  t.kafhebrew = 0x05db;\\n  t.kafinitialarabic = 0xfedb;\\n  t.kafmedialarabic = 0xfedc;\\n  t.kafrafehebrew = 0xfb4d;\\n  t.kagujarati = 0x0a95;\\n  t.kagurmukhi = 0x0a15;\\n  t.kahiragana = 0x304b;\\n  t.kahookcyrillic = 0x04c4;\\n  t.kakatakana = 0x30ab;\\n  t.kakatakanahalfwidth = 0xff76;\\n  t.kappa = 0x03ba;\\n  t.kappasymbolgreek = 0x03f0;\\n  t.kapyeounmieumkorean = 0x3171;\\n  t.kapyeounphieuphkorean = 0x3184;\\n  t.kapyeounpieupkorean = 0x3178;\\n  t.kapyeounssangpieupkorean = 0x3179;\\n  t.karoriisquare = 0x330d;\\n  t.kashidaautoarabic = 0x0640;\\n  t.kashidaautonosidebearingarabic = 0x0640;\\n  t.kasmallkatakana = 0x30f5;\\n  t.kasquare = 0x3384;\\n  t.kasraarabic = 0x0650;\\n  t.kasratanarabic = 0x064d;\\n  t.kastrokecyrillic = 0x049f;\\n  t.katahiraprolongmarkhalfwidth = 0xff70;\\n  t.kaverticalstrokecyrillic = 0x049d;\\n  t.kbopomofo = 0x310e;\\n  t.kcalsquare = 0x3389;\\n  t.kcaron = 0x01e9;\\n  t.kcedilla = 0x0137;\\n  t.kcircle = 0x24da;\\n  t.kcommaaccent = 0x0137;\\n  t.kdotbelow = 0x1e33;\\n  t.keharmenian = 0x0584;\\n  t.kehiragana = 0x3051;\\n  t.kekatakana = 0x30b1;\\n  t.kekatakanahalfwidth = 0xff79;\\n  t.kenarmenian = 0x056f;\\n  t.kesmallkatakana = 0x30f6;\\n  t.kgreenlandic = 0x0138;\\n  t.khabengali = 0x0996;\\n  t.khacyrillic = 0x0445;\\n  t.khadeva = 0x0916;\\n  t.khagujarati = 0x0a96;\\n  t.khagurmukhi = 0x0a16;\\n  t.khaharabic = 0x062e;\\n  t.khahfinalarabic = 0xfea6;\\n  t.khahinitialarabic = 0xfea7;\\n  t.khahmedialarabic = 0xfea8;\\n  t.kheicoptic = 0x03e7;\\n  t.khhadeva = 0x0959;\\n  t.khhagurmukhi = 0x0a59;\\n  t.khieukhacirclekorean = 0x3278;\\n  t.khieukhaparenkorean = 0x3218;\\n  t.khieukhcirclekorean = 0x326a;\\n  t.khieukhkorean = 0x314b;\\n  t.khieukhparenkorean = 0x320a;\\n  t.khokhaithai = 0x0e02;\\n  t.khokhonthai = 0x0e05;\\n  t.khokhuatthai = 0x0e03;\\n  t.khokhwaithai = 0x0e04;\\n  t.khomutthai = 0x0e5b;\\n  t.khook = 0x0199;\\n  t.khorakhangthai = 0x0e06;\\n  t.khzsquare = 0x3391;\\n  t.kihiragana = 0x304d;\\n  t.kikatakana = 0x30ad;\\n  t.kikatakanahalfwidth = 0xff77;\\n  t.kiroguramusquare = 0x3315;\\n  t.kiromeetorusquare = 0x3316;\\n  t.kirosquare = 0x3314;\\n  t.kiyeokacirclekorean = 0x326e;\\n  t.kiyeokaparenkorean = 0x320e;\\n  t.kiyeokcirclekorean = 0x3260;\\n  t.kiyeokkorean = 0x3131;\\n  t.kiyeokparenkorean = 0x3200;\\n  t.kiyeoksioskorean = 0x3133;\\n  t.kjecyrillic = 0x045c;\\n  t.klinebelow = 0x1e35;\\n  t.klsquare = 0x3398;\\n  t.kmcubedsquare = 0x33a6;\\n  t.kmonospace = 0xff4b;\\n  t.kmsquaredsquare = 0x33a2;\\n  t.kohiragana = 0x3053;\\n  t.kohmsquare = 0x33c0;\\n  t.kokaithai = 0x0e01;\\n  t.kokatakana = 0x30b3;\\n  t.kokatakanahalfwidth = 0xff7a;\\n  t.kooposquare = 0x331e;\\n  t.koppacyrillic = 0x0481;\\n  t.koreanstandardsymbol = 0x327f;\\n  t.koroniscmb = 0x0343;\\n  t.kparen = 0x24a6;\\n  t.kpasquare = 0x33aa;\\n  t.ksicyrillic = 0x046f;\\n  t.ktsquare = 0x33cf;\\n  t.kturned = 0x029e;\\n  t.kuhiragana = 0x304f;\\n  t.kukatakana = 0x30af;\\n  t.kukatakanahalfwidth = 0xff78;\\n  t.kvsquare = 0x33b8;\\n  t.kwsquare = 0x33be;\\n  t.l = 0x006c;\\n  t.labengali = 0x09b2;\\n  t.lacute = 0x013a;\\n  t.ladeva = 0x0932;\\n  t.lagujarati = 0x0ab2;\\n  t.lagurmukhi = 0x0a32;\\n  t.lakkhangyaothai = 0x0e45;\\n  t.lamaleffinalarabic = 0xfefc;\\n  t.lamalefhamzaabovefinalarabic = 0xfef8;\\n  t.lamalefhamzaaboveisolatedarabic = 0xfef7;\\n  t.lamalefhamzabelowfinalarabic = 0xfefa;\\n  t.lamalefhamzabelowisolatedarabic = 0xfef9;\\n  t.lamalefisolatedarabic = 0xfefb;\\n  t.lamalefmaddaabovefinalarabic = 0xfef6;\\n  t.lamalefmaddaaboveisolatedarabic = 0xfef5;\\n  t.lamarabic = 0x0644;\\n  t.lambda = 0x03bb;\\n  t.lambdastroke = 0x019b;\\n  t.lamed = 0x05dc;\\n  t.lameddagesh = 0xfb3c;\\n  t.lameddageshhebrew = 0xfb3c;\\n  t.lamedhebrew = 0x05dc;\\n  t.lamfinalarabic = 0xfede;\\n  t.lamhahinitialarabic = 0xfcca;\\n  t.laminitialarabic = 0xfedf;\\n  t.lamjeeminitialarabic = 0xfcc9;\\n  t.lamkhahinitialarabic = 0xfccb;\\n  t.lamlamhehisolatedarabic = 0xfdf2;\\n  t.lammedialarabic = 0xfee0;\\n  t.lammeemhahinitialarabic = 0xfd88;\\n  t.lammeeminitialarabic = 0xfccc;\\n  t.largecircle = 0x25ef;\\n  t.lbar = 0x019a;\\n  t.lbelt = 0x026c;\\n  t.lbopomofo = 0x310c;\\n  t.lcaron = 0x013e;\\n  t.lcedilla = 0x013c;\\n  t.lcircle = 0x24db;\\n  t.lcircumflexbelow = 0x1e3d;\\n  t.lcommaaccent = 0x013c;\\n  t.ldot = 0x0140;\\n  t.ldotaccent = 0x0140;\\n  t.ldotbelow = 0x1e37;\\n  t.ldotbelowmacron = 0x1e39;\\n  t.leftangleabovecmb = 0x031a;\\n  t.lefttackbelowcmb = 0x0318;\\n  t.less = 0x003c;\\n  t.lessequal = 0x2264;\\n  t.lessequalorgreater = 0x22da;\\n  t.lessmonospace = 0xff1c;\\n  t.lessorequivalent = 0x2272;\\n  t.lessorgreater = 0x2276;\\n  t.lessoverequal = 0x2266;\\n  t.lesssmall = 0xfe64;\\n  t.lezh = 0x026e;\\n  t.lfblock = 0x258c;\\n  t.lhookretroflex = 0x026d;\\n  t.lira = 0x20a4;\\n  t.liwnarmenian = 0x056c;\\n  t.lj = 0x01c9;\\n  t.ljecyrillic = 0x0459;\\n  t.ll = 0xf6c0;\\n  t.lladeva = 0x0933;\\n  t.llagujarati = 0x0ab3;\\n  t.llinebelow = 0x1e3b;\\n  t.llladeva = 0x0934;\\n  t.llvocalicbengali = 0x09e1;\\n  t.llvocalicdeva = 0x0961;\\n  t.llvocalicvowelsignbengali = 0x09e3;\\n  t.llvocalicvowelsigndeva = 0x0963;\\n  t.lmiddletilde = 0x026b;\\n  t.lmonospace = 0xff4c;\\n  t.lmsquare = 0x33d0;\\n  t.lochulathai = 0x0e2c;\\n  t.logicaland = 0x2227;\\n  t.logicalnot = 0x00ac;\\n  t.logicalnotreversed = 0x2310;\\n  t.logicalor = 0x2228;\\n  t.lolingthai = 0x0e25;\\n  t.longs = 0x017f;\\n  t.lowlinecenterline = 0xfe4e;\\n  t.lowlinecmb = 0x0332;\\n  t.lowlinedashed = 0xfe4d;\\n  t.lozenge = 0x25ca;\\n  t.lparen = 0x24a7;\\n  t.lslash = 0x0142;\\n  t.lsquare = 0x2113;\\n  t.lsuperior = 0xf6ee;\\n  t.ltshade = 0x2591;\\n  t.luthai = 0x0e26;\\n  t.lvocalicbengali = 0x098c;\\n  t.lvocalicdeva = 0x090c;\\n  t.lvocalicvowelsignbengali = 0x09e2;\\n  t.lvocalicvowelsigndeva = 0x0962;\\n  t.lxsquare = 0x33d3;\\n  t.m = 0x006d;\\n  t.mabengali = 0x09ae;\\n  t.macron = 0x00af;\\n  t.macronbelowcmb = 0x0331;\\n  t.macroncmb = 0x0304;\\n  t.macronlowmod = 0x02cd;\\n  t.macronmonospace = 0xffe3;\\n  t.macute = 0x1e3f;\\n  t.madeva = 0x092e;\\n  t.magujarati = 0x0aae;\\n  t.magurmukhi = 0x0a2e;\\n  t.mahapakhhebrew = 0x05a4;\\n  t.mahapakhlefthebrew = 0x05a4;\\n  t.mahiragana = 0x307e;\\n  t.maichattawalowleftthai = 0xf895;\\n  t.maichattawalowrightthai = 0xf894;\\n  t.maichattawathai = 0x0e4b;\\n  t.maichattawaupperleftthai = 0xf893;\\n  t.maieklowleftthai = 0xf88c;\\n  t.maieklowrightthai = 0xf88b;\\n  t.maiekthai = 0x0e48;\\n  t.maiekupperleftthai = 0xf88a;\\n  t.maihanakatleftthai = 0xf884;\\n  t.maihanakatthai = 0x0e31;\\n  t.maitaikhuleftthai = 0xf889;\\n  t.maitaikhuthai = 0x0e47;\\n  t.maitholowleftthai = 0xf88f;\\n  t.maitholowrightthai = 0xf88e;\\n  t.maithothai = 0x0e49;\\n  t.maithoupperleftthai = 0xf88d;\\n  t.maitrilowleftthai = 0xf892;\\n  t.maitrilowrightthai = 0xf891;\\n  t.maitrithai = 0x0e4a;\\n  t.maitriupperleftthai = 0xf890;\\n  t.maiyamokthai = 0x0e46;\\n  t.makatakana = 0x30de;\\n  t.makatakanahalfwidth = 0xff8f;\\n  t.male = 0x2642;\\n  t.mansyonsquare = 0x3347;\\n  t.maqafhebrew = 0x05be;\\n  t.mars = 0x2642;\\n  t.masoracirclehebrew = 0x05af;\\n  t.masquare = 0x3383;\\n  t.mbopomofo = 0x3107;\\n  t.mbsquare = 0x33d4;\\n  t.mcircle = 0x24dc;\\n  t.mcubedsquare = 0x33a5;\\n  t.mdotaccent = 0x1e41;\\n  t.mdotbelow = 0x1e43;\\n  t.meemarabic = 0x0645;\\n  t.meemfinalarabic = 0xfee2;\\n  t.meeminitialarabic = 0xfee3;\\n  t.meemmedialarabic = 0xfee4;\\n  t.meemmeeminitialarabic = 0xfcd1;\\n  t.meemmeemisolatedarabic = 0xfc48;\\n  t.meetorusquare = 0x334d;\\n  t.mehiragana = 0x3081;\\n  t.meizierasquare = 0x337e;\\n  t.mekatakana = 0x30e1;\\n  t.mekatakanahalfwidth = 0xff92;\\n  t.mem = 0x05de;\\n  t.memdagesh = 0xfb3e;\\n  t.memdageshhebrew = 0xfb3e;\\n  t.memhebrew = 0x05de;\\n  t.menarmenian = 0x0574;\\n  t.merkhahebrew = 0x05a5;\\n  t.merkhakefulahebrew = 0x05a6;\\n  t.merkhakefulalefthebrew = 0x05a6;\\n  t.merkhalefthebrew = 0x05a5;\\n  t.mhook = 0x0271;\\n  t.mhzsquare = 0x3392;\\n  t.middledotkatakanahalfwidth = 0xff65;\\n  t.middot = 0x00b7;\\n  t.mieumacirclekorean = 0x3272;\\n  t.mieumaparenkorean = 0x3212;\\n  t.mieumcirclekorean = 0x3264;\\n  t.mieumkorean = 0x3141;\\n  t.mieumpansioskorean = 0x3170;\\n  t.mieumparenkorean = 0x3204;\\n  t.mieumpieupkorean = 0x316e;\\n  t.mieumsioskorean = 0x316f;\\n  t.mihiragana = 0x307f;\\n  t.mikatakana = 0x30df;\\n  t.mikatakanahalfwidth = 0xff90;\\n  t.minus = 0x2212;\\n  t.minusbelowcmb = 0x0320;\\n  t.minuscircle = 0x2296;\\n  t.minusmod = 0x02d7;\\n  t.minusplus = 0x2213;\\n  t.minute = 0x2032;\\n  t.miribaarusquare = 0x334a;\\n  t.mirisquare = 0x3349;\\n  t.mlonglegturned = 0x0270;\\n  t.mlsquare = 0x3396;\\n  t.mmcubedsquare = 0x33a3;\\n  t.mmonospace = 0xff4d;\\n  t.mmsquaredsquare = 0x339f;\\n  t.mohiragana = 0x3082;\\n  t.mohmsquare = 0x33c1;\\n  t.mokatakana = 0x30e2;\\n  t.mokatakanahalfwidth = 0xff93;\\n  t.molsquare = 0x33d6;\\n  t.momathai = 0x0e21;\\n  t.moverssquare = 0x33a7;\\n  t.moverssquaredsquare = 0x33a8;\\n  t.mparen = 0x24a8;\\n  t.mpasquare = 0x33ab;\\n  t.mssquare = 0x33b3;\\n  t.msuperior = 0xf6ef;\\n  t.mturned = 0x026f;\\n  t.mu = 0x00b5;\\n  t.mu1 = 0x00b5;\\n  t.muasquare = 0x3382;\\n  t.muchgreater = 0x226b;\\n  t.muchless = 0x226a;\\n  t.mufsquare = 0x338c;\\n  t.mugreek = 0x03bc;\\n  t.mugsquare = 0x338d;\\n  t.muhiragana = 0x3080;\\n  t.mukatakana = 0x30e0;\\n  t.mukatakanahalfwidth = 0xff91;\\n  t.mulsquare = 0x3395;\\n  t.multiply = 0x00d7;\\n  t.mumsquare = 0x339b;\\n  t.munahhebrew = 0x05a3;\\n  t.munahlefthebrew = 0x05a3;\\n  t.musicalnote = 0x266a;\\n  t.musicalnotedbl = 0x266b;\\n  t.musicflatsign = 0x266d;\\n  t.musicsharpsign = 0x266f;\\n  t.mussquare = 0x33b2;\\n  t.muvsquare = 0x33b6;\\n  t.muwsquare = 0x33bc;\\n  t.mvmegasquare = 0x33b9;\\n  t.mvsquare = 0x33b7;\\n  t.mwmegasquare = 0x33bf;\\n  t.mwsquare = 0x33bd;\\n  t.n = 0x006e;\\n  t.nabengali = 0x09a8;\\n  t.nabla = 0x2207;\\n  t.nacute = 0x0144;\\n  t.nadeva = 0x0928;\\n  t.nagujarati = 0x0aa8;\\n  t.nagurmukhi = 0x0a28;\\n  t.nahiragana = 0x306a;\\n  t.nakatakana = 0x30ca;\\n  t.nakatakanahalfwidth = 0xff85;\\n  t.napostrophe = 0x0149;\\n  t.nasquare = 0x3381;\\n  t.nbopomofo = 0x310b;\\n  t.nbspace = 0x00a0;\\n  t.ncaron = 0x0148;\\n  t.ncedilla = 0x0146;\\n  t.ncircle = 0x24dd;\\n  t.ncircumflexbelow = 0x1e4b;\\n  t.ncommaaccent = 0x0146;\\n  t.ndotaccent = 0x1e45;\\n  t.ndotbelow = 0x1e47;\\n  t.nehiragana = 0x306d;\\n  t.nekatakana = 0x30cd;\\n  t.nekatakanahalfwidth = 0xff88;\\n  t.newsheqelsign = 0x20aa;\\n  t.nfsquare = 0x338b;\\n  t.ngabengali = 0x0999;\\n  t.ngadeva = 0x0919;\\n  t.ngagujarati = 0x0a99;\\n  t.ngagurmukhi = 0x0a19;\\n  t.ngonguthai = 0x0e07;\\n  t.nhiragana = 0x3093;\\n  t.nhookleft = 0x0272;\\n  t.nhookretroflex = 0x0273;\\n  t.nieunacirclekorean = 0x326f;\\n  t.nieunaparenkorean = 0x320f;\\n  t.nieuncieuckorean = 0x3135;\\n  t.nieuncirclekorean = 0x3261;\\n  t.nieunhieuhkorean = 0x3136;\\n  t.nieunkorean = 0x3134;\\n  t.nieunpansioskorean = 0x3168;\\n  t.nieunparenkorean = 0x3201;\\n  t.nieunsioskorean = 0x3167;\\n  t.nieuntikeutkorean = 0x3166;\\n  t.nihiragana = 0x306b;\\n  t.nikatakana = 0x30cb;\\n  t.nikatakanahalfwidth = 0xff86;\\n  t.nikhahitleftthai = 0xf899;\\n  t.nikhahitthai = 0x0e4d;\\n  t.nine = 0x0039;\\n  t.ninearabic = 0x0669;\\n  t.ninebengali = 0x09ef;\\n  t.ninecircle = 0x2468;\\n  t.ninecircleinversesansserif = 0x2792;\\n  t.ninedeva = 0x096f;\\n  t.ninegujarati = 0x0aef;\\n  t.ninegurmukhi = 0x0a6f;\\n  t.ninehackarabic = 0x0669;\\n  t.ninehangzhou = 0x3029;\\n  t.nineideographicparen = 0x3228;\\n  t.nineinferior = 0x2089;\\n  t.ninemonospace = 0xff19;\\n  t.nineoldstyle = 0xf739;\\n  t.nineparen = 0x247c;\\n  t.nineperiod = 0x2490;\\n  t.ninepersian = 0x06f9;\\n  t.nineroman = 0x2178;\\n  t.ninesuperior = 0x2079;\\n  t.nineteencircle = 0x2472;\\n  t.nineteenparen = 0x2486;\\n  t.nineteenperiod = 0x249a;\\n  t.ninethai = 0x0e59;\\n  t.nj = 0x01cc;\\n  t.njecyrillic = 0x045a;\\n  t.nkatakana = 0x30f3;\\n  t.nkatakanahalfwidth = 0xff9d;\\n  t.nlegrightlong = 0x019e;\\n  t.nlinebelow = 0x1e49;\\n  t.nmonospace = 0xff4e;\\n  t.nmsquare = 0x339a;\\n  t.nnabengali = 0x09a3;\\n  t.nnadeva = 0x0923;\\n  t.nnagujarati = 0x0aa3;\\n  t.nnagurmukhi = 0x0a23;\\n  t.nnnadeva = 0x0929;\\n  t.nohiragana = 0x306e;\\n  t.nokatakana = 0x30ce;\\n  t.nokatakanahalfwidth = 0xff89;\\n  t.nonbreakingspace = 0x00a0;\\n  t.nonenthai = 0x0e13;\\n  t.nonuthai = 0x0e19;\\n  t.noonarabic = 0x0646;\\n  t.noonfinalarabic = 0xfee6;\\n  t.noonghunnaarabic = 0x06ba;\\n  t.noonghunnafinalarabic = 0xfb9f;\\n  t.nooninitialarabic = 0xfee7;\\n  t.noonjeeminitialarabic = 0xfcd2;\\n  t.noonjeemisolatedarabic = 0xfc4b;\\n  t.noonmedialarabic = 0xfee8;\\n  t.noonmeeminitialarabic = 0xfcd5;\\n  t.noonmeemisolatedarabic = 0xfc4e;\\n  t.noonnoonfinalarabic = 0xfc8d;\\n  t.notcontains = 0x220c;\\n  t.notelement = 0x2209;\\n  t.notelementof = 0x2209;\\n  t.notequal = 0x2260;\\n  t.notgreater = 0x226f;\\n  t.notgreaternorequal = 0x2271;\\n  t.notgreaternorless = 0x2279;\\n  t.notidentical = 0x2262;\\n  t.notless = 0x226e;\\n  t.notlessnorequal = 0x2270;\\n  t.notparallel = 0x2226;\\n  t.notprecedes = 0x2280;\\n  t.notsubset = 0x2284;\\n  t.notsucceeds = 0x2281;\\n  t.notsuperset = 0x2285;\\n  t.nowarmenian = 0x0576;\\n  t.nparen = 0x24a9;\\n  t.nssquare = 0x33b1;\\n  t.nsuperior = 0x207f;\\n  t.ntilde = 0x00f1;\\n  t.nu = 0x03bd;\\n  t.nuhiragana = 0x306c;\\n  t.nukatakana = 0x30cc;\\n  t.nukatakanahalfwidth = 0xff87;\\n  t.nuktabengali = 0x09bc;\\n  t.nuktadeva = 0x093c;\\n  t.nuktagujarati = 0x0abc;\\n  t.nuktagurmukhi = 0x0a3c;\\n  t.numbersign = 0x0023;\\n  t.numbersignmonospace = 0xff03;\\n  t.numbersignsmall = 0xfe5f;\\n  t.numeralsigngreek = 0x0374;\\n  t.numeralsignlowergreek = 0x0375;\\n  t.numero = 0x2116;\\n  t.nun = 0x05e0;\\n  t.nundagesh = 0xfb40;\\n  t.nundageshhebrew = 0xfb40;\\n  t.nunhebrew = 0x05e0;\\n  t.nvsquare = 0x33b5;\\n  t.nwsquare = 0x33bb;\\n  t.nyabengali = 0x099e;\\n  t.nyadeva = 0x091e;\\n  t.nyagujarati = 0x0a9e;\\n  t.nyagurmukhi = 0x0a1e;\\n  t.o = 0x006f;\\n  t.oacute = 0x00f3;\\n  t.oangthai = 0x0e2d;\\n  t.obarred = 0x0275;\\n  t.obarredcyrillic = 0x04e9;\\n  t.obarreddieresiscyrillic = 0x04eb;\\n  t.obengali = 0x0993;\\n  t.obopomofo = 0x311b;\\n  t.obreve = 0x014f;\\n  t.ocandradeva = 0x0911;\\n  t.ocandragujarati = 0x0a91;\\n  t.ocandravowelsigndeva = 0x0949;\\n  t.ocandravowelsigngujarati = 0x0ac9;\\n  t.ocaron = 0x01d2;\\n  t.ocircle = 0x24de;\\n  t.ocircumflex = 0x00f4;\\n  t.ocircumflexacute = 0x1ed1;\\n  t.ocircumflexdotbelow = 0x1ed9;\\n  t.ocircumflexgrave = 0x1ed3;\\n  t.ocircumflexhookabove = 0x1ed5;\\n  t.ocircumflextilde = 0x1ed7;\\n  t.ocyrillic = 0x043e;\\n  t.odblacute = 0x0151;\\n  t.odblgrave = 0x020d;\\n  t.odeva = 0x0913;\\n  t.odieresis = 0x00f6;\\n  t.odieresiscyrillic = 0x04e7;\\n  t.odotbelow = 0x1ecd;\\n  t.oe = 0x0153;\\n  t.oekorean = 0x315a;\\n  t.ogonek = 0x02db;\\n  t.ogonekcmb = 0x0328;\\n  t.ograve = 0x00f2;\\n  t.ogujarati = 0x0a93;\\n  t.oharmenian = 0x0585;\\n  t.ohiragana = 0x304a;\\n  t.ohookabove = 0x1ecf;\\n  t.ohorn = 0x01a1;\\n  t.ohornacute = 0x1edb;\\n  t.ohorndotbelow = 0x1ee3;\\n  t.ohorngrave = 0x1edd;\\n  t.ohornhookabove = 0x1edf;\\n  t.ohorntilde = 0x1ee1;\\n  t.ohungarumlaut = 0x0151;\\n  t.oi = 0x01a3;\\n  t.oinvertedbreve = 0x020f;\\n  t.okatakana = 0x30aa;\\n  t.okatakanahalfwidth = 0xff75;\\n  t.okorean = 0x3157;\\n  t.olehebrew = 0x05ab;\\n  t.omacron = 0x014d;\\n  t.omacronacute = 0x1e53;\\n  t.omacrongrave = 0x1e51;\\n  t.omdeva = 0x0950;\\n  t.omega = 0x03c9;\\n  t.omega1 = 0x03d6;\\n  t.omegacyrillic = 0x0461;\\n  t.omegalatinclosed = 0x0277;\\n  t.omegaroundcyrillic = 0x047b;\\n  t.omegatitlocyrillic = 0x047d;\\n  t.omegatonos = 0x03ce;\\n  t.omgujarati = 0x0ad0;\\n  t.omicron = 0x03bf;\\n  t.omicrontonos = 0x03cc;\\n  t.omonospace = 0xff4f;\\n  t.one = 0x0031;\\n  t.onearabic = 0x0661;\\n  t.onebengali = 0x09e7;\\n  t.onecircle = 0x2460;\\n  t.onecircleinversesansserif = 0x278a;\\n  t.onedeva = 0x0967;\\n  t.onedotenleader = 0x2024;\\n  t.oneeighth = 0x215b;\\n  t.onefitted = 0xf6dc;\\n  t.onegujarati = 0x0ae7;\\n  t.onegurmukhi = 0x0a67;\\n  t.onehackarabic = 0x0661;\\n  t.onehalf = 0x00bd;\\n  t.onehangzhou = 0x3021;\\n  t.oneideographicparen = 0x3220;\\n  t.oneinferior = 0x2081;\\n  t.onemonospace = 0xff11;\\n  t.onenumeratorbengali = 0x09f4;\\n  t.oneoldstyle = 0xf731;\\n  t.oneparen = 0x2474;\\n  t.oneperiod = 0x2488;\\n  t.onepersian = 0x06f1;\\n  t.onequarter = 0x00bc;\\n  t.oneroman = 0x2170;\\n  t.onesuperior = 0x00b9;\\n  t.onethai = 0x0e51;\\n  t.onethird = 0x2153;\\n  t.oogonek = 0x01eb;\\n  t.oogonekmacron = 0x01ed;\\n  t.oogurmukhi = 0x0a13;\\n  t.oomatragurmukhi = 0x0a4b;\\n  t.oopen = 0x0254;\\n  t.oparen = 0x24aa;\\n  t.openbullet = 0x25e6;\\n  t.option = 0x2325;\\n  t.ordfeminine = 0x00aa;\\n  t.ordmasculine = 0x00ba;\\n  t.orthogonal = 0x221f;\\n  t.oshortdeva = 0x0912;\\n  t.oshortvowelsigndeva = 0x094a;\\n  t.oslash = 0x00f8;\\n  t.oslashacute = 0x01ff;\\n  t.osmallhiragana = 0x3049;\\n  t.osmallkatakana = 0x30a9;\\n  t.osmallkatakanahalfwidth = 0xff6b;\\n  t.ostrokeacute = 0x01ff;\\n  t.osuperior = 0xf6f0;\\n  t.otcyrillic = 0x047f;\\n  t.otilde = 0x00f5;\\n  t.otildeacute = 0x1e4d;\\n  t.otildedieresis = 0x1e4f;\\n  t.oubopomofo = 0x3121;\\n  t.overline = 0x203e;\\n  t.overlinecenterline = 0xfe4a;\\n  t.overlinecmb = 0x0305;\\n  t.overlinedashed = 0xfe49;\\n  t.overlinedblwavy = 0xfe4c;\\n  t.overlinewavy = 0xfe4b;\\n  t.overscore = 0x00af;\\n  t.ovowelsignbengali = 0x09cb;\\n  t.ovowelsigndeva = 0x094b;\\n  t.ovowelsigngujarati = 0x0acb;\\n  t.p = 0x0070;\\n  t.paampssquare = 0x3380;\\n  t.paasentosquare = 0x332b;\\n  t.pabengali = 0x09aa;\\n  t.pacute = 0x1e55;\\n  t.padeva = 0x092a;\\n  t.pagedown = 0x21df;\\n  t.pageup = 0x21de;\\n  t.pagujarati = 0x0aaa;\\n  t.pagurmukhi = 0x0a2a;\\n  t.pahiragana = 0x3071;\\n  t.paiyannoithai = 0x0e2f;\\n  t.pakatakana = 0x30d1;\\n  t.palatalizationcyrilliccmb = 0x0484;\\n  t.palochkacyrillic = 0x04c0;\\n  t.pansioskorean = 0x317f;\\n  t.paragraph = 0x00b6;\\n  t.parallel = 0x2225;\\n  t.parenleft = 0x0028;\\n  t.parenleftaltonearabic = 0xfd3e;\\n  t.parenleftbt = 0xf8ed;\\n  t.parenleftex = 0xf8ec;\\n  t.parenleftinferior = 0x208d;\\n  t.parenleftmonospace = 0xff08;\\n  t.parenleftsmall = 0xfe59;\\n  t.parenleftsuperior = 0x207d;\\n  t.parenlefttp = 0xf8eb;\\n  t.parenleftvertical = 0xfe35;\\n  t.parenright = 0x0029;\\n  t.parenrightaltonearabic = 0xfd3f;\\n  t.parenrightbt = 0xf8f8;\\n  t.parenrightex = 0xf8f7;\\n  t.parenrightinferior = 0x208e;\\n  t.parenrightmonospace = 0xff09;\\n  t.parenrightsmall = 0xfe5a;\\n  t.parenrightsuperior = 0x207e;\\n  t.parenrighttp = 0xf8f6;\\n  t.parenrightvertical = 0xfe36;\\n  t.partialdiff = 0x2202;\\n  t.paseqhebrew = 0x05c0;\\n  t.pashtahebrew = 0x0599;\\n  t.pasquare = 0x33a9;\\n  t.patah = 0x05b7;\\n  t.patah11 = 0x05b7;\\n  t.patah1d = 0x05b7;\\n  t.patah2a = 0x05b7;\\n  t.patahhebrew = 0x05b7;\\n  t.patahnarrowhebrew = 0x05b7;\\n  t.patahquarterhebrew = 0x05b7;\\n  t.patahwidehebrew = 0x05b7;\\n  t.pazerhebrew = 0x05a1;\\n  t.pbopomofo = 0x3106;\\n  t.pcircle = 0x24df;\\n  t.pdotaccent = 0x1e57;\\n  t.pe = 0x05e4;\\n  t.pecyrillic = 0x043f;\\n  t.pedagesh = 0xfb44;\\n  t.pedageshhebrew = 0xfb44;\\n  t.peezisquare = 0x333b;\\n  t.pefinaldageshhebrew = 0xfb43;\\n  t.peharabic = 0x067e;\\n  t.peharmenian = 0x057a;\\n  t.pehebrew = 0x05e4;\\n  t.pehfinalarabic = 0xfb57;\\n  t.pehinitialarabic = 0xfb58;\\n  t.pehiragana = 0x307a;\\n  t.pehmedialarabic = 0xfb59;\\n  t.pekatakana = 0x30da;\\n  t.pemiddlehookcyrillic = 0x04a7;\\n  t.perafehebrew = 0xfb4e;\\n  t.percent = 0x0025;\\n  t.percentarabic = 0x066a;\\n  t.percentmonospace = 0xff05;\\n  t.percentsmall = 0xfe6a;\\n  t.period = 0x002e;\\n  t.periodarmenian = 0x0589;\\n  t.periodcentered = 0x00b7;\\n  t.periodhalfwidth = 0xff61;\\n  t.periodinferior = 0xf6e7;\\n  t.periodmonospace = 0xff0e;\\n  t.periodsmall = 0xfe52;\\n  t.periodsuperior = 0xf6e8;\\n  t.perispomenigreekcmb = 0x0342;\\n  t.perpendicular = 0x22a5;\\n  t.perthousand = 0x2030;\\n  t.peseta = 0x20a7;\\n  t.pfsquare = 0x338a;\\n  t.phabengali = 0x09ab;\\n  t.phadeva = 0x092b;\\n  t.phagujarati = 0x0aab;\\n  t.phagurmukhi = 0x0a2b;\\n  t.phi = 0x03c6;\\n  t.phi1 = 0x03d5;\\n  t.phieuphacirclekorean = 0x327a;\\n  t.phieuphaparenkorean = 0x321a;\\n  t.phieuphcirclekorean = 0x326c;\\n  t.phieuphkorean = 0x314d;\\n  t.phieuphparenkorean = 0x320c;\\n  t.philatin = 0x0278;\\n  t.phinthuthai = 0x0e3a;\\n  t.phisymbolgreek = 0x03d5;\\n  t.phook = 0x01a5;\\n  t.phophanthai = 0x0e1e;\\n  t.phophungthai = 0x0e1c;\\n  t.phosamphaothai = 0x0e20;\\n  t.pi = 0x03c0;\\n  t.pieupacirclekorean = 0x3273;\\n  t.pieupaparenkorean = 0x3213;\\n  t.pieupcieuckorean = 0x3176;\\n  t.pieupcirclekorean = 0x3265;\\n  t.pieupkiyeokkorean = 0x3172;\\n  t.pieupkorean = 0x3142;\\n  t.pieupparenkorean = 0x3205;\\n  t.pieupsioskiyeokkorean = 0x3174;\\n  t.pieupsioskorean = 0x3144;\\n  t.pieupsiostikeutkorean = 0x3175;\\n  t.pieupthieuthkorean = 0x3177;\\n  t.pieuptikeutkorean = 0x3173;\\n  t.pihiragana = 0x3074;\\n  t.pikatakana = 0x30d4;\\n  t.pisymbolgreek = 0x03d6;\\n  t.piwrarmenian = 0x0583;\\n  t.planckover2pi = 0x210f;\\n  t.planckover2pi1 = 0x210f;\\n  t.plus = 0x002b;\\n  t.plusbelowcmb = 0x031f;\\n  t.pluscircle = 0x2295;\\n  t.plusminus = 0x00b1;\\n  t.plusmod = 0x02d6;\\n  t.plusmonospace = 0xff0b;\\n  t.plussmall = 0xfe62;\\n  t.plussuperior = 0x207a;\\n  t.pmonospace = 0xff50;\\n  t.pmsquare = 0x33d8;\\n  t.pohiragana = 0x307d;\\n  t.pointingindexdownwhite = 0x261f;\\n  t.pointingindexleftwhite = 0x261c;\\n  t.pointingindexrightwhite = 0x261e;\\n  t.pointingindexupwhite = 0x261d;\\n  t.pokatakana = 0x30dd;\\n  t.poplathai = 0x0e1b;\\n  t.postalmark = 0x3012;\\n  t.postalmarkface = 0x3020;\\n  t.pparen = 0x24ab;\\n  t.precedes = 0x227a;\\n  t.prescription = 0x211e;\\n  t.primemod = 0x02b9;\\n  t.primereversed = 0x2035;\\n  t.product = 0x220f;\\n  t.projective = 0x2305;\\n  t.prolongedkana = 0x30fc;\\n  t.propellor = 0x2318;\\n  t.propersubset = 0x2282;\\n  t.propersuperset = 0x2283;\\n  t.proportion = 0x2237;\\n  t.proportional = 0x221d;\\n  t.psi = 0x03c8;\\n  t.psicyrillic = 0x0471;\\n  t.psilipneumatacyrilliccmb = 0x0486;\\n  t.pssquare = 0x33b0;\\n  t.puhiragana = 0x3077;\\n  t.pukatakana = 0x30d7;\\n  t.pvsquare = 0x33b4;\\n  t.pwsquare = 0x33ba;\\n  t.q = 0x0071;\\n  t.qadeva = 0x0958;\\n  t.qadmahebrew = 0x05a8;\\n  t.qafarabic = 0x0642;\\n  t.qaffinalarabic = 0xfed6;\\n  t.qafinitialarabic = 0xfed7;\\n  t.qafmedialarabic = 0xfed8;\\n  t.qamats = 0x05b8;\\n  t.qamats10 = 0x05b8;\\n  t.qamats1a = 0x05b8;\\n  t.qamats1c = 0x05b8;\\n  t.qamats27 = 0x05b8;\\n  t.qamats29 = 0x05b8;\\n  t.qamats33 = 0x05b8;\\n  t.qamatsde = 0x05b8;\\n  t.qamatshebrew = 0x05b8;\\n  t.qamatsnarrowhebrew = 0x05b8;\\n  t.qamatsqatanhebrew = 0x05b8;\\n  t.qamatsqatannarrowhebrew = 0x05b8;\\n  t.qamatsqatanquarterhebrew = 0x05b8;\\n  t.qamatsqatanwidehebrew = 0x05b8;\\n  t.qamatsquarterhebrew = 0x05b8;\\n  t.qamatswidehebrew = 0x05b8;\\n  t.qarneyparahebrew = 0x059f;\\n  t.qbopomofo = 0x3111;\\n  t.qcircle = 0x24e0;\\n  t.qhook = 0x02a0;\\n  t.qmonospace = 0xff51;\\n  t.qof = 0x05e7;\\n  t.qofdagesh = 0xfb47;\\n  t.qofdageshhebrew = 0xfb47;\\n  t.qofhebrew = 0x05e7;\\n  t.qparen = 0x24ac;\\n  t.quarternote = 0x2669;\\n  t.qubuts = 0x05bb;\\n  t.qubuts18 = 0x05bb;\\n  t.qubuts25 = 0x05bb;\\n  t.qubuts31 = 0x05bb;\\n  t.qubutshebrew = 0x05bb;\\n  t.qubutsnarrowhebrew = 0x05bb;\\n  t.qubutsquarterhebrew = 0x05bb;\\n  t.qubutswidehebrew = 0x05bb;\\n  t.question = 0x003f;\\n  t.questionarabic = 0x061f;\\n  t.questionarmenian = 0x055e;\\n  t.questiondown = 0x00bf;\\n  t.questiondownsmall = 0xf7bf;\\n  t.questiongreek = 0x037e;\\n  t.questionmonospace = 0xff1f;\\n  t.questionsmall = 0xf73f;\\n  t.quotedbl = 0x0022;\\n  t.quotedblbase = 0x201e;\\n  t.quotedblleft = 0x201c;\\n  t.quotedblmonospace = 0xff02;\\n  t.quotedblprime = 0x301e;\\n  t.quotedblprimereversed = 0x301d;\\n  t.quotedblright = 0x201d;\\n  t.quoteleft = 0x2018;\\n  t.quoteleftreversed = 0x201b;\\n  t.quotereversed = 0x201b;\\n  t.quoteright = 0x2019;\\n  t.quoterightn = 0x0149;\\n  t.quotesinglbase = 0x201a;\\n  t.quotesingle = 0x0027;\\n  t.quotesinglemonospace = 0xff07;\\n  t.r = 0x0072;\\n  t.raarmenian = 0x057c;\\n  t.rabengali = 0x09b0;\\n  t.racute = 0x0155;\\n  t.radeva = 0x0930;\\n  t.radical = 0x221a;\\n  t.radicalex = 0xf8e5;\\n  t.radoverssquare = 0x33ae;\\n  t.radoverssquaredsquare = 0x33af;\\n  t.radsquare = 0x33ad;\\n  t.rafe = 0x05bf;\\n  t.rafehebrew = 0x05bf;\\n  t.ragujarati = 0x0ab0;\\n  t.ragurmukhi = 0x0a30;\\n  t.rahiragana = 0x3089;\\n  t.rakatakana = 0x30e9;\\n  t.rakatakanahalfwidth = 0xff97;\\n  t.ralowerdiagonalbengali = 0x09f1;\\n  t.ramiddlediagonalbengali = 0x09f0;\\n  t.ramshorn = 0x0264;\\n  t.ratio = 0x2236;\\n  t.rbopomofo = 0x3116;\\n  t.rcaron = 0x0159;\\n  t.rcedilla = 0x0157;\\n  t.rcircle = 0x24e1;\\n  t.rcommaaccent = 0x0157;\\n  t.rdblgrave = 0x0211;\\n  t.rdotaccent = 0x1e59;\\n  t.rdotbelow = 0x1e5b;\\n  t.rdotbelowmacron = 0x1e5d;\\n  t.referencemark = 0x203b;\\n  t.reflexsubset = 0x2286;\\n  t.reflexsuperset = 0x2287;\\n  t.registered = 0x00ae;\\n  t.registersans = 0xf8e8;\\n  t.registerserif = 0xf6da;\\n  t.reharabic = 0x0631;\\n  t.reharmenian = 0x0580;\\n  t.rehfinalarabic = 0xfeae;\\n  t.rehiragana = 0x308c;\\n  t.rekatakana = 0x30ec;\\n  t.rekatakanahalfwidth = 0xff9a;\\n  t.resh = 0x05e8;\\n  t.reshdageshhebrew = 0xfb48;\\n  t.reshhebrew = 0x05e8;\\n  t.reversedtilde = 0x223d;\\n  t.reviahebrew = 0x0597;\\n  t.reviamugrashhebrew = 0x0597;\\n  t.revlogicalnot = 0x2310;\\n  t.rfishhook = 0x027e;\\n  t.rfishhookreversed = 0x027f;\\n  t.rhabengali = 0x09dd;\\n  t.rhadeva = 0x095d;\\n  t.rho = 0x03c1;\\n  t.rhook = 0x027d;\\n  t.rhookturned = 0x027b;\\n  t.rhookturnedsuperior = 0x02b5;\\n  t.rhosymbolgreek = 0x03f1;\\n  t.rhotichookmod = 0x02de;\\n  t.rieulacirclekorean = 0x3271;\\n  t.rieulaparenkorean = 0x3211;\\n  t.rieulcirclekorean = 0x3263;\\n  t.rieulhieuhkorean = 0x3140;\\n  t.rieulkiyeokkorean = 0x313a;\\n  t.rieulkiyeoksioskorean = 0x3169;\\n  t.rieulkorean = 0x3139;\\n  t.rieulmieumkorean = 0x313b;\\n  t.rieulpansioskorean = 0x316c;\\n  t.rieulparenkorean = 0x3203;\\n  t.rieulphieuphkorean = 0x313f;\\n  t.rieulpieupkorean = 0x313c;\\n  t.rieulpieupsioskorean = 0x316b;\\n  t.rieulsioskorean = 0x313d;\\n  t.rieulthieuthkorean = 0x313e;\\n  t.rieultikeutkorean = 0x316a;\\n  t.rieulyeorinhieuhkorean = 0x316d;\\n  t.rightangle = 0x221f;\\n  t.righttackbelowcmb = 0x0319;\\n  t.righttriangle = 0x22bf;\\n  t.rihiragana = 0x308a;\\n  t.rikatakana = 0x30ea;\\n  t.rikatakanahalfwidth = 0xff98;\\n  t.ring = 0x02da;\\n  t.ringbelowcmb = 0x0325;\\n  t.ringcmb = 0x030a;\\n  t.ringhalfleft = 0x02bf;\\n  t.ringhalfleftarmenian = 0x0559;\\n  t.ringhalfleftbelowcmb = 0x031c;\\n  t.ringhalfleftcentered = 0x02d3;\\n  t.ringhalfright = 0x02be;\\n  t.ringhalfrightbelowcmb = 0x0339;\\n  t.ringhalfrightcentered = 0x02d2;\\n  t.rinvertedbreve = 0x0213;\\n  t.rittorusquare = 0x3351;\\n  t.rlinebelow = 0x1e5f;\\n  t.rlongleg = 0x027c;\\n  t.rlonglegturned = 0x027a;\\n  t.rmonospace = 0xff52;\\n  t.rohiragana = 0x308d;\\n  t.rokatakana = 0x30ed;\\n  t.rokatakanahalfwidth = 0xff9b;\\n  t.roruathai = 0x0e23;\\n  t.rparen = 0x24ad;\\n  t.rrabengali = 0x09dc;\\n  t.rradeva = 0x0931;\\n  t.rragurmukhi = 0x0a5c;\\n  t.rreharabic = 0x0691;\\n  t.rrehfinalarabic = 0xfb8d;\\n  t.rrvocalicbengali = 0x09e0;\\n  t.rrvocalicdeva = 0x0960;\\n  t.rrvocalicgujarati = 0x0ae0;\\n  t.rrvocalicvowelsignbengali = 0x09c4;\\n  t.rrvocalicvowelsigndeva = 0x0944;\\n  t.rrvocalicvowelsigngujarati = 0x0ac4;\\n  t.rsuperior = 0xf6f1;\\n  t.rtblock = 0x2590;\\n  t.rturned = 0x0279;\\n  t.rturnedsuperior = 0x02b4;\\n  t.ruhiragana = 0x308b;\\n  t.rukatakana = 0x30eb;\\n  t.rukatakanahalfwidth = 0xff99;\\n  t.rupeemarkbengali = 0x09f2;\\n  t.rupeesignbengali = 0x09f3;\\n  t.rupiah = 0xf6dd;\\n  t.ruthai = 0x0e24;\\n  t.rvocalicbengali = 0x098b;\\n  t.rvocalicdeva = 0x090b;\\n  t.rvocalicgujarati = 0x0a8b;\\n  t.rvocalicvowelsignbengali = 0x09c3;\\n  t.rvocalicvowelsigndeva = 0x0943;\\n  t.rvocalicvowelsigngujarati = 0x0ac3;\\n  t.s = 0x0073;\\n  t.sabengali = 0x09b8;\\n  t.sacute = 0x015b;\\n  t.sacutedotaccent = 0x1e65;\\n  t.sadarabic = 0x0635;\\n  t.sadeva = 0x0938;\\n  t.sadfinalarabic = 0xfeba;\\n  t.sadinitialarabic = 0xfebb;\\n  t.sadmedialarabic = 0xfebc;\\n  t.sagujarati = 0x0ab8;\\n  t.sagurmukhi = 0x0a38;\\n  t.sahiragana = 0x3055;\\n  t.sakatakana = 0x30b5;\\n  t.sakatakanahalfwidth = 0xff7b;\\n  t.sallallahoualayhewasallamarabic = 0xfdfa;\\n  t.samekh = 0x05e1;\\n  t.samekhdagesh = 0xfb41;\\n  t.samekhdageshhebrew = 0xfb41;\\n  t.samekhhebrew = 0x05e1;\\n  t.saraaathai = 0x0e32;\\n  t.saraaethai = 0x0e41;\\n  t.saraaimaimalaithai = 0x0e44;\\n  t.saraaimaimuanthai = 0x0e43;\\n  t.saraamthai = 0x0e33;\\n  t.saraathai = 0x0e30;\\n  t.saraethai = 0x0e40;\\n  t.saraiileftthai = 0xf886;\\n  t.saraiithai = 0x0e35;\\n  t.saraileftthai = 0xf885;\\n  t.saraithai = 0x0e34;\\n  t.saraothai = 0x0e42;\\n  t.saraueeleftthai = 0xf888;\\n  t.saraueethai = 0x0e37;\\n  t.saraueleftthai = 0xf887;\\n  t.sarauethai = 0x0e36;\\n  t.sarauthai = 0x0e38;\\n  t.sarauuthai = 0x0e39;\\n  t.sbopomofo = 0x3119;\\n  t.scaron = 0x0161;\\n  t.scarondotaccent = 0x1e67;\\n  t.scedilla = 0x015f;\\n  t.schwa = 0x0259;\\n  t.schwacyrillic = 0x04d9;\\n  t.schwadieresiscyrillic = 0x04db;\\n  t.schwahook = 0x025a;\\n  t.scircle = 0x24e2;\\n  t.scircumflex = 0x015d;\\n  t.scommaaccent = 0x0219;\\n  t.sdotaccent = 0x1e61;\\n  t.sdotbelow = 0x1e63;\\n  t.sdotbelowdotaccent = 0x1e69;\\n  t.seagullbelowcmb = 0x033c;\\n  t.second = 0x2033;\\n  t.secondtonechinese = 0x02ca;\\n  t.section = 0x00a7;\\n  t.seenarabic = 0x0633;\\n  t.seenfinalarabic = 0xfeb2;\\n  t.seeninitialarabic = 0xfeb3;\\n  t.seenmedialarabic = 0xfeb4;\\n  t.segol = 0x05b6;\\n  t.segol13 = 0x05b6;\\n  t.segol1f = 0x05b6;\\n  t.segol2c = 0x05b6;\\n  t.segolhebrew = 0x05b6;\\n  t.segolnarrowhebrew = 0x05b6;\\n  t.segolquarterhebrew = 0x05b6;\\n  t.segoltahebrew = 0x0592;\\n  t.segolwidehebrew = 0x05b6;\\n  t.seharmenian = 0x057d;\\n  t.sehiragana = 0x305b;\\n  t.sekatakana = 0x30bb;\\n  t.sekatakanahalfwidth = 0xff7e;\\n  t.semicolon = 0x003b;\\n  t.semicolonarabic = 0x061b;\\n  t.semicolonmonospace = 0xff1b;\\n  t.semicolonsmall = 0xfe54;\\n  t.semivoicedmarkkana = 0x309c;\\n  t.semivoicedmarkkanahalfwidth = 0xff9f;\\n  t.sentisquare = 0x3322;\\n  t.sentosquare = 0x3323;\\n  t.seven = 0x0037;\\n  t.sevenarabic = 0x0667;\\n  t.sevenbengali = 0x09ed;\\n  t.sevencircle = 0x2466;\\n  t.sevencircleinversesansserif = 0x2790;\\n  t.sevendeva = 0x096d;\\n  t.seveneighths = 0x215e;\\n  t.sevengujarati = 0x0aed;\\n  t.sevengurmukhi = 0x0a6d;\\n  t.sevenhackarabic = 0x0667;\\n  t.sevenhangzhou = 0x3027;\\n  t.sevenideographicparen = 0x3226;\\n  t.seveninferior = 0x2087;\\n  t.sevenmonospace = 0xff17;\\n  t.sevenoldstyle = 0xf737;\\n  t.sevenparen = 0x247a;\\n  t.sevenperiod = 0x248e;\\n  t.sevenpersian = 0x06f7;\\n  t.sevenroman = 0x2176;\\n  t.sevensuperior = 0x2077;\\n  t.seventeencircle = 0x2470;\\n  t.seventeenparen = 0x2484;\\n  t.seventeenperiod = 0x2498;\\n  t.seventhai = 0x0e57;\\n  t.sfthyphen = 0x00ad;\\n  t.shaarmenian = 0x0577;\\n  t.shabengali = 0x09b6;\\n  t.shacyrillic = 0x0448;\\n  t.shaddaarabic = 0x0651;\\n  t.shaddadammaarabic = 0xfc61;\\n  t.shaddadammatanarabic = 0xfc5e;\\n  t.shaddafathaarabic = 0xfc60;\\n  t.shaddakasraarabic = 0xfc62;\\n  t.shaddakasratanarabic = 0xfc5f;\\n  t.shade = 0x2592;\\n  t.shadedark = 0x2593;\\n  t.shadelight = 0x2591;\\n  t.shademedium = 0x2592;\\n  t.shadeva = 0x0936;\\n  t.shagujarati = 0x0ab6;\\n  t.shagurmukhi = 0x0a36;\\n  t.shalshelethebrew = 0x0593;\\n  t.shbopomofo = 0x3115;\\n  t.shchacyrillic = 0x0449;\\n  t.sheenarabic = 0x0634;\\n  t.sheenfinalarabic = 0xfeb6;\\n  t.sheeninitialarabic = 0xfeb7;\\n  t.sheenmedialarabic = 0xfeb8;\\n  t.sheicoptic = 0x03e3;\\n  t.sheqel = 0x20aa;\\n  t.sheqelhebrew = 0x20aa;\\n  t.sheva = 0x05b0;\\n  t.sheva115 = 0x05b0;\\n  t.sheva15 = 0x05b0;\\n  t.sheva22 = 0x05b0;\\n  t.sheva2e = 0x05b0;\\n  t.shevahebrew = 0x05b0;\\n  t.shevanarrowhebrew = 0x05b0;\\n  t.shevaquarterhebrew = 0x05b0;\\n  t.shevawidehebrew = 0x05b0;\\n  t.shhacyrillic = 0x04bb;\\n  t.shimacoptic = 0x03ed;\\n  t.shin = 0x05e9;\\n  t.shindagesh = 0xfb49;\\n  t.shindageshhebrew = 0xfb49;\\n  t.shindageshshindot = 0xfb2c;\\n  t.shindageshshindothebrew = 0xfb2c;\\n  t.shindageshsindot = 0xfb2d;\\n  t.shindageshsindothebrew = 0xfb2d;\\n  t.shindothebrew = 0x05c1;\\n  t.shinhebrew = 0x05e9;\\n  t.shinshindot = 0xfb2a;\\n  t.shinshindothebrew = 0xfb2a;\\n  t.shinsindot = 0xfb2b;\\n  t.shinsindothebrew = 0xfb2b;\\n  t.shook = 0x0282;\\n  t.sigma = 0x03c3;\\n  t.sigma1 = 0x03c2;\\n  t.sigmafinal = 0x03c2;\\n  t.sigmalunatesymbolgreek = 0x03f2;\\n  t.sihiragana = 0x3057;\\n  t.sikatakana = 0x30b7;\\n  t.sikatakanahalfwidth = 0xff7c;\\n  t.siluqhebrew = 0x05bd;\\n  t.siluqlefthebrew = 0x05bd;\\n  t.similar = 0x223c;\\n  t.sindothebrew = 0x05c2;\\n  t.siosacirclekorean = 0x3274;\\n  t.siosaparenkorean = 0x3214;\\n  t.sioscieuckorean = 0x317e;\\n  t.sioscirclekorean = 0x3266;\\n  t.sioskiyeokkorean = 0x317a;\\n  t.sioskorean = 0x3145;\\n  t.siosnieunkorean = 0x317b;\\n  t.siosparenkorean = 0x3206;\\n  t.siospieupkorean = 0x317d;\\n  t.siostikeutkorean = 0x317c;\\n  t.six = 0x0036;\\n  t.sixarabic = 0x0666;\\n  t.sixbengali = 0x09ec;\\n  t.sixcircle = 0x2465;\\n  t.sixcircleinversesansserif = 0x278f;\\n  t.sixdeva = 0x096c;\\n  t.sixgujarati = 0x0aec;\\n  t.sixgurmukhi = 0x0a6c;\\n  t.sixhackarabic = 0x0666;\\n  t.sixhangzhou = 0x3026;\\n  t.sixideographicparen = 0x3225;\\n  t.sixinferior = 0x2086;\\n  t.sixmonospace = 0xff16;\\n  t.sixoldstyle = 0xf736;\\n  t.sixparen = 0x2479;\\n  t.sixperiod = 0x248d;\\n  t.sixpersian = 0x06f6;\\n  t.sixroman = 0x2175;\\n  t.sixsuperior = 0x2076;\\n  t.sixteencircle = 0x246f;\\n  t.sixteencurrencydenominatorbengali = 0x09f9;\\n  t.sixteenparen = 0x2483;\\n  t.sixteenperiod = 0x2497;\\n  t.sixthai = 0x0e56;\\n  t.slash = 0x002f;\\n  t.slashmonospace = 0xff0f;\\n  t.slong = 0x017f;\\n  t.slongdotaccent = 0x1e9b;\\n  t.smileface = 0x263a;\\n  t.smonospace = 0xff53;\\n  t.sofpasuqhebrew = 0x05c3;\\n  t.softhyphen = 0x00ad;\\n  t.softsigncyrillic = 0x044c;\\n  t.sohiragana = 0x305d;\\n  t.sokatakana = 0x30bd;\\n  t.sokatakanahalfwidth = 0xff7f;\\n  t.soliduslongoverlaycmb = 0x0338;\\n  t.solidusshortoverlaycmb = 0x0337;\\n  t.sorusithai = 0x0e29;\\n  t.sosalathai = 0x0e28;\\n  t.sosothai = 0x0e0b;\\n  t.sosuathai = 0x0e2a;\\n  t.space = 0x0020;\\n  t.spacehackarabic = 0x0020;\\n  t.spade = 0x2660;\\n  t.spadesuitblack = 0x2660;\\n  t.spadesuitwhite = 0x2664;\\n  t.sparen = 0x24ae;\\n  t.squarebelowcmb = 0x033b;\\n  t.squarecc = 0x33c4;\\n  t.squarecm = 0x339d;\\n  t.squarediagonalcrosshatchfill = 0x25a9;\\n  t.squarehorizontalfill = 0x25a4;\\n  t.squarekg = 0x338f;\\n  t.squarekm = 0x339e;\\n  t.squarekmcapital = 0x33ce;\\n  t.squareln = 0x33d1;\\n  t.squarelog = 0x33d2;\\n  t.squaremg = 0x338e;\\n  t.squaremil = 0x33d5;\\n  t.squaremm = 0x339c;\\n  t.squaremsquared = 0x33a1;\\n  t.squareorthogonalcrosshatchfill = 0x25a6;\\n  t.squareupperlefttolowerrightfill = 0x25a7;\\n  t.squareupperrighttolowerleftfill = 0x25a8;\\n  t.squareverticalfill = 0x25a5;\\n  t.squarewhitewithsmallblack = 0x25a3;\\n  t.srsquare = 0x33db;\\n  t.ssabengali = 0x09b7;\\n  t.ssadeva = 0x0937;\\n  t.ssagujarati = 0x0ab7;\\n  t.ssangcieuckorean = 0x3149;\\n  t.ssanghieuhkorean = 0x3185;\\n  t.ssangieungkorean = 0x3180;\\n  t.ssangkiyeokkorean = 0x3132;\\n  t.ssangnieunkorean = 0x3165;\\n  t.ssangpieupkorean = 0x3143;\\n  t.ssangsioskorean = 0x3146;\\n  t.ssangtikeutkorean = 0x3138;\\n  t.ssuperior = 0xf6f2;\\n  t.sterling = 0x00a3;\\n  t.sterlingmonospace = 0xffe1;\\n  t.strokelongoverlaycmb = 0x0336;\\n  t.strokeshortoverlaycmb = 0x0335;\\n  t.subset = 0x2282;\\n  t.subsetnotequal = 0x228a;\\n  t.subsetorequal = 0x2286;\\n  t.succeeds = 0x227b;\\n  t.suchthat = 0x220b;\\n  t.suhiragana = 0x3059;\\n  t.sukatakana = 0x30b9;\\n  t.sukatakanahalfwidth = 0xff7d;\\n  t.sukunarabic = 0x0652;\\n  t.summation = 0x2211;\\n  t.sun = 0x263c;\\n  t.superset = 0x2283;\\n  t.supersetnotequal = 0x228b;\\n  t.supersetorequal = 0x2287;\\n  t.svsquare = 0x33dc;\\n  t.syouwaerasquare = 0x337c;\\n  t.t = 0x0074;\\n  t.tabengali = 0x09a4;\\n  t.tackdown = 0x22a4;\\n  t.tackleft = 0x22a3;\\n  t.tadeva = 0x0924;\\n  t.tagujarati = 0x0aa4;\\n  t.tagurmukhi = 0x0a24;\\n  t.taharabic = 0x0637;\\n  t.tahfinalarabic = 0xfec2;\\n  t.tahinitialarabic = 0xfec3;\\n  t.tahiragana = 0x305f;\\n  t.tahmedialarabic = 0xfec4;\\n  t.taisyouerasquare = 0x337d;\\n  t.takatakana = 0x30bf;\\n  t.takatakanahalfwidth = 0xff80;\\n  t.tatweelarabic = 0x0640;\\n  t.tau = 0x03c4;\\n  t.tav = 0x05ea;\\n  t.tavdages = 0xfb4a;\\n  t.tavdagesh = 0xfb4a;\\n  t.tavdageshhebrew = 0xfb4a;\\n  t.tavhebrew = 0x05ea;\\n  t.tbar = 0x0167;\\n  t.tbopomofo = 0x310a;\\n  t.tcaron = 0x0165;\\n  t.tccurl = 0x02a8;\\n  t.tcedilla = 0x0163;\\n  t.tcheharabic = 0x0686;\\n  t.tchehfinalarabic = 0xfb7b;\\n  t.tchehinitialarabic = 0xfb7c;\\n  t.tchehmedialarabic = 0xfb7d;\\n  t.tcircle = 0x24e3;\\n  t.tcircumflexbelow = 0x1e71;\\n  t.tcommaaccent = 0x0163;\\n  t.tdieresis = 0x1e97;\\n  t.tdotaccent = 0x1e6b;\\n  t.tdotbelow = 0x1e6d;\\n  t.tecyrillic = 0x0442;\\n  t.tedescendercyrillic = 0x04ad;\\n  t.teharabic = 0x062a;\\n  t.tehfinalarabic = 0xfe96;\\n  t.tehhahinitialarabic = 0xfca2;\\n  t.tehhahisolatedarabic = 0xfc0c;\\n  t.tehinitialarabic = 0xfe97;\\n  t.tehiragana = 0x3066;\\n  t.tehjeeminitialarabic = 0xfca1;\\n  t.tehjeemisolatedarabic = 0xfc0b;\\n  t.tehmarbutaarabic = 0x0629;\\n  t.tehmarbutafinalarabic = 0xfe94;\\n  t.tehmedialarabic = 0xfe98;\\n  t.tehmeeminitialarabic = 0xfca4;\\n  t.tehmeemisolatedarabic = 0xfc0e;\\n  t.tehnoonfinalarabic = 0xfc73;\\n  t.tekatakana = 0x30c6;\\n  t.tekatakanahalfwidth = 0xff83;\\n  t.telephone = 0x2121;\\n  t.telephoneblack = 0x260e;\\n  t.telishagedolahebrew = 0x05a0;\\n  t.telishaqetanahebrew = 0x05a9;\\n  t.tencircle = 0x2469;\\n  t.tenideographicparen = 0x3229;\\n  t.tenparen = 0x247d;\\n  t.tenperiod = 0x2491;\\n  t.tenroman = 0x2179;\\n  t.tesh = 0x02a7;\\n  t.tet = 0x05d8;\\n  t.tetdagesh = 0xfb38;\\n  t.tetdageshhebrew = 0xfb38;\\n  t.tethebrew = 0x05d8;\\n  t.tetsecyrillic = 0x04b5;\\n  t.tevirhebrew = 0x059b;\\n  t.tevirlefthebrew = 0x059b;\\n  t.thabengali = 0x09a5;\\n  t.thadeva = 0x0925;\\n  t.thagujarati = 0x0aa5;\\n  t.thagurmukhi = 0x0a25;\\n  t.thalarabic = 0x0630;\\n  t.thalfinalarabic = 0xfeac;\\n  t.thanthakhatlowleftthai = 0xf898;\\n  t.thanthakhatlowrightthai = 0xf897;\\n  t.thanthakhatthai = 0x0e4c;\\n  t.thanthakhatupperleftthai = 0xf896;\\n  t.theharabic = 0x062b;\\n  t.thehfinalarabic = 0xfe9a;\\n  t.thehinitialarabic = 0xfe9b;\\n  t.thehmedialarabic = 0xfe9c;\\n  t.thereexists = 0x2203;\\n  t.therefore = 0x2234;\\n  t.theta = 0x03b8;\\n  t.theta1 = 0x03d1;\\n  t.thetasymbolgreek = 0x03d1;\\n  t.thieuthacirclekorean = 0x3279;\\n  t.thieuthaparenkorean = 0x3219;\\n  t.thieuthcirclekorean = 0x326b;\\n  t.thieuthkorean = 0x314c;\\n  t.thieuthparenkorean = 0x320b;\\n  t.thirteencircle = 0x246c;\\n  t.thirteenparen = 0x2480;\\n  t.thirteenperiod = 0x2494;\\n  t.thonangmonthothai = 0x0e11;\\n  t.thook = 0x01ad;\\n  t.thophuthaothai = 0x0e12;\\n  t.thorn = 0x00fe;\\n  t.thothahanthai = 0x0e17;\\n  t.thothanthai = 0x0e10;\\n  t.thothongthai = 0x0e18;\\n  t.thothungthai = 0x0e16;\\n  t.thousandcyrillic = 0x0482;\\n  t.thousandsseparatorarabic = 0x066c;\\n  t.thousandsseparatorpersian = 0x066c;\\n  t.three = 0x0033;\\n  t.threearabic = 0x0663;\\n  t.threebengali = 0x09e9;\\n  t.threecircle = 0x2462;\\n  t.threecircleinversesansserif = 0x278c;\\n  t.threedeva = 0x0969;\\n  t.threeeighths = 0x215c;\\n  t.threegujarati = 0x0ae9;\\n  t.threegurmukhi = 0x0a69;\\n  t.threehackarabic = 0x0663;\\n  t.threehangzhou = 0x3023;\\n  t.threeideographicparen = 0x3222;\\n  t.threeinferior = 0x2083;\\n  t.threemonospace = 0xff13;\\n  t.threenumeratorbengali = 0x09f6;\\n  t.threeoldstyle = 0xf733;\\n  t.threeparen = 0x2476;\\n  t.threeperiod = 0x248a;\\n  t.threepersian = 0x06f3;\\n  t.threequarters = 0x00be;\\n  t.threequartersemdash = 0xf6de;\\n  t.threeroman = 0x2172;\\n  t.threesuperior = 0x00b3;\\n  t.threethai = 0x0e53;\\n  t.thzsquare = 0x3394;\\n  t.tihiragana = 0x3061;\\n  t.tikatakana = 0x30c1;\\n  t.tikatakanahalfwidth = 0xff81;\\n  t.tikeutacirclekorean = 0x3270;\\n  t.tikeutaparenkorean = 0x3210;\\n  t.tikeutcirclekorean = 0x3262;\\n  t.tikeutkorean = 0x3137;\\n  t.tikeutparenkorean = 0x3202;\\n  t.tilde = 0x02dc;\\n  t.tildebelowcmb = 0x0330;\\n  t.tildecmb = 0x0303;\\n  t.tildecomb = 0x0303;\\n  t.tildedoublecmb = 0x0360;\\n  t.tildeoperator = 0x223c;\\n  t.tildeoverlaycmb = 0x0334;\\n  t.tildeverticalcmb = 0x033e;\\n  t.timescircle = 0x2297;\\n  t.tipehahebrew = 0x0596;\\n  t.tipehalefthebrew = 0x0596;\\n  t.tippigurmukhi = 0x0a70;\\n  t.titlocyrilliccmb = 0x0483;\\n  t.tiwnarmenian = 0x057f;\\n  t.tlinebelow = 0x1e6f;\\n  t.tmonospace = 0xff54;\\n  t.toarmenian = 0x0569;\\n  t.tohiragana = 0x3068;\\n  t.tokatakana = 0x30c8;\\n  t.tokatakanahalfwidth = 0xff84;\\n  t.tonebarextrahighmod = 0x02e5;\\n  t.tonebarextralowmod = 0x02e9;\\n  t.tonebarhighmod = 0x02e6;\\n  t.tonebarlowmod = 0x02e8;\\n  t.tonebarmidmod = 0x02e7;\\n  t.tonefive = 0x01bd;\\n  t.tonesix = 0x0185;\\n  t.tonetwo = 0x01a8;\\n  t.tonos = 0x0384;\\n  t.tonsquare = 0x3327;\\n  t.topatakthai = 0x0e0f;\\n  t.tortoiseshellbracketleft = 0x3014;\\n  t.tortoiseshellbracketleftsmall = 0xfe5d;\\n  t.tortoiseshellbracketleftvertical = 0xfe39;\\n  t.tortoiseshellbracketright = 0x3015;\\n  t.tortoiseshellbracketrightsmall = 0xfe5e;\\n  t.tortoiseshellbracketrightvertical = 0xfe3a;\\n  t.totaothai = 0x0e15;\\n  t.tpalatalhook = 0x01ab;\\n  t.tparen = 0x24af;\\n  t.trademark = 0x2122;\\n  t.trademarksans = 0xf8ea;\\n  t.trademarkserif = 0xf6db;\\n  t.tretroflexhook = 0x0288;\\n  t.triagdn = 0x25bc;\\n  t.triaglf = 0x25c4;\\n  t.triagrt = 0x25ba;\\n  t.triagup = 0x25b2;\\n  t.ts = 0x02a6;\\n  t.tsadi = 0x05e6;\\n  t.tsadidagesh = 0xfb46;\\n  t.tsadidageshhebrew = 0xfb46;\\n  t.tsadihebrew = 0x05e6;\\n  t.tsecyrillic = 0x0446;\\n  t.tsere = 0x05b5;\\n  t.tsere12 = 0x05b5;\\n  t.tsere1e = 0x05b5;\\n  t.tsere2b = 0x05b5;\\n  t.tserehebrew = 0x05b5;\\n  t.tserenarrowhebrew = 0x05b5;\\n  t.tserequarterhebrew = 0x05b5;\\n  t.tserewidehebrew = 0x05b5;\\n  t.tshecyrillic = 0x045b;\\n  t.tsuperior = 0xf6f3;\\n  t.ttabengali = 0x099f;\\n  t.ttadeva = 0x091f;\\n  t.ttagujarati = 0x0a9f;\\n  t.ttagurmukhi = 0x0a1f;\\n  t.tteharabic = 0x0679;\\n  t.ttehfinalarabic = 0xfb67;\\n  t.ttehinitialarabic = 0xfb68;\\n  t.ttehmedialarabic = 0xfb69;\\n  t.tthabengali = 0x09a0;\\n  t.tthadeva = 0x0920;\\n  t.tthagujarati = 0x0aa0;\\n  t.tthagurmukhi = 0x0a20;\\n  t.tturned = 0x0287;\\n  t.tuhiragana = 0x3064;\\n  t.tukatakana = 0x30c4;\\n  t.tukatakanahalfwidth = 0xff82;\\n  t.tusmallhiragana = 0x3063;\\n  t.tusmallkatakana = 0x30c3;\\n  t.tusmallkatakanahalfwidth = 0xff6f;\\n  t.twelvecircle = 0x246b;\\n  t.twelveparen = 0x247f;\\n  t.twelveperiod = 0x2493;\\n  t.twelveroman = 0x217b;\\n  t.twentycircle = 0x2473;\\n  t.twentyhangzhou = 0x5344;\\n  t.twentyparen = 0x2487;\\n  t.twentyperiod = 0x249b;\\n  t.two = 0x0032;\\n  t.twoarabic = 0x0662;\\n  t.twobengali = 0x09e8;\\n  t.twocircle = 0x2461;\\n  t.twocircleinversesansserif = 0x278b;\\n  t.twodeva = 0x0968;\\n  t.twodotenleader = 0x2025;\\n  t.twodotleader = 0x2025;\\n  t.twodotleadervertical = 0xfe30;\\n  t.twogujarati = 0x0ae8;\\n  t.twogurmukhi = 0x0a68;\\n  t.twohackarabic = 0x0662;\\n  t.twohangzhou = 0x3022;\\n  t.twoideographicparen = 0x3221;\\n  t.twoinferior = 0x2082;\\n  t.twomonospace = 0xff12;\\n  t.twonumeratorbengali = 0x09f5;\\n  t.twooldstyle = 0xf732;\\n  t.twoparen = 0x2475;\\n  t.twoperiod = 0x2489;\\n  t.twopersian = 0x06f2;\\n  t.tworoman = 0x2171;\\n  t.twostroke = 0x01bb;\\n  t.twosuperior = 0x00b2;\\n  t.twothai = 0x0e52;\\n  t.twothirds = 0x2154;\\n  t.u = 0x0075;\\n  t.uacute = 0x00fa;\\n  t.ubar = 0x0289;\\n  t.ubengali = 0x0989;\\n  t.ubopomofo = 0x3128;\\n  t.ubreve = 0x016d;\\n  t.ucaron = 0x01d4;\\n  t.ucircle = 0x24e4;\\n  t.ucircumflex = 0x00fb;\\n  t.ucircumflexbelow = 0x1e77;\\n  t.ucyrillic = 0x0443;\\n  t.udattadeva = 0x0951;\\n  t.udblacute = 0x0171;\\n  t.udblgrave = 0x0215;\\n  t.udeva = 0x0909;\\n  t.udieresis = 0x00fc;\\n  t.udieresisacute = 0x01d8;\\n  t.udieresisbelow = 0x1e73;\\n  t.udieresiscaron = 0x01da;\\n  t.udieresiscyrillic = 0x04f1;\\n  t.udieresisgrave = 0x01dc;\\n  t.udieresismacron = 0x01d6;\\n  t.udotbelow = 0x1ee5;\\n  t.ugrave = 0x00f9;\\n  t.ugujarati = 0x0a89;\\n  t.ugurmukhi = 0x0a09;\\n  t.uhiragana = 0x3046;\\n  t.uhookabove = 0x1ee7;\\n  t.uhorn = 0x01b0;\\n  t.uhornacute = 0x1ee9;\\n  t.uhorndotbelow = 0x1ef1;\\n  t.uhorngrave = 0x1eeb;\\n  t.uhornhookabove = 0x1eed;\\n  t.uhorntilde = 0x1eef;\\n  t.uhungarumlaut = 0x0171;\\n  t.uhungarumlautcyrillic = 0x04f3;\\n  t.uinvertedbreve = 0x0217;\\n  t.ukatakana = 0x30a6;\\n  t.ukatakanahalfwidth = 0xff73;\\n  t.ukcyrillic = 0x0479;\\n  t.ukorean = 0x315c;\\n  t.umacron = 0x016b;\\n  t.umacroncyrillic = 0x04ef;\\n  t.umacrondieresis = 0x1e7b;\\n  t.umatragurmukhi = 0x0a41;\\n  t.umonospace = 0xff55;\\n  t.underscore = 0x005f;\\n  t.underscoredbl = 0x2017;\\n  t.underscoremonospace = 0xff3f;\\n  t.underscorevertical = 0xfe33;\\n  t.underscorewavy = 0xfe4f;\\n  t.union = 0x222a;\\n  t.universal = 0x2200;\\n  t.uogonek = 0x0173;\\n  t.uparen = 0x24b0;\\n  t.upblock = 0x2580;\\n  t.upperdothebrew = 0x05c4;\\n  t.upsilon = 0x03c5;\\n  t.upsilondieresis = 0x03cb;\\n  t.upsilondieresistonos = 0x03b0;\\n  t.upsilonlatin = 0x028a;\\n  t.upsilontonos = 0x03cd;\\n  t.uptackbelowcmb = 0x031d;\\n  t.uptackmod = 0x02d4;\\n  t.uragurmukhi = 0x0a73;\\n  t.uring = 0x016f;\\n  t.ushortcyrillic = 0x045e;\\n  t.usmallhiragana = 0x3045;\\n  t.usmallkatakana = 0x30a5;\\n  t.usmallkatakanahalfwidth = 0xff69;\\n  t.ustraightcyrillic = 0x04af;\\n  t.ustraightstrokecyrillic = 0x04b1;\\n  t.utilde = 0x0169;\\n  t.utildeacute = 0x1e79;\\n  t.utildebelow = 0x1e75;\\n  t.uubengali = 0x098a;\\n  t.uudeva = 0x090a;\\n  t.uugujarati = 0x0a8a;\\n  t.uugurmukhi = 0x0a0a;\\n  t.uumatragurmukhi = 0x0a42;\\n  t.uuvowelsignbengali = 0x09c2;\\n  t.uuvowelsigndeva = 0x0942;\\n  t.uuvowelsigngujarati = 0x0ac2;\\n  t.uvowelsignbengali = 0x09c1;\\n  t.uvowelsigndeva = 0x0941;\\n  t.uvowelsigngujarati = 0x0ac1;\\n  t.v = 0x0076;\\n  t.vadeva = 0x0935;\\n  t.vagujarati = 0x0ab5;\\n  t.vagurmukhi = 0x0a35;\\n  t.vakatakana = 0x30f7;\\n  t.vav = 0x05d5;\\n  t.vavdagesh = 0xfb35;\\n  t.vavdagesh65 = 0xfb35;\\n  t.vavdageshhebrew = 0xfb35;\\n  t.vavhebrew = 0x05d5;\\n  t.vavholam = 0xfb4b;\\n  t.vavholamhebrew = 0xfb4b;\\n  t.vavvavhebrew = 0x05f0;\\n  t.vavyodhebrew = 0x05f1;\\n  t.vcircle = 0x24e5;\\n  t.vdotbelow = 0x1e7f;\\n  t.vecyrillic = 0x0432;\\n  t.veharabic = 0x06a4;\\n  t.vehfinalarabic = 0xfb6b;\\n  t.vehinitialarabic = 0xfb6c;\\n  t.vehmedialarabic = 0xfb6d;\\n  t.vekatakana = 0x30f9;\\n  t.venus = 0x2640;\\n  t.verticalbar = 0x007c;\\n  t.verticallineabovecmb = 0x030d;\\n  t.verticallinebelowcmb = 0x0329;\\n  t.verticallinelowmod = 0x02cc;\\n  t.verticallinemod = 0x02c8;\\n  t.vewarmenian = 0x057e;\\n  t.vhook = 0x028b;\\n  t.vikatakana = 0x30f8;\\n  t.viramabengali = 0x09cd;\\n  t.viramadeva = 0x094d;\\n  t.viramagujarati = 0x0acd;\\n  t.visargabengali = 0x0983;\\n  t.visargadeva = 0x0903;\\n  t.visargagujarati = 0x0a83;\\n  t.vmonospace = 0xff56;\\n  t.voarmenian = 0x0578;\\n  t.voicediterationhiragana = 0x309e;\\n  t.voicediterationkatakana = 0x30fe;\\n  t.voicedmarkkana = 0x309b;\\n  t.voicedmarkkanahalfwidth = 0xff9e;\\n  t.vokatakana = 0x30fa;\\n  t.vparen = 0x24b1;\\n  t.vtilde = 0x1e7d;\\n  t.vturned = 0x028c;\\n  t.vuhiragana = 0x3094;\\n  t.vukatakana = 0x30f4;\\n  t.w = 0x0077;\\n  t.wacute = 0x1e83;\\n  t.waekorean = 0x3159;\\n  t.wahiragana = 0x308f;\\n  t.wakatakana = 0x30ef;\\n  t.wakatakanahalfwidth = 0xff9c;\\n  t.wakorean = 0x3158;\\n  t.wasmallhiragana = 0x308e;\\n  t.wasmallkatakana = 0x30ee;\\n  t.wattosquare = 0x3357;\\n  t.wavedash = 0x301c;\\n  t.wavyunderscorevertical = 0xfe34;\\n  t.wawarabic = 0x0648;\\n  t.wawfinalarabic = 0xfeee;\\n  t.wawhamzaabovearabic = 0x0624;\\n  t.wawhamzaabovefinalarabic = 0xfe86;\\n  t.wbsquare = 0x33dd;\\n  t.wcircle = 0x24e6;\\n  t.wcircumflex = 0x0175;\\n  t.wdieresis = 0x1e85;\\n  t.wdotaccent = 0x1e87;\\n  t.wdotbelow = 0x1e89;\\n  t.wehiragana = 0x3091;\\n  t.weierstrass = 0x2118;\\n  t.wekatakana = 0x30f1;\\n  t.wekorean = 0x315e;\\n  t.weokorean = 0x315d;\\n  t.wgrave = 0x1e81;\\n  t.whitebullet = 0x25e6;\\n  t.whitecircle = 0x25cb;\\n  t.whitecircleinverse = 0x25d9;\\n  t.whitecornerbracketleft = 0x300e;\\n  t.whitecornerbracketleftvertical = 0xfe43;\\n  t.whitecornerbracketright = 0x300f;\\n  t.whitecornerbracketrightvertical = 0xfe44;\\n  t.whitediamond = 0x25c7;\\n  t.whitediamondcontainingblacksmalldiamond = 0x25c8;\\n  t.whitedownpointingsmalltriangle = 0x25bf;\\n  t.whitedownpointingtriangle = 0x25bd;\\n  t.whiteleftpointingsmalltriangle = 0x25c3;\\n  t.whiteleftpointingtriangle = 0x25c1;\\n  t.whitelenticularbracketleft = 0x3016;\\n  t.whitelenticularbracketright = 0x3017;\\n  t.whiterightpointingsmalltriangle = 0x25b9;\\n  t.whiterightpointingtriangle = 0x25b7;\\n  t.whitesmallsquare = 0x25ab;\\n  t.whitesmilingface = 0x263a;\\n  t.whitesquare = 0x25a1;\\n  t.whitestar = 0x2606;\\n  t.whitetelephone = 0x260f;\\n  t.whitetortoiseshellbracketleft = 0x3018;\\n  t.whitetortoiseshellbracketright = 0x3019;\\n  t.whiteuppointingsmalltriangle = 0x25b5;\\n  t.whiteuppointingtriangle = 0x25b3;\\n  t.wihiragana = 0x3090;\\n  t.wikatakana = 0x30f0;\\n  t.wikorean = 0x315f;\\n  t.wmonospace = 0xff57;\\n  t.wohiragana = 0x3092;\\n  t.wokatakana = 0x30f2;\\n  t.wokatakanahalfwidth = 0xff66;\\n  t.won = 0x20a9;\\n  t.wonmonospace = 0xffe6;\\n  t.wowaenthai = 0x0e27;\\n  t.wparen = 0x24b2;\\n  t.wring = 0x1e98;\\n  t.wsuperior = 0x02b7;\\n  t.wturned = 0x028d;\\n  t.wynn = 0x01bf;\\n  t.x = 0x0078;\\n  t.xabovecmb = 0x033d;\\n  t.xbopomofo = 0x3112;\\n  t.xcircle = 0x24e7;\\n  t.xdieresis = 0x1e8d;\\n  t.xdotaccent = 0x1e8b;\\n  t.xeharmenian = 0x056d;\\n  t.xi = 0x03be;\\n  t.xmonospace = 0xff58;\\n  t.xparen = 0x24b3;\\n  t.xsuperior = 0x02e3;\\n  t.y = 0x0079;\\n  t.yaadosquare = 0x334e;\\n  t.yabengali = 0x09af;\\n  t.yacute = 0x00fd;\\n  t.yadeva = 0x092f;\\n  t.yaekorean = 0x3152;\\n  t.yagujarati = 0x0aaf;\\n  t.yagurmukhi = 0x0a2f;\\n  t.yahiragana = 0x3084;\\n  t.yakatakana = 0x30e4;\\n  t.yakatakanahalfwidth = 0xff94;\\n  t.yakorean = 0x3151;\\n  t.yamakkanthai = 0x0e4e;\\n  t.yasmallhiragana = 0x3083;\\n  t.yasmallkatakana = 0x30e3;\\n  t.yasmallkatakanahalfwidth = 0xff6c;\\n  t.yatcyrillic = 0x0463;\\n  t.ycircle = 0x24e8;\\n  t.ycircumflex = 0x0177;\\n  t.ydieresis = 0x00ff;\\n  t.ydotaccent = 0x1e8f;\\n  t.ydotbelow = 0x1ef5;\\n  t.yeharabic = 0x064a;\\n  t.yehbarreearabic = 0x06d2;\\n  t.yehbarreefinalarabic = 0xfbaf;\\n  t.yehfinalarabic = 0xfef2;\\n  t.yehhamzaabovearabic = 0x0626;\\n  t.yehhamzaabovefinalarabic = 0xfe8a;\\n  t.yehhamzaaboveinitialarabic = 0xfe8b;\\n  t.yehhamzaabovemedialarabic = 0xfe8c;\\n  t.yehinitialarabic = 0xfef3;\\n  t.yehmedialarabic = 0xfef4;\\n  t.yehmeeminitialarabic = 0xfcdd;\\n  t.yehmeemisolatedarabic = 0xfc58;\\n  t.yehnoonfinalarabic = 0xfc94;\\n  t.yehthreedotsbelowarabic = 0x06d1;\\n  t.yekorean = 0x3156;\\n  t.yen = 0x00a5;\\n  t.yenmonospace = 0xffe5;\\n  t.yeokorean = 0x3155;\\n  t.yeorinhieuhkorean = 0x3186;\\n  t.yerahbenyomohebrew = 0x05aa;\\n  t.yerahbenyomolefthebrew = 0x05aa;\\n  t.yericyrillic = 0x044b;\\n  t.yerudieresiscyrillic = 0x04f9;\\n  t.yesieungkorean = 0x3181;\\n  t.yesieungpansioskorean = 0x3183;\\n  t.yesieungsioskorean = 0x3182;\\n  t.yetivhebrew = 0x059a;\\n  t.ygrave = 0x1ef3;\\n  t.yhook = 0x01b4;\\n  t.yhookabove = 0x1ef7;\\n  t.yiarmenian = 0x0575;\\n  t.yicyrillic = 0x0457;\\n  t.yikorean = 0x3162;\\n  t.yinyang = 0x262f;\\n  t.yiwnarmenian = 0x0582;\\n  t.ymonospace = 0xff59;\\n  t.yod = 0x05d9;\\n  t.yoddagesh = 0xfb39;\\n  t.yoddageshhebrew = 0xfb39;\\n  t.yodhebrew = 0x05d9;\\n  t.yodyodhebrew = 0x05f2;\\n  t.yodyodpatahhebrew = 0xfb1f;\\n  t.yohiragana = 0x3088;\\n  t.yoikorean = 0x3189;\\n  t.yokatakana = 0x30e8;\\n  t.yokatakanahalfwidth = 0xff96;\\n  t.yokorean = 0x315b;\\n  t.yosmallhiragana = 0x3087;\\n  t.yosmallkatakana = 0x30e7;\\n  t.yosmallkatakanahalfwidth = 0xff6e;\\n  t.yotgreek = 0x03f3;\\n  t.yoyaekorean = 0x3188;\\n  t.yoyakorean = 0x3187;\\n  t.yoyakthai = 0x0e22;\\n  t.yoyingthai = 0x0e0d;\\n  t.yparen = 0x24b4;\\n  t.ypogegrammeni = 0x037a;\\n  t.ypogegrammenigreekcmb = 0x0345;\\n  t.yr = 0x01a6;\\n  t.yring = 0x1e99;\\n  t.ysuperior = 0x02b8;\\n  t.ytilde = 0x1ef9;\\n  t.yturned = 0x028e;\\n  t.yuhiragana = 0x3086;\\n  t.yuikorean = 0x318c;\\n  t.yukatakana = 0x30e6;\\n  t.yukatakanahalfwidth = 0xff95;\\n  t.yukorean = 0x3160;\\n  t.yusbigcyrillic = 0x046b;\\n  t.yusbigiotifiedcyrillic = 0x046d;\\n  t.yuslittlecyrillic = 0x0467;\\n  t.yuslittleiotifiedcyrillic = 0x0469;\\n  t.yusmallhiragana = 0x3085;\\n  t.yusmallkatakana = 0x30e5;\\n  t.yusmallkatakanahalfwidth = 0xff6d;\\n  t.yuyekorean = 0x318b;\\n  t.yuyeokorean = 0x318a;\\n  t.yyabengali = 0x09df;\\n  t.yyadeva = 0x095f;\\n  t.z = 0x007a;\\n  t.zaarmenian = 0x0566;\\n  t.zacute = 0x017a;\\n  t.zadeva = 0x095b;\\n  t.zagurmukhi = 0x0a5b;\\n  t.zaharabic = 0x0638;\\n  t.zahfinalarabic = 0xfec6;\\n  t.zahinitialarabic = 0xfec7;\\n  t.zahiragana = 0x3056;\\n  t.zahmedialarabic = 0xfec8;\\n  t.zainarabic = 0x0632;\\n  t.zainfinalarabic = 0xfeb0;\\n  t.zakatakana = 0x30b6;\\n  t.zaqefgadolhebrew = 0x0595;\\n  t.zaqefqatanhebrew = 0x0594;\\n  t.zarqahebrew = 0x0598;\\n  t.zayin = 0x05d6;\\n  t.zayindagesh = 0xfb36;\\n  t.zayindageshhebrew = 0xfb36;\\n  t.zayinhebrew = 0x05d6;\\n  t.zbopomofo = 0x3117;\\n  t.zcaron = 0x017e;\\n  t.zcircle = 0x24e9;\\n  t.zcircumflex = 0x1e91;\\n  t.zcurl = 0x0291;\\n  t.zdot = 0x017c;\\n  t.zdotaccent = 0x017c;\\n  t.zdotbelow = 0x1e93;\\n  t.zecyrillic = 0x0437;\\n  t.zedescendercyrillic = 0x0499;\\n  t.zedieresiscyrillic = 0x04df;\\n  t.zehiragana = 0x305c;\\n  t.zekatakana = 0x30bc;\\n  t.zero = 0x0030;\\n  t.zeroarabic = 0x0660;\\n  t.zerobengali = 0x09e6;\\n  t.zerodeva = 0x0966;\\n  t.zerogujarati = 0x0ae6;\\n  t.zerogurmukhi = 0x0a66;\\n  t.zerohackarabic = 0x0660;\\n  t.zeroinferior = 0x2080;\\n  t.zeromonospace = 0xff10;\\n  t.zerooldstyle = 0xf730;\\n  t.zeropersian = 0x06f0;\\n  t.zerosuperior = 0x2070;\\n  t.zerothai = 0x0e50;\\n  t.zerowidthjoiner = 0xfeff;\\n  t.zerowidthnonjoiner = 0x200c;\\n  t.zerowidthspace = 0x200b;\\n  t.zeta = 0x03b6;\\n  t.zhbopomofo = 0x3113;\\n  t.zhearmenian = 0x056a;\\n  t.zhebrevecyrillic = 0x04c2;\\n  t.zhecyrillic = 0x0436;\\n  t.zhedescendercyrillic = 0x0497;\\n  t.zhedieresiscyrillic = 0x04dd;\\n  t.zihiragana = 0x3058;\\n  t.zikatakana = 0x30b8;\\n  t.zinorhebrew = 0x05ae;\\n  t.zlinebelow = 0x1e95;\\n  t.zmonospace = 0xff5a;\\n  t.zohiragana = 0x305e;\\n  t.zokatakana = 0x30be;\\n  t.zparen = 0x24b5;\\n  t.zretroflexhook = 0x0290;\\n  t.zstroke = 0x01b6;\\n  t.zuhiragana = 0x305a;\\n  t.zukatakana = 0x30ba;\\n  t[\\\".notdef\\\"] = 0x0000;\\n\\n  \u002F\u002F TeX-specific glyph names.\\n  t.angbracketleftbig = 0x2329;\\n  t.angbracketleftBig = 0x2329;\\n  t.angbracketleftbigg = 0x2329;\\n  t.angbracketleftBigg = 0x2329;\\n  t.angbracketrightBig = 0x232a;\\n  t.angbracketrightbig = 0x232a;\\n  t.angbracketrightBigg = 0x232a;\\n  t.angbracketrightbigg = 0x232a;\\n  t.arrowhookleft = 0x21aa;\\n  t.arrowhookright = 0x21a9;\\n  t.arrowlefttophalf = 0x21bc;\\n  t.arrowleftbothalf = 0x21bd;\\n  t.arrownortheast = 0x2197;\\n  t.arrownorthwest = 0x2196;\\n  t.arrowrighttophalf = 0x21c0;\\n  t.arrowrightbothalf = 0x21c1;\\n  t.arrowsoutheast = 0x2198;\\n  t.arrowsouthwest = 0x2199;\\n  t.backslashbig = 0x2216;\\n  t.backslashBig = 0x2216;\\n  t.backslashBigg = 0x2216;\\n  t.backslashbigg = 0x2216;\\n  t.bardbl = 0x2016;\\n  t.bracehtipdownleft = 0xfe37;\\n  t.bracehtipdownright = 0xfe37;\\n  t.bracehtipupleft = 0xfe38;\\n  t.bracehtipupright = 0xfe38;\\n  t.braceleftBig = 0x007b;\\n  t.braceleftbig = 0x007b;\\n  t.braceleftbigg = 0x007b;\\n  t.braceleftBigg = 0x007b;\\n  t.bracerightBig = 0x007d;\\n  t.bracerightbig = 0x007d;\\n  t.bracerightbigg = 0x007d;\\n  t.bracerightBigg = 0x007d;\\n  t.bracketleftbig = 0x005b;\\n  t.bracketleftBig = 0x005b;\\n  t.bracketleftbigg = 0x005b;\\n  t.bracketleftBigg = 0x005b;\\n  t.bracketrightBig = 0x005d;\\n  t.bracketrightbig = 0x005d;\\n  t.bracketrightbigg = 0x005d;\\n  t.bracketrightBigg = 0x005d;\\n  t.ceilingleftbig = 0x2308;\\n  t.ceilingleftBig = 0x2308;\\n  t.ceilingleftBigg = 0x2308;\\n  t.ceilingleftbigg = 0x2308;\\n  t.ceilingrightbig = 0x2309;\\n  t.ceilingrightBig = 0x2309;\\n  t.ceilingrightbigg = 0x2309;\\n  t.ceilingrightBigg = 0x2309;\\n  t.circledotdisplay = 0x2299;\\n  t.circledottext = 0x2299;\\n  t.circlemultiplydisplay = 0x2297;\\n  t.circlemultiplytext = 0x2297;\\n  t.circleplusdisplay = 0x2295;\\n  t.circleplustext = 0x2295;\\n  t.contintegraldisplay = 0x222e;\\n  t.contintegraltext = 0x222e;\\n  t.coproductdisplay = 0x2210;\\n  t.coproducttext = 0x2210;\\n  t.floorleftBig = 0x230a;\\n  t.floorleftbig = 0x230a;\\n  t.floorleftbigg = 0x230a;\\n  t.floorleftBigg = 0x230a;\\n  t.floorrightbig = 0x230b;\\n  t.floorrightBig = 0x230b;\\n  t.floorrightBigg = 0x230b;\\n  t.floorrightbigg = 0x230b;\\n  t.hatwide = 0x0302;\\n  t.hatwider = 0x0302;\\n  t.hatwidest = 0x0302;\\n  t.intercal = 0x1d40;\\n  t.integraldisplay = 0x222b;\\n  t.integraltext = 0x222b;\\n  t.intersectiondisplay = 0x22c2;\\n  t.intersectiontext = 0x22c2;\\n  t.logicalanddisplay = 0x2227;\\n  t.logicalandtext = 0x2227;\\n  t.logicalordisplay = 0x2228;\\n  t.logicalortext = 0x2228;\\n  t.parenleftBig = 0x0028;\\n  t.parenleftbig = 0x0028;\\n  t.parenleftBigg = 0x0028;\\n  t.parenleftbigg = 0x0028;\\n  t.parenrightBig = 0x0029;\\n  t.parenrightbig = 0x0029;\\n  t.parenrightBigg = 0x0029;\\n  t.parenrightbigg = 0x0029;\\n  t.prime = 0x2032;\\n  t.productdisplay = 0x220f;\\n  t.producttext = 0x220f;\\n  t.radicalbig = 0x221a;\\n  t.radicalBig = 0x221a;\\n  t.radicalBigg = 0x221a;\\n  t.radicalbigg = 0x221a;\\n  t.radicalbt = 0x221a;\\n  t.radicaltp = 0x221a;\\n  t.radicalvertex = 0x221a;\\n  t.slashbig = 0x002f;\\n  t.slashBig = 0x002f;\\n  t.slashBigg = 0x002f;\\n  t.slashbigg = 0x002f;\\n  t.summationdisplay = 0x2211;\\n  t.summationtext = 0x2211;\\n  t.tildewide = 0x02dc;\\n  t.tildewider = 0x02dc;\\n  t.tildewidest = 0x02dc;\\n  t.uniondisplay = 0x22c3;\\n  t.unionmultidisplay = 0x228e;\\n  t.unionmultitext = 0x228e;\\n  t.unionsqdisplay = 0x2294;\\n  t.unionsqtext = 0x2294;\\n  t.uniontext = 0x22c3;\\n  t.vextenddouble = 0x2225;\\n  t.vextendsingle = 0x2223;\\n});\\n\\nconst getDingbatsGlyphsUnicode = getLookupTableFactory(function (t) {\\n  t.space = 0x0020;\\n  t.a1 = 0x2701;\\n  t.a2 = 0x2702;\\n  t.a202 = 0x2703;\\n  t.a3 = 0x2704;\\n  t.a4 = 0x260e;\\n  t.a5 = 0x2706;\\n  t.a119 = 0x2707;\\n  t.a118 = 0x2708;\\n  t.a117 = 0x2709;\\n  t.a11 = 0x261b;\\n  t.a12 = 0x261e;\\n  t.a13 = 0x270c;\\n  t.a14 = 0x270d;\\n  t.a15 = 0x270e;\\n  t.a16 = 0x270f;\\n  t.a105 = 0x2710;\\n  t.a17 = 0x2711;\\n  t.a18 = 0x2712;\\n  t.a19 = 0x2713;\\n  t.a20 = 0x2714;\\n  t.a21 = 0x2715;\\n  t.a22 = 0x2716;\\n  t.a23 = 0x2717;\\n  t.a24 = 0x2718;\\n  t.a25 = 0x2719;\\n  t.a26 = 0x271a;\\n  t.a27 = 0x271b;\\n  t.a28 = 0x271c;\\n  t.a6 = 0x271d;\\n  t.a7 = 0x271e;\\n  t.a8 = 0x271f;\\n  t.a9 = 0x2720;\\n  t.a10 = 0x2721;\\n  t.a29 = 0x2722;\\n  t.a30 = 0x2723;\\n  t.a31 = 0x2724;\\n  t.a32 = 0x2725;\\n  t.a33 = 0x2726;\\n  t.a34 = 0x2727;\\n  t.a35 = 0x2605;\\n  t.a36 = 0x2729;\\n  t.a37 = 0x272a;\\n  t.a38 = 0x272b;\\n  t.a39 = 0x272c;\\n  t.a40 = 0x272d;\\n  t.a41 = 0x272e;\\n  t.a42 = 0x272f;\\n  t.a43 = 0x2730;\\n  t.a44 = 0x2731;\\n  t.a45 = 0x2732;\\n  t.a46 = 0x2733;\\n  t.a47 = 0x2734;\\n  t.a48 = 0x2735;\\n  t.a49 = 0x2736;\\n  t.a50 = 0x2737;\\n  t.a51 = 0x2738;\\n  t.a52 = 0x2739;\\n  t.a53 = 0x273a;\\n  t.a54 = 0x273b;\\n  t.a55 = 0x273c;\\n  t.a56 = 0x273d;\\n  t.a57 = 0x273e;\\n  t.a58 = 0x273f;\\n  t.a59 = 0x2740;\\n  t.a60 = 0x2741;\\n  t.a61 = 0x2742;\\n  t.a62 = 0x2743;\\n  t.a63 = 0x2744;\\n  t.a64 = 0x2745;\\n  t.a65 = 0x2746;\\n  t.a66 = 0x2747;\\n  t.a67 = 0x2748;\\n  t.a68 = 0x2749;\\n  t.a69 = 0x274a;\\n  t.a70 = 0x274b;\\n  t.a71 = 0x25cf;\\n  t.a72 = 0x274d;\\n  t.a73 = 0x25a0;\\n  t.a74 = 0x274f;\\n  t.a203 = 0x2750;\\n  t.a75 = 0x2751;\\n  t.a204 = 0x2752;\\n  t.a76 = 0x25b2;\\n  t.a77 = 0x25bc;\\n  t.a78 = 0x25c6;\\n  t.a79 = 0x2756;\\n  t.a81 = 0x25d7;\\n  t.a82 = 0x2758;\\n  t.a83 = 0x2759;\\n  t.a84 = 0x275a;\\n  t.a97 = 0x275b;\\n  t.a98 = 0x275c;\\n  t.a99 = 0x275d;\\n  t.a100 = 0x275e;\\n  t.a101 = 0x2761;\\n  t.a102 = 0x2762;\\n  t.a103 = 0x2763;\\n  t.a104 = 0x2764;\\n  t.a106 = 0x2765;\\n  t.a107 = 0x2766;\\n  t.a108 = 0x2767;\\n  t.a112 = 0x2663;\\n  t.a111 = 0x2666;\\n  t.a110 = 0x2665;\\n  t.a109 = 0x2660;\\n  t.a120 = 0x2460;\\n  t.a121 = 0x2461;\\n  t.a122 = 0x2462;\\n  t.a123 = 0x2463;\\n  t.a124 = 0x2464;\\n  t.a125 = 0x2465;\\n  t.a126 = 0x2466;\\n  t.a127 = 0x2467;\\n  t.a128 = 0x2468;\\n  t.a129 = 0x2469;\\n  t.a130 = 0x2776;\\n  t.a131 = 0x2777;\\n  t.a132 = 0x2778;\\n  t.a133 = 0x2779;\\n  t.a134 = 0x277a;\\n  t.a135 = 0x277b;\\n  t.a136 = 0x277c;\\n  t.a137 = 0x277d;\\n  t.a138 = 0x277e;\\n  t.a139 = 0x277f;\\n  t.a140 = 0x2780;\\n  t.a141 = 0x2781;\\n  t.a142 = 0x2782;\\n  t.a143 = 0x2783;\\n  t.a144 = 0x2784;\\n  t.a145 = 0x2785;\\n  t.a146 = 0x2786;\\n  t.a147 = 0x2787;\\n  t.a148 = 0x2788;\\n  t.a149 = 0x2789;\\n  t.a150 = 0x278a;\\n  t.a151 = 0x278b;\\n  t.a152 = 0x278c;\\n  t.a153 = 0x278d;\\n  t.a154 = 0x278e;\\n  t.a155 = 0x278f;\\n  t.a156 = 0x2790;\\n  t.a157 = 0x2791;\\n  t.a158 = 0x2792;\\n  t.a159 = 0x2793;\\n  t.a160 = 0x2794;\\n  t.a161 = 0x2192;\\n  t.a163 = 0x2194;\\n  t.a164 = 0x2195;\\n  t.a196 = 0x2798;\\n  t.a165 = 0x2799;\\n  t.a192 = 0x279a;\\n  t.a166 = 0x279b;\\n  t.a167 = 0x279c;\\n  t.a168 = 0x279d;\\n  t.a169 = 0x279e;\\n  t.a170 = 0x279f;\\n  t.a171 = 0x27a0;\\n  t.a172 = 0x27a1;\\n  t.a173 = 0x27a2;\\n  t.a162 = 0x27a3;\\n  t.a174 = 0x27a4;\\n  t.a175 = 0x27a5;\\n  t.a176 = 0x27a6;\\n  t.a177 = 0x27a7;\\n  t.a178 = 0x27a8;\\n  t.a179 = 0x27a9;\\n  t.a193 = 0x27aa;\\n  t.a180 = 0x27ab;\\n  t.a199 = 0x27ac;\\n  t.a181 = 0x27ad;\\n  t.a200 = 0x27ae;\\n  t.a182 = 0x27af;\\n  t.a201 = 0x27b1;\\n  t.a183 = 0x27b2;\\n  t.a184 = 0x27b3;\\n  t.a197 = 0x27b4;\\n  t.a185 = 0x27b5;\\n  t.a194 = 0x27b6;\\n  t.a198 = 0x27b7;\\n  t.a186 = 0x27b8;\\n  t.a195 = 0x27b9;\\n  t.a187 = 0x27ba;\\n  t.a188 = 0x27bb;\\n  t.a189 = 0x27bc;\\n  t.a190 = 0x27bd;\\n  t.a191 = 0x27be;\\n  t.a89 = 0x2768; \u002F\u002F 0xF8D7\\n  t.a90 = 0x2769; \u002F\u002F 0xF8D8\\n  t.a93 = 0x276a; \u002F\u002F 0xF8D9\\n  t.a94 = 0x276b; \u002F\u002F 0xF8DA\\n  t.a91 = 0x276c; \u002F\u002F 0xF8DB\\n  t.a92 = 0x276d; \u002F\u002F 0xF8DC\\n  t.a205 = 0x276e; \u002F\u002F 0xF8DD\\n  t.a85 = 0x276f; \u002F\u002F 0xF8DE\\n  t.a206 = 0x2770; \u002F\u002F 0xF8DF\\n  t.a86 = 0x2771; \u002F\u002F 0xF8E0\\n  t.a87 = 0x2772; \u002F\u002F 0xF8E1\\n  t.a88 = 0x2773; \u002F\u002F 0xF8E2\\n  t.a95 = 0x2774; \u002F\u002F 0xF8E3\\n  t.a96 = 0x2775; \u002F\u002F 0xF8E4\\n  t[\\\".notdef\\\"] = 0x0000;\\n});\\n\\nexport { getDingbatsGlyphsUnicode, getGlyphsUnicode };\\n\",\"\u002F* Copyright 2016 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { getLookupTableFactory } from \\\".\u002Fcore_utils.js\\\";\\n\\n\u002F\u002F Some characters, e.g. copyrightserif, are mapped to the private use area\\n\u002F\u002F and might not be displayed using standard fonts. Mapping\u002Fhacking well-known\\n\u002F\u002F chars to the similar equivalents in the normal characters range.\\nconst getSpecialPUASymbols = getLookupTableFactory(function (t) {\\n  t[63721] = 0x00a9; \u002F\u002F copyrightsans (0xF8E9) => copyright\\n  t[63193] = 0x00a9; \u002F\u002F copyrightserif (0xF6D9) => copyright\\n  t[63720] = 0x00ae; \u002F\u002F registersans (0xF8E8) => registered\\n  t[63194] = 0x00ae; \u002F\u002F registerserif (0xF6DA) => registered\\n  t[63722] = 0x2122; \u002F\u002F trademarksans (0xF8EA) => trademark\\n  t[63195] = 0x2122; \u002F\u002F trademarkserif (0xF6DB) => trademark\\n  t[63729] = 0x23a7; \u002F\u002F bracelefttp (0xF8F1)\\n  t[63730] = 0x23a8; \u002F\u002F braceleftmid (0xF8F2)\\n  t[63731] = 0x23a9; \u002F\u002F braceleftbt (0xF8F3)\\n  t[63740] = 0x23ab; \u002F\u002F bracerighttp (0xF8FC)\\n  t[63741] = 0x23ac; \u002F\u002F bracerightmid (0xF8FD)\\n  t[63742] = 0x23ad; \u002F\u002F bracerightbt (0xF8FE)\\n  t[63726] = 0x23a1; \u002F\u002F bracketlefttp (0xF8EE)\\n  t[63727] = 0x23a2; \u002F\u002F bracketleftex (0xF8EF)\\n  t[63728] = 0x23a3; \u002F\u002F bracketleftbt (0xF8F0)\\n  t[63737] = 0x23a4; \u002F\u002F bracketrighttp (0xF8F9)\\n  t[63738] = 0x23a5; \u002F\u002F bracketrightex (0xF8FA)\\n  t[63739] = 0x23a6; \u002F\u002F bracketrightbt (0xF8FB)\\n  t[63723] = 0x239b; \u002F\u002F parenlefttp (0xF8EB)\\n  t[63724] = 0x239c; \u002F\u002F parenleftex (0xF8EC)\\n  t[63725] = 0x239d; \u002F\u002F parenleftbt (0xF8ED)\\n  t[63734] = 0x239e; \u002F\u002F parenrighttp (0xF8F6)\\n  t[63735] = 0x239f; \u002F\u002F parenrightex (0xF8F7)\\n  t[63736] = 0x23a0; \u002F\u002F parenrightbt (0xF8F8)\\n});\\n\\nfunction mapSpecialUnicodeValues(code) {\\n  if (code >= 0xfff0 && code \u003C= 0xffff) {\\n    \u002F\u002F Specials unicode block.\\n    return 0;\\n  } else if (code >= 0xf600 && code \u003C= 0xf8ff) {\\n    return getSpecialPUASymbols()[code] || code;\\n  } else if (code === \u002F* softhyphen = *\u002F 0x00ad) {\\n    return 0x002d; \u002F\u002F hyphen\\n  }\\n  return code;\\n}\\n\\nfunction getUnicodeForGlyph(name, glyphsUnicodeMap) {\\n  let unicode = glyphsUnicodeMap[name];\\n  if (unicode !== undefined) {\\n    return unicode;\\n  }\\n  if (!name) {\\n    return -1;\\n  }\\n  \u002F\u002F Try to recover valid Unicode values from 'uniXXXX'\u002F'uXXXX{XX}' glyphs.\\n  if (name[0] === \\\"u\\\") {\\n    const nameLen = name.length;\\n    let hexStr;\\n\\n    if (nameLen === 7 && name[1] === \\\"n\\\" && name[2] === \\\"i\\\") {\\n      \u002F\u002F 'uniXXXX'\\n      hexStr = name.substring(3);\\n    } else if (nameLen >= 5 && nameLen \u003C= 7) {\\n      \u002F\u002F 'uXXXX{XX}'\\n      hexStr = name.substring(1);\\n    } else {\\n      return -1;\\n    }\\n    \u002F\u002F Check for upper-case hexadecimal characters, to avoid false positives.\\n    if (hexStr === hexStr.toUpperCase()) {\\n      unicode = parseInt(hexStr, 16);\\n      if (unicode >= 0) {\\n        return unicode;\\n      }\\n    }\\n  }\\n  return -1;\\n}\\n\\n\u002F\u002F See https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Ftypography\u002Fopentype\u002Fspec\u002Fos2#ulunicoderange1-bits-031ulunicoderange2-bits-3263ulunicoderange3-bits-6495ulunicoderange4-bits-96127\\nconst UnicodeRanges = [\\n  [0x0000, 0x007f], \u002F\u002F 0 - Basic Latin\\n  [0x0080, 0x00ff], \u002F\u002F 1 - Latin-1 Supplement\\n  [0x0100, 0x017f], \u002F\u002F 2 - Latin Extended-A\\n  [0x0180, 0x024f], \u002F\u002F 3 - Latin Extended-B\\n  [0x0250, 0x02af, 0x1d00, 0x1d7f, 0x1d80, 0x1dbf], \u002F\u002F 4 - IPA Extensions - Phonetic Extensions - Phonetic Extensions Supplement\\n  [0x02b0, 0x02ff, 0xa700, 0xa71f], \u002F\u002F 5 - Spacing Modifier Letters - Modifier Tone Letters\\n  [0x0300, 0x036f, 0x1dc0, 0x1dff], \u002F\u002F 6 - Combining Diacritical Marks - Combining Diacritical Marks Supplement\\n  [0x0370, 0x03ff], \u002F\u002F 7 - Greek and Coptic\\n  [0x2c80, 0x2cff], \u002F\u002F 8 - Coptic\\n  [0x0400, 0x04ff, 0x0500, 0x052f, 0x2de0, 0x2dff, 0xa640, 0xa69f], \u002F\u002F 9 - Cyrillic - Cyrillic Supplement - Cyrillic Extended-A - Cyrillic Extended-B\\n  [0x0530, 0x058f], \u002F\u002F 10 - Armenian\\n  [0x0590, 0x05ff], \u002F\u002F 11 - Hebrew\\n  [0xa500, 0xa63f], \u002F\u002F 12 - Vai\\n  [0x0600, 0x06ff, 0x0750, 0x077f], \u002F\u002F 13 - Arabic - Arabic Supplement\\n  [0x07c0, 0x07ff], \u002F\u002F 14 - NKo\\n  [0x0900, 0x097f], \u002F\u002F 15 - Devanagari\\n  [0x0980, 0x09ff], \u002F\u002F 16 - Bengali\\n  [0x0a00, 0x0a7f], \u002F\u002F 17 - Gurmukhi\\n  [0x0a80, 0x0aff], \u002F\u002F 18 - Gujarati\\n  [0x0b00, 0x0b7f], \u002F\u002F 19 - Oriya\\n  [0x0b80, 0x0bff], \u002F\u002F 20 - Tamil\\n  [0x0c00, 0x0c7f], \u002F\u002F 21 - Telugu\\n  [0x0c80, 0x0cff], \u002F\u002F 22 - Kannada\\n  [0x0d00, 0x0d7f], \u002F\u002F 23 - Malayalam\\n  [0x0e00, 0x0e7f], \u002F\u002F 24 - Thai\\n  [0x0e80, 0x0eff], \u002F\u002F 25 - Lao\\n  [0x10a0, 0x10ff, 0x2d00, 0x2d2f], \u002F\u002F 26 - Georgian - Georgian Supplement\\n  [0x1b00, 0x1b7f], \u002F\u002F 27 - Balinese\\n  [0x1100, 0x11ff], \u002F\u002F 28 - Hangul Jamo\\n  [0x1e00, 0x1eff, 0x2c60, 0x2c7f, 0xa720, 0xa7ff], \u002F\u002F 29 - Latin Extended Additional - Latin Extended-C - Latin Extended-D\\n  [0x1f00, 0x1fff], \u002F\u002F 30 - Greek Extended\\n  [0x2000, 0x206f, 0x2e00, 0x2e7f], \u002F\u002F 31 - General Punctuation - Supplemental Punctuation\\n  [0x2070, 0x209f], \u002F\u002F 32 - Superscripts And Subscripts\\n  [0x20a0, 0x20cf], \u002F\u002F 33 - Currency Symbol\\n  [0x20d0, 0x20ff], \u002F\u002F 34 - Combining Diacritical Marks\\n  [0x2100, 0x214f], \u002F\u002F 35 - Letterlike Symbols\\n  [0x2150, 0x218f], \u002F\u002F 36 - Number Forms\\n  [0x2190, 0x21ff, 0x27f0, 0x27ff, 0x2900, 0x297f, 0x2b00, 0x2bff], \u002F\u002F 37 - Arrows - Supplemental Arrows-A - Supplemental Arrows-B - Miscellaneous Symbols and Arrows\\n  [0x2200, 0x22ff, 0x2a00, 0x2aff, 0x27c0, 0x27ef, 0x2980, 0x29ff], \u002F\u002F 38 - Mathematical Operators - Supplemental Mathematical Operators - Miscellaneous Mathematical Symbols-A - Miscellaneous Mathematical Symbols-B\\n  [0x2300, 0x23ff], \u002F\u002F 39 - Miscellaneous Technical\\n  [0x2400, 0x243f], \u002F\u002F 40 - Control Pictures\\n  [0x2440, 0x245f], \u002F\u002F 41 - Optical Character Recognition\\n  [0x2460, 0x24ff], \u002F\u002F 42 - Enclosed Alphanumerics\\n  [0x2500, 0x257f], \u002F\u002F 43 - Box Drawing\\n  [0x2580, 0x259f], \u002F\u002F 44 - Block Elements\\n  [0x25a0, 0x25ff], \u002F\u002F 45 - Geometric Shapes\\n  [0x2600, 0x26ff], \u002F\u002F 46 - Miscellaneous Symbols\\n  [0x2700, 0x27bf], \u002F\u002F 47 - Dingbats\\n  [0x3000, 0x303f], \u002F\u002F 48 - CJK Symbols And Punctuation\\n  [0x3040, 0x309f], \u002F\u002F 49 - Hiragana\\n  [0x30a0, 0x30ff, 0x31f0, 0x31ff], \u002F\u002F 50 - Katakana - Katakana Phonetic Extensions\\n  [0x3100, 0x312f, 0x31a0, 0x31bf], \u002F\u002F 51 - Bopomofo - Bopomofo Extended\\n  [0x3130, 0x318f], \u002F\u002F 52 - Hangul Compatibility Jamo\\n  [0xa840, 0xa87f], \u002F\u002F 53 - Phags-pa\\n  [0x3200, 0x32ff], \u002F\u002F 54 - Enclosed CJK Letters And Months\\n  [0x3300, 0x33ff], \u002F\u002F 55 - CJK Compatibility\\n  [0xac00, 0xd7af], \u002F\u002F 56 - Hangul Syllables\\n  [0xd800, 0xdfff], \u002F\u002F 57 - Non-Plane 0 *\\n  [0x10900, 0x1091f], \u002F\u002F 58 - Phoenicia\\n  [\\n    0x4e00, 0x9fff, 0x2e80, 0x2eff, 0x2f00, 0x2fdf, 0x2ff0, 0x2fff, 0x3400,\\n    0x4dbf, 0x20000, 0x2a6df, 0x3190, 0x319f,\\n  ], \u002F\u002F 59 - CJK Unified Ideographs - CJK Radicals Supplement - Kangxi Radicals - Ideographic Description Characters - CJK Unified Ideographs Extension A - CJK Unified Ideographs Extension B - Kanbun\\n  [0xe000, 0xf8ff], \u002F\u002F 60 - Private Use Area (plane 0)\\n  [0x31c0, 0x31ef, 0xf900, 0xfaff, 0x2f800, 0x2fa1f], \u002F\u002F 61 - CJK Strokes - CJK Compatibility Ideographs - CJK Compatibility Ideographs Supplement\\n  [0xfb00, 0xfb4f], \u002F\u002F 62 - Alphabetic Presentation Forms\\n  [0xfb50, 0xfdff], \u002F\u002F 63 - Arabic Presentation Forms-A\\n  [0xfe20, 0xfe2f], \u002F\u002F 64 - Combining Half Marks\\n  [0xfe10, 0xfe1f], \u002F\u002F 65 - Vertical Forms\\n  [0xfe50, 0xfe6f], \u002F\u002F 66 - Small Form Variants\\n  [0xfe70, 0xfeff], \u002F\u002F 67 - Arabic Presentation Forms-B\\n  [0xff00, 0xffef], \u002F\u002F 68 - Halfwidth And Fullwidth Forms\\n  [0xfff0, 0xffff], \u002F\u002F 69 - Specials\\n  [0x0f00, 0x0fff], \u002F\u002F 70 - Tibetan\\n  [0x0700, 0x074f], \u002F\u002F 71 - Syriac\\n  [0x0780, 0x07bf], \u002F\u002F 72 - Thaana\\n  [0x0d80, 0x0dff], \u002F\u002F 73 - Sinhala\\n  [0x1000, 0x109f], \u002F\u002F 74 - Myanmar\\n  [0x1200, 0x137f, 0x1380, 0x139f, 0x2d80, 0x2ddf], \u002F\u002F 75 - Ethiopic - Ethiopic Supplement - Ethiopic Extended\\n  [0x13a0, 0x13ff], \u002F\u002F 76 - Cherokee\\n  [0x1400, 0x167f], \u002F\u002F 77 - Unified Canadian Aboriginal Syllabics\\n  [0x1680, 0x169f], \u002F\u002F 78 - Ogham\\n  [0x16a0, 0x16ff], \u002F\u002F 79 - Runic\\n  [0x1780, 0x17ff], \u002F\u002F 80 - Khmer\\n  [0x1800, 0x18af], \u002F\u002F 81 - Mongolian\\n  [0x2800, 0x28ff], \u002F\u002F 82 - Braille Patterns\\n  [0xa000, 0xa48f], \u002F\u002F 83 - Yi Syllables\\n  [0x1700, 0x171f, 0x1720, 0x173f, 0x1740, 0x175f, 0x1760, 0x177f], \u002F\u002F 84 - Tagalog - Hanunoo - Buhid - Tagbanwa\\n  [0x10300, 0x1032f], \u002F\u002F 85 - Old Italic\\n  [0x10330, 0x1034f], \u002F\u002F 86 - Gothic\\n  [0x10400, 0x1044f], \u002F\u002F 87 - Deseret\\n  [0x1d000, 0x1d0ff, 0x1d100, 0x1d1ff, 0x1d200, 0x1d24f], \u002F\u002F 88 - Byzantine Musical Symbols - Musical Symbols - Ancient Greek Musical Notation\\n  [0x1d400, 0x1d7ff], \u002F\u002F 89 - Mathematical Alphanumeric Symbols\\n  [0xff000, 0xffffd], \u002F\u002F 90 - Private Use (plane 15)\\n  [0xfe00, 0xfe0f, 0xe0100, 0xe01ef], \u002F\u002F 91 - Variation Selectors - Variation Selectors Supplement\\n  [0xe0000, 0xe007f], \u002F\u002F 92 - Tags\\n  [0x1900, 0x194f], \u002F\u002F 93 - Limbu\\n  [0x1950, 0x197f], \u002F\u002F 94 - Tai Le\\n  [0x1980, 0x19df], \u002F\u002F 95 - New Tai Lue\\n  [0x1a00, 0x1a1f], \u002F\u002F 96 - Buginese\\n  [0x2c00, 0x2c5f], \u002F\u002F 97 - Glagolitic\\n  [0x2d30, 0x2d7f], \u002F\u002F 98 - Tifinagh\\n  [0x4dc0, 0x4dff], \u002F\u002F 99 - Yijing Hexagram Symbols\\n  [0xa800, 0xa82f], \u002F\u002F 100 - Syloti Nagri\\n  [0x10000, 0x1007f, 0x10080, 0x100ff, 0x10100, 0x1013f], \u002F\u002F 101 - Linear B Syllabary - Linear B Ideograms - Aegean Numbers\\n  [0x10140, 0x1018f], \u002F\u002F 102 - Ancient Greek Numbers\\n  [0x10380, 0x1039f], \u002F\u002F 103 - Ugaritic\\n  [0x103a0, 0x103df], \u002F\u002F 104 - Old Persian\\n  [0x10450, 0x1047f], \u002F\u002F 105 - Shavian\\n  [0x10480, 0x104af], \u002F\u002F 106 - Osmanya\\n  [0x10800, 0x1083f], \u002F\u002F 107 - Cypriot Syllabary\\n  [0x10a00, 0x10a5f], \u002F\u002F 108 - Kharoshthi\\n  [0x1d300, 0x1d35f], \u002F\u002F 109 - Tai Xuan Jing Symbols\\n  [0x12000, 0x123ff, 0x12400, 0x1247f], \u002F\u002F 110 - Cuneiform - Cuneiform Numbers and Punctuation\\n  [0x1d360, 0x1d37f], \u002F\u002F 111 - Counting Rod Numerals\\n  [0x1b80, 0x1bbf], \u002F\u002F 112 - Sundanese\\n  [0x1c00, 0x1c4f], \u002F\u002F 113 - Lepcha\\n  [0x1c50, 0x1c7f], \u002F\u002F 114 - Ol Chiki\\n  [0xa880, 0xa8df], \u002F\u002F 115 - Saurashtra\\n  [0xa900, 0xa92f], \u002F\u002F 116 - Kayah Li\\n  [0xa930, 0xa95f], \u002F\u002F 117 - Rejang\\n  [0xaa00, 0xaa5f], \u002F\u002F 118 - Cham\\n  [0x10190, 0x101cf], \u002F\u002F 119 - Ancient Symbols\\n  [0x101d0, 0x101ff], \u002F\u002F 120 - Phaistos Disc\\n  [0x102a0, 0x102df, 0x10280, 0x1029f, 0x10920, 0x1093f], \u002F\u002F 121 - Carian - Lycian - Lydian\\n  [0x1f030, 0x1f09f, 0x1f000, 0x1f02f], \u002F\u002F 122 - Domino Tiles - Mahjong Tiles\\n];\\n\\nfunction getUnicodeRangeFor(value, lastPosition = -1) {\\n  \u002F\u002F TODO: create a map range => position, sort the ranges and cache it.\\n  \u002F\u002F Then we can make a binary search for finding a range for a given unicode.\\n  if (lastPosition !== -1) {\\n    const range = UnicodeRanges[lastPosition];\\n    for (let i = 0, ii = range.length; i \u003C ii; i += 2) {\\n      if (value >= range[i] && value \u003C= range[i + 1]) {\\n        return lastPosition;\\n      }\\n    }\\n  }\\n  for (let i = 0, ii = UnicodeRanges.length; i \u003C ii; i++) {\\n    const range = UnicodeRanges[i];\\n    for (let j = 0, jj = range.length; j \u003C jj; j += 2) {\\n      if (value >= range[j] && value \u003C= range[j + 1]) {\\n        return i;\\n      }\\n    }\\n  }\\n  return -1;\\n}\\n\\nconst SpecialCharRegExp = new RegExp(\\\"^(\\\\\\\\s)|(\\\\\\\\p{Mn})|(\\\\\\\\p{Cf})$\\\", \\\"u\\\");\\nconst CategoryCache = new Map();\\n\\nfunction getCharUnicodeCategory(char) {\\n  const cachedCategory = CategoryCache.get(char);\\n  if (cachedCategory) {\\n    return cachedCategory;\\n  }\\n  const groups = char.match(SpecialCharRegExp);\\n  const category = {\\n    isWhitespace: !!groups?.[1],\\n    isZeroWidthDiacritic: !!groups?.[2],\\n    isInvisibleFormatMark: !!groups?.[3],\\n  };\\n  CategoryCache.set(char, category);\\n  return category;\\n}\\n\\nfunction clearUnicodeCaches() {\\n  CategoryCache.clear();\\n}\\n\\nexport {\\n  clearUnicodeCaches,\\n  getCharUnicodeCategory,\\n  getUnicodeForGlyph,\\n  getUnicodeRangeFor,\\n  mapSpecialUnicodeValues,\\n};\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { DrawOPS, info, OPS } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { getEncoding, StandardEncoding } from \\\".\u002Fencodings.js\\\";\\nimport { getGlyphsUnicode } from \\\".\u002Fglyphlist.js\\\";\\nimport { getLookupTableFactory } from \\\".\u002Fcore_utils.js\\\";\\nimport { getUnicodeForGlyph } from \\\".\u002Funicode.js\\\";\\n\\n\u002F\u002F Accented characters have issues on Windows and Linux. When this flag is\\n\u002F\u002F enabled glyphs that use seac and seac style endchar operators are truncated\\n\u002F\u002F and we instead just store the glyph id's of the base glyph and its accent to\\n\u002F\u002F be drawn individually.\\n\u002F\u002F Linux (freetype) requires that when a seac style endchar is used\\n\u002F\u002F that the charset must be a predefined one, however we build a\\n\u002F\u002F custom one. Windows just refuses to draw glyphs with seac operators.\\nconst SEAC_ANALYSIS_ENABLED = true;\\n\\nconst FontFlags = {\\n  FixedPitch: 1,\\n  Serif: 2,\\n  Symbolic: 4,\\n  Script: 8,\\n  Nonsymbolic: 32,\\n  Italic: 64,\\n  AllCap: 65536,\\n  SmallCap: 131072,\\n  ForceBold: 262144,\\n};\\n\\n\u002F\u002F prettier-ignore\\nconst MacStandardGlyphOrdering = [\\n  \\\".notdef\\\", \\\".null\\\", \\\"nonmarkingreturn\\\", \\\"space\\\", \\\"exclam\\\", \\\"quotedbl\\\",\\n  \\\"numbersign\\\", \\\"dollar\\\", \\\"percent\\\", \\\"ampersand\\\", \\\"quotesingle\\\", \\\"parenleft\\\",\\n  \\\"parenright\\\", \\\"asterisk\\\", \\\"plus\\\", \\\"comma\\\", \\\"hyphen\\\", \\\"period\\\", \\\"slash\\\",\\n  \\\"zero\\\", \\\"one\\\", \\\"two\\\", \\\"three\\\", \\\"four\\\", \\\"five\\\", \\\"six\\\", \\\"seven\\\", \\\"eight\\\",\\n  \\\"nine\\\", \\\"colon\\\", \\\"semicolon\\\", \\\"less\\\", \\\"equal\\\", \\\"greater\\\", \\\"question\\\", \\\"at\\\",\\n  \\\"A\\\", \\\"B\\\", \\\"C\\\", \\\"D\\\", \\\"E\\\", \\\"F\\\", \\\"G\\\", \\\"H\\\", \\\"I\\\", \\\"J\\\", \\\"K\\\", \\\"L\\\", \\\"M\\\", \\\"N\\\", \\\"O\\\",\\n  \\\"P\\\", \\\"Q\\\", \\\"R\\\", \\\"S\\\", \\\"T\\\", \\\"U\\\", \\\"V\\\", \\\"W\\\", \\\"X\\\", \\\"Y\\\", \\\"Z\\\", \\\"bracketleft\\\",\\n  \\\"backslash\\\", \\\"bracketright\\\", \\\"asciicircum\\\", \\\"underscore\\\", \\\"grave\\\", \\\"a\\\", \\\"b\\\",\\n  \\\"c\\\", \\\"d\\\", \\\"e\\\", \\\"f\\\", \\\"g\\\", \\\"h\\\", \\\"i\\\", \\\"j\\\", \\\"k\\\", \\\"l\\\", \\\"m\\\", \\\"n\\\", \\\"o\\\", \\\"p\\\", \\\"q\\\",\\n  \\\"r\\\", \\\"s\\\", \\\"t\\\", \\\"u\\\", \\\"v\\\", \\\"w\\\", \\\"x\\\", \\\"y\\\", \\\"z\\\", \\\"braceleft\\\", \\\"bar\\\", \\\"braceright\\\",\\n  \\\"asciitilde\\\", \\\"Adieresis\\\", \\\"Aring\\\", \\\"Ccedilla\\\", \\\"Eacute\\\", \\\"Ntilde\\\",\\n  \\\"Odieresis\\\", \\\"Udieresis\\\", \\\"aacute\\\", \\\"agrave\\\", \\\"acircumflex\\\", \\\"adieresis\\\",\\n  \\\"atilde\\\", \\\"aring\\\", \\\"ccedilla\\\", \\\"eacute\\\", \\\"egrave\\\", \\\"ecircumflex\\\", \\\"edieresis\\\",\\n  \\\"iacute\\\", \\\"igrave\\\", \\\"icircumflex\\\", \\\"idieresis\\\", \\\"ntilde\\\", \\\"oacute\\\", \\\"ograve\\\",\\n  \\\"ocircumflex\\\", \\\"odieresis\\\", \\\"otilde\\\", \\\"uacute\\\", \\\"ugrave\\\", \\\"ucircumflex\\\",\\n  \\\"udieresis\\\", \\\"dagger\\\", \\\"degree\\\", \\\"cent\\\", \\\"sterling\\\", \\\"section\\\", \\\"bullet\\\",\\n  \\\"paragraph\\\", \\\"germandbls\\\", \\\"registered\\\", \\\"copyright\\\", \\\"trademark\\\", \\\"acute\\\",\\n  \\\"dieresis\\\", \\\"notequal\\\", \\\"AE\\\", \\\"Oslash\\\", \\\"infinity\\\", \\\"plusminus\\\", \\\"lessequal\\\",\\n  \\\"greaterequal\\\", \\\"yen\\\", \\\"mu\\\", \\\"partialdiff\\\", \\\"summation\\\", \\\"product\\\", \\\"pi\\\",\\n  \\\"integral\\\", \\\"ordfeminine\\\", \\\"ordmasculine\\\", \\\"Omega\\\", \\\"ae\\\", \\\"oslash\\\",\\n  \\\"questiondown\\\", \\\"exclamdown\\\", \\\"logicalnot\\\", \\\"radical\\\", \\\"florin\\\",\\n  \\\"approxequal\\\", \\\"Delta\\\", \\\"guillemotleft\\\", \\\"guillemotright\\\", \\\"ellipsis\\\",\\n  \\\"nonbreakingspace\\\", \\\"Agrave\\\", \\\"Atilde\\\", \\\"Otilde\\\", \\\"OE\\\", \\\"oe\\\", \\\"endash\\\",\\n  \\\"emdash\\\", \\\"quotedblleft\\\", \\\"quotedblright\\\", \\\"quoteleft\\\", \\\"quoteright\\\",\\n  \\\"divide\\\", \\\"lozenge\\\", \\\"ydieresis\\\", \\\"Ydieresis\\\", \\\"fraction\\\", \\\"currency\\\",\\n  \\\"guilsinglleft\\\", \\\"guilsinglright\\\", \\\"fi\\\", \\\"fl\\\", \\\"daggerdbl\\\", \\\"periodcentered\\\",\\n  \\\"quotesinglbase\\\", \\\"quotedblbase\\\", \\\"perthousand\\\", \\\"Acircumflex\\\",\\n  \\\"Ecircumflex\\\", \\\"Aacute\\\", \\\"Edieresis\\\", \\\"Egrave\\\", \\\"Iacute\\\", \\\"Icircumflex\\\",\\n  \\\"Idieresis\\\", \\\"Igrave\\\", \\\"Oacute\\\", \\\"Ocircumflex\\\", \\\"apple\\\", \\\"Ograve\\\", \\\"Uacute\\\",\\n  \\\"Ucircumflex\\\", \\\"Ugrave\\\", \\\"dotlessi\\\", \\\"circumflex\\\", \\\"tilde\\\", \\\"macron\\\",\\n  \\\"breve\\\", \\\"dotaccent\\\", \\\"ring\\\", \\\"cedilla\\\", \\\"hungarumlaut\\\", \\\"ogonek\\\", \\\"caron\\\",\\n  \\\"Lslash\\\", \\\"lslash\\\", \\\"Scaron\\\", \\\"scaron\\\", \\\"Zcaron\\\", \\\"zcaron\\\", \\\"brokenbar\\\",\\n  \\\"Eth\\\", \\\"eth\\\", \\\"Yacute\\\", \\\"yacute\\\", \\\"Thorn\\\", \\\"thorn\\\", \\\"minus\\\", \\\"multiply\\\",\\n  \\\"onesuperior\\\", \\\"twosuperior\\\", \\\"threesuperior\\\", \\\"onehalf\\\", \\\"onequarter\\\",\\n  \\\"threequarters\\\", \\\"franc\\\", \\\"Gbreve\\\", \\\"gbreve\\\", \\\"Idotaccent\\\", \\\"Scedilla\\\",\\n  \\\"scedilla\\\", \\\"Cacute\\\", \\\"cacute\\\", \\\"Ccaron\\\", \\\"ccaron\\\", \\\"dcroat\\\"];\\n\\n\u002F\u002F Some bad PDF generators, e.g. Scribus PDF, include glyph names\\n\u002F\u002F in a 'uniXXXX' format -- attempting to recover proper ones.\\nfunction recoverGlyphName(name, glyphsUnicodeMap) {\\n  if (glyphsUnicodeMap[name] !== undefined) {\\n    return name;\\n  }\\n  \u002F\u002F The glyph name is non-standard, trying to recover.\\n  const unicode = getUnicodeForGlyph(name, glyphsUnicodeMap);\\n  if (unicode !== -1) {\\n    for (const key in glyphsUnicodeMap) {\\n      if (glyphsUnicodeMap[key] === unicode) {\\n        return key;\\n      }\\n    }\\n  }\\n  info(\\\"Unable to recover a standard glyph name for: \\\" + name);\\n  return name;\\n}\\n\\n\u002F**\\n * Shared logic for building a char code to glyph id mapping for Type1 and\\n * simple CFF fonts. See section 9.6.6.2 of the spec.\\n * @param {Object} properties Font properties object.\\n * @param {Object} builtInEncoding The encoding contained within the actual font\\n *   data.\\n * @param {Array} glyphNames Array of glyph names where the index is the\\n *   glyph ID.\\n * @returns {Object} A char code to glyph ID map.\\n *\u002F\\nfunction type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {\\n  const charCodeToGlyphId = Object.create(null);\\n  let glyphId, charCode, baseEncoding;\\n  const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\\n\\n  if (properties.isInternalFont) {\\n    baseEncoding = builtInEncoding;\\n    for (charCode = 0; charCode \u003C baseEncoding.length; charCode++) {\\n      glyphId = glyphNames.indexOf(baseEncoding[charCode]);\\n      charCodeToGlyphId[charCode] = glyphId >= 0 ? glyphId : \u002F* notdef = *\u002F 0;\\n    }\\n  } else if (properties.baseEncodingName) {\\n    \u002F\u002F If a valid base encoding name was used, the mapping is initialized with\\n    \u002F\u002F that.\\n    baseEncoding = getEncoding(properties.baseEncodingName);\\n    for (charCode = 0; charCode \u003C baseEncoding.length; charCode++) {\\n      glyphId = glyphNames.indexOf(baseEncoding[charCode]);\\n      charCodeToGlyphId[charCode] = glyphId >= 0 ? glyphId : \u002F* notdef = *\u002F 0;\\n    }\\n  } else if (isSymbolicFont) {\\n    \u002F\u002F For a symbolic font the encoding should be the fonts built-in encoding.\\n    for (charCode in builtInEncoding) {\\n      charCodeToGlyphId[charCode] = builtInEncoding[charCode];\\n    }\\n  } else {\\n    \u002F\u002F For non-symbolic fonts that don't have a base encoding the standard\\n    \u002F\u002F encoding should be used.\\n    baseEncoding = StandardEncoding;\\n    for (charCode = 0; charCode \u003C baseEncoding.length; charCode++) {\\n      glyphId = glyphNames.indexOf(baseEncoding[charCode]);\\n      charCodeToGlyphId[charCode] = glyphId >= 0 ? glyphId : \u002F* notdef = *\u002F 0;\\n    }\\n  }\\n\\n  \u002F\u002F Lastly, merge in the differences.\\n  const differences = properties.differences;\\n  let glyphsUnicodeMap;\\n  if (differences) {\\n    for (charCode in differences) {\\n      const glyphName = differences[charCode];\\n      glyphId = glyphNames.indexOf(glyphName);\\n\\n      if (glyphId === -1) {\\n        if (!glyphsUnicodeMap) {\\n          glyphsUnicodeMap = getGlyphsUnicode();\\n        }\\n        const standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\\n        if (standardGlyphName !== glyphName) {\\n          glyphId = glyphNames.indexOf(standardGlyphName);\\n        }\\n      }\\n      charCodeToGlyphId[charCode] = glyphId >= 0 ? glyphId : \u002F* notdef = *\u002F 0;\\n    }\\n  }\\n  return charCodeToGlyphId;\\n}\\n\\nfunction normalizeFontName(name) {\\n  return name.replaceAll(\u002F[,_]\u002Fg, \\\"-\\\").replaceAll(\u002F\\\\s\u002Fg, \\\"\\\");\\n}\\n\\nconst getVerticalPresentationForm = getLookupTableFactory(t => {\\n  \u002F\u002F This table has been found at\\n  \u002F\u002F https:\u002F\u002Fsearchfox.org\u002Fmozilla-central\u002Frev\u002Fcbdfa503a87597b20719aae5f6a1efccd6cb3b7b\u002Fgfx\u002Fthebes\u002FgfxHarfBuzzShaper.cpp#251-294\\n  t[0x2013] = 0xfe32; \u002F\u002F EN DASH\\n  t[0x2014] = 0xfe31; \u002F\u002F EM DASH\\n  t[0x2025] = 0xfe30; \u002F\u002F TWO DOT LEADER\\n  t[0x2026] = 0xfe19; \u002F\u002F HORIZONTAL ELLIPSIS\\n  t[0x3001] = 0xfe11; \u002F\u002F IDEOGRAPHIC COMMA\\n  t[0x3002] = 0xfe12; \u002F\u002F IDEOGRAPHIC FULL STOP\\n  t[0x3008] = 0xfe3f; \u002F\u002F LEFT ANGLE BRACKET\\n  t[0x3009] = 0xfe40; \u002F\u002F RIGHT ANGLE BRACKET\\n  t[0x300a] = 0xfe3d; \u002F\u002F LEFT DOUBLE ANGLE BRACKET\\n  t[0x300b] = 0xfe3e; \u002F\u002F RIGHT DOUBLE ANGLE BRACKET\\n  t[0x300c] = 0xfe41; \u002F\u002F LEFT CORNER BRACKET\\n  t[0x300d] = 0xfe42; \u002F\u002F RIGHT CORNER BRACKET\\n  t[0x300e] = 0xfe43; \u002F\u002F LEFT WHITE CORNER BRACKET\\n  t[0x300f] = 0xfe44; \u002F\u002F RIGHT WHITE CORNER BRACKET\\n  t[0x3010] = 0xfe3b; \u002F\u002F LEFT BLACK LENTICULAR BRACKET\\n  t[0x3011] = 0xfe3c; \u002F\u002F RIGHT BLACK LENTICULAR BRACKET\\n  t[0x3014] = 0xfe39; \u002F\u002F LEFT TORTOISE SHELL BRACKET\\n  t[0x3015] = 0xfe3a; \u002F\u002F RIGHT TORTOISE SHELL BRACKET\\n  t[0x3016] = 0xfe17; \u002F\u002F LEFT WHITE LENTICULAR BRACKET\\n  t[0x3017] = 0xfe18; \u002F\u002F RIGHT WHITE LENTICULAR BRACKET\\n  t[0xfe4f] = 0xfe34; \u002F\u002F WAVY LOW LINE\\n  t[0xff01] = 0xfe15; \u002F\u002F FULLWIDTH EXCLAMATION MARK\\n  t[0xff08] = 0xfe35; \u002F\u002F FULLWIDTH LEFT PARENTHESIS\\n  t[0xff09] = 0xfe36; \u002F\u002F FULLWIDTH RIGHT PARENTHESIS\\n  t[0xff0c] = 0xfe10; \u002F\u002F FULLWIDTH COMMA\\n  t[0xff1a] = 0xfe13; \u002F\u002F FULLWIDTH COLON\\n  t[0xff1b] = 0xfe14; \u002F\u002F FULLWIDTH SEMICOLON\\n  t[0xff1f] = 0xfe16; \u002F\u002F FULLWIDTH QUESTION MARK\\n  t[0xff3b] = 0xfe47; \u002F\u002F FULLWIDTH LEFT SQUARE BRACKET\\n  t[0xff3d] = 0xfe48; \u002F\u002F FULLWIDTH RIGHT SQUARE BRACKET\\n  t[0xff3f] = 0xfe33; \u002F\u002F FULLWIDTH LOW LINE\\n  t[0xff5b] = 0xfe37; \u002F\u002F FULLWIDTH LEFT CURLY BRACKET\\n  t[0xff5d] = 0xfe38; \u002F\u002F FULLWIDTH RIGHT CURLY BRACKET\\n});\\n\\n\u002F\u002F To disable Type3 compilation, set the value to `-1`.\\nconst MAX_SIZE_TO_COMPILE = 1000;\\n\\nfunction compileType3Glyph({ data: img, width, height }) {\\n  if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {\\n    return null;\\n  }\\n\\n  const POINT_TO_PROCESS_LIMIT = 1000;\\n  const POINT_TYPES = new Uint8Array([\\n    0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0,\\n  ]);\\n\\n  const width1 = width + 1;\\n  const points = new Uint8Array(width1 * (height + 1));\\n  let i, j, j0;\\n\\n  \u002F\u002F decodes bit-packed mask data\\n  const lineSize = (width + 7) & ~7;\\n  const data = new Uint8Array(lineSize * height);\\n  let pos = 0;\\n  for (const elem of img) {\\n    let mask = 128;\\n    while (mask > 0) {\\n      data[pos++] = elem & mask ? 0 : 255;\\n      mask >>= 1;\\n    }\\n  }\\n\\n  \u002F\u002F finding interesting points: every point is located between mask pixels,\\n  \u002F\u002F so there will be points of the (width + 1)x(height + 1) grid. Every point\\n  \u002F\u002F will have flags assigned based on neighboring mask pixels:\\n  \u002F\u002F   4 | 8\\n  \u002F\u002F   --P--\\n  \u002F\u002F   2 | 1\\n  \u002F\u002F We are interested only in points with the flags:\\n  \u002F\u002F   - outside corners: 1, 2, 4, 8;\\n  \u002F\u002F   - inside corners: 7, 11, 13, 14;\\n  \u002F\u002F   - and, intersections: 5, 10.\\n  let count = 0;\\n  pos = 0;\\n  if (data[pos] !== 0) {\\n    points[0] = 1;\\n    ++count;\\n  }\\n  for (j = 1; j \u003C width; j++) {\\n    if (data[pos] !== data[pos + 1]) {\\n      points[j] = data[pos] ? 2 : 1;\\n      ++count;\\n    }\\n    pos++;\\n  }\\n  if (data[pos] !== 0) {\\n    points[j] = 2;\\n    ++count;\\n  }\\n  for (i = 1; i \u003C height; i++) {\\n    pos = i * lineSize;\\n    j0 = i * width1;\\n    if (data[pos - lineSize] !== data[pos]) {\\n      points[j0] = data[pos] ? 1 : 8;\\n      ++count;\\n    }\\n    \u002F\u002F 'sum' is the position of the current pixel configuration in the 'TYPES'\\n    \u002F\u002F array (in order 8-1-2-4, so we can use '>>2' to shift the column).\\n    let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\\n    for (j = 1; j \u003C width; j++) {\\n      sum =\\n        (sum >> 2) +\\n        (data[pos + 1] ? 4 : 0) +\\n        (data[pos - lineSize + 1] ? 8 : 0);\\n      if (POINT_TYPES[sum]) {\\n        points[j0 + j] = POINT_TYPES[sum];\\n        ++count;\\n      }\\n      pos++;\\n    }\\n    if (data[pos - lineSize] !== data[pos]) {\\n      points[j0 + j] = data[pos] ? 2 : 4;\\n      ++count;\\n    }\\n\\n    if (count > POINT_TO_PROCESS_LIMIT) {\\n      return null;\\n    }\\n  }\\n\\n  pos = lineSize * (height - 1);\\n  j0 = i * width1;\\n  if (data[pos] !== 0) {\\n    points[j0] = 8;\\n    ++count;\\n  }\\n  for (j = 1; j \u003C width; j++) {\\n    if (data[pos] !== data[pos + 1]) {\\n      points[j0 + j] = data[pos] ? 4 : 8;\\n      ++count;\\n    }\\n    pos++;\\n  }\\n  if (data[pos] !== 0) {\\n    points[j0 + j] = 4;\\n    ++count;\\n  }\\n  if (count > POINT_TO_PROCESS_LIMIT) {\\n    return null;\\n  }\\n\\n  \u002F\u002F building outlines\\n  const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\\n  const pathBuf = [];\\n\\n  \u002F\u002F the path shall be painted in [0..1]x[0..1] space\\n  const { a, b, c, d, e, f } = new DOMMatrix()\\n    .scaleSelf(1 \u002F width, -1 \u002F height)\\n    .translateSelf(0, -height);\\n\\n  for (i = 0; count && i \u003C= height; i++) {\\n    let p = i * width1;\\n    const end = p + width;\\n    while (p \u003C end && !points[p]) {\\n      p++;\\n    }\\n    if (p === end) {\\n      continue;\\n    }\\n    let x = p % width1;\\n    let y = i;\\n    pathBuf.push(DrawOPS.moveTo, a * x + c * y + e, b * x + d * y + f);\\n\\n    const p0 = p;\\n    let type = points[p];\\n    do {\\n      const step = steps[type];\\n      do {\\n        p += step;\\n      } while (!points[p]);\\n\\n      const pp = points[p];\\n      if (pp !== 5 && pp !== 10) {\\n        \u002F\u002F set new direction\\n        type = pp;\\n        \u002F\u002F delete mark\\n        points[p] = 0;\\n      } else {\\n        \u002F\u002F type is 5 or 10, ie, a crossing\\n        \u002F\u002F set new direction\\n        type = pp & ((0x33 * type) >> 4);\\n        \u002F\u002F set new type for \\\"future hit\\\"\\n        points[p] &= (type >> 2) | (type \u003C\u003C 2);\\n      }\\n      x = p % width1;\\n      y = (p \u002F width1) | 0;\\n      pathBuf.push(DrawOPS.lineTo, a * x + c * y + e, b * x + d * y + f);\\n\\n      if (!points[p]) {\\n        --count;\\n      }\\n    } while (p0 !== p);\\n    --i;\\n  }\\n\\n  return [\\n    OPS.rawFillPath,\\n    [new Float32Array(pathBuf)],\\n    new Float32Array([0, 0, width, height]),\\n  ];\\n}\\n\\nexport {\\n  compileType3Glyph,\\n  FontFlags,\\n  getVerticalPresentationForm,\\n  MacStandardGlyphOrdering,\\n  normalizeFontName,\\n  recoverGlyphName,\\n  SEAC_ANALYSIS_ENABLED,\\n  type1FontGlyphMapping,\\n};\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F prettier-ignore\\nconst ISOAdobeCharset = [\\n  \\\".notdef\\\", \\\"space\\\", \\\"exclam\\\", \\\"quotedbl\\\", \\\"numbersign\\\", \\\"dollar\\\",\\n  \\\"percent\\\", \\\"ampersand\\\", \\\"quoteright\\\", \\\"parenleft\\\", \\\"parenright\\\",\\n  \\\"asterisk\\\", \\\"plus\\\", \\\"comma\\\", \\\"hyphen\\\", \\\"period\\\", \\\"slash\\\", \\\"zero\\\",\\n  \\\"one\\\", \\\"two\\\", \\\"three\\\", \\\"four\\\", \\\"five\\\", \\\"six\\\", \\\"seven\\\", \\\"eight\\\",\\n  \\\"nine\\\", \\\"colon\\\", \\\"semicolon\\\", \\\"less\\\", \\\"equal\\\", \\\"greater\\\", \\\"question\\\",\\n  \\\"at\\\", \\\"A\\\", \\\"B\\\", \\\"C\\\", \\\"D\\\", \\\"E\\\", \\\"F\\\", \\\"G\\\", \\\"H\\\", \\\"I\\\", \\\"J\\\", \\\"K\\\", \\\"L\\\", \\\"M\\\",\\n  \\\"N\\\", \\\"O\\\", \\\"P\\\", \\\"Q\\\", \\\"R\\\", \\\"S\\\", \\\"T\\\", \\\"U\\\", \\\"V\\\", \\\"W\\\", \\\"X\\\", \\\"Y\\\", \\\"Z\\\",\\n  \\\"bracketleft\\\", \\\"backslash\\\", \\\"bracketright\\\", \\\"asciicircum\\\", \\\"underscore\\\",\\n  \\\"quoteleft\\\", \\\"a\\\", \\\"b\\\", \\\"c\\\", \\\"d\\\", \\\"e\\\", \\\"f\\\", \\\"g\\\", \\\"h\\\", \\\"i\\\", \\\"j\\\", \\\"k\\\", \\\"l\\\",\\n  \\\"m\\\", \\\"n\\\", \\\"o\\\", \\\"p\\\", \\\"q\\\", \\\"r\\\", \\\"s\\\", \\\"t\\\", \\\"u\\\", \\\"v\\\", \\\"w\\\", \\\"x\\\", \\\"y\\\", \\\"z\\\",\\n  \\\"braceleft\\\", \\\"bar\\\", \\\"braceright\\\", \\\"asciitilde\\\", \\\"exclamdown\\\", \\\"cent\\\",\\n  \\\"sterling\\\", \\\"fraction\\\", \\\"yen\\\", \\\"florin\\\", \\\"section\\\", \\\"currency\\\",\\n  \\\"quotesingle\\\", \\\"quotedblleft\\\", \\\"guillemotleft\\\", \\\"guilsinglleft\\\",\\n  \\\"guilsinglright\\\", \\\"fi\\\", \\\"fl\\\", \\\"endash\\\", \\\"dagger\\\", \\\"daggerdbl\\\",\\n  \\\"periodcentered\\\", \\\"paragraph\\\", \\\"bullet\\\", \\\"quotesinglbase\\\",\\n  \\\"quotedblbase\\\", \\\"quotedblright\\\", \\\"guillemotright\\\", \\\"ellipsis\\\",\\n  \\\"perthousand\\\", \\\"questiondown\\\", \\\"grave\\\", \\\"acute\\\", \\\"circumflex\\\", \\\"tilde\\\",\\n  \\\"macron\\\", \\\"breve\\\", \\\"dotaccent\\\", \\\"dieresis\\\", \\\"ring\\\", \\\"cedilla\\\",\\n  \\\"hungarumlaut\\\", \\\"ogonek\\\", \\\"caron\\\", \\\"emdash\\\", \\\"AE\\\", \\\"ordfeminine\\\",\\n  \\\"Lslash\\\", \\\"Oslash\\\", \\\"OE\\\", \\\"ordmasculine\\\", \\\"ae\\\", \\\"dotlessi\\\", \\\"lslash\\\",\\n  \\\"oslash\\\", \\\"oe\\\", \\\"germandbls\\\", \\\"onesuperior\\\", \\\"logicalnot\\\", \\\"mu\\\",\\n  \\\"trademark\\\", \\\"Eth\\\", \\\"onehalf\\\", \\\"plusminus\\\", \\\"Thorn\\\", \\\"onequarter\\\",\\n  \\\"divide\\\", \\\"brokenbar\\\", \\\"degree\\\", \\\"thorn\\\", \\\"threequarters\\\", \\\"twosuperior\\\",\\n  \\\"registered\\\", \\\"minus\\\", \\\"eth\\\", \\\"multiply\\\", \\\"threesuperior\\\", \\\"copyright\\\",\\n  \\\"Aacute\\\", \\\"Acircumflex\\\", \\\"Adieresis\\\", \\\"Agrave\\\", \\\"Aring\\\", \\\"Atilde\\\",\\n  \\\"Ccedilla\\\", \\\"Eacute\\\", \\\"Ecircumflex\\\", \\\"Edieresis\\\", \\\"Egrave\\\", \\\"Iacute\\\",\\n  \\\"Icircumflex\\\", \\\"Idieresis\\\", \\\"Igrave\\\", \\\"Ntilde\\\", \\\"Oacute\\\", \\\"Ocircumflex\\\",\\n  \\\"Odieresis\\\", \\\"Ograve\\\", \\\"Otilde\\\", \\\"Scaron\\\", \\\"Uacute\\\", \\\"Ucircumflex\\\",\\n  \\\"Udieresis\\\", \\\"Ugrave\\\", \\\"Yacute\\\", \\\"Ydieresis\\\", \\\"Zcaron\\\", \\\"aacute\\\",\\n  \\\"acircumflex\\\", \\\"adieresis\\\", \\\"agrave\\\", \\\"aring\\\", \\\"atilde\\\", \\\"ccedilla\\\",\\n  \\\"eacute\\\", \\\"ecircumflex\\\", \\\"edieresis\\\", \\\"egrave\\\", \\\"iacute\\\", \\\"icircumflex\\\",\\n  \\\"idieresis\\\", \\\"igrave\\\", \\\"ntilde\\\", \\\"oacute\\\", \\\"ocircumflex\\\", \\\"odieresis\\\",\\n  \\\"ograve\\\", \\\"otilde\\\", \\\"scaron\\\", \\\"uacute\\\", \\\"ucircumflex\\\", \\\"udieresis\\\",\\n  \\\"ugrave\\\", \\\"yacute\\\", \\\"ydieresis\\\", \\\"zcaron\\\"\\n];\\n\\n\u002F\u002F prettier-ignore\\nconst ExpertCharset = [\\n  \\\".notdef\\\", \\\"space\\\", \\\"exclamsmall\\\", \\\"Hungarumlautsmall\\\", \\\"dollaroldstyle\\\",\\n  \\\"dollarsuperior\\\", \\\"ampersandsmall\\\", \\\"Acutesmall\\\", \\\"parenleftsuperior\\\",\\n  \\\"parenrightsuperior\\\", \\\"twodotenleader\\\", \\\"onedotenleader\\\", \\\"comma\\\",\\n  \\\"hyphen\\\", \\\"period\\\", \\\"fraction\\\", \\\"zerooldstyle\\\", \\\"oneoldstyle\\\",\\n  \\\"twooldstyle\\\", \\\"threeoldstyle\\\", \\\"fouroldstyle\\\", \\\"fiveoldstyle\\\",\\n  \\\"sixoldstyle\\\", \\\"sevenoldstyle\\\", \\\"eightoldstyle\\\", \\\"nineoldstyle\\\",\\n  \\\"colon\\\", \\\"semicolon\\\", \\\"commasuperior\\\", \\\"threequartersemdash\\\",\\n  \\\"periodsuperior\\\", \\\"questionsmall\\\", \\\"asuperior\\\", \\\"bsuperior\\\",\\n  \\\"centsuperior\\\", \\\"dsuperior\\\", \\\"esuperior\\\", \\\"isuperior\\\", \\\"lsuperior\\\",\\n  \\\"msuperior\\\", \\\"nsuperior\\\", \\\"osuperior\\\", \\\"rsuperior\\\", \\\"ssuperior\\\",\\n  \\\"tsuperior\\\", \\\"ff\\\", \\\"fi\\\", \\\"fl\\\", \\\"ffi\\\", \\\"ffl\\\", \\\"parenleftinferior\\\",\\n  \\\"parenrightinferior\\\", \\\"Circumflexsmall\\\", \\\"hyphensuperior\\\", \\\"Gravesmall\\\",\\n  \\\"Asmall\\\", \\\"Bsmall\\\", \\\"Csmall\\\", \\\"Dsmall\\\", \\\"Esmall\\\", \\\"Fsmall\\\", \\\"Gsmall\\\",\\n  \\\"Hsmall\\\", \\\"Ismall\\\", \\\"Jsmall\\\", \\\"Ksmall\\\", \\\"Lsmall\\\", \\\"Msmall\\\", \\\"Nsmall\\\",\\n  \\\"Osmall\\\", \\\"Psmall\\\", \\\"Qsmall\\\", \\\"Rsmall\\\", \\\"Ssmall\\\", \\\"Tsmall\\\", \\\"Usmall\\\",\\n  \\\"Vsmall\\\", \\\"Wsmall\\\", \\\"Xsmall\\\", \\\"Ysmall\\\", \\\"Zsmall\\\", \\\"colonmonetary\\\",\\n  \\\"onefitted\\\", \\\"rupiah\\\", \\\"Tildesmall\\\", \\\"exclamdownsmall\\\", \\\"centoldstyle\\\",\\n  \\\"Lslashsmall\\\", \\\"Scaronsmall\\\", \\\"Zcaronsmall\\\", \\\"Dieresissmall\\\",\\n  \\\"Brevesmall\\\", \\\"Caronsmall\\\", \\\"Dotaccentsmall\\\", \\\"Macronsmall\\\",\\n  \\\"figuredash\\\", \\\"hypheninferior\\\", \\\"Ogoneksmall\\\", \\\"Ringsmall\\\",\\n  \\\"Cedillasmall\\\", \\\"onequarter\\\", \\\"onehalf\\\", \\\"threequarters\\\",\\n  \\\"questiondownsmall\\\", \\\"oneeighth\\\", \\\"threeeighths\\\", \\\"fiveeighths\\\",\\n  \\\"seveneighths\\\", \\\"onethird\\\", \\\"twothirds\\\", \\\"zerosuperior\\\", \\\"onesuperior\\\",\\n  \\\"twosuperior\\\", \\\"threesuperior\\\", \\\"foursuperior\\\", \\\"fivesuperior\\\",\\n  \\\"sixsuperior\\\", \\\"sevensuperior\\\", \\\"eightsuperior\\\", \\\"ninesuperior\\\",\\n  \\\"zeroinferior\\\", \\\"oneinferior\\\", \\\"twoinferior\\\", \\\"threeinferior\\\",\\n  \\\"fourinferior\\\", \\\"fiveinferior\\\", \\\"sixinferior\\\", \\\"seveninferior\\\",\\n  \\\"eightinferior\\\", \\\"nineinferior\\\", \\\"centinferior\\\", \\\"dollarinferior\\\",\\n  \\\"periodinferior\\\", \\\"commainferior\\\", \\\"Agravesmall\\\", \\\"Aacutesmall\\\",\\n  \\\"Acircumflexsmall\\\", \\\"Atildesmall\\\", \\\"Adieresissmall\\\", \\\"Aringsmall\\\",\\n  \\\"AEsmall\\\", \\\"Ccedillasmall\\\", \\\"Egravesmall\\\", \\\"Eacutesmall\\\",\\n  \\\"Ecircumflexsmall\\\", \\\"Edieresissmall\\\", \\\"Igravesmall\\\", \\\"Iacutesmall\\\",\\n  \\\"Icircumflexsmall\\\", \\\"Idieresissmall\\\", \\\"Ethsmall\\\", \\\"Ntildesmall\\\",\\n  \\\"Ogravesmall\\\", \\\"Oacutesmall\\\", \\\"Ocircumflexsmall\\\", \\\"Otildesmall\\\",\\n  \\\"Odieresissmall\\\", \\\"OEsmall\\\", \\\"Oslashsmall\\\", \\\"Ugravesmall\\\", \\\"Uacutesmall\\\",\\n  \\\"Ucircumflexsmall\\\", \\\"Udieresissmall\\\", \\\"Yacutesmall\\\", \\\"Thornsmall\\\",\\n  \\\"Ydieresissmall\\\"\\n];\\n\\n\u002F\u002F prettier-ignore\\nconst ExpertSubsetCharset = [\\n  \\\".notdef\\\", \\\"space\\\", \\\"dollaroldstyle\\\", \\\"dollarsuperior\\\",\\n  \\\"parenleftsuperior\\\", \\\"parenrightsuperior\\\", \\\"twodotenleader\\\",\\n  \\\"onedotenleader\\\", \\\"comma\\\", \\\"hyphen\\\", \\\"period\\\", \\\"fraction\\\",\\n  \\\"zerooldstyle\\\", \\\"oneoldstyle\\\", \\\"twooldstyle\\\", \\\"threeoldstyle\\\",\\n  \\\"fouroldstyle\\\", \\\"fiveoldstyle\\\", \\\"sixoldstyle\\\", \\\"sevenoldstyle\\\",\\n  \\\"eightoldstyle\\\", \\\"nineoldstyle\\\", \\\"colon\\\", \\\"semicolon\\\", \\\"commasuperior\\\",\\n  \\\"threequartersemdash\\\", \\\"periodsuperior\\\", \\\"asuperior\\\", \\\"bsuperior\\\",\\n  \\\"centsuperior\\\", \\\"dsuperior\\\", \\\"esuperior\\\", \\\"isuperior\\\", \\\"lsuperior\\\",\\n  \\\"msuperior\\\", \\\"nsuperior\\\", \\\"osuperior\\\", \\\"rsuperior\\\", \\\"ssuperior\\\",\\n  \\\"tsuperior\\\", \\\"ff\\\", \\\"fi\\\", \\\"fl\\\", \\\"ffi\\\", \\\"ffl\\\", \\\"parenleftinferior\\\",\\n  \\\"parenrightinferior\\\", \\\"hyphensuperior\\\", \\\"colonmonetary\\\", \\\"onefitted\\\",\\n  \\\"rupiah\\\", \\\"centoldstyle\\\", \\\"figuredash\\\", \\\"hypheninferior\\\", \\\"onequarter\\\",\\n  \\\"onehalf\\\", \\\"threequarters\\\", \\\"oneeighth\\\", \\\"threeeighths\\\", \\\"fiveeighths\\\",\\n  \\\"seveneighths\\\", \\\"onethird\\\", \\\"twothirds\\\", \\\"zerosuperior\\\", \\\"onesuperior\\\",\\n  \\\"twosuperior\\\", \\\"threesuperior\\\", \\\"foursuperior\\\", \\\"fivesuperior\\\",\\n  \\\"sixsuperior\\\", \\\"sevensuperior\\\", \\\"eightsuperior\\\", \\\"ninesuperior\\\",\\n  \\\"zeroinferior\\\", \\\"oneinferior\\\", \\\"twoinferior\\\", \\\"threeinferior\\\",\\n  \\\"fourinferior\\\", \\\"fiveinferior\\\", \\\"sixinferior\\\", \\\"seveninferior\\\",\\n  \\\"eightinferior\\\", \\\"nineinferior\\\", \\\"centinferior\\\", \\\"dollarinferior\\\",\\n  \\\"periodinferior\\\", \\\"commainferior\\\"\\n];\\n\\nexport { ExpertCharset, ExpertSubsetCharset, ISOAdobeCharset };\\n\",\"\u002F* Copyright 2016 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  bytesToString,\\n  FormatError,\\n  info,\\n  shadow,\\n  stringToBytes,\\n  Util,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  ExpertCharset,\\n  ExpertSubsetCharset,\\n  ISOAdobeCharset,\\n} from \\\".\u002Fcharsets.js\\\";\\nimport { ExpertEncoding, StandardEncoding } from \\\".\u002Fencodings.js\\\";\\nimport { readInt16 } from \\\".\u002Fcore_utils.js\\\";\\n\\n\u002F\u002F Maximum subroutine call depth of type 2 charstrings. Matches OTS.\\nconst MAX_SUBR_NESTING = 10;\\n\\n\u002F**\\n * The CFF class takes a Type1 file and wrap it into a\\n * 'Compact Font Format' which itself embed Type2 charstrings.\\n *\u002F\\n\u002F\u002F prettier-ignore\\nconst CFFStandardStrings = [\\n  \\\".notdef\\\", \\\"space\\\", \\\"exclam\\\", \\\"quotedbl\\\", \\\"numbersign\\\", \\\"dollar\\\", \\\"percent\\\",\\n  \\\"ampersand\\\", \\\"quoteright\\\", \\\"parenleft\\\", \\\"parenright\\\", \\\"asterisk\\\", \\\"plus\\\",\\n  \\\"comma\\\", \\\"hyphen\\\", \\\"period\\\", \\\"slash\\\", \\\"zero\\\", \\\"one\\\", \\\"two\\\", \\\"three\\\", \\\"four\\\",\\n  \\\"five\\\", \\\"six\\\", \\\"seven\\\", \\\"eight\\\", \\\"nine\\\", \\\"colon\\\", \\\"semicolon\\\", \\\"less\\\",\\n  \\\"equal\\\", \\\"greater\\\", \\\"question\\\", \\\"at\\\", \\\"A\\\", \\\"B\\\", \\\"C\\\", \\\"D\\\", \\\"E\\\", \\\"F\\\", \\\"G\\\", \\\"H\\\",\\n  \\\"I\\\", \\\"J\\\", \\\"K\\\", \\\"L\\\", \\\"M\\\", \\\"N\\\", \\\"O\\\", \\\"P\\\", \\\"Q\\\", \\\"R\\\", \\\"S\\\", \\\"T\\\", \\\"U\\\", \\\"V\\\", \\\"W\\\",\\n  \\\"X\\\", \\\"Y\\\", \\\"Z\\\", \\\"bracketleft\\\", \\\"backslash\\\", \\\"bracketright\\\", \\\"asciicircum\\\",\\n  \\\"underscore\\\", \\\"quoteleft\\\", \\\"a\\\", \\\"b\\\", \\\"c\\\", \\\"d\\\", \\\"e\\\", \\\"f\\\", \\\"g\\\", \\\"h\\\", \\\"i\\\", \\\"j\\\",\\n  \\\"k\\\", \\\"l\\\", \\\"m\\\", \\\"n\\\", \\\"o\\\", \\\"p\\\", \\\"q\\\", \\\"r\\\", \\\"s\\\", \\\"t\\\", \\\"u\\\", \\\"v\\\", \\\"w\\\", \\\"x\\\", \\\"y\\\",\\n  \\\"z\\\", \\\"braceleft\\\", \\\"bar\\\", \\\"braceright\\\", \\\"asciitilde\\\", \\\"exclamdown\\\", \\\"cent\\\",\\n  \\\"sterling\\\", \\\"fraction\\\", \\\"yen\\\", \\\"florin\\\", \\\"section\\\", \\\"currency\\\",\\n  \\\"quotesingle\\\", \\\"quotedblleft\\\", \\\"guillemotleft\\\", \\\"guilsinglleft\\\",\\n  \\\"guilsinglright\\\", \\\"fi\\\", \\\"fl\\\", \\\"endash\\\", \\\"dagger\\\", \\\"daggerdbl\\\",\\n  \\\"periodcentered\\\", \\\"paragraph\\\", \\\"bullet\\\", \\\"quotesinglbase\\\", \\\"quotedblbase\\\",\\n  \\\"quotedblright\\\", \\\"guillemotright\\\", \\\"ellipsis\\\", \\\"perthousand\\\", \\\"questiondown\\\",\\n  \\\"grave\\\", \\\"acute\\\", \\\"circumflex\\\", \\\"tilde\\\", \\\"macron\\\", \\\"breve\\\", \\\"dotaccent\\\",\\n  \\\"dieresis\\\", \\\"ring\\\", \\\"cedilla\\\", \\\"hungarumlaut\\\", \\\"ogonek\\\", \\\"caron\\\", \\\"emdash\\\",\\n  \\\"AE\\\", \\\"ordfeminine\\\", \\\"Lslash\\\", \\\"Oslash\\\", \\\"OE\\\", \\\"ordmasculine\\\", \\\"ae\\\",\\n  \\\"dotlessi\\\", \\\"lslash\\\", \\\"oslash\\\", \\\"oe\\\", \\\"germandbls\\\", \\\"onesuperior\\\",\\n  \\\"logicalnot\\\", \\\"mu\\\", \\\"trademark\\\", \\\"Eth\\\", \\\"onehalf\\\", \\\"plusminus\\\", \\\"Thorn\\\",\\n  \\\"onequarter\\\", \\\"divide\\\", \\\"brokenbar\\\", \\\"degree\\\", \\\"thorn\\\", \\\"threequarters\\\",\\n  \\\"twosuperior\\\", \\\"registered\\\", \\\"minus\\\", \\\"eth\\\", \\\"multiply\\\", \\\"threesuperior\\\",\\n  \\\"copyright\\\", \\\"Aacute\\\", \\\"Acircumflex\\\", \\\"Adieresis\\\", \\\"Agrave\\\", \\\"Aring\\\",\\n  \\\"Atilde\\\", \\\"Ccedilla\\\", \\\"Eacute\\\", \\\"Ecircumflex\\\", \\\"Edieresis\\\", \\\"Egrave\\\",\\n  \\\"Iacute\\\", \\\"Icircumflex\\\", \\\"Idieresis\\\", \\\"Igrave\\\", \\\"Ntilde\\\", \\\"Oacute\\\",\\n  \\\"Ocircumflex\\\", \\\"Odieresis\\\", \\\"Ograve\\\", \\\"Otilde\\\", \\\"Scaron\\\", \\\"Uacute\\\",\\n  \\\"Ucircumflex\\\", \\\"Udieresis\\\", \\\"Ugrave\\\", \\\"Yacute\\\", \\\"Ydieresis\\\", \\\"Zcaron\\\",\\n  \\\"aacute\\\", \\\"acircumflex\\\", \\\"adieresis\\\", \\\"agrave\\\", \\\"aring\\\", \\\"atilde\\\",\\n  \\\"ccedilla\\\", \\\"eacute\\\", \\\"ecircumflex\\\", \\\"edieresis\\\", \\\"egrave\\\", \\\"iacute\\\",\\n  \\\"icircumflex\\\", \\\"idieresis\\\", \\\"igrave\\\", \\\"ntilde\\\", \\\"oacute\\\", \\\"ocircumflex\\\",\\n  \\\"odieresis\\\", \\\"ograve\\\", \\\"otilde\\\", \\\"scaron\\\", \\\"uacute\\\", \\\"ucircumflex\\\",\\n  \\\"udieresis\\\", \\\"ugrave\\\", \\\"yacute\\\", \\\"ydieresis\\\", \\\"zcaron\\\", \\\"exclamsmall\\\",\\n  \\\"Hungarumlautsmall\\\", \\\"dollaroldstyle\\\", \\\"dollarsuperior\\\", \\\"ampersandsmall\\\",\\n  \\\"Acutesmall\\\", \\\"parenleftsuperior\\\", \\\"parenrightsuperior\\\", \\\"twodotenleader\\\",\\n  \\\"onedotenleader\\\", \\\"zerooldstyle\\\", \\\"oneoldstyle\\\", \\\"twooldstyle\\\",\\n  \\\"threeoldstyle\\\", \\\"fouroldstyle\\\", \\\"fiveoldstyle\\\", \\\"sixoldstyle\\\",\\n  \\\"sevenoldstyle\\\", \\\"eightoldstyle\\\", \\\"nineoldstyle\\\", \\\"commasuperior\\\",\\n  \\\"threequartersemdash\\\", \\\"periodsuperior\\\", \\\"questionsmall\\\", \\\"asuperior\\\",\\n  \\\"bsuperior\\\", \\\"centsuperior\\\", \\\"dsuperior\\\", \\\"esuperior\\\", \\\"isuperior\\\",\\n  \\\"lsuperior\\\", \\\"msuperior\\\", \\\"nsuperior\\\", \\\"osuperior\\\", \\\"rsuperior\\\", \\\"ssuperior\\\",\\n  \\\"tsuperior\\\", \\\"ff\\\", \\\"ffi\\\", \\\"ffl\\\", \\\"parenleftinferior\\\", \\\"parenrightinferior\\\",\\n  \\\"Circumflexsmall\\\", \\\"hyphensuperior\\\", \\\"Gravesmall\\\", \\\"Asmall\\\", \\\"Bsmall\\\",\\n  \\\"Csmall\\\", \\\"Dsmall\\\", \\\"Esmall\\\", \\\"Fsmall\\\", \\\"Gsmall\\\", \\\"Hsmall\\\", \\\"Ismall\\\",\\n  \\\"Jsmall\\\", \\\"Ksmall\\\", \\\"Lsmall\\\", \\\"Msmall\\\", \\\"Nsmall\\\", \\\"Osmall\\\", \\\"Psmall\\\",\\n  \\\"Qsmall\\\", \\\"Rsmall\\\", \\\"Ssmall\\\", \\\"Tsmall\\\", \\\"Usmall\\\", \\\"Vsmall\\\", \\\"Wsmall\\\",\\n  \\\"Xsmall\\\", \\\"Ysmall\\\", \\\"Zsmall\\\", \\\"colonmonetary\\\", \\\"onefitted\\\", \\\"rupiah\\\",\\n  \\\"Tildesmall\\\", \\\"exclamdownsmall\\\", \\\"centoldstyle\\\", \\\"Lslashsmall\\\",\\n  \\\"Scaronsmall\\\", \\\"Zcaronsmall\\\", \\\"Dieresissmall\\\", \\\"Brevesmall\\\", \\\"Caronsmall\\\",\\n  \\\"Dotaccentsmall\\\", \\\"Macronsmall\\\", \\\"figuredash\\\", \\\"hypheninferior\\\",\\n  \\\"Ogoneksmall\\\", \\\"Ringsmall\\\", \\\"Cedillasmall\\\", \\\"questiondownsmall\\\", \\\"oneeighth\\\",\\n  \\\"threeeighths\\\", \\\"fiveeighths\\\", \\\"seveneighths\\\", \\\"onethird\\\", \\\"twothirds\\\",\\n  \\\"zerosuperior\\\", \\\"foursuperior\\\", \\\"fivesuperior\\\", \\\"sixsuperior\\\",\\n  \\\"sevensuperior\\\", \\\"eightsuperior\\\", \\\"ninesuperior\\\", \\\"zeroinferior\\\",\\n  \\\"oneinferior\\\", \\\"twoinferior\\\", \\\"threeinferior\\\", \\\"fourinferior\\\",\\n  \\\"fiveinferior\\\", \\\"sixinferior\\\", \\\"seveninferior\\\", \\\"eightinferior\\\",\\n  \\\"nineinferior\\\", \\\"centinferior\\\", \\\"dollarinferior\\\", \\\"periodinferior\\\",\\n  \\\"commainferior\\\", \\\"Agravesmall\\\", \\\"Aacutesmall\\\", \\\"Acircumflexsmall\\\",\\n  \\\"Atildesmall\\\", \\\"Adieresissmall\\\", \\\"Aringsmall\\\", \\\"AEsmall\\\", \\\"Ccedillasmall\\\",\\n  \\\"Egravesmall\\\", \\\"Eacutesmall\\\", \\\"Ecircumflexsmall\\\", \\\"Edieresissmall\\\",\\n  \\\"Igravesmall\\\", \\\"Iacutesmall\\\", \\\"Icircumflexsmall\\\", \\\"Idieresissmall\\\",\\n  \\\"Ethsmall\\\", \\\"Ntildesmall\\\", \\\"Ogravesmall\\\", \\\"Oacutesmall\\\", \\\"Ocircumflexsmall\\\",\\n  \\\"Otildesmall\\\", \\\"Odieresissmall\\\", \\\"OEsmall\\\", \\\"Oslashsmall\\\", \\\"Ugravesmall\\\",\\n  \\\"Uacutesmall\\\", \\\"Ucircumflexsmall\\\", \\\"Udieresissmall\\\", \\\"Yacutesmall\\\",\\n  \\\"Thornsmall\\\", \\\"Ydieresissmall\\\", \\\"001.000\\\", \\\"001.001\\\", \\\"001.002\\\", \\\"001.003\\\",\\n  \\\"Black\\\", \\\"Bold\\\", \\\"Book\\\", \\\"Light\\\", \\\"Medium\\\", \\\"Regular\\\", \\\"Roman\\\", \\\"Semibold\\\"\\n];\\n\\nconst NUM_STANDARD_CFF_STRINGS = 391;\\n\\nconst CharstringValidationData = [\\n  \u002F*  0 *\u002F null,\\n  \u002F*  1 *\u002F { id: \\\"hstem\\\", min: 2, stackClearing: true, stem: true },\\n  \u002F*  2 *\u002F null,\\n  \u002F*  3 *\u002F { id: \\\"vstem\\\", min: 2, stackClearing: true, stem: true },\\n  \u002F*  4 *\u002F { id: \\\"vmoveto\\\", min: 1, stackClearing: true },\\n  \u002F*  5 *\u002F { id: \\\"rlineto\\\", min: 2, resetStack: true },\\n  \u002F*  6 *\u002F { id: \\\"hlineto\\\", min: 1, resetStack: true },\\n  \u002F*  7 *\u002F { id: \\\"vlineto\\\", min: 1, resetStack: true },\\n  \u002F*  8 *\u002F { id: \\\"rrcurveto\\\", min: 6, resetStack: true },\\n  \u002F*  9 *\u002F null,\\n  \u002F* 10 *\u002F { id: \\\"callsubr\\\", min: 1, undefStack: true },\\n  \u002F* 11 *\u002F { id: \\\"return\\\", min: 0, undefStack: true },\\n  \u002F* 12 *\u002F null,\\n  \u002F* 13 *\u002F null,\\n  \u002F* 14 *\u002F { id: \\\"endchar\\\", min: 0, stackClearing: true },\\n  \u002F* 15 *\u002F null,\\n  \u002F* 16 *\u002F null,\\n  \u002F* 17 *\u002F null,\\n  \u002F* 18 *\u002F { id: \\\"hstemhm\\\", min: 2, stackClearing: true, stem: true },\\n  \u002F* 19 *\u002F { id: \\\"hintmask\\\", min: 0, stackClearing: true },\\n  \u002F* 20 *\u002F { id: \\\"cntrmask\\\", min: 0, stackClearing: true },\\n  \u002F* 21 *\u002F { id: \\\"rmoveto\\\", min: 2, stackClearing: true },\\n  \u002F* 22 *\u002F { id: \\\"hmoveto\\\", min: 1, stackClearing: true },\\n  \u002F* 23 *\u002F { id: \\\"vstemhm\\\", min: 2, stackClearing: true, stem: true },\\n  \u002F* 24 *\u002F { id: \\\"rcurveline\\\", min: 8, resetStack: true },\\n  \u002F* 25 *\u002F { id: \\\"rlinecurve\\\", min: 8, resetStack: true },\\n  \u002F* 26 *\u002F { id: \\\"vvcurveto\\\", min: 4, resetStack: true },\\n  \u002F* 27 *\u002F { id: \\\"hhcurveto\\\", min: 4, resetStack: true },\\n  \u002F* 28 *\u002F null, \u002F\u002F shortint\\n  \u002F* 29 *\u002F { id: \\\"callgsubr\\\", min: 1, undefStack: true },\\n  \u002F* 30 *\u002F { id: \\\"vhcurveto\\\", min: 4, resetStack: true },\\n  \u002F* 31 *\u002F { id: \\\"hvcurveto\\\", min: 4, resetStack: true },\\n];\\n\\nconst CharstringValidationData12 = [\\n  null,\\n  null,\\n  null,\\n  { id: \\\"and\\\", min: 2, stackDelta: -1 },\\n  { id: \\\"or\\\", min: 2, stackDelta: -1 },\\n  { id: \\\"not\\\", min: 1, stackDelta: 0 },\\n  null,\\n  null,\\n  null,\\n  { id: \\\"abs\\\", min: 1, stackDelta: 0 },\\n  {\\n    id: \\\"add\\\",\\n    min: 2,\\n    stackDelta: -1,\\n    stackFn(stack, index) {\\n      stack[index - 2] = stack[index - 2] + stack[index - 1];\\n    },\\n  },\\n  {\\n    id: \\\"sub\\\",\\n    min: 2,\\n    stackDelta: -1,\\n    stackFn(stack, index) {\\n      stack[index - 2] = stack[index - 2] - stack[index - 1];\\n    },\\n  },\\n  {\\n    id: \\\"div\\\",\\n    min: 2,\\n    stackDelta: -1,\\n    stackFn(stack, index) {\\n      stack[index - 2] = stack[index - 2] \u002F stack[index - 1];\\n    },\\n  },\\n  null,\\n  {\\n    id: \\\"neg\\\",\\n    min: 1,\\n    stackDelta: 0,\\n    stackFn(stack, index) {\\n      stack[index - 1] = -stack[index - 1];\\n    },\\n  },\\n  { id: \\\"eq\\\", min: 2, stackDelta: -1 },\\n  null,\\n  null,\\n  { id: \\\"drop\\\", min: 1, stackDelta: -1 },\\n  null,\\n  { id: \\\"put\\\", min: 2, stackDelta: -2 },\\n  { id: \\\"get\\\", min: 1, stackDelta: 0 },\\n  { id: \\\"ifelse\\\", min: 4, stackDelta: -3 },\\n  { id: \\\"random\\\", min: 0, stackDelta: 1 },\\n  {\\n    id: \\\"mul\\\",\\n    min: 2,\\n    stackDelta: -1,\\n    stackFn(stack, index) {\\n      stack[index - 2] = stack[index - 2] * stack[index - 1];\\n    },\\n  },\\n  null,\\n  { id: \\\"sqrt\\\", min: 1, stackDelta: 0 },\\n  { id: \\\"dup\\\", min: 1, stackDelta: 1 },\\n  { id: \\\"exch\\\", min: 2, stackDelta: 0 },\\n  { id: \\\"index\\\", min: 2, stackDelta: 0 },\\n  { id: \\\"roll\\\", min: 3, stackDelta: -2 },\\n  null,\\n  null,\\n  null,\\n  { id: \\\"hflex\\\", min: 7, resetStack: true },\\n  { id: \\\"flex\\\", min: 13, resetStack: true },\\n  { id: \\\"hflex1\\\", min: 9, resetStack: true },\\n  { id: \\\"flex1\\\", min: 11, resetStack: true },\\n];\\n\\nclass CFFParser {\\n  constructor(file, properties, seacAnalysisEnabled) {\\n    this.bytes = file.getBytes();\\n    this.properties = properties;\\n    this.seacAnalysisEnabled = !!seacAnalysisEnabled;\\n  }\\n\\n  parse() {\\n    const properties = this.properties;\\n    const cff = new CFF();\\n    this.cff = cff;\\n\\n    \u002F\u002F The first five sections must be in order, all the others are reached\\n    \u002F\u002F via offsets contained in one of the below.\\n    const header = this.parseHeader();\\n    const nameIndex = this.parseIndex(header.endPos);\\n    const topDictIndex = this.parseIndex(nameIndex.endPos);\\n    const stringIndex = this.parseIndex(topDictIndex.endPos);\\n    const globalSubrIndex = this.parseIndex(stringIndex.endPos);\\n\\n    const topDictParsed = this.parseDict(topDictIndex.obj.get(0));\\n    const topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);\\n\\n    cff.header = header.obj;\\n    cff.names = this.parseNameIndex(nameIndex.obj);\\n    cff.strings = this.parseStringIndex(stringIndex.obj);\\n    cff.topDict = topDict;\\n    cff.globalSubrIndex = globalSubrIndex.obj;\\n\\n    this.parsePrivateDict(cff.topDict);\\n\\n    cff.isCIDFont = topDict.hasName(\\\"ROS\\\");\\n\\n    const charStringOffset = topDict.getByName(\\\"CharStrings\\\");\\n    const charStringIndex = this.parseIndex(charStringOffset).obj;\\n\\n    const fontMatrix = topDict.getByName(\\\"FontMatrix\\\");\\n    if (fontMatrix) {\\n      properties.fontMatrix = fontMatrix;\\n    }\\n\\n    const fontBBox = topDict.getByName(\\\"FontBBox\\\");\\n    if (fontBBox) {\\n      \u002F\u002F adjusting ascent\u002Fdescent\\n      properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\\n      properties.descent = Math.min(fontBBox[1], fontBBox[3]);\\n      properties.ascentScaled = true;\\n    }\\n\\n    let charset, encoding;\\n    if (cff.isCIDFont) {\\n      const fdArrayIndex = this.parseIndex(topDict.getByName(\\\"FDArray\\\")).obj;\\n      for (let i = 0, ii = fdArrayIndex.count; i \u003C ii; ++i) {\\n        const dictRaw = fdArrayIndex.get(i);\\n        const fontDict = this.createDict(\\n          CFFTopDict,\\n          this.parseDict(dictRaw),\\n          cff.strings\\n        );\\n        this.parsePrivateDict(fontDict);\\n        cff.fdArray.push(fontDict);\\n      }\\n      \u002F\u002F cid fonts don't have an encoding\\n      encoding = null;\\n      charset = this.parseCharsets(\\n        topDict.getByName(\\\"charset\\\"),\\n        charStringIndex.count,\\n        cff.strings,\\n        true\\n      );\\n      cff.fdSelect = this.parseFDSelect(\\n        topDict.getByName(\\\"FDSelect\\\"),\\n        charStringIndex.count\\n      );\\n    } else {\\n      charset = this.parseCharsets(\\n        topDict.getByName(\\\"charset\\\"),\\n        charStringIndex.count,\\n        cff.strings,\\n        false\\n      );\\n      encoding = this.parseEncoding(\\n        topDict.getByName(\\\"Encoding\\\"),\\n        properties,\\n        cff.strings,\\n        charset.charset\\n      );\\n    }\\n\\n    cff.charset = charset;\\n    cff.encoding = encoding;\\n\\n    const charStringsAndSeacs = this.parseCharStrings({\\n      charStrings: charStringIndex,\\n      localSubrIndex: topDict.privateDict.subrsIndex,\\n      globalSubrIndex: globalSubrIndex.obj,\\n      fdSelect: cff.fdSelect,\\n      fdArray: cff.fdArray,\\n      privateDict: topDict.privateDict,\\n    });\\n    cff.charStrings = charStringsAndSeacs.charStrings;\\n    cff.seacs = charStringsAndSeacs.seacs;\\n    cff.widths = charStringsAndSeacs.widths;\\n\\n    return cff;\\n  }\\n\\n  parseHeader() {\\n    let bytes = this.bytes;\\n    const bytesLength = bytes.length;\\n    let offset = 0;\\n\\n    \u002F\u002F Prevent an infinite loop, by checking that the offset is within the\\n    \u002F\u002F bounds of the bytes array. Necessary in empty, or invalid, font files.\\n    while (offset \u003C bytesLength && bytes[offset] !== 1) {\\n      ++offset;\\n    }\\n    if (offset >= bytesLength) {\\n      throw new FormatError(\\\"Invalid CFF header\\\");\\n    }\\n    if (offset !== 0) {\\n      info(\\\"cff data is shifted\\\");\\n      bytes = bytes.subarray(offset);\\n      this.bytes = bytes;\\n    }\\n    const major = bytes[0];\\n    const minor = bytes[1];\\n    const hdrSize = bytes[2];\\n    const offSize = bytes[3];\\n    const header = new CFFHeader(major, minor, hdrSize, offSize);\\n    return { obj: header, endPos: hdrSize };\\n  }\\n\\n  parseDict(dict) {\\n    let pos = 0;\\n\\n    function parseOperand() {\\n      let value = dict[pos++];\\n      if (value === 30) {\\n        return parseFloatOperand();\\n      } else if (value === 28) {\\n        value = readInt16(dict, pos);\\n        pos += 2;\\n        return value;\\n      } else if (value === 29) {\\n        value = dict[pos++];\\n        value = (value \u003C\u003C 8) | dict[pos++];\\n        value = (value \u003C\u003C 8) | dict[pos++];\\n        value = (value \u003C\u003C 8) | dict[pos++];\\n        return value;\\n      } else if (value >= 32 && value \u003C= 246) {\\n        return value - 139;\\n      } else if (value >= 247 && value \u003C= 250) {\\n        return (value - 247) * 256 + dict[pos++] + 108;\\n      } else if (value >= 251 && value \u003C= 254) {\\n        return -((value - 251) * 256) - dict[pos++] - 108;\\n      }\\n      warn('CFFParser_parseDict: \\\"' + value + '\\\" is a reserved command.');\\n      return NaN;\\n    }\\n\\n    function parseFloatOperand() {\\n      let str = \\\"\\\";\\n      const eof = 15;\\n      \u002F\u002F prettier-ignore\\n      const lookup = [\\\"0\\\", \\\"1\\\", \\\"2\\\", \\\"3\\\", \\\"4\\\", \\\"5\\\", \\\"6\\\", \\\"7\\\", \\\"8\\\",\\n                      \\\"9\\\", \\\".\\\", \\\"E\\\", \\\"E-\\\", null, \\\"-\\\"];\\n      const length = dict.length;\\n      while (pos \u003C length) {\\n        const b = dict[pos++];\\n        const b1 = b >> 4;\\n        const b2 = b & 15;\\n\\n        if (b1 === eof) {\\n          break;\\n        }\\n        str += lookup[b1];\\n\\n        if (b2 === eof) {\\n          break;\\n        }\\n        str += lookup[b2];\\n      }\\n      return parseFloat(str);\\n    }\\n\\n    let operands = [];\\n    const entries = [];\\n\\n    pos = 0;\\n    const end = dict.length;\\n    while (pos \u003C end) {\\n      let b = dict[pos];\\n      if (b \u003C= 21) {\\n        if (b === 12) {\\n          b = (b \u003C\u003C 8) | dict[++pos];\\n        }\\n        entries.push([b, operands]);\\n        operands = [];\\n        ++pos;\\n      } else {\\n        operands.push(parseOperand());\\n      }\\n    }\\n    return entries;\\n  }\\n\\n  parseIndex(pos) {\\n    const cffIndex = new CFFIndex();\\n    const bytes = this.bytes;\\n    const count = (bytes[pos++] \u003C\u003C 8) | bytes[pos++];\\n    const offsets = [];\\n    let end = pos;\\n    let i, ii;\\n\\n    if (count !== 0) {\\n      const offsetSize = bytes[pos++];\\n      \u002F\u002F add 1 for offset to determine size of last object\\n      const startPos = pos + (count + 1) * offsetSize - 1;\\n\\n      for (i = 0, ii = count + 1; i \u003C ii; ++i) {\\n        let offset = 0;\\n        for (let j = 0; j \u003C offsetSize; ++j) {\\n          offset \u003C\u003C= 8;\\n          offset += bytes[pos++];\\n        }\\n        offsets.push(startPos + offset);\\n      }\\n      end = offsets[count];\\n    }\\n    for (i = 0, ii = offsets.length - 1; i \u003C ii; ++i) {\\n      const offsetStart = offsets[i];\\n      const offsetEnd = offsets[i + 1];\\n      cffIndex.add(bytes.subarray(offsetStart, offsetEnd));\\n    }\\n    return { obj: cffIndex, endPos: end };\\n  }\\n\\n  parseNameIndex(index) {\\n    const names = [];\\n    for (let i = 0, ii = index.count; i \u003C ii; ++i) {\\n      const name = index.get(i);\\n      names.push(bytesToString(name));\\n    }\\n    return names;\\n  }\\n\\n  parseStringIndex(index) {\\n    const strings = new CFFStrings();\\n    for (let i = 0, ii = index.count; i \u003C ii; ++i) {\\n      const data = index.get(i);\\n      strings.add(bytesToString(data));\\n    }\\n    return strings;\\n  }\\n\\n  createDict(Type, dict, strings) {\\n    const cffDict = new Type(strings);\\n    for (const [key, value] of dict) {\\n      cffDict.setByKey(key, value);\\n    }\\n    return cffDict;\\n  }\\n\\n  parseCharString(state, data, localSubrIndex, globalSubrIndex) {\\n    if (!data || state.callDepth > MAX_SUBR_NESTING) {\\n      return false;\\n    }\\n    let stackSize = state.stackSize;\\n    const stack = state.stack;\\n\\n    let length = data.length;\\n\\n    for (let j = 0; j \u003C length; ) {\\n      const value = data[j++];\\n      let validationCommand = null;\\n      if (value === 12) {\\n        const q = data[j++];\\n        if (q === 0) {\\n          \u002F\u002F The CFF specification state that the 'dotsection' command\\n          \u002F\u002F (12, 0) is deprecated and treated as a no-op, but all Type2\\n          \u002F\u002F charstrings processors should support them. Unfortunately\\n          \u002F\u002F the font sanitizer don't. As a workaround the sequence (12, 0)\\n          \u002F\u002F is replaced by a useless (0, hmoveto).\\n          data[j - 2] = 139;\\n          data[j - 1] = 22;\\n          stackSize = 0;\\n        } else {\\n          validationCommand = CharstringValidationData12[q];\\n        }\\n      } else if (value === 28) {\\n        \u002F\u002F number (16 bit)\\n        stack[stackSize] = readInt16(data, j);\\n        j += 2;\\n        stackSize++;\\n      } else if (value === 14) {\\n        if (stackSize >= 4) {\\n          stackSize -= 4;\\n          if (this.seacAnalysisEnabled) {\\n            state.seac = stack.slice(stackSize, stackSize + 4);\\n            return false;\\n          }\\n        }\\n        validationCommand = CharstringValidationData[value];\\n      } else if (value >= 32 && value \u003C= 246) {\\n        \u002F\u002F number\\n        stack[stackSize] = value - 139;\\n        stackSize++;\\n      } else if (value >= 247 && value \u003C= 254) {\\n        \u002F\u002F number (+1 bytes)\\n        stack[stackSize] =\\n          value \u003C 251\\n            ? ((value - 247) \u003C\u003C 8) + data[j] + 108\\n            : -((value - 251) \u003C\u003C 8) - data[j] - 108;\\n        j++;\\n        stackSize++;\\n      } else if (value === 255) {\\n        \u002F\u002F number (32 bit)\\n        stack[stackSize] =\\n          ((data[j] \u003C\u003C 24) |\\n            (data[j + 1] \u003C\u003C 16) |\\n            (data[j + 2] \u003C\u003C 8) |\\n            data[j + 3]) \u002F\\n          65536;\\n        j += 4;\\n        stackSize++;\\n      } else if (value === 19 || value === 20) {\\n        state.hints += stackSize >> 1;\\n        if (state.hints === 0) {\\n          \u002F\u002F Not a valid value (see bug 1529502): just remove it.\\n          data.copyWithin(j - 1, j, -1);\\n          j -= 1;\\n          length -= 1;\\n          continue;\\n        }\\n        \u002F\u002F skipping right amount of hints flag data\\n        j += (state.hints + 7) >> 3;\\n        stackSize %= 2;\\n        validationCommand = CharstringValidationData[value];\\n      } else if (value === 10 || value === 29) {\\n        const subrsIndex = value === 10 ? localSubrIndex : globalSubrIndex;\\n        if (!subrsIndex) {\\n          validationCommand = CharstringValidationData[value];\\n          warn(\\\"Missing subrsIndex for \\\" + validationCommand.id);\\n          return false;\\n        }\\n        let bias = 32768;\\n        if (subrsIndex.count \u003C 1240) {\\n          bias = 107;\\n        } else if (subrsIndex.count \u003C 33900) {\\n          bias = 1131;\\n        }\\n        const subrNumber = stack[--stackSize] + bias;\\n        if (\\n          subrNumber \u003C 0 ||\\n          subrNumber >= subrsIndex.count ||\\n          isNaN(subrNumber)\\n        ) {\\n          validationCommand = CharstringValidationData[value];\\n          warn(\\\"Out of bounds subrIndex for \\\" + validationCommand.id);\\n          return false;\\n        }\\n        state.stackSize = stackSize;\\n        state.callDepth++;\\n        const valid = this.parseCharString(\\n          state,\\n          subrsIndex.get(subrNumber),\\n          localSubrIndex,\\n          globalSubrIndex\\n        );\\n        if (!valid) {\\n          return false;\\n        }\\n        state.callDepth--;\\n        stackSize = state.stackSize;\\n        continue;\\n      } else if (value === 11) {\\n        state.stackSize = stackSize;\\n        return true;\\n      } else if (value === 0 && j === data.length) {\\n        \u002F\u002F Operator 0 is not used according to the current spec and\\n        \u002F\u002F it's the last char and consequently it's likely a terminator.\\n        \u002F\u002F So just replace it by endchar command to make OTS happy.\\n        data[j - 1] = 14;\\n        validationCommand = CharstringValidationData[14];\\n      } else if (value === 9) {\\n        \u002F\u002F Not a valid value.\\n        data.copyWithin(j - 1, j, -1);\\n        j -= 1;\\n        length -= 1;\\n        continue;\\n      } else {\\n        validationCommand = CharstringValidationData[value];\\n      }\\n      if (validationCommand) {\\n        if (validationCommand.stem) {\\n          state.hints += stackSize >> 1;\\n          if (value === 3 || value === 23) {\\n            \u002F\u002F vstem or vstemhm.\\n            state.hasVStems = true;\\n          } else if (state.hasVStems && (value === 1 || value === 18)) {\\n            \u002F\u002F Some browsers don't draw glyphs that specify vstems before\\n            \u002F\u002F hstems. As a workaround, replace hstem (1) and hstemhm (18)\\n            \u002F\u002F with a pointless vstem (3) or vstemhm (23).\\n            warn(\\\"CFF stem hints are in wrong order\\\");\\n            data[j - 1] = value === 1 ? 3 : 23;\\n          }\\n        }\\n        if (\\\"min\\\" in validationCommand) {\\n          if (!state.undefStack && stackSize \u003C validationCommand.min) {\\n            warn(\\n              \\\"Not enough parameters for \\\" +\\n                validationCommand.id +\\n                \\\"; actual: \\\" +\\n                stackSize +\\n                \\\", expected: \\\" +\\n                validationCommand.min\\n            );\\n\\n            if (stackSize === 0) {\\n              \u002F\u002F Just \\\"fix\\\" the outline in replacing command by a endchar:\\n              \u002F\u002F it could lead to wrong rendering of some glyphs or not.\\n              \u002F\u002F For example, the pdf in #6132 is well-rendered.\\n              data[j - 1] = 14;\\n              return true;\\n            }\\n            return false;\\n          }\\n        }\\n        if (state.firstStackClearing && validationCommand.stackClearing) {\\n          state.firstStackClearing = false;\\n          \u002F\u002F the optional character width can be found before the first\\n          \u002F\u002F stack-clearing command arguments\\n          stackSize -= validationCommand.min;\\n          if (stackSize >= 2 && validationCommand.stem) {\\n            \u002F\u002F there are even amount of arguments for stem commands\\n            stackSize %= 2;\\n          } else if (stackSize > 1) {\\n            warn(\\\"Found too many parameters for stack-clearing command\\\");\\n          }\\n          if (stackSize > 0) {\\n            \u002F\u002F Width can be any number since its the difference\\n            \u002F\u002F from nominalWidthX.\\n            state.width = stack[stackSize - 1];\\n          }\\n        }\\n        if (\\\"stackDelta\\\" in validationCommand) {\\n          if (\\\"stackFn\\\" in validationCommand) {\\n            validationCommand.stackFn(stack, stackSize);\\n          }\\n          stackSize += validationCommand.stackDelta;\\n        } else if (validationCommand.stackClearing) {\\n          stackSize = 0;\\n        } else if (validationCommand.resetStack) {\\n          stackSize = 0;\\n          state.undefStack = false;\\n        } else if (validationCommand.undefStack) {\\n          stackSize = 0;\\n          state.undefStack = true;\\n          state.firstStackClearing = false;\\n        }\\n      }\\n    }\\n    if (length \u003C data.length) {\\n      data.fill(\u002F* endchar = *\u002F 14, length);\\n    }\\n    state.stackSize = stackSize;\\n    return true;\\n  }\\n\\n  parseCharStrings({\\n    charStrings,\\n    localSubrIndex,\\n    globalSubrIndex,\\n    fdSelect,\\n    fdArray,\\n    privateDict,\\n  }) {\\n    const seacs = [];\\n    const widths = [];\\n    const count = charStrings.count;\\n    for (let i = 0; i \u003C count; i++) {\\n      const charstring = charStrings.get(i);\\n      const state = {\\n        callDepth: 0,\\n        stackSize: 0,\\n        stack: [],\\n        undefStack: true,\\n        hints: 0,\\n        firstStackClearing: true,\\n        seac: null,\\n        width: null,\\n        hasVStems: false,\\n      };\\n      let valid = true;\\n      let localSubrToUse = null;\\n      let privateDictToUse = privateDict;\\n      if (fdSelect && fdArray.length) {\\n        const fdIndex = fdSelect.getFDIndex(i);\\n        if (fdIndex === -1) {\\n          warn(\\\"Glyph index is not in fd select.\\\");\\n          valid = false;\\n        }\\n        if (fdIndex >= fdArray.length) {\\n          warn(\\\"Invalid fd index for glyph index.\\\");\\n          valid = false;\\n        }\\n        if (valid) {\\n          privateDictToUse = fdArray[fdIndex].privateDict;\\n          localSubrToUse = privateDictToUse.subrsIndex;\\n        }\\n      } else if (localSubrIndex) {\\n        localSubrToUse = localSubrIndex;\\n      }\\n      if (valid) {\\n        valid = this.parseCharString(\\n          state,\\n          charstring,\\n          localSubrToUse,\\n          globalSubrIndex\\n        );\\n      }\\n      if (state.width !== null) {\\n        const nominalWidth = privateDictToUse.getByName(\\\"nominalWidthX\\\");\\n        widths[i] = nominalWidth + state.width;\\n      } else {\\n        const defaultWidth = privateDictToUse.getByName(\\\"defaultWidthX\\\");\\n        widths[i] = defaultWidth;\\n      }\\n      if (state.seac !== null) {\\n        seacs[i] = state.seac;\\n      }\\n      if (!valid) {\\n        \u002F\u002F resetting invalid charstring to single 'endchar'\\n        charStrings.set(i, new Uint8Array([14]));\\n      }\\n    }\\n    return { charStrings, seacs, widths };\\n  }\\n\\n  emptyPrivateDictionary(parentDict) {\\n    const privateDict = this.createDict(CFFPrivateDict, [], parentDict.strings);\\n    parentDict.setByKey(18, [0, 0]);\\n    parentDict.privateDict = privateDict;\\n  }\\n\\n  parsePrivateDict(parentDict) {\\n    \u002F\u002F no private dict, do nothing\\n    if (!parentDict.hasName(\\\"Private\\\")) {\\n      this.emptyPrivateDictionary(parentDict);\\n      return;\\n    }\\n    const privateOffset = parentDict.getByName(\\\"Private\\\");\\n    \u002F\u002F make sure the params are formatted correctly\\n    if (!Array.isArray(privateOffset) || privateOffset.length !== 2) {\\n      parentDict.removeByName(\\\"Private\\\");\\n      return;\\n    }\\n    const size = privateOffset[0];\\n    const offset = privateOffset[1];\\n    \u002F\u002F remove empty dicts or ones that refer to invalid location\\n    if (size === 0 || offset >= this.bytes.length) {\\n      this.emptyPrivateDictionary(parentDict);\\n      return;\\n    }\\n\\n    const privateDictEnd = offset + size;\\n    const dictData = this.bytes.subarray(offset, privateDictEnd);\\n    const dict = this.parseDict(dictData);\\n    const privateDict = this.createDict(\\n      CFFPrivateDict,\\n      dict,\\n      parentDict.strings\\n    );\\n    parentDict.privateDict = privateDict;\\n\\n    if (privateDict.getByName(\\\"ExpansionFactor\\\") === 0) {\\n      \u002F\u002F Firefox doesn't render correctly such a font on Windows (see issue\\n      \u002F\u002F 15289), hence we just reset it to its default value.\\n      privateDict.setByName(\\\"ExpansionFactor\\\", 0.06);\\n    }\\n\\n    \u002F\u002F Parse the Subrs index also since it's relative to the private dict.\\n    if (!privateDict.getByName(\\\"Subrs\\\")) {\\n      return;\\n    }\\n    const subrsOffset = privateDict.getByName(\\\"Subrs\\\");\\n    const relativeOffset = offset + subrsOffset;\\n    \u002F\u002F Validate the offset.\\n    if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {\\n      this.emptyPrivateDictionary(parentDict);\\n      return;\\n    }\\n    const subrsIndex = this.parseIndex(relativeOffset);\\n    privateDict.subrsIndex = subrsIndex.obj;\\n  }\\n\\n  parseCharsets(pos, length, strings, cid) {\\n    if (pos === 0) {\\n      return new CFFCharset(\\n        true,\\n        CFFCharsetPredefinedTypes.ISO_ADOBE,\\n        ISOAdobeCharset\\n      );\\n    } else if (pos === 1) {\\n      return new CFFCharset(\\n        true,\\n        CFFCharsetPredefinedTypes.EXPERT,\\n        ExpertCharset\\n      );\\n    } else if (pos === 2) {\\n      return new CFFCharset(\\n        true,\\n        CFFCharsetPredefinedTypes.EXPERT_SUBSET,\\n        ExpertSubsetCharset\\n      );\\n    }\\n\\n    const bytes = this.bytes;\\n    const start = pos;\\n    const format = bytes[pos++];\\n    const charset = [cid ? 0 : \\\".notdef\\\"];\\n    let id, count, i;\\n\\n    \u002F\u002F subtract 1 for the .notdef glyph\\n    length -= 1;\\n\\n    switch (format) {\\n      case 0:\\n        for (i = 0; i \u003C length; i++) {\\n          id = (bytes[pos++] \u003C\u003C 8) | bytes[pos++];\\n          charset.push(cid ? id : strings.get(id));\\n        }\\n        break;\\n      case 1:\\n        while (charset.length \u003C= length) {\\n          id = (bytes[pos++] \u003C\u003C 8) | bytes[pos++];\\n          count = bytes[pos++];\\n          for (i = 0; i \u003C= count; i++) {\\n            charset.push(cid ? id++ : strings.get(id++));\\n          }\\n        }\\n        break;\\n      case 2:\\n        while (charset.length \u003C= length) {\\n          id = (bytes[pos++] \u003C\u003C 8) | bytes[pos++];\\n          count = (bytes[pos++] \u003C\u003C 8) | bytes[pos++];\\n          for (i = 0; i \u003C= count; i++) {\\n            charset.push(cid ? id++ : strings.get(id++));\\n          }\\n        }\\n        break;\\n      default:\\n        throw new FormatError(\\\"Unknown charset format\\\");\\n    }\\n    \u002F\u002F Raw won't be needed if we actually compile the charset.\\n    const end = pos;\\n    const raw = bytes.subarray(start, end);\\n\\n    return new CFFCharset(false, format, charset, raw);\\n  }\\n\\n  parseEncoding(pos, properties, strings, charset) {\\n    const encoding = Object.create(null);\\n    const bytes = this.bytes;\\n    let predefined = false;\\n    let format, i, ii;\\n    let raw = null;\\n\\n    function readSupplement() {\\n      const supplementsCount = bytes[pos++];\\n      for (i = 0; i \u003C supplementsCount; i++) {\\n        const code = bytes[pos++];\\n        const sid = (bytes[pos++] \u003C\u003C 8) + (bytes[pos++] & 0xff);\\n        encoding[code] = charset.indexOf(strings.get(sid));\\n      }\\n    }\\n\\n    if (pos === 0 || pos === 1) {\\n      predefined = true;\\n      format = pos;\\n      const baseEncoding = pos ? ExpertEncoding : StandardEncoding;\\n      for (i = 0, ii = charset.length; i \u003C ii; i++) {\\n        const index = baseEncoding.indexOf(charset[i]);\\n        if (index !== -1) {\\n          encoding[index] = i;\\n        }\\n      }\\n    } else {\\n      const dataStart = pos;\\n      format = bytes[pos++];\\n      switch (format & 0x7f) {\\n        case 0:\\n          const glyphsCount = bytes[pos++];\\n          for (i = 1; i \u003C= glyphsCount; i++) {\\n            encoding[bytes[pos++]] = i;\\n          }\\n          break;\\n\\n        case 1:\\n          const rangesCount = bytes[pos++];\\n          let gid = 1;\\n          for (i = 0; i \u003C rangesCount; i++) {\\n            const start = bytes[pos++];\\n            const left = bytes[pos++];\\n            for (let j = start; j \u003C= start + left; j++) {\\n              encoding[j] = gid++;\\n            }\\n          }\\n          break;\\n\\n        default:\\n          throw new FormatError(`Unknown encoding format: ${format} in CFF`);\\n      }\\n      const dataEnd = pos;\\n      if (format & 0x80) {\\n        \u002F\u002F hasSupplement\\n        \u002F\u002F The font sanitizer does not support CFF encoding with a\\n        \u002F\u002F supplement, since the encoding is not really used to map\\n        \u002F\u002F between gid to glyph, let's overwrite what is declared in\\n        \u002F\u002F the top dictionary to let the sanitizer think the font use\\n        \u002F\u002F StandardEncoding, that's a lie but that's ok.\\n        bytes[dataStart] &= 0x7f;\\n        readSupplement();\\n      }\\n      raw = bytes.subarray(dataStart, dataEnd);\\n    }\\n    format &= 0x7f;\\n    return new CFFEncoding(predefined, format, encoding, raw);\\n  }\\n\\n  parseFDSelect(pos, length) {\\n    const bytes = this.bytes;\\n    const format = bytes[pos++];\\n    const fdSelect = [];\\n    let i;\\n\\n    switch (format) {\\n      case 0:\\n        for (i = 0; i \u003C length; ++i) {\\n          const id = bytes[pos++];\\n          fdSelect.push(id);\\n        }\\n        break;\\n      case 3:\\n        const rangesCount = (bytes[pos++] \u003C\u003C 8) | bytes[pos++];\\n        for (i = 0; i \u003C rangesCount; ++i) {\\n          let first = (bytes[pos++] \u003C\u003C 8) | bytes[pos++];\\n          if (i === 0 && first !== 0) {\\n            warn(\\n              \\\"parseFDSelect: The first range must have a first GID of 0\\\" +\\n                \\\" -- trying to recover.\\\"\\n            );\\n            first = 0;\\n          }\\n          const fdIndex = bytes[pos++];\\n          const next = (bytes[pos] \u003C\u003C 8) | bytes[pos + 1];\\n          for (let j = first; j \u003C next; ++j) {\\n            fdSelect.push(fdIndex);\\n          }\\n        }\\n        \u002F\u002F Advance past the sentinel(next).\\n        pos += 2;\\n        break;\\n      default:\\n        throw new FormatError(`parseFDSelect: Unknown format \\\"${format}\\\".`);\\n    }\\n    if (fdSelect.length !== length) {\\n      throw new FormatError(\\\"parseFDSelect: Invalid font data.\\\");\\n    }\\n\\n    return new CFFFDSelect(format, fdSelect);\\n  }\\n}\\n\\n\u002F\u002F Compact Font Format\\nclass CFF {\\n  constructor() {\\n    this.header = null;\\n    this.names = [];\\n    this.topDict = null;\\n    this.strings = new CFFStrings();\\n    this.globalSubrIndex = null;\\n\\n    \u002F\u002F The following could really be per font, but since we only have one font\\n    \u002F\u002F store them here.\\n    this.encoding = null;\\n    this.charset = null;\\n    this.charStrings = null;\\n    this.fdArray = [];\\n    this.fdSelect = null;\\n\\n    this.isCIDFont = false;\\n  }\\n\\n  duplicateFirstGlyph() {\\n    \u002F\u002F Browsers will not display a glyph at position 0. Typically glyph 0 is\\n    \u002F\u002F notdef, but a number of fonts put a valid glyph there so it must be\\n    \u002F\u002F duplicated and appended.\\n    if (this.charStrings.count >= 65535) {\\n      warn(\\\"Not enough space in charstrings to duplicate first glyph.\\\");\\n      return;\\n    }\\n    const glyphZero = this.charStrings.get(0);\\n    this.charStrings.add(glyphZero);\\n    if (this.isCIDFont) {\\n      this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]);\\n    }\\n  }\\n\\n  hasGlyphId(id) {\\n    if (id \u003C 0 || id >= this.charStrings.count) {\\n      return false;\\n    }\\n    const glyph = this.charStrings.get(id);\\n    return glyph.length > 0;\\n  }\\n}\\n\\nclass CFFHeader {\\n  constructor(major, minor, hdrSize, offSize) {\\n    this.major = major;\\n    this.minor = minor;\\n    this.hdrSize = hdrSize;\\n    this.offSize = offSize;\\n  }\\n}\\n\\nclass CFFStrings {\\n  constructor() {\\n    this.strings = [];\\n  }\\n\\n  get(index) {\\n    if (index >= 0 && index \u003C= NUM_STANDARD_CFF_STRINGS - 1) {\\n      return CFFStandardStrings[index];\\n    }\\n    if (index - NUM_STANDARD_CFF_STRINGS \u003C= this.strings.length) {\\n      return this.strings[index - NUM_STANDARD_CFF_STRINGS];\\n    }\\n    return CFFStandardStrings[0];\\n  }\\n\\n  getSID(str) {\\n    let index = CFFStandardStrings.indexOf(str);\\n    if (index !== -1) {\\n      return index;\\n    }\\n    index = this.strings.indexOf(str);\\n    if (index !== -1) {\\n      return index + NUM_STANDARD_CFF_STRINGS;\\n    }\\n    return -1;\\n  }\\n\\n  add(value) {\\n    this.strings.push(value);\\n  }\\n\\n  get count() {\\n    return this.strings.length;\\n  }\\n}\\n\\nclass CFFIndex {\\n  constructor() {\\n    this.objects = [];\\n    this.length = 0;\\n  }\\n\\n  add(data) {\\n    this.length += data.length;\\n    this.objects.push(data);\\n  }\\n\\n  set(index, data) {\\n    this.length += data.length - this.objects[index].length;\\n    this.objects[index] = data;\\n  }\\n\\n  get(index) {\\n    return this.objects[index];\\n  }\\n\\n  get count() {\\n    return this.objects.length;\\n  }\\n}\\n\\nclass CFFDict {\\n  constructor(tables, strings) {\\n    this.keyToNameMap = tables.keyToNameMap;\\n    this.nameToKeyMap = tables.nameToKeyMap;\\n    this.defaults = tables.defaults;\\n    this.types = tables.types;\\n    this.opcodes = tables.opcodes;\\n    this.order = tables.order;\\n    this.strings = strings;\\n    this.values = Object.create(null);\\n  }\\n\\n  \u002F\u002F value should always be an array\\n  setByKey(key, value) {\\n    if (!(key in this.keyToNameMap)) {\\n      return false;\\n    }\\n    \u002F\u002F ignore empty values\\n    if (value.length === 0) {\\n      return true;\\n    }\\n    \u002F\u002F Ignore invalid values (fixes bug1068432.pdf and bug1308536.pdf).\\n    for (const val of value) {\\n      if (isNaN(val)) {\\n        warn(`Invalid CFFDict value: \\\"${value}\\\" for key \\\"${key}\\\".`);\\n        return true;\\n      }\\n    }\\n    const type = this.types[key];\\n    \u002F\u002F remove the array wrapping these types of values\\n    if (type === \\\"num\\\" || type === \\\"sid\\\" || type === \\\"offset\\\") {\\n      value = value[0];\\n    }\\n    this.values[key] = value;\\n    return true;\\n  }\\n\\n  setByName(name, value) {\\n    if (!(name in this.nameToKeyMap)) {\\n      throw new FormatError(`Invalid dictionary name \\\"${name}\\\"`);\\n    }\\n    this.values[this.nameToKeyMap[name]] = value;\\n  }\\n\\n  hasName(name) {\\n    return this.nameToKeyMap[name] in this.values;\\n  }\\n\\n  getByName(name) {\\n    if (!(name in this.nameToKeyMap)) {\\n      throw new FormatError(`Invalid dictionary name ${name}\\\"`);\\n    }\\n    const key = this.nameToKeyMap[name];\\n    if (!(key in this.values)) {\\n      return this.defaults[key];\\n    }\\n    return this.values[key];\\n  }\\n\\n  removeByName(name) {\\n    delete this.values[this.nameToKeyMap[name]];\\n  }\\n\\n  static createTables(layout) {\\n    const tables = {\\n      keyToNameMap: {},\\n      nameToKeyMap: {},\\n      defaults: {},\\n      types: {},\\n      opcodes: {},\\n      order: [],\\n    };\\n    for (const entry of layout) {\\n      const key = Array.isArray(entry[0])\\n        ? (entry[0][0] \u003C\u003C 8) + entry[0][1]\\n        : entry[0];\\n      tables.keyToNameMap[key] = entry[1];\\n      tables.nameToKeyMap[entry[1]] = key;\\n      tables.types[key] = entry[2];\\n      tables.defaults[key] = entry[3];\\n      tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]];\\n      tables.order.push(key);\\n    }\\n    return tables;\\n  }\\n}\\n\\nconst CFFTopDictLayout = [\\n  [[12, 30], \\\"ROS\\\", [\\\"sid\\\", \\\"sid\\\", \\\"num\\\"], null],\\n  [[12, 20], \\\"SyntheticBase\\\", \\\"num\\\", null],\\n  [0, \\\"version\\\", \\\"sid\\\", null],\\n  [1, \\\"Notice\\\", \\\"sid\\\", null],\\n  [[12, 0], \\\"Copyright\\\", \\\"sid\\\", null],\\n  [2, \\\"FullName\\\", \\\"sid\\\", null],\\n  [3, \\\"FamilyName\\\", \\\"sid\\\", null],\\n  [4, \\\"Weight\\\", \\\"sid\\\", null],\\n  [[12, 1], \\\"isFixedPitch\\\", \\\"num\\\", 0],\\n  [[12, 2], \\\"ItalicAngle\\\", \\\"num\\\", 0],\\n  [[12, 3], \\\"UnderlinePosition\\\", \\\"num\\\", -100],\\n  [[12, 4], \\\"UnderlineThickness\\\", \\\"num\\\", 50],\\n  [[12, 5], \\\"PaintType\\\", \\\"num\\\", 0],\\n  [[12, 6], \\\"CharstringType\\\", \\\"num\\\", 2],\\n  \u002F\u002F prettier-ignore\\n  [[12, 7], \\\"FontMatrix\\\", [\\\"num\\\", \\\"num\\\", \\\"num\\\", \\\"num\\\", \\\"num\\\", \\\"num\\\"],\\n                          [0.001, 0, 0, 0.001, 0, 0]],\\n  [13, \\\"UniqueID\\\", \\\"num\\\", null],\\n  [5, \\\"FontBBox\\\", [\\\"num\\\", \\\"num\\\", \\\"num\\\", \\\"num\\\"], [0, 0, 0, 0]],\\n  [[12, 8], \\\"StrokeWidth\\\", \\\"num\\\", 0],\\n  [14, \\\"XUID\\\", \\\"array\\\", null],\\n  [15, \\\"charset\\\", \\\"offset\\\", 0],\\n  [16, \\\"Encoding\\\", \\\"offset\\\", 0],\\n  [17, \\\"CharStrings\\\", \\\"offset\\\", 0],\\n  [18, \\\"Private\\\", [\\\"offset\\\", \\\"offset\\\"], null],\\n  [[12, 21], \\\"PostScript\\\", \\\"sid\\\", null],\\n  [[12, 22], \\\"BaseFontName\\\", \\\"sid\\\", null],\\n  [[12, 23], \\\"BaseFontBlend\\\", \\\"delta\\\", null],\\n  [[12, 31], \\\"CIDFontVersion\\\", \\\"num\\\", 0],\\n  [[12, 32], \\\"CIDFontRevision\\\", \\\"num\\\", 0],\\n  [[12, 33], \\\"CIDFontType\\\", \\\"num\\\", 0],\\n  [[12, 34], \\\"CIDCount\\\", \\\"num\\\", 8720],\\n  [[12, 35], \\\"UIDBase\\\", \\\"num\\\", null],\\n  \u002F\u002F XXX: CID Fonts on DirectWrite 6.1 only seem to work if FDSelect comes\\n  \u002F\u002F before FDArray.\\n  [[12, 37], \\\"FDSelect\\\", \\\"offset\\\", null],\\n  [[12, 36], \\\"FDArray\\\", \\\"offset\\\", null],\\n  [[12, 38], \\\"FontName\\\", \\\"sid\\\", null],\\n];\\n\\nclass CFFTopDict extends CFFDict {\\n  static get tables() {\\n    return shadow(this, \\\"tables\\\", this.createTables(CFFTopDictLayout));\\n  }\\n\\n  constructor(strings) {\\n    super(CFFTopDict.tables, strings);\\n    this.privateDict = null;\\n  }\\n}\\n\\nconst CFFPrivateDictLayout = [\\n  [6, \\\"BlueValues\\\", \\\"delta\\\", null],\\n  [7, \\\"OtherBlues\\\", \\\"delta\\\", null],\\n  [8, \\\"FamilyBlues\\\", \\\"delta\\\", null],\\n  [9, \\\"FamilyOtherBlues\\\", \\\"delta\\\", null],\\n  [[12, 9], \\\"BlueScale\\\", \\\"num\\\", 0.039625],\\n  [[12, 10], \\\"BlueShift\\\", \\\"num\\\", 7],\\n  [[12, 11], \\\"BlueFuzz\\\", \\\"num\\\", 1],\\n  [10, \\\"StdHW\\\", \\\"num\\\", null],\\n  [11, \\\"StdVW\\\", \\\"num\\\", null],\\n  [[12, 12], \\\"StemSnapH\\\", \\\"delta\\\", null],\\n  [[12, 13], \\\"StemSnapV\\\", \\\"delta\\\", null],\\n  [[12, 14], \\\"ForceBold\\\", \\\"num\\\", 0],\\n  [[12, 17], \\\"LanguageGroup\\\", \\\"num\\\", 0],\\n  [[12, 18], \\\"ExpansionFactor\\\", \\\"num\\\", 0.06],\\n  [[12, 19], \\\"initialRandomSeed\\\", \\\"num\\\", 0],\\n  [20, \\\"defaultWidthX\\\", \\\"num\\\", 0],\\n  [21, \\\"nominalWidthX\\\", \\\"num\\\", 0],\\n  [19, \\\"Subrs\\\", \\\"offset\\\", null],\\n];\\n\\nclass CFFPrivateDict extends CFFDict {\\n  static get tables() {\\n    return shadow(this, \\\"tables\\\", this.createTables(CFFPrivateDictLayout));\\n  }\\n\\n  constructor(strings) {\\n    super(CFFPrivateDict.tables, strings);\\n    this.subrsIndex = null;\\n  }\\n}\\n\\nconst CFFCharsetPredefinedTypes = {\\n  ISO_ADOBE: 0,\\n  EXPERT: 1,\\n  EXPERT_SUBSET: 2,\\n};\\n\\nclass CFFCharset {\\n  constructor(predefined, format, charset, raw) {\\n    this.predefined = predefined;\\n    this.format = format;\\n    this.charset = charset;\\n    this.raw = raw;\\n  }\\n}\\n\\nclass CFFEncoding {\\n  constructor(predefined, format, encoding, raw) {\\n    this.predefined = predefined;\\n    this.format = format;\\n    this.encoding = encoding;\\n    this.raw = raw;\\n  }\\n}\\n\\nclass CFFFDSelect {\\n  constructor(format, fdSelect) {\\n    this.format = format;\\n    this.fdSelect = fdSelect;\\n  }\\n\\n  getFDIndex(glyphIndex) {\\n    if (glyphIndex \u003C 0 || glyphIndex >= this.fdSelect.length) {\\n      return -1;\\n    }\\n    return this.fdSelect[glyphIndex];\\n  }\\n}\\n\\n\u002F\u002F Helper class to keep track of where an offset is within the data and helps\\n\u002F\u002F filling in that offset once it's known.\\nclass CFFOffsetTracker {\\n  constructor() {\\n    this.offsets = Object.create(null);\\n  }\\n\\n  isTracking(key) {\\n    return key in this.offsets;\\n  }\\n\\n  track(key, location) {\\n    if (key in this.offsets) {\\n      throw new FormatError(`Already tracking location of ${key}`);\\n    }\\n    this.offsets[key] = location;\\n  }\\n\\n  offset(value) {\\n    for (const key in this.offsets) {\\n      this.offsets[key] += value;\\n    }\\n  }\\n\\n  setEntryLocation(key, values, output) {\\n    if (!(key in this.offsets)) {\\n      throw new FormatError(`Not tracking location of ${key}`);\\n    }\\n    const data = output.data;\\n    const dataOffset = this.offsets[key];\\n    const size = 5;\\n    for (let i = 0, ii = values.length; i \u003C ii; ++i) {\\n      const offset0 = i * size + dataOffset;\\n      const offset1 = offset0 + 1;\\n      const offset2 = offset0 + 2;\\n      const offset3 = offset0 + 3;\\n      const offset4 = offset0 + 4;\\n      \u002F\u002F It's easy to screw up offsets so perform this sanity check.\\n      if (\\n        data[offset0] !== 0x1d ||\\n        data[offset1] !== 0 ||\\n        data[offset2] !== 0 ||\\n        data[offset3] !== 0 ||\\n        data[offset4] !== 0\\n      ) {\\n        throw new FormatError(\\\"writing to an offset that is not empty\\\");\\n      }\\n      const value = values[i];\\n      data[offset0] = 0x1d;\\n      data[offset1] = (value >> 24) & 0xff;\\n      data[offset2] = (value >> 16) & 0xff;\\n      data[offset3] = (value >> 8) & 0xff;\\n      data[offset4] = value & 0xff;\\n    }\\n  }\\n}\\n\\n\u002F\u002F Takes a CFF and converts it to the binary representation.\\nclass CFFCompiler {\\n  constructor(cff) {\\n    this.cff = cff;\\n  }\\n\\n  compile() {\\n    const cff = this.cff;\\n    const output = {\\n      data: [],\\n      length: 0,\\n      add(data) {\\n        try {\\n          \u002F\u002F It's possible to exceed the call stack maximum size when trying\\n          \u002F\u002F to push too much elements.\\n          \u002F\u002F In case of failure, we fallback to the `concat` method.\\n          this.data.push(...data);\\n        } catch {\\n          this.data = this.data.concat(data);\\n        }\\n        this.length = this.data.length;\\n      },\\n    };\\n\\n    \u002F\u002F Compile the five entries that must be in order.\\n    const header = this.compileHeader(cff.header);\\n    output.add(header);\\n\\n    const nameIndex = this.compileNameIndex(cff.names);\\n    output.add(nameIndex);\\n\\n    if (cff.isCIDFont) {\\n      \u002F\u002F The spec is unclear on how font matrices should relate to each other\\n      \u002F\u002F when there is one in the main top dict and the sub top dicts.\\n      \u002F\u002F Windows handles this differently than linux and osx so we have to\\n      \u002F\u002F normalize to work on all.\\n      \u002F\u002F Rules based off of some mailing list discussions:\\n      \u002F\u002F - If main font has a matrix and subfont doesn't, use the main matrix.\\n      \u002F\u002F - If no main font matrix and there is a subfont matrix, use the\\n      \u002F\u002F   subfont matrix.\\n      \u002F\u002F - If both have matrices, concat together.\\n      \u002F\u002F - If neither have matrices, use default.\\n      \u002F\u002F To make this work on all platforms we move the top matrix into each\\n      \u002F\u002F sub top dict and concat if necessary.\\n      if (cff.topDict.hasName(\\\"FontMatrix\\\")) {\\n        const base = cff.topDict.getByName(\\\"FontMatrix\\\");\\n        cff.topDict.removeByName(\\\"FontMatrix\\\");\\n        for (const subDict of cff.fdArray) {\\n          let matrix = base.slice(0);\\n          if (subDict.hasName(\\\"FontMatrix\\\")) {\\n            matrix = Util.transform(matrix, subDict.getByName(\\\"FontMatrix\\\"));\\n          }\\n          subDict.setByName(\\\"FontMatrix\\\", matrix);\\n        }\\n      }\\n    }\\n\\n    const xuid = cff.topDict.getByName(\\\"XUID\\\");\\n    if (xuid?.length > 16) {\\n      \u002F\u002F Length of XUID array must not be greater than 16 (issue #12399).\\n      cff.topDict.removeByName(\\\"XUID\\\");\\n    }\\n\\n    cff.topDict.setByName(\\\"charset\\\", 0);\\n    let compiled = this.compileTopDicts(\\n      [cff.topDict],\\n      output.length,\\n      cff.isCIDFont\\n    );\\n    output.add(compiled.output);\\n    const topDictTracker = compiled.trackers[0];\\n\\n    const stringIndex = this.compileStringIndex(cff.strings.strings);\\n    output.add(stringIndex);\\n\\n    const globalSubrIndex = this.compileIndex(cff.globalSubrIndex);\\n    output.add(globalSubrIndex);\\n\\n    \u002F\u002F Now start on the other entries that have no specific order.\\n    if (cff.encoding && cff.topDict.hasName(\\\"Encoding\\\")) {\\n      if (cff.encoding.predefined) {\\n        topDictTracker.setEntryLocation(\\n          \\\"Encoding\\\",\\n          [cff.encoding.format],\\n          output\\n        );\\n      } else {\\n        const encoding = this.compileEncoding(cff.encoding);\\n        topDictTracker.setEntryLocation(\\\"Encoding\\\", [output.length], output);\\n        output.add(encoding);\\n      }\\n    }\\n    const charset = this.compileCharset(\\n      cff.charset,\\n      cff.charStrings.count,\\n      cff.strings,\\n      cff.isCIDFont\\n    );\\n    topDictTracker.setEntryLocation(\\\"charset\\\", [output.length], output);\\n    output.add(charset);\\n\\n    const charStrings = this.compileCharStrings(cff.charStrings);\\n    topDictTracker.setEntryLocation(\\\"CharStrings\\\", [output.length], output);\\n    output.add(charStrings);\\n\\n    if (cff.isCIDFont) {\\n      \u002F\u002F For some reason FDSelect must be in front of FDArray on windows. OSX\\n      \u002F\u002F and linux don't seem to care.\\n      topDictTracker.setEntryLocation(\\\"FDSelect\\\", [output.length], output);\\n      const fdSelect = this.compileFDSelect(cff.fdSelect);\\n      output.add(fdSelect);\\n      \u002F\u002F It is unclear if the sub font dictionary can have CID related\\n      \u002F\u002F dictionary keys, but the sanitizer doesn't like them so remove them.\\n      compiled = this.compileTopDicts(cff.fdArray, output.length, true);\\n      topDictTracker.setEntryLocation(\\\"FDArray\\\", [output.length], output);\\n      output.add(compiled.output);\\n      const fontDictTrackers = compiled.trackers;\\n\\n      this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);\\n    }\\n\\n    this.compilePrivateDicts([cff.topDict], [topDictTracker], output);\\n\\n    \u002F\u002F If the font data ends with INDEX whose object data is zero-length,\\n    \u002F\u002F the sanitizer will bail out. Add a dummy byte to avoid that.\\n    output.add([0]);\\n\\n    return output.data;\\n  }\\n\\n  encodeNumber(value) {\\n    if (Number.isInteger(value)) {\\n      return this.encodeInteger(value);\\n    }\\n    return this.encodeFloat(value);\\n  }\\n\\n  static get EncodeFloatRegExp() {\\n    return shadow(\\n      this,\\n      \\\"EncodeFloatRegExp\\\",\\n      \u002F\\\\.(\\\\d*?)(?:9{5,20}|0{5,20})\\\\d{0,2}(?:e(.+)|$)\u002F\\n    );\\n  }\\n\\n  encodeFloat(num) {\\n    let value = num.toString();\\n\\n    \u002F\u002F Rounding inaccurate doubles.\\n    const m = CFFCompiler.EncodeFloatRegExp.exec(value);\\n    if (m) {\\n      const epsilon = parseFloat(\\\"1e\\\" + ((m[2] ? +m[2] : 0) + m[1].length));\\n      value = (Math.round(num * epsilon) \u002F epsilon).toString();\\n    }\\n\\n    let nibbles = \\\"\\\";\\n    let i, ii;\\n    for (i = 0, ii = value.length; i \u003C ii; ++i) {\\n      const a = value[i];\\n      if (a === \\\"e\\\") {\\n        nibbles += value[++i] === \\\"-\\\" ? \\\"c\\\" : \\\"b\\\";\\n      } else if (a === \\\".\\\") {\\n        nibbles += \\\"a\\\";\\n      } else if (a === \\\"-\\\") {\\n        nibbles += \\\"e\\\";\\n      } else {\\n        nibbles += a;\\n      }\\n    }\\n    nibbles += nibbles.length & 1 ? \\\"f\\\" : \\\"ff\\\";\\n    const out = [30];\\n    for (i = 0, ii = nibbles.length; i \u003C ii; i += 2) {\\n      out.push(parseInt(nibbles.substring(i, i + 2), 16));\\n    }\\n    return out;\\n  }\\n\\n  encodeInteger(value) {\\n    let code;\\n    if (value >= -107 && value \u003C= 107) {\\n      code = [value + 139];\\n    } else if (value >= 108 && value \u003C= 1131) {\\n      value -= 108;\\n      code = [(value >> 8) + 247, value & 0xff];\\n    } else if (value >= -1131 && value \u003C= -108) {\\n      value = -value - 108;\\n      code = [(value >> 8) + 251, value & 0xff];\\n    } else if (value >= -32768 && value \u003C= 32767) {\\n      code = [0x1c, (value >> 8) & 0xff, value & 0xff];\\n    } else {\\n      code = [\\n        0x1d,\\n        (value >> 24) & 0xff,\\n        (value >> 16) & 0xff,\\n        (value >> 8) & 0xff,\\n        value & 0xff,\\n      ];\\n    }\\n    return code;\\n  }\\n\\n  compileHeader(header) {\\n    \u002F\u002F `header.hdrSize` can be any value but we only write 4 values\\n    \u002F\u002F so header size is 4 (prevents OTS from rejecting the font).\\n    return [header.major, header.minor, 4, header.offSize];\\n  }\\n\\n  compileNameIndex(names) {\\n    const nameIndex = new CFFIndex();\\n    for (const name of names) {\\n      \u002F\u002F OTS doesn't allow names to be over 127 characters.\\n      const length = Math.min(name.length, 127);\\n      let sanitizedName = new Array(length);\\n      for (let j = 0; j \u003C length; j++) {\\n        \u002F\u002F OTS requires chars to be between a range and not certain other\\n        \u002F\u002F chars.\\n        let char = name[j];\\n        if (\\n          char \u003C \\\"!\\\" ||\\n          char > \\\"~\\\" ||\\n          char === \\\"[\\\" ||\\n          char === \\\"]\\\" ||\\n          char === \\\"(\\\" ||\\n          char === \\\")\\\" ||\\n          char === \\\"{\\\" ||\\n          char === \\\"}\\\" ||\\n          char === \\\"\u003C\\\" ||\\n          char === \\\">\\\" ||\\n          char === \\\"\u002F\\\" ||\\n          char === \\\"%\\\"\\n        ) {\\n          char = \\\"_\\\";\\n        }\\n        sanitizedName[j] = char;\\n      }\\n      sanitizedName = sanitizedName.join(\\\"\\\");\\n\\n      if (sanitizedName === \\\"\\\") {\\n        sanitizedName = \\\"Bad_Font_Name\\\";\\n      }\\n      nameIndex.add(stringToBytes(sanitizedName));\\n    }\\n    return this.compileIndex(nameIndex);\\n  }\\n\\n  compileTopDicts(dicts, length, removeCidKeys) {\\n    const fontDictTrackers = [];\\n    let fdArrayIndex = new CFFIndex();\\n    for (const fontDict of dicts) {\\n      if (removeCidKeys) {\\n        fontDict.removeByName(\\\"CIDFontVersion\\\");\\n        fontDict.removeByName(\\\"CIDFontRevision\\\");\\n        fontDict.removeByName(\\\"CIDFontType\\\");\\n        fontDict.removeByName(\\\"CIDCount\\\");\\n        fontDict.removeByName(\\\"UIDBase\\\");\\n      }\\n      const fontDictTracker = new CFFOffsetTracker();\\n      const fontDictData = this.compileDict(fontDict, fontDictTracker);\\n      fontDictTrackers.push(fontDictTracker);\\n      fdArrayIndex.add(fontDictData);\\n      fontDictTracker.offset(length);\\n    }\\n    fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);\\n    return {\\n      trackers: fontDictTrackers,\\n      output: fdArrayIndex,\\n    };\\n  }\\n\\n  compilePrivateDicts(dicts, trackers, output) {\\n    for (let i = 0, ii = dicts.length; i \u003C ii; ++i) {\\n      const fontDict = dicts[i];\\n      const privateDict = fontDict.privateDict;\\n      if (!privateDict || !fontDict.hasName(\\\"Private\\\")) {\\n        throw new FormatError(\\\"There must be a private dictionary.\\\");\\n      }\\n      const privateDictTracker = new CFFOffsetTracker();\\n      const privateDictData = this.compileDict(privateDict, privateDictTracker);\\n\\n      let outputLength = output.length;\\n      privateDictTracker.offset(outputLength);\\n      if (!privateDictData.length) {\\n        \u002F\u002F The private dictionary was empty, set the output length to zero to\\n        \u002F\u002F ensure the offset length isn't out of bounds in the eyes of the\\n        \u002F\u002F sanitizer.\\n        outputLength = 0;\\n      }\\n\\n      trackers[i].setEntryLocation(\\n        \\\"Private\\\",\\n        [privateDictData.length, outputLength],\\n        output\\n      );\\n      output.add(privateDictData);\\n\\n      if (privateDict.subrsIndex && privateDict.hasName(\\\"Subrs\\\")) {\\n        const subrs = this.compileIndex(privateDict.subrsIndex);\\n        privateDictTracker.setEntryLocation(\\n          \\\"Subrs\\\",\\n          [privateDictData.length],\\n          output\\n        );\\n        output.add(subrs);\\n      }\\n    }\\n  }\\n\\n  compileDict(dict, offsetTracker) {\\n    const out = [];\\n    \u002F\u002F The dictionary keys must be in a certain order.\\n    for (const key of dict.order) {\\n      if (!(key in dict.values)) {\\n        continue;\\n      }\\n      let values = dict.values[key];\\n      let types = dict.types[key];\\n      if (!Array.isArray(types)) {\\n        types = [types];\\n      }\\n      if (!Array.isArray(values)) {\\n        values = [values];\\n      }\\n\\n      \u002F\u002F Remove any empty dict values.\\n      if (values.length === 0) {\\n        continue;\\n      }\\n\\n      for (let j = 0, jj = types.length; j \u003C jj; ++j) {\\n        const type = types[j];\\n        const value = values[j];\\n        switch (type) {\\n          case \\\"num\\\":\\n          case \\\"sid\\\":\\n            out.push(...this.encodeNumber(value));\\n            break;\\n          case \\\"offset\\\":\\n            \u002F\u002F For offsets we just insert a 32bit integer so we don't have to\\n            \u002F\u002F deal with figuring out the length of the offset when it gets\\n            \u002F\u002F replaced later on by the compiler.\\n            const name = dict.keyToNameMap[key];\\n            \u002F\u002F Some offsets have the offset and the length, so just record the\\n            \u002F\u002F position of the first one.\\n            if (!offsetTracker.isTracking(name)) {\\n              offsetTracker.track(name, out.length);\\n            }\\n            out.push(0x1d, 0, 0, 0, 0);\\n            break;\\n          case \\\"array\\\":\\n          case \\\"delta\\\":\\n            out.push(...this.encodeNumber(value));\\n            for (let k = 1, kk = values.length; k \u003C kk; ++k) {\\n              out.push(...this.encodeNumber(values[k]));\\n            }\\n            break;\\n          default:\\n            throw new FormatError(`Unknown data type of ${type}`);\\n        }\\n      }\\n      out.push(...dict.opcodes[key]);\\n    }\\n    return out;\\n  }\\n\\n  compileStringIndex(strings) {\\n    const stringIndex = new CFFIndex();\\n    for (const string of strings) {\\n      stringIndex.add(stringToBytes(string));\\n    }\\n    return this.compileIndex(stringIndex);\\n  }\\n\\n  compileCharStrings(charStrings) {\\n    const charStringsIndex = new CFFIndex();\\n    for (let i = 0; i \u003C charStrings.count; i++) {\\n      const glyph = charStrings.get(i);\\n      \u002F\u002F If the CharString outline is empty, replace it with .notdef to\\n      \u002F\u002F prevent OTS from rejecting the font (fixes bug1252420.pdf).\\n      if (glyph.length === 0) {\\n        charStringsIndex.add(new Uint8Array([0x8b, 0x0e]));\\n        continue;\\n      }\\n      charStringsIndex.add(glyph);\\n    }\\n    return this.compileIndex(charStringsIndex);\\n  }\\n\\n  compileCharset(charset, numGlyphs, strings, isCIDFont) {\\n    \u002F\u002F Freetype requires the number of charset strings be correct and MacOS\\n    \u002F\u002F requires a valid mapping for printing.\\n    let out;\\n    const numGlyphsLessNotDef = numGlyphs - 1;\\n    if (isCIDFont) {\\n      \u002F\u002F In a CID font, the charset is a mapping of CIDs not SIDs so just\\n      \u002F\u002F create an identity mapping.\\n      \u002F\u002F nLeft: Glyphs left in range (excluding first) (see the CFF specs).\\n      \u002F\u002F Having a wrong value for nLeft induces a print issue on MacOS (see\\n      \u002F\u002F https:\u002F\u002Fbugzilla.mozilla.org\u002F1961423).\\n      const nLeft = numGlyphsLessNotDef - 1;\\n      out = new Uint8Array([\\n        2, \u002F\u002F format\\n        0, \u002F\u002F first CID upper byte\\n        0, \u002F\u002F first CID lower byte\\n        (nLeft >> 8) & 0xff,\\n        nLeft & 0xff,\\n      ]);\\n    } else {\\n      const length = 1 + numGlyphsLessNotDef * 2;\\n      out = new Uint8Array(length);\\n      out[0] = 0; \u002F\u002F format 0\\n      let charsetIndex = 0;\\n      const numCharsets = charset.charset.length;\\n      let warned = false;\\n      for (let i = 1; i \u003C out.length; i += 2) {\\n        let sid = 0;\\n        if (charsetIndex \u003C numCharsets) {\\n          const name = charset.charset[charsetIndex++];\\n          sid = strings.getSID(name);\\n          if (sid === -1) {\\n            sid = 0;\\n            if (!warned) {\\n              warned = true;\\n              warn(`Couldn't find ${name} in CFF strings`);\\n            }\\n          }\\n        }\\n        out[i] = (sid >> 8) & 0xff;\\n        out[i + 1] = sid & 0xff;\\n      }\\n    }\\n    return this.compileTypedArray(out);\\n  }\\n\\n  compileEncoding(encoding) {\\n    return this.compileTypedArray(encoding.raw);\\n  }\\n\\n  compileFDSelect(fdSelect) {\\n    const format = fdSelect.format;\\n    let out, i;\\n    switch (format) {\\n      case 0:\\n        out = new Uint8Array(1 + fdSelect.fdSelect.length);\\n        out[0] = format;\\n        for (i = 0; i \u003C fdSelect.fdSelect.length; i++) {\\n          out[i + 1] = fdSelect.fdSelect[i];\\n        }\\n        break;\\n      case 3:\\n        const start = 0;\\n        let lastFD = fdSelect.fdSelect[0];\\n        const ranges = [\\n          format,\\n          0, \u002F\u002F nRanges place holder\\n          0, \u002F\u002F nRanges place holder\\n          (start >> 8) & 0xff,\\n          start & 0xff,\\n          lastFD,\\n        ];\\n        for (i = 1; i \u003C fdSelect.fdSelect.length; i++) {\\n          const currentFD = fdSelect.fdSelect[i];\\n          if (currentFD !== lastFD) {\\n            ranges.push((i >> 8) & 0xff, i & 0xff, currentFD);\\n            lastFD = currentFD;\\n          }\\n        }\\n        \u002F\u002F 3 bytes are pushed for every range and there are 3 header bytes.\\n        const numRanges = (ranges.length - 3) \u002F 3;\\n        ranges[1] = (numRanges >> 8) & 0xff;\\n        ranges[2] = numRanges & 0xff;\\n        \u002F\u002F sentinel\\n        ranges.push((i >> 8) & 0xff, i & 0xff);\\n        out = new Uint8Array(ranges);\\n        break;\\n    }\\n    return this.compileTypedArray(out);\\n  }\\n\\n  compileTypedArray(data) {\\n    return Array.from(data);\\n  }\\n\\n  compileIndex(index, trackers = []) {\\n    const objects = index.objects;\\n    \u002F\u002F First 2 bytes contains the number of objects contained into this index\\n    const count = objects.length;\\n\\n    \u002F\u002F If there is no object, just create an index.\\n    if (count === 0) {\\n      return [0, 0];\\n    }\\n\\n    const data = [(count >> 8) & 0xff, count & 0xff];\\n\\n    let lastOffset = 1,\\n      i;\\n    for (i = 0; i \u003C count; ++i) {\\n      lastOffset += objects[i].length;\\n    }\\n\\n    let offsetSize;\\n    if (lastOffset \u003C 0x100) {\\n      offsetSize = 1;\\n    } else if (lastOffset \u003C 0x10000) {\\n      offsetSize = 2;\\n    } else if (lastOffset \u003C 0x1000000) {\\n      offsetSize = 3;\\n    } else {\\n      offsetSize = 4;\\n    }\\n\\n    \u002F\u002F Next byte contains the offset size use to reference object in the file\\n    data.push(offsetSize);\\n\\n    \u002F\u002F Add another offset after this one because we need a new offset\\n    let relativeOffset = 1;\\n    for (i = 0; i \u003C count + 1; i++) {\\n      if (offsetSize === 1) {\\n        data.push(relativeOffset & 0xff);\\n      } else if (offsetSize === 2) {\\n        data.push((relativeOffset >> 8) & 0xff, relativeOffset & 0xff);\\n      } else if (offsetSize === 3) {\\n        data.push(\\n          (relativeOffset >> 16) & 0xff,\\n          (relativeOffset >> 8) & 0xff,\\n          relativeOffset & 0xff\\n        );\\n      } else {\\n        data.push(\\n          (relativeOffset >>> 24) & 0xff,\\n          (relativeOffset >> 16) & 0xff,\\n          (relativeOffset >> 8) & 0xff,\\n          relativeOffset & 0xff\\n        );\\n      }\\n\\n      if (objects[i]) {\\n        relativeOffset += objects[i].length;\\n      }\\n    }\\n\\n    for (i = 0; i \u003C count; i++) {\\n      \u002F\u002F Notify the tracker where the object will be offset in the data.\\n      if (trackers[i]) {\\n        trackers[i].offset(data.length);\\n      }\\n      data.push(...objects[i]);\\n    }\\n    return data;\\n  }\\n}\\n\\nexport {\\n  CFF,\\n  CFFCharset,\\n  CFFCompiler,\\n  CFFFDSelect,\\n  CFFHeader,\\n  CFFIndex,\\n  CFFParser,\\n  CFFPrivateDict,\\n  CFFStandardStrings,\\n  CFFStrings,\\n  CFFTopDict,\\n};\\n\",\"\u002F* Copyright 2015 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { getLookupTableFactory } from \\\".\u002Fcore_utils.js\\\";\\nimport { normalizeFontName } from \\\".\u002Ffonts_utils.js\\\";\\n\\n\u002F**\\n * Hold a map of decoded fonts and of the standard fourteen Type1\\n * fonts and their acronyms.\\n *\u002F\\nconst getStdFontMap = getLookupTableFactory(function (t) {\\n  \u002F\u002F The standard 14 fonts:\\n  t[\\\"Times-Roman\\\"] = \\\"Times-Roman\\\";\\n  t.Helvetica = \\\"Helvetica\\\";\\n  t.Courier = \\\"Courier\\\";\\n  t.Symbol = \\\"Symbol\\\";\\n  t[\\\"Times-Bold\\\"] = \\\"Times-Bold\\\";\\n  t[\\\"Helvetica-Bold\\\"] = \\\"Helvetica-Bold\\\";\\n  t[\\\"Courier-Bold\\\"] = \\\"Courier-Bold\\\";\\n  t.ZapfDingbats = \\\"ZapfDingbats\\\";\\n  t[\\\"Times-Italic\\\"] = \\\"Times-Italic\\\";\\n  t[\\\"Helvetica-Oblique\\\"] = \\\"Helvetica-Oblique\\\";\\n  t[\\\"Courier-Oblique\\\"] = \\\"Courier-Oblique\\\";\\n  t[\\\"Times-BoldItalic\\\"] = \\\"Times-BoldItalic\\\";\\n  t[\\\"Helvetica-BoldOblique\\\"] = \\\"Helvetica-BoldOblique\\\";\\n  t[\\\"Courier-BoldOblique\\\"] = \\\"Courier-BoldOblique\\\";\\n\\n  \u002F\u002F Extra mappings\\n  t.ArialNarrow = \\\"Helvetica\\\";\\n  t[\\\"ArialNarrow-Bold\\\"] = \\\"Helvetica-Bold\\\";\\n  t[\\\"ArialNarrow-BoldItalic\\\"] = \\\"Helvetica-BoldOblique\\\";\\n  t[\\\"ArialNarrow-Italic\\\"] = \\\"Helvetica-Oblique\\\";\\n  t.ArialBlack = \\\"Helvetica\\\";\\n  t[\\\"ArialBlack-Bold\\\"] = \\\"Helvetica-Bold\\\";\\n  t[\\\"ArialBlack-BoldItalic\\\"] = \\\"Helvetica-BoldOblique\\\";\\n  t[\\\"ArialBlack-Italic\\\"] = \\\"Helvetica-Oblique\\\";\\n  t[\\\"Arial-Black\\\"] = \\\"Helvetica\\\";\\n  t[\\\"Arial-Black-Bold\\\"] = \\\"Helvetica-Bold\\\";\\n  t[\\\"Arial-Black-BoldItalic\\\"] = \\\"Helvetica-BoldOblique\\\";\\n  t[\\\"Arial-Black-Italic\\\"] = \\\"Helvetica-Oblique\\\";\\n  t.Arial = \\\"Helvetica\\\";\\n  t[\\\"Arial-Bold\\\"] = \\\"Helvetica-Bold\\\";\\n  t[\\\"Arial-BoldItalic\\\"] = \\\"Helvetica-BoldOblique\\\";\\n  t[\\\"Arial-Italic\\\"] = \\\"Helvetica-Oblique\\\";\\n  t.ArialMT = \\\"Helvetica\\\";\\n  t[\\\"Arial-BoldItalicMT\\\"] = \\\"Helvetica-BoldOblique\\\";\\n  t[\\\"Arial-BoldMT\\\"] = \\\"Helvetica-Bold\\\";\\n  t[\\\"Arial-ItalicMT\\\"] = \\\"Helvetica-Oblique\\\";\\n  t[\\\"Arial-BoldItalicMT-BoldItalic\\\"] = \\\"Helvetica-BoldOblique\\\";\\n  t[\\\"Arial-BoldMT-Bold\\\"] = \\\"Helvetica-Bold\\\";\\n  t[\\\"Arial-ItalicMT-Italic\\\"] = \\\"Helvetica-Oblique\\\";\\n  t.ArialUnicodeMS = \\\"Helvetica\\\";\\n  t[\\\"ArialUnicodeMS-Bold\\\"] = \\\"Helvetica-Bold\\\";\\n  t[\\\"ArialUnicodeMS-BoldItalic\\\"] = \\\"Helvetica-BoldOblique\\\";\\n  t[\\\"ArialUnicodeMS-Italic\\\"] = \\\"Helvetica-Oblique\\\";\\n  t[\\\"Courier-BoldItalic\\\"] = \\\"Courier-BoldOblique\\\";\\n  t[\\\"Courier-Italic\\\"] = \\\"Courier-Oblique\\\";\\n  t.CourierNew = \\\"Courier\\\";\\n  t[\\\"CourierNew-Bold\\\"] = \\\"Courier-Bold\\\";\\n  t[\\\"CourierNew-BoldItalic\\\"] = \\\"Courier-BoldOblique\\\";\\n  t[\\\"CourierNew-Italic\\\"] = \\\"Courier-Oblique\\\";\\n  t[\\\"CourierNewPS-BoldItalicMT\\\"] = \\\"Courier-BoldOblique\\\";\\n  t[\\\"CourierNewPS-BoldMT\\\"] = \\\"Courier-Bold\\\";\\n  t[\\\"CourierNewPS-ItalicMT\\\"] = \\\"Courier-Oblique\\\";\\n  t.CourierNewPSMT = \\\"Courier\\\";\\n  t[\\\"Helvetica-BoldItalic\\\"] = \\\"Helvetica-BoldOblique\\\";\\n  t[\\\"Helvetica-Italic\\\"] = \\\"Helvetica-Oblique\\\";\\n  t[\\\"HelveticaLTStd-Bold\\\"] = \\\"Helvetica-Bold\\\";\\n  t[\\\"Symbol-Bold\\\"] = \\\"Symbol\\\";\\n  t[\\\"Symbol-BoldItalic\\\"] = \\\"Symbol\\\";\\n  t[\\\"Symbol-Italic\\\"] = \\\"Symbol\\\";\\n  t.TimesNewRoman = \\\"Times-Roman\\\";\\n  t[\\\"TimesNewRoman-Bold\\\"] = \\\"Times-Bold\\\";\\n  t[\\\"TimesNewRoman-BoldItalic\\\"] = \\\"Times-BoldItalic\\\";\\n  t[\\\"TimesNewRoman-Italic\\\"] = \\\"Times-Italic\\\";\\n  t.TimesNewRomanPS = \\\"Times-Roman\\\";\\n  t[\\\"TimesNewRomanPS-Bold\\\"] = \\\"Times-Bold\\\";\\n  t[\\\"TimesNewRomanPS-BoldItalic\\\"] = \\\"Times-BoldItalic\\\";\\n  t[\\\"TimesNewRomanPS-BoldItalicMT\\\"] = \\\"Times-BoldItalic\\\";\\n  t[\\\"TimesNewRomanPS-BoldMT\\\"] = \\\"Times-Bold\\\";\\n  t[\\\"TimesNewRomanPS-Italic\\\"] = \\\"Times-Italic\\\";\\n  t[\\\"TimesNewRomanPS-ItalicMT\\\"] = \\\"Times-Italic\\\";\\n  t.TimesNewRomanPSMT = \\\"Times-Roman\\\";\\n  t[\\\"TimesNewRomanPSMT-Bold\\\"] = \\\"Times-Bold\\\";\\n  t[\\\"TimesNewRomanPSMT-BoldItalic\\\"] = \\\"Times-BoldItalic\\\";\\n  t[\\\"TimesNewRomanPSMT-Italic\\\"] = \\\"Times-Italic\\\";\\n});\\n\\n\u002F\u002F Contains mapping for standard fonts and xfa fonts.\\nconst getFontNameToFileMap = getLookupTableFactory(function (t) {\\n  t.Courier = \\\"FoxitFixed.pfb\\\";\\n  t[\\\"Courier-Bold\\\"] = \\\"FoxitFixedBold.pfb\\\";\\n  t[\\\"Courier-BoldOblique\\\"] = \\\"FoxitFixedBoldItalic.pfb\\\";\\n  t[\\\"Courier-Oblique\\\"] = \\\"FoxitFixedItalic.pfb\\\";\\n  t.Helvetica = \\\"LiberationSans-Regular.ttf\\\";\\n  t[\\\"Helvetica-Bold\\\"] = \\\"LiberationSans-Bold.ttf\\\";\\n  t[\\\"Helvetica-BoldOblique\\\"] = \\\"LiberationSans-BoldItalic.ttf\\\";\\n  t[\\\"Helvetica-Oblique\\\"] = \\\"LiberationSans-Italic.ttf\\\";\\n  t[\\\"Times-Roman\\\"] = \\\"FoxitSerif.pfb\\\";\\n  t[\\\"Times-Bold\\\"] = \\\"FoxitSerifBold.pfb\\\";\\n  t[\\\"Times-BoldItalic\\\"] = \\\"FoxitSerifBoldItalic.pfb\\\";\\n  t[\\\"Times-Italic\\\"] = \\\"FoxitSerifItalic.pfb\\\";\\n  t.Symbol = \\\"FoxitSymbol.pfb\\\";\\n  t.ZapfDingbats = \\\"FoxitDingbats.pfb\\\";\\n  t[\\\"LiberationSans-Regular\\\"] = \\\"LiberationSans-Regular.ttf\\\";\\n  t[\\\"LiberationSans-Bold\\\"] = \\\"LiberationSans-Bold.ttf\\\";\\n  t[\\\"LiberationSans-Italic\\\"] = \\\"LiberationSans-Italic.ttf\\\";\\n  t[\\\"LiberationSans-BoldItalic\\\"] = \\\"LiberationSans-BoldItalic.ttf\\\";\\n});\\n\\n\u002F**\\n * Holds the map of the non-standard fonts that might be included as\\n * a standard fonts without glyph data.\\n *\u002F\\nconst getNonStdFontMap = getLookupTableFactory(function (t) {\\n  t.Calibri = \\\"Helvetica\\\";\\n  t[\\\"Calibri-Bold\\\"] = \\\"Helvetica-Bold\\\";\\n  t[\\\"Calibri-BoldItalic\\\"] = \\\"Helvetica-BoldOblique\\\";\\n  t[\\\"Calibri-Italic\\\"] = \\\"Helvetica-Oblique\\\";\\n  t.CenturyGothic = \\\"Helvetica\\\";\\n  t[\\\"CenturyGothic-Bold\\\"] = \\\"Helvetica-Bold\\\";\\n  t[\\\"CenturyGothic-BoldItalic\\\"] = \\\"Helvetica-BoldOblique\\\";\\n  t[\\\"CenturyGothic-Italic\\\"] = \\\"Helvetica-Oblique\\\";\\n  t.ComicSansMS = \\\"Comic Sans MS\\\";\\n  t[\\\"ComicSansMS-Bold\\\"] = \\\"Comic Sans MS-Bold\\\";\\n  t[\\\"ComicSansMS-BoldItalic\\\"] = \\\"Comic Sans MS-BoldItalic\\\";\\n  t[\\\"ComicSansMS-Italic\\\"] = \\\"Comic Sans MS-Italic\\\";\\n  t.GillSansMT = \\\"Helvetica\\\";\\n  t[\\\"GillSansMT-Bold\\\"] = \\\"Helvetica-Bold\\\";\\n  t[\\\"GillSansMT-BoldItalic\\\"] = \\\"Helvetica-BoldOblique\\\";\\n  t[\\\"GillSansMT-Italic\\\"] = \\\"Helvetica-Oblique\\\";\\n  t.Impact = \\\"Helvetica\\\";\\n  t[\\\"ItcSymbol-Bold\\\"] = \\\"Helvetica-Bold\\\";\\n  t[\\\"ItcSymbol-BoldItalic\\\"] = \\\"Helvetica-BoldOblique\\\";\\n  t[\\\"ItcSymbol-Book\\\"] = \\\"Helvetica\\\";\\n  t[\\\"ItcSymbol-BookItalic\\\"] = \\\"Helvetica-Oblique\\\";\\n  t[\\\"ItcSymbol-Medium\\\"] = \\\"Helvetica\\\";\\n  t[\\\"ItcSymbol-MediumItalic\\\"] = \\\"Helvetica-Oblique\\\";\\n  t.LucidaConsole = \\\"Courier\\\";\\n  t[\\\"LucidaConsole-Bold\\\"] = \\\"Courier-Bold\\\";\\n  t[\\\"LucidaConsole-BoldItalic\\\"] = \\\"Courier-BoldOblique\\\";\\n  t[\\\"LucidaConsole-Italic\\\"] = \\\"Courier-Oblique\\\";\\n  t[\\\"LucidaSans-Demi\\\"] = \\\"Helvetica-Bold\\\";\\n  t[\\\"MS-Gothic\\\"] = \\\"MS Gothic\\\";\\n  t[\\\"MS-Gothic-Bold\\\"] = \\\"MS Gothic-Bold\\\";\\n  t[\\\"MS-Gothic-BoldItalic\\\"] = \\\"MS Gothic-BoldItalic\\\";\\n  t[\\\"MS-Gothic-Italic\\\"] = \\\"MS Gothic-Italic\\\";\\n  t[\\\"MS-Mincho\\\"] = \\\"MS Mincho\\\";\\n  t[\\\"MS-Mincho-Bold\\\"] = \\\"MS Mincho-Bold\\\";\\n  t[\\\"MS-Mincho-BoldItalic\\\"] = \\\"MS Mincho-BoldItalic\\\";\\n  t[\\\"MS-Mincho-Italic\\\"] = \\\"MS Mincho-Italic\\\";\\n  t[\\\"MS-PGothic\\\"] = \\\"MS PGothic\\\";\\n  t[\\\"MS-PGothic-Bold\\\"] = \\\"MS PGothic-Bold\\\";\\n  t[\\\"MS-PGothic-BoldItalic\\\"] = \\\"MS PGothic-BoldItalic\\\";\\n  t[\\\"MS-PGothic-Italic\\\"] = \\\"MS PGothic-Italic\\\";\\n  t[\\\"MS-PMincho\\\"] = \\\"MS PMincho\\\";\\n  t[\\\"MS-PMincho-Bold\\\"] = \\\"MS PMincho-Bold\\\";\\n  t[\\\"MS-PMincho-BoldItalic\\\"] = \\\"MS PMincho-BoldItalic\\\";\\n  t[\\\"MS-PMincho-Italic\\\"] = \\\"MS PMincho-Italic\\\";\\n  t.NuptialScript = \\\"Times-Italic\\\";\\n  t.SegoeUISymbol = \\\"Helvetica\\\";\\n});\\n\\nconst getSerifFonts = getLookupTableFactory(function (t) {\\n  t[\\\"Adobe Jenson\\\"] = true;\\n  t[\\\"Adobe Text\\\"] = true;\\n  t.Albertus = true;\\n  t.Aldus = true;\\n  t.Alexandria = true;\\n  t.Algerian = true;\\n  t[\\\"American Typewriter\\\"] = true;\\n  t.Antiqua = true;\\n  t.Apex = true;\\n  t.Arno = true;\\n  t.Aster = true;\\n  t.Aurora = true;\\n  t.Baskerville = true;\\n  t.Bell = true;\\n  t.Bembo = true;\\n  t[\\\"Bembo Schoolbook\\\"] = true;\\n  t.Benguiat = true;\\n  t[\\\"Berkeley Old Style\\\"] = true;\\n  t[\\\"Bernhard Modern\\\"] = true;\\n  t[\\\"Berthold City\\\"] = true;\\n  t.Bodoni = true;\\n  t[\\\"Bauer Bodoni\\\"] = true;\\n  t[\\\"Book Antiqua\\\"] = true;\\n  t.Bookman = true;\\n  t[\\\"Bordeaux Roman\\\"] = true;\\n  t[\\\"Californian FB\\\"] = true;\\n  t.Calisto = true;\\n  t.Calvert = true;\\n  t.Capitals = true;\\n  t.Cambria = true;\\n  t.Cartier = true;\\n  t.Caslon = true;\\n  t.Catull = true;\\n  t.Centaur = true;\\n  t[\\\"Century Old Style\\\"] = true;\\n  t[\\\"Century Schoolbook\\\"] = true;\\n  t.Chaparral = true;\\n  t[\\\"Charis SIL\\\"] = true;\\n  t.Cheltenham = true;\\n  t[\\\"Cholla Slab\\\"] = true;\\n  t.Clarendon = true;\\n  t.Clearface = true;\\n  t.Cochin = true;\\n  t.Colonna = true;\\n  t[\\\"Computer Modern\\\"] = true;\\n  t[\\\"Concrete Roman\\\"] = true;\\n  t.Constantia = true;\\n  t[\\\"Cooper Black\\\"] = true;\\n  t.Corona = true;\\n  t.Ecotype = true;\\n  t.Egyptienne = true;\\n  t.Elephant = true;\\n  t.Excelsior = true;\\n  t.Fairfield = true;\\n  t[\\\"FF Scala\\\"] = true;\\n  t.Folkard = true;\\n  t.Footlight = true;\\n  t.FreeSerif = true;\\n  t[\\\"Friz Quadrata\\\"] = true;\\n  t.Garamond = true;\\n  t.Gentium = true;\\n  t.Georgia = true;\\n  t.Gloucester = true;\\n  t[\\\"Goudy Old Style\\\"] = true;\\n  t[\\\"Goudy Schoolbook\\\"] = true;\\n  t[\\\"Goudy Pro Font\\\"] = true;\\n  t.Granjon = true;\\n  t[\\\"Guardian Egyptian\\\"] = true;\\n  t.Heather = true;\\n  t.Hercules = true;\\n  t[\\\"High Tower Text\\\"] = true;\\n  t.Hiroshige = true;\\n  t[\\\"Hoefler Text\\\"] = true;\\n  t[\\\"Humana Serif\\\"] = true;\\n  t.Imprint = true;\\n  t[\\\"Ionic No. 5\\\"] = true;\\n  t.Janson = true;\\n  t.Joanna = true;\\n  t.Korinna = true;\\n  t.Lexicon = true;\\n  t.LiberationSerif = true;\\n  t[\\\"Liberation Serif\\\"] = true;\\n  t[\\\"Linux Libertine\\\"] = true;\\n  t.Literaturnaya = true;\\n  t.Lucida = true;\\n  t[\\\"Lucida Bright\\\"] = true;\\n  t.Melior = true;\\n  t.Memphis = true;\\n  t.Miller = true;\\n  t.Minion = true;\\n  t.Modern = true;\\n  t[\\\"Mona Lisa\\\"] = true;\\n  t[\\\"Mrs Eaves\\\"] = true;\\n  t[\\\"MS Serif\\\"] = true;\\n  t[\\\"Museo Slab\\\"] = true;\\n  t[\\\"New York\\\"] = true;\\n  t[\\\"Nimbus Roman\\\"] = true;\\n  t[\\\"NPS Rawlinson Roadway\\\"] = true;\\n  t.NuptialScript = true;\\n  t.Palatino = true;\\n  t.Perpetua = true;\\n  t.Plantin = true;\\n  t[\\\"Plantin Schoolbook\\\"] = true;\\n  t.Playbill = true;\\n  t[\\\"Poor Richard\\\"] = true;\\n  t[\\\"Rawlinson Roadway\\\"] = true;\\n  t.Renault = true;\\n  t.Requiem = true;\\n  t.Rockwell = true;\\n  t.Roman = true;\\n  t[\\\"Rotis Serif\\\"] = true;\\n  t.Sabon = true;\\n  t.Scala = true;\\n  t.Seagull = true;\\n  t.Sistina = true;\\n  t.Souvenir = true;\\n  t.STIX = true;\\n  t[\\\"Stone Informal\\\"] = true;\\n  t[\\\"Stone Serif\\\"] = true;\\n  t.Sylfaen = true;\\n  t.Times = true;\\n  t.Trajan = true;\\n  t[\\\"Trinité\\\"] = true;\\n  t[\\\"Trump Mediaeval\\\"] = true;\\n  t.Utopia = true;\\n  t[\\\"Vale Type\\\"] = true;\\n  t[\\\"Bitstream Vera\\\"] = true;\\n  t[\\\"Vera Serif\\\"] = true;\\n  t.Versailles = true;\\n  t.Wanted = true;\\n  t.Weiss = true;\\n  t[\\\"Wide Latin\\\"] = true;\\n  t.Windsor = true;\\n  t.XITS = true;\\n});\\n\\nconst getSymbolsFonts = getLookupTableFactory(function (t) {\\n  t.Dingbats = true;\\n  t.Symbol = true;\\n  t.ZapfDingbats = true;\\n  t.Wingdings = true;\\n  t[\\\"Wingdings-Bold\\\"] = true;\\n  t[\\\"Wingdings-Regular\\\"] = true;\\n});\\n\\n\u002F\u002F Glyph map for well-known standard fonts. Sometimes Ghostscript uses CID\\n\u002F\u002F fonts, but does not embed the CID to GID mapping. The mapping is incomplete\\n\u002F\u002F for all glyphs, but common for some set of the standard fonts.\\nconst getGlyphMapForStandardFonts = getLookupTableFactory(function (t) {\\n  t[2] = 10;\\n  t[3] = 32;\\n  t[4] = 33;\\n  t[5] = 34;\\n  t[6] = 35;\\n  t[7] = 36;\\n  t[8] = 37;\\n  t[9] = 38;\\n  t[10] = 39;\\n  t[11] = 40;\\n  t[12] = 41;\\n  t[13] = 42;\\n  t[14] = 43;\\n  t[15] = 44;\\n  t[16] = 45;\\n  t[17] = 46;\\n  t[18] = 47;\\n  t[19] = 48;\\n  t[20] = 49;\\n  t[21] = 50;\\n  t[22] = 51;\\n  t[23] = 52;\\n  t[24] = 53;\\n  t[25] = 54;\\n  t[26] = 55;\\n  t[27] = 56;\\n  t[28] = 57;\\n  t[29] = 58;\\n  t[30] = 894;\\n  t[31] = 60;\\n  t[32] = 61;\\n  t[33] = 62;\\n  t[34] = 63;\\n  t[35] = 64;\\n  t[36] = 65;\\n  t[37] = 66;\\n  t[38] = 67;\\n  t[39] = 68;\\n  t[40] = 69;\\n  t[41] = 70;\\n  t[42] = 71;\\n  t[43] = 72;\\n  t[44] = 73;\\n  t[45] = 74;\\n  t[46] = 75;\\n  t[47] = 76;\\n  t[48] = 77;\\n  t[49] = 78;\\n  t[50] = 79;\\n  t[51] = 80;\\n  t[52] = 81;\\n  t[53] = 82;\\n  t[54] = 83;\\n  t[55] = 84;\\n  t[56] = 85;\\n  t[57] = 86;\\n  t[58] = 87;\\n  t[59] = 88;\\n  t[60] = 89;\\n  t[61] = 90;\\n  t[62] = 91;\\n  t[63] = 92;\\n  t[64] = 93;\\n  t[65] = 94;\\n  t[66] = 95;\\n  t[67] = 96;\\n  t[68] = 97;\\n  t[69] = 98;\\n  t[70] = 99;\\n  t[71] = 100;\\n  t[72] = 101;\\n  t[73] = 102;\\n  t[74] = 103;\\n  t[75] = 104;\\n  t[76] = 105;\\n  t[77] = 106;\\n  t[78] = 107;\\n  t[79] = 108;\\n  t[80] = 109;\\n  t[81] = 110;\\n  t[82] = 111;\\n  t[83] = 112;\\n  t[84] = 113;\\n  t[85] = 114;\\n  t[86] = 115;\\n  t[87] = 116;\\n  t[88] = 117;\\n  t[89] = 118;\\n  t[90] = 119;\\n  t[91] = 120;\\n  t[92] = 121;\\n  t[93] = 122;\\n  t[94] = 123;\\n  t[95] = 124;\\n  t[96] = 125;\\n  t[97] = 126;\\n  t[98] = 196;\\n  t[99] = 197;\\n  t[100] = 199;\\n  t[101] = 201;\\n  t[102] = 209;\\n  t[103] = 214;\\n  t[104] = 220;\\n  t[105] = 225;\\n  t[106] = 224;\\n  t[107] = 226;\\n  t[108] = 228;\\n  t[109] = 227;\\n  t[110] = 229;\\n  t[111] = 231;\\n  t[112] = 233;\\n  t[113] = 232;\\n  t[114] = 234;\\n  t[115] = 235;\\n  t[116] = 237;\\n  t[117] = 236;\\n  t[118] = 238;\\n  t[119] = 239;\\n  t[120] = 241;\\n  t[121] = 243;\\n  t[122] = 242;\\n  t[123] = 244;\\n  t[124] = 246;\\n  t[125] = 245;\\n  t[126] = 250;\\n  t[127] = 249;\\n  t[128] = 251;\\n  t[129] = 252;\\n  t[130] = 8224;\\n  t[131] = 176;\\n  t[132] = 162;\\n  t[133] = 163;\\n  t[134] = 167;\\n  t[135] = 8226;\\n  t[136] = 182;\\n  t[137] = 223;\\n  t[138] = 174;\\n  t[139] = 169;\\n  t[140] = 8482;\\n  t[141] = 180;\\n  t[142] = 168;\\n  t[143] = 8800;\\n  t[144] = 198;\\n  t[145] = 216;\\n  t[146] = 8734;\\n  t[147] = 177;\\n  t[148] = 8804;\\n  t[149] = 8805;\\n  t[150] = 165;\\n  t[151] = 181;\\n  t[152] = 8706;\\n  t[153] = 8721;\\n  t[154] = 8719;\\n  t[156] = 8747;\\n  t[157] = 170;\\n  t[158] = 186;\\n  t[159] = 8486;\\n  t[160] = 230;\\n  t[161] = 248;\\n  t[162] = 191;\\n  t[163] = 161;\\n  t[164] = 172;\\n  t[165] = 8730;\\n  t[166] = 402;\\n  t[167] = 8776;\\n  t[168] = 8710;\\n  t[169] = 171;\\n  t[170] = 187;\\n  t[171] = 8230;\\n  t[179] = 8220;\\n  t[180] = 8221;\\n  t[181] = 8216;\\n  t[182] = 8217;\\n  t[200] = 193;\\n  t[203] = 205;\\n  t[207] = 211;\\n  t[210] = 218;\\n  t[223] = 711;\\n  t[224] = 321;\\n  t[225] = 322;\\n  t[226] = 352;\\n  t[227] = 353;\\n  t[228] = 381;\\n  t[229] = 382;\\n  t[233] = 221;\\n  t[234] = 253;\\n  t[252] = 263;\\n  t[253] = 268;\\n  t[254] = 269;\\n  t[258] = 258;\\n  t[260] = 260;\\n  t[261] = 261;\\n  t[265] = 280;\\n  t[266] = 281;\\n  t[267] = 282;\\n  t[268] = 283;\\n  t[269] = 313;\\n  t[275] = 323;\\n  t[276] = 324;\\n  t[278] = 328;\\n  t[283] = 344;\\n  t[284] = 345;\\n  t[285] = 346;\\n  t[286] = 347;\\n  t[292] = 367;\\n  t[295] = 377;\\n  t[296] = 378;\\n  t[298] = 380;\\n  t[305] = 963;\\n  t[306] = 964;\\n  t[307] = 966;\\n  t[308] = 8215;\\n  t[309] = 8252;\\n  t[310] = 8319;\\n  t[311] = 8359;\\n  t[312] = 8592;\\n  t[313] = 8593;\\n  t[337] = 9552;\\n  t[493] = 1039;\\n  t[494] = 1040;\\n  t[570] = 1040;\\n  t[571] = 1041;\\n  t[572] = 1042;\\n  t[573] = 1043;\\n  t[574] = 1044;\\n  t[575] = 1045;\\n  t[576] = 1046;\\n  t[577] = 1047;\\n  t[578] = 1048;\\n  t[579] = 1049;\\n  t[580] = 1050;\\n  t[581] = 1051;\\n  t[582] = 1052;\\n  t[583] = 1053;\\n  t[584] = 1054;\\n  t[585] = 1055;\\n  t[586] = 1056;\\n  t[587] = 1057;\\n  t[588] = 1058;\\n  t[589] = 1059;\\n  t[590] = 1060;\\n  t[591] = 1061;\\n  t[592] = 1062;\\n  t[593] = 1063;\\n  t[594] = 1064;\\n  t[595] = 1065;\\n  t[596] = 1066;\\n  t[597] = 1067;\\n  t[598] = 1068;\\n  t[599] = 1069;\\n  t[600] = 1070;\\n  t[672] = 1488;\\n  t[673] = 1489;\\n  t[674] = 1490;\\n  t[675] = 1491;\\n  t[676] = 1492;\\n  t[677] = 1493;\\n  t[678] = 1494;\\n  t[679] = 1495;\\n  t[680] = 1496;\\n  t[681] = 1497;\\n  t[682] = 1498;\\n  t[683] = 1499;\\n  t[684] = 1500;\\n  t[685] = 1501;\\n  t[686] = 1502;\\n  t[687] = 1503;\\n  t[688] = 1504;\\n  t[689] = 1505;\\n  t[690] = 1506;\\n  t[691] = 1507;\\n  t[692] = 1508;\\n  t[693] = 1509;\\n  t[694] = 1510;\\n  t[695] = 1511;\\n  t[696] = 1512;\\n  t[697] = 1513;\\n  t[698] = 1514;\\n  t[705] = 1524;\\n  t[706] = 8362;\\n  t[710] = 64288;\\n  t[711] = 64298;\\n  t[759] = 1617;\\n  t[761] = 1776;\\n  t[763] = 1778;\\n  t[775] = 1652;\\n  t[777] = 1764;\\n  t[778] = 1780;\\n  t[779] = 1781;\\n  t[780] = 1782;\\n  t[782] = 771;\\n  t[783] = 64726;\\n  t[786] = 8363;\\n  t[788] = 8532;\\n  t[790] = 768;\\n  t[791] = 769;\\n  t[792] = 768;\\n  t[795] = 803;\\n  t[797] = 64336;\\n  t[798] = 64337;\\n  t[799] = 64342;\\n  t[800] = 64343;\\n  t[801] = 64344;\\n  t[802] = 64345;\\n  t[803] = 64362;\\n  t[804] = 64363;\\n  t[805] = 64364;\\n  t[2424] = 7821;\\n  t[2425] = 7822;\\n  t[2426] = 7823;\\n  t[2427] = 7824;\\n  t[2428] = 7825;\\n  t[2429] = 7826;\\n  t[2430] = 7827;\\n  t[2433] = 7682;\\n  t[2678] = 8045;\\n  t[2679] = 8046;\\n  t[2830] = 1552;\\n  t[2838] = 686;\\n  t[2840] = 751;\\n  t[2842] = 753;\\n  t[2843] = 754;\\n  t[2844] = 755;\\n  t[2846] = 757;\\n  t[2856] = 767;\\n  t[2857] = 848;\\n  t[2858] = 849;\\n  t[2862] = 853;\\n  t[2863] = 854;\\n  t[2864] = 855;\\n  t[2865] = 861;\\n  t[2866] = 862;\\n  t[2906] = 7460;\\n  t[2908] = 7462;\\n  t[2909] = 7463;\\n  t[2910] = 7464;\\n  t[2912] = 7466;\\n  t[2913] = 7467;\\n  t[2914] = 7468;\\n  t[2916] = 7470;\\n  t[2917] = 7471;\\n  t[2918] = 7472;\\n  t[2920] = 7474;\\n  t[2921] = 7475;\\n  t[2922] = 7476;\\n  t[2924] = 7478;\\n  t[2925] = 7479;\\n  t[2926] = 7480;\\n  t[2928] = 7482;\\n  t[2929] = 7483;\\n  t[2930] = 7484;\\n  t[2932] = 7486;\\n  t[2933] = 7487;\\n  t[2934] = 7488;\\n  t[2936] = 7490;\\n  t[2937] = 7491;\\n  t[2938] = 7492;\\n  t[2940] = 7494;\\n  t[2941] = 7495;\\n  t[2942] = 7496;\\n  t[2944] = 7498;\\n  t[2946] = 7500;\\n  t[2948] = 7502;\\n  t[2950] = 7504;\\n  t[2951] = 7505;\\n  t[2952] = 7506;\\n  t[2954] = 7508;\\n  t[2955] = 7509;\\n  t[2956] = 7510;\\n  t[2958] = 7512;\\n  t[2959] = 7513;\\n  t[2960] = 7514;\\n  t[2962] = 7516;\\n  t[2963] = 7517;\\n  t[2964] = 7518;\\n  t[2966] = 7520;\\n  t[2967] = 7521;\\n  t[2968] = 7522;\\n  t[2970] = 7524;\\n  t[2971] = 7525;\\n  t[2972] = 7526;\\n  t[2974] = 7528;\\n  t[2975] = 7529;\\n  t[2976] = 7530;\\n  t[2978] = 1537;\\n  t[2979] = 1538;\\n  t[2980] = 1539;\\n  t[2982] = 1549;\\n  t[2983] = 1551;\\n  t[2984] = 1552;\\n  t[2986] = 1554;\\n  t[2987] = 1555;\\n  t[2988] = 1556;\\n  t[2990] = 1623;\\n  t[2991] = 1624;\\n  t[2995] = 1775;\\n  t[2999] = 1791;\\n  t[3002] = 64290;\\n  t[3003] = 64291;\\n  t[3004] = 64292;\\n  t[3006] = 64294;\\n  t[3007] = 64295;\\n  t[3008] = 64296;\\n  t[3011] = 1900;\\n  t[3014] = 8223;\\n  t[3015] = 8244;\\n  t[3017] = 7532;\\n  t[3018] = 7533;\\n  t[3019] = 7534;\\n  t[3075] = 7590;\\n  t[3076] = 7591;\\n  t[3079] = 7594;\\n  t[3080] = 7595;\\n  t[3083] = 7598;\\n  t[3084] = 7599;\\n  t[3087] = 7602;\\n  t[3088] = 7603;\\n  t[3091] = 7606;\\n  t[3092] = 7607;\\n  t[3095] = 7610;\\n  t[3096] = 7611;\\n  t[3099] = 7614;\\n  t[3100] = 7615;\\n  t[3103] = 7618;\\n  t[3104] = 7619;\\n  t[3107] = 8337;\\n  t[3108] = 8338;\\n  t[3116] = 1884;\\n  t[3119] = 1885;\\n  t[3120] = 1885;\\n  t[3123] = 1886;\\n  t[3124] = 1886;\\n  t[3127] = 1887;\\n  t[3128] = 1887;\\n  t[3131] = 1888;\\n  t[3132] = 1888;\\n  t[3135] = 1889;\\n  t[3136] = 1889;\\n  t[3139] = 1890;\\n  t[3140] = 1890;\\n  t[3143] = 1891;\\n  t[3144] = 1891;\\n  t[3147] = 1892;\\n  t[3148] = 1892;\\n  t[3153] = 580;\\n  t[3154] = 581;\\n  t[3157] = 584;\\n  t[3158] = 585;\\n  t[3161] = 588;\\n  t[3162] = 589;\\n  t[3165] = 891;\\n  t[3166] = 892;\\n  t[3169] = 1274;\\n  t[3170] = 1275;\\n  t[3173] = 1278;\\n  t[3174] = 1279;\\n  t[3181] = 7622;\\n  t[3182] = 7623;\\n  t[3282] = 11799;\\n  t[3316] = 578;\\n  t[3379] = 42785;\\n  t[3393] = 1159;\\n  t[3416] = 8377;\\n});\\n\\n\u002F\u002F The glyph map for ArialBlack differs slightly from the glyph map used for\\n\u002F\u002F other well-known standard fonts. Hence we use this (incomplete) CID to GID\\n\u002F\u002F mapping to adjust the glyph map for non-embedded ArialBlack fonts.\\nconst getSupplementalGlyphMapForArialBlack = getLookupTableFactory(\\n  function (t) {\\n    t[227] = 322;\\n    t[264] = 261;\\n    t[291] = 346;\\n  }\\n);\\n\\n\u002F\u002F The glyph map for Calibri (a Windows font) differs from the glyph map used\\n\u002F\u002F in the standard fonts. Hence we use this (incomplete) CID to GID mapping to\\n\u002F\u002F adjust the glyph map for non-embedded Calibri fonts.\\nconst getSupplementalGlyphMapForCalibri = getLookupTableFactory(function (t) {\\n  t[1] = 32;\\n  t[4] = 65;\\n  t[5] = 192;\\n  t[6] = 193;\\n  t[9] = 196;\\n  t[17] = 66;\\n  t[18] = 67;\\n  t[21] = 268;\\n  t[24] = 68;\\n  t[28] = 69;\\n  t[29] = 200;\\n  t[30] = 201;\\n  t[32] = 282;\\n  t[38] = 70;\\n  t[39] = 71;\\n  t[44] = 72;\\n  t[47] = 73;\\n  t[48] = 204;\\n  t[49] = 205;\\n  t[58] = 74;\\n  t[60] = 75;\\n  t[62] = 76;\\n  t[68] = 77;\\n  t[69] = 78;\\n  t[75] = 79;\\n  t[76] = 210;\\n  t[80] = 214;\\n  t[87] = 80;\\n  t[89] = 81;\\n  t[90] = 82;\\n  t[92] = 344;\\n  t[94] = 83;\\n  t[97] = 352;\\n  t[100] = 84;\\n  t[104] = 85;\\n  t[109] = 220;\\n  t[115] = 86;\\n  t[116] = 87;\\n  t[121] = 88;\\n  t[122] = 89;\\n  t[124] = 221;\\n  t[127] = 90;\\n  t[129] = 381;\\n  t[258] = 97;\\n  t[259] = 224;\\n  t[260] = 225;\\n  t[263] = 228;\\n  t[268] = 261;\\n  t[271] = 98;\\n  t[272] = 99;\\n  t[273] = 263;\\n  t[275] = 269;\\n  t[282] = 100;\\n  t[286] = 101;\\n  t[287] = 232;\\n  t[288] = 233;\\n  t[290] = 283;\\n  t[295] = 281;\\n  t[296] = 102;\\n  t[336] = 103;\\n  t[346] = 104;\\n  t[349] = 105;\\n  t[350] = 236;\\n  t[351] = 237;\\n  t[361] = 106;\\n  t[364] = 107;\\n  t[367] = 108;\\n  t[371] = 322;\\n  t[373] = 109;\\n  t[374] = 110;\\n  t[381] = 111;\\n  t[382] = 242;\\n  t[383] = 243;\\n  t[386] = 246;\\n  t[393] = 112;\\n  t[395] = 113;\\n  t[396] = 114;\\n  t[398] = 345;\\n  t[400] = 115;\\n  t[401] = 347;\\n  t[403] = 353;\\n  t[410] = 116;\\n  t[437] = 117;\\n  t[442] = 252;\\n  t[448] = 118;\\n  t[449] = 119;\\n  t[454] = 120;\\n  t[455] = 121;\\n  t[457] = 253;\\n  t[460] = 122;\\n  t[462] = 382;\\n  t[463] = 380;\\n  t[853] = 44;\\n  t[855] = 58;\\n  t[856] = 46;\\n  t[876] = 47;\\n  t[878] = 45;\\n  t[882] = 45;\\n  t[894] = 40;\\n  t[895] = 41;\\n  t[896] = 91;\\n  t[897] = 93;\\n  t[923] = 64;\\n  t[940] = 163;\\n  t[1004] = 48;\\n  t[1005] = 49;\\n  t[1006] = 50;\\n  t[1007] = 51;\\n  t[1008] = 52;\\n  t[1009] = 53;\\n  t[1010] = 54;\\n  t[1011] = 55;\\n  t[1012] = 56;\\n  t[1013] = 57;\\n  t[1081] = 37;\\n  t[1085] = 43;\\n  t[1086] = 45;\\n});\\n\\nfunction getStandardFontName(name) {\\n  const fontName = normalizeFontName(name);\\n  const stdFontMap = getStdFontMap();\\n  return stdFontMap[fontName];\\n}\\n\\nfunction isKnownFontName(name) {\\n  const fontName = normalizeFontName(name);\\n  return !!(\\n    getStdFontMap()[fontName] ||\\n    getNonStdFontMap()[fontName] ||\\n    getSerifFonts()[fontName] ||\\n    getSymbolsFonts()[fontName]\\n  );\\n}\\n\\nexport {\\n  getFontNameToFileMap,\\n  getGlyphMapForStandardFonts,\\n  getNonStdFontMap,\\n  getSerifFonts,\\n  getStandardFontName,\\n  getStdFontMap,\\n  getSupplementalGlyphMapForArialBlack,\\n  getSupplementalGlyphMapForCalibri,\\n  getSymbolsFonts,\\n  isKnownFontName,\\n};\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { unreachable } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nclass ToUnicodeMap {\\n  constructor(cmap = []) {\\n    \u002F\u002F The elements of this._map can be integers or strings, depending on how\\n    \u002F\u002F `cmap` was created.\\n    this._map = cmap;\\n  }\\n\\n  get length() {\\n    return this._map.length;\\n  }\\n\\n  forEach(callback) {\\n    for (const charCode in this._map) {\\n      callback(charCode, this._map[charCode].codePointAt(0));\\n    }\\n  }\\n\\n  has(i) {\\n    return this._map[i] !== undefined;\\n  }\\n\\n  get(i) {\\n    return this._map[i];\\n  }\\n\\n  charCodeOf(value) {\\n    \u002F\u002F `Array.prototype.indexOf` is *extremely* inefficient for arrays which\\n    \u002F\u002F are both very sparse and very large (see issue8372.pdf).\\n    const map = this._map;\\n    if (map.length \u003C= 0x10000) {\\n      return map.indexOf(value);\\n    }\\n    for (const charCode in map) {\\n      if (map[charCode] === value) {\\n        return charCode | 0;\\n      }\\n    }\\n    return -1;\\n  }\\n\\n  amend(map) {\\n    for (const charCode in map) {\\n      this._map[charCode] = map[charCode];\\n    }\\n  }\\n}\\n\\nclass IdentityToUnicodeMap {\\n  constructor(firstChar, lastChar) {\\n    this.firstChar = firstChar;\\n    this.lastChar = lastChar;\\n  }\\n\\n  get length() {\\n    return this.lastChar + 1 - this.firstChar;\\n  }\\n\\n  forEach(callback) {\\n    for (let i = this.firstChar, ii = this.lastChar; i \u003C= ii; i++) {\\n      callback(i, i);\\n    }\\n  }\\n\\n  has(i) {\\n    return this.firstChar \u003C= i && i \u003C= this.lastChar;\\n  }\\n\\n  get(i) {\\n    if (this.firstChar \u003C= i && i \u003C= this.lastChar) {\\n      return String.fromCharCode(i);\\n    }\\n    return undefined;\\n  }\\n\\n  charCodeOf(v) {\\n    return Number.isInteger(v) && v >= this.firstChar && v \u003C= this.lastChar\\n      ? v\\n      : -1;\\n  }\\n\\n  amend(map) {\\n    unreachable(\\\"Should not call amend()\\\");\\n  }\\n}\\n\\nexport { IdentityToUnicodeMap, ToUnicodeMap };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { CFFCompiler, CFFParser } from \\\".\u002Fcff_parser.js\\\";\\nimport { SEAC_ANALYSIS_ENABLED, type1FontGlyphMapping } from \\\".\u002Ffonts_utils.js\\\";\\nimport { warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nclass CFFFont {\\n  constructor(file, properties) {\\n    this.properties = properties;\\n\\n    const parser = new CFFParser(file, properties, SEAC_ANALYSIS_ENABLED);\\n    this.cff = parser.parse();\\n    this.cff.duplicateFirstGlyph();\\n    const compiler = new CFFCompiler(this.cff);\\n    this.seacs = this.cff.seacs;\\n    try {\\n      this.data = compiler.compile();\\n    } catch {\\n      warn(\\\"Failed to compile font \\\" + properties.loadedName);\\n      \u002F\u002F There may have just been an issue with the compiler, set the data\\n      \u002F\u002F anyway and hope the font loaded.\\n      this.data = file;\\n    }\\n    this._createBuiltInEncoding();\\n  }\\n\\n  get numGlyphs() {\\n    return this.cff.charStrings.count;\\n  }\\n\\n  getCharset() {\\n    return this.cff.charset.charset;\\n  }\\n\\n  getGlyphMapping() {\\n    const cff = this.cff;\\n    const properties = this.properties;\\n    const { cidToGidMap, cMap } = properties;\\n    const charsets = cff.charset.charset;\\n    let charCodeToGlyphId;\\n    let glyphId;\\n\\n    if (properties.composite) {\\n      let invCidToGidMap;\\n      if (cidToGidMap?.length > 0) {\\n        invCidToGidMap = Object.create(null);\\n        for (let i = 0, ii = cidToGidMap.length; i \u003C ii; i++) {\\n          const gid = cidToGidMap[i];\\n          if (gid !== undefined) {\\n            invCidToGidMap[gid] = i;\\n          }\\n        }\\n      }\\n\\n      charCodeToGlyphId = Object.create(null);\\n      let charCode;\\n      if (cff.isCIDFont) {\\n        \u002F\u002F If the font is actually a CID font then we should use the charset\\n        \u002F\u002F to map CIDs to GIDs.\\n        for (glyphId = 0; glyphId \u003C charsets.length; glyphId++) {\\n          const cid = charsets[glyphId];\\n          charCode = cMap.charCodeOf(cid);\\n\\n          if (invCidToGidMap?.[charCode] !== undefined) {\\n            \u002F\u002F According to the PDF specification, see Table 117, it's not clear\\n            \u002F\u002F that a \u002FCIDToGIDMap should be used with any non-TrueType fonts,\\n            \u002F\u002F however it's necessary to do so in order to fix issue 15559.\\n            \u002F\u002F\\n            \u002F\u002F It seems, in the CFF-case, that the \u002FCIDToGIDMap needs to be used\\n            \u002F\u002F \\\"inverted\\\" compared to the TrueType-case. Here it thus seem to be\\n            \u002F\u002F a charCode mapping, rather than the normal CID to GID mapping.\\n            charCode = invCidToGidMap[charCode];\\n          }\\n          charCodeToGlyphId[charCode] = glyphId;\\n        }\\n      } else {\\n        \u002F\u002F If it is NOT actually a CID font then CIDs should be mapped\\n        \u002F\u002F directly to GIDs.\\n        for (glyphId = 0; glyphId \u003C cff.charStrings.count; glyphId++) {\\n          charCode = cMap.charCodeOf(glyphId);\\n          charCodeToGlyphId[charCode] = glyphId;\\n        }\\n      }\\n      return charCodeToGlyphId;\\n    }\\n\\n    let encoding = cff.encoding ? cff.encoding.encoding : null;\\n    if (properties.isInternalFont) {\\n      encoding = properties.defaultEncoding;\\n    }\\n    charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets);\\n    return charCodeToGlyphId;\\n  }\\n\\n  hasGlyphId(id) {\\n    return this.cff.hasGlyphId(id);\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _createBuiltInEncoding() {\\n    const { charset, encoding } = this.cff;\\n    if (!charset || !encoding) {\\n      return;\\n    }\\n    const charsets = charset.charset,\\n      encodings = encoding.encoding;\\n    const map = [];\\n\\n    for (const charCode in encodings) {\\n      const glyphId = encodings[charCode];\\n      if (glyphId >= 0) {\\n        const glyphName = charsets[glyphId];\\n        if (glyphName) {\\n          map[charCode] = glyphName;\\n        }\\n      }\\n    }\\n    if (map.length > 0) {\\n      this.properties.builtInEncoding = map;\\n    }\\n  }\\n}\\n\\nexport { CFFFont };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  assert,\\n  bytesToString,\\n  FONT_IDENTITY_MATRIX,\\n  FormatError,\\n  unreachable,\\n  Util,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  isNumberArray,\\n  readInt16,\\n  readInt8,\\n  readUint16,\\n  readUint32,\\n} from \\\".\u002Fcore_utils.js\\\";\\nimport { CFFParser } from \\\".\u002Fcff_parser.js\\\";\\nimport { getGlyphsUnicode } from \\\".\u002Fglyphlist.js\\\";\\nimport { StandardEncoding } from \\\".\u002Fencodings.js\\\";\\nimport { Stream } from \\\".\u002Fstream.js\\\";\\n\\n\u002F\u002F TODO: use DataView and its methods.\\n\\nfunction getFloat214(data, offset) {\\n  return readInt16(data, offset) \u002F 16384;\\n}\\n\\nfunction getSubroutineBias(subrs) {\\n  const numSubrs = subrs.length;\\n  let bias = 32768;\\n  if (numSubrs \u003C 1240) {\\n    bias = 107;\\n  } else if (numSubrs \u003C 33900) {\\n    bias = 1131;\\n  }\\n  return bias;\\n}\\n\\nfunction parseCmap(data, start, end) {\\n  const offset =\\n    readUint16(data, start + 2) === 1\\n      ? readUint32(data, start + 8)\\n      : readUint32(data, start + 16);\\n  const format = readUint16(data, start + offset);\\n  let ranges, p, i;\\n  if (format === 4) {\\n    readUint16(data, start + offset + 2); \u002F\u002F length\\n    const segCount = readUint16(data, start + offset + 6) >> 1;\\n    p = start + offset + 14;\\n    ranges = [];\\n    for (i = 0; i \u003C segCount; i++, p += 2) {\\n      ranges[i] = { end: readUint16(data, p) };\\n    }\\n    p += 2;\\n    for (i = 0; i \u003C segCount; i++, p += 2) {\\n      ranges[i].start = readUint16(data, p);\\n    }\\n    for (i = 0; i \u003C segCount; i++, p += 2) {\\n      ranges[i].idDelta = readUint16(data, p);\\n    }\\n    for (i = 0; i \u003C segCount; i++, p += 2) {\\n      let idOffset = readUint16(data, p);\\n      if (idOffset === 0) {\\n        continue;\\n      }\\n      ranges[i].ids = [];\\n      for (let j = 0, jj = ranges[i].end - ranges[i].start + 1; j \u003C jj; j++) {\\n        ranges[i].ids[j] = readUint16(data, p + idOffset);\\n        idOffset += 2;\\n      }\\n    }\\n    return ranges;\\n  } else if (format === 12) {\\n    const groups = readUint32(data, start + offset + 12);\\n    p = start + offset + 16;\\n    ranges = [];\\n    for (i = 0; i \u003C groups; i++) {\\n      start = readUint32(data, p);\\n      ranges.push({\\n        start,\\n        end: readUint32(data, p + 4),\\n        idDelta: readUint32(data, p + 8) - start,\\n      });\\n      p += 12;\\n    }\\n    return ranges;\\n  }\\n  throw new FormatError(`unsupported cmap: ${format}`);\\n}\\n\\nfunction parseCff(data, start, end, seacAnalysisEnabled) {\\n  const properties = {};\\n  const parser = new CFFParser(\\n    new Stream(data, start, end - start),\\n    properties,\\n    seacAnalysisEnabled\\n  );\\n  const cff = parser.parse();\\n  return {\\n    glyphs: cff.charStrings.objects,\\n    subrs: cff.topDict.privateDict?.subrsIndex?.objects,\\n    gsubrs: cff.globalSubrIndex?.objects,\\n    isCFFCIDFont: cff.isCIDFont,\\n    fdSelect: cff.fdSelect,\\n    fdArray: cff.fdArray,\\n  };\\n}\\n\\nfunction parseGlyfTable(glyf, loca, isGlyphLocationsLong) {\\n  let itemSize, itemDecode;\\n  if (isGlyphLocationsLong) {\\n    itemSize = 4;\\n    itemDecode = readUint32;\\n  } else {\\n    itemSize = 2;\\n    itemDecode = (data, offset) => 2 * readUint16(data, offset);\\n  }\\n  const glyphs = [];\\n  let startOffset = itemDecode(loca, 0);\\n  for (let j = itemSize; j \u003C loca.length; j += itemSize) {\\n    const endOffset = itemDecode(loca, j);\\n    glyphs.push(glyf.subarray(startOffset, endOffset));\\n    startOffset = endOffset;\\n  }\\n  return glyphs;\\n}\\n\\nfunction lookupCmap(ranges, unicode) {\\n  const code = unicode.codePointAt(0);\\n  let gid = 0,\\n    l = 0,\\n    r = ranges.length - 1;\\n  while (l \u003C r) {\\n    const c = (l + r + 1) >> 1;\\n    if (code \u003C ranges[c].start) {\\n      r = c - 1;\\n    } else {\\n      l = c;\\n    }\\n  }\\n  if (ranges[l].start \u003C= code && code \u003C= ranges[l].end) {\\n    gid =\\n      (ranges[l].idDelta +\\n        (ranges[l].ids ? ranges[l].ids[code - ranges[l].start] : code)) &\\n      0xffff;\\n  }\\n  return {\\n    charCode: code,\\n    glyphId: gid,\\n  };\\n}\\n\\nfunction compileGlyf(code, cmds, font) {\\n  function moveTo(x, y) {\\n    if (firstPoint) {\\n      \u002F\u002F Close the current subpath in adding a straight line to the first point.\\n      cmds.add(\\\"L\\\", firstPoint);\\n    }\\n    firstPoint = [x, y];\\n    cmds.add(\\\"M\\\", [x, y]);\\n  }\\n  function lineTo(x, y) {\\n    cmds.add(\\\"L\\\", [x, y]);\\n  }\\n  function quadraticCurveTo(xa, ya, x, y) {\\n    cmds.add(\\\"Q\\\", [xa, ya, x, y]);\\n  }\\n\\n  let i = 0;\\n  const numberOfContours = readInt16(code, i);\\n  let flags;\\n  let firstPoint = null;\\n  let x = 0,\\n    y = 0;\\n  i += 10;\\n  if (numberOfContours \u003C 0) {\\n    \u002F\u002F composite glyph\\n    do {\\n      flags = readUint16(code, i);\\n      const glyphIndex = readUint16(code, i + 2);\\n      i += 4;\\n      let arg1, arg2;\\n      if (flags & 0x01) {\\n        if (flags & 0x02) {\\n          arg1 = readInt16(code, i);\\n          arg2 = readInt16(code, i + 2);\\n        } else {\\n          arg1 = readUint16(code, i);\\n          arg2 = readUint16(code, i + 2);\\n        }\\n        i += 4;\\n      } else if (flags & 0x02) {\\n        arg1 = readInt8(code, i++);\\n        arg2 = readInt8(code, i++);\\n      } else {\\n        arg1 = code[i++];\\n        arg2 = code[i++];\\n      }\\n      if (flags & 0x02) {\\n        x = arg1;\\n        y = arg2;\\n      } else {\\n        x = 0;\\n        y = 0;\\n      }\\n      let scaleX = 1,\\n        scaleY = 1,\\n        scale01 = 0,\\n        scale10 = 0;\\n      if (flags & 0x08) {\\n        scaleX = scaleY = getFloat214(code, i);\\n        i += 2;\\n      } else if (flags & 0x40) {\\n        scaleX = getFloat214(code, i);\\n        scaleY = getFloat214(code, i + 2);\\n        i += 4;\\n      } else if (flags & 0x80) {\\n        scaleX = getFloat214(code, i);\\n        scale01 = getFloat214(code, i + 2);\\n        scale10 = getFloat214(code, i + 4);\\n        scaleY = getFloat214(code, i + 6);\\n        i += 8;\\n      }\\n      const subglyph = font.glyphs[glyphIndex];\\n      if (subglyph) {\\n        \u002F\u002F TODO: the transform should be applied only if there is a scale:\\n        \u002F\u002F https:\u002F\u002Fgithub.com\u002Ffreetype\u002Ffreetype\u002Fblob\u002Fedd4fedc5427cf1cf1f4b045e53ff91eb282e9d4\u002Fsrc\u002Ftruetype\u002Fttgload.c#L1205\\n        cmds.save();\\n        cmds.transform([scaleX, scale01, scale10, scaleY, x, y]);\\n\\n        if (!(flags & 0x02)) {\\n          \u002F\u002F TODO: we must use arg1 and arg2 to make something similar to:\\n          \u002F\u002F https:\u002F\u002Fgithub.com\u002Ffreetype\u002Ffreetype\u002Fblob\u002Fedd4fedc5427cf1cf1f4b045e53ff91eb282e9d4\u002Fsrc\u002Ftruetype\u002Fttgload.c#L1209\\n        }\\n        compileGlyf(subglyph, cmds, font);\\n        cmds.restore();\\n      }\\n    } while (flags & 0x20);\\n  } else {\\n    \u002F\u002F simple glyph\\n    const endPtsOfContours = [];\\n    let j, jj;\\n    for (j = 0; j \u003C numberOfContours; j++) {\\n      endPtsOfContours.push(readUint16(code, i));\\n      i += 2;\\n    }\\n    const instructionLength = readUint16(code, i);\\n    i += 2 + instructionLength; \u002F\u002F skipping the instructions\\n    const numberOfPoints = endPtsOfContours.at(-1) + 1;\\n    const points = [];\\n    while (points.length \u003C numberOfPoints) {\\n      flags = code[i++];\\n      let repeat = 1;\\n      if (flags & 0x08) {\\n        repeat += code[i++];\\n      }\\n      while (repeat-- > 0) {\\n        points.push({ flags });\\n      }\\n    }\\n    for (j = 0; j \u003C numberOfPoints; j++) {\\n      switch (points[j].flags & 0x12) {\\n        case 0x00:\\n          x += readInt16(code, i);\\n          i += 2;\\n          break;\\n        case 0x02:\\n          x -= code[i++];\\n          break;\\n        case 0x12:\\n          x += code[i++];\\n          break;\\n      }\\n      points[j].x = x;\\n    }\\n    for (j = 0; j \u003C numberOfPoints; j++) {\\n      switch (points[j].flags & 0x24) {\\n        case 0x00:\\n          y += readInt16(code, i);\\n          i += 2;\\n          break;\\n        case 0x04:\\n          y -= code[i++];\\n          break;\\n        case 0x24:\\n          y += code[i++];\\n          break;\\n      }\\n      points[j].y = y;\\n    }\\n\\n    let startPoint = 0;\\n    for (i = 0; i \u003C numberOfContours; i++) {\\n      const endPoint = endPtsOfContours[i];\\n      \u002F\u002F contours might have implicit points, which is located in the middle\\n      \u002F\u002F between two neighboring off-curve points\\n      const contour = points.slice(startPoint, endPoint + 1);\\n      if (contour[0].flags & 1) {\\n        contour.push(contour[0]); \u002F\u002F using start point at the contour end\\n      } else if (contour.at(-1).flags & 1) {\\n        \u002F\u002F first is off-curve point, trying to use one from the end\\n        contour.unshift(contour.at(-1));\\n      } else {\\n        \u002F\u002F start and end are off-curve points, creating implicit one\\n        const p = {\\n          flags: 1,\\n          x: (contour[0].x + contour.at(-1).x) \u002F 2,\\n          y: (contour[0].y + contour.at(-1).y) \u002F 2,\\n        };\\n        contour.unshift(p);\\n        contour.push(p);\\n      }\\n      moveTo(contour[0].x, contour[0].y);\\n      for (j = 1, jj = contour.length; j \u003C jj; j++) {\\n        if (contour[j].flags & 1) {\\n          lineTo(contour[j].x, contour[j].y);\\n        } else if (contour[j + 1].flags & 1) {\\n          quadraticCurveTo(\\n            contour[j].x,\\n            contour[j].y,\\n            contour[j + 1].x,\\n            contour[j + 1].y\\n          );\\n          j++;\\n        } else {\\n          quadraticCurveTo(\\n            contour[j].x,\\n            contour[j].y,\\n            (contour[j].x + contour[j + 1].x) \u002F 2,\\n            (contour[j].y + contour[j + 1].y) \u002F 2\\n          );\\n        }\\n      }\\n      startPoint = endPoint + 1;\\n    }\\n  }\\n}\\n\\nfunction compileCharString(charStringCode, cmds, font, glyphId) {\\n  function moveTo(x, y) {\\n    if (firstPoint) {\\n      \u002F\u002F Close the current subpath in adding a straight line to the first point.\\n      cmds.add(\\\"L\\\", firstPoint);\\n    }\\n    firstPoint = [x, y];\\n    cmds.add(\\\"M\\\", [x, y]);\\n  }\\n  function lineTo(x, y) {\\n    cmds.add(\\\"L\\\", [x, y]);\\n  }\\n  function bezierCurveTo(x1, y1, x2, y2, x, y) {\\n    cmds.add(\\\"C\\\", [x1, y1, x2, y2, x, y]);\\n  }\\n\\n  const stack = [];\\n  let x = 0,\\n    y = 0;\\n  let stems = 0;\\n  let firstPoint = null;\\n\\n  function parse(code) {\\n    let i = 0;\\n    while (i \u003C code.length) {\\n      let stackClean = false;\\n      let v = code[i++];\\n      let xa, xb, ya, yb, y1, y2, y3, n, subrCode;\\n      switch (v) {\\n        case 1: \u002F\u002F hstem\\n          stems += stack.length >> 1;\\n          stackClean = true;\\n          break;\\n        case 3: \u002F\u002F vstem\\n          stems += stack.length >> 1;\\n          stackClean = true;\\n          break;\\n        case 4: \u002F\u002F vmoveto\\n          y += stack.pop();\\n          moveTo(x, y);\\n          stackClean = true;\\n          break;\\n        case 5: \u002F\u002F rlineto\\n          while (stack.length > 0) {\\n            x += stack.shift();\\n            y += stack.shift();\\n            lineTo(x, y);\\n          }\\n          break;\\n        case 6: \u002F\u002F hlineto\\n          while (stack.length > 0) {\\n            x += stack.shift();\\n            lineTo(x, y);\\n            if (stack.length === 0) {\\n              break;\\n            }\\n            y += stack.shift();\\n            lineTo(x, y);\\n          }\\n          break;\\n        case 7: \u002F\u002F vlineto\\n          while (stack.length > 0) {\\n            y += stack.shift();\\n            lineTo(x, y);\\n            if (stack.length === 0) {\\n              break;\\n            }\\n            x += stack.shift();\\n            lineTo(x, y);\\n          }\\n          break;\\n        case 8: \u002F\u002F rrcurveto\\n          while (stack.length > 0) {\\n            xa = x + stack.shift();\\n            ya = y + stack.shift();\\n            xb = xa + stack.shift();\\n            yb = ya + stack.shift();\\n            x = xb + stack.shift();\\n            y = yb + stack.shift();\\n            bezierCurveTo(xa, ya, xb, yb, x, y);\\n          }\\n          break;\\n        case 10: \u002F\u002F callsubr\\n          n = stack.pop();\\n          subrCode = null;\\n          if (font.isCFFCIDFont) {\\n            const fdIndex = font.fdSelect.getFDIndex(glyphId);\\n            if (fdIndex >= 0 && fdIndex \u003C font.fdArray.length) {\\n              const fontDict = font.fdArray[fdIndex];\\n              let subrs;\\n              if (fontDict.privateDict?.subrsIndex) {\\n                subrs = fontDict.privateDict.subrsIndex.objects;\\n              }\\n              if (subrs) {\\n                \u002F\u002F Add subroutine bias.\\n                n += getSubroutineBias(subrs);\\n                subrCode = subrs[n];\\n              }\\n            } else {\\n              warn(\\\"Invalid fd index for glyph index.\\\");\\n            }\\n          } else {\\n            subrCode = font.subrs[n + font.subrsBias];\\n          }\\n          if (subrCode) {\\n            parse(subrCode);\\n          }\\n          break;\\n        case 11: \u002F\u002F return\\n          return;\\n        case 12:\\n          v = code[i++];\\n          switch (v) {\\n            case 34: \u002F\u002F flex\\n              xa = x + stack.shift();\\n              xb = xa + stack.shift();\\n              y1 = y + stack.shift();\\n              x = xb + stack.shift();\\n              bezierCurveTo(xa, y, xb, y1, x, y1);\\n              xa = x + stack.shift();\\n              xb = xa + stack.shift();\\n              x = xb + stack.shift();\\n              bezierCurveTo(xa, y1, xb, y, x, y);\\n              break;\\n            case 35: \u002F\u002F flex\\n              xa = x + stack.shift();\\n              ya = y + stack.shift();\\n              xb = xa + stack.shift();\\n              yb = ya + stack.shift();\\n              x = xb + stack.shift();\\n              y = yb + stack.shift();\\n              bezierCurveTo(xa, ya, xb, yb, x, y);\\n              xa = x + stack.shift();\\n              ya = y + stack.shift();\\n              xb = xa + stack.shift();\\n              yb = ya + stack.shift();\\n              x = xb + stack.shift();\\n              y = yb + stack.shift();\\n              bezierCurveTo(xa, ya, xb, yb, x, y);\\n              stack.pop(); \u002F\u002F fd\\n              break;\\n            case 36: \u002F\u002F hflex1\\n              xa = x + stack.shift();\\n              y1 = y + stack.shift();\\n              xb = xa + stack.shift();\\n              y2 = y1 + stack.shift();\\n              x = xb + stack.shift();\\n              bezierCurveTo(xa, y1, xb, y2, x, y2);\\n              xa = x + stack.shift();\\n              xb = xa + stack.shift();\\n              y3 = y2 + stack.shift();\\n              x = xb + stack.shift();\\n              bezierCurveTo(xa, y2, xb, y3, x, y);\\n              break;\\n            case 37: \u002F\u002F flex1\\n              const x0 = x,\\n                y0 = y;\\n              xa = x + stack.shift();\\n              ya = y + stack.shift();\\n              xb = xa + stack.shift();\\n              yb = ya + stack.shift();\\n              x = xb + stack.shift();\\n              y = yb + stack.shift();\\n              bezierCurveTo(xa, ya, xb, yb, x, y);\\n              xa = x + stack.shift();\\n              ya = y + stack.shift();\\n              xb = xa + stack.shift();\\n              yb = ya + stack.shift();\\n              x = xb;\\n              y = yb;\\n              if (Math.abs(x - x0) > Math.abs(y - y0)) {\\n                x += stack.shift();\\n              } else {\\n                y += stack.shift();\\n              }\\n              bezierCurveTo(xa, ya, xb, yb, x, y);\\n              break;\\n            default:\\n              throw new FormatError(`unknown operator: 12 ${v}`);\\n          }\\n          break;\\n        case 14: \u002F\u002F endchar\\n          if (stack.length >= 4) {\\n            const achar = stack.pop();\\n            const bchar = stack.pop();\\n            y = stack.pop();\\n            x = stack.pop();\\n            cmds.save();\\n            cmds.translate(x, y);\\n            let cmap = lookupCmap(\\n              font.cmap,\\n              String.fromCharCode(font.glyphNameMap[StandardEncoding[achar]])\\n            );\\n            compileCharString(\\n              font.glyphs[cmap.glyphId],\\n              cmds,\\n              font,\\n              cmap.glyphId\\n            );\\n            cmds.restore();\\n\\n            cmap = lookupCmap(\\n              font.cmap,\\n              String.fromCharCode(font.glyphNameMap[StandardEncoding[bchar]])\\n            );\\n            compileCharString(\\n              font.glyphs[cmap.glyphId],\\n              cmds,\\n              font,\\n              cmap.glyphId\\n            );\\n          }\\n          return;\\n        case 18: \u002F\u002F hstemhm\\n          stems += stack.length >> 1;\\n          stackClean = true;\\n          break;\\n        case 19: \u002F\u002F hintmask\\n          stems += stack.length >> 1;\\n          i += (stems + 7) >> 3;\\n          stackClean = true;\\n          break;\\n        case 20: \u002F\u002F cntrmask\\n          stems += stack.length >> 1;\\n          i += (stems + 7) >> 3;\\n          stackClean = true;\\n          break;\\n        case 21: \u002F\u002F rmoveto\\n          y += stack.pop();\\n          x += stack.pop();\\n          moveTo(x, y);\\n          stackClean = true;\\n          break;\\n        case 22: \u002F\u002F hmoveto\\n          x += stack.pop();\\n          moveTo(x, y);\\n          stackClean = true;\\n          break;\\n        case 23: \u002F\u002F vstemhm\\n          stems += stack.length >> 1;\\n          stackClean = true;\\n          break;\\n        case 24: \u002F\u002F rcurveline\\n          while (stack.length > 2) {\\n            xa = x + stack.shift();\\n            ya = y + stack.shift();\\n            xb = xa + stack.shift();\\n            yb = ya + stack.shift();\\n            x = xb + stack.shift();\\n            y = yb + stack.shift();\\n            bezierCurveTo(xa, ya, xb, yb, x, y);\\n          }\\n          x += stack.shift();\\n          y += stack.shift();\\n          lineTo(x, y);\\n          break;\\n        case 25: \u002F\u002F rlinecurve\\n          while (stack.length > 6) {\\n            x += stack.shift();\\n            y += stack.shift();\\n            lineTo(x, y);\\n          }\\n          xa = x + stack.shift();\\n          ya = y + stack.shift();\\n          xb = xa + stack.shift();\\n          yb = ya + stack.shift();\\n          x = xb + stack.shift();\\n          y = yb + stack.shift();\\n          bezierCurveTo(xa, ya, xb, yb, x, y);\\n          break;\\n        case 26: \u002F\u002F vvcurveto\\n          if (stack.length % 2) {\\n            x += stack.shift();\\n          }\\n          while (stack.length > 0) {\\n            xa = x;\\n            ya = y + stack.shift();\\n            xb = xa + stack.shift();\\n            yb = ya + stack.shift();\\n            x = xb;\\n            y = yb + stack.shift();\\n            bezierCurveTo(xa, ya, xb, yb, x, y);\\n          }\\n          break;\\n        case 27: \u002F\u002F hhcurveto\\n          if (stack.length % 2) {\\n            y += stack.shift();\\n          }\\n          while (stack.length > 0) {\\n            xa = x + stack.shift();\\n            ya = y;\\n            xb = xa + stack.shift();\\n            yb = ya + stack.shift();\\n            x = xb + stack.shift();\\n            y = yb;\\n            bezierCurveTo(xa, ya, xb, yb, x, y);\\n          }\\n          break;\\n        case 28:\\n          stack.push(readInt16(code, i));\\n          i += 2;\\n          break;\\n        case 29: \u002F\u002F callgsubr\\n          n = stack.pop() + font.gsubrsBias;\\n          subrCode = font.gsubrs[n];\\n          if (subrCode) {\\n            parse(subrCode);\\n          }\\n          break;\\n        case 30: \u002F\u002F vhcurveto\\n          while (stack.length > 0) {\\n            xa = x;\\n            ya = y + stack.shift();\\n            xb = xa + stack.shift();\\n            yb = ya + stack.shift();\\n            x = xb + stack.shift();\\n            y = yb + (stack.length === 1 ? stack.shift() : 0);\\n            bezierCurveTo(xa, ya, xb, yb, x, y);\\n            if (stack.length === 0) {\\n              break;\\n            }\\n\\n            xa = x + stack.shift();\\n            ya = y;\\n            xb = xa + stack.shift();\\n            yb = ya + stack.shift();\\n            y = yb + stack.shift();\\n            x = xb + (stack.length === 1 ? stack.shift() : 0);\\n            bezierCurveTo(xa, ya, xb, yb, x, y);\\n          }\\n          break;\\n        case 31: \u002F\u002F hvcurveto\\n          while (stack.length > 0) {\\n            xa = x + stack.shift();\\n            ya = y;\\n            xb = xa + stack.shift();\\n            yb = ya + stack.shift();\\n            y = yb + stack.shift();\\n            x = xb + (stack.length === 1 ? stack.shift() : 0);\\n            bezierCurveTo(xa, ya, xb, yb, x, y);\\n            if (stack.length === 0) {\\n              break;\\n            }\\n\\n            xa = x;\\n            ya = y + stack.shift();\\n            xb = xa + stack.shift();\\n            yb = ya + stack.shift();\\n            x = xb + stack.shift();\\n            y = yb + (stack.length === 1 ? stack.shift() : 0);\\n            bezierCurveTo(xa, ya, xb, yb, x, y);\\n          }\\n          break;\\n        default:\\n          if (v \u003C 32) {\\n            throw new FormatError(`unknown operator: ${v}`);\\n          }\\n          if (v \u003C 247) {\\n            stack.push(v - 139);\\n          } else if (v \u003C 251) {\\n            stack.push((v - 247) * 256 + code[i++] + 108);\\n          } else if (v \u003C 255) {\\n            stack.push(-(v - 251) * 256 - code[i++] - 108);\\n          } else {\\n            stack.push(\\n              ((code[i] \u003C\u003C 24) |\\n                (code[i + 1] \u003C\u003C 16) |\\n                (code[i + 2] \u003C\u003C 8) |\\n                code[i + 3]) \u002F\\n                65536\\n            );\\n            i += 4;\\n          }\\n          break;\\n      }\\n      if (stackClean) {\\n        stack.length = 0;\\n      }\\n    }\\n  }\\n  parse(charStringCode);\\n}\\n\\nconst NOOP = \\\"\\\";\\n\\nclass Commands {\\n  cmds = [];\\n\\n  transformStack = [];\\n\\n  currentTransform = [1, 0, 0, 1, 0, 0];\\n\\n  add(cmd, args) {\\n    if (args) {\\n      const { currentTransform } = this;\\n      for (let i = 0, ii = args.length; i \u003C ii; i += 2) {\\n        Util.applyTransform(args, currentTransform, i);\\n      }\\n      this.cmds.push(`${cmd}${args.join(\\\" \\\")}`);\\n    } else {\\n      this.cmds.push(cmd);\\n    }\\n  }\\n\\n  transform(transf) {\\n    this.currentTransform = Util.transform(this.currentTransform, transf);\\n  }\\n\\n  translate(x, y) {\\n    this.transform([1, 0, 0, 1, x, y]);\\n  }\\n\\n  save() {\\n    this.transformStack.push(this.currentTransform.slice());\\n  }\\n\\n  restore() {\\n    this.currentTransform = this.transformStack.pop() || [1, 0, 0, 1, 0, 0];\\n  }\\n\\n  getSVG() {\\n    return this.cmds.join(\\\"\\\");\\n  }\\n}\\n\\nclass CompiledFont {\\n  constructor(fontMatrix) {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      this.constructor === CompiledFont\\n    ) {\\n      unreachable(\\\"Cannot initialize CompiledFont.\\\");\\n    }\\n    this.fontMatrix = fontMatrix;\\n\\n    this.compiledGlyphs = Object.create(null);\\n    this.compiledCharCodeToGlyphId = Object.create(null);\\n  }\\n\\n  getPathJs(unicode) {\\n    const { charCode, glyphId } = lookupCmap(this.cmap, unicode);\\n    let fn = this.compiledGlyphs[glyphId],\\n      compileEx;\\n    if (fn === undefined) {\\n      try {\\n        fn = this.compileGlyph(this.glyphs[glyphId], glyphId);\\n      } catch (ex) {\\n        fn = NOOP; \u002F\u002F Avoid attempting to re-compile a corrupt glyph.\\n\\n        compileEx = ex;\\n      }\\n      this.compiledGlyphs[glyphId] = fn;\\n    }\\n    this.compiledCharCodeToGlyphId[charCode] ??= glyphId;\\n\\n    if (compileEx) {\\n      throw compileEx;\\n    }\\n    return fn;\\n  }\\n\\n  compileGlyph(code, glyphId) {\\n    if (!code?.length || code[0] === 14) {\\n      return NOOP;\\n    }\\n\\n    let fontMatrix = this.fontMatrix;\\n    if (this.isCFFCIDFont) {\\n      \u002F\u002F Top DICT's FontMatrix can be ignored because CFFCompiler always\\n      \u002F\u002F removes it and copies to FDArray DICTs.\\n      const fdIndex = this.fdSelect.getFDIndex(glyphId);\\n      if (fdIndex >= 0 && fdIndex \u003C this.fdArray.length) {\\n        const fontDict = this.fdArray[fdIndex];\\n        fontMatrix = fontDict.getByName(\\\"FontMatrix\\\") || FONT_IDENTITY_MATRIX;\\n      } else {\\n        warn(\\\"Invalid fd index for glyph index.\\\");\\n      }\\n    }\\n    assert(isNumberArray(fontMatrix, 6), \\\"Expected a valid fontMatrix.\\\");\\n\\n    const cmds = new Commands();\\n    cmds.transform(fontMatrix.slice());\\n    this.compileGlyphImpl(code, cmds, glyphId);\\n    cmds.add(\\\"Z\\\");\\n\\n    return cmds.getSVG();\\n  }\\n\\n  compileGlyphImpl() {\\n    unreachable(\\\"Children classes should implement this.\\\");\\n  }\\n\\n  hasBuiltPath(unicode) {\\n    const { charCode, glyphId } = lookupCmap(this.cmap, unicode);\\n    return (\\n      this.compiledGlyphs[glyphId] !== undefined &&\\n      this.compiledCharCodeToGlyphId[charCode] !== undefined\\n    );\\n  }\\n}\\n\\nclass TrueTypeCompiled extends CompiledFont {\\n  constructor(glyphs, cmap, fontMatrix) {\\n    super(fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]);\\n\\n    this.glyphs = glyphs;\\n    this.cmap = cmap;\\n  }\\n\\n  compileGlyphImpl(code, cmds) {\\n    compileGlyf(code, cmds, this);\\n  }\\n}\\n\\nclass Type2Compiled extends CompiledFont {\\n  constructor(cffInfo, cmap, fontMatrix) {\\n    super(fontMatrix || [0.001, 0, 0, 0.001, 0, 0]);\\n\\n    this.glyphs = cffInfo.glyphs;\\n    this.gsubrs = cffInfo.gsubrs || [];\\n    this.subrs = cffInfo.subrs || [];\\n    this.cmap = cmap;\\n    this.glyphNameMap = getGlyphsUnicode();\\n\\n    this.gsubrsBias = getSubroutineBias(this.gsubrs);\\n    this.subrsBias = getSubroutineBias(this.subrs);\\n\\n    this.isCFFCIDFont = cffInfo.isCFFCIDFont;\\n    this.fdSelect = cffInfo.fdSelect;\\n    this.fdArray = cffInfo.fdArray;\\n  }\\n\\n  compileGlyphImpl(code, cmds, glyphId) {\\n    compileCharString(code, cmds, this, glyphId);\\n  }\\n}\\n\\nclass FontRendererFactory {\\n  static create(font, seacAnalysisEnabled) {\\n    const data = new Uint8Array(font.data);\\n    let cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;\\n    const numTables = readUint16(data, 4);\\n    for (let i = 0, p = 12; i \u003C numTables; i++, p += 16) {\\n      const tag = bytesToString(data.subarray(p, p + 4));\\n      const offset = readUint32(data, p + 8);\\n      const length = readUint32(data, p + 12);\\n      switch (tag) {\\n        case \\\"cmap\\\":\\n          cmap = parseCmap(data, offset, offset + length);\\n          break;\\n        case \\\"glyf\\\":\\n          glyf = data.subarray(offset, offset + length);\\n          break;\\n        case \\\"loca\\\":\\n          loca = data.subarray(offset, offset + length);\\n          break;\\n        case \\\"head\\\":\\n          unitsPerEm = readUint16(data, offset + 18);\\n          indexToLocFormat = readUint16(data, offset + 50);\\n          break;\\n        case \\\"CFF \\\":\\n          cff = parseCff(data, offset, offset + length, seacAnalysisEnabled);\\n          break;\\n      }\\n    }\\n\\n    if (glyf) {\\n      const fontMatrix = !unitsPerEm\\n        ? font.fontMatrix\\n        : [1 \u002F unitsPerEm, 0, 0, 1 \u002F unitsPerEm, 0, 0];\\n      return new TrueTypeCompiled(\\n        parseGlyfTable(glyf, loca, indexToLocFormat),\\n        cmap,\\n        fontMatrix\\n      );\\n    }\\n    return new Type2Compiled(cff, cmap, font.fontMatrix);\\n  }\\n}\\n\\nexport { FontRendererFactory };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { getLookupTableFactory } from \\\".\u002Fcore_utils.js\\\";\\n\\n\u002F\u002F The Metrics object contains glyph widths (in glyph space units).\\n\u002F\u002F As per PDF spec, for most fonts (Type 3 being an exception) a glyph\\n\u002F\u002F space unit corresponds to 1\u002F1000th of text space unit.\\nconst getMetrics = getLookupTableFactory(function (t) {\\n  t.Courier = 600;\\n  t[\\\"Courier-Bold\\\"] = 600;\\n  t[\\\"Courier-BoldOblique\\\"] = 600;\\n  t[\\\"Courier-Oblique\\\"] = 600;\\n  \u002F\u002F eslint-disable-next-line no-shadow\\n  t.Helvetica = getLookupTableFactory(function (t) {\\n    t.space = 278;\\n    t.exclam = 278;\\n    t.quotedbl = 355;\\n    t.numbersign = 556;\\n    t.dollar = 556;\\n    t.percent = 889;\\n    t.ampersand = 667;\\n    t.quoteright = 222;\\n    t.parenleft = 333;\\n    t.parenright = 333;\\n    t.asterisk = 389;\\n    t.plus = 584;\\n    t.comma = 278;\\n    t.hyphen = 333;\\n    t.period = 278;\\n    t.slash = 278;\\n    t.zero = 556;\\n    t.one = 556;\\n    t.two = 556;\\n    t.three = 556;\\n    t.four = 556;\\n    t.five = 556;\\n    t.six = 556;\\n    t.seven = 556;\\n    t.eight = 556;\\n    t.nine = 556;\\n    t.colon = 278;\\n    t.semicolon = 278;\\n    t.less = 584;\\n    t.equal = 584;\\n    t.greater = 584;\\n    t.question = 556;\\n    t.at = 1015;\\n    t.A = 667;\\n    t.B = 667;\\n    t.C = 722;\\n    t.D = 722;\\n    t.E = 667;\\n    t.F = 611;\\n    t.G = 778;\\n    t.H = 722;\\n    t.I = 278;\\n    t.J = 500;\\n    t.K = 667;\\n    t.L = 556;\\n    t.M = 833;\\n    t.N = 722;\\n    t.O = 778;\\n    t.P = 667;\\n    t.Q = 778;\\n    t.R = 722;\\n    t.S = 667;\\n    t.T = 611;\\n    t.U = 722;\\n    t.V = 667;\\n    t.W = 944;\\n    t.X = 667;\\n    t.Y = 667;\\n    t.Z = 611;\\n    t.bracketleft = 278;\\n    t.backslash = 278;\\n    t.bracketright = 278;\\n    t.asciicircum = 469;\\n    t.underscore = 556;\\n    t.quoteleft = 222;\\n    t.a = 556;\\n    t.b = 556;\\n    t.c = 500;\\n    t.d = 556;\\n    t.e = 556;\\n    t.f = 278;\\n    t.g = 556;\\n    t.h = 556;\\n    t.i = 222;\\n    t.j = 222;\\n    t.k = 500;\\n    t.l = 222;\\n    t.m = 833;\\n    t.n = 556;\\n    t.o = 556;\\n    t.p = 556;\\n    t.q = 556;\\n    t.r = 333;\\n    t.s = 500;\\n    t.t = 278;\\n    t.u = 556;\\n    t.v = 500;\\n    t.w = 722;\\n    t.x = 500;\\n    t.y = 500;\\n    t.z = 500;\\n    t.braceleft = 334;\\n    t.bar = 260;\\n    t.braceright = 334;\\n    t.asciitilde = 584;\\n    t.exclamdown = 333;\\n    t.cent = 556;\\n    t.sterling = 556;\\n    t.fraction = 167;\\n    t.yen = 556;\\n    t.florin = 556;\\n    t.section = 556;\\n    t.currency = 556;\\n    t.quotesingle = 191;\\n    t.quotedblleft = 333;\\n    t.guillemotleft = 556;\\n    t.guilsinglleft = 333;\\n    t.guilsinglright = 333;\\n    t.fi = 500;\\n    t.fl = 500;\\n    t.endash = 556;\\n    t.dagger = 556;\\n    t.daggerdbl = 556;\\n    t.periodcentered = 278;\\n    t.paragraph = 537;\\n    t.bullet = 350;\\n    t.quotesinglbase = 222;\\n    t.quotedblbase = 333;\\n    t.quotedblright = 333;\\n    t.guillemotright = 556;\\n    t.ellipsis = 1000;\\n    t.perthousand = 1000;\\n    t.questiondown = 611;\\n    t.grave = 333;\\n    t.acute = 333;\\n    t.circumflex = 333;\\n    t.tilde = 333;\\n    t.macron = 333;\\n    t.breve = 333;\\n    t.dotaccent = 333;\\n    t.dieresis = 333;\\n    t.ring = 333;\\n    t.cedilla = 333;\\n    t.hungarumlaut = 333;\\n    t.ogonek = 333;\\n    t.caron = 333;\\n    t.emdash = 1000;\\n    t.AE = 1000;\\n    t.ordfeminine = 370;\\n    t.Lslash = 556;\\n    t.Oslash = 778;\\n    t.OE = 1000;\\n    t.ordmasculine = 365;\\n    t.ae = 889;\\n    t.dotlessi = 278;\\n    t.lslash = 222;\\n    t.oslash = 611;\\n    t.oe = 944;\\n    t.germandbls = 611;\\n    t.Idieresis = 278;\\n    t.eacute = 556;\\n    t.abreve = 556;\\n    t.uhungarumlaut = 556;\\n    t.ecaron = 556;\\n    t.Ydieresis = 667;\\n    t.divide = 584;\\n    t.Yacute = 667;\\n    t.Acircumflex = 667;\\n    t.aacute = 556;\\n    t.Ucircumflex = 722;\\n    t.yacute = 500;\\n    t.scommaaccent = 500;\\n    t.ecircumflex = 556;\\n    t.Uring = 722;\\n    t.Udieresis = 722;\\n    t.aogonek = 556;\\n    t.Uacute = 722;\\n    t.uogonek = 556;\\n    t.Edieresis = 667;\\n    t.Dcroat = 722;\\n    t.commaaccent = 250;\\n    t.copyright = 737;\\n    t.Emacron = 667;\\n    t.ccaron = 500;\\n    t.aring = 556;\\n    t.Ncommaaccent = 722;\\n    t.lacute = 222;\\n    t.agrave = 556;\\n    t.Tcommaaccent = 611;\\n    t.Cacute = 722;\\n    t.atilde = 556;\\n    t.Edotaccent = 667;\\n    t.scaron = 500;\\n    t.scedilla = 500;\\n    t.iacute = 278;\\n    t.lozenge = 471;\\n    t.Rcaron = 722;\\n    t.Gcommaaccent = 778;\\n    t.ucircumflex = 556;\\n    t.acircumflex = 556;\\n    t.Amacron = 667;\\n    t.rcaron = 333;\\n    t.ccedilla = 500;\\n    t.Zdotaccent = 611;\\n    t.Thorn = 667;\\n    t.Omacron = 778;\\n    t.Racute = 722;\\n    t.Sacute = 667;\\n    t.dcaron = 643;\\n    t.Umacron = 722;\\n    t.uring = 556;\\n    t.threesuperior = 333;\\n    t.Ograve = 778;\\n    t.Agrave = 667;\\n    t.Abreve = 667;\\n    t.multiply = 584;\\n    t.uacute = 556;\\n    t.Tcaron = 611;\\n    t.partialdiff = 476;\\n    t.ydieresis = 500;\\n    t.Nacute = 722;\\n    t.icircumflex = 278;\\n    t.Ecircumflex = 667;\\n    t.adieresis = 556;\\n    t.edieresis = 556;\\n    t.cacute = 500;\\n    t.nacute = 556;\\n    t.umacron = 556;\\n    t.Ncaron = 722;\\n    t.Iacute = 278;\\n    t.plusminus = 584;\\n    t.brokenbar = 260;\\n    t.registered = 737;\\n    t.Gbreve = 778;\\n    t.Idotaccent = 278;\\n    t.summation = 600;\\n    t.Egrave = 667;\\n    t.racute = 333;\\n    t.omacron = 556;\\n    t.Zacute = 611;\\n    t.Zcaron = 611;\\n    t.greaterequal = 549;\\n    t.Eth = 722;\\n    t.Ccedilla = 722;\\n    t.lcommaaccent = 222;\\n    t.tcaron = 317;\\n    t.eogonek = 556;\\n    t.Uogonek = 722;\\n    t.Aacute = 667;\\n    t.Adieresis = 667;\\n    t.egrave = 556;\\n    t.zacute = 500;\\n    t.iogonek = 222;\\n    t.Oacute = 778;\\n    t.oacute = 556;\\n    t.amacron = 556;\\n    t.sacute = 500;\\n    t.idieresis = 278;\\n    t.Ocircumflex = 778;\\n    t.Ugrave = 722;\\n    t.Delta = 612;\\n    t.thorn = 556;\\n    t.twosuperior = 333;\\n    t.Odieresis = 778;\\n    t.mu = 556;\\n    t.igrave = 278;\\n    t.ohungarumlaut = 556;\\n    t.Eogonek = 667;\\n    t.dcroat = 556;\\n    t.threequarters = 834;\\n    t.Scedilla = 667;\\n    t.lcaron = 299;\\n    t.Kcommaaccent = 667;\\n    t.Lacute = 556;\\n    t.trademark = 1000;\\n    t.edotaccent = 556;\\n    t.Igrave = 278;\\n    t.Imacron = 278;\\n    t.Lcaron = 556;\\n    t.onehalf = 834;\\n    t.lessequal = 549;\\n    t.ocircumflex = 556;\\n    t.ntilde = 556;\\n    t.Uhungarumlaut = 722;\\n    t.Eacute = 667;\\n    t.emacron = 556;\\n    t.gbreve = 556;\\n    t.onequarter = 834;\\n    t.Scaron = 667;\\n    t.Scommaaccent = 667;\\n    t.Ohungarumlaut = 778;\\n    t.degree = 400;\\n    t.ograve = 556;\\n    t.Ccaron = 722;\\n    t.ugrave = 556;\\n    t.radical = 453;\\n    t.Dcaron = 722;\\n    t.rcommaaccent = 333;\\n    t.Ntilde = 722;\\n    t.otilde = 556;\\n    t.Rcommaaccent = 722;\\n    t.Lcommaaccent = 556;\\n    t.Atilde = 667;\\n    t.Aogonek = 667;\\n    t.Aring = 667;\\n    t.Otilde = 778;\\n    t.zdotaccent = 500;\\n    t.Ecaron = 667;\\n    t.Iogonek = 278;\\n    t.kcommaaccent = 500;\\n    t.minus = 584;\\n    t.Icircumflex = 278;\\n    t.ncaron = 556;\\n    t.tcommaaccent = 278;\\n    t.logicalnot = 584;\\n    t.odieresis = 556;\\n    t.udieresis = 556;\\n    t.notequal = 549;\\n    t.gcommaaccent = 556;\\n    t.eth = 556;\\n    t.zcaron = 500;\\n    t.ncommaaccent = 556;\\n    t.onesuperior = 333;\\n    t.imacron = 278;\\n    t.Euro = 556;\\n  });\\n  \u002F\u002F eslint-disable-next-line no-shadow\\n  t[\\\"Helvetica-Bold\\\"] = getLookupTableFactory(function (t) {\\n    t.space = 278;\\n    t.exclam = 333;\\n    t.quotedbl = 474;\\n    t.numbersign = 556;\\n    t.dollar = 556;\\n    t.percent = 889;\\n    t.ampersand = 722;\\n    t.quoteright = 278;\\n    t.parenleft = 333;\\n    t.parenright = 333;\\n    t.asterisk = 389;\\n    t.plus = 584;\\n    t.comma = 278;\\n    t.hyphen = 333;\\n    t.period = 278;\\n    t.slash = 278;\\n    t.zero = 556;\\n    t.one = 556;\\n    t.two = 556;\\n    t.three = 556;\\n    t.four = 556;\\n    t.five = 556;\\n    t.six = 556;\\n    t.seven = 556;\\n    t.eight = 556;\\n    t.nine = 556;\\n    t.colon = 333;\\n    t.semicolon = 333;\\n    t.less = 584;\\n    t.equal = 584;\\n    t.greater = 584;\\n    t.question = 611;\\n    t.at = 975;\\n    t.A = 722;\\n    t.B = 722;\\n    t.C = 722;\\n    t.D = 722;\\n    t.E = 667;\\n    t.F = 611;\\n    t.G = 778;\\n    t.H = 722;\\n    t.I = 278;\\n    t.J = 556;\\n    t.K = 722;\\n    t.L = 611;\\n    t.M = 833;\\n    t.N = 722;\\n    t.O = 778;\\n    t.P = 667;\\n    t.Q = 778;\\n    t.R = 722;\\n    t.S = 667;\\n    t.T = 611;\\n    t.U = 722;\\n    t.V = 667;\\n    t.W = 944;\\n    t.X = 667;\\n    t.Y = 667;\\n    t.Z = 611;\\n    t.bracketleft = 333;\\n    t.backslash = 278;\\n    t.bracketright = 333;\\n    t.asciicircum = 584;\\n    t.underscore = 556;\\n    t.quoteleft = 278;\\n    t.a = 556;\\n    t.b = 611;\\n    t.c = 556;\\n    t.d = 611;\\n    t.e = 556;\\n    t.f = 333;\\n    t.g = 611;\\n    t.h = 611;\\n    t.i = 278;\\n    t.j = 278;\\n    t.k = 556;\\n    t.l = 278;\\n    t.m = 889;\\n    t.n = 611;\\n    t.o = 611;\\n    t.p = 611;\\n    t.q = 611;\\n    t.r = 389;\\n    t.s = 556;\\n    t.t = 333;\\n    t.u = 611;\\n    t.v = 556;\\n    t.w = 778;\\n    t.x = 556;\\n    t.y = 556;\\n    t.z = 500;\\n    t.braceleft = 389;\\n    t.bar = 280;\\n    t.braceright = 389;\\n    t.asciitilde = 584;\\n    t.exclamdown = 333;\\n    t.cent = 556;\\n    t.sterling = 556;\\n    t.fraction = 167;\\n    t.yen = 556;\\n    t.florin = 556;\\n    t.section = 556;\\n    t.currency = 556;\\n    t.quotesingle = 238;\\n    t.quotedblleft = 500;\\n    t.guillemotleft = 556;\\n    t.guilsinglleft = 333;\\n    t.guilsinglright = 333;\\n    t.fi = 611;\\n    t.fl = 611;\\n    t.endash = 556;\\n    t.dagger = 556;\\n    t.daggerdbl = 556;\\n    t.periodcentered = 278;\\n    t.paragraph = 556;\\n    t.bullet = 350;\\n    t.quotesinglbase = 278;\\n    t.quotedblbase = 500;\\n    t.quotedblright = 500;\\n    t.guillemotright = 556;\\n    t.ellipsis = 1000;\\n    t.perthousand = 1000;\\n    t.questiondown = 611;\\n    t.grave = 333;\\n    t.acute = 333;\\n    t.circumflex = 333;\\n    t.tilde = 333;\\n    t.macron = 333;\\n    t.breve = 333;\\n    t.dotaccent = 333;\\n    t.dieresis = 333;\\n    t.ring = 333;\\n    t.cedilla = 333;\\n    t.hungarumlaut = 333;\\n    t.ogonek = 333;\\n    t.caron = 333;\\n    t.emdash = 1000;\\n    t.AE = 1000;\\n    t.ordfeminine = 370;\\n    t.Lslash = 611;\\n    t.Oslash = 778;\\n    t.OE = 1000;\\n    t.ordmasculine = 365;\\n    t.ae = 889;\\n    t.dotlessi = 278;\\n    t.lslash = 278;\\n    t.oslash = 611;\\n    t.oe = 944;\\n    t.germandbls = 611;\\n    t.Idieresis = 278;\\n    t.eacute = 556;\\n    t.abreve = 556;\\n    t.uhungarumlaut = 611;\\n    t.ecaron = 556;\\n    t.Ydieresis = 667;\\n    t.divide = 584;\\n    t.Yacute = 667;\\n    t.Acircumflex = 722;\\n    t.aacute = 556;\\n    t.Ucircumflex = 722;\\n    t.yacute = 556;\\n    t.scommaaccent = 556;\\n    t.ecircumflex = 556;\\n    t.Uring = 722;\\n    t.Udieresis = 722;\\n    t.aogonek = 556;\\n    t.Uacute = 722;\\n    t.uogonek = 611;\\n    t.Edieresis = 667;\\n    t.Dcroat = 722;\\n    t.commaaccent = 250;\\n    t.copyright = 737;\\n    t.Emacron = 667;\\n    t.ccaron = 556;\\n    t.aring = 556;\\n    t.Ncommaaccent = 722;\\n    t.lacute = 278;\\n    t.agrave = 556;\\n    t.Tcommaaccent = 611;\\n    t.Cacute = 722;\\n    t.atilde = 556;\\n    t.Edotaccent = 667;\\n    t.scaron = 556;\\n    t.scedilla = 556;\\n    t.iacute = 278;\\n    t.lozenge = 494;\\n    t.Rcaron = 722;\\n    t.Gcommaaccent = 778;\\n    t.ucircumflex = 611;\\n    t.acircumflex = 556;\\n    t.Amacron = 722;\\n    t.rcaron = 389;\\n    t.ccedilla = 556;\\n    t.Zdotaccent = 611;\\n    t.Thorn = 667;\\n    t.Omacron = 778;\\n    t.Racute = 722;\\n    t.Sacute = 667;\\n    t.dcaron = 743;\\n    t.Umacron = 722;\\n    t.uring = 611;\\n    t.threesuperior = 333;\\n    t.Ograve = 778;\\n    t.Agrave = 722;\\n    t.Abreve = 722;\\n    t.multiply = 584;\\n    t.uacute = 611;\\n    t.Tcaron = 611;\\n    t.partialdiff = 494;\\n    t.ydieresis = 556;\\n    t.Nacute = 722;\\n    t.icircumflex = 278;\\n    t.Ecircumflex = 667;\\n    t.adieresis = 556;\\n    t.edieresis = 556;\\n    t.cacute = 556;\\n    t.nacute = 611;\\n    t.umacron = 611;\\n    t.Ncaron = 722;\\n    t.Iacute = 278;\\n    t.plusminus = 584;\\n    t.brokenbar = 280;\\n    t.registered = 737;\\n    t.Gbreve = 778;\\n    t.Idotaccent = 278;\\n    t.summation = 600;\\n    t.Egrave = 667;\\n    t.racute = 389;\\n    t.omacron = 611;\\n    t.Zacute = 611;\\n    t.Zcaron = 611;\\n    t.greaterequal = 549;\\n    t.Eth = 722;\\n    t.Ccedilla = 722;\\n    t.lcommaaccent = 278;\\n    t.tcaron = 389;\\n    t.eogonek = 556;\\n    t.Uogonek = 722;\\n    t.Aacute = 722;\\n    t.Adieresis = 722;\\n    t.egrave = 556;\\n    t.zacute = 500;\\n    t.iogonek = 278;\\n    t.Oacute = 778;\\n    t.oacute = 611;\\n    t.amacron = 556;\\n    t.sacute = 556;\\n    t.idieresis = 278;\\n    t.Ocircumflex = 778;\\n    t.Ugrave = 722;\\n    t.Delta = 612;\\n    t.thorn = 611;\\n    t.twosuperior = 333;\\n    t.Odieresis = 778;\\n    t.mu = 611;\\n    t.igrave = 278;\\n    t.ohungarumlaut = 611;\\n    t.Eogonek = 667;\\n    t.dcroat = 611;\\n    t.threequarters = 834;\\n    t.Scedilla = 667;\\n    t.lcaron = 400;\\n    t.Kcommaaccent = 722;\\n    t.Lacute = 611;\\n    t.trademark = 1000;\\n    t.edotaccent = 556;\\n    t.Igrave = 278;\\n    t.Imacron = 278;\\n    t.Lcaron = 611;\\n    t.onehalf = 834;\\n    t.lessequal = 549;\\n    t.ocircumflex = 611;\\n    t.ntilde = 611;\\n    t.Uhungarumlaut = 722;\\n    t.Eacute = 667;\\n    t.emacron = 556;\\n    t.gbreve = 611;\\n    t.onequarter = 834;\\n    t.Scaron = 667;\\n    t.Scommaaccent = 667;\\n    t.Ohungarumlaut = 778;\\n    t.degree = 400;\\n    t.ograve = 611;\\n    t.Ccaron = 722;\\n    t.ugrave = 611;\\n    t.radical = 549;\\n    t.Dcaron = 722;\\n    t.rcommaaccent = 389;\\n    t.Ntilde = 722;\\n    t.otilde = 611;\\n    t.Rcommaaccent = 722;\\n    t.Lcommaaccent = 611;\\n    t.Atilde = 722;\\n    t.Aogonek = 722;\\n    t.Aring = 722;\\n    t.Otilde = 778;\\n    t.zdotaccent = 500;\\n    t.Ecaron = 667;\\n    t.Iogonek = 278;\\n    t.kcommaaccent = 556;\\n    t.minus = 584;\\n    t.Icircumflex = 278;\\n    t.ncaron = 611;\\n    t.tcommaaccent = 333;\\n    t.logicalnot = 584;\\n    t.odieresis = 611;\\n    t.udieresis = 611;\\n    t.notequal = 549;\\n    t.gcommaaccent = 611;\\n    t.eth = 611;\\n    t.zcaron = 500;\\n    t.ncommaaccent = 611;\\n    t.onesuperior = 333;\\n    t.imacron = 278;\\n    t.Euro = 556;\\n  });\\n  \u002F\u002F eslint-disable-next-line no-shadow\\n  t[\\\"Helvetica-BoldOblique\\\"] = getLookupTableFactory(function (t) {\\n    t.space = 278;\\n    t.exclam = 333;\\n    t.quotedbl = 474;\\n    t.numbersign = 556;\\n    t.dollar = 556;\\n    t.percent = 889;\\n    t.ampersand = 722;\\n    t.quoteright = 278;\\n    t.parenleft = 333;\\n    t.parenright = 333;\\n    t.asterisk = 389;\\n    t.plus = 584;\\n    t.comma = 278;\\n    t.hyphen = 333;\\n    t.period = 278;\\n    t.slash = 278;\\n    t.zero = 556;\\n    t.one = 556;\\n    t.two = 556;\\n    t.three = 556;\\n    t.four = 556;\\n    t.five = 556;\\n    t.six = 556;\\n    t.seven = 556;\\n    t.eight = 556;\\n    t.nine = 556;\\n    t.colon = 333;\\n    t.semicolon = 333;\\n    t.less = 584;\\n    t.equal = 584;\\n    t.greater = 584;\\n    t.question = 611;\\n    t.at = 975;\\n    t.A = 722;\\n    t.B = 722;\\n    t.C = 722;\\n    t.D = 722;\\n    t.E = 667;\\n    t.F = 611;\\n    t.G = 778;\\n    t.H = 722;\\n    t.I = 278;\\n    t.J = 556;\\n    t.K = 722;\\n    t.L = 611;\\n    t.M = 833;\\n    t.N = 722;\\n    t.O = 778;\\n    t.P = 667;\\n    t.Q = 778;\\n    t.R = 722;\\n    t.S = 667;\\n    t.T = 611;\\n    t.U = 722;\\n    t.V = 667;\\n    t.W = 944;\\n    t.X = 667;\\n    t.Y = 667;\\n    t.Z = 611;\\n    t.bracketleft = 333;\\n    t.backslash = 278;\\n    t.bracketright = 333;\\n    t.asciicircum = 584;\\n    t.underscore = 556;\\n    t.quoteleft = 278;\\n    t.a = 556;\\n    t.b = 611;\\n    t.c = 556;\\n    t.d = 611;\\n    t.e = 556;\\n    t.f = 333;\\n    t.g = 611;\\n    t.h = 611;\\n    t.i = 278;\\n    t.j = 278;\\n    t.k = 556;\\n    t.l = 278;\\n    t.m = 889;\\n    t.n = 611;\\n    t.o = 611;\\n    t.p = 611;\\n    t.q = 611;\\n    t.r = 389;\\n    t.s = 556;\\n    t.t = 333;\\n    t.u = 611;\\n    t.v = 556;\\n    t.w = 778;\\n    t.x = 556;\\n    t.y = 556;\\n    t.z = 500;\\n    t.braceleft = 389;\\n    t.bar = 280;\\n    t.braceright = 389;\\n    t.asciitilde = 584;\\n    t.exclamdown = 333;\\n    t.cent = 556;\\n    t.sterling = 556;\\n    t.fraction = 167;\\n    t.yen = 556;\\n    t.florin = 556;\\n    t.section = 556;\\n    t.currency = 556;\\n    t.quotesingle = 238;\\n    t.quotedblleft = 500;\\n    t.guillemotleft = 556;\\n    t.guilsinglleft = 333;\\n    t.guilsinglright = 333;\\n    t.fi = 611;\\n    t.fl = 611;\\n    t.endash = 556;\\n    t.dagger = 556;\\n    t.daggerdbl = 556;\\n    t.periodcentered = 278;\\n    t.paragraph = 556;\\n    t.bullet = 350;\\n    t.quotesinglbase = 278;\\n    t.quotedblbase = 500;\\n    t.quotedblright = 500;\\n    t.guillemotright = 556;\\n    t.ellipsis = 1000;\\n    t.perthousand = 1000;\\n    t.questiondown = 611;\\n    t.grave = 333;\\n    t.acute = 333;\\n    t.circumflex = 333;\\n    t.tilde = 333;\\n    t.macron = 333;\\n    t.breve = 333;\\n    t.dotaccent = 333;\\n    t.dieresis = 333;\\n    t.ring = 333;\\n    t.cedilla = 333;\\n    t.hungarumlaut = 333;\\n    t.ogonek = 333;\\n    t.caron = 333;\\n    t.emdash = 1000;\\n    t.AE = 1000;\\n    t.ordfeminine = 370;\\n    t.Lslash = 611;\\n    t.Oslash = 778;\\n    t.OE = 1000;\\n    t.ordmasculine = 365;\\n    t.ae = 889;\\n    t.dotlessi = 278;\\n    t.lslash = 278;\\n    t.oslash = 611;\\n    t.oe = 944;\\n    t.germandbls = 611;\\n    t.Idieresis = 278;\\n    t.eacute = 556;\\n    t.abreve = 556;\\n    t.uhungarumlaut = 611;\\n    t.ecaron = 556;\\n    t.Ydieresis = 667;\\n    t.divide = 584;\\n    t.Yacute = 667;\\n    t.Acircumflex = 722;\\n    t.aacute = 556;\\n    t.Ucircumflex = 722;\\n    t.yacute = 556;\\n    t.scommaaccent = 556;\\n    t.ecircumflex = 556;\\n    t.Uring = 722;\\n    t.Udieresis = 722;\\n    t.aogonek = 556;\\n    t.Uacute = 722;\\n    t.uogonek = 611;\\n    t.Edieresis = 667;\\n    t.Dcroat = 722;\\n    t.commaaccent = 250;\\n    t.copyright = 737;\\n    t.Emacron = 667;\\n    t.ccaron = 556;\\n    t.aring = 556;\\n    t.Ncommaaccent = 722;\\n    t.lacute = 278;\\n    t.agrave = 556;\\n    t.Tcommaaccent = 611;\\n    t.Cacute = 722;\\n    t.atilde = 556;\\n    t.Edotaccent = 667;\\n    t.scaron = 556;\\n    t.scedilla = 556;\\n    t.iacute = 278;\\n    t.lozenge = 494;\\n    t.Rcaron = 722;\\n    t.Gcommaaccent = 778;\\n    t.ucircumflex = 611;\\n    t.acircumflex = 556;\\n    t.Amacron = 722;\\n    t.rcaron = 389;\\n    t.ccedilla = 556;\\n    t.Zdotaccent = 611;\\n    t.Thorn = 667;\\n    t.Omacron = 778;\\n    t.Racute = 722;\\n    t.Sacute = 667;\\n    t.dcaron = 743;\\n    t.Umacron = 722;\\n    t.uring = 611;\\n    t.threesuperior = 333;\\n    t.Ograve = 778;\\n    t.Agrave = 722;\\n    t.Abreve = 722;\\n    t.multiply = 584;\\n    t.uacute = 611;\\n    t.Tcaron = 611;\\n    t.partialdiff = 494;\\n    t.ydieresis = 556;\\n    t.Nacute = 722;\\n    t.icircumflex = 278;\\n    t.Ecircumflex = 667;\\n    t.adieresis = 556;\\n    t.edieresis = 556;\\n    t.cacute = 556;\\n    t.nacute = 611;\\n    t.umacron = 611;\\n    t.Ncaron = 722;\\n    t.Iacute = 278;\\n    t.plusminus = 584;\\n    t.brokenbar = 280;\\n    t.registered = 737;\\n    t.Gbreve = 778;\\n    t.Idotaccent = 278;\\n    t.summation = 600;\\n    t.Egrave = 667;\\n    t.racute = 389;\\n    t.omacron = 611;\\n    t.Zacute = 611;\\n    t.Zcaron = 611;\\n    t.greaterequal = 549;\\n    t.Eth = 722;\\n    t.Ccedilla = 722;\\n    t.lcommaaccent = 278;\\n    t.tcaron = 389;\\n    t.eogonek = 556;\\n    t.Uogonek = 722;\\n    t.Aacute = 722;\\n    t.Adieresis = 722;\\n    t.egrave = 556;\\n    t.zacute = 500;\\n    t.iogonek = 278;\\n    t.Oacute = 778;\\n    t.oacute = 611;\\n    t.amacron = 556;\\n    t.sacute = 556;\\n    t.idieresis = 278;\\n    t.Ocircumflex = 778;\\n    t.Ugrave = 722;\\n    t.Delta = 612;\\n    t.thorn = 611;\\n    t.twosuperior = 333;\\n    t.Odieresis = 778;\\n    t.mu = 611;\\n    t.igrave = 278;\\n    t.ohungarumlaut = 611;\\n    t.Eogonek = 667;\\n    t.dcroat = 611;\\n    t.threequarters = 834;\\n    t.Scedilla = 667;\\n    t.lcaron = 400;\\n    t.Kcommaaccent = 722;\\n    t.Lacute = 611;\\n    t.trademark = 1000;\\n    t.edotaccent = 556;\\n    t.Igrave = 278;\\n    t.Imacron = 278;\\n    t.Lcaron = 611;\\n    t.onehalf = 834;\\n    t.lessequal = 549;\\n    t.ocircumflex = 611;\\n    t.ntilde = 611;\\n    t.Uhungarumlaut = 722;\\n    t.Eacute = 667;\\n    t.emacron = 556;\\n    t.gbreve = 611;\\n    t.onequarter = 834;\\n    t.Scaron = 667;\\n    t.Scommaaccent = 667;\\n    t.Ohungarumlaut = 778;\\n    t.degree = 400;\\n    t.ograve = 611;\\n    t.Ccaron = 722;\\n    t.ugrave = 611;\\n    t.radical = 549;\\n    t.Dcaron = 722;\\n    t.rcommaaccent = 389;\\n    t.Ntilde = 722;\\n    t.otilde = 611;\\n    t.Rcommaaccent = 722;\\n    t.Lcommaaccent = 611;\\n    t.Atilde = 722;\\n    t.Aogonek = 722;\\n    t.Aring = 722;\\n    t.Otilde = 778;\\n    t.zdotaccent = 500;\\n    t.Ecaron = 667;\\n    t.Iogonek = 278;\\n    t.kcommaaccent = 556;\\n    t.minus = 584;\\n    t.Icircumflex = 278;\\n    t.ncaron = 611;\\n    t.tcommaaccent = 333;\\n    t.logicalnot = 584;\\n    t.odieresis = 611;\\n    t.udieresis = 611;\\n    t.notequal = 549;\\n    t.gcommaaccent = 611;\\n    t.eth = 611;\\n    t.zcaron = 500;\\n    t.ncommaaccent = 611;\\n    t.onesuperior = 333;\\n    t.imacron = 278;\\n    t.Euro = 556;\\n  });\\n  \u002F\u002F eslint-disable-next-line no-shadow\\n  t[\\\"Helvetica-Oblique\\\"] = getLookupTableFactory(function (t) {\\n    t.space = 278;\\n    t.exclam = 278;\\n    t.quotedbl = 355;\\n    t.numbersign = 556;\\n    t.dollar = 556;\\n    t.percent = 889;\\n    t.ampersand = 667;\\n    t.quoteright = 222;\\n    t.parenleft = 333;\\n    t.parenright = 333;\\n    t.asterisk = 389;\\n    t.plus = 584;\\n    t.comma = 278;\\n    t.hyphen = 333;\\n    t.period = 278;\\n    t.slash = 278;\\n    t.zero = 556;\\n    t.one = 556;\\n    t.two = 556;\\n    t.three = 556;\\n    t.four = 556;\\n    t.five = 556;\\n    t.six = 556;\\n    t.seven = 556;\\n    t.eight = 556;\\n    t.nine = 556;\\n    t.colon = 278;\\n    t.semicolon = 278;\\n    t.less = 584;\\n    t.equal = 584;\\n    t.greater = 584;\\n    t.question = 556;\\n    t.at = 1015;\\n    t.A = 667;\\n    t.B = 667;\\n    t.C = 722;\\n    t.D = 722;\\n    t.E = 667;\\n    t.F = 611;\\n    t.G = 778;\\n    t.H = 722;\\n    t.I = 278;\\n    t.J = 500;\\n    t.K = 667;\\n    t.L = 556;\\n    t.M = 833;\\n    t.N = 722;\\n    t.O = 778;\\n    t.P = 667;\\n    t.Q = 778;\\n    t.R = 722;\\n    t.S = 667;\\n    t.T = 611;\\n    t.U = 722;\\n    t.V = 667;\\n    t.W = 944;\\n    t.X = 667;\\n    t.Y = 667;\\n    t.Z = 611;\\n    t.bracketleft = 278;\\n    t.backslash = 278;\\n    t.bracketright = 278;\\n    t.asciicircum = 469;\\n    t.underscore = 556;\\n    t.quoteleft = 222;\\n    t.a = 556;\\n    t.b = 556;\\n    t.c = 500;\\n    t.d = 556;\\n    t.e = 556;\\n    t.f = 278;\\n    t.g = 556;\\n    t.h = 556;\\n    t.i = 222;\\n    t.j = 222;\\n    t.k = 500;\\n    t.l = 222;\\n    t.m = 833;\\n    t.n = 556;\\n    t.o = 556;\\n    t.p = 556;\\n    t.q = 556;\\n    t.r = 333;\\n    t.s = 500;\\n    t.t = 278;\\n    t.u = 556;\\n    t.v = 500;\\n    t.w = 722;\\n    t.x = 500;\\n    t.y = 500;\\n    t.z = 500;\\n    t.braceleft = 334;\\n    t.bar = 260;\\n    t.braceright = 334;\\n    t.asciitilde = 584;\\n    t.exclamdown = 333;\\n    t.cent = 556;\\n    t.sterling = 556;\\n    t.fraction = 167;\\n    t.yen = 556;\\n    t.florin = 556;\\n    t.section = 556;\\n    t.currency = 556;\\n    t.quotesingle = 191;\\n    t.quotedblleft = 333;\\n    t.guillemotleft = 556;\\n    t.guilsinglleft = 333;\\n    t.guilsinglright = 333;\\n    t.fi = 500;\\n    t.fl = 500;\\n    t.endash = 556;\\n    t.dagger = 556;\\n    t.daggerdbl = 556;\\n    t.periodcentered = 278;\\n    t.paragraph = 537;\\n    t.bullet = 350;\\n    t.quotesinglbase = 222;\\n    t.quotedblbase = 333;\\n    t.quotedblright = 333;\\n    t.guillemotright = 556;\\n    t.ellipsis = 1000;\\n    t.perthousand = 1000;\\n    t.questiondown = 611;\\n    t.grave = 333;\\n    t.acute = 333;\\n    t.circumflex = 333;\\n    t.tilde = 333;\\n    t.macron = 333;\\n    t.breve = 333;\\n    t.dotaccent = 333;\\n    t.dieresis = 333;\\n    t.ring = 333;\\n    t.cedilla = 333;\\n    t.hungarumlaut = 333;\\n    t.ogonek = 333;\\n    t.caron = 333;\\n    t.emdash = 1000;\\n    t.AE = 1000;\\n    t.ordfeminine = 370;\\n    t.Lslash = 556;\\n    t.Oslash = 778;\\n    t.OE = 1000;\\n    t.ordmasculine = 365;\\n    t.ae = 889;\\n    t.dotlessi = 278;\\n    t.lslash = 222;\\n    t.oslash = 611;\\n    t.oe = 944;\\n    t.germandbls = 611;\\n    t.Idieresis = 278;\\n    t.eacute = 556;\\n    t.abreve = 556;\\n    t.uhungarumlaut = 556;\\n    t.ecaron = 556;\\n    t.Ydieresis = 667;\\n    t.divide = 584;\\n    t.Yacute = 667;\\n    t.Acircumflex = 667;\\n    t.aacute = 556;\\n    t.Ucircumflex = 722;\\n    t.yacute = 500;\\n    t.scommaaccent = 500;\\n    t.ecircumflex = 556;\\n    t.Uring = 722;\\n    t.Udieresis = 722;\\n    t.aogonek = 556;\\n    t.Uacute = 722;\\n    t.uogonek = 556;\\n    t.Edieresis = 667;\\n    t.Dcroat = 722;\\n    t.commaaccent = 250;\\n    t.copyright = 737;\\n    t.Emacron = 667;\\n    t.ccaron = 500;\\n    t.aring = 556;\\n    t.Ncommaaccent = 722;\\n    t.lacute = 222;\\n    t.agrave = 556;\\n    t.Tcommaaccent = 611;\\n    t.Cacute = 722;\\n    t.atilde = 556;\\n    t.Edotaccent = 667;\\n    t.scaron = 500;\\n    t.scedilla = 500;\\n    t.iacute = 278;\\n    t.lozenge = 471;\\n    t.Rcaron = 722;\\n    t.Gcommaaccent = 778;\\n    t.ucircumflex = 556;\\n    t.acircumflex = 556;\\n    t.Amacron = 667;\\n    t.rcaron = 333;\\n    t.ccedilla = 500;\\n    t.Zdotaccent = 611;\\n    t.Thorn = 667;\\n    t.Omacron = 778;\\n    t.Racute = 722;\\n    t.Sacute = 667;\\n    t.dcaron = 643;\\n    t.Umacron = 722;\\n    t.uring = 556;\\n    t.threesuperior = 333;\\n    t.Ograve = 778;\\n    t.Agrave = 667;\\n    t.Abreve = 667;\\n    t.multiply = 584;\\n    t.uacute = 556;\\n    t.Tcaron = 611;\\n    t.partialdiff = 476;\\n    t.ydieresis = 500;\\n    t.Nacute = 722;\\n    t.icircumflex = 278;\\n    t.Ecircumflex = 667;\\n    t.adieresis = 556;\\n    t.edieresis = 556;\\n    t.cacute = 500;\\n    t.nacute = 556;\\n    t.umacron = 556;\\n    t.Ncaron = 722;\\n    t.Iacute = 278;\\n    t.plusminus = 584;\\n    t.brokenbar = 260;\\n    t.registered = 737;\\n    t.Gbreve = 778;\\n    t.Idotaccent = 278;\\n    t.summation = 600;\\n    t.Egrave = 667;\\n    t.racute = 333;\\n    t.omacron = 556;\\n    t.Zacute = 611;\\n    t.Zcaron = 611;\\n    t.greaterequal = 549;\\n    t.Eth = 722;\\n    t.Ccedilla = 722;\\n    t.lcommaaccent = 222;\\n    t.tcaron = 317;\\n    t.eogonek = 556;\\n    t.Uogonek = 722;\\n    t.Aacute = 667;\\n    t.Adieresis = 667;\\n    t.egrave = 556;\\n    t.zacute = 500;\\n    t.iogonek = 222;\\n    t.Oacute = 778;\\n    t.oacute = 556;\\n    t.amacron = 556;\\n    t.sacute = 500;\\n    t.idieresis = 278;\\n    t.Ocircumflex = 778;\\n    t.Ugrave = 722;\\n    t.Delta = 612;\\n    t.thorn = 556;\\n    t.twosuperior = 333;\\n    t.Odieresis = 778;\\n    t.mu = 556;\\n    t.igrave = 278;\\n    t.ohungarumlaut = 556;\\n    t.Eogonek = 667;\\n    t.dcroat = 556;\\n    t.threequarters = 834;\\n    t.Scedilla = 667;\\n    t.lcaron = 299;\\n    t.Kcommaaccent = 667;\\n    t.Lacute = 556;\\n    t.trademark = 1000;\\n    t.edotaccent = 556;\\n    t.Igrave = 278;\\n    t.Imacron = 278;\\n    t.Lcaron = 556;\\n    t.onehalf = 834;\\n    t.lessequal = 549;\\n    t.ocircumflex = 556;\\n    t.ntilde = 556;\\n    t.Uhungarumlaut = 722;\\n    t.Eacute = 667;\\n    t.emacron = 556;\\n    t.gbreve = 556;\\n    t.onequarter = 834;\\n    t.Scaron = 667;\\n    t.Scommaaccent = 667;\\n    t.Ohungarumlaut = 778;\\n    t.degree = 400;\\n    t.ograve = 556;\\n    t.Ccaron = 722;\\n    t.ugrave = 556;\\n    t.radical = 453;\\n    t.Dcaron = 722;\\n    t.rcommaaccent = 333;\\n    t.Ntilde = 722;\\n    t.otilde = 556;\\n    t.Rcommaaccent = 722;\\n    t.Lcommaaccent = 556;\\n    t.Atilde = 667;\\n    t.Aogonek = 667;\\n    t.Aring = 667;\\n    t.Otilde = 778;\\n    t.zdotaccent = 500;\\n    t.Ecaron = 667;\\n    t.Iogonek = 278;\\n    t.kcommaaccent = 500;\\n    t.minus = 584;\\n    t.Icircumflex = 278;\\n    t.ncaron = 556;\\n    t.tcommaaccent = 278;\\n    t.logicalnot = 584;\\n    t.odieresis = 556;\\n    t.udieresis = 556;\\n    t.notequal = 549;\\n    t.gcommaaccent = 556;\\n    t.eth = 556;\\n    t.zcaron = 500;\\n    t.ncommaaccent = 556;\\n    t.onesuperior = 333;\\n    t.imacron = 278;\\n    t.Euro = 556;\\n  });\\n  \u002F\u002F eslint-disable-next-line no-shadow\\n  t.Symbol = getLookupTableFactory(function (t) {\\n    t.space = 250;\\n    t.exclam = 333;\\n    t.universal = 713;\\n    t.numbersign = 500;\\n    t.existential = 549;\\n    t.percent = 833;\\n    t.ampersand = 778;\\n    t.suchthat = 439;\\n    t.parenleft = 333;\\n    t.parenright = 333;\\n    t.asteriskmath = 500;\\n    t.plus = 549;\\n    t.comma = 250;\\n    t.minus = 549;\\n    t.period = 250;\\n    t.slash = 278;\\n    t.zero = 500;\\n    t.one = 500;\\n    t.two = 500;\\n    t.three = 500;\\n    t.four = 500;\\n    t.five = 500;\\n    t.six = 500;\\n    t.seven = 500;\\n    t.eight = 500;\\n    t.nine = 500;\\n    t.colon = 278;\\n    t.semicolon = 278;\\n    t.less = 549;\\n    t.equal = 549;\\n    t.greater = 549;\\n    t.question = 444;\\n    t.congruent = 549;\\n    t.Alpha = 722;\\n    t.Beta = 667;\\n    t.Chi = 722;\\n    t.Delta = 612;\\n    t.Epsilon = 611;\\n    t.Phi = 763;\\n    t.Gamma = 603;\\n    t.Eta = 722;\\n    t.Iota = 333;\\n    t.theta1 = 631;\\n    t.Kappa = 722;\\n    t.Lambda = 686;\\n    t.Mu = 889;\\n    t.Nu = 722;\\n    t.Omicron = 722;\\n    t.Pi = 768;\\n    t.Theta = 741;\\n    t.Rho = 556;\\n    t.Sigma = 592;\\n    t.Tau = 611;\\n    t.Upsilon = 690;\\n    t.sigma1 = 439;\\n    t.Omega = 768;\\n    t.Xi = 645;\\n    t.Psi = 795;\\n    t.Zeta = 611;\\n    t.bracketleft = 333;\\n    t.therefore = 863;\\n    t.bracketright = 333;\\n    t.perpendicular = 658;\\n    t.underscore = 500;\\n    t.radicalex = 500;\\n    t.alpha = 631;\\n    t.beta = 549;\\n    t.chi = 549;\\n    t.delta = 494;\\n    t.epsilon = 439;\\n    t.phi = 521;\\n    t.gamma = 411;\\n    t.eta = 603;\\n    t.iota = 329;\\n    t.phi1 = 603;\\n    t.kappa = 549;\\n    t.lambda = 549;\\n    t.mu = 576;\\n    t.nu = 521;\\n    t.omicron = 549;\\n    t.pi = 549;\\n    t.theta = 521;\\n    t.rho = 549;\\n    t.sigma = 603;\\n    t.tau = 439;\\n    t.upsilon = 576;\\n    t.omega1 = 713;\\n    t.omega = 686;\\n    t.xi = 493;\\n    t.psi = 686;\\n    t.zeta = 494;\\n    t.braceleft = 480;\\n    t.bar = 200;\\n    t.braceright = 480;\\n    t.similar = 549;\\n    t.Euro = 750;\\n    t.Upsilon1 = 620;\\n    t.minute = 247;\\n    t.lessequal = 549;\\n    t.fraction = 167;\\n    t.infinity = 713;\\n    t.florin = 500;\\n    t.club = 753;\\n    t.diamond = 753;\\n    t.heart = 753;\\n    t.spade = 753;\\n    t.arrowboth = 1042;\\n    t.arrowleft = 987;\\n    t.arrowup = 603;\\n    t.arrowright = 987;\\n    t.arrowdown = 603;\\n    t.degree = 400;\\n    t.plusminus = 549;\\n    t.second = 411;\\n    t.greaterequal = 549;\\n    t.multiply = 549;\\n    t.proportional = 713;\\n    t.partialdiff = 494;\\n    t.bullet = 460;\\n    t.divide = 549;\\n    t.notequal = 549;\\n    t.equivalence = 549;\\n    t.approxequal = 549;\\n    t.ellipsis = 1000;\\n    t.arrowvertex = 603;\\n    t.arrowhorizex = 1000;\\n    t.carriagereturn = 658;\\n    t.aleph = 823;\\n    t.Ifraktur = 686;\\n    t.Rfraktur = 795;\\n    t.weierstrass = 987;\\n    t.circlemultiply = 768;\\n    t.circleplus = 768;\\n    t.emptyset = 823;\\n    t.intersection = 768;\\n    t.union = 768;\\n    t.propersuperset = 713;\\n    t.reflexsuperset = 713;\\n    t.notsubset = 713;\\n    t.propersubset = 713;\\n    t.reflexsubset = 713;\\n    t.element = 713;\\n    t.notelement = 713;\\n    t.angle = 768;\\n    t.gradient = 713;\\n    t.registerserif = 790;\\n    t.copyrightserif = 790;\\n    t.trademarkserif = 890;\\n    t.product = 823;\\n    t.radical = 549;\\n    t.dotmath = 250;\\n    t.logicalnot = 713;\\n    t.logicaland = 603;\\n    t.logicalor = 603;\\n    t.arrowdblboth = 1042;\\n    t.arrowdblleft = 987;\\n    t.arrowdblup = 603;\\n    t.arrowdblright = 987;\\n    t.arrowdbldown = 603;\\n    t.lozenge = 494;\\n    t.angleleft = 329;\\n    t.registersans = 790;\\n    t.copyrightsans = 790;\\n    t.trademarksans = 786;\\n    t.summation = 713;\\n    t.parenlefttp = 384;\\n    t.parenleftex = 384;\\n    t.parenleftbt = 384;\\n    t.bracketlefttp = 384;\\n    t.bracketleftex = 384;\\n    t.bracketleftbt = 384;\\n    t.bracelefttp = 494;\\n    t.braceleftmid = 494;\\n    t.braceleftbt = 494;\\n    t.braceex = 494;\\n    t.angleright = 329;\\n    t.integral = 274;\\n    t.integraltp = 686;\\n    t.integralex = 686;\\n    t.integralbt = 686;\\n    t.parenrighttp = 384;\\n    t.parenrightex = 384;\\n    t.parenrightbt = 384;\\n    t.bracketrighttp = 384;\\n    t.bracketrightex = 384;\\n    t.bracketrightbt = 384;\\n    t.bracerighttp = 494;\\n    t.bracerightmid = 494;\\n    t.bracerightbt = 494;\\n    t.apple = 790;\\n  });\\n  \u002F\u002F eslint-disable-next-line no-shadow\\n  t[\\\"Times-Roman\\\"] = getLookupTableFactory(function (t) {\\n    t.space = 250;\\n    t.exclam = 333;\\n    t.quotedbl = 408;\\n    t.numbersign = 500;\\n    t.dollar = 500;\\n    t.percent = 833;\\n    t.ampersand = 778;\\n    t.quoteright = 333;\\n    t.parenleft = 333;\\n    t.parenright = 333;\\n    t.asterisk = 500;\\n    t.plus = 564;\\n    t.comma = 250;\\n    t.hyphen = 333;\\n    t.period = 250;\\n    t.slash = 278;\\n    t.zero = 500;\\n    t.one = 500;\\n    t.two = 500;\\n    t.three = 500;\\n    t.four = 500;\\n    t.five = 500;\\n    t.six = 500;\\n    t.seven = 500;\\n    t.eight = 500;\\n    t.nine = 500;\\n    t.colon = 278;\\n    t.semicolon = 278;\\n    t.less = 564;\\n    t.equal = 564;\\n    t.greater = 564;\\n    t.question = 444;\\n    t.at = 921;\\n    t.A = 722;\\n    t.B = 667;\\n    t.C = 667;\\n    t.D = 722;\\n    t.E = 611;\\n    t.F = 556;\\n    t.G = 722;\\n    t.H = 722;\\n    t.I = 333;\\n    t.J = 389;\\n    t.K = 722;\\n    t.L = 611;\\n    t.M = 889;\\n    t.N = 722;\\n    t.O = 722;\\n    t.P = 556;\\n    t.Q = 722;\\n    t.R = 667;\\n    t.S = 556;\\n    t.T = 611;\\n    t.U = 722;\\n    t.V = 722;\\n    t.W = 944;\\n    t.X = 722;\\n    t.Y = 722;\\n    t.Z = 611;\\n    t.bracketleft = 333;\\n    t.backslash = 278;\\n    t.bracketright = 333;\\n    t.asciicircum = 469;\\n    t.underscore = 500;\\n    t.quoteleft = 333;\\n    t.a = 444;\\n    t.b = 500;\\n    t.c = 444;\\n    t.d = 500;\\n    t.e = 444;\\n    t.f = 333;\\n    t.g = 500;\\n    t.h = 500;\\n    t.i = 278;\\n    t.j = 278;\\n    t.k = 500;\\n    t.l = 278;\\n    t.m = 778;\\n    t.n = 500;\\n    t.o = 500;\\n    t.p = 500;\\n    t.q = 500;\\n    t.r = 333;\\n    t.s = 389;\\n    t.t = 278;\\n    t.u = 500;\\n    t.v = 500;\\n    t.w = 722;\\n    t.x = 500;\\n    t.y = 500;\\n    t.z = 444;\\n    t.braceleft = 480;\\n    t.bar = 200;\\n    t.braceright = 480;\\n    t.asciitilde = 541;\\n    t.exclamdown = 333;\\n    t.cent = 500;\\n    t.sterling = 500;\\n    t.fraction = 167;\\n    t.yen = 500;\\n    t.florin = 500;\\n    t.section = 500;\\n    t.currency = 500;\\n    t.quotesingle = 180;\\n    t.quotedblleft = 444;\\n    t.guillemotleft = 500;\\n    t.guilsinglleft = 333;\\n    t.guilsinglright = 333;\\n    t.fi = 556;\\n    t.fl = 556;\\n    t.endash = 500;\\n    t.dagger = 500;\\n    t.daggerdbl = 500;\\n    t.periodcentered = 250;\\n    t.paragraph = 453;\\n    t.bullet = 350;\\n    t.quotesinglbase = 333;\\n    t.quotedblbase = 444;\\n    t.quotedblright = 444;\\n    t.guillemotright = 500;\\n    t.ellipsis = 1000;\\n    t.perthousand = 1000;\\n    t.questiondown = 444;\\n    t.grave = 333;\\n    t.acute = 333;\\n    t.circumflex = 333;\\n    t.tilde = 333;\\n    t.macron = 333;\\n    t.breve = 333;\\n    t.dotaccent = 333;\\n    t.dieresis = 333;\\n    t.ring = 333;\\n    t.cedilla = 333;\\n    t.hungarumlaut = 333;\\n    t.ogonek = 333;\\n    t.caron = 333;\\n    t.emdash = 1000;\\n    t.AE = 889;\\n    t.ordfeminine = 276;\\n    t.Lslash = 611;\\n    t.Oslash = 722;\\n    t.OE = 889;\\n    t.ordmasculine = 310;\\n    t.ae = 667;\\n    t.dotlessi = 278;\\n    t.lslash = 278;\\n    t.oslash = 500;\\n    t.oe = 722;\\n    t.germandbls = 500;\\n    t.Idieresis = 333;\\n    t.eacute = 444;\\n    t.abreve = 444;\\n    t.uhungarumlaut = 500;\\n    t.ecaron = 444;\\n    t.Ydieresis = 722;\\n    t.divide = 564;\\n    t.Yacute = 722;\\n    t.Acircumflex = 722;\\n    t.aacute = 444;\\n    t.Ucircumflex = 722;\\n    t.yacute = 500;\\n    t.scommaaccent = 389;\\n    t.ecircumflex = 444;\\n    t.Uring = 722;\\n    t.Udieresis = 722;\\n    t.aogonek = 444;\\n    t.Uacute = 722;\\n    t.uogonek = 500;\\n    t.Edieresis = 611;\\n    t.Dcroat = 722;\\n    t.commaaccent = 250;\\n    t.copyright = 760;\\n    t.Emacron = 611;\\n    t.ccaron = 444;\\n    t.aring = 444;\\n    t.Ncommaaccent = 722;\\n    t.lacute = 278;\\n    t.agrave = 444;\\n    t.Tcommaaccent = 611;\\n    t.Cacute = 667;\\n    t.atilde = 444;\\n    t.Edotaccent = 611;\\n    t.scaron = 389;\\n    t.scedilla = 389;\\n    t.iacute = 278;\\n    t.lozenge = 471;\\n    t.Rcaron = 667;\\n    t.Gcommaaccent = 722;\\n    t.ucircumflex = 500;\\n    t.acircumflex = 444;\\n    t.Amacron = 722;\\n    t.rcaron = 333;\\n    t.ccedilla = 444;\\n    t.Zdotaccent = 611;\\n    t.Thorn = 556;\\n    t.Omacron = 722;\\n    t.Racute = 667;\\n    t.Sacute = 556;\\n    t.dcaron = 588;\\n    t.Umacron = 722;\\n    t.uring = 500;\\n    t.threesuperior = 300;\\n    t.Ograve = 722;\\n    t.Agrave = 722;\\n    t.Abreve = 722;\\n    t.multiply = 564;\\n    t.uacute = 500;\\n    t.Tcaron = 611;\\n    t.partialdiff = 476;\\n    t.ydieresis = 500;\\n    t.Nacute = 722;\\n    t.icircumflex = 278;\\n    t.Ecircumflex = 611;\\n    t.adieresis = 444;\\n    t.edieresis = 444;\\n    t.cacute = 444;\\n    t.nacute = 500;\\n    t.umacron = 500;\\n    t.Ncaron = 722;\\n    t.Iacute = 333;\\n    t.plusminus = 564;\\n    t.brokenbar = 200;\\n    t.registered = 760;\\n    t.Gbreve = 722;\\n    t.Idotaccent = 333;\\n    t.summation = 600;\\n    t.Egrave = 611;\\n    t.racute = 333;\\n    t.omacron = 500;\\n    t.Zacute = 611;\\n    t.Zcaron = 611;\\n    t.greaterequal = 549;\\n    t.Eth = 722;\\n    t.Ccedilla = 667;\\n    t.lcommaaccent = 278;\\n    t.tcaron = 326;\\n    t.eogonek = 444;\\n    t.Uogonek = 722;\\n    t.Aacute = 722;\\n    t.Adieresis = 722;\\n    t.egrave = 444;\\n    t.zacute = 444;\\n    t.iogonek = 278;\\n    t.Oacute = 722;\\n    t.oacute = 500;\\n    t.amacron = 444;\\n    t.sacute = 389;\\n    t.idieresis = 278;\\n    t.Ocircumflex = 722;\\n    t.Ugrave = 722;\\n    t.Delta = 612;\\n    t.thorn = 500;\\n    t.twosuperior = 300;\\n    t.Odieresis = 722;\\n    t.mu = 500;\\n    t.igrave = 278;\\n    t.ohungarumlaut = 500;\\n    t.Eogonek = 611;\\n    t.dcroat = 500;\\n    t.threequarters = 750;\\n    t.Scedilla = 556;\\n    t.lcaron = 344;\\n    t.Kcommaaccent = 722;\\n    t.Lacute = 611;\\n    t.trademark = 980;\\n    t.edotaccent = 444;\\n    t.Igrave = 333;\\n    t.Imacron = 333;\\n    t.Lcaron = 611;\\n    t.onehalf = 750;\\n    t.lessequal = 549;\\n    t.ocircumflex = 500;\\n    t.ntilde = 500;\\n    t.Uhungarumlaut = 722;\\n    t.Eacute = 611;\\n    t.emacron = 444;\\n    t.gbreve = 500;\\n    t.onequarter = 750;\\n    t.Scaron = 556;\\n    t.Scommaaccent = 556;\\n    t.Ohungarumlaut = 722;\\n    t.degree = 400;\\n    t.ograve = 500;\\n    t.Ccaron = 667;\\n    t.ugrave = 500;\\n    t.radical = 453;\\n    t.Dcaron = 722;\\n    t.rcommaaccent = 333;\\n    t.Ntilde = 722;\\n    t.otilde = 500;\\n    t.Rcommaaccent = 667;\\n    t.Lcommaaccent = 611;\\n    t.Atilde = 722;\\n    t.Aogonek = 722;\\n    t.Aring = 722;\\n    t.Otilde = 722;\\n    t.zdotaccent = 444;\\n    t.Ecaron = 611;\\n    t.Iogonek = 333;\\n    t.kcommaaccent = 500;\\n    t.minus = 564;\\n    t.Icircumflex = 333;\\n    t.ncaron = 500;\\n    t.tcommaaccent = 278;\\n    t.logicalnot = 564;\\n    t.odieresis = 500;\\n    t.udieresis = 500;\\n    t.notequal = 549;\\n    t.gcommaaccent = 500;\\n    t.eth = 500;\\n    t.zcaron = 444;\\n    t.ncommaaccent = 500;\\n    t.onesuperior = 300;\\n    t.imacron = 278;\\n    t.Euro = 500;\\n  });\\n  \u002F\u002F eslint-disable-next-line no-shadow\\n  t[\\\"Times-Bold\\\"] = getLookupTableFactory(function (t) {\\n    t.space = 250;\\n    t.exclam = 333;\\n    t.quotedbl = 555;\\n    t.numbersign = 500;\\n    t.dollar = 500;\\n    t.percent = 1000;\\n    t.ampersand = 833;\\n    t.quoteright = 333;\\n    t.parenleft = 333;\\n    t.parenright = 333;\\n    t.asterisk = 500;\\n    t.plus = 570;\\n    t.comma = 250;\\n    t.hyphen = 333;\\n    t.period = 250;\\n    t.slash = 278;\\n    t.zero = 500;\\n    t.one = 500;\\n    t.two = 500;\\n    t.three = 500;\\n    t.four = 500;\\n    t.five = 500;\\n    t.six = 500;\\n    t.seven = 500;\\n    t.eight = 500;\\n    t.nine = 500;\\n    t.colon = 333;\\n    t.semicolon = 333;\\n    t.less = 570;\\n    t.equal = 570;\\n    t.greater = 570;\\n    t.question = 500;\\n    t.at = 930;\\n    t.A = 722;\\n    t.B = 667;\\n    t.C = 722;\\n    t.D = 722;\\n    t.E = 667;\\n    t.F = 611;\\n    t.G = 778;\\n    t.H = 778;\\n    t.I = 389;\\n    t.J = 500;\\n    t.K = 778;\\n    t.L = 667;\\n    t.M = 944;\\n    t.N = 722;\\n    t.O = 778;\\n    t.P = 611;\\n    t.Q = 778;\\n    t.R = 722;\\n    t.S = 556;\\n    t.T = 667;\\n    t.U = 722;\\n    t.V = 722;\\n    t.W = 1000;\\n    t.X = 722;\\n    t.Y = 722;\\n    t.Z = 667;\\n    t.bracketleft = 333;\\n    t.backslash = 278;\\n    t.bracketright = 333;\\n    t.asciicircum = 581;\\n    t.underscore = 500;\\n    t.quoteleft = 333;\\n    t.a = 500;\\n    t.b = 556;\\n    t.c = 444;\\n    t.d = 556;\\n    t.e = 444;\\n    t.f = 333;\\n    t.g = 500;\\n    t.h = 556;\\n    t.i = 278;\\n    t.j = 333;\\n    t.k = 556;\\n    t.l = 278;\\n    t.m = 833;\\n    t.n = 556;\\n    t.o = 500;\\n    t.p = 556;\\n    t.q = 556;\\n    t.r = 444;\\n    t.s = 389;\\n    t.t = 333;\\n    t.u = 556;\\n    t.v = 500;\\n    t.w = 722;\\n    t.x = 500;\\n    t.y = 500;\\n    t.z = 444;\\n    t.braceleft = 394;\\n    t.bar = 220;\\n    t.braceright = 394;\\n    t.asciitilde = 520;\\n    t.exclamdown = 333;\\n    t.cent = 500;\\n    t.sterling = 500;\\n    t.fraction = 167;\\n    t.yen = 500;\\n    t.florin = 500;\\n    t.section = 500;\\n    t.currency = 500;\\n    t.quotesingle = 278;\\n    t.quotedblleft = 500;\\n    t.guillemotleft = 500;\\n    t.guilsinglleft = 333;\\n    t.guilsinglright = 333;\\n    t.fi = 556;\\n    t.fl = 556;\\n    t.endash = 500;\\n    t.dagger = 500;\\n    t.daggerdbl = 500;\\n    t.periodcentered = 250;\\n    t.paragraph = 540;\\n    t.bullet = 350;\\n    t.quotesinglbase = 333;\\n    t.quotedblbase = 500;\\n    t.quotedblright = 500;\\n    t.guillemotright = 500;\\n    t.ellipsis = 1000;\\n    t.perthousand = 1000;\\n    t.questiondown = 500;\\n    t.grave = 333;\\n    t.acute = 333;\\n    t.circumflex = 333;\\n    t.tilde = 333;\\n    t.macron = 333;\\n    t.breve = 333;\\n    t.dotaccent = 333;\\n    t.dieresis = 333;\\n    t.ring = 333;\\n    t.cedilla = 333;\\n    t.hungarumlaut = 333;\\n    t.ogonek = 333;\\n    t.caron = 333;\\n    t.emdash = 1000;\\n    t.AE = 1000;\\n    t.ordfeminine = 300;\\n    t.Lslash = 667;\\n    t.Oslash = 778;\\n    t.OE = 1000;\\n    t.ordmasculine = 330;\\n    t.ae = 722;\\n    t.dotlessi = 278;\\n    t.lslash = 278;\\n    t.oslash = 500;\\n    t.oe = 722;\\n    t.germandbls = 556;\\n    t.Idieresis = 389;\\n    t.eacute = 444;\\n    t.abreve = 500;\\n    t.uhungarumlaut = 556;\\n    t.ecaron = 444;\\n    t.Ydieresis = 722;\\n    t.divide = 570;\\n    t.Yacute = 722;\\n    t.Acircumflex = 722;\\n    t.aacute = 500;\\n    t.Ucircumflex = 722;\\n    t.yacute = 500;\\n    t.scommaaccent = 389;\\n    t.ecircumflex = 444;\\n    t.Uring = 722;\\n    t.Udieresis = 722;\\n    t.aogonek = 500;\\n    t.Uacute = 722;\\n    t.uogonek = 556;\\n    t.Edieresis = 667;\\n    t.Dcroat = 722;\\n    t.commaaccent = 250;\\n    t.copyright = 747;\\n    t.Emacron = 667;\\n    t.ccaron = 444;\\n    t.aring = 500;\\n    t.Ncommaaccent = 722;\\n    t.lacute = 278;\\n    t.agrave = 500;\\n    t.Tcommaaccent = 667;\\n    t.Cacute = 722;\\n    t.atilde = 500;\\n    t.Edotaccent = 667;\\n    t.scaron = 389;\\n    t.scedilla = 389;\\n    t.iacute = 278;\\n    t.lozenge = 494;\\n    t.Rcaron = 722;\\n    t.Gcommaaccent = 778;\\n    t.ucircumflex = 556;\\n    t.acircumflex = 500;\\n    t.Amacron = 722;\\n    t.rcaron = 444;\\n    t.ccedilla = 444;\\n    t.Zdotaccent = 667;\\n    t.Thorn = 611;\\n    t.Omacron = 778;\\n    t.Racute = 722;\\n    t.Sacute = 556;\\n    t.dcaron = 672;\\n    t.Umacron = 722;\\n    t.uring = 556;\\n    t.threesuperior = 300;\\n    t.Ograve = 778;\\n    t.Agrave = 722;\\n    t.Abreve = 722;\\n    t.multiply = 570;\\n    t.uacute = 556;\\n    t.Tcaron = 667;\\n    t.partialdiff = 494;\\n    t.ydieresis = 500;\\n    t.Nacute = 722;\\n    t.icircumflex = 278;\\n    t.Ecircumflex = 667;\\n    t.adieresis = 500;\\n    t.edieresis = 444;\\n    t.cacute = 444;\\n    t.nacute = 556;\\n    t.umacron = 556;\\n    t.Ncaron = 722;\\n    t.Iacute = 389;\\n    t.plusminus = 570;\\n    t.brokenbar = 220;\\n    t.registered = 747;\\n    t.Gbreve = 778;\\n    t.Idotaccent = 389;\\n    t.summation = 600;\\n    t.Egrave = 667;\\n    t.racute = 444;\\n    t.omacron = 500;\\n    t.Zacute = 667;\\n    t.Zcaron = 667;\\n    t.greaterequal = 549;\\n    t.Eth = 722;\\n    t.Ccedilla = 722;\\n    t.lcommaaccent = 278;\\n    t.tcaron = 416;\\n    t.eogonek = 444;\\n    t.Uogonek = 722;\\n    t.Aacute = 722;\\n    t.Adieresis = 722;\\n    t.egrave = 444;\\n    t.zacute = 444;\\n    t.iogonek = 278;\\n    t.Oacute = 778;\\n    t.oacute = 500;\\n    t.amacron = 500;\\n    t.sacute = 389;\\n    t.idieresis = 278;\\n    t.Ocircumflex = 778;\\n    t.Ugrave = 722;\\n    t.Delta = 612;\\n    t.thorn = 556;\\n    t.twosuperior = 300;\\n    t.Odieresis = 778;\\n    t.mu = 556;\\n    t.igrave = 278;\\n    t.ohungarumlaut = 500;\\n    t.Eogonek = 667;\\n    t.dcroat = 556;\\n    t.threequarters = 750;\\n    t.Scedilla = 556;\\n    t.lcaron = 394;\\n    t.Kcommaaccent = 778;\\n    t.Lacute = 667;\\n    t.trademark = 1000;\\n    t.edotaccent = 444;\\n    t.Igrave = 389;\\n    t.Imacron = 389;\\n    t.Lcaron = 667;\\n    t.onehalf = 750;\\n    t.lessequal = 549;\\n    t.ocircumflex = 500;\\n    t.ntilde = 556;\\n    t.Uhungarumlaut = 722;\\n    t.Eacute = 667;\\n    t.emacron = 444;\\n    t.gbreve = 500;\\n    t.onequarter = 750;\\n    t.Scaron = 556;\\n    t.Scommaaccent = 556;\\n    t.Ohungarumlaut = 778;\\n    t.degree = 400;\\n    t.ograve = 500;\\n    t.Ccaron = 722;\\n    t.ugrave = 556;\\n    t.radical = 549;\\n    t.Dcaron = 722;\\n    t.rcommaaccent = 444;\\n    t.Ntilde = 722;\\n    t.otilde = 500;\\n    t.Rcommaaccent = 722;\\n    t.Lcommaaccent = 667;\\n    t.Atilde = 722;\\n    t.Aogonek = 722;\\n    t.Aring = 722;\\n    t.Otilde = 778;\\n    t.zdotaccent = 444;\\n    t.Ecaron = 667;\\n    t.Iogonek = 389;\\n    t.kcommaaccent = 556;\\n    t.minus = 570;\\n    t.Icircumflex = 389;\\n    t.ncaron = 556;\\n    t.tcommaaccent = 333;\\n    t.logicalnot = 570;\\n    t.odieresis = 500;\\n    t.udieresis = 556;\\n    t.notequal = 549;\\n    t.gcommaaccent = 500;\\n    t.eth = 500;\\n    t.zcaron = 444;\\n    t.ncommaaccent = 556;\\n    t.onesuperior = 300;\\n    t.imacron = 278;\\n    t.Euro = 500;\\n  });\\n  \u002F\u002F eslint-disable-next-line no-shadow\\n  t[\\\"Times-BoldItalic\\\"] = getLookupTableFactory(function (t) {\\n    t.space = 250;\\n    t.exclam = 389;\\n    t.quotedbl = 555;\\n    t.numbersign = 500;\\n    t.dollar = 500;\\n    t.percent = 833;\\n    t.ampersand = 778;\\n    t.quoteright = 333;\\n    t.parenleft = 333;\\n    t.parenright = 333;\\n    t.asterisk = 500;\\n    t.plus = 570;\\n    t.comma = 250;\\n    t.hyphen = 333;\\n    t.period = 250;\\n    t.slash = 278;\\n    t.zero = 500;\\n    t.one = 500;\\n    t.two = 500;\\n    t.three = 500;\\n    t.four = 500;\\n    t.five = 500;\\n    t.six = 500;\\n    t.seven = 500;\\n    t.eight = 500;\\n    t.nine = 500;\\n    t.colon = 333;\\n    t.semicolon = 333;\\n    t.less = 570;\\n    t.equal = 570;\\n    t.greater = 570;\\n    t.question = 500;\\n    t.at = 832;\\n    t.A = 667;\\n    t.B = 667;\\n    t.C = 667;\\n    t.D = 722;\\n    t.E = 667;\\n    t.F = 667;\\n    t.G = 722;\\n    t.H = 778;\\n    t.I = 389;\\n    t.J = 500;\\n    t.K = 667;\\n    t.L = 611;\\n    t.M = 889;\\n    t.N = 722;\\n    t.O = 722;\\n    t.P = 611;\\n    t.Q = 722;\\n    t.R = 667;\\n    t.S = 556;\\n    t.T = 611;\\n    t.U = 722;\\n    t.V = 667;\\n    t.W = 889;\\n    t.X = 667;\\n    t.Y = 611;\\n    t.Z = 611;\\n    t.bracketleft = 333;\\n    t.backslash = 278;\\n    t.bracketright = 333;\\n    t.asciicircum = 570;\\n    t.underscore = 500;\\n    t.quoteleft = 333;\\n    t.a = 500;\\n    t.b = 500;\\n    t.c = 444;\\n    t.d = 500;\\n    t.e = 444;\\n    t.f = 333;\\n    t.g = 500;\\n    t.h = 556;\\n    t.i = 278;\\n    t.j = 278;\\n    t.k = 500;\\n    t.l = 278;\\n    t.m = 778;\\n    t.n = 556;\\n    t.o = 500;\\n    t.p = 500;\\n    t.q = 500;\\n    t.r = 389;\\n    t.s = 389;\\n    t.t = 278;\\n    t.u = 556;\\n    t.v = 444;\\n    t.w = 667;\\n    t.x = 500;\\n    t.y = 444;\\n    t.z = 389;\\n    t.braceleft = 348;\\n    t.bar = 220;\\n    t.braceright = 348;\\n    t.asciitilde = 570;\\n    t.exclamdown = 389;\\n    t.cent = 500;\\n    t.sterling = 500;\\n    t.fraction = 167;\\n    t.yen = 500;\\n    t.florin = 500;\\n    t.section = 500;\\n    t.currency = 500;\\n    t.quotesingle = 278;\\n    t.quotedblleft = 500;\\n    t.guillemotleft = 500;\\n    t.guilsinglleft = 333;\\n    t.guilsinglright = 333;\\n    t.fi = 556;\\n    t.fl = 556;\\n    t.endash = 500;\\n    t.dagger = 500;\\n    t.daggerdbl = 500;\\n    t.periodcentered = 250;\\n    t.paragraph = 500;\\n    t.bullet = 350;\\n    t.quotesinglbase = 333;\\n    t.quotedblbase = 500;\\n    t.quotedblright = 500;\\n    t.guillemotright = 500;\\n    t.ellipsis = 1000;\\n    t.perthousand = 1000;\\n    t.questiondown = 500;\\n    t.grave = 333;\\n    t.acute = 333;\\n    t.circumflex = 333;\\n    t.tilde = 333;\\n    t.macron = 333;\\n    t.breve = 333;\\n    t.dotaccent = 333;\\n    t.dieresis = 333;\\n    t.ring = 333;\\n    t.cedilla = 333;\\n    t.hungarumlaut = 333;\\n    t.ogonek = 333;\\n    t.caron = 333;\\n    t.emdash = 1000;\\n    t.AE = 944;\\n    t.ordfeminine = 266;\\n    t.Lslash = 611;\\n    t.Oslash = 722;\\n    t.OE = 944;\\n    t.ordmasculine = 300;\\n    t.ae = 722;\\n    t.dotlessi = 278;\\n    t.lslash = 278;\\n    t.oslash = 500;\\n    t.oe = 722;\\n    t.germandbls = 500;\\n    t.Idieresis = 389;\\n    t.eacute = 444;\\n    t.abreve = 500;\\n    t.uhungarumlaut = 556;\\n    t.ecaron = 444;\\n    t.Ydieresis = 611;\\n    t.divide = 570;\\n    t.Yacute = 611;\\n    t.Acircumflex = 667;\\n    t.aacute = 500;\\n    t.Ucircumflex = 722;\\n    t.yacute = 444;\\n    t.scommaaccent = 389;\\n    t.ecircumflex = 444;\\n    t.Uring = 722;\\n    t.Udieresis = 722;\\n    t.aogonek = 500;\\n    t.Uacute = 722;\\n    t.uogonek = 556;\\n    t.Edieresis = 667;\\n    t.Dcroat = 722;\\n    t.commaaccent = 250;\\n    t.copyright = 747;\\n    t.Emacron = 667;\\n    t.ccaron = 444;\\n    t.aring = 500;\\n    t.Ncommaaccent = 722;\\n    t.lacute = 278;\\n    t.agrave = 500;\\n    t.Tcommaaccent = 611;\\n    t.Cacute = 667;\\n    t.atilde = 500;\\n    t.Edotaccent = 667;\\n    t.scaron = 389;\\n    t.scedilla = 389;\\n    t.iacute = 278;\\n    t.lozenge = 494;\\n    t.Rcaron = 667;\\n    t.Gcommaaccent = 722;\\n    t.ucircumflex = 556;\\n    t.acircumflex = 500;\\n    t.Amacron = 667;\\n    t.rcaron = 389;\\n    t.ccedilla = 444;\\n    t.Zdotaccent = 611;\\n    t.Thorn = 611;\\n    t.Omacron = 722;\\n    t.Racute = 667;\\n    t.Sacute = 556;\\n    t.dcaron = 608;\\n    t.Umacron = 722;\\n    t.uring = 556;\\n    t.threesuperior = 300;\\n    t.Ograve = 722;\\n    t.Agrave = 667;\\n    t.Abreve = 667;\\n    t.multiply = 570;\\n    t.uacute = 556;\\n    t.Tcaron = 611;\\n    t.partialdiff = 494;\\n    t.ydieresis = 444;\\n    t.Nacute = 722;\\n    t.icircumflex = 278;\\n    t.Ecircumflex = 667;\\n    t.adieresis = 500;\\n    t.edieresis = 444;\\n    t.cacute = 444;\\n    t.nacute = 556;\\n    t.umacron = 556;\\n    t.Ncaron = 722;\\n    t.Iacute = 389;\\n    t.plusminus = 570;\\n    t.brokenbar = 220;\\n    t.registered = 747;\\n    t.Gbreve = 722;\\n    t.Idotaccent = 389;\\n    t.summation = 600;\\n    t.Egrave = 667;\\n    t.racute = 389;\\n    t.omacron = 500;\\n    t.Zacute = 611;\\n    t.Zcaron = 611;\\n    t.greaterequal = 549;\\n    t.Eth = 722;\\n    t.Ccedilla = 667;\\n    t.lcommaaccent = 278;\\n    t.tcaron = 366;\\n    t.eogonek = 444;\\n    t.Uogonek = 722;\\n    t.Aacute = 667;\\n    t.Adieresis = 667;\\n    t.egrave = 444;\\n    t.zacute = 389;\\n    t.iogonek = 278;\\n    t.Oacute = 722;\\n    t.oacute = 500;\\n    t.amacron = 500;\\n    t.sacute = 389;\\n    t.idieresis = 278;\\n    t.Ocircumflex = 722;\\n    t.Ugrave = 722;\\n    t.Delta = 612;\\n    t.thorn = 500;\\n    t.twosuperior = 300;\\n    t.Odieresis = 722;\\n    t.mu = 576;\\n    t.igrave = 278;\\n    t.ohungarumlaut = 500;\\n    t.Eogonek = 667;\\n    t.dcroat = 500;\\n    t.threequarters = 750;\\n    t.Scedilla = 556;\\n    t.lcaron = 382;\\n    t.Kcommaaccent = 667;\\n    t.Lacute = 611;\\n    t.trademark = 1000;\\n    t.edotaccent = 444;\\n    t.Igrave = 389;\\n    t.Imacron = 389;\\n    t.Lcaron = 611;\\n    t.onehalf = 750;\\n    t.lessequal = 549;\\n    t.ocircumflex = 500;\\n    t.ntilde = 556;\\n    t.Uhungarumlaut = 722;\\n    t.Eacute = 667;\\n    t.emacron = 444;\\n    t.gbreve = 500;\\n    t.onequarter = 750;\\n    t.Scaron = 556;\\n    t.Scommaaccent = 556;\\n    t.Ohungarumlaut = 722;\\n    t.degree = 400;\\n    t.ograve = 500;\\n    t.Ccaron = 667;\\n    t.ugrave = 556;\\n    t.radical = 549;\\n    t.Dcaron = 722;\\n    t.rcommaaccent = 389;\\n    t.Ntilde = 722;\\n    t.otilde = 500;\\n    t.Rcommaaccent = 667;\\n    t.Lcommaaccent = 611;\\n    t.Atilde = 667;\\n    t.Aogonek = 667;\\n    t.Aring = 667;\\n    t.Otilde = 722;\\n    t.zdotaccent = 389;\\n    t.Ecaron = 667;\\n    t.Iogonek = 389;\\n    t.kcommaaccent = 500;\\n    t.minus = 606;\\n    t.Icircumflex = 389;\\n    t.ncaron = 556;\\n    t.tcommaaccent = 278;\\n    t.logicalnot = 606;\\n    t.odieresis = 500;\\n    t.udieresis = 556;\\n    t.notequal = 549;\\n    t.gcommaaccent = 500;\\n    t.eth = 500;\\n    t.zcaron = 389;\\n    t.ncommaaccent = 556;\\n    t.onesuperior = 300;\\n    t.imacron = 278;\\n    t.Euro = 500;\\n  });\\n  \u002F\u002F eslint-disable-next-line no-shadow\\n  t[\\\"Times-Italic\\\"] = getLookupTableFactory(function (t) {\\n    t.space = 250;\\n    t.exclam = 333;\\n    t.quotedbl = 420;\\n    t.numbersign = 500;\\n    t.dollar = 500;\\n    t.percent = 833;\\n    t.ampersand = 778;\\n    t.quoteright = 333;\\n    t.parenleft = 333;\\n    t.parenright = 333;\\n    t.asterisk = 500;\\n    t.plus = 675;\\n    t.comma = 250;\\n    t.hyphen = 333;\\n    t.period = 250;\\n    t.slash = 278;\\n    t.zero = 500;\\n    t.one = 500;\\n    t.two = 500;\\n    t.three = 500;\\n    t.four = 500;\\n    t.five = 500;\\n    t.six = 500;\\n    t.seven = 500;\\n    t.eight = 500;\\n    t.nine = 500;\\n    t.colon = 333;\\n    t.semicolon = 333;\\n    t.less = 675;\\n    t.equal = 675;\\n    t.greater = 675;\\n    t.question = 500;\\n    t.at = 920;\\n    t.A = 611;\\n    t.B = 611;\\n    t.C = 667;\\n    t.D = 722;\\n    t.E = 611;\\n    t.F = 611;\\n    t.G = 722;\\n    t.H = 722;\\n    t.I = 333;\\n    t.J = 444;\\n    t.K = 667;\\n    t.L = 556;\\n    t.M = 833;\\n    t.N = 667;\\n    t.O = 722;\\n    t.P = 611;\\n    t.Q = 722;\\n    t.R = 611;\\n    t.S = 500;\\n    t.T = 556;\\n    t.U = 722;\\n    t.V = 611;\\n    t.W = 833;\\n    t.X = 611;\\n    t.Y = 556;\\n    t.Z = 556;\\n    t.bracketleft = 389;\\n    t.backslash = 278;\\n    t.bracketright = 389;\\n    t.asciicircum = 422;\\n    t.underscore = 500;\\n    t.quoteleft = 333;\\n    t.a = 500;\\n    t.b = 500;\\n    t.c = 444;\\n    t.d = 500;\\n    t.e = 444;\\n    t.f = 278;\\n    t.g = 500;\\n    t.h = 500;\\n    t.i = 278;\\n    t.j = 278;\\n    t.k = 444;\\n    t.l = 278;\\n    t.m = 722;\\n    t.n = 500;\\n    t.o = 500;\\n    t.p = 500;\\n    t.q = 500;\\n    t.r = 389;\\n    t.s = 389;\\n    t.t = 278;\\n    t.u = 500;\\n    t.v = 444;\\n    t.w = 667;\\n    t.x = 444;\\n    t.y = 444;\\n    t.z = 389;\\n    t.braceleft = 400;\\n    t.bar = 275;\\n    t.braceright = 400;\\n    t.asciitilde = 541;\\n    t.exclamdown = 389;\\n    t.cent = 500;\\n    t.sterling = 500;\\n    t.fraction = 167;\\n    t.yen = 500;\\n    t.florin = 500;\\n    t.section = 500;\\n    t.currency = 500;\\n    t.quotesingle = 214;\\n    t.quotedblleft = 556;\\n    t.guillemotleft = 500;\\n    t.guilsinglleft = 333;\\n    t.guilsinglright = 333;\\n    t.fi = 500;\\n    t.fl = 500;\\n    t.endash = 500;\\n    t.dagger = 500;\\n    t.daggerdbl = 500;\\n    t.periodcentered = 250;\\n    t.paragraph = 523;\\n    t.bullet = 350;\\n    t.quotesinglbase = 333;\\n    t.quotedblbase = 556;\\n    t.quotedblright = 556;\\n    t.guillemotright = 500;\\n    t.ellipsis = 889;\\n    t.perthousand = 1000;\\n    t.questiondown = 500;\\n    t.grave = 333;\\n    t.acute = 333;\\n    t.circumflex = 333;\\n    t.tilde = 333;\\n    t.macron = 333;\\n    t.breve = 333;\\n    t.dotaccent = 333;\\n    t.dieresis = 333;\\n    t.ring = 333;\\n    t.cedilla = 333;\\n    t.hungarumlaut = 333;\\n    t.ogonek = 333;\\n    t.caron = 333;\\n    t.emdash = 889;\\n    t.AE = 889;\\n    t.ordfeminine = 276;\\n    t.Lslash = 556;\\n    t.Oslash = 722;\\n    t.OE = 944;\\n    t.ordmasculine = 310;\\n    t.ae = 667;\\n    t.dotlessi = 278;\\n    t.lslash = 278;\\n    t.oslash = 500;\\n    t.oe = 667;\\n    t.germandbls = 500;\\n    t.Idieresis = 333;\\n    t.eacute = 444;\\n    t.abreve = 500;\\n    t.uhungarumlaut = 500;\\n    t.ecaron = 444;\\n    t.Ydieresis = 556;\\n    t.divide = 675;\\n    t.Yacute = 556;\\n    t.Acircumflex = 611;\\n    t.aacute = 500;\\n    t.Ucircumflex = 722;\\n    t.yacute = 444;\\n    t.scommaaccent = 389;\\n    t.ecircumflex = 444;\\n    t.Uring = 722;\\n    t.Udieresis = 722;\\n    t.aogonek = 500;\\n    t.Uacute = 722;\\n    t.uogonek = 500;\\n    t.Edieresis = 611;\\n    t.Dcroat = 722;\\n    t.commaaccent = 250;\\n    t.copyright = 760;\\n    t.Emacron = 611;\\n    t.ccaron = 444;\\n    t.aring = 500;\\n    t.Ncommaaccent = 667;\\n    t.lacute = 278;\\n    t.agrave = 500;\\n    t.Tcommaaccent = 556;\\n    t.Cacute = 667;\\n    t.atilde = 500;\\n    t.Edotaccent = 611;\\n    t.scaron = 389;\\n    t.scedilla = 389;\\n    t.iacute = 278;\\n    t.lozenge = 471;\\n    t.Rcaron = 611;\\n    t.Gcommaaccent = 722;\\n    t.ucircumflex = 500;\\n    t.acircumflex = 500;\\n    t.Amacron = 611;\\n    t.rcaron = 389;\\n    t.ccedilla = 444;\\n    t.Zdotaccent = 556;\\n    t.Thorn = 611;\\n    t.Omacron = 722;\\n    t.Racute = 611;\\n    t.Sacute = 500;\\n    t.dcaron = 544;\\n    t.Umacron = 722;\\n    t.uring = 500;\\n    t.threesuperior = 300;\\n    t.Ograve = 722;\\n    t.Agrave = 611;\\n    t.Abreve = 611;\\n    t.multiply = 675;\\n    t.uacute = 500;\\n    t.Tcaron = 556;\\n    t.partialdiff = 476;\\n    t.ydieresis = 444;\\n    t.Nacute = 667;\\n    t.icircumflex = 278;\\n    t.Ecircumflex = 611;\\n    t.adieresis = 500;\\n    t.edieresis = 444;\\n    t.cacute = 444;\\n    t.nacute = 500;\\n    t.umacron = 500;\\n    t.Ncaron = 667;\\n    t.Iacute = 333;\\n    t.plusminus = 675;\\n    t.brokenbar = 275;\\n    t.registered = 760;\\n    t.Gbreve = 722;\\n    t.Idotaccent = 333;\\n    t.summation = 600;\\n    t.Egrave = 611;\\n    t.racute = 389;\\n    t.omacron = 500;\\n    t.Zacute = 556;\\n    t.Zcaron = 556;\\n    t.greaterequal = 549;\\n    t.Eth = 722;\\n    t.Ccedilla = 667;\\n    t.lcommaaccent = 278;\\n    t.tcaron = 300;\\n    t.eogonek = 444;\\n    t.Uogonek = 722;\\n    t.Aacute = 611;\\n    t.Adieresis = 611;\\n    t.egrave = 444;\\n    t.zacute = 389;\\n    t.iogonek = 278;\\n    t.Oacute = 722;\\n    t.oacute = 500;\\n    t.amacron = 500;\\n    t.sacute = 389;\\n    t.idieresis = 278;\\n    t.Ocircumflex = 722;\\n    t.Ugrave = 722;\\n    t.Delta = 612;\\n    t.thorn = 500;\\n    t.twosuperior = 300;\\n    t.Odieresis = 722;\\n    t.mu = 500;\\n    t.igrave = 278;\\n    t.ohungarumlaut = 500;\\n    t.Eogonek = 611;\\n    t.dcroat = 500;\\n    t.threequarters = 750;\\n    t.Scedilla = 500;\\n    t.lcaron = 300;\\n    t.Kcommaaccent = 667;\\n    t.Lacute = 556;\\n    t.trademark = 980;\\n    t.edotaccent = 444;\\n    t.Igrave = 333;\\n    t.Imacron = 333;\\n    t.Lcaron = 611;\\n    t.onehalf = 750;\\n    t.lessequal = 549;\\n    t.ocircumflex = 500;\\n    t.ntilde = 500;\\n    t.Uhungarumlaut = 722;\\n    t.Eacute = 611;\\n    t.emacron = 444;\\n    t.gbreve = 500;\\n    t.onequarter = 750;\\n    t.Scaron = 500;\\n    t.Scommaaccent = 500;\\n    t.Ohungarumlaut = 722;\\n    t.degree = 400;\\n    t.ograve = 500;\\n    t.Ccaron = 667;\\n    t.ugrave = 500;\\n    t.radical = 453;\\n    t.Dcaron = 722;\\n    t.rcommaaccent = 389;\\n    t.Ntilde = 667;\\n    t.otilde = 500;\\n    t.Rcommaaccent = 611;\\n    t.Lcommaaccent = 556;\\n    t.Atilde = 611;\\n    t.Aogonek = 611;\\n    t.Aring = 611;\\n    t.Otilde = 722;\\n    t.zdotaccent = 389;\\n    t.Ecaron = 611;\\n    t.Iogonek = 333;\\n    t.kcommaaccent = 444;\\n    t.minus = 675;\\n    t.Icircumflex = 333;\\n    t.ncaron = 500;\\n    t.tcommaaccent = 278;\\n    t.logicalnot = 675;\\n    t.odieresis = 500;\\n    t.udieresis = 500;\\n    t.notequal = 549;\\n    t.gcommaaccent = 500;\\n    t.eth = 500;\\n    t.zcaron = 389;\\n    t.ncommaaccent = 500;\\n    t.onesuperior = 300;\\n    t.imacron = 278;\\n    t.Euro = 500;\\n  });\\n  \u002F\u002F eslint-disable-next-line no-shadow\\n  t.ZapfDingbats = getLookupTableFactory(function (t) {\\n    t.space = 278;\\n    t.a1 = 974;\\n    t.a2 = 961;\\n    t.a202 = 974;\\n    t.a3 = 980;\\n    t.a4 = 719;\\n    t.a5 = 789;\\n    t.a119 = 790;\\n    t.a118 = 791;\\n    t.a117 = 690;\\n    t.a11 = 960;\\n    t.a12 = 939;\\n    t.a13 = 549;\\n    t.a14 = 855;\\n    t.a15 = 911;\\n    t.a16 = 933;\\n    t.a105 = 911;\\n    t.a17 = 945;\\n    t.a18 = 974;\\n    t.a19 = 755;\\n    t.a20 = 846;\\n    t.a21 = 762;\\n    t.a22 = 761;\\n    t.a23 = 571;\\n    t.a24 = 677;\\n    t.a25 = 763;\\n    t.a26 = 760;\\n    t.a27 = 759;\\n    t.a28 = 754;\\n    t.a6 = 494;\\n    t.a7 = 552;\\n    t.a8 = 537;\\n    t.a9 = 577;\\n    t.a10 = 692;\\n    t.a29 = 786;\\n    t.a30 = 788;\\n    t.a31 = 788;\\n    t.a32 = 790;\\n    t.a33 = 793;\\n    t.a34 = 794;\\n    t.a35 = 816;\\n    t.a36 = 823;\\n    t.a37 = 789;\\n    t.a38 = 841;\\n    t.a39 = 823;\\n    t.a40 = 833;\\n    t.a41 = 816;\\n    t.a42 = 831;\\n    t.a43 = 923;\\n    t.a44 = 744;\\n    t.a45 = 723;\\n    t.a46 = 749;\\n    t.a47 = 790;\\n    t.a48 = 792;\\n    t.a49 = 695;\\n    t.a50 = 776;\\n    t.a51 = 768;\\n    t.a52 = 792;\\n    t.a53 = 759;\\n    t.a54 = 707;\\n    t.a55 = 708;\\n    t.a56 = 682;\\n    t.a57 = 701;\\n    t.a58 = 826;\\n    t.a59 = 815;\\n    t.a60 = 789;\\n    t.a61 = 789;\\n    t.a62 = 707;\\n    t.a63 = 687;\\n    t.a64 = 696;\\n    t.a65 = 689;\\n    t.a66 = 786;\\n    t.a67 = 787;\\n    t.a68 = 713;\\n    t.a69 = 791;\\n    t.a70 = 785;\\n    t.a71 = 791;\\n    t.a72 = 873;\\n    t.a73 = 761;\\n    t.a74 = 762;\\n    t.a203 = 762;\\n    t.a75 = 759;\\n    t.a204 = 759;\\n    t.a76 = 892;\\n    t.a77 = 892;\\n    t.a78 = 788;\\n    t.a79 = 784;\\n    t.a81 = 438;\\n    t.a82 = 138;\\n    t.a83 = 277;\\n    t.a84 = 415;\\n    t.a97 = 392;\\n    t.a98 = 392;\\n    t.a99 = 668;\\n    t.a100 = 668;\\n    t.a89 = 390;\\n    t.a90 = 390;\\n    t.a93 = 317;\\n    t.a94 = 317;\\n    t.a91 = 276;\\n    t.a92 = 276;\\n    t.a205 = 509;\\n    t.a85 = 509;\\n    t.a206 = 410;\\n    t.a86 = 410;\\n    t.a87 = 234;\\n    t.a88 = 234;\\n    t.a95 = 334;\\n    t.a96 = 334;\\n    t.a101 = 732;\\n    t.a102 = 544;\\n    t.a103 = 544;\\n    t.a104 = 910;\\n    t.a106 = 667;\\n    t.a107 = 760;\\n    t.a108 = 760;\\n    t.a112 = 776;\\n    t.a111 = 595;\\n    t.a110 = 694;\\n    t.a109 = 626;\\n    t.a120 = 788;\\n    t.a121 = 788;\\n    t.a122 = 788;\\n    t.a123 = 788;\\n    t.a124 = 788;\\n    t.a125 = 788;\\n    t.a126 = 788;\\n    t.a127 = 788;\\n    t.a128 = 788;\\n    t.a129 = 788;\\n    t.a130 = 788;\\n    t.a131 = 788;\\n    t.a132 = 788;\\n    t.a133 = 788;\\n    t.a134 = 788;\\n    t.a135 = 788;\\n    t.a136 = 788;\\n    t.a137 = 788;\\n    t.a138 = 788;\\n    t.a139 = 788;\\n    t.a140 = 788;\\n    t.a141 = 788;\\n    t.a142 = 788;\\n    t.a143 = 788;\\n    t.a144 = 788;\\n    t.a145 = 788;\\n    t.a146 = 788;\\n    t.a147 = 788;\\n    t.a148 = 788;\\n    t.a149 = 788;\\n    t.a150 = 788;\\n    t.a151 = 788;\\n    t.a152 = 788;\\n    t.a153 = 788;\\n    t.a154 = 788;\\n    t.a155 = 788;\\n    t.a156 = 788;\\n    t.a157 = 788;\\n    t.a158 = 788;\\n    t.a159 = 788;\\n    t.a160 = 894;\\n    t.a161 = 838;\\n    t.a163 = 1016;\\n    t.a164 = 458;\\n    t.a196 = 748;\\n    t.a165 = 924;\\n    t.a192 = 748;\\n    t.a166 = 918;\\n    t.a167 = 927;\\n    t.a168 = 928;\\n    t.a169 = 928;\\n    t.a170 = 834;\\n    t.a171 = 873;\\n    t.a172 = 828;\\n    t.a173 = 924;\\n    t.a162 = 924;\\n    t.a174 = 917;\\n    t.a175 = 930;\\n    t.a176 = 931;\\n    t.a177 = 463;\\n    t.a178 = 883;\\n    t.a179 = 836;\\n    t.a193 = 836;\\n    t.a180 = 867;\\n    t.a199 = 867;\\n    t.a181 = 696;\\n    t.a200 = 696;\\n    t.a182 = 874;\\n    t.a201 = 874;\\n    t.a183 = 760;\\n    t.a184 = 946;\\n    t.a197 = 771;\\n    t.a185 = 865;\\n    t.a194 = 771;\\n    t.a198 = 888;\\n    t.a186 = 967;\\n    t.a195 = 888;\\n    t.a187 = 831;\\n    t.a188 = 873;\\n    t.a189 = 927;\\n    t.a190 = 970;\\n    t.a191 = 918;\\n  });\\n});\\n\\nconst getFontBasicMetrics = getLookupTableFactory(function (t) {\\n  t.Courier = {\\n    ascent: 629,\\n    descent: -157,\\n    capHeight: 562,\\n    xHeight: -426,\\n  };\\n  t[\\\"Courier-Bold\\\"] = {\\n    ascent: 629,\\n    descent: -157,\\n    capHeight: 562,\\n    xHeight: 439,\\n  };\\n  t[\\\"Courier-Oblique\\\"] = {\\n    ascent: 629,\\n    descent: -157,\\n    capHeight: 562,\\n    xHeight: 426,\\n  };\\n  t[\\\"Courier-BoldOblique\\\"] = {\\n    ascent: 629,\\n    descent: -157,\\n    capHeight: 562,\\n    xHeight: 426,\\n  };\\n  t.Helvetica = {\\n    ascent: 718,\\n    descent: -207,\\n    capHeight: 718,\\n    xHeight: 523,\\n  };\\n  t[\\\"Helvetica-Bold\\\"] = {\\n    ascent: 718,\\n    descent: -207,\\n    capHeight: 718,\\n    xHeight: 532,\\n  };\\n  t[\\\"Helvetica-Oblique\\\"] = {\\n    ascent: 718,\\n    descent: -207,\\n    capHeight: 718,\\n    xHeight: 523,\\n  };\\n  t[\\\"Helvetica-BoldOblique\\\"] = {\\n    ascent: 718,\\n    descent: -207,\\n    capHeight: 718,\\n    xHeight: 532,\\n  };\\n  t[\\\"Times-Roman\\\"] = {\\n    ascent: 683,\\n    descent: -217,\\n    capHeight: 662,\\n    xHeight: 450,\\n  };\\n  t[\\\"Times-Bold\\\"] = {\\n    ascent: 683,\\n    descent: -217,\\n    capHeight: 676,\\n    xHeight: 461,\\n  };\\n  t[\\\"Times-Italic\\\"] = {\\n    ascent: 683,\\n    descent: -217,\\n    capHeight: 653,\\n    xHeight: 441,\\n  };\\n  t[\\\"Times-BoldItalic\\\"] = {\\n    ascent: 683,\\n    descent: -217,\\n    capHeight: 669,\\n    xHeight: 462,\\n  };\\n  t.Symbol = {\\n    ascent: Math.NaN,\\n    descent: Math.NaN,\\n    capHeight: Math.NaN,\\n    xHeight: Math.NaN,\\n  };\\n  t.ZapfDingbats = {\\n    ascent: Math.NaN,\\n    descent: Math.NaN,\\n    capHeight: Math.NaN,\\n    xHeight: Math.NaN,\\n  };\\n});\\n\\nexport { getFontBasicMetrics, getMetrics };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nconst ON_CURVE_POINT = 1 \u003C\u003C 0;\\nconst X_SHORT_VECTOR = 1 \u003C\u003C 1;\\nconst Y_SHORT_VECTOR = 1 \u003C\u003C 2;\\nconst REPEAT_FLAG = 1 \u003C\u003C 3;\\nconst X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR = 1 \u003C\u003C 4;\\nconst Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR = 1 \u003C\u003C 5;\\nconst OVERLAP_SIMPLE = 1 \u003C\u003C 6;\\n\\nconst ARG_1_AND_2_ARE_WORDS = 1 \u003C\u003C 0;\\nconst ARGS_ARE_XY_VALUES = 1 \u003C\u003C 1;\\n\u002F\u002F const ROUND_XY_TO_GRID = 1 \u003C\u003C 2;\\nconst WE_HAVE_A_SCALE = 1 \u003C\u003C 3;\\nconst MORE_COMPONENTS = 1 \u003C\u003C 5;\\nconst WE_HAVE_AN_X_AND_Y_SCALE = 1 \u003C\u003C 6;\\nconst WE_HAVE_A_TWO_BY_TWO = 1 \u003C\u003C 7;\\nconst WE_HAVE_INSTRUCTIONS = 1 \u003C\u003C 8;\\n\u002F\u002F const USE_MY_METRICS = 1 \u003C\u003C 9;\\n\u002F\u002F const OVERLAP_COMPOUND = 1 \u003C\u003C 10;\\n\u002F\u002F const SCALED_COMPONENT_OFFSET = 1 \u003C\u003C 11;\\n\u002F\u002F const UNSCALED_COMPONENT_OFFSET = 1 \u003C\u003C 12;\\n\\n\u002F**\\n * GlyfTable object represents a glyf table containing glyph information:\\n *  - glyph header (xMin, yMin, xMax, yMax);\\n *  - contours if any;\\n *  - components if the glyph is a composite.\\n *\\n * It's possible to re-scale each glyph in order to have a new font which\\n * exactly fits an other one: the goal is to be able to build some substitution\\n * font for well-known fonts (Myriad, Arial, ...).\\n *\\n * A full description of glyf table can be found here\\n * https:\u002F\u002Fdeveloper.apple.com\u002Ffonts\u002FTrueType-Reference-Manual\u002FRM06\u002FChap6glyf.html\\n *\u002F\\nclass GlyfTable {\\n  constructor({ glyfTable, isGlyphLocationsLong, locaTable, numGlyphs }) {\\n    this.glyphs = [];\\n    const loca = new DataView(\\n      locaTable.buffer,\\n      locaTable.byteOffset,\\n      locaTable.byteLength\\n    );\\n    const glyf = new DataView(\\n      glyfTable.buffer,\\n      glyfTable.byteOffset,\\n      glyfTable.byteLength\\n    );\\n    const offsetSize = isGlyphLocationsLong ? 4 : 2;\\n    let prev = isGlyphLocationsLong ? loca.getUint32(0) : 2 * loca.getUint16(0);\\n    let pos = 0;\\n    for (let i = 0; i \u003C numGlyphs; i++) {\\n      pos += offsetSize;\\n      const next = isGlyphLocationsLong\\n        ? loca.getUint32(pos)\\n        : 2 * loca.getUint16(pos);\\n      if (next === prev) {\\n        this.glyphs.push(new Glyph({}));\\n        continue;\\n      }\\n\\n      const glyph = Glyph.parse(prev, glyf);\\n      this.glyphs.push(glyph);\\n\\n      prev = next;\\n    }\\n  }\\n\\n  getSize() {\\n    return Math.sumPrecise(\\n      \u002F\u002F Round to next multiple of 4 if needed.\\n      this.glyphs.map(g => (g.getSize() + 3) & ~3)\\n    );\\n  }\\n\\n  write() {\\n    const totalSize = this.getSize();\\n    const glyfTable = new DataView(new ArrayBuffer(totalSize));\\n    const isLocationLong = totalSize > \u002F* 0xffff * 2 *\u002F 0x1fffe;\\n    const offsetSize = isLocationLong ? 4 : 2;\\n    const locaTable = new DataView(\\n      new ArrayBuffer((this.glyphs.length + 1) * offsetSize)\\n    );\\n\\n    if (isLocationLong) {\\n      locaTable.setUint32(0, 0);\\n    } else {\\n      locaTable.setUint16(0, 0);\\n    }\\n\\n    let pos = 0;\\n    let locaIndex = 0;\\n    for (const glyph of this.glyphs) {\\n      pos += glyph.write(pos, glyfTable);\\n      \u002F\u002F Round to next multiple of 4 if needed.\\n      pos = (pos + 3) & ~3;\\n\\n      locaIndex += offsetSize;\\n      if (isLocationLong) {\\n        locaTable.setUint32(locaIndex, pos);\\n      } else {\\n        locaTable.setUint16(locaIndex, pos >> 1);\\n      }\\n    }\\n\\n    return {\\n      isLocationLong,\\n      loca: new Uint8Array(locaTable.buffer),\\n      glyf: new Uint8Array(glyfTable.buffer),\\n    };\\n  }\\n\\n  scale(factors) {\\n    for (let i = 0, ii = this.glyphs.length; i \u003C ii; i++) {\\n      this.glyphs[i].scale(factors[i]);\\n    }\\n  }\\n}\\n\\nclass Glyph {\\n  constructor({ header = null, simple = null, composites = null }) {\\n    this.header = header;\\n    this.simple = simple;\\n    this.composites = composites;\\n  }\\n\\n  static parse(pos, glyf) {\\n    const [read, header] = GlyphHeader.parse(pos, glyf);\\n    pos += read;\\n\\n    if (header.numberOfContours \u003C 0) {\\n      \u002F\u002F Composite glyph.\\n      const composites = [];\\n      while (true) {\\n        const [n, composite] = CompositeGlyph.parse(pos, glyf);\\n        pos += n;\\n        composites.push(composite);\\n        if (!(composite.flags & MORE_COMPONENTS)) {\\n          break;\\n        }\\n      }\\n\\n      return new Glyph({ header, composites });\\n    }\\n\\n    const simple = SimpleGlyph.parse(pos, glyf, header.numberOfContours);\\n\\n    return new Glyph({ header, simple });\\n  }\\n\\n  getSize() {\\n    if (!this.header) {\\n      return 0;\\n    }\\n    const size = this.simple\\n      ? this.simple.getSize()\\n      : Math.sumPrecise(this.composites.map(c => c.getSize()));\\n    return this.header.getSize() + size;\\n  }\\n\\n  write(pos, buf) {\\n    if (!this.header) {\\n      return 0;\\n    }\\n\\n    const spos = pos;\\n    pos += this.header.write(pos, buf);\\n    if (this.simple) {\\n      pos += this.simple.write(pos, buf);\\n    } else {\\n      for (const composite of this.composites) {\\n        pos += composite.write(pos, buf);\\n      }\\n    }\\n\\n    return pos - spos;\\n  }\\n\\n  scale(factor) {\\n    if (!this.header) {\\n      return;\\n    }\\n\\n    const xMiddle = (this.header.xMin + this.header.xMax) \u002F 2;\\n    this.header.scale(xMiddle, factor);\\n    if (this.simple) {\\n      this.simple.scale(xMiddle, factor);\\n    } else {\\n      for (const composite of this.composites) {\\n        composite.scale(xMiddle, factor);\\n      }\\n    }\\n  }\\n}\\n\\nclass GlyphHeader {\\n  constructor({ numberOfContours, xMin, yMin, xMax, yMax }) {\\n    this.numberOfContours = numberOfContours;\\n    this.xMin = xMin;\\n    this.yMin = yMin;\\n    this.xMax = xMax;\\n    this.yMax = yMax;\\n  }\\n\\n  static parse(pos, glyf) {\\n    return [\\n      10,\\n      new GlyphHeader({\\n        numberOfContours: glyf.getInt16(pos),\\n        xMin: glyf.getInt16(pos + 2),\\n        yMin: glyf.getInt16(pos + 4),\\n        xMax: glyf.getInt16(pos + 6),\\n        yMax: glyf.getInt16(pos + 8),\\n      }),\\n    ];\\n  }\\n\\n  getSize() {\\n    return 10;\\n  }\\n\\n  write(pos, buf) {\\n    buf.setInt16(pos, this.numberOfContours);\\n    buf.setInt16(pos + 2, this.xMin);\\n    buf.setInt16(pos + 4, this.yMin);\\n    buf.setInt16(pos + 6, this.xMax);\\n    buf.setInt16(pos + 8, this.yMax);\\n\\n    return 10;\\n  }\\n\\n  scale(x, factor) {\\n    this.xMin = Math.round(x + (this.xMin - x) * factor);\\n    this.xMax = Math.round(x + (this.xMax - x) * factor);\\n  }\\n}\\n\\nclass Contour {\\n  constructor({ flags, xCoordinates, yCoordinates }) {\\n    this.xCoordinates = xCoordinates;\\n    this.yCoordinates = yCoordinates;\\n    this.flags = flags;\\n  }\\n}\\n\\nclass SimpleGlyph {\\n  constructor({ contours, instructions }) {\\n    this.contours = contours;\\n    this.instructions = instructions;\\n  }\\n\\n  static parse(pos, glyf, numberOfContours) {\\n    const endPtsOfContours = [];\\n    for (let i = 0; i \u003C numberOfContours; i++) {\\n      const endPt = glyf.getUint16(pos);\\n      pos += 2;\\n      endPtsOfContours.push(endPt);\\n    }\\n    const numberOfPt = endPtsOfContours[numberOfContours - 1] + 1;\\n    const instructionLength = glyf.getUint16(pos);\\n    pos += 2;\\n    const instructions = new Uint8Array(glyf).slice(\\n      pos,\\n      pos + instructionLength\\n    );\\n    pos += instructionLength;\\n\\n    const flags = [];\\n    for (let i = 0; i \u003C numberOfPt; pos++, i++) {\\n      let flag = glyf.getUint8(pos);\\n      flags.push(flag);\\n      if (flag & REPEAT_FLAG) {\\n        const count = glyf.getUint8(++pos);\\n        flag ^= REPEAT_FLAG;\\n        for (let m = 0; m \u003C count; m++) {\\n          flags.push(flag);\\n        }\\n        i += count;\\n      }\\n    }\\n\\n    const allXCoordinates = [];\\n    let xCoordinates = [];\\n    let yCoordinates = [];\\n    let pointFlags = [];\\n    const contours = [];\\n    let endPtsOfContoursIndex = 0;\\n    let lastCoordinate = 0;\\n\\n    \u002F\u002F Get x coordinates.\\n    for (let i = 0; i \u003C numberOfPt; i++) {\\n      const flag = flags[i];\\n      if (flag & X_SHORT_VECTOR) {\\n        \u002F\u002F 8-bits unsigned value.\\n        const x = glyf.getUint8(pos++);\\n        lastCoordinate += flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR ? x : -x;\\n        xCoordinates.push(lastCoordinate);\\n      } else if (flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR) {\\n        \u002F\u002F IS_SAME.\\n        xCoordinates.push(lastCoordinate);\\n      } else {\\n        lastCoordinate += glyf.getInt16(pos);\\n        pos += 2;\\n        xCoordinates.push(lastCoordinate);\\n      }\\n\\n      if (endPtsOfContours[endPtsOfContoursIndex] === i) {\\n        \u002F\u002F Next entry is the first one of a new contour.\\n        endPtsOfContoursIndex++;\\n        allXCoordinates.push(xCoordinates);\\n        xCoordinates = [];\\n      }\\n    }\\n\\n    lastCoordinate = 0;\\n    endPtsOfContoursIndex = 0;\\n    for (let i = 0; i \u003C numberOfPt; i++) {\\n      const flag = flags[i];\\n      if (flag & Y_SHORT_VECTOR) {\\n        \u002F\u002F 8-bits unsigned value.\\n        const y = glyf.getUint8(pos++);\\n        lastCoordinate += flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR ? y : -y;\\n        yCoordinates.push(lastCoordinate);\\n      } else if (flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR) {\\n        \u002F\u002F IS_SAME.\\n        yCoordinates.push(lastCoordinate);\\n      } else {\\n        lastCoordinate += glyf.getInt16(pos);\\n        pos += 2;\\n        yCoordinates.push(lastCoordinate);\\n      }\\n\\n      pointFlags.push((flag & ON_CURVE_POINT) | (flag & OVERLAP_SIMPLE));\\n\\n      if (endPtsOfContours[endPtsOfContoursIndex] === i) {\\n        \u002F\u002F Next entry is the first one of a new contour.\\n        xCoordinates = allXCoordinates[endPtsOfContoursIndex];\\n        endPtsOfContoursIndex++;\\n        contours.push(\\n          new Contour({\\n            flags: pointFlags,\\n            xCoordinates,\\n            yCoordinates,\\n          })\\n        );\\n        yCoordinates = [];\\n        pointFlags = [];\\n      }\\n    }\\n\\n    return new SimpleGlyph({\\n      contours,\\n      instructions,\\n    });\\n  }\\n\\n  getSize() {\\n    let size = this.contours.length * 2 + 2 + this.instructions.length;\\n    let lastX = 0;\\n    let lastY = 0;\\n    for (const contour of this.contours) {\\n      size += contour.flags.length;\\n      for (let i = 0, ii = contour.xCoordinates.length; i \u003C ii; i++) {\\n        const x = contour.xCoordinates[i];\\n        const y = contour.yCoordinates[i];\\n        let abs = Math.abs(x - lastX);\\n        if (abs > 255) {\\n          size += 2;\\n        } else if (abs > 0) {\\n          size += 1;\\n        }\\n        lastX = x;\\n\\n        abs = Math.abs(y - lastY);\\n        if (abs > 255) {\\n          size += 2;\\n        } else if (abs > 0) {\\n          size += 1;\\n        }\\n        lastY = y;\\n      }\\n    }\\n    return size;\\n  }\\n\\n  write(pos, buf) {\\n    const spos = pos;\\n    const xCoordinates = [];\\n    const yCoordinates = [];\\n    const flags = [];\\n    let lastX = 0;\\n    let lastY = 0;\\n\\n    for (const contour of this.contours) {\\n      for (let i = 0, ii = contour.xCoordinates.length; i \u003C ii; i++) {\\n        let flag = contour.flags[i];\\n        const x = contour.xCoordinates[i];\\n        let delta = x - lastX;\\n        if (delta === 0) {\\n          flag |= X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR;\\n          xCoordinates.push(0);\\n        } else {\\n          const abs = Math.abs(delta);\\n          if (abs \u003C= 255) {\\n            flag |=\\n              delta >= 0\\n                ? X_SHORT_VECTOR | X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR\\n                : X_SHORT_VECTOR;\\n            xCoordinates.push(abs);\\n          } else {\\n            xCoordinates.push(delta);\\n          }\\n        }\\n        lastX = x;\\n\\n        const y = contour.yCoordinates[i];\\n        delta = y - lastY;\\n        if (delta === 0) {\\n          flag |= Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR;\\n          yCoordinates.push(0);\\n        } else {\\n          const abs = Math.abs(delta);\\n          if (abs \u003C= 255) {\\n            flag |=\\n              delta >= 0\\n                ? Y_SHORT_VECTOR | Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR\\n                : Y_SHORT_VECTOR;\\n            yCoordinates.push(abs);\\n          } else {\\n            yCoordinates.push(delta);\\n          }\\n        }\\n        lastY = y;\\n\\n        flags.push(flag);\\n      }\\n\\n      \u002F\u002F Write endPtsOfContours entry.\\n      buf.setUint16(pos, xCoordinates.length - 1);\\n      pos += 2;\\n    }\\n\\n    \u002F\u002F Write instructionLength.\\n    buf.setUint16(pos, this.instructions.length);\\n    pos += 2;\\n    if (this.instructions.length) {\\n      \u002F\u002F Write instructions.\\n      new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(\\n        this.instructions,\\n        pos\\n      );\\n      pos += this.instructions.length;\\n    }\\n\\n    \u002F\u002F Write flags.\\n    for (const flag of flags) {\\n      buf.setUint8(pos++, flag);\\n    }\\n\\n    \u002F\u002F Write xCoordinates.\\n    for (let i = 0, ii = xCoordinates.length; i \u003C ii; i++) {\\n      const x = xCoordinates[i];\\n      const flag = flags[i];\\n      if (flag & X_SHORT_VECTOR) {\\n        buf.setUint8(pos++, x);\\n      } else if (!(flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR)) {\\n        buf.setInt16(pos, x);\\n        pos += 2;\\n      }\\n    }\\n\\n    \u002F\u002F Write yCoordinates.\\n    for (let i = 0, ii = yCoordinates.length; i \u003C ii; i++) {\\n      const y = yCoordinates[i];\\n      const flag = flags[i];\\n      if (flag & Y_SHORT_VECTOR) {\\n        buf.setUint8(pos++, y);\\n      } else if (!(flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR)) {\\n        buf.setInt16(pos, y);\\n        pos += 2;\\n      }\\n    }\\n\\n    return pos - spos;\\n  }\\n\\n  scale(x, factor) {\\n    for (const contour of this.contours) {\\n      if (contour.xCoordinates.length === 0) {\\n        continue;\\n      }\\n\\n      for (let i = 0, ii = contour.xCoordinates.length; i \u003C ii; i++) {\\n        contour.xCoordinates[i] = Math.round(\\n          x + (contour.xCoordinates[i] - x) * factor\\n        );\\n      }\\n    }\\n  }\\n}\\n\\nclass CompositeGlyph {\\n  constructor({\\n    flags,\\n    glyphIndex,\\n    argument1,\\n    argument2,\\n    transf,\\n    instructions,\\n  }) {\\n    this.flags = flags;\\n    this.glyphIndex = glyphIndex;\\n    this.argument1 = argument1;\\n    this.argument2 = argument2;\\n    this.transf = transf;\\n    this.instructions = instructions;\\n  }\\n\\n  static parse(pos, glyf) {\\n    const spos = pos;\\n    const transf = [];\\n    let flags = glyf.getUint16(pos);\\n    const glyphIndex = glyf.getUint16(pos + 2);\\n    pos += 4;\\n\\n    let argument1, argument2;\\n    if (flags & ARG_1_AND_2_ARE_WORDS) {\\n      if (flags & ARGS_ARE_XY_VALUES) {\\n        argument1 = glyf.getInt16(pos);\\n        argument2 = glyf.getInt16(pos + 2);\\n      } else {\\n        argument1 = glyf.getUint16(pos);\\n        argument2 = glyf.getUint16(pos + 2);\\n      }\\n      pos += 4;\\n      flags ^= ARG_1_AND_2_ARE_WORDS;\\n    } else {\\n      if (flags & ARGS_ARE_XY_VALUES) {\\n        argument1 = glyf.getInt8(pos);\\n        argument2 = glyf.getInt8(pos + 1);\\n      } else {\\n        argument1 = glyf.getUint8(pos);\\n        argument2 = glyf.getUint8(pos + 1);\\n      }\\n      pos += 2;\\n    }\\n\\n    if (flags & WE_HAVE_A_SCALE) {\\n      \u002F\u002F Single F2.14.\\n      transf.push(glyf.getUint16(pos));\\n      pos += 2;\\n    } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\\n      \u002F\u002F Two F2.14.\\n      transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2));\\n      pos += 4;\\n    } else if (flags & WE_HAVE_A_TWO_BY_TWO) {\\n      \u002F\u002F Four F2.14.\\n      transf.push(\\n        glyf.getUint16(pos),\\n        glyf.getUint16(pos + 2),\\n        glyf.getUint16(pos + 4),\\n        glyf.getUint16(pos + 6)\\n      );\\n      pos += 8;\\n    }\\n\\n    let instructions = null;\\n    if (flags & WE_HAVE_INSTRUCTIONS) {\\n      const instructionLength = glyf.getUint16(pos);\\n      pos += 2;\\n      instructions = new Uint8Array(glyf).slice(pos, pos + instructionLength);\\n      pos += instructionLength;\\n    }\\n\\n    return [\\n      pos - spos,\\n      new CompositeGlyph({\\n        flags,\\n        glyphIndex,\\n        argument1,\\n        argument2,\\n        transf,\\n        instructions,\\n      }),\\n    ];\\n  }\\n\\n  getSize() {\\n    let size = 2 + 2 + this.transf.length * 2;\\n    if (this.flags & WE_HAVE_INSTRUCTIONS) {\\n      size += 2 + this.instructions.length;\\n    }\\n\\n    size += 2;\\n    if (this.flags & 2) {\\n      \u002F\u002F Arguments are signed.\\n      if (\\n        !(\\n          this.argument1 >= -128 &&\\n          this.argument1 \u003C= 127 &&\\n          this.argument2 >= -128 &&\\n          this.argument2 \u003C= 127\\n        )\\n      ) {\\n        size += 2;\\n      }\\n    } else if (\\n      !(\\n        this.argument1 >= 0 &&\\n        this.argument1 \u003C= 255 &&\\n        this.argument2 >= 0 &&\\n        this.argument2 \u003C= 255\\n      )\\n    ) {\\n      size += 2;\\n    }\\n\\n    return size;\\n  }\\n\\n  write(pos, buf) {\\n    const spos = pos;\\n\\n    if (this.flags & ARGS_ARE_XY_VALUES) {\\n      \u002F\u002F Arguments are signed.\\n      if (\\n        !(\\n          this.argument1 >= -128 &&\\n          this.argument1 \u003C= 127 &&\\n          this.argument2 >= -128 &&\\n          this.argument2 \u003C= 127\\n        )\\n      ) {\\n        this.flags |= ARG_1_AND_2_ARE_WORDS;\\n      }\\n    } else if (\\n      !(\\n        this.argument1 >= 0 &&\\n        this.argument1 \u003C= 255 &&\\n        this.argument2 >= 0 &&\\n        this.argument2 \u003C= 255\\n      )\\n    ) {\\n      this.flags |= ARG_1_AND_2_ARE_WORDS;\\n    }\\n\\n    buf.setUint16(pos, this.flags);\\n    buf.setUint16(pos + 2, this.glyphIndex);\\n    pos += 4;\\n\\n    if (this.flags & ARG_1_AND_2_ARE_WORDS) {\\n      if (this.flags & ARGS_ARE_XY_VALUES) {\\n        buf.setInt16(pos, this.argument1);\\n        buf.setInt16(pos + 2, this.argument2);\\n      } else {\\n        buf.setUint16(pos, this.argument1);\\n        buf.setUint16(pos + 2, this.argument2);\\n      }\\n      pos += 4;\\n    } else {\\n      buf.setUint8(pos, this.argument1);\\n      buf.setUint8(pos + 1, this.argument2);\\n      pos += 2;\\n    }\\n\\n    if (this.flags & WE_HAVE_INSTRUCTIONS) {\\n      buf.setUint16(pos, this.instructions.length);\\n      pos += 2;\\n      \u002F\u002F Write instructions.\\n      if (this.instructions.length) {\\n        new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(\\n          this.instructions,\\n          pos\\n        );\\n        pos += this.instructions.length;\\n      }\\n    }\\n\\n    return pos - spos;\\n  }\\n\\n  scale(x, factor) {}\\n}\\n\\nexport { GlyfTable };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { readUint32 } from \\\".\u002Fcore_utils.js\\\";\\nimport { string32 } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nfunction writeInt16(dest, offset, num) {\\n  dest[offset] = (num >> 8) & 0xff;\\n  dest[offset + 1] = num & 0xff;\\n}\\n\\nfunction writeInt32(dest, offset, num) {\\n  dest[offset] = (num >> 24) & 0xff;\\n  dest[offset + 1] = (num >> 16) & 0xff;\\n  dest[offset + 2] = (num >> 8) & 0xff;\\n  dest[offset + 3] = num & 0xff;\\n}\\n\\nfunction writeData(dest, offset, data) {\\n  if (data instanceof Uint8Array) {\\n    dest.set(data, offset);\\n  } else if (typeof data === \\\"string\\\") {\\n    for (let i = 0, ii = data.length; i \u003C ii; i++) {\\n      dest[offset++] = data.charCodeAt(i) & 0xff;\\n    }\\n  } else {\\n    \u002F\u002F treating everything else as array\\n    for (const num of data) {\\n      dest[offset++] = num & 0xff;\\n    }\\n  }\\n}\\n\\nconst OTF_HEADER_SIZE = 12;\\nconst OTF_TABLE_ENTRY_SIZE = 16;\\n\\nclass OpenTypeFileBuilder {\\n  constructor(sfnt) {\\n    this.sfnt = sfnt;\\n    this.tables = Object.create(null);\\n  }\\n\\n  static getSearchParams(entriesCount, entrySize) {\\n    let maxPower2 = 1,\\n      log2 = 0;\\n    while ((maxPower2 ^ entriesCount) > maxPower2) {\\n      maxPower2 \u003C\u003C= 1;\\n      log2++;\\n    }\\n    const searchRange = maxPower2 * entrySize;\\n    return {\\n      range: searchRange,\\n      entry: log2,\\n      rangeShift: entrySize * entriesCount - searchRange,\\n    };\\n  }\\n\\n  toArray() {\\n    let sfnt = this.sfnt;\\n\\n    \u002F\u002F Tables needs to be written by ascendant alphabetic order\\n    const tables = this.tables;\\n    const tablesNames = Object.keys(tables);\\n    tablesNames.sort();\\n    const numTables = tablesNames.length;\\n\\n    let i, j, jj, table, tableName;\\n    \u002F\u002F layout the tables data\\n    let offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE;\\n    const tableOffsets = [offset];\\n    for (i = 0; i \u003C numTables; i++) {\\n      table = tables[tablesNames[i]];\\n      const paddedLength = ((table.length + 3) & ~3) >>> 0;\\n      offset += paddedLength;\\n      tableOffsets.push(offset);\\n    }\\n\\n    const file = new Uint8Array(offset);\\n    \u002F\u002F write the table data first (mostly for checksum)\\n    for (i = 0; i \u003C numTables; i++) {\\n      table = tables[tablesNames[i]];\\n      writeData(file, tableOffsets[i], table);\\n    }\\n\\n    \u002F\u002F sfnt version (4 bytes)\\n    if (sfnt === \\\"true\\\") {\\n      \u002F\u002F Windows hates the Mac TrueType sfnt version number\\n      sfnt = string32(0x00010000);\\n    }\\n    file[0] = sfnt.charCodeAt(0) & 0xff;\\n    file[1] = sfnt.charCodeAt(1) & 0xff;\\n    file[2] = sfnt.charCodeAt(2) & 0xff;\\n    file[3] = sfnt.charCodeAt(3) & 0xff;\\n\\n    \u002F\u002F numTables (2 bytes)\\n    writeInt16(file, 4, numTables);\\n\\n    const searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16);\\n\\n    \u002F\u002F searchRange (2 bytes)\\n    writeInt16(file, 6, searchParams.range);\\n    \u002F\u002F entrySelector (2 bytes)\\n    writeInt16(file, 8, searchParams.entry);\\n    \u002F\u002F rangeShift (2 bytes)\\n    writeInt16(file, 10, searchParams.rangeShift);\\n\\n    offset = OTF_HEADER_SIZE;\\n    \u002F\u002F writing table entries\\n    for (i = 0; i \u003C numTables; i++) {\\n      tableName = tablesNames[i];\\n      file[offset] = tableName.charCodeAt(0) & 0xff;\\n      file[offset + 1] = tableName.charCodeAt(1) & 0xff;\\n      file[offset + 2] = tableName.charCodeAt(2) & 0xff;\\n      file[offset + 3] = tableName.charCodeAt(3) & 0xff;\\n\\n      \u002F\u002F checksum\\n      let checksum = 0;\\n      for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j \u003C jj; j += 4) {\\n        const quad = readUint32(file, j);\\n        checksum = (checksum + quad) >>> 0;\\n      }\\n      writeInt32(file, offset + 4, checksum);\\n\\n      \u002F\u002F offset\\n      writeInt32(file, offset + 8, tableOffsets[i]);\\n      \u002F\u002F length\\n      writeInt32(file, offset + 12, tables[tableName].length);\\n\\n      offset += OTF_TABLE_ENTRY_SIZE;\\n    }\\n    return file;\\n  }\\n\\n  addTable(tag, data) {\\n    if (tag in this.tables) {\\n      throw new Error(\\\"Table \\\" + tag + \\\" already exists\\\");\\n    }\\n    this.tables[tag] = data;\\n  }\\n}\\n\\nexport { OpenTypeFileBuilder };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { getEncoding } from \\\".\u002Fencodings.js\\\";\\nimport { isWhiteSpace } from \\\".\u002Fcore_utils.js\\\";\\nimport { Stream } from \\\".\u002Fstream.js\\\";\\nimport { warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\n\u002F\u002F Hinting is currently disabled due to unknown problems on windows\\n\u002F\u002F in tracemonkey and various other pdfs with type1 fonts.\\nconst HINTING_ENABLED = false;\\n\\nconst COMMAND_MAP = {\\n  hstem: [1],\\n  vstem: [3],\\n  vmoveto: [4],\\n  rlineto: [5],\\n  hlineto: [6],\\n  vlineto: [7],\\n  rrcurveto: [8],\\n  callsubr: [10],\\n  flex: [12, 35],\\n  drop: [12, 18],\\n  endchar: [14],\\n  rmoveto: [21],\\n  hmoveto: [22],\\n  vhcurveto: [30],\\n  hvcurveto: [31],\\n};\\n\\n\u002F**\\n * CharStrings are encoded following the CharString Encoding sequence\\n * describe in Chapter 6 of the \\\"Adobe Type1 Font Format\\\" specification.\\n * The value in a byte indicates a command, a number, or subsequent bytes\\n * that are to be interpreted in a special way.\\n *\\n * CharString Number Encoding:\\n *  A CharString byte containing the values from 32 through 255 inclusive\\n *  indicate an integer. These values are decoded in four ranges.\\n *\\n * 1. A CharString byte containing a value, v, between 32 and 246 inclusive,\\n * indicate the integer v - 139. Thus, the integer values from -107 through\\n * 107 inclusive may be encoded in single byte.\\n *\\n * 2. A CharString byte containing a value, v, between 247 and 250 inclusive,\\n * indicates an integer involving the next byte, w, according to the formula:\\n * [(v - 247) x 256] + w + 108\\n *\\n * 3. A CharString byte containing a value, v, between 251 and 254 inclusive,\\n * indicates an integer involving the next byte, w, according to the formula:\\n * -[(v - 251) * 256] - w - 108\\n *\\n * 4. A CharString containing the value 255 indicates that the next 4 bytes\\n * are a two complement signed integer. The first of these bytes contains the\\n * highest order bits, the second byte contains the next higher order bits\\n * and the fourth byte contain the lowest order bits.\\n *\\n *\\n * CharString Command Encoding:\\n *  CharStrings commands are encoded in 1 or 2 bytes.\\n *\\n *  Single byte commands are encoded in 1 byte that contains a value between\\n *  0 and 31 inclusive.\\n *  If a command byte contains the value 12, then the value in the next byte\\n *  indicates a command. This \\\"escape\\\" mechanism allows many extra commands\\n *  to be encoded and this encoding technique helps to minimize the length of\\n *  the charStrings.\\n *\u002F\\nclass Type1CharString {\\n  constructor() {\\n    this.width = 0;\\n    this.lsb = 0;\\n    this.flexing = false;\\n    this.output = [];\\n    this.stack = [];\\n  }\\n\\n  convert(encoded, subrs, seacAnalysisEnabled) {\\n    const count = encoded.length;\\n    let error = false;\\n    let wx, sbx, subrNumber;\\n    for (let i = 0; i \u003C count; i++) {\\n      let value = encoded[i];\\n      if (value \u003C 32) {\\n        if (value === 12) {\\n          value = (value \u003C\u003C 8) + encoded[++i];\\n        }\\n        switch (value) {\\n          case 1: \u002F\u002F hstem\\n            if (!HINTING_ENABLED) {\\n              this.stack = [];\\n              break;\\n            }\\n            error = this.executeCommand(2, COMMAND_MAP.hstem);\\n            break;\\n          case 3: \u002F\u002F vstem\\n            if (!HINTING_ENABLED) {\\n              this.stack = [];\\n              break;\\n            }\\n            error = this.executeCommand(2, COMMAND_MAP.vstem);\\n            break;\\n          case 4: \u002F\u002F vmoveto\\n            if (this.flexing) {\\n              if (this.stack.length \u003C 1) {\\n                error = true;\\n                break;\\n              }\\n              \u002F\u002F Add the dx for flex and but also swap the values so they are\\n              \u002F\u002F the right order.\\n              const dy = this.stack.pop();\\n              this.stack.push(0, dy);\\n              break;\\n            }\\n            error = this.executeCommand(1, COMMAND_MAP.vmoveto);\\n            break;\\n          case 5: \u002F\u002F rlineto\\n            error = this.executeCommand(2, COMMAND_MAP.rlineto);\\n            break;\\n          case 6: \u002F\u002F hlineto\\n            error = this.executeCommand(1, COMMAND_MAP.hlineto);\\n            break;\\n          case 7: \u002F\u002F vlineto\\n            error = this.executeCommand(1, COMMAND_MAP.vlineto);\\n            break;\\n          case 8: \u002F\u002F rrcurveto\\n            error = this.executeCommand(6, COMMAND_MAP.rrcurveto);\\n            break;\\n          case 9: \u002F\u002F closepath\\n            \u002F\u002F closepath is a Type1 command that does not take argument and is\\n            \u002F\u002F useless in Type2 and it can simply be ignored.\\n            this.stack = [];\\n            break;\\n          case 10: \u002F\u002F callsubr\\n            if (this.stack.length \u003C 1) {\\n              error = true;\\n              break;\\n            }\\n            subrNumber = this.stack.pop();\\n            if (!subrs[subrNumber]) {\\n              error = true;\\n              break;\\n            }\\n            error = this.convert(subrs[subrNumber], subrs, seacAnalysisEnabled);\\n            break;\\n          case 11: \u002F\u002F return\\n            return error;\\n          case 13: \u002F\u002F hsbw\\n            if (this.stack.length \u003C 2) {\\n              error = true;\\n              break;\\n            }\\n            \u002F\u002F To convert to type2 we have to move the width value to the\\n            \u002F\u002F first part of the charstring and then use hmoveto with lsb.\\n            wx = this.stack.pop();\\n            sbx = this.stack.pop();\\n            this.lsb = sbx;\\n            this.width = wx;\\n            this.stack.push(wx, sbx);\\n            error = this.executeCommand(2, COMMAND_MAP.hmoveto);\\n            break;\\n          case 14: \u002F\u002F endchar\\n            this.output.push(COMMAND_MAP.endchar[0]);\\n            break;\\n          case 21: \u002F\u002F rmoveto\\n            if (this.flexing) {\\n              break;\\n            }\\n            error = this.executeCommand(2, COMMAND_MAP.rmoveto);\\n            break;\\n          case 22: \u002F\u002F hmoveto\\n            if (this.flexing) {\\n              \u002F\u002F Add the dy for flex.\\n              this.stack.push(0);\\n              break;\\n            }\\n            error = this.executeCommand(1, COMMAND_MAP.hmoveto);\\n            break;\\n          case 30: \u002F\u002F vhcurveto\\n            error = this.executeCommand(4, COMMAND_MAP.vhcurveto);\\n            break;\\n          case 31: \u002F\u002F hvcurveto\\n            error = this.executeCommand(4, COMMAND_MAP.hvcurveto);\\n            break;\\n          case (12 \u003C\u003C 8) + 0: \u002F\u002F dotsection\\n            \u002F\u002F dotsection is a Type1 command to specify some hinting feature\\n            \u002F\u002F for dots that do not take a parameter and it can safely be\\n            \u002F\u002F ignored for Type2.\\n            this.stack = [];\\n            break;\\n          case (12 \u003C\u003C 8) + 1: \u002F\u002F vstem3\\n            if (!HINTING_ENABLED) {\\n              this.stack = [];\\n              break;\\n            }\\n            \u002F\u002F [vh]stem3 are Type1 only and Type2 supports [vh]stem with\\n            \u002F\u002F multiple parameters, so instead of returning [vh]stem3 take a\\n            \u002F\u002F shortcut and return [vhstem] instead.\\n            error = this.executeCommand(2, COMMAND_MAP.vstem);\\n            break;\\n          case (12 \u003C\u003C 8) + 2: \u002F\u002F hstem3\\n            if (!HINTING_ENABLED) {\\n              this.stack = [];\\n              break;\\n            }\\n            \u002F\u002F See vstem3.\\n            error = this.executeCommand(2, COMMAND_MAP.hstem);\\n            break;\\n          case (12 \u003C\u003C 8) + 6: \u002F\u002F seac\\n            \u002F\u002F seac is like type 2's special endchar but it doesn't use the\\n            \u002F\u002F first argument asb, so remove it.\\n            if (seacAnalysisEnabled) {\\n              const asb = this.stack.at(-5);\\n              this.seac = this.stack.splice(-4, 4);\\n              this.seac[0] += this.lsb - asb;\\n              error = this.executeCommand(0, COMMAND_MAP.endchar);\\n            } else {\\n              error = this.executeCommand(4, COMMAND_MAP.endchar);\\n            }\\n            break;\\n          case (12 \u003C\u003C 8) + 7: \u002F\u002F sbw\\n            if (this.stack.length \u003C 4) {\\n              error = true;\\n              break;\\n            }\\n            \u002F\u002F To convert to type2 we have to move the width value to the\\n            \u002F\u002F first part of the charstring and then use rmoveto with\\n            \u002F\u002F (dx, dy). The height argument will not be used for vmtx and\\n            \u002F\u002F vhea tables reconstruction -- ignoring it.\\n            this.stack.pop(); \u002F\u002F wy\\n            wx = this.stack.pop();\\n            const sby = this.stack.pop();\\n            sbx = this.stack.pop();\\n            this.lsb = sbx;\\n            this.width = wx;\\n            this.stack.push(wx, sbx, sby);\\n            error = this.executeCommand(3, COMMAND_MAP.rmoveto);\\n            break;\\n          case (12 \u003C\u003C 8) + 12: \u002F\u002F div\\n            if (this.stack.length \u003C 2) {\\n              error = true;\\n              break;\\n            }\\n            const num2 = this.stack.pop();\\n            const num1 = this.stack.pop();\\n            this.stack.push(num1 \u002F num2);\\n            break;\\n          case (12 \u003C\u003C 8) + 16: \u002F\u002F callothersubr\\n            if (this.stack.length \u003C 2) {\\n              error = true;\\n              break;\\n            }\\n            subrNumber = this.stack.pop();\\n            const numArgs = this.stack.pop();\\n            if (subrNumber === 0 && numArgs === 3) {\\n              const flexArgs = this.stack.splice(-17, 17);\\n              this.stack.push(\\n                flexArgs[2] + flexArgs[0], \u002F\u002F bcp1x + rpx\\n                flexArgs[3] + flexArgs[1], \u002F\u002F bcp1y + rpy\\n                flexArgs[4], \u002F\u002F bcp2x\\n                flexArgs[5], \u002F\u002F bcp2y\\n                flexArgs[6], \u002F\u002F p2x\\n                flexArgs[7], \u002F\u002F p2y\\n                flexArgs[8], \u002F\u002F bcp3x\\n                flexArgs[9], \u002F\u002F bcp3y\\n                flexArgs[10], \u002F\u002F bcp4x\\n                flexArgs[11], \u002F\u002F bcp4y\\n                flexArgs[12], \u002F\u002F p3x\\n                flexArgs[13], \u002F\u002F p3y\\n                flexArgs[14] \u002F\u002F flexDepth\\n                \u002F\u002F 15 = finalx unused by flex\\n                \u002F\u002F 16 = finaly unused by flex\\n              );\\n              error = this.executeCommand(13, COMMAND_MAP.flex, true);\\n              this.flexing = false;\\n              this.stack.push(flexArgs[15], flexArgs[16]);\\n            } else if (subrNumber === 1 && numArgs === 0) {\\n              this.flexing = true;\\n            }\\n            break;\\n          case (12 \u003C\u003C 8) + 17: \u002F\u002F pop\\n            \u002F\u002F Ignore this since it is only used with othersubr.\\n            break;\\n          case (12 \u003C\u003C 8) + 33: \u002F\u002F setcurrentpoint\\n            \u002F\u002F Ignore for now.\\n            this.stack = [];\\n            break;\\n          default:\\n            warn('Unknown type 1 charstring command of \\\"' + value + '\\\"');\\n            break;\\n        }\\n        if (error) {\\n          break;\\n        }\\n        continue;\\n      } else if (value \u003C= 246) {\\n        value -= 139;\\n      } else if (value \u003C= 250) {\\n        value = (value - 247) * 256 + encoded[++i] + 108;\\n      } else if (value \u003C= 254) {\\n        value = -((value - 251) * 256) - encoded[++i] - 108;\\n      } else {\\n        value =\\n          ((encoded[++i] & 0xff) \u003C\u003C 24) |\\n          ((encoded[++i] & 0xff) \u003C\u003C 16) |\\n          ((encoded[++i] & 0xff) \u003C\u003C 8) |\\n          ((encoded[++i] & 0xff) \u003C\u003C 0);\\n      }\\n      this.stack.push(value);\\n    }\\n    return error;\\n  }\\n\\n  executeCommand(howManyArgs, command, keepStack) {\\n    const stackLength = this.stack.length;\\n    if (howManyArgs > stackLength) {\\n      return true;\\n    }\\n    const start = stackLength - howManyArgs;\\n    for (let i = start; i \u003C stackLength; i++) {\\n      let value = this.stack[i];\\n      if (Number.isInteger(value)) {\\n        this.output.push(28, (value >> 8) & 0xff, value & 0xff);\\n      } else {\\n        \u002F\u002F fixed point\\n        value = (65536 * value) | 0;\\n        this.output.push(\\n          255,\\n          (value >> 24) & 0xff,\\n          (value >> 16) & 0xff,\\n          (value >> 8) & 0xff,\\n          value & 0xff\\n        );\\n      }\\n    }\\n    this.output.push(...command);\\n    if (keepStack) {\\n      this.stack.splice(start, howManyArgs);\\n    } else {\\n      this.stack.length = 0;\\n    }\\n    return false;\\n  }\\n}\\n\\n\u002F**\\n * Decrypt a Sequence of Ciphertext Bytes to Produce the Original Sequence\\n * of Plaintext Bytes. The function takes a key as a parameter which can be\\n * for decrypting the eexec block or for decoding charStrings.\\n *\u002F\\nconst EEXEC_ENCRYPT_KEY = 55665;\\nconst CHAR_STRS_ENCRYPT_KEY = 4330;\\n\\nfunction isHexDigit(code) {\\n  return (\\n    (code >= 48 && code \u003C= 57) || \u002F\u002F '0'-'9'\\n    (code >= 65 && code \u003C= 70) || \u002F\u002F 'A'-'F'\\n    (code >= 97 && code \u003C= 102) \u002F\u002F 'a'-'f'\\n  );\\n}\\n\\nfunction decrypt(data, key, discardNumber) {\\n  if (discardNumber >= data.length) {\\n    return new Uint8Array(0);\\n  }\\n  const c1 = 52845,\\n    c2 = 22719;\\n  let r = key | 0,\\n    i,\\n    j;\\n  for (i = 0; i \u003C discardNumber; i++) {\\n    r = ((data[i] + r) * c1 + c2) & ((1 \u003C\u003C 16) - 1);\\n  }\\n  const count = data.length - discardNumber;\\n  const decrypted = new Uint8Array(count);\\n  for (i = discardNumber, j = 0; j \u003C count; i++, j++) {\\n    const value = data[i];\\n    decrypted[j] = value ^ (r >> 8);\\n    r = ((value + r) * c1 + c2) & ((1 \u003C\u003C 16) - 1);\\n  }\\n  return decrypted;\\n}\\n\\nfunction decryptAscii(data, key, discardNumber) {\\n  const c1 = 52845,\\n    c2 = 22719;\\n  let r = key | 0;\\n  const count = data.length,\\n    maybeLength = count >>> 1;\\n  const decrypted = new Uint8Array(maybeLength);\\n  let i, j;\\n  for (i = 0, j = 0; i \u003C count; i++) {\\n    const digit1 = data[i];\\n    if (!isHexDigit(digit1)) {\\n      continue;\\n    }\\n    i++;\\n    let digit2;\\n    while (i \u003C count && !isHexDigit((digit2 = data[i]))) {\\n      i++;\\n    }\\n    if (i \u003C count) {\\n      const value = parseInt(String.fromCharCode(digit1, digit2), 16);\\n      decrypted[j++] = value ^ (r >> 8);\\n      r = ((value + r) * c1 + c2) & ((1 \u003C\u003C 16) - 1);\\n    }\\n  }\\n  return decrypted.slice(discardNumber, j);\\n}\\n\\nfunction isSpecial(c) {\\n  return (\\n    c === \u002F* '\u002F' = *\u002F 0x2f ||\\n    c === \u002F* '[' = *\u002F 0x5b ||\\n    c === \u002F* ']' = *\u002F 0x5d ||\\n    c === \u002F* '{' = *\u002F 0x7b ||\\n    c === \u002F* '}' = *\u002F 0x7d ||\\n    c === \u002F* '(' = *\u002F 0x28 ||\\n    c === \u002F* ')' = *\u002F 0x29\\n  );\\n}\\n\\n\u002F**\\n * Type1Parser encapsulate the needed code for parsing a Type1 font program.\\n * Some of its logic depends on the Type2 charstrings structure.\\n * NOTE: This doesn't really parse the font since that would require evaluation\\n *       of PostScript, but it is possible in most cases to extract what we need\\n *       without a full parse.\\n *\u002F\\nclass Type1Parser {\\n  constructor(stream, encrypted, seacAnalysisEnabled) {\\n    if (encrypted) {\\n      const data = stream.getBytes();\\n      const isBinary = !(\\n        (isHexDigit(data[0]) || isWhiteSpace(data[0])) &&\\n        isHexDigit(data[1]) &&\\n        isHexDigit(data[2]) &&\\n        isHexDigit(data[3]) &&\\n        isHexDigit(data[4]) &&\\n        isHexDigit(data[5]) &&\\n        isHexDigit(data[6]) &&\\n        isHexDigit(data[7])\\n      );\\n      stream = new Stream(\\n        isBinary\\n          ? decrypt(data, EEXEC_ENCRYPT_KEY, 4)\\n          : decryptAscii(data, EEXEC_ENCRYPT_KEY, 4)\\n      );\\n    }\\n    this.seacAnalysisEnabled = !!seacAnalysisEnabled;\\n\\n    this.stream = stream;\\n    this.nextChar();\\n  }\\n\\n  readNumberArray() {\\n    this.getToken(); \u002F\u002F read '[' or '{' (arrays can start with either)\\n    const array = [];\\n    while (true) {\\n      const token = this.getToken();\\n      if (token === null || token === \\\"]\\\" || token === \\\"}\\\") {\\n        break;\\n      }\\n      array.push(parseFloat(token || 0));\\n    }\\n    return array;\\n  }\\n\\n  readNumber() {\\n    const token = this.getToken();\\n    return parseFloat(token || 0);\\n  }\\n\\n  readInt() {\\n    \u002F\u002F Use '| 0' to prevent setting a double into length such as the double\\n    \u002F\u002F does not flow into the loop variable.\\n    const token = this.getToken();\\n    return parseInt(token || 0, 10) | 0;\\n  }\\n\\n  readBoolean() {\\n    const token = this.getToken();\\n    \u002F\u002F Use 1 and 0 since that's what type2 charstrings use.\\n    return token === \\\"true\\\" ? 1 : 0;\\n  }\\n\\n  nextChar() {\\n    return (this.currentChar = this.stream.getByte());\\n  }\\n\\n  prevChar() {\\n    this.stream.skip(-2);\\n    return (this.currentChar = this.stream.getByte());\\n  }\\n\\n  getToken() {\\n    \u002F\u002F Eat whitespace and comments.\\n    let comment = false;\\n    let ch = this.currentChar;\\n    while (true) {\\n      if (ch === -1) {\\n        return null;\\n      }\\n\\n      if (comment) {\\n        if (ch === 0x0a || ch === 0x0d) {\\n          comment = false;\\n        }\\n      } else if (ch === \u002F* '%' = *\u002F 0x25) {\\n        comment = true;\\n      } else if (!isWhiteSpace(ch)) {\\n        break;\\n      }\\n      ch = this.nextChar();\\n    }\\n    if (isSpecial(ch)) {\\n      this.nextChar();\\n      return String.fromCharCode(ch);\\n    }\\n    let token = \\\"\\\";\\n    do {\\n      token += String.fromCharCode(ch);\\n      ch = this.nextChar();\\n    } while (ch >= 0 && !isWhiteSpace(ch) && !isSpecial(ch));\\n    return token;\\n  }\\n\\n  readCharStrings(bytes, lenIV) {\\n    if (lenIV === -1) {\\n      \u002F\u002F This isn't in the spec, but Adobe's tx program handles -1\\n      \u002F\u002F as plain text.\\n      return bytes;\\n    }\\n    return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV);\\n  }\\n\\n  \u002F*\\n   * Returns an object containing a Subrs array and a CharStrings\\n   * array extracted from and eexec encrypted block of data\\n   *\u002F\\n  extractFontProgram(properties) {\\n    const stream = this.stream;\\n\\n    const subrs = [],\\n      charstrings = [];\\n    const privateData = Object.create(null);\\n    privateData.lenIV = 4;\\n    const program = {\\n      subrs: [],\\n      charstrings: [],\\n      properties: {\\n        privateData,\\n      },\\n    };\\n    let token, length, data, lenIV;\\n    while ((token = this.getToken()) !== null) {\\n      if (token !== \\\"\u002F\\\") {\\n        continue;\\n      }\\n      token = this.getToken();\\n      switch (token) {\\n        case \\\"CharStrings\\\":\\n          \u002F\u002F The number immediately following CharStrings must be greater or\\n          \u002F\u002F equal to the number of CharStrings.\\n          this.getToken();\\n          this.getToken(); \u002F\u002F read in 'dict'\\n          this.getToken(); \u002F\u002F read in 'dup'\\n          this.getToken(); \u002F\u002F read in 'begin'\\n          while (true) {\\n            token = this.getToken();\\n            if (token === null || token === \\\"end\\\") {\\n              break;\\n            }\\n\\n            if (token !== \\\"\u002F\\\") {\\n              continue;\\n            }\\n            const glyph = this.getToken();\\n            length = this.readInt();\\n            this.getToken(); \u002F\u002F read in 'RD' or '-|'\\n            data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\\n            lenIV = program.properties.privateData.lenIV;\\n            const encoded = this.readCharStrings(data, lenIV);\\n            this.nextChar();\\n            token = this.getToken(); \u002F\u002F read in 'ND' or '|-'\\n            if (token === \\\"noaccess\\\") {\\n              this.getToken(); \u002F\u002F read in 'def'\\n            } else if (token === \\\"\u002F\\\") {\\n              \u002F\u002F The expected 'ND' or '|-' token is missing, avoid swallowing\\n              \u002F\u002F the start of the next glyph (fixes issue14462_reduced.pdf).\\n              this.prevChar();\\n            }\\n            charstrings.push({\\n              glyph,\\n              encoded,\\n            });\\n          }\\n          break;\\n        case \\\"Subrs\\\":\\n          this.readInt(); \u002F\u002F num\\n          this.getToken(); \u002F\u002F read in 'array'\\n          while (this.getToken() === \\\"dup\\\") {\\n            const index = this.readInt();\\n            length = this.readInt();\\n            this.getToken(); \u002F\u002F read in 'RD' or '-|'\\n            data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\\n            lenIV = program.properties.privateData.lenIV;\\n            const encoded = this.readCharStrings(data, lenIV);\\n            this.nextChar();\\n            token = this.getToken(); \u002F\u002F read in 'NP' or '|'\\n            if (token === \\\"noaccess\\\") {\\n              this.getToken(); \u002F\u002F read in 'put'\\n            }\\n            subrs[index] = encoded;\\n          }\\n          break;\\n        case \\\"BlueValues\\\":\\n        case \\\"OtherBlues\\\":\\n        case \\\"FamilyBlues\\\":\\n        case \\\"FamilyOtherBlues\\\":\\n          const blueArray = this.readNumberArray();\\n          \u002F\u002F *Blue* values may contain invalid data: disables reading of\\n          \u002F\u002F those values when hinting is disabled.\\n          if (\\n            blueArray.length > 0 &&\\n            blueArray.length % 2 === 0 &&\\n            HINTING_ENABLED\\n          ) {\\n            program.properties.privateData[token] = blueArray;\\n          }\\n          break;\\n        case \\\"StemSnapH\\\":\\n        case \\\"StemSnapV\\\":\\n          program.properties.privateData[token] = this.readNumberArray();\\n          break;\\n        case \\\"StdHW\\\":\\n        case \\\"StdVW\\\":\\n          program.properties.privateData[token] = this.readNumberArray()[0];\\n          break;\\n        case \\\"BlueShift\\\":\\n        case \\\"lenIV\\\":\\n        case \\\"BlueFuzz\\\":\\n        case \\\"BlueScale\\\":\\n        case \\\"LanguageGroup\\\":\\n          program.properties.privateData[token] = this.readNumber();\\n          break;\\n        case \\\"ExpansionFactor\\\":\\n          \u002F\u002F Firefox doesn't render correctly a font with a null factor on\\n          \u002F\u002F Windows (see issue 15289), hence we just reset it to its default\\n          \u002F\u002F value (0.06).\\n          program.properties.privateData[token] = this.readNumber() || 0.06;\\n          break;\\n        case \\\"ForceBold\\\":\\n          program.properties.privateData[token] = this.readBoolean();\\n          break;\\n      }\\n    }\\n\\n    for (const { encoded, glyph } of charstrings) {\\n      const charString = new Type1CharString();\\n      const error = charString.convert(\\n        encoded,\\n        subrs,\\n        this.seacAnalysisEnabled\\n      );\\n      let output = charString.output;\\n      if (error) {\\n        \u002F\u002F It seems when FreeType encounters an error while evaluating a glyph\\n        \u002F\u002F that it completely ignores the glyph so we'll mimic that behaviour\\n        \u002F\u002F here and put an endchar to make the validator happy.\\n        output = [14];\\n      }\\n      const charStringObject = {\\n        glyphName: glyph,\\n        charstring: output,\\n        width: charString.width,\\n        lsb: charString.lsb,\\n        seac: charString.seac,\\n      };\\n      if (glyph === \\\".notdef\\\") {\\n        \u002F\u002F Make sure .notdef is at index zero (issue #11477).\\n        program.charstrings.unshift(charStringObject);\\n      } else {\\n        program.charstrings.push(charStringObject);\\n      }\\n\\n      \u002F\u002F Attempt to replace missing widths, from the font dictionary \u002FWidths\\n      \u002F\u002F entry, with ones from the font data (fixes issue11150_reduced.pdf).\\n      if (properties.builtInEncoding) {\\n        const index = properties.builtInEncoding.indexOf(glyph);\\n        if (\\n          index > -1 &&\\n          properties.widths[index] === undefined &&\\n          index >= properties.firstChar &&\\n          index \u003C= properties.lastChar\\n        ) {\\n          properties.widths[index] = charString.width;\\n        }\\n      }\\n    }\\n\\n    return program;\\n  }\\n\\n  extractFontHeader(properties) {\\n    let token;\\n    while ((token = this.getToken()) !== null) {\\n      if (token !== \\\"\u002F\\\") {\\n        continue;\\n      }\\n      token = this.getToken();\\n      switch (token) {\\n        case \\\"FontMatrix\\\":\\n          const matrix = this.readNumberArray();\\n          properties.fontMatrix = matrix;\\n          break;\\n        case \\\"Encoding\\\":\\n          const encodingArg = this.getToken();\\n          let encoding;\\n          if (!\u002F^\\\\d+$\u002F.test(encodingArg)) {\\n            \u002F\u002F encoding name is specified\\n            encoding = getEncoding(encodingArg);\\n          } else {\\n            encoding = [];\\n            const size = parseInt(encodingArg, 10) | 0;\\n            this.getToken(); \u002F\u002F read in 'array'\\n\\n            for (let j = 0; j \u003C size; j++) {\\n              token = this.getToken();\\n              \u002F\u002F skipping till first dup or def (e.g. ignoring for statement)\\n              while (token !== \\\"dup\\\" && token !== \\\"def\\\") {\\n                token = this.getToken();\\n                if (token === null) {\\n                  return; \u002F\u002F invalid header\\n                }\\n              }\\n              if (token === \\\"def\\\") {\\n                break; \u002F\u002F read all array data\\n              }\\n              const index = this.readInt();\\n              this.getToken(); \u002F\u002F read in '\u002F'\\n              const glyph = this.getToken();\\n              encoding[index] = glyph;\\n              this.getToken(); \u002F\u002F read the in 'put'\\n            }\\n          }\\n          properties.builtInEncoding = encoding;\\n          break;\\n        case \\\"FontBBox\\\":\\n          const fontBBox = this.readNumberArray();\\n          \u002F\u002F adjusting ascent\u002Fdescent\\n          properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\\n          properties.descent = Math.min(fontBBox[1], fontBBox[3]);\\n          properties.ascentScaled = true;\\n          break;\\n      }\\n    }\\n  }\\n}\\n\\nexport { Type1Parser };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  CFF,\\n  CFFCharset,\\n  CFFCompiler,\\n  CFFHeader,\\n  CFFIndex,\\n  CFFPrivateDict,\\n  CFFStandardStrings,\\n  CFFStrings,\\n  CFFTopDict,\\n} from \\\".\u002Fcff_parser.js\\\";\\nimport { FormatError, warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { SEAC_ANALYSIS_ENABLED, type1FontGlyphMapping } from \\\".\u002Ffonts_utils.js\\\";\\nimport { isWhiteSpace } from \\\".\u002Fcore_utils.js\\\";\\nimport { Stream } from \\\".\u002Fstream.js\\\";\\nimport { Type1Parser } from \\\".\u002Ftype1_parser.js\\\";\\n\\nfunction findBlock(streamBytes, signature, startIndex) {\\n  const streamBytesLength = streamBytes.length;\\n  const signatureLength = signature.length;\\n  const scanLength = streamBytesLength - signatureLength;\\n\\n  let i = startIndex,\\n    found = false;\\n  while (i \u003C scanLength) {\\n    let j = 0;\\n    while (j \u003C signatureLength && streamBytes[i + j] === signature[j]) {\\n      j++;\\n    }\\n    if (j >= signatureLength) {\\n      \u002F\u002F `signature` found, skip over whitespace.\\n      i += j;\\n      while (i \u003C streamBytesLength && isWhiteSpace(streamBytes[i])) {\\n        i++;\\n      }\\n      found = true;\\n      break;\\n    }\\n    i++;\\n  }\\n  return {\\n    found,\\n    length: i,\\n  };\\n}\\n\\nfunction getHeaderBlock(stream, suggestedLength) {\\n  const EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63];\\n\\n  const streamStartPos = stream.pos; \u002F\u002F Save the initial stream position.\\n  let headerBytes, headerBytesLength, block;\\n  try {\\n    headerBytes = stream.getBytes(suggestedLength);\\n    headerBytesLength = headerBytes.length;\\n  } catch {\\n    \u002F\u002F Ignore errors if the `suggestedLength` is huge enough that a Uint8Array\\n    \u002F\u002F cannot hold the result of `getBytes`, and fallback to simply checking\\n    \u002F\u002F the entire stream (fixes issue3928.pdf).\\n  }\\n\\n  if (headerBytesLength === suggestedLength) {\\n    \u002F\u002F Most of the time `suggestedLength` is correct, so to speed things up we\\n    \u002F\u002F initially only check the last few bytes to see if the header was found.\\n    \u002F\u002F Otherwise we (potentially) check the entire stream to prevent errors in\\n    \u002F\u002F `Type1Parser` (fixes issue5686.pdf).\\n    block = findBlock(\\n      headerBytes,\\n      EEXEC_SIGNATURE,\\n      suggestedLength - 2 * EEXEC_SIGNATURE.length\\n    );\\n\\n    if (block.found && block.length === suggestedLength) {\\n      return {\\n        stream: new Stream(headerBytes),\\n        length: suggestedLength,\\n      };\\n    }\\n  }\\n  warn('Invalid \\\"Length1\\\" property in Type1 font -- trying to recover.');\\n  stream.pos = streamStartPos; \u002F\u002F Reset the stream position.\\n\\n  const SCAN_BLOCK_LENGTH = 2048;\\n  let actualLength;\\n  while (true) {\\n    const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\\n    block = findBlock(scanBytes, EEXEC_SIGNATURE, 0);\\n\\n    if (block.length === 0) {\\n      break;\\n    }\\n    stream.pos += block.length; \u002F\u002F Update the stream position.\\n\\n    if (block.found) {\\n      actualLength = stream.pos - streamStartPos;\\n      break;\\n    }\\n  }\\n  stream.pos = streamStartPos; \u002F\u002F Reset the stream position.\\n\\n  if (actualLength) {\\n    return {\\n      stream: new Stream(stream.getBytes(actualLength)),\\n      length: actualLength,\\n    };\\n  }\\n  warn('Unable to recover \\\"Length1\\\" property in Type1 font -- using as is.');\\n  return {\\n    stream: new Stream(stream.getBytes(suggestedLength)),\\n    length: suggestedLength,\\n  };\\n}\\n\\nfunction getEexecBlock(stream, suggestedLength) {\\n  \u002F\u002F We should ideally parse the eexec block to ensure that `suggestedLength`\\n  \u002F\u002F is correct, so we don't truncate the block data if it's too small.\\n  \u002F\u002F However, this would also require checking if the fixed-content portion\\n  \u002F\u002F exists (using the 'Length3' property), and ensuring that it's valid.\\n  \u002F\u002F\\n  \u002F\u002F Given that `suggestedLength` almost always is correct, all the validation\\n  \u002F\u002F would require a great deal of unnecessary parsing for most fonts.\\n  \u002F\u002F To save time, we always fetch the entire stream instead, which also avoid\\n  \u002F\u002F issues if `suggestedLength` is huge (see comment in `getHeaderBlock`).\\n  \u002F\u002F\\n  \u002F\u002F NOTE: This means that the function can include the fixed-content portion\\n  \u002F\u002F in the returned eexec block. In practice this does *not* seem to matter,\\n  \u002F\u002F since `Type1Parser_extractFontProgram` will skip over any non-commands.\\n  const eexecBytes = stream.getBytes();\\n  if (eexecBytes.length === 0) {\\n    throw new FormatError(\\\"getEexecBlock - no font program found.\\\");\\n  }\\n  return {\\n    stream: new Stream(eexecBytes),\\n    length: eexecBytes.length,\\n  };\\n}\\n\\n\u002F**\\n * Type1Font is also a CIDFontType0.\\n *\u002F\\nclass Type1Font {\\n  constructor(name, file, properties) {\\n    \u002F\u002F Some bad generators embed pfb file as is, we have to strip 6-byte header.\\n    \u002F\u002F Also, length1 and length2 might be off by 6 bytes as well.\\n    \u002F\u002F http:\u002F\u002Fwww.math.ubc.ca\u002F~cass\u002Fpiscript\u002Ftype1.pdf\\n    const PFB_HEADER_SIZE = 6;\\n    let headerBlockLength = properties.length1;\\n    let eexecBlockLength = properties.length2;\\n    let pfbHeader = file.peekBytes(PFB_HEADER_SIZE);\\n    const pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01;\\n    if (pfbHeaderPresent) {\\n      file.skip(PFB_HEADER_SIZE);\\n      headerBlockLength =\\n        (pfbHeader[5] \u003C\u003C 24) |\\n        (pfbHeader[4] \u003C\u003C 16) |\\n        (pfbHeader[3] \u003C\u003C 8) |\\n        pfbHeader[2];\\n    }\\n\\n    \u002F\u002F Get the data block containing glyphs and subrs information\\n    const headerBlock = getHeaderBlock(file, headerBlockLength);\\n    const headerBlockParser = new Type1Parser(\\n      headerBlock.stream,\\n      false,\\n      SEAC_ANALYSIS_ENABLED\\n    );\\n    headerBlockParser.extractFontHeader(properties);\\n\\n    if (pfbHeaderPresent) {\\n      pfbHeader = file.getBytes(PFB_HEADER_SIZE);\\n      eexecBlockLength =\\n        (pfbHeader[5] \u003C\u003C 24) |\\n        (pfbHeader[4] \u003C\u003C 16) |\\n        (pfbHeader[3] \u003C\u003C 8) |\\n        pfbHeader[2];\\n    }\\n\\n    \u002F\u002F Decrypt the data blocks and retrieve it's content\\n    const eexecBlock = getEexecBlock(file, eexecBlockLength);\\n    const eexecBlockParser = new Type1Parser(\\n      eexecBlock.stream,\\n      true,\\n      SEAC_ANALYSIS_ENABLED\\n    );\\n    const data = eexecBlockParser.extractFontProgram(properties);\\n    for (const key in data.properties) {\\n      properties[key] = data.properties[key];\\n    }\\n\\n    const charstrings = data.charstrings;\\n    const type2Charstrings = this.getType2Charstrings(charstrings);\\n    const subrs = this.getType2Subrs(data.subrs);\\n\\n    this.charstrings = charstrings;\\n    this.data = this.wrap(\\n      name,\\n      type2Charstrings,\\n      this.charstrings,\\n      subrs,\\n      properties\\n    );\\n    this.seacs = this.getSeacs(data.charstrings);\\n  }\\n\\n  get numGlyphs() {\\n    return this.charstrings.length + 1;\\n  }\\n\\n  getCharset() {\\n    const charset = [\\\".notdef\\\"];\\n    for (const { glyphName } of this.charstrings) {\\n      charset.push(glyphName);\\n    }\\n    return charset;\\n  }\\n\\n  getGlyphMapping(properties) {\\n    const charstrings = this.charstrings;\\n\\n    if (properties.composite) {\\n      const charCodeToGlyphId = Object.create(null);\\n      \u002F\u002F Map CIDs directly to GIDs.\\n      for (\\n        let glyphId = 0, charstringsLen = charstrings.length;\\n        glyphId \u003C charstringsLen;\\n        glyphId++\\n      ) {\\n        const charCode = properties.cMap.charCodeOf(glyphId);\\n        \u002F\u002F Add 1 because glyph 0 is duplicated.\\n        charCodeToGlyphId[charCode] = glyphId + 1;\\n      }\\n      return charCodeToGlyphId;\\n    }\\n\\n    const glyphNames = [\\\".notdef\\\"];\\n    let builtInEncoding, glyphId;\\n    for (glyphId = 0; glyphId \u003C charstrings.length; glyphId++) {\\n      glyphNames.push(charstrings[glyphId].glyphName);\\n    }\\n    const encoding = properties.builtInEncoding;\\n    if (encoding) {\\n      builtInEncoding = Object.create(null);\\n      for (const charCode in encoding) {\\n        glyphId = glyphNames.indexOf(encoding[charCode]);\\n        if (glyphId >= 0) {\\n          builtInEncoding[charCode] = glyphId;\\n        }\\n      }\\n    }\\n\\n    return type1FontGlyphMapping(properties, builtInEncoding, glyphNames);\\n  }\\n\\n  hasGlyphId(id) {\\n    if (id \u003C 0 || id >= this.numGlyphs) {\\n      return false;\\n    }\\n    if (id === 0) {\\n      \u002F\u002F notdef is always defined.\\n      return true;\\n    }\\n    const glyph = this.charstrings[id - 1];\\n    return glyph.charstring.length > 0;\\n  }\\n\\n  getSeacs(charstrings) {\\n    const seacMap = [];\\n    for (let i = 0, ii = charstrings.length; i \u003C ii; i++) {\\n      const charstring = charstrings[i];\\n      if (charstring.seac) {\\n        \u002F\u002F Offset by 1 for .notdef\\n        seacMap[i + 1] = charstring.seac;\\n      }\\n    }\\n    return seacMap;\\n  }\\n\\n  getType2Charstrings(type1Charstrings) {\\n    const type2Charstrings = [];\\n    for (const type1Charstring of type1Charstrings) {\\n      type2Charstrings.push(type1Charstring.charstring);\\n    }\\n    return type2Charstrings;\\n  }\\n\\n  getType2Subrs(type1Subrs) {\\n    let bias = 0;\\n    const count = type1Subrs.length;\\n    if (count \u003C 1133) {\\n      bias = 107;\\n    } else if (count \u003C 33769) {\\n      bias = 1131;\\n    } else {\\n      bias = 32768;\\n    }\\n\\n    \u002F\u002F Add a bunch of empty subrs to deal with the Type2 bias\\n    const type2Subrs = [];\\n    let i;\\n    for (i = 0; i \u003C bias; i++) {\\n      type2Subrs.push([0x0b]);\\n    }\\n\\n    for (i = 0; i \u003C count; i++) {\\n      type2Subrs.push(type1Subrs[i]);\\n    }\\n\\n    return type2Subrs;\\n  }\\n\\n  wrap(name, glyphs, charstrings, subrs, properties) {\\n    const cff = new CFF();\\n    cff.header = new CFFHeader(1, 0, 4, 4);\\n\\n    cff.names = [name];\\n\\n    const topDict = new CFFTopDict();\\n    \u002F\u002F CFF strings IDs 0...390 are predefined names, so refering\\n    \u002F\u002F to entries in our own String INDEX starts at SID 391.\\n    topDict.setByName(\\\"version\\\", 391);\\n    topDict.setByName(\\\"Notice\\\", 392);\\n    topDict.setByName(\\\"FullName\\\", 393);\\n    topDict.setByName(\\\"FamilyName\\\", 394);\\n    topDict.setByName(\\\"Weight\\\", 395);\\n    topDict.setByName(\\\"Encoding\\\", null); \u002F\u002F placeholder\\n    topDict.setByName(\\\"FontMatrix\\\", properties.fontMatrix);\\n    topDict.setByName(\\\"FontBBox\\\", properties.bbox);\\n    topDict.setByName(\\\"charset\\\", null); \u002F\u002F placeholder\\n    topDict.setByName(\\\"CharStrings\\\", null); \u002F\u002F placeholder\\n    topDict.setByName(\\\"Private\\\", null); \u002F\u002F placeholder\\n    cff.topDict = topDict;\\n\\n    const strings = new CFFStrings();\\n    strings.add(\\\"Version 0.11\\\"); \u002F\u002F Version\\n    strings.add(\\\"See original notice\\\"); \u002F\u002F Notice\\n    strings.add(name); \u002F\u002F FullName\\n    strings.add(name); \u002F\u002F FamilyName\\n    strings.add(\\\"Medium\\\"); \u002F\u002F Weight\\n    cff.strings = strings;\\n\\n    cff.globalSubrIndex = new CFFIndex();\\n\\n    const count = glyphs.length;\\n    const charsetArray = [\\\".notdef\\\"];\\n    let i, ii;\\n    for (i = 0; i \u003C count; i++) {\\n      const glyphName = charstrings[i].glyphName;\\n      const index = CFFStandardStrings.indexOf(glyphName);\\n      if (index === -1) {\\n        strings.add(glyphName);\\n      }\\n      charsetArray.push(glyphName);\\n    }\\n    cff.charset = new CFFCharset(false, 0, charsetArray);\\n\\n    const charStringsIndex = new CFFIndex();\\n    charStringsIndex.add([0x8b, 0x0e]); \u002F\u002F .notdef\\n    for (i = 0; i \u003C count; i++) {\\n      charStringsIndex.add(glyphs[i]);\\n    }\\n    cff.charStrings = charStringsIndex;\\n\\n    const privateDict = new CFFPrivateDict();\\n    privateDict.setByName(\\\"Subrs\\\", null); \u002F\u002F placeholder\\n    const fields = [\\n      \\\"BlueValues\\\",\\n      \\\"OtherBlues\\\",\\n      \\\"FamilyBlues\\\",\\n      \\\"FamilyOtherBlues\\\",\\n      \\\"StemSnapH\\\",\\n      \\\"StemSnapV\\\",\\n      \\\"BlueShift\\\",\\n      \\\"BlueFuzz\\\",\\n      \\\"BlueScale\\\",\\n      \\\"LanguageGroup\\\",\\n      \\\"ExpansionFactor\\\",\\n      \\\"ForceBold\\\",\\n      \\\"StdHW\\\",\\n      \\\"StdVW\\\",\\n    ];\\n    for (i = 0, ii = fields.length; i \u003C ii; i++) {\\n      const field = fields[i];\\n      if (!(field in properties.privateData)) {\\n        continue;\\n      }\\n      const value = properties.privateData[field];\\n      if (Array.isArray(value)) {\\n        \u002F\u002F All of the private dictionary array data in CFF must be stored as\\n        \u002F\u002F \\\"delta-encoded\\\" numbers.\\n        for (let j = value.length - 1; j > 0; j--) {\\n          value[j] -= value[j - 1]; \u002F\u002F ... difference from previous value\\n        }\\n      }\\n      privateDict.setByName(field, value);\\n    }\\n    cff.topDict.privateDict = privateDict;\\n\\n    const subrIndex = new CFFIndex();\\n    for (i = 0, ii = subrs.length; i \u003C ii; i++) {\\n      subrIndex.add(subrs[i]);\\n    }\\n    privateDict.subrsIndex = subrIndex;\\n\\n    const compiler = new CFFCompiler(cff);\\n    return compiler.compile();\\n  }\\n}\\n\\nexport { Type1Font };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  assert,\\n  bytesToString,\\n  FONT_IDENTITY_MATRIX,\\n  FormatError,\\n  info,\\n  shadow,\\n  string32,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { CFFCompiler, CFFParser } from \\\".\u002Fcff_parser.js\\\";\\nimport {\\n  FontFlags,\\n  getVerticalPresentationForm,\\n  MacStandardGlyphOrdering,\\n  normalizeFontName,\\n  recoverGlyphName,\\n  SEAC_ANALYSIS_ENABLED,\\n} from \\\".\u002Ffonts_utils.js\\\";\\nimport {\\n  getCharUnicodeCategory,\\n  getUnicodeForGlyph,\\n  getUnicodeRangeFor,\\n  mapSpecialUnicodeValues,\\n} from \\\".\u002Funicode.js\\\";\\nimport { getDingbatsGlyphsUnicode, getGlyphsUnicode } from \\\".\u002Fglyphlist.js\\\";\\nimport {\\n  getEncoding,\\n  MacRomanEncoding,\\n  StandardEncoding,\\n  SymbolSetEncoding,\\n  WinAnsiEncoding,\\n  ZapfDingbatsEncoding,\\n} from \\\".\u002Fencodings.js\\\";\\nimport {\\n  getGlyphMapForStandardFonts,\\n  getNonStdFontMap,\\n  getSerifFonts,\\n  getStdFontMap,\\n  getSupplementalGlyphMapForArialBlack,\\n  getSupplementalGlyphMapForCalibri,\\n} from \\\".\u002Fstandard_fonts.js\\\";\\nimport { IdentityToUnicodeMap, ToUnicodeMap } from \\\".\u002Fto_unicode_map.js\\\";\\nimport { CFFFont } from \\\".\u002Fcff_font.js\\\";\\nimport { FontRendererFactory } from \\\".\u002Ffont_renderer.js\\\";\\nimport { getFontBasicMetrics } from \\\".\u002Fmetrics.js\\\";\\nimport { GlyfTable } from \\\".\u002Fglyf.js\\\";\\nimport { IdentityCMap } from \\\".\u002Fcmap.js\\\";\\nimport { OpenTypeFileBuilder } from \\\".\u002Fopentype_file_builder.js\\\";\\nimport { readUint32 } from \\\".\u002Fcore_utils.js\\\";\\nimport { Stream } from \\\".\u002Fstream.js\\\";\\nimport { Type1Font } from \\\".\u002Ftype1_font.js\\\";\\n\\n\u002F\u002F Unicode Private Use Areas:\\nconst PRIVATE_USE_AREAS = [\\n  [0xe000, 0xf8ff], \u002F\u002F BMP (0)\\n  [0x100000, 0x10fffd], \u002F\u002F PUP (16)\\n];\\n\\n\u002F\u002F PDF Glyph Space Units are one Thousandth of a TextSpace Unit\\n\u002F\u002F except for Type 3 fonts\\nconst PDF_GLYPH_SPACE_UNITS = 1000;\\n\\nconst EXPORT_DATA_PROPERTIES = [\\n  \\\"ascent\\\",\\n  \\\"bbox\\\",\\n  \\\"black\\\",\\n  \\\"bold\\\",\\n  \\\"charProcOperatorList\\\",\\n  \\\"cssFontInfo\\\",\\n  \\\"data\\\",\\n  \\\"defaultVMetrics\\\",\\n  \\\"defaultWidth\\\",\\n  \\\"descent\\\",\\n  \\\"disableFontFace\\\",\\n  \\\"fallbackName\\\",\\n  \\\"fontExtraProperties\\\",\\n  \\\"fontMatrix\\\",\\n  \\\"isInvalidPDFjsFont\\\",\\n  \\\"isType3Font\\\",\\n  \\\"italic\\\",\\n  \\\"loadedName\\\",\\n  \\\"mimetype\\\",\\n  \\\"missingFile\\\",\\n  \\\"name\\\",\\n  \\\"remeasure\\\",\\n  \\\"systemFontInfo\\\",\\n  \\\"vertical\\\",\\n];\\n\\nconst EXPORT_DATA_EXTRA_PROPERTIES = [\\n  \\\"cMap\\\",\\n  \\\"composite\\\",\\n  \\\"defaultEncoding\\\",\\n  \\\"differences\\\",\\n  \\\"isMonospace\\\",\\n  \\\"isSerifFont\\\",\\n  \\\"isSymbolicFont\\\",\\n  \\\"seacMap\\\",\\n  \\\"subtype\\\",\\n  \\\"toFontChar\\\",\\n  \\\"toUnicode\\\",\\n  \\\"type\\\",\\n  \\\"vmetrics\\\",\\n  \\\"widths\\\",\\n];\\n\\nfunction adjustWidths(properties) {\\n  if (!properties.fontMatrix) {\\n    return;\\n  }\\n  if (properties.fontMatrix[0] === FONT_IDENTITY_MATRIX[0]) {\\n    return;\\n  }\\n  \u002F\u002F adjusting width to fontMatrix scale\\n  const scale = 0.001 \u002F properties.fontMatrix[0];\\n  const glyphsWidths = properties.widths;\\n  for (const glyph in glyphsWidths) {\\n    glyphsWidths[glyph] *= scale;\\n  }\\n  properties.defaultWidth *= scale;\\n}\\n\\nfunction adjustTrueTypeToUnicode(properties, isSymbolicFont, nameRecords) {\\n  if (properties.isInternalFont) {\\n    return;\\n  }\\n  if (properties.hasIncludedToUnicodeMap) {\\n    return; \u002F\u002F The font dictionary has a `ToUnicode` entry.\\n  }\\n  if (properties.hasEncoding) {\\n    return; \u002F\u002F The font dictionary has an `Encoding` entry.\\n  }\\n  if (properties.toUnicode instanceof IdentityToUnicodeMap) {\\n    return;\\n  }\\n  if (!isSymbolicFont) {\\n    return; \u002F\u002F A non-symbolic font should default to `StandardEncoding`.\\n  }\\n  if (nameRecords.length === 0) {\\n    return;\\n  }\\n\\n  \u002F\u002F Try to infer if the fallback encoding should really be `WinAnsiEncoding`.\\n  if (properties.defaultEncoding === WinAnsiEncoding) {\\n    return;\\n  }\\n  for (const r of nameRecords) {\\n    if (!isWinNameRecord(r)) {\\n      return; \u002F\u002F Not Windows, hence `WinAnsiEncoding` wouldn't make sense.\\n    }\\n  }\\n  const encoding = WinAnsiEncoding;\\n\\n  const toUnicode = [],\\n    glyphsUnicodeMap = getGlyphsUnicode();\\n  for (const charCode in encoding) {\\n    const glyphName = encoding[charCode];\\n    if (glyphName === \\\"\\\") {\\n      continue;\\n    }\\n    const unicode = glyphsUnicodeMap[glyphName];\\n    if (unicode === undefined) {\\n      continue;\\n    }\\n    toUnicode[charCode] = String.fromCharCode(unicode);\\n  }\\n  if (toUnicode.length > 0) {\\n    properties.toUnicode.amend(toUnicode);\\n  }\\n}\\n\\nfunction adjustType1ToUnicode(properties, builtInEncoding) {\\n  if (properties.isInternalFont) {\\n    return;\\n  }\\n  if (properties.hasIncludedToUnicodeMap) {\\n    return; \u002F\u002F The font dictionary has a `ToUnicode` entry.\\n  }\\n  if (builtInEncoding === properties.defaultEncoding) {\\n    return; \u002F\u002F No point in trying to adjust `toUnicode` if the encodings match.\\n  }\\n  if (properties.toUnicode instanceof IdentityToUnicodeMap) {\\n    return;\\n  }\\n  const toUnicode = [],\\n    glyphsUnicodeMap = getGlyphsUnicode();\\n  for (const charCode in builtInEncoding) {\\n    if (properties.hasEncoding) {\\n      if (\\n        properties.baseEncodingName ||\\n        properties.differences[charCode] !== undefined\\n      ) {\\n        continue; \u002F\u002F The font dictionary has an `Encoding`\u002F`Differences` entry.\\n      }\\n    }\\n    const glyphName = builtInEncoding[charCode];\\n    const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\\n    if (unicode !== -1) {\\n      toUnicode[charCode] = String.fromCharCode(unicode);\\n    }\\n  }\\n  if (toUnicode.length > 0) {\\n    properties.toUnicode.amend(toUnicode);\\n  }\\n}\\n\\n\u002F**\\n * NOTE: This function should only be called at the *end* of font-parsing,\\n *       after e.g. `adjustType1ToUnicode` has run, to prevent any issues.\\n *\u002F\\nfunction amendFallbackToUnicode(properties) {\\n  if (!properties.fallbackToUnicode) {\\n    return;\\n  }\\n  if (properties.toUnicode instanceof IdentityToUnicodeMap) {\\n    return;\\n  }\\n  const toUnicode = [];\\n  for (const charCode in properties.fallbackToUnicode) {\\n    if (properties.toUnicode.has(charCode)) {\\n      continue; \u002F\u002F The font dictionary has a `ToUnicode` entry.\\n    }\\n    toUnicode[charCode] = properties.fallbackToUnicode[charCode];\\n  }\\n  if (toUnicode.length > 0) {\\n    properties.toUnicode.amend(toUnicode);\\n  }\\n}\\n\\nclass Glyph {\\n  constructor(\\n    originalCharCode,\\n    fontChar,\\n    unicode,\\n    accent,\\n    width,\\n    vmetric,\\n    operatorListId,\\n    isSpace,\\n    isInFont\\n  ) {\\n    this.originalCharCode = originalCharCode;\\n    this.fontChar = fontChar;\\n    this.unicode = unicode;\\n    this.accent = accent;\\n    this.width = width;\\n    this.vmetric = vmetric;\\n    this.operatorListId = operatorListId;\\n    this.isSpace = isSpace;\\n    this.isInFont = isInFont;\\n  }\\n\\n  \u002F**\\n   * This property, which is only used by `PartialEvaluator.getTextContent`,\\n   * is purposely made non-serializable.\\n   * @type {Object}\\n   *\u002F\\n  get category() {\\n    return shadow(\\n      this,\\n      \\\"category\\\",\\n      getCharUnicodeCategory(this.unicode),\\n      \u002F* nonSerializable = *\u002F true\\n    );\\n  }\\n}\\n\\nfunction int16(b0, b1) {\\n  return (b0 \u003C\u003C 8) + b1;\\n}\\n\\nfunction writeSignedInt16(bytes, index, value) {\\n  bytes[index + 1] = value;\\n  bytes[index] = value >>> 8;\\n}\\n\\nfunction signedInt16(b0, b1) {\\n  const value = (b0 \u003C\u003C 8) + b1;\\n  return value & (1 \u003C\u003C 15) ? value - 0x10000 : value;\\n}\\n\\nfunction writeUint32(bytes, index, value) {\\n  bytes[index + 3] = value & 0xff;\\n  bytes[index + 2] = value >>> 8;\\n  bytes[index + 1] = value >>> 16;\\n  bytes[index] = value >>> 24;\\n}\\n\\nfunction int32(b0, b1, b2, b3) {\\n  return (b0 \u003C\u003C 24) + (b1 \u003C\u003C 16) + (b2 \u003C\u003C 8) + b3;\\n}\\n\\nfunction string16(value) {\\n  if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n    assert(\\n      typeof value === \\\"number\\\" && Math.abs(value) \u003C 2 ** 16,\\n      `string16: Unexpected input \\\"${value}\\\".`\\n    );\\n  }\\n  return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\\n}\\n\\nfunction safeString16(value) {\\n  if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n    assert(\\n      typeof value === \\\"number\\\" && !Number.isNaN(value),\\n      `safeString16: Unexpected input \\\"${value}\\\".`\\n    );\\n  }\\n  \u002F\u002F clamp value to the 16-bit int range\\n  if (value > 0x7fff) {\\n    value = 0x7fff;\\n  } else if (value \u003C -0x8000) {\\n    value = -0x8000;\\n  }\\n  return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\\n}\\n\\nfunction isTrueTypeFile(file) {\\n  const header = file.peekBytes(4);\\n  return (\\n    readUint32(header, 0) === 0x00010000 || bytesToString(header) === \\\"true\\\"\\n  );\\n}\\n\\nfunction isTrueTypeCollectionFile(file) {\\n  const header = file.peekBytes(4);\\n  return bytesToString(header) === \\\"ttcf\\\";\\n}\\n\\nfunction isOpenTypeFile(file) {\\n  const header = file.peekBytes(4);\\n  return bytesToString(header) === \\\"OTTO\\\";\\n}\\n\\nfunction isType1File(file) {\\n  const header = file.peekBytes(2);\\n  \u002F\u002F All Type1 font programs must begin with the comment '%!' (0x25 + 0x21).\\n  if (header[0] === 0x25 && header[1] === 0x21) {\\n    return true;\\n  }\\n  \u002F\u002F ... obviously some fonts violate that part of the specification,\\n  \u002F\u002F please refer to the comment in |Type1Font| below (pfb file header).\\n  if (header[0] === 0x80 && header[1] === 0x01) {\\n    return true;\\n  }\\n  return false;\\n}\\n\\n\u002F**\\n * Compared to other font formats, the header in CFF files is not constant\\n * but contains version numbers. To reduce the possibility of misclassifying\\n * font files as CFF, it's recommended to check for other font formats first.\\n *\u002F\\nfunction isCFFFile(file) {\\n  const header = file.peekBytes(4);\\n  if (\\n    \u002F* major version, [1, 255] *\u002F header[0] >= 1 &&\\n    \u002F* minor version, [0, 255]; header[1] *\u002F\\n    \u002F* header size, [0, 255]; header[2] *\u002F\\n    \u002F* offset(0) size, [1, 4] *\u002F header[3] >= 1 &&\\n    header[3] \u003C= 4\\n  ) {\\n    return true;\\n  }\\n  return false;\\n}\\n\\nfunction getFontFileType(file, { type, subtype, composite }) {\\n  let fileType, fileSubtype;\\n\\n  if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) {\\n    fileType = composite ? \\\"CIDFontType2\\\" : \\\"TrueType\\\";\\n  } else if (isOpenTypeFile(file)) {\\n    fileType = composite ? \\\"CIDFontType2\\\" : \\\"OpenType\\\";\\n  } else if (isType1File(file)) {\\n    if (composite) {\\n      fileType = \\\"CIDFontType0\\\";\\n    } else {\\n      fileType = type === \\\"MMType1\\\" ? \\\"MMType1\\\" : \\\"Type1\\\";\\n    }\\n  } else if (isCFFFile(file)) {\\n    if (composite) {\\n      fileType = \\\"CIDFontType0\\\";\\n      fileSubtype = \\\"CIDFontType0C\\\";\\n    } else {\\n      fileType = type === \\\"MMType1\\\" ? \\\"MMType1\\\" : \\\"Type1\\\";\\n      fileSubtype = \\\"Type1C\\\";\\n    }\\n  } else {\\n    warn(\\\"getFontFileType: Unable to detect correct font file Type\u002FSubtype.\\\");\\n    fileType = type;\\n    fileSubtype = subtype;\\n  }\\n\\n  return [fileType, fileSubtype];\\n}\\n\\nfunction applyStandardFontGlyphMap(map, glyphMap) {\\n  for (const charCode in glyphMap) {\\n    map[+charCode] = glyphMap[charCode];\\n  }\\n}\\n\\nfunction buildToFontChar(encoding, glyphsUnicodeMap, differences) {\\n  const toFontChar = [];\\n  let unicode;\\n  for (let i = 0, ii = encoding.length; i \u003C ii; i++) {\\n    unicode = getUnicodeForGlyph(encoding[i], glyphsUnicodeMap);\\n    if (unicode !== -1) {\\n      toFontChar[i] = unicode;\\n    }\\n  }\\n  for (const charCode in differences) {\\n    unicode = getUnicodeForGlyph(differences[charCode], glyphsUnicodeMap);\\n    if (unicode !== -1) {\\n      toFontChar[+charCode] = unicode;\\n    }\\n  }\\n  return toFontChar;\\n}\\n\\n\u002F\u002F Please refer to:\\n\u002F\u002F  - https:\u002F\u002Fdeveloper.apple.com\u002Ffonts\u002FTrueType-Reference-Manual\u002FRM06\u002FChap6name.html\\nfunction isMacNameRecord(r) {\\n  return r.platform === 1 && r.encoding === 0 && r.language === 0;\\n}\\n\\n\u002F\u002F Please refer to:\\n\u002F\u002F  - https:\u002F\u002Fdeveloper.apple.com\u002Ffonts\u002FTrueType-Reference-Manual\u002FRM06\u002FChap6name.html\\n\u002F\u002F  - https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Ftypography\u002Fopentype\u002Fspec\u002Fname#windows-language-ids\\nfunction isWinNameRecord(r) {\\n  return r.platform === 3 && r.encoding === 1 && r.language === 0x409;\\n}\\n\\nfunction convertCidString(charCode, cid, shouldThrow = false) {\\n  switch (cid.length) {\\n    case 1:\\n      return cid.charCodeAt(0);\\n    case 2:\\n      return (cid.charCodeAt(0) \u003C\u003C 8) | cid.charCodeAt(1);\\n  }\\n  const msg = `Unsupported CID string (charCode ${charCode}): \\\"${cid}\\\".`;\\n  if (shouldThrow) {\\n    throw new FormatError(msg);\\n  }\\n  warn(msg);\\n  return cid;\\n}\\n\\n\u002F**\\n * Rebuilds the char code to glyph ID map by moving all char codes to the\\n * private use area. This is done to avoid issues with various problematic\\n * unicode areas where either a glyph won't be drawn or is deformed by a\\n * shaper.\\n * @returns {Object} Two properties:\\n * 'toFontChar' - maps original char codes(the value that will be read\\n * from commands such as show text) to the char codes that will be used in the\\n * font that we build\\n * 'charCodeToGlyphId' - maps the new font char codes to glyph ids\\n *\u002F\\nfunction adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId, toUnicode) {\\n  const newMap = Object.create(null);\\n  const toUnicodeExtraMap = new Map();\\n  const toFontChar = [];\\n  const usedGlyphIds = new Set();\\n  let privateUseAreaIndex = 0;\\n  const privateUseOffetStart = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\\n  let nextAvailableFontCharCode = privateUseOffetStart;\\n  let privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\\n  const isInPrivateArea = code =>\\n    (PRIVATE_USE_AREAS[0][0] \u003C= code && code \u003C= PRIVATE_USE_AREAS[0][1]) ||\\n    (PRIVATE_USE_AREAS[1][0] \u003C= code && code \u003C= PRIVATE_USE_AREAS[1][1]);\\n  let LIGATURE_TO_UNICODE = null;\\n\\n  for (const originalCharCode in charCodeToGlyphId) {\\n    let glyphId = charCodeToGlyphId[originalCharCode];\\n    \u002F\u002F For missing glyphs don't create the mappings so the glyph isn't\\n    \u002F\u002F drawn.\\n    if (!hasGlyph(glyphId)) {\\n      continue;\\n    }\\n    if (nextAvailableFontCharCode > privateUseOffetEnd) {\\n      privateUseAreaIndex++;\\n      if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) {\\n        warn(\\\"Ran out of space in font private use area.\\\");\\n        break;\\n      }\\n      nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\\n      privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\\n    }\\n    const fontCharCode = nextAvailableFontCharCode++;\\n    if (glyphId === 0) {\\n      glyphId = newGlyphZeroId;\\n    }\\n\\n    \u002F\u002F Fix for bug 1778484:\\n    \u002F\u002F The charcodes are moved into a private use area to fix some rendering\\n    \u002F\u002F issues (https:\u002F\u002Fgithub.com\u002Fmozilla\u002Fpdf.js\u002Fpull\u002F9340) but when printing\\n    \u002F\u002F to PDF the generated font will contain wrong chars. We can avoid that by\\n    \u002F\u002F adding the unicode to the cmap and the print backend will then map the\\n    \u002F\u002F glyph ids to the correct unicode.\\n    let unicode = toUnicode.get(originalCharCode);\\n    if (typeof unicode === \\\"string\\\") {\\n      if (unicode.length === 1) {\\n        unicode = unicode.codePointAt(0);\\n      } else {\\n        if (!LIGATURE_TO_UNICODE) {\\n          LIGATURE_TO_UNICODE = new Map();\\n          \u002F\u002F The code range [0xfb00, 0xfb4f] contains some ligature characters\\n          \u002F\u002F but not all.\\n          \u002F\u002F See https:\u002F\u002Fwww.compart.com\u002Fen\u002Funicode\u002Fblock\u002FU+FB00.\\n          for (let i = 0xfb00; i \u003C= 0xfb4f; i++) {\\n            const normalized = String.fromCharCode(i).normalize(\\\"NFKD\\\");\\n            if (normalized.length > 1) {\\n              LIGATURE_TO_UNICODE.set(normalized, i);\\n            }\\n          }\\n        }\\n        unicode = LIGATURE_TO_UNICODE.get(unicode) || unicode.codePointAt(0);\\n      }\\n    }\\n    if (unicode && !isInPrivateArea(unicode) && !usedGlyphIds.has(glyphId)) {\\n      toUnicodeExtraMap.set(unicode, glyphId);\\n      usedGlyphIds.add(glyphId);\\n    }\\n\\n    newMap[fontCharCode] = glyphId;\\n    toFontChar[originalCharCode] = fontCharCode;\\n  }\\n  return {\\n    toFontChar,\\n    charCodeToGlyphId: newMap,\\n    toUnicodeExtraMap,\\n    nextAvailableFontCharCode,\\n  };\\n}\\n\\nfunction getRanges(glyphs, toUnicodeExtraMap, numGlyphs) {\\n  \u002F\u002F Array.sort() sorts by characters, not numerically, so convert to an\\n  \u002F\u002F array of characters.\\n  const codes = [];\\n  for (const charCode in glyphs) {\\n    \u002F\u002F Remove an invalid glyph ID mappings to make OTS happy.\\n    if (glyphs[charCode] >= numGlyphs) {\\n      continue;\\n    }\\n    codes.push({ fontCharCode: charCode | 0, glyphId: glyphs[charCode] });\\n  }\\n  if (toUnicodeExtraMap) {\\n    for (const [unicode, glyphId] of toUnicodeExtraMap) {\\n      if (glyphId >= numGlyphs) {\\n        continue;\\n      }\\n      codes.push({ fontCharCode: unicode, glyphId });\\n    }\\n  }\\n  \u002F\u002F Some fonts have zero glyphs and are used only for text selection, but\\n  \u002F\u002F there needs to be at least one to build a valid cmap table.\\n  if (codes.length === 0) {\\n    codes.push({ fontCharCode: 0, glyphId: 0 });\\n  }\\n  codes.sort((a, b) => a.fontCharCode - b.fontCharCode);\\n\\n  \u002F\u002F Split the sorted codes into ranges.\\n  const ranges = [];\\n  const length = codes.length;\\n  for (let n = 0; n \u003C length; ) {\\n    const start = codes[n].fontCharCode;\\n    const codeIndices = [codes[n].glyphId];\\n    ++n;\\n    let end = start;\\n    while (n \u003C length && end + 1 === codes[n].fontCharCode) {\\n      codeIndices.push(codes[n].glyphId);\\n      ++end;\\n      ++n;\\n      if (end === 0xffff) {\\n        break;\\n      }\\n    }\\n    ranges.push([start, end, codeIndices]);\\n  }\\n\\n  return ranges;\\n}\\n\\nfunction createCmapTable(glyphs, toUnicodeExtraMap, numGlyphs) {\\n  const ranges = getRanges(glyphs, toUnicodeExtraMap, numGlyphs);\\n  const numTables = ranges.at(-1)[1] > 0xffff ? 2 : 1;\\n  let cmap =\\n    \\\"\\\\x00\\\\x00\\\" + \u002F\u002F version\\n    string16(numTables) + \u002F\u002F numTables\\n    \\\"\\\\x00\\\\x03\\\" + \u002F\u002F platformID\\n    \\\"\\\\x00\\\\x01\\\" + \u002F\u002F encodingID\\n    string32(4 + numTables * 8); \u002F\u002F start of the table record\\n\\n  let i, ii, j, jj;\\n  for (i = ranges.length - 1; i >= 0; --i) {\\n    if (ranges[i][0] \u003C= 0xffff) {\\n      break;\\n    }\\n  }\\n  const bmpLength = i + 1;\\n\\n  if (ranges[i][0] \u003C 0xffff && ranges[i][1] === 0xffff) {\\n    ranges[i][1] = 0xfffe;\\n  }\\n  const trailingRangesCount = ranges[i][1] \u003C 0xffff ? 1 : 0;\\n  const segCount = bmpLength + trailingRangesCount;\\n  const searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2);\\n\\n  \u002F\u002F Fill up the 4 parallel arrays describing the segments.\\n  let startCount = \\\"\\\";\\n  let endCount = \\\"\\\";\\n  let idDeltas = \\\"\\\";\\n  let idRangeOffsets = \\\"\\\";\\n  let glyphsIds = \\\"\\\";\\n  let bias = 0;\\n\\n  let range, start, end, codes;\\n  for (i = 0, ii = bmpLength; i \u003C ii; i++) {\\n    range = ranges[i];\\n    start = range[0];\\n    end = range[1];\\n    startCount += string16(start);\\n    endCount += string16(end);\\n    codes = range[2];\\n    let contiguous = true;\\n    for (j = 1, jj = codes.length; j \u003C jj; ++j) {\\n      if (codes[j] !== codes[j - 1] + 1) {\\n        contiguous = false;\\n        break;\\n      }\\n    }\\n    if (!contiguous) {\\n      const offset = (segCount - i) * 2 + bias * 2;\\n      bias += end - start + 1;\\n\\n      idDeltas += string16(0);\\n      idRangeOffsets += string16(offset);\\n\\n      for (j = 0, jj = codes.length; j \u003C jj; ++j) {\\n        glyphsIds += string16(codes[j]);\\n      }\\n    } else {\\n      const startCode = codes[0];\\n\\n      idDeltas += string16((startCode - start) & 0xffff);\\n      idRangeOffsets += string16(0);\\n    }\\n  }\\n\\n  if (trailingRangesCount > 0) {\\n    endCount += \\\"\\\\xFF\\\\xFF\\\";\\n    startCount += \\\"\\\\xFF\\\\xFF\\\";\\n    idDeltas += \\\"\\\\x00\\\\x01\\\";\\n    idRangeOffsets += \\\"\\\\x00\\\\x00\\\";\\n  }\\n\\n  const format314 =\\n    \\\"\\\\x00\\\\x00\\\" + \u002F\u002F language\\n    string16(2 * segCount) +\\n    string16(searchParams.range) +\\n    string16(searchParams.entry) +\\n    string16(searchParams.rangeShift) +\\n    endCount +\\n    \\\"\\\\x00\\\\x00\\\" +\\n    startCount +\\n    idDeltas +\\n    idRangeOffsets +\\n    glyphsIds;\\n\\n  let format31012 = \\\"\\\";\\n  let header31012 = \\\"\\\";\\n  if (numTables > 1) {\\n    cmap +=\\n      \\\"\\\\x00\\\\x03\\\" + \u002F\u002F platformID\\n      \\\"\\\\x00\\\\x0A\\\" + \u002F\u002F encodingID\\n      string32(4 + numTables * 8 + 4 + format314.length); \u002F\u002F start of the table record\\n    format31012 = \\\"\\\";\\n    for (i = 0, ii = ranges.length; i \u003C ii; i++) {\\n      range = ranges[i];\\n      start = range[0];\\n      codes = range[2];\\n      let code = codes[0];\\n      for (j = 1, jj = codes.length; j \u003C jj; ++j) {\\n        if (codes[j] !== codes[j - 1] + 1) {\\n          end = range[0] + j - 1;\\n          format31012 +=\\n            string32(start) + \u002F\u002F startCharCode\\n            string32(end) + \u002F\u002F endCharCode\\n            string32(code); \u002F\u002F startGlyphID\\n          start = end + 1;\\n          code = codes[j];\\n        }\\n      }\\n      format31012 +=\\n        string32(start) + \u002F\u002F startCharCode\\n        string32(range[1]) + \u002F\u002F endCharCode\\n        string32(code); \u002F\u002F startGlyphID\\n    }\\n    header31012 =\\n      \\\"\\\\x00\\\\x0C\\\" + \u002F\u002F format\\n      \\\"\\\\x00\\\\x00\\\" + \u002F\u002F reserved\\n      string32(format31012.length + 16) + \u002F\u002F length\\n      \\\"\\\\x00\\\\x00\\\\x00\\\\x00\\\" + \u002F\u002F language\\n      string32(format31012.length \u002F 12); \u002F\u002F nGroups\\n  }\\n\\n  return (\\n    cmap +\\n    \\\"\\\\x00\\\\x04\\\" + \u002F\u002F format\\n    string16(format314.length + 4) + \u002F\u002F length\\n    format314 +\\n    header31012 +\\n    format31012\\n  );\\n}\\n\\nfunction validateOS2Table(os2, file) {\\n  file.pos = (file.start || 0) + os2.offset;\\n  const version = file.getUint16();\\n  \u002F\u002F TODO verify all OS\u002F2 tables fields, but currently we validate only those\\n  \u002F\u002F that give us issues\\n  file.skip(60); \u002F\u002F skipping type, misc sizes, panose, unicode ranges\\n  const selection = file.getUint16();\\n  if (version \u003C 4 && selection & 0x0300) {\\n    return false;\\n  }\\n  const firstChar = file.getUint16();\\n  const lastChar = file.getUint16();\\n  if (firstChar > lastChar) {\\n    return false;\\n  }\\n  file.skip(6); \u002F\u002F skipping sTypoAscender\u002FDescender\u002FLineGap\\n  const usWinAscent = file.getUint16();\\n  if (usWinAscent === 0) {\\n    \u002F\u002F makes font unreadable by windows\\n    return false;\\n  }\\n\\n  \u002F\u002F OS\u002F2 appears to be valid, resetting some fields\\n  os2.data[8] = os2.data[9] = 0; \u002F\u002F IE rejects fonts if fsType != 0\\n  return true;\\n}\\n\\nfunction createOS2Table(properties, charstrings, override) {\\n  override ||= {\\n    unitsPerEm: 0,\\n    yMax: 0,\\n    yMin: 0,\\n    ascent: 0,\\n    descent: 0,\\n  };\\n\\n  let ulUnicodeRange1 = 0;\\n  let ulUnicodeRange2 = 0;\\n  let ulUnicodeRange3 = 0;\\n  let ulUnicodeRange4 = 0;\\n\\n  let firstCharIndex = null;\\n  let lastCharIndex = 0;\\n  let position = -1;\\n\\n  if (charstrings) {\\n    for (let code in charstrings) {\\n      code |= 0;\\n      if (firstCharIndex > code || !firstCharIndex) {\\n        firstCharIndex = code;\\n      }\\n      if (lastCharIndex \u003C code) {\\n        lastCharIndex = code;\\n      }\\n\\n      position = getUnicodeRangeFor(code, position);\\n      if (position \u003C 32) {\\n        ulUnicodeRange1 |= 1 \u003C\u003C position;\\n      } else if (position \u003C 64) {\\n        ulUnicodeRange2 |= 1 \u003C\u003C (position - 32);\\n      } else if (position \u003C 96) {\\n        ulUnicodeRange3 |= 1 \u003C\u003C (position - 64);\\n      } else if (position \u003C 123) {\\n        ulUnicodeRange4 |= 1 \u003C\u003C (position - 96);\\n      } else {\\n        throw new FormatError(\\n          \\\"Unicode ranges Bits > 123 are reserved for internal usage\\\"\\n        );\\n      }\\n    }\\n    if (lastCharIndex > 0xffff) {\\n      \u002F\u002F OS2 only supports a 16 bit int. The spec says if supplementary\\n      \u002F\u002F characters are used the field should just be set to 0xFFFF.\\n      lastCharIndex = 0xffff;\\n    }\\n  } else {\\n    \u002F\u002F TODO\\n    firstCharIndex = 0;\\n    lastCharIndex = 255;\\n  }\\n\\n  const bbox = properties.bbox || [0, 0, 0, 0];\\n  const unitsPerEm =\\n    override.unitsPerEm ||\\n    (properties.fontMatrix\\n      ? 1 \u002F Math.max(...properties.fontMatrix.slice(0, 4).map(Math.abs))\\n      : 1000);\\n\\n  \u002F\u002F if the font units differ to the PDF glyph space units\\n  \u002F\u002F then scale up the values\\n  const scale = properties.ascentScaled\\n    ? 1.0\\n    : unitsPerEm \u002F PDF_GLYPH_SPACE_UNITS;\\n\\n  const typoAscent =\\n    override.ascent || Math.round(scale * (properties.ascent || bbox[3]));\\n  let typoDescent =\\n    override.descent || Math.round(scale * (properties.descent || bbox[1]));\\n  if (typoDescent > 0 && properties.descent > 0 && bbox[1] \u003C 0) {\\n    typoDescent = -typoDescent; \u002F\u002F fixing incorrect descent\\n  }\\n  const winAscent = override.yMax || typoAscent;\\n  const winDescent = -override.yMin || -typoDescent;\\n\\n  return (\\n    \\\"\\\\x00\\\\x03\\\" + \u002F\u002F version\\n    \\\"\\\\x02\\\\x24\\\" + \u002F\u002F xAvgCharWidth\\n    \\\"\\\\x01\\\\xF4\\\" + \u002F\u002F usWeightClass\\n    \\\"\\\\x00\\\\x05\\\" + \u002F\u002F usWidthClass\\n    \\\"\\\\x00\\\\x00\\\" + \u002F\u002F fstype (0 to let the font loads via font-face on IE)\\n    \\\"\\\\x02\\\\x8A\\\" + \u002F\u002F ySubscriptXSize\\n    \\\"\\\\x02\\\\xBB\\\" + \u002F\u002F ySubscriptYSize\\n    \\\"\\\\x00\\\\x00\\\" + \u002F\u002F ySubscriptXOffset\\n    \\\"\\\\x00\\\\x8C\\\" + \u002F\u002F ySubscriptYOffset\\n    \\\"\\\\x02\\\\x8A\\\" + \u002F\u002F ySuperScriptXSize\\n    \\\"\\\\x02\\\\xBB\\\" + \u002F\u002F ySuperScriptYSize\\n    \\\"\\\\x00\\\\x00\\\" + \u002F\u002F ySuperScriptXOffset\\n    \\\"\\\\x01\\\\xDF\\\" + \u002F\u002F ySuperScriptYOffset\\n    \\\"\\\\x00\\\\x31\\\" + \u002F\u002F yStrikeOutSize\\n    \\\"\\\\x01\\\\x02\\\" + \u002F\u002F yStrikeOutPosition\\n    \\\"\\\\x00\\\\x00\\\" + \u002F\u002F sFamilyClass\\n    \\\"\\\\x00\\\\x00\\\\x06\\\" +\\n    String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) +\\n    \\\"\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\\x00\\\" + \u002F\u002F Panose\\n    string32(ulUnicodeRange1) + \u002F\u002F ulUnicodeRange1 (Bits 0-31)\\n    string32(ulUnicodeRange2) + \u002F\u002F ulUnicodeRange2 (Bits 32-63)\\n    string32(ulUnicodeRange3) + \u002F\u002F ulUnicodeRange3 (Bits 64-95)\\n    string32(ulUnicodeRange4) + \u002F\u002F ulUnicodeRange4 (Bits 96-127)\\n    \\\"\\\\x2A\\\\x32\\\\x31\\\\x2A\\\" + \u002F\u002F achVendID\\n    string16(properties.italicAngle ? 1 : 0) + \u002F\u002F fsSelection\\n    string16(firstCharIndex || properties.firstChar) + \u002F\u002F usFirstCharIndex\\n    string16(lastCharIndex || properties.lastChar) + \u002F\u002F usLastCharIndex\\n    string16(typoAscent) + \u002F\u002F sTypoAscender\\n    string16(typoDescent) + \u002F\u002F sTypoDescender\\n    \\\"\\\\x00\\\\x64\\\" + \u002F\u002F sTypoLineGap (7%-10% of the unitsPerEM value)\\n    string16(winAscent) + \u002F\u002F usWinAscent\\n    string16(winDescent) + \u002F\u002F usWinDescent\\n    \\\"\\\\x00\\\\x00\\\\x00\\\\x00\\\" + \u002F\u002F ulCodePageRange1 (Bits 0-31)\\n    \\\"\\\\x00\\\\x00\\\\x00\\\\x00\\\" + \u002F\u002F ulCodePageRange2 (Bits 32-63)\\n    string16(properties.xHeight) + \u002F\u002F sxHeight\\n    string16(properties.capHeight) + \u002F\u002F sCapHeight\\n    string16(0) + \u002F\u002F usDefaultChar\\n    string16(firstCharIndex || properties.firstChar) + \u002F\u002F usBreakChar\\n    \\\"\\\\x00\\\\x03\\\"\\n  ); \u002F\u002F usMaxContext\\n}\\n\\nfunction createPostTable(properties) {\\n  const angle = Math.floor(properties.italicAngle * 2 ** 16);\\n  return (\\n    \\\"\\\\x00\\\\x03\\\\x00\\\\x00\\\" + \u002F\u002F Version number\\n    string32(angle) + \u002F\u002F italicAngle\\n    \\\"\\\\x00\\\\x00\\\" + \u002F\u002F underlinePosition\\n    \\\"\\\\x00\\\\x00\\\" + \u002F\u002F underlineThickness\\n    string32(properties.fixedPitch ? 1 : 0) + \u002F\u002F isFixedPitch\\n    \\\"\\\\x00\\\\x00\\\\x00\\\\x00\\\" + \u002F\u002F minMemType42\\n    \\\"\\\\x00\\\\x00\\\\x00\\\\x00\\\" + \u002F\u002F maxMemType42\\n    \\\"\\\\x00\\\\x00\\\\x00\\\\x00\\\" + \u002F\u002F minMemType1\\n    \\\"\\\\x00\\\\x00\\\\x00\\\\x00\\\"\\n  ); \u002F\u002F maxMemType1\\n}\\n\\nfunction createPostscriptName(name) {\\n  \u002F\u002F See https:\u002F\u002Fdocs.microsoft.com\u002Fen-us\u002Ftypography\u002Fopentype\u002Fspec\u002Frecom#name.\\n  return name.replaceAll(\u002F[^\\\\x21-\\\\x7E]|[[\\\\](){}\u003C>\u002F%]\u002Fg, \\\"\\\").slice(0, 63);\\n}\\n\\nfunction createNameTable(name, proto) {\\n  if (!proto) {\\n    proto = [[], []]; \u002F\u002F no strings and unicode strings\\n  }\\n\\n  const strings = [\\n    proto[0][0] || \\\"Original licence\\\", \u002F\u002F 0.Copyright\\n    proto[0][1] || name, \u002F\u002F 1.Font family\\n    proto[0][2] || \\\"Unknown\\\", \u002F\u002F 2.Font subfamily (font weight)\\n    proto[0][3] || \\\"uniqueID\\\", \u002F\u002F 3.Unique ID\\n    proto[0][4] || name, \u002F\u002F 4.Full font name\\n    proto[0][5] || \\\"Version 0.11\\\", \u002F\u002F 5.Version\\n    proto[0][6] || createPostscriptName(name), \u002F\u002F 6.Postscript name\\n    proto[0][7] || \\\"Unknown\\\", \u002F\u002F 7.Trademark\\n    proto[0][8] || \\\"Unknown\\\", \u002F\u002F 8.Manufacturer\\n    proto[0][9] || \\\"Unknown\\\", \u002F\u002F 9.Designer\\n  ];\\n\\n  \u002F\u002F Mac want 1-byte per character strings while Windows want\\n  \u002F\u002F 2-bytes per character, so duplicate the names table\\n  const stringsUnicode = [];\\n  let i, ii, j, jj, str;\\n  for (i = 0, ii = strings.length; i \u003C ii; i++) {\\n    str = proto[1][i] || strings[i];\\n\\n    const strBufUnicode = [];\\n    for (j = 0, jj = str.length; j \u003C jj; j++) {\\n      strBufUnicode.push(string16(str.charCodeAt(j)));\\n    }\\n    stringsUnicode.push(strBufUnicode.join(\\\"\\\"));\\n  }\\n\\n  const names = [strings, stringsUnicode];\\n  const platforms = [\\\"\\\\x00\\\\x01\\\", \\\"\\\\x00\\\\x03\\\"];\\n  const encodings = [\\\"\\\\x00\\\\x00\\\", \\\"\\\\x00\\\\x01\\\"];\\n  const languages = [\\\"\\\\x00\\\\x00\\\", \\\"\\\\x04\\\\x09\\\"];\\n\\n  const namesRecordCount = strings.length * platforms.length;\\n  let nameTable =\\n    \\\"\\\\x00\\\\x00\\\" + \u002F\u002F format\\n    string16(namesRecordCount) + \u002F\u002F Number of names Record\\n    string16(namesRecordCount * 12 + 6); \u002F\u002F Storage\\n\\n  \u002F\u002F Build the name records field\\n  let strOffset = 0;\\n  for (i = 0, ii = platforms.length; i \u003C ii; i++) {\\n    const strs = names[i];\\n    for (j = 0, jj = strs.length; j \u003C jj; j++) {\\n      str = strs[j];\\n      const nameRecord =\\n        platforms[i] + \u002F\u002F platform ID\\n        encodings[i] + \u002F\u002F encoding ID\\n        languages[i] + \u002F\u002F language ID\\n        string16(j) + \u002F\u002F name ID\\n        string16(str.length) +\\n        string16(strOffset);\\n      nameTable += nameRecord;\\n      strOffset += str.length;\\n    }\\n  }\\n\\n  nameTable += strings.join(\\\"\\\") + stringsUnicode.join(\\\"\\\");\\n  return nameTable;\\n}\\n\\n\u002F**\\n * 'Font' is the class the outside world should use, it encapsulate all the font\\n * decoding logics whatever type it is (assuming the font type is supported).\\n *\u002F\\nclass Font {\\n  constructor(name, file, properties, evaluatorOptions) {\\n    this.name = name;\\n    this.psName = null;\\n    this.mimetype = null;\\n    this.disableFontFace = evaluatorOptions.disableFontFace;\\n    this.fontExtraProperties = evaluatorOptions.fontExtraProperties;\\n\\n    this.loadedName = properties.loadedName;\\n    this.isType3Font = properties.isType3Font;\\n    this.missingFile = false;\\n    this.cssFontInfo = properties.cssFontInfo;\\n\\n    this._charsCache = Object.create(null);\\n    this._glyphCache = Object.create(null);\\n\\n    let isSerifFont = !!(properties.flags & FontFlags.Serif);\\n    \u002F\u002F Fallback to checking the font name, in order to improve text-selection,\\n    \u002F\u002F since the \u002FFlags-entry is often wrong (fixes issue13845.pdf).\\n    if (!isSerifFont && !properties.isSimulatedFlags) {\\n      const baseName = name.replaceAll(\u002F[,_]\u002Fg, \\\"-\\\").split(\\\"-\\\", 1)[0],\\n        serifFonts = getSerifFonts();\\n      for (const namePart of baseName.split(\\\"+\\\")) {\\n        if (serifFonts[namePart]) {\\n          isSerifFont = true;\\n          break;\\n        }\\n      }\\n    }\\n    this.isSerifFont = isSerifFont;\\n\\n    this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\\n    this.isMonospace = !!(properties.flags & FontFlags.FixedPitch);\\n\\n    let { type, subtype } = properties;\\n    this.type = type;\\n    this.subtype = subtype;\\n    this.systemFontInfo = properties.systemFontInfo;\\n\\n    const matches = name.match(\u002F^InvalidPDFjsFont_(.*)_\\\\d+$\u002F);\\n    this.isInvalidPDFjsFont = !!matches;\\n    if (this.isInvalidPDFjsFont) {\\n      this.fallbackName = matches[1];\\n    } else if (this.isMonospace) {\\n      this.fallbackName = \\\"monospace\\\";\\n    } else if (this.isSerifFont) {\\n      this.fallbackName = \\\"serif\\\";\\n    } else {\\n      this.fallbackName = \\\"sans-serif\\\";\\n    }\\n\\n    if (this.systemFontInfo?.guessFallback) {\\n      \u002F\u002F Once the fallback name is guessed, we don't want to guess it again.\\n      this.systemFontInfo.guessFallback = false;\\n      this.systemFontInfo.css += `,${this.fallbackName}`;\\n    }\\n\\n    this.differences = properties.differences;\\n    this.widths = properties.widths;\\n    this.defaultWidth = properties.defaultWidth;\\n    this.composite = properties.composite;\\n    this.cMap = properties.cMap;\\n    this.capHeight = properties.capHeight \u002F PDF_GLYPH_SPACE_UNITS;\\n    this.ascent = properties.ascent \u002F PDF_GLYPH_SPACE_UNITS;\\n    this.descent = properties.descent \u002F PDF_GLYPH_SPACE_UNITS;\\n    this.lineHeight = this.ascent - this.descent;\\n    this.fontMatrix = properties.fontMatrix;\\n    this.bbox = properties.bbox;\\n    this.defaultEncoding = properties.defaultEncoding;\\n\\n    this.toUnicode = properties.toUnicode;\\n    this.toFontChar = [];\\n\\n    if (properties.type === \\\"Type3\\\") {\\n      for (let charCode = 0; charCode \u003C 256; charCode++) {\\n        this.toFontChar[charCode] =\\n          this.differences[charCode] || properties.defaultEncoding[charCode];\\n      }\\n      return;\\n    }\\n\\n    this.cidEncoding = properties.cidEncoding || \\\"\\\";\\n    this.vertical = !!properties.vertical;\\n    if (this.vertical) {\\n      this.vmetrics = properties.vmetrics;\\n      this.defaultVMetrics = properties.defaultVMetrics;\\n    }\\n\\n    if (!file || file.isEmpty) {\\n      if (file) {\\n        \u002F\u002F Some bad PDF generators will include empty font files,\\n        \u002F\u002F attempting to recover by assuming that no file exists.\\n        warn('Font file is empty in \\\"' + name + '\\\" (' + this.loadedName + \\\")\\\");\\n      }\\n      this.fallbackToSystemFont(properties);\\n      return;\\n    }\\n\\n    \u002F\u002F Parse the font file to determine the correct type\u002Fsubtype, rather than\\n    \u002F\u002F relying on the (often incorrect) data in the font dictionary; (see e.g.\\n    \u002F\u002F  issue6782.pdf, issue7598.pdf, and issue9949.pdf).\\n    [type, subtype] = getFontFileType(file, properties);\\n\\n    if (type !== this.type || subtype !== this.subtype) {\\n      info(\\n        \\\"Inconsistent font file Type\u002FSubType, expected: \\\" +\\n          `${this.type}\u002F${this.subtype} but found: ${type}\u002F${subtype}.`\\n      );\\n    }\\n\\n    let data;\\n    try {\\n      switch (type) {\\n        case \\\"MMType1\\\":\\n          info(\\\"MMType1 font (\\\" + name + \\\"), falling back to Type1.\\\");\\n        \u002F* falls through *\u002F\\n        case \\\"Type1\\\":\\n        case \\\"CIDFontType0\\\":\\n          this.mimetype = \\\"font\u002Fopentype\\\";\\n\\n          const cff =\\n            subtype === \\\"Type1C\\\" || subtype === \\\"CIDFontType0C\\\"\\n              ? new CFFFont(file, properties)\\n              : new Type1Font(name, file, properties);\\n\\n          adjustWidths(properties);\\n\\n          \u002F\u002F Wrap the CFF data inside an OTF font file\\n          data = this.convert(name, cff, properties);\\n          break;\\n\\n        case \\\"OpenType\\\":\\n        case \\\"TrueType\\\":\\n        case \\\"CIDFontType2\\\":\\n          this.mimetype = \\\"font\u002Fopentype\\\";\\n\\n          \u002F\u002F Repair the TrueType file. It is can be damaged in the point of\\n          \u002F\u002F view of the sanitizer\\n          data = this.checkAndRepair(name, file, properties);\\n\\n          adjustWidths(properties);\\n\\n          if (this.isOpenType) {\\n            type = \\\"OpenType\\\";\\n          }\\n          break;\\n\\n        default:\\n          throw new FormatError(`Font ${type} is not supported`);\\n      }\\n    } catch (e) {\\n      warn(e);\\n      this.fallbackToSystemFont(properties);\\n      return;\\n    }\\n\\n    amendFallbackToUnicode(properties);\\n    this.data = data;\\n\\n    \u002F\u002F Transfer some properties again that could change during font conversion\\n    this.type = type;\\n    this.subtype = subtype;\\n    this.fontMatrix = properties.fontMatrix;\\n    this.widths = properties.widths;\\n    this.defaultWidth = properties.defaultWidth;\\n    this.toUnicode = properties.toUnicode;\\n    this.seacMap = properties.seacMap;\\n  }\\n\\n  get renderer() {\\n    const renderer = FontRendererFactory.create(this, SEAC_ANALYSIS_ENABLED);\\n    return shadow(this, \\\"renderer\\\", renderer);\\n  }\\n\\n  exportData() {\\n    const exportDataProps = this.fontExtraProperties\\n      ? [...EXPORT_DATA_PROPERTIES, ...EXPORT_DATA_EXTRA_PROPERTIES]\\n      : EXPORT_DATA_PROPERTIES;\\n\\n    const data = Object.create(null);\\n    for (const prop of exportDataProps) {\\n      const value = this[prop];\\n      \u002F\u002F Ignore properties that haven't been explicitly set.\\n      if (value !== undefined) {\\n        data[prop] = value;\\n      }\\n    }\\n    return data;\\n  }\\n\\n  fallbackToSystemFont(properties) {\\n    this.missingFile = true;\\n    \u002F\u002F The file data is not specified. Trying to fix the font name\\n    \u002F\u002F to be used with the canvas.font.\\n    const { name, type } = this;\\n    let fontName = normalizeFontName(name);\\n    const stdFontMap = getStdFontMap(),\\n      nonStdFontMap = getNonStdFontMap();\\n    const isStandardFont = !!stdFontMap[fontName];\\n    const isMappedToStandardFont = !!(\\n      nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]\\n    );\\n\\n    fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;\\n\\n    const fontBasicMetricsMap = getFontBasicMetrics();\\n    const metrics = fontBasicMetricsMap[fontName];\\n    if (metrics) {\\n      if (isNaN(this.ascent)) {\\n        this.ascent = metrics.ascent \u002F PDF_GLYPH_SPACE_UNITS;\\n      }\\n      if (isNaN(this.descent)) {\\n        this.descent = metrics.descent \u002F PDF_GLYPH_SPACE_UNITS;\\n      }\\n      if (isNaN(this.capHeight)) {\\n        this.capHeight = metrics.capHeight \u002F PDF_GLYPH_SPACE_UNITS;\\n      }\\n    }\\n\\n    this.bold = \u002Fbold\u002Fgi.test(fontName);\\n    this.italic = \u002Foblique|italic\u002Fgi.test(fontName);\\n\\n    \u002F\u002F Use 'name' instead of 'fontName' here because the original\\n    \u002F\u002F name ArialBlack for example will be replaced by Helvetica.\\n    this.black = \u002FBlack\u002Fg.test(name);\\n\\n    \u002F\u002F Use 'name' instead of 'fontName' here because the original\\n    \u002F\u002F name ArialNarrow for example will be replaced by Helvetica.\\n    const isNarrow = \u002FNarrow\u002Fg.test(name);\\n\\n    \u002F\u002F if at least one width is present, remeasure all chars when exists\\n    this.remeasure =\\n      (!isStandardFont || isNarrow) && Object.keys(this.widths).length > 0;\\n    if (\\n      (isStandardFont || isMappedToStandardFont) &&\\n      type === \\\"CIDFontType2\\\" &&\\n      this.cidEncoding.startsWith(\\\"Identity-\\\")\\n    ) {\\n      const cidToGidMap = properties.cidToGidMap;\\n      \u002F\u002F Standard fonts might be embedded as CID font without glyph mapping.\\n      \u002F\u002F Building one based on GlyphMapForStandardFonts.\\n      const map = [];\\n      applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts());\\n\\n      if (\u002FArial-?Black\u002Fi.test(name)) {\\n        applyStandardFontGlyphMap(map, getSupplementalGlyphMapForArialBlack());\\n      } else if (\u002FCalibri\u002Fi.test(name)) {\\n        applyStandardFontGlyphMap(map, getSupplementalGlyphMapForCalibri());\\n      }\\n\\n      \u002F\u002F Always update the glyph mapping with the `cidToGidMap` when it exists\\n      \u002F\u002F (fixes issue12418_reduced.pdf).\\n      if (cidToGidMap) {\\n        for (const charCode in map) {\\n          const cid = map[charCode];\\n          if (cidToGidMap[cid] !== undefined) {\\n            map[+charCode] = cidToGidMap[cid];\\n          }\\n        }\\n        \u002F\u002F When the \u002FCIDToGIDMap is \\\"incomplete\\\", fallback to the included\\n        \u002F\u002F \u002FToUnicode-map regardless of its encoding (fixes issue11915.pdf).\\n        if (\\n          cidToGidMap.length !== this.toUnicode.length &&\\n          properties.hasIncludedToUnicodeMap &&\\n          this.toUnicode instanceof IdentityToUnicodeMap\\n        ) {\\n          this.toUnicode.forEach(function (charCode, unicodeCharCode) {\\n            const cid = map[charCode];\\n            if (cidToGidMap[cid] === undefined) {\\n              map[+charCode] = unicodeCharCode;\\n            }\\n          });\\n        }\\n      }\\n\\n      if (!(this.toUnicode instanceof IdentityToUnicodeMap)) {\\n        this.toUnicode.forEach(function (charCode, unicodeCharCode) {\\n          map[+charCode] = unicodeCharCode;\\n        });\\n      }\\n      this.toFontChar = map;\\n      this.toUnicode = new ToUnicodeMap(map);\\n    } else if (\u002FSymbol\u002Fi.test(fontName)) {\\n      this.toFontChar = buildToFontChar(\\n        SymbolSetEncoding,\\n        getGlyphsUnicode(),\\n        this.differences\\n      );\\n    } else if (\u002FDingbats\u002Fi.test(fontName)) {\\n      this.toFontChar = buildToFontChar(\\n        ZapfDingbatsEncoding,\\n        getDingbatsGlyphsUnicode(),\\n        this.differences\\n      );\\n    } else if (isStandardFont || isMappedToStandardFont) {\\n      const map = buildToFontChar(\\n        this.defaultEncoding,\\n        getGlyphsUnicode(),\\n        this.differences\\n      );\\n\\n      if (\\n        type === \\\"CIDFontType2\\\" &&\\n        !this.cidEncoding.startsWith(\\\"Identity-\\\") &&\\n        !(this.toUnicode instanceof IdentityToUnicodeMap)\\n      ) {\\n        this.toUnicode.forEach(function (charCode, unicodeCharCode) {\\n          map[+charCode] = unicodeCharCode;\\n        });\\n      }\\n      this.toFontChar = map;\\n    } else {\\n      const glyphsUnicodeMap = getGlyphsUnicode();\\n      const map = [];\\n      this.toUnicode.forEach((charCode, unicodeCharCode) => {\\n        if (!this.composite) {\\n          const glyphName =\\n            this.differences[charCode] || this.defaultEncoding[charCode];\\n          const unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\\n          if (unicode !== -1) {\\n            unicodeCharCode = unicode;\\n          }\\n        }\\n        map[+charCode] = unicodeCharCode;\\n      });\\n\\n      \u002F\u002F Attempt to improve the glyph mapping for (some) composite fonts that\\n      \u002F\u002F appear to lack meaningful ToUnicode data.\\n      if (this.composite && this.toUnicode instanceof IdentityToUnicodeMap) {\\n        if (\u002FTahoma|Verdana\u002Fi.test(name)) {\\n          \u002F\u002F Fixes issue15719.pdf and issue11242_reduced.pdf.\\n          applyStandardFontGlyphMap(map, getGlyphMapForStandardFonts());\\n        }\\n      }\\n      this.toFontChar = map;\\n    }\\n\\n    amendFallbackToUnicode(properties);\\n    this.loadedName = fontName.split(\\\"-\\\", 1)[0];\\n  }\\n\\n  checkAndRepair(name, font, properties) {\\n    const VALID_TABLES = [\\n      \\\"OS\u002F2\\\",\\n      \\\"cmap\\\",\\n      \\\"head\\\",\\n      \\\"hhea\\\",\\n      \\\"hmtx\\\",\\n      \\\"maxp\\\",\\n      \\\"name\\\",\\n      \\\"post\\\",\\n      \\\"loca\\\",\\n      \\\"glyf\\\",\\n      \\\"fpgm\\\",\\n      \\\"prep\\\",\\n      \\\"cvt \\\",\\n      \\\"CFF \\\",\\n    ];\\n\\n    function readTables(file, numTables) {\\n      const tables = Object.create(null);\\n      tables[\\\"OS\u002F2\\\"] = null;\\n      tables.cmap = null;\\n      tables.head = null;\\n      tables.hhea = null;\\n      tables.hmtx = null;\\n      tables.maxp = null;\\n      tables.name = null;\\n      tables.post = null;\\n\\n      for (let i = 0; i \u003C numTables; i++) {\\n        const table = readTableEntry(file);\\n        if (!VALID_TABLES.includes(table.tag)) {\\n          continue; \u002F\u002F skipping table if it's not a required or optional table\\n        }\\n        if (table.length === 0) {\\n          continue; \u002F\u002F skipping empty tables\\n        }\\n        tables[table.tag] = table;\\n      }\\n      return tables;\\n    }\\n\\n    function readTableEntry(file) {\\n      const tag = file.getString(4);\\n\\n      const checksum = file.getInt32() >>> 0;\\n      const offset = file.getInt32() >>> 0;\\n      const length = file.getInt32() >>> 0;\\n\\n      \u002F\u002F Read the table associated data\\n      const previousPosition = file.pos;\\n      file.pos = file.start || 0;\\n      file.skip(offset);\\n      const data = file.getBytes(length);\\n      file.pos = previousPosition;\\n\\n      if (tag === \\\"head\\\") {\\n        \u002F\u002F clearing checksum adjustment\\n        data[8] = data[9] = data[10] = data[11] = 0;\\n        data[17] |= 0x20; \u002F\u002F Set font optimized for cleartype flag.\\n      }\\n\\n      return {\\n        tag,\\n        checksum,\\n        length,\\n        offset,\\n        data,\\n      };\\n    }\\n\\n    function readOpenTypeHeader(ttf) {\\n      return {\\n        version: ttf.getString(4),\\n        numTables: ttf.getUint16(),\\n        searchRange: ttf.getUint16(),\\n        entrySelector: ttf.getUint16(),\\n        rangeShift: ttf.getUint16(),\\n      };\\n    }\\n\\n    function readTrueTypeCollectionHeader(ttc) {\\n      const ttcTag = ttc.getString(4);\\n      assert(ttcTag === \\\"ttcf\\\", \\\"Must be a TrueType Collection font.\\\");\\n\\n      const majorVersion = ttc.getUint16();\\n      const minorVersion = ttc.getUint16();\\n      const numFonts = ttc.getInt32() >>> 0;\\n      const offsetTable = [];\\n      for (let i = 0; i \u003C numFonts; i++) {\\n        offsetTable.push(ttc.getInt32() >>> 0);\\n      }\\n\\n      const header = {\\n        ttcTag,\\n        majorVersion,\\n        minorVersion,\\n        numFonts,\\n        offsetTable,\\n      };\\n      switch (majorVersion) {\\n        case 1:\\n          return header;\\n        case 2:\\n          header.dsigTag = ttc.getInt32() >>> 0;\\n          header.dsigLength = ttc.getInt32() >>> 0;\\n          header.dsigOffset = ttc.getInt32() >>> 0;\\n          return header;\\n      }\\n      throw new FormatError(\\n        `Invalid TrueType Collection majorVersion: ${majorVersion}.`\\n      );\\n    }\\n\\n    function readTrueTypeCollectionData(ttc, fontName) {\\n      const { numFonts, offsetTable } = readTrueTypeCollectionHeader(ttc);\\n      const fontNameParts = fontName.split(\\\"+\\\");\\n      let fallbackData;\\n\\n      for (let i = 0; i \u003C numFonts; i++) {\\n        ttc.pos = (ttc.start || 0) + offsetTable[i];\\n        const potentialHeader = readOpenTypeHeader(ttc);\\n        const potentialTables = readTables(ttc, potentialHeader.numTables);\\n\\n        if (!potentialTables.name) {\\n          throw new FormatError(\\n            'TrueType Collection font must contain a \\\"name\\\" table.'\\n          );\\n        }\\n        const [nameTable] = readNameTable(potentialTables.name);\\n\\n        for (let j = 0, jj = nameTable.length; j \u003C jj; j++) {\\n          for (let k = 0, kk = nameTable[j].length; k \u003C kk; k++) {\\n            const nameEntry = nameTable[j][k]?.replaceAll(\u002F\\\\s\u002Fg, \\\"\\\");\\n            if (!nameEntry) {\\n              continue;\\n            }\\n            if (nameEntry === fontName) {\\n              return {\\n                header: potentialHeader,\\n                tables: potentialTables,\\n              };\\n            }\\n            if (fontNameParts.length \u003C 2) {\\n              continue;\\n            }\\n            for (const part of fontNameParts) {\\n              if (nameEntry === part) {\\n                fallbackData = {\\n                  name: part,\\n                  header: potentialHeader,\\n                  tables: potentialTables,\\n                };\\n              }\\n            }\\n          }\\n        }\\n      }\\n      if (fallbackData) {\\n        warn(\\n          `TrueType Collection does not contain \\\"${fontName}\\\" font, ` +\\n            `falling back to \\\"${fallbackData.name}\\\" font instead.`\\n        );\\n        return {\\n          header: fallbackData.header,\\n          tables: fallbackData.tables,\\n        };\\n      }\\n      throw new FormatError(\\n        `TrueType Collection does not contain \\\"${fontName}\\\" font.`\\n      );\\n    }\\n\\n    \u002F**\\n     * Read the appropriate subtable from the cmap according to 9.6.6.4 from\\n     * PDF spec\\n     *\u002F\\n    function readCmapTable(cmap, file, isSymbolicFont, hasEncoding) {\\n      if (!cmap) {\\n        warn(\\\"No cmap table available.\\\");\\n        return {\\n          platformId: -1,\\n          encodingId: -1,\\n          mappings: [],\\n          hasShortCmap: false,\\n        };\\n      }\\n      let segment;\\n      let start = (file.start || 0) + cmap.offset;\\n      file.pos = start;\\n\\n      file.skip(2); \u002F\u002F version\\n      const numTables = file.getUint16();\\n\\n      let potentialTable;\\n      let canBreak = false;\\n      \u002F\u002F There's an order of preference in terms of which cmap subtable to\\n      \u002F\u002F use:\\n      \u002F\u002F - non-symbolic fonts the preference is a 3,1 table then a 1,0 table\\n      \u002F\u002F - symbolic fonts the preference is a 3,0 table then a 1,0 table\\n      \u002F\u002F The following takes advantage of the fact that the tables are sorted\\n      \u002F\u002F to work.\\n      for (let i = 0; i \u003C numTables; i++) {\\n        const platformId = file.getUint16();\\n        const encodingId = file.getUint16();\\n        const offset = file.getInt32() >>> 0;\\n        let useTable = false;\\n\\n        \u002F\u002F Sometimes there are multiple of the same type of table. Default\\n        \u002F\u002F to choosing the first table and skip the rest.\\n        if (\\n          potentialTable?.platformId === platformId &&\\n          potentialTable?.encodingId === encodingId\\n        ) {\\n          continue;\\n        }\\n\\n        if (\\n          platformId === 0 &&\\n          (encodingId === \u002F* Unicode Default *\u002F 0 ||\\n            encodingId === \u002F* Unicode 1.1 *\u002F 1 ||\\n            encodingId === \u002F* Unicode BMP *\u002F 3)\\n        ) {\\n          useTable = true;\\n          \u002F\u002F Continue the loop since there still may be a higher priority\\n          \u002F\u002F table.\\n        } else if (platformId === 1 && encodingId === 0) {\\n          useTable = true;\\n          \u002F\u002F Continue the loop since there still may be a higher priority\\n          \u002F\u002F table.\\n        } else if (\\n          platformId === 3 &&\\n          encodingId === 1 &&\\n          (hasEncoding || !potentialTable)\\n        ) {\\n          useTable = true;\\n          if (!isSymbolicFont) {\\n            canBreak = true;\\n          }\\n        } else if (isSymbolicFont && platformId === 3 && encodingId === 0) {\\n          useTable = true;\\n\\n          let correctlySorted = true;\\n          if (i \u003C numTables - 1) {\\n            const nextBytes = file.peekBytes(2),\\n              nextPlatformId = int16(nextBytes[0], nextBytes[1]);\\n            if (nextPlatformId \u003C platformId) {\\n              correctlySorted = false;\\n            }\\n          }\\n          if (correctlySorted) {\\n            canBreak = true;\\n          }\\n        }\\n\\n        if (useTable) {\\n          potentialTable = {\\n            platformId,\\n            encodingId,\\n            offset,\\n          };\\n        }\\n        if (canBreak) {\\n          break;\\n        }\\n      }\\n\\n      if (potentialTable) {\\n        file.pos = start + potentialTable.offset;\\n      }\\n      if (!potentialTable || file.peekByte() === -1) {\\n        warn(\\\"Could not find a preferred cmap table.\\\");\\n        return {\\n          platformId: -1,\\n          encodingId: -1,\\n          mappings: [],\\n          hasShortCmap: false,\\n        };\\n      }\\n\\n      const format = file.getUint16();\\n      let hasShortCmap = false;\\n      const mappings = [];\\n      let j, glyphId;\\n\\n      \u002F\u002F TODO(mack): refactor this cmap subtable reading logic out\\n      if (format === 0) {\\n        file.skip(2 + 2); \u002F\u002F length + language\\n\\n        for (j = 0; j \u003C 256; j++) {\\n          const index = file.getByte();\\n          if (!index) {\\n            continue;\\n          }\\n          mappings.push({\\n            charCode: j,\\n            glyphId: index,\\n          });\\n        }\\n        hasShortCmap = true;\\n      } else if (format === 2) {\\n        file.skip(2 + 2); \u002F\u002F length + language\\n\\n        const subHeaderKeys = [];\\n        let maxSubHeaderKey = 0;\\n        \u002F\u002F Read subHeaderKeys. If subHeaderKeys[i] === 0, then i is a\\n        \u002F\u002F single-byte character. Otherwise, i is the first byte of a\\n        \u002F\u002F multi-byte character, and the value is 8*index into\\n        \u002F\u002F subHeaders.\\n        for (let i = 0; i \u003C 256; i++) {\\n          const subHeaderKey = file.getUint16() >> 3;\\n          subHeaderKeys.push(subHeaderKey);\\n          maxSubHeaderKey = Math.max(subHeaderKey, maxSubHeaderKey);\\n        }\\n        \u002F\u002F Read subHeaders. The number of entries is determined\\n        \u002F\u002F dynamically based on the subHeaderKeys found above.\\n        const subHeaders = [];\\n        for (let i = 0; i \u003C= maxSubHeaderKey; i++) {\\n          subHeaders.push({\\n            firstCode: file.getUint16(),\\n            entryCount: file.getUint16(),\\n            idDelta: signedInt16(file.getByte(), file.getByte()),\\n            idRangePos: file.pos + file.getUint16(),\\n          });\\n        }\\n        for (let i = 0; i \u003C 256; i++) {\\n          if (subHeaderKeys[i] === 0) {\\n            \u002F\u002F i is a single-byte code.\\n            file.pos = subHeaders[0].idRangePos + 2 * i;\\n            glyphId = file.getUint16();\\n            mappings.push({\\n              charCode: i,\\n              glyphId,\\n            });\\n          } else {\\n            \u002F\u002F i is the first byte of a two-byte code.\\n            const s = subHeaders[subHeaderKeys[i]];\\n            for (j = 0; j \u003C s.entryCount; j++) {\\n              const charCode = (i \u003C\u003C 8) + j + s.firstCode;\\n              file.pos = s.idRangePos + 2 * j;\\n              glyphId = file.getUint16();\\n              if (glyphId !== 0) {\\n                glyphId = (glyphId + s.idDelta) % 65536;\\n              }\\n              mappings.push({\\n                charCode,\\n                glyphId,\\n              });\\n            }\\n          }\\n        }\\n      } else if (format === 4) {\\n        file.skip(2 + 2); \u002F\u002F length + language\\n\\n        \u002F\u002F re-creating the table in format 4 since the encoding\\n        \u002F\u002F might be changed\\n        const segCount = file.getUint16() >> 1;\\n        file.skip(6); \u002F\u002F skipping range fields\\n        const segments = [];\\n        let segIndex;\\n        for (segIndex = 0; segIndex \u003C segCount; segIndex++) {\\n          segments.push({ end: file.getUint16() });\\n        }\\n        file.skip(2);\\n        for (segIndex = 0; segIndex \u003C segCount; segIndex++) {\\n          segments[segIndex].start = file.getUint16();\\n        }\\n\\n        for (segIndex = 0; segIndex \u003C segCount; segIndex++) {\\n          segments[segIndex].delta = file.getUint16();\\n        }\\n\\n        let offsetsCount = 0,\\n          offsetIndex;\\n        for (segIndex = 0; segIndex \u003C segCount; segIndex++) {\\n          segment = segments[segIndex];\\n          const rangeOffset = file.getUint16();\\n          if (!rangeOffset) {\\n            segment.offsetIndex = -1;\\n            continue;\\n          }\\n\\n          offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);\\n          segment.offsetIndex = offsetIndex;\\n          offsetsCount = Math.max(\\n            offsetsCount,\\n            offsetIndex + segment.end - segment.start + 1\\n          );\\n        }\\n\\n        const offsets = [];\\n        for (j = 0; j \u003C offsetsCount; j++) {\\n          offsets.push(file.getUint16());\\n        }\\n\\n        for (segIndex = 0; segIndex \u003C segCount; segIndex++) {\\n          segment = segments[segIndex];\\n          start = segment.start;\\n          const end = segment.end;\\n          const delta = segment.delta;\\n          offsetIndex = segment.offsetIndex;\\n\\n          for (j = start; j \u003C= end; j++) {\\n            if (j === 0xffff) {\\n              continue;\\n            }\\n\\n            glyphId = offsetIndex \u003C 0 ? j : offsets[offsetIndex + j - start];\\n            glyphId = (glyphId + delta) & 0xffff;\\n            mappings.push({\\n              charCode: j,\\n              glyphId,\\n            });\\n          }\\n        }\\n      } else if (format === 6) {\\n        file.skip(2 + 2); \u002F\u002F length + language\\n\\n        \u002F\u002F Format 6 is a 2-bytes dense mapping, which means the font data\\n        \u002F\u002F lives glue together even if they are pretty far in the unicode\\n        \u002F\u002F table. (This looks weird, so I can have missed something), this\\n        \u002F\u002F works on Linux but seems to fails on Mac so let's rewrite the\\n        \u002F\u002F cmap table to a 3-1-4 style\\n        const firstCode = file.getUint16();\\n        const entryCount = file.getUint16();\\n\\n        for (j = 0; j \u003C entryCount; j++) {\\n          glyphId = file.getUint16();\\n          const charCode = firstCode + j;\\n\\n          mappings.push({\\n            charCode,\\n            glyphId,\\n          });\\n        }\\n      } else if (format === 12) {\\n        file.skip(2 + 4 + 4); \u002F\u002F reserved + length + language\\n\\n        const nGroups = file.getInt32() >>> 0;\\n        for (j = 0; j \u003C nGroups; j++) {\\n          const startCharCode = file.getInt32() >>> 0;\\n          const endCharCode = file.getInt32() >>> 0;\\n          let glyphCode = file.getInt32() >>> 0;\\n\\n          for (\\n            let charCode = startCharCode;\\n            charCode \u003C= endCharCode;\\n            charCode++\\n          ) {\\n            mappings.push({\\n              charCode,\\n              glyphId: glyphCode++,\\n            });\\n          }\\n        }\\n      } else {\\n        warn(\\\"cmap table has unsupported format: \\\" + format);\\n        return {\\n          platformId: -1,\\n          encodingId: -1,\\n          mappings: [],\\n          hasShortCmap: false,\\n        };\\n      }\\n\\n      \u002F\u002F removing duplicate entries\\n      mappings.sort((a, b) => a.charCode - b.charCode);\\n      const finalMappings = [],\\n        seenCharCodes = new Set();\\n      for (const map of mappings) {\\n        const { charCode } = map;\\n\\n        if (seenCharCodes.has(charCode)) {\\n          continue;\\n        }\\n        seenCharCodes.add(charCode);\\n        finalMappings.push(map);\\n      }\\n\\n      return {\\n        platformId: potentialTable.platformId,\\n        encodingId: potentialTable.encodingId,\\n        mappings: finalMappings,\\n        hasShortCmap,\\n      };\\n    }\\n\\n    function sanitizeMetrics(\\n      file,\\n      header,\\n      metrics,\\n      headTable,\\n      numGlyphs,\\n      dupFirstEntry\\n    ) {\\n      if (!header) {\\n        if (metrics) {\\n          metrics.data = null;\\n        }\\n        return;\\n      }\\n\\n      file.pos = (file.start || 0) + header.offset;\\n      file.pos += 4; \u002F\u002F version\\n      file.pos += 2; \u002F\u002F ascent\\n      file.pos += 2; \u002F\u002F descent\\n      file.pos += 2; \u002F\u002F linegap\\n      file.pos += 2; \u002F\u002F adv_width_max\\n      file.pos += 2; \u002F\u002F min_sb1\\n      file.pos += 2; \u002F\u002F min_sb2\\n      file.pos += 2; \u002F\u002F max_extent\\n      file.pos += 2; \u002F\u002F caret_slope_rise\\n      file.pos += 2; \u002F\u002F caret_slope_run\\n      const caretOffset = file.getUint16();\\n      file.pos += 8; \u002F\u002F reserved\\n      file.pos += 2; \u002F\u002F format\\n      let numOfMetrics = file.getUint16();\\n\\n      if (caretOffset !== 0) {\\n        const macStyle = int16(headTable.data[44], headTable.data[45]);\\n        if (!(macStyle & 2)) {\\n          \u002F\u002F Suppress OTS warnings about the `caretOffset` in the hhea-table.\\n          header.data[22] = 0;\\n          header.data[23] = 0;\\n        }\\n      }\\n\\n      if (numOfMetrics > numGlyphs) {\\n        info(\\n          `The numOfMetrics (${numOfMetrics}) should not be ` +\\n            `greater than the numGlyphs (${numGlyphs}).`\\n        );\\n        \u002F\u002F Reduce numOfMetrics if it is greater than numGlyphs\\n        numOfMetrics = numGlyphs;\\n        header.data[34] = (numOfMetrics & 0xff00) >> 8;\\n        header.data[35] = numOfMetrics & 0x00ff;\\n      }\\n\\n      const numOfSidebearings = numGlyphs - numOfMetrics;\\n      const numMissing =\\n        numOfSidebearings - ((metrics.length - numOfMetrics * 4) >> 1);\\n\\n      if (numMissing > 0) {\\n        \u002F\u002F For each missing glyph, we set both the width and lsb to 0 (zero).\\n        \u002F\u002F Since we need to add two properties for each glyph, this explains\\n        \u002F\u002F the use of |numMissing * 2| when initializing the typed array.\\n        const entries = new Uint8Array(metrics.length + numMissing * 2);\\n        entries.set(metrics.data);\\n        if (dupFirstEntry) {\\n          \u002F\u002F Set the sidebearing value of the duplicated glyph.\\n          entries[metrics.length] = metrics.data[2];\\n          entries[metrics.length + 1] = metrics.data[3];\\n        }\\n        metrics.data = entries;\\n      }\\n    }\\n\\n    function sanitizeGlyph(\\n      source,\\n      sourceStart,\\n      sourceEnd,\\n      dest,\\n      destStart,\\n      hintsValid\\n    ) {\\n      const glyphProfile = {\\n        length: 0,\\n        sizeOfInstructions: 0,\\n      };\\n      if (\\n        sourceStart \u003C 0 ||\\n        sourceStart >= source.length ||\\n        sourceEnd > source.length ||\\n        sourceEnd - sourceStart \u003C= 12\\n      ) {\\n        \u002F\u002F If the offsets are wrong or the glyph is too small, remove it.\\n        return glyphProfile;\\n      }\\n      const glyf = source.subarray(sourceStart, sourceEnd);\\n\\n      \u002F\u002F Sanitize the glyph bounding box.\\n      const xMin = signedInt16(glyf[2], glyf[3]);\\n      const yMin = signedInt16(glyf[4], glyf[5]);\\n      const xMax = signedInt16(glyf[6], glyf[7]);\\n      const yMax = signedInt16(glyf[8], glyf[9]);\\n\\n      if (xMin > xMax) {\\n        writeSignedInt16(glyf, 2, xMax);\\n        writeSignedInt16(glyf, 6, xMin);\\n      }\\n      if (yMin > yMax) {\\n        writeSignedInt16(glyf, 4, yMax);\\n        writeSignedInt16(glyf, 8, yMin);\\n      }\\n\\n      const contoursCount = signedInt16(glyf[0], glyf[1]);\\n      if (contoursCount \u003C 0) {\\n        if (contoursCount \u003C -1) {\\n          \u002F\u002F OTS doesn't like contour count to be less than -1.\\n          \u002F\u002F The glyph data offsets are very likely wrong and\\n          \u002F\u002F having something lower than -1, very likely, implies\\n          \u002F\u002F to have some garbage data.\\n          return glyphProfile;\\n        }\\n        \u002F\u002F complex glyph, writing as is\\n        dest.set(glyf, destStart);\\n        glyphProfile.length = glyf.length;\\n        return glyphProfile;\\n      }\\n\\n      let i,\\n        j = 10,\\n        flagsCount = 0;\\n      for (i = 0; i \u003C contoursCount; i++) {\\n        const endPoint = (glyf[j] \u003C\u003C 8) | glyf[j + 1];\\n        flagsCount = endPoint + 1;\\n        j += 2;\\n      }\\n      \u002F\u002F skipping instructions\\n      const instructionsStart = j;\\n      const instructionsLength = (glyf[j] \u003C\u003C 8) | glyf[j + 1];\\n      glyphProfile.sizeOfInstructions = instructionsLength;\\n      j += 2 + instructionsLength;\\n      const instructionsEnd = j;\\n      \u002F\u002F validating flags\\n      let coordinatesLength = 0;\\n      for (i = 0; i \u003C flagsCount; i++) {\\n        const flag = glyf[j++];\\n        if (flag & 0xc0) {\\n          \u002F\u002F reserved flags must be zero, cleaning up\\n          glyf[j - 1] = flag & 0x3f;\\n        }\\n        let xLength = 2;\\n        if (flag & 2) {\\n          xLength = 1;\\n        } else if (flag & 16) {\\n          xLength = 0;\\n        }\\n        let yLength = 2;\\n        if (flag & 4) {\\n          yLength = 1;\\n        } else if (flag & 32) {\\n          yLength = 0;\\n        }\\n        const xyLength = xLength + yLength;\\n        coordinatesLength += xyLength;\\n        if (flag & 8) {\\n          const repeat = glyf[j++];\\n          if (repeat === 0) {\\n            \u002F\u002F The repeat count should be non-zero when the repeat flag is set.\\n            glyf[j - 1] ^= 8;\\n          }\\n          i += repeat;\\n          coordinatesLength += repeat * xyLength;\\n        }\\n      }\\n      \u002F\u002F glyph without coordinates will be rejected\\n      if (coordinatesLength === 0) {\\n        return glyphProfile;\\n      }\\n      let glyphDataLength = j + coordinatesLength;\\n      if (glyphDataLength > glyf.length) {\\n        \u002F\u002F not enough data for coordinates\\n        return glyphProfile;\\n      }\\n      if (!hintsValid && instructionsLength > 0) {\\n        dest.set(glyf.subarray(0, instructionsStart), destStart);\\n        dest.set([0, 0], destStart + instructionsStart);\\n        dest.set(\\n          glyf.subarray(instructionsEnd, glyphDataLength),\\n          destStart + instructionsStart + 2\\n        );\\n        glyphDataLength -= instructionsLength;\\n        if (glyf.length - glyphDataLength > 3) {\\n          glyphDataLength = (glyphDataLength + 3) & ~3;\\n        }\\n        glyphProfile.length = glyphDataLength;\\n        return glyphProfile;\\n      }\\n      if (glyf.length - glyphDataLength > 3) {\\n        \u002F\u002F truncating and aligning to 4 bytes the long glyph data\\n        glyphDataLength = (glyphDataLength + 3) & ~3;\\n        dest.set(glyf.subarray(0, glyphDataLength), destStart);\\n        glyphProfile.length = glyphDataLength;\\n        return glyphProfile;\\n      }\\n      \u002F\u002F glyph data is fine\\n      dest.set(glyf, destStart);\\n      glyphProfile.length = glyf.length;\\n      return glyphProfile;\\n    }\\n\\n    function sanitizeHead(head, numGlyphs, locaLength) {\\n      const data = head.data;\\n\\n      \u002F\u002F Validate version:\\n      \u002F\u002F Should always be 0x00010000\\n      const version = int32(data[0], data[1], data[2], data[3]);\\n      if (version >> 16 !== 1) {\\n        info(\\\"Attempting to fix invalid version in head table: \\\" + version);\\n        data[0] = 0;\\n        data[1] = 1;\\n        data[2] = 0;\\n        data[3] = 0;\\n      }\\n\\n      const indexToLocFormat = int16(data[50], data[51]);\\n      if (indexToLocFormat \u003C 0 || indexToLocFormat > 1) {\\n        info(\\n          \\\"Attempting to fix invalid indexToLocFormat in head table: \\\" +\\n            indexToLocFormat\\n        );\\n\\n        \u002F\u002F The value of indexToLocFormat should be 0 if the loca table\\n        \u002F\u002F consists of short offsets, and should be 1 if the loca table\\n        \u002F\u002F consists of long offsets.\\n        \u002F\u002F\\n        \u002F\u002F The number of entries in the loca table should be numGlyphs + 1.\\n        \u002F\u002F\\n        \u002F\u002F Using this information, we can work backwards to deduce if the\\n        \u002F\u002F size of each offset in the loca table, and thus figure out the\\n        \u002F\u002F appropriate value for indexToLocFormat.\\n\\n        const numGlyphsPlusOne = numGlyphs + 1;\\n        if (locaLength === numGlyphsPlusOne \u003C\u003C 1) {\\n          \u002F\u002F 0x0000 indicates the loca table consists of short offsets\\n          data[50] = 0;\\n          data[51] = 0;\\n        } else if (locaLength === numGlyphsPlusOne \u003C\u003C 2) {\\n          \u002F\u002F 0x0001 indicates the loca table consists of long offsets\\n          data[50] = 0;\\n          data[51] = 1;\\n        } else {\\n          throw new FormatError(\\n            \\\"Could not fix indexToLocFormat: \\\" + indexToLocFormat\\n          );\\n        }\\n      }\\n    }\\n\\n    function sanitizeGlyphLocations(\\n      loca,\\n      glyf,\\n      numGlyphs,\\n      isGlyphLocationsLong,\\n      hintsValid,\\n      dupFirstEntry,\\n      maxSizeOfInstructions\\n    ) {\\n      let itemSize, itemDecode, itemEncode;\\n      if (isGlyphLocationsLong) {\\n        itemSize = 4;\\n        itemDecode = function fontItemDecodeLong(data, offset) {\\n          return (\\n            (data[offset] \u003C\u003C 24) |\\n            (data[offset + 1] \u003C\u003C 16) |\\n            (data[offset + 2] \u003C\u003C 8) |\\n            data[offset + 3]\\n          );\\n        };\\n        itemEncode = function fontItemEncodeLong(data, offset, value) {\\n          data[offset] = (value >>> 24) & 0xff;\\n          data[offset + 1] = (value >> 16) & 0xff;\\n          data[offset + 2] = (value >> 8) & 0xff;\\n          data[offset + 3] = value & 0xff;\\n        };\\n      } else {\\n        itemSize = 2;\\n        itemDecode = function fontItemDecode(data, offset) {\\n          return (data[offset] \u003C\u003C 9) | (data[offset + 1] \u003C\u003C 1);\\n        };\\n        itemEncode = function fontItemEncode(data, offset, value) {\\n          data[offset] = (value >> 9) & 0xff;\\n          data[offset + 1] = (value >> 1) & 0xff;\\n        };\\n      }\\n      \u002F\u002F The first glyph is duplicated.\\n      const numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs;\\n      const locaDataSize = itemSize * (1 + numGlyphsOut);\\n      \u002F\u002F Resize loca table to account for duplicated glyph.\\n      const locaData = new Uint8Array(locaDataSize);\\n      locaData.set(loca.data.subarray(0, locaDataSize));\\n      loca.data = locaData;\\n      \u002F\u002F removing the invalid glyphs\\n      const oldGlyfData = glyf.data;\\n      const oldGlyfDataLength = oldGlyfData.length;\\n      const newGlyfData = new Uint8Array(oldGlyfDataLength);\\n\\n      \u002F\u002F The spec says the offsets should be in ascending order, however\\n      \u002F\u002F this is not true for some fonts or they use the offset of 0 to mark a\\n      \u002F\u002F glyph as missing. OTS requires the offsets to be in order and not to\\n      \u002F\u002F be zero, so we must sort and rebuild the loca table and potentially\\n      \u002F\u002F re-arrange the glyf data.\\n      let i, j;\\n      const locaEntries = [];\\n      \u002F\u002F There are numGlyphs + 1 loca table entries.\\n      for (i = 0, j = 0; i \u003C numGlyphs + 1; i++, j += itemSize) {\\n        let offset = itemDecode(locaData, j);\\n        if (offset > oldGlyfDataLength) {\\n          offset = oldGlyfDataLength;\\n        }\\n        locaEntries.push({\\n          index: i,\\n          offset,\\n          endOffset: 0,\\n        });\\n      }\\n      locaEntries.sort((a, b) => a.offset - b.offset);\\n      \u002F\u002F Now the offsets are sorted, calculate the end offset of each glyph.\\n      \u002F\u002F The last loca entry's endOffset is not calculated since it's the end\\n      \u002F\u002F of the data and will be stored on the previous entry's endOffset.\\n      for (i = 0; i \u003C numGlyphs; i++) {\\n        locaEntries[i].endOffset = locaEntries[i + 1].offset;\\n      }\\n      \u002F\u002F Re-sort so glyphs aren't out of order.\\n      locaEntries.sort((a, b) => a.index - b.index);\\n      \u002F\u002F Calculate the endOffset of the \\\"first\\\" glyph correctly when there are\\n      \u002F\u002F *multiple* empty ones at the start of the data (fixes issue14618.pdf).\\n      for (i = 0; i \u003C numGlyphs; i++) {\\n        const { offset, endOffset } = locaEntries[i];\\n        if (offset !== 0 || endOffset !== 0) {\\n          break;\\n        }\\n        const nextOffset = locaEntries[i + 1].offset;\\n        if (nextOffset === 0) {\\n          continue;\\n        }\\n        locaEntries[i].endOffset = nextOffset;\\n        break;\\n      }\\n\\n      \u002F\u002F If the last offset is 0 in the loca table then we can't compute the\\n      \u002F\u002F endOffset for the last glyph. So in such a case we set the endOffset\\n      \u002F\u002F to the end of the data (fixes issue #17671).\\n      const last = locaEntries.at(-2);\\n      if (last.offset !== 0 && last.endOffset === 0) {\\n        last.endOffset = oldGlyfDataLength;\\n      }\\n\\n      const missingGlyphs = Object.create(null);\\n      let writeOffset = 0;\\n      itemEncode(locaData, 0, writeOffset);\\n      for (i = 0, j = itemSize; i \u003C numGlyphs; i++, j += itemSize) {\\n        const glyphProfile = sanitizeGlyph(\\n          oldGlyfData,\\n          locaEntries[i].offset,\\n          locaEntries[i].endOffset,\\n          newGlyfData,\\n          writeOffset,\\n          hintsValid\\n        );\\n        const newLength = glyphProfile.length;\\n        if (newLength === 0) {\\n          missingGlyphs[i] = true;\\n        }\\n        if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) {\\n          maxSizeOfInstructions = glyphProfile.sizeOfInstructions;\\n        }\\n        writeOffset += newLength;\\n        itemEncode(locaData, j, writeOffset);\\n      }\\n\\n      if (writeOffset === 0) {\\n        \u002F\u002F glyf table cannot be empty -- redoing the glyf and loca tables\\n        \u002F\u002F to have single glyph with one point\\n        const simpleGlyph = new Uint8Array([\\n          0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0,\\n        ]);\\n        for (i = 0, j = itemSize; i \u003C numGlyphsOut; i++, j += itemSize) {\\n          itemEncode(locaData, j, simpleGlyph.length);\\n        }\\n        glyf.data = simpleGlyph;\\n      } else if (dupFirstEntry) {\\n        \u002F\u002F Browsers will not display a glyph at position 0. Typically glyph 0\\n        \u002F\u002F is notdef, but a number of fonts put a valid glyph there so it must\\n        \u002F\u002F be duplicated and appended.\\n        const firstEntryLength = itemDecode(locaData, itemSize);\\n        if (newGlyfData.length > firstEntryLength + writeOffset) {\\n          glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset);\\n        } else {\\n          glyf.data = new Uint8Array(firstEntryLength + writeOffset);\\n          glyf.data.set(newGlyfData.subarray(0, writeOffset));\\n        }\\n        glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset);\\n        itemEncode(\\n          loca.data,\\n          locaData.length - itemSize,\\n          writeOffset + firstEntryLength\\n        );\\n      } else {\\n        glyf.data = newGlyfData.subarray(0, writeOffset);\\n      }\\n      return {\\n        missingGlyphs,\\n        maxSizeOfInstructions,\\n      };\\n    }\\n\\n    function readPostScriptTable(post, propertiesObj, maxpNumGlyphs) {\\n      const start = (font.start || 0) + post.offset;\\n      font.pos = start;\\n\\n      const length = post.length,\\n        end = start + length;\\n      const version = font.getInt32();\\n      \u002F\u002F skip rest to the tables\\n      font.skip(28);\\n\\n      let glyphNames;\\n      let valid = true;\\n      let i;\\n\\n      switch (version) {\\n        case 0x00010000:\\n          glyphNames = MacStandardGlyphOrdering;\\n          break;\\n        case 0x00020000:\\n          const numGlyphs = font.getUint16();\\n          if (numGlyphs !== maxpNumGlyphs) {\\n            valid = false;\\n            break;\\n          }\\n          const glyphNameIndexes = [];\\n          for (i = 0; i \u003C numGlyphs; ++i) {\\n            const index = font.getUint16();\\n            if (index >= 32768) {\\n              valid = false;\\n              break;\\n            }\\n            glyphNameIndexes.push(index);\\n          }\\n          if (!valid) {\\n            break;\\n          }\\n          const customNames = [],\\n            strBuf = [];\\n          while (font.pos \u003C end) {\\n            const stringLength = font.getByte();\\n            strBuf.length = stringLength;\\n            for (i = 0; i \u003C stringLength; ++i) {\\n              strBuf[i] = String.fromCharCode(font.getByte());\\n            }\\n            customNames.push(strBuf.join(\\\"\\\"));\\n          }\\n          glyphNames = [];\\n          for (i = 0; i \u003C numGlyphs; ++i) {\\n            const j = glyphNameIndexes[i];\\n            if (j \u003C 258) {\\n              glyphNames.push(MacStandardGlyphOrdering[j]);\\n              continue;\\n            }\\n            glyphNames.push(customNames[j - 258]);\\n          }\\n          break;\\n        case 0x00030000:\\n          break;\\n        default:\\n          warn(\\\"Unknown\u002Funsupported post table version \\\" + version);\\n          valid = false;\\n          if (propertiesObj.defaultEncoding) {\\n            glyphNames = propertiesObj.defaultEncoding;\\n          }\\n          break;\\n      }\\n      propertiesObj.glyphNames = glyphNames;\\n      return valid;\\n    }\\n\\n    function readNameTable(nameTable) {\\n      const start = (font.start || 0) + nameTable.offset;\\n      font.pos = start;\\n\\n      const names = [[], []],\\n        records = [];\\n      const length = nameTable.length,\\n        end = start + length;\\n      const format = font.getUint16();\\n      const FORMAT_0_HEADER_LENGTH = 6;\\n      if (format !== 0 || length \u003C FORMAT_0_HEADER_LENGTH) {\\n        \u002F\u002F unsupported name table format or table \\\"too\\\" small\\n        return [names, records];\\n      }\\n      const numRecords = font.getUint16();\\n      const stringsStart = font.getUint16();\\n      const NAME_RECORD_LENGTH = 12;\\n      let i, ii;\\n\\n      for (i = 0; i \u003C numRecords && font.pos + NAME_RECORD_LENGTH \u003C= end; i++) {\\n        const r = {\\n          platform: font.getUint16(),\\n          encoding: font.getUint16(),\\n          language: font.getUint16(),\\n          name: font.getUint16(),\\n          length: font.getUint16(),\\n          offset: font.getUint16(),\\n        };\\n        \u002F\u002F using only Macintosh and Windows platform\u002Fencoding names\\n        if (isMacNameRecord(r) || isWinNameRecord(r)) {\\n          records.push(r);\\n        }\\n      }\\n      for (i = 0, ii = records.length; i \u003C ii; i++) {\\n        const record = records[i];\\n        if (record.length \u003C= 0) {\\n          continue; \u002F\u002F Nothing to process, ignoring.\\n        }\\n        const pos = start + stringsStart + record.offset;\\n        if (pos + record.length > end) {\\n          continue; \u002F\u002F outside of name table, ignoring\\n        }\\n        font.pos = pos;\\n        const nameIndex = record.name;\\n        if (record.encoding) {\\n          \u002F\u002F unicode\\n          let str = \\\"\\\";\\n          for (let j = 0, jj = record.length; j \u003C jj; j += 2) {\\n            str += String.fromCharCode(font.getUint16());\\n          }\\n          names[1][nameIndex] = str;\\n        } else {\\n          names[0][nameIndex] = font.getString(record.length);\\n        }\\n      }\\n      return [names, records];\\n    }\\n\\n    \u002F\u002F prettier-ignore\\n    const TTOpsStackDeltas = [\\n      0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5,\\n      -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1,\\n      1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1,\\n      0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2,\\n      0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1,\\n      -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1,\\n      -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\\n      -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1,\\n      -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2];\\n    \u002F\u002F 0xC0-DF == -1 and 0xE0-FF == -2\\n\\n    function sanitizeTTProgram(table, ttContext) {\\n      let data = table.data;\\n      let i = 0,\\n        j,\\n        n,\\n        b,\\n        funcId,\\n        pc,\\n        lastEndf = 0,\\n        lastDeff = 0;\\n      const stack = [];\\n      const callstack = [];\\n      const functionsCalled = [];\\n      let tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions;\\n      let inFDEF = false,\\n        ifLevel = 0,\\n        inELSE = 0;\\n      for (let ii = data.length; i \u003C ii; ) {\\n        const op = data[i++];\\n        \u002F\u002F The TrueType instruction set docs can be found at\\n        \u002F\u002F https:\u002F\u002Fdeveloper.apple.com\u002Ffonts\u002FTTRefMan\u002FRM05\u002FChap5.html\\n        if (op === 0x40) {\\n          \u002F\u002F NPUSHB - pushes n bytes\\n          n = data[i++];\\n          if (inFDEF || inELSE) {\\n            i += n;\\n          } else {\\n            for (j = 0; j \u003C n; j++) {\\n              stack.push(data[i++]);\\n            }\\n          }\\n        } else if (op === 0x41) {\\n          \u002F\u002F NPUSHW - pushes n words\\n          n = data[i++];\\n          if (inFDEF || inELSE) {\\n            i += n * 2;\\n          } else {\\n            for (j = 0; j \u003C n; j++) {\\n              b = data[i++];\\n              stack.push((b \u003C\u003C 8) | data[i++]);\\n            }\\n          }\\n        } else if ((op & 0xf8) === 0xb0) {\\n          \u002F\u002F PUSHB - pushes bytes\\n          n = op - 0xb0 + 1;\\n          if (inFDEF || inELSE) {\\n            i += n;\\n          } else {\\n            for (j = 0; j \u003C n; j++) {\\n              stack.push(data[i++]);\\n            }\\n          }\\n        } else if ((op & 0xf8) === 0xb8) {\\n          \u002F\u002F PUSHW - pushes words\\n          n = op - 0xb8 + 1;\\n          if (inFDEF || inELSE) {\\n            i += n * 2;\\n          } else {\\n            for (j = 0; j \u003C n; j++) {\\n              b = data[i++];\\n              stack.push(signedInt16(b, data[i++]));\\n            }\\n          }\\n        } else if (op === 0x2b && !tooComplexToFollowFunctions) {\\n          \u002F\u002F CALL\\n          if (!inFDEF && !inELSE) {\\n            \u002F\u002F collecting information about which functions are used\\n            funcId = stack.at(-1);\\n            if (isNaN(funcId)) {\\n              info(\\\"TT: CALL empty stack (or invalid entry).\\\");\\n            } else {\\n              ttContext.functionsUsed[funcId] = true;\\n              if (funcId in ttContext.functionsStackDeltas) {\\n                const newStackLength =\\n                  stack.length + ttContext.functionsStackDeltas[funcId];\\n                if (newStackLength \u003C 0) {\\n                  warn(\\\"TT: CALL invalid functions stack delta.\\\");\\n                  ttContext.hintsValid = false;\\n                  return;\\n                }\\n                stack.length = newStackLength;\\n              } else if (\\n                funcId in ttContext.functionsDefined &&\\n                !functionsCalled.includes(funcId)\\n              ) {\\n                callstack.push({ data, i, stackTop: stack.length - 1 });\\n                functionsCalled.push(funcId);\\n                pc = ttContext.functionsDefined[funcId];\\n                if (!pc) {\\n                  warn(\\\"TT: CALL non-existent function\\\");\\n                  ttContext.hintsValid = false;\\n                  return;\\n                }\\n                data = pc.data;\\n                i = pc.i;\\n              }\\n            }\\n          }\\n        } else if (op === 0x2c && !tooComplexToFollowFunctions) {\\n          \u002F\u002F FDEF\\n          if (inFDEF || inELSE) {\\n            warn(\\\"TT: nested FDEFs not allowed\\\");\\n            tooComplexToFollowFunctions = true;\\n          }\\n          inFDEF = true;\\n          \u002F\u002F collecting information about which functions are defined\\n          lastDeff = i;\\n          funcId = stack.pop();\\n          ttContext.functionsDefined[funcId] = { data, i };\\n        } else if (op === 0x2d) {\\n          \u002F\u002F ENDF - end of function\\n          if (inFDEF) {\\n            inFDEF = false;\\n            lastEndf = i;\\n          } else {\\n            pc = callstack.pop();\\n            if (!pc) {\\n              warn(\\\"TT: ENDF bad stack\\\");\\n              ttContext.hintsValid = false;\\n              return;\\n            }\\n            funcId = functionsCalled.pop();\\n            data = pc.data;\\n            i = pc.i;\\n            ttContext.functionsStackDeltas[funcId] = stack.length - pc.stackTop;\\n          }\\n        } else if (op === 0x89) {\\n          \u002F\u002F IDEF - instruction definition\\n          if (inFDEF || inELSE) {\\n            warn(\\\"TT: nested IDEFs not allowed\\\");\\n            tooComplexToFollowFunctions = true;\\n          }\\n          inFDEF = true;\\n          \u002F\u002F recording it as a function to track ENDF\\n          lastDeff = i;\\n        } else if (op === 0x58) {\\n          \u002F\u002F IF\\n          ++ifLevel;\\n        } else if (op === 0x1b) {\\n          \u002F\u002F ELSE\\n          inELSE = ifLevel;\\n        } else if (op === 0x59) {\\n          \u002F\u002F EIF\\n          if (inELSE === ifLevel) {\\n            inELSE = 0;\\n          }\\n          --ifLevel;\\n        } else if (op === 0x1c) {\\n          \u002F\u002F JMPR\\n          if (!inFDEF && !inELSE) {\\n            const offset = stack.at(-1);\\n            \u002F\u002F only jumping forward to prevent infinite loop\\n            if (offset > 0) {\\n              i += offset - 1;\\n            }\\n          }\\n        }\\n        \u002F\u002F Adjusting stack not extactly, but just enough to get function id\\n        if (!inFDEF && !inELSE) {\\n          let stackDelta = 0;\\n          if (op \u003C= 0x8e) {\\n            stackDelta = TTOpsStackDeltas[op];\\n          } else if (op >= 0xc0 && op \u003C= 0xdf) {\\n            stackDelta = -1;\\n          } else if (op >= 0xe0) {\\n            stackDelta = -2;\\n          }\\n          if (op >= 0x71 && op \u003C= 0x75) {\\n            n = stack.pop();\\n            if (!isNaN(n)) {\\n              stackDelta = -n * 2;\\n            }\\n          }\\n          while (stackDelta \u003C 0 && stack.length > 0) {\\n            stack.pop();\\n            stackDelta++;\\n          }\\n          while (stackDelta > 0) {\\n            stack.push(NaN); \u002F\u002F pushing any number into stack\\n            stackDelta--;\\n          }\\n        }\\n      }\\n      ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions;\\n      const content = [data];\\n      if (i > data.length) {\\n        content.push(new Uint8Array(i - data.length));\\n      }\\n      if (lastDeff > lastEndf) {\\n        warn(\\\"TT: complementing a missing function tail\\\");\\n        \u002F\u002F new function definition started, but not finished\\n        \u002F\u002F complete function by [CLEAR, ENDF]\\n        content.push(new Uint8Array([0x22, 0x2d]));\\n      }\\n      foldTTTable(table, content);\\n    }\\n\\n    function checkInvalidFunctions(ttContext, maxFunctionDefs) {\\n      if (ttContext.tooComplexToFollowFunctions) {\\n        return;\\n      }\\n      if (ttContext.functionsDefined.length > maxFunctionDefs) {\\n        warn(\\\"TT: more functions defined than expected\\\");\\n        ttContext.hintsValid = false;\\n        return;\\n      }\\n      for (let j = 0, jj = ttContext.functionsUsed.length; j \u003C jj; j++) {\\n        if (j > maxFunctionDefs) {\\n          warn(\\\"TT: invalid function id: \\\" + j);\\n          ttContext.hintsValid = false;\\n          return;\\n        }\\n        if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) {\\n          warn(\\\"TT: undefined function: \\\" + j);\\n          ttContext.hintsValid = false;\\n          return;\\n        }\\n      }\\n    }\\n\\n    function foldTTTable(table, content) {\\n      if (content.length > 1) {\\n        \u002F\u002F concatenating the content items\\n        let newLength = 0;\\n        let j, jj;\\n        for (j = 0, jj = content.length; j \u003C jj; j++) {\\n          newLength += content[j].length;\\n        }\\n        newLength = (newLength + 3) & ~3;\\n        const result = new Uint8Array(newLength);\\n        let pos = 0;\\n        for (j = 0, jj = content.length; j \u003C jj; j++) {\\n          result.set(content[j], pos);\\n          pos += content[j].length;\\n        }\\n        table.data = result;\\n        table.length = newLength;\\n      }\\n    }\\n\\n    function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) {\\n      const ttContext = {\\n        functionsDefined: [],\\n        functionsUsed: [],\\n        functionsStackDeltas: [],\\n        tooComplexToFollowFunctions: false,\\n        hintsValid: true,\\n      };\\n      if (fpgm) {\\n        sanitizeTTProgram(fpgm, ttContext);\\n      }\\n      if (prep) {\\n        sanitizeTTProgram(prep, ttContext);\\n      }\\n      if (fpgm) {\\n        checkInvalidFunctions(ttContext, maxFunctionDefs);\\n      }\\n      if (cvt && cvt.length & 1) {\\n        const cvtData = new Uint8Array(cvt.length + 1);\\n        cvtData.set(cvt.data);\\n        cvt.data = cvtData;\\n      }\\n      return ttContext.hintsValid;\\n    }\\n\\n    \u002F\u002F The following steps modify the original font data, making copy\\n    font = new Stream(new Uint8Array(font.getBytes()));\\n\\n    let header, tables;\\n    if (isTrueTypeCollectionFile(font)) {\\n      const ttcData = readTrueTypeCollectionData(font, this.name);\\n      header = ttcData.header;\\n      tables = ttcData.tables;\\n    } else {\\n      header = readOpenTypeHeader(font);\\n      tables = readTables(font, header.numTables);\\n    }\\n    let cff, cffFile;\\n\\n    const isTrueType = !tables[\\\"CFF \\\"];\\n    if (!isTrueType) {\\n      const isComposite =\\n        properties.composite &&\\n        (properties.cidToGidMap?.length > 0 ||\\n          !(properties.cMap instanceof IdentityCMap));\\n      \u002F\u002F OpenType font (skip composite fonts with non-default glyph mapping).\\n      if (\\n        (header.version === \\\"OTTO\\\" && !isComposite) ||\\n        !tables.head ||\\n        !tables.hhea ||\\n        !tables.maxp ||\\n        !tables.post\\n      ) {\\n        \u002F\u002F No major tables: throwing everything at `CFFFont`.\\n        cffFile = new Stream(tables[\\\"CFF \\\"].data);\\n        cff = new CFFFont(cffFile, properties);\\n\\n        return this.convert(name, cff, properties);\\n      }\\n\\n      delete tables.glyf;\\n      delete tables.loca;\\n      delete tables.fpgm;\\n      delete tables.prep;\\n      delete tables[\\\"cvt \\\"];\\n      this.isOpenType = true;\\n    } else {\\n      if (!tables.loca) {\\n        throw new FormatError('Required \\\"loca\\\" table is not found');\\n      }\\n      if (!tables.glyf) {\\n        warn('Required \\\"glyf\\\" table is not found -- trying to recover.');\\n        \u002F\u002F Note: We use `sanitizeGlyphLocations` to add dummy glyf data below.\\n        tables.glyf = {\\n          tag: \\\"glyf\\\",\\n          data: new Uint8Array(0),\\n        };\\n      }\\n      this.isOpenType = false;\\n    }\\n\\n    if (!tables.maxp) {\\n      throw new FormatError('Required \\\"maxp\\\" table is not found');\\n    }\\n\\n    font.pos = (font.start || 0) + tables.maxp.offset;\\n    let version = font.getInt32();\\n    const numGlyphs = font.getUint16();\\n\\n    if (version !== 0x00010000 && version !== 0x00005000) {\\n      \u002F\u002F https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Ftypography\u002Fopentype\u002Fspec\u002Fmaxp\\n      if (tables.maxp.length === 6) {\\n        version = 0x0005000;\\n      } else if (tables.maxp.length >= 32) {\\n        version = 0x00010000;\\n      } else {\\n        throw new FormatError(`\\\"maxp\\\" table has a wrong version number`);\\n      }\\n      writeUint32(tables.maxp.data, 0, version);\\n    }\\n\\n    if (properties.scaleFactors?.length === numGlyphs && isTrueType) {\\n      const { scaleFactors } = properties;\\n      const isGlyphLocationsLong = int16(\\n        tables.head.data[50],\\n        tables.head.data[51]\\n      );\\n\\n      const glyphs = new GlyfTable({\\n        glyfTable: tables.glyf.data,\\n        isGlyphLocationsLong,\\n        locaTable: tables.loca.data,\\n        numGlyphs,\\n      });\\n      glyphs.scale(scaleFactors);\\n\\n      const { glyf, loca, isLocationLong } = glyphs.write();\\n      tables.glyf.data = glyf;\\n      tables.loca.data = loca;\\n\\n      if (isLocationLong !== !!isGlyphLocationsLong) {\\n        tables.head.data[50] = 0;\\n        tables.head.data[51] = isLocationLong ? 1 : 0;\\n      }\\n\\n      const metrics = tables.hmtx.data;\\n\\n      for (let i = 0; i \u003C numGlyphs; i++) {\\n        const j = 4 * i;\\n        const advanceWidth = Math.round(\\n          scaleFactors[i] * int16(metrics[j], metrics[j + 1])\\n        );\\n        metrics[j] = (advanceWidth >> 8) & 0xff;\\n        metrics[j + 1] = advanceWidth & 0xff;\\n        const lsb = Math.round(\\n          scaleFactors[i] * signedInt16(metrics[j + 2], metrics[j + 3])\\n        );\\n        writeSignedInt16(metrics, j + 2, lsb);\\n      }\\n    }\\n\\n    \u002F\u002F Glyph 0 is duplicated and appended.\\n    let numGlyphsOut = numGlyphs + 1;\\n    let dupFirstEntry = true;\\n    if (numGlyphsOut > 0xffff) {\\n      dupFirstEntry = false;\\n      numGlyphsOut = numGlyphs;\\n      warn(\\\"Not enough space in glyfs to duplicate first glyph.\\\");\\n    }\\n    let maxFunctionDefs = 0;\\n    let maxSizeOfInstructions = 0;\\n    if (version >= 0x00010000 && tables.maxp.length >= 32) {\\n      \u002F\u002F maxZones can be invalid\\n      font.pos += 8;\\n      const maxZones = font.getUint16();\\n      if (maxZones > 2) {\\n        \u002F\u002F reset to 2 if font has invalid maxZones\\n        tables.maxp.data[14] = 0;\\n        tables.maxp.data[15] = 2;\\n      }\\n      font.pos += 4;\\n      maxFunctionDefs = font.getUint16();\\n      font.pos += 4;\\n      maxSizeOfInstructions = font.getUint16();\\n    }\\n\\n    tables.maxp.data[4] = numGlyphsOut >> 8;\\n    tables.maxp.data[5] = numGlyphsOut & 255;\\n\\n    const hintsValid = sanitizeTTPrograms(\\n      tables.fpgm,\\n      tables.prep,\\n      tables[\\\"cvt \\\"],\\n      maxFunctionDefs\\n    );\\n    if (!hintsValid) {\\n      delete tables.fpgm;\\n      delete tables.prep;\\n      delete tables[\\\"cvt \\\"];\\n    }\\n\\n    \u002F\u002F Ensure the hmtx table contains the advance width and\\n    \u002F\u002F sidebearings information for numGlyphs in the maxp table\\n    sanitizeMetrics(\\n      font,\\n      tables.hhea,\\n      tables.hmtx,\\n      tables.head,\\n      numGlyphsOut,\\n      dupFirstEntry\\n    );\\n\\n    if (!tables.head) {\\n      throw new FormatError('Required \\\"head\\\" table is not found');\\n    }\\n\\n    sanitizeHead(tables.head, numGlyphs, isTrueType ? tables.loca.length : 0);\\n\\n    let missingGlyphs = Object.create(null);\\n    if (isTrueType) {\\n      const isGlyphLocationsLong = int16(\\n        tables.head.data[50],\\n        tables.head.data[51]\\n      );\\n      const glyphsInfo = sanitizeGlyphLocations(\\n        tables.loca,\\n        tables.glyf,\\n        numGlyphs,\\n        isGlyphLocationsLong,\\n        hintsValid,\\n        dupFirstEntry,\\n        maxSizeOfInstructions\\n      );\\n      missingGlyphs = glyphsInfo.missingGlyphs;\\n\\n      \u002F\u002F Some fonts have incorrect maxSizeOfInstructions values, so we use\\n      \u002F\u002F the computed value instead.\\n      if (version >= 0x00010000 && tables.maxp.length >= 32) {\\n        tables.maxp.data[26] = glyphsInfo.maxSizeOfInstructions >> 8;\\n        tables.maxp.data[27] = glyphsInfo.maxSizeOfInstructions & 255;\\n      }\\n    }\\n    if (!tables.hhea) {\\n      throw new FormatError('Required \\\"hhea\\\" table is not found');\\n    }\\n\\n    \u002F\u002F Sanitizer reduces the glyph advanceWidth to the maxAdvanceWidth\\n    \u002F\u002F Sometimes it's 0. That needs to be fixed\\n    if (tables.hhea.data[10] === 0 && tables.hhea.data[11] === 0) {\\n      tables.hhea.data[10] = 0xff;\\n      tables.hhea.data[11] = 0xff;\\n    }\\n\\n    \u002F\u002F Extract some more font properties from the OpenType head and\\n    \u002F\u002F hhea tables; yMin and descent value are always negative.\\n    const metricsOverride = {\\n      unitsPerEm: int16(tables.head.data[18], tables.head.data[19]),\\n      yMax: signedInt16(tables.head.data[42], tables.head.data[43]),\\n      yMin: signedInt16(tables.head.data[38], tables.head.data[39]),\\n      ascent: signedInt16(tables.hhea.data[4], tables.hhea.data[5]),\\n      descent: signedInt16(tables.hhea.data[6], tables.hhea.data[7]),\\n      lineGap: signedInt16(tables.hhea.data[8], tables.hhea.data[9]),\\n    };\\n\\n    \u002F\u002F PDF FontDescriptor metrics lie -- using data from actual font.\\n    this.ascent = metricsOverride.ascent \u002F metricsOverride.unitsPerEm;\\n    this.descent = metricsOverride.descent \u002F metricsOverride.unitsPerEm;\\n    this.lineGap = metricsOverride.lineGap \u002F metricsOverride.unitsPerEm;\\n\\n    if (this.cssFontInfo?.lineHeight) {\\n      this.lineHeight = this.cssFontInfo.metrics.lineHeight;\\n      this.lineGap = this.cssFontInfo.metrics.lineGap;\\n    } else {\\n      this.lineHeight = this.ascent - this.descent + this.lineGap;\\n    }\\n\\n    \u002F\u002F The 'post' table has glyphs names.\\n    if (tables.post) {\\n      readPostScriptTable(tables.post, properties, numGlyphs);\\n    }\\n\\n    \u002F\u002F The original 'post' table is not needed, replace it.\\n    tables.post = {\\n      tag: \\\"post\\\",\\n      data: createPostTable(properties),\\n    };\\n\\n    const charCodeToGlyphId = Object.create(null);\\n\\n    \u002F\u002F Helper function to try to skip mapping of empty glyphs.\\n    function hasGlyph(glyphId) {\\n      return !missingGlyphs[glyphId];\\n    }\\n\\n    if (properties.composite) {\\n      const cidToGidMap = properties.cidToGidMap || [];\\n      const isCidToGidMapEmpty = cidToGidMap.length === 0;\\n\\n      properties.cMap.forEach(function (charCode, cid) {\\n        if (typeof cid === \\\"string\\\") {\\n          cid = convertCidString(charCode, cid, \u002F* shouldThrow = *\u002F true);\\n        }\\n        if (cid > 0xffff) {\\n          throw new FormatError(\\\"Max size of CID is 65,535\\\");\\n        }\\n        let glyphId = -1;\\n        if (isCidToGidMapEmpty) {\\n          glyphId = cid;\\n        } else if (cidToGidMap[cid] !== undefined) {\\n          glyphId = cidToGidMap[cid];\\n        }\\n\\n        if (glyphId >= 0 && glyphId \u003C numGlyphs && hasGlyph(glyphId)) {\\n          charCodeToGlyphId[charCode] = glyphId;\\n        }\\n      });\\n    } else {\\n      \u002F\u002F Most of the following logic in this code branch is based on the\\n      \u002F\u002F 9.6.6.4 of the PDF spec.\\n      const cmapTable = readCmapTable(\\n        tables.cmap,\\n        font,\\n        this.isSymbolicFont,\\n        properties.hasEncoding\\n      );\\n      const cmapPlatformId = cmapTable.platformId;\\n      const cmapEncodingId = cmapTable.encodingId;\\n      const cmapMappings = cmapTable.mappings;\\n      let baseEncoding = [],\\n        forcePostTable = false;\\n      if (\\n        properties.hasEncoding &&\\n        (properties.baseEncodingName === \\\"MacRomanEncoding\\\" ||\\n          properties.baseEncodingName === \\\"WinAnsiEncoding\\\")\\n      ) {\\n        baseEncoding = getEncoding(properties.baseEncodingName);\\n      }\\n\\n      \u002F\u002F If the font has an encoding and is not symbolic then follow the rules\\n      \u002F\u002F in section 9.6.6.4 of the spec on how to map 3,1 and 1,0 cmaps.\\n      if (\\n        properties.hasEncoding &&\\n        !this.isSymbolicFont &&\\n        ((cmapPlatformId === 3 && cmapEncodingId === 1) ||\\n          (cmapPlatformId === 1 && cmapEncodingId === 0))\\n      ) {\\n        const glyphsUnicodeMap = getGlyphsUnicode();\\n        for (let charCode = 0; charCode \u003C 256; charCode++) {\\n          let glyphName;\\n          if (this.differences[charCode] !== undefined) {\\n            glyphName = this.differences[charCode];\\n          } else if (baseEncoding.length && baseEncoding[charCode] !== \\\"\\\") {\\n            glyphName = baseEncoding[charCode];\\n          } else {\\n            glyphName = StandardEncoding[charCode];\\n          }\\n          if (!glyphName) {\\n            continue;\\n          }\\n          \u002F\u002F Ensure that non-standard glyph names are resolved to valid ones.\\n          const standardGlyphName = recoverGlyphName(\\n            glyphName,\\n            glyphsUnicodeMap\\n          );\\n\\n          let unicodeOrCharCode;\\n          if (cmapPlatformId === 3 && cmapEncodingId === 1) {\\n            unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName];\\n          } else if (cmapPlatformId === 1 && cmapEncodingId === 0) {\\n            \u002F\u002F TODO: the encoding needs to be updated with mac os table.\\n            unicodeOrCharCode = MacRomanEncoding.indexOf(standardGlyphName);\\n          }\\n\\n          if (unicodeOrCharCode === undefined) {\\n            \u002F\u002F Not a valid glyph name, fallback to using the \u002FToUnicode map\\n            \u002F\u002F when no post-table exists (fixes issue13316_reduced.pdf).\\n            if (\\n              !properties.glyphNames &&\\n              properties.hasIncludedToUnicodeMap &&\\n              !(this.toUnicode instanceof IdentityToUnicodeMap)\\n            ) {\\n              const unicode = this.toUnicode.get(charCode);\\n              if (unicode) {\\n                unicodeOrCharCode = unicode.codePointAt(0);\\n              }\\n            }\\n\\n            if (unicodeOrCharCode === undefined) {\\n              continue; \u002F\u002F No valid glyph mapping found.\\n            }\\n          }\\n\\n          for (const mapping of cmapMappings) {\\n            if (mapping.charCode !== unicodeOrCharCode) {\\n              continue;\\n            }\\n            charCodeToGlyphId[charCode] = mapping.glyphId;\\n            break;\\n          }\\n        }\\n      } else if (cmapPlatformId === 0) {\\n        \u002F\u002F Default Unicode semantics, use the charcodes as is.\\n        for (const mapping of cmapMappings) {\\n          charCodeToGlyphId[mapping.charCode] = mapping.glyphId;\\n        }\\n        \u002F\u002F Always prefer the BaseEncoding\u002FDifferences arrays, when they exist\\n        \u002F\u002F (fixes issue13433.pdf).\\n        forcePostTable = true;\\n      } else if (cmapPlatformId === 3 && cmapEncodingId === 0) {\\n        \u002F\u002F When a (3, 0) cmap table is present, it is used instead but the\\n        \u002F\u002F spec has special rules for char codes in the range of 0xF000 to\\n        \u002F\u002F 0xF0FF and it says the (3, 0) table should map the values from\\n        \u002F\u002F the (1, 0) table by prepending 0xF0 to the char codes. To reverse\\n        \u002F\u002F this, the upper bits of the char code are cleared, but only for the\\n        \u002F\u002F special range since some PDFs have char codes outside of this range\\n        \u002F\u002F (e.g. 0x2013) which when masked would overwrite other values in the\\n        \u002F\u002F cmap.\\n        for (const mapping of cmapMappings) {\\n          let charCode = mapping.charCode;\\n          if (charCode >= 0xf000 && charCode \u003C= 0xf0ff) {\\n            charCode &= 0xff;\\n          }\\n          charCodeToGlyphId[charCode] = mapping.glyphId;\\n        }\\n      } else {\\n        \u002F\u002F When there is only a (1, 0) cmap table, the char code is a single\\n        \u002F\u002F byte and it is used directly as the char code.\\n        for (const mapping of cmapMappings) {\\n          charCodeToGlyphId[mapping.charCode] = mapping.glyphId;\\n        }\\n      }\\n\\n      \u002F\u002F Last, try to map any missing charcodes using the post table.\\n      if (\\n        properties.glyphNames &&\\n        (baseEncoding.length || this.differences.length)\\n      ) {\\n        for (let i = 0; i \u003C 256; ++i) {\\n          if (!forcePostTable && charCodeToGlyphId[i] !== undefined) {\\n            continue;\\n          }\\n          const glyphName = this.differences[i] || baseEncoding[i];\\n          if (!glyphName) {\\n            continue;\\n          }\\n          const glyphId = properties.glyphNames.indexOf(glyphName);\\n          if (glyphId > 0 && hasGlyph(glyphId)) {\\n            charCodeToGlyphId[i] = glyphId;\\n          }\\n        }\\n      }\\n    }\\n\\n    if (charCodeToGlyphId.length === 0) {\\n      \u002F\u002F defines at least one glyph\\n      charCodeToGlyphId[0] = 0;\\n    }\\n\\n    \u002F\u002F Typically glyph 0 is duplicated and the mapping must be updated, but if\\n    \u002F\u002F there isn't enough room to duplicate, the glyph id is left the same. In\\n    \u002F\u002F this case, glyph 0 may not work correctly, but that is better than\\n    \u002F\u002F having the whole font fail.\\n    let glyphZeroId = numGlyphsOut - 1;\\n    if (!dupFirstEntry) {\\n      glyphZeroId = 0;\\n    }\\n\\n    \u002F\u002F When `cssFontInfo` is set, the font is used to render text in the HTML\\n    \u002F\u002F view (e.g. with Xfa) so nothing must be moved in the private use area.\\n    if (!properties.cssFontInfo) {\\n      \u002F\u002F Converting glyphs and ids into font's cmap table\\n      const newMapping = adjustMapping(\\n        charCodeToGlyphId,\\n        hasGlyph,\\n        glyphZeroId,\\n        this.toUnicode\\n      );\\n      this.toFontChar = newMapping.toFontChar;\\n      tables.cmap = {\\n        tag: \\\"cmap\\\",\\n        data: createCmapTable(\\n          newMapping.charCodeToGlyphId,\\n          newMapping.toUnicodeExtraMap,\\n          numGlyphsOut\\n        ),\\n      };\\n\\n      if (!tables[\\\"OS\u002F2\\\"] || !validateOS2Table(tables[\\\"OS\u002F2\\\"], font)) {\\n        tables[\\\"OS\u002F2\\\"] = {\\n          tag: \\\"OS\u002F2\\\",\\n          data: createOS2Table(\\n            properties,\\n            newMapping.charCodeToGlyphId,\\n            metricsOverride\\n          ),\\n        };\\n      }\\n    }\\n\\n    if (!isTrueType) {\\n      try {\\n        \u002F\u002F Trying to repair CFF file\\n        cffFile = new Stream(tables[\\\"CFF \\\"].data);\\n        const parser = new CFFParser(\\n          cffFile,\\n          properties,\\n          SEAC_ANALYSIS_ENABLED\\n        );\\n        cff = parser.parse();\\n        cff.duplicateFirstGlyph();\\n        const compiler = new CFFCompiler(cff);\\n        tables[\\\"CFF \\\"].data = compiler.compile();\\n      } catch {\\n        warn(\\\"Failed to compile font \\\" + properties.loadedName);\\n      }\\n    }\\n\\n    \u002F\u002F Re-creating 'name' table\\n    if (!tables.name) {\\n      tables.name = {\\n        tag: \\\"name\\\",\\n        data: createNameTable(this.name),\\n      };\\n    } else {\\n      \u002F\u002F ... using existing 'name' table as prototype\\n      const [namePrototype, nameRecords] = readNameTable(tables.name);\\n\\n      tables.name.data = createNameTable(name, namePrototype);\\n      this.psName = namePrototype[0][6] || null;\\n\\n      if (!properties.composite) {\\n        \u002F\u002F For TrueType fonts that do not include `ToUnicode` or `Encoding`\\n        \u002F\u002F data, attempt to use the name-table to improve text selection.\\n        adjustTrueTypeToUnicode(properties, this.isSymbolicFont, nameRecords);\\n      }\\n    }\\n\\n    const builder = new OpenTypeFileBuilder(header.version);\\n    for (const tableTag in tables) {\\n      builder.addTable(tableTag, tables[tableTag].data);\\n    }\\n    return builder.toArray();\\n  }\\n\\n  convert(fontName, font, properties) {\\n    \u002F\u002F TODO: Check the charstring widths to determine this.\\n    properties.fixedPitch = false;\\n\\n    if (properties.builtInEncoding) {\\n      \u002F\u002F For Type1 fonts that do not include either `ToUnicode` or `Encoding`\\n      \u002F\u002F data, attempt to use the `builtInEncoding` to improve text selection.\\n      adjustType1ToUnicode(properties, properties.builtInEncoding);\\n    }\\n\\n    \u002F\u002F Type 1 fonts have a notdef inserted at the beginning, so glyph 0\\n    \u002F\u002F becomes glyph 1. In a CFF font glyph 0 is appended to the end of the\\n    \u002F\u002F char strings.\\n    let glyphZeroId = 1;\\n    if (font instanceof CFFFont) {\\n      glyphZeroId = font.numGlyphs - 1;\\n    }\\n    const mapping = font.getGlyphMapping(properties);\\n    let newMapping = null;\\n    let newCharCodeToGlyphId = mapping;\\n    let toUnicodeExtraMap = null;\\n\\n    \u002F\u002F When `cssFontInfo` is set, the font is used to render text in the HTML\\n    \u002F\u002F view (e.g. with Xfa) so nothing must be moved in the private use area.\\n    if (!properties.cssFontInfo) {\\n      newMapping = adjustMapping(\\n        mapping,\\n        font.hasGlyphId.bind(font),\\n        glyphZeroId,\\n        this.toUnicode\\n      );\\n      this.toFontChar = newMapping.toFontChar;\\n      newCharCodeToGlyphId = newMapping.charCodeToGlyphId;\\n      toUnicodeExtraMap = newMapping.toUnicodeExtraMap;\\n    }\\n    const numGlyphs = font.numGlyphs;\\n\\n    function getCharCodes(charCodeToGlyphId, glyphId) {\\n      let charCodes = null;\\n      for (const charCode in charCodeToGlyphId) {\\n        if (glyphId === charCodeToGlyphId[charCode]) {\\n          (charCodes ||= []).push(charCode | 0);\\n        }\\n      }\\n      return charCodes;\\n    }\\n\\n    function createCharCode(charCodeToGlyphId, glyphId) {\\n      for (const charCode in charCodeToGlyphId) {\\n        if (glyphId === charCodeToGlyphId[charCode]) {\\n          return charCode | 0;\\n        }\\n      }\\n      newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] =\\n        glyphId;\\n      return newMapping.nextAvailableFontCharCode++;\\n    }\\n\\n    const seacs = font.seacs;\\n    if (newMapping && SEAC_ANALYSIS_ENABLED && seacs?.length) {\\n      const matrix = properties.fontMatrix || FONT_IDENTITY_MATRIX;\\n      const charset = font.getCharset();\\n      const seacMap = Object.create(null);\\n      for (let glyphId in seacs) {\\n        glyphId |= 0;\\n        const seac = seacs[glyphId];\\n        const baseGlyphName = StandardEncoding[seac[2]];\\n        const accentGlyphName = StandardEncoding[seac[3]];\\n        const baseGlyphId = charset.indexOf(baseGlyphName);\\n        const accentGlyphId = charset.indexOf(accentGlyphName);\\n        if (baseGlyphId \u003C 0 || accentGlyphId \u003C 0) {\\n          continue;\\n        }\\n        const accentOffset = {\\n          x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4],\\n          y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5],\\n        };\\n\\n        const charCodes = getCharCodes(mapping, glyphId);\\n        if (!charCodes) {\\n          \u002F\u002F There's no point in mapping it if the char code was never mapped\\n          \u002F\u002F to begin with.\\n          continue;\\n        }\\n        for (const charCode of charCodes) {\\n          \u002F\u002F Find a fontCharCode that maps to the base and accent glyphs.\\n          \u002F\u002F If one doesn't exists, create it.\\n          const charCodeToGlyphId = newMapping.charCodeToGlyphId;\\n          const baseFontCharCode = createCharCode(\\n            charCodeToGlyphId,\\n            baseGlyphId\\n          );\\n          const accentFontCharCode = createCharCode(\\n            charCodeToGlyphId,\\n            accentGlyphId\\n          );\\n          seacMap[charCode] = {\\n            baseFontCharCode,\\n            accentFontCharCode,\\n            accentOffset,\\n          };\\n        }\\n      }\\n      properties.seacMap = seacMap;\\n    }\\n\\n    const unitsPerEm = properties.fontMatrix\\n      ? 1 \u002F Math.max(...properties.fontMatrix.slice(0, 4).map(Math.abs))\\n      : 1000;\\n\\n    const builder = new OpenTypeFileBuilder(\\\"\\\\x4F\\\\x54\\\\x54\\\\x4F\\\");\\n    \u002F\u002F PostScript Font Program\\n    builder.addTable(\\\"CFF \\\", font.data);\\n    \u002F\u002F OS\u002F2 and Windows Specific metrics\\n    builder.addTable(\\\"OS\u002F2\\\", createOS2Table(properties, newCharCodeToGlyphId));\\n    \u002F\u002F Character to glyphs mapping\\n    builder.addTable(\\n      \\\"cmap\\\",\\n      createCmapTable(newCharCodeToGlyphId, toUnicodeExtraMap, numGlyphs)\\n    );\\n    \u002F\u002F Font header\\n    builder.addTable(\\n      \\\"head\\\",\\n      \\\"\\\\x00\\\\x01\\\\x00\\\\x00\\\" + \u002F\u002F Version number\\n        \\\"\\\\x00\\\\x00\\\\x10\\\\x00\\\" + \u002F\u002F fontRevision\\n        \\\"\\\\x00\\\\x00\\\\x00\\\\x00\\\" + \u002F\u002F checksumAdjustement\\n        \\\"\\\\x5F\\\\x0F\\\\x3C\\\\xF5\\\" + \u002F\u002F magicNumber\\n        \\\"\\\\x00\\\\x00\\\" + \u002F\u002F Flags\\n        safeString16(unitsPerEm) + \u002F\u002F unitsPerEM\\n        \\\"\\\\x00\\\\x00\\\\x00\\\\x00\\\\x9e\\\\x0b\\\\x7e\\\\x27\\\" + \u002F\u002F creation date\\n        \\\"\\\\x00\\\\x00\\\\x00\\\\x00\\\\x9e\\\\x0b\\\\x7e\\\\x27\\\" + \u002F\u002F modifification date\\n        \\\"\\\\x00\\\\x00\\\" + \u002F\u002F xMin\\n        safeString16(properties.descent) + \u002F\u002F yMin\\n        \\\"\\\\x0F\\\\xFF\\\" + \u002F\u002F xMax\\n        safeString16(properties.ascent) + \u002F\u002F yMax\\n        string16(properties.italicAngle ? 2 : 0) + \u002F\u002F macStyle\\n        \\\"\\\\x00\\\\x11\\\" + \u002F\u002F lowestRecPPEM\\n        \\\"\\\\x00\\\\x00\\\" + \u002F\u002F fontDirectionHint\\n        \\\"\\\\x00\\\\x00\\\" + \u002F\u002F indexToLocFormat\\n        \\\"\\\\x00\\\\x00\\\"\\n    ); \u002F\u002F glyphDataFormat\\n\\n    \u002F\u002F Horizontal header\\n    builder.addTable(\\n      \\\"hhea\\\",\\n      \\\"\\\\x00\\\\x01\\\\x00\\\\x00\\\" + \u002F\u002F Version number\\n        safeString16(properties.ascent) + \u002F\u002F Typographic Ascent\\n        safeString16(properties.descent) + \u002F\u002F Typographic Descent\\n        \\\"\\\\x00\\\\x00\\\" + \u002F\u002F Line Gap\\n        \\\"\\\\xFF\\\\xFF\\\" + \u002F\u002F advanceWidthMax\\n        \\\"\\\\x00\\\\x00\\\" + \u002F\u002F minLeftSidebearing\\n        \\\"\\\\x00\\\\x00\\\" + \u002F\u002F minRightSidebearing\\n        \\\"\\\\x00\\\\x00\\\" + \u002F\u002F xMaxExtent\\n        safeString16(properties.capHeight) + \u002F\u002F caretSlopeRise\\n        safeString16(Math.tan(properties.italicAngle) * properties.xHeight) + \u002F\u002F caretSlopeRun\\n        \\\"\\\\x00\\\\x00\\\" + \u002F\u002F caretOffset\\n        \\\"\\\\x00\\\\x00\\\" + \u002F\u002F -reserved-\\n        \\\"\\\\x00\\\\x00\\\" + \u002F\u002F -reserved-\\n        \\\"\\\\x00\\\\x00\\\" + \u002F\u002F -reserved-\\n        \\\"\\\\x00\\\\x00\\\" + \u002F\u002F -reserved-\\n        \\\"\\\\x00\\\\x00\\\" + \u002F\u002F metricDataFormat\\n        string16(numGlyphs)\\n    ); \u002F\u002F Number of HMetrics\\n\\n    \u002F\u002F Horizontal metrics\\n    builder.addTable(\\n      \\\"hmtx\\\",\\n      (function fontFieldsHmtx() {\\n        const charstrings = font.charstrings;\\n        const cffWidths = font.cff ? font.cff.widths : null;\\n        let hmtx = \\\"\\\\x00\\\\x00\\\\x00\\\\x00\\\"; \u002F\u002F Fake .notdef\\n        for (let i = 1, ii = numGlyphs; i \u003C ii; i++) {\\n          let width = 0;\\n          if (charstrings) {\\n            const charstring = charstrings[i - 1];\\n            width = \\\"width\\\" in charstring ? charstring.width : 0;\\n          } else if (cffWidths) {\\n            width = Math.ceil(cffWidths[i] || 0);\\n          }\\n          hmtx += string16(width) + string16(0);\\n        }\\n        return hmtx;\\n      })()\\n    );\\n\\n    \u002F\u002F Maximum profile\\n    builder.addTable(\\n      \\\"maxp\\\",\\n      \\\"\\\\x00\\\\x00\\\\x50\\\\x00\\\" + string16(numGlyphs) \u002F\u002F Version number\\n    ); \u002F\u002F Num of glyphs\\n\\n    \u002F\u002F Naming tables\\n    builder.addTable(\\\"name\\\", createNameTable(fontName));\\n\\n    \u002F\u002F PostScript information\\n    builder.addTable(\\\"post\\\", createPostTable(properties));\\n\\n    return builder.toArray();\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  get _spaceWidth() {\\n    \u002F\u002F trying to estimate space character width\\n    const possibleSpaceReplacements = [\\\"space\\\", \\\"minus\\\", \\\"one\\\", \\\"i\\\", \\\"I\\\"];\\n    let width;\\n    for (const glyphName of possibleSpaceReplacements) {\\n      \u002F\u002F if possible, getting width by glyph name\\n      if (glyphName in this.widths) {\\n        width = this.widths[glyphName];\\n        break;\\n      }\\n      const glyphsUnicodeMap = getGlyphsUnicode();\\n      const glyphUnicode = glyphsUnicodeMap[glyphName];\\n      \u002F\u002F finding the charcode via unicodeToCID map\\n      let charcode = 0;\\n      if (this.composite && this.cMap.contains(glyphUnicode)) {\\n        charcode = this.cMap.lookup(glyphUnicode);\\n\\n        if (typeof charcode === \\\"string\\\") {\\n          charcode = convertCidString(glyphUnicode, charcode);\\n        }\\n      }\\n      \u002F\u002F ... via toUnicode map\\n      if (!charcode && this.toUnicode) {\\n        charcode = this.toUnicode.charCodeOf(glyphUnicode);\\n      }\\n      \u002F\u002F setting it to unicode if negative or undefined\\n      if (charcode \u003C= 0) {\\n        charcode = glyphUnicode;\\n      }\\n      \u002F\u002F trying to get width via charcode\\n      width = this.widths[charcode];\\n      if (width) {\\n        break; \u002F\u002F the non-zero width found\\n      }\\n    }\\n    return shadow(this, \\\"_spaceWidth\\\", width || this.defaultWidth);\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _charToGlyph(charcode, isSpace = false) {\\n    let glyph = this._glyphCache[charcode];\\n    \u002F\u002F All `Glyph`-properties, except `isSpace` in multi-byte strings,\\n    \u002F\u002F depend indirectly on the `charcode`.\\n    if (glyph?.isSpace === isSpace) {\\n      return glyph;\\n    }\\n    let fontCharCode, width, operatorListId;\\n\\n    let widthCode = charcode;\\n    if (this.cMap?.contains(charcode)) {\\n      widthCode = this.cMap.lookup(charcode);\\n\\n      if (typeof widthCode === \\\"string\\\") {\\n        widthCode = convertCidString(charcode, widthCode);\\n      }\\n    }\\n    width = this.widths[widthCode];\\n    if (typeof width !== \\\"number\\\") {\\n      width = this.defaultWidth;\\n    }\\n    const vmetric = this.vmetrics?.[widthCode];\\n\\n    let unicode = this.toUnicode.get(charcode) || charcode;\\n    if (typeof unicode === \\\"number\\\") {\\n      unicode = String.fromCharCode(unicode);\\n    }\\n\\n    let isInFont = this.toFontChar[charcode] !== undefined;\\n    \u002F\u002F First try the toFontChar map, if it's not there then try falling\\n    \u002F\u002F back to the char code.\\n    fontCharCode = this.toFontChar[charcode] || charcode;\\n    if (this.missingFile) {\\n      const glyphName =\\n        this.differences[charcode] || this.defaultEncoding[charcode];\\n      if (\\n        (glyphName === \\\".notdef\\\" || glyphName === \\\"\\\") &&\\n        this.type === \\\"Type1\\\"\\n      ) {\\n        \u002F\u002F .notdef glyphs should be invisible in non-embedded Type1 fonts, so\\n        \u002F\u002F replace them with spaces.\\n        fontCharCode = 0x20;\\n\\n        if (glyphName === \\\"\\\") {\\n          \u002F\u002F Ensure that other relevant glyph properties are also updated\\n          \u002F\u002F (fixes issue18059.pdf).\\n          width ||= this._spaceWidth;\\n          unicode = String.fromCharCode(fontCharCode);\\n        }\\n      }\\n      fontCharCode = mapSpecialUnicodeValues(fontCharCode);\\n    }\\n\\n    if (this.isType3Font) {\\n      \u002F\u002F Font char code in this case is actually a glyph name.\\n      operatorListId = fontCharCode;\\n    }\\n\\n    let accent = null;\\n    if (this.seacMap?.[charcode]) {\\n      isInFont = true;\\n      const seac = this.seacMap[charcode];\\n      fontCharCode = seac.baseFontCharCode;\\n      accent = {\\n        fontChar: String.fromCodePoint(seac.accentFontCharCode),\\n        offset: seac.accentOffset,\\n      };\\n    }\\n\\n    let fontChar = \\\"\\\";\\n    if (typeof fontCharCode === \\\"number\\\") {\\n      if (fontCharCode \u003C= 0x10ffff) {\\n        fontChar = String.fromCodePoint(fontCharCode);\\n      } else {\\n        warn(`charToGlyph - invalid fontCharCode: ${fontCharCode}`);\\n      }\\n    }\\n\\n    if (this.missingFile && this.vertical && fontChar.length === 1) {\\n      const vertical = getVerticalPresentationForm()[fontChar.charCodeAt(0)];\\n      if (vertical) {\\n        fontChar = unicode = String.fromCharCode(vertical);\\n      }\\n    }\\n\\n    glyph = new Glyph(\\n      charcode,\\n      fontChar,\\n      unicode,\\n      accent,\\n      width,\\n      vmetric,\\n      operatorListId,\\n      isSpace,\\n      isInFont\\n    );\\n    return (this._glyphCache[charcode] = glyph);\\n  }\\n\\n  charsToGlyphs(chars) {\\n    \u002F\u002F If we translated this string before, just grab it from the cache.\\n    let glyphs = this._charsCache[chars];\\n    if (glyphs) {\\n      return glyphs;\\n    }\\n    glyphs = [];\\n\\n    if (this.cMap) {\\n      \u002F\u002F Composite fonts have multi-byte strings, convert the string from\\n      \u002F\u002F single-byte to multi-byte.\\n      const c = Object.create(null),\\n        ii = chars.length;\\n      let i = 0;\\n      while (i \u003C ii) {\\n        this.cMap.readCharCode(chars, i, c);\\n        const { charcode, length } = c;\\n        i += length;\\n        \u002F\u002F Space is char with code 0x20 and length 1 in multiple-byte codes.\\n        const glyph = this._charToGlyph(\\n          charcode,\\n          length === 1 && chars.charCodeAt(i - 1) === 0x20\\n        );\\n        glyphs.push(glyph);\\n      }\\n    } else {\\n      for (let i = 0, ii = chars.length; i \u003C ii; ++i) {\\n        const charcode = chars.charCodeAt(i);\\n        const glyph = this._charToGlyph(charcode, charcode === 0x20);\\n        glyphs.push(glyph);\\n      }\\n    }\\n\\n    \u002F\u002F Enter the translated string into the cache.\\n    return (this._charsCache[chars] = glyphs);\\n  }\\n\\n  \u002F**\\n   * Chars can have different sizes (depends on the encoding).\\n   * @param {String} a string encoded with font encoding.\\n   * @returns {Array\u003CArray\u003Cnumber>>} the positions of each char in the string.\\n   *\u002F\\n  getCharPositions(chars) {\\n    \u002F\u002F This function doesn't use a cache because\\n    \u002F\u002F it's called only when saving or printing.\\n    const positions = [];\\n\\n    if (this.cMap) {\\n      const c = Object.create(null);\\n      let i = 0;\\n      while (i \u003C chars.length) {\\n        this.cMap.readCharCode(chars, i, c);\\n        const length = c.length;\\n        positions.push([i, i + length]);\\n        i += length;\\n      }\\n    } else {\\n      for (let i = 0, ii = chars.length; i \u003C ii; ++i) {\\n        positions.push([i, i + 1]);\\n      }\\n    }\\n\\n    return positions;\\n  }\\n\\n  get glyphCacheValues() {\\n    return Object.values(this._glyphCache);\\n  }\\n\\n  \u002F**\\n   * Encode a js string using font encoding.\\n   * The resulting array contains an encoded string at even positions\\n   * (can be empty) and a non-encoded one at odd positions.\\n   * @param {String} a js string.\\n   * @returns {Array\u003CString>} an array of encoded strings or non-encoded ones.\\n   *\u002F\\n  encodeString(str) {\\n    const buffers = [];\\n    const currentBuf = [];\\n\\n    \u002F\u002F buffers will contain: encoded, non-encoded, encoded, ...\\n    \u002F\u002F currentBuf is pushed in buffers each time there is a change.\\n    \u002F\u002F So when buffers.length is odd then the last string is an encoded one\\n    \u002F\u002F and currentBuf contains non-encoded chars.\\n    const hasCurrentBufErrors = () => buffers.length % 2 === 1;\\n\\n    const getCharCode =\\n      this.toUnicode instanceof IdentityToUnicodeMap\\n        ? unicode => this.toUnicode.charCodeOf(unicode)\\n        : unicode => this.toUnicode.charCodeOf(String.fromCodePoint(unicode));\\n\\n    for (let i = 0, ii = str.length; i \u003C ii; i++) {\\n      const unicode = str.codePointAt(i);\\n      if (unicode > 0xd7ff && (unicode \u003C 0xe000 || unicode > 0xfffd)) {\\n        \u002F\u002F unicode is represented by two uint16\\n        i++;\\n      }\\n      if (this.toUnicode) {\\n        const charCode = getCharCode(unicode);\\n        if (charCode !== -1) {\\n          if (hasCurrentBufErrors()) {\\n            buffers.push(currentBuf.join(\\\"\\\"));\\n            currentBuf.length = 0;\\n          }\\n          const charCodeLength = this.cMap\\n            ? this.cMap.getCharCodeLength(charCode)\\n            : 1;\\n          for (let j = charCodeLength - 1; j >= 0; j--) {\\n            currentBuf.push(String.fromCharCode((charCode >> (8 * j)) & 0xff));\\n          }\\n          continue;\\n        }\\n      }\\n\\n      \u002F\u002F unicode can't be encoded\\n      if (!hasCurrentBufErrors()) {\\n        buffers.push(currentBuf.join(\\\"\\\"));\\n        currentBuf.length = 0;\\n      }\\n      currentBuf.push(String.fromCodePoint(unicode));\\n    }\\n\\n    buffers.push(currentBuf.join(\\\"\\\"));\\n\\n    return buffers;\\n  }\\n}\\n\\nclass ErrorFont {\\n  constructor(error) {\\n    this.error = error;\\n    this.loadedName = \\\"g_font_error\\\";\\n    this.missingFile = true;\\n  }\\n\\n  charsToGlyphs() {\\n    return [];\\n  }\\n\\n  encodeString(chars) {\\n    return [chars];\\n  }\\n\\n  exportData() {\\n    return { error: this.error };\\n  }\\n}\\n\\nexport { ErrorFont, Font };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  assert,\\n  FormatError,\\n  info,\\n  MathClamp,\\n  unreachable,\\n  Util,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  IDENTITY_MATRIX,\\n  isBooleanArray,\\n  isNumberArray,\\n  lookupMatrix,\\n  lookupNormalRect,\\n  MissingDataException,\\n} from \\\".\u002Fcore_utils.js\\\";\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { ColorSpaceUtils } from \\\".\u002Fcolorspace_utils.js\\\";\\n\\nconst ShadingType = {\\n  FUNCTION_BASED: 1,\\n  AXIAL: 2,\\n  RADIAL: 3,\\n  FREE_FORM_MESH: 4,\\n  LATTICE_FORM_MESH: 5,\\n  COONS_PATCH_MESH: 6,\\n  TENSOR_PATCH_MESH: 7,\\n};\\n\\nclass Pattern {\\n  constructor() {\\n    unreachable(\\\"Cannot initialize Pattern.\\\");\\n  }\\n\\n  static parseShading(\\n    shading,\\n    xref,\\n    res,\\n    pdfFunctionFactory,\\n    globalColorSpaceCache,\\n    localColorSpaceCache\\n  ) {\\n    const dict = shading instanceof BaseStream ? shading.dict : shading;\\n    const type = dict.get(\\\"ShadingType\\\");\\n\\n    try {\\n      switch (type) {\\n        case ShadingType.AXIAL:\\n        case ShadingType.RADIAL:\\n          return new RadialAxialShading(\\n            dict,\\n            xref,\\n            res,\\n            pdfFunctionFactory,\\n            globalColorSpaceCache,\\n            localColorSpaceCache\\n          );\\n        case ShadingType.FREE_FORM_MESH:\\n        case ShadingType.LATTICE_FORM_MESH:\\n        case ShadingType.COONS_PATCH_MESH:\\n        case ShadingType.TENSOR_PATCH_MESH:\\n          return new MeshShading(\\n            shading,\\n            xref,\\n            res,\\n            pdfFunctionFactory,\\n            globalColorSpaceCache,\\n            localColorSpaceCache\\n          );\\n        default:\\n          throw new FormatError(\\\"Unsupported ShadingType: \\\" + type);\\n      }\\n    } catch (ex) {\\n      if (ex instanceof MissingDataException) {\\n        throw ex;\\n      }\\n      warn(ex);\\n      return new DummyShading();\\n    }\\n  }\\n}\\n\\nclass BaseShading {\\n  \u002F\u002F A small number to offset the first\u002Flast color stops so we can insert ones\\n  \u002F\u002F to support extend. Number.MIN_VALUE is too small and breaks the extend.\\n  static SMALL_NUMBER = 1e-6;\\n\\n  constructor() {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      this.constructor === BaseShading\\n    ) {\\n      unreachable(\\\"Cannot initialize BaseShading.\\\");\\n    }\\n  }\\n\\n  getIR() {\\n    unreachable(\\\"Abstract method `getIR` called.\\\");\\n  }\\n}\\n\\n\u002F\u002F Radial and axial shading have very similar implementations\\n\u002F\u002F If needed, the implementations can be broken into two classes.\\nclass RadialAxialShading extends BaseShading {\\n  constructor(\\n    dict,\\n    xref,\\n    resources,\\n    pdfFunctionFactory,\\n    globalColorSpaceCache,\\n    localColorSpaceCache\\n  ) {\\n    super();\\n    this.shadingType = dict.get(\\\"ShadingType\\\");\\n    let coordsLen = 0;\\n    if (this.shadingType === ShadingType.AXIAL) {\\n      coordsLen = 4;\\n    } else if (this.shadingType === ShadingType.RADIAL) {\\n      coordsLen = 6;\\n    }\\n    this.coordsArr = dict.getArray(\\\"Coords\\\");\\n    if (!isNumberArray(this.coordsArr, coordsLen)) {\\n      throw new FormatError(\\\"RadialAxialShading: Invalid \u002FCoords array.\\\");\\n    }\\n    const cs = ColorSpaceUtils.parse({\\n      cs: dict.getRaw(\\\"CS\\\") || dict.getRaw(\\\"ColorSpace\\\"),\\n      xref,\\n      resources,\\n      pdfFunctionFactory,\\n      globalColorSpaceCache,\\n      localColorSpaceCache,\\n    });\\n    this.bbox = lookupNormalRect(dict.getArray(\\\"BBox\\\"), null);\\n\\n    let t0 = 0.0,\\n      t1 = 1.0;\\n    const domainArr = dict.getArray(\\\"Domain\\\");\\n    if (isNumberArray(domainArr, 2)) {\\n      [t0, t1] = domainArr;\\n    }\\n\\n    let extendStart = false,\\n      extendEnd = false;\\n    const extendArr = dict.getArray(\\\"Extend\\\");\\n    if (isBooleanArray(extendArr, 2)) {\\n      [extendStart, extendEnd] = extendArr;\\n    }\\n\\n    if (\\n      this.shadingType === ShadingType.RADIAL &&\\n      (!extendStart || !extendEnd)\\n    ) {\\n      \u002F\u002F Radial gradient only currently works if either circle is fully within\\n      \u002F\u002F the other circle.\\n      const [x1, y1, r1, x2, y2, r2] = this.coordsArr;\\n      const distance = Math.hypot(x1 - x2, y1 - y2);\\n      if (r1 \u003C= r2 + distance && r2 \u003C= r1 + distance) {\\n        warn(\\\"Unsupported radial gradient.\\\");\\n      }\\n    }\\n\\n    this.extendStart = extendStart;\\n    this.extendEnd = extendEnd;\\n\\n    const fnObj = dict.getRaw(\\\"Function\\\");\\n    const fn = pdfFunctionFactory.create(fnObj, \u002F* parseArray = *\u002F true);\\n\\n    \u002F\u002F Use lcm(1,2,3,4,5,6,7,8,10) = 840 (including 9 increases this to 2520)\\n    \u002F\u002F to catch evenly spaced stops. oeis.org\u002FA003418\\n    const NUMBER_OF_SAMPLES = 840;\\n    const step = (t1 - t0) \u002F NUMBER_OF_SAMPLES;\\n\\n    const colorStops = (this.colorStops = []);\\n\\n    \u002F\u002F Protect against bad domains.\\n    if (t0 >= t1 || step \u003C= 0) {\\n      \u002F\u002F Acrobat doesn't seem to handle these cases so we'll ignore for\\n      \u002F\u002F now.\\n      info(\\\"Bad shading domain.\\\");\\n      return;\\n    }\\n\\n    const color = new Float32Array(cs.numComps),\\n      ratio = new Float32Array(1);\\n\\n    let iBase = 0;\\n    ratio[0] = t0;\\n    fn(ratio, 0, color, 0);\\n    const rgbBuffer = new Uint8ClampedArray(3);\\n    cs.getRgb(color, 0, rgbBuffer);\\n    let [rBase, gBase, bBase] = rgbBuffer;\\n    colorStops.push([0, Util.makeHexColor(rBase, gBase, bBase)]);\\n\\n    let iPrev = 1;\\n    ratio[0] = t0 + step;\\n    fn(ratio, 0, color, 0);\\n    cs.getRgb(color, 0, rgbBuffer);\\n    let [rPrev, gPrev, bPrev] = rgbBuffer;\\n\\n    \u002F\u002F Slopes are rise \u002F run.\\n    \u002F\u002F A max slope is from the least value the base component could have been\\n    \u002F\u002F to the greatest value the current component could have been.\\n    \u002F\u002F A min slope is from the greatest value the base component could have been\\n    \u002F\u002F to the least value the current component could have been.\\n    \u002F\u002F Each component could have been rounded up to .5 from its original value\\n    \u002F\u002F so the conservative deltas are +-1 (+-.5 for base and -+.5 for current).\\n\\n    \u002F\u002F The run is iPrev - iBase = 1, so omitted.\\n    let maxSlopeR = rPrev - rBase + 1;\\n    let maxSlopeG = gPrev - gBase + 1;\\n    let maxSlopeB = bPrev - bBase + 1;\\n    let minSlopeR = rPrev - rBase - 1;\\n    let minSlopeG = gPrev - gBase - 1;\\n    let minSlopeB = bPrev - bBase - 1;\\n\\n    for (let i = 2; i \u003C NUMBER_OF_SAMPLES; i++) {\\n      ratio[0] = t0 + i * step;\\n      fn(ratio, 0, color, 0);\\n      cs.getRgb(color, 0, rgbBuffer);\\n      const [r, g, b] = rgbBuffer;\\n\\n      \u002F\u002F Keep going if the maximum minimum slope \u003C= the minimum maximum slope.\\n      \u002F\u002F Otherwise add a rgbPrev color stop and make it the new base.\\n\\n      const run = i - iBase;\\n      maxSlopeR = Math.min(maxSlopeR, (r - rBase + 1) \u002F run);\\n      maxSlopeG = Math.min(maxSlopeG, (g - gBase + 1) \u002F run);\\n      maxSlopeB = Math.min(maxSlopeB, (b - bBase + 1) \u002F run);\\n      minSlopeR = Math.max(minSlopeR, (r - rBase - 1) \u002F run);\\n      minSlopeG = Math.max(minSlopeG, (g - gBase - 1) \u002F run);\\n      minSlopeB = Math.max(minSlopeB, (b - bBase - 1) \u002F run);\\n\\n      const slopesExist =\\n        minSlopeR \u003C= maxSlopeR &&\\n        minSlopeG \u003C= maxSlopeG &&\\n        minSlopeB \u003C= maxSlopeB;\\n\\n      if (!slopesExist) {\\n        const cssColor = Util.makeHexColor(rPrev, gPrev, bPrev);\\n        colorStops.push([iPrev \u002F NUMBER_OF_SAMPLES, cssColor]);\\n\\n        \u002F\u002F TODO: When fn frequency is high (iPrev - iBase === 1 twice in a row),\\n        \u002F\u002F send the color space and function to do the sampling display side.\\n\\n        \u002F\u002F The run is i - iPrev = 1, so omitted.\\n        maxSlopeR = r - rPrev + 1;\\n        maxSlopeG = g - gPrev + 1;\\n        maxSlopeB = b - bPrev + 1;\\n        minSlopeR = r - rPrev - 1;\\n        minSlopeG = g - gPrev - 1;\\n        minSlopeB = b - bPrev - 1;\\n\\n        iBase = iPrev;\\n        rBase = rPrev;\\n        gBase = gPrev;\\n        bBase = bPrev;\\n      }\\n\\n      iPrev = i;\\n      rPrev = r;\\n      gPrev = g;\\n      bPrev = b;\\n    }\\n    colorStops.push([1, Util.makeHexColor(rPrev, gPrev, bPrev)]);\\n\\n    let background = \\\"transparent\\\";\\n    if (dict.has(\\\"Background\\\")) {\\n      background = cs.getRgbHex(dict.get(\\\"Background\\\"), 0);\\n    }\\n\\n    if (!extendStart) {\\n      \u002F\u002F Insert a color stop at the front and offset the first real color stop\\n      \u002F\u002F so it doesn't conflict with the one we insert.\\n      colorStops.unshift([0, background]);\\n      colorStops[1][0] += BaseShading.SMALL_NUMBER;\\n    }\\n    if (!extendEnd) {\\n      \u002F\u002F Same idea as above in extendStart but for the end.\\n      colorStops.at(-1)[0] -= BaseShading.SMALL_NUMBER;\\n      colorStops.push([1, background]);\\n    }\\n\\n    this.colorStops = colorStops;\\n  }\\n\\n  getIR() {\\n    const { coordsArr, shadingType } = this;\\n    let type, p0, p1, r0, r1;\\n    if (shadingType === ShadingType.AXIAL) {\\n      p0 = [coordsArr[0], coordsArr[1]];\\n      p1 = [coordsArr[2], coordsArr[3]];\\n      r0 = null;\\n      r1 = null;\\n      type = \\\"axial\\\";\\n    } else if (shadingType === ShadingType.RADIAL) {\\n      p0 = [coordsArr[0], coordsArr[1]];\\n      p1 = [coordsArr[3], coordsArr[4]];\\n      r0 = coordsArr[2];\\n      r1 = coordsArr[5];\\n      type = \\\"radial\\\";\\n    } else {\\n      unreachable(`getPattern type unknown: ${shadingType}`);\\n    }\\n\\n    return [\\\"RadialAxial\\\", type, this.bbox, this.colorStops, p0, p1, r0, r1];\\n  }\\n}\\n\\n\u002F\u002F All mesh shadings. For now, they will be presented as set of the triangles\\n\u002F\u002F to be drawn on the canvas and rgb color for each vertex.\\nclass MeshStreamReader {\\n  constructor(stream, context) {\\n    this.stream = stream;\\n    this.context = context;\\n    this.buffer = 0;\\n    this.bufferLength = 0;\\n\\n    const numComps = context.numComps;\\n    this.tmpCompsBuf = new Float32Array(numComps);\\n    const csNumComps = context.colorSpace.numComps;\\n    this.tmpCsCompsBuf = context.colorFn\\n      ? new Float32Array(csNumComps)\\n      : this.tmpCompsBuf;\\n  }\\n\\n  get hasData() {\\n    if (this.stream.end) {\\n      return this.stream.pos \u003C this.stream.end;\\n    }\\n    if (this.bufferLength > 0) {\\n      return true;\\n    }\\n    const nextByte = this.stream.getByte();\\n    if (nextByte \u003C 0) {\\n      return false;\\n    }\\n    this.buffer = nextByte;\\n    this.bufferLength = 8;\\n    return true;\\n  }\\n\\n  readBits(n) {\\n    const { stream } = this;\\n    let { buffer, bufferLength } = this;\\n\\n    if (n === 32) {\\n      if (bufferLength === 0) {\\n        return stream.getInt32() >>> 0;\\n      }\\n      buffer =\\n        (buffer \u003C\u003C 24) |\\n        (stream.getByte() \u003C\u003C 16) |\\n        (stream.getByte() \u003C\u003C 8) |\\n        stream.getByte();\\n      const nextByte = stream.getByte();\\n      this.buffer = nextByte & ((1 \u003C\u003C bufferLength) - 1);\\n      return (\\n        ((buffer \u003C\u003C (8 - bufferLength)) |\\n          ((nextByte & 0xff) >> bufferLength)) >>>\\n        0\\n      );\\n    }\\n    if (n === 8 && bufferLength === 0) {\\n      return stream.getByte();\\n    }\\n    while (bufferLength \u003C n) {\\n      buffer = (buffer \u003C\u003C 8) | stream.getByte();\\n      bufferLength += 8;\\n    }\\n    bufferLength -= n;\\n    this.bufferLength = bufferLength;\\n    this.buffer = buffer & ((1 \u003C\u003C bufferLength) - 1);\\n    return buffer >> bufferLength;\\n  }\\n\\n  align() {\\n    this.buffer = 0;\\n    this.bufferLength = 0;\\n  }\\n\\n  readFlag() {\\n    return this.readBits(this.context.bitsPerFlag);\\n  }\\n\\n  readCoordinate() {\\n    const { bitsPerCoordinate, decode } = this.context;\\n    const xi = this.readBits(bitsPerCoordinate);\\n    const yi = this.readBits(bitsPerCoordinate);\\n    const scale =\\n      bitsPerCoordinate \u003C 32\\n        ? 1 \u002F ((1 \u003C\u003C bitsPerCoordinate) - 1)\\n        : 2.3283064365386963e-10; \u002F\u002F 2 ^ -32\\n    return [\\n      xi * scale * (decode[1] - decode[0]) + decode[0],\\n      yi * scale * (decode[3] - decode[2]) + decode[2],\\n    ];\\n  }\\n\\n  readComponents() {\\n    const { bitsPerComponent, colorFn, colorSpace, decode, numComps } =\\n      this.context;\\n    const scale =\\n      bitsPerComponent \u003C 32\\n        ? 1 \u002F ((1 \u003C\u003C bitsPerComponent) - 1)\\n        : 2.3283064365386963e-10; \u002F\u002F 2 ^ -32\\n    const components = this.tmpCompsBuf;\\n    for (let i = 0, j = 4; i \u003C numComps; i++, j += 2) {\\n      const ci = this.readBits(bitsPerComponent);\\n      components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j];\\n    }\\n    const color = this.tmpCsCompsBuf;\\n    colorFn?.(components, 0, color, 0);\\n    return colorSpace.getRgb(color, 0);\\n  }\\n}\\n\\nlet bCache = Object.create(null);\\n\\nfunction buildB(count) {\\n  const lut = [];\\n  for (let i = 0; i \u003C= count; i++) {\\n    const t = i \u002F count,\\n      t_ = 1 - t;\\n    lut.push(\\n      new Float32Array([t_ ** 3, 3 * t * t_ ** 2, 3 * t ** 2 * t_, t ** 3])\\n    );\\n  }\\n  return lut;\\n}\\nfunction getB(count) {\\n  return (bCache[count] ||= buildB(count));\\n}\\n\\nfunction clearPatternCaches() {\\n  bCache = Object.create(null);\\n}\\n\\nclass MeshShading extends BaseShading {\\n  static MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3;\\n\\n  static MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20;\\n\\n  \u002F\u002F Count of triangles per entire mesh bounds.\\n  static TRIANGLE_DENSITY = 20;\\n\\n  constructor(\\n    stream,\\n    xref,\\n    resources,\\n    pdfFunctionFactory,\\n    globalColorSpaceCache,\\n    localColorSpaceCache\\n  ) {\\n    super();\\n    if (!(stream instanceof BaseStream)) {\\n      throw new FormatError(\\\"Mesh data is not a stream\\\");\\n    }\\n    const dict = stream.dict;\\n    this.shadingType = dict.get(\\\"ShadingType\\\");\\n    this.bbox = lookupNormalRect(dict.getArray(\\\"BBox\\\"), null);\\n    const cs = ColorSpaceUtils.parse({\\n      cs: dict.getRaw(\\\"CS\\\") || dict.getRaw(\\\"ColorSpace\\\"),\\n      xref,\\n      resources,\\n      pdfFunctionFactory,\\n      globalColorSpaceCache,\\n      localColorSpaceCache,\\n    });\\n    this.background = dict.has(\\\"Background\\\")\\n      ? cs.getRgb(dict.get(\\\"Background\\\"), 0)\\n      : null;\\n\\n    const fnObj = dict.getRaw(\\\"Function\\\");\\n    const fn = fnObj\\n      ? pdfFunctionFactory.create(fnObj, \u002F* parseArray = *\u002F true)\\n      : null;\\n\\n    this.coords = [];\\n    this.colors = [];\\n    this.figures = [];\\n\\n    const decodeContext = {\\n      bitsPerCoordinate: dict.get(\\\"BitsPerCoordinate\\\"),\\n      bitsPerComponent: dict.get(\\\"BitsPerComponent\\\"),\\n      bitsPerFlag: dict.get(\\\"BitsPerFlag\\\"),\\n      decode: dict.getArray(\\\"Decode\\\"),\\n      colorFn: fn,\\n      colorSpace: cs,\\n      numComps: fn ? 1 : cs.numComps,\\n    };\\n    const reader = new MeshStreamReader(stream, decodeContext);\\n\\n    let patchMesh = false;\\n    switch (this.shadingType) {\\n      case ShadingType.FREE_FORM_MESH:\\n        this._decodeType4Shading(reader);\\n        break;\\n      case ShadingType.LATTICE_FORM_MESH:\\n        const verticesPerRow = dict.get(\\\"VerticesPerRow\\\") | 0;\\n        if (verticesPerRow \u003C 2) {\\n          throw new FormatError(\\\"Invalid VerticesPerRow\\\");\\n        }\\n        this._decodeType5Shading(reader, verticesPerRow);\\n        break;\\n      case ShadingType.COONS_PATCH_MESH:\\n        this._decodeType6Shading(reader);\\n        patchMesh = true;\\n        break;\\n      case ShadingType.TENSOR_PATCH_MESH:\\n        this._decodeType7Shading(reader);\\n        patchMesh = true;\\n        break;\\n      default:\\n        unreachable(\\\"Unsupported mesh type.\\\");\\n        break;\\n    }\\n\\n    if (patchMesh) {\\n      \u002F\u002F Dirty bounds calculation, to determine how dense the triangles will be.\\n      this._updateBounds();\\n      for (let i = 0, ii = this.figures.length; i \u003C ii; i++) {\\n        this._buildFigureFromPatch(i);\\n      }\\n    }\\n    \u002F\u002F Calculate bounds.\\n    this._updateBounds();\\n\\n    this._packData();\\n  }\\n\\n  _decodeType4Shading(reader) {\\n    const coords = this.coords;\\n    const colors = this.colors;\\n    const operators = [];\\n    const ps = []; \u002F\u002F not maintaining cs since that will match ps\\n    let verticesLeft = 0; \u002F\u002F assuming we have all data to start a new triangle\\n    while (reader.hasData) {\\n      const f = reader.readFlag();\\n      const coord = reader.readCoordinate();\\n      const color = reader.readComponents();\\n      if (verticesLeft === 0) {\\n        \u002F\u002F ignoring flags if we started a triangle\\n        if (!(0 \u003C= f && f \u003C= 2)) {\\n          throw new FormatError(\\\"Unknown type4 flag\\\");\\n        }\\n        switch (f) {\\n          case 0:\\n            verticesLeft = 3;\\n            break;\\n          case 1:\\n            ps.push(ps.at(-2), ps.at(-1));\\n            verticesLeft = 1;\\n            break;\\n          case 2:\\n            ps.push(ps.at(-3), ps.at(-1));\\n            verticesLeft = 1;\\n            break;\\n        }\\n        operators.push(f);\\n      }\\n      ps.push(coords.length);\\n      coords.push(coord);\\n      colors.push(color);\\n      verticesLeft--;\\n\\n      reader.align();\\n    }\\n    this.figures.push({\\n      type: \\\"triangles\\\",\\n      coords: new Int32Array(ps),\\n      colors: new Int32Array(ps),\\n    });\\n  }\\n\\n  _decodeType5Shading(reader, verticesPerRow) {\\n    const coords = this.coords;\\n    const colors = this.colors;\\n    const ps = []; \u002F\u002F not maintaining cs since that will match ps\\n    while (reader.hasData) {\\n      const coord = reader.readCoordinate();\\n      const color = reader.readComponents();\\n      ps.push(coords.length);\\n      coords.push(coord);\\n      colors.push(color);\\n    }\\n    this.figures.push({\\n      type: \\\"lattice\\\",\\n      coords: new Int32Array(ps),\\n      colors: new Int32Array(ps),\\n      verticesPerRow,\\n    });\\n  }\\n\\n  _decodeType6Shading(reader) {\\n    \u002F\u002F A special case of Type 7. The p11, p12, p21, p22 automatically filled\\n    const coords = this.coords;\\n    const colors = this.colors;\\n    const ps = new Int32Array(16); \u002F\u002F p00, p10, ..., p30, p01, ..., p33\\n    const cs = new Int32Array(4); \u002F\u002F c00, c30, c03, c33\\n    while (reader.hasData) {\\n      const f = reader.readFlag();\\n      if (!(0 \u003C= f && f \u003C= 3)) {\\n        throw new FormatError(\\\"Unknown type6 flag\\\");\\n      }\\n      const pi = coords.length;\\n      for (let i = 0, ii = f !== 0 ? 8 : 12; i \u003C ii; i++) {\\n        coords.push(reader.readCoordinate());\\n      }\\n      const ci = colors.length;\\n      for (let i = 0, ii = f !== 0 ? 2 : 4; i \u003C ii; i++) {\\n        colors.push(reader.readComponents());\\n      }\\n      let tmp1, tmp2, tmp3, tmp4;\\n      switch (f) {\\n        \u002F\u002F prettier-ignore\\n        case 0:\\n          ps[12] = pi + 3; ps[13] = pi + 4;  ps[14] = pi + 5;  ps[15] = pi + 6;\\n          ps[ 8] = pi + 2; \u002F* values for 5, 6, 9, 10 are    *\u002F ps[11] = pi + 7;\\n          ps[ 4] = pi + 1; \u002F* calculated below              *\u002F ps[ 7] = pi + 8;\\n          ps[ 0] = pi;     ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\\n          cs[2] = ci + 1; cs[3] = ci + 2;\\n          cs[0] = ci;     cs[1] = ci + 3;\\n          break;\\n        \u002F\u002F prettier-ignore\\n        case 1:\\n          tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\\n          ps[12] = tmp4; ps[13] = pi + 0;  ps[14] = pi + 1;  ps[15] = pi + 2;\\n          ps[ 8] = tmp3; \u002F* values for 5, 6, 9, 10 are    *\u002F ps[11] = pi + 3;\\n          ps[ 4] = tmp2; \u002F* calculated below              *\u002F ps[ 7] = pi + 4;\\n          ps[ 0] = tmp1; ps[ 1] = pi + 7;   ps[ 2] = pi + 6; ps[ 3] = pi + 5;\\n          tmp1 = cs[2]; tmp2 = cs[3];\\n          cs[2] = tmp2;   cs[3] = ci;\\n          cs[0] = tmp1;   cs[1] = ci + 1;\\n          break;\\n        \u002F\u002F prettier-ignore\\n        case 2:\\n          tmp1 = ps[15];\\n          tmp2 = ps[11];\\n          ps[12] = ps[3];  ps[13] = pi + 0; ps[14] = pi + 1;   ps[15] = pi + 2;\\n          ps[ 8] = ps[7];  \u002F* values for 5, 6, 9, 10 are    *\u002F ps[11] = pi + 3;\\n          ps[ 4] = tmp2;   \u002F* calculated below              *\u002F ps[ 7] = pi + 4;\\n          ps[ 0] = tmp1;  ps[ 1] = pi + 7;   ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\\n          tmp1 = cs[3];\\n          cs[2] = cs[1]; cs[3] = ci;\\n          cs[0] = tmp1;  cs[1] = ci + 1;\\n          break;\\n        \u002F\u002F prettier-ignore\\n        case 3:\\n          ps[12] = ps[0];  ps[13] = pi + 0;   ps[14] = pi + 1; ps[15] = pi + 2;\\n          ps[ 8] = ps[1];  \u002F* values for 5, 6, 9, 10 are    *\u002F ps[11] = pi + 3;\\n          ps[ 4] = ps[2];  \u002F* calculated below              *\u002F ps[ 7] = pi + 4;\\n          ps[ 0] = ps[3];  ps[ 1] = pi + 7;   ps[ 2] = pi + 6; ps[ 3] = pi + 5;\\n          cs[2] = cs[0]; cs[3] = ci;\\n          cs[0] = cs[1]; cs[1] = ci + 1;\\n          break;\\n      }\\n      \u002F\u002F set p11, p12, p21, p22\\n      ps[5] = coords.length;\\n      coords.push([\\n        (-4 * coords[ps[0]][0] -\\n          coords[ps[15]][0] +\\n          6 * (coords[ps[4]][0] + coords[ps[1]][0]) -\\n          2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\\n          3 * (coords[ps[13]][0] + coords[ps[7]][0])) \u002F\\n          9,\\n        (-4 * coords[ps[0]][1] -\\n          coords[ps[15]][1] +\\n          6 * (coords[ps[4]][1] + coords[ps[1]][1]) -\\n          2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\\n          3 * (coords[ps[13]][1] + coords[ps[7]][1])) \u002F\\n          9,\\n      ]);\\n      ps[6] = coords.length;\\n      coords.push([\\n        (-4 * coords[ps[3]][0] -\\n          coords[ps[12]][0] +\\n          6 * (coords[ps[2]][0] + coords[ps[7]][0]) -\\n          2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\\n          3 * (coords[ps[4]][0] + coords[ps[14]][0])) \u002F\\n          9,\\n        (-4 * coords[ps[3]][1] -\\n          coords[ps[12]][1] +\\n          6 * (coords[ps[2]][1] + coords[ps[7]][1]) -\\n          2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\\n          3 * (coords[ps[4]][1] + coords[ps[14]][1])) \u002F\\n          9,\\n      ]);\\n      ps[9] = coords.length;\\n      coords.push([\\n        (-4 * coords[ps[12]][0] -\\n          coords[ps[3]][0] +\\n          6 * (coords[ps[8]][0] + coords[ps[13]][0]) -\\n          2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\\n          3 * (coords[ps[11]][0] + coords[ps[1]][0])) \u002F\\n          9,\\n        (-4 * coords[ps[12]][1] -\\n          coords[ps[3]][1] +\\n          6 * (coords[ps[8]][1] + coords[ps[13]][1]) -\\n          2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\\n          3 * (coords[ps[11]][1] + coords[ps[1]][1])) \u002F\\n          9,\\n      ]);\\n      ps[10] = coords.length;\\n      coords.push([\\n        (-4 * coords[ps[15]][0] -\\n          coords[ps[0]][0] +\\n          6 * (coords[ps[11]][0] + coords[ps[14]][0]) -\\n          2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\\n          3 * (coords[ps[2]][0] + coords[ps[8]][0])) \u002F\\n          9,\\n        (-4 * coords[ps[15]][1] -\\n          coords[ps[0]][1] +\\n          6 * (coords[ps[11]][1] + coords[ps[14]][1]) -\\n          2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\\n          3 * (coords[ps[2]][1] + coords[ps[8]][1])) \u002F\\n          9,\\n      ]);\\n      this.figures.push({\\n        type: \\\"patch\\\",\\n        coords: new Int32Array(ps), \u002F\u002F making copies of ps and cs\\n        colors: new Int32Array(cs),\\n      });\\n    }\\n  }\\n\\n  _decodeType7Shading(reader) {\\n    const coords = this.coords;\\n    const colors = this.colors;\\n    const ps = new Int32Array(16); \u002F\u002F p00, p10, ..., p30, p01, ..., p33\\n    const cs = new Int32Array(4); \u002F\u002F c00, c30, c03, c33\\n    while (reader.hasData) {\\n      const f = reader.readFlag();\\n      if (!(0 \u003C= f && f \u003C= 3)) {\\n        throw new FormatError(\\\"Unknown type7 flag\\\");\\n      }\\n      const pi = coords.length;\\n      for (let i = 0, ii = f !== 0 ? 12 : 16; i \u003C ii; i++) {\\n        coords.push(reader.readCoordinate());\\n      }\\n      const ci = colors.length;\\n      for (let i = 0, ii = f !== 0 ? 2 : 4; i \u003C ii; i++) {\\n        colors.push(reader.readComponents());\\n      }\\n      let tmp1, tmp2, tmp3, tmp4;\\n      switch (f) {\\n        \u002F\u002F prettier-ignore\\n        case 0:\\n          ps[12] = pi + 3; ps[13] = pi + 4;  ps[14] = pi + 5;  ps[15] = pi + 6;\\n          ps[ 8] = pi + 2; ps[ 9] = pi + 13; ps[10] = pi + 14; ps[11] = pi + 7;\\n          ps[ 4] = pi + 1; ps[ 5] = pi + 12; ps[ 6] = pi + 15; ps[ 7] = pi + 8;\\n          ps[ 0] = pi;     ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\\n          cs[2] = ci + 1; cs[3] = ci + 2;\\n          cs[0] = ci;     cs[1] = ci + 3;\\n          break;\\n        \u002F\u002F prettier-ignore\\n        case 1:\\n          tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\\n          ps[12] = tmp4;   ps[13] = pi + 0;  ps[14] = pi + 1;  ps[15] = pi + 2;\\n          ps[ 8] = tmp3;   ps[ 9] = pi + 9;  ps[10] = pi + 10; ps[11] = pi + 3;\\n          ps[ 4] = tmp2;   ps[ 5] = pi + 8;  ps[ 6] = pi + 11; ps[ 7] = pi + 4;\\n          ps[ 0] = tmp1;   ps[ 1] = pi + 7;  ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\\n          tmp1 = cs[2]; tmp2 = cs[3];\\n          cs[2] = tmp2;   cs[3] = ci;\\n          cs[0] = tmp1;   cs[1] = ci + 1;\\n          break;\\n        \u002F\u002F prettier-ignore\\n        case 2:\\n          tmp1 = ps[15];\\n          tmp2 = ps[11];\\n          ps[12] = ps[3]; ps[13] = pi + 0; ps[14] = pi + 1;  ps[15] = pi + 2;\\n          ps[ 8] = ps[7]; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3;\\n          ps[ 4] = tmp2;  ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4;\\n          ps[ 0] = tmp1;  ps[ 1] = pi + 7; ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\\n          tmp1 = cs[3];\\n          cs[2] = cs[1]; cs[3] = ci;\\n          cs[0] = tmp1;  cs[1] = ci + 1;\\n          break;\\n        \u002F\u002F prettier-ignore\\n        case 3:\\n          ps[12] = ps[0];  ps[13] = pi + 0;  ps[14] = pi + 1;  ps[15] = pi + 2;\\n          ps[ 8] = ps[1];  ps[ 9] = pi + 9;  ps[10] = pi + 10; ps[11] = pi + 3;\\n          ps[ 4] = ps[2];  ps[ 5] = pi + 8;  ps[ 6] = pi + 11; ps[ 7] = pi + 4;\\n          ps[ 0] = ps[3];  ps[ 1] = pi + 7;  ps[ 2] = pi + 6;  ps[ 3] = pi + 5;\\n          cs[2] = cs[0]; cs[3] = ci;\\n          cs[0] = cs[1]; cs[1] = ci + 1;\\n          break;\\n      }\\n      this.figures.push({\\n        type: \\\"patch\\\",\\n        coords: new Int32Array(ps), \u002F\u002F making copies of ps and cs\\n        colors: new Int32Array(cs),\\n      });\\n    }\\n  }\\n\\n  _buildFigureFromPatch(index) {\\n    const figure = this.figures[index];\\n    assert(figure.type === \\\"patch\\\", \\\"Unexpected patch mesh figure\\\");\\n\\n    const coords = this.coords,\\n      colors = this.colors;\\n    const pi = figure.coords;\\n    const ci = figure.colors;\\n\\n    const figureMinX = Math.min(\\n      coords[pi[0]][0],\\n      coords[pi[3]][0],\\n      coords[pi[12]][0],\\n      coords[pi[15]][0]\\n    );\\n    const figureMinY = Math.min(\\n      coords[pi[0]][1],\\n      coords[pi[3]][1],\\n      coords[pi[12]][1],\\n      coords[pi[15]][1]\\n    );\\n    const figureMaxX = Math.max(\\n      coords[pi[0]][0],\\n      coords[pi[3]][0],\\n      coords[pi[12]][0],\\n      coords[pi[15]][0]\\n    );\\n    const figureMaxY = Math.max(\\n      coords[pi[0]][1],\\n      coords[pi[3]][1],\\n      coords[pi[12]][1],\\n      coords[pi[15]][1]\\n    );\\n    let splitXBy = Math.ceil(\\n      ((figureMaxX - figureMinX) * MeshShading.TRIANGLE_DENSITY) \u002F\\n        (this.bounds[2] - this.bounds[0])\\n    );\\n    splitXBy = MathClamp(\\n      splitXBy,\\n      MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\\n      MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT\\n    );\\n    let splitYBy = Math.ceil(\\n      ((figureMaxY - figureMinY) * MeshShading.TRIANGLE_DENSITY) \u002F\\n        (this.bounds[3] - this.bounds[1])\\n    );\\n    splitYBy = MathClamp(\\n      splitYBy,\\n      MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\\n      MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT\\n    );\\n\\n    const verticesPerRow = splitXBy + 1;\\n    const figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow);\\n    const figureColors = new Int32Array((splitYBy + 1) * verticesPerRow);\\n    let k = 0;\\n    const cl = new Uint8Array(3),\\n      cr = new Uint8Array(3);\\n    const c0 = colors[ci[0]],\\n      c1 = colors[ci[1]],\\n      c2 = colors[ci[2]],\\n      c3 = colors[ci[3]];\\n    const bRow = getB(splitYBy),\\n      bCol = getB(splitXBy);\\n    for (let row = 0; row \u003C= splitYBy; row++) {\\n      cl[0] = ((c0[0] * (splitYBy - row) + c2[0] * row) \u002F splitYBy) | 0;\\n      cl[1] = ((c0[1] * (splitYBy - row) + c2[1] * row) \u002F splitYBy) | 0;\\n      cl[2] = ((c0[2] * (splitYBy - row) + c2[2] * row) \u002F splitYBy) | 0;\\n\\n      cr[0] = ((c1[0] * (splitYBy - row) + c3[0] * row) \u002F splitYBy) | 0;\\n      cr[1] = ((c1[1] * (splitYBy - row) + c3[1] * row) \u002F splitYBy) | 0;\\n      cr[2] = ((c1[2] * (splitYBy - row) + c3[2] * row) \u002F splitYBy) | 0;\\n\\n      for (let col = 0; col \u003C= splitXBy; col++, k++) {\\n        if (\\n          (row === 0 || row === splitYBy) &&\\n          (col === 0 || col === splitXBy)\\n        ) {\\n          continue;\\n        }\\n        let x = 0,\\n          y = 0;\\n        let q = 0;\\n        for (let i = 0; i \u003C= 3; i++) {\\n          for (let j = 0; j \u003C= 3; j++, q++) {\\n            const m = bRow[row][i] * bCol[col][j];\\n            x += coords[pi[q]][0] * m;\\n            y += coords[pi[q]][1] * m;\\n          }\\n        }\\n        figureCoords[k] = coords.length;\\n        coords.push([x, y]);\\n        figureColors[k] = colors.length;\\n        const newColor = new Uint8Array(3);\\n        newColor[0] = ((cl[0] * (splitXBy - col) + cr[0] * col) \u002F splitXBy) | 0;\\n        newColor[1] = ((cl[1] * (splitXBy - col) + cr[1] * col) \u002F splitXBy) | 0;\\n        newColor[2] = ((cl[2] * (splitXBy - col) + cr[2] * col) \u002F splitXBy) | 0;\\n        colors.push(newColor);\\n      }\\n    }\\n    figureCoords[0] = pi[0];\\n    figureColors[0] = ci[0];\\n    figureCoords[splitXBy] = pi[3];\\n    figureColors[splitXBy] = ci[1];\\n    figureCoords[verticesPerRow * splitYBy] = pi[12];\\n    figureColors[verticesPerRow * splitYBy] = ci[2];\\n    figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15];\\n    figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3];\\n\\n    this.figures[index] = {\\n      type: \\\"lattice\\\",\\n      coords: figureCoords,\\n      colors: figureColors,\\n      verticesPerRow,\\n    };\\n  }\\n\\n  _updateBounds() {\\n    let minX = this.coords[0][0],\\n      minY = this.coords[0][1],\\n      maxX = minX,\\n      maxY = minY;\\n    for (let i = 1, ii = this.coords.length; i \u003C ii; i++) {\\n      const x = this.coords[i][0],\\n        y = this.coords[i][1];\\n      minX = minX > x ? x : minX;\\n      minY = minY > y ? y : minY;\\n      maxX = maxX \u003C x ? x : maxX;\\n      maxY = maxY \u003C y ? y : maxY;\\n    }\\n    this.bounds = [minX, minY, maxX, maxY];\\n  }\\n\\n  _packData() {\\n    let i, ii, j, jj;\\n\\n    const coords = this.coords;\\n    const coordsPacked = new Float32Array(coords.length * 2);\\n    for (i = 0, j = 0, ii = coords.length; i \u003C ii; i++) {\\n      const xy = coords[i];\\n      coordsPacked[j++] = xy[0];\\n      coordsPacked[j++] = xy[1];\\n    }\\n    this.coords = coordsPacked;\\n\\n    const colors = this.colors;\\n    const colorsPacked = new Uint8Array(colors.length * 3);\\n    for (i = 0, j = 0, ii = colors.length; i \u003C ii; i++) {\\n      const c = colors[i];\\n      colorsPacked[j++] = c[0];\\n      colorsPacked[j++] = c[1];\\n      colorsPacked[j++] = c[2];\\n    }\\n    this.colors = colorsPacked;\\n\\n    const figures = this.figures;\\n    for (i = 0, ii = figures.length; i \u003C ii; i++) {\\n      const figure = figures[i],\\n        ps = figure.coords,\\n        cs = figure.colors;\\n      for (j = 0, jj = ps.length; j \u003C jj; j++) {\\n        ps[j] *= 2;\\n        cs[j] *= 3;\\n      }\\n    }\\n  }\\n\\n  getIR() {\\n    const { bounds } = this;\\n    \u002F\u002F Ensure that the shading has non-zero width and height, to prevent errors\\n    \u002F\u002F in `pattern_helper.js` (fixes issue17848.pdf).\\n    if (bounds[2] - bounds[0] === 0 || bounds[3] - bounds[1] === 0) {\\n      throw new FormatError(`Invalid MeshShading bounds: [${bounds}].`);\\n    }\\n\\n    return [\\n      \\\"Mesh\\\",\\n      this.shadingType,\\n      this.coords,\\n      this.colors,\\n      this.figures,\\n      bounds,\\n      this.bbox,\\n      this.background,\\n    ];\\n  }\\n}\\n\\nclass DummyShading extends BaseShading {\\n  getIR() {\\n    return [\\\"Dummy\\\"];\\n  }\\n}\\n\\nfunction getTilingPatternIR(operatorList, dict, color) {\\n  const matrix = lookupMatrix(dict.getArray(\\\"Matrix\\\"), IDENTITY_MATRIX);\\n  const bbox = lookupNormalRect(dict.getArray(\\\"BBox\\\"), null);\\n  \u002F\u002F Ensure that the pattern has a non-zero width and height, to prevent errors\\n  \u002F\u002F in `pattern_helper.js` (fixes issue8330.pdf).\\n  if (!bbox || bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) {\\n    throw new FormatError(`Invalid getTilingPatternIR \u002FBBox array.`);\\n  }\\n  const xstep = dict.get(\\\"XStep\\\");\\n  if (typeof xstep !== \\\"number\\\") {\\n    throw new FormatError(`Invalid getTilingPatternIR \u002FXStep value.`);\\n  }\\n  const ystep = dict.get(\\\"YStep\\\");\\n  if (typeof ystep !== \\\"number\\\") {\\n    throw new FormatError(`Invalid getTilingPatternIR \u002FYStep value.`);\\n  }\\n  const paintType = dict.get(\\\"PaintType\\\");\\n  if (!Number.isInteger(paintType)) {\\n    throw new FormatError(`Invalid getTilingPatternIR \u002FPaintType value.`);\\n  }\\n  const tilingType = dict.get(\\\"TilingType\\\");\\n  if (!Number.isInteger(tilingType)) {\\n    throw new FormatError(`Invalid getTilingPatternIR \u002FTilingType value.`);\\n  }\\n\\n  return [\\n    \\\"TilingPattern\\\",\\n    color,\\n    operatorList,\\n    matrix,\\n    bbox,\\n    xstep,\\n    ystep,\\n    paintType,\\n    tilingType,\\n  ];\\n}\\n\\nexport { clearPatternCaches, getTilingPatternIR, Pattern };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F Factors to rescale LiberationSans-Bold.ttf to have the same\\n\u002F\u002F metrics as calibrib.ttf.\\nconst CalibriBoldFactors = [\\n  1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566,\\n  0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.54657,\\n  0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\\n  0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859,\\n  0.92138, 0.83908, 0.7762, 0.73293, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356,\\n  0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.9121, 0.86943, 0.79795,\\n  0.88198, 0.77958, 0.70864, 0.81055, 0.90399, 0.88653, 0.96017, 0.82577,\\n  0.77892, 0.78257, 0.97507, 1.54657, 0.97507, 0.85284, 0.89552, 0.90176,\\n  0.88762, 0.8785, 0.75241, 0.8785, 0.90518, 0.95015, 0.77618, 0.8785, 0.88401,\\n  0.91916, 0.86304, 0.88401, 0.91488, 0.8785, 0.8801, 0.8785, 0.8785, 0.91343,\\n  0.7173, 1.04106, 0.8785, 0.85075, 0.95794, 0.82616, 0.85162, 0.79492, 0.88331,\\n  1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133,\\n  1.7801, 0.89552, 1.24487, 1.13254, 1.12401, 0.96839, 0.85284, 0.68787,\\n  0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056,\\n  0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133, 0.75859, 0.83908,\\n  0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.73293, 0.73133,\\n  0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506,\\n  0.9121, 0.86943, 0.86943, 0.86943, 0.86943, 0.86943, 0.85284, 0.87508,\\n  0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.88762,\\n  0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.8715, 0.75241, 0.90518,\\n  0.90518, 0.90518, 0.90518, 0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.8785,\\n  0.8801, 0.8801, 0.8801, 0.8801, 0.8801, 0.90747, 0.89049, 0.8785, 0.8785,\\n  0.8785, 0.8785, 0.85162, 0.8785, 0.85162, 0.83908, 0.88762, 0.83908, 0.88762,\\n  0.83908, 0.88762, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241,\\n  0.73293, 0.75241, 0.87289, 0.83016, 0.88506, 0.93125, 0.73133, 0.90518,\\n  0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518,\\n  0.81921, 0.77618, 0.81921, 0.77618, 0.81921, 0.77618, 1, 1, 0.87356, 0.8785,\\n  0.91075, 0.89608, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401,\\n  0.95958, 0.88401, 0.95958, 0.88401, 0.76229, 0.90167, 0.59526, 0.91916, 1, 1,\\n  0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.79468, 0.91926, 0.88175, 0.70823,\\n  0.94903, 0.9121, 0.8785, 1, 1, 0.9121, 0.8785, 0.87802, 0.88656, 0.8785,\\n  0.86943, 0.8801, 0.86943, 0.8801, 0.86943, 0.8801, 0.87402, 0.89291, 0.77958,\\n  0.91343, 1, 1, 0.77958, 0.91343, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864,\\n  0.7173, 0.70864, 0.7173, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399,\\n  0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785,\\n  0.90399, 0.8785, 0.96017, 0.95794, 0.77892, 0.85162, 0.77892, 0.78257,\\n  0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908,\\n  0.88762, 0.77539, 0.8715, 0.87508, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528,\\n  1.20528, 1, 1.15543, 0.70674, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161,\\n  1.06303, 0.83908, 0.80352, 0.57184, 0.6965, 0.56289, 0.82001, 0.56029,\\n  0.81235, 1.02988, 0.83908, 0.7762, 0.68156, 0.80367, 0.73133, 0.78257,\\n  0.87356, 0.86943, 0.95958, 0.75727, 0.89019, 1.04924, 0.9121, 0.7648, 0.86943,\\n  0.87356, 0.79795, 0.78275, 0.81055, 0.77892, 0.9762, 0.82577, 0.99819,\\n  0.84896, 0.95958, 0.77892, 0.96108, 1.01407, 0.89049, 1.02988, 0.94211,\\n  0.96108, 0.8936, 0.84021, 0.87842, 0.96399, 0.79109, 0.89049, 1.00813,\\n  1.02988, 0.86077, 0.87445, 0.92099, 0.84723, 0.86513, 0.8801, 0.75638,\\n  0.85714, 0.78216, 0.79586, 0.87965, 0.94211, 0.97747, 0.78287, 0.97926,\\n  0.84971, 1.02988, 0.94211, 0.8801, 0.94211, 0.84971, 0.73133, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 0.90264, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  0.90518, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90548, 1, 1, 1, 1, 1, 1,\\n  0.96017, 0.95794, 0.96017, 0.95794, 0.96017, 0.95794, 0.77892, 0.85162, 1, 1,\\n  0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.92794, 0.87012,\\n  0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71143, 1.06152, 1, 1, 1.03372,\\n  1.03372, 0.97171, 1.4956, 2.2807, 0.93835, 0.83406, 0.91133, 0.84107, 0.91133,\\n  1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90527,\\n  1.81055, 0.90527, 1.81055, 1.31006, 1.53711, 0.94434, 1.08696, 1, 0.95018,\\n  0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747,\\n  0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572,\\n  0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1,\\n  0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n];\\nconst CalibriBoldMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\\n\\n\u002F\u002F Factors to rescale LiberationSans-BoldItalic.ttf to have the same\\n\u002F\u002F metrics as calibriz.ttf.\\nconst CalibriBoldItalicFactors = [\\n  1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566,\\n  0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.56239,\\n  0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\\n  0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859,\\n  0.92138, 0.83908, 0.7762, 0.71805, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356,\\n  0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.90872, 0.85938, 0.79795,\\n  0.87068, 0.77958, 0.69766, 0.81055, 0.90399, 0.88653, 0.96068, 0.82577,\\n  0.77892, 0.78257, 0.97507, 1.529, 0.97507, 0.85284, 0.89552, 0.90176, 0.94908,\\n  0.86411, 0.74012, 0.86411, 0.88323, 0.95015, 0.86411, 0.86331, 0.88401,\\n  0.91916, 0.86304, 0.88401, 0.9039, 0.86331, 0.86331, 0.86411, 0.86411,\\n  0.90464, 0.70852, 1.04106, 0.86331, 0.84372, 0.95794, 0.82616, 0.84548,\\n  0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133,\\n  0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.19129, 0.96839,\\n  0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1,\\n  1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133,\\n  0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539,\\n  0.71805, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958,\\n  0.95958, 0.88506, 0.90872, 0.85938, 0.85938, 0.85938, 0.85938, 0.85938,\\n  0.85284, 0.87068, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795,\\n  0.90807, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.85887,\\n  0.74012, 0.88323, 0.88323, 0.88323, 0.88323, 0.88401, 0.88401, 0.88401,\\n  0.88401, 0.8785, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331,\\n  0.90747, 0.89049, 0.86331, 0.86331, 0.86331, 0.86331, 0.84548, 0.86411,\\n  0.84548, 0.83908, 0.94908, 0.83908, 0.94908, 0.83908, 0.94908, 0.71805,\\n  0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.87289,\\n  0.79538, 0.88506, 0.92726, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133,\\n  0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.81921, 0.86411, 0.81921,\\n  0.86411, 0.81921, 0.86411, 1, 1, 0.87356, 0.86331, 0.91075, 0.8777, 0.95958,\\n  0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958,\\n  0.88401, 0.76467, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401,\\n  1, 1, 0.70424, 0.77312, 0.91926, 0.88175, 0.70823, 0.94903, 0.90872, 0.86331,\\n  1, 1, 0.90872, 0.86331, 0.86906, 0.88116, 0.86331, 0.85938, 0.86331, 0.85938,\\n  0.86331, 0.85938, 0.86331, 0.87402, 0.86549, 0.77958, 0.90464, 1, 1, 0.77958,\\n  0.90464, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766,\\n  0.70852, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.86331, 0.90399,\\n  0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399,\\n  0.86331, 0.96068, 0.95794, 0.77892, 0.84548, 0.77892, 0.78257, 0.79492,\\n  0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.94908,\\n  0.77539, 0.85887, 0.87068, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528,\\n  1, 1.15543, 0.70088, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.48387,\\n  0.83908, 0.80352, 0.57118, 0.6965, 0.56347, 0.79179, 0.55853, 0.80346,\\n  1.02988, 0.83908, 0.7762, 0.67174, 0.86036, 0.73133, 0.78257, 0.87356,\\n  0.86441, 0.95958, 0.75727, 0.89019, 1.04924, 0.90872, 0.74889, 0.85938,\\n  0.87891, 0.79795, 0.7957, 0.81055, 0.77892, 0.97447, 0.82577, 0.97466,\\n  0.87179, 0.95958, 0.77892, 0.94252, 0.95612, 0.8753, 1.02988, 0.92733,\\n  0.94252, 0.87411, 0.84021, 0.8728, 0.95612, 0.74081, 0.8753, 1.02189, 1.02988,\\n  0.84814, 0.87445, 0.91822, 0.84723, 0.85668, 0.86331, 0.81344, 0.87581,\\n  0.76422, 0.82046, 0.96057, 0.92733, 0.99375, 0.78022, 0.95452, 0.86015,\\n  1.02988, 0.92733, 0.86331, 0.92733, 0.86015, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 0.90631, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.88323, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85174, 1, 1, 1, 1, 1, 1, 0.96068, 0.95794,\\n  0.96068, 0.95794, 0.96068, 0.95794, 0.77892, 0.84548, 1, 1, 0.89552, 0.90527,\\n  1, 0.90363, 0.92794, 0.92794, 0.92794, 0.89807, 0.87012, 0.87012, 0.87012,\\n  0.89552, 0.89552, 1.42259, 0.71094, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171,\\n  1.4956, 2.2807, 0.92972, 0.83406, 0.91133, 0.83326, 0.91133, 1, 1, 1, 0.72021,\\n  1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90616, 1.81055, 0.90527,\\n  1.81055, 1.3107, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284,\\n  0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356,\\n  0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572,\\n  0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1,\\n];\\nconst CalibriBoldItalicMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\\n\\n\u002F\u002F Factors to rescale LiberationSans-Italic.ttf to have the same\\n\u002F\u002F metrics as calibrii.ttf.\\nconst CalibriItalicFactors = [\\n  1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601,\\n  0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39543, 0.91133,\\n  0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\\n  0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071,\\n  0.8675, 0.81552, 0.72346, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685,\\n  0.6377, 0.77892, 0.75593, 1.02638, 0.89249, 0.84118, 0.77452, 0.85374,\\n  0.75186, 0.67789, 0.79776, 0.88844, 0.85066, 0.94309, 0.77818, 0.7306,\\n  0.76659, 1.10369, 1.38313, 1.10369, 1.06139, 0.89552, 0.8739, 0.9245, 0.9245,\\n  0.83203, 0.9245, 0.85865, 1.09842, 0.9245, 0.9245, 1.03297, 1.07692, 0.90918,\\n  1.03297, 0.94959, 0.9245, 0.92274, 0.9245, 0.9245, 1.02933, 0.77832, 1.20562,\\n  0.9245, 0.8916, 0.98986, 0.86621, 0.89453, 0.79004, 0.94152, 1.77256, 0.94152,\\n  0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552,\\n  1.17889, 1.13254, 1.16359, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737,\\n  0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642,\\n  0.92098, 0.76288, 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675,\\n  0.8675, 0.8675, 0.76318, 0.72346, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685,\\n  0.90685, 0.90685, 0.90685, 0.86477, 0.89249, 0.84118, 0.84118, 0.84118,\\n  0.84118, 0.84118, 0.85284, 0.84557, 0.88844, 0.88844, 0.88844, 0.88844,\\n  0.7306, 0.77452, 0.86331, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245,\\n  0.84843, 0.83203, 0.85865, 0.85865, 0.85865, 0.85865, 0.82601, 0.82601,\\n  0.82601, 0.82601, 0.94469, 0.9245, 0.92274, 0.92274, 0.92274, 0.92274,\\n  0.92274, 0.90747, 0.86651, 0.9245, 0.9245, 0.9245, 0.9245, 0.89453, 0.9245,\\n  0.89453, 0.8675, 0.9245, 0.8675, 0.9245, 0.8675, 0.9245, 0.72346, 0.83203,\\n  0.72346, 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.85193, 0.8875,\\n  0.86477, 0.99034, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865,\\n  0.73206, 0.85865, 0.73206, 0.85865, 0.81105, 0.9245, 0.81105, 0.9245, 0.81105,\\n  0.9245, 1, 1, 0.86275, 0.9245, 0.90872, 0.93591, 0.90685, 0.82601, 0.90685,\\n  0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77896,\\n  1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032,\\n  0.9375, 0.98156, 0.93407, 0.77261, 1.11429, 0.89249, 0.9245, 1, 1, 0.89249,\\n  0.9245, 0.92534, 0.86698, 0.9245, 0.84118, 0.92274, 0.84118, 0.92274, 0.84118,\\n  0.92274, 0.8667, 0.86291, 0.75186, 1.02933, 1, 1, 0.75186, 1.02933, 0.67789,\\n  0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 1, 1, 0.79776,\\n  0.97655, 0.79776, 1.23023, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245,\\n  0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.94309, 0.98986, 0.7306,\\n  0.89453, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004,\\n  1.09231, 0.54873, 0.8675, 0.9245, 0.76318, 0.84843, 0.84557, 0.86651, 1, 1,\\n  0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, 0.67009, 0.96334, 0.93695,\\n  1.35191, 1.40909, 0.95161, 1.48387, 0.8675, 0.90861, 0.6192, 0.7363, 0.64824,\\n  0.82411, 0.56321, 0.85696, 1.23516, 0.8675, 0.81552, 0.7286, 0.84134, 0.73206,\\n  0.76659, 0.86275, 0.84369, 0.90685, 0.77892, 0.85871, 1.02638, 0.89249,\\n  0.75828, 0.84118, 0.85984, 0.77452, 0.76466, 0.79776, 0.7306, 0.90782,\\n  0.77818, 0.903, 0.87291, 0.90685, 0.7306, 0.99058, 1.03667, 0.94635, 1.23516,\\n  0.9849, 0.99058, 0.92393, 0.8916, 0.942, 1.03667, 0.75026, 0.94635, 1.0297,\\n  1.23516, 0.90918, 0.94048, 0.98217, 0.89746, 0.84153, 0.92274, 0.82507,\\n  0.88832, 0.84438, 0.88178, 1.03525, 0.9849, 1.00225, 0.78086, 0.97248,\\n  0.89404, 1.23516, 0.9849, 0.92274, 0.9849, 0.89404, 0.73206, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 0.89693, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85865,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90933, 1, 1, 1, 1, 1, 1, 0.94309,\\n  0.98986, 0.94309, 0.98986, 0.94309, 0.98986, 0.7306, 0.89453, 1, 1, 0.89552,\\n  0.90527, 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566,\\n  1.2566, 0.89552, 0.89552, 1.42259, 0.68994, 1.03809, 1, 1, 1.0176, 1.0176,\\n  1.11523, 1.4956, 2.01462, 0.97858, 0.82616, 0.91133, 0.83437, 0.91133, 1, 1,\\n  1, 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90572, 1.81055,\\n  0.90749, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589,\\n  0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747,\\n  0.85284, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8,\\n  0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1,\\n  0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n];\\nconst CalibriItalicMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\\n\\n\u002F\u002F Factors to rescale LiberationSans-Regular.ttf to have the same\\n\u002F\u002F metrics as calibri.ttf.\\nconst CalibriRegularFactors = [\\n  1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601,\\n  0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39016, 0.91133,\\n  0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133,\\n  0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071,\\n  0.8675, 0.81552, 0.73834, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685,\\n  0.6377, 0.77892, 0.75593, 1.02638, 0.89385, 0.85122, 0.77452, 0.86503,\\n  0.75186, 0.68887, 0.79776, 0.88844, 0.85066, 0.94258, 0.77818, 0.7306,\\n  0.76659, 1.10369, 1.39016, 1.10369, 1.06139, 0.89552, 0.8739, 0.86128,\\n  0.94469, 0.8457, 0.94469, 0.89464, 1.09842, 0.84636, 0.94469, 1.03297,\\n  1.07692, 0.90918, 1.03297, 0.95897, 0.94469, 0.9482, 0.94469, 0.94469,\\n  1.04692, 0.78223, 1.20562, 0.94469, 0.90332, 0.98986, 0.86621, 0.90527,\\n  0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133,\\n  0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.08707, 0.92098,\\n  0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1,\\n  1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 0.80972,\\n  0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.73834,\\n  0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685,\\n  0.86477, 0.89385, 0.85122, 0.85122, 0.85122, 0.85122, 0.85122, 0.85284,\\n  0.85311, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331,\\n  0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.8693, 0.8457, 0.89464,\\n  0.89464, 0.89464, 0.89464, 0.82601, 0.82601, 0.82601, 0.82601, 0.94469,\\n  0.94469, 0.9482, 0.9482, 0.9482, 0.9482, 0.9482, 0.90747, 0.86651, 0.94469,\\n  0.94469, 0.94469, 0.94469, 0.90527, 0.94469, 0.90527, 0.8675, 0.86128, 0.8675,\\n  0.86128, 0.8675, 0.86128, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457,\\n  0.73834, 0.8457, 0.85193, 0.92454, 0.86477, 0.9921, 0.73206, 0.89464, 0.73206,\\n  0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.81105,\\n  0.84636, 0.81105, 0.84636, 0.81105, 0.84636, 1, 1, 0.86275, 0.94469, 0.90872,\\n  0.95786, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685,\\n  1.03297, 0.90685, 0.82601, 0.77741, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918,\\n  0.75593, 1.03297, 1, 1, 0.76032, 0.90452, 0.98156, 1.11842, 0.77261, 1.11429,\\n  0.89385, 0.94469, 1, 1, 0.89385, 0.94469, 0.95877, 0.86901, 0.94469, 0.85122,\\n  0.9482, 0.85122, 0.9482, 0.85122, 0.9482, 0.8667, 0.90016, 0.75186, 1.04692,\\n  1, 1, 0.75186, 1.04692, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223,\\n  0.68887, 0.78223, 1, 1, 0.79776, 0.92188, 0.79776, 1.23023, 0.88844, 0.94469,\\n  0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469,\\n  0.88844, 0.94469, 0.94258, 0.98986, 0.7306, 0.90527, 0.7306, 0.76659, 0.79004,\\n  0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.86128,\\n  0.76318, 0.8693, 0.85311, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622,\\n  1, 1.1437, 0.67742, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387,\\n  0.86686, 0.90861, 0.62267, 0.74359, 0.65649, 0.85498, 0.56963, 0.88254,\\n  1.23516, 0.8675, 0.81552, 0.75443, 0.84503, 0.73206, 0.76659, 0.86275,\\n  0.85122, 0.90685, 0.77892, 0.85746, 1.02638, 0.89385, 0.75657, 0.85122,\\n  0.86275, 0.77452, 0.74171, 0.79776, 0.7306, 0.95165, 0.77818, 0.89772,\\n  0.88831, 0.90685, 0.7306, 0.98142, 1.02191, 0.96576, 1.23516, 0.99018,\\n  0.98142, 0.9236, 0.89258, 0.94035, 1.02191, 0.78848, 0.96576, 0.9561, 1.23516,\\n  0.90918, 0.92578, 0.95424, 0.89746, 0.83969, 0.9482, 0.80113, 0.89442,\\n  0.85208, 0.86155, 0.98022, 0.99018, 1.00452, 0.81209, 0.99247, 0.89181,\\n  1.23516, 0.99018, 0.9482, 0.99018, 0.89181, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 0.88844, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89464, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96766, 1, 1, 1, 1, 1, 1, 0.94258, 0.98986,\\n  0.94258, 0.98986, 0.94258, 0.98986, 0.7306, 0.90527, 1, 1, 0.89552, 0.90527,\\n  1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566,\\n  0.89552, 0.89552, 1.42259, 0.69043, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523,\\n  1.4956, 2.01462, 0.99331, 0.82616, 0.91133, 0.84286, 0.91133, 1, 1, 1,\\n  0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90527, 1.81055,\\n  0.90527, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589,\\n  0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747,\\n  0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8,\\n  0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1,\\n  0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1,\\n  1.07185, 0.99413, 0.96334, 1.08065, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n];\\nconst CalibriRegularMetrics = { lineHeight: 1.2207, lineGap: 0.2207 };\\n\\nexport {\\n  CalibriBoldFactors,\\n  CalibriBoldItalicFactors,\\n  CalibriBoldItalicMetrics,\\n  CalibriBoldMetrics,\\n  CalibriItalicFactors,\\n  CalibriItalicMetrics,\\n  CalibriRegularFactors,\\n  CalibriRegularMetrics,\\n};\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F Factors to rescale LiberationSans-Bold.ttf to have the same\\n\u002F\u002F metrics as NimbusSans-Bold.otf.\\nconst HelveticaBoldFactors = [\\n  0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977,\\n  1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\\n  0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\\n  0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999,\\n  0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\\n  1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001,\\n  1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001,\\n  1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998,\\n  0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026,\\n  1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026,\\n  0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1,\\n  0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973,\\n  0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003,\\n  1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006,\\n  0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977,\\n  0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001,\\n  1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022,\\n  1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977,\\n  0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973,\\n  0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973,\\n  0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026,\\n  1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026,\\n  1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\\n  0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\\n  0.99977, 0.99973, 0.99977, 1.03374, 0.99977, 1.00026, 1.00001, 0.99973,\\n  1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\\n  1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\\n  0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006,\\n  1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.00042, 0.99973, 0.99973, 1.0006,\\n  0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.03828,\\n  1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026,\\n  0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\\n  1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977,\\n  0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\\n  0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977,\\n  1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977,\\n  1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001,\\n  1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1,\\n  0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998,\\n  0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\\n  0.99998, 1.00034, 0.99977, 1, 0.99997, 1.00026, 1.00078, 1.00036, 0.99973,\\n  1.00013, 1.0006, 0.99977, 0.99977, 0.99988, 0.85148, 1.00001, 1.00026,\\n  0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 1.00069,\\n  1.00022, 0.99977, 1.00001, 0.99984, 1.00026, 1.00001, 1.00024, 1.00001,\\n  0.9999, 1, 1.0006, 1.00001, 1.00041, 0.99962, 1.00026, 1.0006, 0.99995,\\n  1.00041, 0.99942, 0.99973, 0.99927, 1.00082, 0.99902, 1.00026, 1.00087,\\n  1.0006, 1.00069, 0.99973, 0.99867, 0.99973, 0.9993, 1.00026, 1.00049, 1.00056,\\n  1, 0.99988, 0.99935, 0.99995, 0.99954, 1.00055, 0.99945, 1.00032, 1.0006,\\n  0.99995, 1.00026, 0.99995, 1.00032, 1.00001, 1.00008, 0.99971, 1.00019,\\n  0.9994, 1.00001, 1.0006, 1.00044, 0.99973, 1.00023, 1.00047, 1, 0.99942,\\n  0.99561, 0.99989, 1.00035, 0.99977, 1.00035, 0.99977, 1.00019, 0.99944,\\n  1.00001, 1.00021, 0.99926, 1.00035, 1.00035, 0.99942, 1.00048, 0.99999,\\n  0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.99989, 1.00057,\\n  1.00001, 0.99936, 1.00052, 1.00012, 0.99996, 1.00043, 1, 1.00035, 0.9994,\\n  0.99976, 1.00035, 0.99973, 1.00052, 1.00041, 1.00119, 1.00037, 0.99973,\\n  1.00002, 0.99986, 1.00041, 1.00041, 0.99902, 0.9996, 1.00034, 0.99999,\\n  1.00026, 0.99999, 1.00026, 0.99973, 1.00052, 0.99973, 1, 0.99973, 1.00041,\\n  1.00075, 0.9994, 1.0003, 0.99999, 1, 1.00041, 0.99955, 1, 0.99915, 0.99973,\\n  0.99973, 1.00026, 1.00119, 0.99955, 0.99973, 1.0006, 0.99911, 1.0006, 1.00026,\\n  0.99972, 1.00026, 0.99902, 1.00041, 0.99973, 0.99999, 1, 1, 1.00038, 1.0005,\\n  1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1,\\n  0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973,\\n  0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998,\\n  1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 1.00047, 1.00023, 1,\\n  0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1,\\n  0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027,\\n  1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999,\\n  0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625,\\n  0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972,\\n  0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1,\\n  0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998,\\n  0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n];\\nconst HelveticaBoldMetrics = { lineHeight: 1.2, lineGap: 0.2 };\\n\\n\u002F\u002F Factors to rescale LiberationSans-BoldItalic.ttf to have the same\\n\u002F\u002F metrics as NimbusSans-BoldItalic.otf.\\nconst HelveticaBoldItalicFactors = [\\n  0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977,\\n  1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\\n  0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\\n  0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999,\\n  0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\\n  1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001,\\n  1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001,\\n  1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998,\\n  0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026,\\n  1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026,\\n  0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1,\\n  0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973,\\n  0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003,\\n  1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006,\\n  0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977,\\n  0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001,\\n  1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022,\\n  1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977,\\n  0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973,\\n  0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973,\\n  0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026,\\n  1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026,\\n  1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\\n  0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\\n  0.99977, 0.99973, 0.99977, 1.0044, 0.99977, 1.00026, 1.00001, 0.99973,\\n  1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\\n  1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\\n  0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006,\\n  1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99971, 0.99973, 0.99973, 1.0006,\\n  0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.01011,\\n  1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026,\\n  0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026,\\n  1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977,\\n  0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\\n  0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977,\\n  1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977,\\n  1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001,\\n  1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1,\\n  0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998,\\n  0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\\n  0.99998, 0.99998, 0.99977, 1, 1, 1.00026, 0.99969, 0.99972, 0.99981, 0.9998,\\n  1.0006, 0.99977, 0.99977, 1.00022, 0.91155, 1.00001, 1.00026, 0.99977,\\n  1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 0.99966, 1.00022,\\n  1.00032, 1.00001, 0.99944, 1.00026, 1.00001, 0.99968, 1.00001, 1.00047, 1,\\n  1.0006, 1.00001, 0.99981, 1.00101, 1.00026, 1.0006, 0.99948, 0.99981, 1.00064,\\n  0.99973, 0.99942, 1.00101, 1.00061, 1.00026, 1.00069, 1.0006, 1.00014,\\n  0.99973, 1.01322, 0.99973, 1.00065, 1.00026, 1.00012, 0.99923, 1, 1.00064,\\n  1.00076, 0.99948, 1.00055, 1.00063, 1.00007, 0.99943, 1.0006, 0.99948,\\n  1.00026, 0.99948, 0.99943, 1.00001, 1.00001, 1.00029, 1.00038, 1.00035,\\n  1.00001, 1.0006, 1.0006, 0.99973, 0.99978, 1.00001, 1.00057, 0.99989, 0.99967,\\n  0.99964, 0.99967, 0.99977, 0.99999, 0.99977, 1.00038, 0.99977, 1.00001,\\n  0.99973, 1.00066, 0.99967, 0.99967, 1.00041, 0.99998, 0.99999, 0.99977,\\n  1.00022, 0.99967, 1.00001, 0.99977, 1.00026, 0.99964, 1.00031, 1.00001,\\n  0.99999, 0.99999, 1, 1.00023, 1, 1, 0.99999, 1.00035, 1.00001, 0.99999,\\n  0.99973, 0.99977, 0.99999, 1.00058, 0.99973, 0.99973, 0.99955, 0.9995,\\n  1.00026, 1.00026, 1.00032, 0.99989, 1.00034, 0.99999, 1.00026, 1.00026,\\n  1.00026, 0.99973, 0.45998, 0.99973, 1.00026, 0.99973, 1.00001, 0.99999,\\n  0.99982, 0.99994, 0.99996, 1, 1.00042, 1.00044, 1.00029, 1.00023, 0.99973,\\n  0.99973, 1.00026, 0.99949, 1.00002, 0.99973, 1.0006, 1.0006, 1.0006, 0.99975,\\n  1.00026, 1.00026, 1.00032, 0.98685, 0.99973, 1.00026, 1, 1, 0.99966, 1.00044,\\n  1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1,\\n  0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973,\\n  0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998,\\n  1.66475, 1, 0.99973, 0.99973, 1, 0.99973, 0.99971, 0.99978, 1, 1, 0.99991,\\n  0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00098, 1, 1, 1, 1.00049, 1, 1,\\n  0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027,\\n  1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999,\\n  0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625,\\n  0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972,\\n  0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1,\\n  0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998,\\n  0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n];\\nconst HelveticaBoldItalicMetrics = { lineHeight: 1.35, lineGap: 0.2 };\\n\\n\u002F\u002F Factors to rescale LiberationSans-Italic.ttf to have the same\\n\u002F\u002F metrics as NimbusSans-Italic.otf.\\nconst HelveticaItalicFactors = [\\n  0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001,\\n  1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\\n  0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\\n  0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987,\\n  1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\\n  1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022,\\n  0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001,\\n  1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973,\\n  1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924,\\n  0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1,\\n  0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973,\\n  0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968,\\n  0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1,\\n  0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002,\\n  1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977,\\n  1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977,\\n  0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022,\\n  0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973,\\n  0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973,\\n  0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973,\\n  0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973,\\n  0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\\n  0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.0288,\\n  0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\\n  1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973,\\n  1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\\n  1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006,\\n  1.0006, 0.99946, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924,\\n  0.99973, 0.99924, 0.99973, 1.06311, 0.99973, 1.00024, 0.99973, 0.99924,\\n  0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00041, 0.9998,\\n  0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016,\\n  0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1,\\n  1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.89547, 1.00026, 1.0006,\\n  0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\\n  0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001,\\n  1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1,\\n  0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998,\\n  0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\\n  0.99998, 1.00001, 1, 1.00054, 0.99977, 1.00084, 1.00007, 0.99973, 1.00013,\\n  0.99924, 1.00001, 1.00001, 0.99945, 0.91221, 1.00001, 1.00026, 0.99977,\\n  1.00022, 1.0006, 1.00001, 1.00001, 0.99999, 0.99977, 0.99933, 1.00022,\\n  1.00054, 1.00001, 1.00065, 1.00026, 1.00001, 1.0001, 1.00001, 1.00052, 1,\\n  1.0006, 1.00001, 0.99945, 0.99897, 0.99968, 0.99924, 1.00036, 0.99945,\\n  0.99949, 1, 1.0006, 0.99897, 0.99918, 0.99968, 0.99911, 0.99924, 1, 0.99962,\\n  1.01487, 1, 1.0005, 0.99973, 1.00012, 1.00043, 1, 0.99995, 0.99994, 1.00036,\\n  0.99947, 1.00019, 1.00063, 1.00025, 0.99924, 1.00036, 0.99973, 1.00036,\\n  1.00025, 1.00001, 1.00001, 1.00027, 1.0001, 1.00068, 1.00001, 1.0006, 1.0006,\\n  1, 1.00008, 0.99957, 0.99972, 0.9994, 0.99954, 0.99975, 1.00051, 1.00001,\\n  1.00019, 1.00001, 1.0001, 0.99986, 1.00001, 1.00001, 1.00038, 0.99954,\\n  0.99954, 0.9994, 1.00066, 0.99999, 0.99977, 1.00022, 1.00054, 1.00001,\\n  0.99977, 1.00026, 0.99975, 1.0001, 1.00001, 0.99993, 0.9995, 0.99955, 1.00016,\\n  0.99978, 0.99974, 1.00019, 1.00022, 0.99955, 1.00053, 0.99973, 1.00089,\\n  1.00005, 0.99967, 1.00048, 0.99973, 1.00002, 1.00034, 0.99973, 0.99973,\\n  0.99964, 1.00006, 1.00066, 0.99947, 0.99973, 0.98894, 0.99973, 1, 0.44898, 1,\\n  0.99946, 1, 1.00039, 1.00082, 0.99991, 0.99991, 0.99985, 1.00022, 1.00023,\\n  1.00061, 1.00006, 0.99966, 0.99973, 0.99973, 0.99973, 1.00019, 1.0008, 1,\\n  0.99924, 0.99924, 0.99924, 0.99983, 1.00044, 0.99973, 0.99964, 0.98332, 1,\\n  0.99973, 1, 1, 0.99962, 0.99895, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016,\\n  0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924,\\n  0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267,\\n  0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023,\\n  0.99973, 1.00423, 0.99925, 0.99999, 1, 0.99991, 0.99984, 1.00002, 1.00002,\\n  1.00002, 1.00002, 1.00049, 1, 1.00245, 1, 1, 1, 1, 0.96329, 1, 1.20985,\\n  1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031,\\n  1.00003, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861,\\n  0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999,\\n  0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962,\\n  1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n];\\nconst HelveticaItalicMetrics = { lineHeight: 1.35, lineGap: 0.2 };\\n\\n\u002F\u002F Factors to rescale LiberationSans-Regular.ttf to have the same\\n\u002F\u002F metrics as NimbusSans-Regular.otf.\\nconst HelveticaRegularFactors = [\\n  0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001,\\n  1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006,\\n  0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973,\\n  0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987,\\n  1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977,\\n  1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022,\\n  0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001,\\n  1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973,\\n  1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924,\\n  0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1,\\n  0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973,\\n  0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968,\\n  0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1,\\n  0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002,\\n  1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977,\\n  1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977,\\n  0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022,\\n  0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973,\\n  0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973,\\n  0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973,\\n  0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973,\\n  0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001,\\n  0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.04596,\\n  0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973,\\n  1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973,\\n  1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\\n  1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006,\\n  1.0006, 1.00019, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924,\\n  0.99973, 0.99924, 0.99973, 1.02572, 0.99973, 1.00005, 0.99973, 0.99924,\\n  0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99999, 0.9998,\\n  0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016,\\n  0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1,\\n  1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.84533, 1.00026, 1.0006,\\n  0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973,\\n  0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001,\\n  1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1,\\n  0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998,\\n  0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998,\\n  0.99998, 0.99928, 1, 0.99977, 1.00013, 1.00055, 0.99947, 0.99945, 0.99941,\\n  0.99924, 1.00001, 1.00001, 1.0004, 0.91621, 1.00001, 1.00026, 0.99977,\\n  1.00022, 1.0006, 1.00001, 1.00005, 0.99999, 0.99977, 1.00015, 1.00022,\\n  0.99977, 1.00001, 0.99973, 1.00026, 1.00001, 1.00019, 1.00001, 0.99946, 1,\\n  1.0006, 1.00001, 0.99978, 1.00045, 0.99973, 0.99924, 1.00023, 0.99978,\\n  0.99966, 1, 1.00065, 1.00045, 1.00019, 0.99973, 0.99973, 0.99924, 1, 1,\\n  0.96499, 1, 1.00055, 0.99973, 1.00008, 1.00027, 1, 0.9997, 0.99995, 1.00023,\\n  0.99933, 1.00019, 1.00015, 1.00031, 0.99924, 1.00023, 0.99973, 1.00023,\\n  1.00031, 1.00001, 0.99928, 1.00029, 1.00092, 1.00035, 1.00001, 1.0006, 1.0006,\\n  1, 0.99988, 0.99975, 1, 1.00082, 0.99561, 0.9996, 1.00035, 1.00001, 0.99962,\\n  1.00001, 1.00092, 0.99964, 1.00001, 0.99963, 0.99999, 1.00035, 1.00035,\\n  1.00082, 0.99962, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977,\\n  1.00026, 0.9996, 0.99967, 1.00001, 1.00034, 1.00074, 1.00054, 1.00053,\\n  1.00063, 0.99971, 0.99962, 1.00035, 0.99975, 0.99977, 0.99973, 1.00043,\\n  0.99953, 1.0007, 0.99915, 0.99973, 1.00008, 0.99892, 1.00073, 1.00073,\\n  1.00114, 0.99915, 1.00073, 0.99955, 0.99973, 1.00092, 0.99973, 1, 0.99998, 1,\\n  1.0003, 1, 1.00043, 1.00001, 0.99969, 1.0003, 1, 1.00035, 1.00001, 0.9995, 1,\\n  1.00092, 0.99973, 0.99973, 0.99973, 1.0007, 0.9995, 1, 0.99924, 1.0006,\\n  0.99924, 0.99972, 1.00062, 0.99973, 1.00114, 1.00073, 1, 0.99955, 1, 1,\\n  1.00047, 0.99968, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977,\\n  1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924,\\n  0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999,\\n  0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973,\\n  0.99971, 0.99925, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002,\\n  1.00002, 1, 1, 1, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254,\\n  1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031,\\n  0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144,\\n  1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026,\\n  1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1,\\n  0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n];\\nconst HelveticaRegularMetrics = { lineHeight: 1.2, lineGap: 0.2 };\\n\\nexport {\\n  HelveticaBoldFactors,\\n  HelveticaBoldItalicFactors,\\n  HelveticaBoldItalicMetrics,\\n  HelveticaBoldMetrics,\\n  HelveticaItalicFactors,\\n  HelveticaItalicMetrics,\\n  HelveticaRegularFactors,\\n  HelveticaRegularMetrics,\\n};\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F Widths of glyphs in LiberationSans-Bold.ttf.\\nconst LiberationSansBoldWidths = [\\n  365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278,\\n  333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333,\\n  584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556,\\n  722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\\n  611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611,\\n  278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778,\\n  556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333,\\n  737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333,\\n  333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722,\\n  667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\\n  584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\\n  889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611,\\n  611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556,\\n  722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 719, 722, 611, 667,\\n  556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611,\\n  778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278,\\n  278, 785, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 385, 611,\\n  479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778,\\n  611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556,\\n  667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722,\\n  611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611,\\n  500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333,\\n  333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 465, 722, 333, 853, 906,\\n  474, 825, 927, 838, 278, 722, 722, 601, 719, 667, 611, 722, 778, 278, 722,\\n  667, 833, 722, 644, 778, 722, 667, 600, 611, 667, 821, 667, 809, 802, 278,\\n  667, 615, 451, 611, 278, 582, 615, 610, 556, 606, 475, 460, 611, 541, 278,\\n  558, 556, 612, 556, 445, 611, 766, 619, 520, 684, 446, 582, 715, 576, 753,\\n  845, 278, 582, 611, 582, 845, 667, 669, 885, 567, 711, 667, 278, 276, 556,\\n  1094, 1062, 875, 610, 722, 622, 719, 722, 719, 722, 567, 712, 667, 904, 626,\\n  719, 719, 610, 702, 833, 722, 778, 719, 667, 722, 611, 622, 854, 667, 730,\\n  703, 1005, 1019, 870, 979, 719, 711, 1031, 719, 556, 618, 615, 417, 635, 556,\\n  709, 497, 615, 615, 500, 635, 740, 604, 611, 604, 611, 556, 490, 556, 875,\\n  556, 615, 581, 833, 844, 729, 854, 615, 552, 854, 583, 556, 556, 611, 417,\\n  552, 556, 278, 281, 278, 969, 906, 611, 500, 615, 556, 604, 778, 611, 487,\\n  447, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552,\\n  278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333,\\n  333, 604, 333, 167, 396, 556, 556, 1094, 556, 885, 489, 1115, 1000, 768, 600,\\n  834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\\n  584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\\n  708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\\n  708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\\n  604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\\n  611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333,\\n  333, 333, 333, 333, 333,\\n];\\n\\n\u002F\u002F Char code of glyphs in LiberationSans-Bold.ttf.\\nconst LiberationSansBoldMapping = [\\n  -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\\n  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\\n  67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\\n  86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\\n  104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\\n  119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\\n  168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\\n  184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\\n  199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\\n  214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\\n  229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\\n  244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\\n  259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\\n  274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\\n  289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\\n  304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\\n  319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\\n  334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\\n  349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\\n  364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\\n  379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\\n  539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\\n  905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\\n  922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\\n  938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\\n  953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\\n  968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\\n  1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\\n  1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\\n  1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\\n  1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\\n  1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\\n  1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\\n  1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\\n  1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\\n  8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\\n  8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\\n  8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\\n  8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\\n  8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\\n  9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\\n  9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\\n  9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\\n  9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\\n  9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\\n  9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\\n];\\n\\n\u002F\u002F Widths of glyphs in LiberationSans-BoldItalic.ttf.\\nconst LiberationSansBoldItalicWidths = [\\n  365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278,\\n  333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333,\\n  584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556,\\n  722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\\n  611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611,\\n  278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778,\\n  556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333,\\n  737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333,\\n  333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722,\\n  667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\\n  584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\\n  889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611,\\n  611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556,\\n  722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 740, 722, 611, 667,\\n  556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611,\\n  778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278,\\n  278, 782, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 396, 611,\\n  479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778,\\n  611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556,\\n  667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722,\\n  611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611,\\n  500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333,\\n  333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 722, 333, 854, 906,\\n  473, 844, 930, 847, 278, 722, 722, 610, 671, 667, 611, 722, 778, 278, 722,\\n  667, 833, 722, 657, 778, 718, 667, 590, 611, 667, 822, 667, 829, 781, 278,\\n  667, 620, 479, 611, 278, 591, 620, 621, 556, 610, 479, 492, 611, 558, 278,\\n  566, 556, 603, 556, 450, 611, 712, 605, 532, 664, 409, 591, 704, 578, 773,\\n  834, 278, 591, 611, 591, 834, 667, 667, 886, 614, 719, 667, 278, 278, 556,\\n  1094, 1042, 854, 622, 719, 677, 719, 722, 708, 722, 614, 722, 667, 927, 643,\\n  719, 719, 615, 687, 833, 722, 778, 719, 667, 722, 611, 677, 781, 667, 729,\\n  708, 979, 989, 854, 1000, 708, 719, 1042, 729, 556, 619, 604, 534, 618, 556,\\n  736, 510, 611, 611, 507, 622, 740, 604, 611, 611, 611, 556, 889, 556, 885,\\n  556, 646, 583, 889, 935, 707, 854, 594, 552, 865, 589, 556, 556, 611, 469,\\n  563, 556, 278, 278, 278, 969, 906, 611, 507, 619, 556, 611, 778, 611, 575,\\n  467, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552,\\n  278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333,\\n  333, 604, 333, 167, 396, 556, 556, 1104, 556, 885, 516, 1146, 1000, 768, 600,\\n  834, 834, 834, 834, 999, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\\n  584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\\n  708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\\n  708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\\n  604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\\n  611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333,\\n  333, 333, 333, 333, 333,\\n];\\n\\n\u002F\u002F Char code of glyphs in LiberationSans-BoldItalic.ttf.\\nconst LiberationSansBoldItalicMapping = [\\n  -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\\n  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\\n  67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\\n  86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\\n  104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\\n  119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\\n  168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\\n  184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\\n  199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\\n  214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\\n  229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\\n  244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\\n  259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\\n  274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\\n  289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\\n  304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\\n  319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\\n  334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\\n  349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\\n  364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\\n  379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\\n  539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\\n  905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\\n  922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\\n  938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\\n  953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\\n  968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\\n  1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\\n  1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\\n  1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\\n  1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\\n  1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\\n  1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\\n  1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\\n  1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\\n  8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\\n  8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\\n  8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\\n  8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\\n  8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\\n  9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\\n  9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\\n  9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\\n  9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\\n  9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\\n  9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\\n];\\n\\n\u002F\u002F Widths of glyphs in LiberationSans-Italic.ttf.\\nconst LiberationSansItalicWidths = [\\n  365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278,\\n  333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278,\\n  584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500,\\n  667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\\n  611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556,\\n  222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722,\\n  500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333,\\n  737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333,\\n  333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722,\\n  667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\\n  584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\\n  889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556,\\n  556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556,\\n  667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 625, 722, 556, 667,\\n  556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556,\\n  778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278,\\n  278, 733, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 281, 556,\\n  400, 556, 222, 722, 556, 722, 556, 722, 556, 615, 723, 556, 778, 556, 778,\\n  556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500,\\n  667, 500, 667, 500, 611, 278, 611, 354, 611, 278, 722, 556, 722, 556, 722,\\n  556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611,\\n  500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278,\\n  333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 789, 846,\\n  389, 794, 865, 775, 222, 667, 667, 570, 671, 667, 611, 722, 778, 278, 667,\\n  667, 833, 722, 648, 778, 725, 667, 600, 611, 667, 837, 667, 831, 761, 278,\\n  667, 570, 439, 555, 222, 550, 570, 571, 500, 556, 439, 463, 555, 542, 222,\\n  500, 492, 548, 500, 447, 556, 670, 573, 486, 603, 374, 550, 652, 546, 728,\\n  779, 222, 550, 556, 550, 779, 667, 667, 843, 544, 708, 667, 278, 278, 500,\\n  1066, 982, 844, 589, 715, 639, 724, 667, 651, 667, 544, 704, 667, 917, 614,\\n  715, 715, 589, 686, 833, 722, 778, 725, 667, 722, 611, 639, 795, 667, 727,\\n  673, 920, 923, 805, 886, 651, 694, 1022, 682, 556, 562, 522, 493, 553, 556,\\n  688, 465, 556, 556, 472, 564, 686, 550, 556, 556, 556, 500, 833, 500, 835,\\n  500, 572, 518, 830, 851, 621, 736, 526, 492, 752, 534, 556, 556, 556, 378,\\n  496, 500, 222, 222, 222, 910, 828, 556, 472, 565, 500, 556, 778, 556, 492,\\n  339, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552,\\n  222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333,\\n  333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1083, 1000, 768, 600,\\n  834, 834, 834, 834, 1000, 500, 998, 500, 1000, 500, 500, 494, 612, 823, 713,\\n  584, 549, 713, 979, 719, 274, 549, 549, 584, 549, 549, 604, 584, 604, 604,\\n  708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\\n  708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\\n  604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\\n  500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324,\\n  324, 316, 328, 398, 285,\\n];\\n\\n\u002F\u002F Char code of glyphs in LiberationSans-Italic.ttf.\\nconst LiberationSansItalicMapping = [\\n  -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\\n  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\\n  67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\\n  86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\\n  104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\\n  119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\\n  168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\\n  184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\\n  199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\\n  214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\\n  229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\\n  244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\\n  259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\\n  274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\\n  289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\\n  304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\\n  319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\\n  334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\\n  349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\\n  364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\\n  379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\\n  539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\\n  905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\\n  922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\\n  938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\\n  953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\\n  968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\\n  1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\\n  1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\\n  1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\\n  1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\\n  1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\\n  1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\\n  1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\\n  1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\\n  8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\\n  8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\\n  8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\\n  8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\\n  8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\\n  9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\\n  9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\\n  9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\\n  9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\\n  9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\\n  9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\\n];\\n\\n\u002F\u002F Widths of glyphs in LiberationSans-Regular.ttf.\\nconst LiberationSansRegularWidths = [\\n  365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278,\\n  333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278,\\n  584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500,\\n  667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667,\\n  611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556,\\n  222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722,\\n  500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333,\\n  737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333,\\n  333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722,\\n  667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778,\\n  584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556,\\n  889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556,\\n  556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556,\\n  667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 615, 722, 556, 667,\\n  556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556,\\n  778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278,\\n  278, 735, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 292, 556,\\n  334, 556, 222, 722, 556, 722, 556, 722, 556, 604, 723, 556, 778, 556, 778,\\n  556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500,\\n  667, 500, 667, 500, 611, 278, 611, 375, 611, 278, 722, 556, 722, 556, 722,\\n  556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611,\\n  500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278,\\n  333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 784, 838,\\n  384, 774, 855, 752, 222, 667, 667, 551, 668, 667, 611, 722, 778, 278, 667,\\n  668, 833, 722, 650, 778, 722, 667, 618, 611, 667, 798, 667, 835, 748, 278,\\n  667, 578, 446, 556, 222, 547, 578, 575, 500, 557, 446, 441, 556, 556, 222,\\n  500, 500, 576, 500, 448, 556, 690, 569, 482, 617, 395, 547, 648, 525, 713,\\n  781, 222, 547, 556, 547, 781, 667, 667, 865, 542, 719, 667, 278, 278, 500,\\n  1057, 1010, 854, 583, 722, 635, 719, 667, 656, 667, 542, 677, 667, 923, 604,\\n  719, 719, 583, 656, 833, 722, 778, 719, 667, 722, 611, 635, 760, 667, 740,\\n  667, 917, 938, 792, 885, 656, 719, 1010, 722, 556, 573, 531, 365, 583, 556,\\n  669, 458, 559, 559, 438, 583, 688, 552, 556, 542, 556, 500, 458, 500, 823,\\n  500, 573, 521, 802, 823, 625, 719, 521, 510, 750, 542, 556, 556, 556, 365,\\n  510, 500, 222, 278, 222, 906, 812, 556, 438, 559, 500, 552, 778, 556, 489,\\n  411, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552,\\n  222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333,\\n  333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1073, 1000, 768, 600,\\n  834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713,\\n  584, 549, 713, 979, 719, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604,\\n  708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\\n  708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,\\n  708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604,\\n  604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750,\\n  500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324,\\n  324, 316, 328, 398, 285,\\n];\\n\\n\u002F\u002F Char code of glyphs in LiberationSans-Regular.ttf.\\nconst LiberationSansRegularMapping = [\\n  -1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\\n  48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,\\n  67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,\\n  86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,\\n  104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,\\n  119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167,\\n  168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183,\\n  184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,\\n  199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213,\\n  214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,\\n  229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243,\\n  244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258,\\n  259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,\\n  274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,\\n  289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303,\\n  304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,\\n  319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333,\\n  334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,\\n  349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363,\\n  364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,\\n  379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538,\\n  539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904,\\n  905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921,\\n  922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937,\\n  938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952,\\n  953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967,\\n  968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030,\\n  1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043,\\n  1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056,\\n  1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,\\n  1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082,\\n  1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,\\n  1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108,\\n  1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139,\\n  1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211,\\n  8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226,\\n  8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359,\\n  8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593,\\n  8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735,\\n  8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474,\\n  9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555,\\n  9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568,\\n  9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600,\\n  9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650,\\n  9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792,\\n  9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1,\\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\\n];\\n\\nexport {\\n  LiberationSansBoldItalicMapping,\\n  LiberationSansBoldItalicWidths,\\n  LiberationSansBoldMapping,\\n  LiberationSansBoldWidths,\\n  LiberationSansItalicMapping,\\n  LiberationSansItalicWidths,\\n  LiberationSansRegularMapping,\\n  LiberationSansRegularWidths,\\n};\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F Factors to rescale LiberationSans-Bold.ttf to have the same\\n\u002F\u002F metrics as MyriadPro-Bold.otf.\\nconst MyriadProBoldFactors = [\\n  1.36898, 1, 1, 0.72706, 0.80479, 0.83734, 0.98894, 0.99793, 0.9897, 0.93884,\\n  0.86209, 0.94292, 0.94292, 1.16661, 1.02058, 0.93582, 0.96694, 0.93582,\\n  1.19137, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793,\\n  0.99793, 0.99793, 0.99793, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058,\\n  0.72851, 0.78966, 0.90838, 0.83637, 0.82391, 0.96376, 0.80061, 0.86275,\\n  0.8768, 0.95407, 1.0258, 0.73901, 0.85022, 0.83655, 1.0156, 0.95546, 0.92179,\\n  0.87107, 0.92179, 0.82114, 0.8096, 0.89713, 0.94438, 0.95353, 0.94083,\\n  0.91905, 0.90406, 0.9446, 0.94292, 1.18777, 0.94292, 1.02058, 0.89903,\\n  0.90088, 0.94938, 0.97898, 0.81093, 0.97571, 0.94938, 1.024, 0.9577, 0.95933,\\n  0.98621, 1.0474, 0.97455, 0.98981, 0.9672, 0.95933, 0.9446, 0.97898, 0.97407,\\n  0.97646, 0.78036, 1.10208, 0.95442, 0.95298, 0.97579, 0.9332, 0.94039, 0.938,\\n  0.80687, 1.01149, 0.80687, 1.02058, 0.80479, 0.99793, 0.99793, 0.99793,\\n  0.99793, 1.01149, 1.00872, 0.90088, 0.91882, 1.0213, 0.8361, 1.02058, 0.62295,\\n  0.54324, 0.89022, 1.08595, 1, 1, 0.90088, 1, 0.97455, 0.93582, 0.90088, 1,\\n  1.05686, 0.8361, 0.99642, 0.99642, 0.99642, 0.72851, 0.90838, 0.90838,\\n  0.90838, 0.90838, 0.90838, 0.90838, 0.868, 0.82391, 0.80061, 0.80061, 0.80061,\\n  0.80061, 1.0258, 1.0258, 1.0258, 1.0258, 0.97484, 0.95546, 0.92179, 0.92179,\\n  0.92179, 0.92179, 0.92179, 1.02058, 0.92179, 0.94438, 0.94438, 0.94438,\\n  0.94438, 0.90406, 0.86958, 0.98225, 0.94938, 0.94938, 0.94938, 0.94938,\\n  0.94938, 0.94938, 0.9031, 0.81093, 0.94938, 0.94938, 0.94938, 0.94938,\\n  0.98621, 0.98621, 0.98621, 0.98621, 0.93969, 0.95933, 0.9446, 0.9446, 0.9446,\\n  0.9446, 0.9446, 1.08595, 0.9446, 0.95442, 0.95442, 0.95442, 0.95442, 0.94039,\\n  0.97898, 0.94039, 0.90838, 0.94938, 0.90838, 0.94938, 0.90838, 0.94938,\\n  0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093,\\n  0.96376, 0.84313, 0.97484, 0.97571, 0.80061, 0.94938, 0.80061, 0.94938,\\n  0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.8768, 0.9577, 0.8768,\\n  0.9577, 0.8768, 0.9577, 1, 1, 0.95407, 0.95933, 0.97069, 0.95933, 1.0258,\\n  0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621,\\n  0.887, 1.01591, 0.73901, 1.0474, 1, 1, 0.97455, 0.83655, 0.98981, 1, 1,\\n  0.83655, 0.73977, 0.83655, 0.73903, 0.84638, 1.033, 0.95546, 0.95933, 1, 1,\\n  0.95546, 0.95933, 0.8271, 0.95417, 0.95933, 0.92179, 0.9446, 0.92179, 0.9446,\\n  0.92179, 0.9446, 0.936, 0.91964, 0.82114, 0.97646, 1, 1, 0.82114, 0.97646,\\n  0.8096, 0.78036, 0.8096, 0.78036, 1, 1, 0.8096, 0.78036, 1, 1, 0.89713,\\n  0.77452, 0.89713, 1.10208, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438,\\n  0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94083,\\n  0.97579, 0.90406, 0.94039, 0.90406, 0.9446, 0.938, 0.9446, 0.938, 0.9446,\\n  0.938, 1, 0.99793, 0.90838, 0.94938, 0.868, 0.9031, 0.92179, 0.9446, 1, 1,\\n  0.89713, 1.10208, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088,\\n  0.90088, 0.90088, 0.90088, 0.90989, 0.9358, 0.91945, 0.83181, 0.75261,\\n  0.87992, 0.82976, 0.96034, 0.83689, 0.97268, 1.0078, 0.90838, 0.83637, 0.8019,\\n  0.90157, 0.80061, 0.9446, 0.95407, 0.92436, 1.0258, 0.85022, 0.97153, 1.0156,\\n  0.95546, 0.89192, 0.92179, 0.92361, 0.87107, 0.96318, 0.89713, 0.93704,\\n  0.95638, 0.91905, 0.91709, 0.92796, 1.0258, 0.93704, 0.94836, 1.0373, 0.95933,\\n  1.0078, 0.95871, 0.94836, 0.96174, 0.92601, 0.9498, 0.98607, 0.95776, 0.95933,\\n  1.05453, 1.0078, 0.98275, 0.9314, 0.95617, 0.91701, 1.05993, 0.9446, 0.78367,\\n  0.9553, 1, 0.86832, 1.0128, 0.95871, 0.99394, 0.87548, 0.96361, 0.86774,\\n  1.0078, 0.95871, 0.9446, 0.95871, 0.86774, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.94083, 0.97579, 0.94083, 0.97579, 0.94083,\\n  0.97579, 0.90406, 0.94039, 0.96694, 1, 0.89903, 1, 1, 1, 0.93582, 0.93582,\\n  0.93582, 1, 0.908, 0.908, 0.918, 0.94219, 0.94219, 0.96544, 1, 1.285, 1, 1,\\n  0.81079, 0.81079, 1, 1, 0.74854, 1, 1, 1, 1, 0.99793, 1, 1, 1, 0.65, 1,\\n  1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.17173, 1, 0.80535, 0.76169,\\n  1.02058, 1.0732, 1.05486, 1, 1, 1.30692, 1.08595, 1.08595, 1, 1.08595,\\n  1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.16161, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n];\\nconst MyriadProBoldMetrics = { lineHeight: 1.2, lineGap: 0.2 };\\n\\n\u002F\u002F Factors to rescale LiberationSans-BoldItalic.ttf to have the same\\n\u002F\u002F metrics as MyriadPro-BoldIt.otf.\\nconst MyriadProBoldItalicFactors = [\\n  1.36898, 1, 1, 0.66227, 0.80779, 0.81625, 0.97276, 0.97276, 0.97733, 0.92222,\\n  0.83266, 0.94292, 0.94292, 1.16148, 1.02058, 0.93582, 0.96694, 0.93582,\\n  1.17337, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276,\\n  0.97276, 0.97276, 0.97276, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058,\\n  0.71541, 0.76813, 0.85576, 0.80591, 0.80729, 0.94299, 0.77512, 0.83655,\\n  0.86523, 0.92222, 0.98621, 0.71743, 0.81698, 0.79726, 0.98558, 0.92222,\\n  0.90637, 0.83809, 0.90637, 0.80729, 0.76463, 0.86275, 0.90699, 0.91605,\\n  0.9154, 0.85308, 0.85458, 0.90531, 0.94292, 1.21296, 0.94292, 1.02058,\\n  0.89903, 1.18616, 0.99613, 0.91677, 0.78216, 0.91677, 0.90083, 0.98796,\\n  0.9135, 0.92168, 0.95381, 0.98981, 0.95298, 0.95381, 0.93459, 0.92168,\\n  0.91513, 0.92004, 0.91677, 0.95077, 0.748, 1.04502, 0.91677, 0.92061, 0.94236,\\n  0.89544, 0.89364, 0.9, 0.80687, 0.8578, 0.80687, 1.02058, 0.80779, 0.97276,\\n  0.97276, 0.97276, 0.97276, 0.8578, 0.99973, 1.18616, 0.91339, 1.08074,\\n  0.82891, 1.02058, 0.55509, 0.71526, 0.89022, 1.08595, 1, 1, 1.18616, 1,\\n  0.96736, 0.93582, 1.18616, 1, 1.04864, 0.82711, 0.99043, 0.99043, 0.99043,\\n  0.71541, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.845, 0.80729,\\n  0.77512, 0.77512, 0.77512, 0.77512, 0.98621, 0.98621, 0.98621, 0.98621,\\n  0.95961, 0.92222, 0.90637, 0.90637, 0.90637, 0.90637, 0.90637, 1.02058,\\n  0.90251, 0.90699, 0.90699, 0.90699, 0.90699, 0.85458, 0.83659, 0.94951,\\n  0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.85811, 0.78216,\\n  0.90083, 0.90083, 0.90083, 0.90083, 0.95381, 0.95381, 0.95381, 0.95381,\\n  0.9135, 0.92168, 0.91513, 0.91513, 0.91513, 0.91513, 0.91513, 1.08595,\\n  0.91677, 0.91677, 0.91677, 0.91677, 0.91677, 0.89364, 0.92332, 0.89364,\\n  0.85576, 0.99613, 0.85576, 0.99613, 0.85576, 0.99613, 0.80729, 0.78216,\\n  0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.94299, 0.76783,\\n  0.95961, 0.91677, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083,\\n  0.77512, 0.90083, 0.77512, 0.90083, 0.86523, 0.9135, 0.86523, 0.9135, 0.86523,\\n  0.9135, 1, 1, 0.92222, 0.92168, 0.92222, 0.92168, 0.98621, 0.95381, 0.98621,\\n  0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.86036,\\n  0.97096, 0.71743, 0.98981, 1, 1, 0.95298, 0.79726, 0.95381, 1, 1, 0.79726,\\n  0.6894, 0.79726, 0.74321, 0.81691, 1.0006, 0.92222, 0.92168, 1, 1, 0.92222,\\n  0.92168, 0.79464, 0.92098, 0.92168, 0.90637, 0.91513, 0.90637, 0.91513,\\n  0.90637, 0.91513, 0.909, 0.87514, 0.80729, 0.95077, 1, 1, 0.80729, 0.95077,\\n  0.76463, 0.748, 0.76463, 0.748, 1, 1, 0.76463, 0.748, 1, 1, 0.86275, 0.72651,\\n  0.86275, 1.04502, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677,\\n  0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.9154, 0.94236,\\n  0.85458, 0.89364, 0.85458, 0.90531, 0.9, 0.90531, 0.9, 0.90531, 0.9, 1,\\n  0.97276, 0.85576, 0.99613, 0.845, 0.85811, 0.90251, 0.91677, 1, 1, 0.86275,\\n  1.04502, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616,\\n  1.18616, 1.18616, 1.00899, 1.30628, 0.85576, 0.80178, 0.66862, 0.7927,\\n  0.69323, 0.88127, 0.72459, 0.89711, 0.95381, 0.85576, 0.80591, 0.7805,\\n  0.94729, 0.77512, 0.90531, 0.92222, 0.90637, 0.98621, 0.81698, 0.92655,\\n  0.98558, 0.92222, 0.85359, 0.90637, 0.90976, 0.83809, 0.94523, 0.86275,\\n  0.83509, 0.93157, 0.85308, 0.83392, 0.92346, 0.98621, 0.83509, 0.92886,\\n  0.91324, 0.92168, 0.95381, 0.90646, 0.92886, 0.90557, 0.86847, 0.90276,\\n  0.91324, 0.86842, 0.92168, 0.99531, 0.95381, 0.9224, 0.85408, 0.92699,\\n  0.86847, 1.0051, 0.91513, 0.80487, 0.93481, 1, 0.88159, 1.05214, 0.90646,\\n  0.97355, 0.81539, 0.89398, 0.85923, 0.95381, 0.90646, 0.91513, 0.90646,\\n  0.85923, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  0.9154, 0.94236, 0.9154, 0.94236, 0.9154, 0.94236, 0.85458, 0.89364, 0.96694,\\n  1, 0.89903, 1, 1, 1, 0.91782, 0.91782, 0.91782, 1, 0.896, 0.896, 0.896,\\n  0.9332, 0.9332, 0.95973, 1, 1.26, 1, 1, 0.80479, 0.80178, 1, 1, 0.85633, 1, 1,\\n  1, 1, 0.97276, 1, 1, 1, 0.698, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1.14542, 1, 0.79199, 0.78694, 1.02058, 1.03493, 1.05486, 1, 1, 1.23026,\\n  1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.20006, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n];\\nconst MyriadProBoldItalicMetrics = { lineHeight: 1.2, lineGap: 0.2 };\\n\\n\u002F\u002F Factors to rescale LiberationSans-Italic.ttf to have the same\\n\u002F\u002F metrics as MyriadPro-It.otf.\\nconst MyriadProItalicFactors = [\\n  1.36898, 1, 1, 0.65507, 0.84943, 0.85639, 0.88465, 0.88465, 0.86936, 0.88307,\\n  0.86948, 0.85283, 0.85283, 1.06383, 1.02058, 0.75945, 0.9219, 0.75945,\\n  1.17337, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465,\\n  0.88465, 0.88465, 0.88465, 0.75945, 0.75945, 1.02058, 1.02058, 1.02058,\\n  0.69046, 0.70926, 0.85158, 0.77812, 0.76852, 0.89591, 0.70466, 0.76125,\\n  0.80094, 0.86822, 0.83864, 0.728, 0.77212, 0.79475, 0.93637, 0.87514, 0.8588,\\n  0.76013, 0.8588, 0.72421, 0.69866, 0.77598, 0.85991, 0.80811, 0.87832,\\n  0.78112, 0.77512, 0.8562, 1.0222, 1.18417, 1.0222, 1.27014, 0.89903, 1.15012,\\n  0.93859, 0.94399, 0.846, 0.94399, 0.81453, 1.0186, 0.94219, 0.96017, 1.03075,\\n  1.02175, 0.912, 1.03075, 0.96998, 0.96017, 0.93859, 0.94399, 0.94399, 0.95493,\\n  0.746, 1.12658, 0.94578, 0.91, 0.979, 0.882, 0.882, 0.83, 0.85034, 0.83537,\\n  0.85034, 1.02058, 0.70869, 0.88465, 0.88465, 0.88465, 0.88465, 0.83537,\\n  0.90083, 1.15012, 0.9161, 0.94565, 0.73541, 1.02058, 0.53609, 0.69353,\\n  0.79519, 1.08595, 1, 1, 1.15012, 1, 0.91974, 0.75945, 1.15012, 1, 0.9446,\\n  0.73361, 0.9005, 0.9005, 0.9005, 0.62864, 0.85158, 0.85158, 0.85158, 0.85158,\\n  0.85158, 0.85158, 0.773, 0.76852, 0.70466, 0.70466, 0.70466, 0.70466, 0.83864,\\n  0.83864, 0.83864, 0.83864, 0.90561, 0.87514, 0.8588, 0.8588, 0.8588, 0.8588,\\n  0.8588, 1.02058, 0.85751, 0.85991, 0.85991, 0.85991, 0.85991, 0.77512,\\n  0.76013, 0.88075, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859,\\n  0.8075, 0.846, 0.81453, 0.81453, 0.81453, 0.81453, 0.82424, 0.82424, 0.82424,\\n  0.82424, 0.9278, 0.96017, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859,\\n  1.08595, 0.8562, 0.94578, 0.94578, 0.94578, 0.94578, 0.882, 0.94578, 0.882,\\n  0.85158, 0.93859, 0.85158, 0.93859, 0.85158, 0.93859, 0.76852, 0.846, 0.76852,\\n  0.846, 0.76852, 0.846, 0.76852, 0.846, 0.89591, 0.8544, 0.90561, 0.94399,\\n  0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453,\\n  0.70466, 0.81453, 0.80094, 0.94219, 0.80094, 0.94219, 0.80094, 0.94219, 1, 1,\\n  0.86822, 0.96017, 0.86822, 0.96017, 0.83864, 0.82424, 0.83864, 0.82424,\\n  0.83864, 0.82424, 0.83864, 1.03075, 0.83864, 0.82424, 0.81402, 1.02738, 0.728,\\n  1.02175, 1, 1, 0.912, 0.79475, 1.03075, 1, 1, 0.79475, 0.83911, 0.79475,\\n  0.66266, 0.80553, 1.06676, 0.87514, 0.96017, 1, 1, 0.87514, 0.96017, 0.86865,\\n  0.87396, 0.96017, 0.8588, 0.93859, 0.8588, 0.93859, 0.8588, 0.93859, 0.867,\\n  0.84759, 0.72421, 0.95493, 1, 1, 0.72421, 0.95493, 0.69866, 0.746, 0.69866,\\n  0.746, 1, 1, 0.69866, 0.746, 1, 1, 0.77598, 0.88417, 0.77598, 1.12658,\\n  0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578,\\n  0.85991, 0.94578, 0.85991, 0.94578, 0.87832, 0.979, 0.77512, 0.882, 0.77512,\\n  0.8562, 0.83, 0.8562, 0.83, 0.8562, 0.83, 1, 0.88465, 0.85158, 0.93859, 0.773,\\n  0.8075, 0.85751, 0.8562, 1, 1, 0.77598, 1.12658, 1.15012, 1.15012, 1.15012,\\n  1.15012, 1.15012, 1.15313, 1.15012, 1.15012, 1.15012, 1.08106, 1.03901,\\n  0.85158, 0.77025, 0.62264, 0.7646, 0.65351, 0.86026, 0.69461, 0.89947,\\n  1.03075, 0.85158, 0.77812, 0.76449, 0.88836, 0.70466, 0.8562, 0.86822, 0.8588,\\n  0.83864, 0.77212, 0.85308, 0.93637, 0.87514, 0.82352, 0.8588, 0.85701,\\n  0.76013, 0.89058, 0.77598, 0.8156, 0.82565, 0.78112, 0.77899, 0.89386,\\n  0.83864, 0.8156, 0.9486, 0.92388, 0.96186, 1.03075, 0.91123, 0.9486, 0.93298,\\n  0.878, 0.93942, 0.92388, 0.84596, 0.96186, 0.95119, 1.03075, 0.922, 0.88787,\\n  0.95829, 0.88, 0.93559, 0.93859, 0.78815, 0.93758, 1, 0.89217, 1.03737,\\n  0.91123, 0.93969, 0.77487, 0.85769, 0.86799, 1.03075, 0.91123, 0.93859,\\n  0.91123, 0.86799, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 0.87832, 0.979, 0.87832, 0.979, 0.87832, 0.979, 0.77512, 0.882, 0.9219,\\n  1, 0.89903, 1, 1, 1, 0.87321, 0.87321, 0.87321, 1, 1.027, 1.027, 1.027,\\n  0.86847, 0.86847, 0.79121, 1, 1.124, 1, 1, 0.73572, 0.73572, 1, 1, 0.85034, 1,\\n  1, 1, 1, 0.88465, 1, 1, 1, 0.669, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1.04828, 1, 0.74948, 0.75187, 1.02058, 0.98391, 1.02119, 1, 1, 1.06233,\\n  1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05233, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n];\\nconst MyriadProItalicMetrics = { lineHeight: 1.2, lineGap: 0.2 };\\n\\n\u002F\u002F Factors to rescale LiberationSans-Regular.ttf to have the same\\n\u002F\u002F metrics as MyriadPro-Regular.otf.\\nconst MyriadProRegularFactors = [\\n  1.36898, 1, 1, 0.76305, 0.82784, 0.94935, 0.89364, 0.92241, 0.89073, 0.90706,\\n  0.98472, 0.85283, 0.85283, 1.0664, 1.02058, 0.74505, 0.9219, 0.74505, 1.23456,\\n  0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241,\\n  0.92241, 0.92241, 0.74505, 0.74505, 1.02058, 1.02058, 1.02058, 0.73002,\\n  0.72601, 0.91755, 0.8126, 0.80314, 0.92222, 0.73764, 0.79726, 0.83051,\\n  0.90284, 0.86023, 0.74, 0.8126, 0.84869, 0.96518, 0.91115, 0.8858, 0.79761,\\n  0.8858, 0.74498, 0.73914, 0.81363, 0.89591, 0.83659, 0.89633, 0.85608, 0.8111,\\n  0.90531, 1.0222, 1.22736, 1.0222, 1.27014, 0.89903, 0.90088, 0.86667, 1.0231,\\n  0.896, 1.01411, 0.90083, 1.05099, 1.00512, 0.99793, 1.05326, 1.09377, 0.938,\\n  1.06226, 1.00119, 0.99793, 0.98714, 1.0231, 1.01231, 0.98196, 0.792, 1.19137,\\n  0.99074, 0.962, 1.01915, 0.926, 0.942, 0.856, 0.85034, 0.92006, 0.85034,\\n  1.02058, 0.69067, 0.92241, 0.92241, 0.92241, 0.92241, 0.92006, 0.9332,\\n  0.90088, 0.91882, 0.93484, 0.75339, 1.02058, 0.56866, 0.54324, 0.79519,\\n  1.08595, 1, 1, 0.90088, 1, 0.95325, 0.74505, 0.90088, 1, 0.97198, 0.75339,\\n  0.91009, 0.91009, 0.91009, 0.66466, 0.91755, 0.91755, 0.91755, 0.91755,\\n  0.91755, 0.91755, 0.788, 0.80314, 0.73764, 0.73764, 0.73764, 0.73764, 0.86023,\\n  0.86023, 0.86023, 0.86023, 0.92915, 0.91115, 0.8858, 0.8858, 0.8858, 0.8858,\\n  0.8858, 1.02058, 0.8858, 0.89591, 0.89591, 0.89591, 0.89591, 0.8111, 0.79611,\\n  0.89713, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86936, 0.896,\\n  0.90083, 0.90083, 0.90083, 0.90083, 0.84224, 0.84224, 0.84224, 0.84224,\\n  0.97276, 0.99793, 0.98714, 0.98714, 0.98714, 0.98714, 0.98714, 1.08595,\\n  0.89876, 0.99074, 0.99074, 0.99074, 0.99074, 0.942, 1.0231, 0.942, 0.91755,\\n  0.86667, 0.91755, 0.86667, 0.91755, 0.86667, 0.80314, 0.896, 0.80314, 0.896,\\n  0.80314, 0.896, 0.80314, 0.896, 0.92222, 0.93372, 0.92915, 1.01411, 0.73764,\\n  0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764,\\n  0.90083, 0.83051, 1.00512, 0.83051, 1.00512, 0.83051, 1.00512, 1, 1, 0.90284,\\n  0.99793, 0.90976, 0.99793, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023,\\n  0.84224, 0.86023, 1.05326, 0.86023, 0.84224, 0.82873, 1.07469, 0.74, 1.09377,\\n  1, 1, 0.938, 0.84869, 1.06226, 1, 1, 0.84869, 0.83704, 0.84869, 0.81441,\\n  0.85588, 1.08927, 0.91115, 0.99793, 1, 1, 0.91115, 0.99793, 0.91887, 0.90991,\\n  0.99793, 0.8858, 0.98714, 0.8858, 0.98714, 0.8858, 0.98714, 0.894, 0.91434,\\n  0.74498, 0.98196, 1, 1, 0.74498, 0.98196, 0.73914, 0.792, 0.73914, 0.792, 1,\\n  1, 0.73914, 0.792, 1, 1, 0.81363, 0.904, 0.81363, 1.19137, 0.89591, 0.99074,\\n  0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074,\\n  0.89591, 0.99074, 0.89633, 1.01915, 0.8111, 0.942, 0.8111, 0.90531, 0.856,\\n  0.90531, 0.856, 0.90531, 0.856, 1, 0.92241, 0.91755, 0.86667, 0.788, 0.86936,\\n  0.8858, 0.89876, 1, 1, 0.81363, 1.19137, 0.90088, 0.90088, 0.90088, 0.90088,\\n  0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90388, 1.03901, 0.92138,\\n  0.78105, 0.7154, 0.86169, 0.80513, 0.94007, 0.82528, 0.98612, 1.06226,\\n  0.91755, 0.8126, 0.81884, 0.92819, 0.73764, 0.90531, 0.90284, 0.8858, 0.86023,\\n  0.8126, 0.91172, 0.96518, 0.91115, 0.83089, 0.8858, 0.87791, 0.79761, 0.89297,\\n  0.81363, 0.88157, 0.89992, 0.85608, 0.81992, 0.94307, 0.86023, 0.88157,\\n  0.95308, 0.98699, 0.99793, 1.06226, 0.95817, 0.95308, 0.97358, 0.928, 0.98088,\\n  0.98699, 0.92761, 0.99793, 0.96017, 1.06226, 0.986, 0.944, 0.95978, 0.938,\\n  0.96705, 0.98714, 0.80442, 0.98972, 1, 0.89762, 1.04552, 0.95817, 0.99007,\\n  0.87064, 0.91879, 0.88888, 1.06226, 0.95817, 0.98714, 0.95817, 0.88888, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89633, 1.01915,\\n  0.89633, 1.01915, 0.89633, 1.01915, 0.8111, 0.942, 0.9219, 1, 0.89903, 1, 1,\\n  1, 0.93173, 0.93173, 0.93173, 1, 1.06304, 1.06304, 1.06904, 0.89903, 0.89903,\\n  0.80549, 1, 1.156, 1, 1, 0.76575, 0.76575, 1, 1, 0.72458, 1, 1, 1, 1, 0.92241,\\n  1, 1, 1, 0.619, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.07257, 1,\\n  0.74705, 0.71119, 1.02058, 1.024, 1.02119, 1, 1, 1.1536, 1.08595, 1.08595, 1,\\n  1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05638, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1,\\n];\\nconst MyriadProRegularMetrics = { lineHeight: 1.2, lineGap: 0.2 };\\n\\nexport {\\n  MyriadProBoldFactors,\\n  MyriadProBoldItalicFactors,\\n  MyriadProBoldItalicMetrics,\\n  MyriadProBoldMetrics,\\n  MyriadProItalicFactors,\\n  MyriadProItalicMetrics,\\n  MyriadProRegularFactors,\\n  MyriadProRegularMetrics,\\n};\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F Factors to rescale LiberationSans-Bold.ttf to have the same\\n\u002F\u002F metrics as segoeuib.ttf.\\nconst SegoeuiBoldFactors = [\\n  1.76738, 1, 1, 0.99297, 0.9824, 1.04016, 1.06497, 1.03424, 0.97529, 1.17647,\\n  1.23203, 1.1085, 1.1085, 1.16939, 1.2107, 0.9754, 1.21408, 0.9754, 1.59578,\\n  1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424,\\n  1.03424, 1.03424, 0.81378, 0.81378, 1.2107, 1.2107, 1.2107, 0.71703, 0.97847,\\n  0.97363, 0.88776, 0.8641, 1.02096, 0.79795, 0.85132, 0.914, 1.06085, 1.1406,\\n  0.8007, 0.89858, 0.83693, 1.14889, 1.09398, 0.97489, 0.92094, 0.97489,\\n  0.90399, 0.84041, 0.95923, 1.00135, 1, 1.06467, 0.98243, 0.90996, 0.99361,\\n  1.1085, 1.56942, 1.1085, 1.2107, 0.74627, 0.94282, 0.96752, 1.01519, 0.86304,\\n  1.01359, 0.97278, 1.15103, 1.01359, 0.98561, 1.02285, 1.02285, 1.00527,\\n  1.02285, 1.0302, 0.99041, 1.0008, 1.01519, 1.01359, 1.02258, 0.79104, 1.16862,\\n  0.99041, 0.97454, 1.02511, 0.99298, 0.96752, 0.95801, 0.94856, 1.16579,\\n  0.94856, 1.2107, 0.9824, 1.03424, 1.03424, 1, 1.03424, 1.16579, 0.8727,\\n  1.3871, 1.18622, 1.10818, 1.04478, 1.2107, 1.18622, 0.75155, 0.94994, 1.28826,\\n  1.21408, 1.21408, 0.91056, 1, 0.91572, 0.9754, 0.64663, 1.18328, 1.24866,\\n  1.04478, 1.14169, 1.15749, 1.17389, 0.71703, 0.97363, 0.97363, 0.97363,\\n  0.97363, 0.97363, 0.97363, 0.93506, 0.8641, 0.79795, 0.79795, 0.79795,\\n  0.79795, 1.1406, 1.1406, 1.1406, 1.1406, 1.02096, 1.09398, 0.97426, 0.97426,\\n  0.97426, 0.97426, 0.97426, 1.2107, 0.97489, 1.00135, 1.00135, 1.00135,\\n  1.00135, 0.90996, 0.92094, 1.02798, 0.96752, 0.96752, 0.96752, 0.96752,\\n  0.96752, 0.96752, 0.93136, 0.86304, 0.97278, 0.97278, 0.97278, 0.97278,\\n  1.02285, 1.02285, 1.02285, 1.02285, 0.97122, 0.99041, 1, 1, 1, 1, 1, 1.28826,\\n  1.0008, 0.99041, 0.99041, 0.99041, 0.99041, 0.96752, 1.01519, 0.96752,\\n  0.97363, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.8641, 0.86304, 0.8641,\\n  0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 1.02096, 1.03057, 1.02096, 1.03517,\\n  0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278,\\n  0.79795, 0.97278, 0.914, 1.01359, 0.914, 1.01359, 0.914, 1.01359, 1, 1,\\n  1.06085, 0.98561, 1.06085, 1.00879, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406,\\n  1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 0.97138, 1.08692, 0.8007, 1.02285,\\n  1, 1, 1.00527, 0.83693, 1.02285, 1, 1, 0.83693, 0.9455, 0.83693, 0.90418,\\n  0.83693, 1.13005, 1.09398, 0.99041, 1, 1, 1.09398, 0.99041, 0.96692, 1.09251,\\n  0.99041, 0.97489, 1.0008, 0.97489, 1.0008, 0.97489, 1.0008, 0.93994, 0.97931,\\n  0.90399, 1.02258, 1, 1, 0.90399, 1.02258, 0.84041, 0.79104, 0.84041, 0.79104,\\n  0.84041, 0.79104, 0.84041, 0.79104, 1, 1, 0.95923, 1.07034, 0.95923, 1.16862,\\n  1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041,\\n  1.00135, 0.99041, 1.00135, 0.99041, 1.06467, 1.02511, 0.90996, 0.96752,\\n  0.90996, 0.99361, 0.95801, 0.99361, 0.95801, 0.99361, 0.95801, 1.07733,\\n  1.03424, 0.97363, 0.96752, 0.93506, 0.93136, 0.97489, 1.0008, 1, 1, 0.95923,\\n  1.16862, 1.15103, 1.15103, 1.01173, 1.03959, 0.75953, 0.81378, 0.79912,\\n  1.15103, 1.21994, 0.95161, 0.87815, 1.01149, 0.81525, 0.7676, 0.98167,\\n  1.01134, 1.02546, 0.84097, 1.03089, 1.18102, 0.97363, 0.88776, 0.85134,\\n  0.97826, 0.79795, 0.99361, 1.06085, 0.97489, 1.1406, 0.89858, 1.0388, 1.14889,\\n  1.09398, 0.86039, 0.97489, 1.0595, 0.92094, 0.94793, 0.95923, 0.90996,\\n  0.99346, 0.98243, 1.02112, 0.95493, 1.1406, 0.90996, 1.03574, 1.02597, 1.0008,\\n  1.18102, 1.06628, 1.03574, 1.0192, 1.01932, 1.00886, 0.97531, 1.0106, 1.0008,\\n  1.13189, 1.18102, 1.02277, 0.98683, 1.0016, 0.99561, 1.07237, 1.0008, 0.90434,\\n  0.99921, 0.93803, 0.8965, 1.23085, 1.06628, 1.04983, 0.96268, 1.0499, 0.98439,\\n  1.18102, 1.06628, 1.0008, 1.06628, 0.98439, 0.79795, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1.09466, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.97278, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.02065, 1, 1, 1, 1, 1, 1, 1.06467, 1.02511,\\n  1.06467, 1.02511, 1.06467, 1.02511, 0.90996, 0.96752, 1, 1.21408, 0.89903, 1,\\n  1, 0.75155, 1.04394, 1.04394, 1.04394, 1.04394, 0.98633, 0.98633, 0.98633,\\n  0.73047, 0.73047, 1.20642, 0.91211, 1.25635, 1.222, 1.02956, 1.03372, 1.03372,\\n  0.96039, 1.24633, 1, 1.12454, 0.93503, 1.03424, 1.19687, 1.03424, 1, 1, 1,\\n  0.771, 1, 1, 1.15749, 1.15749, 1.15749, 1.10948, 0.86279, 0.94434, 0.86279,\\n  0.94434, 0.86182, 1, 1, 1.16897, 1, 0.96085, 0.90137, 1.2107, 1.18416,\\n  1.13973, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21172, 1.29004,\\n  1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025,\\n  1.18874, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886,\\n  1.04315, 1.15296, 1.34163, 1, 1, 1, 1.09193, 1.09193, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n];\\nconst SegoeuiBoldMetrics = { lineHeight: 1.33008, lineGap: 0 };\\n\\n\u002F\u002F Factors to rescale LiberationSans-BoldItalic.ttf to have the same\\n\u002F\u002F metrics as segoeuiz.ttf.\\nconst SegoeuiBoldItalicFactors = [\\n  1.76738, 1, 1, 0.98946, 1.03959, 1.04016, 1.02809, 1.036, 0.97639, 1.10953,\\n  1.23203, 1.11144, 1.11144, 1.16939, 1.21237, 0.9754, 1.21261, 0.9754, 1.59754,\\n  1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 0.81378,\\n  0.81378, 1.21237, 1.21237, 1.21237, 0.73541, 0.97847, 0.97363, 0.89723,\\n  0.87897, 1.0426, 0.79429, 0.85292, 0.91149, 1.05815, 1.1406, 0.79631, 0.90128,\\n  0.83853, 1.04396, 1.10615, 0.97552, 0.94436, 0.97552, 0.88641, 0.80527,\\n  0.96083, 1.00135, 1, 1.06777, 0.9817, 0.91142, 0.99361, 1.11144, 1.57293,\\n  1.11144, 1.21237, 0.74627, 1.31818, 1.06585, 0.97042, 0.83055, 0.97042,\\n  0.93503, 1.1261, 0.97042, 0.97922, 1.14236, 0.94552, 1.01054, 1.14236,\\n  1.02471, 0.97922, 0.94165, 0.97042, 0.97042, 1.0276, 0.78929, 1.1261, 0.97922,\\n  0.95874, 1.02197, 0.98507, 0.96752, 0.97168, 0.95107, 1.16579, 0.95107,\\n  1.21237, 1.03959, 1.036, 1.036, 1, 1.036, 1.16579, 0.87357, 1.31818, 1.18754,\\n  1.26781, 1.05356, 1.21237, 1.18622, 0.79487, 0.94994, 1.29004, 1.24047,\\n  1.24047, 1.31818, 1, 0.91484, 0.9754, 1.31818, 1.1349, 1.24866, 1.05356,\\n  1.13934, 1.15574, 1.17389, 0.73541, 0.97363, 0.97363, 0.97363, 0.97363,\\n  0.97363, 0.97363, 0.94385, 0.87897, 0.79429, 0.79429, 0.79429, 0.79429,\\n  1.1406, 1.1406, 1.1406, 1.1406, 1.0426, 1.10615, 0.97552, 0.97552, 0.97552,\\n  0.97552, 0.97552, 1.21237, 0.97552, 1.00135, 1.00135, 1.00135, 1.00135,\\n  0.91142, 0.94436, 0.98721, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585,\\n  1.06585, 0.96705, 0.83055, 0.93503, 0.93503, 0.93503, 0.93503, 1.14236,\\n  1.14236, 1.14236, 1.14236, 0.93125, 0.97922, 0.94165, 0.94165, 0.94165,\\n  0.94165, 0.94165, 1.29004, 0.94165, 0.97922, 0.97922, 0.97922, 0.97922,\\n  0.96752, 0.97042, 0.96752, 0.97363, 1.06585, 0.97363, 1.06585, 0.97363,\\n  1.06585, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897,\\n  0.83055, 1.0426, 1.0033, 1.0426, 0.97042, 0.79429, 0.93503, 0.79429, 0.93503,\\n  0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.91149, 0.97042,\\n  0.91149, 0.97042, 0.91149, 0.97042, 1, 1, 1.05815, 0.97922, 1.05815, 0.97922,\\n  1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406,\\n  1.14236, 0.97441, 1.04302, 0.79631, 1.01582, 1, 1, 1.01054, 0.83853, 1.14236,\\n  1, 1, 0.83853, 1.09125, 0.83853, 0.90418, 0.83853, 1.19508, 1.10615, 0.97922,\\n  1, 1, 1.10615, 0.97922, 1.01034, 1.10466, 0.97922, 0.97552, 0.94165, 0.97552,\\n  0.94165, 0.97552, 0.94165, 0.91602, 0.91981, 0.88641, 1.0276, 1, 1, 0.88641,\\n  1.0276, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527,\\n  0.78929, 1, 1, 0.96083, 1.05403, 0.95923, 1.16862, 1.00135, 0.97922, 1.00135,\\n  0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135,\\n  0.97922, 1.06777, 1.02197, 0.91142, 0.96752, 0.91142, 0.99361, 0.97168,\\n  0.99361, 0.97168, 0.99361, 0.97168, 1.23199, 1.036, 0.97363, 1.06585, 0.94385,\\n  0.96705, 0.97552, 0.94165, 1, 1, 0.96083, 1.1261, 1.31818, 1.31818, 1.31818,\\n  1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 0.95161, 1.27126,\\n  1.00811, 0.83284, 0.77702, 0.99137, 0.95253, 1.0347, 0.86142, 1.07205,\\n  1.14236, 0.97363, 0.89723, 0.86869, 1.09818, 0.79429, 0.99361, 1.05815,\\n  0.97552, 1.1406, 0.90128, 1.06662, 1.04396, 1.10615, 0.84918, 0.97552,\\n  1.04694, 0.94436, 0.98015, 0.96083, 0.91142, 1.00356, 0.9817, 1.01945,\\n  0.98999, 1.1406, 0.91142, 1.04961, 0.9898, 1.00639, 1.14236, 1.07514, 1.04961,\\n  0.99607, 1.02897, 1.008, 0.9898, 0.95134, 1.00639, 1.11121, 1.14236, 1.00518,\\n  0.97981, 1.02186, 1, 1.08578, 0.94165, 0.99314, 0.98387, 0.93028, 0.93377,\\n  1.35125, 1.07514, 1.10687, 0.93491, 1.04232, 1.00351, 1.14236, 1.07514,\\n  0.94165, 1.07514, 1.00351, 0.79429, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1.09097, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.93503, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 0.96609, 1, 1, 1, 1, 1, 1, 1.06777, 1.02197, 1.06777,\\n  1.02197, 1.06777, 1.02197, 0.91142, 0.96752, 1, 1.21261, 0.89903, 1, 1,\\n  0.75155, 1.04745, 1.04745, 1.04745, 1.04394, 0.98633, 0.98633, 0.98633,\\n  0.72959, 0.72959, 1.20502, 0.91406, 1.26514, 1.222, 1.02956, 1.03372, 1.03372,\\n  0.96039, 1.24633, 1, 1.09125, 0.93327, 1.03336, 1.16541, 1.036, 1, 1, 1,\\n  0.771, 1, 1, 1.15574, 1.15574, 1.15574, 1.15574, 0.86364, 0.94434, 0.86279,\\n  0.94434, 0.86224, 1, 1, 1.16798, 1, 0.96085, 0.90068, 1.21237, 1.18416,\\n  1.13904, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21339, 1.29004,\\n  1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025,\\n  1.18775, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886,\\n  1.04315, 1.15296, 1.34163, 1, 1, 1, 1.13269, 1.13269, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n];\\nconst SegoeuiBoldItalicMetrics = { lineHeight: 1.33008, lineGap: 0 };\\n\\n\u002F\u002F Factors to rescale LiberationSans-Italic.ttf to have the same\\n\u002F\u002F metrics as segoeuii.ttf.\\nconst SegoeuiItalicFactors = [\\n  1.76738, 1, 1, 0.98946, 1.14763, 1.05365, 1.06234, 0.96927, 0.92586, 1.15373,\\n  1.18414, 0.91349, 0.91349, 1.07403, 1.17308, 0.78383, 1.20088, 0.78383,\\n  1.42531, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927,\\n  0.96927, 0.96927, 0.96927, 0.78383, 0.78383, 1.17308, 1.17308, 1.17308,\\n  0.77349, 0.94565, 0.94729, 0.85944, 0.88506, 0.9858, 0.74817, 0.80016,\\n  0.88449, 0.98039, 0.95782, 0.69238, 0.89898, 0.83231, 0.98183, 1.03989,\\n  0.96924, 0.86237, 0.96924, 0.80595, 0.74524, 0.86091, 0.95402, 0.94143,\\n  0.98448, 0.8858, 0.83089, 0.93285, 1.0949, 1.39016, 1.0949, 1.45994, 0.74627,\\n  1.04839, 0.97454, 0.97454, 0.87207, 0.97454, 0.87533, 1.06151, 0.97454,\\n  1.00176, 1.16484, 1.08132, 0.98047, 1.16484, 1.02989, 1.01054, 0.96225,\\n  0.97454, 0.97454, 1.06598, 0.79004, 1.16344, 1.00351, 0.94629, 0.9973,\\n  0.91016, 0.96777, 0.9043, 0.91082, 0.92481, 0.91082, 1.17308, 0.95748,\\n  0.96927, 0.96927, 1, 0.96927, 0.92481, 0.80597, 1.04839, 1.23393, 1.1781,\\n  0.9245, 1.17308, 1.20808, 0.63218, 0.94261, 1.24822, 1.09971, 1.09971,\\n  1.04839, 1, 0.85273, 0.78032, 1.04839, 1.09971, 1.22326, 0.9245, 1.09836,\\n  1.13525, 1.15222, 0.70424, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729,\\n  0.94729, 0.85498, 0.88506, 0.74817, 0.74817, 0.74817, 0.74817, 0.95782,\\n  0.95782, 0.95782, 0.95782, 0.9858, 1.03989, 0.96924, 0.96924, 0.96924,\\n  0.96924, 0.96924, 1.17308, 0.96924, 0.95402, 0.95402, 0.95402, 0.95402,\\n  0.83089, 0.86237, 0.88409, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454,\\n  0.97454, 0.92916, 0.87207, 0.87533, 0.87533, 0.87533, 0.87533, 0.93146,\\n  0.93146, 0.93146, 0.93146, 0.93854, 1.01054, 0.96225, 0.96225, 0.96225,\\n  0.96225, 0.96225, 1.24822, 0.8761, 1.00351, 1.00351, 1.00351, 1.00351,\\n  0.96777, 0.97454, 0.96777, 0.94729, 0.97454, 0.94729, 0.97454, 0.94729,\\n  0.97454, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506,\\n  0.87207, 0.9858, 0.95391, 0.9858, 0.97454, 0.74817, 0.87533, 0.74817, 0.87533,\\n  0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.88449, 0.97454,\\n  0.88449, 0.97454, 0.88449, 0.97454, 1, 1, 0.98039, 1.00176, 0.98039, 1.00176,\\n  0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 1.16484,\\n  0.95782, 0.93146, 0.84421, 1.12761, 0.69238, 1.08132, 1, 1, 0.98047, 0.83231,\\n  1.16484, 1, 1, 0.84723, 1.04861, 0.84723, 0.78755, 0.83231, 1.23736, 1.03989,\\n  1.01054, 1, 1, 1.03989, 1.01054, 0.9857, 1.03849, 1.01054, 0.96924, 0.96225,\\n  0.96924, 0.96225, 0.96924, 0.96225, 0.92383, 0.90171, 0.80595, 1.06598, 1, 1,\\n  0.80595, 1.06598, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004,\\n  0.74524, 0.79004, 1, 1, 0.86091, 1.02759, 0.85771, 1.16344, 0.95402, 1.00351,\\n  0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351,\\n  0.95402, 1.00351, 0.98448, 0.9973, 0.83089, 0.96777, 0.83089, 0.93285, 0.9043,\\n  0.93285, 0.9043, 0.93285, 0.9043, 1.31868, 0.96927, 0.94729, 0.97454, 0.85498,\\n  0.92916, 0.96924, 0.8761, 1, 1, 0.86091, 1.16344, 1.04839, 1.04839, 1.04839,\\n  1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 0.81965, 0.81965,\\n  0.94729, 0.78032, 0.71022, 0.90883, 0.84171, 0.99877, 0.77596, 1.05734, 1.2,\\n  0.94729, 0.85944, 0.82791, 0.9607, 0.74817, 0.93285, 0.98039, 0.96924,\\n  0.95782, 0.89898, 0.98316, 0.98183, 1.03989, 0.78614, 0.96924, 0.97642,\\n  0.86237, 0.86075, 0.86091, 0.83089, 0.90082, 0.8858, 0.97296, 1.01284,\\n  0.95782, 0.83089, 1.0976, 1.04, 1.03342, 1.2, 1.0675, 1.0976, 0.98205,\\n  1.03809, 1.05097, 1.04, 0.95364, 1.03342, 1.05401, 1.2, 1.02148, 1.0119,\\n  1.04724, 1.0127, 1.02732, 0.96225, 0.8965, 0.97783, 0.93574, 0.94818, 1.30679,\\n  1.0675, 1.11826, 0.99821, 1.0557, 1.0326, 1.2, 1.0675, 0.96225, 1.0675,\\n  1.0326, 0.74817, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03754, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87533, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  0.98705, 1, 1, 1, 1, 1, 1, 0.98448, 0.9973, 0.98448, 0.9973, 0.98448, 0.9973,\\n  0.83089, 0.96777, 1, 1.20088, 0.89903, 1, 1, 0.75155, 0.94945, 0.94945,\\n  0.94945, 0.94945, 1.12317, 1.12317, 1.12317, 0.67603, 0.67603, 1.15621,\\n  0.73584, 1.21191, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1,\\n  1.07497, 0.87709, 0.96927, 1.01473, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.09836,\\n  1.09836, 1.09836, 1.01522, 0.86321, 0.94434, 0.8649, 0.94434, 0.86182, 1, 1,\\n  1.083, 1, 0.91578, 0.86438, 1.17308, 1.18416, 1.14589, 0.69825, 0.97622,\\n  1.96791, 1.24822, 1.24822, 1.17308, 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862,\\n  0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.17984, 1.42603, 1, 1.42603,\\n  1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1,\\n  1.10742, 1.10742, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n];\\nconst SegoeuiItalicMetrics = { lineHeight: 1.33008, lineGap: 0 };\\n\\n\u002F\u002F Factors to rescale LiberationSans-Regular.ttf to have the same\\n\u002F\u002F metrics as segoeui.ttf.\\nconst SegoeuiRegularFactors = [\\n  1.76738, 1, 1, 0.98594, 1.02285, 1.10454, 1.06234, 0.96927, 0.92037, 1.19985,\\n  1.2046, 0.90616, 0.90616, 1.07152, 1.1714, 0.78032, 1.20088, 0.78032, 1.40246,\\n  0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927,\\n  0.96927, 0.96927, 0.78032, 0.78032, 1.1714, 1.1714, 1.1714, 0.80597, 0.94084,\\n  0.96706, 0.85944, 0.85734, 0.97093, 0.75842, 0.79936, 0.88198, 0.9831,\\n  0.95782, 0.71387, 0.86969, 0.84636, 1.07796, 1.03584, 0.96924, 0.83968,\\n  0.96924, 0.82826, 0.79649, 0.85771, 0.95132, 0.93119, 0.98965, 0.88433,\\n  0.8287, 0.93365, 1.08612, 1.3638, 1.08612, 1.45786, 0.74627, 0.80499, 0.91484,\\n  1.05707, 0.92383, 1.05882, 0.9403, 1.12654, 1.05882, 1.01756, 1.09011,\\n  1.09011, 0.99414, 1.09011, 1.034, 1.01756, 1.05356, 1.05707, 1.05882, 1.04399,\\n  0.84863, 1.21968, 1.01756, 0.95801, 1.00068, 0.91797, 0.96777, 0.9043,\\n  0.90351, 0.92105, 0.90351, 1.1714, 0.85337, 0.96927, 0.96927, 0.99912,\\n  0.96927, 0.92105, 0.80597, 1.2434, 1.20808, 1.05937, 0.90957, 1.1714, 1.20808,\\n  0.75155, 0.94261, 1.24644, 1.09971, 1.09971, 0.84751, 1, 0.85273, 0.78032,\\n  0.61584, 1.05425, 1.17914, 0.90957, 1.08665, 1.11593, 1.14169, 0.73381,\\n  0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.86035, 0.85734,\\n  0.75842, 0.75842, 0.75842, 0.75842, 0.95782, 0.95782, 0.95782, 0.95782,\\n  0.97093, 1.03584, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.1714,\\n  0.96924, 0.95132, 0.95132, 0.95132, 0.95132, 0.8287, 0.83968, 0.89049,\\n  0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.93575, 0.92383,\\n  0.9403, 0.9403, 0.9403, 0.9403, 0.8717, 0.8717, 0.8717, 0.8717, 1.00527,\\n  1.01756, 1.05356, 1.05356, 1.05356, 1.05356, 1.05356, 1.24644, 0.95923,\\n  1.01756, 1.01756, 1.01756, 1.01756, 0.96777, 1.05707, 0.96777, 0.96706,\\n  0.91484, 0.96706, 0.91484, 0.96706, 0.91484, 0.85734, 0.92383, 0.85734,\\n  0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.97093, 1.0969, 0.97093,\\n  1.05882, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403,\\n  0.75842, 0.9403, 0.88198, 1.05882, 0.88198, 1.05882, 0.88198, 1.05882, 1, 1,\\n  0.9831, 1.01756, 0.9831, 1.01756, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782,\\n  0.8717, 0.95782, 1.09011, 0.95782, 0.8717, 0.84784, 1.11551, 0.71387, 1.09011,\\n  1, 1, 0.99414, 0.84636, 1.09011, 1, 1, 0.84636, 1.0536, 0.84636, 0.94298,\\n  0.84636, 1.23297, 1.03584, 1.01756, 1, 1, 1.03584, 1.01756, 1.00323, 1.03444,\\n  1.01756, 0.96924, 1.05356, 0.96924, 1.05356, 0.96924, 1.05356, 0.93066,\\n  0.98293, 0.82826, 1.04399, 1, 1, 0.82826, 1.04399, 0.79649, 0.84863, 0.79649,\\n  0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 1, 1, 0.85771, 1.17318, 0.85771,\\n  1.21968, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132,\\n  1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.98965, 1.00068, 0.8287,\\n  0.96777, 0.8287, 0.93365, 0.9043, 0.93365, 0.9043, 0.93365, 0.9043, 1.08571,\\n  0.96927, 0.96706, 0.91484, 0.86035, 0.93575, 0.96924, 0.95923, 1, 1, 0.85771,\\n  1.21968, 1.11437, 1.11437, 0.93109, 0.91202, 0.60411, 0.84164, 0.55572,\\n  1.01173, 0.97361, 0.81818, 0.81818, 0.96635, 0.78032, 0.72727, 0.92366,\\n  0.98601, 1.03405, 0.77968, 1.09799, 1.2, 0.96706, 0.85944, 0.85638, 0.96491,\\n  0.75842, 0.93365, 0.9831, 0.96924, 0.95782, 0.86969, 0.94152, 1.07796,\\n  1.03584, 0.78437, 0.96924, 0.98715, 0.83968, 0.83491, 0.85771, 0.8287,\\n  0.94492, 0.88433, 0.9287, 1.0098, 0.95782, 0.8287, 1.0625, 0.98248, 1.03424,\\n  1.2, 1.01071, 1.0625, 0.95246, 1.03809, 1.04912, 0.98248, 1.00221, 1.03424,\\n  1.05443, 1.2, 1.04785, 0.99609, 1.00169, 1.05176, 0.99346, 1.05356, 0.9087,\\n  1.03004, 0.95542, 0.93117, 1.23362, 1.01071, 1.07831, 1.02512, 1.05205,\\n  1.03502, 1.2, 1.01071, 1.05356, 1.01071, 1.03502, 0.75842, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1.03719, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9403,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04021, 1, 1, 1, 1, 1, 1, 0.98965,\\n  1.00068, 0.98965, 1.00068, 0.98965, 1.00068, 0.8287, 0.96777, 1, 1.20088,\\n  0.89903, 1, 1, 0.75155, 1.03077, 1.03077, 1.03077, 1.03077, 1.13196, 1.13196,\\n  1.13196, 0.67428, 0.67428, 1.16039, 0.73291, 1.20996, 1.22135, 1.06483,\\n  0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87796, 0.96927, 1.01518,\\n  0.96927, 1, 1, 1, 0.77295, 1, 1, 1.10539, 1.10539, 1.11358, 1.06967, 0.86279,\\n  0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86507, 1.1714,\\n  1.18416, 1.14589, 0.69825, 0.97622, 1.9697, 1.24822, 1.24822, 1.17238,\\n  1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n  1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025,\\n  0.87025, 1.18083, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1,\\n  1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10938, 1.10938, 1, 1, 1,\\n  1.05425, 1.09971, 1.09971, 1.09971, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\\n];\\nconst SegoeuiRegularMetrics = { lineHeight: 1.33008, lineGap: 0 };\\n\\nexport {\\n  SegoeuiBoldFactors,\\n  SegoeuiBoldItalicFactors,\\n  SegoeuiBoldItalicMetrics,\\n  SegoeuiBoldMetrics,\\n  SegoeuiItalicFactors,\\n  SegoeuiItalicMetrics,\\n  SegoeuiRegularFactors,\\n  SegoeuiRegularMetrics,\\n};\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  CalibriBoldFactors,\\n  CalibriBoldItalicFactors,\\n  CalibriBoldItalicMetrics,\\n  CalibriBoldMetrics,\\n  CalibriItalicFactors,\\n  CalibriItalicMetrics,\\n  CalibriRegularFactors,\\n  CalibriRegularMetrics,\\n} from \\\".\u002Fcalibri_factors.js\\\";\\nimport { Dict, Name } from \\\".\u002Fprimitives.js\\\";\\nimport {\\n  HelveticaBoldFactors,\\n  HelveticaBoldItalicFactors,\\n  HelveticaBoldItalicMetrics,\\n  HelveticaBoldMetrics,\\n  HelveticaItalicFactors,\\n  HelveticaItalicMetrics,\\n  HelveticaRegularFactors,\\n  HelveticaRegularMetrics,\\n} from \\\".\u002Fhelvetica_factors.js\\\";\\nimport {\\n  LiberationSansBoldItalicMapping,\\n  LiberationSansBoldItalicWidths,\\n  LiberationSansBoldMapping,\\n  LiberationSansBoldWidths,\\n  LiberationSansItalicMapping,\\n  LiberationSansItalicWidths,\\n  LiberationSansRegularMapping,\\n  LiberationSansRegularWidths,\\n} from \\\".\u002Fliberationsans_widths.js\\\";\\nimport {\\n  MyriadProBoldFactors,\\n  MyriadProBoldItalicFactors,\\n  MyriadProBoldItalicMetrics,\\n  MyriadProBoldMetrics,\\n  MyriadProItalicFactors,\\n  MyriadProItalicMetrics,\\n  MyriadProRegularFactors,\\n  MyriadProRegularMetrics,\\n} from \\\".\u002Fmyriadpro_factors.js\\\";\\nimport {\\n  SegoeuiBoldFactors,\\n  SegoeuiBoldItalicFactors,\\n  SegoeuiBoldItalicMetrics,\\n  SegoeuiBoldMetrics,\\n  SegoeuiItalicFactors,\\n  SegoeuiItalicMetrics,\\n  SegoeuiRegularFactors,\\n  SegoeuiRegularMetrics,\\n} from \\\".\u002Fsegoeui_factors.js\\\";\\nimport { getLookupTableFactory } from \\\".\u002Fcore_utils.js\\\";\\nimport { normalizeFontName } from \\\".\u002Ffonts_utils.js\\\";\\n\\nconst getXFAFontMap = getLookupTableFactory(function (t) {\\n  t[\\\"MyriadPro-Regular\\\"] = t[\\\"PdfJS-Fallback-Regular\\\"] = {\\n    name: \\\"LiberationSans-Regular\\\",\\n    factors: MyriadProRegularFactors,\\n    baseWidths: LiberationSansRegularWidths,\\n    baseMapping: LiberationSansRegularMapping,\\n    metrics: MyriadProRegularMetrics,\\n  };\\n  t[\\\"MyriadPro-Bold\\\"] = t[\\\"PdfJS-Fallback-Bold\\\"] = {\\n    name: \\\"LiberationSans-Bold\\\",\\n    factors: MyriadProBoldFactors,\\n    baseWidths: LiberationSansBoldWidths,\\n    baseMapping: LiberationSansBoldMapping,\\n    metrics: MyriadProBoldMetrics,\\n  };\\n  t[\\\"MyriadPro-It\\\"] =\\n    t[\\\"MyriadPro-Italic\\\"] =\\n    t[\\\"PdfJS-Fallback-Italic\\\"] =\\n      {\\n        name: \\\"LiberationSans-Italic\\\",\\n        factors: MyriadProItalicFactors,\\n        baseWidths: LiberationSansItalicWidths,\\n        baseMapping: LiberationSansItalicMapping,\\n        metrics: MyriadProItalicMetrics,\\n      };\\n  t[\\\"MyriadPro-BoldIt\\\"] =\\n    t[\\\"MyriadPro-BoldItalic\\\"] =\\n    t[\\\"PdfJS-Fallback-BoldItalic\\\"] =\\n      {\\n        name: \\\"LiberationSans-BoldItalic\\\",\\n        factors: MyriadProBoldItalicFactors,\\n        baseWidths: LiberationSansBoldItalicWidths,\\n        baseMapping: LiberationSansBoldItalicMapping,\\n        metrics: MyriadProBoldItalicMetrics,\\n      };\\n  t.ArialMT =\\n    t.Arial =\\n    t[\\\"Arial-Regular\\\"] =\\n      {\\n        name: \\\"LiberationSans-Regular\\\",\\n        baseWidths: LiberationSansRegularWidths,\\n        baseMapping: LiberationSansRegularMapping,\\n      };\\n  t[\\\"Arial-BoldMT\\\"] = t[\\\"Arial-Bold\\\"] = {\\n    name: \\\"LiberationSans-Bold\\\",\\n    baseWidths: LiberationSansBoldWidths,\\n    baseMapping: LiberationSansBoldMapping,\\n  };\\n  t[\\\"Arial-ItalicMT\\\"] = t[\\\"Arial-Italic\\\"] = {\\n    name: \\\"LiberationSans-Italic\\\",\\n    baseWidths: LiberationSansItalicWidths,\\n    baseMapping: LiberationSansItalicMapping,\\n  };\\n  t[\\\"Arial-BoldItalicMT\\\"] = t[\\\"Arial-BoldItalic\\\"] = {\\n    name: \\\"LiberationSans-BoldItalic\\\",\\n    baseWidths: LiberationSansBoldItalicWidths,\\n    baseMapping: LiberationSansBoldItalicMapping,\\n  };\\n  t[\\\"Calibri-Regular\\\"] = {\\n    name: \\\"LiberationSans-Regular\\\",\\n    factors: CalibriRegularFactors,\\n    baseWidths: LiberationSansRegularWidths,\\n    baseMapping: LiberationSansRegularMapping,\\n    metrics: CalibriRegularMetrics,\\n  };\\n  t[\\\"Calibri-Bold\\\"] = {\\n    name: \\\"LiberationSans-Bold\\\",\\n    factors: CalibriBoldFactors,\\n    baseWidths: LiberationSansBoldWidths,\\n    baseMapping: LiberationSansBoldMapping,\\n    metrics: CalibriBoldMetrics,\\n  };\\n  t[\\\"Calibri-Italic\\\"] = {\\n    name: \\\"LiberationSans-Italic\\\",\\n    factors: CalibriItalicFactors,\\n    baseWidths: LiberationSansItalicWidths,\\n    baseMapping: LiberationSansItalicMapping,\\n    metrics: CalibriItalicMetrics,\\n  };\\n  t[\\\"Calibri-BoldItalic\\\"] = {\\n    name: \\\"LiberationSans-BoldItalic\\\",\\n    factors: CalibriBoldItalicFactors,\\n    baseWidths: LiberationSansBoldItalicWidths,\\n    baseMapping: LiberationSansBoldItalicMapping,\\n    metrics: CalibriBoldItalicMetrics,\\n  };\\n  t[\\\"Segoeui-Regular\\\"] = {\\n    name: \\\"LiberationSans-Regular\\\",\\n    factors: SegoeuiRegularFactors,\\n    baseWidths: LiberationSansRegularWidths,\\n    baseMapping: LiberationSansRegularMapping,\\n    metrics: SegoeuiRegularMetrics,\\n  };\\n  t[\\\"Segoeui-Bold\\\"] = {\\n    name: \\\"LiberationSans-Bold\\\",\\n    factors: SegoeuiBoldFactors,\\n    baseWidths: LiberationSansBoldWidths,\\n    baseMapping: LiberationSansBoldMapping,\\n    metrics: SegoeuiBoldMetrics,\\n  };\\n  t[\\\"Segoeui-Italic\\\"] = {\\n    name: \\\"LiberationSans-Italic\\\",\\n    factors: SegoeuiItalicFactors,\\n    baseWidths: LiberationSansItalicWidths,\\n    baseMapping: LiberationSansItalicMapping,\\n    metrics: SegoeuiItalicMetrics,\\n  };\\n  t[\\\"Segoeui-BoldItalic\\\"] = {\\n    name: \\\"LiberationSans-BoldItalic\\\",\\n    factors: SegoeuiBoldItalicFactors,\\n    baseWidths: LiberationSansBoldItalicWidths,\\n    baseMapping: LiberationSansBoldItalicMapping,\\n    metrics: SegoeuiBoldItalicMetrics,\\n  };\\n  t[\\\"Helvetica-Regular\\\"] = t.Helvetica = {\\n    name: \\\"LiberationSans-Regular\\\",\\n    factors: HelveticaRegularFactors,\\n    baseWidths: LiberationSansRegularWidths,\\n    baseMapping: LiberationSansRegularMapping,\\n    metrics: HelveticaRegularMetrics,\\n  };\\n  t[\\\"Helvetica-Bold\\\"] = {\\n    name: \\\"LiberationSans-Bold\\\",\\n    factors: HelveticaBoldFactors,\\n    baseWidths: LiberationSansBoldWidths,\\n    baseMapping: LiberationSansBoldMapping,\\n    metrics: HelveticaBoldMetrics,\\n  };\\n  t[\\\"Helvetica-Italic\\\"] = {\\n    name: \\\"LiberationSans-Italic\\\",\\n    factors: HelveticaItalicFactors,\\n    baseWidths: LiberationSansItalicWidths,\\n    baseMapping: LiberationSansItalicMapping,\\n    metrics: HelveticaItalicMetrics,\\n  };\\n  t[\\\"Helvetica-BoldItalic\\\"] = {\\n    name: \\\"LiberationSans-BoldItalic\\\",\\n    factors: HelveticaBoldItalicFactors,\\n    baseWidths: LiberationSansBoldItalicWidths,\\n    baseMapping: LiberationSansBoldItalicMapping,\\n    metrics: HelveticaBoldItalicMetrics,\\n  };\\n});\\n\\nfunction getXfaFontName(name) {\\n  const fontName = normalizeFontName(name);\\n  const fontMap = getXFAFontMap();\\n  return fontMap[fontName];\\n}\\n\\nfunction getXfaFontWidths(name) {\\n  const info = getXfaFontName(name);\\n  if (!info) {\\n    return null;\\n  }\\n\\n  const { baseWidths, baseMapping, factors } = info;\\n  const rescaledBaseWidths = !factors\\n    ? baseWidths\\n    : baseWidths.map((w, i) => w * factors[i]);\\n\\n  let currentCode = -2;\\n  let currentArray;\\n\\n  \u002F\u002F Widths array for composite font is:\\n  \u002F\u002F CharCode1 [10, 20, 30] ...\\n  \u002F\u002F which means:\\n  \u002F\u002F   - CharCode1 has a width equal to 10\\n  \u002F\u002F   - CharCode1+1 has a width equal to 20\\n  \u002F\u002F   - CharCode1+2 has a width equal to 30\\n  \u002F\u002F\\n  \u002F\u002F The baseMapping array contains a map for glyph index to unicode.\\n  \u002F\u002F So from baseMapping we'll get sorted unicodes and their positions\\n  \u002F\u002F (i.e. glyph indices) and then we put widths in an array for the\\n  \u002F\u002F the consecutive unicodes.\\n  const newWidths = [];\\n  for (const [unicode, glyphIndex] of baseMapping\\n    .map(\\n      (charUnicode, index) => [\\n        charUnicode,\\n        index,\\n      ] \u002F* collect unicode and glyph index *\u002F\\n    )\\n    .sort(\\n      ([unicode1], [unicode2]) =>\\n        unicode1 - unicode2 \u002F* order by unicode only *\u002F\\n    )) {\\n    if (unicode === -1) {\\n      continue;\\n    }\\n\\n    if (unicode === currentCode + 1) {\\n      currentArray.push(rescaledBaseWidths[glyphIndex]);\\n      currentCode += 1;\\n    } else {\\n      currentCode = unicode;\\n      currentArray = [rescaledBaseWidths[glyphIndex]];\\n      newWidths.push(unicode, currentArray);\\n    }\\n  }\\n\\n  return newWidths;\\n}\\n\\nfunction getXfaFontDict(name) {\\n  const widths = getXfaFontWidths(name);\\n  const dict = new Dict(null);\\n  dict.set(\\\"BaseFont\\\", Name.get(name));\\n  dict.set(\\\"Type\\\", Name.get(\\\"Font\\\"));\\n  dict.set(\\\"Subtype\\\", Name.get(\\\"CIDFontType2\\\"));\\n  dict.set(\\\"Encoding\\\", Name.get(\\\"Identity-H\\\"));\\n  dict.set(\\\"CIDToGIDMap\\\", Name.get(\\\"Identity\\\"));\\n  dict.set(\\\"W\\\", widths);\\n  dict.set(\\\"FirstChar\\\", widths[0]);\\n  dict.set(\\\"LastChar\\\", widths.at(-2) + widths.at(-1).length - 1);\\n  const descriptor = new Dict(null);\\n  dict.set(\\\"FontDescriptor\\\", descriptor);\\n  const systemInfo = new Dict(null);\\n  systemInfo.set(\\\"Ordering\\\", \\\"Identity\\\");\\n  systemInfo.set(\\\"Registry\\\", \\\"Adobe\\\");\\n  systemInfo.set(\\\"Supplement\\\", 0);\\n  dict.set(\\\"CIDSystemInfo\\\", systemInfo);\\n\\n  return dict;\\n}\\n\\nexport { getXfaFontDict, getXfaFontName };\\n\",\"\u002F* Copyright 2014 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { FormatError, shadow } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { EOF } from \\\".\u002Fprimitives.js\\\";\\nimport { isWhiteSpace } from \\\".\u002Fcore_utils.js\\\";\\n\\nclass PostScriptParser {\\n  constructor(lexer) {\\n    this.lexer = lexer;\\n    this.operators = [];\\n    this.token = null;\\n    this.prev = null;\\n  }\\n\\n  nextToken() {\\n    this.prev = this.token;\\n    this.token = this.lexer.getToken();\\n  }\\n\\n  accept(type) {\\n    if (this.token.type === type) {\\n      this.nextToken();\\n      return true;\\n    }\\n    return false;\\n  }\\n\\n  expect(type) {\\n    if (this.accept(type)) {\\n      return true;\\n    }\\n    throw new FormatError(\\n      `Unexpected symbol: found ${this.token.type} expected ${type}.`\\n    );\\n  }\\n\\n  parse() {\\n    this.nextToken();\\n    this.expect(PostScriptTokenTypes.LBRACE);\\n    this.parseBlock();\\n    this.expect(PostScriptTokenTypes.RBRACE);\\n    return this.operators;\\n  }\\n\\n  parseBlock() {\\n    while (true) {\\n      if (this.accept(PostScriptTokenTypes.NUMBER)) {\\n        this.operators.push(this.prev.value);\\n      } else if (this.accept(PostScriptTokenTypes.OPERATOR)) {\\n        this.operators.push(this.prev.value);\\n      } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\\n        this.parseCondition();\\n      } else {\\n        return;\\n      }\\n    }\\n  }\\n\\n  parseCondition() {\\n    \u002F\u002F Add two place holders that will be updated later\\n    const conditionLocation = this.operators.length;\\n    this.operators.push(null, null);\\n\\n    this.parseBlock();\\n    this.expect(PostScriptTokenTypes.RBRACE);\\n    if (this.accept(PostScriptTokenTypes.IF)) {\\n      \u002F\u002F The true block is right after the 'if' so it just falls through on true\\n      \u002F\u002F else it jumps and skips the true block.\\n      this.operators[conditionLocation] = this.operators.length;\\n      this.operators[conditionLocation + 1] = \\\"jz\\\";\\n    } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\\n      const jumpLocation = this.operators.length;\\n      this.operators.push(null, null);\\n      const endOfTrue = this.operators.length;\\n      this.parseBlock();\\n      this.expect(PostScriptTokenTypes.RBRACE);\\n      this.expect(PostScriptTokenTypes.IFELSE);\\n      \u002F\u002F The jump is added at the end of the true block to skip the false block.\\n      this.operators[jumpLocation] = this.operators.length;\\n      this.operators[jumpLocation + 1] = \\\"j\\\";\\n\\n      this.operators[conditionLocation] = endOfTrue;\\n      this.operators[conditionLocation + 1] = \\\"jz\\\";\\n    } else {\\n      throw new FormatError(\\\"PS Function: error parsing conditional.\\\");\\n    }\\n  }\\n}\\n\\nconst PostScriptTokenTypes = {\\n  LBRACE: 0,\\n  RBRACE: 1,\\n  NUMBER: 2,\\n  OPERATOR: 3,\\n  IF: 4,\\n  IFELSE: 5,\\n};\\n\\nclass PostScriptToken {\\n  static get opCache() {\\n    return shadow(this, \\\"opCache\\\", Object.create(null));\\n  }\\n\\n  constructor(type, value) {\\n    this.type = type;\\n    this.value = value;\\n  }\\n\\n  static getOperator(op) {\\n    return (PostScriptToken.opCache[op] ||= new PostScriptToken(\\n      PostScriptTokenTypes.OPERATOR,\\n      op\\n    ));\\n  }\\n\\n  static get LBRACE() {\\n    return shadow(\\n      this,\\n      \\\"LBRACE\\\",\\n      new PostScriptToken(PostScriptTokenTypes.LBRACE, \\\"{\\\")\\n    );\\n  }\\n\\n  static get RBRACE() {\\n    return shadow(\\n      this,\\n      \\\"RBRACE\\\",\\n      new PostScriptToken(PostScriptTokenTypes.RBRACE, \\\"}\\\")\\n    );\\n  }\\n\\n  static get IF() {\\n    return shadow(\\n      this,\\n      \\\"IF\\\",\\n      new PostScriptToken(PostScriptTokenTypes.IF, \\\"IF\\\")\\n    );\\n  }\\n\\n  static get IFELSE() {\\n    return shadow(\\n      this,\\n      \\\"IFELSE\\\",\\n      new PostScriptToken(PostScriptTokenTypes.IFELSE, \\\"IFELSE\\\")\\n    );\\n  }\\n}\\n\\nclass PostScriptLexer {\\n  constructor(stream) {\\n    this.stream = stream;\\n    this.nextChar();\\n\\n    this.strBuf = [];\\n  }\\n\\n  nextChar() {\\n    return (this.currentChar = this.stream.getByte());\\n  }\\n\\n  getToken() {\\n    let comment = false;\\n    let ch = this.currentChar;\\n\\n    \u002F\u002F skip comments\\n    while (true) {\\n      if (ch \u003C 0) {\\n        return EOF;\\n      }\\n\\n      if (comment) {\\n        if (ch === 0x0a || ch === 0x0d) {\\n          comment = false;\\n        }\\n      } else if (ch === \u002F* '%' = *\u002F 0x25) {\\n        comment = true;\\n      } else if (!isWhiteSpace(ch)) {\\n        break;\\n      }\\n      ch = this.nextChar();\\n    }\\n    switch (ch | 0) {\\n      case 0x30: \u002F\u002F '0'\\n      case 0x31: \u002F\u002F '1'\\n      case 0x32: \u002F\u002F '2'\\n      case 0x33: \u002F\u002F '3'\\n      case 0x34: \u002F\u002F '4'\\n      case 0x35: \u002F\u002F '5'\\n      case 0x36: \u002F\u002F '6'\\n      case 0x37: \u002F\u002F '7'\\n      case 0x38: \u002F\u002F '8'\\n      case 0x39: \u002F\u002F '9'\\n      case 0x2b: \u002F\u002F '+'\\n      case 0x2d: \u002F\u002F '-'\\n      case 0x2e: \u002F\u002F '.'\\n        return new PostScriptToken(\\n          PostScriptTokenTypes.NUMBER,\\n          this.getNumber()\\n        );\\n      case 0x7b: \u002F\u002F '{'\\n        this.nextChar();\\n        return PostScriptToken.LBRACE;\\n      case 0x7d: \u002F\u002F '}'\\n        this.nextChar();\\n        return PostScriptToken.RBRACE;\\n    }\\n    \u002F\u002F operator\\n    const strBuf = this.strBuf;\\n    strBuf.length = 0;\\n    strBuf[0] = String.fromCharCode(ch);\\n\\n    while (\\n      (ch = this.nextChar()) >= 0 &&\\n      ((ch >= \u002F* 'A' = *\u002F 0x41 && ch \u003C= \u002F* 'Z' = *\u002F 0x5a) ||\\n        (ch >= \u002F* 'a' = *\u002F 0x61 && ch \u003C= \u002F* 'z' = *\u002F 0x7a))\\n    ) {\\n      strBuf.push(String.fromCharCode(ch));\\n    }\\n    const str = strBuf.join(\\\"\\\");\\n    switch (str.toLowerCase()) {\\n      case \\\"if\\\":\\n        return PostScriptToken.IF;\\n      case \\\"ifelse\\\":\\n        return PostScriptToken.IFELSE;\\n      default:\\n        return PostScriptToken.getOperator(str);\\n    }\\n  }\\n\\n  getNumber() {\\n    let ch = this.currentChar;\\n    const strBuf = this.strBuf;\\n    strBuf.length = 0;\\n    strBuf[0] = String.fromCharCode(ch);\\n\\n    while ((ch = this.nextChar()) >= 0) {\\n      if (\\n        (ch >= \u002F* '0' = *\u002F 0x30 && ch \u003C= \u002F* '9' = *\u002F 0x39) ||\\n        ch === \u002F* '-' = *\u002F 0x2d ||\\n        ch === \u002F* '.' = *\u002F 0x2e\\n      ) {\\n        strBuf.push(String.fromCharCode(ch));\\n      } else {\\n        break;\\n      }\\n    }\\n    const value = parseFloat(strBuf.join(\\\"\\\"));\\n    if (isNaN(value)) {\\n      throw new FormatError(`Invalid floating point number: ${value}`);\\n    }\\n    return value;\\n  }\\n}\\n\\nexport { PostScriptLexer, PostScriptParser };\\n\",\"\u002F* Copyright 2019 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { assert, unreachable, warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { RefSet, RefSetCache } from \\\".\u002Fprimitives.js\\\";\\n\\nclass BaseLocalCache {\\n  constructor(options) {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      this.constructor === BaseLocalCache\\n    ) {\\n      unreachable(\\\"Cannot initialize BaseLocalCache.\\\");\\n    }\\n    this._onlyRefs = options?.onlyRefs === true;\\n\\n    if (!this._onlyRefs) {\\n      this._nameRefMap = new Map();\\n      this._imageMap = new Map();\\n    }\\n    this._imageCache = new RefSetCache();\\n  }\\n\\n  getByName(name) {\\n    if (this._onlyRefs) {\\n      unreachable(\\\"Should not call `getByName` method.\\\");\\n    }\\n    const ref = this._nameRefMap.get(name);\\n    if (ref) {\\n      return this.getByRef(ref);\\n    }\\n    return this._imageMap.get(name) || null;\\n  }\\n\\n  getByRef(ref) {\\n    return this._imageCache.get(ref) || null;\\n  }\\n\\n  set(name, ref, data) {\\n    unreachable(\\\"Abstract method `set` called.\\\");\\n  }\\n}\\n\\nclass LocalImageCache extends BaseLocalCache {\\n  set(name, ref = null, data) {\\n    if (typeof name !== \\\"string\\\") {\\n      throw new Error('LocalImageCache.set - expected \\\"name\\\" argument.');\\n    }\\n    if (ref) {\\n      if (this._imageCache.has(ref)) {\\n        return;\\n      }\\n      this._nameRefMap.set(name, ref);\\n      this._imageCache.put(ref, data);\\n      return;\\n    }\\n    \u002F\u002F name\\n    if (this._imageMap.has(name)) {\\n      return;\\n    }\\n    this._imageMap.set(name, data);\\n  }\\n}\\n\\nclass LocalColorSpaceCache extends BaseLocalCache {\\n  set(name = null, ref = null, data) {\\n    if (typeof name !== \\\"string\\\" && !ref) {\\n      throw new Error(\\n        'LocalColorSpaceCache.set - expected \\\"name\\\" and\u002For \\\"ref\\\" argument.'\\n      );\\n    }\\n    if (ref) {\\n      if (this._imageCache.has(ref)) {\\n        return;\\n      }\\n      if (name !== null) {\\n        \u002F\u002F Optional when `ref` is defined.\\n        this._nameRefMap.set(name, ref);\\n      }\\n      this._imageCache.put(ref, data);\\n      return;\\n    }\\n    \u002F\u002F name\\n    if (this._imageMap.has(name)) {\\n      return;\\n    }\\n    this._imageMap.set(name, data);\\n  }\\n}\\n\\nclass LocalFunctionCache extends BaseLocalCache {\\n  constructor(options) {\\n    super({ onlyRefs: true });\\n  }\\n\\n  set(name = null, ref, data) {\\n    if (!ref) {\\n      throw new Error('LocalFunctionCache.set - expected \\\"ref\\\" argument.');\\n    }\\n    if (this._imageCache.has(ref)) {\\n      return;\\n    }\\n    this._imageCache.put(ref, data);\\n  }\\n}\\n\\nclass LocalGStateCache extends BaseLocalCache {\\n  set(name, ref = null, data) {\\n    if (typeof name !== \\\"string\\\") {\\n      throw new Error('LocalGStateCache.set - expected \\\"name\\\" argument.');\\n    }\\n    if (ref) {\\n      if (this._imageCache.has(ref)) {\\n        return;\\n      }\\n      this._nameRefMap.set(name, ref);\\n      this._imageCache.put(ref, data);\\n      return;\\n    }\\n    \u002F\u002F name\\n    if (this._imageMap.has(name)) {\\n      return;\\n    }\\n    this._imageMap.set(name, data);\\n  }\\n}\\n\\nclass LocalTilingPatternCache extends BaseLocalCache {\\n  constructor(options) {\\n    super({ onlyRefs: true });\\n  }\\n\\n  set(name = null, ref, data) {\\n    if (!ref) {\\n      throw new Error('LocalTilingPatternCache.set - expected \\\"ref\\\" argument.');\\n    }\\n    if (this._imageCache.has(ref)) {\\n      return;\\n    }\\n    this._imageCache.put(ref, data);\\n  }\\n}\\n\\nclass RegionalImageCache extends BaseLocalCache {\\n  constructor(options) {\\n    super({ onlyRefs: true });\\n  }\\n\\n  set(name = null, ref, data) {\\n    if (!ref) {\\n      throw new Error('RegionalImageCache.set - expected \\\"ref\\\" argument.');\\n    }\\n    if (this._imageCache.has(ref)) {\\n      return;\\n    }\\n    this._imageCache.put(ref, data);\\n  }\\n}\\n\\nclass GlobalColorSpaceCache extends BaseLocalCache {\\n  constructor(options) {\\n    super({ onlyRefs: true });\\n  }\\n\\n  set(name = null, ref, data) {\\n    if (!ref) {\\n      throw new Error('GlobalColorSpaceCache.set - expected \\\"ref\\\" argument.');\\n    }\\n    if (this._imageCache.has(ref)) {\\n      return;\\n    }\\n    this._imageCache.put(ref, data);\\n  }\\n\\n  clear() {\\n    this._imageCache.clear();\\n  }\\n}\\n\\nclass GlobalImageCache {\\n  static NUM_PAGES_THRESHOLD = 2;\\n\\n  static MIN_IMAGES_TO_CACHE = 10;\\n\\n  static MAX_BYTE_SIZE = 5e7; \u002F\u002F Fifty megabytes.\\n\\n  #decodeFailedSet = new RefSet();\\n\\n  constructor() {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        GlobalImageCache.NUM_PAGES_THRESHOLD > 1,\\n        \\\"GlobalImageCache - invalid NUM_PAGES_THRESHOLD constant.\\\"\\n      );\\n    }\\n    this._refCache = new RefSetCache();\\n    this._imageCache = new RefSetCache();\\n  }\\n\\n  get #byteSize() {\\n    let byteSize = 0;\\n    for (const imageData of this._imageCache) {\\n      byteSize += imageData.byteSize;\\n    }\\n    return byteSize;\\n  }\\n\\n  get #cacheLimitReached() {\\n    if (this._imageCache.size \u003C GlobalImageCache.MIN_IMAGES_TO_CACHE) {\\n      return false;\\n    }\\n    if (this.#byteSize \u003C GlobalImageCache.MAX_BYTE_SIZE) {\\n      return false;\\n    }\\n    return true;\\n  }\\n\\n  shouldCache(ref, pageIndex) {\\n    let pageIndexSet = this._refCache.get(ref);\\n    if (!pageIndexSet) {\\n      pageIndexSet = new Set();\\n      this._refCache.put(ref, pageIndexSet);\\n    }\\n    pageIndexSet.add(pageIndex);\\n\\n    if (pageIndexSet.size \u003C GlobalImageCache.NUM_PAGES_THRESHOLD) {\\n      return false;\\n    }\\n    if (!this._imageCache.has(ref) && this.#cacheLimitReached) {\\n      return false;\\n    }\\n    return true;\\n  }\\n\\n  addDecodeFailed(ref) {\\n    this.#decodeFailedSet.put(ref);\\n  }\\n\\n  hasDecodeFailed(ref) {\\n    return this.#decodeFailedSet.has(ref);\\n  }\\n\\n  \u002F**\\n   * PLEASE NOTE: Must be called *after* the `setData` method.\\n   *\u002F\\n  addByteSize(ref, byteSize) {\\n    const imageData = this._imageCache.get(ref);\\n    if (!imageData) {\\n      return; \u002F\u002F The image data isn't cached (the limit was reached).\\n    }\\n    if (imageData.byteSize) {\\n      return; \u002F\u002F The byte-size has already been set.\\n    }\\n    imageData.byteSize = byteSize;\\n  }\\n\\n  getData(ref, pageIndex) {\\n    const pageIndexSet = this._refCache.get(ref);\\n    if (!pageIndexSet) {\\n      return null;\\n    }\\n    if (pageIndexSet.size \u003C GlobalImageCache.NUM_PAGES_THRESHOLD) {\\n      return null;\\n    }\\n    const imageData = this._imageCache.get(ref);\\n    if (!imageData) {\\n      return null;\\n    }\\n    \u002F\u002F Ensure that we keep track of all pages containing the image reference.\\n    pageIndexSet.add(pageIndex);\\n\\n    return imageData;\\n  }\\n\\n  setData(ref, data) {\\n    if (!this._refCache.has(ref)) {\\n      throw new Error(\\n        'GlobalImageCache.setData - expected \\\"shouldCache\\\" to have been called.'\\n      );\\n    }\\n    if (this._imageCache.has(ref)) {\\n      return;\\n    }\\n    if (this.#cacheLimitReached) {\\n      warn(\\\"GlobalImageCache.setData - cache limit reached.\\\");\\n      return;\\n    }\\n    this._imageCache.put(ref, data);\\n  }\\n\\n  clear(onlyData = false) {\\n    if (!onlyData) {\\n      this.#decodeFailedSet.clear();\\n      this._refCache.clear();\\n    }\\n    this._imageCache.clear();\\n  }\\n}\\n\\nexport {\\n  GlobalColorSpaceCache,\\n  GlobalImageCache,\\n  LocalColorSpaceCache,\\n  LocalFunctionCache,\\n  LocalGStateCache,\\n  LocalImageCache,\\n  LocalTilingPatternCache,\\n  RegionalImageCache,\\n};\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { Dict, Ref } from \\\".\u002Fprimitives.js\\\";\\nimport {\\n  FeatureTest,\\n  FormatError,\\n  info,\\n  MathClamp,\\n  shadow,\\n  unreachable,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { PostScriptLexer, PostScriptParser } from \\\".\u002Fps_parser.js\\\";\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { isNumberArray } from \\\".\u002Fcore_utils.js\\\";\\nimport { LocalFunctionCache } from \\\".\u002Fimage_utils.js\\\";\\n\\nclass PDFFunctionFactory {\\n  constructor({ xref, isEvalSupported = true }) {\\n    this.xref = xref;\\n    this.isEvalSupported = isEvalSupported !== false;\\n  }\\n\\n  create(fn, parseArray = false) {\\n    let fnRef, parsedFn;\\n\\n    \u002F\u002F Check if the Function is cached first, to avoid re-parsing it.\\n    if (fn instanceof Ref) {\\n      fnRef = fn;\\n    } else if (fn instanceof Dict) {\\n      fnRef = fn.objId;\\n    } else if (fn instanceof BaseStream) {\\n      fnRef = fn.dict?.objId;\\n    }\\n    if (fnRef) {\\n      const cachedFn = this._localFunctionCache.getByRef(fnRef);\\n      if (cachedFn) {\\n        return cachedFn;\\n      }\\n    }\\n\\n    const fnObj = this.xref.fetchIfRef(fn);\\n    if (Array.isArray(fnObj)) {\\n      if (!parseArray) {\\n        throw new Error(\\n          'PDFFunctionFactory.create - expected \\\"parseArray\\\" argument.'\\n        );\\n      }\\n      parsedFn = PDFFunction.parseArray(this, fnObj);\\n    } else {\\n      parsedFn = PDFFunction.parse(this, fnObj);\\n    }\\n\\n    \u002F\u002F Attempt to cache the parsed Function, by reference.\\n    if (fnRef) {\\n      this._localFunctionCache.set(\u002F* name = *\u002F null, fnRef, parsedFn);\\n    }\\n    return parsedFn;\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  get _localFunctionCache() {\\n    return shadow(this, \\\"_localFunctionCache\\\", new LocalFunctionCache());\\n  }\\n}\\n\\nfunction toNumberArray(arr) {\\n  if (!Array.isArray(arr)) {\\n    return null;\\n  }\\n  if (!isNumberArray(arr, null)) {\\n    \u002F\u002F Non-number is found -- convert all items to numbers.\\n    return arr.map(x => +x);\\n  }\\n  return arr;\\n}\\n\\nclass PDFFunction {\\n  static getSampleArray(size, outputSize, bps, stream) {\\n    let i, ii;\\n    let length = 1;\\n    for (i = 0, ii = size.length; i \u003C ii; i++) {\\n      length *= size[i];\\n    }\\n    length *= outputSize;\\n\\n    const array = new Array(length);\\n    let codeSize = 0;\\n    let codeBuf = 0;\\n    \u002F\u002F 32 is a valid bps so shifting won't work\\n    const sampleMul = 1.0 \u002F (2.0 ** bps - 1);\\n\\n    const strBytes = stream.getBytes((length * bps + 7) \u002F 8);\\n    let strIdx = 0;\\n    for (i = 0; i \u003C length; i++) {\\n      while (codeSize \u003C bps) {\\n        codeBuf \u003C\u003C= 8;\\n        codeBuf |= strBytes[strIdx++];\\n        codeSize += 8;\\n      }\\n      codeSize -= bps;\\n      array[i] = (codeBuf >> codeSize) * sampleMul;\\n      codeBuf &= (1 \u003C\u003C codeSize) - 1;\\n    }\\n    return array;\\n  }\\n\\n  static parse(factory, fn) {\\n    const dict = fn.dict || fn;\\n    const typeNum = dict.get(\\\"FunctionType\\\");\\n\\n    switch (typeNum) {\\n      case 0:\\n        return this.constructSampled(factory, fn, dict);\\n      case 1:\\n        break;\\n      case 2:\\n        return this.constructInterpolated(factory, dict);\\n      case 3:\\n        return this.constructStiched(factory, dict);\\n      case 4:\\n        return this.constructPostScript(factory, fn, dict);\\n    }\\n    throw new FormatError(\\\"Unknown type of function\\\");\\n  }\\n\\n  static parseArray(factory, fnObj) {\\n    const { xref } = factory;\\n\\n    const fnArray = [];\\n    for (const fn of fnObj) {\\n      fnArray.push(this.parse(factory, xref.fetchIfRef(fn)));\\n    }\\n    return function (src, srcOffset, dest, destOffset) {\\n      for (let i = 0, ii = fnArray.length; i \u003C ii; i++) {\\n        fnArray[i](src, srcOffset, dest, destOffset + i);\\n      }\\n    };\\n  }\\n\\n  static constructSampled(factory, fn, dict) {\\n    function toMultiArray(arr) {\\n      const inputLength = arr.length;\\n      const out = [];\\n      let index = 0;\\n      for (let i = 0; i \u003C inputLength; i += 2) {\\n        out[index++] = [arr[i], arr[i + 1]];\\n      }\\n      return out;\\n    }\\n    \u002F\u002F See chapter 3, page 109 of the PDF reference\\n    function interpolate(x, xmin, xmax, ymin, ymax) {\\n      return ymin + (x - xmin) * ((ymax - ymin) \u002F (xmax - xmin));\\n    }\\n\\n    let domain = toNumberArray(dict.getArray(\\\"Domain\\\"));\\n    let range = toNumberArray(dict.getArray(\\\"Range\\\"));\\n\\n    if (!domain || !range) {\\n      throw new FormatError(\\\"No domain or range\\\");\\n    }\\n\\n    const inputSize = domain.length \u002F 2;\\n    const outputSize = range.length \u002F 2;\\n\\n    domain = toMultiArray(domain);\\n    range = toMultiArray(range);\\n\\n    const size = toNumberArray(dict.getArray(\\\"Size\\\"));\\n    const bps = dict.get(\\\"BitsPerSample\\\");\\n    const order = dict.get(\\\"Order\\\") || 1;\\n    if (order !== 1) {\\n      \u002F\u002F No description how cubic spline interpolation works in PDF32000:2008\\n      \u002F\u002F As in poppler, ignoring order, linear interpolation may work as good\\n      info(\\\"No support for cubic spline interpolation: \\\" + order);\\n    }\\n\\n    let encode = toNumberArray(dict.getArray(\\\"Encode\\\"));\\n    if (!encode) {\\n      encode = [];\\n      for (let i = 0; i \u003C inputSize; ++i) {\\n        encode.push([0, size[i] - 1]);\\n      }\\n    } else {\\n      encode = toMultiArray(encode);\\n    }\\n\\n    let decode = toNumberArray(dict.getArray(\\\"Decode\\\"));\\n    decode = !decode ? range : toMultiArray(decode);\\n\\n    const samples = this.getSampleArray(size, outputSize, bps, fn);\\n    \u002F\u002F const mask = 2 ** bps - 1;\\n\\n    return function constructSampledFn(src, srcOffset, dest, destOffset) {\\n      \u002F\u002F See chapter 3, page 110 of the PDF reference.\\n\\n      \u002F\u002F Building the cube vertices: its part and sample index\\n      \u002F\u002F http:\u002F\u002Frjwagner49.com\u002FMathematics\u002FInterpolation.pdf\\n      const cubeVertices = 1 \u003C\u003C inputSize;\\n      const cubeN = new Float64Array(cubeVertices).fill(1);\\n      const cubeVertex = new Uint32Array(cubeVertices);\\n      let i, j;\\n\\n      let k = outputSize,\\n        pos = 1;\\n      \u002F\u002F Map x_i to y_j for 0 \u003C= i \u003C m using the sampled function.\\n      for (i = 0; i \u003C inputSize; ++i) {\\n        \u002F\u002F x_i' = min(max(x_i, Domain_2i), Domain_2i+1)\\n        const domain_2i = domain[i][0];\\n        const domain_2i_1 = domain[i][1];\\n        const xi = MathClamp(src[srcOffset + i], domain_2i, domain_2i_1);\\n\\n        \u002F\u002F e_i = Interpolate(x_i', Domain_2i, Domain_2i+1,\\n        \u002F\u002F                   Encode_2i, Encode_2i+1)\\n        let e = interpolate(\\n          xi,\\n          domain_2i,\\n          domain_2i_1,\\n          encode[i][0],\\n          encode[i][1]\\n        );\\n\\n        \u002F\u002F e_i' = min(max(e_i, 0), Size_i - 1)\\n        const size_i = size[i];\\n        e = MathClamp(e, 0, size_i - 1);\\n\\n        \u002F\u002F Adjusting the cube: N and vertex sample index\\n        const e0 = e \u003C size_i - 1 ? Math.floor(e) : e - 1; \u002F\u002F e1 = e0 + 1;\\n        const n0 = e0 + 1 - e; \u002F\u002F (e1 - e) \u002F (e1 - e0);\\n        const n1 = e - e0; \u002F\u002F (e - e0) \u002F (e1 - e0);\\n        const offset0 = e0 * k;\\n        const offset1 = offset0 + k; \u002F\u002F e1 * k\\n        for (j = 0; j \u003C cubeVertices; j++) {\\n          if (j & pos) {\\n            cubeN[j] *= n1;\\n            cubeVertex[j] += offset1;\\n          } else {\\n            cubeN[j] *= n0;\\n            cubeVertex[j] += offset0;\\n          }\\n        }\\n\\n        k *= size_i;\\n        pos \u003C\u003C= 1;\\n      }\\n\\n      for (j = 0; j \u003C outputSize; ++j) {\\n        \u002F\u002F Sum all cube vertices' samples portions\\n        let rj = 0;\\n        for (i = 0; i \u003C cubeVertices; i++) {\\n          rj += samples[cubeVertex[i] + j] * cubeN[i];\\n        }\\n\\n        \u002F\u002F r_j' = Interpolate(r_j, 0, 2^BitsPerSample - 1,\\n        \u002F\u002F                    Decode_2j, Decode_2j+1)\\n        rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);\\n\\n        \u002F\u002F y_j = min(max(r_j, range_2j), range_2j+1)\\n        dest[destOffset + j] = MathClamp(rj, range[j][0], range[j][1]);\\n      }\\n    };\\n  }\\n\\n  static constructInterpolated(factory, dict) {\\n    const c0 = toNumberArray(dict.getArray(\\\"C0\\\")) || [0];\\n    const c1 = toNumberArray(dict.getArray(\\\"C1\\\")) || [1];\\n    const n = dict.get(\\\"N\\\");\\n\\n    const diff = [];\\n    for (let i = 0, ii = c0.length; i \u003C ii; ++i) {\\n      diff.push(c1[i] - c0[i]);\\n    }\\n    const length = diff.length;\\n\\n    return function constructInterpolatedFn(src, srcOffset, dest, destOffset) {\\n      const x = n === 1 ? src[srcOffset] : src[srcOffset] ** n;\\n\\n      for (let j = 0; j \u003C length; ++j) {\\n        dest[destOffset + j] = c0[j] + x * diff[j];\\n      }\\n    };\\n  }\\n\\n  static constructStiched(factory, dict) {\\n    const domain = toNumberArray(dict.getArray(\\\"Domain\\\"));\\n\\n    if (!domain) {\\n      throw new FormatError(\\\"No domain\\\");\\n    }\\n\\n    const inputSize = domain.length \u002F 2;\\n    if (inputSize !== 1) {\\n      throw new FormatError(\\\"Bad domain for stiched function\\\");\\n    }\\n    const { xref } = factory;\\n\\n    const fns = [];\\n    for (const fn of dict.get(\\\"Functions\\\")) {\\n      fns.push(this.parse(factory, xref.fetchIfRef(fn)));\\n    }\\n\\n    const bounds = toNumberArray(dict.getArray(\\\"Bounds\\\"));\\n    const encode = toNumberArray(dict.getArray(\\\"Encode\\\"));\\n    const tmpBuf = new Float32Array(1);\\n\\n    return function constructStichedFn(src, srcOffset, dest, destOffset) {\\n      \u002F\u002F Clamp to domain.\\n      const v = MathClamp(src[srcOffset], domain[0], domain[1]);\\n      \u002F\u002F calculate which bound the value is in\\n      const length = bounds.length;\\n      let i;\\n      for (i = 0; i \u003C length; ++i) {\\n        if (v \u003C bounds[i]) {\\n          break;\\n        }\\n      }\\n\\n      \u002F\u002F encode value into domain of function\\n      let dmin = domain[0];\\n      if (i > 0) {\\n        dmin = bounds[i - 1];\\n      }\\n      let dmax = domain[1];\\n      if (i \u003C bounds.length) {\\n        dmax = bounds[i];\\n      }\\n\\n      const rmin = encode[2 * i];\\n      const rmax = encode[2 * i + 1];\\n\\n      \u002F\u002F Prevent the value from becoming NaN as a result\\n      \u002F\u002F of division by zero (fixes issue6113.pdf).\\n      tmpBuf[0] =\\n        dmin === dmax\\n          ? rmin\\n          : rmin + ((v - dmin) * (rmax - rmin)) \u002F (dmax - dmin);\\n\\n      \u002F\u002F call the appropriate function\\n      fns[i](tmpBuf, 0, dest, destOffset);\\n    };\\n  }\\n\\n  static constructPostScript(factory, fn, dict) {\\n    const domain = toNumberArray(dict.getArray(\\\"Domain\\\"));\\n    const range = toNumberArray(dict.getArray(\\\"Range\\\"));\\n\\n    if (!domain) {\\n      throw new FormatError(\\\"No domain.\\\");\\n    }\\n\\n    if (!range) {\\n      throw new FormatError(\\\"No range.\\\");\\n    }\\n\\n    const lexer = new PostScriptLexer(fn);\\n    const parser = new PostScriptParser(lexer);\\n    const code = parser.parse();\\n\\n    if (factory.isEvalSupported && FeatureTest.isEvalSupported) {\\n      const compiled = new PostScriptCompiler().compile(code, domain, range);\\n      if (compiled) {\\n        \u002F\u002F Compiled function consists of simple expressions such as addition,\\n        \u002F\u002F subtraction, Math.max, and also contains 'var' and 'return'\\n        \u002F\u002F statements. See the generation in the PostScriptCompiler below.\\n        \u002F\u002F eslint-disable-next-line no-new-func\\n        return new Function(\\\"src\\\", \\\"srcOffset\\\", \\\"dest\\\", \\\"destOffset\\\", compiled);\\n      }\\n    }\\n    info(\\\"Unable to compile PS function\\\");\\n\\n    const numOutputs = range.length >> 1;\\n    const numInputs = domain.length >> 1;\\n    const evaluator = new PostScriptEvaluator(code);\\n    \u002F\u002F Cache the values for a big speed up, the cache size is limited though\\n    \u002F\u002F since the number of possible values can be huge from a PS function.\\n    const cache = Object.create(null);\\n    \u002F\u002F The MAX_CACHE_SIZE is set to ~4x the maximum number of distinct values\\n    \u002F\u002F seen in our tests.\\n    const MAX_CACHE_SIZE = 2048 * 4;\\n    let cache_available = MAX_CACHE_SIZE;\\n    const tmpBuf = new Float32Array(numInputs);\\n\\n    return function constructPostScriptFn(src, srcOffset, dest, destOffset) {\\n      let i, value;\\n      let key = \\\"\\\";\\n      const input = tmpBuf;\\n      for (i = 0; i \u003C numInputs; i++) {\\n        value = src[srcOffset + i];\\n        input[i] = value;\\n        key += value + \\\"_\\\";\\n      }\\n\\n      const cachedValue = cache[key];\\n      if (cachedValue !== undefined) {\\n        dest.set(cachedValue, destOffset);\\n        return;\\n      }\\n\\n      const output = new Float32Array(numOutputs);\\n      const stack = evaluator.execute(input);\\n      const stackIndex = stack.length - numOutputs;\\n      for (i = 0; i \u003C numOutputs; i++) {\\n        value = stack[stackIndex + i];\\n        let bound = range[i * 2];\\n        if (value \u003C bound) {\\n          value = bound;\\n        } else {\\n          bound = range[i * 2 + 1];\\n          if (value > bound) {\\n            value = bound;\\n          }\\n        }\\n        output[i] = value;\\n      }\\n      if (cache_available > 0) {\\n        cache_available--;\\n        cache[key] = output;\\n      }\\n      dest.set(output, destOffset);\\n    };\\n  }\\n}\\n\\nfunction isPDFFunction(v) {\\n  let fnDict;\\n  if (v instanceof Dict) {\\n    fnDict = v;\\n  } else if (v instanceof BaseStream) {\\n    fnDict = v.dict;\\n  } else {\\n    return false;\\n  }\\n  return fnDict.has(\\\"FunctionType\\\");\\n}\\n\\nclass PostScriptStack {\\n  static MAX_STACK_SIZE = 100;\\n\\n  constructor(initialStack) {\\n    this.stack = initialStack ? Array.from(initialStack) : [];\\n  }\\n\\n  push(value) {\\n    if (this.stack.length >= PostScriptStack.MAX_STACK_SIZE) {\\n      throw new Error(\\\"PostScript function stack overflow.\\\");\\n    }\\n    this.stack.push(value);\\n  }\\n\\n  pop() {\\n    if (this.stack.length \u003C= 0) {\\n      throw new Error(\\\"PostScript function stack underflow.\\\");\\n    }\\n    return this.stack.pop();\\n  }\\n\\n  copy(n) {\\n    if (this.stack.length + n >= PostScriptStack.MAX_STACK_SIZE) {\\n      throw new Error(\\\"PostScript function stack overflow.\\\");\\n    }\\n    const stack = this.stack;\\n    for (let i = stack.length - n, j = n - 1; j >= 0; j--, i++) {\\n      stack.push(stack[i]);\\n    }\\n  }\\n\\n  index(n) {\\n    this.push(this.stack[this.stack.length - n - 1]);\\n  }\\n\\n  \u002F\u002F rotate the last n stack elements p times\\n  roll(n, p) {\\n    const stack = this.stack;\\n    const l = stack.length - n;\\n    const r = stack.length - 1;\\n    const c = l + (p - Math.floor(p \u002F n) * n);\\n\\n    for (let i = l, j = r; i \u003C j; i++, j--) {\\n      const t = stack[i];\\n      stack[i] = stack[j];\\n      stack[j] = t;\\n    }\\n    for (let i = l, j = c - 1; i \u003C j; i++, j--) {\\n      const t = stack[i];\\n      stack[i] = stack[j];\\n      stack[j] = t;\\n    }\\n    for (let i = c, j = r; i \u003C j; i++, j--) {\\n      const t = stack[i];\\n      stack[i] = stack[j];\\n      stack[j] = t;\\n    }\\n  }\\n}\\n\\nclass PostScriptEvaluator {\\n  constructor(operators) {\\n    this.operators = operators;\\n  }\\n\\n  execute(initialStack) {\\n    const stack = new PostScriptStack(initialStack);\\n    let counter = 0;\\n    const operators = this.operators;\\n    const length = operators.length;\\n    let operator, a, b;\\n    while (counter \u003C length) {\\n      operator = operators[counter++];\\n      if (typeof operator === \\\"number\\\") {\\n        \u002F\u002F Operator is really an operand and should be pushed to the stack.\\n        stack.push(operator);\\n        continue;\\n      }\\n      switch (operator) {\\n        \u002F\u002F non standard ps operators\\n        case \\\"jz\\\": \u002F\u002F jump if false\\n          b = stack.pop();\\n          a = stack.pop();\\n          if (!a) {\\n            counter = b;\\n          }\\n          break;\\n        case \\\"j\\\": \u002F\u002F jump\\n          a = stack.pop();\\n          counter = a;\\n          break;\\n\\n        \u002F\u002F all ps operators in alphabetical order (excluding if\u002Fifelse)\\n        case \\\"abs\\\":\\n          a = stack.pop();\\n          stack.push(Math.abs(a));\\n          break;\\n        case \\\"add\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          stack.push(a + b);\\n          break;\\n        case \\\"and\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          if (typeof a === \\\"boolean\\\" && typeof b === \\\"boolean\\\") {\\n            stack.push(a && b);\\n          } else {\\n            stack.push(a & b);\\n          }\\n          break;\\n        case \\\"atan\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          a = (Math.atan2(a, b) \u002F Math.PI) * 180;\\n          if (a \u003C 0) {\\n            a += 360;\\n          }\\n          stack.push(a);\\n          break;\\n        case \\\"bitshift\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          if (a > 0) {\\n            stack.push(a \u003C\u003C b);\\n          } else {\\n            stack.push(a >> b);\\n          }\\n          break;\\n        case \\\"ceiling\\\":\\n          a = stack.pop();\\n          stack.push(Math.ceil(a));\\n          break;\\n        case \\\"copy\\\":\\n          a = stack.pop();\\n          stack.copy(a);\\n          break;\\n        case \\\"cos\\\":\\n          a = stack.pop();\\n          stack.push(Math.cos(((a % 360) \u002F 180) * Math.PI));\\n          break;\\n        case \\\"cvi\\\":\\n          a = stack.pop() | 0;\\n          stack.push(a);\\n          break;\\n        case \\\"cvr\\\":\\n          \u002F\u002F noop\\n          break;\\n        case \\\"div\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          stack.push(a \u002F b);\\n          break;\\n        case \\\"dup\\\":\\n          stack.copy(1);\\n          break;\\n        case \\\"eq\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          stack.push(a === b);\\n          break;\\n        case \\\"exch\\\":\\n          stack.roll(2, 1);\\n          break;\\n        case \\\"exp\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          stack.push(a ** b);\\n          break;\\n        case \\\"false\\\":\\n          stack.push(false);\\n          break;\\n        case \\\"floor\\\":\\n          a = stack.pop();\\n          stack.push(Math.floor(a));\\n          break;\\n        case \\\"ge\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          stack.push(a >= b);\\n          break;\\n        case \\\"gt\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          stack.push(a > b);\\n          break;\\n        case \\\"idiv\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          stack.push((a \u002F b) | 0);\\n          break;\\n        case \\\"index\\\":\\n          a = stack.pop();\\n          stack.index(a);\\n          break;\\n        case \\\"le\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          stack.push(a \u003C= b);\\n          break;\\n        case \\\"ln\\\":\\n          a = stack.pop();\\n          stack.push(Math.log(a));\\n          break;\\n        case \\\"log\\\":\\n          a = stack.pop();\\n          stack.push(Math.log10(a));\\n          break;\\n        case \\\"lt\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          stack.push(a \u003C b);\\n          break;\\n        case \\\"mod\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          stack.push(a % b);\\n          break;\\n        case \\\"mul\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          stack.push(a * b);\\n          break;\\n        case \\\"ne\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          stack.push(a !== b);\\n          break;\\n        case \\\"neg\\\":\\n          a = stack.pop();\\n          stack.push(-a);\\n          break;\\n        case \\\"not\\\":\\n          a = stack.pop();\\n          if (typeof a === \\\"boolean\\\") {\\n            stack.push(!a);\\n          } else {\\n            stack.push(~a);\\n          }\\n          break;\\n        case \\\"or\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          if (typeof a === \\\"boolean\\\" && typeof b === \\\"boolean\\\") {\\n            stack.push(a || b);\\n          } else {\\n            stack.push(a | b);\\n          }\\n          break;\\n        case \\\"pop\\\":\\n          stack.pop();\\n          break;\\n        case \\\"roll\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          stack.roll(a, b);\\n          break;\\n        case \\\"round\\\":\\n          a = stack.pop();\\n          stack.push(Math.round(a));\\n          break;\\n        case \\\"sin\\\":\\n          a = stack.pop();\\n          stack.push(Math.sin(((a % 360) \u002F 180) * Math.PI));\\n          break;\\n        case \\\"sqrt\\\":\\n          a = stack.pop();\\n          stack.push(Math.sqrt(a));\\n          break;\\n        case \\\"sub\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          stack.push(a - b);\\n          break;\\n        case \\\"true\\\":\\n          stack.push(true);\\n          break;\\n        case \\\"truncate\\\":\\n          a = stack.pop();\\n          a = a \u003C 0 ? Math.ceil(a) : Math.floor(a);\\n          stack.push(a);\\n          break;\\n        case \\\"xor\\\":\\n          b = stack.pop();\\n          a = stack.pop();\\n          if (typeof a === \\\"boolean\\\" && typeof b === \\\"boolean\\\") {\\n            stack.push(a !== b);\\n          } else {\\n            stack.push(a ^ b);\\n          }\\n          break;\\n        default:\\n          throw new FormatError(`Unknown operator ${operator}`);\\n      }\\n    }\\n    return stack.stack;\\n  }\\n}\\n\\nclass AstNode {\\n  constructor(type) {\\n    this.type = type;\\n  }\\n\\n  visit(visitor) {\\n    unreachable(\\\"abstract method\\\");\\n  }\\n}\\n\\nclass AstArgument extends AstNode {\\n  constructor(index, min, max) {\\n    super(\\\"args\\\");\\n    this.index = index;\\n    this.min = min;\\n    this.max = max;\\n  }\\n\\n  visit(visitor) {\\n    visitor.visitArgument(this);\\n  }\\n}\\n\\nclass AstLiteral extends AstNode {\\n  constructor(number) {\\n    super(\\\"literal\\\");\\n    this.number = number;\\n    this.min = number;\\n    this.max = number;\\n  }\\n\\n  visit(visitor) {\\n    visitor.visitLiteral(this);\\n  }\\n}\\n\\nclass AstBinaryOperation extends AstNode {\\n  constructor(op, arg1, arg2, min, max) {\\n    super(\\\"binary\\\");\\n    this.op = op;\\n    this.arg1 = arg1;\\n    this.arg2 = arg2;\\n    this.min = min;\\n    this.max = max;\\n  }\\n\\n  visit(visitor) {\\n    visitor.visitBinaryOperation(this);\\n  }\\n}\\n\\nclass AstMin extends AstNode {\\n  constructor(arg, max) {\\n    super(\\\"max\\\");\\n    this.arg = arg;\\n    this.min = arg.min;\\n    this.max = max;\\n  }\\n\\n  visit(visitor) {\\n    visitor.visitMin(this);\\n  }\\n}\\n\\nclass AstVariable extends AstNode {\\n  constructor(index, min, max) {\\n    super(\\\"var\\\");\\n    this.index = index;\\n    this.min = min;\\n    this.max = max;\\n  }\\n\\n  visit(visitor) {\\n    visitor.visitVariable(this);\\n  }\\n}\\n\\nclass AstVariableDefinition extends AstNode {\\n  constructor(variable, arg) {\\n    super(\\\"definition\\\");\\n    this.variable = variable;\\n    this.arg = arg;\\n  }\\n\\n  visit(visitor) {\\n    visitor.visitVariableDefinition(this);\\n  }\\n}\\n\\nclass ExpressionBuilderVisitor {\\n  constructor() {\\n    this.parts = [];\\n  }\\n\\n  visitArgument(arg) {\\n    this.parts.push(\\n      \\\"Math.max(\\\",\\n      arg.min,\\n      \\\", Math.min(\\\",\\n      arg.max,\\n      \\\", src[srcOffset + \\\",\\n      arg.index,\\n      \\\"]))\\\"\\n    );\\n  }\\n\\n  visitVariable(variable) {\\n    this.parts.push(\\\"v\\\", variable.index);\\n  }\\n\\n  visitLiteral(literal) {\\n    this.parts.push(literal.number);\\n  }\\n\\n  visitBinaryOperation(operation) {\\n    this.parts.push(\\\"(\\\");\\n    operation.arg1.visit(this);\\n    this.parts.push(\\\" \\\", operation.op, \\\" \\\");\\n    operation.arg2.visit(this);\\n    this.parts.push(\\\")\\\");\\n  }\\n\\n  visitVariableDefinition(definition) {\\n    this.parts.push(\\\"var \\\");\\n    definition.variable.visit(this);\\n    this.parts.push(\\\" = \\\");\\n    definition.arg.visit(this);\\n    this.parts.push(\\\";\\\");\\n  }\\n\\n  visitMin(max) {\\n    this.parts.push(\\\"Math.min(\\\");\\n    max.arg.visit(this);\\n    this.parts.push(\\\", \\\", max.max, \\\")\\\");\\n  }\\n\\n  toString() {\\n    return this.parts.join(\\\"\\\");\\n  }\\n}\\n\\nfunction buildAddOperation(num1, num2) {\\n  if (num2.type === \\\"literal\\\" && num2.number === 0) {\\n    \u002F\u002F optimization: second operand is 0\\n    return num1;\\n  }\\n  if (num1.type === \\\"literal\\\" && num1.number === 0) {\\n    \u002F\u002F optimization: first operand is 0\\n    return num2;\\n  }\\n  if (num2.type === \\\"literal\\\" && num1.type === \\\"literal\\\") {\\n    \u002F\u002F optimization: operands operand are literals\\n    return new AstLiteral(num1.number + num2.number);\\n  }\\n  return new AstBinaryOperation(\\n    \\\"+\\\",\\n    num1,\\n    num2,\\n    num1.min + num2.min,\\n    num1.max + num2.max\\n  );\\n}\\n\\nfunction buildMulOperation(num1, num2) {\\n  if (num2.type === \\\"literal\\\") {\\n    \u002F\u002F optimization: second operands is a literal...\\n    if (num2.number === 0) {\\n      return new AstLiteral(0); \u002F\u002F and it's 0\\n    } else if (num2.number === 1) {\\n      return num1; \u002F\u002F and it's 1\\n    } else if (num1.type === \\\"literal\\\") {\\n      \u002F\u002F ... and first operands is a literal too\\n      return new AstLiteral(num1.number * num2.number);\\n    }\\n  }\\n  if (num1.type === \\\"literal\\\") {\\n    \u002F\u002F optimization: first operands is a literal...\\n    if (num1.number === 0) {\\n      return new AstLiteral(0); \u002F\u002F and it's 0\\n    } else if (num1.number === 1) {\\n      return num2; \u002F\u002F and it's 1\\n    }\\n  }\\n  const min = Math.min(\\n    num1.min * num2.min,\\n    num1.min * num2.max,\\n    num1.max * num2.min,\\n    num1.max * num2.max\\n  );\\n  const max = Math.max(\\n    num1.min * num2.min,\\n    num1.min * num2.max,\\n    num1.max * num2.min,\\n    num1.max * num2.max\\n  );\\n  return new AstBinaryOperation(\\\"*\\\", num1, num2, min, max);\\n}\\n\\nfunction buildSubOperation(num1, num2) {\\n  if (num2.type === \\\"literal\\\") {\\n    \u002F\u002F optimization: second operands is a literal...\\n    if (num2.number === 0) {\\n      return num1; \u002F\u002F ... and it's 0\\n    } else if (num1.type === \\\"literal\\\") {\\n      \u002F\u002F ... and first operands is a literal too\\n      return new AstLiteral(num1.number - num2.number);\\n    }\\n  }\\n  if (\\n    num2.type === \\\"binary\\\" &&\\n    num2.op === \\\"-\\\" &&\\n    num1.type === \\\"literal\\\" &&\\n    num1.number === 1 &&\\n    num2.arg1.type === \\\"literal\\\" &&\\n    num2.arg1.number === 1\\n  ) {\\n    \u002F\u002F optimization for case: 1 - (1 - x)\\n    return num2.arg2;\\n  }\\n  return new AstBinaryOperation(\\n    \\\"-\\\",\\n    num1,\\n    num2,\\n    num1.min - num2.max,\\n    num1.max - num2.min\\n  );\\n}\\n\\nfunction buildMinOperation(num1, max) {\\n  if (num1.min >= max) {\\n    \u002F\u002F optimization: num1 min value is not less than required max\\n    return new AstLiteral(max); \u002F\u002F just returning max\\n  } else if (num1.max \u003C= max) {\\n    \u002F\u002F optimization: num1 max value is not greater than required max\\n    return num1; \u002F\u002F just returning an argument\\n  }\\n  return new AstMin(num1, max);\\n}\\n\\n\u002F\u002F Most of the PDFs functions consist of simple operations such as:\\n\u002F\u002F   roll, exch, sub, cvr, pop, index, dup, mul, if, gt, add.\\n\u002F\u002F\\n\u002F\u002F We can compile most of such programs, and at the same moment, we can\\n\u002F\u002F optimize some expressions using basic math properties. Keeping track of\\n\u002F\u002F min\u002Fmax values will allow us to avoid extra Math.min\u002FMath.max calls.\\nclass PostScriptCompiler {\\n  compile(code, domain, range) {\\n    const stack = [];\\n    const instructions = [];\\n    const inputSize = domain.length >> 1,\\n      outputSize = range.length >> 1;\\n    let lastRegister = 0;\\n    let n, j;\\n    let num1, num2, ast1, ast2, tmpVar, item;\\n    for (let i = 0; i \u003C inputSize; i++) {\\n      stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1]));\\n    }\\n\\n    for (let i = 0, ii = code.length; i \u003C ii; i++) {\\n      item = code[i];\\n      if (typeof item === \\\"number\\\") {\\n        stack.push(new AstLiteral(item));\\n        continue;\\n      }\\n\\n      switch (item) {\\n        case \\\"add\\\":\\n          if (stack.length \u003C 2) {\\n            return null;\\n          }\\n          num2 = stack.pop();\\n          num1 = stack.pop();\\n          stack.push(buildAddOperation(num1, num2));\\n          break;\\n        case \\\"cvr\\\":\\n          if (stack.length \u003C 1) {\\n            return null;\\n          }\\n          break;\\n        case \\\"mul\\\":\\n          if (stack.length \u003C 2) {\\n            return null;\\n          }\\n          num2 = stack.pop();\\n          num1 = stack.pop();\\n          stack.push(buildMulOperation(num1, num2));\\n          break;\\n        case \\\"sub\\\":\\n          if (stack.length \u003C 2) {\\n            return null;\\n          }\\n          num2 = stack.pop();\\n          num1 = stack.pop();\\n          stack.push(buildSubOperation(num1, num2));\\n          break;\\n        case \\\"exch\\\":\\n          if (stack.length \u003C 2) {\\n            return null;\\n          }\\n          ast1 = stack.pop();\\n          ast2 = stack.pop();\\n          stack.push(ast1, ast2);\\n          break;\\n        case \\\"pop\\\":\\n          if (stack.length \u003C 1) {\\n            return null;\\n          }\\n          stack.pop();\\n          break;\\n        case \\\"index\\\":\\n          if (stack.length \u003C 1) {\\n            return null;\\n          }\\n          num1 = stack.pop();\\n          if (num1.type !== \\\"literal\\\") {\\n            return null;\\n          }\\n          n = num1.number;\\n          if (n \u003C 0 || !Number.isInteger(n) || stack.length \u003C n) {\\n            return null;\\n          }\\n          ast1 = stack[stack.length - n - 1];\\n          if (ast1.type === \\\"literal\\\" || ast1.type === \\\"var\\\") {\\n            stack.push(ast1);\\n            break;\\n          }\\n          tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\\n          stack[stack.length - n - 1] = tmpVar;\\n          stack.push(tmpVar);\\n          instructions.push(new AstVariableDefinition(tmpVar, ast1));\\n          break;\\n        case \\\"dup\\\":\\n          if (stack.length \u003C 1) {\\n            return null;\\n          }\\n          if (\\n            typeof code[i + 1] === \\\"number\\\" &&\\n            code[i + 2] === \\\"gt\\\" &&\\n            code[i + 3] === i + 7 &&\\n            code[i + 4] === \\\"jz\\\" &&\\n            code[i + 5] === \\\"pop\\\" &&\\n            code[i + 6] === code[i + 1]\\n          ) {\\n            \u002F\u002F special case of the commands sequence for the min operation\\n            num1 = stack.pop();\\n            stack.push(buildMinOperation(num1, code[i + 1]));\\n            i += 6;\\n            break;\\n          }\\n          ast1 = stack.at(-1);\\n          if (ast1.type === \\\"literal\\\" || ast1.type === \\\"var\\\") {\\n            \u002F\u002F we don't have to save into intermediate variable a literal or\\n            \u002F\u002F variable.\\n            stack.push(ast1);\\n            break;\\n          }\\n          tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\\n          stack[stack.length - 1] = tmpVar;\\n          stack.push(tmpVar);\\n          instructions.push(new AstVariableDefinition(tmpVar, ast1));\\n          break;\\n        case \\\"roll\\\":\\n          if (stack.length \u003C 2) {\\n            return null;\\n          }\\n          num2 = stack.pop();\\n          num1 = stack.pop();\\n          if (num2.type !== \\\"literal\\\" || num1.type !== \\\"literal\\\") {\\n            \u002F\u002F both roll operands must be numbers\\n            return null;\\n          }\\n          j = num2.number;\\n          n = num1.number;\\n          if (\\n            n \u003C= 0 ||\\n            !Number.isInteger(n) ||\\n            !Number.isInteger(j) ||\\n            stack.length \u003C n\\n          ) {\\n            \u002F\u002F ... and integers\\n            return null;\\n          }\\n          j = ((j % n) + n) % n;\\n          if (j === 0) {\\n            break; \u002F\u002F just skipping -- there are nothing to rotate\\n          }\\n          stack.push(...stack.splice(stack.length - n, n - j));\\n          break;\\n        default:\\n          return null; \u002F\u002F unsupported operator\\n      }\\n    }\\n\\n    if (stack.length !== outputSize) {\\n      return null;\\n    }\\n\\n    const result = [];\\n    for (const instruction of instructions) {\\n      const statementBuilder = new ExpressionBuilderVisitor();\\n      instruction.visit(statementBuilder);\\n      result.push(statementBuilder.toString());\\n    }\\n    for (let i = 0, ii = stack.length; i \u003C ii; i++) {\\n      const expr = stack[i],\\n        statementBuilder = new ExpressionBuilderVisitor();\\n      expr.visit(statementBuilder);\\n      const min = range[i * 2],\\n        max = range[i * 2 + 1];\\n      const out = [statementBuilder.toString()];\\n      if (min > expr.min) {\\n        out.unshift(\\\"Math.max(\\\", min, \\\", \\\");\\n        out.push(\\\")\\\");\\n      }\\n      if (max \u003C expr.max) {\\n        out.unshift(\\\"Math.min(\\\", max, \\\", \\\");\\n        out.push(\\\")\\\");\\n      }\\n      out.unshift(\\\"dest[destOffset + \\\", i, \\\"] = \\\");\\n      out.push(\\\";\\\");\\n      result.push(out.join(\\\"\\\"));\\n    }\\n    return result.join(\\\"\\\\n\\\");\\n  }\\n}\\n\\nexport {\\n  isPDFFunction,\\n  PDFFunctionFactory,\\n  PostScriptCompiler,\\n  PostScriptEvaluator,\\n};\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\n\u002F\u002F Character types for symbols from 0000 to 00FF.\\n\u002F\u002F Source: ftp:\u002F\u002Fftp.unicode.org\u002FPublic\u002FUNIDATA\u002FUnicodeData.txt\\n\u002F\u002F prettier-ignore\\nconst baseTypes = [\\n  \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"S\\\", \\\"B\\\", \\\"S\\\",\\n  \\\"WS\\\", \\\"B\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\",\\n  \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"B\\\", \\\"B\\\", \\\"B\\\", \\\"S\\\", \\\"WS\\\", \\\"ON\\\", \\\"ON\\\", \\\"ET\\\",\\n  \\\"ET\\\", \\\"ET\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"ES\\\", \\\"CS\\\", \\\"ES\\\", \\\"CS\\\", \\\"CS\\\",\\n  \\\"EN\\\", \\\"EN\\\", \\\"EN\\\", \\\"EN\\\", \\\"EN\\\", \\\"EN\\\", \\\"EN\\\", \\\"EN\\\", \\\"EN\\\", \\\"EN\\\", \\\"CS\\\", \\\"ON\\\",\\n  \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\",\\n  \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\",\\n  \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\",\\n  \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\",\\n  \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\",\\n  \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"B\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\",\\n  \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\",\\n  \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"BN\\\", \\\"CS\\\", \\\"ON\\\", \\\"ET\\\",\\n  \\\"ET\\\", \\\"ET\\\", \\\"ET\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"L\\\", \\\"ON\\\", \\\"ON\\\", \\\"BN\\\", \\\"ON\\\",\\n  \\\"ON\\\", \\\"ET\\\", \\\"ET\\\", \\\"EN\\\", \\\"EN\\\", \\\"ON\\\", \\\"L\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"EN\\\", \\\"L\\\",\\n  \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"ON\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\",\\n  \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\",\\n  \\\"L\\\", \\\"ON\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\",\\n  \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\",\\n  \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"ON\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\", \\\"L\\\"\\n];\\n\\n\u002F\u002F Character types for symbols from 0600 to 06FF.\\n\u002F\u002F Source: ftp:\u002F\u002Fftp.unicode.org\u002FPublic\u002FUNIDATA\u002FUnicodeData.txt\\n\u002F\u002F Note that 061D does not exist in the Unicode standard (see\\n\u002F\u002F http:\u002F\u002Funicode.org\u002Fcharts\u002FPDF\u002FU0600.pdf), so we replace it with an\\n\u002F\u002F empty string and issue a warning if we encounter this character. The\\n\u002F\u002F empty string is required to properly index the items after it.\\n\u002F\u002F prettier-ignore\\nconst arabicTypes = [\\n  \\\"AN\\\", \\\"AN\\\", \\\"AN\\\", \\\"AN\\\", \\\"AN\\\", \\\"AN\\\", \\\"ON\\\", \\\"ON\\\", \\\"AL\\\", \\\"ET\\\", \\\"ET\\\", \\\"AL\\\",\\n  \\\"CS\\\", \\\"AL\\\", \\\"ON\\\", \\\"ON\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\",\\n  \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"AL\\\", \\\"AL\\\", \\\"\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\",\\n  \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\",\\n  \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\",\\n  \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\",\\n  \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\",\\n  \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\",\\n  \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"AN\\\", \\\"AN\\\", \\\"AN\\\", \\\"AN\\\", \\\"AN\\\", \\\"AN\\\", \\\"AN\\\",\\n  \\\"AN\\\", \\\"AN\\\", \\\"AN\\\", \\\"ET\\\", \\\"AN\\\", \\\"AN\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"NSM\\\", \\\"AL\\\", \\\"AL\\\",\\n  \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\",\\n  \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\",\\n  \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\",\\n  \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\",\\n  \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\",\\n  \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\",\\n  \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\",\\n  \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\",\\n  \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"AN\\\",\\n  \\\"ON\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"AL\\\", \\\"AL\\\", \\\"NSM\\\", \\\"NSM\\\",\\n  \\\"ON\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"NSM\\\", \\\"AL\\\", \\\"AL\\\", \\\"EN\\\", \\\"EN\\\", \\\"EN\\\", \\\"EN\\\",\\n  \\\"EN\\\", \\\"EN\\\", \\\"EN\\\", \\\"EN\\\", \\\"EN\\\", \\\"EN\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\", \\\"AL\\\"\\n];\\n\\nfunction isOdd(i) {\\n  return (i & 1) !== 0;\\n}\\n\\nfunction isEven(i) {\\n  return (i & 1) === 0;\\n}\\n\\nfunction findUnequal(arr, start, value) {\\n  let j, jj;\\n  for (j = start, jj = arr.length; j \u003C jj; ++j) {\\n    if (arr[j] !== value) {\\n      return j;\\n    }\\n  }\\n  return j;\\n}\\n\\nfunction reverseValues(arr, start, end) {\\n  for (let i = start, j = end - 1; i \u003C j; ++i, --j) {\\n    const temp = arr[i];\\n    arr[i] = arr[j];\\n    arr[j] = temp;\\n  }\\n}\\n\\nfunction createBidiText(str, isLTR, vertical = false) {\\n  let dir = \\\"ltr\\\";\\n  if (vertical) {\\n    dir = \\\"ttb\\\";\\n  } else if (!isLTR) {\\n    dir = \\\"rtl\\\";\\n  }\\n  return { str, dir };\\n}\\n\\n\u002F\u002F These are used in bidi(), which is called frequently. We re-use them on\\n\u002F\u002F each call to avoid unnecessary allocations.\\nconst chars = [];\\nconst types = [];\\n\\nfunction bidi(str, startLevel = -1, vertical = false) {\\n  let isLTR = true;\\n  const strLength = str.length;\\n  if (strLength === 0 || vertical) {\\n    return createBidiText(str, isLTR, vertical);\\n  }\\n\\n  \u002F\u002F Get types and fill arrays\\n  chars.length = strLength;\\n  types.length = strLength;\\n  let numBidi = 0;\\n\\n  let i, ii;\\n  for (i = 0; i \u003C strLength; ++i) {\\n    chars[i] = str.charAt(i);\\n\\n    const charCode = str.charCodeAt(i);\\n    let charType = \\\"L\\\";\\n    if (charCode \u003C= 0x00ff) {\\n      charType = baseTypes[charCode];\\n    } else if (0x0590 \u003C= charCode && charCode \u003C= 0x05f4) {\\n      charType = \\\"R\\\";\\n    } else if (0x0600 \u003C= charCode && charCode \u003C= 0x06ff) {\\n      charType = arabicTypes[charCode & 0xff];\\n      if (!charType) {\\n        warn(\\\"Bidi: invalid Unicode character \\\" + charCode.toString(16));\\n      }\\n    } else if (\\n      (0x0700 \u003C= charCode && charCode \u003C= 0x08ac) ||\\n      (0xfb50 \u003C= charCode && charCode \u003C= 0xfdff) ||\\n      (0xfe70 \u003C= charCode && charCode \u003C= 0xfeff)\\n    ) {\\n      charType = \\\"AL\\\";\\n    }\\n    if (charType === \\\"R\\\" || charType === \\\"AL\\\" || charType === \\\"AN\\\") {\\n      numBidi++;\\n    }\\n    types[i] = charType;\\n  }\\n\\n  \u002F\u002F Detect the bidi method\\n  \u002F\u002F - If there are no rtl characters then no bidi needed\\n  \u002F\u002F - If less than 30% chars are rtl then string is primarily ltr,\\n  \u002F\u002F   unless the string is very short.\\n  \u002F\u002F - If more than 30% chars are rtl then string is primarily rtl\\n  if (numBidi === 0) {\\n    isLTR = true;\\n    return createBidiText(str, isLTR);\\n  }\\n\\n  if (startLevel === -1) {\\n    if (numBidi \u002F strLength \u003C 0.3 && strLength > 4) {\\n      isLTR = true;\\n      startLevel = 0;\\n    } else {\\n      isLTR = false;\\n      startLevel = 1;\\n    }\\n  }\\n\\n  const levels = [];\\n  for (i = 0; i \u003C strLength; ++i) {\\n    levels[i] = startLevel;\\n  }\\n\\n  \u002F*\\n   X1-X10: skip most of this, since we are NOT doing the embeddings.\\n   *\u002F\\n  const e = isOdd(startLevel) ? \\\"R\\\" : \\\"L\\\";\\n  const sor = e;\\n  const eor = sor;\\n\\n  \u002F*\\n   W1. Examine each non-spacing mark (NSM) in the level run, and change the\\n   type of the NSM to the type of the previous character. If the NSM is at the\\n   start of the level run, it will get the type of sor.\\n   *\u002F\\n  let lastType = sor;\\n  for (i = 0; i \u003C strLength; ++i) {\\n    if (types[i] === \\\"NSM\\\") {\\n      types[i] = lastType;\\n    } else {\\n      lastType = types[i];\\n    }\\n  }\\n\\n  \u002F*\\n   W2. Search backwards from each instance of a European number until the\\n   first strong type (R, L, AL, or sor) is found.  If an AL is found, change\\n   the type of the European number to Arabic number.\\n   *\u002F\\n  lastType = sor;\\n  let t;\\n  for (i = 0; i \u003C strLength; ++i) {\\n    t = types[i];\\n    if (t === \\\"EN\\\") {\\n      types[i] = lastType === \\\"AL\\\" ? \\\"AN\\\" : \\\"EN\\\";\\n    } else if (t === \\\"R\\\" || t === \\\"L\\\" || t === \\\"AL\\\") {\\n      lastType = t;\\n    }\\n  }\\n\\n  \u002F*\\n   W3. Change all ALs to R.\\n   *\u002F\\n  for (i = 0; i \u003C strLength; ++i) {\\n    t = types[i];\\n    if (t === \\\"AL\\\") {\\n      types[i] = \\\"R\\\";\\n    }\\n  }\\n\\n  \u002F*\\n   W4. A single European separator between two European numbers changes to a\\n   European number. A single common separator between two numbers of the same\\n   type changes to that type:\\n   *\u002F\\n  for (i = 1; i \u003C strLength - 1; ++i) {\\n    if (types[i] === \\\"ES\\\" && types[i - 1] === \\\"EN\\\" && types[i + 1] === \\\"EN\\\") {\\n      types[i] = \\\"EN\\\";\\n    }\\n    if (\\n      types[i] === \\\"CS\\\" &&\\n      (types[i - 1] === \\\"EN\\\" || types[i - 1] === \\\"AN\\\") &&\\n      types[i + 1] === types[i - 1]\\n    ) {\\n      types[i] = types[i - 1];\\n    }\\n  }\\n\\n  \u002F*\\n   W5. A sequence of European terminators adjacent to European numbers changes\\n   to all European numbers:\\n   *\u002F\\n  for (i = 0; i \u003C strLength; ++i) {\\n    if (types[i] === \\\"EN\\\") {\\n      \u002F\u002F do before\\n      for (let j = i - 1; j >= 0; --j) {\\n        if (types[j] !== \\\"ET\\\") {\\n          break;\\n        }\\n        types[j] = \\\"EN\\\";\\n      }\\n      \u002F\u002F do after\\n      for (let j = i + 1; j \u003C strLength; ++j) {\\n        if (types[j] !== \\\"ET\\\") {\\n          break;\\n        }\\n        types[j] = \\\"EN\\\";\\n      }\\n    }\\n  }\\n\\n  \u002F*\\n   W6. Otherwise, separators and terminators change to Other Neutral:\\n   *\u002F\\n  for (i = 0; i \u003C strLength; ++i) {\\n    t = types[i];\\n    if (t === \\\"WS\\\" || t === \\\"ES\\\" || t === \\\"ET\\\" || t === \\\"CS\\\") {\\n      types[i] = \\\"ON\\\";\\n    }\\n  }\\n\\n  \u002F*\\n   W7. Search backwards from each instance of a European number until the\\n   first strong type (R, L, or sor) is found. If an L is found,  then change\\n   the type of the European number to L.\\n   *\u002F\\n  lastType = sor;\\n  for (i = 0; i \u003C strLength; ++i) {\\n    t = types[i];\\n    if (t === \\\"EN\\\") {\\n      types[i] = lastType === \\\"L\\\" ? \\\"L\\\" : \\\"EN\\\";\\n    } else if (t === \\\"R\\\" || t === \\\"L\\\") {\\n      lastType = t;\\n    }\\n  }\\n\\n  \u002F*\\n   N1. A sequence of neutrals takes the direction of the surrounding strong\\n   text if the text on both sides has the same direction. European and Arabic\\n   numbers are treated as though they were R. Start-of-level-run (sor) and\\n   end-of-level-run (eor) are used at level run boundaries.\\n   *\u002F\\n  for (i = 0; i \u003C strLength; ++i) {\\n    if (types[i] === \\\"ON\\\") {\\n      const end = findUnequal(types, i + 1, \\\"ON\\\");\\n      let before = sor;\\n      if (i > 0) {\\n        before = types[i - 1];\\n      }\\n\\n      let after = eor;\\n      if (end + 1 \u003C strLength) {\\n        after = types[end + 1];\\n      }\\n      if (before !== \\\"L\\\") {\\n        before = \\\"R\\\";\\n      }\\n      if (after !== \\\"L\\\") {\\n        after = \\\"R\\\";\\n      }\\n      if (before === after) {\\n        types.fill(before, i, end);\\n      }\\n      i = end - 1; \u002F\u002F reset to end (-1 so next iteration is ok)\\n    }\\n  }\\n\\n  \u002F*\\n   N2. Any remaining neutrals take the embedding direction.\\n   *\u002F\\n  for (i = 0; i \u003C strLength; ++i) {\\n    if (types[i] === \\\"ON\\\") {\\n      types[i] = e;\\n    }\\n  }\\n\\n  \u002F*\\n   I1. For all characters with an even (left-to-right) embedding direction,\\n   those of type R go up one level and those of type AN or EN go up two\\n   levels.\\n   I2. For all characters with an odd (right-to-left) embedding direction,\\n   those of type L, EN or AN go up one level.\\n   *\u002F\\n  for (i = 0; i \u003C strLength; ++i) {\\n    t = types[i];\\n    if (isEven(levels[i])) {\\n      if (t === \\\"R\\\") {\\n        levels[i] += 1;\\n      } else if (t === \\\"AN\\\" || t === \\\"EN\\\") {\\n        levels[i] += 2;\\n      }\\n    } else if (\u002F* isOdd && *\u002F t === \\\"L\\\" || t === \\\"AN\\\" || t === \\\"EN\\\") {\\n      levels[i] += 1;\\n    }\\n  }\\n\\n  \u002F*\\n   L1. On each line, reset the embedding level of the following characters to\\n   the paragraph embedding level:\\n\\n   segment separators,\\n   paragraph separators,\\n   any sequence of whitespace characters preceding a segment separator or\\n   paragraph separator, and any sequence of white space characters at the end\\n   of the line.\\n   *\u002F\\n\\n  \u002F\u002F don't bother as text is only single line\\n\\n  \u002F*\\n   L2. From the highest level found in the text to the lowest odd level on\\n   each line, reverse any contiguous sequence of characters that are at that\\n   level or higher.\\n   *\u002F\\n\\n  \u002F\u002F find highest level & lowest odd level\\n  let highestLevel = -1;\\n  let lowestOddLevel = 99;\\n  let level;\\n  for (i = 0, ii = levels.length; i \u003C ii; ++i) {\\n    level = levels[i];\\n    if (highestLevel \u003C level) {\\n      highestLevel = level;\\n    }\\n    if (lowestOddLevel > level && isOdd(level)) {\\n      lowestOddLevel = level;\\n    }\\n  }\\n\\n  \u002F\u002F now reverse between those limits\\n  for (level = highestLevel; level >= lowestOddLevel; --level) {\\n    \u002F\u002F find segments to reverse\\n    let start = -1;\\n    for (i = 0, ii = levels.length; i \u003C ii; ++i) {\\n      if (levels[i] \u003C level) {\\n        if (start >= 0) {\\n          reverseValues(chars, start, i);\\n          start = -1;\\n        }\\n      } else if (start \u003C 0) {\\n        start = i;\\n      }\\n    }\\n    if (start >= 0) {\\n      reverseValues(chars, start, levels.length);\\n    }\\n  }\\n\\n  \u002F*\\n   L3. Combining marks applied to a right-to-left base character will at this\\n   point precede their base character. If the rendering engine expects them to\\n   follow the base characters in the final display process, then the ordering\\n   of the marks and the base character must be reversed.\\n   *\u002F\\n\\n  \u002F\u002F don't bother for now\\n\\n  \u002F*\\n   L4. A character that possesses the mirrored property as specified by\\n   Section 4.7, Mirrored, must be depicted by a mirrored glyph if the resolved\\n   directionality of that character is R.\\n   *\u002F\\n\\n  \u002F\u002F don't mirror as characters are already mirrored in the pdf\\n\\n  \u002F\u002F Finally, return string\\n  for (i = 0, ii = chars.length; i \u003C ii; ++i) {\\n    const ch = chars[i];\\n    if (ch === \\\"\u003C\\\" || ch === \\\">\\\") {\\n      chars[i] = \\\"\\\";\\n    }\\n  }\\n  return createBidiText(chars.join(\\\"\\\"), isLTR);\\n}\\n\\nexport { bidi };\\n\",\"\u002F* Copyright 2023 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { normalizeFontName } from \\\".\u002Ffonts_utils.js\\\";\\nimport { validateFontName } from \\\".\u002Fcore_utils.js\\\";\\nimport { warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nconst NORMAL = {\\n  style: \\\"normal\\\",\\n  weight: \\\"normal\\\",\\n};\\nconst BOLD = {\\n  style: \\\"normal\\\",\\n  weight: \\\"bold\\\",\\n};\\nconst ITALIC = {\\n  style: \\\"italic\\\",\\n  weight: \\\"normal\\\",\\n};\\nconst BOLDITALIC = {\\n  style: \\\"italic\\\",\\n  weight: \\\"bold\\\",\\n};\\n\\nconst substitutionMap = new Map([\\n  [\\n    \\\"Times-Roman\\\",\\n    {\\n      local: [\\n        \\\"Times New Roman\\\",\\n        \\\"Times-Roman\\\",\\n        \\\"Times\\\",\\n        \\\"Liberation Serif\\\",\\n        \\\"Nimbus Roman\\\",\\n        \\\"Nimbus Roman L\\\",\\n        \\\"Tinos\\\",\\n        \\\"Thorndale\\\",\\n        \\\"TeX Gyre Termes\\\",\\n        \\\"FreeSerif\\\",\\n        \\\"Linux Libertine O\\\",\\n        \\\"Libertinus Serif\\\",\\n        \\\"DejaVu Serif\\\",\\n        \\\"Bitstream Vera Serif\\\",\\n        \\\"Ubuntu\\\",\\n      ],\\n      style: NORMAL,\\n      ultimate: \\\"serif\\\",\\n    },\\n  ],\\n  [\\n    \\\"Times-Bold\\\",\\n    {\\n      alias: \\\"Times-Roman\\\",\\n      style: BOLD,\\n      ultimate: \\\"serif\\\",\\n    },\\n  ],\\n  [\\n    \\\"Times-Italic\\\",\\n    {\\n      alias: \\\"Times-Roman\\\",\\n      style: ITALIC,\\n      ultimate: \\\"serif\\\",\\n    },\\n  ],\\n  [\\n    \\\"Times-BoldItalic\\\",\\n    {\\n      alias: \\\"Times-Roman\\\",\\n      style: BOLDITALIC,\\n      ultimate: \\\"serif\\\",\\n    },\\n  ],\\n  [\\n    \\\"Helvetica\\\",\\n    {\\n      local: [\\n        \\\"Helvetica\\\",\\n        \\\"Helvetica Neue\\\",\\n        \\\"Arial\\\",\\n        \\\"Arial Nova\\\",\\n        \\\"Liberation Sans\\\",\\n        \\\"Arimo\\\",\\n        \\\"Nimbus Sans\\\",\\n        \\\"Nimbus Sans L\\\",\\n        \\\"A030\\\",\\n        \\\"TeX Gyre Heros\\\",\\n        \\\"FreeSans\\\",\\n        \\\"DejaVu Sans\\\",\\n        \\\"Albany\\\",\\n        \\\"Bitstream Vera Sans\\\",\\n        \\\"Arial Unicode MS\\\",\\n        \\\"Microsoft Sans Serif\\\",\\n        \\\"Apple Symbols\\\",\\n        \\\"Cantarell\\\",\\n      ],\\n      path: \\\"LiberationSans-Regular.ttf\\\",\\n      style: NORMAL,\\n      ultimate: \\\"sans-serif\\\",\\n    },\\n  ],\\n  [\\n    \\\"Helvetica-Bold\\\",\\n    {\\n      alias: \\\"Helvetica\\\",\\n      path: \\\"LiberationSans-Bold.ttf\\\",\\n      style: BOLD,\\n      ultimate: \\\"sans-serif\\\",\\n    },\\n  ],\\n  [\\n    \\\"Helvetica-Oblique\\\",\\n    {\\n      alias: \\\"Helvetica\\\",\\n      path: \\\"LiberationSans-Italic.ttf\\\",\\n      style: ITALIC,\\n      ultimate: \\\"sans-serif\\\",\\n    },\\n  ],\\n  [\\n    \\\"Helvetica-BoldOblique\\\",\\n    {\\n      alias: \\\"Helvetica\\\",\\n      path: \\\"LiberationSans-BoldItalic.ttf\\\",\\n      style: BOLDITALIC,\\n      ultimate: \\\"sans-serif\\\",\\n    },\\n  ],\\n  [\\n    \\\"Courier\\\",\\n    {\\n      local: [\\n        \\\"Courier\\\",\\n        \\\"Courier New\\\",\\n        \\\"Liberation Mono\\\",\\n        \\\"Nimbus Mono\\\",\\n        \\\"Nimbus Mono L\\\",\\n        \\\"Cousine\\\",\\n        \\\"Cumberland\\\",\\n        \\\"TeX Gyre Cursor\\\",\\n        \\\"FreeMono\\\",\\n        \\\"Linux Libertine Mono O\\\",\\n        \\\"Libertinus Mono\\\",\\n      ],\\n      style: NORMAL,\\n      ultimate: \\\"monospace\\\",\\n    },\\n  ],\\n  [\\n    \\\"Courier-Bold\\\",\\n    {\\n      alias: \\\"Courier\\\",\\n      style: BOLD,\\n      ultimate: \\\"monospace\\\",\\n    },\\n  ],\\n  [\\n    \\\"Courier-Oblique\\\",\\n    {\\n      alias: \\\"Courier\\\",\\n      style: ITALIC,\\n      ultimate: \\\"monospace\\\",\\n    },\\n  ],\\n  [\\n    \\\"Courier-BoldOblique\\\",\\n    {\\n      alias: \\\"Courier\\\",\\n      style: BOLDITALIC,\\n      ultimate: \\\"monospace\\\",\\n    },\\n  ],\\n  [\\n    \\\"ArialBlack\\\",\\n    {\\n      local: [\\\"Arial Black\\\"],\\n      style: {\\n        style: \\\"normal\\\",\\n        weight: \\\"900\\\",\\n      },\\n      fallback: \\\"Helvetica-Bold\\\",\\n    },\\n  ],\\n  [\\n    \\\"ArialBlack-Bold\\\",\\n    {\\n      alias: \\\"ArialBlack\\\",\\n    },\\n  ],\\n  [\\n    \\\"ArialBlack-Italic\\\",\\n    {\\n      alias: \\\"ArialBlack\\\",\\n      style: {\\n        style: \\\"italic\\\",\\n        weight: \\\"900\\\",\\n      },\\n      fallback: \\\"Helvetica-BoldOblique\\\",\\n    },\\n  ],\\n  [\\n    \\\"ArialBlack-BoldItalic\\\",\\n    {\\n      alias: \\\"ArialBlack-Italic\\\",\\n    },\\n  ],\\n  [\\n    \\\"ArialNarrow\\\",\\n    {\\n      local: [\\n        \\\"Arial Narrow\\\",\\n        \\\"Liberation Sans Narrow\\\",\\n        \\\"Helvetica Condensed\\\",\\n        \\\"Nimbus Sans Narrow\\\",\\n        \\\"TeX Gyre Heros Cn\\\",\\n      ],\\n      style: NORMAL,\\n      fallback: \\\"Helvetica\\\",\\n    },\\n  ],\\n  [\\n    \\\"ArialNarrow-Bold\\\",\\n    {\\n      alias: \\\"ArialNarrow\\\",\\n      style: BOLD,\\n      fallback: \\\"Helvetica-Bold\\\",\\n    },\\n  ],\\n  [\\n    \\\"ArialNarrow-Italic\\\",\\n    {\\n      alias: \\\"ArialNarrow\\\",\\n      style: ITALIC,\\n      fallback: \\\"Helvetica-Oblique\\\",\\n    },\\n  ],\\n  [\\n    \\\"ArialNarrow-BoldItalic\\\",\\n    {\\n      alias: \\\"ArialNarrow\\\",\\n      style: BOLDITALIC,\\n      fallback: \\\"Helvetica-BoldOblique\\\",\\n    },\\n  ],\\n  [\\n    \\\"Calibri\\\",\\n    {\\n      local: [\\\"Calibri\\\", \\\"Carlito\\\"],\\n      style: NORMAL,\\n      fallback: \\\"Helvetica\\\",\\n    },\\n  ],\\n  [\\n    \\\"Calibri-Bold\\\",\\n    {\\n      alias: \\\"Calibri\\\",\\n      style: BOLD,\\n      fallback: \\\"Helvetica-Bold\\\",\\n    },\\n  ],\\n  [\\n    \\\"Calibri-Italic\\\",\\n    {\\n      alias: \\\"Calibri\\\",\\n      style: ITALIC,\\n      fallback: \\\"Helvetica-Oblique\\\",\\n    },\\n  ],\\n  [\\n    \\\"Calibri-BoldItalic\\\",\\n    {\\n      alias: \\\"Calibri\\\",\\n      style: BOLDITALIC,\\n      fallback: \\\"Helvetica-BoldOblique\\\",\\n    },\\n  ],\\n  [\\n    \\\"Wingdings\\\",\\n    {\\n      local: [\\\"Wingdings\\\", \\\"URW Dingbats\\\"],\\n      style: NORMAL,\\n    },\\n  ],\\n  [\\n    \\\"Wingdings-Regular\\\",\\n    {\\n      alias: \\\"Wingdings\\\",\\n    },\\n  ],\\n  [\\n    \\\"Wingdings-Bold\\\",\\n    {\\n      alias: \\\"Wingdings\\\",\\n    },\\n  ],\\n]);\\n\\nconst fontAliases = new Map([[\\\"Arial-Black\\\", \\\"ArialBlack\\\"]]);\\n\\nfunction getStyleToAppend(style) {\\n  switch (style) {\\n    case BOLD:\\n      return \\\"Bold\\\";\\n    case ITALIC:\\n      return \\\"Italic\\\";\\n    case BOLDITALIC:\\n      return \\\"Bold Italic\\\";\\n    default:\\n      if (style?.weight === \\\"bold\\\") {\\n        return \\\"Bold\\\";\\n      }\\n      if (style?.style === \\\"italic\\\") {\\n        return \\\"Italic\\\";\\n      }\\n  }\\n  return \\\"\\\";\\n}\\n\\nfunction getFamilyName(str) {\\n  \u002F\u002F See https:\u002F\u002Fgitlab.freedesktop.org\u002Ffontconfig\u002Ffontconfig\u002F-\u002Fblob\u002F14d466b30a8ab4a9d789977ed94f2c30e7209267\u002Fsrc\u002Ffcname.c#L137.\\n  const keywords = new Set([\\n    \\\"thin\\\",\\n    \\\"extralight\\\",\\n    \\\"ultralight\\\",\\n    \\\"demilight\\\",\\n    \\\"semilight\\\",\\n    \\\"light\\\",\\n    \\\"book\\\",\\n    \\\"regular\\\",\\n    \\\"normal\\\",\\n    \\\"medium\\\",\\n    \\\"demibold\\\",\\n    \\\"semibold\\\",\\n    \\\"bold\\\",\\n    \\\"extrabold\\\",\\n    \\\"ultrabold\\\",\\n    \\\"black\\\",\\n    \\\"heavy\\\",\\n    \\\"extrablack\\\",\\n    \\\"ultrablack\\\",\\n    \\\"roman\\\",\\n    \\\"italic\\\",\\n    \\\"oblique\\\",\\n    \\\"ultracondensed\\\",\\n    \\\"extracondensed\\\",\\n    \\\"condensed\\\",\\n    \\\"semicondensed\\\",\\n    \\\"normal\\\",\\n    \\\"semiexpanded\\\",\\n    \\\"expanded\\\",\\n    \\\"extraexpanded\\\",\\n    \\\"ultraexpanded\\\",\\n    \\\"bolditalic\\\",\\n  ]);\\n  return str\\n    .split(\u002F[- ,+]+\u002Fg)\\n    .filter(tok => !keywords.has(tok.toLowerCase()))\\n    .join(\\\" \\\");\\n}\\n\\n\u002F**\\n * Generate font description.\\n * @param {Object} param0, font substitution description.\\n * @param {Array\u003CString>} src, contains src values (local(...) or url(...)).\\n * @param {String} localFontPath, path to local fonts.\\n * @param {boolean} useFallback, whether to use fallback font.\\n * @param {boolean} usePath, whether to use path to font.\\n * @param {String} append, style (Bold, Italic, ...) to append to font name.\\n * @return {Object} { style, ultimate }.\\n *\u002F\\nfunction generateFont(\\n  { alias, local, path, fallback, style, ultimate },\\n  src,\\n  localFontPath,\\n  useFallback = true,\\n  usePath = true,\\n  append = \\\"\\\"\\n) {\\n  const result = {\\n    style: null,\\n    ultimate: null,\\n  };\\n  if (local) {\\n    const extra = append ? ` ${append}` : \\\"\\\";\\n    for (const name of local) {\\n      src.push(`local(${name}${extra})`);\\n    }\\n  }\\n  if (alias) {\\n    const substitution = substitutionMap.get(alias);\\n    const aliasAppend = append || getStyleToAppend(style);\\n    Object.assign(\\n      result,\\n      generateFont(\\n        substitution,\\n        src,\\n        localFontPath,\\n        \u002F* useFallback = *\u002F useFallback && !fallback,\\n        \u002F* usePath = *\u002F usePath && !path,\\n        aliasAppend\\n      )\\n    );\\n  }\\n  if (style) {\\n    result.style = style;\\n  }\\n  if (ultimate) {\\n    result.ultimate = ultimate;\\n  }\\n  if (useFallback && fallback) {\\n    const fallbackInfo = substitutionMap.get(fallback);\\n    const { ultimate: fallbackUltimate } = generateFont(\\n      fallbackInfo,\\n      src,\\n      localFontPath,\\n      useFallback,\\n      \u002F* usePath = *\u002F usePath && !path,\\n      append\\n    );\\n    result.ultimate ||= fallbackUltimate;\\n  }\\n  if (usePath && path && localFontPath) {\\n    src.push(`url(${localFontPath}${path})`);\\n  }\\n\\n  return result;\\n}\\n\\n\u002F**\\n * Get a font substitution for a given font.\\n * The general idea is to have enough information to create a CSS rule like\\n * this:\\n *   @font-face {\\n *    font-family: 'Times';\\n *    src: local('Times New Roman'), local('Subst1'), local('Subst2'),\\n *         url(...\u002FTimesNewRoman.ttf)\\n *    font-weight: normal;\\n *    font-style: normal;\\n *   }\\n * or use the FontFace API.\\n *\\n * @param {Map} systemFontCache The cache of local fonts.\\n * @param {Object} idFactory The ids factory.\\n * @param {String} localFontPath Path to the fonts directory.\\n * @param {String} baseFontName The font name to be substituted.\\n * @param {String|undefined} standardFontName The standard font name to use\\n *   if the base font is not available.\\n * @param {String} type The font type.\\n * @returns an Object with the CSS, the loaded name, the src and the style.\\n *\u002F\\nfunction getFontSubstitution(\\n  systemFontCache,\\n  idFactory,\\n  localFontPath,\\n  baseFontName,\\n  standardFontName,\\n  type\\n) {\\n  if (baseFontName.startsWith(\\\"InvalidPDFjsFont_\\\")) {\\n    return null;\\n  }\\n\\n  if (\\n    (type === \\\"TrueType\\\" || type === \\\"Type1\\\") &&\\n    \u002F^[A-Z]{6}\\\\+\u002F.test(baseFontName)\\n  ) {\\n    \u002F\u002F When the font is a subset, we need to remove the prefix (see 9.6.4).\\n    baseFontName = baseFontName.slice(7);\\n  }\\n\\n  \u002F\u002F It's possible to have a font name with spaces, commas or dashes, hence we\\n  \u002F\u002F just replace them by a dash.\\n  baseFontName = normalizeFontName(baseFontName);\\n\\n  const key = baseFontName;\\n  let substitutionInfo = systemFontCache.get(key);\\n  if (substitutionInfo) {\\n    return substitutionInfo;\\n  }\\n\\n  \u002F\u002F First, check if we've a substitution for the base font.\\n  let substitution = substitutionMap.get(baseFontName);\\n  if (!substitution) {\\n    \u002F\u002F Check if we've an alias for the base font, Arial-Black is the same as\\n    \u002F\u002F ArialBlack\\n    for (const [alias, subst] of fontAliases) {\\n      if (baseFontName.startsWith(alias)) {\\n        baseFontName = `${subst}${baseFontName.substring(alias.length)}`;\\n        substitution = substitutionMap.get(baseFontName);\\n        break;\\n      }\\n    }\\n  }\\n\\n  let mustAddBaseFont = false;\\n  if (!substitution) {\\n    \u002F\u002F If not, check if we've a substitution for the standard font.\\n    substitution = substitutionMap.get(standardFontName);\\n    mustAddBaseFont = true;\\n  }\\n\\n  const loadedName = `${idFactory.getDocId()}_s${idFactory.createFontId()}`;\\n  if (!substitution) {\\n    if (!validateFontName(baseFontName)) {\\n      warn(`Cannot substitute the font because of its name: ${baseFontName}`);\\n      systemFontCache.set(key, null);\\n      \u002F\u002F If the baseFontName is not valid we don't want to use it.\\n      return null;\\n    }\\n    \u002F\u002F Maybe we'll be lucky and the OS will have the font.\\n    const bold = \u002Fbold\u002Fgi.test(baseFontName);\\n    const italic = \u002Foblique|italic\u002Fgi.test(baseFontName);\\n    const style =\\n      (bold && italic && BOLDITALIC) ||\\n      (bold && BOLD) ||\\n      (italic && ITALIC) ||\\n      NORMAL;\\n    substitutionInfo = {\\n      css: `\\\"${getFamilyName(baseFontName)}\\\",${loadedName}`,\\n      guessFallback: true,\\n      loadedName,\\n      baseFontName,\\n      src: `local(${baseFontName})`,\\n      style,\\n    };\\n    systemFontCache.set(key, substitutionInfo);\\n    return substitutionInfo;\\n  }\\n\\n  const src = [];\\n  \u002F\u002F Maybe the OS will have the exact font we want so just prepend it to the\\n  \u002F\u002F list.\\n  if (mustAddBaseFont && validateFontName(baseFontName)) {\\n    src.push(`local(${baseFontName})`);\\n  }\\n  const { style, ultimate } = generateFont(substitution, src, localFontPath);\\n  const guessFallback = ultimate === null;\\n  const fallback = guessFallback ? \\\"\\\" : `,${ultimate}`;\\n\\n  substitutionInfo = {\\n    css: `\\\"${getFamilyName(baseFontName)}\\\",${loadedName}${fallback}`,\\n    guessFallback,\\n    loadedName,\\n    baseFontName,\\n    src: src.join(\\\",\\\"),\\n    style,\\n  };\\n  systemFontCache.set(key, substitutionInfo);\\n\\n  return substitutionInfo;\\n}\\n\\nexport { getFontSubstitution };\\n\",\"\u002F* Copyright 2014 Opera Software ASA\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\\n *\\n * Based on https:\u002F\u002Fcode.google.com\u002Fp\u002Fsmhasher\u002Fwiki\u002FMurmurHash3.\\n * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.\\n *\u002F\\n\\nconst SEED = 0xc3d2e1f0;\\n\u002F\u002F Workaround for missing math precision in JS.\\nconst MASK_HIGH = 0xffff0000;\\nconst MASK_LOW = 0xffff;\\n\\nclass MurmurHash3_64 {\\n  constructor(seed) {\\n    this.h1 = seed ? seed & 0xffffffff : SEED;\\n    this.h2 = seed ? seed & 0xffffffff : SEED;\\n  }\\n\\n  update(input) {\\n    let data, length;\\n    if (typeof input === \\\"string\\\") {\\n      data = new Uint8Array(input.length * 2);\\n      length = 0;\\n      for (let i = 0, ii = input.length; i \u003C ii; i++) {\\n        const code = input.charCodeAt(i);\\n        if (code \u003C= 0xff) {\\n          data[length++] = code;\\n        } else {\\n          data[length++] = code >>> 8;\\n          data[length++] = code & 0xff;\\n        }\\n      }\\n    } else if (ArrayBuffer.isView(input)) {\\n      data = input.slice();\\n      length = data.byteLength;\\n    } else {\\n      throw new Error(\\\"Invalid data format, must be a string or TypedArray.\\\");\\n    }\\n\\n    const blockCounts = length >> 2;\\n    const tailLength = length - blockCounts * 4;\\n    \u002F\u002F We don't care about endianness here.\\n    const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\\n    let k1 = 0,\\n      k2 = 0;\\n    let h1 = this.h1,\\n      h2 = this.h2;\\n    const C1 = 0xcc9e2d51,\\n      C2 = 0x1b873593;\\n    const C1_LOW = C1 & MASK_LOW,\\n      C2_LOW = C2 & MASK_LOW;\\n\\n    for (let i = 0; i \u003C blockCounts; i++) {\\n      if (i & 1) {\\n        k1 = dataUint32[i];\\n        k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\\n        k1 = (k1 \u003C\u003C 15) | (k1 >>> 17);\\n        k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\\n        h1 ^= k1;\\n        h1 = (h1 \u003C\u003C 13) | (h1 >>> 19);\\n        h1 = h1 * 5 + 0xe6546b64;\\n      } else {\\n        k2 = dataUint32[i];\\n        k2 = ((k2 * C1) & MASK_HIGH) | ((k2 * C1_LOW) & MASK_LOW);\\n        k2 = (k2 \u003C\u003C 15) | (k2 >>> 17);\\n        k2 = ((k2 * C2) & MASK_HIGH) | ((k2 * C2_LOW) & MASK_LOW);\\n        h2 ^= k2;\\n        h2 = (h2 \u003C\u003C 13) | (h2 >>> 19);\\n        h2 = h2 * 5 + 0xe6546b64;\\n      }\\n    }\\n\\n    k1 = 0;\\n\\n    switch (tailLength) {\\n      case 3:\\n        k1 ^= data[blockCounts * 4 + 2] \u003C\u003C 16;\\n      \u002F* falls through *\u002F\\n      case 2:\\n        k1 ^= data[blockCounts * 4 + 1] \u003C\u003C 8;\\n      \u002F* falls through *\u002F\\n      case 1:\\n        k1 ^= data[blockCounts * 4];\\n        \u002F* falls through *\u002F\\n\\n        k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\\n        k1 = (k1 \u003C\u003C 15) | (k1 >>> 17);\\n        k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\\n        if (blockCounts & 1) {\\n          h1 ^= k1;\\n        } else {\\n          h2 ^= k1;\\n        }\\n    }\\n\\n    this.h1 = h1;\\n    this.h2 = h2;\\n  }\\n\\n  hexdigest() {\\n    let h1 = this.h1,\\n      h2 = this.h2;\\n\\n    h1 ^= h2 >>> 1;\\n    h1 = ((h1 * 0xed558ccd) & MASK_HIGH) | ((h1 * 0x8ccd) & MASK_LOW);\\n    h2 =\\n      ((h2 * 0xff51afd7) & MASK_HIGH) |\\n      (((((h2 \u003C\u003C 16) | (h1 >>> 16)) * 0xafd7ed55) & MASK_HIGH) >>> 16);\\n    h1 ^= h2 >>> 1;\\n    h1 = ((h1 * 0x1a85ec53) & MASK_HIGH) | ((h1 * 0xec53) & MASK_LOW);\\n    h2 =\\n      ((h2 * 0xc4ceb9fe) & MASK_HIGH) |\\n      (((((h2 \u003C\u003C 16) | (h1 >>> 16)) * 0xb9fe1a85) & MASK_HIGH) >>> 16);\\n    h1 ^= h2 >>> 1;\\n\\n    return (\\n      (h1 >>> 0).toString(16).padStart(8, \\\"0\\\") +\\n      (h2 >>> 0).toString(16).padStart(8, \\\"0\\\")\\n    );\\n  }\\n}\\n\\nexport { MurmurHash3_64 };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  assert,\\n  FeatureTest,\\n  FormatError,\\n  ImageKind,\\n  MathClamp,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  convertBlackAndWhiteToRGBA,\\n  convertToRGBA,\\n} from \\\"..\u002Fshared\u002Fimage_utils.js\\\";\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { ColorSpace } from \\\".\u002Fcolorspace.js\\\";\\nimport { ColorSpaceUtils } from \\\".\u002Fcolorspace_utils.js\\\";\\nimport { DecodeStream } from \\\".\u002Fdecode_stream.js\\\";\\nimport { ImageResizer } from \\\".\u002Fimage_resizer.js\\\";\\nimport { JpegStream } from \\\".\u002Fjpeg_stream.js\\\";\\nimport { JpxImage } from \\\".\u002Fjpx.js\\\";\\nimport { Name } from \\\".\u002Fprimitives.js\\\";\\n\\n\u002F**\\n * Resizes an image mask with 1 component.\\n * @param {TypedArray} src - The source buffer.\\n * @param {number} bpc - Number of bits per component.\\n * @param {number} w1 - Original width.\\n * @param {number} h1 - Original height.\\n * @param {number} w2 - New width.\\n * @param {number} h2 - New height.\\n * @returns {TypedArray} The resized image mask buffer.\\n *\u002F\\nfunction resizeImageMask(src, bpc, w1, h1, w2, h2) {\\n  const length = w2 * h2;\\n  let dest;\\n  if (bpc \u003C= 8) {\\n    dest = new Uint8Array(length);\\n  } else if (bpc \u003C= 16) {\\n    dest = new Uint16Array(length);\\n  } else {\\n    dest = new Uint32Array(length);\\n  }\\n  const xRatio = w1 \u002F w2;\\n  const yRatio = h1 \u002F h2;\\n  let i,\\n    j,\\n    py,\\n    newIndex = 0,\\n    oldIndex;\\n  const xScaled = new Uint16Array(w2);\\n  const w1Scanline = w1;\\n\\n  for (i = 0; i \u003C w2; i++) {\\n    xScaled[i] = Math.floor(i * xRatio);\\n  }\\n  for (i = 0; i \u003C h2; i++) {\\n    py = Math.floor(i * yRatio) * w1Scanline;\\n    for (j = 0; j \u003C w2; j++) {\\n      oldIndex = py + xScaled[j];\\n      dest[newIndex++] = src[oldIndex];\\n    }\\n  }\\n  return dest;\\n}\\n\\nclass PDFImage {\\n  constructor({\\n    xref,\\n    res,\\n    image,\\n    isInline = false,\\n    smask = null,\\n    mask = null,\\n    isMask = false,\\n    pdfFunctionFactory,\\n    globalColorSpaceCache,\\n    localColorSpaceCache,\\n  }) {\\n    this.image = image;\\n    const dict = image.dict;\\n\\n    const filter = dict.get(\\\"F\\\", \\\"Filter\\\");\\n    let filterName;\\n    if (filter instanceof Name) {\\n      filterName = filter.name;\\n    } else if (Array.isArray(filter)) {\\n      const filterZero = xref.fetchIfRef(filter[0]);\\n      if (filterZero instanceof Name) {\\n        filterName = filterZero.name;\\n      }\\n    }\\n    switch (filterName) {\\n      case \\\"JPXDecode\\\":\\n        ({\\n          width: image.width,\\n          height: image.height,\\n          componentsCount: image.numComps,\\n          bitsPerComponent: image.bitsPerComponent,\\n        } = JpxImage.parseImageProperties(image.stream));\\n        image.stream.reset();\\n        const reducePower = ImageResizer.getReducePowerForJPX(\\n          image.width,\\n          image.height,\\n          image.numComps\\n        );\\n        this.jpxDecoderOptions = {\\n          numComponents: 0,\\n          isIndexedColormap: false,\\n          smaskInData: dict.has(\\\"SMaskInData\\\"),\\n          reducePower,\\n        };\\n        if (reducePower) {\\n          const factor = 2 ** reducePower;\\n          image.width = Math.ceil(image.width \u002F factor);\\n          image.height = Math.ceil(image.height \u002F factor);\\n        }\\n        break;\\n      case \\\"JBIG2Decode\\\":\\n        image.bitsPerComponent = 1;\\n        image.numComps = 1;\\n        break;\\n    }\\n\\n    let width = dict.get(\\\"W\\\", \\\"Width\\\");\\n    let height = dict.get(\\\"H\\\", \\\"Height\\\");\\n\\n    if (\\n      Number.isInteger(image.width) &&\\n      image.width > 0 &&\\n      Number.isInteger(image.height) &&\\n      image.height > 0 &&\\n      (image.width !== width || image.height !== height)\\n    ) {\\n      warn(\\n        \\\"PDFImage - using the Width\u002FHeight of the image data, \\\" +\\n          \\\"rather than the image dictionary.\\\"\\n      );\\n      width = image.width;\\n      height = image.height;\\n    } else {\\n      const validWidth = typeof width === \\\"number\\\" && width > 0,\\n        validHeight = typeof height === \\\"number\\\" && height > 0;\\n\\n      if (!validWidth || !validHeight) {\\n        if (!image.fallbackDims) {\\n          throw new FormatError(\\n            `Invalid image width: ${width} or height: ${height}`\\n          );\\n        }\\n        warn(\\n          \\\"PDFImage - using the Width\u002FHeight of the parent image, for SMask\u002FMask data.\\\"\\n        );\\n        if (!validWidth) {\\n          width = image.fallbackDims.width;\\n        }\\n        if (!validHeight) {\\n          height = image.fallbackDims.height;\\n        }\\n      }\\n    }\\n    this.width = width;\\n    this.height = height;\\n\\n    this.interpolate = dict.get(\\\"I\\\", \\\"Interpolate\\\");\\n    this.imageMask = dict.get(\\\"IM\\\", \\\"ImageMask\\\") || false;\\n    this.matte = dict.get(\\\"Matte\\\") || false;\\n\\n    let bitsPerComponent = image.bitsPerComponent;\\n    if (!bitsPerComponent) {\\n      bitsPerComponent = dict.get(\\\"BPC\\\", \\\"BitsPerComponent\\\");\\n      if (!bitsPerComponent) {\\n        if (this.imageMask) {\\n          bitsPerComponent = 1;\\n        } else {\\n          throw new FormatError(\\n            `Bits per component missing in image: ${this.imageMask}`\\n          );\\n        }\\n      }\\n    }\\n    this.bpc = bitsPerComponent;\\n\\n    if (!this.imageMask) {\\n      let colorSpace = dict.getRaw(\\\"CS\\\") || dict.getRaw(\\\"ColorSpace\\\");\\n      const hasColorSpace = !!colorSpace;\\n      if (!hasColorSpace) {\\n        if (this.jpxDecoderOptions) {\\n          colorSpace = Name.get(\\\"DeviceRGBA\\\");\\n        } else {\\n          switch (image.numComps) {\\n            case 1:\\n              colorSpace = Name.get(\\\"DeviceGray\\\");\\n              break;\\n            case 3:\\n              colorSpace = Name.get(\\\"DeviceRGB\\\");\\n              break;\\n            case 4:\\n              colorSpace = Name.get(\\\"DeviceCMYK\\\");\\n              break;\\n            default:\\n              throw new Error(\\n                `Images with ${image.numComps} color components not supported.`\\n              );\\n          }\\n        }\\n      } else if (this.jpxDecoderOptions?.smaskInData) {\\n        \u002F\u002F If the jpx image has a color space then it mustn't be used in order\\n        \u002F\u002F to be able to use the color space that comes from the pdf.\\n        colorSpace = Name.get(\\\"DeviceRGBA\\\");\\n      }\\n\\n      this.colorSpace = ColorSpaceUtils.parse({\\n        cs: colorSpace,\\n        xref,\\n        resources: isInline ? res : null,\\n        pdfFunctionFactory,\\n        globalColorSpaceCache,\\n        localColorSpaceCache,\\n      });\\n      this.numComps = this.colorSpace.numComps;\\n\\n      if (this.jpxDecoderOptions) {\\n        this.jpxDecoderOptions.numComponents = hasColorSpace\\n          ? this.numComps\\n          : 0;\\n        \u002F\u002F If the jpx image has a color space then it musn't be used in order to\\n        \u002F\u002F be able to use the color space that comes from the pdf.\\n        this.jpxDecoderOptions.isIndexedColormap =\\n          this.colorSpace.name === \\\"Indexed\\\";\\n      }\\n    }\\n\\n    this.decode = dict.getArray(\\\"D\\\", \\\"Decode\\\");\\n    this.needsDecode = false;\\n    if (\\n      this.decode &&\\n      ((this.colorSpace &&\\n        !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent)) ||\\n        (isMask &&\\n          !ColorSpace.isDefaultDecode(this.decode, \u002F* numComps = *\u002F 1)))\\n    ) {\\n      this.needsDecode = true;\\n      \u002F\u002F Do some preprocessing to avoid more math.\\n      const max = (1 \u003C\u003C bitsPerComponent) - 1;\\n      this.decodeCoefficients = [];\\n      this.decodeAddends = [];\\n      const isIndexed = this.colorSpace?.name === \\\"Indexed\\\";\\n      for (let i = 0, j = 0; i \u003C this.decode.length; i += 2, ++j) {\\n        const dmin = this.decode[i];\\n        const dmax = this.decode[i + 1];\\n        this.decodeCoefficients[j] = isIndexed\\n          ? (dmax - dmin) \u002F max\\n          : dmax - dmin;\\n        this.decodeAddends[j] = isIndexed ? dmin : max * dmin;\\n      }\\n    }\\n\\n    if (smask) {\\n      \u002F\u002F Provide fallback width\u002Fheight values for corrupt SMask images\\n      \u002F\u002F (see issue19611.pdf).\\n      smask.fallbackDims ??= { width, height };\\n\\n      this.smask = new PDFImage({\\n        xref,\\n        res,\\n        image: smask,\\n        isInline,\\n        pdfFunctionFactory,\\n        globalColorSpaceCache,\\n        localColorSpaceCache,\\n      });\\n    } else if (mask) {\\n      if (mask instanceof BaseStream) {\\n        const maskDict = mask.dict,\\n          imageMask = maskDict.get(\\\"IM\\\", \\\"ImageMask\\\");\\n        if (!imageMask) {\\n          warn(\\\"Ignoring \u002FMask in image without \u002FImageMask.\\\");\\n        } else {\\n          \u002F\u002F Provide fallback width\u002Fheight values for corrupt Mask images\\n          \u002F\u002F (see issue19611.pdf).\\n          mask.fallbackDims ??= { width, height };\\n\\n          this.mask = new PDFImage({\\n            xref,\\n            res,\\n            image: mask,\\n            isInline,\\n            isMask: true,\\n            pdfFunctionFactory,\\n            globalColorSpaceCache,\\n            localColorSpaceCache,\\n          });\\n        }\\n      } else {\\n        \u002F\u002F Color key mask (just an array).\\n        this.mask = mask;\\n      }\\n    }\\n  }\\n\\n  \u002F**\\n   * Handles processing of image data and returns the Promise that is resolved\\n   * with a PDFImage when the image is ready to be used.\\n   *\u002F\\n  static async buildImage({\\n    xref,\\n    res,\\n    image,\\n    isInline = false,\\n    pdfFunctionFactory,\\n    globalColorSpaceCache,\\n    localColorSpaceCache,\\n  }) {\\n    const imageData = image;\\n    let smaskData = null;\\n    let maskData = null;\\n\\n    const smask = image.dict.get(\\\"SMask\\\");\\n    const mask = image.dict.get(\\\"Mask\\\");\\n\\n    if (smask) {\\n      if (smask instanceof BaseStream) {\\n        smaskData = smask;\\n      } else {\\n        warn(\\\"Unsupported \u002FSMask format.\\\");\\n      }\\n    } else if (mask) {\\n      if (mask instanceof BaseStream || Array.isArray(mask)) {\\n        maskData = mask;\\n      } else {\\n        warn(\\\"Unsupported \u002FMask format.\\\");\\n      }\\n    }\\n\\n    return new PDFImage({\\n      xref,\\n      res,\\n      image: imageData,\\n      isInline,\\n      smask: smaskData,\\n      mask: maskData,\\n      pdfFunctionFactory,\\n      globalColorSpaceCache,\\n      localColorSpaceCache,\\n    });\\n  }\\n\\n  static async createMask({ image, isOffscreenCanvasSupported = false }) {\\n    const { dict } = image;\\n    const width = dict.get(\\\"W\\\", \\\"Width\\\");\\n    const height = dict.get(\\\"H\\\", \\\"Height\\\");\\n\\n    const interpolate = dict.get(\\\"I\\\", \\\"Interpolate\\\");\\n    const decode = dict.getArray(\\\"D\\\", \\\"Decode\\\");\\n    const inverseDecode = decode?.[0] > 0;\\n\\n    const computedLength = ((width + 7) >> 3) * height;\\n    const imgArray = image.getBytes(computedLength);\\n\\n    const isSingleOpaquePixel =\\n      width === 1 &&\\n      height === 1 &&\\n      inverseDecode === (imgArray.length === 0 || !!(imgArray[0] & 128));\\n\\n    if (isSingleOpaquePixel) {\\n      return { isSingleOpaquePixel };\\n    }\\n\\n    if (isOffscreenCanvasSupported) {\\n      if (ImageResizer.needsToBeResized(width, height)) {\\n        const data = new Uint8ClampedArray(width * height * 4);\\n        convertBlackAndWhiteToRGBA({\\n          src: imgArray,\\n          dest: data,\\n          width,\\n          height,\\n          nonBlackColor: 0,\\n          inverseDecode,\\n        });\\n        return ImageResizer.createImage({\\n          kind: ImageKind.RGBA_32BPP,\\n          data,\\n          width,\\n          height,\\n          interpolate,\\n        });\\n      }\\n\\n      const canvas = new OffscreenCanvas(width, height);\\n      const ctx = canvas.getContext(\\\"2d\\\");\\n      const imgData = ctx.createImageData(width, height);\\n      convertBlackAndWhiteToRGBA({\\n        src: imgArray,\\n        dest: imgData.data,\\n        width,\\n        height,\\n        nonBlackColor: 0,\\n        inverseDecode,\\n      });\\n\\n      ctx.putImageData(imgData, 0, 0);\\n      const bitmap = canvas.transferToImageBitmap();\\n\\n      return {\\n        data: null,\\n        width,\\n        height,\\n        interpolate,\\n        bitmap,\\n      };\\n    }\\n    \u002F\u002F Fallback to get the data almost as they're and they'll be decoded\\n    \u002F\u002F just before being drawn.\\n\\n    \u002F\u002F |imgArray| might not contain full data for every pixel of the mask, so\\n    \u002F\u002F we need to distinguish between |computedLength| and |actualLength|.\\n    \u002F\u002F In particular, if inverseDecode is true, then the array we return must\\n    \u002F\u002F have a length of |computedLength|.\\n    const actualLength = imgArray.byteLength;\\n    const haveFullData = computedLength === actualLength;\\n    let data;\\n\\n    if (image instanceof DecodeStream && (!inverseDecode || haveFullData)) {\\n      \u002F\u002F imgArray came from a DecodeStream and its data is in an appropriate\\n      \u002F\u002F form, so we can just transfer it.\\n      data = imgArray;\\n    } else if (!inverseDecode) {\\n      data = new Uint8Array(imgArray);\\n    } else {\\n      data = new Uint8Array(computedLength);\\n      data.set(imgArray);\\n      data.fill(0xff, actualLength);\\n    }\\n\\n    \u002F\u002F If necessary, invert the original mask data (but not any extra we might\\n    \u002F\u002F have added above). It's safe to modify the array -- whether it's the\\n    \u002F\u002F original or a copy, we're about to transfer it anyway, so nothing else\\n    \u002F\u002F in this thread can be relying on its contents.\\n    if (inverseDecode) {\\n      for (let i = 0; i \u003C actualLength; i++) {\\n        data[i] ^= 0xff;\\n      }\\n    }\\n\\n    return { data, width, height, interpolate };\\n  }\\n\\n  get drawWidth() {\\n    return Math.max(this.width, this.smask?.width || 0, this.mask?.width || 0);\\n  }\\n\\n  get drawHeight() {\\n    return Math.max(\\n      this.height,\\n      this.smask?.height || 0,\\n      this.mask?.height || 0\\n    );\\n  }\\n\\n  decodeBuffer(buffer) {\\n    const bpc = this.bpc;\\n    const numComps = this.numComps;\\n\\n    const decodeAddends = this.decodeAddends;\\n    const decodeCoefficients = this.decodeCoefficients;\\n    const max = (1 \u003C\u003C bpc) - 1;\\n    let i, ii;\\n\\n    if (bpc === 1) {\\n      \u002F\u002F If the buffer needed decode that means it just needs to be inverted.\\n      for (i = 0, ii = buffer.length; i \u003C ii; i++) {\\n        buffer[i] = +!buffer[i];\\n      }\\n      return;\\n    }\\n    let index = 0;\\n    for (i = 0, ii = this.width * this.height; i \u003C ii; i++) {\\n      for (let j = 0; j \u003C numComps; j++) {\\n        \u002F\u002F Decode and clamp. The formula is different from the spec because we\\n        \u002F\u002F don't decode to float range [0,1], we decode it in the [0,max] range.\\n        buffer[index] = MathClamp(\\n          decodeAddends[j] + buffer[index] * decodeCoefficients[j],\\n          0,\\n          max\\n        );\\n        index++;\\n      }\\n    }\\n  }\\n\\n  getComponents(buffer) {\\n    const bpc = this.bpc;\\n\\n    \u002F\u002F This image doesn't require any extra work.\\n    if (bpc === 8) {\\n      return buffer;\\n    }\\n\\n    const width = this.width;\\n    const height = this.height;\\n    const numComps = this.numComps;\\n\\n    const length = width * height * numComps;\\n    let bufferPos = 0;\\n    let output;\\n    if (bpc \u003C= 8) {\\n      output = new Uint8Array(length);\\n    } else if (bpc \u003C= 16) {\\n      output = new Uint16Array(length);\\n    } else {\\n      output = new Uint32Array(length);\\n    }\\n    const rowComps = width * numComps;\\n\\n    const max = (1 \u003C\u003C bpc) - 1;\\n    let i = 0,\\n      ii,\\n      buf;\\n\\n    if (bpc === 1) {\\n      \u002F\u002F Optimization for reading 1 bpc images.\\n      let mask, loop1End, loop2End;\\n      for (let j = 0; j \u003C height; j++) {\\n        loop1End = i + (rowComps & ~7);\\n        loop2End = i + rowComps;\\n\\n        \u002F\u002F unroll loop for all full bytes\\n        while (i \u003C loop1End) {\\n          buf = buffer[bufferPos++];\\n          output[i] = (buf >> 7) & 1;\\n          output[i + 1] = (buf >> 6) & 1;\\n          output[i + 2] = (buf >> 5) & 1;\\n          output[i + 3] = (buf >> 4) & 1;\\n          output[i + 4] = (buf >> 3) & 1;\\n          output[i + 5] = (buf >> 2) & 1;\\n          output[i + 6] = (buf >> 1) & 1;\\n          output[i + 7] = buf & 1;\\n          i += 8;\\n        }\\n\\n        \u002F\u002F handle remaining bits\\n        if (i \u003C loop2End) {\\n          buf = buffer[bufferPos++];\\n          mask = 128;\\n          while (i \u003C loop2End) {\\n            output[i++] = +!!(buf & mask);\\n            mask >>= 1;\\n          }\\n        }\\n      }\\n    } else {\\n      \u002F\u002F The general case that handles all other bpc values.\\n      let bits = 0;\\n      buf = 0;\\n      for (i = 0, ii = length; i \u003C ii; ++i) {\\n        if (i % rowComps === 0) {\\n          buf = 0;\\n          bits = 0;\\n        }\\n\\n        while (bits \u003C bpc) {\\n          buf = (buf \u003C\u003C 8) | buffer[bufferPos++];\\n          bits += 8;\\n        }\\n\\n        const remainingBits = bits - bpc;\\n        let value = buf >> remainingBits;\\n        if (value \u003C 0) {\\n          value = 0;\\n        } else if (value > max) {\\n          value = max;\\n        }\\n        output[i] = value;\\n        buf &= (1 \u003C\u003C remainingBits) - 1;\\n        bits = remainingBits;\\n      }\\n    }\\n    return output;\\n  }\\n\\n  async fillOpacity(rgbaBuf, width, height, actualHeight, image) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        rgbaBuf instanceof Uint8ClampedArray,\\n        'PDFImage.fillOpacity: Unsupported \\\"rgbaBuf\\\" type.'\\n      );\\n    }\\n    const smask = this.smask;\\n    const mask = this.mask;\\n    let alphaBuf, sw, sh, i, ii, j;\\n\\n    if (smask) {\\n      sw = smask.width;\\n      sh = smask.height;\\n      alphaBuf = new Uint8ClampedArray(sw * sh);\\n      await smask.fillGrayBuffer(alphaBuf);\\n      if (sw !== width || sh !== height) {\\n        alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh, width, height);\\n      }\\n    } else if (mask) {\\n      if (mask instanceof PDFImage) {\\n        sw = mask.width;\\n        sh = mask.height;\\n        alphaBuf = new Uint8ClampedArray(sw * sh);\\n        mask.numComps = 1;\\n        await mask.fillGrayBuffer(alphaBuf);\\n\\n        \u002F\u002F Need to invert values in rgbaBuf\\n        for (i = 0, ii = sw * sh; i \u003C ii; ++i) {\\n          alphaBuf[i] = 255 - alphaBuf[i];\\n        }\\n\\n        if (sw !== width || sh !== height) {\\n          alphaBuf = resizeImageMask(alphaBuf, mask.bpc, sw, sh, width, height);\\n        }\\n      } else if (Array.isArray(mask)) {\\n        \u002F\u002F Color key mask: if any of the components are outside the range\\n        \u002F\u002F then they should be painted.\\n        alphaBuf = new Uint8ClampedArray(width * height);\\n        const numComps = this.numComps;\\n        for (i = 0, ii = width * height; i \u003C ii; ++i) {\\n          let opacity = 0;\\n          const imageOffset = i * numComps;\\n          for (j = 0; j \u003C numComps; ++j) {\\n            const color = image[imageOffset + j];\\n            const maskOffset = j * 2;\\n            if (color \u003C mask[maskOffset] || color > mask[maskOffset + 1]) {\\n              opacity = 255;\\n              break;\\n            }\\n          }\\n          alphaBuf[i] = opacity;\\n        }\\n      } else {\\n        throw new FormatError(\\\"Unknown mask format.\\\");\\n      }\\n    }\\n\\n    if (alphaBuf) {\\n      for (i = 0, j = 3, ii = width * actualHeight; i \u003C ii; ++i, j += 4) {\\n        rgbaBuf[j] = alphaBuf[i];\\n      }\\n    } else {\\n      \u002F\u002F No mask.\\n      for (i = 0, j = 3, ii = width * actualHeight; i \u003C ii; ++i, j += 4) {\\n        rgbaBuf[j] = 255;\\n      }\\n    }\\n  }\\n\\n  undoPreblend(buffer, width, height) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        buffer instanceof Uint8ClampedArray,\\n        'PDFImage.undoPreblend: Unsupported \\\"buffer\\\" type.'\\n      );\\n    }\\n    const matte = this.smask?.matte;\\n    if (!matte) {\\n      return;\\n    }\\n    const matteRgb = this.colorSpace.getRgb(matte, 0);\\n    const matteR = matteRgb[0];\\n    const matteG = matteRgb[1];\\n    const matteB = matteRgb[2];\\n    const length = width * height * 4;\\n    for (let i = 0; i \u003C length; i += 4) {\\n      const alpha = buffer[i + 3];\\n      if (alpha === 0) {\\n        \u002F\u002F according formula we have to get Infinity in all components\\n        \u002F\u002F making it white (typical paper color) should be okay\\n        buffer[i] = 255;\\n        buffer[i + 1] = 255;\\n        buffer[i + 2] = 255;\\n        continue;\\n      }\\n      const k = 255 \u002F alpha;\\n      buffer[i] = (buffer[i] - matteR) * k + matteR;\\n      buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;\\n      buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;\\n    }\\n  }\\n\\n  async createImageData(forceRGBA = false, isOffscreenCanvasSupported = false) {\\n    const drawWidth = this.drawWidth;\\n    const drawHeight = this.drawHeight;\\n    const imgData = {\\n      width: drawWidth,\\n      height: drawHeight,\\n      interpolate: this.interpolate,\\n      kind: 0,\\n      data: null,\\n      \u002F\u002F Other fields are filled in below.\\n    };\\n\\n    const numComps = this.numComps;\\n    const originalWidth = this.width;\\n    const originalHeight = this.height;\\n    const bpc = this.bpc;\\n\\n    \u002F\u002F Rows start at byte boundary.\\n    const rowBytes = (originalWidth * numComps * bpc + 7) >> 3;\\n    const mustBeResized =\\n      isOffscreenCanvasSupported &&\\n      ImageResizer.needsToBeResized(drawWidth, drawHeight);\\n\\n    if (!this.smask && !this.mask && this.colorSpace.name === \\\"DeviceRGBA\\\") {\\n      imgData.kind = ImageKind.RGBA_32BPP;\\n      const imgArray = (imgData.data = await this.getImageBytes(\\n        originalHeight * originalWidth * 4,\\n        {}\\n      ));\\n\\n      if (isOffscreenCanvasSupported) {\\n        if (!mustBeResized) {\\n          return this.createBitmap(\\n            ImageKind.RGBA_32BPP,\\n            drawWidth,\\n            drawHeight,\\n            imgArray\\n          );\\n        }\\n        return ImageResizer.createImage(imgData, false);\\n      }\\n\\n      return imgData;\\n    }\\n\\n    if (!forceRGBA) {\\n      \u002F\u002F If it is a 1-bit-per-pixel grayscale (i.e. black-and-white) image\\n      \u002F\u002F without any complications, we pass a same-sized copy to the main\\n      \u002F\u002F thread rather than expanding by 32x to RGBA form. This saves *lots*\\n      \u002F\u002F of memory for many scanned documents. It's also much faster.\\n      \u002F\u002F\\n      \u002F\u002F Similarly, if it is a 24-bit-per pixel RGB image without any\\n      \u002F\u002F complications, we avoid expanding by 1.333x to RGBA form.\\n      let kind;\\n      if (this.colorSpace.name === \\\"DeviceGray\\\" && bpc === 1) {\\n        kind = ImageKind.GRAYSCALE_1BPP;\\n      } else if (\\n        this.colorSpace.name === \\\"DeviceRGB\\\" &&\\n        bpc === 8 &&\\n        !this.needsDecode\\n      ) {\\n        kind = ImageKind.RGB_24BPP;\\n      }\\n      if (\\n        kind &&\\n        !this.smask &&\\n        !this.mask &&\\n        drawWidth === originalWidth &&\\n        drawHeight === originalHeight\\n      ) {\\n        const image = await this.#getImage(originalWidth, originalHeight);\\n        if (image) {\\n          return image;\\n        }\\n        const data = await this.getImageBytes(originalHeight * rowBytes, {});\\n        if (isOffscreenCanvasSupported) {\\n          if (mustBeResized) {\\n            return ImageResizer.createImage(\\n              {\\n                data,\\n                kind,\\n                width: drawWidth,\\n                height: drawHeight,\\n                interpolate: this.interpolate,\\n              },\\n              this.needsDecode\\n            );\\n          }\\n          return this.createBitmap(kind, originalWidth, originalHeight, data);\\n        }\\n        imgData.kind = kind;\\n        imgData.data = data;\\n\\n        if (this.needsDecode) {\\n          \u002F\u002F Invert the buffer (which must be grayscale if we reached here).\\n          assert(\\n            kind === ImageKind.GRAYSCALE_1BPP,\\n            \\\"PDFImage.createImageData: The image must be grayscale.\\\"\\n          );\\n          const buffer = imgData.data;\\n          for (let i = 0, ii = buffer.length; i \u003C ii; i++) {\\n            buffer[i] ^= 0xff;\\n          }\\n        }\\n        return imgData;\\n      }\\n      if (\\n        this.image instanceof JpegStream &&\\n        !this.smask &&\\n        !this.mask &&\\n        !this.needsDecode\\n      ) {\\n        let imageLength = originalHeight * rowBytes;\\n        if (isOffscreenCanvasSupported && !mustBeResized) {\\n          let isHandled = false;\\n          switch (this.colorSpace.name) {\\n            case \\\"DeviceGray\\\":\\n              \u002F\u002F Avoid truncating the image, since `JpegImage.getData`\\n              \u002F\u002F will expand the image data when `forceRGB === true`.\\n              imageLength *= 4;\\n              isHandled = true;\\n              break;\\n            case \\\"DeviceRGB\\\":\\n              imageLength = (imageLength \u002F 3) * 4;\\n              isHandled = true;\\n              break;\\n            case \\\"DeviceCMYK\\\":\\n              isHandled = true;\\n              break;\\n          }\\n\\n          if (isHandled) {\\n            const image = await this.#getImage(drawWidth, drawHeight);\\n            if (image) {\\n              return image;\\n            }\\n            const rgba = await this.getImageBytes(imageLength, {\\n              drawWidth,\\n              drawHeight,\\n              forceRGBA: true,\\n            });\\n            return this.createBitmap(\\n              ImageKind.RGBA_32BPP,\\n              drawWidth,\\n              drawHeight,\\n              rgba\\n            );\\n          }\\n        } else {\\n          switch (this.colorSpace.name) {\\n            case \\\"DeviceGray\\\":\\n              imageLength *= 3;\\n            \u002F* falls through *\u002F\\n            case \\\"DeviceRGB\\\":\\n            case \\\"DeviceCMYK\\\":\\n              imgData.kind = ImageKind.RGB_24BPP;\\n              imgData.data = await this.getImageBytes(imageLength, {\\n                drawWidth,\\n                drawHeight,\\n                forceRGB: true,\\n              });\\n              if (mustBeResized) {\\n                \u002F\u002F The image is too big so we resize it.\\n                return ImageResizer.createImage(imgData);\\n              }\\n              return imgData;\\n          }\\n        }\\n      }\\n    }\\n\\n    const imgArray = await this.getImageBytes(originalHeight * rowBytes, {\\n      internal: true,\\n    });\\n    \u002F\u002F imgArray can be incomplete (e.g. after CCITT fax encoding).\\n    const actualHeight =\\n      0 | (((imgArray.length \u002F rowBytes) * drawHeight) \u002F originalHeight);\\n\\n    const comps = this.getComponents(imgArray);\\n\\n    \u002F\u002F If opacity data is present, use RGBA_32BPP form. Otherwise, use the\\n    \u002F\u002F more compact RGB_24BPP form if allowable.\\n    let alpha01, maybeUndoPreblend;\\n\\n    let canvas, ctx, canvasImgData, data;\\n    if (isOffscreenCanvasSupported && !mustBeResized) {\\n      canvas = new OffscreenCanvas(drawWidth, drawHeight);\\n      ctx = canvas.getContext(\\\"2d\\\");\\n      canvasImgData = ctx.createImageData(drawWidth, drawHeight);\\n      data = canvasImgData.data;\\n    }\\n\\n    imgData.kind = ImageKind.RGBA_32BPP;\\n\\n    if (!forceRGBA && !this.smask && !this.mask) {\\n      if (!isOffscreenCanvasSupported || mustBeResized) {\\n        imgData.kind = ImageKind.RGB_24BPP;\\n        data = new Uint8ClampedArray(drawWidth * drawHeight * 3);\\n        alpha01 = 0;\\n      } else {\\n        const arr = new Uint32Array(data.buffer);\\n        arr.fill(FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff);\\n        alpha01 = 1;\\n      }\\n      maybeUndoPreblend = false;\\n    } else {\\n      if (!isOffscreenCanvasSupported || mustBeResized) {\\n        data = new Uint8ClampedArray(drawWidth * drawHeight * 4);\\n      }\\n\\n      alpha01 = 1;\\n      maybeUndoPreblend = true;\\n\\n      \u002F\u002F Color key masking (opacity) must be performed before decoding.\\n      await this.fillOpacity(data, drawWidth, drawHeight, actualHeight, comps);\\n    }\\n\\n    if (this.needsDecode) {\\n      this.decodeBuffer(comps);\\n    }\\n    this.colorSpace.fillRgb(\\n      data,\\n      originalWidth,\\n      originalHeight,\\n      drawWidth,\\n      drawHeight,\\n      actualHeight,\\n      bpc,\\n      comps,\\n      alpha01\\n    );\\n    if (maybeUndoPreblend) {\\n      this.undoPreblend(data, drawWidth, actualHeight);\\n    }\\n\\n    if (isOffscreenCanvasSupported && !mustBeResized) {\\n      ctx.putImageData(canvasImgData, 0, 0);\\n      const bitmap = canvas.transferToImageBitmap();\\n\\n      return {\\n        data: null,\\n        width: drawWidth,\\n        height: drawHeight,\\n        bitmap,\\n        interpolate: this.interpolate,\\n      };\\n    }\\n\\n    imgData.data = data;\\n    if (mustBeResized) {\\n      return ImageResizer.createImage(imgData);\\n    }\\n    return imgData;\\n  }\\n\\n  async fillGrayBuffer(buffer) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        buffer instanceof Uint8ClampedArray,\\n        'PDFImage.fillGrayBuffer: Unsupported \\\"buffer\\\" type.'\\n      );\\n    }\\n    const numComps = this.numComps;\\n    if (numComps !== 1) {\\n      throw new FormatError(\\n        `Reading gray scale from a color image: ${numComps}`\\n      );\\n    }\\n\\n    const width = this.width;\\n    const height = this.height;\\n    const bpc = this.bpc;\\n\\n    \u002F\u002F rows start at byte boundary\\n    const rowBytes = (width * numComps * bpc + 7) >> 3;\\n    const imgArray = await this.getImageBytes(height * rowBytes, {\\n      internal: true,\\n    });\\n\\n    const comps = this.getComponents(imgArray);\\n    let i, length;\\n\\n    if (bpc === 1) {\\n      \u002F\u002F inline decoding (= inversion) for 1 bpc images\\n      length = width * height;\\n      if (this.needsDecode) {\\n        \u002F\u002F invert and scale to {0, 255}\\n        for (i = 0; i \u003C length; ++i) {\\n          buffer[i] = (comps[i] - 1) & 255;\\n        }\\n      } else {\\n        \u002F\u002F scale to {0, 255}\\n        for (i = 0; i \u003C length; ++i) {\\n          buffer[i] = -comps[i] & 255;\\n        }\\n      }\\n      return;\\n    }\\n\\n    if (this.needsDecode) {\\n      this.decodeBuffer(comps);\\n    }\\n    length = width * height;\\n    \u002F\u002F we aren't using a colorspace so we need to scale the value\\n    const scale = 255 \u002F ((1 \u003C\u003C bpc) - 1);\\n    for (i = 0; i \u003C length; ++i) {\\n      buffer[i] = scale * comps[i];\\n    }\\n  }\\n\\n  createBitmap(kind, width, height, src) {\\n    const canvas = new OffscreenCanvas(width, height);\\n    const ctx = canvas.getContext(\\\"2d\\\");\\n    let imgData;\\n    if (kind === ImageKind.RGBA_32BPP) {\\n      imgData = new ImageData(src, width, height);\\n    } else {\\n      imgData = ctx.createImageData(width, height);\\n      convertToRGBA({\\n        kind,\\n        src,\\n        dest: new Uint32Array(imgData.data.buffer),\\n        width,\\n        height,\\n        inverseDecode: this.needsDecode,\\n      });\\n    }\\n    ctx.putImageData(imgData, 0, 0);\\n    const bitmap = canvas.transferToImageBitmap();\\n\\n    return {\\n      data: null,\\n      width,\\n      height,\\n      bitmap,\\n      interpolate: this.interpolate,\\n    };\\n  }\\n\\n  async #getImage(width, height) {\\n    const bitmap = await this.image.getTransferableImage();\\n    if (!bitmap) {\\n      return null;\\n    }\\n    return {\\n      data: null,\\n      width,\\n      height,\\n      bitmap,\\n      interpolate: this.interpolate,\\n    };\\n  }\\n\\n  async getImageBytes(\\n    length,\\n    {\\n      drawWidth,\\n      drawHeight,\\n      forceRGBA = false,\\n      forceRGB = false,\\n      internal = false,\\n    }\\n  ) {\\n    this.image.reset();\\n    this.image.drawWidth = drawWidth || this.width;\\n    this.image.drawHeight = drawHeight || this.height;\\n    this.image.forceRGBA = !!forceRGBA;\\n    this.image.forceRGB = !!forceRGB;\\n    const imageBytes = await this.image.getImageData(\\n      length,\\n      this.jpxDecoderOptions\\n    );\\n\\n    \u002F\u002F If imageBytes came from a DecodeStream, we're safe to transfer it\\n    \u002F\u002F (and thus detach its underlying buffer) because it will constitute\\n    \u002F\u002F the entire DecodeStream's data.  But if it came from a Stream, we\\n    \u002F\u002F need to copy it because it'll only be a portion of the Stream's\\n    \u002F\u002F data, and the rest will be read later on.\\n    if (internal || this.image instanceof DecodeStream) {\\n      return imageBytes;\\n    }\\n    assert(\\n      imageBytes instanceof Uint8Array,\\n      'PDFImage.getImageBytes: Unsupported \\\"imageBytes\\\" type.'\\n    );\\n    return new Uint8Array(imageBytes);\\n  }\\n}\\n\\nexport { PDFImage };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  AbortException,\\n  assert,\\n  DrawOPS,\\n  FONT_IDENTITY_MATRIX,\\n  FormatError,\\n  info,\\n  isArrayEqual,\\n  normalizeUnicode,\\n  OPS,\\n  shadow,\\n  stringToPDFString,\\n  TextRenderingMode,\\n  Util,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { CMapFactory, IdentityCMap } from \\\".\u002Fcmap.js\\\";\\nimport { Cmd, Dict, EOF, isName, Name, Ref, RefSet } from \\\".\u002Fprimitives.js\\\";\\nimport { compileType3Glyph, FontFlags } from \\\".\u002Ffonts_utils.js\\\";\\nimport { ErrorFont, Font } from \\\".\u002Ffonts.js\\\";\\nimport {\\n  fetchBinaryData,\\n  IDENTITY_MATRIX,\\n  isNumberArray,\\n  lookupMatrix,\\n  lookupNormalRect,\\n} from \\\".\u002Fcore_utils.js\\\";\\nimport {\\n  getEncoding,\\n  MacRomanEncoding,\\n  StandardEncoding,\\n  SymbolSetEncoding,\\n  WinAnsiEncoding,\\n  ZapfDingbatsEncoding,\\n} from \\\".\u002Fencodings.js\\\";\\nimport {\\n  getFontNameToFileMap,\\n  getSerifFonts,\\n  getStandardFontName,\\n  getStdFontMap,\\n  getSymbolsFonts,\\n  isKnownFontName,\\n} from \\\".\u002Fstandard_fonts.js\\\";\\nimport { getTilingPatternIR, Pattern } from \\\".\u002Fpattern.js\\\";\\nimport { getXfaFontDict, getXfaFontName } from \\\".\u002Fxfa_fonts.js\\\";\\nimport { IdentityToUnicodeMap, ToUnicodeMap } from \\\".\u002Fto_unicode_map.js\\\";\\nimport { isPDFFunction, PDFFunctionFactory } from \\\".\u002Ffunction.js\\\";\\nimport { Lexer, Parser } from \\\".\u002Fparser.js\\\";\\nimport {\\n  LocalColorSpaceCache,\\n  LocalGStateCache,\\n  LocalImageCache,\\n  LocalTilingPatternCache,\\n  RegionalImageCache,\\n} from \\\".\u002Fimage_utils.js\\\";\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { bidi } from \\\".\u002Fbidi.js\\\";\\nimport { ColorSpace } from \\\".\u002Fcolorspace.js\\\";\\nimport { ColorSpaceUtils } from \\\".\u002Fcolorspace_utils.js\\\";\\nimport { getFontSubstitution } from \\\".\u002Ffont_substitutions.js\\\";\\nimport { getGlyphsUnicode } from \\\".\u002Fglyphlist.js\\\";\\nimport { getMetrics } from \\\".\u002Fmetrics.js\\\";\\nimport { getUnicodeForGlyph } from \\\".\u002Funicode.js\\\";\\nimport { MurmurHash3_64 } from \\\"..\u002Fshared\u002Fmurmurhash3.js\\\";\\nimport { OperatorList } from \\\".\u002Foperator_list.js\\\";\\nimport { PDFImage } from \\\".\u002Fimage.js\\\";\\nimport { Stream } from \\\".\u002Fstream.js\\\";\\n\\nconst DefaultPartialEvaluatorOptions = Object.freeze({\\n  maxImageSize: -1,\\n  disableFontFace: false,\\n  ignoreErrors: false,\\n  isEvalSupported: true,\\n  isOffscreenCanvasSupported: false,\\n  isImageDecoderSupported: false,\\n  canvasMaxAreaInBytes: -1,\\n  fontExtraProperties: false,\\n  useSystemFonts: true,\\n  useWasm: true,\\n  useWorkerFetch: true,\\n  cMapUrl: null,\\n  iccUrl: null,\\n  standardFontDataUrl: null,\\n  wasmUrl: null,\\n});\\n\\nconst PatternType = {\\n  TILING: 1,\\n  SHADING: 2,\\n};\\n\\n\u002F\u002F Optionally avoid sending individual, or very few, text chunks to reduce\\n\u002F\u002F `postMessage` overhead with ReadableStream (see issue 13962).\\n\u002F\u002F\\n\u002F\u002F PLEASE NOTE: This value should *not* be too large (it's used as a lower limit\\n\u002F\u002F in `enqueueChunk`), since that would cause streaming of textContent to become\\n\u002F\u002F essentially useless in practice by sending all (or most) chunks at once.\\n\u002F\u002F Also, a too large value would (indirectly) affect the main-thread `textLayer`\\n\u002F\u002F building negatively by forcing all textContent to be handled at once, which\\n\u002F\u002F could easily end up hurting *overall* performance (e.g. rendering as well).\\nconst TEXT_CHUNK_BATCH_SIZE = 10;\\n\\nconst deferred = Promise.resolve();\\n\\n\u002F\u002F Convert PDF blend mode names to HTML5 blend mode names.\\nfunction normalizeBlendMode(value, parsingArray = false) {\\n  if (Array.isArray(value)) {\\n    \u002F\u002F Use the first *supported* BM value in the Array (fixes issue11279.pdf).\\n    for (const val of value) {\\n      const maybeBM = normalizeBlendMode(val, \u002F* parsingArray = *\u002F true);\\n      if (maybeBM) {\\n        return maybeBM;\\n      }\\n    }\\n    warn(`Unsupported blend mode Array: ${value}`);\\n    return \\\"source-over\\\";\\n  }\\n\\n  if (!(value instanceof Name)) {\\n    if (parsingArray) {\\n      return null;\\n    }\\n    return \\\"source-over\\\";\\n  }\\n  switch (value.name) {\\n    case \\\"Normal\\\":\\n    case \\\"Compatible\\\":\\n      return \\\"source-over\\\";\\n    case \\\"Multiply\\\":\\n      return \\\"multiply\\\";\\n    case \\\"Screen\\\":\\n      return \\\"screen\\\";\\n    case \\\"Overlay\\\":\\n      return \\\"overlay\\\";\\n    case \\\"Darken\\\":\\n      return \\\"darken\\\";\\n    case \\\"Lighten\\\":\\n      return \\\"lighten\\\";\\n    case \\\"ColorDodge\\\":\\n      return \\\"color-dodge\\\";\\n    case \\\"ColorBurn\\\":\\n      return \\\"color-burn\\\";\\n    case \\\"HardLight\\\":\\n      return \\\"hard-light\\\";\\n    case \\\"SoftLight\\\":\\n      return \\\"soft-light\\\";\\n    case \\\"Difference\\\":\\n      return \\\"difference\\\";\\n    case \\\"Exclusion\\\":\\n      return \\\"exclusion\\\";\\n    case \\\"Hue\\\":\\n      return \\\"hue\\\";\\n    case \\\"Saturation\\\":\\n      return \\\"saturation\\\";\\n    case \\\"Color\\\":\\n      return \\\"color\\\";\\n    case \\\"Luminosity\\\":\\n      return \\\"luminosity\\\";\\n  }\\n  if (parsingArray) {\\n    return null;\\n  }\\n  warn(`Unsupported blend mode: ${value.name}`);\\n  return \\\"source-over\\\";\\n}\\n\\nfunction addCachedImageOps(\\n  opList,\\n  { objId, fn, args, optionalContent, hasMask }\\n) {\\n  if (objId) {\\n    opList.addDependency(objId);\\n  }\\n  opList.addImageOps(fn, args, optionalContent, hasMask);\\n\\n  if (fn === OPS.paintImageMaskXObject && args[0]?.count > 0) {\\n    args[0].count++;\\n  }\\n}\\n\\n\u002F\u002F Trying to minimize Date.now() usage and check every 100 time.\\nclass TimeSlotManager {\\n  static TIME_SLOT_DURATION_MS = 20;\\n\\n  static CHECK_TIME_EVERY = 100;\\n\\n  constructor() {\\n    this.reset();\\n  }\\n\\n  check() {\\n    if (++this.checked \u003C TimeSlotManager.CHECK_TIME_EVERY) {\\n      return false;\\n    }\\n    this.checked = 0;\\n    return this.endTime \u003C= Date.now();\\n  }\\n\\n  reset() {\\n    this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS;\\n    this.checked = 0;\\n  }\\n}\\n\\nclass PartialEvaluator {\\n  constructor({\\n    xref,\\n    handler,\\n    pageIndex,\\n    idFactory,\\n    fontCache,\\n    builtInCMapCache,\\n    standardFontDataCache,\\n    globalColorSpaceCache,\\n    globalImageCache,\\n    systemFontCache,\\n    options = null,\\n  }) {\\n    this.xref = xref;\\n    this.handler = handler;\\n    this.pageIndex = pageIndex;\\n    this.idFactory = idFactory;\\n    this.fontCache = fontCache;\\n    this.builtInCMapCache = builtInCMapCache;\\n    this.standardFontDataCache = standardFontDataCache;\\n    this.globalColorSpaceCache = globalColorSpaceCache;\\n    this.globalImageCache = globalImageCache;\\n    this.systemFontCache = systemFontCache;\\n    this.options = options || DefaultPartialEvaluatorOptions;\\n    this.type3FontRefs = null;\\n\\n    this._regionalImageCache = new RegionalImageCache();\\n    this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this);\\n  }\\n\\n  \u002F**\\n   * Since Functions are only cached (locally) by reference, we can share one\\n   * `PDFFunctionFactory` instance within this `PartialEvaluator` instance.\\n   *\u002F\\n  get _pdfFunctionFactory() {\\n    const pdfFunctionFactory = new PDFFunctionFactory({\\n      xref: this.xref,\\n      isEvalSupported: this.options.isEvalSupported,\\n    });\\n    return shadow(this, \\\"_pdfFunctionFactory\\\", pdfFunctionFactory);\\n  }\\n\\n  get parsingType3Font() {\\n    return !!this.type3FontRefs;\\n  }\\n\\n  clone(newOptions = null) {\\n    const newEvaluator = Object.create(this);\\n    newEvaluator.options = Object.assign(\\n      Object.create(null),\\n      this.options,\\n      newOptions\\n    );\\n    return newEvaluator;\\n  }\\n\\n  hasBlendModes(resources, nonBlendModesSet) {\\n    if (!(resources instanceof Dict)) {\\n      return false;\\n    }\\n    if (resources.objId && nonBlendModesSet.has(resources.objId)) {\\n      return false;\\n    }\\n\\n    const processed = new RefSet(nonBlendModesSet);\\n    if (resources.objId) {\\n      processed.put(resources.objId);\\n    }\\n\\n    const nodes = [resources],\\n      xref = this.xref;\\n    while (nodes.length) {\\n      const node = nodes.shift();\\n      \u002F\u002F First check the current resources for blend modes.\\n      const graphicStates = node.get(\\\"ExtGState\\\");\\n      if (graphicStates instanceof Dict) {\\n        for (let graphicState of graphicStates.getRawValues()) {\\n          if (graphicState instanceof Ref) {\\n            if (processed.has(graphicState)) {\\n              continue; \u002F\u002F The ExtGState has already been processed.\\n            }\\n            try {\\n              graphicState = xref.fetch(graphicState);\\n            } catch (ex) {\\n              \u002F\u002F Avoid parsing a corrupt ExtGState more than once.\\n              processed.put(graphicState);\\n\\n              info(`hasBlendModes - ignoring ExtGState: \\\"${ex}\\\".`);\\n              continue;\\n            }\\n          }\\n          if (!(graphicState instanceof Dict)) {\\n            continue;\\n          }\\n          if (graphicState.objId) {\\n            processed.put(graphicState.objId);\\n          }\\n\\n          const bm = graphicState.get(\\\"BM\\\");\\n          if (bm instanceof Name) {\\n            if (bm.name !== \\\"Normal\\\") {\\n              return true;\\n            }\\n            continue;\\n          }\\n          if (bm !== undefined && Array.isArray(bm)) {\\n            for (const element of bm) {\\n              if (element instanceof Name && element.name !== \\\"Normal\\\") {\\n                return true;\\n              }\\n            }\\n          }\\n        }\\n      }\\n      \u002F\u002F Descend into the XObjects to look for more resources and blend modes.\\n      const xObjects = node.get(\\\"XObject\\\");\\n      if (!(xObjects instanceof Dict)) {\\n        continue;\\n      }\\n      for (let xObject of xObjects.getRawValues()) {\\n        if (xObject instanceof Ref) {\\n          if (processed.has(xObject)) {\\n            \u002F\u002F The XObject has already been processed, and by avoiding a\\n            \u002F\u002F redundant `xref.fetch` we can *significantly* reduce the load\\n            \u002F\u002F time for badly generated PDF files (fixes issue6961.pdf).\\n            continue;\\n          }\\n          try {\\n            xObject = xref.fetch(xObject);\\n          } catch (ex) {\\n            \u002F\u002F Avoid parsing a corrupt XObject more than once.\\n            processed.put(xObject);\\n\\n            info(`hasBlendModes - ignoring XObject: \\\"${ex}\\\".`);\\n            continue;\\n          }\\n        }\\n        if (!(xObject instanceof BaseStream)) {\\n          continue;\\n        }\\n        if (xObject.dict.objId) {\\n          processed.put(xObject.dict.objId);\\n        }\\n        const xResources = xObject.dict.get(\\\"Resources\\\");\\n        if (!(xResources instanceof Dict)) {\\n          continue;\\n        }\\n        \u002F\u002F Checking objId to detect an infinite loop.\\n        if (xResources.objId && processed.has(xResources.objId)) {\\n          continue;\\n        }\\n\\n        nodes.push(xResources);\\n        if (xResources.objId) {\\n          processed.put(xResources.objId);\\n        }\\n      }\\n    }\\n\\n    \u002F\u002F When no blend modes exist, there's no need re-fetch\u002Fre-parse any of the\\n    \u002F\u002F processed `Ref`s again for subsequent pages. This helps reduce redundant\\n    \u002F\u002F `XRef.fetch` calls for some documents (e.g. issue6961.pdf).\\n    for (const ref of processed) {\\n      nonBlendModesSet.put(ref);\\n    }\\n    return false;\\n  }\\n\\n  async fetchBuiltInCMap(name) {\\n    const cachedData = this.builtInCMapCache.get(name);\\n    if (cachedData) {\\n      return cachedData;\\n    }\\n    let data;\\n\\n    if (this.options.useWorkerFetch) {\\n      \u002F\u002F Only compressed CMaps are (currently) supported here.\\n      data = {\\n        cMapData: await fetchBinaryData(`${this.options.cMapUrl}${name}.bcmap`),\\n        isCompressed: true,\\n      };\\n    } else {\\n      \u002F\u002F Get the data on the main-thread instead.\\n      data = await this.handler.sendWithPromise(\\\"FetchBinaryData\\\", {\\n        type: \\\"cMapReaderFactory\\\",\\n        name,\\n      });\\n    }\\n    \u002F\u002F Cache the CMap data, to avoid fetching it repeatedly.\\n    this.builtInCMapCache.set(name, data);\\n\\n    return data;\\n  }\\n\\n  async fetchStandardFontData(name) {\\n    const cachedData = this.standardFontDataCache.get(name);\\n    if (cachedData) {\\n      return new Stream(cachedData);\\n    }\\n\\n    \u002F\u002F The symbol fonts are not consistent across platforms, always load the\\n    \u002F\u002F standard font data for them.\\n    if (\\n      this.options.useSystemFonts &&\\n      name !== \\\"Symbol\\\" &&\\n      name !== \\\"ZapfDingbats\\\"\\n    ) {\\n      return null;\\n    }\\n\\n    const standardFontNameToFileName = getFontNameToFileMap(),\\n      filename = standardFontNameToFileName[name];\\n    let data;\\n\\n    try {\\n      if (this.options.useWorkerFetch) {\\n        data = await fetchBinaryData(\\n          `${this.options.standardFontDataUrl}${filename}`\\n        );\\n      } else {\\n        \u002F\u002F Get the data on the main-thread instead.\\n        data = await this.handler.sendWithPromise(\\\"FetchBinaryData\\\", {\\n          type: \\\"standardFontDataFactory\\\",\\n          filename,\\n        });\\n      }\\n    } catch (ex) {\\n      warn(ex);\\n      return null;\\n    }\\n    \u002F\u002F Cache the \\\"raw\\\" standard font data, to avoid fetching it repeatedly\\n    \u002F\u002F (see e.g. issue 11399).\\n    this.standardFontDataCache.set(name, data);\\n\\n    return new Stream(data);\\n  }\\n\\n  async buildFormXObject(\\n    resources,\\n    xobj,\\n    smask,\\n    operatorList,\\n    task,\\n    initialState,\\n    localColorSpaceCache,\\n    seenRefs\\n  ) {\\n    const { dict } = xobj;\\n    const matrix = lookupMatrix(dict.getArray(\\\"Matrix\\\"), null);\\n    const bbox = lookupNormalRect(dict.getArray(\\\"BBox\\\"), null);\\n\\n    let optionalContent, groupOptions;\\n    if (dict.has(\\\"OC\\\")) {\\n      optionalContent = await this.parseMarkedContentProps(\\n        dict.get(\\\"OC\\\"),\\n        resources\\n      );\\n    }\\n    if (optionalContent !== undefined) {\\n      operatorList.addOp(OPS.beginMarkedContentProps, [\\\"OC\\\", optionalContent]);\\n    }\\n    const group = dict.get(\\\"Group\\\");\\n    if (group) {\\n      groupOptions = {\\n        matrix,\\n        bbox,\\n        smask,\\n        isolated: false,\\n        knockout: false,\\n      };\\n\\n      const groupSubtype = group.get(\\\"S\\\");\\n      let colorSpace = null;\\n      if (isName(groupSubtype, \\\"Transparency\\\")) {\\n        groupOptions.isolated = group.get(\\\"I\\\") || false;\\n        groupOptions.knockout = group.get(\\\"K\\\") || false;\\n        if (group.has(\\\"CS\\\")) {\\n          const cs = this._getColorSpace(\\n            group.getRaw(\\\"CS\\\"),\\n            resources,\\n            localColorSpaceCache\\n          );\\n          colorSpace =\\n            cs instanceof ColorSpace ? cs : await this._handleColorSpace(cs);\\n        }\\n      }\\n\\n      if (smask?.backdrop) {\\n        colorSpace ||= ColorSpaceUtils.rgb;\\n        smask.backdrop = colorSpace.getRgbHex(smask.backdrop, 0);\\n      }\\n\\n      operatorList.addOp(OPS.beginGroup, [groupOptions]);\\n    }\\n\\n    \u002F\u002F If it's a group, a new canvas will be created that is the size of the\\n    \u002F\u002F bounding box and translated to the correct position so we don't need to\\n    \u002F\u002F apply the bounding box to it.\\n    const f32matrix = matrix && new Float32Array(matrix);\\n    const f32bbox = (!group && bbox && new Float32Array(bbox)) || null;\\n    const args = [f32matrix, f32bbox];\\n    operatorList.addOp(OPS.paintFormXObjectBegin, args);\\n\\n    const localResources = dict.get(\\\"Resources\\\");\\n\\n    await this.getOperatorList({\\n      stream: xobj,\\n      task,\\n      resources: localResources instanceof Dict ? localResources : resources,\\n      operatorList,\\n      initialState,\\n      prevRefs: seenRefs,\\n    });\\n    operatorList.addOp(OPS.paintFormXObjectEnd, []);\\n\\n    if (group) {\\n      operatorList.addOp(OPS.endGroup, [groupOptions]);\\n    }\\n\\n    if (optionalContent !== undefined) {\\n      operatorList.addOp(OPS.endMarkedContent, []);\\n    }\\n  }\\n\\n  _sendImgData(objId, imgData, cacheGlobally = false) {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      imgData\\n    ) {\\n      assert(Number.isInteger(imgData.dataLen), \\\"Expected dataLen to be set.\\\");\\n    }\\n    const transfers = imgData ? [imgData.bitmap || imgData.data.buffer] : null;\\n\\n    if (this.parsingType3Font || cacheGlobally) {\\n      return this.handler.send(\\n        \\\"commonobj\\\",\\n        [objId, \\\"Image\\\", imgData],\\n        transfers\\n      );\\n    }\\n    return this.handler.send(\\n      \\\"obj\\\",\\n      [objId, this.pageIndex, \\\"Image\\\", imgData],\\n      transfers\\n    );\\n  }\\n\\n  async buildPaintImageXObject({\\n    resources,\\n    image,\\n    isInline = false,\\n    operatorList,\\n    cacheKey,\\n    localImageCache,\\n    localColorSpaceCache,\\n  }) {\\n    const { maxImageSize, ignoreErrors, isOffscreenCanvasSupported } =\\n      this.options;\\n\\n    const { dict } = image;\\n    const imageRef = dict.objId;\\n    const w = dict.get(\\\"W\\\", \\\"Width\\\");\\n    const h = dict.get(\\\"H\\\", \\\"Height\\\");\\n\\n    if (!(w && typeof w === \\\"number\\\") || !(h && typeof h === \\\"number\\\")) {\\n      warn(\\\"Image dimensions are missing, or not numbers.\\\");\\n      return;\\n    }\\n    if (maxImageSize !== -1 && w * h > maxImageSize) {\\n      const msg = \\\"Image exceeded maximum allowed size and was removed.\\\";\\n\\n      if (!ignoreErrors) {\\n        throw new Error(msg);\\n      }\\n      warn(msg);\\n      return;\\n    }\\n\\n    let optionalContent;\\n    if (dict.has(\\\"OC\\\")) {\\n      optionalContent = await this.parseMarkedContentProps(\\n        dict.get(\\\"OC\\\"),\\n        resources\\n      );\\n    }\\n\\n    const imageMask = dict.get(\\\"IM\\\", \\\"ImageMask\\\") || false;\\n    let imgData, fn, args;\\n    if (imageMask) {\\n      \u002F\u002F This depends on a tmpCanvas being filled with the\\n      \u002F\u002F current fillStyle, such that processing the pixel\\n      \u002F\u002F data can't be done here. Instead of creating a\\n      \u002F\u002F complete PDFImage, only read the information needed\\n      \u002F\u002F for later.\\n      imgData = await PDFImage.createMask({\\n        image,\\n        isOffscreenCanvasSupported:\\n          isOffscreenCanvasSupported && !this.parsingType3Font,\\n      });\\n\\n      if (imgData.isSingleOpaquePixel) {\\n        \u002F\u002F Handles special case of mainly LaTeX documents which use image\\n        \u002F\u002F masks to draw lines with the current fill style.\\n        fn = OPS.paintSolidColorImageMask;\\n        args = [];\\n        operatorList.addImageOps(fn, args, optionalContent);\\n\\n        if (cacheKey) {\\n          const cacheData = { fn, args, optionalContent };\\n          localImageCache.set(cacheKey, imageRef, cacheData);\\n\\n          if (imageRef) {\\n            this._regionalImageCache.set(\\n              \u002F* name = *\u002F null,\\n              imageRef,\\n              cacheData\\n            );\\n          }\\n        }\\n        return;\\n      }\\n\\n      if (this.parsingType3Font) {\\n        \u002F\u002F NOTE: Compared to other image resources we don't bother caching\\n        \u002F\u002F Type3-glyph image masks, since we've not come across any cases\\n        \u002F\u002F where that actually helps.\\n        \u002F\u002F In Type3-glyphs image masks are \\\"always\\\" inline resources,\\n        \u002F\u002F they're usually fairly small and aren't being re-used either.\\n        if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n          assert(\\n            imgData.data instanceof Uint8Array,\\n            \\\"Type3 glyph image mask must be a TypedArray.\\\"\\n          );\\n        }\\n        args = compileType3Glyph(imgData);\\n\\n        if (args) {\\n          operatorList.addImageOps(OPS.constructPath, args, optionalContent);\\n          return;\\n        }\\n        warn(\\\"Cannot compile Type3 glyph.\\\");\\n\\n        \u002F\u002F If compilation failed, or was disabled, fallback to using an inline\\n        \u002F\u002F image mask; this case should be extremely rare.\\n        operatorList.addImageOps(\\n          OPS.paintImageMaskXObject,\\n          [imgData],\\n          optionalContent\\n        );\\n        return;\\n      }\\n\\n      const objId = `mask_${this.idFactory.createObjId()}`;\\n      operatorList.addDependency(objId);\\n\\n      imgData.dataLen = imgData.bitmap\\n        ? imgData.width * imgData.height * 4\\n        : imgData.data.length;\\n      this._sendImgData(objId, imgData);\\n\\n      fn = OPS.paintImageMaskXObject;\\n      args = [\\n        {\\n          data: objId,\\n          width: imgData.width,\\n          height: imgData.height,\\n          interpolate: imgData.interpolate,\\n          count: 1,\\n        },\\n      ];\\n      operatorList.addImageOps(fn, args, optionalContent);\\n\\n      if (cacheKey) {\\n        const cacheData = { objId, fn, args, optionalContent };\\n        localImageCache.set(cacheKey, imageRef, cacheData);\\n\\n        if (imageRef) {\\n          this._regionalImageCache.set(\u002F* name = *\u002F null, imageRef, cacheData);\\n        }\\n      }\\n      return;\\n    }\\n\\n    const SMALL_IMAGE_DIMENSIONS = 200;\\n    const hasMask = dict.has(\\\"SMask\\\") || dict.has(\\\"Mask\\\");\\n    \u002F\u002F Inlining small images into the queue as RGB data\\n    if (isInline && w + h \u003C SMALL_IMAGE_DIMENSIONS && !hasMask) {\\n      try {\\n        const imageObj = new PDFImage({\\n          xref: this.xref,\\n          res: resources,\\n          image,\\n          isInline,\\n          pdfFunctionFactory: this._pdfFunctionFactory,\\n          globalColorSpaceCache: this.globalColorSpaceCache,\\n          localColorSpaceCache,\\n        });\\n        \u002F\u002F We force the use of RGBA_32BPP images here, because we can't handle\\n        \u002F\u002F any other kind.\\n        imgData = await imageObj.createImageData(\\n          \u002F* forceRGBA = *\u002F true,\\n          \u002F* isOffscreenCanvasSupported = *\u002F false\\n        );\\n        operatorList.addImageOps(\\n          OPS.paintInlineImageXObject,\\n          [imgData],\\n          optionalContent\\n        );\\n      } catch (reason) {\\n        const msg = `Unable to decode inline image: \\\"${reason}\\\".`;\\n\\n        if (!ignoreErrors) {\\n          throw new Error(msg);\\n        }\\n        warn(msg);\\n      }\\n      return;\\n    }\\n\\n    \u002F\u002F If there is no imageMask, create the PDFImage and a lot\\n    \u002F\u002F of image processing can be done here.\\n    let objId = `img_${this.idFactory.createObjId()}`,\\n      cacheGlobally = false,\\n      globalCacheData = null;\\n\\n    if (this.parsingType3Font) {\\n      objId = `${this.idFactory.getDocId()}_type3_${objId}`;\\n    } else if (cacheKey && imageRef) {\\n      cacheGlobally = this.globalImageCache.shouldCache(\\n        imageRef,\\n        this.pageIndex\\n      );\\n\\n      if (cacheGlobally) {\\n        assert(!isInline, \\\"Cannot cache an inline image globally.\\\");\\n\\n        objId = `${this.idFactory.getDocId()}_${objId}`;\\n      }\\n    }\\n\\n    \u002F\u002F Ensure that the dependency is added before the image is decoded.\\n    operatorList.addDependency(objId);\\n\\n    fn = OPS.paintImageXObject;\\n    args = [objId, w, h];\\n    operatorList.addImageOps(fn, args, optionalContent, hasMask);\\n\\n    if (cacheGlobally) {\\n      globalCacheData = {\\n        objId,\\n        fn,\\n        args,\\n        optionalContent,\\n        hasMask,\\n        byteSize: 0, \u002F\u002F Temporary entry, to avoid `setData` returning early.\\n      };\\n\\n      if (this.globalImageCache.hasDecodeFailed(imageRef)) {\\n        this.globalImageCache.setData(imageRef, globalCacheData);\\n\\n        this._sendImgData(objId, \u002F* imgData = *\u002F null, cacheGlobally);\\n        return;\\n      }\\n\\n      \u002F\u002F For large (at least 500x500) or more complex images that we'll cache\\n      \u002F\u002F globally, check if the image is still cached locally on the main-thread\\n      \u002F\u002F to avoid having to re-parse the image (since that can be slow).\\n      if (w * h > 250000 || hasMask) {\\n        const localLength = await this.handler.sendWithPromise(\\\"commonobj\\\", [\\n          objId,\\n          \\\"CopyLocalImage\\\",\\n          { imageRef },\\n        ]);\\n\\n        if (localLength) {\\n          this.globalImageCache.setData(imageRef, globalCacheData);\\n          this.globalImageCache.addByteSize(imageRef, localLength);\\n          return;\\n        }\\n      }\\n    }\\n\\n    PDFImage.buildImage({\\n      xref: this.xref,\\n      res: resources,\\n      image,\\n      isInline,\\n      pdfFunctionFactory: this._pdfFunctionFactory,\\n      globalColorSpaceCache: this.globalColorSpaceCache,\\n      localColorSpaceCache,\\n    })\\n      .then(async imageObj => {\\n        imgData = await imageObj.createImageData(\\n          \u002F* forceRGBA = *\u002F false,\\n          isOffscreenCanvasSupported\\n        );\\n        imgData.dataLen = imgData.bitmap\\n          ? imgData.width * imgData.height * 4\\n          : imgData.data.length;\\n        imgData.ref = imageRef;\\n\\n        if (cacheGlobally) {\\n          this.globalImageCache.addByteSize(imageRef, imgData.dataLen);\\n        }\\n        return this._sendImgData(objId, imgData, cacheGlobally);\\n      })\\n      .catch(reason => {\\n        warn(`Unable to decode image \\\"${objId}\\\": \\\"${reason}\\\".`);\\n\\n        if (imageRef) {\\n          this.globalImageCache.addDecodeFailed(imageRef);\\n        }\\n        return this._sendImgData(objId, \u002F* imgData = *\u002F null, cacheGlobally);\\n      });\\n\\n    if (cacheKey) {\\n      const cacheData = { objId, fn, args, optionalContent, hasMask };\\n      localImageCache.set(cacheKey, imageRef, cacheData);\\n\\n      if (imageRef) {\\n        this._regionalImageCache.set(\u002F* name = *\u002F null, imageRef, cacheData);\\n\\n        if (cacheGlobally) {\\n          assert(globalCacheData, \\\"The global cache-data must be available.\\\");\\n          this.globalImageCache.setData(imageRef, globalCacheData);\\n        }\\n      }\\n    }\\n  }\\n\\n  handleSMask(\\n    smask,\\n    resources,\\n    operatorList,\\n    task,\\n    stateManager,\\n    localColorSpaceCache,\\n    seenRefs\\n  ) {\\n    const smaskContent = smask.get(\\\"G\\\");\\n    const smaskOptions = {\\n      subtype: smask.get(\\\"S\\\").name,\\n      backdrop: smask.get(\\\"BC\\\"),\\n    };\\n\\n    \u002F\u002F The SMask might have a alpha\u002Fluminosity value transfer function --\\n    \u002F\u002F we will build a map of integer values in range 0..255 to be fast.\\n    const transferObj = smask.get(\\\"TR\\\");\\n    if (isPDFFunction(transferObj)) {\\n      const transferFn = this._pdfFunctionFactory.create(transferObj);\\n      const transferMap = new Uint8Array(256);\\n      const tmp = new Float32Array(1);\\n      for (let i = 0; i \u003C 256; i++) {\\n        tmp[0] = i \u002F 255;\\n        transferFn(tmp, 0, tmp, 0);\\n        transferMap[i] = (tmp[0] * 255) | 0;\\n      }\\n      smaskOptions.transferMap = transferMap;\\n    }\\n\\n    return this.buildFormXObject(\\n      resources,\\n      smaskContent,\\n      smaskOptions,\\n      operatorList,\\n      task,\\n      stateManager.state.clone({ newPath: true }),\\n      localColorSpaceCache,\\n      seenRefs\\n    );\\n  }\\n\\n  handleTransferFunction(tr) {\\n    let transferArray;\\n    if (Array.isArray(tr)) {\\n      transferArray = tr;\\n    } else if (isPDFFunction(tr)) {\\n      transferArray = [tr];\\n    } else {\\n      return null; \u002F\u002F Not a valid transfer function entry.\\n    }\\n\\n    const transferMaps = [];\\n    let numFns = 0,\\n      numEffectfulFns = 0;\\n    for (const entry of transferArray) {\\n      const transferObj = this.xref.fetchIfRef(entry);\\n      numFns++;\\n\\n      if (isName(transferObj, \\\"Identity\\\")) {\\n        transferMaps.push(null);\\n        continue;\\n      } else if (!isPDFFunction(transferObj)) {\\n        return null; \u002F\u002F Not a valid transfer function object.\\n      }\\n\\n      const transferFn = this._pdfFunctionFactory.create(transferObj);\\n      const transferMap = new Uint8Array(256),\\n        tmp = new Float32Array(1);\\n      for (let j = 0; j \u003C 256; j++) {\\n        tmp[0] = j \u002F 255;\\n        transferFn(tmp, 0, tmp, 0);\\n        transferMap[j] = (tmp[0] * 255) | 0;\\n      }\\n      transferMaps.push(transferMap);\\n      numEffectfulFns++;\\n    }\\n\\n    if (!(numFns === 1 || numFns === 4)) {\\n      return null; \u002F\u002F Only 1 or 4 functions are supported, by the specification.\\n    }\\n    if (numEffectfulFns === 0) {\\n      return null; \u002F\u002F Only \u002FIdentity transfer functions found, which are no-ops.\\n    }\\n    return transferMaps;\\n  }\\n\\n  handleTilingType(\\n    fn,\\n    color,\\n    resources,\\n    pattern,\\n    patternDict,\\n    operatorList,\\n    task,\\n    localTilingPatternCache\\n  ) {\\n    \u002F\u002F Create an IR of the pattern code.\\n    const tilingOpList = new OperatorList();\\n    \u002F\u002F Merge the available resources, to prevent issues when the patternDict\\n    \u002F\u002F is missing some \u002FResources entries (fixes issue6541.pdf).\\n    const patternResources = Dict.merge({\\n      xref: this.xref,\\n      dictArray: [patternDict.get(\\\"Resources\\\"), resources],\\n    });\\n\\n    return this.getOperatorList({\\n      stream: pattern,\\n      task,\\n      resources: patternResources,\\n      operatorList: tilingOpList,\\n    })\\n      .then(function () {\\n        const operatorListIR = tilingOpList.getIR();\\n        const tilingPatternIR = getTilingPatternIR(\\n          operatorListIR,\\n          patternDict,\\n          color\\n        );\\n        \u002F\u002F Add the dependencies to the parent operator list so they are\\n        \u002F\u002F resolved before the sub operator list is executed synchronously.\\n        operatorList.addDependencies(tilingOpList.dependencies);\\n        operatorList.addOp(fn, tilingPatternIR);\\n\\n        if (patternDict.objId) {\\n          localTilingPatternCache.set(\u002F* name = *\u002F null, patternDict.objId, {\\n            operatorListIR,\\n            dict: patternDict,\\n          });\\n        }\\n      })\\n      .catch(reason => {\\n        if (reason instanceof AbortException) {\\n          return;\\n        }\\n        if (this.options.ignoreErrors) {\\n          warn(`handleTilingType - ignoring pattern: \\\"${reason}\\\".`);\\n          return;\\n        }\\n        throw reason;\\n      });\\n  }\\n\\n  async handleSetFont(\\n    resources,\\n    fontArgs,\\n    fontRef,\\n    operatorList,\\n    task,\\n    state,\\n    fallbackFontDict = null,\\n    cssFontInfo = null\\n  ) {\\n    const fontName = fontArgs?.[0] instanceof Name ? fontArgs[0].name : null;\\n\\n    const translated = await this.loadFont(\\n      fontName,\\n      fontRef,\\n      resources,\\n      task,\\n      fallbackFontDict,\\n      cssFontInfo\\n    );\\n\\n    if (translated.font.isType3Font) {\\n      \u002F\u002F Add the dependencies to the parent operatorList so they are\\n      \u002F\u002F resolved before Type3 operatorLists are executed synchronously.\\n      operatorList.addDependencies(translated.type3Dependencies);\\n    }\\n\\n    state.font = translated.font;\\n    translated.send(this.handler);\\n    return translated.loadedName;\\n  }\\n\\n  handleText(chars, state) {\\n    const font = state.font;\\n    const glyphs = font.charsToGlyphs(chars);\\n\\n    if (font.data) {\\n      const isAddToPathSet = !!(\\n        state.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\\n      );\\n      if (\\n        isAddToPathSet ||\\n        state.fillColorSpace.name === \\\"Pattern\\\" ||\\n        font.disableFontFace\\n      ) {\\n        PartialEvaluator.buildFontPaths(\\n          font,\\n          glyphs,\\n          this.handler,\\n          this.options\\n        );\\n      }\\n    }\\n    return glyphs;\\n  }\\n\\n  ensureStateFont(state) {\\n    if (state.font) {\\n      return;\\n    }\\n    const reason = new FormatError(\\n      \\\"Missing setFont (Tf) operator before text rendering operator.\\\"\\n    );\\n\\n    if (this.options.ignoreErrors) {\\n      warn(`ensureStateFont: \\\"${reason}\\\".`);\\n      return;\\n    }\\n    throw reason;\\n  }\\n\\n  async setGState({\\n    resources,\\n    gState,\\n    operatorList,\\n    cacheKey,\\n    task,\\n    stateManager,\\n    localGStateCache,\\n    localColorSpaceCache,\\n    seenRefs,\\n  }) {\\n    const gStateRef = gState.objId;\\n    let isSimpleGState = true;\\n    \u002F\u002F This array holds the converted\u002Fprocessed state data.\\n    const gStateObj = [];\\n    let promise = Promise.resolve();\\n    for (const [key, value] of gState) {\\n      switch (key) {\\n        case \\\"Type\\\":\\n          break;\\n        case \\\"LW\\\":\\n          if (typeof value !== \\\"number\\\") {\\n            warn(`Invalid LW (line width): ${value}`);\\n            break;\\n          }\\n          gStateObj.push([key, Math.abs(value)]);\\n          break;\\n        case \\\"LC\\\":\\n        case \\\"LJ\\\":\\n        case \\\"ML\\\":\\n        case \\\"D\\\":\\n        case \\\"RI\\\":\\n        case \\\"FL\\\":\\n        case \\\"CA\\\":\\n        case \\\"ca\\\":\\n          gStateObj.push([key, value]);\\n          break;\\n        case \\\"Font\\\":\\n          isSimpleGState = false;\\n\\n          promise = promise.then(() =>\\n            this.handleSetFont(\\n              resources,\\n              null,\\n              value[0],\\n              operatorList,\\n              task,\\n              stateManager.state\\n            ).then(function (loadedName) {\\n              operatorList.addDependency(loadedName);\\n              gStateObj.push([key, [loadedName, value[1]]]);\\n            })\\n          );\\n          break;\\n        case \\\"BM\\\":\\n          gStateObj.push([key, normalizeBlendMode(value)]);\\n          break;\\n        case \\\"SMask\\\":\\n          if (isName(value, \\\"None\\\")) {\\n            gStateObj.push([key, false]);\\n            break;\\n          }\\n          if (value instanceof Dict) {\\n            isSimpleGState = false;\\n\\n            promise = promise.then(() =>\\n              this.handleSMask(\\n                value,\\n                resources,\\n                operatorList,\\n                task,\\n                stateManager,\\n                localColorSpaceCache,\\n                seenRefs\\n              )\\n            );\\n            gStateObj.push([key, true]);\\n          } else {\\n            warn(\\\"Unsupported SMask type\\\");\\n          }\\n          break;\\n        case \\\"TR\\\":\\n          const transferMaps = this.handleTransferFunction(value);\\n          gStateObj.push([key, transferMaps]);\\n          break;\\n        \u002F\u002F Only generate info log messages for the following since\\n        \u002F\u002F they are unlikely to have a big impact on the rendering.\\n        case \\\"OP\\\":\\n        case \\\"op\\\":\\n        case \\\"OPM\\\":\\n        case \\\"BG\\\":\\n        case \\\"BG2\\\":\\n        case \\\"UCR\\\":\\n        case \\\"UCR2\\\":\\n        case \\\"TR2\\\":\\n        case \\\"HT\\\":\\n        case \\\"SM\\\":\\n        case \\\"SA\\\":\\n        case \\\"AIS\\\":\\n        case \\\"TK\\\":\\n          \u002F\u002F TODO implement these operators.\\n          info(\\\"graphic state operator \\\" + key);\\n          break;\\n        default:\\n          info(\\\"Unknown graphic state operator \\\" + key);\\n          break;\\n      }\\n    }\\n    await promise;\\n\\n    if (gStateObj.length > 0) {\\n      operatorList.addOp(OPS.setGState, [gStateObj]);\\n    }\\n\\n    if (isSimpleGState) {\\n      localGStateCache.set(cacheKey, gStateRef, gStateObj);\\n    }\\n  }\\n\\n  loadFont(\\n    fontName,\\n    font,\\n    resources,\\n    task,\\n    fallbackFontDict = null,\\n    cssFontInfo = null\\n  ) {\\n    const errorFont = async () =>\\n      new TranslatedFont({\\n        loadedName: \\\"g_font_error\\\",\\n        font: new ErrorFont(`Font \\\"${fontName}\\\" is not available.`),\\n        dict: font,\\n      });\\n\\n    let fontRef;\\n    if (font) {\\n      \u002F\u002F Loading by ref.\\n      if (font instanceof Ref) {\\n        fontRef = font;\\n      }\\n    } else {\\n      \u002F\u002F Loading by name.\\n      const fontRes = resources.get(\\\"Font\\\");\\n      if (fontRes) {\\n        fontRef = fontRes.getRaw(fontName);\\n      }\\n    }\\n    if (fontRef) {\\n      if (this.type3FontRefs?.has(fontRef)) {\\n        return errorFont();\\n      }\\n\\n      if (this.fontCache.has(fontRef)) {\\n        return this.fontCache.get(fontRef);\\n      }\\n\\n      try {\\n        font = this.xref.fetchIfRef(fontRef);\\n      } catch (ex) {\\n        warn(`loadFont - lookup failed: \\\"${ex}\\\".`);\\n      }\\n    }\\n\\n    if (!(font instanceof Dict)) {\\n      if (!this.options.ignoreErrors && !this.parsingType3Font) {\\n        warn(`Font \\\"${fontName}\\\" is not available.`);\\n        return errorFont();\\n      }\\n      warn(\\n        `Font \\\"${fontName}\\\" is not available -- attempting to fallback to a default font.`\\n      );\\n\\n      \u002F\u002F Falling back to a default font to avoid completely broken rendering,\\n      \u002F\u002F but note that there're no guarantees that things will look \\\"correct\\\".\\n      font = fallbackFontDict || PartialEvaluator.fallbackFontDict;\\n    }\\n\\n    \u002F\u002F We are holding `font.cacheKey` references only for `fontRef`s that\\n    \u002F\u002F are not actually `Ref`s, but rather `Dict`s. See explanation below.\\n    if (font.cacheKey && this.fontCache.has(font.cacheKey)) {\\n      return this.fontCache.get(font.cacheKey);\\n    }\\n\\n    const { promise, resolve } = Promise.withResolvers();\\n\\n    let preEvaluatedFont;\\n    try {\\n      preEvaluatedFont = this.preEvaluateFont(font);\\n      preEvaluatedFont.cssFontInfo = cssFontInfo;\\n    } catch (reason) {\\n      warn(`loadFont - preEvaluateFont failed: \\\"${reason}\\\".`);\\n      return errorFont();\\n    }\\n    const { descriptor, hash } = preEvaluatedFont;\\n\\n    const fontRefIsRef = fontRef instanceof Ref;\\n    let fontID;\\n\\n    if (hash && descriptor instanceof Dict) {\\n      const fontAliases = (descriptor.fontAliases ||= Object.create(null));\\n\\n      if (fontAliases[hash]) {\\n        const aliasFontRef = fontAliases[hash].aliasRef;\\n        if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) {\\n          this.fontCache.putAlias(fontRef, aliasFontRef);\\n          return this.fontCache.get(fontRef);\\n        }\\n      } else {\\n        fontAliases[hash] = {\\n          fontID: this.idFactory.createFontId(),\\n        };\\n      }\\n\\n      if (fontRefIsRef) {\\n        fontAliases[hash].aliasRef = fontRef;\\n      }\\n      fontID = fontAliases[hash].fontID;\\n    } else {\\n      fontID = this.idFactory.createFontId();\\n    }\\n    assert(\\n      fontID?.startsWith(\\\"f\\\"),\\n      'The \\\"fontID\\\" must be (correctly) defined.'\\n    );\\n\\n    \u002F\u002F Workaround for bad PDF generators that reference fonts incorrectly,\\n    \u002F\u002F where `fontRef` is a `Dict` rather than a `Ref` (fixes bug946506.pdf).\\n    \u002F\u002F In this case we cannot put the font into `this.fontCache` (which is\\n    \u002F\u002F a `RefSetCache`), since it's not possible to use a `Dict` as a key.\\n    \u002F\u002F\\n    \u002F\u002F However, if we don't cache the font it's not possible to remove it\\n    \u002F\u002F when `cleanup` is triggered from the API, which causes issues on\\n    \u002F\u002F subsequent rendering operations (see issue7403.pdf) and would force us\\n    \u002F\u002F to unnecessarily load the same fonts over and over.\\n    \u002F\u002F\\n    \u002F\u002F Instead, we cheat a bit by using a modified `fontID` as a key in\\n    \u002F\u002F `this.fontCache`, to allow the font to be cached.\\n    \u002F\u002F NOTE: This works because `RefSetCache` calls `toString()` on provided\\n    \u002F\u002F       keys. Also, since `fontRef` is used when getting cached fonts,\\n    \u002F\u002F       we'll not accidentally match fonts cached with the `fontID`.\\n    if (fontRefIsRef) {\\n      this.fontCache.put(fontRef, promise);\\n    } else {\\n      font.cacheKey = `cacheKey_${fontID}`;\\n      this.fontCache.put(font.cacheKey, promise);\\n    }\\n\\n    \u002F\u002F Keep track of each font we translated so the caller can\\n    \u002F\u002F load them asynchronously before calling display on a page.\\n    font.loadedName = `${this.idFactory.getDocId()}_${fontID}`;\\n\\n    this.translateFont(preEvaluatedFont)\\n      .then(async translatedFont => {\\n        const translated = new TranslatedFont({\\n          loadedName: font.loadedName,\\n          font: translatedFont,\\n          dict: font,\\n        });\\n\\n        if (translatedFont.isType3Font) {\\n          try {\\n            await translated.loadType3Data(this, resources, task);\\n          } catch (reason) {\\n            throw new Error(`Type3 font load error: ${reason}`);\\n          }\\n        }\\n        resolve(translated);\\n      })\\n      .catch(reason => {\\n        \u002F\u002F TODO reject?\\n        warn(`loadFont - translateFont failed: \\\"${reason}\\\".`);\\n\\n        resolve(\\n          new TranslatedFont({\\n            loadedName: font.loadedName,\\n            font: new ErrorFont(reason?.message),\\n            dict: font,\\n          })\\n        );\\n      });\\n    return promise;\\n  }\\n\\n  buildPath(fn, args, state) {\\n    const { pathMinMax: minMax, pathBuffer } = state;\\n    switch (fn | 0) {\\n      case OPS.rectangle: {\\n        const x = (state.currentPointX = args[0]);\\n        const y = (state.currentPointY = args[1]);\\n        const width = args[2];\\n        const height = args[3];\\n        const xw = x + width;\\n        const yh = y + height;\\n        if (width === 0 || height === 0) {\\n          pathBuffer.push(\\n            DrawOPS.moveTo,\\n            x,\\n            y,\\n            DrawOPS.lineTo,\\n            xw,\\n            yh,\\n            DrawOPS.closePath\\n          );\\n        } else {\\n          pathBuffer.push(\\n            DrawOPS.moveTo,\\n            x,\\n            y,\\n            DrawOPS.lineTo,\\n            xw,\\n            y,\\n            DrawOPS.lineTo,\\n            xw,\\n            yh,\\n            DrawOPS.lineTo,\\n            x,\\n            yh,\\n            DrawOPS.closePath\\n          );\\n        }\\n        Util.rectBoundingBox(x, y, xw, yh, minMax);\\n        break;\\n      }\\n      case OPS.moveTo: {\\n        const x = (state.currentPointX = args[0]);\\n        const y = (state.currentPointY = args[1]);\\n        pathBuffer.push(DrawOPS.moveTo, x, y);\\n        Util.pointBoundingBox(x, y, minMax);\\n        break;\\n      }\\n      case OPS.lineTo: {\\n        const x = (state.currentPointX = args[0]);\\n        const y = (state.currentPointY = args[1]);\\n        pathBuffer.push(DrawOPS.lineTo, x, y);\\n        Util.pointBoundingBox(x, y, minMax);\\n        break;\\n      }\\n      case OPS.curveTo: {\\n        const startX = state.currentPointX;\\n        const startY = state.currentPointY;\\n        const [x1, y1, x2, y2, x, y] = args;\\n        state.currentPointX = x;\\n        state.currentPointY = y;\\n        pathBuffer.push(DrawOPS.curveTo, x1, y1, x2, y2, x, y);\\n        Util.bezierBoundingBox(startX, startY, x1, y1, x2, y2, x, y, minMax);\\n        break;\\n      }\\n      case OPS.curveTo2: {\\n        const startX = state.currentPointX;\\n        const startY = state.currentPointY;\\n        const [x1, y1, x, y] = args;\\n        state.currentPointX = x;\\n        state.currentPointY = y;\\n        pathBuffer.push(DrawOPS.curveTo, startX, startY, x1, y1, x, y);\\n        Util.bezierBoundingBox(\\n          startX,\\n          startY,\\n          startX,\\n          startY,\\n          x1,\\n          y1,\\n          x,\\n          y,\\n          minMax\\n        );\\n        break;\\n      }\\n      case OPS.curveTo3: {\\n        const startX = state.currentPointX;\\n        const startY = state.currentPointY;\\n        const [x1, y1, x, y] = args;\\n        state.currentPointX = x;\\n        state.currentPointY = y;\\n        pathBuffer.push(DrawOPS.curveTo, x1, y1, x, y, x, y);\\n        Util.bezierBoundingBox(startX, startY, x1, y1, x, y, x, y, minMax);\\n        break;\\n      }\\n      case OPS.closePath:\\n        pathBuffer.push(DrawOPS.closePath);\\n        break;\\n    }\\n  }\\n\\n  _getColorSpace(cs, resources, localColorSpaceCache) {\\n    return ColorSpaceUtils.parse({\\n      cs,\\n      xref: this.xref,\\n      resources,\\n      pdfFunctionFactory: this._pdfFunctionFactory,\\n      globalColorSpaceCache: this.globalColorSpaceCache,\\n      localColorSpaceCache,\\n      asyncIfNotCached: true,\\n    });\\n  }\\n\\n  async _handleColorSpace(csPromise) {\\n    try {\\n      return await csPromise;\\n    } catch (ex) {\\n      if (ex instanceof AbortException) {\\n        return null;\\n      }\\n      if (this.options.ignoreErrors) {\\n        warn(`_handleColorSpace - ignoring ColorSpace: \\\"${ex}\\\".`);\\n        return null;\\n      }\\n      throw ex;\\n    }\\n  }\\n\\n  parseShading({\\n    shading,\\n    resources,\\n    localColorSpaceCache,\\n    localShadingPatternCache,\\n  }) {\\n    \u002F\u002F Shadings and patterns may be referenced by the same name but the resource\\n    \u002F\u002F dictionary could be different so we can't use the name for the cache key.\\n    let id = localShadingPatternCache.get(shading);\\n    if (id) {\\n      return id;\\n    }\\n    let patternIR;\\n\\n    try {\\n      const shadingFill = Pattern.parseShading(\\n        shading,\\n        this.xref,\\n        resources,\\n        this._pdfFunctionFactory,\\n        this.globalColorSpaceCache,\\n        localColorSpaceCache\\n      );\\n      patternIR = shadingFill.getIR();\\n    } catch (reason) {\\n      if (reason instanceof AbortException) {\\n        return null;\\n      }\\n      if (this.options.ignoreErrors) {\\n        warn(`parseShading - ignoring shading: \\\"${reason}\\\".`);\\n\\n        localShadingPatternCache.set(shading, null);\\n        return null;\\n      }\\n      throw reason;\\n    }\\n\\n    id = `pattern_${this.idFactory.createObjId()}`;\\n    if (this.parsingType3Font) {\\n      id = `${this.idFactory.getDocId()}_type3_${id}`;\\n    }\\n    localShadingPatternCache.set(shading, id);\\n\\n    if (this.parsingType3Font) {\\n      this.handler.send(\\\"commonobj\\\", [id, \\\"Pattern\\\", patternIR]);\\n    } else {\\n      this.handler.send(\\\"obj\\\", [id, this.pageIndex, \\\"Pattern\\\", patternIR]);\\n    }\\n    return id;\\n  }\\n\\n  handleColorN(\\n    operatorList,\\n    fn,\\n    args,\\n    cs,\\n    patterns,\\n    resources,\\n    task,\\n    localColorSpaceCache,\\n    localTilingPatternCache,\\n    localShadingPatternCache\\n  ) {\\n    \u002F\u002F compile tiling patterns\\n    const patternName = args.pop();\\n    \u002F\u002F SCN\u002Fscn applies patterns along with normal colors\\n    if (patternName instanceof Name) {\\n      const rawPattern = patterns.getRaw(patternName.name);\\n\\n      const localTilingPattern =\\n        rawPattern instanceof Ref &&\\n        localTilingPatternCache.getByRef(rawPattern);\\n      if (localTilingPattern) {\\n        try {\\n          const color = cs.base ? cs.base.getRgbHex(args, 0) : null;\\n          const tilingPatternIR = getTilingPatternIR(\\n            localTilingPattern.operatorListIR,\\n            localTilingPattern.dict,\\n            color\\n          );\\n          operatorList.addOp(fn, tilingPatternIR);\\n          return undefined;\\n        } catch {\\n          \u002F\u002F Handle any errors during normal TilingPattern parsing.\\n        }\\n      }\\n\\n      const pattern = this.xref.fetchIfRef(rawPattern);\\n      if (pattern) {\\n        const dict = pattern instanceof BaseStream ? pattern.dict : pattern;\\n        const typeNum = dict.get(\\\"PatternType\\\");\\n\\n        if (typeNum === PatternType.TILING) {\\n          const color = cs.base ? cs.base.getRgbHex(args, 0) : null;\\n          return this.handleTilingType(\\n            fn,\\n            color,\\n            resources,\\n            pattern,\\n            dict,\\n            operatorList,\\n            task,\\n            localTilingPatternCache\\n          );\\n        } else if (typeNum === PatternType.SHADING) {\\n          const shading = dict.get(\\\"Shading\\\");\\n          const objId = this.parseShading({\\n            shading,\\n            resources,\\n            localColorSpaceCache,\\n            localShadingPatternCache,\\n          });\\n          if (objId) {\\n            const matrix = lookupMatrix(dict.getArray(\\\"Matrix\\\"), null);\\n            operatorList.addOp(fn, [\\\"Shading\\\", objId, matrix]);\\n          }\\n          return undefined;\\n        }\\n        throw new FormatError(`Unknown PatternType: ${typeNum}`);\\n      }\\n    }\\n    throw new FormatError(`Unknown PatternName: ${patternName}`);\\n  }\\n\\n  _parseVisibilityExpression(array, nestingCounter, currentResult) {\\n    const MAX_NESTING = 10;\\n    if (++nestingCounter > MAX_NESTING) {\\n      warn(\\\"Visibility expression is too deeply nested\\\");\\n      return;\\n    }\\n    const length = array.length;\\n    const operator = this.xref.fetchIfRef(array[0]);\\n    if (length \u003C 2 || !(operator instanceof Name)) {\\n      warn(\\\"Invalid visibility expression\\\");\\n      return;\\n    }\\n    switch (operator.name) {\\n      case \\\"And\\\":\\n      case \\\"Or\\\":\\n      case \\\"Not\\\":\\n        currentResult.push(operator.name);\\n        break;\\n      default:\\n        warn(`Invalid operator ${operator.name} in visibility expression`);\\n        return;\\n    }\\n    for (let i = 1; i \u003C length; i++) {\\n      const raw = array[i];\\n      const object = this.xref.fetchIfRef(raw);\\n      if (Array.isArray(object)) {\\n        const nestedResult = [];\\n        currentResult.push(nestedResult);\\n        \u002F\u002F Recursively parse a subarray.\\n        this._parseVisibilityExpression(object, nestingCounter, nestedResult);\\n      } else if (raw instanceof Ref) {\\n        \u002F\u002F Reference to an OCG dictionary.\\n        currentResult.push(raw.toString());\\n      }\\n    }\\n  }\\n\\n  async parseMarkedContentProps(contentProperties, resources) {\\n    let optionalContent;\\n    if (contentProperties instanceof Name) {\\n      const properties = resources.get(\\\"Properties\\\");\\n      optionalContent = properties.get(contentProperties.name);\\n    } else if (contentProperties instanceof Dict) {\\n      optionalContent = contentProperties;\\n    } else {\\n      throw new FormatError(\\\"Optional content properties malformed.\\\");\\n    }\\n\\n    const optionalContentType = optionalContent.get(\\\"Type\\\")?.name;\\n    if (optionalContentType === \\\"OCG\\\") {\\n      return {\\n        type: optionalContentType,\\n        id: optionalContent.objId,\\n      };\\n    } else if (optionalContentType === \\\"OCMD\\\") {\\n      const expression = optionalContent.get(\\\"VE\\\");\\n      if (Array.isArray(expression)) {\\n        const result = [];\\n        this._parseVisibilityExpression(expression, 0, result);\\n        if (result.length > 0) {\\n          return {\\n            type: \\\"OCMD\\\",\\n            expression: result,\\n          };\\n        }\\n      }\\n\\n      const optionalContentGroups = optionalContent.get(\\\"OCGs\\\");\\n      if (\\n        Array.isArray(optionalContentGroups) ||\\n        optionalContentGroups instanceof Dict\\n      ) {\\n        const groupIds = [];\\n        if (Array.isArray(optionalContentGroups)) {\\n          for (const ocg of optionalContentGroups) {\\n            groupIds.push(ocg.toString());\\n          }\\n        } else {\\n          \u002F\u002F Dictionary, just use the obj id.\\n          groupIds.push(optionalContentGroups.objId);\\n        }\\n\\n        return {\\n          type: optionalContentType,\\n          ids: groupIds,\\n          policy:\\n            optionalContent.get(\\\"P\\\") instanceof Name\\n              ? optionalContent.get(\\\"P\\\").name\\n              : null,\\n          expression: null,\\n        };\\n      } else if (optionalContentGroups instanceof Ref) {\\n        return {\\n          type: optionalContentType,\\n          id: optionalContentGroups.toString(),\\n        };\\n      }\\n    }\\n    return null;\\n  }\\n\\n  getOperatorList({\\n    stream,\\n    task,\\n    resources,\\n    operatorList,\\n    initialState = null,\\n    fallbackFontDict = null,\\n    prevRefs = null,\\n  }) {\\n    const objId = stream.dict?.objId;\\n    const seenRefs = new RefSet(prevRefs);\\n\\n    if (objId) {\\n      if (prevRefs?.has(objId)) {\\n        throw new Error(\\n          `getOperatorList - ignoring circular reference: ${objId}`\\n        );\\n      }\\n      seenRefs.put(objId);\\n    }\\n    \u002F\u002F Ensure that `resources`\u002F`initialState` is correctly initialized,\\n    \u002F\u002F even if the provided parameter is e.g. `null`.\\n    resources ||= Dict.empty;\\n    initialState ||= new EvalState();\\n\\n    if (!operatorList) {\\n      throw new Error('getOperatorList: missing \\\"operatorList\\\" parameter');\\n    }\\n\\n    const self = this;\\n    const xref = this.xref;\\n    const localImageCache = new LocalImageCache();\\n    const localColorSpaceCache = new LocalColorSpaceCache();\\n    const localGStateCache = new LocalGStateCache();\\n    const localTilingPatternCache = new LocalTilingPatternCache();\\n    const localShadingPatternCache = new Map();\\n\\n    const xobjs = resources.get(\\\"XObject\\\") || Dict.empty;\\n    const patterns = resources.get(\\\"Pattern\\\") || Dict.empty;\\n    const stateManager = new StateManager(initialState);\\n    const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\\n    const timeSlotManager = new TimeSlotManager();\\n\\n    function closePendingRestoreOPS(argument) {\\n      for (let i = 0, ii = preprocessor.savedStatesDepth; i \u003C ii; i++) {\\n        operatorList.addOp(OPS.restore, []);\\n      }\\n    }\\n\\n    return new Promise(function promiseBody(resolve, reject) {\\n      const next = function (promise) {\\n        Promise.all([promise, operatorList.ready]).then(function () {\\n          try {\\n            promiseBody(resolve, reject);\\n          } catch (ex) {\\n            reject(ex);\\n          }\\n        }, reject);\\n      };\\n      task.ensureNotTerminated();\\n      timeSlotManager.reset();\\n\\n      const operation = {};\\n      let stop, i, ii, cs, name, isValidName;\\n      while (!(stop = timeSlotManager.check())) {\\n        \u002F\u002F The arguments parsed by read() are used beyond this loop, so we\\n        \u002F\u002F cannot reuse the same array on each iteration. Therefore we pass\\n        \u002F\u002F in |null| as the initial value (see the comment on\\n        \u002F\u002F EvaluatorPreprocessor_read() for why).\\n        operation.args = null;\\n        if (!preprocessor.read(operation)) {\\n          break;\\n        }\\n        let args = operation.args;\\n        let fn = operation.fn;\\n\\n        switch (fn | 0) {\\n          case OPS.paintXObject:\\n            \u002F\u002F eagerly compile XForm objects\\n            isValidName = args[0] instanceof Name;\\n            name = args[0].name;\\n\\n            if (isValidName) {\\n              const localImage = localImageCache.getByName(name);\\n              if (localImage) {\\n                addCachedImageOps(operatorList, localImage);\\n                args = null;\\n                continue;\\n              }\\n            }\\n\\n            next(\\n              new Promise(function (resolveXObject, rejectXObject) {\\n                if (!isValidName) {\\n                  throw new FormatError(\\\"XObject must be referred to by name.\\\");\\n                }\\n\\n                let xobj = xobjs.getRaw(name);\\n                if (xobj instanceof Ref) {\\n                  const cachedImage =\\n                    localImageCache.getByRef(xobj) ||\\n                    self._regionalImageCache.getByRef(xobj) ||\\n                    self.globalImageCache.getData(xobj, self.pageIndex);\\n                  if (cachedImage) {\\n                    addCachedImageOps(operatorList, cachedImage);\\n                    resolveXObject();\\n                    return;\\n                  }\\n\\n                  xobj = xref.fetch(xobj);\\n                }\\n\\n                if (!(xobj instanceof BaseStream)) {\\n                  throw new FormatError(\\\"XObject should be a stream\\\");\\n                }\\n\\n                const type = xobj.dict.get(\\\"Subtype\\\");\\n                if (!(type instanceof Name)) {\\n                  throw new FormatError(\\\"XObject should have a Name subtype\\\");\\n                }\\n\\n                if (type.name === \\\"Form\\\") {\\n                  stateManager.save();\\n                  self\\n                    .buildFormXObject(\\n                      resources,\\n                      xobj,\\n                      null,\\n                      operatorList,\\n                      task,\\n                      stateManager.state.clone({ newPath: true }),\\n                      localColorSpaceCache,\\n                      seenRefs\\n                    )\\n                    .then(function () {\\n                      stateManager.restore();\\n                      resolveXObject();\\n                    }, rejectXObject);\\n                  return;\\n                } else if (type.name === \\\"Image\\\") {\\n                  self\\n                    .buildPaintImageXObject({\\n                      resources,\\n                      image: xobj,\\n                      operatorList,\\n                      cacheKey: name,\\n                      localImageCache,\\n                      localColorSpaceCache,\\n                    })\\n                    .then(resolveXObject, rejectXObject);\\n                  return;\\n                } else if (type.name === \\\"PS\\\") {\\n                  \u002F\u002F PostScript XObjects are unused when viewing documents.\\n                  \u002F\u002F See section 4.7.1 of Adobe's PDF reference.\\n                  info(\\\"Ignored XObject subtype PS\\\");\\n                } else {\\n                  throw new FormatError(\\n                    `Unhandled XObject subtype ${type.name}`\\n                  );\\n                }\\n                resolveXObject();\\n              }).catch(function (reason) {\\n                if (reason instanceof AbortException) {\\n                  return;\\n                }\\n                if (self.options.ignoreErrors) {\\n                  warn(`getOperatorList - ignoring XObject: \\\"${reason}\\\".`);\\n                  return;\\n                }\\n                throw reason;\\n              })\\n            );\\n            return;\\n          case OPS.setFont:\\n            const fontSize = args[1];\\n            \u002F\u002F eagerly collect all fonts\\n            next(\\n              self\\n                .handleSetFont(\\n                  resources,\\n                  args,\\n                  null,\\n                  operatorList,\\n                  task,\\n                  stateManager.state,\\n                  fallbackFontDict\\n                )\\n                .then(function (loadedName) {\\n                  operatorList.addDependency(loadedName);\\n                  operatorList.addOp(OPS.setFont, [loadedName, fontSize]);\\n                })\\n            );\\n            return;\\n          case OPS.endInlineImage:\\n            const cacheKey = args[0].cacheKey;\\n            if (cacheKey) {\\n              const localImage = localImageCache.getByName(cacheKey);\\n              if (localImage) {\\n                addCachedImageOps(operatorList, localImage);\\n                args = null;\\n                continue;\\n              }\\n            }\\n            next(\\n              self.buildPaintImageXObject({\\n                resources,\\n                image: args[0],\\n                isInline: true,\\n                operatorList,\\n                cacheKey,\\n                localImageCache,\\n                localColorSpaceCache,\\n              })\\n            );\\n            return;\\n          case OPS.showText:\\n            if (!stateManager.state.font) {\\n              self.ensureStateFont(stateManager.state);\\n              continue;\\n            }\\n            args[0] = self.handleText(args[0], stateManager.state);\\n            break;\\n          case OPS.showSpacedText:\\n            if (!stateManager.state.font) {\\n              self.ensureStateFont(stateManager.state);\\n              continue;\\n            }\\n            const combinedGlyphs = [],\\n              state = stateManager.state;\\n            for (const arrItem of args[0]) {\\n              if (typeof arrItem === \\\"string\\\") {\\n                combinedGlyphs.push(...self.handleText(arrItem, state));\\n              } else if (typeof arrItem === \\\"number\\\") {\\n                combinedGlyphs.push(arrItem);\\n              }\\n            }\\n            args[0] = combinedGlyphs;\\n            fn = OPS.showText;\\n            break;\\n          case OPS.nextLineShowText:\\n            if (!stateManager.state.font) {\\n              self.ensureStateFont(stateManager.state);\\n              continue;\\n            }\\n            operatorList.addOp(OPS.nextLine);\\n            args[0] = self.handleText(args[0], stateManager.state);\\n            fn = OPS.showText;\\n            break;\\n          case OPS.nextLineSetSpacingShowText:\\n            if (!stateManager.state.font) {\\n              self.ensureStateFont(stateManager.state);\\n              continue;\\n            }\\n            operatorList.addOp(OPS.nextLine);\\n            operatorList.addOp(OPS.setWordSpacing, [args.shift()]);\\n            operatorList.addOp(OPS.setCharSpacing, [args.shift()]);\\n            args[0] = self.handleText(args[0], stateManager.state);\\n            fn = OPS.showText;\\n            break;\\n          case OPS.setTextRenderingMode:\\n            stateManager.state.textRenderingMode = args[0];\\n            break;\\n\\n          case OPS.setFillColorSpace: {\\n            const fillCS = self._getColorSpace(\\n              args[0],\\n              resources,\\n              localColorSpaceCache\\n            );\\n            if (fillCS instanceof ColorSpace) {\\n              stateManager.state.fillColorSpace = fillCS;\\n              continue;\\n            }\\n\\n            next(\\n              self._handleColorSpace(fillCS).then(colorSpace => {\\n                stateManager.state.fillColorSpace =\\n                  colorSpace || ColorSpaceUtils.gray;\\n              })\\n            );\\n            return;\\n          }\\n          case OPS.setStrokeColorSpace: {\\n            const strokeCS = self._getColorSpace(\\n              args[0],\\n              resources,\\n              localColorSpaceCache\\n            );\\n            if (strokeCS instanceof ColorSpace) {\\n              stateManager.state.strokeColorSpace = strokeCS;\\n              continue;\\n            }\\n\\n            next(\\n              self._handleColorSpace(strokeCS).then(colorSpace => {\\n                stateManager.state.strokeColorSpace =\\n                  colorSpace || ColorSpaceUtils.gray;\\n              })\\n            );\\n            return;\\n          }\\n          case OPS.setFillColor:\\n            cs = stateManager.state.fillColorSpace;\\n            args = [cs.getRgbHex(args, 0)];\\n            fn = OPS.setFillRGBColor;\\n            break;\\n          case OPS.setStrokeColor:\\n            cs = stateManager.state.strokeColorSpace;\\n            args = [cs.getRgbHex(args, 0)];\\n            fn = OPS.setStrokeRGBColor;\\n            break;\\n          case OPS.setFillGray:\\n            stateManager.state.fillColorSpace = ColorSpaceUtils.gray;\\n            args = [ColorSpaceUtils.gray.getRgbHex(args, 0)];\\n            fn = OPS.setFillRGBColor;\\n            break;\\n          case OPS.setStrokeGray:\\n            stateManager.state.strokeColorSpace = ColorSpaceUtils.gray;\\n            args = [ColorSpaceUtils.gray.getRgbHex(args, 0)];\\n            fn = OPS.setStrokeRGBColor;\\n            break;\\n          case OPS.setFillCMYKColor:\\n            stateManager.state.fillColorSpace = ColorSpaceUtils.cmyk;\\n            args = [ColorSpaceUtils.cmyk.getRgbHex(args, 0)];\\n            fn = OPS.setFillRGBColor;\\n            break;\\n          case OPS.setStrokeCMYKColor:\\n            stateManager.state.strokeColorSpace = ColorSpaceUtils.cmyk;\\n            args = [ColorSpaceUtils.cmyk.getRgbHex(args, 0)];\\n            fn = OPS.setStrokeRGBColor;\\n            break;\\n          case OPS.setFillRGBColor:\\n            stateManager.state.fillColorSpace = ColorSpaceUtils.rgb;\\n            args = [ColorSpaceUtils.rgb.getRgbHex(args, 0)];\\n            break;\\n          case OPS.setStrokeRGBColor:\\n            stateManager.state.strokeColorSpace = ColorSpaceUtils.rgb;\\n            args = [ColorSpaceUtils.rgb.getRgbHex(args, 0)];\\n            break;\\n          case OPS.setFillColorN:\\n            cs = stateManager.state.patternFillColorSpace;\\n            if (!cs) {\\n              if (isNumberArray(args, null)) {\\n                args = [ColorSpaceUtils.gray.getRgbHex(args, 0)];\\n                fn = OPS.setFillRGBColor;\\n                break;\\n              }\\n              args = [];\\n              fn = OPS.setFillTransparent;\\n              break;\\n            }\\n            if (cs.name === \\\"Pattern\\\") {\\n              next(\\n                self.handleColorN(\\n                  operatorList,\\n                  OPS.setFillColorN,\\n                  args,\\n                  cs,\\n                  patterns,\\n                  resources,\\n                  task,\\n                  localColorSpaceCache,\\n                  localTilingPatternCache,\\n                  localShadingPatternCache\\n                )\\n              );\\n              return;\\n            }\\n            args = [cs.getRgbHex(args, 0)];\\n            fn = OPS.setFillRGBColor;\\n            break;\\n          case OPS.setStrokeColorN:\\n            cs = stateManager.state.patternStrokeColorSpace;\\n            if (!cs) {\\n              if (isNumberArray(args, null)) {\\n                args = [ColorSpaceUtils.gray.getRgbHex(args, 0)];\\n                fn = OPS.setStrokeRGBColor;\\n                break;\\n              }\\n              args = [];\\n              fn = OPS.setStrokeTransparent;\\n              break;\\n            }\\n            if (cs.name === \\\"Pattern\\\") {\\n              next(\\n                self.handleColorN(\\n                  operatorList,\\n                  OPS.setStrokeColorN,\\n                  args,\\n                  cs,\\n                  patterns,\\n                  resources,\\n                  task,\\n                  localColorSpaceCache,\\n                  localTilingPatternCache,\\n                  localShadingPatternCache\\n                )\\n              );\\n              return;\\n            }\\n            args = [cs.getRgbHex(args, 0)];\\n            fn = OPS.setStrokeRGBColor;\\n            break;\\n\\n          case OPS.shadingFill:\\n            let shading;\\n            try {\\n              const shadingRes = resources.get(\\\"Shading\\\");\\n              if (!shadingRes) {\\n                throw new FormatError(\\\"No shading resource found\\\");\\n              }\\n\\n              shading = shadingRes.get(args[0].name);\\n              if (!shading) {\\n                throw new FormatError(\\\"No shading object found\\\");\\n              }\\n            } catch (reason) {\\n              if (reason instanceof AbortException) {\\n                continue;\\n              }\\n              if (self.options.ignoreErrors) {\\n                warn(`getOperatorList - ignoring Shading: \\\"${reason}\\\".`);\\n                continue;\\n              }\\n              throw reason;\\n            }\\n            const patternId = self.parseShading({\\n              shading,\\n              resources,\\n              localColorSpaceCache,\\n              localShadingPatternCache,\\n            });\\n            if (!patternId) {\\n              continue;\\n            }\\n            args = [patternId];\\n            fn = OPS.shadingFill;\\n            break;\\n          case OPS.setGState:\\n            isValidName = args[0] instanceof Name;\\n            name = args[0].name;\\n\\n            if (isValidName) {\\n              const localGStateObj = localGStateCache.getByName(name);\\n              if (localGStateObj) {\\n                if (localGStateObj.length > 0) {\\n                  operatorList.addOp(OPS.setGState, [localGStateObj]);\\n                }\\n                args = null;\\n                continue;\\n              }\\n            }\\n\\n            next(\\n              new Promise(function (resolveGState, rejectGState) {\\n                if (!isValidName) {\\n                  throw new FormatError(\\\"GState must be referred to by name.\\\");\\n                }\\n\\n                const extGState = resources.get(\\\"ExtGState\\\");\\n                if (!(extGState instanceof Dict)) {\\n                  throw new FormatError(\\\"ExtGState should be a dictionary.\\\");\\n                }\\n\\n                const gState = extGState.get(name);\\n                \u002F\u002F TODO: Attempt to lookup cached GStates by reference as well,\\n                \u002F\u002F       if and only if there are PDF documents where doing so\\n                \u002F\u002F       would significantly improve performance.\\n                if (!(gState instanceof Dict)) {\\n                  throw new FormatError(\\\"GState should be a dictionary.\\\");\\n                }\\n\\n                self\\n                  .setGState({\\n                    resources,\\n                    gState,\\n                    operatorList,\\n                    cacheKey: name,\\n                    task,\\n                    stateManager,\\n                    localGStateCache,\\n                    localColorSpaceCache,\\n                    seenRefs,\\n                  })\\n                  .then(resolveGState, rejectGState);\\n              }).catch(function (reason) {\\n                if (reason instanceof AbortException) {\\n                  return;\\n                }\\n                if (self.options.ignoreErrors) {\\n                  warn(`getOperatorList - ignoring ExtGState: \\\"${reason}\\\".`);\\n                  return;\\n                }\\n                throw reason;\\n              })\\n            );\\n            return;\\n          case OPS.setLineWidth: {\\n            \u002F\u002F The thickness should be a non-negative number, as per spec.\\n            \u002F\u002F When the value is negative, Acrobat and Poppler take the absolute\\n            \u002F\u002F value while PDFium takes the max of 0 and the value.\\n            const [thickness] = args;\\n            if (typeof thickness !== \\\"number\\\") {\\n              warn(`Invalid setLineWidth: ${thickness}`);\\n              continue;\\n            }\\n            args[0] = Math.abs(thickness);\\n            break;\\n          }\\n          case OPS.moveTo:\\n          case OPS.lineTo:\\n          case OPS.curveTo:\\n          case OPS.curveTo2:\\n          case OPS.curveTo3:\\n          case OPS.closePath:\\n          case OPS.rectangle:\\n            self.buildPath(fn, args, stateManager.state);\\n            continue;\\n          case OPS.stroke:\\n          case OPS.closeStroke:\\n          case OPS.fill:\\n          case OPS.eoFill:\\n          case OPS.fillStroke:\\n          case OPS.eoFillStroke:\\n          case OPS.closeFillStroke:\\n          case OPS.closeEOFillStroke:\\n          case OPS.endPath: {\\n            const {\\n              state: { pathBuffer, pathMinMax },\\n            } = stateManager;\\n            if (\\n              fn === OPS.closeStroke ||\\n              fn === OPS.closeFillStroke ||\\n              fn === OPS.closeEOFillStroke\\n            ) {\\n              pathBuffer.push(DrawOPS.closePath);\\n            }\\n            if (pathBuffer.length === 0) {\\n              operatorList.addOp(OPS.constructPath, [fn, [null], null]);\\n            } else {\\n              operatorList.addOp(OPS.constructPath, [\\n                fn,\\n                [new Float32Array(pathBuffer)],\\n                pathMinMax.slice(),\\n              ]);\\n              pathBuffer.length = 0;\\n              pathMinMax.set([Infinity, Infinity, -Infinity, -Infinity], 0);\\n            }\\n            continue;\\n          }\\n          case OPS.setTextMatrix:\\n            operatorList.addOp(fn, [new Float32Array(args)]);\\n            continue;\\n          case OPS.markPoint:\\n          case OPS.markPointProps:\\n          case OPS.beginCompat:\\n          case OPS.endCompat:\\n            \u002F\u002F Ignore operators where the corresponding handlers are known to\\n            \u002F\u002F be no-op in CanvasGraphics (display\u002Fcanvas.js). This prevents\\n            \u002F\u002F serialization errors and is also a bit more efficient.\\n            \u002F\u002F We could also try to serialize all objects in a general way,\\n            \u002F\u002F e.g. as done in https:\u002F\u002Fgithub.com\u002Fmozilla\u002Fpdf.js\u002Fpull\u002F6266,\\n            \u002F\u002F but doing so is meaningless without knowing the semantics.\\n            continue;\\n          case OPS.beginMarkedContentProps:\\n            if (!(args[0] instanceof Name)) {\\n              warn(`Expected name for beginMarkedContentProps arg0=${args[0]}`);\\n              operatorList.addOp(OPS.beginMarkedContentProps, [\\\"OC\\\", null]);\\n              continue;\\n            }\\n            if (args[0].name === \\\"OC\\\") {\\n              next(\\n                self\\n                  .parseMarkedContentProps(args[1], resources)\\n                  .then(data => {\\n                    operatorList.addOp(OPS.beginMarkedContentProps, [\\n                      \\\"OC\\\",\\n                      data,\\n                    ]);\\n                  })\\n                  .catch(reason => {\\n                    if (reason instanceof AbortException) {\\n                      return;\\n                    }\\n                    if (self.options.ignoreErrors) {\\n                      warn(\\n                        `getOperatorList - ignoring beginMarkedContentProps: \\\"${reason}\\\".`\\n                      );\\n                      operatorList.addOp(OPS.beginMarkedContentProps, [\\n                        \\\"OC\\\",\\n                        null,\\n                      ]);\\n                      return;\\n                    }\\n                    throw reason;\\n                  })\\n              );\\n              return;\\n            }\\n            \u002F\u002F Other marked content types aren't supported yet.\\n            args = [\\n              args[0].name,\\n              args[1] instanceof Dict ? args[1].get(\\\"MCID\\\") : null,\\n            ];\\n\\n            break;\\n          case OPS.beginMarkedContent:\\n          case OPS.endMarkedContent:\\n          default:\\n            \u002F\u002F Note: Ignore the operator if it has `Dict` arguments, since\\n            \u002F\u002F those are non-serializable, otherwise postMessage will throw\\n            \u002F\u002F \\\"An object could not be cloned.\\\".\\n            if (args !== null) {\\n              for (i = 0, ii = args.length; i \u003C ii; i++) {\\n                if (args[i] instanceof Dict) {\\n                  break;\\n                }\\n              }\\n              if (i \u003C ii) {\\n                warn(\\\"getOperatorList - ignoring operator: \\\" + fn);\\n                continue;\\n              }\\n            }\\n        }\\n        operatorList.addOp(fn, args);\\n      }\\n      if (stop) {\\n        next(deferred);\\n        return;\\n      }\\n      \u002F\u002F Some PDFs don't close all restores inside object\u002Fform.\\n      \u002F\u002F Closing those for them.\\n      closePendingRestoreOPS();\\n      resolve();\\n    }).catch(reason => {\\n      if (reason instanceof AbortException) {\\n        return;\\n      }\\n      if (this.options.ignoreErrors) {\\n        warn(\\n          `getOperatorList - ignoring errors during \\\"${task.name}\\\" ` +\\n            `task: \\\"${reason}\\\".`\\n        );\\n\\n        closePendingRestoreOPS();\\n        return;\\n      }\\n      throw reason;\\n    });\\n  }\\n\\n  getTextContent({\\n    stream,\\n    task,\\n    resources,\\n    stateManager = null,\\n    includeMarkedContent = false,\\n    sink,\\n    seenStyles = new Set(),\\n    viewBox,\\n    lang = null,\\n    markedContentData = null,\\n    disableNormalization = false,\\n    keepWhiteSpace = false,\\n    prevRefs = null,\\n  }) {\\n    const objId = stream.dict?.objId;\\n    const seenRefs = new RefSet(prevRefs);\\n\\n    if (objId) {\\n      if (prevRefs?.has(objId)) {\\n        throw new Error(\\n          `getTextContent - ignoring circular reference: ${objId}`\\n        );\\n      }\\n      seenRefs.put(objId);\\n    }\\n    \u002F\u002F Ensure that `resources`\u002F`stateManager` is correctly initialized,\\n    \u002F\u002F even if the provided parameter is e.g. `null`.\\n    resources ||= Dict.empty;\\n    stateManager ||= new StateManager(new TextState());\\n\\n    if (includeMarkedContent) {\\n      markedContentData ||= { level: 0 };\\n    }\\n\\n    const textContent = {\\n      items: [],\\n      styles: Object.create(null),\\n      lang,\\n    };\\n    const textContentItem = {\\n      initialized: false,\\n      str: [],\\n      totalWidth: 0,\\n      totalHeight: 0,\\n      width: 0,\\n      height: 0,\\n      vertical: false,\\n      prevTransform: null,\\n      textAdvanceScale: 0,\\n      spaceInFlowMin: 0,\\n      spaceInFlowMax: 0,\\n      trackingSpaceMin: Infinity,\\n      negativeSpaceMax: -Infinity,\\n      notASpace: -Infinity,\\n      transform: null,\\n      fontName: null,\\n      hasEOL: false,\\n    };\\n\\n    \u002F\u002F Use a circular buffer (length === 2) to save the last chars in the\\n    \u002F\u002F text stream.\\n    \u002F\u002F This implementation of the circular buffer is using a fixed array\\n    \u002F\u002F and the position of the next element:\\n    \u002F\u002F function addElement(x) {\\n    \u002F\u002F   buffer[pos] = x;\\n    \u002F\u002F   pos = (pos + 1) % buffer.length;\\n    \u002F\u002F }\\n    \u002F\u002F It's a way faster than:\\n    \u002F\u002F function addElement(x) {\\n    \u002F\u002F   buffer.push(x);\\n    \u002F\u002F   buffer.shift();\\n    \u002F\u002F }\\n    \u002F\u002F\\n    \u002F\u002F It's useful to know when we need to add a whitespace in the\\n    \u002F\u002F text chunk.\\n    const twoLastChars = [\\\" \\\", \\\" \\\"];\\n    let twoLastCharsPos = 0;\\n\\n    \u002F**\\n     * Save the last char.\\n     * @param {string} char\\n     * @returns {boolean} true when the two last chars before adding the new one\\n     * are a non-whitespace followed by a whitespace.\\n     *\u002F\\n    function saveLastChar(char) {\\n      const nextPos = (twoLastCharsPos + 1) % 2;\\n      const ret =\\n        twoLastChars[twoLastCharsPos] !== \\\" \\\" && twoLastChars[nextPos] === \\\" \\\";\\n      twoLastChars[twoLastCharsPos] = char;\\n      twoLastCharsPos = nextPos;\\n\\n      return !keepWhiteSpace && ret;\\n    }\\n\\n    function shouldAddWhitepsace() {\\n      return (\\n        !keepWhiteSpace &&\\n        twoLastChars[twoLastCharsPos] !== \\\" \\\" &&\\n        twoLastChars[(twoLastCharsPos + 1) % 2] === \\\" \\\"\\n      );\\n    }\\n\\n    function resetLastChars() {\\n      twoLastChars[0] = twoLastChars[1] = \\\" \\\";\\n      twoLastCharsPos = 0;\\n    }\\n\\n    \u002F\u002F Used in addFakeSpaces.\\n\\n    \u002F\u002F A white \u003C= fontSize * TRACKING_SPACE_FACTOR is a tracking space\\n    \u002F\u002F so it doesn't count as a space.\\n    const TRACKING_SPACE_FACTOR = 0.102;\\n\\n    \u002F\u002F When a white \u003C= fontSize * NOT_A_SPACE_FACTOR, there is no space\\n    \u002F\u002F even if one is present in the text stream.\\n    const NOT_A_SPACE_FACTOR = 0.03;\\n\\n    \u002F\u002F A negative white \u003C fontSize * NEGATIVE_SPACE_FACTOR induces\\n    \u002F\u002F a break (a new chunk of text is created).\\n    \u002F\u002F It doesn't change anything when the text is copied but\\n    \u002F\u002F it improves potential mismatch between text layer and canvas.\\n    const NEGATIVE_SPACE_FACTOR = -0.2;\\n\\n    \u002F\u002F A white with a width in [fontSize * MIN_FACTOR; fontSize * MAX_FACTOR]\\n    \u002F\u002F is a space which will be inserted in the current flow of words.\\n    \u002F\u002F If the width is outside of this range then the flow is broken\\n    \u002F\u002F (which means a new span in the text layer).\\n    \u002F\u002F It's useful to adjust the best as possible the span in the layer\\n    \u002F\u002F to what is displayed in the canvas.\\n    const SPACE_IN_FLOW_MIN_FACTOR = 0.102;\\n    const SPACE_IN_FLOW_MAX_FACTOR = 0.6;\\n\\n    \u002F\u002F If a char is too high\u002Ftoo low compared to the previous we just create\\n    \u002F\u002F a new chunk.\\n    \u002F\u002F If the advance isn't in the +\u002F-VERTICAL_SHIFT_RATIO * height range then\\n    \u002F\u002F a new chunk is created.\\n    const VERTICAL_SHIFT_RATIO = 0.25;\\n\\n    const self = this;\\n    const xref = this.xref;\\n    const showSpacedTextBuffer = [];\\n\\n    \u002F\u002F The xobj is parsed iff it's needed, e.g. if there is a `DO` cmd.\\n    let xobjs = null;\\n    const emptyXObjectCache = new LocalImageCache();\\n    const emptyGStateCache = new LocalGStateCache();\\n\\n    const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\\n\\n    let textState;\\n\\n    function pushWhitespace({\\n      width = 0,\\n      height = 0,\\n      transform = textContentItem.prevTransform,\\n      fontName = textContentItem.fontName,\\n    }) {\\n      textContent.items.push({\\n        str: \\\" \\\",\\n        dir: \\\"ltr\\\",\\n        width,\\n        height,\\n        transform,\\n        fontName,\\n        hasEOL: false,\\n      });\\n    }\\n\\n    function getCurrentTextTransform() {\\n      \u002F\u002F 9.4.4 Text Space Details\\n      const font = textState.font;\\n      const tsm = [\\n        textState.fontSize * textState.textHScale,\\n        0,\\n        0,\\n        textState.fontSize,\\n        0,\\n        textState.textRise,\\n      ];\\n\\n      if (\\n        font.isType3Font &&\\n        (textState.fontSize \u003C= 1 || font.isCharBBox) &&\\n        !isArrayEqual(textState.fontMatrix, FONT_IDENTITY_MATRIX)\\n      ) {\\n        const glyphHeight = font.bbox[3] - font.bbox[1];\\n        if (glyphHeight > 0) {\\n          tsm[3] *= glyphHeight * textState.fontMatrix[3];\\n        }\\n      }\\n\\n      return Util.transform(\\n        textState.ctm,\\n        Util.transform(textState.textMatrix, tsm)\\n      );\\n    }\\n\\n    function ensureTextContentItem() {\\n      if (textContentItem.initialized) {\\n        return textContentItem;\\n      }\\n      const { font, loadedName } = textState;\\n      if (!seenStyles.has(loadedName)) {\\n        seenStyles.add(loadedName);\\n        textContent.styles[loadedName] = {\\n          fontFamily: font.fallbackName,\\n          ascent: font.ascent,\\n          descent: font.descent,\\n          vertical: font.vertical,\\n        };\\n        if (self.options.fontExtraProperties && font.systemFontInfo) {\\n          const style = textContent.styles[loadedName];\\n          style.fontSubstitution = font.systemFontInfo.css;\\n          style.fontSubstitutionLoadedName = font.systemFontInfo.loadedName;\\n        }\\n      }\\n      textContentItem.fontName = loadedName;\\n\\n      const trm = (textContentItem.transform = getCurrentTextTransform());\\n      if (!font.vertical) {\\n        textContentItem.width = textContentItem.totalWidth = 0;\\n        textContentItem.height = textContentItem.totalHeight = Math.hypot(\\n          trm[2],\\n          trm[3]\\n        );\\n        textContentItem.vertical = false;\\n      } else {\\n        textContentItem.width = textContentItem.totalWidth = Math.hypot(\\n          trm[0],\\n          trm[1]\\n        );\\n        textContentItem.height = textContentItem.totalHeight = 0;\\n        textContentItem.vertical = true;\\n      }\\n\\n      const scaleLineX = Math.hypot(\\n        textState.textLineMatrix[0],\\n        textState.textLineMatrix[1]\\n      );\\n      const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\\n      textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;\\n\\n      const { fontSize } = textState;\\n      textContentItem.trackingSpaceMin = fontSize * TRACKING_SPACE_FACTOR;\\n      textContentItem.notASpace = fontSize * NOT_A_SPACE_FACTOR;\\n      textContentItem.negativeSpaceMax = fontSize * NEGATIVE_SPACE_FACTOR;\\n      textContentItem.spaceInFlowMin = fontSize * SPACE_IN_FLOW_MIN_FACTOR;\\n      textContentItem.spaceInFlowMax = fontSize * SPACE_IN_FLOW_MAX_FACTOR;\\n      textContentItem.hasEOL = false;\\n\\n      textContentItem.initialized = true;\\n      return textContentItem;\\n    }\\n\\n    function updateAdvanceScale() {\\n      if (!textContentItem.initialized) {\\n        return;\\n      }\\n\\n      const scaleLineX = Math.hypot(\\n        textState.textLineMatrix[0],\\n        textState.textLineMatrix[1]\\n      );\\n      const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\\n      const scaleFactor = scaleCtmX * scaleLineX;\\n      if (scaleFactor === textContentItem.textAdvanceScale) {\\n        return;\\n      }\\n\\n      if (!textContentItem.vertical) {\\n        textContentItem.totalWidth +=\\n          textContentItem.width * textContentItem.textAdvanceScale;\\n        textContentItem.width = 0;\\n      } else {\\n        textContentItem.totalHeight +=\\n          textContentItem.height * textContentItem.textAdvanceScale;\\n        textContentItem.height = 0;\\n      }\\n\\n      textContentItem.textAdvanceScale = scaleFactor;\\n    }\\n\\n    function runBidiTransform(textChunk) {\\n      let text = textChunk.str.join(\\\"\\\");\\n      if (!disableNormalization) {\\n        text = normalizeUnicode(text);\\n      }\\n      const bidiResult = bidi(text, -1, textChunk.vertical);\\n      return {\\n        str: bidiResult.str,\\n        dir: bidiResult.dir,\\n        width: Math.abs(textChunk.totalWidth),\\n        height: Math.abs(textChunk.totalHeight),\\n        transform: textChunk.transform,\\n        fontName: textChunk.fontName,\\n        hasEOL: textChunk.hasEOL,\\n      };\\n    }\\n\\n    async function handleSetFont(fontName, fontRef) {\\n      const translated = await self.loadFont(\\n        fontName,\\n        fontRef,\\n        resources,\\n        task\\n      );\\n\\n      textState.loadedName = translated.loadedName;\\n      textState.font = translated.font;\\n      textState.fontMatrix = translated.font.fontMatrix || FONT_IDENTITY_MATRIX;\\n    }\\n\\n    function applyInverseRotation(x, y, matrix) {\\n      const scale = Math.hypot(matrix[0], matrix[1]);\\n      return [\\n        (matrix[0] * x + matrix[1] * y) \u002F scale,\\n        (matrix[2] * x + matrix[3] * y) \u002F scale,\\n      ];\\n    }\\n\\n    function compareWithLastPosition(glyphWidth) {\\n      const currentTransform = getCurrentTextTransform();\\n      let posX = currentTransform[4];\\n      let posY = currentTransform[5];\\n\\n      \u002F\u002F Check if the glyph is in the viewbox.\\n      if (textState.font?.vertical) {\\n        if (\\n          posX \u003C viewBox[0] ||\\n          posX > viewBox[2] ||\\n          posY + glyphWidth \u003C viewBox[1] ||\\n          posY > viewBox[3]\\n        ) {\\n          return false;\\n        }\\n      } else if (\\n        posX + glyphWidth \u003C viewBox[0] ||\\n        posX > viewBox[2] ||\\n        posY \u003C viewBox[1] ||\\n        posY > viewBox[3]\\n      ) {\\n        return false;\\n      }\\n\\n      if (!textState.font || !textContentItem.prevTransform) {\\n        return true;\\n      }\\n\\n      let lastPosX = textContentItem.prevTransform[4];\\n      let lastPosY = textContentItem.prevTransform[5];\\n\\n      if (lastPosX === posX && lastPosY === posY) {\\n        return true;\\n      }\\n\\n      let rotate = -1;\\n      \u002F\u002F Take into account the rotation is the current transform.\\n      if (\\n        currentTransform[0] &&\\n        currentTransform[1] === 0 &&\\n        currentTransform[2] === 0\\n      ) {\\n        rotate = currentTransform[0] > 0 ? 0 : 180;\\n      } else if (\\n        currentTransform[1] &&\\n        currentTransform[0] === 0 &&\\n        currentTransform[3] === 0\\n      ) {\\n        rotate = currentTransform[1] > 0 ? 90 : 270;\\n      }\\n\\n      switch (rotate) {\\n        case 0:\\n          break;\\n        case 90:\\n          [posX, posY] = [posY, posX];\\n          [lastPosX, lastPosY] = [lastPosY, lastPosX];\\n          break;\\n        case 180:\\n          [posX, posY, lastPosX, lastPosY] = [\\n            -posX,\\n            -posY,\\n            -lastPosX,\\n            -lastPosY,\\n          ];\\n          break;\\n        case 270:\\n          [posX, posY] = [-posY, -posX];\\n          [lastPosX, lastPosY] = [-lastPosY, -lastPosX];\\n          break;\\n        default:\\n          \u002F\u002F This is not a 0, 90, 180, 270 rotation so:\\n          \u002F\u002F  - remove the scale factor from the matrix to get a rotation matrix\\n          \u002F\u002F  - apply the inverse (which is the transposed) to the positions\\n          \u002F\u002F and we can then compare positions of the glyphes to detect\\n          \u002F\u002F a whitespace.\\n          [posX, posY] = applyInverseRotation(posX, posY, currentTransform);\\n          [lastPosX, lastPosY] = applyInverseRotation(\\n            lastPosX,\\n            lastPosY,\\n            textContentItem.prevTransform\\n          );\\n      }\\n\\n      if (textState.font.vertical) {\\n        const advanceY = (lastPosY - posY) \u002F textContentItem.textAdvanceScale;\\n        const advanceX = posX - lastPosX;\\n\\n        \u002F\u002F When the total height of the current chunk is negative\\n        \u002F\u002F then we're writing from bottom to top.\\n        const textOrientation = Math.sign(textContentItem.height);\\n        if (advanceY \u003C textOrientation * textContentItem.negativeSpaceMax) {\\n          if (\\n            Math.abs(advanceX) >\\n            0.5 * textContentItem.width \u002F* not the same column *\u002F\\n          ) {\\n            appendEOL();\\n            return true;\\n          }\\n\\n          resetLastChars();\\n          flushTextContentItem();\\n          return true;\\n        }\\n\\n        if (Math.abs(advanceX) > textContentItem.width) {\\n          appendEOL();\\n          return true;\\n        }\\n\\n        if (advanceY \u003C= textOrientation * textContentItem.notASpace) {\\n          \u002F\u002F The real spacing between 2 consecutive chars is thin enough to be\\n          \u002F\u002F considered a non-space.\\n          resetLastChars();\\n        }\\n\\n        if (advanceY \u003C= textOrientation * textContentItem.trackingSpaceMin) {\\n          if (shouldAddWhitepsace()) {\\n            \u002F\u002F The space is very thin, hence it deserves to have its own span in\\n            \u002F\u002F order to avoid too much shift between the canvas and the text\\n            \u002F\u002F layer.\\n            resetLastChars();\\n            flushTextContentItem();\\n            pushWhitespace({ height: Math.abs(advanceY) });\\n          } else {\\n            textContentItem.height += advanceY;\\n          }\\n        } else if (\\n          !addFakeSpaces(\\n            advanceY,\\n            textContentItem.prevTransform,\\n            textOrientation\\n          )\\n        ) {\\n          if (textContentItem.str.length === 0) {\\n            resetLastChars();\\n            pushWhitespace({ height: Math.abs(advanceY) });\\n          } else {\\n            textContentItem.height += advanceY;\\n          }\\n        }\\n\\n        if (Math.abs(advanceX) > textContentItem.width * VERTICAL_SHIFT_RATIO) {\\n          flushTextContentItem();\\n        }\\n\\n        return true;\\n      }\\n\\n      const advanceX = (posX - lastPosX) \u002F textContentItem.textAdvanceScale;\\n      const advanceY = posY - lastPosY;\\n\\n      \u002F\u002F When the total width of the current chunk is negative\\n      \u002F\u002F then we're writing from right to left.\\n      const textOrientation = Math.sign(textContentItem.width);\\n      if (advanceX \u003C textOrientation * textContentItem.negativeSpaceMax) {\\n        if (\\n          Math.abs(advanceY) >\\n          0.5 * textContentItem.height \u002F* not the same line *\u002F\\n        ) {\\n          appendEOL();\\n          return true;\\n        }\\n\\n        \u002F\u002F We're moving back so in case the last char was a whitespace\\n        \u002F\u002F we cancel it: it doesn't make sense to insert it.\\n        resetLastChars();\\n        flushTextContentItem();\\n        return true;\\n      }\\n\\n      if (Math.abs(advanceY) > textContentItem.height) {\\n        appendEOL();\\n        return true;\\n      }\\n\\n      if (advanceX \u003C= textOrientation * textContentItem.notASpace) {\\n        \u002F\u002F The real spacing between 2 consecutive chars is thin enough to be\\n        \u002F\u002F considered a non-space.\\n        resetLastChars();\\n      }\\n\\n      if (advanceX \u003C= textOrientation * textContentItem.trackingSpaceMin) {\\n        if (shouldAddWhitepsace()) {\\n          \u002F\u002F The space is very thin, hence it deserves to have its own span in\\n          \u002F\u002F order to avoid too much shift between the canvas and the text\\n          \u002F\u002F layer.\\n          resetLastChars();\\n          flushTextContentItem();\\n          pushWhitespace({ width: Math.abs(advanceX) });\\n        } else {\\n          textContentItem.width += advanceX;\\n        }\\n      } else if (\\n        !addFakeSpaces(advanceX, textContentItem.prevTransform, textOrientation)\\n      ) {\\n        if (textContentItem.str.length === 0) {\\n          resetLastChars();\\n          pushWhitespace({ width: Math.abs(advanceX) });\\n        } else {\\n          textContentItem.width += advanceX;\\n        }\\n      }\\n\\n      if (Math.abs(advanceY) > textContentItem.height * VERTICAL_SHIFT_RATIO) {\\n        flushTextContentItem();\\n      }\\n\\n      return true;\\n    }\\n\\n    function buildTextContentItem({ chars, extraSpacing }) {\\n      const font = textState.font;\\n      if (!chars) {\\n        \u002F\u002F Just move according to the space we have.\\n        const charSpacing = textState.charSpacing + extraSpacing;\\n        if (charSpacing) {\\n          if (!font.vertical) {\\n            textState.translateTextMatrix(\\n              charSpacing * textState.textHScale,\\n              0\\n            );\\n          } else {\\n            textState.translateTextMatrix(0, -charSpacing);\\n          }\\n        }\\n\\n        if (keepWhiteSpace) {\\n          compareWithLastPosition(0);\\n        }\\n\\n        return;\\n      }\\n\\n      const glyphs = font.charsToGlyphs(chars);\\n      const scale = textState.fontMatrix[0] * textState.fontSize;\\n\\n      for (let i = 0, ii = glyphs.length; i \u003C ii; i++) {\\n        const glyph = glyphs[i];\\n        const { category } = glyph;\\n\\n        if (category.isInvisibleFormatMark) {\\n          continue;\\n        }\\n        let charSpacing =\\n          textState.charSpacing + (i + 1 === ii ? extraSpacing : 0);\\n\\n        let glyphWidth = glyph.width;\\n        if (font.vertical) {\\n          glyphWidth = glyph.vmetric ? glyph.vmetric[0] : -glyphWidth;\\n        }\\n        let scaledDim = glyphWidth * scale;\\n\\n        if (!keepWhiteSpace && category.isWhitespace) {\\n          \u002F\u002F Don't push a \\\" \\\" in the textContentItem\\n          \u002F\u002F (except when it's between two non-spaces chars),\\n          \u002F\u002F it will be done (if required) in next call to\\n          \u002F\u002F compareWithLastPosition.\\n          \u002F\u002F This way we can merge real spaces and spaces due to cursor moves.\\n          if (!font.vertical) {\\n            charSpacing += scaledDim + textState.wordSpacing;\\n            textState.translateTextMatrix(\\n              charSpacing * textState.textHScale,\\n              0\\n            );\\n          } else {\\n            charSpacing += -scaledDim + textState.wordSpacing;\\n            textState.translateTextMatrix(0, -charSpacing);\\n          }\\n          saveLastChar(\\\" \\\");\\n          continue;\\n        }\\n\\n        if (\\n          !category.isZeroWidthDiacritic &&\\n          !compareWithLastPosition(scaledDim)\\n        ) {\\n          \u002F\u002F The glyph is not in page so just skip it but move the cursor.\\n          if (!font.vertical) {\\n            textState.translateTextMatrix(scaledDim * textState.textHScale, 0);\\n          } else {\\n            textState.translateTextMatrix(0, scaledDim);\\n          }\\n          continue;\\n        }\\n\\n        \u002F\u002F Must be called after compareWithLastPosition because\\n        \u002F\u002F the textContentItem could have been flushed.\\n        const textChunk = ensureTextContentItem();\\n        if (category.isZeroWidthDiacritic) {\\n          scaledDim = 0;\\n        }\\n\\n        if (!font.vertical) {\\n          scaledDim *= textState.textHScale;\\n          textState.translateTextMatrix(scaledDim, 0);\\n          textChunk.width += scaledDim;\\n        } else {\\n          textState.translateTextMatrix(0, scaledDim);\\n          scaledDim = Math.abs(scaledDim);\\n          textChunk.height += scaledDim;\\n        }\\n\\n        if (scaledDim) {\\n          \u002F\u002F Save the position of the last visible character.\\n          textChunk.prevTransform = getCurrentTextTransform();\\n        }\\n\\n        const glyphUnicode = glyph.unicode;\\n        if (saveLastChar(glyphUnicode)) {\\n          \u002F\u002F The two last chars are a non-whitespace followed by a whitespace\\n          \u002F\u002F and then this non-whitespace, so we insert a whitespace here.\\n          \u002F\u002F Replaces all whitespaces with standard spaces (0x20), to avoid\\n          \u002F\u002F alignment issues between the textLayer and the canvas if the text\\n          \u002F\u002F contains e.g. tabs (fixes issue6612.pdf).\\n          textChunk.str.push(\\\" \\\");\\n        }\\n        textChunk.str.push(glyphUnicode);\\n\\n        if (charSpacing) {\\n          if (!font.vertical) {\\n            textState.translateTextMatrix(\\n              charSpacing * textState.textHScale,\\n              0\\n            );\\n          } else {\\n            textState.translateTextMatrix(0, -charSpacing);\\n          }\\n        }\\n      }\\n    }\\n\\n    function appendEOL() {\\n      resetLastChars();\\n      if (textContentItem.initialized) {\\n        textContentItem.hasEOL = true;\\n        flushTextContentItem();\\n      } else {\\n        textContent.items.push({\\n          str: \\\"\\\",\\n          dir: \\\"ltr\\\",\\n          width: 0,\\n          height: 0,\\n          transform: getCurrentTextTransform(),\\n          fontName: textState.loadedName,\\n          hasEOL: true,\\n        });\\n      }\\n    }\\n\\n    function addFakeSpaces(width, transf, textOrientation) {\\n      if (\\n        textOrientation * textContentItem.spaceInFlowMin \u003C= width &&\\n        width \u003C= textOrientation * textContentItem.spaceInFlowMax\\n      ) {\\n        if (textContentItem.initialized) {\\n          resetLastChars();\\n          textContentItem.str.push(\\\" \\\");\\n        }\\n        return false;\\n      }\\n\\n      const fontName = textContentItem.fontName;\\n\\n      let height = 0;\\n      if (textContentItem.vertical) {\\n        height = width;\\n        width = 0;\\n      }\\n\\n      flushTextContentItem();\\n      resetLastChars();\\n      pushWhitespace({\\n        width: Math.abs(width),\\n        height: Math.abs(height),\\n        transform: transf || getCurrentTextTransform(),\\n        fontName,\\n      });\\n\\n      return true;\\n    }\\n\\n    function flushTextContentItem() {\\n      if (!textContentItem.initialized || !textContentItem.str) {\\n        return;\\n      }\\n\\n      \u002F\u002F Do final text scaling.\\n      if (!textContentItem.vertical) {\\n        textContentItem.totalWidth +=\\n          textContentItem.width * textContentItem.textAdvanceScale;\\n      } else {\\n        textContentItem.totalHeight +=\\n          textContentItem.height * textContentItem.textAdvanceScale;\\n      }\\n\\n      textContent.items.push(runBidiTransform(textContentItem));\\n      textContentItem.initialized = false;\\n      textContentItem.str.length = 0;\\n    }\\n\\n    function enqueueChunk(batch = false) {\\n      const length = textContent.items.length;\\n      if (length === 0) {\\n        return;\\n      }\\n      if (batch && length \u003C TEXT_CHUNK_BATCH_SIZE) {\\n        return;\\n      }\\n      sink.enqueue(textContent, length);\\n      textContent.items = [];\\n      textContent.styles = Object.create(null);\\n    }\\n\\n    const timeSlotManager = new TimeSlotManager();\\n\\n    return new Promise(function promiseBody(resolve, reject) {\\n      const next = function (promise) {\\n        enqueueChunk(\u002F* batch = *\u002F true);\\n        Promise.all([promise, sink.ready]).then(function () {\\n          try {\\n            promiseBody(resolve, reject);\\n          } catch (ex) {\\n            reject(ex);\\n          }\\n        }, reject);\\n      };\\n      task.ensureNotTerminated();\\n      timeSlotManager.reset();\\n\\n      const operation = {};\\n      let stop,\\n        name,\\n        isValidName,\\n        args = [];\\n      while (!(stop = timeSlotManager.check())) {\\n        \u002F\u002F The arguments parsed by read() are not used beyond this loop, so\\n        \u002F\u002F we can reuse the same array on every iteration, thus avoiding\\n        \u002F\u002F unnecessary allocations.\\n        args.length = 0;\\n        operation.args = args;\\n        if (!preprocessor.read(operation)) {\\n          break;\\n        }\\n\\n        const previousState = textState;\\n        textState = stateManager.state;\\n        const fn = operation.fn;\\n        args = operation.args;\\n\\n        switch (fn | 0) {\\n          case OPS.setFont:\\n            \u002F\u002F Optimization to ignore multiple identical Tf commands.\\n            const fontNameArg = args[0].name,\\n              fontSizeArg = args[1];\\n            if (\\n              textState.font &&\\n              fontNameArg === textState.fontName &&\\n              fontSizeArg === textState.fontSize\\n            ) {\\n              break;\\n            }\\n\\n            flushTextContentItem();\\n            textState.fontName = fontNameArg;\\n            textState.fontSize = fontSizeArg;\\n            next(handleSetFont(fontNameArg, null));\\n            return;\\n          case OPS.setTextRise:\\n            textState.textRise = args[0];\\n            break;\\n          case OPS.setHScale:\\n            textState.textHScale = args[0] \u002F 100;\\n            break;\\n          case OPS.setLeading:\\n            textState.leading = args[0];\\n            break;\\n          case OPS.moveText:\\n            textState.translateTextLineMatrix(args[0], args[1]);\\n            textState.textMatrix = textState.textLineMatrix.slice();\\n            break;\\n          case OPS.setLeadingMoveText:\\n            textState.leading = -args[1];\\n            textState.translateTextLineMatrix(args[0], args[1]);\\n            textState.textMatrix = textState.textLineMatrix.slice();\\n            break;\\n          case OPS.nextLine:\\n            textState.carriageReturn();\\n            break;\\n          case OPS.setTextMatrix:\\n            textState.setTextMatrix(\\n              args[0],\\n              args[1],\\n              args[2],\\n              args[3],\\n              args[4],\\n              args[5]\\n            );\\n            textState.setTextLineMatrix(\\n              args[0],\\n              args[1],\\n              args[2],\\n              args[3],\\n              args[4],\\n              args[5]\\n            );\\n            updateAdvanceScale();\\n            break;\\n          case OPS.setCharSpacing:\\n            textState.charSpacing = args[0];\\n            break;\\n          case OPS.setWordSpacing:\\n            textState.wordSpacing = args[0];\\n            break;\\n          case OPS.beginText:\\n            textState.textMatrix = IDENTITY_MATRIX.slice();\\n            textState.textLineMatrix = IDENTITY_MATRIX.slice();\\n            break;\\n          case OPS.showSpacedText:\\n            if (!stateManager.state.font) {\\n              self.ensureStateFont(stateManager.state);\\n              continue;\\n            }\\n\\n            const spaceFactor =\\n              ((textState.font.vertical ? 1 : -1) * textState.fontSize) \u002F 1000;\\n            const elements = args[0];\\n            for (let i = 0, ii = elements.length; i \u003C ii; i++) {\\n              const item = elements[i];\\n              if (typeof item === \\\"string\\\") {\\n                showSpacedTextBuffer.push(item);\\n              } else if (typeof item === \\\"number\\\" && item !== 0) {\\n                \u002F\u002F PDF Specification 5.3.2 states:\\n                \u002F\u002F The number is expressed in thousandths of a unit of text\\n                \u002F\u002F space.\\n                \u002F\u002F This amount is subtracted from the current horizontal or\\n                \u002F\u002F vertical coordinate, depending on the writing mode.\\n                \u002F\u002F In the default coordinate system, a positive adjustment\\n                \u002F\u002F has the effect of moving the next glyph painted either to\\n                \u002F\u002F the left or down by the given amount.\\n                const str = showSpacedTextBuffer.join(\\\"\\\");\\n                showSpacedTextBuffer.length = 0;\\n                buildTextContentItem({\\n                  chars: str,\\n                  extraSpacing: item * spaceFactor,\\n                });\\n              }\\n            }\\n\\n            if (showSpacedTextBuffer.length > 0) {\\n              const str = showSpacedTextBuffer.join(\\\"\\\");\\n              showSpacedTextBuffer.length = 0;\\n              buildTextContentItem({\\n                chars: str,\\n                extraSpacing: 0,\\n              });\\n            }\\n            break;\\n          case OPS.showText:\\n            if (!stateManager.state.font) {\\n              self.ensureStateFont(stateManager.state);\\n              continue;\\n            }\\n            buildTextContentItem({\\n              chars: args[0],\\n              extraSpacing: 0,\\n            });\\n            break;\\n          case OPS.nextLineShowText:\\n            if (!stateManager.state.font) {\\n              self.ensureStateFont(stateManager.state);\\n              continue;\\n            }\\n            textState.carriageReturn();\\n            buildTextContentItem({\\n              chars: args[0],\\n              extraSpacing: 0,\\n            });\\n            break;\\n          case OPS.nextLineSetSpacingShowText:\\n            if (!stateManager.state.font) {\\n              self.ensureStateFont(stateManager.state);\\n              continue;\\n            }\\n            textState.wordSpacing = args[0];\\n            textState.charSpacing = args[1];\\n            textState.carriageReturn();\\n            buildTextContentItem({\\n              chars: args[2],\\n              extraSpacing: 0,\\n            });\\n            break;\\n          case OPS.paintXObject:\\n            flushTextContentItem();\\n            xobjs ??= resources.get(\\\"XObject\\\") || Dict.empty;\\n\\n            isValidName = args[0] instanceof Name;\\n            name = args[0].name;\\n\\n            if (isValidName && emptyXObjectCache.getByName(name)) {\\n              break;\\n            }\\n\\n            next(\\n              new Promise(function (resolveXObject, rejectXObject) {\\n                if (!isValidName) {\\n                  throw new FormatError(\\\"XObject must be referred to by name.\\\");\\n                }\\n\\n                let xobj = xobjs.getRaw(name);\\n                if (xobj instanceof Ref) {\\n                  if (emptyXObjectCache.getByRef(xobj)) {\\n                    resolveXObject();\\n                    return;\\n                  }\\n\\n                  const globalImage = self.globalImageCache.getData(\\n                    xobj,\\n                    self.pageIndex\\n                  );\\n                  if (globalImage) {\\n                    resolveXObject();\\n                    return;\\n                  }\\n\\n                  xobj = xref.fetch(xobj);\\n                }\\n\\n                if (!(xobj instanceof BaseStream)) {\\n                  throw new FormatError(\\\"XObject should be a stream\\\");\\n                }\\n                const { dict } = xobj;\\n\\n                const type = dict.get(\\\"Subtype\\\");\\n                if (!(type instanceof Name)) {\\n                  throw new FormatError(\\\"XObject should have a Name subtype\\\");\\n                }\\n\\n                if (type.name !== \\\"Form\\\") {\\n                  emptyXObjectCache.set(name, dict.objId, true);\\n\\n                  resolveXObject();\\n                  return;\\n                }\\n\\n                \u002F\u002F Use a new `StateManager` to prevent incorrect positioning\\n                \u002F\u002F of textItems *after* the Form XObject, since errors in the\\n                \u002F\u002F data can otherwise prevent `restore` operators from\\n                \u002F\u002F executing.\\n                \u002F\u002F NOTE: Only an issue when `options.ignoreErrors === true`.\\n                const currentState = stateManager.state.clone();\\n                const xObjStateManager = new StateManager(currentState);\\n\\n                const matrix = lookupMatrix(dict.getArray(\\\"Matrix\\\"), null);\\n                if (matrix) {\\n                  xObjStateManager.transform(matrix);\\n                }\\n\\n                const localResources = dict.get(\\\"Resources\\\");\\n\\n                \u002F\u002F Enqueue the `textContent` chunk before parsing the \u002FForm\\n                \u002F\u002F XObject.\\n                enqueueChunk();\\n                const sinkWrapper = {\\n                  enqueueInvoked: false,\\n\\n                  enqueue(chunk, size) {\\n                    this.enqueueInvoked = true;\\n                    sink.enqueue(chunk, size);\\n                  },\\n\\n                  get desiredSize() {\\n                    return sink.desiredSize;\\n                  },\\n\\n                  get ready() {\\n                    return sink.ready;\\n                  },\\n                };\\n\\n                self\\n                  .getTextContent({\\n                    stream: xobj,\\n                    task,\\n                    resources:\\n                      localResources instanceof Dict\\n                        ? localResources\\n                        : resources,\\n                    stateManager: xObjStateManager,\\n                    includeMarkedContent,\\n                    sink: sinkWrapper,\\n                    seenStyles,\\n                    viewBox,\\n                    lang,\\n                    markedContentData,\\n                    disableNormalization,\\n                    keepWhiteSpace,\\n                    prevRefs: seenRefs,\\n                  })\\n                  .then(function () {\\n                    if (!sinkWrapper.enqueueInvoked) {\\n                      emptyXObjectCache.set(name, dict.objId, true);\\n                    }\\n                    resolveXObject();\\n                  }, rejectXObject);\\n              }).catch(function (reason) {\\n                if (reason instanceof AbortException) {\\n                  return;\\n                }\\n                if (self.options.ignoreErrors) {\\n                  \u002F\u002F Error(s) in the XObject -- allow text-extraction to\\n                  \u002F\u002F continue.\\n                  warn(`getTextContent - ignoring XObject: \\\"${reason}\\\".`);\\n                  return;\\n                }\\n                throw reason;\\n              })\\n            );\\n            return;\\n          case OPS.setGState:\\n            isValidName = args[0] instanceof Name;\\n            name = args[0].name;\\n\\n            if (isValidName && emptyGStateCache.getByName(name)) {\\n              break;\\n            }\\n\\n            next(\\n              new Promise(function (resolveGState, rejectGState) {\\n                if (!isValidName) {\\n                  throw new FormatError(\\\"GState must be referred to by name.\\\");\\n                }\\n\\n                const extGState = resources.get(\\\"ExtGState\\\");\\n                if (!(extGState instanceof Dict)) {\\n                  throw new FormatError(\\\"ExtGState should be a dictionary.\\\");\\n                }\\n\\n                const gState = extGState.get(name);\\n                \u002F\u002F TODO: Attempt to lookup cached GStates by reference as well,\\n                \u002F\u002F       if and only if there are PDF documents where doing so\\n                \u002F\u002F       would significantly improve performance.\\n                if (!(gState instanceof Dict)) {\\n                  throw new FormatError(\\\"GState should be a dictionary.\\\");\\n                }\\n\\n                const gStateFont = gState.get(\\\"Font\\\");\\n                if (!gStateFont) {\\n                  emptyGStateCache.set(name, gState.objId, true);\\n\\n                  resolveGState();\\n                  return;\\n                }\\n                flushTextContentItem();\\n\\n                textState.fontName = null;\\n                textState.fontSize = gStateFont[1];\\n                handleSetFont(null, gStateFont[0]).then(\\n                  resolveGState,\\n                  rejectGState\\n                );\\n              }).catch(function (reason) {\\n                if (reason instanceof AbortException) {\\n                  return;\\n                }\\n                if (self.options.ignoreErrors) {\\n                  \u002F\u002F Error(s) in the ExtGState -- allow text-extraction to\\n                  \u002F\u002F continue.\\n                  warn(`getTextContent - ignoring ExtGState: \\\"${reason}\\\".`);\\n                  return;\\n                }\\n                throw reason;\\n              })\\n            );\\n            return;\\n          case OPS.beginMarkedContent:\\n            flushTextContentItem();\\n            if (includeMarkedContent) {\\n              markedContentData.level++;\\n\\n              textContent.items.push({\\n                type: \\\"beginMarkedContent\\\",\\n                tag: args[0] instanceof Name ? args[0].name : null,\\n              });\\n            }\\n            break;\\n          case OPS.beginMarkedContentProps:\\n            flushTextContentItem();\\n            if (includeMarkedContent) {\\n              markedContentData.level++;\\n\\n              let mcid = null;\\n              if (args[1] instanceof Dict) {\\n                mcid = args[1].get(\\\"MCID\\\");\\n              }\\n              textContent.items.push({\\n                type: \\\"beginMarkedContentProps\\\",\\n                id: Number.isInteger(mcid)\\n                  ? `${self.idFactory.getPageObjId()}_mc${mcid}`\\n                  : null,\\n                tag: args[0] instanceof Name ? args[0].name : null,\\n              });\\n            }\\n            break;\\n          case OPS.endMarkedContent:\\n            flushTextContentItem();\\n            if (includeMarkedContent) {\\n              if (markedContentData.level === 0) {\\n                \u002F\u002F Handle unbalanced beginMarkedContent\u002FendMarkedContent\\n                \u002F\u002F operators (fixes issue15629.pdf).\\n                break;\\n              }\\n              markedContentData.level--;\\n\\n              textContent.items.push({\\n                type: \\\"endMarkedContent\\\",\\n              });\\n            }\\n            break;\\n          case OPS.restore:\\n            if (\\n              previousState &&\\n              (previousState.font !== textState.font ||\\n                previousState.fontSize !== textState.fontSize ||\\n                previousState.fontName !== textState.fontName)\\n            ) {\\n              flushTextContentItem();\\n            }\\n            break;\\n        } \u002F\u002F switch\\n        if (textContent.items.length >= sink.desiredSize) {\\n          \u002F\u002F Wait for ready, if we reach highWaterMark.\\n          stop = true;\\n          break;\\n        }\\n      } \u002F\u002F while\\n      if (stop) {\\n        next(deferred);\\n        return;\\n      }\\n      flushTextContentItem();\\n      enqueueChunk();\\n      resolve();\\n    }).catch(reason => {\\n      if (reason instanceof AbortException) {\\n        return;\\n      }\\n      if (this.options.ignoreErrors) {\\n        \u002F\u002F Error(s) in the TextContent -- allow text-extraction to continue.\\n        warn(\\n          `getTextContent - ignoring errors during \\\"${task.name}\\\" ` +\\n            `task: \\\"${reason}\\\".`\\n        );\\n\\n        flushTextContentItem();\\n        enqueueChunk();\\n        return;\\n      }\\n      throw reason;\\n    });\\n  }\\n\\n  async extractDataStructures(dict, properties) {\\n    const xref = this.xref;\\n    let cidToGidBytes;\\n    \u002F\u002F 9.10.2\\n    const toUnicodePromise = this.readToUnicode(properties.toUnicode);\\n\\n    if (properties.composite) {\\n      \u002F\u002F CIDSystemInfo helps to match CID to glyphs\\n      const cidSystemInfo = dict.get(\\\"CIDSystemInfo\\\");\\n      if (cidSystemInfo instanceof Dict) {\\n        properties.cidSystemInfo = {\\n          registry: stringToPDFString(cidSystemInfo.get(\\\"Registry\\\")),\\n          ordering: stringToPDFString(cidSystemInfo.get(\\\"Ordering\\\")),\\n          supplement: cidSystemInfo.get(\\\"Supplement\\\"),\\n        };\\n      }\\n\\n      try {\\n        const cidToGidMap = dict.get(\\\"CIDToGIDMap\\\");\\n        if (cidToGidMap instanceof BaseStream) {\\n          cidToGidBytes = cidToGidMap.getBytes();\\n        }\\n      } catch (ex) {\\n        if (!this.options.ignoreErrors) {\\n          throw ex;\\n        }\\n        warn(`extractDataStructures - ignoring CIDToGIDMap data: \\\"${ex}\\\".`);\\n      }\\n    }\\n\\n    \u002F\u002F Based on 9.6.6 of the spec the encoding can come from multiple places\\n    \u002F\u002F and depends on the font type. The base encoding and differences are\\n    \u002F\u002F read here, but the encoding that is actually used is chosen during\\n    \u002F\u002F glyph mapping in the font.\\n    \u002F\u002F TODO: Loading the built in encoding in the font would allow the\\n    \u002F\u002F differences to be merged in here not require us to hold on to it.\\n    const differences = [];\\n    let baseEncodingName = null;\\n    let encoding;\\n    if (dict.has(\\\"Encoding\\\")) {\\n      encoding = dict.get(\\\"Encoding\\\");\\n      if (encoding instanceof Dict) {\\n        baseEncodingName = encoding.get(\\\"BaseEncoding\\\");\\n        baseEncodingName =\\n          baseEncodingName instanceof Name ? baseEncodingName.name : null;\\n        \u002F\u002F Load the differences between the base and original\\n        if (encoding.has(\\\"Differences\\\")) {\\n          const diffEncoding = encoding.get(\\\"Differences\\\");\\n          let index = 0;\\n          for (const entry of diffEncoding) {\\n            const data = xref.fetchIfRef(entry);\\n            if (typeof data === \\\"number\\\") {\\n              index = data;\\n            } else if (data instanceof Name) {\\n              differences[index++] = data.name;\\n            } else {\\n              throw new FormatError(\\n                `Invalid entry in 'Differences' array: ${data}`\\n              );\\n            }\\n          }\\n        }\\n      } else if (encoding instanceof Name) {\\n        baseEncodingName = encoding.name;\\n      } else {\\n        const msg = \\\"Encoding is not a Name nor a Dict\\\";\\n\\n        if (!this.options.ignoreErrors) {\\n          throw new FormatError(msg);\\n        }\\n        warn(msg);\\n      }\\n      \u002F\u002F According to table 114 if the encoding is a named encoding it must be\\n      \u002F\u002F one of these predefined encodings.\\n      if (\\n        baseEncodingName !== \\\"MacRomanEncoding\\\" &&\\n        baseEncodingName !== \\\"MacExpertEncoding\\\" &&\\n        baseEncodingName !== \\\"WinAnsiEncoding\\\"\\n      ) {\\n        baseEncodingName = null;\\n      }\\n    }\\n\\n    const nonEmbeddedFont = !properties.file || properties.isInternalFont,\\n      isSymbolsFontName = getSymbolsFonts()[properties.name];\\n    \u002F\u002F Ignore an incorrectly specified named encoding for non-embedded\\n    \u002F\u002F symbol fonts (fixes issue16464.pdf).\\n    if (baseEncodingName && nonEmbeddedFont && isSymbolsFontName) {\\n      baseEncodingName = null;\\n    }\\n\\n    if (baseEncodingName) {\\n      properties.defaultEncoding = getEncoding(baseEncodingName);\\n    } else {\\n      const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\\n      const isNonsymbolicFont = !!(properties.flags & FontFlags.Nonsymbolic);\\n      \u002F\u002F According to \\\"Table 114\\\" in section \\\"9.6.6.1 General\\\" (under\\n      \u002F\u002F \\\"9.6.6 Character Encoding\\\") of the PDF specification, a Nonsymbolic\\n      \u002F\u002F font should use the `StandardEncoding` if no encoding is specified.\\n      encoding = StandardEncoding;\\n      if (properties.type === \\\"TrueType\\\" && !isNonsymbolicFont) {\\n        encoding = WinAnsiEncoding;\\n      }\\n      \u002F\u002F The Symbolic attribute can be misused for regular fonts\\n      \u002F\u002F Heuristic: we have to check if the font is a standard one also\\n      if (isSymbolicFont || isSymbolsFontName) {\\n        encoding = MacRomanEncoding;\\n        if (nonEmbeddedFont) {\\n          if (\u002FSymbol\u002Fi.test(properties.name)) {\\n            encoding = SymbolSetEncoding;\\n          } else if (\u002FDingbats\u002Fi.test(properties.name)) {\\n            encoding = ZapfDingbatsEncoding;\\n          } else if (\u002FWingdings\u002Fi.test(properties.name)) {\\n            encoding = WinAnsiEncoding;\\n          }\\n        }\\n      }\\n      properties.defaultEncoding = encoding;\\n    }\\n\\n    properties.differences = differences;\\n    properties.baseEncodingName = baseEncodingName;\\n    properties.hasEncoding = !!baseEncodingName || differences.length > 0;\\n    properties.dict = dict;\\n\\n    properties.toUnicode = await toUnicodePromise;\\n\\n    const builtToUnicode = await this.buildToUnicode(properties);\\n    properties.toUnicode = builtToUnicode;\\n\\n    if (cidToGidBytes) {\\n      properties.cidToGidMap = this.readCidToGidMap(\\n        cidToGidBytes,\\n        builtToUnicode\\n      );\\n    }\\n    return properties;\\n  }\\n\\n  \u002F**\\n   * @returns {Array}\\n   * @private\\n   *\u002F\\n  _simpleFontToUnicode(properties, forceGlyphs = false) {\\n    assert(!properties.composite, \\\"Must be a simple font.\\\");\\n\\n    const toUnicode = [];\\n    const encoding = properties.defaultEncoding.slice();\\n    const baseEncodingName = properties.baseEncodingName;\\n    \u002F\u002F Merge in the differences array.\\n    const differences = properties.differences;\\n    for (const charcode in differences) {\\n      const glyphName = differences[charcode];\\n      if (glyphName === \\\".notdef\\\") {\\n        \u002F\u002F Skip .notdef to prevent rendering errors, e.g. boxes appearing\\n        \u002F\u002F where there should be spaces (fixes issue5256.pdf).\\n        continue;\\n      }\\n      encoding[charcode] = glyphName;\\n    }\\n    const glyphsUnicodeMap = getGlyphsUnicode();\\n    for (const charcode in encoding) {\\n      \u002F\u002F a) Map the character code to a character name.\\n      let glyphName = encoding[charcode];\\n      if (glyphName === \\\"\\\") {\\n        continue;\\n      }\\n      \u002F\u002F b) Look up the character name in the Adobe Glyph List (see the\\n      \u002F\u002F    Bibliography) to obtain the corresponding Unicode value.\\n      let unicode = glyphsUnicodeMap[glyphName];\\n      if (unicode !== undefined) {\\n        toUnicode[charcode] = String.fromCharCode(unicode);\\n        continue;\\n      }\\n      \u002F\u002F (undocumented) c) Few heuristics to recognize unknown glyphs\\n      \u002F\u002F NOTE: Adobe Reader does not do this step, but OSX Preview does\\n      let code = 0;\\n      switch (glyphName[0]) {\\n        case \\\"G\\\": \u002F\u002F Gxx glyph\\n          if (glyphName.length === 3) {\\n            code = parseInt(glyphName.substring(1), 16);\\n          }\\n          break;\\n        case \\\"g\\\": \u002F\u002F g00xx glyph\\n          if (glyphName.length === 5) {\\n            code = parseInt(glyphName.substring(1), 16);\\n          }\\n          break;\\n        case \\\"C\\\": \u002F\u002F Cdd{d} glyph\\n        case \\\"c\\\": \u002F\u002F cdd{d} glyph\\n          if (glyphName.length >= 3 && glyphName.length \u003C= 4) {\\n            const codeStr = glyphName.substring(1);\\n\\n            if (forceGlyphs) {\\n              code = parseInt(codeStr, 16);\\n              break;\\n            }\\n            \u002F\u002F Normally the Cdd{d}\u002Fcdd{d} glyphName format will contain\\n            \u002F\u002F regular, i.e. base 10, charCodes (see issue4550.pdf)...\\n            code = +codeStr;\\n\\n            \u002F\u002F ... however some PDF generators violate that assumption by\\n            \u002F\u002F containing glyph, i.e. base 16, codes instead.\\n            \u002F\u002F In that case we need to re-parse the *entire* encoding to\\n            \u002F\u002F prevent broken text-selection (fixes issue9655_reduced.pdf).\\n            if (Number.isNaN(code) && Number.isInteger(parseInt(codeStr, 16))) {\\n              return this._simpleFontToUnicode(\\n                properties,\\n                \u002F* forceGlyphs *\u002F true\\n              );\\n            }\\n          }\\n          break;\\n        case \\\"u\\\": \u002F\u002F 'uniXXXX'\u002F'uXXXX{XX}' glyphs\\n          unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\\n          if (unicode !== -1) {\\n            code = unicode;\\n          }\\n          break;\\n        default:\\n          \u002F\u002F Support (some) non-standard ligatures.\\n          switch (glyphName) {\\n            case \\\"f_h\\\":\\n            case \\\"f_t\\\":\\n            case \\\"T_h\\\":\\n              toUnicode[charcode] = glyphName.replaceAll(\\\"_\\\", \\\"\\\");\\n              continue;\\n          }\\n          break;\\n      }\\n      if (code > 0 && code \u003C= 0x10ffff && Number.isInteger(code)) {\\n        \u002F\u002F If `baseEncodingName` is one the predefined encodings, and `code`\\n        \u002F\u002F equals `charcode`, using the glyph defined in the baseEncoding\\n        \u002F\u002F seems to yield a better `toUnicode` mapping (fixes issue 5070).\\n        if (baseEncodingName && code === +charcode) {\\n          const baseEncoding = getEncoding(baseEncodingName);\\n          if (baseEncoding && (glyphName = baseEncoding[charcode])) {\\n            toUnicode[charcode] = String.fromCharCode(\\n              glyphsUnicodeMap[glyphName]\\n            );\\n            continue;\\n          }\\n        }\\n        toUnicode[charcode] = String.fromCodePoint(code);\\n      }\\n    }\\n    return toUnicode;\\n  }\\n\\n  \u002F**\\n   * Builds a char code to unicode map based on section 9.10 of the spec.\\n   * @param {Object} properties Font properties object.\\n   * @returns {Promise} A Promise that is resolved with a\\n   *   {ToUnicodeMap|IdentityToUnicodeMap} object.\\n   *\u002F\\n  async buildToUnicode(properties) {\\n    properties.hasIncludedToUnicodeMap = properties.toUnicode?.length > 0;\\n\\n    \u002F\u002F Section 9.10.2 Mapping Character Codes to Unicode Values\\n    if (properties.hasIncludedToUnicodeMap) {\\n      \u002F\u002F Some fonts contain incomplete ToUnicode data, causing issues with\\n      \u002F\u002F text-extraction. For simple fonts, containing encoding information,\\n      \u002F\u002F use a fallback ToUnicode map to improve this (fixes issue8229.pdf).\\n      if (!properties.composite && properties.hasEncoding) {\\n        properties.fallbackToUnicode = this._simpleFontToUnicode(properties);\\n      }\\n      return properties.toUnicode;\\n    }\\n\\n    \u002F\u002F According to the spec if the font is a simple font we should only map\\n    \u002F\u002F to unicode if the base encoding is MacRoman, MacExpert, or WinAnsi or\\n    \u002F\u002F the differences array only contains adobe standard or symbol set names,\\n    \u002F\u002F in pratice it seems better to always try to create a toUnicode map\\n    \u002F\u002F based of the default encoding.\\n    if (!properties.composite \u002F* is simple font *\u002F) {\\n      return new ToUnicodeMap(this._simpleFontToUnicode(properties));\\n    }\\n\\n    \u002F\u002F If the font is a composite font that uses one of the predefined CMaps\\n    \u002F\u002F listed in Table 118 (except Identity–H and Identity–V) or whose\\n    \u002F\u002F descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1, or\\n    \u002F\u002F Adobe-Korea1 character collection:\\n    if (\\n      properties.composite &&\\n      ((properties.cMap.builtInCMap &&\\n        !(properties.cMap instanceof IdentityCMap)) ||\\n        \u002F\u002F The font is supposed to have a CIDSystemInfo dictionary, but some\\n        \u002F\u002F PDFs don't include it (fixes issue 17689), hence the `?'.\\n        (properties.cidSystemInfo?.registry === \\\"Adobe\\\" &&\\n          (properties.cidSystemInfo.ordering === \\\"GB1\\\" ||\\n            properties.cidSystemInfo.ordering === \\\"CNS1\\\" ||\\n            properties.cidSystemInfo.ordering === \\\"Japan1\\\" ||\\n            properties.cidSystemInfo.ordering === \\\"Korea1\\\")))\\n    ) {\\n      \u002F\u002F Then:\\n      \u002F\u002F a) Map the character code to a character identifier (CID) according\\n      \u002F\u002F to the font’s CMap.\\n      \u002F\u002F b) Obtain the registry and ordering of the character collection used\\n      \u002F\u002F by the font’s CMap (for example, Adobe and Japan1) from its\\n      \u002F\u002F CIDSystemInfo dictionary.\\n      const { registry, ordering } = properties.cidSystemInfo;\\n      \u002F\u002F c) Construct a second CMap name by concatenating the registry and\\n      \u002F\u002F ordering obtained in step (b) in the format registry–ordering–UCS2\\n      \u002F\u002F (for example, Adobe–Japan1–UCS2).\\n      const ucs2CMapName = Name.get(`${registry}-${ordering}-UCS2`);\\n      \u002F\u002F d) Obtain the CMap with the name constructed in step (c) (available\\n      \u002F\u002F from the ASN Web site; see the Bibliography).\\n      const ucs2CMap = await CMapFactory.create({\\n        encoding: ucs2CMapName,\\n        fetchBuiltInCMap: this._fetchBuiltInCMapBound,\\n        useCMap: null,\\n      });\\n      const toUnicode = [],\\n        buf = [];\\n      properties.cMap.forEach(function (charcode, cid) {\\n        if (cid > 0xffff) {\\n          throw new FormatError(\\\"Max size of CID is 65,535\\\");\\n        }\\n        \u002F\u002F e) Map the CID obtained in step (a) according to the CMap\\n        \u002F\u002F obtained in step (d), producing a Unicode value.\\n        const ucs2 = ucs2CMap.lookup(cid);\\n        if (ucs2) {\\n          buf.length = 0;\\n          \u002F\u002F Support multi-byte entries (fixes issue16176.pdf).\\n          for (let i = 0, ii = ucs2.length; i \u003C ii; i += 2) {\\n            buf.push((ucs2.charCodeAt(i) \u003C\u003C 8) + ucs2.charCodeAt(i + 1));\\n          }\\n          toUnicode[charcode] = String.fromCharCode(...buf);\\n        }\\n      });\\n      return new ToUnicodeMap(toUnicode);\\n    }\\n\\n    \u002F\u002F The viewer's choice, just use an identity map.\\n    return new IdentityToUnicodeMap(properties.firstChar, properties.lastChar);\\n  }\\n\\n  async readToUnicode(cmapObj) {\\n    if (!cmapObj) {\\n      return null;\\n    }\\n    if (cmapObj instanceof Name) {\\n      const cmap = await CMapFactory.create({\\n        encoding: cmapObj,\\n        fetchBuiltInCMap: this._fetchBuiltInCMapBound,\\n        useCMap: null,\\n      });\\n\\n      if (cmap instanceof IdentityCMap) {\\n        return new IdentityToUnicodeMap(0, 0xffff);\\n      }\\n      return new ToUnicodeMap(cmap.getMap());\\n    }\\n    if (cmapObj instanceof BaseStream) {\\n      try {\\n        const cmap = await CMapFactory.create({\\n          encoding: cmapObj,\\n          fetchBuiltInCMap: this._fetchBuiltInCMapBound,\\n          useCMap: null,\\n        });\\n\\n        if (cmap instanceof IdentityCMap) {\\n          return new IdentityToUnicodeMap(0, 0xffff);\\n        }\\n        const map = new Array(cmap.length);\\n        \u002F\u002F Convert UTF-16BE\\n        \u002F\u002F NOTE: cmap can be a sparse array, so use forEach instead of\\n        \u002F\u002F `for(;;)` to iterate over all keys.\\n        cmap.forEach(function (charCode, token) {\\n          \u002F\u002F Some cmaps contain *only* CID characters (fixes issue9367.pdf).\\n          if (typeof token === \\\"number\\\") {\\n            map[charCode] = String.fromCodePoint(token);\\n            return;\\n          }\\n          \u002F\u002F Add back omitted leading zeros on odd length tokens\\n          \u002F\u002F (fixes issue #18099)\\n          if (token.length % 2 !== 0) {\\n            token = \\\"\\\\u0000\\\" + token;\\n          }\\n          const str = [];\\n          for (let k = 0; k \u003C token.length; k += 2) {\\n            const w1 = (token.charCodeAt(k) \u003C\u003C 8) | token.charCodeAt(k + 1);\\n            if ((w1 & 0xf800) !== 0xd800) {\\n              \u002F\u002F w1 \u003C 0xD800 || w1 > 0xDFFF\\n              str.push(w1);\\n              continue;\\n            }\\n            k += 2;\\n            const w2 = (token.charCodeAt(k) \u003C\u003C 8) | token.charCodeAt(k + 1);\\n            str.push(((w1 & 0x3ff) \u003C\u003C 10) + (w2 & 0x3ff) + 0x10000);\\n          }\\n          map[charCode] = String.fromCodePoint(...str);\\n        });\\n        return new ToUnicodeMap(map);\\n      } catch (reason) {\\n        if (reason instanceof AbortException) {\\n          return null;\\n        }\\n        if (this.options.ignoreErrors) {\\n          warn(`readToUnicode - ignoring ToUnicode data: \\\"${reason}\\\".`);\\n          return null;\\n        }\\n        throw reason;\\n      }\\n    }\\n    return null;\\n  }\\n\\n  readCidToGidMap(glyphsData, toUnicode) {\\n    \u002F\u002F Extract the encoding from the CIDToGIDMap\\n\\n    \u002F\u002F Set encoding 0 to later verify the font has an encoding\\n    const result = [];\\n    for (let j = 0, jj = glyphsData.length; j \u003C jj; j++) {\\n      const glyphID = (glyphsData[j++] \u003C\u003C 8) | glyphsData[j];\\n      const code = j >> 1;\\n      if (glyphID === 0 && !toUnicode.has(code)) {\\n        continue;\\n      }\\n      result[code] = glyphID;\\n    }\\n    return result;\\n  }\\n\\n  extractWidths(dict, descriptor, properties) {\\n    const xref = this.xref;\\n    let glyphsWidths = [];\\n    let defaultWidth = 0;\\n    const glyphsVMetrics = [];\\n    let defaultVMetrics;\\n    if (properties.composite) {\\n      const dw = dict.get(\\\"DW\\\");\\n      defaultWidth = typeof dw === \\\"number\\\" ? Math.ceil(dw) : 1000;\\n\\n      const widths = dict.get(\\\"W\\\");\\n      if (Array.isArray(widths)) {\\n        for (let i = 0, ii = widths.length; i \u003C ii; i++) {\\n          let start = xref.fetchIfRef(widths[i++]);\\n          if (!Number.isInteger(start)) {\\n            break; \u002F\u002F Invalid \u002FW data.\\n          }\\n          const code = xref.fetchIfRef(widths[i]);\\n\\n          if (Array.isArray(code)) {\\n            for (const c of code) {\\n              const width = xref.fetchIfRef(c);\\n              if (typeof width === \\\"number\\\") {\\n                glyphsWidths[start] = width;\\n              }\\n              start++;\\n            }\\n          } else if (Number.isInteger(code)) {\\n            const width = xref.fetchIfRef(widths[++i]);\\n            if (typeof width !== \\\"number\\\") {\\n              continue;\\n            }\\n            for (let j = start; j \u003C= code; j++) {\\n              glyphsWidths[j] = width;\\n            }\\n          } else {\\n            break; \u002F\u002F Invalid \u002FW data.\\n          }\\n        }\\n      }\\n\\n      if (properties.vertical) {\\n        const dw2 = dict.getArray(\\\"DW2\\\");\\n        let vmetrics = isNumberArray(dw2, 2) ? dw2 : [880, -1000];\\n        defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];\\n        vmetrics = dict.get(\\\"W2\\\");\\n        if (Array.isArray(vmetrics)) {\\n          for (let i = 0, ii = vmetrics.length; i \u003C ii; i++) {\\n            let start = xref.fetchIfRef(vmetrics[i++]);\\n            if (!Number.isInteger(start)) {\\n              break; \u002F\u002F Invalid \u002FW2 data.\\n            }\\n            const code = xref.fetchIfRef(vmetrics[i]);\\n\\n            if (Array.isArray(code)) {\\n              for (let j = 0, jj = code.length; j \u003C jj; j++) {\\n                const vmetric = [\\n                  xref.fetchIfRef(code[j++]),\\n                  xref.fetchIfRef(code[j++]),\\n                  xref.fetchIfRef(code[j]),\\n                ];\\n                if (isNumberArray(vmetric, null)) {\\n                  glyphsVMetrics[start] = vmetric;\\n                }\\n                start++;\\n              }\\n            } else if (Number.isInteger(code)) {\\n              const vmetric = [\\n                xref.fetchIfRef(vmetrics[++i]),\\n                xref.fetchIfRef(vmetrics[++i]),\\n                xref.fetchIfRef(vmetrics[++i]),\\n              ];\\n              if (!isNumberArray(vmetric, null)) {\\n                continue;\\n              }\\n              for (let j = start; j \u003C= code; j++) {\\n                glyphsVMetrics[j] = vmetric;\\n              }\\n            } else {\\n              break; \u002F\u002F Invalid \u002FW2 data.\\n            }\\n          }\\n        }\\n      }\\n    } else {\\n      const widths = dict.get(\\\"Widths\\\");\\n      if (Array.isArray(widths)) {\\n        let j = properties.firstChar;\\n        for (const w of widths) {\\n          const width = xref.fetchIfRef(w);\\n          if (typeof width === \\\"number\\\") {\\n            glyphsWidths[j] = width;\\n          }\\n          j++;\\n        }\\n        const missingWidth = descriptor.get(\\\"MissingWidth\\\");\\n        defaultWidth = typeof missingWidth === \\\"number\\\" ? missingWidth : 0;\\n      } else {\\n        \u002F\u002F Trying get the BaseFont metrics (see comment above).\\n        const baseFontName = dict.get(\\\"BaseFont\\\");\\n        if (baseFontName instanceof Name) {\\n          const metrics = this.getBaseFontMetrics(baseFontName.name);\\n\\n          glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties);\\n          defaultWidth = metrics.defaultWidth;\\n        }\\n      }\\n    }\\n\\n    \u002F\u002F Heuristic: detection of monospace font by checking all non-zero widths\\n    let isMonospace = true;\\n    let firstWidth = defaultWidth;\\n    for (const glyph in glyphsWidths) {\\n      const glyphWidth = glyphsWidths[glyph];\\n      if (!glyphWidth) {\\n        continue;\\n      }\\n      if (!firstWidth) {\\n        firstWidth = glyphWidth;\\n        continue;\\n      }\\n      if (firstWidth !== glyphWidth) {\\n        isMonospace = false;\\n        break;\\n      }\\n    }\\n    if (isMonospace) {\\n      properties.flags |= FontFlags.FixedPitch;\\n    } else {\\n      \u002F\u002F Clear the flag.\\n      properties.flags &= ~FontFlags.FixedPitch;\\n    }\\n\\n    properties.defaultWidth = defaultWidth;\\n    properties.widths = glyphsWidths;\\n    properties.defaultVMetrics = defaultVMetrics;\\n    properties.vmetrics = glyphsVMetrics;\\n  }\\n\\n  isSerifFont(baseFontName) {\\n    \u002F\u002F Simulating descriptor flags attribute\\n    const fontNameWoStyle = baseFontName.split(\\\"-\\\", 1)[0];\\n    return (\\n      fontNameWoStyle in getSerifFonts() || \u002Fserif\u002Fgi.test(fontNameWoStyle)\\n    );\\n  }\\n\\n  getBaseFontMetrics(name) {\\n    let defaultWidth = 0;\\n    let widths = Object.create(null);\\n    let monospace = false;\\n    const stdFontMap = getStdFontMap();\\n    let lookupName = stdFontMap[name] || name;\\n    const Metrics = getMetrics();\\n\\n    if (!(lookupName in Metrics)) {\\n      \u002F\u002F Use default fonts for looking up font metrics if the passed\\n      \u002F\u002F font is not a base font\\n      lookupName = this.isSerifFont(name) ? \\\"Times-Roman\\\" : \\\"Helvetica\\\";\\n    }\\n    const glyphWidths = Metrics[lookupName];\\n\\n    if (typeof glyphWidths === \\\"number\\\") {\\n      defaultWidth = glyphWidths;\\n      monospace = true;\\n    } else {\\n      widths = glyphWidths(); \u002F\u002F expand lazy widths array\\n    }\\n\\n    return {\\n      defaultWidth,\\n      monospace,\\n      widths,\\n    };\\n  }\\n\\n  buildCharCodeToWidth(widthsByGlyphName, properties) {\\n    const widths = Object.create(null);\\n    const differences = properties.differences;\\n    const encoding = properties.defaultEncoding;\\n    for (let charCode = 0; charCode \u003C 256; charCode++) {\\n      if (charCode in differences && widthsByGlyphName[differences[charCode]]) {\\n        widths[charCode] = widthsByGlyphName[differences[charCode]];\\n        continue;\\n      }\\n      if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {\\n        widths[charCode] = widthsByGlyphName[encoding[charCode]];\\n        continue;\\n      }\\n    }\\n    return widths;\\n  }\\n\\n  preEvaluateFont(dict) {\\n    const baseDict = dict;\\n    let type = dict.get(\\\"Subtype\\\");\\n    if (!(type instanceof Name)) {\\n      throw new FormatError(\\\"invalid font Subtype\\\");\\n    }\\n\\n    let composite = false;\\n    let hash;\\n    if (type.name === \\\"Type0\\\") {\\n      \u002F\u002F If font is a composite\\n      \u002F\u002F  - get the descendant font\\n      \u002F\u002F  - set the type according to the descendant font\\n      \u002F\u002F  - get the FontDescriptor from the descendant font\\n      const df = dict.get(\\\"DescendantFonts\\\");\\n      if (!df) {\\n        throw new FormatError(\\\"Descendant fonts are not specified\\\");\\n      }\\n      dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;\\n\\n      if (!(dict instanceof Dict)) {\\n        throw new FormatError(\\\"Descendant font is not a dictionary.\\\");\\n      }\\n      type = dict.get(\\\"Subtype\\\");\\n      if (!(type instanceof Name)) {\\n        throw new FormatError(\\\"invalid font Subtype\\\");\\n      }\\n      composite = true;\\n    }\\n\\n    let firstChar = dict.get(\\\"FirstChar\\\");\\n    if (!Number.isInteger(firstChar)) {\\n      firstChar = 0;\\n    }\\n    let lastChar = dict.get(\\\"LastChar\\\");\\n    if (!Number.isInteger(lastChar)) {\\n      lastChar = composite ? 0xffff : 0xff;\\n    }\\n    const descriptor = dict.get(\\\"FontDescriptor\\\");\\n    const toUnicode = dict.get(\\\"ToUnicode\\\") || baseDict.get(\\\"ToUnicode\\\");\\n\\n    if (descriptor) {\\n      hash = new MurmurHash3_64();\\n\\n      const encoding = baseDict.getRaw(\\\"Encoding\\\");\\n      if (encoding instanceof Name) {\\n        hash.update(encoding.name);\\n      } else if (encoding instanceof Ref) {\\n        hash.update(encoding.toString());\\n      } else if (encoding instanceof Dict) {\\n        for (const entry of encoding.getRawValues()) {\\n          if (entry instanceof Name) {\\n            hash.update(entry.name);\\n          } else if (entry instanceof Ref) {\\n            hash.update(entry.toString());\\n          } else if (Array.isArray(entry)) {\\n            \u002F\u002F 'Differences' array (fixes bug1157493.pdf).\\n            const diffLength = entry.length,\\n              diffBuf = new Array(diffLength);\\n\\n            for (let j = 0; j \u003C diffLength; j++) {\\n              const diffEntry = entry[j];\\n              if (diffEntry instanceof Name) {\\n                diffBuf[j] = diffEntry.name;\\n              } else if (\\n                typeof diffEntry === \\\"number\\\" ||\\n                diffEntry instanceof Ref\\n              ) {\\n                diffBuf[j] = diffEntry.toString();\\n              }\\n            }\\n            hash.update(diffBuf.join());\\n          }\\n        }\\n      }\\n\\n      hash.update(`${firstChar}-${lastChar}`); \u002F\u002F Fixes issue10665_reduced.pdf\\n\\n      if (toUnicode instanceof BaseStream) {\\n        const stream = toUnicode.str || toUnicode;\\n        const uint8array = stream.buffer\\n          ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength)\\n          : new Uint8Array(\\n              stream.bytes.buffer,\\n              stream.start,\\n              stream.end - stream.start\\n            );\\n        hash.update(uint8array);\\n      } else if (toUnicode instanceof Name) {\\n        hash.update(toUnicode.name);\\n      }\\n\\n      const widths = dict.get(\\\"Widths\\\") || baseDict.get(\\\"Widths\\\");\\n      if (Array.isArray(widths)) {\\n        const widthsBuf = [];\\n        for (const entry of widths) {\\n          if (typeof entry === \\\"number\\\" || entry instanceof Ref) {\\n            widthsBuf.push(entry.toString());\\n          }\\n        }\\n        hash.update(widthsBuf.join());\\n      }\\n\\n      if (composite) {\\n        hash.update(\\\"compositeFont\\\");\\n\\n        const compositeWidths = dict.get(\\\"W\\\") || baseDict.get(\\\"W\\\");\\n        if (Array.isArray(compositeWidths)) {\\n          const widthsBuf = [];\\n          for (const entry of compositeWidths) {\\n            if (typeof entry === \\\"number\\\" || entry instanceof Ref) {\\n              widthsBuf.push(entry.toString());\\n            } else if (Array.isArray(entry)) {\\n              const subWidthsBuf = [];\\n              for (const element of entry) {\\n                if (typeof element === \\\"number\\\" || element instanceof Ref) {\\n                  subWidthsBuf.push(element.toString());\\n                }\\n              }\\n              widthsBuf.push(`[${subWidthsBuf.join()}]`);\\n            }\\n          }\\n          hash.update(widthsBuf.join());\\n        }\\n\\n        const cidToGidMap =\\n          dict.getRaw(\\\"CIDToGIDMap\\\") || baseDict.getRaw(\\\"CIDToGIDMap\\\");\\n        if (cidToGidMap instanceof Name) {\\n          hash.update(cidToGidMap.name);\\n        } else if (cidToGidMap instanceof Ref) {\\n          hash.update(cidToGidMap.toString());\\n        } else if (cidToGidMap instanceof BaseStream) {\\n          hash.update(cidToGidMap.peekBytes());\\n        }\\n      }\\n    }\\n\\n    return {\\n      descriptor,\\n      dict,\\n      baseDict,\\n      composite,\\n      type: type.name,\\n      firstChar,\\n      lastChar,\\n      toUnicode,\\n      hash: hash ? hash.hexdigest() : \\\"\\\",\\n    };\\n  }\\n\\n  async translateFont({\\n    descriptor,\\n    dict,\\n    baseDict,\\n    composite,\\n    type,\\n    firstChar,\\n    lastChar,\\n    toUnicode,\\n    cssFontInfo,\\n  }) {\\n    const isType3Font = type === \\\"Type3\\\";\\n\\n    if (!descriptor) {\\n      if (isType3Font) {\\n        \u002F\u002F FontDescriptor is only required for Type3 fonts when the document\\n        \u002F\u002F is a tagged pdf.\\n        descriptor = Dict.empty;\\n      } else {\\n        \u002F\u002F Before PDF 1.5 if the font was one of the base 14 fonts, having a\\n        \u002F\u002F FontDescriptor was not required.\\n        \u002F\u002F This case is here for compatibility.\\n        let baseFontName = dict.get(\\\"BaseFont\\\");\\n        if (!(baseFontName instanceof Name)) {\\n          throw new FormatError(\\\"Base font is not specified\\\");\\n        }\\n\\n        \u002F\u002F Using base font name as a font name.\\n        baseFontName = baseFontName.name.replaceAll(\u002F[,_]\u002Fg, \\\"-\\\");\\n        const metrics = this.getBaseFontMetrics(baseFontName);\\n\\n        \u002F\u002F Simulating descriptor flags attribute\\n        const fontNameWoStyle = baseFontName.split(\\\"-\\\", 1)[0];\\n        const flags =\\n          (this.isSerifFont(fontNameWoStyle) ? FontFlags.Serif : 0) |\\n          (metrics.monospace ? FontFlags.FixedPitch : 0) |\\n          (getSymbolsFonts()[fontNameWoStyle]\\n            ? FontFlags.Symbolic\\n            : FontFlags.Nonsymbolic);\\n\\n        const properties = {\\n          type,\\n          name: baseFontName,\\n          loadedName: baseDict.loadedName,\\n          systemFontInfo: null,\\n          widths: metrics.widths,\\n          defaultWidth: metrics.defaultWidth,\\n          isSimulatedFlags: true,\\n          flags,\\n          firstChar,\\n          lastChar,\\n          toUnicode,\\n          xHeight: 0,\\n          capHeight: 0,\\n          italicAngle: 0,\\n          isType3Font,\\n        };\\n        const widths = dict.get(\\\"Widths\\\");\\n\\n        const standardFontName = getStandardFontName(baseFontName);\\n        let file = null;\\n        if (standardFontName) {\\n          file = await this.fetchStandardFontData(standardFontName);\\n          properties.isInternalFont = !!file;\\n        }\\n        if (!properties.isInternalFont && this.options.useSystemFonts) {\\n          properties.systemFontInfo = getFontSubstitution(\\n            this.systemFontCache,\\n            this.idFactory,\\n            this.options.standardFontDataUrl,\\n            baseFontName,\\n            standardFontName,\\n            type\\n          );\\n        }\\n\\n        const newProperties = await this.extractDataStructures(\\n          dict,\\n          properties\\n        );\\n        if (Array.isArray(widths)) {\\n          const glyphWidths = [];\\n          let j = firstChar;\\n          for (const w of widths) {\\n            const width = this.xref.fetchIfRef(w);\\n            if (typeof width === \\\"number\\\") {\\n              glyphWidths[j] = width;\\n            }\\n            j++;\\n          }\\n          newProperties.widths = glyphWidths;\\n        } else {\\n          newProperties.widths = this.buildCharCodeToWidth(\\n            metrics.widths,\\n            newProperties\\n          );\\n        }\\n        return new Font(baseFontName, file, newProperties, this.options);\\n      }\\n    }\\n\\n    \u002F\u002F According to the spec if 'FontDescriptor' is declared, 'FirstChar',\\n    \u002F\u002F 'LastChar' and 'Widths' should exist too, but some PDF encoders seem\\n    \u002F\u002F to ignore this rule when a variant of a standard font is used.\\n    \u002F\u002F TODO Fill the width array depending on which of the base font this is\\n    \u002F\u002F a variant.\\n\\n    let fontName = descriptor.get(\\\"FontName\\\");\\n    let baseFont = dict.get(\\\"BaseFont\\\");\\n    \u002F\u002F Some bad PDFs have a string as the font name.\\n    if (typeof fontName === \\\"string\\\") {\\n      fontName = Name.get(fontName);\\n    }\\n    if (typeof baseFont === \\\"string\\\") {\\n      baseFont = Name.get(baseFont);\\n    }\\n\\n    const fontNameStr = fontName?.name;\\n    const baseFontStr = baseFont?.name;\\n    if (isType3Font) {\\n      if (!fontNameStr) {\\n        \u002F\u002F Since the \u002FFontDescriptor is optional in Type3 fonts, ensure that we\\n        \u002F\u002F always have a \\\"valid\\\" \u002FFontName (fixes issue19954.pdf).\\n        fontName = Name.get(type);\\n      }\\n    } else if (fontNameStr !== baseFontStr) {\\n      info(\\n        `The FontDescriptor's FontName is \\\"${fontNameStr}\\\" but ` +\\n          `should be the same as the Font's BaseFont \\\"${baseFontStr}\\\".`\\n      );\\n      \u002F\u002F - Workaround for cases where e.g. fontNameStr = 'Arial' and\\n      \u002F\u002F   baseFontStr = 'Arial,Bold' (needed when no font file is embedded).\\n      \u002F\u002F\\n      \u002F\u002F - Workaround for cases where e.g. fontNameStr = 'wg09np' and\\n      \u002F\u002F   baseFontStr = 'Wingdings-Regular' (fixes issue7454.pdf).\\n      if (\\n        fontNameStr &&\\n        baseFontStr &&\\n        (baseFontStr.startsWith(fontNameStr) ||\\n          (!isKnownFontName(fontNameStr) && isKnownFontName(baseFontStr)))\\n      ) {\\n        fontName = null;\\n      }\\n      fontName ||= baseFont;\\n    }\\n\\n    if (!(fontName instanceof Name)) {\\n      throw new FormatError(\\\"invalid font name\\\");\\n    }\\n\\n    let fontFile, subtype, length1, length2, length3;\\n    try {\\n      fontFile = descriptor.get(\\\"FontFile\\\", \\\"FontFile2\\\", \\\"FontFile3\\\");\\n\\n      if (fontFile) {\\n        if (!(fontFile instanceof BaseStream)) {\\n          throw new FormatError(\\\"FontFile should be a stream\\\");\\n        } else if (fontFile.isEmpty) {\\n          throw new FormatError(\\\"FontFile is empty\\\");\\n        }\\n      }\\n    } catch (ex) {\\n      if (!this.options.ignoreErrors) {\\n        throw ex;\\n      }\\n      warn(`translateFont - fetching \\\"${fontName.name}\\\" font file: \\\"${ex}\\\".`);\\n      fontFile = null;\\n    }\\n    let isInternalFont = false;\\n    let glyphScaleFactors = null;\\n    let systemFontInfo = null;\\n    if (fontFile) {\\n      if (fontFile.dict) {\\n        const subtypeEntry = fontFile.dict.get(\\\"Subtype\\\");\\n        if (subtypeEntry instanceof Name) {\\n          subtype = subtypeEntry.name;\\n        }\\n        length1 = fontFile.dict.get(\\\"Length1\\\");\\n        length2 = fontFile.dict.get(\\\"Length2\\\");\\n        length3 = fontFile.dict.get(\\\"Length3\\\");\\n      }\\n    } else if (cssFontInfo) {\\n      \u002F\u002F We've a missing XFA font.\\n      const standardFontName = getXfaFontName(fontName.name);\\n      if (standardFontName) {\\n        cssFontInfo.fontFamily = `${cssFontInfo.fontFamily}-PdfJS-XFA`;\\n        cssFontInfo.metrics = standardFontName.metrics || null;\\n        glyphScaleFactors = standardFontName.factors || null;\\n        fontFile = await this.fetchStandardFontData(standardFontName.name);\\n        isInternalFont = !!fontFile;\\n\\n        \u002F\u002F We're using a substitution font but for example widths (if any)\\n        \u002F\u002F are related to the glyph positions in the font.\\n        \u002F\u002F So we overwrite everything here to be sure that widths are\\n        \u002F\u002F correct.\\n        baseDict = dict = getXfaFontDict(fontName.name);\\n        composite = true;\\n      }\\n    } else if (!isType3Font) {\\n      const standardFontName = getStandardFontName(fontName.name);\\n      if (standardFontName) {\\n        fontFile = await this.fetchStandardFontData(standardFontName);\\n        isInternalFont = !!fontFile;\\n      }\\n      if (!isInternalFont && this.options.useSystemFonts) {\\n        systemFontInfo = getFontSubstitution(\\n          this.systemFontCache,\\n          this.idFactory,\\n          this.options.standardFontDataUrl,\\n          fontName.name,\\n          standardFontName,\\n          type\\n        );\\n      }\\n    }\\n\\n    const fontMatrix = lookupMatrix(\\n      dict.getArray(\\\"FontMatrix\\\"),\\n      FONT_IDENTITY_MATRIX\\n    );\\n    const bbox = lookupNormalRect(\\n      descriptor.getArray(\\\"FontBBox\\\") || dict.getArray(\\\"FontBBox\\\"),\\n      isType3Font ? [0, 0, 0, 0] : undefined\\n    );\\n    let ascent = descriptor.get(\\\"Ascent\\\");\\n    if (typeof ascent !== \\\"number\\\") {\\n      ascent = undefined;\\n    }\\n    let descent = descriptor.get(\\\"Descent\\\");\\n    if (typeof descent !== \\\"number\\\") {\\n      descent = undefined;\\n    }\\n    let xHeight = descriptor.get(\\\"XHeight\\\");\\n    if (typeof xHeight !== \\\"number\\\") {\\n      xHeight = 0;\\n    }\\n    let capHeight = descriptor.get(\\\"CapHeight\\\");\\n    if (typeof capHeight !== \\\"number\\\") {\\n      capHeight = 0;\\n    }\\n    let flags = descriptor.get(\\\"Flags\\\");\\n    if (!Number.isInteger(flags)) {\\n      flags = 0;\\n    }\\n    let italicAngle = descriptor.get(\\\"ItalicAngle\\\");\\n    if (typeof italicAngle !== \\\"number\\\") {\\n      italicAngle = 0;\\n    }\\n\\n    const properties = {\\n      type,\\n      name: fontName.name,\\n      subtype,\\n      file: fontFile,\\n      length1,\\n      length2,\\n      length3,\\n      isInternalFont,\\n      loadedName: baseDict.loadedName,\\n      composite,\\n      fixedPitch: false,\\n      fontMatrix,\\n      firstChar,\\n      lastChar,\\n      toUnicode,\\n      bbox,\\n      ascent,\\n      descent,\\n      xHeight,\\n      capHeight,\\n      flags,\\n      italicAngle,\\n      isType3Font,\\n      cssFontInfo,\\n      scaleFactors: glyphScaleFactors,\\n      systemFontInfo,\\n    };\\n\\n    if (composite) {\\n      const cidEncoding = baseDict.get(\\\"Encoding\\\");\\n      if (cidEncoding instanceof Name) {\\n        properties.cidEncoding = cidEncoding.name;\\n      }\\n      const cMap = await CMapFactory.create({\\n        encoding: cidEncoding,\\n        fetchBuiltInCMap: this._fetchBuiltInCMapBound,\\n        useCMap: null,\\n      });\\n      properties.cMap = cMap;\\n      properties.vertical = properties.cMap.vertical;\\n    }\\n\\n    const newProperties = await this.extractDataStructures(dict, properties);\\n    this.extractWidths(dict, descriptor, newProperties);\\n\\n    return new Font(fontName.name, fontFile, newProperties, this.options);\\n  }\\n\\n  static buildFontPaths(font, glyphs, handler, evaluatorOptions) {\\n    function buildPath(fontChar) {\\n      const glyphName = `${font.loadedName}_path_${fontChar}`;\\n      try {\\n        if (font.renderer.hasBuiltPath(fontChar)) {\\n          return;\\n        }\\n        handler.send(\\\"commonobj\\\", [\\n          glyphName,\\n          \\\"FontPath\\\",\\n          font.renderer.getPathJs(fontChar),\\n        ]);\\n      } catch (reason) {\\n        if (evaluatorOptions.ignoreErrors) {\\n          warn(`buildFontPaths - ignoring ${glyphName} glyph: \\\"${reason}\\\".`);\\n          return;\\n        }\\n        throw reason;\\n      }\\n    }\\n\\n    for (const glyph of glyphs) {\\n      buildPath(glyph.fontChar);\\n\\n      \u002F\u002F If the glyph has an accent we need to build a path for its\\n      \u002F\u002F fontChar too, otherwise CanvasGraphics_paintChar will fail.\\n      const accent = glyph.accent;\\n      if (accent?.fontChar) {\\n        buildPath(accent.fontChar);\\n      }\\n    }\\n  }\\n\\n  static get fallbackFontDict() {\\n    const dict = new Dict();\\n    dict.set(\\\"BaseFont\\\", Name.get(\\\"Helvetica\\\"));\\n    dict.set(\\\"Type\\\", Name.get(\\\"FallbackType\\\"));\\n    dict.set(\\\"Subtype\\\", Name.get(\\\"FallbackType\\\"));\\n    dict.set(\\\"Encoding\\\", Name.get(\\\"WinAnsiEncoding\\\"));\\n\\n    return shadow(this, \\\"fallbackFontDict\\\", dict);\\n  }\\n}\\n\\nclass TranslatedFont {\\n  #sent = false;\\n\\n  #type3Loaded = null;\\n\\n  constructor({ loadedName, font, dict }) {\\n    this.loadedName = loadedName;\\n    this.font = font;\\n    this.dict = dict;\\n    this.type3Dependencies = font.isType3Font ? new Set() : null;\\n  }\\n\\n  send(handler) {\\n    if (this.#sent) {\\n      return;\\n    }\\n    this.#sent = true;\\n\\n    handler.send(\\\"commonobj\\\", [\\n      this.loadedName,\\n      \\\"Font\\\",\\n      this.font.exportData(),\\n    ]);\\n  }\\n\\n  fallback(handler, evaluatorOptions) {\\n    if (!this.font.data) {\\n      return;\\n    }\\n    \u002F\u002F When font loading failed, fall back to the built-in font renderer.\\n    this.font.disableFontFace = true;\\n    \u002F\u002F An arbitrary number of text rendering operators could have been\\n    \u002F\u002F encountered between the point in time when the 'Font' message was sent\\n    \u002F\u002F to the main-thread, and the point in time when the 'FontFallback'\\n    \u002F\u002F message was received on the worker-thread.\\n    \u002F\u002F To ensure that all 'FontPath's are available on the main-thread, when\\n    \u002F\u002F font loading failed, attempt to resend *all* previously parsed glyphs.\\n    PartialEvaluator.buildFontPaths(\\n      this.font,\\n      \u002F* glyphs = *\u002F this.font.glyphCacheValues,\\n      handler,\\n      evaluatorOptions\\n    );\\n  }\\n\\n  loadType3Data(evaluator, resources, task) {\\n    if (this.#type3Loaded) {\\n      return this.#type3Loaded;\\n    }\\n    const { font, type3Dependencies } = this;\\n    assert(font.isType3Font, \\\"Must be a Type3 font.\\\");\\n\\n    \u002F\u002F When parsing Type3 glyphs, always ignore them if there are errors.\\n    \u002F\u002F Compared to the parsing of e.g. an entire page, it doesn't really\\n    \u002F\u002F make sense to only be able to render a Type3 glyph partially.\\n    const type3Evaluator = evaluator.clone({ ignoreErrors: false });\\n    \u002F\u002F Prevent circular references in Type3 fonts.\\n    const type3FontRefs = new RefSet(evaluator.type3FontRefs);\\n    if (this.dict.objId && !type3FontRefs.has(this.dict.objId)) {\\n      type3FontRefs.put(this.dict.objId);\\n    }\\n    type3Evaluator.type3FontRefs = type3FontRefs;\\n\\n    let loadCharProcsPromise = Promise.resolve();\\n    const charProcs = this.dict.get(\\\"CharProcs\\\");\\n    const fontResources = this.dict.get(\\\"Resources\\\") || resources;\\n    const charProcOperatorList = Object.create(null);\\n\\n    const [x0, y0, x1, y1] = font.bbox,\\n      width = x1 - x0,\\n      height = y1 - y0;\\n    const fontBBoxSize = Math.hypot(width, height);\\n\\n    for (const key of charProcs.getKeys()) {\\n      loadCharProcsPromise = loadCharProcsPromise.then(() => {\\n        const glyphStream = charProcs.get(key);\\n        const operatorList = new OperatorList();\\n        return type3Evaluator\\n          .getOperatorList({\\n            stream: glyphStream,\\n            task,\\n            resources: fontResources,\\n            operatorList,\\n          })\\n          .then(() => {\\n            \u002F\u002F According to the PDF specification, section \\\"9.6.5 Type 3 Fonts\\\"\\n            \u002F\u002F and \\\"Table 113\\\":\\n            \u002F\u002F  \\\"A glyph description that begins with the d1 operator should\\n            \u002F\u002F   not execute any operators that set the colour (or other\\n            \u002F\u002F   colour-related parameters) in the graphics state;\\n            \u002F\u002F   any use of such operators shall be ignored.\\\"\\n            switch (operatorList.fnArray[0]) {\\n              case OPS.setCharWidthAndBounds:\\n                this.#removeType3ColorOperators(operatorList, fontBBoxSize);\\n                break;\\n              case OPS.setCharWidth:\\n                if (!fontBBoxSize) {\\n                  this.#guessType3FontBBox(operatorList);\\n                }\\n                break;\\n            }\\n            charProcOperatorList[key] = operatorList.getIR();\\n\\n            for (const dependency of operatorList.dependencies) {\\n              type3Dependencies.add(dependency);\\n            }\\n          })\\n          .catch(function (reason) {\\n            warn(`Type3 font resource \\\"${key}\\\" is not available.`);\\n            const dummyOperatorList = new OperatorList();\\n            charProcOperatorList[key] = dummyOperatorList.getIR();\\n          });\\n      });\\n    }\\n    this.#type3Loaded = loadCharProcsPromise.then(() => {\\n      font.charProcOperatorList = charProcOperatorList;\\n      if (this._bbox) {\\n        font.isCharBBox = true;\\n        font.bbox = this._bbox;\\n      }\\n    });\\n    return this.#type3Loaded;\\n  }\\n\\n  #removeType3ColorOperators(operatorList, fontBBoxSize = NaN) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        operatorList.fnArray[0] === OPS.setCharWidthAndBounds,\\n        \\\"Type3 glyph shall start with the d1 operator.\\\"\\n      );\\n    }\\n    const charBBox = Util.normalizeRect(operatorList.argsArray[0].slice(2)),\\n      width = charBBox[2] - charBBox[0],\\n      height = charBBox[3] - charBBox[1];\\n    const charBBoxSize = Math.hypot(width, height);\\n\\n    if (width === 0 || height === 0) {\\n      \u002F\u002F Skip the d1 operator when its bounds are bogus (fixes issue14953.pdf).\\n      operatorList.fnArray.splice(0, 1);\\n      operatorList.argsArray.splice(0, 1);\\n    } else if (\\n      fontBBoxSize === 0 ||\\n      Math.round(charBBoxSize \u002F fontBBoxSize) >= 10\\n    ) {\\n      \u002F\u002F Override the fontBBox when it's undefined\u002Fempty, or when it's at least\\n      \u002F\u002F (approximately) one order of magnitude smaller than the charBBox\\n      \u002F\u002F (fixes issue14999_reduced.pdf).\\n      this._bbox ??= [Infinity, Infinity, -Infinity, -Infinity];\\n      Util.rectBoundingBox(...charBBox, this._bbox);\\n    }\\n\\n    let i = 0,\\n      ii = operatorList.length;\\n    while (i \u003C ii) {\\n      switch (operatorList.fnArray[i]) {\\n        case OPS.setCharWidthAndBounds:\\n          break; \u002F\u002F Handled above.\\n        case OPS.setStrokeColorSpace:\\n        case OPS.setFillColorSpace:\\n        case OPS.setStrokeColor:\\n        case OPS.setStrokeColorN:\\n        case OPS.setFillColor:\\n        case OPS.setFillColorN:\\n        case OPS.setStrokeGray:\\n        case OPS.setFillGray:\\n        case OPS.setStrokeRGBColor:\\n        case OPS.setFillRGBColor:\\n        case OPS.setStrokeCMYKColor:\\n        case OPS.setFillCMYKColor:\\n        case OPS.shadingFill:\\n        case OPS.setRenderingIntent:\\n          operatorList.fnArray.splice(i, 1);\\n          operatorList.argsArray.splice(i, 1);\\n          ii--;\\n          continue;\\n\\n        case OPS.setGState:\\n          const [gStateObj] = operatorList.argsArray[i];\\n          let j = 0,\\n            jj = gStateObj.length;\\n          while (j \u003C jj) {\\n            const [gStateKey] = gStateObj[j];\\n            switch (gStateKey) {\\n              case \\\"TR\\\":\\n              case \\\"TR2\\\":\\n              case \\\"HT\\\":\\n              case \\\"BG\\\":\\n              case \\\"BG2\\\":\\n              case \\\"UCR\\\":\\n              case \\\"UCR2\\\":\\n                gStateObj.splice(j, 1);\\n                jj--;\\n                continue;\\n            }\\n            j++;\\n          }\\n          break;\\n      }\\n      i++;\\n    }\\n  }\\n\\n  #guessType3FontBBox(operatorList) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        operatorList.fnArray[0] === OPS.setCharWidth,\\n        \\\"Type3 glyph shall start with the d0 operator.\\\"\\n      );\\n    }\\n\\n    let i = 1;\\n    const ii = operatorList.length;\\n    while (i \u003C ii) {\\n      switch (operatorList.fnArray[i]) {\\n        case OPS.constructPath:\\n          const minMax = operatorList.argsArray[i][2];\\n          \u002F\u002F Override the fontBBox when it's undefined\u002Fempty (fixes 19624.pdf).\\n          this._bbox ??= [Infinity, Infinity, -Infinity, -Infinity];\\n          Util.rectBoundingBox(...minMax, this._bbox);\\n          break;\\n      }\\n      i++;\\n    }\\n  }\\n}\\n\\nclass StateManager {\\n  constructor(initialState = new EvalState()) {\\n    this.state = initialState;\\n    this.stateStack = [];\\n  }\\n\\n  save() {\\n    const old = this.state;\\n    this.stateStack.push(this.state);\\n    this.state = old.clone();\\n  }\\n\\n  restore() {\\n    const prev = this.stateStack.pop();\\n    if (prev) {\\n      this.state = prev;\\n    }\\n  }\\n\\n  transform(args) {\\n    this.state.ctm = Util.transform(this.state.ctm, args);\\n  }\\n}\\n\\nclass TextState {\\n  constructor() {\\n    this.ctm = new Float32Array(IDENTITY_MATRIX);\\n    this.fontName = null;\\n    this.fontSize = 0;\\n    this.loadedName = null;\\n    this.font = null;\\n    this.fontMatrix = FONT_IDENTITY_MATRIX;\\n    this.textMatrix = IDENTITY_MATRIX.slice();\\n    this.textLineMatrix = IDENTITY_MATRIX.slice();\\n    this.charSpacing = 0;\\n    this.wordSpacing = 0;\\n    this.leading = 0;\\n    this.textHScale = 1;\\n    this.textRise = 0;\\n  }\\n\\n  setTextMatrix(a, b, c, d, e, f) {\\n    const m = this.textMatrix;\\n    m[0] = a;\\n    m[1] = b;\\n    m[2] = c;\\n    m[3] = d;\\n    m[4] = e;\\n    m[5] = f;\\n  }\\n\\n  setTextLineMatrix(a, b, c, d, e, f) {\\n    const m = this.textLineMatrix;\\n    m[0] = a;\\n    m[1] = b;\\n    m[2] = c;\\n    m[3] = d;\\n    m[4] = e;\\n    m[5] = f;\\n  }\\n\\n  translateTextMatrix(x, y) {\\n    const m = this.textMatrix;\\n    m[4] = m[0] * x + m[2] * y + m[4];\\n    m[5] = m[1] * x + m[3] * y + m[5];\\n  }\\n\\n  translateTextLineMatrix(x, y) {\\n    const m = this.textLineMatrix;\\n    m[4] = m[0] * x + m[2] * y + m[4];\\n    m[5] = m[1] * x + m[3] * y + m[5];\\n  }\\n\\n  carriageReturn() {\\n    this.translateTextLineMatrix(0, -this.leading);\\n    this.textMatrix = this.textLineMatrix.slice();\\n  }\\n\\n  clone() {\\n    const clone = Object.create(this);\\n    clone.textMatrix = this.textMatrix.slice();\\n    clone.textLineMatrix = this.textLineMatrix.slice();\\n    clone.fontMatrix = this.fontMatrix.slice();\\n    return clone;\\n  }\\n}\\n\\nclass EvalState {\\n  constructor() {\\n    this.ctm = new Float32Array(IDENTITY_MATRIX);\\n    this.font = null;\\n    this.textRenderingMode = TextRenderingMode.FILL;\\n    this._fillColorSpace = this._strokeColorSpace = ColorSpaceUtils.gray;\\n    this.patternFillColorSpace = null;\\n    this.patternStrokeColorSpace = null;\\n\\n    \u002F\u002F Path stuff.\\n    this.currentPointX = this.currentPointY = 0;\\n    this.pathMinMax = new Float32Array([\\n      Infinity,\\n      Infinity,\\n      -Infinity,\\n      -Infinity,\\n    ]);\\n    this.pathBuffer = [];\\n  }\\n\\n  get fillColorSpace() {\\n    return this._fillColorSpace;\\n  }\\n\\n  set fillColorSpace(colorSpace) {\\n    this._fillColorSpace = this.patternFillColorSpace = colorSpace;\\n  }\\n\\n  get strokeColorSpace() {\\n    return this._strokeColorSpace;\\n  }\\n\\n  set strokeColorSpace(colorSpace) {\\n    this._strokeColorSpace = this.patternStrokeColorSpace = colorSpace;\\n  }\\n\\n  clone({ newPath = false } = {}) {\\n    const clone = Object.create(this);\\n    if (newPath) {\\n      clone.pathBuffer = [];\\n      clone.pathMinMax = new Float32Array([\\n        Infinity,\\n        Infinity,\\n        -Infinity,\\n        -Infinity,\\n      ]);\\n    }\\n    return clone;\\n  }\\n}\\n\\nclass EvaluatorPreprocessor {\\n  static get opMap() {\\n    \u002F\u002F Specifies properties for each command\\n    \u002F\u002F\\n    \u002F\u002F If variableArgs === true: [0, `numArgs`] expected\\n    \u002F\u002F If variableArgs === false: exactly `numArgs` expected\\n    return shadow(\\n      this,\\n      \\\"opMap\\\",\\n      Object.assign(Object.create(null), {\\n        \u002F\u002F Graphic state\\n        w: { id: OPS.setLineWidth, numArgs: 1, variableArgs: false },\\n        J: { id: OPS.setLineCap, numArgs: 1, variableArgs: false },\\n        j: { id: OPS.setLineJoin, numArgs: 1, variableArgs: false },\\n        M: { id: OPS.setMiterLimit, numArgs: 1, variableArgs: false },\\n        d: { id: OPS.setDash, numArgs: 2, variableArgs: false },\\n        ri: { id: OPS.setRenderingIntent, numArgs: 1, variableArgs: false },\\n        i: { id: OPS.setFlatness, numArgs: 1, variableArgs: false },\\n        gs: { id: OPS.setGState, numArgs: 1, variableArgs: false },\\n        q: { id: OPS.save, numArgs: 0, variableArgs: false },\\n        Q: { id: OPS.restore, numArgs: 0, variableArgs: false },\\n        cm: { id: OPS.transform, numArgs: 6, variableArgs: false },\\n\\n        \u002F\u002F Path\\n        m: { id: OPS.moveTo, numArgs: 2, variableArgs: false },\\n        l: { id: OPS.lineTo, numArgs: 2, variableArgs: false },\\n        c: { id: OPS.curveTo, numArgs: 6, variableArgs: false },\\n        v: { id: OPS.curveTo2, numArgs: 4, variableArgs: false },\\n        y: { id: OPS.curveTo3, numArgs: 4, variableArgs: false },\\n        h: { id: OPS.closePath, numArgs: 0, variableArgs: false },\\n        re: { id: OPS.rectangle, numArgs: 4, variableArgs: false },\\n        S: { id: OPS.stroke, numArgs: 0, variableArgs: false },\\n        s: { id: OPS.closeStroke, numArgs: 0, variableArgs: false },\\n        f: { id: OPS.fill, numArgs: 0, variableArgs: false },\\n        F: { id: OPS.fill, numArgs: 0, variableArgs: false },\\n        \\\"f*\\\": { id: OPS.eoFill, numArgs: 0, variableArgs: false },\\n        B: { id: OPS.fillStroke, numArgs: 0, variableArgs: false },\\n        \\\"B*\\\": { id: OPS.eoFillStroke, numArgs: 0, variableArgs: false },\\n        b: { id: OPS.closeFillStroke, numArgs: 0, variableArgs: false },\\n        \\\"b*\\\": { id: OPS.closeEOFillStroke, numArgs: 0, variableArgs: false },\\n        n: { id: OPS.endPath, numArgs: 0, variableArgs: false },\\n\\n        \u002F\u002F Clipping\\n        W: { id: OPS.clip, numArgs: 0, variableArgs: false },\\n        \\\"W*\\\": { id: OPS.eoClip, numArgs: 0, variableArgs: false },\\n\\n        \u002F\u002F Text\\n        BT: { id: OPS.beginText, numArgs: 0, variableArgs: false },\\n        ET: { id: OPS.endText, numArgs: 0, variableArgs: false },\\n        Tc: { id: OPS.setCharSpacing, numArgs: 1, variableArgs: false },\\n        Tw: { id: OPS.setWordSpacing, numArgs: 1, variableArgs: false },\\n        Tz: { id: OPS.setHScale, numArgs: 1, variableArgs: false },\\n        TL: { id: OPS.setLeading, numArgs: 1, variableArgs: false },\\n        Tf: { id: OPS.setFont, numArgs: 2, variableArgs: false },\\n        Tr: { id: OPS.setTextRenderingMode, numArgs: 1, variableArgs: false },\\n        Ts: { id: OPS.setTextRise, numArgs: 1, variableArgs: false },\\n        Td: { id: OPS.moveText, numArgs: 2, variableArgs: false },\\n        TD: { id: OPS.setLeadingMoveText, numArgs: 2, variableArgs: false },\\n        Tm: { id: OPS.setTextMatrix, numArgs: 6, variableArgs: false },\\n        \\\"T*\\\": { id: OPS.nextLine, numArgs: 0, variableArgs: false },\\n        Tj: { id: OPS.showText, numArgs: 1, variableArgs: false },\\n        TJ: { id: OPS.showSpacedText, numArgs: 1, variableArgs: false },\\n        \\\"'\\\": { id: OPS.nextLineShowText, numArgs: 1, variableArgs: false },\\n        '\\\"': {\\n          id: OPS.nextLineSetSpacingShowText,\\n          numArgs: 3,\\n          variableArgs: false,\\n        },\\n\\n        \u002F\u002F Type3 fonts\\n        d0: { id: OPS.setCharWidth, numArgs: 2, variableArgs: false },\\n        d1: {\\n          id: OPS.setCharWidthAndBounds,\\n          numArgs: 6,\\n          variableArgs: false,\\n        },\\n\\n        \u002F\u002F Color\\n        CS: { id: OPS.setStrokeColorSpace, numArgs: 1, variableArgs: false },\\n        cs: { id: OPS.setFillColorSpace, numArgs: 1, variableArgs: false },\\n        SC: { id: OPS.setStrokeColor, numArgs: 4, variableArgs: true },\\n        SCN: { id: OPS.setStrokeColorN, numArgs: 33, variableArgs: true },\\n        sc: { id: OPS.setFillColor, numArgs: 4, variableArgs: true },\\n        scn: { id: OPS.setFillColorN, numArgs: 33, variableArgs: true },\\n        G: { id: OPS.setStrokeGray, numArgs: 1, variableArgs: false },\\n        g: { id: OPS.setFillGray, numArgs: 1, variableArgs: false },\\n        RG: { id: OPS.setStrokeRGBColor, numArgs: 3, variableArgs: false },\\n        rg: { id: OPS.setFillRGBColor, numArgs: 3, variableArgs: false },\\n        K: { id: OPS.setStrokeCMYKColor, numArgs: 4, variableArgs: false },\\n        k: { id: OPS.setFillCMYKColor, numArgs: 4, variableArgs: false },\\n\\n        \u002F\u002F Shading\\n        sh: { id: OPS.shadingFill, numArgs: 1, variableArgs: false },\\n\\n        \u002F\u002F Images\\n        BI: { id: OPS.beginInlineImage, numArgs: 0, variableArgs: false },\\n        ID: { id: OPS.beginImageData, numArgs: 0, variableArgs: false },\\n        EI: { id: OPS.endInlineImage, numArgs: 1, variableArgs: false },\\n\\n        \u002F\u002F XObjects\\n        Do: { id: OPS.paintXObject, numArgs: 1, variableArgs: false },\\n        MP: { id: OPS.markPoint, numArgs: 1, variableArgs: false },\\n        DP: { id: OPS.markPointProps, numArgs: 2, variableArgs: false },\\n        BMC: { id: OPS.beginMarkedContent, numArgs: 1, variableArgs: false },\\n        BDC: {\\n          id: OPS.beginMarkedContentProps,\\n          numArgs: 2,\\n          variableArgs: false,\\n        },\\n        EMC: { id: OPS.endMarkedContent, numArgs: 0, variableArgs: false },\\n\\n        \u002F\u002F Compatibility\\n        BX: { id: OPS.beginCompat, numArgs: 0, variableArgs: false },\\n        EX: { id: OPS.endCompat, numArgs: 0, variableArgs: false },\\n\\n        \u002F\u002F (reserved partial commands for the lexer)\\n        BM: null,\\n        BD: null,\\n        true: null,\\n        fa: null,\\n        fal: null,\\n        fals: null,\\n        false: null,\\n        nu: null,\\n        nul: null,\\n        null: null,\\n      })\\n    );\\n  }\\n\\n  static MAX_INVALID_PATH_OPS = 10;\\n\\n  constructor(stream, xref, stateManager = new StateManager()) {\\n    \u002F\u002F TODO(mduan): pass array of knownCommands rather than this.opMap\\n    \u002F\u002F dictionary\\n    this.parser = new Parser({\\n      lexer: new Lexer(stream, EvaluatorPreprocessor.opMap),\\n      xref,\\n    });\\n    this.stateManager = stateManager;\\n    this.nonProcessedArgs = [];\\n    this._isPathOp = false;\\n    this._numInvalidPathOPS = 0;\\n  }\\n\\n  get savedStatesDepth() {\\n    return this.stateManager.stateStack.length;\\n  }\\n\\n  \u002F\u002F |operation| is an object with two fields:\\n  \u002F\u002F\\n  \u002F\u002F - |fn| is an out param.\\n  \u002F\u002F\\n  \u002F\u002F - |args| is an inout param. On entry, it should have one of two values.\\n  \u002F\u002F\\n  \u002F\u002F   - An empty array. This indicates that the caller is providing the\\n  \u002F\u002F     array in which the args will be stored in. The caller should use\\n  \u002F\u002F     this value if it can reuse a single array for each call to read().\\n  \u002F\u002F\\n  \u002F\u002F   - |null|. This indicates that the caller needs this function to create\\n  \u002F\u002F     the array in which any args are stored in. If there are zero args,\\n  \u002F\u002F     this function will leave |operation.args| as |null| (thus avoiding\\n  \u002F\u002F     allocations that would occur if we used an empty array to represent\\n  \u002F\u002F     zero arguments). Otherwise, it will replace |null| with a new array\\n  \u002F\u002F     containing the arguments. The caller should use this value if it\\n  \u002F\u002F     cannot reuse an array for each call to read().\\n  \u002F\u002F\\n  \u002F\u002F These two modes are present because this function is very hot and so\\n  \u002F\u002F avoiding allocations where possible is worthwhile.\\n  \u002F\u002F\\n  read(operation) {\\n    let args = operation.args;\\n    while (true) {\\n      const obj = this.parser.getObj();\\n      if (obj instanceof Cmd) {\\n        const cmd = obj.cmd;\\n        \u002F\u002F Check that the command is valid\\n        const opSpec = EvaluatorPreprocessor.opMap[cmd];\\n        if (!opSpec) {\\n          warn(`Unknown command \\\"${cmd}\\\".`);\\n          continue;\\n        }\\n\\n        const fn = opSpec.id;\\n        const numArgs = opSpec.numArgs;\\n        let argsLength = args !== null ? args.length : 0;\\n\\n        \u002F\u002F If the *previous* command wasn't a path operator, reset the heuristic\\n        \u002F\u002F used with incomplete path operators below (fixes issue14917.pdf).\\n        if (!this._isPathOp) {\\n          this._numInvalidPathOPS = 0;\\n        }\\n        this._isPathOp = fn >= OPS.moveTo && fn \u003C= OPS.endPath;\\n\\n        if (!opSpec.variableArgs) {\\n          \u002F\u002F Postscript commands can be nested, e.g. \u002FF2 \u002FGS2 gs 5.711 Tf\\n          if (argsLength !== numArgs) {\\n            const nonProcessedArgs = this.nonProcessedArgs;\\n            while (argsLength > numArgs) {\\n              nonProcessedArgs.push(args.shift());\\n              argsLength--;\\n            }\\n            while (argsLength \u003C numArgs && nonProcessedArgs.length !== 0) {\\n              if (args === null) {\\n                args = [];\\n              }\\n              args.unshift(nonProcessedArgs.pop());\\n              argsLength++;\\n            }\\n          }\\n\\n          if (argsLength \u003C numArgs) {\\n            const partialMsg =\\n              `command ${cmd}: expected ${numArgs} args, ` +\\n              `but received ${argsLength} args.`;\\n\\n            \u002F\u002F Incomplete path operators, in particular, can result in fairly\\n            \u002F\u002F chaotic rendering artifacts. Hence the following heuristics is\\n            \u002F\u002F used to error, rather than just warn, once a number of invalid\\n            \u002F\u002F path operators have been encountered (fixes bug1443140.pdf).\\n            if (\\n              this._isPathOp &&\\n              ++this._numInvalidPathOPS >\\n                EvaluatorPreprocessor.MAX_INVALID_PATH_OPS\\n            ) {\\n              throw new FormatError(`Invalid ${partialMsg}`);\\n            }\\n            \u002F\u002F If we receive too few arguments, it's not possible to execute\\n            \u002F\u002F the command, hence we skip the command.\\n            warn(`Skipping ${partialMsg}`);\\n            if (args !== null) {\\n              args.length = 0;\\n            }\\n            continue;\\n          }\\n        } else if (argsLength > numArgs) {\\n          info(\\n            `Command ${cmd}: expected [0, ${numArgs}] args, ` +\\n              `but received ${argsLength} args.`\\n          );\\n        }\\n\\n        \u002F\u002F TODO figure out how to type-check vararg functions\\n        this.preprocessCommand(fn, args);\\n\\n        operation.fn = fn;\\n        operation.args = args;\\n        return true;\\n      }\\n      if (obj === EOF) {\\n        return false; \u002F\u002F no more commands\\n      }\\n      \u002F\u002F argument\\n      if (obj !== null) {\\n        if (args === null) {\\n          args = [];\\n        }\\n        args.push(obj);\\n        if (args.length > 33) {\\n          throw new FormatError(\\\"Too many arguments\\\");\\n        }\\n      }\\n    }\\n  }\\n\\n  preprocessCommand(fn, args) {\\n    switch (fn | 0) {\\n      case OPS.save:\\n        this.stateManager.save();\\n        break;\\n      case OPS.restore:\\n        this.stateManager.restore();\\n        break;\\n      case OPS.transform:\\n        this.stateManager.transform(args);\\n        break;\\n    }\\n  }\\n}\\n\\nexport { EvaluatorPreprocessor, PartialEvaluator };\\n\",\"\u002F* Copyright 2020 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  codePointIter,\\n  escapePDFName,\\n  getRotationMatrix,\\n  numberToString,\\n  stringToUTF16HexString,\\n} from \\\".\u002Fcore_utils.js\\\";\\nimport { Dict, Name } from \\\".\u002Fprimitives.js\\\";\\nimport {\\n  LINE_DESCENT_FACTOR,\\n  LINE_FACTOR,\\n  OPS,\\n  shadow,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { ColorSpaceUtils } from \\\".\u002Fcolorspace_utils.js\\\";\\nimport { EvaluatorPreprocessor } from \\\".\u002Fevaluator.js\\\";\\nimport { LocalColorSpaceCache } from \\\".\u002Fimage_utils.js\\\";\\nimport { PDFFunctionFactory } from \\\".\u002Ffunction.js\\\";\\nimport { StringStream } from \\\".\u002Fstream.js\\\";\\n\\nclass DefaultAppearanceEvaluator extends EvaluatorPreprocessor {\\n  constructor(str) {\\n    super(new StringStream(str));\\n  }\\n\\n  parse() {\\n    const operation = {\\n      fn: 0,\\n      args: [],\\n    };\\n    const result = {\\n      fontSize: 0,\\n      fontName: \\\"\\\",\\n      fontColor: \u002F* black = *\u002F new Uint8ClampedArray(3),\\n    };\\n\\n    try {\\n      while (true) {\\n        operation.args.length = 0; \u002F\u002F Ensure that `args` it's always reset.\\n\\n        if (!this.read(operation)) {\\n          break;\\n        }\\n        if (this.savedStatesDepth !== 0) {\\n          continue; \u002F\u002F Don't get info in save\u002Frestore sections.\\n        }\\n        const { fn, args } = operation;\\n\\n        switch (fn | 0) {\\n          case OPS.setFont:\\n            const [fontName, fontSize] = args;\\n            if (fontName instanceof Name) {\\n              result.fontName = fontName.name;\\n            }\\n            if (typeof fontSize === \\\"number\\\" && fontSize > 0) {\\n              result.fontSize = fontSize;\\n            }\\n            break;\\n          case OPS.setFillRGBColor:\\n            ColorSpaceUtils.rgb.getRgbItem(args, 0, result.fontColor, 0);\\n            break;\\n          case OPS.setFillGray:\\n            ColorSpaceUtils.gray.getRgbItem(args, 0, result.fontColor, 0);\\n            break;\\n          case OPS.setFillCMYKColor:\\n            ColorSpaceUtils.cmyk.getRgbItem(args, 0, result.fontColor, 0);\\n            break;\\n        }\\n      }\\n    } catch (reason) {\\n      warn(`parseDefaultAppearance - ignoring errors: \\\"${reason}\\\".`);\\n    }\\n\\n    return result;\\n  }\\n}\\n\\n\u002F\u002F Parse DA to extract font and color information.\\nfunction parseDefaultAppearance(str) {\\n  return new DefaultAppearanceEvaluator(str).parse();\\n}\\n\\nclass AppearanceStreamEvaluator extends EvaluatorPreprocessor {\\n  constructor(stream, evaluatorOptions, xref, globalColorSpaceCache) {\\n    super(stream);\\n    this.stream = stream;\\n    this.evaluatorOptions = evaluatorOptions;\\n    this.xref = xref;\\n    this.globalColorSpaceCache = globalColorSpaceCache;\\n\\n    this.resources = stream.dict?.get(\\\"Resources\\\");\\n  }\\n\\n  parse() {\\n    const operation = {\\n      fn: 0,\\n      args: [],\\n    };\\n    let result = {\\n      scaleFactor: 1,\\n      fontSize: 0,\\n      fontName: \\\"\\\",\\n      fontColor: \u002F* black = *\u002F new Uint8ClampedArray(3),\\n      fillColorSpace: ColorSpaceUtils.gray,\\n    };\\n    let breakLoop = false;\\n    const stack = [];\\n\\n    try {\\n      while (true) {\\n        operation.args.length = 0; \u002F\u002F Ensure that `args` it's always reset.\\n\\n        if (breakLoop || !this.read(operation)) {\\n          break;\\n        }\\n        const { fn, args } = operation;\\n\\n        switch (fn | 0) {\\n          case OPS.save:\\n            stack.push({\\n              scaleFactor: result.scaleFactor,\\n              fontSize: result.fontSize,\\n              fontName: result.fontName,\\n              fontColor: result.fontColor.slice(),\\n              fillColorSpace: result.fillColorSpace,\\n            });\\n            break;\\n          case OPS.restore:\\n            result = stack.pop() || result;\\n            break;\\n          case OPS.setTextMatrix:\\n            result.scaleFactor *= Math.hypot(args[0], args[1]);\\n            break;\\n          case OPS.setFont:\\n            const [fontName, fontSize] = args;\\n            if (fontName instanceof Name) {\\n              result.fontName = fontName.name;\\n            }\\n            if (typeof fontSize === \\\"number\\\" && fontSize > 0) {\\n              result.fontSize = fontSize * result.scaleFactor;\\n            }\\n            break;\\n          case OPS.setFillColorSpace:\\n            result.fillColorSpace = ColorSpaceUtils.parse({\\n              cs: args[0],\\n              xref: this.xref,\\n              resources: this.resources,\\n              pdfFunctionFactory: this._pdfFunctionFactory,\\n              globalColorSpaceCache: this.globalColorSpaceCache,\\n              localColorSpaceCache: this._localColorSpaceCache,\\n            });\\n            break;\\n          case OPS.setFillColor:\\n            const cs = result.fillColorSpace;\\n            cs.getRgbItem(args, 0, result.fontColor, 0);\\n            break;\\n          case OPS.setFillRGBColor:\\n            ColorSpaceUtils.rgb.getRgbItem(args, 0, result.fontColor, 0);\\n            break;\\n          case OPS.setFillGray:\\n            ColorSpaceUtils.gray.getRgbItem(args, 0, result.fontColor, 0);\\n            break;\\n          case OPS.setFillCMYKColor:\\n            ColorSpaceUtils.cmyk.getRgbItem(args, 0, result.fontColor, 0);\\n            break;\\n          case OPS.showText:\\n          case OPS.showSpacedText:\\n          case OPS.nextLineShowText:\\n          case OPS.nextLineSetSpacingShowText:\\n            breakLoop = true;\\n            break;\\n        }\\n      }\\n    } catch (reason) {\\n      warn(`parseAppearanceStream - ignoring errors: \\\"${reason}\\\".`);\\n    }\\n    this.stream.reset();\\n    delete result.scaleFactor;\\n    delete result.fillColorSpace;\\n\\n    return result;\\n  }\\n\\n  get _localColorSpaceCache() {\\n    return shadow(this, \\\"_localColorSpaceCache\\\", new LocalColorSpaceCache());\\n  }\\n\\n  get _pdfFunctionFactory() {\\n    const pdfFunctionFactory = new PDFFunctionFactory({\\n      xref: this.xref,\\n      isEvalSupported: this.evaluatorOptions.isEvalSupported,\\n    });\\n    return shadow(this, \\\"_pdfFunctionFactory\\\", pdfFunctionFactory);\\n  }\\n}\\n\\n\u002F\u002F Parse appearance stream to extract font and color information.\\n\u002F\u002F It returns the font properties used to render the first text object.\\nfunction parseAppearanceStream(\\n  stream,\\n  evaluatorOptions,\\n  xref,\\n  globalColorSpaceCache\\n) {\\n  return new AppearanceStreamEvaluator(\\n    stream,\\n    evaluatorOptions,\\n    xref,\\n    globalColorSpaceCache\\n  ).parse();\\n}\\n\\nfunction getPdfColor(color, isFill) {\\n  if (color[0] === color[1] && color[1] === color[2]) {\\n    const gray = color[0] \u002F 255;\\n    return `${numberToString(gray)} ${isFill ? \\\"g\\\" : \\\"G\\\"}`;\\n  }\\n  return (\\n    Array.from(color, c => numberToString(c \u002F 255)).join(\\\" \\\") +\\n    ` ${isFill ? \\\"rg\\\" : \\\"RG\\\"}`\\n  );\\n}\\n\\n\u002F\u002F Create default appearance string from some information.\\nfunction createDefaultAppearance({ fontSize, fontName, fontColor }) {\\n  return `\u002F${escapePDFName(fontName)} ${fontSize} Tf ${getPdfColor(\\n    fontColor,\\n    \u002F* isFill *\u002F true\\n  )}`;\\n}\\n\\nclass FakeUnicodeFont {\\n  constructor(xref, fontFamily) {\\n    this.xref = xref;\\n    this.widths = null;\\n    this.firstChar = Infinity;\\n    this.lastChar = -Infinity;\\n    this.fontFamily = fontFamily;\\n\\n    const canvas = new OffscreenCanvas(1, 1);\\n    this.ctxMeasure = canvas.getContext(\\\"2d\\\", { willReadFrequently: true });\\n\\n    if (!FakeUnicodeFont._fontNameId) {\\n      FakeUnicodeFont._fontNameId = 1;\\n    }\\n    this.fontName = Name.get(\\n      `InvalidPDFjsFont_${fontFamily}_${FakeUnicodeFont._fontNameId++}`\\n    );\\n  }\\n\\n  get fontDescriptorRef() {\\n    if (!FakeUnicodeFont._fontDescriptorRef) {\\n      const fontDescriptor = new Dict(this.xref);\\n      fontDescriptor.set(\\\"Type\\\", Name.get(\\\"FontDescriptor\\\"));\\n      fontDescriptor.set(\\\"FontName\\\", this.fontName);\\n      fontDescriptor.set(\\\"FontFamily\\\", \\\"MyriadPro Regular\\\");\\n      fontDescriptor.set(\\\"FontBBox\\\", [0, 0, 0, 0]);\\n      fontDescriptor.set(\\\"FontStretch\\\", Name.get(\\\"Normal\\\"));\\n      fontDescriptor.set(\\\"FontWeight\\\", 400);\\n      fontDescriptor.set(\\\"ItalicAngle\\\", 0);\\n\\n      FakeUnicodeFont._fontDescriptorRef =\\n        this.xref.getNewPersistentRef(fontDescriptor);\\n    }\\n\\n    return FakeUnicodeFont._fontDescriptorRef;\\n  }\\n\\n  get descendantFontRef() {\\n    const descendantFont = new Dict(this.xref);\\n    descendantFont.set(\\\"BaseFont\\\", this.fontName);\\n    descendantFont.set(\\\"Type\\\", Name.get(\\\"Font\\\"));\\n    descendantFont.set(\\\"Subtype\\\", Name.get(\\\"CIDFontType0\\\"));\\n    descendantFont.set(\\\"CIDToGIDMap\\\", Name.get(\\\"Identity\\\"));\\n    descendantFont.set(\\\"FirstChar\\\", this.firstChar);\\n    descendantFont.set(\\\"LastChar\\\", this.lastChar);\\n    descendantFont.set(\\\"FontDescriptor\\\", this.fontDescriptorRef);\\n    descendantFont.set(\\\"DW\\\", 1000);\\n\\n    const widths = [];\\n    const chars = [...this.widths.entries()].sort();\\n    let currentChar = null;\\n    let currentWidths = null;\\n    for (const [char, width] of chars) {\\n      if (!currentChar) {\\n        currentChar = char;\\n        currentWidths = [width];\\n        continue;\\n      }\\n      if (char === currentChar + currentWidths.length) {\\n        currentWidths.push(width);\\n      } else {\\n        widths.push(currentChar, currentWidths);\\n        currentChar = char;\\n        currentWidths = [width];\\n      }\\n    }\\n\\n    if (currentChar) {\\n      widths.push(currentChar, currentWidths);\\n    }\\n\\n    descendantFont.set(\\\"W\\\", widths);\\n\\n    const cidSystemInfo = new Dict(this.xref);\\n    cidSystemInfo.set(\\\"Ordering\\\", \\\"Identity\\\");\\n    cidSystemInfo.set(\\\"Registry\\\", \\\"Adobe\\\");\\n    cidSystemInfo.set(\\\"Supplement\\\", 0);\\n    descendantFont.set(\\\"CIDSystemInfo\\\", cidSystemInfo);\\n\\n    return this.xref.getNewPersistentRef(descendantFont);\\n  }\\n\\n  get baseFontRef() {\\n    const baseFont = new Dict(this.xref);\\n    baseFont.set(\\\"BaseFont\\\", this.fontName);\\n    baseFont.set(\\\"Type\\\", Name.get(\\\"Font\\\"));\\n    baseFont.set(\\\"Subtype\\\", Name.get(\\\"Type0\\\"));\\n    baseFont.set(\\\"Encoding\\\", Name.get(\\\"Identity-H\\\"));\\n    baseFont.set(\\\"DescendantFonts\\\", [this.descendantFontRef]);\\n    baseFont.set(\\\"ToUnicode\\\", Name.get(\\\"Identity-H\\\"));\\n\\n    return this.xref.getNewPersistentRef(baseFont);\\n  }\\n\\n  get resources() {\\n    const resources = new Dict(this.xref);\\n    const font = new Dict(this.xref);\\n    font.set(this.fontName.name, this.baseFontRef);\\n    resources.set(\\\"Font\\\", font);\\n\\n    return resources;\\n  }\\n\\n  _createContext() {\\n    this.widths = new Map();\\n    this.ctxMeasure.font = `1000px ${this.fontFamily}`;\\n\\n    return this.ctxMeasure;\\n  }\\n\\n  createFontResources(text) {\\n    const ctx = this._createContext();\\n    for (const line of text.split(\u002F\\\\r\\\\n?|\\\\n\u002F)) {\\n      for (const char of line.split(\\\"\\\")) {\\n        const code = char.charCodeAt(0);\\n        if (this.widths.has(code)) {\\n          continue;\\n        }\\n        const metrics = ctx.measureText(char);\\n        const width = Math.ceil(metrics.width);\\n        this.widths.set(code, width);\\n        this.firstChar = Math.min(code, this.firstChar);\\n        this.lastChar = Math.max(code, this.lastChar);\\n      }\\n    }\\n\\n    return this.resources;\\n  }\\n\\n  static getFirstPositionInfo(rect, rotation, fontSize) {\\n    \u002F\u002F Get the position of the first char in the rect.\\n    const [x1, y1, x2, y2] = rect;\\n    let w = x2 - x1;\\n    let h = y2 - y1;\\n\\n    if (rotation % 180 !== 0) {\\n      [w, h] = [h, w];\\n    }\\n    const lineHeight = LINE_FACTOR * fontSize;\\n    const lineDescent = LINE_DESCENT_FACTOR * fontSize;\\n\\n    return {\\n      coords: [0, h + lineDescent - lineHeight],\\n      bbox: [0, 0, w, h],\\n      matrix:\\n        rotation !== 0 ? getRotationMatrix(rotation, h, lineHeight) : undefined,\\n    };\\n  }\\n\\n  createAppearance(text, rect, rotation, fontSize, bgColor, strokeAlpha) {\\n    const ctx = this._createContext();\\n    const lines = [];\\n    let maxWidth = -Infinity;\\n    for (const line of text.split(\u002F\\\\r\\\\n?|\\\\n\u002F)) {\\n      lines.push(line);\\n      \u002F\u002F The line width isn't the sum of the char widths, because in some\\n      \u002F\u002F languages, like arabic, it'd be wrong because of ligatures.\\n      const lineWidth = ctx.measureText(line).width;\\n      maxWidth = Math.max(maxWidth, lineWidth);\\n      for (const code of codePointIter(line)) {\\n        const char = String.fromCodePoint(code);\\n        let width = this.widths.get(code);\\n        if (width === undefined) {\\n          const metrics = ctx.measureText(char);\\n          width = Math.ceil(metrics.width);\\n          this.widths.set(code, width);\\n          this.firstChar = Math.min(code, this.firstChar);\\n          this.lastChar = Math.max(code, this.lastChar);\\n        }\\n      }\\n    }\\n    maxWidth *= fontSize \u002F 1000;\\n\\n    const [x1, y1, x2, y2] = rect;\\n    let w = x2 - x1;\\n    let h = y2 - y1;\\n\\n    if (rotation % 180 !== 0) {\\n      [w, h] = [h, w];\\n    }\\n\\n    let hscale = 1;\\n    if (maxWidth > w) {\\n      hscale = w \u002F maxWidth;\\n    }\\n    let vscale = 1;\\n    const lineHeight = LINE_FACTOR * fontSize;\\n    const lineDescent = LINE_DESCENT_FACTOR * fontSize;\\n    const maxHeight = lineHeight * lines.length;\\n    if (maxHeight > h) {\\n      vscale = h \u002F maxHeight;\\n    }\\n    const fscale = Math.min(hscale, vscale);\\n    const newFontSize = fontSize * fscale;\\n\\n    const buffer = [\\n      \\\"q\\\",\\n      `0 0 ${numberToString(w)} ${numberToString(h)} re W n`,\\n      `BT`,\\n      `1 0 0 1 0 ${numberToString(h + lineDescent)} Tm 0 Tc ${getPdfColor(\\n        bgColor,\\n        \u002F* isFill *\u002F true\\n      )}`,\\n      `\u002F${this.fontName.name} ${numberToString(newFontSize)} Tf`,\\n    ];\\n\\n    const { resources } = this;\\n    strokeAlpha =\\n      typeof strokeAlpha === \\\"number\\\" && strokeAlpha >= 0 && strokeAlpha \u003C= 1\\n        ? strokeAlpha\\n        : 1;\\n\\n    if (strokeAlpha !== 1) {\\n      buffer.push(\\\"\u002FR0 gs\\\");\\n      const extGState = new Dict(this.xref);\\n      const r0 = new Dict(this.xref);\\n      r0.set(\\\"ca\\\", strokeAlpha);\\n      r0.set(\\\"CA\\\", strokeAlpha);\\n      r0.set(\\\"Type\\\", Name.get(\\\"ExtGState\\\"));\\n      extGState.set(\\\"R0\\\", r0);\\n      resources.set(\\\"ExtGState\\\", extGState);\\n    }\\n\\n    const vShift = numberToString(lineHeight);\\n    for (const line of lines) {\\n      buffer.push(`0 -${vShift} Td \u003C${stringToUTF16HexString(line)}> Tj`);\\n    }\\n    buffer.push(\\\"ET\\\", \\\"Q\\\");\\n    const appearance = buffer.join(\\\"\\\\n\\\");\\n\\n    const appearanceStreamDict = new Dict(this.xref);\\n    appearanceStreamDict.set(\\\"Subtype\\\", Name.get(\\\"Form\\\"));\\n    appearanceStreamDict.set(\\\"Type\\\", Name.get(\\\"XObject\\\"));\\n    appearanceStreamDict.set(\\\"BBox\\\", [0, 0, w, h]);\\n    appearanceStreamDict.set(\\\"Length\\\", appearance.length);\\n    appearanceStreamDict.set(\\\"Resources\\\", resources);\\n\\n    if (rotation) {\\n      const matrix = getRotationMatrix(rotation, w, h);\\n      appearanceStreamDict.set(\\\"Matrix\\\", matrix);\\n    }\\n\\n    const ap = new StringStream(appearance);\\n    ap.dict = appearanceStreamDict;\\n\\n    return ap;\\n  }\\n}\\n\\nexport {\\n  createDefaultAppearance,\\n  FakeUnicodeFont,\\n  getPdfColor,\\n  parseAppearanceStream,\\n  parseDefaultAppearance,\\n};\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { Dict, RefSet } from \\\".\u002Fprimitives.js\\\";\\nimport { FormatError, unreachable, warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\n\u002F**\\n * A NameTree\u002FNumberTree is like a Dict but has some advantageous properties,\\n * see the specification (7.9.6 and 7.9.7) for additional details.\\n * TODO: implement all the Dict functions and make this more efficient.\\n *\u002F\\nclass NameOrNumberTree {\\n  constructor(root, xref, type) {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      this.constructor === NameOrNumberTree\\n    ) {\\n      unreachable(\\\"Cannot initialize NameOrNumberTree.\\\");\\n    }\\n    this.root = root;\\n    this.xref = xref;\\n    this._type = type;\\n  }\\n\\n  getAll() {\\n    const map = new Map();\\n    if (!this.root) {\\n      return map;\\n    }\\n    const xref = this.xref;\\n    \u002F\u002F Reading Name\u002FNumber tree.\\n    const processed = new RefSet();\\n    processed.put(this.root);\\n    const queue = [this.root];\\n    while (queue.length > 0) {\\n      const obj = xref.fetchIfRef(queue.shift());\\n      if (!(obj instanceof Dict)) {\\n        continue;\\n      }\\n      if (obj.has(\\\"Kids\\\")) {\\n        const kids = obj.get(\\\"Kids\\\");\\n        if (!Array.isArray(kids)) {\\n          continue;\\n        }\\n        for (const kid of kids) {\\n          if (processed.has(kid)) {\\n            throw new FormatError(`Duplicate entry in \\\"${this._type}\\\" tree.`);\\n          }\\n          queue.push(kid);\\n          processed.put(kid);\\n        }\\n        continue;\\n      }\\n      const entries = obj.get(this._type);\\n      if (!Array.isArray(entries)) {\\n        continue;\\n      }\\n      for (let i = 0, ii = entries.length; i \u003C ii; i += 2) {\\n        map.set(xref.fetchIfRef(entries[i]), xref.fetchIfRef(entries[i + 1]));\\n      }\\n    }\\n    return map;\\n  }\\n\\n  getRaw(key) {\\n    if (!this.root) {\\n      return null;\\n    }\\n    const xref = this.xref;\\n    let kidsOrEntries = xref.fetchIfRef(this.root);\\n    let loopCount = 0;\\n    const MAX_LEVELS = 10;\\n\\n    \u002F\u002F Perform a binary search to quickly find the entry that\\n    \u002F\u002F contains the key we are looking for.\\n    while (kidsOrEntries.has(\\\"Kids\\\")) {\\n      if (++loopCount > MAX_LEVELS) {\\n        warn(`Search depth limit reached for \\\"${this._type}\\\" tree.`);\\n        return null;\\n      }\\n\\n      const kids = kidsOrEntries.get(\\\"Kids\\\");\\n      if (!Array.isArray(kids)) {\\n        return null;\\n      }\\n\\n      let l = 0,\\n        r = kids.length - 1;\\n      while (l \u003C= r) {\\n        const m = (l + r) >> 1;\\n        const kid = xref.fetchIfRef(kids[m]);\\n        const limits = kid.get(\\\"Limits\\\");\\n\\n        if (key \u003C xref.fetchIfRef(limits[0])) {\\n          r = m - 1;\\n        } else if (key > xref.fetchIfRef(limits[1])) {\\n          l = m + 1;\\n        } else {\\n          kidsOrEntries = kid;\\n          break;\\n        }\\n      }\\n      if (l > r) {\\n        return null;\\n      }\\n    }\\n\\n    \u002F\u002F If we get here, then we have found the right entry. Now go through the\\n    \u002F\u002F entries in the dictionary until we find the key we're looking for.\\n    const entries = kidsOrEntries.get(this._type);\\n    if (Array.isArray(entries)) {\\n      \u002F\u002F Perform a binary search to reduce the lookup time.\\n      let l = 0,\\n        r = entries.length - 2;\\n      while (l \u003C= r) {\\n        \u002F\u002F Check only even indices (0, 2, 4, ...) because the\\n        \u002F\u002F odd indices contain the actual data.\\n        const tmp = (l + r) >> 1,\\n          m = tmp + (tmp & 1);\\n        const currentKey = xref.fetchIfRef(entries[m]);\\n        if (key \u003C currentKey) {\\n          r = m - 2;\\n        } else if (key > currentKey) {\\n          l = m + 2;\\n        } else {\\n          return entries[m + 1];\\n        }\\n      }\\n    }\\n    return null;\\n  }\\n\\n  get(key) {\\n    return this.xref.fetchIfRef(this.getRaw(key));\\n  }\\n}\\n\\nclass NameTree extends NameOrNumberTree {\\n  constructor(root, xref) {\\n    super(root, xref, \\\"Names\\\");\\n  }\\n}\\n\\nclass NumberTree extends NameOrNumberTree {\\n  constructor(root, xref) {\\n    super(root, xref, \\\"Nums\\\");\\n  }\\n}\\n\\nexport { NameTree, NumberTree };\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { clearPatternCaches } from \\\".\u002Fpattern.js\\\";\\nimport { clearPrimitiveCaches } from \\\".\u002Fprimitives.js\\\";\\nimport { clearUnicodeCaches } from \\\".\u002Funicode.js\\\";\\nimport { JpxImage } from \\\".\u002Fjpx.js\\\";\\n\\nfunction clearGlobalCaches() {\\n  clearPatternCaches();\\n  clearPrimitiveCaches();\\n  clearUnicodeCaches();\\n\\n  \u002F\u002F Remove the global `JpxImage` instance, since it may hold a reference to\\n  \u002F\u002F the WebAssembly module.\\n  JpxImage.cleanup();\\n}\\n\\nexport { clearGlobalCaches };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { shadow, stringToPDFString, warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { Dict } from \\\".\u002Fprimitives.js\\\";\\n\\nfunction pickPlatformItem(dict) {\\n  if (!(dict instanceof Dict)) {\\n    return null;\\n  }\\n  \u002F\u002F Look for the filename in this order:\\n  \u002F\u002F UF, F, Unix, Mac, DOS\\n  if (dict.has(\\\"UF\\\")) {\\n    return dict.get(\\\"UF\\\");\\n  } else if (dict.has(\\\"F\\\")) {\\n    return dict.get(\\\"F\\\");\\n  } else if (dict.has(\\\"Unix\\\")) {\\n    return dict.get(\\\"Unix\\\");\\n  } else if (dict.has(\\\"Mac\\\")) {\\n    return dict.get(\\\"Mac\\\");\\n  } else if (dict.has(\\\"DOS\\\")) {\\n    return dict.get(\\\"DOS\\\");\\n  }\\n  return null;\\n}\\n\\nfunction stripPath(str) {\\n  return str.substring(str.lastIndexOf(\\\"\u002F\\\") + 1);\\n}\\n\\n\u002F**\\n * \\\"A PDF file can refer to the contents of another file by using a File\\n * Specification (PDF 1.1)\\\", see the spec (7.11) for more details.\\n * NOTE: Only embedded files are supported (as part of the attachments support)\\n * TODO: support the 'URL' file system (with caching if !\u002FV), portable\\n * collections attributes and related files (\u002FRF)\\n *\u002F\\nclass FileSpec {\\n  #contentAvailable = false;\\n\\n  constructor(root, xref, skipContent = false) {\\n    if (!(root instanceof Dict)) {\\n      return;\\n    }\\n    this.xref = xref;\\n    this.root = root;\\n    if (root.has(\\\"FS\\\")) {\\n      this.fs = root.get(\\\"FS\\\");\\n    }\\n    if (root.has(\\\"RF\\\")) {\\n      warn(\\\"Related file specifications are not supported\\\");\\n    }\\n    if (!skipContent) {\\n      if (root.has(\\\"EF\\\")) {\\n        this.#contentAvailable = true;\\n      } else {\\n        warn(\\\"Non-embedded file specifications are not supported\\\");\\n      }\\n    }\\n  }\\n\\n  get filename() {\\n    let filename = \\\"\\\";\\n\\n    const item = pickPlatformItem(this.root);\\n    if (item && typeof item === \\\"string\\\") {\\n      filename = stringToPDFString(item, \u002F* keepEscapeSequence = *\u002F true)\\n        .replaceAll(\\\"\\\\\\\\\\\\\\\\\\\", \\\"\\\\\\\\\\\")\\n        .replaceAll(\\\"\\\\\\\\\u002F\\\", \\\"\u002F\\\")\\n        .replaceAll(\\\"\\\\\\\\\\\", \\\"\u002F\\\");\\n    }\\n    return shadow(this, \\\"filename\\\", filename || \\\"unnamed\\\");\\n  }\\n\\n  get content() {\\n    if (!this.#contentAvailable) {\\n      return null;\\n    }\\n    this._contentRef ||= pickPlatformItem(this.root?.get(\\\"EF\\\"));\\n\\n    let content = null;\\n    if (this._contentRef) {\\n      const fileObj = this.xref.fetchIfRef(this._contentRef);\\n      if (fileObj instanceof BaseStream) {\\n        content = fileObj.getBytes();\\n      } else {\\n        warn(\\n          \\\"Embedded file specification points to non-existing\u002Finvalid content\\\"\\n        );\\n      }\\n    } else {\\n      warn(\\\"Embedded file specification does not have any content\\\");\\n    }\\n    return content;\\n  }\\n\\n  get description() {\\n    let description = \\\"\\\";\\n\\n    const desc = this.root?.get(\\\"Desc\\\");\\n    if (desc && typeof desc === \\\"string\\\") {\\n      description = stringToPDFString(desc);\\n    }\\n    return shadow(this, \\\"description\\\", description);\\n  }\\n\\n  get serializable() {\\n    return {\\n      rawFilename: this.filename,\\n      filename: stripPath(this.filename),\\n      content: this.content,\\n      description: this.description,\\n    };\\n  }\\n}\\n\\nexport { FileSpec };\\n\",\"\u002F* Copyright 2018 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F The code for XMLParserBase copied from\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Fmozilla\u002Fshumway\u002Fblob\u002F16451d8836fa85f4b16eeda8b4bda2fa9e2b22b0\u002Fsrc\u002Favm2\u002Fnatives\u002Fxml.ts\\n\\nimport { encodeToXmlString } from \\\".\u002Fcore_utils.js\\\";\\n\\nconst XMLParserErrorCode = {\\n  NoError: 0,\\n  EndOfDocument: -1,\\n  UnterminatedCdat: -2,\\n  UnterminatedXmlDeclaration: -3,\\n  UnterminatedDoctypeDeclaration: -4,\\n  UnterminatedComment: -5,\\n  MalformedElement: -6,\\n  OutOfMemory: -7,\\n  UnterminatedAttributeValue: -8,\\n  UnterminatedElement: -9,\\n  ElementNeverBegun: -10,\\n};\\n\\nfunction isWhitespace(s, index) {\\n  const ch = s[index];\\n  return ch === \\\" \\\" || ch === \\\"\\\\n\\\" || ch === \\\"\\\\r\\\" || ch === \\\"\\\\t\\\";\\n}\\n\\nfunction isWhitespaceString(s) {\\n  for (let i = 0, ii = s.length; i \u003C ii; i++) {\\n    if (!isWhitespace(s, i)) {\\n      return false;\\n    }\\n  }\\n  return true;\\n}\\n\\nclass XMLParserBase {\\n  _resolveEntities(s) {\\n    return s.replaceAll(\u002F&([^;]+);\u002Fg, (all, entity) => {\\n      if (entity.substring(0, 2) === \\\"#x\\\") {\\n        return String.fromCodePoint(parseInt(entity.substring(2), 16));\\n      } else if (entity.substring(0, 1) === \\\"#\\\") {\\n        return String.fromCodePoint(parseInt(entity.substring(1), 10));\\n      }\\n      switch (entity) {\\n        case \\\"lt\\\":\\n          return \\\"\u003C\\\";\\n        case \\\"gt\\\":\\n          return \\\">\\\";\\n        case \\\"amp\\\":\\n          return \\\"&\\\";\\n        case \\\"quot\\\":\\n          return '\\\"';\\n        case \\\"apos\\\":\\n          return \\\"'\\\";\\n      }\\n      return this.onResolveEntity(entity);\\n    });\\n  }\\n\\n  _parseContent(s, start) {\\n    const attributes = [];\\n    let pos = start;\\n\\n    function skipWs() {\\n      while (pos \u003C s.length && isWhitespace(s, pos)) {\\n        ++pos;\\n      }\\n    }\\n\\n    while (\\n      pos \u003C s.length &&\\n      !isWhitespace(s, pos) &&\\n      s[pos] !== \\\">\\\" &&\\n      s[pos] !== \\\"\u002F\\\"\\n    ) {\\n      ++pos;\\n    }\\n    const name = s.substring(start, pos);\\n    skipWs();\\n    while (\\n      pos \u003C s.length &&\\n      s[pos] !== \\\">\\\" &&\\n      s[pos] !== \\\"\u002F\\\" &&\\n      s[pos] !== \\\"?\\\"\\n    ) {\\n      skipWs();\\n      let attrName = \\\"\\\",\\n        attrValue = \\\"\\\";\\n      while (pos \u003C s.length && !isWhitespace(s, pos) && s[pos] !== \\\"=\\\") {\\n        attrName += s[pos];\\n        ++pos;\\n      }\\n      skipWs();\\n      if (s[pos] !== \\\"=\\\") {\\n        return null;\\n      }\\n      ++pos;\\n      skipWs();\\n      const attrEndChar = s[pos];\\n      if (attrEndChar !== '\\\"' && attrEndChar !== \\\"'\\\") {\\n        return null;\\n      }\\n      const attrEndIndex = s.indexOf(attrEndChar, ++pos);\\n      if (attrEndIndex \u003C 0) {\\n        return null;\\n      }\\n      attrValue = s.substring(pos, attrEndIndex);\\n      attributes.push({\\n        name: attrName,\\n        value: this._resolveEntities(attrValue),\\n      });\\n      pos = attrEndIndex + 1;\\n      skipWs();\\n    }\\n    return {\\n      name,\\n      attributes,\\n      parsed: pos - start,\\n    };\\n  }\\n\\n  _parseProcessingInstruction(s, start) {\\n    let pos = start;\\n\\n    function skipWs() {\\n      while (pos \u003C s.length && isWhitespace(s, pos)) {\\n        ++pos;\\n      }\\n    }\\n\\n    while (\\n      pos \u003C s.length &&\\n      !isWhitespace(s, pos) &&\\n      s[pos] !== \\\">\\\" &&\\n      s[pos] !== \\\"?\\\" &&\\n      s[pos] !== \\\"\u002F\\\"\\n    ) {\\n      ++pos;\\n    }\\n    const name = s.substring(start, pos);\\n    skipWs();\\n    const attrStart = pos;\\n    while (pos \u003C s.length && (s[pos] !== \\\"?\\\" || s[pos + 1] !== \\\">\\\")) {\\n      ++pos;\\n    }\\n    const value = s.substring(attrStart, pos);\\n    return {\\n      name,\\n      value,\\n      parsed: pos - start,\\n    };\\n  }\\n\\n  parseXml(s) {\\n    let i = 0;\\n    while (i \u003C s.length) {\\n      const ch = s[i];\\n      let j = i;\\n      if (ch === \\\"\u003C\\\") {\\n        ++j;\\n        const ch2 = s[j];\\n        let q;\\n        switch (ch2) {\\n          case \\\"\u002F\\\":\\n            ++j;\\n            q = s.indexOf(\\\">\\\", j);\\n            if (q \u003C 0) {\\n              this.onError(XMLParserErrorCode.UnterminatedElement);\\n              return;\\n            }\\n            this.onEndElement(s.substring(j, q));\\n            j = q + 1;\\n            break;\\n          case \\\"?\\\":\\n            ++j;\\n            const pi = this._parseProcessingInstruction(s, j);\\n            if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== \\\"?>\\\") {\\n              this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);\\n              return;\\n            }\\n            this.onPi(pi.name, pi.value);\\n            j += pi.parsed + 2;\\n            break;\\n          case \\\"!\\\":\\n            if (s.substring(j + 1, j + 3) === \\\"--\\\") {\\n              q = s.indexOf(\\\"-->\\\", j + 3);\\n              if (q \u003C 0) {\\n                this.onError(XMLParserErrorCode.UnterminatedComment);\\n                return;\\n              }\\n              this.onComment(s.substring(j + 3, q));\\n              j = q + 3;\\n            } else if (s.substring(j + 1, j + 8) === \\\"[CDATA[\\\") {\\n              q = s.indexOf(\\\"]]>\\\", j + 8);\\n              if (q \u003C 0) {\\n                this.onError(XMLParserErrorCode.UnterminatedCdat);\\n                return;\\n              }\\n              this.onCdata(s.substring(j + 8, q));\\n              j = q + 3;\\n            } else if (s.substring(j + 1, j + 8) === \\\"DOCTYPE\\\") {\\n              const q2 = s.indexOf(\\\"[\\\", j + 8);\\n              let complexDoctype = false;\\n              q = s.indexOf(\\\">\\\", j + 8);\\n              if (q \u003C 0) {\\n                this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\\n                return;\\n              }\\n              if (q2 > 0 && q > q2) {\\n                q = s.indexOf(\\\"]>\\\", j + 8);\\n                if (q \u003C 0) {\\n                  this.onError(\\n                    XMLParserErrorCode.UnterminatedDoctypeDeclaration\\n                  );\\n                  return;\\n                }\\n                complexDoctype = true;\\n              }\\n              const doctypeContent = s.substring(\\n                j + 8,\\n                q + (complexDoctype ? 1 : 0)\\n              );\\n              this.onDoctype(doctypeContent);\\n              j = q + (complexDoctype ? 2 : 1);\\n            } else {\\n              this.onError(XMLParserErrorCode.MalformedElement);\\n              return;\\n            }\\n            break;\\n          default:\\n            const content = this._parseContent(s, j);\\n            if (content === null) {\\n              this.onError(XMLParserErrorCode.MalformedElement);\\n              return;\\n            }\\n            let isClosed = false;\\n            if (\\n              s.substring(j + content.parsed, j + content.parsed + 2) === \\\"\u002F>\\\"\\n            ) {\\n              isClosed = true;\\n            } else if (\\n              s.substring(j + content.parsed, j + content.parsed + 1) !== \\\">\\\"\\n            ) {\\n              this.onError(XMLParserErrorCode.UnterminatedElement);\\n              return;\\n            }\\n            this.onBeginElement(content.name, content.attributes, isClosed);\\n            j += content.parsed + (isClosed ? 2 : 1);\\n            break;\\n        }\\n      } else {\\n        while (j \u003C s.length && s[j] !== \\\"\u003C\\\") {\\n          j++;\\n        }\\n        const text = s.substring(i, j);\\n        this.onText(this._resolveEntities(text));\\n      }\\n      i = j;\\n    }\\n  }\\n\\n  onResolveEntity(name) {\\n    return `&${name};`;\\n  }\\n\\n  onPi(name, value) {}\\n\\n  onComment(text) {}\\n\\n  onCdata(text) {}\\n\\n  onDoctype(doctypeContent) {}\\n\\n  onText(text) {}\\n\\n  onBeginElement(name, attributes, isEmpty) {}\\n\\n  onEndElement(name) {}\\n\\n  onError(code) {}\\n}\\n\\nclass SimpleDOMNode {\\n  constructor(nodeName, nodeValue) {\\n    this.nodeName = nodeName;\\n    this.nodeValue = nodeValue;\\n\\n    Object.defineProperty(this, \\\"parentNode\\\", { value: null, writable: true });\\n  }\\n\\n  get firstChild() {\\n    return this.childNodes?.[0];\\n  }\\n\\n  get nextSibling() {\\n    const childNodes = this.parentNode.childNodes;\\n    if (!childNodes) {\\n      return undefined;\\n    }\\n    const index = childNodes.indexOf(this);\\n    if (index === -1) {\\n      return undefined;\\n    }\\n    return childNodes[index + 1];\\n  }\\n\\n  get textContent() {\\n    if (!this.childNodes) {\\n      return this.nodeValue || \\\"\\\";\\n    }\\n    return this.childNodes.map(child => child.textContent).join(\\\"\\\");\\n  }\\n\\n  get children() {\\n    return this.childNodes || [];\\n  }\\n\\n  hasChildNodes() {\\n    return this.childNodes?.length > 0;\\n  }\\n\\n  \u002F**\\n   * Search a node in the tree with the given path\\n   * foo.bar[nnn], i.e. find the nnn-th node named\\n   * bar under a node named foo.\\n   *\\n   * @param {Array} paths - an array of objects as\\n   * returned by {parseXFAPath}.\\n   * @param {number} pos - the current position in\\n   * the paths array.\\n   * @returns {SimpleDOMNode} The node corresponding\\n   * to the path or null if not found.\\n   *\u002F\\n  searchNode(paths, pos) {\\n    if (pos >= paths.length) {\\n      return this;\\n    }\\n\\n    const component = paths[pos];\\n    if (component.name.startsWith(\\\"#\\\") && pos \u003C paths.length - 1) {\\n      \u002F\u002F If it starts with a # then it's a class which is not a concept for\\n      \u002F\u002F datasets elements (https:\u002F\u002Fwww.pdfa.org\u002Fnorm-refs\u002FXFA-3_3.pdf#page=96).\\n      return this.searchNode(paths, pos + 1);\\n    }\\n    const stack = [];\\n    let node = this;\\n\\n    while (true) {\\n      if (component.name === node.nodeName) {\\n        if (component.pos === 0) {\\n          const res = node.searchNode(paths, pos + 1);\\n          if (res !== null) {\\n            return res;\\n          }\\n        } else if (stack.length === 0) {\\n          return null;\\n        } else {\\n          const [parent] = stack.pop();\\n          let siblingPos = 0;\\n          for (const child of parent.childNodes) {\\n            if (component.name === child.nodeName) {\\n              if (siblingPos === component.pos) {\\n                return child.searchNode(paths, pos + 1);\\n              }\\n              siblingPos++;\\n            }\\n          }\\n          \u002F\u002F We didn't find the correct sibling\\n          \u002F\u002F so just return the first found node\\n          return node.searchNode(paths, pos + 1);\\n        }\\n      }\\n\\n      if (node.childNodes?.length > 0) {\\n        stack.push([node, 0]);\\n        node = node.childNodes[0];\\n      } else if (stack.length === 0) {\\n        return null;\\n      } else {\\n        while (stack.length !== 0) {\\n          const [parent, currentPos] = stack.pop();\\n          const newPos = currentPos + 1;\\n          if (newPos \u003C parent.childNodes.length) {\\n            stack.push([parent, newPos]);\\n            node = parent.childNodes[newPos];\\n            break;\\n          }\\n        }\\n        if (stack.length === 0) {\\n          return null;\\n        }\\n      }\\n    }\\n  }\\n\\n  dump(buffer) {\\n    if (this.nodeName === \\\"#text\\\") {\\n      buffer.push(encodeToXmlString(this.nodeValue));\\n      return;\\n    }\\n\\n    buffer.push(`\u003C${this.nodeName}`);\\n    if (this.attributes) {\\n      for (const attribute of this.attributes) {\\n        buffer.push(\\n          ` ${attribute.name}=\\\"${encodeToXmlString(attribute.value)}\\\"`\\n        );\\n      }\\n    }\\n    if (this.hasChildNodes()) {\\n      buffer.push(\\\">\\\");\\n      for (const child of this.childNodes) {\\n        child.dump(buffer);\\n      }\\n      buffer.push(`\u003C\u002F${this.nodeName}>`);\\n    } else if (this.nodeValue) {\\n      buffer.push(`>${encodeToXmlString(this.nodeValue)}\u003C\u002F${this.nodeName}>`);\\n    } else {\\n      buffer.push(\\\"\u002F>\\\");\\n    }\\n  }\\n}\\n\\nclass SimpleXMLParser extends XMLParserBase {\\n  constructor({ hasAttributes = false, lowerCaseName = false }) {\\n    super();\\n    this._currentFragment = null;\\n    this._stack = null;\\n    this._errorCode = XMLParserErrorCode.NoError;\\n    this._hasAttributes = hasAttributes;\\n    this._lowerCaseName = lowerCaseName;\\n  }\\n\\n  parseFromString(data) {\\n    this._currentFragment = [];\\n    this._stack = [];\\n    this._errorCode = XMLParserErrorCode.NoError;\\n\\n    this.parseXml(data);\\n\\n    if (this._errorCode !== XMLParserErrorCode.NoError) {\\n      return undefined; \u002F\u002F return undefined on error\\n    }\\n\\n    \u002F\u002F We should only have one root.\\n    const [documentElement] = this._currentFragment;\\n    if (!documentElement) {\\n      return undefined; \u002F\u002F Return undefined if no root was found.\\n    }\\n    return { documentElement };\\n  }\\n\\n  onText(text) {\\n    if (isWhitespaceString(text)) {\\n      return;\\n    }\\n    const node = new SimpleDOMNode(\\\"#text\\\", text);\\n    this._currentFragment.push(node);\\n  }\\n\\n  onCdata(text) {\\n    const node = new SimpleDOMNode(\\\"#text\\\", text);\\n    this._currentFragment.push(node);\\n  }\\n\\n  onBeginElement(name, attributes, isEmpty) {\\n    if (this._lowerCaseName) {\\n      name = name.toLowerCase();\\n    }\\n    const node = new SimpleDOMNode(name);\\n    node.childNodes = [];\\n    if (this._hasAttributes) {\\n      node.attributes = attributes;\\n    }\\n    this._currentFragment.push(node);\\n    if (isEmpty) {\\n      return;\\n    }\\n    this._stack.push(this._currentFragment);\\n    this._currentFragment = node.childNodes;\\n  }\\n\\n  onEndElement(name) {\\n    this._currentFragment = this._stack.pop() || [];\\n    const lastElement = this._currentFragment.at(-1);\\n    if (!lastElement) {\\n      return null;\\n    }\\n    for (const childNode of lastElement.childNodes) {\\n      childNode.parentNode = lastElement;\\n    }\\n    return lastElement;\\n  }\\n\\n  onError(code) {\\n    this._errorCode = code;\\n  }\\n}\\n\\nexport { SimpleDOMNode, SimpleXMLParser, XMLParserBase, XMLParserErrorCode };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { SimpleXMLParser } from \\\".\u002Fxml_parser.js\\\";\\n\\nclass MetadataParser {\\n  constructor(data) {\\n    \u002F\u002F Ghostscript may produce invalid metadata, so try to repair that first.\\n    data = this._repair(data);\\n\\n    \u002F\u002F Convert the string to an XML document.\\n    const parser = new SimpleXMLParser({ lowerCaseName: true });\\n    const xmlDocument = parser.parseFromString(data);\\n\\n    this._metadataMap = new Map();\\n    this._data = data;\\n\\n    if (xmlDocument) {\\n      this._parse(xmlDocument);\\n    }\\n  }\\n\\n  _repair(data) {\\n    \u002F\u002F Start by removing any \\\"junk\\\" before the first tag (see issue 10395).\\n    return data\\n      .replace(\u002F^[^\u003C]+\u002F, \\\"\\\")\\n      .replaceAll(\u002F>\\\\\\\\376\\\\\\\\377([^\u003C]+)\u002Fg, function (all, codes) {\\n        const bytes = codes\\n          .replaceAll(\u002F\\\\\\\\([0-3])([0-7])([0-7])\u002Fg, function (code, d1, d2, d3) {\\n            return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);\\n          })\\n          .replaceAll(\u002F&(amp|apos|gt|lt|quot);\u002Fg, function (str, name) {\\n            switch (name) {\\n              case \\\"amp\\\":\\n                return \\\"&\\\";\\n              case \\\"apos\\\":\\n                return \\\"'\\\";\\n              case \\\"gt\\\":\\n                return \\\">\\\";\\n              case \\\"lt\\\":\\n                return \\\"\u003C\\\";\\n              case \\\"quot\\\":\\n                return '\\\"';\\n            }\\n            throw new Error(`_repair: ${name} isn't defined.`);\\n          });\\n\\n        const charBuf = [\\\">\\\"];\\n        for (let i = 0, ii = bytes.length; i \u003C ii; i += 2) {\\n          const code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);\\n          if (\\n            code >= \u002F* Space = *\u002F 32 &&\\n            code \u003C \u002F* Delete = *\u002F 127 &&\\n            code !== \u002F* '\u003C' = *\u002F 60 &&\\n            code !== \u002F* '>' = *\u002F 62 &&\\n            code !== \u002F* '&' = *\u002F 38\\n          ) {\\n            charBuf.push(String.fromCharCode(code));\\n          } else {\\n            charBuf.push(\\n              \\\"&#x\\\" + (0x10000 + code).toString(16).substring(1) + \\\";\\\"\\n            );\\n          }\\n        }\\n        return charBuf.join(\\\"\\\");\\n      });\\n  }\\n\\n  _getSequence(entry) {\\n    const name = entry.nodeName;\\n    if (name !== \\\"rdf:bag\\\" && name !== \\\"rdf:seq\\\" && name !== \\\"rdf:alt\\\") {\\n      return null;\\n    }\\n    return entry.childNodes.filter(node => node.nodeName === \\\"rdf:li\\\");\\n  }\\n\\n  _parseArray(entry) {\\n    if (!entry.hasChildNodes()) {\\n      return;\\n    }\\n    \u002F\u002F Child must be a Bag (unordered array) or a Seq.\\n    const [seqNode] = entry.childNodes;\\n    const sequence = this._getSequence(seqNode) || [];\\n\\n    this._metadataMap.set(\\n      entry.nodeName,\\n      sequence.map(node => node.textContent.trim())\\n    );\\n  }\\n\\n  _parse(xmlDocument) {\\n    let rdf = xmlDocument.documentElement;\\n\\n    if (rdf.nodeName !== \\\"rdf:rdf\\\") {\\n      \u002F\u002F Wrapped in \u003Cxmpmeta>\\n      rdf = rdf.firstChild;\\n      while (rdf && rdf.nodeName !== \\\"rdf:rdf\\\") {\\n        rdf = rdf.nextSibling;\\n      }\\n    }\\n\\n    if (!rdf || rdf.nodeName !== \\\"rdf:rdf\\\" || !rdf.hasChildNodes()) {\\n      return;\\n    }\\n\\n    for (const desc of rdf.childNodes) {\\n      if (desc.nodeName !== \\\"rdf:description\\\") {\\n        continue;\\n      }\\n\\n      for (const entry of desc.childNodes) {\\n        const name = entry.nodeName;\\n        switch (name) {\\n          case \\\"#text\\\":\\n            continue;\\n          case \\\"dc:creator\\\":\\n          case \\\"dc:subject\\\":\\n            this._parseArray(entry);\\n            continue;\\n        }\\n        this._metadataMap.set(name, entry.textContent.trim());\\n      }\\n    }\\n  }\\n\\n  get serializable() {\\n    return {\\n      parsedData: this._metadataMap,\\n      rawData: this._data,\\n    };\\n  }\\n}\\n\\nexport { MetadataParser };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { AnnotationPrefix, stringToPDFString, warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { Dict, isName, Name, Ref, RefSetCache } from \\\".\u002Fprimitives.js\\\";\\nimport { lookupNormalRect, stringToAsciiOrUTF16BE } from \\\".\u002Fcore_utils.js\\\";\\nimport { NumberTree } from \\\".\u002Fname_number_tree.js\\\";\\n\\nconst MAX_DEPTH = 40;\\n\\nconst StructElementType = {\\n  PAGE_CONTENT: 1,\\n  STREAM_CONTENT: 2,\\n  OBJECT: 3,\\n  ANNOTATION: 4,\\n  ELEMENT: 5,\\n};\\n\\nclass StructTreeRoot {\\n  constructor(xref, rootDict, rootRef) {\\n    this.xref = xref;\\n    this.dict = rootDict;\\n    this.ref = rootRef instanceof Ref ? rootRef : null;\\n    this.roleMap = new Map();\\n    this.structParentIds = null;\\n  }\\n\\n  init() {\\n    this.readRoleMap();\\n  }\\n\\n  #addIdToPage(pageRef, id, type) {\\n    if (!(pageRef instanceof Ref) || id \u003C 0) {\\n      return;\\n    }\\n    this.structParentIds ||= new RefSetCache();\\n    let ids = this.structParentIds.get(pageRef);\\n    if (!ids) {\\n      ids = [];\\n      this.structParentIds.put(pageRef, ids);\\n    }\\n    ids.push([id, type]);\\n  }\\n\\n  addAnnotationIdToPage(pageRef, id) {\\n    this.#addIdToPage(pageRef, id, StructElementType.ANNOTATION);\\n  }\\n\\n  readRoleMap() {\\n    const roleMapDict = this.dict.get(\\\"RoleMap\\\");\\n    if (!(roleMapDict instanceof Dict)) {\\n      return;\\n    }\\n    for (const [key, value] of roleMapDict) {\\n      if (value instanceof Name) {\\n        this.roleMap.set(key, value.name);\\n      }\\n    }\\n  }\\n\\n  static async canCreateStructureTree({\\n    catalogRef,\\n    pdfManager,\\n    newAnnotationsByPage,\\n  }) {\\n    if (!(catalogRef instanceof Ref)) {\\n      warn(\\\"Cannot save the struct tree: no catalog reference.\\\");\\n      return false;\\n    }\\n\\n    let nextKey = 0;\\n    let hasNothingToUpdate = true;\\n\\n    for (const [pageIndex, elements] of newAnnotationsByPage) {\\n      const { ref: pageRef } = await pdfManager.getPage(pageIndex);\\n      if (!(pageRef instanceof Ref)) {\\n        warn(`Cannot save the struct tree: page ${pageIndex} has no ref.`);\\n        hasNothingToUpdate = true;\\n        break;\\n      }\\n      for (const element of elements) {\\n        if (element.accessibilityData?.type) {\\n          \u002F\u002F Each tag must have a structure type.\\n          element.parentTreeId = nextKey++;\\n          hasNothingToUpdate = false;\\n        }\\n      }\\n    }\\n\\n    if (hasNothingToUpdate) {\\n      for (const elements of newAnnotationsByPage.values()) {\\n        for (const element of elements) {\\n          delete element.parentTreeId;\\n        }\\n      }\\n      return false;\\n    }\\n\\n    return true;\\n  }\\n\\n  static async createStructureTree({\\n    newAnnotationsByPage,\\n    xref,\\n    catalogRef,\\n    pdfManager,\\n    changes,\\n  }) {\\n    const root = await pdfManager.ensureCatalog(\\\"cloneDict\\\");\\n    const cache = new RefSetCache();\\n    cache.put(catalogRef, root);\\n\\n    const structTreeRootRef = xref.getNewTemporaryRef();\\n    root.set(\\\"StructTreeRoot\\\", structTreeRootRef);\\n\\n    const structTreeRoot = new Dict(xref);\\n    structTreeRoot.set(\\\"Type\\\", Name.get(\\\"StructTreeRoot\\\"));\\n    const parentTreeRef = xref.getNewTemporaryRef();\\n    structTreeRoot.set(\\\"ParentTree\\\", parentTreeRef);\\n    const kids = [];\\n    structTreeRoot.set(\\\"K\\\", kids);\\n    cache.put(structTreeRootRef, structTreeRoot);\\n\\n    const parentTree = new Dict(xref);\\n    const nums = [];\\n    parentTree.set(\\\"Nums\\\", nums);\\n\\n    const nextKey = await this.#writeKids({\\n      newAnnotationsByPage,\\n      structTreeRootRef,\\n      structTreeRoot: null,\\n      kids,\\n      nums,\\n      xref,\\n      pdfManager,\\n      changes,\\n      cache,\\n    });\\n    structTreeRoot.set(\\\"ParentTreeNextKey\\\", nextKey);\\n\\n    cache.put(parentTreeRef, parentTree);\\n\\n    for (const [ref, obj] of cache.items()) {\\n      changes.put(ref, {\\n        data: obj,\\n      });\\n    }\\n  }\\n\\n  async canUpdateStructTree({ pdfManager, newAnnotationsByPage }) {\\n    if (!this.ref) {\\n      warn(\\\"Cannot update the struct tree: no root reference.\\\");\\n      return false;\\n    }\\n\\n    let nextKey = this.dict.get(\\\"ParentTreeNextKey\\\");\\n    if (!Number.isInteger(nextKey) || nextKey \u003C 0) {\\n      warn(\\\"Cannot update the struct tree: invalid next key.\\\");\\n      return false;\\n    }\\n\\n    const parentTree = this.dict.get(\\\"ParentTree\\\");\\n    if (!(parentTree instanceof Dict)) {\\n      warn(\\\"Cannot update the struct tree: ParentTree isn't a dict.\\\");\\n      return false;\\n    }\\n    const nums = parentTree.get(\\\"Nums\\\");\\n    if (!Array.isArray(nums)) {\\n      warn(\\\"Cannot update the struct tree: nums isn't an array.\\\");\\n      return false;\\n    }\\n    const numberTree = new NumberTree(parentTree, this.xref);\\n\\n    for (const pageIndex of newAnnotationsByPage.keys()) {\\n      const { pageDict } = await pdfManager.getPage(pageIndex);\\n      if (!pageDict.has(\\\"StructParents\\\")) {\\n        \u002F\u002F StructParents is required when the content stream has some tagged\\n        \u002F\u002F contents but a page can just have tagged annotations.\\n        continue;\\n      }\\n      const id = pageDict.get(\\\"StructParents\\\");\\n      if (!Number.isInteger(id) || !Array.isArray(numberTree.get(id))) {\\n        warn(`Cannot save the struct tree: page ${pageIndex} has a wrong id.`);\\n        return false;\\n      }\\n    }\\n\\n    let hasNothingToUpdate = true;\\n    for (const [pageIndex, elements] of newAnnotationsByPage) {\\n      const { pageDict } = await pdfManager.getPage(pageIndex);\\n      StructTreeRoot.#collectParents({\\n        elements,\\n        xref: this.xref,\\n        pageDict,\\n        numberTree,\\n      });\\n\\n      for (const element of elements) {\\n        if (element.accessibilityData?.type) {\\n          \u002F\u002F structParent can be undefined and in this case the positivity check\\n          \u002F\u002F will fail (it's why the expression isn't equivalent to a `.\u003C.`).\\n          if (!(element.accessibilityData.structParent >= 0)) {\\n            \u002F\u002F Each tag must have a structure type.\\n            element.parentTreeId = nextKey++;\\n          }\\n          hasNothingToUpdate = false;\\n        }\\n      }\\n    }\\n\\n    if (hasNothingToUpdate) {\\n      for (const elements of newAnnotationsByPage.values()) {\\n        for (const element of elements) {\\n          delete element.parentTreeId;\\n          delete element.structTreeParent;\\n        }\\n      }\\n      return false;\\n    }\\n\\n    return true;\\n  }\\n\\n  async updateStructureTree({ newAnnotationsByPage, pdfManager, changes }) {\\n    const { ref: structTreeRootRef, xref } = this;\\n    const structTreeRoot = this.dict.clone();\\n    const cache = new RefSetCache();\\n    cache.put(structTreeRootRef, structTreeRoot);\\n\\n    let parentTreeRef = structTreeRoot.getRaw(\\\"ParentTree\\\");\\n    let parentTree;\\n    if (parentTreeRef instanceof Ref) {\\n      parentTree = xref.fetch(parentTreeRef);\\n    } else {\\n      parentTree = parentTreeRef;\\n      parentTreeRef = xref.getNewTemporaryRef();\\n      structTreeRoot.set(\\\"ParentTree\\\", parentTreeRef);\\n    }\\n    parentTree = parentTree.clone();\\n    cache.put(parentTreeRef, parentTree);\\n\\n    let nums = parentTree.getRaw(\\\"Nums\\\");\\n    let numsRef = null;\\n    if (nums instanceof Ref) {\\n      numsRef = nums;\\n      nums = xref.fetch(numsRef);\\n    }\\n    nums = nums.slice();\\n    if (!numsRef) {\\n      parentTree.set(\\\"Nums\\\", nums);\\n    }\\n\\n    const newNextKey = await StructTreeRoot.#writeKids({\\n      newAnnotationsByPage,\\n      structTreeRootRef,\\n      structTreeRoot: this,\\n      kids: null,\\n      nums,\\n      xref,\\n      pdfManager,\\n      changes,\\n      cache,\\n    });\\n\\n    if (newNextKey === -1) {\\n      \u002F\u002F No new tags were added.\\n      return;\\n    }\\n\\n    structTreeRoot.set(\\\"ParentTreeNextKey\\\", newNextKey);\\n\\n    if (numsRef) {\\n      cache.put(numsRef, nums);\\n    }\\n\\n    for (const [ref, obj] of cache.items()) {\\n      changes.put(ref, {\\n        data: obj,\\n      });\\n    }\\n  }\\n\\n  static async #writeKids({\\n    newAnnotationsByPage,\\n    structTreeRootRef,\\n    structTreeRoot,\\n    kids,\\n    nums,\\n    xref,\\n    pdfManager,\\n    changes,\\n    cache,\\n  }) {\\n    const objr = Name.get(\\\"OBJR\\\");\\n    let nextKey = -1;\\n    let structTreePageObjs;\\n\\n    for (const [pageIndex, elements] of newAnnotationsByPage) {\\n      const page = await pdfManager.getPage(pageIndex);\\n      const { ref: pageRef } = page;\\n      const isPageRef = pageRef instanceof Ref;\\n      for (const {\\n        accessibilityData,\\n        ref,\\n        parentTreeId,\\n        structTreeParent,\\n      } of elements) {\\n        if (!accessibilityData?.type) {\\n          continue;\\n        }\\n\\n        \u002F\u002F We've some accessibility data, so we need to create a new tag or\\n        \u002F\u002F update an existing one.\\n        const { structParent } = accessibilityData;\\n\\n        if (\\n          structTreeRoot &&\\n          Number.isInteger(structParent) &&\\n          structParent >= 0\\n        ) {\\n          let objs = (structTreePageObjs ||= new Map()).get(pageIndex);\\n          if (objs === undefined) {\\n            \u002F\u002F We need to collect the objects for the page.\\n            const structTreePage = new StructTreePage(\\n              structTreeRoot,\\n              page.pageDict\\n            );\\n            objs = structTreePage.collectObjects(pageRef);\\n            structTreePageObjs.set(pageIndex, objs);\\n          }\\n          const objRef = objs?.get(structParent);\\n          if (objRef) {\\n            \u002F\u002F We update the existing tag.\\n            const tagDict = xref.fetch(objRef).clone();\\n            StructTreeRoot.#writeProperties(tagDict, accessibilityData);\\n            changes.put(objRef, {\\n              data: tagDict,\\n            });\\n            continue;\\n          }\\n        }\\n        nextKey = Math.max(nextKey, parentTreeId);\\n\\n        const tagRef = xref.getNewTemporaryRef();\\n        const tagDict = new Dict(xref);\\n\\n        StructTreeRoot.#writeProperties(tagDict, accessibilityData);\\n\\n        await this.#updateParentTag({\\n          structTreeParent,\\n          tagDict,\\n          newTagRef: tagRef,\\n          structTreeRootRef,\\n          fallbackKids: kids,\\n          xref,\\n          cache,\\n        });\\n\\n        const objDict = new Dict(xref);\\n        tagDict.set(\\\"K\\\", objDict);\\n        objDict.set(\\\"Type\\\", objr);\\n        if (isPageRef) {\\n          \u002F\u002F Pg is optional.\\n          objDict.set(\\\"Pg\\\", pageRef);\\n        }\\n        objDict.set(\\\"Obj\\\", ref);\\n\\n        cache.put(tagRef, tagDict);\\n        nums.push(parentTreeId, tagRef);\\n      }\\n    }\\n    return nextKey + 1;\\n  }\\n\\n  static #writeProperties(\\n    tagDict,\\n    { type, title, lang, alt, expanded, actualText }\\n  ) {\\n    \u002F\u002F The structure type is required.\\n    tagDict.set(\\\"S\\\", Name.get(type));\\n\\n    if (title) {\\n      tagDict.set(\\\"T\\\", stringToAsciiOrUTF16BE(title));\\n    }\\n    if (lang) {\\n      tagDict.set(\\\"Lang\\\", stringToAsciiOrUTF16BE(lang));\\n    }\\n    if (alt) {\\n      tagDict.set(\\\"Alt\\\", stringToAsciiOrUTF16BE(alt));\\n    }\\n    if (expanded) {\\n      tagDict.set(\\\"E\\\", stringToAsciiOrUTF16BE(expanded));\\n    }\\n    if (actualText) {\\n      tagDict.set(\\\"ActualText\\\", stringToAsciiOrUTF16BE(actualText));\\n    }\\n  }\\n\\n  static #collectParents({ elements, xref, pageDict, numberTree }) {\\n    const idToElements = new Map();\\n    for (const element of elements) {\\n      if (element.structTreeParentId) {\\n        const id = parseInt(element.structTreeParentId.split(\\\"_mc\\\")[1], 10);\\n        let elems = idToElements.get(id);\\n        if (!elems) {\\n          elems = [];\\n          idToElements.set(id, elems);\\n        }\\n        elems.push(element);\\n      }\\n    }\\n\\n    const id = pageDict.get(\\\"StructParents\\\");\\n    if (!Number.isInteger(id)) {\\n      return;\\n    }\\n    \u002F\u002F The parentArray type has already been checked by the caller.\\n    const parentArray = numberTree.get(id);\\n\\n    const updateElement = (kid, pageKid, kidRef) => {\\n      const elems = idToElements.get(kid);\\n      if (elems) {\\n        const parentRef = pageKid.getRaw(\\\"P\\\");\\n        const parentDict = xref.fetchIfRef(parentRef);\\n        if (parentRef instanceof Ref && parentDict instanceof Dict) {\\n          \u002F\u002F It should always the case, but we check just in case.\\n          const params = { ref: kidRef, dict: pageKid };\\n          for (const element of elems) {\\n            element.structTreeParent = params;\\n          }\\n        }\\n        return true;\\n      }\\n      return false;\\n    };\\n    for (const kidRef of parentArray) {\\n      if (!(kidRef instanceof Ref)) {\\n        continue;\\n      }\\n      const pageKid = xref.fetch(kidRef);\\n      const k = pageKid.get(\\\"K\\\");\\n      if (Number.isInteger(k)) {\\n        updateElement(k, pageKid, kidRef);\\n        continue;\\n      }\\n\\n      if (!Array.isArray(k)) {\\n        continue;\\n      }\\n      for (let kid of k) {\\n        kid = xref.fetchIfRef(kid);\\n        if (Number.isInteger(kid) && updateElement(kid, pageKid, kidRef)) {\\n          break;\\n        }\\n        if (!(kid instanceof Dict)) {\\n          continue;\\n        }\\n        if (!isName(kid.get(\\\"Type\\\"), \\\"MCR\\\")) {\\n          break;\\n        }\\n        const mcid = kid.get(\\\"MCID\\\");\\n        if (Number.isInteger(mcid) && updateElement(mcid, pageKid, kidRef)) {\\n          break;\\n        }\\n      }\\n    }\\n  }\\n\\n  static async #updateParentTag({\\n    structTreeParent,\\n    tagDict,\\n    newTagRef,\\n    structTreeRootRef,\\n    fallbackKids,\\n    xref,\\n    cache,\\n  }) {\\n    let ref = null;\\n    let parentRef;\\n    if (structTreeParent) {\\n      ({ ref } = structTreeParent);\\n\\n      \u002F\u002F We get the parent of the tag.\\n      parentRef = structTreeParent.dict.getRaw(\\\"P\\\") || structTreeRootRef;\\n    } else {\\n      parentRef = structTreeRootRef;\\n    }\\n\\n    tagDict.set(\\\"P\\\", parentRef);\\n\\n    \u002F\u002F We get the kids in order to insert a new tag at the right position.\\n    const parentDict = xref.fetchIfRef(parentRef);\\n    if (!parentDict) {\\n      fallbackKids.push(newTagRef);\\n      return;\\n    }\\n\\n    let cachedParentDict = cache.get(parentRef);\\n    if (!cachedParentDict) {\\n      cachedParentDict = parentDict.clone();\\n      cache.put(parentRef, cachedParentDict);\\n    }\\n    const parentKidsRaw = cachedParentDict.getRaw(\\\"K\\\");\\n    let cachedParentKids =\\n      parentKidsRaw instanceof Ref ? cache.get(parentKidsRaw) : null;\\n    if (!cachedParentKids) {\\n      cachedParentKids = xref.fetchIfRef(parentKidsRaw);\\n      cachedParentKids = Array.isArray(cachedParentKids)\\n        ? cachedParentKids.slice()\\n        : [parentKidsRaw];\\n      const parentKidsRef = xref.getNewTemporaryRef();\\n      cachedParentDict.set(\\\"K\\\", parentKidsRef);\\n      cache.put(parentKidsRef, cachedParentKids);\\n    }\\n\\n    const index = cachedParentKids.indexOf(ref);\\n    cachedParentKids.splice(\\n      index >= 0 ? index + 1 : cachedParentKids.length,\\n      0,\\n      newTagRef\\n    );\\n  }\\n}\\n\\n\u002F**\\n * Instead of loading the whole tree we load just the page's relevant structure\\n * elements, which means we need a wrapper structure to represent the tree.\\n *\u002F\\nclass StructElementNode {\\n  constructor(tree, dict) {\\n    this.tree = tree;\\n    this.xref = tree.xref;\\n    this.dict = dict;\\n    this.kids = [];\\n    this.parseKids();\\n  }\\n\\n  get role() {\\n    const nameObj = this.dict.get(\\\"S\\\");\\n    const name = nameObj instanceof Name ? nameObj.name : \\\"\\\";\\n    const { root } = this.tree;\\n    return root.roleMap.get(name) ?? name;\\n  }\\n\\n  parseKids() {\\n    let pageObjId = null;\\n    const objRef = this.dict.getRaw(\\\"Pg\\\");\\n    if (objRef instanceof Ref) {\\n      pageObjId = objRef.toString();\\n    }\\n    const kids = this.dict.get(\\\"K\\\");\\n    if (Array.isArray(kids)) {\\n      for (const kid of kids) {\\n        const element = this.parseKid(pageObjId, this.xref.fetchIfRef(kid));\\n        if (element) {\\n          this.kids.push(element);\\n        }\\n      }\\n    } else {\\n      const element = this.parseKid(pageObjId, kids);\\n      if (element) {\\n        this.kids.push(element);\\n      }\\n    }\\n  }\\n\\n  parseKid(pageObjId, kid) {\\n    \u002F\u002F A direct link to content, the integer is an mcid.\\n    if (Number.isInteger(kid)) {\\n      if (this.tree.pageDict.objId !== pageObjId) {\\n        return null;\\n      }\\n\\n      return new StructElement({\\n        type: StructElementType.PAGE_CONTENT,\\n        mcid: kid,\\n        pageObjId,\\n      });\\n    }\\n\\n    if (!(kid instanceof Dict)) {\\n      return null;\\n    }\\n\\n    const pageRef = kid.getRaw(\\\"Pg\\\");\\n    if (pageRef instanceof Ref) {\\n      pageObjId = pageRef.toString();\\n    }\\n\\n    const type = kid.get(\\\"Type\\\") instanceof Name ? kid.get(\\\"Type\\\").name : null;\\n    if (type === \\\"MCR\\\") {\\n      if (this.tree.pageDict.objId !== pageObjId) {\\n        return null;\\n      }\\n      const kidRef = kid.getRaw(\\\"Stm\\\");\\n      return new StructElement({\\n        type: StructElementType.STREAM_CONTENT,\\n        refObjId: kidRef instanceof Ref ? kidRef.toString() : null,\\n        pageObjId,\\n        mcid: kid.get(\\\"MCID\\\"),\\n      });\\n    }\\n\\n    if (type === \\\"OBJR\\\") {\\n      if (this.tree.pageDict.objId !== pageObjId) {\\n        return null;\\n      }\\n      const kidRef = kid.getRaw(\\\"Obj\\\");\\n      return new StructElement({\\n        type: StructElementType.OBJECT,\\n        refObjId: kidRef instanceof Ref ? kidRef.toString() : null,\\n        pageObjId,\\n      });\\n    }\\n\\n    return new StructElement({\\n      type: StructElementType.ELEMENT,\\n      dict: kid,\\n    });\\n  }\\n}\\n\\nclass StructElement {\\n  constructor({\\n    type,\\n    dict = null,\\n    mcid = null,\\n    pageObjId = null,\\n    refObjId = null,\\n  }) {\\n    this.type = type;\\n    this.dict = dict;\\n    this.mcid = mcid;\\n    this.pageObjId = pageObjId;\\n    this.refObjId = refObjId;\\n    this.parentNode = null;\\n  }\\n}\\n\\nclass StructTreePage {\\n  constructor(structTreeRoot, pageDict) {\\n    this.root = structTreeRoot;\\n    this.xref = structTreeRoot?.xref ?? null;\\n    this.rootDict = structTreeRoot?.dict ?? null;\\n    this.pageDict = pageDict;\\n    this.nodes = [];\\n  }\\n\\n  \u002F**\\n   * Collect all the objects (i.e. tag) that are part of the page and return a\\n   * map of the structure element id to the object reference.\\n   * @param {Ref} pageRef\\n   * @returns {Map\u003Cnumber, Ref>}\\n   *\u002F\\n  collectObjects(pageRef) {\\n    if (!this.root || !this.rootDict || !(pageRef instanceof Ref)) {\\n      return null;\\n    }\\n\\n    const parentTree = this.rootDict.get(\\\"ParentTree\\\");\\n    if (!parentTree) {\\n      return null;\\n    }\\n    const ids = this.root.structParentIds?.get(pageRef);\\n    if (!ids) {\\n      return null;\\n    }\\n\\n    const map = new Map();\\n    const numberTree = new NumberTree(parentTree, this.xref);\\n\\n    for (const [elemId] of ids) {\\n      const obj = numberTree.getRaw(elemId);\\n      if (obj instanceof Ref) {\\n        map.set(elemId, obj);\\n      }\\n    }\\n    return map;\\n  }\\n\\n  parse(pageRef) {\\n    if (!this.root || !this.rootDict || !(pageRef instanceof Ref)) {\\n      return;\\n    }\\n\\n    const parentTree = this.rootDict.get(\\\"ParentTree\\\");\\n    if (!parentTree) {\\n      return;\\n    }\\n    const id = this.pageDict.get(\\\"StructParents\\\");\\n    const ids = this.root.structParentIds?.get(pageRef);\\n    if (!Number.isInteger(id) && !ids) {\\n      return;\\n    }\\n\\n    const map = new Map();\\n    const numberTree = new NumberTree(parentTree, this.xref);\\n\\n    if (Number.isInteger(id)) {\\n      const parentArray = numberTree.get(id);\\n      if (Array.isArray(parentArray)) {\\n        for (const ref of parentArray) {\\n          if (ref instanceof Ref) {\\n            this.addNode(this.xref.fetch(ref), map);\\n          }\\n        }\\n      }\\n    }\\n\\n    if (!ids) {\\n      return;\\n    }\\n    for (const [elemId, type] of ids) {\\n      const obj = numberTree.get(elemId);\\n      if (obj) {\\n        const elem = this.addNode(this.xref.fetchIfRef(obj), map);\\n        if (\\n          elem?.kids?.length === 1 &&\\n          elem.kids[0].type === StructElementType.OBJECT\\n        ) {\\n          \u002F\u002F The node in the struct tree is wrapping an object (annotation\\n          \u002F\u002F or xobject), so we need to update the type of the node to match\\n          \u002F\u002F the type of the object.\\n          elem.kids[0].type = type;\\n        }\\n      }\\n    }\\n  }\\n\\n  addNode(dict, map, level = 0) {\\n    if (level > MAX_DEPTH) {\\n      warn(\\\"StructTree MAX_DEPTH reached.\\\");\\n      return null;\\n    }\\n    if (!(dict instanceof Dict)) {\\n      return null;\\n    }\\n\\n    if (map.has(dict)) {\\n      return map.get(dict);\\n    }\\n\\n    const element = new StructElementNode(this, dict);\\n    map.set(dict, element);\\n\\n    const parent = dict.get(\\\"P\\\");\\n\\n    if (\\n      !(parent instanceof Dict) ||\\n      isName(parent.get(\\\"Type\\\"), \\\"StructTreeRoot\\\")\\n    ) {\\n      if (!this.addTopLevelNode(dict, element)) {\\n        map.delete(dict);\\n      }\\n      return element;\\n    }\\n\\n    const parentNode = this.addNode(parent, map, level + 1);\\n    if (!parentNode) {\\n      return element;\\n    }\\n    let save = false;\\n    for (const kid of parentNode.kids) {\\n      if (kid.type === StructElementType.ELEMENT && kid.dict === dict) {\\n        kid.parentNode = element;\\n        save = true;\\n      }\\n    }\\n    if (!save) {\\n      map.delete(dict);\\n    }\\n    return element;\\n  }\\n\\n  addTopLevelNode(dict, element) {\\n    const obj = this.rootDict.get(\\\"K\\\");\\n    if (!obj) {\\n      return false;\\n    }\\n\\n    if (obj instanceof Dict) {\\n      if (obj.objId !== dict.objId) {\\n        return false;\\n      }\\n      this.nodes[0] = element;\\n      return true;\\n    }\\n\\n    if (!Array.isArray(obj)) {\\n      return true;\\n    }\\n    let save = false;\\n    for (let i = 0; i \u003C obj.length; i++) {\\n      const kidRef = obj[i];\\n      if (kidRef?.toString() === dict.objId) {\\n        this.nodes[i] = element;\\n        save = true;\\n      }\\n    }\\n    return save;\\n  }\\n\\n  \u002F**\\n   * Convert the tree structure into a simplified object literal that can\\n   * be sent to the main thread.\\n   * @returns {Object}\\n   *\u002F\\n  get serializable() {\\n    function nodeToSerializable(node, parent, level = 0) {\\n      if (level > MAX_DEPTH) {\\n        warn(\\\"StructTree too deep to be fully serialized.\\\");\\n        return;\\n      }\\n      const obj = Object.create(null);\\n      obj.role = node.role;\\n      obj.children = [];\\n      parent.children.push(obj);\\n      let alt = node.dict.get(\\\"Alt\\\");\\n      if (typeof alt !== \\\"string\\\") {\\n        alt = node.dict.get(\\\"ActualText\\\");\\n      }\\n      if (typeof alt === \\\"string\\\") {\\n        obj.alt = stringToPDFString(alt);\\n      }\\n\\n      const a = node.dict.get(\\\"A\\\");\\n      if (a instanceof Dict) {\\n        const bbox = lookupNormalRect(a.getArray(\\\"BBox\\\"), null);\\n        if (bbox) {\\n          obj.bbox = bbox;\\n        } else {\\n          const width = a.get(\\\"Width\\\");\\n          const height = a.get(\\\"Height\\\");\\n          if (\\n            typeof width === \\\"number\\\" &&\\n            width > 0 &&\\n            typeof height === \\\"number\\\" &&\\n            height > 0\\n          ) {\\n            obj.bbox = [0, 0, width, height];\\n          }\\n        }\\n        \u002F\u002F TODO: If the bbox is not available, we should try to get it from\\n        \u002F\u002F the content stream.\\n        \u002F\u002F For example when rendering on the canvas the commands between the\\n        \u002F\u002F beginning and the end of the marked-content sequence, we can\\n        \u002F\u002F compute the overall bbox.\\n      }\\n\\n      const lang = node.dict.get(\\\"Lang\\\");\\n      if (typeof lang === \\\"string\\\") {\\n        obj.lang = stringToPDFString(lang);\\n      }\\n\\n      for (const kid of node.kids) {\\n        const kidElement =\\n          kid.type === StructElementType.ELEMENT ? kid.parentNode : null;\\n        if (kidElement) {\\n          nodeToSerializable(kidElement, obj, level + 1);\\n          continue;\\n        } else if (\\n          kid.type === StructElementType.PAGE_CONTENT ||\\n          kid.type === StructElementType.STREAM_CONTENT\\n        ) {\\n          obj.children.push({\\n            type: \\\"content\\\",\\n            id: `p${kid.pageObjId}_mc${kid.mcid}`,\\n          });\\n        } else if (kid.type === StructElementType.OBJECT) {\\n          obj.children.push({\\n            type: \\\"object\\\",\\n            id: kid.refObjId,\\n          });\\n        } else if (kid.type === StructElementType.ANNOTATION) {\\n          obj.children.push({\\n            type: \\\"annotation\\\",\\n            id: `${AnnotationPrefix}${kid.refObjId}`,\\n          });\\n        }\\n      }\\n    }\\n\\n    const root = Object.create(null);\\n    root.children = [];\\n    root.role = \\\"Root\\\";\\n    for (const child of this.nodes) {\\n      if (!child) {\\n        continue;\\n      }\\n      nodeToSerializable(child, root);\\n    }\\n    return root;\\n  }\\n}\\n\\nexport { StructTreePage, StructTreeRoot };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  _isValidExplicitDest,\\n  createValidAbsoluteUrl,\\n  DocumentActionEventType,\\n  FormatError,\\n  info,\\n  objectSize,\\n  PermissionFlag,\\n  shadow,\\n  stringToPDFString,\\n  stringToUTF8String,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  collectActions,\\n  isNumberArray,\\n  MissingDataException,\\n  PDF_VERSION_REGEXP,\\n  recoverJsURL,\\n  toRomanNumerals,\\n  XRefEntryException,\\n} from \\\".\u002Fcore_utils.js\\\";\\nimport {\\n  Dict,\\n  isDict,\\n  isName,\\n  isRefsEqual,\\n  Name,\\n  Ref,\\n  RefSet,\\n  RefSetCache,\\n} from \\\".\u002Fprimitives.js\\\";\\nimport { GlobalColorSpaceCache, GlobalImageCache } from \\\".\u002Fimage_utils.js\\\";\\nimport { NameTree, NumberTree } from \\\".\u002Fname_number_tree.js\\\";\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { clearGlobalCaches } from \\\".\u002Fcleanup_helper.js\\\";\\nimport { ColorSpaceUtils } from \\\".\u002Fcolorspace_utils.js\\\";\\nimport { FileSpec } from \\\".\u002Ffile_spec.js\\\";\\nimport { MetadataParser } from \\\".\u002Fmetadata_parser.js\\\";\\nimport { StructTreeRoot } from \\\".\u002Fstruct_tree.js\\\";\\n\\nconst isRef = v => v instanceof Ref;\\n\\nconst isValidExplicitDest = _isValidExplicitDest.bind(\\n  null,\\n  \u002F* validRef = *\u002F isRef,\\n  \u002F* validName = *\u002F isName\\n);\\n\\nfunction fetchDest(dest) {\\n  if (dest instanceof Dict) {\\n    dest = dest.get(\\\"D\\\");\\n  }\\n  return isValidExplicitDest(dest) ? dest : null;\\n}\\n\\nfunction fetchRemoteDest(action) {\\n  let dest = action.get(\\\"D\\\");\\n  if (dest) {\\n    if (dest instanceof Name) {\\n      dest = dest.name;\\n    }\\n    if (typeof dest === \\\"string\\\") {\\n      return stringToPDFString(dest, \u002F* keepEscapeSequence = *\u002F true);\\n    } else if (isValidExplicitDest(dest)) {\\n      return JSON.stringify(dest);\\n    }\\n  }\\n  return null;\\n}\\n\\nclass Catalog {\\n  #actualNumPages = null;\\n\\n  #catDict = null;\\n\\n  builtInCMapCache = new Map();\\n\\n  fontCache = new RefSetCache();\\n\\n  globalColorSpaceCache = new GlobalColorSpaceCache();\\n\\n  globalImageCache = new GlobalImageCache();\\n\\n  nonBlendModesSet = new RefSet();\\n\\n  pageDictCache = new RefSetCache();\\n\\n  pageIndexCache = new RefSetCache();\\n\\n  pageKidsCountCache = new RefSetCache();\\n\\n  standardFontDataCache = new Map();\\n\\n  systemFontCache = new Map();\\n\\n  constructor(pdfManager, xref) {\\n    this.pdfManager = pdfManager;\\n    this.xref = xref;\\n\\n    this.#catDict = xref.getCatalogObj();\\n    if (!(this.#catDict instanceof Dict)) {\\n      throw new FormatError(\\\"Catalog object is not a dictionary.\\\");\\n    }\\n    \u002F\u002F Given that `XRef.parse` will both fetch *and* validate the \u002FPages-entry,\\n    \u002F\u002F the following call must always succeed here:\\n    this.toplevelPagesDict; \u002F\u002F eslint-disable-line no-unused-expressions\\n  }\\n\\n  cloneDict() {\\n    return this.#catDict.clone();\\n  }\\n\\n  get version() {\\n    const version = this.#catDict.get(\\\"Version\\\");\\n    if (version instanceof Name) {\\n      if (PDF_VERSION_REGEXP.test(version.name)) {\\n        return shadow(this, \\\"version\\\", version.name);\\n      }\\n      warn(`Invalid PDF catalog version: ${version.name}`);\\n    }\\n    return shadow(this, \\\"version\\\", null);\\n  }\\n\\n  get lang() {\\n    const lang = this.#catDict.get(\\\"Lang\\\");\\n    return shadow(\\n      this,\\n      \\\"lang\\\",\\n      lang && typeof lang === \\\"string\\\" ? stringToPDFString(lang) : null\\n    );\\n  }\\n\\n  \u002F**\\n   * @type {boolean} `true` for pure XFA documents,\\n   *   `false` for XFA Foreground documents.\\n   *\u002F\\n  get needsRendering() {\\n    const needsRendering = this.#catDict.get(\\\"NeedsRendering\\\");\\n    return shadow(\\n      this,\\n      \\\"needsRendering\\\",\\n      typeof needsRendering === \\\"boolean\\\" ? needsRendering : false\\n    );\\n  }\\n\\n  get collection() {\\n    let collection = null;\\n    try {\\n      const obj = this.#catDict.get(\\\"Collection\\\");\\n      if (obj instanceof Dict && obj.size > 0) {\\n        collection = obj;\\n      }\\n    } catch (ex) {\\n      if (ex instanceof MissingDataException) {\\n        throw ex;\\n      }\\n      info(\\\"Cannot fetch Collection entry; assuming no collection is present.\\\");\\n    }\\n    return shadow(this, \\\"collection\\\", collection);\\n  }\\n\\n  get acroForm() {\\n    let acroForm = null;\\n    try {\\n      const obj = this.#catDict.get(\\\"AcroForm\\\");\\n      if (obj instanceof Dict && obj.size > 0) {\\n        acroForm = obj;\\n      }\\n    } catch (ex) {\\n      if (ex instanceof MissingDataException) {\\n        throw ex;\\n      }\\n      info(\\\"Cannot fetch AcroForm entry; assuming no forms are present.\\\");\\n    }\\n    return shadow(this, \\\"acroForm\\\", acroForm);\\n  }\\n\\n  get acroFormRef() {\\n    const value = this.#catDict.getRaw(\\\"AcroForm\\\");\\n    return shadow(this, \\\"acroFormRef\\\", value instanceof Ref ? value : null);\\n  }\\n\\n  get metadata() {\\n    const streamRef = this.#catDict.getRaw(\\\"Metadata\\\");\\n    if (!(streamRef instanceof Ref)) {\\n      return shadow(this, \\\"metadata\\\", null);\\n    }\\n\\n    let metadata = null;\\n    try {\\n      const stream = this.xref.fetch(\\n        streamRef,\\n        \u002F* suppressEncryption = *\u002F !this.xref.encrypt?.encryptMetadata\\n      );\\n\\n      if (stream instanceof BaseStream && stream.dict instanceof Dict) {\\n        const type = stream.dict.get(\\\"Type\\\");\\n        const subtype = stream.dict.get(\\\"Subtype\\\");\\n\\n        if (isName(type, \\\"Metadata\\\") && isName(subtype, \\\"XML\\\")) {\\n          \u002F\u002F XXX: This should examine the charset the XML document defines,\\n          \u002F\u002F however since there are currently no real means to decode arbitrary\\n          \u002F\u002F charsets, let's just hope that the author of the PDF was reasonable\\n          \u002F\u002F enough to stick with the XML default charset, which is UTF-8.\\n          const data = stringToUTF8String(stream.getString());\\n          if (data) {\\n            metadata = new MetadataParser(data).serializable;\\n          }\\n        }\\n      }\\n    } catch (ex) {\\n      if (ex instanceof MissingDataException) {\\n        throw ex;\\n      }\\n      info(`Skipping invalid Metadata: \\\"${ex}\\\".`);\\n    }\\n    return shadow(this, \\\"metadata\\\", metadata);\\n  }\\n\\n  get markInfo() {\\n    let markInfo = null;\\n    try {\\n      markInfo = this.#readMarkInfo();\\n    } catch (ex) {\\n      if (ex instanceof MissingDataException) {\\n        throw ex;\\n      }\\n      warn(\\\"Unable to read mark info.\\\");\\n    }\\n    return shadow(this, \\\"markInfo\\\", markInfo);\\n  }\\n\\n  #readMarkInfo() {\\n    const obj = this.#catDict.get(\\\"MarkInfo\\\");\\n    if (!(obj instanceof Dict)) {\\n      return null;\\n    }\\n\\n    const markInfo = {\\n      Marked: false,\\n      UserProperties: false,\\n      Suspects: false,\\n    };\\n    for (const key in markInfo) {\\n      const value = obj.get(key);\\n      if (typeof value === \\\"boolean\\\") {\\n        markInfo[key] = value;\\n      }\\n    }\\n\\n    return markInfo;\\n  }\\n\\n  get structTreeRoot() {\\n    let structTree = null;\\n    try {\\n      structTree = this.#readStructTreeRoot();\\n    } catch (ex) {\\n      if (ex instanceof MissingDataException) {\\n        throw ex;\\n      }\\n      warn(\\\"Unable read to structTreeRoot info.\\\");\\n    }\\n    return shadow(this, \\\"structTreeRoot\\\", structTree);\\n  }\\n\\n  #readStructTreeRoot() {\\n    const rawObj = this.#catDict.getRaw(\\\"StructTreeRoot\\\");\\n    const obj = this.xref.fetchIfRef(rawObj);\\n    if (!(obj instanceof Dict)) {\\n      return null;\\n    }\\n\\n    const root = new StructTreeRoot(this.xref, obj, rawObj);\\n    root.init();\\n    return root;\\n  }\\n\\n  get toplevelPagesDict() {\\n    const pagesObj = this.#catDict.get(\\\"Pages\\\");\\n    if (!(pagesObj instanceof Dict)) {\\n      throw new FormatError(\\\"Invalid top-level pages dictionary.\\\");\\n    }\\n    return shadow(this, \\\"toplevelPagesDict\\\", pagesObj);\\n  }\\n\\n  get documentOutline() {\\n    let obj = null;\\n    try {\\n      obj = this.#readDocumentOutline();\\n    } catch (ex) {\\n      if (ex instanceof MissingDataException) {\\n        throw ex;\\n      }\\n      warn(\\\"Unable to read document outline.\\\");\\n    }\\n    return shadow(this, \\\"documentOutline\\\", obj);\\n  }\\n\\n  #readDocumentOutline() {\\n    let obj = this.#catDict.get(\\\"Outlines\\\");\\n    if (!(obj instanceof Dict)) {\\n      return null;\\n    }\\n    obj = obj.getRaw(\\\"First\\\");\\n    if (!(obj instanceof Ref)) {\\n      return null;\\n    }\\n\\n    const root = { items: [] };\\n    const queue = [{ obj, parent: root }];\\n    \u002F\u002F To avoid recursion, keep track of the already processed items.\\n    const processed = new RefSet();\\n    processed.put(obj);\\n    const xref = this.xref,\\n      blackColor = new Uint8ClampedArray(3);\\n\\n    while (queue.length > 0) {\\n      const i = queue.shift();\\n      const outlineDict = xref.fetchIfRef(i.obj);\\n      if (outlineDict === null) {\\n        continue;\\n      }\\n      if (!outlineDict.has(\\\"Title\\\")) {\\n        warn(\\\"Invalid outline item encountered.\\\");\\n      }\\n\\n      const data = { url: null, dest: null, action: null };\\n      Catalog.parseDestDictionary({\\n        destDict: outlineDict,\\n        resultObj: data,\\n        docBaseUrl: this.baseUrl,\\n        docAttachments: this.attachments,\\n      });\\n      const title = outlineDict.get(\\\"Title\\\");\\n      const flags = outlineDict.get(\\\"F\\\") || 0;\\n      const color = outlineDict.getArray(\\\"C\\\");\\n      const count = outlineDict.get(\\\"Count\\\");\\n      let rgbColor = blackColor;\\n\\n      \u002F\u002F We only need to parse the color when it's valid, and non-default.\\n      if (\\n        isNumberArray(color, 3) &&\\n        (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)\\n      ) {\\n        rgbColor = ColorSpaceUtils.rgb.getRgb(color, 0);\\n      }\\n\\n      const outlineItem = {\\n        action: data.action,\\n        attachment: data.attachment,\\n        dest: data.dest,\\n        url: data.url,\\n        unsafeUrl: data.unsafeUrl,\\n        newWindow: data.newWindow,\\n        setOCGState: data.setOCGState,\\n        title: typeof title === \\\"string\\\" ? stringToPDFString(title) : \\\"\\\",\\n        color: rgbColor,\\n        count: Number.isInteger(count) ? count : undefined,\\n        bold: !!(flags & 2),\\n        italic: !!(flags & 1),\\n        items: [],\\n      };\\n\\n      i.parent.items.push(outlineItem);\\n      obj = outlineDict.getRaw(\\\"First\\\");\\n      if (obj instanceof Ref && !processed.has(obj)) {\\n        queue.push({ obj, parent: outlineItem });\\n        processed.put(obj);\\n      }\\n      obj = outlineDict.getRaw(\\\"Next\\\");\\n      if (obj instanceof Ref && !processed.has(obj)) {\\n        queue.push({ obj, parent: i.parent });\\n        processed.put(obj);\\n      }\\n    }\\n    return root.items.length > 0 ? root.items : null;\\n  }\\n\\n  get permissions() {\\n    let permissions = null;\\n    try {\\n      permissions = this.#readPermissions();\\n    } catch (ex) {\\n      if (ex instanceof MissingDataException) {\\n        throw ex;\\n      }\\n      warn(\\\"Unable to read permissions.\\\");\\n    }\\n    return shadow(this, \\\"permissions\\\", permissions);\\n  }\\n\\n  #readPermissions() {\\n    const encrypt = this.xref.trailer.get(\\\"Encrypt\\\");\\n    if (!(encrypt instanceof Dict)) {\\n      return null;\\n    }\\n\\n    let flags = encrypt.get(\\\"P\\\");\\n    if (typeof flags !== \\\"number\\\") {\\n      return null;\\n    }\\n\\n    \u002F\u002F PDF integer objects are represented internally in signed 2's complement\\n    \u002F\u002F form. Therefore, convert the signed decimal integer to a signed 2's\\n    \u002F\u002F complement binary integer so we can use regular bitwise operations on it.\\n    flags += 2 ** 32;\\n\\n    const permissions = [];\\n    for (const key in PermissionFlag) {\\n      const value = PermissionFlag[key];\\n      if (flags & value) {\\n        permissions.push(value);\\n      }\\n    }\\n    return permissions;\\n  }\\n\\n  get optionalContentConfig() {\\n    let config = null;\\n    try {\\n      const properties = this.#catDict.get(\\\"OCProperties\\\");\\n      if (!properties) {\\n        return shadow(this, \\\"optionalContentConfig\\\", null);\\n      }\\n      const defaultConfig = properties.get(\\\"D\\\");\\n      if (!defaultConfig) {\\n        return shadow(this, \\\"optionalContentConfig\\\", null);\\n      }\\n      const groupsData = properties.get(\\\"OCGs\\\");\\n      if (!Array.isArray(groupsData)) {\\n        return shadow(this, \\\"optionalContentConfig\\\", null);\\n      }\\n      const groupRefCache = new RefSetCache();\\n      \u002F\u002F Ensure all the optional content groups are valid.\\n      for (const groupRef of groupsData) {\\n        if (!(groupRef instanceof Ref) || groupRefCache.has(groupRef)) {\\n          continue;\\n        }\\n        groupRefCache.put(groupRef, this.#readOptionalContentGroup(groupRef));\\n      }\\n      config = this.#readOptionalContentConfig(defaultConfig, groupRefCache);\\n    } catch (ex) {\\n      if (ex instanceof MissingDataException) {\\n        throw ex;\\n      }\\n      warn(`Unable to read optional content config: ${ex}`);\\n    }\\n    return shadow(this, \\\"optionalContentConfig\\\", config);\\n  }\\n\\n  #readOptionalContentGroup(groupRef) {\\n    const group = this.xref.fetch(groupRef);\\n    const obj = {\\n      id: groupRef.toString(),\\n      name: null,\\n      intent: null,\\n      usage: {\\n        print: null,\\n        view: null,\\n      },\\n      rbGroups: [],\\n    };\\n\\n    const name = group.get(\\\"Name\\\");\\n    if (typeof name === \\\"string\\\") {\\n      obj.name = stringToPDFString(name);\\n    }\\n\\n    let intent = group.getArray(\\\"Intent\\\");\\n    if (!Array.isArray(intent)) {\\n      intent = [intent];\\n    }\\n    if (intent.every(i => i instanceof Name)) {\\n      obj.intent = intent.map(i => i.name);\\n    }\\n\\n    const usage = group.get(\\\"Usage\\\");\\n    if (!(usage instanceof Dict)) {\\n      return obj;\\n    }\\n    const usageObj = obj.usage;\\n\\n    const print = usage.get(\\\"Print\\\");\\n    if (print instanceof Dict) {\\n      const printState = print.get(\\\"PrintState\\\");\\n      if (printState instanceof Name) {\\n        switch (printState.name) {\\n          case \\\"ON\\\":\\n          case \\\"OFF\\\":\\n            usageObj.print = { printState: printState.name };\\n        }\\n      }\\n    }\\n\\n    const view = usage.get(\\\"View\\\");\\n    if (view instanceof Dict) {\\n      const viewState = view.get(\\\"ViewState\\\");\\n      if (viewState instanceof Name) {\\n        switch (viewState.name) {\\n          case \\\"ON\\\":\\n          case \\\"OFF\\\":\\n            usageObj.view = { viewState: viewState.name };\\n        }\\n      }\\n    }\\n\\n    return obj;\\n  }\\n\\n  #readOptionalContentConfig(config, groupRefCache) {\\n    function parseOnOff(refs) {\\n      const onParsed = [];\\n      if (Array.isArray(refs)) {\\n        for (const value of refs) {\\n          if (value instanceof Ref && groupRefCache.has(value)) {\\n            onParsed.push(value.toString());\\n          }\\n        }\\n      }\\n      return onParsed;\\n    }\\n\\n    function parseOrder(refs, nestedLevels = 0) {\\n      if (!Array.isArray(refs)) {\\n        return null;\\n      }\\n      const order = [];\\n\\n      for (const value of refs) {\\n        if (value instanceof Ref && groupRefCache.has(value)) {\\n          parsedOrderRefs.put(value); \u002F\u002F Handle \\\"hidden\\\" groups, see below.\\n\\n          order.push(value.toString());\\n          continue;\\n        }\\n        \u002F\u002F Handle nested \u002FOrder arrays (see e.g. issue 9462 and bug 1240641).\\n        const nestedOrder = parseNestedOrder(value, nestedLevels);\\n        if (nestedOrder) {\\n          order.push(nestedOrder);\\n        }\\n      }\\n\\n      if (nestedLevels > 0) {\\n        return order;\\n      }\\n      const hiddenGroups = [];\\n      for (const [groupRef] of groupRefCache.items()) {\\n        if (parsedOrderRefs.has(groupRef)) {\\n          continue;\\n        }\\n        hiddenGroups.push(groupRef.toString());\\n      }\\n      if (hiddenGroups.length) {\\n        order.push({ name: null, order: hiddenGroups });\\n      }\\n\\n      return order;\\n    }\\n\\n    function parseNestedOrder(ref, nestedLevels) {\\n      if (++nestedLevels > MAX_NESTED_LEVELS) {\\n        warn(\\\"parseNestedOrder - reached MAX_NESTED_LEVELS.\\\");\\n        return null;\\n      }\\n      const value = xref.fetchIfRef(ref);\\n      if (!Array.isArray(value)) {\\n        return null;\\n      }\\n      const nestedName = xref.fetchIfRef(value[0]);\\n      if (typeof nestedName !== \\\"string\\\") {\\n        return null;\\n      }\\n      const nestedOrder = parseOrder(value.slice(1), nestedLevels);\\n      if (!nestedOrder?.length) {\\n        return null;\\n      }\\n      return { name: stringToPDFString(nestedName), order: nestedOrder };\\n    }\\n\\n    function parseRBGroups(rbGroups) {\\n      if (!Array.isArray(rbGroups)) {\\n        return;\\n      }\\n\\n      for (const value of rbGroups) {\\n        const rbGroup = xref.fetchIfRef(value);\\n        if (!Array.isArray(rbGroup) || !rbGroup.length) {\\n          continue;\\n        }\\n        const parsedRbGroup = new Set();\\n\\n        for (const ref of rbGroup) {\\n          if (\\n            ref instanceof Ref &&\\n            groupRefCache.has(ref) &&\\n            !parsedRbGroup.has(ref.toString())\\n          ) {\\n            parsedRbGroup.add(ref.toString());\\n            \u002F\u002F Keep a record of which RB groups the current OCG belongs to.\\n            groupRefCache.get(ref).rbGroups.push(parsedRbGroup);\\n          }\\n        }\\n      }\\n    }\\n\\n    const xref = this.xref,\\n      parsedOrderRefs = new RefSet(),\\n      MAX_NESTED_LEVELS = 10;\\n\\n    parseRBGroups(config.get(\\\"RBGroups\\\"));\\n\\n    return {\\n      name:\\n        typeof config.get(\\\"Name\\\") === \\\"string\\\"\\n          ? stringToPDFString(config.get(\\\"Name\\\"))\\n          : null,\\n      creator:\\n        typeof config.get(\\\"Creator\\\") === \\\"string\\\"\\n          ? stringToPDFString(config.get(\\\"Creator\\\"))\\n          : null,\\n      baseState:\\n        config.get(\\\"BaseState\\\") instanceof Name\\n          ? config.get(\\\"BaseState\\\").name\\n          : null,\\n      on: parseOnOff(config.get(\\\"ON\\\")),\\n      off: parseOnOff(config.get(\\\"OFF\\\")),\\n      order: parseOrder(config.get(\\\"Order\\\")),\\n      groups: [...groupRefCache],\\n    };\\n  }\\n\\n  setActualNumPages(num = null) {\\n    this.#actualNumPages = num;\\n  }\\n\\n  get hasActualNumPages() {\\n    return this.#actualNumPages !== null;\\n  }\\n\\n  get _pagesCount() {\\n    const obj = this.toplevelPagesDict.get(\\\"Count\\\");\\n    if (!Number.isInteger(obj)) {\\n      throw new FormatError(\\n        \\\"Page count in top-level pages dictionary is not an integer.\\\"\\n      );\\n    }\\n    return shadow(this, \\\"_pagesCount\\\", obj);\\n  }\\n\\n  get numPages() {\\n    return this.#actualNumPages ?? this._pagesCount;\\n  }\\n\\n  get destinations() {\\n    const rawDests = this.#readDests(),\\n      dests = Object.create(null);\\n    for (const obj of rawDests) {\\n      if (obj instanceof NameTree) {\\n        for (const [key, value] of obj.getAll()) {\\n          const dest = fetchDest(value);\\n          if (dest) {\\n            dests[stringToPDFString(key, \u002F* keepEscapeSequence = *\u002F true)] =\\n              dest;\\n          }\\n        }\\n      } else if (obj instanceof Dict) {\\n        for (const [key, value] of obj) {\\n          const dest = fetchDest(value);\\n          if (dest) {\\n            \u002F\u002F Always let the NameTree take precedence.\\n            dests[stringToPDFString(key, \u002F* keepEscapeSequence = *\u002F true)] ||=\\n              dest;\\n          }\\n        }\\n      }\\n    }\\n    return shadow(this, \\\"destinations\\\", dests);\\n  }\\n\\n  getDestination(id) {\\n    \u002F\u002F Avoid extra lookup\u002Fparsing when all destinations are already available.\\n    if (this.hasOwnProperty(\\\"destinations\\\")) {\\n      return this.destinations[id] ?? null;\\n    }\\n\\n    const rawDests = this.#readDests();\\n    for (const obj of rawDests) {\\n      if (obj instanceof NameTree || obj instanceof Dict) {\\n        const dest = fetchDest(obj.get(id));\\n        if (dest) {\\n          return dest;\\n        }\\n      }\\n    }\\n\\n    \u002F\u002F Always fallback to checking all destinations, in order to support:\\n    \u002F\u002F  - PDF documents with out-of-order NameTrees (fixes issue 10272).\\n    \u002F\u002F  - Destination keys that use PDFDocEncoding (fixes issue 19835).\\n    if (rawDests.length) {\\n      const dest = this.destinations[id];\\n      if (dest) {\\n        return dest;\\n      }\\n    }\\n    return null;\\n  }\\n\\n  #readDests() {\\n    const obj = this.#catDict.get(\\\"Names\\\");\\n    const rawDests = [];\\n    if (obj?.has(\\\"Dests\\\")) {\\n      rawDests.push(new NameTree(obj.getRaw(\\\"Dests\\\"), this.xref));\\n    }\\n    if (this.#catDict.has(\\\"Dests\\\")) {\\n      \u002F\u002F Simple destination dictionary.\\n      rawDests.push(this.#catDict.get(\\\"Dests\\\"));\\n    }\\n    return rawDests;\\n  }\\n\\n  get pageLabels() {\\n    let obj = null;\\n    try {\\n      obj = this.#readPageLabels();\\n    } catch (ex) {\\n      if (ex instanceof MissingDataException) {\\n        throw ex;\\n      }\\n      warn(\\\"Unable to read page labels.\\\");\\n    }\\n    return shadow(this, \\\"pageLabels\\\", obj);\\n  }\\n\\n  #readPageLabels() {\\n    const obj = this.#catDict.getRaw(\\\"PageLabels\\\");\\n    if (!obj) {\\n      return null;\\n    }\\n\\n    const pageLabels = new Array(this.numPages);\\n    let style = null,\\n      prefix = \\\"\\\";\\n\\n    const numberTree = new NumberTree(obj, this.xref);\\n    const nums = numberTree.getAll();\\n    let currentLabel = \\\"\\\",\\n      currentIndex = 1;\\n\\n    for (let i = 0, ii = this.numPages; i \u003C ii; i++) {\\n      const labelDict = nums.get(i);\\n\\n      if (labelDict !== undefined) {\\n        if (!(labelDict instanceof Dict)) {\\n          throw new FormatError(\\\"PageLabel is not a dictionary.\\\");\\n        }\\n\\n        if (\\n          labelDict.has(\\\"Type\\\") &&\\n          !isName(labelDict.get(\\\"Type\\\"), \\\"PageLabel\\\")\\n        ) {\\n          throw new FormatError(\\\"Invalid type in PageLabel dictionary.\\\");\\n        }\\n\\n        if (labelDict.has(\\\"S\\\")) {\\n          const s = labelDict.get(\\\"S\\\");\\n          if (!(s instanceof Name)) {\\n            throw new FormatError(\\\"Invalid style in PageLabel dictionary.\\\");\\n          }\\n          style = s.name;\\n        } else {\\n          style = null;\\n        }\\n\\n        if (labelDict.has(\\\"P\\\")) {\\n          const p = labelDict.get(\\\"P\\\");\\n          if (typeof p !== \\\"string\\\") {\\n            throw new FormatError(\\\"Invalid prefix in PageLabel dictionary.\\\");\\n          }\\n          prefix = stringToPDFString(p);\\n        } else {\\n          prefix = \\\"\\\";\\n        }\\n\\n        if (labelDict.has(\\\"St\\\")) {\\n          const st = labelDict.get(\\\"St\\\");\\n          if (!(Number.isInteger(st) && st >= 1)) {\\n            throw new FormatError(\\\"Invalid start in PageLabel dictionary.\\\");\\n          }\\n          currentIndex = st;\\n        } else {\\n          currentIndex = 1;\\n        }\\n      }\\n\\n      switch (style) {\\n        case \\\"D\\\":\\n          currentLabel = currentIndex;\\n          break;\\n        case \\\"R\\\":\\n        case \\\"r\\\":\\n          currentLabel = toRomanNumerals(currentIndex, style === \\\"r\\\");\\n          break;\\n        case \\\"A\\\":\\n        case \\\"a\\\":\\n          const LIMIT = 26; \u002F\u002F Use only the characters A-Z, or a-z.\\n          const A_UPPER_CASE = 0x41,\\n            A_LOWER_CASE = 0x61;\\n\\n          const baseCharCode = style === \\\"a\\\" ? A_LOWER_CASE : A_UPPER_CASE;\\n          const letterIndex = currentIndex - 1;\\n          const character = String.fromCharCode(\\n            baseCharCode + (letterIndex % LIMIT)\\n          );\\n          currentLabel = character.repeat(Math.floor(letterIndex \u002F LIMIT) + 1);\\n          break;\\n        default:\\n          if (style) {\\n            throw new FormatError(\\n              `Invalid style \\\"${style}\\\" in PageLabel dictionary.`\\n            );\\n          }\\n          currentLabel = \\\"\\\";\\n      }\\n\\n      pageLabels[i] = prefix + currentLabel;\\n      currentIndex++;\\n    }\\n    return pageLabels;\\n  }\\n\\n  get pageLayout() {\\n    const obj = this.#catDict.get(\\\"PageLayout\\\");\\n    \u002F\u002F Purposely use a non-standard default value, rather than 'SinglePage', to\\n    \u002F\u002F allow differentiating between `undefined` and \u002FSinglePage since that does\\n    \u002F\u002F affect the Scroll mode (continuous\u002Fnon-continuous) used in Adobe Reader.\\n    let pageLayout = \\\"\\\";\\n\\n    if (obj instanceof Name) {\\n      switch (obj.name) {\\n        case \\\"SinglePage\\\":\\n        case \\\"OneColumn\\\":\\n        case \\\"TwoColumnLeft\\\":\\n        case \\\"TwoColumnRight\\\":\\n        case \\\"TwoPageLeft\\\":\\n        case \\\"TwoPageRight\\\":\\n          pageLayout = obj.name;\\n      }\\n    }\\n    return shadow(this, \\\"pageLayout\\\", pageLayout);\\n  }\\n\\n  get pageMode() {\\n    const obj = this.#catDict.get(\\\"PageMode\\\");\\n    let pageMode = \\\"UseNone\\\"; \u002F\u002F Default value.\\n\\n    if (obj instanceof Name) {\\n      switch (obj.name) {\\n        case \\\"UseNone\\\":\\n        case \\\"UseOutlines\\\":\\n        case \\\"UseThumbs\\\":\\n        case \\\"FullScreen\\\":\\n        case \\\"UseOC\\\":\\n        case \\\"UseAttachments\\\":\\n          pageMode = obj.name;\\n      }\\n    }\\n    return shadow(this, \\\"pageMode\\\", pageMode);\\n  }\\n\\n  get viewerPreferences() {\\n    const obj = this.#catDict.get(\\\"ViewerPreferences\\\");\\n    if (!(obj instanceof Dict)) {\\n      return shadow(this, \\\"viewerPreferences\\\", null);\\n    }\\n    let prefs = null;\\n\\n    for (const [key, value] of obj) {\\n      let prefValue;\\n\\n      switch (key) {\\n        case \\\"HideToolbar\\\":\\n        case \\\"HideMenubar\\\":\\n        case \\\"HideWindowUI\\\":\\n        case \\\"FitWindow\\\":\\n        case \\\"CenterWindow\\\":\\n        case \\\"DisplayDocTitle\\\":\\n        case \\\"PickTrayByPDFSize\\\":\\n          if (typeof value === \\\"boolean\\\") {\\n            prefValue = value;\\n          }\\n          break;\\n        case \\\"NonFullScreenPageMode\\\":\\n          if (value instanceof Name) {\\n            switch (value.name) {\\n              case \\\"UseNone\\\":\\n              case \\\"UseOutlines\\\":\\n              case \\\"UseThumbs\\\":\\n              case \\\"UseOC\\\":\\n                prefValue = value.name;\\n                break;\\n              default:\\n                prefValue = \\\"UseNone\\\";\\n            }\\n          }\\n          break;\\n        case \\\"Direction\\\":\\n          if (value instanceof Name) {\\n            switch (value.name) {\\n              case \\\"L2R\\\":\\n              case \\\"R2L\\\":\\n                prefValue = value.name;\\n                break;\\n              default:\\n                prefValue = \\\"L2R\\\";\\n            }\\n          }\\n          break;\\n        case \\\"ViewArea\\\":\\n        case \\\"ViewClip\\\":\\n        case \\\"PrintArea\\\":\\n        case \\\"PrintClip\\\":\\n          if (value instanceof Name) {\\n            switch (value.name) {\\n              case \\\"MediaBox\\\":\\n              case \\\"CropBox\\\":\\n              case \\\"BleedBox\\\":\\n              case \\\"TrimBox\\\":\\n              case \\\"ArtBox\\\":\\n                prefValue = value.name;\\n                break;\\n              default:\\n                prefValue = \\\"CropBox\\\";\\n            }\\n          }\\n          break;\\n        case \\\"PrintScaling\\\":\\n          if (value instanceof Name) {\\n            switch (value.name) {\\n              case \\\"None\\\":\\n              case \\\"AppDefault\\\":\\n                prefValue = value.name;\\n                break;\\n              default:\\n                prefValue = \\\"AppDefault\\\";\\n            }\\n          }\\n          break;\\n        case \\\"Duplex\\\":\\n          if (value instanceof Name) {\\n            switch (value.name) {\\n              case \\\"Simplex\\\":\\n              case \\\"DuplexFlipShortEdge\\\":\\n              case \\\"DuplexFlipLongEdge\\\":\\n                prefValue = value.name;\\n                break;\\n              default:\\n                prefValue = \\\"None\\\";\\n            }\\n          }\\n          break;\\n        case \\\"PrintPageRange\\\":\\n          \u002F\u002F The number of elements must be even.\\n          if (Array.isArray(value) && value.length % 2 === 0) {\\n            const isValid = value.every(\\n              (page, i, arr) =>\\n                Number.isInteger(page) &&\\n                page > 0 &&\\n                (i === 0 || page >= arr[i - 1]) &&\\n                page \u003C= this.numPages\\n            );\\n            if (isValid) {\\n              prefValue = value;\\n            }\\n          }\\n          break;\\n        case \\\"NumCopies\\\":\\n          if (Number.isInteger(value) && value > 0) {\\n            prefValue = value;\\n          }\\n          break;\\n        default:\\n          warn(`Ignoring non-standard key in ViewerPreferences: ${key}.`);\\n          continue;\\n      }\\n\\n      if (prefValue === undefined) {\\n        warn(`Bad value, for key \\\"${key}\\\", in ViewerPreferences: ${value}.`);\\n        continue;\\n      }\\n      prefs ??= Object.create(null);\\n      prefs[key] = prefValue;\\n    }\\n    return shadow(this, \\\"viewerPreferences\\\", prefs);\\n  }\\n\\n  get openAction() {\\n    const obj = this.#catDict.get(\\\"OpenAction\\\");\\n    const openAction = Object.create(null);\\n\\n    if (obj instanceof Dict) {\\n      \u002F\u002F Convert the OpenAction dictionary into a format that works with\\n      \u002F\u002F `parseDestDictionary`, to avoid having to re-implement those checks.\\n      const destDict = new Dict(this.xref);\\n      destDict.set(\\\"A\\\", obj);\\n\\n      const resultObj = { url: null, dest: null, action: null };\\n      Catalog.parseDestDictionary({ destDict, resultObj });\\n\\n      if (Array.isArray(resultObj.dest)) {\\n        openAction.dest = resultObj.dest;\\n      } else if (resultObj.action) {\\n        openAction.action = resultObj.action;\\n      }\\n    } else if (isValidExplicitDest(obj)) {\\n      openAction.dest = obj;\\n    }\\n    return shadow(\\n      this,\\n      \\\"openAction\\\",\\n      objectSize(openAction) > 0 ? openAction : null\\n    );\\n  }\\n\\n  get attachments() {\\n    const obj = this.#catDict.get(\\\"Names\\\");\\n    let attachments = null;\\n\\n    if (obj instanceof Dict && obj.has(\\\"EmbeddedFiles\\\")) {\\n      const nameTree = new NameTree(obj.getRaw(\\\"EmbeddedFiles\\\"), this.xref);\\n      for (const [key, value] of nameTree.getAll()) {\\n        const fs = new FileSpec(value, this.xref);\\n        attachments ??= Object.create(null);\\n        attachments[stringToPDFString(key, \u002F* keepEscapeSequence = *\u002F true)] =\\n          fs.serializable;\\n      }\\n    }\\n    return shadow(this, \\\"attachments\\\", attachments);\\n  }\\n\\n  get xfaImages() {\\n    const obj = this.#catDict.get(\\\"Names\\\");\\n    let xfaImages = null;\\n\\n    if (obj instanceof Dict && obj.has(\\\"XFAImages\\\")) {\\n      const nameTree = new NameTree(obj.getRaw(\\\"XFAImages\\\"), this.xref);\\n      for (const [key, value] of nameTree.getAll()) {\\n        if (value instanceof BaseStream) {\\n          xfaImages ??= new Map();\\n          xfaImages.set(\\n            stringToPDFString(key, \u002F* keepEscapeSequence = *\u002F true),\\n            value.getBytes()\\n          );\\n        }\\n      }\\n    }\\n    return shadow(this, \\\"xfaImages\\\", xfaImages);\\n  }\\n\\n  #collectJavaScript() {\\n    const obj = this.#catDict.get(\\\"Names\\\");\\n    let javaScript = null;\\n\\n    function appendIfJavaScriptDict(name, jsDict) {\\n      if (!(jsDict instanceof Dict)) {\\n        return;\\n      }\\n      if (!isName(jsDict.get(\\\"S\\\"), \\\"JavaScript\\\")) {\\n        return;\\n      }\\n\\n      let js = jsDict.get(\\\"JS\\\");\\n      if (js instanceof BaseStream) {\\n        js = js.getString();\\n      } else if (typeof js !== \\\"string\\\") {\\n        return;\\n      }\\n      js = stringToPDFString(js, \u002F* keepEscapeSequence = *\u002F true).replaceAll(\\n        \\\"\\\\x00\\\",\\n        \\\"\\\"\\n      );\\n      \u002F\u002F Skip empty entries, similar to the `_collectJS` function.\\n      if (js) {\\n        (javaScript ||= new Map()).set(name, js);\\n      }\\n    }\\n\\n    if (obj instanceof Dict && obj.has(\\\"JavaScript\\\")) {\\n      const nameTree = new NameTree(obj.getRaw(\\\"JavaScript\\\"), this.xref);\\n      for (const [key, value] of nameTree.getAll()) {\\n        appendIfJavaScriptDict(\\n          stringToPDFString(key, \u002F* keepEscapeSequence = *\u002F true),\\n          value\\n        );\\n      }\\n    }\\n    \u002F\u002F Append OpenAction \\\"JavaScript\\\" actions, if any, to the JavaScript map.\\n    const openAction = this.#catDict.get(\\\"OpenAction\\\");\\n    if (openAction) {\\n      appendIfJavaScriptDict(\\\"OpenAction\\\", openAction);\\n    }\\n\\n    return javaScript;\\n  }\\n\\n  get jsActions() {\\n    const javaScript = this.#collectJavaScript();\\n    let actions = collectActions(\\n      this.xref,\\n      this.#catDict,\\n      DocumentActionEventType\\n    );\\n\\n    if (javaScript) {\\n      actions ||= Object.create(null);\\n\\n      for (const [key, val] of javaScript) {\\n        if (key in actions) {\\n          actions[key].push(val);\\n        } else {\\n          actions[key] = [val];\\n        }\\n      }\\n    }\\n    return shadow(this, \\\"jsActions\\\", actions);\\n  }\\n\\n  async cleanup(manuallyTriggered = false) {\\n    clearGlobalCaches();\\n    this.globalColorSpaceCache.clear();\\n    this.globalImageCache.clear(\u002F* onlyData = *\u002F manuallyTriggered);\\n    this.pageKidsCountCache.clear();\\n    this.pageIndexCache.clear();\\n    this.pageDictCache.clear();\\n    this.nonBlendModesSet.clear();\\n\\n    for (const { dict } of await Promise.all(this.fontCache)) {\\n      delete dict.cacheKey;\\n    }\\n    this.fontCache.clear();\\n    this.builtInCMapCache.clear();\\n    this.standardFontDataCache.clear();\\n    this.systemFontCache.clear();\\n  }\\n\\n  async getPageDict(pageIndex) {\\n    const nodesToVisit = [this.toplevelPagesDict];\\n    const visitedNodes = new RefSet();\\n\\n    const pagesRef = this.#catDict.getRaw(\\\"Pages\\\");\\n    if (pagesRef instanceof Ref) {\\n      visitedNodes.put(pagesRef);\\n    }\\n    const xref = this.xref,\\n      pageKidsCountCache = this.pageKidsCountCache,\\n      pageIndexCache = this.pageIndexCache,\\n      pageDictCache = this.pageDictCache;\\n    let currentPageIndex = 0;\\n\\n    while (nodesToVisit.length) {\\n      const currentNode = nodesToVisit.pop();\\n\\n      if (currentNode instanceof Ref) {\\n        const count = pageKidsCountCache.get(currentNode);\\n        \u002F\u002F Skip nodes where the page can't be.\\n        if (count >= 0 && currentPageIndex + count \u003C= pageIndex) {\\n          currentPageIndex += count;\\n          continue;\\n        }\\n        \u002F\u002F Prevent circular references in the \u002FPages tree.\\n        if (visitedNodes.has(currentNode)) {\\n          throw new FormatError(\\\"Pages tree contains circular reference.\\\");\\n        }\\n        visitedNodes.put(currentNode);\\n\\n        const obj = await (pageDictCache.get(currentNode) ||\\n          xref.fetchAsync(currentNode));\\n        if (obj instanceof Dict) {\\n          let type = obj.getRaw(\\\"Type\\\");\\n          if (type instanceof Ref) {\\n            type = await xref.fetchAsync(type);\\n          }\\n          if (isName(type, \\\"Page\\\") || !obj.has(\\\"Kids\\\")) {\\n            \u002F\u002F Cache the Page reference, since it can *greatly* improve\\n            \u002F\u002F performance by reducing redundant lookups in long documents\\n            \u002F\u002F where all nodes are found at *one* level of the tree.\\n            if (!pageKidsCountCache.has(currentNode)) {\\n              pageKidsCountCache.put(currentNode, 1);\\n            }\\n            \u002F\u002F Help improve performance of the `getPageIndex` method.\\n            if (!pageIndexCache.has(currentNode)) {\\n              pageIndexCache.put(currentNode, currentPageIndex);\\n            }\\n\\n            if (currentPageIndex === pageIndex) {\\n              return [obj, currentNode];\\n            }\\n            currentPageIndex++;\\n            continue;\\n          }\\n        }\\n        nodesToVisit.push(obj);\\n        continue;\\n      }\\n\\n      \u002F\u002F Must be a child page dictionary.\\n      if (!(currentNode instanceof Dict)) {\\n        throw new FormatError(\\n          \\\"Page dictionary kid reference points to wrong type of object.\\\"\\n        );\\n      }\\n      const { objId } = currentNode;\\n\\n      let count = currentNode.getRaw(\\\"Count\\\");\\n      if (count instanceof Ref) {\\n        count = await xref.fetchAsync(count);\\n      }\\n      if (Number.isInteger(count) && count >= 0) {\\n        \u002F\u002F Cache the Kids count, since it can reduce redundant lookups in\\n        \u002F\u002F documents where all nodes are found at *one* level of the tree.\\n        if (objId && !pageKidsCountCache.has(objId)) {\\n          pageKidsCountCache.put(objId, count);\\n        }\\n\\n        \u002F\u002F Skip nodes where the page can't be.\\n        if (currentPageIndex + count \u003C= pageIndex) {\\n          currentPageIndex += count;\\n          continue;\\n        }\\n      }\\n\\n      let kids = currentNode.getRaw(\\\"Kids\\\");\\n      if (kids instanceof Ref) {\\n        kids = await xref.fetchAsync(kids);\\n      }\\n      if (!Array.isArray(kids)) {\\n        \u002F\u002F Prevent errors in corrupt PDF documents that violate the\\n        \u002F\u002F specification by *inlining* Page dicts directly in the Kids\\n        \u002F\u002F array, rather than using indirect objects (fixes issue9540.pdf).\\n        let type = currentNode.getRaw(\\\"Type\\\");\\n        if (type instanceof Ref) {\\n          type = await xref.fetchAsync(type);\\n        }\\n        if (isName(type, \\\"Page\\\") || !currentNode.has(\\\"Kids\\\")) {\\n          if (currentPageIndex === pageIndex) {\\n            return [currentNode, null];\\n          }\\n          currentPageIndex++;\\n          continue;\\n        }\\n\\n        throw new FormatError(\\\"Page dictionary kids object is not an array.\\\");\\n      }\\n\\n      \u002F\u002F Always check all `Kids` nodes, to avoid getting stuck in an empty\\n      \u002F\u002F node further down in the tree (see issue5644.pdf, issue8088.pdf),\\n      \u002F\u002F and to ensure that we actually find the correct `Page` dict.\\n      for (let last = kids.length - 1; last >= 0; last--) {\\n        const lastKid = kids[last];\\n        nodesToVisit.push(lastKid);\\n\\n        \u002F\u002F Launch all requests in parallel so we don't wait for each one in turn\\n        \u002F\u002F when looking for a page near the end, if all the pages are top level.\\n        if (\\n          currentNode === this.toplevelPagesDict &&\\n          lastKid instanceof Ref &&\\n          !pageDictCache.has(lastKid)\\n        ) {\\n          pageDictCache.put(lastKid, xref.fetchAsync(lastKid));\\n        }\\n      }\\n    }\\n\\n    throw new Error(`Page index ${pageIndex} not found.`);\\n  }\\n\\n  \u002F**\\n   * Eagerly fetches the entire \u002FPages-tree; should ONLY be used as a fallback.\\n   * @returns {Promise\u003CMap>}\\n   *\u002F\\n  async getAllPageDicts(recoveryMode = false) {\\n    const { ignoreErrors } = this.pdfManager.evaluatorOptions;\\n\\n    const queue = [{ currentNode: this.toplevelPagesDict, posInKids: 0 }];\\n    const visitedNodes = new RefSet();\\n\\n    const pagesRef = this.#catDict.getRaw(\\\"Pages\\\");\\n    if (pagesRef instanceof Ref) {\\n      visitedNodes.put(pagesRef);\\n    }\\n    const map = new Map(),\\n      xref = this.xref,\\n      pageIndexCache = this.pageIndexCache;\\n    let pageIndex = 0;\\n\\n    function addPageDict(pageDict, pageRef) {\\n      \u002F\u002F Help improve performance of the `getPageIndex` method.\\n      if (pageRef && !pageIndexCache.has(pageRef)) {\\n        pageIndexCache.put(pageRef, pageIndex);\\n      }\\n\\n      map.set(pageIndex++, [pageDict, pageRef]);\\n    }\\n    function addPageError(error) {\\n      if (error instanceof XRefEntryException && !recoveryMode) {\\n        throw error;\\n      }\\n      if (recoveryMode && ignoreErrors && pageIndex === 0) {\\n        \u002F\u002F Ensure that the viewer will always load (fixes issue15590.pdf).\\n        warn(`getAllPageDicts - Skipping invalid first page: \\\"${error}\\\".`);\\n        error = Dict.empty;\\n      }\\n\\n      map.set(pageIndex++, [error, null]);\\n    }\\n\\n    while (queue.length > 0) {\\n      const queueItem = queue.at(-1);\\n      const { currentNode, posInKids } = queueItem;\\n\\n      let kids = currentNode.getRaw(\\\"Kids\\\");\\n      if (kids instanceof Ref) {\\n        try {\\n          kids = await xref.fetchAsync(kids);\\n        } catch (ex) {\\n          addPageError(ex);\\n          break;\\n        }\\n      }\\n      if (!Array.isArray(kids)) {\\n        addPageError(\\n          new FormatError(\\\"Page dictionary kids object is not an array.\\\")\\n        );\\n        break;\\n      }\\n\\n      if (posInKids >= kids.length) {\\n        queue.pop();\\n        continue;\\n      }\\n\\n      const kidObj = kids[posInKids];\\n      let obj;\\n      if (kidObj instanceof Ref) {\\n        \u002F\u002F Prevent circular references in the \u002FPages tree.\\n        if (visitedNodes.has(kidObj)) {\\n          addPageError(\\n            new FormatError(\\\"Pages tree contains circular reference.\\\")\\n          );\\n          break;\\n        }\\n        visitedNodes.put(kidObj);\\n\\n        try {\\n          obj = await xref.fetchAsync(kidObj);\\n        } catch (ex) {\\n          addPageError(ex);\\n          break;\\n        }\\n      } else {\\n        \u002F\u002F Prevent errors in corrupt PDF documents that violate the\\n        \u002F\u002F specification by *inlining* Page dicts directly in the Kids\\n        \u002F\u002F array, rather than using indirect objects (see issue9540.pdf).\\n        obj = kidObj;\\n      }\\n      if (!(obj instanceof Dict)) {\\n        addPageError(\\n          new FormatError(\\n            \\\"Page dictionary kid reference points to wrong type of object.\\\"\\n          )\\n        );\\n        break;\\n      }\\n\\n      let type = obj.getRaw(\\\"Type\\\");\\n      if (type instanceof Ref) {\\n        try {\\n          type = await xref.fetchAsync(type);\\n        } catch (ex) {\\n          addPageError(ex);\\n          break;\\n        }\\n      }\\n      if (isName(type, \\\"Page\\\") || !obj.has(\\\"Kids\\\")) {\\n        addPageDict(obj, kidObj instanceof Ref ? kidObj : null);\\n      } else {\\n        queue.push({ currentNode: obj, posInKids: 0 });\\n      }\\n      queueItem.posInKids++;\\n    }\\n    return map;\\n  }\\n\\n  getPageIndex(pageRef) {\\n    const cachedPageIndex = this.pageIndexCache.get(pageRef);\\n    if (cachedPageIndex !== undefined) {\\n      return Promise.resolve(cachedPageIndex);\\n    }\\n\\n    \u002F\u002F The page tree nodes have the count of all the leaves below them. To get\\n    \u002F\u002F how many pages are before we just have to walk up the tree and keep\\n    \u002F\u002F adding the count of siblings to the left of the node.\\n    const xref = this.xref;\\n\\n    function pagesBeforeRef(kidRef) {\\n      let total = 0,\\n        parentRef;\\n\\n      return xref\\n        .fetchAsync(kidRef)\\n        .then(function (node) {\\n          if (\\n            isRefsEqual(kidRef, pageRef) &&\\n            !isDict(node, \\\"Page\\\") &&\\n            !(node instanceof Dict && !node.has(\\\"Type\\\") && node.has(\\\"Contents\\\"))\\n          ) {\\n            throw new FormatError(\\n              \\\"The reference does not point to a \u002FPage dictionary.\\\"\\n            );\\n          }\\n          if (!node) {\\n            return null;\\n          }\\n          if (!(node instanceof Dict)) {\\n            throw new FormatError(\\\"Node must be a dictionary.\\\");\\n          }\\n          parentRef = node.getRaw(\\\"Parent\\\");\\n          return node.getAsync(\\\"Parent\\\");\\n        })\\n        .then(function (parent) {\\n          if (!parent) {\\n            return null;\\n          }\\n          if (!(parent instanceof Dict)) {\\n            throw new FormatError(\\\"Parent must be a dictionary.\\\");\\n          }\\n          return parent.getAsync(\\\"Kids\\\");\\n        })\\n        .then(function (kids) {\\n          if (!kids) {\\n            return null;\\n          }\\n\\n          const kidPromises = [];\\n          let found = false;\\n          for (const kid of kids) {\\n            if (!(kid instanceof Ref)) {\\n              throw new FormatError(\\\"Kid must be a reference.\\\");\\n            }\\n            if (isRefsEqual(kid, kidRef)) {\\n              found = true;\\n              break;\\n            }\\n            kidPromises.push(\\n              xref.fetchAsync(kid).then(function (obj) {\\n                if (!(obj instanceof Dict)) {\\n                  throw new FormatError(\\\"Kid node must be a dictionary.\\\");\\n                }\\n                if (obj.has(\\\"Count\\\")) {\\n                  total += obj.get(\\\"Count\\\");\\n                } else {\\n                  \u002F\u002F Page leaf node.\\n                  total++;\\n                }\\n              })\\n            );\\n          }\\n          if (!found) {\\n            throw new FormatError(\\\"Kid reference not found in parent's kids.\\\");\\n          }\\n          return Promise.all(kidPromises).then(() => [total, parentRef]);\\n        });\\n    }\\n\\n    let total = 0;\\n    const next = ref =>\\n      pagesBeforeRef(ref).then(args => {\\n        if (!args) {\\n          this.pageIndexCache.put(pageRef, total);\\n          return total;\\n        }\\n        const [count, parentRef] = args;\\n        total += count;\\n        return next(parentRef);\\n      });\\n\\n    return next(pageRef);\\n  }\\n\\n  get baseUrl() {\\n    const uri = this.#catDict.get(\\\"URI\\\");\\n    if (uri instanceof Dict) {\\n      const base = uri.get(\\\"Base\\\");\\n      if (typeof base === \\\"string\\\") {\\n        const absoluteUrl = createValidAbsoluteUrl(base, null, {\\n          tryConvertEncoding: true,\\n        });\\n        if (absoluteUrl) {\\n          return shadow(this, \\\"baseUrl\\\", absoluteUrl.href);\\n        }\\n      }\\n    }\\n    return shadow(this, \\\"baseUrl\\\", this.pdfManager.docBaseUrl);\\n  }\\n\\n  \u002F**\\n   * @typedef {Object} ParseDestDictionaryParameters\\n   * @property {Dict} destDict - The dictionary containing the destination.\\n   * @property {Object} resultObj - The object where the parsed destination\\n   *   properties will be placed.\\n   * @property {string} [docBaseUrl] - The document base URL that is used when\\n   *   attempting to recover valid absolute URLs from relative ones.\\n   * @property {Object} [docAttachments] - The document attachments (may not\\n   *   exist in most PDF documents).\\n   *\u002F\\n\\n  \u002F**\\n   * Helper function used to parse the contents of destination dictionaries.\\n   * @param {ParseDestDictionaryParameters} params\\n   *\u002F\\n  static parseDestDictionary({\\n    destDict,\\n    resultObj,\\n    docBaseUrl = null,\\n    docAttachments = null,\\n  }) {\\n    if (!(destDict instanceof Dict)) {\\n      warn(\\\"parseDestDictionary: `destDict` must be a dictionary.\\\");\\n      return;\\n    }\\n\\n    let action = destDict.get(\\\"A\\\"),\\n      url,\\n      dest;\\n    if (!(action instanceof Dict)) {\\n      if (destDict.has(\\\"Dest\\\")) {\\n        \u002F\u002F A \u002FDest entry should *only* contain a Name or an Array, but some bad\\n        \u002F\u002F PDF generators ignore that and treat it as an \u002FA entry.\\n        action = destDict.get(\\\"Dest\\\");\\n      } else {\\n        action = destDict.get(\\\"AA\\\");\\n        if (action instanceof Dict) {\\n          if (action.has(\\\"D\\\")) {\\n            \u002F\u002F MouseDown\\n            action = action.get(\\\"D\\\");\\n          } else if (action.has(\\\"U\\\")) {\\n            \u002F\u002F MouseUp\\n            action = action.get(\\\"U\\\");\\n          }\\n        }\\n      }\\n    }\\n\\n    if (action instanceof Dict) {\\n      const actionType = action.get(\\\"S\\\");\\n      if (!(actionType instanceof Name)) {\\n        warn(\\\"parseDestDictionary: Invalid type in Action dictionary.\\\");\\n        return;\\n      }\\n      const actionName = actionType.name;\\n\\n      switch (actionName) {\\n        case \\\"ResetForm\\\":\\n          const flags = action.get(\\\"Flags\\\");\\n          const include = ((typeof flags === \\\"number\\\" ? flags : 0) & 1) === 0;\\n          const fields = [];\\n          const refs = [];\\n          for (const obj of action.get(\\\"Fields\\\") || []) {\\n            if (obj instanceof Ref) {\\n              refs.push(obj.toString());\\n            } else if (typeof obj === \\\"string\\\") {\\n              fields.push(stringToPDFString(obj));\\n            }\\n          }\\n          resultObj.resetForm = { fields, refs, include };\\n          break;\\n        case \\\"URI\\\":\\n          url = action.get(\\\"URI\\\");\\n          if (url instanceof Name) {\\n            \u002F\u002F Some bad PDFs do not put parentheses around relative URLs.\\n            url = \\\"\u002F\\\" + url.name;\\n          }\\n          break;\\n\\n        case \\\"GoTo\\\":\\n          dest = action.get(\\\"D\\\");\\n          break;\\n\\n        case \\\"Launch\\\":\\n        \u002F\u002F We neither want, nor can, support arbitrary 'Launch' actions.\\n        \u002F\u002F However, in practice they are mostly used for linking to other PDF\\n        \u002F\u002F files, which we thus attempt to support (utilizing `docBaseUrl`).\\n        \u002F* falls through *\u002F\\n\\n        case \\\"GoToR\\\":\\n          const urlDict = action.get(\\\"F\\\");\\n          if (urlDict instanceof Dict) {\\n            const fs = new FileSpec(\\n              urlDict,\\n              \u002F* xref = *\u002F null,\\n              \u002F* skipContent = *\u002F true\\n            );\\n            const { rawFilename } = fs.serializable;\\n            url = rawFilename;\\n          } else if (typeof urlDict === \\\"string\\\") {\\n            url = urlDict;\\n          }\\n\\n          \u002F\u002F NOTE: the destination is relative to the *remote* document.\\n          const remoteDest = fetchRemoteDest(action);\\n          if (remoteDest && typeof url === \\\"string\\\") {\\n            \u002F\u002F NOTE: We don't use the `updateUrlHash` function here, since\\n            \u002F\u002F the `createValidAbsoluteUrl` function (see below) already\\n            \u002F\u002F handles parsing and validation of the final URL.\\n            url = \u002F* baseUrl = *\u002F url.split(\\\"#\\\", 1)[0] + \\\"#\\\" + remoteDest;\\n          }\\n          \u002F\u002F The 'NewWindow' property, equal to `LinkTarget.BLANK`.\\n          const newWindow = action.get(\\\"NewWindow\\\");\\n          if (typeof newWindow === \\\"boolean\\\") {\\n            resultObj.newWindow = newWindow;\\n          }\\n          break;\\n\\n        case \\\"GoToE\\\":\\n          const target = action.get(\\\"T\\\");\\n          let attachment;\\n\\n          if (docAttachments && target instanceof Dict) {\\n            const relationship = target.get(\\\"R\\\");\\n            const name = target.get(\\\"N\\\");\\n\\n            if (isName(relationship, \\\"C\\\") && typeof name === \\\"string\\\") {\\n              attachment =\\n                docAttachments[\\n                  stringToPDFString(name, \u002F* keepEscapeSequence = *\u002F true)\\n                ];\\n            }\\n          }\\n\\n          if (attachment) {\\n            resultObj.attachment = attachment;\\n\\n            \u002F\u002F NOTE: the destination is relative to the *attachment*.\\n            const attachmentDest = fetchRemoteDest(action);\\n            if (attachmentDest) {\\n              resultObj.attachmentDest = attachmentDest;\\n            }\\n          } else {\\n            warn(`parseDestDictionary - unimplemented \\\"GoToE\\\" action.`);\\n          }\\n          break;\\n\\n        case \\\"Named\\\":\\n          const namedAction = action.get(\\\"N\\\");\\n          if (namedAction instanceof Name) {\\n            resultObj.action = namedAction.name;\\n          }\\n          break;\\n\\n        case \\\"SetOCGState\\\":\\n          const state = action.get(\\\"State\\\");\\n          const preserveRB = action.get(\\\"PreserveRB\\\");\\n\\n          if (!Array.isArray(state) || state.length === 0) {\\n            break;\\n          }\\n          const stateArr = [];\\n\\n          for (const elem of state) {\\n            if (elem instanceof Name) {\\n              switch (elem.name) {\\n                case \\\"ON\\\":\\n                case \\\"OFF\\\":\\n                case \\\"Toggle\\\":\\n                  stateArr.push(elem.name);\\n                  break;\\n              }\\n            } else if (elem instanceof Ref) {\\n              stateArr.push(elem.toString());\\n            }\\n          }\\n\\n          if (stateArr.length !== state.length) {\\n            break; \u002F\u002F Some of the original entries are not valid.\\n          }\\n          resultObj.setOCGState = {\\n            state: stateArr,\\n            preserveRB: typeof preserveRB === \\\"boolean\\\" ? preserveRB : true,\\n          };\\n          break;\\n\\n        case \\\"JavaScript\\\":\\n          const jsAction = action.get(\\\"JS\\\");\\n          let js;\\n\\n          if (jsAction instanceof BaseStream) {\\n            js = jsAction.getString();\\n          } else if (typeof jsAction === \\\"string\\\") {\\n            js = jsAction;\\n          }\\n\\n          const jsURL =\\n            js &&\\n            recoverJsURL(\\n              stringToPDFString(js, \u002F* keepEscapeSequence = *\u002F true)\\n            );\\n          if (jsURL) {\\n            url = jsURL.url;\\n            resultObj.newWindow = jsURL.newWindow;\\n            break;\\n          }\\n        \u002F* falls through *\u002F\\n        default:\\n          if (actionName === \\\"JavaScript\\\" || actionName === \\\"SubmitForm\\\") {\\n            \u002F\u002F Don't bother the user with a warning for actions that require\\n            \u002F\u002F scripting support, since those will be handled separately.\\n            break;\\n          }\\n          warn(`parseDestDictionary - unsupported action: \\\"${actionName}\\\".`);\\n          break;\\n      }\\n    } else if (destDict.has(\\\"Dest\\\")) {\\n      \u002F\u002F Simple destination.\\n      dest = destDict.get(\\\"Dest\\\");\\n    }\\n\\n    if (typeof url === \\\"string\\\") {\\n      const absoluteUrl = createValidAbsoluteUrl(url, docBaseUrl, {\\n        addDefaultProtocol: true,\\n        tryConvertEncoding: true,\\n      });\\n      if (absoluteUrl) {\\n        resultObj.url = absoluteUrl.href;\\n      }\\n      resultObj.unsafeUrl = url;\\n    }\\n    if (dest) {\\n      if (dest instanceof Name) {\\n        dest = dest.name;\\n      }\\n      if (typeof dest === \\\"string\\\") {\\n        resultObj.dest = stringToPDFString(\\n          dest,\\n          \u002F* keepEscapeSequence = *\u002F true\\n        );\\n      } else if (isValidExplicitDest(dest)) {\\n        resultObj.dest = dest;\\n      }\\n    }\\n  }\\n}\\n\\nexport { Catalog };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { Dict, Ref, RefSet } from \\\".\u002Fprimitives.js\\\";\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { MissingDataException } from \\\".\u002Fcore_utils.js\\\";\\nimport { warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nfunction mayHaveChildren(value) {\\n  return (\\n    value instanceof Ref ||\\n    value instanceof Dict ||\\n    value instanceof BaseStream ||\\n    Array.isArray(value)\\n  );\\n}\\n\\nfunction addChildren(node, nodesToVisit) {\\n  if (node instanceof Dict) {\\n    node = node.getRawValues();\\n  } else if (node instanceof BaseStream) {\\n    node = node.dict.getRawValues();\\n  } else if (!Array.isArray(node)) {\\n    return;\\n  }\\n  for (const rawValue of node) {\\n    if (mayHaveChildren(rawValue)) {\\n      nodesToVisit.push(rawValue);\\n    }\\n  }\\n}\\n\\n\u002F**\\n * A helper for loading missing data in `Dict` graphs. It traverses the graph\\n * depth first and queues up any objects that have missing data. Once it has\\n * has traversed as many objects that are available it attempts to bundle the\\n * missing data requests and then resume from the nodes that weren't ready.\\n *\\n * NOTE: It provides protection from circular references by keeping track of\\n * loaded references. However, you must be careful not to load any graphs\\n * that have references to the catalog or other pages since that will cause the\\n * entire PDF document object graph to be traversed.\\n *\u002F\\nclass ObjectLoader {\\n  refSet = new RefSet();\\n\\n  constructor(dict, keys, xref) {\\n    this.dict = dict;\\n    this.keys = keys;\\n    this.xref = xref;\\n  }\\n\\n  async load() {\\n    const { keys, dict } = this;\\n    \u002F\u002F Setup the initial nodes to visit.\\n    const nodesToVisit = [];\\n    for (const key of keys) {\\n      const rawValue = dict.getRaw(key);\\n      \u002F\u002F Skip nodes that are guaranteed to be empty.\\n      if (rawValue !== undefined) {\\n        nodesToVisit.push(rawValue);\\n      }\\n    }\\n    await this.#walk(nodesToVisit);\\n\\n    this.refSet = null; \u002F\u002F Everything is loaded, clear the cache.\\n  }\\n\\n  async #walk(nodesToVisit) {\\n    const nodesToRevisit = [];\\n    const pendingRequests = [];\\n    \u002F\u002F DFS walk of the object graph.\\n    while (nodesToVisit.length) {\\n      let currentNode = nodesToVisit.pop();\\n\\n      \u002F\u002F Only references or chunked streams can cause missing data exceptions.\\n      if (currentNode instanceof Ref) {\\n        \u002F\u002F Skip nodes that have already been visited.\\n        if (this.refSet.has(currentNode)) {\\n          continue;\\n        }\\n        try {\\n          this.refSet.put(currentNode);\\n          currentNode = this.xref.fetch(currentNode);\\n        } catch (ex) {\\n          if (!(ex instanceof MissingDataException)) {\\n            warn(`ObjectLoader.#walk - requesting all data: \\\"${ex}\\\".`);\\n\\n            await this.xref.stream.manager.requestAllChunks();\\n            return;\\n          }\\n          nodesToRevisit.push(currentNode);\\n          pendingRequests.push({ begin: ex.begin, end: ex.end });\\n        }\\n      }\\n      if (currentNode instanceof BaseStream) {\\n        const baseStreams = currentNode.getBaseStreams();\\n        if (baseStreams) {\\n          let foundMissingData = false;\\n          for (const stream of baseStreams) {\\n            if (stream.isDataLoaded) {\\n              continue;\\n            }\\n            foundMissingData = true;\\n            pendingRequests.push({ begin: stream.start, end: stream.end });\\n          }\\n          if (foundMissingData) {\\n            nodesToRevisit.push(currentNode);\\n          }\\n        }\\n      }\\n\\n      addChildren(currentNode, nodesToVisit);\\n    }\\n\\n    if (pendingRequests.length) {\\n      await this.xref.stream.manager.requestRanges(pendingRequests);\\n\\n      for (const node of nodesToRevisit) {\\n        \u002F\u002F Remove any reference nodes from the current `RefSet` so they\\n        \u002F\u002F aren't skipped when we revist them.\\n        if (node instanceof Ref) {\\n          this.refSet.remove(node);\\n        }\\n      }\\n      await this.#walk(nodesToRevisit);\\n    }\\n  }\\n\\n  static async load(obj, keys, xref) {\\n    \u002F\u002F Don't walk the graph if all the data is already loaded.\\n    if (xref.stream.isDataLoaded) {\\n      return;\\n    }\\n    \u002F\u002F eslint-disable-next-line no-restricted-syntax\\n    const objLoader = new ObjectLoader(obj, keys, xref);\\n    await objLoader.load();\\n  }\\n}\\n\\nexport { ObjectLoader };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F We use these symbols to avoid name conflict between tags\\n\u002F\u002F and properties\u002Fmethods names.\\nconst $acceptWhitespace = Symbol();\\nconst $addHTML = Symbol();\\nconst $appendChild = Symbol();\\nconst $childrenToHTML = Symbol();\\nconst $clean = Symbol();\\nconst $cleanPage = Symbol();\\nconst $cleanup = Symbol();\\nconst $clone = Symbol();\\nconst $consumed = Symbol();\\nconst $content = Symbol(\\\"content\\\");\\nconst $data = Symbol(\\\"data\\\");\\nconst $dump = Symbol();\\nconst $extra = Symbol(\\\"extra\\\");\\nconst $finalize = Symbol();\\nconst $flushHTML = Symbol();\\nconst $getAttributeIt = Symbol();\\nconst $getAttributes = Symbol();\\nconst $getAvailableSpace = Symbol();\\nconst $getChildrenByClass = Symbol();\\nconst $getChildrenByName = Symbol();\\nconst $getChildrenByNameIt = Symbol();\\nconst $getDataValue = Symbol();\\nconst $getExtra = Symbol();\\nconst $getRealChildrenByNameIt = Symbol();\\nconst $getChildren = Symbol();\\nconst $getContainedChildren = Symbol();\\nconst $getNextPage = Symbol();\\nconst $getSubformParent = Symbol();\\nconst $getParent = Symbol();\\nconst $getTemplateRoot = Symbol();\\nconst $globalData = Symbol();\\nconst $hasSettableValue = Symbol();\\nconst $ids = Symbol();\\nconst $indexOf = Symbol();\\nconst $insertAt = Symbol();\\nconst $isCDATAXml = Symbol();\\nconst $isBindable = Symbol();\\nconst $isDataValue = Symbol();\\nconst $isDescendent = Symbol();\\nconst $isNsAgnostic = Symbol();\\nconst $isSplittable = Symbol();\\nconst $isThereMoreWidth = Symbol();\\nconst $isTransparent = Symbol();\\nconst $isUsable = Symbol();\\nconst $lastAttribute = Symbol();\\nconst $namespaceId = Symbol(\\\"namespaceId\\\");\\nconst $nodeName = Symbol(\\\"nodeName\\\");\\nconst $nsAttributes = Symbol();\\nconst $onChild = Symbol();\\nconst $onChildCheck = Symbol();\\nconst $onText = Symbol();\\nconst $pushGlyphs = Symbol();\\nconst $popPara = Symbol();\\nconst $pushPara = Symbol();\\nconst $removeChild = Symbol();\\nconst $root = Symbol(\\\"root\\\");\\nconst $resolvePrototypes = Symbol();\\nconst $searchNode = Symbol();\\nconst $setId = Symbol();\\nconst $setSetAttributes = Symbol();\\nconst $setValue = Symbol();\\nconst $tabIndex = Symbol();\\nconst $text = Symbol();\\nconst $toPages = Symbol();\\nconst $toHTML = Symbol();\\nconst $toString = Symbol();\\nconst $toStyle = Symbol();\\nconst $uid = Symbol(\\\"uid\\\");\\n\\nexport {\\n  $acceptWhitespace,\\n  $addHTML,\\n  $appendChild,\\n  $childrenToHTML,\\n  $clean,\\n  $cleanPage,\\n  $cleanup,\\n  $clone,\\n  $consumed,\\n  $content,\\n  $data,\\n  $dump,\\n  $extra,\\n  $finalize,\\n  $flushHTML,\\n  $getAttributeIt,\\n  $getAttributes,\\n  $getAvailableSpace,\\n  $getChildren,\\n  $getChildrenByClass,\\n  $getChildrenByName,\\n  $getChildrenByNameIt,\\n  $getContainedChildren,\\n  $getDataValue,\\n  $getExtra,\\n  $getNextPage,\\n  $getParent,\\n  $getRealChildrenByNameIt,\\n  $getSubformParent,\\n  $getTemplateRoot,\\n  $globalData,\\n  $hasSettableValue,\\n  $ids,\\n  $indexOf,\\n  $insertAt,\\n  $isBindable,\\n  $isCDATAXml,\\n  $isDataValue,\\n  $isDescendent,\\n  $isNsAgnostic,\\n  $isSplittable,\\n  $isThereMoreWidth,\\n  $isTransparent,\\n  $isUsable,\\n  $lastAttribute,\\n  $namespaceId,\\n  $nodeName,\\n  $nsAttributes,\\n  $onChild,\\n  $onChildCheck,\\n  $onText,\\n  $popPara,\\n  $pushGlyphs,\\n  $pushPara,\\n  $removeChild,\\n  $resolvePrototypes,\\n  $root,\\n  $searchNode,\\n  $setId,\\n  $setSetAttributes,\\n  $setValue,\\n  $tabIndex,\\n  $text,\\n  $toHTML,\\n  $toPages,\\n  $toString,\\n  $toStyle,\\n  $uid,\\n};\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nconst $buildXFAObject = Symbol();\\n\\nconst NamespaceIds = {\\n  config: {\\n    id: 0,\\n    check: ns => ns.startsWith(\\\"http:\u002F\u002Fwww.xfa.org\u002Fschema\u002Fxci\u002F\\\"),\\n  },\\n  connectionSet: {\\n    id: 1,\\n    check: ns => ns.startsWith(\\\"http:\u002F\u002Fwww.xfa.org\u002Fschema\u002Fxfa-connection-set\u002F\\\"),\\n  },\\n  datasets: {\\n    id: 2,\\n    check: ns => ns.startsWith(\\\"http:\u002F\u002Fwww.xfa.org\u002Fschema\u002Fxfa-data\u002F\\\"),\\n  },\\n  form: {\\n    id: 3,\\n    check: ns => ns.startsWith(\\\"http:\u002F\u002Fwww.xfa.org\u002Fschema\u002Fxfa-form\u002F\\\"),\\n  },\\n  localeSet: {\\n    id: 4,\\n    check: ns => ns.startsWith(\\\"http:\u002F\u002Fwww.xfa.org\u002Fschema\u002Fxfa-locale-set\u002F\\\"),\\n  },\\n  pdf: {\\n    id: 5,\\n    check: ns => ns === \\\"http:\u002F\u002Fns.adobe.com\u002Fxdp\u002Fpdf\u002F\\\",\\n  },\\n  signature: {\\n    id: 6,\\n    check: ns => ns === \\\"http:\u002F\u002Fwww.w3.org\u002F2000\u002F09\u002Fxmldsig#\\\",\\n  },\\n  sourceSet: {\\n    id: 7,\\n    check: ns => ns.startsWith(\\\"http:\u002F\u002Fwww.xfa.org\u002Fschema\u002Fxfa-source-set\u002F\\\"),\\n  },\\n  stylesheet: {\\n    id: 8,\\n    check: ns => ns === \\\"http:\u002F\u002Fwww.w3.org\u002F1999\u002FXSL\u002FTransform\\\",\\n  },\\n  template: {\\n    id: 9,\\n    check: ns => ns.startsWith(\\\"http:\u002F\u002Fwww.xfa.org\u002Fschema\u002Fxfa-template\u002F\\\"),\\n  },\\n  xdc: {\\n    id: 10,\\n    check: ns => ns.startsWith(\\\"http:\u002F\u002Fwww.xfa.org\u002Fschema\u002Fxdc\u002F\\\"),\\n  },\\n  xdp: {\\n    id: 11,\\n    check: ns => ns === \\\"http:\u002F\u002Fns.adobe.com\u002Fxdp\u002F\\\",\\n  },\\n  xfdf: {\\n    id: 12,\\n    check: ns => ns === \\\"http:\u002F\u002Fns.adobe.com\u002Fxfdf\u002F\\\",\\n  },\\n  xhtml: {\\n    id: 13,\\n    check: ns => ns === \\\"http:\u002F\u002Fwww.w3.org\u002F1999\u002Fxhtml\\\",\\n  },\\n  xmpmeta: {\\n    id: 14,\\n    check: ns => ns === \\\"http:\u002F\u002Fns.adobe.com\u002Fxmpmeta\u002F\\\",\\n  },\\n};\\n\\nexport { $buildXFAObject, NamespaceIds };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { MathClamp, shadow } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\n\\nconst dimConverters = {\\n  pt: x => x,\\n  cm: x => (x \u002F 2.54) * 72,\\n  mm: x => (x \u002F (10 * 2.54)) * 72,\\n  in: x => x * 72,\\n  px: x => x,\\n};\\nconst measurementPattern = \u002F([+-]?\\\\d+\\\\.?\\\\d*)(.*)\u002F;\\n\\nfunction stripQuotes(str) {\\n  if (str.startsWith(\\\"'\\\") || str.startsWith('\\\"')) {\\n    return str.slice(1, -1);\\n  }\\n  return str;\\n}\\n\\nfunction getInteger({ data, defaultValue, validate }) {\\n  if (!data) {\\n    return defaultValue;\\n  }\\n  data = data.trim();\\n  const n = parseInt(data, 10);\\n  if (!isNaN(n) && validate(n)) {\\n    return n;\\n  }\\n  return defaultValue;\\n}\\n\\nfunction getFloat({ data, defaultValue, validate }) {\\n  if (!data) {\\n    return defaultValue;\\n  }\\n  data = data.trim();\\n  const n = parseFloat(data);\\n  if (!isNaN(n) && validate(n)) {\\n    return n;\\n  }\\n  return defaultValue;\\n}\\n\\nfunction getKeyword({ data, defaultValue, validate }) {\\n  if (!data) {\\n    return defaultValue;\\n  }\\n  data = data.trim();\\n  if (validate(data)) {\\n    return data;\\n  }\\n  return defaultValue;\\n}\\n\\nfunction getStringOption(data, options) {\\n  return getKeyword({\\n    data,\\n    defaultValue: options[0],\\n    validate: k => options.includes(k),\\n  });\\n}\\n\\nfunction getMeasurement(str, def = \\\"0\\\") {\\n  def ||= \\\"0\\\";\\n  if (!str) {\\n    return getMeasurement(def);\\n  }\\n  const match = str.trim().match(measurementPattern);\\n  if (!match) {\\n    return getMeasurement(def);\\n  }\\n  const [, valueStr, unit] = match;\\n  const value = parseFloat(valueStr);\\n  if (isNaN(value)) {\\n    return getMeasurement(def);\\n  }\\n\\n  if (value === 0) {\\n    return 0;\\n  }\\n\\n  const conv = dimConverters[unit];\\n  if (conv) {\\n    return conv(value);\\n  }\\n\\n  return value;\\n}\\n\\nfunction getRatio(data) {\\n  if (!data) {\\n    return { num: 1, den: 1 };\\n  }\\n  const ratio = data\\n    .split(\\\":\\\", 2)\\n    .map(x => parseFloat(x.trim()))\\n    .filter(x => !isNaN(x));\\n  if (ratio.length === 1) {\\n    ratio.push(1);\\n  }\\n\\n  if (ratio.length === 0) {\\n    return { num: 1, den: 1 };\\n  }\\n\\n  const [num, den] = ratio;\\n  return { num, den };\\n}\\n\\nfunction getRelevant(data) {\\n  if (!data) {\\n    return [];\\n  }\\n  return data\\n    .trim()\\n    .split(\u002F\\\\s+\u002F)\\n    .map(e => ({\\n      excluded: e[0] === \\\"-\\\",\\n      viewname: e.substring(1),\\n    }));\\n}\\n\\nfunction getColor(data, def = [0, 0, 0]) {\\n  let [r, g, b] = def;\\n  if (!data) {\\n    return { r, g, b };\\n  }\\n  const color = data\\n    .split(\\\",\\\", 3)\\n    .map(c => MathClamp(parseInt(c.trim(), 10), 0, 255))\\n    .map(c => (isNaN(c) ? 0 : c));\\n\\n  if (color.length \u003C 3) {\\n    return { r, g, b };\\n  }\\n\\n  [r, g, b] = color;\\n  return { r, g, b };\\n}\\n\\nfunction getBBox(data) {\\n  const def = -1;\\n  if (!data) {\\n    return { x: def, y: def, width: def, height: def };\\n  }\\n  const bbox = data.split(\\\",\\\", 4).map(m => getMeasurement(m.trim(), \\\"-1\\\"));\\n\\n  if (bbox.length \u003C 4 || bbox[2] \u003C 0 || bbox[3] \u003C 0) {\\n    return { x: def, y: def, width: def, height: def };\\n  }\\n\\n  const [x, y, width, height] = bbox;\\n  return { x, y, width, height };\\n}\\n\\nclass HTMLResult {\\n  static get FAILURE() {\\n    return shadow(this, \\\"FAILURE\\\", new HTMLResult(false, null, null, null));\\n  }\\n\\n  static get EMPTY() {\\n    return shadow(this, \\\"EMPTY\\\", new HTMLResult(true, null, null, null));\\n  }\\n\\n  constructor(success, html, bbox, breakNode) {\\n    this.success = success;\\n    this.html = html;\\n    this.bbox = bbox;\\n    this.breakNode = breakNode;\\n  }\\n\\n  isBreak() {\\n    return !!this.breakNode;\\n  }\\n\\n  static breakNode(node) {\\n    return new HTMLResult(false, null, null, node);\\n  }\\n\\n  static success(html, bbox = null) {\\n    return new HTMLResult(true, html, bbox, null);\\n  }\\n}\\n\\nexport {\\n  getBBox,\\n  getColor,\\n  getFloat,\\n  getInteger,\\n  getKeyword,\\n  getMeasurement,\\n  getRatio,\\n  getRelevant,\\n  getStringOption,\\n  HTMLResult,\\n  stripQuotes,\\n};\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { $globalData } from \\\".\u002Fsymbol_utils.js\\\";\\nimport { stripQuotes } from \\\".\u002Futils.js\\\";\\nimport { warn } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\n\\nclass FontFinder {\\n  constructor(pdfFonts) {\\n    this.fonts = new Map();\\n    this.cache = new Map();\\n    this.warned = new Set();\\n    this.defaultFont = null;\\n    this.add(pdfFonts);\\n  }\\n\\n  add(pdfFonts, reallyMissingFonts = null) {\\n    for (const pdfFont of pdfFonts) {\\n      this.addPdfFont(pdfFont);\\n    }\\n    for (const pdfFont of this.fonts.values()) {\\n      if (!pdfFont.regular) {\\n        pdfFont.regular = pdfFont.italic || pdfFont.bold || pdfFont.bolditalic;\\n      }\\n    }\\n\\n    if (!reallyMissingFonts || reallyMissingFonts.size === 0) {\\n      return;\\n    }\\n    const myriad = this.fonts.get(\\\"PdfJS-Fallback-PdfJS-XFA\\\");\\n    for (const missing of reallyMissingFonts) {\\n      this.fonts.set(missing, myriad);\\n    }\\n  }\\n\\n  addPdfFont(pdfFont) {\\n    const cssFontInfo = pdfFont.cssFontInfo;\\n    const name = cssFontInfo.fontFamily;\\n    let font = this.fonts.get(name);\\n    if (!font) {\\n      font = Object.create(null);\\n      this.fonts.set(name, font);\\n      if (!this.defaultFont) {\\n        this.defaultFont = font;\\n      }\\n    }\\n    let property = \\\"\\\";\\n    const fontWeight = parseFloat(cssFontInfo.fontWeight);\\n    if (parseFloat(cssFontInfo.italicAngle) !== 0) {\\n      property = fontWeight >= 700 ? \\\"bolditalic\\\" : \\\"italic\\\";\\n    } else if (fontWeight >= 700) {\\n      property = \\\"bold\\\";\\n    }\\n\\n    if (!property) {\\n      if (pdfFont.name.includes(\\\"Bold\\\") || pdfFont.psName?.includes(\\\"Bold\\\")) {\\n        property = \\\"bold\\\";\\n      }\\n      if (\\n        pdfFont.name.includes(\\\"Italic\\\") ||\\n        pdfFont.name.endsWith(\\\"It\\\") ||\\n        pdfFont.psName?.includes(\\\"Italic\\\") ||\\n        pdfFont.psName?.endsWith(\\\"It\\\")\\n      ) {\\n        property += \\\"italic\\\";\\n      }\\n    }\\n\\n    if (!property) {\\n      property = \\\"regular\\\";\\n    }\\n\\n    font[property] = pdfFont;\\n  }\\n\\n  getDefault() {\\n    return this.defaultFont;\\n  }\\n\\n  find(fontName, mustWarn = true) {\\n    let font = this.fonts.get(fontName) || this.cache.get(fontName);\\n    if (font) {\\n      return font;\\n    }\\n\\n    const pattern = \u002F,|-|_| |bolditalic|bold|italic|regular|it\u002Fgi;\\n    let name = fontName.replaceAll(pattern, \\\"\\\");\\n    font = this.fonts.get(name);\\n    if (font) {\\n      this.cache.set(fontName, font);\\n      return font;\\n    }\\n    name = name.toLowerCase();\\n\\n    const maybe = [];\\n    for (const [family, pdfFont] of this.fonts.entries()) {\\n      if (family.replaceAll(pattern, \\\"\\\").toLowerCase().startsWith(name)) {\\n        maybe.push(pdfFont);\\n      }\\n    }\\n\\n    if (maybe.length === 0) {\\n      for (const [, pdfFont] of this.fonts.entries()) {\\n        if (\\n          pdfFont.regular.name\\n            ?.replaceAll(pattern, \\\"\\\")\\n            .toLowerCase()\\n            .startsWith(name)\\n        ) {\\n          maybe.push(pdfFont);\\n        }\\n      }\\n    }\\n\\n    if (maybe.length === 0) {\\n      name = name.replaceAll(\u002Fpsmt|mt\u002Fgi, \\\"\\\");\\n      for (const [family, pdfFont] of this.fonts.entries()) {\\n        if (family.replaceAll(pattern, \\\"\\\").toLowerCase().startsWith(name)) {\\n          maybe.push(pdfFont);\\n        }\\n      }\\n    }\\n\\n    if (maybe.length === 0) {\\n      for (const pdfFont of this.fonts.values()) {\\n        if (\\n          pdfFont.regular.name\\n            ?.replaceAll(pattern, \\\"\\\")\\n            .toLowerCase()\\n            .startsWith(name)\\n        ) {\\n          maybe.push(pdfFont);\\n        }\\n      }\\n    }\\n\\n    if (maybe.length >= 1) {\\n      if (maybe.length !== 1 && mustWarn) {\\n        warn(`XFA - Too many choices to guess the correct font: ${fontName}`);\\n      }\\n      this.cache.set(fontName, maybe[0]);\\n      return maybe[0];\\n    }\\n\\n    if (mustWarn && !this.warned.has(fontName)) {\\n      this.warned.add(fontName);\\n      warn(`XFA - Cannot find the font: ${fontName}`);\\n    }\\n    return null;\\n  }\\n}\\n\\nfunction selectFont(xfaFont, typeface) {\\n  if (xfaFont.posture === \\\"italic\\\") {\\n    if (xfaFont.weight === \\\"bold\\\") {\\n      return typeface.bolditalic;\\n    }\\n    return typeface.italic;\\n  } else if (xfaFont.weight === \\\"bold\\\") {\\n    return typeface.bold;\\n  }\\n\\n  return typeface.regular;\\n}\\n\\nfunction getMetrics(xfaFont, real = false) {\\n  let pdfFont = null;\\n  if (xfaFont) {\\n    const name = stripQuotes(xfaFont.typeface);\\n    const typeface = xfaFont[$globalData].fontFinder.find(name);\\n    pdfFont = selectFont(xfaFont, typeface);\\n  }\\n\\n  if (!pdfFont) {\\n    return {\\n      lineHeight: 12,\\n      lineGap: 2,\\n      lineNoGap: 10,\\n    };\\n  }\\n\\n  const size = xfaFont.size || 10;\\n  const lineHeight = pdfFont.lineHeight\\n    ? Math.max(real ? 0 : 1.2, pdfFont.lineHeight)\\n    : 1.2;\\n  const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;\\n  return {\\n    lineHeight: lineHeight * size,\\n    lineGap: lineGap * size,\\n    lineNoGap: Math.max(1, lineHeight - lineGap) * size,\\n  };\\n}\\n\\nexport { FontFinder, getMetrics, selectFont };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { selectFont } from \\\".\u002Ffonts.js\\\";\\n\\nconst WIDTH_FACTOR = 1.02;\\n\\nclass FontInfo {\\n  constructor(xfaFont, margin, lineHeight, fontFinder) {\\n    this.lineHeight = lineHeight;\\n    this.paraMargin = margin || {\\n      top: 0,\\n      bottom: 0,\\n      left: 0,\\n      right: 0,\\n    };\\n\\n    if (!xfaFont) {\\n      [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\\n      return;\\n    }\\n\\n    this.xfaFont = {\\n      typeface: xfaFont.typeface,\\n      posture: xfaFont.posture,\\n      weight: xfaFont.weight,\\n      size: xfaFont.size,\\n      letterSpacing: xfaFont.letterSpacing,\\n    };\\n    const typeface = fontFinder.find(xfaFont.typeface);\\n    if (!typeface) {\\n      [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\\n      return;\\n    }\\n\\n    this.pdfFont = selectFont(xfaFont, typeface);\\n\\n    if (!this.pdfFont) {\\n      [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\\n    }\\n  }\\n\\n  defaultFont(fontFinder) {\\n    \u002F\u002F TODO: Add a default font based on Liberation.\\n    const font =\\n      fontFinder.find(\\\"Helvetica\\\", false) ||\\n      fontFinder.find(\\\"Myriad Pro\\\", false) ||\\n      fontFinder.find(\\\"Arial\\\", false) ||\\n      fontFinder.getDefault();\\n    if (font?.regular) {\\n      const pdfFont = font.regular;\\n      const info = pdfFont.cssFontInfo;\\n      const xfaFont = {\\n        typeface: info.fontFamily,\\n        posture: \\\"normal\\\",\\n        weight: \\\"normal\\\",\\n        size: 10,\\n        letterSpacing: 0,\\n      };\\n      return [pdfFont, xfaFont];\\n    }\\n\\n    const xfaFont = {\\n      typeface: \\\"Courier\\\",\\n      posture: \\\"normal\\\",\\n      weight: \\\"normal\\\",\\n      size: 10,\\n      letterSpacing: 0,\\n    };\\n    return [null, xfaFont];\\n  }\\n}\\n\\nclass FontSelector {\\n  constructor(\\n    defaultXfaFont,\\n    defaultParaMargin,\\n    defaultLineHeight,\\n    fontFinder\\n  ) {\\n    this.fontFinder = fontFinder;\\n    this.stack = [\\n      new FontInfo(\\n        defaultXfaFont,\\n        defaultParaMargin,\\n        defaultLineHeight,\\n        fontFinder\\n      ),\\n    ];\\n  }\\n\\n  pushData(xfaFont, margin, lineHeight) {\\n    const lastFont = this.stack.at(-1);\\n    for (const name of [\\n      \\\"typeface\\\",\\n      \\\"posture\\\",\\n      \\\"weight\\\",\\n      \\\"size\\\",\\n      \\\"letterSpacing\\\",\\n    ]) {\\n      if (!xfaFont[name]) {\\n        xfaFont[name] = lastFont.xfaFont[name];\\n      }\\n    }\\n\\n    for (const name of [\\\"top\\\", \\\"bottom\\\", \\\"left\\\", \\\"right\\\"]) {\\n      if (isNaN(margin[name])) {\\n        margin[name] = lastFont.paraMargin[name];\\n      }\\n    }\\n\\n    const fontInfo = new FontInfo(\\n      xfaFont,\\n      margin,\\n      lineHeight || lastFont.lineHeight,\\n      this.fontFinder\\n    );\\n    if (!fontInfo.pdfFont) {\\n      fontInfo.pdfFont = lastFont.pdfFont;\\n    }\\n\\n    this.stack.push(fontInfo);\\n  }\\n\\n  popFont() {\\n    this.stack.pop();\\n  }\\n\\n  topFont() {\\n    return this.stack.at(-1);\\n  }\\n}\\n\\n\u002F**\\n * Compute a text area dimensions based on font metrics.\\n *\u002F\\nclass TextMeasure {\\n  constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts) {\\n    this.glyphs = [];\\n    this.fontSelector = new FontSelector(\\n      defaultXfaFont,\\n      defaultParaMargin,\\n      defaultLineHeight,\\n      fonts\\n    );\\n    this.extraHeight = 0;\\n  }\\n\\n  pushData(xfaFont, margin, lineHeight) {\\n    this.fontSelector.pushData(xfaFont, margin, lineHeight);\\n  }\\n\\n  popFont(xfaFont) {\\n    return this.fontSelector.popFont();\\n  }\\n\\n  addPara() {\\n    const lastFont = this.fontSelector.topFont();\\n    this.extraHeight += lastFont.paraMargin.top + lastFont.paraMargin.bottom;\\n  }\\n\\n  addString(str) {\\n    if (!str) {\\n      return;\\n    }\\n\\n    const lastFont = this.fontSelector.topFont();\\n    const fontSize = lastFont.xfaFont.size;\\n    if (lastFont.pdfFont) {\\n      const letterSpacing = lastFont.xfaFont.letterSpacing;\\n      const pdfFont = lastFont.pdfFont;\\n      const fontLineHeight = pdfFont.lineHeight || 1.2;\\n      const lineHeight =\\n        lastFont.lineHeight || Math.max(1.2, fontLineHeight) * fontSize;\\n      const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;\\n      const noGap = fontLineHeight - lineGap;\\n      const firstLineHeight = Math.max(1, noGap) * fontSize;\\n      const scale = fontSize \u002F 1000;\\n      const fallbackWidth =\\n        pdfFont.defaultWidth || pdfFont.charsToGlyphs(\\\" \\\")[0].width;\\n\\n      for (const line of str.split(\u002F[\\\\u2029\\\\n]\u002F)) {\\n        const encodedLine = pdfFont.encodeString(line).join(\\\"\\\");\\n        const glyphs = pdfFont.charsToGlyphs(encodedLine);\\n\\n        for (const glyph of glyphs) {\\n          const width = glyph.width || fallbackWidth;\\n          this.glyphs.push([\\n            width * scale + letterSpacing,\\n            lineHeight,\\n            firstLineHeight,\\n            glyph.unicode,\\n            false,\\n          ]);\\n        }\\n\\n        this.glyphs.push([0, 0, 0, \\\"\\\\n\\\", true]);\\n      }\\n      this.glyphs.pop();\\n      return;\\n    }\\n\\n    \u002F\u002F When we have no font in the pdf, just use the font size as default width.\\n    for (const line of str.split(\u002F[\\\\u2029\\\\n]\u002F)) {\\n      for (const char of line.split(\\\"\\\")) {\\n        this.glyphs.push([fontSize, 1.2 * fontSize, fontSize, char, false]);\\n      }\\n\\n      this.glyphs.push([0, 0, 0, \\\"\\\\n\\\", true]);\\n    }\\n    this.glyphs.pop();\\n  }\\n\\n  compute(maxWidth) {\\n    let lastSpacePos = -1,\\n      lastSpaceWidth = 0,\\n      width = 0,\\n      height = 0,\\n      currentLineWidth = 0,\\n      currentLineHeight = 0;\\n    let isBroken = false;\\n    let isFirstLine = true;\\n\\n    for (let i = 0, ii = this.glyphs.length; i \u003C ii; i++) {\\n      const [glyphWidth, lineHeight, firstLineHeight, char, isEOL] =\\n        this.glyphs[i];\\n      const isSpace = char === \\\" \\\";\\n      const glyphHeight = isFirstLine ? firstLineHeight : lineHeight;\\n      if (isEOL) {\\n        width = Math.max(width, currentLineWidth);\\n        currentLineWidth = 0;\\n        height += currentLineHeight;\\n        currentLineHeight = glyphHeight;\\n        lastSpacePos = -1;\\n        lastSpaceWidth = 0;\\n        isFirstLine = false;\\n        continue;\\n      }\\n\\n      if (isSpace) {\\n        if (currentLineWidth + glyphWidth > maxWidth) {\\n          \u002F\u002F We can break here but the space is not taken into account.\\n          width = Math.max(width, currentLineWidth);\\n          currentLineWidth = 0;\\n          height += currentLineHeight;\\n          currentLineHeight = glyphHeight;\\n          lastSpacePos = -1;\\n          lastSpaceWidth = 0;\\n          isBroken = true;\\n          isFirstLine = false;\\n        } else {\\n          currentLineHeight = Math.max(glyphHeight, currentLineHeight);\\n          lastSpaceWidth = currentLineWidth;\\n          currentLineWidth += glyphWidth;\\n          lastSpacePos = i;\\n        }\\n        continue;\\n      }\\n\\n      if (currentLineWidth + glyphWidth > maxWidth) {\\n        \u002F\u002F We must break to the last white position (if available)\\n        height += currentLineHeight;\\n        currentLineHeight = glyphHeight;\\n        if (lastSpacePos !== -1) {\\n          i = lastSpacePos;\\n          width = Math.max(width, lastSpaceWidth);\\n          currentLineWidth = 0;\\n          lastSpacePos = -1;\\n          lastSpaceWidth = 0;\\n        } else {\\n          \u002F\u002F Just break in the middle of the word\\n          width = Math.max(width, currentLineWidth);\\n          currentLineWidth = glyphWidth;\\n        }\\n        isBroken = true;\\n        isFirstLine = false;\\n\\n        continue;\\n      }\\n\\n      currentLineWidth += glyphWidth;\\n      currentLineHeight = Math.max(glyphHeight, currentLineHeight);\\n    }\\n\\n    width = Math.max(width, currentLineWidth);\\n    height += currentLineHeight + this.extraHeight;\\n\\n    return { width: WIDTH_FACTOR * width, height, isBroken };\\n  }\\n}\\n\\nexport { TextMeasure };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  $getChildren,\\n  $getChildrenByClass,\\n  $getChildrenByName,\\n  $getParent,\\n} from \\\".\u002Fsymbol_utils.js\\\";\\nimport { warn } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\n\\nconst namePattern = \u002F^[^.[]+\u002F;\\nconst indexPattern = \u002F^[^\\\\]]+\u002F;\\nconst operators = {\\n  dot: 0,\\n  dotDot: 1,\\n  dotHash: 2,\\n  dotBracket: 3,\\n  dotParen: 4,\\n};\\n\\nconst shortcuts = new Map([\\n  [\\\"$data\\\", (root, current) => (root.datasets ? root.datasets.data : root)],\\n  [\\n    \\\"$record\\\",\\n    (root, current) =>\\n      (root.datasets ? root.datasets.data : root)[$getChildren]()[0],\\n  ],\\n  [\\\"$template\\\", (root, current) => root.template],\\n  [\\\"$connectionSet\\\", (root, current) => root.connectionSet],\\n  [\\\"$form\\\", (root, current) => root.form],\\n  [\\\"$layout\\\", (root, current) => root.layout],\\n  [\\\"$host\\\", (root, current) => root.host],\\n  [\\\"$dataWindow\\\", (root, current) => root.dataWindow],\\n  [\\\"$event\\\", (root, current) => root.event],\\n  [\\\"!\\\", (root, current) => root.datasets],\\n  [\\\"$xfa\\\", (root, current) => root],\\n  [\\\"xfa\\\", (root, current) => root],\\n  [\\\"$\\\", (root, current) => current],\\n]);\\n\\nconst somCache = new WeakMap();\\n\\nfunction parseIndex(index) {\\n  index = index.trim();\\n  if (index === \\\"*\\\") {\\n    return Infinity;\\n  }\\n  return parseInt(index, 10) || 0;\\n}\\n\\n\u002F\u002F For now expressions containing .[...] or .(...) are not\\n\u002F\u002F evaluated so don't parse them.\\n\u002F\u002F TODO: implement that stuff and the remove the noExpr param.\\nfunction parseExpression(expr, dotDotAllowed, noExpr = true) {\\n  let match = expr.match(namePattern);\\n  if (!match) {\\n    return null;\\n  }\\n\\n  let [name] = match;\\n  const parsed = [\\n    {\\n      name,\\n      cacheName: \\\".\\\" + name,\\n      index: 0,\\n      js: null,\\n      formCalc: null,\\n      operator: operators.dot,\\n    },\\n  ];\\n\\n  let pos = name.length;\\n\\n  while (pos \u003C expr.length) {\\n    const spos = pos;\\n    const char = expr.charAt(pos++);\\n    if (char === \\\"[\\\") {\\n      match = expr.slice(pos).match(indexPattern);\\n      if (!match) {\\n        warn(\\\"XFA - Invalid index in SOM expression\\\");\\n        return null;\\n      }\\n      parsed.at(-1).index = parseIndex(match[0]);\\n      pos += match[0].length + 1;\\n      continue;\\n    }\\n\\n    let operator;\\n    switch (expr.charAt(pos)) {\\n      case \\\".\\\":\\n        if (!dotDotAllowed) {\\n          return null;\\n        }\\n        pos++;\\n        operator = operators.dotDot;\\n        break;\\n      case \\\"#\\\":\\n        pos++;\\n        operator = operators.dotHash;\\n        break;\\n      case \\\"[\\\":\\n        if (noExpr) {\\n          warn(\\n            \\\"XFA - SOM expression contains a FormCalc subexpression which is not supported for now.\\\"\\n          );\\n          return null;\\n        }\\n        \u002F\u002F TODO: FormCalc expression so need to use the parser\\n        operator = operators.dotBracket;\\n        break;\\n      case \\\"(\\\":\\n        if (noExpr) {\\n          warn(\\n            \\\"XFA - SOM expression contains a JavaScript subexpression which is not supported for now.\\\"\\n          );\\n          return null;\\n        }\\n        \u002F\u002F TODO:\\n        \u002F\u002F JavaScript expression: should be a boolean operation with a path\\n        \u002F\u002F so maybe we can have our own parser for that stuff or\\n        \u002F\u002F maybe use the formcalc one.\\n        operator = operators.dotParen;\\n        break;\\n      default:\\n        operator = operators.dot;\\n        break;\\n    }\\n\\n    match = expr.slice(pos).match(namePattern);\\n    if (!match) {\\n      break;\\n    }\\n\\n    [name] = match;\\n    pos += name.length;\\n    parsed.push({\\n      name,\\n      cacheName: expr.slice(spos, pos),\\n      operator,\\n      index: 0,\\n      js: null,\\n      formCalc: null,\\n    });\\n  }\\n  return parsed;\\n}\\n\\nfunction searchNode(\\n  root,\\n  container,\\n  expr,\\n  dotDotAllowed = true,\\n  useCache = true\\n) {\\n  const parsed = parseExpression(expr, dotDotAllowed);\\n  if (!parsed) {\\n    return null;\\n  }\\n\\n  const fn = shortcuts.get(parsed[0].name);\\n  let i = 0;\\n  let isQualified;\\n  if (fn) {\\n    isQualified = true;\\n    root = [fn(root, container)];\\n    i = 1;\\n  } else {\\n    isQualified = container === null;\\n    root = [container || root];\\n  }\\n\\n  for (let ii = parsed.length; i \u003C ii; i++) {\\n    const { name, cacheName, operator, index } = parsed[i];\\n    const nodes = [];\\n    for (const node of root) {\\n      if (!node.isXFAObject) {\\n        continue;\\n      }\\n\\n      let children, cached;\\n\\n      if (useCache) {\\n        cached = somCache.get(node);\\n        if (!cached) {\\n          cached = new Map();\\n          somCache.set(node, cached);\\n        }\\n        children = cached.get(cacheName);\\n      }\\n\\n      if (!children) {\\n        switch (operator) {\\n          case operators.dot:\\n            children = node[$getChildrenByName](name, false);\\n            break;\\n          case operators.dotDot:\\n            children = node[$getChildrenByName](name, true);\\n            break;\\n          case operators.dotHash:\\n            children = node[$getChildrenByClass](name);\\n            children = children.isXFAObjectArray\\n              ? children.children\\n              : [children];\\n            break;\\n          default:\\n            break;\\n        }\\n        if (useCache) {\\n          cached.set(cacheName, children);\\n        }\\n      }\\n\\n      if (children.length > 0) {\\n        nodes.push(children);\\n      }\\n    }\\n\\n    if (nodes.length === 0 && !isQualified && i === 0) {\\n      \u002F\u002F We've an unqualified expression and we didn't find anything\\n      \u002F\u002F so look at container and siblings of container and so on.\\n      \u002F\u002F http:\u002F\u002Fciteseerx.ist.psu.edu\u002Fviewdoc\u002Fdownload?doi=10.1.1.364.2157&rep=rep1&type=pdf#page=114\\n      const parent = container[$getParent]();\\n      container = parent;\\n      if (!container) {\\n        return null;\\n      }\\n      i = -1;\\n      root = [container];\\n      continue;\\n    }\\n\\n    root = isFinite(index)\\n      ? nodes.filter(node => index \u003C node.length).map(node => node[index])\\n      : nodes.flat();\\n  }\\n\\n  if (root.length === 0) {\\n    return null;\\n  }\\n\\n  return root;\\n}\\n\\nfunction createDataNode(root, container, expr) {\\n  const parsed = parseExpression(expr);\\n  if (!parsed) {\\n    return null;\\n  }\\n\\n  if (parsed.some(x => x.operator === operators.dotDot)) {\\n    return null;\\n  }\\n\\n  const fn = shortcuts.get(parsed[0].name);\\n  let i = 0;\\n  if (fn) {\\n    root = fn(root, container);\\n    i = 1;\\n  } else {\\n    root = container || root;\\n  }\\n\\n  for (let ii = parsed.length; i \u003C ii; i++) {\\n    const { name, operator, index } = parsed[i];\\n    if (!isFinite(index)) {\\n      parsed[i].index = 0;\\n      return root.createNodes(parsed.slice(i));\\n    }\\n\\n    let children;\\n    switch (operator) {\\n      case operators.dot:\\n        children = root[$getChildrenByName](name, false);\\n        break;\\n      case operators.dotDot:\\n        children = root[$getChildrenByName](name, true);\\n        break;\\n      case operators.dotHash:\\n        children = root[$getChildrenByClass](name);\\n        children = children.isXFAObjectArray ? children.children : [children];\\n        break;\\n      default:\\n        break;\\n    }\\n\\n    if (children.length === 0) {\\n      return root.createNodes(parsed.slice(i));\\n    }\\n\\n    if (index \u003C children.length) {\\n      const child = children[index];\\n      if (!child.isXFAObject) {\\n        warn(`XFA - Cannot create a node.`);\\n        return null;\\n      }\\n      root = child;\\n    } else {\\n      parsed[i].index = index - children.length;\\n      return root.createNodes(parsed.slice(i));\\n    }\\n  }\\n  return null;\\n}\\n\\nexport { createDataNode, searchNode };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  $acceptWhitespace,\\n  $addHTML,\\n  $appendChild,\\n  $childrenToHTML,\\n  $clean,\\n  $cleanup,\\n  $clone,\\n  $consumed,\\n  $content,\\n  $dump,\\n  $extra,\\n  $finalize,\\n  $flushHTML,\\n  $getAttributeIt,\\n  $getAttributes,\\n  $getAvailableSpace,\\n  $getChildren,\\n  $getChildrenByClass,\\n  $getChildrenByName,\\n  $getChildrenByNameIt,\\n  $getContainedChildren,\\n  $getDataValue,\\n  $getParent,\\n  $getRealChildrenByNameIt,\\n  $getSubformParent,\\n  $getTemplateRoot,\\n  $globalData,\\n  $hasSettableValue,\\n  $indexOf,\\n  $insertAt,\\n  $isBindable,\\n  $isCDATAXml,\\n  $isDataValue,\\n  $isDescendent,\\n  $isNsAgnostic,\\n  $isSplittable,\\n  $isThereMoreWidth,\\n  $isTransparent,\\n  $lastAttribute,\\n  $namespaceId,\\n  $nodeName,\\n  $nsAttributes,\\n  $onChild,\\n  $onChildCheck,\\n  $onText,\\n  $popPara,\\n  $pushPara,\\n  $removeChild,\\n  $resolvePrototypes,\\n  $root,\\n  $setId,\\n  $setSetAttributes,\\n  $setValue,\\n  $text,\\n  $toHTML,\\n  $toString,\\n  $toStyle,\\n  $uid,\\n} from \\\".\u002Fsymbol_utils.js\\\";\\nimport { getInteger, getKeyword, HTMLResult } from \\\".\u002Futils.js\\\";\\nimport { shadow, utf8StringToString, warn } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport { encodeToXmlString } from \\\"..\u002Fcore_utils.js\\\";\\nimport { NamespaceIds } from \\\".\u002Fnamespaces.js\\\";\\nimport { searchNode } from \\\".\u002Fsom.js\\\";\\n\\nconst _applyPrototype = Symbol();\\nconst _attributes = Symbol();\\nconst _attributeNames = Symbol();\\nconst _children = Symbol(\\\"_children\\\");\\nconst _cloneAttribute = Symbol();\\nconst _dataValue = Symbol();\\nconst _defaultValue = Symbol();\\nconst _filteredChildrenGenerator = Symbol();\\nconst _getPrototype = Symbol();\\nconst _getUnsetAttributes = Symbol();\\nconst _hasChildren = Symbol();\\nconst _max = Symbol();\\nconst _options = Symbol();\\nconst _parent = Symbol(\\\"parent\\\");\\nconst _resolvePrototypesHelper = Symbol();\\nconst _setAttributes = Symbol();\\nconst _validator = Symbol();\\n\\nlet uid = 0;\\n\\nconst NS_DATASETS = NamespaceIds.datasets.id;\\n\\nclass XFAObject {\\n  constructor(nsId, name, hasChildren = false) {\\n    this[$namespaceId] = nsId;\\n    this[$nodeName] = name;\\n    this[_hasChildren] = hasChildren;\\n    this[_parent] = null;\\n    this[_children] = [];\\n    this[$uid] = `${name}${uid++}`;\\n    this[$globalData] = null;\\n  }\\n\\n  get isXFAObject() {\\n    return true;\\n  }\\n\\n  get isXFAObjectArray() {\\n    return false;\\n  }\\n\\n  createNodes(path) {\\n    let root = this,\\n      node = null;\\n    for (const { name, index } of path) {\\n      for (let i = 0, ii = isFinite(index) ? index : 0; i \u003C= ii; i++) {\\n        const nsId =\\n          root[$namespaceId] === NS_DATASETS ? -1 : root[$namespaceId];\\n        node = new XmlObject(nsId, name);\\n        root[$appendChild](node);\\n      }\\n      root = node;\\n    }\\n    return node;\\n  }\\n\\n  [$onChild](child) {\\n    if (!this[_hasChildren] || !this[$onChildCheck](child)) {\\n      return false;\\n    }\\n\\n    const name = child[$nodeName];\\n    const node = this[name];\\n\\n    if (node instanceof XFAObjectArray) {\\n      if (node.push(child)) {\\n        this[$appendChild](child);\\n        return true;\\n      }\\n    } else {\\n      \u002F\u002F IRL it's possible to already have a node.\\n      \u002F\u002F So just replace it with the last version.\\n      if (node !== null) {\\n        this[$removeChild](node);\\n      }\\n      this[name] = child;\\n      this[$appendChild](child);\\n      return true;\\n    }\\n\\n    let id = \\\"\\\";\\n    if (this.id) {\\n      id = ` (id: ${this.id})`;\\n    } else if (this.name) {\\n      id = ` (name: ${this.name} ${this.h.value})`;\\n    }\\n    warn(`XFA - node \\\"${this[$nodeName]}\\\"${id} has already enough \\\"${name}\\\"!`);\\n    return false;\\n  }\\n\\n  [$onChildCheck](child) {\\n    return (\\n      this.hasOwnProperty(child[$nodeName]) &&\\n      child[$namespaceId] === this[$namespaceId]\\n    );\\n  }\\n\\n  [$isNsAgnostic]() {\\n    return false;\\n  }\\n\\n  [$acceptWhitespace]() {\\n    return false;\\n  }\\n\\n  [$isCDATAXml]() {\\n    return false;\\n  }\\n\\n  [$isBindable]() {\\n    return false;\\n  }\\n\\n  [$popPara]() {\\n    if (this.para) {\\n      this[$getTemplateRoot]()[$extra].paraStack.pop();\\n    }\\n  }\\n\\n  [$pushPara]() {\\n    this[$getTemplateRoot]()[$extra].paraStack.push(this.para);\\n  }\\n\\n  [$setId](ids) {\\n    if (this.id && this[$namespaceId] === NamespaceIds.template.id) {\\n      ids.set(this.id, this);\\n    }\\n  }\\n\\n  [$getTemplateRoot]() {\\n    return this[$globalData].template;\\n  }\\n\\n  [$isSplittable]() {\\n    return false;\\n  }\\n\\n  \u002F**\\n     Return true if this node (typically a container)\\n     can provide more width during layout.\\n     The goal is to help to know what a descendant must\\n     do in case of horizontal overflow.\\n   *\u002F\\n  [$isThereMoreWidth]() {\\n    return false;\\n  }\\n\\n  [$appendChild](child) {\\n    child[_parent] = this;\\n    this[_children].push(child);\\n    if (!child[$globalData] && this[$globalData]) {\\n      child[$globalData] = this[$globalData];\\n    }\\n  }\\n\\n  [$removeChild](child) {\\n    const i = this[_children].indexOf(child);\\n    this[_children].splice(i, 1);\\n  }\\n\\n  [$hasSettableValue]() {\\n    return this.hasOwnProperty(\\\"value\\\");\\n  }\\n\\n  [$setValue](_) {}\\n\\n  [$onText](_) {}\\n\\n  [$finalize]() {}\\n\\n  [$clean](builder) {\\n    delete this[_hasChildren];\\n    if (this[$cleanup]) {\\n      builder.clean(this[$cleanup]);\\n      delete this[$cleanup];\\n    }\\n  }\\n\\n  [$indexOf](child) {\\n    return this[_children].indexOf(child);\\n  }\\n\\n  [$insertAt](i, child) {\\n    child[_parent] = this;\\n    this[_children].splice(i, 0, child);\\n    if (!child[$globalData] && this[$globalData]) {\\n      child[$globalData] = this[$globalData];\\n    }\\n  }\\n\\n  \u002F**\\n   * If true the element is transparent when searching a node using\\n   * a SOM expression which means that looking for \\\"foo.bar\\\" in\\n   * \u003C... name=\\\"foo\\\">\u003Ctoto>\u003Ctiti>\u003C... name=\\\"bar\\\">\u003C\u002Ftiti>\u003C\u002Ftoto>...\\n   * is fine because toto and titi are transparent.\\n   *\u002F\\n  [$isTransparent]() {\\n    return !this.name;\\n  }\\n\\n  [$lastAttribute]() {\\n    return \\\"\\\";\\n  }\\n\\n  [$text]() {\\n    if (this[_children].length === 0) {\\n      return this[$content];\\n    }\\n    return this[_children].map(c => c[$text]()).join(\\\"\\\");\\n  }\\n\\n  get [_attributeNames]() {\\n    \u002F\u002F Lazily get attributes names\\n    const proto = Object.getPrototypeOf(this);\\n    if (!proto._attributes) {\\n      const attributes = (proto._attributes = new Set());\\n      for (const name of Object.getOwnPropertyNames(this)) {\\n        if (\\n          this[name] === null ||\\n          this[name] instanceof XFAObject ||\\n          this[name] instanceof XFAObjectArray\\n        ) {\\n          break;\\n        }\\n        attributes.add(name);\\n      }\\n    }\\n    return shadow(this, _attributeNames, proto._attributes);\\n  }\\n\\n  [$isDescendent](parent) {\\n    let node = this;\\n    while (node) {\\n      if (node === parent) {\\n        return true;\\n      }\\n      node = node[$getParent]();\\n    }\\n    return false;\\n  }\\n\\n  [$getParent]() {\\n    return this[_parent];\\n  }\\n\\n  [$getSubformParent]() {\\n    return this[$getParent]();\\n  }\\n\\n  [$getChildren](name = null) {\\n    if (!name) {\\n      return this[_children];\\n    }\\n\\n    return this[name];\\n  }\\n\\n  [$dump]() {\\n    const dumped = Object.create(null);\\n    if (this[$content]) {\\n      dumped.$content = this[$content];\\n    }\\n\\n    for (const name of Object.getOwnPropertyNames(this)) {\\n      const value = this[name];\\n      if (value === null) {\\n        continue;\\n      }\\n      if (value instanceof XFAObject) {\\n        dumped[name] = value[$dump]();\\n      } else if (value instanceof XFAObjectArray) {\\n        if (!value.isEmpty()) {\\n          dumped[name] = value.dump();\\n        }\\n      } else {\\n        dumped[name] = value;\\n      }\\n    }\\n\\n    return dumped;\\n  }\\n\\n  [$toStyle]() {\\n    return null;\\n  }\\n\\n  [$toHTML]() {\\n    return HTMLResult.EMPTY;\\n  }\\n\\n  *[$getContainedChildren]() {\\n    \u002F\u002F This function is overriden in Subform and SubformSet.\\n    for (const node of this[$getChildren]()) {\\n      yield node;\\n    }\\n  }\\n\\n  *[_filteredChildrenGenerator](filter, include) {\\n    for (const node of this[$getContainedChildren]()) {\\n      if (!filter || include === filter.has(node[$nodeName])) {\\n        const availableSpace = this[$getAvailableSpace]();\\n        const res = node[$toHTML](availableSpace);\\n        if (!res.success) {\\n          this[$extra].failingNode = node;\\n        }\\n        yield res;\\n      }\\n    }\\n  }\\n\\n  [$flushHTML]() {\\n    return null;\\n  }\\n\\n  [$addHTML](html, bbox) {\\n    this[$extra].children.push(html);\\n  }\\n\\n  [$getAvailableSpace]() {}\\n\\n  [$childrenToHTML]({ filter = null, include = true }) {\\n    if (!this[$extra].generator) {\\n      this[$extra].generator = this[_filteredChildrenGenerator](\\n        filter,\\n        include\\n      );\\n    } else {\\n      const availableSpace = this[$getAvailableSpace]();\\n      const res = this[$extra].failingNode[$toHTML](availableSpace);\\n      if (!res.success) {\\n        return res;\\n      }\\n      if (res.html) {\\n        this[$addHTML](res.html, res.bbox);\\n      }\\n      delete this[$extra].failingNode;\\n    }\\n\\n    while (true) {\\n      const gen = this[$extra].generator.next();\\n      if (gen.done) {\\n        break;\\n      }\\n      const res = gen.value;\\n      if (!res.success) {\\n        return res;\\n      }\\n      if (res.html) {\\n        this[$addHTML](res.html, res.bbox);\\n      }\\n    }\\n\\n    this[$extra].generator = null;\\n\\n    return HTMLResult.EMPTY;\\n  }\\n\\n  [$setSetAttributes](attributes) {\\n    \u002F\u002F Just keep set attributes because it can be used in a proto.\\n    this[_setAttributes] = new Set(Object.keys(attributes));\\n  }\\n\\n  \u002F**\\n   * Get attribute names which have been set in the proto but not in this.\\n   *\u002F\\n  [_getUnsetAttributes](protoAttributes) {\\n    const allAttr = this[_attributeNames];\\n    const setAttr = this[_setAttributes];\\n    return [...protoAttributes].filter(x => allAttr.has(x) && !setAttr.has(x));\\n  }\\n\\n  \u002F**\\n   * Update the node with properties coming from a prototype and apply\\n   * this function recursively to all children.\\n   *\u002F\\n  [$resolvePrototypes](ids, ancestors = new Set()) {\\n    for (const child of this[_children]) {\\n      child[_resolvePrototypesHelper](ids, ancestors);\\n    }\\n  }\\n\\n  [_resolvePrototypesHelper](ids, ancestors) {\\n    const proto = this[_getPrototype](ids, ancestors);\\n    if (proto) {\\n      \u002F\u002F _applyPrototype will apply $resolvePrototypes with correct ancestors\\n      \u002F\u002F to avoid infinite loop.\\n      this[_applyPrototype](proto, ids, ancestors);\\n    } else {\\n      this[$resolvePrototypes](ids, ancestors);\\n    }\\n  }\\n\\n  [_getPrototype](ids, ancestors) {\\n    const { use, usehref } = this;\\n    if (!use && !usehref) {\\n      return null;\\n    }\\n\\n    let proto = null;\\n    let somExpression = null;\\n    let id = null;\\n    let ref = use;\\n\\n    \u002F\u002F If usehref and use are non-empty then use usehref.\\n    if (usehref) {\\n      ref = usehref;\\n      \u002F\u002F Href can be one of the following:\\n      \u002F\u002F - #ID\\n      \u002F\u002F - URI#ID\\n      \u002F\u002F - #som(expression)\\n      \u002F\u002F - URI#som(expression)\\n      \u002F\u002F - URI\\n      \u002F\u002F For now we don't handle URI other than \\\".\\\" (current document).\\n      if (usehref.startsWith(\\\"#som(\\\") && usehref.endsWith(\\\")\\\")) {\\n        somExpression = usehref.slice(\\\"#som(\\\".length, -1);\\n      } else if (usehref.startsWith(\\\".#som(\\\") && usehref.endsWith(\\\")\\\")) {\\n        somExpression = usehref.slice(\\\".#som(\\\".length, -1);\\n      } else if (usehref.startsWith(\\\"#\\\")) {\\n        id = usehref.slice(1);\\n      } else if (usehref.startsWith(\\\".#\\\")) {\\n        id = usehref.slice(2);\\n      }\\n    } else if (use.startsWith(\\\"#\\\")) {\\n      id = use.slice(1);\\n    } else {\\n      somExpression = use;\\n    }\\n\\n    this.use = this.usehref = \\\"\\\";\\n    if (id) {\\n      proto = ids.get(id);\\n    } else {\\n      proto = searchNode(\\n        ids.get($root),\\n        this,\\n        somExpression,\\n        true \u002F* = dotDotAllowed *\u002F,\\n        false \u002F* = useCache *\u002F\\n      );\\n      if (proto) {\\n        proto = proto[0];\\n      }\\n    }\\n\\n    if (!proto) {\\n      warn(`XFA - Invalid prototype reference: ${ref}.`);\\n      return null;\\n    }\\n\\n    if (proto[$nodeName] !== this[$nodeName]) {\\n      warn(\\n        `XFA - Incompatible prototype: ${proto[$nodeName]} !== ${this[$nodeName]}.`\\n      );\\n      return null;\\n    }\\n\\n    if (ancestors.has(proto)) {\\n      \u002F\u002F We've a cycle so break it.\\n      warn(`XFA - Cycle detected in prototypes use.`);\\n      return null;\\n    }\\n\\n    ancestors.add(proto);\\n\\n    \u002F\u002F The prototype can have a \\\"use\\\" attribute itself.\\n    const protoProto = proto[_getPrototype](ids, ancestors);\\n    if (protoProto) {\\n      proto[_applyPrototype](protoProto, ids, ancestors);\\n    }\\n\\n    \u002F\u002F The prototype can have a child which itself has a \\\"use\\\" property.\\n    proto[$resolvePrototypes](ids, ancestors);\\n\\n    ancestors.delete(proto);\\n\\n    return proto;\\n  }\\n\\n  [_applyPrototype](proto, ids, ancestors) {\\n    if (ancestors.has(proto)) {\\n      \u002F\u002F We've a cycle so break it.\\n      warn(`XFA - Cycle detected in prototypes use.`);\\n      return;\\n    }\\n\\n    if (!this[$content] && proto[$content]) {\\n      this[$content] = proto[$content];\\n    }\\n\\n    const newAncestors = new Set(ancestors);\\n    newAncestors.add(proto);\\n\\n    for (const unsetAttrName of this[_getUnsetAttributes](\\n      proto[_setAttributes]\\n    )) {\\n      this[unsetAttrName] = proto[unsetAttrName];\\n      if (this[_setAttributes]) {\\n        this[_setAttributes].add(unsetAttrName);\\n      }\\n    }\\n\\n    for (const name of Object.getOwnPropertyNames(this)) {\\n      if (this[_attributeNames].has(name)) {\\n        continue;\\n      }\\n      const value = this[name];\\n      const protoValue = proto[name];\\n\\n      if (value instanceof XFAObjectArray) {\\n        for (const child of value[_children]) {\\n          child[_resolvePrototypesHelper](ids, ancestors);\\n        }\\n\\n        for (\\n          let i = value[_children].length, ii = protoValue[_children].length;\\n          i \u003C ii;\\n          i++\\n        ) {\\n          const child = proto[_children][i][$clone]();\\n          if (value.push(child)) {\\n            child[_parent] = this;\\n            this[_children].push(child);\\n            child[_resolvePrototypesHelper](ids, ancestors);\\n          } else {\\n            \u002F\u002F No need to continue: other nodes will be rejected.\\n            break;\\n          }\\n        }\\n        continue;\\n      }\\n\\n      if (value !== null) {\\n        value[$resolvePrototypes](ids, ancestors);\\n        if (protoValue) {\\n          \u002F\u002F protoValue must be treated as a prototype for value.\\n          value[_applyPrototype](protoValue, ids, ancestors);\\n        }\\n        continue;\\n      }\\n\\n      if (protoValue !== null) {\\n        const child = protoValue[$clone]();\\n        child[_parent] = this;\\n        this[name] = child;\\n        this[_children].push(child);\\n        child[_resolvePrototypesHelper](ids, ancestors);\\n      }\\n    }\\n  }\\n\\n  static [_cloneAttribute](obj) {\\n    if (Array.isArray(obj)) {\\n      return obj.map(x => XFAObject[_cloneAttribute](x));\\n    }\\n    if (typeof obj === \\\"object\\\" && obj !== null) {\\n      return Object.assign({}, obj);\\n    }\\n    return obj;\\n  }\\n\\n  [$clone]() {\\n    const clone = Object.create(Object.getPrototypeOf(this));\\n    for (const $symbol of Object.getOwnPropertySymbols(this)) {\\n      try {\\n        clone[$symbol] = this[$symbol];\\n      } catch {\\n        shadow(clone, $symbol, this[$symbol]);\\n      }\\n    }\\n    clone[$uid] = `${clone[$nodeName]}${uid++}`;\\n    clone[_children] = [];\\n\\n    for (const name of Object.getOwnPropertyNames(this)) {\\n      if (this[_attributeNames].has(name)) {\\n        clone[name] = XFAObject[_cloneAttribute](this[name]);\\n        continue;\\n      }\\n      const value = this[name];\\n      clone[name] =\\n        value instanceof XFAObjectArray\\n          ? new XFAObjectArray(value[_max])\\n          : null;\\n    }\\n\\n    for (const child of this[_children]) {\\n      const name = child[$nodeName];\\n      const clonedChild = child[$clone]();\\n      clone[_children].push(clonedChild);\\n      clonedChild[_parent] = clone;\\n      if (clone[name] === null) {\\n        clone[name] = clonedChild;\\n      } else {\\n        clone[name][_children].push(clonedChild);\\n      }\\n    }\\n\\n    return clone;\\n  }\\n\\n  [$getChildren](name = null) {\\n    if (!name) {\\n      return this[_children];\\n    }\\n\\n    return this[_children].filter(c => c[$nodeName] === name);\\n  }\\n\\n  [$getChildrenByClass](name) {\\n    return this[name];\\n  }\\n\\n  [$getChildrenByName](name, allTransparent, first = true) {\\n    return Array.from(this[$getChildrenByNameIt](name, allTransparent, first));\\n  }\\n\\n  *[$getChildrenByNameIt](name, allTransparent, first = true) {\\n    if (name === \\\"parent\\\") {\\n      yield this[_parent];\\n      return;\\n    }\\n\\n    for (const child of this[_children]) {\\n      if (child[$nodeName] === name) {\\n        yield child;\\n      }\\n\\n      if (child.name === name) {\\n        yield child;\\n      }\\n\\n      if (allTransparent || child[$isTransparent]()) {\\n        yield* child[$getChildrenByNameIt](name, allTransparent, false);\\n      }\\n    }\\n\\n    if (first && this[_attributeNames].has(name)) {\\n      yield new XFAAttribute(this, name, this[name]);\\n    }\\n  }\\n}\\n\\nclass XFAObjectArray {\\n  constructor(max = Infinity) {\\n    this[_max] = max;\\n    this[_children] = [];\\n  }\\n\\n  get isXFAObject() {\\n    return false;\\n  }\\n\\n  get isXFAObjectArray() {\\n    return true;\\n  }\\n\\n  push(child) {\\n    const len = this[_children].length;\\n    if (len \u003C= this[_max]) {\\n      this[_children].push(child);\\n      return true;\\n    }\\n    warn(\\n      `XFA - node \\\"${child[$nodeName]}\\\" accepts no more than ${this[_max]} children`\\n    );\\n    return false;\\n  }\\n\\n  isEmpty() {\\n    return this[_children].length === 0;\\n  }\\n\\n  dump() {\\n    return this[_children].length === 1\\n      ? this[_children][0][$dump]()\\n      : this[_children].map(x => x[$dump]());\\n  }\\n\\n  [$clone]() {\\n    const clone = new XFAObjectArray(this[_max]);\\n    clone[_children] = this[_children].map(c => c[$clone]());\\n    return clone;\\n  }\\n\\n  get children() {\\n    return this[_children];\\n  }\\n\\n  clear() {\\n    this[_children].length = 0;\\n  }\\n}\\n\\nclass XFAAttribute {\\n  constructor(node, name, value) {\\n    this[_parent] = node;\\n    this[$nodeName] = name;\\n    this[$content] = value;\\n    this[$consumed] = false;\\n    this[$uid] = `attribute${uid++}`;\\n  }\\n\\n  [$getParent]() {\\n    return this[_parent];\\n  }\\n\\n  [$isDataValue]() {\\n    return true;\\n  }\\n\\n  [$getDataValue]() {\\n    return this[$content].trim();\\n  }\\n\\n  [$setValue](value) {\\n    value = value.value || \\\"\\\";\\n    this[$content] = value.toString();\\n  }\\n\\n  [$text]() {\\n    return this[$content];\\n  }\\n\\n  [$isDescendent](parent) {\\n    return this[_parent] === parent || this[_parent][$isDescendent](parent);\\n  }\\n}\\n\\nclass XmlObject extends XFAObject {\\n  constructor(nsId, name, attributes = {}) {\\n    super(nsId, name);\\n    this[$content] = \\\"\\\";\\n    this[_dataValue] = null;\\n    if (name !== \\\"#text\\\") {\\n      const map = new Map();\\n      this[_attributes] = map;\\n      for (const [attrName, value] of Object.entries(attributes)) {\\n        map.set(attrName, new XFAAttribute(this, attrName, value));\\n      }\\n      if (attributes.hasOwnProperty($nsAttributes)) {\\n        \u002F\u002F XFA attributes.\\n        const dataNode = attributes[$nsAttributes].xfa.dataNode;\\n        if (dataNode !== undefined) {\\n          if (dataNode === \\\"dataGroup\\\") {\\n            this[_dataValue] = false;\\n          } else if (dataNode === \\\"dataValue\\\") {\\n            this[_dataValue] = true;\\n          }\\n        }\\n      }\\n    }\\n    this[$consumed] = false;\\n  }\\n\\n  [$toString](buf) {\\n    const tagName = this[$nodeName];\\n    if (tagName === \\\"#text\\\") {\\n      buf.push(encodeToXmlString(this[$content]));\\n      return;\\n    }\\n    const utf8TagName = utf8StringToString(tagName);\\n    const prefix = this[$namespaceId] === NS_DATASETS ? \\\"xfa:\\\" : \\\"\\\";\\n    buf.push(`\u003C${prefix}${utf8TagName}`);\\n    for (const [name, value] of this[_attributes].entries()) {\\n      const utf8Name = utf8StringToString(name);\\n      buf.push(` ${utf8Name}=\\\"${encodeToXmlString(value[$content])}\\\"`);\\n    }\\n    if (this[_dataValue] !== null) {\\n      if (this[_dataValue]) {\\n        buf.push(` xfa:dataNode=\\\"dataValue\\\"`);\\n      } else {\\n        buf.push(` xfa:dataNode=\\\"dataGroup\\\"`);\\n      }\\n    }\\n    if (!this[$content] && this[_children].length === 0) {\\n      buf.push(\\\"\u002F>\\\");\\n      return;\\n    }\\n\\n    buf.push(\\\">\\\");\\n    if (this[$content]) {\\n      if (typeof this[$content] === \\\"string\\\") {\\n        buf.push(encodeToXmlString(this[$content]));\\n      } else {\\n        this[$content][$toString](buf);\\n      }\\n    } else {\\n      for (const child of this[_children]) {\\n        child[$toString](buf);\\n      }\\n    }\\n    buf.push(`\u003C\u002F${prefix}${utf8TagName}>`);\\n  }\\n\\n  [$onChild](child) {\\n    if (this[$content]) {\\n      const node = new XmlObject(this[$namespaceId], \\\"#text\\\");\\n      this[$appendChild](node);\\n      node[$content] = this[$content];\\n      this[$content] = \\\"\\\";\\n    }\\n    this[$appendChild](child);\\n    return true;\\n  }\\n\\n  [$onText](str) {\\n    this[$content] += str;\\n  }\\n\\n  [$finalize]() {\\n    if (this[$content] && this[_children].length > 0) {\\n      const node = new XmlObject(this[$namespaceId], \\\"#text\\\");\\n      this[$appendChild](node);\\n      node[$content] = this[$content];\\n      delete this[$content];\\n    }\\n  }\\n\\n  [$toHTML]() {\\n    if (this[$nodeName] === \\\"#text\\\") {\\n      return HTMLResult.success({\\n        name: \\\"#text\\\",\\n        value: this[$content],\\n      });\\n    }\\n\\n    return HTMLResult.EMPTY;\\n  }\\n\\n  [$getChildren](name = null) {\\n    if (!name) {\\n      return this[_children];\\n    }\\n\\n    return this[_children].filter(c => c[$nodeName] === name);\\n  }\\n\\n  [$getAttributes]() {\\n    return this[_attributes];\\n  }\\n\\n  [$getChildrenByClass](name) {\\n    const value = this[_attributes].get(name);\\n    if (value !== undefined) {\\n      return value;\\n    }\\n    return this[$getChildren](name);\\n  }\\n\\n  *[$getChildrenByNameIt](name, allTransparent) {\\n    const value = this[_attributes].get(name);\\n    if (value) {\\n      yield value;\\n    }\\n\\n    for (const child of this[_children]) {\\n      if (child[$nodeName] === name) {\\n        yield child;\\n      }\\n\\n      if (allTransparent) {\\n        yield* child[$getChildrenByNameIt](name, allTransparent);\\n      }\\n    }\\n  }\\n\\n  *[$getAttributeIt](name, skipConsumed) {\\n    const value = this[_attributes].get(name);\\n    if (value && (!skipConsumed || !value[$consumed])) {\\n      yield value;\\n    }\\n    for (const child of this[_children]) {\\n      yield* child[$getAttributeIt](name, skipConsumed);\\n    }\\n  }\\n\\n  *[$getRealChildrenByNameIt](name, allTransparent, skipConsumed) {\\n    for (const child of this[_children]) {\\n      if (child[$nodeName] === name && (!skipConsumed || !child[$consumed])) {\\n        yield child;\\n      }\\n\\n      if (allTransparent) {\\n        yield* child[$getRealChildrenByNameIt](\\n          name,\\n          allTransparent,\\n          skipConsumed\\n        );\\n      }\\n    }\\n  }\\n\\n  [$isDataValue]() {\\n    if (this[_dataValue] === null) {\\n      return (\\n        this[_children].length === 0 ||\\n        this[_children][0][$namespaceId] === NamespaceIds.xhtml.id\\n      );\\n    }\\n    return this[_dataValue];\\n  }\\n\\n  [$getDataValue]() {\\n    if (this[_dataValue] === null) {\\n      if (this[_children].length === 0) {\\n        return this[$content].trim();\\n      }\\n      if (this[_children][0][$namespaceId] === NamespaceIds.xhtml.id) {\\n        return this[_children][0][$text]().trim();\\n      }\\n      return null;\\n    }\\n    return this[$content].trim();\\n  }\\n\\n  [$setValue](value) {\\n    value = value.value || \\\"\\\";\\n    this[$content] = value.toString();\\n  }\\n\\n  [$dump](hasNS = false) {\\n    const dumped = Object.create(null);\\n    if (hasNS) {\\n      dumped.$ns = this[$namespaceId];\\n    }\\n    if (this[$content]) {\\n      dumped.$content = this[$content];\\n    }\\n    dumped.$name = this[$nodeName];\\n\\n    dumped.children = [];\\n    for (const child of this[_children]) {\\n      dumped.children.push(child[$dump](hasNS));\\n    }\\n\\n    dumped.attributes = Object.create(null);\\n    for (const [name, value] of this[_attributes]) {\\n      dumped.attributes[name] = value[$content];\\n    }\\n\\n    return dumped;\\n  }\\n}\\n\\nclass ContentObject extends XFAObject {\\n  constructor(nsId, name) {\\n    super(nsId, name);\\n    this[$content] = \\\"\\\";\\n  }\\n\\n  [$onText](text) {\\n    this[$content] += text;\\n  }\\n\\n  [$finalize]() {}\\n}\\n\\nclass OptionObject extends ContentObject {\\n  constructor(nsId, name, options) {\\n    super(nsId, name);\\n    this[_options] = options;\\n  }\\n\\n  [$finalize]() {\\n    this[$content] = getKeyword({\\n      data: this[$content],\\n      defaultValue: this[_options][0],\\n      validate: k => this[_options].includes(k),\\n    });\\n  }\\n\\n  [$clean](builder) {\\n    super[$clean](builder);\\n    delete this[_options];\\n  }\\n}\\n\\nclass StringObject extends ContentObject {\\n  [$finalize]() {\\n    this[$content] = this[$content].trim();\\n  }\\n}\\n\\nclass IntegerObject extends ContentObject {\\n  constructor(nsId, name, defaultValue, validator) {\\n    super(nsId, name);\\n    this[_defaultValue] = defaultValue;\\n    this[_validator] = validator;\\n  }\\n\\n  [$finalize]() {\\n    this[$content] = getInteger({\\n      data: this[$content],\\n      defaultValue: this[_defaultValue],\\n      validate: this[_validator],\\n    });\\n  }\\n\\n  [$clean](builder) {\\n    super[$clean](builder);\\n    delete this[_defaultValue];\\n    delete this[_validator];\\n  }\\n}\\n\\nclass Option01 extends IntegerObject {\\n  constructor(nsId, name) {\\n    super(nsId, name, 0, n => n === 1);\\n  }\\n}\\n\\nclass Option10 extends IntegerObject {\\n  constructor(nsId, name) {\\n    super(nsId, name, 1, n => n === 0);\\n  }\\n}\\n\\nexport {\\n  ContentObject,\\n  IntegerObject,\\n  Option01,\\n  Option10,\\n  OptionObject,\\n  StringObject,\\n  XFAAttribute,\\n  XFAObject,\\n  XFAObjectArray,\\n  XmlObject,\\n};\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  $content,\\n  $extra,\\n  $getParent,\\n  $getSubformParent,\\n  $getTemplateRoot,\\n  $globalData,\\n  $nodeName,\\n  $pushGlyphs,\\n  $text,\\n  $toStyle,\\n} from \\\".\u002Fsymbol_utils.js\\\";\\nimport { createValidAbsoluteUrl, warn } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport { getMeasurement, stripQuotes } from \\\".\u002Futils.js\\\";\\nimport { selectFont } from \\\".\u002Ffonts.js\\\";\\nimport { TextMeasure } from \\\".\u002Ftext.js\\\";\\nimport { XFAObject } from \\\".\u002Fxfa_object.js\\\";\\n\\nfunction measureToString(m) {\\n  if (typeof m === \\\"string\\\") {\\n    return \\\"0px\\\";\\n  }\\n\\n  return Number.isInteger(m) ? `${m}px` : `${m.toFixed(2)}px`;\\n}\\n\\nconst converters = {\\n  anchorType(node, style) {\\n    const parent = node[$getSubformParent]();\\n    if (!parent || (parent.layout && parent.layout !== \\\"position\\\")) {\\n      \u002F\u002F anchorType is only used in a positioned layout.\\n      return;\\n    }\\n\\n    if (!(\\\"transform\\\" in style)) {\\n      style.transform = \\\"\\\";\\n    }\\n    switch (node.anchorType) {\\n      case \\\"bottomCenter\\\":\\n        style.transform += \\\"translate(-50%, -100%)\\\";\\n        break;\\n      case \\\"bottomLeft\\\":\\n        style.transform += \\\"translate(0,-100%)\\\";\\n        break;\\n      case \\\"bottomRight\\\":\\n        style.transform += \\\"translate(-100%,-100%)\\\";\\n        break;\\n      case \\\"middleCenter\\\":\\n        style.transform += \\\"translate(-50%,-50%)\\\";\\n        break;\\n      case \\\"middleLeft\\\":\\n        style.transform += \\\"translate(0,-50%)\\\";\\n        break;\\n      case \\\"middleRight\\\":\\n        style.transform += \\\"translate(-100%,-50%)\\\";\\n        break;\\n      case \\\"topCenter\\\":\\n        style.transform += \\\"translate(-50%,0)\\\";\\n        break;\\n      case \\\"topRight\\\":\\n        style.transform += \\\"translate(-100%,0)\\\";\\n        break;\\n    }\\n  },\\n  dimensions(node, style) {\\n    const parent = node[$getSubformParent]();\\n    let width = node.w;\\n    const height = node.h;\\n    if (parent.layout?.includes(\\\"row\\\")) {\\n      const extra = parent[$extra];\\n      const colSpan = node.colSpan;\\n      let w;\\n      if (colSpan === -1) {\\n        w = Math.sumPrecise(extra.columnWidths.slice(extra.currentColumn));\\n        extra.currentColumn = 0;\\n      } else {\\n        w = Math.sumPrecise(\\n          extra.columnWidths.slice(\\n            extra.currentColumn,\\n            extra.currentColumn + colSpan\\n          )\\n        );\\n        extra.currentColumn =\\n          (extra.currentColumn + node.colSpan) % extra.columnWidths.length;\\n      }\\n\\n      if (!isNaN(w)) {\\n        width = node.w = w;\\n      }\\n    }\\n\\n    style.width = width !== \\\"\\\" ? measureToString(width) : \\\"auto\\\";\\n\\n    style.height = height !== \\\"\\\" ? measureToString(height) : \\\"auto\\\";\\n  },\\n  position(node, style) {\\n    const parent = node[$getSubformParent]();\\n    if (parent?.layout && parent.layout !== \\\"position\\\") {\\n      \u002F\u002F IRL, we've some x\u002Fy in tb layout.\\n      \u002F\u002F Specs say x\u002Fy is only used in positioned layout.\\n      return;\\n    }\\n\\n    style.position = \\\"absolute\\\";\\n    style.left = measureToString(node.x);\\n    style.top = measureToString(node.y);\\n  },\\n  rotate(node, style) {\\n    if (node.rotate) {\\n      if (!(\\\"transform\\\" in style)) {\\n        style.transform = \\\"\\\";\\n      }\\n      style.transform += `rotate(-${node.rotate}deg)`;\\n      style.transformOrigin = \\\"top left\\\";\\n    }\\n  },\\n  presence(node, style) {\\n    switch (node.presence) {\\n      case \\\"invisible\\\":\\n        style.visibility = \\\"hidden\\\";\\n        break;\\n      case \\\"hidden\\\":\\n      case \\\"inactive\\\":\\n        style.display = \\\"none\\\";\\n        break;\\n    }\\n  },\\n  hAlign(node, style) {\\n    if (node[$nodeName] === \\\"para\\\") {\\n      switch (node.hAlign) {\\n        case \\\"justifyAll\\\":\\n          style.textAlign = \\\"justify-all\\\";\\n          break;\\n        case \\\"radix\\\":\\n          \u002F\u002F TODO: implement this correctly !\\n          style.textAlign = \\\"left\\\";\\n          break;\\n        default:\\n          style.textAlign = node.hAlign;\\n      }\\n    } else {\\n      switch (node.hAlign) {\\n        case \\\"left\\\":\\n          style.alignSelf = \\\"start\\\";\\n          break;\\n        case \\\"center\\\":\\n          style.alignSelf = \\\"center\\\";\\n          break;\\n        case \\\"right\\\":\\n          style.alignSelf = \\\"end\\\";\\n          break;\\n      }\\n    }\\n  },\\n  margin(node, style) {\\n    if (node.margin) {\\n      style.margin = node.margin[$toStyle]().margin;\\n    }\\n  },\\n};\\n\\nfunction setMinMaxDimensions(node, style) {\\n  const parent = node[$getSubformParent]();\\n  if (parent.layout === \\\"position\\\") {\\n    if (node.minW > 0) {\\n      style.minWidth = measureToString(node.minW);\\n    }\\n    if (node.maxW > 0) {\\n      style.maxWidth = measureToString(node.maxW);\\n    }\\n    if (node.minH > 0) {\\n      style.minHeight = measureToString(node.minH);\\n    }\\n    if (node.maxH > 0) {\\n      style.maxHeight = measureToString(node.maxH);\\n    }\\n  }\\n}\\n\\nfunction layoutText(text, xfaFont, margin, lineHeight, fontFinder, width) {\\n  const measure = new TextMeasure(xfaFont, margin, lineHeight, fontFinder);\\n  if (typeof text === \\\"string\\\") {\\n    measure.addString(text);\\n  } else {\\n    text[$pushGlyphs](measure);\\n  }\\n\\n  return measure.compute(width);\\n}\\n\\nfunction layoutNode(node, availableSpace) {\\n  let height = null;\\n  let width = null;\\n  let isBroken = false;\\n\\n  if ((!node.w || !node.h) && node.value) {\\n    let marginH = 0;\\n    let marginV = 0;\\n    if (node.margin) {\\n      marginH = node.margin.leftInset + node.margin.rightInset;\\n      marginV = node.margin.topInset + node.margin.bottomInset;\\n    }\\n\\n    let lineHeight = null;\\n    let margin = null;\\n    if (node.para) {\\n      margin = Object.create(null);\\n      lineHeight = node.para.lineHeight === \\\"\\\" ? null : node.para.lineHeight;\\n      margin.top = node.para.spaceAbove === \\\"\\\" ? 0 : node.para.spaceAbove;\\n      margin.bottom = node.para.spaceBelow === \\\"\\\" ? 0 : node.para.spaceBelow;\\n      margin.left = node.para.marginLeft === \\\"\\\" ? 0 : node.para.marginLeft;\\n      margin.right = node.para.marginRight === \\\"\\\" ? 0 : node.para.marginRight;\\n    }\\n\\n    let font = node.font;\\n    if (!font) {\\n      const root = node[$getTemplateRoot]();\\n      let parent = node[$getParent]();\\n      while (parent && parent !== root) {\\n        if (parent.font) {\\n          font = parent.font;\\n          break;\\n        }\\n        parent = parent[$getParent]();\\n      }\\n    }\\n\\n    const maxWidth = (node.w || availableSpace.width) - marginH;\\n    const fontFinder = node[$globalData].fontFinder;\\n    if (\\n      node.value.exData &&\\n      node.value.exData[$content] &&\\n      node.value.exData.contentType === \\\"text\u002Fhtml\\\"\\n    ) {\\n      const res = layoutText(\\n        node.value.exData[$content],\\n        font,\\n        margin,\\n        lineHeight,\\n        fontFinder,\\n        maxWidth\\n      );\\n      width = res.width;\\n      height = res.height;\\n      isBroken = res.isBroken;\\n    } else {\\n      const text = node.value[$text]();\\n      if (text) {\\n        const res = layoutText(\\n          text,\\n          font,\\n          margin,\\n          lineHeight,\\n          fontFinder,\\n          maxWidth\\n        );\\n        width = res.width;\\n        height = res.height;\\n        isBroken = res.isBroken;\\n      }\\n    }\\n\\n    if (width !== null && !node.w) {\\n      width += marginH;\\n    }\\n\\n    if (height !== null && !node.h) {\\n      height += marginV;\\n    }\\n  }\\n  return { w: width, h: height, isBroken };\\n}\\n\\nfunction computeBbox(node, html, availableSpace) {\\n  let bbox;\\n  if (node.w !== \\\"\\\" && node.h !== \\\"\\\") {\\n    bbox = [node.x, node.y, node.w, node.h];\\n  } else {\\n    if (!availableSpace) {\\n      return null;\\n    }\\n    let width = node.w;\\n    if (width === \\\"\\\") {\\n      if (node.maxW === 0) {\\n        const parent = node[$getSubformParent]();\\n        width = parent.layout === \\\"position\\\" && parent.w !== \\\"\\\" ? 0 : node.minW;\\n      } else {\\n        width = Math.min(node.maxW, availableSpace.width);\\n      }\\n      html.attributes.style.width = measureToString(width);\\n    }\\n\\n    let height = node.h;\\n    if (height === \\\"\\\") {\\n      if (node.maxH === 0) {\\n        const parent = node[$getSubformParent]();\\n        height =\\n          parent.layout === \\\"position\\\" && parent.h !== \\\"\\\" ? 0 : node.minH;\\n      } else {\\n        height = Math.min(node.maxH, availableSpace.height);\\n      }\\n      html.attributes.style.height = measureToString(height);\\n    }\\n\\n    bbox = [node.x, node.y, width, height];\\n  }\\n  return bbox;\\n}\\n\\nfunction fixDimensions(node) {\\n  const parent = node[$getSubformParent]();\\n  if (parent.layout?.includes(\\\"row\\\")) {\\n    const extra = parent[$extra];\\n    const colSpan = node.colSpan;\\n    let width;\\n    if (colSpan === -1) {\\n      width = Math.sumPrecise(extra.columnWidths.slice(extra.currentColumn));\\n    } else {\\n      width = Math.sumPrecise(\\n        extra.columnWidths.slice(\\n          extra.currentColumn,\\n          extra.currentColumn + colSpan\\n        )\\n      );\\n    }\\n    if (!isNaN(width)) {\\n      node.w = width;\\n    }\\n  }\\n\\n  if (parent.layout && parent.layout !== \\\"position\\\") {\\n    \u002F\u002F Useless in this context.\\n    node.x = node.y = 0;\\n  }\\n\\n  if (node.layout === \\\"table\\\") {\\n    if (node.w === \\\"\\\" && Array.isArray(node.columnWidths)) {\\n      node.w = Math.sumPrecise(node.columnWidths);\\n    }\\n  }\\n}\\n\\nfunction layoutClass(node) {\\n  switch (node.layout) {\\n    case \\\"position\\\":\\n      return \\\"xfaPosition\\\";\\n    case \\\"lr-tb\\\":\\n      return \\\"xfaLrTb\\\";\\n    case \\\"rl-row\\\":\\n      return \\\"xfaRlRow\\\";\\n    case \\\"rl-tb\\\":\\n      return \\\"xfaRlTb\\\";\\n    case \\\"row\\\":\\n      return \\\"xfaRow\\\";\\n    case \\\"table\\\":\\n      return \\\"xfaTable\\\";\\n    case \\\"tb\\\":\\n      return \\\"xfaTb\\\";\\n    default:\\n      return \\\"xfaPosition\\\";\\n  }\\n}\\n\\nfunction toStyle(node, ...names) {\\n  const style = Object.create(null);\\n  for (const name of names) {\\n    const value = node[name];\\n    if (value === null) {\\n      continue;\\n    }\\n    if (converters.hasOwnProperty(name)) {\\n      converters[name](node, style);\\n      continue;\\n    }\\n\\n    if (value instanceof XFAObject) {\\n      const newStyle = value[$toStyle]();\\n      if (newStyle) {\\n        Object.assign(style, newStyle);\\n      } else {\\n        warn(`(DEBUG) - XFA - style for ${name} not implemented yet`);\\n      }\\n    }\\n  }\\n  return style;\\n}\\n\\nfunction createWrapper(node, html) {\\n  const { attributes } = html;\\n  const { style } = attributes;\\n\\n  const wrapper = {\\n    name: \\\"div\\\",\\n    attributes: {\\n      class: [\\\"xfaWrapper\\\"],\\n      style: Object.create(null),\\n    },\\n    children: [],\\n  };\\n\\n  attributes.class.push(\\\"xfaWrapped\\\");\\n\\n  if (node.border) {\\n    const { widths, insets } = node.border[$extra];\\n    let width, height;\\n    let top = insets[0];\\n    let left = insets[3];\\n    const insetsH = insets[0] + insets[2];\\n    const insetsW = insets[1] + insets[3];\\n    switch (node.border.hand) {\\n      case \\\"even\\\":\\n        top -= widths[0] \u002F 2;\\n        left -= widths[3] \u002F 2;\\n        width = `calc(100% + ${(widths[1] + widths[3]) \u002F 2 - insetsW}px)`;\\n        height = `calc(100% + ${(widths[0] + widths[2]) \u002F 2 - insetsH}px)`;\\n        break;\\n      case \\\"left\\\":\\n        top -= widths[0];\\n        left -= widths[3];\\n        width = `calc(100% + ${widths[1] + widths[3] - insetsW}px)`;\\n        height = `calc(100% + ${widths[0] + widths[2] - insetsH}px)`;\\n        break;\\n      case \\\"right\\\":\\n        width = insetsW ? `calc(100% - ${insetsW}px)` : \\\"100%\\\";\\n        height = insetsH ? `calc(100% - ${insetsH}px)` : \\\"100%\\\";\\n        break;\\n    }\\n    const classNames = [\\\"xfaBorder\\\"];\\n    if (isPrintOnly(node.border)) {\\n      classNames.push(\\\"xfaPrintOnly\\\");\\n    }\\n\\n    const border = {\\n      name: \\\"div\\\",\\n      attributes: {\\n        class: classNames,\\n        style: {\\n          top: `${top}px`,\\n          left: `${left}px`,\\n          width,\\n          height,\\n        },\\n      },\\n      children: [],\\n    };\\n\\n    for (const key of [\\n      \\\"border\\\",\\n      \\\"borderWidth\\\",\\n      \\\"borderColor\\\",\\n      \\\"borderRadius\\\",\\n      \\\"borderStyle\\\",\\n    ]) {\\n      if (style[key] !== undefined) {\\n        border.attributes.style[key] = style[key];\\n        delete style[key];\\n      }\\n    }\\n    wrapper.children.push(border, html);\\n  } else {\\n    wrapper.children.push(html);\\n  }\\n\\n  for (const key of [\\n    \\\"background\\\",\\n    \\\"backgroundClip\\\",\\n    \\\"top\\\",\\n    \\\"left\\\",\\n    \\\"width\\\",\\n    \\\"height\\\",\\n    \\\"minWidth\\\",\\n    \\\"minHeight\\\",\\n    \\\"maxWidth\\\",\\n    \\\"maxHeight\\\",\\n    \\\"transform\\\",\\n    \\\"transformOrigin\\\",\\n    \\\"visibility\\\",\\n  ]) {\\n    if (style[key] !== undefined) {\\n      wrapper.attributes.style[key] = style[key];\\n      delete style[key];\\n    }\\n  }\\n\\n  wrapper.attributes.style.position =\\n    style.position === \\\"absolute\\\" ? \\\"absolute\\\" : \\\"relative\\\";\\n  delete style.position;\\n\\n  if (style.alignSelf) {\\n    wrapper.attributes.style.alignSelf = style.alignSelf;\\n    delete style.alignSelf;\\n  }\\n\\n  return wrapper;\\n}\\n\\nfunction fixTextIndent(styles) {\\n  const indent = getMeasurement(styles.textIndent, \\\"0px\\\");\\n  if (indent >= 0) {\\n    return;\\n  }\\n\\n  \u002F\u002F If indent is negative then it's a hanging indent.\\n  const align = styles.textAlign === \\\"right\\\" ? \\\"right\\\" : \\\"left\\\";\\n  const name = \\\"padding\\\" + (align === \\\"left\\\" ? \\\"Left\\\" : \\\"Right\\\");\\n  const padding = getMeasurement(styles[name], \\\"0px\\\");\\n  styles[name] = `${padding - indent}px`;\\n}\\n\\nfunction setAccess(node, classNames) {\\n  switch (node.access) {\\n    case \\\"nonInteractive\\\":\\n      classNames.push(\\\"xfaNonInteractive\\\");\\n      break;\\n    case \\\"readOnly\\\":\\n      classNames.push(\\\"xfaReadOnly\\\");\\n      break;\\n    case \\\"protected\\\":\\n      classNames.push(\\\"xfaDisabled\\\");\\n      break;\\n  }\\n}\\n\\nfunction isPrintOnly(node) {\\n  return (\\n    node.relevant.length > 0 &&\\n    !node.relevant[0].excluded &&\\n    node.relevant[0].viewname === \\\"print\\\"\\n  );\\n}\\n\\nfunction getCurrentPara(node) {\\n  const stack = node[$getTemplateRoot]()[$extra].paraStack;\\n  return stack.length ? stack.at(-1) : null;\\n}\\n\\nfunction setPara(node, nodeStyle, value) {\\n  if (value.attributes.class?.includes(\\\"xfaRich\\\")) {\\n    if (nodeStyle) {\\n      if (node.h === \\\"\\\") {\\n        nodeStyle.height = \\\"auto\\\";\\n      }\\n      if (node.w === \\\"\\\") {\\n        nodeStyle.width = \\\"auto\\\";\\n      }\\n    }\\n\\n    const para = getCurrentPara(node);\\n    if (para) {\\n      \u002F\u002F By definition exData are external data so para\\n      \u002F\u002F has no effect on it.\\n      const valueStyle = value.attributes.style;\\n      valueStyle.display = \\\"flex\\\";\\n      valueStyle.flexDirection = \\\"column\\\";\\n      switch (para.vAlign) {\\n        case \\\"top\\\":\\n          valueStyle.justifyContent = \\\"start\\\";\\n          break;\\n        case \\\"bottom\\\":\\n          valueStyle.justifyContent = \\\"end\\\";\\n          break;\\n        case \\\"middle\\\":\\n          valueStyle.justifyContent = \\\"center\\\";\\n          break;\\n      }\\n\\n      const paraStyle = para[$toStyle]();\\n      for (const [key, val] of Object.entries(paraStyle)) {\\n        if (!(key in valueStyle)) {\\n          valueStyle[key] = val;\\n        }\\n      }\\n    }\\n  }\\n}\\n\\nfunction setFontFamily(xfaFont, node, fontFinder, style) {\\n  if (!fontFinder) {\\n    \u002F\u002F The font cannot be found in the pdf so use the default one.\\n    delete style.fontFamily;\\n    return;\\n  }\\n\\n  const name = stripQuotes(xfaFont.typeface);\\n  style.fontFamily = `\\\"${name}\\\"`;\\n\\n  const typeface = fontFinder.find(name);\\n  if (typeface) {\\n    const { fontFamily } = typeface.regular.cssFontInfo;\\n    if (fontFamily !== name) {\\n      style.fontFamily = `\\\"${fontFamily}\\\"`;\\n    }\\n\\n    const para = getCurrentPara(node);\\n    if (para && para.lineHeight !== \\\"\\\") {\\n      return;\\n    }\\n\\n    if (style.lineHeight) {\\n      \u002F\u002F Already something so don't overwrite.\\n      return;\\n    }\\n\\n    const pdfFont = selectFont(xfaFont, typeface);\\n    if (pdfFont) {\\n      style.lineHeight = Math.max(1.2, pdfFont.lineHeight);\\n    }\\n  }\\n}\\n\\nfunction fixURL(str) {\\n  const absoluteUrl = createValidAbsoluteUrl(str, \u002F* baseUrl = *\u002F null, {\\n    addDefaultProtocol: true,\\n    tryConvertEncoding: true,\\n  });\\n  return absoluteUrl ? absoluteUrl.href : null;\\n}\\n\\nexport {\\n  computeBbox,\\n  createWrapper,\\n  fixDimensions,\\n  fixTextIndent,\\n  fixURL,\\n  isPrintOnly,\\n  layoutClass,\\n  layoutNode,\\n  measureToString,\\n  setAccess,\\n  setFontFamily,\\n  setMinMaxDimensions,\\n  setPara,\\n  toStyle,\\n};\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  $extra,\\n  $flushHTML,\\n  $getSubformParent,\\n  $getTemplateRoot,\\n  $isSplittable,\\n  $isThereMoreWidth,\\n} from \\\".\u002Fsymbol_utils.js\\\";\\nimport { MathClamp } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport { measureToString } from \\\".\u002Fhtml_utils.js\\\";\\n\\n\u002F\u002F Subform and ExclGroup have a layout so they share these functions.\\n\\n\u002F**\\n * How layout works ?\\n *\\n * A container has an initial space (with a width and a height) to fit in,\\n * which means that once all the children have been added then\\n * the total width\u002Fheight must be lower than the given ones in\\n * the initial space.\\n * So if the container has known dimensions and these ones are ok with the\\n * space then continue else we return HTMLResult.FAILURE: it's up to the\\n * parent to deal with this failure (e.g. if parent layout is lr-tb and\\n * we fail to add a child at end of line (lr) then we try to add it on the\\n * next line).\\n * And then we run through the children, each child gets its initial space\\n * in calling its parent $getAvailableSpace method\\n * (see _filteredChildrenGenerator and $childrenToHTML in xfa_object.js)\\n * then we try to layout child in its space. If everything is ok then we add\\n * the result to its parent through $addHTML which will recompute the available\\n * space in parent according to its layout property else we return\\n * HTMLResult.Failure.\\n * Before a failure some children may have been layed out: they've been saved in\\n * [$extra].children and [$extra] has properties generator and failingNode\\n * in order to save the state where we were before a failure.\\n * This [$extra].children property is useful when a container has to be splited.\\n * So if a container is unbreakable, we must delete its [$extra] property before\\n * returning.\\n *\u002F\\n\\nfunction createLine(node, children) {\\n  return {\\n    name: \\\"div\\\",\\n    attributes: {\\n      class: [node.layout === \\\"lr-tb\\\" ? \\\"xfaLr\\\" : \\\"xfaRl\\\"],\\n    },\\n    children,\\n  };\\n}\\n\\nfunction flushHTML(node) {\\n  if (!node[$extra]) {\\n    return null;\\n  }\\n\\n  const attributes = node[$extra].attributes;\\n  const html = {\\n    name: \\\"div\\\",\\n    attributes,\\n    children: node[$extra].children,\\n  };\\n\\n  if (node[$extra].failingNode) {\\n    const htmlFromFailing = node[$extra].failingNode[$flushHTML]();\\n    if (htmlFromFailing) {\\n      if (node.layout.endsWith(\\\"-tb\\\")) {\\n        html.children.push(createLine(node, [htmlFromFailing]));\\n      } else {\\n        html.children.push(htmlFromFailing);\\n      }\\n    }\\n  }\\n\\n  if (html.children.length === 0) {\\n    return null;\\n  }\\n\\n  return html;\\n}\\n\\nfunction addHTML(node, html, bbox) {\\n  const extra = node[$extra];\\n  const availableSpace = extra.availableSpace;\\n\\n  const [x, y, w, h] = bbox;\\n  switch (node.layout) {\\n    case \\\"position\\\": {\\n      extra.width = Math.max(extra.width, x + w);\\n      extra.height = Math.max(extra.height, y + h);\\n      extra.children.push(html);\\n      break;\\n    }\\n    case \\\"lr-tb\\\":\\n    case \\\"rl-tb\\\":\\n      if (!extra.line || extra.attempt === 1) {\\n        extra.line = createLine(node, []);\\n        extra.children.push(extra.line);\\n        extra.numberInLine = 0;\\n      }\\n\\n      extra.numberInLine += 1;\\n      extra.line.children.push(html);\\n\\n      if (extra.attempt === 0) {\\n        \u002F\u002F Add the element on the line\\n        extra.currentWidth += w;\\n        extra.height = Math.max(extra.height, extra.prevHeight + h);\\n      } else {\\n        extra.currentWidth = w;\\n        extra.prevHeight = extra.height;\\n        extra.height += h;\\n\\n        \u002F\u002F The element has been added on a new line so switch to line mode now.\\n        extra.attempt = 0;\\n      }\\n      extra.width = Math.max(extra.width, extra.currentWidth);\\n      break;\\n    case \\\"rl-row\\\":\\n    case \\\"row\\\": {\\n      extra.children.push(html);\\n      extra.width += w;\\n      extra.height = Math.max(extra.height, h);\\n      const height = measureToString(extra.height);\\n      for (const child of extra.children) {\\n        child.attributes.style.height = height;\\n      }\\n      break;\\n    }\\n    case \\\"table\\\": {\\n      extra.width = MathClamp(w, extra.width, availableSpace.width);\\n      extra.height += h;\\n      extra.children.push(html);\\n      break;\\n    }\\n    case \\\"tb\\\": {\\n      \u002F\u002F Even if the subform can possibly take all the available width,\\n      \u002F\u002F we must compute the final width as it is in order to be able\\n      \u002F\u002F for example to center the subform within its parent.\\n      extra.width = MathClamp(w, extra.width, availableSpace.width);\\n      extra.height += h;\\n      extra.children.push(html);\\n      break;\\n    }\\n  }\\n}\\n\\nfunction getAvailableSpace(node) {\\n  const availableSpace = node[$extra].availableSpace;\\n  const marginV = node.margin\\n    ? node.margin.topInset + node.margin.bottomInset\\n    : 0;\\n  const marginH = node.margin\\n    ? node.margin.leftInset + node.margin.rightInset\\n    : 0;\\n\\n  switch (node.layout) {\\n    case \\\"lr-tb\\\":\\n    case \\\"rl-tb\\\":\\n      if (node[$extra].attempt === 0) {\\n        return {\\n          width: availableSpace.width - marginH - node[$extra].currentWidth,\\n          height: availableSpace.height - marginV - node[$extra].prevHeight,\\n        };\\n      }\\n      return {\\n        width: availableSpace.width - marginH,\\n        height: availableSpace.height - marginV - node[$extra].height,\\n      };\\n    case \\\"rl-row\\\":\\n    case \\\"row\\\":\\n      const width = Math.sumPrecise(\\n        node[$extra].columnWidths.slice(node[$extra].currentColumn)\\n      );\\n      return { width, height: availableSpace.height - marginH };\\n    case \\\"table\\\":\\n    case \\\"tb\\\":\\n      return {\\n        width: availableSpace.width - marginH,\\n        height: availableSpace.height - marginV - node[$extra].height,\\n      };\\n    case \\\"position\\\":\\n    default:\\n      return availableSpace;\\n  }\\n}\\n\\nfunction getTransformedBBox(node) {\\n  \u002F\u002F Take into account rotation and anchor to get the real bounding box.\\n  let w = node.w === \\\"\\\" ? NaN : node.w;\\n  let h = node.h === \\\"\\\" ? NaN : node.h;\\n  let [centerX, centerY] = [0, 0];\\n  switch (node.anchorType || \\\"\\\") {\\n    case \\\"bottomCenter\\\":\\n      [centerX, centerY] = [w \u002F 2, h];\\n      break;\\n    case \\\"bottomLeft\\\":\\n      [centerX, centerY] = [0, h];\\n      break;\\n    case \\\"bottomRight\\\":\\n      [centerX, centerY] = [w, h];\\n      break;\\n    case \\\"middleCenter\\\":\\n      [centerX, centerY] = [w \u002F 2, h \u002F 2];\\n      break;\\n    case \\\"middleLeft\\\":\\n      [centerX, centerY] = [0, h \u002F 2];\\n      break;\\n    case \\\"middleRight\\\":\\n      [centerX, centerY] = [w, h \u002F 2];\\n      break;\\n    case \\\"topCenter\\\":\\n      [centerX, centerY] = [w \u002F 2, 0];\\n      break;\\n    case \\\"topRight\\\":\\n      [centerX, centerY] = [w, 0];\\n      break;\\n  }\\n\\n  let x, y;\\n  switch (node.rotate || 0) {\\n    case 0:\\n      [x, y] = [-centerX, -centerY];\\n      break;\\n    case 90:\\n      [x, y] = [-centerY, centerX];\\n      [w, h] = [h, -w];\\n      break;\\n    case 180:\\n      [x, y] = [centerX, centerY];\\n      [w, h] = [-w, -h];\\n      break;\\n    case 270:\\n      [x, y] = [centerY, -centerX];\\n      [w, h] = [-h, w];\\n      break;\\n  }\\n\\n  return [\\n    node.x + x + Math.min(0, w),\\n    node.y + y + Math.min(0, h),\\n    Math.abs(w),\\n    Math.abs(h),\\n  ];\\n}\\n\\n\u002F**\\n * Returning true means that the node will be layed out\\n * else the layout will go to its next step (changing of line\\n * in case of lr-tb or changing content area...).\\n *\u002F\\nfunction checkDimensions(node, space) {\\n  if (node[$getTemplateRoot]()[$extra].firstUnsplittable === null) {\\n    return true;\\n  }\\n\\n  if (node.w === 0 || node.h === 0) {\\n    return true;\\n  }\\n\\n  const ERROR = 2;\\n  const parent = node[$getSubformParent]();\\n  const attempt = parent[$extra]?.attempt || 0;\\n\\n  const [, y, w, h] = getTransformedBBox(node);\\n  switch (parent.layout) {\\n    case \\\"lr-tb\\\":\\n    case \\\"rl-tb\\\":\\n      if (attempt === 0) {\\n        \u002F\u002F Try to put an element in the line.\\n\\n        if (!node[$getTemplateRoot]()[$extra].noLayoutFailure) {\\n          if (node.h !== \\\"\\\" && Math.round(h - space.height) > ERROR) {\\n            \u002F\u002F Not enough height.\\n            return false;\\n          }\\n\\n          if (node.w !== \\\"\\\") {\\n            if (Math.round(w - space.width) \u003C= ERROR) {\\n              return true;\\n            }\\n            if (parent[$extra].numberInLine === 0) {\\n              return space.height > ERROR;\\n            }\\n\\n            return false;\\n          }\\n\\n          return space.width > ERROR;\\n        }\\n\\n        \u002F\u002F No layout failure.\\n\\n        \u002F\u002F Put the element on the line but we can fail\\n        \u002F\u002F and then in the second step (next line) we'll accept.\\n        if (node.w !== \\\"\\\") {\\n          return Math.round(w - space.width) \u003C= ERROR;\\n        }\\n\\n        return space.width > ERROR;\\n      }\\n\\n      \u002F\u002F Second attempt: try to put the element on the next line.\\n\\n      if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\\n        \u002F\u002F We cannot fail.\\n        return true;\\n      }\\n\\n      if (node.h !== \\\"\\\" && Math.round(h - space.height) > ERROR) {\\n        return false;\\n      }\\n\\n      if (node.w === \\\"\\\" || Math.round(w - space.width) \u003C= ERROR) {\\n        return space.height > ERROR;\\n      }\\n\\n      if (parent[$isThereMoreWidth]()) {\\n        return false;\\n      }\\n\\n      return space.height > ERROR;\\n    case \\\"table\\\":\\n    case \\\"tb\\\":\\n      if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\\n        return true;\\n      }\\n\\n      \u002F\u002F If the node has a height then check if it's fine with available height.\\n      \u002F\u002F If the node is breakable then we can return true.\\n      if (node.h !== \\\"\\\" && !node[$isSplittable]()) {\\n        return Math.round(h - space.height) \u003C= ERROR;\\n      }\\n      \u002F\u002F Else wait and see: this node will be layed out itself\\n      \u002F\u002F in the provided space and maybe a children won't fit.\\n\\n      if (node.w === \\\"\\\" || Math.round(w - space.width) \u003C= ERROR) {\\n        return space.height > ERROR;\\n      }\\n\\n      if (parent[$isThereMoreWidth]()) {\\n        return false;\\n      }\\n\\n      return space.height > ERROR;\\n    case \\\"position\\\":\\n      if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\\n        return true;\\n      }\\n\\n      if (node.h === \\\"\\\" || Math.round(h + y - space.height) \u003C= ERROR) {\\n        return true;\\n      }\\n\\n      const area = node[$getTemplateRoot]()[$extra].currentContentArea;\\n      return h + y > area.h;\\n    case \\\"rl-row\\\":\\n    case \\\"row\\\":\\n      if (node[$getTemplateRoot]()[$extra].noLayoutFailure) {\\n        return true;\\n      }\\n\\n      if (node.h !== \\\"\\\") {\\n        return Math.round(h - space.height) \u003C= ERROR;\\n      }\\n      return true;\\n    default:\\n      \u002F\u002F No layout, so accept everything.\\n      return true;\\n  }\\n}\\n\\nexport { addHTML, checkDimensions, flushHTML, getAvailableSpace };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  $acceptWhitespace,\\n  $addHTML,\\n  $appendChild,\\n  $childrenToHTML,\\n  $clean,\\n  $cleanPage,\\n  $content,\\n  $data,\\n  $extra,\\n  $finalize,\\n  $flushHTML,\\n  $getAvailableSpace,\\n  $getChildren,\\n  $getContainedChildren,\\n  $getExtra,\\n  $getNextPage,\\n  $getParent,\\n  $getSubformParent,\\n  $getTemplateRoot,\\n  $globalData,\\n  $hasSettableValue,\\n  $ids,\\n  $isBindable,\\n  $isCDATAXml,\\n  $isSplittable,\\n  $isThereMoreWidth,\\n  $isTransparent,\\n  $isUsable,\\n  $namespaceId,\\n  $nodeName,\\n  $onChild,\\n  $onText,\\n  $popPara,\\n  $pushPara,\\n  $removeChild,\\n  $searchNode,\\n  $setSetAttributes,\\n  $setValue,\\n  $tabIndex,\\n  $text,\\n  $toHTML,\\n  $toPages,\\n  $toStyle,\\n  $uid,\\n} from \\\".\u002Fsymbol_utils.js\\\";\\nimport { $buildXFAObject, NamespaceIds } from \\\".\u002Fnamespaces.js\\\";\\nimport {\\n  addHTML,\\n  checkDimensions,\\n  flushHTML,\\n  getAvailableSpace,\\n} from \\\".\u002Flayout.js\\\";\\nimport {\\n  computeBbox,\\n  createWrapper,\\n  fixDimensions,\\n  fixTextIndent,\\n  fixURL,\\n  isPrintOnly,\\n  layoutClass,\\n  layoutNode,\\n  measureToString,\\n  setAccess,\\n  setFontFamily,\\n  setMinMaxDimensions,\\n  setPara,\\n  toStyle,\\n} from \\\".\u002Fhtml_utils.js\\\";\\nimport {\\n  ContentObject,\\n  Option01,\\n  OptionObject,\\n  StringObject,\\n  XFAObject,\\n  XFAObjectArray,\\n} from \\\".\u002Fxfa_object.js\\\";\\nimport { fromBase64Util, Util, warn } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  getBBox,\\n  getColor,\\n  getFloat,\\n  getInteger,\\n  getKeyword,\\n  getMeasurement,\\n  getRatio,\\n  getRelevant,\\n  getStringOption,\\n  HTMLResult,\\n} from \\\".\u002Futils.js\\\";\\nimport { getMetrics } from \\\".\u002Ffonts.js\\\";\\nimport { recoverJsURL } from \\\"..\u002Fcore_utils.js\\\";\\nimport { searchNode } from \\\".\u002Fsom.js\\\";\\n\\nconst TEMPLATE_NS_ID = NamespaceIds.template.id;\\nconst SVG_NS = \\\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\\\";\\n\\n\u002F\u002F In case of lr-tb (and rl-tb) layouts, we try:\\n\u002F\u002F  - to put the container at the end of a line\\n\u002F\u002F  - and if it fails we try on the next line.\\n\u002F\u002F If both tries failed then it's up to the parent\\n\u002F\u002F to handle the situation.\\nconst MAX_ATTEMPTS_FOR_LRTB_LAYOUT = 2;\\n\\n\u002F\u002F It's possible to have a bug in the layout and so as\\n\u002F\u002F a consequence we could loop for ever in Template::toHTML()\\n\u002F\u002F so in order to avoid that (and avoid a OOM crash) we break\\n\u002F\u002F the loop after having MAX_EMPTY_PAGES empty pages.\\nconst MAX_EMPTY_PAGES = 3;\\n\\n\u002F\u002F Default value to start with for the tabIndex property.\\nconst DEFAULT_TAB_INDEX = 5000;\\n\\nconst HEADING_PATTERN = \u002F^H(\\\\d+)$\u002F;\\n\\n\u002F\u002F Allowed mime types for images\\nconst MIMES = new Set([\\n  \\\"image\u002Fgif\\\",\\n  \\\"image\u002Fjpeg\\\",\\n  \\\"image\u002Fjpg\\\",\\n  \\\"image\u002Fpjpeg\\\",\\n  \\\"image\u002Fpng\\\",\\n  \\\"image\u002Fapng\\\",\\n  \\\"image\u002Fx-png\\\",\\n  \\\"image\u002Fbmp\\\",\\n  \\\"image\u002Fx-ms-bmp\\\",\\n  \\\"image\u002Ftiff\\\",\\n  \\\"image\u002Ftif\\\",\\n  \\\"application\u002Foctet-stream\\\",\\n]);\\n\\nconst IMAGES_HEADERS = [\\n  [[0x42, 0x4d], \\\"image\u002Fbmp\\\"],\\n  [[0xff, 0xd8, 0xff], \\\"image\u002Fjpeg\\\"],\\n  [[0x49, 0x49, 0x2a, 0x00], \\\"image\u002Ftiff\\\"],\\n  [[0x4d, 0x4d, 0x00, 0x2a], \\\"image\u002Ftiff\\\"],\\n  [[0x47, 0x49, 0x46, 0x38, 0x39, 0x61], \\\"image\u002Fgif\\\"],\\n  [[0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a], \\\"image\u002Fpng\\\"],\\n];\\n\\nfunction getBorderDims(node) {\\n  if (!node || !node.border) {\\n    return { w: 0, h: 0 };\\n  }\\n\\n  const borderExtra = node.border[$getExtra]();\\n  if (!borderExtra) {\\n    return { w: 0, h: 0 };\\n  }\\n\\n  return {\\n    w:\\n      borderExtra.widths[0] +\\n      borderExtra.widths[2] +\\n      borderExtra.insets[0] +\\n      borderExtra.insets[2],\\n    h:\\n      borderExtra.widths[1] +\\n      borderExtra.widths[3] +\\n      borderExtra.insets[1] +\\n      borderExtra.insets[3],\\n  };\\n}\\n\\nfunction hasMargin(node) {\\n  return (\\n    node.margin &&\\n    (node.margin.topInset ||\\n      node.margin.rightInset ||\\n      node.margin.bottomInset ||\\n      node.margin.leftInset)\\n  );\\n}\\n\\nfunction _setValue(templateNode, value) {\\n  if (!templateNode.value) {\\n    const nodeValue = new Value({});\\n    templateNode[$appendChild](nodeValue);\\n    templateNode.value = nodeValue;\\n  }\\n  templateNode.value[$setValue](value);\\n}\\n\\nfunction* getContainedChildren(node) {\\n  for (const child of node[$getChildren]()) {\\n    if (child instanceof SubformSet) {\\n      yield* child[$getContainedChildren]();\\n      continue;\\n    }\\n    yield child;\\n  }\\n}\\n\\nfunction isRequired(node) {\\n  return node.validate?.nullTest === \\\"error\\\";\\n}\\n\\nfunction setTabIndex(node) {\\n  while (node) {\\n    if (!node.traversal) {\\n      node[$tabIndex] = node[$getParent]()[$tabIndex];\\n      return;\\n    }\\n\\n    if (node[$tabIndex]) {\\n      return;\\n    }\\n\\n    let next = null;\\n    for (const child of node.traversal[$getChildren]()) {\\n      if (child.operation === \\\"next\\\") {\\n        next = child;\\n        break;\\n      }\\n    }\\n\\n    if (!next || !next.ref) {\\n      node[$tabIndex] = node[$getParent]()[$tabIndex];\\n      return;\\n    }\\n\\n    const root = node[$getTemplateRoot]();\\n    node[$tabIndex] = ++root[$tabIndex];\\n\\n    const ref = root[$searchNode](next.ref, node);\\n    if (!ref) {\\n      return;\\n    }\\n\\n    node = ref[0];\\n  }\\n}\\n\\nfunction applyAssist(obj, attributes) {\\n  const assist = obj.assist;\\n  if (assist) {\\n    const assistTitle = assist[$toHTML]();\\n    if (assistTitle) {\\n      attributes.title = assistTitle;\\n    }\\n    const role = assist.role;\\n    const match = role.match(HEADING_PATTERN);\\n    if (match) {\\n      const ariaRole = \\\"heading\\\";\\n      const ariaLevel = match[1];\\n      attributes.role = ariaRole;\\n      attributes[\\\"aria-level\\\"] = ariaLevel;\\n    }\\n  }\\n  \u002F\u002F XXX: We could end up in a situation where the obj has a heading role and\\n  \u002F\u002F is also a table. For now prioritize the table role.\\n  if (obj.layout === \\\"table\\\") {\\n    attributes.role = \\\"table\\\";\\n  } else if (obj.layout === \\\"row\\\") {\\n    attributes.role = \\\"row\\\";\\n  } else {\\n    const parent = obj[$getParent]();\\n    if (parent.layout === \\\"row\\\") {\\n      attributes.role = parent.assist?.role === \\\"TH\\\" ? \\\"columnheader\\\" : \\\"cell\\\";\\n    }\\n  }\\n}\\n\\nfunction ariaLabel(obj) {\\n  if (!obj.assist) {\\n    return null;\\n  }\\n  const assist = obj.assist;\\n  if (assist.speak && assist.speak[$content] !== \\\"\\\") {\\n    return assist.speak[$content];\\n  }\\n  if (assist.toolTip) {\\n    return assist.toolTip[$content];\\n  }\\n  \u002F\u002F TODO: support finding the related caption element. See xfa_bug1718037.pdf\\n  \u002F\u002F for an example.\\n  return null;\\n}\\n\\nfunction valueToHtml(value) {\\n  return HTMLResult.success({\\n    name: \\\"div\\\",\\n    attributes: {\\n      class: [\\\"xfaRich\\\"],\\n      style: Object.create(null),\\n    },\\n    children: [\\n      {\\n        name: \\\"span\\\",\\n        attributes: {\\n          style: Object.create(null),\\n        },\\n        value,\\n      },\\n    ],\\n  });\\n}\\n\\nfunction setFirstUnsplittable(node) {\\n  const root = node[$getTemplateRoot]();\\n  if (root[$extra].firstUnsplittable === null) {\\n    root[$extra].firstUnsplittable = node;\\n    root[$extra].noLayoutFailure = true;\\n  }\\n}\\n\\nfunction unsetFirstUnsplittable(node) {\\n  const root = node[$getTemplateRoot]();\\n  if (root[$extra].firstUnsplittable === node) {\\n    root[$extra].noLayoutFailure = false;\\n  }\\n}\\n\\nfunction handleBreak(node) {\\n  if (node[$extra]) {\\n    return false;\\n  }\\n\\n  node[$extra] = Object.create(null);\\n\\n  if (node.targetType === \\\"auto\\\") {\\n    return false;\\n  }\\n\\n  const root = node[$getTemplateRoot]();\\n  let target = null;\\n  if (node.target) {\\n    target = root[$searchNode](node.target, node[$getParent]());\\n    if (!target) {\\n      return false;\\n    }\\n    target = target[0];\\n  }\\n\\n  const { currentPageArea, currentContentArea } = root[$extra];\\n\\n  if (node.targetType === \\\"pageArea\\\") {\\n    if (!(target instanceof PageArea)) {\\n      target = null;\\n    }\\n\\n    if (node.startNew) {\\n      node[$extra].target = target || currentPageArea;\\n      return true;\\n    } else if (target && target !== currentPageArea) {\\n      node[$extra].target = target;\\n      return true;\\n    }\\n\\n    return false;\\n  }\\n\\n  if (!(target instanceof ContentArea)) {\\n    target = null;\\n  }\\n\\n  const pageArea = target && target[$getParent]();\\n\\n  let index;\\n  let nextPageArea = pageArea;\\n  if (node.startNew) {\\n    \u002F\u002F startNew === 1 so we must create a new container (pageArea or\\n    \u002F\u002F contentArea).\\n    if (target) {\\n      const contentAreas = pageArea.contentArea.children;\\n      const indexForCurrent = contentAreas.indexOf(currentContentArea);\\n      const indexForTarget = contentAreas.indexOf(target);\\n      if (indexForCurrent !== -1 && indexForCurrent \u003C indexForTarget) {\\n        \u002F\u002F The next container is after the current container so\\n        \u002F\u002F we can stay on the same page.\\n        nextPageArea = null;\\n      }\\n      index = indexForTarget - 1;\\n    } else {\\n      index = currentPageArea.contentArea.children.indexOf(currentContentArea);\\n    }\\n  } else if (target && target !== currentContentArea) {\\n    const contentAreas = pageArea.contentArea.children;\\n    index = contentAreas.indexOf(target) - 1;\\n    nextPageArea = pageArea === currentPageArea ? null : pageArea;\\n  } else {\\n    return false;\\n  }\\n\\n  node[$extra].target = nextPageArea;\\n  node[$extra].index = index;\\n  return true;\\n}\\n\\nfunction handleOverflow(node, extraNode, space) {\\n  const root = node[$getTemplateRoot]();\\n  const saved = root[$extra].noLayoutFailure;\\n  const savedMethod = extraNode[$getSubformParent];\\n\\n  \u002F\u002F Replace $getSubformParent to emulate that extraNode is just\\n  \u002F\u002F under node.\\n  extraNode[$getSubformParent] = () => node;\\n\\n  root[$extra].noLayoutFailure = true;\\n  const res = extraNode[$toHTML](space);\\n  node[$addHTML](res.html, res.bbox);\\n  root[$extra].noLayoutFailure = saved;\\n  extraNode[$getSubformParent] = savedMethod;\\n}\\n\\nclass AppearanceFilter extends StringObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"appearanceFilter\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\\"optional\\\", \\\"required\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Arc extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"arc\\\", \u002F* hasChildren = *\u002F true);\\n    this.circular = getInteger({\\n      data: attributes.circular,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.hand = getStringOption(attributes.hand, [\\\"even\\\", \\\"left\\\", \\\"right\\\"]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.startAngle = getFloat({\\n      data: attributes.startAngle,\\n      defaultValue: 0,\\n      validate: x => true,\\n    });\\n    this.sweepAngle = getFloat({\\n      data: attributes.sweepAngle,\\n      defaultValue: 360,\\n      validate: x => true,\\n    });\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.edge = null;\\n    this.fill = null;\\n  }\\n\\n  [$toHTML]() {\\n    const edge = this.edge || new Edge({});\\n    const edgeStyle = edge[$toStyle]();\\n    const style = Object.create(null);\\n    if (this.fill?.presence === \\\"visible\\\") {\\n      Object.assign(style, this.fill[$toStyle]());\\n    } else {\\n      style.fill = \\\"transparent\\\";\\n    }\\n    style.strokeWidth = measureToString(\\n      edge.presence === \\\"visible\\\" ? edge.thickness : 0\\n    );\\n    style.stroke = edgeStyle.color;\\n    let arc;\\n    const attributes = {\\n      xmlns: SVG_NS,\\n      style: {\\n        width: \\\"100%\\\",\\n        height: \\\"100%\\\",\\n        overflow: \\\"visible\\\",\\n      },\\n    };\\n\\n    if (this.sweepAngle === 360) {\\n      arc = {\\n        name: \\\"ellipse\\\",\\n        attributes: {\\n          xmlns: SVG_NS,\\n          cx: \\\"50%\\\",\\n          cy: \\\"50%\\\",\\n          rx: \\\"50%\\\",\\n          ry: \\\"50%\\\",\\n          style,\\n        },\\n      };\\n    } else {\\n      const startAngle = (this.startAngle * Math.PI) \u002F 180;\\n      const sweepAngle = (this.sweepAngle * Math.PI) \u002F 180;\\n      const largeArc = this.sweepAngle > 180 ? 1 : 0;\\n      const [x1, y1, x2, y2] = [\\n        50 * (1 + Math.cos(startAngle)),\\n        50 * (1 - Math.sin(startAngle)),\\n        50 * (1 + Math.cos(startAngle + sweepAngle)),\\n        50 * (1 - Math.sin(startAngle + sweepAngle)),\\n      ];\\n\\n      arc = {\\n        name: \\\"path\\\",\\n        attributes: {\\n          xmlns: SVG_NS,\\n          d: `M ${x1} ${y1} A 50 50 0 ${largeArc} 0 ${x2} ${y2}`,\\n          vectorEffect: \\\"non-scaling-stroke\\\",\\n          style,\\n        },\\n      };\\n\\n      Object.assign(attributes, {\\n        viewBox: \\\"0 0 100 100\\\",\\n        preserveAspectRatio: \\\"none\\\",\\n      });\\n    }\\n\\n    const svg = {\\n      name: \\\"svg\\\",\\n      children: [arc],\\n      attributes,\\n    };\\n\\n    const parent = this[$getParent]()[$getParent]();\\n    if (hasMargin(parent)) {\\n      return HTMLResult.success({\\n        name: \\\"div\\\",\\n        attributes: {\\n          style: {\\n            display: \\\"inline\\\",\\n            width: \\\"100%\\\",\\n            height: \\\"100%\\\",\\n          },\\n        },\\n        children: [svg],\\n      });\\n    }\\n\\n    svg.attributes.style.position = \\\"absolute\\\";\\n    return HTMLResult.success(svg);\\n  }\\n}\\n\\nclass Area extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"area\\\", \u002F* hasChildren = *\u002F true);\\n    this.colSpan = getInteger({\\n      data: attributes.colSpan,\\n      defaultValue: 1,\\n      validate: n => n >= 1 || n === -1,\\n    });\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.relevant = getRelevant(attributes.relevant);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.x = getMeasurement(attributes.x, \\\"0pt\\\");\\n    this.y = getMeasurement(attributes.y, \\\"0pt\\\");\\n    this.desc = null;\\n    this.extras = null;\\n    this.area = new XFAObjectArray();\\n    this.draw = new XFAObjectArray();\\n    this.exObject = new XFAObjectArray();\\n    this.exclGroup = new XFAObjectArray();\\n    this.field = new XFAObjectArray();\\n    this.subform = new XFAObjectArray();\\n    this.subformSet = new XFAObjectArray();\\n  }\\n\\n  *[$getContainedChildren]() {\\n    \u002F\u002F This function is overriden in order to fake that subforms under\\n    \u002F\u002F this set are in fact under parent subform.\\n    yield* getContainedChildren(this);\\n  }\\n\\n  [$isTransparent]() {\\n    return true;\\n  }\\n\\n  [$isBindable]() {\\n    return true;\\n  }\\n\\n  [$addHTML](html, bbox) {\\n    const [x, y, w, h] = bbox;\\n    this[$extra].width = Math.max(this[$extra].width, x + w);\\n    this[$extra].height = Math.max(this[$extra].height, y + h);\\n\\n    this[$extra].children.push(html);\\n  }\\n\\n  [$getAvailableSpace]() {\\n    return this[$extra].availableSpace;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    \u002F\u002F TODO: incomplete.\\n    const style = toStyle(this, \\\"position\\\");\\n    const attributes = {\\n      style,\\n      id: this[$uid],\\n      class: [\\\"xfaArea\\\"],\\n    };\\n\\n    if (isPrintOnly(this)) {\\n      attributes.class.push(\\\"xfaPrintOnly\\\");\\n    }\\n\\n    if (this.name) {\\n      attributes.xfaName = this.name;\\n    }\\n\\n    const children = [];\\n    this[$extra] = {\\n      children,\\n      width: 0,\\n      height: 0,\\n      availableSpace,\\n    };\\n\\n    const result = this[$childrenToHTML]({\\n      filter: new Set([\\n        \\\"area\\\",\\n        \\\"draw\\\",\\n        \\\"field\\\",\\n        \\\"exclGroup\\\",\\n        \\\"subform\\\",\\n        \\\"subformSet\\\",\\n      ]),\\n      include: true,\\n    });\\n\\n    if (!result.success) {\\n      if (result.isBreak()) {\\n        return result;\\n      }\\n      \u002F\u002F Nothing to propose for the element which doesn't fit the\\n      \u002F\u002F available space.\\n      delete this[$extra];\\n      return HTMLResult.FAILURE;\\n    }\\n\\n    style.width = measureToString(this[$extra].width);\\n    style.height = measureToString(this[$extra].height);\\n\\n    const html = {\\n      name: \\\"div\\\",\\n      attributes,\\n      children,\\n    };\\n\\n    const bbox = [this.x, this.y, this[$extra].width, this[$extra].height];\\n    delete this[$extra];\\n\\n    return HTMLResult.success(html, bbox);\\n  }\\n}\\n\\nclass Assist extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"assist\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.role = attributes.role || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.speak = null;\\n    this.toolTip = null;\\n  }\\n\\n  [$toHTML]() {\\n    return this.toolTip?.[$content] || null;\\n  }\\n}\\n\\nclass Barcode extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"barcode\\\", \u002F* hasChildren = *\u002F true);\\n    this.charEncoding = getKeyword({\\n      data: attributes.charEncoding\\n        ? attributes.charEncoding.toLowerCase()\\n        : \\\"\\\",\\n      defaultValue: \\\"\\\",\\n      validate: k =>\\n        [\\n          \\\"utf-8\\\",\\n          \\\"big-five\\\",\\n          \\\"fontspecific\\\",\\n          \\\"gbk\\\",\\n          \\\"gb-18030\\\",\\n          \\\"gb-2312\\\",\\n          \\\"ksc-5601\\\",\\n          \\\"none\\\",\\n          \\\"shift-jis\\\",\\n          \\\"ucs-2\\\",\\n          \\\"utf-16\\\",\\n        ].includes(k) || k.match(\u002Fiso-8859-\\\\d{2}\u002F),\\n    });\\n    this.checksum = getStringOption(attributes.checksum, [\\n      \\\"none\\\",\\n      \\\"1mod10\\\",\\n      \\\"1mod10_1mod11\\\",\\n      \\\"2mod10\\\",\\n      \\\"auto\\\",\\n    ]);\\n    this.dataColumnCount = getInteger({\\n      data: attributes.dataColumnCount,\\n      defaultValue: -1,\\n      validate: x => x >= 0,\\n    });\\n    this.dataLength = getInteger({\\n      data: attributes.dataLength,\\n      defaultValue: -1,\\n      validate: x => x >= 0,\\n    });\\n    this.dataPrep = getStringOption(attributes.dataPrep, [\\n      \\\"none\\\",\\n      \\\"flateCompress\\\",\\n    ]);\\n    this.dataRowCount = getInteger({\\n      data: attributes.dataRowCount,\\n      defaultValue: -1,\\n      validate: x => x >= 0,\\n    });\\n    this.endChar = attributes.endChar || \\\"\\\";\\n    this.errorCorrectionLevel = getInteger({\\n      data: attributes.errorCorrectionLevel,\\n      defaultValue: -1,\\n      validate: x => x >= 0 && x \u003C= 8,\\n    });\\n    this.id = attributes.id || \\\"\\\";\\n    this.moduleHeight = getMeasurement(attributes.moduleHeight, \\\"5mm\\\");\\n    this.moduleWidth = getMeasurement(attributes.moduleWidth, \\\"0.25mm\\\");\\n    this.printCheckDigit = getInteger({\\n      data: attributes.printCheckDigit,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.rowColumnRatio = getRatio(attributes.rowColumnRatio);\\n    this.startChar = attributes.startChar || \\\"\\\";\\n    this.textLocation = getStringOption(attributes.textLocation, [\\n      \\\"below\\\",\\n      \\\"above\\\",\\n      \\\"aboveEmbedded\\\",\\n      \\\"belowEmbedded\\\",\\n      \\\"none\\\",\\n    ]);\\n    this.truncate = getInteger({\\n      data: attributes.truncate,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.type = getStringOption(\\n      attributes.type ? attributes.type.toLowerCase() : \\\"\\\",\\n      [\\n        \\\"aztec\\\",\\n        \\\"codabar\\\",\\n        \\\"code2of5industrial\\\",\\n        \\\"code2of5interleaved\\\",\\n        \\\"code2of5matrix\\\",\\n        \\\"code2of5standard\\\",\\n        \\\"code3of9\\\",\\n        \\\"code3of9extended\\\",\\n        \\\"code11\\\",\\n        \\\"code49\\\",\\n        \\\"code93\\\",\\n        \\\"code128\\\",\\n        \\\"code128a\\\",\\n        \\\"code128b\\\",\\n        \\\"code128c\\\",\\n        \\\"code128sscc\\\",\\n        \\\"datamatrix\\\",\\n        \\\"ean8\\\",\\n        \\\"ean8add2\\\",\\n        \\\"ean8add5\\\",\\n        \\\"ean13\\\",\\n        \\\"ean13add2\\\",\\n        \\\"ean13add5\\\",\\n        \\\"ean13pwcd\\\",\\n        \\\"fim\\\",\\n        \\\"logmars\\\",\\n        \\\"maxicode\\\",\\n        \\\"msi\\\",\\n        \\\"pdf417\\\",\\n        \\\"pdf417macro\\\",\\n        \\\"plessey\\\",\\n        \\\"postauscust2\\\",\\n        \\\"postauscust3\\\",\\n        \\\"postausreplypaid\\\",\\n        \\\"postausstandard\\\",\\n        \\\"postukrm4scc\\\",\\n        \\\"postusdpbc\\\",\\n        \\\"postusimb\\\",\\n        \\\"postusstandard\\\",\\n        \\\"postus5zip\\\",\\n        \\\"qrcode\\\",\\n        \\\"rfid\\\",\\n        \\\"rss14\\\",\\n        \\\"rss14expanded\\\",\\n        \\\"rss14limited\\\",\\n        \\\"rss14stacked\\\",\\n        \\\"rss14stackedomni\\\",\\n        \\\"rss14truncated\\\",\\n        \\\"telepen\\\",\\n        \\\"ucc128\\\",\\n        \\\"ucc128random\\\",\\n        \\\"ucc128sscc\\\",\\n        \\\"upca\\\",\\n        \\\"upcaadd2\\\",\\n        \\\"upcaadd5\\\",\\n        \\\"upcapwcd\\\",\\n        \\\"upce\\\",\\n        \\\"upceadd2\\\",\\n        \\\"upceadd5\\\",\\n        \\\"upcean2\\\",\\n        \\\"upcean5\\\",\\n        \\\"upsmaxicode\\\",\\n      ]\\n    );\\n    this.upsMode = getStringOption(attributes.upsMode, [\\n      \\\"usCarrier\\\",\\n      \\\"internationalCarrier\\\",\\n      \\\"secureSymbol\\\",\\n      \\\"standardSymbol\\\",\\n    ]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.wideNarrowRatio = getRatio(attributes.wideNarrowRatio);\\n    this.encrypt = null;\\n    this.extras = null;\\n  }\\n}\\n\\nclass Bind extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"bind\\\", \u002F* hasChildren = *\u002F true);\\n    this.match = getStringOption(attributes.match, [\\n      \\\"once\\\",\\n      \\\"dataRef\\\",\\n      \\\"global\\\",\\n      \\\"none\\\",\\n    ]);\\n    this.ref = attributes.ref || \\\"\\\";\\n    this.picture = null;\\n  }\\n}\\n\\nclass BindItems extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"bindItems\\\");\\n    this.connection = attributes.connection || \\\"\\\";\\n    this.labelRef = attributes.labelRef || \\\"\\\";\\n    this.ref = attributes.ref || \\\"\\\";\\n    this.valueRef = attributes.valueRef || \\\"\\\";\\n  }\\n}\\n\\nclass Bookend extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"bookend\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.leader = attributes.leader || \\\"\\\";\\n    this.trailer = attributes.trailer || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass BooleanElement extends Option01 {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"boolean\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    return valueToHtml(this[$content] === 1 ? \\\"1\\\" : \\\"0\\\");\\n  }\\n}\\n\\nclass Border extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"border\\\", \u002F* hasChildren = *\u002F true);\\n    this.break = getStringOption(attributes.break, [\\\"close\\\", \\\"open\\\"]);\\n    this.hand = getStringOption(attributes.hand, [\\\"even\\\", \\\"left\\\", \\\"right\\\"]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.presence = getStringOption(attributes.presence, [\\n      \\\"visible\\\",\\n      \\\"hidden\\\",\\n      \\\"inactive\\\",\\n      \\\"invisible\\\",\\n    ]);\\n    this.relevant = getRelevant(attributes.relevant);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.corner = new XFAObjectArray(4);\\n    this.edge = new XFAObjectArray(4);\\n    this.extras = null;\\n    this.fill = null;\\n    this.margin = null;\\n  }\\n\\n  [$getExtra]() {\\n    if (!this[$extra]) {\\n      const edges = this.edge.children.slice();\\n      if (edges.length \u003C 4) {\\n        const defaultEdge = edges.at(-1) || new Edge({});\\n        for (let i = edges.length; i \u003C 4; i++) {\\n          edges.push(defaultEdge);\\n        }\\n      }\\n\\n      const widths = edges.map(edge => edge.thickness);\\n      const insets = [0, 0, 0, 0];\\n      if (this.margin) {\\n        insets[0] = this.margin.topInset;\\n        insets[1] = this.margin.rightInset;\\n        insets[2] = this.margin.bottomInset;\\n        insets[3] = this.margin.leftInset;\\n      }\\n      this[$extra] = { widths, insets, edges };\\n    }\\n    return this[$extra];\\n  }\\n\\n  [$toStyle]() {\\n    \u002F\u002F TODO: incomplete (hand).\\n    const { edges } = this[$getExtra]();\\n    const edgeStyles = edges.map(node => {\\n      const style = node[$toStyle]();\\n      style.color ||= \\\"#000000\\\";\\n      return style;\\n    });\\n\\n    const style = Object.create(null);\\n    if (this.margin) {\\n      Object.assign(style, this.margin[$toStyle]());\\n    }\\n\\n    if (this.fill?.presence === \\\"visible\\\") {\\n      Object.assign(style, this.fill[$toStyle]());\\n    }\\n\\n    if (this.corner.children.some(node => node.radius !== 0)) {\\n      const cornerStyles = this.corner.children.map(node => node[$toStyle]());\\n      if (cornerStyles.length === 2 || cornerStyles.length === 3) {\\n        const last = cornerStyles.at(-1);\\n        for (let i = cornerStyles.length; i \u003C 4; i++) {\\n          cornerStyles.push(last);\\n        }\\n      }\\n\\n      style.borderRadius = cornerStyles.map(s => s.radius).join(\\\" \\\");\\n    }\\n\\n    switch (this.presence) {\\n      case \\\"invisible\\\":\\n      case \\\"hidden\\\":\\n        style.borderStyle = \\\"\\\";\\n        break;\\n      case \\\"inactive\\\":\\n        style.borderStyle = \\\"none\\\";\\n        break;\\n      default:\\n        style.borderStyle = edgeStyles.map(s => s.style).join(\\\" \\\");\\n        break;\\n    }\\n\\n    style.borderWidth = edgeStyles.map(s => s.width).join(\\\" \\\");\\n    style.borderColor = edgeStyles.map(s => s.color).join(\\\" \\\");\\n\\n    return style;\\n  }\\n}\\n\\nclass Break extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"break\\\", \u002F* hasChildren = *\u002F true);\\n    this.after = getStringOption(attributes.after, [\\n      \\\"auto\\\",\\n      \\\"contentArea\\\",\\n      \\\"pageArea\\\",\\n      \\\"pageEven\\\",\\n      \\\"pageOdd\\\",\\n    ]);\\n    this.afterTarget = attributes.afterTarget || \\\"\\\";\\n    this.before = getStringOption(attributes.before, [\\n      \\\"auto\\\",\\n      \\\"contentArea\\\",\\n      \\\"pageArea\\\",\\n      \\\"pageEven\\\",\\n      \\\"pageOdd\\\",\\n    ]);\\n    this.beforeTarget = attributes.beforeTarget || \\\"\\\";\\n    this.bookendLeader = attributes.bookendLeader || \\\"\\\";\\n    this.bookendTrailer = attributes.bookendTrailer || \\\"\\\";\\n    this.id = attributes.id || \\\"\\\";\\n    this.overflowLeader = attributes.overflowLeader || \\\"\\\";\\n    this.overflowTarget = attributes.overflowTarget || \\\"\\\";\\n    this.overflowTrailer = attributes.overflowTrailer || \\\"\\\";\\n    this.startNew = getInteger({\\n      data: attributes.startNew,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n  }\\n}\\n\\nclass BreakAfter extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"breakAfter\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.leader = attributes.leader || \\\"\\\";\\n    this.startNew = getInteger({\\n      data: attributes.startNew,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.target = attributes.target || \\\"\\\";\\n    this.targetType = getStringOption(attributes.targetType, [\\n      \\\"auto\\\",\\n      \\\"contentArea\\\",\\n      \\\"pageArea\\\",\\n    ]);\\n    this.trailer = attributes.trailer || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.script = null;\\n  }\\n}\\n\\nclass BreakBefore extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"breakBefore\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.leader = attributes.leader || \\\"\\\";\\n    this.startNew = getInteger({\\n      data: attributes.startNew,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.target = attributes.target || \\\"\\\";\\n    this.targetType = getStringOption(attributes.targetType, [\\n      \\\"auto\\\",\\n      \\\"contentArea\\\",\\n      \\\"pageArea\\\",\\n    ]);\\n    this.trailer = attributes.trailer || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.script = null;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    this[$extra] = {};\\n    return HTMLResult.FAILURE;\\n  }\\n}\\n\\nclass Button extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"button\\\", \u002F* hasChildren = *\u002F true);\\n    this.highlight = getStringOption(attributes.highlight, [\\n      \\\"inverted\\\",\\n      \\\"none\\\",\\n      \\\"outline\\\",\\n      \\\"push\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    \u002F\u002F TODO: highlight.\\n\\n    const parent = this[$getParent]();\\n    const grandpa = parent[$getParent]();\\n    const htmlButton = {\\n      name: \\\"button\\\",\\n      attributes: {\\n        id: this[$uid],\\n        class: [\\\"xfaButton\\\"],\\n        style: {},\\n      },\\n      children: [],\\n    };\\n\\n    for (const event of grandpa.event.children) {\\n      \u002F\u002F if (true) break;\\n      if (event.activity !== \\\"click\\\" || !event.script) {\\n        continue;\\n      }\\n      const jsURL = recoverJsURL(event.script[$content]);\\n      if (!jsURL) {\\n        continue;\\n      }\\n      const href = fixURL(jsURL.url);\\n      if (!href) {\\n        continue;\\n      }\\n\\n      \u002F\u002F we've an url so generate a \u003Ca>\\n      htmlButton.children.push({\\n        name: \\\"a\\\",\\n        attributes: {\\n          id: \\\"link\\\" + this[$uid],\\n          href,\\n          newWindow: jsURL.newWindow,\\n          class: [\\\"xfaLink\\\"],\\n          style: {},\\n        },\\n        children: [],\\n      });\\n    }\\n\\n    return HTMLResult.success(htmlButton);\\n  }\\n}\\n\\nclass Calculate extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"calculate\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.override = getStringOption(attributes.override, [\\n      \\\"disabled\\\",\\n      \\\"error\\\",\\n      \\\"ignore\\\",\\n      \\\"warning\\\",\\n    ]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n    this.message = null;\\n    this.script = null;\\n  }\\n}\\n\\nclass Caption extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"caption\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.placement = getStringOption(attributes.placement, [\\n      \\\"left\\\",\\n      \\\"bottom\\\",\\n      \\\"inline\\\",\\n      \\\"right\\\",\\n      \\\"top\\\",\\n    ]);\\n    this.presence = getStringOption(attributes.presence, [\\n      \\\"visible\\\",\\n      \\\"hidden\\\",\\n      \\\"inactive\\\",\\n      \\\"invisible\\\",\\n    ]);\\n    this.reserve = Math.ceil(getMeasurement(attributes.reserve));\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n    this.font = null;\\n    this.margin = null;\\n    this.para = null;\\n    this.value = null;\\n  }\\n\\n  [$setValue](value) {\\n    _setValue(this, value);\\n  }\\n\\n  [$getExtra](availableSpace) {\\n    if (!this[$extra]) {\\n      let { width, height } = availableSpace;\\n      switch (this.placement) {\\n        case \\\"left\\\":\\n        case \\\"right\\\":\\n        case \\\"inline\\\":\\n          width = this.reserve \u003C= 0 ? width : this.reserve;\\n          break;\\n        case \\\"top\\\":\\n        case \\\"bottom\\\":\\n          height = this.reserve \u003C= 0 ? height : this.reserve;\\n          break;\\n      }\\n\\n      this[$extra] = layoutNode(this, { width, height });\\n    }\\n    return this[$extra];\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    \u002F\u002F TODO: incomplete.\\n    if (!this.value) {\\n      return HTMLResult.EMPTY;\\n    }\\n\\n    this[$pushPara]();\\n    const value = this.value[$toHTML](availableSpace).html;\\n\\n    if (!value) {\\n      this[$popPara]();\\n      return HTMLResult.EMPTY;\\n    }\\n\\n    const savedReserve = this.reserve;\\n    if (this.reserve \u003C= 0) {\\n      const { w, h } = this[$getExtra](availableSpace);\\n      switch (this.placement) {\\n        case \\\"left\\\":\\n        case \\\"right\\\":\\n        case \\\"inline\\\":\\n          this.reserve = w;\\n          break;\\n        case \\\"top\\\":\\n        case \\\"bottom\\\":\\n          this.reserve = h;\\n          break;\\n      }\\n    }\\n\\n    const children = [];\\n    if (typeof value === \\\"string\\\") {\\n      children.push({\\n        name: \\\"#text\\\",\\n        value,\\n      });\\n    } else {\\n      children.push(value);\\n    }\\n\\n    const style = toStyle(this, \\\"font\\\", \\\"margin\\\", \\\"visibility\\\");\\n    switch (this.placement) {\\n      case \\\"left\\\":\\n      case \\\"right\\\":\\n        if (this.reserve > 0) {\\n          style.width = measureToString(this.reserve);\\n        }\\n        break;\\n      case \\\"top\\\":\\n      case \\\"bottom\\\":\\n        if (this.reserve > 0) {\\n          style.height = measureToString(this.reserve);\\n        }\\n        break;\\n    }\\n\\n    setPara(this, null, value);\\n    this[$popPara]();\\n\\n    this.reserve = savedReserve;\\n\\n    return HTMLResult.success({\\n      name: \\\"div\\\",\\n      attributes: {\\n        style,\\n        class: [\\\"xfaCaption\\\"],\\n      },\\n      children,\\n    });\\n  }\\n}\\n\\nclass Certificate extends StringObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"certificate\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Certificates extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"certificates\\\", \u002F* hasChildren = *\u002F true);\\n    this.credentialServerPolicy = getStringOption(\\n      attributes.credentialServerPolicy,\\n      [\\\"optional\\\", \\\"required\\\"]\\n    );\\n    this.id = attributes.id || \\\"\\\";\\n    this.url = attributes.url || \\\"\\\";\\n    this.urlPolicy = attributes.urlPolicy || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.encryption = null;\\n    this.issuers = null;\\n    this.keyUsage = null;\\n    this.oids = null;\\n    this.signing = null;\\n    this.subjectDNs = null;\\n  }\\n}\\n\\nclass CheckButton extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"checkButton\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.mark = getStringOption(attributes.mark, [\\n      \\\"default\\\",\\n      \\\"check\\\",\\n      \\\"circle\\\",\\n      \\\"cross\\\",\\n      \\\"diamond\\\",\\n      \\\"square\\\",\\n      \\\"star\\\",\\n    ]);\\n    this.shape = getStringOption(attributes.shape, [\\\"square\\\", \\\"round\\\"]);\\n    this.size = getMeasurement(attributes.size, \\\"10pt\\\");\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.border = null;\\n    this.extras = null;\\n    this.margin = null;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    \u002F\u002F TODO: border, shape and mark.\\n\\n    const style = toStyle(this, \\\"margin\\\");\\n    const size = measureToString(this.size);\\n\\n    style.width = style.height = size;\\n\\n    let type;\\n    let className;\\n    let groupId;\\n    const field = this[$getParent]()[$getParent]();\\n    const items =\\n      (field.items.children.length &&\\n        field.items.children[0][$toHTML]().html) ||\\n      [];\\n    const exportedValue = {\\n      on: (items[0] !== undefined ? items[0] : \\\"on\\\").toString(),\\n      off: (items[1] !== undefined ? items[1] : \\\"off\\\").toString(),\\n    };\\n\\n    const value = field.value?.[$text]() || \\\"off\\\";\\n    const checked = value === exportedValue.on || undefined;\\n    const container = field[$getSubformParent]();\\n    const fieldId = field[$uid];\\n    let dataId;\\n\\n    if (container instanceof ExclGroup) {\\n      groupId = container[$uid];\\n      type = \\\"radio\\\";\\n      className = \\\"xfaRadio\\\";\\n      dataId = container[$data]?.[$uid] || container[$uid];\\n    } else {\\n      type = \\\"checkbox\\\";\\n      className = \\\"xfaCheckbox\\\";\\n      dataId = field[$data]?.[$uid] || field[$uid];\\n    }\\n\\n    const input = {\\n      name: \\\"input\\\",\\n      attributes: {\\n        class: [className],\\n        style,\\n        fieldId,\\n        dataId,\\n        type,\\n        checked,\\n        xfaOn: exportedValue.on,\\n        xfaOff: exportedValue.off,\\n        \\\"aria-label\\\": ariaLabel(field),\\n        \\\"aria-required\\\": false,\\n      },\\n    };\\n\\n    if (groupId) {\\n      input.attributes.name = groupId;\\n    }\\n\\n    if (isRequired(field)) {\\n      input.attributes[\\\"aria-required\\\"] = true;\\n      input.attributes.required = true;\\n    }\\n\\n    return HTMLResult.success({\\n      name: \\\"label\\\",\\n      attributes: {\\n        class: [\\\"xfaLabel\\\"],\\n      },\\n      children: [input],\\n    });\\n  }\\n}\\n\\nclass ChoiceList extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"choiceList\\\", \u002F* hasChildren = *\u002F true);\\n    this.commitOn = getStringOption(attributes.commitOn, [\\\"select\\\", \\\"exit\\\"]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.open = getStringOption(attributes.open, [\\n      \\\"userControl\\\",\\n      \\\"always\\\",\\n      \\\"multiSelect\\\",\\n      \\\"onEntry\\\",\\n    ]);\\n    this.textEntry = getInteger({\\n      data: attributes.textEntry,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.border = null;\\n    this.extras = null;\\n    this.margin = null;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    \u002F\u002F TODO: incomplete.\\n    const style = toStyle(this, \\\"border\\\", \\\"margin\\\");\\n    const ui = this[$getParent]();\\n    const field = ui[$getParent]();\\n    const fontSize = field.font?.size || 10;\\n    const optionStyle = {\\n      fontSize: `calc(${fontSize}px * var(--total-scale-factor))`,\\n    };\\n    const children = [];\\n\\n    if (field.items.children.length > 0) {\\n      const items = field.items;\\n      let displayedIndex = 0;\\n      let saveIndex = 0;\\n      if (items.children.length === 2) {\\n        displayedIndex = items.children[0].save;\\n        saveIndex = 1 - displayedIndex;\\n      }\\n      const displayed = items.children[displayedIndex][$toHTML]().html;\\n      const values = items.children[saveIndex][$toHTML]().html;\\n\\n      let selected = false;\\n      const value = field.value?.[$text]() || \\\"\\\";\\n      for (let i = 0, ii = displayed.length; i \u003C ii; i++) {\\n        const option = {\\n          name: \\\"option\\\",\\n          attributes: {\\n            value: values[i] || displayed[i],\\n            style: optionStyle,\\n          },\\n          value: displayed[i],\\n        };\\n        if (values[i] === value) {\\n          option.attributes.selected = selected = true;\\n        }\\n        children.push(option);\\n      }\\n\\n      if (!selected) {\\n        children.splice(0, 0, {\\n          name: \\\"option\\\",\\n          attributes: {\\n            hidden: true,\\n            selected: true,\\n          },\\n          value: \\\" \\\",\\n        });\\n      }\\n    }\\n\\n    const selectAttributes = {\\n      class: [\\\"xfaSelect\\\"],\\n      fieldId: field[$uid],\\n      dataId: field[$data]?.[$uid] || field[$uid],\\n      style,\\n      \\\"aria-label\\\": ariaLabel(field),\\n      \\\"aria-required\\\": false,\\n    };\\n\\n    if (isRequired(field)) {\\n      selectAttributes[\\\"aria-required\\\"] = true;\\n      selectAttributes.required = true;\\n    }\\n\\n    if (this.open === \\\"multiSelect\\\") {\\n      selectAttributes.multiple = true;\\n    }\\n\\n    return HTMLResult.success({\\n      name: \\\"label\\\",\\n      attributes: {\\n        class: [\\\"xfaLabel\\\"],\\n      },\\n      children: [\\n        {\\n          name: \\\"select\\\",\\n          children,\\n          attributes: selectAttributes,\\n        },\\n      ],\\n    });\\n  }\\n}\\n\\nclass Color extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"color\\\", \u002F* hasChildren = *\u002F true);\\n    this.cSpace = getStringOption(attributes.cSpace, [\\\"SRGB\\\"]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.value = attributes.value ? getColor(attributes.value) : \\\"\\\";\\n    this.extras = null;\\n  }\\n\\n  [$hasSettableValue]() {\\n    return false;\\n  }\\n\\n  [$toStyle]() {\\n    return this.value\\n      ? Util.makeHexColor(this.value.r, this.value.g, this.value.b)\\n      : null;\\n  }\\n}\\n\\nclass Comb extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"comb\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.numberOfCells = getInteger({\\n      data: attributes.numberOfCells,\\n      defaultValue: 0,\\n      validate: x => x >= 0,\\n    });\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Connect extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"connect\\\", \u002F* hasChildren = *\u002F true);\\n    this.connection = attributes.connection || \\\"\\\";\\n    this.id = attributes.id || \\\"\\\";\\n    this.ref = attributes.ref || \\\"\\\";\\n    this.usage = getStringOption(attributes.usage, [\\n      \\\"exportAndImport\\\",\\n      \\\"exportOnly\\\",\\n      \\\"importOnly\\\",\\n    ]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.picture = null;\\n  }\\n}\\n\\nclass ContentArea extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"contentArea\\\", \u002F* hasChildren = *\u002F true);\\n    this.h = getMeasurement(attributes.h);\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.relevant = getRelevant(attributes.relevant);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.w = getMeasurement(attributes.w);\\n    this.x = getMeasurement(attributes.x, \\\"0pt\\\");\\n    this.y = getMeasurement(attributes.y, \\\"0pt\\\");\\n    this.desc = null;\\n    this.extras = null;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    \u002F\u002F TODO: incomplete.\\n    const left = measureToString(this.x);\\n    const top = measureToString(this.y);\\n\\n    const style = {\\n      left,\\n      top,\\n      width: measureToString(this.w),\\n      height: measureToString(this.h),\\n    };\\n\\n    const classNames = [\\\"xfaContentarea\\\"];\\n\\n    if (isPrintOnly(this)) {\\n      classNames.push(\\\"xfaPrintOnly\\\");\\n    }\\n\\n    return HTMLResult.success({\\n      name: \\\"div\\\",\\n      children: [],\\n      attributes: {\\n        style,\\n        class: classNames,\\n        id: this[$uid],\\n      },\\n    });\\n  }\\n}\\n\\nclass Corner extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"corner\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.inverted = getInteger({\\n      data: attributes.inverted,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.join = getStringOption(attributes.join, [\\\"square\\\", \\\"round\\\"]);\\n    this.presence = getStringOption(attributes.presence, [\\n      \\\"visible\\\",\\n      \\\"hidden\\\",\\n      \\\"inactive\\\",\\n      \\\"invisible\\\",\\n    ]);\\n    this.radius = getMeasurement(attributes.radius);\\n    this.stroke = getStringOption(attributes.stroke, [\\n      \\\"solid\\\",\\n      \\\"dashDot\\\",\\n      \\\"dashDotDot\\\",\\n      \\\"dashed\\\",\\n      \\\"dotted\\\",\\n      \\\"embossed\\\",\\n      \\\"etched\\\",\\n      \\\"lowered\\\",\\n      \\\"raised\\\",\\n    ]);\\n    this.thickness = getMeasurement(attributes.thickness, \\\"0.5pt\\\");\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.color = null;\\n    this.extras = null;\\n  }\\n\\n  [$toStyle]() {\\n    \u002F\u002F In using CSS it's only possible to handle radius\\n    \u002F\u002F (at least with basic css).\\n    \u002F\u002F Is there a real use (interest ?) of all these properties ?\\n    \u002F\u002F Maybe it's possible to implement them using svg and border-image...\\n    \u002F\u002F TODO: implement all the missing properties.\\n    const style = toStyle(this, \\\"visibility\\\");\\n    style.radius = measureToString(this.join === \\\"square\\\" ? 0 : this.radius);\\n    return style;\\n  }\\n}\\n\\nclass DateElement extends ContentObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"date\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n\\n  [$finalize]() {\\n    const date = this[$content].trim();\\n    this[$content] = date ? new Date(date) : null;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    return valueToHtml(this[$content] ? this[$content].toString() : \\\"\\\");\\n  }\\n}\\n\\nclass DateTime extends ContentObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"dateTime\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n\\n  [$finalize]() {\\n    const date = this[$content].trim();\\n    this[$content] = date ? new Date(date) : null;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    return valueToHtml(this[$content] ? this[$content].toString() : \\\"\\\");\\n  }\\n}\\n\\nclass DateTimeEdit extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"dateTimeEdit\\\", \u002F* hasChildren = *\u002F true);\\n    this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\\n      \\\"auto\\\",\\n      \\\"off\\\",\\n      \\\"on\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.picker = getStringOption(attributes.picker, [\\\"host\\\", \\\"none\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.border = null;\\n    this.comb = null;\\n    this.extras = null;\\n    this.margin = null;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    \u002F\u002F TODO: incomplete.\\n    \u002F\u002F When the picker is host we should use type=date for the input\\n    \u002F\u002F but we need to put the buttons outside the text-field.\\n    const style = toStyle(this, \\\"border\\\", \\\"font\\\", \\\"margin\\\");\\n    const field = this[$getParent]()[$getParent]();\\n    const html = {\\n      name: \\\"input\\\",\\n      attributes: {\\n        type: \\\"text\\\",\\n        fieldId: field[$uid],\\n        dataId: field[$data]?.[$uid] || field[$uid],\\n        class: [\\\"xfaTextfield\\\"],\\n        style,\\n        \\\"aria-label\\\": ariaLabel(field),\\n        \\\"aria-required\\\": false,\\n      },\\n    };\\n\\n    if (isRequired(field)) {\\n      html.attributes[\\\"aria-required\\\"] = true;\\n      html.attributes.required = true;\\n    }\\n\\n    return HTMLResult.success({\\n      name: \\\"label\\\",\\n      attributes: {\\n        class: [\\\"xfaLabel\\\"],\\n      },\\n      children: [html],\\n    });\\n  }\\n}\\n\\nclass Decimal extends ContentObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"decimal\\\");\\n    this.fracDigits = getInteger({\\n      data: attributes.fracDigits,\\n      defaultValue: 2,\\n      validate: x => true,\\n    });\\n    this.id = attributes.id || \\\"\\\";\\n    this.leadDigits = getInteger({\\n      data: attributes.leadDigits,\\n      defaultValue: -1,\\n      validate: x => true,\\n    });\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n\\n  [$finalize]() {\\n    const number = parseFloat(this[$content].trim());\\n    this[$content] = isNaN(number) ? null : number;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    return valueToHtml(\\n      this[$content] !== null ? this[$content].toString() : \\\"\\\"\\n    );\\n  }\\n}\\n\\nclass DefaultUi extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"defaultUi\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n  }\\n}\\n\\nclass Desc extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"desc\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.boolean = new XFAObjectArray();\\n    this.date = new XFAObjectArray();\\n    this.dateTime = new XFAObjectArray();\\n    this.decimal = new XFAObjectArray();\\n    this.exData = new XFAObjectArray();\\n    this.float = new XFAObjectArray();\\n    this.image = new XFAObjectArray();\\n    this.integer = new XFAObjectArray();\\n    this.text = new XFAObjectArray();\\n    this.time = new XFAObjectArray();\\n  }\\n}\\n\\nclass DigestMethod extends OptionObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"digestMethod\\\", [\\n      \\\"\\\",\\n      \\\"SHA1\\\",\\n      \\\"SHA256\\\",\\n      \\\"SHA512\\\",\\n      \\\"RIPEMD160\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass DigestMethods extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"digestMethods\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\\"optional\\\", \\\"required\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.digestMethod = new XFAObjectArray();\\n  }\\n}\\n\\nclass Draw extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"draw\\\", \u002F* hasChildren = *\u002F true);\\n    this.anchorType = getStringOption(attributes.anchorType, [\\n      \\\"topLeft\\\",\\n      \\\"bottomCenter\\\",\\n      \\\"bottomLeft\\\",\\n      \\\"bottomRight\\\",\\n      \\\"middleCenter\\\",\\n      \\\"middleLeft\\\",\\n      \\\"middleRight\\\",\\n      \\\"topCenter\\\",\\n      \\\"topRight\\\",\\n    ]);\\n    this.colSpan = getInteger({\\n      data: attributes.colSpan,\\n      defaultValue: 1,\\n      validate: n => n >= 1 || n === -1,\\n    });\\n    this.h = attributes.h ? getMeasurement(attributes.h) : \\\"\\\";\\n    this.hAlign = getStringOption(attributes.hAlign, [\\n      \\\"left\\\",\\n      \\\"center\\\",\\n      \\\"justify\\\",\\n      \\\"justifyAll\\\",\\n      \\\"radix\\\",\\n      \\\"right\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.locale = attributes.locale || \\\"\\\";\\n    this.maxH = getMeasurement(attributes.maxH, \\\"0pt\\\");\\n    this.maxW = getMeasurement(attributes.maxW, \\\"0pt\\\");\\n    this.minH = getMeasurement(attributes.minH, \\\"0pt\\\");\\n    this.minW = getMeasurement(attributes.minW, \\\"0pt\\\");\\n    this.name = attributes.name || \\\"\\\";\\n    this.presence = getStringOption(attributes.presence, [\\n      \\\"visible\\\",\\n      \\\"hidden\\\",\\n      \\\"inactive\\\",\\n      \\\"invisible\\\",\\n    ]);\\n    this.relevant = getRelevant(attributes.relevant);\\n    this.rotate = getInteger({\\n      data: attributes.rotate,\\n      defaultValue: 0,\\n      validate: x => x % 90 === 0,\\n    });\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.w = attributes.w ? getMeasurement(attributes.w) : \\\"\\\";\\n    this.x = getMeasurement(attributes.x, \\\"0pt\\\");\\n    this.y = getMeasurement(attributes.y, \\\"0pt\\\");\\n    this.assist = null;\\n    this.border = null;\\n    this.caption = null;\\n    this.desc = null;\\n    this.extras = null;\\n    this.font = null;\\n    this.keep = null;\\n    this.margin = null;\\n    this.para = null;\\n    this.traversal = null;\\n    this.ui = null;\\n    this.value = null;\\n    this.setProperty = new XFAObjectArray();\\n  }\\n\\n  [$setValue](value) {\\n    _setValue(this, value);\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    setTabIndex(this);\\n\\n    if (this.presence === \\\"hidden\\\" || this.presence === \\\"inactive\\\") {\\n      return HTMLResult.EMPTY;\\n    }\\n\\n    fixDimensions(this);\\n    this[$pushPara]();\\n\\n    \u002F\u002F If at least one dimension is missing and we've a text\\n    \u002F\u002F then we can guess it in laying out the text.\\n    const savedW = this.w;\\n    const savedH = this.h;\\n    const { w, h, isBroken } = layoutNode(this, availableSpace);\\n    if (w && this.w === \\\"\\\") {\\n      \u002F\u002F If the parent layout is lr-tb with a w=100 and we already have a child\\n      \u002F\u002F which takes 90 on the current line.\\n      \u002F\u002F If we have a text with a length (in px) equal to 100 then it'll be\\n      \u002F\u002F splitted into almost 10 chunks: so it won't be nice.\\n      \u002F\u002F So if we've potentially more width to provide in some parent containers\\n      \u002F\u002F let's increase it to give a chance to have a better rendering.\\n      if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) {\\n        this[$popPara]();\\n        return HTMLResult.FAILURE;\\n      }\\n\\n      this.w = w;\\n    }\\n    if (h && this.h === \\\"\\\") {\\n      this.h = h;\\n    }\\n\\n    setFirstUnsplittable(this);\\n    if (!checkDimensions(this, availableSpace)) {\\n      this.w = savedW;\\n      this.h = savedH;\\n      this[$popPara]();\\n      return HTMLResult.FAILURE;\\n    }\\n    unsetFirstUnsplittable(this);\\n\\n    const style = toStyle(\\n      this,\\n      \\\"font\\\",\\n      \\\"hAlign\\\",\\n      \\\"dimensions\\\",\\n      \\\"position\\\",\\n      \\\"presence\\\",\\n      \\\"rotate\\\",\\n      \\\"anchorType\\\",\\n      \\\"border\\\",\\n      \\\"margin\\\"\\n    );\\n\\n    setMinMaxDimensions(this, style);\\n\\n    if (style.margin) {\\n      style.padding = style.margin;\\n      delete style.margin;\\n    }\\n\\n    const classNames = [\\\"xfaDraw\\\"];\\n    if (this.font) {\\n      classNames.push(\\\"xfaFont\\\");\\n    }\\n    if (isPrintOnly(this)) {\\n      classNames.push(\\\"xfaPrintOnly\\\");\\n    }\\n\\n    const attributes = {\\n      style,\\n      id: this[$uid],\\n      class: classNames,\\n    };\\n\\n    if (this.name) {\\n      attributes.xfaName = this.name;\\n    }\\n\\n    const html = {\\n      name: \\\"div\\\",\\n      attributes,\\n      children: [],\\n    };\\n\\n    applyAssist(this, attributes);\\n\\n    const bbox = computeBbox(this, html, availableSpace);\\n\\n    const value = this.value ? this.value[$toHTML](availableSpace).html : null;\\n    if (value === null) {\\n      this.w = savedW;\\n      this.h = savedH;\\n      this[$popPara]();\\n      return HTMLResult.success(createWrapper(this, html), bbox);\\n    }\\n\\n    html.children.push(value);\\n    setPara(this, style, value);\\n\\n    this.w = savedW;\\n    this.h = savedH;\\n\\n    this[$popPara]();\\n    return HTMLResult.success(createWrapper(this, html), bbox);\\n  }\\n}\\n\\nclass Edge extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"edge\\\", \u002F* hasChildren = *\u002F true);\\n    this.cap = getStringOption(attributes.cap, [\\\"square\\\", \\\"butt\\\", \\\"round\\\"]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.presence = getStringOption(attributes.presence, [\\n      \\\"visible\\\",\\n      \\\"hidden\\\",\\n      \\\"inactive\\\",\\n      \\\"invisible\\\",\\n    ]);\\n    this.stroke = getStringOption(attributes.stroke, [\\n      \\\"solid\\\",\\n      \\\"dashDot\\\",\\n      \\\"dashDotDot\\\",\\n      \\\"dashed\\\",\\n      \\\"dotted\\\",\\n      \\\"embossed\\\",\\n      \\\"etched\\\",\\n      \\\"lowered\\\",\\n      \\\"raised\\\",\\n    ]);\\n    this.thickness = getMeasurement(attributes.thickness, \\\"0.5pt\\\");\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.color = null;\\n    this.extras = null;\\n  }\\n\\n  [$toStyle]() {\\n    \u002F\u002F TODO: dashDot & dashDotDot.\\n    const style = toStyle(this, \\\"visibility\\\");\\n    Object.assign(style, {\\n      linecap: this.cap,\\n      width: measureToString(this.thickness),\\n      color: this.color ? this.color[$toStyle]() : \\\"#000000\\\",\\n      style: \\\"\\\",\\n    });\\n\\n    if (this.presence !== \\\"visible\\\") {\\n      style.style = \\\"none\\\";\\n    } else {\\n      switch (this.stroke) {\\n        case \\\"solid\\\":\\n          style.style = \\\"solid\\\";\\n          break;\\n        case \\\"dashDot\\\":\\n          style.style = \\\"dashed\\\";\\n          break;\\n        case \\\"dashDotDot\\\":\\n          style.style = \\\"dashed\\\";\\n          break;\\n        case \\\"dashed\\\":\\n          style.style = \\\"dashed\\\";\\n          break;\\n        case \\\"dotted\\\":\\n          style.style = \\\"dotted\\\";\\n          break;\\n        case \\\"embossed\\\":\\n          style.style = \\\"ridge\\\";\\n          break;\\n        case \\\"etched\\\":\\n          style.style = \\\"groove\\\";\\n          break;\\n        case \\\"lowered\\\":\\n          style.style = \\\"inset\\\";\\n          break;\\n        case \\\"raised\\\":\\n          style.style = \\\"outset\\\";\\n          break;\\n      }\\n    }\\n    return style;\\n  }\\n}\\n\\nclass Encoding extends OptionObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"encoding\\\", [\\n      \\\"adbe.x509.rsa_sha1\\\",\\n      \\\"adbe.pkcs7.detached\\\",\\n      \\\"adbe.pkcs7.sha1\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Encodings extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"encodings\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\\"optional\\\", \\\"required\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.encoding = new XFAObjectArray();\\n  }\\n}\\n\\nclass Encrypt extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"encrypt\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.certificate = null;\\n  }\\n}\\n\\nclass EncryptData extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"encryptData\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.operation = getStringOption(attributes.operation, [\\n      \\\"encrypt\\\",\\n      \\\"decrypt\\\",\\n    ]);\\n    this.target = attributes.target || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.filter = null;\\n    this.manifest = null;\\n  }\\n}\\n\\nclass Encryption extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"encryption\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\\"optional\\\", \\\"required\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.certificate = new XFAObjectArray();\\n  }\\n}\\n\\nclass EncryptionMethod extends OptionObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"encryptionMethod\\\", [\\n      \\\"\\\",\\n      \\\"AES256-CBC\\\",\\n      \\\"TRIPLEDES-CBC\\\",\\n      \\\"AES128-CBC\\\",\\n      \\\"AES192-CBC\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass EncryptionMethods extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"encryptionMethods\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\\"optional\\\", \\\"required\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.encryptionMethod = new XFAObjectArray();\\n  }\\n}\\n\\nclass Event extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"event\\\", \u002F* hasChildren = *\u002F true);\\n    this.activity = getStringOption(attributes.activity, [\\n      \\\"click\\\",\\n      \\\"change\\\",\\n      \\\"docClose\\\",\\n      \\\"docReady\\\",\\n      \\\"enter\\\",\\n      \\\"exit\\\",\\n      \\\"full\\\",\\n      \\\"indexChange\\\",\\n      \\\"initialize\\\",\\n      \\\"mouseDown\\\",\\n      \\\"mouseEnter\\\",\\n      \\\"mouseExit\\\",\\n      \\\"mouseUp\\\",\\n      \\\"postExecute\\\",\\n      \\\"postOpen\\\",\\n      \\\"postPrint\\\",\\n      \\\"postSave\\\",\\n      \\\"postSign\\\",\\n      \\\"postSubmit\\\",\\n      \\\"preExecute\\\",\\n      \\\"preOpen\\\",\\n      \\\"prePrint\\\",\\n      \\\"preSave\\\",\\n      \\\"preSign\\\",\\n      \\\"preSubmit\\\",\\n      \\\"ready\\\",\\n      \\\"validationState\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.listen = getStringOption(attributes.listen, [\\n      \\\"refOnly\\\",\\n      \\\"refAndDescendents\\\",\\n    ]);\\n    this.name = attributes.name || \\\"\\\";\\n    this.ref = attributes.ref || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n\\n    \u002F\u002F One-of properties\\n    this.encryptData = null;\\n    this.execute = null;\\n    this.script = null;\\n    this.signData = null;\\n    this.submit = null;\\n  }\\n}\\n\\nclass ExData extends ContentObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"exData\\\");\\n    this.contentType = attributes.contentType || \\\"\\\";\\n    this.href = attributes.href || \\\"\\\";\\n    this.id = attributes.id || \\\"\\\";\\n    this.maxLength = getInteger({\\n      data: attributes.maxLength,\\n      defaultValue: -1,\\n      validate: x => x >= -1,\\n    });\\n    this.name = attributes.name || \\\"\\\";\\n    this.rid = attributes.rid || \\\"\\\";\\n    this.transferEncoding = getStringOption(attributes.transferEncoding, [\\n      \\\"none\\\",\\n      \\\"base64\\\",\\n      \\\"package\\\",\\n    ]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n\\n  [$isCDATAXml]() {\\n    return this.contentType === \\\"text\u002Fhtml\\\";\\n  }\\n\\n  [$onChild](child) {\\n    if (\\n      this.contentType === \\\"text\u002Fhtml\\\" &&\\n      child[$namespaceId] === NamespaceIds.xhtml.id\\n    ) {\\n      this[$content] = child;\\n      return true;\\n    }\\n\\n    if (this.contentType === \\\"text\u002Fxml\\\") {\\n      this[$content] = child;\\n      return true;\\n    }\\n\\n    return false;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    if (this.contentType !== \\\"text\u002Fhtml\\\" || !this[$content]) {\\n      \u002F\u002F TODO: fix other cases.\\n      return HTMLResult.EMPTY;\\n    }\\n\\n    return this[$content][$toHTML](availableSpace);\\n  }\\n}\\n\\nclass ExObject extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"exObject\\\", \u002F* hasChildren = *\u002F true);\\n    this.archive = attributes.archive || \\\"\\\";\\n    this.classId = attributes.classId || \\\"\\\";\\n    this.codeBase = attributes.codeBase || \\\"\\\";\\n    this.codeType = attributes.codeType || \\\"\\\";\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n    this.boolean = new XFAObjectArray();\\n    this.date = new XFAObjectArray();\\n    this.dateTime = new XFAObjectArray();\\n    this.decimal = new XFAObjectArray();\\n    this.exData = new XFAObjectArray();\\n    this.exObject = new XFAObjectArray();\\n    this.float = new XFAObjectArray();\\n    this.image = new XFAObjectArray();\\n    this.integer = new XFAObjectArray();\\n    this.text = new XFAObjectArray();\\n    this.time = new XFAObjectArray();\\n  }\\n}\\n\\nclass ExclGroup extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"exclGroup\\\", \u002F* hasChildren = *\u002F true);\\n    this.access = getStringOption(attributes.access, [\\n      \\\"open\\\",\\n      \\\"nonInteractive\\\",\\n      \\\"protected\\\",\\n      \\\"readOnly\\\",\\n    ]);\\n    this.accessKey = attributes.accessKey || \\\"\\\";\\n    this.anchorType = getStringOption(attributes.anchorType, [\\n      \\\"topLeft\\\",\\n      \\\"bottomCenter\\\",\\n      \\\"bottomLeft\\\",\\n      \\\"bottomRight\\\",\\n      \\\"middleCenter\\\",\\n      \\\"middleLeft\\\",\\n      \\\"middleRight\\\",\\n      \\\"topCenter\\\",\\n      \\\"topRight\\\",\\n    ]);\\n    this.colSpan = getInteger({\\n      data: attributes.colSpan,\\n      defaultValue: 1,\\n      validate: n => n >= 1 || n === -1,\\n    });\\n    this.h = attributes.h ? getMeasurement(attributes.h) : \\\"\\\";\\n    this.hAlign = getStringOption(attributes.hAlign, [\\n      \\\"left\\\",\\n      \\\"center\\\",\\n      \\\"justify\\\",\\n      \\\"justifyAll\\\",\\n      \\\"radix\\\",\\n      \\\"right\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.layout = getStringOption(attributes.layout, [\\n      \\\"position\\\",\\n      \\\"lr-tb\\\",\\n      \\\"rl-row\\\",\\n      \\\"rl-tb\\\",\\n      \\\"row\\\",\\n      \\\"table\\\",\\n      \\\"tb\\\",\\n    ]);\\n    this.maxH = getMeasurement(attributes.maxH, \\\"0pt\\\");\\n    this.maxW = getMeasurement(attributes.maxW, \\\"0pt\\\");\\n    this.minH = getMeasurement(attributes.minH, \\\"0pt\\\");\\n    this.minW = getMeasurement(attributes.minW, \\\"0pt\\\");\\n    this.name = attributes.name || \\\"\\\";\\n    this.presence = getStringOption(attributes.presence, [\\n      \\\"visible\\\",\\n      \\\"hidden\\\",\\n      \\\"inactive\\\",\\n      \\\"invisible\\\",\\n    ]);\\n    this.relevant = getRelevant(attributes.relevant);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.w = attributes.w ? getMeasurement(attributes.w) : \\\"\\\";\\n    this.x = getMeasurement(attributes.x, \\\"0pt\\\");\\n    this.y = getMeasurement(attributes.y, \\\"0pt\\\");\\n    this.assist = null;\\n    this.bind = null;\\n    this.border = null;\\n    this.calculate = null;\\n    this.caption = null;\\n    this.desc = null;\\n    this.extras = null;\\n    this.margin = null;\\n    this.para = null;\\n    this.traversal = null;\\n    this.validate = null;\\n    this.connect = new XFAObjectArray();\\n    this.event = new XFAObjectArray();\\n    this.field = new XFAObjectArray();\\n    this.setProperty = new XFAObjectArray();\\n  }\\n\\n  [$isBindable]() {\\n    return true;\\n  }\\n\\n  [$hasSettableValue]() {\\n    return true;\\n  }\\n\\n  [$setValue](value) {\\n    for (const field of this.field.children) {\\n      if (!field.value) {\\n        const nodeValue = new Value({});\\n        field[$appendChild](nodeValue);\\n        field.value = nodeValue;\\n      }\\n\\n      field.value[$setValue](value);\\n    }\\n  }\\n\\n  [$isThereMoreWidth]() {\\n    return (\\n      (this.layout.endsWith(\\\"-tb\\\") &&\\n        this[$extra].attempt === 0 &&\\n        this[$extra].numberInLine > 0) ||\\n      this[$getParent]()[$isThereMoreWidth]()\\n    );\\n  }\\n\\n  [$isSplittable]() {\\n    \u002F\u002F We cannot cache the result here because the contentArea\\n    \u002F\u002F can change.\\n    const parent = this[$getSubformParent]();\\n    if (!parent[$isSplittable]()) {\\n      return false;\\n    }\\n\\n    if (this[$extra]._isSplittable !== undefined) {\\n      return this[$extra]._isSplittable;\\n    }\\n\\n    if (this.layout === \\\"position\\\" || this.layout.includes(\\\"row\\\")) {\\n      this[$extra]._isSplittable = false;\\n      return false;\\n    }\\n\\n    if (parent.layout?.endsWith(\\\"-tb\\\") && parent[$extra].numberInLine !== 0) {\\n      \u002F\u002F See comment in Subform::[$isSplittable] for an explanation.\\n      return false;\\n    }\\n\\n    this[$extra]._isSplittable = true;\\n    return true;\\n  }\\n\\n  [$flushHTML]() {\\n    return flushHTML(this);\\n  }\\n\\n  [$addHTML](html, bbox) {\\n    addHTML(this, html, bbox);\\n  }\\n\\n  [$getAvailableSpace]() {\\n    return getAvailableSpace(this);\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    setTabIndex(this);\\n    if (\\n      this.presence === \\\"hidden\\\" ||\\n      this.presence === \\\"inactive\\\" ||\\n      this.h === 0 ||\\n      this.w === 0\\n    ) {\\n      return HTMLResult.EMPTY;\\n    }\\n\\n    fixDimensions(this);\\n\\n    const children = [];\\n    const attributes = {\\n      id: this[$uid],\\n      class: [],\\n    };\\n\\n    setAccess(this, attributes.class);\\n\\n    this[$extra] ||= Object.create(null);\\n\\n    Object.assign(this[$extra], {\\n      children,\\n      attributes,\\n      attempt: 0,\\n      line: null,\\n      numberInLine: 0,\\n      availableSpace: {\\n        width: Math.min(this.w || Infinity, availableSpace.width),\\n        height: Math.min(this.h || Infinity, availableSpace.height),\\n      },\\n      width: 0,\\n      height: 0,\\n      prevHeight: 0,\\n      currentWidth: 0,\\n    });\\n\\n    const isSplittable = this[$isSplittable]();\\n    if (!isSplittable) {\\n      setFirstUnsplittable(this);\\n    }\\n\\n    if (!checkDimensions(this, availableSpace)) {\\n      return HTMLResult.FAILURE;\\n    }\\n    const filter = new Set([\\\"field\\\"]);\\n\\n    if (this.layout.includes(\\\"row\\\")) {\\n      const columnWidths = this[$getSubformParent]().columnWidths;\\n      if (Array.isArray(columnWidths) && columnWidths.length > 0) {\\n        this[$extra].columnWidths = columnWidths;\\n        this[$extra].currentColumn = 0;\\n      }\\n    }\\n\\n    const style = toStyle(\\n      this,\\n      \\\"anchorType\\\",\\n      \\\"dimensions\\\",\\n      \\\"position\\\",\\n      \\\"presence\\\",\\n      \\\"border\\\",\\n      \\\"margin\\\",\\n      \\\"hAlign\\\"\\n    );\\n    const classNames = [\\\"xfaExclgroup\\\"];\\n    const cl = layoutClass(this);\\n    if (cl) {\\n      classNames.push(cl);\\n    }\\n\\n    if (isPrintOnly(this)) {\\n      classNames.push(\\\"xfaPrintOnly\\\");\\n    }\\n\\n    attributes.style = style;\\n    attributes.class = classNames;\\n\\n    if (this.name) {\\n      attributes.xfaName = this.name;\\n    }\\n\\n    this[$pushPara]();\\n    const isLrTb = this.layout === \\\"lr-tb\\\" || this.layout === \\\"rl-tb\\\";\\n    const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;\\n    for (; this[$extra].attempt \u003C maxRun; this[$extra].attempt++) {\\n      if (isLrTb && this[$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {\\n        \u002F\u002F If the layout is lr-tb then having attempt equals to\\n        \u002F\u002F MAX_ATTEMPTS_FOR_LRTB_LAYOUT-1 means that we're trying to layout\\n        \u002F\u002F on the next line so this on is empty.\\n        this[$extra].numberInLine = 0;\\n      }\\n      const result = this[$childrenToHTML]({\\n        filter,\\n        include: true,\\n      });\\n      if (result.success) {\\n        break;\\n      }\\n      if (result.isBreak()) {\\n        this[$popPara]();\\n        return result;\\n      }\\n      if (\\n        isLrTb &&\\n        this[$extra].attempt === 0 &&\\n        this[$extra].numberInLine === 0 &&\\n        !this[$getTemplateRoot]()[$extra].noLayoutFailure\\n      ) {\\n        \u002F\u002F See comment in Subform::[$toHTML].\\n        this[$extra].attempt = maxRun;\\n        break;\\n      }\\n    }\\n\\n    this[$popPara]();\\n\\n    if (!isSplittable) {\\n      unsetFirstUnsplittable(this);\\n    }\\n\\n    if (this[$extra].attempt === maxRun) {\\n      if (!isSplittable) {\\n        delete this[$extra];\\n      }\\n      return HTMLResult.FAILURE;\\n    }\\n\\n    let marginH = 0;\\n    let marginV = 0;\\n    if (this.margin) {\\n      marginH = this.margin.leftInset + this.margin.rightInset;\\n      marginV = this.margin.topInset + this.margin.bottomInset;\\n    }\\n\\n    const width = Math.max(this[$extra].width + marginH, this.w || 0);\\n    const height = Math.max(this[$extra].height + marginV, this.h || 0);\\n    const bbox = [this.x, this.y, width, height];\\n\\n    if (this.w === \\\"\\\") {\\n      style.width = measureToString(width);\\n    }\\n    if (this.h === \\\"\\\") {\\n      style.height = measureToString(height);\\n    }\\n\\n    const html = {\\n      name: \\\"div\\\",\\n      attributes,\\n      children,\\n    };\\n\\n    applyAssist(this, attributes);\\n\\n    delete this[$extra];\\n\\n    return HTMLResult.success(createWrapper(this, html), bbox);\\n  }\\n}\\n\\nclass Execute extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"execute\\\");\\n    this.connection = attributes.connection || \\\"\\\";\\n    this.executeType = getStringOption(attributes.executeType, [\\n      \\\"import\\\",\\n      \\\"remerge\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.runAt = getStringOption(attributes.runAt, [\\n      \\\"client\\\",\\n      \\\"both\\\",\\n      \\\"server\\\",\\n    ]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Extras extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"extras\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.boolean = new XFAObjectArray();\\n    this.date = new XFAObjectArray();\\n    this.dateTime = new XFAObjectArray();\\n    this.decimal = new XFAObjectArray();\\n    this.exData = new XFAObjectArray();\\n    this.extras = new XFAObjectArray();\\n    this.float = new XFAObjectArray();\\n    this.image = new XFAObjectArray();\\n    this.integer = new XFAObjectArray();\\n    this.text = new XFAObjectArray();\\n    this.time = new XFAObjectArray();\\n  }\\n\\n  \u002F\u002F (Spec) The XFA template grammar defines the extras and desc elements,\\n  \u002F\u002F which can be used to add human-readable or machine-readable\\n  \u002F\u002F data to a template.\\n}\\n\\nclass Field extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"field\\\", \u002F* hasChildren = *\u002F true);\\n    this.access = getStringOption(attributes.access, [\\n      \\\"open\\\",\\n      \\\"nonInteractive\\\",\\n      \\\"protected\\\",\\n      \\\"readOnly\\\",\\n    ]);\\n    this.accessKey = attributes.accessKey || \\\"\\\";\\n    this.anchorType = getStringOption(attributes.anchorType, [\\n      \\\"topLeft\\\",\\n      \\\"bottomCenter\\\",\\n      \\\"bottomLeft\\\",\\n      \\\"bottomRight\\\",\\n      \\\"middleCenter\\\",\\n      \\\"middleLeft\\\",\\n      \\\"middleRight\\\",\\n      \\\"topCenter\\\",\\n      \\\"topRight\\\",\\n    ]);\\n    this.colSpan = getInteger({\\n      data: attributes.colSpan,\\n      defaultValue: 1,\\n      validate: n => n >= 1 || n === -1,\\n    });\\n    this.h = attributes.h ? getMeasurement(attributes.h) : \\\"\\\";\\n    this.hAlign = getStringOption(attributes.hAlign, [\\n      \\\"left\\\",\\n      \\\"center\\\",\\n      \\\"justify\\\",\\n      \\\"justifyAll\\\",\\n      \\\"radix\\\",\\n      \\\"right\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.locale = attributes.locale || \\\"\\\";\\n    this.maxH = getMeasurement(attributes.maxH, \\\"0pt\\\");\\n    this.maxW = getMeasurement(attributes.maxW, \\\"0pt\\\");\\n    this.minH = getMeasurement(attributes.minH, \\\"0pt\\\");\\n    this.minW = getMeasurement(attributes.minW, \\\"0pt\\\");\\n    this.name = attributes.name || \\\"\\\";\\n    this.presence = getStringOption(attributes.presence, [\\n      \\\"visible\\\",\\n      \\\"hidden\\\",\\n      \\\"inactive\\\",\\n      \\\"invisible\\\",\\n    ]);\\n    this.relevant = getRelevant(attributes.relevant);\\n    this.rotate = getInteger({\\n      data: attributes.rotate,\\n      defaultValue: 0,\\n      validate: x => x % 90 === 0,\\n    });\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.w = attributes.w ? getMeasurement(attributes.w) : \\\"\\\";\\n    this.x = getMeasurement(attributes.x, \\\"0pt\\\");\\n    this.y = getMeasurement(attributes.y, \\\"0pt\\\");\\n    this.assist = null;\\n    this.bind = null;\\n    this.border = null;\\n    this.calculate = null;\\n    this.caption = null;\\n    this.desc = null;\\n    this.extras = null;\\n    this.font = null;\\n    this.format = null;\\n    \u002F\u002F For a choice list, one list is used to have display entries\\n    \u002F\u002F and the other for the exported values\\n    this.items = new XFAObjectArray(2);\\n    this.keep = null;\\n    this.margin = null;\\n    this.para = null;\\n    this.traversal = null;\\n    this.ui = null;\\n    this.validate = null;\\n    this.value = null;\\n    this.bindItems = new XFAObjectArray();\\n    this.connect = new XFAObjectArray();\\n    this.event = new XFAObjectArray();\\n    this.setProperty = new XFAObjectArray();\\n  }\\n\\n  [$isBindable]() {\\n    return true;\\n  }\\n\\n  [$setValue](value) {\\n    _setValue(this, value);\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    setTabIndex(this);\\n\\n    if (!this.ui) {\\n      \u002F\u002F It's allowed to not have an ui, specs say:\\n      \u002F\u002F   If the UI element contains no children or is not present,\\n      \u002F\u002F   the application chooses a default user interface for the\\n      \u002F\u002F   container, based on the type of the container's content.\\n\\n      this.ui = new Ui({});\\n      this.ui[$globalData] = this[$globalData];\\n      this[$appendChild](this.ui);\\n      let node;\\n\\n      \u002F\u002F The items element can have 2 element max and\\n      \u002F\u002F according to the items specs it's likely a good\\n      \u002F\u002F way to guess the correct ui type.\\n      switch (this.items.children.length) {\\n        case 0:\\n          node = new TextEdit({});\\n          this.ui.textEdit = node;\\n          break;\\n        case 1:\\n          node = new CheckButton({});\\n          this.ui.checkButton = node;\\n          break;\\n        case 2:\\n          node = new ChoiceList({});\\n          this.ui.choiceList = node;\\n          break;\\n      }\\n      this.ui[$appendChild](node);\\n    }\\n\\n    if (\\n      !this.ui ||\\n      this.presence === \\\"hidden\\\" ||\\n      this.presence === \\\"inactive\\\" ||\\n      this.h === 0 ||\\n      this.w === 0\\n    ) {\\n      return HTMLResult.EMPTY;\\n    }\\n\\n    if (this.caption) {\\n      \u002F\u002F Maybe we already tried to layout this field with\\n      \u002F\u002F another availableSpace, so to avoid to use the cached\\n      \u002F\u002F value just delete it.\\n      delete this.caption[$extra];\\n    }\\n\\n    this[$pushPara]();\\n\\n    const caption = this.caption\\n      ? this.caption[$toHTML](availableSpace).html\\n      : null;\\n    const savedW = this.w;\\n    const savedH = this.h;\\n    let marginH = 0;\\n    let marginV = 0;\\n    if (this.margin) {\\n      marginH = this.margin.leftInset + this.margin.rightInset;\\n      marginV = this.margin.topInset + this.margin.bottomInset;\\n    }\\n\\n    let borderDims = null;\\n    if (this.w === \\\"\\\" || this.h === \\\"\\\") {\\n      let width = null;\\n      let height = null;\\n\\n      let uiW = 0;\\n      let uiH = 0;\\n      if (this.ui.checkButton) {\\n        uiW = uiH = this.ui.checkButton.size;\\n      } else {\\n        const { w, h } = layoutNode(this, availableSpace);\\n        if (w !== null) {\\n          uiW = w;\\n          uiH = h;\\n        } else {\\n          uiH = getMetrics(this.font, \u002F* real = *\u002F true).lineNoGap;\\n        }\\n      }\\n\\n      borderDims = getBorderDims(this.ui[$getExtra]());\\n      uiW += borderDims.w;\\n      uiH += borderDims.h;\\n\\n      if (this.caption) {\\n        const { w, h, isBroken } = this.caption[$getExtra](availableSpace);\\n        \u002F\u002F See comment in Draw::[$toHTML] to have an explanation\\n        \u002F\u002F about this line.\\n        if (isBroken && this[$getSubformParent]()[$isThereMoreWidth]()) {\\n          this[$popPara]();\\n          return HTMLResult.FAILURE;\\n        }\\n\\n        width = w;\\n        height = h;\\n\\n        switch (this.caption.placement) {\\n          case \\\"left\\\":\\n          case \\\"right\\\":\\n          case \\\"inline\\\":\\n            width += uiW;\\n            break;\\n          case \\\"top\\\":\\n          case \\\"bottom\\\":\\n            height += uiH;\\n            break;\\n        }\\n      } else {\\n        width = uiW;\\n        height = uiH;\\n      }\\n\\n      if (width && this.w === \\\"\\\") {\\n        width += marginH;\\n        this.w = Math.min(\\n          this.maxW \u003C= 0 ? Infinity : this.maxW,\\n          this.minW + 1 \u003C width ? width : this.minW\\n        );\\n      }\\n\\n      if (height && this.h === \\\"\\\") {\\n        height += marginV;\\n        this.h = Math.min(\\n          this.maxH \u003C= 0 ? Infinity : this.maxH,\\n          this.minH + 1 \u003C height ? height : this.minH\\n        );\\n      }\\n    }\\n\\n    this[$popPara]();\\n\\n    fixDimensions(this);\\n\\n    setFirstUnsplittable(this);\\n    if (!checkDimensions(this, availableSpace)) {\\n      this.w = savedW;\\n      this.h = savedH;\\n      this[$popPara]();\\n      return HTMLResult.FAILURE;\\n    }\\n    unsetFirstUnsplittable(this);\\n\\n    const style = toStyle(\\n      this,\\n      \\\"font\\\",\\n      \\\"dimensions\\\",\\n      \\\"position\\\",\\n      \\\"rotate\\\",\\n      \\\"anchorType\\\",\\n      \\\"presence\\\",\\n      \\\"margin\\\",\\n      \\\"hAlign\\\"\\n    );\\n\\n    setMinMaxDimensions(this, style);\\n\\n    const classNames = [\\\"xfaField\\\"];\\n    \u002F\u002F If no font, font properties are inherited.\\n    if (this.font) {\\n      classNames.push(\\\"xfaFont\\\");\\n    }\\n\\n    if (isPrintOnly(this)) {\\n      classNames.push(\\\"xfaPrintOnly\\\");\\n    }\\n\\n    const attributes = {\\n      style,\\n      id: this[$uid],\\n      class: classNames,\\n    };\\n\\n    if (style.margin) {\\n      style.padding = style.margin;\\n      delete style.margin;\\n    }\\n\\n    setAccess(this, classNames);\\n\\n    if (this.name) {\\n      attributes.xfaName = this.name;\\n    }\\n\\n    const children = [];\\n    const html = {\\n      name: \\\"div\\\",\\n      attributes,\\n      children,\\n    };\\n\\n    applyAssist(this, attributes);\\n\\n    const borderStyle = this.border ? this.border[$toStyle]() : null;\\n    const bbox = computeBbox(this, html, availableSpace);\\n    const ui = this.ui[$toHTML]().html;\\n    if (!ui) {\\n      Object.assign(style, borderStyle);\\n      return HTMLResult.success(createWrapper(this, html), bbox);\\n    }\\n\\n    if (this[$tabIndex]) {\\n      if (ui.children?.[0]) {\\n        ui.children[0].attributes.tabindex = this[$tabIndex];\\n      } else {\\n        ui.attributes.tabindex = this[$tabIndex];\\n      }\\n    }\\n\\n    ui.attributes.style ||= Object.create(null);\\n\\n    let aElement = null;\\n\\n    if (this.ui.button) {\\n      if (ui.children.length === 1) {\\n        [aElement] = ui.children.splice(0, 1);\\n      }\\n      Object.assign(ui.attributes.style, borderStyle);\\n    } else {\\n      Object.assign(style, borderStyle);\\n    }\\n\\n    children.push(ui);\\n\\n    if (this.value) {\\n      if (this.ui.imageEdit) {\\n        ui.children.push(this.value[$toHTML]().html);\\n      } else if (!this.ui.button) {\\n        let value = \\\"\\\";\\n        if (this.value.exData) {\\n          value = this.value.exData[$text]();\\n        } else if (this.value.text) {\\n          value = this.value.text[$getExtra]();\\n        } else {\\n          const htmlValue = this.value[$toHTML]().html;\\n          if (htmlValue !== null) {\\n            value = htmlValue.children[0].value;\\n          }\\n        }\\n        if (this.ui.textEdit && this.value.text?.maxChars) {\\n          ui.children[0].attributes.maxLength = this.value.text.maxChars;\\n        }\\n\\n        if (value) {\\n          if (this.ui.numericEdit) {\\n            value = parseFloat(value);\\n            value = isNaN(value) ? \\\"\\\" : value.toString();\\n          }\\n\\n          if (ui.children[0].name === \\\"textarea\\\") {\\n            ui.children[0].attributes.textContent = value;\\n          } else {\\n            ui.children[0].attributes.value = value;\\n          }\\n        }\\n      }\\n    }\\n\\n    if (!this.ui.imageEdit && ui.children?.[0] && this.h) {\\n      borderDims = borderDims || getBorderDims(this.ui[$getExtra]());\\n\\n      let captionHeight = 0;\\n      if (this.caption && [\\\"top\\\", \\\"bottom\\\"].includes(this.caption.placement)) {\\n        captionHeight = this.caption.reserve;\\n        if (captionHeight \u003C= 0) {\\n          captionHeight = this.caption[$getExtra](availableSpace).h;\\n        }\\n        const inputHeight = this.h - captionHeight - marginV - borderDims.h;\\n        ui.children[0].attributes.style.height = measureToString(inputHeight);\\n      } else {\\n        ui.children[0].attributes.style.height = \\\"100%\\\";\\n      }\\n    }\\n\\n    if (aElement) {\\n      ui.children.push(aElement);\\n    }\\n\\n    if (!caption) {\\n      if (ui.attributes.class) {\\n        \u002F\u002F Even if no caption this class will help to center the ui.\\n        ui.attributes.class.push(\\\"xfaLeft\\\");\\n      }\\n      this.w = savedW;\\n      this.h = savedH;\\n\\n      return HTMLResult.success(createWrapper(this, html), bbox);\\n    }\\n\\n    if (this.ui.button) {\\n      if (style.padding) {\\n        delete style.padding;\\n      }\\n      if (caption.name === \\\"div\\\") {\\n        caption.name = \\\"span\\\";\\n      }\\n      ui.children.push(caption);\\n      return HTMLResult.success(html, bbox);\\n    } else if (this.ui.checkButton) {\\n      caption.attributes.class[0] = \\\"xfaCaptionForCheckButton\\\";\\n    }\\n\\n    ui.attributes.class ||= [];\\n\\n    ui.children.splice(0, 0, caption);\\n\\n    switch (this.caption.placement) {\\n      case \\\"left\\\":\\n        ui.attributes.class.push(\\\"xfaLeft\\\");\\n        break;\\n      case \\\"right\\\":\\n        ui.attributes.class.push(\\\"xfaRight\\\");\\n        break;\\n      case \\\"top\\\":\\n        ui.attributes.class.push(\\\"xfaTop\\\");\\n        break;\\n      case \\\"bottom\\\":\\n        ui.attributes.class.push(\\\"xfaBottom\\\");\\n        break;\\n      case \\\"inline\\\":\\n        \u002F\u002F TODO;\\n        ui.attributes.class.push(\\\"xfaLeft\\\");\\n        break;\\n    }\\n\\n    this.w = savedW;\\n    this.h = savedH;\\n    return HTMLResult.success(createWrapper(this, html), bbox);\\n  }\\n}\\n\\nclass Fill extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"fill\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.presence = getStringOption(attributes.presence, [\\n      \\\"visible\\\",\\n      \\\"hidden\\\",\\n      \\\"inactive\\\",\\n      \\\"invisible\\\",\\n    ]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.color = null;\\n    this.extras = null;\\n\\n    \u002F\u002F One-of properties or none\\n    this.linear = null;\\n    this.pattern = null;\\n    this.radial = null;\\n    this.solid = null;\\n    this.stipple = null;\\n  }\\n\\n  [$toStyle]() {\\n    const parent = this[$getParent]();\\n    const grandpa = parent[$getParent]();\\n    const ggrandpa = grandpa[$getParent]();\\n    const style = Object.create(null);\\n\\n    \u002F\u002F Use for color, i.e. #...\\n    let propName = \\\"color\\\";\\n\\n    \u002F\u002F Use for non-color, i.e. gradient, radial-gradient...\\n    let altPropName = propName;\\n\\n    if (parent instanceof Border) {\\n      propName = \\\"background-color\\\";\\n      altPropName = \\\"background\\\";\\n      if (ggrandpa instanceof Ui) {\\n        \u002F\u002F The default fill color is white.\\n        style.backgroundColor = \\\"white\\\";\\n      }\\n    }\\n    if (parent instanceof Rectangle || parent instanceof Arc) {\\n      propName = altPropName = \\\"fill\\\";\\n      style.fill = \\\"white\\\";\\n    }\\n\\n    for (const name of Object.getOwnPropertyNames(this)) {\\n      if (name === \\\"extras\\\" || name === \\\"color\\\") {\\n        continue;\\n      }\\n      const obj = this[name];\\n      if (!(obj instanceof XFAObject)) {\\n        continue;\\n      }\\n\\n      const color = obj[$toStyle](this.color);\\n      if (color) {\\n        style[color.startsWith(\\\"#\\\") ? propName : altPropName] = color;\\n      }\\n      return style;\\n    }\\n\\n    if (this.color?.value) {\\n      const color = this.color[$toStyle]();\\n      style[color.startsWith(\\\"#\\\") ? propName : altPropName] = color;\\n    }\\n\\n    return style;\\n  }\\n}\\n\\nclass Filter extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"filter\\\", \u002F* hasChildren = *\u002F true);\\n    this.addRevocationInfo = getStringOption(attributes.addRevocationInfo, [\\n      \\\"\\\",\\n      \\\"required\\\",\\n      \\\"optional\\\",\\n      \\\"none\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.version = getInteger({\\n      data: this.version,\\n      defaultValue: 5,\\n      validate: x => x >= 1 && x \u003C= 5,\\n    });\\n    this.appearanceFilter = null;\\n    this.certificates = null;\\n    this.digestMethods = null;\\n    this.encodings = null;\\n    this.encryptionMethods = null;\\n    this.handler = null;\\n    this.lockDocument = null;\\n    this.mdp = null;\\n    this.reasons = null;\\n    this.timeStamp = null;\\n  }\\n}\\n\\nclass Float extends ContentObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"float\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n\\n  [$finalize]() {\\n    const number = parseFloat(this[$content].trim());\\n    this[$content] = isNaN(number) ? null : number;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    return valueToHtml(\\n      this[$content] !== null ? this[$content].toString() : \\\"\\\"\\n    );\\n  }\\n}\\n\\nclass Font extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"font\\\", \u002F* hasChildren = *\u002F true);\\n    this.baselineShift = getMeasurement(attributes.baselineShift);\\n    this.fontHorizontalScale = getFloat({\\n      data: attributes.fontHorizontalScale,\\n      defaultValue: 100,\\n      validate: x => x >= 0,\\n    });\\n    this.fontVerticalScale = getFloat({\\n      data: attributes.fontVerticalScale,\\n      defaultValue: 100,\\n      validate: x => x >= 0,\\n    });\\n    this.id = attributes.id || \\\"\\\";\\n    this.kerningMode = getStringOption(attributes.kerningMode, [\\n      \\\"none\\\",\\n      \\\"pair\\\",\\n    ]);\\n    this.letterSpacing = getMeasurement(attributes.letterSpacing, \\\"0\\\");\\n    this.lineThrough = getInteger({\\n      data: attributes.lineThrough,\\n      defaultValue: 0,\\n      validate: x => x === 1 || x === 2,\\n    });\\n    this.lineThroughPeriod = getStringOption(attributes.lineThroughPeriod, [\\n      \\\"all\\\",\\n      \\\"word\\\",\\n    ]);\\n    this.overline = getInteger({\\n      data: attributes.overline,\\n      defaultValue: 0,\\n      validate: x => x === 1 || x === 2,\\n    });\\n    this.overlinePeriod = getStringOption(attributes.overlinePeriod, [\\n      \\\"all\\\",\\n      \\\"word\\\",\\n    ]);\\n    this.posture = getStringOption(attributes.posture, [\\\"normal\\\", \\\"italic\\\"]);\\n    this.size = getMeasurement(attributes.size, \\\"10pt\\\");\\n    this.typeface = attributes.typeface || \\\"Courier\\\";\\n    this.underline = getInteger({\\n      data: attributes.underline,\\n      defaultValue: 0,\\n      validate: x => x === 1 || x === 2,\\n    });\\n    this.underlinePeriod = getStringOption(attributes.underlinePeriod, [\\n      \\\"all\\\",\\n      \\\"word\\\",\\n    ]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.weight = getStringOption(attributes.weight, [\\\"normal\\\", \\\"bold\\\"]);\\n    this.extras = null;\\n    this.fill = null;\\n  }\\n\\n  [$clean](builder) {\\n    super[$clean](builder);\\n    this[$globalData].usedTypefaces.add(this.typeface);\\n  }\\n\\n  [$toStyle]() {\\n    const style = toStyle(this, \\\"fill\\\");\\n    const color = style.color;\\n    if (color) {\\n      if (color === \\\"#000000\\\") {\\n        \u002F\u002F Default font color.\\n        delete style.color;\\n      } else if (!color.startsWith(\\\"#\\\")) {\\n        \u002F\u002F We've a gradient which is not possible for a font color\\n        \u002F\u002F so use a workaround.\\n        style.background = color;\\n        style.backgroundClip = \\\"text\\\";\\n        style.color = \\\"transparent\\\";\\n      }\\n    }\\n\\n    if (this.baselineShift) {\\n      style.verticalAlign = measureToString(this.baselineShift);\\n    }\\n\\n    \u002F\u002F TODO: fontHorizontalScale\\n    \u002F\u002F TODO: fontVerticalScale\\n\\n    style.fontKerning = this.kerningMode === \\\"none\\\" ? \\\"none\\\" : \\\"normal\\\";\\n    style.letterSpacing = measureToString(this.letterSpacing);\\n\\n    if (this.lineThrough !== 0) {\\n      style.textDecoration = \\\"line-through\\\";\\n      if (this.lineThrough === 2) {\\n        style.textDecorationStyle = \\\"double\\\";\\n      }\\n    }\\n\\n    \u002F\u002F TODO: lineThroughPeriod\\n\\n    if (this.overline !== 0) {\\n      style.textDecoration = \\\"overline\\\";\\n      if (this.overline === 2) {\\n        style.textDecorationStyle = \\\"double\\\";\\n      }\\n    }\\n\\n    \u002F\u002F TODO: overlinePeriod\\n\\n    style.fontStyle = this.posture;\\n    style.fontSize = measureToString(0.99 * this.size);\\n\\n    setFontFamily(this, this, this[$globalData].fontFinder, style);\\n\\n    if (this.underline !== 0) {\\n      style.textDecoration = \\\"underline\\\";\\n      if (this.underline === 2) {\\n        style.textDecorationStyle = \\\"double\\\";\\n      }\\n    }\\n\\n    \u002F\u002F TODO: underlinePeriod\\n\\n    style.fontWeight = this.weight;\\n\\n    return style;\\n  }\\n}\\n\\nclass Format extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"format\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n    this.picture = null;\\n  }\\n}\\n\\nclass Handler extends StringObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"handler\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\\"optional\\\", \\\"required\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Hyphenation extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"hyphenation\\\");\\n    this.excludeAllCaps = getInteger({\\n      data: attributes.excludeAllCaps,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.excludeInitialCap = getInteger({\\n      data: attributes.excludeInitialCap,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.hyphenate = getInteger({\\n      data: attributes.hyphenate,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.id = attributes.id || \\\"\\\";\\n    this.pushCharacterCount = getInteger({\\n      data: attributes.pushCharacterCount,\\n      defaultValue: 3,\\n      validate: x => x >= 0,\\n    });\\n    this.remainCharacterCount = getInteger({\\n      data: attributes.remainCharacterCount,\\n      defaultValue: 3,\\n      validate: x => x >= 0,\\n    });\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.wordCharacterCount = getInteger({\\n      data: attributes.wordCharacterCount,\\n      defaultValue: 7,\\n      validate: x => x >= 0,\\n    });\\n  }\\n}\\n\\nclass Image extends StringObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"image\\\");\\n    this.aspect = getStringOption(attributes.aspect, [\\n      \\\"fit\\\",\\n      \\\"actual\\\",\\n      \\\"height\\\",\\n      \\\"none\\\",\\n      \\\"width\\\",\\n    ]);\\n    this.contentType = attributes.contentType || \\\"\\\";\\n    this.href = attributes.href || \\\"\\\";\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.transferEncoding = getStringOption(attributes.transferEncoding, [\\n      \\\"base64\\\",\\n      \\\"none\\\",\\n      \\\"package\\\",\\n    ]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n\\n  [$toHTML]() {\\n    if (this.contentType && !MIMES.has(this.contentType.toLowerCase())) {\\n      return HTMLResult.EMPTY;\\n    }\\n\\n    let buffer = this[$globalData].images?.get(this.href);\\n    if (!buffer && (this.href || !this[$content])) {\\n      \u002F\u002F In general, we don't get remote data and use what we have\\n      \u002F\u002F in the pdf itself, so no picture for non null href.\\n      return HTMLResult.EMPTY;\\n    }\\n\\n    if (!buffer && this.transferEncoding === \\\"base64\\\") {\\n      buffer = fromBase64Util(this[$content]);\\n    }\\n\\n    if (!buffer) {\\n      return HTMLResult.EMPTY;\\n    }\\n\\n    if (!this.contentType) {\\n      for (const [header, type] of IMAGES_HEADERS) {\\n        if (\\n          buffer.length > header.length &&\\n          header.every((x, i) => x === buffer[i])\\n        ) {\\n          this.contentType = type;\\n          break;\\n        }\\n      }\\n      if (!this.contentType) {\\n        return HTMLResult.EMPTY;\\n      }\\n    }\\n\\n    \u002F\u002F TODO: Firefox doesn't support natively tiff (and tif) format.\\n    const blob = new Blob([buffer], { type: this.contentType });\\n    let style;\\n    switch (this.aspect) {\\n      case \\\"fit\\\":\\n      case \\\"actual\\\":\\n        \u002F\u002F TODO: check what to do with actual.\\n        \u002F\u002F Normally we should return {auto, auto} for it but\\n        \u002F\u002F it implies some wrong rendering (see xfa_bug1716816.pdf).\\n        break;\\n      case \\\"height\\\":\\n        style = {\\n          height: \\\"100%\\\",\\n          objectFit: \\\"fill\\\",\\n        };\\n        break;\\n      case \\\"none\\\":\\n        style = {\\n          width: \\\"100%\\\",\\n          height: \\\"100%\\\",\\n          objectFit: \\\"fill\\\",\\n        };\\n        break;\\n      case \\\"width\\\":\\n        style = {\\n          width: \\\"100%\\\",\\n          objectFit: \\\"fill\\\",\\n        };\\n        break;\\n    }\\n    const parent = this[$getParent]();\\n    return HTMLResult.success({\\n      name: \\\"img\\\",\\n      attributes: {\\n        class: [\\\"xfaImage\\\"],\\n        style,\\n        src: URL.createObjectURL(blob),\\n        alt: parent ? ariaLabel(parent[$getParent]()) : null,\\n      },\\n    });\\n  }\\n}\\n\\nclass ImageEdit extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"imageEdit\\\", \u002F* hasChildren = *\u002F true);\\n    this.data = getStringOption(attributes.data, [\\\"link\\\", \\\"embed\\\"]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.border = null;\\n    this.extras = null;\\n    this.margin = null;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    if (this.data === \\\"embed\\\") {\\n      return HTMLResult.success({\\n        name: \\\"div\\\",\\n        children: [],\\n        attributes: {},\\n      });\\n    }\\n\\n    return HTMLResult.EMPTY;\\n  }\\n}\\n\\nclass Integer extends ContentObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"integer\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n\\n  [$finalize]() {\\n    const number = parseInt(this[$content].trim(), 10);\\n    this[$content] = isNaN(number) ? null : number;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    return valueToHtml(\\n      this[$content] !== null ? this[$content].toString() : \\\"\\\"\\n    );\\n  }\\n}\\n\\nclass Issuers extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"issuers\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\\"optional\\\", \\\"required\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.certificate = new XFAObjectArray();\\n  }\\n}\\n\\nclass Items extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"items\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.presence = getStringOption(attributes.presence, [\\n      \\\"visible\\\",\\n      \\\"hidden\\\",\\n      \\\"inactive\\\",\\n      \\\"invisible\\\",\\n    ]);\\n    this.ref = attributes.ref || \\\"\\\";\\n    this.save = getInteger({\\n      data: attributes.save,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.boolean = new XFAObjectArray();\\n    this.date = new XFAObjectArray();\\n    this.dateTime = new XFAObjectArray();\\n    this.decimal = new XFAObjectArray();\\n    this.exData = new XFAObjectArray();\\n    this.float = new XFAObjectArray();\\n    this.image = new XFAObjectArray();\\n    this.integer = new XFAObjectArray();\\n    this.text = new XFAObjectArray();\\n    this.time = new XFAObjectArray();\\n  }\\n\\n  [$toHTML]() {\\n    const output = [];\\n    for (const child of this[$getChildren]()) {\\n      output.push(child[$text]());\\n    }\\n    return HTMLResult.success(output);\\n  }\\n}\\n\\nclass Keep extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"keep\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    const options = [\\\"none\\\", \\\"contentArea\\\", \\\"pageArea\\\"];\\n    this.intact = getStringOption(attributes.intact, options);\\n    this.next = getStringOption(attributes.next, options);\\n    this.previous = getStringOption(attributes.previous, options);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n  }\\n}\\n\\nclass KeyUsage extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"keyUsage\\\");\\n    const options = [\\\"\\\", \\\"yes\\\", \\\"no\\\"];\\n    this.crlSign = getStringOption(attributes.crlSign, options);\\n    this.dataEncipherment = getStringOption(\\n      attributes.dataEncipherment,\\n      options\\n    );\\n    this.decipherOnly = getStringOption(attributes.decipherOnly, options);\\n    this.digitalSignature = getStringOption(\\n      attributes.digitalSignature,\\n      options\\n    );\\n    this.encipherOnly = getStringOption(attributes.encipherOnly, options);\\n    this.id = attributes.id || \\\"\\\";\\n    this.keyAgreement = getStringOption(attributes.keyAgreement, options);\\n    this.keyCertSign = getStringOption(attributes.keyCertSign, options);\\n    this.keyEncipherment = getStringOption(attributes.keyEncipherment, options);\\n    this.nonRepudiation = getStringOption(attributes.nonRepudiation, options);\\n    this.type = getStringOption(attributes.type, [\\\"optional\\\", \\\"required\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Line extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"line\\\", \u002F* hasChildren = *\u002F true);\\n    this.hand = getStringOption(attributes.hand, [\\\"even\\\", \\\"left\\\", \\\"right\\\"]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.slope = getStringOption(attributes.slope, [\\\"\\\\\\\\\\\", \\\"\u002F\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.edge = null;\\n  }\\n\\n  [$toHTML]() {\\n    const parent = this[$getParent]()[$getParent]();\\n    const edge = this.edge || new Edge({});\\n    const edgeStyle = edge[$toStyle]();\\n    const style = Object.create(null);\\n    const thickness = edge.presence === \\\"visible\\\" ? edge.thickness : 0;\\n    style.strokeWidth = measureToString(thickness);\\n    style.stroke = edgeStyle.color;\\n    let x1, y1, x2, y2;\\n    let width = \\\"100%\\\";\\n    let height = \\\"100%\\\";\\n\\n    if (parent.w \u003C= thickness) {\\n      [x1, y1, x2, y2] = [\\\"50%\\\", 0, \\\"50%\\\", \\\"100%\\\"];\\n      width = style.strokeWidth;\\n    } else if (parent.h \u003C= thickness) {\\n      [x1, y1, x2, y2] = [0, \\\"50%\\\", \\\"100%\\\", \\\"50%\\\"];\\n      height = style.strokeWidth;\\n    } else if (this.slope === \\\"\\\\\\\\\\\") {\\n      [x1, y1, x2, y2] = [0, 0, \\\"100%\\\", \\\"100%\\\"];\\n    } else {\\n      [x1, y1, x2, y2] = [0, \\\"100%\\\", \\\"100%\\\", 0];\\n    }\\n\\n    const line = {\\n      name: \\\"line\\\",\\n      attributes: {\\n        xmlns: SVG_NS,\\n        x1,\\n        y1,\\n        x2,\\n        y2,\\n        style,\\n      },\\n    };\\n\\n    const svg = {\\n      name: \\\"svg\\\",\\n      children: [line],\\n      attributes: {\\n        xmlns: SVG_NS,\\n        width,\\n        height,\\n        style: {\\n          overflow: \\\"visible\\\",\\n        },\\n      },\\n    };\\n\\n    if (hasMargin(parent)) {\\n      return HTMLResult.success({\\n        name: \\\"div\\\",\\n        attributes: {\\n          style: {\\n            display: \\\"inline\\\",\\n            width: \\\"100%\\\",\\n            height: \\\"100%\\\",\\n          },\\n        },\\n        children: [svg],\\n      });\\n    }\\n\\n    svg.attributes.style.position = \\\"absolute\\\";\\n    return HTMLResult.success(svg);\\n  }\\n}\\n\\nclass Linear extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"linear\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\n      \\\"toRight\\\",\\n      \\\"toBottom\\\",\\n      \\\"toLeft\\\",\\n      \\\"toTop\\\",\\n    ]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.color = null;\\n    this.extras = null;\\n  }\\n\\n  [$toStyle](startColor) {\\n    startColor = startColor ? startColor[$toStyle]() : \\\"#FFFFFF\\\";\\n    const transf = this.type.replace(\u002F([RBLT])\u002F, \\\" $1\\\").toLowerCase();\\n    const endColor = this.color ? this.color[$toStyle]() : \\\"#000000\\\";\\n    return `linear-gradient(${transf}, ${startColor}, ${endColor})`;\\n  }\\n}\\n\\nclass LockDocument extends ContentObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"lockDocument\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\\"optional\\\", \\\"required\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n\\n  [$finalize]() {\\n    this[$content] = getStringOption(this[$content], [\\\"auto\\\", \\\"0\\\", \\\"1\\\"]);\\n  }\\n}\\n\\nclass Manifest extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"manifest\\\", \u002F* hasChildren = *\u002F true);\\n    this.action = getStringOption(attributes.action, [\\n      \\\"include\\\",\\n      \\\"all\\\",\\n      \\\"exclude\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n    this.ref = new XFAObjectArray();\\n  }\\n}\\n\\nclass Margin extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"margin\\\", \u002F* hasChildren = *\u002F true);\\n    this.bottomInset = getMeasurement(attributes.bottomInset, \\\"0\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.leftInset = getMeasurement(attributes.leftInset, \\\"0\\\");\\n    this.rightInset = getMeasurement(attributes.rightInset, \\\"0\\\");\\n    this.topInset = getMeasurement(attributes.topInset, \\\"0\\\");\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n  }\\n\\n  [$toStyle]() {\\n    return {\\n      margin:\\n        measureToString(this.topInset) +\\n        \\\" \\\" +\\n        measureToString(this.rightInset) +\\n        \\\" \\\" +\\n        measureToString(this.bottomInset) +\\n        \\\" \\\" +\\n        measureToString(this.leftInset),\\n    };\\n  }\\n}\\n\\nclass Mdp extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"mdp\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.permissions = getInteger({\\n      data: attributes.permissions,\\n      defaultValue: 2,\\n      validate: x => x === 1 || x === 3,\\n    });\\n    this.signatureType = getStringOption(attributes.signatureType, [\\n      \\\"filler\\\",\\n      \\\"author\\\",\\n    ]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Medium extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"medium\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.imagingBBox = getBBox(attributes.imagingBBox);\\n    this.long = getMeasurement(attributes.long);\\n    this.orientation = getStringOption(attributes.orientation, [\\n      \\\"portrait\\\",\\n      \\\"landscape\\\",\\n    ]);\\n    this.short = getMeasurement(attributes.short);\\n    this.stock = attributes.stock || \\\"\\\";\\n    this.trayIn = getStringOption(attributes.trayIn, [\\n      \\\"auto\\\",\\n      \\\"delegate\\\",\\n      \\\"pageFront\\\",\\n    ]);\\n    this.trayOut = getStringOption(attributes.trayOut, [\\\"auto\\\", \\\"delegate\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Message extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"message\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.text = new XFAObjectArray();\\n  }\\n}\\n\\nclass NumericEdit extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"numericEdit\\\", \u002F* hasChildren = *\u002F true);\\n    this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\\n      \\\"auto\\\",\\n      \\\"off\\\",\\n      \\\"on\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.border = null;\\n    this.comb = null;\\n    this.extras = null;\\n    this.margin = null;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    \u002F\u002F TODO: incomplete.\\n    const style = toStyle(this, \\\"border\\\", \\\"font\\\", \\\"margin\\\");\\n    const field = this[$getParent]()[$getParent]();\\n    const html = {\\n      name: \\\"input\\\",\\n      attributes: {\\n        type: \\\"text\\\",\\n        fieldId: field[$uid],\\n        dataId: field[$data]?.[$uid] || field[$uid],\\n        class: [\\\"xfaTextfield\\\"],\\n        style,\\n        \\\"aria-label\\\": ariaLabel(field),\\n        \\\"aria-required\\\": false,\\n      },\\n    };\\n\\n    if (isRequired(field)) {\\n      html.attributes[\\\"aria-required\\\"] = true;\\n      html.attributes.required = true;\\n    }\\n\\n    return HTMLResult.success({\\n      name: \\\"label\\\",\\n      attributes: {\\n        class: [\\\"xfaLabel\\\"],\\n      },\\n      children: [html],\\n    });\\n  }\\n}\\n\\nclass Occur extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"occur\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.initial =\\n      attributes.initial !== \\\"\\\"\\n        ? getInteger({\\n            data: attributes.initial,\\n            defaultValue: \\\"\\\",\\n            validate: x => true,\\n          })\\n        : \\\"\\\";\\n    this.max =\\n      attributes.max !== \\\"\\\"\\n        ? getInteger({\\n            data: attributes.max,\\n            defaultValue: 1,\\n            validate: x => true,\\n          })\\n        : \\\"\\\";\\n    this.min =\\n      attributes.min !== \\\"\\\"\\n        ? getInteger({\\n            data: attributes.min,\\n            defaultValue: 1,\\n            validate: x => true,\\n          })\\n        : \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n  }\\n\\n  [$clean]() {\\n    const parent = this[$getParent]();\\n    const originalMin = this.min;\\n\\n    if (this.min === \\\"\\\") {\\n      this.min =\\n        parent instanceof PageArea || parent instanceof PageSet ? 0 : 1;\\n    }\\n    if (this.max === \\\"\\\") {\\n      if (originalMin === \\\"\\\") {\\n        this.max =\\n          parent instanceof PageArea || parent instanceof PageSet ? -1 : 1;\\n      } else {\\n        this.max = this.min;\\n      }\\n    }\\n\\n    if (this.max !== -1 && this.max \u003C this.min) {\\n      this.max = this.min;\\n    }\\n\\n    if (this.initial === \\\"\\\") {\\n      this.initial = parent instanceof Template ? 1 : this.min;\\n    }\\n  }\\n}\\n\\nclass Oid extends StringObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"oid\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Oids extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"oids\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\\"optional\\\", \\\"required\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.oid = new XFAObjectArray();\\n  }\\n}\\n\\nclass Overflow extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"overflow\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.leader = attributes.leader || \\\"\\\";\\n    this.target = attributes.target || \\\"\\\";\\n    this.trailer = attributes.trailer || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n\\n  [$getExtra]() {\\n    if (!this[$extra]) {\\n      const parent = this[$getParent]();\\n      const root = this[$getTemplateRoot]();\\n      const target = root[$searchNode](this.target, parent);\\n      const leader = root[$searchNode](this.leader, parent);\\n      const trailer = root[$searchNode](this.trailer, parent);\\n      this[$extra] = {\\n        target: target?.[0] || null,\\n        leader: leader?.[0] || null,\\n        trailer: trailer?.[0] || null,\\n        addLeader: false,\\n        addTrailer: false,\\n      };\\n    }\\n    return this[$extra];\\n  }\\n}\\n\\nclass PageArea extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"pageArea\\\", \u002F* hasChildren = *\u002F true);\\n    this.blankOrNotBlank = getStringOption(attributes.blankOrNotBlank, [\\n      \\\"any\\\",\\n      \\\"blank\\\",\\n      \\\"notBlank\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.initialNumber = getInteger({\\n      data: attributes.initialNumber,\\n      defaultValue: 1,\\n      validate: x => true,\\n    });\\n    this.name = attributes.name || \\\"\\\";\\n    this.numbered = getInteger({\\n      data: attributes.numbered,\\n      defaultValue: 1,\\n      validate: x => true,\\n    });\\n    this.oddOrEven = getStringOption(attributes.oddOrEven, [\\n      \\\"any\\\",\\n      \\\"even\\\",\\n      \\\"odd\\\",\\n    ]);\\n    this.pagePosition = getStringOption(attributes.pagePosition, [\\n      \\\"any\\\",\\n      \\\"first\\\",\\n      \\\"last\\\",\\n      \\\"only\\\",\\n      \\\"rest\\\",\\n    ]);\\n    this.relevant = getRelevant(attributes.relevant);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.desc = null;\\n    this.extras = null;\\n    this.medium = null;\\n    this.occur = null;\\n    this.area = new XFAObjectArray();\\n    this.contentArea = new XFAObjectArray();\\n    this.draw = new XFAObjectArray();\\n    this.exclGroup = new XFAObjectArray();\\n    this.field = new XFAObjectArray();\\n    this.subform = new XFAObjectArray();\\n  }\\n\\n  [$isUsable]() {\\n    if (!this[$extra]) {\\n      this[$extra] = {\\n        numberOfUse: 0,\\n      };\\n      return true;\\n    }\\n    return (\\n      !this.occur ||\\n      this.occur.max === -1 ||\\n      this[$extra].numberOfUse \u003C this.occur.max\\n    );\\n  }\\n\\n  [$cleanPage]() {\\n    delete this[$extra];\\n  }\\n\\n  [$getNextPage]() {\\n    this[$extra] ||= {\\n      numberOfUse: 0,\\n    };\\n\\n    const parent = this[$getParent]();\\n    if (parent.relation === \\\"orderedOccurrence\\\") {\\n      if (this[$isUsable]()) {\\n        this[$extra].numberOfUse += 1;\\n        return this;\\n      }\\n    }\\n\\n    return parent[$getNextPage]();\\n  }\\n\\n  [$getAvailableSpace]() {\\n    return this[$extra].space || { width: 0, height: 0 };\\n  }\\n\\n  [$toHTML]() {\\n    \u002F\u002F TODO: incomplete.\\n    this[$extra] ||= {\\n      numberOfUse: 1,\\n    };\\n\\n    const children = [];\\n    this[$extra].children = children;\\n\\n    const style = Object.create(null);\\n    if (this.medium && this.medium.short && this.medium.long) {\\n      style.width = measureToString(this.medium.short);\\n      style.height = measureToString(this.medium.long);\\n      this[$extra].space = {\\n        width: this.medium.short,\\n        height: this.medium.long,\\n      };\\n      if (this.medium.orientation === \\\"landscape\\\") {\\n        const x = style.width;\\n        style.width = style.height;\\n        style.height = x;\\n        this[$extra].space = {\\n          width: this.medium.long,\\n          height: this.medium.short,\\n        };\\n      }\\n    } else {\\n      warn(\\\"XFA - No medium specified in pageArea: please file a bug.\\\");\\n    }\\n\\n    this[$childrenToHTML]({\\n      filter: new Set([\\\"area\\\", \\\"draw\\\", \\\"field\\\", \\\"subform\\\"]),\\n      include: true,\\n    });\\n\\n    \u002F\u002F contentarea must be the last container to be sure it is\\n    \u002F\u002F on top of the others.\\n    this[$childrenToHTML]({\\n      filter: new Set([\\\"contentArea\\\"]),\\n      include: true,\\n    });\\n\\n    return HTMLResult.success({\\n      name: \\\"div\\\",\\n      children,\\n      attributes: {\\n        class: [\\\"xfaPage\\\"],\\n        id: this[$uid],\\n        style,\\n        xfaName: this.name,\\n      },\\n    });\\n  }\\n}\\n\\nclass PageSet extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"pageSet\\\", \u002F* hasChildren = *\u002F true);\\n    this.duplexImposition = getStringOption(attributes.duplexImposition, [\\n      \\\"longEdge\\\",\\n      \\\"shortEdge\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.relation = getStringOption(attributes.relation, [\\n      \\\"orderedOccurrence\\\",\\n      \\\"duplexPaginated\\\",\\n      \\\"simplexPaginated\\\",\\n    ]);\\n    this.relevant = getRelevant(attributes.relevant);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n    this.occur = null;\\n    this.pageArea = new XFAObjectArray();\\n    this.pageSet = new XFAObjectArray();\\n  }\\n\\n  [$cleanPage]() {\\n    for (const page of this.pageArea.children) {\\n      page[$cleanPage]();\\n    }\\n    for (const page of this.pageSet.children) {\\n      page[$cleanPage]();\\n    }\\n  }\\n\\n  [$isUsable]() {\\n    return (\\n      !this.occur ||\\n      this.occur.max === -1 ||\\n      this[$extra].numberOfUse \u003C this.occur.max\\n    );\\n  }\\n\\n  [$getNextPage]() {\\n    this[$extra] ||= {\\n      numberOfUse: 1,\\n      pageIndex: -1,\\n      pageSetIndex: -1,\\n    };\\n\\n    if (this.relation === \\\"orderedOccurrence\\\") {\\n      if (this[$extra].pageIndex + 1 \u003C this.pageArea.children.length) {\\n        this[$extra].pageIndex += 1;\\n        const pageArea = this.pageArea.children[this[$extra].pageIndex];\\n        return pageArea[$getNextPage]();\\n      }\\n\\n      if (this[$extra].pageSetIndex + 1 \u003C this.pageSet.children.length) {\\n        this[$extra].pageSetIndex += 1;\\n        return this.pageSet.children[this[$extra].pageSetIndex][$getNextPage]();\\n      }\\n\\n      if (this[$isUsable]()) {\\n        this[$extra].numberOfUse += 1;\\n        this[$extra].pageIndex = -1;\\n        this[$extra].pageSetIndex = -1;\\n        return this[$getNextPage]();\\n      }\\n\\n      const parent = this[$getParent]();\\n      if (parent instanceof PageSet) {\\n        return parent[$getNextPage]();\\n      }\\n\\n      this[$cleanPage]();\\n      return this[$getNextPage]();\\n    }\\n    const pageNumber = this[$getTemplateRoot]()[$extra].pageNumber;\\n    const parity = pageNumber % 2 === 0 ? \\\"even\\\" : \\\"odd\\\";\\n    const position = pageNumber === 0 ? \\\"first\\\" : \\\"rest\\\";\\n\\n    let page = this.pageArea.children.find(\\n      p => p.oddOrEven === parity && p.pagePosition === position\\n    );\\n    if (page) {\\n      return page;\\n    }\\n\\n    page = this.pageArea.children.find(\\n      p => p.oddOrEven === \\\"any\\\" && p.pagePosition === position\\n    );\\n    if (page) {\\n      return page;\\n    }\\n\\n    page = this.pageArea.children.find(\\n      p => p.oddOrEven === \\\"any\\\" && p.pagePosition === \\\"any\\\"\\n    );\\n    if (page) {\\n      return page;\\n    }\\n\\n    return this.pageArea.children[0];\\n  }\\n}\\n\\nclass Para extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"para\\\", \u002F* hasChildren = *\u002F true);\\n    this.hAlign = getStringOption(attributes.hAlign, [\\n      \\\"left\\\",\\n      \\\"center\\\",\\n      \\\"justify\\\",\\n      \\\"justifyAll\\\",\\n      \\\"radix\\\",\\n      \\\"right\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.lineHeight = attributes.lineHeight\\n      ? getMeasurement(attributes.lineHeight, \\\"0pt\\\")\\n      : \\\"\\\";\\n    this.marginLeft = attributes.marginLeft\\n      ? getMeasurement(attributes.marginLeft, \\\"0pt\\\")\\n      : \\\"\\\";\\n    this.marginRight = attributes.marginRight\\n      ? getMeasurement(attributes.marginRight, \\\"0pt\\\")\\n      : \\\"\\\";\\n    this.orphans = getInteger({\\n      data: attributes.orphans,\\n      defaultValue: 0,\\n      validate: x => x >= 0,\\n    });\\n    this.preserve = attributes.preserve || \\\"\\\";\\n    this.radixOffset = attributes.radixOffset\\n      ? getMeasurement(attributes.radixOffset, \\\"0pt\\\")\\n      : \\\"\\\";\\n    this.spaceAbove = attributes.spaceAbove\\n      ? getMeasurement(attributes.spaceAbove, \\\"0pt\\\")\\n      : \\\"\\\";\\n    this.spaceBelow = attributes.spaceBelow\\n      ? getMeasurement(attributes.spaceBelow, \\\"0pt\\\")\\n      : \\\"\\\";\\n    this.tabDefault = attributes.tabDefault\\n      ? getMeasurement(this.tabDefault)\\n      : \\\"\\\";\\n    this.tabStops = (attributes.tabStops || \\\"\\\")\\n      .trim()\\n      .split(\u002F\\\\s+\u002F)\\n      .map((x, i) => (i % 2 === 1 ? getMeasurement(x) : x));\\n    this.textIndent = attributes.textIndent\\n      ? getMeasurement(attributes.textIndent, \\\"0pt\\\")\\n      : \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.vAlign = getStringOption(attributes.vAlign, [\\n      \\\"top\\\",\\n      \\\"bottom\\\",\\n      \\\"middle\\\",\\n    ]);\\n    this.widows = getInteger({\\n      data: attributes.widows,\\n      defaultValue: 0,\\n      validate: x => x >= 0,\\n    });\\n    this.hyphenation = null;\\n  }\\n\\n  [$toStyle]() {\\n    const style = toStyle(this, \\\"hAlign\\\");\\n    if (this.marginLeft !== \\\"\\\") {\\n      style.paddingLeft = measureToString(this.marginLeft);\\n    }\\n    if (this.marginRight !== \\\"\\\") {\\n      style.paddingRight = measureToString(this.marginRight);\\n    }\\n    if (this.spaceAbove !== \\\"\\\") {\\n      style.paddingTop = measureToString(this.spaceAbove);\\n    }\\n    if (this.spaceBelow !== \\\"\\\") {\\n      style.paddingBottom = measureToString(this.spaceBelow);\\n    }\\n    if (this.textIndent !== \\\"\\\") {\\n      style.textIndent = measureToString(this.textIndent);\\n      fixTextIndent(style);\\n    }\\n\\n    if (this.lineHeight > 0) {\\n      style.lineHeight = measureToString(this.lineHeight);\\n    }\\n\\n    if (this.tabDefault !== \\\"\\\") {\\n      style.tabSize = measureToString(this.tabDefault);\\n    }\\n\\n    if (this.tabStops.length > 0) {\\n      \u002F\u002F TODO\\n    }\\n\\n    if (this.hyphenatation) {\\n      Object.assign(style, this.hyphenatation[$toStyle]());\\n    }\\n\\n    return style;\\n  }\\n}\\n\\nclass PasswordEdit extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"passwordEdit\\\", \u002F* hasChildren = *\u002F true);\\n    this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\\n      \\\"auto\\\",\\n      \\\"off\\\",\\n      \\\"on\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.passwordChar = attributes.passwordChar || \\\"*\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.border = null;\\n    this.extras = null;\\n    this.margin = null;\\n  }\\n}\\n\\nclass Pattern extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"pattern\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\n      \\\"crossHatch\\\",\\n      \\\"crossDiagonal\\\",\\n      \\\"diagonalLeft\\\",\\n      \\\"diagonalRight\\\",\\n      \\\"horizontal\\\",\\n      \\\"vertical\\\",\\n    ]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.color = null;\\n    this.extras = null;\\n  }\\n\\n  [$toStyle](startColor) {\\n    startColor = startColor ? startColor[$toStyle]() : \\\"#FFFFFF\\\";\\n    const endColor = this.color ? this.color[$toStyle]() : \\\"#000000\\\";\\n    const width = 5;\\n    const cmd = \\\"repeating-linear-gradient\\\";\\n    const colors = `${startColor},${startColor} ${width}px,${endColor} ${width}px,${endColor} ${\\n      2 * width\\n    }px`;\\n    switch (this.type) {\\n      case \\\"crossHatch\\\":\\n        return `${cmd}(to top,${colors}) ${cmd}(to right,${colors})`;\\n      case \\\"crossDiagonal\\\":\\n        return `${cmd}(45deg,${colors}) ${cmd}(-45deg,${colors})`;\\n      case \\\"diagonalLeft\\\":\\n        return `${cmd}(45deg,${colors})`;\\n      case \\\"diagonalRight\\\":\\n        return `${cmd}(-45deg,${colors})`;\\n      case \\\"horizontal\\\":\\n        return `${cmd}(to top,${colors})`;\\n      case \\\"vertical\\\":\\n        return `${cmd}(to right,${colors})`;\\n    }\\n\\n    return \\\"\\\";\\n  }\\n}\\n\\nclass Picture extends StringObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"picture\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Proto extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"proto\\\", \u002F* hasChildren = *\u002F true);\\n    this.appearanceFilter = new XFAObjectArray();\\n    this.arc = new XFAObjectArray();\\n    this.area = new XFAObjectArray();\\n    this.assist = new XFAObjectArray();\\n    this.barcode = new XFAObjectArray();\\n    this.bindItems = new XFAObjectArray();\\n    this.bookend = new XFAObjectArray();\\n    this.boolean = new XFAObjectArray();\\n    this.border = new XFAObjectArray();\\n    this.break = new XFAObjectArray();\\n    this.breakAfter = new XFAObjectArray();\\n    this.breakBefore = new XFAObjectArray();\\n    this.button = new XFAObjectArray();\\n    this.calculate = new XFAObjectArray();\\n    this.caption = new XFAObjectArray();\\n    this.certificate = new XFAObjectArray();\\n    this.certificates = new XFAObjectArray();\\n    this.checkButton = new XFAObjectArray();\\n    this.choiceList = new XFAObjectArray();\\n    this.color = new XFAObjectArray();\\n    this.comb = new XFAObjectArray();\\n    this.connect = new XFAObjectArray();\\n    this.contentArea = new XFAObjectArray();\\n    this.corner = new XFAObjectArray();\\n    this.date = new XFAObjectArray();\\n    this.dateTime = new XFAObjectArray();\\n    this.dateTimeEdit = new XFAObjectArray();\\n    this.decimal = new XFAObjectArray();\\n    this.defaultUi = new XFAObjectArray();\\n    this.desc = new XFAObjectArray();\\n    this.digestMethod = new XFAObjectArray();\\n    this.digestMethods = new XFAObjectArray();\\n    this.draw = new XFAObjectArray();\\n    this.edge = new XFAObjectArray();\\n    this.encoding = new XFAObjectArray();\\n    this.encodings = new XFAObjectArray();\\n    this.encrypt = new XFAObjectArray();\\n    this.encryptData = new XFAObjectArray();\\n    this.encryption = new XFAObjectArray();\\n    this.encryptionMethod = new XFAObjectArray();\\n    this.encryptionMethods = new XFAObjectArray();\\n    this.event = new XFAObjectArray();\\n    this.exData = new XFAObjectArray();\\n    this.exObject = new XFAObjectArray();\\n    this.exclGroup = new XFAObjectArray();\\n    this.execute = new XFAObjectArray();\\n    this.extras = new XFAObjectArray();\\n    this.field = new XFAObjectArray();\\n    this.fill = new XFAObjectArray();\\n    this.filter = new XFAObjectArray();\\n    this.float = new XFAObjectArray();\\n    this.font = new XFAObjectArray();\\n    this.format = new XFAObjectArray();\\n    this.handler = new XFAObjectArray();\\n    this.hyphenation = new XFAObjectArray();\\n    this.image = new XFAObjectArray();\\n    this.imageEdit = new XFAObjectArray();\\n    this.integer = new XFAObjectArray();\\n    this.issuers = new XFAObjectArray();\\n    this.items = new XFAObjectArray();\\n    this.keep = new XFAObjectArray();\\n    this.keyUsage = new XFAObjectArray();\\n    this.line = new XFAObjectArray();\\n    this.linear = new XFAObjectArray();\\n    this.lockDocument = new XFAObjectArray();\\n    this.manifest = new XFAObjectArray();\\n    this.margin = new XFAObjectArray();\\n    this.mdp = new XFAObjectArray();\\n    this.medium = new XFAObjectArray();\\n    this.message = new XFAObjectArray();\\n    this.numericEdit = new XFAObjectArray();\\n    this.occur = new XFAObjectArray();\\n    this.oid = new XFAObjectArray();\\n    this.oids = new XFAObjectArray();\\n    this.overflow = new XFAObjectArray();\\n    this.pageArea = new XFAObjectArray();\\n    this.pageSet = new XFAObjectArray();\\n    this.para = new XFAObjectArray();\\n    this.passwordEdit = new XFAObjectArray();\\n    this.pattern = new XFAObjectArray();\\n    this.picture = new XFAObjectArray();\\n    this.radial = new XFAObjectArray();\\n    this.reason = new XFAObjectArray();\\n    this.reasons = new XFAObjectArray();\\n    this.rectangle = new XFAObjectArray();\\n    this.ref = new XFAObjectArray();\\n    this.script = new XFAObjectArray();\\n    this.setProperty = new XFAObjectArray();\\n    this.signData = new XFAObjectArray();\\n    this.signature = new XFAObjectArray();\\n    this.signing = new XFAObjectArray();\\n    this.solid = new XFAObjectArray();\\n    this.speak = new XFAObjectArray();\\n    this.stipple = new XFAObjectArray();\\n    this.subform = new XFAObjectArray();\\n    this.subformSet = new XFAObjectArray();\\n    this.subjectDN = new XFAObjectArray();\\n    this.subjectDNs = new XFAObjectArray();\\n    this.submit = new XFAObjectArray();\\n    this.text = new XFAObjectArray();\\n    this.textEdit = new XFAObjectArray();\\n    this.time = new XFAObjectArray();\\n    this.timeStamp = new XFAObjectArray();\\n    this.toolTip = new XFAObjectArray();\\n    this.traversal = new XFAObjectArray();\\n    this.traverse = new XFAObjectArray();\\n    this.ui = new XFAObjectArray();\\n    this.validate = new XFAObjectArray();\\n    this.value = new XFAObjectArray();\\n    this.variables = new XFAObjectArray();\\n  }\\n}\\n\\nclass Radial extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"radial\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\\"toEdge\\\", \\\"toCenter\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.color = null;\\n    this.extras = null;\\n  }\\n\\n  [$toStyle](startColor) {\\n    startColor = startColor ? startColor[$toStyle]() : \\\"#FFFFFF\\\";\\n    const endColor = this.color ? this.color[$toStyle]() : \\\"#000000\\\";\\n    const colors =\\n      this.type === \\\"toEdge\\\"\\n        ? `${startColor},${endColor}`\\n        : `${endColor},${startColor}`;\\n    return `radial-gradient(circle at center, ${colors})`;\\n  }\\n}\\n\\nclass Reason extends StringObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"reason\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Reasons extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"reasons\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\\"optional\\\", \\\"required\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.reason = new XFAObjectArray();\\n  }\\n}\\n\\nclass Rectangle extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"rectangle\\\", \u002F* hasChildren = *\u002F true);\\n    this.hand = getStringOption(attributes.hand, [\\\"even\\\", \\\"left\\\", \\\"right\\\"]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.corner = new XFAObjectArray(4);\\n    this.edge = new XFAObjectArray(4);\\n    this.fill = null;\\n  }\\n\\n  [$toHTML]() {\\n    const edge = this.edge.children.length\\n      ? this.edge.children[0]\\n      : new Edge({});\\n    const edgeStyle = edge[$toStyle]();\\n    const style = Object.create(null);\\n    if (this.fill?.presence === \\\"visible\\\") {\\n      Object.assign(style, this.fill[$toStyle]());\\n    } else {\\n      style.fill = \\\"transparent\\\";\\n    }\\n    style.strokeWidth = measureToString(\\n      edge.presence === \\\"visible\\\" ? edge.thickness : 0\\n    );\\n    style.stroke = edgeStyle.color;\\n\\n    const corner = this.corner.children.length\\n      ? this.corner.children[0]\\n      : new Corner({});\\n    const cornerStyle = corner[$toStyle]();\\n\\n    const rect = {\\n      name: \\\"rect\\\",\\n      attributes: {\\n        xmlns: SVG_NS,\\n        width: \\\"100%\\\",\\n        height: \\\"100%\\\",\\n        x: 0,\\n        y: 0,\\n        rx: cornerStyle.radius,\\n        ry: cornerStyle.radius,\\n        style,\\n      },\\n    };\\n\\n    const svg = {\\n      name: \\\"svg\\\",\\n      children: [rect],\\n      attributes: {\\n        xmlns: SVG_NS,\\n        style: {\\n          overflow: \\\"visible\\\",\\n        },\\n        width: \\\"100%\\\",\\n        height: \\\"100%\\\",\\n      },\\n    };\\n\\n    const parent = this[$getParent]()[$getParent]();\\n    if (hasMargin(parent)) {\\n      return HTMLResult.success({\\n        name: \\\"div\\\",\\n        attributes: {\\n          style: {\\n            display: \\\"inline\\\",\\n            width: \\\"100%\\\",\\n            height: \\\"100%\\\",\\n          },\\n        },\\n        children: [svg],\\n      });\\n    }\\n\\n    svg.attributes.style.position = \\\"absolute\\\";\\n    return HTMLResult.success(svg);\\n  }\\n}\\n\\nclass RefElement extends StringObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"ref\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Script extends StringObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"script\\\");\\n    this.binding = attributes.binding || \\\"\\\";\\n    this.contentType = attributes.contentType || \\\"\\\";\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.runAt = getStringOption(attributes.runAt, [\\n      \\\"client\\\",\\n      \\\"both\\\",\\n      \\\"server\\\",\\n    ]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass SetProperty extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"setProperty\\\");\\n    this.connection = attributes.connection || \\\"\\\";\\n    this.ref = attributes.ref || \\\"\\\";\\n    this.target = attributes.target || \\\"\\\";\\n  }\\n}\\n\\nclass SignData extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"signData\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.operation = getStringOption(attributes.operation, [\\n      \\\"sign\\\",\\n      \\\"clear\\\",\\n      \\\"verify\\\",\\n    ]);\\n    this.ref = attributes.ref || \\\"\\\";\\n    this.target = attributes.target || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.filter = null;\\n    this.manifest = null;\\n  }\\n}\\n\\nclass Signature extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"signature\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\\"PDF1.3\\\", \\\"PDF1.6\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.border = null;\\n    this.extras = null;\\n    this.filter = null;\\n    this.manifest = null;\\n    this.margin = null;\\n  }\\n}\\n\\nclass Signing extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"signing\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\\"optional\\\", \\\"required\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.certificate = new XFAObjectArray();\\n  }\\n}\\n\\nclass Solid extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"solid\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n  }\\n\\n  [$toStyle](startColor) {\\n    return startColor ? startColor[$toStyle]() : \\\"#FFFFFF\\\";\\n  }\\n}\\n\\nclass Speak extends StringObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"speak\\\");\\n    this.disable = getInteger({\\n      data: attributes.disable,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.id = attributes.id || \\\"\\\";\\n    this.priority = getStringOption(attributes.priority, [\\n      \\\"custom\\\",\\n      \\\"caption\\\",\\n      \\\"name\\\",\\n      \\\"toolTip\\\",\\n    ]);\\n    this.rid = attributes.rid || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Stipple extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"stipple\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.rate = getInteger({\\n      data: attributes.rate,\\n      defaultValue: 50,\\n      validate: x => x >= 0 && x \u003C= 100,\\n    });\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.color = null;\\n    this.extras = null;\\n  }\\n\\n  [$toStyle](bgColor) {\\n    const alpha = this.rate \u002F 100;\\n    return Util.makeHexColor(\\n      Math.round(bgColor.value.r * (1 - alpha) + this.value.r * alpha),\\n      Math.round(bgColor.value.g * (1 - alpha) + this.value.g * alpha),\\n      Math.round(bgColor.value.b * (1 - alpha) + this.value.b * alpha)\\n    );\\n  }\\n}\\n\\nclass Subform extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"subform\\\", \u002F* hasChildren = *\u002F true);\\n    this.access = getStringOption(attributes.access, [\\n      \\\"open\\\",\\n      \\\"nonInteractive\\\",\\n      \\\"protected\\\",\\n      \\\"readOnly\\\",\\n    ]);\\n    this.allowMacro = getInteger({\\n      data: attributes.allowMacro,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.anchorType = getStringOption(attributes.anchorType, [\\n      \\\"topLeft\\\",\\n      \\\"bottomCenter\\\",\\n      \\\"bottomLeft\\\",\\n      \\\"bottomRight\\\",\\n      \\\"middleCenter\\\",\\n      \\\"middleLeft\\\",\\n      \\\"middleRight\\\",\\n      \\\"topCenter\\\",\\n      \\\"topRight\\\",\\n    ]);\\n    this.colSpan = getInteger({\\n      data: attributes.colSpan,\\n      defaultValue: 1,\\n      validate: n => n >= 1 || n === -1,\\n    });\\n    this.columnWidths = (attributes.columnWidths || \\\"\\\")\\n      .trim()\\n      .split(\u002F\\\\s+\u002F)\\n      .map(x => (x === \\\"-1\\\" ? -1 : getMeasurement(x)));\\n    this.h = attributes.h ? getMeasurement(attributes.h) : \\\"\\\";\\n    this.hAlign = getStringOption(attributes.hAlign, [\\n      \\\"left\\\",\\n      \\\"center\\\",\\n      \\\"justify\\\",\\n      \\\"justifyAll\\\",\\n      \\\"radix\\\",\\n      \\\"right\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.layout = getStringOption(attributes.layout, [\\n      \\\"position\\\",\\n      \\\"lr-tb\\\",\\n      \\\"rl-row\\\",\\n      \\\"rl-tb\\\",\\n      \\\"row\\\",\\n      \\\"table\\\",\\n      \\\"tb\\\",\\n    ]);\\n    this.locale = attributes.locale || \\\"\\\";\\n    this.maxH = getMeasurement(attributes.maxH, \\\"0pt\\\");\\n    this.maxW = getMeasurement(attributes.maxW, \\\"0pt\\\");\\n    this.mergeMode = getStringOption(attributes.mergeMode, [\\n      \\\"consumeData\\\",\\n      \\\"matchTemplate\\\",\\n    ]);\\n    this.minH = getMeasurement(attributes.minH, \\\"0pt\\\");\\n    this.minW = getMeasurement(attributes.minW, \\\"0pt\\\");\\n    this.name = attributes.name || \\\"\\\";\\n    this.presence = getStringOption(attributes.presence, [\\n      \\\"visible\\\",\\n      \\\"hidden\\\",\\n      \\\"inactive\\\",\\n      \\\"invisible\\\",\\n    ]);\\n    this.relevant = getRelevant(attributes.relevant);\\n    this.restoreState = getStringOption(attributes.restoreState, [\\n      \\\"manual\\\",\\n      \\\"auto\\\",\\n    ]);\\n    this.scope = getStringOption(attributes.scope, [\\\"name\\\", \\\"none\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.w = attributes.w ? getMeasurement(attributes.w) : \\\"\\\";\\n    this.x = getMeasurement(attributes.x, \\\"0pt\\\");\\n    this.y = getMeasurement(attributes.y, \\\"0pt\\\");\\n    this.assist = null;\\n    this.bind = null;\\n    this.bookend = null;\\n    this.border = null;\\n    this.break = null;\\n    this.calculate = null;\\n    this.desc = null;\\n    this.extras = null;\\n    this.keep = null;\\n    this.margin = null;\\n    this.occur = null;\\n    this.overflow = null;\\n    this.pageSet = null;\\n    this.para = null;\\n    this.traversal = null;\\n    this.validate = null;\\n    this.variables = null;\\n    this.area = new XFAObjectArray();\\n    this.breakAfter = new XFAObjectArray();\\n    this.breakBefore = new XFAObjectArray();\\n    this.connect = new XFAObjectArray();\\n    this.draw = new XFAObjectArray();\\n    this.event = new XFAObjectArray();\\n    this.exObject = new XFAObjectArray();\\n    this.exclGroup = new XFAObjectArray();\\n    this.field = new XFAObjectArray();\\n    this.proto = new XFAObjectArray();\\n    this.setProperty = new XFAObjectArray();\\n    this.subform = new XFAObjectArray();\\n    this.subformSet = new XFAObjectArray();\\n  }\\n\\n  [$getSubformParent]() {\\n    const parent = this[$getParent]();\\n    if (parent instanceof SubformSet) {\\n      return parent[$getSubformParent]();\\n    }\\n    return parent;\\n  }\\n\\n  [$isBindable]() {\\n    return true;\\n  }\\n\\n  [$isThereMoreWidth]() {\\n    return (\\n      (this.layout.endsWith(\\\"-tb\\\") &&\\n        this[$extra].attempt === 0 &&\\n        this[$extra].numberInLine > 0) ||\\n      this[$getParent]()[$isThereMoreWidth]()\\n    );\\n  }\\n\\n  *[$getContainedChildren]() {\\n    \u002F\u002F This function is overriden in order to fake that subforms under\\n    \u002F\u002F this set are in fact under parent subform.\\n    yield* getContainedChildren(this);\\n  }\\n\\n  [$flushHTML]() {\\n    return flushHTML(this);\\n  }\\n\\n  [$addHTML](html, bbox) {\\n    addHTML(this, html, bbox);\\n  }\\n\\n  [$getAvailableSpace]() {\\n    return getAvailableSpace(this);\\n  }\\n\\n  [$isSplittable]() {\\n    \u002F\u002F We cannot cache the result here because the contentArea\\n    \u002F\u002F can change.\\n    const parent = this[$getSubformParent]();\\n    if (!parent[$isSplittable]()) {\\n      return false;\\n    }\\n\\n    if (this[$extra]._isSplittable !== undefined) {\\n      return this[$extra]._isSplittable;\\n    }\\n\\n    if (this.layout === \\\"position\\\" || this.layout.includes(\\\"row\\\")) {\\n      this[$extra]._isSplittable = false;\\n      return false;\\n    }\\n\\n    if (this.keep && this.keep.intact !== \\\"none\\\") {\\n      this[$extra]._isSplittable = false;\\n      return false;\\n    }\\n\\n    if (parent.layout?.endsWith(\\\"-tb\\\") && parent[$extra].numberInLine !== 0) {\\n      \u002F\u002F If parent can fit in w=100 and there's already an element which takes\\n      \u002F\u002F 90 then we've 10 for this element. Suppose this element has a tb layout\\n      \u002F\u002F and 5 elements have a width of 7 and the 6th has a width of 20:\\n      \u002F\u002F then this element (and all its content) must move on the next line.\\n      \u002F\u002F If this element is splittable then the first 5 children will stay\\n      \u002F\u002F at the end of the line: we don't want that.\\n      return false;\\n    }\\n\\n    this[$extra]._isSplittable = true;\\n\\n    return true;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    setTabIndex(this);\\n\\n    if (this.break) {\\n      \u002F\u002F break element is deprecated so plug it on one of its replacement\\n      \u002F\u002F breakBefore or breakAfter.\\n      if (this.break.after !== \\\"auto\\\" || this.break.afterTarget !== \\\"\\\") {\\n        const node = new BreakAfter({\\n          targetType: this.break.after,\\n          target: this.break.afterTarget,\\n          startNew: this.break.startNew.toString(),\\n        });\\n        node[$globalData] = this[$globalData];\\n        this[$appendChild](node);\\n        this.breakAfter.push(node);\\n      }\\n\\n      if (this.break.before !== \\\"auto\\\" || this.break.beforeTarget !== \\\"\\\") {\\n        const node = new BreakBefore({\\n          targetType: this.break.before,\\n          target: this.break.beforeTarget,\\n          startNew: this.break.startNew.toString(),\\n        });\\n        node[$globalData] = this[$globalData];\\n        this[$appendChild](node);\\n        this.breakBefore.push(node);\\n      }\\n\\n      if (this.break.overflowTarget !== \\\"\\\") {\\n        const node = new Overflow({\\n          target: this.break.overflowTarget,\\n          leader: this.break.overflowLeader,\\n          trailer: this.break.overflowTrailer,\\n        });\\n        node[$globalData] = this[$globalData];\\n        this[$appendChild](node);\\n        this.overflow.push(node);\\n      }\\n\\n      this[$removeChild](this.break);\\n      this.break = null;\\n    }\\n\\n    if (this.presence === \\\"hidden\\\" || this.presence === \\\"inactive\\\") {\\n      return HTMLResult.EMPTY;\\n    }\\n\\n    if (\\n      this.breakBefore.children.length > 1 ||\\n      this.breakAfter.children.length > 1\\n    ) {\\n      \u002F\u002F Specs are always talking about the breakBefore element\\n      \u002F\u002F and it doesn't really make sense to have several ones.\\n      warn(\\n        \\\"XFA - Several breakBefore or breakAfter in subforms: please file a bug.\\\"\\n      );\\n    }\\n\\n    if (this.breakBefore.children.length >= 1) {\\n      const breakBefore = this.breakBefore.children[0];\\n      if (handleBreak(breakBefore)) {\\n        return HTMLResult.breakNode(breakBefore);\\n      }\\n    }\\n\\n    if (this[$extra]?.afterBreakAfter) {\\n      return HTMLResult.EMPTY;\\n    }\\n\\n    \u002F\u002F TODO: incomplete.\\n    fixDimensions(this);\\n    const children = [];\\n    const attributes = {\\n      id: this[$uid],\\n      class: [],\\n    };\\n\\n    setAccess(this, attributes.class);\\n\\n    this[$extra] ||= Object.create(null);\\n\\n    Object.assign(this[$extra], {\\n      children,\\n      line: null,\\n      attributes,\\n      attempt: 0,\\n      numberInLine: 0,\\n      availableSpace: {\\n        width: Math.min(this.w || Infinity, availableSpace.width),\\n        height: Math.min(this.h || Infinity, availableSpace.height),\\n      },\\n      width: 0,\\n      height: 0,\\n      prevHeight: 0,\\n      currentWidth: 0,\\n    });\\n\\n    const root = this[$getTemplateRoot]();\\n    const savedNoLayoutFailure = root[$extra].noLayoutFailure;\\n\\n    const isSplittable = this[$isSplittable]();\\n    if (!isSplittable) {\\n      setFirstUnsplittable(this);\\n    }\\n\\n    if (!checkDimensions(this, availableSpace)) {\\n      return HTMLResult.FAILURE;\\n    }\\n\\n    const filter = new Set([\\n      \\\"area\\\",\\n      \\\"draw\\\",\\n      \\\"exclGroup\\\",\\n      \\\"field\\\",\\n      \\\"subform\\\",\\n      \\\"subformSet\\\",\\n    ]);\\n\\n    if (this.layout.includes(\\\"row\\\")) {\\n      const columnWidths = this[$getSubformParent]().columnWidths;\\n      if (Array.isArray(columnWidths) && columnWidths.length > 0) {\\n        this[$extra].columnWidths = columnWidths;\\n        this[$extra].currentColumn = 0;\\n      }\\n    }\\n\\n    const style = toStyle(\\n      this,\\n      \\\"anchorType\\\",\\n      \\\"dimensions\\\",\\n      \\\"position\\\",\\n      \\\"presence\\\",\\n      \\\"border\\\",\\n      \\\"margin\\\",\\n      \\\"hAlign\\\"\\n    );\\n    const classNames = [\\\"xfaSubform\\\"];\\n    const cl = layoutClass(this);\\n    if (cl) {\\n      classNames.push(cl);\\n    }\\n\\n    attributes.style = style;\\n    attributes.class = classNames;\\n\\n    if (this.name) {\\n      attributes.xfaName = this.name;\\n    }\\n\\n    if (this.overflow) {\\n      const overflowExtra = this.overflow[$getExtra]();\\n      if (overflowExtra.addLeader) {\\n        overflowExtra.addLeader = false;\\n        handleOverflow(this, overflowExtra.leader, availableSpace);\\n      }\\n    }\\n\\n    this[$pushPara]();\\n    const isLrTb = this.layout === \\\"lr-tb\\\" || this.layout === \\\"rl-tb\\\";\\n    const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;\\n    for (; this[$extra].attempt \u003C maxRun; this[$extra].attempt++) {\\n      if (isLrTb && this[$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {\\n        \u002F\u002F If the layout is lr-tb then having attempt equals to\\n        \u002F\u002F MAX_ATTEMPTS_FOR_LRTB_LAYOUT-1 means that we're trying to layout\\n        \u002F\u002F on the next line so this on is empty.\\n        this[$extra].numberInLine = 0;\\n      }\\n      const result = this[$childrenToHTML]({\\n        filter,\\n        include: true,\\n      });\\n      if (result.success) {\\n        break;\\n      }\\n      if (result.isBreak()) {\\n        this[$popPara]();\\n        return result;\\n      }\\n      if (\\n        isLrTb &&\\n        this[$extra].attempt === 0 &&\\n        this[$extra].numberInLine === 0 &&\\n        !root[$extra].noLayoutFailure\\n      ) {\\n        \u002F\u002F We're failing to put the first element on the line so no\\n        \u002F\u002F need to test on the next line.\\n        \u002F\u002F The goal is not only to avoid some useless checks but to avoid\\n        \u002F\u002F bugs too: if a descendant managed to put a node and failed\\n        \u002F\u002F on the next one, going to the next step here will imply to\\n        \u002F\u002F visit the descendant again, clear [$extra].children and restart\\n        \u002F\u002F on the failing node, consequently the first node just disappears\\n        \u002F\u002F because it has never been flushed.\\n        this[$extra].attempt = maxRun;\\n        break;\\n      }\\n    }\\n\\n    this[$popPara]();\\n    if (!isSplittable) {\\n      unsetFirstUnsplittable(this);\\n    }\\n    root[$extra].noLayoutFailure = savedNoLayoutFailure;\\n\\n    if (this[$extra].attempt === maxRun) {\\n      if (this.overflow) {\\n        this[$getTemplateRoot]()[$extra].overflowNode = this.overflow;\\n      }\\n\\n      if (!isSplittable) {\\n        \u002F\u002F Since a new try will happen in a new container with maybe\\n        \u002F\u002F new dimensions, we invalidate already layed out components.\\n        delete this[$extra];\\n      }\\n      return HTMLResult.FAILURE;\\n    }\\n\\n    if (this.overflow) {\\n      const overflowExtra = this.overflow[$getExtra]();\\n      if (overflowExtra.addTrailer) {\\n        overflowExtra.addTrailer = false;\\n        handleOverflow(this, overflowExtra.trailer, availableSpace);\\n      }\\n    }\\n\\n    let marginH = 0;\\n    let marginV = 0;\\n    if (this.margin) {\\n      marginH = this.margin.leftInset + this.margin.rightInset;\\n      marginV = this.margin.topInset + this.margin.bottomInset;\\n    }\\n\\n    const width = Math.max(this[$extra].width + marginH, this.w || 0);\\n    const height = Math.max(this[$extra].height + marginV, this.h || 0);\\n    const bbox = [this.x, this.y, width, height];\\n\\n    if (this.w === \\\"\\\") {\\n      style.width = measureToString(width);\\n    }\\n    if (this.h === \\\"\\\") {\\n      style.height = measureToString(height);\\n    }\\n\\n    if (\\n      (style.width === \\\"0px\\\" || style.height === \\\"0px\\\") &&\\n      children.length === 0\\n    ) {\\n      return HTMLResult.EMPTY;\\n    }\\n\\n    const html = {\\n      name: \\\"div\\\",\\n      attributes,\\n      children,\\n    };\\n\\n    applyAssist(this, attributes);\\n\\n    const result = HTMLResult.success(createWrapper(this, html), bbox);\\n\\n    if (this.breakAfter.children.length >= 1) {\\n      const breakAfter = this.breakAfter.children[0];\\n      if (handleBreak(breakAfter)) {\\n        this[$extra].afterBreakAfter = result;\\n        return HTMLResult.breakNode(breakAfter);\\n      }\\n    }\\n\\n    delete this[$extra];\\n\\n    return result;\\n  }\\n}\\n\\nclass SubformSet extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"subformSet\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.relation = getStringOption(attributes.relation, [\\n      \\\"ordered\\\",\\n      \\\"choice\\\",\\n      \\\"unordered\\\",\\n    ]);\\n    this.relevant = getRelevant(attributes.relevant);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.bookend = null;\\n    this.break = null;\\n    this.desc = null;\\n    this.extras = null;\\n    this.occur = null;\\n    this.overflow = null;\\n    this.breakAfter = new XFAObjectArray();\\n    this.breakBefore = new XFAObjectArray();\\n    this.subform = new XFAObjectArray();\\n    this.subformSet = new XFAObjectArray();\\n\\n    \u002F\u002F TODO: need to handle break stuff and relation.\\n  }\\n\\n  *[$getContainedChildren]() {\\n    \u002F\u002F This function is overriden in order to fake that subforms under\\n    \u002F\u002F this set are in fact under parent subform.\\n    yield* getContainedChildren(this);\\n  }\\n\\n  [$getSubformParent]() {\\n    let parent = this[$getParent]();\\n    while (!(parent instanceof Subform)) {\\n      parent = parent[$getParent]();\\n    }\\n    return parent;\\n  }\\n\\n  [$isBindable]() {\\n    return true;\\n  }\\n}\\n\\nclass SubjectDN extends ContentObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"subjectDN\\\");\\n    this.delimiter = attributes.delimiter || \\\",\\\";\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n\\n  [$finalize]() {\\n    this[$content] = new Map(\\n      this[$content].split(this.delimiter).map(kv => {\\n        kv = kv.split(\\\"=\\\", 2);\\n        kv[0] = kv[0].trim();\\n        return kv;\\n      })\\n    );\\n  }\\n}\\n\\nclass SubjectDNs extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"subjectDNs\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\\"optional\\\", \\\"required\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.subjectDN = new XFAObjectArray();\\n  }\\n}\\n\\nclass Submit extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"submit\\\", \u002F* hasChildren = *\u002F true);\\n    this.embedPDF = getInteger({\\n      data: attributes.embedPDF,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.format = getStringOption(attributes.format, [\\n      \\\"xdp\\\",\\n      \\\"formdata\\\",\\n      \\\"pdf\\\",\\n      \\\"urlencoded\\\",\\n      \\\"xfd\\\",\\n      \\\"xml\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.target = attributes.target || \\\"\\\";\\n    this.textEncoding = getKeyword({\\n      data: attributes.textEncoding\\n        ? attributes.textEncoding.toLowerCase()\\n        : \\\"\\\",\\n      defaultValue: \\\"\\\",\\n      validate: k =>\\n        [\\n          \\\"utf-8\\\",\\n          \\\"big-five\\\",\\n          \\\"fontspecific\\\",\\n          \\\"gbk\\\",\\n          \\\"gb-18030\\\",\\n          \\\"gb-2312\\\",\\n          \\\"ksc-5601\\\",\\n          \\\"none\\\",\\n          \\\"shift-jis\\\",\\n          \\\"ucs-2\\\",\\n          \\\"utf-16\\\",\\n        ].includes(k) || k.match(\u002Fiso-8859-\\\\d{2}\u002F),\\n    });\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.xdpContent = attributes.xdpContent || \\\"\\\";\\n    this.encrypt = null;\\n    this.encryptData = new XFAObjectArray();\\n    this.signData = new XFAObjectArray();\\n  }\\n}\\n\\nclass Template extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"template\\\", \u002F* hasChildren = *\u002F true);\\n    this.baseProfile = getStringOption(attributes.baseProfile, [\\n      \\\"full\\\",\\n      \\\"interactiveForms\\\",\\n    ]);\\n    this.extras = null;\\n\\n    \u002F\u002F Spec is unclear:\\n    \u002F\u002F  A container element that describes a single subform capable of\\n    \u002F\u002F  enclosing other containers.\\n    \u002F\u002F Can we have more than one subform ?\\n    this.subform = new XFAObjectArray();\\n  }\\n\\n  [$finalize]() {\\n    if (this.subform.children.length === 0) {\\n      warn(\\\"XFA - No subforms in template node.\\\");\\n    }\\n    if (this.subform.children.length >= 2) {\\n      warn(\\\"XFA - Several subforms in template node: please file a bug.\\\");\\n    }\\n    this[$tabIndex] = DEFAULT_TAB_INDEX;\\n  }\\n\\n  [$isSplittable]() {\\n    return true;\\n  }\\n\\n  [$searchNode](expr, container) {\\n    if (expr.startsWith(\\\"#\\\")) {\\n      \u002F\u002F This is an id.\\n      return [this[$ids].get(expr.slice(1))];\\n    }\\n    return searchNode(this, container, expr, true, true);\\n  }\\n\\n  \u002F**\\n   * This function is a generator because the conversion into\\n   * pages is done asynchronously and we want to save the state\\n   * of the function where we were in the previous iteration.\\n   *\u002F\\n  *[$toPages]() {\\n    if (!this.subform.children.length) {\\n      return HTMLResult.success({\\n        name: \\\"div\\\",\\n        children: [],\\n      });\\n    }\\n    this[$extra] = {\\n      overflowNode: null,\\n      firstUnsplittable: null,\\n      currentContentArea: null,\\n      currentPageArea: null,\\n      noLayoutFailure: false,\\n      pageNumber: 1,\\n      pagePosition: \\\"first\\\",\\n      oddOrEven: \\\"odd\\\",\\n      blankOrNotBlank: \\\"nonBlank\\\",\\n      paraStack: [],\\n    };\\n\\n    const root = this.subform.children[0];\\n    root.pageSet[$cleanPage]();\\n\\n    const pageAreas = root.pageSet.pageArea.children;\\n    const mainHtml = {\\n      name: \\\"div\\\",\\n      children: [],\\n    };\\n\\n    let pageArea = null;\\n    let breakBefore = null;\\n    let breakBeforeTarget = null;\\n    if (root.breakBefore.children.length >= 1) {\\n      breakBefore = root.breakBefore.children[0];\\n      breakBeforeTarget = breakBefore.target;\\n    } else if (\\n      root.subform.children.length >= 1 &&\\n      root.subform.children[0].breakBefore.children.length >= 1\\n    ) {\\n      breakBefore = root.subform.children[0].breakBefore.children[0];\\n      breakBeforeTarget = breakBefore.target;\\n    } else if (root.break?.beforeTarget) {\\n      breakBefore = root.break;\\n      breakBeforeTarget = breakBefore.beforeTarget;\\n    } else if (\\n      root.subform.children.length >= 1 &&\\n      root.subform.children[0].break?.beforeTarget\\n    ) {\\n      breakBefore = root.subform.children[0].break;\\n      breakBeforeTarget = breakBefore.beforeTarget;\\n    }\\n\\n    if (breakBefore) {\\n      const target = this[$searchNode](\\n        breakBeforeTarget,\\n        breakBefore[$getParent]()\\n      );\\n      if (target instanceof PageArea) {\\n        pageArea = target;\\n        \u002F\u002F Consume breakBefore.\\n        breakBefore[$extra] = {};\\n      }\\n    }\\n\\n    pageArea ||= pageAreas[0];\\n\\n    pageArea[$extra] = {\\n      numberOfUse: 1,\\n    };\\n\\n    const pageAreaParent = pageArea[$getParent]();\\n    pageAreaParent[$extra] = {\\n      numberOfUse: 1,\\n      pageIndex: pageAreaParent.pageArea.children.indexOf(pageArea),\\n      pageSetIndex: 0,\\n    };\\n\\n    let targetPageArea;\\n    let leader = null;\\n    let trailer = null;\\n    let hasSomething = true;\\n    let hasSomethingCounter = 0;\\n    let startIndex = 0;\\n\\n    while (true) {\\n      if (!hasSomething) {\\n        mainHtml.children.pop();\\n        \u002F\u002F Nothing has been added in the previous page\\n        if (++hasSomethingCounter === MAX_EMPTY_PAGES) {\\n          warn(\\\"XFA - Something goes wrong: please file a bug.\\\");\\n          return mainHtml;\\n        }\\n      } else {\\n        hasSomethingCounter = 0;\\n      }\\n\\n      targetPageArea = null;\\n      this[$extra].currentPageArea = pageArea;\\n      const page = pageArea[$toHTML]().html;\\n      mainHtml.children.push(page);\\n\\n      if (leader) {\\n        this[$extra].noLayoutFailure = true;\\n        page.children.push(leader[$toHTML](pageArea[$extra].space).html);\\n        leader = null;\\n      }\\n\\n      if (trailer) {\\n        this[$extra].noLayoutFailure = true;\\n        page.children.push(trailer[$toHTML](pageArea[$extra].space).html);\\n        trailer = null;\\n      }\\n\\n      const contentAreas = pageArea.contentArea.children;\\n      const htmlContentAreas = page.children.filter(node =>\\n        node.attributes.class.includes(\\\"xfaContentarea\\\")\\n      );\\n\\n      hasSomething = false;\\n      this[$extra].firstUnsplittable = null;\\n      this[$extra].noLayoutFailure = false;\\n\\n      const flush = index => {\\n        const html = root[$flushHTML]();\\n        if (html) {\\n          hasSomething ||= html.children?.length > 0;\\n          htmlContentAreas[index].children.push(html);\\n        }\\n      };\\n\\n      for (let i = startIndex, ii = contentAreas.length; i \u003C ii; i++) {\\n        const contentArea = (this[$extra].currentContentArea = contentAreas[i]);\\n        const space = { width: contentArea.w, height: contentArea.h };\\n        startIndex = 0;\\n\\n        if (leader) {\\n          htmlContentAreas[i].children.push(leader[$toHTML](space).html);\\n          leader = null;\\n        }\\n\\n        if (trailer) {\\n          htmlContentAreas[i].children.push(trailer[$toHTML](space).html);\\n          trailer = null;\\n        }\\n\\n        const html = root[$toHTML](space);\\n        if (html.success) {\\n          if (html.html) {\\n            hasSomething ||= html.html.children?.length > 0;\\n            htmlContentAreas[i].children.push(html.html);\\n          } else if (!hasSomething && mainHtml.children.length > 1) {\\n            mainHtml.children.pop();\\n          }\\n          return mainHtml;\\n        }\\n\\n        if (html.isBreak()) {\\n          const node = html.breakNode;\\n          flush(i);\\n\\n          if (node.targetType === \\\"auto\\\") {\\n            continue;\\n          }\\n\\n          if (node.leader) {\\n            leader = this[$searchNode](node.leader, node[$getParent]());\\n            leader = leader ? leader[0] : null;\\n          }\\n\\n          if (node.trailer) {\\n            trailer = this[$searchNode](node.trailer, node[$getParent]());\\n            trailer = trailer ? trailer[0] : null;\\n          }\\n\\n          if (node.targetType === \\\"pageArea\\\") {\\n            targetPageArea = node[$extra].target;\\n            i = Infinity;\\n          } else if (!node[$extra].target) {\\n            \u002F\u002F We stay on the same page.\\n            i = node[$extra].index;\\n          } else {\\n            targetPageArea = node[$extra].target;\\n            startIndex = node[$extra].index + 1;\\n            i = Infinity;\\n          }\\n\\n          continue;\\n        }\\n\\n        if (this[$extra].overflowNode) {\\n          const node = this[$extra].overflowNode;\\n          this[$extra].overflowNode = null;\\n\\n          const overflowExtra = node[$getExtra]();\\n          const target = overflowExtra.target;\\n          overflowExtra.addLeader = overflowExtra.leader !== null;\\n          overflowExtra.addTrailer = overflowExtra.trailer !== null;\\n\\n          flush(i);\\n\\n          const currentIndex = i;\\n\\n          i = Infinity;\\n          if (target instanceof PageArea) {\\n            \u002F\u002F We must stop the contentAreas filling and go to the next page.\\n            targetPageArea = target;\\n          } else if (target instanceof ContentArea) {\\n            const index = contentAreas.indexOf(target);\\n            if (index !== -1) {\\n              if (index > currentIndex) {\\n                \u002F\u002F In the next loop iteration `i` will be incremented, note the\\n                \u002F\u002F `continue` just below, hence we need to subtract one here.\\n                i = index - 1;\\n              } else {\\n                \u002F\u002F The targetted contentArea has already been filled\\n                \u002F\u002F so create a new page.\\n                startIndex = index;\\n              }\\n            } else {\\n              targetPageArea = target[$getParent]();\\n              startIndex = targetPageArea.contentArea.children.indexOf(target);\\n            }\\n          }\\n          continue;\\n        }\\n\\n        flush(i);\\n      }\\n\\n      this[$extra].pageNumber += 1;\\n      if (targetPageArea) {\\n        if (targetPageArea[$isUsable]()) {\\n          targetPageArea[$extra].numberOfUse += 1;\\n        } else {\\n          targetPageArea = null;\\n        }\\n      }\\n      pageArea = targetPageArea || pageArea[$getNextPage]();\\n      yield null;\\n    }\\n  }\\n}\\n\\nclass Text extends ContentObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"text\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.maxChars = getInteger({\\n      data: attributes.maxChars,\\n      defaultValue: 0,\\n      validate: x => x >= 0,\\n    });\\n    this.name = attributes.name || \\\"\\\";\\n    this.rid = attributes.rid || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n\\n  [$acceptWhitespace]() {\\n    return true;\\n  }\\n\\n  [$onChild](child) {\\n    if (child[$namespaceId] === NamespaceIds.xhtml.id) {\\n      this[$content] = child;\\n      return true;\\n    }\\n    warn(`XFA - Invalid content in Text: ${child[$nodeName]}.`);\\n    return false;\\n  }\\n\\n  [$onText](str) {\\n    if (this[$content] instanceof XFAObject) {\\n      return;\\n    }\\n    super[$onText](str);\\n  }\\n\\n  [$finalize]() {\\n    if (typeof this[$content] === \\\"string\\\") {\\n      this[$content] = this[$content].replaceAll(\\\"\\\\r\\\\n\\\", \\\"\\\\n\\\");\\n    }\\n  }\\n\\n  [$getExtra]() {\\n    if (typeof this[$content] === \\\"string\\\") {\\n      return this[$content]\\n        .split(\u002F[\\\\u2029\\\\u2028\\\\n]\u002F)\\n        .filter(line => !!line)\\n        .join(\\\"\\\\n\\\");\\n    }\\n    return this[$content][$text]();\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    if (typeof this[$content] === \\\"string\\\") {\\n      \u002F\u002F \\\\u2028 is a line separator.\\n      \u002F\u002F \\\\u2029 is a paragraph separator.\\n      const html = valueToHtml(this[$content]).html;\\n\\n      if (this[$content].includes(\\\"\\\\u2029\\\")) {\\n        \u002F\u002F We've plain text containing a paragraph separator\\n        \u002F\u002F so convert it into a set of \u003Cp>.\\n        html.name = \\\"div\\\";\\n        html.children = [];\\n        this[$content]\\n          .split(\\\"\\\\u2029\\\")\\n          .map(para =>\\n            \u002F\u002F Convert a paragraph into a set of \u003Cspan> (for lines)\\n            \u002F\u002F separated by \u003Cbr>.\\n            para.split(\u002F[\\\\u2028\\\\n]\u002F).flatMap(line => [\\n              {\\n                name: \\\"span\\\",\\n                value: line,\\n              },\\n              {\\n                name: \\\"br\\\",\\n              },\\n            ])\\n          )\\n          .forEach(lines => {\\n            html.children.push({\\n              name: \\\"p\\\",\\n              children: lines,\\n            });\\n          });\\n      } else if (\u002F[\\\\u2028\\\\n]\u002F.test(this[$content])) {\\n        html.name = \\\"div\\\";\\n        html.children = [];\\n        \u002F\u002F Convert plain text into a set of \u003Cspan> (for lines)\\n        \u002F\u002F separated by \u003Cbr>.\\n        this[$content].split(\u002F[\\\\u2028\\\\n]\u002F).forEach(line => {\\n          html.children.push(\\n            {\\n              name: \\\"span\\\",\\n              value: line,\\n            },\\n            {\\n              name: \\\"br\\\",\\n            }\\n          );\\n        });\\n      }\\n\\n      return HTMLResult.success(html);\\n    }\\n\\n    return this[$content][$toHTML](availableSpace);\\n  }\\n}\\n\\nclass TextEdit extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"textEdit\\\", \u002F* hasChildren = *\u002F true);\\n    this.allowRichText = getInteger({\\n      data: attributes.allowRichText,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.hScrollPolicy = getStringOption(attributes.hScrollPolicy, [\\n      \\\"auto\\\",\\n      \\\"off\\\",\\n      \\\"on\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.multiLine = getInteger({\\n      data: attributes.multiLine,\\n      defaultValue: \\\"\\\",\\n      validate: x => x === 0 || x === 1,\\n    });\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.vScrollPolicy = getStringOption(attributes.vScrollPolicy, [\\n      \\\"auto\\\",\\n      \\\"off\\\",\\n      \\\"on\\\",\\n    ]);\\n    this.border = null;\\n    this.comb = null;\\n    this.extras = null;\\n    this.margin = null;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    \u002F\u002F TODO: incomplete.\\n    const style = toStyle(this, \\\"border\\\", \\\"font\\\", \\\"margin\\\");\\n    let html;\\n    const field = this[$getParent]()[$getParent]();\\n    if (this.multiLine === \\\"\\\") {\\n      this.multiLine = field instanceof Draw ? 1 : 0;\\n    }\\n    if (this.multiLine === 1) {\\n      html = {\\n        name: \\\"textarea\\\",\\n        attributes: {\\n          dataId: field[$data]?.[$uid] || field[$uid],\\n          fieldId: field[$uid],\\n          class: [\\\"xfaTextfield\\\"],\\n          style,\\n          \\\"aria-label\\\": ariaLabel(field),\\n          \\\"aria-required\\\": false,\\n        },\\n      };\\n    } else {\\n      html = {\\n        name: \\\"input\\\",\\n        attributes: {\\n          type: \\\"text\\\",\\n          dataId: field[$data]?.[$uid] || field[$uid],\\n          fieldId: field[$uid],\\n          class: [\\\"xfaTextfield\\\"],\\n          style,\\n          \\\"aria-label\\\": ariaLabel(field),\\n          \\\"aria-required\\\": false,\\n        },\\n      };\\n    }\\n\\n    if (isRequired(field)) {\\n      html.attributes[\\\"aria-required\\\"] = true;\\n      html.attributes.required = true;\\n    }\\n\\n    return HTMLResult.success({\\n      name: \\\"label\\\",\\n      attributes: {\\n        class: [\\\"xfaLabel\\\"],\\n      },\\n      children: [html],\\n    });\\n  }\\n}\\n\\nclass Time extends StringObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"time\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n\\n  [$finalize]() {\\n    \u002F\u002F TODO: need to handle the string as a time and not as a date.\\n    const date = this[$content].trim();\\n    this[$content] = date ? new Date(date) : null;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    return valueToHtml(this[$content] ? this[$content].toString() : \\\"\\\");\\n  }\\n}\\n\\nclass TimeStamp extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"timeStamp\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.server = attributes.server || \\\"\\\";\\n    this.type = getStringOption(attributes.type, [\\\"optional\\\", \\\"required\\\"]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass ToolTip extends StringObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"toolTip\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.rid = attributes.rid || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Traversal extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"traversal\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n    this.traverse = new XFAObjectArray();\\n  }\\n}\\n\\nclass Traverse extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"traverse\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.operation = getStringOption(attributes.operation, [\\n      \\\"next\\\",\\n      \\\"back\\\",\\n      \\\"down\\\",\\n      \\\"first\\\",\\n      \\\"left\\\",\\n      \\\"right\\\",\\n      \\\"up\\\",\\n    ]);\\n    this.ref = attributes.ref || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n    this.script = null;\\n  }\\n\\n  get name() {\\n    \u002F\u002F SOM expression: see page 94\\n    return this.operation;\\n  }\\n\\n  [$isTransparent]() {\\n    return false;\\n  }\\n}\\n\\nclass Ui extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"ui\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n    this.picture = null;\\n\\n    \u002F\u002F One-of properties\\n    this.barcode = null;\\n    this.button = null;\\n    this.checkButton = null;\\n    this.choiceList = null;\\n    this.dateTimeEdit = null;\\n    this.defaultUi = null;\\n    this.imageEdit = null;\\n    this.numericEdit = null;\\n    this.passwordEdit = null;\\n    this.signature = null;\\n    this.textEdit = null;\\n  }\\n\\n  [$getExtra]() {\\n    if (this[$extra] === undefined) {\\n      for (const name of Object.getOwnPropertyNames(this)) {\\n        if (name === \\\"extras\\\" || name === \\\"picture\\\") {\\n          continue;\\n        }\\n        const obj = this[name];\\n        if (!(obj instanceof XFAObject)) {\\n          continue;\\n        }\\n\\n        this[$extra] = obj;\\n        return obj;\\n      }\\n      this[$extra] = null;\\n    }\\n    return this[$extra];\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    \u002F\u002F TODO: picture.\\n    const obj = this[$getExtra]();\\n    if (obj) {\\n      return obj[$toHTML](availableSpace);\\n    }\\n    return HTMLResult.EMPTY;\\n  }\\n}\\n\\nclass Validate extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"validate\\\", \u002F* hasChildren = *\u002F true);\\n    this.formatTest = getStringOption(attributes.formatTest, [\\n      \\\"warning\\\",\\n      \\\"disabled\\\",\\n      \\\"error\\\",\\n    ]);\\n    this.id = attributes.id || \\\"\\\";\\n    this.nullTest = getStringOption(attributes.nullTest, [\\n      \\\"disabled\\\",\\n      \\\"error\\\",\\n      \\\"warning\\\",\\n    ]);\\n    this.scriptTest = getStringOption(attributes.scriptTest, [\\n      \\\"error\\\",\\n      \\\"disabled\\\",\\n      \\\"warning\\\",\\n    ]);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.extras = null;\\n    this.message = null;\\n    this.picture = null;\\n    this.script = null;\\n  }\\n}\\n\\nclass Value extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"value\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.override = getInteger({\\n      data: attributes.override,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.relevant = getRelevant(attributes.relevant);\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n\\n    \u002F\u002F One-of properties\\n    this.arc = null;\\n    this.boolean = null;\\n    this.date = null;\\n    this.dateTime = null;\\n    this.decimal = null;\\n    this.exData = null;\\n    this.float = null;\\n    this.image = null;\\n    this.integer = null;\\n    this.line = null;\\n    this.rectangle = null;\\n    this.text = null;\\n    this.time = null;\\n  }\\n\\n  [$setValue](value) {\\n    const parent = this[$getParent]();\\n    if (parent instanceof Field) {\\n      if (parent.ui?.imageEdit) {\\n        if (!this.image) {\\n          this.image = new Image({});\\n          this[$appendChild](this.image);\\n        }\\n        this.image[$content] = value[$content];\\n        return;\\n      }\\n    }\\n\\n    const valueName = value[$nodeName];\\n    if (this[valueName] !== null) {\\n      this[valueName][$content] = value[$content];\\n      return;\\n    }\\n\\n    \u002F\u002F Reset all the properties.\\n    for (const name of Object.getOwnPropertyNames(this)) {\\n      const obj = this[name];\\n      if (obj instanceof XFAObject) {\\n        this[name] = null;\\n        this[$removeChild](obj);\\n      }\\n    }\\n\\n    this[value[$nodeName]] = value;\\n    this[$appendChild](value);\\n  }\\n\\n  [$text]() {\\n    if (this.exData) {\\n      if (typeof this.exData[$content] === \\\"string\\\") {\\n        return this.exData[$content].trim();\\n      }\\n      return this.exData[$content][$text]().trim();\\n    }\\n    for (const name of Object.getOwnPropertyNames(this)) {\\n      if (name === \\\"image\\\") {\\n        continue;\\n      }\\n      const obj = this[name];\\n      if (obj instanceof XFAObject) {\\n        return (obj[$content] || \\\"\\\").toString().trim();\\n      }\\n    }\\n    return null;\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    for (const name of Object.getOwnPropertyNames(this)) {\\n      const obj = this[name];\\n      if (!(obj instanceof XFAObject)) {\\n        continue;\\n      }\\n\\n      return obj[$toHTML](availableSpace);\\n    }\\n\\n    return HTMLResult.EMPTY;\\n  }\\n}\\n\\nclass Variables extends XFAObject {\\n  constructor(attributes) {\\n    super(TEMPLATE_NS_ID, \\\"variables\\\", \u002F* hasChildren = *\u002F true);\\n    this.id = attributes.id || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n    this.boolean = new XFAObjectArray();\\n    this.date = new XFAObjectArray();\\n    this.dateTime = new XFAObjectArray();\\n    this.decimal = new XFAObjectArray();\\n    this.exData = new XFAObjectArray();\\n    this.float = new XFAObjectArray();\\n    this.image = new XFAObjectArray();\\n    this.integer = new XFAObjectArray();\\n    this.manifest = new XFAObjectArray();\\n    this.script = new XFAObjectArray();\\n    this.text = new XFAObjectArray();\\n    this.time = new XFAObjectArray();\\n  }\\n\\n  [$isTransparent]() {\\n    return true;\\n  }\\n}\\n\\nclass TemplateNamespace {\\n  static [$buildXFAObject](name, attributes) {\\n    if (TemplateNamespace.hasOwnProperty(name)) {\\n      const node = TemplateNamespace[name](attributes);\\n      node[$setSetAttributes](attributes);\\n      return node;\\n    }\\n    return undefined;\\n  }\\n\\n  static appearanceFilter(attrs) {\\n    return new AppearanceFilter(attrs);\\n  }\\n\\n  static arc(attrs) {\\n    return new Arc(attrs);\\n  }\\n\\n  static area(attrs) {\\n    return new Area(attrs);\\n  }\\n\\n  static assist(attrs) {\\n    return new Assist(attrs);\\n  }\\n\\n  static barcode(attrs) {\\n    return new Barcode(attrs);\\n  }\\n\\n  static bind(attrs) {\\n    return new Bind(attrs);\\n  }\\n\\n  static bindItems(attrs) {\\n    return new BindItems(attrs);\\n  }\\n\\n  static bookend(attrs) {\\n    return new Bookend(attrs);\\n  }\\n\\n  static boolean(attrs) {\\n    return new BooleanElement(attrs);\\n  }\\n\\n  static border(attrs) {\\n    return new Border(attrs);\\n  }\\n\\n  static break(attrs) {\\n    return new Break(attrs);\\n  }\\n\\n  static breakAfter(attrs) {\\n    return new BreakAfter(attrs);\\n  }\\n\\n  static breakBefore(attrs) {\\n    return new BreakBefore(attrs);\\n  }\\n\\n  static button(attrs) {\\n    return new Button(attrs);\\n  }\\n\\n  static calculate(attrs) {\\n    return new Calculate(attrs);\\n  }\\n\\n  static caption(attrs) {\\n    return new Caption(attrs);\\n  }\\n\\n  static certificate(attrs) {\\n    return new Certificate(attrs);\\n  }\\n\\n  static certificates(attrs) {\\n    return new Certificates(attrs);\\n  }\\n\\n  static checkButton(attrs) {\\n    return new CheckButton(attrs);\\n  }\\n\\n  static choiceList(attrs) {\\n    return new ChoiceList(attrs);\\n  }\\n\\n  static color(attrs) {\\n    return new Color(attrs);\\n  }\\n\\n  static comb(attrs) {\\n    return new Comb(attrs);\\n  }\\n\\n  static connect(attrs) {\\n    return new Connect(attrs);\\n  }\\n\\n  static contentArea(attrs) {\\n    return new ContentArea(attrs);\\n  }\\n\\n  static corner(attrs) {\\n    return new Corner(attrs);\\n  }\\n\\n  static date(attrs) {\\n    return new DateElement(attrs);\\n  }\\n\\n  static dateTime(attrs) {\\n    return new DateTime(attrs);\\n  }\\n\\n  static dateTimeEdit(attrs) {\\n    return new DateTimeEdit(attrs);\\n  }\\n\\n  static decimal(attrs) {\\n    return new Decimal(attrs);\\n  }\\n\\n  static defaultUi(attrs) {\\n    return new DefaultUi(attrs);\\n  }\\n\\n  static desc(attrs) {\\n    return new Desc(attrs);\\n  }\\n\\n  static digestMethod(attrs) {\\n    return new DigestMethod(attrs);\\n  }\\n\\n  static digestMethods(attrs) {\\n    return new DigestMethods(attrs);\\n  }\\n\\n  static draw(attrs) {\\n    return new Draw(attrs);\\n  }\\n\\n  static edge(attrs) {\\n    return new Edge(attrs);\\n  }\\n\\n  static encoding(attrs) {\\n    return new Encoding(attrs);\\n  }\\n\\n  static encodings(attrs) {\\n    return new Encodings(attrs);\\n  }\\n\\n  static encrypt(attrs) {\\n    return new Encrypt(attrs);\\n  }\\n\\n  static encryptData(attrs) {\\n    return new EncryptData(attrs);\\n  }\\n\\n  static encryption(attrs) {\\n    return new Encryption(attrs);\\n  }\\n\\n  static encryptionMethod(attrs) {\\n    return new EncryptionMethod(attrs);\\n  }\\n\\n  static encryptionMethods(attrs) {\\n    return new EncryptionMethods(attrs);\\n  }\\n\\n  static event(attrs) {\\n    return new Event(attrs);\\n  }\\n\\n  static exData(attrs) {\\n    return new ExData(attrs);\\n  }\\n\\n  static exObject(attrs) {\\n    return new ExObject(attrs);\\n  }\\n\\n  static exclGroup(attrs) {\\n    return new ExclGroup(attrs);\\n  }\\n\\n  static execute(attrs) {\\n    return new Execute(attrs);\\n  }\\n\\n  static extras(attrs) {\\n    return new Extras(attrs);\\n  }\\n\\n  static field(attrs) {\\n    return new Field(attrs);\\n  }\\n\\n  static fill(attrs) {\\n    return new Fill(attrs);\\n  }\\n\\n  static filter(attrs) {\\n    return new Filter(attrs);\\n  }\\n\\n  static float(attrs) {\\n    return new Float(attrs);\\n  }\\n\\n  static font(attrs) {\\n    return new Font(attrs);\\n  }\\n\\n  static format(attrs) {\\n    return new Format(attrs);\\n  }\\n\\n  static handler(attrs) {\\n    return new Handler(attrs);\\n  }\\n\\n  static hyphenation(attrs) {\\n    return new Hyphenation(attrs);\\n  }\\n\\n  static image(attrs) {\\n    return new Image(attrs);\\n  }\\n\\n  static imageEdit(attrs) {\\n    return new ImageEdit(attrs);\\n  }\\n\\n  static integer(attrs) {\\n    return new Integer(attrs);\\n  }\\n\\n  static issuers(attrs) {\\n    return new Issuers(attrs);\\n  }\\n\\n  static items(attrs) {\\n    return new Items(attrs);\\n  }\\n\\n  static keep(attrs) {\\n    return new Keep(attrs);\\n  }\\n\\n  static keyUsage(attrs) {\\n    return new KeyUsage(attrs);\\n  }\\n\\n  static line(attrs) {\\n    return new Line(attrs);\\n  }\\n\\n  static linear(attrs) {\\n    return new Linear(attrs);\\n  }\\n\\n  static lockDocument(attrs) {\\n    return new LockDocument(attrs);\\n  }\\n\\n  static manifest(attrs) {\\n    return new Manifest(attrs);\\n  }\\n\\n  static margin(attrs) {\\n    return new Margin(attrs);\\n  }\\n\\n  static mdp(attrs) {\\n    return new Mdp(attrs);\\n  }\\n\\n  static medium(attrs) {\\n    return new Medium(attrs);\\n  }\\n\\n  static message(attrs) {\\n    return new Message(attrs);\\n  }\\n\\n  static numericEdit(attrs) {\\n    return new NumericEdit(attrs);\\n  }\\n\\n  static occur(attrs) {\\n    return new Occur(attrs);\\n  }\\n\\n  static oid(attrs) {\\n    return new Oid(attrs);\\n  }\\n\\n  static oids(attrs) {\\n    return new Oids(attrs);\\n  }\\n\\n  static overflow(attrs) {\\n    return new Overflow(attrs);\\n  }\\n\\n  static pageArea(attrs) {\\n    return new PageArea(attrs);\\n  }\\n\\n  static pageSet(attrs) {\\n    return new PageSet(attrs);\\n  }\\n\\n  static para(attrs) {\\n    return new Para(attrs);\\n  }\\n\\n  static passwordEdit(attrs) {\\n    return new PasswordEdit(attrs);\\n  }\\n\\n  static pattern(attrs) {\\n    return new Pattern(attrs);\\n  }\\n\\n  static picture(attrs) {\\n    return new Picture(attrs);\\n  }\\n\\n  static proto(attrs) {\\n    return new Proto(attrs);\\n  }\\n\\n  static radial(attrs) {\\n    return new Radial(attrs);\\n  }\\n\\n  static reason(attrs) {\\n    return new Reason(attrs);\\n  }\\n\\n  static reasons(attrs) {\\n    return new Reasons(attrs);\\n  }\\n\\n  static rectangle(attrs) {\\n    return new Rectangle(attrs);\\n  }\\n\\n  static ref(attrs) {\\n    return new RefElement(attrs);\\n  }\\n\\n  static script(attrs) {\\n    return new Script(attrs);\\n  }\\n\\n  static setProperty(attrs) {\\n    return new SetProperty(attrs);\\n  }\\n\\n  static signData(attrs) {\\n    return new SignData(attrs);\\n  }\\n\\n  static signature(attrs) {\\n    return new Signature(attrs);\\n  }\\n\\n  static signing(attrs) {\\n    return new Signing(attrs);\\n  }\\n\\n  static solid(attrs) {\\n    return new Solid(attrs);\\n  }\\n\\n  static speak(attrs) {\\n    return new Speak(attrs);\\n  }\\n\\n  static stipple(attrs) {\\n    return new Stipple(attrs);\\n  }\\n\\n  static subform(attrs) {\\n    return new Subform(attrs);\\n  }\\n\\n  static subformSet(attrs) {\\n    return new SubformSet(attrs);\\n  }\\n\\n  static subjectDN(attrs) {\\n    return new SubjectDN(attrs);\\n  }\\n\\n  static subjectDNs(attrs) {\\n    return new SubjectDNs(attrs);\\n  }\\n\\n  static submit(attrs) {\\n    return new Submit(attrs);\\n  }\\n\\n  static template(attrs) {\\n    return new Template(attrs);\\n  }\\n\\n  static text(attrs) {\\n    return new Text(attrs);\\n  }\\n\\n  static textEdit(attrs) {\\n    return new TextEdit(attrs);\\n  }\\n\\n  static time(attrs) {\\n    return new Time(attrs);\\n  }\\n\\n  static timeStamp(attrs) {\\n    return new TimeStamp(attrs);\\n  }\\n\\n  static toolTip(attrs) {\\n    return new ToolTip(attrs);\\n  }\\n\\n  static traversal(attrs) {\\n    return new Traversal(attrs);\\n  }\\n\\n  static traverse(attrs) {\\n    return new Traverse(attrs);\\n  }\\n\\n  static ui(attrs) {\\n    return new Ui(attrs);\\n  }\\n\\n  static validate(attrs) {\\n    return new Validate(attrs);\\n  }\\n\\n  static value(attrs) {\\n    return new Value(attrs);\\n  }\\n\\n  static variables(attrs) {\\n    return new Variables(attrs);\\n  }\\n}\\n\\nexport {\\n  BindItems,\\n  Field,\\n  Items,\\n  SetProperty,\\n  Template,\\n  TemplateNamespace,\\n  Text,\\n  Value,\\n};\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  $appendChild,\\n  $clone,\\n  $consumed,\\n  $content,\\n  $data,\\n  $finalize,\\n  $getAttributeIt,\\n  $getChildren,\\n  $getDataValue,\\n  $getParent,\\n  $getRealChildrenByNameIt,\\n  $hasSettableValue,\\n  $indexOf,\\n  $insertAt,\\n  $isBindable,\\n  $isDataValue,\\n  $isDescendent,\\n  $namespaceId,\\n  $nodeName,\\n  $removeChild,\\n  $setValue,\\n  $text,\\n} from \\\".\u002Fsymbol_utils.js\\\";\\nimport { BindItems, Field, Items, SetProperty, Text } from \\\".\u002Ftemplate.js\\\";\\nimport { createDataNode, searchNode } from \\\".\u002Fsom.js\\\";\\nimport { XFAAttribute, XFAObjectArray, XmlObject } from \\\".\u002Fxfa_object.js\\\";\\nimport { NamespaceIds } from \\\".\u002Fnamespaces.js\\\";\\nimport { warn } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\n\\nconst NS_DATASETS = NamespaceIds.datasets.id;\\n\\nfunction createText(content) {\\n  const node = new Text({});\\n  node[$content] = content;\\n  return node;\\n}\\n\\nclass Binder {\\n  constructor(root) {\\n    this.root = root;\\n    this.datasets = root.datasets;\\n    this.data =\\n      root.datasets?.data || new XmlObject(NamespaceIds.datasets.id, \\\"data\\\");\\n    this.emptyMerge = this.data[$getChildren]().length === 0;\\n\\n    this.root.form = this.form = root.template[$clone]();\\n  }\\n\\n  _isConsumeData() {\\n    return !this.emptyMerge && this._mergeMode;\\n  }\\n\\n  _isMatchTemplate() {\\n    return !this._isConsumeData();\\n  }\\n\\n  bind() {\\n    this._bindElement(this.form, this.data);\\n    return this.form;\\n  }\\n\\n  getData() {\\n    return this.data;\\n  }\\n\\n  _bindValue(formNode, data, picture) {\\n    \u002F\u002F Nodes must have the same \\\"type\\\": container or value.\\n    \u002F\u002F Here we make the link between form node and\\n    \u002F\u002F data node (through $data property): we'll use it\\n    \u002F\u002F to save form data.\\n\\n    formNode[$data] = data;\\n    if (formNode[$hasSettableValue]()) {\\n      if (data[$isDataValue]()) {\\n        const value = data[$getDataValue]();\\n        \u002F\u002F TODO: use picture.\\n        formNode[$setValue](createText(value));\\n      } else if (\\n        formNode instanceof Field &&\\n        formNode.ui?.choiceList?.open === \\\"multiSelect\\\"\\n      ) {\\n        const value = data[$getChildren]()\\n          .map(child => child[$content].trim())\\n          .join(\\\"\\\\n\\\");\\n        formNode[$setValue](createText(value));\\n      } else if (this._isConsumeData()) {\\n        warn(`XFA - Nodes haven't the same type.`);\\n      }\\n    } else if (!data[$isDataValue]() || this._isMatchTemplate()) {\\n      this._bindElement(formNode, data);\\n    } else {\\n      warn(`XFA - Nodes haven't the same type.`);\\n    }\\n  }\\n\\n  _findDataByNameToConsume(name, isValue, dataNode, global) {\\n    if (!name) {\\n      return null;\\n    }\\n\\n    \u002F\u002F Firstly, we try to find a node with the given name:\\n    \u002F\u002F  - in dataNode;\\n    \u002F\u002F  - if not found, then in parent;\\n    \u002F\u002F  - and if not in found, then in grand-parent.\\n    let generator, match;\\n    for (let i = 0; i \u003C 3; i++) {\\n      generator = dataNode[$getRealChildrenByNameIt](\\n        name,\\n        \u002F* allTransparent = *\u002F false,\\n        \u002F* skipConsumed = *\u002F true\\n      );\\n      \u002F\u002F Try to find a match of the same kind.\\n      while (true) {\\n        match = generator.next().value;\\n        if (!match) {\\n          break;\\n        }\\n\\n        if (isValue === match[$isDataValue]()) {\\n          return match;\\n        }\\n      }\\n      if (\\n        dataNode[$namespaceId] === NamespaceIds.datasets.id &&\\n        dataNode[$nodeName] === \\\"data\\\"\\n      ) {\\n        break;\\n      }\\n      dataNode = dataNode[$getParent]();\\n    }\\n\\n    if (!global) {\\n      return null;\\n    }\\n\\n    \u002F\u002F Secondly, if global try to find it just under the root of datasets\\n    \u002F\u002F (which is the location of global variables).\\n    generator = this.data[$getRealChildrenByNameIt](\\n      name,\\n      \u002F* allTransparent = *\u002F true,\\n      \u002F* skipConsumed = *\u002F false\\n    );\\n\\n    match = generator.next().value;\\n    if (match) {\\n      return match;\\n    }\\n\\n    \u002F\u002F Thirdly, try to find it in attributes.\\n    generator = this.data[$getAttributeIt](name, \u002F* skipConsumed = *\u002F true);\\n    match = generator.next().value;\\n    if (match?.[$isDataValue]()) {\\n      return match;\\n    }\\n\\n    return null;\\n  }\\n\\n  _setProperties(formNode, dataNode) {\\n    \u002F\u002F For example:\\n    \u002F\u002F \u003Cfield name=\\\"LastName\\\" ...>\\n    \u002F\u002F   \u003CsetProperty ref=\\\"$data.Main.Style.NameFont\\\" target=\\\"font.typeface\\\"\u002F>\\n    \u002F\u002F   \u003CsetProperty ref=\\\"$data.Main.Style.NameSize\\\" target=\\\"font.size\\\"\u002F>\\n    \u002F\u002F   \u003CsetProperty ref=\\\"$data.Main.Help.LastName\\\" target=\\\"assist.toolTip\\\"\u002F>\\n    \u002F\u002F \u003C\u002Ffield>\\n\\n    if (!formNode.hasOwnProperty(\\\"setProperty\\\")) {\\n      return;\\n    }\\n\\n    for (const { ref, target, connection } of formNode.setProperty.children) {\\n      if (connection) {\\n        \u002F\u002F TODO: evaluate if we should implement this feature.\\n        \u002F\u002F Skip for security reasons.\\n        continue;\\n      }\\n      if (!ref) {\\n        continue;\\n      }\\n\\n      const nodes = searchNode(\\n        this.root,\\n        dataNode,\\n        ref,\\n        false \u002F* = dotDotAllowed *\u002F,\\n        false \u002F* = useCache *\u002F\\n      );\\n      if (!nodes) {\\n        warn(`XFA - Invalid reference: ${ref}.`);\\n        continue;\\n      }\\n      const [node] = nodes;\\n\\n      if (!node[$isDescendent](this.data)) {\\n        warn(`XFA - Invalid node: must be a data node.`);\\n        continue;\\n      }\\n\\n      const targetNodes = searchNode(\\n        this.root,\\n        formNode,\\n        target,\\n        false \u002F* = dotDotAllowed *\u002F,\\n        false \u002F* = useCache *\u002F\\n      );\\n      if (!targetNodes) {\\n        warn(`XFA - Invalid target: ${target}.`);\\n        continue;\\n      }\\n      const [targetNode] = targetNodes;\\n\\n      if (!targetNode[$isDescendent](formNode)) {\\n        warn(`XFA - Invalid target: must be a property or subproperty.`);\\n        continue;\\n      }\\n\\n      const targetParent = targetNode[$getParent]();\\n      if (\\n        targetNode instanceof SetProperty ||\\n        targetParent instanceof SetProperty\\n      ) {\\n        warn(\\n          `XFA - Invalid target: cannot be a setProperty or one of its properties.`\\n        );\\n        continue;\\n      }\\n\\n      if (\\n        targetNode instanceof BindItems ||\\n        targetParent instanceof BindItems\\n      ) {\\n        warn(\\n          `XFA - Invalid target: cannot be a bindItems or one of its properties.`\\n        );\\n        continue;\\n      }\\n\\n      const content = node[$text]();\\n      const name = targetNode[$nodeName];\\n\\n      if (targetNode instanceof XFAAttribute) {\\n        const attrs = Object.create(null);\\n        attrs[name] = content;\\n        const obj = Reflect.construct(\\n          Object.getPrototypeOf(targetParent).constructor,\\n          [attrs]\\n        );\\n        targetParent[name] = obj[name];\\n        continue;\\n      }\\n\\n      if (!targetNode.hasOwnProperty($content)) {\\n        warn(`XFA - Invalid node to use in setProperty`);\\n        continue;\\n      }\\n\\n      targetNode[$data] = node;\\n      targetNode[$content] = content;\\n      targetNode[$finalize]();\\n    }\\n  }\\n\\n  _bindItems(formNode, dataNode) {\\n    \u002F\u002F For example:\\n    \u002F\u002F \u003Cfield name=\\\"CardName\\\"...>\\n    \u002F\u002F   \u003CbindItems ref=\\\"$data.main.ccs.cc[*]\\\" labelRef=\\\"uiname\\\"\\n    \u002F\u002F              valueRef=\\\"token\\\"\u002F>\\n    \u002F\u002F   \u003Cui>\u003CchoiceList\u002F>\u003C\u002Fui>\\n    \u002F\u002F \u003C\u002Ffield>\\n\\n    if (\\n      !formNode.hasOwnProperty(\\\"items\\\") ||\\n      !formNode.hasOwnProperty(\\\"bindItems\\\") ||\\n      formNode.bindItems.isEmpty()\\n    ) {\\n      return;\\n    }\\n\\n    for (const item of formNode.items.children) {\\n      formNode[$removeChild](item);\\n    }\\n\\n    formNode.items.clear();\\n\\n    const labels = new Items({});\\n    const values = new Items({});\\n\\n    formNode[$appendChild](labels);\\n    formNode.items.push(labels);\\n\\n    formNode[$appendChild](values);\\n    formNode.items.push(values);\\n\\n    for (const { ref, labelRef, valueRef, connection } of formNode.bindItems\\n      .children) {\\n      if (connection) {\\n        \u002F\u002F TODO: evaluate if we should implement this feature.\\n        \u002F\u002F Skip for security reasons.\\n        continue;\\n      }\\n      if (!ref) {\\n        continue;\\n      }\\n\\n      const nodes = searchNode(\\n        this.root,\\n        dataNode,\\n        ref,\\n        false \u002F* = dotDotAllowed *\u002F,\\n        false \u002F* = useCache *\u002F\\n      );\\n      if (!nodes) {\\n        warn(`XFA - Invalid reference: ${ref}.`);\\n        continue;\\n      }\\n      for (const node of nodes) {\\n        if (!node[$isDescendent](this.datasets)) {\\n          warn(`XFA - Invalid ref (${ref}): must be a datasets child.`);\\n          continue;\\n        }\\n\\n        const labelNodes = searchNode(\\n          this.root,\\n          node,\\n          labelRef,\\n          true \u002F* = dotDotAllowed *\u002F,\\n          false \u002F* = useCache *\u002F\\n        );\\n        if (!labelNodes) {\\n          warn(`XFA - Invalid label: ${labelRef}.`);\\n          continue;\\n        }\\n        const [labelNode] = labelNodes;\\n\\n        if (!labelNode[$isDescendent](this.datasets)) {\\n          warn(`XFA - Invalid label: must be a datasets child.`);\\n          continue;\\n        }\\n\\n        const valueNodes = searchNode(\\n          this.root,\\n          node,\\n          valueRef,\\n          true \u002F* = dotDotAllowed *\u002F,\\n          false \u002F* = useCache *\u002F\\n        );\\n        if (!valueNodes) {\\n          warn(`XFA - Invalid value: ${valueRef}.`);\\n          continue;\\n        }\\n        const [valueNode] = valueNodes;\\n\\n        if (!valueNode[$isDescendent](this.datasets)) {\\n          warn(`XFA - Invalid value: must be a datasets child.`);\\n          continue;\\n        }\\n\\n        const label = createText(labelNode[$text]());\\n        const value = createText(valueNode[$text]());\\n\\n        labels[$appendChild](label);\\n        labels.text.push(label);\\n\\n        values[$appendChild](value);\\n        values.text.push(value);\\n      }\\n    }\\n  }\\n\\n  _bindOccurrences(formNode, matches, picture) {\\n    \u002F\u002F Insert nodes which are not in the template but reflect\\n    \u002F\u002F what we've in data tree.\\n\\n    let baseClone;\\n    if (matches.length > 1) {\\n      \u002F\u002F Clone before binding to avoid bad state.\\n      baseClone = formNode[$clone]();\\n      baseClone[$removeChild](baseClone.occur);\\n      baseClone.occur = null;\\n    }\\n\\n    this._bindValue(formNode, matches[0], picture);\\n    this._setProperties(formNode, matches[0]);\\n    this._bindItems(formNode, matches[0]);\\n\\n    if (matches.length === 1) {\\n      return;\\n    }\\n\\n    const parent = formNode[$getParent]();\\n    const name = formNode[$nodeName];\\n    const pos = parent[$indexOf](formNode);\\n\\n    for (let i = 1, ii = matches.length; i \u003C ii; i++) {\\n      const match = matches[i];\\n      const clone = baseClone[$clone]();\\n      parent[name].push(clone);\\n      parent[$insertAt](pos + i, clone);\\n\\n      this._bindValue(clone, match, picture);\\n      this._setProperties(clone, match);\\n      this._bindItems(clone, match);\\n    }\\n  }\\n\\n  _createOccurrences(formNode) {\\n    if (!this.emptyMerge) {\\n      return;\\n    }\\n\\n    const { occur } = formNode;\\n    if (!occur || occur.initial \u003C= 1) {\\n      return;\\n    }\\n\\n    const parent = formNode[$getParent]();\\n    const name = formNode[$nodeName];\\n\\n    if (!(parent[name] instanceof XFAObjectArray)) {\\n      return;\\n    }\\n\\n    let currentNumber;\\n    if (formNode.name) {\\n      currentNumber = parent[name].children.filter(\\n        e => e.name === formNode.name\\n      ).length;\\n    } else {\\n      currentNumber = parent[name].children.length;\\n    }\\n\\n    const pos = parent[$indexOf](formNode) + 1;\\n    const ii = occur.initial - currentNumber;\\n    if (ii) {\\n      const nodeClone = formNode[$clone]();\\n      nodeClone[$removeChild](nodeClone.occur);\\n      nodeClone.occur = null;\\n      parent[name].push(nodeClone);\\n      parent[$insertAt](pos, nodeClone);\\n\\n      for (let i = 1; i \u003C ii; i++) {\\n        const clone = nodeClone[$clone]();\\n        parent[name].push(clone);\\n        parent[$insertAt](pos + i, clone);\\n      }\\n    }\\n  }\\n\\n  _getOccurInfo(formNode) {\\n    const { name, occur } = formNode;\\n    if (!occur || !name) {\\n      return [1, 1];\\n    }\\n    const max = occur.max === -1 ? Infinity : occur.max;\\n    return [occur.min, max];\\n  }\\n\\n  _setAndBind(formNode, dataNode) {\\n    this._setProperties(formNode, dataNode);\\n    this._bindItems(formNode, dataNode);\\n    this._bindElement(formNode, dataNode);\\n  }\\n\\n  _bindElement(formNode, dataNode) {\\n    \u002F\u002F Some nodes can be useless because min=0 so remove them\\n    \u002F\u002F after the loop to avoid bad things.\\n\\n    const uselessNodes = [];\\n\\n    this._createOccurrences(formNode);\\n\\n    for (const child of formNode[$getChildren]()) {\\n      if (child[$data]) {\\n        \u002F\u002F Already bound.\\n        continue;\\n      }\\n\\n      if (this._mergeMode === undefined && child[$nodeName] === \\\"subform\\\") {\\n        this._mergeMode = child.mergeMode === \\\"consumeData\\\";\\n\\n        \u002F\u002F XFA specs p. 182:\\n        \u002F\u002F The highest-level subform and the data node representing\\n        \u002F\u002F the current record are special; they are always\\n        \u002F\u002F bound even if their names don't match.\\n        const dataChildren = dataNode[$getChildren]();\\n        if (dataChildren.length > 0) {\\n          this._bindOccurrences(child, [dataChildren[0]], null);\\n        } else if (this.emptyMerge) {\\n          const nsId =\\n            dataNode[$namespaceId] === NS_DATASETS\\n              ? -1\\n              : dataNode[$namespaceId];\\n          const dataChild = (child[$data] = new XmlObject(\\n            nsId,\\n            child.name || \\\"root\\\"\\n          ));\\n          dataNode[$appendChild](dataChild);\\n          this._bindElement(child, dataChild);\\n        }\\n        continue;\\n      }\\n\\n      if (!child[$isBindable]()) {\\n        \u002F\u002F The node cannot contain some new data so there is nothing\\n        \u002F\u002F to create in the data node.\\n        continue;\\n      }\\n\\n      let global = false;\\n      let picture = null;\\n      let ref = null;\\n      let match = null;\\n      if (child.bind) {\\n        switch (child.bind.match) {\\n          case \\\"none\\\":\\n            this._setAndBind(child, dataNode);\\n            continue;\\n          case \\\"global\\\":\\n            global = true;\\n            break;\\n          case \\\"dataRef\\\":\\n            if (!child.bind.ref) {\\n              warn(`XFA - ref is empty in node ${child[$nodeName]}.`);\\n              this._setAndBind(child, dataNode);\\n              continue;\\n            }\\n            ref = child.bind.ref;\\n            break;\\n          default:\\n            break;\\n        }\\n        if (child.bind.picture) {\\n          picture = child.bind.picture[$content];\\n        }\\n      }\\n\\n      const [min, max] = this._getOccurInfo(child);\\n\\n      if (ref) {\\n        \u002F\u002F Don't use a cache for searching: nodes can change during binding.\\n        match = searchNode(\\n          this.root,\\n          dataNode,\\n          ref,\\n          true \u002F* = dotDotAllowed *\u002F,\\n          false \u002F* = useCache *\u002F\\n        );\\n        if (match === null) {\\n          \u002F\u002F Nothing found: we must create some nodes in data in order\\n          \u002F\u002F to have something to match with the given expression.\\n          \u002F\u002F See http:\u002F\u002Fciteseerx.ist.psu.edu\u002Fviewdoc\u002Fdownload?doi=10.1.1.364.2157&rep=rep1&type=pdf#page=199\\n          match = createDataNode(this.data, dataNode, ref);\\n          if (!match) {\\n            \u002F\u002F For example if the node contains a .(...) then it isn't\\n            \u002F\u002F findable.\\n            \u002F\u002F TODO: remove this when .(...) is implemented.\\n            continue;\\n          }\\n          if (this._isConsumeData()) {\\n            match[$consumed] = true;\\n          }\\n\\n          \u002F\u002F Don't bind the value in newly created node because it's empty.\\n          this._setAndBind(child, match);\\n          continue;\\n        } else {\\n          if (this._isConsumeData()) {\\n            \u002F\u002F Filter out consumed nodes.\\n            match = match.filter(node => !node[$consumed]);\\n          }\\n          if (match.length > max) {\\n            match = match.slice(0, max);\\n          } else if (match.length === 0) {\\n            match = null;\\n          }\\n          if (match && this._isConsumeData()) {\\n            match.forEach(node => {\\n              node[$consumed] = true;\\n            });\\n          }\\n        }\\n      } else {\\n        if (!child.name) {\\n          this._setAndBind(child, dataNode);\\n          continue;\\n        }\\n        if (this._isConsumeData()) {\\n          \u002F\u002F In consumeData mode, search for the next node with the given name.\\n          \u002F\u002F occurs.max gives us the max number of node to match.\\n          const matches = [];\\n          while (matches.length \u003C max) {\\n            const found = this._findDataByNameToConsume(\\n              child.name,\\n              child[$hasSettableValue](),\\n              dataNode,\\n              global\\n            );\\n\\n            if (!found) {\\n              break;\\n            }\\n            found[$consumed] = true;\\n            matches.push(found);\\n          }\\n          match = matches.length > 0 ? matches : null;\\n        } else {\\n          \u002F\u002F If we've an empty merge, there are no reason\\n          \u002F\u002F to make multiple bind so skip consumed nodes.\\n          match = dataNode[$getRealChildrenByNameIt](\\n            child.name,\\n            \u002F* allTransparent = *\u002F false,\\n            \u002F* skipConsumed = *\u002F this.emptyMerge\\n          ).next().value;\\n          if (!match) {\\n            \u002F\u002F If there is no match (no data) and `min === 0` then\\n            \u002F\u002F the container is entirely excluded.\\n            \u002F\u002F https:\u002F\u002Fwww.pdfa.org\u002Fnorm-refs\u002FXFA-3_3.pdf#G12.1428332\\n            if (min === 0) {\\n              uselessNodes.push(child);\\n              continue;\\n            }\\n            \u002F\u002F We're in matchTemplate mode so create a node in data to reflect\\n            \u002F\u002F what we've in template.\\n            const nsId =\\n              dataNode[$namespaceId] === NS_DATASETS\\n                ? -1\\n                : dataNode[$namespaceId];\\n            match = child[$data] = new XmlObject(nsId, child.name);\\n            if (this.emptyMerge) {\\n              match[$consumed] = true;\\n            }\\n            dataNode[$appendChild](match);\\n\\n            \u002F\u002F Don't bind the value in newly created node because it's empty.\\n            this._setAndBind(child, match);\\n            continue;\\n          }\\n          if (this.emptyMerge) {\\n            match[$consumed] = true;\\n          }\\n          match = [match];\\n        }\\n      }\\n\\n      if (match) {\\n        this._bindOccurrences(child, match, picture);\\n      } else if (min > 0) {\\n        this._setAndBind(child, dataNode);\\n      } else {\\n        uselessNodes.push(child);\\n      }\\n    }\\n\\n    uselessNodes.forEach(node => node[$getParent]()[$removeChild](node));\\n  }\\n}\\n\\nexport { Binder };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  $getAttributes,\\n  $getChildren,\\n  $nodeName,\\n  $setValue,\\n  $toString,\\n  $uid,\\n} from \\\".\u002Fsymbol_utils.js\\\";\\n\\nclass DataHandler {\\n  constructor(root, data) {\\n    this.data = data;\\n    this.dataset = root.datasets || null;\\n  }\\n\\n  serialize(storage) {\\n    const stack = [[-1, this.data[$getChildren]()]];\\n\\n    while (stack.length > 0) {\\n      const last = stack.at(-1);\\n      const [i, children] = last;\\n      if (i + 1 === children.length) {\\n        stack.pop();\\n        continue;\\n      }\\n\\n      const child = children[++last[0]];\\n      const storageEntry = storage.get(child[$uid]);\\n      if (storageEntry) {\\n        child[$setValue](storageEntry);\\n      } else {\\n        const attributes = child[$getAttributes]();\\n        for (const value of attributes.values()) {\\n          const entry = storage.get(value[$uid]);\\n          if (entry) {\\n            value[$setValue](entry);\\n            break;\\n          }\\n        }\\n      }\\n\\n      const nodes = child[$getChildren]();\\n      if (nodes.length > 0) {\\n        stack.push([-1, nodes]);\\n      }\\n    }\\n\\n    const buf = [\\n      `\u003Cxfa:datasets xmlns:xfa=\\\"http:\u002F\u002Fwww.xfa.org\u002Fschema\u002Fxfa-data\u002F1.0\u002F\\\">`,\\n    ];\\n    if (this.dataset) {\\n      \u002F\u002F Dump nodes other than data: they can contains for example\\n      \u002F\u002F some data for choice lists.\\n      for (const child of this.dataset[$getChildren]()) {\\n        if (child[$nodeName] !== \\\"data\\\") {\\n          child[$toString](buf);\\n        }\\n      }\\n    }\\n    this.data[$toString](buf);\\n    buf.push(\\\"\u003C\u002Fxfa:datasets>\\\");\\n\\n    return buf.join(\\\"\\\");\\n  }\\n}\\n\\nexport { DataHandler };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { $buildXFAObject, NamespaceIds } from \\\".\u002Fnamespaces.js\\\";\\nimport { $content, $finalize } from \\\".\u002Fsymbol_utils.js\\\";\\nimport {\\n  ContentObject,\\n  IntegerObject,\\n  Option01,\\n  Option10,\\n  OptionObject,\\n  StringObject,\\n  XFAObject,\\n  XFAObjectArray,\\n} from \\\".\u002Fxfa_object.js\\\";\\nimport { getInteger, getStringOption } from \\\".\u002Futils.js\\\";\\nimport { shadow, warn } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\n\\nconst CONFIG_NS_ID = NamespaceIds.config.id;\\n\\nclass Acrobat extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"acrobat\\\", \u002F* hasChildren = *\u002F true);\\n    this.acrobat7 = null;\\n    this.autoSave = null;\\n    this.common = null;\\n    this.validate = null;\\n    this.validateApprovalSignatures = null;\\n    this.submitUrl = new XFAObjectArray();\\n  }\\n}\\n\\nclass Acrobat7 extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"acrobat7\\\", \u002F* hasChildren = *\u002F true);\\n    this.dynamicRender = null;\\n  }\\n}\\n\\nclass ADBE_JSConsole extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"ADBE_JSConsole\\\", [\\\"delegate\\\", \\\"Enable\\\", \\\"Disable\\\"]);\\n  }\\n}\\n\\nclass ADBE_JSDebugger extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"ADBE_JSDebugger\\\", [\\\"delegate\\\", \\\"Enable\\\", \\\"Disable\\\"]);\\n  }\\n}\\n\\nclass AddSilentPrint extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"addSilentPrint\\\");\\n  }\\n}\\n\\nclass AddViewerPreferences extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"addViewerPreferences\\\");\\n  }\\n}\\n\\nclass AdjustData extends Option10 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"adjustData\\\");\\n  }\\n}\\n\\nclass AdobeExtensionLevel extends IntegerObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"adobeExtensionLevel\\\", 0, n => n >= 1 && n \u003C= 8);\\n  }\\n}\\n\\nclass Agent extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"agent\\\", \u002F* hasChildren = *\u002F true);\\n    this.name = attributes.name ? attributes.name.trim() : \\\"\\\";\\n    this.common = new XFAObjectArray();\\n  }\\n}\\n\\nclass AlwaysEmbed extends ContentObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"alwaysEmbed\\\");\\n  }\\n}\\n\\nclass Amd extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"amd\\\");\\n  }\\n}\\n\\nclass Area extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"area\\\");\\n    this.level = getInteger({\\n      data: attributes.level,\\n      defaultValue: 0,\\n      validate: n => n >= 1 && n \u003C= 3,\\n    });\\n    this.name = getStringOption(attributes.name, [\\n      \\\"\\\",\\n      \\\"barcode\\\",\\n      \\\"coreinit\\\",\\n      \\\"deviceDriver\\\",\\n      \\\"font\\\",\\n      \\\"general\\\",\\n      \\\"layout\\\",\\n      \\\"merge\\\",\\n      \\\"script\\\",\\n      \\\"signature\\\",\\n      \\\"sourceSet\\\",\\n      \\\"templateCache\\\",\\n    ]);\\n  }\\n}\\n\\nclass Attributes extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"attributes\\\", [\\\"preserve\\\", \\\"delegate\\\", \\\"ignore\\\"]);\\n  }\\n}\\n\\nclass AutoSave extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"autoSave\\\", [\\\"disabled\\\", \\\"enabled\\\"]);\\n  }\\n}\\n\\nclass Base extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"base\\\");\\n  }\\n}\\n\\nclass BatchOutput extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"batchOutput\\\");\\n    this.format = getStringOption(attributes.format, [\\n      \\\"none\\\",\\n      \\\"concat\\\",\\n      \\\"zip\\\",\\n      \\\"zipCompress\\\",\\n    ]);\\n  }\\n}\\n\\nclass BehaviorOverride extends ContentObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"behaviorOverride\\\");\\n  }\\n\\n  [$finalize]() {\\n    this[$content] = new Map(\\n      this[$content]\\n        .trim()\\n        .split(\u002F\\\\s+\u002F)\\n        .filter(x => x.includes(\\\":\\\"))\\n        .map(x => x.split(\\\":\\\", 2))\\n    );\\n  }\\n}\\n\\nclass Cache extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"cache\\\", \u002F* hasChildren = *\u002F true);\\n    this.templateCache = null;\\n  }\\n}\\n\\nclass Change extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"change\\\");\\n  }\\n}\\n\\nclass Common extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"common\\\", \u002F* hasChildren = *\u002F true);\\n    this.data = null;\\n    this.locale = null;\\n    this.localeSet = null;\\n    this.messaging = null;\\n    this.suppressBanner = null;\\n    this.template = null;\\n    this.validationMessaging = null;\\n    this.versionControl = null;\\n    this.log = new XFAObjectArray();\\n  }\\n}\\n\\nclass Compress extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"compress\\\");\\n    this.scope = getStringOption(attributes.scope, [\\\"imageOnly\\\", \\\"document\\\"]);\\n  }\\n}\\n\\nclass CompressLogicalStructure extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"compressLogicalStructure\\\");\\n  }\\n}\\n\\nclass CompressObjectStream extends Option10 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"compressObjectStream\\\");\\n  }\\n}\\n\\nclass Compression extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"compression\\\", \u002F* hasChildren = *\u002F true);\\n    this.compressLogicalStructure = null;\\n    this.compressObjectStream = null;\\n    this.level = null;\\n    this.type = null;\\n  }\\n}\\n\\nclass Config extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"config\\\", \u002F* hasChildren = *\u002F true);\\n    this.acrobat = null;\\n    this.present = null;\\n    this.trace = null;\\n    this.agent = new XFAObjectArray();\\n  }\\n}\\n\\nclass Conformance extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"conformance\\\", [\\\"A\\\", \\\"B\\\"]);\\n  }\\n}\\n\\nclass ContentCopy extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"contentCopy\\\");\\n  }\\n}\\n\\nclass Copies extends IntegerObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"copies\\\", 1, n => n >= 1);\\n  }\\n}\\n\\nclass Creator extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"creator\\\");\\n  }\\n}\\n\\nclass CurrentPage extends IntegerObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"currentPage\\\", 0, n => n >= 0);\\n  }\\n}\\n\\nclass Data extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"data\\\", \u002F* hasChildren = *\u002F true);\\n    this.adjustData = null;\\n    this.attributes = null;\\n    this.incrementalLoad = null;\\n    this.outputXSL = null;\\n    this.range = null;\\n    this.record = null;\\n    this.startNode = null;\\n    this.uri = null;\\n    this.window = null;\\n    this.xsl = null;\\n    this.excludeNS = new XFAObjectArray();\\n    this.transform = new XFAObjectArray();\\n  }\\n}\\n\\nclass Debug extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"debug\\\", \u002F* hasChildren = *\u002F true);\\n    this.uri = null;\\n  }\\n}\\n\\nclass DefaultTypeface extends ContentObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"defaultTypeface\\\");\\n    this.writingScript = getStringOption(attributes.writingScript, [\\n      \\\"*\\\",\\n      \\\"Arabic\\\",\\n      \\\"Cyrillic\\\",\\n      \\\"EastEuropeanRoman\\\",\\n      \\\"Greek\\\",\\n      \\\"Hebrew\\\",\\n      \\\"Japanese\\\",\\n      \\\"Korean\\\",\\n      \\\"Roman\\\",\\n      \\\"SimplifiedChinese\\\",\\n      \\\"Thai\\\",\\n      \\\"TraditionalChinese\\\",\\n      \\\"Vietnamese\\\",\\n    ]);\\n  }\\n}\\n\\nclass Destination extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"destination\\\", [\\n      \\\"pdf\\\",\\n      \\\"pcl\\\",\\n      \\\"ps\\\",\\n      \\\"webClient\\\",\\n      \\\"zpl\\\",\\n    ]);\\n  }\\n}\\n\\nclass DocumentAssembly extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"documentAssembly\\\");\\n  }\\n}\\n\\nclass Driver extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"driver\\\", \u002F* hasChildren = *\u002F true);\\n    this.name = attributes.name ? attributes.name.trim() : \\\"\\\";\\n    this.fontInfo = null;\\n    this.xdc = null;\\n  }\\n}\\n\\nclass DuplexOption extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"duplexOption\\\", [\\n      \\\"simplex\\\",\\n      \\\"duplexFlipLongEdge\\\",\\n      \\\"duplexFlipShortEdge\\\",\\n    ]);\\n  }\\n}\\n\\nclass DynamicRender extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"dynamicRender\\\", [\\\"forbidden\\\", \\\"required\\\"]);\\n  }\\n}\\n\\nclass Embed extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"embed\\\");\\n  }\\n}\\n\\nclass Encrypt extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"encrypt\\\");\\n  }\\n}\\n\\nclass Encryption extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"encryption\\\", \u002F* hasChildren = *\u002F true);\\n    this.encrypt = null;\\n    this.encryptionLevel = null;\\n    this.permissions = null;\\n  }\\n}\\n\\nclass EncryptionLevel extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"encryptionLevel\\\", [\\\"40bit\\\", \\\"128bit\\\"]);\\n  }\\n}\\n\\nclass Enforce extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"enforce\\\");\\n  }\\n}\\n\\nclass Equate extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"equate\\\");\\n\\n    this.force = getInteger({\\n      data: attributes.force,\\n      defaultValue: 1,\\n      validate: n => n === 0,\\n    });\\n\\n    this.from = attributes.from || \\\"\\\";\\n    this.to = attributes.to || \\\"\\\";\\n  }\\n}\\n\\nclass EquateRange extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"equateRange\\\");\\n\\n    this.from = attributes.from || \\\"\\\";\\n    this.to = attributes.to || \\\"\\\";\\n    this._unicodeRange = attributes.unicodeRange || \\\"\\\";\\n  }\\n\\n  get unicodeRange() {\\n    const ranges = [];\\n    const unicodeRegex = \u002FU\\\\+([0-9a-fA-F]+)\u002F;\\n    const unicodeRange = this._unicodeRange;\\n    for (let range of unicodeRange\\n      .split(\\\",\\\")\\n      .map(x => x.trim())\\n      .filter(x => !!x)) {\\n      range = range.split(\\\"-\\\", 2).map(x => {\\n        const found = x.match(unicodeRegex);\\n        if (!found) {\\n          return 0;\\n        }\\n        return parseInt(found[1], 16);\\n      });\\n      if (range.length === 1) {\\n        range.push(range[0]);\\n      }\\n      ranges.push(range);\\n    }\\n    return shadow(this, \\\"unicodeRange\\\", ranges);\\n  }\\n}\\n\\nclass Exclude extends ContentObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"exclude\\\");\\n  }\\n\\n  [$finalize]() {\\n    this[$content] = this[$content]\\n      .trim()\\n      .split(\u002F\\\\s+\u002F)\\n      .filter(\\n        x =>\\n          x &&\\n          [\\n            \\\"calculate\\\",\\n            \\\"close\\\",\\n            \\\"enter\\\",\\n            \\\"exit\\\",\\n            \\\"initialize\\\",\\n            \\\"ready\\\",\\n            \\\"validate\\\",\\n          ].includes(x)\\n      );\\n  }\\n}\\n\\nclass ExcludeNS extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"excludeNS\\\");\\n  }\\n}\\n\\nclass FlipLabel extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"flipLabel\\\", [\\\"usePrinterSetting\\\", \\\"on\\\", \\\"off\\\"]);\\n  }\\n}\\n\\nclass FontInfo extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"fontInfo\\\", \u002F* hasChildren = *\u002F true);\\n    this.embed = null;\\n    this.map = null;\\n    this.subsetBelow = null;\\n    this.alwaysEmbed = new XFAObjectArray();\\n    this.defaultTypeface = new XFAObjectArray();\\n    this.neverEmbed = new XFAObjectArray();\\n  }\\n}\\n\\nclass FormFieldFilling extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"formFieldFilling\\\");\\n  }\\n}\\n\\nclass GroupParent extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"groupParent\\\");\\n  }\\n}\\n\\nclass IfEmpty extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"ifEmpty\\\", [\\n      \\\"dataValue\\\",\\n      \\\"dataGroup\\\",\\n      \\\"ignore\\\",\\n      \\\"remove\\\",\\n    ]);\\n  }\\n}\\n\\nclass IncludeXDPContent extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"includeXDPContent\\\");\\n  }\\n}\\n\\nclass IncrementalLoad extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"incrementalLoad\\\", [\\\"none\\\", \\\"forwardOnly\\\"]);\\n  }\\n}\\n\\nclass IncrementalMerge extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"incrementalMerge\\\");\\n  }\\n}\\n\\nclass Interactive extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"interactive\\\");\\n  }\\n}\\n\\nclass Jog extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"jog\\\", [\\\"usePrinterSetting\\\", \\\"none\\\", \\\"pageSet\\\"]);\\n  }\\n}\\n\\nclass LabelPrinter extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"labelPrinter\\\", \u002F* hasChildren = *\u002F true);\\n    this.name = getStringOption(attributes.name, [\\\"zpl\\\", \\\"dpl\\\", \\\"ipl\\\", \\\"tcpl\\\"]);\\n    this.batchOutput = null;\\n    this.flipLabel = null;\\n    this.fontInfo = null;\\n    this.xdc = null;\\n  }\\n}\\n\\nclass Layout extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"layout\\\", [\\\"paginate\\\", \\\"panel\\\"]);\\n  }\\n}\\n\\nclass Level extends IntegerObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"level\\\", 0, n => n > 0);\\n  }\\n}\\n\\nclass Linearized extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"linearized\\\");\\n  }\\n}\\n\\nclass Locale extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"locale\\\");\\n  }\\n}\\n\\nclass LocaleSet extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"localeSet\\\");\\n  }\\n}\\n\\nclass Log extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"log\\\", \u002F* hasChildren = *\u002F true);\\n    this.mode = null;\\n    this.threshold = null;\\n    this.to = null;\\n    this.uri = null;\\n  }\\n}\\n\\n\u002F\u002F Renamed in MapElement to avoid confusion with usual js Map.\\nclass MapElement extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"map\\\", \u002F* hasChildren = *\u002F true);\\n    this.equate = new XFAObjectArray();\\n    this.equateRange = new XFAObjectArray();\\n  }\\n}\\n\\nclass MediumInfo extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"mediumInfo\\\", \u002F* hasChildren = *\u002F true);\\n    this.map = null;\\n  }\\n}\\n\\nclass Message extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"message\\\", \u002F* hasChildren = *\u002F true);\\n    this.msgId = null;\\n    this.severity = null;\\n  }\\n}\\n\\nclass Messaging extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"messaging\\\", \u002F* hasChildren = *\u002F true);\\n    this.message = new XFAObjectArray();\\n  }\\n}\\n\\nclass Mode extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"mode\\\", [\\\"append\\\", \\\"overwrite\\\"]);\\n  }\\n}\\n\\nclass ModifyAnnots extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"modifyAnnots\\\");\\n  }\\n}\\n\\nclass MsgId extends IntegerObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"msgId\\\", 1, n => n >= 1);\\n  }\\n}\\n\\nclass NameAttr extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"nameAttr\\\");\\n  }\\n}\\n\\nclass NeverEmbed extends ContentObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"neverEmbed\\\");\\n  }\\n}\\n\\nclass NumberOfCopies extends IntegerObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"numberOfCopies\\\", null, n => n >= 2 && n \u003C= 5);\\n  }\\n}\\n\\nclass OpenAction extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"openAction\\\", \u002F* hasChildren = *\u002F true);\\n    this.destination = null;\\n  }\\n}\\n\\nclass Output extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"output\\\", \u002F* hasChildren = *\u002F true);\\n    this.to = null;\\n    this.type = null;\\n    this.uri = null;\\n  }\\n}\\n\\nclass OutputBin extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"outputBin\\\");\\n  }\\n}\\n\\nclass OutputXSL extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"outputXSL\\\", \u002F* hasChildren = *\u002F true);\\n    this.uri = null;\\n  }\\n}\\n\\nclass Overprint extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"overprint\\\", [\\\"none\\\", \\\"both\\\", \\\"draw\\\", \\\"field\\\"]);\\n  }\\n}\\n\\nclass Packets extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"packets\\\");\\n  }\\n\\n  [$finalize]() {\\n    if (this[$content] === \\\"*\\\") {\\n      return;\\n    }\\n    this[$content] = this[$content]\\n      .trim()\\n      .split(\u002F\\\\s+\u002F)\\n      .filter(x =>\\n        [\\\"config\\\", \\\"datasets\\\", \\\"template\\\", \\\"xfdf\\\", \\\"xslt\\\"].includes(x)\\n      );\\n  }\\n}\\n\\nclass PageOffset extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"pageOffset\\\");\\n    this.x = getInteger({\\n      data: attributes.x,\\n      defaultValue: \\\"useXDCSetting\\\",\\n      validate: n => true,\\n    });\\n    this.y = getInteger({\\n      data: attributes.y,\\n      defaultValue: \\\"useXDCSetting\\\",\\n      validate: n => true,\\n    });\\n  }\\n}\\n\\nclass PageRange extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"pageRange\\\");\\n  }\\n\\n  [$finalize]() {\\n    const numbers = this[$content]\\n      .trim()\\n      .split(\u002F\\\\s+\u002F)\\n      .map(x => parseInt(x, 10));\\n    const ranges = [];\\n    for (let i = 0, ii = numbers.length; i \u003C ii; i += 2) {\\n      ranges.push(numbers.slice(i, i + 2));\\n    }\\n    this[$content] = ranges;\\n  }\\n}\\n\\nclass Pagination extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"pagination\\\", [\\n      \\\"simplex\\\",\\n      \\\"duplexShortEdge\\\",\\n      \\\"duplexLongEdge\\\",\\n    ]);\\n  }\\n}\\n\\nclass PaginationOverride extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"paginationOverride\\\", [\\n      \\\"none\\\",\\n      \\\"forceDuplex\\\",\\n      \\\"forceDuplexLongEdge\\\",\\n      \\\"forceDuplexShortEdge\\\",\\n      \\\"forceSimplex\\\",\\n    ]);\\n  }\\n}\\n\\nclass Part extends IntegerObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"part\\\", 1, n => false);\\n  }\\n}\\n\\nclass Pcl extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"pcl\\\", \u002F* hasChildren = *\u002F true);\\n    this.name = attributes.name || \\\"\\\";\\n    this.batchOutput = null;\\n    this.fontInfo = null;\\n    this.jog = null;\\n    this.mediumInfo = null;\\n    this.outputBin = null;\\n    this.pageOffset = null;\\n    this.staple = null;\\n    this.xdc = null;\\n  }\\n}\\n\\nclass Pdf extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"pdf\\\", \u002F* hasChildren = *\u002F true);\\n    this.name = attributes.name || \\\"\\\";\\n    this.adobeExtensionLevel = null;\\n    this.batchOutput = null;\\n    this.compression = null;\\n    this.creator = null;\\n    this.encryption = null;\\n    this.fontInfo = null;\\n    this.interactive = null;\\n    this.linearized = null;\\n    this.openAction = null;\\n    this.pdfa = null;\\n    this.producer = null;\\n    this.renderPolicy = null;\\n    this.scriptModel = null;\\n    this.silentPrint = null;\\n    this.submitFormat = null;\\n    this.tagged = null;\\n    this.version = null;\\n    this.viewerPreferences = null;\\n    this.xdc = null;\\n  }\\n}\\n\\nclass Pdfa extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"pdfa\\\", \u002F* hasChildren = *\u002F true);\\n    this.amd = null;\\n    this.conformance = null;\\n    this.includeXDPContent = null;\\n    this.part = null;\\n  }\\n}\\n\\nclass Permissions extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"permissions\\\", \u002F* hasChildren = *\u002F true);\\n    this.accessibleContent = null;\\n    this.change = null;\\n    this.contentCopy = null;\\n    this.documentAssembly = null;\\n    this.formFieldFilling = null;\\n    this.modifyAnnots = null;\\n    this.plaintextMetadata = null;\\n    this.print = null;\\n    this.printHighQuality = null;\\n  }\\n}\\n\\nclass PickTrayByPDFSize extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"pickTrayByPDFSize\\\");\\n  }\\n}\\n\\nclass Picture extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"picture\\\");\\n  }\\n\\n  \u002F\u002F TODO: check the validity of the picture clause.\\n  \u002F\u002F See page 1150 in the spec.\\n}\\n\\nclass PlaintextMetadata extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"plaintextMetadata\\\");\\n  }\\n}\\n\\nclass Presence extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"presence\\\", [\\n      \\\"preserve\\\",\\n      \\\"dissolve\\\",\\n      \\\"dissolveStructure\\\",\\n      \\\"ignore\\\",\\n      \\\"remove\\\",\\n    ]);\\n  }\\n}\\n\\nclass Present extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"present\\\", \u002F* hasChildren = *\u002F true);\\n    this.behaviorOverride = null;\\n    this.cache = null;\\n    this.common = null;\\n    this.copies = null;\\n    this.destination = null;\\n    this.incrementalMerge = null;\\n    this.layout = null;\\n    this.output = null;\\n    this.overprint = null;\\n    this.pagination = null;\\n    this.paginationOverride = null;\\n    this.script = null;\\n    this.validate = null;\\n    this.xdp = null;\\n    this.driver = new XFAObjectArray();\\n    this.labelPrinter = new XFAObjectArray();\\n    this.pcl = new XFAObjectArray();\\n    this.pdf = new XFAObjectArray();\\n    this.ps = new XFAObjectArray();\\n    this.submitUrl = new XFAObjectArray();\\n    this.webClient = new XFAObjectArray();\\n    this.zpl = new XFAObjectArray();\\n  }\\n}\\n\\nclass Print extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"print\\\");\\n  }\\n}\\n\\nclass PrintHighQuality extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"printHighQuality\\\");\\n  }\\n}\\n\\nclass PrintScaling extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"printScaling\\\", [\\\"appdefault\\\", \\\"noScaling\\\"]);\\n  }\\n}\\n\\nclass PrinterName extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"printerName\\\");\\n  }\\n}\\n\\nclass Producer extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"producer\\\");\\n  }\\n}\\n\\nclass Ps extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"ps\\\", \u002F* hasChildren = *\u002F true);\\n    this.name = attributes.name || \\\"\\\";\\n    this.batchOutput = null;\\n    this.fontInfo = null;\\n    this.jog = null;\\n    this.mediumInfo = null;\\n    this.outputBin = null;\\n    this.staple = null;\\n    this.xdc = null;\\n  }\\n}\\n\\nclass Range extends ContentObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"range\\\");\\n  }\\n\\n  [$finalize]() {\\n    this[$content] = this[$content]\\n      .split(\\\",\\\", 2)\\n      .map(range => range.split(\\\"-\\\").map(x => parseInt(x.trim(), 10)))\\n      .filter(range => range.every(x => !isNaN(x)))\\n      .map(range => {\\n        if (range.length === 1) {\\n          range.push(range[0]);\\n        }\\n        return range;\\n      });\\n  }\\n}\\n\\nclass Record extends ContentObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"record\\\");\\n  }\\n\\n  [$finalize]() {\\n    this[$content] = this[$content].trim();\\n    const n = parseInt(this[$content], 10);\\n    if (!isNaN(n) && n >= 0) {\\n      this[$content] = n;\\n    }\\n  }\\n}\\n\\nclass Relevant extends ContentObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"relevant\\\");\\n  }\\n\\n  [$finalize]() {\\n    this[$content] = this[$content].trim().split(\u002F\\\\s+\u002F);\\n  }\\n}\\n\\nclass Rename extends ContentObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"rename\\\");\\n  }\\n\\n  [$finalize]() {\\n    this[$content] = this[$content].trim();\\n    \u002F\u002F String must be a XFA name: same as XML one except that there\\n    \u002F\u002F is no colon.\\n    if (\\n      this[$content].toLowerCase().startsWith(\\\"xml\\\") ||\\n      new RegExp(\\\"[\\\\\\\\p{L}_][\\\\\\\\p{L}\\\\\\\\d._\\\\\\\\p{M}-]*\\\", \\\"u\\\").test(this[$content])\\n    ) {\\n      warn(\\\"XFA - Rename: invalid XFA name\\\");\\n    }\\n  }\\n}\\n\\nclass RenderPolicy extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"renderPolicy\\\", [\\\"server\\\", \\\"client\\\"]);\\n  }\\n}\\n\\nclass RunScripts extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"runScripts\\\", [\\\"both\\\", \\\"client\\\", \\\"none\\\", \\\"server\\\"]);\\n  }\\n}\\n\\nclass Script extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"script\\\", \u002F* hasChildren = *\u002F true);\\n    this.currentPage = null;\\n    this.exclude = null;\\n    this.runScripts = null;\\n  }\\n}\\n\\nclass ScriptModel extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"scriptModel\\\", [\\\"XFA\\\", \\\"none\\\"]);\\n  }\\n}\\n\\nclass Severity extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"severity\\\", [\\n      \\\"ignore\\\",\\n      \\\"error\\\",\\n      \\\"information\\\",\\n      \\\"trace\\\",\\n      \\\"warning\\\",\\n    ]);\\n  }\\n}\\n\\nclass SilentPrint extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"silentPrint\\\", \u002F* hasChildren = *\u002F true);\\n    this.addSilentPrint = null;\\n    this.printerName = null;\\n  }\\n}\\n\\nclass Staple extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"staple\\\");\\n    this.mode = getStringOption(attributes.mode, [\\n      \\\"usePrinterSetting\\\",\\n      \\\"on\\\",\\n      \\\"off\\\",\\n    ]);\\n  }\\n}\\n\\nclass StartNode extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"startNode\\\");\\n  }\\n}\\n\\nclass StartPage extends IntegerObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"startPage\\\", 0, n => true);\\n  }\\n}\\n\\nclass SubmitFormat extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"submitFormat\\\", [\\n      \\\"html\\\",\\n      \\\"delegate\\\",\\n      \\\"fdf\\\",\\n      \\\"xml\\\",\\n      \\\"pdf\\\",\\n    ]);\\n  }\\n}\\n\\nclass SubmitUrl extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"submitUrl\\\");\\n  }\\n}\\n\\nclass SubsetBelow extends IntegerObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"subsetBelow\\\", 100, n => n >= 0 && n \u003C= 100);\\n  }\\n}\\n\\nclass SuppressBanner extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"suppressBanner\\\");\\n  }\\n}\\n\\nclass Tagged extends Option01 {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"tagged\\\");\\n  }\\n}\\n\\nclass Template extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"template\\\", \u002F* hasChildren = *\u002F true);\\n    this.base = null;\\n    this.relevant = null;\\n    this.startPage = null;\\n    this.uri = null;\\n    this.xsl = null;\\n  }\\n}\\n\\nclass Threshold extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"threshold\\\", [\\n      \\\"trace\\\",\\n      \\\"error\\\",\\n      \\\"information\\\",\\n      \\\"warning\\\",\\n    ]);\\n  }\\n}\\n\\nclass To extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"to\\\", [\\n      \\\"null\\\",\\n      \\\"memory\\\",\\n      \\\"stderr\\\",\\n      \\\"stdout\\\",\\n      \\\"system\\\",\\n      \\\"uri\\\",\\n    ]);\\n  }\\n}\\n\\nclass TemplateCache extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"templateCache\\\");\\n    this.maxEntries = getInteger({\\n      data: attributes.maxEntries,\\n      defaultValue: 5,\\n      validate: n => n >= 0,\\n    });\\n  }\\n}\\n\\nclass Trace extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"trace\\\", \u002F* hasChildren = *\u002F true);\\n    this.area = new XFAObjectArray();\\n  }\\n}\\n\\nclass Transform extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"transform\\\", \u002F* hasChildren = *\u002F true);\\n    this.groupParent = null;\\n    this.ifEmpty = null;\\n    this.nameAttr = null;\\n    this.picture = null;\\n    this.presence = null;\\n    this.rename = null;\\n    this.whitespace = null;\\n  }\\n}\\n\\nclass Type extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"type\\\", [\\n      \\\"none\\\",\\n      \\\"ascii85\\\",\\n      \\\"asciiHex\\\",\\n      \\\"ccittfax\\\",\\n      \\\"flate\\\",\\n      \\\"lzw\\\",\\n      \\\"runLength\\\",\\n      \\\"native\\\",\\n      \\\"xdp\\\",\\n      \\\"mergedXDP\\\",\\n    ]);\\n  }\\n}\\n\\nclass Uri extends StringObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"uri\\\");\\n  }\\n}\\n\\nclass Validate extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"validate\\\", [\\n      \\\"preSubmit\\\",\\n      \\\"prePrint\\\",\\n      \\\"preExecute\\\",\\n      \\\"preSave\\\",\\n    ]);\\n  }\\n}\\n\\nclass ValidateApprovalSignatures extends ContentObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"validateApprovalSignatures\\\");\\n  }\\n\\n  [$finalize]() {\\n    this[$content] = this[$content]\\n      .trim()\\n      .split(\u002F\\\\s+\u002F)\\n      .filter(x => [\\\"docReady\\\", \\\"postSign\\\"].includes(x));\\n  }\\n}\\n\\nclass ValidationMessaging extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"validationMessaging\\\", [\\n      \\\"allMessagesIndividually\\\",\\n      \\\"allMessagesTogether\\\",\\n      \\\"firstMessageOnly\\\",\\n      \\\"noMessages\\\",\\n    ]);\\n  }\\n}\\n\\nclass Version extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"version\\\", [\\\"1.7\\\", \\\"1.6\\\", \\\"1.5\\\", \\\"1.4\\\", \\\"1.3\\\", \\\"1.2\\\"]);\\n  }\\n}\\n\\nclass VersionControl extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"VersionControl\\\");\\n    this.outputBelow = getStringOption(attributes.outputBelow, [\\n      \\\"warn\\\",\\n      \\\"error\\\",\\n      \\\"update\\\",\\n    ]);\\n    this.sourceAbove = getStringOption(attributes.sourceAbove, [\\n      \\\"warn\\\",\\n      \\\"error\\\",\\n    ]);\\n    this.sourceBelow = getStringOption(attributes.sourceBelow, [\\n      \\\"update\\\",\\n      \\\"maintain\\\",\\n    ]);\\n  }\\n}\\n\\nclass ViewerPreferences extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"viewerPreferences\\\", \u002F* hasChildren = *\u002F true);\\n    this.ADBE_JSConsole = null;\\n    this.ADBE_JSDebugger = null;\\n    this.addViewerPreferences = null;\\n    this.duplexOption = null;\\n    this.enforce = null;\\n    this.numberOfCopies = null;\\n    this.pageRange = null;\\n    this.pickTrayByPDFSize = null;\\n    this.printScaling = null;\\n  }\\n}\\n\\nclass WebClient extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"webClient\\\", \u002F* hasChildren = *\u002F true);\\n    this.name = attributes.name ? attributes.name.trim() : \\\"\\\";\\n    this.fontInfo = null;\\n    this.xdc = null;\\n  }\\n}\\n\\nclass Whitespace extends OptionObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"whitespace\\\", [\\n      \\\"preserve\\\",\\n      \\\"ltrim\\\",\\n      \\\"normalize\\\",\\n      \\\"rtrim\\\",\\n      \\\"trim\\\",\\n    ]);\\n  }\\n}\\n\\nclass Window extends ContentObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"window\\\");\\n  }\\n\\n  [$finalize]() {\\n    const pair = this[$content].split(\\\",\\\", 2).map(x => parseInt(x.trim(), 10));\\n    if (pair.some(x => isNaN(x))) {\\n      this[$content] = [0, 0];\\n      return;\\n    }\\n    if (pair.length === 1) {\\n      pair.push(pair[0]);\\n    }\\n    this[$content] = pair;\\n  }\\n}\\n\\nclass Xdc extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"xdc\\\", \u002F* hasChildren = *\u002F true);\\n    this.uri = new XFAObjectArray();\\n    this.xsl = new XFAObjectArray();\\n  }\\n}\\n\\nclass Xdp extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"xdp\\\", \u002F* hasChildren = *\u002F true);\\n    this.packets = null;\\n  }\\n}\\n\\nclass Xsl extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"xsl\\\", \u002F* hasChildren = *\u002F true);\\n    this.debug = null;\\n    this.uri = null;\\n  }\\n}\\n\\nclass Zpl extends XFAObject {\\n  constructor(attributes) {\\n    super(CONFIG_NS_ID, \\\"zpl\\\", \u002F* hasChildren = *\u002F true);\\n    this.name = attributes.name ? attributes.name.trim() : \\\"\\\";\\n    this.batchOutput = null;\\n    this.flipLabel = null;\\n    this.fontInfo = null;\\n    this.xdc = null;\\n  }\\n}\\n\\nclass ConfigNamespace {\\n  static [$buildXFAObject](name, attributes) {\\n    if (ConfigNamespace.hasOwnProperty(name)) {\\n      return ConfigNamespace[name](attributes);\\n    }\\n    return undefined;\\n  }\\n\\n  static acrobat(attrs) {\\n    return new Acrobat(attrs);\\n  }\\n\\n  static acrobat7(attrs) {\\n    return new Acrobat7(attrs);\\n  }\\n\\n  static ADBE_JSConsole(attrs) {\\n    return new ADBE_JSConsole(attrs);\\n  }\\n\\n  static ADBE_JSDebugger(attrs) {\\n    return new ADBE_JSDebugger(attrs);\\n  }\\n\\n  static addSilentPrint(attrs) {\\n    return new AddSilentPrint(attrs);\\n  }\\n\\n  static addViewerPreferences(attrs) {\\n    return new AddViewerPreferences(attrs);\\n  }\\n\\n  static adjustData(attrs) {\\n    return new AdjustData(attrs);\\n  }\\n\\n  static adobeExtensionLevel(attrs) {\\n    return new AdobeExtensionLevel(attrs);\\n  }\\n\\n  static agent(attrs) {\\n    return new Agent(attrs);\\n  }\\n\\n  static alwaysEmbed(attrs) {\\n    return new AlwaysEmbed(attrs);\\n  }\\n\\n  static amd(attrs) {\\n    return new Amd(attrs);\\n  }\\n\\n  static area(attrs) {\\n    return new Area(attrs);\\n  }\\n\\n  static attributes(attrs) {\\n    return new Attributes(attrs);\\n  }\\n\\n  static autoSave(attrs) {\\n    return new AutoSave(attrs);\\n  }\\n\\n  static base(attrs) {\\n    return new Base(attrs);\\n  }\\n\\n  static batchOutput(attrs) {\\n    return new BatchOutput(attrs);\\n  }\\n\\n  static behaviorOverride(attrs) {\\n    return new BehaviorOverride(attrs);\\n  }\\n\\n  static cache(attrs) {\\n    return new Cache(attrs);\\n  }\\n\\n  static change(attrs) {\\n    return new Change(attrs);\\n  }\\n\\n  static common(attrs) {\\n    return new Common(attrs);\\n  }\\n\\n  static compress(attrs) {\\n    return new Compress(attrs);\\n  }\\n\\n  static compressLogicalStructure(attrs) {\\n    return new CompressLogicalStructure(attrs);\\n  }\\n\\n  static compressObjectStream(attrs) {\\n    return new CompressObjectStream(attrs);\\n  }\\n\\n  static compression(attrs) {\\n    return new Compression(attrs);\\n  }\\n\\n  static config(attrs) {\\n    return new Config(attrs);\\n  }\\n\\n  static conformance(attrs) {\\n    return new Conformance(attrs);\\n  }\\n\\n  static contentCopy(attrs) {\\n    return new ContentCopy(attrs);\\n  }\\n\\n  static copies(attrs) {\\n    return new Copies(attrs);\\n  }\\n\\n  static creator(attrs) {\\n    return new Creator(attrs);\\n  }\\n\\n  static currentPage(attrs) {\\n    return new CurrentPage(attrs);\\n  }\\n\\n  static data(attrs) {\\n    return new Data(attrs);\\n  }\\n\\n  static debug(attrs) {\\n    return new Debug(attrs);\\n  }\\n\\n  static defaultTypeface(attrs) {\\n    return new DefaultTypeface(attrs);\\n  }\\n\\n  static destination(attrs) {\\n    return new Destination(attrs);\\n  }\\n\\n  static documentAssembly(attrs) {\\n    return new DocumentAssembly(attrs);\\n  }\\n\\n  static driver(attrs) {\\n    return new Driver(attrs);\\n  }\\n\\n  static duplexOption(attrs) {\\n    return new DuplexOption(attrs);\\n  }\\n\\n  static dynamicRender(attrs) {\\n    return new DynamicRender(attrs);\\n  }\\n\\n  static embed(attrs) {\\n    return new Embed(attrs);\\n  }\\n\\n  static encrypt(attrs) {\\n    return new Encrypt(attrs);\\n  }\\n\\n  static encryption(attrs) {\\n    return new Encryption(attrs);\\n  }\\n\\n  static encryptionLevel(attrs) {\\n    return new EncryptionLevel(attrs);\\n  }\\n\\n  static enforce(attrs) {\\n    return new Enforce(attrs);\\n  }\\n\\n  static equate(attrs) {\\n    return new Equate(attrs);\\n  }\\n\\n  static equateRange(attrs) {\\n    return new EquateRange(attrs);\\n  }\\n\\n  static exclude(attrs) {\\n    return new Exclude(attrs);\\n  }\\n\\n  static excludeNS(attrs) {\\n    return new ExcludeNS(attrs);\\n  }\\n\\n  static flipLabel(attrs) {\\n    return new FlipLabel(attrs);\\n  }\\n\\n  static fontInfo(attrs) {\\n    return new FontInfo(attrs);\\n  }\\n\\n  static formFieldFilling(attrs) {\\n    return new FormFieldFilling(attrs);\\n  }\\n\\n  static groupParent(attrs) {\\n    return new GroupParent(attrs);\\n  }\\n\\n  static ifEmpty(attrs) {\\n    return new IfEmpty(attrs);\\n  }\\n\\n  static includeXDPContent(attrs) {\\n    return new IncludeXDPContent(attrs);\\n  }\\n\\n  static incrementalLoad(attrs) {\\n    return new IncrementalLoad(attrs);\\n  }\\n\\n  static incrementalMerge(attrs) {\\n    return new IncrementalMerge(attrs);\\n  }\\n\\n  static interactive(attrs) {\\n    return new Interactive(attrs);\\n  }\\n\\n  static jog(attrs) {\\n    return new Jog(attrs);\\n  }\\n\\n  static labelPrinter(attrs) {\\n    return new LabelPrinter(attrs);\\n  }\\n\\n  static layout(attrs) {\\n    return new Layout(attrs);\\n  }\\n\\n  static level(attrs) {\\n    return new Level(attrs);\\n  }\\n\\n  static linearized(attrs) {\\n    return new Linearized(attrs);\\n  }\\n\\n  static locale(attrs) {\\n    return new Locale(attrs);\\n  }\\n\\n  static localeSet(attrs) {\\n    return new LocaleSet(attrs);\\n  }\\n\\n  static log(attrs) {\\n    return new Log(attrs);\\n  }\\n\\n  static map(attrs) {\\n    return new MapElement(attrs);\\n  }\\n\\n  static mediumInfo(attrs) {\\n    return new MediumInfo(attrs);\\n  }\\n\\n  static message(attrs) {\\n    return new Message(attrs);\\n  }\\n\\n  static messaging(attrs) {\\n    return new Messaging(attrs);\\n  }\\n\\n  static mode(attrs) {\\n    return new Mode(attrs);\\n  }\\n\\n  static modifyAnnots(attrs) {\\n    return new ModifyAnnots(attrs);\\n  }\\n\\n  static msgId(attrs) {\\n    return new MsgId(attrs);\\n  }\\n\\n  static nameAttr(attrs) {\\n    return new NameAttr(attrs);\\n  }\\n\\n  static neverEmbed(attrs) {\\n    return new NeverEmbed(attrs);\\n  }\\n\\n  static numberOfCopies(attrs) {\\n    return new NumberOfCopies(attrs);\\n  }\\n\\n  static openAction(attrs) {\\n    return new OpenAction(attrs);\\n  }\\n\\n  static output(attrs) {\\n    return new Output(attrs);\\n  }\\n\\n  static outputBin(attrs) {\\n    return new OutputBin(attrs);\\n  }\\n\\n  static outputXSL(attrs) {\\n    return new OutputXSL(attrs);\\n  }\\n\\n  static overprint(attrs) {\\n    return new Overprint(attrs);\\n  }\\n\\n  static packets(attrs) {\\n    return new Packets(attrs);\\n  }\\n\\n  static pageOffset(attrs) {\\n    return new PageOffset(attrs);\\n  }\\n\\n  static pageRange(attrs) {\\n    return new PageRange(attrs);\\n  }\\n\\n  static pagination(attrs) {\\n    return new Pagination(attrs);\\n  }\\n\\n  static paginationOverride(attrs) {\\n    return new PaginationOverride(attrs);\\n  }\\n\\n  static part(attrs) {\\n    return new Part(attrs);\\n  }\\n\\n  static pcl(attrs) {\\n    return new Pcl(attrs);\\n  }\\n\\n  static pdf(attrs) {\\n    return new Pdf(attrs);\\n  }\\n\\n  static pdfa(attrs) {\\n    return new Pdfa(attrs);\\n  }\\n\\n  static permissions(attrs) {\\n    return new Permissions(attrs);\\n  }\\n\\n  static pickTrayByPDFSize(attrs) {\\n    return new PickTrayByPDFSize(attrs);\\n  }\\n\\n  static picture(attrs) {\\n    return new Picture(attrs);\\n  }\\n\\n  static plaintextMetadata(attrs) {\\n    return new PlaintextMetadata(attrs);\\n  }\\n\\n  static presence(attrs) {\\n    return new Presence(attrs);\\n  }\\n\\n  static present(attrs) {\\n    return new Present(attrs);\\n  }\\n\\n  static print(attrs) {\\n    return new Print(attrs);\\n  }\\n\\n  static printHighQuality(attrs) {\\n    return new PrintHighQuality(attrs);\\n  }\\n\\n  static printScaling(attrs) {\\n    return new PrintScaling(attrs);\\n  }\\n\\n  static printerName(attrs) {\\n    return new PrinterName(attrs);\\n  }\\n\\n  static producer(attrs) {\\n    return new Producer(attrs);\\n  }\\n\\n  static ps(attrs) {\\n    return new Ps(attrs);\\n  }\\n\\n  static range(attrs) {\\n    return new Range(attrs);\\n  }\\n\\n  static record(attrs) {\\n    return new Record(attrs);\\n  }\\n\\n  static relevant(attrs) {\\n    return new Relevant(attrs);\\n  }\\n\\n  static rename(attrs) {\\n    return new Rename(attrs);\\n  }\\n\\n  static renderPolicy(attrs) {\\n    return new RenderPolicy(attrs);\\n  }\\n\\n  static runScripts(attrs) {\\n    return new RunScripts(attrs);\\n  }\\n\\n  static script(attrs) {\\n    return new Script(attrs);\\n  }\\n\\n  static scriptModel(attrs) {\\n    return new ScriptModel(attrs);\\n  }\\n\\n  static severity(attrs) {\\n    return new Severity(attrs);\\n  }\\n\\n  static silentPrint(attrs) {\\n    return new SilentPrint(attrs);\\n  }\\n\\n  static staple(attrs) {\\n    return new Staple(attrs);\\n  }\\n\\n  static startNode(attrs) {\\n    return new StartNode(attrs);\\n  }\\n\\n  static startPage(attrs) {\\n    return new StartPage(attrs);\\n  }\\n\\n  static submitFormat(attrs) {\\n    return new SubmitFormat(attrs);\\n  }\\n\\n  static submitUrl(attrs) {\\n    return new SubmitUrl(attrs);\\n  }\\n\\n  static subsetBelow(attrs) {\\n    return new SubsetBelow(attrs);\\n  }\\n\\n  static suppressBanner(attrs) {\\n    return new SuppressBanner(attrs);\\n  }\\n\\n  static tagged(attrs) {\\n    return new Tagged(attrs);\\n  }\\n\\n  static template(attrs) {\\n    return new Template(attrs);\\n  }\\n\\n  static templateCache(attrs) {\\n    return new TemplateCache(attrs);\\n  }\\n\\n  static threshold(attrs) {\\n    return new Threshold(attrs);\\n  }\\n\\n  static to(attrs) {\\n    return new To(attrs);\\n  }\\n\\n  static trace(attrs) {\\n    return new Trace(attrs);\\n  }\\n\\n  static transform(attrs) {\\n    return new Transform(attrs);\\n  }\\n\\n  static type(attrs) {\\n    return new Type(attrs);\\n  }\\n\\n  static uri(attrs) {\\n    return new Uri(attrs);\\n  }\\n\\n  static validate(attrs) {\\n    return new Validate(attrs);\\n  }\\n\\n  static validateApprovalSignatures(attrs) {\\n    return new ValidateApprovalSignatures(attrs);\\n  }\\n\\n  static validationMessaging(attrs) {\\n    return new ValidationMessaging(attrs);\\n  }\\n\\n  static version(attrs) {\\n    return new Version(attrs);\\n  }\\n\\n  static versionControl(attrs) {\\n    return new VersionControl(attrs);\\n  }\\n\\n  static viewerPreferences(attrs) {\\n    return new ViewerPreferences(attrs);\\n  }\\n\\n  static webClient(attrs) {\\n    return new WebClient(attrs);\\n  }\\n\\n  static whitespace(attrs) {\\n    return new Whitespace(attrs);\\n  }\\n\\n  static window(attrs) {\\n    return new Window(attrs);\\n  }\\n\\n  static xdc(attrs) {\\n    return new Xdc(attrs);\\n  }\\n\\n  static xdp(attrs) {\\n    return new Xdp(attrs);\\n  }\\n\\n  static xsl(attrs) {\\n    return new Xsl(attrs);\\n  }\\n\\n  static zpl(attrs) {\\n    return new Zpl(attrs);\\n  }\\n}\\n\\nexport { ConfigNamespace };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { $buildXFAObject, NamespaceIds } from \\\".\u002Fnamespaces.js\\\";\\nimport { StringObject, XFAObject, XFAObjectArray } from \\\".\u002Fxfa_object.js\\\";\\n\\nconst CONNECTION_SET_NS_ID = NamespaceIds.connectionSet.id;\\n\\nclass ConnectionSet extends XFAObject {\\n  constructor(attributes) {\\n    super(CONNECTION_SET_NS_ID, \\\"connectionSet\\\", \u002F* hasChildren = *\u002F true);\\n    this.wsdlConnection = new XFAObjectArray();\\n    this.xmlConnection = new XFAObjectArray();\\n    this.xsdConnection = new XFAObjectArray();\\n  }\\n}\\n\\nclass EffectiveInputPolicy extends XFAObject {\\n  constructor(attributes) {\\n    super(CONNECTION_SET_NS_ID, \\\"effectiveInputPolicy\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass EffectiveOutputPolicy extends XFAObject {\\n  constructor(attributes) {\\n    super(CONNECTION_SET_NS_ID, \\\"effectiveOutputPolicy\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Operation extends StringObject {\\n  constructor(attributes) {\\n    super(CONNECTION_SET_NS_ID, \\\"operation\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.input = attributes.input || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.output = attributes.output || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass RootElement extends StringObject {\\n  constructor(attributes) {\\n    super(CONNECTION_SET_NS_ID, \\\"rootElement\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass SoapAction extends StringObject {\\n  constructor(attributes) {\\n    super(CONNECTION_SET_NS_ID, \\\"soapAction\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass SoapAddress extends StringObject {\\n  constructor(attributes) {\\n    super(CONNECTION_SET_NS_ID, \\\"soapAddress\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass Uri extends StringObject {\\n  constructor(attributes) {\\n    super(CONNECTION_SET_NS_ID, \\\"uri\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass WsdlAddress extends StringObject {\\n  constructor(attributes) {\\n    super(CONNECTION_SET_NS_ID, \\\"wsdlAddress\\\");\\n    this.id = attributes.id || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.use = attributes.use || \\\"\\\";\\n    this.usehref = attributes.usehref || \\\"\\\";\\n  }\\n}\\n\\nclass WsdlConnection extends XFAObject {\\n  constructor(attributes) {\\n    super(CONNECTION_SET_NS_ID, \\\"wsdlConnection\\\", \u002F* hasChildren = *\u002F true);\\n    this.dataDescription = attributes.dataDescription || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.effectiveInputPolicy = null;\\n    this.effectiveOutputPolicy = null;\\n    this.operation = null;\\n    this.soapAction = null;\\n    this.soapAddress = null;\\n    this.wsdlAddress = null;\\n  }\\n}\\n\\nclass XmlConnection extends XFAObject {\\n  constructor(attributes) {\\n    super(CONNECTION_SET_NS_ID, \\\"xmlConnection\\\", \u002F* hasChildren = *\u002F true);\\n    this.dataDescription = attributes.dataDescription || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.uri = null;\\n  }\\n}\\n\\nclass XsdConnection extends XFAObject {\\n  constructor(attributes) {\\n    super(CONNECTION_SET_NS_ID, \\\"xsdConnection\\\", \u002F* hasChildren = *\u002F true);\\n    this.dataDescription = attributes.dataDescription || \\\"\\\";\\n    this.name = attributes.name || \\\"\\\";\\n    this.rootElement = null;\\n    this.uri = null;\\n  }\\n}\\n\\nclass ConnectionSetNamespace {\\n  static [$buildXFAObject](name, attributes) {\\n    if (ConnectionSetNamespace.hasOwnProperty(name)) {\\n      return ConnectionSetNamespace[name](attributes);\\n    }\\n    return undefined;\\n  }\\n\\n  static connectionSet(attrs) {\\n    return new ConnectionSet(attrs);\\n  }\\n\\n  static effectiveInputPolicy(attrs) {\\n    return new EffectiveInputPolicy(attrs);\\n  }\\n\\n  static effectiveOutputPolicy(attrs) {\\n    return new EffectiveOutputPolicy(attrs);\\n  }\\n\\n  static operation(attrs) {\\n    return new Operation(attrs);\\n  }\\n\\n  static rootElement(attrs) {\\n    return new RootElement(attrs);\\n  }\\n\\n  static soapAction(attrs) {\\n    return new SoapAction(attrs);\\n  }\\n\\n  static soapAddress(attrs) {\\n    return new SoapAddress(attrs);\\n  }\\n\\n  static uri(attrs) {\\n    return new Uri(attrs);\\n  }\\n\\n  static wsdlAddress(attrs) {\\n    return new WsdlAddress(attrs);\\n  }\\n\\n  static wsdlConnection(attrs) {\\n    return new WsdlConnection(attrs);\\n  }\\n\\n  static xmlConnection(attrs) {\\n    return new XmlConnection(attrs);\\n  }\\n\\n  static xsdConnection(attrs) {\\n    return new XsdConnection(attrs);\\n  }\\n}\\n\\nexport { ConnectionSetNamespace };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  $appendChild,\\n  $isNsAgnostic,\\n  $namespaceId,\\n  $nodeName,\\n  $onChild,\\n} from \\\".\u002Fsymbol_utils.js\\\";\\nimport { $buildXFAObject, NamespaceIds } from \\\".\u002Fnamespaces.js\\\";\\nimport { XFAObject, XmlObject } from \\\".\u002Fxfa_object.js\\\";\\n\\nconst DATASETS_NS_ID = NamespaceIds.datasets.id;\\n\\nclass Data extends XmlObject {\\n  constructor(attributes) {\\n    super(DATASETS_NS_ID, \\\"data\\\", attributes);\\n  }\\n\\n  [$isNsAgnostic]() {\\n    return true;\\n  }\\n}\\n\\nclass Datasets extends XFAObject {\\n  constructor(attributes) {\\n    super(DATASETS_NS_ID, \\\"datasets\\\", \u002F* hasChildren = *\u002F true);\\n    this.data = null;\\n    this.Signature = null;\\n  }\\n\\n  [$onChild](child) {\\n    const name = child[$nodeName];\\n    if (\\n      (name === \\\"data\\\" && child[$namespaceId] === DATASETS_NS_ID) ||\\n      (name === \\\"Signature\\\" &&\\n        child[$namespaceId] === NamespaceIds.signature.id)\\n    ) {\\n      this[name] = child;\\n    }\\n    this[$appendChild](child);\\n  }\\n}\\n\\nclass DatasetsNamespace {\\n  static [$buildXFAObject](name, attributes) {\\n    if (DatasetsNamespace.hasOwnProperty(name)) {\\n      return DatasetsNamespace[name](attributes);\\n    }\\n    return undefined;\\n  }\\n\\n  static datasets(attributes) {\\n    return new Datasets(attributes);\\n  }\\n\\n  static data(attributes) {\\n    return new Data(attributes);\\n  }\\n}\\n\\nexport { DatasetsNamespace };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { $buildXFAObject, NamespaceIds } from \\\".\u002Fnamespaces.js\\\";\\nimport {\\n  ContentObject,\\n  StringObject,\\n  XFAObject,\\n  XFAObjectArray,\\n} from \\\".\u002Fxfa_object.js\\\";\\nimport { getInteger, getStringOption } from \\\".\u002Futils.js\\\";\\n\\nconst LOCALE_SET_NS_ID = NamespaceIds.localeSet.id;\\n\\nclass CalendarSymbols extends XFAObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"calendarSymbols\\\", \u002F* hasChildren = *\u002F true);\\n    this.name = \\\"gregorian\\\";\\n    this.dayNames = new XFAObjectArray(2);\\n    this.eraNames = null;\\n    this.meridiemNames = null;\\n    this.monthNames = new XFAObjectArray(2);\\n  }\\n}\\n\\nclass CurrencySymbol extends StringObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"currencySymbol\\\");\\n    this.name = getStringOption(attributes.name, [\\n      \\\"symbol\\\",\\n      \\\"isoname\\\",\\n      \\\"decimal\\\",\\n    ]);\\n  }\\n}\\n\\nclass CurrencySymbols extends XFAObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"currencySymbols\\\", \u002F* hasChildren = *\u002F true);\\n    this.currencySymbol = new XFAObjectArray(3);\\n  }\\n}\\n\\nclass DatePattern extends StringObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"datePattern\\\");\\n    this.name = getStringOption(attributes.name, [\\n      \\\"full\\\",\\n      \\\"long\\\",\\n      \\\"med\\\",\\n      \\\"short\\\",\\n    ]);\\n  }\\n}\\n\\nclass DatePatterns extends XFAObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"datePatterns\\\", \u002F* hasChildren = *\u002F true);\\n    this.datePattern = new XFAObjectArray(4);\\n  }\\n}\\n\\nclass DateTimeSymbols extends ContentObject {\\n  \u002F\u002F TODO: spec unclear about the format of the array.\\n\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"dateTimeSymbols\\\");\\n  }\\n}\\n\\nclass Day extends StringObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"day\\\");\\n  }\\n}\\n\\nclass DayNames extends XFAObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"dayNames\\\", \u002F* hasChildren = *\u002F true);\\n    this.abbr = getInteger({\\n      data: attributes.abbr,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.day = new XFAObjectArray(7);\\n  }\\n}\\n\\nclass Era extends StringObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"era\\\");\\n  }\\n}\\n\\nclass EraNames extends XFAObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"eraNames\\\", \u002F* hasChildren = *\u002F true);\\n    this.era = new XFAObjectArray(2);\\n  }\\n}\\n\\nclass Locale extends XFAObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"locale\\\", \u002F* hasChildren = *\u002F true);\\n    this.desc = attributes.desc || \\\"\\\";\\n    this.name = \\\"isoname\\\";\\n    this.calendarSymbols = null;\\n    this.currencySymbols = null;\\n    this.datePatterns = null;\\n    this.dateTimeSymbols = null;\\n    this.numberPatterns = null;\\n    this.numberSymbols = null;\\n    this.timePatterns = null;\\n    this.typeFaces = null;\\n  }\\n}\\n\\nclass LocaleSet extends XFAObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"localeSet\\\", \u002F* hasChildren = *\u002F true);\\n    this.locale = new XFAObjectArray();\\n  }\\n}\\n\\nclass Meridiem extends StringObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"meridiem\\\");\\n  }\\n}\\n\\nclass MeridiemNames extends XFAObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"meridiemNames\\\", \u002F* hasChildren = *\u002F true);\\n    this.meridiem = new XFAObjectArray(2);\\n  }\\n}\\n\\nclass Month extends StringObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"month\\\");\\n  }\\n}\\n\\nclass MonthNames extends XFAObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"monthNames\\\", \u002F* hasChildren = *\u002F true);\\n    this.abbr = getInteger({\\n      data: attributes.abbr,\\n      defaultValue: 0,\\n      validate: x => x === 1,\\n    });\\n    this.month = new XFAObjectArray(12);\\n  }\\n}\\n\\nclass NumberPattern extends StringObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"numberPattern\\\");\\n    this.name = getStringOption(attributes.name, [\\n      \\\"full\\\",\\n      \\\"long\\\",\\n      \\\"med\\\",\\n      \\\"short\\\",\\n    ]);\\n  }\\n}\\n\\nclass NumberPatterns extends XFAObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"numberPatterns\\\", \u002F* hasChildren = *\u002F true);\\n    this.numberPattern = new XFAObjectArray(4);\\n  }\\n}\\n\\nclass NumberSymbol extends StringObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"numberSymbol\\\");\\n    this.name = getStringOption(attributes.name, [\\n      \\\"decimal\\\",\\n      \\\"grouping\\\",\\n      \\\"percent\\\",\\n      \\\"minus\\\",\\n      \\\"zero\\\",\\n    ]);\\n  }\\n}\\n\\nclass NumberSymbols extends XFAObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"numberSymbols\\\", \u002F* hasChildren = *\u002F true);\\n    this.numberSymbol = new XFAObjectArray(5);\\n  }\\n}\\n\\nclass TimePattern extends StringObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"timePattern\\\");\\n    this.name = getStringOption(attributes.name, [\\n      \\\"full\\\",\\n      \\\"long\\\",\\n      \\\"med\\\",\\n      \\\"short\\\",\\n    ]);\\n  }\\n}\\n\\nclass TimePatterns extends XFAObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"timePatterns\\\", \u002F* hasChildren = *\u002F true);\\n    this.timePattern = new XFAObjectArray(4);\\n  }\\n}\\n\\nclass TypeFace extends XFAObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"typeFace\\\", \u002F* hasChildren = *\u002F true);\\n    this.name = attributes.name | \\\"\\\";\\n  }\\n}\\n\\nclass TypeFaces extends XFAObject {\\n  constructor(attributes) {\\n    super(LOCALE_SET_NS_ID, \\\"typeFaces\\\", \u002F* hasChildren = *\u002F true);\\n    this.typeFace = new XFAObjectArray();\\n  }\\n}\\n\\nclass LocaleSetNamespace {\\n  static [$buildXFAObject](name, attributes) {\\n    if (LocaleSetNamespace.hasOwnProperty(name)) {\\n      return LocaleSetNamespace[name](attributes);\\n    }\\n    return undefined;\\n  }\\n\\n  static calendarSymbols(attrs) {\\n    return new CalendarSymbols(attrs);\\n  }\\n\\n  static currencySymbol(attrs) {\\n    return new CurrencySymbol(attrs);\\n  }\\n\\n  static currencySymbols(attrs) {\\n    return new CurrencySymbols(attrs);\\n  }\\n\\n  static datePattern(attrs) {\\n    return new DatePattern(attrs);\\n  }\\n\\n  static datePatterns(attrs) {\\n    return new DatePatterns(attrs);\\n  }\\n\\n  static dateTimeSymbols(attrs) {\\n    return new DateTimeSymbols(attrs);\\n  }\\n\\n  static day(attrs) {\\n    return new Day(attrs);\\n  }\\n\\n  static dayNames(attrs) {\\n    return new DayNames(attrs);\\n  }\\n\\n  static era(attrs) {\\n    return new Era(attrs);\\n  }\\n\\n  static eraNames(attrs) {\\n    return new EraNames(attrs);\\n  }\\n\\n  static locale(attrs) {\\n    return new Locale(attrs);\\n  }\\n\\n  static localeSet(attrs) {\\n    return new LocaleSet(attrs);\\n  }\\n\\n  static meridiem(attrs) {\\n    return new Meridiem(attrs);\\n  }\\n\\n  static meridiemNames(attrs) {\\n    return new MeridiemNames(attrs);\\n  }\\n\\n  static month(attrs) {\\n    return new Month(attrs);\\n  }\\n\\n  static monthNames(attrs) {\\n    return new MonthNames(attrs);\\n  }\\n\\n  static numberPattern(attrs) {\\n    return new NumberPattern(attrs);\\n  }\\n\\n  static numberPatterns(attrs) {\\n    return new NumberPatterns(attrs);\\n  }\\n\\n  static numberSymbol(attrs) {\\n    return new NumberSymbol(attrs);\\n  }\\n\\n  static numberSymbols(attrs) {\\n    return new NumberSymbols(attrs);\\n  }\\n\\n  static timePattern(attrs) {\\n    return new TimePattern(attrs);\\n  }\\n\\n  static timePatterns(attrs) {\\n    return new TimePatterns(attrs);\\n  }\\n\\n  static typeFace(attrs) {\\n    return new TypeFace(attrs);\\n  }\\n\\n  static typeFaces(attrs) {\\n    return new TypeFaces(attrs);\\n  }\\n}\\n\\nexport { LocaleSetNamespace };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { $buildXFAObject, NamespaceIds } from \\\".\u002Fnamespaces.js\\\";\\nimport { XFAObject } from \\\".\u002Fxfa_object.js\\\";\\n\\nconst SIGNATURE_NS_ID = NamespaceIds.signature.id;\\n\\nclass Signature extends XFAObject {\\n  constructor(attributes) {\\n    super(SIGNATURE_NS_ID, \\\"signature\\\", \u002F* hasChildren = *\u002F true);\\n  }\\n}\\n\\nclass SignatureNamespace {\\n  static [$buildXFAObject](name, attributes) {\\n    if (SignatureNamespace.hasOwnProperty(name)) {\\n      return SignatureNamespace[name](attributes);\\n    }\\n    return undefined;\\n  }\\n\\n  static signature(attributes) {\\n    return new Signature(attributes);\\n  }\\n}\\n\\nexport { SignatureNamespace };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { $buildXFAObject, NamespaceIds } from \\\".\u002Fnamespaces.js\\\";\\nimport { XFAObject } from \\\".\u002Fxfa_object.js\\\";\\n\\nconst STYLESHEET_NS_ID = NamespaceIds.stylesheet.id;\\n\\nclass Stylesheet extends XFAObject {\\n  constructor(attributes) {\\n    super(STYLESHEET_NS_ID, \\\"stylesheet\\\", \u002F* hasChildren = *\u002F true);\\n  }\\n}\\n\\nclass StylesheetNamespace {\\n  static [$buildXFAObject](name, attributes) {\\n    if (StylesheetNamespace.hasOwnProperty(name)) {\\n      return StylesheetNamespace[name](attributes);\\n    }\\n    return undefined;\\n  }\\n\\n  static stylesheet(attributes) {\\n    return new Stylesheet(attributes);\\n  }\\n}\\n\\nexport { StylesheetNamespace };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { $buildXFAObject, NamespaceIds } from \\\".\u002Fnamespaces.js\\\";\\nimport { $namespaceId, $nodeName, $onChildCheck } from \\\".\u002Fsymbol_utils.js\\\";\\nimport { XFAObject, XFAObjectArray } from \\\".\u002Fxfa_object.js\\\";\\n\\nconst XDP_NS_ID = NamespaceIds.xdp.id;\\n\\nclass Xdp extends XFAObject {\\n  constructor(attributes) {\\n    super(XDP_NS_ID, \\\"xdp\\\", \u002F* hasChildren = *\u002F true);\\n    this.uuid = attributes.uuid || \\\"\\\";\\n    this.timeStamp = attributes.timeStamp || \\\"\\\";\\n    this.config = null;\\n    this.connectionSet = null;\\n    this.datasets = null;\\n    this.localeSet = null;\\n    this.stylesheet = new XFAObjectArray();\\n    this.template = null;\\n  }\\n\\n  [$onChildCheck](child) {\\n    const ns = NamespaceIds[child[$nodeName]];\\n    return ns && child[$namespaceId] === ns.id;\\n  }\\n}\\n\\nclass XdpNamespace {\\n  static [$buildXFAObject](name, attributes) {\\n    if (XdpNamespace.hasOwnProperty(name)) {\\n      return XdpNamespace[name](attributes);\\n    }\\n    return undefined;\\n  }\\n\\n  static xdp(attributes) {\\n    return new Xdp(attributes);\\n  }\\n}\\n\\nexport { XdpNamespace };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  $acceptWhitespace,\\n  $childrenToHTML,\\n  $clean,\\n  $content,\\n  $extra,\\n  $getChildren,\\n  $getParent,\\n  $globalData,\\n  $nodeName,\\n  $onText,\\n  $pushGlyphs,\\n  $text,\\n  $toHTML,\\n} from \\\".\u002Fsymbol_utils.js\\\";\\nimport { $buildXFAObject, NamespaceIds } from \\\".\u002Fnamespaces.js\\\";\\nimport {\\n  fixTextIndent,\\n  fixURL,\\n  measureToString,\\n  setFontFamily,\\n} from \\\".\u002Fhtml_utils.js\\\";\\nimport { getMeasurement, HTMLResult, stripQuotes } from \\\".\u002Futils.js\\\";\\nimport { XmlObject } from \\\".\u002Fxfa_object.js\\\";\\n\\nconst XHTML_NS_ID = NamespaceIds.xhtml.id;\\nconst $richText = Symbol();\\n\\nconst VALID_STYLES = new Set([\\n  \\\"color\\\",\\n  \\\"font\\\",\\n  \\\"font-family\\\",\\n  \\\"font-size\\\",\\n  \\\"font-stretch\\\",\\n  \\\"font-style\\\",\\n  \\\"font-weight\\\",\\n  \\\"margin\\\",\\n  \\\"margin-bottom\\\",\\n  \\\"margin-left\\\",\\n  \\\"margin-right\\\",\\n  \\\"margin-top\\\",\\n  \\\"letter-spacing\\\",\\n  \\\"line-height\\\",\\n  \\\"orphans\\\",\\n  \\\"page-break-after\\\",\\n  \\\"page-break-before\\\",\\n  \\\"page-break-inside\\\",\\n  \\\"tab-interval\\\",\\n  \\\"tab-stop\\\",\\n  \\\"text-align\\\",\\n  \\\"text-decoration\\\",\\n  \\\"text-indent\\\",\\n  \\\"vertical-align\\\",\\n  \\\"widows\\\",\\n  \\\"kerning-mode\\\",\\n  \\\"xfa-font-horizontal-scale\\\",\\n  \\\"xfa-font-vertical-scale\\\",\\n  \\\"xfa-spacerun\\\",\\n  \\\"xfa-tab-stops\\\",\\n]);\\n\\nconst StyleMapping = new Map([\\n  [\\\"page-break-after\\\", \\\"breakAfter\\\"],\\n  [\\\"page-break-before\\\", \\\"breakBefore\\\"],\\n  [\\\"page-break-inside\\\", \\\"breakInside\\\"],\\n  [\\\"kerning-mode\\\", value => (value === \\\"none\\\" ? \\\"none\\\" : \\\"normal\\\")],\\n  [\\n    \\\"xfa-font-horizontal-scale\\\",\\n    value => `scaleX(${Math.max(0, parseInt(value) \u002F 100).toFixed(2)})`,\\n  ],\\n  [\\n    \\\"xfa-font-vertical-scale\\\",\\n    value => `scaleY(${Math.max(0, parseInt(value) \u002F 100).toFixed(2)})`,\\n  ],\\n  [\\\"xfa-spacerun\\\", \\\"\\\"],\\n  [\\\"xfa-tab-stops\\\", \\\"\\\"],\\n  [\\n    \\\"font-size\\\",\\n    (value, original) => {\\n      \u002F\u002F The font size must be positive.\\n      value = original.fontSize = Math.abs(getMeasurement(value));\\n      return measureToString(0.99 * value);\\n    },\\n  ],\\n  [\\\"letter-spacing\\\", value => measureToString(getMeasurement(value))],\\n  [\\\"line-height\\\", value => measureToString(getMeasurement(value))],\\n  [\\\"margin\\\", value => measureToString(getMeasurement(value))],\\n  [\\\"margin-bottom\\\", value => measureToString(getMeasurement(value))],\\n  [\\\"margin-left\\\", value => measureToString(getMeasurement(value))],\\n  [\\\"margin-right\\\", value => measureToString(getMeasurement(value))],\\n  [\\\"margin-top\\\", value => measureToString(getMeasurement(value))],\\n  [\\\"text-indent\\\", value => measureToString(getMeasurement(value))],\\n  [\\\"font-family\\\", value => value],\\n  [\\\"vertical-align\\\", value => measureToString(getMeasurement(value))],\\n]);\\n\\nconst spacesRegExp = \u002F\\\\s+\u002Fg;\\nconst crlfRegExp = \u002F[\\\\r\\\\n]+\u002Fg;\\nconst crlfForRichTextRegExp = \u002F\\\\r\\\\n?\u002Fg;\\n\\nfunction mapStyle(styleStr, node, richText) {\\n  const style = Object.create(null);\\n  if (!styleStr) {\\n    return style;\\n  }\\n  const original = Object.create(null);\\n  for (const [key, value] of styleStr.split(\\\";\\\").map(s => s.split(\\\":\\\", 2))) {\\n    const mapping = StyleMapping.get(key);\\n    if (mapping === \\\"\\\") {\\n      continue;\\n    }\\n    let newValue = value;\\n    if (mapping) {\\n      newValue =\\n        typeof mapping === \\\"string\\\" ? mapping : mapping(value, original);\\n    }\\n    if (key.endsWith(\\\"scale\\\")) {\\n      style.transform = style.transform\\n        ? `${style[key]} ${newValue}`\\n        : newValue;\\n    } else {\\n      style[key.replaceAll(\u002F-([a-zA-Z])\u002Fg, (_, x) => x.toUpperCase())] =\\n        newValue;\\n    }\\n  }\\n\\n  if (style.fontFamily) {\\n    setFontFamily(\\n      {\\n        typeface: style.fontFamily,\\n        weight: style.fontWeight || \\\"normal\\\",\\n        posture: style.fontStyle || \\\"normal\\\",\\n        size: original.fontSize || 0,\\n      },\\n      node,\\n      node[$globalData].fontFinder,\\n      style\\n    );\\n  }\\n\\n  if (\\n    richText &&\\n    style.verticalAlign &&\\n    style.verticalAlign !== \\\"0px\\\" &&\\n    style.fontSize\\n  ) {\\n    \u002F\u002F A non-zero verticalAlign means that we've a sub\u002Fsuper-script and\\n    \u002F\u002F consequently the font size must be decreased.\\n    \u002F\u002F https:\u002F\u002Fwww.adobe.com\u002Fcontent\u002Fdam\u002Facom\u002Fen\u002Fdevnet\u002Fpdf\u002Fpdfs\u002FPDF32000_2008.pdf#G11.2097514\\n    \u002F\u002F And the two following factors to position the scripts have been\\n    \u002F\u002F found here:\\n    \u002F\u002F https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSubscript_and_superscript#Desktop_publishing\\n    const SUB_SUPER_SCRIPT_FACTOR = 0.583;\\n    const VERTICAL_FACTOR = 0.333;\\n    const fontSize = getMeasurement(style.fontSize);\\n    style.fontSize = measureToString(fontSize * SUB_SUPER_SCRIPT_FACTOR);\\n    style.verticalAlign = measureToString(\\n      Math.sign(getMeasurement(style.verticalAlign)) *\\n        fontSize *\\n        VERTICAL_FACTOR\\n    );\\n  }\\n\\n  if (richText && style.fontSize) {\\n    style.fontSize = `calc(${style.fontSize} * var(--total-scale-factor))`;\\n  }\\n\\n  fixTextIndent(style);\\n  return style;\\n}\\n\\nfunction checkStyle(node) {\\n  if (!node.style) {\\n    return \\\"\\\";\\n  }\\n\\n  \u002F\u002F Remove any non-allowed keys.\\n  return node.style\\n    .split(\\\";\\\")\\n    .filter(s => !!s.trim())\\n    .map(s => s.split(\\\":\\\", 2).map(t => t.trim()))\\n    .filter(([key, value]) => {\\n      if (key === \\\"font-family\\\") {\\n        node[$globalData].usedTypefaces.add(value);\\n      }\\n      return VALID_STYLES.has(key);\\n    })\\n    .map(kv => kv.join(\\\":\\\"))\\n    .join(\\\";\\\");\\n}\\n\\nconst NoWhites = new Set([\\\"body\\\", \\\"html\\\"]);\\n\\nclass XhtmlObject extends XmlObject {\\n  constructor(attributes, name) {\\n    super(XHTML_NS_ID, name);\\n    this[$richText] = false;\\n    this.style = attributes.style || \\\"\\\";\\n  }\\n\\n  [$clean](builder) {\\n    super[$clean](builder);\\n    this.style = checkStyle(this);\\n  }\\n\\n  [$acceptWhitespace]() {\\n    return !NoWhites.has(this[$nodeName]);\\n  }\\n\\n  [$onText](str, richText = false) {\\n    if (!richText) {\\n      str = str.replaceAll(crlfRegExp, \\\"\\\");\\n      if (!this.style.includes(\\\"xfa-spacerun:yes\\\")) {\\n        str = str.replaceAll(spacesRegExp, \\\" \\\");\\n      }\\n    } else {\\n      this[$richText] = true;\\n    }\\n\\n    if (str) {\\n      this[$content] += str;\\n    }\\n  }\\n\\n  [$pushGlyphs](measure, mustPop = true) {\\n    const xfaFont = Object.create(null);\\n    const margin = {\\n      top: NaN,\\n      bottom: NaN,\\n      left: NaN,\\n      right: NaN,\\n    };\\n    let lineHeight = null;\\n    for (const [key, value] of this.style\\n      .split(\\\";\\\")\\n      .map(s => s.split(\\\":\\\", 2))) {\\n      switch (key) {\\n        case \\\"font-family\\\":\\n          xfaFont.typeface = stripQuotes(value);\\n          break;\\n        case \\\"font-size\\\":\\n          xfaFont.size = getMeasurement(value);\\n          break;\\n        case \\\"font-weight\\\":\\n          xfaFont.weight = value;\\n          break;\\n        case \\\"font-style\\\":\\n          xfaFont.posture = value;\\n          break;\\n        case \\\"letter-spacing\\\":\\n          xfaFont.letterSpacing = getMeasurement(value);\\n          break;\\n        case \\\"margin\\\":\\n          const values = value.split(\u002F \\\\t\u002F).map(x => getMeasurement(x));\\n          switch (values.length) {\\n            case 1:\\n              margin.top =\\n                margin.bottom =\\n                margin.left =\\n                margin.right =\\n                  values[0];\\n              break;\\n            case 2:\\n              margin.top = margin.bottom = values[0];\\n              margin.left = margin.right = values[1];\\n              break;\\n            case 3:\\n              margin.top = values[0];\\n              margin.bottom = values[2];\\n              margin.left = margin.right = values[1];\\n              break;\\n            case 4:\\n              margin.top = values[0];\\n              margin.left = values[1];\\n              margin.bottom = values[2];\\n              margin.right = values[3];\\n              break;\\n          }\\n          break;\\n        case \\\"margin-top\\\":\\n          margin.top = getMeasurement(value);\\n          break;\\n        case \\\"margin-bottom\\\":\\n          margin.bottom = getMeasurement(value);\\n          break;\\n        case \\\"margin-left\\\":\\n          margin.left = getMeasurement(value);\\n          break;\\n        case \\\"margin-right\\\":\\n          margin.right = getMeasurement(value);\\n          break;\\n        case \\\"line-height\\\":\\n          lineHeight = getMeasurement(value);\\n          break;\\n      }\\n    }\\n\\n    measure.pushData(xfaFont, margin, lineHeight);\\n\\n    if (this[$content]) {\\n      measure.addString(this[$content]);\\n    } else {\\n      for (const child of this[$getChildren]()) {\\n        if (child[$nodeName] === \\\"#text\\\") {\\n          measure.addString(child[$content]);\\n          continue;\\n        }\\n        child[$pushGlyphs](measure);\\n      }\\n    }\\n\\n    if (mustPop) {\\n      measure.popFont();\\n    }\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    const children = [];\\n    this[$extra] = {\\n      children,\\n    };\\n\\n    this[$childrenToHTML]({});\\n\\n    if (children.length === 0 && !this[$content]) {\\n      return HTMLResult.EMPTY;\\n    }\\n\\n    let value;\\n    if (this[$richText]) {\\n      value = this[$content]\\n        ? this[$content].replaceAll(crlfForRichTextRegExp, \\\"\\\\n\\\")\\n        : undefined;\\n    } else {\\n      value = this[$content] || undefined;\\n    }\\n\\n    return HTMLResult.success({\\n      name: this[$nodeName],\\n      attributes: {\\n        href: this.href,\\n        style: mapStyle(this.style, this, this[$richText]),\\n      },\\n      children,\\n      value,\\n    });\\n  }\\n}\\n\\nclass A extends XhtmlObject {\\n  constructor(attributes) {\\n    super(attributes, \\\"a\\\");\\n    this.href = fixURL(attributes.href) || \\\"\\\";\\n  }\\n}\\n\\nclass B extends XhtmlObject {\\n  constructor(attributes) {\\n    super(attributes, \\\"b\\\");\\n  }\\n\\n  [$pushGlyphs](measure) {\\n    measure.pushFont({ weight: \\\"bold\\\" });\\n    super[$pushGlyphs](measure);\\n    measure.popFont();\\n  }\\n}\\n\\nclass Body extends XhtmlObject {\\n  constructor(attributes) {\\n    super(attributes, \\\"body\\\");\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    const res = super[$toHTML](availableSpace);\\n    const { html } = res;\\n    if (!html) {\\n      return HTMLResult.EMPTY;\\n    }\\n    html.name = \\\"div\\\";\\n    html.attributes.class = [\\\"xfaRich\\\"];\\n    return res;\\n  }\\n}\\n\\nclass Br extends XhtmlObject {\\n  constructor(attributes) {\\n    super(attributes, \\\"br\\\");\\n  }\\n\\n  [$text]() {\\n    return \\\"\\\\n\\\";\\n  }\\n\\n  [$pushGlyphs](measure) {\\n    measure.addString(\\\"\\\\n\\\");\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    return HTMLResult.success({\\n      name: \\\"br\\\",\\n    });\\n  }\\n}\\n\\nclass Html extends XhtmlObject {\\n  constructor(attributes) {\\n    super(attributes, \\\"html\\\");\\n  }\\n\\n  [$toHTML](availableSpace) {\\n    const children = [];\\n    this[$extra] = {\\n      children,\\n    };\\n\\n    this[$childrenToHTML]({});\\n    if (children.length === 0) {\\n      return HTMLResult.success({\\n        name: \\\"div\\\",\\n        attributes: {\\n          class: [\\\"xfaRich\\\"],\\n          style: {},\\n        },\\n        value: this[$content] || \\\"\\\",\\n      });\\n    }\\n\\n    if (children.length === 1) {\\n      const child = children[0];\\n      if (child.attributes?.class.includes(\\\"xfaRich\\\")) {\\n        return HTMLResult.success(child);\\n      }\\n    }\\n\\n    return HTMLResult.success({\\n      name: \\\"div\\\",\\n      attributes: {\\n        class: [\\\"xfaRich\\\"],\\n        style: {},\\n      },\\n      children,\\n    });\\n  }\\n}\\n\\nclass I extends XhtmlObject {\\n  constructor(attributes) {\\n    super(attributes, \\\"i\\\");\\n  }\\n\\n  [$pushGlyphs](measure) {\\n    measure.pushFont({ posture: \\\"italic\\\" });\\n    super[$pushGlyphs](measure);\\n    measure.popFont();\\n  }\\n}\\n\\nclass Li extends XhtmlObject {\\n  constructor(attributes) {\\n    super(attributes, \\\"li\\\");\\n  }\\n}\\n\\nclass Ol extends XhtmlObject {\\n  constructor(attributes) {\\n    super(attributes, \\\"ol\\\");\\n  }\\n}\\n\\nclass P extends XhtmlObject {\\n  constructor(attributes) {\\n    super(attributes, \\\"p\\\");\\n  }\\n\\n  [$pushGlyphs](measure) {\\n    super[$pushGlyphs](measure, \u002F* mustPop = *\u002F false);\\n    measure.addString(\\\"\\\\n\\\");\\n    measure.addPara();\\n    measure.popFont();\\n  }\\n\\n  [$text]() {\\n    const siblings = this[$getParent]()[$getChildren]();\\n    if (siblings.at(-1) === this) {\\n      return super[$text]();\\n    }\\n    return super[$text]() + \\\"\\\\n\\\";\\n  }\\n}\\n\\nclass Span extends XhtmlObject {\\n  constructor(attributes) {\\n    super(attributes, \\\"span\\\");\\n  }\\n}\\n\\nclass Sub extends XhtmlObject {\\n  constructor(attributes) {\\n    super(attributes, \\\"sub\\\");\\n  }\\n}\\n\\nclass Sup extends XhtmlObject {\\n  constructor(attributes) {\\n    super(attributes, \\\"sup\\\");\\n  }\\n}\\n\\nclass Ul extends XhtmlObject {\\n  constructor(attributes) {\\n    super(attributes, \\\"ul\\\");\\n  }\\n}\\n\\nclass XhtmlNamespace {\\n  static [$buildXFAObject](name, attributes) {\\n    if (XhtmlNamespace.hasOwnProperty(name)) {\\n      return XhtmlNamespace[name](attributes);\\n    }\\n    return undefined;\\n  }\\n\\n  static a(attributes) {\\n    return new A(attributes);\\n  }\\n\\n  static b(attributes) {\\n    return new B(attributes);\\n  }\\n\\n  static body(attributes) {\\n    return new Body(attributes);\\n  }\\n\\n  static br(attributes) {\\n    return new Br(attributes);\\n  }\\n\\n  static html(attributes) {\\n    return new Html(attributes);\\n  }\\n\\n  static i(attributes) {\\n    return new I(attributes);\\n  }\\n\\n  static li(attributes) {\\n    return new Li(attributes);\\n  }\\n\\n  static ol(attributes) {\\n    return new Ol(attributes);\\n  }\\n\\n  static p(attributes) {\\n    return new P(attributes);\\n  }\\n\\n  static span(attributes) {\\n    return new Span(attributes);\\n  }\\n\\n  static sub(attributes) {\\n    return new Sub(attributes);\\n  }\\n\\n  static sup(attributes) {\\n    return new Sup(attributes);\\n  }\\n\\n  static ul(attributes) {\\n    return new Ul(attributes);\\n  }\\n}\\n\\nexport { XhtmlNamespace };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { ConfigNamespace } from \\\".\u002Fconfig.js\\\";\\nimport { ConnectionSetNamespace } from \\\".\u002Fconnection_set.js\\\";\\nimport { DatasetsNamespace } from \\\".\u002Fdatasets.js\\\";\\nimport { LocaleSetNamespace } from \\\".\u002Flocale_set.js\\\";\\nimport { SignatureNamespace } from \\\".\u002Fsignature.js\\\";\\nimport { StylesheetNamespace } from \\\".\u002Fstylesheet.js\\\";\\nimport { TemplateNamespace } from \\\".\u002Ftemplate.js\\\";\\nimport { XdpNamespace } from \\\".\u002Fxdp.js\\\";\\nimport { XhtmlNamespace } from \\\".\u002Fxhtml.js\\\";\\n\\nconst NamespaceSetUp = {\\n  config: ConfigNamespace,\\n  connection: ConnectionSetNamespace,\\n  datasets: DatasetsNamespace,\\n  localeSet: LocaleSetNamespace,\\n  signature: SignatureNamespace,\\n  stylesheet: StylesheetNamespace,\\n  template: TemplateNamespace,\\n  xdp: XdpNamespace,\\n  xhtml: XhtmlNamespace,\\n};\\n\\nexport { NamespaceSetUp };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { $buildXFAObject } from \\\".\u002Fnamespaces.js\\\";\\nimport { XmlObject } from \\\".\u002Fxfa_object.js\\\";\\n\\nclass UnknownNamespace {\\n  constructor(nsId) {\\n    this.namespaceId = nsId;\\n  }\\n\\n  [$buildXFAObject](name, attributes) {\\n    return new XmlObject(this.namespaceId, name, attributes);\\n  }\\n}\\n\\nexport { UnknownNamespace };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { $buildXFAObject, NamespaceIds } from \\\".\u002Fnamespaces.js\\\";\\nimport {\\n  $cleanup,\\n  $finalize,\\n  $ids,\\n  $isNsAgnostic,\\n  $nsAttributes,\\n  $onChild,\\n  $resolvePrototypes,\\n  $root,\\n} from \\\".\u002Fsymbol_utils.js\\\";\\nimport { NamespaceSetUp } from \\\".\u002Fsetup.js\\\";\\nimport { Template } from \\\".\u002Ftemplate.js\\\";\\nimport { UnknownNamespace } from \\\".\u002Funknown.js\\\";\\nimport { warn } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport { XFAObject } from \\\".\u002Fxfa_object.js\\\";\\n\\nclass Root extends XFAObject {\\n  constructor(ids) {\\n    super(-1, \\\"root\\\", Object.create(null));\\n    this.element = null;\\n    this[$ids] = ids;\\n  }\\n\\n  [$onChild](child) {\\n    this.element = child;\\n    return true;\\n  }\\n\\n  [$finalize]() {\\n    super[$finalize]();\\n    if (this.element.template instanceof Template) {\\n      \u002F\u002F Set the root element in $ids using a symbol in order\\n      \u002F\u002F to avoid conflict with real IDs.\\n      this[$ids].set($root, this.element);\\n\\n      this.element.template[$resolvePrototypes](this[$ids]);\\n      this.element.template[$ids] = this[$ids];\\n    }\\n  }\\n}\\n\\nclass Empty extends XFAObject {\\n  constructor() {\\n    super(-1, \\\"\\\", Object.create(null));\\n  }\\n\\n  [$onChild](_) {\\n    return false;\\n  }\\n}\\n\\nclass Builder {\\n  constructor(rootNameSpace = null) {\\n    this._namespaceStack = [];\\n    this._nsAgnosticLevel = 0;\\n\\n    \u002F\u002F Each prefix has its own stack\\n    this._namespacePrefixes = new Map();\\n    this._namespaces = new Map();\\n    this._nextNsId = Math.max(\\n      ...Object.values(NamespaceIds).map(({ id }) => id)\\n    );\\n    this._currentNamespace =\\n      rootNameSpace || new UnknownNamespace(++this._nextNsId);\\n  }\\n\\n  buildRoot(ids) {\\n    return new Root(ids);\\n  }\\n\\n  build({ nsPrefix, name, attributes, namespace, prefixes }) {\\n    const hasNamespaceDef = namespace !== null;\\n    if (hasNamespaceDef) {\\n      \u002F\u002F Define the current namespace to use.\\n      this._namespaceStack.push(this._currentNamespace);\\n      this._currentNamespace = this._searchNamespace(namespace);\\n    }\\n\\n    if (prefixes) {\\n      \u002F\u002F The xml node may have namespace prefix definitions\\n      this._addNamespacePrefix(prefixes);\\n    }\\n\\n    if (attributes.hasOwnProperty($nsAttributes)) {\\n      \u002F\u002F Only support xfa-data namespace.\\n      const dataTemplate = NamespaceSetUp.datasets;\\n      const nsAttrs = attributes[$nsAttributes];\\n      let xfaAttrs = null;\\n      for (const [ns, attrs] of Object.entries(nsAttrs)) {\\n        const nsToUse = this._getNamespaceToUse(ns);\\n        if (nsToUse === dataTemplate) {\\n          xfaAttrs = { xfa: attrs };\\n          break;\\n        }\\n      }\\n      if (xfaAttrs) {\\n        attributes[$nsAttributes] = xfaAttrs;\\n      } else {\\n        delete attributes[$nsAttributes];\\n      }\\n    }\\n\\n    const namespaceToUse = this._getNamespaceToUse(nsPrefix);\\n    const node =\\n      namespaceToUse?.[$buildXFAObject](name, attributes) || new Empty();\\n\\n    if (node[$isNsAgnostic]()) {\\n      this._nsAgnosticLevel++;\\n    }\\n\\n    \u002F\u002F In case the node has some namespace things,\\n    \u002F\u002F we must pop the different stacks.\\n    if (hasNamespaceDef || prefixes || node[$isNsAgnostic]()) {\\n      node[$cleanup] = {\\n        hasNamespace: hasNamespaceDef,\\n        prefixes,\\n        nsAgnostic: node[$isNsAgnostic](),\\n      };\\n    }\\n\\n    return node;\\n  }\\n\\n  isNsAgnostic() {\\n    return this._nsAgnosticLevel > 0;\\n  }\\n\\n  _searchNamespace(nsName) {\\n    let ns = this._namespaces.get(nsName);\\n    if (ns) {\\n      return ns;\\n    }\\n    for (const [name, { check }] of Object.entries(NamespaceIds)) {\\n      if (check(nsName)) {\\n        ns = NamespaceSetUp[name];\\n        if (ns) {\\n          this._namespaces.set(nsName, ns);\\n          return ns;\\n        }\\n        \u002F\u002F The namespace is known but not handled.\\n        break;\\n      }\\n    }\\n\\n    ns = new UnknownNamespace(++this._nextNsId);\\n    this._namespaces.set(nsName, ns);\\n    return ns;\\n  }\\n\\n  _addNamespacePrefix(prefixes) {\\n    for (const { prefix, value } of prefixes) {\\n      const namespace = this._searchNamespace(value);\\n      let prefixStack = this._namespacePrefixes.get(prefix);\\n      if (!prefixStack) {\\n        prefixStack = [];\\n        this._namespacePrefixes.set(prefix, prefixStack);\\n      }\\n      prefixStack.push(namespace);\\n    }\\n  }\\n\\n  _getNamespaceToUse(prefix) {\\n    if (!prefix) {\\n      return this._currentNamespace;\\n    }\\n    const prefixStack = this._namespacePrefixes.get(prefix);\\n    if (prefixStack?.length > 0) {\\n      return prefixStack.at(-1);\\n    }\\n\\n    warn(`Unknown namespace prefix: ${prefix}.`);\\n    return null;\\n  }\\n\\n  clean(data) {\\n    const { hasNamespace, prefixes, nsAgnostic } = data;\\n    if (hasNamespace) {\\n      this._currentNamespace = this._namespaceStack.pop();\\n    }\\n    if (prefixes) {\\n      prefixes.forEach(({ prefix }) => {\\n        this._namespacePrefixes.get(prefix).pop();\\n      });\\n    }\\n    if (nsAgnostic) {\\n      this._nsAgnosticLevel--;\\n    }\\n  }\\n}\\n\\nexport { Builder };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  $acceptWhitespace,\\n  $clean,\\n  $content,\\n  $finalize,\\n  $globalData,\\n  $isCDATAXml,\\n  $nsAttributes,\\n  $onChild,\\n  $onText,\\n  $setId,\\n} from \\\".\u002Fsymbol_utils.js\\\";\\nimport { XMLParserBase, XMLParserErrorCode } from \\\"..\u002Fxml_parser.js\\\";\\nimport { Builder } from \\\".\u002Fbuilder.js\\\";\\nimport { warn } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\n\\nclass XFAParser extends XMLParserBase {\\n  constructor(rootNameSpace = null, richText = false) {\\n    super();\\n    this._builder = new Builder(rootNameSpace);\\n    this._stack = [];\\n    this._globalData = {\\n      usedTypefaces: new Set(),\\n    };\\n    this._ids = new Map();\\n    this._current = this._builder.buildRoot(this._ids);\\n    this._errorCode = XMLParserErrorCode.NoError;\\n    this._whiteRegex = \u002F^\\\\s+$\u002F;\\n    this._nbsps = \u002F\\\\xa0+\u002Fg;\\n    this._richText = richText;\\n  }\\n\\n  parse(data) {\\n    this.parseXml(data);\\n\\n    if (this._errorCode !== XMLParserErrorCode.NoError) {\\n      return undefined;\\n    }\\n\\n    this._current[$finalize]();\\n\\n    return this._current.element;\\n  }\\n\\n  onText(text) {\\n    \u002F\u002F Normally by definition a &nbsp is unbreakable\\n    \u002F\u002F but in real life Acrobat can break strings on &nbsp.\\n    text = text.replace(this._nbsps, match => match.slice(1) + \\\" \\\");\\n    if (this._richText || this._current[$acceptWhitespace]()) {\\n      this._current[$onText](text, this._richText);\\n      return;\\n    }\\n\\n    if (this._whiteRegex.test(text)) {\\n      return;\\n    }\\n    this._current[$onText](text.trim());\\n  }\\n\\n  onCdata(text) {\\n    this._current[$onText](text);\\n  }\\n\\n  _mkAttributes(attributes, tagName) {\\n    \u002F\u002F Transform attributes into an object and get out\\n    \u002F\u002F namespaces information.\\n    let namespace = null;\\n    let prefixes = null;\\n    const attributeObj = Object.create({});\\n    for (const { name, value } of attributes) {\\n      if (name === \\\"xmlns\\\") {\\n        if (!namespace) {\\n          namespace = value;\\n        } else {\\n          warn(`XFA - multiple namespace definition in \u003C${tagName}>`);\\n        }\\n      } else if (name.startsWith(\\\"xmlns:\\\")) {\\n        const prefix = name.substring(\\\"xmlns:\\\".length);\\n        prefixes ??= [];\\n        prefixes.push({ prefix, value });\\n      } else {\\n        const i = name.indexOf(\\\":\\\");\\n        if (i === -1) {\\n          attributeObj[name] = value;\\n        } else {\\n          \u002F\u002F Attributes can have their own namespace.\\n          \u002F\u002F For example in data, we can have \u003Cfoo xfa:dataNode=\\\"dataGroup\\\"\u002F>\\n          const nsAttrs = (attributeObj[$nsAttributes] ??= Object.create(null));\\n          const [ns, attrName] = [name.slice(0, i), name.slice(i + 1)];\\n          const attrs = (nsAttrs[ns] ||= Object.create(null));\\n          attrs[attrName] = value;\\n        }\\n      }\\n    }\\n\\n    return [namespace, prefixes, attributeObj];\\n  }\\n\\n  _getNameAndPrefix(name, nsAgnostic) {\\n    const i = name.indexOf(\\\":\\\");\\n    if (i === -1) {\\n      return [name, null];\\n    }\\n    return [name.substring(i + 1), nsAgnostic ? \\\"\\\" : name.substring(0, i)];\\n  }\\n\\n  onBeginElement(tagName, attributes, isEmpty) {\\n    const [namespace, prefixes, attributesObj] = this._mkAttributes(\\n      attributes,\\n      tagName\\n    );\\n    const [name, nsPrefix] = this._getNameAndPrefix(\\n      tagName,\\n      this._builder.isNsAgnostic()\\n    );\\n    const node = this._builder.build({\\n      nsPrefix,\\n      name,\\n      attributes: attributesObj,\\n      namespace,\\n      prefixes,\\n    });\\n    node[$globalData] = this._globalData;\\n\\n    if (isEmpty) {\\n      \u002F\u002F No children: just push the node into its parent.\\n      node[$finalize]();\\n      if (this._current[$onChild](node)) {\\n        node[$setId](this._ids);\\n      }\\n      node[$clean](this._builder);\\n      return;\\n    }\\n\\n    this._stack.push(this._current);\\n    this._current = node;\\n  }\\n\\n  onEndElement(name) {\\n    const node = this._current;\\n    if (node[$isCDATAXml]() && typeof node[$content] === \\\"string\\\") {\\n      const parser = new XFAParser();\\n      parser._globalData = this._globalData;\\n      const root = parser.parse(node[$content]);\\n      node[$content] = null;\\n      node[$onChild](root);\\n    }\\n\\n    node[$finalize]();\\n    this._current = this._stack.pop();\\n    if (this._current[$onChild](node)) {\\n      node[$setId](this._ids);\\n    }\\n    node[$clean](this._builder);\\n  }\\n\\n  onError(code) {\\n    this._errorCode = code;\\n  }\\n}\\n\\nexport { XFAParser };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  $appendChild,\\n  $globalData,\\n  $nodeName,\\n  $text,\\n  $toHTML,\\n  $toPages,\\n} from \\\".\u002Fsymbol_utils.js\\\";\\nimport { Binder } from \\\".\u002Fbind.js\\\";\\nimport { DataHandler } from \\\".\u002Fdata.js\\\";\\nimport { FontFinder } from \\\".\u002Ffonts.js\\\";\\nimport { stripQuotes } from \\\".\u002Futils.js\\\";\\nimport { warn } from \\\"..\u002F..\u002Fshared\u002Futil.js\\\";\\nimport { XFAParser } from \\\".\u002Fparser.js\\\";\\nimport { XhtmlNamespace } from \\\".\u002Fxhtml.js\\\";\\n\\nclass XFAFactory {\\n  constructor(data) {\\n    try {\\n      this.root = new XFAParser().parse(XFAFactory._createDocument(data));\\n      const binder = new Binder(this.root);\\n      this.form = binder.bind();\\n      this.dataHandler = new DataHandler(this.root, binder.getData());\\n      this.form[$globalData].template = this.form;\\n    } catch (e) {\\n      warn(`XFA - an error occurred during parsing and binding: ${e}`);\\n    }\\n  }\\n\\n  isValid() {\\n    return !!(this.root && this.form);\\n  }\\n\\n  \u002F**\\n   * In order to avoid to block the event loop, the conversion\\n   * into pages is made asynchronously.\\n   *\u002F\\n  _createPagesHelper() {\\n    const iterator = this.form[$toPages]();\\n    return new Promise((resolve, reject) => {\\n      const nextIteration = () => {\\n        try {\\n          const value = iterator.next();\\n          if (value.done) {\\n            resolve(value.value);\\n          } else {\\n            setTimeout(nextIteration, 0);\\n          }\\n        } catch (e) {\\n          reject(e);\\n        }\\n      };\\n      setTimeout(nextIteration, 0);\\n    });\\n  }\\n\\n  async _createPages() {\\n    try {\\n      this.pages = await this._createPagesHelper();\\n      this.dims = this.pages.children.map(c => {\\n        const { width, height } = c.attributes.style;\\n        return [0, 0, parseInt(width), parseInt(height)];\\n      });\\n    } catch (e) {\\n      warn(`XFA - an error occurred during layout: ${e}`);\\n    }\\n  }\\n\\n  getBoundingBox(pageIndex) {\\n    return this.dims[pageIndex];\\n  }\\n\\n  async getNumPages() {\\n    if (!this.pages) {\\n      await this._createPages();\\n    }\\n    return this.dims.length;\\n  }\\n\\n  setImages(images) {\\n    this.form[$globalData].images = images;\\n  }\\n\\n  setFonts(fonts) {\\n    this.form[$globalData].fontFinder = new FontFinder(fonts);\\n    const missingFonts = [];\\n    for (let typeface of this.form[$globalData].usedTypefaces) {\\n      typeface = stripQuotes(typeface);\\n      const font = this.form[$globalData].fontFinder.find(typeface);\\n      if (!font) {\\n        missingFonts.push(typeface);\\n      }\\n    }\\n\\n    if (missingFonts.length > 0) {\\n      return missingFonts;\\n    }\\n\\n    return null;\\n  }\\n\\n  appendFonts(fonts, reallyMissingFonts) {\\n    this.form[$globalData].fontFinder.add(fonts, reallyMissingFonts);\\n  }\\n\\n  async getPages() {\\n    if (!this.pages) {\\n      await this._createPages();\\n    }\\n    const pages = this.pages;\\n    this.pages = null;\\n    return pages;\\n  }\\n\\n  serializeData(storage) {\\n    return this.dataHandler.serialize(storage);\\n  }\\n\\n  static _createDocument(data) {\\n    if (!data[\\\"\u002Fxdp:xdp\\\"]) {\\n      return data[\\\"xdp:xdp\\\"];\\n    }\\n    return Object.values(data).join(\\\"\\\");\\n  }\\n\\n  static getRichTextAsHtml(rc) {\\n    if (!rc || typeof rc !== \\\"string\\\") {\\n      return null;\\n    }\\n\\n    try {\\n      let root = new XFAParser(XhtmlNamespace, \u002F* richText *\u002F true).parse(rc);\\n      if (![\\\"body\\\", \\\"xhtml\\\"].includes(root[$nodeName])) {\\n        \u002F\u002F No body, so create one.\\n        const newRoot = XhtmlNamespace.body({});\\n        newRoot[$appendChild](root);\\n        root = newRoot;\\n      }\\n\\n      const result = root[$toHTML]();\\n      if (!result.success) {\\n        return null;\\n      }\\n\\n      const { html } = result;\\n      const { attributes } = html;\\n      if (attributes) {\\n        if (attributes.class) {\\n          attributes.class = attributes.class.filter(\\n            attr => !attr.startsWith(\\\"xfa\\\")\\n          );\\n        }\\n        attributes.dir = \\\"auto\\\";\\n      }\\n\\n      return { html, str: root[$text]() };\\n    } catch (e) {\\n      warn(`XFA - an error occurred during parsing of rich text: ${e}`);\\n    }\\n    return null;\\n  }\\n}\\n\\nexport { XFAFactory };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  AnnotationActionEventType,\\n  AnnotationBorderStyleType,\\n  AnnotationEditorType,\\n  AnnotationFieldFlag,\\n  AnnotationFlag,\\n  AnnotationReplyType,\\n  AnnotationType,\\n  assert,\\n  BASELINE_FACTOR,\\n  FeatureTest,\\n  getModificationDate,\\n  info,\\n  isArrayEqual,\\n  LINE_DESCENT_FACTOR,\\n  LINE_FACTOR,\\n  OPS,\\n  RenderingIntentFlag,\\n  shadow,\\n  stringToPDFString,\\n  unreachable,\\n  Util,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  collectActions,\\n  escapeString,\\n  getInheritableProperty,\\n  getParentToUpdate,\\n  getRotationMatrix,\\n  IDENTITY_MATRIX,\\n  isNumberArray,\\n  lookupMatrix,\\n  lookupNormalRect,\\n  lookupRect,\\n  numberToString,\\n  RESOURCES_KEYS_OPERATOR_LIST,\\n  RESOURCES_KEYS_TEXT_CONTENT,\\n  stringToAsciiOrUTF16BE,\\n  stringToUTF16String,\\n} from \\\".\u002Fcore_utils.js\\\";\\nimport {\\n  createDefaultAppearance,\\n  FakeUnicodeFont,\\n  getPdfColor,\\n  parseAppearanceStream,\\n  parseDefaultAppearance,\\n} from \\\".\u002Fdefault_appearance.js\\\";\\nimport { Dict, isName, isRefsEqual, Name, Ref, RefSet } from \\\".\u002Fprimitives.js\\\";\\nimport { Stream, StringStream } from \\\".\u002Fstream.js\\\";\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { bidi } from \\\".\u002Fbidi.js\\\";\\nimport { Catalog } from \\\".\u002Fcatalog.js\\\";\\nimport { ColorSpaceUtils } from \\\".\u002Fcolorspace_utils.js\\\";\\nimport { FileSpec } from \\\".\u002Ffile_spec.js\\\";\\nimport { JpegStream } from \\\".\u002Fjpeg_stream.js\\\";\\nimport { ObjectLoader } from \\\".\u002Fobject_loader.js\\\";\\nimport { OperatorList } from \\\".\u002Foperator_list.js\\\";\\nimport { XFAFactory } from \\\".\u002Fxfa\u002Ffactory.js\\\";\\n\\nclass AnnotationFactory {\\n  static createGlobals(pdfManager) {\\n    return Promise.all([\\n      pdfManager.ensureCatalog(\\\"acroForm\\\"),\\n      pdfManager.ensureDoc(\\\"xfaDatasets\\\"),\\n      pdfManager.ensureCatalog(\\\"structTreeRoot\\\"),\\n      \u002F\u002F Only necessary to prevent the `Catalog.baseUrl`-getter, used\\n      \u002F\u002F with some Annotations, from throwing and thus breaking parsing:\\n      pdfManager.ensureCatalog(\\\"baseUrl\\\"),\\n      \u002F\u002F Only necessary to prevent the `Catalog.attachments`-getter, used\\n      \u002F\u002F with \\\"GoToE\\\" actions, from throwing and thus breaking parsing:\\n      pdfManager.ensureCatalog(\\\"attachments\\\"),\\n      pdfManager.ensureCatalog(\\\"globalColorSpaceCache\\\"),\\n    ]).then(\\n      ([\\n        acroForm,\\n        xfaDatasets,\\n        structTreeRoot,\\n        baseUrl,\\n        attachments,\\n        globalColorSpaceCache,\\n      ]) => ({\\n        pdfManager,\\n        acroForm: acroForm instanceof Dict ? acroForm : Dict.empty,\\n        xfaDatasets,\\n        structTreeRoot,\\n        baseUrl,\\n        attachments,\\n        globalColorSpaceCache,\\n      }),\\n      reason => {\\n        warn(`createGlobals: \\\"${reason}\\\".`);\\n        return null;\\n      }\\n    );\\n  }\\n\\n  \u002F**\\n   * Create an `Annotation` object of the correct type for the given reference\\n   * to an annotation dictionary. This yields a promise that is resolved when\\n   * the `Annotation` object is constructed.\\n   *\\n   * @param {XRef} xref\\n   * @param {Object} ref\\n   * @params {Object} annotationGlobals\\n   * @param {Object} idFactory\\n   * @param {boolean} [collectFields]\\n   * @param {Object} [orphanFields]\\n   * @param {Object} [pageRef]\\n   * @returns {Promise} A promise that is resolved with an {Annotation}\\n   *   instance.\\n   *\u002F\\n  static async create(\\n    xref,\\n    ref,\\n    annotationGlobals,\\n    idFactory,\\n    collectFields,\\n    orphanFields,\\n    pageRef\\n  ) {\\n    const pageIndex = collectFields\\n      ? await this._getPageIndex(xref, ref, annotationGlobals.pdfManager)\\n      : null;\\n\\n    return annotationGlobals.pdfManager.ensure(this, \\\"_create\\\", [\\n      xref,\\n      ref,\\n      annotationGlobals,\\n      idFactory,\\n      collectFields,\\n      orphanFields,\\n      pageIndex,\\n      pageRef,\\n    ]);\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  static _create(\\n    xref,\\n    ref,\\n    annotationGlobals,\\n    idFactory,\\n    collectFields = false,\\n    orphanFields = null,\\n    pageIndex = null,\\n    pageRef = null\\n  ) {\\n    const dict = xref.fetchIfRef(ref);\\n    if (!(dict instanceof Dict)) {\\n      return undefined;\\n    }\\n\\n    const { acroForm, pdfManager } = annotationGlobals;\\n    const id =\\n      ref instanceof Ref ? ref.toString() : `annot_${idFactory.createObjId()}`;\\n\\n    \u002F\u002F Determine the annotation's subtype.\\n    let subtype = dict.get(\\\"Subtype\\\");\\n    subtype = subtype instanceof Name ? subtype.name : null;\\n\\n    \u002F\u002F Return the right annotation object based on the subtype and field type.\\n    const parameters = {\\n      xref,\\n      ref,\\n      dict,\\n      subtype,\\n      id,\\n      annotationGlobals,\\n      collectFields,\\n      orphanFields,\\n      needAppearances:\\n        !collectFields && acroForm.get(\\\"NeedAppearances\\\") === true,\\n      pageIndex,\\n      evaluatorOptions: pdfManager.evaluatorOptions,\\n      pageRef,\\n    };\\n\\n    switch (subtype) {\\n      case \\\"Link\\\":\\n        return new LinkAnnotation(parameters);\\n\\n      case \\\"Text\\\":\\n        return new TextAnnotation(parameters);\\n\\n      case \\\"Widget\\\":\\n        let fieldType = getInheritableProperty({ dict, key: \\\"FT\\\" });\\n        fieldType = fieldType instanceof Name ? fieldType.name : null;\\n\\n        switch (fieldType) {\\n          case \\\"Tx\\\":\\n            return new TextWidgetAnnotation(parameters);\\n          case \\\"Btn\\\":\\n            return new ButtonWidgetAnnotation(parameters);\\n          case \\\"Ch\\\":\\n            return new ChoiceWidgetAnnotation(parameters);\\n          case \\\"Sig\\\":\\n            return new SignatureWidgetAnnotation(parameters);\\n        }\\n        warn(\\n          `Unimplemented widget field type \\\"${fieldType}\\\", ` +\\n            \\\"falling back to base field type.\\\"\\n        );\\n        return new WidgetAnnotation(parameters);\\n\\n      case \\\"Popup\\\":\\n        return new PopupAnnotation(parameters);\\n\\n      case \\\"FreeText\\\":\\n        return new FreeTextAnnotation(parameters);\\n\\n      case \\\"Line\\\":\\n        return new LineAnnotation(parameters);\\n\\n      case \\\"Square\\\":\\n        return new SquareAnnotation(parameters);\\n\\n      case \\\"Circle\\\":\\n        return new CircleAnnotation(parameters);\\n\\n      case \\\"PolyLine\\\":\\n        return new PolylineAnnotation(parameters);\\n\\n      case \\\"Polygon\\\":\\n        return new PolygonAnnotation(parameters);\\n\\n      case \\\"Caret\\\":\\n        return new CaretAnnotation(parameters);\\n\\n      case \\\"Ink\\\":\\n        return new InkAnnotation(parameters);\\n\\n      case \\\"Highlight\\\":\\n        return new HighlightAnnotation(parameters);\\n\\n      case \\\"Underline\\\":\\n        return new UnderlineAnnotation(parameters);\\n\\n      case \\\"Squiggly\\\":\\n        return new SquigglyAnnotation(parameters);\\n\\n      case \\\"StrikeOut\\\":\\n        return new StrikeOutAnnotation(parameters);\\n\\n      case \\\"Stamp\\\":\\n        return new StampAnnotation(parameters);\\n\\n      case \\\"FileAttachment\\\":\\n        return new FileAttachmentAnnotation(parameters);\\n\\n      default:\\n        if (!collectFields) {\\n          if (!subtype) {\\n            warn(\\\"Annotation is missing the required \u002FSubtype.\\\");\\n          } else {\\n            warn(\\n              `Unimplemented annotation type \\\"${subtype}\\\", ` +\\n                \\\"falling back to base annotation.\\\"\\n            );\\n          }\\n        }\\n        return new Annotation(parameters);\\n    }\\n  }\\n\\n  static async _getPageIndex(xref, ref, pdfManager) {\\n    try {\\n      const annotDict = await xref.fetchIfRefAsync(ref);\\n      if (!(annotDict instanceof Dict)) {\\n        return -1;\\n      }\\n      const pageRef = annotDict.getRaw(\\\"P\\\");\\n      if (pageRef instanceof Ref) {\\n        try {\\n          const pageIndex = await pdfManager.ensureCatalog(\\\"getPageIndex\\\", [\\n            pageRef,\\n          ]);\\n          return pageIndex;\\n        } catch (ex) {\\n          info(`_getPageIndex -- not a valid page reference: \\\"${ex}\\\".`);\\n        }\\n      }\\n      if (annotDict.has(\\\"Kids\\\")) {\\n        return -1; \u002F\u002F Not an annotation reference.\\n      }\\n      \u002F\u002F Fallback to, potentially, checking the annotations of all pages.\\n      \u002F\u002F PLEASE NOTE: This could force the *entire* PDF document to load,\\n      \u002F\u002F              hence it absolutely cannot be done unconditionally.\\n      const numPages = await pdfManager.ensureDoc(\\\"numPages\\\");\\n\\n      for (let pageIndex = 0; pageIndex \u003C numPages; pageIndex++) {\\n        const page = await pdfManager.getPage(pageIndex);\\n        const annotations = await pdfManager.ensure(page, \\\"annotations\\\");\\n\\n        for (const annotRef of annotations) {\\n          if (annotRef instanceof Ref && isRefsEqual(annotRef, ref)) {\\n            return pageIndex;\\n          }\\n        }\\n      }\\n    } catch (ex) {\\n      warn(`_getPageIndex: \\\"${ex}\\\".`);\\n    }\\n    return -1;\\n  }\\n\\n  static generateImages(annotations, xref, isOffscreenCanvasSupported) {\\n    if (!isOffscreenCanvasSupported) {\\n      warn(\\n        \\\"generateImages: OffscreenCanvas is not supported, cannot save or print some annotations with images.\\\"\\n      );\\n      return null;\\n    }\\n    let imagePromises;\\n    for (const { bitmapId, bitmap } of annotations) {\\n      if (!bitmap) {\\n        continue;\\n      }\\n      imagePromises ||= new Map();\\n      imagePromises.set(bitmapId, StampAnnotation.createImage(bitmap, xref));\\n    }\\n\\n    return imagePromises;\\n  }\\n\\n  static async saveNewAnnotations(\\n    evaluator,\\n    task,\\n    annotations,\\n    imagePromises,\\n    changes\\n  ) {\\n    const xref = evaluator.xref;\\n    let baseFontRef;\\n    const promises = [];\\n    const { isOffscreenCanvasSupported } = evaluator.options;\\n\\n    for (const annotation of annotations) {\\n      if (annotation.deleted) {\\n        continue;\\n      }\\n      switch (annotation.annotationType) {\\n        case AnnotationEditorType.FREETEXT:\\n          if (!baseFontRef) {\\n            const baseFont = new Dict(xref);\\n            baseFont.set(\\\"BaseFont\\\", Name.get(\\\"Helvetica\\\"));\\n            baseFont.set(\\\"Type\\\", Name.get(\\\"Font\\\"));\\n            baseFont.set(\\\"Subtype\\\", Name.get(\\\"Type1\\\"));\\n            baseFont.set(\\\"Encoding\\\", Name.get(\\\"WinAnsiEncoding\\\"));\\n            baseFontRef = xref.getNewTemporaryRef();\\n            changes.put(baseFontRef, {\\n              data: baseFont,\\n            });\\n          }\\n          promises.push(\\n            FreeTextAnnotation.createNewAnnotation(xref, annotation, changes, {\\n              evaluator,\\n              task,\\n              baseFontRef,\\n            })\\n          );\\n          break;\\n        case AnnotationEditorType.HIGHLIGHT:\\n          if (annotation.quadPoints) {\\n            promises.push(\\n              HighlightAnnotation.createNewAnnotation(xref, annotation, changes)\\n            );\\n          } else {\\n            promises.push(\\n              InkAnnotation.createNewAnnotation(xref, annotation, changes)\\n            );\\n          }\\n          break;\\n        case AnnotationEditorType.INK:\\n          promises.push(\\n            InkAnnotation.createNewAnnotation(xref, annotation, changes)\\n          );\\n          break;\\n        case AnnotationEditorType.STAMP:\\n          const image = isOffscreenCanvasSupported\\n            ? await imagePromises?.get(annotation.bitmapId)\\n            : null;\\n          if (image?.imageStream) {\\n            const { imageStream, smaskStream } = image;\\n            if (smaskStream) {\\n              const smaskRef = xref.getNewTemporaryRef();\\n              changes.put(smaskRef, {\\n                data: smaskStream,\\n              });\\n              imageStream.dict.set(\\\"SMask\\\", smaskRef);\\n            }\\n            const imageRef = (image.imageRef = xref.getNewTemporaryRef());\\n            changes.put(imageRef, {\\n              data: imageStream,\\n            });\\n            image.imageStream = image.smaskStream = null;\\n          }\\n          promises.push(\\n            StampAnnotation.createNewAnnotation(xref, annotation, changes, {\\n              image,\\n            })\\n          );\\n          break;\\n        case AnnotationEditorType.SIGNATURE:\\n          promises.push(\\n            StampAnnotation.createNewAnnotation(xref, annotation, changes, {})\\n          );\\n          break;\\n      }\\n    }\\n\\n    return {\\n      annotations: await Promise.all(promises),\\n    };\\n  }\\n\\n  static async printNewAnnotations(\\n    annotationGlobals,\\n    evaluator,\\n    task,\\n    annotations,\\n    imagePromises\\n  ) {\\n    if (!annotations) {\\n      return null;\\n    }\\n\\n    const { options, xref } = evaluator;\\n    const promises = [];\\n    for (const annotation of annotations) {\\n      if (annotation.deleted) {\\n        continue;\\n      }\\n      switch (annotation.annotationType) {\\n        case AnnotationEditorType.FREETEXT:\\n          promises.push(\\n            FreeTextAnnotation.createNewPrintAnnotation(\\n              annotationGlobals,\\n              xref,\\n              annotation,\\n              {\\n                evaluator,\\n                task,\\n                evaluatorOptions: options,\\n              }\\n            )\\n          );\\n          break;\\n        case AnnotationEditorType.HIGHLIGHT:\\n          if (annotation.quadPoints) {\\n            promises.push(\\n              HighlightAnnotation.createNewPrintAnnotation(\\n                annotationGlobals,\\n                xref,\\n                annotation,\\n                {\\n                  evaluatorOptions: options,\\n                }\\n              )\\n            );\\n          } else {\\n            promises.push(\\n              InkAnnotation.createNewPrintAnnotation(\\n                annotationGlobals,\\n                xref,\\n                annotation,\\n                {\\n                  evaluatorOptions: options,\\n                }\\n              )\\n            );\\n          }\\n          break;\\n        case AnnotationEditorType.INK:\\n          promises.push(\\n            InkAnnotation.createNewPrintAnnotation(\\n              annotationGlobals,\\n              xref,\\n              annotation,\\n              {\\n                evaluatorOptions: options,\\n              }\\n            )\\n          );\\n          break;\\n        case AnnotationEditorType.STAMP:\\n          const image = options.isOffscreenCanvasSupported\\n            ? await imagePromises?.get(annotation.bitmapId)\\n            : null;\\n          if (image?.imageStream) {\\n            const { imageStream, smaskStream } = image;\\n            if (smaskStream) {\\n              imageStream.dict.set(\\\"SMask\\\", smaskStream);\\n            }\\n            image.imageRef = new JpegStream(imageStream, imageStream.length);\\n            image.imageStream = image.smaskStream = null;\\n          }\\n          promises.push(\\n            StampAnnotation.createNewPrintAnnotation(\\n              annotationGlobals,\\n              xref,\\n              annotation,\\n              {\\n                image,\\n                evaluatorOptions: options,\\n              }\\n            )\\n          );\\n          break;\\n        case AnnotationEditorType.SIGNATURE:\\n          promises.push(\\n            StampAnnotation.createNewPrintAnnotation(\\n              annotationGlobals,\\n              xref,\\n              annotation,\\n              {\\n                evaluatorOptions: options,\\n              }\\n            )\\n          );\\n          break;\\n      }\\n    }\\n\\n    return Promise.all(promises);\\n  }\\n}\\n\\nfunction getRgbColor(color, defaultColor = new Uint8ClampedArray(3)) {\\n  if (!Array.isArray(color)) {\\n    return defaultColor;\\n  }\\n\\n  const rgbColor = defaultColor || new Uint8ClampedArray(3);\\n  switch (color.length) {\\n    case 0: \u002F\u002F Transparent, which we indicate with a null value\\n      return null;\\n\\n    case 1: \u002F\u002F Convert grayscale to RGB\\n      ColorSpaceUtils.gray.getRgbItem(color, 0, rgbColor, 0);\\n      return rgbColor;\\n\\n    case 3: \u002F\u002F Convert RGB percentages to RGB\\n      ColorSpaceUtils.rgb.getRgbItem(color, 0, rgbColor, 0);\\n      return rgbColor;\\n\\n    case 4: \u002F\u002F Convert CMYK to RGB\\n      ColorSpaceUtils.cmyk.getRgbItem(color, 0, rgbColor, 0);\\n      return rgbColor;\\n\\n    default:\\n      return defaultColor;\\n  }\\n}\\n\\nfunction getPdfColorArray(color) {\\n  return Array.from(color, c => c \u002F 255);\\n}\\n\\nfunction getQuadPoints(dict, rect) {\\n  \u002F\u002F The region is described as a number of quadrilaterals.\\n  \u002F\u002F Each quadrilateral must consist of eight coordinates.\\n  const quadPoints = dict.getArray(\\\"QuadPoints\\\");\\n  if (\\n    !isNumberArray(quadPoints, null) ||\\n    quadPoints.length === 0 ||\\n    quadPoints.length % 8 > 0\\n  ) {\\n    return null;\\n  }\\n\\n  const newQuadPoints = new Float32Array(quadPoints.length);\\n  for (let i = 0, ii = quadPoints.length; i \u003C ii; i += 8) {\\n    \u002F\u002F Each series of eight numbers represents the coordinates for one\\n    \u002F\u002F quadrilateral in the order [x1, y1, x2, y2, x3, y3, x4, y4].\\n    \u002F\u002F Convert this to an array of objects with x and y coordinates.\\n    const [x1, y1, x2, y2, x3, y3, x4, y4] = quadPoints.slice(i, i + 8);\\n    const minX = Math.min(x1, x2, x3, x4);\\n    const maxX = Math.max(x1, x2, x3, x4);\\n    const minY = Math.min(y1, y2, y3, y4);\\n    const maxY = Math.max(y1, y2, y3, y4);\\n    \u002F\u002F The quadpoints should be ignored if any coordinate in the array\\n    \u002F\u002F lies outside the region specified by the rectangle. The rectangle\\n    \u002F\u002F can be `null` for markup annotations since their rectangle may be\\n    \u002F\u002F incorrect (fixes bug 1538111).\\n    if (\\n      rect !== null &&\\n      (minX \u003C rect[0] || maxX > rect[2] || minY \u003C rect[1] || maxY > rect[3])\\n    ) {\\n      return null;\\n    }\\n    \u002F\u002F The PDF specification states in section 12.5.6.10 (figure 64) that the\\n    \u002F\u002F order of the quadpoints should be bottom left, bottom right, top right\\n    \u002F\u002F and top left. However, in practice PDF files use a different order,\\n    \u002F\u002F namely bottom left, bottom right, top left and top right (this is also\\n    \u002F\u002F mentioned on https:\u002F\u002Fgithub.com\u002Fhighkite\u002FpdfAnnotate#QuadPoints), so\\n    \u002F\u002F this is the actual order we should work with. However, the situation is\\n    \u002F\u002F even worse since Adobe's own applications and other applications violate\\n    \u002F\u002F the specification and create annotations with other orders, namely top\\n    \u002F\u002F left, top right, bottom left and bottom right or even top left,\\n    \u002F\u002F top right, bottom right and bottom left. To avoid inconsistency and\\n    \u002F\u002F broken rendering, we normalize all lists to put the quadpoints in the\\n    \u002F\u002F same standard order (see https:\u002F\u002Fstackoverflow.com\u002Fa\u002F10729881).\\n    newQuadPoints.set([minX, maxY, maxX, maxY, minX, minY, maxX, minY], i);\\n  }\\n  return newQuadPoints;\\n}\\n\\nfunction getTransformMatrix(rect, bbox, matrix) {\\n  \u002F\u002F 12.5.5: Algorithm: Appearance streams\\n  const minMax = new Float32Array([Infinity, Infinity, -Infinity, -Infinity]);\\n  Util.axialAlignedBoundingBox(bbox, matrix, minMax);\\n  const [minX, minY, maxX, maxY] = minMax;\\n  if (minX === maxX || minY === maxY) {\\n    \u002F\u002F From real-life file, bbox was [0, 0, 0, 0]. In this case,\\n    \u002F\u002F just apply the transform for rect\\n    return [1, 0, 0, 1, rect[0], rect[1]];\\n  }\\n\\n  const xRatio = (rect[2] - rect[0]) \u002F (maxX - minX);\\n  const yRatio = (rect[3] - rect[1]) \u002F (maxY - minY);\\n  return [\\n    xRatio,\\n    0,\\n    0,\\n    yRatio,\\n    rect[0] - minX * xRatio,\\n    rect[1] - minY * yRatio,\\n  ];\\n}\\n\\nclass Annotation {\\n  constructor(params) {\\n    const { dict, xref, annotationGlobals, ref, orphanFields } = params;\\n    const parentRef = orphanFields?.get(ref);\\n    if (parentRef) {\\n      dict.set(\\\"Parent\\\", parentRef);\\n    }\\n\\n    this.setTitle(dict.get(\\\"T\\\"));\\n    this.setContents(dict.get(\\\"Contents\\\"));\\n    this.setModificationDate(dict.get(\\\"M\\\"));\\n    this.setFlags(dict.get(\\\"F\\\"));\\n    this.setRectangle(dict.getArray(\\\"Rect\\\"));\\n    this.setColor(dict.getArray(\\\"C\\\"));\\n    this.setBorderStyle(dict);\\n    this.setAppearance(dict);\\n    this.setOptionalContent(dict);\\n\\n    const MK = dict.get(\\\"MK\\\");\\n    this.setBorderAndBackgroundColors(MK);\\n    this.setRotation(MK, dict);\\n    this.ref = params.ref instanceof Ref ? params.ref : null;\\n\\n    this._streams = [];\\n    if (this.appearance) {\\n      this._streams.push(this.appearance);\\n    }\\n\\n    \u002F\u002F The annotation cannot be changed (neither its position\u002Fvisibility nor its\\n    \u002F\u002F contents), hence we can just display its appearance and don't generate\\n    \u002F\u002F a HTML element for it.\\n    const isLocked = !!(this.flags & AnnotationFlag.LOCKED);\\n    const isContentLocked = !!(this.flags & AnnotationFlag.LOCKEDCONTENTS);\\n\\n    \u002F\u002F Expose public properties using a data object.\\n    this.data = {\\n      annotationFlags: this.flags,\\n      borderStyle: this.borderStyle,\\n      color: this.color,\\n      backgroundColor: this.backgroundColor,\\n      borderColor: this.borderColor,\\n      rotation: this.rotation,\\n      contentsObj: this._contents,\\n      hasAppearance: !!this.appearance,\\n      id: params.id,\\n      modificationDate: this.modificationDate,\\n      rect: this.rectangle,\\n      subtype: params.subtype,\\n      hasOwnCanvas: false,\\n      noRotate: !!(this.flags & AnnotationFlag.NOROTATE),\\n      noHTML: isLocked && isContentLocked,\\n      isEditable: false,\\n      structParent: -1,\\n    };\\n\\n    if (annotationGlobals.structTreeRoot) {\\n      let structParent = dict.get(\\\"StructParent\\\");\\n      this.data.structParent = structParent =\\n        Number.isInteger(structParent) && structParent >= 0 ? structParent : -1;\\n\\n      annotationGlobals.structTreeRoot.addAnnotationIdToPage(\\n        params.pageRef,\\n        structParent\\n      );\\n    }\\n\\n    if (params.collectFields) {\\n      \u002F\u002F Fields can act as container for other fields and have\\n      \u002F\u002F some actions even if no Annotation inherit from them.\\n      \u002F\u002F Those fields can be referenced by CO (calculation order).\\n      const kids = dict.get(\\\"Kids\\\");\\n      if (Array.isArray(kids)) {\\n        const kidIds = [];\\n        for (const kid of kids) {\\n          if (kid instanceof Ref) {\\n            kidIds.push(kid.toString());\\n          }\\n        }\\n        if (kidIds.length !== 0) {\\n          this.data.kidIds = kidIds;\\n        }\\n      }\\n\\n      this.data.actions = collectActions(xref, dict, AnnotationActionEventType);\\n      this.data.fieldName = this._constructFieldName(dict);\\n      this.data.pageIndex = params.pageIndex;\\n    }\\n\\n    const it = dict.get(\\\"IT\\\");\\n    if (it instanceof Name) {\\n      this.data.it = it.name;\\n    }\\n\\n    this._isOffscreenCanvasSupported =\\n      params.evaluatorOptions.isOffscreenCanvasSupported;\\n    this._fallbackFontDict = null;\\n    this._needAppearances = false;\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _hasFlag(flags, flag) {\\n    return !!(flags & flag);\\n  }\\n\\n  _buildFlags(noView, noPrint) {\\n    let { flags } = this;\\n    if (noView === undefined) {\\n      if (noPrint === undefined) {\\n        return undefined;\\n      }\\n      if (noPrint) {\\n        return flags & ~AnnotationFlag.PRINT;\\n      }\\n      return (flags & ~AnnotationFlag.HIDDEN) | AnnotationFlag.PRINT;\\n    }\\n\\n    if (noView) {\\n      flags |= AnnotationFlag.PRINT;\\n      if (noPrint) {\\n        \u002F\u002F display === 1.\\n        return (flags & ~AnnotationFlag.NOVIEW) | AnnotationFlag.HIDDEN;\\n      }\\n      \u002F\u002F display === 3.\\n      return (flags & ~AnnotationFlag.HIDDEN) | AnnotationFlag.NOVIEW;\\n    }\\n\\n    flags &= ~(AnnotationFlag.HIDDEN | AnnotationFlag.NOVIEW);\\n    if (noPrint) {\\n      \u002F\u002F display === 2.\\n      return flags & ~AnnotationFlag.PRINT;\\n    }\\n\\n    \u002F\u002F display === 0.\\n    return flags | AnnotationFlag.PRINT;\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _isViewable(flags) {\\n    return (\\n      !this._hasFlag(flags, AnnotationFlag.INVISIBLE) &&\\n      !this._hasFlag(flags, AnnotationFlag.NOVIEW)\\n    );\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _isPrintable(flags) {\\n    \u002F\u002F In Acrobat, hidden flag cancels the print one\\n    \u002F\u002F (see annotation_hidden_print.pdf).\\n    return (\\n      this._hasFlag(flags, AnnotationFlag.PRINT) &&\\n      !this._hasFlag(flags, AnnotationFlag.HIDDEN) &&\\n      !this._hasFlag(flags, AnnotationFlag.INVISIBLE)\\n    );\\n  }\\n\\n  \u002F**\\n   * Check if the annotation must be displayed by taking into account\\n   * the value found in the annotationStorage which may have been set\\n   * through JS.\\n   *\\n   * @public\\n   * @memberof Annotation\\n   * @param {AnnotationStorage} [annotationStorage] - Storage for annotation\\n   * @param {boolean} [_renderForms] - if true widgets are rendered thanks to\\n   *                                   the annotation layer.\\n   *\u002F\\n  mustBeViewed(annotationStorage, _renderForms) {\\n    const noView = annotationStorage?.get(this.data.id)?.noView;\\n    if (noView !== undefined) {\\n      return !noView;\\n    }\\n    return this.viewable && !this._hasFlag(this.flags, AnnotationFlag.HIDDEN);\\n  }\\n\\n  \u002F**\\n   * Check if the annotation must be printed by taking into account\\n   * the value found in the annotationStorage which may have been set\\n   * through JS.\\n   *\\n   * @public\\n   * @memberof Annotation\\n   * @param {AnnotationStorage} [annotationStorage] - Storage for annotation\\n   *\u002F\\n  mustBePrinted(annotationStorage) {\\n    const noPrint = annotationStorage?.get(this.data.id)?.noPrint;\\n    if (noPrint !== undefined) {\\n      return !noPrint;\\n    }\\n    return this.printable;\\n  }\\n\\n  mustBeViewedWhenEditing(isEditing, modifiedIds = null) {\\n    return isEditing ? !this.data.isEditable : !modifiedIds?.has(this.data.id);\\n  }\\n\\n  \u002F**\\n   * @type {boolean}\\n   *\u002F\\n  get viewable() {\\n    if (this.data.quadPoints === null) {\\n      return false;\\n    }\\n    if (this.flags === 0) {\\n      return true;\\n    }\\n    return this._isViewable(this.flags);\\n  }\\n\\n  \u002F**\\n   * @type {boolean}\\n   *\u002F\\n  get printable() {\\n    if (this.data.quadPoints === null) {\\n      return false;\\n    }\\n    if (this.flags === 0) {\\n      return false;\\n    }\\n    return this._isPrintable(this.flags);\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _parseStringHelper(data) {\\n    const str = typeof data === \\\"string\\\" ? stringToPDFString(data) : \\\"\\\";\\n    const dir = str && bidi(str).dir === \\\"rtl\\\" ? \\\"rtl\\\" : \\\"ltr\\\";\\n\\n    return { str, dir };\\n  }\\n\\n  setDefaultAppearance(params) {\\n    const { dict, annotationGlobals } = params;\\n\\n    const defaultAppearance =\\n      getInheritableProperty({ dict, key: \\\"DA\\\" }) ||\\n      annotationGlobals.acroForm.get(\\\"DA\\\");\\n    this._defaultAppearance =\\n      typeof defaultAppearance === \\\"string\\\" ? defaultAppearance : \\\"\\\";\\n    this.data.defaultAppearanceData = parseDefaultAppearance(\\n      this._defaultAppearance\\n    );\\n  }\\n\\n  \u002F**\\n   * Set the title.\\n   *\\n   * @param {string} title - The title of the annotation, used e.g. with\\n   *   PopupAnnotations.\\n   *\u002F\\n  setTitle(title) {\\n    this._title = this._parseStringHelper(title);\\n  }\\n\\n  \u002F**\\n   * Set the contents.\\n   *\\n   * @param {string} contents - Text to display for the annotation or, if the\\n   *                            type of annotation does not display text, a\\n   *                            description of the annotation's contents\\n   *\u002F\\n  setContents(contents) {\\n    this._contents = this._parseStringHelper(contents);\\n  }\\n\\n  \u002F**\\n   * Set the modification date.\\n   *\\n   * @public\\n   * @memberof Annotation\\n   * @param {string} modificationDate - PDF date string that indicates when the\\n   *                                    annotation was last modified\\n   *\u002F\\n  setModificationDate(modificationDate) {\\n    this.modificationDate =\\n      typeof modificationDate === \\\"string\\\" ? modificationDate : null;\\n  }\\n\\n  \u002F**\\n   * Set the flags.\\n   *\\n   * @public\\n   * @memberof Annotation\\n   * @param {number} flags - Unsigned 32-bit integer specifying annotation\\n   *                         characteristics\\n   * @see {@link shared\u002Futil.js}\\n   *\u002F\\n  setFlags(flags) {\\n    this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0;\\n    if (\\n      this.flags & AnnotationFlag.INVISIBLE &&\\n      this.constructor.name !== \\\"Annotation\\\"\\n    ) {\\n      \u002F\u002F From the pdf spec v1.7, section 12.5.3 (Annotation Flags):\\n      \u002F\u002F   If set, do not display the annotation if it does not belong to one of\\n      \u002F\u002F   the standard annotation types and no annotation handler is available.\\n      \u002F\u002F\\n      \u002F\u002F So we can remove the flag in case we have a known annotation type.\\n      this.flags ^= AnnotationFlag.INVISIBLE;\\n    }\\n  }\\n\\n  \u002F**\\n   * Check if a provided flag is set.\\n   *\\n   * @public\\n   * @memberof Annotation\\n   * @param {number} flag - Hexadecimal representation for an annotation\\n   *                        characteristic\\n   * @returns {boolean}\\n   * @see {@link shared\u002Futil.js}\\n   *\u002F\\n  hasFlag(flag) {\\n    return this._hasFlag(this.flags, flag);\\n  }\\n\\n  \u002F**\\n   * Set the rectangle.\\n   *\\n   * @public\\n   * @memberof Annotation\\n   * @param {Array} rectangle - The rectangle array with exactly four entries\\n   *\u002F\\n  setRectangle(rectangle) {\\n    this.rectangle = lookupNormalRect(rectangle, [0, 0, 0, 0]);\\n  }\\n\\n  \u002F**\\n   * Set the color and take care of color space conversion.\\n   * The default value is black, in RGB color space.\\n   *\\n   * @public\\n   * @memberof Annotation\\n   * @param {Array} color - The color array containing either 0\\n   *                        (transparent), 1 (grayscale), 3 (RGB) or\\n   *                        4 (CMYK) elements\\n   *\u002F\\n  setColor(color) {\\n    this.color = getRgbColor(color);\\n  }\\n\\n  \u002F**\\n   * Set the line endings; should only be used with specific annotation types.\\n   * @param {Array} lineEndings - The line endings array.\\n   *\u002F\\n  setLineEndings(lineEndings) {\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      throw new Error(\\\"Not implemented: setLineEndings\\\");\\n    }\\n    this.lineEndings = [\\\"None\\\", \\\"None\\\"]; \u002F\u002F The default values.\\n\\n    if (Array.isArray(lineEndings) && lineEndings.length === 2) {\\n      for (let i = 0; i \u003C 2; i++) {\\n        const obj = lineEndings[i];\\n\\n        if (obj instanceof Name) {\\n          switch (obj.name) {\\n            case \\\"None\\\":\\n              continue;\\n            case \\\"Square\\\":\\n            case \\\"Circle\\\":\\n            case \\\"Diamond\\\":\\n            case \\\"OpenArrow\\\":\\n            case \\\"ClosedArrow\\\":\\n            case \\\"Butt\\\":\\n            case \\\"ROpenArrow\\\":\\n            case \\\"RClosedArrow\\\":\\n            case \\\"Slash\\\":\\n              this.lineEndings[i] = obj.name;\\n              continue;\\n          }\\n        }\\n        warn(`Ignoring invalid lineEnding: ${obj}`);\\n      }\\n    }\\n  }\\n\\n  setRotation(mk, dict) {\\n    this.rotation = 0;\\n    let angle = mk instanceof Dict ? mk.get(\\\"R\\\") || 0 : dict.get(\\\"Rotate\\\") || 0;\\n    if (Number.isInteger(angle) && angle !== 0) {\\n      angle %= 360;\\n      if (angle \u003C 0) {\\n        angle += 360;\\n      }\\n      if (angle % 90 === 0) {\\n        this.rotation = angle;\\n      }\\n    }\\n  }\\n\\n  \u002F**\\n   * Set the color for background and border if any.\\n   * The default values are transparent.\\n   *\\n   * @public\\n   * @memberof Annotation\\n   * @param {Dict} mk - The MK dictionary\\n   *\u002F\\n  setBorderAndBackgroundColors(mk) {\\n    if (mk instanceof Dict) {\\n      this.borderColor = getRgbColor(mk.getArray(\\\"BC\\\"), null);\\n      this.backgroundColor = getRgbColor(mk.getArray(\\\"BG\\\"), null);\\n    } else {\\n      this.borderColor = this.backgroundColor = null;\\n    }\\n  }\\n\\n  \u002F**\\n   * Set the border style (as AnnotationBorderStyle object).\\n   *\\n   * @public\\n   * @memberof Annotation\\n   * @param {Dict} borderStyle - The border style dictionary\\n   *\u002F\\n  setBorderStyle(borderStyle) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(this.rectangle, \\\"setRectangle must have been called previously.\\\");\\n    }\\n\\n    this.borderStyle = new AnnotationBorderStyle();\\n    if (!(borderStyle instanceof Dict)) {\\n      return;\\n    }\\n    if (borderStyle.has(\\\"BS\\\")) {\\n      const dict = borderStyle.get(\\\"BS\\\");\\n\\n      if (dict instanceof Dict) {\\n        const dictType = dict.get(\\\"Type\\\");\\n\\n        if (!dictType || isName(dictType, \\\"Border\\\")) {\\n          this.borderStyle.setWidth(dict.get(\\\"W\\\"), this.rectangle);\\n          this.borderStyle.setStyle(dict.get(\\\"S\\\"));\\n          this.borderStyle.setDashArray(dict.getArray(\\\"D\\\"));\\n        }\\n      }\\n    } else if (borderStyle.has(\\\"Border\\\")) {\\n      const array = borderStyle.getArray(\\\"Border\\\");\\n      if (Array.isArray(array) && array.length >= 3) {\\n        this.borderStyle.setHorizontalCornerRadius(array[0]);\\n        this.borderStyle.setVerticalCornerRadius(array[1]);\\n        this.borderStyle.setWidth(array[2], this.rectangle);\\n\\n        if (array.length === 4) {\\n          \u002F\u002F Dash array available\\n          this.borderStyle.setDashArray(array[3], \u002F* forceStyle = *\u002F true);\\n        }\\n      }\\n    } else {\\n      \u002F\u002F There are no border entries in the dictionary. According to the\\n      \u002F\u002F specification, we should draw a solid border of width 1 in that\\n      \u002F\u002F case, but Adobe Reader did not implement that part of the\\n      \u002F\u002F specification and instead draws no border at all, so we do the same.\\n      \u002F\u002F See also https:\u002F\u002Fgithub.com\u002Fmozilla\u002Fpdf.js\u002Fissues\u002F6179.\\n      this.borderStyle.setWidth(0);\\n    }\\n  }\\n\\n  \u002F**\\n   * Set the (normal) appearance.\\n   *\\n   * @public\\n   * @memberof Annotation\\n   * @param {Dict} dict - The annotation's data dictionary\\n   *\u002F\\n  setAppearance(dict) {\\n    this.appearance = null;\\n\\n    const appearanceStates = dict.get(\\\"AP\\\");\\n    if (!(appearanceStates instanceof Dict)) {\\n      return;\\n    }\\n\\n    \u002F\u002F In case the normal appearance is a stream, then it is used directly.\\n    const normalAppearanceState = appearanceStates.get(\\\"N\\\");\\n    if (normalAppearanceState instanceof BaseStream) {\\n      this.appearance = normalAppearanceState;\\n      return;\\n    }\\n    if (!(normalAppearanceState instanceof Dict)) {\\n      return;\\n    }\\n\\n    \u002F\u002F In case the normal appearance is a dictionary, the `AS` entry provides\\n    \u002F\u002F the key of the stream in this dictionary.\\n    const as = dict.get(\\\"AS\\\");\\n    if (!(as instanceof Name) || !normalAppearanceState.has(as.name)) {\\n      return;\\n    }\\n    const appearance = normalAppearanceState.get(as.name);\\n    if (appearance instanceof BaseStream) {\\n      this.appearance = appearance;\\n    }\\n  }\\n\\n  setOptionalContent(dict) {\\n    this.oc = null;\\n\\n    const oc = dict.get(\\\"OC\\\");\\n    if (oc instanceof Name) {\\n      warn(\\\"setOptionalContent: Support for \u002FName-entry is not implemented.\\\");\\n    } else if (oc instanceof Dict) {\\n      this.oc = oc;\\n    }\\n  }\\n\\n  async loadResources(keys, appearance) {\\n    const resources = await appearance.dict.getAsync(\\\"Resources\\\");\\n    if (resources) {\\n      await ObjectLoader.load(resources, keys, resources.xref);\\n    }\\n    return resources;\\n  }\\n\\n  async getOperatorList(evaluator, task, intent, annotationStorage) {\\n    const { hasOwnCanvas, id, rect } = this.data;\\n    let appearance = this.appearance;\\n    const isUsingOwnCanvas = !!(\\n      hasOwnCanvas && intent & RenderingIntentFlag.DISPLAY\\n    );\\n    if (isUsingOwnCanvas && (this.width === 0 || this.height === 0)) {\\n      \u002F\u002F Empty annotation, don't draw anything.\\n      this.data.hasOwnCanvas = false;\\n      return {\\n        opList: new OperatorList(),\\n        separateForm: false,\\n        separateCanvas: false,\\n      };\\n    }\\n    if (!appearance) {\\n      if (!isUsingOwnCanvas) {\\n        return {\\n          opList: new OperatorList(),\\n          separateForm: false,\\n          separateCanvas: false,\\n        };\\n      }\\n      appearance = new StringStream(\\\"\\\");\\n      appearance.dict = new Dict();\\n    }\\n\\n    const appearanceDict = appearance.dict;\\n    const resources = await this.loadResources(\\n      RESOURCES_KEYS_OPERATOR_LIST,\\n      appearance\\n    );\\n    const bbox = lookupRect(appearanceDict.getArray(\\\"BBox\\\"), [0, 0, 1, 1]);\\n    const matrix = lookupMatrix(\\n      appearanceDict.getArray(\\\"Matrix\\\"),\\n      IDENTITY_MATRIX\\n    );\\n    const transform = getTransformMatrix(rect, bbox, matrix);\\n\\n    const opList = new OperatorList();\\n\\n    let optionalContent;\\n    if (this.oc) {\\n      optionalContent = await evaluator.parseMarkedContentProps(\\n        this.oc,\\n        \u002F* resources = *\u002F null\\n      );\\n    }\\n    if (optionalContent !== undefined) {\\n      opList.addOp(OPS.beginMarkedContentProps, [\\\"OC\\\", optionalContent]);\\n    }\\n\\n    opList.addOp(OPS.beginAnnotation, [\\n      id,\\n      rect,\\n      transform,\\n      matrix,\\n      isUsingOwnCanvas,\\n    ]);\\n\\n    await evaluator.getOperatorList({\\n      stream: appearance,\\n      task,\\n      resources,\\n      operatorList: opList,\\n      fallbackFontDict: this._fallbackFontDict,\\n    });\\n    opList.addOp(OPS.endAnnotation, []);\\n\\n    if (optionalContent !== undefined) {\\n      opList.addOp(OPS.endMarkedContent, []);\\n    }\\n    this.reset();\\n    return { opList, separateForm: false, separateCanvas: isUsingOwnCanvas };\\n  }\\n\\n  async save(evaluator, task, annotationStorage, changes) {\\n    return null;\\n  }\\n\\n  get hasTextContent() {\\n    return false;\\n  }\\n\\n  async extractTextContent(evaluator, task, viewBox) {\\n    if (!this.appearance) {\\n      return;\\n    }\\n\\n    const resources = await this.loadResources(\\n      RESOURCES_KEYS_TEXT_CONTENT,\\n      this.appearance\\n    );\\n\\n    const text = [];\\n    const buffer = [];\\n    let firstPosition = null;\\n    const sink = {\\n      desiredSize: Math.Infinity,\\n      ready: true,\\n\\n      enqueue(chunk, size) {\\n        for (const item of chunk.items) {\\n          if (item.str === undefined) {\\n            continue;\\n          }\\n          firstPosition ||= item.transform.slice(-2);\\n          buffer.push(item.str);\\n          if (item.hasEOL) {\\n            text.push(buffer.join(\\\"\\\").trimEnd());\\n            buffer.length = 0;\\n          }\\n        }\\n      },\\n    };\\n\\n    await evaluator.getTextContent({\\n      stream: this.appearance,\\n      task,\\n      resources,\\n      includeMarkedContent: true,\\n      keepWhiteSpace: true,\\n      sink,\\n      viewBox,\\n    });\\n    this.reset();\\n\\n    if (buffer.length) {\\n      text.push(buffer.join(\\\"\\\").trimEnd());\\n    }\\n\\n    if (text.length > 1 || text[0]) {\\n      const appearanceDict = this.appearance.dict;\\n      const bbox = lookupRect(appearanceDict.getArray(\\\"BBox\\\"), null);\\n      const matrix = lookupMatrix(appearanceDict.getArray(\\\"Matrix\\\"), null);\\n\\n      this.data.textPosition = this._transformPoint(\\n        firstPosition,\\n        bbox,\\n        matrix\\n      );\\n      this.data.textContent = text;\\n    }\\n  }\\n\\n  _transformPoint(coords, bbox, matrix) {\\n    const { rect } = this.data;\\n    bbox ||= [0, 0, 1, 1];\\n    matrix ||= [1, 0, 0, 1, 0, 0];\\n    const transform = getTransformMatrix(rect, bbox, matrix);\\n    transform[4] -= rect[0];\\n    transform[5] -= rect[1];\\n    const p = coords.slice();\\n    Util.applyTransform(p, transform);\\n    Util.applyTransform(p, matrix);\\n    return p;\\n  }\\n\\n  \u002F**\\n   * Get field data for usage in JS sandbox.\\n   *\\n   * Field object is defined here:\\n   * https:\u002F\u002Fwww.adobe.com\u002Fcontent\u002Fdam\u002Facom\u002Fen\u002Fdevnet\u002Facrobat\u002Fpdfs\u002Fjs_api_reference.pdf#page=16\\n   *\\n   * @public\\n   * @memberof Annotation\\n   * @returns {Object | null}\\n   *\u002F\\n  getFieldObject() {\\n    if (this.data.kidIds) {\\n      return {\\n        id: this.data.id,\\n        actions: this.data.actions,\\n        name: this.data.fieldName,\\n        strokeColor: this.data.borderColor,\\n        fillColor: this.data.backgroundColor,\\n        type: \\\"\\\",\\n        kidIds: this.data.kidIds,\\n        page: this.data.pageIndex,\\n        rotation: this.rotation,\\n      };\\n    }\\n    return null;\\n  }\\n\\n  \u002F**\\n   * Reset the annotation.\\n   *\\n   * This involves resetting the various streams that are either cached on the\\n   * annotation instance or created during its construction.\\n   *\\n   * @public\\n   * @memberof Annotation\\n   *\u002F\\n  reset() {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      this.appearance &&\\n      !this._streams.includes(this.appearance)\\n    ) {\\n      unreachable(\\\"The appearance stream should always be reset.\\\");\\n    }\\n\\n    for (const stream of this._streams) {\\n      stream.reset();\\n    }\\n  }\\n\\n  \u002F**\\n   * Construct the (fully qualified) field name from the (partial) field\\n   * names of the field and its ancestors.\\n   *\\n   * @private\\n   * @memberof Annotation\\n   * @param {Dict} dict - Complete widget annotation dictionary\\n   * @returns {string}\\n   *\u002F\\n  _constructFieldName(dict) {\\n    \u002F\u002F Both the `Parent` and `T` fields are optional. While at least one of\\n    \u002F\u002F them should be provided, bad PDF generators may fail to do so.\\n    if (!dict.has(\\\"T\\\") && !dict.has(\\\"Parent\\\")) {\\n      warn(\\\"Unknown field name, falling back to empty field name.\\\");\\n      return \\\"\\\";\\n    }\\n\\n    \u002F\u002F If no parent exists, the partial and fully qualified names are equal.\\n    if (!dict.has(\\\"Parent\\\")) {\\n      return stringToPDFString(dict.get(\\\"T\\\"));\\n    }\\n\\n    \u002F\u002F Form the fully qualified field name by appending the partial name to\\n    \u002F\u002F the parent's fully qualified name, separated by a period.\\n    const fieldName = [];\\n    if (dict.has(\\\"T\\\")) {\\n      fieldName.unshift(stringToPDFString(dict.get(\\\"T\\\")));\\n    }\\n\\n    let loopDict = dict;\\n    const visited = new RefSet();\\n    if (dict.objId) {\\n      visited.put(dict.objId);\\n    }\\n    while (loopDict.has(\\\"Parent\\\")) {\\n      loopDict = loopDict.get(\\\"Parent\\\");\\n      if (\\n        !(loopDict instanceof Dict) ||\\n        (loopDict.objId && visited.has(loopDict.objId))\\n      ) {\\n        \u002F\u002F Even though it is not allowed according to the PDF specification,\\n        \u002F\u002F bad PDF generators may provide a `Parent` entry that is not a\\n        \u002F\u002F dictionary, but `null` for example (issue 8143).\\n        \u002F\u002F\\n        \u002F\u002F If parent has been already visited, it means that we're\\n        \u002F\u002F in an infinite loop.\\n        break;\\n      }\\n      if (loopDict.objId) {\\n        visited.put(loopDict.objId);\\n      }\\n\\n      if (loopDict.has(\\\"T\\\")) {\\n        fieldName.unshift(stringToPDFString(loopDict.get(\\\"T\\\")));\\n      }\\n    }\\n    return fieldName.join(\\\".\\\");\\n  }\\n\\n  get width() {\\n    return this.data.rect[2] - this.data.rect[0];\\n  }\\n\\n  get height() {\\n    return this.data.rect[3] - this.data.rect[1];\\n  }\\n}\\n\\n\u002F**\\n * Contains all data regarding an annotation's border style.\\n *\u002F\\nclass AnnotationBorderStyle {\\n  constructor() {\\n    this.width = 1;\\n    this.rawWidth = 1;\\n    this.style = AnnotationBorderStyleType.SOLID;\\n    this.dashArray = [3];\\n    this.horizontalCornerRadius = 0;\\n    this.verticalCornerRadius = 0;\\n  }\\n\\n  \u002F**\\n   * Set the width.\\n   *\\n   * @public\\n   * @memberof AnnotationBorderStyle\\n   * @param {number} width - The width.\\n   * @param {Array} rect - The annotation `Rect` entry.\\n   *\u002F\\n  setWidth(width, rect = [0, 0, 0, 0]) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        isNumberArray(rect, 4),\\n        \\\"A valid `rect` parameter must be provided.\\\"\\n      );\\n    }\\n\\n    \u002F\u002F Some corrupt PDF generators may provide the width as a `Name`,\\n    \u002F\u002F rather than as a number (fixes issue 10385).\\n    if (width instanceof Name) {\\n      this.width = 0; \u002F\u002F This is consistent with the behaviour in Adobe Reader.\\n      return;\\n    }\\n    if (typeof width === \\\"number\\\") {\\n      if (width > 0) {\\n        this.rawWidth = width;\\n        const maxWidth = (rect[2] - rect[0]) \u002F 2;\\n        const maxHeight = (rect[3] - rect[1]) \u002F 2;\\n\\n        \u002F\u002F Ignore large `width`s, since they lead to the Annotation overflowing\\n        \u002F\u002F the size set by the `Rect` entry thus causing the `annotationLayer`\\n        \u002F\u002F to render it over the surrounding document (fixes bug1552113.pdf).\\n        if (\\n          maxWidth > 0 &&\\n          maxHeight > 0 &&\\n          (width > maxWidth || width > maxHeight)\\n        ) {\\n          warn(`AnnotationBorderStyle.setWidth - ignoring width: ${width}`);\\n          width = 1;\\n        }\\n      }\\n      this.width = width;\\n    }\\n  }\\n\\n  \u002F**\\n   * Set the style.\\n   *\\n   * @public\\n   * @memberof AnnotationBorderStyle\\n   * @param {Name} style - The annotation style.\\n   * @see {@link shared\u002Futil.js}\\n   *\u002F\\n  setStyle(style) {\\n    if (!(style instanceof Name)) {\\n      return;\\n    }\\n    switch (style.name) {\\n      case \\\"S\\\":\\n        this.style = AnnotationBorderStyleType.SOLID;\\n        break;\\n\\n      case \\\"D\\\":\\n        this.style = AnnotationBorderStyleType.DASHED;\\n        break;\\n\\n      case \\\"B\\\":\\n        this.style = AnnotationBorderStyleType.BEVELED;\\n        break;\\n\\n      case \\\"I\\\":\\n        this.style = AnnotationBorderStyleType.INSET;\\n        break;\\n\\n      case \\\"U\\\":\\n        this.style = AnnotationBorderStyleType.UNDERLINE;\\n        break;\\n\\n      default:\\n        break;\\n    }\\n  }\\n\\n  \u002F**\\n   * Set the dash array.\\n   *\\n   * @public\\n   * @memberof AnnotationBorderStyle\\n   * @param {Array} dashArray - The dash array with at least one element\\n   * @param {boolean} [forceStyle]\\n   *\u002F\\n  setDashArray(dashArray, forceStyle = false) {\\n    \u002F\u002F We validate the dash array, but we do not use it because CSS does not\\n    \u002F\u002F allow us to change spacing of dashes. For more information, visit\\n    \u002F\u002F http:\u002F\u002Fwww.w3.org\u002FTR\u002Fcss3-background\u002F#the-border-style.\\n    if (Array.isArray(dashArray)) {\\n      \u002F\u002F The PDF specification states that elements in the dash array, if\\n      \u002F\u002F present, must be non-negative numbers and must not all equal zero.\\n      let isValid = true;\\n      let allZeros = true;\\n      for (const element of dashArray) {\\n        const validNumber = +element >= 0;\\n        if (!validNumber) {\\n          isValid = false;\\n          break;\\n        } else if (element > 0) {\\n          allZeros = false;\\n        }\\n      }\\n      if (dashArray.length === 0 || (isValid && !allZeros)) {\\n        this.dashArray = dashArray;\\n\\n        if (forceStyle) {\\n          \u002F\u002F Even though we cannot use the dash array in the display layer,\\n          \u002F\u002F at least ensure that we use the correct border-style.\\n          this.setStyle(Name.get(\\\"D\\\"));\\n        }\\n      } else {\\n        this.width = 0; \u002F\u002F Adobe behavior when the array is invalid.\\n      }\\n    } else if (dashArray) {\\n      this.width = 0; \u002F\u002F Adobe behavior when the array is invalid.\\n    }\\n  }\\n\\n  \u002F**\\n   * Set the horizontal corner radius (from a Border dictionary).\\n   *\\n   * @public\\n   * @memberof AnnotationBorderStyle\\n   * @param {number} radius - The horizontal corner radius.\\n   *\u002F\\n  setHorizontalCornerRadius(radius) {\\n    if (Number.isInteger(radius)) {\\n      this.horizontalCornerRadius = radius;\\n    }\\n  }\\n\\n  \u002F**\\n   * Set the vertical corner radius (from a Border dictionary).\\n   *\\n   * @public\\n   * @memberof AnnotationBorderStyle\\n   * @param {number} radius - The vertical corner radius.\\n   *\u002F\\n  setVerticalCornerRadius(radius) {\\n    if (Number.isInteger(radius)) {\\n      this.verticalCornerRadius = radius;\\n    }\\n  }\\n}\\n\\nclass MarkupAnnotation extends Annotation {\\n  constructor(params) {\\n    super(params);\\n\\n    const { dict } = params;\\n\\n    if (dict.has(\\\"IRT\\\")) {\\n      const rawIRT = dict.getRaw(\\\"IRT\\\");\\n      this.data.inReplyTo = rawIRT instanceof Ref ? rawIRT.toString() : null;\\n\\n      const rt = dict.get(\\\"RT\\\");\\n      this.data.replyType =\\n        rt instanceof Name ? rt.name : AnnotationReplyType.REPLY;\\n    }\\n    let popupRef = null;\\n\\n    if (this.data.replyType === AnnotationReplyType.GROUP) {\\n      \u002F\u002F Subordinate annotations in a group should inherit\\n      \u002F\u002F the group attributes from the primary annotation.\\n      const parent = dict.get(\\\"IRT\\\");\\n\\n      this.setTitle(parent.get(\\\"T\\\"));\\n      this.data.titleObj = this._title;\\n\\n      this.setContents(parent.get(\\\"Contents\\\"));\\n      this.data.contentsObj = this._contents;\\n\\n      if (!parent.has(\\\"CreationDate\\\")) {\\n        this.data.creationDate = null;\\n      } else {\\n        this.setCreationDate(parent.get(\\\"CreationDate\\\"));\\n        this.data.creationDate = this.creationDate;\\n      }\\n\\n      if (!parent.has(\\\"M\\\")) {\\n        this.data.modificationDate = null;\\n      } else {\\n        this.setModificationDate(parent.get(\\\"M\\\"));\\n        this.data.modificationDate = this.modificationDate;\\n      }\\n\\n      popupRef = parent.getRaw(\\\"Popup\\\");\\n\\n      if (!parent.has(\\\"C\\\")) {\\n        \u002F\u002F Fall back to the default background color.\\n        this.data.color = null;\\n      } else {\\n        this.setColor(parent.getArray(\\\"C\\\"));\\n        this.data.color = this.color;\\n      }\\n    } else {\\n      this.data.titleObj = this._title;\\n\\n      this.setCreationDate(dict.get(\\\"CreationDate\\\"));\\n      this.data.creationDate = this.creationDate;\\n\\n      popupRef = dict.getRaw(\\\"Popup\\\");\\n\\n      if (!dict.has(\\\"C\\\")) {\\n        \u002F\u002F Fall back to the default background color.\\n        this.data.color = null;\\n      }\\n    }\\n\\n    this.data.popupRef = popupRef instanceof Ref ? popupRef.toString() : null;\\n\\n    if (dict.has(\\\"RC\\\")) {\\n      this.data.richText = XFAFactory.getRichTextAsHtml(dict.get(\\\"RC\\\"));\\n    }\\n  }\\n\\n  \u002F**\\n   * Set the creation date.\\n   *\\n   * @public\\n   * @memberof MarkupAnnotation\\n   * @param {string} creationDate - PDF date string that indicates when the\\n   *                                annotation was originally created\\n   *\u002F\\n  setCreationDate(creationDate) {\\n    this.creationDate = typeof creationDate === \\\"string\\\" ? creationDate : null;\\n  }\\n\\n  _setDefaultAppearance({\\n    xref,\\n    extra,\\n    strokeColor,\\n    fillColor,\\n    blendMode,\\n    strokeAlpha,\\n    fillAlpha,\\n    pointsCallback,\\n  }) {\\n    const bbox = (this.data.rect = [Infinity, Infinity, -Infinity, -Infinity]);\\n\\n    const buffer = [\\\"q\\\"];\\n    if (extra) {\\n      buffer.push(extra);\\n    }\\n    if (strokeColor) {\\n      buffer.push(`${strokeColor[0]} ${strokeColor[1]} ${strokeColor[2]} RG`);\\n    }\\n    if (fillColor) {\\n      buffer.push(`${fillColor[0]} ${fillColor[1]} ${fillColor[2]} rg`);\\n    }\\n\\n    \u002F\u002F If there are no quadpoints, the rectangle should be used instead.\\n    \u002F\u002F Convert the rectangle definition to a points array similar to how the\\n    \u002F\u002F quadpoints are defined.\\n    const pointsArray =\\n      this.data.quadPoints ||\\n      Float32Array.from([\\n        this.rectangle[0],\\n        this.rectangle[3],\\n        this.rectangle[2],\\n        this.rectangle[3],\\n        this.rectangle[0],\\n        this.rectangle[1],\\n        this.rectangle[2],\\n        this.rectangle[1],\\n      ]);\\n\\n    for (let i = 0, ii = pointsArray.length; i \u003C ii; i += 8) {\\n      const points = pointsCallback(buffer, pointsArray.subarray(i, i + 8));\\n      Util.rectBoundingBox(...points, bbox);\\n    }\\n    buffer.push(\\\"Q\\\");\\n\\n    const formDict = new Dict(xref);\\n    const appearanceStreamDict = new Dict(xref);\\n    appearanceStreamDict.set(\\\"Subtype\\\", Name.get(\\\"Form\\\"));\\n\\n    const appearanceStream = new StringStream(buffer.join(\\\" \\\"));\\n    appearanceStream.dict = appearanceStreamDict;\\n    formDict.set(\\\"Fm0\\\", appearanceStream);\\n\\n    const gsDict = new Dict(xref);\\n    if (blendMode) {\\n      gsDict.set(\\\"BM\\\", Name.get(blendMode));\\n    }\\n    if (typeof strokeAlpha === \\\"number\\\") {\\n      gsDict.set(\\\"CA\\\", strokeAlpha);\\n    }\\n    if (typeof fillAlpha === \\\"number\\\") {\\n      gsDict.set(\\\"ca\\\", fillAlpha);\\n    }\\n\\n    const stateDict = new Dict(xref);\\n    stateDict.set(\\\"GS0\\\", gsDict);\\n\\n    const resources = new Dict(xref);\\n    resources.set(\\\"ExtGState\\\", stateDict);\\n    resources.set(\\\"XObject\\\", formDict);\\n\\n    const appearanceDict = new Dict(xref);\\n    appearanceDict.set(\\\"Resources\\\", resources);\\n    appearanceDict.set(\\\"BBox\\\", bbox);\\n\\n    this.appearance = new StringStream(\\\"\u002FGS0 gs \u002FFm0 Do\\\");\\n    this.appearance.dict = appearanceDict;\\n\\n    \u002F\u002F This method is only called if there is no appearance for the annotation,\\n    \u002F\u002F so `this.appearance` is not pushed yet in the `Annotation` constructor.\\n    this._streams.push(this.appearance, appearanceStream);\\n  }\\n\\n  static async createNewAnnotation(xref, annotation, changes, params) {\\n    const annotationRef = (annotation.ref ||= xref.getNewTemporaryRef());\\n\\n    const ap = await this.createNewAppearanceStream(annotation, xref, params);\\n    let annotationDict;\\n\\n    if (ap) {\\n      const apRef = xref.getNewTemporaryRef();\\n      annotationDict = this.createNewDict(annotation, xref, {\\n        apRef,\\n      });\\n      changes.put(apRef, {\\n        data: ap,\\n      });\\n    } else {\\n      annotationDict = this.createNewDict(annotation, xref, {});\\n    }\\n    if (Number.isInteger(annotation.parentTreeId)) {\\n      annotationDict.set(\\\"StructParent\\\", annotation.parentTreeId);\\n    }\\n\\n    changes.put(annotationRef, {\\n      data: annotationDict,\\n    });\\n\\n    return { ref: annotationRef };\\n  }\\n\\n  static async createNewPrintAnnotation(\\n    annotationGlobals,\\n    xref,\\n    annotation,\\n    params\\n  ) {\\n    const ap = await this.createNewAppearanceStream(annotation, xref, params);\\n    const annotationDict = this.createNewDict(\\n      annotation,\\n      xref,\\n      ap ? { ap } : {}\\n    );\\n\\n    const newAnnotation = new this.prototype.constructor({\\n      dict: annotationDict,\\n      xref,\\n      annotationGlobals,\\n      evaluatorOptions: params.evaluatorOptions,\\n    });\\n\\n    if (annotation.ref) {\\n      newAnnotation.ref = newAnnotation.refToReplace = annotation.ref;\\n    }\\n\\n    return newAnnotation;\\n  }\\n}\\n\\nclass WidgetAnnotation extends Annotation {\\n  constructor(params) {\\n    super(params);\\n\\n    const { dict, xref, annotationGlobals } = params;\\n    const data = this.data;\\n    this._needAppearances = params.needAppearances;\\n\\n    data.annotationType = AnnotationType.WIDGET;\\n    if (data.fieldName === undefined) {\\n      data.fieldName = this._constructFieldName(dict);\\n    }\\n\\n    if (data.actions === undefined) {\\n      data.actions = collectActions(xref, dict, AnnotationActionEventType);\\n    }\\n\\n    let fieldValue = getInheritableProperty({\\n      dict,\\n      key: \\\"V\\\",\\n      getArray: true,\\n    });\\n    data.fieldValue = this._decodeFormValue(fieldValue);\\n\\n    const defaultFieldValue = getInheritableProperty({\\n      dict,\\n      key: \\\"DV\\\",\\n      getArray: true,\\n    });\\n    data.defaultFieldValue = this._decodeFormValue(defaultFieldValue);\\n\\n    if (fieldValue === undefined && annotationGlobals.xfaDatasets) {\\n      \u002F\u002F Try to figure out if we have something in the xfa dataset.\\n      const path = this._title.str;\\n      if (path) {\\n        this._hasValueFromXFA = true;\\n        data.fieldValue = fieldValue =\\n          annotationGlobals.xfaDatasets.getValue(path);\\n      }\\n    }\\n\\n    \u002F\u002F When no \\\"V\\\" entry exists, let the fieldValue fallback to the \\\"DV\\\" entry\\n    \u002F\u002F (fixes issue13823.pdf).\\n    if (fieldValue === undefined && data.defaultFieldValue !== null) {\\n      data.fieldValue = data.defaultFieldValue;\\n    }\\n\\n    data.alternativeText = stringToPDFString(dict.get(\\\"TU\\\") || \\\"\\\");\\n\\n    this.setDefaultAppearance(params);\\n\\n    data.hasAppearance ||=\\n      this._needAppearances &&\\n      data.fieldValue !== undefined &&\\n      data.fieldValue !== null;\\n\\n    const fieldType = getInheritableProperty({ dict, key: \\\"FT\\\" });\\n    data.fieldType = fieldType instanceof Name ? fieldType.name : null;\\n\\n    const localResources = getInheritableProperty({ dict, key: \\\"DR\\\" });\\n    const acroFormResources = annotationGlobals.acroForm.get(\\\"DR\\\");\\n    const appearanceResources = this.appearance?.dict.get(\\\"Resources\\\");\\n\\n    this._fieldResources = {\\n      localResources,\\n      acroFormResources,\\n      appearanceResources,\\n      mergedResources: Dict.merge({\\n        xref,\\n        dictArray: [localResources, appearanceResources, acroFormResources],\\n        mergeSubDicts: true,\\n      }),\\n    };\\n\\n    data.fieldFlags = getInheritableProperty({ dict, key: \\\"Ff\\\" });\\n    if (!Number.isInteger(data.fieldFlags) || data.fieldFlags \u003C 0) {\\n      data.fieldFlags = 0;\\n    }\\n\\n    data.password = this.hasFieldFlag(AnnotationFieldFlag.PASSWORD);\\n    data.readOnly = this.hasFieldFlag(AnnotationFieldFlag.READONLY);\\n    data.required = this.hasFieldFlag(AnnotationFieldFlag.REQUIRED);\\n    data.hidden =\\n      this._hasFlag(data.annotationFlags, AnnotationFlag.HIDDEN) ||\\n      this._hasFlag(data.annotationFlags, AnnotationFlag.NOVIEW);\\n  }\\n\\n  \u002F**\\n   * Decode the given form value.\\n   *\\n   * @private\\n   * @memberof WidgetAnnotation\\n   * @param {Array\u003Cstring>|Name|string} formValue - The (possibly encoded)\\n   *   form value.\\n   * @returns {Array\u003Cstring>|string|null}\\n   *\u002F\\n  _decodeFormValue(formValue) {\\n    if (Array.isArray(formValue)) {\\n      return formValue\\n        .filter(item => typeof item === \\\"string\\\")\\n        .map(item => stringToPDFString(item));\\n    } else if (formValue instanceof Name) {\\n      return stringToPDFString(formValue.name);\\n    } else if (typeof formValue === \\\"string\\\") {\\n      return stringToPDFString(formValue);\\n    }\\n    return null;\\n  }\\n\\n  \u002F**\\n   * Check if a provided field flag is set.\\n   *\\n   * @public\\n   * @memberof WidgetAnnotation\\n   * @param {number} flag - Hexadecimal representation for an annotation\\n   *                        field characteristic\\n   * @returns {boolean}\\n   * @see {@link shared\u002Futil.js}\\n   *\u002F\\n  hasFieldFlag(flag) {\\n    return !!(this.data.fieldFlags & flag);\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  _isViewable(flags) {\\n    \u002F\u002F We don't take into account the `NOVIEW` or `HIDDEN` flags here,\\n    \u002F\u002F since the visibility can be changed by js code, hence in case\\n    \u002F\u002F it's made viewable, we should render it (with visibility set to\\n    \u002F\u002F hidden).\\n    \u002F\u002F We don't take into account the `INVISIBLE` flag here, since we've a known\\n    \u002F\u002F annotation type.\\n    return true;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  mustBeViewed(annotationStorage, renderForms) {\\n    if (renderForms) {\\n      return this.viewable;\\n    }\\n    return (\\n      super.mustBeViewed(annotationStorage, renderForms) &&\\n      !this._hasFlag(this.flags, AnnotationFlag.NOVIEW)\\n    );\\n  }\\n\\n  getRotationMatrix(annotationStorage) {\\n    let rotation = annotationStorage?.get(this.data.id)?.rotation;\\n    if (rotation === undefined) {\\n      rotation = this.rotation;\\n    }\\n\\n    return rotation === 0\\n      ? IDENTITY_MATRIX\\n      : getRotationMatrix(rotation, this.width, this.height);\\n  }\\n\\n  getBorderAndBackgroundAppearances(annotationStorage) {\\n    let rotation = annotationStorage?.get(this.data.id)?.rotation;\\n    if (rotation === undefined) {\\n      rotation = this.rotation;\\n    }\\n\\n    if (!this.backgroundColor && !this.borderColor) {\\n      return \\\"\\\";\\n    }\\n    const rect =\\n      rotation === 0 || rotation === 180\\n        ? `0 0 ${this.width} ${this.height} re`\\n        : `0 0 ${this.height} ${this.width} re`;\\n\\n    let str = \\\"\\\";\\n    if (this.backgroundColor) {\\n      str = `${getPdfColor(\\n        this.backgroundColor,\\n        \u002F* isFill *\u002F true\\n      )} ${rect} f `;\\n    }\\n\\n    if (this.borderColor) {\\n      const borderWidth = this.borderStyle.width || 1;\\n      str += `${borderWidth} w ${getPdfColor(\\n        this.borderColor,\\n        \u002F* isFill *\u002F false\\n      )} ${rect} S `;\\n    }\\n\\n    return str;\\n  }\\n\\n  async getOperatorList(evaluator, task, intent, annotationStorage) {\\n    \u002F\u002F Do not render form elements on the canvas when interactive forms are\\n    \u002F\u002F enabled. The display layer is responsible for rendering them instead.\\n    if (\\n      intent & RenderingIntentFlag.ANNOTATIONS_FORMS &&\\n      !(this instanceof SignatureWidgetAnnotation) &&\\n      !this.data.noHTML &&\\n      !this.data.hasOwnCanvas\\n    ) {\\n      return {\\n        opList: new OperatorList(),\\n        separateForm: true,\\n        separateCanvas: false,\\n      };\\n    }\\n\\n    if (!this._hasText) {\\n      return super.getOperatorList(evaluator, task, intent, annotationStorage);\\n    }\\n\\n    const content = await this._getAppearance(\\n      evaluator,\\n      task,\\n      intent,\\n      annotationStorage\\n    );\\n    if (this.appearance && content === null) {\\n      return super.getOperatorList(evaluator, task, intent, annotationStorage);\\n    }\\n\\n    const opList = new OperatorList();\\n\\n    \u002F\u002F Even if there is an appearance stream, ignore it. This is the\\n    \u002F\u002F behaviour used by Adobe Reader.\\n    if (!this._defaultAppearance || content === null) {\\n      return { opList, separateForm: false, separateCanvas: false };\\n    }\\n\\n    const isUsingOwnCanvas = !!(\\n      this.data.hasOwnCanvas && intent & RenderingIntentFlag.DISPLAY\\n    );\\n\\n    const matrix = [1, 0, 0, 1, 0, 0];\\n    const bbox = [0, 0, this.width, this.height];\\n    const transform = getTransformMatrix(this.data.rect, bbox, matrix);\\n\\n    let optionalContent;\\n    if (this.oc) {\\n      optionalContent = await evaluator.parseMarkedContentProps(\\n        this.oc,\\n        \u002F* resources = *\u002F null\\n      );\\n    }\\n    if (optionalContent !== undefined) {\\n      opList.addOp(OPS.beginMarkedContentProps, [\\\"OC\\\", optionalContent]);\\n    }\\n\\n    opList.addOp(OPS.beginAnnotation, [\\n      this.data.id,\\n      this.data.rect,\\n      transform,\\n      this.getRotationMatrix(annotationStorage),\\n      isUsingOwnCanvas,\\n    ]);\\n\\n    const stream = new StringStream(content);\\n    await evaluator.getOperatorList({\\n      stream,\\n      task,\\n      resources: this._fieldResources.mergedResources,\\n      operatorList: opList,\\n    });\\n    opList.addOp(OPS.endAnnotation, []);\\n\\n    if (optionalContent !== undefined) {\\n      opList.addOp(OPS.endMarkedContent, []);\\n    }\\n    return { opList, separateForm: false, separateCanvas: isUsingOwnCanvas };\\n  }\\n\\n  _getMKDict(rotation) {\\n    const mk = new Dict(null);\\n    if (rotation) {\\n      mk.set(\\\"R\\\", rotation);\\n    }\\n    if (this.borderColor) {\\n      mk.set(\\\"BC\\\", getPdfColorArray(this.borderColor));\\n    }\\n    if (this.backgroundColor) {\\n      mk.set(\\\"BG\\\", getPdfColorArray(this.backgroundColor));\\n    }\\n    return mk.size > 0 ? mk : null;\\n  }\\n\\n  amendSavedDict(annotationStorage, dict) {}\\n\\n  setValue(dict, value, xref, changes) {\\n    const { dict: parentDict, ref: parentRef } = getParentToUpdate(\\n      dict,\\n      this.ref,\\n      xref\\n    );\\n    if (!parentDict) {\\n      dict.set(\\\"V\\\", value);\\n    } else if (!changes.has(parentRef)) {\\n      const newParentDict = parentDict.clone();\\n      newParentDict.set(\\\"V\\\", value);\\n      changes.put(parentRef, { data: newParentDict });\\n      return newParentDict;\\n    }\\n\\n    return null;\\n  }\\n\\n  async save(evaluator, task, annotationStorage, changes) {\\n    const storageEntry = annotationStorage?.get(this.data.id);\\n    const flags = this._buildFlags(storageEntry?.noView, storageEntry?.noPrint);\\n    let value = storageEntry?.value,\\n      rotation = storageEntry?.rotation;\\n    if (value === this.data.fieldValue || value === undefined) {\\n      if (\\n        !this._hasValueFromXFA &&\\n        rotation === undefined &&\\n        flags === undefined\\n      ) {\\n        return;\\n      }\\n      value ||= this.data.fieldValue;\\n    }\\n\\n    \u002F\u002F Value can be an array (with choice list and multiple selections)\\n    if (\\n      rotation === undefined &&\\n      !this._hasValueFromXFA &&\\n      Array.isArray(value) &&\\n      Array.isArray(this.data.fieldValue) &&\\n      isArrayEqual(value, this.data.fieldValue) &&\\n      flags === undefined\\n    ) {\\n      return;\\n    }\\n\\n    if (rotation === undefined) {\\n      rotation = this.rotation;\\n    }\\n\\n    let appearance = null;\\n    if (!this._needAppearances) {\\n      appearance = await this._getAppearance(\\n        evaluator,\\n        task,\\n        RenderingIntentFlag.SAVE,\\n        annotationStorage\\n      );\\n      if (appearance === null && flags === undefined) {\\n        \u002F\u002F Appearance didn't change.\\n        return;\\n      }\\n    } else {\\n      \u002F\u002F No need to create an appearance: the pdf has the flag \u002FNeedAppearances\\n      \u002F\u002F which means that it's up to the reader to produce an appearance.\\n    }\\n\\n    let needAppearances = false;\\n    if (appearance?.needAppearances) {\\n      needAppearances = true;\\n      appearance = null;\\n    }\\n\\n    const { xref } = evaluator;\\n\\n    const originalDict = xref.fetchIfRef(this.ref);\\n    if (!(originalDict instanceof Dict)) {\\n      return;\\n    }\\n\\n    const dict = new Dict(xref);\\n    for (const key of originalDict.getKeys()) {\\n      if (key !== \\\"AP\\\") {\\n        dict.set(key, originalDict.getRaw(key));\\n      }\\n    }\\n    if (flags !== undefined) {\\n      dict.set(\\\"F\\\", flags);\\n      if (appearance === null && !needAppearances) {\\n        const ap = originalDict.getRaw(\\\"AP\\\");\\n        if (ap) {\\n          dict.set(\\\"AP\\\", ap);\\n        }\\n      }\\n    }\\n\\n    const xfa = {\\n      path: this.data.fieldName,\\n      value,\\n    };\\n\\n    const newParentDict = this.setValue(\\n      dict,\\n      Array.isArray(value)\\n        ? value.map(stringToAsciiOrUTF16BE)\\n        : stringToAsciiOrUTF16BE(value),\\n      xref,\\n      changes\\n    );\\n    this.amendSavedDict(annotationStorage, newParentDict || dict);\\n\\n    const maybeMK = this._getMKDict(rotation);\\n    if (maybeMK) {\\n      dict.set(\\\"MK\\\", maybeMK);\\n    }\\n\\n    changes.put(this.ref, {\\n      data: dict,\\n      xfa,\\n      needAppearances,\\n    });\\n    if (appearance !== null) {\\n      const newRef = xref.getNewTemporaryRef();\\n      const AP = new Dict(xref);\\n      dict.set(\\\"AP\\\", AP);\\n      AP.set(\\\"N\\\", newRef);\\n\\n      const resources = this._getSaveFieldResources(xref);\\n      const appearanceStream = new StringStream(appearance);\\n      const appearanceDict = (appearanceStream.dict = new Dict(xref));\\n      appearanceDict.set(\\\"Subtype\\\", Name.get(\\\"Form\\\"));\\n      appearanceDict.set(\\\"Resources\\\", resources);\\n      const bbox =\\n        rotation % 180 === 0\\n          ? [0, 0, this.width, this.height]\\n          : [0, 0, this.height, this.width];\\n      appearanceDict.set(\\\"BBox\\\", bbox);\\n\\n      const rotationMatrix = this.getRotationMatrix(annotationStorage);\\n      if (rotationMatrix !== IDENTITY_MATRIX) {\\n        \u002F\u002F The matrix isn't the identity one.\\n        appearanceDict.set(\\\"Matrix\\\", rotationMatrix);\\n      }\\n\\n      changes.put(newRef, {\\n        data: appearanceStream,\\n        xfa: null,\\n        needAppearances: false,\\n      });\\n    }\\n\\n    dict.set(\\\"M\\\", `D:${getModificationDate()}`);\\n  }\\n\\n  async _getAppearance(evaluator, task, intent, annotationStorage) {\\n    if (this.data.password) {\\n      return null;\\n    }\\n    const storageEntry = annotationStorage?.get(this.data.id);\\n    let value, rotation;\\n    if (storageEntry) {\\n      value = storageEntry.formattedValue || storageEntry.value;\\n      rotation = storageEntry.rotation;\\n    }\\n\\n    if (\\n      rotation === undefined &&\\n      value === undefined &&\\n      !this._needAppearances\\n    ) {\\n      if (!this._hasValueFromXFA || this.appearance) {\\n        \u002F\u002F The annotation hasn't been rendered so use the appearance.\\n        return null;\\n      }\\n    }\\n\\n    \u002F\u002F Empty or it has a trailing whitespace.\\n    const colors = this.getBorderAndBackgroundAppearances(annotationStorage);\\n\\n    if (value === undefined) {\\n      \u002F\u002F The annotation has its value in XFA datasets but not in the V field.\\n      value = this.data.fieldValue;\\n      if (!value) {\\n        return `\u002FTx BMC q ${colors}Q EMC`;\\n      }\\n    }\\n\\n    if (Array.isArray(value) && value.length === 1) {\\n      value = value[0];\\n    }\\n\\n    assert(typeof value === \\\"string\\\", \\\"Expected `value` to be a string.\\\");\\n    value = value.trimEnd();\\n\\n    if (this.data.combo) {\\n      \u002F\u002F The value can be one of the exportValue or any other values.\\n      const option = this.data.options.find(\\n        ({ exportValue }) => value === exportValue\\n      );\\n      value = option?.displayValue || value;\\n    }\\n\\n    if (value === \\\"\\\") {\\n      \u002F\u002F the field is empty: nothing to render\\n      return `\u002FTx BMC q ${colors}Q EMC`;\\n    }\\n\\n    if (rotation === undefined) {\\n      rotation = this.rotation;\\n    }\\n\\n    let lineCount = -1;\\n    let lines;\\n\\n    \u002F\u002F We could have a text containing for example some sequences of chars and\\n    \u002F\u002F their diacritics (e.g. \\\"é\\\".normalize(\\\"NFKD\\\") shows 1 char when it's 2).\\n    \u002F\u002F Positioning diacritics is really something we don't want to do here.\\n    \u002F\u002F So if a font has a glyph for a acute accent and one for \\\"e\\\" then we won't\\n    \u002F\u002F get any encoding issues but we'll render \\\"e\\\" and then \\\"´\\\".\\n    \u002F\u002F It's why we normalize the string. We use NFC to preserve the initial\\n    \u002F\u002F string, (e.g. \\\"²\\\".normalize(\\\"NFC\\\") === \\\"²\\\"\\n    \u002F\u002F but \\\"²\\\".normalize(\\\"NFKC\\\") === \\\"2\\\").\\n    \u002F\u002F\\n    \u002F\u002F TODO: it isn't a perfect solution, some chars like \\\"ẹ́\\\" will be\\n    \u002F\u002F decomposed into two chars (\\\"ẹ\\\" and \\\"´\\\"), so we should detect such\\n    \u002F\u002F situations and then use either FakeUnicodeFont or set the\\n    \u002F\u002F \u002FNeedAppearances flag.\\n    if (this.data.multiLine) {\\n      lines = value.split(\u002F\\\\r\\\\n?|\\\\n\u002F).map(line => line.normalize(\\\"NFC\\\"));\\n      lineCount = lines.length;\\n    } else {\\n      lines = [value.replace(\u002F\\\\r\\\\n?|\\\\n\u002F, \\\"\\\").normalize(\\\"NFC\\\")];\\n    }\\n\\n    const defaultPadding = 1;\\n    const defaultHPadding = 2;\\n    let { width: totalWidth, height: totalHeight } = this;\\n\\n    if (rotation === 90 || rotation === 270) {\\n      [totalWidth, totalHeight] = [totalHeight, totalWidth];\\n    }\\n\\n    if (!this._defaultAppearance) {\\n      \u002F\u002F The DA is required and must be a string.\\n      \u002F\u002F If there is no font named Helvetica in the resource dictionary,\\n      \u002F\u002F the evaluator will fall back to a default font.\\n      \u002F\u002F Doing so prevents exceptions and allows saving\u002Fprinting\\n      \u002F\u002F the file as expected.\\n      this.data.defaultAppearanceData = parseDefaultAppearance(\\n        (this._defaultAppearance = \\\"\u002FHelvetica 0 Tf 0 g\\\")\\n      );\\n    }\\n\\n    let font = await WidgetAnnotation._getFontData(\\n      evaluator,\\n      task,\\n      this.data.defaultAppearanceData,\\n      this._fieldResources.mergedResources\\n    );\\n\\n    let defaultAppearance, fontSize, lineHeight;\\n    const encodedLines = [];\\n    let encodingError = false;\\n    for (const line of lines) {\\n      const encodedString = font.encodeString(line);\\n      if (encodedString.length > 1) {\\n        encodingError = true;\\n      }\\n      encodedLines.push(encodedString.join(\\\"\\\"));\\n    }\\n\\n    if (encodingError && intent & RenderingIntentFlag.SAVE) {\\n      \u002F\u002F We don't have a way to render the field, so we just rely on the\\n      \u002F\u002F \u002FNeedAppearances trick to let the different sofware correctly render\\n      \u002F\u002F this pdf.\\n      return { needAppearances: true };\\n    }\\n\\n    \u002F\u002F We check that the font is able to encode the string.\\n    if (encodingError && this._isOffscreenCanvasSupported) {\\n      \u002F\u002F If it can't then we fallback on fake unicode font (mapped to sans-serif\\n      \u002F\u002F for the rendering).\\n      \u002F\u002F It means that a printed form can be rendered differently (it depends on\\n      \u002F\u002F the sans-serif font) but at least we've something to render.\\n      \u002F\u002F In an ideal world the associated font should correctly handle the\\n      \u002F\u002F possible chars but a user can add a smiley or whatever.\\n      \u002F\u002F We could try to embed a font but it means that we must have access\\n      \u002F\u002F to the raw font file.\\n      const fontFamily = this.data.comb ? \\\"monospace\\\" : \\\"sans-serif\\\";\\n      const fakeUnicodeFont = new FakeUnicodeFont(evaluator.xref, fontFamily);\\n      const resources = fakeUnicodeFont.createFontResources(lines.join(\\\"\\\"));\\n      const newFont = resources.getRaw(\\\"Font\\\");\\n\\n      if (this._fieldResources.mergedResources.has(\\\"Font\\\")) {\\n        const oldFont = this._fieldResources.mergedResources.get(\\\"Font\\\");\\n        for (const key of newFont.getKeys()) {\\n          oldFont.set(key, newFont.getRaw(key));\\n        }\\n      } else {\\n        this._fieldResources.mergedResources.set(\\\"Font\\\", newFont);\\n      }\\n\\n      const fontName = fakeUnicodeFont.fontName.name;\\n      font = await WidgetAnnotation._getFontData(\\n        evaluator,\\n        task,\\n        { fontName, fontSize: 0 },\\n        resources\\n      );\\n\\n      for (let i = 0, ii = encodedLines.length; i \u003C ii; i++) {\\n        encodedLines[i] = stringToUTF16String(lines[i]);\\n      }\\n\\n      const savedDefaultAppearance = Object.assign(\\n        Object.create(null),\\n        this.data.defaultAppearanceData\\n      );\\n      this.data.defaultAppearanceData.fontSize = 0;\\n      this.data.defaultAppearanceData.fontName = fontName;\\n\\n      [defaultAppearance, fontSize, lineHeight] = this._computeFontSize(\\n        totalHeight - 2 * defaultPadding,\\n        totalWidth - 2 * defaultHPadding,\\n        value,\\n        font,\\n        lineCount\\n      );\\n\\n      this.data.defaultAppearanceData = savedDefaultAppearance;\\n    } else {\\n      if (!this._isOffscreenCanvasSupported) {\\n        warn(\\n          \\\"_getAppearance: OffscreenCanvas is not supported, annotation may not render correctly.\\\"\\n        );\\n      }\\n\\n      [defaultAppearance, fontSize, lineHeight] = this._computeFontSize(\\n        totalHeight - 2 * defaultPadding,\\n        totalWidth - 2 * defaultHPadding,\\n        value,\\n        font,\\n        lineCount\\n      );\\n    }\\n\\n    let descent = font.descent;\\n    if (isNaN(descent)) {\\n      descent = BASELINE_FACTOR * lineHeight;\\n    } else {\\n      descent = Math.max(\\n        BASELINE_FACTOR * lineHeight,\\n        Math.abs(descent) * fontSize\\n      );\\n    }\\n\\n    \u002F\u002F Take into account the space we have to compute the default vertical\\n    \u002F\u002F padding.\\n    const defaultVPadding = Math.min(\\n      Math.floor((totalHeight - fontSize) \u002F 2),\\n      defaultPadding\\n    );\\n    const alignment = this.data.textAlignment;\\n\\n    if (this.data.multiLine) {\\n      return this._getMultilineAppearance(\\n        defaultAppearance,\\n        encodedLines,\\n        font,\\n        fontSize,\\n        totalWidth,\\n        totalHeight,\\n        alignment,\\n        defaultHPadding,\\n        defaultVPadding,\\n        descent,\\n        lineHeight,\\n        annotationStorage\\n      );\\n    }\\n\\n    if (this.data.comb) {\\n      return this._getCombAppearance(\\n        defaultAppearance,\\n        font,\\n        encodedLines[0],\\n        fontSize,\\n        totalWidth,\\n        totalHeight,\\n        defaultHPadding,\\n        defaultVPadding,\\n        descent,\\n        lineHeight,\\n        annotationStorage\\n      );\\n    }\\n\\n    const bottomPadding = defaultVPadding + descent;\\n    if (alignment === 0 || alignment > 2) {\\n      \u002F\u002F Left alignment: nothing to do\\n      return (\\n        `\u002FTx BMC q ${colors}BT ` +\\n        defaultAppearance +\\n        ` 1 0 0 1 ${numberToString(defaultHPadding)} ${numberToString(\\n          bottomPadding\\n        )} Tm (${escapeString(encodedLines[0])}) Tj` +\\n        \\\" ET Q EMC\\\"\\n      );\\n    }\\n\\n    const prevInfo = { shift: 0 };\\n    const renderedText = this._renderText(\\n      encodedLines[0],\\n      font,\\n      fontSize,\\n      totalWidth,\\n      alignment,\\n      prevInfo,\\n      defaultHPadding,\\n      bottomPadding\\n    );\\n    return (\\n      `\u002FTx BMC q ${colors}BT ` +\\n      defaultAppearance +\\n      ` 1 0 0 1 0 0 Tm ${renderedText}` +\\n      \\\" ET Q EMC\\\"\\n    );\\n  }\\n\\n  static async _getFontData(evaluator, task, appearanceData, resources) {\\n    const operatorList = new OperatorList();\\n    const initialState = {\\n      font: null,\\n      clone() {\\n        return this;\\n      },\\n    };\\n\\n    const { fontName, fontSize } = appearanceData;\\n    await evaluator.handleSetFont(\\n      resources,\\n      [fontName && Name.get(fontName), fontSize],\\n      \u002F* fontRef = *\u002F null,\\n      operatorList,\\n      task,\\n      initialState,\\n      \u002F* fallbackFontDict = *\u002F null\\n    );\\n\\n    return initialState.font;\\n  }\\n\\n  _getTextWidth(text, font) {\\n    return Math.sumPrecise(font.charsToGlyphs(text).map(g => g.width)) \u002F 1000;\\n  }\\n\\n  _computeFontSize(height, width, text, font, lineCount) {\\n    let { fontSize } = this.data.defaultAppearanceData;\\n    let lineHeight = (fontSize || 12) * LINE_FACTOR,\\n      numberOfLines = Math.round(height \u002F lineHeight);\\n\\n    if (!fontSize) {\\n      \u002F\u002F A zero value for size means that the font shall be auto-sized:\\n      \u002F\u002F its size shall be computed as a function of the height of the\\n      \u002F\u002F annotation rectangle (see 12.7.3.3).\\n\\n      const roundWithTwoDigits = x => Math.floor(x * 100) \u002F 100;\\n\\n      if (lineCount === -1) {\\n        \u002F\u002F Get the text width for a font size of 1.\\n        const textWidth = this._getTextWidth(text, font);\\n\\n        \u002F\u002F width \u002F textWidth is the max font size to fit the width.\\n        \u002F\u002F height \u002F LINE_FACTOR is the max font size to fit the height.\\n        fontSize = roundWithTwoDigits(\\n          Math.min(height \u002F LINE_FACTOR, width \u002F textWidth)\\n        );\\n        numberOfLines = 1;\\n      } else {\\n        const lines = text.split(\u002F\\\\r\\\\n?|\\\\n\u002F);\\n        const cachedLines = [];\\n        for (const line of lines) {\\n          const encoded = font.encodeString(line).join(\\\"\\\");\\n          const glyphs = font.charsToGlyphs(encoded);\\n          const positions = font.getCharPositions(encoded);\\n          cachedLines.push({\\n            line: encoded,\\n            glyphs,\\n            positions,\\n          });\\n        }\\n\\n        const isTooBig = fsize => {\\n          \u002F\u002F Return true when the text doesn't fit the given height.\\n          let totalHeight = 0;\\n          for (const cache of cachedLines) {\\n            const chunks = this._splitLine(null, font, fsize, width, cache);\\n            totalHeight += chunks.length * fsize;\\n            if (totalHeight > height) {\\n              return true;\\n            }\\n          }\\n          return false;\\n        };\\n\\n        \u002F\u002F Hard to guess how many lines there are.\\n        \u002F\u002F The field may have been sized to have 10 lines\\n        \u002F\u002F and the user entered only 1 so if we get font size from\\n        \u002F\u002F height and number of lines then we'll get something too big.\\n        \u002F\u002F So we compute a fake number of lines based on height and\\n        \u002F\u002F a font size equal to 12 (this is the default font size in\\n        \u002F\u002F Acrobat).\\n        \u002F\u002F Then we'll adjust font size to what we have really.\\n        numberOfLines = Math.max(numberOfLines, lineCount);\\n\\n        while (true) {\\n          lineHeight = height \u002F numberOfLines;\\n          fontSize = roundWithTwoDigits(lineHeight \u002F LINE_FACTOR);\\n\\n          if (isTooBig(fontSize)) {\\n            numberOfLines++;\\n            continue;\\n          }\\n\\n          break;\\n        }\\n      }\\n\\n      const { fontName, fontColor } = this.data.defaultAppearanceData;\\n      this._defaultAppearance = createDefaultAppearance({\\n        fontSize,\\n        fontName,\\n        fontColor,\\n      });\\n    }\\n\\n    return [this._defaultAppearance, fontSize, height \u002F numberOfLines];\\n  }\\n\\n  _renderText(\\n    text,\\n    font,\\n    fontSize,\\n    totalWidth,\\n    alignment,\\n    prevInfo,\\n    hPadding,\\n    vPadding\\n  ) {\\n    \u002F\u002F TODO: we need to take into account (if possible) how the text\\n    \u002F\u002F is rendered. For example in arabic, the cumulated width of some\\n    \u002F\u002F glyphs isn't equal to the width of the rendered glyphs because\\n    \u002F\u002F of ligatures.\\n    let shift;\\n    if (alignment === 1) {\\n      \u002F\u002F Center\\n      const width = this._getTextWidth(text, font) * fontSize;\\n      shift = (totalWidth - width) \u002F 2;\\n    } else if (alignment === 2) {\\n      \u002F\u002F Right\\n      const width = this._getTextWidth(text, font) * fontSize;\\n      shift = totalWidth - width - hPadding;\\n    } else {\\n      shift = hPadding;\\n    }\\n    const shiftStr = numberToString(shift - prevInfo.shift);\\n    prevInfo.shift = shift;\\n    vPadding = numberToString(vPadding);\\n\\n    return `${shiftStr} ${vPadding} Td (${escapeString(text)}) Tj`;\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _getSaveFieldResources(xref) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        this.data.defaultAppearanceData,\\n        \\\"Expected `_defaultAppearanceData` to have been set.\\\"\\n      );\\n    }\\n    const { localResources, appearanceResources, acroFormResources } =\\n      this._fieldResources;\\n\\n    const fontName = this.data.defaultAppearanceData?.fontName;\\n    if (!fontName) {\\n      return localResources || Dict.empty;\\n    }\\n\\n    for (const resources of [localResources, appearanceResources]) {\\n      if (resources instanceof Dict) {\\n        const localFont = resources.get(\\\"Font\\\");\\n        if (localFont instanceof Dict && localFont.has(fontName)) {\\n          return resources;\\n        }\\n      }\\n    }\\n    if (acroFormResources instanceof Dict) {\\n      const acroFormFont = acroFormResources.get(\\\"Font\\\");\\n      if (acroFormFont instanceof Dict && acroFormFont.has(fontName)) {\\n        const subFontDict = new Dict(xref);\\n        subFontDict.set(fontName, acroFormFont.getRaw(fontName));\\n\\n        const subResourcesDict = new Dict(xref);\\n        subResourcesDict.set(\\\"Font\\\", subFontDict);\\n\\n        return Dict.merge({\\n          xref,\\n          dictArray: [subResourcesDict, localResources],\\n          mergeSubDicts: true,\\n        });\\n      }\\n    }\\n    return localResources || Dict.empty;\\n  }\\n\\n  getFieldObject() {\\n    return null;\\n  }\\n}\\n\\nclass TextWidgetAnnotation extends WidgetAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    const { dict } = params;\\n\\n    if (dict.has(\\\"PMD\\\")) {\\n      \u002F\u002F It's used to display a barcode but it isn't specified so we just hide\\n      \u002F\u002F it to avoid any confusion.\\n      this.flags |= AnnotationFlag.HIDDEN;\\n      this.data.hidden = true;\\n      warn(\\\"Barcodes are not supported\\\");\\n    }\\n\\n    this.data.hasOwnCanvas = this.data.readOnly && !this.data.noHTML;\\n    this._hasText = true;\\n\\n    \u002F\u002F The field value is always a string.\\n    if (typeof this.data.fieldValue !== \\\"string\\\") {\\n      this.data.fieldValue = \\\"\\\";\\n    }\\n\\n    \u002F\u002F Determine the alignment of text in the field.\\n    let alignment = getInheritableProperty({ dict, key: \\\"Q\\\" });\\n    if (!Number.isInteger(alignment) || alignment \u003C 0 || alignment > 2) {\\n      alignment = null;\\n    }\\n    this.data.textAlignment = alignment;\\n\\n    \u002F\u002F Determine the maximum length of text in the field.\\n    let maximumLength = getInheritableProperty({ dict, key: \\\"MaxLen\\\" });\\n    if (!Number.isInteger(maximumLength) || maximumLength \u003C 0) {\\n      maximumLength = 0;\\n    }\\n    this.data.maxLen = maximumLength;\\n\\n    \u002F\u002F Process field flags for the display layer.\\n    this.data.multiLine = this.hasFieldFlag(AnnotationFieldFlag.MULTILINE);\\n    this.data.comb =\\n      this.hasFieldFlag(AnnotationFieldFlag.COMB) &&\\n      !this.data.multiLine &&\\n      !this.data.password &&\\n      !this.hasFieldFlag(AnnotationFieldFlag.FILESELECT) &&\\n      this.data.maxLen !== 0;\\n    this.data.doNotScroll = this.hasFieldFlag(AnnotationFieldFlag.DONOTSCROLL);\\n  }\\n\\n  get hasTextContent() {\\n    return !!this.appearance && !this._needAppearances;\\n  }\\n\\n  _getCombAppearance(\\n    defaultAppearance,\\n    font,\\n    text,\\n    fontSize,\\n    width,\\n    height,\\n    hPadding,\\n    vPadding,\\n    descent,\\n    lineHeight,\\n    annotationStorage\\n  ) {\\n    const combWidth = width \u002F this.data.maxLen;\\n    \u002F\u002F Empty or it has a trailing whitespace.\\n    const colors = this.getBorderAndBackgroundAppearances(annotationStorage);\\n\\n    const buf = [];\\n    const positions = font.getCharPositions(text);\\n    for (const [start, end] of positions) {\\n      buf.push(`(${escapeString(text.substring(start, end))}) Tj`);\\n    }\\n\\n    const renderedComb = buf.join(` ${numberToString(combWidth)} 0 Td `);\\n    return (\\n      `\u002FTx BMC q ${colors}BT ` +\\n      defaultAppearance +\\n      ` 1 0 0 1 ${numberToString(hPadding)} ${numberToString(\\n        vPadding + descent\\n      )} Tm ${renderedComb}` +\\n      \\\" ET Q EMC\\\"\\n    );\\n  }\\n\\n  _getMultilineAppearance(\\n    defaultAppearance,\\n    lines,\\n    font,\\n    fontSize,\\n    width,\\n    height,\\n    alignment,\\n    hPadding,\\n    vPadding,\\n    descent,\\n    lineHeight,\\n    annotationStorage\\n  ) {\\n    const buf = [];\\n    const totalWidth = width - 2 * hPadding;\\n    const prevInfo = { shift: 0 };\\n    for (let i = 0, ii = lines.length; i \u003C ii; i++) {\\n      const line = lines[i];\\n      const chunks = this._splitLine(line, font, fontSize, totalWidth);\\n      for (let j = 0, jj = chunks.length; j \u003C jj; j++) {\\n        const chunk = chunks[j];\\n        const vShift =\\n          i === 0 && j === 0 ? -vPadding - (lineHeight - descent) : -lineHeight;\\n        buf.push(\\n          this._renderText(\\n            chunk,\\n            font,\\n            fontSize,\\n            width,\\n            alignment,\\n            prevInfo,\\n            hPadding,\\n            vShift\\n          )\\n        );\\n      }\\n    }\\n\\n    \u002F\u002F Empty or it has a trailing whitespace.\\n    const colors = this.getBorderAndBackgroundAppearances(annotationStorage);\\n    const renderedText = buf.join(\\\"\\\\n\\\");\\n\\n    return (\\n      `\u002FTx BMC q ${colors}BT ` +\\n      defaultAppearance +\\n      ` 1 0 0 1 0 ${numberToString(height)} Tm ${renderedText}` +\\n      \\\" ET Q EMC\\\"\\n    );\\n  }\\n\\n  _splitLine(line, font, fontSize, width, cache = {}) {\\n    line = cache.line || line;\\n\\n    const glyphs = cache.glyphs || font.charsToGlyphs(line);\\n\\n    if (glyphs.length \u003C= 1) {\\n      \u002F\u002F Nothing to split\\n      return [line];\\n    }\\n\\n    const positions = cache.positions || font.getCharPositions(line);\\n    const scale = fontSize \u002F 1000;\\n    const chunks = [];\\n\\n    let lastSpacePosInStringStart = -1,\\n      lastSpacePosInStringEnd = -1,\\n      lastSpacePos = -1,\\n      startChunk = 0,\\n      currentWidth = 0;\\n\\n    for (let i = 0, ii = glyphs.length; i \u003C ii; i++) {\\n      const [start, end] = positions[i];\\n      const glyph = glyphs[i];\\n      const glyphWidth = glyph.width * scale;\\n      if (glyph.unicode === \\\" \\\") {\\n        if (currentWidth + glyphWidth > width) {\\n          \u002F\u002F We can break here\\n          chunks.push(line.substring(startChunk, start));\\n          startChunk = start;\\n          currentWidth = glyphWidth;\\n          lastSpacePosInStringStart = -1;\\n          lastSpacePos = -1;\\n        } else {\\n          currentWidth += glyphWidth;\\n          lastSpacePosInStringStart = start;\\n          lastSpacePosInStringEnd = end;\\n          lastSpacePos = i;\\n        }\\n      } else if (currentWidth + glyphWidth > width) {\\n        \u002F\u002F We must break to the last white position (if available)\\n        if (lastSpacePosInStringStart !== -1) {\\n          chunks.push(line.substring(startChunk, lastSpacePosInStringEnd));\\n          startChunk = lastSpacePosInStringEnd;\\n          i = lastSpacePos + 1;\\n          lastSpacePosInStringStart = -1;\\n          currentWidth = 0;\\n        } else {\\n          \u002F\u002F Just break in the middle of the word\\n          chunks.push(line.substring(startChunk, start));\\n          startChunk = start;\\n          currentWidth = glyphWidth;\\n        }\\n      } else {\\n        currentWidth += glyphWidth;\\n      }\\n    }\\n\\n    if (startChunk \u003C line.length) {\\n      chunks.push(line.substring(startChunk, line.length));\\n    }\\n\\n    return chunks;\\n  }\\n\\n  async extractTextContent(evaluator, task, viewBox) {\\n    await super.extractTextContent(evaluator, task, viewBox);\\n    const text = this.data.textContent;\\n    if (!text) {\\n      return;\\n    }\\n\\n    \u002F\u002F The text extractor doesn't handle empty lines correctly, so if the\\n    \u002F\u002F content we get is more or less (modulo whitespaces) the same as the\\n    \u002F\u002F field value we just ignore it.\\n    const allText = text.join(\\\"\\\\n\\\");\\n    if (allText === this.data.fieldValue) {\\n      return;\\n    }\\n    const regex = allText.replaceAll(\u002F([.*+?^${}()|[\\\\]\\\\\\\\])|(\\\\s+)\u002Fg, (_m, p1) =>\\n      p1 ? `\\\\\\\\${p1}` : \\\"\\\\\\\\s+\\\"\\n    );\\n    if (new RegExp(`^\\\\\\\\s*${regex}\\\\\\\\s*$`).test(this.data.fieldValue)) {\\n      this.data.textContent = this.data.fieldValue.split(\\\"\\\\n\\\");\\n    }\\n  }\\n\\n  getFieldObject() {\\n    return {\\n      id: this.data.id,\\n      value: this.data.fieldValue,\\n      defaultValue: this.data.defaultFieldValue || \\\"\\\",\\n      multiline: this.data.multiLine,\\n      password: this.data.password,\\n      charLimit: this.data.maxLen,\\n      comb: this.data.comb,\\n      editable: !this.data.readOnly,\\n      hidden: this.data.hidden,\\n      name: this.data.fieldName,\\n      rect: this.data.rect,\\n      actions: this.data.actions,\\n      page: this.data.pageIndex,\\n      strokeColor: this.data.borderColor,\\n      fillColor: this.data.backgroundColor,\\n      rotation: this.rotation,\\n      type: \\\"text\\\",\\n    };\\n  }\\n}\\n\\nclass ButtonWidgetAnnotation extends WidgetAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    this.checkedAppearance = null;\\n    this.uncheckedAppearance = null;\\n\\n    const isRadio = this.hasFieldFlag(AnnotationFieldFlag.RADIO),\\n      isPushButton = this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\\n\\n    this.data.checkBox = !isRadio && !isPushButton;\\n    this.data.radioButton = isRadio && !isPushButton;\\n    this.data.pushButton = isPushButton;\\n    this.data.isTooltipOnly = false;\\n\\n    if (this.data.checkBox) {\\n      this._processCheckBox(params);\\n    } else if (this.data.radioButton) {\\n      this._processRadioButton(params);\\n    } else if (this.data.pushButton) {\\n      this.data.hasOwnCanvas = true;\\n      this.data.noHTML = false;\\n      this._processPushButton(params);\\n    } else {\\n      warn(\\\"Invalid field flags for button widget annotation\\\");\\n    }\\n  }\\n\\n  async getOperatorList(evaluator, task, intent, annotationStorage) {\\n    if (this.data.pushButton) {\\n      return super.getOperatorList(\\n        evaluator,\\n        task,\\n        intent,\\n        false, \u002F\u002F we use normalAppearance to render the button\\n        annotationStorage\\n      );\\n    }\\n\\n    let value = null;\\n    let rotation = null;\\n    if (annotationStorage) {\\n      const storageEntry = annotationStorage.get(this.data.id);\\n      value = storageEntry ? storageEntry.value : null;\\n      rotation = storageEntry ? storageEntry.rotation : null;\\n    }\\n\\n    if (value === null && this.appearance) {\\n      \u002F\u002F Nothing in the annotationStorage.\\n      \u002F\u002F But we've a default appearance so use it.\\n      return super.getOperatorList(evaluator, task, intent, annotationStorage);\\n    }\\n\\n    if (value === null || value === undefined) {\\n      \u002F\u002F There is no default appearance so use the one derived\\n      \u002F\u002F from the field value.\\n      value = this.data.checkBox\\n        ? this.data.fieldValue === this.data.exportValue\\n        : this.data.fieldValue === this.data.buttonValue;\\n    }\\n\\n    const appearance = value\\n      ? this.checkedAppearance\\n      : this.uncheckedAppearance;\\n    if (appearance) {\\n      const savedAppearance = this.appearance;\\n      const savedMatrix = lookupMatrix(\\n        appearance.dict.getArray(\\\"Matrix\\\"),\\n        IDENTITY_MATRIX\\n      );\\n\\n      if (rotation) {\\n        appearance.dict.set(\\n          \\\"Matrix\\\",\\n          this.getRotationMatrix(annotationStorage)\\n        );\\n      }\\n\\n      this.appearance = appearance;\\n      const operatorList = super.getOperatorList(\\n        evaluator,\\n        task,\\n        intent,\\n        annotationStorage\\n      );\\n      this.appearance = savedAppearance;\\n      appearance.dict.set(\\\"Matrix\\\", savedMatrix);\\n      return operatorList;\\n    }\\n\\n    \u002F\u002F No appearance\\n    return {\\n      opList: new OperatorList(),\\n      separateForm: false,\\n      separateCanvas: false,\\n    };\\n  }\\n\\n  async save(evaluator, task, annotationStorage, changes) {\\n    if (this.data.checkBox) {\\n      this._saveCheckbox(evaluator, task, annotationStorage, changes);\\n      return;\\n    }\\n\\n    if (this.data.radioButton) {\\n      this._saveRadioButton(evaluator, task, annotationStorage, changes);\\n    }\\n  }\\n\\n  async _saveCheckbox(evaluator, task, annotationStorage, changes) {\\n    if (!annotationStorage) {\\n      return;\\n    }\\n    const storageEntry = annotationStorage.get(this.data.id);\\n    const flags = this._buildFlags(storageEntry?.noView, storageEntry?.noPrint);\\n    let rotation = storageEntry?.rotation,\\n      value = storageEntry?.value;\\n\\n    if (rotation === undefined && flags === undefined) {\\n      if (value === undefined) {\\n        return;\\n      }\\n\\n      const defaultValue = this.data.fieldValue === this.data.exportValue;\\n      if (defaultValue === value) {\\n        return;\\n      }\\n    }\\n\\n    let dict = evaluator.xref.fetchIfRef(this.ref);\\n    if (!(dict instanceof Dict)) {\\n      return;\\n    }\\n    dict = dict.clone();\\n\\n    if (rotation === undefined) {\\n      rotation = this.rotation;\\n    }\\n    if (value === undefined) {\\n      value = this.data.fieldValue === this.data.exportValue;\\n    }\\n\\n    const xfa = {\\n      path: this.data.fieldName,\\n      value: value ? this.data.exportValue : \\\"\\\",\\n    };\\n\\n    const name = Name.get(value ? this.data.exportValue : \\\"Off\\\");\\n    this.setValue(dict, name, evaluator.xref, changes);\\n\\n    dict.set(\\\"AS\\\", name);\\n    dict.set(\\\"M\\\", `D:${getModificationDate()}`);\\n    if (flags !== undefined) {\\n      dict.set(\\\"F\\\", flags);\\n    }\\n\\n    const maybeMK = this._getMKDict(rotation);\\n    if (maybeMK) {\\n      dict.set(\\\"MK\\\", maybeMK);\\n    }\\n\\n    changes.put(this.ref, {\\n      data: dict,\\n      xfa,\\n      needAppearances: false,\\n    });\\n  }\\n\\n  async _saveRadioButton(evaluator, task, annotationStorage, changes) {\\n    if (!annotationStorage) {\\n      return;\\n    }\\n    const storageEntry = annotationStorage.get(this.data.id);\\n    const flags = this._buildFlags(storageEntry?.noView, storageEntry?.noPrint);\\n    let rotation = storageEntry?.rotation,\\n      value = storageEntry?.value;\\n\\n    if (rotation === undefined && flags === undefined) {\\n      if (value === undefined) {\\n        return;\\n      }\\n\\n      const defaultValue = this.data.fieldValue === this.data.buttonValue;\\n      if (defaultValue === value) {\\n        return;\\n      }\\n    }\\n\\n    let dict = evaluator.xref.fetchIfRef(this.ref);\\n    if (!(dict instanceof Dict)) {\\n      return;\\n    }\\n    dict = dict.clone();\\n\\n    if (value === undefined) {\\n      value = this.data.fieldValue === this.data.buttonValue;\\n    }\\n\\n    if (rotation === undefined) {\\n      rotation = this.rotation;\\n    }\\n\\n    const xfa = {\\n      path: this.data.fieldName,\\n      value: value ? this.data.buttonValue : \\\"\\\",\\n    };\\n\\n    const name = Name.get(value ? this.data.buttonValue : \\\"Off\\\");\\n    if (value) {\\n      this.setValue(dict, name, evaluator.xref, changes);\\n    }\\n\\n    dict.set(\\\"AS\\\", name);\\n    dict.set(\\\"M\\\", `D:${getModificationDate()}`);\\n    if (flags !== undefined) {\\n      dict.set(\\\"F\\\", flags);\\n    }\\n\\n    const maybeMK = this._getMKDict(rotation);\\n    if (maybeMK) {\\n      dict.set(\\\"MK\\\", maybeMK);\\n    }\\n\\n    changes.put(this.ref, {\\n      data: dict,\\n      xfa,\\n      needAppearances: false,\\n    });\\n  }\\n\\n  _getDefaultCheckedAppearance(params, type) {\\n    const { width, height } = this;\\n    const bbox = [0, 0, width, height];\\n\\n    \u002F\u002F Ratio used to have a mark slightly smaller than the bbox.\\n    const FONT_RATIO = 0.8;\\n    const fontSize = Math.min(width, height) * FONT_RATIO;\\n\\n    \u002F\u002F Char Metrics\\n    \u002F\u002F Widths came from widths for ZapfDingbats.\\n    \u002F\u002F Heights are guessed with Fontforge and FoxitDingbats.pfb.\\n    let metrics, char;\\n    if (type === \\\"check\\\") {\\n      \u002F\u002F Char 33 (2713 in unicode)\\n      metrics = {\\n        width: 0.755 * fontSize,\\n        height: 0.705 * fontSize,\\n      };\\n      char = \\\"\\\\x33\\\";\\n    } else if (type === \\\"disc\\\") {\\n      \u002F\u002F Char 6C (25CF in unicode)\\n      metrics = {\\n        width: 0.791 * fontSize,\\n        height: 0.705 * fontSize,\\n      };\\n      char = \\\"\\\\x6C\\\";\\n    } else {\\n      unreachable(`_getDefaultCheckedAppearance - unsupported type: ${type}`);\\n    }\\n\\n    \u002F\u002F Values to center the glyph in the bbox.\\n    const xShift = numberToString((width - metrics.width) \u002F 2);\\n    const yShift = numberToString((height - metrics.height) \u002F 2);\\n\\n    const appearance = `q BT \u002FPdfJsZaDb ${fontSize} Tf 0 g ${xShift} ${yShift} Td (${char}) Tj ET Q`;\\n\\n    const appearanceStreamDict = new Dict(params.xref);\\n    appearanceStreamDict.set(\\\"FormType\\\", 1);\\n    appearanceStreamDict.set(\\\"Subtype\\\", Name.get(\\\"Form\\\"));\\n    appearanceStreamDict.set(\\\"Type\\\", Name.get(\\\"XObject\\\"));\\n    appearanceStreamDict.set(\\\"BBox\\\", bbox);\\n    appearanceStreamDict.set(\\\"Matrix\\\", [1, 0, 0, 1, 0, 0]);\\n    appearanceStreamDict.set(\\\"Length\\\", appearance.length);\\n\\n    const resources = new Dict(params.xref);\\n    const font = new Dict(params.xref);\\n    font.set(\\\"PdfJsZaDb\\\", this.fallbackFontDict);\\n    resources.set(\\\"Font\\\", font);\\n\\n    appearanceStreamDict.set(\\\"Resources\\\", resources);\\n\\n    this.checkedAppearance = new StringStream(appearance);\\n    this.checkedAppearance.dict = appearanceStreamDict;\\n\\n    this._streams.push(this.checkedAppearance);\\n  }\\n\\n  _processCheckBox(params) {\\n    const customAppearance = params.dict.get(\\\"AP\\\");\\n    if (!(customAppearance instanceof Dict)) {\\n      return;\\n    }\\n\\n    const normalAppearance = customAppearance.get(\\\"N\\\");\\n    if (!(normalAppearance instanceof Dict)) {\\n      return;\\n    }\\n\\n    \u002F\u002F See https:\u002F\u002Fbugzilla.mozilla.org\u002Fshow_bug.cgi?id=1722036.\\n    \u002F\u002F If we've an AS and a V then take AS.\\n    const asValue = this._decodeFormValue(params.dict.get(\\\"AS\\\"));\\n    if (typeof asValue === \\\"string\\\") {\\n      this.data.fieldValue = asValue;\\n    }\\n\\n    const yes =\\n      this.data.fieldValue !== null && this.data.fieldValue !== \\\"Off\\\"\\n        ? this.data.fieldValue\\n        : \\\"Yes\\\";\\n\\n    const exportValues = this._decodeFormValue(normalAppearance.getKeys());\\n    if (exportValues.length === 0) {\\n      exportValues.push(\\\"Off\\\", yes);\\n    } else if (exportValues.length === 1) {\\n      if (exportValues[0] === \\\"Off\\\") {\\n        exportValues.push(yes);\\n      } else {\\n        exportValues.unshift(\\\"Off\\\");\\n      }\\n    } else if (exportValues.includes(yes)) {\\n      exportValues.length = 0;\\n      exportValues.push(\\\"Off\\\", yes);\\n    } else {\\n      const otherYes = exportValues.find(v => v !== \\\"Off\\\");\\n      exportValues.length = 0;\\n      exportValues.push(\\\"Off\\\", otherYes);\\n    }\\n\\n    \u002F\u002F Don't use a \\\"V\\\" entry pointing to a non-existent appearance state,\\n    \u002F\u002F see e.g. bug1720411.pdf where it's an *empty* Name-instance.\\n    if (!exportValues.includes(this.data.fieldValue)) {\\n      this.data.fieldValue = \\\"Off\\\";\\n    }\\n\\n    this.data.exportValue = exportValues[1];\\n\\n    const checkedAppearance = normalAppearance.get(this.data.exportValue);\\n    this.checkedAppearance =\\n      checkedAppearance instanceof BaseStream ? checkedAppearance : null;\\n    const uncheckedAppearance = normalAppearance.get(\\\"Off\\\");\\n    this.uncheckedAppearance =\\n      uncheckedAppearance instanceof BaseStream ? uncheckedAppearance : null;\\n\\n    if (this.checkedAppearance) {\\n      this._streams.push(this.checkedAppearance);\\n    } else {\\n      this._getDefaultCheckedAppearance(params, \\\"check\\\");\\n    }\\n    if (this.uncheckedAppearance) {\\n      this._streams.push(this.uncheckedAppearance);\\n    }\\n    this._fallbackFontDict = this.fallbackFontDict;\\n    if (this.data.defaultFieldValue === null) {\\n      this.data.defaultFieldValue = \\\"Off\\\";\\n    }\\n  }\\n\\n  _processRadioButton(params) {\\n    this.data.buttonValue = null;\\n\\n    \u002F\u002F The parent field's `V` entry holds a `Name` object with the appearance\\n    \u002F\u002F state of whichever child field is currently in the \\\"on\\\" state.\\n    const fieldParent = params.dict.get(\\\"Parent\\\");\\n    if (fieldParent instanceof Dict) {\\n      this.parent = params.dict.getRaw(\\\"Parent\\\");\\n      const fieldParentValue = fieldParent.get(\\\"V\\\");\\n      if (fieldParentValue instanceof Name) {\\n        this.data.fieldValue = this._decodeFormValue(fieldParentValue);\\n      }\\n    }\\n\\n    \u002F\u002F The button's value corresponds to its appearance state.\\n    const appearanceStates = params.dict.get(\\\"AP\\\");\\n    if (!(appearanceStates instanceof Dict)) {\\n      return;\\n    }\\n    const normalAppearance = appearanceStates.get(\\\"N\\\");\\n    if (!(normalAppearance instanceof Dict)) {\\n      return;\\n    }\\n    for (const key of normalAppearance.getKeys()) {\\n      if (key !== \\\"Off\\\") {\\n        this.data.buttonValue = this._decodeFormValue(key);\\n        break;\\n      }\\n    }\\n\\n    const checkedAppearance = normalAppearance.get(this.data.buttonValue);\\n    this.checkedAppearance =\\n      checkedAppearance instanceof BaseStream ? checkedAppearance : null;\\n    const uncheckedAppearance = normalAppearance.get(\\\"Off\\\");\\n    this.uncheckedAppearance =\\n      uncheckedAppearance instanceof BaseStream ? uncheckedAppearance : null;\\n\\n    if (this.checkedAppearance) {\\n      this._streams.push(this.checkedAppearance);\\n    } else {\\n      this._getDefaultCheckedAppearance(params, \\\"disc\\\");\\n    }\\n    if (this.uncheckedAppearance) {\\n      this._streams.push(this.uncheckedAppearance);\\n    }\\n    this._fallbackFontDict = this.fallbackFontDict;\\n    if (this.data.defaultFieldValue === null) {\\n      this.data.defaultFieldValue = \\\"Off\\\";\\n    }\\n  }\\n\\n  _processPushButton(params) {\\n    const { dict, annotationGlobals } = params;\\n\\n    if (!dict.has(\\\"A\\\") && !dict.has(\\\"AA\\\") && !this.data.alternativeText) {\\n      warn(\\\"Push buttons without action dictionaries are not supported\\\");\\n      return;\\n    }\\n\\n    this.data.isTooltipOnly = !dict.has(\\\"A\\\") && !dict.has(\\\"AA\\\");\\n\\n    Catalog.parseDestDictionary({\\n      destDict: dict,\\n      resultObj: this.data,\\n      docBaseUrl: annotationGlobals.baseUrl,\\n      docAttachments: annotationGlobals.attachments,\\n    });\\n  }\\n\\n  getFieldObject() {\\n    let type = \\\"button\\\";\\n    let exportValues;\\n    if (this.data.checkBox) {\\n      type = \\\"checkbox\\\";\\n      exportValues = this.data.exportValue;\\n    } else if (this.data.radioButton) {\\n      type = \\\"radiobutton\\\";\\n      exportValues = this.data.buttonValue;\\n    }\\n    return {\\n      id: this.data.id,\\n      value: this.data.fieldValue || \\\"Off\\\",\\n      defaultValue: this.data.defaultFieldValue,\\n      exportValues,\\n      editable: !this.data.readOnly,\\n      name: this.data.fieldName,\\n      rect: this.data.rect,\\n      hidden: this.data.hidden,\\n      actions: this.data.actions,\\n      page: this.data.pageIndex,\\n      strokeColor: this.data.borderColor,\\n      fillColor: this.data.backgroundColor,\\n      rotation: this.rotation,\\n      type,\\n    };\\n  }\\n\\n  get fallbackFontDict() {\\n    const dict = new Dict();\\n    dict.set(\\\"BaseFont\\\", Name.get(\\\"ZapfDingbats\\\"));\\n    dict.set(\\\"Type\\\", Name.get(\\\"FallbackType\\\"));\\n    dict.set(\\\"Subtype\\\", Name.get(\\\"FallbackType\\\"));\\n    dict.set(\\\"Encoding\\\", Name.get(\\\"ZapfDingbatsEncoding\\\"));\\n\\n    return shadow(this, \\\"fallbackFontDict\\\", dict);\\n  }\\n}\\n\\nclass ChoiceWidgetAnnotation extends WidgetAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    const { dict, xref } = params;\\n\\n    this.indices = dict.getArray(\\\"I\\\");\\n    this.hasIndices = Array.isArray(this.indices) && this.indices.length > 0;\\n\\n    \u002F\u002F Determine the options. The options array may consist of strings or\\n    \u002F\u002F arrays. If the array consists of arrays, then the first element of\\n    \u002F\u002F each array is the export value and the second element of each array is\\n    \u002F\u002F the display value. If the array consists of strings, then these\\n    \u002F\u002F represent both the export and display value. In this case, we convert\\n    \u002F\u002F it to an array of arrays as well for convenience in the display layer.\\n    \u002F\u002F Note that the specification does not state that the `Opt` field is\\n    \u002F\u002F inheritable, but in practice PDF generators do make annotations\\n    \u002F\u002F inherit the options from a parent annotation (issue 8094).\\n    this.data.options = [];\\n\\n    const options = getInheritableProperty({ dict, key: \\\"Opt\\\" });\\n    if (Array.isArray(options)) {\\n      for (let i = 0, ii = options.length; i \u003C ii; i++) {\\n        const option = xref.fetchIfRef(options[i]);\\n        const isOptionArray = Array.isArray(option);\\n\\n        this.data.options[i] = {\\n          exportValue: this._decodeFormValue(\\n            isOptionArray ? xref.fetchIfRef(option[0]) : option\\n          ),\\n          displayValue: this._decodeFormValue(\\n            isOptionArray ? xref.fetchIfRef(option[1]) : option\\n          ),\\n        };\\n      }\\n    }\\n\\n    if (!this.hasIndices) {\\n      \u002F\u002F The field value can be `null` if no item is selected, a string if one\\n      \u002F\u002F item is selected or an array of strings if multiple items are selected.\\n      \u002F\u002F For consistency in the API and convenience in the display layer, we\\n      \u002F\u002F always make the field value an array with zero, one or multiple items.\\n      if (typeof this.data.fieldValue === \\\"string\\\") {\\n        this.data.fieldValue = [this.data.fieldValue];\\n      } else {\\n        this.data.fieldValue ||= [];\\n      }\\n    } else {\\n      \u002F\u002F The specs say that we should have an indices array only with\\n      \u002F\u002F multiselectable Choice and the \\\"V\\\" entry should have the\\n      \u002F\u002F precedence, but Acrobat itself is using it whatever the\\n      \u002F\u002F the \\\"V\\\" entry is (see bug 1770750).\\n      this.data.fieldValue = [];\\n      const ii = this.data.options.length;\\n      for (const i of this.indices) {\\n        if (Number.isInteger(i) && i >= 0 && i \u003C ii) {\\n          this.data.fieldValue.push(this.data.options[i].exportValue);\\n        }\\n      }\\n    }\\n\\n    \u002F\u002F It's a workaround for the issue #19083.\\n    \u002F\u002F Normally a choice widget is a mix of a text field and a listbox,\\n    \u002F\u002F So in the case where the V entry isn't an option we should just set it\\n    \u002F\u002F as the text field value.\\n    if (this.data.options.length === 0 && this.data.fieldValue.length > 0) {\\n      \u002F\u002F If there are no options, then the field value is the only option.\\n      this.data.options = this.data.fieldValue.map(value => ({\\n        exportValue: value,\\n        displayValue: value,\\n      }));\\n    }\\n\\n    \u002F\u002F Process field flags for the display layer.\\n    this.data.combo = this.hasFieldFlag(AnnotationFieldFlag.COMBO);\\n    this.data.multiSelect = this.hasFieldFlag(AnnotationFieldFlag.MULTISELECT);\\n    this._hasText = true;\\n  }\\n\\n  getFieldObject() {\\n    const type = this.data.combo ? \\\"combobox\\\" : \\\"listbox\\\";\\n    const value =\\n      this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null;\\n    return {\\n      id: this.data.id,\\n      value,\\n      defaultValue: this.data.defaultFieldValue,\\n      editable: !this.data.readOnly,\\n      name: this.data.fieldName,\\n      rect: this.data.rect,\\n      numItems: this.data.fieldValue.length,\\n      multipleSelection: this.data.multiSelect,\\n      hidden: this.data.hidden,\\n      actions: this.data.actions,\\n      items: this.data.options,\\n      page: this.data.pageIndex,\\n      strokeColor: this.data.borderColor,\\n      fillColor: this.data.backgroundColor,\\n      rotation: this.rotation,\\n      type,\\n    };\\n  }\\n\\n  amendSavedDict(annotationStorage, dict) {\\n    if (!this.hasIndices) {\\n      return;\\n    }\\n    let values = annotationStorage?.get(this.data.id)?.value;\\n    if (!Array.isArray(values)) {\\n      values = [values];\\n    }\\n    const indices = [];\\n    const { options } = this.data;\\n    for (let i = 0, j = 0, ii = options.length; i \u003C ii; i++) {\\n      if (options[i].exportValue === values[j]) {\\n        indices.push(i);\\n        j += 1;\\n      }\\n    }\\n    dict.set(\\\"I\\\", indices);\\n  }\\n\\n  async _getAppearance(evaluator, task, intent, annotationStorage) {\\n    if (this.data.combo) {\\n      return super._getAppearance(evaluator, task, intent, annotationStorage);\\n    }\\n\\n    let exportedValue, rotation;\\n    const storageEntry = annotationStorage?.get(this.data.id);\\n    if (storageEntry) {\\n      rotation = storageEntry.rotation;\\n      exportedValue = storageEntry.value;\\n    }\\n\\n    if (\\n      rotation === undefined &&\\n      exportedValue === undefined &&\\n      !this._needAppearances\\n    ) {\\n      \u002F\u002F The annotation hasn't been rendered so use the appearance\\n      return null;\\n    }\\n\\n    if (exportedValue === undefined) {\\n      exportedValue = this.data.fieldValue;\\n    } else if (!Array.isArray(exportedValue)) {\\n      exportedValue = [exportedValue];\\n    }\\n\\n    const defaultPadding = 1;\\n    const defaultHPadding = 2;\\n    let { width: totalWidth, height: totalHeight } = this;\\n\\n    if (rotation === 90 || rotation === 270) {\\n      [totalWidth, totalHeight] = [totalHeight, totalWidth];\\n    }\\n\\n    const lineCount = this.data.options.length;\\n    const valueIndices = [];\\n    for (let i = 0; i \u003C lineCount; i++) {\\n      const { exportValue } = this.data.options[i];\\n      if (exportedValue.includes(exportValue)) {\\n        valueIndices.push(i);\\n      }\\n    }\\n\\n    if (!this._defaultAppearance) {\\n      \u002F\u002F The DA is required and must be a string.\\n      \u002F\u002F If there is no font named Helvetica in the resource dictionary,\\n      \u002F\u002F the evaluator will fall back to a default font.\\n      \u002F\u002F Doing so prevents exceptions and allows saving\u002Fprinting\\n      \u002F\u002F the file as expected.\\n      this.data.defaultAppearanceData = parseDefaultAppearance(\\n        (this._defaultAppearance = \\\"\u002FHelvetica 0 Tf 0 g\\\")\\n      );\\n    }\\n\\n    const font = await WidgetAnnotation._getFontData(\\n      evaluator,\\n      task,\\n      this.data.defaultAppearanceData,\\n      this._fieldResources.mergedResources\\n    );\\n\\n    let defaultAppearance;\\n    let { fontSize } = this.data.defaultAppearanceData;\\n    if (!fontSize) {\\n      const lineHeight = (totalHeight - defaultPadding) \u002F lineCount;\\n      let lineWidth = -1;\\n      let value;\\n      for (const { displayValue } of this.data.options) {\\n        const width = this._getTextWidth(displayValue, font);\\n        if (width > lineWidth) {\\n          lineWidth = width;\\n          value = displayValue;\\n        }\\n      }\\n\\n      [defaultAppearance, fontSize] = this._computeFontSize(\\n        lineHeight,\\n        totalWidth - 2 * defaultHPadding,\\n        value,\\n        font,\\n        -1\\n      );\\n    } else {\\n      defaultAppearance = this._defaultAppearance;\\n    }\\n\\n    const lineHeight = fontSize * LINE_FACTOR;\\n    const vPadding = (lineHeight - fontSize) \u002F 2;\\n    const numberOfVisibleLines = Math.floor(totalHeight \u002F lineHeight);\\n\\n    let firstIndex = 0;\\n    if (valueIndices.length > 0) {\\n      const minIndex = Math.min(...valueIndices);\\n      const maxIndex = Math.max(...valueIndices);\\n\\n      firstIndex = Math.max(0, maxIndex - numberOfVisibleLines + 1);\\n      if (firstIndex > minIndex) {\\n        firstIndex = minIndex;\\n      }\\n    }\\n    const end = Math.min(firstIndex + numberOfVisibleLines + 1, lineCount);\\n\\n    const buf = [\\\"\u002FTx BMC q\\\", `1 1 ${totalWidth} ${totalHeight} re W n`];\\n\\n    if (valueIndices.length) {\\n      \u002F\u002F This value has been copied\u002Fpasted from annotation-choice-widget.pdf.\\n      \u002F\u002F It corresponds to rgb(153, 193, 218).\\n      buf.push(\\\"0.600006 0.756866 0.854904 rg\\\");\\n\\n      \u002F\u002F Highlight the lines in filling a blue rectangle at the selected\\n      \u002F\u002F positions.\\n      for (const index of valueIndices) {\\n        if (firstIndex \u003C= index && index \u003C end) {\\n          buf.push(\\n            `1 ${\\n              totalHeight - (index - firstIndex + 1) * lineHeight\\n            } ${totalWidth} ${lineHeight} re f`\\n          );\\n        }\\n      }\\n    }\\n    buf.push(\\\"BT\\\", defaultAppearance, `1 0 0 1 0 ${totalHeight} Tm`);\\n\\n    const prevInfo = { shift: 0 };\\n    for (let i = firstIndex; i \u003C end; i++) {\\n      const { displayValue } = this.data.options[i];\\n      const vpadding = i === firstIndex ? vPadding : 0;\\n      buf.push(\\n        this._renderText(\\n          displayValue,\\n          font,\\n          fontSize,\\n          totalWidth,\\n          0,\\n          prevInfo,\\n          defaultHPadding,\\n          -lineHeight + vpadding\\n        )\\n      );\\n    }\\n\\n    buf.push(\\\"ET Q EMC\\\");\\n\\n    return buf.join(\\\"\\\\n\\\");\\n  }\\n}\\n\\nclass SignatureWidgetAnnotation extends WidgetAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    \u002F\u002F Unset the fieldValue since it's (most likely) a `Dict` which is\\n    \u002F\u002F non-serializable and will thus cause errors when sending annotations\\n    \u002F\u002F to the main-thread (issue 10347).\\n    this.data.fieldValue = null;\\n    this.data.hasOwnCanvas = this.data.noRotate;\\n    this.data.noHTML = !this.data.hasOwnCanvas;\\n  }\\n\\n  getFieldObject() {\\n    return {\\n      id: this.data.id,\\n      value: null,\\n      page: this.data.pageIndex,\\n      type: \\\"signature\\\",\\n    };\\n  }\\n}\\n\\nclass TextAnnotation extends MarkupAnnotation {\\n  constructor(params) {\\n    const DEFAULT_ICON_SIZE = 22; \u002F\u002F px\\n\\n    super(params);\\n\\n    \u002F\u002F No rotation for Text (see 12.5.6.4).\\n    this.data.noRotate = true;\\n    this.data.hasOwnCanvas = this.data.noRotate;\\n    this.data.noHTML = false;\\n\\n    const { dict } = params;\\n    this.data.annotationType = AnnotationType.TEXT;\\n\\n    if (this.data.hasAppearance) {\\n      this.data.name = \\\"NoIcon\\\";\\n    } else {\\n      this.data.rect[1] = this.data.rect[3] - DEFAULT_ICON_SIZE;\\n      this.data.rect[2] = this.data.rect[0] + DEFAULT_ICON_SIZE;\\n      this.data.name = dict.has(\\\"Name\\\") ? dict.get(\\\"Name\\\").name : \\\"Note\\\";\\n    }\\n\\n    if (dict.has(\\\"State\\\")) {\\n      this.data.state = dict.get(\\\"State\\\") || null;\\n      this.data.stateModel = dict.get(\\\"StateModel\\\") || null;\\n    } else {\\n      this.data.state = null;\\n      this.data.stateModel = null;\\n    }\\n  }\\n}\\n\\nclass LinkAnnotation extends Annotation {\\n  constructor(params) {\\n    super(params);\\n\\n    const { dict, annotationGlobals } = params;\\n    this.data.annotationType = AnnotationType.LINK;\\n\\n    \u002F\u002F A link is never rendered on the main canvas so we must render its HTML\\n    \u002F\u002F version.\\n    this.data.noHTML = false;\\n\\n    const quadPoints = getQuadPoints(dict, this.rectangle);\\n    if (quadPoints) {\\n      this.data.quadPoints = quadPoints;\\n    }\\n\\n    \u002F\u002F The color entry for a link annotation is the color of the border.\\n    this.data.borderColor ||= this.data.color;\\n\\n    Catalog.parseDestDictionary({\\n      destDict: dict,\\n      resultObj: this.data,\\n      docBaseUrl: annotationGlobals.baseUrl,\\n      docAttachments: annotationGlobals.attachments,\\n    });\\n  }\\n}\\n\\nclass PopupAnnotation extends Annotation {\\n  constructor(params) {\\n    super(params);\\n\\n    const { dict } = params;\\n    this.data.annotationType = AnnotationType.POPUP;\\n\\n    \u002F\u002F A pop-up is never rendered on the main canvas so we must render its HTML\\n    \u002F\u002F version.\\n    this.data.noHTML = false;\\n\\n    if (this.width === 0 || this.height === 0) {\\n      this.data.rect = null;\\n    }\\n\\n    let parentItem = dict.get(\\\"Parent\\\");\\n    if (!parentItem) {\\n      warn(\\\"Popup annotation has a missing or invalid parent annotation.\\\");\\n      return;\\n    }\\n    this.data.parentRect = lookupNormalRect(parentItem.getArray(\\\"Rect\\\"), null);\\n\\n    const rt = parentItem.get(\\\"RT\\\");\\n    if (isName(rt, AnnotationReplyType.GROUP)) {\\n      \u002F\u002F Subordinate annotations in a group should inherit\\n      \u002F\u002F the group attributes from the primary annotation.\\n      parentItem = parentItem.get(\\\"IRT\\\");\\n    }\\n\\n    if (!parentItem.has(\\\"M\\\")) {\\n      this.data.modificationDate = null;\\n    } else {\\n      this.setModificationDate(parentItem.get(\\\"M\\\"));\\n      this.data.modificationDate = this.modificationDate;\\n    }\\n\\n    if (!parentItem.has(\\\"C\\\")) {\\n      \u002F\u002F Fall back to the default background color.\\n      this.data.color = null;\\n    } else {\\n      this.setColor(parentItem.getArray(\\\"C\\\"));\\n      this.data.color = this.color;\\n    }\\n\\n    \u002F\u002F If the Popup annotation is not viewable, but the parent annotation is,\\n    \u002F\u002F that is most likely a bug. Fallback to inherit the flags from the parent\\n    \u002F\u002F annotation (this is consistent with the behaviour in Adobe Reader).\\n    if (!this.viewable) {\\n      const parentFlags = parentItem.get(\\\"F\\\");\\n      if (this._isViewable(parentFlags)) {\\n        this.setFlags(parentFlags);\\n      }\\n    }\\n\\n    this.setTitle(parentItem.get(\\\"T\\\"));\\n    this.data.titleObj = this._title;\\n\\n    this.setContents(parentItem.get(\\\"Contents\\\"));\\n    this.data.contentsObj = this._contents;\\n\\n    if (parentItem.has(\\\"RC\\\")) {\\n      this.data.richText = XFAFactory.getRichTextAsHtml(parentItem.get(\\\"RC\\\"));\\n    }\\n\\n    this.data.open = !!dict.get(\\\"Open\\\");\\n  }\\n}\\n\\nclass FreeTextAnnotation extends MarkupAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    \u002F\u002F It uses its own canvas in order to be hidden if edited.\\n    \u002F\u002F But if it has the noHTML flag, it means that we don't want to be able\\n    \u002F\u002F to modify it so we can just draw it on the main canvas.\\n    this.data.hasOwnCanvas = this.data.noRotate;\\n    this.data.isEditable = !this.data.noHTML;\\n    \u002F\u002F We want to be able to add mouse listeners to the annotation.\\n    this.data.noHTML = false;\\n\\n    const { annotationGlobals, evaluatorOptions, xref } = params;\\n    this.data.annotationType = AnnotationType.FREETEXT;\\n    this.setDefaultAppearance(params);\\n    this._hasAppearance = !!this.appearance;\\n\\n    if (this._hasAppearance) {\\n      const { fontColor, fontSize } = parseAppearanceStream(\\n        this.appearance,\\n        evaluatorOptions,\\n        xref,\\n        annotationGlobals.globalColorSpaceCache\\n      );\\n      this.data.defaultAppearanceData.fontColor = fontColor;\\n      this.data.defaultAppearanceData.fontSize = fontSize || 10;\\n    } else {\\n      this.data.defaultAppearanceData.fontSize ||= 10;\\n      const { fontColor, fontSize } = this.data.defaultAppearanceData;\\n      if (this._contents.str) {\\n        this.data.textContent = this._contents.str\\n          .split(\u002F\\\\r\\\\n?|\\\\n\u002F)\\n          .map(line => line.trimEnd());\\n        const { coords, bbox, matrix } = FakeUnicodeFont.getFirstPositionInfo(\\n          this.rectangle,\\n          this.rotation,\\n          fontSize\\n        );\\n        this.data.textPosition = this._transformPoint(coords, bbox, matrix);\\n      }\\n      if (this._isOffscreenCanvasSupported) {\\n        const strokeAlpha = params.dict.get(\\\"CA\\\");\\n        const fakeUnicodeFont = new FakeUnicodeFont(xref, \\\"sans-serif\\\");\\n        this.appearance = fakeUnicodeFont.createAppearance(\\n          this._contents.str,\\n          this.rectangle,\\n          this.rotation,\\n          fontSize,\\n          fontColor,\\n          strokeAlpha\\n        );\\n        this._streams.push(this.appearance);\\n      } else {\\n        warn(\\n          \\\"FreeTextAnnotation: OffscreenCanvas is not supported, annotation may not render correctly.\\\"\\n        );\\n      }\\n    }\\n  }\\n\\n  get hasTextContent() {\\n    return this._hasAppearance;\\n  }\\n\\n  static createNewDict(annotation, xref, { apRef, ap }) {\\n    const { color, fontSize, oldAnnotation, rect, rotation, user, value } =\\n      annotation;\\n    const freetext = oldAnnotation || new Dict(xref);\\n    freetext.set(\\\"Type\\\", Name.get(\\\"Annot\\\"));\\n    freetext.set(\\\"Subtype\\\", Name.get(\\\"FreeText\\\"));\\n    if (oldAnnotation) {\\n      freetext.set(\\\"M\\\", `D:${getModificationDate()}`);\\n      \u002F\u002F TODO: We should try to generate a new RC from the content we've.\\n      \u002F\u002F For now we can just remove it to avoid any issues.\\n      freetext.delete(\\\"RC\\\");\\n    } else {\\n      freetext.set(\\\"CreationDate\\\", `D:${getModificationDate()}`);\\n    }\\n    freetext.set(\\\"Rect\\\", rect);\\n    const da = `\u002FHelv ${fontSize} Tf ${getPdfColor(color, \u002F* isFill *\u002F true)}`;\\n    freetext.set(\\\"DA\\\", da);\\n    freetext.set(\\\"Contents\\\", stringToAsciiOrUTF16BE(value));\\n    freetext.set(\\\"F\\\", 4);\\n    freetext.set(\\\"Border\\\", [0, 0, 0]);\\n    freetext.set(\\\"Rotate\\\", rotation);\\n\\n    if (user) {\\n      freetext.set(\\\"T\\\", stringToAsciiOrUTF16BE(user));\\n    }\\n\\n    if (apRef || ap) {\\n      const n = new Dict(xref);\\n      freetext.set(\\\"AP\\\", n);\\n\\n      if (apRef) {\\n        n.set(\\\"N\\\", apRef);\\n      } else {\\n        n.set(\\\"N\\\", ap);\\n      }\\n    }\\n\\n    return freetext;\\n  }\\n\\n  static async createNewAppearanceStream(annotation, xref, params) {\\n    const { baseFontRef, evaluator, task } = params;\\n    const { color, fontSize, rect, rotation, value } = annotation;\\n\\n    const resources = new Dict(xref);\\n    const font = new Dict(xref);\\n\\n    if (baseFontRef) {\\n      font.set(\\\"Helv\\\", baseFontRef);\\n    } else {\\n      const baseFont = new Dict(xref);\\n      baseFont.set(\\\"BaseFont\\\", Name.get(\\\"Helvetica\\\"));\\n      baseFont.set(\\\"Type\\\", Name.get(\\\"Font\\\"));\\n      baseFont.set(\\\"Subtype\\\", Name.get(\\\"Type1\\\"));\\n      baseFont.set(\\\"Encoding\\\", Name.get(\\\"WinAnsiEncoding\\\"));\\n      font.set(\\\"Helv\\\", baseFont);\\n    }\\n    resources.set(\\\"Font\\\", font);\\n\\n    const helv = await WidgetAnnotation._getFontData(\\n      evaluator,\\n      task,\\n      {\\n        fontName: \\\"Helv\\\",\\n        fontSize,\\n      },\\n      resources\\n    );\\n\\n    const [x1, y1, x2, y2] = rect;\\n    let w = x2 - x1;\\n    let h = y2 - y1;\\n\\n    if (rotation % 180 !== 0) {\\n      [w, h] = [h, w];\\n    }\\n\\n    const lines = value.split(\\\"\\\\n\\\");\\n    const scale = fontSize \u002F 1000;\\n    let totalWidth = -Infinity;\\n    const encodedLines = [];\\n    for (let line of lines) {\\n      const encoded = helv.encodeString(line);\\n      if (encoded.length > 1) {\\n        \u002F\u002F The font doesn't contain all the chars.\\n        return null;\\n      }\\n      line = encoded.join(\\\"\\\");\\n      encodedLines.push(line);\\n      let lineWidth = 0;\\n      const glyphs = helv.charsToGlyphs(line);\\n      for (const glyph of glyphs) {\\n        lineWidth += glyph.width * scale;\\n      }\\n      totalWidth = Math.max(totalWidth, lineWidth);\\n    }\\n\\n    let hscale = 1;\\n    if (totalWidth > w) {\\n      hscale = w \u002F totalWidth;\\n    }\\n    let vscale = 1;\\n    const lineHeight = LINE_FACTOR * fontSize;\\n    const lineAscent = (LINE_FACTOR - LINE_DESCENT_FACTOR) * fontSize;\\n    const totalHeight = lineHeight * lines.length;\\n    if (totalHeight > h) {\\n      vscale = h \u002F totalHeight;\\n    }\\n    const fscale = Math.min(hscale, vscale);\\n    const newFontSize = fontSize * fscale;\\n    let firstPoint, clipBox, matrix;\\n    switch (rotation) {\\n      case 0:\\n        matrix = [1, 0, 0, 1];\\n        clipBox = [rect[0], rect[1], w, h];\\n        firstPoint = [rect[0], rect[3] - lineAscent];\\n        break;\\n      case 90:\\n        matrix = [0, 1, -1, 0];\\n        clipBox = [rect[1], -rect[2], w, h];\\n        firstPoint = [rect[1], -rect[0] - lineAscent];\\n        break;\\n      case 180:\\n        matrix = [-1, 0, 0, -1];\\n        clipBox = [-rect[2], -rect[3], w, h];\\n        firstPoint = [-rect[2], -rect[1] - lineAscent];\\n        break;\\n      case 270:\\n        matrix = [0, -1, 1, 0];\\n        clipBox = [-rect[3], rect[0], w, h];\\n        firstPoint = [-rect[3], rect[2] - lineAscent];\\n        break;\\n    }\\n\\n    const buffer = [\\n      \\\"q\\\",\\n      `${matrix.join(\\\" \\\")} 0 0 cm`,\\n      `${clipBox.join(\\\" \\\")} re W n`,\\n      `BT`,\\n      `${getPdfColor(color, \u002F* isFill *\u002F true)}`,\\n      `0 Tc \u002FHelv ${numberToString(newFontSize)} Tf`,\\n    ];\\n\\n    buffer.push(\\n      `${firstPoint.join(\\\" \\\")} Td (${escapeString(encodedLines[0])}) Tj`\\n    );\\n    const vShift = numberToString(lineHeight);\\n    for (let i = 1, ii = encodedLines.length; i \u003C ii; i++) {\\n      const line = encodedLines[i];\\n      buffer.push(`0 -${vShift} Td (${escapeString(line)}) Tj`);\\n    }\\n    buffer.push(\\\"ET\\\", \\\"Q\\\");\\n    const appearance = buffer.join(\\\"\\\\n\\\");\\n\\n    const appearanceStreamDict = new Dict(xref);\\n    appearanceStreamDict.set(\\\"FormType\\\", 1);\\n    appearanceStreamDict.set(\\\"Subtype\\\", Name.get(\\\"Form\\\"));\\n    appearanceStreamDict.set(\\\"Type\\\", Name.get(\\\"XObject\\\"));\\n    appearanceStreamDict.set(\\\"BBox\\\", rect);\\n    appearanceStreamDict.set(\\\"Resources\\\", resources);\\n    appearanceStreamDict.set(\\\"Matrix\\\", [1, 0, 0, 1, -rect[0], -rect[1]]);\\n\\n    const ap = new StringStream(appearance);\\n    ap.dict = appearanceStreamDict;\\n\\n    return ap;\\n  }\\n}\\n\\nclass LineAnnotation extends MarkupAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    const { dict, xref } = params;\\n    this.data.annotationType = AnnotationType.LINE;\\n    this.data.hasOwnCanvas = this.data.noRotate;\\n    this.data.noHTML = false;\\n\\n    const lineCoordinates = lookupRect(dict.getArray(\\\"L\\\"), [0, 0, 0, 0]);\\n    this.data.lineCoordinates = Util.normalizeRect(lineCoordinates);\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      this.setLineEndings(dict.getArray(\\\"LE\\\"));\\n      this.data.lineEndings = this.lineEndings;\\n    }\\n\\n    if (!this.appearance) {\\n      \u002F\u002F The default stroke color is black.\\n      const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\\n      const strokeAlpha = dict.get(\\\"CA\\\");\\n\\n      const interiorColor = getRgbColor(dict.getArray(\\\"IC\\\"), null);\\n      \u002F\u002F The default fill color is transparent. Setting the fill colour is\\n      \u002F\u002F necessary if\u002Fwhen we want to add support for non-default line endings.\\n      const fillColor = interiorColor ? getPdfColorArray(interiorColor) : null;\\n      const fillAlpha = fillColor ? strokeAlpha : null;\\n\\n      const borderWidth = this.borderStyle.width || 1,\\n        borderAdjust = 2 * borderWidth;\\n\\n      \u002F\u002F If the \u002FRect-entry is empty\u002Fwrong, create a fallback rectangle so that\\n      \u002F\u002F we get similar rendering\u002Fhighlighting behaviour as in Adobe Reader.\\n      const bbox = [\\n        this.data.lineCoordinates[0] - borderAdjust,\\n        this.data.lineCoordinates[1] - borderAdjust,\\n        this.data.lineCoordinates[2] + borderAdjust,\\n        this.data.lineCoordinates[3] + borderAdjust,\\n      ];\\n      if (!Util.intersect(this.rectangle, bbox)) {\\n        this.rectangle = bbox;\\n      }\\n\\n      this._setDefaultAppearance({\\n        xref,\\n        extra: `${borderWidth} w`,\\n        strokeColor,\\n        fillColor,\\n        strokeAlpha,\\n        fillAlpha,\\n        pointsCallback: (buffer, points) => {\\n          buffer.push(\\n            `${lineCoordinates[0]} ${lineCoordinates[1]} m`,\\n            `${lineCoordinates[2]} ${lineCoordinates[3]} l`,\\n            \\\"S\\\"\\n          );\\n          return [\\n            points[0] - borderWidth,\\n            points[7] - borderWidth,\\n            points[2] + borderWidth,\\n            points[3] + borderWidth,\\n          ];\\n        },\\n      });\\n    }\\n  }\\n}\\n\\nclass SquareAnnotation extends MarkupAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    const { dict, xref } = params;\\n    this.data.annotationType = AnnotationType.SQUARE;\\n    this.data.hasOwnCanvas = this.data.noRotate;\\n    this.data.noHTML = false;\\n\\n    if (!this.appearance) {\\n      \u002F\u002F The default stroke color is black.\\n      const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\\n      const strokeAlpha = dict.get(\\\"CA\\\");\\n\\n      const interiorColor = getRgbColor(dict.getArray(\\\"IC\\\"), null);\\n      \u002F\u002F The default fill color is transparent.\\n      const fillColor = interiorColor ? getPdfColorArray(interiorColor) : null;\\n      const fillAlpha = fillColor ? strokeAlpha : null;\\n\\n      if (this.borderStyle.width === 0 && !fillColor) {\\n        \u002F\u002F Prevent rendering a \\\"hairline\\\" border (fixes issue14164.pdf).\\n        return;\\n      }\\n\\n      this._setDefaultAppearance({\\n        xref,\\n        extra: `${this.borderStyle.width} w`,\\n        strokeColor,\\n        fillColor,\\n        strokeAlpha,\\n        fillAlpha,\\n        pointsCallback: (buffer, points) => {\\n          const x = points[4] + this.borderStyle.width \u002F 2;\\n          const y = points[5] + this.borderStyle.width \u002F 2;\\n          const width = points[6] - points[4] - this.borderStyle.width;\\n          const height = points[3] - points[7] - this.borderStyle.width;\\n          buffer.push(`${x} ${y} ${width} ${height} re`);\\n          if (fillColor) {\\n            buffer.push(\\\"B\\\");\\n          } else {\\n            buffer.push(\\\"S\\\");\\n          }\\n          return [points[0], points[7], points[2], points[3]];\\n        },\\n      });\\n    }\\n  }\\n}\\n\\nclass CircleAnnotation extends MarkupAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    const { dict, xref } = params;\\n    this.data.annotationType = AnnotationType.CIRCLE;\\n\\n    if (!this.appearance) {\\n      \u002F\u002F The default stroke color is black.\\n      const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\\n      const strokeAlpha = dict.get(\\\"CA\\\");\\n\\n      const interiorColor = getRgbColor(dict.getArray(\\\"IC\\\"), null);\\n      \u002F\u002F The default fill color is transparent.\\n      const fillColor = interiorColor ? getPdfColorArray(interiorColor) : null;\\n      const fillAlpha = fillColor ? strokeAlpha : null;\\n\\n      if (this.borderStyle.width === 0 && !fillColor) {\\n        \u002F\u002F Prevent rendering a \\\"hairline\\\" border (fixes issue14164.pdf).\\n        return;\\n      }\\n\\n      \u002F\u002F Circles are approximated by Bézier curves with four segments since\\n      \u002F\u002F there is no circle primitive in the PDF specification. For the control\\n      \u002F\u002F points distance, see https:\u002F\u002Fstackoverflow.com\u002Fa\u002F27863181.\\n      const controlPointsDistance = (4 \u002F 3) * Math.tan(Math.PI \u002F (2 * 4));\\n\\n      this._setDefaultAppearance({\\n        xref,\\n        extra: `${this.borderStyle.width} w`,\\n        strokeColor,\\n        fillColor,\\n        strokeAlpha,\\n        fillAlpha,\\n        pointsCallback: (buffer, points) => {\\n          const x0 = points[0] + this.borderStyle.width \u002F 2;\\n          const y0 = points[1] - this.borderStyle.width \u002F 2;\\n          const x1 = points[6] - this.borderStyle.width \u002F 2;\\n          const y1 = points[7] + this.borderStyle.width \u002F 2;\\n          const xMid = x0 + (x1 - x0) \u002F 2;\\n          const yMid = y0 + (y1 - y0) \u002F 2;\\n          const xOffset = ((x1 - x0) \u002F 2) * controlPointsDistance;\\n          const yOffset = ((y1 - y0) \u002F 2) * controlPointsDistance;\\n\\n          buffer.push(\\n            `${xMid} ${y1} m`,\\n            `${xMid + xOffset} ${y1} ${x1} ${yMid + yOffset} ${x1} ${yMid} c`,\\n            `${x1} ${yMid - yOffset} ${xMid + xOffset} ${y0} ${xMid} ${y0} c`,\\n            `${xMid - xOffset} ${y0} ${x0} ${yMid - yOffset} ${x0} ${yMid} c`,\\n            `${x0} ${yMid + yOffset} ${xMid - xOffset} ${y1} ${xMid} ${y1} c`,\\n            \\\"h\\\"\\n          );\\n          if (fillColor) {\\n            buffer.push(\\\"B\\\");\\n          } else {\\n            buffer.push(\\\"S\\\");\\n          }\\n          return [points[0], points[7], points[2], points[3]];\\n        },\\n      });\\n    }\\n  }\\n}\\n\\nclass PolylineAnnotation extends MarkupAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    const { dict, xref } = params;\\n    this.data.annotationType = AnnotationType.POLYLINE;\\n    this.data.hasOwnCanvas = this.data.noRotate;\\n    this.data.noHTML = false;\\n    this.data.vertices = null;\\n\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) &&\\n      !(this instanceof PolygonAnnotation)\\n    ) {\\n      \u002F\u002F Only meaningful for polyline annotations.\\n      this.setLineEndings(dict.getArray(\\\"LE\\\"));\\n      this.data.lineEndings = this.lineEndings;\\n    }\\n\\n    \u002F\u002F The vertices array is an array of numbers representing the alternating\\n    \u002F\u002F horizontal and vertical coordinates, respectively, of each vertex.\\n    \u002F\u002F Convert this to an array of objects with x and y coordinates.\\n    const rawVertices = dict.getArray(\\\"Vertices\\\");\\n    if (!isNumberArray(rawVertices, null)) {\\n      return;\\n    }\\n    const vertices = (this.data.vertices = Float32Array.from(rawVertices));\\n\\n    if (!this.appearance) {\\n      \u002F\u002F The default stroke color is black.\\n      const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\\n      const strokeAlpha = dict.get(\\\"CA\\\");\\n\\n      const borderWidth = this.borderStyle.width || 1,\\n        borderAdjust = 2 * borderWidth;\\n\\n      \u002F\u002F If the \u002FRect-entry is empty\u002Fwrong, create a fallback rectangle so that\\n      \u002F\u002F we get similar rendering\u002Fhighlighting behaviour as in Adobe Reader.\\n      const bbox = [Infinity, Infinity, -Infinity, -Infinity];\\n      for (let i = 0, ii = vertices.length; i \u003C ii; i += 2) {\\n        Util.rectBoundingBox(\\n          vertices[i] - borderAdjust,\\n          vertices[i + 1] - borderAdjust,\\n          vertices[i] + borderAdjust,\\n          vertices[i + 1] + borderAdjust,\\n          bbox\\n        );\\n      }\\n      if (!Util.intersect(this.rectangle, bbox)) {\\n        this.rectangle = bbox;\\n      }\\n\\n      this._setDefaultAppearance({\\n        xref,\\n        extra: `${borderWidth} w`,\\n        strokeColor,\\n        strokeAlpha,\\n        pointsCallback: (buffer, points) => {\\n          for (let i = 0, ii = vertices.length; i \u003C ii; i += 2) {\\n            buffer.push(\\n              `${vertices[i]} ${vertices[i + 1]} ${i === 0 ? \\\"m\\\" : \\\"l\\\"}`\\n            );\\n          }\\n          buffer.push(\\\"S\\\");\\n          return [points[0], points[7], points[2], points[3]];\\n        },\\n      });\\n    }\\n  }\\n}\\n\\nclass PolygonAnnotation extends PolylineAnnotation {\\n  constructor(params) {\\n    \u002F\u002F Polygons are specific forms of polylines, so reuse their logic.\\n    super(params);\\n\\n    this.data.annotationType = AnnotationType.POLYGON;\\n  }\\n}\\n\\nclass CaretAnnotation extends MarkupAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    this.data.annotationType = AnnotationType.CARET;\\n  }\\n}\\n\\nclass InkAnnotation extends MarkupAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    this.data.hasOwnCanvas = this.data.noRotate;\\n    this.data.noHTML = false;\\n\\n    const { dict, xref } = params;\\n    this.data.annotationType = AnnotationType.INK;\\n    this.data.inkLists = [];\\n    this.data.isEditable = !this.data.noHTML;\\n    \u002F\u002F We want to be able to add mouse listeners to the annotation.\\n    this.data.noHTML = false;\\n    this.data.opacity = dict.get(\\\"CA\\\") || 1;\\n\\n    const rawInkLists = dict.getArray(\\\"InkList\\\");\\n    if (!Array.isArray(rawInkLists)) {\\n      return;\\n    }\\n    for (let i = 0, ii = rawInkLists.length; i \u003C ii; ++i) {\\n      \u002F\u002F The raw ink lists array contains arrays of numbers representing\\n      \u002F\u002F the alternating horizontal and vertical coordinates, respectively,\\n      \u002F\u002F of each vertex. Convert this to an array of objects with x and y\\n      \u002F\u002F coordinates.\\n      if (!Array.isArray(rawInkLists[i])) {\\n        continue;\\n      }\\n      const inkList = new Float32Array(rawInkLists[i].length);\\n      this.data.inkLists.push(inkList);\\n      for (let j = 0, jj = rawInkLists[i].length; j \u003C jj; j += 2) {\\n        const x = xref.fetchIfRef(rawInkLists[i][j]),\\n          y = xref.fetchIfRef(rawInkLists[i][j + 1]);\\n        if (typeof x === \\\"number\\\" && typeof y === \\\"number\\\") {\\n          inkList[j] = x;\\n          inkList[j + 1] = y;\\n        }\\n      }\\n    }\\n\\n    if (!this.appearance) {\\n      \u002F\u002F The default stroke color is black.\\n      const strokeColor = this.color ? getPdfColorArray(this.color) : [0, 0, 0];\\n      const strokeAlpha = dict.get(\\\"CA\\\");\\n\\n      const borderWidth = this.borderStyle.width || 1,\\n        borderAdjust = 2 * borderWidth;\\n\\n      \u002F\u002F If the \u002FRect-entry is empty\u002Fwrong, create a fallback rectangle so that\\n      \u002F\u002F we get similar rendering\u002Fhighlighting behaviour as in Adobe Reader.\\n      const bbox = [Infinity, Infinity, -Infinity, -Infinity];\\n      for (const inkList of this.data.inkLists) {\\n        for (let i = 0, ii = inkList.length; i \u003C ii; i += 2) {\\n          Util.rectBoundingBox(\\n            inkList[i] - borderAdjust,\\n            inkList[i + 1] - borderAdjust,\\n            inkList[i] + borderAdjust,\\n            inkList[i + 1] + borderAdjust,\\n            bbox\\n          );\\n        }\\n      }\\n      if (!Util.intersect(this.rectangle, bbox)) {\\n        this.rectangle = bbox;\\n      }\\n\\n      this._setDefaultAppearance({\\n        xref,\\n        extra: `${borderWidth} w`,\\n        strokeColor,\\n        strokeAlpha,\\n        pointsCallback: (buffer, points) => {\\n          \u002F\u002F According to the specification, see \\\"12.5.6.13 Ink Annotations\\\":\\n          \u002F\u002F   When drawn, the points shall be connected by straight lines or\\n          \u002F\u002F   curves in an implementation-dependent way.\\n          \u002F\u002F In order to simplify things, we utilize straight lines for now.\\n          for (const inkList of this.data.inkLists) {\\n            for (let i = 0, ii = inkList.length; i \u003C ii; i += 2) {\\n              buffer.push(\\n                `${inkList[i]} ${inkList[i + 1]} ${i === 0 ? \\\"m\\\" : \\\"l\\\"}`\\n              );\\n            }\\n            buffer.push(\\\"S\\\");\\n          }\\n          return [points[0], points[7], points[2], points[3]];\\n        },\\n      });\\n    }\\n  }\\n\\n  static createNewDict(annotation, xref, { apRef, ap }) {\\n    const {\\n      oldAnnotation,\\n      color,\\n      opacity,\\n      paths,\\n      outlines,\\n      rect,\\n      rotation,\\n      thickness,\\n      user,\\n    } = annotation;\\n    const ink = oldAnnotation || new Dict(xref);\\n    ink.set(\\\"Type\\\", Name.get(\\\"Annot\\\"));\\n    ink.set(\\\"Subtype\\\", Name.get(\\\"Ink\\\"));\\n    ink.set(oldAnnotation ? \\\"M\\\" : \\\"CreationDate\\\", `D:${getModificationDate()}`);\\n    ink.set(\\\"Rect\\\", rect);\\n    ink.set(\\\"InkList\\\", outlines?.points || paths.points);\\n    ink.set(\\\"F\\\", 4);\\n    ink.set(\\\"Rotate\\\", rotation);\\n\\n    if (user) {\\n      ink.set(\\\"T\\\", stringToAsciiOrUTF16BE(user));\\n    }\\n\\n    if (outlines) {\\n      \u002F\u002F Free highlight.\\n      \u002F\u002F There's nothing about this in the spec, but it's used when highlighting\\n      \u002F\u002F in Edge's viewer. Acrobat takes into account this parameter to indicate\\n      \u002F\u002F that the Ink is used for highlighting.\\n      ink.set(\\\"IT\\\", Name.get(\\\"InkHighlight\\\"));\\n    }\\n\\n    \u002F\u002F Line thickness.\\n    const bs = new Dict(xref);\\n    ink.set(\\\"BS\\\", bs);\\n    bs.set(\\\"W\\\", thickness);\\n\\n    \u002F\u002F Color.\\n    ink.set(\\\"C\\\", getPdfColorArray(color));\\n\\n    \u002F\u002F Opacity.\\n    ink.set(\\\"CA\\\", opacity);\\n\\n    const n = new Dict(xref);\\n    ink.set(\\\"AP\\\", n);\\n\\n    if (apRef) {\\n      n.set(\\\"N\\\", apRef);\\n    } else {\\n      n.set(\\\"N\\\", ap);\\n    }\\n\\n    return ink;\\n  }\\n\\n  static async createNewAppearanceStream(annotation, xref, params) {\\n    if (annotation.outlines) {\\n      return this.createNewAppearanceStreamForHighlight(\\n        annotation,\\n        xref,\\n        params\\n      );\\n    }\\n    const { color, rect, paths, thickness, opacity } = annotation;\\n\\n    const appearanceBuffer = [\\n      `${thickness} w 1 J 1 j`,\\n      `${getPdfColor(color, \u002F* isFill *\u002F false)}`,\\n    ];\\n\\n    if (opacity !== 1) {\\n      appearanceBuffer.push(\\\"\u002FR0 gs\\\");\\n    }\\n\\n    for (const outline of paths.lines) {\\n      appearanceBuffer.push(\\n        `${numberToString(outline[4])} ${numberToString(outline[5])} m`\\n      );\\n      for (let i = 6, ii = outline.length; i \u003C ii; i += 6) {\\n        if (isNaN(outline[i])) {\\n          appearanceBuffer.push(\\n            `${numberToString(outline[i + 4])} ${numberToString(\\n              outline[i + 5]\\n            )} l`\\n          );\\n        } else {\\n          const [c1x, c1y, c2x, c2y, x, y] = outline.slice(i, i + 6);\\n          appearanceBuffer.push(\\n            [c1x, c1y, c2x, c2y, x, y].map(numberToString).join(\\\" \\\") + \\\" c\\\"\\n          );\\n        }\\n      }\\n      if (outline.length === 6) {\\n        appearanceBuffer.push(\\n          `${numberToString(outline[4])} ${numberToString(outline[5])} l`\\n        );\\n      }\\n    }\\n    appearanceBuffer.push(\\\"S\\\");\\n\\n    const appearance = appearanceBuffer.join(\\\"\\\\n\\\");\\n\\n    const appearanceStreamDict = new Dict(xref);\\n    appearanceStreamDict.set(\\\"FormType\\\", 1);\\n    appearanceStreamDict.set(\\\"Subtype\\\", Name.get(\\\"Form\\\"));\\n    appearanceStreamDict.set(\\\"Type\\\", Name.get(\\\"XObject\\\"));\\n    appearanceStreamDict.set(\\\"BBox\\\", rect);\\n    appearanceStreamDict.set(\\\"Length\\\", appearance.length);\\n\\n    if (opacity !== 1) {\\n      const resources = new Dict(xref);\\n      const extGState = new Dict(xref);\\n      const r0 = new Dict(xref);\\n      r0.set(\\\"CA\\\", opacity);\\n      r0.set(\\\"Type\\\", Name.get(\\\"ExtGState\\\"));\\n      extGState.set(\\\"R0\\\", r0);\\n      resources.set(\\\"ExtGState\\\", extGState);\\n      appearanceStreamDict.set(\\\"Resources\\\", resources);\\n    }\\n\\n    const ap = new StringStream(appearance);\\n    ap.dict = appearanceStreamDict;\\n\\n    return ap;\\n  }\\n\\n  static async createNewAppearanceStreamForHighlight(annotation, xref, params) {\\n    const {\\n      color,\\n      rect,\\n      outlines: { outline },\\n      opacity,\\n    } = annotation;\\n    const appearanceBuffer = [\\n      `${getPdfColor(color, \u002F* isFill *\u002F true)}`,\\n      \\\"\u002FR0 gs\\\",\\n    ];\\n\\n    appearanceBuffer.push(\\n      `${numberToString(outline[4])} ${numberToString(outline[5])} m`\\n    );\\n    for (let i = 6, ii = outline.length; i \u003C ii; i += 6) {\\n      if (isNaN(outline[i])) {\\n        appearanceBuffer.push(\\n          `${numberToString(outline[i + 4])} ${numberToString(\\n            outline[i + 5]\\n          )} l`\\n        );\\n      } else {\\n        const [c1x, c1y, c2x, c2y, x, y] = outline.slice(i, i + 6);\\n        appearanceBuffer.push(\\n          [c1x, c1y, c2x, c2y, x, y].map(numberToString).join(\\\" \\\") + \\\" c\\\"\\n        );\\n      }\\n    }\\n    appearanceBuffer.push(\\\"h f\\\");\\n    const appearance = appearanceBuffer.join(\\\"\\\\n\\\");\\n\\n    const appearanceStreamDict = new Dict(xref);\\n    appearanceStreamDict.set(\\\"FormType\\\", 1);\\n    appearanceStreamDict.set(\\\"Subtype\\\", Name.get(\\\"Form\\\"));\\n    appearanceStreamDict.set(\\\"Type\\\", Name.get(\\\"XObject\\\"));\\n    appearanceStreamDict.set(\\\"BBox\\\", rect);\\n    appearanceStreamDict.set(\\\"Length\\\", appearance.length);\\n\\n    const resources = new Dict(xref);\\n    const extGState = new Dict(xref);\\n    resources.set(\\\"ExtGState\\\", extGState);\\n    appearanceStreamDict.set(\\\"Resources\\\", resources);\\n    const r0 = new Dict(xref);\\n    extGState.set(\\\"R0\\\", r0);\\n    r0.set(\\\"BM\\\", Name.get(\\\"Multiply\\\"));\\n\\n    if (opacity !== 1) {\\n      r0.set(\\\"ca\\\", opacity);\\n      r0.set(\\\"Type\\\", Name.get(\\\"ExtGState\\\"));\\n    }\\n\\n    const ap = new StringStream(appearance);\\n    ap.dict = appearanceStreamDict;\\n\\n    return ap;\\n  }\\n}\\n\\nclass HighlightAnnotation extends MarkupAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    const { dict, xref } = params;\\n    this.data.annotationType = AnnotationType.HIGHLIGHT;\\n    this.data.isEditable = !this.data.noHTML;\\n    \u002F\u002F We want to be able to add mouse listeners to the annotation.\\n    this.data.noHTML = false;\\n    this.data.opacity = dict.get(\\\"CA\\\") || 1;\\n\\n    const quadPoints = (this.data.quadPoints = getQuadPoints(dict, null));\\n    if (quadPoints) {\\n      const resources = this.appearance?.dict.get(\\\"Resources\\\");\\n\\n      if (!this.appearance || !resources?.has(\\\"ExtGState\\\")) {\\n        if (this.appearance) {\\n          \u002F\u002F Workaround for cases where there's no \u002FExtGState-entry directly\\n          \u002F\u002F available, e.g. when the appearance stream contains a \u002FXObject of\\n          \u002F\u002F the \u002FForm-type, since that causes the highlighting to completely\\n          \u002F\u002F obscure the PDF content below it (fixes issue13242.pdf).\\n          warn(\\\"HighlightAnnotation - ignoring built-in appearance stream.\\\");\\n        }\\n        \u002F\u002F Default color is yellow in Acrobat Reader\\n        const fillColor = this.color ? getPdfColorArray(this.color) : [1, 1, 0];\\n        const fillAlpha = dict.get(\\\"CA\\\");\\n\\n        this._setDefaultAppearance({\\n          xref,\\n          fillColor,\\n          blendMode: \\\"Multiply\\\",\\n          fillAlpha,\\n          pointsCallback: (buffer, points) => {\\n            buffer.push(\\n              `${points[0]} ${points[1]} m`,\\n              `${points[2]} ${points[3]} l`,\\n              `${points[6]} ${points[7]} l`,\\n              `${points[4]} ${points[5]} l`,\\n              \\\"f\\\"\\n            );\\n            return [points[0], points[7], points[2], points[3]];\\n          },\\n        });\\n      }\\n    } else {\\n      this.data.popupRef = null;\\n    }\\n  }\\n\\n  static createNewDict(annotation, xref, { apRef, ap }) {\\n    const { color, oldAnnotation, opacity, rect, rotation, user, quadPoints } =\\n      annotation;\\n    const highlight = oldAnnotation || new Dict(xref);\\n    highlight.set(\\\"Type\\\", Name.get(\\\"Annot\\\"));\\n    highlight.set(\\\"Subtype\\\", Name.get(\\\"Highlight\\\"));\\n    highlight.set(\\n      oldAnnotation ? \\\"M\\\" : \\\"CreationDate\\\",\\n      `D:${getModificationDate()}`\\n    );\\n    highlight.set(\\\"CreationDate\\\", `D:${getModificationDate()}`);\\n    highlight.set(\\\"Rect\\\", rect);\\n    highlight.set(\\\"F\\\", 4);\\n    highlight.set(\\\"Border\\\", [0, 0, 0]);\\n    highlight.set(\\\"Rotate\\\", rotation);\\n    highlight.set(\\\"QuadPoints\\\", quadPoints);\\n\\n    \u002F\u002F Color.\\n    highlight.set(\\\"C\\\", getPdfColorArray(color));\\n\\n    \u002F\u002F Opacity.\\n    highlight.set(\\\"CA\\\", opacity);\\n\\n    if (user) {\\n      highlight.set(\\\"T\\\", stringToAsciiOrUTF16BE(user));\\n    }\\n\\n    if (apRef || ap) {\\n      const n = new Dict(xref);\\n      highlight.set(\\\"AP\\\", n);\\n      n.set(\\\"N\\\", apRef || ap);\\n    }\\n\\n    return highlight;\\n  }\\n\\n  static async createNewAppearanceStream(annotation, xref, params) {\\n    const { color, rect, outlines, opacity } = annotation;\\n\\n    const appearanceBuffer = [\\n      `${getPdfColor(color, \u002F* isFill *\u002F true)}`,\\n      \\\"\u002FR0 gs\\\",\\n    ];\\n\\n    const buffer = [];\\n    for (const outline of outlines) {\\n      buffer.length = 0;\\n      buffer.push(\\n        `${numberToString(outline[0])} ${numberToString(outline[1])} m`\\n      );\\n      for (let i = 2, ii = outline.length; i \u003C ii; i += 2) {\\n        buffer.push(\\n          `${numberToString(outline[i])} ${numberToString(outline[i + 1])} l`\\n        );\\n      }\\n      buffer.push(\\\"h\\\");\\n      appearanceBuffer.push(buffer.join(\\\"\\\\n\\\"));\\n    }\\n    appearanceBuffer.push(\\\"f*\\\");\\n    const appearance = appearanceBuffer.join(\\\"\\\\n\\\");\\n\\n    const appearanceStreamDict = new Dict(xref);\\n    appearanceStreamDict.set(\\\"FormType\\\", 1);\\n    appearanceStreamDict.set(\\\"Subtype\\\", Name.get(\\\"Form\\\"));\\n    appearanceStreamDict.set(\\\"Type\\\", Name.get(\\\"XObject\\\"));\\n    appearanceStreamDict.set(\\\"BBox\\\", rect);\\n    appearanceStreamDict.set(\\\"Length\\\", appearance.length);\\n\\n    const resources = new Dict(xref);\\n    const extGState = new Dict(xref);\\n    resources.set(\\\"ExtGState\\\", extGState);\\n    appearanceStreamDict.set(\\\"Resources\\\", resources);\\n    const r0 = new Dict(xref);\\n    extGState.set(\\\"R0\\\", r0);\\n    r0.set(\\\"BM\\\", Name.get(\\\"Multiply\\\"));\\n\\n    if (opacity !== 1) {\\n      r0.set(\\\"ca\\\", opacity);\\n      r0.set(\\\"Type\\\", Name.get(\\\"ExtGState\\\"));\\n    }\\n\\n    const ap = new StringStream(appearance);\\n    ap.dict = appearanceStreamDict;\\n\\n    return ap;\\n  }\\n}\\n\\nclass UnderlineAnnotation extends MarkupAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    const { dict, xref } = params;\\n    this.data.annotationType = AnnotationType.UNDERLINE;\\n\\n    const quadPoints = (this.data.quadPoints = getQuadPoints(dict, null));\\n    if (quadPoints) {\\n      if (!this.appearance) {\\n        \u002F\u002F Default color is black\\n        const strokeColor = this.color\\n          ? getPdfColorArray(this.color)\\n          : [0, 0, 0];\\n        const strokeAlpha = dict.get(\\\"CA\\\");\\n\\n        \u002F\u002F The values 0.571 and 1.3 below corresponds to what Acrobat is doing.\\n        this._setDefaultAppearance({\\n          xref,\\n          extra: \\\"[] 0 d 0.571 w\\\",\\n          strokeColor,\\n          strokeAlpha,\\n          pointsCallback: (buffer, points) => {\\n            buffer.push(\\n              `${points[4]} ${points[5] + 1.3} m`,\\n              `${points[6]} ${points[7] + 1.3} l`,\\n              \\\"S\\\"\\n            );\\n            return [points[0], points[7], points[2], points[3]];\\n          },\\n        });\\n      }\\n    } else {\\n      this.data.popupRef = null;\\n    }\\n  }\\n}\\n\\nclass SquigglyAnnotation extends MarkupAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    const { dict, xref } = params;\\n    this.data.annotationType = AnnotationType.SQUIGGLY;\\n\\n    const quadPoints = (this.data.quadPoints = getQuadPoints(dict, null));\\n    if (quadPoints) {\\n      if (!this.appearance) {\\n        \u002F\u002F Default color is black\\n        const strokeColor = this.color\\n          ? getPdfColorArray(this.color)\\n          : [0, 0, 0];\\n        const strokeAlpha = dict.get(\\\"CA\\\");\\n\\n        this._setDefaultAppearance({\\n          xref,\\n          extra: \\\"[] 0 d 1 w\\\",\\n          strokeColor,\\n          strokeAlpha,\\n          pointsCallback: (buffer, points) => {\\n            const dy = (points[1] - points[5]) \u002F 6;\\n            let shift = dy;\\n            let x = points[4];\\n            const y = points[5];\\n            const xEnd = points[6];\\n            buffer.push(`${x} ${y + shift} m`);\\n            do {\\n              x += 2;\\n              shift = shift === 0 ? dy : 0;\\n              buffer.push(`${x} ${y + shift} l`);\\n            } while (x \u003C xEnd);\\n            buffer.push(\\\"S\\\");\\n            return [points[4], y - 2 * dy, xEnd, y + 2 * dy];\\n          },\\n        });\\n      }\\n    } else {\\n      this.data.popupRef = null;\\n    }\\n  }\\n}\\n\\nclass StrikeOutAnnotation extends MarkupAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    const { dict, xref } = params;\\n    this.data.annotationType = AnnotationType.STRIKEOUT;\\n\\n    const quadPoints = (this.data.quadPoints = getQuadPoints(dict, null));\\n    if (quadPoints) {\\n      if (!this.appearance) {\\n        \u002F\u002F Default color is black\\n        const strokeColor = this.color\\n          ? getPdfColorArray(this.color)\\n          : [0, 0, 0];\\n        const strokeAlpha = dict.get(\\\"CA\\\");\\n\\n        this._setDefaultAppearance({\\n          xref,\\n          extra: \\\"[] 0 d 1 w\\\",\\n          strokeColor,\\n          strokeAlpha,\\n          pointsCallback: (buffer, points) => {\\n            buffer.push(\\n              `${(points[0] + points[4]) \u002F 2} ` +\\n                `${(points[1] + points[5]) \u002F 2} m`,\\n              `${(points[2] + points[6]) \u002F 2} ` +\\n                `${(points[3] + points[7]) \u002F 2} l`,\\n              \\\"S\\\"\\n            );\\n            return [points[0], points[7], points[2], points[3]];\\n          },\\n        });\\n      }\\n    } else {\\n      this.data.popupRef = null;\\n    }\\n  }\\n}\\n\\nclass StampAnnotation extends MarkupAnnotation {\\n  #savedHasOwnCanvas = null;\\n\\n  constructor(params) {\\n    super(params);\\n\\n    this.data.annotationType = AnnotationType.STAMP;\\n    this.data.hasOwnCanvas = this.data.noRotate;\\n    this.data.isEditable = !this.data.noHTML;\\n    \u002F\u002F We want to be able to add mouse listeners to the annotation.\\n    this.data.noHTML = false;\\n  }\\n\\n  mustBeViewedWhenEditing(isEditing, modifiedIds = null) {\\n    if (isEditing) {\\n      if (!this.data.isEditable) {\\n        return true;\\n      }\\n      \u002F\u002F When we're editing, we want to ensure that the stamp annotation is\\n      \u002F\u002F drawn on a canvas in order to use it in the annotation editor layer.\\n      this.#savedHasOwnCanvas ??= this.data.hasOwnCanvas;\\n      this.data.hasOwnCanvas = true;\\n      return true;\\n    }\\n    if (this.#savedHasOwnCanvas !== null) {\\n      this.data.hasOwnCanvas = this.#savedHasOwnCanvas;\\n      this.#savedHasOwnCanvas = null;\\n    }\\n\\n    return !modifiedIds?.has(this.data.id);\\n  }\\n\\n  static async createImage(bitmap, xref) {\\n    \u002F\u002F TODO: when printing, we could have a specific internal colorspace\\n    \u002F\u002F (e.g. something like DeviceRGBA) in order avoid any conversion (i.e. no\\n    \u002F\u002F jpeg, no rgba to rgb conversion, etc...)\\n\\n    const { width, height } = bitmap;\\n    const canvas = new OffscreenCanvas(width, height);\\n    const ctx = canvas.getContext(\\\"2d\\\", { alpha: true });\\n\\n    \u002F\u002F Draw the image and get the data in order to extract the transparency.\\n    ctx.drawImage(bitmap, 0, 0);\\n    const data = ctx.getImageData(0, 0, width, height).data;\\n    const buf32 = new Uint32Array(data.buffer);\\n    const hasAlpha = buf32.some(\\n      FeatureTest.isLittleEndian\\n        ? x => x >>> 24 !== 0xff\\n        : x => (x & 0xff) !== 0xff\\n    );\\n\\n    if (hasAlpha) {\\n      \u002F\u002F Redraw the image on a white background in order to remove the thin gray\\n      \u002F\u002F line which can appear when exporting to jpeg.\\n      ctx.fillStyle = \\\"white\\\";\\n      ctx.fillRect(0, 0, width, height);\\n      ctx.drawImage(bitmap, 0, 0);\\n    }\\n\\n    const jpegBufferPromise = canvas\\n      .convertToBlob({ type: \\\"image\u002Fjpeg\\\", quality: 1 })\\n      .then(blob => blob.arrayBuffer());\\n\\n    const xobjectName = Name.get(\\\"XObject\\\");\\n    const imageName = Name.get(\\\"Image\\\");\\n    const image = new Dict(xref);\\n    image.set(\\\"Type\\\", xobjectName);\\n    image.set(\\\"Subtype\\\", imageName);\\n    image.set(\\\"BitsPerComponent\\\", 8);\\n    image.set(\\\"ColorSpace\\\", Name.get(\\\"DeviceRGB\\\"));\\n    image.set(\\\"Filter\\\", Name.get(\\\"DCTDecode\\\"));\\n    image.set(\\\"BBox\\\", [0, 0, width, height]);\\n    image.set(\\\"Width\\\", width);\\n    image.set(\\\"Height\\\", height);\\n\\n    let smaskStream = null;\\n    if (hasAlpha) {\\n      const alphaBuffer = new Uint8Array(buf32.length);\\n      if (FeatureTest.isLittleEndian) {\\n        for (let i = 0, ii = buf32.length; i \u003C ii; i++) {\\n          alphaBuffer[i] = buf32[i] >>> 24;\\n        }\\n      } else {\\n        for (let i = 0, ii = buf32.length; i \u003C ii; i++) {\\n          alphaBuffer[i] = buf32[i] & 0xff;\\n        }\\n      }\\n\\n      const smask = new Dict(xref);\\n      smask.set(\\\"Type\\\", xobjectName);\\n      smask.set(\\\"Subtype\\\", imageName);\\n      smask.set(\\\"BitsPerComponent\\\", 8);\\n      smask.set(\\\"ColorSpace\\\", Name.get(\\\"DeviceGray\\\"));\\n      smask.set(\\\"Width\\\", width);\\n      smask.set(\\\"Height\\\", height);\\n\\n      smaskStream = new Stream(alphaBuffer, 0, 0, smask);\\n    }\\n    const imageStream = new Stream(await jpegBufferPromise, 0, 0, image);\\n\\n    return {\\n      imageStream,\\n      smaskStream,\\n      width,\\n      height,\\n    };\\n  }\\n\\n  static createNewDict(annotation, xref, { apRef, ap }) {\\n    const { oldAnnotation, rect, rotation, user } = annotation;\\n    const stamp = oldAnnotation || new Dict(xref);\\n    stamp.set(\\\"Type\\\", Name.get(\\\"Annot\\\"));\\n    stamp.set(\\\"Subtype\\\", Name.get(\\\"Stamp\\\"));\\n    stamp.set(\\n      oldAnnotation ? \\\"M\\\" : \\\"CreationDate\\\",\\n      `D:${getModificationDate()}`\\n    );\\n    stamp.set(\\\"Rect\\\", rect);\\n    stamp.set(\\\"F\\\", 4);\\n    stamp.set(\\\"Border\\\", [0, 0, 0]);\\n    stamp.set(\\\"Rotate\\\", rotation);\\n\\n    if (user) {\\n      stamp.set(\\\"T\\\", stringToAsciiOrUTF16BE(user));\\n    }\\n\\n    if (apRef || ap) {\\n      const n = new Dict(xref);\\n      stamp.set(\\\"AP\\\", n);\\n\\n      if (apRef) {\\n        n.set(\\\"N\\\", apRef);\\n      } else {\\n        n.set(\\\"N\\\", ap);\\n      }\\n    }\\n\\n    return stamp;\\n  }\\n\\n  static async #createNewAppearanceStreamForDrawing(annotation, xref) {\\n    const { areContours, color, rect, lines, thickness } = annotation;\\n\\n    const appearanceBuffer = [\\n      `${thickness} w 1 J 1 j`,\\n      `${getPdfColor(color, \u002F* isFill *\u002F areContours)}`,\\n    ];\\n\\n    for (const line of lines) {\\n      appearanceBuffer.push(\\n        `${numberToString(line[4])} ${numberToString(line[5])} m`\\n      );\\n      for (let i = 6, ii = line.length; i \u003C ii; i += 6) {\\n        if (isNaN(line[i])) {\\n          appearanceBuffer.push(\\n            `${numberToString(line[i + 4])} ${numberToString(line[i + 5])} l`\\n          );\\n        } else {\\n          const [c1x, c1y, c2x, c2y, x, y] = line.slice(i, i + 6);\\n          appearanceBuffer.push(\\n            [c1x, c1y, c2x, c2y, x, y].map(numberToString).join(\\\" \\\") + \\\" c\\\"\\n          );\\n        }\\n      }\\n      if (line.length === 6) {\\n        appearanceBuffer.push(\\n          `${numberToString(line[4])} ${numberToString(line[5])} l`\\n        );\\n      }\\n    }\\n    appearanceBuffer.push(areContours ? \\\"F\\\" : \\\"S\\\");\\n\\n    const appearance = appearanceBuffer.join(\\\"\\\\n\\\");\\n\\n    const appearanceStreamDict = new Dict(xref);\\n    appearanceStreamDict.set(\\\"FormType\\\", 1);\\n    appearanceStreamDict.set(\\\"Subtype\\\", Name.get(\\\"Form\\\"));\\n    appearanceStreamDict.set(\\\"Type\\\", Name.get(\\\"XObject\\\"));\\n    appearanceStreamDict.set(\\\"BBox\\\", rect);\\n    appearanceStreamDict.set(\\\"Length\\\", appearance.length);\\n\\n    const ap = new StringStream(appearance);\\n    ap.dict = appearanceStreamDict;\\n\\n    return ap;\\n  }\\n\\n  static async createNewAppearanceStream(annotation, xref, params) {\\n    if (annotation.oldAnnotation) {\\n      \u002F\u002F We'll use the AP we already have.\\n      return null;\\n    }\\n    if (annotation.isSignature) {\\n      return this.#createNewAppearanceStreamForDrawing(annotation, xref);\\n    }\\n\\n    const { rotation } = annotation;\\n    const { imageRef, width, height } = params.image;\\n    const resources = new Dict(xref);\\n    const xobject = new Dict(xref);\\n    resources.set(\\\"XObject\\\", xobject);\\n    xobject.set(\\\"Im0\\\", imageRef);\\n    const appearance = `q ${width} 0 0 ${height} 0 0 cm \u002FIm0 Do Q`;\\n\\n    const appearanceStreamDict = new Dict(xref);\\n    appearanceStreamDict.set(\\\"FormType\\\", 1);\\n    appearanceStreamDict.set(\\\"Subtype\\\", Name.get(\\\"Form\\\"));\\n    appearanceStreamDict.set(\\\"Type\\\", Name.get(\\\"XObject\\\"));\\n    appearanceStreamDict.set(\\\"BBox\\\", [0, 0, width, height]);\\n    appearanceStreamDict.set(\\\"Resources\\\", resources);\\n\\n    if (rotation) {\\n      const matrix = getRotationMatrix(rotation, width, height);\\n      appearanceStreamDict.set(\\\"Matrix\\\", matrix);\\n    }\\n\\n    const ap = new StringStream(appearance);\\n    ap.dict = appearanceStreamDict;\\n\\n    return ap;\\n  }\\n}\\n\\nclass FileAttachmentAnnotation extends MarkupAnnotation {\\n  constructor(params) {\\n    super(params);\\n\\n    const { dict, xref } = params;\\n    const file = new FileSpec(dict.get(\\\"FS\\\"), xref);\\n\\n    this.data.annotationType = AnnotationType.FILEATTACHMENT;\\n    this.data.hasOwnCanvas = this.data.noRotate;\\n    this.data.noHTML = false;\\n    this.data.file = file.serializable;\\n\\n    const name = dict.get(\\\"Name\\\");\\n    this.data.name =\\n      name instanceof Name ? stringToPDFString(name.name) : \\\"PushPin\\\";\\n\\n    const fillAlpha = dict.get(\\\"ca\\\");\\n    this.data.fillAlpha =\\n      typeof fillAlpha === \\\"number\\\" && fillAlpha >= 0 && fillAlpha \u003C= 1\\n        ? fillAlpha\\n        : null;\\n  }\\n}\\n\\nexport {\\n  Annotation,\\n  AnnotationBorderStyle,\\n  AnnotationFactory,\\n  getQuadPoints,\\n  MarkupAnnotation,\\n  PopupAnnotation,\\n  WidgetAnnotation,\\n};\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { shadow } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nconst PARAMS = {\\n  get r() {\\n    return shadow(\\n      this,\\n      \\\"r\\\",\\n      new Uint8Array([\\n        7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14,\\n        20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16,\\n        23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10,\\n        15, 21, 6, 10, 15, 21,\\n      ])\\n    );\\n  },\\n\\n  get k() {\\n    return shadow(\\n      this,\\n      \\\"k\\\",\\n      new Int32Array([\\n        -680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426,\\n        -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162,\\n        1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632,\\n        643717713, -373897302, -701558691, 38016083, -660478335, -405537848,\\n        568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784,\\n        1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556,\\n        -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222,\\n        -722521979, 76029189, -640364487, -421815835, 530742520, -995338651,\\n        -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606,\\n        -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649,\\n        -145523070, -1120210379, 718787259, -343485551,\\n      ])\\n    );\\n  },\\n};\\n\\nfunction calculateMD5(data, offset, length) {\\n  let h0 = 1732584193,\\n    h1 = -271733879,\\n    h2 = -1732584194,\\n    h3 = 271733878;\\n  \u002F\u002F pre-processing\\n  const paddedLength = (length + 72) & ~63; \u002F\u002F data + 9 extra bytes\\n  const padded = new Uint8Array(paddedLength);\\n  let i, j;\\n  for (i = 0; i \u003C length; ++i) {\\n    padded[i] = data[offset++];\\n  }\\n  padded[i++] = 0x80;\\n  const n = paddedLength - 8;\\n  if (i \u003C n) {\\n    i = n;\\n  }\\n  padded[i++] = (length \u003C\u003C 3) & 0xff;\\n  padded[i++] = (length >> 5) & 0xff;\\n  padded[i++] = (length >> 13) & 0xff;\\n  padded[i++] = (length >> 21) & 0xff;\\n  padded[i++] = (length >>> 29) & 0xff;\\n  i += 3;\\n  const w = new Int32Array(16);\\n  const { k, r } = PARAMS;\\n  for (i = 0; i \u003C paddedLength; ) {\\n    for (j = 0; j \u003C 16; ++j, i += 4) {\\n      w[j] =\\n        padded[i] |\\n        (padded[i + 1] \u003C\u003C 8) |\\n        (padded[i + 2] \u003C\u003C 16) |\\n        (padded[i + 3] \u003C\u003C 24);\\n    }\\n    let a = h0,\\n      b = h1,\\n      c = h2,\\n      d = h3,\\n      f,\\n      g;\\n    for (j = 0; j \u003C 64; ++j) {\\n      if (j \u003C 16) {\\n        f = (b & c) | (~b & d);\\n        g = j;\\n      } else if (j \u003C 32) {\\n        f = (d & b) | (~d & c);\\n        g = (5 * j + 1) & 15;\\n      } else if (j \u003C 48) {\\n        f = b ^ c ^ d;\\n        g = (3 * j + 5) & 15;\\n      } else {\\n        f = c ^ (b | ~d);\\n        g = (7 * j) & 15;\\n      }\\n      const tmp = d,\\n        rotateArg = (a + f + k[j] + w[g]) | 0,\\n        rotate = r[j];\\n      d = c;\\n      c = b;\\n      b = (b + ((rotateArg \u003C\u003C rotate) | (rotateArg >>> (32 - rotate)))) | 0;\\n      a = tmp;\\n    }\\n    h0 = (h0 + a) | 0;\\n    h1 = (h1 + b) | 0;\\n    h2 = (h2 + c) | 0;\\n    h3 = (h3 + d) | 0;\\n  }\\n  \u002F\u002F prettier-ignore\\n  return new Uint8Array([\\n    h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >>> 24) & 0xFF,\\n    h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >>> 24) & 0xFF,\\n    h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >>> 24) & 0xFF,\\n    h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >>> 24) & 0xFF\\n  ]);\\n}\\n\\nexport { calculateMD5 };\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { stringToUTF8String, warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { parseXFAPath } from \\\".\u002Fcore_utils.js\\\";\\nimport { SimpleXMLParser } from \\\".\u002Fxml_parser.js\\\";\\n\\nfunction decodeString(str) {\\n  try {\\n    return stringToUTF8String(str);\\n  } catch (ex) {\\n    warn(`UTF-8 decoding failed: \\\"${ex}\\\".`);\\n    return str;\\n  }\\n}\\n\\nclass DatasetXMLParser extends SimpleXMLParser {\\n  constructor(options) {\\n    super(options);\\n    this.node = null;\\n  }\\n\\n  onEndElement(name) {\\n    const node = super.onEndElement(name);\\n    if (node && name === \\\"xfa:datasets\\\") {\\n      this.node = node;\\n\\n      \u002F\u002F We don't need anything else, so just kill the parser.\\n      throw new Error(\\\"Aborting DatasetXMLParser.\\\");\\n    }\\n  }\\n}\\n\\nclass DatasetReader {\\n  constructor(data) {\\n    if (data.datasets) {\\n      this.node = new SimpleXMLParser({ hasAttributes: true }).parseFromString(\\n        data.datasets\\n      ).documentElement;\\n    } else {\\n      const parser = new DatasetXMLParser({ hasAttributes: true });\\n      try {\\n        parser.parseFromString(data[\\\"xdp:xdp\\\"]);\\n      } catch {}\\n      this.node = parser.node;\\n    }\\n  }\\n\\n  getValue(path) {\\n    if (!this.node || !path) {\\n      return \\\"\\\";\\n    }\\n    const node = this.node.searchNode(parseXFAPath(path), 0);\\n\\n    if (!node) {\\n      return \\\"\\\";\\n    }\\n\\n    const first = node.firstChild;\\n    if (first?.nodeName === \\\"value\\\") {\\n      return node.children.map(child => decodeString(child.textContent));\\n    }\\n\\n    return decodeString(node.textContent);\\n  }\\n}\\n\\nexport { DatasetReader };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { shadow } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nclass Word64 {\\n  constructor(highInteger, lowInteger) {\\n    this.high = highInteger | 0;\\n    this.low = lowInteger | 0;\\n  }\\n\\n  and(word) {\\n    this.high &= word.high;\\n    this.low &= word.low;\\n  }\\n\\n  xor(word) {\\n    this.high ^= word.high;\\n    this.low ^= word.low;\\n  }\\n\\n  shiftRight(places) {\\n    if (places >= 32) {\\n      this.low = (this.high >>> (places - 32)) | 0;\\n      this.high = 0;\\n    } else {\\n      this.low = (this.low >>> places) | (this.high \u003C\u003C (32 - places));\\n      this.high = (this.high >>> places) | 0;\\n    }\\n  }\\n\\n  rotateRight(places) {\\n    let low, high;\\n    if (places & 32) {\\n      high = this.low;\\n      low = this.high;\\n    } else {\\n      low = this.low;\\n      high = this.high;\\n    }\\n    places &= 31;\\n    this.low = (low >>> places) | (high \u003C\u003C (32 - places));\\n    this.high = (high >>> places) | (low \u003C\u003C (32 - places));\\n  }\\n\\n  not() {\\n    this.high = ~this.high;\\n    this.low = ~this.low;\\n  }\\n\\n  add(word) {\\n    const lowAdd = (this.low >>> 0) + (word.low >>> 0);\\n    let highAdd = (this.high >>> 0) + (word.high >>> 0);\\n    if (lowAdd > 0xffffffff) {\\n      highAdd += 1;\\n    }\\n    this.low = lowAdd | 0;\\n    this.high = highAdd | 0;\\n  }\\n\\n  copyTo(bytes, offset) {\\n    bytes[offset] = (this.high >>> 24) & 0xff;\\n    bytes[offset + 1] = (this.high >> 16) & 0xff;\\n    bytes[offset + 2] = (this.high >> 8) & 0xff;\\n    bytes[offset + 3] = this.high & 0xff;\\n    bytes[offset + 4] = (this.low >>> 24) & 0xff;\\n    bytes[offset + 5] = (this.low >> 16) & 0xff;\\n    bytes[offset + 6] = (this.low >> 8) & 0xff;\\n    bytes[offset + 7] = this.low & 0xff;\\n  }\\n\\n  assign(word) {\\n    this.high = word.high;\\n    this.low = word.low;\\n  }\\n}\\n\\nconst PARAMS = {\\n  get k() {\\n    return shadow(this, \\\"k\\\", [\\n      new Word64(0x428a2f98, 0xd728ae22),\\n      new Word64(0x71374491, 0x23ef65cd),\\n      new Word64(0xb5c0fbcf, 0xec4d3b2f),\\n      new Word64(0xe9b5dba5, 0x8189dbbc),\\n      new Word64(0x3956c25b, 0xf348b538),\\n      new Word64(0x59f111f1, 0xb605d019),\\n      new Word64(0x923f82a4, 0xaf194f9b),\\n      new Word64(0xab1c5ed5, 0xda6d8118),\\n      new Word64(0xd807aa98, 0xa3030242),\\n      new Word64(0x12835b01, 0x45706fbe),\\n      new Word64(0x243185be, 0x4ee4b28c),\\n      new Word64(0x550c7dc3, 0xd5ffb4e2),\\n      new Word64(0x72be5d74, 0xf27b896f),\\n      new Word64(0x80deb1fe, 0x3b1696b1),\\n      new Word64(0x9bdc06a7, 0x25c71235),\\n      new Word64(0xc19bf174, 0xcf692694),\\n      new Word64(0xe49b69c1, 0x9ef14ad2),\\n      new Word64(0xefbe4786, 0x384f25e3),\\n      new Word64(0x0fc19dc6, 0x8b8cd5b5),\\n      new Word64(0x240ca1cc, 0x77ac9c65),\\n      new Word64(0x2de92c6f, 0x592b0275),\\n      new Word64(0x4a7484aa, 0x6ea6e483),\\n      new Word64(0x5cb0a9dc, 0xbd41fbd4),\\n      new Word64(0x76f988da, 0x831153b5),\\n      new Word64(0x983e5152, 0xee66dfab),\\n      new Word64(0xa831c66d, 0x2db43210),\\n      new Word64(0xb00327c8, 0x98fb213f),\\n      new Word64(0xbf597fc7, 0xbeef0ee4),\\n      new Word64(0xc6e00bf3, 0x3da88fc2),\\n      new Word64(0xd5a79147, 0x930aa725),\\n      new Word64(0x06ca6351, 0xe003826f),\\n      new Word64(0x14292967, 0x0a0e6e70),\\n      new Word64(0x27b70a85, 0x46d22ffc),\\n      new Word64(0x2e1b2138, 0x5c26c926),\\n      new Word64(0x4d2c6dfc, 0x5ac42aed),\\n      new Word64(0x53380d13, 0x9d95b3df),\\n      new Word64(0x650a7354, 0x8baf63de),\\n      new Word64(0x766a0abb, 0x3c77b2a8),\\n      new Word64(0x81c2c92e, 0x47edaee6),\\n      new Word64(0x92722c85, 0x1482353b),\\n      new Word64(0xa2bfe8a1, 0x4cf10364),\\n      new Word64(0xa81a664b, 0xbc423001),\\n      new Word64(0xc24b8b70, 0xd0f89791),\\n      new Word64(0xc76c51a3, 0x0654be30),\\n      new Word64(0xd192e819, 0xd6ef5218),\\n      new Word64(0xd6990624, 0x5565a910),\\n      new Word64(0xf40e3585, 0x5771202a),\\n      new Word64(0x106aa070, 0x32bbd1b8),\\n      new Word64(0x19a4c116, 0xb8d2d0c8),\\n      new Word64(0x1e376c08, 0x5141ab53),\\n      new Word64(0x2748774c, 0xdf8eeb99),\\n      new Word64(0x34b0bcb5, 0xe19b48a8),\\n      new Word64(0x391c0cb3, 0xc5c95a63),\\n      new Word64(0x4ed8aa4a, 0xe3418acb),\\n      new Word64(0x5b9cca4f, 0x7763e373),\\n      new Word64(0x682e6ff3, 0xd6b2b8a3),\\n      new Word64(0x748f82ee, 0x5defb2fc),\\n      new Word64(0x78a5636f, 0x43172f60),\\n      new Word64(0x84c87814, 0xa1f0ab72),\\n      new Word64(0x8cc70208, 0x1a6439ec),\\n      new Word64(0x90befffa, 0x23631e28),\\n      new Word64(0xa4506ceb, 0xde82bde9),\\n      new Word64(0xbef9a3f7, 0xb2c67915),\\n      new Word64(0xc67178f2, 0xe372532b),\\n      new Word64(0xca273ece, 0xea26619c),\\n      new Word64(0xd186b8c7, 0x21c0c207),\\n      new Word64(0xeada7dd6, 0xcde0eb1e),\\n      new Word64(0xf57d4f7f, 0xee6ed178),\\n      new Word64(0x06f067aa, 0x72176fba),\\n      new Word64(0x0a637dc5, 0xa2c898a6),\\n      new Word64(0x113f9804, 0xbef90dae),\\n      new Word64(0x1b710b35, 0x131c471b),\\n      new Word64(0x28db77f5, 0x23047d84),\\n      new Word64(0x32caab7b, 0x40c72493),\\n      new Word64(0x3c9ebe0a, 0x15c9bebc),\\n      new Word64(0x431d67c4, 0x9c100d4c),\\n      new Word64(0x4cc5d4be, 0xcb3e42b6),\\n      new Word64(0x597f299c, 0xfc657e2a),\\n      new Word64(0x5fcb6fab, 0x3ad6faec),\\n      new Word64(0x6c44198c, 0x4a475817),\\n    ]);\\n  },\\n};\\n\\nfunction ch(result, x, y, z, tmp) {\\n  result.assign(x);\\n  result.and(y);\\n  tmp.assign(x);\\n  tmp.not();\\n  tmp.and(z);\\n  result.xor(tmp);\\n}\\n\\nfunction maj(result, x, y, z, tmp) {\\n  result.assign(x);\\n  result.and(y);\\n  tmp.assign(x);\\n  tmp.and(z);\\n  result.xor(tmp);\\n  tmp.assign(y);\\n  tmp.and(z);\\n  result.xor(tmp);\\n}\\n\\nfunction sigma(result, x, tmp) {\\n  result.assign(x);\\n  result.rotateRight(28);\\n  tmp.assign(x);\\n  tmp.rotateRight(34);\\n  result.xor(tmp);\\n  tmp.assign(x);\\n  tmp.rotateRight(39);\\n  result.xor(tmp);\\n}\\n\\nfunction sigmaPrime(result, x, tmp) {\\n  result.assign(x);\\n  result.rotateRight(14);\\n  tmp.assign(x);\\n  tmp.rotateRight(18);\\n  result.xor(tmp);\\n  tmp.assign(x);\\n  tmp.rotateRight(41);\\n  result.xor(tmp);\\n}\\n\\nfunction littleSigma(result, x, tmp) {\\n  result.assign(x);\\n  result.rotateRight(1);\\n  tmp.assign(x);\\n  tmp.rotateRight(8);\\n  result.xor(tmp);\\n  tmp.assign(x);\\n  tmp.shiftRight(7);\\n  result.xor(tmp);\\n}\\n\\nfunction littleSigmaPrime(result, x, tmp) {\\n  result.assign(x);\\n  result.rotateRight(19);\\n  tmp.assign(x);\\n  tmp.rotateRight(61);\\n  result.xor(tmp);\\n  tmp.assign(x);\\n  tmp.shiftRight(6);\\n  result.xor(tmp);\\n}\\n\\nfunction calculateSHA512(data, offset, length, mode384 = false) {\\n  \u002F\u002F initial hash values\\n  let h0, h1, h2, h3, h4, h5, h6, h7;\\n  if (!mode384) {\\n    h0 = new Word64(0x6a09e667, 0xf3bcc908);\\n    h1 = new Word64(0xbb67ae85, 0x84caa73b);\\n    h2 = new Word64(0x3c6ef372, 0xfe94f82b);\\n    h3 = new Word64(0xa54ff53a, 0x5f1d36f1);\\n    h4 = new Word64(0x510e527f, 0xade682d1);\\n    h5 = new Word64(0x9b05688c, 0x2b3e6c1f);\\n    h6 = new Word64(0x1f83d9ab, 0xfb41bd6b);\\n    h7 = new Word64(0x5be0cd19, 0x137e2179);\\n  } else {\\n    \u002F\u002F SHA384 is exactly the same\\n    \u002F\u002F except with different starting values and a trimmed result\\n    h0 = new Word64(0xcbbb9d5d, 0xc1059ed8);\\n    h1 = new Word64(0x629a292a, 0x367cd507);\\n    h2 = new Word64(0x9159015a, 0x3070dd17);\\n    h3 = new Word64(0x152fecd8, 0xf70e5939);\\n    h4 = new Word64(0x67332667, 0xffc00b31);\\n    h5 = new Word64(0x8eb44a87, 0x68581511);\\n    h6 = new Word64(0xdb0c2e0d, 0x64f98fa7);\\n    h7 = new Word64(0x47b5481d, 0xbefa4fa4);\\n  }\\n\\n  \u002F\u002F pre-processing\\n  const paddedLength = Math.ceil((length + 17) \u002F 128) * 128;\\n  const padded = new Uint8Array(paddedLength);\\n  let i, j;\\n  for (i = 0; i \u003C length; ++i) {\\n    padded[i] = data[offset++];\\n  }\\n  padded[i++] = 0x80;\\n  const n = paddedLength - 16;\\n  if (i \u003C n) {\\n    i = n;\\n  }\\n  i += 11;\\n  padded[i++] = (length >>> 29) & 0xff;\\n  padded[i++] = (length >> 21) & 0xff;\\n  padded[i++] = (length >> 13) & 0xff;\\n  padded[i++] = (length >> 5) & 0xff;\\n  padded[i++] = (length \u003C\u003C 3) & 0xff;\\n\\n  const w = new Array(80);\\n  for (i = 0; i \u003C 80; i++) {\\n    w[i] = new Word64(0, 0);\\n  }\\n  const { k } = PARAMS;\\n\\n  let a = new Word64(0, 0),\\n    b = new Word64(0, 0),\\n    c = new Word64(0, 0);\\n  let d = new Word64(0, 0),\\n    e = new Word64(0, 0),\\n    f = new Word64(0, 0);\\n  let g = new Word64(0, 0),\\n    h = new Word64(0, 0);\\n  const t1 = new Word64(0, 0),\\n    t2 = new Word64(0, 0);\\n  const tmp1 = new Word64(0, 0),\\n    tmp2 = new Word64(0, 0);\\n  let tmp3;\\n\\n  \u002F\u002F for each 1024 bit block\\n  for (i = 0; i \u003C paddedLength; ) {\\n    for (j = 0; j \u003C 16; ++j) {\\n      w[j].high =\\n        (padded[i] \u003C\u003C 24) |\\n        (padded[i + 1] \u003C\u003C 16) |\\n        (padded[i + 2] \u003C\u003C 8) |\\n        padded[i + 3];\\n      w[j].low =\\n        (padded[i + 4] \u003C\u003C 24) |\\n        (padded[i + 5] \u003C\u003C 16) |\\n        (padded[i + 6] \u003C\u003C 8) |\\n        padded[i + 7];\\n      i += 8;\\n    }\\n    for (j = 16; j \u003C 80; ++j) {\\n      tmp3 = w[j];\\n      littleSigmaPrime(tmp3, w[j - 2], tmp2);\\n      tmp3.add(w[j - 7]);\\n      littleSigma(tmp1, w[j - 15], tmp2);\\n      tmp3.add(tmp1);\\n      tmp3.add(w[j - 16]);\\n    }\\n\\n    a.assign(h0);\\n    b.assign(h1);\\n    c.assign(h2);\\n    d.assign(h3);\\n    e.assign(h4);\\n    f.assign(h5);\\n    g.assign(h6);\\n    h.assign(h7);\\n    for (j = 0; j \u003C 80; ++j) {\\n      t1.assign(h);\\n      sigmaPrime(tmp1, e, tmp2);\\n      t1.add(tmp1);\\n      ch(tmp1, e, f, g, tmp2);\\n      t1.add(tmp1);\\n      t1.add(k[j]);\\n      t1.add(w[j]);\\n\\n      sigma(t2, a, tmp2);\\n      maj(tmp1, a, b, c, tmp2);\\n      t2.add(tmp1);\\n\\n      tmp3 = h;\\n      h = g;\\n      g = f;\\n      f = e;\\n      d.add(t1);\\n      e = d;\\n      d = c;\\n      c = b;\\n      b = a;\\n      tmp3.assign(t1);\\n      tmp3.add(t2);\\n      a = tmp3;\\n    }\\n    h0.add(a);\\n    h1.add(b);\\n    h2.add(c);\\n    h3.add(d);\\n    h4.add(e);\\n    h5.add(f);\\n    h6.add(g);\\n    h7.add(h);\\n  }\\n\\n  let result;\\n  if (!mode384) {\\n    result = new Uint8Array(64);\\n    h0.copyTo(result, 0);\\n    h1.copyTo(result, 8);\\n    h2.copyTo(result, 16);\\n    h3.copyTo(result, 24);\\n    h4.copyTo(result, 32);\\n    h5.copyTo(result, 40);\\n    h6.copyTo(result, 48);\\n    h7.copyTo(result, 56);\\n  } else {\\n    result = new Uint8Array(48);\\n    h0.copyTo(result, 0);\\n    h1.copyTo(result, 8);\\n    h2.copyTo(result, 16);\\n    h3.copyTo(result, 24);\\n    h4.copyTo(result, 32);\\n    h5.copyTo(result, 40);\\n  }\\n  return result;\\n}\\n\\nfunction calculateSHA384(data, offset, length) {\\n  return calculateSHA512(data, offset, length, \u002F* mode384 = *\u002F true);\\n}\\n\\nexport { calculateSHA384, calculateSHA512 };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { shadow } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\nconst PARAMS = {\\n  get k() {\\n    return shadow(\\n      this,\\n      \\\"k\\\",\\n      [\\n        0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1,\\n        0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\\n        0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786,\\n        0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\\n        0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\\n        0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\\n        0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b,\\n        0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\\n        0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a,\\n        0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\\n        0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,\\n      ]\\n    );\\n  },\\n};\\n\\nfunction rotr(x, n) {\\n  return (x >>> n) | (x \u003C\u003C (32 - n));\\n}\\n\\nfunction ch(x, y, z) {\\n  return (x & y) ^ (~x & z);\\n}\\n\\nfunction maj(x, y, z) {\\n  return (x & y) ^ (x & z) ^ (y & z);\\n}\\n\\nfunction sigma(x) {\\n  return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);\\n}\\n\\nfunction sigmaPrime(x) {\\n  return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);\\n}\\n\\nfunction littleSigma(x) {\\n  return rotr(x, 7) ^ rotr(x, 18) ^ (x >>> 3);\\n}\\n\\nfunction littleSigmaPrime(x) {\\n  return rotr(x, 17) ^ rotr(x, 19) ^ (x >>> 10);\\n}\\n\\nfunction calculateSHA256(data, offset, length) {\\n  \u002F\u002F initial hash values\\n  let h0 = 0x6a09e667,\\n    h1 = 0xbb67ae85,\\n    h2 = 0x3c6ef372,\\n    h3 = 0xa54ff53a,\\n    h4 = 0x510e527f,\\n    h5 = 0x9b05688c,\\n    h6 = 0x1f83d9ab,\\n    h7 = 0x5be0cd19;\\n  \u002F\u002F pre-processing\\n  const paddedLength = Math.ceil((length + 9) \u002F 64) * 64;\\n  const padded = new Uint8Array(paddedLength);\\n  let i, j;\\n  for (i = 0; i \u003C length; ++i) {\\n    padded[i] = data[offset++];\\n  }\\n  padded[i++] = 0x80;\\n  const n = paddedLength - 8;\\n  if (i \u003C n) {\\n    i = n;\\n  }\\n  i += 3;\\n  padded[i++] = (length >>> 29) & 0xff;\\n  padded[i++] = (length >> 21) & 0xff;\\n  padded[i++] = (length >> 13) & 0xff;\\n  padded[i++] = (length >> 5) & 0xff;\\n  padded[i++] = (length \u003C\u003C 3) & 0xff;\\n  const w = new Uint32Array(64);\\n  const { k } = PARAMS;\\n  \u002F\u002F for each 512 bit block\\n  for (i = 0; i \u003C paddedLength; ) {\\n    for (j = 0; j \u003C 16; ++j) {\\n      w[j] =\\n        (padded[i] \u003C\u003C 24) |\\n        (padded[i + 1] \u003C\u003C 16) |\\n        (padded[i + 2] \u003C\u003C 8) |\\n        padded[i + 3];\\n      i += 4;\\n    }\\n\\n    for (j = 16; j \u003C 64; ++j) {\\n      w[j] =\\n        (littleSigmaPrime(w[j - 2]) +\\n          w[j - 7] +\\n          littleSigma(w[j - 15]) +\\n          w[j - 16]) |\\n        0;\\n    }\\n    let a = h0,\\n      b = h1,\\n      c = h2,\\n      d = h3,\\n      e = h4,\\n      f = h5,\\n      g = h6,\\n      h = h7,\\n      t1,\\n      t2;\\n    for (j = 0; j \u003C 64; ++j) {\\n      t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j];\\n      t2 = sigma(a) + maj(a, b, c);\\n      h = g;\\n      g = f;\\n      f = e;\\n      e = (d + t1) | 0;\\n      d = c;\\n      c = b;\\n      b = a;\\n      a = (t1 + t2) | 0;\\n    }\\n    h0 = (h0 + a) | 0;\\n    h1 = (h1 + b) | 0;\\n    h2 = (h2 + c) | 0;\\n    h3 = (h3 + d) | 0;\\n    h4 = (h4 + e) | 0;\\n    h5 = (h5 + f) | 0;\\n    h6 = (h6 + g) | 0;\\n    h7 = (h7 + h) | 0;\\n  }\\n  \u002F\u002F prettier-ignore\\n  return new Uint8Array([\\n    (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, (h0) & 0xFF,\\n    (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, (h1) & 0xFF,\\n    (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, (h2) & 0xFF,\\n    (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, (h3) & 0xFF,\\n    (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, (h4) & 0xFF,\\n    (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, (h5) & 0xFF,\\n    (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, (h6) & 0xFF,\\n    (h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, (h7) & 0xFF\\n  ]);\\n}\\n\\nexport { calculateSHA256 };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { DecodeStream } from \\\".\u002Fdecode_stream.js\\\";\\n\\nconst chunkSize = 512;\\n\\nclass DecryptStream extends DecodeStream {\\n  constructor(str, maybeLength, decrypt) {\\n    super(maybeLength);\\n\\n    this.str = str;\\n    this.dict = str.dict;\\n    this.decrypt = decrypt;\\n    this.nextChunk = null;\\n    this.initialized = false;\\n  }\\n\\n  readBlock() {\\n    let chunk;\\n    if (this.initialized) {\\n      chunk = this.nextChunk;\\n    } else {\\n      chunk = this.str.getBytes(chunkSize);\\n      this.initialized = true;\\n    }\\n    if (!chunk?.length) {\\n      this.eof = true;\\n      return;\\n    }\\n    this.nextChunk = this.str.getBytes(chunkSize);\\n    const hasMoreData = this.nextChunk?.length > 0;\\n\\n    const decrypt = this.decrypt;\\n    chunk = decrypt(chunk, !hasMoreData);\\n\\n    const bufferLength = this.bufferLength,\\n      newLength = bufferLength + chunk.length,\\n      buffer = this.ensureBuffer(newLength);\\n    buffer.set(chunk, bufferLength);\\n    this.bufferLength = newLength;\\n  }\\n}\\n\\nexport { DecryptStream };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  bytesToString,\\n  FormatError,\\n  isArrayEqual,\\n  PasswordException,\\n  PasswordResponses,\\n  shadow,\\n  stringToBytes,\\n  unreachable,\\n  utf8StringToString,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { calculateSHA384, calculateSHA512 } from \\\".\u002Fcalculate_sha_other.js\\\";\\nimport { Dict, isName, Name } from \\\".\u002Fprimitives.js\\\";\\nimport { calculateMD5 } from \\\".\u002Fcalculate_md5.js\\\";\\nimport { calculateSHA256 } from \\\".\u002Fcalculate_sha256.js\\\";\\nimport { DecryptStream } from \\\".\u002Fdecrypt_stream.js\\\";\\n\\nclass ARCFourCipher {\\n  constructor(key) {\\n    this.a = 0;\\n    this.b = 0;\\n    const s = new Uint8Array(256);\\n    const keyLength = key.length;\\n\\n    for (let i = 0; i \u003C 256; ++i) {\\n      s[i] = i;\\n    }\\n    for (let i = 0, j = 0; i \u003C 256; ++i) {\\n      const tmp = s[i];\\n      j = (j + tmp + key[i % keyLength]) & 0xff;\\n      s[i] = s[j];\\n      s[j] = tmp;\\n    }\\n    this.s = s;\\n  }\\n\\n  encryptBlock(data) {\\n    let a = this.a,\\n      b = this.b;\\n    const s = this.s;\\n    const n = data.length;\\n    const output = new Uint8Array(n);\\n    for (let i = 0; i \u003C n; ++i) {\\n      a = (a + 1) & 0xff;\\n      const tmp = s[a];\\n      b = (b + tmp) & 0xff;\\n      const tmp2 = s[b];\\n      s[a] = tmp2;\\n      s[b] = tmp;\\n      output[i] = data[i] ^ s[(tmp + tmp2) & 0xff];\\n    }\\n    this.a = a;\\n    this.b = b;\\n    return output;\\n  }\\n\\n  decryptBlock(data) {\\n    return this.encryptBlock(data);\\n  }\\n\\n  encrypt(data) {\\n    return this.encryptBlock(data);\\n  }\\n}\\n\\nclass NullCipher {\\n  decryptBlock(data) {\\n    return data;\\n  }\\n\\n  encrypt(data) {\\n    return data;\\n  }\\n}\\n\\nclass AESBaseCipher {\\n  _s = new Uint8Array([\\n    0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b,\\n    0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,\\n    0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26,\\n    0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,\\n    0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2,\\n    0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0,\\n    0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed,\\n    0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,\\n    0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f,\\n    0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5,\\n    0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec,\\n    0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,\\n    0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14,\\n    0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c,\\n    0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d,\\n    0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,\\n    0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f,\\n    0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e,\\n    0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11,\\n    0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,\\n    0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f,\\n    0xb0, 0x54, 0xbb, 0x16,\\n  ]);\\n\\n  _inv_s = new Uint8Array([\\n    0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e,\\n    0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87,\\n    0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32,\\n    0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e,\\n    0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49,\\n    0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16,\\n    0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50,\\n    0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84,\\n    0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05,\\n    0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02,\\n    0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41,\\n    0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73,\\n    0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8,\\n    0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89,\\n    0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b,\\n    0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4,\\n    0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59,\\n    0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d,\\n    0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d,\\n    0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61,\\n    0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63,\\n    0x55, 0x21, 0x0c, 0x7d,\\n  ]);\\n\\n  _mix = new Uint32Array([\\n    0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927,\\n    0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45,\\n    0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb,\\n    0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381,\\n    0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf,\\n    0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66,\\n    0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28,\\n    0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012,\\n    0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec,\\n    0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e,\\n    0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd,\\n    0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7,\\n    0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89,\\n    0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b,\\n    0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815,\\n    0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f,\\n    0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa,\\n    0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8,\\n    0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36,\\n    0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c,\\n    0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742,\\n    0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea,\\n    0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4,\\n    0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e,\\n    0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360,\\n    0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502,\\n    0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87,\\n    0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd,\\n    0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3,\\n    0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621,\\n    0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f,\\n    0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55,\\n    0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26,\\n    0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844,\\n    0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba,\\n    0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480,\\n    0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce,\\n    0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67,\\n    0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929,\\n    0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713,\\n    0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed,\\n    0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f,\\n    0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3,\\n  ]);\\n\\n  _mixCol = new Uint8Array(256).map((_, i) =>\\n    i \u003C 128 ? i \u003C\u003C 1 : (i \u003C\u003C 1) ^ 0x1b\\n  );\\n\\n  constructor() {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      this.constructor === AESBaseCipher\\n    ) {\\n      unreachable(\\\"Cannot initialize AESBaseCipher.\\\");\\n    }\\n    this.buffer = new Uint8Array(16);\\n    this.bufferPosition = 0;\\n  }\\n\\n  _expandKey(cipherKey) {\\n    unreachable(\\\"Cannot call `_expandKey` on the base class\\\");\\n  }\\n\\n  _decrypt(input, key) {\\n    let t, u, v;\\n    const state = new Uint8Array(16);\\n    state.set(input);\\n\\n    \u002F\u002F AddRoundKey\\n    for (let j = 0, k = this._keySize; j \u003C 16; ++j, ++k) {\\n      state[j] ^= key[k];\\n    }\\n    for (let i = this._cyclesOfRepetition - 1; i >= 1; --i) {\\n      \u002F\u002F InvShiftRows\\n      t = state[13];\\n      state[13] = state[9];\\n      state[9] = state[5];\\n      state[5] = state[1];\\n      state[1] = t;\\n      t = state[14];\\n      u = state[10];\\n      state[14] = state[6];\\n      state[10] = state[2];\\n      state[6] = t;\\n      state[2] = u;\\n      t = state[15];\\n      u = state[11];\\n      v = state[7];\\n      state[15] = state[3];\\n      state[11] = t;\\n      state[7] = u;\\n      state[3] = v;\\n      \u002F\u002F InvSubBytes\\n      for (let j = 0; j \u003C 16; ++j) {\\n        state[j] = this._inv_s[state[j]];\\n      }\\n      \u002F\u002F AddRoundKey\\n      for (let j = 0, k = i * 16; j \u003C 16; ++j, ++k) {\\n        state[j] ^= key[k];\\n      }\\n      \u002F\u002F InvMixColumns\\n      for (let j = 0; j \u003C 16; j += 4) {\\n        const s0 = this._mix[state[j]];\\n        const s1 = this._mix[state[j + 1]];\\n        const s2 = this._mix[state[j + 2]];\\n        const s3 = this._mix[state[j + 3]];\\n        t =\\n          s0 ^\\n          (s1 >>> 8) ^\\n          (s1 \u003C\u003C 24) ^\\n          (s2 >>> 16) ^\\n          (s2 \u003C\u003C 16) ^\\n          (s3 >>> 24) ^\\n          (s3 \u003C\u003C 8);\\n        state[j] = (t >>> 24) & 0xff;\\n        state[j + 1] = (t >> 16) & 0xff;\\n        state[j + 2] = (t >> 8) & 0xff;\\n        state[j + 3] = t & 0xff;\\n      }\\n    }\\n    \u002F\u002F InvShiftRows\\n    t = state[13];\\n    state[13] = state[9];\\n    state[9] = state[5];\\n    state[5] = state[1];\\n    state[1] = t;\\n    t = state[14];\\n    u = state[10];\\n    state[14] = state[6];\\n    state[10] = state[2];\\n    state[6] = t;\\n    state[2] = u;\\n    t = state[15];\\n    u = state[11];\\n    v = state[7];\\n    state[15] = state[3];\\n    state[11] = t;\\n    state[7] = u;\\n    state[3] = v;\\n    for (let j = 0; j \u003C 16; ++j) {\\n      \u002F\u002F InvSubBytes\\n      state[j] = this._inv_s[state[j]];\\n      \u002F\u002F AddRoundKey\\n      state[j] ^= key[j];\\n    }\\n    return state;\\n  }\\n\\n  _encrypt(input, key) {\\n    const s = this._s;\\n\\n    let t, u, v;\\n    const state = new Uint8Array(16);\\n    state.set(input);\\n\\n    for (let j = 0; j \u003C 16; ++j) {\\n      \u002F\u002F AddRoundKey\\n      state[j] ^= key[j];\\n    }\\n\\n    for (let i = 1; i \u003C this._cyclesOfRepetition; i++) {\\n      \u002F\u002F SubBytes\\n      for (let j = 0; j \u003C 16; ++j) {\\n        state[j] = s[state[j]];\\n      }\\n      \u002F\u002F ShiftRows\\n      v = state[1];\\n      state[1] = state[5];\\n      state[5] = state[9];\\n      state[9] = state[13];\\n      state[13] = v;\\n      v = state[2];\\n      u = state[6];\\n      state[2] = state[10];\\n      state[6] = state[14];\\n      state[10] = v;\\n      state[14] = u;\\n      v = state[3];\\n      u = state[7];\\n      t = state[11];\\n      state[3] = state[15];\\n      state[7] = v;\\n      state[11] = u;\\n      state[15] = t;\\n      \u002F\u002F MixColumns\\n      for (let j = 0; j \u003C 16; j += 4) {\\n        const s0 = state[j];\\n        const s1 = state[j + 1];\\n        const s2 = state[j + 2];\\n        const s3 = state[j + 3];\\n        t = s0 ^ s1 ^ s2 ^ s3;\\n        state[j] ^= t ^ this._mixCol[s0 ^ s1];\\n        state[j + 1] ^= t ^ this._mixCol[s1 ^ s2];\\n        state[j + 2] ^= t ^ this._mixCol[s2 ^ s3];\\n        state[j + 3] ^= t ^ this._mixCol[s3 ^ s0];\\n      }\\n      \u002F\u002F AddRoundKey\\n      for (let j = 0, k = i * 16; j \u003C 16; ++j, ++k) {\\n        state[j] ^= key[k];\\n      }\\n    }\\n\\n    \u002F\u002F SubBytes\\n    for (let j = 0; j \u003C 16; ++j) {\\n      state[j] = s[state[j]];\\n    }\\n    \u002F\u002F ShiftRows\\n    v = state[1];\\n    state[1] = state[5];\\n    state[5] = state[9];\\n    state[9] = state[13];\\n    state[13] = v;\\n    v = state[2];\\n    u = state[6];\\n    state[2] = state[10];\\n    state[6] = state[14];\\n    state[10] = v;\\n    state[14] = u;\\n    v = state[3];\\n    u = state[7];\\n    t = state[11];\\n    state[3] = state[15];\\n    state[7] = v;\\n    state[11] = u;\\n    state[15] = t;\\n    \u002F\u002F AddRoundKey\\n    for (let j = 0, k = this._keySize; j \u003C 16; ++j, ++k) {\\n      state[j] ^= key[k];\\n    }\\n    return state;\\n  }\\n\\n  _decryptBlock2(data, finalize) {\\n    const sourceLength = data.length;\\n    let buffer = this.buffer,\\n      bufferLength = this.bufferPosition;\\n    const result = [];\\n    let iv = this.iv;\\n\\n    for (let i = 0; i \u003C sourceLength; ++i) {\\n      buffer[bufferLength] = data[i];\\n      ++bufferLength;\\n      if (bufferLength \u003C 16) {\\n        continue;\\n      }\\n      \u002F\u002F buffer is full, decrypting\\n      const plain = this._decrypt(buffer, this._key);\\n      \u002F\u002F xor-ing the IV vector to get plain text\\n      for (let j = 0; j \u003C 16; ++j) {\\n        plain[j] ^= iv[j];\\n      }\\n      iv = buffer;\\n      result.push(plain);\\n      buffer = new Uint8Array(16);\\n      bufferLength = 0;\\n    }\\n    \u002F\u002F saving incomplete buffer\\n    this.buffer = buffer;\\n    this.bufferLength = bufferLength;\\n    this.iv = iv;\\n    if (result.length === 0) {\\n      return new Uint8Array(0);\\n    }\\n    \u002F\u002F combining plain text blocks into one\\n    let outputLength = 16 * result.length;\\n    if (finalize) {\\n      \u002F\u002F undo a padding that is described in RFC 2898\\n      const lastBlock = result.at(-1);\\n      let psLen = lastBlock[15];\\n      if (psLen \u003C= 16) {\\n        for (let i = 15, ii = 16 - psLen; i >= ii; --i) {\\n          if (lastBlock[i] !== psLen) {\\n            \u002F\u002F Invalid padding, assume that the block has no padding.\\n            psLen = 0;\\n            break;\\n          }\\n        }\\n        outputLength -= psLen;\\n        result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);\\n      }\\n    }\\n    const output = new Uint8Array(outputLength);\\n    for (let i = 0, j = 0, ii = result.length; i \u003C ii; ++i, j += 16) {\\n      output.set(result[i], j);\\n    }\\n    return output;\\n  }\\n\\n  decryptBlock(data, finalize, iv = null) {\\n    const sourceLength = data.length;\\n    const buffer = this.buffer;\\n    let bufferLength = this.bufferPosition;\\n    \u002F\u002F If an IV is not supplied, wait for IV values. They are at the start\\n    \u002F\u002F of the stream.\\n    if (iv) {\\n      this.iv = iv;\\n    } else {\\n      for (\\n        let i = 0;\\n        bufferLength \u003C 16 && i \u003C sourceLength;\\n        ++i, ++bufferLength\\n      ) {\\n        buffer[bufferLength] = data[i];\\n      }\\n      if (bufferLength \u003C 16) {\\n        \u002F\u002F Need more data.\\n        this.bufferLength = bufferLength;\\n        return new Uint8Array(0);\\n      }\\n      this.iv = buffer;\\n      data = data.subarray(16);\\n    }\\n    this.buffer = new Uint8Array(16);\\n    this.bufferLength = 0;\\n    \u002F\u002F starting decryption\\n    this.decryptBlock = this._decryptBlock2;\\n    return this.decryptBlock(data, finalize);\\n  }\\n\\n  encrypt(data, iv) {\\n    const sourceLength = data.length;\\n    let buffer = this.buffer,\\n      bufferLength = this.bufferPosition;\\n    const result = [];\\n\\n    iv ||= new Uint8Array(16);\\n    for (let i = 0; i \u003C sourceLength; ++i) {\\n      buffer[bufferLength] = data[i];\\n      ++bufferLength;\\n      if (bufferLength \u003C 16) {\\n        continue;\\n      }\\n\\n      for (let j = 0; j \u003C 16; ++j) {\\n        buffer[j] ^= iv[j];\\n      }\\n\\n      \u002F\u002F buffer is full, encrypting\\n      const cipher = this._encrypt(buffer, this._key);\\n      iv = cipher;\\n      result.push(cipher);\\n      buffer = new Uint8Array(16);\\n      bufferLength = 0;\\n    }\\n    \u002F\u002F saving incomplete buffer\\n    this.buffer = buffer;\\n    this.bufferLength = bufferLength;\\n    this.iv = iv;\\n    if (result.length === 0) {\\n      return new Uint8Array(0);\\n    }\\n    \u002F\u002F combining plain text blocks into one\\n    const outputLength = 16 * result.length;\\n    const output = new Uint8Array(outputLength);\\n    for (let i = 0, j = 0, ii = result.length; i \u003C ii; ++i, j += 16) {\\n      output.set(result[i], j);\\n    }\\n    return output;\\n  }\\n}\\n\\nclass AES128Cipher extends AESBaseCipher {\\n  _rcon = new Uint8Array([\\n    0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\\n    0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\\n    0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\\n    0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\\n    0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,\\n    0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6,\\n    0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72,\\n    0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc,\\n    0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10,\\n    0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e,\\n    0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5,\\n    0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94,\\n    0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02,\\n    0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d,\\n    0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d,\\n    0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f,\\n    0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb,\\n    0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\\n    0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\\n    0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\\n    0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\\n    0x74, 0xe8, 0xcb, 0x8d,\\n  ]);\\n\\n  constructor(key) {\\n    super();\\n\\n    this._cyclesOfRepetition = 10;\\n    this._keySize = 160; \u002F\u002F bits\\n\\n    this._key = this._expandKey(key);\\n  }\\n\\n  _expandKey(cipherKey) {\\n    const b = 176;\\n    const s = this._s;\\n    const rcon = this._rcon;\\n\\n    const result = new Uint8Array(b);\\n    result.set(cipherKey);\\n\\n    for (let j = 16, i = 1; j \u003C b; ++i) {\\n      \u002F\u002F RotWord\\n      let t1 = result[j - 3];\\n      let t2 = result[j - 2];\\n      let t3 = result[j - 1];\\n      let t4 = result[j - 4];\\n      \u002F\u002F SubWord\\n      t1 = s[t1];\\n      t2 = s[t2];\\n      t3 = s[t3];\\n      t4 = s[t4];\\n      \u002F\u002F Rcon\\n      t1 ^= rcon[i];\\n      for (let n = 0; n \u003C 4; ++n) {\\n        result[j] = t1 ^= result[j - 16];\\n        j++;\\n        result[j] = t2 ^= result[j - 16];\\n        j++;\\n        result[j] = t3 ^= result[j - 16];\\n        j++;\\n        result[j] = t4 ^= result[j - 16];\\n        j++;\\n      }\\n    }\\n    return result;\\n  }\\n}\\n\\nclass AES256Cipher extends AESBaseCipher {\\n  constructor(key) {\\n    super();\\n\\n    this._cyclesOfRepetition = 14;\\n    this._keySize = 224; \u002F\u002F bits\\n\\n    this._key = this._expandKey(key);\\n  }\\n\\n  _expandKey(cipherKey) {\\n    const b = 240;\\n    const s = this._s;\\n\\n    const result = new Uint8Array(b);\\n    result.set(cipherKey);\\n\\n    let r = 1;\\n    let t1, t2, t3, t4;\\n    for (let j = 32, i = 1; j \u003C b; ++i) {\\n      if (j % 32 === 16) {\\n        t1 = s[t1];\\n        t2 = s[t2];\\n        t3 = s[t3];\\n        t4 = s[t4];\\n      } else if (j % 32 === 0) {\\n        \u002F\u002F RotWord\\n        t1 = result[j - 3];\\n        t2 = result[j - 2];\\n        t3 = result[j - 1];\\n        t4 = result[j - 4];\\n        \u002F\u002F SubWord\\n        t1 = s[t1];\\n        t2 = s[t2];\\n        t3 = s[t3];\\n        t4 = s[t4];\\n        \u002F\u002F Rcon\\n        t1 ^= r;\\n        if ((r \u003C\u003C= 1) >= 256) {\\n          r = (r ^ 0x1b) & 0xff;\\n        }\\n      }\\n\\n      for (let n = 0; n \u003C 4; ++n) {\\n        result[j] = t1 ^= result[j - 32];\\n        j++;\\n        result[j] = t2 ^= result[j - 32];\\n        j++;\\n        result[j] = t3 ^= result[j - 32];\\n        j++;\\n        result[j] = t4 ^= result[j - 32];\\n        j++;\\n      }\\n    }\\n    return result;\\n  }\\n}\\n\\nclass PDFBase {\\n  constructor() {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      this.constructor === PDFBase\\n    ) {\\n      unreachable(\\\"Cannot initialize PDFBase.\\\");\\n    }\\n  }\\n\\n  _hash(password, input, userBytes) {\\n    unreachable(\\\"Abstract method `_hash` called\\\");\\n  }\\n\\n  checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {\\n    const hashData = new Uint8Array(password.length + 56);\\n    hashData.set(password, 0);\\n    hashData.set(ownerValidationSalt, password.length);\\n    hashData.set(userBytes, password.length + ownerValidationSalt.length);\\n    const result = this._hash(password, hashData, userBytes);\\n    return isArrayEqual(result, ownerPassword);\\n  }\\n\\n  checkUserPassword(password, userValidationSalt, userPassword) {\\n    const hashData = new Uint8Array(password.length + 8);\\n    hashData.set(password, 0);\\n    hashData.set(userValidationSalt, password.length);\\n    const result = this._hash(password, hashData, []);\\n    return isArrayEqual(result, userPassword);\\n  }\\n\\n  getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\\n    const hashData = new Uint8Array(password.length + 56);\\n    hashData.set(password, 0);\\n    hashData.set(ownerKeySalt, password.length);\\n    hashData.set(userBytes, password.length + ownerKeySalt.length);\\n    const key = this._hash(password, hashData, userBytes);\\n    const cipher = new AES256Cipher(key);\\n    return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\\n  }\\n\\n  getUserKey(password, userKeySalt, userEncryption) {\\n    const hashData = new Uint8Array(password.length + 8);\\n    hashData.set(password, 0);\\n    hashData.set(userKeySalt, password.length);\\n    \u002F\u002F `key` is the decryption key for the UE string.\\n    const key = this._hash(password, hashData, []);\\n    const cipher = new AES256Cipher(key);\\n    return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\\n  }\\n}\\n\\nclass PDF17 extends PDFBase {\\n  _hash(password, input, userBytes) {\\n    return calculateSHA256(input, 0, input.length);\\n  }\\n}\\n\\nclass PDF20 extends PDFBase {\\n  _hash(password, input, userBytes) {\\n    \u002F\u002F This refers to Algorithm 2.B as defined in ISO 32000-2.\\n    let k = calculateSHA256(input, 0, input.length).subarray(0, 32);\\n    let e = [0];\\n    let i = 0;\\n    while (i \u003C 64 || e.at(-1) > i - 32) {\\n      const combinedLength = password.length + k.length + userBytes.length,\\n        combinedArray = new Uint8Array(combinedLength);\\n      let writeOffset = 0;\\n      combinedArray.set(password, writeOffset);\\n      writeOffset += password.length;\\n      combinedArray.set(k, writeOffset);\\n      writeOffset += k.length;\\n      combinedArray.set(userBytes, writeOffset);\\n\\n      const k1 = new Uint8Array(combinedLength * 64);\\n      for (let j = 0, pos = 0; j \u003C 64; j++, pos += combinedLength) {\\n        k1.set(combinedArray, pos);\\n      }\\n      \u002F\u002F AES128 CBC NO PADDING with first 16 bytes of k as the key\\n      \u002F\u002F and the second 16 as the iv.\\n      const cipher = new AES128Cipher(k.subarray(0, 16));\\n      e = cipher.encrypt(k1, k.subarray(16, 32));\\n      \u002F\u002F Now we have to take the first 16 bytes of an unsigned big endian\\n      \u002F\u002F integer and compute the remainder modulo 3. That is a fairly large\\n      \u002F\u002F number and JavaScript isn't going to handle that well.\\n      \u002F\u002F The number is e0 + 256 * e1 + 256^2 * e2... and 256 % 3 === 1, hence\\n      \u002F\u002F the powers of 256 are === 1 modulo 3 and finally the number modulo 3\\n      \u002F\u002F is equal to the remainder modulo 3 of the sum of the e_n.\\n      const remainder = Math.sumPrecise(e.slice(0, 16)) % 3;\\n      if (remainder === 0) {\\n        k = calculateSHA256(e, 0, e.length);\\n      } else if (remainder === 1) {\\n        k = calculateSHA384(e, 0, e.length);\\n      } else if (remainder === 2) {\\n        k = calculateSHA512(e, 0, e.length);\\n      }\\n      i++;\\n    }\\n    return k.subarray(0, 32);\\n  }\\n}\\n\\nclass CipherTransform {\\n  constructor(stringCipherConstructor, streamCipherConstructor) {\\n    this.StringCipherConstructor = stringCipherConstructor;\\n    this.StreamCipherConstructor = streamCipherConstructor;\\n  }\\n\\n  createStream(stream, length) {\\n    const cipher = new this.StreamCipherConstructor();\\n    return new DecryptStream(\\n      stream,\\n      length,\\n      function cipherTransformDecryptStream(data, finalize) {\\n        return cipher.decryptBlock(data, finalize);\\n      }\\n    );\\n  }\\n\\n  decryptString(s) {\\n    const cipher = new this.StringCipherConstructor();\\n    let data = stringToBytes(s);\\n    data = cipher.decryptBlock(data, true);\\n    return bytesToString(data);\\n  }\\n\\n  encryptString(s) {\\n    const cipher = new this.StringCipherConstructor();\\n    if (cipher instanceof AESBaseCipher) {\\n      \u002F\u002F Append some chars equal to \\\"16 - (M mod 16)\\\"\\n      \u002F\u002F where M is the string length (see section 7.6.2 in PDF specification)\\n      \u002F\u002F to have a final string where the length is a multiple of 16.\\n      \u002F\u002F Special note:\\n      \u002F\u002F   \\\"Note that the pad is present when M is evenly divisible by 16;\\n      \u002F\u002F   it contains 16 bytes of 0x10.\\\"\\n      const strLen = s.length;\\n      const pad = 16 - (strLen % 16);\\n      s += String.fromCharCode(pad).repeat(pad);\\n\\n      \u002F\u002F Generate an initialization vector\\n      const iv = new Uint8Array(16);\\n      crypto.getRandomValues(iv);\\n\\n      let data = stringToBytes(s);\\n      data = cipher.encrypt(data, iv);\\n\\n      const buf = new Uint8Array(16 + data.length);\\n      buf.set(iv);\\n      buf.set(data, 16);\\n\\n      return bytesToString(buf);\\n    }\\n\\n    let data = stringToBytes(s);\\n    data = cipher.encrypt(data);\\n    return bytesToString(data);\\n  }\\n}\\n\\nclass CipherTransformFactory {\\n  static get _defaultPasswordBytes() {\\n    return shadow(\\n      this,\\n      \\\"_defaultPasswordBytes\\\",\\n      new Uint8Array([\\n        0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, 0x56,\\n        0xff, 0xfa, 0x01, 0x08, 0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68, 0x3e, 0x80,\\n        0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a,\\n      ])\\n    );\\n  }\\n\\n  #createEncryptionKey20(\\n    revision,\\n    password,\\n    ownerPassword,\\n    ownerValidationSalt,\\n    ownerKeySalt,\\n    uBytes,\\n    userPassword,\\n    userValidationSalt,\\n    userKeySalt,\\n    ownerEncryption,\\n    userEncryption,\\n    perms\\n  ) {\\n    if (password) {\\n      const passwordLength = Math.min(127, password.length);\\n      password = password.subarray(0, passwordLength);\\n    } else {\\n      password = [];\\n    }\\n    const pdfAlgorithm = revision === 6 ? new PDF20() : new PDF17();\\n\\n    if (\\n      pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)\\n    ) {\\n      return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption);\\n    } else if (\\n      password.length &&\\n      pdfAlgorithm.checkOwnerPassword(\\n        password,\\n        ownerValidationSalt,\\n        uBytes,\\n        ownerPassword\\n      )\\n    ) {\\n      return pdfAlgorithm.getOwnerKey(\\n        password,\\n        ownerKeySalt,\\n        uBytes,\\n        ownerEncryption\\n      );\\n    }\\n\\n    return null;\\n  }\\n\\n  #prepareKeyData(\\n    fileId,\\n    password,\\n    ownerPassword,\\n    userPassword,\\n    flags,\\n    revision,\\n    keyLength,\\n    encryptMetadata\\n  ) {\\n    const hashDataSize = 40 + ownerPassword.length + fileId.length;\\n    const hashData = new Uint8Array(hashDataSize);\\n    let i = 0,\\n      j,\\n      n;\\n    if (password) {\\n      n = Math.min(32, password.length);\\n      for (; i \u003C n; ++i) {\\n        hashData[i] = password[i];\\n      }\\n    }\\n    j = 0;\\n    while (i \u003C 32) {\\n      hashData[i++] = CipherTransformFactory._defaultPasswordBytes[j++];\\n    }\\n    \u002F\u002F as now the padded password in the hashData[0..i]\\n    hashData.set(ownerPassword, i);\\n    i += ownerPassword.length;\\n    hashData[i++] = flags & 0xff;\\n    hashData[i++] = (flags >> 8) & 0xff;\\n    hashData[i++] = (flags >> 16) & 0xff;\\n    hashData[i++] = (flags >>> 24) & 0xff;\\n    hashData.set(fileId, i);\\n    i += fileId.length;\\n    if (revision >= 4 && !encryptMetadata) {\\n      hashData.fill(0xff, i, i + 4);\\n      i += 4;\\n    }\\n    let hash = calculateMD5(hashData, 0, i);\\n    const keyLengthInBytes = keyLength >> 3;\\n    if (revision >= 3) {\\n      for (j = 0; j \u003C 50; ++j) {\\n        hash = calculateMD5(hash, 0, keyLengthInBytes);\\n      }\\n    }\\n    const encryptionKey = hash.subarray(0, keyLengthInBytes);\\n    let cipher, checkData;\\n\\n    if (revision >= 3) {\\n      i = 0;\\n      hashData.set(CipherTransformFactory._defaultPasswordBytes, i);\\n      i += 32;\\n      hashData.set(fileId, i);\\n      i += fileId.length;\\n\\n      cipher = new ARCFourCipher(encryptionKey);\\n      checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));\\n      n = encryptionKey.length;\\n      const derivedKey = new Uint8Array(n);\\n      for (j = 1; j \u003C= 19; ++j) {\\n        for (let k = 0; k \u003C n; ++k) {\\n          derivedKey[k] = encryptionKey[k] ^ j;\\n        }\\n        cipher = new ARCFourCipher(derivedKey);\\n        checkData = cipher.encryptBlock(checkData);\\n      }\\n    } else {\\n      cipher = new ARCFourCipher(encryptionKey);\\n      checkData = cipher.encryptBlock(\\n        CipherTransformFactory._defaultPasswordBytes\\n      );\\n    }\\n    return checkData.every((data, k) => userPassword[k] === data)\\n      ? encryptionKey\\n      : null;\\n  }\\n\\n  #decodeUserPassword(password, ownerPassword, revision, keyLength) {\\n    const hashData = new Uint8Array(32);\\n    let i = 0;\\n    const n = Math.min(32, password.length);\\n    for (; i \u003C n; ++i) {\\n      hashData[i] = password[i];\\n    }\\n    let j = 0;\\n    while (i \u003C 32) {\\n      hashData[i++] = CipherTransformFactory._defaultPasswordBytes[j++];\\n    }\\n    let hash = calculateMD5(hashData, 0, i);\\n    const keyLengthInBytes = keyLength >> 3;\\n    if (revision >= 3) {\\n      for (j = 0; j \u003C 50; ++j) {\\n        hash = calculateMD5(hash, 0, hash.length);\\n      }\\n    }\\n\\n    let cipher, userPassword;\\n    if (revision >= 3) {\\n      userPassword = ownerPassword;\\n      const derivedKey = new Uint8Array(keyLengthInBytes);\\n      for (j = 19; j >= 0; j--) {\\n        for (let k = 0; k \u003C keyLengthInBytes; ++k) {\\n          derivedKey[k] = hash[k] ^ j;\\n        }\\n        cipher = new ARCFourCipher(derivedKey);\\n        userPassword = cipher.encryptBlock(userPassword);\\n      }\\n    } else {\\n      cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes));\\n      userPassword = cipher.encryptBlock(ownerPassword);\\n    }\\n    return userPassword;\\n  }\\n\\n  #buildObjectKey(num, gen, encryptionKey, isAes = false) {\\n    const n = encryptionKey.length;\\n    const key = new Uint8Array(n + 9);\\n    key.set(encryptionKey);\\n    let i = n;\\n    key[i++] = num & 0xff;\\n    key[i++] = (num >> 8) & 0xff;\\n    key[i++] = (num >> 16) & 0xff;\\n    key[i++] = gen & 0xff;\\n    key[i++] = (gen >> 8) & 0xff;\\n    if (isAes) {\\n      key[i++] = 0x73;\\n      key[i++] = 0x41;\\n      key[i++] = 0x6c;\\n      key[i++] = 0x54;\\n    }\\n    const hash = calculateMD5(key, 0, i);\\n    return hash.subarray(0, Math.min(n + 5, 16));\\n  }\\n\\n  #buildCipherConstructor(cf, name, num, gen, key) {\\n    if (!(name instanceof Name)) {\\n      throw new FormatError(\\\"Invalid crypt filter name.\\\");\\n    }\\n    const self = this;\\n    const cryptFilter = cf.get(name.name);\\n    const cfm = cryptFilter?.get(\\\"CFM\\\");\\n\\n    if (!cfm || cfm.name === \\\"None\\\") {\\n      return function () {\\n        return new NullCipher();\\n      };\\n    }\\n    if (cfm.name === \\\"V2\\\") {\\n      return function () {\\n        return new ARCFourCipher(\\n          self.#buildObjectKey(num, gen, key, \u002F* isAes = *\u002F false)\\n        );\\n      };\\n    }\\n    if (cfm.name === \\\"AESV2\\\") {\\n      return function () {\\n        return new AES128Cipher(\\n          self.#buildObjectKey(num, gen, key, \u002F* isAes = *\u002F true)\\n        );\\n      };\\n    }\\n    if (cfm.name === \\\"AESV3\\\") {\\n      return function () {\\n        return new AES256Cipher(key);\\n      };\\n    }\\n    throw new FormatError(\\\"Unknown crypto method\\\");\\n  }\\n\\n  constructor(dict, fileId, password) {\\n    const filter = dict.get(\\\"Filter\\\");\\n    if (!isName(filter, \\\"Standard\\\")) {\\n      throw new FormatError(\\\"unknown encryption method\\\");\\n    }\\n    this.filterName = filter.name;\\n    this.dict = dict;\\n    const algorithm = dict.get(\\\"V\\\");\\n    if (\\n      !Number.isInteger(algorithm) ||\\n      (algorithm !== 1 && algorithm !== 2 && algorithm !== 4 && algorithm !== 5)\\n    ) {\\n      throw new FormatError(\\\"unsupported encryption algorithm\\\");\\n    }\\n    this.algorithm = algorithm;\\n    let keyLength = dict.get(\\\"Length\\\");\\n    if (!keyLength) {\\n      \u002F\u002F Spec asks to rely on encryption dictionary's Length entry, however\\n      \u002F\u002F some PDFs don't have it. Trying to recover.\\n      if (algorithm \u003C= 3) {\\n        \u002F\u002F For 1 and 2 it's fixed to 40-bit, for 3 40-bit is a minimal value.\\n        keyLength = 40;\\n      } else {\\n        \u002F\u002F Trying to find default handler -- it usually has Length.\\n        const cfDict = dict.get(\\\"CF\\\");\\n        const streamCryptoName = dict.get(\\\"StmF\\\");\\n        if (cfDict instanceof Dict && streamCryptoName instanceof Name) {\\n          cfDict.suppressEncryption = true; \u002F\u002F See comment below.\\n          const handlerDict = cfDict.get(streamCryptoName.name);\\n          keyLength = handlerDict?.get(\\\"Length\\\") || 128;\\n          if (keyLength \u003C 40) {\\n            \u002F\u002F Sometimes it's incorrect value of bits, generators specify\\n            \u002F\u002F bytes.\\n            keyLength \u003C\u003C= 3;\\n          }\\n        }\\n      }\\n    }\\n    if (!Number.isInteger(keyLength) || keyLength \u003C 40 || keyLength % 8 !== 0) {\\n      throw new FormatError(\\\"invalid key length\\\");\\n    }\\n\\n    const ownerBytes = stringToBytes(dict.get(\\\"O\\\")),\\n      userBytes = stringToBytes(dict.get(\\\"U\\\"));\\n    \u002F\u002F prepare keys\\n    const ownerPassword = ownerBytes.subarray(0, 32);\\n    const userPassword = userBytes.subarray(0, 32);\\n    const flags = dict.get(\\\"P\\\");\\n    const revision = dict.get(\\\"R\\\");\\n    \u002F\u002F meaningful when V is 4 or 5\\n    const encryptMetadata =\\n      (algorithm === 4 || algorithm === 5) &&\\n      dict.get(\\\"EncryptMetadata\\\") !== false;\\n    this.encryptMetadata = encryptMetadata;\\n\\n    const fileIdBytes = stringToBytes(fileId);\\n    let passwordBytes;\\n    if (password) {\\n      if (revision === 6) {\\n        try {\\n          password = utf8StringToString(password);\\n        } catch {\\n          warn(\\n            \\\"CipherTransformFactory: Unable to convert UTF8 encoded password.\\\"\\n          );\\n        }\\n      }\\n      passwordBytes = stringToBytes(password);\\n    }\\n\\n    let encryptionKey;\\n    if (algorithm !== 5) {\\n      encryptionKey = this.#prepareKeyData(\\n        fileIdBytes,\\n        passwordBytes,\\n        ownerPassword,\\n        userPassword,\\n        flags,\\n        revision,\\n        keyLength,\\n        encryptMetadata\\n      );\\n    } else {\\n      const ownerValidationSalt = ownerBytes.subarray(32, 40);\\n      const ownerKeySalt = ownerBytes.subarray(40, 48);\\n      const uBytes = userBytes.subarray(0, 48);\\n      const userValidationSalt = userBytes.subarray(32, 40);\\n      const userKeySalt = userBytes.subarray(40, 48);\\n      const ownerEncryption = stringToBytes(dict.get(\\\"OE\\\"));\\n      const userEncryption = stringToBytes(dict.get(\\\"UE\\\"));\\n      const perms = stringToBytes(dict.get(\\\"Perms\\\"));\\n      encryptionKey = this.#createEncryptionKey20(\\n        revision,\\n        passwordBytes,\\n        ownerPassword,\\n        ownerValidationSalt,\\n        ownerKeySalt,\\n        uBytes,\\n        userPassword,\\n        userValidationSalt,\\n        userKeySalt,\\n        ownerEncryption,\\n        userEncryption,\\n        perms\\n      );\\n    }\\n    if (!encryptionKey) {\\n      if (!password) {\\n        throw new PasswordException(\\n          \\\"No password given\\\",\\n          PasswordResponses.NEED_PASSWORD\\n        );\\n      }\\n      \u002F\u002F Attempting use the password as an owner password\\n      const decodedPassword = this.#decodeUserPassword(\\n        passwordBytes,\\n        ownerPassword,\\n        revision,\\n        keyLength\\n      );\\n      encryptionKey = this.#prepareKeyData(\\n        fileIdBytes,\\n        decodedPassword,\\n        ownerPassword,\\n        userPassword,\\n        flags,\\n        revision,\\n        keyLength,\\n        encryptMetadata\\n      );\\n    }\\n\\n    if (!encryptionKey) {\\n      throw new PasswordException(\\n        \\\"Incorrect Password\\\",\\n        PasswordResponses.INCORRECT_PASSWORD\\n      );\\n    }\\n\\n    if (algorithm === 4 && encryptionKey.length \u003C 16) {\\n      \u002F\u002F Extend key to 16 byte minimum (undocumented),\\n      \u002F\u002F fixes issue19484_1.pdf and issue19484_2.pdf.\\n      this.encryptionKey = new Uint8Array(16);\\n      this.encryptionKey.set(encryptionKey);\\n    } else {\\n      this.encryptionKey = encryptionKey;\\n    }\\n\\n    if (algorithm >= 4) {\\n      const cf = dict.get(\\\"CF\\\");\\n      if (cf instanceof Dict) {\\n        \u002F\u002F The 'CF' dictionary itself should not be encrypted, and by setting\\n        \u002F\u002F `suppressEncryption` we can prevent an infinite loop inside of\\n        \u002F\u002F `XRef_fetchUncompressed` if the dictionary contains indirect\\n        \u002F\u002F objects (fixes issue7665.pdf).\\n        cf.suppressEncryption = true;\\n      }\\n      this.cf = cf;\\n      this.stmf = dict.get(\\\"StmF\\\") || Name.get(\\\"Identity\\\");\\n      this.strf = dict.get(\\\"StrF\\\") || Name.get(\\\"Identity\\\");\\n      this.eff = dict.get(\\\"EFF\\\") || this.stmf;\\n    }\\n  }\\n\\n  createCipherTransform(num, gen) {\\n    if (this.algorithm === 4 || this.algorithm === 5) {\\n      return new CipherTransform(\\n        this.#buildCipherConstructor(\\n          this.cf,\\n          this.strf,\\n          num,\\n          gen,\\n          this.encryptionKey\\n        ),\\n        this.#buildCipherConstructor(\\n          this.cf,\\n          this.stmf,\\n          num,\\n          gen,\\n          this.encryptionKey\\n        )\\n      );\\n    }\\n    \u002F\u002F algorithms 1 and 2\\n    const key = this.#buildObjectKey(\\n      num,\\n      gen,\\n      this.encryptionKey,\\n      \u002F* isAes = *\u002F false\\n    );\\n    const cipherConstructor = function () {\\n      return new ARCFourCipher(key);\\n    };\\n    return new CipherTransform(cipherConstructor, cipherConstructor);\\n  }\\n}\\n\\nexport {\\n  AES128Cipher,\\n  AES256Cipher,\\n  ARCFourCipher,\\n  CipherTransformFactory,\\n  PDF17,\\n  PDF20,\\n};\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  assert,\\n  bytesToString,\\n  FormatError,\\n  info,\\n  InvalidPDFException,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { CIRCULAR_REF, Cmd, Dict, isCmd, Ref, RefSet } from \\\".\u002Fprimitives.js\\\";\\nimport { Lexer, Parser } from \\\".\u002Fparser.js\\\";\\nimport {\\n  MissingDataException,\\n  ParserEOFException,\\n  XRefEntryException,\\n  XRefParseException,\\n} from \\\".\u002Fcore_utils.js\\\";\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { CipherTransformFactory } from \\\".\u002Fcrypto.js\\\";\\n\\nclass XRef {\\n  #firstXRefStmPos = null;\\n\\n  constructor(stream, pdfManager) {\\n    this.stream = stream;\\n    this.pdfManager = pdfManager;\\n    this.entries = [];\\n    this._xrefStms = new Set();\\n    this._cacheMap = new Map(); \u002F\u002F Prepare the XRef cache.\\n    this._pendingRefs = new RefSet();\\n    this._newPersistentRefNum = null;\\n    this._newTemporaryRefNum = null;\\n    this._persistentRefsCache = null;\\n  }\\n\\n  getNewPersistentRef(obj) {\\n    \u002F\u002F When printing we don't care that much about the ref number by itself, it\\n    \u002F\u002F can increase for ever and it allows to keep some re-usable refs.\\n    if (this._newPersistentRefNum === null) {\\n      this._newPersistentRefNum = this.entries.length || 1;\\n    }\\n    const num = this._newPersistentRefNum++;\\n    this._cacheMap.set(num, obj);\\n    return Ref.get(num, 0);\\n  }\\n\\n  getNewTemporaryRef() {\\n    \u002F\u002F When saving we want to have some minimal numbers.\\n    \u002F\u002F Those refs are only created in order to be written in the final pdf\\n    \u002F\u002F stream.\\n    if (this._newTemporaryRefNum === null) {\\n      this._newTemporaryRefNum = this.entries.length || 1;\\n      if (this._newPersistentRefNum) {\\n        this._persistentRefsCache = new Map();\\n        for (\\n          let i = this._newTemporaryRefNum;\\n          i \u003C this._newPersistentRefNum;\\n          i++\\n        ) {\\n          \u002F\u002F We *temporarily* clear the cache, see `resetNewTemporaryRef` below,\\n          \u002F\u002F to avoid any conflict with the refs created during saving.\\n          this._persistentRefsCache.set(i, this._cacheMap.get(i));\\n          this._cacheMap.delete(i);\\n        }\\n      }\\n    }\\n    return Ref.get(this._newTemporaryRefNum++, 0);\\n  }\\n\\n  resetNewTemporaryRef() {\\n    \u002F\u002F Called once saving is finished.\\n    this._newTemporaryRefNum = null;\\n    if (this._persistentRefsCache) {\\n      for (const [num, obj] of this._persistentRefsCache) {\\n        this._cacheMap.set(num, obj);\\n      }\\n    }\\n    this._persistentRefsCache = null;\\n  }\\n\\n  setStartXRef(startXRef) {\\n    \u002F\u002F Store the starting positions of xref tables as we process them\\n    \u002F\u002F so we can recover from missing data errors\\n    this.startXRefQueue = [startXRef];\\n  }\\n\\n  parse(recoveryMode = false) {\\n    let trailerDict;\\n    if (!recoveryMode) {\\n      trailerDict = this.readXRef();\\n    } else {\\n      warn(\\\"Indexing all PDF objects\\\");\\n      trailerDict = this.indexObjects();\\n    }\\n    trailerDict.assignXref(this);\\n    this.trailer = trailerDict;\\n\\n    let encrypt;\\n    try {\\n      encrypt = trailerDict.get(\\\"Encrypt\\\");\\n    } catch (ex) {\\n      if (ex instanceof MissingDataException) {\\n        throw ex;\\n      }\\n      warn(`XRef.parse - Invalid \\\"Encrypt\\\" reference: \\\"${ex}\\\".`);\\n    }\\n    if (encrypt instanceof Dict) {\\n      const ids = trailerDict.get(\\\"ID\\\");\\n      const fileId = ids?.length ? ids[0] : \\\"\\\";\\n      \u002F\u002F The 'Encrypt' dictionary itself should not be encrypted, and by\\n      \u002F\u002F setting `suppressEncryption` we can prevent an infinite loop inside\\n      \u002F\u002F of `XRef_fetchUncompressed` if the dictionary contains indirect\\n      \u002F\u002F objects (fixes issue7665.pdf).\\n      encrypt.suppressEncryption = true;\\n      this.encrypt = new CipherTransformFactory(\\n        encrypt,\\n        fileId,\\n        this.pdfManager.password\\n      );\\n    }\\n\\n    \u002F\u002F Get the root dictionary (catalog) object, and do some basic validation.\\n    let root;\\n    try {\\n      root = trailerDict.get(\\\"Root\\\");\\n    } catch (ex) {\\n      if (ex instanceof MissingDataException) {\\n        throw ex;\\n      }\\n      warn(`XRef.parse - Invalid \\\"Root\\\" reference: \\\"${ex}\\\".`);\\n    }\\n    if (root instanceof Dict) {\\n      try {\\n        const pages = root.get(\\\"Pages\\\");\\n        if (pages instanceof Dict) {\\n          this.root = root;\\n          return;\\n        }\\n      } catch (ex) {\\n        if (ex instanceof MissingDataException) {\\n          throw ex;\\n        }\\n        warn(`XRef.parse - Invalid \\\"Pages\\\" reference: \\\"${ex}\\\".`);\\n      }\\n    }\\n\\n    if (!recoveryMode) {\\n      throw new XRefParseException();\\n    }\\n    \u002F\u002F Even recovery failed, there's nothing more we can do here.\\n    throw new InvalidPDFException(\\\"Invalid Root reference.\\\");\\n  }\\n\\n  processXRefTable(parser) {\\n    if (!(\\\"tableState\\\" in this)) {\\n      \u002F\u002F Stores state of the table as we process it so we can resume\\n      \u002F\u002F from middle of table in case of missing data error\\n      this.tableState = {\\n        entryNum: 0,\\n        streamPos: parser.lexer.stream.pos,\\n        parserBuf1: parser.buf1,\\n        parserBuf2: parser.buf2,\\n      };\\n    }\\n\\n    const obj = this.readXRefTable(parser);\\n\\n    \u002F\u002F Sanity check\\n    if (!isCmd(obj, \\\"trailer\\\")) {\\n      throw new FormatError(\\n        \\\"Invalid XRef table: could not find trailer dictionary\\\"\\n      );\\n    }\\n    \u002F\u002F Read trailer dictionary, e.g.\\n    \u002F\u002F trailer\\n    \u002F\u002F    \u003C\u003C \u002FSize 22\\n    \u002F\u002F      \u002FRoot 20R\\n    \u002F\u002F      \u002FInfo 10R\\n    \u002F\u002F      \u002FID [ \u003C81b14aafa313db63dbd6f981e49f94f4> ]\\n    \u002F\u002F    >>\\n    \u002F\u002F The parser goes through the entire stream \u003C\u003C ... >> and provides\\n    \u002F\u002F a getter interface for the key-value table\\n    let dict = parser.getObj();\\n\\n    \u002F\u002F The pdflib PDF generator can generate a nested trailer dictionary\\n    if (!(dict instanceof Dict) && dict.dict) {\\n      dict = dict.dict;\\n    }\\n    if (!(dict instanceof Dict)) {\\n      throw new FormatError(\\n        \\\"Invalid XRef table: could not parse trailer dictionary\\\"\\n      );\\n    }\\n    delete this.tableState;\\n\\n    return dict;\\n  }\\n\\n  readXRefTable(parser) {\\n    \u002F\u002F Example of cross-reference table:\\n    \u002F\u002F xref\\n    \u002F\u002F 0 1                    \u003C-- subsection header (first obj #, obj count)\\n    \u002F\u002F 0000000000 65535 f     \u003C-- actual object (offset, generation #, f\u002Fn)\\n    \u002F\u002F 23 2                   \u003C-- subsection header ... and so on ...\\n    \u002F\u002F 0000025518 00002 n\\n    \u002F\u002F 0000025635 00000 n\\n    \u002F\u002F trailer\\n    \u002F\u002F ...\\n\\n    const stream = parser.lexer.stream;\\n    const tableState = this.tableState;\\n    stream.pos = tableState.streamPos;\\n    parser.buf1 = tableState.parserBuf1;\\n    parser.buf2 = tableState.parserBuf2;\\n\\n    \u002F\u002F Outer loop is over subsection headers\\n    let obj;\\n\\n    while (true) {\\n      if (!(\\\"firstEntryNum\\\" in tableState) || !(\\\"entryCount\\\" in tableState)) {\\n        if (isCmd((obj = parser.getObj()), \\\"trailer\\\")) {\\n          break;\\n        }\\n        tableState.firstEntryNum = obj;\\n        tableState.entryCount = parser.getObj();\\n      }\\n\\n      let first = tableState.firstEntryNum;\\n      const count = tableState.entryCount;\\n      if (!Number.isInteger(first) || !Number.isInteger(count)) {\\n        throw new FormatError(\\n          \\\"Invalid XRef table: wrong types in subsection header\\\"\\n        );\\n      }\\n      \u002F\u002F Inner loop is over objects themselves\\n      for (let i = tableState.entryNum; i \u003C count; i++) {\\n        tableState.streamPos = stream.pos;\\n        tableState.entryNum = i;\\n        tableState.parserBuf1 = parser.buf1;\\n        tableState.parserBuf2 = parser.buf2;\\n\\n        const entry = {};\\n        entry.offset = parser.getObj();\\n        entry.gen = parser.getObj();\\n        const type = parser.getObj();\\n\\n        if (type instanceof Cmd) {\\n          switch (type.cmd) {\\n            case \\\"f\\\":\\n              entry.free = true;\\n              break;\\n            case \\\"n\\\":\\n              entry.uncompressed = true;\\n              break;\\n          }\\n        }\\n\\n        \u002F\u002F Validate entry obj\\n        if (\\n          !Number.isInteger(entry.offset) ||\\n          !Number.isInteger(entry.gen) ||\\n          !(entry.free || entry.uncompressed)\\n        ) {\\n          throw new FormatError(\\n            `Invalid entry in XRef subsection: ${first}, ${count}`\\n          );\\n        }\\n\\n        \u002F\u002F The first xref table entry, i.e. obj 0, should be free. Attempting\\n        \u002F\u002F to adjust an incorrect first obj # (fixes issue 3248 and 7229).\\n        if (i === 0 && entry.free && first === 1) {\\n          first = 0;\\n        }\\n\\n        if (!this.entries[i + first]) {\\n          this.entries[i + first] = entry;\\n        }\\n      }\\n\\n      tableState.entryNum = 0;\\n      tableState.streamPos = stream.pos;\\n      tableState.parserBuf1 = parser.buf1;\\n      tableState.parserBuf2 = parser.buf2;\\n      delete tableState.firstEntryNum;\\n      delete tableState.entryCount;\\n    }\\n\\n    \u002F\u002F Sanity check: as per spec, first object must be free\\n    if (this.entries[0] && !this.entries[0].free) {\\n      throw new FormatError(\\\"Invalid XRef table: unexpected first object\\\");\\n    }\\n    return obj;\\n  }\\n\\n  processXRefStream(stream) {\\n    if (!(\\\"streamState\\\" in this)) {\\n      \u002F\u002F Stores state of the stream as we process it so we can resume\\n      \u002F\u002F from middle of stream in case of missing data error\\n      const { dict, pos } = stream;\\n      const byteWidths = dict.get(\\\"W\\\");\\n      const range = dict.get(\\\"Index\\\") || [0, dict.get(\\\"Size\\\")];\\n\\n      this.streamState = {\\n        entryRanges: range,\\n        byteWidths,\\n        entryNum: 0,\\n        streamPos: pos,\\n      };\\n    }\\n    this.readXRefStream(stream);\\n    delete this.streamState;\\n\\n    return stream.dict;\\n  }\\n\\n  readXRefStream(stream) {\\n    const streamState = this.streamState;\\n    stream.pos = streamState.streamPos;\\n\\n    const [typeFieldWidth, offsetFieldWidth, generationFieldWidth] =\\n      streamState.byteWidths;\\n\\n    const entryRanges = streamState.entryRanges;\\n    while (entryRanges.length > 0) {\\n      const [first, n] = entryRanges;\\n\\n      if (!Number.isInteger(first) || !Number.isInteger(n)) {\\n        throw new FormatError(`Invalid XRef range fields: ${first}, ${n}`);\\n      }\\n      if (\\n        !Number.isInteger(typeFieldWidth) ||\\n        !Number.isInteger(offsetFieldWidth) ||\\n        !Number.isInteger(generationFieldWidth)\\n      ) {\\n        throw new FormatError(\\n          `Invalid XRef entry fields length: ${first}, ${n}`\\n        );\\n      }\\n      for (let i = streamState.entryNum; i \u003C n; ++i) {\\n        streamState.entryNum = i;\\n        streamState.streamPos = stream.pos;\\n\\n        let type = 0,\\n          offset = 0,\\n          generation = 0;\\n        for (let j = 0; j \u003C typeFieldWidth; ++j) {\\n          const typeByte = stream.getByte();\\n          if (typeByte === -1) {\\n            throw new FormatError(\\\"Invalid XRef byteWidths 'type'.\\\");\\n          }\\n          type = (type \u003C\u003C 8) | typeByte;\\n        }\\n        \u002F\u002F if type field is absent, its default value is 1\\n        if (typeFieldWidth === 0) {\\n          type = 1;\\n        }\\n        for (let j = 0; j \u003C offsetFieldWidth; ++j) {\\n          const offsetByte = stream.getByte();\\n          if (offsetByte === -1) {\\n            throw new FormatError(\\\"Invalid XRef byteWidths 'offset'.\\\");\\n          }\\n          offset = (offset \u003C\u003C 8) | offsetByte;\\n        }\\n        for (let j = 0; j \u003C generationFieldWidth; ++j) {\\n          const generationByte = stream.getByte();\\n          if (generationByte === -1) {\\n            throw new FormatError(\\\"Invalid XRef byteWidths 'generation'.\\\");\\n          }\\n          generation = (generation \u003C\u003C 8) | generationByte;\\n        }\\n        const entry = {};\\n        entry.offset = offset;\\n        entry.gen = generation;\\n        switch (type) {\\n          case 0:\\n            entry.free = true;\\n            break;\\n          case 1:\\n            entry.uncompressed = true;\\n            break;\\n          case 2:\\n            break;\\n          default:\\n            throw new FormatError(`Invalid XRef entry type: ${type}`);\\n        }\\n        if (!this.entries[first + i]) {\\n          this.entries[first + i] = entry;\\n        }\\n      }\\n\\n      streamState.entryNum = 0;\\n      streamState.streamPos = stream.pos;\\n      entryRanges.splice(0, 2);\\n    }\\n  }\\n\\n  indexObjects() {\\n    \u002F\u002F Simple scan through the PDF content to find objects,\\n    \u002F\u002F trailers and XRef streams.\\n    const TAB = 0x9,\\n      LF = 0xa,\\n      CR = 0xd,\\n      SPACE = 0x20;\\n    const PERCENT = 0x25,\\n      LT = 0x3c;\\n\\n    function readToken(data, offset) {\\n      let token = \\\"\\\",\\n        ch = data[offset];\\n      while (ch !== LF && ch !== CR && ch !== LT) {\\n        if (++offset >= data.length) {\\n          break;\\n        }\\n        token += String.fromCharCode(ch);\\n        ch = data[offset];\\n      }\\n      return token;\\n    }\\n    function skipUntil(data, offset, what) {\\n      const length = what.length,\\n        dataLength = data.length;\\n      let skipped = 0;\\n      \u002F\u002F finding byte sequence\\n      while (offset \u003C dataLength) {\\n        let i = 0;\\n        while (i \u003C length && data[offset + i] === what[i]) {\\n          ++i;\\n        }\\n        if (i >= length) {\\n          break; \u002F\u002F sequence found\\n        }\\n        offset++;\\n        skipped++;\\n      }\\n      return skipped;\\n    }\\n    const gEndobjRegExp = \u002F\\\\b(endobj|\\\\d+\\\\s+\\\\d+\\\\s+obj|xref|trailer\\\\s*\u003C\u003C)\\\\b\u002Fg;\\n    const gStartxrefRegExp = \u002F\\\\b(startxref|\\\\d+\\\\s+\\\\d+\\\\s+obj)\\\\b\u002Fg;\\n    const objRegExp = \u002F^(\\\\d+)\\\\s+(\\\\d+)\\\\s+obj\\\\b\u002F;\\n\\n    const trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);\\n    const startxrefBytes = new Uint8Array([\\n      115, 116, 97, 114, 116, 120, 114, 101, 102,\\n    ]);\\n    const xrefBytes = new Uint8Array([47, 88, 82, 101, 102]);\\n\\n    \u002F\u002F Clear out any existing entries, since they may be bogus.\\n    this.entries.length = 0;\\n    this._cacheMap.clear();\\n\\n    const stream = this.stream;\\n    stream.pos = 0;\\n    const buffer = stream.getBytes(),\\n      bufferStr = bytesToString(buffer),\\n      length = buffer.length;\\n    let position = stream.start;\\n    const trailers = [],\\n      xrefStms = [];\\n    while (position \u003C length) {\\n      let ch = buffer[position];\\n      if (ch === TAB || ch === LF || ch === CR || ch === SPACE) {\\n        ++position;\\n        continue;\\n      }\\n      if (ch === PERCENT) {\\n        \u002F\u002F %-comment\\n        do {\\n          ++position;\\n          if (position >= length) {\\n            break;\\n          }\\n          ch = buffer[position];\\n        } while (ch !== LF && ch !== CR);\\n        continue;\\n      }\\n      const token = readToken(buffer, position);\\n      let m;\\n      if (\\n        token.startsWith(\\\"xref\\\") &&\\n        (token.length === 4 || \u002F\\\\s\u002F.test(token[4]))\\n      ) {\\n        position += skipUntil(buffer, position, trailerBytes);\\n        trailers.push(position);\\n        position += skipUntil(buffer, position, startxrefBytes);\\n      } else if ((m = objRegExp.exec(token))) {\\n        const num = m[1] | 0,\\n          gen = m[2] | 0;\\n\\n        const startPos = position + token.length;\\n        let contentLength,\\n          updateEntries = false;\\n        if (!this.entries[num]) {\\n          updateEntries = true;\\n        } else if (this.entries[num].gen === gen) {\\n          \u002F\u002F Before overwriting an existing entry, ensure that the new one won't\\n          \u002F\u002F cause *immediate* errors when it's accessed (fixes issue13783.pdf).\\n          try {\\n            const parser = new Parser({\\n              lexer: new Lexer(stream.makeSubStream(startPos)),\\n            });\\n            parser.getObj();\\n            updateEntries = true;\\n          } catch (ex) {\\n            if (ex instanceof ParserEOFException) {\\n              warn(`indexObjects -- checking object (${token}): \\\"${ex}\\\".`);\\n            } else {\\n              \u002F\u002F The error may come from the `Parser`-instance being initialized\\n              \u002F\u002F without an `XRef`-instance (we don't have a usable one yet).\\n              updateEntries = true;\\n            }\\n          }\\n        }\\n        if (updateEntries) {\\n          this.entries[num] = {\\n            offset: position - stream.start,\\n            gen,\\n            uncompressed: true,\\n          };\\n        }\\n\\n        \u002F\u002F Find the next \\\"obj\\\" string, rather than \\\"endobj\\\", to ensure that\\n        \u002F\u002F we won't skip over a new 'obj' operator in corrupt files where\\n        \u002F\u002F 'endobj' operators are missing (fixes issue9105_reduced.pdf).\\n        gEndobjRegExp.lastIndex = startPos;\\n        const match = gEndobjRegExp.exec(bufferStr);\\n\\n        if (match) {\\n          const endPos = gEndobjRegExp.lastIndex + 1;\\n          contentLength = endPos - position;\\n\\n          if (match[1] !== \\\"endobj\\\") {\\n            warn(\\n              `indexObjects: Found \\\"${match[1]}\\\" inside of another \\\"obj\\\", ` +\\n                'caused by missing \\\"endobj\\\" -- trying to recover.'\\n            );\\n            contentLength -= match[1].length + 1;\\n          }\\n        } else {\\n          contentLength = length - position;\\n        }\\n        const content = buffer.subarray(position, position + contentLength);\\n\\n        \u002F\u002F checking XRef stream suspect\\n        \u002F\u002F (it shall have '\u002FXRef' and next char is not a letter)\\n        const xrefTagOffset = skipUntil(content, 0, xrefBytes);\\n        if (xrefTagOffset \u003C contentLength && content[xrefTagOffset + 5] \u003C 64) {\\n          xrefStms.push(position - stream.start);\\n          this._xrefStms.add(position - stream.start); \u002F\u002F Avoid recursion\\n        }\\n\\n        position += contentLength;\\n      } else if (\\n        token.startsWith(\\\"trailer\\\") &&\\n        (token.length === 7 || \u002F\\\\s\u002F.test(token[7]))\\n      ) {\\n        trailers.push(position);\\n\\n        const startPos = position + token.length;\\n        let contentLength;\\n        \u002F\u002F Attempt to handle (some) corrupt documents, where no 'startxref'\\n        \u002F\u002F operators are present (fixes issue15590.pdf).\\n        gStartxrefRegExp.lastIndex = startPos;\\n        const match = gStartxrefRegExp.exec(bufferStr);\\n\\n        if (match) {\\n          const endPos = gStartxrefRegExp.lastIndex + 1;\\n          contentLength = endPos - position;\\n\\n          if (match[1] !== \\\"startxref\\\") {\\n            warn(\\n              `indexObjects: Found \\\"${match[1]}\\\" after \\\"trailer\\\", ` +\\n                'caused by missing \\\"startxref\\\" -- trying to recover.'\\n            );\\n            contentLength -= match[1].length + 1;\\n          }\\n        } else {\\n          contentLength = length - position;\\n        }\\n        position += contentLength;\\n      } else {\\n        position += token.length + 1;\\n      }\\n    }\\n    \u002F\u002F reading XRef streams\\n    for (const xrefStm of xrefStms) {\\n      this.startXRefQueue.push(xrefStm);\\n      this.readXRef(\u002F* recoveryMode *\u002F true);\\n    }\\n\\n    const trailerDicts = [];\\n    \u002F\u002F Pre-parsing the trailers to check if the document is possibly encrypted.\\n    let isEncrypted = false;\\n    for (const trailer of trailers) {\\n      stream.pos = trailer;\\n      const parser = new Parser({\\n        lexer: new Lexer(stream),\\n        xref: this,\\n        allowStreams: true,\\n        recoveryMode: true,\\n      });\\n      const obj = parser.getObj();\\n      if (!isCmd(obj, \\\"trailer\\\")) {\\n        continue;\\n      }\\n      \u002F\u002F read the trailer dictionary\\n      const dict = parser.getObj();\\n      if (!(dict instanceof Dict)) {\\n        continue;\\n      }\\n      trailerDicts.push(dict);\\n\\n      if (dict.has(\\\"Encrypt\\\")) {\\n        isEncrypted = true;\\n      }\\n    }\\n\\n    \u002F\u002F finding main trailer\\n    let trailerDict, trailerError;\\n    for (const dict of [...trailerDicts, \\\"genFallback\\\", ...trailerDicts]) {\\n      if (dict === \\\"genFallback\\\") {\\n        if (!trailerError) {\\n          break; \u002F\u002F No need to fallback if there were no validation errors.\\n        }\\n        this._generationFallback = true;\\n        continue;\\n      }\\n      \u002F\u002F Do some basic validation of the trailer\u002Froot dictionary candidate.\\n      let validPagesDict = false;\\n      try {\\n        const rootDict = dict.get(\\\"Root\\\");\\n        if (!(rootDict instanceof Dict)) {\\n          continue;\\n        }\\n        const pagesDict = rootDict.get(\\\"Pages\\\");\\n        if (!(pagesDict instanceof Dict)) {\\n          continue;\\n        }\\n        const pagesCount = pagesDict.get(\\\"Count\\\");\\n        if (Number.isInteger(pagesCount)) {\\n          validPagesDict = true;\\n        }\\n        \u002F\u002F The top-level \u002FPages dictionary isn't obviously corrupt.\\n      } catch (ex) {\\n        trailerError = ex;\\n        continue;\\n      }\\n      \u002F\u002F taking the first one with 'ID'\\n      if (\\n        validPagesDict &&\\n        (!isEncrypted || dict.has(\\\"Encrypt\\\")) &&\\n        dict.has(\\\"ID\\\")\\n      ) {\\n        return dict;\\n      }\\n      \u002F\u002F The current dictionary is a candidate, but continue searching.\\n      trailerDict = dict;\\n    }\\n    \u002F\u002F No trailer with 'ID', taking last one (if exists).\\n    if (trailerDict) {\\n      return trailerDict;\\n    }\\n    \u002F\u002F No trailer dictionary found, taking the \\\"top\\\"-dictionary (if exists).\\n    if (this.topDict) {\\n      return this.topDict;\\n    }\\n\\n    \u002F\u002F When no trailer dictionary candidate exists, try picking the first\\n    \u002F\u002F dictionary that contains a \u002FRoot entry (fixes issue18986.pdf).\\n    if (!trailerDicts.length) {\\n      for (const [num, entry] of this.entries.entries()) {\\n        if (!entry) {\\n          continue;\\n        }\\n        const ref = Ref.get(num, entry.gen);\\n        let obj;\\n\\n        try {\\n          obj = this.fetch(ref);\\n        } catch {\\n          continue;\\n        }\\n        if (obj instanceof BaseStream) {\\n          obj = obj.dict;\\n        }\\n        if (obj instanceof Dict && obj.has(\\\"Root\\\")) {\\n          return obj;\\n        }\\n      }\\n    }\\n\\n    \u002F\u002F nothing helps\\n    throw new InvalidPDFException(\\\"Invalid PDF structure.\\\");\\n  }\\n\\n  readXRef(recoveryMode = false) {\\n    const stream = this.stream;\\n    \u002F\u002F Keep track of already parsed XRef tables, to prevent an infinite loop\\n    \u002F\u002F when parsing corrupt PDF files where e.g. the \u002FPrev entries create a\\n    \u002F\u002F circular dependency between tables (fixes bug1393476.pdf).\\n    const startXRefParsedCache = new Set();\\n\\n    while (this.startXRefQueue.length) {\\n      try {\\n        const startXRef = this.startXRefQueue[0];\\n\\n        if (startXRefParsedCache.has(startXRef)) {\\n          warn(\\\"readXRef - skipping XRef table since it was already parsed.\\\");\\n          this.startXRefQueue.shift();\\n          continue;\\n        }\\n        startXRefParsedCache.add(startXRef);\\n\\n        stream.pos = startXRef + stream.start;\\n\\n        const parser = new Parser({\\n          lexer: new Lexer(stream),\\n          xref: this,\\n          allowStreams: true,\\n        });\\n        let obj = parser.getObj();\\n        let dict;\\n\\n        \u002F\u002F Get dictionary\\n        if (isCmd(obj, \\\"xref\\\")) {\\n          \u002F\u002F Parse end-of-file XRef\\n          dict = this.processXRefTable(parser);\\n          if (!this.topDict) {\\n            this.topDict = dict;\\n          }\\n\\n          \u002F\u002F Recursively get other XRefs 'XRefStm', if any\\n          obj = dict.get(\\\"XRefStm\\\");\\n          if (Number.isInteger(obj) && !this._xrefStms.has(obj)) {\\n            \u002F\u002F ignore previously loaded xref streams\\n            \u002F\u002F (possible infinite recursion)\\n            this._xrefStms.add(obj);\\n            this.startXRefQueue.push(obj);\\n            this.#firstXRefStmPos ??= obj;\\n          }\\n        } else if (Number.isInteger(obj)) {\\n          \u002F\u002F Parse in-stream XRef\\n          if (\\n            !Number.isInteger(parser.getObj()) ||\\n            !isCmd(parser.getObj(), \\\"obj\\\") ||\\n            !((obj = parser.getObj()) instanceof BaseStream)\\n          ) {\\n            throw new FormatError(\\\"Invalid XRef stream\\\");\\n          }\\n          dict = this.processXRefStream(obj);\\n          if (!this.topDict) {\\n            this.topDict = dict;\\n          }\\n          if (!dict) {\\n            throw new FormatError(\\\"Failed to read XRef stream\\\");\\n          }\\n        } else {\\n          throw new FormatError(\\\"Invalid XRef stream header\\\");\\n        }\\n\\n        \u002F\u002F Recursively get previous dictionary, if any\\n        obj = dict.get(\\\"Prev\\\");\\n        if (Number.isInteger(obj)) {\\n          this.startXRefQueue.push(obj);\\n        } else if (obj instanceof Ref) {\\n          \u002F\u002F The spec says Prev must not be a reference, i.e. \\\"\u002FPrev NNN\\\"\\n          \u002F\u002F This is a fallback for non-compliant PDFs, i.e. \\\"\u002FPrev NNN 0 R\\\"\\n          this.startXRefQueue.push(obj.num);\\n        }\\n      } catch (e) {\\n        if (e instanceof MissingDataException) {\\n          throw e;\\n        }\\n        info(\\\"(while reading XRef): \\\" + e);\\n      }\\n      this.startXRefQueue.shift();\\n    }\\n\\n    if (this.topDict) {\\n      return this.topDict;\\n    }\\n    if (recoveryMode) {\\n      return undefined;\\n    }\\n    throw new XRefParseException();\\n  }\\n\\n  get lastXRefStreamPos() {\\n    return (\\n      this.#firstXRefStmPos ??\\n      (this._xrefStms.size > 0 ? Math.max(...this._xrefStms) : null)\\n    );\\n  }\\n\\n  getEntry(i) {\\n    const xrefEntry = this.entries[i];\\n    if (xrefEntry && !xrefEntry.free && xrefEntry.offset) {\\n      return xrefEntry;\\n    }\\n    return null;\\n  }\\n\\n  fetchIfRef(obj, suppressEncryption = false) {\\n    if (obj instanceof Ref) {\\n      return this.fetch(obj, suppressEncryption);\\n    }\\n    return obj;\\n  }\\n\\n  fetch(ref, suppressEncryption = false) {\\n    if (!(ref instanceof Ref)) {\\n      throw new Error(\\\"ref object is not a reference\\\");\\n    }\\n    const num = ref.num;\\n\\n    \u002F\u002F The XRef cache is populated with objects which are obtained through\\n    \u002F\u002F `Parser.getObj`, and indirectly via `Lexer.getObj`. Neither of these\\n    \u002F\u002F methods should ever return `undefined` (note the `assert` calls below).\\n    const cacheEntry = this._cacheMap.get(num);\\n    if (cacheEntry !== undefined) {\\n      \u002F\u002F In documents with Object Streams, it's possible that cached `Dict`s\\n      \u002F\u002F have not been assigned an `objId` yet (see e.g. issue3115r.pdf).\\n      if (cacheEntry instanceof Dict && !cacheEntry.objId) {\\n        cacheEntry.objId = ref.toString();\\n      }\\n      return cacheEntry;\\n    }\\n    let xrefEntry = this.getEntry(num);\\n\\n    if (xrefEntry === null) {\\n      \u002F\u002F The referenced entry can be free.\\n      return xrefEntry;\\n    }\\n    \u002F\u002F Prevent circular references, in corrupt PDF documents, from hanging the\\n    \u002F\u002F worker-thread. This relies, implicitly, on the parsing being synchronous.\\n    if (this._pendingRefs.has(ref)) {\\n      this._pendingRefs.remove(ref);\\n\\n      warn(`Ignoring circular reference: ${ref}.`);\\n      return CIRCULAR_REF;\\n    }\\n    this._pendingRefs.put(ref);\\n\\n    try {\\n      xrefEntry = xrefEntry.uncompressed\\n        ? this.fetchUncompressed(ref, xrefEntry, suppressEncryption)\\n        : this.fetchCompressed(ref, xrefEntry, suppressEncryption);\\n      this._pendingRefs.remove(ref);\\n    } catch (ex) {\\n      this._pendingRefs.remove(ref);\\n      throw ex;\\n    }\\n    if (xrefEntry instanceof Dict) {\\n      xrefEntry.objId = ref.toString();\\n    } else if (xrefEntry instanceof BaseStream) {\\n      xrefEntry.dict.objId = ref.toString();\\n    }\\n    return xrefEntry;\\n  }\\n\\n  fetchUncompressed(ref, xrefEntry, suppressEncryption = false) {\\n    const gen = ref.gen;\\n    let num = ref.num;\\n    if (xrefEntry.gen !== gen) {\\n      const msg = `Inconsistent generation in XRef: ${ref}`;\\n      \u002F\u002F Try falling back to a *previous* generation (fixes issue15577.pdf).\\n      if (this._generationFallback && xrefEntry.gen \u003C gen) {\\n        warn(msg);\\n        return this.fetchUncompressed(\\n          Ref.get(num, xrefEntry.gen),\\n          xrefEntry,\\n          suppressEncryption\\n        );\\n      }\\n      throw new XRefEntryException(msg);\\n    }\\n    const stream = this.stream.makeSubStream(\\n      xrefEntry.offset + this.stream.start\\n    );\\n    const parser = new Parser({\\n      lexer: new Lexer(stream),\\n      xref: this,\\n      allowStreams: true,\\n    });\\n    const obj1 = parser.getObj();\\n    const obj2 = parser.getObj();\\n    const obj3 = parser.getObj();\\n\\n    if (obj1 !== num || obj2 !== gen || !(obj3 instanceof Cmd)) {\\n      throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\\n    }\\n    if (obj3.cmd !== \\\"obj\\\") {\\n      \u002F\u002F some bad PDFs use \\\"obj1234\\\" and really mean 1234\\n      if (obj3.cmd.startsWith(\\\"obj\\\")) {\\n        num = parseInt(obj3.cmd.substring(3), 10);\\n        if (!Number.isNaN(num)) {\\n          return num;\\n        }\\n      }\\n      throw new XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\\n    }\\n    xrefEntry =\\n      this.encrypt && !suppressEncryption\\n        ? parser.getObj(this.encrypt.createCipherTransform(num, gen))\\n        : parser.getObj();\\n    if (!(xrefEntry instanceof BaseStream)) {\\n      if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n        assert(\\n          xrefEntry !== undefined,\\n          'fetchUncompressed: The \\\"xrefEntry\\\" cannot be undefined.'\\n        );\\n      }\\n      this._cacheMap.set(num, xrefEntry);\\n    }\\n    return xrefEntry;\\n  }\\n\\n  fetchCompressed(ref, xrefEntry, suppressEncryption = false) {\\n    const tableOffset = xrefEntry.offset;\\n    const stream = this.fetch(Ref.get(tableOffset, 0));\\n    if (!(stream instanceof BaseStream)) {\\n      throw new FormatError(\\\"bad ObjStm stream\\\");\\n    }\\n    const first = stream.dict.get(\\\"First\\\");\\n    const n = stream.dict.get(\\\"N\\\");\\n    if (!Number.isInteger(first) || !Number.isInteger(n)) {\\n      throw new FormatError(\\\"invalid first and n parameters for ObjStm stream\\\");\\n    }\\n    let parser = new Parser({\\n      lexer: new Lexer(stream),\\n      xref: this,\\n      allowStreams: true,\\n    });\\n    const nums = new Array(n);\\n    const offsets = new Array(n);\\n    \u002F\u002F read the object numbers to populate cache\\n    for (let i = 0; i \u003C n; ++i) {\\n      const num = parser.getObj();\\n      if (!Number.isInteger(num)) {\\n        throw new FormatError(\\n          `invalid object number in the ObjStm stream: ${num}`\\n        );\\n      }\\n      const offset = parser.getObj();\\n      if (!Number.isInteger(offset)) {\\n        throw new FormatError(\\n          `invalid object offset in the ObjStm stream: ${offset}`\\n        );\\n      }\\n      nums[i] = num;\\n      offsets[i] = offset;\\n    }\\n\\n    const start = (stream.start || 0) + first;\\n    const entries = new Array(n);\\n    \u002F\u002F read stream objects for cache\\n    for (let i = 0; i \u003C n; ++i) {\\n      const length = i \u003C n - 1 ? offsets[i + 1] - offsets[i] : undefined;\\n      if (length \u003C 0) {\\n        throw new FormatError(\\\"Invalid offset in the ObjStm stream.\\\");\\n      }\\n      parser = new Parser({\\n        lexer: new Lexer(\\n          stream.makeSubStream(start + offsets[i], length, stream.dict)\\n        ),\\n        xref: this,\\n        allowStreams: true,\\n      });\\n\\n      const obj = parser.getObj();\\n      entries[i] = obj;\\n      if (obj instanceof BaseStream) {\\n        continue;\\n      }\\n      const num = nums[i],\\n        entry = this.entries[num];\\n      if (entry && entry.offset === tableOffset && entry.gen === i) {\\n        if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n          assert(\\n            obj !== undefined,\\n            'fetchCompressed: The \\\"obj\\\" cannot be undefined.'\\n          );\\n        }\\n        this._cacheMap.set(num, obj);\\n      }\\n    }\\n    xrefEntry = entries[xrefEntry.gen];\\n    if (xrefEntry === undefined) {\\n      throw new XRefEntryException(`Bad (compressed) XRef entry: ${ref}`);\\n    }\\n    return xrefEntry;\\n  }\\n\\n  async fetchIfRefAsync(obj, suppressEncryption) {\\n    if (obj instanceof Ref) {\\n      return this.fetchAsync(obj, suppressEncryption);\\n    }\\n    return obj;\\n  }\\n\\n  async fetchAsync(ref, suppressEncryption) {\\n    try {\\n      return this.fetch(ref, suppressEncryption);\\n    } catch (ex) {\\n      if (!(ex instanceof MissingDataException)) {\\n        throw ex;\\n      }\\n      await this.pdfManager.requestRange(ex.begin, ex.end);\\n      return this.fetchAsync(ref, suppressEncryption);\\n    }\\n  }\\n\\n  getCatalogObj() {\\n    return this.root;\\n  }\\n}\\n\\nexport { XRef };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  AnnotationEditorPrefix,\\n  assert,\\n  FormatError,\\n  info,\\n  InvalidPDFException,\\n  isArrayEqual,\\n  objectSize,\\n  PageActionEventType,\\n  RenderingIntentFlag,\\n  shadow,\\n  stringToBytes,\\n  stringToPDFString,\\n  stringToUTF8String,\\n  toHexUtil,\\n  unreachable,\\n  Util,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  AnnotationFactory,\\n  PopupAnnotation,\\n  WidgetAnnotation,\\n} from \\\".\u002Fannotation.js\\\";\\nimport {\\n  collectActions,\\n  getInheritableProperty,\\n  getNewAnnotationsMap,\\n  isWhiteSpace,\\n  lookupNormalRect,\\n  MissingDataException,\\n  PDF_VERSION_REGEXP,\\n  RESOURCES_KEYS_OPERATOR_LIST,\\n  RESOURCES_KEYS_TEXT_CONTENT,\\n  validateCSSFont,\\n  XRefEntryException,\\n  XRefParseException,\\n} from \\\".\u002Fcore_utils.js\\\";\\nimport {\\n  Dict,\\n  isName,\\n  isRefsEqual,\\n  Name,\\n  Ref,\\n  RefSet,\\n  RefSetCache,\\n} from \\\".\u002Fprimitives.js\\\";\\nimport { getXfaFontDict, getXfaFontName } from \\\".\u002Fxfa_fonts.js\\\";\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { calculateMD5 } from \\\".\u002Fcalculate_md5.js\\\";\\nimport { Catalog } from \\\".\u002Fcatalog.js\\\";\\nimport { clearGlobalCaches } from \\\".\u002Fcleanup_helper.js\\\";\\nimport { DatasetReader } from \\\".\u002Fdataset_reader.js\\\";\\nimport { Linearization } from \\\".\u002Fparser.js\\\";\\nimport { NullStream } from \\\".\u002Fstream.js\\\";\\nimport { ObjectLoader } from \\\".\u002Fobject_loader.js\\\";\\nimport { OperatorList } from \\\".\u002Foperator_list.js\\\";\\nimport { PartialEvaluator } from \\\".\u002Fevaluator.js\\\";\\nimport { StreamsSequenceStream } from \\\".\u002Fdecode_stream.js\\\";\\nimport { StructTreePage } from \\\".\u002Fstruct_tree.js\\\";\\nimport { XFAFactory } from \\\".\u002Fxfa\u002Ffactory.js\\\";\\nimport { XRef } from \\\".\u002Fxref.js\\\";\\n\\nconst LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];\\n\\nclass Page {\\n  #resourcesPromise = null;\\n\\n  constructor({\\n    pdfManager,\\n    xref,\\n    pageIndex,\\n    pageDict,\\n    ref,\\n    globalIdFactory,\\n    fontCache,\\n    builtInCMapCache,\\n    standardFontDataCache,\\n    globalColorSpaceCache,\\n    globalImageCache,\\n    systemFontCache,\\n    nonBlendModesSet,\\n    xfaFactory,\\n  }) {\\n    this.pdfManager = pdfManager;\\n    this.pageIndex = pageIndex;\\n    this.pageDict = pageDict;\\n    this.xref = xref;\\n    this.ref = ref;\\n    this.fontCache = fontCache;\\n    this.builtInCMapCache = builtInCMapCache;\\n    this.standardFontDataCache = standardFontDataCache;\\n    this.globalColorSpaceCache = globalColorSpaceCache;\\n    this.globalImageCache = globalImageCache;\\n    this.systemFontCache = systemFontCache;\\n    this.nonBlendModesSet = nonBlendModesSet;\\n    this.evaluatorOptions = pdfManager.evaluatorOptions;\\n    this.xfaFactory = xfaFactory;\\n\\n    const idCounters = {\\n      obj: 0,\\n    };\\n    this._localIdFactory = class extends globalIdFactory {\\n      static createObjId() {\\n        return `p${pageIndex}_${++idCounters.obj}`;\\n      }\\n\\n      static getPageObjId() {\\n        return `p${ref.toString()}`;\\n      }\\n    };\\n  }\\n\\n  #createPartialEvaluator(handler) {\\n    return new PartialEvaluator({\\n      xref: this.xref,\\n      handler,\\n      pageIndex: this.pageIndex,\\n      idFactory: this._localIdFactory,\\n      fontCache: this.fontCache,\\n      builtInCMapCache: this.builtInCMapCache,\\n      standardFontDataCache: this.standardFontDataCache,\\n      globalColorSpaceCache: this.globalColorSpaceCache,\\n      globalImageCache: this.globalImageCache,\\n      systemFontCache: this.systemFontCache,\\n      options: this.evaluatorOptions,\\n    });\\n  }\\n\\n  #getInheritableProperty(key, getArray = false) {\\n    const value = getInheritableProperty({\\n      dict: this.pageDict,\\n      key,\\n      getArray,\\n      stopWhenFound: false,\\n    });\\n    if (!Array.isArray(value)) {\\n      return value;\\n    }\\n    if (value.length === 1 || !(value[0] instanceof Dict)) {\\n      return value[0];\\n    }\\n    return Dict.merge({ xref: this.xref, dictArray: value });\\n  }\\n\\n  get content() {\\n    return this.pageDict.getArray(\\\"Contents\\\");\\n  }\\n\\n  get resources() {\\n    \u002F\u002F For robustness: The spec states that a \\\\Resources entry has to be\\n    \u002F\u002F present, but can be empty. Some documents still omit it; in this case\\n    \u002F\u002F we return an empty dictionary.\\n    const resources = this.#getInheritableProperty(\\\"Resources\\\");\\n\\n    return shadow(\\n      this,\\n      \\\"resources\\\",\\n      resources instanceof Dict ? resources : Dict.empty\\n    );\\n  }\\n\\n  #getBoundingBox(name) {\\n    if (this.xfaData) {\\n      return this.xfaData.bbox;\\n    }\\n    const box = lookupNormalRect(\\n      this.#getInheritableProperty(name, \u002F* getArray = *\u002F true),\\n      null\\n    );\\n\\n    if (box) {\\n      if (box[2] - box[0] > 0 && box[3] - box[1] > 0) {\\n        return box;\\n      }\\n      warn(`Empty, or invalid, \u002F${name} entry.`);\\n    }\\n    return null;\\n  }\\n\\n  get mediaBox() {\\n    \u002F\u002F Reset invalid media box to letter size.\\n    return shadow(\\n      this,\\n      \\\"mediaBox\\\",\\n      this.#getBoundingBox(\\\"MediaBox\\\") || LETTER_SIZE_MEDIABOX\\n    );\\n  }\\n\\n  get cropBox() {\\n    \u002F\u002F Reset invalid crop box to media box.\\n    return shadow(\\n      this,\\n      \\\"cropBox\\\",\\n      this.#getBoundingBox(\\\"CropBox\\\") || this.mediaBox\\n    );\\n  }\\n\\n  get userUnit() {\\n    const obj = this.pageDict.get(\\\"UserUnit\\\");\\n    return shadow(\\n      this,\\n      \\\"userUnit\\\",\\n      typeof obj === \\\"number\\\" && obj > 0 ? obj : 1.0\\n    );\\n  }\\n\\n  get view() {\\n    \u002F\u002F From the spec, 6th ed., p.963:\\n    \u002F\u002F \\\"The crop, bleed, trim, and art boxes should not ordinarily\\n    \u002F\u002F extend beyond the boundaries of the media box. If they do, they are\\n    \u002F\u002F effectively reduced to their intersection with the media box.\\\"\\n    const { cropBox, mediaBox } = this;\\n\\n    if (cropBox !== mediaBox && !isArrayEqual(cropBox, mediaBox)) {\\n      const box = Util.intersect(cropBox, mediaBox);\\n      if (box && box[2] - box[0] > 0 && box[3] - box[1] > 0) {\\n        return shadow(this, \\\"view\\\", box);\\n      }\\n      warn(\\\"Empty \u002FCropBox and \u002FMediaBox intersection.\\\");\\n    }\\n    return shadow(this, \\\"view\\\", mediaBox);\\n  }\\n\\n  get rotate() {\\n    let rotate = this.#getInheritableProperty(\\\"Rotate\\\") || 0;\\n\\n    \u002F\u002F Normalize rotation so it's a multiple of 90 and between 0 and 270.\\n    if (rotate % 90 !== 0) {\\n      rotate = 0;\\n    } else if (rotate >= 360) {\\n      rotate %= 360;\\n    } else if (rotate \u003C 0) {\\n      \u002F\u002F The spec doesn't cover negatives. Assume it's counterclockwise\\n      \u002F\u002F rotation. The following is the other implementation of modulo.\\n      rotate = ((rotate % 360) + 360) % 360;\\n    }\\n    return shadow(this, \\\"rotate\\\", rotate);\\n  }\\n\\n  #onSubStreamError(reason, objId) {\\n    if (this.evaluatorOptions.ignoreErrors) {\\n      warn(`getContentStream - ignoring sub-stream (${objId}): \\\"${reason}\\\".`);\\n      return;\\n    }\\n    throw reason;\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003CBaseStream>}\\n   *\u002F\\n  async getContentStream() {\\n    const content = await this.pdfManager.ensure(this, \\\"content\\\");\\n\\n    if (content instanceof BaseStream) {\\n      return content;\\n    }\\n    if (Array.isArray(content)) {\\n      return new StreamsSequenceStream(\\n        content,\\n        this.#onSubStreamError.bind(this)\\n      );\\n    }\\n    \u002F\u002F Replace non-existent page content with empty content.\\n    return new NullStream();\\n  }\\n\\n  get xfaData() {\\n    return shadow(\\n      this,\\n      \\\"xfaData\\\",\\n      this.xfaFactory\\n        ? { bbox: this.xfaFactory.getBoundingBox(this.pageIndex) }\\n        : null\\n    );\\n  }\\n\\n  async #replaceIdByRef(annotations, deletedAnnotations, existingAnnotations) {\\n    const promises = [];\\n    for (const annotation of annotations) {\\n      if (annotation.id) {\\n        const ref = Ref.fromString(annotation.id);\\n        if (!ref) {\\n          warn(`A non-linked annotation cannot be modified: ${annotation.id}`);\\n          continue;\\n        }\\n        if (annotation.deleted) {\\n          deletedAnnotations.put(ref, ref);\\n          if (annotation.popupRef) {\\n            const popupRef = Ref.fromString(annotation.popupRef);\\n            if (popupRef) {\\n              deletedAnnotations.put(popupRef, popupRef);\\n            }\\n          }\\n          continue;\\n        }\\n        existingAnnotations?.put(ref);\\n        annotation.ref = ref;\\n        promises.push(\\n          this.xref.fetchAsync(ref).then(\\n            obj => {\\n              if (obj instanceof Dict) {\\n                annotation.oldAnnotation = obj.clone();\\n              }\\n            },\\n            () => {\\n              warn(`Cannot fetch \\\\`oldAnnotation\\\\` for: ${ref}.`);\\n            }\\n          )\\n        );\\n        delete annotation.id;\\n      }\\n    }\\n    await Promise.all(promises);\\n  }\\n\\n  async saveNewAnnotations(handler, task, annotations, imagePromises, changes) {\\n    if (this.xfaFactory) {\\n      throw new Error(\\\"XFA: Cannot save new annotations.\\\");\\n    }\\n    const partialEvaluator = this.#createPartialEvaluator(handler);\\n\\n    const deletedAnnotations = new RefSetCache();\\n    const existingAnnotations = new RefSet();\\n    await this.#replaceIdByRef(\\n      annotations,\\n      deletedAnnotations,\\n      existingAnnotations\\n    );\\n\\n    const pageDict = this.pageDict;\\n    const annotationsArray = this.annotations.filter(\\n      a => !(a instanceof Ref && deletedAnnotations.has(a))\\n    );\\n    const newData = await AnnotationFactory.saveNewAnnotations(\\n      partialEvaluator,\\n      task,\\n      annotations,\\n      imagePromises,\\n      changes\\n    );\\n\\n    for (const { ref } of newData.annotations) {\\n      \u002F\u002F Don't add an existing annotation ref to the annotations array.\\n      if (ref instanceof Ref && !existingAnnotations.has(ref)) {\\n        annotationsArray.push(ref);\\n      }\\n    }\\n\\n    const dict = pageDict.clone();\\n    dict.set(\\\"Annots\\\", annotationsArray);\\n    changes.put(this.ref, {\\n      data: dict,\\n    });\\n\\n    for (const deletedRef of deletedAnnotations) {\\n      changes.put(deletedRef, {\\n        data: null,\\n      });\\n    }\\n  }\\n\\n  async save(handler, task, annotationStorage, changes) {\\n    const partialEvaluator = this.#createPartialEvaluator(handler);\\n\\n    \u002F\u002F Fetch the page's annotations and save the content\\n    \u002F\u002F in case of interactive form fields.\\n    const annotations = await this._parsedAnnotations;\\n\\n    const promises = [];\\n    for (const annotation of annotations) {\\n      promises.push(\\n        annotation\\n          .save(partialEvaluator, task, annotationStorage, changes)\\n          .catch(function (reason) {\\n            warn(\\n              \\\"save - ignoring annotation data during \\\" +\\n                `\\\"${task.name}\\\" task: \\\"${reason}\\\".`\\n            );\\n            return null;\\n          })\\n      );\\n    }\\n    return Promise.all(promises);\\n  }\\n\\n  async loadResources(keys) {\\n    \u002F\u002F TODO: add async `#getInheritableProperty` and remove this.\\n    await (this.#resourcesPromise ??= this.pdfManager.ensure(\\n      this,\\n      \\\"resources\\\"\\n    ));\\n\\n    await ObjectLoader.load(this.resources, keys, this.xref);\\n  }\\n\\n  async #getMergedResources(streamDict, keys) {\\n    \u002F\u002F In rare cases \u002FResources are also found in the \u002FContents stream-dict,\\n    \u002F\u002F in addition to in the \u002FPage dict, hence we need to prefer those when\\n    \u002F\u002F available (see issue18894.pdf).\\n    const localResources = streamDict?.get(\\\"Resources\\\");\\n\\n    if (!(localResources instanceof Dict && localResources.size)) {\\n      return this.resources;\\n    }\\n    await ObjectLoader.load(localResources, keys, this.xref);\\n\\n    return Dict.merge({\\n      xref: this.xref,\\n      dictArray: [localResources, this.resources],\\n      mergeSubDicts: true,\\n    });\\n  }\\n\\n  async getOperatorList({\\n    handler,\\n    sink,\\n    task,\\n    intent,\\n    cacheKey,\\n    annotationStorage = null,\\n    modifiedIds = null,\\n  }) {\\n    const contentStreamPromise = this.getContentStream();\\n    const resourcesPromise = this.loadResources(RESOURCES_KEYS_OPERATOR_LIST);\\n\\n    const partialEvaluator = this.#createPartialEvaluator(handler);\\n\\n    const newAnnotsByPage = !this.xfaFactory\\n      ? getNewAnnotationsMap(annotationStorage)\\n      : null;\\n    const newAnnots = newAnnotsByPage?.get(this.pageIndex);\\n    let newAnnotationsPromise = Promise.resolve(null);\\n    let deletedAnnotations = null;\\n\\n    if (newAnnots) {\\n      const annotationGlobalsPromise =\\n        this.pdfManager.ensureDoc(\\\"annotationGlobals\\\");\\n      let imagePromises;\\n\\n      \u002F\u002F An annotation can contain a reference to a bitmap, but this bitmap\\n      \u002F\u002F is defined in another annotation. So we need to find this annotation\\n      \u002F\u002F and generate the bitmap.\\n      const missingBitmaps = new Set();\\n      for (const { bitmapId, bitmap } of newAnnots) {\\n        if (bitmapId && !bitmap && !missingBitmaps.has(bitmapId)) {\\n          missingBitmaps.add(bitmapId);\\n        }\\n      }\\n\\n      const { isOffscreenCanvasSupported } = this.evaluatorOptions;\\n      if (missingBitmaps.size > 0) {\\n        const annotationWithBitmaps = newAnnots.slice();\\n        for (const [key, annotation] of annotationStorage) {\\n          if (!key.startsWith(AnnotationEditorPrefix)) {\\n            continue;\\n          }\\n          if (annotation.bitmap && missingBitmaps.has(annotation.bitmapId)) {\\n            annotationWithBitmaps.push(annotation);\\n          }\\n        }\\n        \u002F\u002F The array annotationWithBitmaps cannot be empty: the check above\\n        \u002F\u002F makes sure to have at least one annotation containing the bitmap.\\n        imagePromises = AnnotationFactory.generateImages(\\n          annotationWithBitmaps,\\n          this.xref,\\n          isOffscreenCanvasSupported\\n        );\\n      } else {\\n        imagePromises = AnnotationFactory.generateImages(\\n          newAnnots,\\n          this.xref,\\n          isOffscreenCanvasSupported\\n        );\\n      }\\n\\n      deletedAnnotations = new RefSet();\\n\\n      newAnnotationsPromise = Promise.all([\\n        annotationGlobalsPromise,\\n        this.#replaceIdByRef(newAnnots, deletedAnnotations, null),\\n      ]).then(([annotationGlobals]) => {\\n        if (!annotationGlobals) {\\n          return null;\\n        }\\n\\n        return AnnotationFactory.printNewAnnotations(\\n          annotationGlobals,\\n          partialEvaluator,\\n          task,\\n          newAnnots,\\n          imagePromises\\n        );\\n      });\\n    }\\n\\n    const pageListPromise = Promise.all([\\n      contentStreamPromise,\\n      resourcesPromise,\\n    ]).then(async ([contentStream]) => {\\n      const resources = await this.#getMergedResources(\\n        contentStream.dict,\\n        RESOURCES_KEYS_OPERATOR_LIST\\n      );\\n      const opList = new OperatorList(intent, sink);\\n\\n      handler.send(\\\"StartRenderPage\\\", {\\n        transparency: partialEvaluator.hasBlendModes(\\n          resources,\\n          this.nonBlendModesSet\\n        ),\\n        pageIndex: this.pageIndex,\\n        cacheKey,\\n      });\\n\\n      await partialEvaluator.getOperatorList({\\n        stream: contentStream,\\n        task,\\n        resources,\\n        operatorList: opList,\\n      });\\n      return opList;\\n    });\\n\\n    \u002F\u002F Fetch the page's annotations and add their operator lists to the\\n    \u002F\u002F page's operator list to render them.\\n    \u002F\u002F eslint-disable-next-line prefer-const\\n    let [pageOpList, annotations, newAnnotations] = await Promise.all([\\n      pageListPromise,\\n      this._parsedAnnotations,\\n      newAnnotationsPromise,\\n    ]);\\n\\n    if (newAnnotations) {\\n      \u002F\u002F Some annotations can already exist (if it has the refToReplace\\n      \u002F\u002F property). In this case, we replace the old annotation by the new one.\\n      annotations = annotations.filter(\\n        a => !(a.ref && deletedAnnotations.has(a.ref))\\n      );\\n      for (let i = 0, ii = newAnnotations.length; i \u003C ii; i++) {\\n        const newAnnotation = newAnnotations[i];\\n        if (newAnnotation.refToReplace) {\\n          const j = annotations.findIndex(\\n            a => a.ref && isRefsEqual(a.ref, newAnnotation.refToReplace)\\n          );\\n          if (j >= 0) {\\n            annotations.splice(j, 1, newAnnotation);\\n            newAnnotations.splice(i--, 1);\\n            ii--;\\n          }\\n        }\\n      }\\n      annotations = annotations.concat(newAnnotations);\\n    }\\n    if (\\n      annotations.length === 0 ||\\n      intent & RenderingIntentFlag.ANNOTATIONS_DISABLE\\n    ) {\\n      pageOpList.flush(\u002F* lastChunk = *\u002F true);\\n      return { length: pageOpList.totalLength };\\n    }\\n    const renderForms = !!(intent & RenderingIntentFlag.ANNOTATIONS_FORMS),\\n      isEditing = !!(intent & RenderingIntentFlag.IS_EDITING),\\n      intentAny = !!(intent & RenderingIntentFlag.ANY),\\n      intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\\n      intentPrint = !!(intent & RenderingIntentFlag.PRINT);\\n\\n    \u002F\u002F Collect the operator list promises for the annotations. Each promise\\n    \u002F\u002F is resolved with the complete operator list for a single annotation.\\n    const opListPromises = [];\\n    for (const annotation of annotations) {\\n      if (\\n        intentAny ||\\n        (intentDisplay &&\\n          annotation.mustBeViewed(annotationStorage, renderForms) &&\\n          annotation.mustBeViewedWhenEditing(isEditing, modifiedIds)) ||\\n        (intentPrint && annotation.mustBePrinted(annotationStorage))\\n      ) {\\n        opListPromises.push(\\n          annotation\\n            .getOperatorList(partialEvaluator, task, intent, annotationStorage)\\n            .catch(function (reason) {\\n              warn(\\n                \\\"getOperatorList - ignoring annotation data during \\\" +\\n                  `\\\"${task.name}\\\" task: \\\"${reason}\\\".`\\n              );\\n              return {\\n                opList: null,\\n                separateForm: false,\\n                separateCanvas: false,\\n              };\\n            })\\n        );\\n      }\\n    }\\n\\n    const opLists = await Promise.all(opListPromises);\\n    let form = false,\\n      canvas = false;\\n\\n    for (const { opList, separateForm, separateCanvas } of opLists) {\\n      pageOpList.addOpList(opList);\\n\\n      form ||= separateForm;\\n      canvas ||= separateCanvas;\\n    }\\n    pageOpList.flush(\\n      \u002F* lastChunk = *\u002F true,\\n      \u002F* separateAnnots = *\u002F { form, canvas }\\n    );\\n    return { length: pageOpList.totalLength };\\n  }\\n\\n  async extractTextContent({\\n    handler,\\n    task,\\n    includeMarkedContent,\\n    disableNormalization,\\n    sink,\\n  }) {\\n    const contentStreamPromise = this.getContentStream();\\n    const resourcesPromise = this.loadResources(RESOURCES_KEYS_TEXT_CONTENT);\\n    const langPromise = this.pdfManager.ensureCatalog(\\\"lang\\\");\\n\\n    const [contentStream, , lang] = await Promise.all([\\n      contentStreamPromise,\\n      resourcesPromise,\\n      langPromise,\\n    ]);\\n    const resources = await this.#getMergedResources(\\n      contentStream.dict,\\n      RESOURCES_KEYS_TEXT_CONTENT\\n    );\\n\\n    const partialEvaluator = this.#createPartialEvaluator(handler);\\n\\n    return partialEvaluator.getTextContent({\\n      stream: contentStream,\\n      task,\\n      resources,\\n      includeMarkedContent,\\n      disableNormalization,\\n      sink,\\n      viewBox: this.view,\\n      lang,\\n    });\\n  }\\n\\n  async getStructTree() {\\n    const structTreeRoot =\\n      await this.pdfManager.ensureCatalog(\\\"structTreeRoot\\\");\\n    if (!structTreeRoot) {\\n      return null;\\n    }\\n    \u002F\u002F Ensure that the structTree will contain the page's annotations.\\n    await this._parsedAnnotations;\\n\\n    try {\\n      const structTree = await this.pdfManager.ensure(\\n        this,\\n        \\\"_parseStructTree\\\",\\n        [structTreeRoot]\\n      );\\n      const data = await this.pdfManager.ensure(structTree, \\\"serializable\\\");\\n      return data;\\n    } catch (ex) {\\n      warn(`getStructTree: \\\"${ex}\\\".`);\\n      return null;\\n    }\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _parseStructTree(structTreeRoot) {\\n    const tree = new StructTreePage(structTreeRoot, this.pageDict);\\n    tree.parse(this.ref);\\n    return tree;\\n  }\\n\\n  async getAnnotationsData(handler, task, intent) {\\n    const annotations = await this._parsedAnnotations;\\n    if (annotations.length === 0) {\\n      return annotations;\\n    }\\n\\n    const annotationsData = [],\\n      textContentPromises = [];\\n    let partialEvaluator;\\n\\n    const intentAny = !!(intent & RenderingIntentFlag.ANY),\\n      intentDisplay = !!(intent & RenderingIntentFlag.DISPLAY),\\n      intentPrint = !!(intent & RenderingIntentFlag.PRINT);\\n\\n    for (const annotation of annotations) {\\n      \u002F\u002F Get the annotation even if it's hidden because\\n      \u002F\u002F JS can change its display.\\n      const isVisible = intentAny || (intentDisplay && annotation.viewable);\\n      if (isVisible || (intentPrint && annotation.printable)) {\\n        annotationsData.push(annotation.data);\\n      }\\n\\n      if (annotation.hasTextContent && isVisible) {\\n        partialEvaluator ??= this.#createPartialEvaluator(handler);\\n\\n        textContentPromises.push(\\n          annotation\\n            .extractTextContent(partialEvaluator, task, [\\n              -Infinity,\\n              -Infinity,\\n              Infinity,\\n              Infinity,\\n            ])\\n            .catch(function (reason) {\\n              warn(\\n                `getAnnotationsData - ignoring textContent during \\\"${task.name}\\\" task: \\\"${reason}\\\".`\\n              );\\n            })\\n        );\\n      }\\n    }\\n\\n    await Promise.all(textContentPromises);\\n    return annotationsData;\\n  }\\n\\n  get annotations() {\\n    const annots = this.#getInheritableProperty(\\\"Annots\\\");\\n    return shadow(this, \\\"annotations\\\", Array.isArray(annots) ? annots : []);\\n  }\\n\\n  get _parsedAnnotations() {\\n    const promise = this.pdfManager\\n      .ensure(this, \\\"annotations\\\")\\n      .then(async annots => {\\n        if (annots.length === 0) {\\n          return annots;\\n        }\\n\\n        const [annotationGlobals, fieldObjects] = await Promise.all([\\n          this.pdfManager.ensureDoc(\\\"annotationGlobals\\\"),\\n          this.pdfManager.ensureDoc(\\\"fieldObjects\\\"),\\n        ]);\\n        if (!annotationGlobals) {\\n          return [];\\n        }\\n\\n        const orphanFields = fieldObjects?.orphanFields;\\n        const annotationPromises = [];\\n        for (const annotationRef of annots) {\\n          annotationPromises.push(\\n            AnnotationFactory.create(\\n              this.xref,\\n              annotationRef,\\n              annotationGlobals,\\n              this._localIdFactory,\\n              \u002F* collectFields *\u002F false,\\n              orphanFields,\\n              this.ref\\n            ).catch(function (reason) {\\n              warn(`_parsedAnnotations: \\\"${reason}\\\".`);\\n              return null;\\n            })\\n          );\\n        }\\n\\n        const sortedAnnotations = [];\\n        let popupAnnotations, widgetAnnotations;\\n        \u002F\u002F Ensure that PopupAnnotations are handled last, since they depend on\\n        \u002F\u002F their parent Annotation in the display layer; fixes issue 11362.\\n        for (const annotation of await Promise.all(annotationPromises)) {\\n          if (!annotation) {\\n            continue;\\n          }\\n          if (annotation instanceof WidgetAnnotation) {\\n            (widgetAnnotations ||= []).push(annotation);\\n            continue;\\n          }\\n          if (annotation instanceof PopupAnnotation) {\\n            (popupAnnotations ||= []).push(annotation);\\n            continue;\\n          }\\n          sortedAnnotations.push(annotation);\\n        }\\n        if (widgetAnnotations) {\\n          sortedAnnotations.push(...widgetAnnotations);\\n        }\\n        if (popupAnnotations) {\\n          sortedAnnotations.push(...popupAnnotations);\\n        }\\n\\n        return sortedAnnotations;\\n      });\\n\\n    return shadow(this, \\\"_parsedAnnotations\\\", promise);\\n  }\\n\\n  get jsActions() {\\n    const actions = collectActions(\\n      this.xref,\\n      this.pageDict,\\n      PageActionEventType\\n    );\\n    return shadow(this, \\\"jsActions\\\", actions);\\n  }\\n}\\n\\nconst PDF_HEADER_SIGNATURE = new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d]);\\nconst STARTXREF_SIGNATURE = new Uint8Array([\\n  0x73, 0x74, 0x61, 0x72, 0x74, 0x78, 0x72, 0x65, 0x66,\\n]);\\nconst ENDOBJ_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a]);\\n\\nfunction find(stream, signature, limit = 1024, backwards = false) {\\n  if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n    assert(limit > 0, 'The \\\"limit\\\" must be a positive integer.');\\n  }\\n  const signatureLength = signature.length;\\n\\n  const scanBytes = stream.peekBytes(limit);\\n  const scanLength = scanBytes.length - signatureLength;\\n\\n  if (scanLength \u003C= 0) {\\n    return false;\\n  }\\n  if (backwards) {\\n    const signatureEnd = signatureLength - 1;\\n\\n    let pos = scanBytes.length - 1;\\n    while (pos >= signatureEnd) {\\n      let j = 0;\\n      while (\\n        j \u003C signatureLength &&\\n        scanBytes[pos - j] === signature[signatureEnd - j]\\n      ) {\\n        j++;\\n      }\\n      if (j >= signatureLength) {\\n        \u002F\u002F `signature` found.\\n        stream.pos += pos - signatureEnd;\\n        return true;\\n      }\\n      pos--;\\n    }\\n  } else {\\n    \u002F\u002F forwards\\n    let pos = 0;\\n    while (pos \u003C= scanLength) {\\n      let j = 0;\\n      while (j \u003C signatureLength && scanBytes[pos + j] === signature[j]) {\\n        j++;\\n      }\\n      if (j >= signatureLength) {\\n        \u002F\u002F `signature` found.\\n        stream.pos += pos;\\n        return true;\\n      }\\n      pos++;\\n    }\\n  }\\n  return false;\\n}\\n\\n\u002F**\\n * The `PDFDocument` class holds all the (worker-thread) data of the PDF file.\\n *\u002F\\nclass PDFDocument {\\n  #pagePromises = new Map();\\n\\n  #version = null;\\n\\n  constructor(pdfManager, stream) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        stream instanceof BaseStream,\\n        'PDFDocument: Invalid \\\"stream\\\" argument.'\\n      );\\n    }\\n    if (stream.length \u003C= 0) {\\n      throw new InvalidPDFException(\\n        \\\"The PDF file is empty, i.e. its size is zero bytes.\\\"\\n      );\\n    }\\n\\n    this.pdfManager = pdfManager;\\n    this.stream = stream;\\n    this.xref = new XRef(stream, pdfManager);\\n\\n    const idCounters = {\\n      font: 0,\\n    };\\n    this._globalIdFactory = class {\\n      static getDocId() {\\n        return `g_${pdfManager.docId}`;\\n      }\\n\\n      static createFontId() {\\n        return `f${++idCounters.font}`;\\n      }\\n\\n      static createObjId() {\\n        unreachable(\\\"Abstract method `createObjId` called.\\\");\\n      }\\n\\n      static getPageObjId() {\\n        unreachable(\\\"Abstract method `getPageObjId` called.\\\");\\n      }\\n    };\\n  }\\n\\n  parse(recoveryMode) {\\n    this.xref.parse(recoveryMode);\\n    this.catalog = new Catalog(this.pdfManager, this.xref);\\n  }\\n\\n  get linearization() {\\n    let linearization = null;\\n    try {\\n      linearization = Linearization.create(this.stream);\\n    } catch (err) {\\n      if (err instanceof MissingDataException) {\\n        throw err;\\n      }\\n      info(err);\\n    }\\n    return shadow(this, \\\"linearization\\\", linearization);\\n  }\\n\\n  get startXRef() {\\n    const stream = this.stream;\\n    let startXRef = 0;\\n\\n    if (this.linearization) {\\n      \u002F\u002F Find the end of the first object.\\n      stream.reset();\\n      if (find(stream, ENDOBJ_SIGNATURE)) {\\n        stream.skip(6);\\n\\n        let ch = stream.peekByte();\\n        while (isWhiteSpace(ch)) {\\n          stream.pos++;\\n          ch = stream.peekByte();\\n        }\\n        startXRef = stream.pos - stream.start;\\n      }\\n    } else {\\n      \u002F\u002F Find `startxref` by checking backwards from the end of the file.\\n      const step = 1024;\\n      const startXRefLength = STARTXREF_SIGNATURE.length;\\n      let found = false,\\n        pos = stream.end;\\n\\n      while (!found && pos > 0) {\\n        pos -= step - startXRefLength;\\n        if (pos \u003C 0) {\\n          pos = 0;\\n        }\\n        stream.pos = pos;\\n        found = find(stream, STARTXREF_SIGNATURE, step, true);\\n      }\\n\\n      if (found) {\\n        stream.skip(9);\\n        let ch;\\n        do {\\n          ch = stream.getByte();\\n        } while (isWhiteSpace(ch));\\n        let str = \\\"\\\";\\n        while (ch >= \u002F* Space = *\u002F 0x20 && ch \u003C= \u002F* '9' = *\u002F 0x39) {\\n          str += String.fromCharCode(ch);\\n          ch = stream.getByte();\\n        }\\n        startXRef = parseInt(str, 10);\\n        if (isNaN(startXRef)) {\\n          startXRef = 0;\\n        }\\n      }\\n    }\\n    return shadow(this, \\\"startXRef\\\", startXRef);\\n  }\\n\\n  \u002F\u002F Find the header, get the PDF format version and setup the\\n  \u002F\u002F stream to start from the header.\\n  checkHeader() {\\n    const stream = this.stream;\\n    stream.reset();\\n\\n    if (!find(stream, PDF_HEADER_SIGNATURE)) {\\n      \u002F\u002F May not be a PDF file, but don't throw an error and let\\n      \u002F\u002F parsing continue.\\n      return;\\n    }\\n    stream.moveStart();\\n\\n    \u002F\u002F Skip over the \\\"%PDF-\\\" prefix, since it was found above.\\n    stream.skip(PDF_HEADER_SIGNATURE.length);\\n    \u002F\u002F Read the PDF format version.\\n    let version = \\\"\\\",\\n      ch;\\n    while (\\n      (ch = stream.getByte()) > \u002F* Space = *\u002F 0x20 &&\\n      version.length \u003C \u002F* MAX_PDF_VERSION_LENGTH = *\u002F 7\\n    ) {\\n      version += String.fromCharCode(ch);\\n    }\\n\\n    if (PDF_VERSION_REGEXP.test(version)) {\\n      this.#version = version;\\n    } else {\\n      warn(`Invalid PDF header version: ${version}`);\\n    }\\n  }\\n\\n  parseStartXRef() {\\n    this.xref.setStartXRef(this.startXRef);\\n  }\\n\\n  get numPages() {\\n    let num = 0;\\n    if (this.catalog.hasActualNumPages) {\\n      num = this.catalog.numPages;\\n    } else if (this.xfaFactory) {\\n      \u002F\u002F num is a Promise.\\n      num = this.xfaFactory.getNumPages();\\n    } else if (this.linearization) {\\n      num = this.linearization.numPages;\\n    } else {\\n      num = this.catalog.numPages;\\n    }\\n    return shadow(this, \\\"numPages\\\", num);\\n  }\\n\\n  #hasOnlyDocumentSignatures(fields, recursionDepth = 0) {\\n    const RECURSION_LIMIT = 10;\\n\\n    if (!Array.isArray(fields)) {\\n      return false;\\n    }\\n    return fields.every(field => {\\n      field = this.xref.fetchIfRef(field);\\n      if (!(field instanceof Dict)) {\\n        return false;\\n      }\\n      if (field.has(\\\"Kids\\\")) {\\n        if (++recursionDepth > RECURSION_LIMIT) {\\n          warn(\\\"#hasOnlyDocumentSignatures: maximum recursion depth reached\\\");\\n          return false;\\n        }\\n        return this.#hasOnlyDocumentSignatures(\\n          field.get(\\\"Kids\\\"),\\n          recursionDepth\\n        );\\n      }\\n      const isSignature = isName(field.get(\\\"FT\\\"), \\\"Sig\\\");\\n      const rectangle = field.get(\\\"Rect\\\");\\n      const isInvisible =\\n        Array.isArray(rectangle) && rectangle.every(value => value === 0);\\n      return isSignature && isInvisible;\\n    });\\n  }\\n\\n  get _xfaStreams() {\\n    const { acroForm } = this.catalog;\\n    if (!acroForm) {\\n      return null;\\n    }\\n\\n    const xfa = acroForm.get(\\\"XFA\\\");\\n    const entries = new Map(\\n      [\\n        \\\"xdp:xdp\\\",\\n        \\\"template\\\",\\n        \\\"datasets\\\",\\n        \\\"config\\\",\\n        \\\"connectionSet\\\",\\n        \\\"localeSet\\\",\\n        \\\"stylesheet\\\",\\n        \\\"\u002Fxdp:xdp\\\",\\n      ].map(e => [e, null])\\n    );\\n    if (xfa instanceof BaseStream && !xfa.isEmpty) {\\n      entries.set(\\\"xdp:xdp\\\", xfa);\\n      return entries;\\n    }\\n\\n    if (!Array.isArray(xfa) || xfa.length === 0) {\\n      return null;\\n    }\\n\\n    for (let i = 0, ii = xfa.length; i \u003C ii; i += 2) {\\n      let name;\\n      if (i === 0) {\\n        name = \\\"xdp:xdp\\\";\\n      } else if (i === ii - 2) {\\n        name = \\\"\u002Fxdp:xdp\\\";\\n      } else {\\n        name = xfa[i];\\n      }\\n\\n      if (!entries.has(name)) {\\n        continue;\\n      }\\n      const data = this.xref.fetchIfRef(xfa[i + 1]);\\n      if (!(data instanceof BaseStream) || data.isEmpty) {\\n        continue;\\n      }\\n      entries.set(name, data);\\n    }\\n    return entries;\\n  }\\n\\n  get xfaDatasets() {\\n    const streams = this._xfaStreams;\\n    if (!streams) {\\n      return shadow(this, \\\"xfaDatasets\\\", null);\\n    }\\n    for (const key of [\\\"datasets\\\", \\\"xdp:xdp\\\"]) {\\n      const stream = streams.get(key);\\n      if (!stream) {\\n        continue;\\n      }\\n      try {\\n        const str = stringToUTF8String(stream.getString());\\n        const data = { [key]: str };\\n        return shadow(this, \\\"xfaDatasets\\\", new DatasetReader(data));\\n      } catch {\\n        warn(\\\"XFA - Invalid utf-8 string.\\\");\\n        break;\\n      }\\n    }\\n    return shadow(this, \\\"xfaDatasets\\\", null);\\n  }\\n\\n  get xfaData() {\\n    const streams = this._xfaStreams;\\n    if (!streams) {\\n      return null;\\n    }\\n    const data = Object.create(null);\\n    for (const [key, stream] of streams) {\\n      if (!stream) {\\n        continue;\\n      }\\n      try {\\n        data[key] = stringToUTF8String(stream.getString());\\n      } catch {\\n        warn(\\\"XFA - Invalid utf-8 string.\\\");\\n        return null;\\n      }\\n    }\\n    return data;\\n  }\\n\\n  get xfaFactory() {\\n    let data;\\n    if (\\n      this.pdfManager.enableXfa &&\\n      this.catalog.needsRendering &&\\n      this.formInfo.hasXfa &&\\n      !this.formInfo.hasAcroForm\\n    ) {\\n      data = this.xfaData;\\n    }\\n    return shadow(this, \\\"xfaFactory\\\", data ? new XFAFactory(data) : null);\\n  }\\n\\n  get isPureXfa() {\\n    return this.xfaFactory ? this.xfaFactory.isValid() : false;\\n  }\\n\\n  get htmlForXfa() {\\n    return this.xfaFactory ? this.xfaFactory.getPages() : null;\\n  }\\n\\n  async #loadXfaImages() {\\n    const xfaImages = await this.pdfManager.ensureCatalog(\\\"xfaImages\\\");\\n    if (!xfaImages) {\\n      return;\\n    }\\n    this.xfaFactory.setImages(xfaImages);\\n  }\\n\\n  async #loadXfaFonts(handler, task) {\\n    const acroForm = await this.pdfManager.ensureCatalog(\\\"acroForm\\\");\\n    if (!acroForm) {\\n      return;\\n    }\\n    const resources = await acroForm.getAsync(\\\"DR\\\");\\n    if (!(resources instanceof Dict)) {\\n      return;\\n    }\\n    await ObjectLoader.load(resources, [\\\"Font\\\"], this.xref);\\n\\n    const fontRes = resources.get(\\\"Font\\\");\\n    if (!(fontRes instanceof Dict)) {\\n      return;\\n    }\\n\\n    const options = Object.assign(\\n      Object.create(null),\\n      this.pdfManager.evaluatorOptions,\\n      { useSystemFonts: false }\\n    );\\n    const { builtInCMapCache, fontCache, standardFontDataCache } = this.catalog;\\n\\n    const partialEvaluator = new PartialEvaluator({\\n      xref: this.xref,\\n      handler,\\n      pageIndex: -1,\\n      idFactory: this._globalIdFactory,\\n      fontCache,\\n      builtInCMapCache,\\n      standardFontDataCache,\\n      options,\\n    });\\n    const operatorList = new OperatorList();\\n    const pdfFonts = [];\\n    const initialState = {\\n      get font() {\\n        return pdfFonts.at(-1);\\n      },\\n      set font(font) {\\n        pdfFonts.push(font);\\n      },\\n      clone() {\\n        return this;\\n      },\\n    };\\n\\n    const parseFont = (fontName, fallbackFontDict, cssFontInfo) =>\\n      partialEvaluator\\n        .handleSetFont(\\n          resources,\\n          [Name.get(fontName), 1],\\n          \u002F* fontRef = *\u002F null,\\n          operatorList,\\n          task,\\n          initialState,\\n          fallbackFontDict,\\n          cssFontInfo\\n        )\\n        .catch(reason => {\\n          warn(`loadXfaFonts: \\\"${reason}\\\".`);\\n          return null;\\n        });\\n\\n    const promises = [];\\n    for (const [fontName, font] of fontRes) {\\n      const descriptor = font.get(\\\"FontDescriptor\\\");\\n      if (!(descriptor instanceof Dict)) {\\n        continue;\\n      }\\n      let fontFamily = descriptor.get(\\\"FontFamily\\\");\\n      \u002F\u002F For example, \\\"Wingdings 3\\\" is not a valid font name in the css specs.\\n      fontFamily = fontFamily.replaceAll(\u002F[ ]+(\\\\d)\u002Fg, \\\"$1\\\");\\n      const fontWeight = descriptor.get(\\\"FontWeight\\\");\\n\\n      \u002F\u002F Angle is expressed in degrees counterclockwise in PDF\\n      \u002F\u002F when it's clockwise in CSS\\n      \u002F\u002F (see https:\u002F\u002Fdrafts.csswg.org\u002Fcss-fonts-4\u002F#valdef-font-style-oblique-angle)\\n      const italicAngle = -descriptor.get(\\\"ItalicAngle\\\");\\n      const cssFontInfo = { fontFamily, fontWeight, italicAngle };\\n\\n      if (!validateCSSFont(cssFontInfo)) {\\n        continue;\\n      }\\n      promises.push(\\n        parseFont(fontName, \u002F* fallbackFontDict = *\u002F null, cssFontInfo)\\n      );\\n    }\\n\\n    await Promise.all(promises);\\n    const missingFonts = this.xfaFactory.setFonts(pdfFonts);\\n\\n    if (!missingFonts) {\\n      return;\\n    }\\n\\n    options.ignoreErrors = true;\\n    promises.length = 0;\\n    pdfFonts.length = 0;\\n\\n    const reallyMissingFonts = new Set();\\n    for (const missing of missingFonts) {\\n      if (!getXfaFontName(`${missing}-Regular`)) {\\n        \u002F\u002F No substitution available: we'll fallback on Myriad.\\n        reallyMissingFonts.add(missing);\\n      }\\n    }\\n\\n    if (reallyMissingFonts.size) {\\n      missingFonts.push(\\\"PdfJS-Fallback\\\");\\n    }\\n\\n    for (const missing of missingFonts) {\\n      if (reallyMissingFonts.has(missing)) {\\n        continue;\\n      }\\n      for (const fontInfo of [\\n        { name: \\\"Regular\\\", fontWeight: 400, italicAngle: 0 },\\n        { name: \\\"Bold\\\", fontWeight: 700, italicAngle: 0 },\\n        { name: \\\"Italic\\\", fontWeight: 400, italicAngle: 12 },\\n        { name: \\\"BoldItalic\\\", fontWeight: 700, italicAngle: 12 },\\n      ]) {\\n        const name = `${missing}-${fontInfo.name}`;\\n\\n        promises.push(\\n          parseFont(name, getXfaFontDict(name), {\\n            fontFamily: missing,\\n            fontWeight: fontInfo.fontWeight,\\n            italicAngle: fontInfo.italicAngle,\\n          })\\n        );\\n      }\\n    }\\n\\n    await Promise.all(promises);\\n    this.xfaFactory.appendFonts(pdfFonts, reallyMissingFonts);\\n  }\\n\\n  loadXfaResources(handler, task) {\\n    return Promise.all([\\n      this.#loadXfaFonts(handler, task).catch(() => {\\n        \u002F\u002F Ignore errors, to allow the document to load.\\n      }),\\n      this.#loadXfaImages(),\\n    ]);\\n  }\\n\\n  serializeXfaData(annotationStorage) {\\n    return this.xfaFactory\\n      ? this.xfaFactory.serializeData(annotationStorage)\\n      : null;\\n  }\\n\\n  \u002F**\\n   * The specification states in section 7.5.2 that the version from\\n   * the catalog, if present, should overwrite the version from the header.\\n   *\u002F\\n  get version() {\\n    return this.catalog.version || this.#version;\\n  }\\n\\n  get formInfo() {\\n    const formInfo = {\\n      hasFields: false,\\n      hasAcroForm: false,\\n      hasXfa: false,\\n      hasSignatures: false,\\n    };\\n    const { acroForm } = this.catalog;\\n    if (!acroForm) {\\n      return shadow(this, \\\"formInfo\\\", formInfo);\\n    }\\n\\n    try {\\n      const fields = acroForm.get(\\\"Fields\\\");\\n      const hasFields = Array.isArray(fields) && fields.length > 0;\\n      formInfo.hasFields = hasFields; \u002F\u002F Used by the `fieldObjects` getter.\\n\\n      \u002F\u002F The document contains XFA data if the `XFA` entry is a non-empty\\n      \u002F\u002F array or stream.\\n      const xfa = acroForm.get(\\\"XFA\\\");\\n      formInfo.hasXfa =\\n        (Array.isArray(xfa) && xfa.length > 0) ||\\n        (xfa instanceof BaseStream && !xfa.isEmpty);\\n\\n      \u002F\u002F The document contains AcroForm data if the `Fields` entry is a\\n      \u002F\u002F non-empty array and it doesn't consist of only document signatures.\\n      \u002F\u002F This second check is required for files that don't actually contain\\n      \u002F\u002F AcroForm data (only XFA data), but that use the `Fields` entry to\\n      \u002F\u002F store (invisible) document signatures. This can be detected using\\n      \u002F\u002F the first bit of the `SigFlags` integer (see Table 219 in the\\n      \u002F\u002F specification).\\n      const sigFlags = acroForm.get(\\\"SigFlags\\\");\\n      const hasSignatures = !!(sigFlags & 0x1);\\n      const hasOnlyDocumentSignatures =\\n        hasSignatures && this.#hasOnlyDocumentSignatures(fields);\\n      formInfo.hasAcroForm = hasFields && !hasOnlyDocumentSignatures;\\n      formInfo.hasSignatures = hasSignatures;\\n    } catch (ex) {\\n      if (ex instanceof MissingDataException) {\\n        throw ex;\\n      }\\n      warn(`Cannot fetch form information: \\\"${ex}\\\".`);\\n    }\\n    return shadow(this, \\\"formInfo\\\", formInfo);\\n  }\\n\\n  get documentInfo() {\\n    const { catalog, formInfo, xref } = this;\\n\\n    const docInfo = {\\n      PDFFormatVersion: this.version,\\n      Language: catalog.lang,\\n      EncryptFilterName: xref.encrypt?.filterName ?? null,\\n      IsLinearized: !!this.linearization,\\n      IsAcroFormPresent: formInfo.hasAcroForm,\\n      IsXFAPresent: formInfo.hasXfa,\\n      IsCollectionPresent: !!catalog.collection,\\n      IsSignaturesPresent: formInfo.hasSignatures,\\n    };\\n\\n    let infoDict;\\n    try {\\n      infoDict = xref.trailer.get(\\\"Info\\\");\\n    } catch (err) {\\n      if (err instanceof MissingDataException) {\\n        throw err;\\n      }\\n      info(\\\"The document information dictionary is invalid.\\\");\\n    }\\n    if (!(infoDict instanceof Dict)) {\\n      return shadow(this, \\\"documentInfo\\\", docInfo);\\n    }\\n\\n    for (const [key, value] of infoDict) {\\n      switch (key) {\\n        case \\\"Title\\\":\\n        case \\\"Author\\\":\\n        case \\\"Subject\\\":\\n        case \\\"Keywords\\\":\\n        case \\\"Creator\\\":\\n        case \\\"Producer\\\":\\n        case \\\"CreationDate\\\":\\n        case \\\"ModDate\\\":\\n          if (typeof value === \\\"string\\\") {\\n            docInfo[key] = stringToPDFString(value);\\n            continue;\\n          }\\n          break;\\n        case \\\"Trapped\\\":\\n          if (value instanceof Name) {\\n            docInfo[key] = value;\\n            continue;\\n          }\\n          break;\\n        default:\\n          \u002F\u002F For custom values, only accept white-listed types to prevent\\n          \u002F\u002F errors that would occur when trying to send non-serializable\\n          \u002F\u002F objects to the main-thread (for example `Dict` or `Stream`).\\n          let customValue;\\n          switch (typeof value) {\\n            case \\\"string\\\":\\n              customValue = stringToPDFString(value);\\n              break;\\n            case \\\"number\\\":\\n            case \\\"boolean\\\":\\n              customValue = value;\\n              break;\\n            default:\\n              if (value instanceof Name) {\\n                customValue = value;\\n              }\\n              break;\\n          }\\n\\n          if (customValue === undefined) {\\n            warn(`Bad value, for custom key \\\"${key}\\\", in Info: ${value}.`);\\n            continue;\\n          }\\n          docInfo.Custom ??= Object.create(null);\\n          docInfo.Custom[key] = customValue;\\n          continue;\\n      }\\n      warn(`Bad value, for key \\\"${key}\\\", in Info: ${value}.`);\\n    }\\n    return shadow(this, \\\"documentInfo\\\", docInfo);\\n  }\\n\\n  get fingerprints() {\\n    const FINGERPRINT_FIRST_BYTES = 1024;\\n    const EMPTY_FINGERPRINT = \\\"\\\\x00\\\".repeat(16);\\n\\n    function validate(data) {\\n      return (\\n        typeof data === \\\"string\\\" &&\\n        data.length === 16 &&\\n        data !== EMPTY_FINGERPRINT\\n      );\\n    }\\n\\n    const id = this.xref.trailer.get(\\\"ID\\\");\\n    let hashOriginal, hashModified;\\n    if (Array.isArray(id) && validate(id[0])) {\\n      hashOriginal = stringToBytes(id[0]);\\n\\n      if (id[1] !== id[0] && validate(id[1])) {\\n        hashModified = stringToBytes(id[1]);\\n      }\\n    } else {\\n      hashOriginal = calculateMD5(\\n        this.stream.getByteRange(0, FINGERPRINT_FIRST_BYTES),\\n        0,\\n        FINGERPRINT_FIRST_BYTES\\n      );\\n    }\\n\\n    return shadow(this, \\\"fingerprints\\\", [\\n      toHexUtil(hashOriginal),\\n      hashModified ? toHexUtil(hashModified) : null,\\n    ]);\\n  }\\n\\n  async #getLinearizationPage(pageIndex) {\\n    const { catalog, linearization, xref } = this;\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        linearization?.pageFirst === pageIndex,\\n        \\\"_getLinearizationPage - invalid pageIndex argument.\\\"\\n      );\\n    }\\n\\n    const ref = Ref.get(linearization.objectNumberFirst, 0);\\n    try {\\n      const obj = await xref.fetchAsync(ref);\\n      \u002F\u002F Ensure that the object that was found is actually a Page dictionary.\\n      if (obj instanceof Dict) {\\n        let type = obj.getRaw(\\\"Type\\\");\\n        if (type instanceof Ref) {\\n          type = await xref.fetchAsync(type);\\n        }\\n        if (\\n          isName(type, \\\"Page\\\") ||\\n          (!obj.has(\\\"Type\\\") && !obj.has(\\\"Kids\\\") && obj.has(\\\"Contents\\\"))\\n        ) {\\n          if (!catalog.pageKidsCountCache.has(ref)) {\\n            catalog.pageKidsCountCache.put(ref, 1); \u002F\u002F Cache the Page reference.\\n          }\\n          \u002F\u002F Help improve performance of the `Catalog.getPageIndex` method.\\n          if (!catalog.pageIndexCache.has(ref)) {\\n            catalog.pageIndexCache.put(ref, 0);\\n          }\\n\\n          return [obj, ref];\\n        }\\n      }\\n      throw new FormatError(\\n        \\\"The Linearization dictionary doesn't point to a valid Page dictionary.\\\"\\n      );\\n    } catch (reason) {\\n      warn(`_getLinearizationPage: \\\"${reason.message}\\\".`);\\n      return catalog.getPageDict(pageIndex);\\n    }\\n  }\\n\\n  getPage(pageIndex) {\\n    const cachedPromise = this.#pagePromises.get(pageIndex);\\n    if (cachedPromise) {\\n      return cachedPromise;\\n    }\\n    const { catalog, linearization, xfaFactory } = this;\\n\\n    let promise;\\n    if (xfaFactory) {\\n      promise = Promise.resolve([Dict.empty, null]);\\n    } else if (linearization?.pageFirst === pageIndex) {\\n      promise = this.#getLinearizationPage(pageIndex);\\n    } else {\\n      promise = catalog.getPageDict(pageIndex);\\n    }\\n    promise = promise.then(\\n      ([pageDict, ref]) =>\\n        new Page({\\n          pdfManager: this.pdfManager,\\n          xref: this.xref,\\n          pageIndex,\\n          pageDict,\\n          ref,\\n          globalIdFactory: this._globalIdFactory,\\n          fontCache: catalog.fontCache,\\n          builtInCMapCache: catalog.builtInCMapCache,\\n          standardFontDataCache: catalog.standardFontDataCache,\\n          globalColorSpaceCache: catalog.globalColorSpaceCache,\\n          globalImageCache: catalog.globalImageCache,\\n          systemFontCache: catalog.systemFontCache,\\n          nonBlendModesSet: catalog.nonBlendModesSet,\\n          xfaFactory,\\n        })\\n    );\\n\\n    this.#pagePromises.set(pageIndex, promise);\\n    return promise;\\n  }\\n\\n  async checkFirstPage(recoveryMode = false) {\\n    if (recoveryMode) {\\n      return;\\n    }\\n    try {\\n      await this.getPage(0);\\n    } catch (reason) {\\n      if (reason instanceof XRefEntryException) {\\n        \u002F\u002F Clear out the various caches to ensure that we haven't stored any\\n        \u002F\u002F inconsistent and\u002For incorrect state, since that could easily break\\n        \u002F\u002F subsequent `this.getPage` calls.\\n        this.#pagePromises.delete(0);\\n        await this.cleanup();\\n\\n        throw new XRefParseException();\\n      }\\n    }\\n  }\\n\\n  async checkLastPage(recoveryMode = false) {\\n    const { catalog, pdfManager } = this;\\n\\n    catalog.setActualNumPages(); \u002F\u002F Ensure that it's always reset.\\n    let numPages;\\n\\n    try {\\n      await Promise.all([\\n        pdfManager.ensureDoc(\\\"xfaFactory\\\"),\\n        pdfManager.ensureDoc(\\\"linearization\\\"),\\n        pdfManager.ensureCatalog(\\\"numPages\\\"),\\n      ]);\\n\\n      if (this.xfaFactory) {\\n        return; \u002F\u002F The Page count is always calculated for XFA-documents.\\n      } else if (this.linearization) {\\n        numPages = this.linearization.numPages;\\n      } else {\\n        numPages = catalog.numPages;\\n      }\\n\\n      if (!Number.isInteger(numPages)) {\\n        throw new FormatError(\\\"Page count is not an integer.\\\");\\n      } else if (numPages \u003C= 1) {\\n        return;\\n      }\\n      await this.getPage(numPages - 1);\\n    } catch (reason) {\\n      \u002F\u002F Clear out the various caches to ensure that we haven't stored any\\n      \u002F\u002F inconsistent and\u002For incorrect state, since that could easily break\\n      \u002F\u002F subsequent `this.getPage` calls.\\n      this.#pagePromises.delete(numPages - 1);\\n      await this.cleanup();\\n\\n      if (reason instanceof XRefEntryException && !recoveryMode) {\\n        throw new XRefParseException();\\n      }\\n      warn(`checkLastPage - invalid \u002FPages tree \u002FCount: ${numPages}.`);\\n\\n      let pagesTree;\\n      try {\\n        pagesTree = await catalog.getAllPageDicts(recoveryMode);\\n      } catch (reasonAll) {\\n        if (reasonAll instanceof XRefEntryException && !recoveryMode) {\\n          throw new XRefParseException();\\n        }\\n        catalog.setActualNumPages(1);\\n        return;\\n      }\\n\\n      for (const [pageIndex, [pageDict, ref]] of pagesTree) {\\n        let promise;\\n        if (pageDict instanceof Error) {\\n          promise = Promise.reject(pageDict);\\n\\n          \u002F\u002F Prevent \\\"uncaught exception: Object\\\"-messages in the console.\\n          promise.catch(() => {});\\n        } else {\\n          promise = Promise.resolve(\\n            new Page({\\n              pdfManager,\\n              xref: this.xref,\\n              pageIndex,\\n              pageDict,\\n              ref,\\n              globalIdFactory: this._globalIdFactory,\\n              fontCache: catalog.fontCache,\\n              builtInCMapCache: catalog.builtInCMapCache,\\n              standardFontDataCache: catalog.standardFontDataCache,\\n              globalColorSpaceCache: this.globalColorSpaceCache,\\n              globalImageCache: catalog.globalImageCache,\\n              systemFontCache: catalog.systemFontCache,\\n              nonBlendModesSet: catalog.nonBlendModesSet,\\n              xfaFactory: null,\\n            })\\n          );\\n        }\\n\\n        this.#pagePromises.set(pageIndex, promise);\\n      }\\n      catalog.setActualNumPages(pagesTree.size);\\n    }\\n  }\\n\\n  async fontFallback(id, handler) {\\n    const { catalog, pdfManager } = this;\\n\\n    for (const translatedFont of await Promise.all(catalog.fontCache)) {\\n      if (translatedFont.loadedName === id) {\\n        translatedFont.fallback(handler, pdfManager.evaluatorOptions);\\n        return;\\n      }\\n    }\\n  }\\n\\n  async cleanup(manuallyTriggered = false) {\\n    return this.catalog\\n      ? this.catalog.cleanup(manuallyTriggered)\\n      : clearGlobalCaches();\\n  }\\n\\n  async #collectFieldObjects(\\n    name,\\n    parentRef,\\n    fieldRef,\\n    promises,\\n    annotationGlobals,\\n    visitedRefs,\\n    orphanFields\\n  ) {\\n    const { xref } = this;\\n\\n    if (!(fieldRef instanceof Ref) || visitedRefs.has(fieldRef)) {\\n      return;\\n    }\\n    visitedRefs.put(fieldRef);\\n    const field = await xref.fetchAsync(fieldRef);\\n    if (!(field instanceof Dict)) {\\n      return;\\n    }\\n    let subtype = await field.getAsync(\\\"Subtype\\\");\\n    subtype = subtype instanceof Name ? subtype.name : null;\\n    \u002F\u002F Skip unrelated annotation types (see issue 19281).\\n    switch (subtype) {\\n      case \\\"Link\\\":\\n        return;\\n    }\\n    if (field.has(\\\"T\\\")) {\\n      const partName = stringToPDFString(await field.getAsync(\\\"T\\\"));\\n      name = name === \\\"\\\" ? partName : `${name}.${partName}`;\\n    } else {\\n      let obj = field;\\n      while (true) {\\n        obj = obj.getRaw(\\\"Parent\\\") || parentRef;\\n        if (obj instanceof Ref) {\\n          if (visitedRefs.has(obj)) {\\n            break;\\n          }\\n          obj = await xref.fetchAsync(obj);\\n        }\\n        if (!(obj instanceof Dict)) {\\n          break;\\n        }\\n        if (obj.has(\\\"T\\\")) {\\n          const partName = stringToPDFString(await obj.getAsync(\\\"T\\\"));\\n          name = name === \\\"\\\" ? partName : `${name}.${partName}`;\\n          break;\\n        }\\n      }\\n    }\\n\\n    if (\\n      parentRef &&\\n      !field.has(\\\"Parent\\\") &&\\n      isName(field.get(\\\"Subtype\\\"), \\\"Widget\\\")\\n    ) {\\n      \u002F\u002F We've a parent from the Fields array, but the field hasn't.\\n      orphanFields.put(fieldRef, parentRef);\\n    }\\n\\n    if (!promises.has(name)) {\\n      promises.set(name, []);\\n    }\\n    promises.get(name).push(\\n      AnnotationFactory.create(\\n        xref,\\n        fieldRef,\\n        annotationGlobals,\\n        \u002F* idFactory = *\u002F null,\\n        \u002F* collectFields *\u002F true,\\n        orphanFields,\\n        \u002F* pageRef *\u002F null\\n      )\\n        .then(annotation => annotation?.getFieldObject())\\n        .catch(function (reason) {\\n          warn(`#collectFieldObjects: \\\"${reason}\\\".`);\\n          return null;\\n        })\\n    );\\n\\n    if (!field.has(\\\"Kids\\\")) {\\n      return;\\n    }\\n    const kids = await field.getAsync(\\\"Kids\\\");\\n    if (Array.isArray(kids)) {\\n      for (const kid of kids) {\\n        await this.#collectFieldObjects(\\n          name,\\n          fieldRef,\\n          kid,\\n          promises,\\n          annotationGlobals,\\n          visitedRefs,\\n          orphanFields\\n        );\\n      }\\n    }\\n  }\\n\\n  get fieldObjects() {\\n    const promise = this.pdfManager\\n      .ensureDoc(\\\"formInfo\\\")\\n      .then(async formInfo => {\\n        if (!formInfo.hasFields) {\\n          return null;\\n        }\\n        const annotationGlobals = await this.annotationGlobals;\\n        if (!annotationGlobals) {\\n          return null;\\n        }\\n        const { acroForm } = annotationGlobals;\\n\\n        const visitedRefs = new RefSet();\\n        const allFields = Object.create(null);\\n        const fieldPromises = new Map();\\n        const orphanFields = new RefSetCache();\\n        for (const fieldRef of acroForm.get(\\\"Fields\\\")) {\\n          await this.#collectFieldObjects(\\n            \\\"\\\",\\n            null,\\n            fieldRef,\\n            fieldPromises,\\n            annotationGlobals,\\n            visitedRefs,\\n            orphanFields\\n          );\\n        }\\n\\n        const allPromises = [];\\n        for (const [name, promises] of fieldPromises) {\\n          allPromises.push(\\n            Promise.all(promises).then(fields => {\\n              fields = fields.filter(field => !!field);\\n              if (fields.length > 0) {\\n                allFields[name] = fields;\\n              }\\n            })\\n          );\\n        }\\n        await Promise.all(allPromises);\\n\\n        return {\\n          allFields: objectSize(allFields) > 0 ? allFields : null,\\n          orphanFields,\\n        };\\n      });\\n\\n    return shadow(this, \\\"fieldObjects\\\", promise);\\n  }\\n\\n  get hasJSActions() {\\n    const promise = this.pdfManager.ensureDoc(\\\"_parseHasJSActions\\\");\\n    return shadow(this, \\\"hasJSActions\\\", promise);\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  async _parseHasJSActions() {\\n    const [catalogJsActions, fieldObjects] = await Promise.all([\\n      this.pdfManager.ensureCatalog(\\\"jsActions\\\"),\\n      this.pdfManager.ensureDoc(\\\"fieldObjects\\\"),\\n    ]);\\n\\n    if (catalogJsActions) {\\n      return true;\\n    }\\n    if (fieldObjects?.allFields) {\\n      return Object.values(fieldObjects.allFields).some(fieldObject =>\\n        fieldObject.some(object => object.actions !== null)\\n      );\\n    }\\n    return false;\\n  }\\n\\n  get calculationOrderIds() {\\n    const calculationOrder = this.catalog.acroForm?.get(\\\"CO\\\");\\n    if (!Array.isArray(calculationOrder) || calculationOrder.length === 0) {\\n      return shadow(this, \\\"calculationOrderIds\\\", null);\\n    }\\n\\n    const ids = [];\\n    for (const id of calculationOrder) {\\n      if (id instanceof Ref) {\\n        ids.push(id.toString());\\n      }\\n    }\\n    return shadow(this, \\\"calculationOrderIds\\\", ids.length ? ids : null);\\n  }\\n\\n  get annotationGlobals() {\\n    return shadow(\\n      this,\\n      \\\"annotationGlobals\\\",\\n      AnnotationFactory.createGlobals(this.pdfManager)\\n    );\\n  }\\n}\\n\\nexport { Page, PDFDocument };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { CmykICCBasedCS, IccColorSpace } from \\\".\u002Ficc_colorspace.js\\\";\\nimport {\\n  createValidAbsoluteUrl,\\n  FeatureTest,\\n  unreachable,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { ChunkedStreamManager } from \\\".\u002Fchunked_stream.js\\\";\\nimport { ImageResizer } from \\\".\u002Fimage_resizer.js\\\";\\nimport { JpegStream } from \\\".\u002Fjpeg_stream.js\\\";\\nimport { JpxImage } from \\\".\u002Fjpx.js\\\";\\nimport { MissingDataException } from \\\".\u002Fcore_utils.js\\\";\\nimport { OperatorList } from \\\".\u002Foperator_list.js\\\";\\nimport { PDFDocument } from \\\".\u002Fdocument.js\\\";\\nimport { Stream } from \\\".\u002Fstream.js\\\";\\n\\nfunction parseDocBaseUrl(url) {\\n  if (url) {\\n    const absoluteUrl = createValidAbsoluteUrl(url);\\n    if (absoluteUrl) {\\n      return absoluteUrl.href;\\n    }\\n    warn(`Invalid absolute docBaseUrl: \\\"${url}\\\".`);\\n  }\\n  return null;\\n}\\n\\nclass BasePdfManager {\\n  constructor({\\n    \u002F\u002F source,\\n    \u002F\u002F disableAutoFetch,\\n    docBaseUrl,\\n    docId,\\n    enableXfa,\\n    evaluatorOptions,\\n    handler,\\n    \u002F\u002F length,\\n    password,\\n    \u002F\u002F rangeChunkSize,\\n  }) {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      this.constructor === BasePdfManager\\n    ) {\\n      unreachable(\\\"Cannot initialize BasePdfManager.\\\");\\n    }\\n    this._docBaseUrl = parseDocBaseUrl(docBaseUrl);\\n    this._docId = docId;\\n    this._password = password;\\n    this.enableXfa = enableXfa;\\n\\n    \u002F\u002F Check `OffscreenCanvas` and `ImageDecoder` support once,\\n    \u002F\u002F rather than repeatedly throughout the worker-thread code.\\n    evaluatorOptions.isOffscreenCanvasSupported &&=\\n      FeatureTest.isOffscreenCanvasSupported;\\n    evaluatorOptions.isImageDecoderSupported &&=\\n      FeatureTest.isImageDecoderSupported;\\n    this.evaluatorOptions = Object.freeze(evaluatorOptions);\\n\\n    \u002F\u002F Initialize image-options once per document.\\n    ImageResizer.setOptions(evaluatorOptions);\\n    JpegStream.setOptions(evaluatorOptions);\\n    OperatorList.setOptions(evaluatorOptions);\\n\\n    const options = { ...evaluatorOptions, handler };\\n    JpxImage.setOptions(options);\\n    IccColorSpace.setOptions(options);\\n    CmykICCBasedCS.setOptions(options);\\n  }\\n\\n  get docId() {\\n    return this._docId;\\n  }\\n\\n  get password() {\\n    return this._password;\\n  }\\n\\n  get docBaseUrl() {\\n    return this._docBaseUrl;\\n  }\\n\\n  ensureDoc(prop, args) {\\n    return this.ensure(this.pdfDocument, prop, args);\\n  }\\n\\n  ensureXRef(prop, args) {\\n    return this.ensure(this.pdfDocument.xref, prop, args);\\n  }\\n\\n  ensureCatalog(prop, args) {\\n    return this.ensure(this.pdfDocument.catalog, prop, args);\\n  }\\n\\n  getPage(pageIndex) {\\n    return this.pdfDocument.getPage(pageIndex);\\n  }\\n\\n  fontFallback(id, handler) {\\n    return this.pdfDocument.fontFallback(id, handler);\\n  }\\n\\n  cleanup(manuallyTriggered = false) {\\n    return this.pdfDocument.cleanup(manuallyTriggered);\\n  }\\n\\n  async ensure(obj, prop, args) {\\n    unreachable(\\\"Abstract method `ensure` called\\\");\\n  }\\n\\n  requestRange(begin, end) {\\n    unreachable(\\\"Abstract method `requestRange` called\\\");\\n  }\\n\\n  requestLoadedStream(noFetch = false) {\\n    unreachable(\\\"Abstract method `requestLoadedStream` called\\\");\\n  }\\n\\n  sendProgressiveData(chunk) {\\n    unreachable(\\\"Abstract method `sendProgressiveData` called\\\");\\n  }\\n\\n  updatePassword(password) {\\n    this._password = password;\\n  }\\n\\n  terminate(reason) {\\n    unreachable(\\\"Abstract method `terminate` called\\\");\\n  }\\n}\\n\\nclass LocalPdfManager extends BasePdfManager {\\n  constructor(args) {\\n    super(args);\\n\\n    const stream = new Stream(args.source);\\n    this.pdfDocument = new PDFDocument(this, stream);\\n    this._loadedStreamPromise = Promise.resolve(stream);\\n  }\\n\\n  async ensure(obj, prop, args) {\\n    const value = obj[prop];\\n    if (typeof value === \\\"function\\\") {\\n      return value.apply(obj, args);\\n    }\\n    return value;\\n  }\\n\\n  requestRange(begin, end) {\\n    return Promise.resolve();\\n  }\\n\\n  requestLoadedStream(noFetch = false) {\\n    return this._loadedStreamPromise;\\n  }\\n\\n  terminate(reason) {}\\n}\\n\\nclass NetworkPdfManager extends BasePdfManager {\\n  constructor(args) {\\n    super(args);\\n\\n    this.streamManager = new ChunkedStreamManager(args.source, {\\n      msgHandler: args.handler,\\n      length: args.length,\\n      disableAutoFetch: args.disableAutoFetch,\\n      rangeChunkSize: args.rangeChunkSize,\\n    });\\n    this.pdfDocument = new PDFDocument(this, this.streamManager.getStream());\\n  }\\n\\n  async ensure(obj, prop, args) {\\n    try {\\n      const value = obj[prop];\\n      if (typeof value === \\\"function\\\") {\\n        return value.apply(obj, args);\\n      }\\n      return value;\\n    } catch (ex) {\\n      if (!(ex instanceof MissingDataException)) {\\n        throw ex;\\n      }\\n      await this.requestRange(ex.begin, ex.end);\\n      return this.ensure(obj, prop, args);\\n    }\\n  }\\n\\n  requestRange(begin, end) {\\n    return this.streamManager.requestRange(begin, end);\\n  }\\n\\n  requestLoadedStream(noFetch = false) {\\n    return this.streamManager.requestAllChunks(noFetch);\\n  }\\n\\n  sendProgressiveData(chunk) {\\n    this.streamManager.onReceiveData({ chunk });\\n  }\\n\\n  terminate(reason) {\\n    this.streamManager.abort(reason);\\n  }\\n}\\n\\nexport { LocalPdfManager, NetworkPdfManager };\\n\",\"\u002F* Copyright 2018 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  AbortException,\\n  assert,\\n  InvalidPDFException,\\n  PasswordException,\\n  ResponseException,\\n  UnknownErrorException,\\n  unreachable,\\n} from \\\".\u002Futil.js\\\";\\n\\nconst CallbackKind = {\\n  DATA: 1,\\n  ERROR: 2,\\n};\\n\\nconst StreamKind = {\\n  CANCEL: 1,\\n  CANCEL_COMPLETE: 2,\\n  CLOSE: 3,\\n  ENQUEUE: 4,\\n  ERROR: 5,\\n  PULL: 6,\\n  PULL_COMPLETE: 7,\\n  START_COMPLETE: 8,\\n};\\n\\nfunction onFn() {}\\n\\nfunction wrapReason(ex) {\\n  if (\\n    ex instanceof AbortException ||\\n    ex instanceof InvalidPDFException ||\\n    ex instanceof PasswordException ||\\n    ex instanceof ResponseException ||\\n    ex instanceof UnknownErrorException\\n  ) {\\n    \u002F\u002F Avoid re-creating the exception when its type is already correct.\\n    return ex;\\n  }\\n\\n  if (!(ex instanceof Error || (typeof ex === \\\"object\\\" && ex !== null))) {\\n    unreachable(\\n      'wrapReason: Expected \\\"reason\\\" to be a (possibly cloned) Error.'\\n    );\\n  }\\n  switch (ex.name) {\\n    case \\\"AbortException\\\":\\n      return new AbortException(ex.message);\\n    case \\\"InvalidPDFException\\\":\\n      return new InvalidPDFException(ex.message);\\n    case \\\"PasswordException\\\":\\n      return new PasswordException(ex.message, ex.code);\\n    case \\\"ResponseException\\\":\\n      return new ResponseException(ex.message, ex.status, ex.missing);\\n    case \\\"UnknownErrorException\\\":\\n      return new UnknownErrorException(ex.message, ex.details);\\n  }\\n  return new UnknownErrorException(ex.message, ex.toString());\\n}\\n\\nclass MessageHandler {\\n  #messageAC = new AbortController();\\n\\n  constructor(sourceName, targetName, comObj) {\\n    this.sourceName = sourceName;\\n    this.targetName = targetName;\\n    this.comObj = comObj;\\n    this.callbackId = 1;\\n    this.streamId = 1;\\n    this.streamSinks = Object.create(null);\\n    this.streamControllers = Object.create(null);\\n    this.callbackCapabilities = Object.create(null);\\n    this.actionHandler = Object.create(null);\\n\\n    comObj.addEventListener(\\\"message\\\", this.#onMessage.bind(this), {\\n      signal: this.#messageAC.signal,\\n    });\\n  }\\n\\n  #onMessage({ data }) {\\n    if (data.targetName !== this.sourceName) {\\n      return;\\n    }\\n    if (data.stream) {\\n      this.#processStreamMessage(data);\\n      return;\\n    }\\n    if (data.callback) {\\n      const callbackId = data.callbackId;\\n      const capability = this.callbackCapabilities[callbackId];\\n      if (!capability) {\\n        throw new Error(`Cannot resolve callback ${callbackId}`);\\n      }\\n      delete this.callbackCapabilities[callbackId];\\n\\n      if (data.callback === CallbackKind.DATA) {\\n        capability.resolve(data.data);\\n      } else if (data.callback === CallbackKind.ERROR) {\\n        capability.reject(wrapReason(data.reason));\\n      } else {\\n        throw new Error(\\\"Unexpected callback case\\\");\\n      }\\n      return;\\n    }\\n    const action = this.actionHandler[data.action];\\n    if (!action) {\\n      throw new Error(`Unknown action from worker: ${data.action}`);\\n    }\\n    if (data.callbackId) {\\n      const sourceName = this.sourceName,\\n        targetName = data.sourceName,\\n        comObj = this.comObj;\\n\\n      Promise.try(action, data.data).then(\\n        function (result) {\\n          comObj.postMessage({\\n            sourceName,\\n            targetName,\\n            callback: CallbackKind.DATA,\\n            callbackId: data.callbackId,\\n            data: result,\\n          });\\n        },\\n        function (reason) {\\n          comObj.postMessage({\\n            sourceName,\\n            targetName,\\n            callback: CallbackKind.ERROR,\\n            callbackId: data.callbackId,\\n            reason: wrapReason(reason),\\n          });\\n        }\\n      );\\n      return;\\n    }\\n    if (data.streamId) {\\n      this.#createStreamSink(data);\\n      return;\\n    }\\n    action(data.data);\\n  }\\n\\n  on(actionName, handler) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      assert(\\n        typeof handler === \\\"function\\\",\\n        'MessageHandler.on: Expected \\\"handler\\\" to be a function.'\\n      );\\n    }\\n    const ah = this.actionHandler;\\n    if (ah[actionName]) {\\n      throw new Error(`There is already an actionName called \\\"${actionName}\\\"`);\\n    }\\n    ah[actionName] = handler;\\n  }\\n\\n  \u002F**\\n   * Sends a message to the comObj to invoke the action with the supplied data.\\n   * @param {string} actionName - Action to call.\\n   * @param {JSON} data - JSON data to send.\\n   * @param {Array} [transfers] - List of transfers\u002FArrayBuffers.\\n   *\u002F\\n  send(actionName, data, transfers) {\\n    this.comObj.postMessage(\\n      {\\n        sourceName: this.sourceName,\\n        targetName: this.targetName,\\n        action: actionName,\\n        data,\\n      },\\n      transfers\\n    );\\n  }\\n\\n  \u002F**\\n   * Sends a message to the comObj to invoke the action with the supplied data.\\n   * Expects that the other side will callback with the response.\\n   * @param {string} actionName - Action to call.\\n   * @param {JSON} data - JSON data to send.\\n   * @param {Array} [transfers] - List of transfers\u002FArrayBuffers.\\n   * @returns {Promise} Promise to be resolved with response data.\\n   *\u002F\\n  sendWithPromise(actionName, data, transfers) {\\n    const callbackId = this.callbackId++;\\n    const capability = Promise.withResolvers();\\n    this.callbackCapabilities[callbackId] = capability;\\n    try {\\n      this.comObj.postMessage(\\n        {\\n          sourceName: this.sourceName,\\n          targetName: this.targetName,\\n          action: actionName,\\n          callbackId,\\n          data,\\n        },\\n        transfers\\n      );\\n    } catch (ex) {\\n      capability.reject(ex);\\n    }\\n    return capability.promise;\\n  }\\n\\n  \u002F**\\n   * Sends a message to the comObj to invoke the action with the supplied data.\\n   * Expect that the other side will callback to signal 'start_complete'.\\n   * @param {string} actionName - Action to call.\\n   * @param {JSON} data - JSON data to send.\\n   * @param {Object} queueingStrategy - Strategy to signal backpressure based on\\n   *                 internal queue.\\n   * @param {Array} [transfers] - List of transfers\u002FArrayBuffers.\\n   * @returns {ReadableStream} ReadableStream to read data in chunks.\\n   *\u002F\\n  sendWithStream(actionName, data, queueingStrategy, transfers) {\\n    const streamId = this.streamId++,\\n      sourceName = this.sourceName,\\n      targetName = this.targetName,\\n      comObj = this.comObj;\\n\\n    return new ReadableStream(\\n      {\\n        start: controller => {\\n          const startCapability = Promise.withResolvers();\\n          this.streamControllers[streamId] = {\\n            controller,\\n            startCall: startCapability,\\n            pullCall: null,\\n            cancelCall: null,\\n            isClosed: false,\\n          };\\n          comObj.postMessage(\\n            {\\n              sourceName,\\n              targetName,\\n              action: actionName,\\n              streamId,\\n              data,\\n              desiredSize: controller.desiredSize,\\n            },\\n            transfers\\n          );\\n          \u002F\u002F Return Promise for Async process, to signal success\u002Ffailure.\\n          return startCapability.promise;\\n        },\\n\\n        pull: controller => {\\n          const pullCapability = Promise.withResolvers();\\n          this.streamControllers[streamId].pullCall = pullCapability;\\n          comObj.postMessage({\\n            sourceName,\\n            targetName,\\n            stream: StreamKind.PULL,\\n            streamId,\\n            desiredSize: controller.desiredSize,\\n          });\\n          \u002F\u002F Returning Promise will not call \\\"pull\\\"\\n          \u002F\u002F again until current pull is resolved.\\n          return pullCapability.promise;\\n        },\\n\\n        cancel: reason => {\\n          assert(reason instanceof Error, \\\"cancel must have a valid reason\\\");\\n          const cancelCapability = Promise.withResolvers();\\n          this.streamControllers[streamId].cancelCall = cancelCapability;\\n          this.streamControllers[streamId].isClosed = true;\\n          comObj.postMessage({\\n            sourceName,\\n            targetName,\\n            stream: StreamKind.CANCEL,\\n            streamId,\\n            reason: wrapReason(reason),\\n          });\\n          \u002F\u002F Return Promise to signal success or failure.\\n          return cancelCapability.promise;\\n        },\\n      },\\n      queueingStrategy\\n    );\\n  }\\n\\n  #createStreamSink(data) {\\n    const streamId = data.streamId,\\n      sourceName = this.sourceName,\\n      targetName = data.sourceName,\\n      comObj = this.comObj;\\n    const self = this,\\n      action = this.actionHandler[data.action];\\n\\n    const streamSink = {\\n      enqueue(chunk, size = 1, transfers) {\\n        if (this.isCancelled) {\\n          return;\\n        }\\n        const lastDesiredSize = this.desiredSize;\\n        this.desiredSize -= size;\\n        \u002F\u002F Enqueue decreases the desiredSize property of sink,\\n        \u002F\u002F so when it changes from positive to negative,\\n        \u002F\u002F set ready as unresolved promise.\\n        if (lastDesiredSize > 0 && this.desiredSize \u003C= 0) {\\n          this.sinkCapability = Promise.withResolvers();\\n          this.ready = this.sinkCapability.promise;\\n        }\\n        comObj.postMessage(\\n          {\\n            sourceName,\\n            targetName,\\n            stream: StreamKind.ENQUEUE,\\n            streamId,\\n            chunk,\\n          },\\n          transfers\\n        );\\n      },\\n\\n      close() {\\n        if (this.isCancelled) {\\n          return;\\n        }\\n        this.isCancelled = true;\\n        comObj.postMessage({\\n          sourceName,\\n          targetName,\\n          stream: StreamKind.CLOSE,\\n          streamId,\\n        });\\n        delete self.streamSinks[streamId];\\n      },\\n\\n      error(reason) {\\n        assert(reason instanceof Error, \\\"error must have a valid reason\\\");\\n        if (this.isCancelled) {\\n          return;\\n        }\\n        this.isCancelled = true;\\n        comObj.postMessage({\\n          sourceName,\\n          targetName,\\n          stream: StreamKind.ERROR,\\n          streamId,\\n          reason: wrapReason(reason),\\n        });\\n      },\\n\\n      sinkCapability: Promise.withResolvers(),\\n      onPull: null,\\n      onCancel: null,\\n      isCancelled: false,\\n      desiredSize: data.desiredSize,\\n      ready: null,\\n    };\\n\\n    streamSink.sinkCapability.resolve();\\n    streamSink.ready = streamSink.sinkCapability.promise;\\n    this.streamSinks[streamId] = streamSink;\\n\\n    Promise.try(action, data.data, streamSink).then(\\n      function () {\\n        comObj.postMessage({\\n          sourceName,\\n          targetName,\\n          stream: StreamKind.START_COMPLETE,\\n          streamId,\\n          success: true,\\n        });\\n      },\\n      function (reason) {\\n        comObj.postMessage({\\n          sourceName,\\n          targetName,\\n          stream: StreamKind.START_COMPLETE,\\n          streamId,\\n          reason: wrapReason(reason),\\n        });\\n      }\\n    );\\n  }\\n\\n  #processStreamMessage(data) {\\n    const streamId = data.streamId,\\n      sourceName = this.sourceName,\\n      targetName = data.sourceName,\\n      comObj = this.comObj;\\n    const streamController = this.streamControllers[streamId],\\n      streamSink = this.streamSinks[streamId];\\n\\n    switch (data.stream) {\\n      case StreamKind.START_COMPLETE:\\n        if (data.success) {\\n          streamController.startCall.resolve();\\n        } else {\\n          streamController.startCall.reject(wrapReason(data.reason));\\n        }\\n        break;\\n      case StreamKind.PULL_COMPLETE:\\n        if (data.success) {\\n          streamController.pullCall.resolve();\\n        } else {\\n          streamController.pullCall.reject(wrapReason(data.reason));\\n        }\\n        break;\\n      case StreamKind.PULL:\\n        \u002F\u002F Ignore any pull after close is called.\\n        if (!streamSink) {\\n          comObj.postMessage({\\n            sourceName,\\n            targetName,\\n            stream: StreamKind.PULL_COMPLETE,\\n            streamId,\\n            success: true,\\n          });\\n          break;\\n        }\\n        \u002F\u002F Pull increases the desiredSize property of sink, so when it changes\\n        \u002F\u002F from negative to positive, set ready property as resolved promise.\\n        if (streamSink.desiredSize \u003C= 0 && data.desiredSize > 0) {\\n          streamSink.sinkCapability.resolve();\\n        }\\n        \u002F\u002F Reset desiredSize property of sink on every pull.\\n        streamSink.desiredSize = data.desiredSize;\\n\\n        Promise.try(streamSink.onPull || onFn).then(\\n          function () {\\n            comObj.postMessage({\\n              sourceName,\\n              targetName,\\n              stream: StreamKind.PULL_COMPLETE,\\n              streamId,\\n              success: true,\\n            });\\n          },\\n          function (reason) {\\n            comObj.postMessage({\\n              sourceName,\\n              targetName,\\n              stream: StreamKind.PULL_COMPLETE,\\n              streamId,\\n              reason: wrapReason(reason),\\n            });\\n          }\\n        );\\n        break;\\n      case StreamKind.ENQUEUE:\\n        assert(streamController, \\\"enqueue should have stream controller\\\");\\n        if (streamController.isClosed) {\\n          break;\\n        }\\n        streamController.controller.enqueue(data.chunk);\\n        break;\\n      case StreamKind.CLOSE:\\n        assert(streamController, \\\"close should have stream controller\\\");\\n        if (streamController.isClosed) {\\n          break;\\n        }\\n        streamController.isClosed = true;\\n        streamController.controller.close();\\n        this.#deleteStreamController(streamController, streamId);\\n        break;\\n      case StreamKind.ERROR:\\n        assert(streamController, \\\"error should have stream controller\\\");\\n        streamController.controller.error(wrapReason(data.reason));\\n        this.#deleteStreamController(streamController, streamId);\\n        break;\\n      case StreamKind.CANCEL_COMPLETE:\\n        if (data.success) {\\n          streamController.cancelCall.resolve();\\n        } else {\\n          streamController.cancelCall.reject(wrapReason(data.reason));\\n        }\\n        this.#deleteStreamController(streamController, streamId);\\n        break;\\n      case StreamKind.CANCEL:\\n        if (!streamSink) {\\n          break;\\n        }\\n        const dataReason = wrapReason(data.reason);\\n\\n        Promise.try(streamSink.onCancel || onFn, dataReason).then(\\n          function () {\\n            comObj.postMessage({\\n              sourceName,\\n              targetName,\\n              stream: StreamKind.CANCEL_COMPLETE,\\n              streamId,\\n              success: true,\\n            });\\n          },\\n          function (reason) {\\n            comObj.postMessage({\\n              sourceName,\\n              targetName,\\n              stream: StreamKind.CANCEL_COMPLETE,\\n              streamId,\\n              reason: wrapReason(reason),\\n            });\\n          }\\n        );\\n        streamSink.sinkCapability.reject(dataReason);\\n        streamSink.isCancelled = true;\\n        delete this.streamSinks[streamId];\\n        break;\\n      default:\\n        throw new Error(\\\"Unexpected stream case\\\");\\n    }\\n  }\\n\\n  async #deleteStreamController(streamController, streamId) {\\n    \u002F\u002F Delete the `streamController` only when the start, pull, and cancel\\n    \u002F\u002F capabilities have settled, to prevent `TypeError`s.\\n    await Promise.allSettled([\\n      streamController.startCall?.promise,\\n      streamController.pullCall?.promise,\\n      streamController.cancelCall?.promise,\\n    ]);\\n    delete this.streamControllers[streamId];\\n  }\\n\\n  destroy() {\\n    this.#messageAC?.abort();\\n    this.#messageAC = null;\\n  }\\n}\\n\\nexport { MessageHandler, wrapReason };\\n\",\"\u002F* Copyright 2020 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { bytesToString, info, warn } from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport { Dict, isName, Name, Ref } from \\\".\u002Fprimitives.js\\\";\\nimport {\\n  escapePDFName,\\n  escapeString,\\n  getSizeInBytes,\\n  numberToString,\\n  parseXFAPath,\\n} from \\\".\u002Fcore_utils.js\\\";\\nimport { SimpleDOMNode, SimpleXMLParser } from \\\".\u002Fxml_parser.js\\\";\\nimport { Stream, StringStream } from \\\".\u002Fstream.js\\\";\\nimport { BaseStream } from \\\".\u002Fbase_stream.js\\\";\\nimport { calculateMD5 } from \\\".\u002Fcalculate_md5.js\\\";\\n\\nasync function writeObject(ref, obj, buffer, { encrypt = null }) {\\n  const transform = encrypt?.createCipherTransform(ref.num, ref.gen);\\n  buffer.push(`${ref.num} ${ref.gen} obj\\\\n`);\\n  if (obj instanceof Dict) {\\n    await writeDict(obj, buffer, transform);\\n  } else if (obj instanceof BaseStream) {\\n    await writeStream(obj, buffer, transform);\\n  } else if (Array.isArray(obj) || ArrayBuffer.isView(obj)) {\\n    await writeArray(obj, buffer, transform);\\n  }\\n  buffer.push(\\\"\\\\nendobj\\\\n\\\");\\n}\\n\\nasync function writeDict(dict, buffer, transform) {\\n  buffer.push(\\\"\u003C\u003C\\\");\\n  for (const key of dict.getKeys()) {\\n    buffer.push(` \u002F${escapePDFName(key)} `);\\n    await writeValue(dict.getRaw(key), buffer, transform);\\n  }\\n  buffer.push(\\\">>\\\");\\n}\\n\\nasync function writeStream(stream, buffer, transform) {\\n  let bytes = stream.getBytes();\\n  const { dict } = stream;\\n\\n  const [filter, params] = await Promise.all([\\n    dict.getAsync(\\\"Filter\\\"),\\n    dict.getAsync(\\\"DecodeParms\\\"),\\n  ]);\\n\\n  const filterZero = Array.isArray(filter)\\n    ? await dict.xref.fetchIfRefAsync(filter[0])\\n    : filter;\\n  const isFilterZeroFlateDecode = isName(filterZero, \\\"FlateDecode\\\");\\n\\n  \u002F\u002F If the string is too small there is no real benefit in compressing it.\\n  \u002F\u002F The number 256 is arbitrary, but it should be reasonable.\\n  const MIN_LENGTH_FOR_COMPRESSING = 256;\\n\\n  if (bytes.length >= MIN_LENGTH_FOR_COMPRESSING || isFilterZeroFlateDecode) {\\n    try {\\n      const cs = new CompressionStream(\\\"deflate\\\");\\n      const writer = cs.writable.getWriter();\\n      await writer.ready;\\n      writer\\n        .write(bytes)\\n        .then(async () => {\\n          await writer.ready;\\n          await writer.close();\\n        })\\n        .catch(() => {});\\n\\n      \u002F\u002F Response::text doesn't return the correct data.\\n      const buf = await new Response(cs.readable).arrayBuffer();\\n      bytes = new Uint8Array(buf);\\n\\n      let newFilter, newParams;\\n      if (!filter) {\\n        newFilter = Name.get(\\\"FlateDecode\\\");\\n      } else if (!isFilterZeroFlateDecode) {\\n        newFilter = Array.isArray(filter)\\n          ? [Name.get(\\\"FlateDecode\\\"), ...filter]\\n          : [Name.get(\\\"FlateDecode\\\"), filter];\\n        if (params) {\\n          newParams = Array.isArray(params)\\n            ? [null, ...params]\\n            : [null, params];\\n        }\\n      }\\n      if (newFilter) {\\n        dict.set(\\\"Filter\\\", newFilter);\\n      }\\n      if (newParams) {\\n        dict.set(\\\"DecodeParms\\\", newParams);\\n      }\\n    } catch (ex) {\\n      info(`writeStream - cannot compress data: \\\"${ex}\\\".`);\\n    }\\n  }\\n\\n  let string = bytesToString(bytes);\\n  if (transform) {\\n    string = transform.encryptString(string);\\n  }\\n\\n  dict.set(\\\"Length\\\", string.length);\\n  await writeDict(dict, buffer, transform);\\n  buffer.push(\\\" stream\\\\n\\\", string, \\\"\\\\nendstream\\\");\\n}\\n\\nasync function writeArray(array, buffer, transform) {\\n  buffer.push(\\\"[\\\");\\n  let first = true;\\n  for (const val of array) {\\n    if (!first) {\\n      buffer.push(\\\" \\\");\\n    } else {\\n      first = false;\\n    }\\n    await writeValue(val, buffer, transform);\\n  }\\n  buffer.push(\\\"]\\\");\\n}\\n\\nasync function writeValue(value, buffer, transform) {\\n  if (value instanceof Name) {\\n    buffer.push(`\u002F${escapePDFName(value.name)}`);\\n  } else if (value instanceof Ref) {\\n    buffer.push(`${value.num} ${value.gen} R`);\\n  } else if (Array.isArray(value) || ArrayBuffer.isView(value)) {\\n    await writeArray(value, buffer, transform);\\n  } else if (typeof value === \\\"string\\\") {\\n    if (transform) {\\n      value = transform.encryptString(value);\\n    }\\n    buffer.push(`(${escapeString(value)})`);\\n  } else if (typeof value === \\\"number\\\") {\\n    buffer.push(numberToString(value));\\n  } else if (typeof value === \\\"boolean\\\") {\\n    buffer.push(value.toString());\\n  } else if (value instanceof Dict) {\\n    await writeDict(value, buffer, transform);\\n  } else if (value instanceof BaseStream) {\\n    await writeStream(value, buffer, transform);\\n  } else if (value === null) {\\n    buffer.push(\\\"null\\\");\\n  } else {\\n    warn(`Unhandled value in writer: ${typeof value}, please file a bug.`);\\n  }\\n}\\n\\nfunction writeInt(number, size, offset, buffer) {\\n  for (let i = size + offset - 1; i > offset - 1; i--) {\\n    buffer[i] = number & 0xff;\\n    number >>= 8;\\n  }\\n  return offset + size;\\n}\\n\\nfunction writeString(string, offset, buffer) {\\n  const ii = string.length;\\n  for (let i = 0; i \u003C ii; i++) {\\n    buffer[offset + i] = string.charCodeAt(i) & 0xff;\\n  }\\n  return offset + ii;\\n}\\n\\nfunction computeMD5(filesize, xrefInfo) {\\n  const time = Math.floor(Date.now() \u002F 1000);\\n  const filename = xrefInfo.filename || \\\"\\\";\\n  const md5Buffer = [\\n    time.toString(),\\n    filename,\\n    filesize.toString(),\\n    ...xrefInfo.infoMap.values(),\\n  ];\\n  const md5BufferLen = Math.sumPrecise(md5Buffer.map(str => str.length));\\n\\n  const array = new Uint8Array(md5BufferLen);\\n  let offset = 0;\\n  for (const str of md5Buffer) {\\n    offset = writeString(str, offset, array);\\n  }\\n  return bytesToString(calculateMD5(array, 0, array.length));\\n}\\n\\nfunction writeXFADataForAcroform(str, changes) {\\n  const xml = new SimpleXMLParser({ hasAttributes: true }).parseFromString(str);\\n\\n  for (const { xfa } of changes) {\\n    if (!xfa) {\\n      continue;\\n    }\\n    const { path, value } = xfa;\\n    if (!path) {\\n      continue;\\n    }\\n    const nodePath = parseXFAPath(path);\\n    let node = xml.documentElement.searchNode(nodePath, 0);\\n    if (!node && nodePath.length > 1) {\\n      \u002F\u002F If we're lucky the last element in the path will identify the node.\\n      node = xml.documentElement.searchNode([nodePath.at(-1)], 0);\\n    }\\n    if (node) {\\n      node.childNodes = Array.isArray(value)\\n        ? value.map(val => new SimpleDOMNode(\\\"value\\\", val))\\n        : [new SimpleDOMNode(\\\"#text\\\", value)];\\n    } else {\\n      warn(`Node not found for path: ${path}`);\\n    }\\n  }\\n  const buffer = [];\\n  xml.documentElement.dump(buffer);\\n  return buffer.join(\\\"\\\");\\n}\\n\\nasync function updateAcroform({\\n  xref,\\n  acroForm,\\n  acroFormRef,\\n  hasXfa,\\n  hasXfaDatasetsEntry,\\n  xfaDatasetsRef,\\n  needAppearances,\\n  changes,\\n}) {\\n  if (hasXfa && !hasXfaDatasetsEntry && !xfaDatasetsRef) {\\n    warn(\\\"XFA - Cannot save it\\\");\\n  }\\n\\n  if (!needAppearances && (!hasXfa || !xfaDatasetsRef || hasXfaDatasetsEntry)) {\\n    return;\\n  }\\n\\n  const dict = acroForm.clone();\\n\\n  if (hasXfa && !hasXfaDatasetsEntry) {\\n    \u002F\u002F We've a XFA array which doesn't contain a datasets entry.\\n    \u002F\u002F So we'll update the AcroForm dictionary to have an XFA containing\\n    \u002F\u002F the datasets.\\n    const newXfa = acroForm.get(\\\"XFA\\\").slice();\\n    newXfa.splice(2, 0, \\\"datasets\\\");\\n    newXfa.splice(3, 0, xfaDatasetsRef);\\n\\n    dict.set(\\\"XFA\\\", newXfa);\\n  }\\n\\n  if (needAppearances) {\\n    dict.set(\\\"NeedAppearances\\\", true);\\n  }\\n\\n  changes.put(acroFormRef, {\\n    data: dict,\\n  });\\n}\\n\\nfunction updateXFA({ xfaData, xfaDatasetsRef, changes, xref }) {\\n  if (xfaData === null) {\\n    const datasets = xref.fetchIfRef(xfaDatasetsRef);\\n    xfaData = writeXFADataForAcroform(datasets.getString(), changes);\\n  }\\n  const xfaDataStream = new StringStream(xfaData);\\n  xfaDataStream.dict = new Dict(xref);\\n  xfaDataStream.dict.set(\\\"Type\\\", Name.get(\\\"EmbeddedFile\\\"));\\n\\n  changes.put(xfaDatasetsRef, {\\n    data: xfaDataStream,\\n  });\\n}\\n\\nasync function getXRefTable(xrefInfo, baseOffset, newRefs, newXref, buffer) {\\n  buffer.push(\\\"xref\\\\n\\\");\\n  const indexes = getIndexes(newRefs);\\n  let indexesPosition = 0;\\n  for (const { ref, data } of newRefs) {\\n    if (ref.num === indexes[indexesPosition]) {\\n      buffer.push(\\n        `${indexes[indexesPosition]} ${indexes[indexesPosition + 1]}\\\\n`\\n      );\\n      indexesPosition += 2;\\n    }\\n    \u002F\u002F The EOL is \\\\r\\\\n to make sure that every entry is exactly 20 bytes long.\\n    \u002F\u002F (see 7.5.4 - Cross-Reference Table).\\n    if (data !== null) {\\n      buffer.push(\\n        `${baseOffset.toString().padStart(10, \\\"0\\\")} ${Math.min(ref.gen, 0xffff).toString().padStart(5, \\\"0\\\")} n\\\\r\\\\n`\\n      );\\n      baseOffset += data.length;\\n    } else {\\n      buffer.push(\\n        `0000000000 ${Math.min(ref.gen + 1, 0xffff)\\n          .toString()\\n          .padStart(5, \\\"0\\\")} f\\\\r\\\\n`\\n      );\\n    }\\n  }\\n  computeIDs(baseOffset, xrefInfo, newXref);\\n  buffer.push(\\\"trailer\\\\n\\\");\\n  await writeDict(newXref, buffer);\\n  buffer.push(\\\"\\\\nstartxref\\\\n\\\", baseOffset.toString(), \\\"\\\\n%%EOF\\\\n\\\");\\n}\\n\\nfunction getIndexes(newRefs) {\\n  const indexes = [];\\n  for (const { ref } of newRefs) {\\n    if (ref.num === indexes.at(-2) + indexes.at(-1)) {\\n      indexes[indexes.length - 1] += 1;\\n    } else {\\n      indexes.push(ref.num, 1);\\n    }\\n  }\\n  return indexes;\\n}\\n\\nasync function getXRefStreamTable(\\n  xrefInfo,\\n  baseOffset,\\n  newRefs,\\n  newXref,\\n  buffer\\n) {\\n  const xrefTableData = [];\\n  let maxOffset = 0;\\n  let maxGen = 0;\\n  for (const { ref, data } of newRefs) {\\n    let gen;\\n    maxOffset = Math.max(maxOffset, baseOffset);\\n    if (data !== null) {\\n      gen = Math.min(ref.gen, 0xffff);\\n      xrefTableData.push([1, baseOffset, gen]);\\n      baseOffset += data.length;\\n    } else {\\n      gen = Math.min(ref.gen + 1, 0xffff);\\n      xrefTableData.push([0, 0, gen]);\\n    }\\n    maxGen = Math.max(maxGen, gen);\\n  }\\n  newXref.set(\\\"Index\\\", getIndexes(newRefs));\\n  const offsetSize = getSizeInBytes(maxOffset);\\n  const maxGenSize = getSizeInBytes(maxGen);\\n  const sizes = [1, offsetSize, maxGenSize];\\n  newXref.set(\\\"W\\\", sizes);\\n  computeIDs(baseOffset, xrefInfo, newXref);\\n\\n  const structSize = Math.sumPrecise(sizes);\\n  const data = new Uint8Array(structSize * xrefTableData.length);\\n  const stream = new Stream(data);\\n  stream.dict = newXref;\\n\\n  let offset = 0;\\n  for (const [type, objOffset, gen] of xrefTableData) {\\n    offset = writeInt(type, sizes[0], offset, data);\\n    offset = writeInt(objOffset, sizes[1], offset, data);\\n    offset = writeInt(gen, sizes[2], offset, data);\\n  }\\n\\n  await writeObject(xrefInfo.newRef, stream, buffer, {});\\n  buffer.push(\\\"startxref\\\\n\\\", baseOffset.toString(), \\\"\\\\n%%EOF\\\\n\\\");\\n}\\n\\nfunction computeIDs(baseOffset, xrefInfo, newXref) {\\n  if (Array.isArray(xrefInfo.fileIds) && xrefInfo.fileIds.length > 0) {\\n    const md5 = computeMD5(baseOffset, xrefInfo);\\n    newXref.set(\\\"ID\\\", [xrefInfo.fileIds[0], md5]);\\n  }\\n}\\n\\nfunction getTrailerDict(xrefInfo, changes, useXrefStream) {\\n  const newXref = new Dict(null);\\n  newXref.set(\\\"Prev\\\", xrefInfo.startXRef);\\n  const refForXrefTable = xrefInfo.newRef;\\n  if (useXrefStream) {\\n    changes.put(refForXrefTable, { data: \\\"\\\" });\\n    newXref.set(\\\"Size\\\", refForXrefTable.num + 1);\\n    newXref.set(\\\"Type\\\", Name.get(\\\"XRef\\\"));\\n  } else {\\n    newXref.set(\\\"Size\\\", refForXrefTable.num);\\n  }\\n  if (xrefInfo.rootRef !== null) {\\n    newXref.set(\\\"Root\\\", xrefInfo.rootRef);\\n  }\\n  if (xrefInfo.infoRef !== null) {\\n    newXref.set(\\\"Info\\\", xrefInfo.infoRef);\\n  }\\n  if (xrefInfo.encryptRef !== null) {\\n    newXref.set(\\\"Encrypt\\\", xrefInfo.encryptRef);\\n  }\\n  return newXref;\\n}\\n\\nasync function writeChanges(changes, xref, buffer = []) {\\n  const newRefs = [];\\n  for (const [ref, { data }] of changes.items()) {\\n    if (data === null || typeof data === \\\"string\\\") {\\n      newRefs.push({ ref, data });\\n      continue;\\n    }\\n    await writeObject(ref, data, buffer, xref);\\n    newRefs.push({ ref, data: buffer.join(\\\"\\\") });\\n    buffer.length = 0;\\n  }\\n  return newRefs.sort((a, b) => \u002F* compare the refs *\u002F a.ref.num - b.ref.num);\\n}\\n\\nasync function incrementalUpdate({\\n  originalData,\\n  xrefInfo,\\n  changes,\\n  xref = null,\\n  hasXfa = false,\\n  xfaDatasetsRef = null,\\n  hasXfaDatasetsEntry = false,\\n  needAppearances,\\n  acroFormRef = null,\\n  acroForm = null,\\n  xfaData = null,\\n  useXrefStream = false,\\n}) {\\n  await updateAcroform({\\n    xref,\\n    acroForm,\\n    acroFormRef,\\n    hasXfa,\\n    hasXfaDatasetsEntry,\\n    xfaDatasetsRef,\\n    needAppearances,\\n    changes,\\n  });\\n\\n  if (hasXfa) {\\n    updateXFA({\\n      xfaData,\\n      xfaDatasetsRef,\\n      changes,\\n      xref,\\n    });\\n  }\\n\\n  const newXref = getTrailerDict(xrefInfo, changes, useXrefStream);\\n  const buffer = [];\\n  const newRefs = await writeChanges(changes, xref, buffer);\\n  let baseOffset = originalData.length;\\n  const lastByte = originalData.at(-1);\\n  if (lastByte !== \u002F* \\\\n *\u002F 0x0a && lastByte !== \u002F* \\\\r *\u002F 0x0d) {\\n    \u002F\u002F Avoid to concatenate %%EOF with an object definition\\n    buffer.push(\\\"\\\\n\\\");\\n    baseOffset += 1;\\n  }\\n\\n  for (const { data } of newRefs) {\\n    if (data !== null) {\\n      buffer.push(data);\\n    }\\n  }\\n\\n  await (useXrefStream\\n    ? getXRefStreamTable(xrefInfo, baseOffset, newRefs, newXref, buffer)\\n    : getXRefTable(xrefInfo, baseOffset, newRefs, newXref, buffer));\\n\\n  const totalLength =\\n    originalData.length + Math.sumPrecise(buffer.map(str => str.length));\\n  const array = new Uint8Array(totalLength);\\n\\n  \u002F\u002F Original data\\n  array.set(originalData);\\n  let offset = originalData.length;\\n\\n  \u002F\u002F New data\\n  for (const str of buffer) {\\n    offset = writeString(str, offset, array);\\n  }\\n\\n  return array;\\n}\\n\\nexport { incrementalUpdate, writeChanges, writeDict, writeObject };\\n\",\"\u002F* Copyright 2019 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { assert } from \\\"..\u002Fshared\u002Futil.js\\\";\\n\\n\u002F** @implements {IPDFStream} *\u002F\\nclass PDFWorkerStream {\\n  constructor(msgHandler) {\\n    this._msgHandler = msgHandler;\\n    this._contentLength = null;\\n    this._fullRequestReader = null;\\n    this._rangeRequestReaders = [];\\n  }\\n\\n  getFullReader() {\\n    assert(\\n      !this._fullRequestReader,\\n      \\\"PDFWorkerStream.getFullReader can only be called once.\\\"\\n    );\\n    this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler);\\n    return this._fullRequestReader;\\n  }\\n\\n  getRangeReader(begin, end) {\\n    const reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler);\\n    this._rangeRequestReaders.push(reader);\\n    return reader;\\n  }\\n\\n  cancelAllRequests(reason) {\\n    this._fullRequestReader?.cancel(reason);\\n\\n    for (const reader of this._rangeRequestReaders.slice(0)) {\\n      reader.cancel(reason);\\n    }\\n  }\\n}\\n\\n\u002F** @implements {IPDFStreamReader} *\u002F\\nclass PDFWorkerStreamReader {\\n  constructor(msgHandler) {\\n    this._msgHandler = msgHandler;\\n    this.onProgress = null;\\n\\n    this._contentLength = null;\\n    this._isRangeSupported = false;\\n    this._isStreamingSupported = false;\\n\\n    const readableStream = this._msgHandler.sendWithStream(\\\"GetReader\\\");\\n    this._reader = readableStream.getReader();\\n\\n    this._headersReady = this._msgHandler\\n      .sendWithPromise(\\\"ReaderHeadersReady\\\")\\n      .then(data => {\\n        this._isStreamingSupported = data.isStreamingSupported;\\n        this._isRangeSupported = data.isRangeSupported;\\n        this._contentLength = data.contentLength;\\n      });\\n  }\\n\\n  get headersReady() {\\n    return this._headersReady;\\n  }\\n\\n  get contentLength() {\\n    return this._contentLength;\\n  }\\n\\n  get isStreamingSupported() {\\n    return this._isStreamingSupported;\\n  }\\n\\n  get isRangeSupported() {\\n    return this._isRangeSupported;\\n  }\\n\\n  async read() {\\n    const { value, done } = await this._reader.read();\\n    if (done) {\\n      return { value: undefined, done: true };\\n    }\\n    \u002F\u002F `value` is wrapped into Uint8Array, we need to\\n    \u002F\u002F unwrap it to ArrayBuffer for further processing.\\n    return { value: value.buffer, done: false };\\n  }\\n\\n  cancel(reason) {\\n    this._reader.cancel(reason);\\n  }\\n}\\n\\n\u002F** @implements {IPDFStreamRangeReader} *\u002F\\nclass PDFWorkerStreamRangeReader {\\n  constructor(begin, end, msgHandler) {\\n    this._msgHandler = msgHandler;\\n    this.onProgress = null;\\n\\n    const readableStream = this._msgHandler.sendWithStream(\\\"GetRangeReader\\\", {\\n      begin,\\n      end,\\n    });\\n    this._reader = readableStream.getReader();\\n  }\\n\\n  get isStreamingSupported() {\\n    return false;\\n  }\\n\\n  async read() {\\n    const { value, done } = await this._reader.read();\\n    if (done) {\\n      return { value: undefined, done: true };\\n    }\\n    return { value: value.buffer, done: false };\\n  }\\n\\n  cancel(reason) {\\n    this._reader.cancel(reason);\\n  }\\n}\\n\\nexport { PDFWorkerStream };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  AbortException,\\n  assert,\\n  getVerbosityLevel,\\n  info,\\n  isNodeJS,\\n  PasswordException,\\n  setVerbosityLevel,\\n  stringToPDFString,\\n  VerbosityLevel,\\n  warn,\\n} from \\\"..\u002Fshared\u002Futil.js\\\";\\nimport {\\n  arrayBuffersToBytes,\\n  getNewAnnotationsMap,\\n  XRefParseException,\\n} from \\\".\u002Fcore_utils.js\\\";\\nimport { Dict, isDict, Ref, RefSetCache } from \\\".\u002Fprimitives.js\\\";\\nimport { LocalPdfManager, NetworkPdfManager } from \\\".\u002Fpdf_manager.js\\\";\\nimport { MessageHandler, wrapReason } from \\\"..\u002Fshared\u002Fmessage_handler.js\\\";\\nimport { AnnotationFactory } from \\\".\u002Fannotation.js\\\";\\nimport { clearGlobalCaches } from \\\".\u002Fcleanup_helper.js\\\";\\nimport { incrementalUpdate } from \\\".\u002Fwriter.js\\\";\\nimport { PDFWorkerStream } from \\\".\u002Fworker_stream.js\\\";\\nimport { StructTreeRoot } from \\\".\u002Fstruct_tree.js\\\";\\n\\nclass WorkerTask {\\n  constructor(name) {\\n    this.name = name;\\n    this.terminated = false;\\n    this._capability = Promise.withResolvers();\\n  }\\n\\n  get finished() {\\n    return this._capability.promise;\\n  }\\n\\n  finish() {\\n    this._capability.resolve();\\n  }\\n\\n  terminate() {\\n    this.terminated = true;\\n  }\\n\\n  ensureNotTerminated() {\\n    if (this.terminated) {\\n      throw new Error(\\\"Worker task was terminated\\\");\\n    }\\n  }\\n}\\n\\nclass WorkerMessageHandler {\\n  static {\\n    \u002F\u002F Worker thread (and not Node.js)?\\n    if (\\n      typeof window === \\\"undefined\\\" &&\\n      !isNodeJS &&\\n      typeof self !== \\\"undefined\\\" &&\\n      \u002F* isMessagePort = *\u002F\\n      typeof self.postMessage === \\\"function\\\" &&\\n      \\\"onmessage\\\" in self\\n    ) {\\n      this.initializeFromPort(self);\\n    }\\n  }\\n\\n  static setup(handler, port) {\\n    let testMessageProcessed = false;\\n    handler.on(\\\"test\\\", data => {\\n      if (testMessageProcessed) {\\n        return; \u002F\u002F we already processed 'test' message once\\n      }\\n      testMessageProcessed = true;\\n\\n      \u002F\u002F Ensure that `TypedArray`s can be sent to the worker.\\n      handler.send(\\\"test\\\", data instanceof Uint8Array);\\n    });\\n\\n    handler.on(\\\"configure\\\", data => {\\n      setVerbosityLevel(data.verbosity);\\n    });\\n\\n    handler.on(\\\"GetDocRequest\\\", data => this.createDocumentHandler(data, port));\\n  }\\n\\n  static createDocumentHandler(docParams, port) {\\n    \u002F\u002F This context is actually holds references on pdfManager and handler,\\n    \u002F\u002F until the latter is destroyed.\\n    let pdfManager;\\n    let terminated = false;\\n    let cancelXHRs = null;\\n    const WorkerTasks = new Set();\\n    const verbosity = getVerbosityLevel();\\n\\n    const { docId, apiVersion } = docParams;\\n    const workerVersion =\\n      typeof PDFJSDev !== \\\"undefined\\\" && !PDFJSDev.test(\\\"TESTING\\\")\\n        ? PDFJSDev.eval(\\\"BUNDLE_VERSION\\\")\\n        : null;\\n    if (apiVersion !== workerVersion) {\\n      throw new Error(\\n        `The API version \\\"${apiVersion}\\\" does not match ` +\\n          `the Worker version \\\"${workerVersion}\\\".`\\n      );\\n    }\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      \u002F\u002F Fail early, and predictably, rather than having (some) fonts fail to\\n      \u002F\u002F load\u002Frender with slightly cryptic error messages in environments where\\n      \u002F\u002F the `{Object, Array}.prototype` has been *incorrectly* extended.\\n      \u002F\u002F\\n      \u002F\u002F PLEASE NOTE: We do *not* want to slow down font parsing by adding\\n      \u002F\u002F              `hasOwnProperty` checks all over the code-base.\\n      const buildMsg = (type, prop) =>\\n        `The \\\\`${type}.prototype\\\\` contains unexpected enumerable property ` +\\n        `\\\"${prop}\\\", thus breaking e.g. \\\\`for...in\\\\` iteration of ${type}s.`;\\n\\n      for (const prop in {}) {\\n        throw new Error(buildMsg(\\\"Object\\\", prop));\\n      }\\n      for (const prop in []) {\\n        throw new Error(buildMsg(\\\"Array\\\", prop));\\n      }\\n    }\\n    const workerHandlerName = docId + \\\"_worker\\\";\\n    let handler = new MessageHandler(workerHandlerName, docId, port);\\n\\n    function ensureNotTerminated() {\\n      if (terminated) {\\n        throw new Error(\\\"Worker was terminated\\\");\\n      }\\n    }\\n\\n    function startWorkerTask(task) {\\n      WorkerTasks.add(task);\\n    }\\n\\n    function finishWorkerTask(task) {\\n      task.finish();\\n      WorkerTasks.delete(task);\\n    }\\n\\n    async function loadDocument(recoveryMode) {\\n      await pdfManager.ensureDoc(\\\"checkHeader\\\");\\n      await pdfManager.ensureDoc(\\\"parseStartXRef\\\");\\n      await pdfManager.ensureDoc(\\\"parse\\\", [recoveryMode]);\\n\\n      \u002F\u002F Check that at least the first page can be successfully loaded,\\n      \u002F\u002F since otherwise the XRef table is definitely not valid.\\n      await pdfManager.ensureDoc(\\\"checkFirstPage\\\", [recoveryMode]);\\n      \u002F\u002F Check that the last page can be successfully loaded, to ensure that\\n      \u002F\u002F `numPages` is correct, and fallback to walking the entire \u002FPages-tree.\\n      await pdfManager.ensureDoc(\\\"checkLastPage\\\", [recoveryMode]);\\n\\n      const isPureXfa = await pdfManager.ensureDoc(\\\"isPureXfa\\\");\\n      if (isPureXfa) {\\n        const task = new WorkerTask(\\\"loadXfaResources\\\");\\n        startWorkerTask(task);\\n\\n        await pdfManager.ensureDoc(\\\"loadXfaResources\\\", [handler, task]);\\n        finishWorkerTask(task);\\n      }\\n\\n      const [numPages, fingerprints] = await Promise.all([\\n        pdfManager.ensureDoc(\\\"numPages\\\"),\\n        pdfManager.ensureDoc(\\\"fingerprints\\\"),\\n      ]);\\n\\n      \u002F\u002F Get htmlForXfa after numPages to avoid to create HTML twice.\\n      const htmlForXfa = isPureXfa\\n        ? await pdfManager.ensureDoc(\\\"htmlForXfa\\\")\\n        : null;\\n\\n      return { numPages, fingerprints, htmlForXfa };\\n    }\\n\\n    async function getPdfManager({\\n      data,\\n      password,\\n      disableAutoFetch,\\n      rangeChunkSize,\\n      length,\\n      docBaseUrl,\\n      enableXfa,\\n      evaluatorOptions,\\n    }) {\\n      const pdfManagerArgs = {\\n        source: null,\\n        disableAutoFetch,\\n        docBaseUrl,\\n        docId,\\n        enableXfa,\\n        evaluatorOptions,\\n        handler,\\n        length,\\n        password,\\n        rangeChunkSize,\\n      };\\n\\n      if (data) {\\n        pdfManagerArgs.source = data;\\n\\n        return new LocalPdfManager(pdfManagerArgs);\\n      }\\n      const pdfStream = new PDFWorkerStream(handler),\\n        fullRequest = pdfStream.getFullReader();\\n\\n      const pdfManagerCapability = Promise.withResolvers();\\n      let newPdfManager,\\n        cachedChunks = [],\\n        loaded = 0;\\n\\n      fullRequest.headersReady\\n        .then(function () {\\n          if (!fullRequest.isRangeSupported) {\\n            return;\\n          }\\n          pdfManagerArgs.source = pdfStream;\\n          pdfManagerArgs.length = fullRequest.contentLength;\\n          \u002F\u002F We don't need auto-fetch when streaming is enabled.\\n          pdfManagerArgs.disableAutoFetch ||= fullRequest.isStreamingSupported;\\n\\n          newPdfManager = new NetworkPdfManager(pdfManagerArgs);\\n          \u002F\u002F There may be a chance that `newPdfManager` is not initialized for\\n          \u002F\u002F the first few runs of `readchunk` block of code. Be sure to send\\n          \u002F\u002F all cached chunks, if any, to chunked_stream via pdf_manager.\\n          for (const chunk of cachedChunks) {\\n            newPdfManager.sendProgressiveData(chunk);\\n          }\\n\\n          cachedChunks = [];\\n          pdfManagerCapability.resolve(newPdfManager);\\n          cancelXHRs = null;\\n        })\\n        .catch(function (reason) {\\n          pdfManagerCapability.reject(reason);\\n          cancelXHRs = null;\\n        });\\n\\n      new Promise(function (resolve, reject) {\\n        const readChunk = function ({ value, done }) {\\n          try {\\n            ensureNotTerminated();\\n            if (done) {\\n              if (!newPdfManager) {\\n                const pdfFile = arrayBuffersToBytes(cachedChunks);\\n                cachedChunks = [];\\n\\n                if (length && pdfFile.length !== length) {\\n                  warn(\\\"reported HTTP length is different from actual\\\");\\n                }\\n                pdfManagerArgs.source = pdfFile;\\n\\n                newPdfManager = new LocalPdfManager(pdfManagerArgs);\\n                pdfManagerCapability.resolve(newPdfManager);\\n              }\\n              cancelXHRs = null;\\n              return;\\n            }\\n            if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n              assert(\\n                value instanceof ArrayBuffer,\\n                \\\"readChunk (getPdfManager) - expected an ArrayBuffer.\\\"\\n              );\\n            }\\n            loaded += value.byteLength;\\n\\n            if (!fullRequest.isStreamingSupported) {\\n              handler.send(\\\"DocProgress\\\", {\\n                loaded,\\n                total: Math.max(loaded, fullRequest.contentLength || 0),\\n              });\\n            }\\n\\n            if (newPdfManager) {\\n              newPdfManager.sendProgressiveData(value);\\n            } else {\\n              cachedChunks.push(value);\\n            }\\n            fullRequest.read().then(readChunk, reject);\\n          } catch (e) {\\n            reject(e);\\n          }\\n        };\\n        fullRequest.read().then(readChunk, reject);\\n      }).catch(function (e) {\\n        pdfManagerCapability.reject(e);\\n        cancelXHRs = null;\\n      });\\n\\n      cancelXHRs = reason => {\\n        pdfStream.cancelAllRequests(reason);\\n      };\\n\\n      return pdfManagerCapability.promise;\\n    }\\n\\n    function setupDoc(data) {\\n      function onSuccess(doc) {\\n        ensureNotTerminated();\\n        handler.send(\\\"GetDoc\\\", { pdfInfo: doc });\\n      }\\n\\n      function onFailure(ex) {\\n        ensureNotTerminated();\\n\\n        if (ex instanceof PasswordException) {\\n          const task = new WorkerTask(`PasswordException: response ${ex.code}`);\\n          startWorkerTask(task);\\n\\n          handler\\n            .sendWithPromise(\\\"PasswordRequest\\\", ex)\\n            .then(function ({ password }) {\\n              finishWorkerTask(task);\\n              pdfManager.updatePassword(password);\\n              pdfManagerReady();\\n            })\\n            .catch(function () {\\n              finishWorkerTask(task);\\n              handler.send(\\\"DocException\\\", ex);\\n            });\\n        } else {\\n          \u002F\u002F Ensure that we always fallback to `UnknownErrorException`.\\n          handler.send(\\\"DocException\\\", wrapReason(ex));\\n        }\\n      }\\n\\n      function pdfManagerReady() {\\n        ensureNotTerminated();\\n\\n        loadDocument(false).then(onSuccess, function (reason) {\\n          ensureNotTerminated();\\n\\n          \u002F\u002F Try again with recoveryMode == true\\n          if (!(reason instanceof XRefParseException)) {\\n            onFailure(reason);\\n            return;\\n          }\\n          pdfManager.requestLoadedStream().then(function () {\\n            ensureNotTerminated();\\n\\n            loadDocument(true).then(onSuccess, onFailure);\\n          });\\n        });\\n      }\\n\\n      ensureNotTerminated();\\n\\n      getPdfManager(data)\\n        .then(function (newPdfManager) {\\n          if (terminated) {\\n            \u002F\u002F We were in a process of setting up the manager, but it got\\n            \u002F\u002F terminated in the middle.\\n            newPdfManager.terminate(\\n              new AbortException(\\\"Worker was terminated.\\\")\\n            );\\n            throw new Error(\\\"Worker was terminated\\\");\\n          }\\n          pdfManager = newPdfManager;\\n\\n          pdfManager.requestLoadedStream(\u002F* noFetch = *\u002F true).then(stream => {\\n            handler.send(\\\"DataLoaded\\\", { length: stream.bytes.byteLength });\\n          });\\n        })\\n        .then(pdfManagerReady, onFailure);\\n    }\\n\\n    handler.on(\\\"GetPage\\\", function (data) {\\n      return pdfManager.getPage(data.pageIndex).then(function (page) {\\n        return Promise.all([\\n          pdfManager.ensure(page, \\\"rotate\\\"),\\n          pdfManager.ensure(page, \\\"ref\\\"),\\n          pdfManager.ensure(page, \\\"userUnit\\\"),\\n          pdfManager.ensure(page, \\\"view\\\"),\\n        ]).then(function ([rotate, ref, userUnit, view]) {\\n          return {\\n            rotate,\\n            ref,\\n            refStr: ref?.toString() ?? null,\\n            userUnit,\\n            view,\\n          };\\n        });\\n      });\\n    });\\n\\n    handler.on(\\\"GetPageIndex\\\", function (data) {\\n      const pageRef = Ref.get(data.num, data.gen);\\n      return pdfManager.ensureCatalog(\\\"getPageIndex\\\", [pageRef]);\\n    });\\n\\n    handler.on(\\\"GetDestinations\\\", function (data) {\\n      return pdfManager.ensureCatalog(\\\"destinations\\\");\\n    });\\n\\n    handler.on(\\\"GetDestination\\\", function (data) {\\n      return pdfManager.ensureCatalog(\\\"getDestination\\\", [data.id]);\\n    });\\n\\n    handler.on(\\\"GetPageLabels\\\", function (data) {\\n      return pdfManager.ensureCatalog(\\\"pageLabels\\\");\\n    });\\n\\n    handler.on(\\\"GetPageLayout\\\", function (data) {\\n      return pdfManager.ensureCatalog(\\\"pageLayout\\\");\\n    });\\n\\n    handler.on(\\\"GetPageMode\\\", function (data) {\\n      return pdfManager.ensureCatalog(\\\"pageMode\\\");\\n    });\\n\\n    handler.on(\\\"GetViewerPreferences\\\", function (data) {\\n      return pdfManager.ensureCatalog(\\\"viewerPreferences\\\");\\n    });\\n\\n    handler.on(\\\"GetOpenAction\\\", function (data) {\\n      return pdfManager.ensureCatalog(\\\"openAction\\\");\\n    });\\n\\n    handler.on(\\\"GetAttachments\\\", function (data) {\\n      return pdfManager.ensureCatalog(\\\"attachments\\\");\\n    });\\n\\n    handler.on(\\\"GetDocJSActions\\\", function (data) {\\n      return pdfManager.ensureCatalog(\\\"jsActions\\\");\\n    });\\n\\n    handler.on(\\\"GetPageJSActions\\\", function ({ pageIndex }) {\\n      return pdfManager\\n        .getPage(pageIndex)\\n        .then(page => pdfManager.ensure(page, \\\"jsActions\\\"));\\n    });\\n\\n    handler.on(\\\"GetOutline\\\", function (data) {\\n      return pdfManager.ensureCatalog(\\\"documentOutline\\\");\\n    });\\n\\n    handler.on(\\\"GetOptionalContentConfig\\\", function (data) {\\n      return pdfManager.ensureCatalog(\\\"optionalContentConfig\\\");\\n    });\\n\\n    handler.on(\\\"GetPermissions\\\", function (data) {\\n      return pdfManager.ensureCatalog(\\\"permissions\\\");\\n    });\\n\\n    handler.on(\\\"GetMetadata\\\", function (data) {\\n      return Promise.all([\\n        pdfManager.ensureDoc(\\\"documentInfo\\\"),\\n        pdfManager.ensureCatalog(\\\"metadata\\\"),\\n      ]);\\n    });\\n\\n    handler.on(\\\"GetMarkInfo\\\", function (data) {\\n      return pdfManager.ensureCatalog(\\\"markInfo\\\");\\n    });\\n\\n    handler.on(\\\"GetData\\\", function (data) {\\n      return pdfManager.requestLoadedStream().then(stream => stream.bytes);\\n    });\\n\\n    handler.on(\\\"GetAnnotations\\\", function ({ pageIndex, intent }) {\\n      return pdfManager.getPage(pageIndex).then(function (page) {\\n        const task = new WorkerTask(`GetAnnotations: page ${pageIndex}`);\\n        startWorkerTask(task);\\n\\n        return page.getAnnotationsData(handler, task, intent).then(\\n          data => {\\n            finishWorkerTask(task);\\n            return data;\\n          },\\n          reason => {\\n            finishWorkerTask(task);\\n            throw reason;\\n          }\\n        );\\n      });\\n    });\\n\\n    handler.on(\\\"GetFieldObjects\\\", function (data) {\\n      return pdfManager\\n        .ensureDoc(\\\"fieldObjects\\\")\\n        .then(fieldObjects => fieldObjects?.allFields || null);\\n    });\\n\\n    handler.on(\\\"HasJSActions\\\", function (data) {\\n      return pdfManager.ensureDoc(\\\"hasJSActions\\\");\\n    });\\n\\n    handler.on(\\\"GetCalculationOrderIds\\\", function (data) {\\n      return pdfManager.ensureDoc(\\\"calculationOrderIds\\\");\\n    });\\n\\n    handler.on(\\n      \\\"SaveDocument\\\",\\n      async function ({ isPureXfa, numPages, annotationStorage, filename }) {\\n        const globalPromises = [\\n          pdfManager.requestLoadedStream(),\\n          pdfManager.ensureCatalog(\\\"acroForm\\\"),\\n          pdfManager.ensureCatalog(\\\"acroFormRef\\\"),\\n          pdfManager.ensureDoc(\\\"startXRef\\\"),\\n          pdfManager.ensureDoc(\\\"xref\\\"),\\n          pdfManager.ensureDoc(\\\"linearization\\\"),\\n          pdfManager.ensureCatalog(\\\"structTreeRoot\\\"),\\n        ];\\n        const changes = new RefSetCache();\\n        const promises = [];\\n\\n        const newAnnotationsByPage = !isPureXfa\\n          ? getNewAnnotationsMap(annotationStorage)\\n          : null;\\n        const [\\n          stream,\\n          acroForm,\\n          acroFormRef,\\n          startXRef,\\n          xref,\\n          linearization,\\n          _structTreeRoot,\\n        ] = await Promise.all(globalPromises);\\n        const catalogRef = xref.trailer.getRaw(\\\"Root\\\") || null;\\n        let structTreeRoot;\\n\\n        if (newAnnotationsByPage) {\\n          if (!_structTreeRoot) {\\n            if (\\n              await StructTreeRoot.canCreateStructureTree({\\n                catalogRef,\\n                pdfManager,\\n                newAnnotationsByPage,\\n              })\\n            ) {\\n              structTreeRoot = null;\\n            }\\n          } else if (\\n            await _structTreeRoot.canUpdateStructTree({\\n              pdfManager,\\n              newAnnotationsByPage,\\n            })\\n          ) {\\n            structTreeRoot = _structTreeRoot;\\n          }\\n\\n          const imagePromises = AnnotationFactory.generateImages(\\n            annotationStorage.values(),\\n            xref,\\n            pdfManager.evaluatorOptions.isOffscreenCanvasSupported\\n          );\\n          const newAnnotationPromises =\\n            structTreeRoot === undefined ? promises : [];\\n          for (const [pageIndex, annotations] of newAnnotationsByPage) {\\n            newAnnotationPromises.push(\\n              pdfManager.getPage(pageIndex).then(page => {\\n                const task = new WorkerTask(`Save (editor): page ${pageIndex}`);\\n                startWorkerTask(task);\\n\\n                return page\\n                  .saveNewAnnotations(\\n                    handler,\\n                    task,\\n                    annotations,\\n                    imagePromises,\\n                    changes\\n                  )\\n                  .finally(function () {\\n                    finishWorkerTask(task);\\n                  });\\n              })\\n            );\\n          }\\n          if (structTreeRoot === null) {\\n            \u002F\u002F No structTreeRoot exists, so we need to create one.\\n            promises.push(\\n              Promise.all(newAnnotationPromises).then(async () => {\\n                await StructTreeRoot.createStructureTree({\\n                  newAnnotationsByPage,\\n                  xref,\\n                  catalogRef,\\n                  pdfManager,\\n                  changes,\\n                });\\n              })\\n            );\\n          } else if (structTreeRoot) {\\n            promises.push(\\n              Promise.all(newAnnotationPromises).then(async () => {\\n                await structTreeRoot.updateStructureTree({\\n                  newAnnotationsByPage,\\n                  pdfManager,\\n                  changes,\\n                });\\n              })\\n            );\\n          }\\n        }\\n\\n        if (isPureXfa) {\\n          promises.push(\\n            pdfManager.ensureDoc(\\\"serializeXfaData\\\", [annotationStorage])\\n          );\\n        } else {\\n          for (let pageIndex = 0; pageIndex \u003C numPages; pageIndex++) {\\n            promises.push(\\n              pdfManager.getPage(pageIndex).then(function (page) {\\n                const task = new WorkerTask(`Save: page ${pageIndex}`);\\n                startWorkerTask(task);\\n\\n                return page\\n                  .save(handler, task, annotationStorage, changes)\\n                  .finally(function () {\\n                    finishWorkerTask(task);\\n                  });\\n              })\\n            );\\n          }\\n        }\\n        const refs = await Promise.all(promises);\\n\\n        let xfaData = null;\\n        if (isPureXfa) {\\n          xfaData = refs[0];\\n          if (!xfaData) {\\n            return stream.bytes;\\n          }\\n        } else if (changes.size === 0) {\\n          \u002F\u002F No new refs so just return the initial bytes\\n          return stream.bytes;\\n        }\\n\\n        const needAppearances =\\n          acroFormRef &&\\n          acroForm instanceof Dict &&\\n          changes.values().some(ref => ref.needAppearances);\\n\\n        const xfa = (acroForm instanceof Dict && acroForm.get(\\\"XFA\\\")) || null;\\n        let xfaDatasetsRef = null;\\n        let hasXfaDatasetsEntry = false;\\n        if (Array.isArray(xfa)) {\\n          for (let i = 0, ii = xfa.length; i \u003C ii; i += 2) {\\n            if (xfa[i] === \\\"datasets\\\") {\\n              xfaDatasetsRef = xfa[i + 1];\\n              hasXfaDatasetsEntry = true;\\n            }\\n          }\\n          if (xfaDatasetsRef === null) {\\n            xfaDatasetsRef = xref.getNewTemporaryRef();\\n          }\\n        } else if (xfa) {\\n          \u002F\u002F TODO: Support XFA streams.\\n          warn(\\\"Unsupported XFA type.\\\");\\n        }\\n\\n        let newXrefInfo = Object.create(null);\\n        if (xref.trailer) {\\n          \u002F\u002F Get string info from Info in order to compute fileId.\\n          const infoMap = new Map();\\n          const xrefInfo = xref.trailer.get(\\\"Info\\\") || null;\\n          if (xrefInfo instanceof Dict) {\\n            for (const [key, value] of xrefInfo) {\\n              if (typeof value === \\\"string\\\") {\\n                infoMap.set(key, stringToPDFString(value));\\n              }\\n            }\\n          }\\n\\n          newXrefInfo = {\\n            rootRef: catalogRef,\\n            encryptRef: xref.trailer.getRaw(\\\"Encrypt\\\") || null,\\n            newRef: xref.getNewTemporaryRef(),\\n            infoRef: xref.trailer.getRaw(\\\"Info\\\") || null,\\n            infoMap,\\n            fileIds: xref.trailer.get(\\\"ID\\\") || null,\\n            startXRef: linearization\\n              ? startXRef\\n              : (xref.lastXRefStreamPos ?? startXRef),\\n            filename,\\n          };\\n        }\\n\\n        return incrementalUpdate({\\n          originalData: stream.bytes,\\n          xrefInfo: newXrefInfo,\\n          changes,\\n          xref,\\n          hasXfa: !!xfa,\\n          xfaDatasetsRef,\\n          hasXfaDatasetsEntry,\\n          needAppearances,\\n          acroFormRef,\\n          acroForm,\\n          xfaData,\\n          \u002F\u002F Use the same kind of XRef as the previous one.\\n          useXrefStream: isDict(xref.topDict, \\\"XRef\\\"),\\n        }).finally(() => {\\n          xref.resetNewTemporaryRef();\\n        });\\n      }\\n    );\\n\\n    handler.on(\\\"GetOperatorList\\\", function (data, sink) {\\n      const pageIndex = data.pageIndex;\\n      pdfManager.getPage(pageIndex).then(function (page) {\\n        const task = new WorkerTask(`GetOperatorList: page ${pageIndex}`);\\n        startWorkerTask(task);\\n\\n        \u002F\u002F NOTE: Keep this condition in sync with the `info` helper function.\\n        const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\\n\\n        \u002F\u002F Pre compile the pdf page and fetch the fonts\u002Fimages.\\n        page\\n          .getOperatorList({\\n            handler,\\n            sink,\\n            task,\\n            intent: data.intent,\\n            cacheKey: data.cacheKey,\\n            annotationStorage: data.annotationStorage,\\n            modifiedIds: data.modifiedIds,\\n          })\\n          .then(\\n            function (operatorListInfo) {\\n              finishWorkerTask(task);\\n\\n              if (start) {\\n                info(\\n                  `page=${pageIndex + 1} - getOperatorList: time=` +\\n                    `${Date.now() - start}ms, len=${operatorListInfo.length}`\\n                );\\n              }\\n              sink.close();\\n            },\\n            function (reason) {\\n              finishWorkerTask(task);\\n              if (task.terminated) {\\n                return; \u002F\u002F ignoring errors from the terminated thread\\n              }\\n              sink.error(reason);\\n\\n              \u002F\u002F TODO: Should `reason` be re-thrown here (currently that casues\\n              \u002F\u002F       \\\"Uncaught exception: ...\\\" messages in the console)?\\n            }\\n          );\\n      });\\n    });\\n\\n    handler.on(\\\"GetTextContent\\\", function (data, sink) {\\n      const { pageIndex, includeMarkedContent, disableNormalization } = data;\\n\\n      pdfManager.getPage(pageIndex).then(function (page) {\\n        const task = new WorkerTask(\\\"GetTextContent: page \\\" + pageIndex);\\n        startWorkerTask(task);\\n\\n        \u002F\u002F NOTE: Keep this condition in sync with the `info` helper function.\\n        const start = verbosity >= VerbosityLevel.INFOS ? Date.now() : 0;\\n\\n        page\\n          .extractTextContent({\\n            handler,\\n            task,\\n            sink,\\n            includeMarkedContent,\\n            disableNormalization,\\n          })\\n          .then(\\n            function () {\\n              finishWorkerTask(task);\\n\\n              if (start) {\\n                info(\\n                  `page=${pageIndex + 1} - getTextContent: time=` +\\n                    `${Date.now() - start}ms`\\n                );\\n              }\\n              sink.close();\\n            },\\n            function (reason) {\\n              finishWorkerTask(task);\\n              if (task.terminated) {\\n                return; \u002F\u002F ignoring errors from the terminated thread\\n              }\\n              sink.error(reason);\\n\\n              \u002F\u002F TODO: Should `reason` be re-thrown here (currently that casues\\n              \u002F\u002F       \\\"Uncaught exception: ...\\\" messages in the console)?\\n            }\\n          );\\n      });\\n    });\\n\\n    handler.on(\\\"GetStructTree\\\", function (data) {\\n      return pdfManager\\n        .getPage(data.pageIndex)\\n        .then(page => pdfManager.ensure(page, \\\"getStructTree\\\"));\\n    });\\n\\n    handler.on(\\\"FontFallback\\\", function (data) {\\n      return pdfManager.fontFallback(data.id, handler);\\n    });\\n\\n    handler.on(\\\"Cleanup\\\", function (data) {\\n      return pdfManager.cleanup(\u002F* manuallyTriggered = *\u002F true);\\n    });\\n\\n    handler.on(\\\"Terminate\\\", function (data) {\\n      terminated = true;\\n\\n      const waitOn = [];\\n      if (pdfManager) {\\n        pdfManager.terminate(new AbortException(\\\"Worker was terminated.\\\"));\\n\\n        const cleanupPromise = pdfManager.cleanup();\\n        waitOn.push(cleanupPromise);\\n\\n        pdfManager = null;\\n      } else {\\n        clearGlobalCaches();\\n      }\\n      cancelXHRs?.(new AbortException(\\\"Worker was terminated.\\\"));\\n\\n      for (const task of WorkerTasks) {\\n        waitOn.push(task.finished);\\n        task.terminate();\\n      }\\n\\n      return Promise.all(waitOn).then(function () {\\n        \u002F\u002F Notice that even if we destroying handler, resolved response promise\\n        \u002F\u002F must be sent back.\\n        handler.destroy();\\n        handler = null;\\n      });\\n    });\\n\\n    handler.on(\\\"Ready\\\", function (data) {\\n      setupDoc(docParams);\\n      docParams = null; \u002F\u002F we don't need docParams anymore -- saving memory.\\n    });\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      handler.on(\\\"GetXFADatasets\\\", function (data) {\\n        return pdfManager.ensureDoc(\\\"xfaDatasets\\\");\\n      });\\n      handler.on(\\\"GetXRefPrevValue\\\", function (data) {\\n        return pdfManager\\n          .ensureXRef(\\\"trailer\\\")\\n          .then(trailer => trailer.get(\\\"Prev\\\"));\\n      });\\n      handler.on(\\\"GetStartXRefPos\\\", function (data) {\\n        return pdfManager.ensureDoc(\\\"startXRef\\\");\\n      });\\n      handler.on(\\\"GetAnnotArray\\\", function (data) {\\n        return pdfManager\\n          .getPage(data.pageIndex)\\n          .then(page => page.annotations.map(a => a.toString()));\\n      });\\n    }\\n\\n    return workerHandlerName;\\n  }\\n\\n  static initializeFromPort(port) {\\n    const handler = new MessageHandler(\\\"worker\\\", \\\"main\\\", port);\\n    this.setup(handler, port);\\n    handler.send(\\\"ready\\\", null);\\n  }\\n}\\n\\nexport { WorkerMessageHandler, WorkerTask };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { WorkerMessageHandler } from \\\".\u002Fcore\u002Fworker.js\\\";\\n\\nglobalThis.pdfjsWorker = {\\n  WorkerMessageHandler,\\n};\\n\\nexport { WorkerMessageHandler };\\n\"],\"names\":[\"isNodeJS\",\"process\",\"versions\",\"nw\",\"electron\",\"type\",\"FONT_IDENTITY_MATRIX\",\"LINE_FACTOR\",\"LINE_DESCENT_FACTOR\",\"BASELINE_FACTOR\",\"RenderingIntentFlag\",\"ANY\",\"DISPLAY\",\"PRINT\",\"SAVE\",\"ANNOTATIONS_FORMS\",\"ANNOTATIONS_STORAGE\",\"ANNOTATIONS_DISABLE\",\"IS_EDITING\",\"OPLIST\",\"AnnotationMode\",\"DISABLE\",\"ENABLE\",\"ENABLE_FORMS\",\"ENABLE_STORAGE\",\"AnnotationEditorPrefix\",\"AnnotationEditorType\",\"NONE\",\"FREETEXT\",\"HIGHLIGHT\",\"STAMP\",\"INK\",\"SIGNATURE\",\"AnnotationEditorParamsType\",\"RESIZE\",\"CREATE\",\"FREETEXT_SIZE\",\"FREETEXT_COLOR\",\"FREETEXT_OPACITY\",\"INK_COLOR\",\"INK_THICKNESS\",\"INK_OPACITY\",\"HIGHLIGHT_COLOR\",\"HIGHLIGHT_DEFAULT_COLOR\",\"HIGHLIGHT_THICKNESS\",\"HIGHLIGHT_FREE\",\"HIGHLIGHT_SHOW_ALL\",\"DRAW_STEP\",\"PermissionFlag\",\"MODIFY_CONTENTS\",\"COPY\",\"MODIFY_ANNOTATIONS\",\"FILL_INTERACTIVE_FORMS\",\"COPY_FOR_ACCESSIBILITY\",\"ASSEMBLE\",\"PRINT_HIGH_QUALITY\",\"TextRenderingMode\",\"FILL\",\"STROKE\",\"FILL_STROKE\",\"INVISIBLE\",\"FILL_ADD_TO_PATH\",\"STROKE_ADD_TO_PATH\",\"FILL_STROKE_ADD_TO_PATH\",\"ADD_TO_PATH\",\"FILL_STROKE_MASK\",\"ADD_TO_PATH_FLAG\",\"ImageKind\",\"GRAYSCALE_1BPP\",\"RGB_24BPP\",\"RGBA_32BPP\",\"AnnotationType\",\"TEXT\",\"LINK\",\"LINE\",\"SQUARE\",\"CIRCLE\",\"POLYGON\",\"POLYLINE\",\"UNDERLINE\",\"SQUIGGLY\",\"STRIKEOUT\",\"CARET\",\"POPUP\",\"FILEATTACHMENT\",\"SOUND\",\"MOVIE\",\"WIDGET\",\"SCREEN\",\"PRINTERMARK\",\"TRAPNET\",\"WATERMARK\",\"THREED\",\"REDACT\",\"AnnotationReplyType\",\"GROUP\",\"REPLY\",\"AnnotationFlag\",\"HIDDEN\",\"NOZOOM\",\"NOROTATE\",\"NOVIEW\",\"READONLY\",\"LOCKED\",\"TOGGLENOVIEW\",\"LOCKEDCONTENTS\",\"AnnotationFieldFlag\",\"REQUIRED\",\"NOEXPORT\",\"MULTILINE\",\"PASSWORD\",\"NOTOGGLETOOFF\",\"RADIO\",\"PUSHBUTTON\",\"COMBO\",\"EDIT\",\"SORT\",\"FILESELECT\",\"MULTISELECT\",\"DONOTSPELLCHECK\",\"DONOTSCROLL\",\"COMB\",\"RICHTEXT\",\"RADIOSINUNISON\",\"COMMITONSELCHANGE\",\"AnnotationBorderStyleType\",\"SOLID\",\"DASHED\",\"BEVELED\",\"INSET\",\"AnnotationActionEventType\",\"E\",\"X\",\"D\",\"U\",\"Fo\",\"Bl\",\"PO\",\"PC\",\"PV\",\"PI\",\"K\",\"F\",\"V\",\"C\",\"DocumentActionEventType\",\"WC\",\"WS\",\"DS\",\"WP\",\"DP\",\"PageActionEventType\",\"O\",\"VerbosityLevel\",\"ERRORS\",\"WARNINGS\",\"INFOS\",\"OPS\",\"dependency\",\"setLineWidth\",\"setLineCap\",\"setLineJoin\",\"setMiterLimit\",\"setDash\",\"setRenderingIntent\",\"setFlatness\",\"setGState\",\"save\",\"restore\",\"transform\",\"moveTo\",\"lineTo\",\"curveTo\",\"curveTo2\",\"curveTo3\",\"closePath\",\"rectangle\",\"stroke\",\"closeStroke\",\"fill\",\"eoFill\",\"fillStroke\",\"eoFillStroke\",\"closeFillStroke\",\"closeEOFillStroke\",\"endPath\",\"clip\",\"eoClip\",\"beginText\",\"endText\",\"setCharSpacing\",\"setWordSpacing\",\"setHScale\",\"setLeading\",\"setFont\",\"setTextRenderingMode\",\"setTextRise\",\"moveText\",\"setLeadingMoveText\",\"setTextMatrix\",\"nextLine\",\"showText\",\"showSpacedText\",\"nextLineShowText\",\"nextLineSetSpacingShowText\",\"setCharWidth\",\"setCharWidthAndBounds\",\"setStrokeColorSpace\",\"setFillColorSpace\",\"setStrokeColor\",\"setStrokeColorN\",\"setFillColor\",\"setFillColorN\",\"setStrokeGray\",\"setFillGray\",\"setStrokeRGBColor\",\"setFillRGBColor\",\"setStrokeCMYKColor\",\"setFillCMYKColor\",\"shadingFill\",\"beginInlineImage\",\"beginImageData\",\"endInlineImage\",\"paintXObject\",\"markPoint\",\"markPointProps\",\"beginMarkedContent\",\"beginMarkedContentProps\",\"endMarkedContent\",\"beginCompat\",\"endCompat\",\"paintFormXObjectBegin\",\"paintFormXObjectEnd\",\"beginGroup\",\"endGroup\",\"beginAnnotation\",\"endAnnotation\",\"paintImageMaskXObject\",\"paintImageMaskXObjectGroup\",\"paintImageXObject\",\"paintInlineImageXObject\",\"paintInlineImageXObjectGroup\",\"paintImageXObjectRepeat\",\"paintImageMaskXObjectRepeat\",\"paintSolidColorImageMask\",\"constructPath\",\"setStrokeTransparent\",\"setFillTransparent\",\"rawFillPath\",\"DrawOPS\",\"PasswordResponses\",\"NEED_PASSWORD\",\"INCORRECT_PASSWORD\",\"verbosity\",\"setVerbosityLevel\",\"level\",\"Number\",\"isInteger\",\"getVerbosityLevel\",\"info\",\"msg\",\"console\",\"log\",\"warn\",\"unreachable\",\"Error\",\"assert\",\"cond\",\"_isValidProtocol\",\"url\",\"protocol\",\"createValidAbsoluteUrl\",\"baseUrl\",\"options\",\"addDefaultProtocol\",\"startsWith\",\"dots\",\"match\",\"length\",\"tryConvertEncoding\",\"stringToUTF8String\",\"absoluteUrl\",\"URL\",\"parse\",\"updateUrlHash\",\"hash\",\"allowRel\",\"res\",\"href\",\"split\",\"shadow\",\"obj\",\"prop\",\"value\",\"nonSerializable\",\"Object\",\"defineProperty\",\"enumerable\",\"configurable\",\"writable\",\"BaseException\",\"BaseExceptionClosure\",\"message\",\"name\",\"prototype\",\"constructor\",\"PasswordException\",\"code\",\"UnknownErrorException\",\"details\",\"InvalidPDFException\",\"ResponseException\",\"status\",\"missing\",\"FormatError\",\"AbortException\",\"bytesToString\",\"bytes\",\"undefined\",\"MAX_ARGUMENT_COUNT\",\"String\",\"fromCharCode\",\"apply\",\"strBuf\",\"i\",\"chunkEnd\",\"Math\",\"min\",\"chunk\",\"subarray\",\"push\",\"join\",\"stringToBytes\",\"str\",\"Uint8Array\",\"charCodeAt\",\"string32\",\"objectSize\",\"keys\",\"isLittleEndian\",\"buffer8\",\"view32\",\"Uint32Array\",\"buffer\",\"isEvalSupported\",\"Function\",\"FeatureTest\",\"isOffscreenCanvasSupported\",\"OffscreenCanvas\",\"isImageDecoderSupported\",\"ImageDecoder\",\"platform\",\"userAgent\",\"navigator\",\"isAndroid\",\"includes\",\"isLinux\",\"isMac\",\"isWindows\",\"isFirefox\",\"isCSSRoundSupported\",\"globalThis\",\"CSS\",\"supports\",\"hexNumbers\",\"Array\",\"from\",\"n\",\"toString\",\"padStart\",\"Util\",\"makeHexColor\",\"r\",\"g\",\"b\",\"scaleMinMax\",\"minMax\",\"temp\",\"m1\",\"m2\",\"applyTransform\",\"p\",\"m\",\"pos\",\"p0\",\"p1\",\"applyTransformToBezier\",\"m0\",\"m3\",\"m4\",\"m5\",\"pI\",\"pI1\",\"applyInverseTransform\",\"d\",\"axialAlignedBoundingBox\",\"rect\",\"output\",\"r0\",\"r1\",\"r2\",\"r3\",\"a0\",\"a2\",\"a1\",\"a3\",\"b0\",\"b2\",\"b1\",\"b3\",\"m1r0\",\"m1r2\",\"m2r1\",\"m2r3\",\"max\",\"inverseTransform\",\"singularValueDecompose2dScale\",\"matrix\",\"a\",\"c\",\"first\",\"second\",\"sqrt\",\"normalizeRect\",\"slice\",\"intersect\",\"rect1\",\"rect2\",\"xLow\",\"xHigh\",\"yLow\",\"yHigh\",\"pointBoundingBox\",\"x\",\"y\",\"rectBoundingBox\",\"x0\",\"y0\",\"x1\",\"y1\",\"getExtremumOnCurve\",\"#getExtremumOnCurve\",\"x2\",\"x3\",\"y2\",\"y3\",\"t\",\"mt\",\"tt\",\"ttt\",\"getExtremum\",\"#getExtremum\",\"abs\",\"delta\",\"sqrtDelta\",\"bezierBoundingBox\",\"PDFStringTranslateTable\",\"stringToPDFString\",\"keepEscapeSequence\",\"encoding\",\"decoder\",\"TextDecoder\",\"fatal\",\"decoded\",\"decode\",\"replaceAll\",\"ex\",\"ii\",\"charCode\",\"charAt\",\"decodeURIComponent\",\"escape\",\"utf8StringToString\",\"unescape\",\"encodeURIComponent\",\"isArrayEqual\",\"arr1\",\"arr2\",\"getModificationDate\",\"date\",\"Date\",\"getUTCFullYear\",\"getUTCMonth\",\"getUTCDate\",\"getUTCHours\",\"getUTCMinutes\",\"getUTCSeconds\",\"NormalizeRegex\",\"NormalizationMap\",\"normalizeUnicode\",\"Map\",\"_\",\"p2\",\"normalize\",\"get\",\"getUuid\",\"crypto\",\"randomUUID\",\"buf\",\"getRandomValues\",\"AnnotationPrefix\",\"_isValidExplicitDest\",\"validRef\",\"validName\",\"dest\",\"isArray\",\"page\",\"zoom\",\"args\",\"argsLen\",\"allowNull\",\"arg\",\"MathClamp\",\"v\",\"toHexUtil\",\"arr\",\"toHex\",\"num\",\"toBase64Util\",\"toBase64\",\"btoa\",\"fromBase64Util\",\"fromBase64\",\"atob\",\"sumPrecise\",\"numbers\",\"reduce\",\"AbortSignal\",\"any\",\"iterable\",\"ac\",\"AbortController\",\"signal\",\"s\",\"aborted\",\"abort\",\"reason\",\"addEventListener\",\"CIRCULAR_REF\",\"Symbol\",\"EOF\",\"CmdCache\",\"create\",\"NameCache\",\"RefCache\",\"clearPrimitiveCaches\",\"Name\",\"Cmd\",\"cmd\",\"nonSerializableClosure\",\"Dict\",\"xref\",\"_map\",\"objId\",\"suppressEncryption\",\"__nonSerializable__\",\"assignXref\",\"newXref\",\"size\",\"key1\",\"key2\",\"key3\",\"Ref\",\"fetch\",\"getAsync\",\"fetchAsync\",\"getArray\",\"getRaw\",\"key\",\"getKeys\",\"getRawValues\",\"values\",\"set\",\"has\",\"iterator\",\"empty\",\"emptyDict\",\"merge\",\"dictArray\",\"mergeSubDicts\",\"mergedDict\",\"properties\",\"dict\",\"property\",\"subDict\",\"clear\",\"clone\",\"delete\",\"gen\",\"fromString\",\"ref\",\"exec\",\"parseInt\",\"RefSet\",\"parent\",\"_set\",\"Set\",\"put\",\"add\",\"remove\",\"RefSetCache\",\"putAlias\",\"aliasRef\",\"items\",\"isName\",\"isCmd\",\"isDict\",\"isRefsEqual\",\"v1\",\"v2\",\"BaseStream\",\"isEmpty\",\"isDataLoaded\",\"getByte\",\"getBytes\",\"getImageData\",\"decoderOptions\",\"asyncGetBytes\",\"isAsync\",\"isAsyncDecoder\",\"canAsyncDecodeImageFromBuffer\",\"getTransferableImage\",\"peekByte\",\"peekedByte\",\"peekBytes\",\"getUint16\",\"getInt32\",\"getByteRange\",\"begin\",\"end\",\"getString\",\"skip\",\"reset\",\"moveStart\",\"makeSubStream\",\"start\",\"getBaseStreams\",\"PDF_VERSION_REGEXP\",\"MAX_INT_32\",\"MIN_INT_32\",\"IDENTITY_MATRIX\",\"RESOURCES_KEYS_OPERATOR_LIST\",\"RESOURCES_KEYS_TEXT_CONTENT\",\"getLookupTableFactory\",\"initializer\",\"lookup\",\"MissingDataException\",\"ParserEOFException\",\"XRefEntryException\",\"XRefParseException\",\"arrayBuffersToBytes\",\"dataLength\",\"byteLength\",\"data\",\"item\",\"fetchBinaryData\",\"response\",\"ok\",\"statusText\",\"arrayBuffer\",\"getInheritableProperty\",\"stopWhenFound\",\"visited\",\"getParentToUpdate\",\"firstDict\",\"result\",\"ROMAN_NUMBER_MAP\",\"toRomanNumerals\",\"number\",\"lowerCase\",\"roman\",\"repeat\",\"toLowerCase\",\"log2\",\"ceil\",\"readInt8\",\"offset\",\"readInt16\",\"readUint16\",\"readUint32\",\"isWhiteSpace\",\"ch\",\"isBooleanArray\",\"len\",\"every\",\"isNumberArray\",\"ArrayBuffer\",\"isView\",\"BigInt64Array\",\"BigUint64Array\",\"lookupMatrix\",\"fallback\",\"lookupRect\",\"lookupNormalRect\",\"parseXFAPath\",\"path\",\"positionPattern\",\"map\",\"component\",\"escapePDFName\",\"char\",\"substring\",\"escapeString\",\"_collectJS\",\"entry\",\"list\",\"parents\",\"element\",\"js\",\"collectActions\",\"eventType\",\"actions\",\"additionalActionsDicts\",\"additionalActions\",\"action\",\"actionDict\",\"Action\",\"XMLEntities\",\"codePointIter\",\"codePointAt\",\"encodeToXmlString\",\"entity\",\"toUpperCase\",\"validateFontName\",\"fontFamily\",\"mustWarn\",\"re\",\"RegExp\",\"test\",\"ident\",\"validateCSSFont\",\"cssFontInfo\",\"DEFAULT_CSS_FONT_OBLIQUE\",\"DEFAULT_CSS_FONT_WEIGHT\",\"CSS_FONT_WEIGHT_VALUES\",\"fontWeight\",\"italicAngle\",\"weight\",\"angle\",\"parseFloat\",\"isNaN\",\"recoverJsURL\",\"URL_OPEN_METHODS\",\"regex\",\"jsUrl\",\"newWindow\",\"numberToString\",\"roundedValue\",\"round\",\"toFixed\",\"getNewAnnotationsMap\",\"annotationStorage\",\"newAnnotationsByPage\",\"annotations\",\"pageIndex\",\"stringToAsciiOrUTF16BE\",\"isAscii\",\"stringToUTF16String\",\"stringToUTF16HexString\",\"bigEndian\",\"getRotationMatrix\",\"rotation\",\"width\",\"height\",\"getSizeInBytes\",\"QCMS\",\"memoryArray\",\"_memory\",\"_mustAddAlpha\",\"_destBuffer\",\"_destOffset\",\"_destLength\",\"_cssColor\",\"_makeHexColor\",\"_memoryArray\",\"array\",\"copy_result\",\"ptr\",\"j\",\"copy_rgb\",\"make_cssRGB\",\"wasm\",\"cachedTextDecoder\",\"ignoreBOM\",\"cachedUint8ArrayMemory0\",\"getUint8ArrayMemory0\",\"memory\",\"getStringFromWasm0\",\"WASM_VECTOR_LEN\",\"passArray8ToWasm0\",\"malloc\",\"qcms_convert_array\",\"transformer\",\"src\",\"ptr0\",\"__wbindgen_malloc\",\"len0\",\"qcms_convert_one\",\"css\",\"qcms_convert_three\",\"src1\",\"src2\",\"src3\",\"qcms_convert_four\",\"src4\",\"qcms_transformer_from_memory\",\"mem\",\"in_type\",\"intent\",\"ret\",\"qcms_drop_transformer\",\"DataType\",\"freeze\",\"RGB8\",\"RGBA8\",\"BGRA8\",\"Gray8\",\"GrayA8\",\"CMYK\",\"Intent\",\"Perceptual\",\"RelativeColorimetric\",\"Saturation\",\"AbsoluteColorimetric\",\"__wbg_load\",\"module\",\"imports\",\"Response\",\"WebAssembly\",\"instantiateStreaming\",\"e\",\"headers\",\"instantiate\",\"instance\",\"Instance\",\"__wbg_get_imports\",\"wbg\",\"__wbg_copyresult_b08ee7d273f295dd\",\"arg0\",\"arg1\",\"__wbg_copyrgb_d60ce17bb05d9b67\",\"__wbg_makecssRGB_893bf0cd9fdb302d\",\"__wbindgen_init_externref_table\",\"table\",\"__wbindgen_export_0\",\"grow\",\"__wbindgen_throw\",\"__wbg_init_memory\",\"__wbg_finalize_init\",\"exports\",\"__wbg_init\",\"__wbindgen_wasm_module\",\"__wbindgen_start\",\"initSync\",\"getPrototypeOf\",\"Module\",\"module_or_path\",\"Request\",\"resizeRgbImage\",\"w1\",\"h1\",\"w2\",\"h2\",\"alpha01\",\"COMPONENTS\",\"xRatio\",\"yRatio\",\"newIndex\",\"oldIndex\",\"xScaled\",\"Uint16Array\",\"w1Scanline\",\"floor\",\"py\",\"resizeRgbaImage\",\"src32\",\"dest32\",\"rgbMask\",\"copyRgbaImage\",\"ColorSpace\",\"rgbBuf\",\"Uint8ClampedArray\",\"numComps\",\"getRgb\",\"srcOffset\",\"getRgbItem\",\"getRgbHex\",\"destOffset\",\"getRgbBuffer\",\"count\",\"bits\",\"getOutputLength\",\"inputLength\",\"isPassthrough\",\"isDefaultDecode\",\"decodeMap\",\"bpc\",\"fillRgb\",\"originalWidth\",\"originalHeight\",\"actualHeight\",\"comps\",\"numComponentColors\",\"needsResizing\",\"allColors\",\"colorMap\",\"destPos\",\"rgbPos\",\"usesZeroToOneRange\",\"AlternateCS\",\"base\",\"tintFn\",\"tmpBuf\",\"Float32Array\",\"scale\",\"baseNumComps\",\"baseBuf\",\"scaled\",\"tinted\",\"PatternCS\",\"baseCS\",\"IndexedCS\",\"highVal\",\"outputDelta\",\"lookupPos\",\"DeviceGrayCS\",\"q\",\"DeviceRgbCS\",\"DeviceRgbaCS\",\"_alpha01\",\"DeviceCmykCS\",\"toRgb\",\"#toRgb\",\"srcScale\",\"k\",\"CalGrayCS\",\"whitePoint\",\"blackPoint\",\"gamma\",\"XW\",\"YW\",\"ZW\",\"XB\",\"YB\",\"ZB\",\"G\",\"A\",\"AG\",\"L\",\"val\",\"CalRGBCS\",\"BRADFORD_SCALE_MATRIX\",\"BRADFORD_SCALE_INVERSE_MATRIX\",\"SRGB_D65_XYZ_TO_RGB_MATRIX\",\"FLAT_WHITEPOINT_MATRIX\",\"tempNormalizeMatrix\",\"tempConvertMatrix1\",\"tempConvertMatrix2\",\"DECODE_L_CONSTANT\",\"GR\",\"GG\",\"GB\",\"MXA\",\"MYA\",\"MZA\",\"MXB\",\"MYB\",\"MZB\",\"MXC\",\"MYC\",\"MZC\",\"matrixProduct\",\"#matrixProduct\",\"toFlat\",\"#toFlat\",\"sourceWhitePoint\",\"LMS\",\"toD65\",\"#toD65\",\"D65X\",\"D65Y\",\"D65Z\",\"sRGBTransferFunction\",\"#sRGBTransferFunction\",\"color\",\"decodeL\",\"#decodeL\",\"compensateBlackPoint\",\"#compensateBlackPoint\",\"sourceBlackPoint\",\"XYZ_Flat\",\"zeroDecodeL\",\"X_DST\",\"X_SRC\",\"Y_DST\",\"Y_SRC\",\"Z_DST\",\"Z_SRC\",\"X_Scale\",\"X_Offset\",\"Y_Scale\",\"Y_Offset\",\"Z_Scale\",\"Z_Offset\",\"normalizeWhitePointToFlat\",\"#normalizeWhitePointToFlat\",\"XYZ_In\",\"LMS_Flat\",\"normalizeWhitePointToD65\",\"#normalizeWhitePointToD65\",\"LMS_D65\",\"B\",\"AGR\",\"BGG\",\"CGB\",\"Y\",\"Z\",\"XYZ\",\"XYZ_Black\",\"XYZ_D65\",\"SRGB\",\"LabCS\",\"range\",\"amin\",\"amax\",\"bmin\",\"bmax\",\"fn_g\",\"#fn_g\",\"#decode\",\"high1\",\"low2\",\"high2\",\"maxVal\",\"Ls\",\"as\",\"bs\",\"M\",\"N\",\"fetchSync\",\"xhr\",\"XMLHttpRequest\",\"open\",\"responseType\",\"send\",\"IccColorSpace\",\"convertPixel\",\"useWasm\",\"wasmUrl\",\"finalizer\",\"FinalizationRegistry\",\"iccProfile\",\"isUsable\",\"inType\",\"register\",\"setOptions\",\"useWorkerFetch\",\"_module\",\"CmykICCBasedCS\",\"iccUrl\",\"Stream\",\"strEnd\",\"StringStream\",\"NullStream\",\"ChunkedStream\",\"chunkSize\",\"manager\",\"_loadedChunks\",\"numChunks\",\"progressiveDataLength\",\"lastSuccessfulEnsureByteChunk\",\"getMissingChunks\",\"chunks\",\"numChunksLoaded\",\"onReceiveData\",\"beginChunk\",\"endChunk\",\"curChunk\",\"onReceiveProgressiveData\",\"position\",\"ensureByte\",\"ensureRange\",\"nextEmptyChunk\",\"hasChunk\",\"ChunkedStreamSubstream\",\"missingChunks\",\"subStream\",\"ChunkedStreamManager\",\"pdfNetworkStream\",\"rangeChunkSize\",\"stream\",\"disableAutoFetch\",\"msgHandler\",\"currRequestId\",\"_chunksNeededByRequest\",\"_requestsByChunk\",\"_promisesByRequest\",\"_loadedStreamCapability\",\"Promise\",\"withResolvers\",\"sendRequest\",\"rangeReader\",\"getRangeReader\",\"isStreamingSupported\",\"onProgress\",\"bind\",\"loaded\",\"resolve\",\"reject\",\"readChunk\",\"done\",\"chunkData\",\"read\",\"then\",\"requestAllChunks\",\"noFetch\",\"_requestChunks\",\"promise\",\"requestId\",\"chunksNeeded\",\"capability\",\"chunksToRequest\",\"requestIds\",\"groupedChunksToRequest\",\"groupChunks\",\"groupedChunk\",\"catch\",\"getStream\",\"requestRange\",\"getBeginChunk\",\"getEndChunk\",\"requestRanges\",\"ranges\",\"sort\",\"groupedChunks\",\"prevChunk\",\"total\",\"isProgressive\",\"loadedRequests\",\"lastChunk\",\"onError\",\"err\",\"cancelAllRequests\",\"convertToRGBA\",\"params\",\"kind\",\"convertBlackAndWhiteToRGBA\",\"convertRGBToRGBA\",\"srcPos\",\"nonBlackColor\",\"inverseDecode\",\"black\",\"zeroMapping\",\"oneMapping\",\"widthInSource\",\"widthRemainder\",\"srcLength\",\"elem\",\"len32\",\"s1\",\"s2\",\"s3\",\"jj\",\"grayToRGBA\",\"MIN_IMAGE_DIM\",\"MAX_IMAGE_DIM\",\"MAX_ERROR\",\"ImageResizer\",\"goodSquareLength\",\"imgData\",\"isMask\",\"_imgData\",\"_isMask\",\"canUseImageDecoder\",\"isTypeSupported\",\"needsToBeResized\",\"MAX_DIM\",\"area\",\"_hasMaxArea\",\"MAX_AREA\",\"_areGoodDims\",\"_guessMax\",\"maxArea\",\"getReducePowerForJPX\",\"componentsCount\",\"maxJPXArea\",\"minFactor\",\"canvasMaxAreaInBytes\",\"canvas\",\"ctx\",\"getContext\",\"fillRect\",\"opacity\",\"tolerance\",\"defaultHeight\",\"middle\",\"createImage\",\"_createImage\",\"rescaleImageData\",\"_encodeBMP\",\"imagePromise\",\"preferAnimation\",\"transfer\",\"createImageBitmap\",\"Blob\",\"finally\",\"close\",\"firstFactor\",\"factor\",\"steps\",\"splice\",\"newWidth\",\"newHeight\",\"bitmap\",\"image\",\"step\",\"prevWidth\",\"prevHeight\",\"drawImage\",\"transferToImageBitmap\",\"#rescaleImageData\",\"rgbaSize\",\"rgbaData\",\"maxHeight\",\"newSize\",\"remainder\",\"h\",\"willReadFrequently\",\"putImageData\",\"ImageData\",\"bitPerPixel\",\"colorTable\",\"maskTable\",\"compression\",\"rowLen\",\"rowSize\",\"newData\",\"extraLen\",\"row\",\"tmp\",\"view\",\"DataView\",\"setUint32\",\"headerLength\",\"fileLength\",\"bmpData\",\"setUint16\",\"setInt32\",\"emptyBuffer\",\"DecodeStream\",\"maybeMinBufferLength\",\"_rawMinBufferLength\",\"bufferLength\",\"eof\",\"minBufferLength\",\"readBlock\",\"ensureBuffer\",\"requested\",\"buffer2\",\"bufEnd\",\"decodeImage\",\"StreamsSequenceStream\",\"streams\",\"filter\",\"maybeLength\",\"_onError\",\"shift\",\"newLength\",\"baseStreamsBuf\",\"baseStreams\",\"ColorSpaceUtils\",\"cs\",\"resources\",\"pdfFunctionFactory\",\"globalColorSpaceCache\",\"localColorSpaceCache\",\"asyncIfNotCached\",\"csName\",\"csRef\",\"parsedCS\",\"cachedCS\",\"getByRef\",\"getByName\",\"subParse\",\"#subParse\",\"#parse\",\"fetchIfRef\",\"gray\",\"rgb\",\"rgba\",\"cmyk\",\"colorSpaces\",\"resourcesCS\",\"mode\",\"isRef\",\"iccCS\",\"altRaw\",\"altCS\",\"hiVal\",\"JpegError\",\"DNLMarkerError\",\"scanLines\",\"EOIMarkerError\",\"dctZigZag\",\"dctCos1\",\"dctSin1\",\"dctCos3\",\"dctSin3\",\"dctCos6\",\"dctSin6\",\"dctSqrt2\",\"dctSqrt1d2\",\"buildHuffmanTable\",\"codeLengths\",\"children\",\"index\",\"pop\",\"getBlockBufferOffset\",\"col\",\"blocksPerLine\",\"decodeScan\",\"frame\",\"components\",\"resetInterval\",\"spectralStart\",\"spectralEnd\",\"successivePrev\",\"successive\",\"parseDNLMarker\",\"mcusPerLine\",\"progressive\",\"startOffset\",\"bitsData\",\"bitsCount\",\"readBit\",\"nextByte\",\"maybeScanLines\",\"blockRow\",\"precision\",\"decodeHuffman\",\"tree\",\"node\",\"receive\",\"receiveAndExtend\",\"decodeBaseline\",\"blockOffset\",\"huffmanTableDC\",\"diff\",\"blockData\",\"pred\",\"rs\",\"huffmanTableAC\",\"z\",\"decodeDCFirst\",\"decodeDCSuccessive\",\"eobrun\",\"decodeACFirst\",\"successiveACState\",\"successiveACNextValue\",\"decodeACSuccessive\",\"offsetZ\",\"sign\",\"decodeMcu\",\"mcu\",\"mcuRow\",\"mcuCol\",\"blockCol\",\"decodeBlock\",\"componentsLength\",\"decodeFn\",\"fileMarker\",\"mcuExpected\",\"blocksPerColumn\",\"mcusPerColumn\",\"mcuToRead\",\"findNextFileMarker\",\"invalid\",\"partialMsg\",\"marker\",\"quantizeAndInverse\",\"blockBufferOffset\",\"qt\",\"quantizationTable\",\"v0\",\"v3\",\"v4\",\"v5\",\"v6\",\"v7\",\"p3\",\"p4\",\"p5\",\"p6\",\"p7\",\"buildComponentData\",\"computationBuffer\",\"Int16Array\",\"currentPos\",\"startPos\",\"maxPos\",\"newPos\",\"currentMarker\",\"newMarker\",\"prepareComponents\",\"samplesPerLine\",\"maxH\",\"maxV\",\"blocksPerLineForMcu\",\"blocksPerColumnForMcu\",\"blocksBufferSize\",\"readDataBlock\",\"endOffset\",\"appData\",\"oldOffset\",\"newOffset\",\"skipData\",\"JpegImage\",\"decodeTransform\",\"colorTransform\",\"_decodeTransform\",\"_colorTransform\",\"exifOffsets\",\"numComponents\",\"markerLoop\",\"exifStart\",\"exifEnd\",\"dnlScanLines\",\"jfif\",\"adobe\",\"numSOSMarkers\",\"quantizationTables\",\"huffmanTablesAC\",\"huffmanTablesDC\",\"l\",\"version\",\"major\",\"minor\",\"densityUnits\",\"xDensity\",\"yDensity\",\"thumbWidth\",\"thumbHeight\",\"thumbData\",\"flags0\",\"flags1\",\"transformCode\",\"quantizationTablesLength\",\"quantizationTablesEnd\",\"quantizationTableSpec\",\"tableData\",\"extended\",\"sofScanLines\",\"componentIds\",\"componentId\",\"qId\",\"quantizationId\",\"huffmanLength\",\"huffmanTableSpec\",\"codeLengthSum\",\"huffmanValues\",\"selectorsCount\",\"componentIndex\",\"tableSpec\",\"successiveApproximation\",\"processed\",\"nextFileMarker\",\"scaleX\",\"scaleY\",\"_getLinearizedBlockData\",\"isSourcePDF\",\"componentScaleX\",\"componentScaleY\",\"blocksPerScanline\",\"xScaleBlockOffset\",\"mask3LSB\",\"lastComponentScaleX\",\"Int32Array\",\"_isColorConversionNeeded\",\"_convertYccToRgb\",\"Cb\",\"Cr\",\"_convertYccToRgba\",\"out\",\"_convertYcckToRgb\",\"_convertYcckToCmyk\",\"_convertCmykToRgb\",\"_convertYcckToRgba\",\"_convertCmykToRgba\",\"getData\",\"forceRGBA\",\"forceRGB\",\"grayColor\",\"JpegStream\",\"jpegOptions\",\"decodeArr\",\"bitsPerComponent\",\"decodeArrLength\",\"transformNeeded\",\"maxValue\",\"skipUselessBytes\",\"#skipUselessBytes\",\"jpegImage\",\"drawWidth\",\"drawHeight\",\"useImageDecoder\",\"OpenJPEG\",\"moduleArg\",\"moduleRtn\",\"readyPromiseResolve\",\"readyPromiseReject\",\"readyPromise\",\"ENVIRONMENT_IS_WEB\",\"ENVIRONMENT_IS_WORKER\",\"arguments_\",\"thisProgram\",\"quit_\",\"toThrow\",\"_scriptName\",\"import\",\"meta\",\"scriptDirectory\",\"readAsync\",\"readBinary\",\"credentials\",\"error\",\"wasmBinary\",\"wasmMemory\",\"ABORT\",\"EXITSTATUS\",\"HEAP8\",\"HEAPU8\",\"HEAP16\",\"HEAPU16\",\"HEAP32\",\"HEAPU32\",\"HEAPF32\",\"HEAP64\",\"HEAPU64\",\"HEAPF64\",\"runtimeInitialized\",\"updateMemoryViews\",\"Int8Array\",\"Float64Array\",\"preRun\",\"addOnPreRun\",\"callRuntimeCallbacks\",\"onPreRuns\",\"initRuntime\",\"wasmExports\",\"postRun\",\"addOnPostRun\",\"onPostRuns\",\"runDependencies\",\"dependenciesFulfilled\",\"addRunDependency\",\"id\",\"removeRunDependency\",\"callback\",\"what\",\"RuntimeError\",\"wasmBinaryFile\",\"getWasmImports\",\"wasmImports\",\"createWasm\",\"receiveInstance\",\"mod\",\"inst\",\"ExitStatus\",\"callbacks\",\"cb\",\"noExitRuntime\",\"__abort_js\",\"runtimeKeepaliveCounter\",\"__emscripten_runtime_keepalive_clear\",\"timers\",\"handleException\",\"keepRuntimeAlive\",\"_proc_exit\",\"exitJS\",\"implicit\",\"_exit\",\"maybeExit\",\"callUserCallback\",\"func\",\"_emscripten_get_now\",\"performance\",\"now\",\"__setitimer_js\",\"which\",\"timeout_ms\",\"clearTimeout\",\"setTimeout\",\"__emscripten_timeout\",\"_copy_pixels_1\",\"compG_ptr\",\"nb_pixels\",\"imageData\",\"compG\",\"_copy_pixels_3\",\"compR_ptr\",\"compB_ptr\",\"compR\",\"compB\",\"_copy_pixels_4\",\"compA_ptr\",\"compA\",\"getHeapMax\",\"alignMemory\",\"alignment\",\"growMemory\",\"pages\",\"_emscripten_resize_heap\",\"requestedSize\",\"oldSize\",\"maxHeapSize\",\"cutDown\",\"overGrownHeapSize\",\"replacement\",\"ENV\",\"getExecutableName\",\"getEnvStrings\",\"strings\",\"lang\",\"languages\",\"replace\",\"env\",\"USER\",\"LOGNAME\",\"PATH\",\"PWD\",\"HOME\",\"LANG\",\"stringToUTF8Array\",\"heap\",\"outIdx\",\"maxBytesToWrite\",\"startIdx\",\"endIdx\",\"u\",\"u1\",\"stringToUTF8\",\"outPtr\",\"_environ_get\",\"__environ\",\"environ_buf\",\"bufSize\",\"envp\",\"string\",\"Infinity\",\"lengthBytesUTF8\",\"_environ_sizes_get\",\"penviron_count\",\"penviron_buf_size\",\"_fd_close\",\"fd\",\"INT53_MAX\",\"INT53_MIN\",\"bigintToI53Checked\",\"NaN\",\"_fd_seek\",\"whence\",\"printCharBuffers\",\"UTF8Decoder\",\"UTF8ArrayToString\",\"heapOrArray\",\"idx\",\"maxBytesToRead\",\"endPtr\",\"u0\",\"u2\",\"printChar\",\"curr\",\"UTF8ToString\",\"_fd_write\",\"iov\",\"iovcnt\",\"pnum\",\"_gray_to_rgba\",\"_graya_to_rgba\",\"_jsPrintWarning\",\"message_ptr\",\"_rgb_to_rgba\",\"_storeErrorMessage\",\"errorMessages\",\"writeArrayToMemory\",\"f\",\"o\",\"___wasm_call_ctors\",\"_malloc\",\"_free\",\"_jp2_decode\",\"run\",\"doRun\",\"preInit\",\"JpxError\",\"JpxImage\",\"handler\",\"modulePromise\",\"getJsModule\",\"#getJsModule\",\"fallbackCallback\",\"default\",\"instantiateWasm\",\"#instantiateWasm\",\"successCallback\",\"filename\",\"sendWithPromise\",\"results\",\"isIndexedColormap\",\"smaskInData\",\"reducePower\",\"promises\",\"race\",\"cleanup\",\"parseImageProperties\",\"newByte\",\"oldByte\",\"Xsiz\",\"Ysiz\",\"XOsiz\",\"YOsiz\",\"Csiz\",\"addState\",\"parentState\",\"pattern\",\"checkFn\",\"iterateFn\",\"processFn\",\"state\",\"at\",\"InitialState\",\"iterateInlineImageGroup\",\"context\",\"fnArray\",\"iFirstSave\",\"iCurr\",\"foundInlineImageGroup\",\"MIN_IMAGES_IN_INLINE_IMAGES_BLOCK\",\"MAX_IMAGES_IN_INLINE_IMAGES_BLOCK\",\"MAX_WIDTH\",\"IMAGE_PADDING\",\"argsArray\",\"iFirstTransform\",\"iFirstPIIXO\",\"maxX\",\"maxLineHeight\",\"currentX\",\"currentY\",\"img\",\"w\",\"imgWidth\",\"imgHeight\",\"imgRowSize\",\"dataOffset\",\"kk\",\"iterateImageMaskGroup\",\"foundImageMaskGroup\",\"MIN_IMAGES_IN_MASKS_BLOCK\",\"MAX_IMAGES_IN_MASKS_BLOCK\",\"MAX_SAME_IMAGES_IN_MASKS_BLOCK\",\"iFirstPIMXO\",\"isSameImage\",\"iTransform\",\"transformArgs\",\"firstPIMXOArg0\",\"firstTransformArg0\",\"firstTransformArg1\",\"firstTransformArg2\",\"firstTransformArg3\",\"iPIMXO\",\"positions\",\"images\",\"maskParams\",\"interpolate\",\"iterateImageGroup\",\"iFirstPIXO\",\"firstPIXOArg0\",\"MIN_IMAGES_IN_BLOCK\",\"MAX_IMAGES_IN_BLOCK\",\"iterateShowTextGroup\",\"iFirstSetFont\",\"firstSetFontArg0\",\"firstSetFontArg1\",\"MIN_CHARS_IN_BLOCK\",\"MAX_CHARS_IN_BLOCK\",\"iFirstBeginText\",\"iFirstSetTextMatrix\",\"iFirstShowText\",\"iFirstEndText\",\"iFirst\",\"iEndText\",\"iFirstConstructPath\",\"op\",\"NullOptimizer\",\"queue\",\"_optimize\",\"fn\",\"flush\",\"QueueOptimizer\",\"OperatorList\",\"lastProcessed\",\"iterate\",\"CHUNK_SIZE\",\"CHUNK_SIZE_ABOUT\",\"streamSink\",\"_streamSink\",\"optimizer\",\"dependencies\",\"_totalLength\",\"_resolved\",\"ready\",\"totalLength\",\"addOp\",\"addImageOps\",\"optionalContent\",\"hasMask\",\"addDependency\",\"addDependencies\",\"addOpList\",\"opList\",\"getIR\",\"_transfers\",\"transfers\",\"bbox\",\"separateAnnots\",\"enqueue\",\"hexToInt\",\"hexToStr\",\"addHex\",\"incHex\",\"MAX_NUM_SIZE\",\"MAX_ENCODED_NUM_SIZE\",\"BinaryCMapStream\",\"readByte\",\"readNumber\",\"last\",\"readSigned\",\"readHex\",\"readHexNumber\",\"stack\",\"sp\",\"bufferSize\",\"readHexSigned\",\"readString\",\"BinaryCMapReader\",\"cMap\",\"extend\",\"header\",\"vertical\",\"useCMap\",\"sequence\",\"dataSize\",\"ucs2DataSize\",\"subitemsCount\",\"addCodespaceRange\",\"mapOne\",\"mapCidRange\",\"mapBfRange\",\"Ascii85Stream\",\"input\",\"TILDA_CHAR\",\"Z_LOWER_CHAR\",\"AsciiHexStream\",\"firstDigit\",\"UPSTREAM_BLOCK_SIZE\",\"maxDecodeLength\",\"digit\",\"ccittEOL\",\"ccittEOF\",\"twoDimPass\",\"twoDimHoriz\",\"twoDimVert0\",\"twoDimVertR1\",\"twoDimVertL1\",\"twoDimVertR2\",\"twoDimVertL2\",\"twoDimVertR3\",\"twoDimVertL3\",\"twoDimTable\",\"whiteTable1\",\"whiteTable2\",\"blackTable1\",\"blackTable2\",\"blackTable3\",\"CCITTFaxDecoder\",\"source\",\"next\",\"eoline\",\"EndOfLine\",\"byteAlign\",\"EncodedByteAlign\",\"columns\",\"Columns\",\"rows\",\"Rows\",\"eoblock\",\"EndOfBlock\",\"BlackIs1\",\"codingLine\",\"refLine\",\"codingPos\",\"nextLine2D\",\"inputBits\",\"inputBuf\",\"outputBits\",\"rowsDone\",\"code1\",\"_lookBits\",\"_eatBits\",\"readNextChar\",\"refPos\",\"blackPixels\",\"code2\",\"code3\",\"_getTwoDimCode\",\"_addPixels\",\"_getBlackCode\",\"_getWhiteCode\",\"_addPixelsNeg\",\"gotEOL\",\"_findTableCode\",\"limit\",\"limitValue\",\"CCITTFaxStream\",\"ccittFaxDecoder\",\"codeLenCodeMap\",\"lengthDecode\",\"distDecode\",\"fixedLitCodeTab\",\"fixedDistCodeTab\",\"FlateStream\",\"cmf\",\"flg\",\"codeSize\",\"codeBuf\",\"_decoderOptions\",\"readable\",\"DecompressionStream\",\"writer\",\"getWriter\",\"write\",\"getBits\",\"getCode\",\"codes\",\"maxLen\",\"codeLen\",\"codeVal\",\"generateHuffmanTable\",\"lengths\",\"endsStreamOnError\",\"#endsStreamOnError\",\"hdr\",\"blockLen\",\"check\",\"block\",\"litCodeTable\",\"distCodeTable\",\"numLitCodes\",\"numDistCodes\",\"numCodeLenCodes\",\"codeLenCodeLengths\",\"codeLenCodeTab\",\"bitsLength\",\"bitsOffset\",\"repeatLength\",\"dist\",\"QeTable\",\"qe\",\"nmps\",\"nlps\",\"switchFlag\",\"ArithmeticDecoder\",\"bp\",\"dataEnd\",\"chigh\",\"clow\",\"byteIn\",\"ct\",\"contexts\",\"cx_index\",\"cx_mps\",\"qeTableIcx\",\"qeIcx\",\"Jbig2Error\",\"ContextCache\",\"getContexts\",\"DecodingContext\",\"contextCache\",\"cache\",\"decodeInteger\",\"procedure\",\"prev\",\"readBits\",\"bit\",\"signedValue\",\"decodeIAID\",\"codeLength\",\"SegmentTypes\",\"CodingTemplates\",\"RefinementTemplates\",\"coding\",\"reference\",\"ReusedContexts\",\"RefinementReusedContexts\",\"decodeBitmapTemplate0\",\"decodingContext\",\"contextLabel\",\"pixel\",\"row1\",\"row2\",\"OLD_PIXEL_MASK\",\"decodeBitmap\",\"mmr\",\"templateIndex\",\"prediction\",\"Reader\",\"decodeMMRBitmap\",\"useskip\",\"template\",\"concat\",\"templateLength\",\"templateX\",\"templateY\",\"changingTemplateEntries\",\"reuseMask\",\"minX\",\"minY\",\"changingEntriesLength\",\"changingTemplateX\",\"changingTemplateY\",\"changingTemplateBit\",\"sbb_left\",\"sbb_top\",\"sbb_right\",\"pseudoPixelContext\",\"ltp\",\"i0\",\"j0\",\"sltp\",\"decodeRefinement\",\"referenceBitmap\",\"offsetX\",\"offsetY\",\"codingTemplate\",\"codingTemplateLength\",\"codingTemplateX\",\"codingTemplateY\",\"referenceTemplate\",\"referenceTemplateLength\",\"referenceTemplateX\",\"referenceTemplateY\",\"referenceWidth\",\"referenceHeight\",\"decodeSymbolDictionary\",\"huffman\",\"refinement\",\"symbols\",\"numberOfNewSymbols\",\"numberOfExportedSymbols\",\"huffmanTables\",\"refinementTemplateIndex\",\"refinementAt\",\"huffmanInput\",\"newSymbols\",\"currentHeight\",\"symbolCodeLength\",\"tableB1\",\"symbolWidths\",\"getStandardTable\",\"deltaHeight\",\"tableDeltaHeight\",\"currentWidth\",\"totalWidth\",\"firstSymbol\",\"deltaWidth\",\"tableDeltaWidth\",\"numberOfInstances\",\"decodeTextRegion\",\"symbolId\",\"rdx\",\"rdy\",\"symbol\",\"bitmapSize\",\"tableBitmapSize\",\"collectiveBitmap\",\"readUncompressedBitmap\",\"originalEnd\",\"bitmapEnd\",\"numberOfSymbolsDecoded\",\"xMin\",\"xMax\",\"bitmapWidth\",\"symbolBitmap\",\"exportedSymbols\",\"flags\",\"currentFlag\",\"totalSymbolsLength\",\"runLength\",\"defaultPixelValue\",\"numberOfSymbolInstances\",\"stripSize\",\"inputSymbols\",\"transposed\",\"dsOffset\",\"referenceCorner\",\"combinationOperator\",\"logStripSize\",\"stripT\",\"tableDeltaT\",\"firstS\",\"deltaT\",\"deltaFirstS\",\"tableFirstS\",\"currentS\",\"currentT\",\"symbolIDTable\",\"applyRefinement\",\"symbolWidth\",\"symbolHeight\",\"rdw\",\"rdh\",\"increment\",\"offsetT\",\"offsetS\",\"t2\",\"symbolRow\",\"maxWidth\",\"deltaS\",\"tableDeltaS\",\"decodePatternDictionary\",\"patternWidth\",\"patternHeight\",\"maxPatternIndex\",\"collectiveWidth\",\"patterns\",\"patternBitmap\",\"decodeHalftoneRegion\",\"regionWidth\",\"regionHeight\",\"enableSkip\",\"gridWidth\",\"gridHeight\",\"gridOffsetX\",\"gridOffsetY\",\"gridVectorX\",\"gridVectorY\",\"regionBitmap\",\"numberOfPatterns\",\"pattern0\",\"bitsPerValue\",\"grayScaleBitPlanes\",\"mmrInput\",\"mg\",\"ng\",\"patternIndex\",\"patternRow\",\"regionRow\",\"regionX\",\"regionY\",\"readSegmentHeader\",\"segmentHeader\",\"segmentType\",\"typeName\",\"deferredNonRetain\",\"pageAssociationFieldSize\",\"referredFlags\",\"referredToCount\",\"retainBits\",\"referredToSegmentNumberSize\",\"referredTo\",\"pageAssociation\",\"genericRegionInfo\",\"readRegionSegmentInformation\",\"genericRegionSegmentFlags\",\"RegionSegmentInformationFieldLength\",\"genericRegionMmr\",\"searchPatternLength\",\"searchPattern\",\"headerEnd\",\"readSegments\",\"segments\",\"segment\",\"randomAccess\",\"processSegment\",\"visitor\",\"atLength\",\"dictionary\",\"dictionaryFlags\",\"huffmanDHSelector\",\"huffmanDWSelector\",\"bitmapSizeSelector\",\"aggregationInstancesSelector\",\"bitmapCodingContextUsed\",\"bitmapCodingContextRetained\",\"refinementTemplate\",\"textRegion\",\"textRegionSegmentFlags\",\"textRegionHuffmanFlags\",\"huffmanFS\",\"huffmanDS\",\"huffmanDT\",\"huffmanRefinementDW\",\"huffmanRefinementDH\",\"huffmanRefinementDX\",\"huffmanRefinementDY\",\"huffmanRefinementSizeSelector\",\"patternDictionary\",\"patternDictionaryFlags\",\"halftoneRegion\",\"halftoneRegionFlags\",\"genericRegion\",\"pageInfo\",\"resolutionX\",\"resolutionY\",\"pageSegmentFlags\",\"lossless\",\"requiresBuffer\",\"combinationOperatorOverride\",\"callbackName\",\"processSegments\",\"parseJbig2Chunks\",\"SimpleSegmentVisitor\",\"onPageInformation\",\"currentPageInfo\",\"drawBitmap\",\"regionInfo\",\"mask0\",\"offset0\",\"mask\",\"onImmediateGenericRegion\",\"region\",\"onImmediateLosslessGenericRegion\",\"arguments\",\"onSymbolDictionary\",\"currentSegment\",\"referredSegments\",\"getSymbolDictionaryHuffmanTables\",\"customTables\",\"referredSegment\",\"referredSymbols\",\"onImmediateTextRegion\",\"getTextRegionHuffmanTables\",\"onImmediateLosslessTextRegion\",\"onPatternDictionary\",\"onImmediateHalftoneRegion\",\"onImmediateLosslessHalftoneRegion\",\"onTables\",\"decodeTablesSegment\",\"HuffmanLine\",\"lineData\",\"isOOB\",\"rangeLow\",\"prefixLength\",\"rangeLength\",\"prefixCode\",\"isLowerRange\",\"HuffmanTreeNode\",\"line\",\"isLeaf\",\"buildTree\",\"decodeNode\",\"reader\",\"htOffset\",\"HuffmanTable\",\"lines\",\"prefixCodesDone\",\"assignPrefixCodes\",\"rootNode\",\"linesLength\",\"prefixLengthMax\",\"histogram\",\"currentLength\",\"firstCode\",\"currentCode\",\"currentTemp\",\"lowestValue\",\"highestValue\",\"prefixSizeBits\",\"rangeSizeBits\",\"currentRangeLow\",\"standardTablesCache\",\"currentByte\",\"numBits\",\"getCustomHuffmanTable\",\"currentIndex\",\"numberOfSymbols\",\"runCodesTable\",\"repeatedLength\",\"numberOfRepeats\",\"customIndex\",\"tableAggregateInstances\",\"endOfBlock\",\"lookForEOFLimit\",\"Jbig2Image\",\"parseChunks\",\"Jbig2Stream\",\"jbig2Image\",\"globalsStream\",\"globals\",\"JpxStream\",\"LZWStream\",\"earlyChange\",\"cachedData\",\"bitsCached\",\"maxLzwDictionarySize\",\"lzwState\",\"nextCode\",\"dictionaryValues\",\"dictionaryLengths\",\"dictionaryPrevCodes\",\"currentSequence\",\"currentSequenceLength\",\"lastCode\",\"blockSize\",\"decodedSizeDelta\",\"estimatedDecodedSize\",\"prevCode\",\"decodedLength\",\"currentBufferLength\",\"hasPrev\",\"PredictorStream\",\"predictor\",\"readBlockTiff\",\"readBlockPng\",\"colors\",\"pixBytes\",\"rowBytes\",\"rawBytes\",\"inbuf\",\"outbuf\",\"inbits\",\"outbits\",\"bytesPerPixel\",\"sum\",\"compArray\",\"bitMask\",\"prevRow\",\"up\",\"upLeft\",\"left\",\"pa\",\"pb\",\"pc\",\"RunLengthStream\",\"repeatHeader\",\"MAX_LENGTH_TO_CACHE\",\"getInlineImageCacheKey\",\"Parser\",\"lexer\",\"allowStreams\",\"recoveryMode\",\"imageCache\",\"_imageId\",\"refill\",\"buf1\",\"getObj\",\"buf2\",\"tryShift\",\"cipherTransform\",\"makeInlineImage\",\"makeStream\",\"decryptString\",\"findDefaultInlineStreamEnd\",\"I\",\"SPACE\",\"LF\",\"CR\",\"NUL\",\"knownCommands\",\"maybeEIPos\",\"followingBytes\",\"tmpLexer\",\"Lexer\",\"_hexStringWarn\",\"numArgs\",\"nextObj\",\"knownCommand\",\"variableArgs\",\"findDCTDecodeInlineStreamEnd\",\"foundEOI\",\"markerLength\",\"inlineStreamSkipEI\",\"findASCII85DecodeInlineStreamEnd\",\"TILDE\",\"GT\",\"tildePos\",\"maybeEI\",\"findASCIIHexDecodeInlineStreamEnd\",\"dictMap\",\"dictLength\",\"beginInlineImagePos\",\"Filter\",\"filterName\",\"filterZero\",\"cacheKey\",\"initialStreamPos\",\"cacheEntry\",\"imageStream\",\"createStream\",\"findStreamLength\",\"#findStreamLength\",\"SCAN_BLOCK_LENGTH\",\"signatureLength\",\"END_SIGNATURE\",\"endLength\",\"PARTIAL_SIGNATURE\",\"normalLength\",\"scanBytes\",\"scanLength\",\"found\",\"part\",\"partLen\",\"lastByte\",\"skipToNextLine\",\"nextChar\",\"makeFilter\",\"filterArray\",\"paramsArray\",\"specialChars\",\"toHexDigit\",\"_hexStringNumWarn\",\"currentChar\",\"peekChar\",\"getNumber\",\"eNotation\",\"divideBy\",\"baseValue\",\"powerValue\",\"powerValueSign\",\"currentDigit\",\"numParen\",\"charBuffered\",\"getName\",\"previousCh\",\"MAX_HEX_STRING_NUM_WARN\",\"getHexString\",\"comment\",\"nextCh\",\"knownCommandFound\",\"possibleCommand\",\"Linearization\",\"getInt\",\"linDict\",\"allowZeroValue\",\"getHints\",\"hints\",\"hintsLength\",\"hint\",\"parser\",\"obj1\",\"obj2\",\"obj3\",\"objectNumberFirst\",\"endFirst\",\"numPages\",\"mainXRefEntriesOffset\",\"pageFirst\",\"BUILT_IN_CMAPS\",\"MAX_MAP_RANGE\",\"CMap\",\"builtInCMap\",\"codespaceRanges\",\"numCodespaceRanges\",\"low\",\"high\",\"dstLow\",\"nextCharCode\",\"mapBfRangeToArray\",\"dst\",\"contains\",\"forEach\",\"charCodeOf\",\"indexOf\",\"getMap\",\"readCharCode\",\"nn\",\"codespaceRange\",\"charcode\",\"getCharCodeLength\",\"isIdentityCMap\",\"IdentityCMap\",\"strToInt\",\"expectString\",\"expectInt\",\"parseBfChar\",\"parseBfRange\",\"parseCidChar\",\"parseCidRange\",\"parseCodespaceRange\",\"parseWMode\",\"parseCMapName\",\"parseCMap\",\"fetchBuiltInCMap\",\"previous\",\"embeddedUseCMap\",\"objLoop\",\"extendCMap\",\"createBuiltInCMap\",\"useCodespaceRanges\",\"cMapData\",\"isCompressed\",\"CMapFactory\",\"parsedCMap\",\"ExpertEncoding\",\"MacExpertEncoding\",\"MacRomanEncoding\",\"StandardEncoding\",\"WinAnsiEncoding\",\"SymbolSetEncoding\",\"ZapfDingbatsEncoding\",\"getEncoding\",\"encodingName\",\"getGlyphsUnicode\",\"AE\",\"AEacute\",\"AEmacron\",\"AEsmall\",\"Aacute\",\"Aacutesmall\",\"Abreve\",\"Abreveacute\",\"Abrevecyrillic\",\"Abrevedotbelow\",\"Abrevegrave\",\"Abrevehookabove\",\"Abrevetilde\",\"Acaron\",\"Acircle\",\"Acircumflex\",\"Acircumflexacute\",\"Acircumflexdotbelow\",\"Acircumflexgrave\",\"Acircumflexhookabove\",\"Acircumflexsmall\",\"Acircumflextilde\",\"Acute\",\"Acutesmall\",\"Acyrillic\",\"Adblgrave\",\"Adieresis\",\"Adieresiscyrillic\",\"Adieresismacron\",\"Adieresissmall\",\"Adotbelow\",\"Adotmacron\",\"Agrave\",\"Agravesmall\",\"Ahookabove\",\"Aiecyrillic\",\"Ainvertedbreve\",\"Alpha\",\"Alphatonos\",\"Amacron\",\"Amonospace\",\"Aogonek\",\"Aring\",\"Aringacute\",\"Aringbelow\",\"Aringsmall\",\"Asmall\",\"Atilde\",\"Atildesmall\",\"Aybarmenian\",\"Bcircle\",\"Bdotaccent\",\"Bdotbelow\",\"Becyrillic\",\"Benarmenian\",\"Beta\",\"Bhook\",\"Blinebelow\",\"Bmonospace\",\"Brevesmall\",\"Bsmall\",\"Btopbar\",\"Caarmenian\",\"Cacute\",\"Caron\",\"Caronsmall\",\"Ccaron\",\"Ccedilla\",\"Ccedillaacute\",\"Ccedillasmall\",\"Ccircle\",\"Ccircumflex\",\"Cdot\",\"Cdotaccent\",\"Cedillasmall\",\"Chaarmenian\",\"Cheabkhasiancyrillic\",\"Checyrillic\",\"Chedescenderabkhasiancyrillic\",\"Chedescendercyrillic\",\"Chedieresiscyrillic\",\"Cheharmenian\",\"Chekhakassiancyrillic\",\"Cheverticalstrokecyrillic\",\"Chi\",\"Chook\",\"Circumflexsmall\",\"Cmonospace\",\"Coarmenian\",\"Csmall\",\"DZ\",\"DZcaron\",\"Daarmenian\",\"Dafrican\",\"Dcaron\",\"Dcedilla\",\"Dcircle\",\"Dcircumflexbelow\",\"Dcroat\",\"Ddotaccent\",\"Ddotbelow\",\"Decyrillic\",\"Deicoptic\",\"Delta\",\"Deltagreek\",\"Dhook\",\"Dieresis\",\"DieresisAcute\",\"DieresisGrave\",\"Dieresissmall\",\"Digammagreek\",\"Djecyrillic\",\"Dlinebelow\",\"Dmonospace\",\"Dotaccentsmall\",\"Dslash\",\"Dsmall\",\"Dtopbar\",\"Dz\",\"Dzcaron\",\"Dzeabkhasiancyrillic\",\"Dzecyrillic\",\"Dzhecyrillic\",\"Eacute\",\"Eacutesmall\",\"Ebreve\",\"Ecaron\",\"Ecedillabreve\",\"Echarmenian\",\"Ecircle\",\"Ecircumflex\",\"Ecircumflexacute\",\"Ecircumflexbelow\",\"Ecircumflexdotbelow\",\"Ecircumflexgrave\",\"Ecircumflexhookabove\",\"Ecircumflexsmall\",\"Ecircumflextilde\",\"Ecyrillic\",\"Edblgrave\",\"Edieresis\",\"Edieresissmall\",\"Edot\",\"Edotaccent\",\"Edotbelow\",\"Efcyrillic\",\"Egrave\",\"Egravesmall\",\"Eharmenian\",\"Ehookabove\",\"Eightroman\",\"Einvertedbreve\",\"Eiotifiedcyrillic\",\"Elcyrillic\",\"Elevenroman\",\"Emacron\",\"Emacronacute\",\"Emacrongrave\",\"Emcyrillic\",\"Emonospace\",\"Encyrillic\",\"Endescendercyrillic\",\"Eng\",\"Enghecyrillic\",\"Enhookcyrillic\",\"Eogonek\",\"Eopen\",\"Epsilon\",\"Epsilontonos\",\"Ercyrillic\",\"Ereversed\",\"Ereversedcyrillic\",\"Escyrillic\",\"Esdescendercyrillic\",\"Esh\",\"Esmall\",\"Eta\",\"Etarmenian\",\"Etatonos\",\"Eth\",\"Ethsmall\",\"Etilde\",\"Etildebelow\",\"Euro\",\"Ezh\",\"Ezhcaron\",\"Ezhreversed\",\"Fcircle\",\"Fdotaccent\",\"Feharmenian\",\"Feicoptic\",\"Fhook\",\"Fitacyrillic\",\"Fiveroman\",\"Fmonospace\",\"Fourroman\",\"Fsmall\",\"GBsquare\",\"Gacute\",\"Gamma\",\"Gammaafrican\",\"Gangiacoptic\",\"Gbreve\",\"Gcaron\",\"Gcedilla\",\"Gcircle\",\"Gcircumflex\",\"Gcommaaccent\",\"Gdot\",\"Gdotaccent\",\"Gecyrillic\",\"Ghadarmenian\",\"Ghemiddlehookcyrillic\",\"Ghestrokecyrillic\",\"Gheupturncyrillic\",\"Ghook\",\"Gimarmenian\",\"Gjecyrillic\",\"Gmacron\",\"Gmonospace\",\"Grave\",\"Gravesmall\",\"Gsmall\",\"Gsmallhook\",\"Gstroke\",\"H\",\"H18533\",\"H18543\",\"H18551\",\"H22073\",\"HPsquare\",\"Haabkhasiancyrillic\",\"Hadescendercyrillic\",\"Hardsigncyrillic\",\"Hbar\",\"Hbrevebelow\",\"Hcedilla\",\"Hcircle\",\"Hcircumflex\",\"Hdieresis\",\"Hdotaccent\",\"Hdotbelow\",\"Hmonospace\",\"Hoarmenian\",\"Horicoptic\",\"Hsmall\",\"Hungarumlaut\",\"Hungarumlautsmall\",\"Hzsquare\",\"IAcyrillic\",\"IJ\",\"IUcyrillic\",\"Iacute\",\"Iacutesmall\",\"Ibreve\",\"Icaron\",\"Icircle\",\"Icircumflex\",\"Icircumflexsmall\",\"Icyrillic\",\"Idblgrave\",\"Idieresis\",\"Idieresisacute\",\"Idieresiscyrillic\",\"Idieresissmall\",\"Idot\",\"Idotaccent\",\"Idotbelow\",\"Iebrevecyrillic\",\"Iecyrillic\",\"Ifraktur\",\"Igrave\",\"Igravesmall\",\"Ihookabove\",\"Iicyrillic\",\"Iinvertedbreve\",\"Iishortcyrillic\",\"Imacron\",\"Imacroncyrillic\",\"Imonospace\",\"Iniarmenian\",\"Iocyrillic\",\"Iogonek\",\"Iota\",\"Iotaafrican\",\"Iotadieresis\",\"Iotatonos\",\"Ismall\",\"Istroke\",\"Itilde\",\"Itildebelow\",\"Izhitsacyrillic\",\"Izhitsadblgravecyrillic\",\"J\",\"Jaarmenian\",\"Jcircle\",\"Jcircumflex\",\"Jecyrillic\",\"Jheharmenian\",\"Jmonospace\",\"Jsmall\",\"KBsquare\",\"KKsquare\",\"Kabashkircyrillic\",\"Kacute\",\"Kacyrillic\",\"Kadescendercyrillic\",\"Kahookcyrillic\",\"Kappa\",\"Kastrokecyrillic\",\"Kaverticalstrokecyrillic\",\"Kcaron\",\"Kcedilla\",\"Kcircle\",\"Kcommaaccent\",\"Kdotbelow\",\"Keharmenian\",\"Kenarmenian\",\"Khacyrillic\",\"Kheicoptic\",\"Khook\",\"Kjecyrillic\",\"Klinebelow\",\"Kmonospace\",\"Koppacyrillic\",\"Koppagreek\",\"Ksicyrillic\",\"Ksmall\",\"LJ\",\"LL\",\"Lacute\",\"Lambda\",\"Lcaron\",\"Lcedilla\",\"Lcircle\",\"Lcircumflexbelow\",\"Lcommaaccent\",\"Ldot\",\"Ldotaccent\",\"Ldotbelow\",\"Ldotbelowmacron\",\"Liwnarmenian\",\"Lj\",\"Ljecyrillic\",\"Llinebelow\",\"Lmonospace\",\"Lslash\",\"Lslashsmall\",\"Lsmall\",\"MBsquare\",\"Macron\",\"Macronsmall\",\"Macute\",\"Mcircle\",\"Mdotaccent\",\"Mdotbelow\",\"Menarmenian\",\"Mmonospace\",\"Msmall\",\"Mturned\",\"Mu\",\"NJ\",\"Nacute\",\"Ncaron\",\"Ncedilla\",\"Ncircle\",\"Ncircumflexbelow\",\"Ncommaaccent\",\"Ndotaccent\",\"Ndotbelow\",\"Nhookleft\",\"Nineroman\",\"Nj\",\"Njecyrillic\",\"Nlinebelow\",\"Nmonospace\",\"Nowarmenian\",\"Nsmall\",\"Ntilde\",\"Ntildesmall\",\"Nu\",\"OE\",\"OEsmall\",\"Oacute\",\"Oacutesmall\",\"Obarredcyrillic\",\"Obarreddieresiscyrillic\",\"Obreve\",\"Ocaron\",\"Ocenteredtilde\",\"Ocircle\",\"Ocircumflex\",\"Ocircumflexacute\",\"Ocircumflexdotbelow\",\"Ocircumflexgrave\",\"Ocircumflexhookabove\",\"Ocircumflexsmall\",\"Ocircumflextilde\",\"Ocyrillic\",\"Odblacute\",\"Odblgrave\",\"Odieresis\",\"Odieresiscyrillic\",\"Odieresissmall\",\"Odotbelow\",\"Ogoneksmall\",\"Ograve\",\"Ogravesmall\",\"Oharmenian\",\"Ohm\",\"Ohookabove\",\"Ohorn\",\"Ohornacute\",\"Ohorndotbelow\",\"Ohorngrave\",\"Ohornhookabove\",\"Ohorntilde\",\"Ohungarumlaut\",\"Oi\",\"Oinvertedbreve\",\"Omacron\",\"Omacronacute\",\"Omacrongrave\",\"Omega\",\"Omegacyrillic\",\"Omegagreek\",\"Omegaroundcyrillic\",\"Omegatitlocyrillic\",\"Omegatonos\",\"Omicron\",\"Omicrontonos\",\"Omonospace\",\"Oneroman\",\"Oogonek\",\"Oogonekmacron\",\"Oopen\",\"Oslash\",\"Oslashacute\",\"Oslashsmall\",\"Osmall\",\"Ostrokeacute\",\"Otcyrillic\",\"Otilde\",\"Otildeacute\",\"Otildedieresis\",\"Otildesmall\",\"P\",\"Pacute\",\"Pcircle\",\"Pdotaccent\",\"Pecyrillic\",\"Peharmenian\",\"Pemiddlehookcyrillic\",\"Phi\",\"Phook\",\"Pi\",\"Piwrarmenian\",\"Pmonospace\",\"Psi\",\"Psicyrillic\",\"Psmall\",\"Q\",\"Qcircle\",\"Qmonospace\",\"Qsmall\",\"R\",\"Raarmenian\",\"Racute\",\"Rcaron\",\"Rcedilla\",\"Rcircle\",\"Rcommaaccent\",\"Rdblgrave\",\"Rdotaccent\",\"Rdotbelow\",\"Rdotbelowmacron\",\"Reharmenian\",\"Rfraktur\",\"Rho\",\"Ringsmall\",\"Rinvertedbreve\",\"Rlinebelow\",\"Rmonospace\",\"Rsmall\",\"Rsmallinverted\",\"Rsmallinvertedsuperior\",\"S\",\"SF010000\",\"SF020000\",\"SF030000\",\"SF040000\",\"SF050000\",\"SF060000\",\"SF070000\",\"SF080000\",\"SF090000\",\"SF100000\",\"SF110000\",\"SF190000\",\"SF200000\",\"SF210000\",\"SF220000\",\"SF230000\",\"SF240000\",\"SF250000\",\"SF260000\",\"SF270000\",\"SF280000\",\"SF360000\",\"SF370000\",\"SF380000\",\"SF390000\",\"SF400000\",\"SF410000\",\"SF420000\",\"SF430000\",\"SF440000\",\"SF450000\",\"SF460000\",\"SF470000\",\"SF480000\",\"SF490000\",\"SF500000\",\"SF510000\",\"SF520000\",\"SF530000\",\"SF540000\",\"Sacute\",\"Sacutedotaccent\",\"Sampigreek\",\"Scaron\",\"Scarondotaccent\",\"Scaronsmall\",\"Scedilla\",\"Schwa\",\"Schwacyrillic\",\"Schwadieresiscyrillic\",\"Scircle\",\"Scircumflex\",\"Scommaaccent\",\"Sdotaccent\",\"Sdotbelow\",\"Sdotbelowdotaccent\",\"Seharmenian\",\"Sevenroman\",\"Shaarmenian\",\"Shacyrillic\",\"Shchacyrillic\",\"Sheicoptic\",\"Shhacyrillic\",\"Shimacoptic\",\"Sigma\",\"Sixroman\",\"Smonospace\",\"Softsigncyrillic\",\"Ssmall\",\"Stigmagreek\",\"T\",\"Tau\",\"Tbar\",\"Tcaron\",\"Tcedilla\",\"Tcircle\",\"Tcircumflexbelow\",\"Tcommaaccent\",\"Tdotaccent\",\"Tdotbelow\",\"Tecyrillic\",\"Tedescendercyrillic\",\"Tenroman\",\"Tetsecyrillic\",\"Theta\",\"Thook\",\"Thorn\",\"Thornsmall\",\"Threeroman\",\"Tildesmall\",\"Tiwnarmenian\",\"Tlinebelow\",\"Tmonospace\",\"Toarmenian\",\"Tonefive\",\"Tonesix\",\"Tonetwo\",\"Tretroflexhook\",\"Tsecyrillic\",\"Tshecyrillic\",\"Tsmall\",\"Twelveroman\",\"Tworoman\",\"Uacute\",\"Uacutesmall\",\"Ubreve\",\"Ucaron\",\"Ucircle\",\"Ucircumflex\",\"Ucircumflexbelow\",\"Ucircumflexsmall\",\"Ucyrillic\",\"Udblacute\",\"Udblgrave\",\"Udieresis\",\"Udieresisacute\",\"Udieresisbelow\",\"Udieresiscaron\",\"Udieresiscyrillic\",\"Udieresisgrave\",\"Udieresismacron\",\"Udieresissmall\",\"Udotbelow\",\"Ugrave\",\"Ugravesmall\",\"Uhookabove\",\"Uhorn\",\"Uhornacute\",\"Uhorndotbelow\",\"Uhorngrave\",\"Uhornhookabove\",\"Uhorntilde\",\"Uhungarumlaut\",\"Uhungarumlautcyrillic\",\"Uinvertedbreve\",\"Ukcyrillic\",\"Umacron\",\"Umacroncyrillic\",\"Umacrondieresis\",\"Umonospace\",\"Uogonek\",\"Upsilon\",\"Upsilon1\",\"Upsilonacutehooksymbolgreek\",\"Upsilonafrican\",\"Upsilondieresis\",\"Upsilondieresishooksymbolgreek\",\"Upsilonhooksymbol\",\"Upsilontonos\",\"Uring\",\"Ushortcyrillic\",\"Usmall\",\"Ustraightcyrillic\",\"Ustraightstrokecyrillic\",\"Utilde\",\"Utildeacute\",\"Utildebelow\",\"Vcircle\",\"Vdotbelow\",\"Vecyrillic\",\"Vewarmenian\",\"Vhook\",\"Vmonospace\",\"Voarmenian\",\"Vsmall\",\"Vtilde\",\"W\",\"Wacute\",\"Wcircle\",\"Wcircumflex\",\"Wdieresis\",\"Wdotaccent\",\"Wdotbelow\",\"Wgrave\",\"Wmonospace\",\"Wsmall\",\"Xcircle\",\"Xdieresis\",\"Xdotaccent\",\"Xeharmenian\",\"Xi\",\"Xmonospace\",\"Xsmall\",\"Yacute\",\"Yacutesmall\",\"Yatcyrillic\",\"Ycircle\",\"Ycircumflex\",\"Ydieresis\",\"Ydieresissmall\",\"Ydotaccent\",\"Ydotbelow\",\"Yericyrillic\",\"Yerudieresiscyrillic\",\"Ygrave\",\"Yhook\",\"Yhookabove\",\"Yiarmenian\",\"Yicyrillic\",\"Yiwnarmenian\",\"Ymonospace\",\"Ysmall\",\"Ytilde\",\"Yusbigcyrillic\",\"Yusbigiotifiedcyrillic\",\"Yuslittlecyrillic\",\"Yuslittleiotifiedcyrillic\",\"Zaarmenian\",\"Zacute\",\"Zcaron\",\"Zcaronsmall\",\"Zcircle\",\"Zcircumflex\",\"Zdot\",\"Zdotaccent\",\"Zdotbelow\",\"Zecyrillic\",\"Zedescendercyrillic\",\"Zedieresiscyrillic\",\"Zeta\",\"Zhearmenian\",\"Zhebrevecyrillic\",\"Zhecyrillic\",\"Zhedescendercyrillic\",\"Zhedieresiscyrillic\",\"Zlinebelow\",\"Zmonospace\",\"Zsmall\",\"Zstroke\",\"aabengali\",\"aacute\",\"aadeva\",\"aagujarati\",\"aagurmukhi\",\"aamatragurmukhi\",\"aarusquare\",\"aavowelsignbengali\",\"aavowelsigndeva\",\"aavowelsigngujarati\",\"abbreviationmarkarmenian\",\"abbreviationsigndeva\",\"abengali\",\"abopomofo\",\"abreve\",\"abreveacute\",\"abrevecyrillic\",\"abrevedotbelow\",\"abrevegrave\",\"abrevehookabove\",\"abrevetilde\",\"acaron\",\"acircle\",\"acircumflex\",\"acircumflexacute\",\"acircumflexdotbelow\",\"acircumflexgrave\",\"acircumflexhookabove\",\"acircumflextilde\",\"acute\",\"acutebelowcmb\",\"acutecmb\",\"acutecomb\",\"acutedeva\",\"acutelowmod\",\"acutetonecmb\",\"acyrillic\",\"adblgrave\",\"addakgurmukhi\",\"adeva\",\"adieresis\",\"adieresiscyrillic\",\"adieresismacron\",\"adotbelow\",\"adotmacron\",\"ae\",\"aeacute\",\"aekorean\",\"aemacron\",\"afii00208\",\"afii08941\",\"afii10017\",\"afii10018\",\"afii10019\",\"afii10020\",\"afii10021\",\"afii10022\",\"afii10023\",\"afii10024\",\"afii10025\",\"afii10026\",\"afii10027\",\"afii10028\",\"afii10029\",\"afii10030\",\"afii10031\",\"afii10032\",\"afii10033\",\"afii10034\",\"afii10035\",\"afii10036\",\"afii10037\",\"afii10038\",\"afii10039\",\"afii10040\",\"afii10041\",\"afii10042\",\"afii10043\",\"afii10044\",\"afii10045\",\"afii10046\",\"afii10047\",\"afii10048\",\"afii10049\",\"afii10050\",\"afii10051\",\"afii10052\",\"afii10053\",\"afii10054\",\"afii10055\",\"afii10056\",\"afii10057\",\"afii10058\",\"afii10059\",\"afii10060\",\"afii10061\",\"afii10062\",\"afii10063\",\"afii10064\",\"afii10065\",\"afii10066\",\"afii10067\",\"afii10068\",\"afii10069\",\"afii10070\",\"afii10071\",\"afii10072\",\"afii10073\",\"afii10074\",\"afii10075\",\"afii10076\",\"afii10077\",\"afii10078\",\"afii10079\",\"afii10080\",\"afii10081\",\"afii10082\",\"afii10083\",\"afii10084\",\"afii10085\",\"afii10086\",\"afii10087\",\"afii10088\",\"afii10089\",\"afii10090\",\"afii10091\",\"afii10092\",\"afii10093\",\"afii10094\",\"afii10095\",\"afii10096\",\"afii10097\",\"afii10098\",\"afii10099\",\"afii10100\",\"afii10101\",\"afii10102\",\"afii10103\",\"afii10104\",\"afii10105\",\"afii10106\",\"afii10107\",\"afii10108\",\"afii10109\",\"afii10110\",\"afii10145\",\"afii10146\",\"afii10147\",\"afii10148\",\"afii10192\",\"afii10193\",\"afii10194\",\"afii10195\",\"afii10196\",\"afii10831\",\"afii10832\",\"afii10846\",\"afii299\",\"afii300\",\"afii301\",\"afii57381\",\"afii57388\",\"afii57392\",\"afii57393\",\"afii57394\",\"afii57395\",\"afii57396\",\"afii57397\",\"afii57398\",\"afii57399\",\"afii57400\",\"afii57401\",\"afii57403\",\"afii57407\",\"afii57409\",\"afii57410\",\"afii57411\",\"afii57412\",\"afii57413\",\"afii57414\",\"afii57415\",\"afii57416\",\"afii57417\",\"afii57418\",\"afii57419\",\"afii57420\",\"afii57421\",\"afii57422\",\"afii57423\",\"afii57424\",\"afii57425\",\"afii57426\",\"afii57427\",\"afii57428\",\"afii57429\",\"afii57430\",\"afii57431\",\"afii57432\",\"afii57433\",\"afii57434\",\"afii57440\",\"afii57441\",\"afii57442\",\"afii57443\",\"afii57444\",\"afii57445\",\"afii57446\",\"afii57448\",\"afii57449\",\"afii57450\",\"afii57451\",\"afii57452\",\"afii57453\",\"afii57454\",\"afii57455\",\"afii57456\",\"afii57457\",\"afii57458\",\"afii57470\",\"afii57505\",\"afii57506\",\"afii57507\",\"afii57508\",\"afii57509\",\"afii57511\",\"afii57512\",\"afii57513\",\"afii57514\",\"afii57519\",\"afii57534\",\"afii57636\",\"afii57645\",\"afii57658\",\"afii57664\",\"afii57665\",\"afii57666\",\"afii57667\",\"afii57668\",\"afii57669\",\"afii57670\",\"afii57671\",\"afii57672\",\"afii57673\",\"afii57674\",\"afii57675\",\"afii57676\",\"afii57677\",\"afii57678\",\"afii57679\",\"afii57680\",\"afii57681\",\"afii57682\",\"afii57683\",\"afii57684\",\"afii57685\",\"afii57686\",\"afii57687\",\"afii57688\",\"afii57689\",\"afii57690\",\"afii57694\",\"afii57695\",\"afii57700\",\"afii57705\",\"afii57716\",\"afii57717\",\"afii57718\",\"afii57723\",\"afii57793\",\"afii57794\",\"afii57795\",\"afii57796\",\"afii57797\",\"afii57798\",\"afii57799\",\"afii57800\",\"afii57801\",\"afii57802\",\"afii57803\",\"afii57804\",\"afii57806\",\"afii57807\",\"afii57839\",\"afii57841\",\"afii57842\",\"afii57929\",\"afii61248\",\"afii61289\",\"afii61352\",\"afii61573\",\"afii61574\",\"afii61575\",\"afii61664\",\"afii63167\",\"afii64937\",\"agrave\",\"agujarati\",\"agurmukhi\",\"ahiragana\",\"ahookabove\",\"aibengali\",\"aibopomofo\",\"aideva\",\"aiecyrillic\",\"aigujarati\",\"aigurmukhi\",\"aimatragurmukhi\",\"ainarabic\",\"ainfinalarabic\",\"aininitialarabic\",\"ainmedialarabic\",\"ainvertedbreve\",\"aivowelsignbengali\",\"aivowelsigndeva\",\"aivowelsigngujarati\",\"akatakana\",\"akatakanahalfwidth\",\"akorean\",\"alef\",\"alefarabic\",\"alefdageshhebrew\",\"aleffinalarabic\",\"alefhamzaabovearabic\",\"alefhamzaabovefinalarabic\",\"alefhamzabelowarabic\",\"alefhamzabelowfinalarabic\",\"alefhebrew\",\"aleflamedhebrew\",\"alefmaddaabovearabic\",\"alefmaddaabovefinalarabic\",\"alefmaksuraarabic\",\"alefmaksurafinalarabic\",\"alefmaksurainitialarabic\",\"alefmaksuramedialarabic\",\"alefpatahhebrew\",\"alefqamatshebrew\",\"aleph\",\"allequal\",\"alpha\",\"alphatonos\",\"amacron\",\"amonospace\",\"ampersand\",\"ampersandmonospace\",\"ampersandsmall\",\"amsquare\",\"anbopomofo\",\"angbopomofo\",\"angbracketleft\",\"angbracketright\",\"angkhankhuthai\",\"anglebracketleft\",\"anglebracketleftvertical\",\"anglebracketright\",\"anglebracketrightvertical\",\"angleleft\",\"angleright\",\"angstrom\",\"anoteleia\",\"anudattadeva\",\"anusvarabengali\",\"anusvaradeva\",\"anusvaragujarati\",\"aogonek\",\"apaatosquare\",\"aparen\",\"apostrophearmenian\",\"apostrophemod\",\"apple\",\"approaches\",\"approxequal\",\"approxequalorimage\",\"approximatelyequal\",\"araeaekorean\",\"araeakorean\",\"arc\",\"arighthalfring\",\"aring\",\"aringacute\",\"aringbelow\",\"arrowboth\",\"arrowdashdown\",\"arrowdashleft\",\"arrowdashright\",\"arrowdashup\",\"arrowdblboth\",\"arrowdbldown\",\"arrowdblleft\",\"arrowdblright\",\"arrowdblup\",\"arrowdown\",\"arrowdownleft\",\"arrowdownright\",\"arrowdownwhite\",\"arrowheaddownmod\",\"arrowheadleftmod\",\"arrowheadrightmod\",\"arrowheadupmod\",\"arrowhorizex\",\"arrowleft\",\"arrowleftdbl\",\"arrowleftdblstroke\",\"arrowleftoverright\",\"arrowleftwhite\",\"arrowright\",\"arrowrightdblstroke\",\"arrowrightheavy\",\"arrowrightoverleft\",\"arrowrightwhite\",\"arrowtableft\",\"arrowtabright\",\"arrowup\",\"arrowupdn\",\"arrowupdnbse\",\"arrowupdownbase\",\"arrowupleft\",\"arrowupleftofdown\",\"arrowupright\",\"arrowupwhite\",\"arrowvertex\",\"asciicircum\",\"asciicircummonospace\",\"asciitilde\",\"asciitildemonospace\",\"ascript\",\"ascriptturned\",\"asmallhiragana\",\"asmallkatakana\",\"asmallkatakanahalfwidth\",\"asterisk\",\"asteriskaltonearabic\",\"asteriskarabic\",\"asteriskmath\",\"asteriskmonospace\",\"asterisksmall\",\"asterism\",\"asuperior\",\"asymptoticallyequal\",\"atilde\",\"atmonospace\",\"atsmall\",\"aturned\",\"aubengali\",\"aubopomofo\",\"audeva\",\"augujarati\",\"augurmukhi\",\"aulengthmarkbengali\",\"aumatragurmukhi\",\"auvowelsignbengali\",\"auvowelsigndeva\",\"auvowelsigngujarati\",\"avagrahadeva\",\"aybarmenian\",\"ayin\",\"ayinaltonehebrew\",\"ayinhebrew\",\"babengali\",\"backslash\",\"backslashmonospace\",\"badeva\",\"bagujarati\",\"bagurmukhi\",\"bahiragana\",\"bahtthai\",\"bakatakana\",\"bar\",\"barmonospace\",\"bbopomofo\",\"bcircle\",\"bdotaccent\",\"bdotbelow\",\"beamedsixteenthnotes\",\"because\",\"becyrillic\",\"beharabic\",\"behfinalarabic\",\"behinitialarabic\",\"behiragana\",\"behmedialarabic\",\"behmeeminitialarabic\",\"behmeemisolatedarabic\",\"behnoonfinalarabic\",\"bekatakana\",\"benarmenian\",\"bet\",\"beta\",\"betasymbolgreek\",\"betdagesh\",\"betdageshhebrew\",\"bethebrew\",\"betrafehebrew\",\"bhabengali\",\"bhadeva\",\"bhagujarati\",\"bhagurmukhi\",\"bhook\",\"bihiragana\",\"bikatakana\",\"bilabialclick\",\"bindigurmukhi\",\"birusquare\",\"blackcircle\",\"blackdiamond\",\"blackdownpointingtriangle\",\"blackleftpointingpointer\",\"blackleftpointingtriangle\",\"blacklenticularbracketleft\",\"blacklenticularbracketleftvertical\",\"blacklenticularbracketright\",\"blacklenticularbracketrightvertical\",\"blacklowerlefttriangle\",\"blacklowerrighttriangle\",\"blackrectangle\",\"blackrightpointingpointer\",\"blackrightpointingtriangle\",\"blacksmallsquare\",\"blacksmilingface\",\"blacksquare\",\"blackstar\",\"blackupperlefttriangle\",\"blackupperrighttriangle\",\"blackuppointingsmalltriangle\",\"blackuppointingtriangle\",\"blank\",\"blinebelow\",\"bmonospace\",\"bobaimaithai\",\"bohiragana\",\"bokatakana\",\"bparen\",\"bqsquare\",\"braceex\",\"braceleft\",\"braceleftbt\",\"braceleftmid\",\"braceleftmonospace\",\"braceleftsmall\",\"bracelefttp\",\"braceleftvertical\",\"braceright\",\"bracerightbt\",\"bracerightmid\",\"bracerightmonospace\",\"bracerightsmall\",\"bracerighttp\",\"bracerightvertical\",\"bracketleft\",\"bracketleftbt\",\"bracketleftex\",\"bracketleftmonospace\",\"bracketlefttp\",\"bracketright\",\"bracketrightbt\",\"bracketrightex\",\"bracketrightmonospace\",\"bracketrighttp\",\"breve\",\"brevebelowcmb\",\"brevecmb\",\"breveinvertedbelowcmb\",\"breveinvertedcmb\",\"breveinverteddoublecmb\",\"bridgebelowcmb\",\"bridgeinvertedbelowcmb\",\"brokenbar\",\"bstroke\",\"bsuperior\",\"btopbar\",\"buhiragana\",\"bukatakana\",\"bullet\",\"bulletinverse\",\"bulletoperator\",\"bullseye\",\"caarmenian\",\"cabengali\",\"cacute\",\"cadeva\",\"cagujarati\",\"cagurmukhi\",\"calsquare\",\"candrabindubengali\",\"candrabinducmb\",\"candrabindudeva\",\"candrabindugujarati\",\"capslock\",\"careof\",\"caron\",\"caronbelowcmb\",\"caroncmb\",\"carriagereturn\",\"cbopomofo\",\"ccaron\",\"ccedilla\",\"ccedillaacute\",\"ccircle\",\"ccircumflex\",\"ccurl\",\"cdot\",\"cdotaccent\",\"cdsquare\",\"cedilla\",\"cedillacmb\",\"cent\",\"centigrade\",\"centinferior\",\"centmonospace\",\"centoldstyle\",\"centsuperior\",\"chaarmenian\",\"chabengali\",\"chadeva\",\"chagujarati\",\"chagurmukhi\",\"chbopomofo\",\"cheabkhasiancyrillic\",\"checkmark\",\"checyrillic\",\"chedescenderabkhasiancyrillic\",\"chedescendercyrillic\",\"chedieresiscyrillic\",\"cheharmenian\",\"chekhakassiancyrillic\",\"cheverticalstrokecyrillic\",\"chi\",\"chieuchacirclekorean\",\"chieuchaparenkorean\",\"chieuchcirclekorean\",\"chieuchkorean\",\"chieuchparenkorean\",\"chochangthai\",\"chochanthai\",\"chochingthai\",\"chochoethai\",\"chook\",\"cieucacirclekorean\",\"cieucaparenkorean\",\"cieuccirclekorean\",\"cieuckorean\",\"cieucparenkorean\",\"cieucuparenkorean\",\"circle\",\"circlecopyrt\",\"circlemultiply\",\"circleot\",\"circleplus\",\"circlepostalmark\",\"circlewithlefthalfblack\",\"circlewithrighthalfblack\",\"circumflex\",\"circumflexbelowcmb\",\"circumflexcmb\",\"clickalveolar\",\"clickdental\",\"clicklateral\",\"clickretroflex\",\"club\",\"clubsuitblack\",\"clubsuitwhite\",\"cmcubedsquare\",\"cmonospace\",\"cmsquaredsquare\",\"coarmenian\",\"colon\",\"colonmonetary\",\"colonmonospace\",\"colonsign\",\"colonsmall\",\"colontriangularhalfmod\",\"colontriangularmod\",\"comma\",\"commaabovecmb\",\"commaaboverightcmb\",\"commaaccent\",\"commaarabic\",\"commaarmenian\",\"commainferior\",\"commamonospace\",\"commareversedabovecmb\",\"commareversedmod\",\"commasmall\",\"commasuperior\",\"commaturnedabovecmb\",\"commaturnedmod\",\"compass\",\"congruent\",\"contourintegral\",\"control\",\"controlACK\",\"controlBEL\",\"controlBS\",\"controlCAN\",\"controlCR\",\"controlDC1\",\"controlDC2\",\"controlDC3\",\"controlDC4\",\"controlDEL\",\"controlDLE\",\"controlEM\",\"controlENQ\",\"controlEOT\",\"controlESC\",\"controlETB\",\"controlETX\",\"controlFF\",\"controlFS\",\"controlGS\",\"controlHT\",\"controlLF\",\"controlNAK\",\"controlNULL\",\"controlRS\",\"controlSI\",\"controlSO\",\"controlSOT\",\"controlSTX\",\"controlSUB\",\"controlSYN\",\"controlUS\",\"controlVT\",\"copyright\",\"copyrightsans\",\"copyrightserif\",\"cornerbracketleft\",\"cornerbracketlefthalfwidth\",\"cornerbracketleftvertical\",\"cornerbracketright\",\"cornerbracketrighthalfwidth\",\"cornerbracketrightvertical\",\"corporationsquare\",\"cosquare\",\"coverkgsquare\",\"cparen\",\"cruzeiro\",\"cstretched\",\"curlyand\",\"curlyor\",\"currency\",\"cyrBreve\",\"cyrFlex\",\"cyrbreve\",\"cyrflex\",\"daarmenian\",\"dabengali\",\"dadarabic\",\"dadeva\",\"dadfinalarabic\",\"dadinitialarabic\",\"dadmedialarabic\",\"dagesh\",\"dageshhebrew\",\"dagger\",\"daggerdbl\",\"dagujarati\",\"dagurmukhi\",\"dahiragana\",\"dakatakana\",\"dalarabic\",\"dalet\",\"daletdagesh\",\"daletdageshhebrew\",\"dalethebrew\",\"dalfinalarabic\",\"dammaarabic\",\"dammalowarabic\",\"dammatanaltonearabic\",\"dammatanarabic\",\"danda\",\"dargahebrew\",\"dargalefthebrew\",\"dasiapneumatacyrilliccmb\",\"dblGrave\",\"dblanglebracketleft\",\"dblanglebracketleftvertical\",\"dblanglebracketright\",\"dblanglebracketrightvertical\",\"dblarchinvertedbelowcmb\",\"dblarrowleft\",\"dblarrowright\",\"dbldanda\",\"dblgrave\",\"dblgravecmb\",\"dblintegral\",\"dbllowline\",\"dbllowlinecmb\",\"dbloverlinecmb\",\"dblprimemod\",\"dblverticalbar\",\"dblverticallineabovecmb\",\"dbopomofo\",\"dbsquare\",\"dcaron\",\"dcedilla\",\"dcircle\",\"dcircumflexbelow\",\"dcroat\",\"ddabengali\",\"ddadeva\",\"ddagujarati\",\"ddagurmukhi\",\"ddalarabic\",\"ddalfinalarabic\",\"dddhadeva\",\"ddhabengali\",\"ddhadeva\",\"ddhagujarati\",\"ddhagurmukhi\",\"ddotaccent\",\"ddotbelow\",\"decimalseparatorarabic\",\"decimalseparatorpersian\",\"decyrillic\",\"degree\",\"dehihebrew\",\"dehiragana\",\"deicoptic\",\"dekatakana\",\"deleteleft\",\"deleteright\",\"deltaturned\",\"denominatorminusonenumeratorbengali\",\"dezh\",\"dhabengali\",\"dhadeva\",\"dhagujarati\",\"dhagurmukhi\",\"dhook\",\"dialytikatonos\",\"dialytikatonoscmb\",\"diamond\",\"diamondsuitwhite\",\"dieresis\",\"dieresisacute\",\"dieresisbelowcmb\",\"dieresiscmb\",\"dieresisgrave\",\"dieresistonos\",\"dihiragana\",\"dikatakana\",\"dittomark\",\"divide\",\"divides\",\"divisionslash\",\"djecyrillic\",\"dkshade\",\"dlinebelow\",\"dlsquare\",\"dmacron\",\"dmonospace\",\"dnblock\",\"dochadathai\",\"dodekthai\",\"dohiragana\",\"dokatakana\",\"dollar\",\"dollarinferior\",\"dollarmonospace\",\"dollaroldstyle\",\"dollarsmall\",\"dollarsuperior\",\"dong\",\"dorusquare\",\"dotaccent\",\"dotaccentcmb\",\"dotbelowcmb\",\"dotbelowcomb\",\"dotkatakana\",\"dotlessi\",\"dotlessj\",\"dotlessjstrokehook\",\"dotmath\",\"dottedcircle\",\"doubleyodpatah\",\"doubleyodpatahhebrew\",\"downtackbelowcmb\",\"downtackmod\",\"dparen\",\"dsuperior\",\"dtail\",\"dtopbar\",\"duhiragana\",\"dukatakana\",\"dz\",\"dzaltone\",\"dzcaron\",\"dzcurl\",\"dzeabkhasiancyrillic\",\"dzecyrillic\",\"dzhecyrillic\",\"eacute\",\"earth\",\"ebengali\",\"ebopomofo\",\"ebreve\",\"ecandradeva\",\"ecandragujarati\",\"ecandravowelsigndeva\",\"ecandravowelsigngujarati\",\"ecaron\",\"ecedillabreve\",\"echarmenian\",\"echyiwnarmenian\",\"ecircle\",\"ecircumflex\",\"ecircumflexacute\",\"ecircumflexbelow\",\"ecircumflexdotbelow\",\"ecircumflexgrave\",\"ecircumflexhookabove\",\"ecircumflextilde\",\"ecyrillic\",\"edblgrave\",\"edeva\",\"edieresis\",\"edot\",\"edotaccent\",\"edotbelow\",\"eegurmukhi\",\"eematragurmukhi\",\"efcyrillic\",\"egrave\",\"egujarati\",\"eharmenian\",\"ehbopomofo\",\"ehiragana\",\"ehookabove\",\"eibopomofo\",\"eight\",\"eightarabic\",\"eightbengali\",\"eightcircle\",\"eightcircleinversesansserif\",\"eightdeva\",\"eighteencircle\",\"eighteenparen\",\"eighteenperiod\",\"eightgujarati\",\"eightgurmukhi\",\"eighthackarabic\",\"eighthangzhou\",\"eighthnotebeamed\",\"eightideographicparen\",\"eightinferior\",\"eightmonospace\",\"eightoldstyle\",\"eightparen\",\"eightperiod\",\"eightpersian\",\"eightroman\",\"eightsuperior\",\"eightthai\",\"einvertedbreve\",\"eiotifiedcyrillic\",\"ekatakana\",\"ekatakanahalfwidth\",\"ekonkargurmukhi\",\"ekorean\",\"elcyrillic\",\"elevencircle\",\"elevenparen\",\"elevenperiod\",\"elevenroman\",\"ellipsis\",\"ellipsisvertical\",\"emacron\",\"emacronacute\",\"emacrongrave\",\"emcyrillic\",\"emdash\",\"emdashvertical\",\"emonospace\",\"emphasismarkarmenian\",\"emptyset\",\"enbopomofo\",\"encyrillic\",\"endash\",\"endashvertical\",\"endescendercyrillic\",\"eng\",\"engbopomofo\",\"enghecyrillic\",\"enhookcyrillic\",\"enspace\",\"eogonek\",\"eokorean\",\"eopen\",\"eopenclosed\",\"eopenreversed\",\"eopenreversedclosed\",\"eopenreversedhook\",\"eparen\",\"epsilon\",\"epsilontonos\",\"equal\",\"equalmonospace\",\"equalsmall\",\"equalsuperior\",\"equivalence\",\"erbopomofo\",\"ercyrillic\",\"ereversed\",\"ereversedcyrillic\",\"escyrillic\",\"esdescendercyrillic\",\"esh\",\"eshcurl\",\"eshortdeva\",\"eshortvowelsigndeva\",\"eshreversedloop\",\"eshsquatreversed\",\"esmallhiragana\",\"esmallkatakana\",\"esmallkatakanahalfwidth\",\"estimated\",\"esuperior\",\"eta\",\"etarmenian\",\"etatonos\",\"eth\",\"etilde\",\"etildebelow\",\"etnahtafoukhhebrew\",\"etnahtafoukhlefthebrew\",\"etnahtahebrew\",\"etnahtalefthebrew\",\"eturned\",\"eukorean\",\"euro\",\"evowelsignbengali\",\"evowelsigndeva\",\"evowelsigngujarati\",\"exclam\",\"exclamarmenian\",\"exclamdbl\",\"exclamdown\",\"exclamdownsmall\",\"exclammonospace\",\"exclamsmall\",\"existential\",\"ezh\",\"ezhcaron\",\"ezhcurl\",\"ezhreversed\",\"ezhtail\",\"fadeva\",\"fagurmukhi\",\"fahrenheit\",\"fathaarabic\",\"fathalowarabic\",\"fathatanarabic\",\"fbopomofo\",\"fcircle\",\"fdotaccent\",\"feharabic\",\"feharmenian\",\"fehfinalarabic\",\"fehinitialarabic\",\"fehmedialarabic\",\"feicoptic\",\"female\",\"ff\",\"f_f\",\"ffi\",\"f_f_i\",\"ffl\",\"f_f_l\",\"fi\",\"f_i\",\"fifteencircle\",\"fifteenparen\",\"fifteenperiod\",\"figuredash\",\"filledbox\",\"filledrect\",\"finalkaf\",\"finalkafdagesh\",\"finalkafdageshhebrew\",\"finalkafhebrew\",\"finalmem\",\"finalmemhebrew\",\"finalnun\",\"finalnunhebrew\",\"finalpe\",\"finalpehebrew\",\"finaltsadi\",\"finaltsadihebrew\",\"firsttonechinese\",\"fisheye\",\"fitacyrillic\",\"five\",\"fivearabic\",\"fivebengali\",\"fivecircle\",\"fivecircleinversesansserif\",\"fivedeva\",\"fiveeighths\",\"fivegujarati\",\"fivegurmukhi\",\"fivehackarabic\",\"fivehangzhou\",\"fiveideographicparen\",\"fiveinferior\",\"fivemonospace\",\"fiveoldstyle\",\"fiveparen\",\"fiveperiod\",\"fivepersian\",\"fiveroman\",\"fivesuperior\",\"fivethai\",\"fl\",\"f_l\",\"florin\",\"fmonospace\",\"fmsquare\",\"fofanthai\",\"fofathai\",\"fongmanthai\",\"forall\",\"four\",\"fourarabic\",\"fourbengali\",\"fourcircle\",\"fourcircleinversesansserif\",\"fourdeva\",\"fourgujarati\",\"fourgurmukhi\",\"fourhackarabic\",\"fourhangzhou\",\"fourideographicparen\",\"fourinferior\",\"fourmonospace\",\"fournumeratorbengali\",\"fouroldstyle\",\"fourparen\",\"fourperiod\",\"fourpersian\",\"fourroman\",\"foursuperior\",\"fourteencircle\",\"fourteenparen\",\"fourteenperiod\",\"fourthai\",\"fourthtonechinese\",\"fparen\",\"fraction\",\"franc\",\"gabengali\",\"gacute\",\"gadeva\",\"gafarabic\",\"gaffinalarabic\",\"gafinitialarabic\",\"gafmedialarabic\",\"gagujarati\",\"gagurmukhi\",\"gahiragana\",\"gakatakana\",\"gammalatinsmall\",\"gammasuperior\",\"gangiacoptic\",\"gbopomofo\",\"gbreve\",\"gcaron\",\"gcedilla\",\"gcircle\",\"gcircumflex\",\"gcommaaccent\",\"gdot\",\"gdotaccent\",\"gecyrillic\",\"gehiragana\",\"gekatakana\",\"geometricallyequal\",\"gereshaccenthebrew\",\"gereshhebrew\",\"gereshmuqdamhebrew\",\"germandbls\",\"gershayimaccenthebrew\",\"gershayimhebrew\",\"getamark\",\"ghabengali\",\"ghadarmenian\",\"ghadeva\",\"ghagujarati\",\"ghagurmukhi\",\"ghainarabic\",\"ghainfinalarabic\",\"ghaininitialarabic\",\"ghainmedialarabic\",\"ghemiddlehookcyrillic\",\"ghestrokecyrillic\",\"gheupturncyrillic\",\"ghhadeva\",\"ghhagurmukhi\",\"ghook\",\"ghzsquare\",\"gihiragana\",\"gikatakana\",\"gimarmenian\",\"gimel\",\"gimeldagesh\",\"gimeldageshhebrew\",\"gimelhebrew\",\"gjecyrillic\",\"glottalinvertedstroke\",\"glottalstop\",\"glottalstopinverted\",\"glottalstopmod\",\"glottalstopreversed\",\"glottalstopreversedmod\",\"glottalstopreversedsuperior\",\"glottalstopstroke\",\"glottalstopstrokereversed\",\"gmacron\",\"gmonospace\",\"gohiragana\",\"gokatakana\",\"gparen\",\"gpasquare\",\"gradient\",\"grave\",\"gravebelowcmb\",\"gravecmb\",\"gravecomb\",\"gravedeva\",\"gravelowmod\",\"gravemonospace\",\"gravetonecmb\",\"greater\",\"greaterequal\",\"greaterequalorless\",\"greatermonospace\",\"greaterorequivalent\",\"greaterorless\",\"greateroverequal\",\"greatersmall\",\"gscript\",\"gstroke\",\"guhiragana\",\"guillemotleft\",\"guillemotright\",\"guilsinglleft\",\"guilsinglright\",\"gukatakana\",\"guramusquare\",\"gysquare\",\"haabkhasiancyrillic\",\"haaltonearabic\",\"habengali\",\"hadescendercyrillic\",\"hadeva\",\"hagujarati\",\"hagurmukhi\",\"haharabic\",\"hahfinalarabic\",\"hahinitialarabic\",\"hahiragana\",\"hahmedialarabic\",\"haitusquare\",\"hakatakana\",\"hakatakanahalfwidth\",\"halantgurmukhi\",\"hamzaarabic\",\"hamzalowarabic\",\"hangulfiller\",\"hardsigncyrillic\",\"harpoonleftbarbup\",\"harpoonrightbarbup\",\"hasquare\",\"hatafpatah\",\"hatafpatah16\",\"hatafpatah23\",\"hatafpatah2f\",\"hatafpatahhebrew\",\"hatafpatahnarrowhebrew\",\"hatafpatahquarterhebrew\",\"hatafpatahwidehebrew\",\"hatafqamats\",\"hatafqamats1b\",\"hatafqamats28\",\"hatafqamats34\",\"hatafqamatshebrew\",\"hatafqamatsnarrowhebrew\",\"hatafqamatsquarterhebrew\",\"hatafqamatswidehebrew\",\"hatafsegol\",\"hatafsegol17\",\"hatafsegol24\",\"hatafsegol30\",\"hatafsegolhebrew\",\"hatafsegolnarrowhebrew\",\"hatafsegolquarterhebrew\",\"hatafsegolwidehebrew\",\"hbar\",\"hbopomofo\",\"hbrevebelow\",\"hcedilla\",\"hcircle\",\"hcircumflex\",\"hdieresis\",\"hdotaccent\",\"hdotbelow\",\"he\",\"heart\",\"heartsuitblack\",\"heartsuitwhite\",\"hedagesh\",\"hedageshhebrew\",\"hehaltonearabic\",\"heharabic\",\"hehebrew\",\"hehfinalaltonearabic\",\"hehfinalalttwoarabic\",\"hehfinalarabic\",\"hehhamzaabovefinalarabic\",\"hehhamzaaboveisolatedarabic\",\"hehinitialaltonearabic\",\"hehinitialarabic\",\"hehiragana\",\"hehmedialaltonearabic\",\"hehmedialarabic\",\"heiseierasquare\",\"hekatakana\",\"hekatakanahalfwidth\",\"hekutaarusquare\",\"henghook\",\"herutusquare\",\"het\",\"hethebrew\",\"hhook\",\"hhooksuperior\",\"hieuhacirclekorean\",\"hieuhaparenkorean\",\"hieuhcirclekorean\",\"hieuhkorean\",\"hieuhparenkorean\",\"hihiragana\",\"hikatakana\",\"hikatakanahalfwidth\",\"hiriq\",\"hiriq14\",\"hiriq21\",\"hiriq2d\",\"hiriqhebrew\",\"hiriqnarrowhebrew\",\"hiriqquarterhebrew\",\"hiriqwidehebrew\",\"hlinebelow\",\"hmonospace\",\"hoarmenian\",\"hohipthai\",\"hohiragana\",\"hokatakana\",\"hokatakanahalfwidth\",\"holam\",\"holam19\",\"holam26\",\"holam32\",\"holamhebrew\",\"holamnarrowhebrew\",\"holamquarterhebrew\",\"holamwidehebrew\",\"honokhukthai\",\"hookabovecomb\",\"hookcmb\",\"hookpalatalizedbelowcmb\",\"hookretroflexbelowcmb\",\"hoonsquare\",\"horicoptic\",\"horizontalbar\",\"horncmb\",\"hotsprings\",\"house\",\"hparen\",\"hsuperior\",\"hturned\",\"huhiragana\",\"huiitosquare\",\"hukatakana\",\"hukatakanahalfwidth\",\"hungarumlaut\",\"hungarumlautcmb\",\"hv\",\"hyphen\",\"hypheninferior\",\"hyphenmonospace\",\"hyphensmall\",\"hyphensuperior\",\"hyphentwo\",\"iacute\",\"iacyrillic\",\"ibengali\",\"ibopomofo\",\"ibreve\",\"icaron\",\"icircle\",\"icircumflex\",\"icyrillic\",\"idblgrave\",\"ideographearthcircle\",\"ideographfirecircle\",\"ideographicallianceparen\",\"ideographiccallparen\",\"ideographiccentrecircle\",\"ideographicclose\",\"ideographiccomma\",\"ideographiccommaleft\",\"ideographiccongratulationparen\",\"ideographiccorrectcircle\",\"ideographicearthparen\",\"ideographicenterpriseparen\",\"ideographicexcellentcircle\",\"ideographicfestivalparen\",\"ideographicfinancialcircle\",\"ideographicfinancialparen\",\"ideographicfireparen\",\"ideographichaveparen\",\"ideographichighcircle\",\"ideographiciterationmark\",\"ideographiclaborcircle\",\"ideographiclaborparen\",\"ideographicleftcircle\",\"ideographiclowcircle\",\"ideographicmedicinecircle\",\"ideographicmetalparen\",\"ideographicmoonparen\",\"ideographicnameparen\",\"ideographicperiod\",\"ideographicprintcircle\",\"ideographicreachparen\",\"ideographicrepresentparen\",\"ideographicresourceparen\",\"ideographicrightcircle\",\"ideographicsecretcircle\",\"ideographicselfparen\",\"ideographicsocietyparen\",\"ideographicspace\",\"ideographicspecialparen\",\"ideographicstockparen\",\"ideographicstudyparen\",\"ideographicsunparen\",\"ideographicsuperviseparen\",\"ideographicwaterparen\",\"ideographicwoodparen\",\"ideographiczero\",\"ideographmetalcircle\",\"ideographmooncircle\",\"ideographnamecircle\",\"ideographsuncircle\",\"ideographwatercircle\",\"ideographwoodcircle\",\"ideva\",\"idieresis\",\"idieresisacute\",\"idieresiscyrillic\",\"idotbelow\",\"iebrevecyrillic\",\"iecyrillic\",\"ieungacirclekorean\",\"ieungaparenkorean\",\"ieungcirclekorean\",\"ieungkorean\",\"ieungparenkorean\",\"igrave\",\"igujarati\",\"igurmukhi\",\"ihiragana\",\"ihookabove\",\"iibengali\",\"iicyrillic\",\"iideva\",\"iigujarati\",\"iigurmukhi\",\"iimatragurmukhi\",\"iinvertedbreve\",\"iishortcyrillic\",\"iivowelsignbengali\",\"iivowelsigndeva\",\"iivowelsigngujarati\",\"ij\",\"ikatakana\",\"ikatakanahalfwidth\",\"ikorean\",\"ilde\",\"iluyhebrew\",\"imacron\",\"imacroncyrillic\",\"imageorapproximatelyequal\",\"imatragurmukhi\",\"imonospace\",\"infinity\",\"iniarmenian\",\"integral\",\"integralbottom\",\"integralbt\",\"integralex\",\"integraltop\",\"integraltp\",\"intersection\",\"intisquare\",\"invbullet\",\"invcircle\",\"invsmileface\",\"iocyrillic\",\"iogonek\",\"iota\",\"iotadieresis\",\"iotadieresistonos\",\"iotalatin\",\"iotatonos\",\"iparen\",\"irigurmukhi\",\"ismallhiragana\",\"ismallkatakana\",\"ismallkatakanahalfwidth\",\"issharbengali\",\"istroke\",\"isuperior\",\"iterationhiragana\",\"iterationkatakana\",\"itilde\",\"itildebelow\",\"iubopomofo\",\"iucyrillic\",\"ivowelsignbengali\",\"ivowelsigndeva\",\"ivowelsigngujarati\",\"izhitsacyrillic\",\"izhitsadblgravecyrillic\",\"jaarmenian\",\"jabengali\",\"jadeva\",\"jagujarati\",\"jagurmukhi\",\"jbopomofo\",\"jcaron\",\"jcircle\",\"jcircumflex\",\"jcrossedtail\",\"jdotlessstroke\",\"jecyrillic\",\"jeemarabic\",\"jeemfinalarabic\",\"jeeminitialarabic\",\"jeemmedialarabic\",\"jeharabic\",\"jehfinalarabic\",\"jhabengali\",\"jhadeva\",\"jhagujarati\",\"jhagurmukhi\",\"jheharmenian\",\"jis\",\"jmonospace\",\"jparen\",\"jsuperior\",\"kabashkircyrillic\",\"kabengali\",\"kacute\",\"kacyrillic\",\"kadescendercyrillic\",\"kadeva\",\"kaf\",\"kafarabic\",\"kafdagesh\",\"kafdageshhebrew\",\"kaffinalarabic\",\"kafhebrew\",\"kafinitialarabic\",\"kafmedialarabic\",\"kafrafehebrew\",\"kagujarati\",\"kagurmukhi\",\"kahiragana\",\"kahookcyrillic\",\"kakatakana\",\"kakatakanahalfwidth\",\"kappa\",\"kappasymbolgreek\",\"kapyeounmieumkorean\",\"kapyeounphieuphkorean\",\"kapyeounpieupkorean\",\"kapyeounssangpieupkorean\",\"karoriisquare\",\"kashidaautoarabic\",\"kashidaautonosidebearingarabic\",\"kasmallkatakana\",\"kasquare\",\"kasraarabic\",\"kasratanarabic\",\"kastrokecyrillic\",\"katahiraprolongmarkhalfwidth\",\"kaverticalstrokecyrillic\",\"kbopomofo\",\"kcalsquare\",\"kcaron\",\"kcedilla\",\"kcircle\",\"kcommaaccent\",\"kdotbelow\",\"keharmenian\",\"kehiragana\",\"kekatakana\",\"kekatakanahalfwidth\",\"kenarmenian\",\"kesmallkatakana\",\"kgreenlandic\",\"khabengali\",\"khacyrillic\",\"khadeva\",\"khagujarati\",\"khagurmukhi\",\"khaharabic\",\"khahfinalarabic\",\"khahinitialarabic\",\"khahmedialarabic\",\"kheicoptic\",\"khhadeva\",\"khhagurmukhi\",\"khieukhacirclekorean\",\"khieukhaparenkorean\",\"khieukhcirclekorean\",\"khieukhkorean\",\"khieukhparenkorean\",\"khokhaithai\",\"khokhonthai\",\"khokhuatthai\",\"khokhwaithai\",\"khomutthai\",\"khook\",\"khorakhangthai\",\"khzsquare\",\"kihiragana\",\"kikatakana\",\"kikatakanahalfwidth\",\"kiroguramusquare\",\"kiromeetorusquare\",\"kirosquare\",\"kiyeokacirclekorean\",\"kiyeokaparenkorean\",\"kiyeokcirclekorean\",\"kiyeokkorean\",\"kiyeokparenkorean\",\"kiyeoksioskorean\",\"kjecyrillic\",\"klinebelow\",\"klsquare\",\"kmcubedsquare\",\"kmonospace\",\"kmsquaredsquare\",\"kohiragana\",\"kohmsquare\",\"kokaithai\",\"kokatakana\",\"kokatakanahalfwidth\",\"kooposquare\",\"koppacyrillic\",\"koreanstandardsymbol\",\"koroniscmb\",\"kparen\",\"kpasquare\",\"ksicyrillic\",\"ktsquare\",\"kturned\",\"kuhiragana\",\"kukatakana\",\"kukatakanahalfwidth\",\"kvsquare\",\"kwsquare\",\"labengali\",\"lacute\",\"ladeva\",\"lagujarati\",\"lagurmukhi\",\"lakkhangyaothai\",\"lamaleffinalarabic\",\"lamalefhamzaabovefinalarabic\",\"lamalefhamzaaboveisolatedarabic\",\"lamalefhamzabelowfinalarabic\",\"lamalefhamzabelowisolatedarabic\",\"lamalefisolatedarabic\",\"lamalefmaddaabovefinalarabic\",\"lamalefmaddaaboveisolatedarabic\",\"lamarabic\",\"lambda\",\"lambdastroke\",\"lamed\",\"lameddagesh\",\"lameddageshhebrew\",\"lamedhebrew\",\"lamfinalarabic\",\"lamhahinitialarabic\",\"laminitialarabic\",\"lamjeeminitialarabic\",\"lamkhahinitialarabic\",\"lamlamhehisolatedarabic\",\"lammedialarabic\",\"lammeemhahinitialarabic\",\"lammeeminitialarabic\",\"largecircle\",\"lbar\",\"lbelt\",\"lbopomofo\",\"lcaron\",\"lcedilla\",\"lcircle\",\"lcircumflexbelow\",\"lcommaaccent\",\"ldot\",\"ldotaccent\",\"ldotbelow\",\"ldotbelowmacron\",\"leftangleabovecmb\",\"lefttackbelowcmb\",\"less\",\"lessequal\",\"lessequalorgreater\",\"lessmonospace\",\"lessorequivalent\",\"lessorgreater\",\"lessoverequal\",\"lesssmall\",\"lezh\",\"lfblock\",\"lhookretroflex\",\"lira\",\"liwnarmenian\",\"lj\",\"ljecyrillic\",\"ll\",\"lladeva\",\"llagujarati\",\"llinebelow\",\"llladeva\",\"llvocalicbengali\",\"llvocalicdeva\",\"llvocalicvowelsignbengali\",\"llvocalicvowelsigndeva\",\"lmiddletilde\",\"lmonospace\",\"lmsquare\",\"lochulathai\",\"logicaland\",\"logicalnot\",\"logicalnotreversed\",\"logicalor\",\"lolingthai\",\"longs\",\"lowlinecenterline\",\"lowlinecmb\",\"lowlinedashed\",\"lozenge\",\"lparen\",\"lslash\",\"lsquare\",\"lsuperior\",\"ltshade\",\"luthai\",\"lvocalicbengali\",\"lvocalicdeva\",\"lvocalicvowelsignbengali\",\"lvocalicvowelsigndeva\",\"lxsquare\",\"mabengali\",\"macron\",\"macronbelowcmb\",\"macroncmb\",\"macronlowmod\",\"macronmonospace\",\"macute\",\"madeva\",\"magujarati\",\"magurmukhi\",\"mahapakhhebrew\",\"mahapakhlefthebrew\",\"mahiragana\",\"maichattawalowleftthai\",\"maichattawalowrightthai\",\"maichattawathai\",\"maichattawaupperleftthai\",\"maieklowleftthai\",\"maieklowrightthai\",\"maiekthai\",\"maiekupperleftthai\",\"maihanakatleftthai\",\"maihanakatthai\",\"maitaikhuleftthai\",\"maitaikhuthai\",\"maitholowleftthai\",\"maitholowrightthai\",\"maithothai\",\"maithoupperleftthai\",\"maitrilowleftthai\",\"maitrilowrightthai\",\"maitrithai\",\"maitriupperleftthai\",\"maiyamokthai\",\"makatakana\",\"makatakanahalfwidth\",\"male\",\"mansyonsquare\",\"maqafhebrew\",\"mars\",\"masoracirclehebrew\",\"masquare\",\"mbopomofo\",\"mbsquare\",\"mcircle\",\"mcubedsquare\",\"mdotaccent\",\"mdotbelow\",\"meemarabic\",\"meemfinalarabic\",\"meeminitialarabic\",\"meemmedialarabic\",\"meemmeeminitialarabic\",\"meemmeemisolatedarabic\",\"meetorusquare\",\"mehiragana\",\"meizierasquare\",\"mekatakana\",\"mekatakanahalfwidth\",\"memdagesh\",\"memdageshhebrew\",\"memhebrew\",\"menarmenian\",\"merkhahebrew\",\"merkhakefulahebrew\",\"merkhakefulalefthebrew\",\"merkhalefthebrew\",\"mhook\",\"mhzsquare\",\"middledotkatakanahalfwidth\",\"middot\",\"mieumacirclekorean\",\"mieumaparenkorean\",\"mieumcirclekorean\",\"mieumkorean\",\"mieumpansioskorean\",\"mieumparenkorean\",\"mieumpieupkorean\",\"mieumsioskorean\",\"mihiragana\",\"mikatakana\",\"mikatakanahalfwidth\",\"minus\",\"minusbelowcmb\",\"minuscircle\",\"minusmod\",\"minusplus\",\"minute\",\"miribaarusquare\",\"mirisquare\",\"mlonglegturned\",\"mlsquare\",\"mmcubedsquare\",\"mmonospace\",\"mmsquaredsquare\",\"mohiragana\",\"mohmsquare\",\"mokatakana\",\"mokatakanahalfwidth\",\"molsquare\",\"momathai\",\"moverssquare\",\"moverssquaredsquare\",\"mparen\",\"mpasquare\",\"mssquare\",\"msuperior\",\"mturned\",\"mu\",\"mu1\",\"muasquare\",\"muchgreater\",\"muchless\",\"mufsquare\",\"mugreek\",\"mugsquare\",\"muhiragana\",\"mukatakana\",\"mukatakanahalfwidth\",\"mulsquare\",\"multiply\",\"mumsquare\",\"munahhebrew\",\"munahlefthebrew\",\"musicalnote\",\"musicalnotedbl\",\"musicflatsign\",\"musicsharpsign\",\"mussquare\",\"muvsquare\",\"muwsquare\",\"mvmegasquare\",\"mvsquare\",\"mwmegasquare\",\"mwsquare\",\"nabengali\",\"nabla\",\"nacute\",\"nadeva\",\"nagujarati\",\"nagurmukhi\",\"nahiragana\",\"nakatakana\",\"nakatakanahalfwidth\",\"napostrophe\",\"nasquare\",\"nbopomofo\",\"nbspace\",\"ncaron\",\"ncedilla\",\"ncircle\",\"ncircumflexbelow\",\"ncommaaccent\",\"ndotaccent\",\"ndotbelow\",\"nehiragana\",\"nekatakana\",\"nekatakanahalfwidth\",\"newsheqelsign\",\"nfsquare\",\"ngabengali\",\"ngadeva\",\"ngagujarati\",\"ngagurmukhi\",\"ngonguthai\",\"nhiragana\",\"nhookleft\",\"nhookretroflex\",\"nieunacirclekorean\",\"nieunaparenkorean\",\"nieuncieuckorean\",\"nieuncirclekorean\",\"nieunhieuhkorean\",\"nieunkorean\",\"nieunpansioskorean\",\"nieunparenkorean\",\"nieunsioskorean\",\"nieuntikeutkorean\",\"nihiragana\",\"nikatakana\",\"nikatakanahalfwidth\",\"nikhahitleftthai\",\"nikhahitthai\",\"nine\",\"ninearabic\",\"ninebengali\",\"ninecircle\",\"ninecircleinversesansserif\",\"ninedeva\",\"ninegujarati\",\"ninegurmukhi\",\"ninehackarabic\",\"ninehangzhou\",\"nineideographicparen\",\"nineinferior\",\"ninemonospace\",\"nineoldstyle\",\"nineparen\",\"nineperiod\",\"ninepersian\",\"nineroman\",\"ninesuperior\",\"nineteencircle\",\"nineteenparen\",\"nineteenperiod\",\"ninethai\",\"nj\",\"njecyrillic\",\"nkatakana\",\"nkatakanahalfwidth\",\"nlegrightlong\",\"nlinebelow\",\"nmonospace\",\"nmsquare\",\"nnabengali\",\"nnadeva\",\"nnagujarati\",\"nnagurmukhi\",\"nnnadeva\",\"nohiragana\",\"nokatakana\",\"nokatakanahalfwidth\",\"nonbreakingspace\",\"nonenthai\",\"nonuthai\",\"noonarabic\",\"noonfinalarabic\",\"noonghunnaarabic\",\"noonghunnafinalarabic\",\"nooninitialarabic\",\"noonjeeminitialarabic\",\"noonjeemisolatedarabic\",\"noonmedialarabic\",\"noonmeeminitialarabic\",\"noonmeemisolatedarabic\",\"noonnoonfinalarabic\",\"notcontains\",\"notelement\",\"notelementof\",\"notequal\",\"notgreater\",\"notgreaternorequal\",\"notgreaternorless\",\"notidentical\",\"notless\",\"notlessnorequal\",\"notparallel\",\"notprecedes\",\"notsubset\",\"notsucceeds\",\"notsuperset\",\"nowarmenian\",\"nparen\",\"nssquare\",\"nsuperior\",\"ntilde\",\"nu\",\"nuhiragana\",\"nukatakana\",\"nukatakanahalfwidth\",\"nuktabengali\",\"nuktadeva\",\"nuktagujarati\",\"nuktagurmukhi\",\"numbersign\",\"numbersignmonospace\",\"numbersignsmall\",\"numeralsigngreek\",\"numeralsignlowergreek\",\"numero\",\"nun\",\"nundagesh\",\"nundageshhebrew\",\"nunhebrew\",\"nvsquare\",\"nwsquare\",\"nyabengali\",\"nyadeva\",\"nyagujarati\",\"nyagurmukhi\",\"oacute\",\"oangthai\",\"obarred\",\"obarredcyrillic\",\"obarreddieresiscyrillic\",\"obengali\",\"obopomofo\",\"obreve\",\"ocandradeva\",\"ocandragujarati\",\"ocandravowelsigndeva\",\"ocandravowelsigngujarati\",\"ocaron\",\"ocircle\",\"ocircumflex\",\"ocircumflexacute\",\"ocircumflexdotbelow\",\"ocircumflexgrave\",\"ocircumflexhookabove\",\"ocircumflextilde\",\"ocyrillic\",\"odblacute\",\"odblgrave\",\"odeva\",\"odieresis\",\"odieresiscyrillic\",\"odotbelow\",\"oe\",\"oekorean\",\"ogonek\",\"ogonekcmb\",\"ograve\",\"ogujarati\",\"oharmenian\",\"ohiragana\",\"ohookabove\",\"ohorn\",\"ohornacute\",\"ohorndotbelow\",\"ohorngrave\",\"ohornhookabove\",\"ohorntilde\",\"ohungarumlaut\",\"oi\",\"oinvertedbreve\",\"okatakana\",\"okatakanahalfwidth\",\"okorean\",\"olehebrew\",\"omacron\",\"omacronacute\",\"omacrongrave\",\"omdeva\",\"omega\",\"omega1\",\"omegacyrillic\",\"omegalatinclosed\",\"omegaroundcyrillic\",\"omegatitlocyrillic\",\"omegatonos\",\"omgujarati\",\"omicron\",\"omicrontonos\",\"omonospace\",\"one\",\"onearabic\",\"onebengali\",\"onecircle\",\"onecircleinversesansserif\",\"onedeva\",\"onedotenleader\",\"oneeighth\",\"onefitted\",\"onegujarati\",\"onegurmukhi\",\"onehackarabic\",\"onehalf\",\"onehangzhou\",\"oneideographicparen\",\"oneinferior\",\"onemonospace\",\"onenumeratorbengali\",\"oneoldstyle\",\"oneparen\",\"oneperiod\",\"onepersian\",\"onequarter\",\"oneroman\",\"onesuperior\",\"onethai\",\"onethird\",\"oogonek\",\"oogonekmacron\",\"oogurmukhi\",\"oomatragurmukhi\",\"oopen\",\"oparen\",\"openbullet\",\"option\",\"ordfeminine\",\"ordmasculine\",\"orthogonal\",\"oshortdeva\",\"oshortvowelsigndeva\",\"oslash\",\"oslashacute\",\"osmallhiragana\",\"osmallkatakana\",\"osmallkatakanahalfwidth\",\"ostrokeacute\",\"osuperior\",\"otcyrillic\",\"otilde\",\"otildeacute\",\"otildedieresis\",\"oubopomofo\",\"overline\",\"overlinecenterline\",\"overlinecmb\",\"overlinedashed\",\"overlinedblwavy\",\"overlinewavy\",\"overscore\",\"ovowelsignbengali\",\"ovowelsigndeva\",\"ovowelsigngujarati\",\"paampssquare\",\"paasentosquare\",\"pabengali\",\"pacute\",\"padeva\",\"pagedown\",\"pageup\",\"pagujarati\",\"pagurmukhi\",\"pahiragana\",\"paiyannoithai\",\"pakatakana\",\"palatalizationcyrilliccmb\",\"palochkacyrillic\",\"pansioskorean\",\"paragraph\",\"parallel\",\"parenleft\",\"parenleftaltonearabic\",\"parenleftbt\",\"parenleftex\",\"parenleftinferior\",\"parenleftmonospace\",\"parenleftsmall\",\"parenleftsuperior\",\"parenlefttp\",\"parenleftvertical\",\"parenright\",\"parenrightaltonearabic\",\"parenrightbt\",\"parenrightex\",\"parenrightinferior\",\"parenrightmonospace\",\"parenrightsmall\",\"parenrightsuperior\",\"parenrighttp\",\"parenrightvertical\",\"partialdiff\",\"paseqhebrew\",\"pashtahebrew\",\"pasquare\",\"patah\",\"patah11\",\"patah1d\",\"patah2a\",\"patahhebrew\",\"patahnarrowhebrew\",\"patahquarterhebrew\",\"patahwidehebrew\",\"pazerhebrew\",\"pbopomofo\",\"pcircle\",\"pdotaccent\",\"pe\",\"pecyrillic\",\"pedagesh\",\"pedageshhebrew\",\"peezisquare\",\"pefinaldageshhebrew\",\"peharabic\",\"peharmenian\",\"pehebrew\",\"pehfinalarabic\",\"pehinitialarabic\",\"pehiragana\",\"pehmedialarabic\",\"pekatakana\",\"pemiddlehookcyrillic\",\"perafehebrew\",\"percent\",\"percentarabic\",\"percentmonospace\",\"percentsmall\",\"period\",\"periodarmenian\",\"periodcentered\",\"periodhalfwidth\",\"periodinferior\",\"periodmonospace\",\"periodsmall\",\"periodsuperior\",\"perispomenigreekcmb\",\"perpendicular\",\"perthousand\",\"peseta\",\"pfsquare\",\"phabengali\",\"phadeva\",\"phagujarati\",\"phagurmukhi\",\"phi\",\"phi1\",\"phieuphacirclekorean\",\"phieuphaparenkorean\",\"phieuphcirclekorean\",\"phieuphkorean\",\"phieuphparenkorean\",\"philatin\",\"phinthuthai\",\"phisymbolgreek\",\"phook\",\"phophanthai\",\"phophungthai\",\"phosamphaothai\",\"pi\",\"pieupacirclekorean\",\"pieupaparenkorean\",\"pieupcieuckorean\",\"pieupcirclekorean\",\"pieupkiyeokkorean\",\"pieupkorean\",\"pieupparenkorean\",\"pieupsioskiyeokkorean\",\"pieupsioskorean\",\"pieupsiostikeutkorean\",\"pieupthieuthkorean\",\"pieuptikeutkorean\",\"pihiragana\",\"pikatakana\",\"pisymbolgreek\",\"piwrarmenian\",\"planckover2pi\",\"planckover2pi1\",\"plus\",\"plusbelowcmb\",\"pluscircle\",\"plusminus\",\"plusmod\",\"plusmonospace\",\"plussmall\",\"plussuperior\",\"pmonospace\",\"pmsquare\",\"pohiragana\",\"pointingindexdownwhite\",\"pointingindexleftwhite\",\"pointingindexrightwhite\",\"pointingindexupwhite\",\"pokatakana\",\"poplathai\",\"postalmark\",\"postalmarkface\",\"pparen\",\"precedes\",\"prescription\",\"primemod\",\"primereversed\",\"product\",\"projective\",\"prolongedkana\",\"propellor\",\"propersubset\",\"propersuperset\",\"proportion\",\"proportional\",\"psi\",\"psicyrillic\",\"psilipneumatacyrilliccmb\",\"pssquare\",\"puhiragana\",\"pukatakana\",\"pvsquare\",\"pwsquare\",\"qadeva\",\"qadmahebrew\",\"qafarabic\",\"qaffinalarabic\",\"qafinitialarabic\",\"qafmedialarabic\",\"qamats\",\"qamats10\",\"qamats1a\",\"qamats1c\",\"qamats27\",\"qamats29\",\"qamats33\",\"qamatsde\",\"qamatshebrew\",\"qamatsnarrowhebrew\",\"qamatsqatanhebrew\",\"qamatsqatannarrowhebrew\",\"qamatsqatanquarterhebrew\",\"qamatsqatanwidehebrew\",\"qamatsquarterhebrew\",\"qamatswidehebrew\",\"qarneyparahebrew\",\"qbopomofo\",\"qcircle\",\"qhook\",\"qmonospace\",\"qof\",\"qofdagesh\",\"qofdageshhebrew\",\"qofhebrew\",\"qparen\",\"quarternote\",\"qubuts\",\"qubuts18\",\"qubuts25\",\"qubuts31\",\"qubutshebrew\",\"qubutsnarrowhebrew\",\"qubutsquarterhebrew\",\"qubutswidehebrew\",\"question\",\"questionarabic\",\"questionarmenian\",\"questiondown\",\"questiondownsmall\",\"questiongreek\",\"questionmonospace\",\"questionsmall\",\"quotedbl\",\"quotedblbase\",\"quotedblleft\",\"quotedblmonospace\",\"quotedblprime\",\"quotedblprimereversed\",\"quotedblright\",\"quoteleft\",\"quoteleftreversed\",\"quotereversed\",\"quoteright\",\"quoterightn\",\"quotesinglbase\",\"quotesingle\",\"quotesinglemonospace\",\"raarmenian\",\"rabengali\",\"racute\",\"radeva\",\"radical\",\"radicalex\",\"radoverssquare\",\"radoverssquaredsquare\",\"radsquare\",\"rafe\",\"rafehebrew\",\"ragujarati\",\"ragurmukhi\",\"rahiragana\",\"rakatakana\",\"rakatakanahalfwidth\",\"ralowerdiagonalbengali\",\"ramiddlediagonalbengali\",\"ramshorn\",\"ratio\",\"rbopomofo\",\"rcaron\",\"rcedilla\",\"rcircle\",\"rcommaaccent\",\"rdblgrave\",\"rdotaccent\",\"rdotbelow\",\"rdotbelowmacron\",\"referencemark\",\"reflexsubset\",\"reflexsuperset\",\"registered\",\"registersans\",\"registerserif\",\"reharabic\",\"reharmenian\",\"rehfinalarabic\",\"rehiragana\",\"rekatakana\",\"rekatakanahalfwidth\",\"resh\",\"reshdageshhebrew\",\"reshhebrew\",\"reversedtilde\",\"reviahebrew\",\"reviamugrashhebrew\",\"revlogicalnot\",\"rfishhook\",\"rfishhookreversed\",\"rhabengali\",\"rhadeva\",\"rho\",\"rhook\",\"rhookturned\",\"rhookturnedsuperior\",\"rhosymbolgreek\",\"rhotichookmod\",\"rieulacirclekorean\",\"rieulaparenkorean\",\"rieulcirclekorean\",\"rieulhieuhkorean\",\"rieulkiyeokkorean\",\"rieulkiyeoksioskorean\",\"rieulkorean\",\"rieulmieumkorean\",\"rieulpansioskorean\",\"rieulparenkorean\",\"rieulphieuphkorean\",\"rieulpieupkorean\",\"rieulpieupsioskorean\",\"rieulsioskorean\",\"rieulthieuthkorean\",\"rieultikeutkorean\",\"rieulyeorinhieuhkorean\",\"rightangle\",\"righttackbelowcmb\",\"righttriangle\",\"rihiragana\",\"rikatakana\",\"rikatakanahalfwidth\",\"ring\",\"ringbelowcmb\",\"ringcmb\",\"ringhalfleft\",\"ringhalfleftarmenian\",\"ringhalfleftbelowcmb\",\"ringhalfleftcentered\",\"ringhalfright\",\"ringhalfrightbelowcmb\",\"ringhalfrightcentered\",\"rinvertedbreve\",\"rittorusquare\",\"rlinebelow\",\"rlongleg\",\"rlonglegturned\",\"rmonospace\",\"rohiragana\",\"rokatakana\",\"rokatakanahalfwidth\",\"roruathai\",\"rparen\",\"rrabengali\",\"rradeva\",\"rragurmukhi\",\"rreharabic\",\"rrehfinalarabic\",\"rrvocalicbengali\",\"rrvocalicdeva\",\"rrvocalicgujarati\",\"rrvocalicvowelsignbengali\",\"rrvocalicvowelsigndeva\",\"rrvocalicvowelsigngujarati\",\"rsuperior\",\"rtblock\",\"rturned\",\"rturnedsuperior\",\"ruhiragana\",\"rukatakana\",\"rukatakanahalfwidth\",\"rupeemarkbengali\",\"rupeesignbengali\",\"rupiah\",\"ruthai\",\"rvocalicbengali\",\"rvocalicdeva\",\"rvocalicgujarati\",\"rvocalicvowelsignbengali\",\"rvocalicvowelsigndeva\",\"rvocalicvowelsigngujarati\",\"sabengali\",\"sacute\",\"sacutedotaccent\",\"sadarabic\",\"sadeva\",\"sadfinalarabic\",\"sadinitialarabic\",\"sadmedialarabic\",\"sagujarati\",\"sagurmukhi\",\"sahiragana\",\"sakatakana\",\"sakatakanahalfwidth\",\"sallallahoualayhewasallamarabic\",\"samekh\",\"samekhdagesh\",\"samekhdageshhebrew\",\"samekhhebrew\",\"saraaathai\",\"saraaethai\",\"saraaimaimalaithai\",\"saraaimaimuanthai\",\"saraamthai\",\"saraathai\",\"saraethai\",\"saraiileftthai\",\"saraiithai\",\"saraileftthai\",\"saraithai\",\"saraothai\",\"saraueeleftthai\",\"saraueethai\",\"saraueleftthai\",\"sarauethai\",\"sarauthai\",\"sarauuthai\",\"sbopomofo\",\"scaron\",\"scarondotaccent\",\"scedilla\",\"schwa\",\"schwacyrillic\",\"schwadieresiscyrillic\",\"schwahook\",\"scircle\",\"scircumflex\",\"scommaaccent\",\"sdotaccent\",\"sdotbelow\",\"sdotbelowdotaccent\",\"seagullbelowcmb\",\"secondtonechinese\",\"section\",\"seenarabic\",\"seenfinalarabic\",\"seeninitialarabic\",\"seenmedialarabic\",\"segol\",\"segol13\",\"segol1f\",\"segol2c\",\"segolhebrew\",\"segolnarrowhebrew\",\"segolquarterhebrew\",\"segoltahebrew\",\"segolwidehebrew\",\"seharmenian\",\"sehiragana\",\"sekatakana\",\"sekatakanahalfwidth\",\"semicolon\",\"semicolonarabic\",\"semicolonmonospace\",\"semicolonsmall\",\"semivoicedmarkkana\",\"semivoicedmarkkanahalfwidth\",\"sentisquare\",\"sentosquare\",\"seven\",\"sevenarabic\",\"sevenbengali\",\"sevencircle\",\"sevencircleinversesansserif\",\"sevendeva\",\"seveneighths\",\"sevengujarati\",\"sevengurmukhi\",\"sevenhackarabic\",\"sevenhangzhou\",\"sevenideographicparen\",\"seveninferior\",\"sevenmonospace\",\"sevenoldstyle\",\"sevenparen\",\"sevenperiod\",\"sevenpersian\",\"sevenroman\",\"sevensuperior\",\"seventeencircle\",\"seventeenparen\",\"seventeenperiod\",\"seventhai\",\"sfthyphen\",\"shaarmenian\",\"shabengali\",\"shacyrillic\",\"shaddaarabic\",\"shaddadammaarabic\",\"shaddadammatanarabic\",\"shaddafathaarabic\",\"shaddakasraarabic\",\"shaddakasratanarabic\",\"shade\",\"shadedark\",\"shadelight\",\"shademedium\",\"shadeva\",\"shagujarati\",\"shagurmukhi\",\"shalshelethebrew\",\"shbopomofo\",\"shchacyrillic\",\"sheenarabic\",\"sheenfinalarabic\",\"sheeninitialarabic\",\"sheenmedialarabic\",\"sheicoptic\",\"sheqel\",\"sheqelhebrew\",\"sheva\",\"sheva115\",\"sheva15\",\"sheva22\",\"sheva2e\",\"shevahebrew\",\"shevanarrowhebrew\",\"shevaquarterhebrew\",\"shevawidehebrew\",\"shhacyrillic\",\"shimacoptic\",\"shin\",\"shindagesh\",\"shindageshhebrew\",\"shindageshshindot\",\"shindageshshindothebrew\",\"shindageshsindot\",\"shindageshsindothebrew\",\"shindothebrew\",\"shinhebrew\",\"shinshindot\",\"shinshindothebrew\",\"shinsindot\",\"shinsindothebrew\",\"shook\",\"sigma\",\"sigma1\",\"sigmafinal\",\"sigmalunatesymbolgreek\",\"sihiragana\",\"sikatakana\",\"sikatakanahalfwidth\",\"siluqhebrew\",\"siluqlefthebrew\",\"similar\",\"sindothebrew\",\"siosacirclekorean\",\"siosaparenkorean\",\"sioscieuckorean\",\"sioscirclekorean\",\"sioskiyeokkorean\",\"sioskorean\",\"siosnieunkorean\",\"siosparenkorean\",\"siospieupkorean\",\"siostikeutkorean\",\"six\",\"sixarabic\",\"sixbengali\",\"sixcircle\",\"sixcircleinversesansserif\",\"sixdeva\",\"sixgujarati\",\"sixgurmukhi\",\"sixhackarabic\",\"sixhangzhou\",\"sixideographicparen\",\"sixinferior\",\"sixmonospace\",\"sixoldstyle\",\"sixparen\",\"sixperiod\",\"sixpersian\",\"sixroman\",\"sixsuperior\",\"sixteencircle\",\"sixteencurrencydenominatorbengali\",\"sixteenparen\",\"sixteenperiod\",\"sixthai\",\"slash\",\"slashmonospace\",\"slong\",\"slongdotaccent\",\"smileface\",\"smonospace\",\"sofpasuqhebrew\",\"softhyphen\",\"softsigncyrillic\",\"sohiragana\",\"sokatakana\",\"sokatakanahalfwidth\",\"soliduslongoverlaycmb\",\"solidusshortoverlaycmb\",\"sorusithai\",\"sosalathai\",\"sosothai\",\"sosuathai\",\"space\",\"spacehackarabic\",\"spade\",\"spadesuitblack\",\"spadesuitwhite\",\"sparen\",\"squarebelowcmb\",\"squarecc\",\"squarecm\",\"squarediagonalcrosshatchfill\",\"squarehorizontalfill\",\"squarekg\",\"squarekm\",\"squarekmcapital\",\"squareln\",\"squarelog\",\"squaremg\",\"squaremil\",\"squaremm\",\"squaremsquared\",\"squareorthogonalcrosshatchfill\",\"squareupperlefttolowerrightfill\",\"squareupperrighttolowerleftfill\",\"squareverticalfill\",\"squarewhitewithsmallblack\",\"srsquare\",\"ssabengali\",\"ssadeva\",\"ssagujarati\",\"ssangcieuckorean\",\"ssanghieuhkorean\",\"ssangieungkorean\",\"ssangkiyeokkorean\",\"ssangnieunkorean\",\"ssangpieupkorean\",\"ssangsioskorean\",\"ssangtikeutkorean\",\"ssuperior\",\"sterling\",\"sterlingmonospace\",\"strokelongoverlaycmb\",\"strokeshortoverlaycmb\",\"subset\",\"subsetnotequal\",\"subsetorequal\",\"succeeds\",\"suchthat\",\"suhiragana\",\"sukatakana\",\"sukatakanahalfwidth\",\"sukunarabic\",\"summation\",\"sun\",\"superset\",\"supersetnotequal\",\"supersetorequal\",\"svsquare\",\"syouwaerasquare\",\"tabengali\",\"tackdown\",\"tackleft\",\"tadeva\",\"tagujarati\",\"tagurmukhi\",\"taharabic\",\"tahfinalarabic\",\"tahinitialarabic\",\"tahiragana\",\"tahmedialarabic\",\"taisyouerasquare\",\"takatakana\",\"takatakanahalfwidth\",\"tatweelarabic\",\"tau\",\"tav\",\"tavdages\",\"tavdagesh\",\"tavdageshhebrew\",\"tavhebrew\",\"tbar\",\"tbopomofo\",\"tcaron\",\"tccurl\",\"tcedilla\",\"tcheharabic\",\"tchehfinalarabic\",\"tchehinitialarabic\",\"tchehmedialarabic\",\"tcircle\",\"tcircumflexbelow\",\"tcommaaccent\",\"tdieresis\",\"tdotaccent\",\"tdotbelow\",\"tecyrillic\",\"tedescendercyrillic\",\"teharabic\",\"tehfinalarabic\",\"tehhahinitialarabic\",\"tehhahisolatedarabic\",\"tehinitialarabic\",\"tehiragana\",\"tehjeeminitialarabic\",\"tehjeemisolatedarabic\",\"tehmarbutaarabic\",\"tehmarbutafinalarabic\",\"tehmedialarabic\",\"tehmeeminitialarabic\",\"tehmeemisolatedarabic\",\"tehnoonfinalarabic\",\"tekatakana\",\"tekatakanahalfwidth\",\"telephone\",\"telephoneblack\",\"telishagedolahebrew\",\"telishaqetanahebrew\",\"tencircle\",\"tenideographicparen\",\"tenparen\",\"tenperiod\",\"tenroman\",\"tesh\",\"tet\",\"tetdagesh\",\"tetdageshhebrew\",\"tethebrew\",\"tetsecyrillic\",\"tevirhebrew\",\"tevirlefthebrew\",\"thabengali\",\"thadeva\",\"thagujarati\",\"thagurmukhi\",\"thalarabic\",\"thalfinalarabic\",\"thanthakhatlowleftthai\",\"thanthakhatlowrightthai\",\"thanthakhatthai\",\"thanthakhatupperleftthai\",\"theharabic\",\"thehfinalarabic\",\"thehinitialarabic\",\"thehmedialarabic\",\"thereexists\",\"therefore\",\"theta\",\"theta1\",\"thetasymbolgreek\",\"thieuthacirclekorean\",\"thieuthaparenkorean\",\"thieuthcirclekorean\",\"thieuthkorean\",\"thieuthparenkorean\",\"thirteencircle\",\"thirteenparen\",\"thirteenperiod\",\"thonangmonthothai\",\"thook\",\"thophuthaothai\",\"thorn\",\"thothahanthai\",\"thothanthai\",\"thothongthai\",\"thothungthai\",\"thousandcyrillic\",\"thousandsseparatorarabic\",\"thousandsseparatorpersian\",\"three\",\"threearabic\",\"threebengali\",\"threecircle\",\"threecircleinversesansserif\",\"threedeva\",\"threeeighths\",\"threegujarati\",\"threegurmukhi\",\"threehackarabic\",\"threehangzhou\",\"threeideographicparen\",\"threeinferior\",\"threemonospace\",\"threenumeratorbengali\",\"threeoldstyle\",\"threeparen\",\"threeperiod\",\"threepersian\",\"threequarters\",\"threequartersemdash\",\"threeroman\",\"threesuperior\",\"threethai\",\"thzsquare\",\"tihiragana\",\"tikatakana\",\"tikatakanahalfwidth\",\"tikeutacirclekorean\",\"tikeutaparenkorean\",\"tikeutcirclekorean\",\"tikeutkorean\",\"tikeutparenkorean\",\"tilde\",\"tildebelowcmb\",\"tildecmb\",\"tildecomb\",\"tildedoublecmb\",\"tildeoperator\",\"tildeoverlaycmb\",\"tildeverticalcmb\",\"timescircle\",\"tipehahebrew\",\"tipehalefthebrew\",\"tippigurmukhi\",\"titlocyrilliccmb\",\"tiwnarmenian\",\"tlinebelow\",\"tmonospace\",\"toarmenian\",\"tohiragana\",\"tokatakana\",\"tokatakanahalfwidth\",\"tonebarextrahighmod\",\"tonebarextralowmod\",\"tonebarhighmod\",\"tonebarlowmod\",\"tonebarmidmod\",\"tonefive\",\"tonesix\",\"tonetwo\",\"tonos\",\"tonsquare\",\"topatakthai\",\"tortoiseshellbracketleft\",\"tortoiseshellbracketleftsmall\",\"tortoiseshellbracketleftvertical\",\"tortoiseshellbracketright\",\"tortoiseshellbracketrightsmall\",\"tortoiseshellbracketrightvertical\",\"totaothai\",\"tpalatalhook\",\"tparen\",\"trademark\",\"trademarksans\",\"trademarkserif\",\"tretroflexhook\",\"triagdn\",\"triaglf\",\"triagrt\",\"triagup\",\"ts\",\"tsadi\",\"tsadidagesh\",\"tsadidageshhebrew\",\"tsadihebrew\",\"tsecyrillic\",\"tsere\",\"tsere12\",\"tsere1e\",\"tsere2b\",\"tserehebrew\",\"tserenarrowhebrew\",\"tserequarterhebrew\",\"tserewidehebrew\",\"tshecyrillic\",\"tsuperior\",\"ttabengali\",\"ttadeva\",\"ttagujarati\",\"ttagurmukhi\",\"tteharabic\",\"ttehfinalarabic\",\"ttehinitialarabic\",\"ttehmedialarabic\",\"tthabengali\",\"tthadeva\",\"tthagujarati\",\"tthagurmukhi\",\"tturned\",\"tuhiragana\",\"tukatakana\",\"tukatakanahalfwidth\",\"tusmallhiragana\",\"tusmallkatakana\",\"tusmallkatakanahalfwidth\",\"twelvecircle\",\"twelveparen\",\"twelveperiod\",\"twelveroman\",\"twentycircle\",\"twentyhangzhou\",\"twentyparen\",\"twentyperiod\",\"two\",\"twoarabic\",\"twobengali\",\"twocircle\",\"twocircleinversesansserif\",\"twodeva\",\"twodotenleader\",\"twodotleader\",\"twodotleadervertical\",\"twogujarati\",\"twogurmukhi\",\"twohackarabic\",\"twohangzhou\",\"twoideographicparen\",\"twoinferior\",\"twomonospace\",\"twonumeratorbengali\",\"twooldstyle\",\"twoparen\",\"twoperiod\",\"twopersian\",\"tworoman\",\"twostroke\",\"twosuperior\",\"twothai\",\"twothirds\",\"uacute\",\"ubar\",\"ubengali\",\"ubopomofo\",\"ubreve\",\"ucaron\",\"ucircle\",\"ucircumflex\",\"ucircumflexbelow\",\"ucyrillic\",\"udattadeva\",\"udblacute\",\"udblgrave\",\"udeva\",\"udieresis\",\"udieresisacute\",\"udieresisbelow\",\"udieresiscaron\",\"udieresiscyrillic\",\"udieresisgrave\",\"udieresismacron\",\"udotbelow\",\"ugrave\",\"ugujarati\",\"ugurmukhi\",\"uhiragana\",\"uhookabove\",\"uhorn\",\"uhornacute\",\"uhorndotbelow\",\"uhorngrave\",\"uhornhookabove\",\"uhorntilde\",\"uhungarumlaut\",\"uhungarumlautcyrillic\",\"uinvertedbreve\",\"ukatakana\",\"ukatakanahalfwidth\",\"ukcyrillic\",\"ukorean\",\"umacron\",\"umacroncyrillic\",\"umacrondieresis\",\"umatragurmukhi\",\"umonospace\",\"underscore\",\"underscoredbl\",\"underscoremonospace\",\"underscorevertical\",\"underscorewavy\",\"union\",\"universal\",\"uogonek\",\"uparen\",\"upblock\",\"upperdothebrew\",\"upsilon\",\"upsilondieresis\",\"upsilondieresistonos\",\"upsilonlatin\",\"upsilontonos\",\"uptackbelowcmb\",\"uptackmod\",\"uragurmukhi\",\"uring\",\"ushortcyrillic\",\"usmallhiragana\",\"usmallkatakana\",\"usmallkatakanahalfwidth\",\"ustraightcyrillic\",\"ustraightstrokecyrillic\",\"utilde\",\"utildeacute\",\"utildebelow\",\"uubengali\",\"uudeva\",\"uugujarati\",\"uugurmukhi\",\"uumatragurmukhi\",\"uuvowelsignbengali\",\"uuvowelsigndeva\",\"uuvowelsigngujarati\",\"uvowelsignbengali\",\"uvowelsigndeva\",\"uvowelsigngujarati\",\"vadeva\",\"vagujarati\",\"vagurmukhi\",\"vakatakana\",\"vav\",\"vavdagesh\",\"vavdagesh65\",\"vavdageshhebrew\",\"vavhebrew\",\"vavholam\",\"vavholamhebrew\",\"vavvavhebrew\",\"vavyodhebrew\",\"vcircle\",\"vdotbelow\",\"vecyrillic\",\"veharabic\",\"vehfinalarabic\",\"vehinitialarabic\",\"vehmedialarabic\",\"vekatakana\",\"venus\",\"verticalbar\",\"verticallineabovecmb\",\"verticallinebelowcmb\",\"verticallinelowmod\",\"verticallinemod\",\"vewarmenian\",\"vhook\",\"vikatakana\",\"viramabengali\",\"viramadeva\",\"viramagujarati\",\"visargabengali\",\"visargadeva\",\"visargagujarati\",\"vmonospace\",\"voarmenian\",\"voicediterationhiragana\",\"voicediterationkatakana\",\"voicedmarkkana\",\"voicedmarkkanahalfwidth\",\"vokatakana\",\"vparen\",\"vtilde\",\"vturned\",\"vuhiragana\",\"vukatakana\",\"wacute\",\"waekorean\",\"wahiragana\",\"wakatakana\",\"wakatakanahalfwidth\",\"wakorean\",\"wasmallhiragana\",\"wasmallkatakana\",\"wattosquare\",\"wavedash\",\"wavyunderscorevertical\",\"wawarabic\",\"wawfinalarabic\",\"wawhamzaabovearabic\",\"wawhamzaabovefinalarabic\",\"wbsquare\",\"wcircle\",\"wcircumflex\",\"wdieresis\",\"wdotaccent\",\"wdotbelow\",\"wehiragana\",\"weierstrass\",\"wekatakana\",\"wekorean\",\"weokorean\",\"wgrave\",\"whitebullet\",\"whitecircle\",\"whitecircleinverse\",\"whitecornerbracketleft\",\"whitecornerbracketleftvertical\",\"whitecornerbracketright\",\"whitecornerbracketrightvertical\",\"whitediamond\",\"whitediamondcontainingblacksmalldiamond\",\"whitedownpointingsmalltriangle\",\"whitedownpointingtriangle\",\"whiteleftpointingsmalltriangle\",\"whiteleftpointingtriangle\",\"whitelenticularbracketleft\",\"whitelenticularbracketright\",\"whiterightpointingsmalltriangle\",\"whiterightpointingtriangle\",\"whitesmallsquare\",\"whitesmilingface\",\"whitesquare\",\"whitestar\",\"whitetelephone\",\"whitetortoiseshellbracketleft\",\"whitetortoiseshellbracketright\",\"whiteuppointingsmalltriangle\",\"whiteuppointingtriangle\",\"wihiragana\",\"wikatakana\",\"wikorean\",\"wmonospace\",\"wohiragana\",\"wokatakana\",\"wokatakanahalfwidth\",\"won\",\"wonmonospace\",\"wowaenthai\",\"wparen\",\"wring\",\"wsuperior\",\"wturned\",\"wynn\",\"xabovecmb\",\"xbopomofo\",\"xcircle\",\"xdieresis\",\"xdotaccent\",\"xeharmenian\",\"xi\",\"xmonospace\",\"xparen\",\"xsuperior\",\"yaadosquare\",\"yabengali\",\"yacute\",\"yadeva\",\"yaekorean\",\"yagujarati\",\"yagurmukhi\",\"yahiragana\",\"yakatakana\",\"yakatakanahalfwidth\",\"yakorean\",\"yamakkanthai\",\"yasmallhiragana\",\"yasmallkatakana\",\"yasmallkatakanahalfwidth\",\"yatcyrillic\",\"ycircle\",\"ycircumflex\",\"ydieresis\",\"ydotaccent\",\"ydotbelow\",\"yeharabic\",\"yehbarreearabic\",\"yehbarreefinalarabic\",\"yehfinalarabic\",\"yehhamzaabovearabic\",\"yehhamzaabovefinalarabic\",\"yehhamzaaboveinitialarabic\",\"yehhamzaabovemedialarabic\",\"yehinitialarabic\",\"yehmedialarabic\",\"yehmeeminitialarabic\",\"yehmeemisolatedarabic\",\"yehnoonfinalarabic\",\"yehthreedotsbelowarabic\",\"yekorean\",\"yen\",\"yenmonospace\",\"yeokorean\",\"yeorinhieuhkorean\",\"yerahbenyomohebrew\",\"yerahbenyomolefthebrew\",\"yericyrillic\",\"yerudieresiscyrillic\",\"yesieungkorean\",\"yesieungpansioskorean\",\"yesieungsioskorean\",\"yetivhebrew\",\"ygrave\",\"yhook\",\"yhookabove\",\"yiarmenian\",\"yicyrillic\",\"yikorean\",\"yinyang\",\"yiwnarmenian\",\"ymonospace\",\"yod\",\"yoddagesh\",\"yoddageshhebrew\",\"yodhebrew\",\"yodyodhebrew\",\"yodyodpatahhebrew\",\"yohiragana\",\"yoikorean\",\"yokatakana\",\"yokatakanahalfwidth\",\"yokorean\",\"yosmallhiragana\",\"yosmallkatakana\",\"yosmallkatakanahalfwidth\",\"yotgreek\",\"yoyaekorean\",\"yoyakorean\",\"yoyakthai\",\"yoyingthai\",\"yparen\",\"ypogegrammeni\",\"ypogegrammenigreekcmb\",\"yr\",\"yring\",\"ysuperior\",\"ytilde\",\"yturned\",\"yuhiragana\",\"yuikorean\",\"yukatakana\",\"yukatakanahalfwidth\",\"yukorean\",\"yusbigcyrillic\",\"yusbigiotifiedcyrillic\",\"yuslittlecyrillic\",\"yuslittleiotifiedcyrillic\",\"yusmallhiragana\",\"yusmallkatakana\",\"yusmallkatakanahalfwidth\",\"yuyekorean\",\"yuyeokorean\",\"yyabengali\",\"yyadeva\",\"zaarmenian\",\"zacute\",\"zadeva\",\"zagurmukhi\",\"zaharabic\",\"zahfinalarabic\",\"zahinitialarabic\",\"zahiragana\",\"zahmedialarabic\",\"zainarabic\",\"zainfinalarabic\",\"zakatakana\",\"zaqefgadolhebrew\",\"zaqefqatanhebrew\",\"zarqahebrew\",\"zayin\",\"zayindagesh\",\"zayindageshhebrew\",\"zayinhebrew\",\"zbopomofo\",\"zcaron\",\"zcircle\",\"zcircumflex\",\"zcurl\",\"zdot\",\"zdotaccent\",\"zdotbelow\",\"zecyrillic\",\"zedescendercyrillic\",\"zedieresiscyrillic\",\"zehiragana\",\"zekatakana\",\"zero\",\"zeroarabic\",\"zerobengali\",\"zerodeva\",\"zerogujarati\",\"zerogurmukhi\",\"zerohackarabic\",\"zeroinferior\",\"zeromonospace\",\"zerooldstyle\",\"zeropersian\",\"zerosuperior\",\"zerothai\",\"zerowidthjoiner\",\"zerowidthnonjoiner\",\"zerowidthspace\",\"zeta\",\"zhbopomofo\",\"zhearmenian\",\"zhebrevecyrillic\",\"zhecyrillic\",\"zhedescendercyrillic\",\"zhedieresiscyrillic\",\"zihiragana\",\"zikatakana\",\"zinorhebrew\",\"zlinebelow\",\"zmonospace\",\"zohiragana\",\"zokatakana\",\"zparen\",\"zretroflexhook\",\"zstroke\",\"zuhiragana\",\"zukatakana\",\"angbracketleftbig\",\"angbracketleftBig\",\"angbracketleftbigg\",\"angbracketleftBigg\",\"angbracketrightBig\",\"angbracketrightbig\",\"angbracketrightBigg\",\"angbracketrightbigg\",\"arrowhookleft\",\"arrowhookright\",\"arrowlefttophalf\",\"arrowleftbothalf\",\"arrownortheast\",\"arrownorthwest\",\"arrowrighttophalf\",\"arrowrightbothalf\",\"arrowsoutheast\",\"arrowsouthwest\",\"backslashbig\",\"backslashBig\",\"backslashBigg\",\"backslashbigg\",\"bardbl\",\"bracehtipdownleft\",\"bracehtipdownright\",\"bracehtipupleft\",\"bracehtipupright\",\"braceleftBig\",\"braceleftbig\",\"braceleftbigg\",\"braceleftBigg\",\"bracerightBig\",\"bracerightbig\",\"bracerightbigg\",\"bracerightBigg\",\"bracketleftbig\",\"bracketleftBig\",\"bracketleftbigg\",\"bracketleftBigg\",\"bracketrightBig\",\"bracketrightbig\",\"bracketrightbigg\",\"bracketrightBigg\",\"ceilingleftbig\",\"ceilingleftBig\",\"ceilingleftBigg\",\"ceilingleftbigg\",\"ceilingrightbig\",\"ceilingrightBig\",\"ceilingrightbigg\",\"ceilingrightBigg\",\"circledotdisplay\",\"circledottext\",\"circlemultiplydisplay\",\"circlemultiplytext\",\"circleplusdisplay\",\"circleplustext\",\"contintegraldisplay\",\"contintegraltext\",\"coproductdisplay\",\"coproducttext\",\"floorleftBig\",\"floorleftbig\",\"floorleftbigg\",\"floorleftBigg\",\"floorrightbig\",\"floorrightBig\",\"floorrightBigg\",\"floorrightbigg\",\"hatwide\",\"hatwider\",\"hatwidest\",\"intercal\",\"integraldisplay\",\"integraltext\",\"intersectiondisplay\",\"intersectiontext\",\"logicalanddisplay\",\"logicalandtext\",\"logicalordisplay\",\"logicalortext\",\"parenleftBig\",\"parenleftbig\",\"parenleftBigg\",\"parenleftbigg\",\"parenrightBig\",\"parenrightbig\",\"parenrightBigg\",\"parenrightbigg\",\"prime\",\"productdisplay\",\"producttext\",\"radicalbig\",\"radicalBig\",\"radicalBigg\",\"radicalbigg\",\"radicalbt\",\"radicaltp\",\"radicalvertex\",\"slashbig\",\"slashBig\",\"slashBigg\",\"slashbigg\",\"summationdisplay\",\"summationtext\",\"tildewide\",\"tildewider\",\"tildewidest\",\"uniondisplay\",\"unionmultidisplay\",\"unionmultitext\",\"unionsqdisplay\",\"unionsqtext\",\"uniontext\",\"vextenddouble\",\"vextendsingle\",\"getDingbatsGlyphsUnicode\",\"a202\",\"a4\",\"a5\",\"a119\",\"a118\",\"a117\",\"a11\",\"a12\",\"a13\",\"a14\",\"a15\",\"a16\",\"a105\",\"a17\",\"a18\",\"a19\",\"a20\",\"a21\",\"a22\",\"a23\",\"a24\",\"a25\",\"a26\",\"a27\",\"a28\",\"a6\",\"a7\",\"a8\",\"a9\",\"a10\",\"a29\",\"a30\",\"a31\",\"a32\",\"a33\",\"a34\",\"a35\",\"a36\",\"a37\",\"a38\",\"a39\",\"a40\",\"a41\",\"a42\",\"a43\",\"a44\",\"a45\",\"a46\",\"a47\",\"a48\",\"a49\",\"a50\",\"a51\",\"a52\",\"a53\",\"a54\",\"a55\",\"a56\",\"a57\",\"a58\",\"a59\",\"a60\",\"a61\",\"a62\",\"a63\",\"a64\",\"a65\",\"a66\",\"a67\",\"a68\",\"a69\",\"a70\",\"a71\",\"a72\",\"a73\",\"a74\",\"a203\",\"a75\",\"a204\",\"a76\",\"a77\",\"a78\",\"a79\",\"a81\",\"a82\",\"a83\",\"a84\",\"a97\",\"a98\",\"a99\",\"a100\",\"a101\",\"a102\",\"a103\",\"a104\",\"a106\",\"a107\",\"a108\",\"a112\",\"a111\",\"a110\",\"a109\",\"a120\",\"a121\",\"a122\",\"a123\",\"a124\",\"a125\",\"a126\",\"a127\",\"a128\",\"a129\",\"a130\",\"a131\",\"a132\",\"a133\",\"a134\",\"a135\",\"a136\",\"a137\",\"a138\",\"a139\",\"a140\",\"a141\",\"a142\",\"a143\",\"a144\",\"a145\",\"a146\",\"a147\",\"a148\",\"a149\",\"a150\",\"a151\",\"a152\",\"a153\",\"a154\",\"a155\",\"a156\",\"a157\",\"a158\",\"a159\",\"a160\",\"a161\",\"a163\",\"a164\",\"a196\",\"a165\",\"a192\",\"a166\",\"a167\",\"a168\",\"a169\",\"a170\",\"a171\",\"a172\",\"a173\",\"a162\",\"a174\",\"a175\",\"a176\",\"a177\",\"a178\",\"a179\",\"a193\",\"a180\",\"a199\",\"a181\",\"a200\",\"a182\",\"a201\",\"a183\",\"a184\",\"a197\",\"a185\",\"a194\",\"a198\",\"a186\",\"a195\",\"a187\",\"a188\",\"a189\",\"a190\",\"a191\",\"a89\",\"a90\",\"a93\",\"a94\",\"a91\",\"a92\",\"a205\",\"a85\",\"a206\",\"a86\",\"a87\",\"a88\",\"a95\",\"a96\",\"getSpecialPUASymbols\",\"mapSpecialUnicodeValues\",\"getUnicodeForGlyph\",\"glyphsUnicodeMap\",\"unicode\",\"nameLen\",\"hexStr\",\"UnicodeRanges\",\"getUnicodeRangeFor\",\"lastPosition\",\"SpecialCharRegExp\",\"CategoryCache\",\"getCharUnicodeCategory\",\"cachedCategory\",\"groups\",\"category\",\"isWhitespace\",\"isZeroWidthDiacritic\",\"isInvisibleFormatMark\",\"clearUnicodeCaches\",\"SEAC_ANALYSIS_ENABLED\",\"FontFlags\",\"FixedPitch\",\"Serif\",\"Symbolic\",\"Script\",\"Nonsymbolic\",\"Italic\",\"AllCap\",\"SmallCap\",\"ForceBold\",\"MacStandardGlyphOrdering\",\"recoverGlyphName\",\"type1FontGlyphMapping\",\"builtInEncoding\",\"glyphNames\",\"charCodeToGlyphId\",\"glyphId\",\"baseEncoding\",\"isSymbolicFont\",\"isInternalFont\",\"baseEncodingName\",\"differences\",\"glyphName\",\"standardGlyphName\",\"normalizeFontName\",\"getVerticalPresentationForm\",\"MAX_SIZE_TO_COMPILE\",\"compileType3Glyph\",\"POINT_TO_PROCESS_LIMIT\",\"POINT_TYPES\",\"width1\",\"points\",\"lineSize\",\"pathBuf\",\"DOMMatrix\",\"scaleSelf\",\"translateSelf\",\"pp\",\"ISOAdobeCharset\",\"ExpertCharset\",\"ExpertSubsetCharset\",\"MAX_SUBR_NESTING\",\"CFFStandardStrings\",\"NUM_STANDARD_CFF_STRINGS\",\"CharstringValidationData\",\"stackClearing\",\"stem\",\"resetStack\",\"undefStack\",\"CharstringValidationData12\",\"stackDelta\",\"stackFn\",\"CFFParser\",\"file\",\"seacAnalysisEnabled\",\"cff\",\"CFF\",\"parseHeader\",\"nameIndex\",\"parseIndex\",\"endPos\",\"topDictIndex\",\"stringIndex\",\"globalSubrIndex\",\"topDictParsed\",\"parseDict\",\"topDict\",\"createDict\",\"CFFTopDict\",\"names\",\"parseNameIndex\",\"parseStringIndex\",\"parsePrivateDict\",\"isCIDFont\",\"hasName\",\"charStringOffset\",\"charStringIndex\",\"fontMatrix\",\"fontBBox\",\"ascent\",\"descent\",\"ascentScaled\",\"charset\",\"fdArrayIndex\",\"dictRaw\",\"fontDict\",\"fdArray\",\"parseCharsets\",\"fdSelect\",\"parseFDSelect\",\"parseEncoding\",\"charStringsAndSeacs\",\"parseCharStrings\",\"charStrings\",\"localSubrIndex\",\"privateDict\",\"subrsIndex\",\"seacs\",\"widths\",\"bytesLength\",\"hdrSize\",\"offSize\",\"CFFHeader\",\"parseOperand\",\"parseFloatOperand\",\"operands\",\"entries\",\"cffIndex\",\"CFFIndex\",\"offsets\",\"offsetSize\",\"offsetStart\",\"offsetEnd\",\"CFFStrings\",\"Type\",\"cffDict\",\"setByKey\",\"parseCharString\",\"callDepth\",\"stackSize\",\"validationCommand\",\"seac\",\"copyWithin\",\"bias\",\"subrNumber\",\"valid\",\"hasVStems\",\"firstStackClearing\",\"charstring\",\"localSubrToUse\",\"privateDictToUse\",\"fdIndex\",\"getFDIndex\",\"nominalWidth\",\"defaultWidth\",\"emptyPrivateDictionary\",\"parentDict\",\"CFFPrivateDict\",\"privateOffset\",\"removeByName\",\"privateDictEnd\",\"dictData\",\"setByName\",\"subrsOffset\",\"relativeOffset\",\"cid\",\"CFFCharset\",\"CFFCharsetPredefinedTypes\",\"ISO_ADOBE\",\"EXPERT\",\"EXPERT_SUBSET\",\"format\",\"raw\",\"predefined\",\"readSupplement\",\"supplementsCount\",\"sid\",\"dataStart\",\"glyphsCount\",\"rangesCount\",\"gid\",\"CFFEncoding\",\"CFFFDSelect\",\"duplicateFirstGlyph\",\"glyphZero\",\"hasGlyphId\",\"glyph\",\"getSID\",\"objects\",\"CFFDict\",\"tables\",\"keyToNameMap\",\"nameToKeyMap\",\"defaults\",\"types\",\"opcodes\",\"order\",\"createTables\",\"layout\",\"CFFTopDictLayout\",\"CFFPrivateDictLayout\",\"glyphIndex\",\"CFFOffsetTracker\",\"isTracking\",\"track\",\"location\",\"setEntryLocation\",\"offset1\",\"offset2\",\"offset3\",\"offset4\",\"CFFCompiler\",\"compile\",\"compileHeader\",\"compileNameIndex\",\"xuid\",\"compiled\",\"compileTopDicts\",\"topDictTracker\",\"trackers\",\"compileStringIndex\",\"compileIndex\",\"compileEncoding\",\"compileCharset\",\"compileCharStrings\",\"compileFDSelect\",\"fontDictTrackers\",\"compilePrivateDicts\",\"encodeNumber\",\"encodeInteger\",\"encodeFloat\",\"EncodeFloatRegExp\",\"nibbles\",\"sanitizedName\",\"dicts\",\"removeCidKeys\",\"fontDictTracker\",\"fontDictData\",\"compileDict\",\"privateDictTracker\",\"privateDictData\",\"outputLength\",\"subrs\",\"offsetTracker\",\"charStringsIndex\",\"numGlyphs\",\"numGlyphsLessNotDef\",\"nLeft\",\"charsetIndex\",\"numCharsets\",\"warned\",\"compileTypedArray\",\"lastFD\",\"currentFD\",\"numRanges\",\"lastOffset\",\"getStdFontMap\",\"Helvetica\",\"Courier\",\"ZapfDingbats\",\"ArialNarrow\",\"ArialBlack\",\"Arial\",\"ArialMT\",\"ArialUnicodeMS\",\"CourierNew\",\"CourierNewPSMT\",\"TimesNewRoman\",\"TimesNewRomanPS\",\"TimesNewRomanPSMT\",\"getFontNameToFileMap\",\"getNonStdFontMap\",\"Calibri\",\"CenturyGothic\",\"ComicSansMS\",\"GillSansMT\",\"Impact\",\"LucidaConsole\",\"NuptialScript\",\"SegoeUISymbol\",\"getSerifFonts\",\"Albertus\",\"Aldus\",\"Alexandria\",\"Algerian\",\"Antiqua\",\"Apex\",\"Arno\",\"Aster\",\"Aurora\",\"Baskerville\",\"Bell\",\"Bembo\",\"Benguiat\",\"Bodoni\",\"Bookman\",\"Calisto\",\"Calvert\",\"Capitals\",\"Cambria\",\"Cartier\",\"Caslon\",\"Catull\",\"Centaur\",\"Chaparral\",\"Cheltenham\",\"Clarendon\",\"Clearface\",\"Cochin\",\"Colonna\",\"Constantia\",\"Corona\",\"Ecotype\",\"Egyptienne\",\"Elephant\",\"Excelsior\",\"Fairfield\",\"Folkard\",\"Footlight\",\"FreeSerif\",\"Garamond\",\"Gentium\",\"Georgia\",\"Gloucester\",\"Granjon\",\"Heather\",\"Hercules\",\"Hiroshige\",\"Imprint\",\"Janson\",\"Joanna\",\"Korinna\",\"Lexicon\",\"LiberationSerif\",\"Literaturnaya\",\"Lucida\",\"Melior\",\"Memphis\",\"Miller\",\"Minion\",\"Modern\",\"Palatino\",\"Perpetua\",\"Plantin\",\"Playbill\",\"Renault\",\"Requiem\",\"Rockwell\",\"Roman\",\"Sabon\",\"Scala\",\"Seagull\",\"Sistina\",\"Souvenir\",\"STIX\",\"Sylfaen\",\"Times\",\"Trajan\",\"Utopia\",\"Versailles\",\"Wanted\",\"Weiss\",\"Windsor\",\"XITS\",\"getSymbolsFonts\",\"Dingbats\",\"Wingdings\",\"getGlyphMapForStandardFonts\",\"getSupplementalGlyphMapForArialBlack\",\"getSupplementalGlyphMapForCalibri\",\"getStandardFontName\",\"fontName\",\"stdFontMap\",\"isKnownFontName\",\"ToUnicodeMap\",\"cmap\",\"amend\",\"IdentityToUnicodeMap\",\"firstChar\",\"lastChar\",\"CFFFont\",\"compiler\",\"loadedName\",\"_createBuiltInEncoding\",\"getCharset\",\"getGlyphMapping\",\"cidToGidMap\",\"charsets\",\"composite\",\"invCidToGidMap\",\"defaultEncoding\",\"encodings\",\"getFloat214\",\"getSubroutineBias\",\"numSubrs\",\"parseCmap\",\"segCount\",\"idDelta\",\"idOffset\",\"ids\",\"parseCff\",\"glyphs\",\"gsubrs\",\"isCFFCIDFont\",\"parseGlyfTable\",\"glyf\",\"loca\",\"isGlyphLocationsLong\",\"itemSize\",\"itemDecode\",\"lookupCmap\",\"compileGlyf\",\"cmds\",\"font\",\"firstPoint\",\"quadraticCurveTo\",\"xa\",\"ya\",\"numberOfContours\",\"arg2\",\"scale01\",\"scale10\",\"subglyph\",\"endPtsOfContours\",\"instructionLength\",\"numberOfPoints\",\"startPoint\",\"endPoint\",\"contour\",\"unshift\",\"compileCharString\",\"charStringCode\",\"bezierCurveTo\",\"stems\",\"stackClean\",\"xb\",\"yb\",\"subrCode\",\"subrsBias\",\"achar\",\"bchar\",\"translate\",\"glyphNameMap\",\"gsubrsBias\",\"NOOP\",\"Commands\",\"transformStack\",\"currentTransform\",\"transf\",\"getSVG\",\"CompiledFont\",\"compiledGlyphs\",\"compiledCharCodeToGlyphId\",\"getPathJs\",\"compileEx\",\"compileGlyph\",\"compileGlyphImpl\",\"hasBuiltPath\",\"TrueTypeCompiled\",\"Type2Compiled\",\"cffInfo\",\"FontRendererFactory\",\"indexToLocFormat\",\"unitsPerEm\",\"numTables\",\"tag\",\"getMetrics\",\"getFontBasicMetrics\",\"capHeight\",\"xHeight\",\"ON_CURVE_POINT\",\"X_SHORT_VECTOR\",\"Y_SHORT_VECTOR\",\"REPEAT_FLAG\",\"X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR\",\"Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR\",\"OVERLAP_SIMPLE\",\"ARG_1_AND_2_ARE_WORDS\",\"ARGS_ARE_XY_VALUES\",\"WE_HAVE_A_SCALE\",\"MORE_COMPONENTS\",\"WE_HAVE_AN_X_AND_Y_SCALE\",\"WE_HAVE_A_TWO_BY_TWO\",\"WE_HAVE_INSTRUCTIONS\",\"GlyfTable\",\"glyfTable\",\"locaTable\",\"byteOffset\",\"getUint32\",\"Glyph\",\"getSize\",\"totalSize\",\"isLocationLong\",\"locaIndex\",\"factors\",\"simple\",\"composites\",\"GlyphHeader\",\"CompositeGlyph\",\"SimpleGlyph\",\"spos\",\"xMiddle\",\"yMin\",\"yMax\",\"getInt16\",\"setInt16\",\"Contour\",\"xCoordinates\",\"yCoordinates\",\"contours\",\"instructions\",\"endPt\",\"numberOfPt\",\"flag\",\"getUint8\",\"allXCoordinates\",\"pointFlags\",\"endPtsOfContoursIndex\",\"lastCoordinate\",\"lastX\",\"lastY\",\"setUint8\",\"argument1\",\"argument2\",\"getInt8\",\"writeInt16\",\"writeInt32\",\"writeData\",\"OTF_HEADER_SIZE\",\"OTF_TABLE_ENTRY_SIZE\",\"OpenTypeFileBuilder\",\"sfnt\",\"getSearchParams\",\"entriesCount\",\"entrySize\",\"maxPower2\",\"searchRange\",\"rangeShift\",\"toArray\",\"tablesNames\",\"tableName\",\"tableOffsets\",\"paddedLength\",\"searchParams\",\"checksum\",\"quad\",\"addTable\",\"HINTING_ENABLED\",\"COMMAND_MAP\",\"hstem\",\"vstem\",\"vmoveto\",\"rlineto\",\"hlineto\",\"vlineto\",\"rrcurveto\",\"callsubr\",\"flex\",\"drop\",\"endchar\",\"rmoveto\",\"hmoveto\",\"vhcurveto\",\"hvcurveto\",\"Type1CharString\",\"lsb\",\"flexing\",\"convert\",\"encoded\",\"wx\",\"sbx\",\"executeCommand\",\"dy\",\"asb\",\"sby\",\"num2\",\"num1\",\"flexArgs\",\"howManyArgs\",\"command\",\"keepStack\",\"stackLength\",\"EEXEC_ENCRYPT_KEY\",\"CHAR_STRS_ENCRYPT_KEY\",\"isHexDigit\",\"decrypt\",\"discardNumber\",\"c1\",\"c2\",\"decrypted\",\"decryptAscii\",\"digit1\",\"digit2\",\"isSpecial\",\"Type1Parser\",\"encrypted\",\"isBinary\",\"readNumberArray\",\"getToken\",\"token\",\"readInt\",\"readBoolean\",\"prevChar\",\"readCharStrings\",\"lenIV\",\"extractFontProgram\",\"charstrings\",\"privateData\",\"program\",\"blueArray\",\"charString\",\"charStringObject\",\"extractFontHeader\",\"encodingArg\",\"findBlock\",\"streamBytes\",\"signature\",\"startIndex\",\"streamBytesLength\",\"getHeaderBlock\",\"suggestedLength\",\"EEXEC_SIGNATURE\",\"streamStartPos\",\"headerBytes\",\"headerBytesLength\",\"actualLength\",\"getEexecBlock\",\"eexecBytes\",\"Type1Font\",\"PFB_HEADER_SIZE\",\"headerBlockLength\",\"length1\",\"eexecBlockLength\",\"length2\",\"pfbHeader\",\"pfbHeaderPresent\",\"headerBlock\",\"headerBlockParser\",\"eexecBlock\",\"eexecBlockParser\",\"type2Charstrings\",\"getType2Charstrings\",\"getType2Subrs\",\"wrap\",\"getSeacs\",\"charstringsLen\",\"seacMap\",\"type1Charstrings\",\"type1Charstring\",\"type1Subrs\",\"type2Subrs\",\"charsetArray\",\"fields\",\"field\",\"subrIndex\",\"PRIVATE_USE_AREAS\",\"PDF_GLYPH_SPACE_UNITS\",\"EXPORT_DATA_PROPERTIES\",\"EXPORT_DATA_EXTRA_PROPERTIES\",\"adjustWidths\",\"glyphsWidths\",\"adjustTrueTypeToUnicode\",\"nameRecords\",\"hasIncludedToUnicodeMap\",\"hasEncoding\",\"toUnicode\",\"isWinNameRecord\",\"adjustType1ToUnicode\",\"amendFallbackToUnicode\",\"fallbackToUnicode\",\"originalCharCode\",\"fontChar\",\"accent\",\"vmetric\",\"operatorListId\",\"isSpace\",\"isInFont\",\"int16\",\"writeSignedInt16\",\"signedInt16\",\"writeUint32\",\"int32\",\"string16\",\"safeString16\",\"isTrueTypeFile\",\"isTrueTypeCollectionFile\",\"isOpenTypeFile\",\"isType1File\",\"isCFFFile\",\"getFontFileType\",\"subtype\",\"fileType\",\"fileSubtype\",\"applyStandardFontGlyphMap\",\"glyphMap\",\"buildToFontChar\",\"toFontChar\",\"isMacNameRecord\",\"language\",\"convertCidString\",\"shouldThrow\",\"adjustMapping\",\"hasGlyph\",\"newGlyphZeroId\",\"newMap\",\"toUnicodeExtraMap\",\"usedGlyphIds\",\"privateUseAreaIndex\",\"privateUseOffetStart\",\"nextAvailableFontCharCode\",\"privateUseOffetEnd\",\"isInPrivateArea\",\"LIGATURE_TO_UNICODE\",\"fontCharCode\",\"normalized\",\"getRanges\",\"codeIndices\",\"createCmapTable\",\"bmpLength\",\"trailingRangesCount\",\"startCount\",\"endCount\",\"idDeltas\",\"idRangeOffsets\",\"glyphsIds\",\"contiguous\",\"startCode\",\"format314\",\"format31012\",\"header31012\",\"validateOS2Table\",\"os2\",\"selection\",\"usWinAscent\",\"createOS2Table\",\"override\",\"ulUnicodeRange1\",\"ulUnicodeRange2\",\"ulUnicodeRange3\",\"ulUnicodeRange4\",\"firstCharIndex\",\"lastCharIndex\",\"typoAscent\",\"typoDescent\",\"winAscent\",\"winDescent\",\"fixedPitch\",\"createPostTable\",\"createPostscriptName\",\"createNameTable\",\"proto\",\"stringsUnicode\",\"strBufUnicode\",\"platforms\",\"namesRecordCount\",\"nameTable\",\"strOffset\",\"strs\",\"nameRecord\",\"Font\",\"evaluatorOptions\",\"psName\",\"mimetype\",\"disableFontFace\",\"fontExtraProperties\",\"isType3Font\",\"missingFile\",\"_charsCache\",\"_glyphCache\",\"isSerifFont\",\"isSimulatedFlags\",\"baseName\",\"serifFonts\",\"namePart\",\"isMonospace\",\"systemFontInfo\",\"matches\",\"isInvalidPDFjsFont\",\"fallbackName\",\"guessFallback\",\"lineHeight\",\"cidEncoding\",\"vmetrics\",\"defaultVMetrics\",\"fallbackToSystemFont\",\"checkAndRepair\",\"isOpenType\",\"renderer\",\"exportData\",\"exportDataProps\",\"nonStdFontMap\",\"isStandardFont\",\"isMappedToStandardFont\",\"fontBasicMetricsMap\",\"metrics\",\"bold\",\"italic\",\"isNarrow\",\"remeasure\",\"unicodeCharCode\",\"VALID_TABLES\",\"readTables\",\"head\",\"hhea\",\"hmtx\",\"maxp\",\"post\",\"readTableEntry\",\"previousPosition\",\"readOpenTypeHeader\",\"ttf\",\"entrySelector\",\"readTrueTypeCollectionHeader\",\"ttc\",\"ttcTag\",\"majorVersion\",\"minorVersion\",\"numFonts\",\"offsetTable\",\"dsigTag\",\"dsigLength\",\"dsigOffset\",\"readTrueTypeCollectionData\",\"fontNameParts\",\"fallbackData\",\"potentialHeader\",\"potentialTables\",\"readNameTable\",\"nameEntry\",\"readCmapTable\",\"platformId\",\"encodingId\",\"mappings\",\"hasShortCmap\",\"potentialTable\",\"canBreak\",\"useTable\",\"correctlySorted\",\"nextBytes\",\"nextPlatformId\",\"subHeaderKeys\",\"maxSubHeaderKey\",\"subHeaderKey\",\"subHeaders\",\"entryCount\",\"idRangePos\",\"segIndex\",\"offsetsCount\",\"offsetIndex\",\"rangeOffset\",\"nGroups\",\"startCharCode\",\"endCharCode\",\"glyphCode\",\"finalMappings\",\"seenCharCodes\",\"sanitizeMetrics\",\"headTable\",\"dupFirstEntry\",\"caretOffset\",\"numOfMetrics\",\"macStyle\",\"numOfSidebearings\",\"numMissing\",\"sanitizeGlyph\",\"sourceStart\",\"sourceEnd\",\"destStart\",\"hintsValid\",\"glyphProfile\",\"sizeOfInstructions\",\"contoursCount\",\"flagsCount\",\"instructionsStart\",\"instructionsLength\",\"instructionsEnd\",\"coordinatesLength\",\"xLength\",\"yLength\",\"xyLength\",\"glyphDataLength\",\"sanitizeHead\",\"locaLength\",\"numGlyphsPlusOne\",\"sanitizeGlyphLocations\",\"maxSizeOfInstructions\",\"itemEncode\",\"fontItemDecodeLong\",\"fontItemEncodeLong\",\"fontItemDecode\",\"fontItemEncode\",\"numGlyphsOut\",\"locaDataSize\",\"locaData\",\"oldGlyfData\",\"oldGlyfDataLength\",\"newGlyfData\",\"locaEntries\",\"nextOffset\",\"missingGlyphs\",\"writeOffset\",\"simpleGlyph\",\"firstEntryLength\",\"readPostScriptTable\",\"propertiesObj\",\"maxpNumGlyphs\",\"glyphNameIndexes\",\"customNames\",\"stringLength\",\"records\",\"FORMAT_0_HEADER_LENGTH\",\"numRecords\",\"stringsStart\",\"NAME_RECORD_LENGTH\",\"record\",\"TTOpsStackDeltas\",\"sanitizeTTProgram\",\"ttContext\",\"funcId\",\"lastEndf\",\"lastDeff\",\"callstack\",\"functionsCalled\",\"tooComplexToFollowFunctions\",\"inFDEF\",\"ifLevel\",\"inELSE\",\"functionsUsed\",\"functionsStackDeltas\",\"newStackLength\",\"functionsDefined\",\"stackTop\",\"content\",\"foldTTTable\",\"checkInvalidFunctions\",\"maxFunctionDefs\",\"sanitizeTTPrograms\",\"fpgm\",\"prep\",\"cvt\",\"cvtData\",\"ttcData\",\"cffFile\",\"isTrueType\",\"isComposite\",\"scaleFactors\",\"advanceWidth\",\"maxZones\",\"glyphsInfo\",\"metricsOverride\",\"lineGap\",\"isCidToGidMapEmpty\",\"cmapTable\",\"cmapPlatformId\",\"cmapEncodingId\",\"cmapMappings\",\"forcePostTable\",\"unicodeOrCharCode\",\"mapping\",\"glyphZeroId\",\"newMapping\",\"namePrototype\",\"builder\",\"tableTag\",\"newCharCodeToGlyphId\",\"getCharCodes\",\"charCodes\",\"createCharCode\",\"baseGlyphName\",\"accentGlyphName\",\"baseGlyphId\",\"accentGlyphId\",\"accentOffset\",\"baseFontCharCode\",\"accentFontCharCode\",\"tan\",\"fontFieldsHmtx\",\"cffWidths\",\"_spaceWidth\",\"possibleSpaceReplacements\",\"glyphUnicode\",\"_charToGlyph\",\"widthCode\",\"fromCodePoint\",\"charsToGlyphs\",\"chars\",\"getCharPositions\",\"glyphCacheValues\",\"encodeString\",\"buffers\",\"currentBuf\",\"hasCurrentBufErrors\",\"getCharCode\",\"charCodeLength\",\"ErrorFont\",\"ShadingType\",\"FUNCTION_BASED\",\"AXIAL\",\"RADIAL\",\"FREE_FORM_MESH\",\"LATTICE_FORM_MESH\",\"COONS_PATCH_MESH\",\"TENSOR_PATCH_MESH\",\"Pattern\",\"parseShading\",\"shading\",\"RadialAxialShading\",\"MeshShading\",\"DummyShading\",\"BaseShading\",\"SMALL_NUMBER\",\"shadingType\",\"coordsLen\",\"coordsArr\",\"t0\",\"t1\",\"domainArr\",\"extendStart\",\"extendEnd\",\"extendArr\",\"distance\",\"hypot\",\"fnObj\",\"NUMBER_OF_SAMPLES\",\"colorStops\",\"iBase\",\"rgbBuffer\",\"rBase\",\"gBase\",\"bBase\",\"iPrev\",\"rPrev\",\"gPrev\",\"bPrev\",\"maxSlopeR\",\"maxSlopeG\",\"maxSlopeB\",\"minSlopeR\",\"minSlopeG\",\"minSlopeB\",\"slopesExist\",\"cssColor\",\"background\",\"MeshStreamReader\",\"tmpCompsBuf\",\"csNumComps\",\"colorSpace\",\"tmpCsCompsBuf\",\"colorFn\",\"hasData\",\"align\",\"readFlag\",\"bitsPerFlag\",\"readCoordinate\",\"bitsPerCoordinate\",\"yi\",\"readComponents\",\"ci\",\"bCache\",\"buildB\",\"lut\",\"t_\",\"getB\",\"clearPatternCaches\",\"MIN_SPLIT_PATCH_CHUNKS_AMOUNT\",\"MAX_SPLIT_PATCH_CHUNKS_AMOUNT\",\"TRIANGLE_DENSITY\",\"coords\",\"figures\",\"decodeContext\",\"patchMesh\",\"_decodeType4Shading\",\"verticesPerRow\",\"_decodeType5Shading\",\"_decodeType6Shading\",\"_decodeType7Shading\",\"_updateBounds\",\"_buildFigureFromPatch\",\"_packData\",\"operators\",\"ps\",\"verticesLeft\",\"coord\",\"tmp1\",\"tmp2\",\"tmp3\",\"tmp4\",\"figure\",\"figureMinX\",\"figureMinY\",\"figureMaxX\",\"figureMaxY\",\"splitXBy\",\"bounds\",\"splitYBy\",\"figureCoords\",\"figureColors\",\"cl\",\"cr\",\"c0\",\"c3\",\"bRow\",\"bCol\",\"newColor\",\"maxY\",\"coordsPacked\",\"xy\",\"colorsPacked\",\"getTilingPatternIR\",\"operatorList\",\"xstep\",\"ystep\",\"paintType\",\"tilingType\",\"CalibriBoldFactors\",\"CalibriBoldMetrics\",\"CalibriBoldItalicFactors\",\"CalibriBoldItalicMetrics\",\"CalibriItalicFactors\",\"CalibriItalicMetrics\",\"CalibriRegularFactors\",\"CalibriRegularMetrics\",\"HelveticaBoldFactors\",\"HelveticaBoldMetrics\",\"HelveticaBoldItalicFactors\",\"HelveticaBoldItalicMetrics\",\"HelveticaItalicFactors\",\"HelveticaItalicMetrics\",\"HelveticaRegularFactors\",\"HelveticaRegularMetrics\",\"LiberationSansBoldWidths\",\"LiberationSansBoldMapping\",\"LiberationSansBoldItalicWidths\",\"LiberationSansBoldItalicMapping\",\"LiberationSansItalicWidths\",\"LiberationSansItalicMapping\",\"LiberationSansRegularWidths\",\"LiberationSansRegularMapping\",\"MyriadProBoldFactors\",\"MyriadProBoldMetrics\",\"MyriadProBoldItalicFactors\",\"MyriadProBoldItalicMetrics\",\"MyriadProItalicFactors\",\"MyriadProItalicMetrics\",\"MyriadProRegularFactors\",\"MyriadProRegularMetrics\",\"SegoeuiBoldFactors\",\"SegoeuiBoldMetrics\",\"SegoeuiBoldItalicFactors\",\"SegoeuiBoldItalicMetrics\",\"SegoeuiItalicFactors\",\"SegoeuiItalicMetrics\",\"SegoeuiRegularFactors\",\"SegoeuiRegularMetrics\",\"getXFAFontMap\",\"baseWidths\",\"baseMapping\",\"getXfaFontName\",\"fontMap\",\"getXfaFontWidths\",\"rescaledBaseWidths\",\"currentArray\",\"newWidths\",\"charUnicode\",\"unicode1\",\"unicode2\",\"getXfaFontDict\",\"descriptor\",\"systemInfo\",\"PostScriptParser\",\"nextToken\",\"accept\",\"expect\",\"PostScriptTokenTypes\",\"LBRACE\",\"parseBlock\",\"RBRACE\",\"NUMBER\",\"OPERATOR\",\"parseCondition\",\"conditionLocation\",\"IF\",\"jumpLocation\",\"endOfTrue\",\"IFELSE\",\"PostScriptToken\",\"opCache\",\"getOperator\",\"PostScriptLexer\",\"BaseLocalCache\",\"_onlyRefs\",\"onlyRefs\",\"_nameRefMap\",\"_imageMap\",\"_imageCache\",\"LocalImageCache\",\"LocalColorSpaceCache\",\"LocalFunctionCache\",\"LocalGStateCache\",\"LocalTilingPatternCache\",\"RegionalImageCache\",\"GlobalColorSpaceCache\",\"GlobalImageCache\",\"NUM_PAGES_THRESHOLD\",\"MIN_IMAGES_TO_CACHE\",\"MAX_BYTE_SIZE\",\"decodeFailedSet\",\"_refCache\",\"byteSize\",\"#byteSize\",\"cacheLimitReached\",\"#cacheLimitReached\",\"shouldCache\",\"pageIndexSet\",\"addDecodeFailed\",\"hasDecodeFailed\",\"addByteSize\",\"setData\",\"onlyData\",\"PDFFunctionFactory\",\"parseArray\",\"fnRef\",\"parsedFn\",\"cachedFn\",\"_localFunctionCache\",\"PDFFunction\",\"toNumberArray\",\"getSampleArray\",\"outputSize\",\"bps\",\"sampleMul\",\"strBytes\",\"strIdx\",\"factory\",\"typeNum\",\"constructSampled\",\"constructInterpolated\",\"constructStiched\",\"constructPostScript\",\"toMultiArray\",\"xmin\",\"xmax\",\"ymin\",\"ymax\",\"domain\",\"inputSize\",\"encode\",\"samples\",\"constructSampledFn\",\"cubeVertices\",\"cubeN\",\"cubeVertex\",\"domain_2i\",\"domain_2i_1\",\"size_i\",\"e0\",\"n0\",\"n1\",\"rj\",\"constructInterpolatedFn\",\"fns\",\"constructStichedFn\",\"dmin\",\"dmax\",\"rmin\",\"rmax\",\"PostScriptCompiler\",\"numOutputs\",\"numInputs\",\"evaluator\",\"PostScriptEvaluator\",\"MAX_CACHE_SIZE\",\"cache_available\",\"constructPostScriptFn\",\"cachedValue\",\"execute\",\"stackIndex\",\"bound\",\"isPDFFunction\",\"fnDict\",\"PostScriptStack\",\"MAX_STACK_SIZE\",\"initialStack\",\"copy\",\"roll\",\"counter\",\"operator\",\"atan2\",\"cos\",\"log10\",\"sin\",\"AstNode\",\"visit\",\"AstArgument\",\"visitArgument\",\"AstLiteral\",\"visitLiteral\",\"AstBinaryOperation\",\"visitBinaryOperation\",\"AstMin\",\"visitMin\",\"AstVariable\",\"visitVariable\",\"AstVariableDefinition\",\"variable\",\"visitVariableDefinition\",\"ExpressionBuilderVisitor\",\"parts\",\"literal\",\"operation\",\"definition\",\"buildAddOperation\",\"buildMulOperation\",\"buildSubOperation\",\"buildMinOperation\",\"lastRegister\",\"ast1\",\"ast2\",\"tmpVar\",\"instruction\",\"statementBuilder\",\"expr\",\"baseTypes\",\"arabicTypes\",\"isOdd\",\"isEven\",\"findUnequal\",\"reverseValues\",\"createBidiText\",\"isLTR\",\"dir\",\"bidi\",\"startLevel\",\"strLength\",\"numBidi\",\"charType\",\"levels\",\"sor\",\"eor\",\"lastType\",\"before\",\"after\",\"highestLevel\",\"lowestOddLevel\",\"NORMAL\",\"style\",\"BOLD\",\"ITALIC\",\"BOLDITALIC\",\"substitutionMap\",\"local\",\"ultimate\",\"alias\",\"fontAliases\",\"getStyleToAppend\",\"getFamilyName\",\"keywords\",\"tok\",\"generateFont\",\"localFontPath\",\"useFallback\",\"usePath\",\"append\",\"extra\",\"substitution\",\"aliasAppend\",\"assign\",\"fallbackInfo\",\"fallbackUltimate\",\"getFontSubstitution\",\"systemFontCache\",\"idFactory\",\"baseFontName\",\"standardFontName\",\"substitutionInfo\",\"subst\",\"mustAddBaseFont\",\"getDocId\",\"createFontId\",\"SEED\",\"MASK_HIGH\",\"MASK_LOW\",\"MurmurHash3_64\",\"seed\",\"update\",\"blockCounts\",\"tailLength\",\"dataUint32\",\"k1\",\"k2\",\"C1\",\"C2\",\"C1_LOW\",\"C2_LOW\",\"hexdigest\",\"resizeImageMask\",\"PDFImage\",\"isInline\",\"smask\",\"jpxDecoderOptions\",\"validWidth\",\"validHeight\",\"fallbackDims\",\"imageMask\",\"matte\",\"hasColorSpace\",\"needsDecode\",\"decodeCoefficients\",\"decodeAddends\",\"isIndexed\",\"maskDict\",\"buildImage\",\"smaskData\",\"maskData\",\"createMask\",\"computedLength\",\"imgArray\",\"isSingleOpaquePixel\",\"createImageData\",\"haveFullData\",\"decodeBuffer\",\"getComponents\",\"bufferPos\",\"rowComps\",\"loop1End\",\"loop2End\",\"remainingBits\",\"fillOpacity\",\"rgbaBuf\",\"alphaBuf\",\"sw\",\"sh\",\"fillGrayBuffer\",\"imageOffset\",\"maskOffset\",\"undoPreblend\",\"matteRgb\",\"matteR\",\"matteG\",\"matteB\",\"mustBeResized\",\"getImageBytes\",\"createBitmap\",\"getImage\",\"imageLength\",\"isHandled\",\"internal\",\"maybeUndoPreblend\",\"canvasImgData\",\"#getImage\",\"imageBytes\",\"DefaultPartialEvaluatorOptions\",\"maxImageSize\",\"ignoreErrors\",\"useSystemFonts\",\"cMapUrl\",\"standardFontDataUrl\",\"PatternType\",\"TILING\",\"SHADING\",\"TEXT_CHUNK_BATCH_SIZE\",\"deferred\",\"normalizeBlendMode\",\"parsingArray\",\"maybeBM\",\"addCachedImageOps\",\"TimeSlotManager\",\"TIME_SLOT_DURATION_MS\",\"CHECK_TIME_EVERY\",\"checked\",\"endTime\",\"PartialEvaluator\",\"fontCache\",\"builtInCMapCache\",\"standardFontDataCache\",\"globalImageCache\",\"type3FontRefs\",\"_regionalImageCache\",\"_fetchBuiltInCMapBound\",\"_pdfFunctionFactory\",\"parsingType3Font\",\"newOptions\",\"newEvaluator\",\"hasBlendModes\",\"nonBlendModesSet\",\"nodes\",\"graphicStates\",\"graphicState\",\"bm\",\"xObjects\",\"xObject\",\"xResources\",\"fetchStandardFontData\",\"standardFontNameToFileName\",\"buildFormXObject\",\"xobj\",\"task\",\"initialState\",\"seenRefs\",\"groupOptions\",\"parseMarkedContentProps\",\"group\",\"isolated\",\"knockout\",\"groupSubtype\",\"_getColorSpace\",\"_handleColorSpace\",\"backdrop\",\"f32matrix\",\"f32bbox\",\"localResources\",\"getOperatorList\",\"prevRefs\",\"_sendImgData\",\"cacheGlobally\",\"buildPaintImageXObject\",\"localImageCache\",\"imageRef\",\"cacheData\",\"createObjId\",\"dataLen\",\"SMALL_IMAGE_DIMENSIONS\",\"imageObj\",\"globalCacheData\",\"localLength\",\"handleSMask\",\"stateManager\",\"smaskContent\",\"smaskOptions\",\"transferObj\",\"transferFn\",\"transferMap\",\"newPath\",\"handleTransferFunction\",\"tr\",\"transferArray\",\"transferMaps\",\"numFns\",\"numEffectfulFns\",\"handleTilingType\",\"patternDict\",\"localTilingPatternCache\",\"tilingOpList\",\"patternResources\",\"operatorListIR\",\"tilingPatternIR\",\"handleSetFont\",\"fontArgs\",\"fontRef\",\"fallbackFontDict\",\"translated\",\"loadFont\",\"type3Dependencies\",\"handleText\",\"isAddToPathSet\",\"textRenderingMode\",\"fillColorSpace\",\"buildFontPaths\",\"ensureStateFont\",\"gState\",\"localGStateCache\",\"gStateRef\",\"isSimpleGState\",\"gStateObj\",\"errorFont\",\"TranslatedFont\",\"fontRes\",\"preEvaluatedFont\",\"preEvaluateFont\",\"fontRefIsRef\",\"fontID\",\"aliasFontRef\",\"translateFont\",\"translatedFont\",\"loadType3Data\",\"buildPath\",\"pathMinMax\",\"pathBuffer\",\"currentPointX\",\"currentPointY\",\"xw\",\"yh\",\"startX\",\"startY\",\"csPromise\",\"localShadingPatternCache\",\"patternIR\",\"handleColorN\",\"patternName\",\"rawPattern\",\"localTilingPattern\",\"_parseVisibilityExpression\",\"nestingCounter\",\"currentResult\",\"MAX_NESTING\",\"object\",\"nestedResult\",\"contentProperties\",\"optionalContentType\",\"expression\",\"optionalContentGroups\",\"groupIds\",\"ocg\",\"policy\",\"EvalState\",\"self\",\"xobjs\",\"StateManager\",\"preprocessor\",\"EvaluatorPreprocessor\",\"timeSlotManager\",\"closePendingRestoreOPS\",\"argument\",\"savedStatesDepth\",\"promiseBody\",\"all\",\"ensureNotTerminated\",\"stop\",\"isValidName\",\"localImage\",\"resolveXObject\",\"rejectXObject\",\"cachedImage\",\"fontSize\",\"combinedGlyphs\",\"arrItem\",\"fillCS\",\"strokeCS\",\"strokeColorSpace\",\"patternFillColorSpace\",\"patternStrokeColorSpace\",\"shadingRes\",\"patternId\",\"localGStateObj\",\"resolveGState\",\"rejectGState\",\"extGState\",\"thickness\",\"getTextContent\",\"includeMarkedContent\",\"sink\",\"seenStyles\",\"viewBox\",\"markedContentData\",\"disableNormalization\",\"keepWhiteSpace\",\"TextState\",\"textContent\",\"styles\",\"textContentItem\",\"initialized\",\"totalHeight\",\"prevTransform\",\"textAdvanceScale\",\"spaceInFlowMin\",\"spaceInFlowMax\",\"trackingSpaceMin\",\"negativeSpaceMax\",\"notASpace\",\"hasEOL\",\"twoLastChars\",\"twoLastCharsPos\",\"saveLastChar\",\"nextPos\",\"shouldAddWhitepsace\",\"resetLastChars\",\"TRACKING_SPACE_FACTOR\",\"NOT_A_SPACE_FACTOR\",\"NEGATIVE_SPACE_FACTOR\",\"SPACE_IN_FLOW_MIN_FACTOR\",\"SPACE_IN_FLOW_MAX_FACTOR\",\"VERTICAL_SHIFT_RATIO\",\"showSpacedTextBuffer\",\"emptyXObjectCache\",\"emptyGStateCache\",\"textState\",\"pushWhitespace\",\"getCurrentTextTransform\",\"tsm\",\"textHScale\",\"textRise\",\"isCharBBox\",\"glyphHeight\",\"ctm\",\"textMatrix\",\"ensureTextContentItem\",\"fontSubstitution\",\"fontSubstitutionLoadedName\",\"trm\",\"scaleLineX\",\"textLineMatrix\",\"scaleCtmX\",\"updateAdvanceScale\",\"scaleFactor\",\"runBidiTransform\",\"textChunk\",\"text\",\"bidiResult\",\"applyInverseRotation\",\"compareWithLastPosition\",\"glyphWidth\",\"posX\",\"posY\",\"lastPosX\",\"lastPosY\",\"rotate\",\"advanceY\",\"advanceX\",\"textOrientation\",\"appendEOL\",\"flushTextContentItem\",\"addFakeSpaces\",\"buildTextContentItem\",\"extraSpacing\",\"charSpacing\",\"translateTextMatrix\",\"scaledDim\",\"wordSpacing\",\"enqueueChunk\",\"batch\",\"previousState\",\"fontNameArg\",\"fontSizeArg\",\"leading\",\"translateTextLineMatrix\",\"carriageReturn\",\"setTextLineMatrix\",\"spaceFactor\",\"elements\",\"globalImage\",\"currentState\",\"xObjStateManager\",\"sinkWrapper\",\"enqueueInvoked\",\"desiredSize\",\"gStateFont\",\"mcid\",\"getPageObjId\",\"extractDataStructures\",\"cidToGidBytes\",\"toUnicodePromise\",\"readToUnicode\",\"cidSystemInfo\",\"registry\",\"ordering\",\"supplement\",\"diffEncoding\",\"nonEmbeddedFont\",\"isSymbolsFontName\",\"isNonsymbolicFont\",\"builtToUnicode\",\"buildToUnicode\",\"readCidToGidMap\",\"_simpleFontToUnicode\",\"forceGlyphs\",\"codeStr\",\"ucs2CMapName\",\"ucs2CMap\",\"ucs2\",\"cmapObj\",\"glyphsData\",\"glyphID\",\"extractWidths\",\"glyphsVMetrics\",\"dw\",\"dw2\",\"missingWidth\",\"getBaseFontMetrics\",\"buildCharCodeToWidth\",\"firstWidth\",\"fontNameWoStyle\",\"monospace\",\"lookupName\",\"Metrics\",\"glyphWidths\",\"widthsByGlyphName\",\"baseDict\",\"df\",\"diffLength\",\"diffBuf\",\"diffEntry\",\"uint8array\",\"widthsBuf\",\"compositeWidths\",\"subWidthsBuf\",\"newProperties\",\"baseFont\",\"fontNameStr\",\"baseFontStr\",\"fontFile\",\"length3\",\"glyphScaleFactors\",\"subtypeEntry\",\"sent\",\"type3Loaded\",\"type3Evaluator\",\"loadCharProcsPromise\",\"charProcs\",\"fontResources\",\"charProcOperatorList\",\"fontBBoxSize\",\"glyphStream\",\"removeType3ColorOperators\",\"guessType3FontBBox\",\"dummyOperatorList\",\"_bbox\",\"#removeType3ColorOperators\",\"charBBox\",\"charBBoxSize\",\"gStateKey\",\"#guessType3FontBBox\",\"stateStack\",\"old\",\"_fillColorSpace\",\"_strokeColorSpace\",\"opMap\",\"ri\",\"gs\",\"cm\",\"BT\",\"ET\",\"Tc\",\"Tw\",\"Tz\",\"TL\",\"Tf\",\"Tr\",\"Ts\",\"Td\",\"TD\",\"Tm\",\"Tj\",\"TJ\",\"d0\",\"d1\",\"CS\",\"SC\",\"SCN\",\"sc\",\"scn\",\"RG\",\"rg\",\"BI\",\"ID\",\"EI\",\"Do\",\"MP\",\"BMC\",\"BDC\",\"EMC\",\"BX\",\"EX\",\"BM\",\"BD\",\"true\",\"fa\",\"fal\",\"fals\",\"false\",\"nul\",\"null\",\"MAX_INVALID_PATH_OPS\",\"nonProcessedArgs\",\"_isPathOp\",\"_numInvalidPathOPS\",\"opSpec\",\"argsLength\",\"preprocessCommand\",\"DefaultAppearanceEvaluator\",\"fontColor\",\"parseDefaultAppearance\",\"AppearanceStreamEvaluator\",\"breakLoop\",\"_localColorSpaceCache\",\"parseAppearanceStream\",\"getPdfColor\",\"isFill\",\"createDefaultAppearance\",\"FakeUnicodeFont\",\"ctxMeasure\",\"_fontNameId\",\"fontDescriptorRef\",\"_fontDescriptorRef\",\"fontDescriptor\",\"getNewPersistentRef\",\"descendantFontRef\",\"descendantFont\",\"currentWidths\",\"baseFontRef\",\"_createContext\",\"createFontResources\",\"measureText\",\"getFirstPositionInfo\",\"lineDescent\",\"createAppearance\",\"bgColor\",\"strokeAlpha\",\"lineWidth\",\"hscale\",\"vscale\",\"fscale\",\"newFontSize\",\"vShift\",\"appearance\",\"appearanceStreamDict\",\"ap\",\"NameOrNumberTree\",\"root\",\"_type\",\"getAll\",\"kids\",\"kid\",\"kidsOrEntries\",\"loopCount\",\"MAX_LEVELS\",\"limits\",\"currentKey\",\"NameTree\",\"NumberTree\",\"clearGlobalCaches\",\"pickPlatformItem\",\"stripPath\",\"lastIndexOf\",\"FileSpec\",\"contentAvailable\",\"skipContent\",\"fs\",\"_contentRef\",\"fileObj\",\"description\",\"desc\",\"serializable\",\"rawFilename\",\"XMLParserErrorCode\",\"NoError\",\"EndOfDocument\",\"UnterminatedCdat\",\"UnterminatedXmlDeclaration\",\"UnterminatedDoctypeDeclaration\",\"UnterminatedComment\",\"MalformedElement\",\"OutOfMemory\",\"UnterminatedAttributeValue\",\"UnterminatedElement\",\"ElementNeverBegun\",\"isWhitespaceString\",\"XMLParserBase\",\"_resolveEntities\",\"onResolveEntity\",\"_parseContent\",\"attributes\",\"skipWs\",\"attrName\",\"attrValue\",\"attrEndChar\",\"attrEndIndex\",\"parsed\",\"_parseProcessingInstruction\",\"attrStart\",\"parseXml\",\"ch2\",\"onEndElement\",\"onPi\",\"onComment\",\"onCdata\",\"q2\",\"complexDoctype\",\"doctypeContent\",\"onDoctype\",\"isClosed\",\"onBeginElement\",\"onText\",\"SimpleDOMNode\",\"nodeName\",\"nodeValue\",\"firstChild\",\"childNodes\",\"nextSibling\",\"parentNode\",\"child\",\"hasChildNodes\",\"searchNode\",\"paths\",\"siblingPos\",\"dump\",\"attribute\",\"SimpleXMLParser\",\"hasAttributes\",\"lowerCaseName\",\"_currentFragment\",\"_stack\",\"_errorCode\",\"_hasAttributes\",\"_lowerCaseName\",\"parseFromString\",\"documentElement\",\"lastElement\",\"childNode\",\"MetadataParser\",\"_repair\",\"xmlDocument\",\"_metadataMap\",\"_data\",\"_parse\",\"d2\",\"d3\",\"charBuf\",\"_getSequence\",\"_parseArray\",\"seqNode\",\"trim\",\"rdf\",\"parsedData\",\"rawData\",\"MAX_DEPTH\",\"StructElementType\",\"PAGE_CONTENT\",\"STREAM_CONTENT\",\"OBJECT\",\"ANNOTATION\",\"ELEMENT\",\"StructTreeRoot\",\"rootDict\",\"rootRef\",\"roleMap\",\"structParentIds\",\"init\",\"readRoleMap\",\"addIdToPage\",\"#addIdToPage\",\"pageRef\",\"addAnnotationIdToPage\",\"roleMapDict\",\"canCreateStructureTree\",\"catalogRef\",\"pdfManager\",\"nextKey\",\"hasNothingToUpdate\",\"getPage\",\"accessibilityData\",\"parentTreeId\",\"createStructureTree\",\"changes\",\"ensureCatalog\",\"structTreeRootRef\",\"getNewTemporaryRef\",\"structTreeRoot\",\"parentTreeRef\",\"parentTree\",\"nums\",\"writeKids\",\"canUpdateStructTree\",\"numberTree\",\"pageDict\",\"collectParents\",\"structParent\",\"structTreeParent\",\"updateStructureTree\",\"numsRef\",\"newNextKey\",\"#writeKids\",\"objr\",\"structTreePageObjs\",\"isPageRef\",\"objs\",\"structTreePage\",\"StructTreePage\",\"collectObjects\",\"objRef\",\"tagDict\",\"writeProperties\",\"tagRef\",\"updateParentTag\",\"newTagRef\",\"fallbackKids\",\"objDict\",\"#writeProperties\",\"title\",\"alt\",\"expanded\",\"actualText\",\"#collectParents\",\"idToElements\",\"structTreeParentId\",\"elems\",\"parentArray\",\"updateElement\",\"pageKid\",\"kidRef\",\"parentRef\",\"#updateParentTag\",\"cachedParentDict\",\"parentKidsRaw\",\"cachedParentKids\",\"parentKidsRef\",\"StructElementNode\",\"parseKids\",\"role\",\"nameObj\",\"pageObjId\",\"parseKid\",\"StructElement\",\"refObjId\",\"elemId\",\"addNode\",\"addTopLevelNode\",\"nodeToSerializable\",\"kidElement\",\"isValidExplicitDest\",\"fetchDest\",\"fetchRemoteDest\",\"JSON\",\"stringify\",\"Catalog\",\"actualNumPages\",\"catDict\",\"pageDictCache\",\"pageIndexCache\",\"pageKidsCountCache\",\"getCatalogObj\",\"toplevelPagesDict\",\"cloneDict\",\"needsRendering\",\"collection\",\"acroForm\",\"acroFormRef\",\"metadata\",\"streamRef\",\"encrypt\",\"encryptMetadata\",\"markInfo\",\"readMarkInfo\",\"#readMarkInfo\",\"Marked\",\"UserProperties\",\"Suspects\",\"structTree\",\"readStructTreeRoot\",\"#readStructTreeRoot\",\"rawObj\",\"pagesObj\",\"documentOutline\",\"readDocumentOutline\",\"#readDocumentOutline\",\"blackColor\",\"outlineDict\",\"parseDestDictionary\",\"destDict\",\"resultObj\",\"docBaseUrl\",\"docAttachments\",\"attachments\",\"rgbColor\",\"outlineItem\",\"attachment\",\"unsafeUrl\",\"setOCGState\",\"permissions\",\"readPermissions\",\"#readPermissions\",\"trailer\",\"optionalContentConfig\",\"config\",\"defaultConfig\",\"groupsData\",\"groupRefCache\",\"groupRef\",\"readOptionalContentGroup\",\"readOptionalContentConfig\",\"#readOptionalContentGroup\",\"usage\",\"print\",\"rbGroups\",\"usageObj\",\"printState\",\"viewState\",\"#readOptionalContentConfig\",\"parseOnOff\",\"refs\",\"onParsed\",\"parseOrder\",\"nestedLevels\",\"parsedOrderRefs\",\"nestedOrder\",\"parseNestedOrder\",\"hiddenGroups\",\"MAX_NESTED_LEVELS\",\"nestedName\",\"parseRBGroups\",\"rbGroup\",\"parsedRbGroup\",\"creator\",\"baseState\",\"on\",\"off\",\"setActualNumPages\",\"hasActualNumPages\",\"_pagesCount\",\"destinations\",\"rawDests\",\"readDests\",\"dests\",\"getDestination\",\"hasOwnProperty\",\"#readDests\",\"pageLabels\",\"readPageLabels\",\"#readPageLabels\",\"prefix\",\"currentLabel\",\"labelDict\",\"st\",\"LIMIT\",\"A_UPPER_CASE\",\"A_LOWER_CASE\",\"baseCharCode\",\"letterIndex\",\"character\",\"pageLayout\",\"pageMode\",\"viewerPreferences\",\"prefs\",\"prefValue\",\"isValid\",\"openAction\",\"nameTree\",\"xfaImages\",\"collectJavaScript\",\"#collectJavaScript\",\"javaScript\",\"appendIfJavaScriptDict\",\"jsDict\",\"jsActions\",\"manuallyTriggered\",\"getPageDict\",\"nodesToVisit\",\"visitedNodes\",\"pagesRef\",\"currentPageIndex\",\"currentNode\",\"lastKid\",\"getAllPageDicts\",\"posInKids\",\"addPageDict\",\"addPageError\",\"queueItem\",\"kidObj\",\"getPageIndex\",\"cachedPageIndex\",\"pagesBeforeRef\",\"kidPromises\",\"uri\",\"actionType\",\"actionName\",\"include\",\"resetForm\",\"urlDict\",\"remoteDest\",\"target\",\"relationship\",\"attachmentDest\",\"namedAction\",\"preserveRB\",\"stateArr\",\"jsAction\",\"jsURL\",\"mayHaveChildren\",\"addChildren\",\"rawValue\",\"ObjectLoader\",\"refSet\",\"load\",\"walk\",\"#walk\",\"nodesToRevisit\",\"pendingRequests\",\"foundMissingData\",\"objLoader\",\"$acceptWhitespace\",\"$addHTML\",\"$appendChild\",\"$childrenToHTML\",\"$clean\",\"$cleanPage\",\"$cleanup\",\"$clone\",\"$consumed\",\"$content\",\"$data\",\"$dump\",\"$extra\",\"$finalize\",\"$flushHTML\",\"$getAttributeIt\",\"$getAttributes\",\"$getAvailableSpace\",\"$getChildrenByClass\",\"$getChildrenByName\",\"$getChildrenByNameIt\",\"$getDataValue\",\"$getExtra\",\"$getRealChildrenByNameIt\",\"$getChildren\",\"$getContainedChildren\",\"$getNextPage\",\"$getSubformParent\",\"$getParent\",\"$getTemplateRoot\",\"$globalData\",\"$hasSettableValue\",\"$ids\",\"$indexOf\",\"$insertAt\",\"$isCDATAXml\",\"$isBindable\",\"$isDataValue\",\"$isDescendent\",\"$isNsAgnostic\",\"$isSplittable\",\"$isThereMoreWidth\",\"$isTransparent\",\"$isUsable\",\"$lastAttribute\",\"$namespaceId\",\"$nodeName\",\"$nsAttributes\",\"$onChild\",\"$onChildCheck\",\"$onText\",\"$pushGlyphs\",\"$popPara\",\"$pushPara\",\"$removeChild\",\"$root\",\"$resolvePrototypes\",\"$searchNode\",\"$setId\",\"$setSetAttributes\",\"$setValue\",\"$tabIndex\",\"$text\",\"$toPages\",\"$toHTML\",\"$toString\",\"$toStyle\",\"$uid\",\"$buildXFAObject\",\"NamespaceIds\",\"ns\",\"connectionSet\",\"datasets\",\"form\",\"localeSet\",\"pdf\",\"sourceSet\",\"stylesheet\",\"xdc\",\"xdp\",\"xfdf\",\"xhtml\",\"xmpmeta\",\"dimConverters\",\"pt\",\"mm\",\"in\",\"px\",\"measurementPattern\",\"stripQuotes\",\"getInteger\",\"defaultValue\",\"validate\",\"getFloat\",\"getKeyword\",\"getStringOption\",\"getMeasurement\",\"def\",\"valueStr\",\"unit\",\"conv\",\"getRatio\",\"den\",\"getRelevant\",\"excluded\",\"viewname\",\"getColor\",\"getBBox\",\"HTMLResult\",\"FAILURE\",\"EMPTY\",\"success\",\"html\",\"breakNode\",\"isBreak\",\"FontFinder\",\"pdfFonts\",\"fonts\",\"defaultFont\",\"reallyMissingFonts\",\"pdfFont\",\"addPdfFont\",\"regular\",\"bolditalic\",\"myriad\",\"endsWith\",\"getDefault\",\"find\",\"maybe\",\"family\",\"selectFont\",\"xfaFont\",\"typeface\",\"posture\",\"real\",\"fontFinder\",\"lineNoGap\",\"WIDTH_FACTOR\",\"FontInfo\",\"margin\",\"paraMargin\",\"top\",\"bottom\",\"right\",\"letterSpacing\",\"FontSelector\",\"defaultXfaFont\",\"defaultParaMargin\",\"defaultLineHeight\",\"pushData\",\"lastFont\",\"fontInfo\",\"popFont\",\"topFont\",\"TextMeasure\",\"fontSelector\",\"extraHeight\",\"addPara\",\"addString\",\"fontLineHeight\",\"noGap\",\"firstLineHeight\",\"fallbackWidth\",\"encodedLine\",\"compute\",\"lastSpacePos\",\"lastSpaceWidth\",\"currentLineWidth\",\"currentLineHeight\",\"isBroken\",\"isFirstLine\",\"isEOL\",\"namePattern\",\"indexPattern\",\"dot\",\"dotDot\",\"dotHash\",\"dotBracket\",\"dotParen\",\"shortcuts\",\"current\",\"host\",\"dataWindow\",\"event\",\"somCache\",\"WeakMap\",\"parseExpression\",\"dotDotAllowed\",\"noExpr\",\"cacheName\",\"formCalc\",\"container\",\"useCache\",\"isQualified\",\"isXFAObject\",\"cached\",\"isXFAObjectArray\",\"isFinite\",\"flat\",\"createDataNode\",\"some\",\"createNodes\",\"_applyPrototype\",\"_attributes\",\"_attributeNames\",\"_children\",\"_cloneAttribute\",\"_dataValue\",\"_defaultValue\",\"_filteredChildrenGenerator\",\"_getPrototype\",\"_getUnsetAttributes\",\"_hasChildren\",\"_max\",\"_options\",\"_parent\",\"_resolvePrototypesHelper\",\"_setAttributes\",\"_validator\",\"uid\",\"NS_DATASETS\",\"XFAObject\",\"nsId\",\"hasChildren\",\"XmlObject\",\"XFAObjectArray\",\"para\",\"paraStack\",\"clean\",\"getOwnPropertyNames\",\"dumped\",\"availableSpace\",\"failingNode\",\"generator\",\"protoAttributes\",\"allAttr\",\"setAttr\",\"ancestors\",\"use\",\"usehref\",\"somExpression\",\"protoProto\",\"newAncestors\",\"unsetAttrName\",\"protoValue\",\"$symbol\",\"getOwnPropertySymbols\",\"clonedChild\",\"allTransparent\",\"XFAAttribute\",\"dataNode\",\"xfa\",\"tagName\",\"utf8TagName\",\"utf8Name\",\"skipConsumed\",\"hasNS\",\"$ns\",\"$name\",\"ContentObject\",\"OptionObject\",\"StringObject\",\"IntegerObject\",\"validator\",\"Option01\",\"Option10\",\"measureToString\",\"converters\",\"anchorType\",\"dimensions\",\"colSpan\",\"columnWidths\",\"currentColumn\",\"transformOrigin\",\"presence\",\"visibility\",\"display\",\"hAlign\",\"textAlign\",\"alignSelf\",\"setMinMaxDimensions\",\"minW\",\"minWidth\",\"maxW\",\"minH\",\"minHeight\",\"layoutText\",\"measure\",\"layoutNode\",\"marginH\",\"marginV\",\"leftInset\",\"rightInset\",\"topInset\",\"bottomInset\",\"spaceAbove\",\"spaceBelow\",\"marginLeft\",\"marginRight\",\"exData\",\"contentType\",\"computeBbox\",\"fixDimensions\",\"layoutClass\",\"toStyle\",\"newStyle\",\"createWrapper\",\"wrapper\",\"class\",\"border\",\"insets\",\"insetsH\",\"insetsW\",\"hand\",\"classNames\",\"isPrintOnly\",\"fixTextIndent\",\"indent\",\"textIndent\",\"padding\",\"setAccess\",\"access\",\"relevant\",\"getCurrentPara\",\"setPara\",\"nodeStyle\",\"valueStyle\",\"flexDirection\",\"vAlign\",\"justifyContent\",\"paraStyle\",\"setFontFamily\",\"fixURL\",\"createLine\",\"flushHTML\",\"htmlFromFailing\",\"addHTML\",\"attempt\",\"numberInLine\",\"getAvailableSpace\",\"getTransformedBBox\",\"centerX\",\"centerY\",\"checkDimensions\",\"firstUnsplittable\",\"ERROR\",\"noLayoutFailure\",\"currentContentArea\",\"TEMPLATE_NS_ID\",\"SVG_NS\",\"MAX_ATTEMPTS_FOR_LRTB_LAYOUT\",\"MAX_EMPTY_PAGES\",\"DEFAULT_TAB_INDEX\",\"HEADING_PATTERN\",\"MIMES\",\"IMAGES_HEADERS\",\"getBorderDims\",\"borderExtra\",\"hasMargin\",\"_setValue\",\"templateNode\",\"Value\",\"getContainedChildren\",\"SubformSet\",\"isRequired\",\"nullTest\",\"setTabIndex\",\"traversal\",\"applyAssist\",\"assist\",\"assistTitle\",\"ariaRole\",\"ariaLevel\",\"ariaLabel\",\"speak\",\"toolTip\",\"valueToHtml\",\"setFirstUnsplittable\",\"unsetFirstUnsplittable\",\"handleBreak\",\"targetType\",\"currentPageArea\",\"PageArea\",\"startNew\",\"ContentArea\",\"pageArea\",\"nextPageArea\",\"contentAreas\",\"contentArea\",\"indexForCurrent\",\"indexForTarget\",\"handleOverflow\",\"extraNode\",\"saved\",\"savedMethod\",\"AppearanceFilter\",\"Arc\",\"circular\",\"startAngle\",\"sweepAngle\",\"edge\",\"Edge\",\"edgeStyle\",\"strokeWidth\",\"xmlns\",\"overflow\",\"cx\",\"cy\",\"rx\",\"ry\",\"largeArc\",\"vectorEffect\",\"preserveAspectRatio\",\"svg\",\"Area\",\"extras\",\"draw\",\"exObject\",\"exclGroup\",\"subform\",\"subformSet\",\"xfaName\",\"Assist\",\"Barcode\",\"charEncoding\",\"dataColumnCount\",\"dataPrep\",\"dataRowCount\",\"endChar\",\"errorCorrectionLevel\",\"moduleHeight\",\"moduleWidth\",\"printCheckDigit\",\"rowColumnRatio\",\"startChar\",\"textLocation\",\"truncate\",\"upsMode\",\"wideNarrowRatio\",\"Bind\",\"picture\",\"BindItems\",\"connection\",\"labelRef\",\"valueRef\",\"Bookend\",\"leader\",\"BooleanElement\",\"Border\",\"break\",\"corner\",\"edges\",\"defaultEdge\",\"edgeStyles\",\"radius\",\"cornerStyles\",\"borderRadius\",\"borderStyle\",\"borderWidth\",\"borderColor\",\"Break\",\"afterTarget\",\"beforeTarget\",\"bookendLeader\",\"bookendTrailer\",\"overflowLeader\",\"overflowTarget\",\"overflowTrailer\",\"BreakAfter\",\"script\",\"BreakBefore\",\"Button\",\"highlight\",\"grandpa\",\"htmlButton\",\"activity\",\"Calculate\",\"Caption\",\"placement\",\"reserve\",\"savedReserve\",\"Certificate\",\"Certificates\",\"credentialServerPolicy\",\"urlPolicy\",\"encryption\",\"issuers\",\"keyUsage\",\"oids\",\"signing\",\"subjectDNs\",\"CheckButton\",\"mark\",\"shape\",\"className\",\"groupId\",\"exportedValue\",\"fieldId\",\"dataId\",\"ExclGroup\",\"xfaOn\",\"xfaOff\",\"required\",\"ChoiceList\",\"commitOn\",\"textEntry\",\"ui\",\"optionStyle\",\"displayedIndex\",\"saveIndex\",\"displayed\",\"selected\",\"hidden\",\"selectAttributes\",\"multiple\",\"Color\",\"cSpace\",\"Comb\",\"numberOfCells\",\"Connect\",\"Corner\",\"inverted\",\"DateElement\",\"DateTime\",\"DateTimeEdit\",\"hScrollPolicy\",\"picker\",\"comb\",\"Decimal\",\"fracDigits\",\"leadDigits\",\"DefaultUi\",\"Desc\",\"boolean\",\"dateTime\",\"decimal\",\"float\",\"integer\",\"time\",\"DigestMethod\",\"DigestMethods\",\"digestMethod\",\"Draw\",\"locale\",\"caption\",\"keep\",\"setProperty\",\"savedW\",\"savedH\",\"cap\",\"linecap\",\"Encoding\",\"Encodings\",\"Encrypt\",\"certificate\",\"EncryptData\",\"manifest\",\"Encryption\",\"EncryptionMethod\",\"EncryptionMethods\",\"encryptionMethod\",\"Event\",\"listen\",\"encryptData\",\"signData\",\"submit\",\"ExData\",\"maxLength\",\"rid\",\"transferEncoding\",\"ExObject\",\"archive\",\"classId\",\"codeBase\",\"codeType\",\"accessKey\",\"calculate\",\"connect\",\"_isSplittable\",\"isSplittable\",\"isLrTb\",\"maxRun\",\"Execute\",\"executeType\",\"runAt\",\"Extras\",\"Field\",\"bindItems\",\"Ui\",\"TextEdit\",\"textEdit\",\"checkButton\",\"choiceList\",\"borderDims\",\"uiW\",\"uiH\",\"tabindex\",\"aElement\",\"button\",\"imageEdit\",\"htmlValue\",\"maxChars\",\"numericEdit\",\"captionHeight\",\"inputHeight\",\"Fill\",\"linear\",\"radial\",\"solid\",\"stipple\",\"ggrandpa\",\"propName\",\"altPropName\",\"backgroundColor\",\"Rectangle\",\"addRevocationInfo\",\"appearanceFilter\",\"certificates\",\"digestMethods\",\"encryptionMethods\",\"lockDocument\",\"mdp\",\"reasons\",\"timeStamp\",\"Float\",\"baselineShift\",\"fontHorizontalScale\",\"fontVerticalScale\",\"kerningMode\",\"lineThrough\",\"lineThroughPeriod\",\"overlinePeriod\",\"underline\",\"underlinePeriod\",\"usedTypefaces\",\"backgroundClip\",\"verticalAlign\",\"fontKerning\",\"textDecoration\",\"textDecorationStyle\",\"fontStyle\",\"Format\",\"Handler\",\"Hyphenation\",\"excludeAllCaps\",\"excludeInitialCap\",\"hyphenate\",\"pushCharacterCount\",\"remainCharacterCount\",\"wordCharacterCount\",\"Image\",\"aspect\",\"blob\",\"objectFit\",\"createObjectURL\",\"ImageEdit\",\"Integer\",\"Issuers\",\"Items\",\"Keep\",\"intact\",\"KeyUsage\",\"crlSign\",\"dataEncipherment\",\"decipherOnly\",\"digitalSignature\",\"encipherOnly\",\"keyAgreement\",\"keyCertSign\",\"keyEncipherment\",\"nonRepudiation\",\"Line\",\"slope\",\"Linear\",\"startColor\",\"endColor\",\"LockDocument\",\"Manifest\",\"Margin\",\"Mdp\",\"signatureType\",\"Medium\",\"imagingBBox\",\"long\",\"orientation\",\"short\",\"stock\",\"trayIn\",\"trayOut\",\"Message\",\"NumericEdit\",\"Occur\",\"initial\",\"originalMin\",\"PageSet\",\"Template\",\"Oid\",\"Oids\",\"oid\",\"Overflow\",\"addLeader\",\"addTrailer\",\"blankOrNotBlank\",\"initialNumber\",\"numbered\",\"oddOrEven\",\"pagePosition\",\"medium\",\"occur\",\"numberOfUse\",\"relation\",\"duplexImposition\",\"pageSet\",\"pageSetIndex\",\"pageNumber\",\"parity\",\"Para\",\"orphans\",\"preserve\",\"radixOffset\",\"tabDefault\",\"tabStops\",\"widows\",\"hyphenation\",\"paddingLeft\",\"paddingRight\",\"paddingTop\",\"paddingBottom\",\"tabSize\",\"hyphenatation\",\"PasswordEdit\",\"passwordChar\",\"Picture\",\"Proto\",\"barcode\",\"bookend\",\"breakAfter\",\"breakBefore\",\"dateTimeEdit\",\"defaultUi\",\"passwordEdit\",\"subjectDN\",\"traverse\",\"variables\",\"Radial\",\"Reason\",\"Reasons\",\"cornerStyle\",\"RefElement\",\"binding\",\"SetProperty\",\"SignData\",\"Signature\",\"Signing\",\"Solid\",\"Speak\",\"disable\",\"priority\",\"Stipple\",\"rate\",\"Subform\",\"allowMacro\",\"mergeMode\",\"restoreState\",\"scope\",\"afterBreakAfter\",\"savedNoLayoutFailure\",\"overflowExtra\",\"overflowNode\",\"SubjectDN\",\"delimiter\",\"kv\",\"SubjectDNs\",\"Submit\",\"embedPDF\",\"textEncoding\",\"xdpContent\",\"baseProfile\",\"pageAreas\",\"mainHtml\",\"breakBeforeTarget\",\"pageAreaParent\",\"targetPageArea\",\"hasSomething\",\"hasSomethingCounter\",\"htmlContentAreas\",\"Text\",\"flatMap\",\"allowRichText\",\"multiLine\",\"vScrollPolicy\",\"Time\",\"TimeStamp\",\"server\",\"ToolTip\",\"Traversal\",\"Traverse\",\"Validate\",\"formatTest\",\"scriptTest\",\"valueName\",\"Variables\",\"TemplateNamespace\",\"attrs\",\"createText\",\"Binder\",\"emptyMerge\",\"_isConsumeData\",\"_mergeMode\",\"_isMatchTemplate\",\"_bindElement\",\"_bindValue\",\"formNode\",\"_findDataByNameToConsume\",\"isValue\",\"global\",\"_setProperties\",\"targetNodes\",\"targetNode\",\"targetParent\",\"Reflect\",\"construct\",\"_bindItems\",\"labels\",\"labelNodes\",\"labelNode\",\"valueNodes\",\"valueNode\",\"label\",\"_bindOccurrences\",\"baseClone\",\"_createOccurrences\",\"currentNumber\",\"nodeClone\",\"_getOccurInfo\",\"_setAndBind\",\"uselessNodes\",\"dataChildren\",\"dataChild\",\"DataHandler\",\"dataset\",\"serialize\",\"storage\",\"storageEntry\",\"CONFIG_NS_ID\",\"Acrobat\",\"acrobat7\",\"autoSave\",\"common\",\"validateApprovalSignatures\",\"submitUrl\",\"Acrobat7\",\"dynamicRender\",\"ADBE_JSConsole\",\"ADBE_JSDebugger\",\"AddSilentPrint\",\"AddViewerPreferences\",\"AdjustData\",\"AdobeExtensionLevel\",\"Agent\",\"AlwaysEmbed\",\"Amd\",\"Attributes\",\"AutoSave\",\"Base\",\"BatchOutput\",\"BehaviorOverride\",\"Cache\",\"templateCache\",\"Change\",\"Common\",\"messaging\",\"suppressBanner\",\"validationMessaging\",\"versionControl\",\"Compress\",\"CompressLogicalStructure\",\"CompressObjectStream\",\"Compression\",\"compressLogicalStructure\",\"compressObjectStream\",\"Config\",\"acrobat\",\"present\",\"trace\",\"agent\",\"Conformance\",\"ContentCopy\",\"Copies\",\"Creator\",\"CurrentPage\",\"Data\",\"adjustData\",\"incrementalLoad\",\"outputXSL\",\"startNode\",\"window\",\"xsl\",\"excludeNS\",\"Debug\",\"DefaultTypeface\",\"writingScript\",\"Destination\",\"DocumentAssembly\",\"Driver\",\"DuplexOption\",\"DynamicRender\",\"Embed\",\"encryptionLevel\",\"EncryptionLevel\",\"Enforce\",\"Equate\",\"force\",\"to\",\"EquateRange\",\"_unicodeRange\",\"unicodeRange\",\"unicodeRegex\",\"Exclude\",\"ExcludeNS\",\"FlipLabel\",\"embed\",\"subsetBelow\",\"alwaysEmbed\",\"defaultTypeface\",\"neverEmbed\",\"FormFieldFilling\",\"GroupParent\",\"IfEmpty\",\"IncludeXDPContent\",\"IncrementalLoad\",\"IncrementalMerge\",\"Interactive\",\"Jog\",\"LabelPrinter\",\"batchOutput\",\"flipLabel\",\"Layout\",\"Level\",\"Linearized\",\"Locale\",\"LocaleSet\",\"Log\",\"threshold\",\"MapElement\",\"equate\",\"equateRange\",\"MediumInfo\",\"msgId\",\"severity\",\"Messaging\",\"Mode\",\"ModifyAnnots\",\"MsgId\",\"NameAttr\",\"NeverEmbed\",\"NumberOfCopies\",\"OpenAction\",\"destination\",\"Output\",\"OutputBin\",\"OutputXSL\",\"Overprint\",\"Packets\",\"PageOffset\",\"PageRange\",\"Pagination\",\"PaginationOverride\",\"Part\",\"Pcl\",\"jog\",\"mediumInfo\",\"outputBin\",\"pageOffset\",\"staple\",\"Pdf\",\"adobeExtensionLevel\",\"interactive\",\"linearized\",\"pdfa\",\"producer\",\"renderPolicy\",\"scriptModel\",\"silentPrint\",\"submitFormat\",\"tagged\",\"Pdfa\",\"amd\",\"conformance\",\"includeXDPContent\",\"Permissions\",\"accessibleContent\",\"change\",\"contentCopy\",\"documentAssembly\",\"formFieldFilling\",\"modifyAnnots\",\"plaintextMetadata\",\"printHighQuality\",\"PickTrayByPDFSize\",\"PlaintextMetadata\",\"Presence\",\"Present\",\"behaviorOverride\",\"copies\",\"incrementalMerge\",\"overprint\",\"pagination\",\"paginationOverride\",\"driver\",\"labelPrinter\",\"pcl\",\"webClient\",\"zpl\",\"Print\",\"PrintHighQuality\",\"PrintScaling\",\"PrinterName\",\"Producer\",\"Ps\",\"Range\",\"Record\",\"Relevant\",\"Rename\",\"RenderPolicy\",\"RunScripts\",\"currentPage\",\"exclude\",\"runScripts\",\"ScriptModel\",\"Severity\",\"SilentPrint\",\"addSilentPrint\",\"printerName\",\"Staple\",\"StartNode\",\"StartPage\",\"SubmitFormat\",\"SubmitUrl\",\"SubsetBelow\",\"SuppressBanner\",\"Tagged\",\"startPage\",\"Threshold\",\"To\",\"TemplateCache\",\"maxEntries\",\"Trace\",\"Transform\",\"groupParent\",\"ifEmpty\",\"nameAttr\",\"rename\",\"whitespace\",\"Uri\",\"ValidateApprovalSignatures\",\"ValidationMessaging\",\"Version\",\"VersionControl\",\"outputBelow\",\"sourceAbove\",\"sourceBelow\",\"ViewerPreferences\",\"addViewerPreferences\",\"duplexOption\",\"enforce\",\"numberOfCopies\",\"pageRange\",\"pickTrayByPDFSize\",\"printScaling\",\"WebClient\",\"Whitespace\",\"Window\",\"pair\",\"Xdc\",\"Xdp\",\"packets\",\"Xsl\",\"debug\",\"Zpl\",\"ConfigNamespace\",\"compress\",\"CONNECTION_SET_NS_ID\",\"ConnectionSet\",\"wsdlConnection\",\"xmlConnection\",\"xsdConnection\",\"EffectiveInputPolicy\",\"EffectiveOutputPolicy\",\"Operation\",\"RootElement\",\"SoapAction\",\"SoapAddress\",\"WsdlAddress\",\"WsdlConnection\",\"dataDescription\",\"effectiveInputPolicy\",\"effectiveOutputPolicy\",\"soapAction\",\"soapAddress\",\"wsdlAddress\",\"XmlConnection\",\"XsdConnection\",\"rootElement\",\"ConnectionSetNamespace\",\"DATASETS_NS_ID\",\"Datasets\",\"DatasetsNamespace\",\"LOCALE_SET_NS_ID\",\"CalendarSymbols\",\"dayNames\",\"eraNames\",\"meridiemNames\",\"monthNames\",\"CurrencySymbol\",\"CurrencySymbols\",\"currencySymbol\",\"DatePattern\",\"DatePatterns\",\"datePattern\",\"DateTimeSymbols\",\"Day\",\"DayNames\",\"abbr\",\"day\",\"Era\",\"EraNames\",\"era\",\"calendarSymbols\",\"currencySymbols\",\"datePatterns\",\"dateTimeSymbols\",\"numberPatterns\",\"numberSymbols\",\"timePatterns\",\"typeFaces\",\"Meridiem\",\"MeridiemNames\",\"meridiem\",\"Month\",\"MonthNames\",\"month\",\"NumberPattern\",\"NumberPatterns\",\"numberPattern\",\"NumberSymbol\",\"NumberSymbols\",\"numberSymbol\",\"TimePattern\",\"TimePatterns\",\"timePattern\",\"TypeFace\",\"TypeFaces\",\"typeFace\",\"LocaleSetNamespace\",\"SIGNATURE_NS_ID\",\"SignatureNamespace\",\"STYLESHEET_NS_ID\",\"Stylesheet\",\"StylesheetNamespace\",\"XDP_NS_ID\",\"uuid\",\"XdpNamespace\",\"XHTML_NS_ID\",\"$richText\",\"VALID_STYLES\",\"StyleMapping\",\"original\",\"spacesRegExp\",\"crlfRegExp\",\"crlfForRichTextRegExp\",\"mapStyle\",\"styleStr\",\"richText\",\"newValue\",\"SUB_SUPER_SCRIPT_FACTOR\",\"VERTICAL_FACTOR\",\"checkStyle\",\"NoWhites\",\"XhtmlObject\",\"mustPop\",\"pushFont\",\"Body\",\"Br\",\"Html\",\"Li\",\"Ol\",\"siblings\",\"Span\",\"Sub\",\"Sup\",\"Ul\",\"XhtmlNamespace\",\"body\",\"br\",\"li\",\"ol\",\"span\",\"sub\",\"sup\",\"ul\",\"NamespaceSetUp\",\"UnknownNamespace\",\"namespaceId\",\"Root\",\"Empty\",\"Builder\",\"rootNameSpace\",\"_namespaceStack\",\"_nsAgnosticLevel\",\"_namespacePrefixes\",\"_namespaces\",\"_nextNsId\",\"_currentNamespace\",\"buildRoot\",\"build\",\"nsPrefix\",\"namespace\",\"prefixes\",\"hasNamespaceDef\",\"_searchNamespace\",\"_addNamespacePrefix\",\"dataTemplate\",\"nsAttrs\",\"xfaAttrs\",\"nsToUse\",\"_getNamespaceToUse\",\"namespaceToUse\",\"hasNamespace\",\"nsAgnostic\",\"isNsAgnostic\",\"nsName\",\"prefixStack\",\"XFAParser\",\"_builder\",\"_globalData\",\"_ids\",\"_current\",\"_whiteRegex\",\"_nbsps\",\"_richText\",\"_mkAttributes\",\"attributeObj\",\"_getNameAndPrefix\",\"attributesObj\",\"XFAFactory\",\"_createDocument\",\"binder\",\"dataHandler\",\"_createPagesHelper\",\"nextIteration\",\"_createPages\",\"dims\",\"getBoundingBox\",\"getNumPages\",\"setImages\",\"setFonts\",\"missingFonts\",\"appendFonts\",\"getPages\",\"serializeData\",\"getRichTextAsHtml\",\"rc\",\"newRoot\",\"attr\",\"AnnotationFactory\",\"createGlobals\",\"ensureDoc\",\"xfaDatasets\",\"annotationGlobals\",\"collectFields\",\"orphanFields\",\"_getPageIndex\",\"ensure\",\"_create\",\"parameters\",\"needAppearances\",\"LinkAnnotation\",\"TextAnnotation\",\"fieldType\",\"TextWidgetAnnotation\",\"ButtonWidgetAnnotation\",\"ChoiceWidgetAnnotation\",\"SignatureWidgetAnnotation\",\"WidgetAnnotation\",\"PopupAnnotation\",\"FreeTextAnnotation\",\"LineAnnotation\",\"SquareAnnotation\",\"CircleAnnotation\",\"PolylineAnnotation\",\"PolygonAnnotation\",\"CaretAnnotation\",\"InkAnnotation\",\"HighlightAnnotation\",\"UnderlineAnnotation\",\"SquigglyAnnotation\",\"StrikeOutAnnotation\",\"StampAnnotation\",\"FileAttachmentAnnotation\",\"Annotation\",\"annotDict\",\"fetchIfRefAsync\",\"annotRef\",\"generateImages\",\"imagePromises\",\"bitmapId\",\"saveNewAnnotations\",\"annotation\",\"deleted\",\"annotationType\",\"createNewAnnotation\",\"quadPoints\",\"smaskStream\",\"smaskRef\",\"printNewAnnotations\",\"createNewPrintAnnotation\",\"getRgbColor\",\"defaultColor\",\"getPdfColorArray\",\"getQuadPoints\",\"newQuadPoints\",\"x4\",\"y4\",\"getTransformMatrix\",\"setTitle\",\"setContents\",\"setModificationDate\",\"setFlags\",\"setRectangle\",\"setColor\",\"setBorderStyle\",\"setAppearance\",\"setOptionalContent\",\"MK\",\"setBorderAndBackgroundColors\",\"setRotation\",\"_streams\",\"isLocked\",\"isContentLocked\",\"annotationFlags\",\"contentsObj\",\"_contents\",\"hasAppearance\",\"modificationDate\",\"hasOwnCanvas\",\"noRotate\",\"noHTML\",\"isEditable\",\"kidIds\",\"fieldName\",\"_constructFieldName\",\"it\",\"_isOffscreenCanvasSupported\",\"_fallbackFontDict\",\"_needAppearances\",\"_hasFlag\",\"_buildFlags\",\"noView\",\"noPrint\",\"_isViewable\",\"_isPrintable\",\"mustBeViewed\",\"_renderForms\",\"viewable\",\"mustBePrinted\",\"printable\",\"mustBeViewedWhenEditing\",\"isEditing\",\"modifiedIds\",\"_parseStringHelper\",\"setDefaultAppearance\",\"defaultAppearance\",\"_defaultAppearance\",\"defaultAppearanceData\",\"_title\",\"contents\",\"hasFlag\",\"setLineEndings\",\"lineEndings\",\"mk\",\"AnnotationBorderStyle\",\"dictType\",\"setWidth\",\"setStyle\",\"setDashArray\",\"setHorizontalCornerRadius\",\"setVerticalCornerRadius\",\"appearanceStates\",\"normalAppearanceState\",\"oc\",\"loadResources\",\"isUsingOwnCanvas\",\"separateForm\",\"separateCanvas\",\"appearanceDict\",\"hasTextContent\",\"extractTextContent\",\"firstPosition\",\"trimEnd\",\"textPosition\",\"_transformPoint\",\"getFieldObject\",\"strokeColor\",\"fillColor\",\"loopDict\",\"rawWidth\",\"dashArray\",\"horizontalCornerRadius\",\"verticalCornerRadius\",\"forceStyle\",\"allZeros\",\"validNumber\",\"MarkupAnnotation\",\"rawIRT\",\"inReplyTo\",\"rt\",\"replyType\",\"popupRef\",\"titleObj\",\"creationDate\",\"setCreationDate\",\"_setDefaultAppearance\",\"blendMode\",\"fillAlpha\",\"pointsCallback\",\"pointsArray\",\"formDict\",\"appearanceStream\",\"gsDict\",\"stateDict\",\"annotationRef\",\"createNewAppearanceStream\",\"annotationDict\",\"apRef\",\"createNewDict\",\"newAnnotation\",\"refToReplace\",\"fieldValue\",\"_decodeFormValue\",\"defaultFieldValue\",\"_hasValueFromXFA\",\"getValue\",\"alternativeText\",\"acroFormResources\",\"appearanceResources\",\"_fieldResources\",\"mergedResources\",\"fieldFlags\",\"password\",\"hasFieldFlag\",\"readOnly\",\"formValue\",\"renderForms\",\"getBorderAndBackgroundAppearances\",\"_hasText\",\"_getAppearance\",\"_getMKDict\",\"amendSavedDict\",\"setValue\",\"newParentDict\",\"originalDict\",\"maybeMK\",\"newRef\",\"AP\",\"_getSaveFieldResources\",\"rotationMatrix\",\"formattedValue\",\"combo\",\"exportValue\",\"displayValue\",\"lineCount\",\"defaultPadding\",\"defaultHPadding\",\"_getFontData\",\"encodedLines\",\"encodingError\",\"encodedString\",\"fakeUnicodeFont\",\"newFont\",\"oldFont\",\"savedDefaultAppearance\",\"_computeFontSize\",\"defaultVPadding\",\"textAlignment\",\"_getMultilineAppearance\",\"_getCombAppearance\",\"bottomPadding\",\"prevInfo\",\"renderedText\",\"_renderText\",\"appearanceData\",\"_getTextWidth\",\"numberOfLines\",\"roundWithTwoDigits\",\"textWidth\",\"cachedLines\",\"isTooBig\",\"fsize\",\"_splitLine\",\"hPadding\",\"vPadding\",\"shiftStr\",\"localFont\",\"acroFormFont\",\"subFontDict\",\"subResourcesDict\",\"maximumLength\",\"doNotScroll\",\"combWidth\",\"renderedComb\",\"lastSpacePosInStringStart\",\"lastSpacePosInStringEnd\",\"startChunk\",\"allText\",\"_m\",\"multiline\",\"charLimit\",\"editable\",\"checkedAppearance\",\"uncheckedAppearance\",\"isRadio\",\"isPushButton\",\"checkBox\",\"radioButton\",\"pushButton\",\"isTooltipOnly\",\"_processCheckBox\",\"_processRadioButton\",\"_processPushButton\",\"buttonValue\",\"savedAppearance\",\"savedMatrix\",\"_saveCheckbox\",\"_saveRadioButton\",\"_getDefaultCheckedAppearance\",\"FONT_RATIO\",\"xShift\",\"yShift\",\"customAppearance\",\"normalAppearance\",\"asValue\",\"yes\",\"exportValues\",\"otherYes\",\"fieldParent\",\"fieldParentValue\",\"indices\",\"hasIndices\",\"isOptionArray\",\"multiSelect\",\"numItems\",\"multipleSelection\",\"valueIndices\",\"numberOfVisibleLines\",\"firstIndex\",\"minIndex\",\"maxIndex\",\"vpadding\",\"DEFAULT_ICON_SIZE\",\"stateModel\",\"parentItem\",\"parentRect\",\"parentFlags\",\"_hasAppearance\",\"oldAnnotation\",\"user\",\"freetext\",\"da\",\"helv\",\"lineAscent\",\"clipBox\",\"lineCoordinates\",\"interiorColor\",\"borderAdjust\",\"controlPointsDistance\",\"xMid\",\"yMid\",\"xOffset\",\"yOffset\",\"vertices\",\"rawVertices\",\"inkLists\",\"rawInkLists\",\"inkList\",\"outlines\",\"ink\",\"createNewAppearanceStreamForHighlight\",\"appearanceBuffer\",\"outline\",\"c1x\",\"c1y\",\"c2x\",\"c2y\",\"xEnd\",\"savedHasOwnCanvas\",\"buf32\",\"hasAlpha\",\"fillStyle\",\"jpegBufferPromise\",\"convertToBlob\",\"quality\",\"xobjectName\",\"imageName\",\"alphaBuffer\",\"stamp\",\"createNewAppearanceStreamForDrawing\",\"#createNewAppearanceStreamForDrawing\",\"areContours\",\"isSignature\",\"xobject\",\"PARAMS\",\"calculateMD5\",\"h0\",\"h3\",\"padded\",\"rotateArg\",\"decodeString\",\"DatasetXMLParser\",\"DatasetReader\",\"Word64\",\"highInteger\",\"lowInteger\",\"and\",\"word\",\"xor\",\"shiftRight\",\"places\",\"rotateRight\",\"not\",\"lowAdd\",\"highAdd\",\"copyTo\",\"maj\",\"sigmaPrime\",\"littleSigma\",\"littleSigmaPrime\",\"calculateSHA512\",\"mode384\",\"h4\",\"h5\",\"h6\",\"h7\",\"calculateSHA384\",\"rotr\",\"calculateSHA256\",\"DecryptStream\",\"nextChunk\",\"hasMoreData\",\"ARCFourCipher\",\"keyLength\",\"encryptBlock\",\"decryptBlock\",\"NullCipher\",\"AESBaseCipher\",\"_s\",\"_inv_s\",\"_mix\",\"_mixCol\",\"bufferPosition\",\"_expandKey\",\"cipherKey\",\"_decrypt\",\"_keySize\",\"_cyclesOfRepetition\",\"s0\",\"_encrypt\",\"_decryptBlock2\",\"finalize\",\"sourceLength\",\"iv\",\"plain\",\"_key\",\"lastBlock\",\"psLen\",\"cipher\",\"AES128Cipher\",\"_rcon\",\"rcon\",\"t3\",\"t4\",\"AES256Cipher\",\"PDFBase\",\"_hash\",\"userBytes\",\"checkOwnerPassword\",\"ownerValidationSalt\",\"ownerPassword\",\"hashData\",\"checkUserPassword\",\"userValidationSalt\",\"userPassword\",\"getOwnerKey\",\"ownerKeySalt\",\"ownerEncryption\",\"getUserKey\",\"userKeySalt\",\"userEncryption\",\"PDF17\",\"PDF20\",\"combinedLength\",\"combinedArray\",\"CipherTransform\",\"stringCipherConstructor\",\"streamCipherConstructor\",\"StringCipherConstructor\",\"StreamCipherConstructor\",\"cipherTransformDecryptStream\",\"encryptString\",\"strLen\",\"pad\",\"CipherTransformFactory\",\"_defaultPasswordBytes\",\"createEncryptionKey20\",\"#createEncryptionKey20\",\"revision\",\"uBytes\",\"perms\",\"passwordLength\",\"pdfAlgorithm\",\"prepareKeyData\",\"#prepareKeyData\",\"fileId\",\"hashDataSize\",\"keyLengthInBytes\",\"encryptionKey\",\"checkData\",\"derivedKey\",\"decodeUserPassword\",\"#decodeUserPassword\",\"buildObjectKey\",\"#buildObjectKey\",\"isAes\",\"buildCipherConstructor\",\"#buildCipherConstructor\",\"cf\",\"cryptFilter\",\"cfm\",\"algorithm\",\"cfDict\",\"streamCryptoName\",\"handlerDict\",\"ownerBytes\",\"fileIdBytes\",\"passwordBytes\",\"decodedPassword\",\"stmf\",\"strf\",\"eff\",\"createCipherTransform\",\"cipherConstructor\",\"XRef\",\"firstXRefStmPos\",\"_xrefStms\",\"_cacheMap\",\"_pendingRefs\",\"_newPersistentRefNum\",\"_newTemporaryRefNum\",\"_persistentRefsCache\",\"resetNewTemporaryRef\",\"setStartXRef\",\"startXRef\",\"startXRefQueue\",\"trailerDict\",\"readXRef\",\"indexObjects\",\"processXRefTable\",\"tableState\",\"entryNum\",\"streamPos\",\"parserBuf1\",\"parserBuf2\",\"readXRefTable\",\"firstEntryNum\",\"free\",\"uncompressed\",\"processXRefStream\",\"byteWidths\",\"streamState\",\"entryRanges\",\"readXRefStream\",\"typeFieldWidth\",\"offsetFieldWidth\",\"generationFieldWidth\",\"generation\",\"typeByte\",\"offsetByte\",\"generationByte\",\"TAB\",\"PERCENT\",\"LT\",\"readToken\",\"skipUntil\",\"skipped\",\"gEndobjRegExp\",\"gStartxrefRegExp\",\"objRegExp\",\"trailerBytes\",\"startxrefBytes\",\"xrefBytes\",\"bufferStr\",\"trailers\",\"xrefStms\",\"contentLength\",\"updateEntries\",\"lastIndex\",\"xrefTagOffset\",\"xrefStm\",\"trailerDicts\",\"isEncrypted\",\"trailerError\",\"_generationFallback\",\"validPagesDict\",\"pagesDict\",\"pagesCount\",\"startXRefParsedCache\",\"lastXRefStreamPos\",\"getEntry\",\"xrefEntry\",\"fetchUncompressed\",\"fetchCompressed\",\"tableOffset\",\"LETTER_SIZE_MEDIABOX\",\"Page\",\"resourcesPromise\",\"globalIdFactory\",\"xfaFactory\",\"idCounters\",\"_localIdFactory\",\"createPartialEvaluator\",\"#createPartialEvaluator\",\"#getInheritableProperty\",\"#getBoundingBox\",\"xfaData\",\"box\",\"mediaBox\",\"cropBox\",\"userUnit\",\"onSubStreamError\",\"#onSubStreamError\",\"getContentStream\",\"replaceIdByRef\",\"#replaceIdByRef\",\"deletedAnnotations\",\"existingAnnotations\",\"partialEvaluator\",\"annotationsArray\",\"deletedRef\",\"_parsedAnnotations\",\"getMergedResources\",\"#getMergedResources\",\"streamDict\",\"contentStreamPromise\",\"newAnnotsByPage\",\"newAnnots\",\"newAnnotationsPromise\",\"annotationGlobalsPromise\",\"missingBitmaps\",\"annotationWithBitmaps\",\"pageListPromise\",\"contentStream\",\"transparency\",\"pageOpList\",\"newAnnotations\",\"findIndex\",\"intentAny\",\"intentDisplay\",\"intentPrint\",\"opListPromises\",\"opLists\",\"langPromise\",\"getStructTree\",\"_parseStructTree\",\"getAnnotationsData\",\"annotationsData\",\"textContentPromises\",\"isVisible\",\"annots\",\"fieldObjects\",\"annotationPromises\",\"sortedAnnotations\",\"popupAnnotations\",\"widgetAnnotations\",\"PDF_HEADER_SIGNATURE\",\"STARTXREF_SIGNATURE\",\"ENDOBJ_SIGNATURE\",\"backwards\",\"signatureEnd\",\"PDFDocument\",\"pagePromises\",\"_globalIdFactory\",\"docId\",\"catalog\",\"linearization\",\"startXRefLength\",\"checkHeader\",\"parseStartXRef\",\"hasOnlyDocumentSignatures\",\"#hasOnlyDocumentSignatures\",\"recursionDepth\",\"RECURSION_LIMIT\",\"isInvisible\",\"_xfaStreams\",\"enableXfa\",\"formInfo\",\"hasXfa\",\"hasAcroForm\",\"isPureXfa\",\"htmlForXfa\",\"loadXfaImages\",\"#loadXfaImages\",\"loadXfaFonts\",\"#loadXfaFonts\",\"parseFont\",\"loadXfaResources\",\"serializeXfaData\",\"hasFields\",\"hasSignatures\",\"sigFlags\",\"documentInfo\",\"docInfo\",\"PDFFormatVersion\",\"Language\",\"EncryptFilterName\",\"IsLinearized\",\"IsAcroFormPresent\",\"IsXFAPresent\",\"IsCollectionPresent\",\"IsSignaturesPresent\",\"infoDict\",\"customValue\",\"Custom\",\"fingerprints\",\"FINGERPRINT_FIRST_BYTES\",\"EMPTY_FINGERPRINT\",\"hashOriginal\",\"hashModified\",\"getLinearizationPage\",\"#getLinearizationPage\",\"cachedPromise\",\"checkFirstPage\",\"checkLastPage\",\"pagesTree\",\"reasonAll\",\"fontFallback\",\"collectFieldObjects\",\"#collectFieldObjects\",\"fieldRef\",\"visitedRefs\",\"partName\",\"allFields\",\"fieldPromises\",\"allPromises\",\"hasJSActions\",\"_parseHasJSActions\",\"catalogJsActions\",\"fieldObject\",\"calculationOrderIds\",\"calculationOrder\",\"parseDocBaseUrl\",\"BasePdfManager\",\"_docBaseUrl\",\"_docId\",\"_password\",\"pdfDocument\",\"ensureXRef\",\"requestLoadedStream\",\"sendProgressiveData\",\"updatePassword\",\"terminate\",\"LocalPdfManager\",\"_loadedStreamPromise\",\"NetworkPdfManager\",\"streamManager\",\"CallbackKind\",\"DATA\",\"StreamKind\",\"CANCEL\",\"CANCEL_COMPLETE\",\"CLOSE\",\"ENQUEUE\",\"PULL\",\"PULL_COMPLETE\",\"START_COMPLETE\",\"onFn\",\"wrapReason\",\"MessageHandler\",\"messageAC\",\"sourceName\",\"targetName\",\"comObj\",\"callbackId\",\"streamId\",\"streamSinks\",\"streamControllers\",\"callbackCapabilities\",\"actionHandler\",\"onMessage\",\"#onMessage\",\"processStreamMessage\",\"try\",\"postMessage\",\"createStreamSink\",\"ah\",\"sendWithStream\",\"queueingStrategy\",\"ReadableStream\",\"controller\",\"startCapability\",\"startCall\",\"pullCall\",\"cancelCall\",\"pull\",\"pullCapability\",\"cancel\",\"cancelCapability\",\"#createStreamSink\",\"isCancelled\",\"lastDesiredSize\",\"sinkCapability\",\"onPull\",\"onCancel\",\"#processStreamMessage\",\"streamController\",\"deleteStreamController\",\"dataReason\",\"#deleteStreamController\",\"allSettled\",\"destroy\",\"writeObject\",\"writeDict\",\"writeStream\",\"writeArray\",\"writeValue\",\"isFilterZeroFlateDecode\",\"MIN_LENGTH_FOR_COMPRESSING\",\"CompressionStream\",\"newFilter\",\"newParams\",\"writeInt\",\"writeString\",\"computeMD5\",\"filesize\",\"xrefInfo\",\"md5Buffer\",\"infoMap\",\"md5BufferLen\",\"writeXFADataForAcroform\",\"xml\",\"nodePath\",\"updateAcroform\",\"hasXfaDatasetsEntry\",\"xfaDatasetsRef\",\"newXfa\",\"updateXFA\",\"xfaDataStream\",\"getXRefTable\",\"baseOffset\",\"newRefs\",\"indexes\",\"getIndexes\",\"indexesPosition\",\"computeIDs\",\"getXRefStreamTable\",\"xrefTableData\",\"maxOffset\",\"maxGen\",\"maxGenSize\",\"sizes\",\"structSize\",\"objOffset\",\"fileIds\",\"md5\",\"getTrailerDict\",\"useXrefStream\",\"refForXrefTable\",\"infoRef\",\"encryptRef\",\"writeChanges\",\"incrementalUpdate\",\"originalData\",\"PDFWorkerStream\",\"_msgHandler\",\"_contentLength\",\"_fullRequestReader\",\"_rangeRequestReaders\",\"getFullReader\",\"PDFWorkerStreamReader\",\"PDFWorkerStreamRangeReader\",\"_isRangeSupported\",\"_isStreamingSupported\",\"readableStream\",\"_reader\",\"getReader\",\"_headersReady\",\"isRangeSupported\",\"headersReady\",\"WorkerTask\",\"terminated\",\"_capability\",\"finished\",\"finish\",\"WorkerMessageHandler\",\"initializeFromPort\",\"setup\",\"port\",\"testMessageProcessed\",\"createDocumentHandler\",\"docParams\",\"cancelXHRs\",\"WorkerTasks\",\"apiVersion\",\"workerVersion\",\"buildMsg\",\"workerHandlerName\",\"startWorkerTask\",\"finishWorkerTask\",\"loadDocument\",\"getPdfManager\",\"pdfManagerArgs\",\"pdfStream\",\"fullRequest\",\"pdfManagerCapability\",\"newPdfManager\",\"cachedChunks\",\"pdfFile\",\"setupDoc\",\"onSuccess\",\"doc\",\"pdfInfo\",\"onFailure\",\"pdfManagerReady\",\"refStr\",\"globalPromises\",\"_structTreeRoot\",\"newAnnotationPromises\",\"newXrefInfo\",\"operatorListInfo\",\"waitOn\",\"cleanupPromise\",\"pdfjsWorker\"],\"sourceRoot\":\"\"}\n\\ No newline at end of file\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Fdebugger.css \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Fdebugger.css\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Fdebugger.css\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Fdebugger.css\t2026-02-24 09:27:28.000000000 +0000\n@@ -22,7 +22,10 @@\n   font: message-box;\n }\n #PDFBug {\n-  background-color: rgb(255 255 255);\n+  color-scheme: only light;\n+\n+  background-color: white;\n+  color: black;\n   border: 1px solid rgb(102 102 102);\n   position: fixed;\n   top: 32px;\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Fdebugger.js \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Fdebugger.js\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Fdebugger.js\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Fdebugger.js\t2026-02-24 09:27:28.000000000 +0000\n@@ -374,6 +374,14 @@\n         table.classList.add(\"showText\");\n         decArgs.append(table);\n         table.append(charCodeRow, fontCharRow, unicodeRow);\n+      } else if (fn === \"constructPath\") {\n+        const [op, [path], minMax] = args;\n+        decArgs = this.#c(\"td\");\n+        decArgs.append(JSON.stringify(this.#simplifyArgs(path)));\n+        decArgs.append(this.#c(\"br\"));\n+        decArgs.append(`minMax: ${JSON.stringify(this.#simplifyArgs(minMax))}`);\n+        decArgs.append(this.#c(\"br\"));\n+        decArgs.append(`→ ${opMap[op]}`);\n       } else if (fn === \"restore\" && this.indentLevel > 0) {\n         this.indentLevel--;\n       }\n@@ -398,9 +406,7 @@\n   }\n \n   getNextBreakPoint() {\n-    this.breakPoints.sort(function (a, b) {\n-      return a - b;\n-    });\n+    this.breakPoints.sort((a, b) => a - b);\n     for (const breakPoint of this.breakPoints) {\n       if (breakPoint > this.currentIdx) {\n         return breakPoint;\n@@ -487,9 +493,7 @@\n       statsDiv.textContent = stat.toString();\n       wrapper.append(title, statsDiv);\n       stats.push({ pageNumber, div: wrapper });\n-      stats.sort(function (a, b) {\n-        return a.pageNumber - b.pageNumber;\n-      });\n+      stats.sort((a, b) => a.pageNumber - b.pageNumber);\n       clear(this.panel);\n       for (const entry of stats) {\n         this.panel.append(entry.div);\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb: iccs\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Fimages: altText_disclaimer.svg\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Fimages: altText_spinner.svg\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Fimages: altText_warning.svg\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Fimages: editor-toolbar-edit.svg\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Fimages: messageBar_closingButton.svg\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Fimages: messageBar_info.svg\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Fimages: messageBar_warning.svg\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Fimages: toolbarButton-editorSignature.svg\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fach\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fach\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fach\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fach\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -217,9 +217,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Faf\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Faf\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Faf\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Faf\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -204,9 +204,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fan\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fan\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fan\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fan\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -249,9 +249,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Far\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Far\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Far\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Far\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -105,6 +105,14 @@\n pdfjs-document-properties-file-name = اسم الملف:\n pdfjs-document-properties-file-size = حجم الملف:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } ك.بايت ({ $b } بايتات)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } م.بايت ({ $b } بايتات)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } ك.بايت ({ $size_b } بايت)\n@@ -119,6 +127,9 @@\n pdfjs-document-properties-creation-date = تاريخ الإنشاء:\n pdfjs-document-properties-modification-date = تاريخ التعديل:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }، { $time }\n@@ -216,7 +227,7 @@\n pdfjs-find-next-button-label = التالي\n pdfjs-find-highlight-checkbox = أبرِز الكل\n pdfjs-find-match-case-checkbox-label = طابق حالة الأحرف\n-pdfjs-find-match-diacritics-checkbox-label = طابِق الحركات\n+pdfjs-find-match-diacritics-checkbox-label = طابِق التشكيل\n pdfjs-find-entire-word-checkbox-label = كلمات كاملة\n pdfjs-find-reached-top = تابعت من الأسفل بعدما وصلت إلى بداية المستند\n pdfjs-find-reached-bottom = تابعت من الأعلى بعدما وصلت إلى نهاية المستند\n@@ -283,6 +294,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [تعليق { $type }]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -306,12 +320,29 @@\n pdfjs-editor-highlight-button =\n     .title = أبرِز\n pdfjs-editor-highlight-button-label = أبرِز\n-pdfjs-highlight-floating-button =\n-    .title = أبرِز\n pdfjs-highlight-floating-button1 =\n     .title = أبرِز\n     .aria-label = أبرِز\n pdfjs-highlight-floating-button-label = أبرِز\n+pdfjs-editor-signature-button =\n+    .title = أضِف توقيع\n+pdfjs-editor-signature-button-label = أضِف توقيع\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = محرِّر الإبراز\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = محرِّر الرسم\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = محرِّر التوقيع: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = محرِّر الصور\n \n ## Remove button for the various kind of editor.\n \n@@ -323,6 +354,8 @@\n     .title = أزِل الصورة\n pdfjs-editor-remove-highlight-button =\n     .title = أزِل الإبراز\n+pdfjs-editor-remove-signature-button =\n+    .title = أزِل التوقيع\n \n ##\n \n@@ -339,6 +372,20 @@\n pdfjs-editor-free-highlight-thickness-input = السماكة\n pdfjs-editor-free-highlight-thickness-title =\n     .title = غيّر السُمك عند إبراز عناصر أُخرى غير النص\n+pdfjs-editor-add-signature-container =\n+    .aria-label = عناصر التحكم في التوقيع والتوقيعات المحفوظة\n+pdfjs-editor-signature-add-signature-button =\n+    .title = أضِف توقيع جديد\n+pdfjs-editor-signature-add-signature-button-label = أضِف توقيع جديد\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = التوقيع المحفوظ: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = محرِّر النص\n+    .default-content = ابدأ في كتابة…\n pdfjs-free-text =\n     .aria-label = محرِّر النص\n pdfjs-free-text-default-content = ابدأ الكتابة…\n@@ -349,8 +396,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = نص بديل\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = حرّر النص البديل\n pdfjs-editor-alt-text-edit-button-label = تحرير النص البديل\n pdfjs-editor-alt-text-dialog-label = اختر خيار\n pdfjs-editor-alt-text-dialog-description = يساعد النص البديل عندما لا يتمكن الأشخاص من رؤية الصورة أو عندما لا يتم تحميلها.\n@@ -364,6 +412,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = على سبيل المثال، \"يجلس شاب على الطاولة لتناول وجبة\"\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = نص بديل\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -376,6 +427,22 @@\n pdfjs-editor-resizer-label-bottom-middle = أسفل الوسط - غيّر الحجم\n pdfjs-editor-resizer-label-bottom-left = الزاوية اليُسرى السُفلية - غيّر الحجم\n pdfjs-editor-resizer-label-middle-left = مُنتصف اليسار - غيّر الحجم\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = الزاوية اليُسرى العُليا — غيّر الحجم\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = أعلى الوسط - غيّر الحجم\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = الزاوية اليُمنى العُليا - غيّر الحجم\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = اليمين الأوسط - غيّر الحجم\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = الزاوية اليُمنى السُفلى - غيّر الحجم\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = أسفل الوسط - غيّر الحجم\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = الزاوية اليُسرى السُفلية - غيّر الحجم\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = مُنتصف اليسار - غيّر الحجم\n \n ## Color picker\n \n@@ -402,3 +469,159 @@\n pdfjs-editor-highlight-show-all-button-label = أظهِر الكل\n pdfjs-editor-highlight-show-all-button =\n     .title = أظهِر الكل\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = حرّر النص البديل (وصف الصورة)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = أضِف النص البديل (وصف الصورة)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = اكتب وصفك هنا…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = وصف مختصر للأشخاص الذين لا يستطيعون رؤية الصورة أو عندما لا يتم تحميل الصورة.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = أُنشئ هذا النص البديل تلقائيًا وقد يكون غير دقيق.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = اطّلع على المزيد\n+pdfjs-editor-new-alt-text-create-automatically-button-label = أنشئ نص بديل تلقائيًا\n+pdfjs-editor-new-alt-text-not-now-button = ليس الآن\n+pdfjs-editor-new-alt-text-error-title = لم يتمكن من إنشاء نص بديل تلقائيًا\n+pdfjs-editor-new-alt-text-error-description = يُرجى كتابة نص بديلك أو المحاولة مرة أخرى لاحقًا.\n+pdfjs-editor-new-alt-text-error-close-button = أغلق\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = يُنزّل نموذج الذكاء الاصطناعي للنص البديل ({ $downloadedSize } من { $totalSize } م.بايت)\n+    .aria-valuetext = يُنزّل نموذج الذكاء الاصطناعي للنص البديل ({ $downloadedSize } من { $totalSize } م.بايت)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = أُضِيف نص بديل\n+pdfjs-editor-new-alt-text-added-button-label = أُضِيف نص بديل\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = نص بديل مفقود\n+pdfjs-editor-new-alt-text-missing-button-label = نص بديل مفقود\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = راجع النص البديل\n+pdfjs-editor-new-alt-text-to-review-button-label = راجع النص البديل\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = أُنشئ تلقائيًا: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = إعدادات النص البديل للصورة\n+pdfjs-image-alt-text-settings-button-label = إعدادات النص البديل للصورة\n+pdfjs-editor-alt-text-settings-dialog-label = إعدادات النص البديل للصورة\n+pdfjs-editor-alt-text-settings-automatic-title = نص بديل تلقائي\n+pdfjs-editor-alt-text-settings-create-model-button-label = أنشئ نص بديل تلقائيًا\n+pdfjs-editor-alt-text-settings-create-model-description = يقترح أوصافًا لمساعدة الأشخاص الذين لا يستطيعون رؤية الصورة أو عندما لا يتم تحميل الصورة.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = نموذج الذكاء الاصطناعي للنص البديل ({ $totalSize } م.بايت)\n+pdfjs-editor-alt-text-settings-ai-model-description = يتم تشغيله محليًا على جهازك حتى تظل بياناتك خاصة. مطلوب للنص البديل التلقائي.\n+pdfjs-editor-alt-text-settings-delete-model-button = احذف\n+pdfjs-editor-alt-text-settings-download-model-button = نزّل\n+pdfjs-editor-alt-text-settings-downloading-model-button = يُنزل…\n+pdfjs-editor-alt-text-settings-editor-title = مُحرِّر النص البديل\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = أظهِر مُحرِّر النص البديل على الفور عند إضافة صورة\n+pdfjs-editor-alt-text-settings-show-dialog-description = يساعدك على التأكد من أن جميع صورك تحتوي على نص بديل.\n+pdfjs-editor-alt-text-settings-close-button = أغلق\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = أُزِيل البرز\n+pdfjs-editor-undo-bar-message-freetext = أُزيل النص\n+pdfjs-editor-undo-bar-message-ink = أُزِيلت الرسمة\n+pdfjs-editor-undo-bar-message-stamp = أُزيلت الصورة\n+pdfjs-editor-undo-bar-message-signature = أُزيل التوقيع\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [zero] أُزيل لا تعليق\n+        [one] أُزيل تعليق\n+        [two] أُزيل تعليقين\n+        [few] أُزيلت { $count } تعليقات\n+        [many] أُزيل { $count } تعليق\n+       *[other] أُزيل { $count } تعليق\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = تراجع\n+pdfjs-editor-undo-bar-undo-button-label = تراجع\n+pdfjs-editor-undo-bar-close-button =\n+    .title = أغلق\n+pdfjs-editor-undo-bar-close-button-label = أغلق\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = يتيح هذا النموذج للمستخدم إنشاء توقيع لإضافته إلى مستند PDF. ويمكن للمستخدم تحرير الاسم (الذي يعمل أيضًا كنص بديل)، وحفظ التوقيع بشكل اختياري للاستخدام المتكرر.\n+pdfjs-editor-add-signature-dialog-title = أضِف توقيعا\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = اكتب\n+    .title = اكتب\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = ارسم\n+    .title = ارسم\n+pdfjs-editor-add-signature-image-button = صورة\n+    .title = صورة\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = اكتب توقيعك\n+    .placeholder = اكتب توقيعك\n+pdfjs-editor-add-signature-draw-placeholder = ارسم توقيعك\n+pdfjs-editor-add-signature-draw-thickness-range-label = السماكة\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = سمك الرسم: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = اسحب الملف هنا لرفعه\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] أو اختر ملفات الصور\n+       *[other] أو تصفح ملفات الصور\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = الوصف (نص بديل)\n+pdfjs-editor-add-signature-description-input =\n+    .title = الوصف (نص بديل)\n+pdfjs-editor-add-signature-description-default-when-drawing = توقيع\n+pdfjs-editor-add-signature-clear-button-label = امحُ التوقيع\n+pdfjs-editor-add-signature-clear-button =\n+    .title = امحُ التوقيع\n+pdfjs-editor-add-signature-save-checkbox = احفظ التوقيع\n+pdfjs-editor-add-signature-save-warning-message = لقد وصلت إلى الحد الأقصى وهو 5 توقيعات محفوظة. أزِل توقيع واحد لحفظ المزيد.\n+pdfjs-editor-add-signature-image-upload-error-title = تعذر رفع الصورة.\n+pdfjs-editor-add-signature-image-upload-error-description = تحقق من اتصال الشبكة لديك أو جرّب صورة أخرى.\n+pdfjs-editor-add-signature-error-close-button = أغلق\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = ألغِ\n+pdfjs-editor-add-signature-add-button = أضِف\n+pdfjs-editor-edit-signature-update-button = حدّث\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = أزِل التوقيع المحفوظ\n+pdfjs-editor-delete-signature-button-label1 = أزِل التوقيع المحفوظ\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = عدّل الوصف\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = عدّل الوصف\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fast\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fast\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fast\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fast\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -193,9 +193,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Faz\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Faz\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Faz\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Faz\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -249,9 +249,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fbe\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fbe\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fbe\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fbe\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Дзейная старонка (паглядзець URL-адрас з дзейнай старонкі)\n pdfjs-bookmark-button-label = Цяперашняя старонка\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Адкрыць у праграме\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Адкрыць у праграме\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = Назва файла:\n pdfjs-document-properties-file-size = Памер файла:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } КБ ({ $b } байтаў)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } МБ ({ $b } байтаў)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } КБ ({ $size_b } байт)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Дата стварэння:\n pdfjs-document-properties-modification-date = Дата змянення:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -283,6 +288,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type } Annotation]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -306,12 +314,29 @@\n pdfjs-editor-highlight-button =\n     .title = Вылучэнне\n pdfjs-editor-highlight-button-label = Вылучэнне\n-pdfjs-highlight-floating-button =\n-    .title = Вылучэнне\n pdfjs-highlight-floating-button1 =\n     .title = Падфарбаваць\n     .aria-label = Падфарбаваць\n pdfjs-highlight-floating-button-label = Падфарбаваць\n+pdfjs-editor-signature-button =\n+    .title = Дадаць подпіс\n+pdfjs-editor-signature-button-label = Дадаць подпіс\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Рэдактар вылучэнняў\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Рэдактар малюнкаў\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Рэдактар подпісаў: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Рэдактар выяў\n \n ## Remove button for the various kind of editor.\n \n@@ -323,6 +348,8 @@\n     .title = Выдаліць выяву\n pdfjs-editor-remove-highlight-button =\n     .title = Выдаліць падфарбоўку\n+pdfjs-editor-remove-signature-button =\n+    .title = Выдаліць подпіс\n \n ##\n \n@@ -339,6 +366,20 @@\n pdfjs-editor-free-highlight-thickness-input = Таўшчыня\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Змяняць таўшчыню пры вылучэнні іншых элементаў, акрамя тэксту\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Элементы кіравання подпісамі і захаваныя подпісы\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Дадаць новы подпіс\n+pdfjs-editor-signature-add-signature-button-label = Дадаць новы подпіс\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Захаваны подпіс: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Тэкставы рэдактар\n+    .default-content = Пачніце ўводзіць…\n pdfjs-free-text =\n     .aria-label = Тэкставы рэдактар\n pdfjs-free-text-default-content = Пачніце набор тэксту…\n@@ -349,8 +390,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Альтэрнатыўны тэкст\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Змяніць альтэрнатыўны тэкст\n pdfjs-editor-alt-text-edit-button-label = Змяніць альтэрнатыўны тэкст\n pdfjs-editor-alt-text-dialog-label = Выберыце варыянт\n pdfjs-editor-alt-text-dialog-description = Альтэрнатыўны тэкст дапамагае, калі людзі не бачаць выяву або калі яна не загружаецца.\n@@ -364,6 +406,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Напрыклад, «Малады чалавек садзіцца за стол есці»\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Альтэрнатыўны тэкст\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -376,6 +421,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Пасярэдзіне ўнізе — змяніць памер\n pdfjs-editor-resizer-label-bottom-left = Левы ніжні кут — змяніць памер\n pdfjs-editor-resizer-label-middle-left = Пасярэдзіне злева — змяніць памер\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Верхні левы кут — змяніць памер\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Уверсе пасярэдзіне — змяніць памер\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Верхні правы кут — змяніць памер\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Пасярэдзіне справа — змяніць памер\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Правы ніжні кут — змяніць памер\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Пасярэдзіне ўнізе — змяніць памер\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Левы ніжні кут — змяніць памер\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Пасярэдзіне злева — змяніць памер\n \n ## Color picker\n \n@@ -402,3 +463,156 @@\n pdfjs-editor-highlight-show-all-button-label = Паказаць усе\n pdfjs-editor-highlight-show-all-button =\n     .title = Паказаць усе\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Рэдагаваць тэкст для атрыбута alt (апісанне выявы)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Дадаць тэкст для атрыбута alt (апісанне выявы)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Напішыце сваё апісанне тут…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Кароткае апісанне для людзей, якія не бачаць выяву, ці калі выява не загружаецца.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Гэты тэкст для атрыбута alt быў створаны аўтаматычна і можа быць недакладным\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Даведацца больш\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Ствараць тэкст для атрыбута alt аўтаматычна\n+pdfjs-editor-new-alt-text-not-now-button = Не зараз\n+pdfjs-editor-new-alt-text-error-title = Не ўдалося аўтаматычна стварыць тэкст для атрыбута alt\n+pdfjs-editor-new-alt-text-error-description = Калі ласка, напішыце ўласны тэкст для атрыбута alt або паўтарыце спробу пазней.\n+pdfjs-editor-new-alt-text-error-close-button = Закрыць\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Сцягванне мадэлі ШІ для тэксту для атрыбута alt ({ $downloadedSize } з { $totalSize } МБ)\n+    .aria-valuetext = Сцягванне мадэлі ШІ для тэксту для атрыбута alt ({ $downloadedSize } з { $totalSize } МБ)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Тэкст для атрыбута alt дададзены\n+pdfjs-editor-new-alt-text-added-button-label = Тэкст для атрыбута alt дададзены\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Адсутнічае тэкст для атрыбута alt\n+pdfjs-editor-new-alt-text-missing-button-label = Адсутнічае тэкст для атрыбута alt\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Водгук на тэкст для атрыбута alt\n+pdfjs-editor-new-alt-text-to-review-button-label = Водгук на тэкст для атрыбута alt\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Створаны аўтаматычна: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Налады альтэрнатыўнага тэксту для выявы\n+pdfjs-image-alt-text-settings-button-label = Налады альтэрнатыўнага тэксту для выявы\n+pdfjs-editor-alt-text-settings-dialog-label = Налады альтэрнатыўнага тэксту для выявы\n+pdfjs-editor-alt-text-settings-automatic-title = Аўтаматычны тэкст для атрыбута alt\n+pdfjs-editor-alt-text-settings-create-model-button-label = Ствараць тэкст для атрыбута alt аўтаматычна\n+pdfjs-editor-alt-text-settings-create-model-description = Прапануе апісанні, каб дапамагчы людзям, якія не бачаць выяву, ці калі выява не загружаецца.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Мадэль ШІ для тэксту для атрыбута alt ({ $totalSize } МБ)\n+pdfjs-editor-alt-text-settings-ai-model-description = Працуе лакальна на вашай прыладзе, таму вашы звесткі застаюцца прыватнымі. Патрабуецца для аўтаматычнага альтэрнатыўнага тэксту.\n+pdfjs-editor-alt-text-settings-delete-model-button = Выдаліць\n+pdfjs-editor-alt-text-settings-download-model-button = Сцягнуць\n+pdfjs-editor-alt-text-settings-downloading-model-button = Сцягванне…\n+pdfjs-editor-alt-text-settings-editor-title = Рэдактар тэксту для атрыбута alt\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Адразу паказваць рэдактар тэксту для атрыбута alt пры даданні выявы\n+pdfjs-editor-alt-text-settings-show-dialog-description = Дапамагае пераканацца, што ўсе вашы выявы маюць альтэрнатыўны тэкст.\n+pdfjs-editor-alt-text-settings-close-button = Закрыць\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Падсвятленне выдалена\n+pdfjs-editor-undo-bar-message-freetext = Тэкст выдалены\n+pdfjs-editor-undo-bar-message-ink = Малюнак выдалены\n+pdfjs-editor-undo-bar-message-stamp = Відарыс выдалены\n+pdfjs-editor-undo-bar-message-signature = Подпіс выдалены\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } анатацыя выдалена\n+        [few] { $count } анатацыі выдалена\n+       *[many] { $count } анатацый выдалена\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Адмяніць\n+pdfjs-editor-undo-bar-undo-button-label = Адмяніць\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Закрыць\n+pdfjs-editor-undo-bar-close-button-label = Закрыць\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Гэты рэжым дазваляе карыстальніку ствараць подпіс для дадання ў дакумент PDF. Карыстальнік можа рэдагаваць імя (якое таксама служыць альтэрнатыўным тэкстам) і пры жаданні захаваць подпіс для паўторнага выкарыстання.\n+pdfjs-editor-add-signature-dialog-title = Дадаць подпіс\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Увод\n+    .title = Увод\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Маляваць\n+    .title = Маляваць\n+pdfjs-editor-add-signature-image-button = Выява\n+    .title = Выява\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Увядзіце свой подпіс\n+    .placeholder = Увядзіце свой подпіс\n+pdfjs-editor-add-signature-draw-placeholder = Намалюйце свой подпіс\n+pdfjs-editor-add-signature-draw-thickness-range-label = Таўшчыня\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Таўшчыня малюнка: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Перацягнуць файл сюды, каб загрузіць\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Або праглядайце файлы малюнкаў\n+       *[other] Або праглядайце файлы малюнкаў\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Апісанне (альтэрнатыўны тэкст)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Апісанне (альтэрнатыўны тэкст)\n+pdfjs-editor-add-signature-description-default-when-drawing = Подпіс\n+pdfjs-editor-add-signature-clear-button-label = Выдаліць подпіс\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Выдаліць подпіс\n+pdfjs-editor-add-signature-save-checkbox = Захаваць подпіс\n+pdfjs-editor-add-signature-save-warning-message = Вы дасягнулі ліміту ў 5 захаваных подпісаў. Выдаліце адзін, каб захаваць іншы.\n+pdfjs-editor-add-signature-image-upload-error-title = Не ўдалося загрузіць выяву\n+pdfjs-editor-add-signature-image-upload-error-description = Праверце падключэнне да сеткі ці паспрабуйце іншую выяву.\n+pdfjs-editor-add-signature-error-close-button = Закрыць\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Скасаваць\n+pdfjs-editor-add-signature-add-button = Дадаць\n+pdfjs-editor-edit-signature-update-button = Абнавіць\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Выдаліць захаваны подпіс\n+pdfjs-editor-delete-signature-button-label1 = Выдаліць захаваны подпіс\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Рэдагаваць апісанне\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Рэдагаваць апісанне\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fbg\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fbg\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fbg\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fbg\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Текуща страница (преглед на адреса на страницата)\n pdfjs-bookmark-button-label = Текуща страница\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Отваряне в приложение\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Отваряне в приложение\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = Име на файл:\n pdfjs-document-properties-file-size = Големина на файл:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } КБ ({ $b } байта)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } МБ ({ $b } байта)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } КБ ({ $size_b } байта)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Дата на създаване:\n pdfjs-document-properties-modification-date = Дата на промяна:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -281,6 +286,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [Анотация { $type }]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -301,8 +309,9 @@\n pdfjs-editor-stamp-button =\n     .title = Добавяне или променяне на изображения\n pdfjs-editor-stamp-button-label = Добавяне или променяне на изображения\n-pdfjs-editor-remove-button =\n-    .title = Премахване\n+\n+## Default editor aria labels\n+\n \n ## Remove button for the various kind of editor.\n \n@@ -326,6 +335,10 @@\n pdfjs-editor-stamp-add-image-button =\n     .title = Добавяне на изображение\n pdfjs-editor-stamp-add-image-button-label = Добавяне на изображение\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Текстов редактор\n+    .default-content = Започнете да пишете…\n pdfjs-free-text =\n     .aria-label = Текстов редактор\n pdfjs-free-text-default-content = Започнете да пишете…\n@@ -336,7 +349,6 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Алтернативен текст\n pdfjs-editor-alt-text-edit-button-label = Промяна на алтернативния текст\n pdfjs-editor-alt-text-dialog-label = Изберете от възможностите\n@@ -363,6 +375,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Долу в средата — преоразмеряване\n pdfjs-editor-resizer-label-bottom-left = Долен ляв ъгъл — преоразмеряване\n pdfjs-editor-resizer-label-middle-left = Ляво в средата — преоразмеряване\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Горен ляв ъгъл — преоразмеряване\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Горе в средата — преоразмеряване\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Горен десен ъгъл — преоразмеряване\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Дясно в средата — преоразмеряване\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Долен десен ъгъл — преоразмеряване\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Долу в средата — преоразмеряване\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Долен ляв ъгъл — преоразмеряване\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Ляво в средата — преоразмеряване\n \n ## Color picker\n \n@@ -382,3 +410,42 @@\n     .title = Розово\n pdfjs-editor-colorpicker-red =\n     .title = Червено\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+pdfjs-editor-new-alt-text-not-now-button = Не сега\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fbn\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fbn\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fbn\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fbn\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -239,9 +239,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fbo\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fbo\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fbo\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fbo\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -239,9 +239,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fbr\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fbr\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fbr\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fbr\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -49,12 +49,6 @@\n # Length of the translation matters since we are in a mobile context, with limited screen estate.\n pdfjs-download-button-label = Pellgargañ\n pdfjs-bookmark-button-label = Pajenn a-vremañ\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Digeriñ en arload\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Digeriñ en arload\n \n ##  Secondary toolbar and context menu\n \n@@ -214,6 +208,7 @@\n pdfjs-find-next-button-label = War-lerc'h\n pdfjs-find-highlight-checkbox = Usskediñ pep tra\n pdfjs-find-match-case-checkbox-label = Teurel evezh ouzh ar pennlizherennoù\n+pdfjs-find-match-diacritics-checkbox-label = Doujañ d’an tiredoù\n pdfjs-find-entire-word-checkbox-label = Gerioù a-bezh\n pdfjs-find-reached-top = Tizhet eo bet derou ar bajenn, kenderc'hel diouzh an diaz\n pdfjs-find-reached-bottom = Tizhet eo bet dibenn ar bajenn, kenderc'hel diouzh ar c'hrec'h\n@@ -278,6 +273,9 @@\n     .title = Ouzhpennañ pe aozañ skeudennoù\n pdfjs-editor-stamp-button-label = Ouzhpennañ pe aozañ skeudennoù\n \n+## Default editor aria labels\n+\n+\n ## Remove button for the various kind of editor.\n \n \n@@ -292,6 +290,8 @@\n pdfjs-editor-stamp-add-image-button =\n     .title = Ouzhpennañ ur skeudenn\n pdfjs-editor-stamp-add-image-button-label = Ouzhpennañ ur skeudenn\n+# This refers to the thickness of the line used for free highlighting (not bound to text)\n+pdfjs-editor-free-highlight-thickness-input = Tevded\n pdfjs-free-text =\n     .aria-label = Aozer testennoù\n pdfjs-ink =\n@@ -311,3 +311,60 @@\n \n ## Color picker\n \n+pdfjs-editor-colorpicker-button =\n+    .title = Cheñch liv\n+pdfjs-editor-colorpicker-yellow =\n+    .title = Melen\n+pdfjs-editor-colorpicker-blue =\n+    .title = Glas\n+pdfjs-editor-colorpicker-pink =\n+    .title = Roz\n+pdfjs-editor-colorpicker-red =\n+    .title = Ruz\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+pdfjs-editor-highlight-show-all-button-label = Diskouez pep tra\n+pdfjs-editor-highlight-show-all-button =\n+    .title = Diskouez pep tra\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Gouzout hiroc’h\n+pdfjs-editor-new-alt-text-error-close-button = Serriñ\n+\n+## Image alt-text settings\n+\n+pdfjs-editor-alt-text-settings-delete-model-button = Dilemel\n+pdfjs-editor-alt-text-settings-download-model-button = Pellgargañ\n+pdfjs-editor-alt-text-settings-downloading-model-button = O pellgargañ…\n+pdfjs-editor-alt-text-settings-close-button = Serriñ\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fbrx\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fbrx\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fbrx\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fbrx\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -210,9 +210,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fbs\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fbs\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fbs\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fbs\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -215,9 +215,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fca\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fca\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fca\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fca\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -45,12 +45,6 @@\n pdfjs-bookmark-button =\n     .title = Pàgina actual (mostra l'URL de la pàgina actual)\n pdfjs-bookmark-button-label = Pàgina actual\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Obre en una aplicació\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Obre en una aplicació\n \n ##  Secondary toolbar and context menu\n \n@@ -277,6 +271,15 @@\n pdfjs-editor-ink-button =\n     .title = Dibuixa\n pdfjs-editor-ink-button-label = Dibuixa\n+\n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n # Editor Parameters\n pdfjs-editor-free-text-color-input = Color\n pdfjs-editor-free-text-size-input = Mida\n@@ -297,3 +300,44 @@\n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fcak\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fcak\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fcak\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fcak\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -269,6 +269,15 @@\n pdfjs-editor-ink-button =\n     .title = Tiwachib'ëx\n pdfjs-editor-ink-button-label = Tiwachib'ëx\n+\n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n # Editor Parameters\n pdfjs-editor-free-text-color-input = B'onil\n pdfjs-editor-free-text-size-input = Nimilem\n@@ -289,3 +298,44 @@\n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fckb\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fckb\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fckb\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fckb\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -234,9 +234,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fcs\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fcs\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fcs\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fcs\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Aktuální stránka (zobrazit URL od aktuální stránky)\n pdfjs-bookmark-button-label = Aktuální stránka\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Otevřít v aplikaci\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Otevřít v aplikaci\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = Název souboru:\n pdfjs-document-properties-file-size = Velikost souboru:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } kB ({ $b } bajtů)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bajtů)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bajtů)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Datum vytvoření:\n pdfjs-document-properties-modification-date = Datum úpravy:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -285,6 +290,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [Anotace typu { $type }]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -308,12 +316,29 @@\n pdfjs-editor-highlight-button =\n     .title = Zvýraznění\n pdfjs-editor-highlight-button-label = Zvýraznění\n-pdfjs-highlight-floating-button =\n-    .title = Zvýraznit\n pdfjs-highlight-floating-button1 =\n     .title = Zvýraznit\n     .aria-label = Zvýraznit\n pdfjs-highlight-floating-button-label = Zvýraznit\n+pdfjs-editor-signature-button =\n+    .title = Přidat podpis\n+pdfjs-editor-signature-button-label = Přidat podpis\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Editor zvýraznění\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Editor kresby\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Editor podpisu: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Editor obrázků\n \n ## Remove button for the various kind of editor.\n \n@@ -325,6 +350,8 @@\n     .title = Odebrat obrázek\n pdfjs-editor-remove-highlight-button =\n     .title = Odebrat zvýraznění\n+pdfjs-editor-remove-signature-button =\n+    .title = Odebrat podpis\n \n ##\n \n@@ -341,6 +368,20 @@\n pdfjs-editor-free-highlight-thickness-input = Tloušťka\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Změna tloušťky při zvýrazňování jiných položek než textu\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Ovládací prvky pro podpisy a uložené podpisy\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Přidat nový podpis\n+pdfjs-editor-signature-add-signature-button-label = Přidat nový podpis\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Uložený podpis: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Textový editor\n+    .default-content = Začněte psát...\n pdfjs-free-text =\n     .aria-label = Textový editor\n pdfjs-free-text-default-content = Začněte psát…\n@@ -351,8 +392,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Náhradní popis\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Upravit alternativní text\n pdfjs-editor-alt-text-edit-button-label = Upravit náhradní popis\n pdfjs-editor-alt-text-dialog-label = Vyberte možnost\n pdfjs-editor-alt-text-dialog-description = Náhradní popis pomáhá, když lidé obrázek nevidí nebo když se nenačítá.\n@@ -366,6 +408,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Například: “Mladý muž si sedá ke stolu, aby se najedl.”\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Alternativní text\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -378,6 +423,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Střed dole — změna velikosti\n pdfjs-editor-resizer-label-bottom-left = Levý dolní roh — změna velikosti\n pdfjs-editor-resizer-label-middle-left = Vlevo uprostřed — změna velikosti\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Levý horní roh — změna velikosti\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Horní střed — změna velikosti\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Pravý horní roh — změna velikosti\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Vpravo uprostřed — změna velikosti\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Pravý dolní roh — změna velikosti\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Střed dole — změna velikosti\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Levý dolní roh — změna velikosti\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Vlevo uprostřed — změna velikosti\n \n ## Color picker\n \n@@ -404,3 +465,157 @@\n pdfjs-editor-highlight-show-all-button-label = Zobrazit vše\n pdfjs-editor-highlight-show-all-button =\n     .title = Zobrazit vše\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Upravit alternativní text (popis obrázku)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Přidat alternativní text (popis obrázku)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Sem napište svůj popis…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Krátký popis pro lidi, kteří neuvidí obrázek nebo když se obrázek nenačítá.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Tento alternativní text byl vytvořen automaticky a může být nepřesný.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Více informací\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Vytvořit alternativní text automaticky\n+pdfjs-editor-new-alt-text-not-now-button = Teď ne\n+pdfjs-editor-new-alt-text-error-title = Nepodařilo se automaticky vytvořit alternativní text\n+pdfjs-editor-new-alt-text-error-description = Napište prosím vlastní alternativní text nebo to zkuste znovu později.\n+pdfjs-editor-new-alt-text-error-close-button = Zavřít\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Stahuje se model AI pro alternativní texty ({ $downloadedSize } z { $totalSize } MB)\n+    .aria-valuetext = Stahuje se model AI pro alternativní texty ({ $downloadedSize } z { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Alternativní text byl přidán\n+pdfjs-editor-new-alt-text-added-button-label = Alternativní text byl přidán\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Chybí alternativní text\n+pdfjs-editor-new-alt-text-missing-button-label = Chybí alternativní text\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Zkontrolovat alternativní text\n+pdfjs-editor-new-alt-text-to-review-button-label = Zkontrolovat alternativní text\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Vytvořeno automaticky: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Nastavení alternativního textu obrázku\n+pdfjs-image-alt-text-settings-button-label = Nastavení alternativního textu obrázku\n+pdfjs-editor-alt-text-settings-dialog-label = Nastavení alternativního textu obrázku\n+pdfjs-editor-alt-text-settings-automatic-title = Automatický alternativní text\n+pdfjs-editor-alt-text-settings-create-model-button-label = Vytvořit alternativní text automaticky\n+pdfjs-editor-alt-text-settings-create-model-description = Navrhuje popisy, které pomohou lidem, kteří nevidí obrázek nebo když se obrázek nenačte.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Model AI pro alternativní text ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Běží lokálně na vašem zařízení, takže vaše data zůstávají v bezpečí. Vyžadováno pro automatický alternativní text.\n+pdfjs-editor-alt-text-settings-delete-model-button = Smazat\n+pdfjs-editor-alt-text-settings-download-model-button = Stáhnout\n+pdfjs-editor-alt-text-settings-downloading-model-button = Probíhá stahování...\n+pdfjs-editor-alt-text-settings-editor-title = Editor alternativního textu\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Při přidávání obrázku hned zobrazit editor alternativního textu\n+pdfjs-editor-alt-text-settings-show-dialog-description = Pomůže vám zajistit, aby všechny vaše obrázky obsahovaly alternativní text.\n+pdfjs-editor-alt-text-settings-close-button = Zavřít\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Zvýraznění odebráno\n+pdfjs-editor-undo-bar-message-freetext = Text odstraněn\n+pdfjs-editor-undo-bar-message-ink = Kresba odstraněna\n+pdfjs-editor-undo-bar-message-stamp = Obrázek odebrán\n+pdfjs-editor-undo-bar-message-signature = Podpis odebrán\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } anotace odebrána\n+        [few] { $count } anotace odebrány\n+        [many] { $count } anotací odebráno\n+       *[other] { $count } anotací odebráno\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Zpět\n+pdfjs-editor-undo-bar-undo-button-label = Zpět\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Zavřít\n+pdfjs-editor-undo-bar-close-button-label = Zavřít\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Tento způsob umožňuje uživateli vytvořit podpis, který se přidá do dokumentu PDF. Uživatel může upravit jméno (které slouží zároveň jako alternativní text) a podpis uložit pro pozdější použití.\n+pdfjs-editor-add-signature-dialog-title = Přidat podpis\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Typ\n+    .title = Typ\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Kreslit\n+    .title = Kreslit\n+pdfjs-editor-add-signature-image-button = Obrázek\n+    .title = Obrázek\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Zadejte svůj podpis\n+    .placeholder = Zadejte svůj podpis\n+pdfjs-editor-add-signature-draw-placeholder = Nakreslete svůj podpis\n+pdfjs-editor-add-signature-draw-thickness-range-label = Tloušťka\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Tloušťka kresby: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Pro nahrání přetáhněte soubor sem\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Nebo vyberte soubory s obrázky\n+       *[other] Nebo vyberte soubory s obrázky\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Popis (alternativní text)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Popis (alternativní text)\n+pdfjs-editor-add-signature-description-default-when-drawing = Podpis\n+pdfjs-editor-add-signature-clear-button-label = Vymazání podpisu\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Vymazání podpisu\n+pdfjs-editor-add-signature-save-checkbox = Uložit podpis\n+pdfjs-editor-add-signature-save-warning-message = Dosáhli jste limitu 5 uložených podpisů. Odstraňte jeden a uložte další.\n+pdfjs-editor-add-signature-image-upload-error-title = Obrázek se nepodařilo nahrát\n+pdfjs-editor-add-signature-image-upload-error-description = Zkontrolujte připojení k síti nebo zkuste jiný obrázek.\n+pdfjs-editor-add-signature-error-close-button = Zavřít\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Zrušit\n+pdfjs-editor-add-signature-add-button = Přidat\n+pdfjs-editor-edit-signature-update-button = Aktualizovat\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Odebrat uložený podpis\n+pdfjs-editor-delete-signature-button-label1 = Odebrat uložený podpis\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Upravit popis\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Upravit popis\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fcy\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fcy\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fcy\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fcy\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Tudalen Gyfredol (Gweld URL o'r Dudalen Gyfredol)\n pdfjs-bookmark-button-label = Tudalen Gyfredol\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Agor yn yr ap\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Agor yn yr ap\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = Enw ffeil:\n pdfjs-document-properties-file-size = Maint ffeil:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } beit)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } beit)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } beit)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Dyddiad Creu:\n pdfjs-document-properties-modification-date = Dyddiad Addasu:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -289,6 +294,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [Anodiad { $type } ]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -312,12 +320,29 @@\n pdfjs-editor-highlight-button =\n     .title = Amlygu\n pdfjs-editor-highlight-button-label = Amlygu\n-pdfjs-highlight-floating-button =\n-    .title = Amlygu\n pdfjs-highlight-floating-button1 =\n     .title = Amlygu\n     .aria-label = Amlygu\n pdfjs-highlight-floating-button-label = Amlygu\n+pdfjs-editor-signature-button =\n+    .title = Ychwanegu llofnod\n+pdfjs-editor-signature-button-label = Ychwanegu llofnod\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Golygydd amlygu\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Golygydd lluniadu\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Golygydd llofnod: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Golygydd delweddau\n \n ## Remove button for the various kind of editor.\n \n@@ -329,6 +354,8 @@\n     .title = Dileu delwedd\n pdfjs-editor-remove-highlight-button =\n     .title = Tynnu amlygiad\n+pdfjs-editor-remove-signature-button =\n+    .title = Dileu llofnod\n \n ##\n \n@@ -345,6 +372,20 @@\n pdfjs-editor-free-highlight-thickness-input = Trwch\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Newid trwch wrth amlygu eitemau heblaw testun\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Rheolyddion llofnodion a llofnodion wedi'u cadw\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Ychwanegu llofnod newydd\n+pdfjs-editor-signature-add-signature-button-label = Ychwanegu llofnod newydd\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Llofnod wedi'i gadw: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Golygydd Testun\n+    .default-content = Cychwyn teipio…\n pdfjs-free-text =\n     .aria-label = Golygydd Testun\n pdfjs-free-text-default-content = Cychwyn teipio…\n@@ -355,8 +396,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Testun amgen (alt)\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Golygu testun amgen\n pdfjs-editor-alt-text-edit-button-label = Golygu testun amgen\n pdfjs-editor-alt-text-dialog-label = Dewisiadau\n pdfjs-editor-alt-text-dialog-description = Mae testun amgen (testun alt) yn helpu pan na all pobl weld y ddelwedd neu pan nad yw'n llwytho.\n@@ -370,6 +412,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Er enghraifft, “Mae dyn ifanc yn eistedd wrth fwrdd i fwyta pryd bwyd”\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Testun amgen (alt)\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -382,6 +427,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Canol gwaelod — newid maint\n pdfjs-editor-resizer-label-bottom-left = Y gornel chwith isaf — newid maint\n pdfjs-editor-resizer-label-middle-left = Chwith canol — newid maint\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Y gornel chwith uchaf — newid maint\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Canol uchaf - newid maint\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Y gornel dde uchaf - newid maint\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = De canol - newid maint\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Y gornel dde isaf — newid maint\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Canol gwaelod — newid maint\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Y gornel chwith isaf — newid maint\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Chwith canol — newid maint\n \n ## Color picker\n \n@@ -408,3 +469,159 @@\n pdfjs-editor-highlight-show-all-button-label = Dangos y cyfan\n pdfjs-editor-highlight-show-all-button =\n     .title = Dangos y cyfan\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Golygu testun amgen (disgrifiad o ddelwedd)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Ychwanegwch destun amgen (disgrifiad delwedd)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Ysgrifennwch eich disgrifiad yma…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Disgrifiad byr ar gyfer pobl sydd ddim yn gallu gweld y ddelwedd neu pan nad yw'r ddelwedd yn llwytho.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Cafodd y testun amgen hwn ei greu'n awtomatig a gall fod yn anghywir.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Rhagor\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Creu testun amgen yn awtomatig\n+pdfjs-editor-new-alt-text-not-now-button = Nid nawr\n+pdfjs-editor-new-alt-text-error-title = Methu â chreu testun amgen yn awtomatig\n+pdfjs-editor-new-alt-text-error-description = Ysgrifennwch eich testun amgen eich hun neu ceisiwch eto yn nes ymlaen.\n+pdfjs-editor-new-alt-text-error-close-button = Cau\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Wrthi'n llwytho i lawr model AI testun amgen ( { $downloadedSize } o { $totalSize } MB)\n+    .aria-valuetext = Wrthi'n llwytho i lawr model AI testun amgen ( { $downloadedSize } o { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Ychwanegwyd testun amgen\n+pdfjs-editor-new-alt-text-added-button-label = Ychwanegwyd testun amgen\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Testun amgen coll\n+pdfjs-editor-new-alt-text-missing-button-label = Testun amgen coll\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Adolygu'r testun amgen\n+pdfjs-editor-new-alt-text-to-review-button-label = Adolygu'r testun amgen\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Crëwyd yn awtomatig: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Gosodiadau testun amgen delwedd\n+pdfjs-image-alt-text-settings-button-label = Gosodiadau testun amgen delwedd\n+pdfjs-editor-alt-text-settings-dialog-label = Gosodiadau testun amgen delwedd\n+pdfjs-editor-alt-text-settings-automatic-title = Testun amgen awtomatig\n+pdfjs-editor-alt-text-settings-create-model-button-label = Creu testun amgen yn awtomatig\n+pdfjs-editor-alt-text-settings-create-model-description = Yn awgrymu disgrifiadau i helpu pobl sydd ddim yn gallu gweld y ddelwedd neu pan nad yw'r ddelwedd yn llwytho.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Model AI testun amgen ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Yn rhedeg yn lleol ar eich dyfais fel bod eich data'n aros yn breifat. Yn ofynnol ar gyfer testun amgen awtomatig.\n+pdfjs-editor-alt-text-settings-delete-model-button = Dileu\n+pdfjs-editor-alt-text-settings-download-model-button = Llwytho i Lawr\n+pdfjs-editor-alt-text-settings-downloading-model-button = Wrthi'n llwytho i lawr…\n+pdfjs-editor-alt-text-settings-editor-title = Golygydd testun amgen\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Dangoswch y golygydd testun amgen yn syth wrth ychwanegu delwedd\n+pdfjs-editor-alt-text-settings-show-dialog-description = Yn eich helpu i wneud yn siŵr bod gan eich holl ddelweddau destun amgen.\n+pdfjs-editor-alt-text-settings-close-button = Cau\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Tynnwyd yr amlygu\n+pdfjs-editor-undo-bar-message-freetext = Tynnwyd y testun\n+pdfjs-editor-undo-bar-message-ink = Tynnwyd y lluniad\n+pdfjs-editor-undo-bar-message-stamp = Tynnwyd y ddelwedd\n+pdfjs-editor-undo-bar-message-signature = Llofnod wedi'i dynnu\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [zero] { $count } anodiad wedi'u tynnu\n+        [one] { $count } anodiad wedi'i dynnu\n+        [two] { $count } anodiad wedi'u tynnu\n+        [few] { $count } anodiad wedi'u tynnu\n+        [many] { $count } anodiad wedi'u tynnu\n+       *[other] { $count } anodiad wedi'u tynnu\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Dadwneud\n+pdfjs-editor-undo-bar-undo-button-label = Dadwneud\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Cau\n+pdfjs-editor-undo-bar-close-button-label = Cau\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Mae'r modd hwn yn caniatáu i'r defnyddiwr greu llofnod i'w ychwanegu at ddogfen PDF. Gall y defnyddiwr olygu'r enw (sydd hefyd yn gweithredu fel y testun amgen), ac yn ddewisol cadw'r llofnod i'w ddefnyddio dro ar ôl tro.\n+pdfjs-editor-add-signature-dialog-title = Ychwanegu llofnod\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Math\n+    .title = Math\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Lluniadu\n+    .title = Lluniadu\n+pdfjs-editor-add-signature-image-button = Delwedd\n+    .title = Delwedd\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Teipiwch eich llofnod\n+    .placeholder = Teipiwch eich llofnod\n+pdfjs-editor-add-signature-draw-placeholder = Lluniwch eich llofnod\n+pdfjs-editor-add-signature-draw-thickness-range-label = Trwch\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Trwch y llinell: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Llusgwch ffeil yma i'w llwytho\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Neu ddewis ffeiliau delwedd\n+       *[other] Neu bori ffeiliau delwedd\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Disgrifiad (testun amgen)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Disgrifiad (testun amgen)\n+pdfjs-editor-add-signature-description-default-when-drawing = Llofnod\n+pdfjs-editor-add-signature-clear-button-label = Diddymu llofnod\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Diddymu llofnod\n+pdfjs-editor-add-signature-save-checkbox = Cadw llofnod\n+pdfjs-editor-add-signature-save-warning-message = Rydych chi wedi cyrraedd y terfyn o 5 llofnod sydd wedi'u cadw. Tynnwch un i gadw rhagor\n+pdfjs-editor-add-signature-image-upload-error-title = Methu llwytho'r ddelwedd.\n+pdfjs-editor-add-signature-image-upload-error-description = Gwiriwch eich cysylltiad rhwydwaith neu rhowch gynnig ar ddelwedd arall.\n+pdfjs-editor-add-signature-error-close-button = Cau\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Diddymu\n+pdfjs-editor-add-signature-add-button = Ychwanegu\n+pdfjs-editor-edit-signature-update-button = Diweddaru\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Tynnu llofnod sydd wedi'i gadw\n+pdfjs-editor-delete-signature-button-label1 = Tynnwch y llofnod sydd wedi'i gadw\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Golygu disgrifiad\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Golygu disgrifiad\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fda\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fda\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fda\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fda\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Aktuel side (vis URL fra den aktuelle side)\n pdfjs-bookmark-button-label = Aktuel side\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Åbn i app\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Åbn i app\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = Filnavn:\n pdfjs-document-properties-file-size = Filstørrelse:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bytes)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Oprettet:\n pdfjs-document-properties-modification-date = Redigeret:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -179,7 +184,7 @@\n     .title = Slå sidepanel til eller fra (dokumentet indeholder disposition\u002Fvedhæftede filer\u002Flag)\n pdfjs-toggle-sidebar-button-label = Slå sidepanel til eller fra\n pdfjs-document-outline-button =\n-    .title = Vis dokumentets disposition (dobbeltklik for at vise\u002Fskjule alle elementer)\n+    .title = Vis dokumentets disposition (dobbeltklik for at udvide\u002Fsammenfolde alle elementer)\n pdfjs-document-outline-button-label = Dokument-disposition\n pdfjs-attachments-button =\n     .title = Vis vedhæftede filer\n@@ -281,6 +286,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type }kommentar]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -304,12 +312,29 @@\n pdfjs-editor-highlight-button =\n     .title = Fremhæv\n pdfjs-editor-highlight-button-label = Fremhæv\n-pdfjs-highlight-floating-button =\n-    .title = Fremhæv\n pdfjs-highlight-floating-button1 =\n     .title = Fremhæv\n     .aria-label = Fremhæv\n pdfjs-highlight-floating-button-label = Fremhæv\n+pdfjs-editor-signature-button =\n+    .title = Tilføj underskrift\n+pdfjs-editor-signature-button-label = Tilføj underskrift\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Redigering af fremhævning\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Redigering af tegninger\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Redigering af signatur: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Redigering af billeder\n \n ## Remove button for the various kind of editor.\n \n@@ -321,6 +346,8 @@\n     .title = Fjern billede\n pdfjs-editor-remove-highlight-button =\n     .title = Fjern fremhævning\n+pdfjs-editor-remove-signature-button =\n+    .title = Fjern underskrift\n \n ##\n \n@@ -337,6 +364,20 @@\n pdfjs-editor-free-highlight-thickness-input = Tykkelse\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Ændr tykkelse, når andre elementer end tekst fremhæves\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Indstillinger for underskrifter og gemte underskrifter\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Tilføj ny underskrift\n+pdfjs-editor-signature-add-signature-button-label = Tilføj ny underskrift\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Gemt underskrift: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Teksteditor\n+    .default-content = Begynd at skrive…\n pdfjs-free-text =\n     .aria-label = Teksteditor\n pdfjs-free-text-default-content = Begynd at skrive…\n@@ -347,8 +388,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Alternativ tekst\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Rediger alternativ tekst\n pdfjs-editor-alt-text-edit-button-label = Rediger alternativ tekst\n pdfjs-editor-alt-text-dialog-label = Vælg en indstilling\n pdfjs-editor-alt-text-dialog-description = Alternativ tekst hjælper folk, som ikke kan se billedet eller når det ikke indlæses.\n@@ -362,6 +404,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = For eksempel: \"En ung mand sætter sig ved et bord for at spise et måltid mad\"\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Alternativ tekst\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -374,6 +419,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Nederst i midten - tilpas størrelse\n pdfjs-editor-resizer-label-bottom-left = Nederste venstre hjørne - tilpas størrelse\n pdfjs-editor-resizer-label-middle-left = Midten til venstre — tilpas størrelse\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Øverste venstre hjørne — tilpas størrelse\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Øverste i midten — tilpas størrelse\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Øverste højre hjørne — tilpas størrelse\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Midten til højre — tilpas størrelse\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Nederste højre hjørne - tilpas størrelse\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Nederst i midten - tilpas størrelse\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Nederste venstre hjørne - tilpas størrelse\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Midten til venstre — tilpas størrelse\n \n ## Color picker\n \n@@ -400,3 +461,155 @@\n pdfjs-editor-highlight-show-all-button-label = Vis alle\n pdfjs-editor-highlight-show-all-button =\n     .title = Vis alle\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Rediger alternativ tekst (billedbeskrivelse)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Tilføj alternativ tekst (billedbeskrivelse)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Skriv din beskrivelse her...\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Kort beskrivelse til personer, der ikke kan se billedet, eller når billedet ikke indlæses.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Denne alternative tekst blev oprettet automatisk og kan være upræcis.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Læs mere\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Opret alternativ tekst automatisk\n+pdfjs-editor-new-alt-text-not-now-button = Ikke nu\n+pdfjs-editor-new-alt-text-error-title = Kunne ikke oprette alternativ tekst automatisk\n+pdfjs-editor-new-alt-text-error-description = Skriv din egen alternative tekst, eller prøv igen senere.\n+pdfjs-editor-new-alt-text-error-close-button = Luk\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Henter alternativ tekst AI-model ({ $downloadedSize } af { $totalSize } MB)\n+    .aria-valuetext = Henter alternativ tekst AI-model ({ $downloadedSize } af { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Alternativ tekst tilføjet\n+pdfjs-editor-new-alt-text-added-button-label = Alternativ tekst tilføjet\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Mangler alternativ tekst\n+pdfjs-editor-new-alt-text-missing-button-label = Mangler alternativ tekst\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Gennemgå alternativ tekst\n+pdfjs-editor-new-alt-text-to-review-button-label = Gennemgå alternativ tekst\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Oprettet automatisk: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Indstillinger for alternativ tekst til billeder\n+pdfjs-image-alt-text-settings-button-label = Indstillinger for alternativ tekst til billeder\n+pdfjs-editor-alt-text-settings-dialog-label = Indstillinger for alternativ tekst til billeder\n+pdfjs-editor-alt-text-settings-automatic-title = Automatisk alternativ tekst\n+pdfjs-editor-alt-text-settings-create-model-button-label = Opret alternativ tekst automatisk\n+pdfjs-editor-alt-text-settings-create-model-description = Foreslår beskrivelser for at hjælpe folk, der ikke kan se billedet, eller når billedet ikke indlæses.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = AI-model til at oprette alternative tekster ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Kører lokalt på din enhed, så dine data forbliver private. Påkrævet for at anvende automatisk alternativ tekst.\n+pdfjs-editor-alt-text-settings-delete-model-button = Slet\n+pdfjs-editor-alt-text-settings-download-model-button = Hent\n+pdfjs-editor-alt-text-settings-downloading-model-button = Henter…\n+pdfjs-editor-alt-text-settings-editor-title = Redigering af alternativ tekst\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Vis redigering af alternativ tekst med det samme, når et billede tilføjes\n+pdfjs-editor-alt-text-settings-show-dialog-description = Hjælper dig med at sikre, at alle dine billeder har alternativ tekst.\n+pdfjs-editor-alt-text-settings-close-button = Luk\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Fremhævning fjernet\n+pdfjs-editor-undo-bar-message-freetext = Tekst fjernet\n+pdfjs-editor-undo-bar-message-ink = Tegning fjernet\n+pdfjs-editor-undo-bar-message-stamp = Billede fjernet\n+pdfjs-editor-undo-bar-message-signature = Underskrift fjernet\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } kommentar fjernet\n+       *[other] { $count } kommentarer fjernet\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Fortryd\n+pdfjs-editor-undo-bar-undo-button-label = Fortryd\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Luk\n+pdfjs-editor-undo-bar-close-button-label = Luk\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Modal-vinduet gør det muligt for brugeren at oprette en underskrift, som kan føjes til PDF-dokumenter. Brugeren kan redigere navnet (der også fungerer som alternativ tekst) og eventuelt gemme signaturen, så den kan bruges igen.\n+pdfjs-editor-add-signature-dialog-title = Tilføj en underskrift\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Indtast\n+    .title = Indtast\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Tegn\n+    .title = Tegn\n+pdfjs-editor-add-signature-image-button = Billede\n+    .title = Billede\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Indtast din underskrift\n+    .placeholder = Indtast din underskrift\n+pdfjs-editor-add-signature-draw-placeholder = Tegn din underskrift\n+pdfjs-editor-add-signature-draw-thickness-range-label = Tykkelse\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Linjetykkelse: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Træk en fil herhen for at uploade den\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Eller vælg billedfiler\n+       *[other] Eller vælg billedfiler\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Beskrivelse (alternativ tekst)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Beskrivelse (alternativ tekst)\n+pdfjs-editor-add-signature-description-default-when-drawing = Underskrift\n+pdfjs-editor-add-signature-clear-button-label = Ryd underskrift\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Ryd underskrift\n+pdfjs-editor-add-signature-save-checkbox = Gem underskrift\n+pdfjs-editor-add-signature-save-warning-message = Du har nået grænsen på 5 gemte underskrifter. Fjern en for at tilføje en ny.\n+pdfjs-editor-add-signature-image-upload-error-title = Kunne ikke uploade billede\n+pdfjs-editor-add-signature-image-upload-error-description = Kontroller din netværksforbindelse eller prøv med et andet billede.\n+pdfjs-editor-add-signature-error-close-button = Luk\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Annuller\n+pdfjs-editor-add-signature-add-button = Tilføj\n+pdfjs-editor-edit-signature-update-button = Opdater\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Fjern gemt underskrift\n+pdfjs-editor-delete-signature-button-label1 = Fjern gemt underskrift\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Rediger beskrivelse\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Rediger beskrivelse\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fde\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fde\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fde\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fde\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Aktuelle Seite (URL von aktueller Seite anzeigen)\n pdfjs-bookmark-button-label = Aktuelle Seite\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Mit App öffnen\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Mit App öffnen\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = Dateiname:\n pdfjs-document-properties-file-size = Dateigröße:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } Bytes)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } Bytes)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } Bytes)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Erstelldatum:\n pdfjs-document-properties-modification-date = Bearbeitungsdatum:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date } { $time }\n@@ -281,6 +286,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [Anlage: { $type }]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -304,12 +312,29 @@\n pdfjs-editor-highlight-button =\n     .title = Hervorheben\n pdfjs-editor-highlight-button-label = Hervorheben\n-pdfjs-highlight-floating-button =\n-    .title = Hervorheben\n pdfjs-highlight-floating-button1 =\n     .title = Hervorheben\n     .aria-label = Hervorheben\n pdfjs-highlight-floating-button-label = Hervorheben\n+pdfjs-editor-signature-button =\n+    .title = Unterschrift hinzufügen\n+pdfjs-editor-signature-button-label = Unterschrift hinzufügen\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Hervorhebungs-Editor\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Zeichnungseditor\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Unterschrifts-Editor: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Grafik-Editor\n \n ## Remove button for the various kind of editor.\n \n@@ -321,6 +346,8 @@\n     .title = Grafik entfernen\n pdfjs-editor-remove-highlight-button =\n     .title = Hervorhebung entfernen\n+pdfjs-editor-remove-signature-button =\n+    .title = Unterschrift entfernen\n \n ##\n \n@@ -337,6 +364,20 @@\n pdfjs-editor-free-highlight-thickness-input = Linienstärke\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Linienstärke beim Hervorheben anderer Elemente als Text ändern\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Signaturkontrollen und gespeicherte Signaturen\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Neue Unterschrift hinzufügen\n+pdfjs-editor-signature-add-signature-button-label = Neue Unterschrift hinzufügen\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Gespeicherte Signatur: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Texteditor\n+    .default-content = Schreiben beginnen…\n pdfjs-free-text =\n     .aria-label = Texteditor\n pdfjs-free-text-default-content = Schreiben beginnen…\n@@ -347,8 +388,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Alternativ-Text\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Alternativ-Text bearbeiten\n pdfjs-editor-alt-text-edit-button-label = Alternativ-Text bearbeiten\n pdfjs-editor-alt-text-dialog-label = Option wählen\n pdfjs-editor-alt-text-dialog-description = Alt-Text (Alternativtext) hilft, wenn Personen die Grafik nicht sehen können oder wenn sie nicht geladen wird.\n@@ -362,6 +404,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Zum Beispiel: \"Ein junger Mann setzt sich an einen Tisch, um zu essen.\"\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Alternativ-Text\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -374,6 +419,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Unten mittig - Größe ändern\n pdfjs-editor-resizer-label-bottom-left = Linke untere Ecke - Größe ändern\n pdfjs-editor-resizer-label-middle-left = Mitte links - Größe ändern\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Linke obere Ecke - Größe ändern\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Oben mittig - Größe ändern\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Rechts oben - Größe ändern\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Mitte rechts - Größe ändern\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Rechte untere Ecke - Größe ändern\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Unten mittig - Größe ändern\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Linke untere Ecke - Größe ändern\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Mitte links - Größe ändern\n \n ## Color picker\n \n@@ -400,3 +461,155 @@\n pdfjs-editor-highlight-show-all-button-label = Alle anzeigen\n pdfjs-editor-highlight-show-all-button =\n     .title = Alle anzeigen\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Alternativ-Text (Grafikbeschreibung) bearbeiten\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Alternativ-Text (Grafikbeschreibung) hinzufügen\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Schreiben Sie Ihre Beschreibung hier…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Kurze Beschreibung für Personen, die die Grafik nicht sehen können, oder wenn die Grafik nicht geladen wird.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Dieser Alternativ-Text wurde automatisch erstellt und könnte ungenau sein.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Weitere Informationen\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Alternativ-Text automatisch erstellen\n+pdfjs-editor-new-alt-text-not-now-button = Nicht jetzt\n+pdfjs-editor-new-alt-text-error-title = Alternativ-Text konnte nicht automatisch erstellt werden\n+pdfjs-editor-new-alt-text-error-description = Bitte schreiben Sie Ihren eigenen Alternativ-Text oder versuchen Sie es später erneut.\n+pdfjs-editor-new-alt-text-error-close-button = Schließen\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Alternativ-Text-KI-Modell wird heruntergeladen ({ $downloadedSize } von { $totalSize } MB)\n+    .aria-valuetext = Alternativ-Text-KI-Modell wird heruntergeladen ({ $downloadedSize } von { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Alternativ-Text hinzugefügt\n+pdfjs-editor-new-alt-text-added-button-label = Alternativ-Text hinzugefügt\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Fehlender Alternativ-Text\n+pdfjs-editor-new-alt-text-missing-button-label = Fehlender Alternativ-Text\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Alternativ-Text überprüfen\n+pdfjs-editor-new-alt-text-to-review-button-label = Alternativ-Text überprüfen\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Automatisch erstellt: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Alternativ-Text-Einstellungen für Grafiken\n+pdfjs-image-alt-text-settings-button-label = Alternativ-Text-Einstellungen für Grafiken\n+pdfjs-editor-alt-text-settings-dialog-label = Alternativ-Text-Einstellungen für Grafiken\n+pdfjs-editor-alt-text-settings-automatic-title = Automatischer Alternativ-Text\n+pdfjs-editor-alt-text-settings-create-model-button-label = Alternativ-Text automatisch erstellen\n+pdfjs-editor-alt-text-settings-create-model-description = Schlägt Beschreibungen vor, um Personen zu helfen, die die Grafik nicht sehen können, oder wenn die Grafik nicht geladen wird.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Alternativ-Text-KI-Modell ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Wird lokal auf Ihrem Gerät ausgeführt, sodass Ihre Daten privat bleiben. Erforderlich für automatischen Alternativ-Text.\n+pdfjs-editor-alt-text-settings-delete-model-button = Löschen\n+pdfjs-editor-alt-text-settings-download-model-button = Herunterladen\n+pdfjs-editor-alt-text-settings-downloading-model-button = Wird heruntergeladen…\n+pdfjs-editor-alt-text-settings-editor-title = Alternativ-Texteditor\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Alternativ-Texteditor beim Hinzufügen einer Grafik anzeigen\n+pdfjs-editor-alt-text-settings-show-dialog-description = Hilft Ihnen, sicherzustellen, dass alle Ihre Grafiken Alternativ-Text haben.\n+pdfjs-editor-alt-text-settings-close-button = Schließen\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Hervorhebung entfernt\n+pdfjs-editor-undo-bar-message-freetext = Text entfernt\n+pdfjs-editor-undo-bar-message-ink = Zeichnung entfernt\n+pdfjs-editor-undo-bar-message-stamp = Grafik entfernt\n+pdfjs-editor-undo-bar-message-signature = Unterschrift entfernt\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } Anmerkung entfernt\n+       *[other] { $count } Anmerkungen entfernt\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Rückgängig\n+pdfjs-editor-undo-bar-undo-button-label = Rückgängig\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Schließen\n+pdfjs-editor-undo-bar-close-button-label = Schließen\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Dieses Modal ermöglicht es dem Benutzer, eine Unterschrift zu erstellen, um sie zu einem PDF-Dokument hinzuzufügen. Der Benutzer kann den Namen bearbeiten (der auch als Alt-Text dient) und optional die Unterschrift zur wiederholten Verwendung speichern.\n+pdfjs-editor-add-signature-dialog-title = Unterschrift hinzufügen\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Eintippen\n+    .title = Eintippen\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Zeichnen\n+    .title = Zeichnen\n+pdfjs-editor-add-signature-image-button = Grafik\n+    .title = Grafik\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Tippen Sie Ihre Unterschrift ein\n+    .placeholder = Tippen Sie Ihre Unterschrift ein\n+pdfjs-editor-add-signature-draw-placeholder = Ihre Unterschrift zeichnen\n+pdfjs-editor-add-signature-draw-thickness-range-label = Linienstärke\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Zeichnungsstärke: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Datei zum Hochladen hierher ziehen\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Oder Grafikdateien wählen\n+       *[other] Oder Bilddateien durchsuchen\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Beschreibung (alternativer Text)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Beschreibung (alternativer Text)\n+pdfjs-editor-add-signature-description-default-when-drawing = Unterschrift\n+pdfjs-editor-add-signature-clear-button-label = Unterschrift löschen\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Unterschrift löschen\n+pdfjs-editor-add-signature-save-checkbox = Unterschrift speichern\n+pdfjs-editor-add-signature-save-warning-message = Sie haben die Grenze von 5 gespeicherten Unterschriften erreicht. Entfernen Sie eine, um weitere zu speichern.\n+pdfjs-editor-add-signature-image-upload-error-title = Grafik konnte nicht hochgeladen werden\n+pdfjs-editor-add-signature-image-upload-error-description = Überprüfen Sie Ihre Netzwerkverbindung, oder versuchen Sie es mit einer anderen Grafik.\n+pdfjs-editor-add-signature-error-close-button = Schließen\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Abbrechen\n+pdfjs-editor-add-signature-add-button = Hinzufügen\n+pdfjs-editor-edit-signature-update-button = Aktualisieren\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Gespeicherte Signatur entfernen\n+pdfjs-editor-delete-signature-button-label1 = Gespeicherte Signatur entfernen\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Beschreibung bearbeiten\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Beschreibung bearbeiten\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fdsb\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fdsb\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fdsb\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fdsb\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Aktualny bok (URL z aktualnego boka pokazaś)\n pdfjs-bookmark-button-label = Aktualny bok\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = W nałoženju wócyniś\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = W nałoženju wócyniś\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = Mě dataje:\n pdfjs-document-properties-file-size = Wjelikosć dataje:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bajtow)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bajtow)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bajtow)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Datum napóranja:\n pdfjs-document-properties-modification-date = Datum změny:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -285,6 +290,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [Typ pśipiskow: { $type }]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -308,12 +316,29 @@\n pdfjs-editor-highlight-button =\n     .title = Wuzwignuś\n pdfjs-editor-highlight-button-label = Wuzwignuś\n-pdfjs-highlight-floating-button =\n-    .title = Wuzwignjenje\n pdfjs-highlight-floating-button1 =\n     .title = Wuzwignuś\n     .aria-label = Wuzwignuś\n pdfjs-highlight-floating-button-label = Wuzwignuś\n+pdfjs-editor-signature-button =\n+    .title = Signaturu pśidaś\n+pdfjs-editor-signature-button-label = Signaturu pśidaś\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Editor wuzwignjenja\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Kresleński editor\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Signaturowy editor: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Wobrazowy editor\n \n ## Remove button for the various kind of editor.\n \n@@ -325,6 +350,8 @@\n     .title = Wobraz wótwónoźeś\n pdfjs-editor-remove-highlight-button =\n     .title = Wuzwignjenje wótpóraś\n+pdfjs-editor-remove-signature-button =\n+    .title = Signaturu wótwónoźeś\n \n ##\n \n@@ -341,6 +368,20 @@\n pdfjs-editor-free-highlight-thickness-input = Tłustosć\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Tłustosć změniś, gaž se zapiski wuzwiguju, kótarež tekst njejsu\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Wóźeńske elementy signaturow a skłaźone signatury\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Nowu signaturu pśidaś\n+pdfjs-editor-signature-add-signature-button-label = Nowu signaturu pśidaś\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Skłaźona signatura: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Tekstowy editor\n+    .default-content = Zachopśo pisaś …\n pdfjs-free-text =\n     .aria-label = Tekstowy editor\n pdfjs-free-text-default-content = Zachopśo pisaś…\n@@ -351,8 +392,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Alternatiwny tekst\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Alternatiwny tekst wobźěłaś\n pdfjs-editor-alt-text-edit-button-label = Alternatiwny tekst wobźěłaś\n pdfjs-editor-alt-text-dialog-label = Nastajenje wubraś\n pdfjs-editor-alt-text-dialog-description = Alternatiwny tekst pomaga, gaž luźe njamógu wobraz wiźeś abo gaž se wobraz njezacytajo.\n@@ -366,6 +408,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Na pśikład, „Młody muski za blidom sejźi, aby jěź jědł“\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Alternatiwny tekst\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -378,6 +423,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Dołojce wesrjejź – wjelikosć změniś\n pdfjs-editor-resizer-label-bottom-left = Dołojce nalěwo – wjelikosć změniś\n pdfjs-editor-resizer-label-middle-left = Wesrjejź nalěwo – wjelikosć změniś\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Górjejce nalěwo – wjelikosć změniś\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Górjejce wesrjejź – wjelikosć změniś\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Górjejce napšawo – wjelikosć změniś\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Wesrjejź napšawo – wjelikosć změniś\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Dołojce napšawo – wjelikosć změniś\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Dołojce wesrjejź – wjelikosć změniś\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Dołojce nalěwo – wjelikosć změniś\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Wesrjejź nalěwo – wjelikosć změniś\n \n ## Color picker\n \n@@ -404,3 +465,157 @@\n pdfjs-editor-highlight-show-all-button-label = Wšykne pokazaś\n pdfjs-editor-highlight-show-all-button =\n     .title = Wšykne pokazaś\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Alternatiwny tekst wobźěłaś (wobrazowe wopisanje)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Alternatiwny tekst pśidaś (wobrazowe wopisanje)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Pišćo how swójo wopisanje…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Krotke wopisanje za luźe, kótarež njamóžośo wobraz wiźeś abo gaž se wobraz njezacytajo.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Toś ten alternatiwny tekst jo se awtomatiski napórał a jo snaź njedokradny.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Dalšne informacije\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Alternatiwny tekst awtomatiski napóraś\n+pdfjs-editor-new-alt-text-not-now-button = Nic něnto\n+pdfjs-editor-new-alt-text-error-title = Alternatiwny tekst njedajo se awtomatiski napóraś\n+pdfjs-editor-new-alt-text-error-description = Pšosym pišćo swój alternatiwny tekst abo wopytajśo pózdźej hyšći raz.\n+pdfjs-editor-new-alt-text-error-close-button = Zacyniś\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Model KI za alternatiwny tekst se ześěgujo ({ $downloadedSize } z { $totalSize } MB)\n+    .aria-valuetext = Model KI za alternatiwny tekst se ześěgujo ({ $downloadedSize } z { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Alternatiwny tekst jo se pśidał\n+pdfjs-editor-new-alt-text-added-button-label = Alternatiwny tekst jo se pśidał\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Alternatiwny tekst felujo\n+pdfjs-editor-new-alt-text-missing-button-label = Alternatiwny tekst felujo\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Alternatiwny tekst pśeglědowaś\n+pdfjs-editor-new-alt-text-to-review-button-label = Alternatiwny tekst pśeglědowaś\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Awtomatiski napórany: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Nastajenja alternatiwnego wobrazowego teksta\n+pdfjs-image-alt-text-settings-button-label = Nastajenja alternatiwnego wobrazowego teksta\n+pdfjs-editor-alt-text-settings-dialog-label = Nastajenja alternatiwnego wobrazowego teksta\n+pdfjs-editor-alt-text-settings-automatic-title = Awtomatiski alternatiwny tekst\n+pdfjs-editor-alt-text-settings-create-model-button-label = Alternatiwny tekst awtomatiski napóraś\n+pdfjs-editor-alt-text-settings-create-model-description = Naraźujo wopisanja, aby pomagał ludam, kótarež njamóžośo wobraz wiźeś abo gaž se wobraz njezacytajo.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Model KI alternatiwnego teksta ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Běžy lokalnje na wašom rěźe, aby waše daty priwatne wóstali. Za awtomatiski alternatiwny tekst trjebny.\n+pdfjs-editor-alt-text-settings-delete-model-button = Lašowaś\n+pdfjs-editor-alt-text-settings-download-model-button = Ześěgnuś\n+pdfjs-editor-alt-text-settings-downloading-model-button = Ześěgujo se…\n+pdfjs-editor-alt-text-settings-editor-title = Editor za alternatiwny tekst\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Editor alternatiwnego teksta ned pokazaś, gaž se wobraz pśidawa\n+pdfjs-editor-alt-text-settings-show-dialog-description = Pomaga, wam wšym swójim wobrazam alternatiwny tekst pśidaś.\n+pdfjs-editor-alt-text-settings-close-button = Zacyniś\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Wótwónoźone wuzwignuś\n+pdfjs-editor-undo-bar-message-freetext = Tekst jo se wótwónoźeł\n+pdfjs-editor-undo-bar-message-ink = Kreslanka jo se wótwónoźeła\n+pdfjs-editor-undo-bar-message-stamp = Wobraz jo se wótwónoźeł\n+pdfjs-editor-undo-bar-message-signature = Signatura jo se wótwónoźeła\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } pśipisk jo se wótwónoźeł\n+        [two] { $count } pśipiska stej se wótwónoźełej\n+        [few] { $count } pśipiski su se wótwónoźeli\n+       *[other] { $count } pśipiskow jo se wótwónoźeło\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Anulěrowaś\n+pdfjs-editor-undo-bar-undo-button-label = Anulěrowaś\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Zacyniś\n+pdfjs-editor-undo-bar-close-button-label = Zacyniś\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Toś ten modalny dialog wužywarjeju zmóžnja, signaturu napóraś, aby PDF-dokument pśidał. Wužywaŕ móžo mě wobźěłaś (kótarež teke ako alternatiwny tekst słužy) a pó žycenju signaturu za wóspjetne wužywanje składowaś.\n+pdfjs-editor-add-signature-dialog-title = Signaturu pśidaś\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Typ\n+    .title = Typ\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Kresliś\n+    .title = Kresliś\n+pdfjs-editor-add-signature-image-button = Wobraz\n+    .title = Wobraz\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Zapódajśo swóju signaturu\n+    .placeholder = Zapódajśo swóju signaturu\n+pdfjs-editor-add-signature-draw-placeholder = Kresliśo swóju signaturu\n+pdfjs-editor-add-signature-draw-thickness-range-label = Tłustosć\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Tłustosć kreslanki: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Śěgniśo dataju sem, aby ju nagrał\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Abo wubjeŕśo wobrazowe dataje\n+       *[other] Abo pśepytajśo wobrazowe dataje\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Wopisanje (alternatiwny tekst)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Wopisanje (alternatiwny tekst)\n+pdfjs-editor-add-signature-description-default-when-drawing = Signatura\n+pdfjs-editor-add-signature-clear-button-label = Signaturu lašowaś\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Signaturu lašowaś\n+pdfjs-editor-add-signature-save-checkbox = Signaturu składowaś\n+pdfjs-editor-add-signature-save-warning-message = Sćo dojśpił limit 5 skłaźonych signaturow. Wótwónoźćo jadnu, aby wěcej składował.\n+pdfjs-editor-add-signature-image-upload-error-title = Wobraz njedajo se nagraś\n+pdfjs-editor-add-signature-image-upload-error-description = Pśeglědajśo swój seśowy zwisk abo wopytajśo drugi wobraz.\n+pdfjs-editor-add-signature-error-close-button = Zacyniś\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Pśetergnuś\n+pdfjs-editor-add-signature-add-button = Pśidaś\n+pdfjs-editor-edit-signature-update-button = Aktualizěrowaś\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Skłaźonu signaturu wótwónoźeś\n+pdfjs-editor-delete-signature-button-label1 = Skłaźonu signaturu wótwónoźeś\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Wopisanje wobźěłaś\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Wopisanje wobźěłaś\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fel\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fel\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fel\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fel\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Τρέχουσα σελίδα (Προβολή URL από τρέχουσα σελίδα)\n pdfjs-bookmark-button-label = Τρέχουσα σελίδα\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Άνοιγμα σε εφαρμογή\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Άνοιγμα σε εφαρμογή\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = Όνομα αρχείου:\n pdfjs-document-properties-file-size = Μέγεθος αρχείου:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bytes)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Ημερομηνία δημιουργίας:\n pdfjs-document-properties-modification-date = Ημερομηνία τροποποίησης:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -265,7 +270,7 @@\n pdfjs-loading-error = Προέκυψε σφάλμα κατά τη φόρτωση του PDF.\n pdfjs-invalid-file-error = Μη έγκυρο ή κατεστραμμένο αρχείο PDF.\n pdfjs-missing-file-error = Λείπει αρχείο PDF.\n-pdfjs-unexpected-response-error = Μη αναμενόμενη απόκριση από το διακομιστή.\n+pdfjs-unexpected-response-error = Απρόσμενη απάντηση διακομιστή.\n pdfjs-rendering-error = Προέκυψε σφάλμα κατά την εμφάνιση της σελίδας.\n \n ## Annotations\n@@ -281,11 +286,14 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [Σχόλιο «{ $type }»]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n pdfjs-password-label = Εισαγάγετε τον κωδικό πρόσβασης για να ανοίξετε αυτό το αρχείο PDF.\n-pdfjs-password-invalid = Μη έγκυρος κωδικός πρόσβασης. Παρακαλώ δοκιμάστε ξανά.\n+pdfjs-password-invalid = Μη έγκυρος κωδικός πρόσβασης. Δοκιμάστε ξανά.\n pdfjs-password-ok-button = OK\n pdfjs-password-cancel-button = Ακύρωση\n pdfjs-web-fonts-disabled = Οι γραμματοσειρές ιστού είναι ανενεργές: δεν είναι δυνατή η χρήση των ενσωματωμένων γραμματοσειρών PDF.\n@@ -304,12 +312,29 @@\n pdfjs-editor-highlight-button =\n     .title = Επισήμανση\n pdfjs-editor-highlight-button-label = Επισήμανση\n-pdfjs-highlight-floating-button =\n-    .title = Επισήμανση\n pdfjs-highlight-floating-button1 =\n     .title = Επισήμανση\n     .aria-label = Επισήμανση\n pdfjs-highlight-floating-button-label = Επισήμανση\n+pdfjs-editor-signature-button =\n+    .title = Προσθήκη υπογραφής\n+pdfjs-editor-signature-button-label = Προσθήκη υπογραφής\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Επεξεργασία επισήμανσης\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Επεξεργασία σχεδίου\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Επεξεργασία υπογραφής: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Επεξεργασία εικόνας\n \n ## Remove button for the various kind of editor.\n \n@@ -321,6 +346,8 @@\n     .title = Αφαίρεση εικόνας\n pdfjs-editor-remove-highlight-button =\n     .title = Αφαίρεση επισήμανσης\n+pdfjs-editor-remove-signature-button =\n+    .title = Αφαίρεση υπογραφής\n \n ##\n \n@@ -337,6 +364,20 @@\n pdfjs-editor-free-highlight-thickness-input = Πάχος\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Αλλαγή πάχους κατά την επισήμανση στοιχείων εκτός κειμένου\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Στοιχεία ελέγχου υπογραφής και αποθηκευμένες υπογραφές\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Προσθήκη νέας υπογραφής\n+pdfjs-editor-signature-add-signature-button-label = Προσθήκη νέας υπογραφής\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Αποθηκευμένη υπογραφή: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Επεξεργασία κειμένου\n+    .default-content = Ξεκινήστε να πληκτρολογείτε…\n pdfjs-free-text =\n     .aria-label = Επεξεργασία κειμένου\n pdfjs-free-text-default-content = Ξεκινήστε να πληκτρολογείτε…\n@@ -347,8 +388,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Εναλλακτικό κείμενο\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Επεξεργασία εναλλακτικού κειμένου\n pdfjs-editor-alt-text-edit-button-label = Επεξεργασία εναλλακτικού κειμένου\n pdfjs-editor-alt-text-dialog-label = Διαλέξτε μια επιλογή\n pdfjs-editor-alt-text-dialog-description = Το εναλλακτικό κείμενο είναι χρήσιμο όταν οι άνθρωποι δεν μπορούν να δουν την εικόνα ή όταν αυτή δεν φορτώνεται.\n@@ -362,6 +404,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Για παράδειγμα, «Ένας νεαρός άνδρας κάθεται σε ένα τραπέζι για να φάει ένα γεύμα»\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Εναλλακτικό κείμενο\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -374,6 +419,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Μέσο κάτω πλευράς — αλλαγή μεγέθους\n pdfjs-editor-resizer-label-bottom-left = Κάτω αριστερή γωνία — αλλαγή μεγέθους\n pdfjs-editor-resizer-label-middle-left = Μέσο αριστερής πλευράς — αλλαγή μεγέθους\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Επάνω αριστερή γωνία — αλλαγή μεγέθους\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Μέσο επάνω πλευράς — αλλαγή μεγέθους\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Επάνω δεξιά γωνία — αλλαγή μεγέθους\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Μέσο δεξιάς πλευράς — αλλαγή μεγέθους\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Κάτω δεξιά γωνία — αλλαγή μεγέθους\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Μέσο κάτω πλευράς — αλλαγή μεγέθους\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Κάτω αριστερή γωνία — αλλαγή μεγέθους\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Μέσο αριστερής πλευράς — αλλαγή μεγέθους\n \n ## Color picker\n \n@@ -400,3 +461,155 @@\n pdfjs-editor-highlight-show-all-button-label = Εμφάνιση όλων\n pdfjs-editor-highlight-show-all-button =\n     .title = Εμφάνιση όλων\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Επεξεργασία εναλλακτικού κειμένου (περιγραφή εικόνας)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Προσθήκη εναλλακτικού κειμένου (περιγραφή εικόνας)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Γράψτε την περιγραφή σας εδώ…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Σύντομη περιγραφή για άτομα που δεν μπορούν να δουν την εικόνα ή όταν η εικόνα δεν φορτώνεται.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Αυτό το εναλλακτικό κείμενο δημιουργήθηκε αυτόματα και ενδέχεται να είναι ανακριβές.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Μάθετε περισσότερα\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Αυτόματη δημιουργία εναλλακτικού κειμένου\n+pdfjs-editor-new-alt-text-not-now-button = Όχι τώρα\n+pdfjs-editor-new-alt-text-error-title = Δεν ήταν δυνατή η αυτόματη δημιουργία εναλλακτικού κειμένου\n+pdfjs-editor-new-alt-text-error-description = Γράψτε το δικό σας εναλλακτικό κείμενο ή δοκιμάστε ξανά αργότερα.\n+pdfjs-editor-new-alt-text-error-close-button = Κλείσιμο\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Λήψη μοντέλου ΤΝ εναλλακτικού κειμένου ({ $downloadedSize } από { $totalSize } MB)\n+    .aria-valuetext = Λήψη μοντέλου ΤΝ εναλλακτικού κειμένου ({ $downloadedSize } από { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Προστέθηκε εναλλακτικό κείμενο\n+pdfjs-editor-new-alt-text-added-button-label = Προστέθηκε εναλλακτικό κείμενο\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Απουσία εναλλακτικού κειμένου\n+pdfjs-editor-new-alt-text-missing-button-label = Απουσία εναλλακτικού κειμένου\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Έλεγχος εναλλακτικού κειμένου\n+pdfjs-editor-new-alt-text-to-review-button-label = Έλεγχος εναλλακτικού κειμένου\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Αυτόματη δημιουργία: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Ρυθμίσεις εναλλακτικού κειμένου εικόνας\n+pdfjs-image-alt-text-settings-button-label = Ρυθμίσεις εναλλακτικού κειμένου εικόνας\n+pdfjs-editor-alt-text-settings-dialog-label = Ρυθμίσεις εναλλακτικού κειμένου εικόνας\n+pdfjs-editor-alt-text-settings-automatic-title = Αυτόματο εναλλακτικό κείμενο\n+pdfjs-editor-alt-text-settings-create-model-button-label = Αυτόματη δημιουργία εναλλακτικού κειμένου\n+pdfjs-editor-alt-text-settings-create-model-description = Προτείνει περιγραφές για άτομα που δεν μπορούν να δουν την εικόνα ή όταν η εικόνα δεν φορτώνεται.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Μοντέλο ΤΝ εναλλακτικού κειμένου ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Εκτελείται τοπικά στη συσκευή σας, ώστε τα δεδομένα σας να παραμένουν ιδιωτικά. Απαιτείται για τη δημιουργία του αυτόματου εναλλακτικού κειμένου.\n+pdfjs-editor-alt-text-settings-delete-model-button = Διαγραφή\n+pdfjs-editor-alt-text-settings-download-model-button = Λήψη\n+pdfjs-editor-alt-text-settings-downloading-model-button = Λήψη…\n+pdfjs-editor-alt-text-settings-editor-title = Επεξεργασία εναλλακτικού κειμένου\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Άμεση εμφάνιση της επεξεργασίας εναλλακτικού κειμένου κατά την προσθήκη εικόνας\n+pdfjs-editor-alt-text-settings-show-dialog-description = Σας βοηθά να βεβαιωθείτε ότι όλες οι εικόνες σας έχουν εναλλακτικό κείμενο.\n+pdfjs-editor-alt-text-settings-close-button = Κλείσιμο\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Η επισήμανση αφαιρέθηκε\n+pdfjs-editor-undo-bar-message-freetext = Το κείμενο αφαιρέθηκε\n+pdfjs-editor-undo-bar-message-ink = Το σχέδιο αφαιρέθηκε\n+pdfjs-editor-undo-bar-message-stamp = Η εικόνα αφαιρέθηκε\n+pdfjs-editor-undo-bar-message-signature = Η υπογραφή αφαιρέθηκε\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] Αφαιρέθηκε { $count } σχολιασμός\n+       *[other] Αφαιρέθηκαν { $count } σχολιασμοί\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Αναίρεση\n+pdfjs-editor-undo-bar-undo-button-label = Αναίρεση\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Κλείσιμο\n+pdfjs-editor-undo-bar-close-button-label = Κλείσιμο\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Αυτό το παράθυρο διαλόγου επιτρέπει στον χρήστη να δημιουργήσει μια υπογραφή για να την προσθέσει σε ένα έγγραφο PDF. Ο χρήστης μπορεί να επεξεργαστεί το όνομα (το οποίο χρησιμεύει και ως εναλλακτικό κείμενο) και, προαιρετικά, να αποθηκεύσει την υπογραφή για επαναλαμβανόμενη χρήση.\n+pdfjs-editor-add-signature-dialog-title = Προσθήκη υπογραφής\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Πληκτρολόγηση\n+    .title = Πληκτρολόγηση\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Σχέδιο\n+    .title = Σχέδιο\n+pdfjs-editor-add-signature-image-button = Εικόνα\n+    .title = Εικόνα\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Πληκτρολογήστε την υπογραφή σας\n+    .placeholder = Πληκτρολογήστε την υπογραφή σας\n+pdfjs-editor-add-signature-draw-placeholder = Σχεδιάστε την υπογραφή σας\n+pdfjs-editor-add-signature-draw-thickness-range-label = Πάχος\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Πάχος σχεδίου: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Σύρετε ένα αρχείο εδώ για μεταφόρτωση\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Ή επιλέξτε αρχεία εικόνας\n+       *[other] Ή περιηγηθείτε σε αρχεία εικόνας\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Περιγραφή (εναλλακτικό κείμενο)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Περιγραφή (εναλλακτικό κείμενο)\n+pdfjs-editor-add-signature-description-default-when-drawing = Υπογραφή\n+pdfjs-editor-add-signature-clear-button-label = Απαλοιφή υπογραφής\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Απαλοιφή υπογραφής\n+pdfjs-editor-add-signature-save-checkbox = Αποθήκευση υπογραφής\n+pdfjs-editor-add-signature-save-warning-message = Έχετε φτάσει το όριο των 5 αποθηκευμένων υπογραφών. Αφαιρέστε μία για να αποθηκεύσετε περισσότερες.\n+pdfjs-editor-add-signature-image-upload-error-title = Δεν ήταν δυνατή η μεταφόρτωση της εικόνας\n+pdfjs-editor-add-signature-image-upload-error-description = Ελέγξτε τη σύνδεση δικτύου σας ή δοκιμάστε μια άλλη εικόνα.\n+pdfjs-editor-add-signature-error-close-button = Κλείσιμο\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Ακύρωση\n+pdfjs-editor-add-signature-add-button = Προσθήκη\n+pdfjs-editor-edit-signature-update-button = Ενημέρωση\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Αφαίρεση αποθηκευμένης υπογραφής\n+pdfjs-editor-delete-signature-button-label1 = Αφαίρεση αποθηκευμένης υπογραφής\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Επεξεργασία περιγραφής\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Επεξεργασία περιγραφής\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fen-CA\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fen-CA\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fen-CA\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fen-CA\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Current Page (View URL from Current Page)\n pdfjs-bookmark-button-label = Current Page\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Open in app\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Open in app\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = File name:\n pdfjs-document-properties-file-size = File size:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bytes)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } kB ({ $size_b } bytes)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Creation Date:\n pdfjs-document-properties-modification-date = Modification Date:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -281,6 +286,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type } Annotation]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -304,12 +312,24 @@\n pdfjs-editor-highlight-button =\n     .title = Highlight\n pdfjs-editor-highlight-button-label = Highlight\n-pdfjs-highlight-floating-button =\n-    .title = Highlight\n pdfjs-highlight-floating-button1 =\n     .title = Highlight\n     .aria-label = Highlight\n pdfjs-highlight-floating-button-label = Highlight\n+pdfjs-editor-signature-button =\n+    .title = Add signature\n+pdfjs-editor-signature-button-label = Add signature\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Highlight editor\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Drawing editor\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Image editor\n \n ## Remove button for the various kind of editor.\n \n@@ -321,6 +341,8 @@\n     .title = Remove image\n pdfjs-editor-remove-highlight-button =\n     .title = Remove highlight\n+pdfjs-editor-remove-signature-button =\n+    .title = Remove signature\n \n ##\n \n@@ -337,6 +359,20 @@\n pdfjs-editor-free-highlight-thickness-input = Thickness\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Change thickness when highlighting items other than text\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Signature controls and saved signatures\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Add new signature\n+pdfjs-editor-signature-add-signature-button-label = Add new signature\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Saved signature: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Text Editor\n+    .default-content = Start typing…\n pdfjs-free-text =\n     .aria-label = Text Editor\n pdfjs-free-text-default-content = Start typing…\n@@ -347,8 +383,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Alt text\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Edit alt text\n pdfjs-editor-alt-text-edit-button-label = Edit alt text\n pdfjs-editor-alt-text-dialog-label = Choose an option\n pdfjs-editor-alt-text-dialog-description = Alt text (alternative text) helps when people can’t see the image or when it doesn’t load.\n@@ -362,6 +399,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = For example, “A young man sits down at a table to eat a meal”\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Alt text\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -374,6 +414,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Bottom middle — resize\n pdfjs-editor-resizer-label-bottom-left = Bottom left corner — resize\n pdfjs-editor-resizer-label-middle-left = Middle left — resize\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Top left corner — resize\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Top middle — resize\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Top right corner — resize\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Middle right — resize\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Bottom right corner — resize\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Bottom middle — resize\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Bottom left corner — resize\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Middle left — resize\n \n ## Color picker\n \n@@ -400,3 +456,155 @@\n pdfjs-editor-highlight-show-all-button-label = Show all\n pdfjs-editor-highlight-show-all-button =\n     .title = Show all\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Edit alt text (image description)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Add alt text (image description)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Write your description here…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Short description for people who can’t see the image or when the image doesn’t load.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = This alt text was created automatically and may be inaccurate.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Learn more\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Create alt text automatically\n+pdfjs-editor-new-alt-text-not-now-button = Not now\n+pdfjs-editor-new-alt-text-error-title = Couldn’t create alt text automatically\n+pdfjs-editor-new-alt-text-error-description = Please write your own alt text or try again later.\n+pdfjs-editor-new-alt-text-error-close-button = Close\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)\n+    .aria-valuetext = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Alt text added\n+pdfjs-editor-new-alt-text-added-button-label = Alt text added\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Missing alt text\n+pdfjs-editor-new-alt-text-missing-button-label = Missing alt text\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Review alt text\n+pdfjs-editor-new-alt-text-to-review-button-label = Review alt text\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Created automatically: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Image alt text settings\n+pdfjs-image-alt-text-settings-button-label = Image alt text settings\n+pdfjs-editor-alt-text-settings-dialog-label = Image alt text settings\n+pdfjs-editor-alt-text-settings-automatic-title = Automatic alt text\n+pdfjs-editor-alt-text-settings-create-model-button-label = Create alt text automatically\n+pdfjs-editor-alt-text-settings-create-model-description = Suggests descriptions to help people who can’t see the image or when the image doesn’t load.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Alt text AI model ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Runs locally on your device so your data stays private. Required for automatic alt text.\n+pdfjs-editor-alt-text-settings-delete-model-button = Delete\n+pdfjs-editor-alt-text-settings-download-model-button = Download\n+pdfjs-editor-alt-text-settings-downloading-model-button = Downloading…\n+pdfjs-editor-alt-text-settings-editor-title = Alt text editor\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Show alt text editor right away when adding an image\n+pdfjs-editor-alt-text-settings-show-dialog-description = Helps you make sure all your images have alt text.\n+pdfjs-editor-alt-text-settings-close-button = Close\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Highlight removed\n+pdfjs-editor-undo-bar-message-freetext = Text removed\n+pdfjs-editor-undo-bar-message-ink = Drawing removed\n+pdfjs-editor-undo-bar-message-stamp = Image removed\n+pdfjs-editor-undo-bar-message-signature = Signature removed\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } annotation removed\n+       *[other] { $count } annotations removed\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Undo\n+pdfjs-editor-undo-bar-undo-button-label = Undo\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Close\n+pdfjs-editor-undo-bar-close-button-label = Close\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = This modal allows the user to create a signature to add to a PDF document. The user can edit the name (which also serves as the alt text), and optionally save the signature for repeated use.\n+pdfjs-editor-add-signature-dialog-title = Add a signature\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Type\n+    .title = Type\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Draw\n+    .title = Draw\n+pdfjs-editor-add-signature-image-button = Image\n+    .title = Image\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Type your signature\n+    .placeholder = Type your signature\n+pdfjs-editor-add-signature-draw-placeholder = Draw your signature\n+pdfjs-editor-add-signature-draw-thickness-range-label = Thickness\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Drawing thickness: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Drag a file here to upload\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Or choose image files\n+       *[other] Or browse image files\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Description (alt text)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Description (alt text)\n+pdfjs-editor-add-signature-description-default-when-drawing = Signature\n+pdfjs-editor-add-signature-clear-button-label = Clear signature\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Clear signature\n+pdfjs-editor-add-signature-save-checkbox = Save signature\n+pdfjs-editor-add-signature-save-warning-message = You’ve reached the limit of 5 saved signatures. Remove one to save more.\n+pdfjs-editor-add-signature-image-upload-error-title = Couldn’t upload image\n+pdfjs-editor-add-signature-image-upload-error-description = Check your network connection or try another image.\n+pdfjs-editor-add-signature-error-close-button = Close\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Cancel\n+pdfjs-editor-add-signature-add-button = Add\n+pdfjs-editor-edit-signature-update-button = Update\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Remove saved signature\n+pdfjs-editor-delete-signature-button-label1 = Remove saved signature\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Edit description\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Edit description\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fen-GB\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fen-GB\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fen-GB\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fen-GB\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Current Page (View URL from Current Page)\n pdfjs-bookmark-button-label = Current Page\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Open in app\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Open in app\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = File name:\n pdfjs-document-properties-file-size = File size:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } kB ({ $b } bytes)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } kB ({ $size_b } bytes)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Creation Date:\n pdfjs-document-properties-modification-date = Modification Date:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -281,6 +286,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type } Annotation]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -304,12 +312,29 @@\n pdfjs-editor-highlight-button =\n     .title = Highlight\n pdfjs-editor-highlight-button-label = Highlight\n-pdfjs-highlight-floating-button =\n-    .title = Highlight\n pdfjs-highlight-floating-button1 =\n     .title = Highlight\n     .aria-label = Highlight\n pdfjs-highlight-floating-button-label = Highlight\n+pdfjs-editor-signature-button =\n+    .title = Add signature\n+pdfjs-editor-signature-button-label = Add signature\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Highlight editor\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Drawing editor\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Signature editor: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Image editor\n \n ## Remove button for the various kind of editor.\n \n@@ -321,6 +346,8 @@\n     .title = Remove image\n pdfjs-editor-remove-highlight-button =\n     .title = Remove highlight\n+pdfjs-editor-remove-signature-button =\n+    .title = Remove signature\n \n ##\n \n@@ -337,6 +364,20 @@\n pdfjs-editor-free-highlight-thickness-input = Thickness\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Change thickness when highlighting items other than text\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Signature controls and saved signatures\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Add new signature\n+pdfjs-editor-signature-add-signature-button-label = Add new signature\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Saved signature: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Text Editor\n+    .default-content = Start typing…\n pdfjs-free-text =\n     .aria-label = Text Editor\n pdfjs-free-text-default-content = Start typing…\n@@ -347,8 +388,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Alt text\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Edit alt text\n pdfjs-editor-alt-text-edit-button-label = Edit alt text\n pdfjs-editor-alt-text-dialog-label = Choose an option\n pdfjs-editor-alt-text-dialog-description = Alt text (alternative text) helps when people can’t see the image or when it doesn’t load.\n@@ -362,6 +404,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = For example, “A young man sits down at a table to eat a meal”\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Alt text\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -374,6 +419,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Bottom middle — resize\n pdfjs-editor-resizer-label-bottom-left = Bottom left corner — resize\n pdfjs-editor-resizer-label-middle-left = Middle left — resize\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Top left corner — resize\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Top middle — resize\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Top right corner — resize\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Middle right — resize\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Bottom right corner — resize\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Bottom middle — resize\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Bottom left corner — resize\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Middle left — resize\n \n ## Color picker\n \n@@ -400,3 +461,155 @@\n pdfjs-editor-highlight-show-all-button-label = Show all\n pdfjs-editor-highlight-show-all-button =\n     .title = Show all\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Edit alt text (image description)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Add alt text (image description)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Write your description here…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Short description for people who can’t see the image or when the image doesn’t load.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = This alt text was created automatically and may be inaccurate.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Learn more\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Create alt text automatically\n+pdfjs-editor-new-alt-text-not-now-button = Not now\n+pdfjs-editor-new-alt-text-error-title = Couldn’t create alt text automatically\n+pdfjs-editor-new-alt-text-error-description = Please write your own alt text or try again later.\n+pdfjs-editor-new-alt-text-error-close-button = Close\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)\n+    .aria-valuetext = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Alt text added\n+pdfjs-editor-new-alt-text-added-button-label = Alt text added\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Missing alt text\n+pdfjs-editor-new-alt-text-missing-button-label = Missing alt text\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Review alt text\n+pdfjs-editor-new-alt-text-to-review-button-label = Review alt text\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Created automatically: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Image alt text settings\n+pdfjs-image-alt-text-settings-button-label = Image alt text settings\n+pdfjs-editor-alt-text-settings-dialog-label = Image alt text settings\n+pdfjs-editor-alt-text-settings-automatic-title = Automatic alt text\n+pdfjs-editor-alt-text-settings-create-model-button-label = Create alt text automatically\n+pdfjs-editor-alt-text-settings-create-model-description = Suggests descriptions to help people who can’t see the image or when the image doesn’t load.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Alt text AI model ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Runs locally on your device so your data stays private. Required for automatic alt text.\n+pdfjs-editor-alt-text-settings-delete-model-button = Delete\n+pdfjs-editor-alt-text-settings-download-model-button = Download\n+pdfjs-editor-alt-text-settings-downloading-model-button = Downloading…\n+pdfjs-editor-alt-text-settings-editor-title = Alt text editor\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Show alt text editor right away when adding an image\n+pdfjs-editor-alt-text-settings-show-dialog-description = Helps you make sure all your images have alt text.\n+pdfjs-editor-alt-text-settings-close-button = Close\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Highlight removed\n+pdfjs-editor-undo-bar-message-freetext = Text removed\n+pdfjs-editor-undo-bar-message-ink = Drawing removed\n+pdfjs-editor-undo-bar-message-stamp = Image removed\n+pdfjs-editor-undo-bar-message-signature = Signature removed\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } annotation removed\n+       *[other] { $count } annotations removed\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Undo\n+pdfjs-editor-undo-bar-undo-button-label = Undo\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Close\n+pdfjs-editor-undo-bar-close-button-label = Close\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = This modal allows the user to create a signature to add to a PDF document. The user can edit the name (which also serves as the alt text), and optionally save the signature for repeated use.\n+pdfjs-editor-add-signature-dialog-title = Add a signature\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Type\n+    .title = Type\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Draw\n+    .title = Draw\n+pdfjs-editor-add-signature-image-button = Image\n+    .title = Image\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Type your signature\n+    .placeholder = Type your signature\n+pdfjs-editor-add-signature-draw-placeholder = Draw your signature\n+pdfjs-editor-add-signature-draw-thickness-range-label = Thickness\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Drawing thickness: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Drag a file here to upload\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Or choose image files\n+       *[other] Or browse image files\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Description (alt text)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Description (alt text)\n+pdfjs-editor-add-signature-description-default-when-drawing = Signature\n+pdfjs-editor-add-signature-clear-button-label = Clear signature\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Clear signature\n+pdfjs-editor-add-signature-save-checkbox = Save signature\n+pdfjs-editor-add-signature-save-warning-message = You’ve reached the limit of 5 saved signatures. Remove one to save more.\n+pdfjs-editor-add-signature-image-upload-error-title = Couldn’t upload image\n+pdfjs-editor-add-signature-image-upload-error-description = Check your network connection or try another image.\n+pdfjs-editor-add-signature-error-close-button = Close\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Cancel\n+pdfjs-editor-add-signature-add-button = Add\n+pdfjs-editor-edit-signature-update-button = Update\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Remove saved signature\n+pdfjs-editor-delete-signature-button-label1 = Remove saved signature\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Edit description\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Edit description\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fen-US\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fen-US\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fen-US\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fen-US\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -113,14 +113,14 @@\n pdfjs-document-properties-file-size = File size:\n \n # Variables:\n-#   $size_kb (Number) - the PDF file size in kilobytes\n-#   $size_b (Number) - the PDF file size in bytes\n-pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bytes)\n \n # Variables:\n-#   $size_mb (Number) - the PDF file size in megabytes\n-#   $size_b (Number) - the PDF file size in bytes\n-pdfjs-document-properties-mb = { $size_mb } MB ({ $size_b } bytes)\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)\n \n pdfjs-document-properties-title = Title:\n pdfjs-document-properties-author = Author:\n@@ -130,9 +130,8 @@\n pdfjs-document-properties-modification-date = Modification Date:\n \n # Variables:\n-#   $date (Date) - the creation\u002Fmodification date of the PDF file\n-#   $time (Time) - the creation\u002Fmodification time of the PDF file\n-pdfjs-document-properties-date-string = { $date }, { $time }\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n pdfjs-document-properties-creator = Creator:\n pdfjs-document-properties-producer = PDF Producer:\n@@ -284,9 +283,8 @@\n ## Annotations\n \n # Variables:\n-#   $date (Date) - the modification date of the annotation\n-#   $time (Time) - the modification time of the annotation\n-pdfjs-annotation-date-string = { $date }, { $time }\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n # .alt: This is used as a tooltip.\n # Variables:\n@@ -322,6 +320,27 @@\n     .title = Highlight\n     .aria-label = Highlight\n pdfjs-highlight-floating-button-label = Highlight\n+pdfjs-editor-signature-button =\n+    .title = Add signature\n+pdfjs-editor-signature-button-label = Add signature\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Highlight editor\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Drawing editor\n+\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Signature editor: { $description }\n+\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Image editor\n \n ## Remove button for the various kind of editor.\n \n@@ -333,6 +352,8 @@\n     .title = Remove image\n pdfjs-editor-remove-highlight-button =\n     .title = Remove highlight\n+pdfjs-editor-remove-signature-button =\n+    .title = Remove signature\n \n ##\n \n@@ -349,21 +370,32 @@\n pdfjs-editor-free-highlight-thickness-input = Thickness\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Change thickness when highlighting items other than text\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Signature controls and saved signatures\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Add new signature\n+pdfjs-editor-signature-add-signature-button-label = Add new signature\n+\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Saved signature: { $description }\n \n-pdfjs-free-text =\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n     .aria-label = Text Editor\n-pdfjs-free-text-default-content = Start typing…\n-pdfjs-ink =\n-    .aria-label = Draw Editor\n-pdfjs-ink-canvas =\n-    .aria-label = User-created image\n+    .default-content = Start typing…\n \n ## Alt-text dialog\n \n # Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Alt text\n pdfjs-editor-alt-text-button-label = Alt text\n \n-pdfjs-editor-alt-text-edit-button-label = Edit alt text\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Edit alt text\n pdfjs-editor-alt-text-dialog-label = Choose an option\n pdfjs-editor-alt-text-dialog-description = Alt text (alternative text) helps when people can’t see the image or when it doesn’t load.\n pdfjs-editor-alt-text-add-description-label = Add a description\n@@ -381,14 +413,22 @@\n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n-pdfjs-editor-resizer-label-top-left = Top left corner — resize\n-pdfjs-editor-resizer-label-top-middle = Top middle — resize\n-pdfjs-editor-resizer-label-top-right = Top right corner — resize\n-pdfjs-editor-resizer-label-middle-right = Middle right — resize\n-pdfjs-editor-resizer-label-bottom-right = Bottom right corner — resize\n-pdfjs-editor-resizer-label-bottom-middle = Bottom middle — resize\n-pdfjs-editor-resizer-label-bottom-left = Bottom left corner — resize\n-pdfjs-editor-resizer-label-middle-left = Middle left — resize\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Top left corner — resize\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Top middle — resize\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Top right corner — resize\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Middle right — resize\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Bottom right corner — resize\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Bottom middle — resize\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Bottom left corner — resize\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Middle left — resize\n \n ## Color picker\n \n@@ -416,3 +456,177 @@\n pdfjs-editor-highlight-show-all-button-label = Show all\n pdfjs-editor-highlight-show-all-button =\n     .title = Show all\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Edit alt text (image description)\n+\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Add alt text (image description)\n+\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Write your description here…\n+\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Short description for people who can’t see the image or when the image doesn’t load.\n+\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = This alt text was created automatically and may be inaccurate.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Learn more\n+\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Create alt text automatically\n+pdfjs-editor-new-alt-text-not-now-button = Not now\n+pdfjs-editor-new-alt-text-error-title = Couldn’t create alt text automatically\n+pdfjs-editor-new-alt-text-error-description = Please write your own alt text or try again later.\n+pdfjs-editor-new-alt-text-error-close-button = Close\n+\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)\n+    .aria-valuetext = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)\n+\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Alt text added\n+pdfjs-editor-new-alt-text-added-button-label = Alt text added\n+\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Missing alt text\n+pdfjs-editor-new-alt-text-missing-button-label = Missing alt text\n+\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Review alt text\n+pdfjs-editor-new-alt-text-to-review-button-label = Review alt text\n+\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Created automatically: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Image alt text settings\n+pdfjs-image-alt-text-settings-button-label = Image alt text settings\n+\n+pdfjs-editor-alt-text-settings-dialog-label = Image alt text settings\n+pdfjs-editor-alt-text-settings-automatic-title = Automatic alt text\n+pdfjs-editor-alt-text-settings-create-model-button-label = Create alt text automatically\n+pdfjs-editor-alt-text-settings-create-model-description = Suggests descriptions to help people who can’t see the image or when the image doesn’t load.\n+\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Alt text AI model ({ $totalSize } MB)\n+\n+pdfjs-editor-alt-text-settings-ai-model-description = Runs locally on your device so your data stays private. Required for automatic alt text.\n+pdfjs-editor-alt-text-settings-delete-model-button = Delete\n+pdfjs-editor-alt-text-settings-download-model-button = Download\n+pdfjs-editor-alt-text-settings-downloading-model-button = Downloading…\n+\n+pdfjs-editor-alt-text-settings-editor-title = Alt text editor\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Show alt text editor right away when adding an image\n+pdfjs-editor-alt-text-settings-show-dialog-description = Helps you make sure all your images have alt text.\n+pdfjs-editor-alt-text-settings-close-button = Close\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Highlight removed\n+pdfjs-editor-undo-bar-message-freetext = Text removed\n+pdfjs-editor-undo-bar-message-ink = Drawing removed\n+pdfjs-editor-undo-bar-message-stamp = Image removed\n+pdfjs-editor-undo-bar-message-signature = Signature removed\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } annotation removed\n+       *[other] { $count } annotations removed\n+    }\n+\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Undo\n+pdfjs-editor-undo-bar-undo-button-label = Undo\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Close\n+pdfjs-editor-undo-bar-close-button-label = Close\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = This modal allows the user to create a signature to add to a PDF document. The user can edit the name (which also serves as the alt text), and optionally save the signature for repeated use.\n+pdfjs-editor-add-signature-dialog-title = Add a signature\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Type\n+    .title = Type\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Draw\n+    .title = Draw\n+pdfjs-editor-add-signature-image-button = Image\n+    .title = Image\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Type your signature\n+    .placeholder = Type your signature\n+pdfjs-editor-add-signature-draw-placeholder = Draw your signature\n+pdfjs-editor-add-signature-draw-thickness-range-label = Thickness\n+\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Drawing thickness: { $thickness }\n+\n+pdfjs-editor-add-signature-image-placeholder = Drag a file here to upload\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Or choose image files\n+       *[other] Or browse image files\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Description (alt text)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Description (alt text)\n+pdfjs-editor-add-signature-description-default-when-drawing = Signature\n+\n+\n+pdfjs-editor-add-signature-clear-button-label = Clear signature\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Clear signature\n+pdfjs-editor-add-signature-save-checkbox = Save signature\n+pdfjs-editor-add-signature-save-warning-message = You’ve reached the limit of 5 saved signatures. Remove one to save more.\n+pdfjs-editor-add-signature-image-upload-error-title = Couldn’t upload image\n+pdfjs-editor-add-signature-image-upload-error-description = Check your network connection or try another image.\n+pdfjs-editor-add-signature-error-close-button = Close\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Cancel\n+pdfjs-editor-add-signature-add-button = Add\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Remove saved signature\n+pdfjs-editor-delete-signature-button-label1 = Remove saved signature\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Edit description\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Edit description\n+\n+## Dialog buttons\n+\n+pdfjs-editor-edit-signature-update-button = Update\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Feo\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Feo\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Feo\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Feo\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -105,6 +105,14 @@\n pdfjs-document-properties-file-name = Nomo de dosiero:\n pdfjs-document-properties-file-size = Grando de dosiero:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KO ({ $b } oktetoj)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } Mo ({ $b } oktetoj)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KO ({ $size_b } oktetoj)\n@@ -119,6 +127,9 @@\n pdfjs-document-properties-creation-date = Dato de kreado:\n pdfjs-document-properties-modification-date = Dato de modifo:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -275,6 +286,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [Prinoto: { $type }]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -298,12 +312,29 @@\n pdfjs-editor-highlight-button =\n     .title = Elstarigi\n pdfjs-editor-highlight-button-label = Elstarigi\n-pdfjs-highlight-floating-button =\n-    .title = Elstarigi\n pdfjs-highlight-floating-button1 =\n     .title = Elstarigi\n     .aria-label = Elstarigi\n pdfjs-highlight-floating-button-label = Elstarigi\n+pdfjs-editor-signature-button =\n+    .title = Aldoni subskribon\n+pdfjs-editor-signature-button-label = Aldoni subskribon\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Redaktilo de elstaraĵo\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Redaktilo de desegno\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Redaktilo de subskribo: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Redaktilo de bildo\n \n ## Remove button for the various kind of editor.\n \n@@ -315,6 +346,8 @@\n     .title = Forigi bildon\n pdfjs-editor-remove-highlight-button =\n     .title = Forigi elstaraĵon\n+pdfjs-editor-remove-signature-button =\n+    .title = Forigi subskribon\n \n ##\n \n@@ -331,8 +364,22 @@\n pdfjs-editor-free-highlight-thickness-input = Dikeco\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Ŝanĝi dikecon dum elstarigo de netekstaj elementoj\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Kontrolado de subskriboj kaj konservitaj subskriboj\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Aldoni novan subskribon\n+pdfjs-editor-signature-add-signature-button-label = Aldoni novan subskribon\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Konservita subskribo: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Teksta redaktilo\n+    .default-content = Komencu tajpi…\n pdfjs-free-text =\n-    .aria-label = Tekstan redaktilon\n+    .aria-label = Teksta redaktilo\n pdfjs-free-text-default-content = Ektajpi…\n pdfjs-ink =\n     .aria-label = Desegnan redaktilon\n@@ -341,8 +388,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Alternativa teksto\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Redakti alternativan tekston\n pdfjs-editor-alt-text-edit-button-label = Redakti alternativan tekston\n pdfjs-editor-alt-text-dialog-label = Elektu eblon\n pdfjs-editor-alt-text-dialog-description = Alternativa teksto helpas personojn, en la okazoj kiam ili ne povas vidi aŭ ŝargi la bildon.\n@@ -356,6 +404,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Ekzemple: “Juna persono sidiĝas ĉetable por ekmanĝi”\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Alternativa teksto\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -368,6 +419,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Malsupra mezo — ŝanĝi grandon\n pdfjs-editor-resizer-label-bottom-left = Malsupra maldekstra angulo — ŝanĝi grandon\n pdfjs-editor-resizer-label-middle-left = Maldekstra mezo — ŝanĝi grandon\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Supra maldekstra angulo — ŝangi grandon\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Supra mezo — ŝanĝi grandon\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Supran dekstran angulon — ŝanĝi grandon\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Dekstra mezo — ŝanĝi grandon\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Malsupra deksta angulo — ŝanĝi grandon\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Malsupra mezo — ŝanĝi grandon\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Malsupra maldekstra angulo — ŝanĝi grandon\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Maldekstra mezo — ŝanĝi grandon\n \n ## Color picker\n \n@@ -394,3 +461,155 @@\n pdfjs-editor-highlight-show-all-button-label = Montri ĉiujn\n pdfjs-editor-highlight-show-all-button =\n     .title = Montri ĉiujn\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Modifi alternativan tekston (priskribo de bildo)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Aldoni alternativan tekston (priskribo de bildo)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Skribu vian priskribon ĉi tie…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Mallonga priskribo por personoj kiuj ne povas vidi la bildon kaj por montri kiam la bildo ne ŝargeblas.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Tiu ĉi alternativa teksto estis aŭtomate kreita kaj povus esti malĝusta.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Pli da informo\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Aŭtomate krei alternativan tekston\n+pdfjs-editor-new-alt-text-not-now-button = Ne nun\n+pdfjs-editor-new-alt-text-error-title = Ne eblis aŭtomate krei alternativan tekston\n+pdfjs-editor-new-alt-text-error-description = Bonvolu skribi vian propran alternativan tekston aŭ provi denove poste.\n+pdfjs-editor-new-alt-text-error-close-button = Fermi\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Elŝuto de modelo de artefarita intelekto por alternativa teksto ({ $downloadedSize } el { $totalSize } MO)\n+    .aria-valuetext = Elŝuto de modelo de artefarita intelekto por alternativa teksto ({ $downloadedSize } el { $totalSize } MO)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Alternativa teksto aldonita\n+pdfjs-editor-new-alt-text-added-button-label = Alternativa teksto aldonita\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Mankas alternativa teksto\n+pdfjs-editor-new-alt-text-missing-button-label = Mankas alternativa teksto\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Kontroli alternativan tekston\n+pdfjs-editor-new-alt-text-to-review-button-label = Kontroli alternativan tekston\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Aŭtomate kreita: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Agordoj por alternativa teksto de bildoj\n+pdfjs-image-alt-text-settings-button-label = Agordoj por alternativa teksto de bildoj\n+pdfjs-editor-alt-text-settings-dialog-label = Agordoj por alternativa teksto de bildoj\n+pdfjs-editor-alt-text-settings-automatic-title = Aŭtomata alternativa teksto\n+pdfjs-editor-alt-text-settings-create-model-button-label = Aŭtomate krei alternativan tekston\n+pdfjs-editor-alt-text-settings-create-model-description = Tio ĉi sugestas priskribojn por helpi personojn kiuj ne povas vidi aŭ ŝargi la bildon.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Modelo de artefarita intelekto por alternativa teksto ({ $totalSize } MO)\n+pdfjs-editor-alt-text-settings-ai-model-description = Ĝi funkcias en via aparato, do viaj datumoj restas privataj. Ĝi estas postulata por aŭtomata kreado de alternativa teksto.\n+pdfjs-editor-alt-text-settings-delete-model-button = Forigi\n+pdfjs-editor-alt-text-settings-download-model-button = Elŝuti\n+pdfjs-editor-alt-text-settings-downloading-model-button = Elŝuto…\n+pdfjs-editor-alt-text-settings-editor-title = Redaktilo de alternativa teksto\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Montri redaktilon de alternativa teksto tuj post aldono de bildo\n+pdfjs-editor-alt-text-settings-show-dialog-description = Tio ĉi helpas vin kontroli ĉu ĉiuj bildoj havas alternativan tekston.\n+pdfjs-editor-alt-text-settings-close-button = Fermi\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Elstaraĵo forigita\n+pdfjs-editor-undo-bar-message-freetext = Teksto forigita\n+pdfjs-editor-undo-bar-message-ink = Desegno forigita\n+pdfjs-editor-undo-bar-message-stamp = Bildo forigita\n+pdfjs-editor-undo-bar-message-signature = Subskribo forigita\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] unu prinoto forigita\n+       *[other] { $count } prinotoj forigitaj\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Malfari\n+pdfjs-editor-undo-bar-undo-button-label = Malfari\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Fermi\n+pdfjs-editor-undo-bar-close-button-label = Fermi\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Tiu ĉi fenestro permesas al la uzanto krei subskribon por aldoni al dokumento PDF. La uzanto povas modifi la nomon (kiu estas cetere la alternativa teksto) kaj havas la eblon konservi la subskribon por posta uzo.\n+pdfjs-editor-add-signature-dialog-title = Aldoni subskribon\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Tajpi\n+    .title = Tajpi\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Desegni\n+    .title = Desegni\n+pdfjs-editor-add-signature-image-button = Bildo\n+    .title = Bildo\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Tajpu vian subskribon\n+    .placeholder = Tajpu vian subskribon\n+pdfjs-editor-add-signature-draw-placeholder = Desegni vian subskribon\n+pdfjs-editor-add-signature-draw-thickness-range-label = Dikeco\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Dikeco de desegno: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Trenu dosieron ĉi tien por alŝuti ĝin\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Aŭ elektu bildan dosieron\n+       *[other] Aŭ elektu bildan dosieron\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Priskribo (alternativa teksto)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Priskribo (alternativa teksto)\n+pdfjs-editor-add-signature-description-default-when-drawing = Subskribo\n+pdfjs-editor-add-signature-clear-button-label = Viŝi subskribon\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Viŝi subskribon\n+pdfjs-editor-add-signature-save-checkbox = Konservi subskribon\n+pdfjs-editor-add-signature-save-warning-message = Vi atingis la limon de kvin konservitaj subskriboj. Forigi unu por povi konservi pli da.\n+pdfjs-editor-add-signature-image-upload-error-title = Ne eblis alŝuti bildon\n+pdfjs-editor-add-signature-image-upload-error-description = Kontrolu vian retaliron aŭ provu alŝuti alian bildon.\n+pdfjs-editor-add-signature-error-close-button = Fermi\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Nuligi\n+pdfjs-editor-add-signature-add-button = Aldoni\n+pdfjs-editor-edit-signature-update-button = Ĝisdatigi\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Forigi konservitan subskribon\n+pdfjs-editor-delete-signature-button-label1 = Forigi konservitan subskribon\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Modifi priskribon\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Modifi priskribon\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fes-AR\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fes-AR\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fes-AR\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fes-AR\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Página actual (Ver URL de la página actual)\n pdfjs-bookmark-button-label = Página actual\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Abrir en la aplicación\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Abrir en la aplicación\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = Nombre de archivo:\n pdfjs-document-properties-file-size = Tamaño de archovo:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bytes)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Fecha de creación:\n pdfjs-document-properties-modification-date = Fecha de modificación:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -281,6 +286,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type } Anotación]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -304,12 +312,29 @@\n pdfjs-editor-highlight-button =\n     .title = Resaltar\n pdfjs-editor-highlight-button-label = Resaltar\n-pdfjs-highlight-floating-button =\n-    .title = Resaltar\n pdfjs-highlight-floating-button1 =\n     .title = Resaltar\n     .aria-label = Resaltar\n pdfjs-highlight-floating-button-label = Resaltar\n+pdfjs-editor-signature-button =\n+    .title = Agregar firma\n+pdfjs-editor-signature-button-label = Agregar firma\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Editor de resaltado\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Editor de dibujos\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Editor de firmas: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Editor de imágenes\n \n ## Remove button for the various kind of editor.\n \n@@ -321,6 +346,8 @@\n     .title = Eliminar imagen\n pdfjs-editor-remove-highlight-button =\n     .title = Eliminar resaltado\n+pdfjs-editor-remove-signature-button =\n+    .title = Eliminar firma\n \n ##\n \n@@ -337,6 +364,20 @@\n pdfjs-editor-free-highlight-thickness-input = Grosor\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Cambiar el grosor al resaltar elementos que no sean texto\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Controles de firma y firmas guardadas\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Agregar nueva firma\n+pdfjs-editor-signature-add-signature-button-label = Agregar nueva firma\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Firma guardada: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Editor de texto\n+    .default-content = Comenzar a tipear…\n pdfjs-free-text =\n     .aria-label = Editor de texto\n pdfjs-free-text-default-content = Empezar a tipear…\n@@ -347,8 +388,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Texto alternativo\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Editar texto alternativo\n pdfjs-editor-alt-text-edit-button-label = Editar el texto alternativo\n pdfjs-editor-alt-text-dialog-label = Eligir una opción\n pdfjs-editor-alt-text-dialog-description = El texto alternativo (texto alternativo) ayuda cuando las personas no pueden ver la imagen o cuando no se carga.\n@@ -362,6 +404,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Por ejemplo: “Un joven se sienta a la mesa a comer”\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Texto alternativo\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -374,6 +419,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Abajo en el medio — cambiar el tamaño\n pdfjs-editor-resizer-label-bottom-left = Esquina inferior izquierda — cambiar el tamaño\n pdfjs-editor-resizer-label-middle-left = Al centro a la izquierda — cambiar el tamaño\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Esquina superior izquierda — cambiar el tamaño\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Arriba en el medio — cambiar el tamaño\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Esquina superior derecha — cambiar el tamaño\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Al centro a la derecha — cambiar el tamaño\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Esquina inferior derecha — cambiar el tamaño\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Abajo en el medio — cambiar el tamaño\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Esquina inferior izquierda — cambiar el tamaño\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Al centro a la izquierda — cambiar el tamaño\n \n ## Color picker\n \n@@ -400,3 +461,155 @@\n pdfjs-editor-highlight-show-all-button-label = Mostrar todo\n pdfjs-editor-highlight-show-all-button =\n     .title = Mostrar todo\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Editar texto alternativo (descripción de la imagen)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Agregar texto alternativo (descripción de la imagen)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Escribir la descripción aquí…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Descripción corta para las personas que no pueden ver la imagen o cuando la imagen no se carga.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Este texto alternativo fue creado automáticamente y puede ser incorrecto.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Conocer más\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Crear texto alternativo automáticamente\n+pdfjs-editor-new-alt-text-not-now-button = No ahora\n+pdfjs-editor-new-alt-text-error-title = No se pudo crear el texto alternativo automáticamente\n+pdfjs-editor-new-alt-text-error-description = Escriba su propio texto alternativo o pruebe nuevamente más tarde.\n+pdfjs-editor-new-alt-text-error-close-button = Cerrar\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Descargando modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB)\n+    .aria-valuetext = Descargando modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Texto alternativo agregado\n+pdfjs-editor-new-alt-text-added-button-label = Texto alternativo agregado\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Falta el texto alternativo\n+pdfjs-editor-new-alt-text-missing-button-label = Falta el texto alternativo\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Calificar el texto alternativo\n+pdfjs-editor-new-alt-text-to-review-button-label = Revisar el texto alternativo\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Creado automáticamente: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Configuración de texto alternativo de la imagen\n+pdfjs-image-alt-text-settings-button-label = Configuración de texto alternativo de la imagen\n+pdfjs-editor-alt-text-settings-dialog-label = Configuración de texto alternativo de la imagen\n+pdfjs-editor-alt-text-settings-automatic-title = Texto alternativo automático\n+pdfjs-editor-alt-text-settings-create-model-button-label = Crear texto alternativo automáticamente\n+pdfjs-editor-alt-text-settings-create-model-description = Sugiere descripciones para ayudar a las personas que no pueden ver la imagen o cuando la imagen no se carga.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Modelo de IA de texto alternativo ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Se ejecuta localmente en el dispositivo para que los datos se mantengan privados. Requerido para texto alternativo automático.\n+pdfjs-editor-alt-text-settings-delete-model-button = Borrar\n+pdfjs-editor-alt-text-settings-download-model-button = Descargar\n+pdfjs-editor-alt-text-settings-downloading-model-button = Descargando…\n+pdfjs-editor-alt-text-settings-editor-title = Editor de texto alternativo\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Mostrar el editor de texto alternativo inmediatamente al agregar una imagen\n+pdfjs-editor-alt-text-settings-show-dialog-description = Te ayuda a asegurarse de que todas las imágenes tengan texto alternativo.\n+pdfjs-editor-alt-text-settings-close-button = Cerrar\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Resaltado eliminado\n+pdfjs-editor-undo-bar-message-freetext = Texto eliminado\n+pdfjs-editor-undo-bar-message-ink = Dibujo eliminado\n+pdfjs-editor-undo-bar-message-stamp = Imagen eliminado\n+pdfjs-editor-undo-bar-message-signature = Firma eliminada\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } anotación eliminada\n+       *[other] { $count } anotaciones eliminadas\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Deshacer\n+pdfjs-editor-undo-bar-undo-button-label = Deshacer\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Cerrar\n+pdfjs-editor-undo-bar-close-button-label = Cerrar\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Este modal permite al usuario crear una firma para agregar a un documento PDF. El usuario puede editar el nombre (que también sirve como texto alternativo) y opcionalmente guardar la firma para un uso repetido.\n+pdfjs-editor-add-signature-dialog-title = Agregar una firma\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Tipear\n+    .title = Tipear\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Dibujar\n+    .title = Dibujar\n+pdfjs-editor-add-signature-image-button = Imagen\n+    .title = Imagen\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Escribir la firma\n+    .placeholder = Escribir la firma\n+pdfjs-editor-add-signature-draw-placeholder = Dibujar la firma\n+pdfjs-editor-add-signature-draw-thickness-range-label = Grosor\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Grosor del dibujo: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Arrastrar un archivo acá para subirlo\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] O seleccionar archivos de imágenes\n+       *[other] O seleccionar archivos de imágenes\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Descripción (texto alternativo)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Descripción (texto alternativo)\n+pdfjs-editor-add-signature-description-default-when-drawing = Firma\n+pdfjs-editor-add-signature-clear-button-label = Borrar firma\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Borrar firma\n+pdfjs-editor-add-signature-save-checkbox = Guardar firma\n+pdfjs-editor-add-signature-save-warning-message = Se alcanzó el límite de 5 firmas guardadas. Elimine una para guardar más.\n+pdfjs-editor-add-signature-image-upload-error-title = No se pudo subir la imagen\n+pdfjs-editor-add-signature-image-upload-error-description = Verifique la conexión de red o pruebe con otra imagen.\n+pdfjs-editor-add-signature-error-close-button = Cerrar\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Cancelar\n+pdfjs-editor-add-signature-add-button = Agregar\n+pdfjs-editor-edit-signature-update-button = Actualizar\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Eliminar firma guardada\n+pdfjs-editor-delete-signature-button-label1 = Eliminar firma guardada\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Editar descripción\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Editar descripción\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fes-CL\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fes-CL\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fes-CL\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fes-CL\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Página actual (Ver URL de la página actual)\n pdfjs-bookmark-button-label = Página actual\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Abrir en una aplicación\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Abrir en una aplicación\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = Nombre de archivo:\n pdfjs-document-properties-file-size = Tamaño del archivo:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bytes)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Fecha de creación:\n pdfjs-document-properties-modification-date = Fecha de modificación:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -281,10 +286,13 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type } Anotación]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n-pdfjs-password-label = Ingrese la contraseña para abrir este archivo PDF.\n+pdfjs-password-label = Ingresa la contraseña para abrir este archivo PDF.\n pdfjs-password-invalid = Contraseña inválida. Por favor, vuelve a intentarlo.\n pdfjs-password-ok-button = Aceptar\n pdfjs-password-cancel-button = Cancelar\n@@ -304,12 +312,29 @@\n pdfjs-editor-highlight-button =\n     .title = Destacar\n pdfjs-editor-highlight-button-label = Destacar\n-pdfjs-highlight-floating-button =\n-    .title = Destacar\n pdfjs-highlight-floating-button1 =\n     .title = Destacar\n     .aria-label = Destacar\n pdfjs-highlight-floating-button-label = Destacar\n+pdfjs-editor-signature-button =\n+    .title = Añadir firma\n+pdfjs-editor-signature-button-label = Añadir firma\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Editor de destacados\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Editor de dibujos\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Editor de firmas: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Editor de imágenes\n \n ## Remove button for the various kind of editor.\n \n@@ -321,6 +346,8 @@\n     .title = Eliminar imagen\n pdfjs-editor-remove-highlight-button =\n     .title = Quitar resaltado\n+pdfjs-editor-remove-signature-button =\n+    .title = Eliminar firma\n \n ##\n \n@@ -337,6 +364,20 @@\n pdfjs-editor-free-highlight-thickness-input = Grosor\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Cambia el grosor al resaltar elementos que no sean texto\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Controles de firma y firmas guardadas\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Añadir nueva firma\n+pdfjs-editor-signature-add-signature-button-label = Añadir nueva firma\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Firma guardada: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Editor de texto\n+    .default-content = Empieza a escribir…\n pdfjs-free-text =\n     .aria-label = Editor de texto\n pdfjs-free-text-default-content = Empieza a escribir…\n@@ -347,8 +388,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Texto alternativo\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Editar texto alternativo\n pdfjs-editor-alt-text-edit-button-label = Editar texto alternativo\n pdfjs-editor-alt-text-dialog-label = Elige una opción\n pdfjs-editor-alt-text-dialog-description = El texto alternativo (alt text) ayuda cuando las personas no pueden ver la imagen o cuando no se carga.\n@@ -362,6 +404,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Por ejemplo: “Un joven se sienta a la mesa a comer”\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Texto alternativo\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -374,6 +419,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Borde inferior en el medio — cambiar el tamaño\n pdfjs-editor-resizer-label-bottom-left = Esquina inferior izquierda — cambiar el tamaño\n pdfjs-editor-resizer-label-middle-left = Borde izquierdo en el medio — cambiar el tamaño\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Esquina superior izquierda — cambiar el tamaño\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Borde superior en el medio — cambiar el tamaño\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Esquina superior derecha — cambiar el tamaño\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Borde derecho en el medio — cambiar el tamaño\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Esquina inferior derecha — cambiar el tamaño\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Borde inferior en el medio — cambiar el tamaño\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Esquina inferior izquierda — cambiar el tamaño\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Borde izquierdo en el medio — cambiar el tamaño\n \n ## Color picker\n \n@@ -400,3 +461,155 @@\n pdfjs-editor-highlight-show-all-button-label = Mostrar todo\n pdfjs-editor-highlight-show-all-button =\n     .title = Mostrar todo\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Editar texto alternativo (descripción de la imagen)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Añadir texto alternativo (descripción de la imagen)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Escribe tu descripción aquí…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Breve descripción para las personas que no pueden ver la imagen o cuando la imagen no se carga.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Este texto alternativo fue creado automáticamente y puede ser incorrecto.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Aprender más\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Crear texto alternativo automáticamente\n+pdfjs-editor-new-alt-text-not-now-button = Ahora no\n+pdfjs-editor-new-alt-text-error-title = No se pudo crear el texto alternativo automáticamente\n+pdfjs-editor-new-alt-text-error-description = Escribe tu propio texto alternativo o vuelve a intentarlo más tarde.\n+pdfjs-editor-new-alt-text-error-close-button = Cerrar\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Descargando el modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB)\n+    .aria-valuetext = Descargando el modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Se añadió el texto alternativo\n+pdfjs-editor-new-alt-text-added-button-label = Se añadió el texto alternativo\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Falta el texto alternativo\n+pdfjs-editor-new-alt-text-missing-button-label = Falta el texto alternativo\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Revisar el texto alternativo\n+pdfjs-editor-new-alt-text-to-review-button-label = Revisar el texto alternativo\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Creado automáticamente: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Ajustes del texto alternativo de la imagen\n+pdfjs-image-alt-text-settings-button-label = Ajustes del texto alternativo de la imagen\n+pdfjs-editor-alt-text-settings-dialog-label = Ajustes del texto alternativo de la imagen\n+pdfjs-editor-alt-text-settings-automatic-title = Texto alternativo automático\n+pdfjs-editor-alt-text-settings-create-model-button-label = Crear texto alternativo automáticamente\n+pdfjs-editor-alt-text-settings-create-model-description = Sugiere descripciones para ayudar a las personas que no pueden ver la imagen o cuando la imagen no se carga.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Modelo de IA de texto alternativo ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Se ejecuta localmente en tu dispositivo para que tus datos permanezcan privados. Necesario para el texto alternativo automático.\n+pdfjs-editor-alt-text-settings-delete-model-button = Eliminar\n+pdfjs-editor-alt-text-settings-download-model-button = Descargar\n+pdfjs-editor-alt-text-settings-downloading-model-button = Bajando…\n+pdfjs-editor-alt-text-settings-editor-title = Editor de texto alternativo\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Mostrar el editor de texto alternativo inmediatamente al añadir una imagen\n+pdfjs-editor-alt-text-settings-show-dialog-description = Te ayuda a asegurarte de que todas tus imágenes tengan texto alternativo.\n+pdfjs-editor-alt-text-settings-close-button = Cerrar\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Resaltado eliminado\n+pdfjs-editor-undo-bar-message-freetext = Texto eliminado\n+pdfjs-editor-undo-bar-message-ink = Dibujo eliminado\n+pdfjs-editor-undo-bar-message-stamp = Imagen eliminada\n+pdfjs-editor-undo-bar-message-signature = Firma eliminada\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } anotación eliminada\n+       *[other] { $count } anotaciones eliminadas\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Deshacer\n+pdfjs-editor-undo-bar-undo-button-label = Deshacer\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Cerrar\n+pdfjs-editor-undo-bar-close-button-label = Cerrar\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Este modal permite al usuario crear una firma para agregarla a un documento PDF. El usuario puede editar el nombre (que también sirve como texto alternativo) y, opcionalmente, guardar la firma para usarla nuevamente.\n+pdfjs-editor-add-signature-dialog-title = Añadir una firma\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Escribir\n+    .title = Escribir\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Dibujar\n+    .title = Dibujar\n+pdfjs-editor-add-signature-image-button = Imagen\n+    .title = Imagen\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Escribe tu firma\n+    .placeholder = Escribe tu firma\n+pdfjs-editor-add-signature-draw-placeholder = Dibuja tu firma\n+pdfjs-editor-add-signature-draw-thickness-range-label = Grosor\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Grosor del dibujo: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Arrastre un archivo aquí para cargarlo\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] O elige archivos de imagen\n+       *[other] O busca archivos de imagen\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Descripción (texto alternativo)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Descripción (texto alternativo)\n+pdfjs-editor-add-signature-description-default-when-drawing = Firma\n+pdfjs-editor-add-signature-clear-button-label = Limpiar firma\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Limpiar firma\n+pdfjs-editor-add-signature-save-checkbox = Guardar firma\n+pdfjs-editor-add-signature-save-warning-message = Has alcanzado el límite de 5 firmas guardadas. Elimina una para guardar más.\n+pdfjs-editor-add-signature-image-upload-error-title = No se pudo subir la imagen\n+pdfjs-editor-add-signature-image-upload-error-description = Verifica tu conexión de red o prueba con otra imagen.\n+pdfjs-editor-add-signature-error-close-button = Cerrar\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Cancelar\n+pdfjs-editor-add-signature-add-button = Añadir\n+pdfjs-editor-edit-signature-update-button = Actualizar\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Eliminar firma guardada\n+pdfjs-editor-delete-signature-button-label1 = Eliminar firma guardada\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Editar descripción\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Editar descripción\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fes-ES\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fes-ES\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fes-ES\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fes-ES\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Página actual (Ver URL de la página actual)\n pdfjs-bookmark-button-label = Página actual\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Abrir en aplicación\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Abrir en aplicación\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = Nombre de archivo:\n pdfjs-document-properties-file-size = Tamaño de archivo:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bytes)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Fecha de creación:\n pdfjs-document-properties-modification-date = Fecha de modificación:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -281,6 +286,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [Anotación { $type }]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -304,12 +312,29 @@\n pdfjs-editor-highlight-button =\n     .title = Resaltar\n pdfjs-editor-highlight-button-label = Resaltar\n-pdfjs-highlight-floating-button =\n-    .title = Resaltar\n pdfjs-highlight-floating-button1 =\n     .title = Resaltar\n     .aria-label = Resaltar\n pdfjs-highlight-floating-button-label = Resaltar\n+pdfjs-editor-signature-button =\n+    .title = Añadir firma\n+pdfjs-editor-signature-button-label = Añadir firma\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Editor de resaltado\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Editor de dibujos\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Editor de firmas: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Editor de imágenes\n \n ## Remove button for the various kind of editor.\n \n@@ -321,6 +346,8 @@\n     .title = Eliminar imagen\n pdfjs-editor-remove-highlight-button =\n     .title = Quitar resaltado\n+pdfjs-editor-remove-signature-button =\n+    .title = Eliminar firma\n \n ##\n \n@@ -337,6 +364,20 @@\n pdfjs-editor-free-highlight-thickness-input = Grosor\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Cambiar el grosor al resaltar elementos que no sean texto\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Controles de firma y firmas guardadas\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Añadir nueva firma\n+pdfjs-editor-signature-add-signature-button-label = Añadir nueva firma\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Firma guardada: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Editor de texto\n+    .default-content = Empiece a escribir…\n pdfjs-free-text =\n     .aria-label = Editor de texto\n pdfjs-free-text-default-content = Empezar a escribir…\n@@ -347,8 +388,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Texto alternativo\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Editar el texto alternativo\n pdfjs-editor-alt-text-edit-button-label = Editar el texto alternativo\n pdfjs-editor-alt-text-dialog-label = Eligir una opción\n pdfjs-editor-alt-text-dialog-description = El texto alternativo (texto alternativo) ayuda cuando las personas no pueden ver la imagen o cuando no se carga.\n@@ -362,6 +404,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Por ejemplo: “Un joven se sienta a la mesa a comer”\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Texto alternativo\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -374,6 +419,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Borde inferior en el medio — redimensionar\n pdfjs-editor-resizer-label-bottom-left = Esquina inferior izquierda — redimensionar\n pdfjs-editor-resizer-label-middle-left = Borde izquierdo en el medio — redimensionar\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Esquina superior izquierda — redimensionar\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Borde superior en el medio — redimensionar\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Esquina superior derecha — redimensionar\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Borde derecho en el medio — redimensionar\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Esquina inferior derecha — redimensionar\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Borde inferior en el medio — redimensionar\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Esquina inferior izquierda — redimensionar\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Borde izquierdo en el medio — redimensionar\n \n ## Color picker\n \n@@ -400,3 +461,155 @@\n pdfjs-editor-highlight-show-all-button-label = Mostrar todo\n pdfjs-editor-highlight-show-all-button =\n     .title = Mostrar todo\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Editar texto alternativo (descripción de la imagen)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Añadir texto alternativo (descripción de la imagen)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Escribir la descripción aquí…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Breve descripción para las personas que no pueden ver la imagen o cuando la imagen no se carga.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Este texto alternativo fue creado automáticamente y puede ser inexacto.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Saber más\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Crear texto alternativo automáticamente\n+pdfjs-editor-new-alt-text-not-now-button = Ahora no\n+pdfjs-editor-new-alt-text-error-title = No se ha podido crear el texto alternativo automáticamente\n+pdfjs-editor-new-alt-text-error-description = Escriba su propio texto alternativo o inténtelo de nuevo más tarde.\n+pdfjs-editor-new-alt-text-error-close-button = Cerrar\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Descargando el modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB)\n+    .aria-valuetext = Descargando el modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Se añadió el texto alternativo\n+pdfjs-editor-new-alt-text-added-button-label = Se añadió el texto alternativo\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Falta el texto alternativo\n+pdfjs-editor-new-alt-text-missing-button-label = Falta el texto alternativo\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Revisar el texto alternativo\n+pdfjs-editor-new-alt-text-to-review-button-label = Revisar el texto alternativo\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Creado automáticamente: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Ajustes del texto alternativo de la imagen\n+pdfjs-image-alt-text-settings-button-label = Ajustes del texto alternativo de la imagen\n+pdfjs-editor-alt-text-settings-dialog-label = Ajustes del texto alternativo de la imagen\n+pdfjs-editor-alt-text-settings-automatic-title = Texto alternativo automático\n+pdfjs-editor-alt-text-settings-create-model-button-label = Crear texto alternativo automáticamente\n+pdfjs-editor-alt-text-settings-create-model-description = Sugiere descripciones para ayudar a las personas que no pueden ver la imagen o cuando la imagen no se carga.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Modelo de IA de texto alternativo ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Se ejecuta localmente en el dispositivo para que los datos se mantengan privados. Requerido para texto alternativo automático.\n+pdfjs-editor-alt-text-settings-delete-model-button = Eliminar\n+pdfjs-editor-alt-text-settings-download-model-button = Descargar\n+pdfjs-editor-alt-text-settings-downloading-model-button = Descargando…\n+pdfjs-editor-alt-text-settings-editor-title = Editor de texto alternativo\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Mostrar el editor de texto alternativo inmediatamente al añadir una imagen\n+pdfjs-editor-alt-text-settings-show-dialog-description = Le ayuda a asegurarse de que todas sus imágenes tengan texto alternativo.\n+pdfjs-editor-alt-text-settings-close-button = Cerrar\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Resaltado eliminado\n+pdfjs-editor-undo-bar-message-freetext = Texto eliminado\n+pdfjs-editor-undo-bar-message-ink = Dibujo eliminado\n+pdfjs-editor-undo-bar-message-stamp = Imagen eliminada\n+pdfjs-editor-undo-bar-message-signature = Firma eliminada\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } anotación eliminada\n+       *[other] { $count } anotaciones eliminadas\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Deshacer\n+pdfjs-editor-undo-bar-undo-button-label = Deshacer\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Cerrar\n+pdfjs-editor-undo-bar-close-button-label = Cerrar\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Este modal permite al usuario crear una firma para añadirla a un documento PDF. El usuario puede editar el nombre (que también sirve como texto alternativo) y, opcionalmente, guardar la firma para usarla nuevamente.\n+pdfjs-editor-add-signature-dialog-title = Añadir una firma\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Escribir\n+    .title = Escribir\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Dibujar\n+    .title = Dibujar\n+pdfjs-editor-add-signature-image-button = Imagen\n+    .title = Imagen\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Escriba su firma\n+    .placeholder = Escriba su firma\n+pdfjs-editor-add-signature-draw-placeholder = Dibuje su firma\n+pdfjs-editor-add-signature-draw-thickness-range-label = Grosor\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Grosor del dibujo: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Arrastre un archivo aquí para cargarlo\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] O seleccione archivos de imágenes\n+       *[other] O seleccione archivos de imágenes\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Descripción (texto alternativo)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Descripción (texto alternativo)\n+pdfjs-editor-add-signature-description-default-when-drawing = Firma\n+pdfjs-editor-add-signature-clear-button-label = Borrar firma\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Borrar firma\n+pdfjs-editor-add-signature-save-checkbox = Guardar firma\n+pdfjs-editor-add-signature-save-warning-message = Ha alcanzado el límite de 5 firmas guardadas. Elimine una para guardar más.\n+pdfjs-editor-add-signature-image-upload-error-title = No se ha podido subir la imagen\n+pdfjs-editor-add-signature-image-upload-error-description = Compruebe su conexión de red o pruebe con otra imagen.\n+pdfjs-editor-add-signature-error-close-button = Cerrar\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Cancelar\n+pdfjs-editor-add-signature-add-button = Añadir\n+pdfjs-editor-edit-signature-update-button = Actualizar\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Eliminar firma guardada\n+pdfjs-editor-delete-signature-button-label1 = Eliminar firma guardada\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Editar descripción\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Editar descripción\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fes-MX\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fes-MX\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fes-MX\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fes-MX\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -42,15 +42,15 @@\n pdfjs-save-button =\n     .title = Guardar\n pdfjs-save-button-label = Guardar\n+# Used in Firefox for Android as a tooltip for the download button (“download” is a verb).\n+pdfjs-download-button =\n+    .title = Descargar\n+# Used in Firefox for Android as a label for the download button (“download” is a verb).\n+# Length of the translation matters since we are in a mobile context, with limited screen estate.\n+pdfjs-download-button-label = Descargar\n pdfjs-bookmark-button =\n     .title = Página actual (Ver URL de la página actual)\n pdfjs-bookmark-button-label = Página actual\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Abrir en la aplicación\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Abrir en la aplicación\n \n ##  Secondary toolbar and context menu\n \n@@ -105,6 +105,14 @@\n pdfjs-document-properties-file-name = Nombre del archivo:\n pdfjs-document-properties-file-size = Tamaño del archivo:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bytes)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)\n@@ -119,6 +127,9 @@\n pdfjs-document-properties-creation-date = Fecha de creación:\n pdfjs-document-properties-modification-date = Fecha de modificación:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -220,6 +231,21 @@\n pdfjs-find-entire-word-checkbox-label = Palabras completas\n pdfjs-find-reached-top = Se alcanzó el inicio del documento, se buscará al final\n pdfjs-find-reached-bottom = Se alcanzó el final del documento, se buscará al inicio\n+# Variables:\n+#   $current (Number) - the index of the currently active find result\n+#   $total (Number) - the total number of matches in the document\n+pdfjs-find-match-count =\n+    { $total ->\n+        [one] { $current } de { $total } coincidencia\n+       *[other] { $current } de { $total } coincidencias\n+    }\n+# Variables:\n+#   $limit (Number) - the maximum number of matches\n+pdfjs-find-match-count-limit =\n+    { $limit ->\n+        [one] Más de { $limit } coincidencia\n+       *[other] Más de { $limit } coincidencias\n+    }\n pdfjs-find-not-found = No se encontró la frase\n \n ## Predefined zoom values\n@@ -260,6 +286,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type } anotación]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -277,12 +306,58 @@\n pdfjs-editor-ink-button =\n     .title = Dibujar\n pdfjs-editor-ink-button-label = Dibujar\n+pdfjs-editor-stamp-button =\n+    .title = Agregar o editar imágenes\n+pdfjs-editor-stamp-button-label = Agregar o editar imágenes\n+pdfjs-editor-highlight-button =\n+    .title = Destacar\n+pdfjs-editor-highlight-button-label = Destacar\n+pdfjs-highlight-floating-button1 =\n+    .title = Destacados\n+    .aria-label = Destacados\n+pdfjs-highlight-floating-button-label = Destacados\n+pdfjs-editor-signature-button =\n+    .title = Agregar firma\n+pdfjs-editor-signature-button-label = Añadir firma\n+\n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+pdfjs-editor-remove-ink-button =\n+    .title = Eliminar dibujo\n+pdfjs-editor-remove-freetext-button =\n+    .title = Eliminar texto\n+pdfjs-editor-remove-stamp-button =\n+    .title = Eliminar imagen\n+pdfjs-editor-remove-highlight-button =\n+    .title = Eliminar destacado\n+pdfjs-editor-remove-signature-button =\n+    .title = Eliminar firma\n+\n+##\n+\n # Editor Parameters\n pdfjs-editor-free-text-color-input = Color\n pdfjs-editor-free-text-size-input = Tamaño\n pdfjs-editor-ink-color-input = Color\n pdfjs-editor-ink-thickness-input = Grossor\n pdfjs-editor-ink-opacity-input = Opacidad\n+pdfjs-editor-stamp-add-image-button =\n+    .title = Agregar imagen\n+pdfjs-editor-stamp-add-image-button-label = Agregar imagen\n+# This refers to the thickness of the line used for free highlighting (not bound to text)\n+pdfjs-editor-free-highlight-thickness-input = Espesor\n+pdfjs-editor-free-highlight-thickness-title =\n+    .title = Cambiar el grosor al resaltar elementos que no sean texto\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Agregar nueva firma\n+pdfjs-editor-signature-add-signature-button-label = Agregar nueva firma\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Editor de texto\n+    .default-content = Comenzar a escribir…\n pdfjs-free-text =\n     .aria-label = Editor de texto\n pdfjs-free-text-default-content = Empieza a escribir…\n@@ -293,7 +368,213 @@\n \n ## Alt-text dialog\n \n+pdfjs-editor-alt-text-button-label = Texto alternativo\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Editar texto alternativo\n+pdfjs-editor-alt-text-edit-button-label = Editar texto alternativo\n+pdfjs-editor-alt-text-dialog-label = Elige una opción\n+pdfjs-editor-alt-text-dialog-description = El texto alternativo (texto alternativo) ayuda cuando las personas no pueden ver la imagen o cuando no se carga.\n+pdfjs-editor-alt-text-add-description-label = Añadir una descripción\n+pdfjs-editor-alt-text-add-description-description = Intente escribir 1 o 2 oraciones que describan el tema, el entorno o las acciones.\n+pdfjs-editor-alt-text-mark-decorative-label = Marcar como decorativo\n+pdfjs-editor-alt-text-mark-decorative-description = Se utiliza para imágenes ornamentales, como bordes o marcas de agua.\n+pdfjs-editor-alt-text-cancel-button = Cancelar\n+pdfjs-editor-alt-text-save-button = Guardar\n+pdfjs-editor-alt-text-decorative-tooltip = Marcado como decorativo\n+# .placeholder: This is a placeholder for the alt text input area\n+pdfjs-editor-alt-text-textarea =\n+    .placeholder = Por ejemplo: “Un joven se sienta a la mesa a comer”\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Texto alternativo\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+pdfjs-editor-resizer-label-top-left = Esquina superior izquierda: cambiar el tamaño\n+pdfjs-editor-resizer-label-top-middle = Arriba en el medio: cambiar el tamaño\n+pdfjs-editor-resizer-label-top-right = Esquina superior derecha: cambiar el tamaño\n+pdfjs-editor-resizer-label-middle-right = Centro derecha: cambiar el tamaño\n+pdfjs-editor-resizer-label-bottom-right = Esquina inferior derecha: cambiar el tamaño\n+pdfjs-editor-resizer-label-bottom-middle = Abajo en el medio: cambiar el tamaño\n+pdfjs-editor-resizer-label-bottom-left = Esquina inferior izquierda: cambiar el tamaño\n+pdfjs-editor-resizer-label-middle-left = Centro izquierda: cambiar el tamaño\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Esquina superior izquierda — redimensionar\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Borde superior en el medio — redimensionar\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Esquina superior derecha — redimensionar\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Borde derecho en el medio — redimensionar\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Esquina inferior derecha — redimensionar\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Borde inferior en el medio — redimensionar\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Esquina inferior izquierda — redimensionar\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Borde izquierdo en el medio — redimensionar\n+\n+## Color picker\n+\n+# This means \"Color used to highlight text\"\n+pdfjs-editor-highlight-colorpicker-label = Color de resaltado\n+pdfjs-editor-colorpicker-button =\n+    .title = Cambiar color\n+pdfjs-editor-colorpicker-dropdown =\n+    .aria-label = Opciones de color\n+pdfjs-editor-colorpicker-yellow =\n+    .title = Amarillo\n+pdfjs-editor-colorpicker-green =\n+    .title = Verde\n+pdfjs-editor-colorpicker-blue =\n+    .title = Azul\n+pdfjs-editor-colorpicker-pink =\n+    .title = Rosa\n+pdfjs-editor-colorpicker-red =\n+    .title = Rojo\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+pdfjs-editor-highlight-show-all-button-label = Mostrar todo\n+pdfjs-editor-highlight-show-all-button =\n+    .title = Mostrar todo\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Editar texto alternativo (descripción de la imagen)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Agregar texto alternativo (descripción de la imagen)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Escribe tu descripción aquí…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Breve descripción para las personas que no pueden ver la imagen o cuando la imagen no se carga.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Este texto alternativo fue creado automáticamente y puede ser inexacto.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Saber más\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Crear texto alternativo automáticamente\n+pdfjs-editor-new-alt-text-not-now-button = Ahora no\n+pdfjs-editor-new-alt-text-error-title = No se pudo crear el texto alternativo automáticamente\n+pdfjs-editor-new-alt-text-error-description = Escribe tu propio texto alternativo o inténtalo de nuevo más tarde.\n+pdfjs-editor-new-alt-text-error-close-button = Cerrar\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Descargando el modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB)\n+    .aria-valuetext = Descargando el modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Se agregó el texto alternativo\n+pdfjs-editor-new-alt-text-added-button-label = Se agregó el texto alternativo\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Falta el texto alternativo\n+pdfjs-editor-new-alt-text-missing-button-label = Falta texto alternativo\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Revisar el texto alternativo\n+pdfjs-editor-new-alt-text-to-review-button-label = Revisar el texto alternativo\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Creado automáticamente: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Ajustes del texto alternativo de la imagen\n+pdfjs-image-alt-text-settings-button-label = Ajustes del texto alternativo de la imagen\n+pdfjs-editor-alt-text-settings-dialog-label = Ajustes del texto alternativo de la imagen\n+pdfjs-editor-alt-text-settings-automatic-title = Texto alternativo automático\n+pdfjs-editor-alt-text-settings-create-model-button-label = Crear texto alternativo automáticamente\n+pdfjs-editor-alt-text-settings-create-model-description = Sugiere descripciones para ayudar a las personas que no pueden ver la imagen o cuando la imagen no se carga.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Modelo de IA de texto alternativo ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Se ejecuta localmente en el dispositivo para que los datos se mantengan privados. Requerido para texto alternativo automático.\n+pdfjs-editor-alt-text-settings-delete-model-button = Eliminar\n+pdfjs-editor-alt-text-settings-download-model-button = Descargar\n+pdfjs-editor-alt-text-settings-downloading-model-button = Descargando…\n+pdfjs-editor-alt-text-settings-editor-title = Editor de texto alternativo\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Mostrar el editor de texto alternativo inmediatamente al añadir una imagen\n+pdfjs-editor-alt-text-settings-show-dialog-description = Te ayuda a asegurarte de que todas tus imágenes tengan texto alternativo.\n+pdfjs-editor-alt-text-settings-close-button = Cerrar\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Resaltado eliminado\n+pdfjs-editor-undo-bar-message-freetext = Texto eliminado\n+pdfjs-editor-undo-bar-message-ink = Dibujo eliminado\n+pdfjs-editor-undo-bar-message-stamp = Imagen eliminada\n+pdfjs-editor-undo-bar-message-signature = Firma eliminada\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } anotación eliminada\n+       *[other] { $count } anotaciones eliminadas\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Deshacer\n+pdfjs-editor-undo-bar-undo-button-label = Deshacer\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Cerrar\n+pdfjs-editor-undo-bar-close-button-label = Cerrar\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-title = Agregar una firma\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Tipo\n+    .title = Tipo\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Dibujar\n+    .title = Dibujar\n+pdfjs-editor-add-signature-image-button = Imagen\n+    .title = Imagen\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Escribe tu firma\n+    .placeholder = Escribe tu firma\n+pdfjs-editor-add-signature-draw-placeholder = Dibuja tu firma\n+pdfjs-editor-add-signature-draw-thickness-range-label = Grossor\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Descripción (texto alternativo)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Descripción (texto alternativo)\n+pdfjs-editor-add-signature-description-default-when-drawing = Firma\n+pdfjs-editor-add-signature-clear-button-label = Limpiar firma\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Limpiar firma\n+pdfjs-editor-add-signature-save-checkbox = Guardar firma\n+pdfjs-editor-add-signature-save-warning-message = Has alcanzado el límite de 5 firmas guardadas. Elimina una para guardar más.\n+pdfjs-editor-add-signature-image-upload-error-title = No se pudo cargar la imagen\n+pdfjs-editor-add-signature-image-upload-error-description = Verifica tu conexión de red o prueba con otra imagen.\n+pdfjs-editor-add-signature-error-close-button = Cerrar\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Cancelar\n+pdfjs-editor-add-signature-add-button = Agregar\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Editar descripción\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Editar descripción\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fet\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fet\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fet\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fet\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -260,9 +260,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Feu\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Feu\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Feu\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Feu\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Uneko orria (ikusi uneko orriaren URLa)\n pdfjs-bookmark-button-label = Uneko orria\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Ireki aplikazioan\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Ireki aplikazioan\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = Fitxategi-izena:\n pdfjs-document-properties-file-size = Fitxategiaren tamaina:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } byte)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } byte)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } byte)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Sortze-data:\n pdfjs-document-properties-modification-date = Aldatze-data:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -281,6 +286,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type } ohartarazpena]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -304,12 +312,29 @@\n pdfjs-editor-highlight-button =\n     .title = Nabarmendu\n pdfjs-editor-highlight-button-label = Nabarmendu\n-pdfjs-highlight-floating-button =\n-    .title = Nabarmendu\n pdfjs-highlight-floating-button1 =\n     .title = Nabarmendu\n     .aria-label = Nabarmendu\n pdfjs-highlight-floating-button-label = Nabarmendu\n+pdfjs-editor-signature-button =\n+    .title = Gehitu sinadura\n+pdfjs-editor-signature-button-label = Gehitu sinadura\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Nabarmendutakoen editorea\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Marrazkien editorea\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Sinaduren editorea: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Irudien editorea\n \n ## Remove button for the various kind of editor.\n \n@@ -321,6 +346,8 @@\n     .title = Kendu irudia\n pdfjs-editor-remove-highlight-button =\n     .title = Kendu nabarmentzea\n+pdfjs-editor-remove-signature-button =\n+    .title = Kendu sinadura\n \n ##\n \n@@ -337,6 +364,20 @@\n pdfjs-editor-free-highlight-thickness-input = Loditasuna\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Aldatu loditasuna testua ez beste elementuak nabarmentzean\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Sinaduren kontrolak eta gordetako sinadurak\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Gehitu sinadura berria\n+pdfjs-editor-signature-add-signature-button-label = Gehitu sinadura berria\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Gordetako sinadura: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Testu-editorea\n+    .default-content = Hasi idazten…\n pdfjs-free-text =\n     .aria-label = Testu-editorea\n pdfjs-free-text-default-content = Hasi idazten…\n@@ -347,8 +388,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Testu alternatiboa\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Editatu testu alternatiboa\n pdfjs-editor-alt-text-edit-button-label = Editatu testu alternatiboa\n pdfjs-editor-alt-text-dialog-label = Aukeratu aukera\n pdfjs-editor-alt-text-dialog-description = Testu alternatiboak laguntzen du jendeak ezin duenean irudia ikusi edo ez denean kargatzen.\n@@ -362,6 +404,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Adibidez, \"gizon gaztea mahaian eserita dago bazkaltzeko\"\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Testu alternatiboa\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -374,6 +419,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Behean erdian — aldatu tamaina\n pdfjs-editor-resizer-label-bottom-left = Beheko ezkerreko izkina — aldatu tamaina\n pdfjs-editor-resizer-label-middle-left = Erdian ezkerrean —  aldatu tamaina\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Goiko ezkerreko izkina — aldatu tamaina\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Goian erdian — aldatu tamaina\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Goiko eskuineko izkina — aldatu tamaina\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Erdian eskuinean — aldatu tamaina\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Beheko eskuineko izkina — aldatu tamaina\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Behean erdian — aldatu tamaina\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Beheko ezkerreko izkina — aldatu tamaina\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Erdian ezkerrean —  aldatu tamaina\n \n ## Color picker\n \n@@ -400,3 +461,159 @@\n pdfjs-editor-highlight-show-all-button-label = Erakutsi denak\n pdfjs-editor-highlight-show-all-button =\n     .title = Erakutsi denak\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Editatu testu alternatiboa (irudiaren azalpena)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Gehitu testu alternatiboa (irudiaren azalpena)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Idatzi zure azalpena hemen…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Azalpen laburra irudia ikusi ezin duen jendearentzat edo irudia kargatu ezin denerako.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Testu alternatibo hau automatikoki sortu da eta okerra izan liteke.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Argibide gehiago\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Sortu testu alternatiboa automatikoki\n+pdfjs-editor-new-alt-text-not-now-button = Une honetan ez\n+pdfjs-editor-new-alt-text-error-title = Ezin da testu alternatiboa automatikoki sortu\n+pdfjs-editor-new-alt-text-error-description = Idatzi zure testu alternatibo propioa edo saiatu berriro geroago.\n+pdfjs-editor-new-alt-text-error-close-button = Itxi\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Testu alternatiboaren AA modeloa deskargatzen ({ $totalSize }\u002F{ $downloadedSize } MB)\n+    .aria-valuetext = Testu alternatiboaren AA modeloa deskargatzen ({ $totalSize }\u002F{ $downloadedSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Testu alternatiboa gehituta\n+pdfjs-editor-new-alt-text-added-button-label = Testu alternatiboa gehituta\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Testu alternatiboa falta da\n+pdfjs-editor-new-alt-text-missing-button-label = Testu alternatiboa falta da\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Berrikusi testu alternatiboa\n+pdfjs-editor-new-alt-text-to-review-button-label = Berrikusi testu alternatiboa\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Automatikoki sortua: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Irudiaren testu alternatiboaren ezarpenak\n+pdfjs-image-alt-text-settings-button-label = Irudiaren testu alternatiboaren ezarpenak\n+pdfjs-editor-alt-text-settings-dialog-label = Irudiaren testu alternatiboaren ezarpenak\n+pdfjs-editor-alt-text-settings-automatic-title = Testu alternatibo automatikoa\n+pdfjs-editor-alt-text-settings-create-model-button-label = Sortu testu alternatiboa automatikoki\n+pdfjs-editor-alt-text-settings-create-model-description = Azalpenak iradokitzen ditu irudia ikusi ezin duen jendearentzat edo irudia kargatu ezin denerako.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Testu alternatiboaren AA modeloa ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Zure gailuan modu lokalean exekutatzen da eta zure datuak pribatu mantentzen dira. Testu alternatibo automatikorako beharrezkoa.\n+pdfjs-editor-alt-text-settings-delete-model-button = Ezabatu\n+pdfjs-editor-alt-text-settings-download-model-button = Deskargatu\n+pdfjs-editor-alt-text-settings-downloading-model-button = Deskargatzen…\n+pdfjs-editor-alt-text-settings-editor-title = Testu alternatiboaren editorea\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Erakutsi testu alternatiboa irudi bat gehitzean berehala\n+pdfjs-editor-alt-text-settings-show-dialog-description = Zure irudiek testu alternatiboa duela ziurtatzen laguntzen dizu.\n+pdfjs-editor-alt-text-settings-close-button = Itxi\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Nabarmentzea kenduta\n+pdfjs-editor-undo-bar-message-freetext = Testua kenduta\n+pdfjs-editor-undo-bar-message-ink = Marrazkia kenduta\n+pdfjs-editor-undo-bar-message-stamp = Irudia kenduta\n+pdfjs-editor-undo-bar-message-signature = Sinadura kenduta\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] Esku-ohar bat kenduta\n+       *[other] { $count } esku-ohar kenduta\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Desegin\n+pdfjs-editor-undo-bar-undo-button-label = Desegin\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Itxi\n+pdfjs-editor-undo-bar-close-button-label = Itxi\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label =\n+    Leiho modal honek PDF dokumentu batera gehitzeko sinadurak\n+    sortzea ahalbidetzen dio erabiltzaileari. Erabiltzaileak izena edita\n+    dezake (testu alternatibo modura ere erabiltzen dena) eta sinadura\n+    gordetzeko aukera du gehiagotan erabili ahal izateko.\n+pdfjs-editor-add-signature-dialog-title = Gehitu sinadura\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Idatzi\n+    .title = Idatzi\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Marraztu\n+    .title = Marraztu\n+pdfjs-editor-add-signature-image-button = Irudia\n+    .title = Irudia\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Idatzi zure sinadura\n+    .placeholder = Idatzi zure sinadura\n+pdfjs-editor-add-signature-draw-placeholder = Marraztu zure sinadura\n+pdfjs-editor-add-signature-draw-thickness-range-label = Loditasuna\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Marrazteko loditasuna: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Igotzeko, jaregin fitxategia hemen\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Edo aukeratu irudi-fitxategiak\n+       *[other] Edo arakatu irudi-fitxategiak\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Azalpena (testu alternatiboa)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Azalpena (testu alternatiboa)\n+pdfjs-editor-add-signature-description-default-when-drawing = Sinadura\n+pdfjs-editor-add-signature-clear-button-label = Garbitu sinadura\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Garbitu sinadura\n+pdfjs-editor-add-signature-save-checkbox = Gorde sinadura\n+pdfjs-editor-add-signature-save-warning-message = Gordetako sinadura kopuruaren mugara heldu zara (5). Gehiago gorde ahal izateko, ken ezazu bat.\n+pdfjs-editor-add-signature-image-upload-error-title = Ezin da irudia igo\n+pdfjs-editor-add-signature-image-upload-error-description = Egiaztatu zure sareko konexioa edo saiatu beste irudi batekin.\n+pdfjs-editor-add-signature-error-close-button = Itxi\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Utzi\n+pdfjs-editor-add-signature-add-button = Gehitu\n+pdfjs-editor-edit-signature-update-button = Eguneratu\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Kendu gordetako sinadura\n+pdfjs-editor-delete-signature-button-label1 = Kendu gordetako sinadura\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Editatu azalpena\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Editatu azalpena\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ffa\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ffa\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ffa\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ffa\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -39,7 +39,18 @@\n pdfjs-print-button =\n     .title = چاپ\n pdfjs-print-button-label = چاپ\n+pdfjs-save-button =\n+    .title = ذخیره\n pdfjs-save-button-label = ذخیره\n+# Used in Firefox for Android as a tooltip for the download button (“download” is a verb).\n+pdfjs-download-button =\n+    .title = دریافت\n+# Used in Firefox for Android as a label for the download button (“download” is a verb).\n+# Length of the translation matters since we are in a mobile context, with limited screen estate.\n+pdfjs-download-button-label = دریافت\n+pdfjs-bookmark-button =\n+    .title = صفحه فعلی (مشاهده نشانی اینترنتی از صفحه فعلی)\n+pdfjs-bookmark-button-label = صفحه فعلی\n \n ##  Secondary toolbar and context menu\n \n@@ -64,21 +75,35 @@\n pdfjs-cursor-hand-tool-button =\n     .title = فعال کردن ابزارِ دست\n pdfjs-cursor-hand-tool-button-label = ابزار دست\n+pdfjs-scroll-page-button =\n+    .title = استفاده از پیمایش صفحه\n+pdfjs-scroll-page-button-label = پیمایش صفحه\n pdfjs-scroll-vertical-button =\n     .title = استفاده از پیمایش عمودی\n pdfjs-scroll-vertical-button-label = پیمایش عمودی\n pdfjs-scroll-horizontal-button =\n     .title = استفاده از پیمایش افقی\n pdfjs-scroll-horizontal-button-label = پیمایش افقی\n+pdfjs-spread-none-button =\n+    .title = صفحات پیوسته را یکی نکنید\n+pdfjs-spread-none-button-label = بدون صفحات پیوسته\n \n ## Document properties dialog\n \n pdfjs-document-properties-button =\n     .title = خصوصیات سند...\n pdfjs-document-properties-button-label = خصوصیات سند...\n-pdfjs-document-properties-file-name = نام فایل:\n+pdfjs-document-properties-file-name = نام پرونده:\n pdfjs-document-properties-file-size = حجم پرونده:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } کیلوبایت ({ $b } بایت)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } مگابایت ({ $b } بایت)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } کیلوبایت ({ $size_b } بایت)\n@@ -93,6 +118,9 @@\n pdfjs-document-properties-creation-date = تاریخ ایجاد:\n pdfjs-document-properties-modification-date = تاریخ ویرایش:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }، { $time }\n@@ -209,6 +237,10 @@\n \n ## Annotations\n \n+# Variables:\n+#   $date (Date) - the modification date of the annotation\n+#   $time (Time) - the modification time of the annotation\n+pdfjs-annotation-date-string = { $date }، { $time }\n # .alt: This is used as a tooltip.\n # Variables:\n #   $type (String) - an annotation type from a list defined in the PDF spec\n@@ -216,6 +248,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type } Annotation]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -233,14 +268,111 @@\n pdfjs-editor-ink-button =\n     .title = کشیدن\n pdfjs-editor-ink-button-label = کشیدن\n+pdfjs-editor-stamp-button =\n+    .title = افزودن یا ویرایش تصاویر\n+pdfjs-editor-stamp-button-label = افزودن یا ویرایش تصاویر\n+pdfjs-editor-highlight-button =\n+    .title = برجسته کردن\n+pdfjs-editor-highlight-button-label = برجسته کردن\n+pdfjs-highlight-floating-button1 =\n+    .title = برجسته کردن\n+    .aria-label = برجسته کردن\n+pdfjs-highlight-floating-button-label = برجسته کردن\n+\n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n # Editor Parameters\n pdfjs-editor-free-text-color-input = رنگ\n pdfjs-editor-free-text-size-input = اندازه\n pdfjs-editor-ink-color-input = رنگ\n+pdfjs-editor-stamp-add-image-button =\n+    .title = افزودن تصویر\n+pdfjs-editor-stamp-add-image-button-label = افزودن تصویر\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = ویرایشگر متن\n+    .default-content = شروع به نوشتن کنید…\n+pdfjs-free-text =\n+    .aria-label = ویرایشگر متن\n+pdfjs-free-text-default-content = شروع به نوشتن کنید…\n \n ## Alt-text dialog\n \n+pdfjs-editor-alt-text-add-description-label = افزودن توضیحات\n+pdfjs-editor-alt-text-cancel-button = انصراف\n+pdfjs-editor-alt-text-save-button = ذخیره\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+pdfjs-editor-colorpicker-button =\n+    .title = تغییر رنگ\n+pdfjs-editor-colorpicker-dropdown =\n+    .aria-label = انتخاب رنگ\n+pdfjs-editor-colorpicker-yellow =\n+    .title = زرد\n+pdfjs-editor-colorpicker-green =\n+    .title = سبز\n+pdfjs-editor-colorpicker-blue =\n+    .title = آبی\n+pdfjs-editor-colorpicker-pink =\n+    .title = صورتی\n+pdfjs-editor-colorpicker-red =\n+    .title = قرمز\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+pdfjs-editor-highlight-show-all-button-label = نمایش همه\n+pdfjs-editor-highlight-show-all-button =\n+    .title = نمایش همه\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = بیشتر بدانید\n+pdfjs-editor-new-alt-text-not-now-button = اکنون نه\n+pdfjs-editor-new-alt-text-error-close-button = بستن\n+\n+## Image alt-text settings\n+\n+pdfjs-editor-alt-text-settings-delete-model-button = حذف\n+pdfjs-editor-alt-text-settings-download-model-button = دریافت\n+pdfjs-editor-alt-text-settings-downloading-model-button = در حال دریافت…\n+pdfjs-editor-alt-text-settings-close-button = بستن\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fff\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fff\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fff\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fff\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -239,9 +239,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ffi\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ffi\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ffi\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ffi\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Nykyinen sivu (Näytä URL-osoite nykyiseltä sivulta)\n pdfjs-bookmark-button-label = Nykyinen sivu\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Avaa sovelluksessa\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Avaa sovelluksessa\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = Tiedoston nimi:\n pdfjs-document-properties-file-size = Tiedoston koko:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } kt ({ $b } tavua)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } Mt ({ $b } tavua)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } kt ({ $size_b } tavua)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Luomispäivämäärä:\n pdfjs-document-properties-modification-date = Muokkauspäivämäärä:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -281,6 +286,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type }-merkintä]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -304,12 +312,29 @@\n pdfjs-editor-highlight-button =\n     .title = Korostus\n pdfjs-editor-highlight-button-label = Korostus\n-pdfjs-highlight-floating-button =\n-    .title = Korostus\n pdfjs-highlight-floating-button1 =\n     .title = Korostus\n     .aria-label = Korostus\n pdfjs-highlight-floating-button-label = Korostus\n+pdfjs-editor-signature-button =\n+    .title = Lisää allekirjoitus\n+pdfjs-editor-signature-button-label = Lisää allekirjoitus\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Korostusmuokkain\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Piirustusmuokkain\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Allekirjoituksen muokkain: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Kuvamuokkain\n \n ## Remove button for the various kind of editor.\n \n@@ -321,6 +346,8 @@\n     .title = Poista kuva\n pdfjs-editor-remove-highlight-button =\n     .title = Poista korostus\n+pdfjs-editor-remove-signature-button =\n+    .title = Poista allekirjoitus\n \n ##\n \n@@ -337,6 +364,20 @@\n pdfjs-editor-free-highlight-thickness-input = Paksuus\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Muuta paksuutta korostaessasi muita kohteita kuin tekstiä\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Allekirjoitussäätimet ja tallennetut allekirjoitukset\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Lisää uusi allekirjoitus\n+pdfjs-editor-signature-add-signature-button-label = Lisää uusi allekirjoitus\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Tallennettu allekirjoitus: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Tekstimuokkain\n+    .default-content = Aloita kirjoittaminen…\n pdfjs-free-text =\n     .aria-label = Tekstimuokkain\n pdfjs-free-text-default-content = Aloita kirjoittaminen…\n@@ -347,8 +388,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Vaihtoehtoinen teksti\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Muokkaa vaihtoehtoista tekstiä\n pdfjs-editor-alt-text-edit-button-label = Muokkaa vaihtoehtoista tekstiä\n pdfjs-editor-alt-text-dialog-label = Valitse vaihtoehto\n pdfjs-editor-alt-text-dialog-description = Vaihtoehtoinen teksti (\"alt-teksti\") auttaa ihmisiä, jotka eivät näe kuvaa tai kun kuva ei lataudu.\n@@ -362,6 +404,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Esimerkiksi \"Nuori mies istuu pöytään syömään aterian\"\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Vaihtoehtoinen teksti\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -374,6 +419,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Alhaalla keskellä - muuta kokoa\n pdfjs-editor-resizer-label-bottom-left = Vasen alakulma - muuta kokoa\n pdfjs-editor-resizer-label-middle-left = Keskellä vasemmalla - muuta kokoa\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Vasen yläkulma - muuta kokoa\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Ylhäällä keskellä - muuta kokoa\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Oikea yläkulma - muuta kokoa\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Keskellä oikealla - muuta kokoa\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Oikea alakulma - muuta kokoa\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Alhaalla keskellä - muuta kokoa\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Vasen alakulma - muuta kokoa\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Keskellä vasemmalla - muuta kokoa\n \n ## Color picker\n \n@@ -400,3 +461,155 @@\n pdfjs-editor-highlight-show-all-button-label = Näytä kaikki\n pdfjs-editor-highlight-show-all-button =\n     .title = Näytä kaikki\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Muokkaa vaihtoehtoista tekstiä (kuvan kuvaus)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Lisää vaihtoehtoinen teksti (kuvan kuvaus)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Kirjoita kuvaus tähän…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Lyhyt kuvaus ihmisille, jotka eivät näe kuvaa tai kun kuva ei lataudu.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Tämä vaihtoehtoinen teksti luotiin automaattisesti, ja se voi olla epätarkka.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Lue lisää\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Luo vaihtoehtoinen teksti automaattisesti\n+pdfjs-editor-new-alt-text-not-now-button = Ei nyt\n+pdfjs-editor-new-alt-text-error-title = Vaihtoehtotekstiä ei voitu luoda automaattisesti\n+pdfjs-editor-new-alt-text-error-description = Kirjoita oma vaihtoehtoinen teksti tai yritä myöhemmin uudelleen.\n+pdfjs-editor-new-alt-text-error-close-button = Sulje\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Ladataan vaihtoehtoisen tekstin tekoälymallia ({ $downloadedSize } \u002F { $totalSize } Mt)\n+    .aria-valuetext = Ladataan vaihtoehtoisen tekstin tekoälymallia ({ $downloadedSize } \u002F { $totalSize } Mt)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Vaihtoehtoinen teksti lisätty\n+pdfjs-editor-new-alt-text-added-button-label = Vaihtoehtoinen teksti lisätty\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Vaihtoehtoinen teksti puuttuu\n+pdfjs-editor-new-alt-text-missing-button-label = Vaihtoehtoinen teksti puuttuu\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Tarkista vaihtoehtoinen teksti\n+pdfjs-editor-new-alt-text-to-review-button-label = Tarkista vaihtoehtoinen teksti\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Luotu automaattisesti: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Kuvan vaihtoehtoisen tekstin asetukset\n+pdfjs-image-alt-text-settings-button-label = Kuvan vaihtoehtoisen tekstin asetukset\n+pdfjs-editor-alt-text-settings-dialog-label = Kuvan vaihtoehtoisen tekstin asetukset\n+pdfjs-editor-alt-text-settings-automatic-title = Automaattinen vaihtoehtoinen teksti\n+pdfjs-editor-alt-text-settings-create-model-button-label = Luo vaihtoehtoinen teksti automaattisesti\n+pdfjs-editor-alt-text-settings-create-model-description = Ehdottaa kuvauksia, jotka auttavat ihmisiä, jotka eivät näe kuvaa tai kun kuva ei lataudu.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Vaihtoehtoisen tekstin tekoälymalli ({ $totalSize } Mt)\n+pdfjs-editor-alt-text-settings-ai-model-description = Toimii paikallisesti laitteellasi, joten tietosi pysyvät yksityisinä. Vaadittu automaattiselle vaihtoehtoiselle tekstille.\n+pdfjs-editor-alt-text-settings-delete-model-button = Poista\n+pdfjs-editor-alt-text-settings-download-model-button = Lataa\n+pdfjs-editor-alt-text-settings-downloading-model-button = Ladataan…\n+pdfjs-editor-alt-text-settings-editor-title = Vaihtoehtoisen tekstin muokkain\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Näytä vaihtoehtoisen tekstin muokkain heti, kun lisäät kuvan\n+pdfjs-editor-alt-text-settings-show-dialog-description = Auttaa varmistamaan, että kaikissa kuvissasi on vaihtoehtoinen teksti.\n+pdfjs-editor-alt-text-settings-close-button = Sulje\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Korostus poistettu\n+pdfjs-editor-undo-bar-message-freetext = Teksti poistettu\n+pdfjs-editor-undo-bar-message-ink = Piirustus poistettu\n+pdfjs-editor-undo-bar-message-stamp = Kuva poistettu\n+pdfjs-editor-undo-bar-message-signature = Allekirjoitus poistettu\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } merkintä poistettu\n+       *[other] { $count } merkintää poistettu\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Kumoa\n+pdfjs-editor-undo-bar-undo-button-label = Kumoa\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Sulje\n+pdfjs-editor-undo-bar-close-button-label = Sulje\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Tämän ikkunan avulla käyttäjä voi luoda allekirjoituksen PDF-asiakirjaan lisättäväksi. Käyttäjä voi muokata nimeä (joka toimii myös vaihtoehtoisena tekstinä) ja valinnaisesti tallentaa allekirjoituksen toistuvaa käyttöä varten.\n+pdfjs-editor-add-signature-dialog-title = Lisää allekirjoitus\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Kirjoita\n+    .title = Kirjoita\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Piirrä\n+    .title = Piirrä\n+pdfjs-editor-add-signature-image-button = Kuva\n+    .title = Kuva\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Kirjoita allekirjoituksesi\n+    .placeholder = Kirjoita allekirjoituksesi\n+pdfjs-editor-add-signature-draw-placeholder = Piirrä allekirjoituksesi\n+pdfjs-editor-add-signature-draw-thickness-range-label = Paksuus\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Piirustuksen paksuus: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Lähetä tiedosto vetämällä se tähän\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Tai selaa kuvatiedostoja\n+       *[other] Tai selaa kuvatiedostoja\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Kuvaus (vaihtoehtoinen teksti)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Kuvaus (vaihtoehtoinen teksti)\n+pdfjs-editor-add-signature-description-default-when-drawing = Allekirjoitus\n+pdfjs-editor-add-signature-clear-button-label = Tyhjennä allekirjoitus\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Tyhjennä allekirjoitus\n+pdfjs-editor-add-signature-save-checkbox = Tallenna allekirjoitus\n+pdfjs-editor-add-signature-save-warning-message = Olet saavuttanut viiden tallennetun allekirjoituksen rajan. Poista yksi säästääksesi lisää.\n+pdfjs-editor-add-signature-image-upload-error-title = Kuvaa ei voitu lähettää\n+pdfjs-editor-add-signature-image-upload-error-description = Tarkista verkkoyhteyden tila tai kokeile toista kuvaa.\n+pdfjs-editor-add-signature-error-close-button = Sulje\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Peruuta\n+pdfjs-editor-add-signature-add-button = Lisää\n+pdfjs-editor-edit-signature-update-button = Päivitä\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Poista tallennettu allekirjoitus\n+pdfjs-editor-delete-signature-button-label1 = Poista tallennettu allekirjoitus\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Muokkaa kuvausta\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Muokkaa kuvausta\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ffr\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ffr\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ffr\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ffr\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Page courante (montrer l’adresse de la page courante)\n pdfjs-bookmark-button-label = Page courante\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Ouvrir dans une application\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Ouvrir dans une application\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = Nom du fichier :\n pdfjs-document-properties-file-size = Taille du fichier :\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } Ko ({ $b } octets)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } Mo ({ $b } octets)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } Ko ({ $size_b } octets)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Date de création :\n pdfjs-document-properties-modification-date = Modifié le :\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date } à { $time }\n@@ -277,6 +282,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [Annotation { $type }]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -300,12 +308,29 @@\n pdfjs-editor-highlight-button =\n     .title = Surligner\n pdfjs-editor-highlight-button-label = Surligner\n-pdfjs-highlight-floating-button =\n-    .title = Surligner\n pdfjs-highlight-floating-button1 =\n     .title = Surligner\n     .aria-label = Surligner\n pdfjs-highlight-floating-button-label = Surligner\n+pdfjs-editor-signature-button =\n+    .title = Ajouter une signature\n+pdfjs-editor-signature-button-label = Ajouter une signature\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Éditeur de surlignage\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Éditeur de dessins\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Éditeur de signature : { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Éditeur d’images\n \n ## Remove button for the various kind of editor.\n \n@@ -317,6 +342,8 @@\n     .title = Supprimer l’image\n pdfjs-editor-remove-highlight-button =\n     .title = Supprimer le surlignage\n+pdfjs-editor-remove-signature-button =\n+    .title = Retirer la signature\n \n ##\n \n@@ -333,6 +360,20 @@\n pdfjs-editor-free-highlight-thickness-input = Épaisseur\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Modifier l’épaisseur pour le surlignage d’éléments non textuels\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Contrôles de signature et signatures enregistrées\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Ajouter une nouvelle signature\n+pdfjs-editor-signature-add-signature-button-label = Ajouter une nouvelle signature\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Signature enregistrée : { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Éditeur de texte\n+    .default-content = Commencez à écrire…\n pdfjs-free-text =\n     .aria-label = Éditeur de texte\n pdfjs-free-text-default-content = Commencer à écrire…\n@@ -343,8 +384,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Texte alternatif\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Modifier le texte alternatif\n pdfjs-editor-alt-text-edit-button-label = Modifier le texte alternatif\n pdfjs-editor-alt-text-dialog-label = Sélectionnez une option\n pdfjs-editor-alt-text-dialog-description = Le texte alternatif est utile lorsque des personnes ne peuvent pas voir l’image ou que l’image ne se charge pas.\n@@ -358,6 +400,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Par exemple, « Un jeune homme est assis à une table pour prendre un repas »\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Texte alternatif\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -370,6 +415,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Centre bas — redimensionner\n pdfjs-editor-resizer-label-bottom-left = Coin inférieur gauche — redimensionner\n pdfjs-editor-resizer-label-middle-left = Milieu gauche — redimensionner\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Coin supérieur gauche — redimensionner\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Milieu haut — redimensionner\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Coin supérieur droit — redimensionner\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Milieu droit — redimensionner\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Coin inférieur droit — redimensionner\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Centre bas — redimensionner\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Coin inférieur gauche — redimensionner\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Milieu gauche — redimensionner\n \n ## Color picker\n \n@@ -396,3 +457,155 @@\n pdfjs-editor-highlight-show-all-button-label = Tout afficher\n pdfjs-editor-highlight-show-all-button =\n     .title = Tout afficher\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Modifier le texte alternatif (description de l’image)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Ajouter du texte alternatif (description de l’image)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Rédigez votre description ici…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Courte description pour les personnes qui ne peuvent pas voir l’image ou lorsque l’image ne se charge pas.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Ce texte alternatif a été créé automatiquement et peut être inexact.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = En savoir plus\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Créer automatiquement le texte alternatif\n+pdfjs-editor-new-alt-text-not-now-button = Pas maintenant\n+pdfjs-editor-new-alt-text-error-title = Impossible de créer automatiquement le texte alternatif\n+pdfjs-editor-new-alt-text-error-description = Veuillez rédiger votre propre texte alternatif ou réessayer plus tard.\n+pdfjs-editor-new-alt-text-error-close-button = Fermer\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Téléchargement du modèle d’IA de texte alternatif ({ $downloadedSize } sur { $totalSize } Mo)\n+    .aria-valuetext = Téléchargement du modèle d’IA de texte alternatif ({ $downloadedSize } sur { $totalSize } Mo)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Texte alternatif ajouté\n+pdfjs-editor-new-alt-text-added-button-label = Texte alternatif ajouté\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Texte alternatif manquant\n+pdfjs-editor-new-alt-text-missing-button-label = Texte alternatif manquant\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Réviser le texte alternatif\n+pdfjs-editor-new-alt-text-to-review-button-label = Réviser le texte alternatif\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Créé automatiquement : { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Paramètres du texte alternatif des images\n+pdfjs-image-alt-text-settings-button-label = Paramètres du texte alternatif des images\n+pdfjs-editor-alt-text-settings-dialog-label = Paramètres du texte alternatif des images\n+pdfjs-editor-alt-text-settings-automatic-title = Texte alternatif automatique\n+pdfjs-editor-alt-text-settings-create-model-button-label = Créer automatiquement le texte alternatif\n+pdfjs-editor-alt-text-settings-create-model-description = Suggère des descriptions pour aider les personnes qui ne peuvent pas voir l’image ou lorsque l’image ne se charge pas.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Modèle d’IA de texte alternatif ({ $totalSize } Mo)\n+pdfjs-editor-alt-text-settings-ai-model-description = Fonctionne localement sur votre appareil, vos données restent privées. Obligatoire pour la génération automatique de texte alternatif.\n+pdfjs-editor-alt-text-settings-delete-model-button = Supprimer\n+pdfjs-editor-alt-text-settings-download-model-button = Télécharger\n+pdfjs-editor-alt-text-settings-downloading-model-button = Téléchargement…\n+pdfjs-editor-alt-text-settings-editor-title = Éditeur de texte alternatif\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Afficher l’éditeur de texte alternatif immédiatement lors de l’ajout d’une image\n+pdfjs-editor-alt-text-settings-show-dialog-description = Vous aide à vous assurer que toutes vos images ont du texte alternatif.\n+pdfjs-editor-alt-text-settings-close-button = Fermer\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Surlignage supprimé\n+pdfjs-editor-undo-bar-message-freetext = Texte supprimé\n+pdfjs-editor-undo-bar-message-ink = Dessin supprimé\n+pdfjs-editor-undo-bar-message-stamp = Image supprimée\n+pdfjs-editor-undo-bar-message-signature = Signature retirée\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } annotation supprimée\n+       *[other] { $count } annotations supprimées\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Annuler\n+pdfjs-editor-undo-bar-undo-button-label = Annuler\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Fermer\n+pdfjs-editor-undo-bar-close-button-label = Fermer\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Cette fenêtre permet de créer une signature à ajouter à un document au format PDF. Il est possible d’en modifier le nom (qui sert également de texte alternatif) et, éventuellement, de l’enregistrer pour une utilisation répétée.\n+pdfjs-editor-add-signature-dialog-title = Ajout d’une signature\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Saisir\n+    .title = Saisir au clavier\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Dessiner\n+    .title = Dessiner\n+pdfjs-editor-add-signature-image-button = Image\n+    .title = Image\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Saisissez votre signature\n+    .placeholder = Saisissez votre signature\n+pdfjs-editor-add-signature-draw-placeholder = Tracez votre signature\n+pdfjs-editor-add-signature-draw-thickness-range-label = Épaisseur\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Épaisseur du trait : { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Déposez un fichier ici pour l’envoyer\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Ou choisissez parmi les fichiers image\n+       *[other] Ou parcourez les fichiers image\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Description (texte alternatif)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Description (texte alternatif)\n+pdfjs-editor-add-signature-description-default-when-drawing = Signature\n+pdfjs-editor-add-signature-clear-button-label = Effacer la signature\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Effacer la signature\n+pdfjs-editor-add-signature-save-checkbox = Enregistrer la signature\n+pdfjs-editor-add-signature-save-warning-message = Vous avez atteint la limite de 5 signatures enregistrées. Supprimez-en une pour en enregistrer une autre.\n+pdfjs-editor-add-signature-image-upload-error-title = Impossible d’envoyer l’image\n+pdfjs-editor-add-signature-image-upload-error-description = Vérifiez votre connexion réseau ou essayez avec une autre image.\n+pdfjs-editor-add-signature-error-close-button = Fermer\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Annuler\n+pdfjs-editor-add-signature-add-button = Ajouter\n+pdfjs-editor-edit-signature-update-button = Mettre à jour\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Supprimer la signature enregistrée\n+pdfjs-editor-delete-signature-button-label1 = Supprimer la signature enregistrée\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Modifier la description\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Modifier la description\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ffur\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ffur\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ffur\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ffur\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -6,7 +6,7 @@\n ## Main toolbar buttons (tooltips and alt text for images)\n \n pdfjs-previous-button =\n-    .title = Pagjine precedente\n+    .title = Pagjine di prime\n pdfjs-previous-button-label = Indaûr\n pdfjs-next-button =\n     .title = Prossime pagjine\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Pagjine corinte (mostre URL de pagjine atuâl)\n pdfjs-bookmark-button-label = Pagjine corinte\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Vierç te aplicazion\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Vierç te aplicazion\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = Non dal file:\n pdfjs-document-properties-file-size = Dimension dal file:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bytes)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Date di creazion:\n pdfjs-document-properties-modification-date = Date di modifiche:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -281,6 +286,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [Anotazion { $type }]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -304,12 +312,29 @@\n pdfjs-editor-highlight-button =\n     .title = Evidenzie\n pdfjs-editor-highlight-button-label = Evidenzie\n-pdfjs-highlight-floating-button =\n-    .title = Evidenzie\n pdfjs-highlight-floating-button1 =\n     .title = Evidenzie\n     .aria-label = Evidenzie\n pdfjs-highlight-floating-button-label = Evidenzie\n+pdfjs-editor-signature-button =\n+    .title = Zonte firme\n+pdfjs-editor-signature-button-label = Zonte firme\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Modifiche evidenziazions\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Modifiche dissens\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Editôr firmis: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Modifiche imagjins\n \n ## Remove button for the various kind of editor.\n \n@@ -321,6 +346,8 @@\n     .title = Gjave imagjin\n pdfjs-editor-remove-highlight-button =\n     .title = Gjave evidenziazion\n+pdfjs-editor-remove-signature-button =\n+    .title = Gjave firme\n \n ##\n \n@@ -337,6 +364,20 @@\n pdfjs-editor-free-highlight-thickness-input = Spessôr\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Modifiche il spessôr de selezion pai elements che no son testuâi\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Controi firme e firmis salvadis\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Zonte gnove firme\n+pdfjs-editor-signature-add-signature-button-label = Zonte gnove firme\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Firme salvade: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Editôr di test\n+    .default-content = Scomence a scrivi…\n pdfjs-free-text =\n     .aria-label = Editôr di test\n pdfjs-free-text-default-content = Scomence a scrivi…\n@@ -347,8 +388,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Test alternatîf\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Modifiche test alternatîf\n pdfjs-editor-alt-text-edit-button-label = Modifiche test alternatîf\n pdfjs-editor-alt-text-dialog-label = Sielç une opzion\n pdfjs-editor-alt-text-dialog-description = Il test alternatîf (“alt text”) al jude cuant che lis personis no puedin viodi la imagjin o cuant che la imagjine no ven cjariade.\n@@ -362,6 +404,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Par esempli, “Un zovin si sente a taule par mangjâ”\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Test alternatîf\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -374,6 +419,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Bande inferiôr tal mieç — ridimensione\n pdfjs-editor-resizer-label-bottom-left = Cjanton in bas a çampe — ridimensione\n pdfjs-editor-resizer-label-middle-left = Bande di çampe tal mieç — ridimensione\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Cjanton in alt a çampe — ridimensione\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Bande superiôr tal mieç — ridimensione\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Cjanton in alt a diestre — ridimensione\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Bande diestre tal mieç — ridimensione\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Cjanton in bas a diestre — ridimensione\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Bande inferiôr tal mieç — ridimensione\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Cjanton in bas a çampe — ridimensione\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Bande di çampe tal mieç — ridimensione\n \n ## Color picker\n \n@@ -400,3 +461,155 @@\n pdfjs-editor-highlight-show-all-button-label = Mostre dut\n pdfjs-editor-highlight-show-all-button =\n     .title = Mostre dut\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Modifiche test alternatîf (descrizion de imagjin)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Zonte test alternatîf (descrizion de imagjin)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Scrîf achì la tô descrizion…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Curte descrizion par personis che no rivin a viodi la imagjin, o che e ven mostrade cuant che no si rive a cjariâle.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Chest test alternatîf al è stât creât in automatic e al è pussibil che nol sedi cret.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Plui informazions\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Cree test alternatîf in automatic\n+pdfjs-editor-new-alt-text-not-now-button = No cumò\n+pdfjs-editor-new-alt-text-error-title = Impussibil creâ test alternatîf in automatic\n+pdfjs-editor-new-alt-text-error-description = Scrîf il to test alternatîf o prove plui tart.\n+pdfjs-editor-new-alt-text-error-close-button = Siere\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Daûr a discjariâil model IA pal test alternatîf ({ $downloadedSize } di { $totalSize } MB)\n+    .aria-valuetext = Daûr a discjariâ il model IA pal test alternatîf ({ $downloadedSize } di { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Test alternatîf zontât\n+pdfjs-editor-new-alt-text-added-button-label = Test alternatîf zontât\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Al mancje il test alternatîf\n+pdfjs-editor-new-alt-text-missing-button-label = Al mancje il test alternatîf\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Verifiche test alternatîf\n+pdfjs-editor-new-alt-text-to-review-button-label = Verifiche test alternatîf\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Creât in automatic: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Impostazions test alternatîf pes imagjins\n+pdfjs-image-alt-text-settings-button-label = Impostazions test alternatîf pes imagjins\n+pdfjs-editor-alt-text-settings-dialog-label = Impostazions test alternatîf pes imagjins\n+pdfjs-editor-alt-text-settings-automatic-title = Test alternatîf automatic\n+pdfjs-editor-alt-text-settings-create-model-button-label = Cree test alternatîf in automatic\n+pdfjs-editor-alt-text-settings-create-model-description = Al sugjerìs descrizions par judâ lis personis che no rivin a viodi la imagjin o cuant che la imagjin no ven cjariade.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Model IA pal test alternatîf ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Al ven eseguît in locâl sul to dispositîf, cussì che i tiei dâts a restin riservâts. Al è necessari pe gjenerazion automatiche dal test alternatîf.\n+pdfjs-editor-alt-text-settings-delete-model-button = Elimine\n+pdfjs-editor-alt-text-settings-download-model-button = Discjame\n+pdfjs-editor-alt-text-settings-downloading-model-button = Daûr a discjariâ…\n+pdfjs-editor-alt-text-settings-editor-title = Modifiche test alternatîf\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Mostre l'editôr dal test alternatîf a pene che e ven zontade une imagjin\n+pdfjs-editor-alt-text-settings-show-dialog-description = Ti jude a sigurâti che dutis lis tôs imagjins a vedin il test alternatîf.\n+pdfjs-editor-alt-text-settings-close-button = Siere\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Evidenziazion gjavade\n+pdfjs-editor-undo-bar-message-freetext = Test gjavât\n+pdfjs-editor-undo-bar-message-ink = Dissen gjavât\n+pdfjs-editor-undo-bar-message-stamp = Imagjin gjavade\n+pdfjs-editor-undo-bar-message-signature = Firme gjavade\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } note gjavade\n+       *[other] { $count } notis gjavadis\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Anule\n+pdfjs-editor-undo-bar-undo-button-label = Anule\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Siere\n+pdfjs-editor-undo-bar-close-button-label = Siere\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Chest barcon al permet al utent di creâ une firme di zontâ a un document PDF. L’utent al pues modificâ il non (che al vignarà doprât ancje come test alternatîf) e, se lu desidere, salvâ la firme par tornâ a doprâle un doman.\n+pdfjs-editor-add-signature-dialog-title = Zonte une firme\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Scrîf\n+    .title = Scrîf\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Dissegne\n+    .title = Dissegne\n+pdfjs-editor-add-signature-image-button = Imagjin\n+    .title = Imagjin\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Scrîf la tô firme\n+    .placeholder = Scrîf la tô firme\n+pdfjs-editor-add-signature-draw-placeholder = Dissegne la tô firme\n+pdfjs-editor-add-signature-draw-thickness-range-label = Spessôr\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Spessôr de tresse: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Strissine un file achì par cjariâlu\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Opûr sielç i files imagjin\n+       *[other] Opûr sgarfe pai files imagjin\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Descrizion (test alternatîf)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Descrizion (test alternatîf)\n+pdfjs-editor-add-signature-description-default-when-drawing = Firme\n+pdfjs-editor-add-signature-clear-button-label = Nete firme\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Nete firme\n+pdfjs-editor-add-signature-save-checkbox = Salve firme\n+pdfjs-editor-add-signature-save-warning-message = Tu sês rivât\u002Frivade al limit di 5 firmis salvadis. Gjave une  par salvânt une altre.\n+pdfjs-editor-add-signature-image-upload-error-title = Impussibil cjariâ la imagjin\n+pdfjs-editor-add-signature-image-upload-error-description = Controle la conession di rêt o prove cuntune altre imagjin.\n+pdfjs-editor-add-signature-error-close-button = Siere\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Anule\n+pdfjs-editor-add-signature-add-button = Zonte\n+pdfjs-editor-edit-signature-update-button = Inzorne\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Gjave firme salvade\n+pdfjs-editor-delete-signature-button-label1 = Gjave firme salvade\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Modifiche descrizion\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Modifiche descrizion\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ffy-NL\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ffy-NL\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ffy-NL\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ffy-NL\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Aktuele side (URL fan aktuele side besjen)\n pdfjs-bookmark-button-label = Aktuele side\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Iepenje yn app\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Iepenje yn app\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = Bestânsnamme:\n pdfjs-document-properties-file-size = Bestânsgrutte:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bytes)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Oanmaakdatum:\n pdfjs-document-properties-modification-date = Bewurkingsdatum:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -281,6 +286,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type }-annotaasje]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -304,12 +312,29 @@\n pdfjs-editor-highlight-button =\n     .title = Markearje\n pdfjs-editor-highlight-button-label = Markearje\n-pdfjs-highlight-floating-button =\n-    .title = Markearje\n pdfjs-highlight-floating-button1 =\n     .title = Markearje\n     .aria-label = Markearje\n pdfjs-highlight-floating-button-label = Markearje\n+pdfjs-editor-signature-button =\n+    .title = Hantekening tafoegje\n+pdfjs-editor-signature-button-label = Hantekening tafoegje\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Markearingsbewurker\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Tekeningbewurker\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Undertekeningsbewurker: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Ofbyldingsbewurker\n \n ## Remove button for the various kind of editor.\n \n@@ -321,6 +346,8 @@\n     .title = Ofbylding fuortsmite\n pdfjs-editor-remove-highlight-button =\n     .title = Markearring fuortsmite\n+pdfjs-editor-remove-signature-button =\n+    .title = Hantekening fuortsmite\n \n ##\n \n@@ -337,6 +364,20 @@\n pdfjs-editor-free-highlight-thickness-input = Tsjokte\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Tsjokte wizigje by aksintuearring fan oare items as tekst\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Undertekeningsynstellingen en bewarre ûndertekeningen\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Nije hantekening tafoegje\n+pdfjs-editor-signature-add-signature-button-label = Nije hantekening tafoegje\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Bewarre ûndertekening: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Tekstbewurker\n+    .default-content = Start mei typen…\n pdfjs-free-text =\n     .aria-label = Tekstbewurker\n pdfjs-free-text-default-content = Begjin mei typen…\n@@ -347,8 +388,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Alternative tekst\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Alternative tekst bewurkje\n pdfjs-editor-alt-text-edit-button-label = Alternative tekst bewurkje\n pdfjs-editor-alt-text-dialog-label = Kies in opsje\n pdfjs-editor-alt-text-dialog-description = Alternative tekst helpt wannear’t minsken de ôfbylding net sjen kinne of wannear’t dizze net laden wurdt.\n@@ -362,6 +404,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Bygelyks, ‘In jonge man sit oan in tafel om te iten’\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Alternative tekst\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -374,6 +419,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Midden ûnder – formaat wizigje\n pdfjs-editor-resizer-label-bottom-left = Linkerûnderhoek – formaat wizigje\n pdfjs-editor-resizer-label-middle-left = Links midden – formaat wizigje\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Linkerboppehoek – formaat wizigje\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Midden boppe – formaat wizigje\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Rjochterboppehoek – formaat wizigje\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Midden rjochts – formaat wizigje\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Rjochterûnderhoek – formaat wizigje\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Midden ûnder – formaat wizigje\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Linkerûnderhoek – formaat wizigje\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Links midden – formaat wizigje\n \n ## Color picker\n \n@@ -400,3 +461,155 @@\n pdfjs-editor-highlight-show-all-button-label = Alles toane\n pdfjs-editor-highlight-show-all-button =\n     .title = Alles toane\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Alternative tekst (ôfbyldingsbeskriuwing) bewurkje\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Alternative tekst (ôfbyldingsbeskriuwing) tafoegje\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Skriuw hjir jo beskriuwing…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Koarte beskriuwing foar minsken dy’t de ôfbylding net sjen kinne of wannear’t de ôfbylding net laden wurdt.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Dizze alternative tekst is automatysk makke en is mooglik net korrekt.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Mear ynfo\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Alternative tekst automatysk oanmeitsje\n+pdfjs-editor-new-alt-text-not-now-button = No net\n+pdfjs-editor-new-alt-text-error-title = Kin alternative tekst net automatysk oanmeitsje\n+pdfjs-editor-new-alt-text-error-description = Skriuw jo eigen alternative tekst of probearje it letter nochris.\n+pdfjs-editor-new-alt-text-error-close-button = Slute\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = AI-model foar alternative tekst downloade ({ $downloadedSize } fan { $totalSize } MB)\n+    .aria-valuetext = AI-model foar alternative tekst downloade ({ $downloadedSize } fan { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Alternative tekst tafoege\n+pdfjs-editor-new-alt-text-added-button-label = Alternative tekst tafoege\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Alternative tekst ûntbrekt\n+pdfjs-editor-new-alt-text-missing-button-label = Alternative tekst ûntbrekt\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Alternative tekst beoardiele\n+pdfjs-editor-new-alt-text-to-review-button-label = Alternative tekst beoardiele\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Automatysk oanmakke: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Ynstellingen foar alternative tekst fan ôfbyldingen\n+pdfjs-image-alt-text-settings-button-label = Ynstellingen foar alternative tekst fan ôfbyldingen\n+pdfjs-editor-alt-text-settings-dialog-label = Ynstellingen foar alternative tekst fan ôfbyldingen\n+pdfjs-editor-alt-text-settings-automatic-title = Automatyske alternative tekst\n+pdfjs-editor-alt-text-settings-create-model-button-label = Alternative tekst automatysk oanmeitsje\n+pdfjs-editor-alt-text-settings-create-model-description = Stelt beskriuwingen foar om minsken te helpen dy’t de ôfbylding net sjen kinne of foar wa’t de ôfbylding net laden wurdt.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = AI-model foar alternative tekst ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Wurdt lokaal op jo apparaat útfierd, sadat jo gegevens privee bliuwe. Fereaske foar automatyske alternative tekst.\n+pdfjs-editor-alt-text-settings-delete-model-button = Fuortsmite\n+pdfjs-editor-alt-text-settings-download-model-button = Downloade\n+pdfjs-editor-alt-text-settings-downloading-model-button = Downloade…\n+pdfjs-editor-alt-text-settings-editor-title = Alternative-tekstbewurker\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Alternative-tekstbewurker daliks toane by tafoegjen fan in ôfbylding\n+pdfjs-editor-alt-text-settings-show-dialog-description = Helpt jo derfoar te soargjen dat al jo ôfbyldingen alternative tekst hawwe.\n+pdfjs-editor-alt-text-settings-close-button = Slute\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Markearring fuortsmiten\n+pdfjs-editor-undo-bar-message-freetext = Tekst fuortsmiten\n+pdfjs-editor-undo-bar-message-ink = Tekening fuortsmiten\n+pdfjs-editor-undo-bar-message-stamp = Ofbylding fuortsmiten\n+pdfjs-editor-undo-bar-message-signature = Hantekening fuortsmiten\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } annotaasje fuortsmiten\n+       *[other] { $count } annotaasjes fuortsmiten\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Ungedien meitsje\n+pdfjs-editor-undo-bar-undo-button-label = Ungedien meitsje\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Slute\n+pdfjs-editor-undo-bar-close-button-label = Slute\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Mei dizze modal kin de brûker in hantekening meitsje om oan in PDF-dokumint ta te foegjen. De brûker kin de namme bewurkje (dy't ek tsjinnet as alternative tekst), en opsjoneel de ûndertekening bewarje foar werhelle gebrûk.\n+pdfjs-editor-add-signature-dialog-title = In hantekening tafoegje\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Type\n+    .title = Type\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Tekenje\n+    .title = Tekenje\n+pdfjs-editor-add-signature-image-button = Ofbylding\n+    .title = Ofbylding\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Jo hantekening type\n+    .placeholder = Jo hantekening type\n+pdfjs-editor-add-signature-draw-placeholder = Jo hantekening tekenje\n+pdfjs-editor-add-signature-draw-thickness-range-label = Tsjokte\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Tekentsjokte: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Sleep bestân hjirhinne om op te laden\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Of kies ôfbyldingsbestannen\n+       *[other] Of kies ôfbyldingsbestannen\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Beskriuwing (alternative tekst)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Beskriuwing (alternative tekst)\n+pdfjs-editor-add-signature-description-default-when-drawing = Hantekening\n+pdfjs-editor-add-signature-clear-button-label = Hantekening wiskje\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Hantekening wiskje\n+pdfjs-editor-add-signature-save-checkbox = Hantekening bewarje\n+pdfjs-editor-add-signature-save-warning-message = Jo hawwe de limyt fan 5 bewarre hantekeningen berikt. Ferwiderje ien om in oar te bewarjen.\n+pdfjs-editor-add-signature-image-upload-error-title = Kin de ôfbylding net oplade\n+pdfjs-editor-add-signature-image-upload-error-description = Kontrolearje jo netwurkferbining of probearje in oare ôfbylding.\n+pdfjs-editor-add-signature-error-close-button = Slute\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Annulearje\n+pdfjs-editor-add-signature-add-button = Tafoegje\n+pdfjs-editor-edit-signature-update-button = Bywurkje\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Bewarre ûndertekening fuortsmite\n+pdfjs-editor-delete-signature-button-label1 = Bewarre ûndertekening fuortsmite\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Beskriuwing bewurkje\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Beskriuwing bewurkje\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fga-IE\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fga-IE\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fga-IE\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fga-IE\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -205,9 +205,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fgd\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fgd\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fgd\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fgd\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -45,12 +45,6 @@\n pdfjs-bookmark-button =\n     .title = An duilleag làithreach (Seall an URL on duilleag làithreach)\n pdfjs-bookmark-button-label = An duilleag làithreach\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Fosgail san aplacaid\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Fosgail san aplacaid\n \n ##  Secondary toolbar and context menu\n \n@@ -277,6 +271,15 @@\n pdfjs-editor-ink-button =\n     .title = Tarraing\n pdfjs-editor-ink-button-label = Tarraing\n+\n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n # Editor Parameters\n pdfjs-editor-free-text-color-input = Dath\n pdfjs-editor-free-text-size-input = Meud\n@@ -297,3 +300,44 @@\n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fgl\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fgl\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fgl\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fgl\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Páxina actual (ver o URL da páxina actual)\n pdfjs-bookmark-button-label = Páxina actual\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Abrir cunha aplicación\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Abrir cunha aplicación\n \n ##  Secondary toolbar and context menu\n \n@@ -302,6 +296,9 @@\n     .title = Engadir ou editar imaxes\n pdfjs-editor-stamp-button-label = Engadir ou editar imaxes\n \n+## Default editor aria labels\n+\n+\n ## Remove button for the various kind of editor.\n \n pdfjs-editor-remove-freetext-button =\n@@ -334,7 +331,6 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Texto alternativo\n pdfjs-editor-alt-text-edit-button-label = Editar o texto alternativo\n pdfjs-editor-alt-text-dialog-label = Escoller unha opción\n@@ -359,6 +355,60 @@\n pdfjs-editor-resizer-label-bottom-middle = Abaixo medio: cambia o tamaño\n pdfjs-editor-resizer-label-bottom-left = Esquina inferior esquerda: cambia o tamaño\n pdfjs-editor-resizer-label-middle-left = Medio esquerdo: cambia o tamaño\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Esquina superior esquerda: cambia o tamaño\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Medio superior: cambia o tamaño\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Esquina superior dereita: cambia o tamaño\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Medio dereito: cambia o tamaño\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Esquina inferior dereita: cambia o tamaño\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Abaixo medio: cambia o tamaño\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Esquina inferior esquerda: cambia o tamaño\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Medio esquerdo: cambia o tamaño\n \n ## Color picker\n \n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fgn\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fgn\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fgn\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fgn\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Kuatiarogue ag̃agua (Ehecha URL kuatiarogue ag̃agua)\n pdfjs-bookmark-button-label = Kuatiarogue Ag̃agua\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Embojuruja tembiporu’ípe\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Embojuruja tembiporu’ípe\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = Marandurenda réra:\n pdfjs-document-properties-file-size = Marandurenda tuichakue:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bytes)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Teñoihague arange:\n pdfjs-document-properties-modification-date = Iñambue hague arange:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -281,6 +286,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [Jehaipy { $type }]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -304,12 +312,29 @@\n pdfjs-editor-highlight-button =\n     .title = Mbosa’y\n pdfjs-editor-highlight-button-label = Mbosa’y\n-pdfjs-highlight-floating-button =\n-    .title = Mbosa’y\n pdfjs-highlight-floating-button1 =\n     .title = Mbosa’y\n     .aria-label = Mbosa’y\n pdfjs-highlight-floating-button-label = Mbosa’y\n+pdfjs-editor-signature-button =\n+    .title = Embojuaju teraguapy\n+pdfjs-editor-signature-button-label = Embojuaju teraguapy\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Jehechaukarã mbosako’iha\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Ta’ãnga’apo moheñoiha\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Teraguapy mbosako’iha: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Ta’ãnga mbosako’iha\n \n ## Remove button for the various kind of editor.\n \n@@ -321,6 +346,8 @@\n     .title = Emboguete ta’ãnga\n pdfjs-editor-remove-highlight-button =\n     .title = Eipe’a jehechaveha\n+pdfjs-editor-remove-signature-button =\n+    .title = Embogue teraguapy\n \n ##\n \n@@ -337,6 +364,20 @@\n pdfjs-editor-free-highlight-thickness-input = Anambusu\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Emoambue anambusukue embosa’ývo mba’eporu ha’e’ỹva moñe’ẽrã\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Teraguapy ñemaña ha teraguapy ñongatupyre\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Embojuaju teraguapy pyahu\n+pdfjs-editor-signature-add-signature-button-label = Embojuaju teraguapy pyahu\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Teraguapy ñongatupyre: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Moñe’ẽrã moheñoiha\n+    .default-content = Eñepyrũ ehai…\n pdfjs-free-text =\n     .aria-label = Moñe’ẽrã moheñoiha\n pdfjs-free-text-default-content = Ehai ñepyrũ…\n@@ -347,8 +388,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Moñe’ẽrã mokõiháva\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Embojuruja moñe’ẽrã mokõiháva\n pdfjs-editor-alt-text-edit-button-label = Embojuruja moñe’ẽrã mokõiháva\n pdfjs-editor-alt-text-dialog-label = Eiporavo poravorã\n pdfjs-editor-alt-text-dialog-description = Moñe’ẽrã ykepegua (moñe’ẽrã ykepegua) nepytyvõ nderehecháiramo ta’ãnga térã nahenyhẽiramo.\n@@ -362,6 +404,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Techapyrã: “Peteĩ mitãrusu oguapy mesápe okaru hag̃ua”\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Moñe’ẽrã mokõiháva\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -374,6 +419,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Yvy gotyo mbytépe — emoambue tuichakue\n pdfjs-editor-resizer-label-bottom-left = Iguýpe asu gotyo — emoambue tuichakue\n pdfjs-editor-resizer-label-middle-left = Mbyte asu gotyo — emoambue tuichakue\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Yvate asu gotyo — emoambue tuichakue\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Yvate mbytépe — emoambue tuichakue\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Yvate akatúape — emoambue tuichakue\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Mbyte akatúape — emoambue tuichakue\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Yvy gotyo akatúape — emoambue tuichakue\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Yvy gotyo mbytépe — emoambue tuichakue\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Iguýpe asu gotyo — emoambue tuichakue\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Mbyte asu gotyo — emoambue tuichakue\n \n ## Color picker\n \n@@ -400,3 +461,154 @@\n pdfjs-editor-highlight-show-all-button-label = Techaukapa\n pdfjs-editor-highlight-show-all-button =\n     .title = Techaukapa\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Embosako’i moñe’ẽrã mokõiha (ta’ãngáre ñeñe’ẽ)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Embojuaju moñe’ẽrã mokõiha (ta’ãngáre ñeñe’ẽ)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Edescribi ko’ápe…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Ñemyesakã mbykymi opavave ohecha’ỹva upe ta’ãnga térã pe ta’ãnga nahenyhẽiramo.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Ko moñe’ẽrã mokõiha oñemoheñói ijehegui ha ikatu ndoikoporãi.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Eikuaave\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Emoheñói moñe’ẽrã mokõiha ijeheguíva\n+pdfjs-editor-new-alt-text-not-now-button = Ani ko’ág̃a\n+pdfjs-editor-new-alt-text-error-title = Noñemoheñói moñe’ẽrã mokõiha ijeheguíva\n+pdfjs-editor-new-alt-text-error-description = Ehai ne moñe’ẽrã mokõiha térã eha’ã jey ag̃amieve.\n+pdfjs-editor-new-alt-text-error-close-button = Mboty\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Emboguejyhína IA moñe’ẽrã mokõiháva ({ $downloadedSize } { $totalSize } MB) mba’e\n+    .aria-valuetext = Emboguejyhína IA moñe’ẽrã mokõiháva ({ $downloadedSize } { $totalSize } MB) mba’e\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Moñe’ẽrã mokõiha mbojuajupyre\n+pdfjs-editor-new-alt-text-added-button-label = Oñembojuaju moñe’ẽrã mokõiha\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Ndaipóri moñe’ẽrã mokõiha\n+pdfjs-editor-new-alt-text-missing-button-label = Ndaipóri moñe’ẽrã mokõiha\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Ehechajey moñe’ẽrã mokõiha\n+pdfjs-editor-new-alt-text-to-review-button-label = Ehechajey moñe’ẽrã mokõiha\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Heñóiva ijeheguiete: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Ta’ãnga moñe’ẽrã mokõiha ñemboheko\n+pdfjs-image-alt-text-settings-button-label = Ta’ãnga moñe’ẽrã mokõiha ñemboheko\n+pdfjs-editor-alt-text-settings-dialog-label = Ta’ãnga moñe’ẽrã mokõiha ñemboheko\n+pdfjs-editor-alt-text-settings-automatic-title = Moñe’ẽrã mokõiha ijeheguíva\n+pdfjs-editor-alt-text-settings-create-model-button-label = Emoheñói moñe’ẽrã mokõiha ijeheguíva\n+pdfjs-editor-alt-text-settings-create-model-description = Ñemyesakã mbykymi opavave tapicha ohecha’ỹva upe ta’ãnga térã pe ta’ãnga nahenyhẽiramo.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Peteĩva IA moñe’ẽrã mokõiha ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Oku’e mba’e’okaitépe umi mba’ekuaarã hekoñemi hag̃ua. Tekotevẽva moñe’ẽrã ykegua ijeheguívape.\n+pdfjs-editor-alt-text-settings-delete-model-button = Mboguete\n+pdfjs-editor-alt-text-settings-download-model-button = Mboguejy\n+pdfjs-editor-alt-text-settings-downloading-model-button = Emboguejyhína…\n+pdfjs-editor-alt-text-settings-editor-title = Moñe’ẽrã mokõiha mbosako’iha\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Ehechauka moñe’ẽrã mokõiha mbosako’iha embojuajúvo ta’ãnga\n+pdfjs-editor-alt-text-settings-show-dialog-description = Nepytyvõta ta’ãngakuéra orekotaha moñe’ẽrã mokõiha.\n+pdfjs-editor-alt-text-settings-close-button = Mboty\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Mbosa’ýva mboguete\n+pdfjs-editor-undo-bar-message-freetext = Moñe’ẽrã mboguepyre\n+pdfjs-editor-undo-bar-message-ink = Ta’ãnga mboguepyre\n+pdfjs-editor-undo-bar-message-stamp = Ta’ãnga mboguepyre\n+pdfjs-editor-undo-bar-message-signature = Teraguapy mboguepyre\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } jehaikue mboguepyre\n+       *[other] { $count } jehaikue mboguepyre\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Mboguevi\n+pdfjs-editor-undo-bar-undo-button-label = Mboguevi\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Mboty\n+pdfjs-editor-undo-bar-close-button-label = Mboty\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-title = Embojuaju teraguapy\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Jehai\n+    .title = Jehai\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Moha’ãnga\n+    .title = Moha’ãnga\n+pdfjs-editor-add-signature-image-button = Ta’ãnga\n+    .title = Ta’ãnga\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Ehai nde reraguapy\n+    .placeholder = Ehai nde reraguapy\n+pdfjs-editor-add-signature-draw-placeholder = Emoha’ãnga nde reraguapy\n+pdfjs-editor-add-signature-draw-thickness-range-label = Anambusu\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Ta’ãnga anambusukue: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Egueru marandurenda ápe ehupi hag̃ua\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Eiporavo ta’ãnga marandurenda\n+       *[other] Eiporavo ta’ãnga marandurenda\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Moha’ãnga (moñe’ẽrã ykepegua)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Moha’ãnga (moñe’ẽrã ykepegua)\n+pdfjs-editor-add-signature-description-default-when-drawing = Teraguapy\n+pdfjs-editor-add-signature-clear-button-label = Emboguete teraguapy\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Emboguete teraguapy\n+pdfjs-editor-add-signature-save-checkbox = Eñongatu teraguapy\n+pdfjs-editor-add-signature-save-warning-message = Ehupytýma 5 mboheraguapy ñongatupyre. Embogue peteĩ eñongatukuaa jey hag̃ua.\n+pdfjs-editor-add-signature-image-upload-error-title = Ndaikatúi ojehupi pe ta’ãnga\n+pdfjs-editor-add-signature-image-upload-error-description = Ehechajey ne ñanduti oikópa térã aha’ã ambue ta’ãnga ndive.\n+pdfjs-editor-add-signature-error-close-button = Mboty\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Heja\n+pdfjs-editor-add-signature-add-button = Mbojuaju\n+pdfjs-editor-edit-signature-update-button = Mbohekopyahu\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Embogue teraguapy ñongatupyre\n+pdfjs-editor-delete-signature-button-label1 = Embogue teraguapy ñongatupyre\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Embosako’i moha’ãnga\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Embosako’i moha’ãnga\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fgu-IN\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fgu-IN\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fgu-IN\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fgu-IN\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -239,9 +239,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fhe\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fhe\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fhe\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fhe\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = עמוד נוכחי (הצגת כתובת האתר מהעמוד הנוכחי)\n pdfjs-bookmark-button-label = עמוד נוכחי\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = פתיחה ביישום\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = פתיחה ביישום\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = שם קובץ:\n pdfjs-document-properties-file-size = גודל הקובץ:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } ק״ב ({ $b } בתים)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } מ״ב ({ $b } בתים)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } ק״ב ({ $size_b } בתים)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = תאריך יצירה:\n pdfjs-document-properties-modification-date = תאריך שינוי:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -281,11 +286,14 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [הערת { $type }]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n pdfjs-password-label = נא להכניס את הססמה לפתיחת קובץ PDF זה.\n-pdfjs-password-invalid = ססמה שגויה. נא לנסות שנית.\n+pdfjs-password-invalid = ססמה שגויה. נא לנסות שוב.\n pdfjs-password-ok-button = אישור\n pdfjs-password-cancel-button = ביטול\n pdfjs-web-fonts-disabled = גופני רשת מנוטרלים: לא ניתן להשתמש בגופני PDF מוטבעים.\n@@ -304,12 +312,29 @@\n pdfjs-editor-highlight-button =\n     .title = סימון\n pdfjs-editor-highlight-button-label = סימון\n-pdfjs-highlight-floating-button =\n-    .title = סימון\n pdfjs-highlight-floating-button1 =\n     .title = סימון\n     .aria-label = סימון\n pdfjs-highlight-floating-button-label = סימון\n+pdfjs-editor-signature-button =\n+    .title = הוספת חתימה\n+pdfjs-editor-signature-button-label = הוספת חתימה\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = עורך סימונים\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = עורך ציורים\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = עורך החתימות: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = עורך תמונות\n \n ## Remove button for the various kind of editor.\n \n@@ -320,7 +345,9 @@\n pdfjs-editor-remove-stamp-button =\n     .title = הסרת תמונה\n pdfjs-editor-remove-highlight-button =\n-    .title = הסרת הדגשה\n+    .title = הסרת סימון\n+pdfjs-editor-remove-signature-button =\n+    .title = הסרת חתימה\n \n ##\n \n@@ -336,7 +363,21 @@\n # This refers to the thickness of the line used for free highlighting (not bound to text)\n pdfjs-editor-free-highlight-thickness-input = עובי\n pdfjs-editor-free-highlight-thickness-title =\n-    .title = שינוי עובי בעת הדגשת פריטים שאינם טקסט\n+    .title = שינוי עובי בעת סימון פריטים שאינם טקסט\n+pdfjs-editor-add-signature-container =\n+    .aria-label = פקדי חתימה וחתימות שמורות\n+pdfjs-editor-signature-add-signature-button =\n+    .title = הוספת חתימה חדשה\n+pdfjs-editor-signature-add-signature-button-label = הוספת חתימה חדשה\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = חתימה שמורה: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = עורך טקסט\n+    .default-content = נא להתחיל להקליד…\n pdfjs-free-text =\n     .aria-label = עורך טקסט\n pdfjs-free-text-default-content = להתחיל להקליד…\n@@ -347,8 +388,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = טקסט חלופי\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = עריכת טקסט חלופי\n pdfjs-editor-alt-text-edit-button-label = עריכת טקסט חלופי\n pdfjs-editor-alt-text-dialog-label = בחירת אפשרות\n pdfjs-editor-alt-text-dialog-description = טקסט חלופי עוזר כשאנשים לא יכולים לראות את התמונה או כשהיא לא נטענת.\n@@ -362,6 +404,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = לדוגמה, ״גבר צעיר מתיישב ליד שולחן לאכול ארוחה״\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = טקסט חלופי\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -374,11 +419,27 @@\n pdfjs-editor-resizer-label-bottom-middle = למטה באמצע - שינוי גודל\n pdfjs-editor-resizer-label-bottom-left = פינה שמאלית תחתונה - שינוי גודל\n pdfjs-editor-resizer-label-middle-left = שמאלה באמצע - שינוי גודל\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = פינה שמאלית עליונה - שינוי גודל\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = למעלה באמצע - שינוי גודל\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = פינה ימנית עליונה - שינוי גודל\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = ימינה באמצע - שינוי גודל\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = פינה ימנית תחתונה - שינוי גודל\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = למטה באמצע - שינוי גודל\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = פינה שמאלית תחתונה - שינוי גודל\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = שמאלה באמצע - שינוי גודל\n \n ## Color picker\n \n # This means \"Color used to highlight text\"\n-pdfjs-editor-highlight-colorpicker-label = צבע הדגשה\n+pdfjs-editor-highlight-colorpicker-label = צבע סימון\n pdfjs-editor-colorpicker-button =\n     .title = שינוי צבע\n pdfjs-editor-colorpicker-dropdown =\n@@ -400,3 +461,155 @@\n pdfjs-editor-highlight-show-all-button-label = הצגת הכול\n pdfjs-editor-highlight-show-all-button =\n     .title = הצגת הכול\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = עריכת טקסט חלופי (תיאור תמונה)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = הוספת טקסט חלופי (תיאור תמונה)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = נא לכתוב את התיאור שלך כאן…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = תיאור קצר לאנשים שאינם יכולים לראות את התמונה או כאשר התמונה אינה נטענת.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = טקסט חלופי זה נוצר באופן אוטומטי ועשוי להיות לא מדויק.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = מידע נוסף\n+pdfjs-editor-new-alt-text-create-automatically-button-label = יצירת טקסט חלופי באופן אוטומטי\n+pdfjs-editor-new-alt-text-not-now-button = לא כעת\n+pdfjs-editor-new-alt-text-error-title = לא ניתן היה ליצור טקסט חלופי באופן אוטומטי\n+pdfjs-editor-new-alt-text-error-description = נא לכתוב טקסט חלופי משלך או לנסות שוב מאוחר יותר.\n+pdfjs-editor-new-alt-text-error-close-button = סגירה\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = בתהליך הורדת מודל AI של טקסט חלופי ({ $downloadedSize } מתוך { $totalSize } מ״ב)\n+    .aria-valuetext = בתהליך הורדת מודל AI של טקסט חלופי ({ $downloadedSize } מתוך { $totalSize } מ״ב)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = נוסף טקסט חלופי\n+pdfjs-editor-new-alt-text-added-button-label = נוסף טקסט חלופי\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = חסר טקסט חלופי\n+pdfjs-editor-new-alt-text-missing-button-label = חסר טקסט חלופי\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = סקירת טקסט חלופי\n+pdfjs-editor-new-alt-text-to-review-button-label = סקירת טקסט חלופי\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = נוצר באופן אוטומטי: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = הגדרות טקסט חלופי של תמונה\n+pdfjs-image-alt-text-settings-button-label = הגדרות טקסט חלופי של תמונה\n+pdfjs-editor-alt-text-settings-dialog-label = הגדרות טקסט חלופי של תמונה\n+pdfjs-editor-alt-text-settings-automatic-title = טקסט חלופי אוטומטי\n+pdfjs-editor-alt-text-settings-create-model-button-label = יצירת טקסט חלופי באופן אוטומטי\n+pdfjs-editor-alt-text-settings-create-model-description = הצעת תיאורים כדי לסייע לאנשים שאינם יכולים לראות את התמונה או כאשר התמונה אינה נטענת.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = מודל AI לטקסט חלופי ({ $totalSize } מ״ב)\n+pdfjs-editor-alt-text-settings-ai-model-description = פועל באופן מקומי במכשיר שלך כך שהנתונים שלך נשארים פרטיים. נדרש עבור טקסט חלופי אוטומטי.\n+pdfjs-editor-alt-text-settings-delete-model-button = מחיקה\n+pdfjs-editor-alt-text-settings-download-model-button = הורדה\n+pdfjs-editor-alt-text-settings-downloading-model-button = בהורדה…\n+pdfjs-editor-alt-text-settings-editor-title = עורך טקסט חלופי\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = הצגת עורך טקסט חלופי מיד בעת הוספת תמונה\n+pdfjs-editor-alt-text-settings-show-dialog-description = מסייע לך לוודא שלכל התמונות שלך יש טקסט חלופי.\n+pdfjs-editor-alt-text-settings-close-button = סגירה\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = הסימון הוסר\n+pdfjs-editor-undo-bar-message-freetext = הטקסט הוסר\n+pdfjs-editor-undo-bar-message-ink = הציור הוסר\n+pdfjs-editor-undo-bar-message-stamp = התמונה הוסרה\n+pdfjs-editor-undo-bar-message-signature = החתימה הוסרה\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] הערה אחת הוסרה\n+       *[other] { $count } הערות הוסרו\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = ביטול פעולה\n+pdfjs-editor-undo-bar-undo-button-label = ביטול פעלה\n+pdfjs-editor-undo-bar-close-button =\n+    .title = סגירה\n+pdfjs-editor-undo-bar-close-button-label = סגירה\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = מודל זה מאפשר למשתמש ליצור חתימה להוספה למסמך PDF. המשתמש יכול לערוך את השם (שמשמש גם כטקסט האלטרנטיבי), ובאופן אופציונלי לשמור את החתימה לשימוש חוזר.\n+pdfjs-editor-add-signature-dialog-title = הוספת חתימה\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = הקלדה\n+    .title = הקלדה\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = ציור\n+    .title = ציור\n+pdfjs-editor-add-signature-image-button = תמונה\n+    .title = תמונה\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = נא להקליד את החתימה שלך\n+    .placeholder = נא להקליד את החתימה שלך\n+pdfjs-editor-add-signature-draw-placeholder = נא לצייר את החתימה שלך\n+pdfjs-editor-add-signature-draw-thickness-range-label = עובי\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = עובי הציור: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = יש לגרור לכאן קובץ להעלאה\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] או לבחור בקובצי תמונה\n+       *[other] או לעיין בקובצי תמונה\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = תיאור (טקסט חלופי)\n+pdfjs-editor-add-signature-description-input =\n+    .title = תיאור (טקסט חלופי)\n+pdfjs-editor-add-signature-description-default-when-drawing = חתימה\n+pdfjs-editor-add-signature-clear-button-label = ניקוי חתימה\n+pdfjs-editor-add-signature-clear-button =\n+    .title = ניקוי חתימה\n+pdfjs-editor-add-signature-save-checkbox = שמירת החתימה\n+pdfjs-editor-add-signature-save-warning-message = הגעת למגבלה של 5 חתימות שמורות. יש להסיר אחד כדי לשמור עוד.\n+pdfjs-editor-add-signature-image-upload-error-title = לא ניתן להעלות את התמונה\n+pdfjs-editor-add-signature-image-upload-error-description = נא לבדוק את החיבור שלך לרשת או לנסות תמונה אחרת.\n+pdfjs-editor-add-signature-error-close-button = סגירה\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = ביטול\n+pdfjs-editor-add-signature-add-button = הוספה\n+pdfjs-editor-edit-signature-update-button = עדכון\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = הסרת חתימה שמורה\n+pdfjs-editor-delete-signature-button-label1 = הסרת חתימה שמורה\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = עריכת תיאור\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = עריכת תיאור\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fhi-IN\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fhi-IN\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fhi-IN\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fhi-IN\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -39,12 +39,6 @@\n pdfjs-print-button =\n     .title = छापें\n pdfjs-print-button-label = छापें\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = ऐप में खोलें\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = ऐप में खोलें\n \n ##  Secondary toolbar and context menu\n \n@@ -242,6 +236,15 @@\n \n ## Editing\n \n+\n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n # Editor Parameters\n pdfjs-editor-free-text-color-input = रंग\n \n@@ -251,3 +254,44 @@\n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fhr\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fhr\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fhr\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fhr\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -31,8 +31,8 @@\n pdfjs-zoom-select =\n     .title = Zumiranje\n pdfjs-presentation-mode-button =\n-    .title = Prebaci u prezentacijski način rada\n-pdfjs-presentation-mode-button-label = Prezentacijski način rada\n+    .title = Prebaci u modus prezentacija\n+pdfjs-presentation-mode-button-label = Modus prezentacija\n pdfjs-open-file-button =\n     .title = Otvori datoteku\n pdfjs-open-file-button-label = Otvori\n@@ -42,6 +42,15 @@\n pdfjs-save-button =\n     .title = Spremi\n pdfjs-save-button-label = Spremi\n+# Used in Firefox for Android as a tooltip for the download button (“download” is a verb).\n+pdfjs-download-button =\n+    .title = Preuzimanja\n+# Used in Firefox for Android as a label for the download button (“download” is a verb).\n+# Length of the translation matters since we are in a mobile context, with limited screen estate.\n+pdfjs-download-button-label = Preuzimanja\n+pdfjs-bookmark-button =\n+    .title = Trenutna stranica (pogledajte URL s trenutne stranice)\n+pdfjs-bookmark-button-label = Trenutna stranica\n \n ##  Secondary toolbar and context menu\n \n@@ -61,11 +70,14 @@\n     .title = Rotiraj obrnutno od smjera kazaljke na satu\n pdfjs-page-rotate-ccw-button-label = Rotiraj obrnutno od smjera kazaljke na satu\n pdfjs-cursor-text-select-tool-button =\n-    .title = Omogući alat za označavanje teksta\n+    .title = Aktiviraj alat za biranje teksta\n pdfjs-cursor-text-select-tool-button-label = Alat za označavanje teksta\n pdfjs-cursor-hand-tool-button =\n-    .title = Omogući ručni alat\n+    .title = Aktiviraj ručni alat\n pdfjs-cursor-hand-tool-button-label = Ručni alat\n+pdfjs-scroll-page-button =\n+    .title = Koristi klizanje stranice\n+pdfjs-scroll-page-button-label = Klizanje stranice\n pdfjs-scroll-vertical-button =\n     .title = Koristi okomito pomicanje\n pdfjs-scroll-vertical-button-label = Okomito pomicanje\n@@ -90,9 +102,17 @@\n pdfjs-document-properties-button =\n     .title = Svojstva dokumenta …\n pdfjs-document-properties-button-label = Svojstva dokumenta …\n-pdfjs-document-properties-file-name = Naziv datoteke:\n+pdfjs-document-properties-file-name = Ime datoteke:\n pdfjs-document-properties-file-size = Veličina datoteke:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bajtova)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bajtova)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bajtova)\n@@ -107,6 +127,9 @@\n pdfjs-document-properties-creation-date = Datum stvaranja:\n pdfjs-document-properties-modification-date = Datum promjene:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -167,7 +190,7 @@\n     .title = Prikaži privitke\n pdfjs-attachments-button-label = Privitci\n pdfjs-layers-button =\n-    .title = Prikaži slojeve (dvoklik za vraćanje svih slojeva u zadano stanje)\n+    .title = Prikaži slojeve (dvoklik za vraćanje svih slojeva u standardno stanje)\n pdfjs-layers-button-label = Slojevi\n pdfjs-thumbs-button =\n     .title = Prikaži minijature\n@@ -201,12 +224,30 @@\n pdfjs-find-previous-button-label = Prethodno\n pdfjs-find-next-button =\n     .title = Pronađi sljedeće pojavljivanje ovog izraza\n-pdfjs-find-next-button-label = Sljedeće\n+pdfjs-find-next-button-label = Dalje\n pdfjs-find-highlight-checkbox = Istankni sve\n pdfjs-find-match-case-checkbox-label = Razlikovanje velikih i malih slova\n+pdfjs-find-match-diacritics-checkbox-label = Razlikuj dijakritičke znakove\n pdfjs-find-entire-word-checkbox-label = Cijele riječi\n pdfjs-find-reached-top = Dosegnut početak dokumenta, nastavak s kraja\n pdfjs-find-reached-bottom = Dosegnut kraj dokumenta, nastavak s početka\n+# Variables:\n+#   $current (Number) - the index of the currently active find result\n+#   $total (Number) - the total number of matches in the document\n+pdfjs-find-match-count =\n+    { $total ->\n+        [one] { $current } od { $total } rezultata\n+        [few] { $current } od { $total } rezultata\n+       *[other] { $current } od { $total } rezultata\n+    }\n+# Variables:\n+#   $limit (Number) - the maximum number of matches\n+pdfjs-find-match-count-limit =\n+    { $limit ->\n+        [one] Više od { $limit } rezultat\n+        [few] Više od { $limit } rezultata\n+       *[other] Više od { $limit } rezultata\n+    }\n pdfjs-find-not-found = Izraz nije pronađen\n \n ## Predefined zoom values\n@@ -231,7 +272,7 @@\n pdfjs-loading-error = Došlo je do greške pri učitavanju PDF-a.\n pdfjs-invalid-file-error = Neispravna ili oštećena PDF datoteka.\n pdfjs-missing-file-error = Nedostaje PDF datoteka.\n-pdfjs-unexpected-response-error = Neočekivani odgovor poslužitelja.\n+pdfjs-unexpected-response-error = Neočekivani odgovor servera.\n pdfjs-rendering-error = Došlo je do greške prilikom iscrtavanja stranice.\n \n ## Annotations\n@@ -247,6 +288,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type } Bilješka]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -261,19 +305,240 @@\n pdfjs-editor-free-text-button =\n     .title = Tekst\n pdfjs-editor-free-text-button-label = Tekst\n+pdfjs-editor-ink-button =\n+    .title = Crtanje\n+pdfjs-editor-ink-button-label = Crtanje\n+pdfjs-editor-stamp-button =\n+    .title = Dodajte ili uredite slike\n+pdfjs-editor-stamp-button-label = Dodajte ili uredite slike\n+pdfjs-editor-highlight-button =\n+    .title = Istakni\n+pdfjs-editor-highlight-button-label = Istakni\n+pdfjs-highlight-floating-button1 =\n+    .title = Istakni\n+    .aria-label = Istakni\n+pdfjs-highlight-floating-button-label = Istakni\n+\n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+pdfjs-editor-remove-ink-button =\n+    .title = Ukloni crtež\n+pdfjs-editor-remove-freetext-button =\n+    .title = Ukloni tekst\n+pdfjs-editor-remove-stamp-button =\n+    .title = Ukloni sliku\n+pdfjs-editor-remove-highlight-button =\n+    .title = Ukloni isticanje\n+\n+##\n+\n # Editor Parameters\n pdfjs-editor-free-text-color-input = Boja\n pdfjs-editor-free-text-size-input = Veličina\n pdfjs-editor-ink-color-input = Boja\n pdfjs-editor-ink-thickness-input = Debljina\n pdfjs-editor-ink-opacity-input = Neprozirnost\n+pdfjs-editor-stamp-add-image-button =\n+    .title = Dodaj sliku\n+pdfjs-editor-stamp-add-image-button-label = Dodaj sliku\n+# This refers to the thickness of the line used for free highlighting (not bound to text)\n+pdfjs-editor-free-highlight-thickness-input = Debljina\n+pdfjs-editor-free-highlight-thickness-title =\n+    .title = Promjeni debljinu pri isticanju drugih stavki osim teksta\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Uređivač teksta\n+    .default-content = Počni tipkati …\n pdfjs-free-text =\n     .aria-label = Uređivač teksta\n pdfjs-free-text-default-content = Počni tipkati …\n+pdfjs-ink =\n+    .aria-label = Uređivač crteža\n+pdfjs-ink-canvas =\n+    .aria-label = Slika koju je izradio korisnik\n \n ## Alt-text dialog\n \n+pdfjs-editor-alt-text-button-label = Alternativni tekst\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Uredi alternativni tekst\n+pdfjs-editor-alt-text-edit-button-label = Uredi alternativni tekst\n+pdfjs-editor-alt-text-dialog-label = Odaberi jednu opciju\n+pdfjs-editor-alt-text-dialog-description = Alternativni tekst pomaže slijepim osobama ili kada se slika ne učita.\n+pdfjs-editor-alt-text-add-description-label = Dodaj opis\n+pdfjs-editor-alt-text-add-description-description = Sažmi sadržaj predmeta, okruženje ili radnje u jednoj ili dvije rečenice.\n+pdfjs-editor-alt-text-mark-decorative-label = Označi kao ukrasno\n+pdfjs-editor-alt-text-mark-decorative-description = Ovo se koristi za ukrasne slike, poput rubova ili vodenih žigova.\n+pdfjs-editor-alt-text-cancel-button = Odustani\n+pdfjs-editor-alt-text-save-button = Spremi\n+pdfjs-editor-alt-text-decorative-tooltip = Označeno kao ukrasno\n+# .placeholder: This is a placeholder for the alt text input area\n+pdfjs-editor-alt-text-textarea =\n+    .placeholder = Na primjer, „Mladić sjeda za stol kako bi jeo”\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Alternativni tekst\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+pdfjs-editor-resizer-label-top-left = Gornji lijevi kut – promijeni veličinu\n+pdfjs-editor-resizer-label-top-middle = Sredina gore – promijeni veličinu\n+pdfjs-editor-resizer-label-top-right = Gornji desni kut – promijeni veličinu\n+pdfjs-editor-resizer-label-middle-right = Sredina desno – promijeni veličinu\n+pdfjs-editor-resizer-label-bottom-right = Donji desni kut – promijeni veličinu\n+pdfjs-editor-resizer-label-bottom-middle = Sredina dolje – promjeni veličinu\n+pdfjs-editor-resizer-label-bottom-left = Donji lijevi kut – promijeni veličinu\n+pdfjs-editor-resizer-label-middle-left = Sredina lijevo – promijeni veličinu\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Gornji lijevi kut – promijeni veličinu\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Sredina gore – promijeni veličinu\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Gornji desni kut – promijeni veličinu\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Sredina desno – promijeni veličinu\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Donji desni kut – promijeni veličinu\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Sredina dolje – promjeni veličinu\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Donji lijevi kut – promijeni veličinu\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Sredina lijevo – promijeni veličinu\n+\n+## Color picker\n+\n+# This means \"Color used to highlight text\"\n+pdfjs-editor-highlight-colorpicker-label = Boja isticanja\n+pdfjs-editor-colorpicker-button =\n+    .title = Promjeni boju\n+pdfjs-editor-colorpicker-dropdown =\n+    .aria-label = Izbor boja\n+pdfjs-editor-colorpicker-yellow =\n+    .title = Žuta\n+pdfjs-editor-colorpicker-green =\n+    .title = Zelena\n+pdfjs-editor-colorpicker-blue =\n+    .title = Plava\n+pdfjs-editor-colorpicker-pink =\n+    .title = Ružičasta\n+pdfjs-editor-colorpicker-red =\n+    .title = Crvena\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+pdfjs-editor-highlight-show-all-button-label = Prikaži sve\n+pdfjs-editor-highlight-show-all-button =\n+    .title = Prikaži sve\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Uredi alternativni tekst (opis slike)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Dodaj alternativni tekst (opis slike)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Ovdje upiši tvoj opis …\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Kratki opis koji pomažu osobama koji ne mogu vidjeti sliku ili kada se slika ne učita.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Ovaj je alternativni tekst stvoren automatski i može biti netočan.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Saznaj više\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Automatski stvori alternativni tekst\n+pdfjs-editor-new-alt-text-not-now-button = Ne sada\n+pdfjs-editor-new-alt-text-error-title = Nije bilo moguće automatski izraditi alternativni tekst\n+pdfjs-editor-new-alt-text-error-description = Napiši vlastiti alternativni tekst ili pokušaj kasnije ponovo.\n+pdfjs-editor-new-alt-text-error-close-button = Zatvori\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Preuzimanje alternativnog teksta UI modela ({ $downloadedSize } od { $totalSize } MB)\n+    .aria-valuetext = Preuzimanje alternativnog teksta UI modela ({ $downloadedSize } od { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Alternativni tekst je dodan\n+pdfjs-editor-new-alt-text-added-button-label = Alternativni tekst je dodan\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Nedostaje alternativni tekst\n+pdfjs-editor-new-alt-text-missing-button-label = Nedostaje alternativni tekst\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Pregledaj alternativni tekst\n+pdfjs-editor-new-alt-text-to-review-button-label = Pregledaj alternativni tekst\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Stvoreno automatski: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Postavke alternativnog teksta slike\n+pdfjs-image-alt-text-settings-button-label = Postavke alternativnog teksta slike\n+pdfjs-editor-alt-text-settings-dialog-label = Postavke alternativnog teksta slike\n+pdfjs-editor-alt-text-settings-automatic-title = Automatski alternativni tekst\n+pdfjs-editor-alt-text-settings-create-model-button-label = Stvori alternativni tekst automatski\n+pdfjs-editor-alt-text-settings-create-model-description = Predlaže opise koji pomažu osobama koji ne mogu vidjeti sliku ili kada se slika ne učita.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Alternativni tekst UI modela ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Radi lokalno na tvom uređaju kako bi tvoji podaci ostali privatni. Potrebno za automatski alternativni tekst.\n+pdfjs-editor-alt-text-settings-delete-model-button = Izbriši\n+pdfjs-editor-alt-text-settings-download-model-button = Preuzmi\n+pdfjs-editor-alt-text-settings-downloading-model-button = Preuzimanje …\n+pdfjs-editor-alt-text-settings-editor-title = Uređivač alternativnog teksta\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Prikaži uređivač alternativnog teksta odmah pri dodavanju slike\n+pdfjs-editor-alt-text-settings-show-dialog-description = Pomaže osigurati da sve tvoje slike imaju alternativni tekst.\n+pdfjs-editor-alt-text-settings-close-button = Zatvori\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Isticanje uklonjeno\n+pdfjs-editor-undo-bar-message-freetext = Tekst uklonjen\n+pdfjs-editor-undo-bar-message-ink = Crtež uklonjen\n+pdfjs-editor-undo-bar-message-stamp = Slika uklonjena\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } pribilješka uklonjena\n+        [few] { $count } pribilješke uklonjene\n+       *[other] { $count } pribilješki uklonjeno\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Poništi\n+pdfjs-editor-undo-bar-undo-button-label = Poništi\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Zatvori\n+pdfjs-editor-undo-bar-close-button-label = Zatvori\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fhsb\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fhsb\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fhsb\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fhsb\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Aktualna strona (URL z aktualneje strony pokazać)\n pdfjs-bookmark-button-label = Aktualna strona\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = W nałoženju wočinić\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = W nałoženju wočinić\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = Mjeno dataje:\n pdfjs-document-properties-file-size = Wulkosć dataje:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bajtow)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bajtow)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bajtow)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Datum wutworjenja:\n pdfjs-document-properties-modification-date = Datum změny:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -285,6 +290,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [Typ přispomnjenki: { $type }]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -308,12 +316,29 @@\n pdfjs-editor-highlight-button =\n     .title = Wuzběhnyć\n pdfjs-editor-highlight-button-label = Wuzběhnyć\n-pdfjs-highlight-floating-button =\n-    .title = Wuzběhnyć\n pdfjs-highlight-floating-button1 =\n     .title = Wuzběhnjenje\n     .aria-label = Wuzběhnjenje\n pdfjs-highlight-floating-button-label = Wuzběhnjenje\n+pdfjs-editor-signature-button =\n+    .title = Signaturu přidać\n+pdfjs-editor-signature-button-label = Signaturu přidać\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Wuzběhowanski editor\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Rysowanski editor\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Signaturowy editor: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Wobrazowy editor\n \n ## Remove button for the various kind of editor.\n \n@@ -325,6 +350,8 @@\n     .title = Wobraz wotstronić\n pdfjs-editor-remove-highlight-button =\n     .title = Wuzběhnjenje wotstronić\n+pdfjs-editor-remove-signature-button =\n+    .title = Signaturu wotstronić\n \n ##\n \n@@ -341,6 +368,20 @@\n pdfjs-editor-free-highlight-thickness-input = Tołstosć\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Tołstosć změnić, hdyž so zapiski wuzběhuja, kotrež tekst njejsu\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Wodźenske elementy signaturow a składowane signatury\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Nowu signaturu přidać\n+pdfjs-editor-signature-add-signature-button-label = Nowu signaturu přidać\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Składowana signatura: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Tekstowy editor\n+    .default-content = Započńće pisać …\n pdfjs-free-text =\n     .aria-label = Tekstowy editor\n pdfjs-free-text-default-content = Započńće pisać…\n@@ -351,8 +392,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Alternatiwny tekst\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Alternatiwny tekst wobdźěłać\n pdfjs-editor-alt-text-edit-button-label = Alternatiwny tekst wobdźěłać\n pdfjs-editor-alt-text-dialog-label = Nastajenje wubrać\n pdfjs-editor-alt-text-dialog-description = Alternatiwny tekst pomha, hdyž ludźo njemóža wobraz widźeć abo hdyž so wobraz njezačita.\n@@ -366,6 +408,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Na přikład, „Młody muž za blidom sedźi, zo by jědź jědł“\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Alternatiwny tekst\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -378,6 +423,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Deleka wosrjedź – wulkosć změnić\n pdfjs-editor-resizer-label-bottom-left = Deleka nalěwo – wulkosć změnić\n pdfjs-editor-resizer-label-middle-left = Wosrjedź nalěwo – wulkosć změnić\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Horjeka nalěwo – wulkosć změnić\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Horjeka wosrjedź – wulkosć změnić\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Horjeka naprawo – wulkosć změnić\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Wosrjedź naprawo – wulkosć změnić\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Deleka naprawo – wulkosć změnić\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Deleka wosrjedź – wulkosć změnić\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Deleka nalěwo – wulkosć změnić\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Wosrjedź nalěwo – wulkosć změnić\n \n ## Color picker\n \n@@ -404,3 +465,157 @@\n pdfjs-editor-highlight-show-all-button-label = Wšě pokazać\n pdfjs-editor-highlight-show-all-button =\n     .title = Wšě pokazać\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Alternatiwny tekst wobdźěłać (wobrazowe wopisanje)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Alternatiwny tekst přidać (wobrazowe wopisanje)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Pisajće tu swoje wopisanje…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Krótke wopisanje za ludźi, kotřiž njemóžeće wobraz widźeć abo hdyž so wobraz njezačita.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Tutón alternatiwny tekst je so awtomatisce wutworił a je snano njedokładny.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Dalše informacije\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Alternatiwny tekst awtomatisce wutworić\n+pdfjs-editor-new-alt-text-not-now-button = Nic nětko\n+pdfjs-editor-new-alt-text-error-title = Alternatiwny tekst njeda so awtomatisce wutworić\n+pdfjs-editor-new-alt-text-error-description = Prošu pisajće swój alternatiwny tekst abo spytajće pozdźišo hišće raz.\n+pdfjs-editor-new-alt-text-error-close-button = Začinić\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Model KI za alternatiwny tekst so sćahuje ({ $downloadedSize } z { $totalSize } MB)\n+    .aria-valuetext = Model KI za alternatiwny tekst so sćahuje ({ $downloadedSize } z { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Alternatiwny tekst je so přidał\n+pdfjs-editor-new-alt-text-added-button-label = Alternatiwny tekst je so přidał\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Alternatiwny tekst faluje\n+pdfjs-editor-new-alt-text-missing-button-label = Alternatiwny tekst faluje\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Alternatiwny tekst přepruwować\n+pdfjs-editor-new-alt-text-to-review-button-label = Alternatiwny tekst přepruwować\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Awtomatisce wutworjeny: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Nastajenja alternatiwneho wobrazoweho teksta\n+pdfjs-image-alt-text-settings-button-label = Nastajenja alternatiwneho wobrazoweho teksta\n+pdfjs-editor-alt-text-settings-dialog-label = Nastajenja alternatiwneho wobrazoweho teksta\n+pdfjs-editor-alt-text-settings-automatic-title = Awtomatiski alternatiwny tekst\n+pdfjs-editor-alt-text-settings-create-model-button-label = Alternatiwny tekst awtomatisce wutworić\n+pdfjs-editor-alt-text-settings-create-model-description = Namjetuje wopisanja, zo by ludźom pomhał, kotřiž njemóžeće wobraz widźeć abo hdyž so wobraz njezačita.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Model KI alternatiwneho teksta ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Běži lokalnje na wašim graće, zo bychu waše daty priwatne wostali. Za awtomatiski alternatiwny tekst trěbny.\n+pdfjs-editor-alt-text-settings-delete-model-button = Zhašeć\n+pdfjs-editor-alt-text-settings-download-model-button = Sćahnyć\n+pdfjs-editor-alt-text-settings-downloading-model-button = Sćahuje so…\n+pdfjs-editor-alt-text-settings-editor-title = Editor za alternatiwny tekst\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Editor alternatiwneho teksta hnydom pokazać, hdyž so wobraz přidawa\n+pdfjs-editor-alt-text-settings-show-dialog-description = Pomha, wam wšěm swojim wobrazam alternatiwny tekst přidać.\n+pdfjs-editor-alt-text-settings-close-button = Začinić\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Wotstronjene wuzběhnyć\n+pdfjs-editor-undo-bar-message-freetext = Tekst je so wotstronił\n+pdfjs-editor-undo-bar-message-ink = Rysowanka je so wotstroniła\n+pdfjs-editor-undo-bar-message-stamp = Wobraz je so wotstronił\n+pdfjs-editor-undo-bar-message-signature = Signatura je so wotstroniła\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } přispomnjenka je so wotstroniła\n+        [two] { $count } přispomnjence stej so wotstroniłoj\n+        [few] { $count } přispomnjenki su so wotstronili\n+       *[other] { $count } přispomnjenkow je so wotstroniło\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Cofnyć\n+pdfjs-editor-undo-bar-undo-button-label = Cofnyć\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Začinić\n+pdfjs-editor-undo-bar-close-button-label = Začinić\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Tutón modalny dialog wužiwarjej zmóžnja, signaturu wutworić, zo by PDF-dokument přidał. Wužiwar móže mjeno wobdźěłać (kotrež tež jako alternatiwny tekst słuži) a po přeću signaturu za wospjetne wužiwanje składować.\n+pdfjs-editor-add-signature-dialog-title = Signaturu přidać\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Typ\n+    .title = Typ\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Rysować\n+    .title = Rysować\n+pdfjs-editor-add-signature-image-button = Wobraz\n+    .title = Wobraz\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Zapodajće swoju signaturu\n+    .placeholder = Zapodajće swoju signaturu\n+pdfjs-editor-add-signature-draw-placeholder = Rysujće swoju signaturu\n+pdfjs-editor-add-signature-draw-thickness-range-label = Tołstosć\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Tołstosć rysowanki: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Ćehńće dataju sem, zo byšće ju nahrał\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Abo přepytajće wobrazowe dataje\n+       *[other] Abo přepytajće wobrazowe dataje\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Wopisanje (alternatiwny tekst)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Wopisanje (alternatiwny tekst)\n+pdfjs-editor-add-signature-description-default-when-drawing = Signatura\n+pdfjs-editor-add-signature-clear-button-label = Signaturu zhašeć\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Signaturu zhašeć\n+pdfjs-editor-add-signature-save-checkbox = Signaturu składować\n+pdfjs-editor-add-signature-save-warning-message = Sće limit 5 składowanych signaturow docpěł. Wotstrońće jednu, zo byšće wjace składował.\n+pdfjs-editor-add-signature-image-upload-error-title = Wobraz njeda so nahrać\n+pdfjs-editor-add-signature-image-upload-error-description = Přepruwujće swój syćowy zwisk abo spytajće druhi wobraz.\n+pdfjs-editor-add-signature-error-close-button = Začinić\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Přetorhnyć\n+pdfjs-editor-add-signature-add-button = Přidać\n+pdfjs-editor-edit-signature-update-button = Aktualizować\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Składowanu signaturu wotstronić\n+pdfjs-editor-delete-signature-button-label1 = Składowanu signaturu wotstronić\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Wopisanje wobdźěłać\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Wopisanje wobdźěłać\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fhu\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fhu\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fhu\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fhu\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -105,6 +105,14 @@\n pdfjs-document-properties-file-name = Fájlnév:\n pdfjs-document-properties-file-size = Fájlméret:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } kB ({ $b } bájt)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bájt)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bájt)\n@@ -119,6 +127,9 @@\n pdfjs-document-properties-creation-date = Létrehozás dátuma:\n pdfjs-document-properties-modification-date = Módosítás dátuma:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -275,6 +286,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type } megjegyzés]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -298,12 +312,29 @@\n pdfjs-editor-highlight-button =\n     .title = Kiemelés\n pdfjs-editor-highlight-button-label = Kiemelés\n-pdfjs-highlight-floating-button =\n-    .title = Kiemelés\n pdfjs-highlight-floating-button1 =\n     .title = Kiemelés\n     .aria-label = Kiemelés\n pdfjs-highlight-floating-button-label = Kiemelés\n+pdfjs-editor-signature-button =\n+    .title = Aláírás hozzáadása\n+pdfjs-editor-signature-button-label = Aláírás hozzáadása\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Kiemelésszerkesztő\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Rajzszerkesztő\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Aláírás-szerkesztő: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Képszerkesztő\n \n ## Remove button for the various kind of editor.\n \n@@ -315,6 +346,8 @@\n     .title = Kép eltávolítása\n pdfjs-editor-remove-highlight-button =\n     .title = Kiemelés eltávolítása\n+pdfjs-editor-remove-signature-button =\n+    .title = Aláírás eltávolítása\n \n ##\n \n@@ -331,6 +364,20 @@\n pdfjs-editor-free-highlight-thickness-input = Vastagság\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Vastagság módosítása, ha nem szöveges elemeket emel ki\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Aláírás-vezérlők és mentett aláírások\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Új aláírás hozzáadása\n+pdfjs-editor-signature-add-signature-button-label = Új aláírás hozzáadása\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Mentett aláírás: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Szövegszerkesztő\n+    .default-content = Kezdjen gépelni…\n pdfjs-free-text =\n     .aria-label = Szövegszerkesztő\n pdfjs-free-text-default-content = Kezdjen el gépelni…\n@@ -341,8 +388,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Alternatív szöveg\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Alternatív szöveg szerkesztése\n pdfjs-editor-alt-text-edit-button-label = Alternatív szöveg szerkesztése\n pdfjs-editor-alt-text-dialog-label = Válasszon egy lehetőséget\n pdfjs-editor-alt-text-dialog-description = Az alternatív szöveg segít, ha az emberek nem látják a képet, vagy ha az nem töltődik be.\n@@ -356,6 +404,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Például: „Egy fiatal férfi leül enni egy asztalhoz”\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Alternatív szöveg\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -368,6 +419,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Alul középen – átméretezés\n pdfjs-editor-resizer-label-bottom-left = Bal alsó sarok – átméretezés\n pdfjs-editor-resizer-label-middle-left = Balra középen – átméretezés\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Bal felső sarok – átméretezés\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Felül középen – átméretezés\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Jobb felső sarok – átméretezés\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Jobbra középen – átméretezés\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Jobb alsó sarok – átméretezés\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Alul középen – átméretezés\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Bal alsó sarok – átméretezés\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Balra középen – átméretezés\n \n ## Color picker\n \n@@ -394,3 +461,155 @@\n pdfjs-editor-highlight-show-all-button-label = Összes megjelenítése\n pdfjs-editor-highlight-show-all-button =\n     .title = Összes megjelenítése\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Alternatív szöveg szerkesztése (képleírás)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Alternatív szöveg hozzáadása (képleírás)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Írja ide a leírását…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Rövid leírás azoknak, akik nem látják a képet, vagy arra az esetre, ha a kép nem tölt be.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Ez az alternatív szöveg automatikusan lett létrehozva, és pontatlan lehet.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = További tudnivalók\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Alternatív szöveg automatikus létrehozása\n+pdfjs-editor-new-alt-text-not-now-button = Most nem\n+pdfjs-editor-new-alt-text-error-title = Az alternatív szöveg automatikus létrehozása nem sikerült\n+pdfjs-editor-new-alt-text-error-description = Írja meg a saját alternatív szövegét, vagy próbálja újra később.\n+pdfjs-editor-new-alt-text-error-close-button = Bezárás\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Alternatív szöveg MI modell letöltése ({ $downloadedSize } \u002F { $totalSize } MB)\n+    .aria-valuetext = Alternatív szöveg MI modell letöltése ({ $downloadedSize } \u002F { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Alternatív szöveg hozzáadva\n+pdfjs-editor-new-alt-text-added-button-label = Alternatív szöveg hozzáadva\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Hiányzó alternatív szöveg\n+pdfjs-editor-new-alt-text-missing-button-label = Hiányzó alternatív szöveg\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Alternatív szöveg áttekintése\n+pdfjs-editor-new-alt-text-to-review-button-label = Alternatív szöveg szerkesztése\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Automatikusan létrehozva: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Kép alternatív szövegének beállításai\n+pdfjs-image-alt-text-settings-button-label = Kép alternatív szövegének beállításai\n+pdfjs-editor-alt-text-settings-dialog-label = Kép alternatív szövegének beállításai\n+pdfjs-editor-alt-text-settings-automatic-title = Automatikus alternatív szöveg\n+pdfjs-editor-alt-text-settings-create-model-button-label = Alternatív szöveg automatikus létrehozása\n+pdfjs-editor-alt-text-settings-create-model-description = Leírásokat javasol, hogy segítsen azoknak, akik nem látják a képet, vagy arra az esetre, ha a kép nem tölt be.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Alternatív szöveg MI modellje ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Helyben fut az eszközén, így az adatai privátok maradnak. Az automatikus alternatív szövegekhez szükséges.\n+pdfjs-editor-alt-text-settings-delete-model-button = Törlés\n+pdfjs-editor-alt-text-settings-download-model-button = Letöltés\n+pdfjs-editor-alt-text-settings-downloading-model-button = Letöltés…\n+pdfjs-editor-alt-text-settings-editor-title = Alternatív szöveg szerkesztője\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Az alternatív szöveg szerkesztőjének azonnali megjelenítése egy kép hozzáadásakor\n+pdfjs-editor-alt-text-settings-show-dialog-description = Segít elérni, hogy az összes képén legyen alternatív szöveg.\n+pdfjs-editor-alt-text-settings-close-button = Bezárás\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Kiemelés eltávolítva\n+pdfjs-editor-undo-bar-message-freetext = Szöveg eltávolítva\n+pdfjs-editor-undo-bar-message-ink = Rajz eltávolítva\n+pdfjs-editor-undo-bar-message-stamp = Kép eltávolítva\n+pdfjs-editor-undo-bar-message-signature = Aláírás eltávolítva\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } kommentár eltávolítva\n+       *[other] { $count } kommentár eltávolítva\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Visszavonás\n+pdfjs-editor-undo-bar-undo-button-label = Visszavonás\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Bezárás\n+pdfjs-editor-undo-bar-close-button-label = Bezárás\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Ez a mód lehetővé teszi a felhasználónak, hogy aláírást hozzon létre, és ezt egy PDF dokumentumhoz adja. A felhasználó szerkesztheti a nevet (ez egyben alternatív szövegként is szolgál), és ismételt felhasználás céljából tetszés szerint mentheti az aláírást.\n+pdfjs-editor-add-signature-dialog-title = Aláírás hozzáadása\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Beírás\n+    .title = Beírás\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Rajzolás\n+    .title = Rajzolás\n+pdfjs-editor-add-signature-image-button = Kép\n+    .title = Kép\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Írja be az aláírását\n+    .placeholder = Írja be az aláírását\n+pdfjs-editor-add-signature-draw-placeholder = Rajzolja le az aláírását\n+pdfjs-editor-add-signature-draw-thickness-range-label = Vastagság\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Rajzolási vastagság: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Húzzon ide egy fájlt a feltöltéshez\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Vagy tallózzon a képfájlok között\n+       *[other] Vagy tallózzon a képfájlok között\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Leírás (alternatív szöveg)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Leírás (alternatív szöveg)\n+pdfjs-editor-add-signature-description-default-when-drawing = Aláírás\n+pdfjs-editor-add-signature-clear-button-label = Aláírás törlése\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Aláírás törlése\n+pdfjs-editor-add-signature-save-checkbox = Aláírás mentése\n+pdfjs-editor-add-signature-save-warning-message = Elérte a mentett aláírások 5 darabos korlátját. A mentéshez távolítson el egyet.\n+pdfjs-editor-add-signature-image-upload-error-title = A kép nem tölthető fel\n+pdfjs-editor-add-signature-image-upload-error-description = Ellenőrizze a hálózati kapcsolatot, vagy próbálkozzon egy másik képpel.\n+pdfjs-editor-add-signature-error-close-button = Bezárás\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Mégse\n+pdfjs-editor-add-signature-add-button = Hozzáadás\n+pdfjs-editor-edit-signature-update-button = Frissítés\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Mentett aláírás eltávolítása\n+pdfjs-editor-delete-signature-button-label1 = Mentett aláírás eltávolítása\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Leírás szerkesztése\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Leírás szerkesztése\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fhy-AM\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fhy-AM\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fhy-AM\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fhy-AM\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -39,6 +39,9 @@\n pdfjs-print-button =\n     .title = Տպել\n pdfjs-print-button-label = Տպել\n+pdfjs-save-button =\n+    .title = Պահպանել\n+pdfjs-save-button-label = Պահպանել\n # Used in Firefox for Android as a label for the download button (“download” is a verb).\n # Length of the translation matters since we are in a mobile context, with limited screen estate.\n pdfjs-download-button-label = Ներբեռնել\n@@ -247,6 +250,9 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n ## Remove button for the various kind of editor.\n \n \n@@ -256,6 +262,7 @@\n \n ## Alt-text dialog\n \n+pdfjs-editor-alt-text-save-button = Պահպանել\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -270,3 +277,38 @@\n pdfjs-editor-highlight-show-all-button-label = Ցուցադրել բոլորը\n pdfjs-editor-highlight-show-all-button =\n     .title = Ցուցադրել բոլորը\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+pdfjs-editor-new-alt-text-not-now-button = Ոչ հիմա\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fhye\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fhye\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fhye\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fhye\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -260,9 +260,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fia\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fia\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fia\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fia\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -105,6 +105,14 @@\n pdfjs-document-properties-file-name = Nomine del file:\n pdfjs-document-properties-file-size = Dimension de file:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bytes)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)\n@@ -119,6 +127,9 @@\n pdfjs-document-properties-creation-date = Data de creation:\n pdfjs-document-properties-modification-date = Data de modification:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -275,6 +286,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type } Annotation]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -302,6 +316,25 @@\n     .title = Evidentiar\n     .aria-label = Evidentiar\n pdfjs-highlight-floating-button-label = Evidentiar\n+pdfjs-editor-signature-button =\n+    .title = Adder signatura\n+pdfjs-editor-signature-button-label = Adder signatura\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Editor de evidentiation\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Editor de designos\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Editor de signatura: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Editor de imagines\n \n ## Remove button for the various kind of editor.\n \n@@ -313,6 +346,8 @@\n     .title = Remover imagine\n pdfjs-editor-remove-highlight-button =\n     .title = Remover evidentia\n+pdfjs-editor-remove-signature-button =\n+    .title = Remover signatura\n \n ##\n \n@@ -329,6 +364,20 @@\n pdfjs-editor-free-highlight-thickness-input = Spissor\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Cambiar spissor evidentiante elementos differente de texto\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Controlos de signatura e signaturas salvate\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Adder nove signatura\n+pdfjs-editor-signature-add-signature-button-label = Adder nove signatura\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Signatura salvate: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Editor de texto\n+    .default-content = Initiar a inserer…\n pdfjs-free-text =\n     .aria-label = Editor de texto\n pdfjs-free-text-default-content = Comenciar a scriber…\n@@ -339,8 +388,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Texto alternative\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Rediger texto alternative\n pdfjs-editor-alt-text-edit-button-label = Rediger texto alternative\n pdfjs-editor-alt-text-dialog-label = Elige un option\n pdfjs-editor-alt-text-dialog-description = Le texto alternative (alt text) adjuta quando le personas non pote vider le imagine o quando illo non carga.\n@@ -354,6 +404,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Per exemplo, “Un juvene sede a un tabula pro mangiar un repasto”\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Texto alternative\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -366,6 +419,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Medio inferior — redimensionar\n pdfjs-editor-resizer-label-bottom-left = Angulo inferior sinistre — redimensionar\n pdfjs-editor-resizer-label-middle-left = Medio sinistre — redimensionar\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Angulo superior sinistre — redimensionar\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Medio superior — redimensionar\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Angulo superior dextre — redimensionar\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Medio dextre — redimensionar\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Angulo inferior dextre — redimensionar\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Medio inferior — redimensionar\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Angulo inferior sinistre — redimensionar\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Medio sinistre — redimensionar\n \n ## Color picker\n \n@@ -392,3 +461,155 @@\n pdfjs-editor-highlight-show-all-button-label = Monstrar toto\n pdfjs-editor-highlight-show-all-button =\n     .title = Monstrar toto\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Rediger texto alternative (description del imagine)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Adder texto alternative (description del imagine)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Scribe tu description ci…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Breve description pro personas qui non pote vider le imagine o quando le imagine non se carga.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Iste texto alternative ha essite create automaticamente e pote esser inexacte.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Pro saper plus\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Crear texto alternative automaticamente\n+pdfjs-editor-new-alt-text-not-now-button = Non ora\n+pdfjs-editor-new-alt-text-error-title = Impossibile crear texto alternative automaticamente\n+pdfjs-editor-new-alt-text-error-description = Scribe tu proprie texto alternative o retenta plus tarde.\n+pdfjs-editor-new-alt-text-error-close-button = Clauder\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Discargante modello de intelligentia artificial  del texto alternative ({ $downloadedSize } de { $totalSize } MB)\n+    .aria-valuetext = Discargante modello de intelligentia artificial  del texto alternative ({ $downloadedSize } de { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Texto alternative addite\n+pdfjs-editor-new-alt-text-added-button-label = Texto alternative addite\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Texto alternative mancante\n+pdfjs-editor-new-alt-text-missing-button-label = Texto alternative mancante\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Revider texto alternative\n+pdfjs-editor-new-alt-text-to-review-button-label = Revider texto alternative\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Automaticamente create: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Parametros del texto alternative del imagine\n+pdfjs-image-alt-text-settings-button-label = Parametros del texto alternative del imagine\n+pdfjs-editor-alt-text-settings-dialog-label = Parametros del texto alternative del imagine\n+pdfjs-editor-alt-text-settings-automatic-title = Texto alternative automatic\n+pdfjs-editor-alt-text-settings-create-model-button-label = Crear texto alternative automaticamente\n+pdfjs-editor-alt-text-settings-create-model-description = Suggere descriptiones pro adjutar le personas qui non pote vider le imagine o quando le imagine non carga.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Modello de intelligentia artificial del texto alternative ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Flue localmente sur tu apparato assi tu datos remane private. Necessari pro texto alternative automatic.\n+pdfjs-editor-alt-text-settings-delete-model-button = Deler\n+pdfjs-editor-alt-text-settings-download-model-button = Discargar\n+pdfjs-editor-alt-text-settings-downloading-model-button = Discargante…\n+pdfjs-editor-alt-text-settings-editor-title = Rediger texto alternative\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Monstrar le redactor de texto alternative a pena on adde un imagine\n+pdfjs-editor-alt-text-settings-show-dialog-description = Te adjuta a verifica que tote tu imagines ha un texto alternative.\n+pdfjs-editor-alt-text-settings-close-button = Clauder\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Evidentiation removite\n+pdfjs-editor-undo-bar-message-freetext = Texto removite\n+pdfjs-editor-undo-bar-message-ink = Designo removite\n+pdfjs-editor-undo-bar-message-stamp = Imagine removite\n+pdfjs-editor-undo-bar-message-signature = Signatura removite\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } annotation removite\n+       *[other] { $count } annotationes removite\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Disfacer\n+pdfjs-editor-undo-bar-undo-button-label = Disfacer\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Clauder\n+pdfjs-editor-undo-bar-close-button-label = Clauder\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Iste formulario permitte al usator crear un firma a adder a un documento PDF. Le usator pote modificar le nomine (le qual tamben servi de texto alternative) e, si desirate, salvar le firma pro uso repetite.\n+pdfjs-editor-add-signature-dialog-title = Adder un signatura\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Typar\n+    .title = Typar\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Designar\n+    .title = Designar\n+pdfjs-editor-add-signature-image-button = Imagine\n+    .title = Imagine\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Insere tu firma\n+    .placeholder = Insere tu firma\n+pdfjs-editor-add-signature-draw-placeholder = Designa tu firma\n+pdfjs-editor-add-signature-draw-thickness-range-label = Spissor\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Spissor de designo: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Trahe un file hic pro incargar lo\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] O elige files de imagine\n+       *[other] O folietta files de imagine\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Description (texto alternative)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Description (texto alternative)\n+pdfjs-editor-add-signature-description-default-when-drawing = Signatura\n+pdfjs-editor-add-signature-clear-button-label = Rader signatura\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Rader signatura\n+pdfjs-editor-add-signature-save-checkbox = Salvar signatura\n+pdfjs-editor-add-signature-save-warning-message = Tu ha attingite le limite de 5 firmas salvate. Remove un pro salvar un altere.\n+pdfjs-editor-add-signature-image-upload-error-title = Non poteva incargar le imagine\n+pdfjs-editor-add-signature-image-upload-error-description = Verifica tu connexion al rete o tenta un altere imagine.\n+pdfjs-editor-add-signature-error-close-button = Clauder\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Cancellar\n+pdfjs-editor-add-signature-add-button = Adder\n+pdfjs-editor-edit-signature-update-button = Actualisar\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Remover signatura salvate\n+pdfjs-editor-delete-signature-button-label1 = Remover signatura salvate\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Rediger description\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Rediger description\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fid\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fid\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fid\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fid\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -42,6 +42,12 @@\n pdfjs-save-button =\n     .title = Simpan\n pdfjs-save-button-label = Simpan\n+# Used in Firefox for Android as a tooltip for the download button (“download” is a verb).\n+pdfjs-download-button =\n+    .title = Unduh\n+# Used in Firefox for Android as a label for the download button (“download” is a verb).\n+# Length of the translation matters since we are in a mobile context, with limited screen estate.\n+pdfjs-download-button-label = Unduh\n pdfjs-bookmark-button =\n     .title = Laman Saat Ini (Lihat URL dari Laman Sekarang)\n pdfjs-bookmark-button-label = Laman Saat Ini\n@@ -99,6 +105,14 @@\n pdfjs-document-properties-file-name = Nama berkas:\n pdfjs-document-properties-file-size = Ukuran berkas:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } byte)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } byte)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } byte)\n@@ -113,6 +127,9 @@\n pdfjs-document-properties-creation-date = Tanggal Dibuat:\n pdfjs-document-properties-modification-date = Tanggal Dimodifikasi:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -214,6 +231,13 @@\n pdfjs-find-entire-word-checkbox-label = Seluruh teks\n pdfjs-find-reached-top = Sampai di awal dokumen, dilanjutkan dari bawah\n pdfjs-find-reached-bottom = Sampai di akhir dokumen, dilanjutkan dari atas\n+# Variables:\n+#   $current (Number) - the index of the currently active find result\n+#   $total (Number) - the total number of matches in the document\n+pdfjs-find-match-count = { $current } dari { $total } yang cocok\n+# Variables:\n+#   $limit (Number) - the maximum number of matches\n+pdfjs-find-match-count-limit = Lebih dari { $limit } kecocokan\n pdfjs-find-not-found = Frasa tidak ditemukan\n \n ## Predefined zoom values\n@@ -254,6 +278,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [Anotasi { $type }]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -271,12 +298,78 @@\n pdfjs-editor-ink-button =\n     .title = Gambar\n pdfjs-editor-ink-button-label = Gambar\n+pdfjs-editor-stamp-button =\n+    .title = Tambah atau edit gambar\n+pdfjs-editor-stamp-button-label = Tambah atau edit gambar\n+pdfjs-editor-highlight-button =\n+    .title = Sorot\n+pdfjs-editor-highlight-button-label = Sorot\n+pdfjs-highlight-floating-button1 =\n+    .title = Sorot\n+    .aria-label = Sorot\n+pdfjs-highlight-floating-button-label = Sorot\n+pdfjs-editor-signature-button =\n+    .title = Tambahkan tanda tangan\n+pdfjs-editor-signature-button-label = Tambahkan tanda tangan\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Editor sorot\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Editor gambar\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Editor tanda tangan: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Editor gambar\n+\n+## Remove button for the various kind of editor.\n+\n+pdfjs-editor-remove-ink-button =\n+    .title = Hapus gambar\n+pdfjs-editor-remove-freetext-button =\n+    .title = Hapus teks\n+pdfjs-editor-remove-stamp-button =\n+    .title = Hapus gambar\n+pdfjs-editor-remove-highlight-button =\n+    .title = Hapus sorotan\n+pdfjs-editor-remove-signature-button =\n+    .title = Hapus tanda tangan\n+\n+##\n+\n # Editor Parameters\n pdfjs-editor-free-text-color-input = Warna\n pdfjs-editor-free-text-size-input = Ukuran\n pdfjs-editor-ink-color-input = Warna\n pdfjs-editor-ink-thickness-input = Ketebalan\n pdfjs-editor-ink-opacity-input = Opasitas\n+pdfjs-editor-stamp-add-image-button =\n+    .title = Tambahkan gambar\n+pdfjs-editor-stamp-add-image-button-label = Tambahkan gambar\n+# This refers to the thickness of the line used for free highlighting (not bound to text)\n+pdfjs-editor-free-highlight-thickness-input = Ketebalan\n+pdfjs-editor-free-highlight-thickness-title =\n+    .title = Ubah ketebalan saat menyorot item selain teks\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Kontrol tanda tangan dan tanda tangan tersimpan\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Tambahkan tanda tangan baru\n+pdfjs-editor-signature-add-signature-button-label = Tambahkan tanda tangan baru\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Tanda tangan tersimpan: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Editor Teks\n+    .default-content = Mulai mengetik…\n pdfjs-free-text =\n     .aria-label = Editor Teks\n pdfjs-free-text-default-content = Mulai mengetik…\n@@ -287,7 +380,224 @@\n \n ## Alt-text dialog\n \n+pdfjs-editor-alt-text-button-label = Teks alternatif\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Edit teks alternatif\n+pdfjs-editor-alt-text-edit-button-label = Edit teks alternatif\n+pdfjs-editor-alt-text-dialog-label = Pilih opsi\n+pdfjs-editor-alt-text-dialog-description = Teks alternatif membantu ketika orang tidak dapat melihat gambar atau ketika tidak termuat.\n+pdfjs-editor-alt-text-add-description-label = Tambahkan deskripsi\n+pdfjs-editor-alt-text-add-description-description = Upayakan 1-2 kalimat yang menggambarkan subjek, latar, atau tindakan.\n+pdfjs-editor-alt-text-mark-decorative-label = Tandai sebagai dekoratif\n+pdfjs-editor-alt-text-mark-decorative-description = Ini digunakan untuk gambar hias, seperti batas atau tanda air.\n+pdfjs-editor-alt-text-cancel-button = Batal\n+pdfjs-editor-alt-text-save-button = Simpan\n+pdfjs-editor-alt-text-decorative-tooltip = Ditandai sebagai dekoratif\n+# .placeholder: This is a placeholder for the alt text input area\n+pdfjs-editor-alt-text-textarea =\n+    .placeholder = Misalnya, “Seorang pemuda duduk di meja untuk makan”\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Teks alternatif\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+pdfjs-editor-resizer-label-top-left = Pojok kiri atas — ubah ukuran\n+pdfjs-editor-resizer-label-top-middle = Tengah atas — ubah ukuran\n+pdfjs-editor-resizer-label-top-right = Pojok kanan atas — ubah ukuran\n+pdfjs-editor-resizer-label-middle-right = Kanan tengah — ubah ukuran\n+pdfjs-editor-resizer-label-bottom-right = Pojok kanan bawah — ubah ukuran\n+pdfjs-editor-resizer-label-bottom-middle = Tengah bawah — ubah ukuran\n+pdfjs-editor-resizer-label-bottom-left = Pojok kiri bawah — ubah ukuran\n+pdfjs-editor-resizer-label-middle-left = Kiri tengah — ubah ukuran\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Pojok kiri atas — ubah ukuran\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Tengah atas — ubah ukuran\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Pojok kanan atas — ubah ukuran\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Kanan tengah — ubah ukuran\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Pojok kanan bawah — ubah ukuran\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Tengah bawah — ubah ukuran\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Pojok kiri bawah — ubah ukuran\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Kiri tengah — ubah ukuran\n+\n+## Color picker\n+\n+# This means \"Color used to highlight text\"\n+pdfjs-editor-highlight-colorpicker-label = Warna sorot\n+pdfjs-editor-colorpicker-button =\n+    .title = Ubah warna\n+pdfjs-editor-colorpicker-dropdown =\n+    .aria-label = Pilihan warna\n+pdfjs-editor-colorpicker-yellow =\n+    .title = Kuning\n+pdfjs-editor-colorpicker-green =\n+    .title = Hijau\n+pdfjs-editor-colorpicker-blue =\n+    .title = Biru\n+pdfjs-editor-colorpicker-pink =\n+    .title = Merah Jambu\n+pdfjs-editor-colorpicker-red =\n+    .title = Merah\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+pdfjs-editor-highlight-show-all-button-label = Tampilkan semua\n+pdfjs-editor-highlight-show-all-button =\n+    .title = Tampilkan semua\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Edit teks alternatif (deskripsi gambar)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Tambahkan teks alternatif (deskripsi gambar)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Tulis deskripsi Anda di sini…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Deskripsi singkat untuk orang yang tidak dapat melihat gambar atau saat gambar tidak termuat.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Teks alternatif ini dibuat secara otomatis dan mungkin tidak akurat.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Pelajari lebih lanjut\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Buat teks alternatif secara otomatis\n+pdfjs-editor-new-alt-text-not-now-button = Jangan sekarang\n+pdfjs-editor-new-alt-text-error-title = Tidak bisa membuat teks alternatif secara otomatis\n+pdfjs-editor-new-alt-text-error-description = Silakan tulis teks alternatif Anda sendiri atau coba lagi nanti.\n+pdfjs-editor-new-alt-text-error-close-button = Tutup\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Mengunduh model AI teks alternatif ({ $downloadedSize } dari { $totalSize } MB)\n+    .aria-valuetext = Mengunduh model AI teks alternatif ({ $downloadedSize } dari { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Teks alternatif ditambahkan\n+pdfjs-editor-new-alt-text-added-button-label = Teks alternatif ditambahkan\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Teks alternatif hilang\n+pdfjs-editor-new-alt-text-missing-button-label = Teks alternatif hilang\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Tinjau teks alternatif\n+pdfjs-editor-new-alt-text-to-review-button-label = Tinjau teks alternatif\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Dibuat secara otomatis: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Pengaturan teks alternatif gambar\n+pdfjs-image-alt-text-settings-button-label = Pengaturan teks alternatif gambar\n+pdfjs-editor-alt-text-settings-dialog-label = Pengaturan teks alternatif gambar\n+pdfjs-editor-alt-text-settings-automatic-title = Teks alternatif otomatis\n+pdfjs-editor-alt-text-settings-create-model-button-label = Buat teks alternatif secara otomatis\n+pdfjs-editor-alt-text-settings-create-model-description = Menyarankan deskripsi untuk membantu orang yang tidak dapat melihat gambar atau ketika gambar tidak termuat.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Model AI teks alternatif ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Berjalan secara lokal di perangkat Anda sehingga data Anda tetap pribadi. Diperlukan untuk teks alternatif otomatis.\n+pdfjs-editor-alt-text-settings-delete-model-button = Hapus\n+pdfjs-editor-alt-text-settings-download-model-button = Unduh\n+pdfjs-editor-alt-text-settings-downloading-model-button = Mengunduh…\n+pdfjs-editor-alt-text-settings-editor-title = Editor teks alternatif\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Tampilkan editor teks alternatif segera saat menambahkan gambar\n+pdfjs-editor-alt-text-settings-show-dialog-description = Membantu Anda memastikan semua gambar Anda memiliki teks alternatif.\n+pdfjs-editor-alt-text-settings-close-button = Tutup\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Sorotan dihapus\n+pdfjs-editor-undo-bar-message-freetext = Teks dihapus\n+pdfjs-editor-undo-bar-message-ink = Gambar dihapus\n+pdfjs-editor-undo-bar-message-stamp = Gambar dihapus\n+pdfjs-editor-undo-bar-message-signature = Tanda tangan dihapus\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple = { $count } anotasi dihapus\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Urungkan\n+pdfjs-editor-undo-bar-undo-button-label = Urungkan\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Tutup\n+pdfjs-editor-undo-bar-close-button-label = Tutup\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Modal ini memungkinkan pengguna untuk membuat tanda tangan yang dapat ditambahkan ke dokumen PDF. Pengguna dapat mengedit nama (yang juga berfungsi sebagai teks alternatif), dan jika diinginkan, menyimpan tanda tangan untuk digunakan kembali.\n+pdfjs-editor-add-signature-dialog-title = Tambahkan tanda tangan\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Tipe\n+    .title = Tipe\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Gambarkan\n+    .title = Gambarkan\n+pdfjs-editor-add-signature-image-button = Gambar\n+    .title = Gambar\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Ketik tanda tangan Anda\n+    .placeholder = Ketik tanda tangan Anda\n+pdfjs-editor-add-signature-draw-placeholder = Buat tanda tangan Anda\n+pdfjs-editor-add-signature-draw-thickness-range-label = Ketebalan\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Ketebalan gambar: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Seret berkas ke sini untuk mengunggah\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Atau pilih berkas gambar\n+       *[other] Atau cari berkas gambar\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Deskripsi (teks alternatif)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Deskripsi (teks alternatif)\n+pdfjs-editor-add-signature-description-default-when-drawing = Tanda tangan\n+pdfjs-editor-add-signature-clear-button-label = Hapus tanda tangan\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Hapus tanda tangan\n+pdfjs-editor-add-signature-save-checkbox = Simpan tanda tangan\n+pdfjs-editor-add-signature-save-warning-message = Anda telah mencapai batas 5 tanda tangan tersimpan. Hapus untuk menyimpan lebih banyak.\n+pdfjs-editor-add-signature-image-upload-error-title = Tidak dapat mengunggah gambar\n+pdfjs-editor-add-signature-image-upload-error-description = Periksa sambungan jaringan Anda atau coba gambar lain.\n+pdfjs-editor-add-signature-error-close-button = Tutup\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Batal\n+pdfjs-editor-add-signature-add-button = Tambah\n+pdfjs-editor-edit-signature-update-button = Perbarui\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Hapus tanda tangan tersimpan\n+pdfjs-editor-delete-signature-button-label1 = Hapus tanda tangan tersimpan\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Edit deskripsi\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Edit deskripsi\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fis\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fis\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fis\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fis\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Núverandi síða (Skoða vefslóð frá núverandi síðu)\n pdfjs-bookmark-button-label = Núverandi síða\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Opna í smáforriti\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Opna í smáforriti\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = Skráarnafn:\n pdfjs-document-properties-file-size = Skrárstærð:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bæti)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bæti)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Búið til:\n pdfjs-document-properties-modification-date = Dags breytingar:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -174,10 +179,10 @@\n ## Tooltips and alt text for side panel toolbar buttons\n \n pdfjs-toggle-sidebar-button =\n-    .title = Víxla hliðarspjaldi af\u002Fá\n+    .title = Víxla hliðarstiku af\u002Fá\n pdfjs-toggle-sidebar-notification-button =\n-    .title = Víxla hliðarslá (skjal inniheldur yfirlit\u002Fviðhengi\u002Flög)\n-pdfjs-toggle-sidebar-button-label = Víxla hliðarspjaldi af\u002Fá\n+    .title = Víxla hliðarstiku af\u002Fá (skjal inniheldur yfirlit\u002Fviðhengi\u002Flög)\n+pdfjs-toggle-sidebar-button-label = Víxla hliðarstiku af\u002Fá\n pdfjs-document-outline-button =\n     .title = Sýna yfirlit skjals (tvísmelltu til að opna\u002Floka öllum hlutum)\n pdfjs-document-outline-button-label = Efnisskipan skjals\n@@ -281,10 +286,13 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type } Skýring]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n-pdfjs-password-label = Sláðu inn lykilorð til að opna þessa PDF skrá.\n+pdfjs-password-label = Settu inn lykilorð til að opna þessa PDF-skrá.\n pdfjs-password-invalid = Ógilt lykilorð. Reyndu aftur.\n pdfjs-password-ok-button = Í lagi\n pdfjs-password-cancel-button = Hætta við\n@@ -304,12 +312,16 @@\n pdfjs-editor-highlight-button =\n     .title = Áherslulita\n pdfjs-editor-highlight-button-label = Áherslulita\n-pdfjs-highlight-floating-button =\n-    .title = Áherslulita\n pdfjs-highlight-floating-button1 =\n     .title = Áherslulita\n     .aria-label = Áherslulita\n pdfjs-highlight-floating-button-label = Áherslulita\n+pdfjs-editor-signature-button =\n+    .title = Bæta við undirritun\n+pdfjs-editor-signature-button-label = Bæta við undirritun\n+\n+## Default editor aria labels\n+\n \n ## Remove button for the various kind of editor.\n \n@@ -321,6 +333,8 @@\n     .title = Fjarlægja mynd\n pdfjs-editor-remove-highlight-button =\n     .title = Fjarlægja áherslulit\n+pdfjs-editor-remove-signature-button =\n+    .title = Fjarlægja undirskrift\n \n ##\n \n@@ -337,6 +351,18 @@\n pdfjs-editor-free-highlight-thickness-input = Þykkt\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Breyta þykkt við áherslulitun annarra atriða en texta\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Bæta við nýrri undirritun\n+pdfjs-editor-signature-add-signature-button-label = Bæta við nýrri undirritun\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Vistuð undirskrift: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Textaritill\n+    .default-content = Byrjaðu að skrifa…\n pdfjs-free-text =\n     .aria-label = Textaritill\n pdfjs-free-text-default-content = Byrjaðu að skrifa…\n@@ -347,8 +373,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Alt-varatexti\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Breyta alt-myndatexta\n pdfjs-editor-alt-text-edit-button-label = Breyta alt-varatexta\n pdfjs-editor-alt-text-dialog-label = Veldu valkost\n pdfjs-editor-alt-text-dialog-description = Alt-varatexti (auka-myndatexti) hjálpar þegar fólk getur ekki séð myndina eða þegar hún hleðst ekki inn.\n@@ -362,6 +389,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Til dæmis: „Ungur maður sest við borð til að snæða máltíð“\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Alt-myndatexti\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -374,6 +404,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Neðst á miðju - breyta stærð\n pdfjs-editor-resizer-label-bottom-left = Neðst í vinstra horni - breyta stærð\n pdfjs-editor-resizer-label-middle-left = Miðja til vinstri - breyta stærð\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Efst í vinstra horni - breyta stærð\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Efst á miðju - breyta stærð\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Efst í hægra horni - breyta stærð\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Miðja til hægri - breyta stærð\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Neðst í hægra horni - breyta stærð\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Neðst á miðju - breyta stærð\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Neðst í vinstra horni - breyta stærð\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Miðja til vinstri - breyta stærð\n \n ## Color picker\n \n@@ -400,3 +446,155 @@\n pdfjs-editor-highlight-show-all-button-label = Birta allt\n pdfjs-editor-highlight-show-all-button =\n     .title = Birta allt\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Breyta alt-myndatexta (lýsingu á mynd)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Bæta við alt-myndatexta (lýsingu á mynd)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Skrifaðu lýsinguna þína hér…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Stutt lýsing fyrir fólk sem getur ekki séð myndina eða þegar myndin hleðst ekki inn.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Þessi alt-myndatexti var búinn til sjálfvirkt og gæti verið ónákvæmur.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Kanna nánar\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Útbúa alt-myndatexta sjálfvirkt\n+pdfjs-editor-new-alt-text-not-now-button = Ekki núna\n+pdfjs-editor-new-alt-text-error-title = Gat ekki búið til alt-myndatexta sjálfkrafa\n+pdfjs-editor-new-alt-text-error-description = Skrifaðu þinn eiginn alt-myndatexta eða reyndu aftur síðar.\n+pdfjs-editor-new-alt-text-error-close-button = Loka\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Sækir gervigreindarlíkan með alt-myndatextum ({ $downloadedSize } af { $totalSize } MB)\n+    .aria-valuetext = Sækir gervigreindarlíkan með alt-myndatextum ({ $downloadedSize } af { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Alt-myndatexta bætt við\n+pdfjs-editor-new-alt-text-added-button-label = Alt-myndatexta bætt við\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Vantar alt-myndatexta\n+pdfjs-editor-new-alt-text-missing-button-label = Vantar alt-myndatexta\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Yfirfara alt-myndatexta\n+pdfjs-editor-new-alt-text-to-review-button-label = Yfirfara myndatexta\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Útbúið sjálfvirkt: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Stillingar fyrir alt-texta myndar\n+pdfjs-image-alt-text-settings-button-label = Stillingar fyrir alt-texta myndar\n+pdfjs-editor-alt-text-settings-dialog-label = Stillingar fyrir alt-texta myndar\n+pdfjs-editor-alt-text-settings-automatic-title = Sjálfvirkur alt-myndatexti\n+pdfjs-editor-alt-text-settings-create-model-button-label = Útbúa alt-myndatexta sjálfvirkt\n+pdfjs-editor-alt-text-settings-create-model-description = Stingur upp á lýsingum til að hjálpa fólki sem getur ekki séð myndina eða þegar myndin hleðst ekki inn.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Gervigreindarlíkan alt-myndatexta ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Keyrir staðbundið á tækinu þínu svo gögnin þín haldast undir þinni stjórn. Nauðsynlegt fyrir sjálfvirka alt-myndatexta.\n+pdfjs-editor-alt-text-settings-delete-model-button = Eyða\n+pdfjs-editor-alt-text-settings-download-model-button = Sækja\n+pdfjs-editor-alt-text-settings-downloading-model-button = Sæki…\n+pdfjs-editor-alt-text-settings-editor-title = Ritill fyrir alt-myndatexta\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Sýna alt-myndatextaritil strax þegar mynd er bætt við\n+pdfjs-editor-alt-text-settings-show-dialog-description = Hjálpar þér að tryggja að allar myndirnar þínar séu með alt-myndatexta.\n+pdfjs-editor-alt-text-settings-close-button = Loka\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Áherslulitun fjarlægð\n+pdfjs-editor-undo-bar-message-freetext = Texti fjarlægður\n+pdfjs-editor-undo-bar-message-ink = Teikning fjarlægð\n+pdfjs-editor-undo-bar-message-stamp = Mynd fjarlægð\n+pdfjs-editor-undo-bar-message-signature = Undirskrift fjarlægð\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } glósa fjarlægð\n+       *[other] { $count } glósur fjarlægðar\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Afturkalla\n+pdfjs-editor-undo-bar-undo-button-label = Afturkalla\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Loka\n+pdfjs-editor-undo-bar-close-button-label = Loka\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Þessi gluggi gerir notandanum kleift að búa til undirskrift til að bæta við PDF-skjal. Notandinn getur breytt nafninu (sem einnig þjónar sem alt-texti), og valið að vista undirskriftina til endurtekinnar notkunar.\n+pdfjs-editor-add-signature-dialog-title = Bæta við undirskrift\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Tegund\n+    .title = Tegund\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Teikna\n+    .title = Teikna\n+pdfjs-editor-add-signature-image-button = Mynd\n+    .title = Mynd\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Skrifaðu inn undirskriftina þína\n+    .placeholder = Skrifaðu inn undirskriftina þína\n+pdfjs-editor-add-signature-draw-placeholder = Teiknaðu undirskriftina þína\n+pdfjs-editor-add-signature-draw-thickness-range-label = Þykkt\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Sverleiki teikningar: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Dragðu skrá hingað til að senda inn\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Eða skoðaðu myndskrár\n+       *[other] Eða skoðaðu myndskrár\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Lýsing (alt-hjálpartexti)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Lýsing (alt-hjálpartexti)\n+pdfjs-editor-add-signature-description-default-when-drawing = Undirskrift\n+pdfjs-editor-add-signature-clear-button-label = Hreinsa undirskrift\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Hreinsa undirskrift\n+pdfjs-editor-add-signature-save-checkbox = Vista undirskrift\n+pdfjs-editor-add-signature-save-warning-message = Þú hefur náð hámarki 5 vistaðra undirskrifta. Fjarlægðu eina til að geta vistað fleiri.\n+pdfjs-editor-add-signature-image-upload-error-title = Ekki tókst að senda inn mynd\n+pdfjs-editor-add-signature-image-upload-error-description = Athugaðu nettenginguna þína eða prófaðu aðra mynd.\n+pdfjs-editor-add-signature-error-close-button = Loka\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Hætta við\n+pdfjs-editor-add-signature-add-button = Bæta við\n+pdfjs-editor-edit-signature-update-button = Uppfæra\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Fjarlægja vistaða undirskrift\n+pdfjs-editor-delete-signature-button-label1 = Fjarlægja vistaða undirskrift\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Breyta lýsingu\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Breyta lýsingu\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fit\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fit\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fit\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fit\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -105,6 +105,14 @@\n pdfjs-document-properties-file-name = Nome file:\n pdfjs-document-properties-file-size = Dimensione file:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } byte)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } byte)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } kB ({ $size_b } byte)\n@@ -119,6 +127,9 @@\n pdfjs-document-properties-creation-date = Data creazione:\n pdfjs-document-properties-modification-date = Data modifica:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -220,7 +231,6 @@\n pdfjs-find-entire-word-checkbox-label = Parole intere\n pdfjs-find-reached-top = Raggiunto l’inizio della pagina, continua dalla fine\n pdfjs-find-reached-bottom = Raggiunta la fine della pagina, continua dall’inizio\n-\n # Variables:\n #   $current (Number) - the index of the currently active find result\n #   $total (Number) - the total number of matches in the document\n@@ -229,7 +239,6 @@\n         [one] { $current } di { $total } corrispondenza\n        *[other] { $current } di { $total } corrispondenze\n     }\n-\n # Variables:\n #   $limit (Number) - the maximum number of matches\n pdfjs-find-match-count-limit =\n@@ -237,7 +246,6 @@\n         [one] Più di una { $limit } corrispondenza\n        *[other] Più di { $limit } corrispondenze\n     }\n-\n pdfjs-find-not-found = Testo non trovato\n \n ## Predefined zoom values\n@@ -278,11 +286,14 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [Annotazione: { $type }]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n pdfjs-password-label = Inserire la password per aprire questo file PDF.\n-pdfjs-password-invalid = Password non corretta. Riprovare.\n+pdfjs-password-invalid = Password non corretta. Riprova.\n pdfjs-password-ok-button = OK\n pdfjs-password-cancel-button = Annulla\n pdfjs-web-fonts-disabled = I web font risultano disattivati: impossibile utilizzare i caratteri incorporati nel PDF.\n@@ -305,6 +316,25 @@\n     .title = Evidenzia\n     .aria-label = Evidenzia\n pdfjs-highlight-floating-button-label = Evidenzia\n+pdfjs-editor-signature-button =\n+    .title = Aggiungi firma\n+pdfjs-editor-signature-button-label = Aggiungi firma\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Modifica evidenziazioni\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Modifica disegni\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Editor firme: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Modifica immagini\n \n ## Remove button for the various kind of editor.\n \n@@ -316,6 +346,8 @@\n     .title = Rimuovi immagine\n pdfjs-editor-remove-highlight-button =\n     .title = Rimuovi evidenziazione\n+pdfjs-editor-remove-signature-button =\n+    .title = Rimuovi firma\n \n ##\n \n@@ -332,7 +364,20 @@\n pdfjs-editor-free-highlight-thickness-input = Spessore\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Modifica lo spessore della selezione per elementi non testuali\n-\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Controlli firma e firme salvate\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Aggiungi nuova firma\n+pdfjs-editor-signature-add-signature-button-label = Aggiungi nuova firma\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Firma salvata: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Editor di testo\n+    .default-content = Inizia a digitare…\n pdfjs-free-text =\n     .aria-label = Editor di testo\n pdfjs-free-text-default-content = Inizia a digitare…\n@@ -343,8 +388,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Testo alternativo\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Modifica testo alternativo\n pdfjs-editor-alt-text-edit-button-label = Modifica testo alternativo\n pdfjs-editor-alt-text-dialog-label = Scegli un’opzione\n pdfjs-editor-alt-text-dialog-description = Il testo alternativo (“alt text”) aiuta quando le persone non possono vedere l’immagine o quando l’immagine non viene caricata.\n@@ -358,6 +404,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Ad esempio, “Un giovane si siede a tavola per mangiare”\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Testo alternativo\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -370,12 +419,27 @@\n pdfjs-editor-resizer-label-bottom-middle = Lato inferiore nel mezzo — ridimensiona\n pdfjs-editor-resizer-label-bottom-left = Angolo in basso a sinistra — ridimensiona\n pdfjs-editor-resizer-label-middle-left = Lato sinistro nel mezzo — ridimensiona\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Angolo in alto a sinistra — ridimensiona\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Lato superiore nel mezzo — ridimensiona\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Angolo in alto a destra — ridimensiona\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Lato destro nel mezzo — ridimensiona\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Angolo in basso a destra — ridimensiona\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Lato inferiore nel mezzo — ridimensiona\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Angolo in basso a sinistra — ridimensiona\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Lato sinistro nel mezzo — ridimensiona\n \n ## Color picker\n \n # This means \"Color used to highlight text\"\n pdfjs-editor-highlight-colorpicker-label = Colore evidenziatore\n-\n pdfjs-editor-colorpicker-button =\n     .title = Cambia colore\n pdfjs-editor-colorpicker-dropdown =\n@@ -397,3 +461,155 @@\n pdfjs-editor-highlight-show-all-button-label = Mostra tutto\n pdfjs-editor-highlight-show-all-button =\n     .title = Mostra tutto\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Modifica testo alternativo (descrizione dell’immagine)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Aggiungi testo alternativo (descrizione dell’immagine)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Scrivi qui la tua descrizione…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Breve descrizione per le persone che non possono vedere l’immagine, o mostrata quando l’immagine non si carica.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Questo testo alternativo è stato creato automaticamente e potrebbe non essere accurato.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Ulteriori informazioni\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Crea automaticamente testo alternativo\n+pdfjs-editor-new-alt-text-not-now-button = Non adesso\n+pdfjs-editor-new-alt-text-error-title = Impossibile creare automaticamente il testo alternativo\n+pdfjs-editor-new-alt-text-error-description = Scrivi il testo alternativo o riprova più tardi.\n+pdfjs-editor-new-alt-text-error-close-button = Chiudi\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Download in corso del modello IA per il testo alternativo ({ $downloadedSize } di { $totalSize } MB)\n+    .aria-valuetext = Download in corso del modello IA per il testo alternativo ({ $downloadedSize } di { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Aggiunto testo alternativo\n+pdfjs-editor-new-alt-text-added-button-label = Aggiunto testo alternativo\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Testo alternativo mancante\n+pdfjs-editor-new-alt-text-missing-button-label = Testo alternativo mancante\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Verifica testo alternativo\n+pdfjs-editor-new-alt-text-to-review-button-label = Verifica testo alternativo\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Creato automaticamente: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Impostazioni testo alternativo per le immagini\n+pdfjs-image-alt-text-settings-button-label = Impostazioni testo alternativo per le immagini\n+pdfjs-editor-alt-text-settings-dialog-label = Impostazioni testo alternativo per le immagini\n+pdfjs-editor-alt-text-settings-automatic-title = Testo alternativo automatico\n+pdfjs-editor-alt-text-settings-create-model-button-label = Crea testo alternativo automaticamente\n+pdfjs-editor-alt-text-settings-create-model-description = Suggerisce una descrizione per le persone che non possono vedere l’immagine, o mostrata quando l’immagine non si carica.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Modello IA per il testo alternativo ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Viene eseguito localmente sul tuo dispositivo in modo che i tuoi dati rimangano riservati. È richiesto per la generazione automatica del testo alternativo.\n+pdfjs-editor-alt-text-settings-delete-model-button = Elimina\n+pdfjs-editor-alt-text-settings-download-model-button = Scarica\n+pdfjs-editor-alt-text-settings-downloading-model-button = Download…\n+pdfjs-editor-alt-text-settings-editor-title = Modifica testo alternativo\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Mostra l’editor del testo alternativo non appena si aggiunge un’immagine\n+pdfjs-editor-alt-text-settings-show-dialog-description = Ti aiuta ad assicurarti che tutte le tue immagini abbiano il testo alternativo.\n+pdfjs-editor-alt-text-settings-close-button = Chiudi\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Evidenziazione rimossa\n+pdfjs-editor-undo-bar-message-freetext = Testo rimosso\n+pdfjs-editor-undo-bar-message-ink = Disegno rimosso\n+pdfjs-editor-undo-bar-message-stamp = Immagine rimossa\n+pdfjs-editor-undo-bar-message-signature = Firma rimossa\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } annotazione rimossa\n+       *[other] { $count } annotazioni rimosse\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Annulla\n+pdfjs-editor-undo-bar-undo-button-label = Annulla\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Chiudi\n+pdfjs-editor-undo-bar-close-button-label = Chiudi\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Questa finestra consente all’utente di creare una firma da aggiungere a un documento PDF. L’utente può modificare il nome (che verrà utilizzato anche come testo alternativo) e, se lo desidera, salvare la firma per riutilizzarla in futuro.\n+pdfjs-editor-add-signature-dialog-title = Aggiungi una firma\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Scrivi\n+    .title = Scrivi\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Disegna\n+    .title = Disegna\n+pdfjs-editor-add-signature-image-button = Immagine\n+    .title = Immagine\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Digita la tua firma\n+    .placeholder = Digita la tua firma\n+pdfjs-editor-add-signature-draw-placeholder = Disegna la tua firma\n+pdfjs-editor-add-signature-draw-thickness-range-label = Spessore\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Spessore del tratto: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Trascina un file qui per caricarlo\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Oppure scegli un file immagine\n+       *[other] Oppure sfoglia i file immagine\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Descrizione (testo alternativo)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Descrizione (testo alternativo)\n+pdfjs-editor-add-signature-description-default-when-drawing = Firma\n+pdfjs-editor-add-signature-clear-button-label = Cancella firma\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Cancella firma\n+pdfjs-editor-add-signature-save-checkbox = Salva firma\n+pdfjs-editor-add-signature-save-warning-message = Hai raggiunto il limite di 5 firme salvate. Rimuovine una per salvarne altre.\n+pdfjs-editor-add-signature-image-upload-error-title = Impossibile caricare l’immagine\n+pdfjs-editor-add-signature-image-upload-error-description = Controlla la connessione di rete o prova con un’altra immagine.\n+pdfjs-editor-add-signature-error-close-button = Chiudi\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Annulla\n+pdfjs-editor-add-signature-add-button = Aggiungi\n+pdfjs-editor-edit-signature-update-button = Aggiorna\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Rimuovi firma salvata\n+pdfjs-editor-delete-signature-button-label1 = Rimuovi firma salvata\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Modifica descrizione\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Modifica descrizione\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fja\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fja\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fja\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fja\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -105,6 +105,14 @@\n pdfjs-document-properties-file-name = ファイル名:\n pdfjs-document-properties-file-size = ファイルサイズ:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } バイト)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } バイト)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } バイト)\n@@ -119,6 +127,9 @@\n pdfjs-document-properties-creation-date = 作成日:\n pdfjs-document-properties-modification-date = 更新日:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -223,18 +234,10 @@\n # Variables:\n #   $current (Number) - the index of the currently active find result\n #   $total (Number) - the total number of matches in the document\n-pdfjs-find-match-count =\n-    { $total ->\n-        [one] { $total } 件中 { $current } 件目\n-       *[other] { $total } 件中 { $current } 件目\n-    }\n+pdfjs-find-match-count = { $total } 件中 { $current } 件目\n # Variables:\n #   $limit (Number) - the maximum number of matches\n-pdfjs-find-match-count-limit =\n-    { $limit ->\n-        [one] { $limit } 件以上一致\n-       *[other] { $limit } 件以上一致\n-    }\n+pdfjs-find-match-count-limit = { $limit } 件以上一致\n pdfjs-find-not-found = 見つかりませんでした\n \n ## Predefined zoom values\n@@ -275,11 +278,14 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type } 注釈]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n pdfjs-password-label = この PDF ファイルを開くためのパスワードを入力してください。\n-pdfjs-password-invalid = 無効なパスワードです。もう一度やり直してください。\n+pdfjs-password-invalid = パスワードが正しくありません。もう一度試してください。\n pdfjs-password-ok-button = OK\n pdfjs-password-cancel-button = キャンセル\n pdfjs-web-fonts-disabled = ウェブフォントが無効になっています: 埋め込まれた PDF のフォントを使用できません。\n@@ -298,12 +304,29 @@\n pdfjs-editor-highlight-button =\n     .title = 強調します\n pdfjs-editor-highlight-button-label = 強調\n-pdfjs-highlight-floating-button =\n-    .title = 強調\n pdfjs-highlight-floating-button1 =\n     .title = 強調\n     .aria-label = 強調します\n pdfjs-highlight-floating-button-label = 強調\n+pdfjs-editor-signature-button =\n+    .title = 署名を追加します\n+pdfjs-editor-signature-button-label = 署名を追加\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = 強調エディター\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = 描画エディター\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = 署名エディター: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = 画像エディター\n \n ## Remove button for the various kind of editor.\n \n@@ -315,6 +338,8 @@\n     .title = 画像を削除します\n pdfjs-editor-remove-highlight-button =\n     .title = 強調を削除します\n+pdfjs-editor-remove-signature-button =\n+    .title = 署名を削除します\n \n ##\n \n@@ -331,6 +356,20 @@\n pdfjs-editor-free-highlight-thickness-input = 太さ\n pdfjs-editor-free-highlight-thickness-title =\n     .title = テキスト以外のアイテムを強調する時の太さを変更します\n+pdfjs-editor-add-signature-container =\n+    .aria-label = 署名コントロールと保存された署名\n+pdfjs-editor-signature-add-signature-button =\n+    .title = 新しい署名を追加します\n+pdfjs-editor-signature-add-signature-button-label = 新しい署名を追加\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = 保存された署名: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = フリーテキスト注釈エディター\n+    .default-content = テキストを入力してください...\n pdfjs-free-text =\n     .aria-label = フリーテキスト注釈エディター\n pdfjs-free-text-default-content = テキストを入力してください...\n@@ -341,8 +380,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = 代替テキスト\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = 代替テキストを編集\n pdfjs-editor-alt-text-edit-button-label = 代替テキストを編集\n pdfjs-editor-alt-text-dialog-label = オプションの選択\n pdfjs-editor-alt-text-dialog-description = 代替テキストは画像が表示されない場合や読み込まれない場合にユーザーの助けになります。\n@@ -356,6 +396,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = 例:「若い人がテーブルの席について食事をしています」\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = 代替テキスト\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -368,6 +411,22 @@\n pdfjs-editor-resizer-label-bottom-middle = 下中央 — サイズ変更\n pdfjs-editor-resizer-label-bottom-left = 左下隅 — サイズ変更\n pdfjs-editor-resizer-label-middle-left = 左中央 — サイズ変更\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = 左上隅 — サイズ変更\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = 上中央 — サイズ変更\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = 右上隅 — サイズ変更\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = 右中央 — サイズ変更\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = 右下隅 — サイズ変更\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = 下中央 — サイズ変更\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = 左下隅 — サイズ変更\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = 左中央 — サイズ変更\n \n ## Color picker\n \n@@ -392,5 +451,153 @@\n ## This is a toggle button to show\u002Fhide all the highlights.\n \n pdfjs-editor-highlight-show-all-button-label = すべて表示\n+# (^m^) en-US: .title = Show all\n pdfjs-editor-highlight-show-all-button =\n     .title = 強調の表示を切り替えます\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = 代替テキストを編集 (画像の説明)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = 代替テキストを追加 (画像の説明)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = ここに説明を記入してください...\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = 画像が読み込まれない場合や見えない人のための短い説明です。\n+pdfjs-editor-new-alt-text-disclaimer1 = この代替テキストは自動的に生成されたため正確でない可能性があります。\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = 詳細情報\n+pdfjs-editor-new-alt-text-create-automatically-button-label = 代替テキストを自動生成\n+pdfjs-editor-new-alt-text-not-now-button = 後で\n+pdfjs-editor-new-alt-text-error-title = 代替テキストを自動生成できませんでした\n+pdfjs-editor-new-alt-text-error-description = ご自分で代替テキストを書くか後でもう一度試してください。\n+pdfjs-editor-new-alt-text-error-close-button = 閉じる\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = 代替テキスト AI モデルをダウンロードしています ({ $downloadedSize } \u002F { $totalSize } MB)\n+    .aria-valuetext = 代替テキスト AI モデルをダウンロードしています ({ $downloadedSize } \u002F { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = 代替テキストを追加しました\n+pdfjs-editor-new-alt-text-added-button-label = 代替テキストを追加しました\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = 代替テキストがありません\n+pdfjs-editor-new-alt-text-missing-button-label = 代替テキストがありません\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = 代替テキストをレビュー\n+pdfjs-editor-new-alt-text-to-review-button-label = 代替テキストをレビュー\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = 自動生成されました: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = 画像の代替テキスト設定\n+pdfjs-image-alt-text-settings-button-label = 画像の代替テキスト設定\n+pdfjs-editor-alt-text-settings-dialog-label = 画像の代替テキスト設定\n+pdfjs-editor-alt-text-settings-automatic-title = 自動代替テキスト\n+pdfjs-editor-alt-text-settings-create-model-button-label = 代替テキストを自動生成\n+pdfjs-editor-alt-text-settings-create-model-description = 画像が読み込まれない場合や見えない人のために説明を提案します。\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = 代替テキスト AI モデル ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = ローカルの端末上で実行されるためデータは非公開になります。代替テキストの自動生成に必要です。\n+pdfjs-editor-alt-text-settings-delete-model-button = 削除\n+pdfjs-editor-alt-text-settings-download-model-button = ダウンロード\n+pdfjs-editor-alt-text-settings-downloading-model-button = ダウンロード中...\n+pdfjs-editor-alt-text-settings-editor-title = 代替テキストエディター\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = 画像の追加時に代替テキストエディターを表示する\n+pdfjs-editor-alt-text-settings-show-dialog-description = すべての画像に代替テキストを追加する助けになります。\n+pdfjs-editor-alt-text-settings-close-button = 閉じる\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = 強調表示が削除されました\n+pdfjs-editor-undo-bar-message-freetext = フリーテキスト注釈が削除されました\n+pdfjs-editor-undo-bar-message-ink = インク注釈が削除されました\n+pdfjs-editor-undo-bar-message-stamp = 画像が削除されました\n+pdfjs-editor-undo-bar-message-signature = 署名が削除されました\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple = { $count } 個の注釈が削除されました\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = 元に戻す\n+pdfjs-editor-undo-bar-undo-button-label = 元に戻す\n+pdfjs-editor-undo-bar-close-button =\n+    .title = 閉じる\n+pdfjs-editor-undo-bar-close-button-label = 閉じる\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = このダイアログではユーザーが署名を作成して PDF 文書に追加できます。\n+pdfjs-editor-add-signature-dialog-title = 署名を追加\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = タイプ\n+    .title = キーボード入力します\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = 手書き\n+    .title = 手書き入力します\n+pdfjs-editor-add-signature-image-button = 画像\n+    .title = 画像を指定します\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = 署名をキーボード入力\n+    .placeholder = 署名をキーボード入力\n+pdfjs-editor-add-signature-draw-placeholder = 署名を手書き入力\n+pdfjs-editor-add-signature-draw-thickness-range-label = 線の太さ\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = 線の太さ: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = ファイルをここにドラッグしてアップロード\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] または画像ファイルを選択\n+       *[other] または画像ファイルを参照\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = 説明 (代替テキスト)\n+pdfjs-editor-add-signature-description-input =\n+    .title = 説明 (代替テキスト) を追加します\n+pdfjs-editor-add-signature-description-default-when-drawing = 署名\n+pdfjs-editor-add-signature-clear-button-label = 署名を消去\n+pdfjs-editor-add-signature-clear-button =\n+    .title = 署名を消去します\n+pdfjs-editor-add-signature-save-checkbox = 署名を保存\n+pdfjs-editor-add-signature-save-warning-message = 保存された署名が上限の 5 個に達しました。さらに保存するにはいずれかを削除してください。\n+pdfjs-editor-add-signature-image-upload-error-title = 画像をアップロードできません\n+pdfjs-editor-add-signature-image-upload-error-description = ネットワーク接続を確認するか別の画像を試してください。\n+pdfjs-editor-add-signature-error-close-button = 閉じる\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = キャンセル\n+pdfjs-editor-add-signature-add-button = 追加\n+pdfjs-editor-edit-signature-update-button = 更新\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = 保存された署名を削除します\n+pdfjs-editor-delete-signature-button-label1 = 保存された署名を削除\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = 説明を編集\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = 説明の編集\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fka\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fka\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fka\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fka\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -31,8 +31,8 @@\n pdfjs-zoom-select =\n     .title = ზომა\n pdfjs-presentation-mode-button =\n-    .title = ჩვენების რეჟიმზე გადართვა\n-pdfjs-presentation-mode-button-label = ჩვენების რეჟიმი\n+    .title = წარდგენის რეჟიმზე გადართვა\n+pdfjs-presentation-mode-button-label = წარდგენის რეჟიმი\n pdfjs-open-file-button =\n     .title = ფაილის გახსნა\n pdfjs-open-file-button-label = გახსნა\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = მიმდინარე გვერდი (ბმული ამ გვერდისთვის)\n pdfjs-bookmark-button-label = მიმდინარე გვერდი\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = გახსნა პროგრამით\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = გახსნა პროგრამით\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = ფაილის სახელი:\n pdfjs-document-properties-file-size = ფაილის მოცულობა:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } კბაიტი ({ $b } ბაიტი)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } მბაიტი ({ $b } ბაიტი)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } კბ ({ $size_b } ბაიტი)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = შექმნის დრო:\n pdfjs-document-properties-modification-date = ჩასწორების დრო:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -176,7 +181,7 @@\n pdfjs-toggle-sidebar-button =\n     .title = გვერდითა ზოლის გამოჩენა\u002Fდამალვა\n pdfjs-toggle-sidebar-notification-button =\n-    .title = გვერდითი ზოლის გამოჩენა (შეიცავს სარჩევს\u002Fდანართს\u002Fფენებს)\n+    .title = გვერდითი ზოლის გამოჩენა (შეიცავს სარჩევს\u002Fდანართს\u002Fშრეებს)\n pdfjs-toggle-sidebar-button-label = გვერდითა ზოლის გამოჩენა\u002Fდამალვა\n pdfjs-document-outline-button =\n     .title = დოკუმენტის სარჩევის ჩვენება (ორმაგი წკაპით თითოეულის ჩამოშლა\u002Fაკეცვა)\n@@ -185,8 +190,8 @@\n     .title = დანართების ჩვენება\n pdfjs-attachments-button-label = დანართები\n pdfjs-layers-button =\n-    .title = ფენების გამოჩენა (ორმაგი წკაპით ყველა ფენის ნაგულისხმევზე დაბრუნება)\n-pdfjs-layers-button-label = ფენები\n+    .title = შრეების გამოჩენა (ორმაგი წკაპით ყველა შრის ნაგულისხმევზე დაბრუნება)\n+pdfjs-layers-button-label = შრეები\n pdfjs-thumbs-button =\n     .title = შეთვალიერება\n pdfjs-thumbs-button-label = ესკიზები\n@@ -196,7 +201,7 @@\n pdfjs-findbar-button =\n     .title = პოვნა დოკუმენტში\n pdfjs-findbar-button-label = ძიება\n-pdfjs-additional-layers = დამატებითი ფენები\n+pdfjs-additional-layers = დამატებითი შრეები\n \n ## Thumbnails panel item (tooltip and alt text for images)\n \n@@ -215,10 +220,10 @@\n     .title = ძიება\n     .placeholder = პოვნა დოკუმენტში…\n pdfjs-find-previous-button =\n-    .title = ფრაზის წინა კონტექსტის პოვნა\n+    .title = წინა დამთხვევის პოვნა\n pdfjs-find-previous-button-label = წინა\n pdfjs-find-next-button =\n-    .title = ფრაზის შემდეგი კონტექსტის პოვნა\n+    .title = მომდევნო დამთხვევის პოვნა\n pdfjs-find-next-button-label = შემდეგი\n pdfjs-find-highlight-checkbox = ყველაფრის მონიშვნა\n pdfjs-find-match-case-checkbox-label = მთავრულით\n@@ -281,6 +286,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type } შენიშვნა]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -294,18 +302,39 @@\n \n pdfjs-editor-free-text-button =\n     .title = წარწერა\n-pdfjs-editor-free-text-button-label = ტექსტი\n+pdfjs-editor-free-text-button-label = წარწერა\n pdfjs-editor-ink-button =\n     .title = ხაზვა\n pdfjs-editor-ink-button-label = ხაზვა\n pdfjs-editor-stamp-button =\n     .title = სურათების დართვა ან ჩასწორება\n pdfjs-editor-stamp-button-label = სურათების დართვა ან ჩასწორება\n-pdfjs-editor-remove-button =\n-    .title = მოცილება\n pdfjs-editor-highlight-button =\n     .title = მონიშვნა\n pdfjs-editor-highlight-button-label = მონიშვნა\n+pdfjs-highlight-floating-button1 =\n+    .title = მონიშვნა\n+    .aria-label = მონიშვნა\n+pdfjs-highlight-floating-button-label = მონიშვნა\n+pdfjs-editor-signature-button =\n+    .title = ხელმოწერის დამატება\n+pdfjs-editor-signature-button-label = ხელმოწერის დამატება\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = მონიშვნის ჩასწორება\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = ნახაზის ჩასწორება\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = ხელმოწერის ჩასწორება: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = სურათის ჩასწორება\n \n ## Remove button for the various kind of editor.\n \n@@ -317,6 +346,8 @@\n     .title = სურათის მოცილება\n pdfjs-editor-remove-highlight-button =\n     .title = მონიშვნის მოცილება\n+pdfjs-editor-remove-signature-button =\n+    .title = ხელმოწერის მოცილება\n \n ##\n \n@@ -329,6 +360,24 @@\n pdfjs-editor-stamp-add-image-button =\n     .title = სურათის დამატება\n pdfjs-editor-stamp-add-image-button-label = სურათის დამატება\n+# This refers to the thickness of the line used for free highlighting (not bound to text)\n+pdfjs-editor-free-highlight-thickness-input = სისქე\n+pdfjs-editor-free-highlight-thickness-title =\n+    .title = სისქის შეცვლა წარწერის გარდა სხვა ნაწილების მონიშვნისას\n+pdfjs-editor-add-signature-container =\n+    .aria-label = ხელმოწერის მართვა და შენახული ხელმოწერები\n+pdfjs-editor-signature-add-signature-button =\n+    .title = ახალი ხელმოწერის დამატება\n+pdfjs-editor-signature-add-signature-button-label = ახალი ხელმოწერის დამატება\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = შენახული ხელმოწერა: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = ნაწერის ჩასწორება\n+    .default-content = დაიწყეთ აკრეფა…\n pdfjs-free-text =\n     .aria-label = ნაწერის ჩასწორება\n pdfjs-free-text-default-content = აკრიფეთ…\n@@ -339,8 +388,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = თანდართული წარწერა\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = დართული წარწერის ჩასწორება\n pdfjs-editor-alt-text-edit-button-label = თანდართული წარწერის ჩასწორება\n pdfjs-editor-alt-text-dialog-label = არჩევა\n pdfjs-editor-alt-text-dialog-description = თანდართული (შემნაცვლებელი) წარწერა გამოსადეგია მათთვის, ვინც ვერ ხედავს სურათებს ან გამოისახება მაშინ, როცა სურათი ვერ ჩაიტვირთება.\n@@ -354,6 +404,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = მაგალითად, „ახალგაზრდა მამაკაცი მაგიდასთან ზის და სადილობს“\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = დართული წარწერა\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -366,6 +419,22 @@\n pdfjs-editor-resizer-label-bottom-middle = ქვევით შუაში — ზომაცვლა\n pdfjs-editor-resizer-label-bottom-left = ზვევით მარცხნივ — ზომაცვლა\n pdfjs-editor-resizer-label-middle-left = შუაში მარცხნივ — ზომაცვლა\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = ზევით მარცხნივ — ზომაცვლა\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = ზევით შუაში — ზომაცვლა\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = ზევით მარჯვნივ — ზომაცვლა\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = შუაში მარჯვნივ — ზომაცვლა\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = ქვევით მარჯვნივ — ზომაცვლა\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = ქვევით შუაში — ზომაცვლა\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = ზვევით მარცხნივ — ზომაცვლა\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = შუაში მარცხნივ — ზომაცვლა\n \n ## Color picker\n \n@@ -385,3 +454,162 @@\n     .title = ვარდისფერი\n pdfjs-editor-colorpicker-red =\n     .title = წითელი\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+pdfjs-editor-highlight-show-all-button-label = ყველას ჩვენება\n+pdfjs-editor-highlight-show-all-button =\n+    .title = ყველას ჩვენება\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = დართული წარწერის ჩასწორება (სურათის აღწერის)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = დართული წარწერის დამატება (სურათის აღწერის)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = დაწერეთ თქვენი აღწერა აქ…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = მოკლე აღწერა მათთვის, ვინც ვერ ხედავს სურათს ან ვისთანაც ვერ ჩაიტვირთება სურათი.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = ეს დართული წარწერა ავტომატურადაა შედგენილი და შესაძლოა, უმართებულო იყოს.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = ვრცლად\n+pdfjs-editor-new-alt-text-create-automatically-button-label = დართული წარწერის ავტომატური შედგენა\n+pdfjs-editor-new-alt-text-not-now-button = ახლა არა\n+pdfjs-editor-new-alt-text-error-title = დართული წარწერის შედგენა ვერ მოხერხდა\n+pdfjs-editor-new-alt-text-error-description = გთხოვთ დაწეროთ საკუთარი დანართი და კვლავ სცადოთ მოგვიანებით.\n+pdfjs-editor-new-alt-text-error-close-button = დახურვა\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = ჩამოიტვირთება დართული წარწერის შესადეგი AI-მოდელი ({ $downloadedSize } ზომით { $totalSize } მბაიტი)\n+    .aria-valuetext = ჩამოიტვირთება დართული წარწერის შესადეგი AI-მოდელი ({ $downloadedSize } ზომით { $totalSize } მბაიტი)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = დართული წარწერა დამატებულია\n+pdfjs-editor-new-alt-text-added-button-label = დართული წარწერა დამატებულია\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = აკლია დართული წარწერა\n+pdfjs-editor-new-alt-text-missing-button-label = აკლია დართული წარწერა\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = დართული წარწერის გადახედვა\n+pdfjs-editor-new-alt-text-to-review-button-label = დართული წარწერის გადახედვა\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = შედგენილია ავტომატურად: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = სურათის დართული წარწერის პარამეტრები\n+pdfjs-image-alt-text-settings-button-label = სურათის დართული წარწერის პარამეტრები\n+pdfjs-editor-alt-text-settings-dialog-label = სურათის დართული წარწერის პარამეტრები\n+pdfjs-editor-alt-text-settings-automatic-title = ავტომატურად დართული წარწერა\n+pdfjs-editor-alt-text-settings-create-model-button-label = დართული წარწერის ავტომატური შედგენა\n+pdfjs-editor-alt-text-settings-create-model-description = აღწერს სურათს მათთვის, ვინც ვერ ხედავს ან ვისთანაც ვერ ჩაიტვირთება.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = დართული წარწერის შესადგენი AI-მოდელი ({ $totalSize } მბაიტი)\n+pdfjs-editor-alt-text-settings-ai-model-description = ეშვება ადგილობრივად თქვენს მოწყობილობასა, ასე რომ მონაცემები დარჩება პირადი. საჭიროა წარწერის ავტომატურად დართვისთვის.\n+pdfjs-editor-alt-text-settings-delete-model-button = წაშლა\n+pdfjs-editor-alt-text-settings-download-model-button = ჩამოტვირთვა\n+pdfjs-editor-alt-text-settings-downloading-model-button = ჩამოიტვრითება...\n+pdfjs-editor-alt-text-settings-editor-title = დართული წარწერის ჩამსწორებელი\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = გამოჩნდეს დართული წარწერის ჩამსწორებელი სურათის დამატებისთანავე\n+pdfjs-editor-alt-text-settings-show-dialog-description = უზრუნველყოფს, რომ თქვენს ყველა სურათს ახლდეს დართული წარწერა.\n+pdfjs-editor-alt-text-settings-close-button = დახურვა\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = მონიშვნა მოცილებულია\n+pdfjs-editor-undo-bar-message-freetext = წარწერა მოცილებულია\n+pdfjs-editor-undo-bar-message-ink = ნახატი მოცილებულია\n+pdfjs-editor-undo-bar-message-stamp = სურათი მოცილებულია\n+pdfjs-editor-undo-bar-message-signature = ხელმოწერა მოცილებულია\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } შენიშვნა მოცილებულია\n+       *[other] { $count } შენიშვნა მოცილებულია\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = დაბრუნება\n+pdfjs-editor-undo-bar-undo-button-label = დაბრუნება\n+pdfjs-editor-undo-bar-close-button =\n+    .title = დახურვა\n+pdfjs-editor-undo-bar-close-button-label = დახურვა\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = ეს არე საშუალებას აძლევს მომხმარებელს, შექმნას საკუთარი ხელმოწერა PDF-დოკუმენტისთვის. მომხმარებელს შეეძლება ჩაასწოროს სახელი (რომელიც დართული ტექსტის მოვალეობასაც ასრულებს) და სურვილისამებრ შეინახოს ხელმოწერა განმეორებით გამოსაყენებლად.\n+pdfjs-editor-add-signature-dialog-title = ხელმოწერის დამატება\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = აკრეფა\n+    .title = აკრეფა\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = მოხაზვა\n+    .title = მოხაზვა\n+pdfjs-editor-add-signature-image-button = სურათი\n+    .title = სურათი\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = აკრიფეთ ხელმოწერა\n+    .placeholder = აკრიფეთ ხელმოწერა\n+pdfjs-editor-add-signature-draw-placeholder = მოხაზეთ ხელმოწერა\n+pdfjs-editor-add-signature-draw-thickness-range-label = სისქე\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = მოხაზულის სისქე: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = ჩავლებით გადმოიტანეთ ასატვირთად\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] ან ამოარჩიეთ სურათებიდან\n+       *[other] ან ამოარჩიეთ სურათებიდან\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = აღწერილობა (დართული ტექსტი)\n+pdfjs-editor-add-signature-description-input =\n+    .title = აღწერილობა (დართული ტექსტი)\n+pdfjs-editor-add-signature-description-default-when-drawing = ხელმოწერა\n+pdfjs-editor-add-signature-clear-button-label = ხელმოწერის წაშლა\n+pdfjs-editor-add-signature-clear-button =\n+    .title = ხელმოწერის წაშლა\n+pdfjs-editor-add-signature-save-checkbox = ხელმოწერის შენახვა\n+pdfjs-editor-add-signature-save-warning-message = მიღწეულია 5 ხელმოწერის შენახვის ზღვარი. მოაცილეთ რომელიმე ახლის შესანახად.\n+pdfjs-editor-add-signature-image-upload-error-title = ვერ აიტვირთა სურათი\n+pdfjs-editor-add-signature-image-upload-error-description = შეამოწმეთ ქსელთან კავშირი ან მოსინჯეთ სხვა სურათი.\n+pdfjs-editor-add-signature-error-close-button = დახურვა\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = გაუქმება\n+pdfjs-editor-add-signature-add-button = დამატება\n+pdfjs-editor-edit-signature-update-button = განახლება\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = შენახული ხელმოწერის მოცილება\n+pdfjs-editor-delete-signature-button-label1 = შენახული ხელმოწერის მოცილება\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = აღწერილობის ჩასწორება\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = აღწერილობის ჩასწორება\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fkab\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fkab\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fkab\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fkab\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Asebter amiran (Sken-d tansa URL seg usebter amiran)\n pdfjs-bookmark-button-label = Asebter amiran\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Ldi deg usnas\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Ldi deg usnas\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = Isem n ufaylu:\n pdfjs-document-properties-file-size = Teɣzi n ufaylu:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } yibiten)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } yibiten)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KAṬ ({ $size_b } ibiten)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Azemz n tmerna:\n pdfjs-document-properties-modification-date = Azemz n usnifel:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -281,6 +286,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [Tabzimt { $type }]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -301,8 +309,48 @@\n pdfjs-editor-stamp-button =\n     .title = Rnu neɣ ẓreg tugniwin\n pdfjs-editor-stamp-button-label = Rnu neɣ ẓreg tugniwin\n-pdfjs-editor-remove-button =\n-    .title = Kkes\n+pdfjs-editor-highlight-button =\n+    .title = Derrer\n+pdfjs-editor-highlight-button-label = Derrer\n+pdfjs-highlight-floating-button1 =\n+    .title = Derrer\n+    .aria-label = Derrer\n+pdfjs-highlight-floating-button-label = Derrer\n+pdfjs-editor-signature-button =\n+    .title = Rnu azmul\n+pdfjs-editor-signature-button-label = Rnu azmul\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Amaẓrag usebrureq\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Amaẓrag n usuneɣ\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = usuneɣ n uzmul: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Amaẓrag n tugna\n+\n+## Remove button for the various kind of editor.\n+\n+pdfjs-editor-remove-ink-button =\n+    .title = Kkes asuneɣ\n+pdfjs-editor-remove-freetext-button =\n+    .title = Kkes aḍris\n+pdfjs-editor-remove-stamp-button =\n+    .title = Kkes tugna\n+pdfjs-editor-remove-highlight-button =\n+    .title = Kkes aderrer\n+pdfjs-editor-remove-signature-button =\n+    .title = Kkes azmul\n+\n+##\n+\n # Editor Parameters\n pdfjs-editor-free-text-color-input = Initen\n pdfjs-editor-free-text-size-input = Teɣzi\n@@ -312,6 +360,24 @@\n pdfjs-editor-stamp-add-image-button =\n     .title = Rnu tawlaft\n pdfjs-editor-stamp-add-image-button-label = Rnu tawlaft\n+# This refers to the thickness of the line used for free highlighting (not bound to text)\n+pdfjs-editor-free-highlight-thickness-input = Tuzert\n+pdfjs-editor-free-highlight-thickness-title =\n+    .title = Beddel tuzert mi ara d-tesbeggneḍ iferdisen niḍen ur nelli d aḍris\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Isenqaden n uzmul d yizmulen yettwaskelsen\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Rnu azmul amaynut\n+pdfjs-editor-signature-add-signature-button-label = Rnu azmul amaynut\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Yettwasekles uzmul: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Amaẓrag n uḍris\n+    .default-content = Bdu tira…\n pdfjs-free-text =\n     .aria-label = Amaẓrag n uḍris\n pdfjs-free-text-default-content = Bdu tira...\n@@ -322,16 +388,208 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Aḍris amaskal\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Ẓreg aḍris amaskal\n pdfjs-editor-alt-text-edit-button-label = Ẓreg aḍris amaskal\n pdfjs-editor-alt-text-dialog-label = Fren taxtirt\n+pdfjs-editor-alt-text-dialog-description = Aḍris amaskal yettallel mi ara yili imdanen ur ttwalin ara tugna neɣ mi ara yili ur d-tuli ara.\n pdfjs-editor-alt-text-add-description-label = Rnu aglam\n+pdfjs-editor-alt-text-add-description-description = Yettuwelleh tira n tefyirt neɣ n snat ideg ara d-yettwaglem asentel, akatar neɣ tigawin.\n pdfjs-editor-alt-text-mark-decorative-label = Creḍ d adlag\n+pdfjs-editor-alt-text-mark-decorative-description = Taxtiṛt-a tettwaseqdacay i tugniwin n ucebbaḥ, am tamiwin neɣ i tecraḍ tifrawanin.\n pdfjs-editor-alt-text-cancel-button = Sefsex\n pdfjs-editor-alt-text-save-button = Sekles\n pdfjs-editor-alt-text-decorative-tooltip = Yettwacreḍ d adlag\n+# .placeholder: This is a placeholder for the alt text input area\n+pdfjs-editor-alt-text-textarea =\n+    .placeholder = D amedya, “Yiwen yilemẓi iqqim ɣer ṭṭabla,ad yečč imekli”\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Aḍris amaskal\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+pdfjs-editor-resizer-label-top-left = Tiɣmert n ufella n zelmeḍ — semsawi teɣzi\n+pdfjs-editor-resizer-label-top-middle = Talemmat n ufella — semsawi teɣzi\n+pdfjs-editor-resizer-label-top-right = Tiɣmert n ufella n yeffus — semsawi teɣzi\n+pdfjs-editor-resizer-label-middle-right = Talemmast tayeffust — semsawi teɣzi\n+pdfjs-editor-resizer-label-bottom-right = Tiɣmert n wadda n yeffus — semsawi teɣzi\n+pdfjs-editor-resizer-label-bottom-middle = Talemmat n wadda — semsawi teɣzi\n+pdfjs-editor-resizer-label-bottom-left = Tiɣmert n wadda n zelmeḍ — semsawi teɣzi\n+pdfjs-editor-resizer-label-middle-left = Talemmast tazelmdaḍt — semsawi teɣzi\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Tiɣmert n ufella n zelmeḍ — semsawi teɣzi\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Talemmat n ufella — semsawi teɣzi\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Tiɣmert n ufella n yeffus — semsawi teɣzi\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Talemmast tayeffust — semsawi teɣzi\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Tiɣmert n wadda n yeffus — semsawi teɣzi\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Talemmat n wadda — semsawi teɣzi\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Tiɣmert n wadda n zelmeḍ — semsawi teɣzi\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Talemmast tazelmdaḍt — semsawi teɣzi\n+\n+## Color picker\n+\n+# This means \"Color used to highlight text\"\n+pdfjs-editor-highlight-colorpicker-label = Ini n uderrer\n+pdfjs-editor-colorpicker-button =\n+    .title = Senfel ini\n+pdfjs-editor-colorpicker-dropdown =\n+    .aria-label = Afran n yiniten\n+pdfjs-editor-colorpicker-yellow =\n+    .title = Awraɣ\n+pdfjs-editor-colorpicker-green =\n+    .title = Azegzaw\n+pdfjs-editor-colorpicker-blue =\n+    .title = Amidadi\n+pdfjs-editor-colorpicker-pink =\n+    .title = Axuxi\n+pdfjs-editor-colorpicker-red =\n+    .title = Azggaɣ\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+pdfjs-editor-highlight-show-all-button-label = Sken akk\n+pdfjs-editor-highlight-show-all-button =\n+    .title = Sken akk\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Ẓreg aḍris niḍen (aglam n tugna)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Rnu aḍris niḍen (aglam n tugna)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Aru aglam-ik dagi…\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Issin ugar\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Rnu aḍris niḍen s wudem awurman\n+pdfjs-editor-new-alt-text-not-now-button = Mačči tura\n+pdfjs-editor-new-alt-text-error-title = D awezɣi timerna n uḍris niḍen s wudem awurman\n+pdfjs-editor-new-alt-text-error-close-button = Mdel\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Asader n tmudemt n IA n uḍris amlellay ({ $downloadedSize } n { $totalSize } MB)\n+    .aria-valuetext = Asader n tmudemt n IA n uḍris amlellay ({ $downloadedSize } n { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Yettwarna weḍris amlellay\n+pdfjs-editor-new-alt-text-added-button-label = Yettwarna weḍris amlellay\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Ixuṣ uḍris amlellay\n+pdfjs-editor-new-alt-text-missing-button-label = Ixuṣ uḍris amlellay\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Senqed aḍris amlellay\n+pdfjs-editor-new-alt-text-to-review-button-label = Senqed aḍris amlellay\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Yettwarna s wudem awurman: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Iɣewwaṛen n weḍris amlellay n tugna\n+pdfjs-image-alt-text-settings-button-label = Iɣewwaṛen n weḍris amlellay n tugna\n+pdfjs-editor-alt-text-settings-dialog-label = Iɣewwaṛen n weḍris amlellay n tugna\n+pdfjs-editor-alt-text-settings-automatic-title = Aḍris amlellay awurman\n+pdfjs-editor-alt-text-settings-create-model-button-label = Rnu aḍris niḍen s wudem awurman\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Tamudemt n IA n uḍris amlellay ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-delete-model-button = Kkes\n+pdfjs-editor-alt-text-settings-download-model-button = Sader\n+pdfjs-editor-alt-text-settings-downloading-model-button = Asader…\n+pdfjs-editor-alt-text-settings-editor-title = Amaẓrag n weḍris amlellay\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Sken amaẓrag n uḍris amlellay akken kan ara ternuḍ tugna\n+pdfjs-editor-alt-text-settings-show-dialog-description = Yettall ad tḍemneḍ tugniwin sɛant aḍris amlellay.\n+pdfjs-editor-alt-text-settings-close-button = Mdel\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Yettwakkes usebrureq\n+pdfjs-editor-undo-bar-message-freetext = Aḍris yettwakkes\n+pdfjs-editor-undo-bar-message-ink = Asuneɣ yettwakkes\n+pdfjs-editor-undo-bar-message-stamp = Tugna tettwakkes\n+pdfjs-editor-undo-bar-message-signature = Azmul yettwakkes\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Sefsex\n+pdfjs-editor-undo-bar-undo-button-label = Sefsex\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Mdel\n+pdfjs-editor-undo-bar-close-button-label = Mdel\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-title = Rnu azmul\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Anaw\n+    .title = Anaw\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Suneɣ\n+    .title = Suneɣ\n+pdfjs-editor-add-signature-image-button = Tugna\n+    .title = Tugna\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Zru azmul-ik\n+    .placeholder = Zru azmul-ik\n+pdfjs-editor-add-signature-draw-placeholder = Suneɣ azmul-ik\n+pdfjs-editor-add-signature-draw-thickness-range-label = Tuzert\n+pdfjs-editor-add-signature-image-placeholder = Seḥnucceḍ afaylu da akken ad t-saliṭ\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] neɣ fren ifuyla n tugna\n+       *[other] neɣ inig ifuyla n tugna\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Aglam (aḍris amlellay)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Aglam (aḍris amlellay)\n+pdfjs-editor-add-signature-description-default-when-drawing = Azmul\n+pdfjs-editor-add-signature-clear-button-label = Sfeḍ azmul\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Sfeḍ azmul\n+pdfjs-editor-add-signature-save-checkbox = Sekles azmul\n+pdfjs-editor-add-signature-image-upload-error-title = Ur izmir ara ad yessali tugna\n+pdfjs-editor-add-signature-image-upload-error-description = Ssefqed tuqqna-inek⋅inem n uẓeṭṭa neɣ ɛreḍ tugna-nniḍen.\n+pdfjs-editor-add-signature-error-close-button = Mdel\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Semmet\n+pdfjs-editor-add-signature-add-button = Rnu\n+pdfjs-editor-edit-signature-update-button = Leqqem\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Kkes azmul yettwakelsen\n+pdfjs-editor-delete-signature-button-label1 = Kkes azmul yettwakelsen\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Ẓreg aglam\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Ẓreg aglam\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fkk\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fkk\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fkk\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fkk\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Ағымдағы бет (Ағымдағы беттен URL адресін көру)\n pdfjs-bookmark-button-label = Ағымдағы бет\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Қолданбада ашу\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Қолданбада ашу\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = Файл аты:\n pdfjs-document-properties-file-size = Файл өлшемі:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } КБ ({ $b } байт)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } МБ ({ $b } байт)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } КБ ({ $size_b } байт)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Жасалған күні:\n pdfjs-document-properties-modification-date = Түзету күні:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -281,6 +286,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type } аңдатпасы]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -304,12 +312,18 @@\n pdfjs-editor-highlight-button =\n     .title = Ерекшелеу\n pdfjs-editor-highlight-button-label = Ерекшелеу\n-pdfjs-highlight-floating-button =\n-    .title = Ерекшелеу\n pdfjs-highlight-floating-button1 =\n     .title = Ерекшелеу\n     .aria-label = Ерекшелеу\n pdfjs-highlight-floating-button-label = Ерекшелеу\n+pdfjs-editor-signature-button =\n+    .title = Қолтаңбаны қосу\n+pdfjs-editor-signature-button-label = Қолтаңбаны қосу\n+\n+## Default editor aria labels\n+\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Сурет редакторы\n \n ## Remove button for the various kind of editor.\n \n@@ -321,6 +335,8 @@\n     .title = Суретті өшіру\n pdfjs-editor-remove-highlight-button =\n     .title = Түспен ерекшелеуді өшіру\n+pdfjs-editor-remove-signature-button =\n+    .title = Қолтаңбаны өшіру\n \n ##\n \n@@ -337,6 +353,20 @@\n pdfjs-editor-free-highlight-thickness-input = Қалыңдығы\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Мәтіннен басқа элементтерді ерекшелеу кезінде қалыңдықты өзгерту\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Қолтаңбаларды басқару және сақталған қолтаңбалар\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Жаңа қолтаңбаны қосу\n+pdfjs-editor-signature-add-signature-button-label = Жаңа қолтаңбаны қосу\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Сақталған қолтаңба: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Мәтін түзеткіші\n+    .default-content = Теріп бастаңыз…\n pdfjs-free-text =\n     .aria-label = Мәтін түзеткіші\n pdfjs-free-text-default-content = Теруді бастау…\n@@ -347,8 +377,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Балама мәтін\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Балама мәтінді өңдеу\n pdfjs-editor-alt-text-edit-button-label = Балама мәтінді өңдеу\n pdfjs-editor-alt-text-dialog-label = Опцияны таңдау\n pdfjs-editor-alt-text-dialog-description = Балама мәтін адамдар суретті көре алмағанда немесе ол жүктелмегенде көмектеседі.\n@@ -362,6 +393,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Мысалы, \"Жас жігіт тамақ ішу үшін үстел басына отырады\"\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Балама мәтін\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -374,6 +408,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Төменгі ортасы — өлшемін өзгерту\n pdfjs-editor-resizer-label-bottom-left = Төменгі сол жақ бұрыш — өлшемін өзгерту\n pdfjs-editor-resizer-label-middle-left = Ортаңғы сол жақ — өлшемін өзгерту\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Жоғарғы сол жақ бұрыш — өлшемін өзгерту\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Жоғарғы ортасы — өлшемін өзгерту\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Жоғарғы оң жақ бұрыш — өлшемін өзгерту\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Ортаңғы оң жақ — өлшемін өзгерту\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Төменгі оң жақ бұрыш — өлшемін өзгерту\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Төменгі ортасы — өлшемін өзгерту\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Төменгі сол жақ бұрыш — өлшемін өзгерту\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Ортаңғы сол жақ — өлшемін өзгерту\n \n ## Color picker\n \n@@ -400,3 +450,146 @@\n pdfjs-editor-highlight-show-all-button-label = Барлығын көрсету\n pdfjs-editor-highlight-show-all-button =\n     .title = Барлығын көрсету\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Балама мәтінді өңдеу (сурет сипаттамасы)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Балама мәтінді қосу (сурет сипаттамасы)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Сипаттамаңызды осында жазыңыз…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Суретті көре алмайтын адамдар үшін немесе сурет жүктелмеген кезіне арналған қысқаша сипаттама.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Бұл балама мәтін автоматты түрде жасалды және дәлсіз болуы мүмкін.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Көбірек білу\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Балама мәтінді автоматты түрде жасау\n+pdfjs-editor-new-alt-text-not-now-button = Қазір емес\n+pdfjs-editor-new-alt-text-error-title = Балама мәтінді автоматты түрде жасау мүмкін болмады\n+pdfjs-editor-new-alt-text-error-description = Өзіңіздің балама мәтініңізді жазыңыз немесе кейінірек қайталап көріңіз.\n+pdfjs-editor-new-alt-text-error-close-button = Жабу\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Балама мәтін үшін ЖИ моделі жүктеп алынуда ({ $downloadedSize }\u002F{ $totalSize } МБ)\n+    .aria-valuetext = Балама мәтін үшін ЖИ моделі жүктеп алынуда ({ $downloadedSize }\u002F{ $totalSize } МБ)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Балама мәтін қосылды\n+pdfjs-editor-new-alt-text-added-button-label = Балама мәтін қосылды\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Балама мәтін жоқ\n+pdfjs-editor-new-alt-text-missing-button-label = Балама мәтін жоқ\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Балама мәтінге пікір қалдыру\n+pdfjs-editor-new-alt-text-to-review-button-label = Балама мәтінге пікір қалдыру\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Автоматты түрде жасалды: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Суреттің балама мәтінінің баптаулары\n+pdfjs-image-alt-text-settings-button-label = Суреттің балама мәтінінің баптаулары\n+pdfjs-editor-alt-text-settings-dialog-label = Суреттің балама мәтінінің баптаулары\n+pdfjs-editor-alt-text-settings-automatic-title = Автоматты балама мәтін\n+pdfjs-editor-alt-text-settings-create-model-button-label = Балама мәтінді автоматты түрде жасау\n+pdfjs-editor-alt-text-settings-create-model-description = Суретті көре алмайтын адамдар үшін немесе сурет жүктелмеген кезіне арналған сипаттамаларды ұсынады.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Баламалы мәтіннің ЖИ моделі ({ $totalSize } МБ)\n+pdfjs-editor-alt-text-settings-ai-model-description = Деректеріңіз жеке болып қалуы үшін құрылғыңызда жергілікті түрде жұмыс істейді. Автоматты балама мәтін үшін қажет.\n+pdfjs-editor-alt-text-settings-delete-model-button = Өшіру\n+pdfjs-editor-alt-text-settings-download-model-button = Жүктеп алу\n+pdfjs-editor-alt-text-settings-downloading-model-button = Жүктеліп алынуда…\n+pdfjs-editor-alt-text-settings-editor-title = Баламалы мәтін редакторы\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Суретті қосқанда балама мәтін редакторын бірден көрсету\n+pdfjs-editor-alt-text-settings-show-dialog-description = Барлық суреттерде балама мәтін бар екеніне көз жеткізуге көмектеседі.\n+pdfjs-editor-alt-text-settings-close-button = Жабу\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Ерекшелеу өшірілді\n+pdfjs-editor-undo-bar-message-freetext = Мәтін өшірілді\n+pdfjs-editor-undo-bar-message-ink = Сызба өшірілді\n+pdfjs-editor-undo-bar-message-stamp = Сурет өшірілді\n+pdfjs-editor-undo-bar-message-signature = Қолтаңба өшірілді\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } анимация өшірілді\n+       *[other] { $count } анимация өшірілді\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Болдырмау\n+pdfjs-editor-undo-bar-undo-button-label = Болдырмау\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Жабу\n+pdfjs-editor-undo-bar-close-button-label = Жабу\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-title = Қолтаңба қосу\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Енгізу\n+    .title = Енгізу\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Сурет салу\n+    .title = Сурет салу\n+pdfjs-editor-add-signature-image-button = Сурет\n+    .title = Сурет\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-draw-thickness-range-label = Қалыңдығы\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Сызба қалыңздығы: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Жүктеп жіберу үшін файлды осы жерге сүйреңіз\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Немесе сурет файлдарын таңдаңыз\n+       *[other] Немесе сурет файлдарын шолыңыз\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Сипаттама (балама мәтін)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Сипаттама (балама мәтін)\n+pdfjs-editor-add-signature-description-default-when-drawing = Қолтаңба\n+pdfjs-editor-add-signature-clear-button-label = Қолтаңбаны өшіру\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Қолтаңбаны өшіру\n+pdfjs-editor-add-signature-save-checkbox = Қолтаңбаны сақтау\n+pdfjs-editor-add-signature-save-warning-message = Сақталған 5 қолтаңбаның шегіне жеттіңіз. Көбірек сақтау үшін біреуін алып тастаңыз.\n+pdfjs-editor-add-signature-image-upload-error-title = Суретті жүктеп жіберу мүмкін емес.\n+pdfjs-editor-add-signature-error-close-button = Жабу\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Бас тарту\n+pdfjs-editor-add-signature-add-button = Қосу\n+pdfjs-editor-edit-signature-update-button = Жаңарту\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Сипаттаманы түзету\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Сипаттаманы түзету\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fkm\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fkm\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fkm\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fkm\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -215,9 +215,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fkn\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fkn\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fkn\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fkn\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -205,9 +205,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fko\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fko\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fko\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fko\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = 현재 페이지 (현재 페이지에서 URL 보기)\n pdfjs-bookmark-button-label = 현재 페이지\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = 앱에서 열기\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = 앱에서 열기\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = 파일 이름:\n pdfjs-document-properties-file-size = 파일 크기:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } 바이트)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } 바이트)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b }바이트)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = 작성 날짜:\n pdfjs-document-properties-modification-date = 수정 날짜:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -273,6 +278,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type } 주석]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -296,12 +304,29 @@\n pdfjs-editor-highlight-button =\n     .title = 강조 표시\n pdfjs-editor-highlight-button-label = 강조 표시\n-pdfjs-highlight-floating-button =\n-    .title = 강조 표시\n pdfjs-highlight-floating-button1 =\n     .title = 강조 표시\n     .aria-label = 강조 표시\n pdfjs-highlight-floating-button-label = 강조 표시\n+pdfjs-editor-signature-button =\n+    .title = 서명 추가\n+pdfjs-editor-signature-button-label = 서명 추가\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = 강조 표시 편집기\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = 그리기 편집기\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = 서명 편집기: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = 이미지 편집기\n \n ## Remove button for the various kind of editor.\n \n@@ -313,6 +338,8 @@\n     .title = 이미지 제거\n pdfjs-editor-remove-highlight-button =\n     .title = 강조 표시 제거\n+pdfjs-editor-remove-signature-button =\n+    .title = 서명 제거\n \n ##\n \n@@ -329,6 +356,20 @@\n pdfjs-editor-free-highlight-thickness-input = 두께\n pdfjs-editor-free-highlight-thickness-title =\n     .title = 텍스트 이외의 항목을 강조 표시할 때 두께 변경\n+pdfjs-editor-add-signature-container =\n+    .aria-label = 서명 제어 및 저장된 서명\n+pdfjs-editor-signature-add-signature-button =\n+    .title = 새 서명 추가\n+pdfjs-editor-signature-add-signature-button-label = 새 서명 추가\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = 저장된 서명: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = 텍스트 편집기\n+    .default-content = 입력을 시작하세요…\n pdfjs-free-text =\n     .aria-label = 텍스트 편집기\n pdfjs-free-text-default-content = 입력하세요…\n@@ -339,8 +380,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = 대체 텍스트\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = 대체 텍스트 편집\n pdfjs-editor-alt-text-edit-button-label = 대체 텍스트 편집\n pdfjs-editor-alt-text-dialog-label = 옵션을 선택하세요\n pdfjs-editor-alt-text-dialog-description = 대체 텍스트는 사람들이 이미지를 볼 수 없거나 이미지가 로드되지 않을 때 도움이 됩니다.\n@@ -354,6 +396,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = 예를 들어, “한 청년이 식탁에 앉아 식사를 하고 있습니다.”\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = 대체 텍스트\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -366,6 +411,22 @@\n pdfjs-editor-resizer-label-bottom-middle = 가운데 아래 — 크기 조정\n pdfjs-editor-resizer-label-bottom-left = 왼쪽 아래 - 크기 조정\n pdfjs-editor-resizer-label-middle-left = 왼쪽 가운데 — 크기 조정\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = 왼쪽 위 — 크기 조정\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = 가운데 위 - 크기 조정\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = 오른쪽 위 — 크기 조정\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = 오른쪽 가운데 — 크기 조정\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = 오른쪽 아래 - 크기 조정\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = 가운데 아래 — 크기 조정\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = 왼쪽 아래 - 크기 조정\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = 왼쪽 가운데 — 크기 조정\n \n ## Color picker\n \n@@ -392,3 +453,151 @@\n pdfjs-editor-highlight-show-all-button-label = 모두 보기\n pdfjs-editor-highlight-show-all-button =\n     .title = 모두 보기\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = 대체 텍스트 (이미지 설명) 편집\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = 대체 텍스트 (이미지 설명) 추가\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = 여기에 설명을 작성하세요…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = 이미지가 보이지 않거나 이미지가 로딩되지 않는 경우를 위한 간단한 설명입니다.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = 이 대체 텍스트는 자동으로 생성되었으므로 정확하지 않을 수 있습니다.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = 더 알아보기\n+pdfjs-editor-new-alt-text-create-automatically-button-label = 자동으로 대체 텍스트 생성\n+pdfjs-editor-new-alt-text-not-now-button = 나중에\n+pdfjs-editor-new-alt-text-error-title = 대체 텍스트를 자동으로 생성할 수 없습니다.\n+pdfjs-editor-new-alt-text-error-description = 대체 텍스트를 직접 작성하거나 나중에 다시 시도하세요.\n+pdfjs-editor-new-alt-text-error-close-button = 닫기\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = 대체 텍스트 AI 모델 다운로드 중 ({ $downloadedSize } \u002F { $totalSize } MB)\n+    .aria-valuetext = 대체 텍스트 AI 모델 다운로드 중 ({ $downloadedSize } \u002F { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = 대체 텍스트 추가됨\n+pdfjs-editor-new-alt-text-added-button-label = 대체 텍스트 추가됨\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = 대체 텍스트 누락\n+pdfjs-editor-new-alt-text-missing-button-label = 대체 텍스트 누락\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = 대체 텍스트 검토\n+pdfjs-editor-new-alt-text-to-review-button-label = 대체 텍스트 검토\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = 자동으로 생성됨: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = 이미지 대체 텍스트 설정\n+pdfjs-image-alt-text-settings-button-label = 이미지 대체 텍스트 설정\n+pdfjs-editor-alt-text-settings-dialog-label = 이미지 대체 텍스트 설정\n+pdfjs-editor-alt-text-settings-automatic-title = 자동 대체 텍스트\n+pdfjs-editor-alt-text-settings-create-model-button-label = 자동으로 대체 텍스트 생성\n+pdfjs-editor-alt-text-settings-create-model-description = 이미지가 보이지 않거나 이미지가 로딩되지 않을 때 도움이 되는 설명을 제안합니다.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = 대체 텍스트 AI 모델 ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = 사용자의 장치에서 로컬로 실행되므로 데이터가 비공개로 유지됩니다. 자동 대체 텍스트에 필요합니다.\n+pdfjs-editor-alt-text-settings-delete-model-button = 삭제\n+pdfjs-editor-alt-text-settings-download-model-button = 다운로드\n+pdfjs-editor-alt-text-settings-downloading-model-button = 다운로드 중…\n+pdfjs-editor-alt-text-settings-editor-title = 대체 텍스트 편집기\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = 이미지 추가 시 바로 대체 텍스트 편집기 표시\n+pdfjs-editor-alt-text-settings-show-dialog-description = 모든 이미지에 대체 텍스트가 있는지 확인하는 데 도움이 됩니다.\n+pdfjs-editor-alt-text-settings-close-button = 닫기\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = 강조 표시 제거됨\n+pdfjs-editor-undo-bar-message-freetext = 텍스트 제거됨\n+pdfjs-editor-undo-bar-message-ink = 그리기 제거됨\n+pdfjs-editor-undo-bar-message-stamp = 이미지 제거됨\n+pdfjs-editor-undo-bar-message-signature = 서명 제거됨\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple = 주석 { $count }개 제거됨\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = 실행 취소\n+pdfjs-editor-undo-bar-undo-button-label = 실행 취소\n+pdfjs-editor-undo-bar-close-button =\n+    .title = 닫기\n+pdfjs-editor-undo-bar-close-button-label = 닫기\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = 이 모달로 PDF 문서에 추가 할 서명을 만들 수 있습니다. 사용자는 이름(대체 텍스트 역할도 함)을 편집하고, 반복해 사용할 수 있도록 서명을 저장할 수도 있습니다.\n+pdfjs-editor-add-signature-dialog-title = 서명 추가\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = 입력\n+    .title = 입력\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = 그리기\n+    .title = 그리기\n+pdfjs-editor-add-signature-image-button = 이미지\n+    .title = 이미지\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = 서명 입력\n+    .placeholder = 서명 입력\n+pdfjs-editor-add-signature-draw-placeholder = 서명 그리기\n+pdfjs-editor-add-signature-draw-thickness-range-label = 두께\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = 그리기 두께: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = 이미지 파일을 여기에 끌어서 놓으세요\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] 또는 이미지 파일 찾아보기\n+       *[other] 또는 이미지 파일 찾아보기\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = 설명 (대체 텍스트)\n+pdfjs-editor-add-signature-description-input =\n+    .title = 설명 (대체 텍스트)\n+pdfjs-editor-add-signature-description-default-when-drawing = 서명\n+pdfjs-editor-add-signature-clear-button-label = 서명 지우기\n+pdfjs-editor-add-signature-clear-button =\n+    .title = 서명 지우기\n+pdfjs-editor-add-signature-save-checkbox = 서명 저장\n+pdfjs-editor-add-signature-save-warning-message = 저장된 서명의 한계에 도달했습니다. 더 저장하려면 하나를 제거하세요.\n+pdfjs-editor-add-signature-image-upload-error-title = 이미지를 업로드할 수 없음\n+pdfjs-editor-add-signature-image-upload-error-description = 네트워크 연결을 확인하거나 다른 이미지로 시도하세요.\n+pdfjs-editor-add-signature-error-close-button = 닫기\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = 취소\n+pdfjs-editor-add-signature-add-button = 추가\n+pdfjs-editor-edit-signature-update-button = 업데이트\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = 저장된 서명 제거\n+pdfjs-editor-delete-signature-button-label1 = 저장된 서명 제거\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = 설명 편집\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = 설명 편집\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Flij\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Flij\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Flij\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Flij\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -239,9 +239,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Flo\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Flo\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Flo\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Flo\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -45,12 +45,6 @@\n pdfjs-bookmark-button =\n     .title = ໜ້າປັດຈຸບັນ (ເບິ່ງ URL ຈາກໜ້າປັດຈຸບັນ)\n pdfjs-bookmark-button-label = ຫນ້າ​ປັດ​ຈຸ​ບັນ\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = ເປີດໃນ App\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = ເປີດໃນ App\n \n ##  Secondary toolbar and context menu\n \n@@ -277,6 +271,15 @@\n pdfjs-editor-ink-button =\n     .title = ແຕ້ມ\n pdfjs-editor-ink-button-label = ແຕ້ມ\n+\n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n # Editor Parameters\n pdfjs-editor-free-text-color-input = ສີ\n pdfjs-editor-free-text-size-input = ຂະຫນາດ\n@@ -297,3 +300,44 @@\n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Flocale.json \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Flocale.json\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Flocale.json\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Flocale.json\t2026-02-24 09:27:28.000000000 +0000\n@@ -1 +1 @@\n-{\"ach\":\"ach\u002Fviewer.ftl\",\"af\":\"af\u002Fviewer.ftl\",\"an\":\"an\u002Fviewer.ftl\",\"ar\":\"ar\u002Fviewer.ftl\",\"ast\":\"ast\u002Fviewer.ftl\",\"az\":\"az\u002Fviewer.ftl\",\"be\":\"be\u002Fviewer.ftl\",\"bg\":\"bg\u002Fviewer.ftl\",\"bn\":\"bn\u002Fviewer.ftl\",\"bo\":\"bo\u002Fviewer.ftl\",\"br\":\"br\u002Fviewer.ftl\",\"brx\":\"brx\u002Fviewer.ftl\",\"bs\":\"bs\u002Fviewer.ftl\",\"ca\":\"ca\u002Fviewer.ftl\",\"cak\":\"cak\u002Fviewer.ftl\",\"ckb\":\"ckb\u002Fviewer.ftl\",\"cs\":\"cs\u002Fviewer.ftl\",\"cy\":\"cy\u002Fviewer.ftl\",\"da\":\"da\u002Fviewer.ftl\",\"de\":\"de\u002Fviewer.ftl\",\"dsb\":\"dsb\u002Fviewer.ftl\",\"el\":\"el\u002Fviewer.ftl\",\"en-ca\":\"en-CA\u002Fviewer.ftl\",\"en-gb\":\"en-GB\u002Fviewer.ftl\",\"en-us\":\"en-US\u002Fviewer.ftl\",\"eo\":\"eo\u002Fviewer.ftl\",\"es-ar\":\"es-AR\u002Fviewer.ftl\",\"es-cl\":\"es-CL\u002Fviewer.ftl\",\"es-es\":\"es-ES\u002Fviewer.ftl\",\"es-mx\":\"es-MX\u002Fviewer.ftl\",\"et\":\"et\u002Fviewer.ftl\",\"eu\":\"eu\u002Fviewer.ftl\",\"fa\":\"fa\u002Fviewer.ftl\",\"ff\":\"ff\u002Fviewer.ftl\",\"fi\":\"fi\u002Fviewer.ftl\",\"fr\":\"fr\u002Fviewer.ftl\",\"fur\":\"fur\u002Fviewer.ftl\",\"fy-nl\":\"fy-NL\u002Fviewer.ftl\",\"ga-ie\":\"ga-IE\u002Fviewer.ftl\",\"gd\":\"gd\u002Fviewer.ftl\",\"gl\":\"gl\u002Fviewer.ftl\",\"gn\":\"gn\u002Fviewer.ftl\",\"gu-in\":\"gu-IN\u002Fviewer.ftl\",\"he\":\"he\u002Fviewer.ftl\",\"hi-in\":\"hi-IN\u002Fviewer.ftl\",\"hr\":\"hr\u002Fviewer.ftl\",\"hsb\":\"hsb\u002Fviewer.ftl\",\"hu\":\"hu\u002Fviewer.ftl\",\"hy-am\":\"hy-AM\u002Fviewer.ftl\",\"hye\":\"hye\u002Fviewer.ftl\",\"ia\":\"ia\u002Fviewer.ftl\",\"id\":\"id\u002Fviewer.ftl\",\"is\":\"is\u002Fviewer.ftl\",\"it\":\"it\u002Fviewer.ftl\",\"ja\":\"ja\u002Fviewer.ftl\",\"ka\":\"ka\u002Fviewer.ftl\",\"kab\":\"kab\u002Fviewer.ftl\",\"kk\":\"kk\u002Fviewer.ftl\",\"km\":\"km\u002Fviewer.ftl\",\"kn\":\"kn\u002Fviewer.ftl\",\"ko\":\"ko\u002Fviewer.ftl\",\"lij\":\"lij\u002Fviewer.ftl\",\"lo\":\"lo\u002Fviewer.ftl\",\"lt\":\"lt\u002Fviewer.ftl\",\"ltg\":\"ltg\u002Fviewer.ftl\",\"lv\":\"lv\u002Fviewer.ftl\",\"meh\":\"meh\u002Fviewer.ftl\",\"mk\":\"mk\u002Fviewer.ftl\",\"mr\":\"mr\u002Fviewer.ftl\",\"ms\":\"ms\u002Fviewer.ftl\",\"my\":\"my\u002Fviewer.ftl\",\"nb-no\":\"nb-NO\u002Fviewer.ftl\",\"ne-np\":\"ne-NP\u002Fviewer.ftl\",\"nl\":\"nl\u002Fviewer.ftl\",\"nn-no\":\"nn-NO\u002Fviewer.ftl\",\"oc\":\"oc\u002Fviewer.ftl\",\"pa-in\":\"pa-IN\u002Fviewer.ftl\",\"pl\":\"pl\u002Fviewer.ftl\",\"pt-br\":\"pt-BR\u002Fviewer.ftl\",\"pt-pt\":\"pt-PT\u002Fviewer.ftl\",\"rm\":\"rm\u002Fviewer.ftl\",\"ro\":\"ro\u002Fviewer.ftl\",\"ru\":\"ru\u002Fviewer.ftl\",\"sat\":\"sat\u002Fviewer.ftl\",\"sc\":\"sc\u002Fviewer.ftl\",\"scn\":\"scn\u002Fviewer.ftl\",\"sco\":\"sco\u002Fviewer.ftl\",\"si\":\"si\u002Fviewer.ftl\",\"sk\":\"sk\u002Fviewer.ftl\",\"skr\":\"skr\u002Fviewer.ftl\",\"sl\":\"sl\u002Fviewer.ftl\",\"son\":\"son\u002Fviewer.ftl\",\"sq\":\"sq\u002Fviewer.ftl\",\"sr\":\"sr\u002Fviewer.ftl\",\"sv-se\":\"sv-SE\u002Fviewer.ftl\",\"szl\":\"szl\u002Fviewer.ftl\",\"ta\":\"ta\u002Fviewer.ftl\",\"te\":\"te\u002Fviewer.ftl\",\"tg\":\"tg\u002Fviewer.ftl\",\"th\":\"th\u002Fviewer.ftl\",\"tl\":\"tl\u002Fviewer.ftl\",\"tr\":\"tr\u002Fviewer.ftl\",\"trs\":\"trs\u002Fviewer.ftl\",\"uk\":\"uk\u002Fviewer.ftl\",\"ur\":\"ur\u002Fviewer.ftl\",\"uz\":\"uz\u002Fviewer.ftl\",\"vi\":\"vi\u002Fviewer.ftl\",\"wo\":\"wo\u002Fviewer.ftl\",\"xh\":\"xh\u002Fviewer.ftl\",\"zh-cn\":\"zh-CN\u002Fviewer.ftl\",\"zh-tw\":\"zh-TW\u002Fviewer.ftl\"}\n\\ No newline at end of file\n+{\"ach\":\"ach\u002Fviewer.ftl\",\"af\":\"af\u002Fviewer.ftl\",\"an\":\"an\u002Fviewer.ftl\",\"ar\":\"ar\u002Fviewer.ftl\",\"ast\":\"ast\u002Fviewer.ftl\",\"az\":\"az\u002Fviewer.ftl\",\"be\":\"be\u002Fviewer.ftl\",\"bg\":\"bg\u002Fviewer.ftl\",\"bn\":\"bn\u002Fviewer.ftl\",\"bo\":\"bo\u002Fviewer.ftl\",\"br\":\"br\u002Fviewer.ftl\",\"brx\":\"brx\u002Fviewer.ftl\",\"bs\":\"bs\u002Fviewer.ftl\",\"ca\":\"ca\u002Fviewer.ftl\",\"cak\":\"cak\u002Fviewer.ftl\",\"ckb\":\"ckb\u002Fviewer.ftl\",\"cs\":\"cs\u002Fviewer.ftl\",\"cy\":\"cy\u002Fviewer.ftl\",\"da\":\"da\u002Fviewer.ftl\",\"de\":\"de\u002Fviewer.ftl\",\"dsb\":\"dsb\u002Fviewer.ftl\",\"el\":\"el\u002Fviewer.ftl\",\"en-ca\":\"en-CA\u002Fviewer.ftl\",\"en-gb\":\"en-GB\u002Fviewer.ftl\",\"en-us\":\"en-US\u002Fviewer.ftl\",\"eo\":\"eo\u002Fviewer.ftl\",\"es-ar\":\"es-AR\u002Fviewer.ftl\",\"es-cl\":\"es-CL\u002Fviewer.ftl\",\"es-es\":\"es-ES\u002Fviewer.ftl\",\"es-mx\":\"es-MX\u002Fviewer.ftl\",\"et\":\"et\u002Fviewer.ftl\",\"eu\":\"eu\u002Fviewer.ftl\",\"fa\":\"fa\u002Fviewer.ftl\",\"ff\":\"ff\u002Fviewer.ftl\",\"fi\":\"fi\u002Fviewer.ftl\",\"fr\":\"fr\u002Fviewer.ftl\",\"fur\":\"fur\u002Fviewer.ftl\",\"fy-nl\":\"fy-NL\u002Fviewer.ftl\",\"ga-ie\":\"ga-IE\u002Fviewer.ftl\",\"gd\":\"gd\u002Fviewer.ftl\",\"gl\":\"gl\u002Fviewer.ftl\",\"gn\":\"gn\u002Fviewer.ftl\",\"gu-in\":\"gu-IN\u002Fviewer.ftl\",\"he\":\"he\u002Fviewer.ftl\",\"hi-in\":\"hi-IN\u002Fviewer.ftl\",\"hr\":\"hr\u002Fviewer.ftl\",\"hsb\":\"hsb\u002Fviewer.ftl\",\"hu\":\"hu\u002Fviewer.ftl\",\"hy-am\":\"hy-AM\u002Fviewer.ftl\",\"hye\":\"hye\u002Fviewer.ftl\",\"ia\":\"ia\u002Fviewer.ftl\",\"id\":\"id\u002Fviewer.ftl\",\"is\":\"is\u002Fviewer.ftl\",\"it\":\"it\u002Fviewer.ftl\",\"ja\":\"ja\u002Fviewer.ftl\",\"ka\":\"ka\u002Fviewer.ftl\",\"kab\":\"kab\u002Fviewer.ftl\",\"kk\":\"kk\u002Fviewer.ftl\",\"km\":\"km\u002Fviewer.ftl\",\"kn\":\"kn\u002Fviewer.ftl\",\"ko\":\"ko\u002Fviewer.ftl\",\"lij\":\"lij\u002Fviewer.ftl\",\"lo\":\"lo\u002Fviewer.ftl\",\"lt\":\"lt\u002Fviewer.ftl\",\"ltg\":\"ltg\u002Fviewer.ftl\",\"lv\":\"lv\u002Fviewer.ftl\",\"meh\":\"meh\u002Fviewer.ftl\",\"mk\":\"mk\u002Fviewer.ftl\",\"ml\":\"ml\u002Fviewer.ftl\",\"mr\":\"mr\u002Fviewer.ftl\",\"ms\":\"ms\u002Fviewer.ftl\",\"my\":\"my\u002Fviewer.ftl\",\"nb-no\":\"nb-NO\u002Fviewer.ftl\",\"ne-np\":\"ne-NP\u002Fviewer.ftl\",\"nl\":\"nl\u002Fviewer.ftl\",\"nn-no\":\"nn-NO\u002Fviewer.ftl\",\"oc\":\"oc\u002Fviewer.ftl\",\"pa-in\":\"pa-IN\u002Fviewer.ftl\",\"pl\":\"pl\u002Fviewer.ftl\",\"pt-br\":\"pt-BR\u002Fviewer.ftl\",\"pt-pt\":\"pt-PT\u002Fviewer.ftl\",\"rm\":\"rm\u002Fviewer.ftl\",\"ro\":\"ro\u002Fviewer.ftl\",\"ru\":\"ru\u002Fviewer.ftl\",\"sat\":\"sat\u002Fviewer.ftl\",\"sc\":\"sc\u002Fviewer.ftl\",\"scn\":\"scn\u002Fviewer.ftl\",\"sco\":\"sco\u002Fviewer.ftl\",\"si\":\"si\u002Fviewer.ftl\",\"sk\":\"sk\u002Fviewer.ftl\",\"skr\":\"skr\u002Fviewer.ftl\",\"sl\":\"sl\u002Fviewer.ftl\",\"son\":\"son\u002Fviewer.ftl\",\"sq\":\"sq\u002Fviewer.ftl\",\"sr\":\"sr\u002Fviewer.ftl\",\"sv-se\":\"sv-SE\u002Fviewer.ftl\",\"szl\":\"szl\u002Fviewer.ftl\",\"ta\":\"ta\u002Fviewer.ftl\",\"te\":\"te\u002Fviewer.ftl\",\"tg\":\"tg\u002Fviewer.ftl\",\"th\":\"th\u002Fviewer.ftl\",\"tl\":\"tl\u002Fviewer.ftl\",\"tr\":\"tr\u002Fviewer.ftl\",\"trs\":\"trs\u002Fviewer.ftl\",\"uk\":\"uk\u002Fviewer.ftl\",\"ur\":\"ur\u002Fviewer.ftl\",\"uz\":\"uz\u002Fviewer.ftl\",\"vi\":\"vi\u002Fviewer.ftl\",\"wo\":\"wo\u002Fviewer.ftl\",\"xh\":\"xh\u002Fviewer.ftl\",\"zh-cn\":\"zh-CN\u002Fviewer.ftl\",\"zh-tw\":\"zh-TW\u002Fviewer.ftl\"}\n\\ No newline at end of file\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Flt\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Flt\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Flt\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Flt\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -260,9 +260,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fltg\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fltg\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fltg\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fltg\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -238,9 +238,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Flv\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Flv\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Flv\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Flv\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -239,9 +239,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fmeh\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fmeh\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fmeh\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fmeh\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -79,9 +79,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fmk\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fmk\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fmk\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fmk\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -207,9 +207,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale: ml\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fmr\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fmr\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fmr\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fmr\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -231,9 +231,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fms\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fms\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fms\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fms\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -239,9 +239,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fmy\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fmy\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fmy\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fmy\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -198,9 +198,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fnb-NO\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fnb-NO\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fnb-NO\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fnb-NO\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -105,6 +105,14 @@\n pdfjs-document-properties-file-name = Filnavn:\n pdfjs-document-properties-file-size = Filstørrelse:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } byte)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } byte)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)\n@@ -119,6 +127,9 @@\n pdfjs-document-properties-creation-date = Opprettet dato:\n pdfjs-document-properties-modification-date = Endret dato:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -275,6 +286,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type } annotasjon]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -298,12 +312,16 @@\n pdfjs-editor-highlight-button =\n     .title = Markere\n pdfjs-editor-highlight-button-label = Markere\n-pdfjs-highlight-floating-button =\n-    .title = Markere\n pdfjs-highlight-floating-button1 =\n     .title = Markere\n     .aria-label = Markere\n pdfjs-highlight-floating-button-label = Markere\n+pdfjs-editor-signature-button =\n+    .title = Legg til signatur\n+pdfjs-editor-signature-button-label = Legg til signatur\n+\n+## Default editor aria labels\n+\n \n ## Remove button for the various kind of editor.\n \n@@ -315,6 +333,8 @@\n     .title = Fjern bildet\n pdfjs-editor-remove-highlight-button =\n     .title = Fjern utheving\n+pdfjs-editor-remove-signature-button =\n+    .title = Fjern signatur\n \n ##\n \n@@ -331,6 +351,13 @@\n pdfjs-editor-free-highlight-thickness-input = Tykkelse\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Endre tykkelse når du markerer andre elementer enn tekst\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Legg til ny signatur\n+pdfjs-editor-signature-add-signature-button-label = Legg til ny signatur\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Tekstredigering\n+    .default-content = Begynn å skrive…\n pdfjs-free-text =\n     .aria-label = Tekstredigering\n pdfjs-free-text-default-content = Begynn å skrive…\n@@ -341,8 +368,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Alt-tekst\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Rediger alt-tekst\n pdfjs-editor-alt-text-edit-button-label = Rediger alt-tekst tekst\n pdfjs-editor-alt-text-dialog-label = Velg et alternativ\n pdfjs-editor-alt-text-dialog-description = Alt-tekst (alternativ tekst) hjelper når folk ikke kan se bildet eller når det ikke lastes inn.\n@@ -356,6 +384,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = For eksempel, «En ung mann setter seg ved et bord for å spise et måltid»\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Alt-tekst\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -368,6 +399,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Nederst i midten — endre størrelse\n pdfjs-editor-resizer-label-bottom-left = Nederste venstre hjørne – endre størrelse\n pdfjs-editor-resizer-label-middle-left = Midt til venstre — endre størrelse\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Øverste venstre hjørne – endre størrelse\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Øverst i midten — endre størrelse\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Øverste høyre hjørne – endre størrelse\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Midt til høyre – endre størrelse\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Nederste høyre hjørne – endre størrelse\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Nederst i midten — endre størrelse\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Nederste venstre hjørne – endre størrelse\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Midt til venstre — endre størrelse\n \n ## Color picker\n \n@@ -394,3 +441,145 @@\n pdfjs-editor-highlight-show-all-button-label = Vis alle\n pdfjs-editor-highlight-show-all-button =\n     .title = Vis alle\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Rediger alternativ tekst (bildebeskrivelse)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Legg til alternativ tekst (bildebeskrivelse)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Skriv din beskrivelse her…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Kort beskrivelse for folk som ikke kan se bildet eller når bildet ikke lastes inn.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Denne alternative teksten ble opprettet automatisk og kan være unøyaktig.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Les mer\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Lag alternativ tekst automatisk\n+pdfjs-editor-new-alt-text-not-now-button = Ikke nå\n+pdfjs-editor-new-alt-text-error-title = Kunne ikke opprette alternativ tekst automatisk\n+pdfjs-editor-new-alt-text-error-description = Skriv din egen alternativ-tekst eller prøv igjen senere.\n+pdfjs-editor-new-alt-text-error-close-button = Lukk\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Laster ned alternativ tekst AI-modell ({ $downloadedSize } av { $totalSize } MB)\n+    .aria-valuetext = Laster ned alternativ tekst AI-modell ({ $downloadedSize } av { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Alt-tekst lagt til\n+pdfjs-editor-new-alt-text-added-button-label = Alternativ tekst lagt til\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Mangler alternativ tekst\n+pdfjs-editor-new-alt-text-missing-button-label = Mangler alternativ tekst\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Gjennomgå alt-tekst\n+pdfjs-editor-new-alt-text-to-review-button-label = Gjennomgå alternativ tekst\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Opprettet automatisk: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Innstillinger for alternativ tekst for bilde\n+pdfjs-image-alt-text-settings-button-label = Innstillinger for alternativ tekst for bilde\n+pdfjs-editor-alt-text-settings-dialog-label = Innstillinger for alternativ tekst for bilde\n+pdfjs-editor-alt-text-settings-automatic-title = Automatisk alternativ tekst\n+pdfjs-editor-alt-text-settings-create-model-button-label = Opprett alternativ tekst automatisk\n+pdfjs-editor-alt-text-settings-create-model-description = Foreslår beskrivelser for å hjelpe folk som ikke kan se bildet eller når bildet ikke lastes inn.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Alternativ tekst AI-modell ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Kjører lokalt på enheten din slik at dataene dine forblir private. Nødvendig for automatisk alternativ tekst.\n+pdfjs-editor-alt-text-settings-delete-model-button = Slett\n+pdfjs-editor-alt-text-settings-download-model-button = Last ned\n+pdfjs-editor-alt-text-settings-downloading-model-button = Laster ned…\n+pdfjs-editor-alt-text-settings-editor-title = Alternativ tekst-redigerer\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Vis alternativ tekst-redigerer direkte når du legger til et bilde\n+pdfjs-editor-alt-text-settings-show-dialog-description = Hjelper deg å sørge for at alle bildene dine har alternativ tekst.\n+pdfjs-editor-alt-text-settings-close-button = Lukk\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Markering fjernet\n+pdfjs-editor-undo-bar-message-freetext = Tekst fjernet\n+pdfjs-editor-undo-bar-message-ink = Tegning fjernet\n+pdfjs-editor-undo-bar-message-stamp = Bilde fjernet\n+pdfjs-editor-undo-bar-message-signature = Signatur fjernet\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Angre\n+pdfjs-editor-undo-bar-undo-button-label = Angre\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Lukk\n+pdfjs-editor-undo-bar-close-button-label = Lukk\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Denne modalen lar brukeren lage en signatur for å legge til et PDF-dokument. Brukeren kan redigere navnet (som også fungerer som alt-teksten), og eventuelt lagre signaturen for gjentatt bruk.\n+pdfjs-editor-add-signature-dialog-title = Legg til en signatur\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Type\n+    .title = Type\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Tegn\n+    .title = Tegn\n+pdfjs-editor-add-signature-image-button = Bilde\n+    .title = Bilde\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Skriv inn signaturen din\n+    .placeholder = Skriv inn signaturen din\n+pdfjs-editor-add-signature-draw-placeholder = Tegn signaturen din\n+pdfjs-editor-add-signature-draw-thickness-range-label = Tykkelse\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Linjetykkelse: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Dra en fil her for å laste opp\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Eller velg bildefiler\n+       *[other] Eller velg bildefiler\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Beskrivelse (alternativ tekst)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Beskrivelse (alternativ tekst)\n+pdfjs-editor-add-signature-description-default-when-drawing = Signatur\n+pdfjs-editor-add-signature-clear-button-label = Fjern signatur\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Fjern signatur\n+pdfjs-editor-add-signature-save-checkbox = Lagre signatur\n+pdfjs-editor-add-signature-save-warning-message = Du har nådd grensen på 5 lagrede signaturer. Fjern en for å lagre en ny.\n+pdfjs-editor-add-signature-image-upload-error-title = Kunne ikke laste opp bildet\n+pdfjs-editor-add-signature-image-upload-error-description = Sjekk nettverkstilkoblingen eller prøv et annet bilde.\n+pdfjs-editor-add-signature-error-close-button = Lukk\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Avbryt\n+pdfjs-editor-add-signature-add-button = Legg til\n+pdfjs-editor-edit-signature-update-button = Oppdater\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Rediger beskrivelse\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Rediger beskrivelse\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fne-NP\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fne-NP\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fne-NP\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fne-NP\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -226,9 +226,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fnl\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fnl\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fnl\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fnl\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Huidige pagina (URL van huidige pagina bekijken)\n pdfjs-bookmark-button-label = Huidige pagina\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Openen in app\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Openen in app\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = Bestandsnaam:\n pdfjs-document-properties-file-size = Bestandsgrootte:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bytes)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Aanmaakdatum:\n pdfjs-document-properties-modification-date = Wijzigingsdatum:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -281,6 +286,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type }-aantekening]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -304,12 +312,29 @@\n pdfjs-editor-highlight-button =\n     .title = Markeren\n pdfjs-editor-highlight-button-label = Markeren\n-pdfjs-highlight-floating-button =\n-    .title = Markeren\n pdfjs-highlight-floating-button1 =\n     .title = Markeren\n     .aria-label = Markeren\n pdfjs-highlight-floating-button-label = Markeren\n+pdfjs-editor-signature-button =\n+    .title = Handtekening toevoegen\n+pdfjs-editor-signature-button-label = Handtekening toevoegen\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Markeringsbewerker\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Tekeningbewerker\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Ondertekening-editor: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Afbeeldingsbewerker\n \n ## Remove button for the various kind of editor.\n \n@@ -321,6 +346,8 @@\n     .title = Afbeelding verwijderen\n pdfjs-editor-remove-highlight-button =\n     .title = Markering verwijderen\n+pdfjs-editor-remove-signature-button =\n+    .title = Handtekening verwijderen\n \n ##\n \n@@ -337,6 +364,20 @@\n pdfjs-editor-free-highlight-thickness-input = Dikte\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Dikte wijzigen bij accentuering van andere items dan tekst\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Ondertekeningsinstellingen en opgeslagen ondertekeningen\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Nieuwe handtekening toevoegen\n+pdfjs-editor-signature-add-signature-button-label = Nieuwe handtekening toevoegen\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Opgeslagen ondertekening: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Tekstbewerker\n+    .default-content = Start met typen…\n pdfjs-free-text =\n     .aria-label = Tekstbewerker\n pdfjs-free-text-default-content = Begin met typen…\n@@ -347,8 +388,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Alternatieve tekst\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Alternatieve tekst bewerken\n pdfjs-editor-alt-text-edit-button-label = Alternatieve tekst bewerken\n pdfjs-editor-alt-text-dialog-label = Kies een optie\n pdfjs-editor-alt-text-dialog-description = Alternatieve tekst helpt wanneer mensen de afbeelding niet kunnen zien of wanneer deze niet wordt geladen.\n@@ -362,6 +404,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Bijvoorbeeld: ‘Een jonge man gaat aan een tafel zitten om te eten’\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Alternatieve tekst\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -374,6 +419,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Midden onder – formaat wijzigen\n pdfjs-editor-resizer-label-bottom-left = Linkerbenedenhoek – formaat wijzigen\n pdfjs-editor-resizer-label-middle-left = Links midden – formaat wijzigen\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Linkerbovenhoek – formaat wijzigen\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Midden boven – formaat wijzigen\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Rechterbovenhoek – formaat wijzigen\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Midden rechts – formaat wijzigen\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Rechterbenedenhoek – formaat wijzigen\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Midden onder – formaat wijzigen\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Linkerbenedenhoek – formaat wijzigen\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Links midden – formaat wijzigen\n \n ## Color picker\n \n@@ -400,3 +461,155 @@\n pdfjs-editor-highlight-show-all-button-label = Alles tonen\n pdfjs-editor-highlight-show-all-button =\n     .title = Alles tonen\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Alternatieve tekst (afbeeldingsbeschrijving) bewerken\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Alternatieve tekst (afbeeldingsbeschrijving) toevoegen\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Schrijf hier uw beschrijving…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Korte beschrijving voor mensen die de afbeelding niet kunnen zien of wanneer de afbeelding niet wordt geladen.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Deze alternatieve tekst is automatisch gemaakt en is mogelijk onjuist.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Meer info\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Alternatieve tekst automatisch aanmaken\n+pdfjs-editor-new-alt-text-not-now-button = Niet nu\n+pdfjs-editor-new-alt-text-error-title = Kan alternatieve tekst niet automatisch aanmaken\n+pdfjs-editor-new-alt-text-error-description = Schrijf uw eigen alternatieve tekst of probeer het later nog eens.\n+pdfjs-editor-new-alt-text-error-close-button = Sluiten\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = AI-model voor alternatieve tekst downloaden ({ $downloadedSize } van { $totalSize } MB)\n+    .aria-valuetext = AI-model voor alternatieve tekst downloaden ({ $downloadedSize } van { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Alternatieve tekst toegevoegd\n+pdfjs-editor-new-alt-text-added-button-label = Alternatieve tekst toegevoegd\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Alternatieve tekst ontbreekt\n+pdfjs-editor-new-alt-text-missing-button-label = Alternatieve tekst ontbreekt\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Alternatieve tekst beoordelen\n+pdfjs-editor-new-alt-text-to-review-button-label = Alternatieve tekst beoordelen\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Automatisch aangemaakt: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Instellingen voor alternatieve tekst van afbeeldingen\n+pdfjs-image-alt-text-settings-button-label = Instellingen voor alternatieve tekst van afbeeldingen\n+pdfjs-editor-alt-text-settings-dialog-label = Instellingen voor alternatieve tekst van afbeeldingen\n+pdfjs-editor-alt-text-settings-automatic-title = Automatische alternatieve tekst\n+pdfjs-editor-alt-text-settings-create-model-button-label = Alternatieve tekst automatisch aanmaken\n+pdfjs-editor-alt-text-settings-create-model-description = Stelt beschrijvingen voor om mensen te helpen die de afbeelding niet kunnen zien of voor wie de afbeelding niet wordt geladen.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = AI-model voor alternatieve tekst ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Wordt lokaal op uw apparaat uitgevoerd, zodat uw gegevens privé blijven. Vereist voor automatische alternatieve tekst.\n+pdfjs-editor-alt-text-settings-delete-model-button = Verwijderen\n+pdfjs-editor-alt-text-settings-download-model-button = Downloaden\n+pdfjs-editor-alt-text-settings-downloading-model-button = Downloaden…\n+pdfjs-editor-alt-text-settings-editor-title = Alternatieve-tekstbewerker\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Alternatieve-tekstbewerker meteen tonen bij toevoegen van een afbeelding\n+pdfjs-editor-alt-text-settings-show-dialog-description = Helpt u ervoor te zorgen dat al uw afbeeldingen alternatieve tekst hebben.\n+pdfjs-editor-alt-text-settings-close-button = Sluiten\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Markering verwijderd\n+pdfjs-editor-undo-bar-message-freetext = Tekst verwijderd\n+pdfjs-editor-undo-bar-message-ink = Tekening verwijderd\n+pdfjs-editor-undo-bar-message-stamp = Afbeelding verwijderd\n+pdfjs-editor-undo-bar-message-signature = Handtekening verwijderd\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } annotatie verwijderd\n+       *[other] { $count } annotaties verwijderd\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Ongedaan maken\n+pdfjs-editor-undo-bar-undo-button-label = Ongedaan maken\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Sluiten\n+pdfjs-editor-undo-bar-close-button-label = Sluiten\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Met deze modal kan de gebruiker een handtekening maken om aan een PDF-document toe te voegen. De gebruiker kan de naam (die ook als alternatieve tekst dient) bewerken en optioneel de ondertekening opslaan voor herhaald gebruik.\n+pdfjs-editor-add-signature-dialog-title = Een handtekening toevoegen\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Typen\n+    .title = Typen\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Tekenen\n+    .title = Tekenen\n+pdfjs-editor-add-signature-image-button = Afbeelding\n+    .title = Afbeelding\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Uw handtekening typen\n+    .placeholder = Uw handtekening typen\n+pdfjs-editor-add-signature-draw-placeholder = Uw handtekening tekenen\n+pdfjs-editor-add-signature-draw-thickness-range-label = Dikte\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Tekendikte: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Sleep bestand hierheen om te uploaden\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Of kies afbeeldingsbestanden\n+       *[other] Of kies afbeeldingsbestanden\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Beschrijving (alternatieve tekst)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Beschrijving (alternatieve tekst)\n+pdfjs-editor-add-signature-description-default-when-drawing = Handtekening\n+pdfjs-editor-add-signature-clear-button-label = Handtekening wissen\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Handtekening wissen\n+pdfjs-editor-add-signature-save-checkbox = Handtekening opslaan\n+pdfjs-editor-add-signature-save-warning-message = U hebt de limiet van 5 opgeslagen handtekeningen bereikt. Verwijder er een om een andere op te slaan.\n+pdfjs-editor-add-signature-image-upload-error-title = Kan afbeelding niet uploaden\n+pdfjs-editor-add-signature-image-upload-error-description = Controleer uw netwerkverbinding of probeer een andere afbeelding.\n+pdfjs-editor-add-signature-error-close-button = Sluiten\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Annuleren\n+pdfjs-editor-add-signature-add-button = Toevoegen\n+pdfjs-editor-edit-signature-update-button = Bijwerken\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Opgeslagen ondertekening verwijderen\n+pdfjs-editor-delete-signature-button-label1 = Opgeslagen ondertekening verwijderen\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Beschrijving bewerken\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Beschrijving bewerken\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fnn-NO\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fnn-NO\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fnn-NO\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fnn-NO\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Gjeldande side (sjå URL frå gjeldande side)\n pdfjs-bookmark-button-label = Gjeldande side\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Opne i app\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Opne i app\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = Filnamn:\n pdfjs-document-properties-file-size = Filstorleik:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } kB ({ $b } byte)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } byte)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Dato oppretta:\n pdfjs-document-properties-modification-date = Dato endra:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -135,8 +140,8 @@\n pdfjs-document-properties-page-size = Sidestørrelse:\n pdfjs-document-properties-page-size-unit-inches = in\n pdfjs-document-properties-page-size-unit-millimeters = mm\n-pdfjs-document-properties-page-size-orientation-portrait = ståande\n-pdfjs-document-properties-page-size-orientation-landscape = liggande\n+pdfjs-document-properties-page-size-orientation-portrait = ståande (portrait)\n+pdfjs-document-properties-page-size-orientation-landscape = liggande (landscape)\n pdfjs-document-properties-page-size-name-a-three = A3\n pdfjs-document-properties-page-size-name-a-four = A4\n pdfjs-document-properties-page-size-name-letter = Brev\n@@ -281,6 +286,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type } annotasjon]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -301,9 +309,42 @@\n pdfjs-editor-stamp-button =\n     .title = Legg til eller rediger bilde\n pdfjs-editor-stamp-button-label = Legg til eller rediger bilde\n+pdfjs-editor-highlight-button =\n+    .title = Markere\n+pdfjs-editor-highlight-button-label = Markere\n+pdfjs-highlight-floating-button1 =\n+    .title = Markere\n+    .aria-label = Markere\n+pdfjs-highlight-floating-button-label = Markere\n+pdfjs-editor-signature-button =\n+    .title = Legg til signatur\n+pdfjs-editor-signature-button-label = Legg til signatur\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Markeringsredigerar\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Signatur-redigerar: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Bildredigerar\n \n ## Remove button for the various kind of editor.\n \n+pdfjs-editor-remove-ink-button =\n+    .title = Fjern teikninga\n+pdfjs-editor-remove-freetext-button =\n+    .title = Fjern tekst\n+pdfjs-editor-remove-stamp-button =\n+    .title = Fjern bildet\n+pdfjs-editor-remove-highlight-button =\n+    .title = Fjern utheving\n+pdfjs-editor-remove-signature-button =\n+    .title = Fjern signatur\n \n ##\n \n@@ -311,11 +352,29 @@\n pdfjs-editor-free-text-color-input = Farge\n pdfjs-editor-free-text-size-input = Storleik\n pdfjs-editor-ink-color-input = Farge\n-pdfjs-editor-ink-thickness-input = Tjukkleik\n+pdfjs-editor-ink-thickness-input = Tjukn\n pdfjs-editor-ink-opacity-input = Ugjennomskinleg\n pdfjs-editor-stamp-add-image-button =\n     .title = Legg til bilde\n pdfjs-editor-stamp-add-image-button-label = Legg til bilde\n+# This refers to the thickness of the line used for free highlighting (not bound to text)\n+pdfjs-editor-free-highlight-thickness-input = Tjukn\n+pdfjs-editor-free-highlight-thickness-title =\n+    .title = Endre tjukn når du markerer andre element enn tekst\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Signaturkontroll og lagra signaturar\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Legg til ny signatur\n+pdfjs-editor-signature-add-signature-button-label = Legg til ny signatur\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Lagra signatur: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Tekstredigering\n+    .default-content = Begynn å skrive…\n pdfjs-free-text =\n     .aria-label = Tekstredigering\n pdfjs-free-text-default-content = Byrje å skrive…\n@@ -326,8 +385,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Alt-tekst\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Rediger alt-tekst tekst\n pdfjs-editor-alt-text-edit-button-label = Rediger alt-tekst tekst\n pdfjs-editor-alt-text-dialog-label = Vel eit alternativ\n pdfjs-editor-alt-text-dialog-description = Alt-tekst (alternativ tekst) hjelper når folk ikkje kan sjå bildet eller når det ikkje vert lasta inn.\n@@ -341,13 +401,46 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Til dømes, «Ein ung mann set seg ved eit bord for å ete eit måltid»\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Alt-tekst\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+pdfjs-editor-resizer-label-top-left = Øvste venstre hjørne – endre størrelse\n+pdfjs-editor-resizer-label-top-middle = Øvst i midten — endre størrelse\n+pdfjs-editor-resizer-label-top-right = Øvste høgre hjørne – endre størrelse\n+pdfjs-editor-resizer-label-middle-right = Midt til høgre – endre størrelse\n+pdfjs-editor-resizer-label-bottom-right = Nedste høgre hjørne – endre størrelse\n+pdfjs-editor-resizer-label-bottom-middle = Nedst i midten — endre størrelse\n+pdfjs-editor-resizer-label-bottom-left = Nedste venstre hjørne – endre størrelse\n+pdfjs-editor-resizer-label-middle-left = Midt til venstre — endre størrelse\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Øvste venstre hjørne – endre størrelse\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Øvst i midten — endre størrelse\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Øvste høgre hjørne – endre størrelse\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Midt til høgre – endre størrelse\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Nedste høgre hjørne – endre størrelse\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Nedst i midten — endre størrelse\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Nedste venstre hjørne – endre størrelse\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Midt til venstre — endre størrelse\n \n ## Color picker\n \n+# This means \"Color used to highlight text\"\n+pdfjs-editor-highlight-colorpicker-label = Uthevingsfarge\n+pdfjs-editor-colorpicker-button =\n+    .title = Endre farge\n+pdfjs-editor-colorpicker-dropdown =\n+    .aria-label = Fargeval\n pdfjs-editor-colorpicker-yellow =\n     .title = Gul\n pdfjs-editor-colorpicker-green =\n@@ -358,3 +451,159 @@\n     .title = Rosa\n pdfjs-editor-colorpicker-red =\n     .title = Raud\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+pdfjs-editor-highlight-show-all-button-label = Vis alle\n+pdfjs-editor-highlight-show-all-button =\n+    .title = Vis alle\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Rediger alternativ tekst (bildeskildring)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Legg til alternativ tekst (bildeskildring)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Skriv skildringa di her…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Kort skildring for personar som ikkje kan sjå bildet, eller når bildet ikkje lastar inn.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Denne alternative teksten vart oppretta automatisk, og kan vere unøyaktig.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Les meir\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Opprett alternativ tekt automatisk\n+pdfjs-editor-new-alt-text-not-now-button = Ikkje no\n+pdfjs-editor-new-alt-text-error-title = Klarte ikkje å opprette alternativ tekst automatisk\n+pdfjs-editor-new-alt-text-error-description = Skriv din eigen alternative tekst eller prøv igjen seinare.\n+pdfjs-editor-new-alt-text-error-close-button = Lat att\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Lastar ned AI-modell med alternativ tekst ({ $downloadedSize } av { $totalSize } MB)\n+    .aria-valuetext = Lastar ned AI-modell med alternativ tekst ({ $downloadedSize } av { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Alternativ tekst lagt til\n+pdfjs-editor-new-alt-text-added-button-label = Alternativ tekst lagt til\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Manglande alternativ tekst\n+pdfjs-editor-new-alt-text-missing-button-label = Manglande alternativ tekst\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Vurder alternativ tekst\n+pdfjs-editor-new-alt-text-to-review-button-label = Vurder alternativ tekst\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Oppretta automatisk: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Alternative tekst-innstillingar for bilde\n+pdfjs-image-alt-text-settings-button-label = Alternative tekst-innstillingar for bilde\n+pdfjs-editor-alt-text-settings-dialog-label = Alternative tekst-innstillingar for bilde\n+pdfjs-editor-alt-text-settings-automatic-title = Automatisk alternativ tekst\n+pdfjs-editor-alt-text-settings-create-model-button-label = Opprett alternativ tekt automatisk\n+pdfjs-editor-alt-text-settings-create-model-description = Foreslår skildringar for å hjelpe folk som ikkje kan sjå bildet eller når bildet ikkje blir lasta inn.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = AI-modell for alternativ tekst ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Køyrer lokalt på eininga di slik at dataa dine blir verande private. Påkravd for automatisk alternativ tekst.\n+pdfjs-editor-alt-text-settings-delete-model-button = Slett\n+pdfjs-editor-alt-text-settings-download-model-button = Last ned\n+pdfjs-editor-alt-text-settings-downloading-model-button = Lastar ned…\n+pdfjs-editor-alt-text-settings-editor-title = Alternativ tekst-redigerar\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Vis alternativ tekst-redigerar direkte når du legg til eit bilde\n+pdfjs-editor-alt-text-settings-show-dialog-description = Hjelper deg med å sørgje for at alle bilda dine har alternativ tekst.\n+pdfjs-editor-alt-text-settings-close-button = Lat att\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Markering fjerna\n+pdfjs-editor-undo-bar-message-freetext = Tekst fjerna\n+pdfjs-editor-undo-bar-message-ink = Teikning fjerna\n+pdfjs-editor-undo-bar-message-stamp = Bilde fjerna\n+pdfjs-editor-undo-bar-message-signature = Signatur fjerna\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } kommentar fjerna\n+       *[other] { $count } kommentarar fjerna\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Angre\n+pdfjs-editor-undo-bar-undo-button-label = Angre\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Lat att\n+pdfjs-editor-undo-bar-close-button-label = Lat att\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Denne modalen lèt brukaren lage ein signatur for å leggje til eit PDF-dokument. Brukaren kan redigere namnet (som også fungerer som alt-teksten), og eventuelt lagre signaturen for gjenteken bruk.\n+pdfjs-editor-add-signature-dialog-title = Legg til ein signatur\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Type\n+    .title = Type\n+pdfjs-editor-add-signature-image-button = Bilde\n+    .title = Bilde\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Skriv inn signaturen din\n+    .placeholder = Skriv inn signaturen din\n+pdfjs-editor-add-signature-draw-placeholder = Teikn signaturen din\n+pdfjs-editor-add-signature-draw-thickness-range-label = Tjukn\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Linjetjukn: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Drag ei fil hit for å laste opp\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Eller vel bildefiler\n+       *[other] Eller vel bildefiler\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Skildring (alternativ tekst)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Skildring (alternativ tekst)\n+pdfjs-editor-add-signature-description-default-when-drawing = Signatur\n+pdfjs-editor-add-signature-clear-button-label = Fjern signatur\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Fjern signatur\n+pdfjs-editor-add-signature-save-checkbox = Lagre signatur\n+pdfjs-editor-add-signature-save-warning-message = Du har nådd grensa på 5 lagra signaturar. Fjern ein for å lagre ein ny.\n+pdfjs-editor-add-signature-image-upload-error-title = Klarte ikkje å oppdatere bilde\n+pdfjs-editor-add-signature-image-upload-error-description = Sjekk nettverkstilkoplinga eller prøv eit annet bilde.\n+pdfjs-editor-add-signature-error-close-button = Lat att\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Avbryt\n+pdfjs-editor-add-signature-add-button = Legg til\n+pdfjs-editor-edit-signature-update-button = Oppdater\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Fjern lagra signatur\n+pdfjs-editor-delete-signature-button-label1 = Fjern lagra signatur\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Rediger skildring\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Rediger skildring\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Foc\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Foc\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Foc\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Foc\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Pagina actuala (mostrar l’adreça de la pagina actuala)\n pdfjs-bookmark-button-label = Pagina actuala\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Dobrir amb l’aplicacion\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Dobrir amb l’aplicacion\n \n ##  Secondary toolbar and context menu\n \n@@ -226,6 +220,21 @@\n pdfjs-find-entire-word-checkbox-label = Mots entièrs\n pdfjs-find-reached-top = Naut de la pagina atenh, perseguida del bas\n pdfjs-find-reached-bottom = Bas de la pagina atench, perseguida al començament\n+# Variables:\n+#   $current (Number) - the index of the currently active find result\n+#   $total (Number) - the total number of matches in the document\n+pdfjs-find-match-count =\n+    { $total ->\n+        [one] Ocurréncia { $current } de { $total }\n+       *[other] Ocurréncia { $current } de { $total }\n+    }\n+# Variables:\n+#   $limit (Number) - the maximum number of matches\n+pdfjs-find-match-count-limit =\n+    { $limit ->\n+        [one] Mai de { $limit } ocurréncia\n+       *[other] Mai de { $limit } ocurréncias\n+    }\n pdfjs-find-not-found = Frasa pas trobada\n \n ## Predefined zoom values\n@@ -266,6 +275,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [Anotacion { $type }]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -286,13 +298,27 @@\n pdfjs-editor-stamp-button =\n     .title = Apondre o modificar d’imatges\n pdfjs-editor-stamp-button-label = Apondre o modificar d’imatges\n+pdfjs-editor-highlight-button =\n+    .title = Subrelinhar\n+pdfjs-editor-highlight-button-label = Subrelinhar\n+pdfjs-highlight-floating-button1 =\n+    .title = Subrelinhar\n+    .aria-label = Subrelinhar\n+pdfjs-highlight-floating-button-label = Subrelinhar\n+\n+## Default editor aria labels\n+\n \n ## Remove button for the various kind of editor.\n \n+pdfjs-editor-remove-ink-button =\n+    .title = Levar lo dessenh\n pdfjs-editor-remove-freetext-button =\n     .title = Suprimir lo tèxte\n pdfjs-editor-remove-stamp-button =\n     .title = Suprimir l’imatge\n+pdfjs-editor-remove-highlight-button =\n+    .title = Levar lo suslinhatge\n \n ##\n \n@@ -307,6 +333,10 @@\n pdfjs-editor-stamp-add-image-button-label = Apondre imatge\n # This refers to the thickness of the line used for free highlighting (not bound to text)\n pdfjs-editor-free-highlight-thickness-input = Espessor\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Editor de tèxte\n+    .default-content = Començatz de picar…\n pdfjs-free-text =\n     .aria-label = Editor de tèxte\n pdfjs-free-text-default-content = Començatz d’escriure…\n@@ -317,7 +347,6 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Tèxt alternatiu\n pdfjs-editor-alt-text-edit-button-label = Modificar lo tèxt alternatiu\n pdfjs-editor-alt-text-dialog-label = Causir una opcion\n@@ -335,6 +364,8 @@\n pdfjs-editor-highlight-colorpicker-label = Color de suslinhatge\n pdfjs-editor-colorpicker-button =\n     .title = Cambiar de color\n+pdfjs-editor-colorpicker-dropdown =\n+    .aria-label = Causida de colors\n pdfjs-editor-colorpicker-yellow =\n     .title = Jaune\n pdfjs-editor-colorpicker-green =\n@@ -352,3 +383,54 @@\n pdfjs-editor-highlight-show-all-button-label = O afichar tot\n pdfjs-editor-highlight-show-all-button =\n     .title = O afichar tot\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+pdfjs-editor-new-alt-text-error-close-button = Tampar\n+\n+## Image alt-text settings\n+\n+pdfjs-editor-alt-text-settings-automatic-title = Tèxte alternatiu automatic\n+pdfjs-editor-alt-text-settings-create-model-button-label = Crear un tèxte alternatiu automaticament\n+pdfjs-editor-alt-text-settings-delete-model-button = Suprimir\n+pdfjs-editor-alt-text-settings-download-model-button = Telecargar\n+pdfjs-editor-alt-text-settings-downloading-model-button = Telecargament…\n+pdfjs-editor-alt-text-settings-editor-title = Editor de tèxte alternatiu\n+pdfjs-editor-alt-text-settings-close-button = Tampar\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-freetext = Tèxte suprimit\n+pdfjs-editor-undo-bar-message-ink = Dessenh suprimit\n+pdfjs-editor-undo-bar-message-stamp = Imatge suprimit\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Anullar\n+pdfjs-editor-undo-bar-undo-button-label = Anullar\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Tampar\n+pdfjs-editor-undo-bar-close-button-label = Tampar\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fpa-IN\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fpa-IN\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fpa-IN\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fpa-IN\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -105,6 +105,14 @@\n pdfjs-document-properties-file-name = ਫਾਈਲ ਦਾ ਨਾਂ:\n pdfjs-document-properties-file-size = ਫਾਈਲ ਦਾ ਆਕਾਰ:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } ਬਾਈਟ)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } ਬਾਈਟ)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } ਬਾਈਟ)\n@@ -119,6 +127,9 @@\n pdfjs-document-properties-creation-date = ਬਣਾਉਣ ਦੀ ਮਿਤੀ:\n pdfjs-document-properties-modification-date = ਸੋਧ ਦੀ ਮਿਤੀ:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -275,6 +286,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type } ਵਿਆਖਿਆ]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -298,12 +312,29 @@\n pdfjs-editor-highlight-button =\n     .title = ਹਾਈਲਾਈਟ\n pdfjs-editor-highlight-button-label = ਹਾਈਲਾਈਟ\n-pdfjs-highlight-floating-button =\n-    .title = ਹਾਈਲਾਈਟ\n pdfjs-highlight-floating-button1 =\n     .title = ਹਾਈਲਾਈਟ\n     .aria-label = ਹਾਈਲਾਈਟ\n pdfjs-highlight-floating-button-label = ਹਾਈਲਾਈਟ\n+pdfjs-editor-signature-button =\n+    .title = ਦਸਤਖ਼ਤ ਜੋੜੋ\n+pdfjs-editor-signature-button-label = ਦਸਤਖ਼ਤ ਜੋੜੋ\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = ਹਾਈਲਾਈਟ ਸੰਪਾਦਕ\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = ਡਰਾਇੰਗ ਸੰਪਾਦਕ\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = ਦਸਤਖ਼ਤ ਐਡੀਟਰ: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = ਚਿੱਤਰ ਸੰਪਾਦਕ\n \n ## Remove button for the various kind of editor.\n \n@@ -315,6 +346,8 @@\n     .title = ਚਿੱਤਰ ਨੂੰ ਹਟਾਓ\n pdfjs-editor-remove-highlight-button =\n     .title = ਹਾਈਲਾਈਟ ਨੂੰ ਹਟਾਓ\n+pdfjs-editor-remove-signature-button =\n+    .title = ਦਸਤਖ਼ਤ ਨੂੰ ਹਟਾਓ\n \n ##\n \n@@ -331,6 +364,20 @@\n pdfjs-editor-free-highlight-thickness-input = ਮੋਟਾਈ\n pdfjs-editor-free-highlight-thickness-title =\n     .title = ਚੀਜ਼ਾਂ ਨੂੰ ਹੋਰ ਲਿਖਤਾਂ ਤੋਂ ਉਘਾੜਨ ਸਮੇਂ ਮੋਟਾਈ ਨੂੰ ਬਦਲੋ\n+pdfjs-editor-add-signature-container =\n+    .aria-label = ਦਸਤਖ਼ਤ ਕੰਟਰੋਲ ਅਤੇ ਸੰਭਾਲੇ ਹੋਏ ਦਸਤਖ਼ਤ\n+pdfjs-editor-signature-add-signature-button =\n+    .title = ਨਵੇਂ ਦਸਤਖ਼ਤ ਨੂੰ ਜੋੜੋ\n+pdfjs-editor-signature-add-signature-button-label = ਨਵੇਂ ਦਸਤਖ਼ਤ ਨੂੰ ਜੋੜੋ\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = ਸੰਭਾਲੇ ਦਸਤਖ਼ਤ: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = ਲਿਖਤ ਐਡੀਟਰ\n+    .default-content = …ਲਿਖਣਾ ਸ਼ੁਰੂ ਕਰੋ\n pdfjs-free-text =\n     .aria-label = ਲਿਖਤ ਐਡੀਟਰ\n pdfjs-free-text-default-content = …ਲਿਖਣਾ ਸ਼ੁਰੂ ਕਰੋ\n@@ -341,8 +388,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = ਬਦਲਵੀਂ ਲਿਖਤ\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = ਬਦਲਵੀ ਲਿਖਤ ਨੂੰ ਸੋਧੋ\n pdfjs-editor-alt-text-edit-button-label = ਬਦਲਵੀ ਲਿਖਤ ਨੂੰ ਸੋਧੋ\n pdfjs-editor-alt-text-dialog-label = ਚੋਣ ਕਰੋ\n pdfjs-editor-alt-text-dialog-description = ਚਿੱਤਰ ਨਾ ਦਿੱਸਣ ਜਾਂ ਲੋਡ ਨਾ ਹੋਣ ਦੀ ਹਾਲਤ ਵਿੱਚ Alt ਲਿਖਤ (ਬਦਲਵੀਂ ਲਿਖਤ) ਲੋਕਾਂ ਲਈ ਮਦਦਗਾਰ ਹੁੰਦੀ ਹੈ।\n@@ -356,6 +404,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = ਮਿਸਾਲ ਵਜੋਂ, “ਗੱਭਰੂ ਭੋਜਨ ਲੈ ਕੇ ਮੇਜ਼ ਉੱਤੇ ਬੈਠਾ ਹੈ”\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = ਬਦਲਵੀਂ ਲਿਖਤ\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -368,6 +419,22 @@\n pdfjs-editor-resizer-label-bottom-middle = ਹੇਠਾਂ ਮੱਧ — ਮੁੜ-ਆਕਾਰ ਕਰੋ\n pdfjs-editor-resizer-label-bottom-left = ਹੇਠਾਂ ਖੱਬਾ ਕੋਨਾ — ਮੁੜ-ਆਕਾਰ ਕਰੋ\n pdfjs-editor-resizer-label-middle-left = ਮੱਧ ਖੱਬਾ — ਮੁੜ-ਆਕਾਰ ਕਰੋ\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = ਉੱਤੇ ਖੱਬਾ ਕੋਨਾ — ਮੁੜ-ਆਕਾਰ ਕਰੋ\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = ਉੱਤੇ ਮੱਧ — ਮੁੜ-ਆਕਾਰ ਕਰੋ\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = ਉੱਤੇ ਸੱਜਾ ਕੋਨਾ — ਮੁੜ-ਆਕਾਰ ਕਰੋ\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = ਮੱਧ ਸੱਜਾ — ਮੁੜ-ਆਕਾਰ ਕਰੋ\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = ਹੇਠਾਂ ਸੱਜਾ ਕੋਨਾ — ਮੁੜ-ਆਕਾਰ ਕਰੋ\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = ਹੇਠਾਂ ਮੱਧ — ਮੁੜ-ਆਕਾਰ ਕਰੋ\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = ਹੇਠਾਂ ਖੱਬਾ ਕੋਨਾ — ਮੁੜ-ਆਕਾਰ ਕਰੋ\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = ਮੱਧ ਖੱਬਾ — ਮੁੜ-ਆਕਾਰ ਕਰੋ\n \n ## Color picker\n \n@@ -394,3 +461,155 @@\n pdfjs-editor-highlight-show-all-button-label = ਸਭ ਵੇਖੋ\n pdfjs-editor-highlight-show-all-button =\n     .title = ਸਭ ਵੇਖੋ\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = ਬਦਲਵੀਂ ਲਿਖਤ (ਚਿੱਤਰ ਦਾ ਵਰਣਨ) ਨੂੰ ਸੋਧੋ\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = ਬਦਲਵੀਂ ਲਿਖਤ (ਚਿੱਤਰ ਦਾ ਵਰਣਨ) ਨੂੰ ਜੋੜੋ\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = …ਆਪਣਾ ਵਰਣਨਾ ਇੱਥੇ ਲਿਖੋ\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = ਲੋਕ, ਜੋ ਕਿ ਚਿੱਤਰ ਨਹੀਂ ਵੇਖ ਸਕਦੇ ਜਾਂ ਜਦ ਵੀ ਚਿੱਤਰਾਂ ਨੂੰ ਲੋਡ ਨਹੀਂ ਜਾ ਸਕਦਾ, ਉਸ ਲਈ ਛੋਟਾ ਵੇਰਵਾ ਦਿਓ।\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = ਇਹ ਬਦਲਵੀਂ ਲਿਖਤ ਆਪਣੇ-ਆਪ ਤਿਆਰ ਕੀਤੀ ਗਈ ਸੀ ਅਤੇ ਗਲਤ ਵੀ ਹੋ ਸਕਦੀ ਹੈ।\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = ਹੋਰ ਜਾਣੋ\n+pdfjs-editor-new-alt-text-create-automatically-button-label = ਬਲਦਵੀਂ ਲਿਖਤ ਆਪਣੇ-ਆਪ ਬਣਾਓ\n+pdfjs-editor-new-alt-text-not-now-button = ਹੁਣੇ ਨਹੀਂ\n+pdfjs-editor-new-alt-text-error-title = ਬਦਲਵੀਂ ਲਿਖਤ ਆਪਣੇ-ਆਪ ਬਣਾਈ ਨਹੀਂ ਜਾ ਸਕੀ\n+pdfjs-editor-new-alt-text-error-description = ਆਪਣਾ ਖੁਦ ਦੀ ਬਦਲਵੀਂ ਲਿਖਤ ਲਿਖੋ ਜਾਂ ਫੇਰ ਕੋਸ਼ਿਸ਼ ਕਰੋ।\n+pdfjs-editor-new-alt-text-error-close-button = ਬੰਦ ਕਰੋ\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = ਬਦਲਵਾਂ ਲਿਖਤ AI ਮਾਡਲ ਡਾਊਨਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ ({ $totalSize } MB ਵਿੱਚੋਂ { $downloadedSize })\n+    .aria-valuetext = ਬਦਲਵਾਂ ਲਿਖਤ AI ਮਾਡਲ ਡਾਊਨਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ ({ $totalSize } MB ਵਿੱਚੋਂ { $downloadedSize })\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = ਬਦਲਵੀਂ ਲਿਖਤ ਜੋੜੀ\n+pdfjs-editor-new-alt-text-added-button-label = ਬਦਲਵੀਂ ਲਿਖਤ ਜੋੜੀ\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = ਬਦਲਵਾਂ ਲਿਖਤ ਗੁੰਮ ਹੈ\n+pdfjs-editor-new-alt-text-missing-button-label = ਬਦਲਵਾਂ ਲਿਖਤ ਗੁੰਮ ਹੈ\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = ਬਦਲਵੀਂ ਲਿਖਤ ਦਾ ਰੀਵਿਊ ਕਰੋ\n+pdfjs-editor-new-alt-text-to-review-button-label = ਬਦਲਵੀਂ ਲਿਖਤ ਦਾ ਰੀਵਿਊ ਕਰੋ\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = ਆਪਣੇ-ਆਪ ਬਣਾਇਆ: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = ਚਿੱਤਰ ਬਦਲਵੀਂ ਲਿਖਤ ਦੀਆਂ ਸੈਟਿੰਗਾਂ\n+pdfjs-image-alt-text-settings-button-label = ਚਿੱਤਰ ਬਦਲਵੀਂ ਲਿਖਤ ਦੀਆਂ ਸੈਟਿੰਗਾਂ\n+pdfjs-editor-alt-text-settings-dialog-label = ਚਿੱਤਰ ਬਦਲਵੀਂ ਲਿਖਤ ਦੀਆਂ ਸੈਟਿੰਗਾਂ\n+pdfjs-editor-alt-text-settings-automatic-title = ਆਟੋਮਮੈਟਿਕ ਬਦਲਵੀਂ ਲਿਖਤ\n+pdfjs-editor-alt-text-settings-create-model-button-label = ਬਲਦਵੀਂ ਲਿਖਤ ਆਪਣੇ-ਆਪ ਬਣਾਓ\n+pdfjs-editor-alt-text-settings-create-model-description = ਚਿੱਤਰ ਨਾ ਵੇਖ ਸਕਣ ਵਾਲੇ ਲੋਕਾਂ ਦੀ ਮਦਦ ਜਾਂ ਜਦ ਵੀ ਚਿੱਤਰਾਂ ਨੂੰ ਲੋਡ ਨਹੀਂ ਜਾ ਸਕਦਾ, ਉਸ ਲਈ ਛੋਟਾ ਵੇਰਵਾ ਦਿਓ।\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = ਬਦਲਵੀ ਲਿਖਤ ਲਈ AI ਮਾਡਲ ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = ਤੁਹਾਡੇ ਡਿਵਾਈਸ ਉੱਤੇ ਲੋਕਲ ਹੀ ਚੱਲਦਾ ਹੋਣ ਕਰਕੇ ਤੁਹਾਡਾ ਡਾਟਾ ਪ੍ਰਾਈਵੇਟ ਹੀ ਰਹਿੰਦਾ ਹੈ। ਆਟੋਮੈਟਿਕ ਬਦਲਵੀਂ ਲਿਖਤ ਲਈ ਚਾਹੀਦਾ ਹੈ।\n+pdfjs-editor-alt-text-settings-delete-model-button = ਹਟਾਓ\n+pdfjs-editor-alt-text-settings-download-model-button = ਡਾਊਨਲੋਡ\n+pdfjs-editor-alt-text-settings-downloading-model-button = …ਨੂੰ ਡਾਊਨਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ\n+pdfjs-editor-alt-text-settings-editor-title = ਬਦਲਵੀਂ ਲਿਖਤ ਐਡੀਟਰ\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = ਜਦੋਂ ਵਿੱਚ ਚਿੱਤਰ ਜੋੜਿਆ ਜਾਵੇ ਤਾਂ ਫ਼ੌਰਨ ਬਦਲਵੀ ਲਿਖਤ ਸੰਪਾਦਕ ਵੇਖਾਓ\n+pdfjs-editor-alt-text-settings-show-dialog-description = ਤੁਹਾਡੀ ਮਦਦ ਕਰਦਾ ਹੈ ਕਿ ਤੁਹਾਡੇ ਸਾਰੇ ਚਿੱਤਰਾਂ ਲਈ ਬਦਲਵੀਂ ਲਿਖਤ ਮੌਜੂਦ ਹੋਵੇ।\n+pdfjs-editor-alt-text-settings-close-button = ਬੰਦ ਕਰੋ\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = ਹਾਈਲਾਈਟ ਨੂੰ ਹਟਾਇਆ ਗਿਆ\n+pdfjs-editor-undo-bar-message-freetext = ਲਿਖਤ ਨੂੰ ਹਟਾਇਆ ਗਿਆ\n+pdfjs-editor-undo-bar-message-ink = ਡਰਾਇੰਗ ਨੂੰ ਹਟਾਇਆ ਗਿਆ\n+pdfjs-editor-undo-bar-message-stamp = ਚਿੱਤਰ ਨੂੰ ਹਟਾਇਆ ਗਿਆ\n+pdfjs-editor-undo-bar-message-signature = ਦਸਤਖ਼ਤ ਨੂੰ ਹਟਾਇਆ\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } ਵਿਆਖਿਆ ਨੂੰ ਹਟਾਇਆ\n+       *[other] { $count } ਵਿਆਖਿਆਵਾਂ ਨੂੰ ਹਟਾਇਆ\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = ਵਾਪਸ\n+pdfjs-editor-undo-bar-undo-button-label = ਵਾਪਸ\n+pdfjs-editor-undo-bar-close-button =\n+    .title = ਬੰਦ ਕਰੋ\n+pdfjs-editor-undo-bar-close-button-label = ਬੰਦ ਕਰੋ\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = ਇਹ ਮਾਡਲ ਵਰਤੋਂਕਾਰ ਨੂੰ PDF ਦਸਤਾਵੇਜ਼ ਵਿੱਚ ਜੋੜਨ ਲਈ ਦਸਤਖ਼ਤ ਬਣਾਉਣ ਦਿੰਦਾ ਹੈ। ਵਰਤੋਂਕਾਰ ਨਾਂ ਨੂੰ ਸੋਧ ਸਕਦਾ ਹੈ (ਜੋ ਕਿ ਬਦਲਵੀਂ ਲਿਖਤ ਵਜੋਂ ਕੰਮ ਕਰੇਗਾ) ਅਤੇ ਦੁਬਾਰਾ ਵਰਤੋਂ ਕਰਨ ਲਈ ਦਸਤਖ਼ਤਾਂ ਨੂੰ ਸੰਭਾਲ ਵੀ ਸਕਦਾ ਹੈ।\n+pdfjs-editor-add-signature-dialog-title = ਦਸਤਖ਼ਤ ਨੂੰ ਜੋੜੋ\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = ਕਿਸਮ\n+    .title = ਕਿਸਮ\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = ਵਾਹੋ\n+    .title = ਵਾਹੋ\n+pdfjs-editor-add-signature-image-button = ਚਿੱਤਰ\n+    .title = ਚਿੱਤਰ\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = ਆਪਣੇ ਦਸਤਖ਼ਤ ਨੂੰ ਟਾਈਪ ਕਰੋ\n+    .placeholder = ਆਪਣੇ ਦਸਤਖ਼ਤ ਨੂੰ ਟਾਈਪ ਕਰੋ\n+pdfjs-editor-add-signature-draw-placeholder = ਆਪਣੇ ਦਸਤਖ਼ਤ ਨੂੰ ਵਾਹੋ\n+pdfjs-editor-add-signature-draw-thickness-range-label = ਮੋਟਾਈ\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = ਵਹਾਉਣ ਲਈ ਚੌੜਾਈ: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = ਅੱਪਲੋਡ ਕਰਨ ਲਈ ਫ਼ਾਇਲ ਨੂੰ ਇੱਥੇ ਖਿੱਚੋ\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] ਜਾਂ ਚਿੱਤਰ ਫ਼ਾਇਲਾਂ ਨੂੰ ਚੁਣੋ\n+       *[other] ਜਾਂ ਚਿੱਤਰ ਫ਼ਾਇਲਾਂ ਦੀ ਝਲਕ ਵੇਖੋ\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = ਵਰਣਨ (ਬਦਲਵੀਂ ਲਿਖਤ)\n+pdfjs-editor-add-signature-description-input =\n+    .title = ਵਰਣਨ (ਬਦਲਵੀਂ ਲਿਖਤ)\n+pdfjs-editor-add-signature-description-default-when-drawing = ਦਸਤਖ਼ਤ\n+pdfjs-editor-add-signature-clear-button-label = ਦਸਤਖ਼ਤ ਨੂੰ ਮਿਟਾਓ\n+pdfjs-editor-add-signature-clear-button =\n+    .title = ਦਸਤਖ਼ਤ ਨੂੰ ਮਿਟਾਓ\n+pdfjs-editor-add-signature-save-checkbox = ਦਸਤਖ਼ਤ ਨੂੰ ਸੰਭਾਲੋ\n+pdfjs-editor-add-signature-save-warning-message = ਤੁਸੀਂ ਵੱਧ ਤੋਂ ਵੱਧ 5 ਸੰਭਾਲੇ ਦਸਤਖ਼ਤਾਂ ਦੀ ਹੱਦ ਤੱਕ ਅੱਪੜੇ। ਹੋਰ ਸੰਭਾਲਣ ਲਈ ਇੱਕ ਨੂੰ ਹਟਾਓ।\n+pdfjs-editor-add-signature-image-upload-error-title = ਚਿੱਤਰ ਨੂੰ ਅੱਪਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ\n+pdfjs-editor-add-signature-image-upload-error-description = ਆਪਣੇ ਕਨੈਕਸ਼ਨ ਦੀ ਜਾਂਚ ਕਰੋ ਜਾਂ ਹੋਰ ਚਿੱਤਰ ਨੂੰ ਅਜ਼ਮਾਓ।\n+pdfjs-editor-add-signature-error-close-button = ਬੰਦ ਕਰੋ\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = ਰੱਦ ਕਰੋ\n+pdfjs-editor-add-signature-add-button = ਜੋੜੋ\n+pdfjs-editor-edit-signature-update-button = ਅੱਪਡੇਟ\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = ਸੰਭਾਲੇ ਹੋਏ ਦਸਤਖ਼ਤ ਨੂੰ ਹਟਾਓ\n+pdfjs-editor-delete-signature-button-label1 = ਸੰਭਾਲੇ ਹੋਏ ਦਸਤਖ਼ਤ ਨੂੰ ਹਟਾਓ\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = ਵਰਣਨ ਨੂੰ ਸੋਧੋ\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = ਵਰਣਨ ਨੂੰ ਸੋਧੋ\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fpl\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fpl\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fpl\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fpl\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Bieżąca strona (adres do otwarcia na bieżącej stronie)\n pdfjs-bookmark-button-label = Bieżąca strona\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Otwórz w aplikacji\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Otwórz w aplikacji\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = Nazwa pliku:\n pdfjs-document-properties-file-size = Rozmiar pliku:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } B)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } B)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } B)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Data utworzenia:\n pdfjs-document-properties-modification-date = Data modyfikacji:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -283,6 +288,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [Przypis: { $type }]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -306,12 +314,29 @@\n pdfjs-editor-highlight-button =\n     .title = Wyróżnij\n pdfjs-editor-highlight-button-label = Wyróżnij\n-pdfjs-highlight-floating-button =\n-    .title = Wyróżnij\n pdfjs-highlight-floating-button1 =\n     .title = Wyróżnij\n     .aria-label = Wyróżnij\n pdfjs-highlight-floating-button-label = Wyróżnij\n+pdfjs-editor-signature-button =\n+    .title = Dodaj podpis\n+pdfjs-editor-signature-button-label = Dodaj podpis\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Edytor wyróżnienia\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Edytor rysunku\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Edytor podpisu: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Edytor obrazu\n \n ## Remove button for the various kind of editor.\n \n@@ -323,6 +348,8 @@\n     .title = Usuń obraz\n pdfjs-editor-remove-highlight-button =\n     .title = Usuń wyróżnienie\n+pdfjs-editor-remove-signature-button =\n+    .title = Usuń podpis\n \n ##\n \n@@ -339,6 +366,20 @@\n pdfjs-editor-free-highlight-thickness-input = Grubość\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Zmień grubość podczas wyróżniania elementów innych niż tekst\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Sterowanie podpisami i zachowane podpisy\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Dodaj nowy podpis\n+pdfjs-editor-signature-add-signature-button-label = Dodaj nowy podpis\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Zachowany podpis: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Edytor tekstu\n+    .default-content = Zacznij pisać…\n pdfjs-free-text =\n     .aria-label = Edytor tekstu\n pdfjs-free-text-default-content = Zacznij pisać…\n@@ -349,8 +390,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Tekst alternatywny\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Edytuj tekst alternatywny\n pdfjs-editor-alt-text-edit-button-label = Edytuj tekst alternatywny\n pdfjs-editor-alt-text-dialog-label = Wybierz opcję\n pdfjs-editor-alt-text-dialog-description = Tekst alternatywny pomaga, kiedy ktoś nie może zobaczyć obrazu lub gdy się nie wczytuje.\n@@ -364,6 +406,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Na przykład: „Młody człowiek siada przy stole, aby zjeść posiłek”\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Tekst alternatywny\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -376,6 +421,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Dolny środkowy — zmień rozmiar\n pdfjs-editor-resizer-label-bottom-left = Lewy dolny róg — zmień rozmiar\n pdfjs-editor-resizer-label-middle-left = Lewy środkowy — zmień rozmiar\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Lewy górny róg — zmień rozmiar\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Górny środkowy — zmień rozmiar\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Prawy górny róg — zmień rozmiar\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Prawy środkowy — zmień rozmiar\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Prawy dolny róg — zmień rozmiar\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Dolny środkowy — zmień rozmiar\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Lewy dolny róg — zmień rozmiar\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Lewy środkowy — zmień rozmiar\n \n ## Color picker\n \n@@ -402,3 +463,156 @@\n pdfjs-editor-highlight-show-all-button-label = Pokaż wszystkie\n pdfjs-editor-highlight-show-all-button =\n     .title = Pokaż wszystkie\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Edytuj tekst alternatywny (opis obrazu)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Dodaj tekst alternatywny (opis obrazu)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Napisz tutaj opis…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Krótki opis dla osób, które nie widzą obrazu lub kiedy obraz się nie wczytuje.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Ten tekst alternatywny został utworzony automatycznie i może być niepoprawny.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Więcej informacji\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Automatycznie utwórz tekst alternatywny\n+pdfjs-editor-new-alt-text-not-now-button = Nie teraz\n+pdfjs-editor-new-alt-text-error-title = Nie można automatycznie utworzyć tekstu alternatywnego\n+pdfjs-editor-new-alt-text-error-description = Proszę napisać własny tekst alternatywny lub spróbować ponownie później.\n+pdfjs-editor-new-alt-text-error-close-button = Zamknij\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Pobieranie modelu SI tekstu alternatywnego ({ $downloadedSize } z { $totalSize } MB)\n+    .aria-valuetext = Pobieranie modelu SI tekstu alternatywnego ({ $downloadedSize } z { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Dodano tekst alternatywny\n+pdfjs-editor-new-alt-text-added-button-label = Dodano tekst alternatywny\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Brak tekstu alternatywnego\n+pdfjs-editor-new-alt-text-missing-button-label = Brak tekstu alternatywnego\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Przejrzyj tekst alternatywny\n+pdfjs-editor-new-alt-text-to-review-button-label = Przejrzyj tekst alternatywny\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Utworzono automatycznie: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Ustawienia tekstu alternatywnego obrazów\n+pdfjs-image-alt-text-settings-button-label = Ustawienia tekstu alternatywnego obrazów\n+pdfjs-editor-alt-text-settings-dialog-label = Ustawienia tekstu alternatywnego obrazów\n+pdfjs-editor-alt-text-settings-automatic-title = Automatyczny tekst alternatywny\n+pdfjs-editor-alt-text-settings-create-model-button-label = Automatyczne tworzenie tekstu alternatywnego\n+pdfjs-editor-alt-text-settings-create-model-description = Podpowiada opisy, które mogą pomóc osobom, które nie widzą obrazu lub kiedy obraz się nie wczytuje.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Model SI tekstu alternatywnego ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Działa lokalnie na urządzeniu użytkownika, więc Twoje dane pozostają prywatne. Wymagane do funkcji automatycznego tekstu alternatywnego.\n+pdfjs-editor-alt-text-settings-delete-model-button = Usuń\n+pdfjs-editor-alt-text-settings-download-model-button = Pobierz\n+pdfjs-editor-alt-text-settings-downloading-model-button = Pobieranie…\n+pdfjs-editor-alt-text-settings-editor-title = Edytor tekstu alternatywnego\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Wyświetlanie edytora tekstu alternatywnego od razu po dodaniu obrazu\n+pdfjs-editor-alt-text-settings-show-dialog-description = Pomaga upewnić się, że wszystkie obrazy mają tekst alternatywny.\n+pdfjs-editor-alt-text-settings-close-button = Zamknij\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Usunięto wyróżnienie\n+pdfjs-editor-undo-bar-message-freetext = Usunięto tekst\n+pdfjs-editor-undo-bar-message-ink = Usunięto rysunek\n+pdfjs-editor-undo-bar-message-stamp = Usunięto obraz\n+pdfjs-editor-undo-bar-message-signature = Usunięto podpis\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] Usunięto przypis\n+        [few] Usunięto { $count } przypisy\n+       *[many] Usunięto { $count } przypisów\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Cofnij\n+pdfjs-editor-undo-bar-undo-button-label = Cofnij\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Zamknij\n+pdfjs-editor-undo-bar-close-button-label = Zamknij\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = To okno umożliwia utworzenie podpisu, który można dodać do dokumentu PDF. Można zmienić nazwę (która służy także jako tekst alternatywny) i opcjonalnie zachować podpis do ponownego użycia.\n+pdfjs-editor-add-signature-dialog-title = Dodanie podpisu\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Wpisz\n+    .title = Wpisz\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Narysuj\n+    .title = Narysuj\n+pdfjs-editor-add-signature-image-button = Obraz\n+    .title = Obraz\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Wpisz swój podpis\n+    .placeholder = Wpisz swój podpis\n+pdfjs-editor-add-signature-draw-placeholder = Narysuj swój podpis\n+pdfjs-editor-add-signature-draw-thickness-range-label = Grubość\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Grubość kreski: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Przeciągnij tutaj plik, aby go przesłać\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Lub wybierz plik obrazu\n+       *[other] Lub przeglądaj pliki obrazów\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Opis (tekst alternatywny)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Opis (tekst alternatywny)\n+pdfjs-editor-add-signature-description-default-when-drawing = Podpis\n+pdfjs-editor-add-signature-clear-button-label = Usuń podpis\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Usuń podpis\n+pdfjs-editor-add-signature-save-checkbox = Zachowaj podpis\n+pdfjs-editor-add-signature-save-warning-message = Osiągnięto ograniczenie wynoszące pięć zachowanych podpisów. Usuń jeden, aby zachować więcej.\n+pdfjs-editor-add-signature-image-upload-error-title = Nie można przesłać obrazu\n+pdfjs-editor-add-signature-image-upload-error-description = Sprawdź połączenie sieciowe lub spróbuj przesłać inny obraz.\n+pdfjs-editor-add-signature-error-close-button = Zamknij\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Anuluj\n+pdfjs-editor-add-signature-add-button = Dodaj\n+pdfjs-editor-edit-signature-update-button = Aktualizuj\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Usuń zachowany podpis\n+pdfjs-editor-delete-signature-button-label1 = Usuń zachowany podpis\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Edytuj opis\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Edycja opisu\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fpt-BR\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fpt-BR\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fpt-BR\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fpt-BR\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -105,6 +105,14 @@\n pdfjs-document-properties-file-name = Nome do arquivo:\n pdfjs-document-properties-file-size = Tamanho do arquivo:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bytes)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)\n@@ -119,6 +127,9 @@\n pdfjs-document-properties-creation-date = Data da criação:\n pdfjs-document-properties-modification-date = Data da modificação:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -170,8 +181,8 @@\n pdfjs-toggle-sidebar-button =\n     .title = Exibir\u002Focultar painel lateral\n pdfjs-toggle-sidebar-notification-button =\n-    .title = Exibir\u002Focultar painel (documento contém estrutura\u002Fanexos\u002Fcamadas)\n-pdfjs-toggle-sidebar-button-label = Exibir\u002Focultar painel\n+    .title = Exibir\u002Focultar painel lateral (documento contém estrutura\u002Fanexos\u002Fcamadas)\n+pdfjs-toggle-sidebar-button-label = Exibir\u002Focultar painel lateral\n pdfjs-document-outline-button =\n     .title = Mostrar estrutura do documento (duplo-clique expande\u002Frecolhe todos os itens)\n pdfjs-document-outline-button-label = Estrutura do documento\n@@ -275,6 +286,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [Anotação { $type }]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -298,12 +312,29 @@\n pdfjs-editor-highlight-button =\n     .title = Destaque\n pdfjs-editor-highlight-button-label = Destaque\n-pdfjs-highlight-floating-button =\n-    .title = Destaque\n pdfjs-highlight-floating-button1 =\n     .title = Destaque\n     .aria-label = Destaque\n pdfjs-highlight-floating-button-label = Destaque\n+pdfjs-editor-signature-button =\n+    .title = Adicionar assinatura\n+pdfjs-editor-signature-button-label = Adicionar assinatura\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Editor de destaque\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Editor de desenho\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Editor de assinatura: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Editor de imagem\n \n ## Remove button for the various kind of editor.\n \n@@ -315,6 +346,8 @@\n     .title = Remover imagem\n pdfjs-editor-remove-highlight-button =\n     .title = Remover destaque\n+pdfjs-editor-remove-signature-button =\n+    .title = Remover assinatura\n \n ##\n \n@@ -331,6 +364,20 @@\n pdfjs-editor-free-highlight-thickness-input = Espessura\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Mudar espessura ao destacar itens que não são texto\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Controles de assinatura e assinaturas salvas\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Adicionar nova assinatura\n+pdfjs-editor-signature-add-signature-button-label = Adicionar nova assinatura\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Assinatura salva: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Editor de texto\n+    .default-content = Comece a digitar…\n pdfjs-free-text =\n     .aria-label = Editor de texto\n pdfjs-free-text-default-content = Comece digitando…\n@@ -341,8 +388,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Texto alternativo\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Editar texto alternativo\n pdfjs-editor-alt-text-edit-button-label = Editar texto alternativo\n pdfjs-editor-alt-text-dialog-label = Escolha uma opção\n pdfjs-editor-alt-text-dialog-description = O texto alternativo ajuda quando uma imagem não aparece ou não é carregada.\n@@ -356,6 +404,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Por exemplo, “Um jovem senta-se à mesa para comer uma refeição”\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Texto alternativo\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -368,6 +419,22 @@\n pdfjs-editor-resizer-label-bottom-middle = No centro da base — redimensionar\n pdfjs-editor-resizer-label-bottom-left = Canto inferior esquerdo — redimensionar\n pdfjs-editor-resizer-label-middle-left = No meio à esquerda — redimensionar\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Canto superior esquerdo — redimensionar\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = No centro do topo — redimensionar\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Canto superior direito — redimensionar\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = No meio à direita — redimensionar\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Canto inferior direito — redimensionar\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = No centro da base — redimensionar\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Canto inferior esquerdo — redimensionar\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = No meio à esquerda — redimensionar\n \n ## Color picker\n \n@@ -394,3 +461,155 @@\n pdfjs-editor-highlight-show-all-button-label = Mostrar todos\n pdfjs-editor-highlight-show-all-button =\n     .title = Mostrar todos\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Editar texto alternativo (descrição da imagem)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Adicionar texto alternativo (descrição da imagem)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Você pode escrever uma descrição aqui…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Descrição curta para pessoas que não conseguem ver a imagem ou quando a imagem não é carregada.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Este texto alternativo foi criado automaticamente, pode não estar correto.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Saiba mais\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Criar texto alternativo automaticamente\n+pdfjs-editor-new-alt-text-not-now-button = Agora não\n+pdfjs-editor-new-alt-text-error-title = Não foi possível criar texto alternativo automaticamente\n+pdfjs-editor-new-alt-text-error-description = Escreva seu próprio texto alternativo ou tente novamente mais tarde.\n+pdfjs-editor-new-alt-text-error-close-button = Fechar\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Baixando modelo de inteligência artificial de texto alternativo ({ $downloadedSize } de { $totalSize } MB)\n+    .aria-valuetext = Baixando modelo de inteligência artificial de texto alternativo ({ $downloadedSize } de { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Texto alternativo adicionado\n+pdfjs-editor-new-alt-text-added-button-label = Texto alternativo adicionado\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Sem texto alternativo\n+pdfjs-editor-new-alt-text-missing-button-label = Sem texto alternativo\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Revisar texto alternativo\n+pdfjs-editor-new-alt-text-to-review-button-label = Revisar texto alternativo\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Criado automaticamente: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Configurações de texto alternativo de imagens\n+pdfjs-image-alt-text-settings-button-label = Configurações de texto alternativo de imagens\n+pdfjs-editor-alt-text-settings-dialog-label = Configurações de texto alternativo de imagens\n+pdfjs-editor-alt-text-settings-automatic-title = Texto alternativo automático\n+pdfjs-editor-alt-text-settings-create-model-button-label = Criar texto alternativo automaticamente\n+pdfjs-editor-alt-text-settings-create-model-description = Sugere uma descrição para ajudar pessoas que não conseguem ver a imagem ou quando a imagem não é carregada.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Modelo de inteligência artificial de texto alternativo ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Funciona localmente no seu dispositivo para que seus dados permaneçam privativos. Necessário para texto alternativo automático.\n+pdfjs-editor-alt-text-settings-delete-model-button = Excluir\n+pdfjs-editor-alt-text-settings-download-model-button = Baixar\n+pdfjs-editor-alt-text-settings-downloading-model-button = Baixando…\n+pdfjs-editor-alt-text-settings-editor-title = Editor de texto alternativo\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Mostrar o editor de texto alternativo imediatamente ao adicionar uma imagem\n+pdfjs-editor-alt-text-settings-show-dialog-description = Ajuda a assegurar que todas as suas imagens tenham texto alternativo.\n+pdfjs-editor-alt-text-settings-close-button = Fechar\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Destaque removido\n+pdfjs-editor-undo-bar-message-freetext = Texto removido\n+pdfjs-editor-undo-bar-message-ink = Desenho removido\n+pdfjs-editor-undo-bar-message-stamp = Imagem removida\n+pdfjs-editor-undo-bar-message-signature = Assinatura removida\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } anotação removida\n+       *[other] { $count } anotações removidas\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Desfazer\n+pdfjs-editor-undo-bar-undo-button-label = Desfazer\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Fechar\n+pdfjs-editor-undo-bar-close-button-label = Fechar\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Esta janela permite ao usuário criar uma assinatura para adicionar a um documento PDF. O usuário pode editar o nome (que também serve como texto alternativo) e, opcionalmente, salvar a assinatura usar novamente.\n+pdfjs-editor-add-signature-dialog-title = Adicionar uma assinatura\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Digitar\n+    .title = Digitar\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Desenhar\n+    .title = Desenhar\n+pdfjs-editor-add-signature-image-button = Imagem\n+    .title = Imagem\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Digite sua assinatura\n+    .placeholder = Digite sua assinatura\n+pdfjs-editor-add-signature-draw-placeholder = Desenhe sua assinatura\n+pdfjs-editor-add-signature-draw-thickness-range-label = Espessura\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Espessura do desenho: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Arraste um arquivo aqui para enviar\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Ou escolha arquivos de imagem\n+       *[other] Ou escolha arquivos de imagem\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Descrição (texto alternativo)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Descrição (texto alternativo)\n+pdfjs-editor-add-signature-description-default-when-drawing = Assinatura\n+pdfjs-editor-add-signature-clear-button-label = Limpar assinatura\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Limpar assinatura\n+pdfjs-editor-add-signature-save-checkbox = Salvar assinatura\n+pdfjs-editor-add-signature-save-warning-message = Você atingiu o limite de 5 assinaturas salvas. Remova uma para salvar mais.\n+pdfjs-editor-add-signature-image-upload-error-title = Não foi possível enviar a imagem\n+pdfjs-editor-add-signature-image-upload-error-description = Verifique sua conexão de rede ou tente outra imagem.\n+pdfjs-editor-add-signature-error-close-button = Fechar\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Cancelar\n+pdfjs-editor-add-signature-add-button = Adicionar\n+pdfjs-editor-edit-signature-update-button = Atualizar\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Remover assinatura salva\n+pdfjs-editor-delete-signature-button-label1 = Remover assinatura salva\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Mudar descrição\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Mudar descrição\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fpt-PT\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fpt-PT\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fpt-PT\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fpt-PT\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Página atual (ver URL da página atual)\n pdfjs-bookmark-button-label = Pagina atual\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Abrir na aplicação\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Abrir na aplicação\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = Nome do ficheiro:\n pdfjs-document-properties-file-size = Tamanho do ficheiro:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bytes)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Data de criação:\n pdfjs-document-properties-modification-date = Data de modificação:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -281,6 +286,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [Anotação { $type }]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -304,12 +312,29 @@\n pdfjs-editor-highlight-button =\n     .title = Destaque\n pdfjs-editor-highlight-button-label = Destaque\n-pdfjs-highlight-floating-button =\n-    .title = Destaque\n pdfjs-highlight-floating-button1 =\n     .title = Realçar\n     .aria-label = Realçar\n pdfjs-highlight-floating-button-label = Realçar\n+pdfjs-editor-signature-button =\n+    .title = Adicionar assinatura\n+pdfjs-editor-signature-button-label = Adicionar assinatura\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Editor de realce\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Editor de desenho\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Editor de assinatura: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Editor de imagem\n \n ## Remove button for the various kind of editor.\n \n@@ -321,6 +346,8 @@\n     .title = Remover imagem\n pdfjs-editor-remove-highlight-button =\n     .title = Remover destaque\n+pdfjs-editor-remove-signature-button =\n+    .title = Remover assinatura\n \n ##\n \n@@ -337,6 +364,20 @@\n pdfjs-editor-free-highlight-thickness-input = Espessura\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Alterar espessura quando destacar itens que não sejam texto\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Controlos de assinatura e assinaturas guardadas\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Adicionar nova assinatura\n+pdfjs-editor-signature-add-signature-button-label = Adicionar nova assinatura\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Assinatura guardada: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Editor de texto\n+    .default-content = Comece a escrever…\n pdfjs-free-text =\n     .aria-label = Editor de texto\n pdfjs-free-text-default-content = Começar a digitar…\n@@ -347,8 +388,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Texto alternativo\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Editar texto alternativo\n pdfjs-editor-alt-text-edit-button-label = Editar texto alternativo\n pdfjs-editor-alt-text-dialog-label = Escolher uma opção\n pdfjs-editor-alt-text-dialog-description = O texto alternativo (texto alternativo) ajuda quando as pessoas não conseguem ver a imagem ou quando a mesma não é carregada.\n@@ -362,6 +404,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Por exemplo, “Um jovem senta-se à mesa para comer uma refeição”\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Texto alternativo\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -374,6 +419,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Inferior ao centro — redimensionar\n pdfjs-editor-resizer-label-bottom-left = Canto inferior esquerdo — redimensionar\n pdfjs-editor-resizer-label-middle-left = Centro à esquerda — redimensionar\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Canto superior esquerdo — redimensionar\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Superior ao centro — redimensionar\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Canto superior direito — redimensionar\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Centro à direita — redimensionar\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Canto inferior direito — redimensionar\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Inferior ao centro — redimensionar\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Canto inferior esquerdo — redimensionar\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Centro à esquerda — redimensionar\n \n ## Color picker\n \n@@ -400,3 +461,155 @@\n pdfjs-editor-highlight-show-all-button-label = Mostrar tudo\n pdfjs-editor-highlight-show-all-button =\n     .title = Mostrar tudo\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Editar texto alternativo (descrição da imagem)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Adicionar texto alternativo (descrição da imagem)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Escreva a sua descrição aqui…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Descrição curta para as pessoas que não podem visualizar a imagem ou quando a imagem não carrega.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Este texto alternativo foi criado automaticamente e pode ser impreciso.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Saber mais\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Criar texto alternativo automaticamente\n+pdfjs-editor-new-alt-text-not-now-button = Agora não\n+pdfjs-editor-new-alt-text-error-title = Não foi possível criar o texto alternativo automaticamente\n+pdfjs-editor-new-alt-text-error-description = Escreva o seu próprio texto alternativo ou tente novamente mais tarde.\n+pdfjs-editor-new-alt-text-error-close-button = Fechar\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = A transferir o modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB)\n+    .aria-valuetext = A transferir o modelo de IA de texto alternativo ({ $downloadedSize } de { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Texto alternativo adicionado\n+pdfjs-editor-new-alt-text-added-button-label = Texto alternativo adicionado\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Texto alternativo em falta\n+pdfjs-editor-new-alt-text-missing-button-label = Texto alternativo em falta\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Rever texto alternativo\n+pdfjs-editor-new-alt-text-to-review-button-label = Rever texto alternativo\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Criado automaticamente: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Definições de texto alternativo da imagem\n+pdfjs-image-alt-text-settings-button-label = Definições de texto alternativo da imagem\n+pdfjs-editor-alt-text-settings-dialog-label = Definições de texto alternativo das imagens\n+pdfjs-editor-alt-text-settings-automatic-title = Texto alternativo automático\n+pdfjs-editor-alt-text-settings-create-model-button-label = Criar texto alternativo automaticamente\n+pdfjs-editor-alt-text-settings-create-model-description = Sugere descrições para ajudar as pessoas que não podem visualizar a imagem ou quando a imagem não carrega.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Modelo de IA de texto alternativo ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = É executado localmente no seu dispositivo para que os seus dados se mantenham privados. É necessário para o texto alternativo automático.\n+pdfjs-editor-alt-text-settings-delete-model-button = Eliminar\n+pdfjs-editor-alt-text-settings-download-model-button = Transferir\n+pdfjs-editor-alt-text-settings-downloading-model-button = A transferir…\n+pdfjs-editor-alt-text-settings-editor-title = Editor de texto alternativo\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Mostrar editor de texto alternativo imediatamente ao adicionar uma imagem\n+pdfjs-editor-alt-text-settings-show-dialog-description = Ajuda a garantir que todas as suas imagens tenham um texto alternativo.\n+pdfjs-editor-alt-text-settings-close-button = Fechar\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Destaque removido\n+pdfjs-editor-undo-bar-message-freetext = Texto removido\n+pdfjs-editor-undo-bar-message-ink = Desenho removido\n+pdfjs-editor-undo-bar-message-stamp = Imagem removida\n+pdfjs-editor-undo-bar-message-signature = Assinatura removida\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } anotação removida\n+       *[other] { $count } anotações removidas\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Anular\n+pdfjs-editor-undo-bar-undo-button-label = Anular\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Fechar\n+pdfjs-editor-undo-bar-close-button-label = Fechar\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Este modo permite ao utilizador criar uma assinatura para adicionar a um documento PDF. O utilizador pode editar o nome (que também funciona como texto alternativo) e, opcionalmente, guardar a assinatura para utilizações frequentes.\n+pdfjs-editor-add-signature-dialog-title = Adicionar uma assinatura\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Digitar\n+    .title = Digitar\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Desenhar\n+    .title = Desenhar\n+pdfjs-editor-add-signature-image-button = Imagem\n+    .title = Imagem\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Digite a sua assinatura\n+    .placeholder = Digite a sua assinatura\n+pdfjs-editor-add-signature-draw-placeholder = Desenhe a sua assinatura\n+pdfjs-editor-add-signature-draw-thickness-range-label = Espessura\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Espessura do desenho: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Arraste um ficheiro aqui para carregar\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Ou escolha ficheiros de imagem\n+       *[other] Ou explore ficheiros de imagem\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Descrição (texto alternativo)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Descrição (texto alternativo)\n+pdfjs-editor-add-signature-description-default-when-drawing = Assinatura\n+pdfjs-editor-add-signature-clear-button-label = Limpar assinatura\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Limpar assinatura\n+pdfjs-editor-add-signature-save-checkbox = Guardar assinatura\n+pdfjs-editor-add-signature-save-warning-message = Atingiu o limite de 5 assinaturas guardadas. Remova uma para guardar mais.\n+pdfjs-editor-add-signature-image-upload-error-title = Não foi possível carregar a imagem\n+pdfjs-editor-add-signature-image-upload-error-description = Verifique a sua ligação à rede ou tente outra imagem.\n+pdfjs-editor-add-signature-error-close-button = Fechar\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Cancelar\n+pdfjs-editor-add-signature-add-button = Adicionar\n+pdfjs-editor-edit-signature-update-button = Atualizar\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Remover assinatura guardada\n+pdfjs-editor-delete-signature-button-label1 = Remover assinatura guardada\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Editar descrição\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Editar descrição\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Frm\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Frm\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Frm\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Frm\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -105,6 +105,14 @@\n pdfjs-document-properties-file-name = Num da la datoteca:\n pdfjs-document-properties-file-size = Grondezza da la datoteca:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bytes)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)\n@@ -119,6 +127,9 @@\n pdfjs-document-properties-creation-date = Data da creaziun:\n pdfjs-document-properties-modification-date = Data da modificaziun:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date } { $time }\n@@ -275,6 +286,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [Annotaziun da { $type }]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -298,12 +312,29 @@\n pdfjs-editor-highlight-button =\n     .title = Marcar\n pdfjs-editor-highlight-button-label = Marcar\n-pdfjs-highlight-floating-button =\n-    .title = Relevar\n pdfjs-highlight-floating-button1 =\n     .title = Marcar\n     .aria-label = Marcar\n pdfjs-highlight-floating-button-label = Marcar\n+pdfjs-editor-signature-button =\n+    .title = Agiuntar ina signatura\n+pdfjs-editor-signature-button-label = Agiuntar ina signatura\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Editur per relevar\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Editur per dissegnar\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Editur da signatura: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Editur per maletgs\n \n ## Remove button for the various kind of editor.\n \n@@ -315,6 +346,8 @@\n     .title = Allontanar la grafica\n pdfjs-editor-remove-highlight-button =\n     .title = Allontanar l'emfasa\n+pdfjs-editor-remove-signature-button =\n+    .title = Allontanar la signatura\n \n ##\n \n@@ -331,6 +364,20 @@\n pdfjs-editor-free-highlight-thickness-input = Grossezza\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Midar la grossezza cun relevar elements betg textuals\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Controllas da signatura e signaturas memorisadas\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Agiuntar ina nova signatura\n+pdfjs-editor-signature-add-signature-button-label = Agiuntar ina nova signatura\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Signatura memorisada: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Editur da text\n+    .default-content = Cumenza a tippar…\n pdfjs-free-text =\n     .aria-label = Editur da text\n pdfjs-free-text-default-content = Cumenzar a tippar…\n@@ -341,8 +388,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Text alternativ\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Modifitgar il text alternativ\n pdfjs-editor-alt-text-edit-button-label = Modifitgar il text alternativ\n pdfjs-editor-alt-text-dialog-label = Tscherner ina opziun\n pdfjs-editor-alt-text-dialog-description = Il text alternativ (alt text) gida en cas che persunas na vesan betg il maletg u sch'i na reussescha betg d'al chargiar.\n@@ -356,6 +404,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Per exempel: «In um giuven sesa a maisa per mangiar in past»\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Text alternativ\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -368,6 +419,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Sutvart amez — redimensiunar\n pdfjs-editor-resizer-label-bottom-left = Chantun sut a sanestra — redimensiunar\n pdfjs-editor-resizer-label-middle-left = Vart sanestra amez — redimensiunar\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Chantun sura a sanestra — redimensiunar\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Sura amez — redimensiunar\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Chantun sura a dretga — redimensiunar\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Da vart dretga amez — redimensiunar\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Chantun sut a dretga — redimensiunar\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Sutvart amez — redimensiunar\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Chantun sut a sanestra — redimensiunar\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Vart sanestra amez — redimensiunar\n \n ## Color picker\n \n@@ -394,3 +461,155 @@\n pdfjs-editor-highlight-show-all-button-label = Mussar tut\n pdfjs-editor-highlight-show-all-button =\n     .title = Mussar tut\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Modifitgar il text alternativ (descripziun dal maletg)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Agiuntar in text alternativ (descripziun dal maletg)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Scriva qua tia descripziun…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Curta descripziun per persunas che na vesan betg il maletg u per cass en ils quals il maletg na vegn betg chargià.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Quest text alternativ è vegnì creà automaticamain ed è eventualmain nunprecis.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Ulteriuras infurmaziuns\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Crear automaticamain il text alternativ\n+pdfjs-editor-new-alt-text-not-now-button = Betg ussa\n+pdfjs-editor-new-alt-text-error-title = I n’è betg reussì da crear automaticamain il text alternativ\n+pdfjs-editor-new-alt-text-error-description = Scriva per plaschair tes agen text alternativ u emprova pli tard anc ina giada.\n+pdfjs-editor-new-alt-text-error-close-button = Serrar\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Telechargiar il model IA da text alternativ ({ $downloadedSize } da { $totalSize } MB)\n+    .aria-valuetext = Telechargiar il model IA da text alternativ ({ $downloadedSize } da { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Agiuntà text alternativ\n+pdfjs-editor-new-alt-text-added-button-label = Text alternativ agiuntà\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Text alternativ manca\n+pdfjs-editor-new-alt-text-missing-button-label = Text alternativ manca\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Repassar il text alternativ\n+pdfjs-editor-new-alt-text-to-review-button-label = Repassar il text alternativ\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Creà automaticamain: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Parameters dal text alternativ da maletgs\n+pdfjs-image-alt-text-settings-button-label = Parameters dal text alternativ da maletgs\n+pdfjs-editor-alt-text-settings-dialog-label = Parameters dal text alternativ da maletgs\n+pdfjs-editor-alt-text-settings-automatic-title = Text alternativ automatic\n+pdfjs-editor-alt-text-settings-create-model-button-label = Crear automaticamain text alternativ\n+pdfjs-editor-alt-text-settings-create-model-description = Propona descripziuns per gidar a persunas che na vesan betg il maletg u per cass en ils quals il maletg na vegn betg chargià.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Model IA da text alternativ ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Vegn exequì localmain sin tes apparat per che tias datas restian privatas. Necessari per text alternativ automatic.\n+pdfjs-editor-alt-text-settings-delete-model-button = Stizzar\n+pdfjs-editor-alt-text-settings-download-model-button = Telechargiar\n+pdfjs-editor-alt-text-settings-downloading-model-button = Telechargiar…\n+pdfjs-editor-alt-text-settings-editor-title = Editur per text alternativ\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Mussar l’editur per text alternativ directamain cun agiuntar in maletg\n+pdfjs-editor-alt-text-settings-show-dialog-description = Ta gida a garantir che tut tes maletgs hajan in text alternativ.\n+pdfjs-editor-alt-text-settings-close-button = Serrar\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Allontanà la marcaziun\n+pdfjs-editor-undo-bar-message-freetext = Allontanà il text\n+pdfjs-editor-undo-bar-message-ink = Allontanà il dissegn\n+pdfjs-editor-undo-bar-message-stamp = Allontanà il maletg\n+pdfjs-editor-undo-bar-message-signature = Allontanà la signatura\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } annotaziun allontanada\n+       *[other] { $count } annotaziuns allontanadas\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Revocar\n+pdfjs-editor-undo-bar-undo-button-label = Revocar\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Serrar\n+pdfjs-editor-undo-bar-close-button-label = Serrar\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Questa fanestra permetta a l’utilisader da crear ina signatura per l’agiuntar ad in document PDF. L’utilisader po modifitgar il num (che serva era sco text alternativ) e memorisar opziunalmain la signatura per l’utilisar anc ina giada en l’avegnir.\n+pdfjs-editor-add-signature-dialog-title = Agiuntar ina signatura\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Tippar\n+    .title = Tippar\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Dissegnar\n+    .title = Dissegnar\n+pdfjs-editor-add-signature-image-button = Maletg\n+    .title = Maletg\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Tippa tia signatura\n+    .placeholder = Tippa tia signatura\n+pdfjs-editor-add-signature-draw-placeholder = Dissegna tia signatura\n+pdfjs-editor-add-signature-draw-thickness-range-label = Grossezza\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Grossezza dal stritg: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Trair na qua ina datoteca per la transferir\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] U tscherner datotecas da maletg\n+       *[other] U tscherner datotecas da maletg\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Descripziun (text alternativ)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Descripziun (text alternativ)\n+pdfjs-editor-add-signature-description-default-when-drawing = Signatura\n+pdfjs-editor-add-signature-clear-button-label = Stizzar la signatura\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Stizzar la signatura\n+pdfjs-editor-add-signature-save-checkbox = Memorisar la signatura\n+pdfjs-editor-add-signature-save-warning-message = Ti has cuntanschì il dumber maximal da 5 signaturas memorisadas. Allontanar ina per memorisar in’autra.\n+pdfjs-editor-add-signature-image-upload-error-title = Impussibel da transferir il maletg\n+pdfjs-editor-add-signature-image-upload-error-description = Controllescha tia connexiun cun la rait u emprova cun in’auter maletg.\n+pdfjs-editor-add-signature-error-close-button = Serrar\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Interrumper\n+pdfjs-editor-add-signature-add-button = Agiuntar\n+pdfjs-editor-edit-signature-update-button = Actualisar\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Allontanar la signatura memorisada\n+pdfjs-editor-delete-signature-button-label1 = Allontanar la signatura memorisada\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Modifitgar la descripziun\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Modifitgar la descripziun\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fro\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fro\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fro\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fro\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -146,7 +146,7 @@\n # Variables:\n #   $progress (Number) - percent value\n pdfjs-print-progress-percent = { $progress }%\n-pdfjs-print-progress-close-button = Renunță\n+pdfjs-print-progress-close-button = Anulează\n pdfjs-printing-not-supported = Avertisment: Tipărirea nu este suportată în totalitate de acest browser.\n pdfjs-printing-not-ready = Avertisment: PDF-ul nu este încărcat complet pentru tipărire.\n \n@@ -237,15 +237,66 @@\n pdfjs-password-label = Introdu parola pentru a deschide acest fișier PDF.\n pdfjs-password-invalid = Parolă nevalidă. Te rugăm să încerci din nou.\n pdfjs-password-ok-button = OK\n-pdfjs-password-cancel-button = Renunță\n+pdfjs-password-cancel-button = Anulează\n pdfjs-web-fonts-disabled = Fonturile web sunt dezactivate: nu se pot folosi fonturile PDF încorporate.\n \n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n+pdfjs-editor-alt-text-cancel-button = Anulează\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fru\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fru\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fru\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fru\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Текущая страница (просмотр URL-адреса с текущей страницы)\n pdfjs-bookmark-button-label = Текущая страница\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Открыть в приложении\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Открыть в программе\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = Имя файла:\n pdfjs-document-properties-file-size = Размер файла:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } КБ ({ $b } байт)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } МБ ({ $b } байт)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } КБ ({ $size_b } байт)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Дата создания:\n pdfjs-document-properties-modification-date = Дата изменения:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -283,6 +288,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [Аннотация { $type }]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -306,12 +314,29 @@\n pdfjs-editor-highlight-button =\n     .title = Выделение\n pdfjs-editor-highlight-button-label = Выделение\n-pdfjs-highlight-floating-button =\n-    .title = Выделение\n pdfjs-highlight-floating-button1 =\n     .title = Выделение\n     .aria-label = Выделение\n pdfjs-highlight-floating-button-label = Выделение\n+pdfjs-editor-signature-button =\n+    .title = Добавить подпись\n+pdfjs-editor-signature-button-label = Добавить подпись\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Редактор выделения\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Редактор изображений\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Редактор подписи: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Редактор изображений\n \n ## Remove button for the various kind of editor.\n \n@@ -323,6 +348,8 @@\n     .title = Удалить изображение\n pdfjs-editor-remove-highlight-button =\n     .title = Удалить выделение\n+pdfjs-editor-remove-signature-button =\n+    .title = Удалить подпись\n \n ##\n \n@@ -339,6 +366,20 @@\n pdfjs-editor-free-highlight-thickness-input = Толщина\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Изменить толщину при выделении элементов, кроме текста\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Управление подписями и сохраненные подписи\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Добавить новую подпись\n+pdfjs-editor-signature-add-signature-button-label = Добавить новую подпись\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Сохранённая подпись: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Текстовый редактор\n+    .default-content = Начните ввод...\n pdfjs-free-text =\n     .aria-label = Текстовый редактор\n pdfjs-free-text-default-content = Начните вводить…\n@@ -349,8 +390,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Альтернативный текст\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Изменить альтернативный текст\n pdfjs-editor-alt-text-edit-button-label = Изменить альтернативный текст\n pdfjs-editor-alt-text-dialog-label = Выберите вариант\n pdfjs-editor-alt-text-dialog-description = Альтернативный текст помогает, когда люди не видят изображение или оно не загружается.\n@@ -364,6 +406,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Например: «Молодой человек садится за стол, чтобы поесть»\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Альтернативный текст\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -376,6 +421,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Внизу посередине — изменить размер\n pdfjs-editor-resizer-label-bottom-left = Нижний левый угол — изменить размер\n pdfjs-editor-resizer-label-middle-left = В центре слева — изменить размер\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Левый верхний угол — изменить размер\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Вверху посередине — изменить размер\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Верхний правый угол — изменить размер\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = В центре справа — изменить размер\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Нижний правый угол — изменить размер\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Внизу посередине — изменить размер\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Нижний левый угол — изменить размер\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = В центре слева — изменить размер\n \n ## Color picker\n \n@@ -402,3 +463,156 @@\n pdfjs-editor-highlight-show-all-button-label = Показать все\n pdfjs-editor-highlight-show-all-button =\n     .title = Показать все\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Изменить альтернативный текст (описание изображения)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Добавить альтернативный текст (описание изображения)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Напишите здесь своё описание…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Короткое описание для людей, которые не видят изображение, или если изображение не загружается.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Этот альтернативный текст был создан автоматически и может быть неточным.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Подробнее\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Автоматически создавать альтернативный текст\n+pdfjs-editor-new-alt-text-not-now-button = Не сейчас\n+pdfjs-editor-new-alt-text-error-title = Не удалось автоматически создать альтернативный текст\n+pdfjs-editor-new-alt-text-error-description = Пожалуйста, напишите свой альтернативный текст или попробуйте ещё раз позже.\n+pdfjs-editor-new-alt-text-error-close-button = Закрыть\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Загрузка модели ИИ для альтернативного текста ({ $downloadedSize } из { $totalSize } МБ)\n+    .aria-valuetext = Загрузка модели ИИ для альтернативного текста ({ $downloadedSize } из { $totalSize } МБ)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Альтернативный текст добавлен\n+pdfjs-editor-new-alt-text-added-button-label = Альтернативный текст добавлен\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Отсутствует альтернативный текст\n+pdfjs-editor-new-alt-text-missing-button-label = Отсутствует альтернативный текст\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Оценить альтернативный текст\n+pdfjs-editor-new-alt-text-to-review-button-label = Оценить альтернативный текст\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Создано автоматически: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Настройки альтернативного текста для изображения\n+pdfjs-image-alt-text-settings-button-label = Настройки альтернативного текста для изображения\n+pdfjs-editor-alt-text-settings-dialog-label = Настройки альтернативного текста для изображения\n+pdfjs-editor-alt-text-settings-automatic-title = Автоматический альтернативный текст\n+pdfjs-editor-alt-text-settings-create-model-button-label = Автоматически создавать альтернативный текст\n+pdfjs-editor-alt-text-settings-create-model-description = Предлагает описания, чтобы помочь людям, которые не видят изображение, или если изображение не загружается.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = ИИ-модель альтернативного текста ({ $totalSize } МБ)\n+pdfjs-editor-alt-text-settings-ai-model-description = Запускается локально на вашем устройстве, поэтому ваши данные остаются конфиденциальными. Требуется для автоматического альтернативного текста.\n+pdfjs-editor-alt-text-settings-delete-model-button = Удалить\n+pdfjs-editor-alt-text-settings-download-model-button = Загрузить\n+pdfjs-editor-alt-text-settings-downloading-model-button = Загрузка…\n+pdfjs-editor-alt-text-settings-editor-title = Редактор альтернативного текста\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Сразу показывать редактор альтернативного текста при добавлении изображения\n+pdfjs-editor-alt-text-settings-show-dialog-description = Помогает вам убедиться, что все ваши изображения имеют альтернативный текст.\n+pdfjs-editor-alt-text-settings-close-button = Закрыть\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Выделение удалено\n+pdfjs-editor-undo-bar-message-freetext = Текст удалён\n+pdfjs-editor-undo-bar-message-ink = Рисунок удалён\n+pdfjs-editor-undo-bar-message-stamp = Изображение удалено\n+pdfjs-editor-undo-bar-message-signature = Подпись удалена\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } аннотация удалена\n+        [few] { $count } аннотации удалены\n+       *[many] { $count } аннотаций удалены\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Отменить\n+pdfjs-editor-undo-bar-undo-button-label = Отменить\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Закрыть\n+pdfjs-editor-undo-bar-close-button-label = Закрыть\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Это окно позволяет пользователю создать подпись для добавления в PDF-документ. Пользователь может отредактировать имя (которое также используется в качестве альтернативного текста) и, по желанию, сохранить подпись для повторного использования.\n+pdfjs-editor-add-signature-dialog-title = Добавить подпись\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Ввод\n+    .title = Ввод\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Рисовать\n+    .title = Рисовать\n+pdfjs-editor-add-signature-image-button = Изображение\n+    .title = Изображение\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Введите свою подпись\n+    .placeholder = Введите свою подпись\n+pdfjs-editor-add-signature-draw-placeholder = Нарисуйте свою подпись\n+pdfjs-editor-add-signature-draw-thickness-range-label = Толщина\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Толщина рисунка: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Перетащите сюда файл для загрузки\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Или просмотрите файлы изображений\n+       *[other] Или просмотрите файлы изображений\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Описание (альтернативный текст)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Описание (альтернативный текст)\n+pdfjs-editor-add-signature-description-default-when-drawing = Подпись\n+pdfjs-editor-add-signature-clear-button-label = Удалить подпись\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Удалить подпись\n+pdfjs-editor-add-signature-save-checkbox = Сохранить подпись\n+pdfjs-editor-add-signature-save-warning-message = Вы достигли лимита в 5 сохранённых подписей. Удалите одну, чтобы сохранить другие.\n+pdfjs-editor-add-signature-image-upload-error-title = Не удалось загрузить изображение\n+pdfjs-editor-add-signature-image-upload-error-description = Проверьте подключение к сети или попробуйте другое изображение.\n+pdfjs-editor-add-signature-error-close-button = Закрыть\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Отмена\n+pdfjs-editor-add-signature-add-button = Добавить\n+pdfjs-editor-edit-signature-update-button = Обновить\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Удалить сохранённую подпись\n+pdfjs-editor-delete-signature-button-label1 = Удалить сохранённую подпись\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Изменить описание\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Изменить описание\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsat\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsat\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsat\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsat\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = ᱱᱤᱛᱚᱜᱟᱜ ᱥᱟᱦᱴᱟ (ᱱᱤᱛᱚᱜᱟᱜ ᱥᱟᱦᱴᱟ ᱠᱷᱚᱱ URL ᱫᱮᱠᱷᱟᱣ ᱢᱮ)\n pdfjs-bookmark-button-label = ᱱᱤᱛᱚᱜᱟᱜ ᱥᱟᱦᱴᱟ\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = ᱮᱯ ᱨᱮ ᱡᱷᱤᱡᱽ ᱢᱮ\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = ᱮᱯ ᱨᱮ ᱡᱷᱤᱡᱽ ᱢᱮ\n \n ##  Secondary toolbar and context menu\n \n@@ -286,6 +280,15 @@\n pdfjs-editor-stamp-button =\n     .title = ᱪᱤᱛᱟᱹᱨᱠᱚ ᱥᱮᱞᱮᱫ ᱥᱮ ᱥᱟᱯᱲᱟᱣ ᱢᱮ\n pdfjs-editor-stamp-button-label = ᱪᱤᱛᱟᱹᱨᱠᱚ ᱥᱮᱞᱮᱫ ᱥᱮ ᱥᱟᱯᱲᱟᱣ ᱢᱮ\n+\n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n # Editor Parameters\n pdfjs-editor-free-text-color-input = ᱨᱚᱝ\n pdfjs-editor-free-text-size-input = ᱢᱟᱯ\n@@ -309,3 +312,44 @@\n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsc\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsc\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsc\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsc\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Pàgina atuale (ammustra s’URL de sa pàgina atuale)\n pdfjs-bookmark-button-label = Pàgina atuale\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Aberi in un’aplicatzione\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Aberi in un’aplicatzione\n \n ##  Secondary toolbar and context menu\n \n@@ -158,7 +152,7 @@\n # Variables:\n #   $progress (Number) - percent value\n pdfjs-print-progress-percent = { $progress }%\n-pdfjs-print-progress-close-button = Cantzella\n+pdfjs-print-progress-close-button = Annulla\n pdfjs-printing-not-supported = Atentzione: s'imprenta no est funtzionende de su totu in custu navigadore.\n pdfjs-printing-not-ready = Atentzione: su PDF no est istadu carrigadu de su totu pro s'imprenta.\n \n@@ -252,7 +246,7 @@\n pdfjs-password-label = Inserta sa crae pro abèrrere custu archìviu PDF.\n pdfjs-password-invalid = Sa crae no est curreta. Torra a nche proare.\n pdfjs-password-ok-button = Andat bene\n-pdfjs-password-cancel-button = Cantzella\n+pdfjs-password-cancel-button = Annulla\n pdfjs-web-fonts-disabled = Is tipografias web sunt disativadas: is tipografias incrustadas a su PDF non podent èssere impreadas.\n \n ## Editing\n@@ -266,6 +260,30 @@\n pdfjs-editor-stamp-button =\n     .title = Agiunghe o modìfica immàgines\n pdfjs-editor-stamp-button-label = Agiunghe o modìfica immàgines\n+pdfjs-editor-highlight-button =\n+    .title = Evidèntzia\n+pdfjs-editor-highlight-button-label = Evidèntzia\n+pdfjs-highlight-floating-button1 =\n+    .title = Evidèntzia\n+    .aria-label = Evidèntzia\n+pdfjs-highlight-floating-button-label = Evidèntzia\n+\n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+pdfjs-editor-remove-ink-button =\n+    .title = Boga su disinnu\n+pdfjs-editor-remove-freetext-button =\n+    .title = Boga su testu\n+pdfjs-editor-remove-stamp-button =\n+    .title = Boga s’immàgine\n+pdfjs-editor-remove-highlight-button =\n+    .title = Boga s’evidèntzia\n+\n+##\n+\n # Editor Parameters\n pdfjs-editor-free-text-color-input = Colore\n pdfjs-editor-free-text-size-input = Mannària\n@@ -274,6 +292,8 @@\n pdfjs-editor-stamp-add-image-button =\n     .title = Agiunghe un’immàgine\n pdfjs-editor-stamp-add-image-button-label = Agiunghe un’immàgine\n+# This refers to the thickness of the line used for free highlighting (not bound to text)\n+pdfjs-editor-free-highlight-thickness-input = Grussària\n pdfjs-free-text =\n     .aria-label = Editore de testu\n pdfjs-free-text-default-content = Cumintza a iscrìere…\n@@ -284,7 +304,91 @@\n \n ## Alt-text dialog\n \n+pdfjs-editor-alt-text-button-label = Testu alternativu\n+pdfjs-editor-alt-text-edit-button-label = Modifica su testu alternativu\n+pdfjs-editor-alt-text-dialog-label = Sèbera un’optzione\n+pdfjs-editor-alt-text-dialog-description = Su testu alternativu (“alt text”) est ùtile pro persones chi non podent bìdere s’immàgine o cando non benit carrigada.\n+pdfjs-editor-alt-text-add-description-label = Agiunghe una descritzione\n+pdfjs-editor-alt-text-cancel-button = Annulla\n+pdfjs-editor-alt-text-save-button = Sarva\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+pdfjs-editor-colorpicker-button =\n+    .title = Modifica su colore\n+pdfjs-editor-colorpicker-dropdown =\n+    .aria-label = Colores a disponimentu\n+pdfjs-editor-colorpicker-yellow =\n+    .title = Grogu\n+pdfjs-editor-colorpicker-green =\n+    .title = Birde\n+pdfjs-editor-colorpicker-blue =\n+    .title = Biaitu\n+pdfjs-editor-colorpicker-pink =\n+    .title = Rosa\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+pdfjs-editor-new-alt-text-missing-button-label = Mancat su testu alternativu\n+pdfjs-editor-new-alt-text-to-review-button-label = Revisiona su testu alternativu\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Creadu in automàticu: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Cunfiguratzione de su testu alternativu de is immàgines\n+pdfjs-image-alt-text-settings-button-label = Cunfiguratzione de su testu alternativu de is immàgines\n+pdfjs-editor-alt-text-settings-dialog-label = Cunfiguratzione de su testu alternativu de is immàgines\n+pdfjs-editor-alt-text-settings-automatic-title = Testu alternativu automàticu\n+pdfjs-editor-alt-text-settings-create-model-button-label = Crea testu alternativu in automàticu\n+pdfjs-editor-alt-text-settings-create-model-description = Cussìgiat descritziones pro agiudare a gente chi non podet bìdere s’immàgine o cando non benit carrigada.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Modellu de IA pro su testu alternativu ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Est esecutadu in locale in manera chi is datos tuos abarrent in privadu. Rechestu pro sa generatzione automàtica de testu alternativu.\n+pdfjs-editor-alt-text-settings-delete-model-button = Cantzella\n+pdfjs-editor-alt-text-settings-download-model-button = Iscàrriga\n+pdfjs-editor-alt-text-settings-downloading-model-button = Iscarrighende…\n+pdfjs-editor-alt-text-settings-editor-title = Editore de testu alternativu\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Mustra deretu s’editore de testu alternativu cando siat agiunta un’immàgine\n+pdfjs-editor-alt-text-settings-show-dialog-description = T’agiudat a assegurare chi totu is immàgines tuas tèngiant unu testu alternativu.\n+pdfjs-editor-alt-text-settings-close-button = Serra\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fscn\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fscn\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fscn\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fscn\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -66,9 +66,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsco\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsco\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsco\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsco\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -256,9 +256,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsi\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsi\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsi\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsi\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -45,12 +45,6 @@\n # Length of the translation matters since we are in a mobile context, with limited screen estate.\n pdfjs-download-button-label = බාගන්න\n pdfjs-bookmark-button-label = පවතින පිටුව\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = යෙදුමෙහි අරින්න\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = යෙදුමෙහි අරින්න\n \n ##  Secondary toolbar and context menu\n \n@@ -188,7 +182,7 @@\n pdfjs-find-entire-word-checkbox-label = සමස්ත වචන\n pdfjs-find-reached-top = ලේඛනයේ මුදුනට ළඟා විය, පහළ සිට ඉහළට\n pdfjs-find-reached-bottom = ලේඛනයේ අවසානයට ළඟා විය, ඉහළ සිට පහළට\n-pdfjs-find-not-found = වැකිකඩ හමු නොවිණි\n+pdfjs-find-not-found = වැකිකඩ හමු නොවුණි\n \n ## Predefined zoom values\n \n@@ -236,6 +230,18 @@\n pdfjs-editor-ink-button =\n     .title = අඳින්න\n pdfjs-editor-ink-button-label = අඳින්න\n+pdfjs-editor-stamp-button =\n+    .title = රූප සංස්කරණය හෝ එක් කරන්න\n+pdfjs-editor-stamp-button-label = රූප සංස්කරණය හෝ එක් කරන්න\n+\n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n # Editor Parameters\n pdfjs-editor-free-text-color-input = වර්ණය\n pdfjs-editor-free-text-size-input = තරම\n@@ -247,7 +253,49 @@\n \n ## Alt-text dialog\n \n+pdfjs-editor-alt-text-mark-decorative-description = මෙය දාර හෝ දිය සලකුණු වැනි අලංකාර රූප සඳහා භාවිතා වේ.\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsk\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsk\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsk\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsk\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Aktuálna stránka (zobraziť adresu URL z aktuálnej stránky)\n pdfjs-bookmark-button-label = Aktuálna stránka\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Otvoriť v aplikácii\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Otvoriť v aplikácii\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = Názov súboru:\n pdfjs-document-properties-file-size = Veľkosť súboru:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } kB ({ $b } bajtov)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bajtov)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } kB ({ $size_b } bajtov)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Dátum vytvorenia:\n pdfjs-document-properties-modification-date = Dátum úpravy:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -285,6 +290,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [Anotácia typu { $type }]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -308,12 +316,29 @@\n pdfjs-editor-highlight-button =\n     .title = Zvýrazniť\n pdfjs-editor-highlight-button-label = Zvýrazniť\n-pdfjs-highlight-floating-button =\n-    .title = Zvýrazniť\n pdfjs-highlight-floating-button1 =\n     .title = Zvýrazniť\n     .aria-label = Zvýrazniť\n pdfjs-highlight-floating-button-label = Zvýrazniť\n+pdfjs-editor-signature-button =\n+    .title = Pridať podpis\n+pdfjs-editor-signature-button-label = Pridať podpis\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Editor zvýraznenia\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Editor kreslenia\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Editor podpisu: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Editor obrázkov\n \n ## Remove button for the various kind of editor.\n \n@@ -325,6 +350,8 @@\n     .title = Odstrániť obrázok\n pdfjs-editor-remove-highlight-button =\n     .title = Odstrániť zvýraznenie\n+pdfjs-editor-remove-signature-button =\n+    .title = Odstrániť podpis\n \n ##\n \n@@ -341,6 +368,20 @@\n pdfjs-editor-free-highlight-thickness-input = Hrúbka\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Zmeňte hrúbku pre zvýrazňovanie iných položiek ako textu\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Ovládacie prvky pre podpisy a uložené podpisy\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Pridať nový podpis\n+pdfjs-editor-signature-add-signature-button-label = Pridať nový podpis\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Uložený podpis: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Textový editor\n+    .default-content = Začnite písať…\n pdfjs-free-text =\n     .aria-label = Textový editor\n pdfjs-free-text-default-content = Začnite písať…\n@@ -351,8 +392,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Alternatívny text\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Upraviť alternatívny text\n pdfjs-editor-alt-text-edit-button-label = Upraviť alternatívny text\n pdfjs-editor-alt-text-dialog-label = Vyberte možnosť\n pdfjs-editor-alt-text-dialog-description = Alternatívny text (alt text) pomáha, keď ľudia obrázok nevidia alebo sa nenačítava.\n@@ -366,6 +408,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Napríklad: „Mladý muž si sadá za stôl, aby sa najedol“\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Alternatívny text\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -378,6 +423,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Stred dole – zmena veľkosti\n pdfjs-editor-resizer-label-bottom-left = Ľavý dolný roh – zmena veľkosti\n pdfjs-editor-resizer-label-middle-left = Vľavo uprostred – zmena veľkosti\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Ľavý horný roh – zmena veľkosti\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Horný stred – zmena veľkosti\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Pravý horný roh – zmena veľkosti\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Vpravo uprostred – zmena veľkosti\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Pravý dolný roh – zmena veľkosti\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Stred dole – zmena veľkosti\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Ľavý dolný roh – zmena veľkosti\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Vľavo uprostred – zmena veľkosti\n \n ## Color picker\n \n@@ -404,3 +465,157 @@\n pdfjs-editor-highlight-show-all-button-label = Zobraziť všetko\n pdfjs-editor-highlight-show-all-button =\n     .title = Zobraziť všetko\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Upraviť alternatívny text (popis obrázka)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Pridať alternatívny text (popis obrázka)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Sem napíšte svoj popis…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Krátky popis pre ľudí, ktorí nevidia obrázok alebo ak sa obrázok nenačíta.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Tento alternatívny text bol vytvorený automaticky a môže byť nepresný.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Ďalšie informácie\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Automaticky vytvoriť alternatívny text\n+pdfjs-editor-new-alt-text-not-now-button = Teraz nie\n+pdfjs-editor-new-alt-text-error-title = Alternatívny text sa nepodarilo vytvoriť automaticky\n+pdfjs-editor-new-alt-text-error-description = Napíšte svoj vlastný alternatívny text alebo to skúste znova neskôr.\n+pdfjs-editor-new-alt-text-error-close-button = Zavrieť\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Sťahuje sa model AI pre alternatívne texty ({ $downloadedSize } z { $totalSize } MB)\n+    .aria-valuetext = Sťahuje sa model AI pre alternatívne texty ({ $downloadedSize } z { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Alternatívny text bol pridaný\n+pdfjs-editor-new-alt-text-added-button-label = Alternatívny text bol pridaný\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Chýbajúci alternatívny text\n+pdfjs-editor-new-alt-text-missing-button-label = Chýbajúci alternatívny text\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Skontrolovať alternatívny text\n+pdfjs-editor-new-alt-text-to-review-button-label = Skontrolovať alternatívny text\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Vytvorené automaticky: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Nastavenia alternatívneho textu obrázka\n+pdfjs-image-alt-text-settings-button-label = Nastavenia alternatívneho textu obrázka\n+pdfjs-editor-alt-text-settings-dialog-label = Nastavenia alternatívneho textu obrázka\n+pdfjs-editor-alt-text-settings-automatic-title = Automatický alternatívny text\n+pdfjs-editor-alt-text-settings-create-model-button-label = Automaticky vytvoriť alternatívny text\n+pdfjs-editor-alt-text-settings-create-model-description = Navrhuje popisy, ktoré pomôžu ľuďom, ktorým sa obrázok nezobrazuje alebo ak sa obrázok nenačíta.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Model AI pre alternatívne texty ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Beží lokálne na vašom zariadení, takže vaše dáta zostanú súkromné. Vyžaduje sa pre automatický alternatívny text.\n+pdfjs-editor-alt-text-settings-delete-model-button = Odstrániť\n+pdfjs-editor-alt-text-settings-download-model-button = Stiahnuť\n+pdfjs-editor-alt-text-settings-downloading-model-button = Sťahuje sa…\n+pdfjs-editor-alt-text-settings-editor-title = Editor alternatívneho textu\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Pri pridávaní obrázka ihneď zobraziť editor alternatívneho textu\n+pdfjs-editor-alt-text-settings-show-dialog-description = Pomáha vám zabezpečiť, aby všetky vaše obrázky mali alternatívny text.\n+pdfjs-editor-alt-text-settings-close-button = Zavrieť\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Zvýraznenie bolo odstránené\n+pdfjs-editor-undo-bar-message-freetext = Text bol odstránený\n+pdfjs-editor-undo-bar-message-ink = Kreslenie bolo odstránené\n+pdfjs-editor-undo-bar-message-stamp = Obrázok bol odstránený\n+pdfjs-editor-undo-bar-message-signature = Podpis bol odstránený\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } anotácia odstránená\n+        [few] { $count } anotácie odstránené\n+        [many] { $count } anotácií odstránených\n+       *[other] { $count } anotácií odstránených\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Späť\n+pdfjs-editor-undo-bar-undo-button-label = Späť\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Zavrieť\n+pdfjs-editor-undo-bar-close-button-label = Zavrieť\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Toto okno umožňuje používateľovi vytvoriť podpis, ktorý sa pridá do dokumentu PDF. Používateľ môže upraviť meno (ktoré zároveň slúži ako alternatívny text) a voliteľne uložiť podpis, ak ho plánuje v budúcnosti znova použiť.\n+pdfjs-editor-add-signature-dialog-title = Pridať podpis\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Typ\n+    .title = Typ\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Kresliť\n+    .title = Kresliť\n+pdfjs-editor-add-signature-image-button = Obrázok\n+    .title = Obrázok\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Zadajte svoj podpis\n+    .placeholder = Zadajte svoj podpis\n+pdfjs-editor-add-signature-draw-placeholder = Nakreslite svoj podpis\n+pdfjs-editor-add-signature-draw-thickness-range-label = Hrúbka\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Hrúbka ceruzky: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Sem presuňte súbor, ktorý chcete nahrať\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Alebo vyberte súbor s obrázkom\n+       *[other] Alebo vyberte súbor s obrázkom\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Popis (alternatívny text)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Popis (alternatívny text)\n+pdfjs-editor-add-signature-description-default-when-drawing = Podpis\n+pdfjs-editor-add-signature-clear-button-label = Vymazať podpis\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Vymazať podpis\n+pdfjs-editor-add-signature-save-checkbox = Uložiť podpis\n+pdfjs-editor-add-signature-save-warning-message = Dosiahli ste limit 5 uložených podpisov. Ak chcete uložiť ďalší, jeden odstráňte.\n+pdfjs-editor-add-signature-image-upload-error-title = Obrázok sa nepodarilo nahrať\n+pdfjs-editor-add-signature-image-upload-error-description = Skontrolujte sieťové pripojenie alebo skúste iný obrázok.\n+pdfjs-editor-add-signature-error-close-button = Zavrieť\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Zrušiť\n+pdfjs-editor-add-signature-add-button = Pridať\n+pdfjs-editor-edit-signature-update-button = Aktualizovať\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Odstrániť uložený podpis\n+pdfjs-editor-delete-signature-button-label1 = Odstrániť uložený podpis\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Upraviť popis\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Upraviť popis\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fskr\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fskr\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fskr\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fskr\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -105,6 +105,14 @@\n pdfjs-document-properties-file-name = فائل دا ناں:\n pdfjs-document-properties-file-size = فائل دا سائز:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } بائٹاں)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } بائٹاں)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } کے بی ({ $size_b } بائٹس)\n@@ -119,6 +127,9 @@\n pdfjs-document-properties-creation-date = تخلیق دی تاریخ:\n pdfjs-document-properties-modification-date = ترمیم دی تاریخ:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -275,6 +286,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type } تشریح]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -298,13 +312,14 @@\n pdfjs-editor-highlight-button =\n     .title = نمایاں کرو\n pdfjs-editor-highlight-button-label = نمایاں کرو\n-pdfjs-highlight-floating-button =\n-    .title = نمایاں کرو\n pdfjs-highlight-floating-button1 =\n     .title = نمایاں کرو\n     .aria-label = نمایاں کرو\n pdfjs-highlight-floating-button-label = نمایاں کرو\n \n+## Default editor aria labels\n+\n+\n ## Remove button for the various kind of editor.\n \n pdfjs-editor-remove-ink-button =\n@@ -341,7 +356,6 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Alt متن\n pdfjs-editor-alt-text-edit-button-label = alt متن وِچ ترمیم کرو\n pdfjs-editor-alt-text-dialog-label = ہِک اختیار چُݨو\n@@ -356,6 +370,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = مثال دے طور تے، \"ہِک جؤان کھاݨاں کھاوݨ کِیتے میز اُتّے ٻیٹھا ہِے\"\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Alt متن\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -368,6 +385,22 @@\n pdfjs-editor-resizer-label-bottom-middle = تلواں وِچلا — سائز بدلو\n pdfjs-editor-resizer-label-bottom-left = تلوِیں کَھٻّی نُکّڑ — سائز بدلو\n pdfjs-editor-resizer-label-middle-left = وِچلا کَھٻّا — سائز بدلو\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = اُتلی کَھٻّی نُکّڑ — سائز بدلو\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = اُتلا وِچلا — سائز بدلو\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = اُتلی سَڄّی نُکَّڑ — سائز بدلو\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = وِچلا سڄّا — سائز بدلو\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = تلوِیں سَڄّی نُکَّڑ — سائز بدلو\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = تلواں وِچلا — سائز بدلو\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = تلوِیں کَھٻّی نُکّڑ — سائز بدلو\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = وِچلا کَھٻّا — سائز بدلو\n \n ## Color picker\n \n@@ -394,3 +427,98 @@\n pdfjs-editor-highlight-show-all-button-label = سارے ݙکھاؤ\n pdfjs-editor-highlight-show-all-button =\n     .title = سارے ݙکھاؤ\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = آلٹ عبارت وچ تبدیلی کرو (تصویر تفصیل)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = آلٹ عبارت شامل کرو (تصویر تفصیل)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = اتھ آپݨی وضاحت لکھو۔۔۔\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = اُنہاں لوکاں کیتے مختصر تفصیل جہڑے تصویر کائنی ݙیکھ سڳدے یا ڄݙݨ تصویر لوڈ کائبی تھیندی۔\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = آلٹ عبارت خودکار تخلیق تھئی ہے تے غلط تھی سڳدی ہے۔\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = ٻیا سِکھو\n+pdfjs-editor-new-alt-text-create-automatically-button-label = آلٹ عبارت خودکار بݨاؤ\n+pdfjs-editor-new-alt-text-not-now-button = ہݨ کائناں\n+pdfjs-editor-new-alt-text-error-title = آلٹ عبارت خودکار نہ بݨاؤ\n+pdfjs-editor-new-alt-text-error-description = سوہݨا، آپݨی آلٹ عبارت لکھو یا ولدا بعد وچ کوشش کرو۔\n+pdfjs-editor-new-alt-text-error-close-button = بند کرو\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = آلٹ عبارت اے آئی ماڈل({ $totalSize }ایم بی دے { $downloadedSize }) ڈاؤن لوڈ تھیندا پئے\n+    .aria-valuetext = آلٹ عبارت اے آئی ماڈل({ $totalSize }ایم بی دے { $downloadedSize }) ڈاؤن لوڈ تھیندا پئے\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = آلٹ عبارت شامل تھی ڳئی\n+pdfjs-editor-new-alt-text-added-button-label = آلٹ عبارت شامل تھی ڳئی\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = متبادل عبارت غائب ہے\n+pdfjs-editor-new-alt-text-missing-button-label = متبادل عبارت غائب ہے\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = alt متن تے نظرثانی کرو\n+pdfjs-editor-new-alt-text-to-review-button-label = alt متن تے نظرثانی کرو\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = خودکار تخلیق تھئی: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = تصویر آلٹ عبارت ترتیباں\n+pdfjs-image-alt-text-settings-button-label = تصویر آلٹ عبارت ترتیباں\n+pdfjs-editor-alt-text-settings-dialog-label = تصویر آلٹ عبارت ترتیباں\n+pdfjs-editor-alt-text-settings-automatic-title = خودکار آلٹ عبارت\n+pdfjs-editor-alt-text-settings-create-model-button-label = آلٹ عبارت خودکار بݨاؤ\n+pdfjs-editor-alt-text-settings-create-model-description = اُنہاں لوکاں دی مدد کیتے  تفصیل تجویز کرو جہڑے تصویر کائنی ݙیکھ سڳدے یا ڄݙݨ تصویر لوڈ کائبی تھیندی۔\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = آلٹ عبارت اے آئی ماڈل ({ $totalSize } ایم بی)\n+pdfjs-editor-alt-text-settings-ai-model-description = تہاݙی ڈیوائس تے مقامی طور تے چلدا ہے تاں جو تہاݙا ڈیٹا نجی رہوے۔ خودکار آلٹ عبارت کیتے ضروری ہے۔\n+pdfjs-editor-alt-text-settings-delete-model-button = مٹاؤ\n+pdfjs-editor-alt-text-settings-download-model-button = ڈاؤن لوڈ\n+pdfjs-editor-alt-text-settings-downloading-model-button = ڈاؤن لوڈ تھیندا پئے …\n+pdfjs-editor-alt-text-settings-editor-title = متبادل ٹیکسٹ ایڈیٹر\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = تصویر شامل کرݨ ویلے فوری طور تے آلٹ ٹیکسٹ ایڈیٹر ݙکھاؤ\n+pdfjs-editor-alt-text-settings-show-dialog-description = ایہ تہاکوں یقینی بݨاوݨ وچ مدد کریندے جو تہاݙیاں ساریاں تصویراں وچ آلٹ عبارت ہے۔\n+pdfjs-editor-alt-text-settings-close-button = بند کرو\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = کیتا اݨ کیتا\n+pdfjs-editor-undo-bar-undo-button-label = کیتا اݨ کیتا\n+pdfjs-editor-undo-bar-close-button =\n+    .title = بند کرو\n+pdfjs-editor-undo-bar-close-button-label = بند کرو\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsl\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsl\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsl\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsl\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -105,6 +105,14 @@\n pdfjs-document-properties-file-name = Ime datoteke:\n pdfjs-document-properties-file-size = Velikost datoteke:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bajtov)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bajtov)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bajtov)\n@@ -119,6 +127,9 @@\n pdfjs-document-properties-creation-date = Datum nastanka:\n pdfjs-document-properties-modification-date = Datum spremembe:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -279,6 +290,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [Opomba vrste { $type }]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -302,6 +316,29 @@\n pdfjs-editor-highlight-button =\n     .title = Označevalnik\n pdfjs-editor-highlight-button-label = Označevalnik\n+pdfjs-highlight-floating-button1 =\n+    .title = Označi\n+    .aria-label = Označi\n+pdfjs-highlight-floating-button-label = Označi\n+pdfjs-editor-signature-button =\n+    .title = Dodaj podpis\n+pdfjs-editor-signature-button-label = Dodaj podpis\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Urejevalnik označb\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Urejevalnik risb\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Urejevalnik podpisov: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Urejevalnik slik\n \n ## Remove button for the various kind of editor.\n \n@@ -313,6 +350,8 @@\n     .title = Odstrani sliko\n pdfjs-editor-remove-highlight-button =\n     .title = Odstrani označbo\n+pdfjs-editor-remove-signature-button =\n+    .title = Odstrani podpis\n \n ##\n \n@@ -329,6 +368,20 @@\n pdfjs-editor-free-highlight-thickness-input = Debelina\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Spremeni debelino pri označevanju nebesedilnih elementov\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Kontrolniki za podpise in shranjeni podpisi\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Dodaj nov podpis\n+pdfjs-editor-signature-add-signature-button-label = Dodaj nov podpis\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Shranjen podpis: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Urejevalnik besedila\n+    .default-content = Začnite tipkati …\n pdfjs-free-text =\n     .aria-label = Urejevalnik besedila\n pdfjs-free-text-default-content = Začnite tipkati …\n@@ -339,8 +392,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Nadomestno besedilo\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Uredi nadomestno besedilo\n pdfjs-editor-alt-text-edit-button-label = Uredi nadomestno besedilo\n pdfjs-editor-alt-text-dialog-label = Izberite možnost\n pdfjs-editor-alt-text-dialog-description = Nadomestno besedilo se prikaže tistim, ki ne vidijo slike, ali če se ta ne naloži.\n@@ -354,6 +408,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Na primer: \"Mladenič sedi za mizo pri jedi\"\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Nadomestno besedilo\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -366,6 +423,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Spodaj na sredini – spremeni velikost\n pdfjs-editor-resizer-label-bottom-left = Spodnji levi kot – spremeni velikost\n pdfjs-editor-resizer-label-middle-left = Levo na sredini – spremeni velikost\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Zgornji levi kot – spremeni velikost\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Zgoraj na sredini – spremeni velikost\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Zgornji desni kot – spremeni velikost\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Desno na sredini – spremeni velikost\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Spodnji desni kot – spremeni velikost\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Spodaj na sredini – spremeni velikost\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Spodnji levi kot – spremeni velikost\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Levo na sredini – spremeni velikost\n \n ## Color picker\n \n@@ -392,3 +465,157 @@\n pdfjs-editor-highlight-show-all-button-label = Prikaži vse\n pdfjs-editor-highlight-show-all-button =\n     .title = Prikaži vse\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Uredi nadomestno besedilo (opis slike)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Dodaj nadomestno besedilo (opis slike)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Tukaj napišite svoj opis …\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Kratek opis za ljudi, ki ne morejo videti slike, ali za primer, ko se slika ne naloži.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = To nadomestno besedilo je bilo ustvarjeno samodejno in je lahko netočno.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Več o tem\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Samodejno ustvari nadomestno besedilo\n+pdfjs-editor-new-alt-text-not-now-button = Ne zdaj\n+pdfjs-editor-new-alt-text-error-title = Nadomestnega besedila ni bilo mogoče samodejno ustvariti\n+pdfjs-editor-new-alt-text-error-description = Sestavite svoje nadomestno besedilo ali poskusite znova pozneje.\n+pdfjs-editor-new-alt-text-error-close-button = Zapri\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Prenašanje modela UI za nadomestno besedilo ({ $downloadedSize } od { $totalSize } MB)\n+    .aria-valuetext = Prenašanje modela UI za nadomestno besedilo ({ $downloadedSize } od { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Nadomestno besedilo dodano\n+pdfjs-editor-new-alt-text-added-button-label = Nadomestno besedilo dodano\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Nadomestno besedilo manjka\n+pdfjs-editor-new-alt-text-missing-button-label = Nadomestno besedilo manjka\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Oceni nadomestno besedilo\n+pdfjs-editor-new-alt-text-to-review-button-label = Oceni nadomestno besedilo\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Samodejno ustvarjeno: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Nastavitve nadomestnega besedila slike\n+pdfjs-image-alt-text-settings-button-label = Nastavitve nadomestnega besedila slike\n+pdfjs-editor-alt-text-settings-dialog-label = Nastavitve nadomestnega besedila slike\n+pdfjs-editor-alt-text-settings-automatic-title = Samodejno nadomestno besedilo\n+pdfjs-editor-alt-text-settings-create-model-button-label = Samodejno ustvari nadomestno besedilo\n+pdfjs-editor-alt-text-settings-create-model-description = Predlaga opise za pomoč ljudem, ki ne morejo videti slike, ali za primer, ko se slika ne naloži.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Model UI za nadomestno besedilo ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Izvaja se lokalno na vaši napravi, tako da vaši podatki ostajajo zasebni. Zahtevano za samodejno nadomestno besedilo.\n+pdfjs-editor-alt-text-settings-delete-model-button = Izbriši\n+pdfjs-editor-alt-text-settings-download-model-button = Prenesi\n+pdfjs-editor-alt-text-settings-downloading-model-button = Prenašanje ...\n+pdfjs-editor-alt-text-settings-editor-title = Urejevalnik nadomestnega besedila\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Ob dodajanju slike takoj prikaži urejevalnik nadomestnega besedila\n+pdfjs-editor-alt-text-settings-show-dialog-description = Pomaga vam zagotoviti, da imajo vse vaše slike nadomestno besedilo.\n+pdfjs-editor-alt-text-settings-close-button = Zapri\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Označba odstranjena\n+pdfjs-editor-undo-bar-message-freetext = Besedilo odstranjeno\n+pdfjs-editor-undo-bar-message-ink = Risba odstranjena\n+pdfjs-editor-undo-bar-message-stamp = Slika odstranjena\n+pdfjs-editor-undo-bar-message-signature = Podpis odstranjen\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } označba odstranjena\n+        [two] { $count } označbi odstranjeni\n+        [few] { $count } označbe odstranjene\n+       *[other] { $count } označb odstranjenih\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Razveljavi\n+pdfjs-editor-undo-bar-undo-button-label = Razveljavi\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Zapri\n+pdfjs-editor-undo-bar-close-button-label = Zapri\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Ta način omogoča uporabniku ustvariti podpis, ki ga želi dodati dokumentu PDF. Uporabnik lahko uredi ime (ki se uporablja tudi kot nadomestno besedilo) in podpis po želji shrani za ponovno uporabo.\n+pdfjs-editor-add-signature-dialog-title = Dodaj podpis\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Natipkaj\n+    .title = Natipkaj\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Nariši\n+    .title = Nariši\n+pdfjs-editor-add-signature-image-button = Slika\n+    .title = Slika\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Natipkajte svoj podpis\n+    .placeholder = Natipkajte svoj podpis\n+pdfjs-editor-add-signature-draw-placeholder = Narišite svoj podpis\n+pdfjs-editor-add-signature-draw-thickness-range-label = Debelina\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Debelina peresa: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Povlecite datoteko sem za nalaganje\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Ali prebrskajte slikovne datoteke\n+       *[other] Ali prebrskajte slikovne datoteke\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Opis (nadomestno besedilo)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Opis (nadomestno besedilo)\n+pdfjs-editor-add-signature-description-default-when-drawing = Podpis\n+pdfjs-editor-add-signature-clear-button-label = Pobriši podpis\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Pobriši podpis\n+pdfjs-editor-add-signature-save-checkbox = Shrani podpis\n+pdfjs-editor-add-signature-save-warning-message = Dosegli ste omejitev 5 shranjenih podpisov. Če želite shraniti novega, enega odstranite.\n+pdfjs-editor-add-signature-image-upload-error-title = Slike ni bilo mogoče naložiti\n+pdfjs-editor-add-signature-image-upload-error-description = Preverite svojo povezavo z omrežjem ali poskusite z drugo sliko.\n+pdfjs-editor-add-signature-error-close-button = Zapri\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Prekliči\n+pdfjs-editor-add-signature-add-button = Dodaj\n+pdfjs-editor-edit-signature-update-button = Spremeni\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Odstrani shranjen podpis\n+pdfjs-editor-delete-signature-button-label1 = Odstrani shranjen podpis\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Uredi opis\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Uredi opis\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fson\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fson\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fson\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fson\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -198,9 +198,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsq\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsq\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsq\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsq\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -96,6 +96,14 @@\n pdfjs-document-properties-file-name = Emër kartele:\n pdfjs-document-properties-file-size = Madhësi kartele:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bajte)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bajte)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bajte)\n@@ -110,6 +118,9 @@\n pdfjs-document-properties-creation-date = Datë Krijimi:\n pdfjs-document-properties-modification-date = Datë Ndryshimi:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -266,6 +277,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [Nënvizim { $type }]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -289,12 +303,29 @@\n pdfjs-editor-highlight-button =\n     .title = Theksim\n pdfjs-editor-highlight-button-label = Theksoje\n-pdfjs-highlight-floating-button =\n-    .title = Theksim\n pdfjs-highlight-floating-button1 =\n     .title = Theksim\n     .aria-label = Theksim\n pdfjs-highlight-floating-button-label = Theksim\n+pdfjs-editor-signature-button =\n+    .title = Shtoni nënshkrim\n+pdfjs-editor-signature-button-label = Shtoni nënshkrim\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Përpunues theksimesh\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Përpunues vizatimesh\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Përpunues nënshkrimesh: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Përpunues figurash\n \n ## Remove button for the various kind of editor.\n \n@@ -306,6 +337,8 @@\n     .title = Hiq figurë\n pdfjs-editor-remove-highlight-button =\n     .title = Hiqe theksimin\n+pdfjs-editor-remove-signature-button =\n+    .title = Hiqe nënshkrimin\n \n ##\n \n@@ -322,6 +355,20 @@\n pdfjs-editor-free-highlight-thickness-input = Trashësi\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Ndryshoni trashësinë kur theksoni objekte tjetër nga tekst\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Kontrolle nënshkrimesh dhe nënshkrime të ruajtur\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Shtoni nënshkrim të ri\n+pdfjs-editor-signature-add-signature-button-label = Shtoni nënshkrim të ri\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Nënshkrim i ruajtur: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Përpunues Tekstesh\n+    .default-content = Filloni të shtypni…\n pdfjs-free-text =\n     .aria-label = Përpunues Tekstesh\n pdfjs-free-text-default-content = Filloni të shtypni…\n@@ -332,8 +379,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Tekst alternativ\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Përpunoni tekst alternativ\n pdfjs-editor-alt-text-edit-button-label = Përpunoni tekst alternativ\n pdfjs-editor-alt-text-dialog-label = Zgjidhni një mundësi\n pdfjs-editor-alt-text-dialog-description = Teksti alt (tekst alternativ) vjen në ndihmë kur njerëzit s’mund të shohin figurën, ose kur ajo nuk ngarkohet.\n@@ -347,6 +395,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Për shembull, “Një djalosh ulet në një tryezë të hajë”\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Tekst alternativ\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -359,6 +410,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Mesi i pjesës poshtë — ripërmasojeni\n pdfjs-editor-resizer-label-bottom-left = Cepi i poshtëm — ripërmasojeni\n pdfjs-editor-resizer-label-middle-left = Majtas në mes — ripërmasojeni\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Cepi i sipërm majtas — ripërmasojeni\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Mesi i pjesës sipër — ripërmasojeni\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Cepi i sipërm djathtas — ripërmasojeni\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Djathtas në mes — ripërmasojeni\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Cepi i poshtëm djathtas — ripërmasojeni\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Mesi i pjesës poshtë — ripërmasojeni\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Cepi i poshtëm — ripërmasojeni\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Majtas në mes — ripërmasojeni\n \n ## Color picker\n \n@@ -385,3 +452,155 @@\n pdfjs-editor-highlight-show-all-button-label = Shfaqi krejt\n pdfjs-editor-highlight-show-all-button =\n     .title = Shfaqi krejt\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Përpunoni tekst alternativ (përshkrim figure)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Shtoni tekst alternativ (përshkrim figure)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Shkruani këtu përshkrimin tuaj…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Përshkrim i shkurtër për persona që s’munden të shohin figurën, ose për kur figura nuk ngarkohet dot.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Ky tekst alternativ qe krijuar automatikisht dhe mund të jetë i pasaktë.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Mësoni më tepër\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Krijo automatikisht tekst alternativ\n+pdfjs-editor-new-alt-text-not-now-button = Jo tani\n+pdfjs-editor-new-alt-text-error-title = S’u krijua dot automatikisht tekst alternativ\n+pdfjs-editor-new-alt-text-error-description = Ju lutemi, shkruani tekstin tuaj alternativ, ose riprovoni më vonë.\n+pdfjs-editor-new-alt-text-error-close-button = Mbylle\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Po shkarkohet model IA teksti alternativ ({ $downloadedSize } nga { $totalSize } MB)\n+    .aria-valuetext = Po shkarkohet model IA teksti alternativ ({ $downloadedSize } nga { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = U shtua tekst alternativ\n+pdfjs-editor-new-alt-text-added-button-label = U shtua tekst alternativ\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Mungon tekst alternativ\n+pdfjs-editor-new-alt-text-missing-button-label = Mungon tekst alternativ\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Shqyrtoni tekst alternativ\n+pdfjs-editor-new-alt-text-to-review-button-label = Shqyrtoni tekst alternativ\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Krijuar automatikisht: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Rregullime teksti alternativ figure\n+pdfjs-image-alt-text-settings-button-label = Rregullime teksti alternativ figure\n+pdfjs-editor-alt-text-settings-dialog-label = Rregullime teksti alternativ figure\n+pdfjs-editor-alt-text-settings-automatic-title = Tekst alternativ i automatizuar\n+pdfjs-editor-alt-text-settings-create-model-button-label = Krijo automatikisht tekst alternativ\n+pdfjs-editor-alt-text-settings-create-model-description = Sugjeron përshkrime, për të ndihmuar persona që s’munden të shohin figurën, ose për kur figura nuk ngarkohet dot.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Model IA teksti alternativ ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Xhiron lokalisht në pajisjen tuaj, pra të dhënat tuaja mbeten private. E domosdoshme për tekst të automatizuar alternativ.\n+pdfjs-editor-alt-text-settings-delete-model-button = Fshije\n+pdfjs-editor-alt-text-settings-download-model-button = Shkarkoje\n+pdfjs-editor-alt-text-settings-downloading-model-button = Po shkarkohet…\n+pdfjs-editor-alt-text-settings-editor-title = Përpunues teksti alternativ\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Shfaq menjëherë përpunues teksti alternativ, kur shtohet një figurë\n+pdfjs-editor-alt-text-settings-show-dialog-description = Ju ndihmon të siguroheni se krejt figurat tuaja kanë tekst alternativ.\n+pdfjs-editor-alt-text-settings-close-button = Mbylle\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = U hoq theksimi\n+pdfjs-editor-undo-bar-message-freetext = U hoq tekst\n+pdfjs-editor-undo-bar-message-ink = U hoq vizatim\n+pdfjs-editor-undo-bar-message-stamp = U hoq figurë\n+pdfjs-editor-undo-bar-message-signature = Nënshkrimi u hoq\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] U hoq { $count } shënim\n+       *[other] U hoqën { $count } shënime\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Zhbëje\n+pdfjs-editor-undo-bar-undo-button-label = Zhbëje\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Mbylle\n+pdfjs-editor-undo-bar-close-button-label = Mbylle\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Kjo dritare modale i lejon përdoruesit të krijojë një nënshkrim për ta shtuar te një dokument PDF. Përdoruesi mund të përpunojë emrin (i cili shërben edhe si tekst alternativ) dhe, nëse do, ta ruajë nënshkrimin, për ta përdorur prapë.\n+pdfjs-editor-add-signature-dialog-title = Shtoni një nënshkrim\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Lloj\n+    .title = Lloj\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Vizatoni\n+    .title = Vizatoni\n+pdfjs-editor-add-signature-image-button = Figurë\n+    .title = Figurë\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Shtypni nënshkrimin tuaj\n+    .placeholder = Shtypni nënshkrimin tuaj\n+pdfjs-editor-add-signature-draw-placeholder = Vizatoni nënshkrimin tuaj\n+pdfjs-editor-add-signature-draw-thickness-range-label = Trashësi\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Trashësi vizatimi: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Tërhiqni këtu një kartelë për ngarkim\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Ose zgjidhni kartelë figure\n+       *[other] Ose zgjidhni kartelë figure\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Përshkrim (tekst alternativ)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Përshkrim (tekst alternativ)\n+pdfjs-editor-add-signature-description-default-when-drawing = Nënshkrim\n+pdfjs-editor-add-signature-clear-button-label = Spastroje nënshkrimin\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Spastroje nënshkrimin\n+pdfjs-editor-add-signature-save-checkbox = Ruaje nënshkrimin\n+pdfjs-editor-add-signature-save-warning-message = Keni mbërritur në kufirin e 5 nënshkrimeve të ruajtura. Që të ruani tjetër, hiqni një.\n+pdfjs-editor-add-signature-image-upload-error-title = S’u ngarkua dot figurë\n+pdfjs-editor-add-signature-image-upload-error-description = Kontrolloni lidhjen tuaj në rrjet, ose provoni figurë tjetër.\n+pdfjs-editor-add-signature-error-close-button = Mbylle\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Anuloje\n+pdfjs-editor-add-signature-add-button = Shtoje\n+pdfjs-editor-edit-signature-update-button = Përditësoje\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Hiqe nënshkrimin e ruajtur\n+pdfjs-editor-delete-signature-button-label1 = Hiqe nënshkrimin e ruajtur\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Përpunoni përshkrimin\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Përpunoni përshkrimin\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsr\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsr\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsr\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsr\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -45,12 +45,6 @@\n pdfjs-bookmark-button =\n     .title = Тренутна страница (погледајте URL са тренутне странице)\n pdfjs-bookmark-button-label = Тренутна страница\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Отвори у апликацији\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Отвори у апликацији\n \n ##  Secondary toolbar and context menu\n \n@@ -119,6 +113,9 @@\n pdfjs-document-properties-creation-date = Датум креирања:\n pdfjs-document-properties-modification-date = Датум модификације:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -168,10 +165,10 @@\n ## Tooltips and alt text for side panel toolbar buttons\n \n pdfjs-toggle-sidebar-button =\n-    .title = Прикажи додатну палету\n+    .title = Прикажи\u002Fсакриј бочни панел\n pdfjs-toggle-sidebar-notification-button =\n-    .title = Прикажи\u002Fсакриј бочну траку (документ садржи контуру\u002Fприлоге\u002Fслојеве)\n-pdfjs-toggle-sidebar-button-label = Прикажи додатну палету\n+    .title = Прикажи\u002Fсакриј бочни панел (документ садржи контуру\u002Fприлоге\u002Fслојеве)\n+pdfjs-toggle-sidebar-button-label = Прикажи\u002Fсакриј бочни панел\n pdfjs-document-outline-button =\n     .title = Прикажи структуру документа (двоструким кликом проширујете\u002Fскупљате све ставке)\n pdfjs-document-outline-button-label = Контура документа\n@@ -260,6 +257,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type } коментар]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -277,12 +277,48 @@\n pdfjs-editor-ink-button =\n     .title = Цртај\n pdfjs-editor-ink-button-label = Цртај\n+pdfjs-editor-stamp-button =\n+    .title = Додај или уреди слике\n+pdfjs-editor-stamp-button-label = Додај или уреди слике\n+pdfjs-editor-highlight-button =\n+    .title = Означи\n+pdfjs-editor-highlight-button-label = Означи\n+pdfjs-highlight-floating-button1 =\n+    .title = Означи\n+    .aria-label = Означи\n+pdfjs-highlight-floating-button-label = Означи\n+\n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+pdfjs-editor-remove-ink-button =\n+    .title = Уклони цртеж\n+pdfjs-editor-remove-freetext-button =\n+    .title = Уклони текст\n+pdfjs-editor-remove-stamp-button =\n+    .title = Уклони слику\n+pdfjs-editor-remove-highlight-button =\n+    .title = Уклони ознаку\n+\n+##\n+\n # Editor Parameters\n pdfjs-editor-free-text-color-input = Боја\n pdfjs-editor-free-text-size-input = Величина\n pdfjs-editor-ink-color-input = Боја\n pdfjs-editor-ink-thickness-input = Дебљина\n pdfjs-editor-ink-opacity-input = Опацитет\n+pdfjs-editor-stamp-add-image-button =\n+    .title = Додај слику\n+pdfjs-editor-stamp-add-image-button-label = Додај слику\n+pdfjs-editor-free-highlight-thickness-title =\n+    .title = Промени дебљину при означавању других ставки сем текста\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Уређивач текста\n+    .default-content = Почни куцати…\n pdfjs-free-text =\n     .aria-label = Уређивач текста\n pdfjs-free-text-default-content = Почни куцање…\n@@ -293,7 +329,123 @@\n \n ## Alt-text dialog\n \n+pdfjs-editor-alt-text-button-label = Алтернативни текст\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Уреди алтернативни текст\n+pdfjs-editor-alt-text-edit-button-label = Уреди алтернативни текст\n+pdfjs-editor-alt-text-dialog-label = Одабери опцију\n+pdfjs-editor-alt-text-dialog-description = Алтернативни текст помаже слепим и слабовидим особама или када се слика не учита.\n+pdfjs-editor-alt-text-add-description-label = Додај опис\n+pdfjs-editor-alt-text-add-description-description = Сажмите у 1-2 реченице које описују предмет, окружење или радње.\n+pdfjs-editor-alt-text-mark-decorative-label = Означи као украсно\n+pdfjs-editor-alt-text-mark-decorative-description = Ово је за украсне слике, као што су ивице или водени печати.\n+pdfjs-editor-alt-text-cancel-button = Откажи\n+pdfjs-editor-alt-text-save-button = Сачувај\n+pdfjs-editor-alt-text-decorative-tooltip = Означено као украсно\n+# .placeholder: This is a placeholder for the alt text input area\n+pdfjs-editor-alt-text-textarea =\n+    .placeholder = На пример: „Младић седа за сто да једе“\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Алтернативни текст\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+pdfjs-editor-resizer-label-top-left = Горњи леви угао — промени величину\n+pdfjs-editor-resizer-label-top-middle = Средина горе — промени величину\n+pdfjs-editor-resizer-label-top-right = Горњи десни угао — промени величину\n+pdfjs-editor-resizer-label-middle-right = Средина десно — промени величину\n+pdfjs-editor-resizer-label-bottom-right = Доњи десни угао — промени величину\n+pdfjs-editor-resizer-label-bottom-middle = Средина доле — промени величину\n+pdfjs-editor-resizer-label-bottom-left = Доњи леви угао — промени величину\n+pdfjs-editor-resizer-label-middle-left = Средина лево — промени величину\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Горњи леви угао — промени величину\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Средина горе — промени величину\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Горњи десни угао — промени величину\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Средина десно — промени величину\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Доњи десни угао — промени величину\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Средина доле — промени величину\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Доњи леви угао — промени величину\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Средина лево — промени величину\n+\n+## Color picker\n+\n+# This means \"Color used to highlight text\"\n+pdfjs-editor-highlight-colorpicker-label = Боја означавања\n+pdfjs-editor-colorpicker-button =\n+    .title = Промени боју\n+pdfjs-editor-colorpicker-dropdown =\n+    .aria-label = Избор боја\n+pdfjs-editor-colorpicker-yellow =\n+    .title = Жута\n+pdfjs-editor-colorpicker-green =\n+    .title = Зелена\n+pdfjs-editor-colorpicker-blue =\n+    .title = Плава\n+pdfjs-editor-colorpicker-pink =\n+    .title = Розе\n+pdfjs-editor-colorpicker-red =\n+    .title = Црвена\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+pdfjs-editor-highlight-show-all-button-label = Прикажи све\n+pdfjs-editor-highlight-show-all-button =\n+    .title = Прикажи све\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Уреди алтернативни текст (опис слике)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Додај алтернативни текст (опис слике)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Напиши опис овде…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Кратак опис за слепе и слабовиде људе или када се слика не успе учитати.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Овај алтернативни текст је направљен аутоматски и може бити нетачан.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Сазнајте више\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Прави алтернативни текст аутоматски\n+pdfjs-editor-new-alt-text-not-now-button = Не сада\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsv-SE\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsv-SE\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsv-SE\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fsv-SE\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Aktuell sida (Visa URL från aktuell sida)\n pdfjs-bookmark-button-label = Aktuell sida\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Öppna i app\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Öppna i app\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = Filnamn:\n pdfjs-document-properties-file-size = Filstorlek:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } kB ({ $b } byte)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } byte)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } kB ({ $size_b } byte)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Skapades:\n pdfjs-document-properties-modification-date = Ändrades:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -281,6 +286,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type }-annotering]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -304,12 +312,29 @@\n pdfjs-editor-highlight-button =\n     .title = Markera\n pdfjs-editor-highlight-button-label = Markera\n-pdfjs-highlight-floating-button =\n-    .title = Markera\n pdfjs-highlight-floating-button1 =\n     .title = Markera\n     .aria-label = Markera\n pdfjs-highlight-floating-button-label = Markera\n+pdfjs-editor-signature-button =\n+    .title = Lägg till signatur\n+pdfjs-editor-signature-button-label = Lägg till signatur\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Markeringsredigerare\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Ritredigerare\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Signaturredigerare: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Bildredigerare\n \n ## Remove button for the various kind of editor.\n \n@@ -321,6 +346,8 @@\n     .title = Ta bort bild\n pdfjs-editor-remove-highlight-button =\n     .title = Ta bort markering\n+pdfjs-editor-remove-signature-button =\n+    .title = Ta bort signatur\n \n ##\n \n@@ -337,6 +364,20 @@\n pdfjs-editor-free-highlight-thickness-input = Tjocklek\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Ändra tjocklek när du markerar andra objekt än text\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Signaturkontroller och sparade signaturer\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Lägg till ny signatur\n+pdfjs-editor-signature-add-signature-button-label = Lägg till ny signatur\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Sparad signatur: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Textredigerare\n+    .default-content = Börja skriva…\n pdfjs-free-text =\n     .aria-label = Textredigerare\n pdfjs-free-text-default-content = Börja skriva…\n@@ -347,8 +388,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Alternativ text\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Redigera alternativ text\n pdfjs-editor-alt-text-edit-button-label = Redigera alternativ text\n pdfjs-editor-alt-text-dialog-label = Välj ett alternativ\n pdfjs-editor-alt-text-dialog-description = Alt text (alternativ text) hjälper till när människor inte kan se bilden eller när den inte laddas.\n@@ -362,6 +404,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Till exempel, \"En ung man sätter sig vid ett bord för att äta en måltid\"\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Alternativ text\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -374,6 +419,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Nedre mitten — ändra storlek\n pdfjs-editor-resizer-label-bottom-left = Nedre vänstra hörnet — ändra storlek\n pdfjs-editor-resizer-label-middle-left = Mitten till vänster — ändra storlek\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Det övre vänstra hörnet — ändra storlek\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Överst i mitten — ändra storlek\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Det övre högra hörnet — ändra storlek\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Mitten höger — ändra storlek\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Nedre högra hörnet — ändra storlek\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Nedre mitten — ändra storlek\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Nedre vänstra hörnet — ändra storlek\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Mitten till vänster — ändra storlek\n \n ## Color picker\n \n@@ -400,3 +461,155 @@\n pdfjs-editor-highlight-show-all-button-label = Visa alla\n pdfjs-editor-highlight-show-all-button =\n     .title = Visa alla\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Redigera alternativ text (bildbeskrivning)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Lägg till alternativ text (bildbeskrivning)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Skriv din beskrivning här…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Kort beskrivning för personer som inte kan se bilden eller när bilden inte laddas.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Denna alternativa text skapades automatiskt och kan vara felaktig.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Läs mer\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Skapa alternativ text automatiskt\n+pdfjs-editor-new-alt-text-not-now-button = Inte nu\n+pdfjs-editor-new-alt-text-error-title = Det gick inte att skapa alternativ text automatiskt\n+pdfjs-editor-new-alt-text-error-description = Skriv din egna alternativa text eller försök igen senare.\n+pdfjs-editor-new-alt-text-error-close-button = Stäng\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Hämtar AI-modell med alternativ text ({ $downloadedSize } av { $totalSize } MB)\n+    .aria-valuetext = Hämtar AI-modell med alternativ text ({ $downloadedSize } av { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Alternativ text tillagd\n+pdfjs-editor-new-alt-text-added-button-label = Alternativ text tillagd\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Saknar alternativ text\n+pdfjs-editor-new-alt-text-missing-button-label = Saknar alternativ text\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Granska alternativ text\n+pdfjs-editor-new-alt-text-to-review-button-label = Granska alternativ text\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Skapas automatiskt: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Alternativ textinställningar för bild\n+pdfjs-image-alt-text-settings-button-label = Alternativ textinställningar för bild\n+pdfjs-editor-alt-text-settings-dialog-label = Alternativ textinställningar för bild\n+pdfjs-editor-alt-text-settings-automatic-title = Automatisk alternativ text\n+pdfjs-editor-alt-text-settings-create-model-button-label = Skapa alternativ text automatiskt\n+pdfjs-editor-alt-text-settings-create-model-description = Föreslår beskrivningar för att hjälpa personer som inte kan se bilden eller när bilden inte laddas.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = AI-modell för alternativ text ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Körs lokalt på din enhet så att din data förblir privat. Krävs för automatisk alternativ text.\n+pdfjs-editor-alt-text-settings-delete-model-button = Ta bort\n+pdfjs-editor-alt-text-settings-download-model-button = Hämta\n+pdfjs-editor-alt-text-settings-downloading-model-button = Hämtar…\n+pdfjs-editor-alt-text-settings-editor-title = Alternativ textredigerare\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Visa alternativ textredigerare direkt när du lägger till en bild\n+pdfjs-editor-alt-text-settings-show-dialog-description = Hjälper dig att se till att alla dina bilder har alternativ text.\n+pdfjs-editor-alt-text-settings-close-button = Stäng\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Markering borttagen\n+pdfjs-editor-undo-bar-message-freetext = Text borttagen\n+pdfjs-editor-undo-bar-message-ink = Ritning borttagen\n+pdfjs-editor-undo-bar-message-stamp = Bild borttagen\n+pdfjs-editor-undo-bar-message-signature = Signatur borttagen\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } anteckning har tagits bort\n+       *[other] { $count } anteckningar har tagits bort\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Ångra\n+pdfjs-editor-undo-bar-undo-button-label = Ångra\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Stäng\n+pdfjs-editor-undo-bar-close-button-label = Stäng\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Denna modal tillåter användaren att skapa en signatur för att lägga till i ett PDF-dokument. Användaren kan redigera namnet (som också fungerar som alternativ text) och eventuellt spara signaturen för upprepad användning.\n+pdfjs-editor-add-signature-dialog-title = Lägg till en signatur\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Typ\n+    .title = Typ\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Rita\n+    .title = Rita\n+pdfjs-editor-add-signature-image-button = Bild\n+    .title = Bild\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Skriv din signatur\n+    .placeholder = Skriv din signatur\n+pdfjs-editor-add-signature-draw-placeholder = Rita din signatur\n+pdfjs-editor-add-signature-draw-thickness-range-label = Tjocklek\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Ritningstjocklek: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Dra en fil hit för att ladda upp\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Eller välj bildfiler\n+       *[other] Eller bläddra bland bildfiler\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Beskrivning (alternativ text)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Beskrivning (alternativ text)\n+pdfjs-editor-add-signature-description-default-when-drawing = Signatur\n+pdfjs-editor-add-signature-clear-button-label = Rensa signatur\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Rensa signatur\n+pdfjs-editor-add-signature-save-checkbox = Spara signatur\n+pdfjs-editor-add-signature-save-warning-message = Du har nått gränsen på 5 sparade signaturer. Ta bort en för att spara fler.\n+pdfjs-editor-add-signature-image-upload-error-title = Det gick inte att ladda upp bilden\n+pdfjs-editor-add-signature-image-upload-error-description = Kontrollera din nätverksanslutning eller försök med en annan bild.\n+pdfjs-editor-add-signature-error-close-button = Stäng\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Avbryt\n+pdfjs-editor-add-signature-add-button = Lägg till\n+pdfjs-editor-edit-signature-update-button = Uppdatera\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Ta bort sparad signatur\n+pdfjs-editor-delete-signature-button-label1 = Ta bort sparad signatur\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Redigera beskrivning\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Redigera beskrivning\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fszl\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fszl\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fszl\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fszl\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -249,9 +249,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fta\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fta\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fta\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fta\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -215,9 +215,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fte\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fte\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fte\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fte\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -224,6 +224,15 @@\n \n ## Editing\n \n+\n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n # Editor Parameters\n pdfjs-editor-free-text-color-input = రంగు\n pdfjs-editor-free-text-size-input = పరిమాణం\n@@ -237,3 +246,44 @@\n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ftg\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ftg\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ftg\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ftg\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -105,6 +105,14 @@\n pdfjs-document-properties-file-name = Номи файл:\n pdfjs-document-properties-file-size = Андозаи файл:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } КБ ({ $b } байт)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } МБ ({ $b } байт)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } КБ ({ $size_b } байт)\n@@ -119,6 +127,9 @@\n pdfjs-document-properties-creation-date = Санаи эҷод:\n pdfjs-document-properties-modification-date = Санаи тағйирот:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -275,6 +286,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [Ҳошиянависӣ - { $type }]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -298,12 +312,29 @@\n pdfjs-editor-highlight-button =\n     .title = Ҷудокунӣ\n pdfjs-editor-highlight-button-label = Ҷудокунӣ\n-pdfjs-highlight-floating-button =\n-    .title = Ҷудокунӣ\n pdfjs-highlight-floating-button1 =\n     .title = Ҷудокунӣ\n     .aria-label = Ҷудокунӣ\n pdfjs-highlight-floating-button-label = Ҷудокунӣ\n+pdfjs-editor-signature-button =\n+    .title = Илова кардани имзо\n+pdfjs-editor-signature-button-label = Илова кардани имзо\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Муҳаррири ҷудокунӣ\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Муҳаррири расмкашӣ\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Муҳаррири имзо: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Муҳаррири тасвир\n \n ## Remove button for the various kind of editor.\n \n@@ -315,6 +346,8 @@\n     .title = Тоза кардани тасвир\n pdfjs-editor-remove-highlight-button =\n     .title = Тоза кардани ҷудокунӣ\n+pdfjs-editor-remove-signature-button =\n+    .title = Тоза кардани имзо\n \n ##\n \n@@ -331,6 +364,20 @@\n pdfjs-editor-free-highlight-thickness-input = Ғафсӣ\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Иваз кардани ғафсӣ ҳангоми ҷудокунии унсурҳо ба ғайр аз матн\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Идоракунии имзоҳо ва имзоҳои гузошташуда\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Илова кардани имзои нав\n+pdfjs-editor-signature-add-signature-button-label = Илова кардани имзои нав\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Имзои гузошташуда: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Муҳаррири матн\n+    .default-content = Матнро ворид кунед…\n pdfjs-free-text =\n     .aria-label = Муҳаррири матн\n pdfjs-free-text-default-content = Нависед…\n@@ -341,9 +388,10 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n-pdfjs-editor-alt-text-button-label = Матни ивазкунанда\n-pdfjs-editor-alt-text-edit-button-label = Таҳрир кардани матни ивазкунанда\n+pdfjs-editor-alt-text-button-label = Матни иловагӣ\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Таҳрир кардани матни ивазкунанда\n+pdfjs-editor-alt-text-edit-button-label = Таҳрир кардани матни иловагӣ\n pdfjs-editor-alt-text-dialog-label = Имконеро интихоб намоед\n pdfjs-editor-alt-text-dialog-description = Вақте ки одамон тасвирро дида наметавонанд ё вақте ки тасвир бор карда намешавад, матни иловагӣ (Alt text) кумак мерасонад.\n pdfjs-editor-alt-text-add-description-label = Илова кардани тавсиф\n@@ -356,6 +404,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Барои мисол, «Ман забони тоҷикиро дӯст медорам»\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Матни ивазкунанда\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -368,6 +419,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Канори миёнаи поён — тағйир додани андоза\n pdfjs-editor-resizer-label-bottom-left = Кунҷи чапи поён — тағйир додани андоза\n pdfjs-editor-resizer-label-middle-left = Канори миёнаи чап — тағйир додани андоза\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Кунҷи чапи боло — тағйир додани андоза\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Канори миёнаи боло — тағйир додани андоза\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Кунҷи рости боло — тағйир додани андоза\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Канори миёнаи рост — тағйир додани андоза\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Кунҷи рости поён — тағйир додани андоза\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Канори миёнаи поён — тағйир додани андоза\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Кунҷи чапи поён — тағйир додани андоза\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Канори миёнаи чап — тағйир додани андоза\n \n ## Color picker\n \n@@ -394,3 +461,155 @@\n pdfjs-editor-highlight-show-all-button-label = Ҳамаро намоиш додан\n pdfjs-editor-highlight-show-all-button =\n     .title = Ҳамаро намоиш додан\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Таҳрир кардани матни иловагӣ (тафсири тасвир)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Илова кардани матни иловагӣ (тафсири тасвир)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Тафсири худро дар ин ҷо нависед…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Тавсифи мухтасар барои одамоне, ки аксҳоро дида наметавонанд ё вақте ки аксҳо кушода намешаванд.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Ин матни ивазкунанда ба таври худкор сохта шудааст ва шояд нодуруст бошад.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Маълумоти бештар\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Ба таври худкор эҷод кардани матни иловагӣ\n+pdfjs-editor-new-alt-text-not-now-button = Ҳоло не\n+pdfjs-editor-new-alt-text-error-title = Матни иловагӣ ба таври худкор эҷод карда нашуд\n+pdfjs-editor-new-alt-text-error-description = Лутфан, матни иловагии худро ворид кунед ё баъдтар аз нав кӯшиш кунед.\n+pdfjs-editor-new-alt-text-error-close-button = Пӯшидан\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Боргирии модели зеҳни сунъӣ (AI) барои матни ивазкунанда ({ $downloadedSize } аз { $totalSize } МБ)\n+    .aria-valuetext = Боргирии модели зеҳни сунъӣ (AI) барои матни ивазкунанда ({ $downloadedSize } аз { $totalSize } МБ)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Матни иловагӣ илова карда шуд\n+pdfjs-editor-new-alt-text-added-button-label = Матни иловагӣ илова карда шуд\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Матни иловагӣ вуҷуд надорад\n+pdfjs-editor-new-alt-text-missing-button-label = Матни иловагӣ вуҷуд надорад\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Бознигарӣ кардани матни иловагӣ\n+pdfjs-editor-new-alt-text-to-review-button-label = Бознигарӣ кардани матни иловагӣ\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Ба таври худкор сохта шудааст: «{ $generatedAltText }»\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Танзимоти матни иловагии тасвир\n+pdfjs-image-alt-text-settings-button-label = Танзимоти матни иловагии тасвир\n+pdfjs-editor-alt-text-settings-dialog-label = Танзимоти матни иловагии тасвир\n+pdfjs-editor-alt-text-settings-automatic-title = Матни иловагии худкор\n+pdfjs-editor-alt-text-settings-create-model-button-label = Ба таври худкор эҷод кардани матни иловагӣ\n+pdfjs-editor-alt-text-settings-create-model-description = Ин имкон барои расонидани кумак ба одамоне, ки аксҳоро дида наметавонанд ё вақте ки аксҳо кушода намешаванд, тавсифи аксҳоро пешниҳод мекунад.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Модели зеҳни сунъӣ «AI» барои матни ивазкунанда ({ $totalSize } МБ)\n+pdfjs-editor-alt-text-settings-ai-model-description = Дар дастгоҳи шумо ба таври маҳаллӣ кор мекунад, бинобар ин махфияти маълумоти шахсии шумо нигоҳ дошта мешавад. Барои матни ивазкунандаи худкор лозим аст.\n+pdfjs-editor-alt-text-settings-delete-model-button = Нест кардан\n+pdfjs-editor-alt-text-settings-download-model-button = Боргирӣ кардан\n+pdfjs-editor-alt-text-settings-downloading-model-button = Дар ҳоли боргирӣ…\n+pdfjs-editor-alt-text-settings-editor-title = Муҳаррири матни иловагӣ\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Дарҳол нишон додани муҳаррири матни ивазкунанда ҳангоми иловакунии тасвир\n+pdfjs-editor-alt-text-settings-show-dialog-description = Ба шумо кумак мекунад, ки боварӣ ҳосил кунед, ки ҳамаи тасвирҳои шумо дорои матни ивазкунанда мебошанд.\n+pdfjs-editor-alt-text-settings-close-button = Пӯшидан\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Ҷудосозӣ тоза карда шуд\n+pdfjs-editor-undo-bar-message-freetext = Матн тоза карда шуд\n+pdfjs-editor-undo-bar-message-ink = Расм тоза карда шуд\n+pdfjs-editor-undo-bar-message-stamp = Тасвир тоза карда шуд\n+pdfjs-editor-undo-bar-message-signature = Имзо тоза карда шуд\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } ҳошиянависӣ тоза карда шуд\n+       *[other] { $count } ҳошиянависӣ тоза карда шуданд\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Бекор кардан\n+pdfjs-editor-undo-bar-undo-button-label = Бекор кардан\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Пӯшидан\n+pdfjs-editor-undo-bar-close-button-label = Пӯшидан\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Ин равзанаи зоҳирӣ ба корбар имкон медиҳад, ки тавонад имзоеро эҷод карда, ба ҳуҷҷати «PDF» илова намояд. Корбар метавонад номро таҳрир кунад (ном, инчунин, ҳамчун матни иловагӣ хизмат мекунад), ва ихтиёран имзоро барои истифодаи такрорӣ нигоҳ медорад.\n+pdfjs-editor-add-signature-dialog-title = Илова кардани имзо\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Нависед\n+    .title = Нависед\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Имзо гузоред\n+    .title = Имзо гузоред\n+pdfjs-editor-add-signature-image-button = Тасвир\n+    .title = Тасвир\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Имзои худро бо ном нависед\n+    .placeholder = Имзои худро бо ном нависед\n+pdfjs-editor-add-signature-draw-placeholder = Имзои худро кашида, гузоред\n+pdfjs-editor-add-signature-draw-thickness-range-label = Ғафсӣ\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Ғафсии имзо: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Барои бор кардани файл, онро дар ин ҷой кашида, гузоред\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Ё файлҳои тасвириро интихоб кунед\n+       *[other] Ё файлҳои тасвириро интихоб кунед\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Тавсиф (матни иловагӣ)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Тавсиф (матни иловагӣ)\n+pdfjs-editor-add-signature-description-default-when-drawing = Имзо\n+pdfjs-editor-add-signature-clear-button-label = Пок кардани имзо\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Пок кардани имзо\n+pdfjs-editor-add-signature-save-checkbox = Нигоҳ доштани имзо\n+pdfjs-editor-add-signature-save-warning-message = Шумо ба ҳадди 5 имзои нигоҳдошташуда расидед. Барои нигоҳ доштани имзои нав, яке аз имзоҳои нигоҳдошташударо тоза намоед.\n+pdfjs-editor-add-signature-image-upload-error-title = Тасвир бор карда нашуд\n+pdfjs-editor-add-signature-image-upload-error-description = Пайвастшавии шабакаи худро санҷед ё тасвири дигареро кӯшиш кунед.\n+pdfjs-editor-add-signature-error-close-button = Пӯшидан\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Бекор кардан\n+pdfjs-editor-add-signature-add-button = Илова кардан\n+pdfjs-editor-edit-signature-update-button = Навсозӣ кардан\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Тоза кардани имзои гузошташуда\n+pdfjs-editor-delete-signature-button-label1 = Тоза кардани имзои гузошташуда\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Таҳрир кардани тавсиф\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Таҳрир кардани тавсиф\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fth\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fth\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fth\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fth\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = หน้าปัจจุบัน (ดู URL จากหน้าปัจจุบัน)\n pdfjs-bookmark-button-label = หน้าปัจจุบัน\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = เปิดในแอป\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = เปิดในแอป\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = ชื่อไฟล์:\n pdfjs-document-properties-file-size = ขนาดไฟล์:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } ไบต์)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } ไบต์)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } ไบต์)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = วันที่สร้าง:\n pdfjs-document-properties-modification-date = วันที่แก้ไข:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -273,6 +278,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [คำอธิบายประกอบ { $type }]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -296,12 +304,16 @@\n pdfjs-editor-highlight-button =\n     .title = เน้น\n pdfjs-editor-highlight-button-label = เน้น\n-pdfjs-highlight-floating-button =\n-    .title = เน้นสี\n pdfjs-highlight-floating-button1 =\n     .title = เน้นสี\n     .aria-label = เน้นสี\n pdfjs-highlight-floating-button-label = เน้นสี\n+pdfjs-editor-signature-button =\n+    .title = เพิ่มลายเซ็น\n+pdfjs-editor-signature-button-label = เพิ่มลายเซ็น\n+\n+## Default editor aria labels\n+\n \n ## Remove button for the various kind of editor.\n \n@@ -313,6 +325,8 @@\n     .title = เอาภาพออก\n pdfjs-editor-remove-highlight-button =\n     .title = เอาการเน้นสีออก\n+pdfjs-editor-remove-signature-button =\n+    .title = ลบลายเซ็น\n \n ##\n \n@@ -329,6 +343,13 @@\n pdfjs-editor-free-highlight-thickness-input = ความหนา\n pdfjs-editor-free-highlight-thickness-title =\n     .title = เปลี่ยนความหนาเมื่อเน้นรายการอื่นๆ ที่ไม่ใช่ข้อความ\n+pdfjs-editor-signature-add-signature-button =\n+    .title = เพิ่มลายเซ็นใหม่\n+pdfjs-editor-signature-add-signature-button-label = เพิ่มลายเซ็นใหม่\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = ตัวแก้ไขข้อความ\n+    .default-content = เริ่มพิมพ์ได้เลย…\n pdfjs-free-text =\n     .aria-label = ตัวแก้ไขข้อความ\n pdfjs-free-text-default-content = เริ่มพิมพ์…\n@@ -339,8 +360,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = ข้อความทดแทน\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = แก้ไขข้อความทดแทน\n pdfjs-editor-alt-text-edit-button-label = แก้ไขข้อความทดแทน\n pdfjs-editor-alt-text-dialog-label = เลือกตัวเลือก\n pdfjs-editor-alt-text-dialog-description = ข้อความทดแทนสามารถช่วยเหลือได้เมื่อผู้ใช้มองไม่เห็นภาพ หรือภาพไม่โหลด\n@@ -354,6 +376,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = ตัวอย่างเช่น “ชายหนุ่มคนหนึ่งนั่งลงที่โต๊ะเพื่อรับประทานอาหารมื้อหนึ่ง”\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = ข้อความทดแทน\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -366,6 +391,22 @@\n pdfjs-editor-resizer-label-bottom-middle = ตรงกลางด้านล่าง — ปรับขนาด\n pdfjs-editor-resizer-label-bottom-left = มุมซ้ายล่าง — ปรับขนาด\n pdfjs-editor-resizer-label-middle-left = ตรงกลางด้านซ้าย — ปรับขนาด\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = มุมซ้ายบน — ปรับขนาด\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = ตรงกลางด้านบน — ปรับขนาด\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = มุมขวาบน — ปรับขนาด\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = ตรงกลางด้านขวา — ปรับขนาด\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = มุมขวาล่าง — ปรับขนาด\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = ตรงกลางด้านล่าง — ปรับขนาด\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = มุมซ้ายล่าง — ปรับขนาด\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = ตรงกลางด้านซ้าย — ปรับขนาด\n \n ## Color picker\n \n@@ -392,3 +433,148 @@\n pdfjs-editor-highlight-show-all-button-label = แสดงทั้งหมด\n pdfjs-editor-highlight-show-all-button =\n     .title = แสดงทั้งหมด\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = แก้ไขข้อความทดแทน (คำอธิบายภาพ)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = เพิ่มข้อความทดแทน (คำอธิบายภาพ)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = เขียนคำอธิบายของคุณที่นี่…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = คำอธิบายสั้นๆ สำหรับผู้ที่ไม่สามารถมองเห็นภาพหรือเมื่อภาพไม่โหลด\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = ข้อความทดแทนนี้ถูกสร้างขึ้นโดยอัตโนมัติและอาจไม่ถูกต้อง\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = เรียนรู้เพิ่มเติม\n+pdfjs-editor-new-alt-text-create-automatically-button-label = สร้างข้อความทดแทนโดยอัตโนมัติ\n+pdfjs-editor-new-alt-text-not-now-button = ไม่ใช่ตอนนี้\n+pdfjs-editor-new-alt-text-error-title = ไม่สามารถสร้างข้อความทดแทนโดยอัตโนมัติได้\n+pdfjs-editor-new-alt-text-error-description = กรุณาเขียนข้อความทดแทนด้วยตัวเองหรือลองใหม่อีกครั้งในภายหลัง\n+pdfjs-editor-new-alt-text-error-close-button = ปิด\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = กำลังดาวน์โหลดโมเดล AI สำหรับข้อความทดแทน ({ $downloadedSize } จาก { $totalSize } MB)\n+    .aria-valuetext = กำลังดาวน์โหลดโมเดล AI สำหรับข้อความทดแทน ({ $downloadedSize } จาก { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = เพิ่มข้อความทดแทนแล้ว\n+pdfjs-editor-new-alt-text-added-button-label = เพิ่มข้อความทดแทนแล้ว\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = ขาดข้อความทดแทน\n+pdfjs-editor-new-alt-text-missing-button-label = ขาดข้อความทดแทน\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = ตรวจสอบข้อความทดแทน\n+pdfjs-editor-new-alt-text-to-review-button-label = ตรวจสอบข้อความทดแทน\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = สร้างขึ้นโดยอัตโนมัติ: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = ตั้งค่าข้อความทดแทนภาพ\n+pdfjs-image-alt-text-settings-button-label = ตั้งค่าข้อความทดแทนภาพ\n+pdfjs-editor-alt-text-settings-dialog-label = ตั้งค่าข้อความทดแทนภาพ\n+pdfjs-editor-alt-text-settings-automatic-title = การทดแทนด้วยข้อความอัตโนมัติ\n+pdfjs-editor-alt-text-settings-create-model-button-label = สร้างข้อความทดแทนอัตโนมัติ\n+pdfjs-editor-alt-text-settings-create-model-description = แนะนำคำอธิบายเพื่อช่วยเหลือผู้ที่ไม่สามารถมองเห็นภาพหรือเมื่อภาพไม่โหลด\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = โมเดล AI สำหรับข้อความทดแทน ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = ทำงานในเครื่องของคุณเพื่อให้ข้อมูลของคุณเป็นส่วนตัว จำเป็นสำหรับข้อความทดแทนอัตโนมัติ\n+pdfjs-editor-alt-text-settings-delete-model-button = ลบ\n+pdfjs-editor-alt-text-settings-download-model-button = ดาวน์โหลด\n+pdfjs-editor-alt-text-settings-downloading-model-button = กำลังดาวน์โหลด…\n+pdfjs-editor-alt-text-settings-editor-title = ตัวแก้ไขข้อความทดแทน\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = แสดงตัวแก้ไขข้อความทดแทนทันทีเมื่อเพิ่มภาพ\n+pdfjs-editor-alt-text-settings-show-dialog-description = ช่วยให้คุณแน่ใจว่าภาพทั้งหมดของคุณมีข้อความทดแทน\n+pdfjs-editor-alt-text-settings-close-button = ปิด\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = เอาการเน้นสีออกแล้ว\n+pdfjs-editor-undo-bar-message-freetext = เอาข้อความออกแล้ว\n+pdfjs-editor-undo-bar-message-ink = เอาภาพวาดออกแล้ว\n+pdfjs-editor-undo-bar-message-stamp = เอาภาพออกแล้ว\n+pdfjs-editor-undo-bar-message-signature = ลบลายเซ็นแล้ว\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple = เอาคำอธิบายประกอบ { $count } รายการออกแล้ว\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = เลิกทำ\n+pdfjs-editor-undo-bar-undo-button-label = เลิกทำ\n+pdfjs-editor-undo-bar-close-button =\n+    .title = ปิด\n+pdfjs-editor-undo-bar-close-button-label = ปิด\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = โมดัลนี้ช่วยให้ผู้ใช้สามารถสร้างลายเซ็นเพื่อใช้เพิ่มลงในเอกสาร PDF ได้ ผู้ใช้สามารถแก้ไขชื่อ (ซึ่งใช้เป็นข้อความทดแทนได้ด้วย) และสามารถเลือกบันทึกลายเซ็นเพื่อใช้งานซ้ำได้\n+pdfjs-editor-add-signature-dialog-title = เพิ่มลายเซ็น\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = พิมพ์\n+    .title = พิมพ์\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = วาด\n+    .title = วาด\n+pdfjs-editor-add-signature-image-button = ภาพ\n+    .title = ภาพ\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = พิมพ์ลายเซ็นของคุณ\n+    .placeholder = พิมพ์ลายเซ็นของคุณ\n+pdfjs-editor-add-signature-draw-placeholder = วาดลายเซ็นของคุณ\n+pdfjs-editor-add-signature-draw-thickness-range-label = ความหนา\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = ความหนาของการวาด: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = ลากไฟล์มาที่นี่เพื่ออัปโหลด\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] หรือเลือกไฟล์ภาพ\n+       *[other] หรือเรียกดูไฟล์ภาพ\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = คำอธิบาย (ข้อความทดแทน)\n+pdfjs-editor-add-signature-description-input =\n+    .title = คำอธิบาย (ข้อความทดแทน)\n+pdfjs-editor-add-signature-description-default-when-drawing = ลายเซ็น\n+pdfjs-editor-add-signature-clear-button-label = ล้างลายเซ็น\n+pdfjs-editor-add-signature-clear-button =\n+    .title = ล้างลายเซ็น\n+pdfjs-editor-add-signature-save-checkbox = บันทึกลายเซ็น\n+pdfjs-editor-add-signature-save-warning-message = คุณมีลายเซ็นที่บันทึกถึงจำนวนสูงสุด 5 รายการแล้ว โปรดลบรายการหนึ่งออกเมื่อจะบันทึกเพิ่ม\n+pdfjs-editor-add-signature-image-upload-error-title = ไม่สามารถอัปโหลดภาพได้\n+pdfjs-editor-add-signature-image-upload-error-description = ตรวจสอบการเชื่อมต่อเครือข่ายของคุณหรือลองใช้ภาพอื่น\n+pdfjs-editor-add-signature-error-close-button = ปิด\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = ยกเลิก\n+pdfjs-editor-add-signature-add-button = เพิ่ม\n+pdfjs-editor-edit-signature-update-button = อัปเดต\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = แก้ไขคำอธิบาย\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = แก้ไขคำอธิบาย\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ftl\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ftl\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ftl\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ftl\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -249,9 +249,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ftr\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ftr\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ftr\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ftr\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -105,6 +105,14 @@\n pdfjs-document-properties-file-name = Dosya adı:\n pdfjs-document-properties-file-size = Dosya boyutu:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bayt)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bayt)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bayt)\n@@ -119,6 +127,9 @@\n pdfjs-document-properties-creation-date = Oluşturma tarihi:\n pdfjs-document-properties-modification-date = Değiştirme tarihi:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date } { $time }\n@@ -275,6 +286,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type } işareti]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -298,12 +312,29 @@\n pdfjs-editor-highlight-button =\n     .title = Vurgula\n pdfjs-editor-highlight-button-label = Vurgula\n-pdfjs-highlight-floating-button =\n-    .title = Vurgula\n pdfjs-highlight-floating-button1 =\n     .title = Vurgula\n     .aria-label = Vurgula\n pdfjs-highlight-floating-button-label = Vurgula\n+pdfjs-editor-signature-button =\n+    .title = İmza ekle\n+pdfjs-editor-signature-button-label = İmza ekle\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Vurgu düzenleyici\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Çizim düzenleyici\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = İmza düzenleyici: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Resim düzenleyici\n \n ## Remove button for the various kind of editor.\n \n@@ -315,6 +346,8 @@\n     .title = Resmi kaldır\n pdfjs-editor-remove-highlight-button =\n     .title = Vurgulamayı kaldır\n+pdfjs-editor-remove-signature-button =\n+    .title = İmzayı kaldır\n \n ##\n \n@@ -331,6 +364,20 @@\n pdfjs-editor-free-highlight-thickness-input = Kalınlık\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Metin dışındaki öğeleri vurgularken kalınlığı değiştir\n+pdfjs-editor-add-signature-container =\n+    .aria-label = İmza yönetimi ve kayıtlı imzalar\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Yeni imza ekle\n+pdfjs-editor-signature-add-signature-button-label = Yeni imza ekle\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Kayıtlı imza: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Metin düzenleyicisi\n+    .default-content = Yazmaya başlayın…\n pdfjs-free-text =\n     .aria-label = Metin düzenleyicisi\n pdfjs-free-text-default-content = Yazmaya başlayın…\n@@ -341,8 +388,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Alternatif metin\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Alternatif metni düzenle\n pdfjs-editor-alt-text-edit-button-label = Alternatif metni düzenle\n pdfjs-editor-alt-text-dialog-label = Bir seçenek seçin\n pdfjs-editor-alt-text-dialog-description = Alternatif metin, insanlar resmi göremediğinde veya resim yüklenmediğinde işe yarar.\n@@ -356,6 +404,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Örneğin, “Genç bir adam yemek yemek için masaya oturuyor”\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Alternatif metin\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -368,6 +419,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Alt orta — yeniden boyutlandır\n pdfjs-editor-resizer-label-bottom-left = Sol alt köşe — yeniden boyutlandır\n pdfjs-editor-resizer-label-middle-left = Orta sol — yeniden boyutlandır\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Sol üst köşe — yeniden boyutlandır\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Üst orta — yeniden boyutlandır\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Sağ üst köşe — yeniden boyutlandır\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Orta sağ — yeniden boyutlandır\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Sağ alt köşe — yeniden boyutlandır\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Alt orta — yeniden boyutlandır\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Sol alt köşe — yeniden boyutlandır\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Orta sol — yeniden boyutlandır\n \n ## Color picker\n \n@@ -394,3 +461,155 @@\n pdfjs-editor-highlight-show-all-button-label = Tümünü göster\n pdfjs-editor-highlight-show-all-button =\n     .title = Tümünü göster\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Alt metni düzenle (resim açıklaması)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Alt metin ekle (resim açıklaması)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Açıklamanızı buraya yazın…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Görme engelli kişilere gösterilecek veya resmin yüklenemediği durumlarda gösterilecek kısa açıklama.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Bu alt metin otomatik olarak oluşturulmuştur ve hatalı olabilir.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Daha fazla bilgi alın\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Otomatik olarak alt metin oluştur\n+pdfjs-editor-new-alt-text-not-now-button = Şimdi değil\n+pdfjs-editor-new-alt-text-error-title = Alt metin otomatik olarak oluşturulamadı\n+pdfjs-editor-new-alt-text-error-description = Lütfen kendi alt metninizi yazın veya daha sonra yeniden deneyin.\n+pdfjs-editor-new-alt-text-error-close-button = Kapat\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Alt metin yapay zekâ modeli indiriliyor ({ $downloadedSize } \u002F { $totalSize } MB)\n+    .aria-valuetext = Alt metin yapay zekâ modeli indiriliyor ({ $downloadedSize } \u002F { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Alternatif metin eklendi\n+pdfjs-editor-new-alt-text-added-button-label = Alt metin eklendi\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Alternatif metin eksik\n+pdfjs-editor-new-alt-text-missing-button-label = Alt metin eksik\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Alternatif metni incele\n+pdfjs-editor-new-alt-text-to-review-button-label = Alt metni incele\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Otomatik olarak oluşturuldu: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Resim alt metni ayarları\n+pdfjs-image-alt-text-settings-button-label = Resim alt metni ayarları\n+pdfjs-editor-alt-text-settings-dialog-label = Resim alt metni ayarları\n+pdfjs-editor-alt-text-settings-automatic-title = Otomatik alt metin\n+pdfjs-editor-alt-text-settings-create-model-button-label = Otomatik olarak alt metin oluştur\n+pdfjs-editor-alt-text-settings-create-model-description = Görme engelli kişilere gösterilecek veya resmin yüklenemediği durumlarda gösterilecek açıklamalar önerir.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Alt metin yapay zekâ modeli ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Verilerinizin gizli kalması için cihazınızda yerel olarak çalışır. Otomatik alt metin için gereklidir.\n+pdfjs-editor-alt-text-settings-delete-model-button = Sil\n+pdfjs-editor-alt-text-settings-download-model-button = İndir\n+pdfjs-editor-alt-text-settings-downloading-model-button = İndiriliyor…\n+pdfjs-editor-alt-text-settings-editor-title = Alt metin düzenleyicisi\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Resim eklerken alt metin düzenleyicisini hemen göster\n+pdfjs-editor-alt-text-settings-show-dialog-description = Tüm resimlerinizin alt metne sahip olduğundan emin olmanızı sağlar.\n+pdfjs-editor-alt-text-settings-close-button = Kapat\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Vurgulama silindi\n+pdfjs-editor-undo-bar-message-freetext = Metin silindi\n+pdfjs-editor-undo-bar-message-ink = Çizim silindi\n+pdfjs-editor-undo-bar-message-stamp = Görsel silindi\n+pdfjs-editor-undo-bar-message-signature = İmza kaldırıldı\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } ek açıklama silindi\n+       *[other] { $count } ek açıklama silindi\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Geri al\n+pdfjs-editor-undo-bar-undo-button-label = Geri al\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Kapat\n+pdfjs-editor-undo-bar-close-button-label = Kapat\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Bu pencereden PDF belgesine eklemek üzere imza oluşturabilirsiniz. Adınızı düzenleyebilir (adınız alt metin olarak da kullanılır) ve isterseniz ileride tekrar kullanmak üzere imzayı kaydedebilirsiniz.\n+pdfjs-editor-add-signature-dialog-title = İmza ekle\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Yaz\n+    .title = Yaz\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Çiz\n+    .title = Çiz\n+pdfjs-editor-add-signature-image-button = Resim\n+    .title = Resim\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = İmzanızı yazın\n+    .placeholder = İmzanızı yazın\n+pdfjs-editor-add-signature-draw-placeholder = İmzanızı çizin\n+pdfjs-editor-add-signature-draw-thickness-range-label = Kalınlık\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Çizgi kalınlığı: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Yüklenecek dosyayı buraya sürükleyin\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Veya resim dosyalarına göz atın\n+       *[other] Veya resim dosyalarına göz atın\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Açıklama (alt metin)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Açıklama (alt metin)\n+pdfjs-editor-add-signature-description-default-when-drawing = İmza\n+pdfjs-editor-add-signature-clear-button-label = İmzayı temizle\n+pdfjs-editor-add-signature-clear-button =\n+    .title = İmzayı temizle\n+pdfjs-editor-add-signature-save-checkbox = İmzayı kaydet\n+pdfjs-editor-add-signature-save-warning-message = Kayıtlı 5 imza sınırına ulaştınız. Daha fazla imza kaydetmek için imzalardan birini kaldırın.\n+pdfjs-editor-add-signature-image-upload-error-title = Resim yüklenemedi\n+pdfjs-editor-add-signature-image-upload-error-description = Ağ bağlantınızı kontrol edin veya başka bir resim deneyin.\n+pdfjs-editor-add-signature-error-close-button = Kapat\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Vazgeç\n+pdfjs-editor-add-signature-add-button = Ekle\n+pdfjs-editor-edit-signature-update-button = Güncelle\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Kayıtlı imzayı kaldır\n+pdfjs-editor-delete-signature-button-label1 = Kayıtlı imzayı kaldır\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Açıklamayı düzenle\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Açıklamayı düzenle\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ftrs\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ftrs\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ftrs\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Ftrs\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -189,9 +189,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fuk\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fuk\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fuk\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fuk\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -105,9 +105,17 @@\n pdfjs-document-properties-file-name = Назва файлу:\n pdfjs-document-properties-file-size = Розмір файлу:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } кБ ({ $b } байтів)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } МБ ({ $b } байтів)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n-pdfjs-document-properties-kb = { $size_kb } КБ ({ $size_b } байтів)\n+pdfjs-document-properties-kb = { $size_kb } кБ ({ $size_b } байтів)\n # Variables:\n #   $size_mb (Number) - the PDF file size in megabytes\n #   $size_b (Number) - the PDF file size in bytes\n@@ -119,6 +127,9 @@\n pdfjs-document-properties-creation-date = Дата створення:\n pdfjs-document-properties-modification-date = Дата зміни:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -277,6 +288,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type }-анотація]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -284,7 +298,7 @@\n pdfjs-password-invalid = Неправильний пароль. Спробуйте ще раз.\n pdfjs-password-ok-button = OK\n pdfjs-password-cancel-button = Скасувати\n-pdfjs-web-fonts-disabled = Веб-шрифти вимкнено: неможливо використати вбудовані у PDF шрифти.\n+pdfjs-web-fonts-disabled = Вебшрифти вимкнено: неможливо використати вбудовані у PDF шрифти.\n \n ## Editing\n \n@@ -300,12 +314,29 @@\n pdfjs-editor-highlight-button =\n     .title = Підсвітити\n pdfjs-editor-highlight-button-label = Підсвітити\n-pdfjs-highlight-floating-button =\n-    .title = Підсвітити\n pdfjs-highlight-floating-button1 =\n     .title = Підсвітити\n     .aria-label = Підсвітити\n pdfjs-highlight-floating-button-label = Підсвітити\n+pdfjs-editor-signature-button =\n+    .title = Додати підпис\n+pdfjs-editor-signature-button-label = Додати підпис\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Редактор підсвічень\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Редактор малюнків\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Редактор підпису: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Редактор зображень\n \n ## Remove button for the various kind of editor.\n \n@@ -316,7 +347,9 @@\n pdfjs-editor-remove-stamp-button =\n     .title = Вилучити зображення\n pdfjs-editor-remove-highlight-button =\n-    .title = Вилучити підсвічування\n+    .title = Вилучити підсвічення\n+pdfjs-editor-remove-signature-button =\n+    .title = Вилучити підпис\n \n ##\n \n@@ -332,7 +365,21 @@\n # This refers to the thickness of the line used for free highlighting (not bound to text)\n pdfjs-editor-free-highlight-thickness-input = Товщина\n pdfjs-editor-free-highlight-thickness-title =\n-    .title = Змінюйте товщину під час підсвічування елементів, крім тексту\n+    .title = Змінюйте товщину під час підсвічення елементів, крім тексту\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Елементи керування підписами та збережені підписи\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Додати новий підпис\n+pdfjs-editor-signature-add-signature-button-label = Додати новий підпис\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Збережений підпис: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Текстовий редактор\n+    .default-content = Напишіть щось…\n pdfjs-free-text =\n     .aria-label = Текстовий редактор\n pdfjs-free-text-default-content = Почніть вводити…\n@@ -343,8 +390,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Альтернативний текст\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Редагувати альтернативний текст\n pdfjs-editor-alt-text-edit-button-label = Змінити альтернативний текст\n pdfjs-editor-alt-text-dialog-label = Вибрати варіант\n pdfjs-editor-alt-text-dialog-description = Альтернативний текст допомагає, коли зображення не видно або коли воно не завантажується.\n@@ -358,6 +406,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Наприклад, “Молодий чоловік сідає за стіл їсти”\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Альтернативний текст\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -370,11 +421,27 @@\n pdfjs-editor-resizer-label-bottom-middle = Внизу посередині – зміна розміру\n pdfjs-editor-resizer-label-bottom-left = Нижній лівий кут – зміна розміру\n pdfjs-editor-resizer-label-middle-left = Ліворуч посередині – зміна розміру\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Верхній лівий кут – зміна розміру\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Вгорі посередині – зміна розміру\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Верхній правий кут – зміна розміру\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Праворуч посередині – зміна розміру\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Нижній правий кут – зміна розміру\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Внизу посередині – зміна розміру\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Нижній лівий кут – зміна розміру\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Ліворуч посередині – зміна розміру\n \n ## Color picker\n \n # This means \"Color used to highlight text\"\n-pdfjs-editor-highlight-colorpicker-label = Колір підсвічування\n+pdfjs-editor-highlight-colorpicker-label = Колір підсвічення\n pdfjs-editor-colorpicker-button =\n     .title = Змінити колір\n pdfjs-editor-colorpicker-dropdown =\n@@ -396,3 +463,156 @@\n pdfjs-editor-highlight-show-all-button-label = Показати все\n pdfjs-editor-highlight-show-all-button =\n     .title = Показати все\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Редагувати альтернативний текст (опис зображення)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Додати альтернативний текст (опис зображення)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Напишіть свій опис тут…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Короткий опис для людей, які не бачать зображення, або якщо зображення не завантажується.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Цей альтернативний текст створено автоматично, тому він може бути неточним.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Докладніше\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Автоматично створювати альтернативний текст\n+pdfjs-editor-new-alt-text-not-now-button = Не зараз\n+pdfjs-editor-new-alt-text-error-title = Не вдалося автоматично створити альтернативний текст\n+pdfjs-editor-new-alt-text-error-description = Напишіть власний альтернативний текст або повторіть спробу пізніше.\n+pdfjs-editor-new-alt-text-error-close-button = Закрити\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Завантаження моделі ШІ для альтернативного тексту ({ $downloadedSize } з { $totalSize } МБ)\n+    .aria-valuetext = Завантаження моделі ШІ для альтернативного тексту ({ $downloadedSize } з { $totalSize } МБ)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Альтернативний текст додано\n+pdfjs-editor-new-alt-text-added-button-label = Альтернативний текст додано\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Відсутній альтернативний текст\n+pdfjs-editor-new-alt-text-missing-button-label = Відсутній альтернативний текст\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Переглянути альтернативний текст\n+pdfjs-editor-new-alt-text-to-review-button-label = Переглянути альтернативний текст\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Створено автоматично: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Налаштування альтернативного тексту зображення\n+pdfjs-image-alt-text-settings-button-label = Налаштування альтернативного тексту зображення\n+pdfjs-editor-alt-text-settings-dialog-label = Налаштування альтернативного тексту зображення\n+pdfjs-editor-alt-text-settings-automatic-title = Автоматичний альтернативний текст\n+pdfjs-editor-alt-text-settings-create-model-button-label = Автоматично створювати альтернативний текст\n+pdfjs-editor-alt-text-settings-create-model-description = Пропонує описи, щоб допомогти людям, які не бачать зображення, або якщо зображення не завантажується.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Модель ШІ для альтернативного тексту ({ $totalSize } МБ)\n+pdfjs-editor-alt-text-settings-ai-model-description = Працює локально на вашому пристрої, тому приватність ваших даних захищена. Призначена для автоматичного створення альтернативного тексту.\n+pdfjs-editor-alt-text-settings-delete-model-button = Видалити\n+pdfjs-editor-alt-text-settings-download-model-button = Завантажити\n+pdfjs-editor-alt-text-settings-downloading-model-button = Завантаження…\n+pdfjs-editor-alt-text-settings-editor-title = Редактор альтернативного тексту\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Показувати редактор альтернативного тексту під час додавання зображення\n+pdfjs-editor-alt-text-settings-show-dialog-description = Допомагає переконатися, що всі ваші зображення мають альтернативний текст.\n+pdfjs-editor-alt-text-settings-close-button = Закрити\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Підсвічення вилучено\n+pdfjs-editor-undo-bar-message-freetext = Текст вилучено\n+pdfjs-editor-undo-bar-message-ink = Малюнок вилучено\n+pdfjs-editor-undo-bar-message-stamp = Зображення вилучено\n+pdfjs-editor-undo-bar-message-signature = Підпис вилучено\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple =\n+    { $count ->\n+        [one] { $count } анотацію вилучено\n+        [few] { $count } анотації вилучено\n+       *[many] { $count } анотацій вилучено\n+    }\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Повернути\n+pdfjs-editor-undo-bar-undo-button-label = Повернути\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Закрити\n+pdfjs-editor-undo-bar-close-button-label = Закрити\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = У цьому вікні користувач може створити підпис для додавання до PDF-документа. Користувач може відредагувати назву (яка також слугує альтернативним текстом) і, за бажання, зберегти підпис для повторного використання.\n+pdfjs-editor-add-signature-dialog-title = Додати підпис\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Ввести\n+    .title = Ввести\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Малювати\n+    .title = Малювати\n+pdfjs-editor-add-signature-image-button = Зображення\n+    .title = Зображення\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Введіть свій підпис\n+    .placeholder = Введіть свій підпис\n+pdfjs-editor-add-signature-draw-placeholder = Намалюйте свій підпис\n+pdfjs-editor-add-signature-draw-thickness-range-label = Товщина\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Товщина лінії: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Перетягніть файл сюди, щоб вивантажити\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Або виберіть файли зображень\n+       *[other] Або перегляньте файли зображень\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Опис (альтернативний текст)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Опис (альтернативний текст)\n+pdfjs-editor-add-signature-description-default-when-drawing = Підпис\n+pdfjs-editor-add-signature-clear-button-label = Очистити підпис\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Очистити підпис\n+pdfjs-editor-add-signature-save-checkbox = Зберегти підпис\n+pdfjs-editor-add-signature-save-warning-message = Ви досягли ліміту в 5 збережених підписів. Вилучіть один, щоб зберегти інший.\n+pdfjs-editor-add-signature-image-upload-error-title = Не вдалося вивантажити зображення\n+pdfjs-editor-add-signature-image-upload-error-description = Перевірте мережеве з'єднання або спробуйте інше зображення.\n+pdfjs-editor-add-signature-error-close-button = Закрити\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Скасувати\n+pdfjs-editor-add-signature-add-button = Додати\n+pdfjs-editor-edit-signature-update-button = Оновити\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Видалити збережений підпис\n+pdfjs-editor-delete-signature-button-label1 = Видалити збережений підпис\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Редагувати опис\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Редагувати опис\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fur\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fur\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fur\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fur\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -240,9 +240,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fuz\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fuz\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fuz\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fuz\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -179,9 +179,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fvi\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fvi\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fvi\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fvi\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = Trang hiện tại (xem URL từ trang hiện tại)\n pdfjs-bookmark-button-label = Trang hiện tại\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = Mở trong ứng dụng\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = Mở trong ứng dụng\n \n ##  Secondary toolbar and context menu\n \n@@ -111,6 +105,14 @@\n pdfjs-document-properties-file-name = Tên tập tin:\n pdfjs-document-properties-file-size = Kích thước:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bytes)\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } byte)\n@@ -125,6 +127,9 @@\n pdfjs-document-properties-creation-date = Ngày tạo:\n pdfjs-document-properties-modification-date = Ngày sửa đổi:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -273,6 +278,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type } Chú thích]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -296,12 +304,29 @@\n pdfjs-editor-highlight-button =\n     .title = Đánh dấu\n pdfjs-editor-highlight-button-label = Đánh dấu\n-pdfjs-highlight-floating-button =\n-    .title = Đánh dấu\n pdfjs-highlight-floating-button1 =\n     .title = Đánh dấu\n     .aria-label = Đánh dấu\n pdfjs-highlight-floating-button-label = Đánh dấu\n+pdfjs-editor-signature-button =\n+    .title = Thêm chữ ký\n+pdfjs-editor-signature-button-label = Thêm chữ ký\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = Trình chỉnh sửa đánh dấu\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = Trình chỉnh sửa bản vẽ\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = Trình chỉnh sửa chữ ký: { $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = Trình chỉnh sửa hình ảnh\n \n ## Remove button for the various kind of editor.\n \n@@ -313,6 +338,8 @@\n     .title = Xóa ảnh\n pdfjs-editor-remove-highlight-button =\n     .title = Xóa phần đánh dấu\n+pdfjs-editor-remove-signature-button =\n+    .title = Xoá chữ ký\n \n ##\n \n@@ -329,6 +356,20 @@\n pdfjs-editor-free-highlight-thickness-input = Độ dày\n pdfjs-editor-free-highlight-thickness-title =\n     .title = Thay đổi độ dày khi đánh dấu các mục không phải là văn bản\n+pdfjs-editor-add-signature-container =\n+    .aria-label = Kiểm soát chữ ký và chữ ký đã lưu\n+pdfjs-editor-signature-add-signature-button =\n+    .title = Thêm chữ ký mới\n+pdfjs-editor-signature-add-signature-button-label = Thêm chữ ký mới\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = Đã lưu chữ ký: { $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = Trình chỉnh sửa văn bản\n+    .default-content = Bắt đầu nhập…\n pdfjs-free-text =\n     .aria-label = Trình sửa văn bản\n pdfjs-free-text-default-content = Bắt đầu nhập…\n@@ -339,8 +380,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = Văn bản thay thế\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = Chỉnh sửa văn bản thay thế\n pdfjs-editor-alt-text-edit-button-label = Chỉnh sửa văn bản thay thế\n pdfjs-editor-alt-text-dialog-label = Chọn một lựa chọn\n pdfjs-editor-alt-text-dialog-description = Văn bản thay thế sẽ hữu ích khi mọi người không thể thấy hình ảnh hoặc khi hình ảnh không tải.\n@@ -354,6 +396,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = Ví dụ: “Một thanh niên ngồi xuống bàn để thưởng thức một bữa ăn”\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = Văn bản thay thế\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -366,6 +411,22 @@\n pdfjs-editor-resizer-label-bottom-middle = Ở giữa dưới cùng — thay đổi kích thước\n pdfjs-editor-resizer-label-bottom-left = Góc dưới bên trái — thay đổi kích thước\n pdfjs-editor-resizer-label-middle-left = Ở giữa bên trái — thay đổi kích thước\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = Trên cùng bên trái — thay đổi kích thước\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = Trên cùng ở giữa — thay đổi kích thước\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = Trên cùng bên phải — thay đổi kích thước\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = Ở giữa bên phải — thay đổi kích thước\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = Dưới cùng bên phải — thay đổi kích thước\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = Ở giữa dưới cùng — thay đổi kích thước\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = Góc dưới bên trái — thay đổi kích thước\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = Ở giữa bên trái — thay đổi kích thước\n \n ## Color picker\n \n@@ -392,3 +453,151 @@\n pdfjs-editor-highlight-show-all-button-label = Hiện tất cả\n pdfjs-editor-highlight-show-all-button =\n     .title = Hiện tất cả\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = Chỉnh sửa văn bản thay thế (mô tả hình ảnh)\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = Thêm văn bản thay thế (mô tả hình ảnh)\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = Viết mô tả của bạn ở đây…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = Mô tả ngắn gọn dành cho người không xem được ảnh hoặc khi không thể tải ảnh.\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = Văn bản thay thế này được tạo tự động và có thể không chính xác.\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = Tìm hiểu thêm\n+pdfjs-editor-new-alt-text-create-automatically-button-label = Tạo văn bản thay thế tự động\n+pdfjs-editor-new-alt-text-not-now-button = Không phải bây giờ\n+pdfjs-editor-new-alt-text-error-title = Không thể tạo tự động văn bản thay thế\n+pdfjs-editor-new-alt-text-error-description = Vui lòng viết văn bản thay thế của riêng bạn hoặc thử lại sau.\n+pdfjs-editor-new-alt-text-error-close-button = Đóng\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = Đang tải xuống mô hình AI văn bản thay thế ({ $downloadedSize } \u002F { $totalSize } MB)\n+    .aria-valuetext = Đang tải xuống mô hình AI văn bản thay thế ({ $downloadedSize } \u002F { $totalSize } MB)\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = Đã thêm văn bản thay thế\n+pdfjs-editor-new-alt-text-added-button-label = Đã thêm văn bản thay thế\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = Thiếu văn bản thay thế\n+pdfjs-editor-new-alt-text-missing-button-label = Thiếu văn bản thay thế\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = Xem lại văn bản thay thế\n+pdfjs-editor-new-alt-text-to-review-button-label = Xem lại văn bản thay thế\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Được tạo tự động: { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = Cài đặt văn bản thay thế của hình ảnh\n+pdfjs-image-alt-text-settings-button-label = Cài đặt văn bản thay thế của hình ảnh\n+pdfjs-editor-alt-text-settings-dialog-label = Cài đặt văn bản thay thế của hình ảnh\n+pdfjs-editor-alt-text-settings-automatic-title = Văn bản thay thế tự động\n+pdfjs-editor-alt-text-settings-create-model-button-label = Tạo văn bản thay thế tự động\n+pdfjs-editor-alt-text-settings-create-model-description = Đề xuất mô tả giúp ích cho những người không xem được ảnh hoặc khi không thể tải ảnh.\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = Mô hình AI văn bản khác ({ $totalSize } MB)\n+pdfjs-editor-alt-text-settings-ai-model-description = Chạy cục bộ trên thiết bị của bạn để dữ liệu của bạn luôn ở chế độ riêng tư. Bắt buộc đối với văn bản thay thế tự động.\n+pdfjs-editor-alt-text-settings-delete-model-button = Xóa\n+pdfjs-editor-alt-text-settings-download-model-button = Tải xuống\n+pdfjs-editor-alt-text-settings-downloading-model-button = Đang tải xuống…\n+pdfjs-editor-alt-text-settings-editor-title = Trình soạn thảo văn bản thay thế\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = Hiển thị ngay trình soạn thảo văn bản thay thế khi thêm hình ảnh\n+pdfjs-editor-alt-text-settings-show-dialog-description = Giúp bạn đảm bảo tất cả hình ảnh của bạn đều có văn bản thay thế.\n+pdfjs-editor-alt-text-settings-close-button = Đóng\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = Đã xóa đánh dấu\n+pdfjs-editor-undo-bar-message-freetext = Đã xóa văn bản\n+pdfjs-editor-undo-bar-message-ink = Đã xóa bản vẽ\n+pdfjs-editor-undo-bar-message-stamp = Đã xóa hình ảnh\n+pdfjs-editor-undo-bar-message-signature = Chữ ký đã bị xoá\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple = { $count } chú thích đã bị xóa\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = Hoàn tác\n+pdfjs-editor-undo-bar-undo-button-label = Hoàn tác\n+pdfjs-editor-undo-bar-close-button =\n+    .title = Đóng\n+pdfjs-editor-undo-bar-close-button-label = Đóng\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = Phương thức này cho phép người dùng tạo một chữ ký để thêm vào tài liệu PDF. Người dùng có thể chỉnh sửa tên (cũng đóng vai trò là văn bản thay thế) và tùy chọn lưu chữ ký để sử dụng nhiều lần.\n+pdfjs-editor-add-signature-dialog-title = Thêm chữ ký\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = Đánh văn bản\n+    .title = Đánh văn bản\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = Vẽ\n+    .title = Vẽ\n+pdfjs-editor-add-signature-image-button = Hình ảnh\n+    .title = Hình ảnh\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = Nhập chữ ký của bạn\n+    .placeholder = Nhập chữ ký của bạn\n+pdfjs-editor-add-signature-draw-placeholder = Vẽ chữ ký của bạn\n+pdfjs-editor-add-signature-draw-thickness-range-label = Độ dày\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = Độ dày bút vẽ: { $thickness }\n+pdfjs-editor-add-signature-image-placeholder = Kéo một tập tin tại đây để tải lên\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] Hoặc chọn hình ảnh\n+       *[other] Hoặc chọn hình ảnh\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = Mô tả (văn bản thay thế)\n+pdfjs-editor-add-signature-description-input =\n+    .title = Mô tả (văn bản thay thế)\n+pdfjs-editor-add-signature-description-default-when-drawing = Chữ ký\n+pdfjs-editor-add-signature-clear-button-label = Xoá chữ ký\n+pdfjs-editor-add-signature-clear-button =\n+    .title = Xoá chữ ký\n+pdfjs-editor-add-signature-save-checkbox = Lưu chữ ký\n+pdfjs-editor-add-signature-save-warning-message = Bạn đã đạt đến giới hạn 5 chữ ký đã lưu. Hãy xóa một cái để lưu thêm.\n+pdfjs-editor-add-signature-image-upload-error-title = Không thể tải lên hình ảnh\n+pdfjs-editor-add-signature-image-upload-error-description = Kiểm tra kết nối mạng của bạn hoặc thử hình ảnh khác.\n+pdfjs-editor-add-signature-error-close-button = Đóng\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = Hủy bỏ\n+pdfjs-editor-add-signature-add-button = Thêm\n+pdfjs-editor-edit-signature-update-button = Cập nhật\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = Xoá chữ ký đã lưu\n+pdfjs-editor-delete-signature-button-label1 = Xoá chữ ký đã lưu\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = Chỉnh sửa mô tả\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = Chỉnh sửa mô tả\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fwo\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fwo\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fwo\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fwo\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -119,9 +119,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fxh\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fxh\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fxh\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fxh\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -204,9 +204,59 @@\n ## Editing\n \n \n+## Default editor aria labels\n+\n+\n+## Remove button for the various kind of editor.\n+\n+\n+##\n+\n+\n ## Alt-text dialog\n \n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n \n+\n+## Color picker\n+\n+\n+## Show all highlights\n+## This is a toggle button to show\u002Fhide all the highlights.\n+\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+\n+## Image alt-text settings\n+\n+\n+## \"Annotations removed\" bar\n+\n+\n+## Add a signature dialog\n+\n+\n+## Tab names\n+\n+\n+## Tab panels\n+\n+\n+## Controls\n+\n+\n+## Dialog buttons\n+\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+\n+## Editor toolbar\n+\n+\n+## Edit signature description dialog\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fzh-CN\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fzh-CN\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fzh-CN\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fzh-CN\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -105,6 +105,14 @@\n pdfjs-document-properties-file-name = 文件名:\n pdfjs-document-properties-file-size = 文件大小:\n # Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB（{ $b } 字节）\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB（{ $b } 字节）\n+# Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } 字节)\n@@ -119,6 +127,9 @@\n pdfjs-document-properties-creation-date = 创建日期:\n pdfjs-document-properties-modification-date = 修改日期:\n # Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n+# Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date }, { $time }\n@@ -267,6 +278,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type } 注释]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -290,12 +304,29 @@\n pdfjs-editor-highlight-button =\n     .title = 高亮\n pdfjs-editor-highlight-button-label = 高亮\n-pdfjs-highlight-floating-button =\n-    .title = 高亮\n pdfjs-highlight-floating-button1 =\n     .title = 高亮\n     .aria-label = 高亮\n pdfjs-highlight-floating-button-label = 高亮\n+pdfjs-editor-signature-button =\n+    .title = 添加签名\n+pdfjs-editor-signature-button-label = 添加签名\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = 高亮编辑器\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = 绘图编辑器\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = 签名编辑器：{ $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = 图像编辑器\n \n ## Remove button for the various kind of editor.\n \n@@ -307,6 +338,8 @@\n     .title = 移除图像\n pdfjs-editor-remove-highlight-button =\n     .title = 移除高亮\n+pdfjs-editor-remove-signature-button =\n+    .title = 移除签名\n \n ##\n \n@@ -323,6 +356,20 @@\n pdfjs-editor-free-highlight-thickness-input = 粗细\n pdfjs-editor-free-highlight-thickness-title =\n     .title = 更改高亮粗细（用于文本以外项目）\n+pdfjs-editor-add-signature-container =\n+    .aria-label = 签名管理和保存的签名\n+pdfjs-editor-signature-add-signature-button =\n+    .title = 添加新签名\n+pdfjs-editor-signature-add-signature-button-label = 添加新签名\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = 保存的签名：{ $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = 文本编辑器\n+    .default-content = 在此键入…\n pdfjs-free-text =\n     .aria-label = 文本编辑器\n pdfjs-free-text-default-content = 开始输入…\n@@ -333,13 +380,14 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = 替换文字\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = 编辑替换文字\n pdfjs-editor-alt-text-edit-button-label = 编辑替换文字\n pdfjs-editor-alt-text-dialog-label = 选择一项\n pdfjs-editor-alt-text-dialog-description = 替换文字可在用户无法看到或加载图像时，描述其内容。\n pdfjs-editor-alt-text-add-description-label = 添加描述\n-pdfjs-editor-alt-text-add-description-description = 描述主题、背景或动作，长度尽量控制在两句话内。\n+pdfjs-editor-alt-text-add-description-description = 用一两个句子，描述主题、背景或动作。\n pdfjs-editor-alt-text-mark-decorative-label = 标记为装饰\n pdfjs-editor-alt-text-mark-decorative-description = 用于装饰的图像，例如边框和水印。\n pdfjs-editor-alt-text-cancel-button = 取消\n@@ -348,6 +396,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = 例如：一个少年坐到桌前，准备吃饭\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = 替换文字\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -360,6 +411,22 @@\n pdfjs-editor-resizer-label-bottom-middle = 调整大小 - 底部中间\n pdfjs-editor-resizer-label-bottom-left = 调整尺寸 - 左下角\n pdfjs-editor-resizer-label-middle-left = 调整尺寸 - 左侧中间\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = 调整尺寸 - 左上角\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = 调整尺寸 - 顶部中间\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = 调整尺寸 - 右上角\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = 调整尺寸 - 右侧中间\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = 调整尺寸 - 右下角\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = 调整大小 - 底部中间\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = 调整尺寸 - 左下角\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = 调整尺寸 - 左侧中间\n \n ## Color picker\n \n@@ -386,3 +453,151 @@\n pdfjs-editor-highlight-show-all-button-label = 显示全部\n pdfjs-editor-highlight-show-all-button =\n     .title = 显示全部\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = 编辑替换文字（图像描述）\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = 添加替换文字（图像描述）\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = 请在此处撰写描述…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = 向无法看到或加载图像的用户提供的简短描述。\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = 此段替换文字为自动创建，有可能不准确。\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = 详细了解\n+pdfjs-editor-new-alt-text-create-automatically-button-label = 自动创建替换文字\n+pdfjs-editor-new-alt-text-not-now-button = 暂时不要\n+pdfjs-editor-new-alt-text-error-title = 无法自动创建替换文字\n+pdfjs-editor-new-alt-text-error-description = 请自行撰写替换文字，或稍后再试。\n+pdfjs-editor-new-alt-text-error-close-button = 关闭\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = 正在下载提供替换文字的 AI 模型（{ $downloadedSize }\u002F{ $totalSize } MB）\n+    .aria-valuetext = 正在下载提供替换文字的 AI 模型（{ $downloadedSize }\u002F{ $totalSize } MB）\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = 已添加替换文字\n+pdfjs-editor-new-alt-text-added-button-label = 已添加替换文字\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = 缺少替换文字\n+pdfjs-editor-new-alt-text-missing-button-label = 缺少替换文字\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = 检查替换文字\n+pdfjs-editor-new-alt-text-to-review-button-label = 检查替换文字\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = [自动创建] { $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = 图像替换文字设置\n+pdfjs-image-alt-text-settings-button-label = 图像替换文字设置\n+pdfjs-editor-alt-text-settings-dialog-label = 图像替换文字设置\n+pdfjs-editor-alt-text-settings-automatic-title = 自动创建替换文字\n+pdfjs-editor-alt-text-settings-create-model-button-label = 自动创建替换文字\n+pdfjs-editor-alt-text-settings-create-model-description = 向无法看到或加载图像的用户提供描述。\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = 提供替换文字的 AI 模型（{ $totalSize } MB）\n+pdfjs-editor-alt-text-settings-ai-model-description = 在您的设备本地运行，可使数据保持私密。自动创建替换文字需要使用此模型。\n+pdfjs-editor-alt-text-settings-delete-model-button = 删除\n+pdfjs-editor-alt-text-settings-download-model-button = 下载\n+pdfjs-editor-alt-text-settings-downloading-model-button = 正在下载…\n+pdfjs-editor-alt-text-settings-editor-title = 替换文字编辑器\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = 添加图像后立即显示替换文字编辑器\n+pdfjs-editor-alt-text-settings-show-dialog-description = 帮助确保所有图像均拥有替换文字。\n+pdfjs-editor-alt-text-settings-close-button = 关闭\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = 已移除高亮\n+pdfjs-editor-undo-bar-message-freetext = 已移除文本\n+pdfjs-editor-undo-bar-message-ink = 已移除绘图\n+pdfjs-editor-undo-bar-message-stamp = 已移除图像\n+pdfjs-editor-undo-bar-message-signature = 签名已移除\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple = 已移除 { $count } 条注释\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = 撤销\n+pdfjs-editor-undo-bar-undo-button-label = 撤销\n+pdfjs-editor-undo-bar-close-button =\n+    .title = 关闭\n+pdfjs-editor-undo-bar-close-button-label = 关闭\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = 用户可通过此模态对话框创建要添加到 PDF 文档中的签名、编辑其名称（同时用作替换文字），并可保存签名以便重复使用。\n+pdfjs-editor-add-signature-dialog-title = 添加签名\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = 键入\n+    .title = 键入\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = 绘制\n+    .title = 绘制\n+pdfjs-editor-add-signature-image-button = 图像\n+    .title = 图像\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = 键入签名\n+    .placeholder = 键入签名\n+pdfjs-editor-add-signature-draw-placeholder = 绘制签名\n+pdfjs-editor-add-signature-draw-thickness-range-label = 粗细\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = 笔画粗细：{ $thickness }\n+pdfjs-editor-add-signature-image-placeholder = 拖放文件到此处以上传\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] 或选取图像文件\n+       *[other] 或浏览图像文件\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = 描述（替换文字）\n+pdfjs-editor-add-signature-description-input =\n+    .title = 描述（替换文字）\n+pdfjs-editor-add-signature-description-default-when-drawing = 签名\n+pdfjs-editor-add-signature-clear-button-label = 清除签名\n+pdfjs-editor-add-signature-clear-button =\n+    .title = 清除签名\n+pdfjs-editor-add-signature-save-checkbox = 保存签名\n+pdfjs-editor-add-signature-save-warning-message = 最多可保存 5 个签名，请移除一个以继续保存。\n+pdfjs-editor-add-signature-image-upload-error-title = 无法上传图像\n+pdfjs-editor-add-signature-image-upload-error-description = 请检查网络连接，或尝试上传其他图像。\n+pdfjs-editor-add-signature-error-close-button = 关闭\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = 取消\n+pdfjs-editor-add-signature-add-button = 添加\n+pdfjs-editor-edit-signature-update-button = 更新\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = 移除已保存的签名\n+pdfjs-editor-delete-signature-button-label1 = 移除已保存的签名\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = 编辑描述\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = 编辑描述\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fzh-TW\u002Fviewer.ftl \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fzh-TW\u002Fviewer.ftl\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fzh-TW\u002Fviewer.ftl\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Flocale\u002Fzh-TW\u002Fviewer.ftl\t2026-02-24 09:27:28.000000000 +0000\n@@ -51,12 +51,6 @@\n pdfjs-bookmark-button =\n     .title = 目前頁面（含目前檢視頁面的網址）\n pdfjs-bookmark-button-label = 目前頁面\n-# Used in Firefox for Android.\n-pdfjs-open-in-app-button =\n-    .title = 在應用程式中開啟\n-# Used in Firefox for Android.\n-# Length of the translation matters since we are in a mobile context, with limited screen estate.\n-pdfjs-open-in-app-button-label = 用程式開啟\n \n ##  Secondary toolbar and context menu\n \n@@ -82,8 +76,8 @@\n     .title = 開啟頁面移動工具\n pdfjs-cursor-hand-tool-button-label = 頁面移動工具\n pdfjs-scroll-page-button =\n-    .title = 使用頁面捲動功能\n-pdfjs-scroll-page-button-label = 頁面捲動功能\n+    .title = 使用單頁捲動版面\n+pdfjs-scroll-page-button-label = 單頁捲動\n pdfjs-scroll-vertical-button =\n     .title = 使用垂直捲動版面\n pdfjs-scroll-vertical-button-label = 垂直捲動\n@@ -108,8 +102,16 @@\n pdfjs-document-properties-button =\n     .title = 文件內容…\n pdfjs-document-properties-button-label = 文件內容…\n-pdfjs-document-properties-file-name = 檔案名稱:\n-pdfjs-document-properties-file-size = 檔案大小:\n+pdfjs-document-properties-file-name = 檔案名稱：\n+pdfjs-document-properties-file-size = 檔案大小：\n+# Variables:\n+#   $kb (Number) - the PDF file size in kilobytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB（{ $b } 位元組）\n+# Variables:\n+#   $mb (Number) - the PDF file size in megabytes\n+#   $b (Number) - the PDF file size in bytes\n+pdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB（{ $b } 位元組）\n # Variables:\n #   $size_kb (Number) - the PDF file size in kilobytes\n #   $size_b (Number) - the PDF file size in bytes\n@@ -118,21 +120,24 @@\n #   $size_mb (Number) - the PDF file size in megabytes\n #   $size_b (Number) - the PDF file size in bytes\n pdfjs-document-properties-mb = { $size_mb } MB（{ $size_b } 位元組）\n-pdfjs-document-properties-title = 標題:\n-pdfjs-document-properties-author = 作者:\n-pdfjs-document-properties-subject = 主旨:\n-pdfjs-document-properties-keywords = 關鍵字:\n-pdfjs-document-properties-creation-date = 建立日期:\n-pdfjs-document-properties-modification-date = 修改日期:\n+pdfjs-document-properties-title = 標題：\n+pdfjs-document-properties-author = 作者：\n+pdfjs-document-properties-subject = 主旨：\n+pdfjs-document-properties-keywords = 關鍵字：\n+pdfjs-document-properties-creation-date = 建立日期：\n+pdfjs-document-properties-modification-date = 修改日期：\n+# Variables:\n+#   $dateObj (Date) - the creation\u002Fmodification date and time of the PDF file\n+pdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n # Variables:\n #   $date (Date) - the creation\u002Fmodification date of the PDF file\n #   $time (Time) - the creation\u002Fmodification time of the PDF file\n pdfjs-document-properties-date-string = { $date } { $time }\n-pdfjs-document-properties-creator = 建立者:\n-pdfjs-document-properties-producer = PDF 產生器:\n-pdfjs-document-properties-version = PDF 版本:\n-pdfjs-document-properties-page-count = 頁數:\n-pdfjs-document-properties-page-size = 頁面大小:\n+pdfjs-document-properties-creator = 建立者：\n+pdfjs-document-properties-producer = PDF 產生器：\n+pdfjs-document-properties-version = PDF 版本：\n+pdfjs-document-properties-page-count = 頁數：\n+pdfjs-document-properties-page-size = 頁面大小：\n pdfjs-document-properties-page-size-unit-inches = in\n pdfjs-document-properties-page-size-unit-millimeters = mm\n pdfjs-document-properties-page-size-orientation-portrait = 垂直\n@@ -156,7 +161,7 @@\n \n # The linearization status of the document; usually called \"Fast Web View\" in\n # English locales of Adobe software.\n-pdfjs-document-properties-linearized = 快速 Web 檢視:\n+pdfjs-document-properties-linearized = 快速 Web 檢視：\n pdfjs-document-properties-linearized-yes = 是\n pdfjs-document-properties-linearized-no = 否\n pdfjs-document-properties-close-button = 關閉\n@@ -168,8 +173,8 @@\n #   $progress (Number) - percent value\n pdfjs-print-progress-percent = { $progress }%\n pdfjs-print-progress-close-button = 取消\n-pdfjs-printing-not-supported = 警告: 此瀏覽器未完整支援列印功能。\n-pdfjs-printing-not-ready = 警告: 此 PDF 未完成下載以供列印。\n+pdfjs-printing-not-supported = 警告：此瀏覽器未完整支援列印功能。\n+pdfjs-printing-not-ready = 警告：此 PDF 未完成下載以供列印。\n \n ## Tooltips and alt text for side panel toolbar buttons\n \n@@ -273,6 +278,9 @@\n # Some common types are e.g.: \"Check\", \"Text\", \"Comment\", \"Note\"\n pdfjs-text-annotation-type =\n     .alt = [{ $type } 註解]\n+# Variables:\n+#   $dateObj (Date) - the modification date and time of the annotation\n+pdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \"short\", timeStyle: \"medium\") }\n \n ## Password\n \n@@ -296,12 +304,29 @@\n pdfjs-editor-highlight-button =\n     .title = 強調\n pdfjs-editor-highlight-button-label = 強調\n-pdfjs-highlight-floating-button =\n-    .title = 強調\n pdfjs-highlight-floating-button1 =\n     .title = 強調\n     .aria-label = 強調\n pdfjs-highlight-floating-button-label = 強調\n+pdfjs-editor-signature-button =\n+    .title = 加入簽章\n+pdfjs-editor-signature-button-label = 加入簽章\n+\n+## Default editor aria labels\n+\n+# “Highlight” is a noun, the string is used on the editor for highlights.\n+pdfjs-editor-highlight-editor =\n+    .aria-label = 強調樣式編輯器\n+# “Drawing” is a noun, the string is used on the editor for drawings.\n+pdfjs-editor-ink-editor =\n+    .aria-label = 繪圖編輯器\n+# Used when a signature editor is selected\u002Fhovered.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-signature-editor1 =\n+    .aria-description = 簽章編輯器：{ $description }\n+pdfjs-editor-stamp-editor =\n+    .aria-label = 圖片編輯器\n \n ## Remove button for the various kind of editor.\n \n@@ -313,6 +338,8 @@\n     .title = 移除圖片\n pdfjs-editor-remove-highlight-button =\n     .title = 移除強調範圍\n+pdfjs-editor-remove-signature-button =\n+    .title = 移除簽章\n \n ##\n \n@@ -329,9 +356,23 @@\n pdfjs-editor-free-highlight-thickness-input = 線條粗細\n pdfjs-editor-free-highlight-thickness-title =\n     .title = 更改強調文字以外的項目時的線條粗細\n+pdfjs-editor-add-signature-container =\n+    .aria-label = 簽章控制元件與儲存的簽章\n+pdfjs-editor-signature-add-signature-button =\n+    .title = 新增簽章\n+pdfjs-editor-signature-add-signature-button-label = 新增簽章\n+# Used on the button to use an already saved signature.\n+# Variables:\n+#   $description (String) - a string describing\u002Flabeling the signature.\n+pdfjs-editor-add-saved-signature-button =\n+    .title = 已儲存簽章：{ $description }\n+# .default-content is used as a placeholder in an empty text editor.\n+pdfjs-free-text2 =\n+    .aria-label = 文字編輯器\n+    .default-content = 請打字…\n pdfjs-free-text =\n     .aria-label = 文本編輯器\n-pdfjs-free-text-default-content = 開始打字…\n+pdfjs-free-text-default-content = 在此打字…\n pdfjs-ink =\n     .aria-label = 圖形編輯器\n pdfjs-ink-canvas =\n@@ -339,8 +380,9 @@\n \n ## Alt-text dialog\n \n-# Alternative text (alt text) helps when people can't see the image.\n pdfjs-editor-alt-text-button-label = 替代文字\n+pdfjs-editor-alt-text-edit-button =\n+    .aria-label = 編輯替代文字\n pdfjs-editor-alt-text-edit-button-label = 編輯替代文字\n pdfjs-editor-alt-text-dialog-label = 挑選一種\n pdfjs-editor-alt-text-dialog-description = 替代文字可協助盲人，或於圖片無法載入時提供說明。\n@@ -354,6 +396,9 @@\n # .placeholder: This is a placeholder for the alt text input area\n pdfjs-editor-alt-text-textarea =\n     .placeholder = 例如：「有一位年輕男人坐在桌子前面吃飯」\n+# Alternative text (alt text) helps when people can't see the image.\n+pdfjs-editor-alt-text-button =\n+    .aria-label = 替代文字\n \n ## Editor resizers\n ## This is used in an aria label to help to understand the role of the resizer.\n@@ -366,6 +411,22 @@\n pdfjs-editor-resizer-label-bottom-middle = 底部中間 — 調整大小\n pdfjs-editor-resizer-label-bottom-left = 左下角 — 調整大小\n pdfjs-editor-resizer-label-middle-left = 中間左方 — 調整大小\n+pdfjs-editor-resizer-top-left =\n+    .aria-label = 左上角 — 調整大小\n+pdfjs-editor-resizer-top-middle =\n+    .aria-label = 頂部中間 — 調整大小\n+pdfjs-editor-resizer-top-right =\n+    .aria-label = 右上角 — 調整大小\n+pdfjs-editor-resizer-middle-right =\n+    .aria-label = 中間右方 — 調整大小\n+pdfjs-editor-resizer-bottom-right =\n+    .aria-label = 右下角 — 調整大小\n+pdfjs-editor-resizer-bottom-middle =\n+    .aria-label = 底部中間 — 調整大小\n+pdfjs-editor-resizer-bottom-left =\n+    .aria-label = 左下角 — 調整大小\n+pdfjs-editor-resizer-middle-left =\n+    .aria-label = 中間左方 — 調整大小\n \n ## Color picker\n \n@@ -392,3 +453,151 @@\n pdfjs-editor-highlight-show-all-button-label = 顯示全部\n pdfjs-editor-highlight-show-all-button =\n     .title = 顯示全部\n+\n+## New alt-text dialog\n+## Group note for entire feature: Alternative text (alt text) helps when people can't see the image. This feature includes a tool to create alt text automatically using an AI model that works locally on the user's device to preserve privacy.\n+\n+# Modal header positioned above a text box where users can edit the alt text.\n+pdfjs-editor-new-alt-text-dialog-edit-label = 編輯替代文字（圖片描述）\n+# Modal header positioned above a text box where users can add the alt text.\n+pdfjs-editor-new-alt-text-dialog-add-label = 新增替代文字（圖片描述）\n+pdfjs-editor-new-alt-text-textarea =\n+    .placeholder = 在此寫下您的描述文字…\n+# This text refers to the alt text box above this description. It offers a definition of alt text.\n+pdfjs-editor-new-alt-text-description = 為看不到圖片的讀者，或圖片無法載入時顯示的簡短描述。\n+# This is a required legal disclaimer that refers to the automatically created text inside the alt text box above this text. It disappears if the text is edited by a human.\n+pdfjs-editor-new-alt-text-disclaimer1 = 此替代文字是自動產生的，可能不夠精確。\n+pdfjs-editor-new-alt-text-disclaimer-learn-more-url = 更多資訊\n+pdfjs-editor-new-alt-text-create-automatically-button-label = 自動產生替代文字\n+pdfjs-editor-new-alt-text-not-now-button = 暫時不要\n+pdfjs-editor-new-alt-text-error-title = 無法自動產生替代文字\n+pdfjs-editor-new-alt-text-error-description = 請自行填寫替代文字，或稍後再試一次。\n+pdfjs-editor-new-alt-text-error-close-button = 關閉\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+#   $downloadedSize (Number) - the downloaded size (in MB) of the AI model.\n+pdfjs-editor-new-alt-text-ai-model-downloading-progress = 正在下載替代文字 AI 模型（{ $downloadedSize } \u002F { $totalSize } MB）\n+    .aria-valuetext = 正在下載替代文字 AI 模型（{ $downloadedSize } \u002F { $totalSize } MB）\n+# This is a button that users can click to edit the alt text they have already added.\n+pdfjs-editor-new-alt-text-added-button =\n+    .aria-label = 已新增替代文字\n+pdfjs-editor-new-alt-text-added-button-label = 已新增替代文字\n+# This is a button that users can click to open the alt text editor and add alt text when it is not present.\n+pdfjs-editor-new-alt-text-missing-button =\n+    .aria-label = 缺少替代文字\n+pdfjs-editor-new-alt-text-missing-button-label = 缺少替代文字\n+# This is a button that opens up the alt text modal where users should review the alt text that was automatically generated.\n+pdfjs-editor-new-alt-text-to-review-button =\n+    .aria-label = 確認替代文字\n+pdfjs-editor-new-alt-text-to-review-button-label = 確認替代文字\n+# \"Created automatically\" is a prefix that will be added to the beginning of any alt text that has been automatically generated. After the colon, the user will see\u002Fhear the actual alt text description. If the alt text has been edited by a human, this prefix will not appear.\n+# Variables:\n+#   $generatedAltText (String) - the generated alt-text.\n+pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = 自動產生：{ $generatedAltText }\n+\n+## Image alt-text settings\n+\n+pdfjs-image-alt-text-settings-button =\n+    .title = 圖片替代文字設定\n+pdfjs-image-alt-text-settings-button-label = 圖片替代文字設定\n+pdfjs-editor-alt-text-settings-dialog-label = 圖片替代文字設定\n+pdfjs-editor-alt-text-settings-automatic-title = 自動化替代文字\n+pdfjs-editor-alt-text-settings-create-model-button-label = 自動產生替代文字\n+pdfjs-editor-alt-text-settings-create-model-description = 為您建議圖片描述，幫助看不到圖片的讀者，或於圖片無法載入時顯示。\n+# Variables:\n+#   $totalSize (Number) - the total size (in MB) of the AI model.\n+pdfjs-editor-alt-text-settings-download-model-label = 替代文字 AI 模型（{ $totalSize } MB）\n+pdfjs-editor-alt-text-settings-ai-model-description = 在您的本機裝置上運作，以確保您的資料隱私。必須下載此模型才可以自動產生替代文字。\n+pdfjs-editor-alt-text-settings-delete-model-button = 刪除\n+pdfjs-editor-alt-text-settings-download-model-button = 下載\n+pdfjs-editor-alt-text-settings-downloading-model-button = 下載中…\n+pdfjs-editor-alt-text-settings-editor-title = 替代文字編輯器\n+pdfjs-editor-alt-text-settings-show-dialog-button-label = 新增圖片後立即顯示替代文字編輯器\n+pdfjs-editor-alt-text-settings-show-dialog-description = 幫助您確保所有圖片都有替代文字。\n+pdfjs-editor-alt-text-settings-close-button = 關閉\n+\n+## \"Annotations removed\" bar\n+\n+pdfjs-editor-undo-bar-message-highlight = 已移除強調\n+pdfjs-editor-undo-bar-message-freetext = 已移除文字\n+pdfjs-editor-undo-bar-message-ink = 已移除繪圖\n+pdfjs-editor-undo-bar-message-stamp = 已移除圖片\n+pdfjs-editor-undo-bar-message-signature = 已移除簽章\n+# Variables:\n+#   $count (Number) - the number of removed annotations.\n+pdfjs-editor-undo-bar-message-multiple = 已移除 { $count } 筆註解\n+pdfjs-editor-undo-bar-undo-button =\n+    .title = 還原\n+pdfjs-editor-undo-bar-undo-button-label = 還原\n+pdfjs-editor-undo-bar-close-button =\n+    .title = 關閉\n+pdfjs-editor-undo-bar-close-button-label = 關閉\n+\n+## Add a signature dialog\n+\n+pdfjs-editor-add-signature-dialog-label = 此對話框讓使用者能夠建立簽章以加入 PDF 文件。使用者可以編輯他們的姓名（同時也是替代文字），並選擇性儲存簽章，以供未來重複使用。\n+pdfjs-editor-add-signature-dialog-title = 加入簽章\n+\n+## Tab names\n+\n+# Type is a verb (you can type your name as signature)\n+pdfjs-editor-add-signature-type-button = 打字\n+    .title = 打字\n+# Draw is a verb (you can draw your signature)\n+pdfjs-editor-add-signature-draw-button = 手繪\n+    .title = 手繪\n+pdfjs-editor-add-signature-image-button = 圖片\n+    .title = 圖片\n+\n+## Tab panels\n+\n+pdfjs-editor-add-signature-type-input =\n+    .aria-label = 輸入簽章\n+    .placeholder = 輸入簽章\n+pdfjs-editor-add-signature-draw-placeholder = 手繪簽章\n+pdfjs-editor-add-signature-draw-thickness-range-label = 線條粗細\n+# Variables:\n+#   $thickness (Number) - the thickness (in pixels) of the line used to draw a signature.\n+pdfjs-editor-add-signature-draw-thickness-range =\n+    .title = 繪製時的線條粗細：{ $thickness }\n+pdfjs-editor-add-signature-image-placeholder = 將檔案拖曳到此處即可上傳\n+pdfjs-editor-add-signature-image-browse-link =\n+    { PLATFORM() ->\n+        [macos] 或選擇圖片檔案\n+       *[other] 或瀏覽圖片檔案\n+    }\n+\n+## Controls\n+\n+pdfjs-editor-add-signature-description-label = 描述（替代文字）\n+pdfjs-editor-add-signature-description-input =\n+    .title = 描述（替代文字）\n+pdfjs-editor-add-signature-description-default-when-drawing = 簽章\n+pdfjs-editor-add-signature-clear-button-label = 清除簽章\n+pdfjs-editor-add-signature-clear-button =\n+    .title = 清除簽章\n+pdfjs-editor-add-signature-save-checkbox = 儲存簽章\n+pdfjs-editor-add-signature-save-warning-message = 您已經儲存 5 式簽章，請移除任一式才能再新增。\n+pdfjs-editor-add-signature-image-upload-error-title = 無法上傳圖片\n+pdfjs-editor-add-signature-image-upload-error-description = 請檢查您的網路連線，或改用其他圖片。\n+pdfjs-editor-add-signature-error-close-button = 關閉\n+\n+## Dialog buttons\n+\n+pdfjs-editor-add-signature-cancel-button = 取消\n+pdfjs-editor-add-signature-add-button = 新增\n+pdfjs-editor-edit-signature-update-button = 更新\n+\n+## Main menu for adding\u002Fremoving signatures\n+\n+pdfjs-editor-delete-signature-button1 =\n+    .title = 移除儲存的簽章\n+pdfjs-editor-delete-signature-button-label1 = 移除儲存的簽章\n+\n+## Editor toolbar\n+\n+pdfjs-editor-add-signature-edit-button-label = 編輯描述\n+\n+## Edit signature description dialog\n+\n+pdfjs-editor-edit-signature-dialog-title = 編輯描述\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Fviewer.css \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Fviewer.css\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Fviewer.css\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Fviewer.css\t2026-02-24 09:27:28.000000000 +0000\n@@ -13,91 +13,514 @@\n  * limitations under the License.\n  *\u002F\n \n+.messageBar{\n+    --closing-button-icon:url(images\u002FmessageBar_closingButton.svg);\n+    --message-bar-close-button-color:var(--text-primary-color);\n+    --message-bar-close-button-color-hover:var(--text-primary-color);\n+    --message-bar-close-button-border-radius:4px;\n+    --message-bar-close-button-border:none;\n+    --csstools-light-dark-toggle--31:var(--csstools-color-scheme--light) rgb(251 251 254 \u002F 0.14);\n+    --message-bar-close-button-hover-bg-color:var(--csstools-light-dark-toggle--31, rgb(21 20 26 \u002F 0.14));\n+    --csstools-light-dark-toggle--32:var(--csstools-color-scheme--light) rgb(251 251 254 \u002F 0.21);\n+    --message-bar-close-button-active-bg-color:var(--csstools-light-dark-toggle--32, rgb(21 20 26 \u002F 0.21));\n+    --csstools-light-dark-toggle--33:var(--csstools-color-scheme--light) rgb(251 251 254 \u002F 0.07);\n+    --message-bar-close-button-focus-bg-color:var(--csstools-light-dark-toggle--33, rgb(21 20 26 \u002F 0.07));\n+}\n+\n+@supports (color: light-dark(red, red)) and (color: rgb(0 0 0 \u002F 0)){\n+    .messageBar{\n+        --message-bar-close-button-hover-bg-color:light-dark(\n+            rgb(21 20 26 \u002F 0.14),\n+            rgb(251 251 254 \u002F 0.14)\n+            );\n+        --message-bar-close-button-active-bg-color:light-dark(\n+            rgb(21 20 26 \u002F 0.21),\n+            rgb(251 251 254 \u002F 0.21)\n+            );\n+        --message-bar-close-button-focus-bg-color:light-dark(\n+            rgb(21 20 26 \u002F 0.07),\n+            rgb(251 251 254 \u002F 0.07)\n+            );\n+    }\n+}\n+\n+@supports not (color: light-dark(tan, tan)){\n+\n+    .messageBar *{\n+        --csstools-light-dark-toggle--31:var(--csstools-color-scheme--light) rgb(251 251 254 \u002F 0.14);\n+        --message-bar-close-button-hover-bg-color:var(--csstools-light-dark-toggle--31, rgb(21 20 26 \u002F 0.14));\n+        --csstools-light-dark-toggle--32:var(--csstools-color-scheme--light) rgb(251 251 254 \u002F 0.21);\n+        --message-bar-close-button-active-bg-color:var(--csstools-light-dark-toggle--32, rgb(21 20 26 \u002F 0.21));\n+        --csstools-light-dark-toggle--33:var(--csstools-color-scheme--light) rgb(251 251 254 \u002F 0.07);\n+        --message-bar-close-button-focus-bg-color:var(--csstools-light-dark-toggle--33, rgb(21 20 26 \u002F 0.07));\n+    }\n+}\n+\n+@media screen and (forced-colors: active){\n+\n+    .messageBar{\n+        --message-bar-close-button-color:ButtonText;\n+        --message-bar-close-button-border:1px solid ButtonText;\n+        --message-bar-close-button-hover-bg-color:ButtonText;\n+        --message-bar-close-button-active-bg-color:ButtonText;\n+        --message-bar-close-button-focus-bg-color:ButtonText;\n+        --message-bar-close-button-color-hover:HighlightText;\n+    }\n+}\n+\n+.messageBar{\n+\n+    display:flex;\n+    position:relative;\n+    padding:8px 8px 8px 16px;\n+    flex-direction:column;\n+    justify-content:center;\n+    align-items:center;\n+    gap:8px;\n+    -webkit-user-select:none;\n+    -moz-user-select:none;\n+    user-select:none;\n+\n+    border-radius:4px;\n+\n+    border:1px solid var(--message-bar-border-color);\n+    background:var(--message-bar-bg-color);\n+    color:var(--message-bar-fg-color);\n+}\n+\n+.messageBar  > div{\n+    display:flex;\n+    align-items:flex-start;\n+    gap:8px;\n+    align-self:stretch;\n+}\n+\n+:is(.messageBar > div)::before{\n+    content:\"\";\n+    display:inline-block;\n+    width:16px;\n+    height:16px;\n+    -webkit-mask-image:var(--message-bar-icon);\n+    mask-image:var(--message-bar-icon);\n+    -webkit-mask-size:cover;\n+    mask-size:cover;\n+    background-color:var(--message-bar-icon-color);\n+    flex-shrink:0;\n+}\n+\n+.messageBar button{\n+    cursor:pointer;\n+}\n+\n+:is(.messageBar button):focus-visible{\n+    outline:var(--focus-ring-outline);\n+    outline-offset:2px;\n+}\n+\n+.messageBar .closeButton{\n+    width:32px;\n+    height:32px;\n+    background:none;\n+    border-radius:var(--message-bar-close-button-border-radius);\n+    border:var(--message-bar-close-button-border);\n+\n+    display:flex;\n+    align-items:center;\n+    justify-content:center;\n+}\n+\n+:is(.messageBar .closeButton)::before{\n+    content:\"\";\n+    display:inline-block;\n+    width:16px;\n+    height:16px;\n+    -webkit-mask-image:var(--closing-button-icon);\n+    mask-image:var(--closing-button-icon);\n+    -webkit-mask-size:cover;\n+    mask-size:cover;\n+    background-color:var(--message-bar-close-button-color);\n+}\n+\n+:is(.messageBar .closeButton):is(:hover,:active,:focus)::before{\n+    background-color:var(--message-bar-close-button-color-hover);\n+}\n+\n+:is(.messageBar .closeButton):hover{\n+    background-color:var(--message-bar-close-button-hover-bg-color);\n+}\n+\n+:is(.messageBar .closeButton):active{\n+    background-color:var(--message-bar-close-button-active-bg-color);\n+}\n+\n+:is(.messageBar .closeButton):focus{\n+    background-color:var(--message-bar-close-button-focus-bg-color);\n+}\n+\n+:is(.messageBar .closeButton)  > span{\n+    display:inline-block;\n+    width:0;\n+    height:0;\n+    overflow:hidden;\n+}\n+\n+#editorUndoBar{\n+    --csstools-light-dark-toggle--34:var(--csstools-color-scheme--light) #fbfbfe;\n+    --text-primary-color:var(--csstools-light-dark-toggle--34, #15141a);\n+\n+    --message-bar-icon:url(images\u002FmessageBar_info.svg);\n+    --csstools-light-dark-toggle--35:var(--csstools-color-scheme--light) #73a7f3;\n+    --message-bar-icon-color:var(--csstools-light-dark-toggle--35, #0060df);\n+    --csstools-light-dark-toggle--36:var(--csstools-color-scheme--light) #003070;\n+    --message-bar-bg-color:var(--csstools-light-dark-toggle--36, #deeafc);\n+    --message-bar-fg-color:var(--text-primary-color);\n+    --csstools-light-dark-toggle--37:var(--csstools-color-scheme--light) rgb(255 255 255 \u002F 0.08);\n+    --message-bar-border-color:var(--csstools-light-dark-toggle--37, rgb(0 0 0 \u002F 0.08));\n+\n+    --csstools-light-dark-toggle--38:var(--csstools-color-scheme--light) rgb(255 255 255 \u002F 0.08);\n+\n+    --undo-button-bg-color:var(--csstools-light-dark-toggle--38, rgb(21 20 26 \u002F 0.07));\n+    --csstools-light-dark-toggle--39:var(--csstools-color-scheme--light) rgb(255 255 255 \u002F 0.14);\n+    --undo-button-bg-color-hover:var(--csstools-light-dark-toggle--39, rgb(21 20 26 \u002F 0.14));\n+    --csstools-light-dark-toggle--40:var(--csstools-color-scheme--light) rgb(255 255 255 \u002F 0.21);\n+    --undo-button-bg-color-active:var(--csstools-light-dark-toggle--40, rgb(21 20 26 \u002F 0.21));\n+\n+    --csstools-light-dark-toggle--41:var(--csstools-color-scheme--light) #0df;\n+\n+    --undo-button-border:1px solid var(--csstools-light-dark-toggle--41, #0060df);\n+\n+    --undo-button-fg-color:var(--message-bar-fg-color);\n+    --undo-button-fg-color-hover:var(--undo-button-fg-color);\n+    --undo-button-fg-color-active:var(--undo-button-fg-color);\n+}\n+\n+@supports (color: light-dark(red, red)){\n+    #editorUndoBar{\n+        --text-primary-color:light-dark(#15141a, #fbfbfe);\n+        --message-bar-icon-color:light-dark(#0060df, #73a7f3);\n+        --message-bar-bg-color:light-dark(#deeafc, #003070);\n+    }\n+}\n+\n+@supports (color: light-dark(red, red)) and (color: rgb(0 0 0 \u002F 0)){\n+    #editorUndoBar{\n+        --message-bar-border-color:light-dark(\n+            rgb(0 0 0 \u002F 0.08),\n+            rgb(255 255 255 \u002F 0.08)\n+            );\n+\n+        --undo-button-bg-color:light-dark(\n+            rgb(21 20 26 \u002F 0.07),\n+            rgb(255 255 255 \u002F 0.08)\n+            );\n+        --undo-button-bg-color-hover:light-dark(\n+            rgb(21 20 26 \u002F 0.14),\n+            rgb(255 255 255 \u002F 0.14)\n+            );\n+        --undo-button-bg-color-active:light-dark(\n+            rgb(21 20 26 \u002F 0.21),\n+            rgb(255 255 255 \u002F 0.21)\n+            );\n+    }\n+}\n+\n+@supports (color: light-dark(red, red)){\n+    #editorUndoBar{\n+\n+        --undo-button-border:1px solid light-dark(#0060df, #0df);\n+    }\n+}\n+\n+@supports not (color: light-dark(tan, tan)){\n+\n+    #editorUndoBar *{\n+        --csstools-light-dark-toggle--34:var(--csstools-color-scheme--light) #fbfbfe;\n+        --text-primary-color:var(--csstools-light-dark-toggle--34, #15141a);\n+        --csstools-light-dark-toggle--35:var(--csstools-color-scheme--light) #73a7f3;\n+        --message-bar-icon-color:var(--csstools-light-dark-toggle--35, #0060df);\n+        --csstools-light-dark-toggle--36:var(--csstools-color-scheme--light) #003070;\n+        --message-bar-bg-color:var(--csstools-light-dark-toggle--36, #deeafc);\n+        --csstools-light-dark-toggle--37:var(--csstools-color-scheme--light) rgb(255 255 255 \u002F 0.08);\n+        --message-bar-border-color:var(--csstools-light-dark-toggle--37, rgb(0 0 0 \u002F 0.08));\n+\n+        --csstools-light-dark-toggle--38:var(--csstools-color-scheme--light) rgb(255 255 255 \u002F 0.08);\n+\n+        --undo-button-bg-color:var(--csstools-light-dark-toggle--38, rgb(21 20 26 \u002F 0.07));\n+        --csstools-light-dark-toggle--39:var(--csstools-color-scheme--light) rgb(255 255 255 \u002F 0.14);\n+        --undo-button-bg-color-hover:var(--csstools-light-dark-toggle--39, rgb(21 20 26 \u002F 0.14));\n+        --csstools-light-dark-toggle--40:var(--csstools-color-scheme--light) rgb(255 255 255 \u002F 0.21);\n+        --undo-button-bg-color-active:var(--csstools-light-dark-toggle--40, rgb(21 20 26 \u002F 0.21));\n+\n+        --csstools-light-dark-toggle--41:var(--csstools-color-scheme--light) #0df;\n+\n+        --undo-button-border:1px solid var(--csstools-light-dark-toggle--41, #0060df);\n+    }\n+}\n+\n+@media screen and (forced-colors: active){\n+\n+    #editorUndoBar{\n+        --text-primary-color:CanvasText;\n+\n+        --message-bar-icon-color:CanvasText;\n+        --message-bar-bg-color:Canvas;\n+        --message-bar-border-color:CanvasText;\n+\n+        --undo-button-bg-color:ButtonText;\n+        --undo-button-bg-color-hover:SelectedItem;\n+        --undo-button-bg-color-active:SelectedItem;\n+\n+        --undo-button-fg-color:ButtonFace;\n+        --undo-button-fg-color-hover:SelectedItemText;\n+        --undo-button-fg-color-active:SelectedItemText;\n+\n+        --undo-button-border:none;\n+    }\n+}\n+\n+#editorUndoBar{\n+\n+    position:fixed;\n+    top:50px;\n+    left:50%;\n+    transform:translateX(-50%);\n+    z-index:10;\n+\n+    padding-block:8px;\n+    padding-inline:16px 8px;\n+\n+    font:menu;\n+    font-size:15px;\n+\n+    cursor:default;\n+}\n+\n+#editorUndoBar button{\n+    cursor:pointer;\n+}\n+\n+#editorUndoBar #editorUndoBarUndoButton{\n+    border-radius:4px;\n+    font-weight:590;\n+    line-height:19.5px;\n+    color:var(--undo-button-fg-color);\n+    border:var(--undo-button-border);\n+    padding:4px 16px;\n+    margin-inline-start:8px;\n+    height:32px;\n+\n+    background-color:var(--undo-button-bg-color);\n+}\n+\n+:is(#editorUndoBar #editorUndoBarUndoButton):hover{\n+    background-color:var(--undo-button-bg-color-hover);\n+    color:var(--undo-button-fg-color-hover);\n+}\n+\n+:is(#editorUndoBar #editorUndoBarUndoButton):active{\n+    background-color:var(--undo-button-bg-color-active);\n+    color:var(--undo-button-fg-color-active);\n+}\n+\n+#editorUndoBar  > div{\n+    align-items:center;\n+}\n+\n .dialog{\n-    --dialog-bg-color:white;\n-    --dialog-border-color:white;\n-    --dialog-shadow:0 2px 14px 0 rgb(58 57 68 \u002F 0.2);\n-    --text-primary-color:#15141a;\n-    --text-secondary-color:#5b5b66;\n+    --csstools-light-dark-toggle--42:var(--csstools-color-scheme--light) #1c1b22;\n+    --dialog-bg-color:var(--csstools-light-dark-toggle--42, white);\n+    --csstools-light-dark-toggle--43:var(--csstools-color-scheme--light) #1c1b22;\n+    --dialog-border-color:var(--csstools-light-dark-toggle--43, white);\n+    --csstools-light-dark-toggle--44:var(--csstools-color-scheme--light) #15141a;\n+    --dialog-shadow:0 2px 14px 0 var(--csstools-light-dark-toggle--44, rgb(58 57 68 \u002F 0.2));\n+    --csstools-light-dark-toggle--45:var(--csstools-color-scheme--light) #fbfbfe;\n+    --text-primary-color:var(--csstools-light-dark-toggle--45, #15141a);\n+    --csstools-light-dark-toggle--46:var(--csstools-color-scheme--light) #cfcfd8;\n+    --text-secondary-color:var(--csstools-light-dark-toggle--46, #5b5b66);\n     --hover-filter:brightness(0.9);\n-    --focus-ring-color:#0060df;\n-    --focus-ring-outline:2px solid var(--focus-ring-color);\n+    --csstools-light-dark-toggle--47:var(--csstools-color-scheme--light) #0df;\n+    --link-fg-color:var(--csstools-light-dark-toggle--47, #0060df);\n+    --csstools-light-dark-toggle--48:var(--csstools-color-scheme--light) #80ebff;\n+    --link-hover-fg-color:var(--csstools-light-dark-toggle--48, #0250bb);\n+    --csstools-light-dark-toggle--49:var(--csstools-color-scheme--light) #52525e;\n+    --separator-color:var(--csstools-light-dark-toggle--49, #f0f0f4);\n \n     --textarea-border-color:#8f8f9d;\n-    --textarea-bg-color:white;\n+    --csstools-light-dark-toggle--50:var(--csstools-color-scheme--light) #42414d;\n+    --textarea-bg-color:var(--csstools-light-dark-toggle--50, white);\n     --textarea-fg-color:var(--text-secondary-color);\n \n-    --radio-bg-color:#f0f0f4;\n-    --radio-checked-bg-color:#fbfbfe;\n+    --csstools-light-dark-toggle--51:var(--csstools-color-scheme--light) #2b2a33;\n+\n+    --radio-bg-color:var(--csstools-light-dark-toggle--51, #f0f0f4);\n+    --csstools-light-dark-toggle--52:var(--csstools-color-scheme--light) #15141a;\n+    --radio-checked-bg-color:var(--csstools-light-dark-toggle--52, #fbfbfe);\n     --radio-border-color:#8f8f9d;\n-    --radio-checked-border-color:#0060df;\n+    --csstools-light-dark-toggle--53:var(--csstools-color-scheme--light) #0df;\n+    --radio-checked-border-color:var(--csstools-light-dark-toggle--53, #0060df);\n+\n+    --csstools-light-dark-toggle--54:var(--csstools-color-scheme--light) rgb(251 251 254 \u002F 0.07);\n \n-    --button-secondary-bg-color:#f0f0f4;\n+    --button-secondary-bg-color:var(--csstools-light-dark-toggle--54, rgb(21 20 26 \u002F 0.07));\n     --button-secondary-fg-color:var(--text-primary-color);\n     --button-secondary-border-color:var(--button-secondary-bg-color);\n-    --button-secondary-hover-bg-color:var(--button-secondary-bg-color);\n+    --csstools-light-dark-toggle--55:var(--csstools-color-scheme--light) rgb(251 251 254 \u002F 0.21);\n+    --button-secondary-active-bg-color:var(--csstools-light-dark-toggle--55, rgb(21 20 26 \u002F 0.21));\n+    --button-secondary-active-fg-color:var(--button-secondary-fg-color);\n+    --button-secondary-active-border-color:var(--button-secondary-bg-color);\n+    --csstools-light-dark-toggle--56:var(--csstools-color-scheme--light) rgb(251 251 254 \u002F 0.14);\n+    --button-secondary-hover-bg-color:var(--csstools-light-dark-toggle--56, rgb(21 20 26 \u002F 0.14));\n     --button-secondary-hover-fg-color:var(--button-secondary-fg-color);\n     --button-secondary-hover-border-color:var(--button-secondary-hover-bg-color);\n+    --button-secondary-disabled-bg-color:var(--button-secondary-bg-color);\n+    --button-secondary-disabled-border-color:var(\n+        --button-secondary-border-color\n+        );\n+    --button-secondary-disabled-fg-color:var(--button-secondary-fg-color);\n+\n+    --csstools-light-dark-toggle--57:var(--csstools-color-scheme--light) #0df;\n \n-    --button-primary-bg-color:#0060df;\n-    --button-primary-fg-color:#fbfbfe;\n-    --button-primary-hover-bg-color:var(--button-primary-bg-color);\n+    --button-primary-bg-color:var(--csstools-light-dark-toggle--57, #0060df);\n+    --csstools-light-dark-toggle--58:var(--csstools-color-scheme--light) #15141a;\n+    --button-primary-fg-color:var(--csstools-light-dark-toggle--58, #fbfbfe);\n+    --button-primary-border-color:var(--button-primary-bg-color);\n+    --csstools-light-dark-toggle--59:var(--csstools-color-scheme--light) #aaf2ff;\n+    --button-primary-active-bg-color:var(--csstools-light-dark-toggle--59, #054096);\n+    --button-primary-active-fg-color:var(--button-primary-fg-color);\n+    --button-primary-active-border-color:var(--button-primary-active-bg-color);\n+    --csstools-light-dark-toggle--60:var(--csstools-color-scheme--light) #80ebff;\n+    --button-primary-hover-bg-color:var(--csstools-light-dark-toggle--60, #0250bb);\n     --button-primary-hover-fg-color:var(--button-primary-fg-color);\n     --button-primary-hover-border-color:var(--button-primary-hover-bg-color);\n+    --button-primary-disabled-bg-color:var(--button-primary-bg-color);\n+    --button-primary-disabled-border-color:var(--button-primary-border-color);\n+    --button-primary-disabled-fg-color:var(--button-primary-fg-color);\n+    --button-disabled-opacity:0.4;\n \n-    font:message-box;\n-    font-size:13px;\n-    font-weight:400;\n-    line-height:150%;\n-    border-radius:4px;\n-    padding:12px 16px;\n-    border:1px solid var(--dialog-border-color);\n-    background:var(--dialog-bg-color);\n-    color:var(--text-primary-color);\n-    box-shadow:var(--dialog-shadow);\n+    --csstools-light-dark-toggle--61:var(--csstools-color-scheme--light) #42414d;\n+\n+    --input-text-bg-color:var(--csstools-light-dark-toggle--61, white);\n+    --input-text-fg-color:var(--text-primary-color);\n }\n \n-@media (prefers-color-scheme: dark){\n+@supports (color: light-dark(red, red)){\n+    .dialog{\n+        --dialog-bg-color:light-dark(white, #1c1b22);\n+        --dialog-border-color:light-dark(white, #1c1b22);\n+    }\n+}\n \n-    :where(html:not(.is-light)) .dialog{\n-        --dialog-bg-color:#1c1b22;\n-        --dialog-border-color:#1c1b22;\n-        --dialog-shadow:0 2px 14px 0 #15141a;\n-        --text-primary-color:#fbfbfe;\n-        --text-secondary-color:#cfcfd8;\n-        --focus-ring-color:#0df;\n-        --hover-filter:brightness(1.4);\n+@supports (color: light-dark(red, red)) and (color: rgb(0 0 0 \u002F 0)){\n+    .dialog{\n+        --dialog-shadow:0 2px 14px 0 light-dark(rgb(58 57 68 \u002F 0.2), #15141a);\n+    }\n+}\n+\n+@supports (color: light-dark(red, red)){\n+    .dialog{\n+        --text-primary-color:light-dark(#15141a, #fbfbfe);\n+        --text-secondary-color:light-dark(#5b5b66, #cfcfd8);\n+        --link-fg-color:light-dark(#0060df, #0df);\n+        --link-hover-fg-color:light-dark(#0250bb, #80ebff);\n+        --separator-color:light-dark(#f0f0f4, #52525e);\n+        --textarea-bg-color:light-dark(white, #42414d);\n \n-        --textarea-bg-color:#42414d;\n+        --radio-bg-color:light-dark(#f0f0f4, #2b2a33);\n+        --radio-checked-bg-color:light-dark(#fbfbfe, #15141a);\n+        --radio-checked-border-color:light-dark(#0060df, #0df);\n+    }\n+}\n \n-        --radio-bg-color:#2b2a33;\n-        --radio-checked-bg-color:#15141a;\n-        --radio-checked-border-color:#0df;\n+@supports (color: light-dark(red, red)) and (color: rgb(0 0 0 \u002F 0)){\n+    .dialog{\n \n-        --button-secondary-bg-color:#2b2a33;\n-        --button-primary-bg-color:#0df;\n-        --button-primary-fg-color:#15141a;\n+        --button-secondary-bg-color:light-dark(\n+            rgb(21 20 26 \u002F 0.07),\n+            rgb(251 251 254 \u002F 0.07)\n+            );\n+        --button-secondary-active-bg-color:light-dark(\n+            rgb(21 20 26 \u002F 0.21),\n+            rgb(251 251 254 \u002F 0.21)\n+            );\n+        --button-secondary-hover-bg-color:light-dark(\n+            rgb(21 20 26 \u002F 0.14),\n+            rgb(251 251 254 \u002F 0.14)\n+            );\n     }\n }\n \n-:where(html.is-dark) .dialog{\n-    --dialog-bg-color:#1c1b22;\n-    --dialog-border-color:#1c1b22;\n-    --dialog-shadow:0 2px 14px 0 #15141a;\n-    --text-primary-color:#fbfbfe;\n-    --text-secondary-color:#cfcfd8;\n-    --focus-ring-color:#0df;\n-    --hover-filter:brightness(1.4);\n+@supports (color: light-dark(red, red)){\n+    .dialog{\n \n-    --textarea-bg-color:#42414d;\n+        --button-primary-bg-color:light-dark(#0060df, #0df);\n+        --button-primary-fg-color:light-dark(#fbfbfe, #15141a);\n+        --button-primary-active-bg-color:light-dark(#054096, #aaf2ff);\n+        --button-primary-hover-bg-color:light-dark(#0250bb, #80ebff);\n+\n+        --input-text-bg-color:light-dark(white, #42414d);\n+    }\n+}\n+\n+@supports not (color: light-dark(tan, tan)){\n+\n+    .dialog *{\n+        --csstools-light-dark-toggle--42:var(--csstools-color-scheme--light) #1c1b22;\n+        --dialog-bg-color:var(--csstools-light-dark-toggle--42, white);\n+        --csstools-light-dark-toggle--43:var(--csstools-color-scheme--light) #1c1b22;\n+        --dialog-border-color:var(--csstools-light-dark-toggle--43, white);\n+        --csstools-light-dark-toggle--44:var(--csstools-color-scheme--light) #15141a;\n+        --dialog-shadow:0 2px 14px 0 var(--csstools-light-dark-toggle--44, rgb(58 57 68 \u002F 0.2));\n+        --csstools-light-dark-toggle--45:var(--csstools-color-scheme--light) #fbfbfe;\n+        --text-primary-color:var(--csstools-light-dark-toggle--45, #15141a);\n+        --csstools-light-dark-toggle--46:var(--csstools-color-scheme--light) #cfcfd8;\n+        --text-secondary-color:var(--csstools-light-dark-toggle--46, #5b5b66);\n+        --csstools-light-dark-toggle--47:var(--csstools-color-scheme--light) #0df;\n+        --link-fg-color:var(--csstools-light-dark-toggle--47, #0060df);\n+        --csstools-light-dark-toggle--48:var(--csstools-color-scheme--light) #80ebff;\n+        --link-hover-fg-color:var(--csstools-light-dark-toggle--48, #0250bb);\n+        --csstools-light-dark-toggle--49:var(--csstools-color-scheme--light) #52525e;\n+        --separator-color:var(--csstools-light-dark-toggle--49, #f0f0f4);\n+        --csstools-light-dark-toggle--50:var(--csstools-color-scheme--light) #42414d;\n+        --textarea-bg-color:var(--csstools-light-dark-toggle--50, white);\n+\n+        --csstools-light-dark-toggle--51:var(--csstools-color-scheme--light) #2b2a33;\n+\n+        --radio-bg-color:var(--csstools-light-dark-toggle--51, #f0f0f4);\n+        --csstools-light-dark-toggle--52:var(--csstools-color-scheme--light) #15141a;\n+        --radio-checked-bg-color:var(--csstools-light-dark-toggle--52, #fbfbfe);\n+        --csstools-light-dark-toggle--53:var(--csstools-color-scheme--light) #0df;\n+        --radio-checked-border-color:var(--csstools-light-dark-toggle--53, #0060df);\n+\n+        --csstools-light-dark-toggle--54:var(--csstools-color-scheme--light) rgb(251 251 254 \u002F 0.07);\n+\n+        --button-secondary-bg-color:var(--csstools-light-dark-toggle--54, rgb(21 20 26 \u002F 0.07));\n+        --csstools-light-dark-toggle--55:var(--csstools-color-scheme--light) rgb(251 251 254 \u002F 0.21);\n+        --button-secondary-active-bg-color:var(--csstools-light-dark-toggle--55, rgb(21 20 26 \u002F 0.21));\n+        --csstools-light-dark-toggle--56:var(--csstools-color-scheme--light) rgb(251 251 254 \u002F 0.14);\n+        --button-secondary-hover-bg-color:var(--csstools-light-dark-toggle--56, rgb(21 20 26 \u002F 0.14));\n+\n+        --csstools-light-dark-toggle--57:var(--csstools-color-scheme--light) #0df;\n+\n+        --button-primary-bg-color:var(--csstools-light-dark-toggle--57, #0060df);\n+        --csstools-light-dark-toggle--58:var(--csstools-color-scheme--light) #15141a;\n+        --button-primary-fg-color:var(--csstools-light-dark-toggle--58, #fbfbfe);\n+        --csstools-light-dark-toggle--59:var(--csstools-color-scheme--light) #aaf2ff;\n+        --button-primary-active-bg-color:var(--csstools-light-dark-toggle--59, #054096);\n+        --csstools-light-dark-toggle--60:var(--csstools-color-scheme--light) #80ebff;\n+        --button-primary-hover-bg-color:var(--csstools-light-dark-toggle--60, #0250bb);\n \n-    --radio-bg-color:#2b2a33;\n-    --radio-checked-bg-color:#15141a;\n-    --radio-checked-border-color:#0df;\n+        --csstools-light-dark-toggle--61:var(--csstools-color-scheme--light) #42414d;\n \n-    --button-secondary-bg-color:#2b2a33;\n-    --button-primary-bg-color:#0df;\n-    --button-primary-fg-color:#15141a;\n+        --input-text-bg-color:var(--csstools-light-dark-toggle--61, white);\n+    }\n+}\n+\n+@media (prefers-color-scheme: dark){\n+\n+    .dialog{\n+        --hover-filter:brightness(1.4);\n+        --button-disabled-opacity:0.6;\n+    }\n }\n \n @media screen and (forced-colors: active){\n@@ -109,7 +532,9 @@\n         --text-primary-color:CanvasText;\n         --text-secondary-color:CanvasText;\n         --hover-filter:none;\n-        --focus-ring-color:ButtonBorder;\n+        --link-fg-color:LinkText;\n+        --link-hover-fg-color:LinkText;\n+        --separator-color:CanvasText;\n \n         --textarea-border-color:ButtonBorder;\n         --textarea-bg-color:Field;\n@@ -120,39 +545,101 @@\n         --radio-border-color:ButtonText;\n         --radio-checked-border-color:ButtonText;\n \n-        --button-secondary-bg-color:ButtonFace;\n+        --button-secondary-bg-color:HighlightText;\n         --button-secondary-fg-color:ButtonText;\n         --button-secondary-border-color:ButtonText;\n-        --button-secondary-hover-bg-color:AccentColor;\n-        --button-secondary-hover-fg-color:AccentColorText;\n+        --button-secondary-active-bg-color:HighlightText;\n+        --button-secondary-active-fg-color:SelectedItem;\n+        --button-secondary-active-border-color:ButtonText;\n+        --button-secondary-hover-bg-color:HighlightText;\n+        --button-secondary-hover-fg-color:SelectedItem;\n+        --button-secondary-hover-border-color:SelectedItem;\n+        --button-secondary-disabled-fg-color:GrayText;\n+        --button-secondary-disabled-border-color:GrayText;\n \n         --button-primary-bg-color:ButtonText;\n-        --button-primary-fg-color:ButtonFace;\n-        --button-primary-hover-bg-color:AccentColor;\n-        --button-primary-hover-fg-color:AccentColorText;\n+        --button-primary-fg-color:HighlightText;\n+        --button-primary-border-color:ButtonText;\n+        --button-primary-active-bg-color:SelectedItem;\n+        --button-primary-active-fg-color:HighlightText;\n+        --button-primary-active-border-color:ButtonText;\n+        --button-primary-hover-bg-color:SelectedItem;\n+        --button-primary-hover-fg-color:HighlightText;\n+        --button-primary-hover-border-color:SelectedItem;\n+        --button-primary-disabled-bg-color:GrayText;\n+        --button-primary-disabled-fg-color:ButtonFace;\n+        --button-primary-disabled-border-color:GrayText;\n+        --button-disabled-opacity:1;\n+\n+        --input-text-bg-color:HighlightText;\n+        --input-text-fg-color:FieldText;\n     }\n }\n \n-.dialog .mainContainer *:focus-visible{\n+.dialog{\n+\n+    font:message-box;\n+    font-size:13px;\n+    font-weight:400;\n+    line-height:150%;\n+    border-radius:4px;\n+    padding:12px 16px;\n+    border:1px solid var(--dialog-border-color);\n+    background:var(--dialog-bg-color);\n+    color:var(--text-primary-color);\n+    box-shadow:var(--dialog-shadow);\n+}\n+\n+:is(.dialog .mainContainer) *:focus-visible{\n     outline:var(--focus-ring-outline);\n     outline-offset:2px;\n }\n \n-.dialog .mainContainer .radio{\n+:is(.dialog .mainContainer) .title{\n+    display:flex;\n+    width:auto;\n+    flex-direction:column;\n+    justify-content:flex-end;\n+    align-items:flex-start;\n+    gap:12px;\n+}\n+\n+:is(:is(.dialog .mainContainer) .title)  > span{\n+    font-size:13px;\n+    font-style:normal;\n+    font-weight:590;\n+    line-height:150%;\n+}\n+\n+:is(.dialog .mainContainer) .dialogSeparator{\n+    width:100%;\n+    height:0;\n+    margin-block:4px;\n+    border-top:1px solid var(--separator-color);\n+    border-bottom:none;\n+}\n+\n+:is(.dialog .mainContainer) .dialogButtonsGroup{\n+    display:flex;\n+    gap:12px;\n+    align-self:flex-end;\n+}\n+\n+:is(.dialog .mainContainer) .radio{\n     display:flex;\n     flex-direction:column;\n     align-items:flex-start;\n     gap:4px;\n }\n \n-.dialog .mainContainer .radio > .radioButton{\n+:is(:is(.dialog .mainContainer) .radio)  > .radioButton{\n     display:flex;\n     gap:8px;\n     align-self:stretch;\n     align-items:center;\n }\n \n-.dialog .mainContainer .radio > .radioButton input{\n+:is(:is(:is(.dialog .mainContainer) .radio) > .radioButton) input{\n     -webkit-appearance:none;\n     -moz-appearance:none;\n     appearance:none;\n@@ -164,16 +651,16 @@\n     border:1px solid var(--radio-border-color);\n }\n \n-.dialog .mainContainer .radio > .radioButton input:hover{\n+:is(:is(:is(:is(.dialog .mainContainer) .radio) > .radioButton) input):hover{\n     filter:var(--hover-filter);\n }\n \n-.dialog .mainContainer .radio > .radioButton input:checked{\n+:is(:is(:is(:is(.dialog .mainContainer) .radio) > .radioButton) input):checked{\n     background-color:var(--radio-checked-bg-color);\n     border:4px solid var(--radio-checked-border-color);\n }\n \n-.dialog .mainContainer .radio > .radioLabel{\n+:is(:is(.dialog .mainContainer) .radio)  > .radioLabel{\n     display:flex;\n     padding-inline-start:24px;\n     align-items:flex-start;\n@@ -181,53 +668,97 @@\n     align-self:stretch;\n }\n \n-.dialog .mainContainer .radio > .radioLabel > span{\n+:is(:is(:is(.dialog .mainContainer) .radio) > .radioLabel)  > span{\n     flex:1 0 0;\n     font-size:11px;\n     color:var(--text-secondary-color);\n }\n \n-.dialog .mainContainer button{\n+:is(.dialog .mainContainer) button:not(:is(.toggle-button,.closeButton,.clearInputButton)){\n     border-radius:4px;\n     border:1px solid;\n     font:menu;\n-    font-weight:600;\n+    font-weight:590;\n+    font-size:13px;\n     padding:4px 16px;\n     width:auto;\n     height:32px;\n }\n \n-.dialog .mainContainer button:hover{\n+:is(:is(.dialog .mainContainer) button:not(:is(.toggle-button,.closeButton,.clearInputButton))):hover{\n     cursor:pointer;\n     filter:var(--hover-filter);\n }\n \n-.dialog .mainContainer button.secondaryButton{\n+:is(:is(.dialog .mainContainer) button:not(:is(.toggle-button,.closeButton,.clearInputButton)))  > span{\n+    color:inherit;\n+    font:inherit;\n+}\n+\n+.secondaryButton:is(:is(.dialog .mainContainer) button:not(:is(.toggle-button,.closeButton,.clearInputButton))){\n     color:var(--button-secondary-fg-color);\n     background-color:var(--button-secondary-bg-color);\n     border-color:var(--button-secondary-border-color);\n }\n \n-.dialog .mainContainer button.secondaryButton:hover{\n+.secondaryButton:is(:is(.dialog .mainContainer) button:not(:is(.toggle-button,.closeButton,.clearInputButton))):hover{\n     color:var(--button-secondary-hover-fg-color);\n     background-color:var(--button-secondary-hover-bg-color);\n     border-color:var(--button-secondary-hover-border-color);\n }\n \n-.dialog .mainContainer button.primaryButton{\n-    color:var(--button-primary-hover-fg-color);\n-    background-color:var(--button-primary-hover-bg-color);\n-    border-color:var(--button-primary-hover-border-color);\n+.secondaryButton:is(:is(.dialog .mainContainer) button:not(:is(.toggle-button,.closeButton,.clearInputButton))):active{\n+    color:var(--button-secondary-active-fg-color);\n+    background-color:var(--button-secondary-active-bg-color);\n+    border-color:var(--button-secondary-active-border-color);\n+}\n+\n+.secondaryButton:is(:is(.dialog .mainContainer) button:not(:is(.toggle-button,.closeButton,.clearInputButton))):disabled{\n+    background-color:var(--button-secondary-disabled-bg-color);\n+    border-color:var(--button-secondary-disabled-border-color);\n+    color:var(--button-secondary-disabled-fg-color);\n+    opacity:var(--button-disabled-opacity);\n+}\n+\n+.primaryButton:is(:is(.dialog .mainContainer) button:not(:is(.toggle-button,.closeButton,.clearInputButton))){\n+    color:var(--button-primary-fg-color);\n+    background-color:var(--button-primary-bg-color);\n+    border-color:var(--button-primary-border-color);\n     opacity:1;\n }\n \n-.dialog .mainContainer button.primaryButton:hover{\n+.primaryButton:is(:is(.dialog .mainContainer) button:not(:is(.toggle-button,.closeButton,.clearInputButton))):hover{\n     color:var(--button-primary-hover-fg-color);\n     background-color:var(--button-primary-hover-bg-color);\n     border-color:var(--button-primary-hover-border-color);\n }\n \n-.dialog .mainContainer textarea{\n+.primaryButton:is(:is(.dialog .mainContainer) button:not(:is(.toggle-button,.closeButton,.clearInputButton))):active{\n+    color:var(--button-primary-active-fg-color);\n+    background-color:var(--button-primary-active-bg-color);\n+    border-color:var(--button-primary-active-border-color);\n+}\n+\n+.primaryButton:is(:is(.dialog .mainContainer) button:not(:is(.toggle-button,.closeButton,.clearInputButton))):disabled{\n+    background-color:var(--button-primary-disabled-bg-color);\n+    border-color:var(--button-primary-disabled-border-color);\n+    color:var(--button-primary-disabled-fg-color);\n+    opacity:var(--button-disabled-opacity);\n+}\n+\n+:is(:is(.dialog .mainContainer) button:not(:is(.toggle-button,.closeButton,.clearInputButton))):disabled{\n+    pointer-events:none;\n+}\n+\n+:is(.dialog .mainContainer) a{\n+    color:var(--link-fg-color);\n+}\n+\n+:is(:is(.dialog .mainContainer) a):hover{\n+    color:var(--link-hover-fg-color);\n+}\n+\n+:is(.dialog .mainContainer) textarea{\n     font:inherit;\n     padding:8px;\n     resize:none;\n@@ -239,16 +770,118 @@\n     color:var(--textarea-fg-color);\n }\n \n-.dialog .mainContainer textarea:focus{\n+:is(:is(.dialog .mainContainer) textarea):focus{\n     outline-offset:0;\n     border-color:transparent;\n }\n \n-.dialog .mainContainer textarea:disabled{\n+:is(:is(.dialog .mainContainer) textarea):disabled{\n     pointer-events:none;\n     opacity:0.4;\n }\n \n+:is(.dialog .mainContainer) input[type=\"text\"]{\n+    background-color:var(--input-text-bg-color);\n+    color:var(--input-text-fg-color);\n+}\n+\n+:is(.dialog .mainContainer) .messageBar{\n+    --csstools-light-dark-toggle--62:var(--csstools-color-scheme--light) #5a3100;\n+    --message-bar-bg-color:var(--csstools-light-dark-toggle--62, #ffebcd);\n+    --csstools-light-dark-toggle--63:var(--csstools-color-scheme--light) #fbfbfe;\n+    --message-bar-fg-color:var(--csstools-light-dark-toggle--63, #15141a);\n+    --csstools-light-dark-toggle--64:var(--csstools-color-scheme--light) rgb(255 255 255 \u002F 0.08);\n+    --message-bar-border-color:var(--csstools-light-dark-toggle--64, rgb(0 0 0 \u002F 0.08));\n+    --message-bar-icon:url(images\u002FmessageBar_warning.svg);\n+    --csstools-light-dark-toggle--65:var(--csstools-color-scheme--light) #e49c49;\n+    --message-bar-icon-color:var(--csstools-light-dark-toggle--65, #cd411e);\n+}\n+\n+@supports (color: light-dark(red, red)){\n+    :is(.dialog .mainContainer) .messageBar{\n+        --message-bar-bg-color:light-dark(#ffebcd, #5a3100);\n+        --message-bar-fg-color:light-dark(#15141a, #fbfbfe);\n+    }\n+}\n+\n+@supports (color: light-dark(red, red)) and (color: rgb(0 0 0 \u002F 0)){\n+    :is(.dialog .mainContainer) .messageBar{\n+        --message-bar-border-color:light-dark(\n+            rgb(0 0 0 \u002F 0.08),\n+            rgb(255 255 255 \u002F 0.08)\n+            );\n+    }\n+}\n+\n+@supports (color: light-dark(red, red)){\n+    :is(.dialog .mainContainer) .messageBar{\n+        --message-bar-icon-color:light-dark(#cd411e, #e49c49);\n+    }\n+}\n+\n+@supports not (color: light-dark(tan, tan)){\n+\n+    :is(:is(.dialog .mainContainer) .messageBar) *{\n+        --csstools-light-dark-toggle--62:var(--csstools-color-scheme--light) #5a3100;\n+        --message-bar-bg-color:var(--csstools-light-dark-toggle--62, #ffebcd);\n+        --csstools-light-dark-toggle--63:var(--csstools-color-scheme--light) #fbfbfe;\n+        --message-bar-fg-color:var(--csstools-light-dark-toggle--63, #15141a);\n+        --csstools-light-dark-toggle--64:var(--csstools-color-scheme--light) rgb(255 255 255 \u002F 0.08);\n+        --message-bar-border-color:var(--csstools-light-dark-toggle--64, rgb(0 0 0 \u002F 0.08));\n+        --csstools-light-dark-toggle--65:var(--csstools-color-scheme--light) #e49c49;\n+        --message-bar-icon-color:var(--csstools-light-dark-toggle--65, #cd411e);\n+    }\n+}\n+\n+@media screen and (forced-colors: active){\n+\n+    :is(.dialog .mainContainer) .messageBar{\n+        --message-bar-bg-color:HighlightText;\n+        --message-bar-fg-color:CanvasText;\n+        --message-bar-border-color:CanvasText;\n+        --message-bar-icon-color:CanvasText;\n+    }\n+}\n+\n+:is(.dialog .mainContainer) .messageBar{\n+\n+    align-self:stretch;\n+}\n+\n+:is(:is(:is(.dialog .mainContainer) .messageBar) > div)::before,:is(:is(:is(.dialog .mainContainer) .messageBar) > div)  > div{\n+    margin-block:4px;\n+}\n+\n+:is(:is(:is(.dialog .mainContainer) .messageBar) > div)  > div{\n+    display:flex;\n+    flex-direction:column;\n+    align-items:flex-start;\n+    gap:8px;\n+    flex:1 0 0;\n+}\n+\n+:is(:is(:is(:is(.dialog .mainContainer) .messageBar) > div) > div) .title{\n+    font-size:13px;\n+    font-weight:590;\n+}\n+\n+:is(:is(:is(:is(.dialog .mainContainer) .messageBar) > div) > div) .description{\n+    font-size:13px;\n+}\n+\n+:is(.dialog .mainContainer) .toggler{\n+    display:flex;\n+    align-items:center;\n+    gap:8px;\n+    align-self:stretch;\n+}\n+\n+:is(:is(.dialog .mainContainer) .toggler)  > .togglerLabel{\n+    -webkit-user-select:none;\n+    -moz-user-select:none;\n+    user-select:none;\n+}\n+\n .textLayer{\n     position:absolute;\n     text-align:initial;\n@@ -269,7 +902,7 @@\n     touch-action:none;\n }\n \n-.textLayer :is(span, br){\n+.textLayer :is(span,br){\n     color:transparent;\n     position:absolute;\n     white-space:pre;\n@@ -277,8 +910,7 @@\n     transform-origin:0% 0%;\n }\n \n-.textLayer > :not(.markedContent),\n-.textLayer .markedContent span:not(.markedContent){\n+.textLayer  > :not(.markedContent),.textLayer .markedContent span:not(.markedContent){\n     z-index:1;\n }\n \n@@ -287,18 +919,18 @@\n     height:0;\n }\n \n+.textLayer span[role=\"img\"]{\n+    -webkit-user-select:none;\n+    -moz-user-select:none;\n+    user-select:none;\n+    cursor:default;\n+}\n+\n .textLayer .highlight{\n     --highlight-bg-color:rgb(180 0 170 \u002F 0.25);\n     --highlight-selected-bg-color:rgb(0 100 0 \u002F 0.25);\n     --highlight-backdrop-filter:none;\n     --highlight-selected-backdrop-filter:none;\n-\n-    margin:-1px;\n-    padding:1px;\n-    background-color:var(--highlight-bg-color);\n-    -webkit-backdrop-filter:var(--highlight-backdrop-filter);\n-    backdrop-filter:var(--highlight-backdrop-filter);\n-    border-radius:4px;\n }\n \n @media screen and (forced-colors: active){\n@@ -313,23 +945,33 @@\n     }\n }\n \n-.textLayer .highlight.appended{\n+.textLayer .highlight{\n+\n+    margin:-1px;\n+    padding:1px;\n+    background-color:var(--highlight-bg-color);\n+    -webkit-backdrop-filter:var(--highlight-backdrop-filter);\n+    backdrop-filter:var(--highlight-backdrop-filter);\n+    border-radius:4px;\n+}\n+\n+.appended:is(.textLayer .highlight){\n     position:initial;\n }\n \n-.textLayer .highlight.begin{\n+.begin:is(.textLayer .highlight){\n     border-radius:4px 0 0 4px;\n }\n \n-.textLayer .highlight.end{\n+.end:is(.textLayer .highlight){\n     border-radius:0 4px 4px 0;\n }\n \n-.textLayer .highlight.middle{\n+.middle:is(.textLayer .highlight){\n     border-radius:0;\n }\n \n-.textLayer .highlight.selected{\n+.selected:is(.textLayer .highlight){\n     background-color:var(--highlight-selected-bg-color);\n     -webkit-backdrop-filter:var(--highlight-selected-backdrop-filter);\n     backdrop-filter:var(--highlight-selected-backdrop-filter);\n@@ -364,11 +1006,14 @@\n     user-select:none;\n }\n \n-.textLayer .endOfContent.active{\n+.textLayer.selecting .endOfContent{\n     top:0;\n }\n \n .annotationLayer{\n+    --csstools-color-scheme--light:initial;\n+    color-scheme:only light;\n+\n     --annotation-unfocused-field-background:url(\"data:image\u002Fsvg+xml;charset=UTF-8,\u003Csvg width='1px' height='1px' xmlns='http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg'>\u003Crect width='100%' height='100%' style='fill:rgba(0, 54, 255, 0.13);'\u002F>\u003C\u002Fsvg>\");\n     --input-focus-border-color:Highlight;\n     --input-focus-outline:1px solid Canvas;\n@@ -376,12 +1021,6 @@\n     --input-disabled-border-color:transparent;\n     --input-hover-border-color:black;\n     --link-outline:none;\n-\n-    position:absolute;\n-    top:0;\n-    left:0;\n-    pointer-events:none;\n-    transform-origin:0 0;\n }\n \n @media screen and (forced-colors: active){\n@@ -394,7 +1033,7 @@\n         --link-outline:1.5px solid LinkText;\n     }\n \n-    .annotationLayer .textWidgetAnnotation :is(input, textarea):required, .annotationLayer .choiceWidgetAnnotation select:required, .annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) input:required{\n+    .annotationLayer .textWidgetAnnotation :is(input,textarea):required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required{\n         outline:1.5px solid selectedItem;\n     }\n \n@@ -402,19 +1041,19 @@\n         outline:var(--link-outline);\n     }\n \n-    .annotationLayer .linkAnnotation:hover{\n+    :is(.annotationLayer .linkAnnotation):hover{\n         -webkit-backdrop-filter:var(--hcm-highlight-filter);\n         backdrop-filter:var(--hcm-highlight-filter);\n     }\n \n-    .annotationLayer .linkAnnotation > a:hover{\n+    :is(.annotationLayer .linkAnnotation) > a:hover{\n         opacity:0 !important;\n         background:none !important;\n         box-shadow:none;\n     }\n \n     .annotationLayer .popupAnnotation .popup{\n-        outline:calc(1.5px * var(--scale-factor)) solid CanvasText !important;\n+        outline:calc(1.5px * var(--total-scale-factor)) solid CanvasText !important;\n         background-color:ButtonFace !important;\n         color:ButtonText !important;\n     }\n@@ -432,10 +1071,19 @@\n     }\n \n     .annotationLayer .popupAnnotation.focused .popup{\n-        outline:calc(3px * var(--scale-factor)) solid Highlight !important;\n+        outline:calc(3px * var(--total-scale-factor)) solid Highlight !important;\n     }\n }\n \n+.annotationLayer{\n+\n+    position:absolute;\n+    top:0;\n+    left:0;\n+    pointer-events:none;\n+    transform-origin:0 0;\n+}\n+\n .annotationLayer[data-main-rotation=\"90\"] .norotate{\n     transform:rotate(270deg) translateX(-100%);\n }\n@@ -448,8 +1096,7 @@\n     transform:rotate(90deg) translateY(-100%);\n }\n \n-.annotationLayer.disabled section,\n-.annotationLayer.disabled .popup{\n+.annotationLayer.disabled section,.annotationLayer.disabled .popup{\n     pointer-events:none;\n }\n \n@@ -460,7 +1107,7 @@\n     pointer-events:none;\n }\n \n-.annotationLayer .annotationContent.freetext{\n+.freetext:is(.annotationLayer .annotationContent){\n     background:transparent;\n     border:none;\n     inset:0;\n@@ -468,9 +1115,6 @@\n     white-space:nowrap;\n     font:10px sans-serif;\n     line-height:1.35;\n-    -webkit-user-select:none;\n-    -moz-user-select:none;\n-    user-select:none;\n }\n \n .annotationLayer section{\n@@ -479,13 +1123,20 @@\n     pointer-events:auto;\n     box-sizing:border-box;\n     transform-origin:0 0;\n+    -webkit-user-select:none;\n+    -moz-user-select:none;\n+    user-select:none;\n }\n \n-.annotationLayer section:has(div.annotationContent) canvas.annotationContent{\n+:is(.annotationLayer section):has(div.annotationContent) canvas.annotationContent{\n     display:none;\n }\n \n-.annotationLayer :is(.linkAnnotation, .buttonWidgetAnnotation.pushButton) > a{\n+.textLayer.selecting ~ .annotationLayer section{\n+    pointer-events:none;\n+}\n+\n+.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton) > a{\n     position:absolute;\n     font-size:1em;\n     top:0;\n@@ -494,8 +1145,7 @@\n     height:100%;\n }\n \n-.annotationLayer :is(.linkAnnotation, .buttonWidgetAnnotation.pushButton):not(.hasBorder)\n-> a:hover{\n+.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton):not(.hasBorder) > a:hover{\n     opacity:0.2;\n     background-color:rgb(255 255 0);\n     box-shadow:0 2px 10px rgb(255 255 0);\n@@ -518,18 +1168,18 @@\n     left:0;\n }\n \n-.annotationLayer .textWidgetAnnotation :is(input, textarea), .annotationLayer .choiceWidgetAnnotation select, .annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) input{\n+.annotationLayer .textWidgetAnnotation :is(input,textarea),.annotationLayer .choiceWidgetAnnotation select,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input{\n     background-image:var(--annotation-unfocused-field-background);\n     border:2px solid var(--input-unfocused-border-color);\n     box-sizing:border-box;\n-    font:calc(9px * var(--scale-factor)) sans-serif;\n+    font:calc(9px * var(--total-scale-factor)) sans-serif;\n     height:100%;\n     margin:0;\n     vertical-align:top;\n     width:100%;\n }\n \n-.annotationLayer .textWidgetAnnotation :is(input, textarea):required, .annotationLayer .choiceWidgetAnnotation select:required, .annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) input:required{\n+.annotationLayer .textWidgetAnnotation :is(input,textarea):required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required{\n     outline:1.5px solid red;\n }\n \n@@ -545,28 +1195,28 @@\n     resize:none;\n }\n \n-.annotationLayer .textWidgetAnnotation [disabled]:is(input, textarea), .annotationLayer .choiceWidgetAnnotation select[disabled], .annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) input[disabled]{\n+.annotationLayer .textWidgetAnnotation [disabled]:is(input,textarea),.annotationLayer .choiceWidgetAnnotation select[disabled],.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input[disabled]{\n     background:none;\n     border:2px solid var(--input-disabled-border-color);\n     cursor:not-allowed;\n }\n \n-.annotationLayer .textWidgetAnnotation :is(input, textarea):hover, .annotationLayer .choiceWidgetAnnotation select:hover, .annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) input:hover{\n+.annotationLayer .textWidgetAnnotation :is(input,textarea):hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:hover{\n     border:2px solid var(--input-hover-border-color);\n }\n \n-.annotationLayer .textWidgetAnnotation :is(input, textarea):hover, .annotationLayer .choiceWidgetAnnotation select:hover, .annotationLayer .buttonWidgetAnnotation.checkBox input:hover{\n+.annotationLayer .textWidgetAnnotation :is(input,textarea):hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .buttonWidgetAnnotation.checkBox input:hover{\n     border-radius:2px;\n }\n \n-.annotationLayer .textWidgetAnnotation :is(input, textarea):focus, .annotationLayer .choiceWidgetAnnotation select:focus{\n+.annotationLayer .textWidgetAnnotation :is(input,textarea):focus,.annotationLayer .choiceWidgetAnnotation select:focus{\n     background:none;\n     border:2px solid var(--input-focus-border-color);\n     border-radius:2px;\n     outline:var(--input-focus-outline);\n }\n \n-.annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) :focus{\n+.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) :focus{\n     background-image:none;\n     background-color:transparent;\n }\n@@ -582,17 +1232,14 @@\n     outline:var(--input-focus-outline);\n }\n \n-.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before,\n-.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after,\n-.annotationLayer .buttonWidgetAnnotation.radioButton input:checked::before{\n+.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after,.annotationLayer .buttonWidgetAnnotation.radioButton input:checked::before{\n     background-color:CanvasText;\n     content:\"\";\n     display:block;\n     position:absolute;\n }\n \n-.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before,\n-.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after{\n+.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after{\n     height:80%;\n     left:45%;\n     width:1px;\n@@ -624,7 +1271,7 @@\n     width:103%;\n }\n \n-.annotationLayer .buttonWidgetAnnotation:is(.checkBox, .radioButton) input{\n+.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input{\n     -webkit-appearance:none;\n     -moz-appearance:none;\n     appearance:none;\n@@ -637,7 +1284,7 @@\n \n .annotationLayer .popupAnnotation{\n     position:absolute;\n-    font-size:calc(9px * var(--scale-factor));\n+    font-size:calc(9px * var(--total-scale-factor));\n     pointer-events:none;\n     width:-moz-max-content;\n     width:max-content;\n@@ -647,15 +1294,19 @@\n \n .annotationLayer .popup{\n     background-color:rgb(255 255 153);\n-    box-shadow:0 calc(2px * var(--scale-factor)) calc(5px * var(--scale-factor)) rgb(136 136 136);\n-    border-radius:calc(2px * var(--scale-factor));\n+    color:black;\n+    box-shadow:0 calc(2px * var(--total-scale-factor)) calc(5px * var(--total-scale-factor)) rgb(136 136 136);\n+    border-radius:calc(2px * var(--total-scale-factor));\n     outline:1.5px solid rgb(255 255 74);\n-    padding:calc(6px * var(--scale-factor));\n+    padding:calc(6px * var(--total-scale-factor));\n     cursor:pointer;\n     font:message-box;\n     white-space:normal;\n     word-wrap:break-word;\n     pointer-events:auto;\n+    -webkit-user-select:text;\n+    -moz-user-select:text;\n+    user-select:text;\n }\n \n .annotationLayer .popupAnnotation.focused .popup{\n@@ -663,7 +1314,7 @@\n }\n \n .annotationLayer .popup *{\n-    font-size:calc(9px * var(--scale-factor));\n+    font-size:calc(9px * var(--total-scale-factor));\n }\n \n .annotationLayer .popup > .header{\n@@ -676,20 +1327,20 @@\n \n .annotationLayer .popup > .header .popupDate{\n     display:inline-block;\n-    margin-left:calc(5px * var(--scale-factor));\n+    margin-left:calc(5px * var(--total-scale-factor));\n     width:-moz-fit-content;\n     width:fit-content;\n }\n \n .annotationLayer .popupContent{\n     border-top:1px solid rgb(51 51 51);\n-    margin-top:calc(2px * var(--scale-factor));\n-    padding-top:calc(2px * var(--scale-factor));\n+    margin-top:calc(2px * var(--total-scale-factor));\n+    padding-top:calc(2px * var(--total-scale-factor));\n }\n \n .annotationLayer .richText > *{\n     white-space:pre-wrap;\n-    font-size:calc(9px * var(--scale-factor));\n+    font-size:calc(9px * var(--total-scale-factor));\n }\n \n .annotationLayer .popupTriggerArea{\n@@ -716,7 +1367,7 @@\n     pointer-events:none;\n }\n \n-.annotationLayer .annotationTextContent span{\n+:is(.annotationLayer .annotationTextContent) span{\n     width:100%;\n     display:inline-block;\n }\n@@ -746,6 +1397,9 @@\n }\n \n .xfaLayer{\n+    --csstools-color-scheme--light:initial;\n+    color-scheme:only light;\n+\n     background-color:transparent;\n }\n \n@@ -1053,101 +1707,181 @@\n     transform:none;\n }\n \n-.canvasWrapper svg[data-main-rotation=\"90\"] mask,\n-.canvasWrapper svg[data-main-rotation=\"90\"] use:not(.clip, .mask){\n+.moving:is(.canvasWrapper svg){\n+    z-index:100000;\n+}\n+\n+[data-main-rotation=\"90\"]:is(.highlight:is(.canvasWrapper svg),.highlightOutline:is(.canvasWrapper svg)) mask,[data-main-rotation=\"90\"]:is(.highlight:is(.canvasWrapper svg),.highlightOutline:is(.canvasWrapper svg)) use:not(.clip,.mask){\n     transform:matrix(0, 1, -1, 0, 1, 0);\n }\n \n-.canvasWrapper svg[data-main-rotation=\"180\"] mask,\n-.canvasWrapper svg[data-main-rotation=\"180\"] use:not(.clip, .mask){\n+[data-main-rotation=\"180\"]:is(.highlight:is(.canvasWrapper svg),.highlightOutline:is(.canvasWrapper svg)) mask,[data-main-rotation=\"180\"]:is(.highlight:is(.canvasWrapper svg),.highlightOutline:is(.canvasWrapper svg)) use:not(.clip,.mask){\n     transform:matrix(-1, 0, 0, -1, 1, 1);\n }\n \n-.canvasWrapper svg[data-main-rotation=\"270\"] mask,\n-.canvasWrapper svg[data-main-rotation=\"270\"] use:not(.clip, .mask){\n+[data-main-rotation=\"270\"]:is(.highlight:is(.canvasWrapper svg),.highlightOutline:is(.canvasWrapper svg)) mask,[data-main-rotation=\"270\"]:is(.highlight:is(.canvasWrapper svg),.highlightOutline:is(.canvasWrapper svg)) use:not(.clip,.mask){\n     transform:matrix(0, -1, 1, 0, 0, 1);\n }\n \n-.canvasWrapper svg.highlight{\n-    --blend-mode:multiply;\n-\n+.draw:is(.canvasWrapper svg){\n     position:absolute;\n-    mix-blend-mode:var(--blend-mode);\n+    mix-blend-mode:normal;\n+}\n+\n+.draw[data-draw-rotation=\"90\"]:is(.canvasWrapper svg){\n+    transform:rotate(90deg);\n+}\n+\n+.draw[data-draw-rotation=\"180\"]:is(.canvasWrapper svg){\n+    transform:rotate(180deg);\n+}\n+\n+.draw[data-draw-rotation=\"270\"]:is(.canvasWrapper svg){\n+    transform:rotate(270deg);\n+}\n+\n+.highlight:is(.canvasWrapper svg){\n+    --blend-mode:multiply;\n }\n \n @media screen and (forced-colors: active){\n \n-    .canvasWrapper svg.highlight{\n+    .highlight:is(.canvasWrapper svg){\n         --blend-mode:difference;\n     }\n }\n \n-.canvasWrapper svg.highlight:not(.free){\n+.highlight:is(.canvasWrapper svg){\n+\n+    position:absolute;\n+    mix-blend-mode:var(--blend-mode);\n+}\n+\n+.highlight:is(.canvasWrapper svg):not(.free){\n     fill-rule:evenodd;\n }\n \n-.canvasWrapper svg.highlightOutline{\n+.highlightOutline:is(.canvasWrapper svg){\n     position:absolute;\n     mix-blend-mode:normal;\n     fill-rule:evenodd;\n     fill:none;\n }\n \n-.canvasWrapper svg.highlightOutline.hovered:not(.free):not(.selected){\n+.highlightOutline.hovered:is(.canvasWrapper svg):not(.free):not(.selected){\n     stroke:var(--hover-outline-color);\n     stroke-width:var(--outline-width);\n }\n \n-.canvasWrapper svg.highlightOutline.selected:not(.free) .mainOutline{\n+.highlightOutline.selected:is(.canvasWrapper svg):not(.free) .mainOutline{\n     stroke:var(--outline-around-color);\n     stroke-width:calc(\n         var(--outline-width) + 2 * var(--outline-around-width)\n         );\n }\n \n-.canvasWrapper svg.highlightOutline.selected:not(.free) .secondaryOutline{\n+.highlightOutline.selected:is(.canvasWrapper svg):not(.free) .secondaryOutline{\n     stroke:var(--outline-color);\n     stroke-width:var(--outline-width);\n }\n \n-.canvasWrapper svg.highlightOutline.free.hovered:not(.selected){\n+.highlightOutline.free.hovered:is(.canvasWrapper svg):not(.selected){\n     stroke:var(--hover-outline-color);\n     stroke-width:calc(2 * var(--outline-width));\n }\n \n-.canvasWrapper svg.highlightOutline.free.selected .mainOutline{\n+.highlightOutline.free.selected:is(.canvasWrapper svg) .mainOutline{\n     stroke:var(--outline-around-color);\n     stroke-width:calc(\n         2 * (var(--outline-width) + var(--outline-around-width))\n         );\n }\n \n-.canvasWrapper svg.highlightOutline.free.selected .secondaryOutline{\n+.highlightOutline.free.selected:is(.canvasWrapper svg) .secondaryOutline{\n     stroke:var(--outline-color);\n     stroke-width:calc(2 * var(--outline-width));\n }\n \n .toggle-button{\n-    --button-background-color:#f0f0f4;\n-    --button-background-color-hover:#e0e0e6;\n-    --button-background-color-active:#cfcfd8;\n-    --color-accent-primary:#0060df;\n-    --color-accent-primary-hover:#0250bb;\n-    --color-accent-primary-active:#054096;\n-    --border-interactive-color:#8f8f9d;\n+    --button-background-color:color-mix(in srgb, currentColor 7%, transparent);\n+    --button-background-color-hover:color-mix(\n+        in srgb,\n+        currentColor 14%,\n+        transparent\n+        );\n+    --button-background-color-active:color-mix(\n+        in srgb,\n+        currentColor 21%,\n+        transparent\n+        );\n+    --csstools-light-dark-toggle--66:var(--csstools-color-scheme--light) #0df;\n+    --color-accent-primary:var(--csstools-light-dark-toggle--66, #0060df);\n+    --csstools-light-dark-toggle--67:var(--csstools-color-scheme--light) #80ebff;\n+    --color-accent-primary-hover:var(--csstools-light-dark-toggle--67, #0250bb);\n+    --csstools-light-dark-toggle--68:var(--csstools-color-scheme--light) #aaf2ff;\n+    --color-accent-primary-active:var(--csstools-light-dark-toggle--68, #054096);\n     --border-radius-circle:9999px;\n     --border-width:1px;\n     --size-item-small:16px;\n     --size-item-large:32px;\n-    --color-canvas:white;\n+    --csstools-light-dark-toggle--69:var(--csstools-color-scheme--light) #1c1b22;\n+    --color-canvas:var(--csstools-light-dark-toggle--69, white);\n+    --background-color-canvas:var(--color-canvas);\n+    --csstools-light-dark-toggle--70:var(--csstools-color-scheme--light) #f9f9fa;\n+    --border-color-interactive:var(--csstools-light-dark-toggle--70, #8f8f9d);\n+    --border-color-interactive-hover:var(--border-color-interactive);\n+    --border-color-interactive-active:var(--border-color-interactive);\n+}\n+\n+@supports (color: light-dark(red, red)){\n+    .toggle-button{\n+        --color-accent-primary:light-dark(#0060df, #0df);\n+        --color-accent-primary-hover:light-dark(#0250bb, #80ebff);\n+        --color-accent-primary-active:light-dark(#054096, #aaf2ff);\n+        --color-canvas:light-dark(white, #1c1b22);\n+        --border-color-interactive:light-dark(#8f8f9d, #f9f9fa);\n+    }\n+}\n+\n+@supports not (color: light-dark(tan, tan)){\n+\n+    .toggle-button *{\n+        --csstools-light-dark-toggle--66:var(--csstools-color-scheme--light) #0df;\n+        --color-accent-primary:var(--csstools-light-dark-toggle--66, #0060df);\n+        --csstools-light-dark-toggle--67:var(--csstools-color-scheme--light) #80ebff;\n+        --color-accent-primary-hover:var(--csstools-light-dark-toggle--67, #0250bb);\n+        --csstools-light-dark-toggle--68:var(--csstools-color-scheme--light) #aaf2ff;\n+        --color-accent-primary-active:var(--csstools-light-dark-toggle--68, #054096);\n+        --csstools-light-dark-toggle--69:var(--csstools-color-scheme--light) #1c1b22;\n+        --color-canvas:var(--csstools-light-dark-toggle--69, white);\n+        --csstools-light-dark-toggle--70:var(--csstools-color-scheme--light) #f9f9fa;\n+        --border-color-interactive:var(--csstools-light-dark-toggle--70, #8f8f9d);\n+    }\n+}\n+\n+@media (forced-colors: active){\n \n+    .toggle-button{\n+        --color-accent-primary:ButtonText;\n+        --color-accent-primary-hover:SelectedItem;\n+        --color-accent-primary-active:SelectedItem;\n+        --button-background-color:ButtonFace;\n+        --border-color-interactive:ButtonText;\n+        --border-color-interactive-hover:SelectedItem;\n+        --border-color-interactive-active:ButtonText;\n+        --color-canvas:ButtonText;\n+        --background-color-canvas:Canvas;\n+    }\n+}\n+\n+.toggle-button{\n     --toggle-background-color:var(--button-background-color);\n     --toggle-background-color-hover:var(--button-background-color-hover);\n     --toggle-background-color-active:var(--button-background-color-active);\n     --toggle-background-color-pressed:var(--color-accent-primary);\n     --toggle-background-color-pressed-hover:var(--color-accent-primary-hover);\n     --toggle-background-color-pressed-active:var(--color-accent-primary-active);\n-    --toggle-border-color:var(--border-interactive-color);\n+    --toggle-border-color:var(--border-color-interactive);\n     --toggle-border-color-hover:var(--toggle-border-color);\n     --toggle-border-color-active:var(--toggle-border-color);\n     --toggle-border-radius:var(--border-radius-circle);\n@@ -1157,7 +1891,7 @@\n     --toggle-dot-background-color:var(--toggle-border-color);\n     --toggle-dot-background-color-hover:var(--toggle-dot-background-color);\n     --toggle-dot-background-color-active:var(--toggle-dot-background-color);\n-    --toggle-dot-background-color-on-pressed:var(--color-canvas);\n+    --toggle-dot-background-color-on-pressed:var(--background-color-canvas);\n     --toggle-dot-margin:1px;\n     --toggle-dot-height:calc(\n         var(--toggle-height) - 2 * var(--toggle-dot-margin) - 2 *\n@@ -1167,6 +1901,7 @@\n     --toggle-dot-transform-x:calc(\n         var(--toggle-width) - 4 * var(--toggle-dot-margin) - var(--toggle-dot-width)\n         );\n+    --input-width:var(--toggle-width);\n \n     -webkit-appearance:none;\n \n@@ -1174,70 +1909,12 @@\n \n     appearance:none;\n     padding:0;\n-    margin:0;\n     border:var(--toggle-border-width) solid var(--toggle-border-color);\n     height:var(--toggle-height);\n     width:var(--toggle-width);\n     border-radius:var(--toggle-border-radius);\n-    background:var(--toggle-background-color);\n+    background-color:var(--toggle-background-color);\n     box-sizing:border-box;\n-    flex-shrink:0;\n-}\n-\n-@media (prefers-color-scheme: dark){\n-\n-    :where(html:not(.is-light)) .toggle-button{\n-        --button-background-color:color-mix(in srgb, currentColor 7%, transparent);\n-        --button-background-color-hover:color-mix(\n-            in srgb,\n-            currentColor 14%,\n-            transparent\n-            );\n-        --button-background-color-active:color-mix(\n-            in srgb,\n-            currentColor 21%,\n-            transparent\n-            );\n-        --color-accent-primary:#0df;\n-        --color-accent-primary-hover:#80ebff;\n-        --color-accent-primary-active:#aaf2ff;\n-        --border-interactive-color:#bfbfc9;\n-        --color-canvas:#1c1b22;\n-    }\n-}\n-\n-:where(html.is-dark) .toggle-button{\n-    --button-background-color:color-mix(in srgb, currentColor 7%, transparent);\n-    --button-background-color-hover:color-mix(\n-        in srgb,\n-        currentColor 14%,\n-        transparent\n-        );\n-    --button-background-color-active:color-mix(\n-        in srgb,\n-        currentColor 21%,\n-        transparent\n-        );\n-    --color-accent-primary:#0df;\n-    --color-accent-primary-hover:#80ebff;\n-    --color-accent-primary-active:#aaf2ff;\n-    --border-interactive-color:#bfbfc9;\n-    --color-canvas:#1c1b22;\n-}\n-\n-@media (forced-colors: active){\n-\n-    .toggle-button{\n-        --color-accent-primary:ButtonText;\n-        --color-accent-primary-hover:SelectedItem;\n-        --color-accent-primary-active:SelectedItem;\n-        --border-interactive-color:ButtonText;\n-        --button-background-color:ButtonFace;\n-        --border-interactive-color-hover:SelectedItem;\n-        --border-interactive-color-active:SelectedItem;\n-        --border-interactive-color-disabled:GrayText;\n-        --color-canvas:ButtonText;\n-    }\n }\n \n .toggle-button:focus-visible{\n@@ -1246,30 +1923,15 @@\n }\n \n .toggle-button:enabled:hover{\n-    background:var(--toggle-background-color-hover);\n+    background-color:var(--toggle-background-color-hover);\n     border-color:var(--toggle-border-color);\n }\n \n-.toggle-button:enabled:active{\n-    background:var(--toggle-background-color-active);\n+.toggle-button:enabled:hover:active{\n+    background-color:var(--toggle-background-color-active);\n     border-color:var(--toggle-border-color);\n }\n \n-.toggle-button[aria-pressed=\"true\"]{\n-    background:var(--toggle-background-color-pressed);\n-    border-color:transparent;\n-}\n-\n-.toggle-button[aria-pressed=\"true\"]:enabled:hover{\n-    background:var(--toggle-background-color-pressed-hover);\n-    border-color:transparent;\n-}\n-\n-.toggle-button[aria-pressed=\"true\"]:enabled:active{\n-    background:var(--toggle-background-color-pressed-active);\n-    border-color:transparent;\n-}\n-\n .toggle-button::before{\n     display:block;\n     content:\"\";\n@@ -1281,17 +1943,31 @@\n     translate:0;\n }\n \n+.toggle-button[aria-pressed=\"true\"]{\n+    background-color:var(--toggle-background-color-pressed);\n+    border-color:transparent;\n+}\n+\n+.toggle-button[aria-pressed=\"true\"]:enabled:hover{\n+    background-color:var(--toggle-background-color-pressed-hover);\n+    border-color:transparent;\n+}\n+\n+.toggle-button[aria-pressed=\"true\"]:enabled:hover:active{\n+    background-color:var(--toggle-background-color-pressed-active);\n+    border-color:transparent;\n+}\n+\n .toggle-button[aria-pressed=\"true\"]::before{\n     translate:var(--toggle-dot-transform-x);\n     background-color:var(--toggle-dot-background-color-on-pressed);\n }\n \n-.toggle-button[aria-pressed=\"true\"]:enabled:hover::before,\n-.toggle-button[aria-pressed=\"true\"]:enabled:active::before{\n+.toggle-button[aria-pressed=\"true\"]:enabled:hover::before,.toggle-button[aria-pressed=\"true\"]:enabled:hover:active::before{\n     background-color:var(--toggle-dot-background-color-on-pressed);\n }\n \n-[dir=\"rtl\"] .toggle-button[aria-pressed=\"true\"]::before{\n+.toggle-button[aria-pressed=\"true\"]:-moz-locale-dir(rtl)::before,[dir=\"rtl\"] .toggle-button[aria-pressed=\"true\"]::before{\n     translate:calc(-1 * var(--toggle-dot-transform-x));\n }\n \n@@ -1306,7 +1982,7 @@\n         border-color:var(--toggle-border-color-hover);\n     }\n \n-    .toggle-button:enabled:active{\n+    .toggle-button:enabled:hover:active{\n         border-color:var(--toggle-border-color-active);\n     }\n \n@@ -1315,33 +1991,29 @@\n         position:relative;\n     }\n \n-    .toggle-button[aria-pressed=\"true\"]:enabled:hover,\n-    .toggle-button[aria-pressed=\"true\"]:enabled:hover:active{\n+    .toggle-button[aria-pressed=\"true\"]:enabled:hover{\n         border-color:var(--toggle-border-color-hover);\n     }\n \n-    .toggle-button[aria-pressed=\"true\"]:enabled:active{\n+    .toggle-button[aria-pressed=\"true\"]:enabled:hover:active{\n         background-color:var(--toggle-dot-background-color-active);\n         border-color:var(--toggle-dot-background-color-hover);\n     }\n \n-    .toggle-button:hover::before,\n-    .toggle-button:active::before{\n+    .toggle-button:enabled:hover::before,\n+    .toggle-button:enabled:hover:active::before{\n         background-color:var(--toggle-dot-background-color-hover);\n     }\n }\n \n @media (forced-colors){\n-\n     .toggle-button{\n         --toggle-dot-background-color:var(--color-accent-primary);\n         --toggle-dot-background-color-hover:var(--color-accent-primary-hover);\n         --toggle-dot-background-color-active:var(--color-accent-primary-active);\n         --toggle-dot-background-color-on-pressed:var(--button-background-color);\n-        --toggle-background-color-disabled:var(--button-background-color-disabled);\n-        --toggle-border-color-hover:var(--border-interactive-color-hover);\n-        --toggle-border-color-active:var(--border-interactive-color-active);\n-        --toggle-border-color-disabled:var(--border-interactive-color-disabled);\n+        --toggle-border-color-hover:var(--border-color-interactive-hover);\n+        --toggle-border-color-active:var(--border-color-interactive-active);\n     }\n \n     .toggle-button[aria-pressed=\"true\"]:enabled::after{\n@@ -1355,12 +2027,885 @@\n         inset:-2px;\n     }\n \n-    .toggle-button[aria-pressed=\"true\"]:enabled:active::after{\n+    .toggle-button[aria-pressed=\"true\"]:enabled:hover:active::after{\n         border-color:var(--toggle-border-color-active);\n     }\n }\n \n :root{\n+    --clear-signature-button-icon:url(images\u002Feditor-toolbar-delete.svg);\n+    --csstools-light-dark-toggle--71:var(--csstools-color-scheme--light) #2b2a33;\n+    --signature-bg:var(--csstools-light-dark-toggle--71, #f9f9fb);\n+    --csstools-light-dark-toggle--72:var(--csstools-color-scheme--light) var(--signature-bg);\n+    --signature-hover-bg:var(--csstools-light-dark-toggle--72, #f0f0f4);\n+    --button-signature-bg:transparent;\n+    --button-signature-color:var(--main-color);\n+    --csstools-light-dark-toggle--73:var(--csstools-color-scheme--light) #5b5b66;\n+    --button-signature-active-bg:var(--csstools-light-dark-toggle--73, #cfcfd8);\n+    --button-signature-active-border:none;\n+    --button-signature-active-color:var(--button-signature-color);\n+    --button-signature-border:none;\n+    --csstools-light-dark-toggle--74:var(--csstools-color-scheme--light) #52525e;\n+    --button-signature-hover-bg:var(--csstools-light-dark-toggle--74, #e0e0e6);\n+    --button-signature-hover-color:var(--button-signature-color);\n+}\n+\n+@supports (color: light-dark(red, red)){\n+    :root{\n+        --signature-bg:light-dark(#f9f9fb, #2b2a33);\n+        --signature-hover-bg:light-dark(#f0f0f4, var(--signature-bg));\n+        --button-signature-active-bg:light-dark(#cfcfd8, #5b5b66);\n+        --button-signature-hover-bg:light-dark(#e0e0e6, #52525e);\n+    }\n+}\n+\n+@supports not (color: light-dark(tan, tan)){\n+\n+    :root *{\n+        --csstools-light-dark-toggle--71:var(--csstools-color-scheme--light) #2b2a33;\n+        --signature-bg:var(--csstools-light-dark-toggle--71, #f9f9fb);\n+        --csstools-light-dark-toggle--72:var(--csstools-color-scheme--light) var(--signature-bg);\n+        --signature-hover-bg:var(--csstools-light-dark-toggle--72, #f0f0f4);\n+        --csstools-light-dark-toggle--73:var(--csstools-color-scheme--light) #5b5b66;\n+        --button-signature-active-bg:var(--csstools-light-dark-toggle--73, #cfcfd8);\n+        --csstools-light-dark-toggle--74:var(--csstools-color-scheme--light) #52525e;\n+        --button-signature-hover-bg:var(--csstools-light-dark-toggle--74, #e0e0e6);\n+    }\n+}\n+\n+@media screen and (forced-colors: active){\n+\n+    :root{\n+        --signature-bg:HighlightText;\n+        --signature-hover-bg:var(--signature-bg);\n+        --button-signature-bg:HighlightText;\n+        --button-signature-color:ButtonText;\n+        --button-signature-active-bg:ButtonText;\n+        --button-signature-active-color:HighlightText;\n+        --button-signature-border:1px solid ButtonText;\n+        --button-signature-hover-bg:Highlight;\n+        --button-signature-hover-color:HighlightText;\n+    }\n+}\n+\n+.signatureDialog{\n+    --primary-color:var(--text-primary-color);\n+    --border-color:#8f8f9d;\n+    --open-link-fg:var(--link-fg-color);\n+    --open-link-hover-fg:var(--link-hover-fg-color);\n+}\n+\n+@media screen and (forced-colors: active){\n+\n+    .signatureDialog{\n+        --primary-color:ButtonText;\n+        --border-color:ButtonText;\n+        --open-link-fg:ButtonText;\n+        --open-link-hover-fg:ButtonText;\n+    }\n+}\n+\n+.signatureDialog{\n+\n+    width:570px;\n+    max-width:100%;\n+    min-width:300px;\n+    padding:16px 0;\n+}\n+\n+.signatureDialog .mainContainer{\n+    width:100%;\n+    display:flex;\n+    flex-direction:column;\n+    align-items:flex-start;\n+    gap:12px;\n+}\n+\n+:is(.signatureDialog .mainContainer) span:not([role=\"sectionhead\"]){\n+    font-size:13px;\n+    font-style:normal;\n+    font-weight:400;\n+    line-height:normal;\n+}\n+\n+:is(.signatureDialog .mainContainer) .title{\n+    margin-inline-start:16px;\n+}\n+\n+.signatureDialog .inputWithClearButton{\n+    --button-dimension:24px;\n+    --clear-button-icon:url(images\u002FmessageBar_closingButton.svg);\n+\n+    width:100%;\n+    position:relative;\n+    display:flex;\n+    align-items:center;\n+    justify-content:center;\n+}\n+\n+:is(.signatureDialog .inputWithClearButton)  > input{\n+    width:100%;\n+    height:32px;\n+    padding-inline:8px calc(4px + var(--button-dimension));\n+    box-sizing:border-box;\n+    border-radius:4px;\n+    border:1px solid var(--border-color);\n+}\n+\n+:is(.signatureDialog .inputWithClearButton) .clearInputButton{\n+    position:absolute;\n+    inset-block-start:4px;\n+    inset-inline-end:4px;\n+    display:inline-block;\n+    width:var(--button-dimension);\n+    height:var(--button-dimension);\n+    background-color:var(--input-text-fg-color);\n+    -webkit-mask-size:cover;\n+    mask-size:cover;\n+    -webkit-mask-image:var(--clear-button-icon);\n+    mask-image:var(--clear-button-icon);\n+    padding:0;\n+    border:0;\n+}\n+\n+#addSignatureDialog{\n+    --secondary-color:var(--text-secondary-color);\n+    --bg-hover:#e0e0e6;\n+    --tab-top-line-active-color:#0060df;\n+    --tab-top-line-active-hover-color:var(--tab-text-hover-color);\n+    --tab-top-line-hover-color:#8f8f9d;\n+    --tab-top-line-inactive-color:#cfcfd8;\n+    --tab-bottom-line-active-color:var(--tab-top-line-inactive-color);\n+    --tab-bottom-line-hover-color:var(--tab-top-line-inactive-color);\n+    --tab-bottom-line-inactive-color:var(--tab-top-line-inactive-color);\n+    --tab-bg:var(--dialog-bg-color);\n+    --tab-bg-active-color:var(--tab-bg);\n+    --tab-bg-active-hover-color:var(--bg-hover);\n+    --tab-bg-hover:var(--bg-hover);\n+    --tab-panel-border:none;\n+    --tab-panel-border-radius:4px;\n+    --tab-text-color:var(--primary-color);\n+    --tab-text-active-color:var(--tab-top-line-active-color);\n+    --tab-text-active-hover-color:var(--tab-text-hover-color);\n+    --tab-text-hover-color:var(--tab-text-color);\n+    --signature-placeholder-color:var(--secondary-color);\n+    --signature-draw-placeholder-color:var(--primary-color);\n+    --signature-color:var(--primary-color);\n+    --clear-signature-button-border-width:0;\n+    --clear-signature-button-border-style:solid;\n+    --clear-signature-button-border-color:transparent;\n+    --clear-signature-button-border-disabled-color:transparent;\n+    --clear-signature-button-color:var(--primary-color);\n+    --clear-signature-button-hover-color:var(--clear-signature-button-color);\n+    --clear-signature-button-active-color:var(--clear-signature-button-color);\n+    --clear-signature-button-disabled-color:var(--clear-signature-button-color);\n+    --clear-signature-button-focus-color:var(--clear-signature-button-color);\n+    --clear-signature-button-bg:var(--dialog-bg-color);\n+    --clear-signature-button-bg-hover:var(--bg-hover);\n+    --clear-signature-button-bg-active:#cfcfd8;\n+    --clear-signature-button-bg-focus:#f0f0f4;\n+    --clear-signature-button-bg-disabled:color-mix(\n+        in srgb,\n+        #f0f0f4,\n+        transparent 40%\n+        );\n+    --save-warning-color:var(--secondary-color);\n+    --thickness-bg:var(--dialog-bg-color);\n+    --thickness-label-color:var(--primary-color);\n+    --thickness-slider-color:var(--primary-color);\n+    --thickness-border:none;\n+    --draw-cursor:url(images\u002Fcursor-editorInk.svg) 0 16, pointer;\n+}\n+\n+@media (prefers-color-scheme: dark){\n+\n+    #addSignatureDialog{\n+        --dialog-bg-color:#42414d;\n+        --bg-hover:#52525e;\n+        --primary-color:#fbfbfe;\n+        --secondary-color:#cfcfd8;\n+        --tab-top-line-active-color:#0df;\n+        --tab-top-line-inactive-color:#8f8f9d;\n+        --clear-signature-button-bg-active:#5b5b66;\n+        --clear-signature-button-bg-focus:#2b2a33;\n+        --clear-signature-button-bg-disabled:color-mix(\n+            in srgb,\n+            #2b2a33,\n+            transparent 40%\n+            );\n+    }\n+}\n+\n+@media screen and (forced-colors: active){\n+\n+    #addSignatureDialog{\n+        --secondary-color:ButtonText;\n+        --bg:HighlightText;\n+        --bg-hover:var(--bg);\n+        --tab-top-line-active-color:ButtonText;\n+        --tab-top-line-active-hover-color:HighlightText;\n+        --tab-top-line-hover-color:SelectedItem;\n+        --tab-top-line-inactive-color:ButtonText;\n+        --tab-bottom-line-active-color:var(--tab-top-line-active-color);\n+        --tab-bottom-line-hover-color:var(--tab-top-line-hover-color);\n+        --tab-bg:var(--bg);\n+        --tab-bg-active-color:SelectedItem;\n+        --tab-bg-active-hover-color:SelectedItem;\n+        --tab-panel-border:1px solid ButtonText;\n+        --tab-panel-border-radius:8px;\n+        --tab-text-color:ButtonText;\n+        --tab-text-active-color:HighlightText;\n+        --tab-text-active-hover-color:HighlightText;\n+        --tab-text-hover-color:SelectedItem;\n+        --signature-color:ButtonText;\n+        --clear-signature-button-border-width:1px;\n+        --clear-signature-button-border-style:solid;\n+        --clear-signature-button-border-color:ButtonText;\n+        --clear-signature-button-border-disabled-color:GrayText;\n+        --clear-signature-button-color:ButtonText;\n+        --clear-signature-button-hover-color:HighlightText;\n+        --clear-signature-button-active-color:SelectedItem;\n+        --clear-signature-button-focus-color:CanvasText;\n+        --clear-signature-button-disabled-color:GrayText;\n+        --clear-signature-button-bg:var(--bg);\n+        --clear-signature-button-bg-hover:SelectedItem;\n+        --clear-signature-button-bg-active:var(--bg);\n+        --clear-signature-button-bg-focus:var(--bg);\n+        --clear-signature-button-bg-disabled:var(--bg);\n+        --thickness-bg:Canvas;\n+        --thickness-label-color:CanvasText;\n+        --thickness-slider-color:ButtonText;\n+        --thickness-border:1px solid var(--border-color);\n+    }\n+}\n+\n+#addSignatureDialog #addSignatureDialogLabel{\n+    overflow:hidden;\n+    position:absolute;\n+    inset:0;\n+    width:0;\n+    height:0;\n+}\n+\n+#addSignatureDialog.waiting::after{\n+    content:\"\";\n+    cursor:wait;\n+    position:absolute;\n+    inset:0;\n+    width:100%;\n+    height:100%;\n+}\n+\n+:is(#addSignatureDialog .mainContainer) [role=\"tablist\"]{\n+    width:100%;\n+    display:flex;\n+    align-items:flex-start;\n+    gap:0;\n+}\n+\n+:is(:is(#addSignatureDialog .mainContainer) [role=\"tablist\"])  > [role=\"tab\"]{\n+    flex:1 0 0;\n+    align-self:stretch;\n+    background-color:var(--tab-bg);\n+    padding-inline:0;\n+    cursor:default;\n+\n+    border-inline:0;\n+    border-block-width:1px;\n+    border-block-style:solid;\n+    border-block-start-color:var(--tab-top-line-inactive-color);\n+    border-block-end-color:var(--tab-bottom-line-inactive-color);\n+    border-radius:0;\n+\n+    font:menu;\n+    font-size:13px;\n+    font-style:normal;\n+    line-height:normal;\n+    font-weight:400;\n+    color:var(--tab-text-color);\n+}\n+\n+:is(:is(:is(#addSignatureDialog .mainContainer) [role=\"tablist\"]) > [role=\"tab\"]):hover{\n+    border-block-start-width:2px;\n+    border-block-start-color:var(--tab-top-line-hover-color);\n+    border-block-end-color:var(--tab-bottom-line-hover-color);\n+    background-color:var(--tab-bg-hover);\n+    color:var(--tab-text-hover-color);\n+}\n+\n+:is(:is(:is(#addSignatureDialog .mainContainer) [role=\"tablist\"]) > [role=\"tab\"]):focus-visible{\n+    outline:2px solid var(--tab-top-line-active-color);\n+    outline-offset:-2px;\n+}\n+\n+[aria-selected=\"true\"]:is(:is(:is(#addSignatureDialog .mainContainer) [role=\"tablist\"]) > [role=\"tab\"]){\n+    border-block-start-width:2px;\n+    border-block-start-color:var(--tab-top-line-active-color);\n+    border-block-end-color:var(--tab-bottom-line-active-color);\n+    background-color:var(--tab-bg-active-color);\n+    font-weight:590;\n+    color:var(--tab-text-active-color);\n+}\n+\n+[aria-selected=\"true\"]:is(:is(:is(#addSignatureDialog .mainContainer) [role=\"tablist\"]) > [role=\"tab\"]):hover{\n+    border-block-start-color:var(--tab-top-line-active-hover-color);\n+    background-color:var(--tab-bg-active-hover-color);\n+    color:var(--tab-text-active-hover-color);\n+}\n+\n+:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer{\n+    width:100%;\n+    height:auto;\n+    display:flex;\n+    flex-direction:column;\n+    align-items:flex-end;\n+    align-self:stretch;\n+    gap:12px;\n+    padding-inline:16px;\n+    box-sizing:border-box;\n+}\n+\n+:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer)  > [role=\"tabpanel\"]{\n+    position:relative;\n+    width:100%;\n+    height:220px;\n+    background-color:var(--signature-bg);\n+    border:var(--tab-panel-border);\n+    border-radius:var(--tab-panel-border-radius);\n+}\n+\n+:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) > [role=\"tabpanel\"])  > svg{\n+    position:absolute;\n+    inset:0;\n+    width:100%;\n+    height:100%;\n+    background-color:transparent;\n+}\n+\n+#addSignatureTypeContainer:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) > [role=\"tabpanel\"]){\n+    display:none;\n+}\n+\n+#addSignatureTypeContainer:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) > [role=\"tabpanel\"]) #addSignatureTypeInput{\n+    position:absolute;\n+    inset:0;\n+    width:100%;\n+    height:100%;\n+    border:0;\n+    padding:0;\n+    text-align:center;\n+    color:var(--signature-color);\n+    background-color:transparent;\n+    border-radius:var(--tab-panel-border-radius);\n+\n+    font-family:\"Brush script\", \"Apple Chancery\", \"Segoe script\", \"Freestyle Script\", \"Palace Script MT\", \"Brush Script MT\", TK, cursive, serif;\n+    font-size:44px;\n+    font-style:italic;\n+    font-weight:400;\n+}\n+\n+:is(#addSignatureTypeContainer:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) > [role=\"tabpanel\"]) #addSignatureTypeInput)::-moz-placeholder{\n+    color:var(--signature-placeholder-color);\n+    text-align:center;\n+\n+    font:menu;\n+    font-style:normal;\n+    font-weight:274;\n+    font-size:44px;\n+    line-height:normal;\n+}\n+\n+:is(#addSignatureTypeContainer:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) > [role=\"tabpanel\"]) #addSignatureTypeInput)::placeholder{\n+    color:var(--signature-placeholder-color);\n+    text-align:center;\n+\n+    font:menu;\n+    font-style:normal;\n+    font-weight:274;\n+    font-size:44px;\n+    line-height:normal;\n+}\n+\n+#addSignatureDrawContainer:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) > [role=\"tabpanel\"]){\n+    display:none;\n+}\n+\n+#addSignatureDrawContainer:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) > [role=\"tabpanel\"])  > span{\n+    position:absolute;\n+    top:0;\n+    left:0;\n+    width:100%;\n+    height:100%;\n+    display:grid;\n+    align-items:center;\n+    justify-content:center;\n+\n+    background-color:transparent;\n+    color:var(--signature-placeholder-color);\n+    -webkit-user-select:none;\n+    -moz-user-select:none;\n+    user-select:none;\n+}\n+\n+#addSignatureDrawContainer:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) > [role=\"tabpanel\"])  > svg{\n+    stroke:var(--signature-color);\n+    fill:none;\n+    stroke-opacity:1;\n+    stroke-linecap:round;\n+    stroke-linejoin:round;\n+    stroke-miterlimit:10;\n+}\n+\n+:is(#addSignatureDrawContainer:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) > [role=\"tabpanel\"]) > svg):hover{\n+    cursor:var(--draw-cursor);\n+}\n+\n+#addSignatureDrawContainer:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) > [role=\"tabpanel\"]) #thickness{\n+    position:absolute;\n+    width:100%;\n+    inset-block-end:0;\n+    display:grid;\n+    align-items:center;\n+    justify-content:center;\n+    pointer-events:none;\n+}\n+\n+:is(#addSignatureDrawContainer:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) > [role=\"tabpanel\"]) #thickness)  > span{\n+    color:var(--signature-draw-placeholder-color);\n+}\n+\n+:is(#addSignatureDrawContainer:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) > [role=\"tabpanel\"]) #thickness)  > div{\n+    width:auto;\n+    height:auto;\n+    display:flex;\n+    align-items:center;\n+    justify-content:center;\n+    gap:8px;\n+    padding:6px 8px 7px;\n+    margin:0;\n+    background-color:var(--thickness-bg);\n+    border-radius:4px 4px 0 0;\n+    border-inline:var(--thickness-border);\n+    border-top:var(--thickness-border);\n+    pointer-events:auto;\n+    position:relative;\n+    top:1px;\n+}\n+\n+:is(:is(#addSignatureDrawContainer:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) > [role=\"tabpanel\"]) #thickness) > div)  > label{\n+    color:var(--thickness-label-color);\n+}\n+\n+:is(:is(#addSignatureDrawContainer:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) > [role=\"tabpanel\"]) #thickness) > div)  > input{\n+    width:100px;\n+    height:14px;\n+    background-color:transparent;\n+}\n+\n+:is(:is(:is(#addSignatureDrawContainer:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) > [role=\"tabpanel\"]) #thickness) > div) > input)::-webkit-slider-runnable-track,:is(:is(:is(#addSignatureDrawContainer:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) > [role=\"tabpanel\"]) #thickness) > div) > input)::-moz-range-track,:is(:is(:is(#addSignatureDrawContainer:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) > [role=\"tabpanel\"]) #thickness) > div) > input)::-moz-range-progress{\n+    background-color:var(--thickness-slider-color);\n+}\n+\n+:is(:is(:is(#addSignatureDrawContainer:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) > [role=\"tabpanel\"]) #thickness) > div) > input)::-webkit-slider-thumb,:is(:is(:is(#addSignatureDrawContainer:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) > [role=\"tabpanel\"]) #thickness) > div) > input)::-moz-range-thumb{\n+    background-color:var(--thickness-bg);\n+}\n+\n+:is(:is(#addSignatureDrawContainer:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) > [role=\"tabpanel\"]) #thickness) > div)  > input{\n+\n+    border-radius:4.5px;\n+    border:0;\n+    color:var(--signature-color);\n+}\n+\n+#addSignatureImageContainer:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) > [role=\"tabpanel\"]){\n+    display:none;\n+}\n+\n+#addSignatureImageContainer:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) > [role=\"tabpanel\"])  > svg{\n+    stroke:none;\n+    stroke-width:0;\n+    fill:var(--signature-color);\n+    fill-opacity:1;\n+}\n+\n+#addSignatureImageContainer:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) > [role=\"tabpanel\"]) #addSignatureImagePlaceholder{\n+    position:absolute;\n+    top:0;\n+    left:0;\n+    width:100%;\n+    height:100%;\n+    background-color:transparent;\n+    display:flex;\n+    flex-direction:column;\n+    align-items:center;\n+    justify-content:center;\n+}\n+\n+:is(#addSignatureImageContainer:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) > [role=\"tabpanel\"]) #addSignatureImagePlaceholder) span{\n+    color:var(--signature-placeholder-color);\n+}\n+\n+:is(#addSignatureImageContainer:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) > [role=\"tabpanel\"]) #addSignatureImagePlaceholder) a{\n+    color:var(--open-link-fg);\n+    text-decoration:underline;\n+    cursor:pointer;\n+}\n+\n+:is(:is(#addSignatureImageContainer:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) > [role=\"tabpanel\"]) #addSignatureImagePlaceholder) a):hover{\n+    color:var(--open-link-hover-fg);\n+}\n+\n+#addSignatureImageContainer:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) > [role=\"tabpanel\"]) #addSignatureFilePicker{\n+    visibility:hidden;\n+    position:relative;\n+    width:0;\n+    height:0;\n+}\n+\n+[data-selected=\"type\"]:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) > #addSignatureTypeContainer,[data-selected=\"draw\"]:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) > #addSignatureDrawContainer,[data-selected=\"image\"]:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) > #addSignatureImageContainer{\n+    display:block;\n+}\n+\n+:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) #addSignatureControls{\n+    display:flex;\n+    flex-direction:column;\n+    justify-content:center;\n+    align-items:flex-start;\n+    gap:12px;\n+    align-self:stretch;\n+}\n+\n+:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) #addSignatureControls) #horizontalContainer{\n+    display:flex;\n+    align-items:flex-end;\n+    gap:16px;\n+    align-self:stretch;\n+}\n+\n+:is(:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) #addSignatureControls) #horizontalContainer) #addSignatureDescriptionContainer{\n+    display:flex;\n+    flex-direction:column;\n+    align-items:flex-start;\n+    gap:4px;\n+    flex:1 0 0;\n+}\n+\n+:is(:is(:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) #addSignatureControls) #horizontalContainer) #addSignatureDescriptionContainer):has(input:disabled) > label{\n+    opacity:0.4;\n+}\n+\n+:is(:is(:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) #addSignatureControls) #horizontalContainer) #addSignatureDescriptionContainer)  > label{\n+    width:auto;\n+}\n+\n+:is(:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) #addSignatureControls) #horizontalContainer) #clearSignatureButton{\n+    display:flex;\n+    height:32px;\n+    padding:4px 8px;\n+    align-items:center;\n+    background-color:var(--clear-signature-button-bg);\n+    border-width:var(--clear-signature-button-border-width);\n+    border-style:var(--clear-signature-button-border-style);\n+    border-color:var(--clear-signature-button-border-color);\n+    border-radius:4px;\n+}\n+\n+:is(:is(:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) #addSignatureControls) #horizontalContainer) #clearSignatureButton)  > span{\n+    display:flex;\n+    height:24px;\n+    align-items:center;\n+    gap:4px;\n+    flex-shrink:0;\n+\n+    color:var(--clear-signature-button-color);\n+}\n+\n+:is(:is(:is(:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) #addSignatureControls) #horizontalContainer) #clearSignatureButton) > span)::after{\n+    content:\"\";\n+    display:inline-block;\n+    width:16px;\n+    height:16px;\n+    -webkit-mask-image:var(--clear-signature-button-icon);\n+    mask-image:var(--clear-signature-button-icon);\n+    -webkit-mask-size:cover;\n+    mask-size:cover;\n+    background-color:var(--clear-signature-button-color);\n+    flex-shrink:0;\n+}\n+\n+:is(:is(:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) #addSignatureControls) #horizontalContainer) #clearSignatureButton):hover{\n+    background-color:var(--clear-signature-button-bg-hover);\n+}\n+\n+:is(:is(:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) #addSignatureControls) #horizontalContainer) #clearSignatureButton):hover  > span{\n+    color:var(--clear-signature-button-hover-color);\n+}\n+\n+:is(:is(:is(:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) #addSignatureControls) #horizontalContainer) #clearSignatureButton):hover > span)::after{\n+    background-color:var(--clear-signature-button-hover-color);\n+}\n+\n+:is(:is(:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) #addSignatureControls) #horizontalContainer) #clearSignatureButton):active{\n+    background-color:var(--clear-signature-button-bg-active);\n+}\n+\n+:is(:is(:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) #addSignatureControls) #horizontalContainer) #clearSignatureButton):active  > span{\n+    color:var(--clear-signature-button-active-color);\n+}\n+\n+:is(:is(:is(:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) #addSignatureControls) #horizontalContainer) #clearSignatureButton):active > span)::after{\n+    background-color:var(--clear-signature-button-active-color);\n+}\n+\n+:is(:is(:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) #addSignatureControls) #horizontalContainer) #clearSignatureButton):focus-visible{\n+    background-color:var(--clear-signature-button-bg-focus);\n+}\n+\n+:is(:is(:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) #addSignatureControls) #horizontalContainer) #clearSignatureButton):focus-visible  > span{\n+    color:var(--clear-signature-button-focus-color);\n+}\n+\n+:is(:is(:is(:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) #addSignatureControls) #horizontalContainer) #clearSignatureButton):focus-visible > span)::after{\n+    background-color:var(--clear-signature-button-focus-color);\n+}\n+\n+:is(:is(:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) #addSignatureControls) #horizontalContainer) #clearSignatureButton):disabled{\n+    background-color:var(--clear-signature-button-bg-disabled);\n+    border-color:var(--clear-signature-button-border-disabled-color);\n+}\n+\n+:is(:is(:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) #addSignatureControls) #horizontalContainer) #clearSignatureButton):disabled  > span{\n+    color:var(--clear-signature-button-disabled-color);\n+}\n+\n+:is(:is(:is(:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) #addSignatureControls) #horizontalContainer) #clearSignatureButton):disabled > span)::after{\n+    background-color:var(\n+        --clear-signature-button-disabled-color\n+        );\n+}\n+\n+:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) #addSignatureControls) #addSignatureSaveContainer{\n+    display:grid;\n+    grid-template-columns:max-content auto;\n+    gap:4px;\n+    width:100%;\n+}\n+\n+:is(:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) #addSignatureControls) #addSignatureSaveContainer)  > input{\n+    margin:0;\n+}\n+\n+:is(:is(:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) #addSignatureControls) #addSignatureSaveContainer) > input):disabled + label{\n+    opacity:0.4;\n+}\n+\n+:is(:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) #addSignatureControls) #addSignatureSaveContainer)  > label{\n+    -webkit-user-select:none;\n+    -moz-user-select:none;\n+    user-select:none;\n+}\n+\n+:is(:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) #addSignatureControls) #addSignatureSaveContainer):not(.fullStorage) #addSignatureSaveWarning{\n+    display:none;\n+}\n+\n+.fullStorage:is(:is(:is(:is(#addSignatureDialog .mainContainer) #addSignatureActionContainer) #addSignatureControls) #addSignatureSaveContainer) #addSignatureSaveWarning{\n+    display:block;\n+    opacity:1;\n+    color:var(--save-warning-color);\n+    font-size:11px;\n+}\n+\n+#editSignatureDescriptionDialog .mainContainer{\n+    padding-inline:16px;\n+    box-sizing:border-box;\n+}\n+\n+:is(#editSignatureDescriptionDialog .mainContainer) .title{\n+    margin-inline-start:0;\n+}\n+\n+:is(#editSignatureDescriptionDialog .mainContainer) #editSignatureDescriptionAndView{\n+    width:auto;\n+    display:flex;\n+    justify-content:flex-end;\n+    align-items:flex-start;\n+    gap:12px;\n+    align-self:stretch;\n+}\n+\n+:is(:is(#editSignatureDescriptionDialog .mainContainer) #editSignatureDescriptionAndView) #editSignatureDescriptionContainer{\n+    display:flex;\n+    flex-direction:column;\n+    align-items:flex-start;\n+    gap:4px;\n+    flex:1 1 auto;\n+}\n+\n+:is(:is(#editSignatureDescriptionDialog .mainContainer) #editSignatureDescriptionAndView)  > svg{\n+    width:210px;\n+    height:180px;\n+    padding:8px;\n+    background-color:var(--signature-bg);\n+}\n+\n+:is(:is(:is(#editSignatureDescriptionDialog .mainContainer) #editSignatureDescriptionAndView) > svg)  > path{\n+    stroke:var(--button-signature-color);\n+    stroke-width:1px;\n+    stroke-linecap:round;\n+    stroke-linejoin:round;\n+    stroke-miterlimit:10;\n+    vector-effect:non-scaling-stroke;\n+    fill:none;\n+}\n+\n+.contours:is(:is(:is(:is(#editSignatureDescriptionDialog .mainContainer) #editSignatureDescriptionAndView) > svg) > path){\n+    fill:var(--button-signature-color);\n+    stroke-width:0.5px;\n+}\n+\n+#editorSignatureParamsToolbar{\n+    padding:8px;\n+}\n+\n+#editorSignatureParamsToolbar #addSignatureDoorHanger{\n+    gap:8px;\n+    padding:2px;\n+}\n+\n+:is(#editorSignatureParamsToolbar #addSignatureDoorHanger) .toolbarAddSignatureButtonContainer{\n+    height:32px;\n+    display:flex;\n+    justify-content:space-between;\n+    align-items:center;\n+    align-self:stretch;\n+    gap:8px;\n+}\n+\n+:is(:is(#editorSignatureParamsToolbar #addSignatureDoorHanger) .toolbarAddSignatureButtonContainer) button{\n+    border:var(--button-signature-border);\n+    border-radius:4px;\n+    background-color:var(--button-signature-bg);\n+    color:var(--button-signature-color);\n+}\n+\n+:is(:is(:is(#editorSignatureParamsToolbar #addSignatureDoorHanger) .toolbarAddSignatureButtonContainer) button):hover{\n+    background-color:var(--button-signature-hover-bg);\n+}\n+\n+:is(:is(:is(#editorSignatureParamsToolbar #addSignatureDoorHanger) .toolbarAddSignatureButtonContainer) button):active{\n+    border:var(--button-signature-active-border);\n+    background-color:var(--button-signature-active-bg);\n+    color:var(--button-signature-active-color);\n+}\n+\n+:is(:is(:is(#editorSignatureParamsToolbar #addSignatureDoorHanger) .toolbarAddSignatureButtonContainer) button):active::before{\n+    background-color:var(--button-signature-active-color);\n+}\n+\n+:is(:is(:is(#editorSignatureParamsToolbar #addSignatureDoorHanger) .toolbarAddSignatureButtonContainer) button):focus-visible{\n+    outline:var(--focus-ring-outline);\n+}\n+\n+:is(:is(:is(#editorSignatureParamsToolbar #addSignatureDoorHanger) .toolbarAddSignatureButtonContainer) button):focus-visible::before{\n+    background-color:var(--button-signature-color);\n+}\n+\n+:is(:is(:is(#editorSignatureParamsToolbar #addSignatureDoorHanger) .toolbarAddSignatureButtonContainer) .deleteButton)::before{\n+    -webkit-mask-image:var(--clear-signature-button-icon);\n+    mask-image:var(--clear-signature-button-icon);\n+}\n+\n+:is(:is(#editorSignatureParamsToolbar #addSignatureDoorHanger) .toolbarAddSignatureButtonContainer) .toolbarAddSignatureButton{\n+    width:auto;\n+    height:100%;\n+    min-height:var(--menuitem-height);\n+    aspect-ratio:unset;\n+    display:flex;\n+    align-items:center;\n+    justify-content:flex-start;\n+    outline:none;\n+    border-radius:4px;\n+    box-sizing:border-box;\n+    font:message-box;\n+    position:relative;\n+    flex:1 1 auto;\n+    padding:0;\n+    gap:8px;\n+    text-align:start;\n+    white-space:normal;\n+    cursor:default;\n+    overflow:hidden;\n+}\n+\n+:is(:is(:is(#editorSignatureParamsToolbar #addSignatureDoorHanger) .toolbarAddSignatureButtonContainer) .toolbarAddSignatureButton)  > svg{\n+    display:inline-block;\n+    height:100%;\n+    aspect-ratio:1;\n+    background-color:var(--signature-bg);\n+    flex:none;\n+    padding:4px;\n+    box-sizing:border-box;\n+    border:none;\n+    border-radius:4px;\n+}\n+\n+:is(:is(:is(:is(#editorSignatureParamsToolbar #addSignatureDoorHanger) .toolbarAddSignatureButtonContainer) .toolbarAddSignatureButton) > svg)  > path{\n+    stroke:var(--button-signature-color);\n+    stroke-width:1px;\n+    stroke-linecap:round;\n+    stroke-linejoin:round;\n+    stroke-miterlimit:10;\n+    vector-effect:non-scaling-stroke;\n+    fill:none;\n+}\n+\n+.contours:is(:is(:is(:is(:is(#editorSignatureParamsToolbar #addSignatureDoorHanger) .toolbarAddSignatureButtonContainer) .toolbarAddSignatureButton) > svg) > path){\n+    fill:var(--button-signature-color);\n+    stroke-width:0.5px;\n+}\n+\n+:is(:is(:is(#editorSignatureParamsToolbar #addSignatureDoorHanger) .toolbarAddSignatureButtonContainer) .toolbarAddSignatureButton):is(:hover,:active) > svg{\n+    border-radius:4px 0 0 4px;\n+    background-color:var(--signature-hover-bg);\n+}\n+\n+:is(:is(:is(#editorSignatureParamsToolbar #addSignatureDoorHanger) .toolbarAddSignatureButtonContainer) .toolbarAddSignatureButton):hover  > span{\n+    color:var(--button-signature-hover-color);\n+}\n+\n+:is(:is(:is(#editorSignatureParamsToolbar #addSignatureDoorHanger) .toolbarAddSignatureButtonContainer) .toolbarAddSignatureButton):active{\n+    background-color:var(--button-signature-active-bg);\n+}\n+\n+:is(:is(:is(#editorSignatureParamsToolbar #addSignatureDoorHanger) .toolbarAddSignatureButtonContainer) .toolbarAddSignatureButton):is([disabled=\"disabled\"],[disabled]){\n+    opacity:0.5;\n+    pointer-events:none;\n+}\n+\n+:is(:is(:is(#editorSignatureParamsToolbar #addSignatureDoorHanger) .toolbarAddSignatureButtonContainer) .toolbarAddSignatureButton)  > span{\n+    height:auto;\n+    text-overflow:ellipsis;\n+    white-space:nowrap;\n+    flex:1 1 auto;\n+    font:menu;\n+    font-size:13px;\n+    font-style:normal;\n+    font-weight:400;\n+    line-height:normal;\n+    overflow:hidden;\n+}\n+\n+.editDescription.altText{\n+    --alt-text-add-image:url(images\u002Feditor-toolbar-edit.svg) !important;\n+}\n+\n+.editDescription.altText::before{\n+    width:16px !important;\n+    height:16px !important;\n+}\n+\n+:root{\n     --outline-width:2px;\n     --outline-color:#0060df;\n     --outline-around-width:1px;\n@@ -1384,6 +2929,8 @@\n     --editorInk-editing-cursor:url(images\u002Fcursor-editorInk.svg) 0 16, pointer;\n     --editorHighlight-editing-cursor:url(images\u002Fcursor-editorTextHighlight.svg) 24 24, text;\n     --editorFreeHighlight-editing-cursor:url(images\u002Fcursor-editorFreeHighlight.svg) 1 18, pointer;\n+\n+    --new-alt-text-warning-image:url(images\u002FaltText_warning.svg);\n }\n .visuallyHidden{\n     position:absolute;\n@@ -1407,10 +2954,18 @@\n     cursor:var(--editorHighlight-editing-cursor);\n }\n \n+[role=\"img\"]:is(.textLayer.highlighting:not(.free) span){\n+    cursor:var(--editorFreeHighlight-editing-cursor);\n+}\n+\n .textLayer.highlighting.free span{\n     cursor:var(--editorFreeHighlight-editing-cursor);\n }\n \n+:is(#viewerContainer.pdfPresentationMode:fullscreen,.annotationEditorLayer.disabled) .noAltTextBadge{\n+    display:none !important;\n+}\n+\n @media (min-resolution: 1.1dppx){\n     :root{\n         --editorFreeText-editing-cursor:url(images\u002Fcursor-editorFreeText.svg) 0 16, text;\n@@ -1443,11 +2998,19 @@\n     background:transparent;\n     position:absolute;\n     inset:0;\n-    font-size:calc(100px * var(--scale-factor));\n+    font-size:calc(100px * var(--total-scale-factor));\n     transform-origin:0 0;\n     cursor:auto;\n }\n \n+.annotationEditorLayer .selectedEditor{\n+    z-index:100000 !important;\n+}\n+\n+.annotationEditorLayer.drawing *{\n+    pointer-events:none !important;\n+}\n+\n .annotationEditorLayer.waiting{\n     content:\"\";\n     cursor:wait;\n@@ -1461,6 +3024,10 @@\n     pointer-events:none;\n }\n \n+.annotationEditorLayer.disabled.highlightEditing :is(.freeTextEditor,.inkEditor,.stampEditor,.signatureEditor){\n+    pointer-events:auto;\n+}\n+\n .annotationEditorLayer.freetextEditing{\n     cursor:var(--editorFreeText-editing-cursor);\n }\n@@ -1469,7 +3036,12 @@\n     cursor:var(--editorInk-editing-cursor);\n }\n \n-.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor){\n+.annotationEditorLayer .draw{\n+    box-sizing:border-box;\n+}\n+\n+.annotationEditorLayer\n+:is(.freeTextEditor, .inkEditor, .stampEditor, .signatureEditor){\n     position:absolute;\n     background:transparent;\n     z-index:1;\n@@ -1480,20 +3052,16 @@\n     border:var(--unfocus-outline);\n }\n \n-.annotationEditorLayer .draggable.selectedEditor:is(.freeTextEditor, .inkEditor, .stampEditor){\n+.draggable.selectedEditor:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.signatureEditor)){\n     cursor:move;\n }\n \n-.annotationEditorLayer .moving:is(.freeTextEditor, .inkEditor, .stampEditor){\n-    touch-action:none;\n-}\n-\n-.annotationEditorLayer .selectedEditor:is(.freeTextEditor, .inkEditor, .stampEditor){\n+.selectedEditor:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.signatureEditor)){\n     border:var(--focus-outline);\n     outline:var(--focus-outline-around);\n }\n \n-.annotationEditorLayer .selectedEditor:is(.freeTextEditor, .inkEditor, .stampEditor)::before{\n+.selectedEditor:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.signatureEditor))::before{\n     content:\"\";\n     position:absolute;\n     inset:0;\n@@ -1501,34 +3069,94 @@\n     pointer-events:none;\n }\n \n-.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor):hover:not(.selectedEditor){\n+:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.signatureEditor)):hover:not(.selectedEditor){\n     border:var(--hover-outline);\n     outline:var(--hover-outline-around);\n }\n \n-.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor):hover:not(.selectedEditor)::before{\n+:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.signatureEditor)):hover:not(.selectedEditor)::before{\n     content:\"\";\n     position:absolute;\n     inset:0;\n     border:var(--focus-outline-around);\n }\n \n-:is(.annotationEditorLayer\n-:is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar{\n+:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar{\n     --editor-toolbar-delete-image:url(images\u002Feditor-toolbar-delete.svg);\n-    --editor-toolbar-bg-color:#f0f0f4;\n+    --csstools-light-dark-toggle--75:var(--csstools-color-scheme--light) #2b2a33;\n+    --editor-toolbar-bg-color:var(--csstools-light-dark-toggle--75, #f0f0f4);\n     --editor-toolbar-highlight-image:url(images\u002FtoolbarButton-editorHighlight.svg);\n-    --editor-toolbar-fg-color:#2e2e56;\n+    --csstools-light-dark-toggle--76:var(--csstools-color-scheme--light) #fbfbfe;\n+    --editor-toolbar-fg-color:var(--csstools-light-dark-toggle--76, #2e2e56);\n     --editor-toolbar-border-color:#8f8f9d;\n     --editor-toolbar-hover-border-color:var(--editor-toolbar-border-color);\n-    --editor-toolbar-hover-bg-color:#e0e0e6;\n+    --csstools-light-dark-toggle--77:var(--csstools-color-scheme--light) #52525e;\n+    --editor-toolbar-hover-bg-color:var(--csstools-light-dark-toggle--77, #e0e0e6);\n     --editor-toolbar-hover-fg-color:var(--editor-toolbar-fg-color);\n     --editor-toolbar-hover-outline:none;\n-    --editor-toolbar-focus-outline-color:#0060df;\n+    --csstools-light-dark-toggle--78:var(--csstools-color-scheme--light) #0df;\n+    --editor-toolbar-focus-outline-color:var(--csstools-light-dark-toggle--78, #0060df);\n     --editor-toolbar-shadow:0 2px 6px 0 rgb(58 57 68 \u002F 0.2);\n     --editor-toolbar-vert-offset:6px;\n     --editor-toolbar-height:28px;\n     --editor-toolbar-padding:2px;\n+    --csstools-light-dark-toggle--79:var(--csstools-color-scheme--light) #54ffbd;\n+    --alt-text-done-color:var(--csstools-light-dark-toggle--79, #2ac3a2);\n+    --csstools-light-dark-toggle--80:var(--csstools-color-scheme--light) #80ebff;\n+    --alt-text-warning-color:var(--csstools-light-dark-toggle--80, #0090ed);\n+    --alt-text-hover-done-color:var(--alt-text-done-color);\n+    --alt-text-hover-warning-color:var(--alt-text-warning-color);\n+}\n+\n+@supports (color: light-dark(red, red)){\n+    :is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar{\n+        --editor-toolbar-bg-color:light-dark(#f0f0f4, #2b2a33);\n+        --editor-toolbar-fg-color:light-dark(#2e2e56, #fbfbfe);\n+        --editor-toolbar-hover-bg-color:light-dark(#e0e0e6, #52525e);\n+        --editor-toolbar-focus-outline-color:light-dark(#0060df, #0df);\n+        --alt-text-done-color:light-dark(#2ac3a2, #54ffbd);\n+        --alt-text-warning-color:light-dark(#0090ed, #80ebff);\n+    }\n+}\n+\n+@supports not (color: light-dark(tan, tan)){\n+\n+    :is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) *{\n+        --csstools-light-dark-toggle--75:var(--csstools-color-scheme--light) #2b2a33;\n+        --editor-toolbar-bg-color:var(--csstools-light-dark-toggle--75, #f0f0f4);\n+        --csstools-light-dark-toggle--76:var(--csstools-color-scheme--light) #fbfbfe;\n+        --editor-toolbar-fg-color:var(--csstools-light-dark-toggle--76, #2e2e56);\n+        --csstools-light-dark-toggle--77:var(--csstools-color-scheme--light) #52525e;\n+        --editor-toolbar-hover-bg-color:var(--csstools-light-dark-toggle--77, #e0e0e6);\n+        --csstools-light-dark-toggle--78:var(--csstools-color-scheme--light) #0df;\n+        --editor-toolbar-focus-outline-color:var(--csstools-light-dark-toggle--78, #0060df);\n+        --csstools-light-dark-toggle--79:var(--csstools-color-scheme--light) #54ffbd;\n+        --alt-text-done-color:var(--csstools-light-dark-toggle--79, #2ac3a2);\n+        --csstools-light-dark-toggle--80:var(--csstools-color-scheme--light) #80ebff;\n+        --alt-text-warning-color:var(--csstools-light-dark-toggle--80, #0090ed);\n+    }\n+}\n+\n+@media screen and (forced-colors: active){\n+\n+    :is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar{\n+        --editor-toolbar-bg-color:ButtonFace;\n+        --editor-toolbar-fg-color:ButtonText;\n+        --editor-toolbar-border-color:ButtonText;\n+        --editor-toolbar-hover-border-color:AccentColor;\n+        --editor-toolbar-hover-bg-color:ButtonFace;\n+        --editor-toolbar-hover-fg-color:AccentColor;\n+        --editor-toolbar-hover-outline:2px solid var(--editor-toolbar-hover-border-color);\n+        --editor-toolbar-focus-outline-color:ButtonBorder;\n+        --editor-toolbar-shadow:none;\n+        --alt-text-done-color:var(--editor-toolbar-fg-color);\n+        --alt-text-warning-color:var(--editor-toolbar-fg-color);\n+        --alt-text-hover-done-color:var(--editor-toolbar-hover-fg-color);\n+        --alt-text-hover-warning-color:var(--editor-toolbar-hover-fg-color);\n+    }\n+}\n+\n+:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar{\n \n     display:flex;\n     width:-moz-fit-content;\n@@ -1552,63 +3180,23 @@\n     box-shadow:var(--editor-toolbar-shadow);\n }\n \n-@media (prefers-color-scheme: dark){\n-\n-    :where(html:not(.is-light)) :is(.annotationEditorLayer\n-    :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar{\n-        --editor-toolbar-bg-color:#2b2a33;\n-        --editor-toolbar-fg-color:#fbfbfe;\n-        --editor-toolbar-hover-bg-color:#52525e;\n-        --editor-toolbar-focus-outline-color:#0df;\n-    }\n-}\n-\n-:where(html.is-dark) :is(.annotationEditorLayer\n-:is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar{\n-    --editor-toolbar-bg-color:#2b2a33;\n-    --editor-toolbar-fg-color:#fbfbfe;\n-    --editor-toolbar-hover-bg-color:#52525e;\n-    --editor-toolbar-focus-outline-color:#0df;\n-}\n-\n-@media screen and (forced-colors: active){\n-\n-    :is(.annotationEditorLayer\n-    :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar{\n-        --editor-toolbar-bg-color:ButtonFace;\n-        --editor-toolbar-fg-color:ButtonText;\n-        --editor-toolbar-border-color:ButtonText;\n-        --editor-toolbar-hover-border-color:AccentColor;\n-        --editor-toolbar-hover-bg-color:ButtonFace;\n-        --editor-toolbar-hover-fg-color:AccentColor;\n-        --editor-toolbar-hover-outline:2px solid var(--editor-toolbar-hover-border-color);\n-        --editor-toolbar-focus-outline-color:ButtonBorder;\n-        --editor-toolbar-shadow:none;\n-    }\n-}\n-\n-:is(.annotationEditorLayer\n-:is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar.hidden{\n+.hidden:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar){\n     display:none;\n }\n \n-:is(.annotationEditorLayer\n-:is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar:has(:focus-visible){\n+:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar):has(:focus-visible){\n     border-color:transparent;\n }\n \n-[dir=\"ltr\"] :is(.annotationEditorLayer\n-:is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar{\n+[dir=\"ltr\"] :is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar){\n     transform-origin:100% 0;\n }\n \n-[dir=\"rtl\"] :is(.annotationEditorLayer\n-:is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar{\n+[dir=\"rtl\"] :is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar){\n     transform-origin:0 0;\n }\n \n-:is(.annotationEditorLayer\n-:is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons{\n+:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) .buttons{\n     display:flex;\n     justify-content:center;\n     align-items:center;\n@@ -1616,24 +3204,26 @@\n     height:100%;\n }\n \n-:is(.annotationEditorLayer\n-:is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .divider{\n-    width:1px;\n+:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) .buttons) button{\n+    padding:0;\n+}\n+\n+:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) .buttons) .divider{\n+    width:0;\n     height:calc(\n         2 * var(--editor-toolbar-padding) + var(--editor-toolbar-height)\n         );\n-    background-color:var(--editor-toolbar-border-color);\n+    border-left:1px solid var(--editor-toolbar-border-color);\n+    border-right:none;\n     display:inline-block;\n     margin-inline:2px;\n }\n \n-:is(.annotationEditorLayer\n-:is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .highlightButton{\n+:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) .buttons) .highlightButton{\n     width:var(--editor-toolbar-height);\n }\n \n-:is(.annotationEditorLayer\n-:is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .highlightButton::before{\n+:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) .buttons) .highlightButton)::before{\n     content:\"\";\n     -webkit-mask-image:var(--editor-toolbar-highlight-image);\n     mask-image:var(--editor-toolbar-highlight-image);\n@@ -1647,18 +3237,15 @@\n     height:100%;\n }\n \n-:is(.annotationEditorLayer\n-:is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .highlightButton:hover::before{\n+:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) .buttons) .highlightButton):hover::before{\n     background-color:var(--editor-toolbar-hover-fg-color);\n }\n \n-:is(.annotationEditorLayer\n-:is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .delete{\n+:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) .buttons) .delete{\n     width:var(--editor-toolbar-height);\n }\n \n-:is(.annotationEditorLayer\n-:is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .delete::before{\n+:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) .buttons) .delete)::before{\n     content:\"\";\n     -webkit-mask-image:var(--editor-toolbar-delete-image);\n     mask-image:var(--editor-toolbar-delete-image);\n@@ -1672,25 +3259,21 @@\n     height:100%;\n }\n \n-:is(.annotationEditorLayer\n-:is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .delete:hover::before{\n+:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) .buttons) .delete):hover::before{\n     background-color:var(--editor-toolbar-hover-fg-color);\n }\n \n-:is(.annotationEditorLayer\n-:is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons > *{\n+:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) .buttons)  > *{\n     height:var(--editor-toolbar-height);\n }\n \n-:is(.annotationEditorLayer\n-:is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons > :not(.divider){\n+:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) .buttons)  > :not(.divider){\n     border:none;\n     background-color:transparent;\n     cursor:pointer;\n }\n \n-:is(.annotationEditorLayer\n-:is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons > :not(.divider):hover{\n+:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) .buttons) > :not(.divider)):hover{\n     border-radius:2px;\n     background-color:var(--editor-toolbar-hover-bg-color);\n     color:var(--editor-toolbar-hover-fg-color);\n@@ -1698,19 +3281,16 @@\n     outline-offset:1px;\n }\n \n-:is(.annotationEditorLayer\n-:is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons > :not(.divider):hover:active{\n+:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) .buttons) > :not(.divider)):hover:active{\n     outline:none;\n }\n \n-:is(.annotationEditorLayer\n-:is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons > :not(.divider):focus-visible{\n+:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) .buttons) > :not(.divider)):focus-visible{\n     border-radius:2px;\n     outline:2px solid var(--editor-toolbar-focus-outline-color);\n }\n \n-:is(.annotationEditorLayer\n-:is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .altText{\n+:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) .buttons) .altText{\n     --alt-text-add-image:url(images\u002FaltText_add.svg);\n     --alt-text-done-image:url(images\u002FaltText_done.svg);\n \n@@ -1727,13 +3307,11 @@\n     color:var(--editor-toolbar-fg-color);\n }\n \n-:is(.annotationEditorLayer\n-:is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .altText:disabled{\n+:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) .buttons) .altText):disabled{\n     pointer-events:none;\n }\n \n-:is(.annotationEditorLayer\n-:is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .altText::before{\n+:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) .buttons) .altText)::before{\n     content:\"\";\n     -webkit-mask-image:var(--alt-text-add-image);\n     mask-image:var(--alt-text-add-image);\n@@ -1748,28 +3326,90 @@\n     margin-inline-end:4px;\n }\n \n-:is(.annotationEditorLayer\n-:is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .altText:hover::before{\n+:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) .buttons) .altText):hover::before{\n     background-color:var(--editor-toolbar-hover-fg-color);\n }\n \n-:is(.annotationEditorLayer\n-:is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .altText.done::before{\n+.done:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) .buttons) .altText)::before{\n     -webkit-mask-image:var(--alt-text-done-image);\n     mask-image:var(--alt-text-done-image);\n }\n \n-:is(.annotationEditorLayer\n-:is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .altText .tooltip{\n+.new:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) .buttons) .altText)::before{\n+    width:16px;\n+    height:16px;\n+    -webkit-mask-image:var(--new-alt-text-warning-image);\n+    mask-image:var(--new-alt-text-warning-image);\n+    background-color:var(--alt-text-warning-color);\n+    -webkit-mask-size:cover;\n+    mask-size:cover;\n+}\n+\n+.new:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) .buttons) .altText):hover::before{\n+    background-color:var(--alt-text-hover-warning-color);\n+}\n+\n+.new.done:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) .buttons) .altText)::before{\n+    -webkit-mask-image:var(--alt-text-done-image);\n+    mask-image:var(--alt-text-done-image);\n+    background-color:var(--alt-text-done-color);\n+}\n+\n+.new.done:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) .buttons) .altText):hover::before{\n+    background-color:var(--alt-text-hover-done-color);\n+}\n+\n+:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) .buttons) .altText) .tooltip{\n     display:none;\n+    word-wrap:anywhere;\n }\n \n-:is(.annotationEditorLayer\n-:is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .altText .tooltip.show{\n-    --alt-text-tooltip-bg:#f0f0f4;\n-    --alt-text-tooltip-fg:#15141a;\n+.show:is(:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) .buttons) .altText) .tooltip){\n+    --csstools-light-dark-toggle--81:var(--csstools-color-scheme--light) #1c1b22;\n+    --alt-text-tooltip-bg:var(--csstools-light-dark-toggle--81, #f0f0f4);\n+    --csstools-light-dark-toggle--82:var(--csstools-color-scheme--light) #fbfbfe;\n+    --alt-text-tooltip-fg:var(--csstools-light-dark-toggle--82, #15141a);\n     --alt-text-tooltip-border:#8f8f9d;\n-    --alt-text-tooltip-shadow:0px 2px 6px 0px rgb(58 57 68 \u002F 0.2);\n+    --csstools-light-dark-toggle--83:var(--csstools-color-scheme--light) #15141a;\n+    --alt-text-tooltip-shadow:0px 2px 6px 0px var(--csstools-light-dark-toggle--83, rgb(58 57 68 \u002F 0.2));\n+}\n+\n+@supports (color: light-dark(red, red)){\n+    .show:is(:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) .buttons) .altText) .tooltip){\n+        --alt-text-tooltip-bg:light-dark(#f0f0f4, #1c1b22);\n+        --alt-text-tooltip-fg:light-dark(#15141a, #fbfbfe);\n+    }\n+}\n+\n+@supports (color: light-dark(red, red)) and (color: rgb(0 0 0 \u002F 0)){\n+    .show:is(:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) .buttons) .altText) .tooltip){\n+        --alt-text-tooltip-shadow:0px 2px 6px 0px light-dark(rgb(58 57 68 \u002F 0.2), #15141a);\n+    }\n+}\n+\n+@supports not (color: light-dark(tan, tan)){\n+\n+    .show:is(:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) .buttons) .altText) .tooltip) *{\n+        --csstools-light-dark-toggle--81:var(--csstools-color-scheme--light) #1c1b22;\n+        --alt-text-tooltip-bg:var(--csstools-light-dark-toggle--81, #f0f0f4);\n+        --csstools-light-dark-toggle--82:var(--csstools-color-scheme--light) #fbfbfe;\n+        --alt-text-tooltip-fg:var(--csstools-light-dark-toggle--82, #15141a);\n+        --csstools-light-dark-toggle--83:var(--csstools-color-scheme--light) #15141a;\n+        --alt-text-tooltip-shadow:0px 2px 6px 0px var(--csstools-light-dark-toggle--83, rgb(58 57 68 \u002F 0.2));\n+    }\n+}\n+\n+@media screen and (forced-colors: active){\n+\n+    .show:is(:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) .buttons) .altText) .tooltip){\n+        --alt-text-tooltip-bg:Canvas;\n+        --alt-text-tooltip-fg:CanvasText;\n+        --alt-text-tooltip-border:CanvasText;\n+        --alt-text-tooltip-shadow:none;\n+    }\n+}\n+\n+.show:is(:is(:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.highlightEditor,.signatureEditor),.textLayer) .editToolbar) .buttons) .altText) .tooltip){\n \n     display:inline-flex;\n     flex-direction:column;\n@@ -1794,36 +3434,8 @@\n     pointer-events:none;\n }\n \n-@media (prefers-color-scheme: dark){\n-\n-    :where(html:not(.is-light)) :is(.annotationEditorLayer\n-    :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .altText .tooltip.show{\n-        --alt-text-tooltip-bg:#1c1b22;\n-        --alt-text-tooltip-fg:#fbfbfe;\n-        --alt-text-tooltip-shadow:0px 2px 6px 0px #15141a;\n-    }\n-}\n-\n-:where(html.is-dark) :is(.annotationEditorLayer\n-:is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .altText .tooltip.show{\n-    --alt-text-tooltip-bg:#1c1b22;\n-    --alt-text-tooltip-fg:#fbfbfe;\n-    --alt-text-tooltip-shadow:0px 2px 6px 0px #15141a;\n-}\n-\n-@media screen and (forced-colors: active){\n-\n-    :is(.annotationEditorLayer\n-    :is(.freeTextEditor, .inkEditor, .stampEditor, .highlightEditor),.textLayer) .editToolbar .buttons .altText .tooltip.show{\n-        --alt-text-tooltip-bg:Canvas;\n-        --alt-text-tooltip-fg:CanvasText;\n-        --alt-text-tooltip-border:CanvasText;\n-        --alt-text-tooltip-shadow:none;\n-    }\n-}\n-\n .annotationEditorLayer .freeTextEditor{\n-    padding:calc(var(--freetext-padding) * var(--scale-factor));\n+    padding:calc(var(--freetext-padding) * var(--total-scale-factor));\n     width:auto;\n     height:auto;\n     touch-action:none;\n@@ -1889,23 +3501,94 @@\n     height:auto;\n }\n \n-.annotationEditorLayer .stampEditor canvas{\n+:is(.annotationEditorLayer .stampEditor) canvas{\n     position:absolute;\n     width:100%;\n     height:100%;\n     margin:0;\n+    top:0;\n+    left:0;\n+}\n+\n+:is(.annotationEditorLayer .stampEditor) .noAltTextBadge{\n+    --csstools-light-dark-toggle--84:var(--csstools-color-scheme--light) #52525e;\n+    --no-alt-text-badge-border-color:var(--csstools-light-dark-toggle--84, #f0f0f4);\n+    --csstools-light-dark-toggle--85:var(--csstools-color-scheme--light) #fbfbfe;\n+    --no-alt-text-badge-bg-color:var(--csstools-light-dark-toggle--85, #cfcfd8);\n+    --csstools-light-dark-toggle--86:var(--csstools-color-scheme--light) #15141a;\n+    --no-alt-text-badge-fg-color:var(--csstools-light-dark-toggle--86, #5b5b66);\n+}\n+\n+@supports (color: light-dark(red, red)){\n+    :is(.annotationEditorLayer .stampEditor) .noAltTextBadge{\n+        --no-alt-text-badge-border-color:light-dark(#f0f0f4, #52525e);\n+        --no-alt-text-badge-bg-color:light-dark(#cfcfd8, #fbfbfe);\n+        --no-alt-text-badge-fg-color:light-dark(#5b5b66, #15141a);\n+    }\n+}\n+\n+@supports not (color: light-dark(tan, tan)){\n+\n+    :is(:is(.annotationEditorLayer .stampEditor) .noAltTextBadge) *{\n+        --csstools-light-dark-toggle--84:var(--csstools-color-scheme--light) #52525e;\n+        --no-alt-text-badge-border-color:var(--csstools-light-dark-toggle--84, #f0f0f4);\n+        --csstools-light-dark-toggle--85:var(--csstools-color-scheme--light) #fbfbfe;\n+        --no-alt-text-badge-bg-color:var(--csstools-light-dark-toggle--85, #cfcfd8);\n+        --csstools-light-dark-toggle--86:var(--csstools-color-scheme--light) #15141a;\n+        --no-alt-text-badge-fg-color:var(--csstools-light-dark-toggle--86, #5b5b66);\n+    }\n+}\n+\n+@media screen and (forced-colors: active){\n+\n+    :is(.annotationEditorLayer .stampEditor) .noAltTextBadge{\n+        --no-alt-text-badge-border-color:ButtonText;\n+        --no-alt-text-badge-bg-color:ButtonFace;\n+        --no-alt-text-badge-fg-color:ButtonText;\n+    }\n+}\n+\n+:is(.annotationEditorLayer .stampEditor) .noAltTextBadge{\n+\n+    position:absolute;\n+    inset-inline-end:5px;\n+    inset-block-end:5px;\n+    display:inline-flex;\n+    width:32px;\n+    height:32px;\n+    padding:3px;\n+    justify-content:center;\n+    align-items:center;\n+    pointer-events:none;\n+    z-index:1;\n+\n+    border-radius:2px;\n+    border:1px solid var(--no-alt-text-badge-border-color);\n+    background:var(--no-alt-text-badge-bg-color);\n+}\n+\n+:is(:is(.annotationEditorLayer .stampEditor) .noAltTextBadge)::before{\n+    content:\"\";\n+    display:inline-block;\n+    width:16px;\n+    height:16px;\n+    -webkit-mask-image:var(--new-alt-text-warning-image);\n+    mask-image:var(--new-alt-text-warning-image);\n+    -webkit-mask-size:cover;\n+    mask-size:cover;\n+    background-color:var(--no-alt-text-badge-fg-color);\n }\n \n-.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) > .resizers{\n+:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.signatureEditor)) > .resizers{\n     position:absolute;\n     inset:0;\n }\n \n-.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) > .resizers.hidden{\n+.hidden:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.signatureEditor)) > .resizers){\n     display:none;\n }\n \n-.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) > .resizers > .resizer{\n+:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.signatureEditor)) > .resizers) > .resizer{\n     width:var(--resizer-size);\n     height:var(--resizer-size);\n     background:content-box var(--resizer-bg-color);\n@@ -1914,270 +3597,108 @@\n     position:absolute;\n }\n \n-.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) > .resizers > .resizer.topLeft{\n+.topLeft:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.signatureEditor)) > .resizers) > .resizer){\n     top:var(--resizer-shift);\n     left:var(--resizer-shift);\n }\n \n-.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) > .resizers > .resizer.topMiddle{\n+.topMiddle:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.signatureEditor)) > .resizers) > .resizer){\n     top:var(--resizer-shift);\n     left:calc(50% + var(--resizer-shift));\n }\n \n-.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) > .resizers > .resizer.topRight{\n+.topRight:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.signatureEditor)) > .resizers) > .resizer){\n     top:var(--resizer-shift);\n     right:var(--resizer-shift);\n }\n \n-.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) > .resizers > .resizer.middleRight{\n+.middleRight:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.signatureEditor)) > .resizers) > .resizer){\n     top:calc(50% + var(--resizer-shift));\n     right:var(--resizer-shift);\n }\n \n-.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) > .resizers > .resizer.bottomRight{\n+.bottomRight:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.signatureEditor)) > .resizers) > .resizer){\n     bottom:var(--resizer-shift);\n     right:var(--resizer-shift);\n }\n \n-.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) > .resizers > .resizer.bottomMiddle{\n+.bottomMiddle:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.signatureEditor)) > .resizers) > .resizer){\n     bottom:var(--resizer-shift);\n     left:calc(50% + var(--resizer-shift));\n }\n \n-.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) > .resizers > .resizer.bottomLeft{\n+.bottomLeft:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.signatureEditor)) > .resizers) > .resizer){\n     bottom:var(--resizer-shift);\n     left:var(--resizer-shift);\n }\n \n-.annotationEditorLayer :is(.freeTextEditor, .inkEditor, .stampEditor) > .resizers > .resizer.middleLeft{\n+.middleLeft:is(:is(:is(.annotationEditorLayer :is(.freeTextEditor,.inkEditor,.stampEditor,.signatureEditor)) > .resizers) > .resizer){\n     top:calc(50% + var(--resizer-shift));\n     left:var(--resizer-shift);\n }\n \n-.annotationEditorLayer[data-main-rotation=\"0\"]\n-:is([data-editor-rotation=\"0\"], [data-editor-rotation=\"180\"]) > .resizers > .resizer.topLeft,\n-.annotationEditorLayer[data-main-rotation=\"90\"]\n-:is([data-editor-rotation=\"270\"], [data-editor-rotation=\"90\"]) > .resizers > .resizer.topLeft,\n-.annotationEditorLayer[data-main-rotation=\"180\"]\n-:is([data-editor-rotation=\"180\"], [data-editor-rotation=\"0\"]) > .resizers > .resizer.topLeft,\n-.annotationEditorLayer[data-main-rotation=\"270\"]\n-:is([data-editor-rotation=\"90\"], [data-editor-rotation=\"270\"]) > .resizers > .resizer.topLeft,\n-.annotationEditorLayer[data-main-rotation=\"0\"]\n-:is([data-editor-rotation=\"0\"], [data-editor-rotation=\"180\"]) > .resizers > .resizer.bottomRight,\n-.annotationEditorLayer[data-main-rotation=\"90\"]\n-:is([data-editor-rotation=\"270\"], [data-editor-rotation=\"90\"]) > .resizers > .resizer.bottomRight,\n-.annotationEditorLayer[data-main-rotation=\"180\"]\n-:is([data-editor-rotation=\"180\"], [data-editor-rotation=\"0\"]) > .resizers > .resizer.bottomRight,\n-.annotationEditorLayer[data-main-rotation=\"270\"]\n-:is([data-editor-rotation=\"90\"], [data-editor-rotation=\"270\"]) > .resizers > .resizer.bottomRight{\n+.topLeft:is(:is(.annotationEditorLayer[data-main-rotation=\"0\"] :is([data-editor-rotation=\"0\"],[data-editor-rotation=\"180\"]),.annotationEditorLayer[data-main-rotation=\"90\"] :is([data-editor-rotation=\"270\"],[data-editor-rotation=\"90\"]),.annotationEditorLayer[data-main-rotation=\"180\"] :is([data-editor-rotation=\"180\"],[data-editor-rotation=\"0\"]),.annotationEditorLayer[data-main-rotation=\"270\"] :is([data-editor-rotation=\"90\"],[data-editor-rotation=\"270\"])) > .resizers > .resizer),.bottomRight:is(:is(.annotationEditorLayer[data-main-rotation=\"0\"] :is([data-editor-rotation=\"0\"],[data-editor-rotation=\"180\"]),.annotationEditorLayer[data-main-rotation=\"90\"] :is([data-editor-rotation=\"270\"],[data-editor-rotation=\"90\"]),.annotationEditorLayer[data-main-rotation=\"180\"] :is([data-editor-rotation=\"180\"],[data-editor-rotation=\"0\"]),.annotationEditorLayer[data-main-rotation=\"270\"] :is([data-editor-rotation=\"90\"],[data-editor-rotation=\"270\"])) > .resizers > .resizer){\n     cursor:nwse-resize;\n }\n \n-.annotationEditorLayer[data-main-rotation=\"0\"]\n-:is([data-editor-rotation=\"0\"], [data-editor-rotation=\"180\"]) > .resizers > .resizer.topMiddle,\n-.annotationEditorLayer[data-main-rotation=\"90\"]\n-:is([data-editor-rotation=\"270\"], [data-editor-rotation=\"90\"]) > .resizers > .resizer.topMiddle,\n-.annotationEditorLayer[data-main-rotation=\"180\"]\n-:is([data-editor-rotation=\"180\"], [data-editor-rotation=\"0\"]) > .resizers > .resizer.topMiddle,\n-.annotationEditorLayer[data-main-rotation=\"270\"]\n-:is([data-editor-rotation=\"90\"], [data-editor-rotation=\"270\"]) > .resizers > .resizer.topMiddle,\n-.annotationEditorLayer[data-main-rotation=\"0\"]\n-:is([data-editor-rotation=\"0\"], [data-editor-rotation=\"180\"]) > .resizers > .resizer.bottomMiddle,\n-.annotationEditorLayer[data-main-rotation=\"90\"]\n-:is([data-editor-rotation=\"270\"], [data-editor-rotation=\"90\"]) > .resizers > .resizer.bottomMiddle,\n-.annotationEditorLayer[data-main-rotation=\"180\"]\n-:is([data-editor-rotation=\"180\"], [data-editor-rotation=\"0\"]) > .resizers > .resizer.bottomMiddle,\n-.annotationEditorLayer[data-main-rotation=\"270\"]\n-:is([data-editor-rotation=\"90\"], [data-editor-rotation=\"270\"]) > .resizers > .resizer.bottomMiddle{\n+.topMiddle:is(:is(.annotationEditorLayer[data-main-rotation=\"0\"] :is([data-editor-rotation=\"0\"],[data-editor-rotation=\"180\"]),.annotationEditorLayer[data-main-rotation=\"90\"] :is([data-editor-rotation=\"270\"],[data-editor-rotation=\"90\"]),.annotationEditorLayer[data-main-rotation=\"180\"] :is([data-editor-rotation=\"180\"],[data-editor-rotation=\"0\"]),.annotationEditorLayer[data-main-rotation=\"270\"] :is([data-editor-rotation=\"90\"],[data-editor-rotation=\"270\"])) > .resizers > .resizer),.bottomMiddle:is(:is(.annotationEditorLayer[data-main-rotation=\"0\"] :is([data-editor-rotation=\"0\"],[data-editor-rotation=\"180\"]),.annotationEditorLayer[data-main-rotation=\"90\"] :is([data-editor-rotation=\"270\"],[data-editor-rotation=\"90\"]),.annotationEditorLayer[data-main-rotation=\"180\"] :is([data-editor-rotation=\"180\"],[data-editor-rotation=\"0\"]),.annotationEditorLayer[data-main-rotation=\"270\"] :is([data-editor-rotation=\"90\"],[data-editor-rotation=\"270\"])) > .resizers > .resizer){\n     cursor:ns-resize;\n }\n \n-.annotationEditorLayer[data-main-rotation=\"0\"]\n-:is([data-editor-rotation=\"0\"], [data-editor-rotation=\"180\"]) > .resizers > .resizer.topRight,\n-.annotationEditorLayer[data-main-rotation=\"90\"]\n-:is([data-editor-rotation=\"270\"], [data-editor-rotation=\"90\"]) > .resizers > .resizer.topRight,\n-.annotationEditorLayer[data-main-rotation=\"180\"]\n-:is([data-editor-rotation=\"180\"], [data-editor-rotation=\"0\"]) > .resizers > .resizer.topRight,\n-.annotationEditorLayer[data-main-rotation=\"270\"]\n-:is([data-editor-rotation=\"90\"], [data-editor-rotation=\"270\"]) > .resizers > .resizer.topRight,\n-.annotationEditorLayer[data-main-rotation=\"0\"]\n-:is([data-editor-rotation=\"0\"], [data-editor-rotation=\"180\"]) > .resizers > .resizer.bottomLeft,\n-.annotationEditorLayer[data-main-rotation=\"90\"]\n-:is([data-editor-rotation=\"270\"], [data-editor-rotation=\"90\"]) > .resizers > .resizer.bottomLeft,\n-.annotationEditorLayer[data-main-rotation=\"180\"]\n-:is([data-editor-rotation=\"180\"], [data-editor-rotation=\"0\"]) > .resizers > .resizer.bottomLeft,\n-.annotationEditorLayer[data-main-rotation=\"270\"]\n-:is([data-editor-rotation=\"90\"], [data-editor-rotation=\"270\"]) > .resizers > .resizer.bottomLeft{\n+.topRight:is(:is(.annotationEditorLayer[data-main-rotation=\"0\"] :is([data-editor-rotation=\"0\"],[data-editor-rotation=\"180\"]),.annotationEditorLayer[data-main-rotation=\"90\"] :is([data-editor-rotation=\"270\"],[data-editor-rotation=\"90\"]),.annotationEditorLayer[data-main-rotation=\"180\"] :is([data-editor-rotation=\"180\"],[data-editor-rotation=\"0\"]),.annotationEditorLayer[data-main-rotation=\"270\"] :is([data-editor-rotation=\"90\"],[data-editor-rotation=\"270\"])) > .resizers > .resizer),.bottomLeft:is(:is(.annotationEditorLayer[data-main-rotation=\"0\"] :is([data-editor-rotation=\"0\"],[data-editor-rotation=\"180\"]),.annotationEditorLayer[data-main-rotation=\"90\"] :is([data-editor-rotation=\"270\"],[data-editor-rotation=\"90\"]),.annotationEditorLayer[data-main-rotation=\"180\"] :is([data-editor-rotation=\"180\"],[data-editor-rotation=\"0\"]),.annotationEditorLayer[data-main-rotation=\"270\"] :is([data-editor-rotation=\"90\"],[data-editor-rotation=\"270\"])) > .resizers > .resizer){\n     cursor:nesw-resize;\n }\n \n-.annotationEditorLayer[data-main-rotation=\"0\"]\n-:is([data-editor-rotation=\"0\"], [data-editor-rotation=\"180\"]) > .resizers > .resizer.middleRight,\n-.annotationEditorLayer[data-main-rotation=\"90\"]\n-:is([data-editor-rotation=\"270\"], [data-editor-rotation=\"90\"]) > .resizers > .resizer.middleRight,\n-.annotationEditorLayer[data-main-rotation=\"180\"]\n-:is([data-editor-rotation=\"180\"], [data-editor-rotation=\"0\"]) > .resizers > .resizer.middleRight,\n-.annotationEditorLayer[data-main-rotation=\"270\"]\n-:is([data-editor-rotation=\"90\"], [data-editor-rotation=\"270\"]) > .resizers > .resizer.middleRight,\n-.annotationEditorLayer[data-main-rotation=\"0\"]\n-:is([data-editor-rotation=\"0\"], [data-editor-rotation=\"180\"]) > .resizers > .resizer.middleLeft,\n-.annotationEditorLayer[data-main-rotation=\"90\"]\n-:is([data-editor-rotation=\"270\"], [data-editor-rotation=\"90\"]) > .resizers > .resizer.middleLeft,\n-.annotationEditorLayer[data-main-rotation=\"180\"]\n-:is([data-editor-rotation=\"180\"], [data-editor-rotation=\"0\"]) > .resizers > .resizer.middleLeft,\n-.annotationEditorLayer[data-main-rotation=\"270\"]\n-:is([data-editor-rotation=\"90\"], [data-editor-rotation=\"270\"]) > .resizers > .resizer.middleLeft{\n+.middleRight:is(:is(.annotationEditorLayer[data-main-rotation=\"0\"] :is([data-editor-rotation=\"0\"],[data-editor-rotation=\"180\"]),.annotationEditorLayer[data-main-rotation=\"90\"] :is([data-editor-rotation=\"270\"],[data-editor-rotation=\"90\"]),.annotationEditorLayer[data-main-rotation=\"180\"] :is([data-editor-rotation=\"180\"],[data-editor-rotation=\"0\"]),.annotationEditorLayer[data-main-rotation=\"270\"] :is([data-editor-rotation=\"90\"],[data-editor-rotation=\"270\"])) > .resizers > .resizer),.middleLeft:is(:is(.annotationEditorLayer[data-main-rotation=\"0\"] :is([data-editor-rotation=\"0\"],[data-editor-rotation=\"180\"]),.annotationEditorLayer[data-main-rotation=\"90\"] :is([data-editor-rotation=\"270\"],[data-editor-rotation=\"90\"]),.annotationEditorLayer[data-main-rotation=\"180\"] :is([data-editor-rotation=\"180\"],[data-editor-rotation=\"0\"]),.annotationEditorLayer[data-main-rotation=\"270\"] :is([data-editor-rotation=\"90\"],[data-editor-rotation=\"270\"])) > .resizers > .resizer){\n     cursor:ew-resize;\n }\n \n-.annotationEditorLayer[data-main-rotation=\"0\"]\n-:is([data-editor-rotation=\"90\"], [data-editor-rotation=\"270\"]) > .resizers > .resizer.topLeft,\n-.annotationEditorLayer[data-main-rotation=\"90\"]\n-:is([data-editor-rotation=\"0\"], [data-editor-rotation=\"180\"]) > .resizers > .resizer.topLeft,\n-.annotationEditorLayer[data-main-rotation=\"180\"]\n-:is([data-editor-rotation=\"270\"], [data-editor-rotation=\"90\"]) > .resizers > .resizer.topLeft,\n-.annotationEditorLayer[data-main-rotation=\"270\"]\n-:is([data-editor-rotation=\"180\"], [data-editor-rotation=\"0\"]) > .resizers > .resizer.topLeft,\n-.annotationEditorLayer[data-main-rotation=\"0\"]\n-:is([data-editor-rotation=\"90\"], [data-editor-rotation=\"270\"]) > .resizers > .resizer.bottomRight,\n-.annotationEditorLayer[data-main-rotation=\"90\"]\n-:is([data-editor-rotation=\"0\"], [data-editor-rotation=\"180\"]) > .resizers > .resizer.bottomRight,\n-.annotationEditorLayer[data-main-rotation=\"180\"]\n-:is([data-editor-rotation=\"270\"], [data-editor-rotation=\"90\"]) > .resizers > .resizer.bottomRight,\n-.annotationEditorLayer[data-main-rotation=\"270\"]\n-:is([data-editor-rotation=\"180\"], [data-editor-rotation=\"0\"]) > .resizers > .resizer.bottomRight{\n+.topLeft:is(:is(.annotationEditorLayer[data-main-rotation=\"0\"] :is([data-editor-rotation=\"90\"],[data-editor-rotation=\"270\"]),.annotationEditorLayer[data-main-rotation=\"90\"] :is([data-editor-rotation=\"0\"],[data-editor-rotation=\"180\"]),.annotationEditorLayer[data-main-rotation=\"180\"] :is([data-editor-rotation=\"270\"],[data-editor-rotation=\"90\"]),.annotationEditorLayer[data-main-rotation=\"270\"] :is([data-editor-rotation=\"180\"],[data-editor-rotation=\"0\"])) > .resizers > .resizer),.bottomRight:is(:is(.annotationEditorLayer[data-main-rotation=\"0\"] :is([data-editor-rotation=\"90\"],[data-editor-rotation=\"270\"]),.annotationEditorLayer[data-main-rotation=\"90\"] :is([data-editor-rotation=\"0\"],[data-editor-rotation=\"180\"]),.annotationEditorLayer[data-main-rotation=\"180\"] :is([data-editor-rotation=\"270\"],[data-editor-rotation=\"90\"]),.annotationEditorLayer[data-main-rotation=\"270\"] :is([data-editor-rotation=\"180\"],[data-editor-rotation=\"0\"])) > .resizers > .resizer){\n     cursor:nesw-resize;\n }\n \n-.annotationEditorLayer[data-main-rotation=\"0\"]\n-:is([data-editor-rotation=\"90\"], [data-editor-rotation=\"270\"]) > .resizers > .resizer.topMiddle,\n-.annotationEditorLayer[data-main-rotation=\"90\"]\n-:is([data-editor-rotation=\"0\"], [data-editor-rotation=\"180\"]) > .resizers > .resizer.topMiddle,\n-.annotationEditorLayer[data-main-rotation=\"180\"]\n-:is([data-editor-rotation=\"270\"], [data-editor-rotation=\"90\"]) > .resizers > .resizer.topMiddle,\n-.annotationEditorLayer[data-main-rotation=\"270\"]\n-:is([data-editor-rotation=\"180\"], [data-editor-rotation=\"0\"]) > .resizers > .resizer.topMiddle,\n-.annotationEditorLayer[data-main-rotation=\"0\"]\n-:is([data-editor-rotation=\"90\"], [data-editor-rotation=\"270\"]) > .resizers > .resizer.bottomMiddle,\n-.annotationEditorLayer[data-main-rotation=\"90\"]\n-:is([data-editor-rotation=\"0\"], [data-editor-rotation=\"180\"]) > .resizers > .resizer.bottomMiddle,\n-.annotationEditorLayer[data-main-rotation=\"180\"]\n-:is([data-editor-rotation=\"270\"], [data-editor-rotation=\"90\"]) > .resizers > .resizer.bottomMiddle,\n-.annotationEditorLayer[data-main-rotation=\"270\"]\n-:is([data-editor-rotation=\"180\"], [data-editor-rotation=\"0\"]) > .resizers > .resizer.bottomMiddle{\n+.topMiddle:is(:is(.annotationEditorLayer[data-main-rotation=\"0\"] :is([data-editor-rotation=\"90\"],[data-editor-rotation=\"270\"]),.annotationEditorLayer[data-main-rotation=\"90\"] :is([data-editor-rotation=\"0\"],[data-editor-rotation=\"180\"]),.annotationEditorLayer[data-main-rotation=\"180\"] :is([data-editor-rotation=\"270\"],[data-editor-rotation=\"90\"]),.annotationEditorLayer[data-main-rotation=\"270\"] :is([data-editor-rotation=\"180\"],[data-editor-rotation=\"0\"])) > .resizers > .resizer),.bottomMiddle:is(:is(.annotationEditorLayer[data-main-rotation=\"0\"] :is([data-editor-rotation=\"90\"],[data-editor-rotation=\"270\"]),.annotationEditorLayer[data-main-rotation=\"90\"] :is([data-editor-rotation=\"0\"],[data-editor-rotation=\"180\"]),.annotationEditorLayer[data-main-rotation=\"180\"] :is([data-editor-rotation=\"270\"],[data-editor-rotation=\"90\"]),.annotationEditorLayer[data-main-rotation=\"270\"] :is([data-editor-rotation=\"180\"],[data-editor-rotation=\"0\"])) > .resizers > .resizer){\n     cursor:ew-resize;\n }\n \n-.annotationEditorLayer[data-main-rotation=\"0\"]\n-:is([data-editor-rotation=\"90\"], [data-editor-rotation=\"270\"]) > .resizers > .resizer.topRight,\n-.annotationEditorLayer[data-main-rotation=\"90\"]\n-:is([data-editor-rotation=\"0\"], [data-editor-rotation=\"180\"]) > .resizers > .resizer.topRight,\n-.annotationEditorLayer[data-main-rotation=\"180\"]\n-:is([data-editor-rotation=\"270\"], [data-editor-rotation=\"90\"]) > .resizers > .resizer.topRight,\n-.annotationEditorLayer[data-main-rotation=\"270\"]\n-:is([data-editor-rotation=\"180\"], [data-editor-rotation=\"0\"]) > .resizers > .resizer.topRight,\n-.annotationEditorLayer[data-main-rotation=\"0\"]\n-:is([data-editor-rotation=\"90\"], [data-editor-rotation=\"270\"]) > .resizers > .resizer.bottomLeft,\n-.annotationEditorLayer[data-main-rotation=\"90\"]\n-:is([data-editor-rotation=\"0\"], [data-editor-rotation=\"180\"]) > .resizers > .resizer.bottomLeft,\n-.annotationEditorLayer[data-main-rotation=\"180\"]\n-:is([data-editor-rotation=\"270\"], [data-editor-rotation=\"90\"]) > .resizers > .resizer.bottomLeft,\n-.annotationEditorLayer[data-main-rotation=\"270\"]\n-:is([data-editor-rotation=\"180\"], [data-editor-rotation=\"0\"]) > .resizers > .resizer.bottomLeft{\n+.topRight:is(:is(.annotationEditorLayer[data-main-rotation=\"0\"] :is([data-editor-rotation=\"90\"],[data-editor-rotation=\"270\"]),.annotationEditorLayer[data-main-rotation=\"90\"] :is([data-editor-rotation=\"0\"],[data-editor-rotation=\"180\"]),.annotationEditorLayer[data-main-rotation=\"180\"] :is([data-editor-rotation=\"270\"],[data-editor-rotation=\"90\"]),.annotationEditorLayer[data-main-rotation=\"270\"] :is([data-editor-rotation=\"180\"],[data-editor-rotation=\"0\"])) > .resizers > .resizer),.bottomLeft:is(:is(.annotationEditorLayer[data-main-rotation=\"0\"] :is([data-editor-rotation=\"90\"],[data-editor-rotation=\"270\"]),.annotationEditorLayer[data-main-rotation=\"90\"] :is([data-editor-rotation=\"0\"],[data-editor-rotation=\"180\"]),.annotationEditorLayer[data-main-rotation=\"180\"] :is([data-editor-rotation=\"270\"],[data-editor-rotation=\"90\"]),.annotationEditorLayer[data-main-rotation=\"270\"] :is([data-editor-rotation=\"180\"],[data-editor-rotation=\"0\"])) > .resizers > .resizer){\n     cursor:nwse-resize;\n }\n \n-.annotationEditorLayer[data-main-rotation=\"0\"]\n-:is([data-editor-rotation=\"90\"], [data-editor-rotation=\"270\"]) > .resizers > .resizer.middleRight,\n-.annotationEditorLayer[data-main-rotation=\"90\"]\n-:is([data-editor-rotation=\"0\"], [data-editor-rotation=\"180\"]) > .resizers > .resizer.middleRight,\n-.annotationEditorLayer[data-main-rotation=\"180\"]\n-:is([data-editor-rotation=\"270\"], [data-editor-rotation=\"90\"]) > .resizers > .resizer.middleRight,\n-.annotationEditorLayer[data-main-rotation=\"270\"]\n-:is([data-editor-rotation=\"180\"], [data-editor-rotation=\"0\"]) > .resizers > .resizer.middleRight,\n-.annotationEditorLayer[data-main-rotation=\"0\"]\n-:is([data-editor-rotation=\"90\"], [data-editor-rotation=\"270\"]) > .resizers > .resizer.middleLeft,\n-.annotationEditorLayer[data-main-rotation=\"90\"]\n-:is([data-editor-rotation=\"0\"], [data-editor-rotation=\"180\"]) > .resizers > .resizer.middleLeft,\n-.annotationEditorLayer[data-main-rotation=\"180\"]\n-:is([data-editor-rotation=\"270\"], [data-editor-rotation=\"90\"]) > .resizers > .resizer.middleLeft,\n-.annotationEditorLayer[data-main-rotation=\"270\"]\n-:is([data-editor-rotation=\"180\"], [data-editor-rotation=\"0\"]) > .resizers > .resizer.middleLeft{\n+.middleRight:is(:is(.annotationEditorLayer[data-main-rotation=\"0\"] :is([data-editor-rotation=\"90\"],[data-editor-rotation=\"270\"]),.annotationEditorLayer[data-main-rotation=\"90\"] :is([data-editor-rotation=\"0\"],[data-editor-rotation=\"180\"]),.annotationEditorLayer[data-main-rotation=\"180\"] :is([data-editor-rotation=\"270\"],[data-editor-rotation=\"90\"]),.annotationEditorLayer[data-main-rotation=\"270\"] :is([data-editor-rotation=\"180\"],[data-editor-rotation=\"0\"])) > .resizers > .resizer),.middleLeft:is(:is(.annotationEditorLayer[data-main-rotation=\"0\"] :is([data-editor-rotation=\"90\"],[data-editor-rotation=\"270\"]),.annotationEditorLayer[data-main-rotation=\"90\"] :is([data-editor-rotation=\"0\"],[data-editor-rotation=\"180\"]),.annotationEditorLayer[data-main-rotation=\"180\"] :is([data-editor-rotation=\"270\"],[data-editor-rotation=\"90\"]),.annotationEditorLayer[data-main-rotation=\"270\"] :is([data-editor-rotation=\"180\"],[data-editor-rotation=\"0\"])) > .resizers > .resizer){\n     cursor:ns-resize;\n }\n \n-.annotationEditorLayer\n-:is(\n-[data-main-rotation=\"0\"] [data-editor-rotation=\"90\"],\n-[data-main-rotation=\"90\"] [data-editor-rotation=\"0\"],\n-[data-main-rotation=\"180\"] [data-editor-rotation=\"270\"],\n-[data-main-rotation=\"270\"] [data-editor-rotation=\"180\"]\n-) .editToolbar{\n+:is(.annotationEditorLayer :is([data-main-rotation=\"0\"] [data-editor-rotation=\"90\"],[data-main-rotation=\"90\"] [data-editor-rotation=\"0\"],[data-main-rotation=\"180\"] [data-editor-rotation=\"270\"],[data-main-rotation=\"270\"] [data-editor-rotation=\"180\"])) .editToolbar{\n     rotate:270deg;\n }\n \n-[dir=\"ltr\"] .annotationEditorLayer\n-:is(\n-[data-main-rotation=\"0\"] [data-editor-rotation=\"90\"],\n-[data-main-rotation=\"90\"] [data-editor-rotation=\"0\"],\n-[data-main-rotation=\"180\"] [data-editor-rotation=\"270\"],\n-[data-main-rotation=\"270\"] [data-editor-rotation=\"180\"]\n-) .editToolbar{\n+[dir=\"ltr\"] :is(:is(.annotationEditorLayer :is([data-main-rotation=\"0\"] [data-editor-rotation=\"90\"],[data-main-rotation=\"90\"] [data-editor-rotation=\"0\"],[data-main-rotation=\"180\"] [data-editor-rotation=\"270\"],[data-main-rotation=\"270\"] [data-editor-rotation=\"180\"])) .editToolbar){\n     inset-inline-end:calc(0px - var(--editor-toolbar-vert-offset));\n     inset-block-start:0;\n }\n \n-[dir=\"rtl\"] .annotationEditorLayer\n-:is(\n-[data-main-rotation=\"0\"] [data-editor-rotation=\"90\"],\n-[data-main-rotation=\"90\"] [data-editor-rotation=\"0\"],\n-[data-main-rotation=\"180\"] [data-editor-rotation=\"270\"],\n-[data-main-rotation=\"270\"] [data-editor-rotation=\"180\"]\n-) .editToolbar{\n+[dir=\"rtl\"] :is(:is(.annotationEditorLayer :is([data-main-rotation=\"0\"] [data-editor-rotation=\"90\"],[data-main-rotation=\"90\"] [data-editor-rotation=\"0\"],[data-main-rotation=\"180\"] [data-editor-rotation=\"270\"],[data-main-rotation=\"270\"] [data-editor-rotation=\"180\"])) .editToolbar){\n     inset-inline-end:calc(100% + var(--editor-toolbar-vert-offset));\n     inset-block-start:0;\n }\n \n-.annotationEditorLayer\n-:is(\n-[data-main-rotation=\"0\"] [data-editor-rotation=\"180\"],\n-[data-main-rotation=\"90\"] [data-editor-rotation=\"90\"],\n-[data-main-rotation=\"180\"] [data-editor-rotation=\"0\"],\n-[data-main-rotation=\"270\"] [data-editor-rotation=\"270\"]\n-) .editToolbar{\n+:is(.annotationEditorLayer :is([data-main-rotation=\"0\"] [data-editor-rotation=\"180\"],[data-main-rotation=\"90\"] [data-editor-rotation=\"90\"],[data-main-rotation=\"180\"] [data-editor-rotation=\"0\"],[data-main-rotation=\"270\"] [data-editor-rotation=\"270\"])) .editToolbar{\n     rotate:180deg;\n     inset-inline-end:100%;\n     inset-block-start:calc(0pc - var(--editor-toolbar-vert-offset));\n }\n \n-.annotationEditorLayer\n-:is(\n-[data-main-rotation=\"0\"] [data-editor-rotation=\"270\"],\n-[data-main-rotation=\"90\"] [data-editor-rotation=\"180\"],\n-[data-main-rotation=\"180\"] [data-editor-rotation=\"90\"],\n-[data-main-rotation=\"270\"] [data-editor-rotation=\"0\"]\n-) .editToolbar{\n+:is(.annotationEditorLayer :is([data-main-rotation=\"0\"] [data-editor-rotation=\"270\"],[data-main-rotation=\"90\"] [data-editor-rotation=\"180\"],[data-main-rotation=\"180\"] [data-editor-rotation=\"90\"],[data-main-rotation=\"270\"] [data-editor-rotation=\"0\"])) .editToolbar{\n     rotate:90deg;\n }\n \n-[dir=\"ltr\"] .annotationEditorLayer\n-:is(\n-[data-main-rotation=\"0\"] [data-editor-rotation=\"270\"],\n-[data-main-rotation=\"90\"] [data-editor-rotation=\"180\"],\n-[data-main-rotation=\"180\"] [data-editor-rotation=\"90\"],\n-[data-main-rotation=\"270\"] [data-editor-rotation=\"0\"]\n-) .editToolbar{\n+[dir=\"ltr\"] :is(:is(.annotationEditorLayer :is([data-main-rotation=\"0\"] [data-editor-rotation=\"270\"],[data-main-rotation=\"90\"] [data-editor-rotation=\"180\"],[data-main-rotation=\"180\"] [data-editor-rotation=\"90\"],[data-main-rotation=\"270\"] [data-editor-rotation=\"0\"])) .editToolbar){\n     inset-inline-end:calc(100% + var(--editor-toolbar-vert-offset));\n     inset-block-start:100%;\n }\n \n-[dir=\"rtl\"] .annotationEditorLayer\n-:is(\n-[data-main-rotation=\"0\"] [data-editor-rotation=\"270\"],\n-[data-main-rotation=\"90\"] [data-editor-rotation=\"180\"],\n-[data-main-rotation=\"180\"] [data-editor-rotation=\"90\"],\n-[data-main-rotation=\"270\"] [data-editor-rotation=\"0\"]\n-) .editToolbar{\n+[dir=\"rtl\"] :is(:is(.annotationEditorLayer :is([data-main-rotation=\"0\"] [data-editor-rotation=\"270\"],[data-main-rotation=\"90\"] [data-editor-rotation=\"180\"],[data-main-rotation=\"180\"] [data-editor-rotation=\"90\"],[data-main-rotation=\"270\"] [data-editor-rotation=\"0\"])) .editToolbar){\n     inset-inline-start:calc(0px - var(--editor-toolbar-vert-offset));\n     inset-block-start:0;\n }\n@@ -2201,7 +3722,7 @@\n     gap:16px;\n }\n \n-.dialog.altText #altTextContainer #overallDescription{\n+:is(.dialog.altText #altTextContainer) #overallDescription{\n     display:flex;\n     flex-direction:column;\n     align-items:flex-start;\n@@ -2209,34 +3730,34 @@\n     align-self:stretch;\n }\n \n-.dialog.altText #altTextContainer #overallDescription span{\n+:is(:is(.dialog.altText #altTextContainer) #overallDescription) span{\n     align-self:stretch;\n }\n \n-.dialog.altText #altTextContainer #overallDescription .title{\n+:is(:is(.dialog.altText #altTextContainer) #overallDescription) .title{\n     font-size:13px;\n     font-style:normal;\n     font-weight:590;\n }\n \n-.dialog.altText #altTextContainer #addDescription{\n+:is(.dialog.altText #altTextContainer) #addDescription{\n     display:flex;\n     flex-direction:column;\n     align-items:stretch;\n     gap:8px;\n }\n \n-.dialog.altText #altTextContainer #addDescription .descriptionArea{\n+:is(:is(.dialog.altText #altTextContainer) #addDescription) .descriptionArea{\n     flex:1;\n     padding-inline:24px 10px;\n }\n \n-.dialog.altText #altTextContainer #addDescription .descriptionArea textarea{\n+:is(:is(:is(.dialog.altText #altTextContainer) #addDescription) .descriptionArea) textarea{\n     width:100%;\n     min-height:75px;\n }\n \n-.dialog.altText #altTextContainer #buttons{\n+:is(.dialog.altText #altTextContainer) #buttons{\n     display:flex;\n     justify-content:flex-end;\n     align-items:flex-start;\n@@ -2244,25 +3765,241 @@\n     align-self:stretch;\n }\n \n-.colorPicker{\n-    --hover-outline-color:#0250bb;\n-    --selected-outline-color:#0060df;\n-    --swatch-border-color:#cfcfd8;\n+.dialog.newAltText{\n+    --new-alt-text-ai-disclaimer-icon:url(images\u002FaltText_disclaimer.svg);\n+    --new-alt-text-spinner-icon:url(images\u002FaltText_spinner.svg);\n+    --csstools-light-dark-toggle--87:var(--csstools-color-scheme--light) #2b2a33;\n+    --preview-image-bg-color:var(--csstools-light-dark-toggle--87, #f0f0f4);\n+    --preview-image-border:none;\n }\n \n-@media (prefers-color-scheme: dark){\n+@supports (color: light-dark(red, red)){\n+    .dialog.newAltText{\n+        --preview-image-bg-color:light-dark(#f0f0f4, #2b2a33);\n+    }\n+}\n \n-    :where(html:not(.is-light)) .colorPicker{\n-        --hover-outline-color:#80ebff;\n-        --selected-outline-color:#aaf2ff;\n-        --swatch-border-color:#52525e;\n+@supports not (color: light-dark(tan, tan)){\n+\n+    .dialog.newAltText *{\n+        --csstools-light-dark-toggle--87:var(--csstools-color-scheme--light) #2b2a33;\n+        --preview-image-bg-color:var(--csstools-light-dark-toggle--87, #f0f0f4);\n+    }\n+}\n+\n+@media screen and (forced-colors: active){\n+\n+    .dialog.newAltText{\n+        --preview-image-bg-color:ButtonFace;\n+        --preview-image-border:1px solid ButtonText;\n     }\n }\n \n-:where(html.is-dark) .colorPicker{\n-    --hover-outline-color:#80ebff;\n-    --selected-outline-color:#aaf2ff;\n-    --swatch-border-color:#52525e;\n+.dialog.newAltText{\n+\n+    width:80%;\n+    max-width:570px;\n+    min-width:300px;\n+    padding:0;\n+}\n+\n+.dialog.newAltText.noAi #newAltTextDisclaimer,.dialog.newAltText.noAi #newAltTextCreateAutomatically{\n+    display:none !important;\n+}\n+\n+.dialog.newAltText.aiInstalling #newAltTextCreateAutomatically{\n+    display:none !important;\n+}\n+\n+.dialog.newAltText.aiInstalling #newAltTextDownloadModel{\n+    display:flex !important;\n+}\n+\n+.dialog.newAltText.error #newAltTextNotNow{\n+    display:none !important;\n+}\n+\n+.dialog.newAltText.error #newAltTextCancel{\n+    display:inline-block !important;\n+}\n+\n+.dialog.newAltText:not(.error) #newAltTextError{\n+    display:none !important;\n+}\n+\n+.dialog.newAltText #newAltTextContainer{\n+    display:flex;\n+    width:auto;\n+    padding:16px;\n+    flex-direction:column;\n+    justify-content:flex-end;\n+    align-items:flex-start;\n+    gap:12px;\n+    flex:0 1 auto;\n+    line-height:normal;\n+}\n+\n+:is(.dialog.newAltText #newAltTextContainer) #mainContent{\n+    display:flex;\n+    justify-content:flex-end;\n+    align-items:flex-start;\n+    gap:12px;\n+    align-self:stretch;\n+    flex:1 1 auto;\n+}\n+\n+:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionAndSettings{\n+    display:flex;\n+    flex-direction:column;\n+    align-items:flex-start;\n+    gap:16px;\n+    flex:1 0 0;\n+    align-self:stretch;\n+}\n+\n+:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction{\n+    display:flex;\n+    flex-direction:column;\n+    align-items:flex-start;\n+    gap:8px;\n+    align-self:stretch;\n+    flex:1 1 auto;\n+}\n+\n+:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDescriptionContainer{\n+    width:100%;\n+    height:70px;\n+    position:relative;\n+}\n+\n+:is(:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDescriptionContainer) textarea{\n+    width:100%;\n+    height:100%;\n+    padding:8px;\n+}\n+\n+:is(:is(:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDescriptionContainer) textarea)::-moz-placeholder{\n+    color:var(--text-secondary-color);\n+}\n+\n+:is(:is(:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDescriptionContainer) textarea)::placeholder{\n+    color:var(--text-secondary-color);\n+}\n+\n+:is(:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDescriptionContainer) .altTextSpinner{\n+    display:none;\n+    position:absolute;\n+    width:16px;\n+    height:16px;\n+    inset-inline-start:8px;\n+    inset-block-start:8px;\n+    -webkit-mask-size:cover;\n+    mask-size:cover;\n+    background-color:var(--text-secondary-color);\n+    pointer-events:none;\n+}\n+\n+.loading:is(:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDescriptionContainer) textarea::-moz-placeholder{\n+    color:transparent;\n+}\n+\n+.loading:is(:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDescriptionContainer) textarea::placeholder{\n+    color:transparent;\n+}\n+\n+.loading:is(:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDescriptionContainer) .altTextSpinner{\n+    display:inline-block;\n+    -webkit-mask-image:var(--new-alt-text-spinner-icon);\n+    mask-image:var(--new-alt-text-spinner-icon);\n+}\n+\n+:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDescription{\n+    font-size:11px;\n+}\n+\n+:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDisclaimer{\n+    display:flex;\n+    flex-direction:row;\n+    align-items:flex-start;\n+    gap:4px;\n+    font-size:11px;\n+}\n+\n+:is(:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #descriptionInstruction) #newAltTextDisclaimer)::before{\n+    content:\"\";\n+    display:inline-block;\n+    width:17px;\n+    height:16px;\n+    -webkit-mask-image:var(--new-alt-text-ai-disclaimer-icon);\n+    mask-image:var(--new-alt-text-ai-disclaimer-icon);\n+    -webkit-mask-size:cover;\n+    mask-size:cover;\n+    background-color:var(--text-secondary-color);\n+    flex:1 0 auto;\n+}\n+\n+:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #newAltTextDownloadModel{\n+    display:flex;\n+    align-items:center;\n+    gap:4px;\n+    align-self:stretch;\n+}\n+\n+:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #newAltTextDownloadModel)::before{\n+    content:\"\";\n+    display:inline-block;\n+    width:16px;\n+    height:16px;\n+    -webkit-mask-image:var(--new-alt-text-spinner-icon);\n+    mask-image:var(--new-alt-text-spinner-icon);\n+    -webkit-mask-size:cover;\n+    mask-size:cover;\n+    background-color:var(--text-secondary-color);\n+}\n+\n+:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #newAltTextImagePreview{\n+    width:180px;\n+    aspect-ratio:1;\n+    display:flex;\n+    justify-content:center;\n+    align-items:center;\n+    flex:0 0 auto;\n+    background-color:var(--preview-image-bg-color);\n+    border:var(--preview-image-border);\n+}\n+\n+:is(:is(:is(.dialog.newAltText #newAltTextContainer) #mainContent) #newAltTextImagePreview)  > canvas{\n+    max-width:100%;\n+    max-height:100%;\n+}\n+\n+.colorPicker{\n+    --csstools-light-dark-toggle--88:var(--csstools-color-scheme--light) #80ebff;\n+    --hover-outline-color:var(--csstools-light-dark-toggle--88, #0250bb);\n+    --csstools-light-dark-toggle--89:var(--csstools-color-scheme--light) #aaf2ff;\n+    --selected-outline-color:var(--csstools-light-dark-toggle--89, #0060df);\n+    --csstools-light-dark-toggle--90:var(--csstools-color-scheme--light) #52525e;\n+    --swatch-border-color:var(--csstools-light-dark-toggle--90, #cfcfd8);\n+}\n+\n+@supports (color: light-dark(red, red)){\n+    .colorPicker{\n+        --hover-outline-color:light-dark(#0250bb, #80ebff);\n+        --selected-outline-color:light-dark(#0060df, #aaf2ff);\n+        --swatch-border-color:light-dark(#cfcfd8, #52525e);\n+    }\n+}\n+\n+@supports not (color: light-dark(tan, tan)){\n+\n+    .colorPicker *{\n+        --csstools-light-dark-toggle--88:var(--csstools-color-scheme--light) #80ebff;\n+        --hover-outline-color:var(--csstools-light-dark-toggle--88, #0250bb);\n+        --csstools-light-dark-toggle--89:var(--csstools-color-scheme--light) #aaf2ff;\n+        --selected-outline-color:var(--csstools-light-dark-toggle--89, #0060df);\n+        --csstools-light-dark-toggle--90:var(--csstools-color-scheme--light) #52525e;\n+        --swatch-border-color:var(--csstools-light-dark-toggle--90, #cfcfd8);\n+    }\n }\n \n @media screen and (forced-colors: active){\n@@ -2284,7 +4021,7 @@\n     forced-color-adjust:none;\n }\n \n-.colorPicker button:is(:hover, .selected) > .swatch{\n+.colorPicker button:is(:hover,.selected) > .swatch{\n     border:none;\n }\n \n@@ -2317,11 +4054,11 @@\n     transform-origin:0 0;\n }\n \n-.annotationEditorLayer .highlightEditor:not(.free){\n+:is(.annotationEditorLayer .highlightEditor):not(.free){\n     transform:none;\n }\n \n-.annotationEditorLayer .highlightEditor .internal{\n+:is(.annotationEditorLayer .highlightEditor) .internal{\n     position:absolute;\n     top:0;\n     left:0;\n@@ -2330,21 +4067,21 @@\n     pointer-events:auto;\n }\n \n-.annotationEditorLayer .highlightEditor.disabled .internal{\n+.disabled:is(.annotationEditorLayer .highlightEditor) .internal{\n     pointer-events:none;\n }\n \n-.annotationEditorLayer .highlightEditor.selectedEditor .internal{\n+.selectedEditor:is(.annotationEditorLayer .highlightEditor) .internal{\n     cursor:pointer;\n }\n \n-.annotationEditorLayer .highlightEditor .editToolbar{\n+:is(.annotationEditorLayer .highlightEditor) .editToolbar{\n     --editor-toolbar-colorpicker-arrow-image:url(images\u002FtoolbarButton-menuArrow.svg);\n \n     transform-origin:center !important;\n }\n \n-.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker{\n+:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker{\n     position:relative;\n     width:auto;\n     display:flex;\n@@ -2354,7 +4091,7 @@\n     padding:4px;\n }\n \n-.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker::after{\n+:is(:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker)::after{\n     content:\"\";\n     -webkit-mask-image:var(--editor-toolbar-colorpicker-arrow-image);\n     mask-image:var(--editor-toolbar-colorpicker-arrow-image);\n@@ -2368,19 +4105,19 @@\n     height:12px;\n }\n \n-.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker:hover::after{\n+:is(:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker):hover::after{\n     background-color:var(--editor-toolbar-hover-fg-color);\n }\n \n-.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker:has(.dropdown:not(.hidden)){\n+:is(:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker):has(.dropdown:not(.hidden)){\n     background-color:var(--editor-toolbar-hover-bg-color);\n }\n \n-.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker:has(.dropdown:not(.hidden))::after{\n+:is(:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker):has(.dropdown:not(.hidden))::after{\n     scale:-1;\n }\n \n-.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker .dropdown{\n+:is(:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker) .dropdown{\n     position:absolute;\n     display:flex;\n     justify-content:center;\n@@ -2396,7 +4133,7 @@\n     width:calc(100% + 2 * var(--editor-toolbar-padding));\n }\n \n-.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker .dropdown button{\n+:is(:is(:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker) .dropdown) button{\n     width:100%;\n     height:auto;\n     border:none;\n@@ -2407,19 +4144,19 @@\n     background:none;\n }\n \n-.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker .dropdown button:is(:active, :focus-visible){\n+:is(:is(:is(:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker) .dropdown) button):is(:active,:focus-visible){\n     outline:none;\n }\n \n-.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker .dropdown button > .swatch{\n+:is(:is(:is(:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker) .dropdown) button)  > .swatch{\n     outline-offset:2px;\n }\n \n-.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker .dropdown button[aria-selected=\"true\"] > .swatch{\n+[aria-selected=\"true\"]:is(:is(:is(:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker) .dropdown) button) > .swatch{\n     outline:2px solid var(--selected-outline-color);\n }\n \n-.annotationEditorLayer .highlightEditor .editToolbar .buttons .colorPicker .dropdown button:is(:hover, :active, :focus-visible) > .swatch{\n+:is(:is(:is(:is(:is(:is(.annotationEditorLayer .highlightEditor) .editToolbar) .buttons) .colorPicker) .dropdown) button):is(:hover,:active,:focus-visible) > .swatch{\n     outline:2px solid var(--hover-outline-color);\n }\n \n@@ -2428,19 +4165,9 @@\n }\n \n #highlightParamsToolbarContainer{\n-    height:auto;\n-    padding-inline:10px;\n-    padding-block:10px 16px;\n     gap:16px;\n-    display:flex;\n-    flex-direction:column;\n-    box-sizing:border-box;\n-}\n-\n-#highlightParamsToolbarContainer .editorParamsLabel{\n-    width:-moz-fit-content;\n-    width:fit-content;\n-    inset-inline-start:0;\n+    padding-inline:10px;\n+    padding-block-end:12px;\n }\n \n #highlightParamsToolbarContainer .colorPicker{\n@@ -2449,7 +4176,7 @@\n     gap:8px;\n }\n \n-#highlightParamsToolbarContainer .colorPicker .dropdown{\n+:is(#highlightParamsToolbarContainer .colorPicker) .dropdown{\n     display:flex;\n     justify-content:space-between;\n     align-items:center;\n@@ -2457,7 +4184,7 @@\n     height:auto;\n }\n \n-#highlightParamsToolbarContainer .colorPicker .dropdown button{\n+:is(:is(#highlightParamsToolbarContainer .colorPicker) .dropdown) button{\n     width:auto;\n     height:auto;\n     border:none;\n@@ -2467,22 +4194,23 @@\n     align-items:center;\n     background:none;\n     flex:0 0 auto;\n+    padding:0;\n }\n \n-#highlightParamsToolbarContainer .colorPicker .dropdown button .swatch{\n+:is(:is(:is(#highlightParamsToolbarContainer .colorPicker) .dropdown) button) .swatch{\n     width:24px;\n     height:24px;\n }\n \n-#highlightParamsToolbarContainer .colorPicker .dropdown button:is(:active, :focus-visible){\n+:is(:is(:is(#highlightParamsToolbarContainer .colorPicker) .dropdown) button):is(:active,:focus-visible){\n     outline:none;\n }\n \n-#highlightParamsToolbarContainer .colorPicker .dropdown button[aria-selected=\"true\"] > .swatch{\n+[aria-selected=\"true\"]:is(:is(:is(#highlightParamsToolbarContainer .colorPicker) .dropdown) button) > .swatch{\n     outline:2px solid var(--selected-outline-color);\n }\n \n-#highlightParamsToolbarContainer .colorPicker .dropdown button:is(:hover, :active, :focus-visible) > .swatch{\n+:is(:is(:is(#highlightParamsToolbarContainer .colorPicker) .dropdown) button):is(:hover,:active,:focus-visible) > .swatch{\n     outline:2px solid var(--hover-outline-color);\n }\n \n@@ -2494,45 +4222,51 @@\n     align-self:stretch;\n }\n \n-#highlightParamsToolbarContainer #editorHighlightThickness .editorParamsLabel{\n-    width:100%;\n+:is(#highlightParamsToolbarContainer #editorHighlightThickness) .editorParamsLabel{\n     height:auto;\n     align-self:stretch;\n }\n \n-#highlightParamsToolbarContainer #editorHighlightThickness .thicknessPicker{\n+:is(#highlightParamsToolbarContainer #editorHighlightThickness) .thicknessPicker{\n     display:flex;\n     justify-content:space-between;\n     align-items:center;\n     align-self:stretch;\n \n-    --example-color:#bfbfc9;\n+    --csstools-light-dark-toggle--91:var(--csstools-color-scheme--light) #80808e;\n+\n+    --example-color:var(--csstools-light-dark-toggle--91, #bfbfc9);\n }\n \n-@media (prefers-color-scheme: dark){\n+@supports (color: light-dark(red, red)){\n+    :is(#highlightParamsToolbarContainer #editorHighlightThickness) .thicknessPicker{\n \n-    :where(html:not(.is-light)) #highlightParamsToolbarContainer #editorHighlightThickness .thicknessPicker{\n-        --example-color:#80808e;\n+        --example-color:light-dark(#bfbfc9, #80808e);\n     }\n }\n \n-:where(html.is-dark) #highlightParamsToolbarContainer #editorHighlightThickness .thicknessPicker{\n-    --example-color:#80808e;\n+@supports not (color: light-dark(tan, tan)){\n+\n+    :is(:is(#highlightParamsToolbarContainer #editorHighlightThickness) .thicknessPicker) *{\n+\n+        --csstools-light-dark-toggle--91:var(--csstools-color-scheme--light) #80808e;\n+\n+        --example-color:var(--csstools-light-dark-toggle--91, #bfbfc9);\n+    }\n }\n \n @media screen and (forced-colors: active){\n \n-    #highlightParamsToolbarContainer #editorHighlightThickness .thicknessPicker{\n+    :is(#highlightParamsToolbarContainer #editorHighlightThickness) .thicknessPicker{\n         --example-color:CanvasText;\n     }\n }\n \n-:is(#highlightParamsToolbarContainer #editorHighlightThickness .thicknessPicker > .editorParamsSlider[disabled]){\n+:is(:is(:is(#highlightParamsToolbarContainer #editorHighlightThickness) .thicknessPicker) > .editorParamsSlider[disabled]){\n     opacity:0.4;\n }\n \n-#highlightParamsToolbarContainer #editorHighlightThickness .thicknessPicker::before,\n-#highlightParamsToolbarContainer #editorHighlightThickness .thicknessPicker::after{\n+:is(:is(#highlightParamsToolbarContainer #editorHighlightThickness) .thicknessPicker)::before,:is(:is(#highlightParamsToolbarContainer #editorHighlightThickness) .thicknessPicker)::after{\n     content:\"\";\n     width:8px;\n     aspect-ratio:1;\n@@ -2541,11 +4275,11 @@\n     background-color:var(--example-color);\n }\n \n-#highlightParamsToolbarContainer #editorHighlightThickness .thicknessPicker::after{\n+:is(:is(#highlightParamsToolbarContainer #editorHighlightThickness) .thicknessPicker)::after{\n     width:24px;\n }\n \n-#highlightParamsToolbarContainer #editorHighlightThickness .thicknessPicker .editorParamsSlider{\n+:is(:is(#highlightParamsToolbarContainer #editorHighlightThickness) .thicknessPicker) .editorParamsSlider{\n     width:unset;\n     height:14px;\n }\n@@ -2558,55 +4292,145 @@\n     align-self:stretch;\n }\n \n-#highlightParamsToolbarContainer #editorHighlightVisibility .divider{\n-    --divider-color:#d7d7db;\n-\n-    margin-block:4px;\n-    width:100%;\n-    height:1px;\n-    background-color:var(--divider-color);\n+:is(#highlightParamsToolbarContainer #editorHighlightVisibility) .divider{\n+    --csstools-light-dark-toggle--92:var(--csstools-color-scheme--light) #8f8f9d;\n+    --divider-color:var(--csstools-light-dark-toggle--92, #d7d7db);\n }\n \n-@media (prefers-color-scheme: dark){\n-\n-    :where(html:not(.is-light)) #highlightParamsToolbarContainer #editorHighlightVisibility .divider{\n-        --divider-color:#8f8f9d;\n+@supports (color: light-dark(red, red)){\n+    :is(#highlightParamsToolbarContainer #editorHighlightVisibility) .divider{\n+        --divider-color:light-dark(#d7d7db, #8f8f9d);\n     }\n }\n \n-:where(html.is-dark) #highlightParamsToolbarContainer #editorHighlightVisibility .divider{\n-    --divider-color:#8f8f9d;\n+@supports not (color: light-dark(tan, tan)){\n+\n+    :is(:is(#highlightParamsToolbarContainer #editorHighlightVisibility) .divider) *{\n+        --csstools-light-dark-toggle--92:var(--csstools-color-scheme--light) #8f8f9d;\n+        --divider-color:var(--csstools-light-dark-toggle--92, #d7d7db);\n+    }\n }\n \n @media screen and (forced-colors: active){\n \n-    #highlightParamsToolbarContainer #editorHighlightVisibility .divider{\n+    :is(#highlightParamsToolbarContainer #editorHighlightVisibility) .divider{\n         --divider-color:CanvasText;\n     }\n }\n \n-#highlightParamsToolbarContainer #editorHighlightVisibility .toggler{\n+:is(#highlightParamsToolbarContainer #editorHighlightVisibility) .divider{\n+\n+    margin-block:4px;\n+    width:100%;\n+    height:1px;\n+    background-color:var(--divider-color);\n+}\n+\n+:is(#highlightParamsToolbarContainer #editorHighlightVisibility) .toggler{\n     display:flex;\n     justify-content:space-between;\n     align-items:center;\n     align-self:stretch;\n }\n \n+#altTextSettingsDialog{\n+    padding:16px;\n+}\n+\n+#altTextSettingsDialog #altTextSettingsContainer{\n+    display:flex;\n+    width:573px;\n+    flex-direction:column;\n+    gap:16px;\n+}\n+\n+:is(#altTextSettingsDialog #altTextSettingsContainer) .mainContainer{\n+    gap:16px;\n+}\n+\n+:is(#altTextSettingsDialog #altTextSettingsContainer) .description{\n+    color:var(--text-secondary-color);\n+}\n+\n+:is(#altTextSettingsDialog #altTextSettingsContainer) #aiModelSettings{\n+    display:flex;\n+    flex-direction:column;\n+    gap:12px;\n+}\n+\n+:is(:is(#altTextSettingsDialog #altTextSettingsContainer) #aiModelSettings) button{\n+    width:-moz-fit-content;\n+    width:fit-content;\n+}\n+\n+.download:is(:is(#altTextSettingsDialog #altTextSettingsContainer) #aiModelSettings) #deleteModelButton{\n+    display:none;\n+}\n+\n+:is(:is(#altTextSettingsDialog #altTextSettingsContainer) #aiModelSettings):not(.download) #downloadModelButton{\n+    display:none;\n+}\n+\n+:is(#altTextSettingsDialog #altTextSettingsContainer) #automaticAltText,:is(#altTextSettingsDialog #altTextSettingsContainer) #altTextEditor{\n+    display:flex;\n+    flex-direction:column;\n+    gap:8px;\n+}\n+\n+:is(#altTextSettingsDialog #altTextSettingsContainer) #createModelDescription,:is(#altTextSettingsDialog #altTextSettingsContainer) #aiModelSettings,:is(#altTextSettingsDialog #altTextSettingsContainer) #showAltTextDialogDescription{\n+    padding-inline-start:40px;\n+}\n+\n+:is(#altTextSettingsDialog #altTextSettingsContainer) #automaticSettings{\n+    display:flex;\n+    flex-direction:column;\n+    gap:16px;\n+}\n+\n :root{\n+    --csstools-color-scheme--light:initial;\n+    color-scheme:light dark;\n+\n     --viewer-container-height:0;\n     --pdfViewer-padding-bottom:0;\n     --page-margin:1px auto -8px;\n     --page-border:9px solid transparent;\n     --spreadHorizontalWrapped-margin-LR:-3.5px;\n     --loading-icon-delay:400ms;\n+    --csstools-light-dark-toggle--93:var(--csstools-color-scheme--light) #0df;\n+    --focus-ring-color:var(--csstools-light-dark-toggle--93, #0060df);\n+    --focus-ring-outline:2px solid var(--focus-ring-color);\n+}\n+\n+@supports (color: light-dark(red, red)){\n+    :root{\n+        --focus-ring-color:light-dark(#0060df, #0df);\n+    }\n+}\n+\n+@supports not (color: light-dark(tan, tan)){\n+\n+    :root *{\n+        --csstools-light-dark-toggle--93:var(--csstools-color-scheme--light) #0df;\n+        --focus-ring-color:var(--csstools-light-dark-toggle--93, #0060df);\n+    }\n+}\n+\n+@media (prefers-color-scheme: dark){\n+\n+    :root{\n+        --csstools-color-scheme--light:;\n+    }\n }\n \n @media screen and (forced-colors: active){\n+\n     :root{\n         --pdfViewer-padding-bottom:9px;\n         --page-margin:8px auto -1px;\n         --page-border:1px solid CanvasText;\n         --spreadHorizontalWrapped-margin-LR:3.5px;\n+        --focus-ring-color:CanvasText;\n     }\n }\n \n@@ -2632,6 +4456,7 @@\n \n .pdfViewer{\n     --scale-factor:1;\n+    --page-bg-color:unset;\n \n     padding-bottom:var(--pdfViewer-padding-bottom);\n \n@@ -2646,31 +4471,37 @@\n     }\n }\n \n+.pdfViewer.copyAll{\n+    cursor:wait;\n+}\n+\n .pdfViewer .canvasWrapper{\n     overflow:hidden;\n     width:100%;\n     height:100%;\n }\n \n-.pdfViewer .canvasWrapper canvas{\n+:is(.pdfViewer .canvasWrapper) canvas{\n+    position:absolute;\n+    top:0;\n+    left:0;\n     margin:0;\n     display:block;\n-}\n-\n-.pdfViewer .canvasWrapper canvas[hidden]{\n-    display:none;\n-}\n-\n-.pdfViewer .canvasWrapper canvas[zooming]{\n     width:100%;\n     height:100%;\n+    contain:content;\n }\n \n-.pdfViewer .canvasWrapper canvas .structTree{\n+:is(:is(.pdfViewer .canvasWrapper) canvas) .structTree{\n     contain:strict;\n }\n \n .pdfViewer .page{\n+    --user-unit:1;\n+    --total-scale-factor:calc(var(--scale-factor) * var(--user-unit));\n+    --scale-round-x:1px;\n+    --scale-round-y:1px;\n+\n     direction:ltr;\n     width:816px;\n     height:1056px;\n@@ -2679,7 +4510,7 @@\n     overflow:visible;\n     border:var(--page-border);\n     background-clip:content-box;\n-    background-color:rgb(255 255 255);\n+    background-color:var(--page-bg-color, rgb(255 255 255));\n }\n \n .pdfViewer .dummyPage{\n@@ -2777,54 +4608,91 @@\n     --sidebar-transition-duration:200ms;\n     --sidebar-transition-timing-function:ease;\n \n+    --toolbar-height:32px;\n+    --toolbar-horizontal-padding:1px;\n+    --toolbar-vertical-padding:2px;\n+    --icon-size:16px;\n+\n     --toolbar-icon-opacity:0.7;\n     --doorhanger-icon-opacity:0.9;\n-    --editor-toolbar-base-offset:105px;\n+    --doorhanger-height:8px;\n \n-    --main-color:rgb(12 12 13);\n-    --body-bg-color:rgb(212 212 215);\n-    --progressBar-color:rgb(10 132 255);\n-    --progressBar-bg-color:rgb(221 221 222);\n-    --progressBar-blend-color:rgb(116 177 239);\n-    --scrollbar-color:auto;\n-    --scrollbar-bg-color:auto;\n-    --toolbar-icon-bg-color:rgb(0 0 0);\n-    --toolbar-icon-hover-bg-color:rgb(0 0 0);\n-\n-    --sidebar-narrow-bg-color:rgb(212 212 215 \u002F 0.9);\n-    --sidebar-toolbar-bg-color:rgb(245 246 247);\n-    --toolbar-bg-color:rgb(249 249 250);\n-    --toolbar-border-color:rgb(184 184 184);\n+    --csstools-light-dark-toggle--0:var(--csstools-color-scheme--light) rgb(249 249 250);\n+\n+    --main-color:var(--csstools-light-dark-toggle--0, rgb(12 12 13));\n+    --csstools-light-dark-toggle--1:var(--csstools-color-scheme--light) rgb(42 42 46);\n+    --body-bg-color:var(--csstools-light-dark-toggle--1, rgb(212 212 215));\n+    --csstools-light-dark-toggle--2:var(--csstools-color-scheme--light) rgb(0 96 223);\n+    --progressBar-color:var(--csstools-light-dark-toggle--2, rgb(10 132 255));\n+    --csstools-light-dark-toggle--3:var(--csstools-color-scheme--light) rgb(40 40 43);\n+    --progressBar-bg-color:var(--csstools-light-dark-toggle--3, rgb(221 221 222));\n+    --csstools-light-dark-toggle--4:var(--csstools-color-scheme--light) rgb(20 68 133);\n+    --progressBar-blend-color:var(--csstools-light-dark-toggle--4, rgb(116 177 239));\n+    --csstools-light-dark-toggle--5:var(--csstools-color-scheme--light) rgb(121 121 123);\n+    --scrollbar-color:var(--csstools-light-dark-toggle--5, auto);\n+    --csstools-light-dark-toggle--6:var(--csstools-color-scheme--light) rgb(35 35 39);\n+    --scrollbar-bg-color:var(--csstools-light-dark-toggle--6, auto);\n+    --csstools-light-dark-toggle--7:var(--csstools-color-scheme--light) rgb(255 255 255);\n+    --toolbar-icon-bg-color:var(--csstools-light-dark-toggle--7, rgb(0 0 0));\n+    --csstools-light-dark-toggle--8:var(--csstools-color-scheme--light) rgb(255 255 255);\n+    --toolbar-icon-hover-bg-color:var(--csstools-light-dark-toggle--8, rgb(0 0 0));\n+\n+    --csstools-light-dark-toggle--9:var(--csstools-color-scheme--light) rgb(42 42 46 \u002F 0.9);\n+\n+    --sidebar-narrow-bg-color:var(--csstools-light-dark-toggle--9, rgb(212 212 215 \u002F 0.9));\n+    --csstools-light-dark-toggle--10:var(--csstools-color-scheme--light) rgb(50 50 52);\n+    --sidebar-toolbar-bg-color:var(--csstools-light-dark-toggle--10, rgb(245 246 247));\n+    --csstools-light-dark-toggle--11:var(--csstools-color-scheme--light) rgb(56 56 61);\n+    --toolbar-bg-color:var(--csstools-light-dark-toggle--11, rgb(249 249 250));\n+    --csstools-light-dark-toggle--12:var(--csstools-color-scheme--light) rgb(12 12 13);\n+    --toolbar-border-color:var(--csstools-light-dark-toggle--12, rgb(184 184 184));\n     --toolbar-box-shadow:0 1px 0 var(--toolbar-border-color);\n     --toolbar-border-bottom:none;\n     --toolbarSidebar-box-shadow:inset calc(-1px * var(--dir-factor)) 0 0 rgb(0 0 0 \u002F 0.25), 0 1px 0 rgb(0 0 0 \u002F 0.15), 0 0 1px rgb(0 0 0 \u002F 0.1);\n     --toolbarSidebar-border-bottom:none;\n-    --button-hover-color:rgb(221 222 223);\n-    --toggled-btn-color:rgb(0 0 0);\n+    --button-hover-color:color-mix(in srgb, currentColor 17%, transparent);\n+    --csstools-light-dark-toggle--13:var(--csstools-color-scheme--light) rgb(255 255 255);\n+    --toggled-btn-color:var(--csstools-light-dark-toggle--13, rgb(0 0 0));\n     --toggled-btn-bg-color:rgb(0 0 0 \u002F 0.3);\n     --toggled-hover-active-btn-color:rgb(0 0 0 \u002F 0.4);\n     --toggled-hover-btn-outline:none;\n-    --dropdown-btn-bg-color:rgb(215 215 219);\n+    --csstools-light-dark-toggle--14:var(--csstools-color-scheme--light) rgb(74 74 79);\n+    --dropdown-btn-bg-color:var(--csstools-light-dark-toggle--14, rgb(215 215 219));\n     --dropdown-btn-border:none;\n     --separator-color:rgb(0 0 0 \u002F 0.3);\n-    --field-color:rgb(6 6 6);\n-    --field-bg-color:rgb(255 255 255);\n-    --field-border-color:rgb(187 187 188);\n-    --treeitem-color:rgb(0 0 0 \u002F 0.8);\n-    --treeitem-bg-color:rgb(0 0 0 \u002F 0.15);\n-    --treeitem-hover-color:rgb(0 0 0 \u002F 0.9);\n-    --treeitem-selected-color:rgb(0 0 0 \u002F 0.9);\n-    --treeitem-selected-bg-color:rgb(0 0 0 \u002F 0.25);\n-    --thumbnail-hover-color:rgb(0 0 0 \u002F 0.1);\n-    --thumbnail-selected-color:rgb(0 0 0 \u002F 0.2);\n-    --doorhanger-bg-color:rgb(255 255 255);\n-    --doorhanger-border-color:rgb(12 12 13 \u002F 0.2);\n-    --doorhanger-hover-color:rgb(12 12 13);\n-    --doorhanger-hover-bg-color:rgb(237 237 237);\n-    --doorhanger-separator-color:rgb(222 222 222);\n+    --csstools-light-dark-toggle--15:var(--csstools-color-scheme--light) rgb(250 250 250);\n+    --field-color:var(--csstools-light-dark-toggle--15, rgb(6 6 6));\n+    --csstools-light-dark-toggle--16:var(--csstools-color-scheme--light) rgb(64 64 68);\n+    --field-bg-color:var(--csstools-light-dark-toggle--16, rgb(255 255 255));\n+    --csstools-light-dark-toggle--17:var(--csstools-color-scheme--light) rgb(115 115 115);\n+    --field-border-color:var(--csstools-light-dark-toggle--17, rgb(187 187 188));\n+    --csstools-light-dark-toggle--18:var(--csstools-color-scheme--light) rgb(255 255 255 \u002F 0.8);\n+    --treeitem-color:var(--csstools-light-dark-toggle--18, rgb(0 0 0 \u002F 0.8));\n+    --csstools-light-dark-toggle--19:var(--csstools-color-scheme--light) rgb(255 255 255 \u002F 0.15);\n+    --treeitem-bg-color:var(--csstools-light-dark-toggle--19, rgb(0 0 0 \u002F 0.15));\n+    --csstools-light-dark-toggle--20:var(--csstools-color-scheme--light) rgb(255 255 255 \u002F 0.9);\n+    --treeitem-hover-color:var(--csstools-light-dark-toggle--20, rgb(0 0 0 \u002F 0.9));\n+    --csstools-light-dark-toggle--21:var(--csstools-color-scheme--light) rgb(255 255 255 \u002F 0.9);\n+    --treeitem-selected-color:var(--csstools-light-dark-toggle--21, rgb(0 0 0 \u002F 0.9));\n+    --csstools-light-dark-toggle--22:var(--csstools-color-scheme--light) rgb(255 255 255 \u002F 0.25);\n+    --treeitem-selected-bg-color:var(--csstools-light-dark-toggle--22, rgb(0 0 0 \u002F 0.25));\n+    --csstools-light-dark-toggle--23:var(--csstools-color-scheme--light) rgb(255 255 255 \u002F 0.1);\n+    --thumbnail-hover-color:var(--csstools-light-dark-toggle--23, rgb(0 0 0 \u002F 0.1));\n+    --csstools-light-dark-toggle--24:var(--csstools-color-scheme--light) rgb(255 255 255 \u002F 0.2);\n+    --thumbnail-selected-color:var(--csstools-light-dark-toggle--24, rgb(0 0 0 \u002F 0.2));\n+    --csstools-light-dark-toggle--25:var(--csstools-color-scheme--light) #42414d;\n+    --doorhanger-bg-color:var(--csstools-light-dark-toggle--25, rgb(255 255 255));\n+    --csstools-light-dark-toggle--26:var(--csstools-color-scheme--light) rgb(39 39 43);\n+    --doorhanger-border-color:var(--csstools-light-dark-toggle--26, rgb(12 12 13 \u002F 0.2));\n+    --csstools-light-dark-toggle--27:var(--csstools-color-scheme--light) rgb(249 249 250);\n+    --doorhanger-hover-color:var(--csstools-light-dark-toggle--27, rgb(12 12 13));\n+    --csstools-light-dark-toggle--28:var(--csstools-color-scheme--light) rgb(92 92 97);\n+    --doorhanger-separator-color:var(--csstools-light-dark-toggle--28, rgb(222 222 222));\n     --dialog-button-border:none;\n-    --dialog-button-bg-color:rgb(12 12 13 \u002F 0.1);\n-    --dialog-button-hover-bg-color:rgb(12 12 13 \u002F 0.3);\n+    --csstools-light-dark-toggle--29:var(--csstools-color-scheme--light) rgb(92 92 97);\n+    --dialog-button-bg-color:var(--csstools-light-dark-toggle--29, rgb(12 12 13 \u002F 0.1));\n+    --csstools-light-dark-toggle--30:var(--csstools-color-scheme--light) rgb(115 115 115);\n+    --dialog-button-hover-bg-color:var(--csstools-light-dark-toggle--30, rgb(12 12 13 \u002F 0.3));\n \n     --loading-icon:url(images\u002Floading.svg);\n     --treeitem-expanded-icon:url(images\u002Ftreeitem-expanded.svg);\n@@ -2833,6 +4701,7 @@\n     --toolbarButton-editorHighlight-icon:url(images\u002FtoolbarButton-editorHighlight.svg);\n     --toolbarButton-editorInk-icon:url(images\u002FtoolbarButton-editorInk.svg);\n     --toolbarButton-editorStamp-icon:url(images\u002FtoolbarButton-editorStamp.svg);\n+    --toolbarButton-editorSignature-icon:url(images\u002FtoolbarButton-editorSignature.svg);\n     --toolbarButton-menuArrow-icon:url(images\u002FtoolbarButton-menuArrow.svg);\n     --toolbarButton-sidebarToggle-icon:url(images\u002FtoolbarButton-sidebarToggle.svg);\n     --toolbarButton-secondaryToolbarToggle-icon:url(images\u002FtoolbarButton-secondaryToolbarToggle.svg);\n@@ -2866,100 +4735,147 @@\n     --secondaryToolbarButton-spreadNone-icon:url(images\u002FsecondaryToolbarButton-spreadNone.svg);\n     --secondaryToolbarButton-spreadOdd-icon:url(images\u002FsecondaryToolbarButton-spreadOdd.svg);\n     --secondaryToolbarButton-spreadEven-icon:url(images\u002FsecondaryToolbarButton-spreadEven.svg);\n+    --secondaryToolbarButton-imageAltTextSettings-icon:var(\n+        --toolbarButton-editorStamp-icon\n+        );\n     --secondaryToolbarButton-documentProperties-icon:url(images\u002FsecondaryToolbarButton-documentProperties.svg);\n     --editorParams-stampAddImage-icon:url(images\u002FtoolbarButton-zoomIn.svg);\n }\n \n+@supports (color: light-dark(red, red)) and (color: rgb(0 0 0 \u002F 0)){\n+    :root{\n+\n+        --main-color:light-dark(rgb(12 12 13), rgb(249 249 250));\n+        --body-bg-color:light-dark(rgb(212 212 215), rgb(42 42 46));\n+        --progressBar-color:light-dark(rgb(10 132 255), rgb(0 96 223));\n+        --progressBar-bg-color:light-dark(rgb(221 221 222), rgb(40 40 43));\n+        --progressBar-blend-color:light-dark(rgb(116 177 239), rgb(20 68 133));\n+        --scrollbar-color:light-dark(auto, rgb(121 121 123));\n+        --scrollbar-bg-color:light-dark(auto, rgb(35 35 39));\n+        --toolbar-icon-bg-color:light-dark(rgb(0 0 0), rgb(255 255 255));\n+        --toolbar-icon-hover-bg-color:light-dark(rgb(0 0 0), rgb(255 255 255));\n+\n+        --sidebar-narrow-bg-color:light-dark(\n+            rgb(212 212 215 \u002F 0.9),\n+            rgb(42 42 46 \u002F 0.9)\n+            );\n+        --sidebar-toolbar-bg-color:light-dark(rgb(245 246 247), rgb(50 50 52));\n+        --toolbar-bg-color:light-dark(rgb(249 249 250), rgb(56 56 61));\n+        --toolbar-border-color:light-dark(rgb(184 184 184), rgb(12 12 13));\n+        --toggled-btn-color:light-dark(rgb(0 0 0), rgb(255 255 255));\n+        --dropdown-btn-bg-color:light-dark(rgb(215 215 219), rgb(74 74 79));\n+        --field-color:light-dark(rgb(6 6 6), rgb(250 250 250));\n+        --field-bg-color:light-dark(rgb(255 255 255), rgb(64 64 68));\n+        --field-border-color:light-dark(rgb(187 187 188), rgb(115 115 115));\n+        --treeitem-color:light-dark(rgb(0 0 0 \u002F 0.8), rgb(255 255 255 \u002F 0.8));\n+        --treeitem-bg-color:light-dark(rgb(0 0 0 \u002F 0.15), rgb(255 255 255 \u002F 0.15));\n+        --treeitem-hover-color:light-dark(rgb(0 0 0 \u002F 0.9), rgb(255 255 255 \u002F 0.9));\n+        --treeitem-selected-color:light-dark(\n+            rgb(0 0 0 \u002F 0.9),\n+            rgb(255 255 255 \u002F 0.9)\n+            );\n+        --treeitem-selected-bg-color:light-dark(\n+            rgb(0 0 0 \u002F 0.25),\n+            rgb(255 255 255 \u002F 0.25)\n+            );\n+        --thumbnail-hover-color:light-dark(rgb(0 0 0 \u002F 0.1), rgb(255 255 255 \u002F 0.1));\n+        --thumbnail-selected-color:light-dark(\n+            rgb(0 0 0 \u002F 0.2),\n+            rgb(255 255 255 \u002F 0.2)\n+            );\n+        --doorhanger-bg-color:light-dark(rgb(255 255 255), #42414d);\n+        --doorhanger-border-color:light-dark(rgb(12 12 13 \u002F 0.2), rgb(39 39 43));\n+        --doorhanger-hover-color:light-dark(rgb(12 12 13), rgb(249 249 250));\n+        --doorhanger-separator-color:light-dark(rgb(222 222 222), rgb(92 92 97));\n+        --dialog-button-bg-color:light-dark(rgb(12 12 13 \u002F 0.1), rgb(92 92 97));\n+        --dialog-button-hover-bg-color:light-dark(\n+            rgb(12 12 13 \u002F 0.3),\n+            rgb(115 115 115)\n+            );\n+    }\n+}\n+\n+@supports not (color: light-dark(tan, tan)){\n+\n+    :root *{\n+\n+        --csstools-light-dark-toggle--0:var(--csstools-color-scheme--light) rgb(249 249 250);\n+\n+        --main-color:var(--csstools-light-dark-toggle--0, rgb(12 12 13));\n+        --csstools-light-dark-toggle--1:var(--csstools-color-scheme--light) rgb(42 42 46);\n+        --body-bg-color:var(--csstools-light-dark-toggle--1, rgb(212 212 215));\n+        --csstools-light-dark-toggle--2:var(--csstools-color-scheme--light) rgb(0 96 223);\n+        --progressBar-color:var(--csstools-light-dark-toggle--2, rgb(10 132 255));\n+        --csstools-light-dark-toggle--3:var(--csstools-color-scheme--light) rgb(40 40 43);\n+        --progressBar-bg-color:var(--csstools-light-dark-toggle--3, rgb(221 221 222));\n+        --csstools-light-dark-toggle--4:var(--csstools-color-scheme--light) rgb(20 68 133);\n+        --progressBar-blend-color:var(--csstools-light-dark-toggle--4, rgb(116 177 239));\n+        --csstools-light-dark-toggle--5:var(--csstools-color-scheme--light) rgb(121 121 123);\n+        --scrollbar-color:var(--csstools-light-dark-toggle--5, auto);\n+        --csstools-light-dark-toggle--6:var(--csstools-color-scheme--light) rgb(35 35 39);\n+        --scrollbar-bg-color:var(--csstools-light-dark-toggle--6, auto);\n+        --csstools-light-dark-toggle--7:var(--csstools-color-scheme--light) rgb(255 255 255);\n+        --toolbar-icon-bg-color:var(--csstools-light-dark-toggle--7, rgb(0 0 0));\n+        --csstools-light-dark-toggle--8:var(--csstools-color-scheme--light) rgb(255 255 255);\n+        --toolbar-icon-hover-bg-color:var(--csstools-light-dark-toggle--8, rgb(0 0 0));\n+\n+        --csstools-light-dark-toggle--9:var(--csstools-color-scheme--light) rgb(42 42 46 \u002F 0.9);\n+\n+        --sidebar-narrow-bg-color:var(--csstools-light-dark-toggle--9, rgb(212 212 215 \u002F 0.9));\n+        --csstools-light-dark-toggle--10:var(--csstools-color-scheme--light) rgb(50 50 52);\n+        --sidebar-toolbar-bg-color:var(--csstools-light-dark-toggle--10, rgb(245 246 247));\n+        --csstools-light-dark-toggle--11:var(--csstools-color-scheme--light) rgb(56 56 61);\n+        --toolbar-bg-color:var(--csstools-light-dark-toggle--11, rgb(249 249 250));\n+        --csstools-light-dark-toggle--12:var(--csstools-color-scheme--light) rgb(12 12 13);\n+        --toolbar-border-color:var(--csstools-light-dark-toggle--12, rgb(184 184 184));\n+        --csstools-light-dark-toggle--13:var(--csstools-color-scheme--light) rgb(255 255 255);\n+        --toggled-btn-color:var(--csstools-light-dark-toggle--13, rgb(0 0 0));\n+        --csstools-light-dark-toggle--14:var(--csstools-color-scheme--light) rgb(74 74 79);\n+        --dropdown-btn-bg-color:var(--csstools-light-dark-toggle--14, rgb(215 215 219));\n+        --csstools-light-dark-toggle--15:var(--csstools-color-scheme--light) rgb(250 250 250);\n+        --field-color:var(--csstools-light-dark-toggle--15, rgb(6 6 6));\n+        --csstools-light-dark-toggle--16:var(--csstools-color-scheme--light) rgb(64 64 68);\n+        --field-bg-color:var(--csstools-light-dark-toggle--16, rgb(255 255 255));\n+        --csstools-light-dark-toggle--17:var(--csstools-color-scheme--light) rgb(115 115 115);\n+        --field-border-color:var(--csstools-light-dark-toggle--17, rgb(187 187 188));\n+        --csstools-light-dark-toggle--18:var(--csstools-color-scheme--light) rgb(255 255 255 \u002F 0.8);\n+        --treeitem-color:var(--csstools-light-dark-toggle--18, rgb(0 0 0 \u002F 0.8));\n+        --csstools-light-dark-toggle--19:var(--csstools-color-scheme--light) rgb(255 255 255 \u002F 0.15);\n+        --treeitem-bg-color:var(--csstools-light-dark-toggle--19, rgb(0 0 0 \u002F 0.15));\n+        --csstools-light-dark-toggle--20:var(--csstools-color-scheme--light) rgb(255 255 255 \u002F 0.9);\n+        --treeitem-hover-color:var(--csstools-light-dark-toggle--20, rgb(0 0 0 \u002F 0.9));\n+        --csstools-light-dark-toggle--21:var(--csstools-color-scheme--light) rgb(255 255 255 \u002F 0.9);\n+        --treeitem-selected-color:var(--csstools-light-dark-toggle--21, rgb(0 0 0 \u002F 0.9));\n+        --csstools-light-dark-toggle--22:var(--csstools-color-scheme--light) rgb(255 255 255 \u002F 0.25);\n+        --treeitem-selected-bg-color:var(--csstools-light-dark-toggle--22, rgb(0 0 0 \u002F 0.25));\n+        --csstools-light-dark-toggle--23:var(--csstools-color-scheme--light) rgb(255 255 255 \u002F 0.1);\n+        --thumbnail-hover-color:var(--csstools-light-dark-toggle--23, rgb(0 0 0 \u002F 0.1));\n+        --csstools-light-dark-toggle--24:var(--csstools-color-scheme--light) rgb(255 255 255 \u002F 0.2);\n+        --thumbnail-selected-color:var(--csstools-light-dark-toggle--24, rgb(0 0 0 \u002F 0.2));\n+        --csstools-light-dark-toggle--25:var(--csstools-color-scheme--light) #42414d;\n+        --doorhanger-bg-color:var(--csstools-light-dark-toggle--25, rgb(255 255 255));\n+        --csstools-light-dark-toggle--26:var(--csstools-color-scheme--light) rgb(39 39 43);\n+        --doorhanger-border-color:var(--csstools-light-dark-toggle--26, rgb(12 12 13 \u002F 0.2));\n+        --csstools-light-dark-toggle--27:var(--csstools-color-scheme--light) rgb(249 249 250);\n+        --doorhanger-hover-color:var(--csstools-light-dark-toggle--27, rgb(12 12 13));\n+        --csstools-light-dark-toggle--28:var(--csstools-color-scheme--light) rgb(92 92 97);\n+        --doorhanger-separator-color:var(--csstools-light-dark-toggle--28, rgb(222 222 222));\n+        --csstools-light-dark-toggle--29:var(--csstools-color-scheme--light) rgb(92 92 97);\n+        --dialog-button-bg-color:var(--csstools-light-dark-toggle--29, rgb(12 12 13 \u002F 0.1));\n+        --csstools-light-dark-toggle--30:var(--csstools-color-scheme--light) rgb(115 115 115);\n+        --dialog-button-hover-bg-color:var(--csstools-light-dark-toggle--30, rgb(12 12 13 \u002F 0.3));\n+    }\n+}\n+\n [dir=\"rtl\"]:root{\n     --dir-factor:-1;\n     --inline-start:right;\n     --inline-end:left;\n }\n \n-.e2pdf-dark-theme:root {\n-    --main-color:rgb(249 249 250);\n-    --body-bg-color:rgb(42 42 46);\n-    --progressBar-color:rgb(0 96 223);\n-    --progressBar-bg-color:rgb(40 40 43);\n-    --progressBar-blend-color:rgb(20 68 133);\n-    --scrollbar-color:rgb(121 121 123);\n-    --scrollbar-bg-color:rgb(35 35 39);\n-    --toolbar-icon-bg-color:rgb(255 255 255);\n-    --toolbar-icon-hover-bg-color:rgb(255 255 255);\n-\n-    --sidebar-narrow-bg-color:rgb(42 42 46 \u002F 0.9);\n-    --sidebar-toolbar-bg-color:rgb(50 50 52);\n-    --toolbar-bg-color:rgb(56 56 61);\n-    --toolbar-border-color:rgb(12 12 13);\n-    --button-hover-color:rgb(102 102 103);\n-    --toggled-btn-color:rgb(255 255 255);\n-    --toggled-btn-bg-color:rgb(0 0 0 \u002F 0.3);\n-    --toggled-hover-active-btn-color:rgb(0 0 0 \u002F 0.4);\n-    --dropdown-btn-bg-color:rgb(74 74 79);\n-    --separator-color:rgb(0 0 0 \u002F 0.3);\n-    --field-color:rgb(250 250 250);\n-    --field-bg-color:rgb(64 64 68);\n-    --field-border-color:rgb(115 115 115);\n-    --treeitem-color:rgb(255 255 255 \u002F 0.8);\n-    --treeitem-bg-color:rgb(255 255 255 \u002F 0.15);\n-    --treeitem-hover-color:rgb(255 255 255 \u002F 0.9);\n-    --treeitem-selected-color:rgb(255 255 255 \u002F 0.9);\n-    --treeitem-selected-bg-color:rgb(255 255 255 \u002F 0.25);\n-    --thumbnail-hover-color:rgb(255 255 255 \u002F 0.1);\n-    --thumbnail-selected-color:rgb(255 255 255 \u002F 0.2);\n-    --doorhanger-bg-color:rgb(74 74 79);\n-    --doorhanger-border-color:rgb(39 39 43);\n-    --doorhanger-hover-color:rgb(249 249 250);\n-    --doorhanger-hover-bg-color:rgb(93 94 98);\n-    --doorhanger-separator-color:rgb(92 92 97);\n-    --dialog-button-bg-color:rgb(92 92 97);\n-    --dialog-button-hover-bg-color:rgb(115 115 115);\n-}\n-\n-:root:where(.is-dark){\n-    --main-color:rgb(249 249 250);\n-    --body-bg-color:rgb(42 42 46);\n-    --progressBar-color:rgb(0 96 223);\n-    --progressBar-bg-color:rgb(40 40 43);\n-    --progressBar-blend-color:rgb(20 68 133);\n-    --scrollbar-color:rgb(121 121 123);\n-    --scrollbar-bg-color:rgb(35 35 39);\n-    --toolbar-icon-bg-color:rgb(255 255 255);\n-    --toolbar-icon-hover-bg-color:rgb(255 255 255);\n-\n-    --sidebar-narrow-bg-color:rgb(42 42 46 \u002F 0.9);\n-    --sidebar-toolbar-bg-color:rgb(50 50 52);\n-    --toolbar-bg-color:rgb(56 56 61);\n-    --toolbar-border-color:rgb(12 12 13);\n-    --button-hover-color:rgb(102 102 103);\n-    --toggled-btn-color:rgb(255 255 255);\n-    --toggled-btn-bg-color:rgb(0 0 0 \u002F 0.3);\n-    --toggled-hover-active-btn-color:rgb(0 0 0 \u002F 0.4);\n-    --dropdown-btn-bg-color:rgb(74 74 79);\n-    --separator-color:rgb(0 0 0 \u002F 0.3);\n-    --field-color:rgb(250 250 250);\n-    --field-bg-color:rgb(64 64 68);\n-    --field-border-color:rgb(115 115 115);\n-    --treeitem-color:rgb(255 255 255 \u002F 0.8);\n-    --treeitem-bg-color:rgb(255 255 255 \u002F 0.15);\n-    --treeitem-hover-color:rgb(255 255 255 \u002F 0.9);\n-    --treeitem-selected-color:rgb(255 255 255 \u002F 0.9);\n-    --treeitem-selected-bg-color:rgb(255 255 255 \u002F 0.25);\n-    --thumbnail-hover-color:rgb(255 255 255 \u002F 0.1);\n-    --thumbnail-selected-color:rgb(255 255 255 \u002F 0.2);\n-    --doorhanger-bg-color:rgb(74 74 79);\n-    --doorhanger-border-color:rgb(39 39 43);\n-    --doorhanger-hover-color:rgb(249 249 250);\n-    --doorhanger-hover-bg-color:rgb(93 94 98);\n-    --doorhanger-separator-color:rgb(92 92 97);\n-    --dialog-button-bg-color:rgb(92 92 97);\n-    --dialog-button-hover-bg-color:rgb(115 115 115);\n-}\n-\n @media screen and (forced-colors: active){\n     :root{\n         --button-hover-color:Highlight;\n-        --doorhanger-hover-bg-color:Highlight;\n         --toolbar-icon-opacity:1;\n         --toolbar-icon-bg-color:ButtonText;\n         --toolbar-icon-hover-bg-color:ButtonFace;\n@@ -2992,9 +4908,22 @@\n     }\n }\n \n-*{\n-    padding:0;\n-    margin:0;\n+@keyframes progressIndeterminate{\n+    0%{\n+        transform:translateX(calc(-142px * var(--dir-factor)));\n+    }\n+\n+    100%{\n+        transform:translateX(0);\n+    }\n+}\n+\n+html[data-toolbar-density=\"compact\"]{\n+    --toolbar-height:30px;\n+}\n+\n+html[data-toolbar-density=\"touch\"]{\n+    --toolbar-height:44px;\n }\n \n html,\n@@ -3004,10 +4933,20 @@\n }\n \n body{\n+    margin:0;\n     background-color:var(--body-bg-color);\n     scrollbar-color:var(--scrollbar-color) var(--scrollbar-bg-color);\n }\n \n+body.wait::before{\n+    content:\"\";\n+    position:fixed;\n+    width:100%;\n+    height:100%;\n+    z-index:100000;\n+    cursor:wait;\n+}\n+\n .hidden,\n [hidden]{\n     display:none !important;\n@@ -3042,17 +4981,18 @@\n     width:100%;\n     height:100%;\n     position:relative;\n+    margin:0;\n }\n \n #sidebarContainer{\n     position:absolute;\n-    inset-block:32px 0;\n+    inset-block:var(--toolbar-height) 0;\n     inset-inline-start:calc(-1 * var(--sidebar-width));\n     width:var(--sidebar-width);\n     visibility:hidden;\n-    z-index:100;\n+    z-index:1;\n     font:message-box;\n-    border-top:1px solid rgb(51 51 51);\n+    border-top:1px solid transparent;\n     border-inline-end:var(--doorhanger-border-color-whcm);\n     transition-property:inset-inline-start;\n     transition-duration:var(--sidebar-transition-duration);\n@@ -3062,6 +5002,7 @@\n #outerContainer:is(.sidebarMoving, .sidebarOpen) #sidebarContainer{\n     visibility:visible;\n }\n+\n #outerContainer.sidebarOpen #sidebarContainer{\n     inset-inline-start:0;\n }\n@@ -3070,10 +5011,13 @@\n     position:absolute;\n     inset:0;\n     min-width:350px;\n+    margin:0;\n+    display:flex;\n+    flex-direction:column;\n }\n \n #sidebarContent{\n-    inset-block:32px 0;\n+    inset-block:var(--toolbar-height) 0;\n     inset-inline-start:0;\n     overflow:auto;\n     position:absolute;\n@@ -3084,9 +5028,11 @@\n #viewerContainer{\n     overflow:auto;\n     position:absolute;\n-    inset:32px 0 0;\n+    inset:var(--toolbar-height) 0 0;\n     outline:none;\n+    z-index:0;\n }\n+\n #viewerContainer:not(.pdfPresentationMode){\n     transition-duration:var(--sidebar-transition-duration);\n     transition-timing-function:var(--sidebar-transition-timing-function);\n@@ -3097,119 +5043,67 @@\n     transition-property:inset-inline-start;\n }\n \n-.toolbar{\n-    position:relative;\n-    inset-inline:0;\n-    z-index:9999;\n-    cursor:default;\n-    font:message-box;\n-}\n-\n-:is(.toolbar, .editorParamsToolbar, .findbar, #sidebarContainer)\n-:is(input, button, select),\n-.secondaryToolbar :is(input, button, a, select){\n-    outline:none;\n+#sidebarContainer :is(input, button, select){\n     font:message-box;\n }\n \n-#toolbarContainer{\n-    width:100%;\n+.toolbar{\n+    z-index:2;\n }\n \n #toolbarSidebar{\n     width:100%;\n-    height:32px;\n+    height:var(--toolbar-height);\n     background-color:var(--sidebar-toolbar-bg-color);\n     box-shadow:var(--toolbarSidebar-box-shadow);\n     border-bottom:var(--toolbarSidebar-border-bottom);\n+    padding:var(--toolbar-vertical-padding) var(--toolbar-horizontal-padding);\n+    justify-content:space-between;\n }\n \n-#sidebarResizer{\n-    position:absolute;\n-    inset-block:0;\n-    inset-inline-end:-6px;\n-    width:6px;\n-    z-index:200;\n-    cursor:ew-resize;\n+#toolbarSidebar #toolbarSidebarLeft{\n+    width:auto;\n+    height:100%;\n }\n \n-#toolbarContainer,\n-.findbar,\n-.secondaryToolbar,\n-.editorParamsToolbar{\n-    position:relative;\n-    height:32px;\n-    background-color:var(--toolbar-bg-color);\n-    box-shadow:var(--toolbar-box-shadow);\n-    border-bottom:var(--toolbar-border-bottom);\n+:is(#toolbarSidebar #toolbarSidebarLeft) #viewThumbnail::before{\n+    -webkit-mask-image:var(--toolbarButton-viewThumbnail-icon);\n+    mask-image:var(--toolbarButton-viewThumbnail-icon);\n }\n \n-#toolbarViewer{\n-    height:32px;\n+:is(#toolbarSidebar #toolbarSidebarLeft) #viewOutline::before{\n+    -webkit-mask-image:var(--toolbarButton-viewOutline-icon);\n+    mask-image:var(--toolbarButton-viewOutline-icon);\n+    transform:scaleX(var(--dir-factor));\n }\n \n-#loadingBar{\n-    --progressBar-percent:0%;\n-    --progressBar-end-offset:0;\n-\n-    position:absolute;\n-    inset-inline:0 var(--progressBar-end-offset);\n-    height:4px;\n-    background-color:var(--progressBar-bg-color);\n-    border-bottom:1px solid var(--toolbar-border-color);\n-    transition-property:inset-inline-start;\n-    transition-duration:var(--sidebar-transition-duration);\n-    transition-timing-function:var(--sidebar-transition-timing-function);\n+:is(#toolbarSidebar #toolbarSidebarLeft) #viewAttachments::before{\n+    -webkit-mask-image:var(--toolbarButton-viewAttachments-icon);\n+    mask-image:var(--toolbarButton-viewAttachments-icon);\n }\n \n-#outerContainer.sidebarOpen #loadingBar{\n-    inset-inline-start:var(--sidebar-width);\n+:is(#toolbarSidebar #toolbarSidebarLeft) #viewLayers::before{\n+    -webkit-mask-image:var(--toolbarButton-viewLayers-icon);\n+    mask-image:var(--toolbarButton-viewLayers-icon);\n }\n \n-#loadingBar .progress{\n-    position:absolute;\n-    top:0;\n-    inset-inline-start:0;\n-    width:100%;\n-    transform:scaleX(var(--progressBar-percent));\n-    transform-origin:calc(50% - 50% * var(--dir-factor)) 0;\n+#toolbarSidebar #toolbarSidebarRight{\n+    width:auto;\n     height:100%;\n-    background-color:var(--progressBar-color);\n-    overflow:hidden;\n-    transition:transform 200ms;\n-}\n-\n-@keyframes progressIndeterminate{\n-    0%{\n-        transform:translateX(calc(-142px * var(--dir-factor)));\n-    }\n-    100%{\n-        transform:translateX(0);\n-    }\n+    padding-inline-end:2px;\n }\n \n-#loadingBar.indeterminate .progress{\n-    transform:none;\n-    background-color:var(--progressBar-bg-color);\n-    transition:none;\n+#sidebarResizer{\n+    position:absolute;\n+    inset-block:0;\n+    inset-inline-end:-6px;\n+    width:6px;\n+    z-index:200;\n+    cursor:ew-resize;\n }\n \n-#loadingBar.indeterminate .progress .glimmer{\n-    position:absolute;\n-    top:0;\n-    inset-inline-start:0;\n-    height:100%;\n-    width:calc(100% + 150px);\n-    background:repeating-linear-gradient(\n-        135deg,\n-        var(--progressBar-blend-color) 0,\n-        var(--progressBar-bg-color) 5px,\n-        var(--progressBar-bg-color) 45px,\n-        var(--progressBar-color) 55px,\n-        var(--progressBar-color) 95px,\n-        var(--progressBar-blend-color) 100px\n-        );\n-    animation:progressIndeterminate 1s linear infinite;\n+#outerContainer.sidebarOpen #loadingBar{\n+    inset-inline-start:var(--sidebar-width);\n }\n \n #outerContainer.sidebarResizing\n@@ -3217,271 +5111,62 @@\n     transition-duration:0s;\n }\n \n-.findbar,\n-.secondaryToolbar,\n-.editorParamsToolbar{\n-    top:32px;\n-    position:absolute;\n-    z-index:30000;\n-    height:auto;\n-    padding:0 4px;\n-    margin:4px 2px;\n-    font:message-box;\n-    font-size:12px;\n-    line-height:14px;\n-    text-align:left;\n-    cursor:default;\n-}\n-\n-.findbar{\n-    inset-inline-start:64px;\n-    min-width:300px;\n-    background-color:var(--toolbar-bg-color);\n-}\n-.findbar > div{\n-    height:32px;\n-}\n-.findbar > div#findbarInputContainer{\n-    margin-inline-end:4px;\n-}\n-.findbar.wrapContainers > div,\n-.findbar.wrapContainers > div#findbarMessageContainer > *{\n-    clear:both;\n-}\n-.findbar.wrapContainers > div#findbarMessageContainer{\n-    height:auto;\n-}\n-\n-.findbar input[type=\"checkbox\"]{\n-    pointer-events:none;\n-}\n-\n-.findbar label{\n-    -webkit-user-select:none;\n-    -moz-user-select:none;\n-    user-select:none;\n-}\n-\n-.findbar label:hover,\n-.findbar input:focus-visible + label{\n-    color:var(--toggled-btn-color);\n-    background-color:var(--button-hover-color);\n-}\n-\n-.findbar .toolbarField[type=\"checkbox\"]:checked + .toolbarLabel{\n-    background-color:var(--toggled-btn-bg-color) !important;\n-    color:var(--toggled-btn-color);\n-}\n-\n-#findInput{\n-    width:200px;\n-}\n-\n-#findInput::-moz-placeholder{\n-    font-style:normal;\n-}\n-\n-#findInput::placeholder{\n-    font-style:normal;\n-}\n-\n-.loadingInput:has(> #findInput[data-status=\"pending\"])::after{\n-    display:block;\n-    visibility:visible;\n-}\n-\n-#findInput[data-status=\"notFound\"]{\n-    background-color:rgb(255 102 102);\n-}\n-\n-.secondaryToolbar,\n-.editorParamsToolbar{\n-    padding:6px 0 10px;\n-    inset-inline-end:4px;\n-    height:auto;\n-    background-color:var(--doorhanger-bg-color);\n-}\n-\n-.editorParamsToolbarContainer{\n-    width:220px;\n-    margin-bottom:-4px;\n-}\n-\n-.editorParamsToolbarContainer > .editorParamsSetter{\n-    min-height:26px;\n-    display:flex;\n-    align-items:center;\n-    justify-content:space-between;\n-    padding-inline:10px;\n-}\n-\n-.editorParamsToolbarContainer .editorParamsLabel{\n-    padding-inline-end:10px;\n-    flex:none;\n-    font:menu;\n-    font-size:13px;\n-    font-style:normal;\n-    font-weight:400;\n-    line-height:150%;\n-    color:var(--main-color);\n-}\n-\n-.editorParamsToolbarContainer .editorParamsColor{\n-    width:32px;\n-    height:32px;\n-    flex:none;\n-}\n-\n-.editorParamsToolbarContainer .editorParamsSlider{\n-    background-color:transparent;\n-    width:90px;\n-    flex:0 1 0;\n-}\n-\n-.editorParamsToolbarContainer .editorParamsSlider::-moz-range-progress{\n-    background-color:black;\n-}\n-\n-.editorParamsToolbarContainer .editorParamsSlider::-webkit-slider-runnable-track,\n-.editorParamsToolbarContainer .editorParamsSlider::-moz-range-track{\n-    background-color:black;\n-}\n-\n-.editorParamsToolbarContainer .editorParamsSlider::-webkit-slider-thumb,\n-.editorParamsToolbarContainer .editorParamsSlider::-moz-range-thumb{\n-    background-color:white;\n-}\n-\n-#secondaryToolbarButtonContainer{\n-    max-width:220px;\n-    min-height:26px;\n-    max-height:calc(var(--viewer-container-height) - 40px);\n-    overflow-y:auto;\n-    margin-bottom:-4px;\n-}\n-\n-#editorStampParamsToolbar{\n-    inset-inline-end:calc(var(--editor-toolbar-base-offset) + 0px);\n-}\n-\n-#editorInkParamsToolbar{\n-    inset-inline-end:calc(var(--editor-toolbar-base-offset) + 28px);\n-}\n-\n-#editorFreeTextParamsToolbar{\n-    inset-inline-end:calc(var(--editor-toolbar-base-offset) + 56px);\n-}\n-\n-#editorHighlightParamsToolbar{\n-    inset-inline-end:calc(var(--editor-toolbar-base-offset) + 84px);\n-}\n-\n-#editorStampAddImage::before{\n-    -webkit-mask-image:var(--editorParams-stampAddImage-icon);\n-    mask-image:var(--editorParams-stampAddImage-icon);\n-}\n-\n .doorHanger,\n .doorHangerRight{\n     border-radius:2px;\n     box-shadow:0 1px 5px var(--doorhanger-border-color), 0 0 0 1px var(--doorhanger-border-color);\n     border:var(--doorhanger-border-color-whcm);\n+    background-color:var(--doorhanger-bg-color);\n+    inset-block-start:calc(100% + var(--doorhanger-height) - 2px);\n }\n-:is(.doorHanger, .doorHangerRight)::after,\n-:is(.doorHanger, .doorHangerRight)::before{\n+\n+:is(.doorHanger,.doorHangerRight)::after,:is(.doorHanger,.doorHangerRight)::before{\n     bottom:100%;\n-    border:8px solid rgb(0 0 0 \u002F 0);\n-    content:\" \";\n+    border-style:solid;\n+    border-color:transparent;\n+    content:\"\";\n     height:0;\n     width:0;\n     position:absolute;\n     pointer-events:none;\n     opacity:var(--doorhanger-triangle-opacity-whcm);\n }\n-.doorHanger::after{\n-    inset-inline-start:10px;\n-    margin-inline-start:-8px;\n-    border-bottom-color:var(--toolbar-bg-color);\n-}\n-.doorHangerRight::after{\n-    inset-inline-end:10px;\n-    margin-inline-end:-8px;\n-    border-bottom-color:var(--doorhanger-bg-color);\n-}\n-:is(.doorHanger, .doorHangerRight)::before{\n-    border-bottom-color:var(--doorhanger-border-color);\n-    border-width:9px;\n-}\n-.doorHanger::before{\n-    inset-inline-start:10px;\n-    margin-inline-start:-9px;\n-}\n-.doorHangerRight::before{\n-    inset-inline-end:10px;\n-    margin-inline-end:-9px;\n-}\n \n-#findResultsCount{\n-    background-color:rgb(217 217 217);\n-    color:rgb(82 82 82);\n-    text-align:center;\n-    padding:4px 5px;\n-    margin:5px;\n+:is(.doorHanger,.doorHangerRight)::before{\n+    border-width:calc(var(--doorhanger-height) + 2px);\n+    border-bottom-color:var(--doorhanger-border-color);\n }\n \n-#findMsg[data-status=\"notFound\"]{\n-    font-weight:bold;\n+:is(.doorHanger,.doorHangerRight)::after{\n+    border-width:var(--doorhanger-height);\n }\n \n-:is(#findResultsCount, #findMsg):empty{\n-    display:none;\n+.doorHangerRight{\n+    inset-inline-end:calc(50% - var(--doorhanger-height) - 1px);\n }\n \n-#toolbarViewerMiddle{\n-    position:absolute;\n-    left:50%;\n-    transform:translateX(-50%);\n+.doorHangerRight::before{\n+    inset-inline-end:-1px;\n }\n \n-#toolbarViewerLeft,\n-#toolbarSidebarLeft{\n-    float:var(--inline-start);\n-}\n-#toolbarViewerRight,\n-#toolbarSidebarRight{\n-    float:var(--inline-end);\n+.doorHangerRight::after{\n+    border-bottom-color:var(--doorhanger-bg-color);\n+    inset-inline-end:1px;\n }\n \n-#toolbarViewerLeft > *,\n-#toolbarViewerMiddle > *,\n-#toolbarViewerRight > *,\n-#toolbarSidebarLeft *,\n-#toolbarSidebarRight *,\n-.findbar *{\n-    position:relative;\n-    float:var(--inline-start);\n+.doorHanger{\n+    inset-inline-start:calc(50% - var(--doorhanger-height) - 1px);\n }\n \n-#toolbarViewerLeft{\n-    padding-inline-start:1px;\n-}\n-#toolbarViewerRight{\n-    padding-inline-end:1px;\n-}\n-#toolbarSidebarRight{\n-    padding-inline-end:2px;\n+.doorHanger::before{\n+    inset-inline-start:-1px;\n }\n \n-.splitToolbarButton{\n-    margin:2px;\n-    display:inline-block;\n-}\n-.splitToolbarButton > .toolbarButton{\n-    float:var(--inline-start);\n+.doorHanger::after{\n+    border-bottom-color:var(--toolbar-bg-color);\n+    inset-inline-start:1px;\n }\n \n-.toolbarButton,\n-.secondaryToolbarButton,\n .dialogButton{\n     border:none;\n     background:none;\n@@ -3498,40 +5183,14 @@\n     color:var(--dialog-button-hover-color);\n }\n \n-.toolbarButton > span{\n-    display:inline-block;\n-    width:0;\n-    height:0;\n-    overflow:hidden;\n-}\n-\n-:is(.toolbarButton, .secondaryToolbarButton, .dialogButton)[disabled]{\n-    opacity:0.5;\n-}\n-\n-.splitToolbarButton > .toolbarButton:is(:hover, :focus-visible),\n-.dropdownToolbarButton:hover{\n-    background-color:var(--button-hover-color);\n-}\n-.splitToolbarButton > .toolbarButton{\n-    position:relative;\n-    margin:0;\n-}\n-#toolbarSidebar .splitToolbarButton > .toolbarButton{\n-    margin-inline-end:2px;\n-}\n-\n .splitToolbarButtonSeparator{\n     float:var(--inline-start);\n-    margin:4px 0;\n-    width:1px;\n-    height:20px;\n-    background-color:var(--separator-color);\n+    width:0;\n+    height:62%;\n+    border-left:1px solid var(--separator-color);\n+    border-right:none;\n }\n \n-.toolbarButton,\n-.dropdownToolbarButton,\n-.secondaryToolbarButton,\n .dialogButton{\n     min-width:16px;\n     margin:2px 1px;\n@@ -3548,83 +5207,7 @@\n     box-sizing:border-box;\n }\n \n-.toolbarButton:is(:hover, :focus-visible){\n-    background-color:var(--button-hover-color);\n-}\n-.secondaryToolbarButton:is(:hover, :focus-visible){\n-    background-color:var(--doorhanger-hover-bg-color);\n-    color:var(--doorhanger-hover-color);\n-}\n-\n-:is(.toolbarButton, .secondaryToolbarButton).toggled,\n-.splitToolbarButton.toggled > .toolbarButton.toggled{\n-    background-color:var(--toggled-btn-bg-color);\n-    color:var(--toggled-btn-color);\n-}\n-\n-:is(.toolbarButton, .secondaryToolbarButton).toggled:hover,\n-.splitToolbarButton.toggled > .toolbarButton.toggled:hover{\n-    outline:var(--toggled-hover-btn-outline) !important;\n-}\n-\n-:is(.toolbarButton, .secondaryToolbarButton).toggled::before{\n-    background-color:var(--toggled-btn-color);\n-}\n-\n-:is(.toolbarButton, .secondaryToolbarButton).toggled:hover:active,\n-.splitToolbarButton.toggled > .toolbarButton.toggled:hover:active{\n-    background-color:var(--toggled-hover-active-btn-color);\n-}\n-\n-.dropdownToolbarButton{\n-    display:flex;\n-    width:-moz-fit-content;\n-    width:fit-content;\n-    min-width:140px;\n-    padding:0;\n-    background-color:var(--dropdown-btn-bg-color);\n-    border:var(--dropdown-btn-border);\n-}\n-.dropdownToolbarButton::after{\n-    top:6px;\n-    inset-inline-end:6px;\n-    pointer-events:none;\n-    -webkit-mask-image:var(--toolbarButton-menuArrow-icon);\n-    mask-image:var(--toolbarButton-menuArrow-icon);\n-}\n-\n-.dropdownToolbarButton > select{\n-    -webkit-appearance:none;\n-    -moz-appearance:none;\n-    appearance:none;\n-    width:inherit;\n-    min-width:inherit;\n-    height:28px;\n-    font-size:12px;\n-    color:var(--main-color);\n-    margin:0;\n-    padding-block:1px 2px;\n-    padding-inline:6px 38px;\n-    border:none;\n-    background-color:var(--dropdown-btn-bg-color);\n-}\n-.dropdownToolbarButton > select:is(:hover, :focus-visible){\n-    background-color:var(--button-hover-color);\n-    color:var(--toggled-btn-color);\n-}\n-.dropdownToolbarButton > select > option{\n-    background:var(--doorhanger-bg-color);\n-    color:var(--main-color);\n-}\n-\n-.toolbarButtonSpacer{\n-    width:30px;\n-    display:inline-block;\n-    height:1px;\n-}\n-\n-:is(.toolbarButton, .secondaryToolbarButton, .treeItemToggler)::before,\n-.dropdownToolbarButton::after{\n+.treeItemToggler::before{\n     position:absolute;\n     display:inline-block;\n     width:16px;\n@@ -3636,49 +5219,18 @@\n     mask-size:cover;\n }\n \n-.dropdownToolbarButton:is(:hover, :focus-visible, :active)::after{\n-    background-color:var(--toolbar-icon-hover-bg-color);\n-}\n-\n-.toolbarButton::before{\n-    opacity:var(--toolbar-icon-opacity);\n-    top:6px;\n-    left:6px;\n-}\n-\n-.toolbarButton:is(:hover, :focus-visible)::before,\n-.secondaryToolbarButton:is(:hover, :focus-visible)::before{\n-    background-color:var(--toolbar-icon-hover-bg-color);\n-}\n-\n-.secondaryToolbarButton::before{\n-    opacity:var(--doorhanger-icon-opacity);\n-    top:5px;\n-    inset-inline-start:12px;\n-}\n-\n-#sidebarToggle::before{\n+#sidebarToggleButton::before{\n     -webkit-mask-image:var(--toolbarButton-sidebarToggle-icon);\n     mask-image:var(--toolbarButton-sidebarToggle-icon);\n     transform:scaleX(var(--dir-factor));\n }\n \n-#secondaryToolbarToggle::before{\n+#secondaryToolbarToggleButton::before{\n     -webkit-mask-image:var(--toolbarButton-secondaryToolbarToggle-icon);\n     mask-image:var(--toolbarButton-secondaryToolbarToggle-icon);\n     transform:scaleX(var(--dir-factor));\n }\n \n-#findPrevious::before{\n-    -webkit-mask-image:var(--findbarButton-previous-icon);\n-    mask-image:var(--findbarButton-previous-icon);\n-}\n-\n-#findNext::before{\n-    -webkit-mask-image:var(--findbarButton-next-icon);\n-    mask-image:var(--findbarButton-next-icon);\n-}\n-\n #previous::before{\n     -webkit-mask-image:var(--toolbarButton-pageUp-icon);\n     mask-image:var(--toolbarButton-pageUp-icon);\n@@ -3689,98 +5241,58 @@\n     mask-image:var(--toolbarButton-pageDown-icon);\n }\n \n-#zoomOut::before{\n+#zoomOutButton::before{\n     -webkit-mask-image:var(--toolbarButton-zoomOut-icon);\n     mask-image:var(--toolbarButton-zoomOut-icon);\n }\n \n-#zoomIn::before{\n+#zoomInButton::before{\n     -webkit-mask-image:var(--toolbarButton-zoomIn-icon);\n     mask-image:var(--toolbarButton-zoomIn-icon);\n }\n \n-#presentationMode::before{\n-    -webkit-mask-image:var(--toolbarButton-presentationMode-icon);\n-    mask-image:var(--toolbarButton-presentationMode-icon);\n-}\n-\n-#editorFreeText::before{\n+#editorFreeTextButton::before{\n     -webkit-mask-image:var(--toolbarButton-editorFreeText-icon);\n     mask-image:var(--toolbarButton-editorFreeText-icon);\n }\n \n-#editorHighlight::before{\n+#editorHighlightButton::before{\n     -webkit-mask-image:var(--toolbarButton-editorHighlight-icon);\n     mask-image:var(--toolbarButton-editorHighlight-icon);\n }\n \n-#editorInk::before{\n+#editorInkButton::before{\n     -webkit-mask-image:var(--toolbarButton-editorInk-icon);\n     mask-image:var(--toolbarButton-editorInk-icon);\n }\n \n-#editorStamp::before{\n+#editorStampButton::before{\n     -webkit-mask-image:var(--toolbarButton-editorStamp-icon);\n     mask-image:var(--toolbarButton-editorStamp-icon);\n }\n \n-:is(#print, #secondaryPrint)::before{\n-    -webkit-mask-image:var(--toolbarButton-print-icon);\n-    mask-image:var(--toolbarButton-print-icon);\n+#editorSignatureButton::before{\n+    -webkit-mask-image:var(--toolbarButton-editorSignature-icon);\n+    mask-image:var(--toolbarButton-editorSignature-icon);\n }\n \n-#secondaryOpenFile::before{\n-    -webkit-mask-image:var(--toolbarButton-openFile-icon);\n-    mask-image:var(--toolbarButton-openFile-icon);\n+#printButton::before{\n+    -webkit-mask-image:var(--toolbarButton-print-icon);\n+    mask-image:var(--toolbarButton-print-icon);\n }\n \n-:is(#download, #secondaryDownload)::before{\n+#downloadButton::before{\n     -webkit-mask-image:var(--toolbarButton-download-icon);\n     mask-image:var(--toolbarButton-download-icon);\n }\n \n-a.secondaryToolbarButton{\n-    padding-top:5px;\n-    text-decoration:none;\n-}\n-a:is(.toolbarButton, .secondaryToolbarButton)[href=\"#\"]{\n-    opacity:0.5;\n-    pointer-events:none;\n-}\n-\n-#viewBookmark::before{\n-    -webkit-mask-image:var(--toolbarButton-bookmark-icon);\n-    mask-image:var(--toolbarButton-bookmark-icon);\n-}\n-\n-#viewThumbnail::before{\n-    -webkit-mask-image:var(--toolbarButton-viewThumbnail-icon);\n-    mask-image:var(--toolbarButton-viewThumbnail-icon);\n-}\n-\n-#viewOutline::before{\n-    -webkit-mask-image:var(--toolbarButton-viewOutline-icon);\n-    mask-image:var(--toolbarButton-viewOutline-icon);\n-    transform:scaleX(var(--dir-factor));\n-}\n-\n-#viewAttachments::before{\n-    -webkit-mask-image:var(--toolbarButton-viewAttachments-icon);\n-    mask-image:var(--toolbarButton-viewAttachments-icon);\n-}\n-\n-#viewLayers::before{\n-    -webkit-mask-image:var(--toolbarButton-viewLayers-icon);\n-    mask-image:var(--toolbarButton-viewLayers-icon);\n-}\n-\n #currentOutlineItem::before{\n     -webkit-mask-image:var(--toolbarButton-currentOutlineItem-icon);\n     mask-image:var(--toolbarButton-currentOutlineItem-icon);\n     transform:scaleX(var(--dir-factor));\n }\n \n-#viewFind::before{\n+#viewFindButton::before{\n     -webkit-mask-image:var(--toolbarButton-search-icon);\n     mask-image:var(--toolbarButton-search-icon);\n }\n@@ -3797,108 +5309,46 @@\n     border-radius:50%;\n }\n \n-.secondaryToolbarButton{\n-    position:relative;\n-    margin:0;\n-    padding:0 0 1px;\n-    padding-inline-start:36px;\n-    height:auto;\n-    min-height:26px;\n-    width:auto;\n-    min-width:100%;\n-    text-align:start;\n-    white-space:normal;\n-    border-radius:0;\n+.verticalToolbarSeparator{\n+    display:block;\n+    margin-inline:2px;\n+    width:0;\n+    height:80%;\n+    border-left:1px solid var(--separator-color);\n+    border-right:none;\n     box-sizing:border-box;\n-    display:inline-block;\n-}\n-.secondaryToolbarButton > span{\n-    padding-inline-end:4px;\n-}\n-\n-#firstPage::before{\n-    -webkit-mask-image:var(--secondaryToolbarButton-firstPage-icon);\n-    mask-image:var(--secondaryToolbarButton-firstPage-icon);\n-}\n-\n-#lastPage::before{\n-    -webkit-mask-image:var(--secondaryToolbarButton-lastPage-icon);\n-    mask-image:var(--secondaryToolbarButton-lastPage-icon);\n-}\n-\n-#pageRotateCcw::before{\n-    -webkit-mask-image:var(--secondaryToolbarButton-rotateCcw-icon);\n-    mask-image:var(--secondaryToolbarButton-rotateCcw-icon);\n-}\n-\n-#pageRotateCw::before{\n-    -webkit-mask-image:var(--secondaryToolbarButton-rotateCw-icon);\n-    mask-image:var(--secondaryToolbarButton-rotateCw-icon);\n-}\n-\n-#cursorSelectTool::before{\n-    -webkit-mask-image:var(--secondaryToolbarButton-selectTool-icon);\n-    mask-image:var(--secondaryToolbarButton-selectTool-icon);\n }\n \n-#cursorHandTool::before{\n-    -webkit-mask-image:var(--secondaryToolbarButton-handTool-icon);\n-    mask-image:var(--secondaryToolbarButton-handTool-icon);\n-}\n-\n-#scrollPage::before{\n-    -webkit-mask-image:var(--secondaryToolbarButton-scrollPage-icon);\n-    mask-image:var(--secondaryToolbarButton-scrollPage-icon);\n-}\n-\n-#scrollVertical::before{\n-    -webkit-mask-image:var(--secondaryToolbarButton-scrollVertical-icon);\n-    mask-image:var(--secondaryToolbarButton-scrollVertical-icon);\n-}\n-\n-#scrollHorizontal::before{\n-    -webkit-mask-image:var(--secondaryToolbarButton-scrollHorizontal-icon);\n-    mask-image:var(--secondaryToolbarButton-scrollHorizontal-icon);\n-}\n-\n-#scrollWrapped::before{\n-    -webkit-mask-image:var(--secondaryToolbarButton-scrollWrapped-icon);\n-    mask-image:var(--secondaryToolbarButton-scrollWrapped-icon);\n-}\n-\n-#spreadNone::before{\n-    -webkit-mask-image:var(--secondaryToolbarButton-spreadNone-icon);\n-    mask-image:var(--secondaryToolbarButton-spreadNone-icon);\n+.horizontalToolbarSeparator{\n+    display:block;\n+    margin:6px 0;\n+    border-top:1px solid var(--doorhanger-separator-color);\n+    border-bottom:none;\n+    height:0;\n+    width:100%;\n }\n \n-#spreadOdd::before{\n-    -webkit-mask-image:var(--secondaryToolbarButton-spreadOdd-icon);\n-    mask-image:var(--secondaryToolbarButton-spreadOdd-icon);\n+.toggleButton{\n+    display:inline;\n }\n \n-#spreadEven::before{\n-    -webkit-mask-image:var(--secondaryToolbarButton-spreadEven-icon);\n-    mask-image:var(--secondaryToolbarButton-spreadEven-icon);\n+.toggleButton:has( > input:checked){\n+    color:var(--toggled-btn-color);\n+    background-color:var(--toggled-btn-bg-color);\n }\n \n-#documentProperties::before{\n-    -webkit-mask-image:var(--secondaryToolbarButton-documentProperties-icon);\n-    mask-image:var(--secondaryToolbarButton-documentProperties-icon);\n+.toggleButton:is(:hover,:has( > input:focus-visible)){\n+    color:var(--toggled-btn-color);\n+    background-color:var(--button-hover-color);\n }\n \n-.verticalToolbarSeparator{\n-    display:block;\n-    margin:5px 2px;\n-    width:1px;\n-    height:22px;\n-    background-color:var(--separator-color);\n-}\n-.horizontalToolbarSeparator{\n-    display:block;\n-    margin:6px 0;\n-    height:1px;\n-    width:100%;\n-    background-color:var(--doorhanger-separator-color);\n+.toggleButton > input{\n+    position:absolute;\n+    top:50%;\n+    left:50%;\n+    opacity:0;\n+    width:0;\n+    height:0;\n }\n \n .toolbarField{\n@@ -3915,12 +5365,8 @@\n     outline:none;\n }\n \n-.toolbarField[type=\"checkbox\"]{\n-    opacity:0;\n-    position:absolute !important;\n-    left:0;\n-    margin:10px 0 3px;\n-    margin-inline-start:7px;\n+.toolbarField:focus{\n+    border-color:#0a84ff;\n }\n \n #pageNumber{\n@@ -3935,21 +5381,24 @@\n     -webkit-appearance:none;\n }\n \n-.loadingInput:has(> #pageNumber.loading)::after{\n-    display:block;\n+.loadingInput:has( > .loading:is(#pageNumber))::after{\n+    display:inline;\n     visibility:visible;\n \n     transition-property:visibility;\n     transition-delay:var(--loading-icon-delay);\n }\n \n+.loadingInput{\n+    position:relative;\n+}\n+\n .loadingInput::after{\n     position:absolute;\n     visibility:hidden;\n     display:none;\n-    top:calc(50% - 8px);\n-    width:16px;\n-    height:16px;\n+    width:var(--icon-size);\n+    height:var(--icon-size);\n \n     content:\"\";\n     background-color:var(--toolbar-icon-bg-color);\n@@ -3967,29 +5416,6 @@\n     inset-inline-end:4px;\n }\n \n-.toolbarField:focus{\n-    border-color:#0a84ff;\n-}\n-\n-.toolbarLabel{\n-    min-width:16px;\n-    padding:7px;\n-    margin:2px;\n-    border-radius:2px;\n-    color:var(--main-color);\n-    font-size:12px;\n-    line-height:14px;\n-    text-align:left;\n-    -webkit-user-select:none;\n-    -moz-user-select:none;\n-    user-select:none;\n-    cursor:default;\n-}\n-\n-#numPages.toolbarLabel{\n-    padding-inline-start:3px;\n-}\n-\n #thumbnailView,\n #outlineView,\n #attachmentsView,\n@@ -4003,6 +5429,7 @@\n     -moz-user-select:none;\n     user-select:none;\n }\n+\n #thumbnailView{\n     width:calc(100% - 60px);\n     padding:10px 30px 0;\n@@ -4033,6 +5460,7 @@\n .thumbnail:hover{\n     border-color:var(--thumbnail-hover-color);\n }\n+\n .thumbnail.selected{\n     border-color:var(--thumbnail-selected-color) !important;\n }\n@@ -4042,10 +5470,12 @@\n     height:var(--thumbnail-height);\n     opacity:0.9;\n }\n+\n a:focus > .thumbnail > .thumbnailImage,\n .thumbnail:hover > .thumbnailImage{\n     opacity:0.95;\n }\n+\n .thumbnail.selected > .thumbnailImage{\n     opacity:1 !important;\n }\n@@ -4083,9 +5513,11 @@\n #layersView .treeItem > a *{\n     cursor:pointer;\n }\n+\n #layersView .treeItem > a > label{\n     padding-inline-start:4px;\n }\n+\n #layersView .treeItem > a > label > input{\n     float:var(--inline-start);\n     margin-top:1px;\n@@ -4098,16 +5530,19 @@\n     width:0;\n     color:rgb(255 255 255 \u002F 0.5);\n }\n+\n .treeItemToggler::before{\n     inset-inline-end:4px;\n     -webkit-mask-image:var(--treeitem-expanded-icon);\n     mask-image:var(--treeitem-expanded-icon);\n }\n+\n .treeItemToggler.treeItemsHidden::before{\n     -webkit-mask-image:var(--treeitem-collapsed-icon);\n     mask-image:var(--treeitem-collapsed-icon);\n     transform:scaleX(var(--dir-factor));\n }\n+\n .treeItemToggler.treeItemsHidden ~ .treeItems{\n     display:none;\n }\n@@ -4132,7 +5567,7 @@\n }\n \n #sidebarContainer:has(#outlineView:not(.hidden)) #outlineOptionsContainer{\n-    display:inherit;\n+    display:inline flex;\n }\n \n .dialogButton{\n@@ -4157,6 +5592,7 @@\n     border-radius:4px;\n     box-shadow:0 1px 4px rgb(0 0 0 \u002F 0.3);\n }\n+\n dialog::backdrop{\n     background-color:rgb(0 0 0 \u002F 0.2);\n }\n@@ -4176,9 +5612,10 @@\n dialog .separator{\n     display:block;\n     margin:4px 0;\n-    height:1px;\n+    height:0;\n     width:100%;\n-    background-color:var(--separator-color);\n+    border-top:1px solid var(--separator-color);\n+    border-bottom:none;\n }\n \n dialog .buttonRow{\n@@ -4193,6 +5630,7 @@\n #passwordDialog{\n     text-align:center;\n }\n+\n #passwordDialog .toolbarField{\n     width:200px;\n }\n@@ -4200,18 +5638,22 @@\n #documentPropertiesDialog{\n     text-align:left;\n }\n+\n #documentPropertiesDialog .row > *{\n     min-width:100px;\n     text-align:start;\n }\n+\n #documentPropertiesDialog .row > span{\n     width:125px;\n     word-wrap:break-word;\n }\n+\n #documentPropertiesDialog .row > p{\n     max-width:225px;\n     word-wrap:break-word;\n }\n+\n #documentPropertiesDialog .buttonRow{\n     margin-top:10px;\n }\n@@ -4219,14 +5661,17 @@\n .grab-to-pan-grab{\n     cursor:grab !important;\n }\n+\n .grab-to-pan-grab\n *:not(input):not(textarea):not(button):not(select):not(:link){\n     cursor:inherit !important;\n }\n+\n .grab-to-pan-grab:active,\n .grab-to-pan-grabbing{\n     cursor:grabbing !important;\n }\n+\n .grab-to-pan-grabbing{\n     position:fixed;\n     background:rgb(0 0 0 \u002F 0);\n@@ -4236,6 +5681,440 @@\n     z-index:50000;\n }\n \n+.toolbarButton{\n+    height:100%;\n+    aspect-ratio:1;\n+    display:flex;\n+    align-items:center;\n+    justify-content:center;\n+    background:none;\n+    border:none;\n+    color:var(--main-color);\n+    outline:none;\n+    border-radius:2px;\n+    box-sizing:border-box;\n+    font:message-box;\n+    flex:none;\n+    position:relative;\n+    padding:0;\n+}\n+\n+.toolbarButton  > span{\n+    display:inline-block;\n+    width:0;\n+    height:0;\n+    overflow:hidden;\n+}\n+\n+.toolbarButton::before{\n+    opacity:var(--toolbar-icon-opacity);\n+    display:inline-block;\n+    width:var(--icon-size);\n+    height:var(--icon-size);\n+    content:\"\";\n+    background-color:var(--toolbar-icon-bg-color);\n+    -webkit-mask-size:cover;\n+    mask-size:cover;\n+    -webkit-mask-position:center;\n+    mask-position:center;\n+}\n+\n+.toolbarButton.toggled{\n+    background-color:var(--toggled-btn-bg-color);\n+    color:var(--toggled-btn-color);\n+}\n+\n+.toolbarButton.toggled::before{\n+    background-color:var(--toggled-btn-color);\n+}\n+\n+.toolbarButton.toggled:hover{\n+    outline:var(--toggled-hover-btn-outline) !important;\n+}\n+\n+.toolbarButton.toggled:hover:active{\n+    background-color:var(--toggled-hover-active-btn-color);\n+}\n+\n+.toolbarButton:is(:hover,:focus-visible){\n+    background-color:var(--button-hover-color);\n+}\n+\n+.toolbarButton:is(:hover,:focus-visible)::before{\n+    background-color:var(--toolbar-icon-hover-bg-color);\n+}\n+\n+.toolbarButton:is([disabled=\"disabled\"],[disabled]){\n+    opacity:0.5;\n+    pointer-events:none;\n+}\n+\n+.toolbarButton.labeled{\n+    width:100%;\n+    min-height:var(--menuitem-height);\n+    justify-content:flex-start;\n+    gap:8px;\n+    padding-inline-start:12px;\n+    aspect-ratio:unset;\n+    text-align:start;\n+    white-space:normal;\n+    cursor:default;\n+}\n+\n+.toolbarButton.labeled:is(a){\n+    text-decoration:none;\n+}\n+\n+.toolbarButton.labeled[href=\"#\"]:is(a){\n+    opacity:0.5;\n+    pointer-events:none;\n+}\n+\n+.toolbarButton.labeled::before{\n+    opacity:var(--doorhanger-icon-opacity);\n+}\n+\n+.toolbarButton.labeled:is(:hover,:focus-visible){\n+    color:var(--doorhanger-hover-color);\n+}\n+\n+.toolbarButton.labeled  > span{\n+    display:inline-block;\n+    width:-moz-max-content;\n+    width:max-content;\n+    height:auto;\n+}\n+\n+.toolbarButtonWithContainer{\n+    height:100%;\n+    aspect-ratio:1;\n+    display:inline-block;\n+    position:relative;\n+    flex:none;\n+}\n+\n+.toolbarButtonWithContainer  > .toolbarButton{\n+    width:100%;\n+    height:100%;\n+}\n+\n+.toolbarButtonWithContainer .menu{\n+    padding-block:5px;\n+}\n+\n+.toolbarButtonWithContainer .menuContainer{\n+    width:100%;\n+    height:auto;\n+    max-height:calc(\n+        var(--viewer-container-height) - var(--toolbar-height) -\n+        var(--doorhanger-height)\n+        );\n+    display:flex;\n+    flex-direction:column;\n+    box-sizing:border-box;\n+    overflow-y:auto;\n+}\n+\n+.toolbarButtonWithContainer .editorParamsToolbar{\n+    height:auto;\n+    width:220px;\n+    position:absolute;\n+    z-index:30000;\n+    cursor:default;\n+}\n+\n+:is(.toolbarButtonWithContainer .editorParamsToolbar) :is(#editorStampAddImage,#editorSignatureAddSignature)::before{\n+    -webkit-mask-image:var(--editorParams-stampAddImage-icon);\n+    mask-image:var(--editorParams-stampAddImage-icon);\n+}\n+\n+:is(.toolbarButtonWithContainer .editorParamsToolbar) .editorParamsLabel{\n+    flex:none;\n+    font:menu;\n+    font-size:13px;\n+    font-style:normal;\n+    font-weight:400;\n+    line-height:150%;\n+    width:-moz-fit-content;\n+    width:fit-content;\n+    inset-inline-start:0;\n+    color:var(--main-color);\n+}\n+\n+:is(.toolbarButtonWithContainer .editorParamsToolbar) button:is(:hover,:focus-visible) .editorParamsLabel{\n+    color:var(--doorhanger-hover-color);\n+}\n+\n+:is(.toolbarButtonWithContainer .editorParamsToolbar) .editorParamsToolbarContainer{\n+    width:100%;\n+    height:auto;\n+    display:flex;\n+    flex-direction:column;\n+    box-sizing:border-box;\n+    padding-inline:10px;\n+    padding-block:10px;\n+}\n+\n+:is(:is(.toolbarButtonWithContainer .editorParamsToolbar) .editorParamsToolbarContainer)  > .editorParamsSetter{\n+    min-height:26px;\n+    display:flex;\n+    align-items:center;\n+    justify-content:space-between;\n+}\n+\n+:is(:is(.toolbarButtonWithContainer .editorParamsToolbar) .editorParamsToolbarContainer) .editorParamsColor{\n+    width:32px;\n+    height:32px;\n+    flex:none;\n+    padding:0;\n+}\n+\n+:is(:is(.toolbarButtonWithContainer .editorParamsToolbar) .editorParamsToolbarContainer) .editorParamsSlider{\n+    background-color:transparent;\n+    width:90px;\n+    flex:0 1 0;\n+    font:message-box;\n+}\n+\n+:is(:is(:is(.toolbarButtonWithContainer .editorParamsToolbar) .editorParamsToolbarContainer) .editorParamsSlider)::-moz-range-progress{\n+    background-color:black;\n+}\n+\n+:is(:is(:is(.toolbarButtonWithContainer .editorParamsToolbar) .editorParamsToolbarContainer) .editorParamsSlider)::-webkit-slider-runnable-track,:is(:is(:is(.toolbarButtonWithContainer .editorParamsToolbar) .editorParamsToolbarContainer) .editorParamsSlider)::-moz-range-track{\n+    background-color:black;\n+}\n+\n+:is(:is(:is(.toolbarButtonWithContainer .editorParamsToolbar) .editorParamsToolbarContainer) .editorParamsSlider)::-webkit-slider-thumb,:is(:is(:is(.toolbarButtonWithContainer .editorParamsToolbar) .editorParamsToolbarContainer) .editorParamsSlider)::-moz-range-thumb{\n+    background-color:white;\n+}\n+\n+#secondaryToolbar{\n+    height:auto;\n+    width:220px;\n+    position:absolute;\n+    z-index:30000;\n+    cursor:default;\n+    min-height:26px;\n+    max-height:calc(var(--viewer-container-height) - 40px);\n+}\n+\n+:is(#secondaryToolbar #secondaryToolbarButtonContainer) #secondaryOpenFile::before{\n+    -webkit-mask-image:var(--toolbarButton-openFile-icon);\n+    mask-image:var(--toolbarButton-openFile-icon);\n+}\n+\n+:is(#secondaryToolbar #secondaryToolbarButtonContainer) #secondaryPrint::before{\n+    -webkit-mask-image:var(--toolbarButton-print-icon);\n+    mask-image:var(--toolbarButton-print-icon);\n+}\n+\n+:is(#secondaryToolbar #secondaryToolbarButtonContainer) #secondaryDownload::before{\n+    -webkit-mask-image:var(--toolbarButton-download-icon);\n+    mask-image:var(--toolbarButton-download-icon);\n+}\n+\n+:is(#secondaryToolbar #secondaryToolbarButtonContainer) #presentationMode::before{\n+    -webkit-mask-image:var(--toolbarButton-presentationMode-icon);\n+    mask-image:var(--toolbarButton-presentationMode-icon);\n+}\n+\n+:is(#secondaryToolbar #secondaryToolbarButtonContainer) #viewBookmark::before{\n+    -webkit-mask-image:var(--toolbarButton-bookmark-icon);\n+    mask-image:var(--toolbarButton-bookmark-icon);\n+}\n+\n+:is(#secondaryToolbar #secondaryToolbarButtonContainer) #firstPage::before{\n+    -webkit-mask-image:var(--secondaryToolbarButton-firstPage-icon);\n+    mask-image:var(--secondaryToolbarButton-firstPage-icon);\n+}\n+\n+:is(#secondaryToolbar #secondaryToolbarButtonContainer) #lastPage::before{\n+    -webkit-mask-image:var(--secondaryToolbarButton-lastPage-icon);\n+    mask-image:var(--secondaryToolbarButton-lastPage-icon);\n+}\n+\n+:is(#secondaryToolbar #secondaryToolbarButtonContainer) #pageRotateCcw::before{\n+    -webkit-mask-image:var(--secondaryToolbarButton-rotateCcw-icon);\n+    mask-image:var(--secondaryToolbarButton-rotateCcw-icon);\n+}\n+\n+:is(#secondaryToolbar #secondaryToolbarButtonContainer) #pageRotateCw::before{\n+    -webkit-mask-image:var(--secondaryToolbarButton-rotateCw-icon);\n+    mask-image:var(--secondaryToolbarButton-rotateCw-icon);\n+}\n+\n+:is(#secondaryToolbar #secondaryToolbarButtonContainer) #cursorSelectTool::before{\n+    -webkit-mask-image:var(--secondaryToolbarButton-selectTool-icon);\n+    mask-image:var(--secondaryToolbarButton-selectTool-icon);\n+}\n+\n+:is(#secondaryToolbar #secondaryToolbarButtonContainer) #cursorHandTool::before{\n+    -webkit-mask-image:var(--secondaryToolbarButton-handTool-icon);\n+    mask-image:var(--secondaryToolbarButton-handTool-icon);\n+}\n+\n+:is(#secondaryToolbar #secondaryToolbarButtonContainer) #scrollPage::before{\n+    -webkit-mask-image:var(--secondaryToolbarButton-scrollPage-icon);\n+    mask-image:var(--secondaryToolbarButton-scrollPage-icon);\n+}\n+\n+:is(#secondaryToolbar #secondaryToolbarButtonContainer) #scrollVertical::before{\n+    -webkit-mask-image:var(--secondaryToolbarButton-scrollVertical-icon);\n+    mask-image:var(--secondaryToolbarButton-scrollVertical-icon);\n+}\n+\n+:is(#secondaryToolbar #secondaryToolbarButtonContainer) #scrollHorizontal::before{\n+    -webkit-mask-image:var(--secondaryToolbarButton-scrollHorizontal-icon);\n+    mask-image:var(--secondaryToolbarButton-scrollHorizontal-icon);\n+}\n+\n+:is(#secondaryToolbar #secondaryToolbarButtonContainer) #scrollWrapped::before{\n+    -webkit-mask-image:var(--secondaryToolbarButton-scrollWrapped-icon);\n+    mask-image:var(--secondaryToolbarButton-scrollWrapped-icon);\n+}\n+\n+:is(#secondaryToolbar #secondaryToolbarButtonContainer) #spreadNone::before{\n+    -webkit-mask-image:var(--secondaryToolbarButton-spreadNone-icon);\n+    mask-image:var(--secondaryToolbarButton-spreadNone-icon);\n+}\n+\n+:is(#secondaryToolbar #secondaryToolbarButtonContainer) #spreadOdd::before{\n+    -webkit-mask-image:var(--secondaryToolbarButton-spreadOdd-icon);\n+    mask-image:var(--secondaryToolbarButton-spreadOdd-icon);\n+}\n+\n+:is(#secondaryToolbar #secondaryToolbarButtonContainer) #spreadEven::before{\n+    -webkit-mask-image:var(--secondaryToolbarButton-spreadEven-icon);\n+    mask-image:var(--secondaryToolbarButton-spreadEven-icon);\n+}\n+\n+:is(#secondaryToolbar #secondaryToolbarButtonContainer) #imageAltTextSettings::before{\n+    -webkit-mask-image:var(--secondaryToolbarButton-imageAltTextSettings-icon);\n+    mask-image:var(--secondaryToolbarButton-imageAltTextSettings-icon);\n+}\n+\n+:is(#secondaryToolbar #secondaryToolbarButtonContainer) #documentProperties::before{\n+    -webkit-mask-image:var(--secondaryToolbarButton-documentProperties-icon);\n+    mask-image:var(--secondaryToolbarButton-documentProperties-icon);\n+}\n+\n+#findbar{\n+    --input-horizontal-padding:4px;\n+    --findbar-padding:2px;\n+\n+    width:-moz-max-content;\n+\n+    width:max-content;\n+    max-width:90vw;\n+    min-height:var(--toolbar-height);\n+    height:auto;\n+    position:absolute;\n+    z-index:30000;\n+    cursor:default;\n+    padding:0;\n+    min-width:300px;\n+    background-color:var(--toolbar-bg-color);\n+    box-sizing:border-box;\n+    flex-wrap:wrap;\n+    justify-content:flex-start;\n+}\n+\n+#findbar  > *{\n+    height:var(--toolbar-height);\n+    padding:var(--findbar-padding);\n+}\n+\n+#findbar #findInputContainer{\n+    margin-inline-start:2px;\n+}\n+\n+:is(#findbar #findInputContainer) #findPreviousButton::before{\n+    -webkit-mask-image:var(--findbarButton-previous-icon);\n+    mask-image:var(--findbarButton-previous-icon);\n+}\n+\n+:is(#findbar #findInputContainer) #findNextButton::before{\n+    -webkit-mask-image:var(--findbarButton-next-icon);\n+    mask-image:var(--findbarButton-next-icon);\n+}\n+\n+:is(#findbar #findInputContainer) #findInput{\n+    width:200px;\n+    padding:5px var(--input-horizontal-padding);\n+}\n+\n+:is(:is(#findbar #findInputContainer) #findInput)::-moz-placeholder{\n+    font-style:normal;\n+}\n+\n+:is(:is(#findbar #findInputContainer) #findInput)::placeholder{\n+    font-style:normal;\n+}\n+\n+.loadingInput:has( > [data-status=\"pending\"]:is(:is(#findbar #findInputContainer) #findInput))::after{\n+    display:inline;\n+    visibility:visible;\n+    inset-inline-end:calc(var(--input-horizontal-padding) + 1px);\n+}\n+\n+[data-status=\"notFound\"]:is(:is(#findbar #findInputContainer) #findInput){\n+    background-color:rgb(255 102 102);\n+}\n+\n+#findbar #findbarMessageContainer{\n+    display:none;\n+    gap:4px;\n+}\n+\n+:is(#findbar #findbarMessageContainer):has( > :is(#findResultsCount,#findMsg):not(:empty)){\n+    display:inline flex;\n+}\n+\n+:is(#findbar #findbarMessageContainer) #findResultsCount{\n+    background-color:rgb(217 217 217);\n+    color:rgb(82 82 82);\n+    padding-block:4px;\n+}\n+\n+:is(:is(#findbar #findbarMessageContainer) #findResultsCount):empty{\n+    display:none;\n+}\n+\n+[data-status=\"notFound\"]:is(:is(#findbar #findbarMessageContainer) #findMsg){\n+    font-weight:bold;\n+}\n+\n+:is(:is(#findbar #findbarMessageContainer) #findMsg):empty{\n+    display:none;\n+}\n+\n+#findbar.wrapContainers{\n+    flex-direction:column;\n+    align-items:flex-start;\n+    height:-moz-max-content;\n+    height:max-content;\n+}\n+\n+#findbar.wrapContainers .toolbarLabel{\n+    margin:0 4px;\n+}\n+\n+#findbar.wrapContainers #findbarMessageContainer{\n+    flex-wrap:wrap;\n+    flex-flow:column nowrap;\n+    align-items:flex-start;\n+    height:-moz-max-content;\n+    height:max-content;\n+}\n+\n+:is(#findbar.wrapContainers #findbarMessageContainer) #findResultsCount{\n+    height:calc(var(--toolbar-height) - 2 * var(--findbar-padding));\n+}\n+\n+:is(#findbar.wrapContainers #findbarMessageContainer) #findMsg{\n+    min-height:var(--toolbar-height);\n+}\n+\n @page{\n     margin:0;\n }\n@@ -4248,12 +6127,15 @@\n     body{\n         background:rgb(0 0 0 \u002F 0) none;\n     }\n+\n     body[data-pdfjsprinting] #outerContainer{\n         display:none;\n     }\n+\n     body[data-pdfjsprinting] #printContainer{\n         display:block;\n     }\n+\n     #printContainer{\n         height:100%;\n     }\n@@ -4291,17 +6173,215 @@\n }\n \n .visibleMediumView{\n-    display:none;\n+    display:none !important;\n }\n \n-@media all and (max-width: 900px){\n-    #toolbarViewerMiddle{\n-        display:table;\n-        margin:auto;\n-        left:auto;\n-        position:inherit;\n-        transform:none;\n-    }\n+.toolbarLabel{\n+    width:-moz-max-content;\n+    width:max-content;\n+    min-width:16px;\n+    height:100%;\n+    padding-inline:4px;\n+    margin:2px;\n+    border-radius:2px;\n+    color:var(--main-color);\n+    font-size:12px;\n+    line-height:14px;\n+    text-align:left;\n+    -webkit-user-select:none;\n+    -moz-user-select:none;\n+    user-select:none;\n+    cursor:default;\n+    box-sizing:border-box;\n+\n+    display:inline flex;\n+    flex-direction:column;\n+    align-items:center;\n+    justify-content:center;\n+}\n+\n+.toolbarLabel  > label{\n+    width:100%;\n+}\n+\n+.toolbarHorizontalGroup{\n+    height:100%;\n+    display:inline flex;\n+    flex-direction:row;\n+    align-items:center;\n+    justify-content:space-between;\n+    gap:1px;\n+    box-sizing:border-box;\n+}\n+\n+.dropdownToolbarButton{\n+    display:inline flex;\n+    flex-direction:row;\n+    align-items:center;\n+    justify-content:center;\n+    position:relative;\n+\n+    width:-moz-fit-content;\n+\n+    width:fit-content;\n+    min-width:140px;\n+    padding:0;\n+    background-color:var(--dropdown-btn-bg-color);\n+    border:var(--dropdown-btn-border);\n+    border-radius:2px;\n+    color:var(--main-color);\n+    font-size:12px;\n+    line-height:14px;\n+    -webkit-user-select:none;\n+    -moz-user-select:none;\n+    user-select:none;\n+    cursor:default;\n+    box-sizing:border-box;\n+    outline:none;\n+}\n+\n+.dropdownToolbarButton:hover{\n+    background-color:var(--button-hover-color);\n+}\n+\n+.dropdownToolbarButton  > select{\n+    -webkit-appearance:none;\n+    -moz-appearance:none;\n+    appearance:none;\n+    width:inherit;\n+    min-width:inherit;\n+    height:28px;\n+    font:message-box;\n+    font-size:12px;\n+    color:var(--main-color);\n+    margin:0;\n+    padding-block:1px 2px;\n+    padding-inline:6px 38px;\n+    border:none;\n+    outline:none;\n+    background-color:var(--dropdown-btn-bg-color);\n+}\n+\n+:is(.dropdownToolbarButton > select)  > option{\n+    background:var(--doorhanger-bg-color);\n+    color:var(--main-color);\n+}\n+\n+:is(.dropdownToolbarButton > select):is(:hover,:focus-visible){\n+    background-color:var(--button-hover-color);\n+    color:var(--toggled-btn-color);\n+}\n+\n+.dropdownToolbarButton::after{\n+    position:absolute;\n+    display:inline;\n+    width:var(--icon-size);\n+    height:var(--icon-size);\n+\n+    content:\"\";\n+    background-color:var(--toolbar-icon-bg-color);\n+    -webkit-mask-size:cover;\n+    mask-size:cover;\n+\n+    inset-inline-end:4px;\n+    pointer-events:none;\n+    -webkit-mask-image:var(--toolbarButton-menuArrow-icon);\n+    mask-image:var(--toolbarButton-menuArrow-icon);\n+}\n+\n+.dropdownToolbarButton:is(:hover,:focus-visible,:active)::after{\n+    background-color:var(--toolbar-icon-hover-bg-color);\n+}\n+\n+#toolbarContainer{\n+    --menuitem-height:calc(var(--toolbar-height) - 6px);\n+\n+    width:100%;\n+    height:var(--toolbar-height);\n+    padding:var(--toolbar-vertical-padding) var(--toolbar-horizontal-padding);\n+    position:relative;\n+    box-sizing:border-box;\n+    font:message-box;\n+    background-color:var(--toolbar-bg-color);\n+    box-shadow:var(--toolbar-box-shadow);\n+    border-bottom:var(--toolbar-border-bottom);\n+}\n+\n+#toolbarContainer #toolbarViewer{\n+    width:100%;\n+    height:100%;\n+    justify-content:space-between;\n+}\n+\n+:is(#toolbarContainer #toolbarViewer)  > *{\n+    flex:none;\n+}\n+\n+:is(#toolbarContainer #toolbarViewer) input{\n+    font:message-box;\n+}\n+\n+:is(#toolbarContainer #toolbarViewer) .toolbarButtonSpacer{\n+    width:30px;\n+    display:block;\n+    height:1px;\n+}\n+\n+:is(#toolbarContainer #toolbarViewer) #toolbarViewerLeft #numPages.toolbarLabel{\n+    padding-inline-start:3px;\n+    flex:none;\n+}\n+\n+#toolbarContainer #loadingBar{\n+    --progressBar-percent:0%;\n+    --progressBar-end-offset:0;\n+\n+    position:absolute;\n+    top:var(--toolbar-height);\n+    inset-inline:0 var(--progressBar-end-offset);\n+    height:4px;\n+    background-color:var(--progressBar-bg-color);\n+    border-bottom:1px solid var(--toolbar-border-color);\n+    transition-property:inset-inline-start;\n+    transition-duration:var(--sidebar-transition-duration);\n+    transition-timing-function:var(--sidebar-transition-timing-function);\n+}\n+\n+:is(#toolbarContainer #loadingBar) .progress{\n+    position:absolute;\n+    top:0;\n+    inset-inline-start:0;\n+    width:100%;\n+    transform:scaleX(var(--progressBar-percent));\n+    transform-origin:calc(50% - 50% * var(--dir-factor)) 0;\n+    height:100%;\n+    background-color:var(--progressBar-color);\n+    overflow:hidden;\n+    transition:transform 200ms;\n+}\n+\n+.indeterminate:is(#toolbarContainer #loadingBar) .progress{\n+    transform:none;\n+    background-color:var(--progressBar-bg-color);\n+    transition:none;\n+}\n+\n+:is(.indeterminate:is(#toolbarContainer #loadingBar) .progress) .glimmer{\n+    position:absolute;\n+    top:0;\n+    inset-inline-start:0;\n+    height:100%;\n+    width:calc(100% + 150px);\n+    background:repeating-linear-gradient(\n+        135deg,\n+        var(--progressBar-blend-color) 0,\n+        var(--progressBar-bg-color) 5px,\n+        var(--progressBar-bg-color) 45px,\n+        var(--progressBar-color) 55px,\n+        var(--progressBar-color) 95px,\n+        var(--progressBar-blend-color) 100px\n+        );\n+    animation:progressIndeterminate 1s linear infinite;\n }\n \n @media all and (max-width: 840px){\n@@ -4314,28 +6394,23 @@\n }\n \n @media all and (max-width: 750px){\n-    :root{\n-        --editor-toolbar-base-offset:40px;\n-    }\n     #outerContainer .hiddenMediumView{\n-        display:none;\n+        display:none !important;\n     }\n-    #outerContainer .visibleMediumView{\n-        display:inherit;\n+    #outerContainer .visibleMediumView:not(.hidden, [hidden]){\n+        display:inline-block !important;\n     }\n }\n \n @media all and (max-width: 690px){\n     .hiddenSmallView,\n     .hiddenSmallView *{\n-        display:none;\n+        display:none !important;\n     }\n-    .toolbarButtonSpacer{\n+\n+    #toolbarContainer #toolbarViewer .toolbarButtonSpacer{\n         width:0;\n     }\n-    .findbar{\n-        inset-inline-start:34px;\n-    }\n }\n \n @media all and (max-width: 560px){\n@@ -4344,6 +6419,7 @@\n     }\n }\n \n+\n html.e2pdf-responsive,\n html.e2pdf-responsive #viewerContainer{\n     overflow-y:hidden;\n@@ -4385,6 +6461,11 @@\n     }\n }\n \n+\n+.e2pdf-dark-theme {\n+    color-scheme: dark;\n+}\n+\n html.e2pdf-hide-secondary-toolbar #secondaryToolbar,\n html.e2pdf-hide-secondary-toolbar #secondaryToolbarToggle,\n html.e2pdf-hide-secondary-toolbar #secondaryToolbarToggle .verticalToolbarSeparator,\n@@ -4513,8 +6594,33 @@\n     display: none;\n }\n \n-.e2pdf-pages-loaded #e2pdfViewerLoader {\n+.e2pdf-pages-loaded #e2pdfViewerLoader, .e2pdf-viewer-error #e2pdfViewerLoader {\n+    display: none;\n+}\n+\n+#e2pdfViewerLoadError {\n     display: none;\n+    width: 100%;\n+    color: #fff;\n+    position: absolute;\n+    transform: translateY(-50%);\n+    top: 50%;\n+    text-align: center;\n+    z-index: -1;\n+}\n+\n+.e2pdf-viewer-error #e2pdfViewerLoadError {\n+    display: block;\n+    z-index: 1;\n+}\n+\n+#e2pdfViewerLoadError, #e2pdfViewerLoadError a {\n+    color: #2a2a2e;\n+}\n+\n+.e2pdf-dark-theme #e2pdfViewerLoadError,\n+.e2pdf-dark-theme #e2pdfViewerLoadError a {\n+    color: #fff;\n }\n \n .e2pdf-viewer-loader-text {\n@@ -4557,15 +6663,10 @@\n     inset-inline-end: 67px;\n }\n \n-html.e2pdf-hide-freetext #editorFreeText {\n-    display: none;\n-}\n-\n-html.e2pdf-hide-ink #editorInk {\n-    display: none;\n-}\n-\n-html.e2pdf-hide-stamp #editorStamp {\n+html.e2pdf-hide-freetext #editorFreeText,\n+html.e2pdf-hide-ink #editorInk,\n+html.e2pdf-hide-stamp #editorStamp,\n+html.e2pdf-hide-highlight #editorHighlight {\n     display: none;\n }\n \n@@ -4594,14 +6695,25 @@\n     display: none;\n }\n \n+#mainContainer {\n+    min-width: 200px;\n+}\n+\n+@media all and (max-width: 350px) {\n+    #toolbarViewerMiddle {\n+        display: none;\n+    }\n+}\n+\n @media all and (max-width: 750px) {\n     html.e2pdf-hide-secondary-toolbar #outerContainer .hiddenMediumView {\n-        display: inherit;\n+        display: inherit !important;\n     }\n }\n \n @media all and (max-width: 820px) {\n     html.e2pdf-hide-secondary-toolbar #outerContainer .hiddenLargeView {\n-        display: inherit;\n+        display: inherit !important;\n     }\n }\n+\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Fviewer.html \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Fviewer.html\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Fviewer.html\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Fviewer.html\t2026-02-24 09:27:28.000000000 +0000\n@@ -1,4 +1,4 @@\n-\u003C!DOCTYPE html>\n+﻿\u003C!DOCTYPE html>\n \u003C!--\n Copyright 2012 Mozilla Foundation\n \n@@ -21,6 +21,41 @@\n See https:\u002F\u002Fgithub.com\u002Fadobe-type-tools\u002Fcmap-resources\n -->\n \u003Cscript>\n+    const originalFetch = window.fetch;\n+    window.fetch = function (input, init = {}) {\n+        const url = input instanceof Request ? input.url : input.toString();\n+        const returnDefault = url.includes('.json') || url.includes('.ftl');\n+        if (returnDefault) {\n+            return originalFetch(input, init);\n+        }\n+        const req = {...init};\n+        req.headers = new Headers(req.headers || {});\n+        req.headers.set('X-E2PDF-REQUEST', 'true');\n+        return originalFetch(input, req)\n+                .then(resp => {\n+                    if (resp.ok) {\n+                        return resp;\n+                    } else {\n+                        var errorMessage = 'Something went wrong!';\n+                        return resp.json().then((json) => {\n+                            if (json && json.redirect_url) {\n+                                errorMessage = json.redirect_error_message;\n+                                throw new Error(errorMessage);\n+                            } else {\n+                                if (json && json.error) {\n+                                    errorMessage = json.error;\n+                                }\n+                                throw new Error(errorMessage);\n+                            }\n+                        }).catch(() => {\n+                            throw new Error(errorMessage);\n+                        });\n+                    }\n+                }).catch((error) => {\n+            document.getElementById('e2pdfViewerLoadError').innerHTML = error.message || 'Something went wrong!';\n+            document.documentElement.classList.add('e2pdf-viewer-error');\n+        });\n+    };\n     document.addEventListener('DOMContentLoaded', () => {\n         if (window.MutationObserver) {\n             new MutationObserver((mutationsList, observer) => {\n@@ -149,6 +184,9 @@\n         if (classList.includes(\"e2pdf-hide-stamp\")) {\n             classes.push('e2pdf-hide-stamp');\n         }\n+        if (classList.includes(\"e2pdf-hide-highlight\")) {\n+            classes.push('e2pdf-hide-highlight');\n+        }\n         if (classList.includes(\"e2pdf-hide-editor\")) {\n             classes.push('e2pdf-hide-editor');\n         }\n@@ -170,40 +208,39 @@\n     \u003Ctitle>PDF\u003C\u002Ftitle>\n     \u003C!-- This snippet is used in production (included from viewer.html) -->\n     \u003Clink rel=\"resource\" type=\"application\u002Fl10n\" href=\"locale\u002Flocale.json\">\n-    \u003Cscript src=\"..\u002Fbuild\u002Fpdf.js?v=1.24.14\" type=\"module\">\u003C\u002Fscript>\n-    \u003Clink rel=\"stylesheet\" href=\"viewer.css?v=1.24.14\">\n-    \u003Clink rel=\"stylesheet\" href=\"..\u002F..\u002F..\u002F..\u002F..\u002Fuploads\u002Fe2pdf\u002Fviewer\u002Fstyle.css?v=1.24.14\">\n-    \u003Cscript src=\"viewer.js?v=1.24.14\" type=\"module\">\u003C\u002Fscript>\n+    \u003Cscript src=\"..\u002Fbuild\u002Fpdf.js?v=1.29.11\" type=\"module\">\u003C\u002Fscript>\n+    \u003Clink rel=\"stylesheet\" href=\"viewer.css?v=1.29.11\">\n+    \u003Clink rel=\"stylesheet\" href=\"..\u002F..\u002F..\u002F..\u002F..\u002Fuploads\u002Fe2pdf\u002Fviewer\u002Fstyle.css?v=1.29.11\">\n+    \u003Cscript src=\"viewer.js?v=1.29.11\" type=\"module\">\u003C\u002Fscript>\n \u003C\u002Fhead>\n-\n-\u003Cbody tabindex=\"1\">\n+\u003Cbody tabindex=\"0\">\n     \u003Cdiv id=\"outerContainer\">\n \n         \u003Cdiv id=\"sidebarContainer\">\n-            \u003Cdiv id=\"toolbarSidebar\">\n+            \u003Cdiv id=\"toolbarSidebar\" class=\"toolbarHorizontalGroup\">\n                 \u003Cdiv id=\"toolbarSidebarLeft\">\n-                    \u003Cdiv id=\"sidebarViewButtons\" class=\"splitToolbarButton toggled\" role=\"radiogroup\">\n-                        \u003Cbutton id=\"viewThumbnail\" class=\"toolbarButton toggled\" title=\"Show Thumbnails\" tabindex=\"2\" data-l10n-id=\"pdfjs-thumbs-button\" role=\"radio\" aria-checked=\"true\" aria-controls=\"thumbnailView\">\n-                            \u003Cspan data-l10n-id=\"pdfjs-thumbs-button-label\">Thumbnails\u003C\u002Fspan>\n+                    \u003Cdiv id=\"sidebarViewButtons\" class=\"toolbarHorizontalGroup toggled\" role=\"radiogroup\">\n+                        \u003Cbutton id=\"viewThumbnail\" class=\"toolbarButton toggled\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-thumbs-button\" role=\"radio\" aria-checked=\"true\" aria-controls=\"thumbnailView\">\n+                            \u003Cspan data-l10n-id=\"pdfjs-thumbs-button-label\">\u003C\u002Fspan>\n                         \u003C\u002Fbutton>\n-                        \u003Cbutton id=\"viewOutline\" class=\"toolbarButton\" title=\"Show Document Outline (double-click to expand\u002Fcollapse all items)\" tabindex=\"3\" data-l10n-id=\"pdfjs-document-outline-button\" role=\"radio\" aria-checked=\"false\" aria-controls=\"outlineView\">\n-                            \u003Cspan data-l10n-id=\"pdfjs-document-outline-button-label\">Document Outline\u003C\u002Fspan>\n+                        \u003Cbutton id=\"viewOutline\" class=\"toolbarButton\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-document-outline-button\" role=\"radio\" aria-checked=\"false\" aria-controls=\"outlineView\">\n+                            \u003Cspan data-l10n-id=\"pdfjs-document-outline-button-label\">\u003C\u002Fspan>\n                         \u003C\u002Fbutton>\n-                        \u003Cbutton id=\"viewAttachments\" class=\"toolbarButton\" title=\"Show Attachments\" tabindex=\"4\" data-l10n-id=\"pdfjs-attachments-button\" role=\"radio\" aria-checked=\"false\" aria-controls=\"attachmentsView\">\n-                            \u003Cspan data-l10n-id=\"pdfjs-attachments-button-label\">Attachments\u003C\u002Fspan>\n+                        \u003Cbutton id=\"viewAttachments\" class=\"toolbarButton\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-attachments-button\" role=\"radio\" aria-checked=\"false\" aria-controls=\"attachmentsView\">\n+                            \u003Cspan data-l10n-id=\"pdfjs-attachments-button-label\">\u003C\u002Fspan>\n                         \u003C\u002Fbutton>\n-                        \u003Cbutton id=\"viewLayers\" class=\"toolbarButton\" title=\"Show Layers (double-click to reset all layers to the default state)\" tabindex=\"5\" data-l10n-id=\"pdfjs-layers-button\" role=\"radio\" aria-checked=\"false\" aria-controls=\"layersView\">\n-                            \u003Cspan data-l10n-id=\"pdfjs-layers-button-label\">Layers\u003C\u002Fspan>\n+                        \u003Cbutton id=\"viewLayers\" class=\"toolbarButton\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-layers-button\" role=\"radio\" aria-checked=\"false\" aria-controls=\"layersView\">\n+                            \u003Cspan data-l10n-id=\"pdfjs-layers-button-label\">\u003C\u002Fspan>\n                         \u003C\u002Fbutton>\n                     \u003C\u002Fdiv>\n                 \u003C\u002Fdiv>\n \n                 \u003Cdiv id=\"toolbarSidebarRight\">\n-                    \u003Cdiv id=\"outlineOptionsContainer\">\n+                    \u003Cdiv id=\"outlineOptionsContainer\" class=\"toolbarHorizontalGroup\">\n                         \u003Cdiv class=\"verticalToolbarSeparator\">\u003C\u002Fdiv>\n \n-                        \u003Cbutton id=\"currentOutlineItem\" class=\"toolbarButton\" disabled=\"disabled\" title=\"Find Current Outline Item\" tabindex=\"6\" data-l10n-id=\"pdfjs-current-outline-item-button\">\n-                            \u003Cspan data-l10n-id=\"pdfjs-current-outline-item-button-label\">Current Outline Item\u003C\u002Fspan>\n+                        \u003Cbutton id=\"currentOutlineItem\" class=\"toolbarButton\" type=\"button\" disabled=\"disabled\" tabindex=\"0\" data-l10n-id=\"pdfjs-current-outline-item-button\">\n+                            \u003Cspan data-l10n-id=\"pdfjs-current-outline-item-button-label\">\u003C\u002Fspan>\n                         \u003C\u002Fbutton>\n                     \u003C\u002Fdiv>\n                 \u003C\u002Fdiv>\n@@ -222,276 +259,314 @@\n         \u003C\u002Fdiv>  \u003C!-- sidebarContainer -->\n \n         \u003Cdiv id=\"mainContainer\">\n-            \u003Cdiv class=\"findbar hidden doorHanger\" id=\"findbar\">\n-                \u003Cdiv id=\"findbarInputContainer\">\n-                    \u003Cspan class=\"loadingInput end\">\n-                        \u003Cinput id=\"findInput\" class=\"toolbarField\" title=\"Find\" placeholder=\"Find in document…\" tabindex=\"91\" data-l10n-id=\"pdfjs-find-input\" aria-invalid=\"false\">\n-                    \u003C\u002Fspan>\n-                    \u003Cdiv class=\"splitToolbarButton\">\n-                        \u003Cbutton id=\"findPrevious\" class=\"toolbarButton\" title=\"Find the previous occurrence of the phrase\" tabindex=\"92\" data-l10n-id=\"pdfjs-find-previous-button\">\n-                            \u003Cspan data-l10n-id=\"pdfjs-find-previous-button-label\">Previous\u003C\u002Fspan>\n-                        \u003C\u002Fbutton>\n-                        \u003Cdiv class=\"splitToolbarButtonSeparator\">\u003C\u002Fdiv>\n-                        \u003Cbutton id=\"findNext\" class=\"toolbarButton\" title=\"Find the next occurrence of the phrase\" tabindex=\"93\" data-l10n-id=\"pdfjs-find-next-button\">\n-                            \u003Cspan data-l10n-id=\"pdfjs-find-next-button-label\">Next\u003C\u002Fspan>\n-                        \u003C\u002Fbutton>\n-                    \u003C\u002Fdiv>\n-                \u003C\u002Fdiv>\n-\n-                \u003Cdiv id=\"findbarOptionsOneContainer\">\n-                    \u003Cinput type=\"checkbox\" id=\"findHighlightAll\" class=\"toolbarField\" tabindex=\"94\">\n-                    \u003Clabel for=\"findHighlightAll\" class=\"toolbarLabel\" data-l10n-id=\"pdfjs-find-highlight-checkbox\">Highlight All\u003C\u002Flabel>\n-                    \u003Cinput type=\"checkbox\" id=\"findMatchCase\" class=\"toolbarField\" tabindex=\"95\">\n-                    \u003Clabel for=\"findMatchCase\" class=\"toolbarLabel\" data-l10n-id=\"pdfjs-find-match-case-checkbox-label\">Match Case\u003C\u002Flabel>\n-                \u003C\u002Fdiv>\n-                \u003Cdiv id=\"findbarOptionsTwoContainer\">\n-                    \u003Cinput type=\"checkbox\" id=\"findMatchDiacritics\" class=\"toolbarField\" tabindex=\"96\">\n-                    \u003Clabel for=\"findMatchDiacritics\" class=\"toolbarLabel\" data-l10n-id=\"pdfjs-find-match-diacritics-checkbox-label\">Match Diacritics\u003C\u002Flabel>\n-                    \u003Cinput type=\"checkbox\" id=\"findEntireWord\" class=\"toolbarField\" tabindex=\"97\">\n-                    \u003Clabel for=\"findEntireWord\" class=\"toolbarLabel\" data-l10n-id=\"pdfjs-find-entire-word-checkbox-label\">Whole Words\u003C\u002Flabel>\n-                \u003C\u002Fdiv>\n-\n-                \u003Cdiv id=\"findbarMessageContainer\" aria-live=\"polite\">\n-                    \u003Cspan id=\"findResultsCount\" class=\"toolbarLabel\">\u003C\u002Fspan>\n-                    \u003Cspan id=\"findMsg\" class=\"toolbarLabel\">\u003C\u002Fspan>\n-                \u003C\u002Fdiv>\n-            \u003C\u002Fdiv>  \u003C!-- findbar -->\n-\n-            \u003Cdiv class=\"editorParamsToolbar hidden doorHangerRight\" id=\"editorHighlightParamsToolbar\">\n-                \u003Cdiv id=\"highlightParamsToolbarContainer\" class=\"editorParamsToolbarContainer\">\n-                    \u003Cdiv id=\"editorHighlightColorPicker\" class=\"colorPicker\">\n-                        \u003Cspan id=\"highlightColorPickerLabel\" class=\"editorParamsLabel\" data-l10n-id=\"pdfjs-editor-highlight-colorpicker-label\">Highlight color\u003C\u002Fspan>\n-                    \u003C\u002Fdiv>\n-                    \u003Cdiv id=\"editorHighlightThickness\">\n-                        \u003Clabel for=\"editorFreeHighlightThickness\" class=\"editorParamsLabel\" data-l10n-id=\"pdfjs-editor-free-highlight-thickness-input\">Thickness\u003C\u002Flabel>\n-                        \u003Cdiv class=\"thicknessPicker\">\n-                            \u003Cinput type=\"range\" id=\"editorFreeHighlightThickness\" class=\"editorParamsSlider\" data-l10n-id=\"pdfjs-editor-free-highlight-thickness-title\" value=\"12\" min=\"8\" max=\"24\" step=\"1\" tabindex=\"101\">\n-                        \u003C\u002Fdiv>\n-                    \u003C\u002Fdiv>\n-                    \u003Cdiv id=\"editorHighlightVisibility\">\n-                        \u003Cdiv class=\"divider\">\u003C\u002Fdiv>\n-                        \u003Cdiv class=\"toggler\">\n-                            \u003Clabel for=\"editorHighlightShowAll\" class=\"editorParamsLabel\" data-l10n-id=\"pdfjs-editor-highlight-show-all-button-label\">Show all\u003C\u002Flabel>\n-                            \u003Cbutton id=\"editorHighlightShowAll\" class=\"toggle-button\" data-l10n-id=\"pdfjs-editor-highlight-show-all-button\" aria-pressed=\"true\" tabindex=\"102\">\u003C\u002Fbutton>\n-                        \u003C\u002Fdiv>\n-                    \u003C\u002Fdiv>\n-                \u003C\u002Fdiv>\n-            \u003C\u002Fdiv>\n-\n-            \u003Cdiv class=\"editorParamsToolbar hidden doorHangerRight\" id=\"editorFreeTextParamsToolbar\">\n-                \u003Cdiv class=\"editorParamsToolbarContainer\">\n-                    \u003Cdiv class=\"editorParamsSetter\">\n-                        \u003Clabel for=\"editorFreeTextColor\" class=\"editorParamsLabel\" data-l10n-id=\"pdfjs-editor-free-text-color-input\">Color\u003C\u002Flabel>\n-                        \u003Cinput type=\"color\" id=\"editorFreeTextColor\" class=\"editorParamsColor\" tabindex=\"103\">\n-                    \u003C\u002Fdiv>\n-                    \u003Cdiv class=\"editorParamsSetter\">\n-                        \u003Clabel for=\"editorFreeTextFontSize\" class=\"editorParamsLabel\" data-l10n-id=\"pdfjs-editor-free-text-size-input\">Size\u003C\u002Flabel>\n-                        \u003Cinput type=\"range\" id=\"editorFreeTextFontSize\" class=\"editorParamsSlider\" value=\"10\" min=\"5\" max=\"100\" step=\"1\" tabindex=\"104\">\n-                    \u003C\u002Fdiv>\n-                \u003C\u002Fdiv>\n-            \u003C\u002Fdiv>\n-\n-            \u003Cdiv class=\"editorParamsToolbar hidden doorHangerRight\" id=\"editorInkParamsToolbar\">\n-                \u003Cdiv class=\"editorParamsToolbarContainer\">\n-                    \u003Cdiv class=\"editorParamsSetter\">\n-                        \u003Clabel for=\"editorInkColor\" class=\"editorParamsLabel\" data-l10n-id=\"pdfjs-editor-ink-color-input\">Color\u003C\u002Flabel>\n-                        \u003Cinput type=\"color\" id=\"editorInkColor\" class=\"editorParamsColor\" tabindex=\"105\">\n-                    \u003C\u002Fdiv>\n-                    \u003Cdiv class=\"editorParamsSetter\">\n-                        \u003Clabel for=\"editorInkThickness\" class=\"editorParamsLabel\" data-l10n-id=\"pdfjs-editor-ink-thickness-input\">Thickness\u003C\u002Flabel>\n-                        \u003Cinput type=\"range\" id=\"editorInkThickness\" class=\"editorParamsSlider\" value=\"1\" min=\"1\" max=\"20\" step=\"1\" tabindex=\"106\">\n-                    \u003C\u002Fdiv>\n-                    \u003Cdiv class=\"editorParamsSetter\">\n-                        \u003Clabel for=\"editorInkOpacity\" class=\"editorParamsLabel\" data-l10n-id=\"pdfjs-editor-ink-opacity-input\">Opacity\u003C\u002Flabel>\n-                        \u003Cinput type=\"range\" id=\"editorInkOpacity\" class=\"editorParamsSlider\" value=\"100\" min=\"1\" max=\"100\" step=\"1\" tabindex=\"107\">\n-                    \u003C\u002Fdiv>\n-                \u003C\u002Fdiv>\n-            \u003C\u002Fdiv>\n-\n-            \u003Cdiv class=\"editorParamsToolbar hidden doorHangerRight\" id=\"editorStampParamsToolbar\">\n-                \u003Cdiv class=\"editorParamsToolbarContainer\">\n-                    \u003Cbutton id=\"editorStampAddImage\" class=\"secondaryToolbarButton\" title=\"Add image\" tabindex=\"108\" data-l10n-id=\"pdfjs-editor-stamp-add-image-button\">\n-                        \u003Cspan class=\"editorParamsLabel\" data-l10n-id=\"pdfjs-editor-stamp-add-image-button-label\">Add image\u003C\u002Fspan>\n-                    \u003C\u002Fbutton>\n-                \u003C\u002Fdiv>\n-            \u003C\u002Fdiv>\n-\n-            \u003Cdiv id=\"secondaryToolbar\" class=\"secondaryToolbar hidden doorHangerRight\">\n-                \u003Cdiv id=\"secondaryToolbarButtonContainer\">\n-                    \u003Cbutton id=\"secondaryOpenFile\" class=\"secondaryToolbarButton\" title=\"Open File\" tabindex=\"51\" data-l10n-id=\"pdfjs-open-file-button\">\n-                        \u003Cspan data-l10n-id=\"pdfjs-open-file-button-label\">Open\u003C\u002Fspan>\n-                    \u003C\u002Fbutton>\n-\n-                    \u003Cbutton id=\"secondaryPrint\" class=\"secondaryToolbarButton visibleMediumView\" title=\"Print\" tabindex=\"52\" data-l10n-id=\"pdfjs-print-button\">\n-                        \u003Cspan data-l10n-id=\"pdfjs-print-button-label\">Print\u003C\u002Fspan>\n-                    \u003C\u002Fbutton>\n-\n-                    \u003Cbutton id=\"secondaryDownload\" class=\"secondaryToolbarButton visibleMediumView\" title=\"Save\" tabindex=\"53\" data-l10n-id=\"pdfjs-save-button\">\n-                        \u003Cspan data-l10n-id=\"pdfjs-save-button-label\">Save\u003C\u002Fspan>\n-                    \u003C\u002Fbutton>\n-\n-                    \u003Cdiv class=\"horizontalToolbarSeparator\">\u003C\u002Fdiv>\n-\n-                    \u003Cbutton id=\"presentationMode\" class=\"secondaryToolbarButton\" title=\"Switch to Presentation Mode\" tabindex=\"54\" data-l10n-id=\"pdfjs-presentation-mode-button\">\n-                        \u003Cspan data-l10n-id=\"pdfjs-presentation-mode-button-label\">Presentation Mode\u003C\u002Fspan>\n-                    \u003C\u002Fbutton>\n-\n-                    \u003Ca href=\"#\" id=\"viewBookmark\" class=\"secondaryToolbarButton\" title=\"Current Page (View URL from Current Page)\" tabindex=\"55\" data-l10n-id=\"pdfjs-bookmark-button\">\n-                        \u003Cspan data-l10n-id=\"pdfjs-bookmark-button-label\">Current Page\u003C\u002Fspan>\n-                    \u003C\u002Fa>\n-\n-                    \u003Cdiv id=\"viewBookmarkSeparator\" class=\"horizontalToolbarSeparator\">\u003C\u002Fdiv>\n-\n-                    \u003Cbutton id=\"firstPage\" class=\"secondaryToolbarButton\" title=\"Go to First Page\" tabindex=\"56\" data-l10n-id=\"pdfjs-first-page-button\">\n-                        \u003Cspan data-l10n-id=\"pdfjs-first-page-button-label\">Go to First Page\u003C\u002Fspan>\n-                    \u003C\u002Fbutton>\n-                    \u003Cbutton id=\"lastPage\" class=\"secondaryToolbarButton\" title=\"Go to Last Page\" tabindex=\"57\" data-l10n-id=\"pdfjs-last-page-button\">\n-                        \u003Cspan data-l10n-id=\"pdfjs-last-page-button-label\">Go to Last Page\u003C\u002Fspan>\n-                    \u003C\u002Fbutton>\n-\n-                    \u003Cdiv class=\"horizontalToolbarSeparator\">\u003C\u002Fdiv>\n-\n-                    \u003Cbutton id=\"pageRotateCw\" class=\"secondaryToolbarButton\" title=\"Rotate Clockwise\" tabindex=\"58\" data-l10n-id=\"pdfjs-page-rotate-cw-button\">\n-                        \u003Cspan data-l10n-id=\"pdfjs-page-rotate-cw-button-label\">Rotate Clockwise\u003C\u002Fspan>\n-                    \u003C\u002Fbutton>\n-                    \u003Cbutton id=\"pageRotateCcw\" class=\"secondaryToolbarButton\" title=\"Rotate Counterclockwise\" tabindex=\"59\" data-l10n-id=\"pdfjs-page-rotate-ccw-button\">\n-                        \u003Cspan data-l10n-id=\"pdfjs-page-rotate-ccw-button-label\">Rotate Counterclockwise\u003C\u002Fspan>\n-                    \u003C\u002Fbutton>\n-\n-                    \u003Cdiv class=\"horizontalToolbarSeparator\">\u003C\u002Fdiv>\n-\n-                    \u003Cdiv id=\"cursorToolButtons\" role=\"radiogroup\">\n-                        \u003Cbutton id=\"cursorSelectTool\" class=\"secondaryToolbarButton toggled\" title=\"Enable Text Selection Tool\" tabindex=\"60\" data-l10n-id=\"pdfjs-cursor-text-select-tool-button\" role=\"radio\" aria-checked=\"true\">\n-                            \u003Cspan data-l10n-id=\"pdfjs-cursor-text-select-tool-button-label\">Text Selection Tool\u003C\u002Fspan>\n-                        \u003C\u002Fbutton>\n-                        \u003Cbutton id=\"cursorHandTool\" class=\"secondaryToolbarButton\" title=\"Enable Hand Tool\" tabindex=\"61\" data-l10n-id=\"pdfjs-cursor-hand-tool-button\" role=\"radio\" aria-checked=\"false\">\n-                            \u003Cspan data-l10n-id=\"pdfjs-cursor-hand-tool-button-label\">Hand Tool\u003C\u002Fspan>\n-                        \u003C\u002Fbutton>\n-                    \u003C\u002Fdiv>\n-\n-                    \u003Cdiv class=\"horizontalToolbarSeparator\">\u003C\u002Fdiv>\n-\n-                    \u003Cdiv id=\"scrollModeButtons\" role=\"radiogroup\">\n-                        \u003Cbutton id=\"scrollPage\" class=\"secondaryToolbarButton\" title=\"Use Page Scrolling\" tabindex=\"62\" data-l10n-id=\"pdfjs-scroll-page-button\" role=\"radio\" aria-checked=\"false\">\n-                            \u003Cspan data-l10n-id=\"pdfjs-scroll-page-button-label\">Page Scrolling\u003C\u002Fspan>\n-                        \u003C\u002Fbutton>\n-                        \u003Cbutton id=\"scrollVertical\" class=\"secondaryToolbarButton toggled\" title=\"Use Vertical Scrolling\" tabindex=\"63\" data-l10n-id=\"pdfjs-scroll-vertical-button\" role=\"radio\" aria-checked=\"true\">\n-                            \u003Cspan data-l10n-id=\"pdfjs-scroll-vertical-button-label\" >Vertical Scrolling\u003C\u002Fspan>\n-                        \u003C\u002Fbutton>\n-                        \u003Cbutton id=\"scrollHorizontal\" class=\"secondaryToolbarButton\" title=\"Use Horizontal Scrolling\" tabindex=\"64\" data-l10n-id=\"pdfjs-scroll-horizontal-button\" role=\"radio\" aria-checked=\"false\">\n-                            \u003Cspan data-l10n-id=\"pdfjs-scroll-horizontal-button-label\">Horizontal Scrolling\u003C\u002Fspan>\n-                        \u003C\u002Fbutton>\n-                        \u003Cbutton id=\"scrollWrapped\" class=\"secondaryToolbarButton\" title=\"Use Wrapped Scrolling\" tabindex=\"65\" data-l10n-id=\"pdfjs-scroll-wrapped-button\" role=\"radio\" aria-checked=\"false\">\n-                            \u003Cspan data-l10n-id=\"pdfjs-scroll-wrapped-button-label\">Wrapped Scrolling\u003C\u002Fspan>\n-                        \u003C\u002Fbutton>\n-                    \u003C\u002Fdiv>\n-\n-                    \u003Cdiv class=\"horizontalToolbarSeparator\">\u003C\u002Fdiv>\n-\n-                    \u003Cdiv id=\"spreadModeButtons\" role=\"radiogroup\">\n-                        \u003Cbutton id=\"spreadNone\" class=\"secondaryToolbarButton toggled\" title=\"Do not join page spreads\" tabindex=\"66\" data-l10n-id=\"pdfjs-spread-none-button\" role=\"radio\" aria-checked=\"true\">\n-                            \u003Cspan data-l10n-id=\"pdfjs-spread-none-button-label\">No Spreads\u003C\u002Fspan>\n-                        \u003C\u002Fbutton>\n-                        \u003Cbutton id=\"spreadOdd\" class=\"secondaryToolbarButton\" title=\"Join page spreads starting with odd-numbered pages\" tabindex=\"67\" data-l10n-id=\"pdfjs-spread-odd-button\" role=\"radio\" aria-checked=\"false\">\n-                            \u003Cspan data-l10n-id=\"pdfjs-spread-odd-button-label\">Odd Spreads\u003C\u002Fspan>\n-                        \u003C\u002Fbutton>\n-                        \u003Cbutton id=\"spreadEven\" class=\"secondaryToolbarButton\" title=\"Join page spreads starting with even-numbered pages\" tabindex=\"68\" data-l10n-id=\"pdfjs-spread-even-button\" role=\"radio\" aria-checked=\"false\">\n-                            \u003Cspan data-l10n-id=\"pdfjs-spread-even-button-label\">Even Spreads\u003C\u002Fspan>\n-                        \u003C\u002Fbutton>\n-                    \u003C\u002Fdiv>\n-\n-                    \u003Cdiv class=\"horizontalToolbarSeparator\">\u003C\u002Fdiv>\n-\n-                    \u003Cbutton id=\"documentProperties\" class=\"secondaryToolbarButton\" title=\"Document Properties…\" tabindex=\"69\" data-l10n-id=\"pdfjs-document-properties-button\" aria-controls=\"documentPropertiesDialog\">\n-                        \u003Cspan data-l10n-id=\"pdfjs-document-properties-button-label\">Document Properties…\u003C\u002Fspan>\n-                    \u003C\u002Fbutton>\n-                \u003C\u002Fdiv>\n-            \u003C\u002Fdiv>  \u003C!-- secondaryToolbar -->\n-\n             \u003Cdiv class=\"toolbar\">\n                 \u003Cdiv id=\"toolbarContainer\">\n-                    \u003Cdiv id=\"toolbarViewer\">\n-                        \u003Cdiv id=\"toolbarViewerLeft\">\n-                            \u003Cbutton id=\"sidebarToggle\" class=\"toolbarButton\" title=\"Toggle Sidebar\" tabindex=\"11\" data-l10n-id=\"pdfjs-toggle-sidebar-button\" aria-expanded=\"false\" aria-controls=\"sidebarContainer\">\n-                                \u003Cspan data-l10n-id=\"pdfjs-toggle-sidebar-button-label\">Toggle Sidebar\u003C\u002Fspan>\n+                    \u003Cdiv id=\"toolbarViewer\" class=\"toolbarHorizontalGroup\">\n+                        \u003Cdiv id=\"toolbarViewerLeft\" class=\"toolbarHorizontalGroup\">\n+                            \u003Cbutton id=\"sidebarToggleButton\" class=\"toolbarButton\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-toggle-sidebar-button\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"sidebarContainer\">\n+                                \u003Cspan data-l10n-id=\"pdfjs-toggle-sidebar-button-label\">\u003C\u002Fspan>\n                             \u003C\u002Fbutton>\n                             \u003Cdiv class=\"toolbarButtonSpacer\">\u003C\u002Fdiv>\n-                            \u003Cbutton id=\"viewFind\" class=\"toolbarButton\" title=\"Find in Document\" tabindex=\"12\" data-l10n-id=\"pdfjs-findbar-button\" aria-expanded=\"false\" aria-controls=\"findbar\">\n-                                \u003Cspan data-l10n-id=\"pdfjs-findbar-button-label\">Find\u003C\u002Fspan>\n-                            \u003C\u002Fbutton>\n-                            \u003Cdiv class=\"splitToolbarButton hiddenSmallView\">\n-                                \u003Cbutton class=\"toolbarButton\" title=\"Previous Page\" id=\"previous\" tabindex=\"13\" data-l10n-id=\"pdfjs-previous-button\">\n-                                    \u003Cspan data-l10n-id=\"pdfjs-previous-button-label\">Previous\u003C\u002Fspan>\n+                            \u003Cdiv class=\"toolbarButtonWithContainer\">\n+                                \u003Cbutton id=\"viewFindButton\" class=\"toolbarButton\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-findbar-button\" aria-expanded=\"false\" aria-controls=\"findbar\">\n+                                    \u003Cspan data-l10n-id=\"pdfjs-findbar-button-label\">\u003C\u002Fspan>\n+                                \u003C\u002Fbutton>\n+                                \u003Cdiv class=\"hidden doorHanger toolbarHorizontalGroup\" id=\"findbar\">\n+                                    \u003Cdiv id=\"findInputContainer\" class=\"toolbarHorizontalGroup\">\n+                                        \u003Cspan class=\"loadingInput end toolbarHorizontalGroup\">\n+                                            \u003Cinput id=\"findInput\" class=\"toolbarField\" tabindex=\"0\" data-l10n-id=\"pdfjs-find-input\" aria-invalid=\"false\">\n+                                        \u003C\u002Fspan>\n+                                        \u003Cdiv class=\"toolbarHorizontalGroup\">\n+                                            \u003Cbutton id=\"findPreviousButton\" class=\"toolbarButton\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-find-previous-button\">\n+                                                \u003Cspan data-l10n-id=\"pdfjs-find-previous-button-label\">\u003C\u002Fspan>\n+                                            \u003C\u002Fbutton>\n+                                            \u003Cdiv class=\"splitToolbarButtonSeparator\">\u003C\u002Fdiv>\n+                                            \u003Cbutton id=\"findNextButton\" class=\"toolbarButton\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-find-next-button\">\n+                                                \u003Cspan data-l10n-id=\"pdfjs-find-next-button-label\">\u003C\u002Fspan>\n+                                            \u003C\u002Fbutton>\n+                                        \u003C\u002Fdiv>\n+                                    \u003C\u002Fdiv>\n+\n+                                    \u003Cdiv id=\"findbarOptionsOneContainer\" class=\"toolbarHorizontalGroup\">\n+                                        \u003Cdiv class=\"toggleButton toolbarLabel\">\n+                                            \u003Cinput type=\"checkbox\" id=\"findHighlightAll\" tabindex=\"0\" \u002F>\n+                                            \u003Clabel for=\"findHighlightAll\" data-l10n-id=\"pdfjs-find-highlight-checkbox\">\u003C\u002Flabel>\n+                                        \u003C\u002Fdiv>\n+                                        \u003Cdiv class=\"toggleButton toolbarLabel\">\n+                                            \u003Cinput type=\"checkbox\" id=\"findMatchCase\" tabindex=\"0\" \u002F>\n+                                            \u003Clabel for=\"findMatchCase\" data-l10n-id=\"pdfjs-find-match-case-checkbox-label\">\u003C\u002Flabel>\n+                                        \u003C\u002Fdiv>\n+                                    \u003C\u002Fdiv>\n+                                    \u003Cdiv id=\"findbarOptionsTwoContainer\" class=\"toolbarHorizontalGroup\">\n+                                        \u003Cdiv class=\"toggleButton toolbarLabel\">\n+                                            \u003Cinput type=\"checkbox\" id=\"findMatchDiacritics\" tabindex=\"0\" \u002F>\n+                                            \u003Clabel for=\"findMatchDiacritics\" data-l10n-id=\"pdfjs-find-match-diacritics-checkbox-label\">\u003C\u002Flabel>\n+                                        \u003C\u002Fdiv>\n+                                        \u003Cdiv class=\"toggleButton toolbarLabel\">\n+                                            \u003Cinput type=\"checkbox\" id=\"findEntireWord\" tabindex=\"0\" \u002F>\n+                                            \u003Clabel for=\"findEntireWord\" data-l10n-id=\"pdfjs-find-entire-word-checkbox-label\">\u003C\u002Flabel>\n+                                        \u003C\u002Fdiv>\n+                                    \u003C\u002Fdiv>\n+\n+                                    \u003Cdiv id=\"findbarMessageContainer\" class=\"toolbarHorizontalGroup\" aria-live=\"polite\">\n+                                        \u003Cspan id=\"findResultsCount\" class=\"toolbarLabel\">\u003C\u002Fspan>\n+                                        \u003Cspan id=\"findMsg\" class=\"toolbarLabel\">\u003C\u002Fspan>\n+                                    \u003C\u002Fdiv>\n+                                \u003C\u002Fdiv>  \u003C!-- findbar -->\n+                            \u003C\u002Fdiv>\n+                            \u003Cdiv class=\"toolbarHorizontalGroup hiddenSmallView\">\n+                                \u003Cbutton class=\"toolbarButton\" type=\"button\" id=\"previous\" tabindex=\"0\" data-l10n-id=\"pdfjs-previous-button\">\n+                                    \u003Cspan data-l10n-id=\"pdfjs-previous-button-label\">\u003C\u002Fspan>\n                                 \u003C\u002Fbutton>\n                                 \u003Cdiv class=\"splitToolbarButtonSeparator\">\u003C\u002Fdiv>\n-                                \u003Cbutton class=\"toolbarButton\" title=\"Next Page\" id=\"next\" tabindex=\"14\" data-l10n-id=\"pdfjs-next-button\">\n-                                    \u003Cspan data-l10n-id=\"pdfjs-next-button-label\">Next\u003C\u002Fspan>\n+                                \u003Cbutton class=\"toolbarButton\" type=\"button\" id=\"next\" tabindex=\"0\" data-l10n-id=\"pdfjs-next-button\">\n+                                    \u003Cspan data-l10n-id=\"pdfjs-next-button-label\">\u003C\u002Fspan>\n                                 \u003C\u002Fbutton>\n                             \u003C\u002Fdiv>\n-                            \u003Cspan class=\"loadingInput start\">\n-                                \u003Cinput type=\"number\" id=\"pageNumber\" class=\"toolbarField\" title=\"Page\" value=\"1\" min=\"1\" tabindex=\"15\" data-l10n-id=\"pdfjs-page-input\" autocomplete=\"off\">\n-                            \u003C\u002Fspan>\n-                            \u003Cspan id=\"numPages\" class=\"toolbarLabel\">\u003C\u002Fspan>\n+                            \u003Cdiv class=\"toolbarHorizontalGroup\">\n+                                \u003Cspan class=\"loadingInput start toolbarHorizontalGroup\">\n+                                    \u003Cinput type=\"number\" id=\"pageNumber\" class=\"toolbarField\" value=\"1\" min=\"1\" tabindex=\"0\" data-l10n-id=\"pdfjs-page-input\" autocomplete=\"off\">\n+                                \u003C\u002Fspan>\n+                                \u003Cspan id=\"numPages\" class=\"toolbarLabel\">\u003C\u002Fspan>\n+                            \u003C\u002Fdiv>\n                         \u003C\u002Fdiv>\n-                        \u003Cdiv id=\"toolbarViewerRight\">\n-                            \u003Cdiv id=\"editorModeButtons\" class=\"splitToolbarButton toggled\" role=\"radiogroup\">\n-                                \u003Cbutton id=\"editorHighlight\" class=\"toolbarButton\" hidden=\"true\" disabled=\"disabled\" title=\"Highlight\" role=\"radio\" aria-checked=\"false\" aria-controls=\"editorHighlightParamsToolbar\" tabindex=\"31\" data-l10n-id=\"pdfjs-editor-highlight-button\">\n-                                    \u003Cspan data-l10n-id=\"pdfjs-editor-highlight-button-label\">Highlight\u003C\u002Fspan>\n+                        \u003Cdiv id=\"toolbarViewerMiddle\" class=\"toolbarHorizontalGroup\">\n+                            \u003Cdiv class=\"toolbarHorizontalGroup\">\n+                                \u003Cbutton id=\"zoomOutButton\" class=\"toolbarButton\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-zoom-out-button\">\n+                                    \u003Cspan data-l10n-id=\"pdfjs-zoom-out-button-label\">\u003C\u002Fspan>\n                                 \u003C\u002Fbutton>\n-                                \u003Cbutton id=\"editorFreeText\" class=\"toolbarButton\" disabled=\"disabled\" title=\"Text\" role=\"radio\" aria-checked=\"false\" aria-controls=\"editorFreeTextParamsToolbar\" tabindex=\"32\" data-l10n-id=\"pdfjs-editor-free-text-button\">\n-                                    \u003Cspan data-l10n-id=\"pdfjs-editor-free-text-button-label\">Text\u003C\u002Fspan>\n-                                \u003C\u002Fbutton>\n-                                \u003Cbutton id=\"editorInk\" class=\"toolbarButton\" disabled=\"disabled\" title=\"Draw\" role=\"radio\" aria-checked=\"false\" aria-controls=\"editorInkParamsToolbar\" tabindex=\"33\" data-l10n-id=\"pdfjs-editor-ink-button\">\n-                                    \u003Cspan data-l10n-id=\"pdfjs-editor-ink-button-label\">Draw\u003C\u002Fspan>\n-                                \u003C\u002Fbutton>\n-                                \u003Cbutton id=\"editorStamp\" class=\"toolbarButton hidden\" disabled=\"disabled\" title=\"Add or edit images\" role=\"radio\" aria-checked=\"false\" aria-controls=\"editorStampParamsToolbar\" tabindex=\"34\" data-l10n-id=\"pdfjs-editor-stamp-button\">\n-                                    \u003Cspan data-l10n-id=\"pdfjs-editor-stamp-button-label\">Add or edit images\u003C\u002Fspan>\n+                                \u003Cdiv class=\"splitToolbarButtonSeparator\">\u003C\u002Fdiv>\n+                                \u003Cbutton id=\"zoomInButton\" class=\"toolbarButton\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-zoom-in-button\">\n+                                    \u003Cspan data-l10n-id=\"pdfjs-zoom-in-button-label\">\u003C\u002Fspan>\n                                 \u003C\u002Fbutton>\n                             \u003C\u002Fdiv>\n+                            \u003Cspan id=\"scaleSelectContainer\" class=\"dropdownToolbarButton\">\n+                                \u003Cselect id=\"scaleSelect\" tabindex=\"0\" data-l10n-id=\"pdfjs-zoom-select\">\n+                                    \u003Coption id=\"pageAutoOption\" value=\"auto\" selected=\"selected\" data-l10n-id=\"pdfjs-page-scale-auto\">\u003C\u002Foption>\n+                                    \u003Coption id=\"pageActualOption\" value=\"page-actual\" data-l10n-id=\"pdfjs-page-scale-actual\">\u003C\u002Foption>\n+                                    \u003Coption id=\"pageFitOption\" value=\"page-fit\" data-l10n-id=\"pdfjs-page-scale-fit\">\u003C\u002Foption>\n+                                    \u003Coption id=\"pageWidthOption\" value=\"page-width\" data-l10n-id=\"pdfjs-page-scale-width\">\u003C\u002Foption>\n+                                    \u003Coption id=\"customScaleOption\" value=\"custom\" disabled=\"disabled\" hidden=\"true\" data-l10n-id=\"pdfjs-page-scale-percent\" data-l10n-args='{ \"scale\": 0 }'>\u003C\u002Foption>\n+                                    \u003Coption value=\"0.5\" data-l10n-id=\"pdfjs-page-scale-percent\" data-l10n-args='{ \"scale\": 50 }'>\u003C\u002Foption>\n+                                    \u003Coption value=\"0.75\" data-l10n-id=\"pdfjs-page-scale-percent\" data-l10n-args='{ \"scale\": 75 }'>\u003C\u002Foption>\n+                                    \u003Coption value=\"1\" data-l10n-id=\"pdfjs-page-scale-percent\" data-l10n-args='{ \"scale\": 100 }'>\u003C\u002Foption>\n+                                    \u003Coption value=\"1.25\" data-l10n-id=\"pdfjs-page-scale-percent\" data-l10n-args='{ \"scale\": 125 }'>\u003C\u002Foption>\n+                                    \u003Coption value=\"1.5\" data-l10n-id=\"pdfjs-page-scale-percent\" data-l10n-args='{ \"scale\": 150 }'>\u003C\u002Foption>\n+                                    \u003Coption value=\"2\" data-l10n-id=\"pdfjs-page-scale-percent\" data-l10n-args='{ \"scale\": 200 }'>\u003C\u002Foption>\n+                                    \u003Coption value=\"3\" data-l10n-id=\"pdfjs-page-scale-percent\" data-l10n-args='{ \"scale\": 300 }'>\u003C\u002Foption>\n+                                    \u003Coption value=\"4\" data-l10n-id=\"pdfjs-page-scale-percent\" data-l10n-args='{ \"scale\": 400 }'>\u003C\u002Foption>\n+                                \u003C\u002Fselect>\n+                            \u003C\u002Fspan>\n+                        \u003C\u002Fdiv>\n+                        \u003Cdiv id=\"toolbarViewerRight\" class=\"toolbarHorizontalGroup\">\n+                            \u003Cdiv id=\"editorModeButtons\" class=\"toolbarHorizontalGroup\" role=\"radiogroup\">\n+                                \u003Cdiv id=\"editorSignature\" class=\"toolbarButtonWithContainer\" hidden=\"true\">\n+                                    \u003Cbutton id=\"editorSignatureButton\" class=\"toolbarButton\" type=\"button\" tabindex=\"0\" disabled=\"disabled\" role=\"radio\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"editorSignatureParamsToolbar\" data-l10n-id=\"pdfjs-editor-signature-button\">\n+                                        \u003Cspan data-l10n-id=\"pdfjs-editor-signature-button-label\">\u003C\u002Fspan>\n+                                    \u003C\u002Fbutton>\n+                                    \u003Cdiv class=\"editorParamsToolbar hidden doorHangerRight menu\" id=\"editorSignatureParamsToolbar\">\n+                                        \u003Cdiv id=\"addSignatureDoorHanger\" class=\"menuContainer\" role=\"region\" data-l10n-id=\"pdfjs-editor-add-signature-container\">\n+                                            \u003Cbutton id=\"editorSignatureAddSignature\" class=\"toolbarButton labeled\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-editor-signature-add-signature-button\">\n+                                                \u003Cspan data-l10n-id=\"pdfjs-editor-signature-add-signature-button-label\" class=\"editorParamsLabel\">\u003C\u002Fspan>\n+                                            \u003C\u002Fbutton>\n+                                        \u003C\u002Fdiv>\n+                                    \u003C\u002Fdiv>\n+                                \u003C\u002Fdiv>\n+                                \u003Cdiv id=\"editorHighlight\" class=\"toolbarButtonWithContainer\">\n+                                    \u003Cbutton id=\"editorHighlightButton\" class=\"toolbarButton\" type=\"button\" disabled=\"disabled\" role=\"radio\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"editorHighlightParamsToolbar\" tabindex=\"0\" data-l10n-id=\"pdfjs-editor-highlight-button\">\n+                                        \u003Cspan data-l10n-id=\"pdfjs-editor-highlight-button-label\">\u003C\u002Fspan>\n+                                    \u003C\u002Fbutton>\n+                                    \u003Cdiv class=\"editorParamsToolbar hidden doorHangerRight\" id=\"editorHighlightParamsToolbar\">\n+                                        \u003Cdiv id=\"highlightParamsToolbarContainer\" class=\"editorParamsToolbarContainer\">\n+                                            \u003Cdiv id=\"editorHighlightColorPicker\" class=\"colorPicker\">\n+                                                \u003Cspan id=\"highlightColorPickerLabel\" class=\"editorParamsLabel\" data-l10n-id=\"pdfjs-editor-highlight-colorpicker-label\">\u003C\u002Fspan>\n+                                            \u003C\u002Fdiv>\n+                                            \u003Cdiv id=\"editorHighlightThickness\">\n+                                                \u003Clabel for=\"editorFreeHighlightThickness\" class=\"editorParamsLabel\" data-l10n-id=\"pdfjs-editor-free-highlight-thickness-input\">\u003C\u002Flabel>\n+                                                \u003Cdiv class=\"thicknessPicker\">\n+                                                    \u003Cinput type=\"range\" id=\"editorFreeHighlightThickness\" class=\"editorParamsSlider\" data-l10n-id=\"pdfjs-editor-free-highlight-thickness-title\" value=\"12\" min=\"8\" max=\"24\" step=\"1\" tabindex=\"0\">\n+                                                \u003C\u002Fdiv>\n+                                            \u003C\u002Fdiv>\n+                                            \u003Cdiv id=\"editorHighlightVisibility\">\n+                                                \u003Cdiv class=\"divider\">\u003C\u002Fdiv>\n+                                                \u003Cdiv class=\"toggler\">\n+                                                    \u003Clabel for=\"editorHighlightShowAll\" class=\"editorParamsLabel\" data-l10n-id=\"pdfjs-editor-highlight-show-all-button-label\">\u003C\u002Flabel>\n+                                                    \u003Cbutton id=\"editorHighlightShowAll\" class=\"toggle-button\" type=\"button\" data-l10n-id=\"pdfjs-editor-highlight-show-all-button\" aria-pressed=\"true\" tabindex=\"0\">\u003C\u002Fbutton>\n+                                                \u003C\u002Fdiv>\n+                                            \u003C\u002Fdiv>\n+                                        \u003C\u002Fdiv>\n+                                    \u003C\u002Fdiv>\n+                                \u003C\u002Fdiv>\n+                                \u003Cdiv id=\"editorFreeText\" class=\"toolbarButtonWithContainer\">\n+                                    \u003Cbutton id=\"editorFreeTextButton\" class=\"toolbarButton\" type=\"button\" disabled=\"disabled\" role=\"radio\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"editorFreeTextParamsToolbar\" tabindex=\"0\" data-l10n-id=\"pdfjs-editor-free-text-button\">\n+                                        \u003Cspan data-l10n-id=\"pdfjs-editor-free-text-button-label\">\u003C\u002Fspan>\n+                                    \u003C\u002Fbutton>\n+                                    \u003Cdiv class=\"editorParamsToolbar hidden doorHangerRight\" id=\"editorFreeTextParamsToolbar\">\n+                                        \u003Cdiv class=\"editorParamsToolbarContainer\">\n+                                            \u003Cdiv class=\"editorParamsSetter\">\n+                                                \u003Clabel for=\"editorFreeTextColor\" class=\"editorParamsLabel\" data-l10n-id=\"pdfjs-editor-free-text-color-input\">\u003C\u002Flabel>\n+                                                \u003Cinput type=\"color\" id=\"editorFreeTextColor\" class=\"editorParamsColor\" tabindex=\"0\">\n+                                            \u003C\u002Fdiv>\n+                                            \u003Cdiv class=\"editorParamsSetter\">\n+                                                \u003Clabel for=\"editorFreeTextFontSize\" class=\"editorParamsLabel\" data-l10n-id=\"pdfjs-editor-free-text-size-input\">\u003C\u002Flabel>\n+                                                \u003Cinput type=\"range\" id=\"editorFreeTextFontSize\" class=\"editorParamsSlider\" value=\"10\" min=\"5\" max=\"100\" step=\"1\" tabindex=\"0\">\n+                                            \u003C\u002Fdiv>\n+                                        \u003C\u002Fdiv>\n+                                    \u003C\u002Fdiv>\n+                                \u003C\u002Fdiv>\n+                                \u003Cdiv id=\"editorInk\" class=\"toolbarButtonWithContainer\">\n+                                    \u003Cbutton id=\"editorInkButton\" class=\"toolbarButton\" type=\"button\" disabled=\"disabled\" role=\"radio\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"editorInkParamsToolbar\" tabindex=\"0\" data-l10n-id=\"pdfjs-editor-ink-button\">\n+                                        \u003Cspan data-l10n-id=\"pdfjs-editor-ink-button-label\">\u003C\u002Fspan>\n+                                    \u003C\u002Fbutton>\n+                                    \u003Cdiv class=\"editorParamsToolbar hidden doorHangerRight\" id=\"editorInkParamsToolbar\">\n+                                        \u003Cdiv class=\"editorParamsToolbarContainer\">\n+                                            \u003Cdiv class=\"editorParamsSetter\">\n+                                                \u003Clabel for=\"editorInkColor\" class=\"editorParamsLabel\" data-l10n-id=\"pdfjs-editor-ink-color-input\">\u003C\u002Flabel>\n+                                                \u003Cinput type=\"color\" id=\"editorInkColor\" class=\"editorParamsColor\" tabindex=\"0\">\n+                                            \u003C\u002Fdiv>\n+                                            \u003Cdiv class=\"editorParamsSetter\">\n+                                                \u003Clabel for=\"editorInkThickness\" class=\"editorParamsLabel\" data-l10n-id=\"pdfjs-editor-ink-thickness-input\">\u003C\u002Flabel>\n+                                                \u003Cinput type=\"range\" id=\"editorInkThickness\" class=\"editorParamsSlider\" value=\"1\" min=\"1\" max=\"20\" step=\"1\" tabindex=\"0\">\n+                                            \u003C\u002Fdiv>\n+                                            \u003Cdiv class=\"editorParamsSetter\">\n+                                                \u003Clabel for=\"editorInkOpacity\" class=\"editorParamsLabel\" data-l10n-id=\"pdfjs-editor-ink-opacity-input\">\u003C\u002Flabel>\n+                                                \u003Cinput type=\"range\" id=\"editorInkOpacity\" class=\"editorParamsSlider\" value=\"1\" min=\"0.05\" max=\"1\" step=\"0.05\" tabindex=\"0\">\n+                                            \u003C\u002Fdiv>\n+                                        \u003C\u002Fdiv>\n+                                    \u003C\u002Fdiv>\n+                                \u003C\u002Fdiv>\n+                                \u003Cdiv id=\"editorStamp\" class=\"toolbarButtonWithContainer\">\n+                                    \u003Cbutton id=\"editorStampButton\" class=\"toolbarButton\" type=\"button\" disabled=\"disabled\" role=\"radio\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"editorStampParamsToolbar\" tabindex=\"0\" data-l10n-id=\"pdfjs-editor-stamp-button\">\n+                                        \u003Cspan data-l10n-id=\"pdfjs-editor-stamp-button-label\">\u003C\u002Fspan>\n+                                    \u003C\u002Fbutton>\n+                                    \u003Cdiv class=\"editorParamsToolbar hidden doorHangerRight menu\" id=\"editorStampParamsToolbar\">\n+                                        \u003Cdiv class=\"menuContainer\">\n+                                            \u003Cbutton id=\"editorStampAddImage\" class=\"toolbarButton labeled\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-editor-stamp-add-image-button\">\n+                                                \u003Cspan class=\"editorParamsLabel\" data-l10n-id=\"pdfjs-editor-stamp-add-image-button-label\">\u003C\u002Fspan>\n+                                            \u003C\u002Fbutton>\n+                                        \u003C\u002Fdiv>\n+                                    \u003C\u002Fdiv>\n+                                \u003C\u002Fdiv>\n+                            \u003C\u002Fdiv>\n \n                             \u003Cdiv id=\"editorModeSeparator\" class=\"verticalToolbarSeparator\">\u003C\u002Fdiv>\n \n-                            \u003Cbutton id=\"print\" class=\"toolbarButton hiddenMediumView\" title=\"Print\" tabindex=\"41\" data-l10n-id=\"pdfjs-print-button\">\n-                                \u003Cspan data-l10n-id=\"pdfjs-print-button-label\">Print\u003C\u002Fspan>\n-                            \u003C\u002Fbutton>\n+                            \u003Cdiv class=\"toolbarHorizontalGroup hiddenMediumView\">\n+                                \u003Cbutton id=\"printButton\" class=\"toolbarButton\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-print-button\">\n+                                    \u003Cspan data-l10n-id=\"pdfjs-print-button-label\">\u003C\u002Fspan>\n+                                \u003C\u002Fbutton>\n \n-                            \u003Cbutton id=\"download\" class=\"toolbarButton hiddenMediumView\" title=\"Save\" tabindex=\"42\" data-l10n-id=\"pdfjs-save-button\">\n-                                \u003Cspan data-l10n-id=\"pdfjs-save-button-label\">Save\u003C\u002Fspan>\n-                            \u003C\u002Fbutton>\n+                                \u003Cbutton id=\"downloadButton\" class=\"toolbarButton\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-save-button\">\n+                                    \u003Cspan data-l10n-id=\"pdfjs-save-button-label\">\u003C\u002Fspan>\n+                                \u003C\u002Fbutton>\n+                            \u003C\u002Fdiv>\n \n                             \u003Cdiv class=\"verticalToolbarSeparator hiddenMediumView\">\u003C\u002Fdiv>\n \n-                            \u003Cbutton id=\"secondaryToolbarToggle\" class=\"toolbarButton\" title=\"Tools\" tabindex=\"43\" data-l10n-id=\"pdfjs-tools-button\" aria-expanded=\"false\" aria-controls=\"secondaryToolbar\">\n-                                \u003Cspan data-l10n-id=\"pdfjs-tools-button-label\">Tools\u003C\u002Fspan>\n-                            \u003C\u002Fbutton>\n-                        \u003C\u002Fdiv>\n-                        \u003Cdiv id=\"toolbarViewerMiddle\">\n-                            \u003Cdiv class=\"splitToolbarButton\">\n-                                \u003Cbutton id=\"zoomOut\" class=\"toolbarButton\" title=\"Zoom Out\" tabindex=\"21\" data-l10n-id=\"pdfjs-zoom-out-button\">\n-                                    \u003Cspan data-l10n-id=\"pdfjs-zoom-out-button-label\">Zoom Out\u003C\u002Fspan>\n-                                \u003C\u002Fbutton>\n-                                \u003Cdiv class=\"splitToolbarButtonSeparator\">\u003C\u002Fdiv>\n-                                \u003Cbutton id=\"zoomIn\" class=\"toolbarButton\" title=\"Zoom In\" tabindex=\"22\" data-l10n-id=\"pdfjs-zoom-in-button\">\n-                                    \u003Cspan data-l10n-id=\"pdfjs-zoom-in-button-label\">Zoom In\u003C\u002Fspan>\n+                            \u003Cdiv id=\"secondaryToolbarToggle\" class=\"toolbarButtonWithContainer\">\n+                                \u003Cbutton id=\"secondaryToolbarToggleButton\" class=\"toolbarButton\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-tools-button\" aria-expanded=\"false\" aria-haspopup=\"true\" aria-controls=\"secondaryToolbar\">\n+                                    \u003Cspan data-l10n-id=\"pdfjs-tools-button-label\">\u003C\u002Fspan>\n                                 \u003C\u002Fbutton>\n+                                \u003Cdiv id=\"secondaryToolbar\" class=\"hidden doorHangerRight menu\">\n+                                    \u003Cdiv id=\"secondaryToolbarButtonContainer\" class=\"menuContainer\">\n+                                        \u003Cbutton id=\"secondaryOpenFile\" class=\"toolbarButton labeled\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-open-file-button\">\n+                                            \u003Cspan data-l10n-id=\"pdfjs-open-file-button-label\">\u003C\u002Fspan>\n+                                        \u003C\u002Fbutton>\n+\n+                                        \u003Cdiv class=\"visibleMediumView\">\n+                                            \u003Cbutton id=\"secondaryPrint\" class=\"toolbarButton labeled\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-print-button\">\n+                                                \u003Cspan data-l10n-id=\"pdfjs-print-button-label\">\u003C\u002Fspan>\n+                                            \u003C\u002Fbutton>\n+\n+                                            \u003Cbutton id=\"secondaryDownload\" class=\"toolbarButton labeled\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-save-button\">\n+                                                \u003Cspan data-l10n-id=\"pdfjs-save-button-label\">\u003C\u002Fspan>\n+                                            \u003C\u002Fbutton>\n+\n+                                        \u003C\u002Fdiv>\n+\n+                                        \u003Cdiv class=\"horizontalToolbarSeparator\">\u003C\u002Fdiv>\n+\n+                                        \u003Cbutton id=\"presentationMode\" class=\"toolbarButton labeled\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-presentation-mode-button\">\n+                                            \u003Cspan data-l10n-id=\"pdfjs-presentation-mode-button-label\">\u003C\u002Fspan>\n+                                        \u003C\u002Fbutton>\n+\n+                                        \u003Ca href=\"#\" id=\"viewBookmark\" class=\"toolbarButton labeled\" tabindex=\"0\" data-l10n-id=\"pdfjs-bookmark-button\">\n+                                            \u003Cspan data-l10n-id=\"pdfjs-bookmark-button-label\">\u003C\u002Fspan>\n+                                        \u003C\u002Fa>\n+\n+                                        \u003Cdiv id=\"viewBookmarkSeparator\" class=\"horizontalToolbarSeparator\">\u003C\u002Fdiv>\n+\n+                                        \u003Cbutton id=\"firstPage\" class=\"toolbarButton labeled\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-first-page-button\">\n+                                            \u003Cspan data-l10n-id=\"pdfjs-first-page-button-label\">\u003C\u002Fspan>\n+                                        \u003C\u002Fbutton>\n+                                        \u003Cbutton id=\"lastPage\" class=\"toolbarButton labeled\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-last-page-button\">\n+                                            \u003Cspan data-l10n-id=\"pdfjs-last-page-button-label\">\u003C\u002Fspan>\n+                                        \u003C\u002Fbutton>\n+\n+                                        \u003Cdiv class=\"horizontalToolbarSeparator\">\u003C\u002Fdiv>\n+\n+                                        \u003Cbutton id=\"pageRotateCw\" class=\"toolbarButton labeled\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-page-rotate-cw-button\">\n+                                            \u003Cspan data-l10n-id=\"pdfjs-page-rotate-cw-button-label\">\u003C\u002Fspan>\n+                                        \u003C\u002Fbutton>\n+                                        \u003Cbutton id=\"pageRotateCcw\" class=\"toolbarButton labeled\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-page-rotate-ccw-button\">\n+                                            \u003Cspan data-l10n-id=\"pdfjs-page-rotate-ccw-button-label\">\u003C\u002Fspan>\n+                                        \u003C\u002Fbutton>\n+\n+                                        \u003Cdiv class=\"horizontalToolbarSeparator\">\u003C\u002Fdiv>\n+\n+                                        \u003Cdiv id=\"cursorToolButtons\" role=\"radiogroup\">\n+                                            \u003Cbutton id=\"cursorSelectTool\" class=\"toolbarButton labeled toggled\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-cursor-text-select-tool-button\" role=\"radio\" aria-checked=\"true\">\n+                                                \u003Cspan data-l10n-id=\"pdfjs-cursor-text-select-tool-button-label\">\u003C\u002Fspan>\n+                                            \u003C\u002Fbutton>\n+                                            \u003Cbutton id=\"cursorHandTool\" class=\"toolbarButton labeled\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-cursor-hand-tool-button\" role=\"radio\" aria-checked=\"false\">\n+                                                \u003Cspan data-l10n-id=\"pdfjs-cursor-hand-tool-button-label\">\u003C\u002Fspan>\n+                                            \u003C\u002Fbutton>\n+                                        \u003C\u002Fdiv>\n+\n+                                        \u003Cdiv class=\"horizontalToolbarSeparator\">\u003C\u002Fdiv>\n+\n+                                        \u003Cdiv id=\"scrollModeButtons\" role=\"radiogroup\">\n+                                            \u003Cbutton id=\"scrollPage\" class=\"toolbarButton labeled\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-scroll-page-button\" role=\"radio\" aria-checked=\"false\">\n+                                                \u003Cspan data-l10n-id=\"pdfjs-scroll-page-button-label\">\u003C\u002Fspan>\n+                                            \u003C\u002Fbutton>\n+                                            \u003Cbutton id=\"scrollVertical\" class=\"toolbarButton labeled toggled\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-scroll-vertical-button\" role=\"radio\" aria-checked=\"true\">\n+                                                \u003Cspan data-l10n-id=\"pdfjs-scroll-vertical-button-label\">\u003C\u002Fspan>\n+                                            \u003C\u002Fbutton>\n+                                            \u003Cbutton id=\"scrollHorizontal\" class=\"toolbarButton labeled\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-scroll-horizontal-button\" role=\"radio\" aria-checked=\"false\">\n+                                                \u003Cspan data-l10n-id=\"pdfjs-scroll-horizontal-button-label\">\u003C\u002Fspan>\n+                                            \u003C\u002Fbutton>\n+                                            \u003Cbutton id=\"scrollWrapped\" class=\"toolbarButton labeled\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-scroll-wrapped-button\" role=\"radio\" aria-checked=\"false\">\n+                                                \u003Cspan data-l10n-id=\"pdfjs-scroll-wrapped-button-label\">\u003C\u002Fspan>\n+                                            \u003C\u002Fbutton>\n+                                        \u003C\u002Fdiv>\n+\n+                                        \u003Cdiv class=\"horizontalToolbarSeparator\">\u003C\u002Fdiv>\n+\n+                                        \u003Cdiv id=\"spreadModeButtons\" role=\"radiogroup\">\n+                                            \u003Cbutton id=\"spreadNone\" class=\"toolbarButton labeled toggled\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-spread-none-button\" role=\"radio\" aria-checked=\"true\">\n+                                                \u003Cspan data-l10n-id=\"pdfjs-spread-none-button-label\">\u003C\u002Fspan>\n+                                            \u003C\u002Fbutton>\n+                                            \u003Cbutton id=\"spreadOdd\" class=\"toolbarButton labeled\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-spread-odd-button\" role=\"radio\" aria-checked=\"false\">\n+                                                \u003Cspan data-l10n-id=\"pdfjs-spread-odd-button-label\">\u003C\u002Fspan>\n+                                            \u003C\u002Fbutton>\n+                                            \u003Cbutton id=\"spreadEven\" class=\"toolbarButton labeled\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-spread-even-button\" role=\"radio\" aria-checked=\"false\">\n+                                                \u003Cspan data-l10n-id=\"pdfjs-spread-even-button-label\">\u003C\u002Fspan>\n+                                            \u003C\u002Fbutton>\n+                                        \u003C\u002Fdiv>\n+\n+                                        \u003Cdiv id=\"imageAltTextSettingsSeparator\" class=\"horizontalToolbarSeparator hidden\">\u003C\u002Fdiv>\n+                                        \u003Cbutton id=\"imageAltTextSettings\" type=\"button\" class=\"toolbarButton labeled hidden\" tabindex=\"0\" data-l10n-id=\"pdfjs-image-alt-text-settings-button\" aria-controls=\"altTextSettingsDialog\">\n+                                            \u003Cspan data-l10n-id=\"pdfjs-image-alt-text-settings-button-label\">\u003C\u002Fspan>\n+                                        \u003C\u002Fbutton>\n+\n+                                        \u003Cdiv class=\"horizontalToolbarSeparator\">\u003C\u002Fdiv>\n+\n+                                        \u003Cbutton id=\"documentProperties\" class=\"toolbarButton labeled\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-document-properties-button\" aria-controls=\"documentPropertiesDialog\">\n+                                            \u003Cspan data-l10n-id=\"pdfjs-document-properties-button-label\">\u003C\u002Fspan>\n+                                        \u003C\u002Fbutton>\n+                                    \u003C\u002Fdiv>\n+                                \u003C\u002Fdiv>  \u003C!-- secondaryToolbar -->\n                             \u003C\u002Fdiv>\n-                            \u003Cspan id=\"scaleSelectContainer\" class=\"dropdownToolbarButton\">\n-                                \u003Cselect id=\"scaleSelect\" title=\"Zoom\" tabindex=\"23\" data-l10n-id=\"pdfjs-zoom-select\">\n-                                    \u003Coption id=\"pageAutoOption\" title=\"\" value=\"auto\" selected=\"selected\" data-l10n-id=\"pdfjs-page-scale-auto\">Automatic Zoom\u003C\u002Foption>\n-                                    \u003Coption id=\"pageActualOption\" title=\"\" value=\"page-actual\" data-l10n-id=\"pdfjs-page-scale-actual\">Actual Size\u003C\u002Foption>\n-                                    \u003Coption id=\"pageFitOption\" title=\"\" value=\"page-fit\" data-l10n-id=\"pdfjs-page-scale-fit\">Page Fit\u003C\u002Foption>\n-                                    \u003Coption id=\"pageWidthOption\" title=\"\" value=\"page-width\" data-l10n-id=\"pdfjs-page-scale-width\">Page Width\u003C\u002Foption>\n-                                    \u003Coption id=\"customScaleOption\" title=\"\" value=\"custom\" disabled=\"disabled\" hidden=\"true\" data-l10n-id=\"pdfjs-page-scale-percent\" data-l10n-args='{ \"scale\": 0 }'>0%\u003C\u002Foption>\n-                                    \u003Coption title=\"\" value=\"0.5\" data-l10n-id=\"pdfjs-page-scale-percent\" data-l10n-args='{ \"scale\": 50 }'>50%\u003C\u002Foption>\n-                                    \u003Coption title=\"\" value=\"0.75\" data-l10n-id=\"pdfjs-page-scale-percent\" data-l10n-args='{ \"scale\": 75 }'>75%\u003C\u002Foption>\n-                                    \u003Coption title=\"\" value=\"1\" data-l10n-id=\"pdfjs-page-scale-percent\" data-l10n-args='{ \"scale\": 100 }'>100%\u003C\u002Foption>\n-                                    \u003Coption title=\"\" value=\"1.25\" data-l10n-id=\"pdfjs-page-scale-percent\" data-l10n-args='{ \"scale\": 125 }'>125%\u003C\u002Foption>\n-                                    \u003Coption title=\"\" value=\"1.5\" data-l10n-id=\"pdfjs-page-scale-percent\" data-l10n-args='{ \"scale\": 150 }'>150%\u003C\u002Foption>\n-                                    \u003Coption title=\"\" value=\"2\" data-l10n-id=\"pdfjs-page-scale-percent\" data-l10n-args='{ \"scale\": 200 }'>200%\u003C\u002Foption>\n-                                    \u003Coption title=\"\" value=\"3\" data-l10n-id=\"pdfjs-page-scale-percent\" data-l10n-args='{ \"scale\": 300 }'>300%\u003C\u002Foption>\n-                                    \u003Coption title=\"\" value=\"4\" data-l10n-id=\"pdfjs-page-scale-percent\" data-l10n-args='{ \"scale\": 400 }'>400%\u003C\u002Foption>\n-                                \u003C\u002Fselect>\n-                            \u003C\u002Fspan>\n                         \u003C\u002Fdiv>\n                     \u003C\u002Fdiv>\n                     \u003Cdiv id=\"loadingBar\">\n@@ -507,142 +582,333 @@\n                 \u003Cdiv id=\"viewer\" class=\"pdfViewer\">\u003C\u002Fdiv>\n             \u003C\u002Fdiv>\n             \u003Cdiv id=\"e2pdfViewerLoader\">\u003Cdiv class=\"e2pdf-viewer-loader-icon\">\u003C\u002Fdiv>\u003Cdiv class=\"e2pdf-viewer-loader-text\">\u003C\u002Fdiv>\u003C\u002Fdiv>\n+            \u003Cdiv id=\"e2pdfViewerLoadError\">\u003C\u002Fdiv>\n         \u003C\u002Fdiv> \u003C!-- mainContainer -->\n \n         \u003Cdiv id=\"dialogContainer\">\n             \u003Cdialog id=\"passwordDialog\">\n                 \u003Cdiv class=\"row\">\n-                    \u003Clabel for=\"password\" id=\"passwordText\" data-l10n-id=\"pdfjs-password-label\">Enter the password to open this PDF file:\u003C\u002Flabel>\n+                    \u003Clabel for=\"password\" id=\"passwordText\" data-l10n-id=\"pdfjs-password-label\">\u003C\u002Flabel>\n                 \u003C\u002Fdiv>\n                 \u003Cdiv class=\"row\">\n                     \u003Cinput type=\"password\" id=\"password\" class=\"toolbarField\">\n                 \u003C\u002Fdiv>\n                 \u003Cdiv class=\"buttonRow\">\n-                    \u003Cbutton id=\"passwordCancel\" class=\"dialogButton\">\u003Cspan data-l10n-id=\"pdfjs-password-cancel-button\">Cancel\u003C\u002Fspan>\u003C\u002Fbutton>\n-                    \u003Cbutton id=\"passwordSubmit\" class=\"dialogButton\">\u003Cspan data-l10n-id=\"pdfjs-password-ok-button\">OK\u003C\u002Fspan>\u003C\u002Fbutton>\n+                    \u003Cbutton id=\"passwordCancel\" class=\"dialogButton\" type=\"button\">\u003Cspan data-l10n-id=\"pdfjs-password-cancel-button\">\u003C\u002Fspan>\u003C\u002Fbutton>\n+                    \u003Cbutton id=\"passwordSubmit\" class=\"dialogButton\" type=\"button\">\u003Cspan data-l10n-id=\"pdfjs-password-ok-button\">\u003C\u002Fspan>\u003C\u002Fbutton>\n                 \u003C\u002Fdiv>\n             \u003C\u002Fdialog>\n             \u003Cdialog id=\"documentPropertiesDialog\">\n                 \u003Cdiv class=\"row\">\n-                    \u003Cspan id=\"fileNameLabel\" data-l10n-id=\"pdfjs-document-properties-file-name\">File name:\u003C\u002Fspan>\n+                    \u003Cspan id=\"fileNameLabel\" data-l10n-id=\"pdfjs-document-properties-file-name\">\u003C\u002Fspan>\n                     \u003Cp id=\"fileNameField\" aria-labelledby=\"fileNameLabel\">-\u003C\u002Fp>\n                 \u003C\u002Fdiv>\n                 \u003Cdiv class=\"row\">\n-                    \u003Cspan id=\"fileSizeLabel\" data-l10n-id=\"pdfjs-document-properties-file-size\">File size:\u003C\u002Fspan>\n+                    \u003Cspan id=\"fileSizeLabel\" data-l10n-id=\"pdfjs-document-properties-file-size\">\u003C\u002Fspan>\n                     \u003Cp id=\"fileSizeField\" aria-labelledby=\"fileSizeLabel\">-\u003C\u002Fp>\n                 \u003C\u002Fdiv>\n                 \u003Cdiv class=\"separator\">\u003C\u002Fdiv>\n                 \u003Cdiv class=\"row\">\n-                    \u003Cspan id=\"titleLabel\" data-l10n-id=\"pdfjs-document-properties-title\">Title:\u003C\u002Fspan>\n+                    \u003Cspan id=\"titleLabel\" data-l10n-id=\"pdfjs-document-properties-title\">\u003C\u002Fspan>\n                     \u003Cp id=\"titleField\" aria-labelledby=\"titleLabel\">-\u003C\u002Fp>\n                 \u003C\u002Fdiv>\n                 \u003Cdiv class=\"row\">\n-                    \u003Cspan id=\"authorLabel\" data-l10n-id=\"pdfjs-document-properties-author\">Author:\u003C\u002Fspan>\n+                    \u003Cspan id=\"authorLabel\" data-l10n-id=\"pdfjs-document-properties-author\">\u003C\u002Fspan>\n                     \u003Cp id=\"authorField\" aria-labelledby=\"authorLabel\">-\u003C\u002Fp>\n                 \u003C\u002Fdiv>\n                 \u003Cdiv class=\"row\">\n-                    \u003Cspan id=\"subjectLabel\" data-l10n-id=\"pdfjs-document-properties-subject\">Subject:\u003C\u002Fspan>\n+                    \u003Cspan id=\"subjectLabel\" data-l10n-id=\"pdfjs-document-properties-subject\">\u003C\u002Fspan>\n                     \u003Cp id=\"subjectField\" aria-labelledby=\"subjectLabel\">-\u003C\u002Fp>\n                 \u003C\u002Fdiv>\n                 \u003Cdiv class=\"row\">\n-                    \u003Cspan id=\"keywordsLabel\" data-l10n-id=\"pdfjs-document-properties-keywords\">Keywords:\u003C\u002Fspan>\n+                    \u003Cspan id=\"keywordsLabel\" data-l10n-id=\"pdfjs-document-properties-keywords\">\u003C\u002Fspan>\n                     \u003Cp id=\"keywordsField\" aria-labelledby=\"keywordsLabel\">-\u003C\u002Fp>\n                 \u003C\u002Fdiv>\n                 \u003Cdiv class=\"row\">\n-                    \u003Cspan id=\"creationDateLabel\" data-l10n-id=\"pdfjs-document-properties-creation-date\">Creation Date:\u003C\u002Fspan>\n+                    \u003Cspan id=\"creationDateLabel\" data-l10n-id=\"pdfjs-document-properties-creation-date\">\u003C\u002Fspan>\n                     \u003Cp id=\"creationDateField\" aria-labelledby=\"creationDateLabel\">-\u003C\u002Fp>\n                 \u003C\u002Fdiv>\n                 \u003Cdiv class=\"row\">\n-                    \u003Cspan id=\"modificationDateLabel\" data-l10n-id=\"pdfjs-document-properties-modification-date\">Modification Date:\u003C\u002Fspan>\n+                    \u003Cspan id=\"modificationDateLabel\" data-l10n-id=\"pdfjs-document-properties-modification-date\">\u003C\u002Fspan>\n                     \u003Cp id=\"modificationDateField\" aria-labelledby=\"modificationDateLabel\">-\u003C\u002Fp>\n                 \u003C\u002Fdiv>\n                 \u003Cdiv class=\"row\">\n-                    \u003Cspan id=\"creatorLabel\" data-l10n-id=\"pdfjs-document-properties-creator\">Creator:\u003C\u002Fspan>\n+                    \u003Cspan id=\"creatorLabel\" data-l10n-id=\"pdfjs-document-properties-creator\">\u003C\u002Fspan>\n                     \u003Cp id=\"creatorField\" aria-labelledby=\"creatorLabel\">-\u003C\u002Fp>\n                 \u003C\u002Fdiv>\n                 \u003Cdiv class=\"separator\">\u003C\u002Fdiv>\n                 \u003Cdiv class=\"row\">\n-                    \u003Cspan id=\"producerLabel\" data-l10n-id=\"pdfjs-document-properties-producer\">PDF Producer:\u003C\u002Fspan>\n+                    \u003Cspan id=\"producerLabel\" data-l10n-id=\"pdfjs-document-properties-producer\">\u003C\u002Fspan>\n                     \u003Cp id=\"producerField\" aria-labelledby=\"producerLabel\">-\u003C\u002Fp>\n                 \u003C\u002Fdiv>\n                 \u003Cdiv class=\"row\">\n-                    \u003Cspan id=\"versionLabel\" data-l10n-id=\"pdfjs-document-properties-version\">PDF Version:\u003C\u002Fspan>\n+                    \u003Cspan id=\"versionLabel\" data-l10n-id=\"pdfjs-document-properties-version\">\u003C\u002Fspan>\n                     \u003Cp id=\"versionField\" aria-labelledby=\"versionLabel\">-\u003C\u002Fp>\n                 \u003C\u002Fdiv>\n                 \u003Cdiv class=\"row\">\n-                    \u003Cspan id=\"pageCountLabel\" data-l10n-id=\"pdfjs-document-properties-page-count\">Page Count:\u003C\u002Fspan>\n+                    \u003Cspan id=\"pageCountLabel\" data-l10n-id=\"pdfjs-document-properties-page-count\">\u003C\u002Fspan>\n                     \u003Cp id=\"pageCountField\" aria-labelledby=\"pageCountLabel\">-\u003C\u002Fp>\n                 \u003C\u002Fdiv>\n                 \u003Cdiv class=\"row\">\n-                    \u003Cspan id=\"pageSizeLabel\" data-l10n-id=\"pdfjs-document-properties-page-size\">Page Size:\u003C\u002Fspan>\n+                    \u003Cspan id=\"pageSizeLabel\" data-l10n-id=\"pdfjs-document-properties-page-size\">\u003C\u002Fspan>\n                     \u003Cp id=\"pageSizeField\" aria-labelledby=\"pageSizeLabel\">-\u003C\u002Fp>\n                 \u003C\u002Fdiv>\n                 \u003Cdiv class=\"separator\">\u003C\u002Fdiv>\n                 \u003Cdiv class=\"row\">\n-                    \u003Cspan id=\"linearizedLabel\" data-l10n-id=\"pdfjs-document-properties-linearized\">Fast Web View:\u003C\u002Fspan>\n+                    \u003Cspan id=\"linearizedLabel\" data-l10n-id=\"pdfjs-document-properties-linearized\">\u003C\u002Fspan>\n                     \u003Cp id=\"linearizedField\" aria-labelledby=\"linearizedLabel\">-\u003C\u002Fp>\n                 \u003C\u002Fdiv>\n                 \u003Cdiv class=\"buttonRow\">\n-                    \u003Cbutton id=\"documentPropertiesClose\" class=\"dialogButton\">\u003Cspan data-l10n-id=\"pdfjs-document-properties-close-button\">Close\u003C\u002Fspan>\u003C\u002Fbutton>\n+                    \u003Cbutton id=\"documentPropertiesClose\" class=\"dialogButton\" type=\"button\">\u003Cspan data-l10n-id=\"pdfjs-document-properties-close-button\">\u003C\u002Fspan>\u003C\u002Fbutton>\n                 \u003C\u002Fdiv>\n             \u003C\u002Fdialog>\n             \u003Cdialog class=\"dialog altText\" id=\"altTextDialog\" aria-labelledby=\"dialogLabel\" aria-describedby=\"dialogDescription\">\n                 \u003Cdiv id=\"altTextContainer\" class=\"mainContainer\">\n                     \u003Cdiv id=\"overallDescription\">\n-                        \u003Cspan id=\"dialogLabel\" data-l10n-id=\"pdfjs-editor-alt-text-dialog-label\" class=\"title\">Choose an option\u003C\u002Fspan>\n-                        \u003Cspan id=\"dialogDescription\" data-l10n-id=\"pdfjs-editor-alt-text-dialog-description\">\n-                            Alt text (alternative text) helps when people can’t see the image or when it doesn’t load.\n-                        \u003C\u002Fspan>\n+                        \u003Cspan id=\"dialogLabel\" data-l10n-id=\"pdfjs-editor-alt-text-dialog-label\" class=\"title\">\u003C\u002Fspan>\n+                        \u003Cspan id=\"dialogDescription\" data-l10n-id=\"pdfjs-editor-alt-text-dialog-description\">\u003C\u002Fspan>\n                     \u003C\u002Fdiv>\n                     \u003Cdiv id=\"addDescription\">\n                         \u003Cdiv class=\"radio\">\n                             \u003Cdiv class=\"radioButton\">\n                                 \u003Cinput type=\"radio\" id=\"descriptionButton\" name=\"altTextOption\" tabindex=\"0\" aria-describedby=\"descriptionAreaLabel\" checked>\n-                                \u003Clabel for=\"descriptionButton\" data-l10n-id=\"pdfjs-editor-alt-text-add-description-label\">Add a description\u003C\u002Flabel>\n+                                \u003Clabel for=\"descriptionButton\" data-l10n-id=\"pdfjs-editor-alt-text-add-description-label\">\u003C\u002Flabel>\n                             \u003C\u002Fdiv>\n                             \u003Cdiv class=\"radioLabel\">\n-                                \u003Cspan id=\"descriptionAreaLabel\" data-l10n-id=\"pdfjs-editor-alt-text-add-description-description\">\n-                                    Aim for 1-2 sentences that describe the subject, setting, or actions.\n-                                \u003C\u002Fspan>\n+                                \u003Cspan id=\"descriptionAreaLabel\" data-l10n-id=\"pdfjs-editor-alt-text-add-description-description\">\u003C\u002Fspan>\n                             \u003C\u002Fdiv>\n                         \u003C\u002Fdiv>\n                         \u003Cdiv class=\"descriptionArea\">\n-                            \u003Ctextarea id=\"descriptionTextarea\" placeholder=\"For example, “A young man sits down at a table to eat a meal”\" aria-labelledby=\"descriptionAreaLabel\" data-l10n-id=\"pdfjs-editor-alt-text-textarea\" tabindex=\"0\">\u003C\u002Ftextarea>\n+                            \u003Ctextarea id=\"descriptionTextarea\" aria-labelledby=\"descriptionAreaLabel\" data-l10n-id=\"pdfjs-editor-alt-text-textarea\" tabindex=\"0\">\u003C\u002Ftextarea>\n                         \u003C\u002Fdiv>\n                     \u003C\u002Fdiv>\n                     \u003Cdiv id=\"markAsDecorative\">\n                         \u003Cdiv class=\"radio\">\n                             \u003Cdiv class=\"radioButton\">\n                                 \u003Cinput type=\"radio\" id=\"decorativeButton\" name=\"altTextOption\" aria-describedby=\"decorativeLabel\">\n-                                \u003Clabel for=\"decorativeButton\" data-l10n-id=\"pdfjs-editor-alt-text-mark-decorative-label\">Mark as decorative\u003C\u002Flabel>\n+                                \u003Clabel for=\"decorativeButton\" data-l10n-id=\"pdfjs-editor-alt-text-mark-decorative-label\">\u003C\u002Flabel>\n                             \u003C\u002Fdiv>\n                             \u003Cdiv class=\"radioLabel\">\n-                                \u003Cspan id=\"decorativeLabel\" data-l10n-id=\"pdfjs-editor-alt-text-mark-decorative-description\">\n-                                    This is used for ornamental images, like borders or watermarks.\n-                                \u003C\u002Fspan>\n+                                \u003Cspan id=\"decorativeLabel\" data-l10n-id=\"pdfjs-editor-alt-text-mark-decorative-description\">\u003C\u002Fspan>\n                             \u003C\u002Fdiv>\n                         \u003C\u002Fdiv>\n                     \u003C\u002Fdiv>\n                     \u003Cdiv id=\"buttons\">\n-                        \u003Cbutton id=\"altTextCancel\" class=\"secondaryButton\" tabindex=\"0\">\u003Cspan data-l10n-id=\"pdfjs-editor-alt-text-cancel-button\">Cancel\u003C\u002Fspan>\u003C\u002Fbutton>\n-                        \u003Cbutton id=\"altTextSave\" class=\"primaryButton\" tabindex=\"0\">\u003Cspan data-l10n-id=\"pdfjs-editor-alt-text-save-button\">Save\u003C\u002Fspan>\u003C\u002Fbutton>\n+                        \u003Cbutton id=\"altTextCancel\" class=\"secondaryButton\" type=\"button\" tabindex=\"0\">\u003Cspan data-l10n-id=\"pdfjs-editor-alt-text-cancel-button\">\u003C\u002Fspan>\u003C\u002Fbutton>\n+                        \u003Cbutton id=\"altTextSave\" class=\"primaryButton\" type=\"button\" tabindex=\"0\">\u003Cspan data-l10n-id=\"pdfjs-editor-alt-text-save-button\">\u003C\u002Fspan>\u003C\u002Fbutton>\n+                    \u003C\u002Fdiv>\n+                \u003C\u002Fdiv>\n+            \u003C\u002Fdialog>\n+            \u003Cdialog class=\"dialog newAltText\" id=\"newAltTextDialog\" aria-labelledby=\"newAltTextTitle\" aria-describedby=\"newAltTextDescription\" tabindex=\"0\">\n+                \u003Cdiv id=\"newAltTextContainer\" class=\"mainContainer\">\n+                    \u003Cdiv class=\"title\">\n+                        \u003Cspan id=\"newAltTextTitle\" data-l10n-id=\"pdfjs-editor-new-alt-text-dialog-edit-label\" role=\"sectionhead\" tabindex=\"0\">\u003C\u002Fspan>\n+                    \u003C\u002Fdiv>\n+                    \u003Cdiv id=\"mainContent\">\n+                        \u003Cdiv id=\"descriptionAndSettings\">\n+                            \u003Cdiv id=\"descriptionInstruction\">\n+                                \u003Cdiv id=\"newAltTextDescriptionContainer\">\n+                                    \u003Cdiv class=\"altTextSpinner\" role=\"status\" aria-live=\"polite\">\u003C\u002Fdiv>\n+                                    \u003Ctextarea id=\"newAltTextDescriptionTextarea\" aria-labelledby=\"descriptionAreaLabel\" data-l10n-id=\"pdfjs-editor-new-alt-text-textarea\" tabindex=\"0\">\u003C\u002Ftextarea>\n+                                \u003C\u002Fdiv>\n+                                \u003Cspan id=\"newAltTextDescription\" role=\"note\" data-l10n-id=\"pdfjs-editor-new-alt-text-description\">\u003C\u002Fspan>\n+                                \u003Cdiv id=\"newAltTextDisclaimer\" role=\"note\">\u003Cdiv>\u003Cspan data-l10n-id=\"pdfjs-editor-new-alt-text-disclaimer1\">\u003C\u002Fspan> \u003Ca href=\"https:\u002F\u002Fsupport.mozilla.org\u002Fen-US\u002Fkb\u002Fpdf-alt-text\" target=\"_blank\" rel=\"noopener noreferrer\" id=\"newAltTextLearnMore\" data-l10n-id=\"pdfjs-editor-new-alt-text-disclaimer-learn-more-url\" tabindex=\"0\">\u003C\u002Fa>\u003C\u002Fdiv>\u003C\u002Fdiv>\n+                            \u003C\u002Fdiv>\n+                            \u003Cdiv id=\"newAltTextCreateAutomatically\" class=\"toggler\">\n+                                \u003Cbutton id=\"newAltTextCreateAutomaticallyButton\" class=\"toggle-button\" type=\"button\" aria-pressed=\"true\" tabindex=\"0\">\u003C\u002Fbutton>\n+                                \u003Clabel for=\"newAltTextCreateAutomaticallyButton\" class=\"togglerLabel\" data-l10n-id=\"pdfjs-editor-new-alt-text-create-automatically-button-label\">\u003C\u002Flabel>\n+                            \u003C\u002Fdiv>\n+                            \u003Cdiv id=\"newAltTextDownloadModel\" class=\"hidden\">\n+                                \u003Cspan id=\"newAltTextDownloadModelDescription\" data-l10n-id=\"pdfjs-editor-new-alt-text-ai-model-downloading-progress\" aria-valuemin=\"0\" data-l10n-args='{ \"totalSize\": 0, \"downloadedSize\": 0 }'>\u003C\u002Fspan>\n+                            \u003C\u002Fdiv>\n+                        \u003C\u002Fdiv>\n+                        \u003Cdiv id=\"newAltTextImagePreview\">\u003C\u002Fdiv>\n+                    \u003C\u002Fdiv>\n+                    \u003Cdiv id=\"newAltTextError\" class=\"messageBar\">\n+                        \u003Cdiv>\n+                            \u003Cdiv>\n+                                \u003Cspan class=\"title\" data-l10n-id=\"pdfjs-editor-new-alt-text-error-title\">\u003C\u002Fspan>\n+                                \u003Cspan  class=\"description\" data-l10n-id=\"pdfjs-editor-new-alt-text-error-description\">\u003C\u002Fspan>\n+                            \u003C\u002Fdiv>\n+                            \u003Cbutton id=\"newAltTextCloseButton\" class=\"closeButton\" type=\"button\" tabindex=\"0\">\u003Cspan data-l10n-id=\"pdfjs-editor-new-alt-text-error-close-button\">\u003C\u002Fspan>\u003C\u002Fbutton>\n+                        \u003C\u002Fdiv>\n+                    \u003C\u002Fdiv>\n+                    \u003Cdiv id=\"newAltTextButtons\" class=\"dialogButtonsGroup\">\n+                        \u003Cbutton id=\"newAltTextCancel\" type=\"button\" class=\"secondaryButton hidden\" tabindex=\"0\">\u003Cspan data-l10n-id=\"pdfjs-editor-alt-text-cancel-button\">\u003C\u002Fspan>\u003C\u002Fbutton>\n+                        \u003Cbutton id=\"newAltTextNotNow\" type=\"button\" class=\"secondaryButton\" tabindex=\"0\">\u003Cspan data-l10n-id=\"pdfjs-editor-new-alt-text-not-now-button\">\u003C\u002Fspan>\u003C\u002Fbutton>\n+                        \u003Cbutton id=\"newAltTextSave\" type=\"button\" class=\"primaryButton\" tabindex=\"0\">\u003Cspan data-l10n-id=\"pdfjs-editor-alt-text-save-button\">\u003C\u002Fspan>\u003C\u002Fbutton>\n                     \u003C\u002Fdiv>\n                 \u003C\u002Fdiv>\n             \u003C\u002Fdialog>\n+\n+            \u003Cdialog class=\"dialog\" id=\"altTextSettingsDialog\" aria-labelledby=\"altTextSettingsTitle\">\n+                \u003Cdiv id=\"altTextSettingsContainer\" class=\"mainContainer\">\n+                    \u003Cdiv class=\"title\">\n+                        \u003Cspan id=\"altTextSettingsTitle\" data-l10n-id=\"pdfjs-editor-alt-text-settings-dialog-label\" role=\"sectionhead\" tabindex=\"0\" class=\"title\">\u003C\u002Fspan>\n+                    \u003C\u002Fdiv>\n+                    \u003Cdiv id=\"automaticAltText\">\n+                        \u003Cspan data-l10n-id=\"pdfjs-editor-alt-text-settings-automatic-title\">\u003C\u002Fspan>\n+                        \u003Cdiv id=\"automaticSettings\">\n+                            \u003Cdiv id=\"createModelSetting\">\n+                                \u003Cdiv class=\"toggler\">\n+                                    \u003Cbutton id=\"createModelButton\" type=\"button\" class=\"toggle-button\" aria-pressed=\"true\" tabindex=\"0\">\u003C\u002Fbutton>\n+                                    \u003Clabel for=\"createModelButton\" class=\"togglerLabel\" data-l10n-id=\"pdfjs-editor-alt-text-settings-create-model-button-label\">\u003C\u002Flabel>\n+                                \u003C\u002Fdiv>\n+                                \u003Cdiv id=\"createModelDescription\" class=\"description\">\n+                                    \u003Cspan data-l10n-id=\"pdfjs-editor-alt-text-settings-create-model-description\">\u003C\u002Fspan> \u003Ca href=\"https:\u002F\u002Fsupport.mozilla.org\u002Fen-US\u002Fkb\u002Fpdf-alt-text\" target=\"_blank\" rel=\"noopener noreferrer\" id=\"altTextSettingsLearnMore\" data-l10n-id=\"pdfjs-editor-new-alt-text-disclaimer-learn-more-url\" tabindex=\"0\">\u003C\u002Fa>\n+                                \u003C\u002Fdiv>\n+                            \u003C\u002Fdiv>\n+                            \u003Cdiv id=\"aiModelSettings\">\n+                                \u003Cdiv>\n+                                    \u003Cspan data-l10n-id=\"pdfjs-editor-alt-text-settings-download-model-label\" data-l10n-args='{ \"totalSize\": 180 }'>\u003C\u002Fspan>\n+                                    \u003Cdiv id=\"aiModelDescription\" class=\"description\">\n+                                        \u003Cspan data-l10n-id=\"pdfjs-editor-alt-text-settings-ai-model-description\">\u003C\u002Fspan>\n+                                    \u003C\u002Fdiv>\n+                                \u003C\u002Fdiv>\n+                                \u003Cbutton id=\"deleteModelButton\" type=\"button\" class=\"secondaryButton\" tabindex=\"0\">\u003Cspan data-l10n-id=\"pdfjs-editor-alt-text-settings-delete-model-button\">\u003C\u002Fspan>\u003C\u002Fbutton>\n+                                \u003Cbutton id=\"downloadModelButton\" type=\"button\" class=\"secondaryButton\" tabindex=\"0\">\u003Cspan data-l10n-id=\"pdfjs-editor-alt-text-settings-download-model-button\">\u003C\u002Fspan>\u003C\u002Fbutton>\n+                            \u003C\u002Fdiv>\n+                        \u003C\u002Fdiv>\n+                    \u003C\u002Fdiv>\n+                    \u003Cdiv class=\"dialogSeparator\">\u003C\u002Fdiv>\n+                    \u003Cdiv id=\"altTextEditor\">\n+                        \u003Cspan data-l10n-id=\"pdfjs-editor-alt-text-settings-editor-title\">\u003C\u002Fspan>\n+                        \u003Cdiv id=\"showAltTextEditor\">\n+                            \u003Cdiv class=\"toggler\">\n+                                \u003Cbutton id=\"showAltTextDialogButton\" type=\"button\" class=\"toggle-button\" aria-pressed=\"true\" tabindex=\"0\">\u003C\u002Fbutton>\n+                                \u003Clabel for=\"showAltTextDialogButton\" class=\"togglerLabel\" data-l10n-id=\"pdfjs-editor-alt-text-settings-show-dialog-button-label\">\u003C\u002Flabel>\n+                            \u003C\u002Fdiv>\n+                            \u003Cdiv id=\"showAltTextDialogDescription\" class=\"description\">\n+                                \u003Cspan data-l10n-id=\"pdfjs-editor-alt-text-settings-show-dialog-description\">\u003C\u002Fspan>\n+                            \u003C\u002Fdiv>\n+                        \u003C\u002Fdiv>\n+                    \u003C\u002Fdiv>\n+                    \u003Cdiv id=\"buttons\" class=\"dialogButtonsGroup\">\n+                        \u003Cbutton id=\"altTextSettingsCloseButton\" type=\"button\" class=\"primaryButton\" tabindex=\"0\">\u003Cspan data-l10n-id=\"pdfjs-editor-alt-text-settings-close-button\">\u003C\u002Fspan>\u003C\u002Fbutton>\n+                    \u003C\u002Fdiv>\n+                \u003C\u002Fdiv>\n+            \u003C\u002Fdialog>\n+\n+            \u003Cdialog class=\"dialog signatureDialog\" id=\"addSignatureDialog\" aria-labelledby=\"addSignatureDialogLabel\">\n+                \u003Cspan id=\"addSignatureDialogLabel\" data-l10n-id=\"pdfjs-editor-add-signature-dialog-label\">\u003C\u002Fspan>\n+                \u003Cdiv id=\"addSignatureContainer\" class=\"mainContainer\">\n+                    \u003Cdiv class=\"title\">\n+                        \u003Cspan role=\"sectionhead\" data-l10n-id=\"pdfjs-editor-add-signature-dialog-title\" tabindex=\"0\">\u003C\u002Fspan>\n+                    \u003C\u002Fdiv>\n+                    \u003Cdiv role=\"tablist\" id=\"addSignatureOptions\">\n+                        \u003Cbutton id=\"addSignatureTypeButton\" type=\"button\" role=\"tab\" aria-selected=\"true\" aria-controls=\"addSignatureTypeContainer\" data-l10n-id=\"pdfjs-editor-add-signature-type-button\" tabindex=\"0\">\u003C\u002Fbutton>\n+                        \u003Cbutton id=\"addSignatureDrawButton\" type=\"button\" role=\"tab\" aria-selected=\"false\" aria-controls=\"addSignatureDrawContainer\" data-l10n-id=\"pdfjs-editor-add-signature-draw-button\" tabindex=\"0\">\u003C\u002Fbutton>\n+                        \u003Cbutton id=\"addSignatureImageButton\" type=\"button\" role=\"tab\" aria-selected=\"false\" aria-controls=\"addSignatureImageContainer\" data-l10n-id=\"pdfjs-editor-add-signature-image-button\" tabindex=\"-1\">\u003C\u002Fbutton>\n+                    \u003C\u002Fdiv>\n+                    \u003Cdiv id=\"addSignatureActionContainer\" data-selected=\"type\">\n+                        \u003Cdiv id=\"addSignatureTypeContainer\" role=\"tabpanel\" aria-labelledby=\"addSignatureTypeContainer\">\n+                            \u003Cinput id=\"addSignatureTypeInput\" type=\"text\" data-l10n-id=\"pdfjs-editor-add-signature-type-input\" tabindex=\"0\">\u003C\u002Finput>\n+                        \u003C\u002Fdiv>\n+                        \u003Cdiv id=\"addSignatureDrawContainer\" role=\"tabpanel\" aria-labelledby=\"addSignatureDrawButton\" tabindex=\"-1\">\n+                            \u003Csvg id=\"addSignatureDraw\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" aria-labelledby=\"addSignatureDrawPlaceholder\">\u003C\u002Fsvg>\n+                            \u003Cspan id=\"addSignatureDrawPlaceholder\" data-l10n-id=\"pdfjs-editor-add-signature-draw-placeholder\">\u003C\u002Fspan>\n+                            \u003Cdiv id=\"thickness\">\n+                                \u003Cdiv>\n+                                    \u003Clabel for=\"addSignatureDrawThickness\" data-l10n-id=\"pdfjs-editor-add-signature-draw-thickness-range-label\">\u003C\u002Flabel>\n+                                    \u003Cinput type=\"range\" id=\"addSignatureDrawThickness\" min=\"1\" max=\"5\" step=\"1\" value=\"1\" data-l10n-id=\"pdfjs-editor-add-signature-draw-thickness-range\" data-l10n-args='{ \"thickness\": 1 }' tabindex=\"0\">\n+                                \u003C\u002Fdiv>\n+                            \u003C\u002Fdiv>\n+                        \u003C\u002Fdiv>\n+                        \u003Cdiv id=\"addSignatureImageContainer\" role=\"tabpanel\" aria-labelledby=\"addSignatureImageButton\" tabindex=\"-1\">\n+                            \u003Csvg id=\"addSignatureImage\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" aria-labelledby=\"addSignatureImagePlaceholder\">\u003C\u002Fsvg>\n+                            \u003Cdiv id=\"addSignatureImagePlaceholder\">\n+                                \u003Cspan data-l10n-id=\"pdfjs-editor-add-signature-image-placeholder\">\u003C\u002Fspan>\n+                                \u003Clabel id=\"addSignatureImageBrowse\" for=\"addSignatureFilePicker\" tabindex=\"0\">\n+                                    \u003Ca data-l10n-id=\"pdfjs-editor-add-signature-image-browse-link\">\u003C\u002Fa>\n+                                \u003C\u002Flabel>\n+                                \u003Cinput id=\"addSignatureFilePicker\" type=\"file\">\u003C\u002Finput>\n+                            \u003C\u002Fdiv>\n+                        \u003C\u002Fdiv>\n+                        \u003Cdiv id=\"addSignatureControls\">\n+                            \u003Cdiv id=\"horizontalContainer\">\n+                                \u003Cdiv id=\"addSignatureDescriptionContainer\">\n+                                    \u003Clabel for=\"addSignatureDescInput\" data-l10n-id=\"pdfjs-editor-add-signature-description-label\">\u003C\u002Flabel>\n+                                    \u003Cspan id=\"addSignatureDescription\" class=\"inputWithClearButton\">\n+                                        \u003Cinput id=\"addSignatureDescInput\" type=\"text\" data-l10n-id=\"pdfjs-editor-add-signature-description-input\" tabindex=\"0\">\u003C\u002Finput>\n+                                        \u003Cbutton class=\"clearInputButton\" type=\"button\" tabindex=\"0\" aria-hidden=\"true\">\u003C\u002Fbutton>\n+                                    \u003C\u002Fspan>\n+                                \u003C\u002Fdiv>\n+                                \u003Cbutton id=\"clearSignatureButton\" type=\"button\" data-l10n-id=\"pdfjs-editor-add-signature-clear-button\" tabindex=\"0\">\u003Cspan data-l10n-id=\"pdfjs-editor-add-signature-clear-button-label\">\u003C\u002Fspan>\u003C\u002Fbutton>\n+                            \u003C\u002Fdiv>\n+                            \u003Cdiv id=\"addSignatureSaveContainer\">\n+                                \u003Cinput type=\"checkbox\" id=\"addSignatureSaveCheckbox\" checked=\"true\">\u003C\u002Finput>\n+                                \u003Clabel for=\"addSignatureSaveCheckbox\" data-l10n-id=\"pdfjs-editor-add-signature-save-checkbox\">\u003C\u002Flabel>\n+                                \u003Cspan>\u003C\u002Fspan>\n+                                \u003Cspan id=\"addSignatureSaveWarning\" data-l10n-id=\"pdfjs-editor-add-signature-save-warning-message\">\u003C\u002Fspan>\n+                            \u003C\u002Fdiv>\n+                        \u003C\u002Fdiv>\n+                        \u003Cdiv id=\"addSignatureError\" hidden=\"true\" class=\"messageBar\">\n+                            \u003Cdiv>\n+                                \u003Cdiv>\n+                                    \u003Cspan class=\"title\" data-l10n-id=\"pdfjs-editor-add-signature-image-upload-error-title\">\u003C\u002Fspan>\n+                                    \u003Cspan class=\"description\" data-l10n-id=\"pdfjs-editor-add-signature-image-upload-error-description\">\u003C\u002Fspan>\n+                                \u003C\u002Fdiv>\n+                                \u003Cbutton id=\"addSignatureErrorCloseButton\" class=\"closeButton\" type=\"button\" tabindex=\"0\">\u003Cspan data-l10n-id=\"pdfjs-editor-add-signature-error-close-button\">\u003C\u002Fspan>\u003C\u002Fbutton>\n+                            \u003C\u002Fdiv>\n+                        \u003C\u002Fdiv>\n+                        \u003Cdiv class=\"dialogButtonsGroup\">\n+                            \u003Cbutton id=\"addSignatureCancelButton\" type=\"button\" class=\"secondaryButton\" tabindex=\"0\">\u003Cspan data-l10n-id=\"pdfjs-editor-add-signature-cancel-button\">\u003C\u002Fspan>\u003C\u002Fbutton>\n+                            \u003Cbutton id=\"addSignatureAddButton\" type=\"button\" class=\"primaryButton\" disabled tabindex=\"0\">\u003Cspan data-l10n-id=\"pdfjs-editor-add-signature-add-button\">\u003C\u002Fspan>\u003C\u002Fbutton>\n+                        \u003C\u002Fdiv>\n+                    \u003C\u002Fdiv>\n+                \u003C\u002Fdiv>\n+            \u003C\u002Fdialog>\n+\n+            \u003Cdialog class=\"dialog signatureDialog\" id=\"editSignatureDescriptionDialog\" aria-labelledby=\"editSignatureDescriptionTitle\">\n+                \u003Cdiv id=\"editSignatureDescriptionContainer\" class=\"mainContainer\">\n+                    \u003Cdiv class=\"title\">\n+                        \u003Cspan id=\"editSignatureDescriptionTitle\" role=\"sectionhead\" data-l10n-id=\"pdfjs-editor-edit-signature-dialog-title\" tabindex=\"0\">\u003C\u002Fspan>\n+                    \u003C\u002Fdiv>\n+                    \u003Cdiv id=\"editSignatureDescriptionAndView\">\n+                        \u003Cdiv id=\"editSignatureDescriptionContainer\">\n+                            \u003Clabel for=\"editSignatureDescInput\" data-l10n-id=\"pdfjs-editor-add-signature-description-label\">\u003C\u002Flabel>\n+                            \u003Cspan id=\"editSignatureDescription\" class=\"inputWithClearButton\">\n+                                \u003Cinput id=\"editSignatureDescInput\" type=\"text\" data-l10n-id=\"pdfjs-editor-add-signature-description-input\" tabindex=\"0\">\u003C\u002Finput>\n+                                \u003Cbutton class=\"clearInputButton\" type=\"button\" tabindex=\"0\" aria-hidden=\"true\">\u003C\u002Fbutton>\n+                            \u003C\u002Fspan>\n+                        \u003C\u002Fdiv>\n+                        \u003Csvg id=\"editSignatureView\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\">\u003C\u002Fsvg>\n+                    \u003C\u002Fdiv>\n+                    \u003Cdiv class=\"dialogButtonsGroup\">\n+                        \u003Cbutton id=\"editSignatureCancelButton\" type=\"button\" class=\"secondaryButton\" tabindex=\"0\">\u003Cspan data-l10n-id=\"pdfjs-editor-add-signature-cancel-button\">\u003C\u002Fspan>\u003C\u002Fbutton>\n+                        \u003Cbutton id=\"editSignatureUpdateButton\" type=\"button\" class=\"primaryButton\" disabled tabindex=\"0\">\u003Cspan data-l10n-id=\"pdfjs-editor-edit-signature-update-button\">\u003C\u002Fspan>\u003C\u002Fbutton>\n+                    \u003C\u002Fdiv>\n+                \u003C\u002Fdiv>\n+            \u003C\u002Fdialog>\n+\n             \u003Cdialog id=\"printServiceDialog\" style=\"min-width: 200px;\">\n                 \u003Cdiv class=\"row\">\n-                    \u003Cspan data-l10n-id=\"pdfjs-print-progress-message\">Preparing document for printing…\u003C\u002Fspan>\n+                    \u003Cspan data-l10n-id=\"pdfjs-print-progress-message\">\u003C\u002Fspan>\n                 \u003C\u002Fdiv>\n                 \u003Cdiv class=\"row\">\n                     \u003Cprogress value=\"0\" max=\"100\">\u003C\u002Fprogress>\n                     \u003Cspan data-l10n-id=\"pdfjs-print-progress-percent\" data-l10n-args='{ \"progress\": 0 }' class=\"relative-progress\">0%\u003C\u002Fspan>\n                 \u003C\u002Fdiv>\n                 \u003Cdiv class=\"buttonRow\">\n-                    \u003Cbutton id=\"printCancel\" class=\"dialogButton\">\u003Cspan data-l10n-id=\"pdfjs-print-progress-close-button\">Cancel\u003C\u002Fspan>\u003C\u002Fbutton>\n+                    \u003Cbutton id=\"printCancel\" class=\"dialogButton\" type=\"button\">\u003Cspan data-l10n-id=\"pdfjs-print-progress-close-button\">\u003C\u002Fspan>\u003C\u002Fbutton>\n                 \u003C\u002Fdiv>\n             \u003C\u002Fdialog>\n         \u003C\u002Fdiv>  \u003C!-- dialogContainer -->\n \n+        \u003Cdiv id=\"editorUndoBar\" class=\"messageBar\" role=\"status\" aria-labelledby=\"editorUndoBarMessage\" tabindex=\"-1\" hidden>\n+            \u003Cdiv>\n+                \u003Cdiv>\n+                    \u003Cspan id=\"editorUndoBarMessage\" class=\"description\">\u003C\u002Fspan>\n+                \u003C\u002Fdiv>\n+                \u003Cbutton id=\"editorUndoBarUndoButton\" class=\"undoButton\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-editor-undo-bar-undo-button\">\n+                    \u003Cspan data-l10n-id=\"pdfjs-editor-undo-bar-undo-button-label\">\u003C\u002Fspan>\n+                \u003C\u002Fbutton>\n+                \u003Cbutton id=\"editorUndoBarCloseButton\" class=\"closeButton\" type=\"button\" tabindex=\"0\" data-l10n-id=\"pdfjs-editor-undo-bar-close-button\">\n+                    \u003Cspan data-l10n-id=\"pdfjs-editor-undo-bar-close-button-label\">\u003C\u002Fspan>\n+                \u003C\u002Fbutton>\n+            \u003C\u002Fdiv>\n+        \u003C\u002Fdiv> \u003C!-- editorUndoBar -->\n+\n     \u003C\u002Fdiv> \u003C!-- outerContainer -->\n     \u003Cdiv id=\"printContainer\">\u003C\u002Fdiv>\n \u003C\u002Fbody>\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Fviewer.js \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Fviewer.js\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Fviewer.js\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Fviewer.js\t2026-02-24 09:27:28.000000000 +0000\n@@ -2,7 +2,7 @@\n  * @licstart The following is the entire license notice for the\n  * JavaScript code in this page\n  *\n- * Copyright 2023 Mozilla Foundation\n+ * Copyright 2024 Mozilla Foundation\n  *\n  * Licensed under the Apache License, Version 2.0 (the \"License\");\n  * you may not use this file except in compliance with the License.\n@@ -20,38 +20,4283 @@\n  * JavaScript code in this page\n  *\u002F\n \n-\u002F******\u002F \u002F\u002F The require scope\n-\u002F******\u002F var __webpack_require__ = {};\n-\u002F******\u002F \n+\u002F**\n+ * pdfjsVersion = 5.3.31\n+ * pdfjsBuild = 47ad820d9\n+ *\u002F\n+\u002F******\u002F var __webpack_modules__ = ({\n+\n+\u002F***\u002F 34:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isCallable = __webpack_require__(4901);\n+\n+module.exports = function (it) {\n+  return typeof it == 'object' ? it !== null : isCallable(it);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 81:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var call = __webpack_require__(9565);\n+var aCallable = __webpack_require__(9306);\n+var anObject = __webpack_require__(8551);\n+var tryToString = __webpack_require__(6823);\n+var getIteratorMethod = __webpack_require__(851);\n+\n+var $TypeError = TypeError;\n+\n+module.exports = function (argument, usingIterator) {\n+  var iteratorMethod = arguments.length \u003C 2 ? getIteratorMethod(argument) : usingIterator;\n+  if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n+  throw new $TypeError(tryToString(argument) + ' is not iterable');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 283:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+var fails = __webpack_require__(9039);\n+var isCallable = __webpack_require__(4901);\n+var hasOwn = __webpack_require__(9297);\n+var DESCRIPTORS = __webpack_require__(3724);\n+var CONFIGURABLE_FUNCTION_NAME = (__webpack_require__(350).CONFIGURABLE);\n+var inspectSource = __webpack_require__(3706);\n+var InternalStateModule = __webpack_require__(1181);\n+\n+var enforceInternalState = InternalStateModule.enforce;\n+var getInternalState = InternalStateModule.get;\n+var $String = String;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\n+var defineProperty = Object.defineProperty;\n+var stringSlice = uncurryThis(''.slice);\n+var replace = uncurryThis(''.replace);\n+var join = uncurryThis([].join);\n+\n+var CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n+  return defineProperty(function () { \u002F* empty *\u002F }, 'length', { value: 8 }).length !== 8;\n+});\n+\n+var TEMPLATE = String(String).split('String');\n+\n+var makeBuiltIn = module.exports = function (value, name, options) {\n+  if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n+    name = '[' + replace($String(name), \u002F^Symbol\\(([^)]*)\\).*$\u002F, '$1') + ']';\n+  }\n+  if (options && options.getter) name = 'get ' + name;\n+  if (options && options.setter) name = 'set ' + name;\n+  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n+    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n+    else value.name = name;\n+  }\n+  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n+    defineProperty(value, 'length', { value: options.arity });\n+  }\n+  try {\n+    if (options && hasOwn(options, 'constructor') && options.constructor) {\n+      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n+    \u002F\u002F in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n+    } else if (value.prototype) value.prototype = undefined;\n+  } catch (error) { \u002F* empty *\u002F }\n+  var state = enforceInternalState(value);\n+  if (!hasOwn(state, 'source')) {\n+    state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n+  } return value;\n+};\n+\n+\u002F\u002F add fake Function#toString for correct work wrapped methods \u002F constructors with methods like LoDash isNative\n+\u002F\u002F eslint-disable-next-line no-extend-native -- required\n+Function.prototype.toString = makeBuiltIn(function toString() {\n+  return isCallable(this) && getInternalState(this).source || inspectSource(this);\n+}, 'toString');\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 350:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var hasOwn = __webpack_require__(9297);\n+\n+var FunctionPrototype = Function.prototype;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n+\n+var EXISTS = hasOwn(FunctionPrototype, 'name');\n+\u002F\u002F additional protection from minified \u002F mangled \u002F dropped function names\n+var PROPER = EXISTS && (function something() { \u002F* empty *\u002F }).name === 'something';\n+var CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n+\n+module.exports = {\n+  EXISTS: EXISTS,\n+  PROPER: PROPER,\n+  CONFIGURABLE: CONFIGURABLE\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 397:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var getBuiltIn = __webpack_require__(7751);\n+\n+module.exports = getBuiltIn('document', 'documentElement');\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 421:\n+\u002F***\u002F ((module) => {\n+\n+\n+module.exports = {};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 507:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var call = __webpack_require__(9565);\n+\n+module.exports = function (record, fn, ITERATOR_INSTEAD_OF_RECORD) {\n+  var iterator = ITERATOR_INSTEAD_OF_RECORD ? record : record.iterator;\n+  var next = record.next;\n+  var step, result;\n+  while (!(step = call(next, iterator)).done) {\n+    result = fn(step.value);\n+    if (result !== undefined) return result;\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 616:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var fails = __webpack_require__(9039);\n+\n+module.exports = !fails(function () {\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind -- safe\n+  var test = (function () { \u002F* empty *\u002F }).bind();\n+  \u002F\u002F eslint-disable-next-line no-prototype-builtins -- safe\n+  return typeof test != 'function' || test.hasOwnProperty('prototype');\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 655:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var classof = __webpack_require__(6955);\n+\n+var $String = String;\n+\n+module.exports = function (argument) {\n+  if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n+  return $String(argument);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 679:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isPrototypeOf = __webpack_require__(1625);\n+\n+var $TypeError = TypeError;\n+\n+module.exports = function (it, Prototype) {\n+  if (isPrototypeOf(Prototype, it)) return it;\n+  throw new $TypeError('Incorrect invocation');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 741:\n+\u002F***\u002F ((module) => {\n+\n+\n+var ceil = Math.ceil;\n+var floor = Math.floor;\n+\n+\u002F\u002F `Math.trunc` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-math.trunc\n+\u002F\u002F eslint-disable-next-line es\u002Fno-math-trunc -- safe\n+module.exports = Math.trunc || function trunc(x) {\n+  var n = +x;\n+  return (n > 0 ? floor : ceil)(n);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 757:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var getBuiltIn = __webpack_require__(7751);\n+var isCallable = __webpack_require__(4901);\n+var isPrototypeOf = __webpack_require__(1625);\n+var USE_SYMBOL_AS_UID = __webpack_require__(7040);\n+\n+var $Object = Object;\n+\n+module.exports = USE_SYMBOL_AS_UID ? function (it) {\n+  return typeof it == 'symbol';\n+} : function (it) {\n+  var $Symbol = getBuiltIn('Symbol');\n+  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 851:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var classof = __webpack_require__(6955);\n+var getMethod = __webpack_require__(5966);\n+var isNullOrUndefined = __webpack_require__(4117);\n+var Iterators = __webpack_require__(6269);\n+var wellKnownSymbol = __webpack_require__(8227);\n+\n+var ITERATOR = wellKnownSymbol('iterator');\n+\n+module.exports = function (it) {\n+  if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n+    || getMethod(it, '@@iterator')\n+    || Iterators[classof(it)];\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1072:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var internalObjectKeys = __webpack_require__(1828);\n+var enumBugKeys = __webpack_require__(8727);\n+\n+\u002F\u002F `Object.keys` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.keys\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-keys -- safe\n+module.exports = Object.keys || function keys(O) {\n+  return internalObjectKeys(O, enumBugKeys);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1148:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var call = __webpack_require__(9565);\n+var iterate = __webpack_require__(2652);\n+var aCallable = __webpack_require__(9306);\n+var anObject = __webpack_require__(8551);\n+var getIteratorDirect = __webpack_require__(1767);\n+var iteratorClose = __webpack_require__(9539);\n+var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n+\n+var everyWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('every', TypeError);\n+\n+\u002F\u002F `Iterator.prototype.every` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.every\n+$({ target: 'Iterator', proto: true, real: true, forced: everyWithoutClosingOnEarlyError }, {\n+  every: function every(predicate) {\n+    anObject(this);\n+    try {\n+      aCallable(predicate);\n+    } catch (error) {\n+      iteratorClose(this, 'throw', error);\n+    }\n+\n+    if (everyWithoutClosingOnEarlyError) return call(everyWithoutClosingOnEarlyError, this, predicate);\n+\n+    var record = getIteratorDirect(this);\n+    var counter = 0;\n+    return !iterate(record, function (value, stop) {\n+      if (!predicate(value, counter++)) return stop();\n+    }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1181:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var NATIVE_WEAK_MAP = __webpack_require__(8622);\n+var globalThis = __webpack_require__(4576);\n+var isObject = __webpack_require__(34);\n+var createNonEnumerableProperty = __webpack_require__(6699);\n+var hasOwn = __webpack_require__(9297);\n+var shared = __webpack_require__(7629);\n+var sharedKey = __webpack_require__(6119);\n+var hiddenKeys = __webpack_require__(421);\n+\n+var OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\n+var TypeError = globalThis.TypeError;\n+var WeakMap = globalThis.WeakMap;\n+var set, get, has;\n+\n+var enforce = function (it) {\n+  return has(it) ? get(it) : set(it, {});\n+};\n+\n+var getterFor = function (TYPE) {\n+  return function (it) {\n+    var state;\n+    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n+      throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n+    } return state;\n+  };\n+};\n+\n+if (NATIVE_WEAK_MAP || shared.state) {\n+  var store = shared.state || (shared.state = new WeakMap());\n+  \u002F* eslint-disable no-self-assign -- prototype methods protection *\u002F\n+  store.get = store.get;\n+  store.has = store.has;\n+  store.set = store.set;\n+  \u002F* eslint-enable no-self-assign -- prototype methods protection *\u002F\n+  set = function (it, metadata) {\n+    if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n+    metadata.facade = it;\n+    store.set(it, metadata);\n+    return metadata;\n+  };\n+  get = function (it) {\n+    return store.get(it) || {};\n+  };\n+  has = function (it) {\n+    return store.has(it);\n+  };\n+} else {\n+  var STATE = sharedKey('state');\n+  hiddenKeys[STATE] = true;\n+  set = function (it, metadata) {\n+    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n+    metadata.facade = it;\n+    createNonEnumerableProperty(it, STATE, metadata);\n+    return metadata;\n+  };\n+  get = function (it) {\n+    return hasOwn(it, STATE) ? it[STATE] : {};\n+  };\n+  has = function (it) {\n+    return hasOwn(it, STATE);\n+  };\n+}\n+\n+module.exports = {\n+  set: set,\n+  get: get,\n+  has: has,\n+  enforce: enforce,\n+  getterFor: getterFor\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1291:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var trunc = __webpack_require__(741);\n+\n+\u002F\u002F `ToIntegerOrInfinity` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-tointegerorinfinity\n+module.exports = function (argument) {\n+  var number = +argument;\n+  \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\n+  return number !== number || number === 0 ? 0 : trunc(number);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1548:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var fails = __webpack_require__(9039);\n+var V8 = __webpack_require__(9519);\n+var ENVIRONMENT = __webpack_require__(4215);\n+\n+var structuredClone = globalThis.structuredClone;\n+\n+module.exports = !!structuredClone && !fails(function () {\n+  \u002F\u002F prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation\n+  \u002F\u002F https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F679\n+  if ((ENVIRONMENT === 'DENO' && V8 > 92) || (ENVIRONMENT === 'NODE' && V8 > 94) || (ENVIRONMENT === 'BROWSER' && V8 > 97)) return false;\n+  var buffer = new ArrayBuffer(8);\n+  var clone = structuredClone(buffer, { transfer: [buffer] });\n+  return buffer.byteLength !== 0 || clone.byteLength !== 8;\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1625:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+\n+module.exports = uncurryThis({}.isPrototypeOf);\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1698:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var union = __webpack_require__(4204);\n+var setMethodAcceptSetLike = __webpack_require__(4916);\n+\n+\u002F\u002F `Set.prototype.union` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.union\n+$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('union') }, {\n+  union: union\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1701:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var call = __webpack_require__(9565);\n+var aCallable = __webpack_require__(9306);\n+var anObject = __webpack_require__(8551);\n+var getIteratorDirect = __webpack_require__(1767);\n+var createIteratorProxy = __webpack_require__(9462);\n+var callWithSafeIterationClosing = __webpack_require__(6319);\n+var iteratorClose = __webpack_require__(9539);\n+var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n+var IS_PURE = __webpack_require__(6395);\n+\n+var mapWithoutClosingOnEarlyError = !IS_PURE && iteratorHelperWithoutClosingOnEarlyError('map', TypeError);\n+\n+var IteratorProxy = createIteratorProxy(function () {\n+  var iterator = this.iterator;\n+  var result = anObject(call(this.next, iterator));\n+  var done = this.done = !!result.done;\n+  if (!done) return callWithSafeIterationClosing(iterator, this.mapper, [result.value, this.counter++], true);\n+});\n+\n+\u002F\u002F `Iterator.prototype.map` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.map\n+$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE || mapWithoutClosingOnEarlyError }, {\n+  map: function map(mapper) {\n+    anObject(this);\n+    try {\n+      aCallable(mapper);\n+    } catch (error) {\n+      iteratorClose(this, 'throw', error);\n+    }\n+\n+    if (mapWithoutClosingOnEarlyError) return call(mapWithoutClosingOnEarlyError, this, mapper);\n+\n+    return new IteratorProxy(getIteratorDirect(this), {\n+      mapper: mapper\n+    });\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1767:\n+\u002F***\u002F ((module) => {\n+\n+\n+\u002F\u002F `GetIteratorDirect(obj)` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-iterator-helpers\u002F#sec-getiteratordirect\n+module.exports = function (obj) {\n+  return {\n+    iterator: obj,\n+    next: obj.next,\n+    done: false\n+  };\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 1828:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+var hasOwn = __webpack_require__(9297);\n+var toIndexedObject = __webpack_require__(5397);\n+var indexOf = (__webpack_require__(9617).indexOf);\n+var hiddenKeys = __webpack_require__(421);\n+\n+var push = uncurryThis([].push);\n+\n+module.exports = function (object, names) {\n+  var O = toIndexedObject(object);\n+  var i = 0;\n+  var result = [];\n+  var key;\n+  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n+  \u002F\u002F Don't enum bug & hidden keys\n+  while (names.length > i) if (hasOwn(O, key = names[i++])) {\n+    ~indexOf(result, key) || push(result, key);\n+  }\n+  return result;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2106:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var makeBuiltIn = __webpack_require__(283);\n+var defineProperty = __webpack_require__(4913);\n+\n+module.exports = function (target, name, descriptor) {\n+  if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n+  if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n+  return defineProperty.f(target, name, descriptor);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2140:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var wellKnownSymbol = __webpack_require__(8227);\n+\n+var TO_STRING_TAG = wellKnownSymbol('toStringTag');\n+var test = {};\n+\n+test[TO_STRING_TAG] = 'z';\n+\n+module.exports = String(test) === '[object z]';\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2195:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+\n+var toString = uncurryThis({}.toString);\n+var stringSlice = uncurryThis(''.slice);\n+\n+module.exports = function (it) {\n+  return stringSlice(toString(it), 8, -1);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2211:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var fails = __webpack_require__(9039);\n+\n+module.exports = !fails(function () {\n+  function F() { \u002F* empty *\u002F }\n+  F.prototype.constructor = null;\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-object-getprototypeof -- required for testing\n+  return Object.getPrototypeOf(new F()) !== F.prototype;\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2222:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var getBuiltIn = __webpack_require__(7751);\n+var fails = __webpack_require__(9039);\n+var validateArgumentsLength = __webpack_require__(2812);\n+var toString = __webpack_require__(655);\n+var USE_NATIVE_URL = __webpack_require__(7416);\n+\n+var URL = getBuiltIn('URL');\n+\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Fnodejs\u002Fnode\u002Fissues\u002F47505\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Fdenoland\u002Fdeno\u002Fissues\u002F18893\n+var THROWS_WITHOUT_ARGUMENTS = USE_NATIVE_URL && fails(function () {\n+  URL.canParse();\n+});\n+\n+\u002F\u002F Bun ~ 1.0.30 bug\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Foven-sh\u002Fbun\u002Fissues\u002F9250\n+var WRONG_ARITY = fails(function () {\n+  return URL.canParse.length !== 1;\n+});\n+\n+\u002F\u002F `URL.canParse` method\n+\u002F\u002F https:\u002F\u002Furl.spec.whatwg.org\u002F#dom-url-canparse\n+$({ target: 'URL', stat: true, forced: !THROWS_WITHOUT_ARGUMENTS || WRONG_ARITY }, {\n+  canParse: function canParse(url) {\n+    var length = validateArgumentsLength(arguments.length, 1);\n+    var urlString = toString(url);\n+    var base = length \u003C 2 || arguments[1] === undefined ? undefined : toString(arguments[1]);\n+    try {\n+      return !!new URL(urlString, base);\n+    } catch (error) {\n+      return false;\n+    }\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2360:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+\u002F* global ActiveXObject -- old IE, WSH *\u002F\n+var anObject = __webpack_require__(8551);\n+var definePropertiesModule = __webpack_require__(6801);\n+var enumBugKeys = __webpack_require__(8727);\n+var hiddenKeys = __webpack_require__(421);\n+var html = __webpack_require__(397);\n+var documentCreateElement = __webpack_require__(4055);\n+var sharedKey = __webpack_require__(6119);\n+\n+var GT = '>';\n+var LT = '\u003C';\n+var PROTOTYPE = 'prototype';\n+var SCRIPT = 'script';\n+var IE_PROTO = sharedKey('IE_PROTO');\n+\n+var EmptyConstructor = function () { \u002F* empty *\u002F };\n+\n+var scriptTag = function (content) {\n+  return LT + SCRIPT + GT + content + LT + '\u002F' + SCRIPT + GT;\n+};\n+\n+\u002F\u002F Create object with fake `null` prototype: use ActiveX Object with cleared prototype\n+var NullProtoObjectViaActiveX = function (activeXDocument) {\n+  activeXDocument.write(scriptTag(''));\n+  activeXDocument.close();\n+  var temp = activeXDocument.parentWindow.Object;\n+  \u002F\u002F eslint-disable-next-line no-useless-assignment -- avoid memory leak\n+  activeXDocument = null;\n+  return temp;\n+};\n+\n+\u002F\u002F Create object with fake `null` prototype: use iframe Object with cleared prototype\n+var NullProtoObjectViaIFrame = function () {\n+  \u002F\u002F Thrash, waste and sodomy: IE GC bug\n+  var iframe = documentCreateElement('iframe');\n+  var JS = 'java' + SCRIPT + ':';\n+  var iframeDocument;\n+  iframe.style.display = 'none';\n+  html.appendChild(iframe);\n+  \u002F\u002F https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F475\n+  iframe.src = String(JS);\n+  iframeDocument = iframe.contentWindow.document;\n+  iframeDocument.open();\n+  iframeDocument.write(scriptTag('document.F=Object'));\n+  iframeDocument.close();\n+  return iframeDocument.F;\n+};\n+\n+\u002F\u002F Check for document.domain and active x support\n+\u002F\u002F No need to use active x approach when document.domain is not set\n+\u002F\u002F see https:\u002F\u002Fgithub.com\u002Fes-shims\u002Fes5-shim\u002Fissues\u002F150\n+\u002F\u002F variation of https:\u002F\u002Fgithub.com\u002Fkitcambridge\u002Fes5-shim\u002Fcommit\u002F4f738ac066346\n+\u002F\u002F avoid IE GC bug\n+var activeXDocument;\n+var NullProtoObject = function () {\n+  try {\n+    activeXDocument = new ActiveXObject('htmlfile');\n+  } catch (error) { \u002F* ignore *\u002F }\n+  NullProtoObject = typeof document != 'undefined'\n+    ? document.domain && activeXDocument\n+      ? NullProtoObjectViaActiveX(activeXDocument) \u002F\u002F old IE\n+      : NullProtoObjectViaIFrame()\n+    : NullProtoObjectViaActiveX(activeXDocument); \u002F\u002F WSH\n+  var length = enumBugKeys.length;\n+  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n+  return NullProtoObject();\n+};\n+\n+hiddenKeys[IE_PROTO] = true;\n+\n+\u002F\u002F `Object.create` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.create\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-create -- safe\n+module.exports = Object.create || function create(O, Properties) {\n+  var result;\n+  if (O !== null) {\n+    EmptyConstructor[PROTOTYPE] = anObject(O);\n+    result = new EmptyConstructor();\n+    EmptyConstructor[PROTOTYPE] = null;\n+    \u002F\u002F add \"__proto__\" for Object.getPrototypeOf polyfill\n+    result[IE_PROTO] = O;\n+  } else result = NullProtoObject();\n+  return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2475:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var isSupersetOf = __webpack_require__(8527);\n+var setMethodAcceptSetLike = __webpack_require__(4916);\n+\n+var INCORRECT = !setMethodAcceptSetLike('isSupersetOf', function (result) {\n+  return !result;\n+});\n+\n+\u002F\u002F `Set.prototype.isSupersetOf` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.issupersetof\n+$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n+  isSupersetOf: isSupersetOf\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2489:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var call = __webpack_require__(9565);\n+var aCallable = __webpack_require__(9306);\n+var anObject = __webpack_require__(8551);\n+var getIteratorDirect = __webpack_require__(1767);\n+var createIteratorProxy = __webpack_require__(9462);\n+var callWithSafeIterationClosing = __webpack_require__(6319);\n+var IS_PURE = __webpack_require__(6395);\n+var iteratorClose = __webpack_require__(9539);\n+var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n+\n+var filterWithoutClosingOnEarlyError = !IS_PURE && iteratorHelperWithoutClosingOnEarlyError('filter', TypeError);\n+\n+var IteratorProxy = createIteratorProxy(function () {\n+  var iterator = this.iterator;\n+  var predicate = this.predicate;\n+  var next = this.next;\n+  var result, done, value;\n+  while (true) {\n+    result = anObject(call(next, iterator));\n+    done = this.done = !!result.done;\n+    if (done) return;\n+    value = result.value;\n+    if (callWithSafeIterationClosing(iterator, predicate, [value, this.counter++], true)) return value;\n+  }\n+});\n+\n+\u002F\u002F `Iterator.prototype.filter` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.filter\n+$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE || filterWithoutClosingOnEarlyError }, {\n+  filter: function filter(predicate) {\n+    anObject(this);\n+    try {\n+      aCallable(predicate);\n+    } catch (error) {\n+      iteratorClose(this, 'throw', error);\n+    }\n+\n+    if (filterWithoutClosingOnEarlyError) return call(filterWithoutClosingOnEarlyError, this, predicate);\n+\n+    return new IteratorProxy(getIteratorDirect(this), {\n+      predicate: predicate\n+    });\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2529:\n+\u002F***\u002F ((module) => {\n+\n+\n+\u002F\u002F `CreateIterResultObject` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-createiterresultobject\n+module.exports = function (value, done) {\n+  return { value: value, done: done };\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2652:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var bind = __webpack_require__(6080);\n+var call = __webpack_require__(9565);\n+var anObject = __webpack_require__(8551);\n+var tryToString = __webpack_require__(6823);\n+var isArrayIteratorMethod = __webpack_require__(4209);\n+var lengthOfArrayLike = __webpack_require__(6198);\n+var isPrototypeOf = __webpack_require__(1625);\n+var getIterator = __webpack_require__(81);\n+var getIteratorMethod = __webpack_require__(851);\n+var iteratorClose = __webpack_require__(9539);\n+\n+var $TypeError = TypeError;\n+\n+var Result = function (stopped, result) {\n+  this.stopped = stopped;\n+  this.result = result;\n+};\n+\n+var ResultPrototype = Result.prototype;\n+\n+module.exports = function (iterable, unboundFunction, options) {\n+  var that = options && options.that;\n+  var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n+  var IS_RECORD = !!(options && options.IS_RECORD);\n+  var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n+  var INTERRUPTED = !!(options && options.INTERRUPTED);\n+  var fn = bind(unboundFunction, that);\n+  var iterator, iterFn, index, length, result, next, step;\n+\n+  var stop = function (condition) {\n+    if (iterator) iteratorClose(iterator, 'normal', condition);\n+    return new Result(true, condition);\n+  };\n+\n+  var callFn = function (value) {\n+    if (AS_ENTRIES) {\n+      anObject(value);\n+      return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n+    } return INTERRUPTED ? fn(value, stop) : fn(value);\n+  };\n+\n+  if (IS_RECORD) {\n+    iterator = iterable.iterator;\n+  } else if (IS_ITERATOR) {\n+    iterator = iterable;\n+  } else {\n+    iterFn = getIteratorMethod(iterable);\n+    if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');\n+    \u002F\u002F optimisation for array iterators\n+    if (isArrayIteratorMethod(iterFn)) {\n+      for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n+        result = callFn(iterable[index]);\n+        if (result && isPrototypeOf(ResultPrototype, result)) return result;\n+      } return new Result(false);\n+    }\n+    iterator = getIterator(iterable, iterFn);\n+  }\n+\n+  next = IS_RECORD ? iterable.next : iterator.next;\n+  while (!(step = call(next, iterator)).done) {\n+    try {\n+      result = callFn(step.value);\n+    } catch (error) {\n+      iteratorClose(iterator, 'throw', error);\n+    }\n+    if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n+  } return new Result(false);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2777:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var call = __webpack_require__(9565);\n+var isObject = __webpack_require__(34);\n+var isSymbol = __webpack_require__(757);\n+var getMethod = __webpack_require__(5966);\n+var ordinaryToPrimitive = __webpack_require__(4270);\n+var wellKnownSymbol = __webpack_require__(8227);\n+\n+var $TypeError = TypeError;\n+var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n+\n+\u002F\u002F `ToPrimitive` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-toprimitive\n+module.exports = function (input, pref) {\n+  if (!isObject(input) || isSymbol(input)) return input;\n+  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n+  var result;\n+  if (exoticToPrim) {\n+    if (pref === undefined) pref = 'default';\n+    result = call(exoticToPrim, input, pref);\n+    if (!isObject(result) || isSymbol(result)) return result;\n+    throw new $TypeError(\"Can't convert object to primitive value\");\n+  }\n+  if (pref === undefined) pref = 'number';\n+  return ordinaryToPrimitive(input, pref);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2787:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var hasOwn = __webpack_require__(9297);\n+var isCallable = __webpack_require__(4901);\n+var toObject = __webpack_require__(8981);\n+var sharedKey = __webpack_require__(6119);\n+var CORRECT_PROTOTYPE_GETTER = __webpack_require__(2211);\n+\n+var IE_PROTO = sharedKey('IE_PROTO');\n+var $Object = Object;\n+var ObjectPrototype = $Object.prototype;\n+\n+\u002F\u002F `Object.getPrototypeOf` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.getprototypeof\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getprototypeof -- safe\n+module.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n+  var object = toObject(O);\n+  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n+  var constructor = object.constructor;\n+  if (isCallable(constructor) && object instanceof constructor) {\n+    return constructor.prototype;\n+  } return object instanceof $Object ? ObjectPrototype : null;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2796:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var fails = __webpack_require__(9039);\n+var isCallable = __webpack_require__(4901);\n+\n+var replacement = \u002F#|\\.prototype\\.\u002F;\n+\n+var isForced = function (feature, detection) {\n+  var value = data[normalize(feature)];\n+  return value === POLYFILL ? true\n+    : value === NATIVE ? false\n+    : isCallable(detection) ? fails(detection)\n+    : !!detection;\n+};\n+\n+var normalize = isForced.normalize = function (string) {\n+  return String(string).replace(replacement, '.').toLowerCase();\n+};\n+\n+var data = isForced.data = {};\n+var NATIVE = isForced.NATIVE = 'N';\n+var POLYFILL = isForced.POLYFILL = 'P';\n+\n+module.exports = isForced;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2812:\n+\u002F***\u002F ((module) => {\n+\n+\n+var $TypeError = TypeError;\n+\n+module.exports = function (passed, required) {\n+  if (passed \u003C required) throw new $TypeError('Not enough arguments');\n+  return passed;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 2839:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+\n+var navigator = globalThis.navigator;\n+var userAgent = navigator && navigator.userAgent;\n+\n+module.exports = userAgent ? String(userAgent) : '';\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3238:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var NATIVE_ARRAY_BUFFER = __webpack_require__(7811);\n+var arrayBufferByteLength = __webpack_require__(7394);\n+\n+var DataView = globalThis.DataView;\n+\n+module.exports = function (O) {\n+  if (!NATIVE_ARRAY_BUFFER || arrayBufferByteLength(O) !== 0) return false;\n+  try {\n+    \u002F\u002F eslint-disable-next-line no-new -- thrower\n+    new DataView(O);\n+    return false;\n+  } catch (error) {\n+    return true;\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3392:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+\n+var id = 0;\n+var postfix = Math.random();\n+var toString = uncurryThis(1.0.toString);\n+\n+module.exports = function (key) {\n+  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3440:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aSet = __webpack_require__(7080);\n+var SetHelpers = __webpack_require__(4402);\n+var clone = __webpack_require__(9286);\n+var size = __webpack_require__(5170);\n+var getSetRecord = __webpack_require__(3789);\n+var iterateSet = __webpack_require__(8469);\n+var iterateSimple = __webpack_require__(507);\n+\n+var has = SetHelpers.has;\n+var remove = SetHelpers.remove;\n+\n+\u002F\u002F `Set.prototype.difference` method\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\n+module.exports = function difference(other) {\n+  var O = aSet(this);\n+  var otherRec = getSetRecord(other);\n+  var result = clone(O);\n+  if (size(O) \u003C= otherRec.size) iterateSet(O, function (e) {\n+    if (otherRec.includes(e)) remove(result, e);\n+  });\n+  else iterateSimple(otherRec.getIterator(), function (e) {\n+    if (has(O, e)) remove(result, e);\n+  });\n+  return result;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3579:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var call = __webpack_require__(9565);\n+var iterate = __webpack_require__(2652);\n+var aCallable = __webpack_require__(9306);\n+var anObject = __webpack_require__(8551);\n+var getIteratorDirect = __webpack_require__(1767);\n+var iteratorClose = __webpack_require__(9539);\n+var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n+\n+var someWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('some', TypeError);\n+\n+\u002F\u002F `Iterator.prototype.some` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.some\n+$({ target: 'Iterator', proto: true, real: true, forced: someWithoutClosingOnEarlyError }, {\n+  some: function some(predicate) {\n+    anObject(this);\n+    try {\n+      aCallable(predicate);\n+    } catch (error) {\n+      iteratorClose(this, 'throw', error);\n+    }\n+\n+    if (someWithoutClosingOnEarlyError) return call(someWithoutClosingOnEarlyError, this, predicate);\n+\n+    var record = getIteratorDirect(this);\n+    var counter = 0;\n+    return iterate(record, function (value, stop) {\n+      if (predicate(value, counter++)) return stop();\n+    }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3650:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aSet = __webpack_require__(7080);\n+var SetHelpers = __webpack_require__(4402);\n+var clone = __webpack_require__(9286);\n+var getSetRecord = __webpack_require__(3789);\n+var iterateSimple = __webpack_require__(507);\n+\n+var add = SetHelpers.add;\n+var has = SetHelpers.has;\n+var remove = SetHelpers.remove;\n+\n+\u002F\u002F `Set.prototype.symmetricDifference` method\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\n+module.exports = function symmetricDifference(other) {\n+  var O = aSet(this);\n+  var keysIter = getSetRecord(other).getIterator();\n+  var result = clone(O);\n+  iterateSimple(keysIter, function (e) {\n+    if (has(O, e)) remove(result, e);\n+    else add(result, e);\n+  });\n+  return result;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3706:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+var isCallable = __webpack_require__(4901);\n+var store = __webpack_require__(7629);\n+\n+var functionToString = uncurryThis(Function.toString);\n+\n+\u002F\u002F this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\n+if (!isCallable(store.inspectSource)) {\n+  store.inspectSource = function (it) {\n+    return functionToString(it);\n+  };\n+}\n+\n+module.exports = store.inspectSource;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3717:\n+\u002F***\u002F ((__unused_webpack_module, exports) => {\n+\n+\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertysymbols -- safe\n+exports.f = Object.getOwnPropertySymbols;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3724:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var fails = __webpack_require__(9039);\n+\n+\u002F\u002F Detect IE8's incomplete defineProperty implementation\n+module.exports = !fails(function () {\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- required for testing\n+  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3789:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aCallable = __webpack_require__(9306);\n+var anObject = __webpack_require__(8551);\n+var call = __webpack_require__(9565);\n+var toIntegerOrInfinity = __webpack_require__(1291);\n+var getIteratorDirect = __webpack_require__(1767);\n+\n+var INVALID_SIZE = 'Invalid size';\n+var $RangeError = RangeError;\n+var $TypeError = TypeError;\n+var max = Math.max;\n+\n+var SetRecord = function (set, intSize) {\n+  this.set = set;\n+  this.size = max(intSize, 0);\n+  this.has = aCallable(set.has);\n+  this.keys = aCallable(set.keys);\n+};\n+\n+SetRecord.prototype = {\n+  getIterator: function () {\n+    return getIteratorDirect(anObject(call(this.keys, this.set)));\n+  },\n+  includes: function (it) {\n+    return call(this.has, this.set, it);\n+  }\n+};\n+\n+\u002F\u002F `GetSetRecord` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-set-methods\u002F#sec-getsetrecord\n+module.exports = function (obj) {\n+  anObject(obj);\n+  var numSize = +obj.size;\n+  \u002F\u002F NOTE: If size is undefined, then numSize will be NaN\n+  \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\n+  if (numSize !== numSize) throw new $TypeError(INVALID_SIZE);\n+  var intSize = toIntegerOrInfinity(numSize);\n+  if (intSize \u003C 0) throw new $RangeError(INVALID_SIZE);\n+  return new SetRecord(obj, intSize);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3838:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aSet = __webpack_require__(7080);\n+var size = __webpack_require__(5170);\n+var iterate = __webpack_require__(8469);\n+var getSetRecord = __webpack_require__(3789);\n+\n+\u002F\u002F `Set.prototype.isSubsetOf` method\n+\u002F\u002F https:\u002F\u002Ftc39.github.io\u002Fproposal-set-methods\u002F#Set.prototype.isSubsetOf\n+module.exports = function isSubsetOf(other) {\n+  var O = aSet(this);\n+  var otherRec = getSetRecord(other);\n+  if (size(O) > otherRec.size) return false;\n+  return iterate(O, function (e) {\n+    if (!otherRec.includes(e)) return false;\n+  }, true) !== false;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 3853:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var isDisjointFrom = __webpack_require__(4449);\n+var setMethodAcceptSetLike = __webpack_require__(4916);\n+\n+var INCORRECT = !setMethodAcceptSetLike('isDisjointFrom', function (result) {\n+  return !result;\n+});\n+\n+\u002F\u002F `Set.prototype.isDisjointFrom` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.isdisjointfrom\n+$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n+  isDisjointFrom: isDisjointFrom\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4055:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var isObject = __webpack_require__(34);\n+\n+var document = globalThis.document;\n+\u002F\u002F typeof document.createElement is 'object' in old IE\n+var EXISTS = isObject(document) && isObject(document.createElement);\n+\n+module.exports = function (it) {\n+  return EXISTS ? document.createElement(it) : {};\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4114:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var toObject = __webpack_require__(8981);\n+var lengthOfArrayLike = __webpack_require__(6198);\n+var setArrayLength = __webpack_require__(4527);\n+var doesNotExceedSafeInteger = __webpack_require__(6837);\n+var fails = __webpack_require__(9039);\n+\n+var INCORRECT_TO_LENGTH = fails(function () {\n+  return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n+});\n+\n+\u002F\u002F V8 \u003C= 121 and Safari \u003C= 15.4; FF \u003C 23 throws InternalError\n+\u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=12681\n+var properErrorOnNonWritableLength = function () {\n+  try {\n+    \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\n+    Object.defineProperty([], 'length', { writable: false }).push();\n+  } catch (error) {\n+    return error instanceof TypeError;\n+  }\n+};\n+\n+var FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n+\n+\u002F\u002F `Array.prototype.push` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-array.prototype.push\n+$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n+  \u002F\u002F eslint-disable-next-line no-unused-vars -- required for `.length`\n+  push: function push(item) {\n+    var O = toObject(this);\n+    var len = lengthOfArrayLike(O);\n+    var argCount = arguments.length;\n+    doesNotExceedSafeInteger(len + argCount);\n+    for (var i = 0; i \u003C argCount; i++) {\n+      O[len] = arguments[i];\n+      len++;\n+    }\n+    setArrayLength(O, len);\n+    return len;\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4117:\n+\u002F***\u002F ((module) => {\n+\n+\n+\u002F\u002F we can't use just `it == null` since of `document.all` special case\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-IsHTMLDDA-internal-slot-aec\n+module.exports = function (it) {\n+  return it === null || it === undefined;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4204:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aSet = __webpack_require__(7080);\n+var add = (__webpack_require__(4402).add);\n+var clone = __webpack_require__(9286);\n+var getSetRecord = __webpack_require__(3789);\n+var iterateSimple = __webpack_require__(507);\n+\n+\u002F\u002F `Set.prototype.union` method\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\n+module.exports = function union(other) {\n+  var O = aSet(this);\n+  var keysIter = getSetRecord(other).getIterator();\n+  var result = clone(O);\n+  iterateSimple(keysIter, function (it) {\n+    add(result, it);\n+  });\n+  return result;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4209:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var wellKnownSymbol = __webpack_require__(8227);\n+var Iterators = __webpack_require__(6269);\n+\n+var ITERATOR = wellKnownSymbol('iterator');\n+var ArrayPrototype = Array.prototype;\n+\n+\u002F\u002F check on default Array iterator\n+module.exports = function (it) {\n+  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4215:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+\u002F* global Bun, Deno -- detection *\u002F\n+var globalThis = __webpack_require__(4576);\n+var userAgent = __webpack_require__(2839);\n+var classof = __webpack_require__(2195);\n+\n+var userAgentStartsWith = function (string) {\n+  return userAgent.slice(0, string.length) === string;\n+};\n+\n+module.exports = (function () {\n+  if (userAgentStartsWith('Bun\u002F')) return 'BUN';\n+  if (userAgentStartsWith('Cloudflare-Workers')) return 'CLOUDFLARE';\n+  if (userAgentStartsWith('Deno\u002F')) return 'DENO';\n+  if (userAgentStartsWith('Node.js\u002F')) return 'NODE';\n+  if (globalThis.Bun && typeof Bun.version == 'string') return 'BUN';\n+  if (globalThis.Deno && typeof Deno.version == 'object') return 'DENO';\n+  if (classof(globalThis.process) === 'process') return 'NODE';\n+  if (globalThis.window && globalThis.document) return 'BROWSER';\n+  return 'REST';\n+})();\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4270:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var call = __webpack_require__(9565);\n+var isCallable = __webpack_require__(4901);\n+var isObject = __webpack_require__(34);\n+\n+var $TypeError = TypeError;\n+\n+\u002F\u002F `OrdinaryToPrimitive` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-ordinarytoprimitive\n+module.exports = function (input, pref) {\n+  var fn, val;\n+  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n+  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n+  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n+  throw new $TypeError(\"Can't convert object to primitive value\");\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4376:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var classof = __webpack_require__(2195);\n+\n+\u002F\u002F `IsArray` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-isarray\n+\u002F\u002F eslint-disable-next-line es\u002Fno-array-isarray -- safe\n+module.exports = Array.isArray || function isArray(argument) {\n+  return classof(argument) === 'Array';\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4402:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+\n+\u002F\u002F eslint-disable-next-line es\u002Fno-set -- safe\n+var SetPrototype = Set.prototype;\n+\n+module.exports = {\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-set -- safe\n+  Set: Set,\n+  add: uncurryThis(SetPrototype.add),\n+  has: uncurryThis(SetPrototype.has),\n+  remove: uncurryThis(SetPrototype['delete']),\n+  proto: SetPrototype\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4449:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aSet = __webpack_require__(7080);\n+var has = (__webpack_require__(4402).has);\n+var size = __webpack_require__(5170);\n+var getSetRecord = __webpack_require__(3789);\n+var iterateSet = __webpack_require__(8469);\n+var iterateSimple = __webpack_require__(507);\n+var iteratorClose = __webpack_require__(9539);\n+\n+\u002F\u002F `Set.prototype.isDisjointFrom` method\n+\u002F\u002F https:\u002F\u002Ftc39.github.io\u002Fproposal-set-methods\u002F#Set.prototype.isDisjointFrom\n+module.exports = function isDisjointFrom(other) {\n+  var O = aSet(this);\n+  var otherRec = getSetRecord(other);\n+  if (size(O) \u003C= otherRec.size) return iterateSet(O, function (e) {\n+    if (otherRec.includes(e)) return false;\n+  }, true) !== false;\n+  var iterator = otherRec.getIterator();\n+  return iterateSimple(iterator, function (e) {\n+    if (has(O, e)) return iteratorClose(iterator, 'normal', false);\n+  }) !== false;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4483:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var getBuiltInNodeModule = __webpack_require__(9429);\n+var PROPER_STRUCTURED_CLONE_TRANSFER = __webpack_require__(1548);\n+\n+var structuredClone = globalThis.structuredClone;\n+var $ArrayBuffer = globalThis.ArrayBuffer;\n+var $MessageChannel = globalThis.MessageChannel;\n+var detach = false;\n+var WorkerThreads, channel, buffer, $detach;\n+\n+if (PROPER_STRUCTURED_CLONE_TRANSFER) {\n+  detach = function (transferable) {\n+    structuredClone(transferable, { transfer: [transferable] });\n+  };\n+} else if ($ArrayBuffer) try {\n+  if (!$MessageChannel) {\n+    WorkerThreads = getBuiltInNodeModule('worker_threads');\n+    if (WorkerThreads) $MessageChannel = WorkerThreads.MessageChannel;\n+  }\n+\n+  if ($MessageChannel) {\n+    channel = new $MessageChannel();\n+    buffer = new $ArrayBuffer(2);\n+\n+    $detach = function (transferable) {\n+      channel.port1.postMessage(null, [transferable]);\n+    };\n+\n+    if (buffer.byteLength === 2) {\n+      $detach(buffer);\n+      if (buffer.byteLength === 0) detach = $detach;\n+    }\n+  }\n+} catch (error) { \u002F* empty *\u002F }\n+\n+module.exports = detach;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4495:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+\u002F* eslint-disable es\u002Fno-symbol -- required for testing *\u002F\n+var V8_VERSION = __webpack_require__(9519);\n+var fails = __webpack_require__(9039);\n+var globalThis = __webpack_require__(4576);\n+\n+var $String = globalThis.String;\n+\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertysymbols -- required for testing\n+module.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n+  var symbol = Symbol('symbol detection');\n+  \u002F\u002F Chrome 38 Symbol has incorrect toString conversion\n+  \u002F\u002F `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n+  \u002F\u002F nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n+  \u002F\u002F of course, fail.\n+  return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n+    \u002F\u002F Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n+    !Symbol.sham && V8_VERSION && V8_VERSION \u003C 41;\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4527:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var isArray = __webpack_require__(4376);\n+\n+var $TypeError = TypeError;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n+\n+\u002F\u002F Safari \u003C 13 does not throw an error in this case\n+var SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n+  \u002F\u002F makes no sense without proper strict mode support\n+  if (this !== undefined) return true;\n+  try {\n+    \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\n+    Object.defineProperty([], 'length', { writable: false }).length = 1;\n+  } catch (error) {\n+    return error instanceof TypeError;\n+  }\n+}();\n+\n+module.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n+  if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n+    throw new $TypeError('Cannot set read only .length');\n+  } return O.length = length;\n+} : function (O, length) {\n+  return O.length = length;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4549:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fecma262\u002Fpull\u002F3467\n+module.exports = function (METHOD_NAME, ExpectedError) {\n+  var Iterator = globalThis.Iterator;\n+  var IteratorPrototype = Iterator && Iterator.prototype;\n+  var method = IteratorPrototype && IteratorPrototype[METHOD_NAME];\n+\n+  var CLOSED = false;\n+\n+  if (method) try {\n+    method.call({\n+      next: function () { return { done: true }; },\n+      'return': function () { CLOSED = true; }\n+    }, -1);\n+  } catch (error) {\n+    \u002F\u002F https:\u002F\u002Fbugs.webkit.org\u002Fshow_bug.cgi?id=291195\n+    if (!(error instanceof ExpectedError)) CLOSED = false;\n+  }\n+\n+  if (!CLOSED) return method;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4576:\n+\u002F***\u002F (function(module) {\n+\n+\n+var check = function (it) {\n+  return it && it.Math === Math && it;\n+};\n+\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F86#issuecomment-115759028\n+module.exports =\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-global-this -- safe\n+  check(typeof globalThis == 'object' && globalThis) ||\n+  check(typeof window == 'object' && window) ||\n+  \u002F\u002F eslint-disable-next-line no-restricted-globals -- safe\n+  check(typeof self == 'object' && self) ||\n+  check(typeof global == 'object' && global) ||\n+  check(typeof this == 'object' && this) ||\n+  \u002F\u002F eslint-disable-next-line no-new-func -- fallback\n+  (function () { return this; })() || Function('return this')();\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4603:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var defineBuiltIn = __webpack_require__(6840);\n+var uncurryThis = __webpack_require__(9504);\n+var toString = __webpack_require__(655);\n+var validateArgumentsLength = __webpack_require__(2812);\n+\n+var $URLSearchParams = URLSearchParams;\n+var URLSearchParamsPrototype = $URLSearchParams.prototype;\n+var append = uncurryThis(URLSearchParamsPrototype.append);\n+var $delete = uncurryThis(URLSearchParamsPrototype['delete']);\n+var forEach = uncurryThis(URLSearchParamsPrototype.forEach);\n+var push = uncurryThis([].push);\n+var params = new $URLSearchParams('a=1&a=2&b=3');\n+\n+params['delete']('a', 1);\n+\u002F\u002F `undefined` case is a Chromium 117 bug\n+\u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=14222\n+params['delete']('b', undefined);\n+\n+if (params + '' !== 'a=2') {\n+  defineBuiltIn(URLSearchParamsPrototype, 'delete', function (name \u002F* , value *\u002F) {\n+    var length = arguments.length;\n+    var $value = length \u003C 2 ? undefined : arguments[1];\n+    if (length && $value === undefined) return $delete(this, name);\n+    var entries = [];\n+    forEach(this, function (v, k) { \u002F\u002F also validates `this`\n+      push(entries, { key: k, value: v });\n+    });\n+    validateArgumentsLength(length, 1);\n+    var key = toString(name);\n+    var value = toString($value);\n+    var index = 0;\n+    var dindex = 0;\n+    var found = false;\n+    var entriesLength = entries.length;\n+    var entry;\n+    while (index \u003C entriesLength) {\n+      entry = entries[index++];\n+      if (found || entry.key === key) {\n+        found = true;\n+        $delete(this, entry.key);\n+      } else dindex++;\n+    }\n+    while (dindex \u003C entriesLength) {\n+      entry = entries[dindex++];\n+      if (!(entry.key === key && entry.value === value)) append(this, entry.key, entry.value);\n+    }\n+  }, { enumerable: true, unsafe: true });\n+}\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4628:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var newPromiseCapabilityModule = __webpack_require__(6043);\n+\n+\u002F\u002F `Promise.withResolvers` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-promise.withResolvers\n+$({ target: 'Promise', stat: true }, {\n+  withResolvers: function withResolvers() {\n+    var promiseCapability = newPromiseCapabilityModule.f(this);\n+    return {\n+      promise: promiseCapability.promise,\n+      resolve: promiseCapability.resolve,\n+      reject: promiseCapability.reject\n+    };\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4659:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var definePropertyModule = __webpack_require__(4913);\n+var createPropertyDescriptor = __webpack_require__(6980);\n+\n+module.exports = function (object, key, value) {\n+  if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));\n+  else object[key] = value;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4901:\n+\u002F***\u002F ((module) => {\n+\n+\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-IsHTMLDDA-internal-slot\n+var documentAll = typeof document == 'object' && document.all;\n+\n+\u002F\u002F `IsCallable` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iscallable\n+\u002F\u002F eslint-disable-next-line unicorn\u002Fno-typeof-undefined -- required for testing\n+module.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n+  return typeof argument == 'function' || argument === documentAll;\n+} : function (argument) {\n+  return typeof argument == 'function';\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4913:\n+\u002F***\u002F ((__unused_webpack_module, exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var IE8_DOM_DEFINE = __webpack_require__(5917);\n+var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(8686);\n+var anObject = __webpack_require__(8551);\n+var toPropertyKey = __webpack_require__(6969);\n+\n+var $TypeError = TypeError;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\n+var $defineProperty = Object.defineProperty;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n+var ENUMERABLE = 'enumerable';\n+var CONFIGURABLE = 'configurable';\n+var WRITABLE = 'writable';\n+\n+\u002F\u002F `Object.defineProperty` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.defineproperty\n+exports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n+  anObject(O);\n+  P = toPropertyKey(P);\n+  anObject(Attributes);\n+  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n+    var current = $getOwnPropertyDescriptor(O, P);\n+    if (current && current[WRITABLE]) {\n+      O[P] = Attributes.value;\n+      Attributes = {\n+        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n+        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n+        writable: false\n+      };\n+    }\n+  } return $defineProperty(O, P, Attributes);\n+} : $defineProperty : function defineProperty(O, P, Attributes) {\n+  anObject(O);\n+  P = toPropertyKey(P);\n+  anObject(Attributes);\n+  if (IE8_DOM_DEFINE) try {\n+    return $defineProperty(O, P, Attributes);\n+  } catch (error) { \u002F* empty *\u002F }\n+  if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n+  if ('value' in Attributes) O[P] = Attributes.value;\n+  return O;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 4916:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var getBuiltIn = __webpack_require__(7751);\n+\n+var createSetLike = function (size) {\n+  return {\n+    size: size,\n+    has: function () {\n+      return false;\n+    },\n+    keys: function () {\n+      return {\n+        next: function () {\n+          return { done: true };\n+        }\n+      };\n+    }\n+  };\n+};\n+\n+var createSetLikeWithInfinitySize = function (size) {\n+  return {\n+    size: size,\n+    has: function () {\n+      return true;\n+    },\n+    keys: function () {\n+      throw new Error('e');\n+    }\n+  };\n+};\n+\n+module.exports = function (name, callback) {\n+  var Set = getBuiltIn('Set');\n+  try {\n+    new Set()[name](createSetLike(0));\n+    try {\n+      \u002F\u002F late spec change, early WebKit ~ Safari 17 implementation does not pass it\n+      \u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\u002Fpull\u002F88\n+      \u002F\u002F also covered engines with\n+      \u002F\u002F https:\u002F\u002Fbugs.webkit.org\u002Fshow_bug.cgi?id=272679\n+      new Set()[name](createSetLike(-1));\n+      return false;\n+    } catch (error2) {\n+      if (!callback) return true;\n+      \u002F\u002F early V8 implementation bug\n+      \u002F\u002F https:\u002F\u002Fissues.chromium.org\u002Fissues\u002F351332634\n+      try {\n+        new Set()[name](createSetLikeWithInfinitySize(-Infinity));\n+        return false;\n+      } catch (error) {\n+        var set = new Set();\n+        set.add(1);\n+        set.add(2);\n+        return callback(set[name](createSetLikeWithInfinitySize(Infinity)));\n+      }\n+    }\n+  } catch (error) {\n+    return false;\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5024:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var symmetricDifference = __webpack_require__(3650);\n+var setMethodAcceptSetLike = __webpack_require__(4916);\n+\n+\u002F\u002F `Set.prototype.symmetricDifference` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.symmetricdifference\n+$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('symmetricDifference') }, {\n+  symmetricDifference: symmetricDifference\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5031:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var getBuiltIn = __webpack_require__(7751);\n+var uncurryThis = __webpack_require__(9504);\n+var getOwnPropertyNamesModule = __webpack_require__(8480);\n+var getOwnPropertySymbolsModule = __webpack_require__(3717);\n+var anObject = __webpack_require__(8551);\n+\n+var concat = uncurryThis([].concat);\n+\n+\u002F\u002F all object keys, includes non-enumerable and symbols\n+module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n+  var keys = getOwnPropertyNamesModule.f(anObject(it));\n+  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n+  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5169:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isDetached = __webpack_require__(3238);\n+\n+var $TypeError = TypeError;\n+\n+module.exports = function (it) {\n+  if (isDetached(it)) throw new $TypeError('ArrayBuffer is detached');\n+  return it;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5170:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThisAccessor = __webpack_require__(6706);\n+var SetHelpers = __webpack_require__(4402);\n+\n+module.exports = uncurryThisAccessor(SetHelpers.proto, 'size', 'get') || function (set) {\n+  return set.size;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5397:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+\u002F\u002F toObject with fallback for non-array-like ES3 strings\n+var IndexedObject = __webpack_require__(7055);\n+var requireObjectCoercible = __webpack_require__(7750);\n+\n+module.exports = function (it) {\n+  return IndexedObject(requireObjectCoercible(it));\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5610:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var toIntegerOrInfinity = __webpack_require__(1291);\n+\n+var max = Math.max;\n+var min = Math.min;\n+\n+\u002F\u002F Helper for a popular repeating case of the spec:\n+\u002F\u002F Let integer be ? ToInteger(index).\n+\u002F\u002F If integer \u003C 0, let result be max((length + integer), 0); else let result be min(integer, length).\n+module.exports = function (index, length) {\n+  var integer = toIntegerOrInfinity(index);\n+  return integer \u003C 0 ? max(integer + length, 0) : min(integer, length);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5636:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var uncurryThis = __webpack_require__(9504);\n+var uncurryThisAccessor = __webpack_require__(6706);\n+var toIndex = __webpack_require__(7696);\n+var notDetached = __webpack_require__(5169);\n+var arrayBufferByteLength = __webpack_require__(7394);\n+var detachTransferable = __webpack_require__(4483);\n+var PROPER_STRUCTURED_CLONE_TRANSFER = __webpack_require__(1548);\n+\n+var structuredClone = globalThis.structuredClone;\n+var ArrayBuffer = globalThis.ArrayBuffer;\n+var DataView = globalThis.DataView;\n+var min = Math.min;\n+var ArrayBufferPrototype = ArrayBuffer.prototype;\n+var DataViewPrototype = DataView.prototype;\n+var slice = uncurryThis(ArrayBufferPrototype.slice);\n+var isResizable = uncurryThisAccessor(ArrayBufferPrototype, 'resizable', 'get');\n+var maxByteLength = uncurryThisAccessor(ArrayBufferPrototype, 'maxByteLength', 'get');\n+var getInt8 = uncurryThis(DataViewPrototype.getInt8);\n+var setInt8 = uncurryThis(DataViewPrototype.setInt8);\n+\n+module.exports = (PROPER_STRUCTURED_CLONE_TRANSFER || detachTransferable) && function (arrayBuffer, newLength, preserveResizability) {\n+  var byteLength = arrayBufferByteLength(arrayBuffer);\n+  var newByteLength = newLength === undefined ? byteLength : toIndex(newLength);\n+  var fixedLength = !isResizable || !isResizable(arrayBuffer);\n+  var newBuffer;\n+  notDetached(arrayBuffer);\n+  if (PROPER_STRUCTURED_CLONE_TRANSFER) {\n+    arrayBuffer = structuredClone(arrayBuffer, { transfer: [arrayBuffer] });\n+    if (byteLength === newByteLength && (preserveResizability || fixedLength)) return arrayBuffer;\n+  }\n+  if (byteLength >= newByteLength && (!preserveResizability || fixedLength)) {\n+    newBuffer = slice(arrayBuffer, 0, newByteLength);\n+  } else {\n+    var options = preserveResizability && !fixedLength && maxByteLength ? { maxByteLength: maxByteLength(arrayBuffer) } : undefined;\n+    newBuffer = new ArrayBuffer(newByteLength, options);\n+    var a = new DataView(arrayBuffer);\n+    var b = new DataView(newBuffer);\n+    var copyLength = min(newByteLength, byteLength);\n+    for (var i = 0; i \u003C copyLength; i++) setInt8(b, i, getInt8(a, i));\n+  }\n+  if (!PROPER_STRUCTURED_CLONE_TRANSFER) detachTransferable(arrayBuffer);\n+  return newBuffer;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5745:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var store = __webpack_require__(7629);\n+\n+module.exports = function (key, value) {\n+  return store[key] || (store[key] = value || {});\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5781:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var getBuiltIn = __webpack_require__(7751);\n+var validateArgumentsLength = __webpack_require__(2812);\n+var toString = __webpack_require__(655);\n+var USE_NATIVE_URL = __webpack_require__(7416);\n+\n+var URL = getBuiltIn('URL');\n+\n+\u002F\u002F `URL.parse` method\n+\u002F\u002F https:\u002F\u002Furl.spec.whatwg.org\u002F#dom-url-canparse\n+$({ target: 'URL', stat: true, forced: !USE_NATIVE_URL }, {\n+  parse: function parse(url) {\n+    var length = validateArgumentsLength(arguments.length, 1);\n+    var urlString = toString(url);\n+    var base = length \u003C 2 || arguments[1] === undefined ? undefined : toString(arguments[1]);\n+    try {\n+      return new URL(urlString, base);\n+    } catch (error) {\n+      return null;\n+    }\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5876:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var isSubsetOf = __webpack_require__(3838);\n+var setMethodAcceptSetLike = __webpack_require__(4916);\n+\n+var INCORRECT = !setMethodAcceptSetLike('isSubsetOf', function (result) {\n+  return result;\n+});\n+\n+\u002F\u002F `Set.prototype.isSubsetOf` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.issubsetof\n+$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n+  isSubsetOf: isSubsetOf\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5917:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var fails = __webpack_require__(9039);\n+var createElement = __webpack_require__(4055);\n+\n+\u002F\u002F Thanks to IE8 for its funny defineProperty\n+module.exports = !DESCRIPTORS && !fails(function () {\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- required for testing\n+  return Object.defineProperty(createElement('div'), 'a', {\n+    get: function () { return 7; }\n+  }).a !== 7;\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 5966:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aCallable = __webpack_require__(9306);\n+var isNullOrUndefined = __webpack_require__(4117);\n+\n+\u002F\u002F `GetMethod` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-getmethod\n+module.exports = function (V, P) {\n+  var func = V[P];\n+  return isNullOrUndefined(func) ? undefined : aCallable(func);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6043:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aCallable = __webpack_require__(9306);\n+\n+var $TypeError = TypeError;\n+\n+var PromiseCapability = function (C) {\n+  var resolve, reject;\n+  this.promise = new C(function ($$resolve, $$reject) {\n+    if (resolve !== undefined || reject !== undefined) throw new $TypeError('Bad Promise constructor');\n+    resolve = $$resolve;\n+    reject = $$reject;\n+  });\n+  this.resolve = aCallable(resolve);\n+  this.reject = aCallable(reject);\n+};\n+\n+\u002F\u002F `NewPromiseCapability` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-newpromisecapability\n+module.exports.f = function (C) {\n+  return new PromiseCapability(C);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6080:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(7476);\n+var aCallable = __webpack_require__(9306);\n+var NATIVE_BIND = __webpack_require__(616);\n+\n+var bind = uncurryThis(uncurryThis.bind);\n+\n+\u002F\u002F optional \u002F simple context binding\n+module.exports = function (fn, that) {\n+  aCallable(fn);\n+  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (\u002F* ...args *\u002F) {\n+    return fn.apply(that, arguments);\n+  };\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6119:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var shared = __webpack_require__(5745);\n+var uid = __webpack_require__(3392);\n+\n+var keys = shared('keys');\n+\n+module.exports = function (key) {\n+  return keys[key] || (keys[key] = uid(key));\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6193:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var ENVIRONMENT = __webpack_require__(4215);\n+\n+module.exports = ENVIRONMENT === 'NODE';\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6198:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var toLength = __webpack_require__(8014);\n+\n+\u002F\u002F `LengthOfArrayLike` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-lengthofarraylike\n+module.exports = function (obj) {\n+  return toLength(obj.length);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6269:\n+\u002F***\u002F ((module) => {\n+\n+\n+module.exports = {};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6279:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var defineBuiltIn = __webpack_require__(6840);\n+\n+module.exports = function (target, src, options) {\n+  for (var key in src) defineBuiltIn(target, key, src[key], options);\n+  return target;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6319:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var anObject = __webpack_require__(8551);\n+var iteratorClose = __webpack_require__(9539);\n+\n+\u002F\u002F call something on iterator step with safe closing on error\n+module.exports = function (iterator, fn, value, ENTRIES) {\n+  try {\n+    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n+  } catch (error) {\n+    iteratorClose(iterator, 'throw', error);\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6395:\n+\u002F***\u002F ((module) => {\n+\n+\n+module.exports = false;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6518:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var getOwnPropertyDescriptor = (__webpack_require__(7347).f);\n+var createNonEnumerableProperty = __webpack_require__(6699);\n+var defineBuiltIn = __webpack_require__(6840);\n+var defineGlobalProperty = __webpack_require__(9433);\n+var copyConstructorProperties = __webpack_require__(7740);\n+var isForced = __webpack_require__(2796);\n+\n+\u002F*\n+  options.target         - name of the target object\n+  options.global         - target is the global object\n+  options.stat           - export as static methods of target\n+  options.proto          - export as prototype methods of target\n+  options.real           - real prototype method for the `pure` version\n+  options.forced         - export even if the native feature is available\n+  options.bind           - bind methods to the target, required for the `pure` version\n+  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version\n+  options.unsafe         - use the simple assignment of property instead of delete + defineProperty\n+  options.sham           - add a flag to not completely full polyfills\n+  options.enumerable     - export as enumerable property\n+  options.dontCallGetSet - prevent calling a getter on target\n+  options.name           - the .name of the function if it does not match the key\n+*\u002F\n+module.exports = function (options, source) {\n+  var TARGET = options.target;\n+  var GLOBAL = options.global;\n+  var STATIC = options.stat;\n+  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n+  if (GLOBAL) {\n+    target = globalThis;\n+  } else if (STATIC) {\n+    target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\n+  } else {\n+    target = globalThis[TARGET] && globalThis[TARGET].prototype;\n+  }\n+  if (target) for (key in source) {\n+    sourceProperty = source[key];\n+    if (options.dontCallGetSet) {\n+      descriptor = getOwnPropertyDescriptor(target, key);\n+      targetProperty = descriptor && descriptor.value;\n+    } else targetProperty = target[key];\n+    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n+    \u002F\u002F contained in target\n+    if (!FORCED && targetProperty !== undefined) {\n+      if (typeof sourceProperty == typeof targetProperty) continue;\n+      copyConstructorProperties(sourceProperty, targetProperty);\n+    }\n+    \u002F\u002F add a flag to not completely full polyfills\n+    if (options.sham || (targetProperty && targetProperty.sham)) {\n+      createNonEnumerableProperty(sourceProperty, 'sham', true);\n+    }\n+    defineBuiltIn(target, key, sourceProperty, options);\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6573:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var defineBuiltInAccessor = __webpack_require__(2106);\n+var isDetached = __webpack_require__(3238);\n+\n+var ArrayBufferPrototype = ArrayBuffer.prototype;\n+\n+\u002F\u002F `ArrayBuffer.prototype.detached` getter\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-get-arraybuffer.prototype.detached\n+if (DESCRIPTORS && !('detached' in ArrayBufferPrototype)) {\n+  defineBuiltInAccessor(ArrayBufferPrototype, 'detached', {\n+    configurable: true,\n+    get: function detached() {\n+      return isDetached(this);\n+    }\n+  });\n+}\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6699:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var definePropertyModule = __webpack_require__(4913);\n+var createPropertyDescriptor = __webpack_require__(6980);\n+\n+module.exports = DESCRIPTORS ? function (object, key, value) {\n+  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n+} : function (object, key, value) {\n+  object[key] = value;\n+  return object;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6706:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+var aCallable = __webpack_require__(9306);\n+\n+module.exports = function (object, key, method) {\n+  try {\n+    \u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+    return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n+  } catch (error) { \u002F* empty *\u002F }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6801:\n+\u002F***\u002F ((__unused_webpack_module, exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(8686);\n+var definePropertyModule = __webpack_require__(4913);\n+var anObject = __webpack_require__(8551);\n+var toIndexedObject = __webpack_require__(5397);\n+var objectKeys = __webpack_require__(1072);\n+\n+\u002F\u002F `Object.defineProperties` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.defineproperties\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperties -- safe\n+exports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n+  anObject(O);\n+  var props = toIndexedObject(Properties);\n+  var keys = objectKeys(Properties);\n+  var length = keys.length;\n+  var index = 0;\n+  var key;\n+  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n+  return O;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6823:\n+\u002F***\u002F ((module) => {\n+\n+\n+var $String = String;\n+\n+module.exports = function (argument) {\n+  try {\n+    return $String(argument);\n+  } catch (error) {\n+    return 'Object';\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6837:\n+\u002F***\u002F ((module) => {\n+\n+\n+var $TypeError = TypeError;\n+var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; \u002F\u002F 2 ** 53 - 1 == 9007199254740991\n+\n+module.exports = function (it) {\n+  if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n+  return it;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6840:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isCallable = __webpack_require__(4901);\n+var definePropertyModule = __webpack_require__(4913);\n+var makeBuiltIn = __webpack_require__(283);\n+var defineGlobalProperty = __webpack_require__(9433);\n+\n+module.exports = function (O, key, value, options) {\n+  if (!options) options = {};\n+  var simple = options.enumerable;\n+  var name = options.name !== undefined ? options.name : key;\n+  if (isCallable(value)) makeBuiltIn(value, name, options);\n+  if (options.global) {\n+    if (simple) O[key] = value;\n+    else defineGlobalProperty(key, value);\n+  } else {\n+    try {\n+      if (!options.unsafe) delete O[key];\n+      else if (O[key]) simple = true;\n+    } catch (error) { \u002F* empty *\u002F }\n+    if (simple) O[key] = value;\n+    else definePropertyModule.f(O, key, {\n+      value: value,\n+      enumerable: false,\n+      configurable: !options.nonConfigurable,\n+      writable: !options.nonWritable\n+    });\n+  } return O;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6955:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var TO_STRING_TAG_SUPPORT = __webpack_require__(2140);\n+var isCallable = __webpack_require__(4901);\n+var classofRaw = __webpack_require__(2195);\n+var wellKnownSymbol = __webpack_require__(8227);\n+\n+var TO_STRING_TAG = wellKnownSymbol('toStringTag');\n+var $Object = Object;\n+\n+\u002F\u002F ES3 wrong here\n+var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n+\n+\u002F\u002F fallback for IE11 Script Access Denied error\n+var tryGet = function (it, key) {\n+  try {\n+    return it[key];\n+  } catch (error) { \u002F* empty *\u002F }\n+};\n+\n+\u002F\u002F getting tag from ES6+ `Object.prototype.toString`\n+module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n+  var O, tag, result;\n+  return it === undefined ? 'Undefined' : it === null ? 'Null'\n+    \u002F\u002F @@toStringTag case\n+    : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n+    \u002F\u002F builtinTag case\n+    : CORRECT_ARGUMENTS ? classofRaw(O)\n+    \u002F\u002F ES3 arguments fallback\n+    : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6969:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var toPrimitive = __webpack_require__(2777);\n+var isSymbol = __webpack_require__(757);\n+\n+\u002F\u002F `ToPropertyKey` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-topropertykey\n+module.exports = function (argument) {\n+  var key = toPrimitive(argument, 'string');\n+  return isSymbol(key) ? key : key + '';\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 6980:\n+\u002F***\u002F ((module) => {\n+\n+\n+module.exports = function (bitmap, value) {\n+  return {\n+    enumerable: !(bitmap & 1),\n+    configurable: !(bitmap & 2),\n+    writable: !(bitmap & 4),\n+    value: value\n+  };\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7040:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+\u002F* eslint-disable es\u002Fno-symbol -- required for testing *\u002F\n+var NATIVE_SYMBOL = __webpack_require__(4495);\n+\n+module.exports = NATIVE_SYMBOL &&\n+  !Symbol.sham &&\n+  typeof Symbol.iterator == 'symbol';\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7055:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+var fails = __webpack_require__(9039);\n+var classof = __webpack_require__(2195);\n+\n+var $Object = Object;\n+var split = uncurryThis(''.split);\n+\n+\u002F\u002F fallback for non-array-like ES3 and non-enumerable old V8 strings\n+module.exports = fails(function () {\n+  \u002F\u002F throws an error in rhino, see https:\u002F\u002Fgithub.com\u002Fmozilla\u002Frhino\u002Fissues\u002F346\n+  \u002F\u002F eslint-disable-next-line no-prototype-builtins -- safe\n+  return !$Object('z').propertyIsEnumerable(0);\n+}) ? function (it) {\n+  return classof(it) === 'String' ? split(it, '') : $Object(it);\n+} : $Object;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7080:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var has = (__webpack_require__(4402).has);\n+\n+\u002F\u002F Perform ? RequireInternalSlot(M, [[SetData]])\n+module.exports = function (it) {\n+  has(it);\n+  return it;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7347:\n+\u002F***\u002F ((__unused_webpack_module, exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var call = __webpack_require__(9565);\n+var propertyIsEnumerableModule = __webpack_require__(8773);\n+var createPropertyDescriptor = __webpack_require__(6980);\n+var toIndexedObject = __webpack_require__(5397);\n+var toPropertyKey = __webpack_require__(6969);\n+var hasOwn = __webpack_require__(9297);\n+var IE8_DOM_DEFINE = __webpack_require__(5917);\n+\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n+\n+\u002F\u002F `Object.getOwnPropertyDescriptor` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.getownpropertydescriptor\n+exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n+  O = toIndexedObject(O);\n+  P = toPropertyKey(P);\n+  if (IE8_DOM_DEFINE) try {\n+    return $getOwnPropertyDescriptor(O, P);\n+  } catch (error) { \u002F* empty *\u002F }\n+  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7394:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var uncurryThisAccessor = __webpack_require__(6706);\n+var classof = __webpack_require__(2195);\n+\n+var ArrayBuffer = globalThis.ArrayBuffer;\n+var TypeError = globalThis.TypeError;\n+\n+\u002F\u002F Includes\n+\u002F\u002F - Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).\n+\u002F\u002F - If IsSharedArrayBuffer(O) is true, throw a TypeError exception.\n+module.exports = ArrayBuffer && uncurryThisAccessor(ArrayBuffer.prototype, 'byteLength', 'get') || function (O) {\n+  if (classof(O) !== 'ArrayBuffer') throw new TypeError('ArrayBuffer expected');\n+  return O.byteLength;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7416:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var fails = __webpack_require__(9039);\n+var wellKnownSymbol = __webpack_require__(8227);\n+var DESCRIPTORS = __webpack_require__(3724);\n+var IS_PURE = __webpack_require__(6395);\n+\n+var ITERATOR = wellKnownSymbol('iterator');\n+\n+module.exports = !fails(function () {\n+  \u002F\u002F eslint-disable-next-line unicorn\u002Frelative-url-style -- required for testing\n+  var url = new URL('b?a=1&b=2&c=3', 'https:\u002F\u002Fa');\n+  var params = url.searchParams;\n+  var params2 = new URLSearchParams('a=1&a=2&b=3');\n+  var result = '';\n+  url.pathname = 'c%20d';\n+  params.forEach(function (value, key) {\n+    params['delete']('b');\n+    result += key + value;\n+  });\n+  params2['delete']('a', 2);\n+  \u002F\u002F `undefined` case is a Chromium 117 bug\n+  \u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=14222\n+  params2['delete']('b', undefined);\n+  return (IS_PURE && (!url.toJSON || !params2.has('a', 1) || params2.has('a', 2) || !params2.has('a', undefined) || params2.has('b')))\n+    || (!params.size && (IS_PURE || !DESCRIPTORS))\n+    || !params.sort\n+    || url.href !== 'https:\u002F\u002Fa\u002Fc%20d?a=1&c=3'\n+    || params.get('c') !== '3'\n+    || String(new URLSearchParams('?a=1')) !== 'a=1'\n+    || !params[ITERATOR]\n+    \u002F\u002F throws in Edge\n+    || new URL('https:\u002F\u002Fa@b').username !== 'a'\n+    || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\n+    \u002F\u002F not punycoded in Edge\n+    || new URL('https:\u002F\u002Fтест').host !== 'xn--e1aybc'\n+    \u002F\u002F not escaped in Chrome 62-\n+    || new URL('https:\u002F\u002Fa#б').hash !== '#%D0%B1'\n+    \u002F\u002F fails in Chrome 66-\n+    || result !== 'a1c3'\n+    \u002F\u002F throws in Safari\n+    || new URL('https:\u002F\u002Fx', undefined).host !== 'x';\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7476:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var classofRaw = __webpack_require__(2195);\n+var uncurryThis = __webpack_require__(9504);\n+\n+module.exports = function (fn) {\n+  \u002F\u002F Nashorn bug:\n+  \u002F\u002F   https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F1128\n+  \u002F\u002F   https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F1130\n+  if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7566:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var defineBuiltIn = __webpack_require__(6840);\n+var uncurryThis = __webpack_require__(9504);\n+var toString = __webpack_require__(655);\n+var validateArgumentsLength = __webpack_require__(2812);\n+\n+var $URLSearchParams = URLSearchParams;\n+var URLSearchParamsPrototype = $URLSearchParams.prototype;\n+var getAll = uncurryThis(URLSearchParamsPrototype.getAll);\n+var $has = uncurryThis(URLSearchParamsPrototype.has);\n+var params = new $URLSearchParams('a=1');\n+\n+\u002F\u002F `undefined` case is a Chromium 117 bug\n+\u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=14222\n+if (params.has('a', 2) || !params.has('a', undefined)) {\n+  defineBuiltIn(URLSearchParamsPrototype, 'has', function has(name \u002F* , value *\u002F) {\n+    var length = arguments.length;\n+    var $value = length \u003C 2 ? undefined : arguments[1];\n+    if (length && $value === undefined) return $has(this, name);\n+    var values = getAll(this, name); \u002F\u002F also validates `this`\n+    validateArgumentsLength(length, 1);\n+    var value = toString($value);\n+    var index = 0;\n+    while (index \u003C values.length) {\n+      if (values[index++] === value) return true;\n+    } return false;\n+  }, { enumerable: true, unsafe: true });\n+}\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7588:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var call = __webpack_require__(9565);\n+var iterate = __webpack_require__(2652);\n+var aCallable = __webpack_require__(9306);\n+var anObject = __webpack_require__(8551);\n+var getIteratorDirect = __webpack_require__(1767);\n+var iteratorClose = __webpack_require__(9539);\n+var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);\n+\n+var forEachWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('forEach', TypeError);\n+\n+\u002F\u002F `Iterator.prototype.forEach` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.foreach\n+$({ target: 'Iterator', proto: true, real: true, forced: forEachWithoutClosingOnEarlyError }, {\n+  forEach: function forEach(fn) {\n+    anObject(this);\n+    try {\n+      aCallable(fn);\n+    } catch (error) {\n+      iteratorClose(this, 'throw', error);\n+    }\n+\n+    if (forEachWithoutClosingOnEarlyError) return call(forEachWithoutClosingOnEarlyError, this, fn);\n+\n+    var record = getIteratorDirect(this);\n+    var counter = 0;\n+    iterate(record, function (value) {\n+      fn(value, counter++);\n+    }, { IS_RECORD: true });\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7629:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var IS_PURE = __webpack_require__(6395);\n+var globalThis = __webpack_require__(4576);\n+var defineGlobalProperty = __webpack_require__(9433);\n+\n+var SHARED = '__core-js_shared__';\n+var store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n+\n+(store.versions || (store.versions = [])).push({\n+  version: '3.42.0',\n+  mode: IS_PURE ? 'pure' : 'global',\n+  copyright: '© 2014-2025 Denis Pushkarev (zloirock.ru)',\n+  license: 'https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fv3.42.0\u002FLICENSE',\n+  source: 'https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js'\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7642:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var difference = __webpack_require__(3440);\n+var setMethodAcceptSetLike = __webpack_require__(4916);\n+\n+var INCORRECT = !setMethodAcceptSetLike('difference', function (result) {\n+  return result.size === 0;\n+});\n+\n+\u002F\u002F `Set.prototype.difference` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.difference\n+$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n+  difference: difference\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7657:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var fails = __webpack_require__(9039);\n+var isCallable = __webpack_require__(4901);\n+var isObject = __webpack_require__(34);\n+var create = __webpack_require__(2360);\n+var getPrototypeOf = __webpack_require__(2787);\n+var defineBuiltIn = __webpack_require__(6840);\n+var wellKnownSymbol = __webpack_require__(8227);\n+var IS_PURE = __webpack_require__(6395);\n+\n+var ITERATOR = wellKnownSymbol('iterator');\n+var BUGGY_SAFARI_ITERATORS = false;\n+\n+\u002F\u002F `%IteratorPrototype%` object\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-%iteratorprototype%-object\n+var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n+\n+\u002F* eslint-disable es\u002Fno-array-prototype-keys -- safe *\u002F\n+if ([].keys) {\n+  arrayIterator = [].keys();\n+  \u002F\u002F Safari 8 has buggy iterators w\u002Fo `next`\n+  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n+  else {\n+    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n+    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n+  }\n+}\n+\n+var NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n+  var test = {};\n+  \u002F\u002F FF44- legacy iterators case\n+  return IteratorPrototype[ITERATOR].call(test) !== test;\n+});\n+\n+if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\n+else if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n+\n+\u002F\u002F `%IteratorPrototype%[@@iterator]()` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-%iteratorprototype%-@@iterator\n+if (!isCallable(IteratorPrototype[ITERATOR])) {\n+  defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n+    return this;\n+  });\n+}\n+\n+module.exports = {\n+  IteratorPrototype: IteratorPrototype,\n+  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7696:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var toIntegerOrInfinity = __webpack_require__(1291);\n+var toLength = __webpack_require__(8014);\n+\n+var $RangeError = RangeError;\n+\n+\u002F\u002F `ToIndex` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-toindex\n+module.exports = function (it) {\n+  if (it === undefined) return 0;\n+  var number = toIntegerOrInfinity(it);\n+  var length = toLength(number);\n+  if (number !== length) throw new $RangeError('Wrong length or index');\n+  return length;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7740:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var hasOwn = __webpack_require__(9297);\n+var ownKeys = __webpack_require__(5031);\n+var getOwnPropertyDescriptorModule = __webpack_require__(7347);\n+var definePropertyModule = __webpack_require__(4913);\n+\n+module.exports = function (target, source, exceptions) {\n+  var keys = ownKeys(source);\n+  var defineProperty = definePropertyModule.f;\n+  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n+  for (var i = 0; i \u003C keys.length; i++) {\n+    var key = keys[i];\n+    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n+      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n+    }\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7750:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isNullOrUndefined = __webpack_require__(4117);\n+\n+var $TypeError = TypeError;\n+\n+\u002F\u002F `RequireObjectCoercible` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-requireobjectcoercible\n+module.exports = function (it) {\n+  if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n+  return it;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7751:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var isCallable = __webpack_require__(4901);\n+\n+var aFunction = function (argument) {\n+  return isCallable(argument) ? argument : undefined;\n+};\n+\n+module.exports = function (namespace, method) {\n+  return arguments.length \u003C 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7811:\n+\u002F***\u002F ((module) => {\n+\n+\n+\u002F\u002F eslint-disable-next-line es\u002Fno-typed-arrays -- safe\n+module.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 7936:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var $transfer = __webpack_require__(5636);\n+\n+\u002F\u002F `ArrayBuffer.prototype.transferToFixedLength` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-arraybuffer-transfer\u002F#sec-arraybuffer.prototype.transfertofixedlength\n+if ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n+  transferToFixedLength: function transferToFixedLength() {\n+    return $transfer(this, arguments.length ? arguments[0] : undefined, false);\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8004:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var fails = __webpack_require__(9039);\n+var intersection = __webpack_require__(8750);\n+var setMethodAcceptSetLike = __webpack_require__(4916);\n+\n+var INCORRECT = !setMethodAcceptSetLike('intersection', function (result) {\n+  return result.size === 2 && result.has(1) && result.has(2);\n+}) || fails(function () {\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-array-from, es\u002Fno-set, es\u002Fno-set-prototype-intersection -- testing\n+  return String(Array.from(new Set([1, 2, 3]).intersection(new Set([3, 2])))) !== '3,2';\n+});\n+\n+\u002F\u002F `Set.prototype.intersection` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.intersection\n+$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\n+  intersection: intersection\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8014:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var toIntegerOrInfinity = __webpack_require__(1291);\n+\n+var min = Math.min;\n+\n+\u002F\u002F `ToLength` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-tolength\n+module.exports = function (argument) {\n+  var len = toIntegerOrInfinity(argument);\n+  return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; \u002F\u002F 2 ** 53 - 1 == 9007199254740991\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8100:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var $transfer = __webpack_require__(5636);\n+\n+\u002F\u002F `ArrayBuffer.prototype.transfer` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-arraybuffer-transfer\u002F#sec-arraybuffer.prototype.transfer\n+if ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\n+  transfer: function transfer() {\n+    return $transfer(this, arguments.length ? arguments[0] : undefined, true);\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8111:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var globalThis = __webpack_require__(4576);\n+var anInstance = __webpack_require__(679);\n+var anObject = __webpack_require__(8551);\n+var isCallable = __webpack_require__(4901);\n+var getPrototypeOf = __webpack_require__(2787);\n+var defineBuiltInAccessor = __webpack_require__(2106);\n+var createProperty = __webpack_require__(4659);\n+var fails = __webpack_require__(9039);\n+var hasOwn = __webpack_require__(9297);\n+var wellKnownSymbol = __webpack_require__(8227);\n+var IteratorPrototype = (__webpack_require__(7657).IteratorPrototype);\n+var DESCRIPTORS = __webpack_require__(3724);\n+var IS_PURE = __webpack_require__(6395);\n+\n+var CONSTRUCTOR = 'constructor';\n+var ITERATOR = 'Iterator';\n+var TO_STRING_TAG = wellKnownSymbol('toStringTag');\n+\n+var $TypeError = TypeError;\n+var NativeIterator = globalThis[ITERATOR];\n+\n+\u002F\u002F FF56- have non-standard global helper `Iterator`\n+var FORCED = IS_PURE\n+  || !isCallable(NativeIterator)\n+  || NativeIterator.prototype !== IteratorPrototype\n+  \u002F\u002F FF44- non-standard `Iterator` passes previous tests\n+  || !fails(function () { NativeIterator({}); });\n+\n+var IteratorConstructor = function Iterator() {\n+  anInstance(this, IteratorPrototype);\n+  if (getPrototypeOf(this) === IteratorPrototype) throw new $TypeError('Abstract class Iterator not directly constructable');\n+};\n+\n+var defineIteratorPrototypeAccessor = function (key, value) {\n+  if (DESCRIPTORS) {\n+    defineBuiltInAccessor(IteratorPrototype, key, {\n+      configurable: true,\n+      get: function () {\n+        return value;\n+      },\n+      set: function (replacement) {\n+        anObject(this);\n+        if (this === IteratorPrototype) throw new $TypeError(\"You can't redefine this property\");\n+        if (hasOwn(this, key)) this[key] = replacement;\n+        else createProperty(this, key, replacement);\n+      }\n+    });\n+  } else IteratorPrototype[key] = value;\n+};\n+\n+if (!hasOwn(IteratorPrototype, TO_STRING_TAG)) defineIteratorPrototypeAccessor(TO_STRING_TAG, ITERATOR);\n+\n+if (FORCED || !hasOwn(IteratorPrototype, CONSTRUCTOR) || IteratorPrototype[CONSTRUCTOR] === Object) {\n+  defineIteratorPrototypeAccessor(CONSTRUCTOR, IteratorConstructor);\n+}\n+\n+IteratorConstructor.prototype = IteratorPrototype;\n+\n+\u002F\u002F `Iterator` constructor\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator\n+$({ global: true, constructor: true, forced: FORCED }, {\n+  Iterator: IteratorConstructor\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8227:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var shared = __webpack_require__(5745);\n+var hasOwn = __webpack_require__(9297);\n+var uid = __webpack_require__(3392);\n+var NATIVE_SYMBOL = __webpack_require__(4495);\n+var USE_SYMBOL_AS_UID = __webpack_require__(7040);\n+\n+var Symbol = globalThis.Symbol;\n+var WellKnownSymbolsStore = shared('wks');\n+var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n+\n+module.exports = function (name) {\n+  if (!hasOwn(WellKnownSymbolsStore, name)) {\n+    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n+      ? Symbol[name]\n+      : createWellKnownSymbol('Symbol.' + name);\n+  } return WellKnownSymbolsStore[name];\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8235:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+var hasOwn = __webpack_require__(9297);\n+\n+var $SyntaxError = SyntaxError;\n+var $parseInt = parseInt;\n+var fromCharCode = String.fromCharCode;\n+var at = uncurryThis(''.charAt);\n+var slice = uncurryThis(''.slice);\n+var exec = uncurryThis(\u002F.\u002F.exec);\n+\n+var codePoints = {\n+  '\\\\\"': '\"',\n+  '\\\\\\\\': '\\\\',\n+  '\\\\\u002F': '\u002F',\n+  '\\\\b': '\\b',\n+  '\\\\f': '\\f',\n+  '\\\\n': '\\n',\n+  '\\\\r': '\\r',\n+  '\\\\t': '\\t'\n+};\n+\n+var IS_4_HEX_DIGITS = \u002F^[\\da-f]{4}$\u002Fi;\n+\u002F\u002F eslint-disable-next-line regexp\u002Fno-control-character -- safe\n+var IS_C0_CONTROL_CODE = \u002F^[\\u0000-\\u001F]$\u002F;\n+\n+module.exports = function (source, i) {\n+  var unterminated = true;\n+  var value = '';\n+  while (i \u003C source.length) {\n+    var chr = at(source, i);\n+    if (chr === '\\\\') {\n+      var twoChars = slice(source, i, i + 2);\n+      if (hasOwn(codePoints, twoChars)) {\n+        value += codePoints[twoChars];\n+        i += 2;\n+      } else if (twoChars === '\\\\u') {\n+        i += 2;\n+        var fourHexDigits = slice(source, i, i + 4);\n+        if (!exec(IS_4_HEX_DIGITS, fourHexDigits)) throw new $SyntaxError('Bad Unicode escape at: ' + i);\n+        value += fromCharCode($parseInt(fourHexDigits, 16));\n+        i += 4;\n+      } else throw new $SyntaxError('Unknown escape sequence: \"' + twoChars + '\"');\n+    } else if (chr === '\"') {\n+      unterminated = false;\n+      i++;\n+      break;\n+    } else {\n+      if (exec(IS_C0_CONTROL_CODE, chr)) throw new $SyntaxError('Bad control character in string literal at: ' + i);\n+      value += chr;\n+      i++;\n+    }\n+  }\n+  if (unterminated) throw new $SyntaxError('Unterminated string at: ' + i);\n+  return { value: value, end: i };\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8335:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var $ = __webpack_require__(6518);\n+var DESCRIPTORS = __webpack_require__(3724);\n+var globalThis = __webpack_require__(4576);\n+var getBuiltIn = __webpack_require__(7751);\n+var uncurryThis = __webpack_require__(9504);\n+var call = __webpack_require__(9565);\n+var isCallable = __webpack_require__(4901);\n+var isObject = __webpack_require__(34);\n+var isArray = __webpack_require__(4376);\n+var hasOwn = __webpack_require__(9297);\n+var toString = __webpack_require__(655);\n+var lengthOfArrayLike = __webpack_require__(6198);\n+var createProperty = __webpack_require__(4659);\n+var fails = __webpack_require__(9039);\n+var parseJSONString = __webpack_require__(8235);\n+var NATIVE_SYMBOL = __webpack_require__(4495);\n+\n+var JSON = globalThis.JSON;\n+var Number = globalThis.Number;\n+var SyntaxError = globalThis.SyntaxError;\n+var nativeParse = JSON && JSON.parse;\n+var enumerableOwnProperties = getBuiltIn('Object', 'keys');\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n+var at = uncurryThis(''.charAt);\n+var slice = uncurryThis(''.slice);\n+var exec = uncurryThis(\u002F.\u002F.exec);\n+var push = uncurryThis([].push);\n+\n+var IS_DIGIT = \u002F^\\d$\u002F;\n+var IS_NON_ZERO_DIGIT = \u002F^[1-9]$\u002F;\n+var IS_NUMBER_START = \u002F^[\\d-]$\u002F;\n+var IS_WHITESPACE = \u002F^[\\t\\n\\r ]$\u002F;\n+\n+var PRIMITIVE = 0;\n+var OBJECT = 1;\n+\n+var $parse = function (source, reviver) {\n+  source = toString(source);\n+  var context = new Context(source, 0, '');\n+  var root = context.parse();\n+  var value = root.value;\n+  var endIndex = context.skip(IS_WHITESPACE, root.end);\n+  if (endIndex \u003C source.length) {\n+    throw new SyntaxError('Unexpected extra character: \"' + at(source, endIndex) + '\" after the parsed data at: ' + endIndex);\n+  }\n+  return isCallable(reviver) ? internalize({ '': value }, '', reviver, root) : value;\n+};\n+\n+var internalize = function (holder, name, reviver, node) {\n+  var val = holder[name];\n+  var unmodified = node && val === node.value;\n+  var context = unmodified && typeof node.source == 'string' ? { source: node.source } : {};\n+  var elementRecordsLen, keys, len, i, P;\n+  if (isObject(val)) {\n+    var nodeIsArray = isArray(val);\n+    var nodes = unmodified ? node.nodes : nodeIsArray ? [] : {};\n+    if (nodeIsArray) {\n+      elementRecordsLen = nodes.length;\n+      len = lengthOfArrayLike(val);\n+      for (i = 0; i \u003C len; i++) {\n+        internalizeProperty(val, i, internalize(val, '' + i, reviver, i \u003C elementRecordsLen ? nodes[i] : undefined));\n+      }\n+    } else {\n+      keys = enumerableOwnProperties(val);\n+      len = lengthOfArrayLike(keys);\n+      for (i = 0; i \u003C len; i++) {\n+        P = keys[i];\n+        internalizeProperty(val, P, internalize(val, P, reviver, hasOwn(nodes, P) ? nodes[P] : undefined));\n+      }\n+    }\n+  }\n+  return call(reviver, holder, name, val, context);\n+};\n+\n+var internalizeProperty = function (object, key, value) {\n+  if (DESCRIPTORS) {\n+    var descriptor = getOwnPropertyDescriptor(object, key);\n+    if (descriptor && !descriptor.configurable) return;\n+  }\n+  if (value === undefined) delete object[key];\n+  else createProperty(object, key, value);\n+};\n+\n+var Node = function (value, end, source, nodes) {\n+  this.value = value;\n+  this.end = end;\n+  this.source = source;\n+  this.nodes = nodes;\n+};\n+\n+var Context = function (source, index) {\n+  this.source = source;\n+  this.index = index;\n+};\n+\n+\u002F\u002F https:\u002F\u002Fwww.json.org\u002Fjson-en.html\n+Context.prototype = {\n+  fork: function (nextIndex) {\n+    return new Context(this.source, nextIndex);\n+  },\n+  parse: function () {\n+    var source = this.source;\n+    var i = this.skip(IS_WHITESPACE, this.index);\n+    var fork = this.fork(i);\n+    var chr = at(source, i);\n+    if (exec(IS_NUMBER_START, chr)) return fork.number();\n+    switch (chr) {\n+      case '{':\n+        return fork.object();\n+      case '[':\n+        return fork.array();\n+      case '\"':\n+        return fork.string();\n+      case 't':\n+        return fork.keyword(true);\n+      case 'f':\n+        return fork.keyword(false);\n+      case 'n':\n+        return fork.keyword(null);\n+    } throw new SyntaxError('Unexpected character: \"' + chr + '\" at: ' + i);\n+  },\n+  node: function (type, value, start, end, nodes) {\n+    return new Node(value, end, type ? null : slice(this.source, start, end), nodes);\n+  },\n+  object: function () {\n+    var source = this.source;\n+    var i = this.index + 1;\n+    var expectKeypair = false;\n+    var object = {};\n+    var nodes = {};\n+    while (i \u003C source.length) {\n+      i = this.until(['\"', '}'], i);\n+      if (at(source, i) === '}' && !expectKeypair) {\n+        i++;\n+        break;\n+      }\n+      \u002F\u002F Parsing the key\n+      var result = this.fork(i).string();\n+      var key = result.value;\n+      i = result.end;\n+      i = this.until([':'], i) + 1;\n+      \u002F\u002F Parsing value\n+      i = this.skip(IS_WHITESPACE, i);\n+      result = this.fork(i).parse();\n+      createProperty(nodes, key, result);\n+      createProperty(object, key, result.value);\n+      i = this.until([',', '}'], result.end);\n+      var chr = at(source, i);\n+      if (chr === ',') {\n+        expectKeypair = true;\n+        i++;\n+      } else if (chr === '}') {\n+        i++;\n+        break;\n+      }\n+    }\n+    return this.node(OBJECT, object, this.index, i, nodes);\n+  },\n+  array: function () {\n+    var source = this.source;\n+    var i = this.index + 1;\n+    var expectElement = false;\n+    var array = [];\n+    var nodes = [];\n+    while (i \u003C source.length) {\n+      i = this.skip(IS_WHITESPACE, i);\n+      if (at(source, i) === ']' && !expectElement) {\n+        i++;\n+        break;\n+      }\n+      var result = this.fork(i).parse();\n+      push(nodes, result);\n+      push(array, result.value);\n+      i = this.until([',', ']'], result.end);\n+      if (at(source, i) === ',') {\n+        expectElement = true;\n+        i++;\n+      } else if (at(source, i) === ']') {\n+        i++;\n+        break;\n+      }\n+    }\n+    return this.node(OBJECT, array, this.index, i, nodes);\n+  },\n+  string: function () {\n+    var index = this.index;\n+    var parsed = parseJSONString(this.source, this.index + 1);\n+    return this.node(PRIMITIVE, parsed.value, index, parsed.end);\n+  },\n+  number: function () {\n+    var source = this.source;\n+    var startIndex = this.index;\n+    var i = startIndex;\n+    if (at(source, i) === '-') i++;\n+    if (at(source, i) === '0') i++;\n+    else if (exec(IS_NON_ZERO_DIGIT, at(source, i))) i = this.skip(IS_DIGIT, i + 1);\n+    else throw new SyntaxError('Failed to parse number at: ' + i);\n+    if (at(source, i) === '.') i = this.skip(IS_DIGIT, i + 1);\n+    if (at(source, i) === 'e' || at(source, i) === 'E') {\n+      i++;\n+      if (at(source, i) === '+' || at(source, i) === '-') i++;\n+      var exponentStartIndex = i;\n+      i = this.skip(IS_DIGIT, i);\n+      if (exponentStartIndex === i) throw new SyntaxError(\"Failed to parse number's exponent value at: \" + i);\n+    }\n+    return this.node(PRIMITIVE, Number(slice(source, startIndex, i)), startIndex, i);\n+  },\n+  keyword: function (value) {\n+    var keyword = '' + value;\n+    var index = this.index;\n+    var endIndex = index + keyword.length;\n+    if (slice(this.source, index, endIndex) !== keyword) throw new SyntaxError('Failed to parse value at: ' + index);\n+    return this.node(PRIMITIVE, value, index, endIndex);\n+  },\n+  skip: function (regex, i) {\n+    var source = this.source;\n+    for (; i \u003C source.length; i++) if (!exec(regex, at(source, i))) break;\n+    return i;\n+  },\n+  until: function (array, i) {\n+    i = this.skip(IS_WHITESPACE, i);\n+    var chr = at(this.source, i);\n+    for (var j = 0; j \u003C array.length; j++) if (array[j] === chr) return i;\n+    throw new SyntaxError('Unexpected character: \"' + chr + '\" at: ' + i);\n+  }\n+};\n+\n+var NO_SOURCE_SUPPORT = fails(function () {\n+  var unsafeInt = '9007199254740993';\n+  var source;\n+  nativeParse(unsafeInt, function (key, value, context) {\n+    source = context.source;\n+  });\n+  return source !== unsafeInt;\n+});\n+\n+var PROPER_BASE_PARSE = NATIVE_SYMBOL && !fails(function () {\n+  \u002F\u002F Safari 9 bug\n+  return 1 \u002F nativeParse('-0 \\t') !== -Infinity;\n+});\n+\n+\u002F\u002F `JSON.parse` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-json.parse\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-json-parse-with-source\n+$({ target: 'JSON', stat: true, forced: NO_SOURCE_SUPPORT }, {\n+  parse: function parse(text, reviver) {\n+    return PROPER_BASE_PARSE && !isCallable(reviver) ? nativeParse(text) : $parse(text, reviver);\n+  }\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8469:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+var iterateSimple = __webpack_require__(507);\n+var SetHelpers = __webpack_require__(4402);\n+\n+var Set = SetHelpers.Set;\n+var SetPrototype = SetHelpers.proto;\n+var forEach = uncurryThis(SetPrototype.forEach);\n+var keys = uncurryThis(SetPrototype.keys);\n+var next = keys(new Set()).next;\n+\n+module.exports = function (set, fn, interruptible) {\n+  return interruptible ? iterateSimple({ iterator: keys(set), next: next }, fn) : forEach(set, fn);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8480:\n+\u002F***\u002F ((__unused_webpack_module, exports, __webpack_require__) => {\n+\n+\n+var internalObjectKeys = __webpack_require__(1828);\n+var enumBugKeys = __webpack_require__(8727);\n+\n+var hiddenKeys = enumBugKeys.concat('length', 'prototype');\n+\n+\u002F\u002F `Object.getOwnPropertyNames` method\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.getownpropertynames\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertynames -- safe\n+exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n+  return internalObjectKeys(O, hiddenKeys);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8527:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aSet = __webpack_require__(7080);\n+var has = (__webpack_require__(4402).has);\n+var size = __webpack_require__(5170);\n+var getSetRecord = __webpack_require__(3789);\n+var iterateSimple = __webpack_require__(507);\n+var iteratorClose = __webpack_require__(9539);\n+\n+\u002F\u002F `Set.prototype.isSupersetOf` method\n+\u002F\u002F https:\u002F\u002Ftc39.github.io\u002Fproposal-set-methods\u002F#Set.prototype.isSupersetOf\n+module.exports = function isSupersetOf(other) {\n+  var O = aSet(this);\n+  var otherRec = getSetRecord(other);\n+  if (size(O) \u003C otherRec.size) return false;\n+  var iterator = otherRec.getIterator();\n+  return iterateSimple(iterator, function (e) {\n+    if (!has(O, e)) return iteratorClose(iterator, 'normal', false);\n+  }) !== false;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8551:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isObject = __webpack_require__(34);\n+\n+var $String = String;\n+var $TypeError = TypeError;\n+\n+\u002F\u002F `Assert: Type(argument) is Object`\n+module.exports = function (argument) {\n+  if (isObject(argument)) return argument;\n+  throw new $TypeError($String(argument) + ' is not an object');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8622:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var isCallable = __webpack_require__(4901);\n+\n+var WeakMap = globalThis.WeakMap;\n+\n+module.exports = isCallable(WeakMap) && \u002Fnative code\u002F.test(String(WeakMap));\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8686:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var fails = __webpack_require__(9039);\n+\n+\u002F\u002F V8 ~ Chrome 36-\n+\u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=3334\n+module.exports = DESCRIPTORS && fails(function () {\n+  \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- required for testing\n+  return Object.defineProperty(function () { \u002F* empty *\u002F }, 'prototype', {\n+    value: 42,\n+    writable: false\n+  }).prototype !== 42;\n+});\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8721:\n+\u002F***\u002F ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var DESCRIPTORS = __webpack_require__(3724);\n+var uncurryThis = __webpack_require__(9504);\n+var defineBuiltInAccessor = __webpack_require__(2106);\n+\n+var URLSearchParamsPrototype = URLSearchParams.prototype;\n+var forEach = uncurryThis(URLSearchParamsPrototype.forEach);\n+\n+\u002F\u002F `URLSearchParams.prototype.size` getter\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Fwhatwg\u002Furl\u002Fpull\u002F734\n+if (DESCRIPTORS && !('size' in URLSearchParamsPrototype)) {\n+  defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\n+    get: function size() {\n+      var count = 0;\n+      forEach(this, function () { count++; });\n+      return count;\n+    },\n+    configurable: true,\n+    enumerable: true\n+  });\n+}\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8727:\n+\u002F***\u002F ((module) => {\n+\n+\n+\u002F\u002F IE8- don't enum bug keys\n+module.exports = [\n+  'constructor',\n+  'hasOwnProperty',\n+  'isPrototypeOf',\n+  'propertyIsEnumerable',\n+  'toLocaleString',\n+  'toString',\n+  'valueOf'\n+];\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8750:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var aSet = __webpack_require__(7080);\n+var SetHelpers = __webpack_require__(4402);\n+var size = __webpack_require__(5170);\n+var getSetRecord = __webpack_require__(3789);\n+var iterateSet = __webpack_require__(8469);\n+var iterateSimple = __webpack_require__(507);\n+\n+var Set = SetHelpers.Set;\n+var add = SetHelpers.add;\n+var has = SetHelpers.has;\n+\n+\u002F\u002F `Set.prototype.intersection` method\n+\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\n+module.exports = function intersection(other) {\n+  var O = aSet(this);\n+  var otherRec = getSetRecord(other);\n+  var result = new Set();\n+\n+  if (size(O) > otherRec.size) {\n+    iterateSimple(otherRec.getIterator(), function (e) {\n+      if (has(O, e)) add(result, e);\n+    });\n+  } else {\n+    iterateSet(O, function (e) {\n+      if (otherRec.includes(e)) add(result, e);\n+    });\n+  }\n+\n+  return result;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8773:\n+\u002F***\u002F ((__unused_webpack_module, exports) => {\n+\n+\n+var $propertyIsEnumerable = {}.propertyIsEnumerable;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\n+var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n+\n+\u002F\u002F Nashorn ~ JDK8 bug\n+var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n+\n+\u002F\u002F `Object.prototype.propertyIsEnumerable` method implementation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.prototype.propertyisenumerable\n+exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n+  var descriptor = getOwnPropertyDescriptor(this, V);\n+  return !!descriptor && descriptor.enumerable;\n+} : $propertyIsEnumerable;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 8981:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var requireObjectCoercible = __webpack_require__(7750);\n+\n+var $Object = Object;\n+\n+\u002F\u002F `ToObject` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-toobject\n+module.exports = function (argument) {\n+  return $Object(requireObjectCoercible(argument));\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9039:\n+\u002F***\u002F ((module) => {\n+\n+\n+module.exports = function (exec) {\n+  try {\n+    return !!exec();\n+  } catch (error) {\n+    return true;\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9286:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var SetHelpers = __webpack_require__(4402);\n+var iterate = __webpack_require__(8469);\n+\n+var Set = SetHelpers.Set;\n+var add = SetHelpers.add;\n+\n+module.exports = function (set) {\n+  var result = new Set();\n+  iterate(set, function (it) {\n+    add(result, it);\n+  });\n+  return result;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9297:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var uncurryThis = __webpack_require__(9504);\n+var toObject = __webpack_require__(8981);\n+\n+var hasOwnProperty = uncurryThis({}.hasOwnProperty);\n+\n+\u002F\u002F `HasOwnProperty` abstract operation\n+\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-hasownproperty\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-hasown -- safe\n+module.exports = Object.hasOwn || function hasOwn(it, key) {\n+  return hasOwnProperty(toObject(it), key);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9306:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var isCallable = __webpack_require__(4901);\n+var tryToString = __webpack_require__(6823);\n+\n+var $TypeError = TypeError;\n+\n+\u002F\u002F `Assert: IsCallable(argument) is true`\n+module.exports = function (argument) {\n+  if (isCallable(argument)) return argument;\n+  throw new $TypeError(tryToString(argument) + ' is not a function');\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9429:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var IS_NODE = __webpack_require__(6193);\n+\n+module.exports = function (name) {\n+  if (IS_NODE) {\n+    try {\n+      return globalThis.process.getBuiltinModule(name);\n+    } catch (error) { \u002F* empty *\u002F }\n+    try {\n+      \u002F\u002F eslint-disable-next-line no-new-func -- safe\n+      return Function('return require(\"' + name + '\")')();\n+    } catch (error) { \u002F* empty *\u002F }\n+  }\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9433:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+\n+\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\n+var defineProperty = Object.defineProperty;\n+\n+module.exports = function (key, value) {\n+  try {\n+    defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\n+  } catch (error) {\n+    globalThis[key] = value;\n+  } return value;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9462:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var call = __webpack_require__(9565);\n+var create = __webpack_require__(2360);\n+var createNonEnumerableProperty = __webpack_require__(6699);\n+var defineBuiltIns = __webpack_require__(6279);\n+var wellKnownSymbol = __webpack_require__(8227);\n+var InternalStateModule = __webpack_require__(1181);\n+var getMethod = __webpack_require__(5966);\n+var IteratorPrototype = (__webpack_require__(7657).IteratorPrototype);\n+var createIterResultObject = __webpack_require__(2529);\n+var iteratorClose = __webpack_require__(9539);\n+\n+var TO_STRING_TAG = wellKnownSymbol('toStringTag');\n+var ITERATOR_HELPER = 'IteratorHelper';\n+var WRAP_FOR_VALID_ITERATOR = 'WrapForValidIterator';\n+var setInternalState = InternalStateModule.set;\n+\n+var createIteratorProxyPrototype = function (IS_ITERATOR) {\n+  var getInternalState = InternalStateModule.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER);\n+\n+  return defineBuiltIns(create(IteratorPrototype), {\n+    next: function next() {\n+      var state = getInternalState(this);\n+      \u002F\u002F for simplification:\n+      \u002F\u002F   for `%WrapForValidIteratorPrototype%.next` or with `state.returnHandlerResult` our `nextHandler` returns `IterResultObject`\n+      \u002F\u002F   for `%IteratorHelperPrototype%.next` - just a value\n+      if (IS_ITERATOR) return state.nextHandler();\n+      if (state.done) return createIterResultObject(undefined, true);\n+      try {\n+        var result = state.nextHandler();\n+        return state.returnHandlerResult ? result : createIterResultObject(result, state.done);\n+      } catch (error) {\n+        state.done = true;\n+        throw error;\n+      }\n+    },\n+    'return': function () {\n+      var state = getInternalState(this);\n+      var iterator = state.iterator;\n+      state.done = true;\n+      if (IS_ITERATOR) {\n+        var returnMethod = getMethod(iterator, 'return');\n+        return returnMethod ? call(returnMethod, iterator) : createIterResultObject(undefined, true);\n+      }\n+      if (state.inner) try {\n+        iteratorClose(state.inner.iterator, 'normal');\n+      } catch (error) {\n+        return iteratorClose(iterator, 'throw', error);\n+      }\n+      if (iterator) iteratorClose(iterator, 'normal');\n+      return createIterResultObject(undefined, true);\n+    }\n+  });\n+};\n+\n+var WrapForValidIteratorPrototype = createIteratorProxyPrototype(true);\n+var IteratorHelperPrototype = createIteratorProxyPrototype(false);\n+\n+createNonEnumerableProperty(IteratorHelperPrototype, TO_STRING_TAG, 'Iterator Helper');\n+\n+module.exports = function (nextHandler, IS_ITERATOR, RETURN_HANDLER_RESULT) {\n+  var IteratorProxy = function Iterator(record, state) {\n+    if (state) {\n+      state.iterator = record.iterator;\n+      state.next = record.next;\n+    } else state = record;\n+    state.type = IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER;\n+    state.returnHandlerResult = !!RETURN_HANDLER_RESULT;\n+    state.nextHandler = nextHandler;\n+    state.counter = 0;\n+    state.done = false;\n+    setInternalState(this, state);\n+  };\n+\n+  IteratorProxy.prototype = IS_ITERATOR ? WrapForValidIteratorPrototype : IteratorHelperPrototype;\n+\n+  return IteratorProxy;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9504:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var NATIVE_BIND = __webpack_require__(616);\n+\n+var FunctionPrototype = Function.prototype;\n+var call = FunctionPrototype.call;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind -- safe\n+var uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n+\n+module.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n+  return function () {\n+    return call.apply(fn, arguments);\n+  };\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9519:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var globalThis = __webpack_require__(4576);\n+var userAgent = __webpack_require__(2839);\n+\n+var process = globalThis.process;\n+var Deno = globalThis.Deno;\n+var versions = process && process.versions || Deno && Deno.version;\n+var v8 = versions && versions.v8;\n+var match, version;\n+\n+if (v8) {\n+  match = v8.split('.');\n+  \u002F\u002F in old Chrome, versions of V8 isn't V8 = Chrome \u002F 10\n+  \u002F\u002F but their correct versions are not interesting for us\n+  version = match[0] > 0 && match[0] \u003C 4 ? 1 : +(match[0] + match[1]);\n+}\n+\n+\u002F\u002F BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n+\u002F\u002F so check `userAgent` even if `.v8` exists, but 0\n+if (!version && userAgent) {\n+  match = userAgent.match(\u002FEdge\\\u002F(\\d+)\u002F);\n+  if (!match || match[1] >= 74) {\n+    match = userAgent.match(\u002FChrome\\\u002F(\\d+)\u002F);\n+    if (match) version = +match[1];\n+  }\n+}\n+\n+module.exports = version;\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9539:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var call = __webpack_require__(9565);\n+var anObject = __webpack_require__(8551);\n+var getMethod = __webpack_require__(5966);\n+\n+module.exports = function (iterator, kind, value) {\n+  var innerResult, innerError;\n+  anObject(iterator);\n+  try {\n+    innerResult = getMethod(iterator, 'return');\n+    if (!innerResult) {\n+      if (kind === 'throw') throw value;\n+      return value;\n+    }\n+    innerResult = call(innerResult, iterator);\n+  } catch (error) {\n+    innerError = true;\n+    innerResult = error;\n+  }\n+  if (kind === 'throw') throw value;\n+  if (innerError) throw innerResult;\n+  anObject(innerResult);\n+  return value;\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9565:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var NATIVE_BIND = __webpack_require__(616);\n+\n+var call = Function.prototype.call;\n+\u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind -- safe\n+module.exports = NATIVE_BIND ? call.bind(call) : function () {\n+  return call.apply(call, arguments);\n+};\n+\n+\n+\u002F***\u002F }),\n+\n+\u002F***\u002F 9617:\n+\u002F***\u002F ((module, __unused_webpack_exports, __webpack_require__) => {\n+\n+\n+var toIndexedObject = __webpack_require__(5397);\n+var toAbsoluteIndex = __webpack_require__(5610);\n+var lengthOfArrayLike = __webpack_require__(6198);\n+\n+\u002F\u002F `Array.prototype.{ indexOf, includes }` methods implementation\n+var createMethod = function (IS_INCLUDES) {\n+  return function ($this, el, fromIndex) {\n+    var O = toIndexedObject($this);\n+    var length = lengthOfArrayLike(O);\n+    if (length === 0) return !IS_INCLUDES && -1;\n+    var index = toAbsoluteIndex(fromIndex, length);\n+    var value;\n+    \u002F\u002F Array#includes uses SameValueZero equality algorithm\n+    \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\n+    if (IS_INCLUDES && el !== el) while (length > index) {\n+      value = O[index++];\n+      \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\n+      if (value !== value) return true;\n+    \u002F\u002F Array#indexOf ignores holes, Array#includes - not\n+    } else for (;length > index; index++) {\n+      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n+    } return !IS_INCLUDES && -1;\n+  };\n+};\n+\n+module.exports = {\n+  \u002F\u002F `Array.prototype.includes` method\n+  \u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-array.prototype.includes\n+  includes: createMethod(true),\n+  \u002F\u002F `Array.prototype.indexOf` method\n+  \u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-array.prototype.indexof\n+  indexOf: createMethod(false)\n+};\n+\n+\n+\u002F***\u002F })\n+\n+\u002F******\u002F });\n \u002F************************************************************************\u002F\n-\u002F******\u002F \u002F* webpack\u002Fruntime\u002Fdefine property getters *\u002F\n-\u002F******\u002F (() => {\n-\u002F******\u002F \t\u002F\u002F define getter functions for harmony exports\n-\u002F******\u002F \t__webpack_require__.d = (exports, definition) => {\n-\u002F******\u002F \t\tfor(var key in definition) {\n-\u002F******\u002F \t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n-\u002F******\u002F \t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n-\u002F******\u002F \t\t\t}\n-\u002F******\u002F \t\t}\n+\u002F******\u002F \u002F\u002F The module cache\n+\u002F******\u002F var __webpack_module_cache__ = {};\n+\u002F******\u002F \n+\u002F******\u002F \u002F\u002F The require function\n+\u002F******\u002F function __webpack_require__(moduleId) {\n+\u002F******\u002F \t\u002F\u002F Check if module is in cache\n+\u002F******\u002F \tvar cachedModule = __webpack_module_cache__[moduleId];\n+\u002F******\u002F \tif (cachedModule !== undefined) {\n+\u002F******\u002F \t\treturn cachedModule.exports;\n+\u002F******\u002F \t}\n+\u002F******\u002F \t\u002F\u002F Create a new module (and put it into the cache)\n+\u002F******\u002F \tvar module = __webpack_module_cache__[moduleId] = {\n+\u002F******\u002F \t\t\u002F\u002F no module.id needed\n+\u002F******\u002F \t\t\u002F\u002F no module.loaded needed\n+\u002F******\u002F \t\texports: {}\n \u002F******\u002F \t};\n-\u002F******\u002F })();\n \u002F******\u002F \n-\u002F******\u002F \u002F* webpack\u002Fruntime\u002FhasOwnProperty shorthand *\u002F\n-\u002F******\u002F (() => {\n-\u002F******\u002F \t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n-\u002F******\u002F })();\n+\u002F******\u002F \t\u002F\u002F Execute the module function\n+\u002F******\u002F \t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n+\u002F******\u002F \n+\u002F******\u002F \t\u002F\u002F Return the exports of the module\n+\u002F******\u002F \treturn module.exports;\n+\u002F******\u002F }\n \u002F******\u002F \n \u002F************************************************************************\u002F\n var __webpack_exports__ = {};\n \n-\u002F\u002F EXPORTS\n-__webpack_require__.d(__webpack_exports__, {\n-  PDFViewerApplication: () => (\u002F* reexport *\u002F PDFViewerApplication),\n-  PDFViewerApplicationConstants: () => (\u002F* binding *\u002F AppConstants),\n-  PDFViewerApplicationOptions: () => (\u002F* reexport *\u002F AppOptions)\n-});\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array.push.js\n+var es_array_push = __webpack_require__(4114);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.difference.v2.js\n+var es_set_difference_v2 = __webpack_require__(7642);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.intersection.v2.js\n+var es_set_intersection_v2 = __webpack_require__(8004);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.is-disjoint-from.v2.js\n+var es_set_is_disjoint_from_v2 = __webpack_require__(3853);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.is-subset-of.v2.js\n+var es_set_is_subset_of_v2 = __webpack_require__(5876);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.is-superset-of.v2.js\n+var es_set_is_superset_of_v2 = __webpack_require__(2475);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.symmetric-difference.v2.js\n+var es_set_symmetric_difference_v2 = __webpack_require__(5024);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.union.v2.js\n+var es_set_union_v2 = __webpack_require__(1698);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.url-search-params.delete.js\n+var web_url_search_params_delete = __webpack_require__(4603);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.url-search-params.has.js\n+var web_url_search_params_has = __webpack_require__(7566);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.url-search-params.size.js\n+var web_url_search_params_size = __webpack_require__(8721);\n+;\u002F\u002F .\u002Fweb\u002Fpdfjs.js\n+const {\n+  AbortException,\n+  AnnotationEditorLayer,\n+  AnnotationEditorParamsType,\n+  AnnotationEditorType,\n+  AnnotationEditorUIManager,\n+  AnnotationLayer,\n+  AnnotationMode,\n+  AnnotationType,\n+  build,\n+  ColorPicker,\n+  createValidAbsoluteUrl,\n+  DOMSVGFactory,\n+  DrawLayer,\n+  FeatureTest,\n+  fetchData,\n+  getDocument,\n+  getFilenameFromUrl,\n+  getPdfFilenameFromUrl: pdfjs_getPdfFilenameFromUrl,\n+  getUuid,\n+  getXfaPageViewport,\n+  GlobalWorkerOptions,\n+  ImageKind,\n+  InvalidPDFException,\n+  isDataScheme,\n+  isPdfFile,\n+  isValidExplicitDest,\n+  MathClamp,\n+  noContextMenu,\n+  normalizeUnicode,\n+  OPS,\n+  OutputScale,\n+  PasswordResponses,\n+  PDFDataRangeTransport,\n+  PDFDateString,\n+  PDFWorker,\n+  PermissionFlag,\n+  PixelsPerInch,\n+  RenderingCancelledException,\n+  ResponseException,\n+  setLayerDimensions,\n+  shadow,\n+  SignatureExtractor,\n+  stopEvent,\n+  SupportedImageMimeTypes,\n+  TextLayer,\n+  TouchManager,\n+  updateUrlHash,\n+  Util,\n+  VerbosityLevel,\n+  version,\n+  XfaLayer\n+} = globalThis.pdfjsLib;\n+\n+;\u002F\u002F .\u002Fweb\u002Fui_utils.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fui_utils.js\n const DEFAULT_SCALE_VALUE = \"auto\";\n const DEFAULT_SCALE = 1.0;\n const DEFAULT_SCALE_DELTA = 1.1;\n@@ -105,16 +4350,6 @@\n   ZOOM: 2\n };\n const AutoPrintRegExp = \u002F\\bprint\\s*\\(\u002F;\n-class OutputScale {\n-  constructor() {\n-    const pixelRatio = window.devicePixelRatio || 1;\n-    this.sx = pixelRatio;\n-    this.sy = pixelRatio;\n-  }\n-  get scaled() {\n-    return this.sx !== 1 || this.sy !== 1;\n-  }\n-}\n function scrollIntoView(element, spot, scrollMatches = false) {\n   let parent = element.offsetParent;\n   if (!parent) {\n@@ -142,7 +4377,7 @@\n   }\n   parent.scrollTop = offsetY;\n }\n-function watchScroll(viewAreaElement, callback) {\n+function watchScroll(viewAreaElement, callback, abortSignal = undefined) {\n   const debounceScroll = function (evt) {\n     if (rAF) {\n       return;\n@@ -172,7 +4407,13 @@\n     _eventHandler: debounceScroll\n   };\n   let rAF = null;\n-  viewAreaElement.addEventListener(\"scroll\", debounceScroll, true);\n+  viewAreaElement.addEventListener(\"scroll\", debounceScroll, {\n+    useCapture: true,\n+    signal: abortSignal\n+  });\n+  abortSignal?.addEventListener(\"abort\", () => window.cancelAnimationFrame(rAF), {\n+    once: true\n+  });\n   return state;\n }\n function parseQueryString(query) {\n@@ -250,9 +4491,8 @@\n   }\n   return result;\n }\n-function roundToDivide(x, div) {\n-  const r = x % div;\n-  return r === 0 ? x : Math.round(x - r + div);\n+function floorToDivide(x, div) {\n+  return x - x % div;\n }\n function getPageSizeInches({\n   view,\n@@ -336,8 +4576,10 @@\n     if (viewBottom \u003C= top || currentHeight >= bottom || viewRight \u003C= left || currentWidth >= right) {\n       continue;\n     }\n-    const hiddenHeight = Math.max(0, top - currentHeight) + Math.max(0, viewBottom - bottom);\n-    const hiddenWidth = Math.max(0, left - currentWidth) + Math.max(0, viewRight - right);\n+    const minY = Math.max(0, top - currentHeight);\n+    const minX = Math.max(0, left - currentWidth);\n+    const hiddenHeight = minY + Math.max(0, viewBottom - bottom);\n+    const hiddenWidth = minX + Math.max(0, viewRight - right);\n     const fractionHeight = (viewHeight - hiddenHeight) \u002F viewHeight,\n       fractionWidth = (viewWidth - hiddenWidth) \u002F viewWidth;\n     const percent = fractionHeight * fractionWidth * 100 | 0;\n@@ -345,6 +4587,12 @@\n       id: view.id,\n       x: currentWidth,\n       y: currentHeight,\n+      visibleArea: percent === 100 ? null : {\n+        minX,\n+        minY,\n+        maxX: Math.min(viewRight, right) - currentWidth,\n+        maxY: Math.min(viewBottom, bottom) - currentHeight\n+      },\n       view,\n       percent,\n       widthPercent: fractionWidth * 100 | 0\n@@ -405,9 +4653,6 @@\n   window.requestAnimationFrame(resolve);\n });\n const docStyle = document.documentElement.style;\n-function clamp(v, min, max) {\n-  return Math.min(Math.max(v, min), max);\n-}\n class ProgressBar {\n   #classList = null;\n   #disableAutoFetchTimeout = null;\n@@ -422,7 +4667,7 @@\n     return this.#percent;\n   }\n   set percent(val) {\n-    this.#percent = clamp(val, 0, 100);\n+    this.#percent = MathClamp(val, 0, 100);\n     if (isNaN(val)) {\n       this.#classList.add(\"indeterminate\");\n       return;\n@@ -441,7 +4686,7 @@\n     }\n   }\n   setDisableAutoFetch(delay = 5000) {\n-    if (isNaN(this.#percent)) {\n+    if (this.#percent === 100 || isNaN(this.#percent)) {\n       return;\n     }\n     if (this.#disableAutoFetchTimeout) {\n@@ -527,18 +4772,30 @@\n   button.setAttribute(\"aria-expanded\", toggle);\n   view?.classList.toggle(\"hidden\", !toggle);\n }\n+const calcRound = function () {\n+  const e = document.createElement(\"div\");\n+  e.style.width = \"round(down, calc(1.6666666666666665 * 792px), 1px)\";\n+  return e.style.width === \"calc(1320px)\" ? Math.fround : x => x;\n+}();\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fapp_options.js\n+;\u002F\u002F .\u002Fweb\u002Fapp_options.js\n {\n-  var compatibilityParams = Object.create(null);\n-  const userAgent = navigator.userAgent || \"\";\n-  const platform = navigator.platform || \"\";\n-  const maxTouchPoints = navigator.maxTouchPoints || 1;\n+  var compatParams = new Map();\n+  const {\n+    maxTouchPoints,\n+    platform,\n+    userAgent\n+  } = navigator;\n   const isAndroid = \u002FAndroid\u002F.test(userAgent);\n   const isIOS = \u002F\\b(iPad|iPhone|iPod)(?=;)\u002F.test(userAgent) || platform === \"MacIntel\" && maxTouchPoints > 1;\n-  (function checkCanvasSizeLimitation() {\n+  (function () {\n     if (isIOS || isAndroid) {\n-      compatibilityParams.maxCanvasPixels = 5242880;\n+      compatParams.set(\"maxCanvasPixels\", 5242880);\n+    }\n+  })();\n+  (function () {\n+    if (isAndroid) {\n+      compatParams.set(\"useSystemFonts\", false);\n     }\n   })();\n }\n@@ -547,9 +4804,21 @@\n   VIEWER: 0x02,\n   API: 0x04,\n   WORKER: 0x08,\n+  EVENT_DISPATCH: 0x10,\n   PREFERENCE: 0x80\n };\n+const Type = {\n+  BOOLEAN: 0x01,\n+  NUMBER: 0x02,\n+  OBJECT: 0x04,\n+  STRING: 0x08,\n+  UNDEFINED: 0x10\n+};\n const defaultOptions = {\n+  allowedGlobalEvents: {\n+    value: null,\n+    kind: OptionKind.BROWSER\n+  },\n   canvasMaxAreaInBytes: {\n     value: -1,\n     kind: OptionKind.BROWSER + OptionKind.API\n@@ -558,6 +4827,20 @@\n     value: false,\n     kind: OptionKind.BROWSER\n   },\n+  localeProperties: {\n+    value: {\n+      lang: navigator.language || \"en-US\"\n+    },\n+    kind: OptionKind.BROWSER\n+  },\n+  maxCanvasDim: {\n+    value: 32767,\n+    kind: OptionKind.BROWSER + OptionKind.VIEWER\n+  },\n+  nimbusDataStr: {\n+    value: \"\",\n+    kind: OptionKind.BROWSER\n+  },\n   supportsCaretBrowsingMode: {\n     value: false,\n     kind: OptionKind.BROWSER\n@@ -582,6 +4865,18 @@\n     value: true,\n     kind: OptionKind.BROWSER\n   },\n+  supportsPrinting: {\n+    value: true,\n+    kind: OptionKind.BROWSER\n+  },\n+  toolbarDensity: {\n+    value: 0,\n+    kind: OptionKind.BROWSER + OptionKind.EVENT_DISPATCH\n+  },\n+  altTextLearnMoreUrl: {\n+    value: \"\",\n+    kind: OptionKind.VIEWER + OptionKind.PREFERENCE\n+  },\n   annotationEditorMode: {\n     value: 0,\n     kind: OptionKind.VIEWER + OptionKind.PREFERENCE\n@@ -590,12 +4885,16 @@\n     value: 2,\n     kind: OptionKind.VIEWER + OptionKind.PREFERENCE\n   },\n+  capCanvasAreaFactor: {\n+    value: 200,\n+    kind: OptionKind.VIEWER + OptionKind.PREFERENCE\n+  },\n   cursorToolOnLoad: {\n     value: 0,\n     kind: OptionKind.VIEWER + OptionKind.PREFERENCE\n   },\n   debuggerSrc: {\n-    value: \".\u002Fdebugger.js?v=1.24.14\",\n+    value: \".\u002Fdebugger.js?v=1.29.11\",\n     kind: OptionKind.VIEWER\n   },\n   defaultZoomDelay: {\n@@ -614,16 +4913,32 @@\n     value: false,\n     kind: OptionKind.VIEWER + OptionKind.PREFERENCE\n   },\n-  enableHighlightEditor: {\n+  enableAltText: {\n     value: false,\n     kind: OptionKind.VIEWER + OptionKind.PREFERENCE\n   },\n+  enableAltTextModelDownload: {\n+    value: true,\n+    kind: OptionKind.VIEWER + OptionKind.PREFERENCE + OptionKind.EVENT_DISPATCH\n+  },\n+  enableAutoLinking: {\n+    value: true,\n+    kind: OptionKind.VIEWER + OptionKind.PREFERENCE\n+  },\n+  enableDetailCanvas: {\n+    value: true,\n+    kind: OptionKind.VIEWER\n+  },\n+  enableGuessAltText: {\n+    value: true,\n+    kind: OptionKind.VIEWER + OptionKind.PREFERENCE + OptionKind.EVENT_DISPATCH\n+  },\n   enableHighlightFloatingButton: {\n     value: false,\n     kind: OptionKind.VIEWER + OptionKind.PREFERENCE\n   },\n-  enableML: {\n-    value: false,\n+  enableNewAltTextWhenAddingImage: {\n+    value: true,\n     kind: OptionKind.VIEWER + OptionKind.PREFERENCE\n   },\n   enablePermissions: {\n@@ -638,8 +4953,12 @@\n     value: true,\n     kind: OptionKind.VIEWER + OptionKind.PREFERENCE\n   },\n-  enableStampEditor: {\n-    value: true,\n+  enableSignatureEditor: {\n+    value: false,\n+    kind: OptionKind.VIEWER + OptionKind.PREFERENCE\n+  },\n+  enableUpdatedAddImage: {\n+    value: false,\n     kind: OptionKind.VIEWER + OptionKind.PREFERENCE\n   },\n   externalLinkRel: {\n@@ -670,6 +4989,10 @@\n     value: 2 ** 25,\n     kind: OptionKind.VIEWER\n   },\n+  minDurationToUpdateCanvas: {\n+    value: 500,\n+    kind: OptionKind.VIEWER\n+  },\n   forcePageColors: {\n     value: false,\n     kind: OptionKind.VIEWER + OptionKind.PREFERENCE\n@@ -706,6 +5029,10 @@\n     value: 1,\n     kind: OptionKind.VIEWER + OptionKind.PREFERENCE\n   },\n+  viewerCssTheme: {\n+    value: 0,\n+    kind: OptionKind.VIEWER + OptionKind.PREFERENCE\n+  },\n   viewOnLoad: {\n     value: 0,\n     kind: OptionKind.VIEWER + OptionKind.PREFERENCE\n@@ -738,6 +5065,10 @@\n     value: \"\",\n     kind: OptionKind.API\n   },\n+  enableHWA: {\n+    value: true,\n+    kind: OptionKind.API + OptionKind.VIEWER + OptionKind.PREFERENCE\n+  },\n   enableXfa: {\n     value: true,\n     kind: OptionKind.API + OptionKind.PREFERENCE\n@@ -746,6 +5077,10 @@\n     value: false,\n     kind: OptionKind.API\n   },\n+  iccUrl: {\n+    value: \"..\u002Fweb\u002Ficcs\u002F\",\n+    kind: OptionKind.API\n+  },\n   isEvalSupported: {\n     value: true,\n     kind: OptionKind.API\n@@ -766,16 +5101,25 @@\n     value: \"..\u002Fweb\u002Fstandard_fonts\u002F\",\n     kind: OptionKind.API\n   },\n+  useSystemFonts: {\n+    value: undefined,\n+    kind: OptionKind.API,\n+    type: Type.BOOLEAN + Type.UNDEFINED\n+  },\n   verbosity: {\n     value: 1,\n     kind: OptionKind.API\n   },\n+  wasmUrl: {\n+    value: \"..\u002Fweb\u002Fwasm\u002F\",\n+    kind: OptionKind.API\n+  },\n   workerPort: {\n     value: null,\n     kind: OptionKind.WORKER\n   },\n   workerSrc: {\n-    value: \"..\u002Fbuild\u002Fpdf.worker.js?v=1.24.14\",\n+    value: \"..\u002Fbuild\u002Fpdf.worker.js?v=1.29.11\",\n     kind: OptionKind.WORKER\n   }\n };\n@@ -785,12 +5129,12 @@\n     kind: OptionKind.VIEWER\n   };\n   defaultOptions.sandboxBundleSrc = {\n-    value: \"..\u002Fbuild\u002Fpdf.sandbox.js?v=1.24.14\",\n+    value: \"..\u002Fbuild\u002Fpdf.sandbox.js?v=1.29.11\",\n     kind: OptionKind.VIEWER\n   };\n-  defaultOptions.viewerCssTheme = {\n-    value: 0,\n-    kind: OptionKind.VIEWER + OptionKind.PREFERENCE\n+  defaultOptions.enableFakeMLManager = {\n+    value: true,\n+    kind: OptionKind.VIEWER\n   };\n }\n {\n@@ -798,65 +5142,84 @@\n     value: false,\n     kind: OptionKind.VIEWER\n   };\n-  defaultOptions.locale = {\n-    value: navigator.language || \"en-US\",\n-    kind: OptionKind.VIEWER\n-  };\n-}\n-const userOptions = Object.create(null);\n-{\n-  for (const name in compatibilityParams) {\n-    userOptions[name] = compatibilityParams[name];\n-  }\n }\n class AppOptions {\n-  constructor() {\n-    throw new Error(\"Cannot initialize AppOptions.\");\n+  static eventBus;\n+  static #opts = new Map();\n+  static {\n+    for (const name in defaultOptions) {\n+      this.#opts.set(name, defaultOptions[name].value);\n+    }\n+    for (const [name, value] of compatParams) {\n+      this.#opts.set(name, value);\n+    }\n+    this._hasInvokedSet = false;\n+    this._checkDisablePreferences = () => {\n+      if (this.get(\"disablePreferences\")) {\n+        return true;\n+      }\n+      if (this._hasInvokedSet) {\n+        console.warn(\"The Preferences may override manually set AppOptions; \" + 'please use the \"disablePreferences\"-option to prevent that.');\n+      }\n+      return false;\n+    };\n   }\n   static get(name) {\n-    return userOptions[name] ?? defaultOptions[name]?.value ?? undefined;\n+    return this.#opts.get(name);\n   }\n   static getAll(kind = null, defaultOnly = false) {\n     const options = Object.create(null);\n     for (const name in defaultOptions) {\n-      const defaultOption = defaultOptions[name];\n-      if (kind && !(kind & defaultOption.kind)) {\n+      const defaultOpt = defaultOptions[name];\n+      if (kind && !(kind & defaultOpt.kind)) {\n         continue;\n       }\n-      options[name] = defaultOnly ? defaultOption.value : userOptions[name] ?? defaultOption.value;\n+      options[name] = !defaultOnly ? this.#opts.get(name) : defaultOpt.value;\n     }\n     return options;\n   }\n   static set(name, value) {\n-    userOptions[name] = value;\n+    this.setAll({\n+      [name]: value\n+    });\n   }\n-  static setAll(options, init = false) {\n-    if (init) {\n-      if (this.get(\"disablePreferences\")) {\n-        return;\n+  static setAll(options, prefs = false) {\n+    this._hasInvokedSet ||= true;\n+    let events;\n+    for (const name in options) {\n+      const defaultOpt = defaultOptions[name],\n+        userOpt = options[name];\n+      if (!defaultOpt || !(typeof userOpt === typeof defaultOpt.value || Type[(typeof userOpt).toUpperCase()] & defaultOpt.type)) {\n+        continue;\n       }\n-      for (const name in userOptions) {\n-        if (compatibilityParams[name] !== undefined) {\n-          continue;\n-        }\n-        console.warn(\"setAll: The Preferences may override manually set AppOptions; \" + 'please use the \"disablePreferences\"-option in order to prevent that.');\n-        break;\n+      const {\n+        kind\n+      } = defaultOpt;\n+      if (prefs && !(kind & OptionKind.BROWSER || kind & OptionKind.PREFERENCE)) {\n+        continue;\n       }\n+      if (this.eventBus && kind & OptionKind.EVENT_DISPATCH) {\n+        (events ||= new Map()).set(name, userOpt);\n+      }\n+      this.#opts.set(name, userOpt);\n     }\n-    for (const name in options) {\n-      userOptions[name] = options[name];\n-    }\n-  }\n-  static remove(name) {\n-    delete userOptions[name];\n-    const val = compatibilityParams[name];\n-    if (val !== undefined) {\n-      userOptions[name] = val;\n+    if (events) {\n+      for (const [name, value] of events) {\n+        this.eventBus.dispatch(name.toLowerCase(), {\n+          source: this,\n+          value\n+        });\n+      }\n     }\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fpdf_link_service.js\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.json.parse.js\n+var esnext_json_parse = __webpack_require__(8335);\n+;\u002F\u002F .\u002Fweb\u002Fpdf_link_service.js\n+\n+\n+\n \n const DEFAULT_LINK_REL = \"noopener noreferrer nofollow\";\n const LinkTarget = {\n@@ -1102,7 +5465,7 @@\n         dest = dest.toString();\n       }\n     } catch {}\n-    if (typeof dest === \"string\" || PDFLinkService.#isValidExplicitDest(dest)) {\n+    if (typeof dest === \"string\" || isValidExplicitDest(dest)) {\n       this.goToDestination(dest);\n       return;\n     }\n@@ -1151,107 +5514,22 @@\n     optionalContentConfig.setOCGState(action);\n     this.pdfViewer.optionalContentConfigPromise = Promise.resolve(optionalContentConfig);\n   }\n-  static #isValidExplicitDest(dest) {\n-    if (!Array.isArray(dest) || dest.length \u003C 2) {\n-      return false;\n-    }\n-    const [page, zoom, ...args] = dest;\n-    if (!(typeof page === \"object\" && Number.isInteger(page?.num) && Number.isInteger(page?.gen)) && !Number.isInteger(page)) {\n-      return false;\n-    }\n-    if (!(typeof zoom === \"object\" && typeof zoom?.name === \"string\")) {\n-      return false;\n-    }\n-    let allowNull = true;\n-    switch (zoom.name) {\n-      case \"XYZ\":\n-        if (args.length !== 3) {\n-          return false;\n-        }\n-        break;\n-      case \"Fit\":\n-      case \"FitB\":\n-        return args.length === 0;\n-      case \"FitH\":\n-      case \"FitBH\":\n-      case \"FitV\":\n-      case \"FitBV\":\n-        if (args.length !== 1) {\n-          return false;\n-        }\n-        break;\n-      case \"FitR\":\n-        if (args.length !== 4) {\n-          return false;\n-        }\n-        allowNull = false;\n-        break;\n-      default:\n-        return false;\n-    }\n-    for (const arg of args) {\n-      if (!(typeof arg === \"number\" || allowNull && arg === null)) {\n-        return false;\n-      }\n-    }\n-    return true;\n-  }\n }\n class SimpleLinkService extends PDFLinkService {\n   setDocument(pdfDocument, baseUrl = null) {}\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fpdfjs.js\n-const {\n-  AbortException,\n-  AnnotationEditorLayer,\n-  AnnotationEditorParamsType,\n-  AnnotationEditorType,\n-  AnnotationEditorUIManager,\n-  AnnotationLayer,\n-  AnnotationMode,\n-  build,\n-  CMapCompressionType,\n-  ColorPicker,\n-  createValidAbsoluteUrl,\n-  DOMSVGFactory,\n-  DrawLayer,\n-  FeatureTest,\n-  fetchData,\n-  getDocument,\n-  getFilenameFromUrl,\n-  getPdfFilenameFromUrl: pdfjs_getPdfFilenameFromUrl,\n-  getXfaPageViewport,\n-  GlobalWorkerOptions,\n-  ImageKind,\n-  InvalidPDFException,\n-  isDataScheme,\n-  isPdfFile,\n-  MissingPDFException,\n-  noContextMenu,\n-  normalizeUnicode,\n-  OPS,\n-  Outliner,\n-  PasswordResponses,\n-  PDFDataRangeTransport,\n-  PDFDateString,\n-  PDFWorker,\n-  PermissionFlag,\n-  PixelsPerInch,\n-  RenderingCancelledException,\n-  renderTextLayer,\n-  setLayerDimensions,\n-  shadow,\n-  TextLayer,\n-  UnexpectedResponseException,\n-  updateTextLayer,\n-  Util,\n-  VerbosityLevel,\n-  version,\n-  XfaLayer\n-} = globalThis.pdfjsLib;\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.constructor.js\n+var es_iterator_constructor = __webpack_require__(8111);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.some.js\n+var es_iterator_some = __webpack_require__(3579);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.promise.with-resolvers.js\n+var es_promise_with_resolvers = __webpack_require__(4628);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.url.parse.js\n+var web_url_parse = __webpack_require__(5781);\n+;\u002F\u002F .\u002Fweb\u002Fevent_utils.js\n+\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fevent_utils.js\n const WaitOnType = {\n   EVENT: \"event\",\n   TIMEOUT: \"timeout\"\n@@ -1357,19 +5635,23 @@\n     }\n   }\n }\n-class AutomationEventBus extends EventBus {\n+class FirefoxEventBus extends EventBus {\n+  #externalServices;\n+  #globalEventNames;\n+  #isInAutomation;\n+  constructor(globalEventNames, externalServices, isInAutomation) {\n+    super();\n+    this.#globalEventNames = globalEventNames;\n+    this.#externalServices = externalServices;\n+    this.#isInAutomation = isInAutomation;\n+  }\n   dispatch(eventName, data) {\n-    throw new Error(\"Not implemented: AutomationEventBus.dispatch\");\n+    throw new Error(\"Not implemented: FirefoxEventBus.dispatch\");\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fexternal_services.js\n+;\u002F\u002F .\u002Fweb\u002Fexternal_services.js\n class BaseExternalServices {\n-  constructor() {\n-    if (this.constructor === BaseExternalServices) {\n-      throw new Error(\"Cannot initialize BaseExternalServices.\");\n-    }\n-  }\n   updateFindControlState(data) {}\n   updateFindMatchesCount(data) {}\n   initPassiveLoading() {}\n@@ -1380,39 +5662,38 @@\n   createScripting() {\n     throw new Error(\"Not implemented: createScripting\");\n   }\n+  createSignatureStorage() {\n+    throw new Error(\"Not implemented: createSignatureStorage\");\n+  }\n   updateEditorStates(data) {\n     throw new Error(\"Not implemented: updateEditorStates\");\n   }\n-  async getNimbusExperimentData() {}\n+  dispatchGlobalEvent(_event) {}\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fpreferences.js\n+;\u002F\u002F .\u002Fweb\u002Fpreferences.js\n \n class BasePreferences {\n-  #browserDefaults = Object.freeze({\n-    canvasMaxAreaInBytes: -1,\n-    isInAutomation: false,\n-    supportsCaretBrowsingMode: false,\n-    supportsDocumentFonts: true,\n-    supportsIntegratedFind: false,\n-    supportsMouseWheelZoomCtrlKey: true,\n-    supportsMouseWheelZoomMetaKey: true,\n-    supportsPinchToZoom: true\n-  });\n   #defaults = Object.freeze({\n+    altTextLearnMoreUrl: \"\",\n     annotationEditorMode: 0,\n     annotationMode: 2,\n+    capCanvasAreaFactor: 200,\n     cursorToolOnLoad: 0,\n     defaultZoomDelay: 400,\n     defaultZoomValue: \"\",\n     disablePageLabels: false,\n-    enableHighlightEditor: false,\n+    enableAltText: false,\n+    enableAltTextModelDownload: true,\n+    enableAutoLinking: true,\n+    enableGuessAltText: true,\n     enableHighlightFloatingButton: false,\n-    enableML: false,\n+    enableNewAltTextWhenAddingImage: true,\n     enablePermissions: false,\n     enablePrintAutoRotate: true,\n     enableScripting: true,\n-    enableStampEditor: true,\n+    enableSignatureEditor: false,\n+    enableUpdatedAddImage: false,\n     externalLinkTarget: 0,\n     highlightEditorColors: \"yellow=#FFFF98,green=#53FFBC,blue=#80EBFF,pink=#FFCBE6,red=#FF4F5F\",\n     historyUpdateUrl: false,\n@@ -1425,34 +5706,28 @@\n     scrollModeOnLoad: -1,\n     spreadModeOnLoad: -1,\n     textLayerMode: 1,\n+    viewerCssTheme: 0,\n     viewOnLoad: 0,\n     disableAutoFetch: false,\n     disableFontFace: false,\n     disableRange: false,\n     disableStream: false,\n-    enableXfa: true,\n-    viewerCssTheme: 0\n+    enableHWA: true,\n+    enableXfa: true\n   });\n-  #prefs = Object.create(null);\n   #initializedPromise = null;\n   constructor() {\n-    if (this.constructor === BasePreferences) {\n-      throw new Error(\"Cannot initialize BasePreferences.\");\n-    }\n     this.#initializedPromise = this._readFromStorage(this.#defaults).then(({\n       browserPrefs,\n       prefs\n     }) => {\n-      const options = Object.create(null);\n-      for (const [name, val] of Object.entries(this.#browserDefaults)) {\n-        const prefVal = browserPrefs?.[name];\n-        options[name] = typeof prefVal === typeof val ? prefVal : val;\n-      }\n-      for (const [name, val] of Object.entries(this.#defaults)) {\n-        const prefVal = prefs?.[name];\n-        options[name] = this.#prefs[name] = typeof prefVal === typeof val ? prefVal : val;\n+      if (AppOptions._checkDisablePreferences()) {\n+        return;\n       }\n-      AppOptions.setAll(options, true);\n+      AppOptions.setAll({\n+        ...browserPrefs,\n+        ...prefs\n+      }, true);\n     });\n   }\n   async _writeToStorage(prefObj) {\n@@ -1461,65 +5736,30 @@\n   async _readFromStorage(prefObj) {\n     throw new Error(\"Not implemented: _readFromStorage\");\n   }\n-  #updatePref({\n-    name,\n-    value\n-  }) {\n-    throw new Error(\"Not implemented: #updatePref\");\n-  }\n   async reset() {\n     await this.#initializedPromise;\n-    const oldPrefs = structuredClone(this.#prefs);\n-    this.#prefs = Object.create(null);\n-    try {\n-      await this._writeToStorage(this.#defaults);\n-    } catch (reason) {\n-      this.#prefs = oldPrefs;\n-      throw reason;\n-    }\n+    AppOptions.setAll(this.#defaults, true);\n+    await this._writeToStorage(this.#defaults);\n   }\n   async set(name, value) {\n     await this.#initializedPromise;\n-    const defaultValue = this.#defaults[name],\n-      oldPrefs = structuredClone(this.#prefs);\n-    if (defaultValue === undefined) {\n-      throw new Error(`Set preference: \"${name}\" is undefined.`);\n-    } else if (value === undefined) {\n-      throw new Error(\"Set preference: no value is specified.\");\n-    }\n-    const valueType = typeof value,\n-      defaultType = typeof defaultValue;\n-    if (valueType !== defaultType) {\n-      if (valueType === \"number\" && defaultType === \"string\") {\n-        value = value.toString();\n-      } else {\n-        throw new Error(`Set preference: \"${value}\" is a ${valueType}, expected a ${defaultType}.`);\n-      }\n-    } else if (valueType === \"number\" && !Number.isInteger(value)) {\n-      throw new Error(`Set preference: \"${value}\" must be an integer.`);\n-    }\n-    this.#prefs[name] = value;\n-    try {\n-      await this._writeToStorage(this.#prefs);\n-    } catch (reason) {\n-      this.#prefs = oldPrefs;\n-      throw reason;\n-    }\n+    AppOptions.setAll({\n+      [name]: value\n+    }, true);\n+    await this._writeToStorage(AppOptions.getAll(OptionKind.PREFERENCE));\n   }\n   async get(name) {\n     await this.#initializedPromise;\n-    const defaultValue = this.#defaults[name];\n-    if (defaultValue === undefined) {\n-      throw new Error(`Get preference: \"${name}\" is undefined.`);\n-    }\n-    return this.#prefs[name] ?? defaultValue;\n+    return AppOptions.get(name);\n   }\n   get initializedPromise() {\n     return this.#initializedPromise;\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Ftypes.js\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.map.js\n+var es_iterator_map = __webpack_require__(1701);\n+;\u002F\u002F .\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Ftypes.js\n class FluentType {\n   constructor(value) {\n     this.value = value;\n@@ -1542,31 +5782,81 @@\n     this.opts = opts;\n   }\n   toString(scope) {\n-    try {\n-      const nf = scope.memoizeIntlObject(Intl.NumberFormat, this.opts);\n-      return nf.format(this.value);\n-    } catch (err) {\n-      scope.reportError(err);\n-      return this.value.toString(10);\n+    if (scope) {\n+      try {\n+        const nf = scope.memoizeIntlObject(Intl.NumberFormat, this.opts);\n+        return nf.format(this.value);\n+      } catch (err) {\n+        scope.reportError(err);\n+      }\n     }\n+    return this.value.toString(10);\n   }\n }\n class FluentDateTime extends FluentType {\n+  static supportsValue(value) {\n+    if (typeof value === \"number\") return true;\n+    if (value instanceof Date) return true;\n+    if (value instanceof FluentType) return FluentDateTime.supportsValue(value.valueOf());\n+    if (\"Temporal\" in globalThis) {\n+      const _Temporal = globalThis.Temporal;\n+      if (value instanceof _Temporal.Instant || value instanceof _Temporal.PlainDateTime || value instanceof _Temporal.PlainDate || value instanceof _Temporal.PlainMonthDay || value instanceof _Temporal.PlainTime || value instanceof _Temporal.PlainYearMonth) {\n+        return true;\n+      }\n+    }\n+    return false;\n+  }\n   constructor(value, opts = {}) {\n+    if (value instanceof FluentDateTime) {\n+      opts = {\n+        ...value.opts,\n+        ...opts\n+      };\n+      value = value.value;\n+    } else if (value instanceof FluentType) {\n+      value = value.valueOf();\n+    }\n+    if (typeof value === \"object\" && \"calendarId\" in value && opts.calendar === undefined) {\n+      opts = {\n+        ...opts,\n+        calendar: value.calendarId\n+      };\n+    }\n     super(value);\n     this.opts = opts;\n   }\n+  [Symbol.toPrimitive](hint) {\n+    return hint === \"string\" ? this.toString() : this.toNumber();\n+  }\n+  toNumber() {\n+    const value = this.value;\n+    if (typeof value === \"number\") return value;\n+    if (value instanceof Date) return value.getTime();\n+    if (\"epochMilliseconds\" in value) {\n+      return value.epochMilliseconds;\n+    }\n+    if (\"toZonedDateTime\" in value) {\n+      return value.toZonedDateTime(\"UTC\").epochMilliseconds;\n+    }\n+    throw new TypeError(\"Unwrapping a non-number value as a number\");\n+  }\n   toString(scope) {\n-    try {\n-      const dtf = scope.memoizeIntlObject(Intl.DateTimeFormat, this.opts);\n-      return dtf.format(this.value);\n-    } catch (err) {\n-      scope.reportError(err);\n+    if (scope) {\n+      try {\n+        const dtf = scope.memoizeIntlObject(Intl.DateTimeFormat, this.opts);\n+        return dtf.format(this.value);\n+      } catch (err) {\n+        scope.reportError(err);\n+      }\n+    }\n+    if (typeof this.value === \"number\" || this.value instanceof Date) {\n       return new Date(this.value).toISOString();\n     }\n+    return this.value.toString();\n   }\n }\n-;\u002F\u002F CONCATENATED MODULE: .\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Fresolver.js\n+;\u002F\u002F .\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Fresolver.js\n+\n \n const MAX_PLACEABLES = 100;\n const FSI = \"\\u2068\";\n@@ -1655,8 +5945,8 @@\n     case \"number\":\n       return new FluentNumber(arg);\n     case \"object\":\n-      if (arg instanceof Date) {\n-        return new FluentDateTime(arg.getTime());\n+      if (FluentDateTime.supportsValue(arg)) {\n+        return new FluentDateTime(arg);\n       }\n     default:\n       scope.reportError(new TypeError(`Variable type not supported: $${name}, ${typeof arg}`));\n@@ -1786,7 +6076,8 @@\n   }\n   return resolveComplexPattern(scope, value);\n }\n-;\u002F\u002F CONCATENATED MODULE: .\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Fscope.js\n+;\u002F\u002F .\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Fscope.js\n+\n class Scope {\n   constructor(bundle, errors, args) {\n     this.dirty = new WeakSet();\n@@ -1815,7 +6106,7 @@\n     return cache[id];\n   }\n }\n-;\u002F\u002F CONCATENATED MODULE: .\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Fbuiltins.js\n+;\u002F\u002F .\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Fbuiltins.js\n \n function values(opts, allowed) {\n   const unwrapped = Object.create(null);\n@@ -1839,7 +6130,7 @@\n     });\n   }\n   if (arg instanceof FluentDateTime) {\n-    return new FluentNumber(arg.valueOf(), {\n+    return new FluentNumber(arg.toNumber(), {\n       ...values(opts, NUMBER_ALLOWED)\n     });\n   }\n@@ -1851,20 +6142,12 @@\n   if (arg instanceof FluentNone) {\n     return new FluentNone(`DATETIME(${arg.valueOf()})`);\n   }\n-  if (arg instanceof FluentDateTime) {\n-    return new FluentDateTime(arg.valueOf(), {\n-      ...arg.opts,\n-      ...values(opts, DATETIME_ALLOWED)\n-    });\n-  }\n-  if (arg instanceof FluentNumber) {\n-    return new FluentDateTime(arg.valueOf(), {\n-      ...values(opts, DATETIME_ALLOWED)\n-    });\n+  if (arg instanceof FluentDateTime || arg instanceof FluentNumber) {\n+    return new FluentDateTime(arg, values(opts, DATETIME_ALLOWED));\n   }\n   throw new TypeError(\"Invalid argument to DATETIME\");\n }\n-;\u002F\u002F CONCATENATED MODULE: .\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Fmemoizer.js\n+;\u002F\u002F .\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Fmemoizer.js\n const cache = new Map();\n function getMemoizerForLocale(locales) {\n   const stringLocale = Array.isArray(locales) ? locales.join(\" \") : locales;\n@@ -1875,7 +6158,8 @@\n   }\n   return memoizer;\n }\n-;\u002F\u002F CONCATENATED MODULE: .\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Fbundle.js\n+;\u002F\u002F .\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Fbundle.js\n+\n \n \n \n@@ -1944,7 +6228,8 @@\n     }\n   }\n }\n-;\u002F\u002F CONCATENATED MODULE: .\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Fresource.js\n+;\u002F\u002F .\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Fresource.js\n+\n const RE_MESSAGE_START = \u002F^(-?[a-zA-Z][\\w-]*) *= *\u002Fgm;\n const RE_ATTRIBUTE_START = \u002F\\.([a-zA-Z][\\w-]*) *= *\u002Fy;\n const RE_VARIANT_START = \u002F\\*?\\[\u002Fy;\n@@ -2323,18 +6608,20 @@\n     this.length = length;\n   }\n }\n-;\u002F\u002F CONCATENATED MODULE: .\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Findex.js\n+;\u002F\u002F .\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Findex.js\n+\n+\n \n+;\u002F\u002F .\u002Fnode_modules\u002F@fluent\u002Fdom\u002Fesm\u002Foverlay.js\n \n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fnode_modules\u002F@fluent\u002Fdom\u002Fesm\u002Foverlay.js\n const reOverlay = \u002F\u003C|&#?\\w+;\u002F;\n const TEXT_LEVEL_ELEMENTS = {\n   \"http:\u002F\u002Fwww.w3.org\u002F1999\u002Fxhtml\": [\"em\", \"strong\", \"small\", \"s\", \"cite\", \"q\", \"dfn\", \"abbr\", \"data\", \"time\", \"code\", \"var\", \"samp\", \"kbd\", \"sub\", \"sup\", \"i\", \"b\", \"u\", \"mark\", \"bdi\", \"bdo\", \"span\", \"br\", \"wbr\"]\n };\n const LOCALIZABLE_ATTRIBUTES = {\n   \"http:\u002F\u002Fwww.w3.org\u002F1999\u002Fxhtml\": {\n-    global: [\"title\", \"aria-label\", \"aria-valuetext\"],\n+    global: [\"title\", \"aria-description\", \"aria-label\", \"aria-valuetext\"],\n     a: [\"download\"],\n     area: [\"download\", \"alt\"],\n     input: [\"alt\", \"placeholder\"],\n@@ -2478,7 +6765,11 @@\n   overlayAttributes(fromElement, toElement);\n   return toElement;\n }\n-;\u002F\u002F CONCATENATED MODULE: .\u002Fnode_modules\u002Fcached-iterable\u002Fsrc\u002Fcached_iterable.js\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.filter.js\n+var es_iterator_filter = __webpack_require__(2489);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.for-each.js\n+var es_iterator_for_each = __webpack_require__(7588);\n+;\u002F\u002F .\u002Fnode_modules\u002Fcached-iterable\u002Fsrc\u002Fcached_iterable.js\n class CachedIterable extends Array {\n   static from(iterable) {\n     if (iterable instanceof this) {\n@@ -2487,7 +6778,8 @@\n     return new this(iterable);\n   }\n }\n-;\u002F\u002F CONCATENATED MODULE: .\u002Fnode_modules\u002Fcached-iterable\u002Fsrc\u002Fcached_sync_iterable.js\n+;\u002F\u002F .\u002Fnode_modules\u002Fcached-iterable\u002Fsrc\u002Fcached_sync_iterable.js\n+\n \n class CachedSyncIterable extends CachedIterable {\n   constructor(iterable) {\n@@ -2522,7 +6814,8 @@\n     return this[this.length - 1];\n   }\n }\n-;\u002F\u002F CONCATENATED MODULE: .\u002Fnode_modules\u002Fcached-iterable\u002Fsrc\u002Fcached_async_iterable.js\n+;\u002F\u002F .\u002Fnode_modules\u002Fcached-iterable\u002Fsrc\u002Fcached_async_iterable.js\n+\n \n class CachedAsyncIterable extends CachedIterable {\n   constructor(iterable) {\n@@ -2559,10 +6852,21 @@\n     return this[this.length - 1];\n   }\n }\n-;\u002F\u002F CONCATENATED MODULE: .\u002Fnode_modules\u002Fcached-iterable\u002Fsrc\u002Findex.js\n+;\u002F\u002F .\u002Fnode_modules\u002Fcached-iterable\u002Fsrc\u002Findex.js\n+\n+\n+;\u002F\u002F .\u002Fnode_modules\u002F@fluent\u002Fdom\u002Fesm\u002Flocalization.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fnode_modules\u002F@fluent\u002Fdom\u002Fesm\u002Flocalization.js\n \n class Localization {\n   constructor(resourceIds = [], generateBundles) {\n@@ -2677,7 +6981,18 @@\n   });\n   return missingIds;\n }\n-;\u002F\u002F CONCATENATED MODULE: .\u002Fnode_modules\u002F@fluent\u002Fdom\u002Fesm\u002Fdom_localization.js\n+;\u002F\u002F .\u002Fnode_modules\u002F@fluent\u002Fdom\u002Fesm\u002Fdom_localization.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n const L10NID_ATTR_NAME = \"data-l10n-id\";\n@@ -2743,6 +7058,9 @@\n     this.pauseObserving();\n     if (this.roots.size === 0) {\n       this.mutationObserver = null;\n+      if (this.windowElement && this.pendingrAF) {\n+        this.windowElement.cancelAnimationFrame(this.pendingrAF);\n+      }\n       this.windowElement = null;\n       this.pendingrAF = null;\n       this.pendingElements.clear();\n@@ -2837,12 +7155,22 @@\n     };\n   }\n }\n-;\u002F\u002F CONCATENATED MODULE: .\u002Fnode_modules\u002F@fluent\u002Fdom\u002Fesm\u002Findex.js\n+;\u002F\u002F .\u002Fnode_modules\u002F@fluent\u002Fdom\u002Fesm\u002Findex.js\n+\n+\n+;\u002F\u002F .\u002Fweb\u002Fl10n.js\n+\n+\n+\n+\n+\n+\n+\n \n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fl10n.js\n class L10n {\n   #dir;\n+  #elements;\n   #lang;\n   #l10n;\n   constructor({\n@@ -2874,14 +7202,32 @@\n       id: ids,\n       args\n     }]);\n-    return messages?.[0].value || fallback;\n+    return messages[0]?.value || fallback;\n   }\n   async translate(element) {\n+    (this.#elements ||= new Set()).add(element);\n     try {\n       this.#l10n.connectRoot(element);\n       await this.#l10n.translateRoots();\n     } catch {}\n   }\n+  async translateOnce(element) {\n+    try {\n+      await this.#l10n.translateElements([element]);\n+    } catch (ex) {\n+      console.error(\"translateOnce:\", ex);\n+    }\n+  }\n+  async destroy() {\n+    if (this.#elements) {\n+      for (const element of this.#elements) {\n+        this.#l10n.disconnectRoot(element);\n+      }\n+      this.#elements.clear();\n+      this.#elements = null;\n+    }\n+    this.#l10n.pauseObserving();\n+  }\n   pause() {\n     this.#l10n.pauseObserving();\n   }\n@@ -2915,14 +7261,45 @@\n }\n const GenericL10n = null;\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fgenericl10n.js\n+;\u002F\u002F .\u002Fweb\u002Fgenericl10n.js\n+\n+\n+\n+\n+\n+\n \n \n \n \n+function PLATFORM() {\n+  const {\n+    isAndroid,\n+    isLinux,\n+    isMac,\n+    isWindows\n+  } = FeatureTest.platform;\n+  if (isLinux) {\n+    return \"linux\";\n+  }\n+  if (isWindows) {\n+    return \"windows\";\n+  }\n+  if (isMac) {\n+    return \"macos\";\n+  }\n+  if (isAndroid) {\n+    return \"android\";\n+  }\n+  return \"other\";\n+}\n function createBundle(lang, text) {\n   const resource = new FluentResource(text);\n-  const bundle = new FluentBundle(lang);\n+  const bundle = new FluentBundle(lang, {\n+    functions: {\n+      PLATFORM\n+    }\n+  });\n   const errors = bundle.addResource(resource);\n   if (errors.length) {\n     console.error(\"L10n errors\", errors);\n@@ -2950,12 +7327,12 @@\n       }\n       langs.push(defaultLang);\n     }\n-    for (const lang of langs) {\n-      const bundle = await this.#createBundle(lang, baseURL, paths);\n+    const bundles = langs.map(lang => [lang, this.#createBundle(lang, baseURL, paths)]);\n+    for (const [lang, bundlePromise] of bundles) {\n+      const bundle = await bundlePromise;\n       if (bundle) {\n         yield bundle;\n-      }\n-      if (lang === \"en-us\") {\n+      } else if (lang === \"en-us\") {\n         yield this.#createBundleFallback(lang);\n       }\n     }\n@@ -2976,7 +7353,7 @@\n       } = document.querySelector(`link[type=\"application\u002Fl10n\"]`);\n       const paths = await fetchData(href, \"json\");\n       return {\n-        baseURL: href.replace(\u002F[^\u002F]*$\u002F, \"\") || \".\u002F\",\n+        baseURL: href.substring(0, href.lastIndexOf(\"\u002F\") + 1) || \".\u002F\",\n         paths\n       };\n     } catch {}\n@@ -2989,32 +7366,26 @@\n     yield this.#createBundleFallback(lang);\n   }\n   static async #createBundleFallback(lang) {\n-    const text = \"pdfjs-previous-button =\\n    .title = Previous Page\\npdfjs-previous-button-label = Previous\\npdfjs-next-button =\\n    .title = Next Page\\npdfjs-next-button-label = Next\\npdfjs-page-input =\\n    .title = Page\\npdfjs-of-pages = of { $pagesCount }\\npdfjs-page-of-pages = ({ $pageNumber } of { $pagesCount })\\npdfjs-zoom-out-button =\\n    .title = Zoom Out\\npdfjs-zoom-out-button-label = Zoom Out\\npdfjs-zoom-in-button =\\n    .title = Zoom In\\npdfjs-zoom-in-button-label = Zoom In\\npdfjs-zoom-select =\\n    .title = Zoom\\npdfjs-presentation-mode-button =\\n    .title = Switch to Presentation Mode\\npdfjs-presentation-mode-button-label = Presentation Mode\\npdfjs-open-file-button =\\n    .title = Open File\\npdfjs-open-file-button-label = Open\\npdfjs-print-button =\\n    .title = Print\\npdfjs-print-button-label = Print\\npdfjs-save-button =\\n    .title = Save\\npdfjs-save-button-label = Save\\npdfjs-download-button =\\n    .title = Download\\npdfjs-download-button-label = Download\\npdfjs-bookmark-button =\\n    .title = Current Page (View URL from Current Page)\\npdfjs-bookmark-button-label = Current Page\\npdfjs-tools-button =\\n    .title = Tools\\npdfjs-tools-button-label = Tools\\npdfjs-first-page-button =\\n    .title = Go to First Page\\npdfjs-first-page-button-label = Go to First Page\\npdfjs-last-page-button =\\n    .title = Go to Last Page\\npdfjs-last-page-button-label = Go to Last Page\\npdfjs-page-rotate-cw-button =\\n    .title = Rotate Clockwise\\npdfjs-page-rotate-cw-button-label = Rotate Clockwise\\npdfjs-page-rotate-ccw-button =\\n    .title = Rotate Counterclockwise\\npdfjs-page-rotate-ccw-button-label = Rotate Counterclockwise\\npdfjs-cursor-text-select-tool-button =\\n    .title = Enable Text Selection Tool\\npdfjs-cursor-text-select-tool-button-label = Text Selection Tool\\npdfjs-cursor-hand-tool-button =\\n    .title = Enable Hand Tool\\npdfjs-cursor-hand-tool-button-label = Hand Tool\\npdfjs-scroll-page-button =\\n    .title = Use Page Scrolling\\npdfjs-scroll-page-button-label = Page Scrolling\\npdfjs-scroll-vertical-button =\\n    .title = Use Vertical Scrolling\\npdfjs-scroll-vertical-button-label = Vertical Scrolling\\npdfjs-scroll-horizontal-button =\\n    .title = Use Horizontal Scrolling\\npdfjs-scroll-horizontal-button-label = Horizontal Scrolling\\npdfjs-scroll-wrapped-button =\\n    .title = Use Wrapped Scrolling\\npdfjs-scroll-wrapped-button-label = Wrapped Scrolling\\npdfjs-spread-none-button =\\n    .title = Do not join page spreads\\npdfjs-spread-none-button-label = No Spreads\\npdfjs-spread-odd-button =\\n    .title = Join page spreads starting with odd-numbered pages\\npdfjs-spread-odd-button-label = Odd Spreads\\npdfjs-spread-even-button =\\n    .title = Join page spreads starting with even-numbered pages\\npdfjs-spread-even-button-label = Even Spreads\\npdfjs-document-properties-button =\\n    .title = Document Properties\\u2026\\npdfjs-document-properties-button-label = Document Properties\\u2026\\npdfjs-document-properties-file-name = File name:\\npdfjs-document-properties-file-size = File size:\\npdfjs-document-properties-kb = { $size_kb } KB ({ $size_b } bytes)\\npdfjs-document-properties-mb = { $size_mb } MB ({ $size_b } bytes)\\npdfjs-document-properties-title = Title:\\npdfjs-document-properties-author = Author:\\npdfjs-document-properties-subject = Subject:\\npdfjs-document-properties-keywords = Keywords:\\npdfjs-document-properties-creation-date = Creation Date:\\npdfjs-document-properties-modification-date = Modification Date:\\npdfjs-document-properties-date-string = { $date }, { $time }\\npdfjs-document-properties-creator = Creator:\\npdfjs-document-properties-producer = PDF Producer:\\npdfjs-document-properties-version = PDF Version:\\npdfjs-document-properties-page-count = Page Count:\\npdfjs-document-properties-page-size = Page Size:\\npdfjs-document-properties-page-size-unit-inches = in\\npdfjs-document-properties-page-size-unit-millimeters = mm\\npdfjs-document-properties-page-size-orientation-portrait = portrait\\npdfjs-document-properties-page-size-orientation-landscape = landscape\\npdfjs-document-properties-page-size-name-a-three = A3\\npdfjs-document-properties-page-size-name-a-four = A4\\npdfjs-document-properties-page-size-name-letter = Letter\\npdfjs-document-properties-page-size-name-legal = Legal\\npdfjs-document-properties-page-size-dimension-string = { $width } \\xD7 { $height } { $unit } ({ $orientation })\\npdfjs-document-properties-page-size-dimension-name-string = { $width } \\xD7 { $height } { $unit } ({ $name }, { $orientation })\\npdfjs-document-properties-linearized = Fast Web View:\\npdfjs-document-properties-linearized-yes = Yes\\npdfjs-document-properties-linearized-no = No\\npdfjs-document-properties-close-button = Close\\npdfjs-print-progress-message = Preparing document for printing\\u2026\\npdfjs-print-progress-percent = { $progress }%\\npdfjs-print-progress-close-button = Cancel\\npdfjs-printing-not-supported = Warning: Printing is not fully supported by this browser.\\npdfjs-printing-not-ready = Warning: The PDF is not fully loaded for printing.\\npdfjs-toggle-sidebar-button =\\n    .title = Toggle Sidebar\\npdfjs-toggle-sidebar-notification-button =\\n    .title = Toggle Sidebar (document contains outline\u002Fattachments\u002Flayers)\\npdfjs-toggle-sidebar-button-label = Toggle Sidebar\\npdfjs-document-outline-button =\\n    .title = Show Document Outline (double-click to expand\u002Fcollapse all items)\\npdfjs-document-outline-button-label = Document Outline\\npdfjs-attachments-button =\\n    .title = Show Attachments\\npdfjs-attachments-button-label = Attachments\\npdfjs-layers-button =\\n    .title = Show Layers (double-click to reset all layers to the default state)\\npdfjs-layers-button-label = Layers\\npdfjs-thumbs-button =\\n    .title = Show Thumbnails\\npdfjs-thumbs-button-label = Thumbnails\\npdfjs-current-outline-item-button =\\n    .title = Find Current Outline Item\\npdfjs-current-outline-item-button-label = Current Outline Item\\npdfjs-findbar-button =\\n    .title = Find in Document\\npdfjs-findbar-button-label = Find\\npdfjs-additional-layers = Additional Layers\\npdfjs-thumb-page-title =\\n    .title = Page { $page }\\npdfjs-thumb-page-canvas =\\n    .aria-label = Thumbnail of Page { $page }\\npdfjs-find-input =\\n    .title = Find\\n    .placeholder = Find in document\\u2026\\npdfjs-find-previous-button =\\n    .title = Find the previous occurrence of the phrase\\npdfjs-find-previous-button-label = Previous\\npdfjs-find-next-button =\\n    .title = Find the next occurrence of the phrase\\npdfjs-find-next-button-label = Next\\npdfjs-find-highlight-checkbox = Highlight All\\npdfjs-find-match-case-checkbox-label = Match Case\\npdfjs-find-match-diacritics-checkbox-label = Match Diacritics\\npdfjs-find-entire-word-checkbox-label = Whole Words\\npdfjs-find-reached-top = Reached top of document, continued from bottom\\npdfjs-find-reached-bottom = Reached end of document, continued from top\\npdfjs-find-match-count =\\n    { $total ->\\n        [one] { $current } of { $total } match\\n       *[other] { $current } of { $total } matches\\n    }\\npdfjs-find-match-count-limit =\\n    { $limit ->\\n        [one] More than { $limit } match\\n       *[other] More than { $limit } matches\\n    }\\npdfjs-find-not-found = Phrase not found\\npdfjs-page-scale-width = Page Width\\npdfjs-page-scale-fit = Page Fit\\npdfjs-page-scale-auto = Automatic Zoom\\npdfjs-page-scale-actual = Actual Size\\npdfjs-page-scale-percent = { $scale }%\\npdfjs-page-landmark =\\n    .aria-label = Page { $page }\\npdfjs-loading-error = An error occurred while loading the PDF.\\npdfjs-invalid-file-error = Invalid or corrupted PDF file.\\npdfjs-missing-file-error = Missing PDF file.\\npdfjs-unexpected-response-error = Unexpected server response.\\npdfjs-rendering-error = An error occurred while rendering the page.\\npdfjs-annotation-date-string = { $date }, { $time }\\npdfjs-text-annotation-type =\\n    .alt = [{ $type } Annotation]\\npdfjs-password-label = Enter the password to open this PDF file.\\npdfjs-password-invalid = Invalid password. Please try again.\\npdfjs-password-ok-button = OK\\npdfjs-password-cancel-button = Cancel\\npdfjs-web-fonts-disabled = Web fonts are disabled: unable to use embedded PDF fonts.\\npdfjs-editor-free-text-button =\\n    .title = Text\\npdfjs-editor-free-text-button-label = Text\\npdfjs-editor-ink-button =\\n    .title = Draw\\npdfjs-editor-ink-button-label = Draw\\npdfjs-editor-stamp-button =\\n    .title = Add or edit images\\npdfjs-editor-stamp-button-label = Add or edit images\\npdfjs-editor-highlight-button =\\n    .title = Highlight\\npdfjs-editor-highlight-button-label = Highlight\\npdfjs-highlight-floating-button1 =\\n    .title = Highlight\\n    .aria-label = Highlight\\npdfjs-highlight-floating-button-label = Highlight\\npdfjs-editor-remove-ink-button =\\n    .title = Remove drawing\\npdfjs-editor-remove-freetext-button =\\n    .title = Remove text\\npdfjs-editor-remove-stamp-button =\\n    .title = Remove image\\npdfjs-editor-remove-highlight-button =\\n    .title = Remove highlight\\npdfjs-editor-free-text-color-input = Color\\npdfjs-editor-free-text-size-input = Size\\npdfjs-editor-ink-color-input = Color\\npdfjs-editor-ink-thickness-input = Thickness\\npdfjs-editor-ink-opacity-input = Opacity\\npdfjs-editor-stamp-add-image-button =\\n    .title = Add image\\npdfjs-editor-stamp-add-image-button-label = Add image\\npdfjs-editor-free-highlight-thickness-input = Thickness\\npdfjs-editor-free-highlight-thickness-title =\\n    .title = Change thickness when highlighting items other than text\\npdfjs-free-text =\\n    .aria-label = Text Editor\\npdfjs-free-text-default-content = Start typing\\u2026\\npdfjs-ink =\\n    .aria-label = Draw Editor\\npdfjs-ink-canvas =\\n    .aria-label = User-created image\\npdfjs-editor-alt-text-button-label = Alt text\\npdfjs-editor-alt-text-edit-button-label = Edit alt text\\npdfjs-editor-alt-text-dialog-label = Choose an option\\npdfjs-editor-alt-text-dialog-description = Alt text (alternative text) helps when people can\\u2019t see the image or when it doesn\\u2019t load.\\npdfjs-editor-alt-text-add-description-label = Add a description\\npdfjs-editor-alt-text-add-description-description = Aim for 1-2 sentences that describe the subject, setting, or actions.\\npdfjs-editor-alt-text-mark-decorative-label = Mark as decorative\\npdfjs-editor-alt-text-mark-decorative-description = This is used for ornamental images, like borders or watermarks.\\npdfjs-editor-alt-text-cancel-button = Cancel\\npdfjs-editor-alt-text-save-button = Save\\npdfjs-editor-alt-text-decorative-tooltip = Marked as decorative\\npdfjs-editor-alt-text-textarea =\\n    .placeholder = For example, \\u201CA young man sits down at a table to eat a meal\\u201D\\npdfjs-editor-resizer-label-top-left = Top left corner \\u2014 resize\\npdfjs-editor-resizer-label-top-middle = Top middle \\u2014 resize\\npdfjs-editor-resizer-label-top-right = Top right corner \\u2014 resize\\npdfjs-editor-resizer-label-middle-right = Middle right \\u2014 resize\\npdfjs-editor-resizer-label-bottom-right = Bottom right corner \\u2014 resize\\npdfjs-editor-resizer-label-bottom-middle = Bottom middle \\u2014 resize\\npdfjs-editor-resizer-label-bottom-left = Bottom left corner \\u2014 resize\\npdfjs-editor-resizer-label-middle-left = Middle left \\u2014 resize\\npdfjs-editor-highlight-colorpicker-label = Highlight color\\npdfjs-editor-colorpicker-button =\\n    .title = Change color\\npdfjs-editor-colorpicker-dropdown =\\n    .aria-label = Color choices\\npdfjs-editor-colorpicker-yellow =\\n    .title = Yellow\\npdfjs-editor-colorpicker-green =\\n    .title = Green\\npdfjs-editor-colorpicker-blue =\\n    .title = Blue\\npdfjs-editor-colorpicker-pink =\\n    .title = Pink\\npdfjs-editor-colorpicker-red =\\n    .title = Red\\npdfjs-editor-highlight-show-all-button-label = Show all\\npdfjs-editor-highlight-show-all-button =\\n    .title = Show all\";\n+    const text = \"pdfjs-previous-button =\\n    .title = Previous Page\\npdfjs-previous-button-label = Previous\\npdfjs-next-button =\\n    .title = Next Page\\npdfjs-next-button-label = Next\\npdfjs-page-input =\\n    .title = Page\\npdfjs-of-pages = of { $pagesCount }\\npdfjs-page-of-pages = ({ $pageNumber } of { $pagesCount })\\npdfjs-zoom-out-button =\\n    .title = Zoom Out\\npdfjs-zoom-out-button-label = Zoom Out\\npdfjs-zoom-in-button =\\n    .title = Zoom In\\npdfjs-zoom-in-button-label = Zoom In\\npdfjs-zoom-select =\\n    .title = Zoom\\npdfjs-presentation-mode-button =\\n    .title = Switch to Presentation Mode\\npdfjs-presentation-mode-button-label = Presentation Mode\\npdfjs-open-file-button =\\n    .title = Open File\\npdfjs-open-file-button-label = Open\\npdfjs-print-button =\\n    .title = Print\\npdfjs-print-button-label = Print\\npdfjs-save-button =\\n    .title = Save\\npdfjs-save-button-label = Save\\npdfjs-download-button =\\n    .title = Download\\npdfjs-download-button-label = Download\\npdfjs-bookmark-button =\\n    .title = Current Page (View URL from Current Page)\\npdfjs-bookmark-button-label = Current Page\\npdfjs-tools-button =\\n    .title = Tools\\npdfjs-tools-button-label = Tools\\npdfjs-first-page-button =\\n    .title = Go to First Page\\npdfjs-first-page-button-label = Go to First Page\\npdfjs-last-page-button =\\n    .title = Go to Last Page\\npdfjs-last-page-button-label = Go to Last Page\\npdfjs-page-rotate-cw-button =\\n    .title = Rotate Clockwise\\npdfjs-page-rotate-cw-button-label = Rotate Clockwise\\npdfjs-page-rotate-ccw-button =\\n    .title = Rotate Counterclockwise\\npdfjs-page-rotate-ccw-button-label = Rotate Counterclockwise\\npdfjs-cursor-text-select-tool-button =\\n    .title = Enable Text Selection Tool\\npdfjs-cursor-text-select-tool-button-label = Text Selection Tool\\npdfjs-cursor-hand-tool-button =\\n    .title = Enable Hand Tool\\npdfjs-cursor-hand-tool-button-label = Hand Tool\\npdfjs-scroll-page-button =\\n    .title = Use Page Scrolling\\npdfjs-scroll-page-button-label = Page Scrolling\\npdfjs-scroll-vertical-button =\\n    .title = Use Vertical Scrolling\\npdfjs-scroll-vertical-button-label = Vertical Scrolling\\npdfjs-scroll-horizontal-button =\\n    .title = Use Horizontal Scrolling\\npdfjs-scroll-horizontal-button-label = Horizontal Scrolling\\npdfjs-scroll-wrapped-button =\\n    .title = Use Wrapped Scrolling\\npdfjs-scroll-wrapped-button-label = Wrapped Scrolling\\npdfjs-spread-none-button =\\n    .title = Do not join page spreads\\npdfjs-spread-none-button-label = No Spreads\\npdfjs-spread-odd-button =\\n    .title = Join page spreads starting with odd-numbered pages\\npdfjs-spread-odd-button-label = Odd Spreads\\npdfjs-spread-even-button =\\n    .title = Join page spreads starting with even-numbered pages\\npdfjs-spread-even-button-label = Even Spreads\\npdfjs-document-properties-button =\\n    .title = Document Properties\\u2026\\npdfjs-document-properties-button-label = Document Properties\\u2026\\npdfjs-document-properties-file-name = File name:\\npdfjs-document-properties-file-size = File size:\\npdfjs-document-properties-size-kb = { NUMBER($kb, maximumSignificantDigits: 3) } KB ({ $b } bytes)\\npdfjs-document-properties-size-mb = { NUMBER($mb, maximumSignificantDigits: 3) } MB ({ $b } bytes)\\npdfjs-document-properties-title = Title:\\npdfjs-document-properties-author = Author:\\npdfjs-document-properties-subject = Subject:\\npdfjs-document-properties-keywords = Keywords:\\npdfjs-document-properties-creation-date = Creation Date:\\npdfjs-document-properties-modification-date = Modification Date:\\npdfjs-document-properties-date-time-string = { DATETIME($dateObj, dateStyle: \\\"short\\\", timeStyle: \\\"medium\\\") }\\npdfjs-document-properties-creator = Creator:\\npdfjs-document-properties-producer = PDF Producer:\\npdfjs-document-properties-version = PDF Version:\\npdfjs-document-properties-page-count = Page Count:\\npdfjs-document-properties-page-size = Page Size:\\npdfjs-document-properties-page-size-unit-inches = in\\npdfjs-document-properties-page-size-unit-millimeters = mm\\npdfjs-document-properties-page-size-orientation-portrait = portrait\\npdfjs-document-properties-page-size-orientation-landscape = landscape\\npdfjs-document-properties-page-size-name-a-three = A3\\npdfjs-document-properties-page-size-name-a-four = A4\\npdfjs-document-properties-page-size-name-letter = Letter\\npdfjs-document-properties-page-size-name-legal = Legal\\npdfjs-document-properties-page-size-dimension-string = { $width } \\xD7 { $height } { $unit } ({ $orientation })\\npdfjs-document-properties-page-size-dimension-name-string = { $width } \\xD7 { $height } { $unit } ({ $name }, { $orientation })\\npdfjs-document-properties-linearized = Fast Web View:\\npdfjs-document-properties-linearized-yes = Yes\\npdfjs-document-properties-linearized-no = No\\npdfjs-document-properties-close-button = Close\\npdfjs-print-progress-message = Preparing document for printing\\u2026\\npdfjs-print-progress-percent = { $progress }%\\npdfjs-print-progress-close-button = Cancel\\npdfjs-printing-not-supported = Warning: Printing is not fully supported by this browser.\\npdfjs-printing-not-ready = Warning: The PDF is not fully loaded for printing.\\npdfjs-toggle-sidebar-button =\\n    .title = Toggle Sidebar\\npdfjs-toggle-sidebar-notification-button =\\n    .title = Toggle Sidebar (document contains outline\u002Fattachments\u002Flayers)\\npdfjs-toggle-sidebar-button-label = Toggle Sidebar\\npdfjs-document-outline-button =\\n    .title = Show Document Outline (double-click to expand\u002Fcollapse all items)\\npdfjs-document-outline-button-label = Document Outline\\npdfjs-attachments-button =\\n    .title = Show Attachments\\npdfjs-attachments-button-label = Attachments\\npdfjs-layers-button =\\n    .title = Show Layers (double-click to reset all layers to the default state)\\npdfjs-layers-button-label = Layers\\npdfjs-thumbs-button =\\n    .title = Show Thumbnails\\npdfjs-thumbs-button-label = Thumbnails\\npdfjs-current-outline-item-button =\\n    .title = Find Current Outline Item\\npdfjs-current-outline-item-button-label = Current Outline Item\\npdfjs-findbar-button =\\n    .title = Find in Document\\npdfjs-findbar-button-label = Find\\npdfjs-additional-layers = Additional Layers\\npdfjs-thumb-page-title =\\n    .title = Page { $page }\\npdfjs-thumb-page-canvas =\\n    .aria-label = Thumbnail of Page { $page }\\npdfjs-find-input =\\n    .title = Find\\n    .placeholder = Find in document\\u2026\\npdfjs-find-previous-button =\\n    .title = Find the previous occurrence of the phrase\\npdfjs-find-previous-button-label = Previous\\npdfjs-find-next-button =\\n    .title = Find the next occurrence of the phrase\\npdfjs-find-next-button-label = Next\\npdfjs-find-highlight-checkbox = Highlight All\\npdfjs-find-match-case-checkbox-label = Match Case\\npdfjs-find-match-diacritics-checkbox-label = Match Diacritics\\npdfjs-find-entire-word-checkbox-label = Whole Words\\npdfjs-find-reached-top = Reached top of document, continued from bottom\\npdfjs-find-reached-bottom = Reached end of document, continued from top\\npdfjs-find-match-count =\\n    { $total ->\\n        [one] { $current } of { $total } match\\n       *[other] { $current } of { $total } matches\\n    }\\npdfjs-find-match-count-limit =\\n    { $limit ->\\n        [one] More than { $limit } match\\n       *[other] More than { $limit } matches\\n    }\\npdfjs-find-not-found = Phrase not found\\npdfjs-page-scale-width = Page Width\\npdfjs-page-scale-fit = Page Fit\\npdfjs-page-scale-auto = Automatic Zoom\\npdfjs-page-scale-actual = Actual Size\\npdfjs-page-scale-percent = { $scale }%\\npdfjs-page-landmark =\\n    .aria-label = Page { $page }\\npdfjs-loading-error = An error occurred while loading the PDF.\\npdfjs-invalid-file-error = Invalid or corrupted PDF file.\\npdfjs-missing-file-error = Missing PDF file.\\npdfjs-unexpected-response-error = Unexpected server response.\\npdfjs-rendering-error = An error occurred while rendering the page.\\npdfjs-annotation-date-time-string = { DATETIME($dateObj, dateStyle: \\\"short\\\", timeStyle: \\\"medium\\\") }\\npdfjs-text-annotation-type =\\n    .alt = [{ $type } Annotation]\\npdfjs-password-label = Enter the password to open this PDF file.\\npdfjs-password-invalid = Invalid password. Please try again.\\npdfjs-password-ok-button = OK\\npdfjs-password-cancel-button = Cancel\\npdfjs-web-fonts-disabled = Web fonts are disabled: unable to use embedded PDF fonts.\\npdfjs-editor-free-text-button =\\n    .title = Text\\npdfjs-editor-free-text-button-label = Text\\npdfjs-editor-ink-button =\\n    .title = Draw\\npdfjs-editor-ink-button-label = Draw\\npdfjs-editor-stamp-button =\\n    .title = Add or edit images\\npdfjs-editor-stamp-button-label = Add or edit images\\npdfjs-editor-highlight-button =\\n    .title = Highlight\\npdfjs-editor-highlight-button-label = Highlight\\npdfjs-highlight-floating-button1 =\\n    .title = Highlight\\n    .aria-label = Highlight\\npdfjs-highlight-floating-button-label = Highlight\\npdfjs-editor-signature-button =\\n    .title = Add signature\\npdfjs-editor-signature-button-label = Add signature\\npdfjs-editor-highlight-editor =\\n    .aria-label = Highlight editor\\npdfjs-editor-ink-editor =\\n    .aria-label = Drawing editor\\npdfjs-editor-signature-editor1 =\\n    .aria-description = Signature editor: { $description }\\npdfjs-editor-stamp-editor =\\n    .aria-label = Image editor\\npdfjs-editor-remove-ink-button =\\n    .title = Remove drawing\\npdfjs-editor-remove-freetext-button =\\n    .title = Remove text\\npdfjs-editor-remove-stamp-button =\\n    .title = Remove image\\npdfjs-editor-remove-highlight-button =\\n    .title = Remove highlight\\npdfjs-editor-remove-signature-button =\\n    .title = Remove signature\\npdfjs-editor-free-text-color-input = Color\\npdfjs-editor-free-text-size-input = Size\\npdfjs-editor-ink-color-input = Color\\npdfjs-editor-ink-thickness-input = Thickness\\npdfjs-editor-ink-opacity-input = Opacity\\npdfjs-editor-stamp-add-image-button =\\n    .title = Add image\\npdfjs-editor-stamp-add-image-button-label = Add image\\npdfjs-editor-free-highlight-thickness-input = Thickness\\npdfjs-editor-free-highlight-thickness-title =\\n    .title = Change thickness when highlighting items other than text\\npdfjs-editor-add-signature-container =\\n    .aria-label = Signature controls and saved signatures\\npdfjs-editor-signature-add-signature-button =\\n    .title = Add new signature\\npdfjs-editor-signature-add-signature-button-label = Add new signature\\npdfjs-editor-add-saved-signature-button =\\n    .title = Saved signature: { $description }\\npdfjs-free-text2 =\\n    .aria-label = Text Editor\\n    .default-content = Start typing\\u2026\\npdfjs-editor-alt-text-button =\\n    .aria-label = Alt text\\npdfjs-editor-alt-text-button-label = Alt text\\npdfjs-editor-alt-text-edit-button =\\n    .aria-label = Edit alt text\\npdfjs-editor-alt-text-dialog-label = Choose an option\\npdfjs-editor-alt-text-dialog-description = Alt text (alternative text) helps when people can\\u2019t see the image or when it doesn\\u2019t load.\\npdfjs-editor-alt-text-add-description-label = Add a description\\npdfjs-editor-alt-text-add-description-description = Aim for 1-2 sentences that describe the subject, setting, or actions.\\npdfjs-editor-alt-text-mark-decorative-label = Mark as decorative\\npdfjs-editor-alt-text-mark-decorative-description = This is used for ornamental images, like borders or watermarks.\\npdfjs-editor-alt-text-cancel-button = Cancel\\npdfjs-editor-alt-text-save-button = Save\\npdfjs-editor-alt-text-decorative-tooltip = Marked as decorative\\npdfjs-editor-alt-text-textarea =\\n    .placeholder = For example, \\u201CA young man sits down at a table to eat a meal\\u201D\\npdfjs-editor-resizer-top-left =\\n    .aria-label = Top left corner \\u2014 resize\\npdfjs-editor-resizer-top-middle =\\n    .aria-label = Top middle \\u2014 resize\\npdfjs-editor-resizer-top-right =\\n    .aria-label = Top right corner \\u2014 resize\\npdfjs-editor-resizer-middle-right =\\n    .aria-label = Middle right \\u2014 resize\\npdfjs-editor-resizer-bottom-right =\\n    .aria-label = Bottom right corner \\u2014 resize\\npdfjs-editor-resizer-bottom-middle =\\n    .aria-label = Bottom middle \\u2014 resize\\npdfjs-editor-resizer-bottom-left =\\n    .aria-label = Bottom left corner \\u2014 resize\\npdfjs-editor-resizer-middle-left =\\n    .aria-label = Middle left \\u2014 resize\\npdfjs-editor-highlight-colorpicker-label = Highlight color\\npdfjs-editor-colorpicker-button =\\n    .title = Change color\\npdfjs-editor-colorpicker-dropdown =\\n    .aria-label = Color choices\\npdfjs-editor-colorpicker-yellow =\\n    .title = Yellow\\npdfjs-editor-colorpicker-green =\\n    .title = Green\\npdfjs-editor-colorpicker-blue =\\n    .title = Blue\\npdfjs-editor-colorpicker-pink =\\n    .title = Pink\\npdfjs-editor-colorpicker-red =\\n    .title = Red\\npdfjs-editor-highlight-show-all-button-label = Show all\\npdfjs-editor-highlight-show-all-button =\\n    .title = Show all\\npdfjs-editor-new-alt-text-dialog-edit-label = Edit alt text (image description)\\npdfjs-editor-new-alt-text-dialog-add-label = Add alt text (image description)\\npdfjs-editor-new-alt-text-textarea =\\n    .placeholder = Write your description here\\u2026\\npdfjs-editor-new-alt-text-description = Short description for people who can\\u2019t see the image or when the image doesn\\u2019t load.\\npdfjs-editor-new-alt-text-disclaimer1 = This alt text was created automatically and may be inaccurate.\\npdfjs-editor-new-alt-text-disclaimer-learn-more-url = Learn more\\npdfjs-editor-new-alt-text-create-automatically-button-label = Create alt text automatically\\npdfjs-editor-new-alt-text-not-now-button = Not now\\npdfjs-editor-new-alt-text-error-title = Couldn\\u2019t create alt text automatically\\npdfjs-editor-new-alt-text-error-description = Please write your own alt text or try again later.\\npdfjs-editor-new-alt-text-error-close-button = Close\\npdfjs-editor-new-alt-text-ai-model-downloading-progress = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)\\n    .aria-valuetext = Downloading alt text AI model ({ $downloadedSize } of { $totalSize } MB)\\npdfjs-editor-new-alt-text-added-button =\\n    .aria-label = Alt text added\\npdfjs-editor-new-alt-text-added-button-label = Alt text added\\npdfjs-editor-new-alt-text-missing-button =\\n    .aria-label = Missing alt text\\npdfjs-editor-new-alt-text-missing-button-label = Missing alt text\\npdfjs-editor-new-alt-text-to-review-button =\\n    .aria-label = Review alt text\\npdfjs-editor-new-alt-text-to-review-button-label = Review alt text\\npdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer = Created automatically: { $generatedAltText }\\npdfjs-image-alt-text-settings-button =\\n    .title = Image alt text settings\\npdfjs-image-alt-text-settings-button-label = Image alt text settings\\npdfjs-editor-alt-text-settings-dialog-label = Image alt text settings\\npdfjs-editor-alt-text-settings-automatic-title = Automatic alt text\\npdfjs-editor-alt-text-settings-create-model-button-label = Create alt text automatically\\npdfjs-editor-alt-text-settings-create-model-description = Suggests descriptions to help people who can\\u2019t see the image or when the image doesn\\u2019t load.\\npdfjs-editor-alt-text-settings-download-model-label = Alt text AI model ({ $totalSize } MB)\\npdfjs-editor-alt-text-settings-ai-model-description = Runs locally on your device so your data stays private. Required for automatic alt text.\\npdfjs-editor-alt-text-settings-delete-model-button = Delete\\npdfjs-editor-alt-text-settings-download-model-button = Download\\npdfjs-editor-alt-text-settings-downloading-model-button = Downloading\\u2026\\npdfjs-editor-alt-text-settings-editor-title = Alt text editor\\npdfjs-editor-alt-text-settings-show-dialog-button-label = Show alt text editor right away when adding an image\\npdfjs-editor-alt-text-settings-show-dialog-description = Helps you make sure all your images have alt text.\\npdfjs-editor-alt-text-settings-close-button = Close\\npdfjs-editor-undo-bar-message-highlight = Highlight removed\\npdfjs-editor-undo-bar-message-freetext = Text removed\\npdfjs-editor-undo-bar-message-ink = Drawing removed\\npdfjs-editor-undo-bar-message-stamp = Image removed\\npdfjs-editor-undo-bar-message-signature = Signature removed\\npdfjs-editor-undo-bar-message-multiple =\\n    { $count ->\\n        [one] { $count } annotation removed\\n       *[other] { $count } annotations removed\\n    }\\npdfjs-editor-undo-bar-undo-button =\\n    .title = Undo\\npdfjs-editor-undo-bar-undo-button-label = Undo\\npdfjs-editor-undo-bar-close-button =\\n    .title = Close\\npdfjs-editor-undo-bar-close-button-label = Close\\npdfjs-editor-add-signature-dialog-label = This modal allows the user to create a signature to add to a PDF document. The user can edit the name (which also serves as the alt text), and optionally save the signature for repeated use.\\npdfjs-editor-add-signature-dialog-title = Add a signature\\npdfjs-editor-add-signature-type-button = Type\\n    .title = Type\\npdfjs-editor-add-signature-draw-button = Draw\\n    .title = Draw\\npdfjs-editor-add-signature-image-button = Image\\n    .title = Image\\npdfjs-editor-add-signature-type-input =\\n    .aria-label = Type your signature\\n    .placeholder = Type your signature\\npdfjs-editor-add-signature-draw-placeholder = Draw your signature\\npdfjs-editor-add-signature-draw-thickness-range-label = Thickness\\npdfjs-editor-add-signature-draw-thickness-range =\\n    .title = Drawing thickness: { $thickness }\\npdfjs-editor-add-signature-image-placeholder = Drag a file here to upload\\npdfjs-editor-add-signature-image-browse-link =\\n    { PLATFORM() ->\\n        [macos] Or choose image files\\n       *[other] Or browse image files\\n    }\\npdfjs-editor-add-signature-description-label = Description (alt text)\\npdfjs-editor-add-signature-description-input =\\n    .title = Description (alt text)\\npdfjs-editor-add-signature-description-default-when-drawing = Signature\\npdfjs-editor-add-signature-clear-button-label = Clear signature\\npdfjs-editor-add-signature-clear-button =\\n    .title = Clear signature\\npdfjs-editor-add-signature-save-checkbox = Save signature\\npdfjs-editor-add-signature-save-warning-message = You\\u2019ve reached the limit of 5 saved signatures. Remove one to save more.\\npdfjs-editor-add-signature-image-upload-error-title = Couldn\\u2019t upload image\\npdfjs-editor-add-signature-image-upload-error-description = Check your network connection or try another image.\\npdfjs-editor-add-signature-error-close-button = Close\\npdfjs-editor-add-signature-cancel-button = Cancel\\npdfjs-editor-add-signature-add-button = Add\\npdfjs-editor-delete-signature-button1 =\\n    .title = Remove saved signature\\npdfjs-editor-delete-signature-button-label1 = Remove saved signature\\npdfjs-editor-add-signature-edit-button-label = Edit description\\npdfjs-editor-edit-signature-dialog-title = Edit description\\npdfjs-editor-edit-signature-update-button = Update\";\n     return createBundle(lang, text);\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fgeneric_scripting.js\n+;\u002F\u002F .\u002Fweb\u002Fgeneric_scripting.js\n \n async function docProperties(pdfDocument) {\n   const url = \"\",\n-    baseUrl = url.split(\"#\", 1)[0];\n-  let {\n+    baseUrl = \"\";\n+  const {\n     info,\n     metadata,\n     contentDispositionFilename,\n     contentLength\n   } = await pdfDocument.getMetadata();\n-  if (!contentLength) {\n-    const {\n-      length\n-    } = await pdfDocument.getDownloadInfo();\n-    contentLength = length;\n-  }\n   return {\n     ...info,\n     baseURL: baseUrl,\n-    filesize: contentLength,\n+    filesize: contentLength || (await pdfDocument.getDownloadInfo()).length,\n     filename: contentDispositionFilename || getPdfFilenameFromUrl(url),\n     metadata: metadata?.getRaw(),\n     authors: metadata?.get(\"dc:creator\"),\n@@ -3025,7 +7396,10 @@\n class GenericScripting {\n   constructor(sandboxBundleSrc) {\n     this._ready = new Promise((resolve, reject) => {\n-      const sandbox = import( \u002F*webpackIgnore: true*\u002FsandboxBundleSrc);\n+      const sandbox = import(\n+      \u002F*webpackIgnore: true*\u002F\n+      \u002F*@vite-ignore*\u002F\n+      sandboxBundleSrc);\n       sandbox.then(pdfjsSandbox => {\n         resolve(pdfjsSandbox.QuickJSSandbox());\n       }).catch(reject);\n@@ -3045,7 +7419,78 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fgenericcom.js\n+;\u002F\u002F .\u002Fweb\u002Fgeneric_signature_storage.js\n+\n+\n+const KEY_STORAGE = \"pdfjs.signature\";\n+class SignatureStorage {\n+  #eventBus;\n+  #signatures = null;\n+  #signal = null;\n+  constructor(eventBus, signal) {\n+    this.#eventBus = eventBus;\n+    this.#signal = signal;\n+  }\n+  #save() {\n+    localStorage.setItem(KEY_STORAGE, JSON.stringify(Object.fromEntries(this.#signatures)));\n+  }\n+  async getAll() {\n+    if (this.#signal) {\n+      window.addEventListener(\"storage\", ({\n+        key\n+      }) => {\n+        if (key === KEY_STORAGE) {\n+          this.#signatures = null;\n+          this.#eventBus?.dispatch(\"storedsignatureschanged\", {\n+            source: this\n+          });\n+        }\n+      }, {\n+        signal: this.#signal\n+      });\n+      this.#signal = null;\n+    }\n+    if (!this.#signatures) {\n+      this.#signatures = new Map();\n+      const data = localStorage.getItem(KEY_STORAGE);\n+      if (data) {\n+        for (const [key, value] of Object.entries(JSON.parse(data))) {\n+          this.#signatures.set(key, value);\n+        }\n+      }\n+    }\n+    return this.#signatures;\n+  }\n+  async isFull() {\n+    return (await this.size()) === 5;\n+  }\n+  async size() {\n+    return (await this.getAll()).size;\n+  }\n+  async create(data) {\n+    if (await this.isFull()) {\n+      return null;\n+    }\n+    const uuid = getUuid();\n+    this.#signatures.set(uuid, data);\n+    this.#save();\n+    return uuid;\n+  }\n+  async delete(uuid) {\n+    const signatures = await this.getAll();\n+    if (!signatures.has(uuid)) {\n+      return false;\n+    }\n+    signatures.delete(uuid);\n+    this.#save();\n+    return true;\n+  }\n+}\n+\n+;\u002F\u002F .\u002Fweb\u002Fgenericcom.js\n+\n+\n+\n \n \n \n@@ -3064,24 +7509,586 @@\n }\n class ExternalServices extends BaseExternalServices {\n   async createL10n() {\n-    return new genericl10n_GenericL10n(AppOptions.get(\"locale\"));\n+    return new genericl10n_GenericL10n(AppOptions.get(\"localeProperties\")?.lang);\n   }\n   createScripting() {\n     return new GenericScripting(AppOptions.get(\"sandboxBundleSrc\"));\n   }\n+  createSignatureStorage(eventBus, signal) {\n+    return new SignatureStorage(eventBus, signal);\n+  }\n }\n class MLManager {\n-  async guess() {\n+  async isEnabledFor(_name) {\n+    return false;\n+  }\n+  async deleteModel(_service) {\n     return null;\n   }\n+  isReady(_name) {\n+    return false;\n+  }\n+  guess(_data) {}\n+  toggleService(_name, _enabled) {}\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Falt_text_manager.js\n+;\u002F\u002F .\u002Fweb\u002Fnew_alt_text_manager.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+class NewAltTextManager {\n+  #boundCancel = this.#cancel.bind(this);\n+  #createAutomaticallyButton;\n+  #currentEditor = null;\n+  #cancelButton;\n+  #descriptionContainer;\n+  #dialog;\n+  #disclaimer;\n+  #downloadModel;\n+  #downloadModelDescription;\n+  #eventBus;\n+  #firstTime = false;\n+  #guessedAltText;\n+  #hasAI = null;\n+  #isEditing = null;\n+  #imagePreview;\n+  #imageData;\n+  #isAILoading = false;\n+  #wasAILoading = false;\n+  #learnMore;\n+  #notNowButton;\n+  #overlayManager;\n+  #textarea;\n+  #title;\n+  #uiManager;\n+  #previousAltText = null;\n+  constructor({\n+    descriptionContainer,\n+    dialog,\n+    imagePreview,\n+    cancelButton,\n+    disclaimer,\n+    notNowButton,\n+    saveButton,\n+    textarea,\n+    learnMore,\n+    errorCloseButton,\n+    createAutomaticallyButton,\n+    downloadModel,\n+    downloadModelDescription,\n+    title\n+  }, overlayManager, eventBus) {\n+    this.#cancelButton = cancelButton;\n+    this.#createAutomaticallyButton = createAutomaticallyButton;\n+    this.#descriptionContainer = descriptionContainer;\n+    this.#dialog = dialog;\n+    this.#disclaimer = disclaimer;\n+    this.#notNowButton = notNowButton;\n+    this.#imagePreview = imagePreview;\n+    this.#textarea = textarea;\n+    this.#learnMore = learnMore;\n+    this.#title = title;\n+    this.#downloadModel = downloadModel;\n+    this.#downloadModelDescription = downloadModelDescription;\n+    this.#overlayManager = overlayManager;\n+    this.#eventBus = eventBus;\n+    dialog.addEventListener(\"close\", this.#close.bind(this));\n+    dialog.addEventListener(\"contextmenu\", event => {\n+      if (event.target !== this.#textarea) {\n+        event.preventDefault();\n+      }\n+    });\n+    cancelButton.addEventListener(\"click\", this.#boundCancel);\n+    notNowButton.addEventListener(\"click\", this.#boundCancel);\n+    saveButton.addEventListener(\"click\", this.#save.bind(this));\n+    errorCloseButton.addEventListener(\"click\", () => {\n+      this.#toggleError(false);\n+    });\n+    createAutomaticallyButton.addEventListener(\"click\", async () => {\n+      const checked = createAutomaticallyButton.getAttribute(\"aria-pressed\") !== \"true\";\n+      this.#currentEditor._reportTelemetry({\n+        action: \"pdfjs.image.alt_text.ai_generation_check\",\n+        data: {\n+          status: checked\n+        }\n+      });\n+      if (this.#uiManager) {\n+        this.#uiManager.setPreference(\"enableGuessAltText\", checked);\n+        await this.#uiManager.mlManager.toggleService(\"altText\", checked);\n+      }\n+      this.#toggleGuessAltText(checked, false);\n+    });\n+    textarea.addEventListener(\"focus\", () => {\n+      this.#wasAILoading = this.#isAILoading;\n+      this.#toggleLoading(false);\n+      this.#toggleTitleAndDisclaimer();\n+    });\n+    textarea.addEventListener(\"blur\", () => {\n+      if (!textarea.value) {\n+        this.#toggleLoading(this.#wasAILoading);\n+      }\n+      this.#toggleTitleAndDisclaimer();\n+    });\n+    textarea.addEventListener(\"input\", () => {\n+      this.#toggleTitleAndDisclaimer();\n+    });\n+    eventBus._on(\"enableguessalttext\", ({\n+      value\n+    }) => {\n+      this.#toggleGuessAltText(value, false);\n+    });\n+    this.#overlayManager.register(dialog);\n+    this.#learnMore.addEventListener(\"click\", () => {\n+      this.#currentEditor._reportTelemetry({\n+        action: \"pdfjs.image.alt_text.info\",\n+        data: {\n+          topic: \"alt_text\"\n+        }\n+      });\n+    });\n+  }\n+  #toggleLoading(value) {\n+    if (!this.#uiManager || this.#isAILoading === value) {\n+      return;\n+    }\n+    this.#isAILoading = value;\n+    this.#descriptionContainer.classList.toggle(\"loading\", value);\n+  }\n+  #toggleError(value) {\n+    if (!this.#uiManager) {\n+      return;\n+    }\n+    this.#dialog.classList.toggle(\"error\", value);\n+  }\n+  async #toggleGuessAltText(value, isInitial = false) {\n+    if (!this.#uiManager) {\n+      return;\n+    }\n+    this.#dialog.classList.toggle(\"aiDisabled\", !value);\n+    this.#createAutomaticallyButton.setAttribute(\"aria-pressed\", value);\n+    if (value) {\n+      const {\n+        altTextLearnMoreUrl\n+      } = this.#uiManager.mlManager;\n+      if (altTextLearnMoreUrl) {\n+        this.#learnMore.href = altTextLearnMoreUrl;\n+      }\n+      this.#mlGuessAltText(isInitial);\n+    } else {\n+      this.#toggleLoading(false);\n+      this.#isAILoading = false;\n+      this.#toggleTitleAndDisclaimer();\n+    }\n+  }\n+  #toggleNotNow() {\n+    this.#notNowButton.classList.toggle(\"hidden\", !this.#firstTime);\n+    this.#cancelButton.classList.toggle(\"hidden\", this.#firstTime);\n+  }\n+  #toggleAI(value) {\n+    if (!this.#uiManager || this.#hasAI === value) {\n+      return;\n+    }\n+    this.#hasAI = value;\n+    this.#dialog.classList.toggle(\"noAi\", !value);\n+    this.#toggleTitleAndDisclaimer();\n+  }\n+  #toggleTitleAndDisclaimer() {\n+    const visible = this.#isAILoading || this.#guessedAltText && this.#guessedAltText === this.#textarea.value;\n+    this.#disclaimer.hidden = !visible;\n+    const isEditing = this.#isAILoading || !!this.#textarea.value;\n+    if (this.#isEditing === isEditing) {\n+      return;\n+    }\n+    this.#isEditing = isEditing;\n+    this.#title.setAttribute(\"data-l10n-id\", isEditing ? \"pdfjs-editor-new-alt-text-dialog-edit-label\" : \"pdfjs-editor-new-alt-text-dialog-add-label\");\n+  }\n+  async #mlGuessAltText(isInitial) {\n+    if (this.#isAILoading) {\n+      return;\n+    }\n+    if (this.#textarea.value) {\n+      return;\n+    }\n+    if (isInitial && this.#previousAltText !== null) {\n+      return;\n+    }\n+    this.#guessedAltText = this.#currentEditor.guessedAltText;\n+    if (this.#previousAltText === null && this.#guessedAltText) {\n+      this.#addAltText(this.#guessedAltText);\n+      return;\n+    }\n+    this.#toggleLoading(true);\n+    this.#toggleTitleAndDisclaimer();\n+    let hasError = false;\n+    try {\n+      const altText = await this.#currentEditor.mlGuessAltText(this.#imageData, false);\n+      if (altText) {\n+        this.#guessedAltText = altText;\n+        this.#wasAILoading = this.#isAILoading;\n+        if (this.#isAILoading) {\n+          this.#addAltText(altText);\n+        }\n+      }\n+    } catch (e) {\n+      console.error(e);\n+      hasError = true;\n+    }\n+    this.#toggleLoading(false);\n+    this.#toggleTitleAndDisclaimer();\n+    if (hasError && this.#uiManager) {\n+      this.#toggleError(true);\n+    }\n+  }\n+  #addAltText(altText) {\n+    if (!this.#uiManager || this.#textarea.value) {\n+      return;\n+    }\n+    this.#textarea.value = altText;\n+    this.#toggleTitleAndDisclaimer();\n+  }\n+  #setProgress() {\n+    this.#downloadModel.classList.toggle(\"hidden\", false);\n+    const callback = async ({\n+      detail: {\n+        finished,\n+        total,\n+        totalLoaded\n+      }\n+    }) => {\n+      const ONE_MEGA_BYTES = 1e6;\n+      totalLoaded = Math.min(0.99 * total, totalLoaded);\n+      const totalSize = this.#downloadModelDescription.ariaValueMax = Math.round(total \u002F ONE_MEGA_BYTES);\n+      const downloadedSize = this.#downloadModelDescription.ariaValueNow = Math.round(totalLoaded \u002F ONE_MEGA_BYTES);\n+      this.#downloadModelDescription.setAttribute(\"data-l10n-args\", JSON.stringify({\n+        totalSize,\n+        downloadedSize\n+      }));\n+      if (!finished) {\n+        return;\n+      }\n+      this.#eventBus._off(\"loadaiengineprogress\", callback);\n+      this.#downloadModel.classList.toggle(\"hidden\", true);\n+      this.#toggleAI(true);\n+      if (!this.#uiManager) {\n+        return;\n+      }\n+      const {\n+        mlManager\n+      } = this.#uiManager;\n+      mlManager.toggleService(\"altText\", true);\n+      this.#toggleGuessAltText(await mlManager.isEnabledFor(\"altText\"), true);\n+    };\n+    this.#eventBus._on(\"loadaiengineprogress\", callback);\n+  }\n+  async editAltText(uiManager, editor, firstTime) {\n+    if (this.#currentEditor || !editor) {\n+      return;\n+    }\n+    if (firstTime && editor.hasAltTextData()) {\n+      editor.altTextFinish();\n+      return;\n+    }\n+    this.#firstTime = firstTime;\n+    let {\n+      mlManager\n+    } = uiManager;\n+    let hasAI = !!mlManager;\n+    this.#toggleTitleAndDisclaimer();\n+    if (mlManager && !mlManager.isReady(\"altText\")) {\n+      hasAI = false;\n+      if (mlManager.hasProgress) {\n+        this.#setProgress();\n+      } else {\n+        mlManager = null;\n+      }\n+    } else {\n+      this.#downloadModel.classList.toggle(\"hidden\", true);\n+    }\n+    const isAltTextEnabledPromise = mlManager?.isEnabledFor(\"altText\");\n+    this.#currentEditor = editor;\n+    this.#uiManager = uiManager;\n+    this.#uiManager.removeEditListeners();\n+    ({\n+      altText: this.#previousAltText\n+    } = editor.altTextData);\n+    this.#textarea.value = this.#previousAltText ?? \"\";\n+    const AI_MAX_IMAGE_DIMENSION = 224;\n+    const MAX_PREVIEW_DIMENSION = 180;\n+    let canvas, width, height;\n+    if (mlManager) {\n+      ({\n+        canvas,\n+        width,\n+        height,\n+        imageData: this.#imageData\n+      } = editor.copyCanvas(AI_MAX_IMAGE_DIMENSION, MAX_PREVIEW_DIMENSION, true));\n+      if (hasAI) {\n+        this.#toggleGuessAltText(await isAltTextEnabledPromise, true);\n+      }\n+    } else {\n+      ({\n+        canvas,\n+        width,\n+        height\n+      } = editor.copyCanvas(AI_MAX_IMAGE_DIMENSION, MAX_PREVIEW_DIMENSION, false));\n+    }\n+    canvas.setAttribute(\"role\", \"presentation\");\n+    const {\n+      style\n+    } = canvas;\n+    style.width = `${width}px`;\n+    style.height = `${height}px`;\n+    this.#imagePreview.append(canvas);\n+    this.#toggleNotNow();\n+    this.#toggleAI(hasAI);\n+    this.#toggleError(false);\n+    try {\n+      await this.#overlayManager.open(this.#dialog);\n+    } catch (ex) {\n+      this.#close();\n+      throw ex;\n+    }\n+  }\n+  #cancel() {\n+    this.#currentEditor.altTextData = {\n+      cancel: true\n+    };\n+    const altText = this.#textarea.value.trim();\n+    this.#currentEditor._reportTelemetry({\n+      action: \"pdfjs.image.alt_text.dismiss\",\n+      data: {\n+        alt_text_type: altText ? \"present\" : \"empty\",\n+        flow: this.#firstTime ? \"image_add\" : \"alt_text_edit\"\n+      }\n+    });\n+    this.#currentEditor._reportTelemetry({\n+      action: \"pdfjs.image.image_added\",\n+      data: {\n+        alt_text_modal: true,\n+        alt_text_type: \"skipped\"\n+      }\n+    });\n+    this.#finish();\n+  }\n+  #finish() {\n+    this.#overlayManager.closeIfActive(this.#dialog);\n+  }\n+  #close() {\n+    const canvas = this.#imagePreview.firstChild;\n+    canvas.remove();\n+    canvas.width = canvas.height = 0;\n+    this.#imageData = null;\n+    this.#toggleLoading(false);\n+    this.#uiManager?.addEditListeners();\n+    this.#currentEditor.altTextFinish();\n+    this.#uiManager?.setSelected(this.#currentEditor);\n+    this.#currentEditor = null;\n+    this.#uiManager = null;\n+  }\n+  #extractWords(text) {\n+    return new Set(text.toLowerCase().split(\u002F[^\\p{L}\\p{N}]+\u002Fgu).filter(x => !!x));\n+  }\n+  #save() {\n+    const altText = this.#textarea.value.trim();\n+    this.#currentEditor.altTextData = {\n+      altText,\n+      decorative: false\n+    };\n+    this.#currentEditor.altTextData.guessedAltText = this.#guessedAltText;\n+    if (this.#guessedAltText && this.#guessedAltText !== altText) {\n+      const guessedWords = this.#extractWords(this.#guessedAltText);\n+      const words = this.#extractWords(altText);\n+      this.#currentEditor._reportTelemetry({\n+        action: \"pdfjs.image.alt_text.user_edit\",\n+        data: {\n+          total_words: guessedWords.size,\n+          words_removed: guessedWords.difference(words).size,\n+          words_added: words.difference(guessedWords).size\n+        }\n+      });\n+    }\n+    this.#currentEditor._reportTelemetry({\n+      action: \"pdfjs.image.image_added\",\n+      data: {\n+        alt_text_modal: true,\n+        alt_text_type: altText ? \"present\" : \"empty\"\n+      }\n+    });\n+    this.#currentEditor._reportTelemetry({\n+      action: \"pdfjs.image.alt_text.save\",\n+      data: {\n+        alt_text_type: altText ? \"present\" : \"empty\",\n+        flow: this.#firstTime ? \"image_add\" : \"alt_text_edit\"\n+      }\n+    });\n+    this.#finish();\n+  }\n+  destroy() {\n+    this.#uiManager = null;\n+    this.#finish();\n+  }\n+}\n+class ImageAltTextSettings {\n+  #aiModelSettings;\n+  #createModelButton;\n+  #downloadModelButton;\n+  #dialog;\n+  #eventBus;\n+  #mlManager;\n+  #overlayManager;\n+  #showAltTextDialogButton;\n+  constructor({\n+    dialog,\n+    createModelButton,\n+    aiModelSettings,\n+    learnMore,\n+    closeButton,\n+    deleteModelButton,\n+    downloadModelButton,\n+    showAltTextDialogButton\n+  }, overlayManager, eventBus, mlManager) {\n+    this.#dialog = dialog;\n+    this.#aiModelSettings = aiModelSettings;\n+    this.#createModelButton = createModelButton;\n+    this.#downloadModelButton = downloadModelButton;\n+    this.#showAltTextDialogButton = showAltTextDialogButton;\n+    this.#overlayManager = overlayManager;\n+    this.#eventBus = eventBus;\n+    this.#mlManager = mlManager;\n+    const {\n+      altTextLearnMoreUrl\n+    } = mlManager;\n+    if (altTextLearnMoreUrl) {\n+      learnMore.href = altTextLearnMoreUrl;\n+    }\n+    dialog.addEventListener(\"contextmenu\", noContextMenu);\n+    createModelButton.addEventListener(\"click\", async e => {\n+      const checked = this.#togglePref(\"enableGuessAltText\", e);\n+      await mlManager.toggleService(\"altText\", checked);\n+      this.#reportTelemetry({\n+        type: \"stamp\",\n+        action: \"pdfjs.image.alt_text.settings_ai_generation_check\",\n+        data: {\n+          status: checked\n+        }\n+      });\n+    });\n+    showAltTextDialogButton.addEventListener(\"click\", e => {\n+      const checked = this.#togglePref(\"enableNewAltTextWhenAddingImage\", e);\n+      this.#reportTelemetry({\n+        type: \"stamp\",\n+        action: \"pdfjs.image.alt_text.settings_edit_alt_text_check\",\n+        data: {\n+          status: checked\n+        }\n+      });\n+    });\n+    deleteModelButton.addEventListener(\"click\", this.#delete.bind(this, true));\n+    downloadModelButton.addEventListener(\"click\", this.#download.bind(this, true));\n+    closeButton.addEventListener(\"click\", this.#finish.bind(this));\n+    learnMore.addEventListener(\"click\", () => {\n+      this.#reportTelemetry({\n+        type: \"stamp\",\n+        action: \"pdfjs.image.alt_text.info\",\n+        data: {\n+          topic: \"ai_generation\"\n+        }\n+      });\n+    });\n+    eventBus._on(\"enablealttextmodeldownload\", ({\n+      value\n+    }) => {\n+      if (value) {\n+        this.#download(false);\n+      } else {\n+        this.#delete(false);\n+      }\n+    });\n+    this.#overlayManager.register(dialog);\n+  }\n+  #reportTelemetry(data) {\n+    this.#eventBus.dispatch(\"reporttelemetry\", {\n+      source: this,\n+      details: {\n+        type: \"editing\",\n+        data\n+      }\n+    });\n+  }\n+  async #download(isFromUI = false) {\n+    if (isFromUI) {\n+      this.#downloadModelButton.disabled = true;\n+      const span = this.#downloadModelButton.firstChild;\n+      span.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-settings-downloading-model-button\");\n+      await this.#mlManager.downloadModel(\"altText\");\n+      span.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-settings-download-model-button\");\n+      this.#createModelButton.disabled = false;\n+      this.#setPref(\"enableGuessAltText\", true);\n+      this.#mlManager.toggleService(\"altText\", true);\n+      this.#setPref(\"enableAltTextModelDownload\", true);\n+      this.#downloadModelButton.disabled = false;\n+    }\n+    this.#aiModelSettings.classList.toggle(\"download\", false);\n+    this.#createModelButton.setAttribute(\"aria-pressed\", true);\n+  }\n+  async #delete(isFromUI = false) {\n+    if (isFromUI) {\n+      await this.#mlManager.deleteModel(\"altText\");\n+      this.#setPref(\"enableGuessAltText\", false);\n+      this.#setPref(\"enableAltTextModelDownload\", false);\n+    }\n+    this.#aiModelSettings.classList.toggle(\"download\", true);\n+    this.#createModelButton.disabled = true;\n+    this.#createModelButton.setAttribute(\"aria-pressed\", false);\n+  }\n+  async open({\n+    enableGuessAltText,\n+    enableNewAltTextWhenAddingImage\n+  }) {\n+    const {\n+      enableAltTextModelDownload\n+    } = this.#mlManager;\n+    this.#createModelButton.disabled = !enableAltTextModelDownload;\n+    this.#createModelButton.setAttribute(\"aria-pressed\", enableAltTextModelDownload && enableGuessAltText);\n+    this.#showAltTextDialogButton.setAttribute(\"aria-pressed\", enableNewAltTextWhenAddingImage);\n+    this.#aiModelSettings.classList.toggle(\"download\", !enableAltTextModelDownload);\n+    await this.#overlayManager.open(this.#dialog);\n+    this.#reportTelemetry({\n+      type: \"stamp\",\n+      action: \"pdfjs.image.alt_text.settings_displayed\"\n+    });\n+  }\n+  #togglePref(name, {\n+    target\n+  }) {\n+    const checked = target.getAttribute(\"aria-pressed\") !== \"true\";\n+    this.#setPref(name, checked);\n+    target.setAttribute(\"aria-pressed\", checked);\n+    return checked;\n+  }\n+  #setPref(name, value) {\n+    this.#eventBus.dispatch(\"setpreference\", {\n+      source: this,\n+      name,\n+      value\n+    });\n+  }\n+  #finish() {\n+    this.#overlayManager.closeIfActive(this.#dialog);\n+  }\n+}\n+\n+;\u002F\u002F .\u002Fweb\u002Falt_text_manager.js\n \n class AltTextManager {\n-  #boundUpdateUIState = this.#updateUIState.bind(this);\n-  #boundSetPosition = this.#setPosition.bind(this);\n-  #boundOnClick = this.#onClick.bind(this);\n+  #clickAC = null;\n   #currentEditor = null;\n   #cancelButton;\n   #dialog;\n@@ -3094,6 +8101,7 @@\n   #textarea;\n   #uiManager;\n   #previousAltText = null;\n+  #resizeAC = null;\n   #svgElement = null;\n   #rectElement = null;\n   #container;\n@@ -3115,6 +8123,7 @@\n     this.#overlayManager = overlayManager;\n     this.#eventBus = eventBus;\n     this.#container = container;\n+    const onUpdateUIState = this.#updateUIState.bind(this);\n     dialog.addEventListener(\"close\", this.#close.bind(this));\n     dialog.addEventListener(\"contextmenu\", event => {\n       if (event.target !== this.#textarea) {\n@@ -3123,13 +8132,10 @@\n     });\n     cancelButton.addEventListener(\"click\", this.#finish.bind(this));\n     saveButton.addEventListener(\"click\", this.#save.bind(this));\n-    optionDescription.addEventListener(\"change\", this.#boundUpdateUIState);\n-    optionDecorative.addEventListener(\"change\", this.#boundUpdateUIState);\n+    optionDescription.addEventListener(\"change\", onUpdateUIState);\n+    optionDecorative.addEventListener(\"change\", onUpdateUIState);\n     this.#overlayManager.register(dialog);\n   }\n-  get _elements() {\n-    return shadow(this, \"_elements\", [this.#optionDescription, this.#optionDecorative, this.#textarea, this.#saveButton, this.#cancelButton]);\n-  }\n   #createSVGElement() {\n     if (this.#svgElement) {\n       return;\n@@ -3162,8 +8168,13 @@\n     }\n     this.#createSVGElement();\n     this.#hasUsedPointer = false;\n-    for (const element of this._elements) {\n-      element.addEventListener(\"click\", this.#boundOnClick);\n+    this.#clickAC = new AbortController();\n+    const clickOpts = {\n+        signal: this.#clickAC.signal\n+      },\n+      onClick = this.#onClick.bind(this);\n+    for (const element of [this.#optionDescription, this.#optionDecorative, this.#textarea, this.#saveButton, this.#cancelButton]) {\n+      element.addEventListener(\"click\", onClick, clickOpts);\n     }\n     const {\n       altText,\n@@ -3181,7 +8192,10 @@\n     this.#currentEditor = editor;\n     this.#uiManager = uiManager;\n     this.#uiManager.removeEditListeners();\n-    this.#eventBus._on(\"resize\", this.#boundSetPosition);\n+    this.#resizeAC = new AbortController();\n+    this.#eventBus._on(\"resize\", this.#setPosition.bind(this), {\n+      signal: this.#resizeAC.signal\n+    });\n     try {\n       await this.#overlayManager.open(this.#dialog);\n       this.#setPosition();\n@@ -3267,9 +8281,7 @@\n     }\n   }\n   #finish() {\n-    if (this.#overlayManager.active === this.#dialog) {\n-      this.#overlayManager.close(this.#dialog);\n-    }\n+    this.#overlayManager.closeIfActive(this.#dialog);\n   }\n   #close() {\n     this.#currentEditor._reportTelemetry(this.#telemetryData || {\n@@ -3279,7 +8291,8 @@\n     this.#telemetryData = null;\n     this.#removeOnClickListeners();\n     this.#uiManager?.addEditListeners();\n-    this.#eventBus._off(\"resize\", this.#boundSetPosition);\n+    this.#resizeAC?.abort();\n+    this.#resizeAC = null;\n     this.#currentEditor.altTextFinish();\n     this.#currentEditor = null;\n     this.#uiManager = null;\n@@ -3311,9 +8324,8 @@\n     this.#removeOnClickListeners();\n   }\n   #removeOnClickListeners() {\n-    for (const element of this._elements) {\n-      element.removeEventListener(\"click\", this.#boundOnClick);\n-    }\n+    this.#clickAC?.abort();\n+    this.#clickAC = null;\n   }\n   destroy() {\n     this.#uiManager = null;\n@@ -3323,7 +8335,7 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fannotation_editor_params.js\n+;\u002F\u002F .\u002Fweb\u002Fannotation_editor_params.js\n \n class AnnotationEditorParams {\n   constructor(options, eventBus) {\n@@ -3338,10 +8350,14 @@\n     editorInkOpacity,\n     editorStampAddImage,\n     editorFreeHighlightThickness,\n-    editorHighlightShowAll\n+    editorHighlightShowAll,\n+    editorSignatureAddSignature\n   }) {\n+    const {\n+      eventBus\n+    } = this;\n     const dispatchEvent = (typeStr, value) => {\n-      this.eventBus.dispatch(\"switchannotationeditorparams\", {\n+      eventBus.dispatch(\"switchannotationeditorparams\", {\n         source: this,\n         type: AnnotationEditorParamsType[typeStr],\n         value\n@@ -3363,6 +8379,15 @@\n       dispatchEvent(\"INK_OPACITY\", this.valueAsNumber);\n     });\n     editorStampAddImage.addEventListener(\"click\", () => {\n+      eventBus.dispatch(\"reporttelemetry\", {\n+        source: this,\n+        details: {\n+          type: \"editing\",\n+          data: {\n+            action: \"pdfjs.image.add_image_click\"\n+          }\n+        }\n+      });\n       dispatchEvent(\"CREATE\");\n     });\n     editorFreeHighlightThickness.addEventListener(\"input\", function () {\n@@ -3373,7 +8398,10 @@\n       this.setAttribute(\"aria-pressed\", !checked);\n       dispatchEvent(\"HIGHLIGHT_SHOW_ALL\", !checked);\n     });\n-    this.eventBus._on(\"annotationeditorparamschanged\", evt => {\n+    editorSignatureAddSignature.addEventListener(\"click\", () => {\n+      dispatchEvent(\"CREATE\");\n+    });\n+    eventBus._on(\"annotationeditorparamschanged\", evt => {\n       for (const [type, value] of evt.details) {\n         switch (type) {\n           case AnnotationEditorParamsType.FREETEXT_SIZE:\n@@ -3391,6 +8419,12 @@\n           case AnnotationEditorParamsType.INK_OPACITY:\n             editorInkOpacity.value = value;\n             break;\n+          case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\n+            eventBus.dispatch(\"mainhighlightcolorpickerupdatecolor\", {\n+              source: this,\n+              value\n+            });\n+            break;\n           case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n             editorFreeHighlightThickness.value = value;\n             break;\n@@ -3406,16 +8440,32 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fcaret_browsing.js\n+;\u002F\u002F .\u002Fweb\u002Fcaret_browsing.js\n+\n const PRECISION = 1e-1;\n class CaretBrowsingMode {\n   #mainContainer;\n-  #toolBarHeight;\n+  #toolBarHeight = 0;\n   #viewerContainer;\n-  constructor(mainContainer, viewerContainer, toolbarContainer) {\n+  constructor(abortSignal, mainContainer, viewerContainer, toolbarContainer) {\n     this.#mainContainer = mainContainer;\n     this.#viewerContainer = viewerContainer;\n-    this.#toolBarHeight = toolbarContainer?.getBoundingClientRect().height ?? 0;\n+    if (!toolbarContainer) {\n+      return;\n+    }\n+    this.#toolBarHeight = toolbarContainer.getBoundingClientRect().height;\n+    const toolbarObserver = new ResizeObserver(entries => {\n+      for (const entry of entries) {\n+        if (entry.target === toolbarContainer) {\n+          this.#toolBarHeight = Math.floor(entry.borderBoxSize[0].blockSize);\n+          break;\n+        }\n+      }\n+    });\n+    toolbarObserver.observe(toolbarContainer);\n+    abortSignal.addEventListener(\"abort\", () => toolbarObserver.disconnect(), {\n+      once: true\n+    });\n   }\n   #isOnSameLine(rect1, rect2) {\n     const top1 = rect1.y;\n@@ -3607,7 +8657,10 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fdownload_manager.js\n+;\u002F\u002F .\u002Fweb\u002Fdownload_manager.js\n+\n+\n+\n \n function download(blobUrl, filename) {\n   const a = document.createElement(\"a\");\n@@ -3625,13 +8678,6 @@\n }\n class DownloadManager {\n   #openBlobUrls = new WeakMap();\n-  downloadUrl(url, filename, _options) {\n-    if (!createValidAbsoluteUrl(url, \"http:\u002F\u002Fexample.com\")) {\n-      console.error(`downloadUrl - not a valid URL: ${url}`);\n-      return;\n-    }\n-    download(url + \"#pdfjs.action=download\", filename);\n-  }\n   downloadData(data, filename, contentType) {\n     const blobUrl = URL.createObjectURL(new Blob([data], {\n       type: contentType\n@@ -3658,7 +8704,7 @@\n         window.open(viewerUrl);\n         return true;\n       } catch (ex) {\n-        console.error(`openOrDownloadData: ${ex}`);\n+        console.error(\"openOrDownloadData:\", ex);\n         URL.revokeObjectURL(blobUrl);\n         this.#openBlobUrls.delete(data);\n       }\n@@ -3666,13 +8712,111 @@\n     this.downloadData(data, filename, contentType);\n     return false;\n   }\n-  download(blob, url, filename, _options) {\n-    const blobUrl = URL.createObjectURL(blob);\n+  download(data, url, filename) {\n+    let blobUrl;\n+    if (data) {\n+      blobUrl = URL.createObjectURL(new Blob([data], {\n+        type: \"application\u002Fpdf\"\n+      }));\n+    } else {\n+      if (!createValidAbsoluteUrl(url, \"http:\u002F\u002Fexample.com\")) {\n+        console.error(`download - not a valid URL: ${url}`);\n+        return;\n+      }\n+      blobUrl = url + \"#pdfjs.action=download\";\n+    }\n     download(blobUrl, filename);\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Foverlay_manager.js\n+;\u002F\u002F .\u002Fweb\u002Feditor_undo_bar.js\n+\n+class EditorUndoBar {\n+  #closeButton = null;\n+  #container;\n+  #eventBus = null;\n+  #focusTimeout = null;\n+  #initController = null;\n+  isOpen = false;\n+  #message;\n+  #showController = null;\n+  #undoButton;\n+  static #l10nMessages = Object.freeze({\n+    highlight: \"pdfjs-editor-undo-bar-message-highlight\",\n+    freetext: \"pdfjs-editor-undo-bar-message-freetext\",\n+    stamp: \"pdfjs-editor-undo-bar-message-stamp\",\n+    ink: \"pdfjs-editor-undo-bar-message-ink\",\n+    signature: \"pdfjs-editor-undo-bar-message-signature\",\n+    _multiple: \"pdfjs-editor-undo-bar-message-multiple\"\n+  });\n+  constructor({\n+    container,\n+    message,\n+    undoButton,\n+    closeButton\n+  }, eventBus) {\n+    this.#container = container;\n+    this.#message = message;\n+    this.#undoButton = undoButton;\n+    this.#closeButton = closeButton;\n+    this.#eventBus = eventBus;\n+  }\n+  destroy() {\n+    this.#initController?.abort();\n+    this.#initController = null;\n+    this.hide();\n+  }\n+  show(undoAction, messageData) {\n+    if (!this.#initController) {\n+      this.#initController = new AbortController();\n+      const opts = {\n+        signal: this.#initController.signal\n+      };\n+      const boundHide = this.hide.bind(this);\n+      this.#container.addEventListener(\"contextmenu\", noContextMenu, opts);\n+      this.#closeButton.addEventListener(\"click\", boundHide, opts);\n+      this.#eventBus._on(\"beforeprint\", boundHide, opts);\n+      this.#eventBus._on(\"download\", boundHide, opts);\n+    }\n+    this.hide();\n+    if (typeof messageData === \"string\") {\n+      this.#message.setAttribute(\"data-l10n-id\", EditorUndoBar.#l10nMessages[messageData]);\n+    } else {\n+      this.#message.setAttribute(\"data-l10n-id\", EditorUndoBar.#l10nMessages._multiple);\n+      this.#message.setAttribute(\"data-l10n-args\", JSON.stringify({\n+        count: messageData\n+      }));\n+    }\n+    this.isOpen = true;\n+    this.#container.hidden = false;\n+    this.#showController = new AbortController();\n+    this.#undoButton.addEventListener(\"click\", () => {\n+      undoAction();\n+      this.hide();\n+    }, {\n+      signal: this.#showController.signal\n+    });\n+    this.#focusTimeout = setTimeout(() => {\n+      this.#container.focus();\n+      this.#focusTimeout = null;\n+    }, 100);\n+  }\n+  hide() {\n+    if (!this.isOpen) {\n+      return;\n+    }\n+    this.isOpen = false;\n+    this.#container.hidden = true;\n+    this.#showController?.abort();\n+    this.#showController = null;\n+    if (this.#focusTimeout) {\n+      clearTimeout(this.#focusTimeout);\n+      this.#focusTimeout = null;\n+    }\n+  }\n+}\n+\n+;\u002F\u002F .\u002Fweb\u002Foverlay_manager.js\n class OverlayManager {\n   #overlays = new WeakMap();\n   #active = null;\n@@ -3688,8 +8832,12 @@\n     this.#overlays.set(dialog, {\n       canForceClose\n     });\n-    dialog.addEventListener(\"cancel\", evt => {\n-      this.#active = null;\n+    dialog.addEventListener(\"cancel\", ({\n+      target\n+    }) => {\n+      if (this.#active === target) {\n+        this.#active = null;\n+      }\n     });\n   }\n   async open(dialog) {\n@@ -3718,9 +8866,15 @@\n     dialog.close();\n     this.#active = null;\n   }\n+  async closeIfActive(dialog) {\n+    if (this.#active === dialog) {\n+      await this.close(dialog);\n+    }\n+  }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fpassword_prompt.js\n+;\u002F\u002F .\u002Fweb\u002Fpassword_prompt.js\n+\n \n class PasswordPrompt {\n   #activeCapability = null;\n@@ -3757,12 +8911,10 @@\n     if (!this._isViewerEmbedded || passwordIncorrect) {\n       this.input.focus();\n     }\n-    this.label.setAttribute(\"data-l10n-id\", `pdfjs-password-${passwordIncorrect ? \"invalid\" : \"label\"}`);\n+    this.label.setAttribute(\"data-l10n-id\", passwordIncorrect ? \"pdfjs-password-invalid\" : \"pdfjs-password-label\");\n   }\n   async close() {\n-    if (this.overlayManager.active === this.dialog) {\n-      this.overlayManager.close(this.dialog);\n-    }\n+    this.overlayManager.closeIfActive(this.dialog);\n   }\n   #verify() {\n     const password = this.input.value;\n@@ -3792,15 +8944,12 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fbase_tree_viewer.js\n+;\u002F\u002F .\u002Fweb\u002Fbase_tree_viewer.js\n \n const TREEITEM_OFFSET_TOP = -100;\n const TREEITEM_SELECTED_CLASS = \"selected\";\n class BaseTreeViewer {\n   constructor(options) {\n-    if (this.constructor === BaseTreeViewer) {\n-      throw new Error(\"Cannot initialize BaseTreeViewer.\");\n-    }\n     this.container = options.container;\n     this.eventBus = options.eventBus;\n     this._l10n = options.l10n;\n@@ -3891,7 +9040,8 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fpdf_attachment_viewer.js\n+;\u002F\u002F .\u002Fweb\u002Fpdf_attachment_viewer.js\n+\n \n \n class PDFAttachmentViewer extends BaseTreeViewer {\n@@ -3988,40 +9138,41 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fgrab_to_pan.js\n+;\u002F\u002F .\u002Fweb\u002Fgrab_to_pan.js\n+\n const CSS_CLASS_GRAB = \"grab-to-pan-grab\";\n class GrabToPan {\n+  #activateAC = null;\n+  #mouseDownAC = null;\n+  #scrollAC = null;\n   constructor({\n     element\n   }) {\n     this.element = element;\n     this.document = element.ownerDocument;\n-    this.activate = this.activate.bind(this);\n-    this.deactivate = this.deactivate.bind(this);\n-    this.toggle = this.toggle.bind(this);\n-    this._onMouseDown = this.#onMouseDown.bind(this);\n-    this._onMouseMove = this.#onMouseMove.bind(this);\n-    this._endPan = this.#endPan.bind(this);\n     const overlay = this.overlay = document.createElement(\"div\");\n     overlay.className = \"grab-to-pan-grabbing\";\n   }\n   activate() {\n-    if (!this.active) {\n-      this.active = true;\n-      this.element.addEventListener(\"mousedown\", this._onMouseDown, true);\n+    if (!this.#activateAC) {\n+      this.#activateAC = new AbortController();\n+      this.element.addEventListener(\"mousedown\", this.#onMouseDown.bind(this), {\n+        capture: true,\n+        signal: this.#activateAC.signal\n+      });\n       this.element.classList.add(CSS_CLASS_GRAB);\n     }\n   }\n   deactivate() {\n-    if (this.active) {\n-      this.active = false;\n-      this.element.removeEventListener(\"mousedown\", this._onMouseDown, true);\n-      this._endPan();\n+    if (this.#activateAC) {\n+      this.#activateAC.abort();\n+      this.#activateAC = null;\n+      this.#endPan();\n       this.element.classList.remove(CSS_CLASS_GRAB);\n     }\n   }\n   toggle() {\n-    if (this.active) {\n+    if (this.#activateAC) {\n       this.deactivate();\n     } else {\n       this.activate();\n@@ -4045,20 +9196,30 @@\n     this.scrollTopStart = this.element.scrollTop;\n     this.clientXStart = event.clientX;\n     this.clientYStart = event.clientY;\n-    this.document.addEventListener(\"mousemove\", this._onMouseMove, true);\n-    this.document.addEventListener(\"mouseup\", this._endPan, true);\n-    this.element.addEventListener(\"scroll\", this._endPan, true);\n-    event.preventDefault();\n-    event.stopPropagation();\n+    this.#mouseDownAC = new AbortController();\n+    const boundEndPan = this.#endPan.bind(this),\n+      mouseOpts = {\n+        capture: true,\n+        signal: this.#mouseDownAC.signal\n+      };\n+    this.document.addEventListener(\"mousemove\", this.#onMouseMove.bind(this), mouseOpts);\n+    this.document.addEventListener(\"mouseup\", boundEndPan, mouseOpts);\n+    this.#scrollAC = new AbortController();\n+    this.element.addEventListener(\"scroll\", boundEndPan, {\n+      capture: true,\n+      signal: this.#scrollAC.signal\n+    });\n+    stopEvent(event);\n     const focusedElement = document.activeElement;\n     if (focusedElement && !focusedElement.contains(event.target)) {\n       focusedElement.blur();\n     }\n   }\n   #onMouseMove(event) {\n-    this.element.removeEventListener(\"scroll\", this._endPan, true);\n+    this.#scrollAC?.abort();\n+    this.#scrollAC = null;\n     if (!(event.buttons & 1)) {\n-      this._endPan();\n+      this.#endPan();\n       return;\n     }\n     const xDiff = event.clientX - this.clientXStart;\n@@ -4073,14 +9234,15 @@\n     }\n   }\n   #endPan() {\n-    this.element.removeEventListener(\"scroll\", this._endPan, true);\n-    this.document.removeEventListener(\"mousemove\", this._onMouseMove, true);\n-    this.document.removeEventListener(\"mouseup\", this._endPan, true);\n+    this.#mouseDownAC?.abort();\n+    this.#mouseDownAC = null;\n+    this.#scrollAC?.abort();\n+    this.#scrollAC = null;\n     this.overlay.remove();\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fpdf_cursor_tools.js\n+;\u002F\u002F .\u002Fweb\u002Fpdf_cursor_tools.js\n \n \n \n@@ -4106,7 +9268,17 @@\n     if (this.#prevActive !== null) {\n       return;\n     }\n+    this.#switchTool(tool);\n+  }\n+  #switchTool(tool, disabled = false) {\n     if (tool === this.#active) {\n+      if (this.#prevActive !== null) {\n+        this.eventBus.dispatch(\"cursortoolchanged\", {\n+          source: this,\n+          tool,\n+          disabled\n+        });\n+      }\n       return;\n     }\n     const disableActiveTool = () => {\n@@ -4135,7 +9307,8 @@\n     this.#active = tool;\n     this.eventBus.dispatch(\"cursortoolchanged\", {\n       source: this,\n-      tool\n+      tool,\n+      disabled\n     });\n   }\n   #addEventListeners() {\n@@ -4151,15 +9324,13 @@\n     let annotationEditorMode = AnnotationEditorType.NONE,\n       presentationModeState = PresentationModeState.NORMAL;\n     const disableActive = () => {\n-      const prevActive = this.#active;\n-      this.switchTool(CursorTool.SELECT);\n-      this.#prevActive ??= prevActive;\n+      this.#prevActive ??= this.#active;\n+      this.#switchTool(CursorTool.SELECT, true);\n     };\n     const enableActive = () => {\n-      const prevActive = this.#prevActive;\n-      if (prevActive !== null && annotationEditorMode === AnnotationEditorType.NONE && presentationModeState === PresentationModeState.NORMAL) {\n+      if (this.#prevActive !== null && annotationEditorMode === AnnotationEditorType.NONE && presentationModeState === PresentationModeState.NORMAL) {\n+        this.#switchTool(this.#prevActive);\n         this.#prevActive = null;\n-        this.switchTool(prevActive);\n       }\n     };\n     this.eventBus._on(\"annotationeditormodechanged\", ({\n@@ -4190,18 +9361,18 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fpdf_document_properties.js\n+;\u002F\u002F .\u002Fweb\u002Fpdf_document_properties.js\n+\n \n \n-const DEFAULT_FIELD_CONTENT = \"-\";\n const NON_METRIC_LOCALES = [\"en-us\", \"en-lr\", \"my\"];\n const US_PAGE_NAMES = {\n-  \"8.5x11\": \"letter\",\n-  \"8.5x14\": \"legal\"\n+  \"8.5x11\": \"pdfjs-document-properties-page-size-name-letter\",\n+  \"8.5x14\": \"pdfjs-document-properties-page-size-name-legal\"\n };\n const METRIC_PAGE_NAMES = {\n-  \"297x420\": \"a-three\",\n-  \"210x297\": \"a-four\"\n+  \"297x420\": \"pdfjs-document-properties-page-size-name-a-three\",\n+  \"210x297\": \"pdfjs-document-properties-page-size-name-a-four\"\n };\n function getPageName(size, isPortrait, pageNames) {\n   const width = isPortrait ? size.width : size.height;\n@@ -4214,12 +9385,13 @@\n     dialog,\n     fields,\n     closeButton\n-  }, overlayManager, eventBus, l10n, fileNameLookup) {\n+  }, overlayManager, eventBus, l10n, fileNameLookup, titleLookup) {\n     this.dialog = dialog;\n     this.fields = fields;\n     this.overlayManager = overlayManager;\n     this.l10n = l10n;\n     this._fileNameLookup = fileNameLookup;\n+    this._titleLookup = titleLookup;\n     this.#reset();\n     closeButton.addEventListener(\"click\", this.close.bind(this));\n     this.overlayManager.register(this.dialog);\n@@ -4229,7 +9401,6 @@\n     eventBus._on(\"rotationchanging\", evt => {\n       this._pagesRotation = evt.pagesRotation;\n     });\n-    this._isNonMetricLocale = NON_METRIC_LOCALES.includes(l10n.getLanguage());\n   }\n   async open() {\n     await Promise.all([this.overlayManager.open(this.dialog), this._dataAvailableCapability.promise]);\n@@ -4239,24 +9410,23 @@\n       this.#updateUI();\n       return;\n     }\n-    const {\n+    const [{\n       info,\n+      metadata,\n       contentLength\n-    } = await this.pdfDocument.getMetadata();\n-    const [fileName, fileSize, creationDate, modificationDate, pageSize, isLinearized] = await Promise.all([this._fileNameLookup(), this.#parseFileSize(contentLength), this.#parseDate(info.CreationDate), this.#parseDate(info.ModDate), this.pdfDocument.getPage(currentPageNumber).then(pdfPage => {\n-      return this.#parsePageSize(getPageSizeInches(pdfPage), pagesRotation);\n-    }), this.#parseLinearization(info.IsLinearized)]);\n+    }, pdfPage] = await Promise.all([this.pdfDocument.getMetadata(), this.pdfDocument.getPage(currentPageNumber)]);\n+    const [fileName, fileSize, title, creationDate, modificationDate, pageSize, isLinearized] = await Promise.all([this._fileNameLookup(), this.#parseFileSize(contentLength), this._titleLookup(), this.#parseDate(metadata?.get(\"xmp:createdate\"), info.CreationDate), this.#parseDate(metadata?.get(\"xmp:modifydate\"), info.ModDate), this.#parsePageSize(getPageSizeInches(pdfPage), pagesRotation), this.#parseLinearization(info.IsLinearized)]);\n     this.#fieldData = Object.freeze({\n       fileName,\n       fileSize,\n-      title: info.Title,\n-      author: info.Author,\n-      subject: info.Subject,\n-      keywords: info.Keywords,\n+      title,\n+      author: metadata?.get(\"dc:creator\")?.join(\"\\n\") || info.Author,\n+      subject: metadata?.get(\"dc:subject\")?.join(\"\\n\") || info.Subject,\n+      keywords: metadata?.get(\"pdf:keywords\") || info.Keywords,\n       creationDate,\n       modificationDate,\n-      creator: info.Creator,\n-      producer: info.Producer,\n+      creator: metadata?.get(\"xmp:creatortool\") || info.Creator,\n+      producer: metadata?.get(\"pdf:producer\") || info.Producer,\n       version: info.PDFFormatVersion,\n       pageCount: this.pdfDocument.numPages,\n       pageSize,\n@@ -4282,7 +9452,7 @@\n   setDocument(pdfDocument) {\n     if (this.pdfDocument) {\n       this.#reset();\n-      this.#updateUI(true);\n+      this.#updateUI();\n     }\n     if (!pdfDocument) {\n       return;\n@@ -4297,32 +9467,23 @@\n     this._currentPageNumber = 1;\n     this._pagesRotation = 0;\n   }\n-  #updateUI(reset = false) {\n-    if (reset || !this.#fieldData) {\n-      for (const id in this.fields) {\n-        this.fields[id].textContent = DEFAULT_FIELD_CONTENT;\n-      }\n-      return;\n-    }\n-    if (this.overlayManager.active !== this.dialog) {\n+  #updateUI() {\n+    if (this.#fieldData && this.overlayManager.active !== this.dialog) {\n       return;\n     }\n     for (const id in this.fields) {\n-      const content = this.#fieldData[id];\n-      this.fields[id].textContent = content || content === 0 ? content : DEFAULT_FIELD_CONTENT;\n+      const content = this.#fieldData?.[id];\n+      this.fields[id].textContent = content || content === 0 ? content : \"-\";\n     }\n   }\n-  async #parseFileSize(fileSize = 0) {\n-    const kb = fileSize \u002F 1024,\n+  async #parseFileSize(b = 0) {\n+    const kb = b \u002F 1024,\n       mb = kb \u002F 1024;\n-    if (!kb) {\n-      return undefined;\n-    }\n-    return this.l10n.get(`pdfjs-document-properties-${mb >= 1 ? \"mb\" : \"kb\"}`, {\n-      size_mb: mb >= 1 && (+mb.toPrecision(3)).toLocaleString(),\n-      size_kb: mb \u003C 1 && (+kb.toPrecision(3)).toLocaleString(),\n-      size_b: fileSize.toLocaleString()\n-    });\n+    return kb ? this.l10n.get(mb >= 1 ? \"pdfjs-document-properties-size-mb\" : \"pdfjs-document-properties-size-kb\", {\n+      mb,\n+      kb,\n+      b\n+    }) : undefined;\n   }\n   async #parsePageSize(pageSizeInches, pagesRotation) {\n     if (!pageSizeInches) {\n@@ -4334,7 +9495,8 @@\n         height: pageSizeInches.width\n       };\n     }\n-    const isPortrait = isPortraitOrientation(pageSizeInches);\n+    const isPortrait = isPortraitOrientation(pageSizeInches),\n+      nonMetric = NON_METRIC_LOCALES.includes(this.l10n.getLanguage());\n     let sizeInches = {\n       width: Math.round(pageSizeInches.width * 100) \u002F 100,\n       height: Math.round(pageSizeInches.height * 100) \u002F 100\n@@ -4343,8 +9505,8 @@\n       width: Math.round(pageSizeInches.width * 25.4 * 10) \u002F 10,\n       height: Math.round(pageSizeInches.height * 25.4 * 10) \u002F 10\n     };\n-    let rawName = getPageName(sizeInches, isPortrait, US_PAGE_NAMES) || getPageName(sizeMillimeters, isPortrait, METRIC_PAGE_NAMES);\n-    if (!rawName && !(Number.isInteger(sizeMillimeters.width) && Number.isInteger(sizeMillimeters.height))) {\n+    let nameId = getPageName(sizeInches, isPortrait, US_PAGE_NAMES) || getPageName(sizeMillimeters, isPortrait, METRIC_PAGE_NAMES);\n+    if (!nameId && !(Number.isInteger(sizeMillimeters.width) && Number.isInteger(sizeMillimeters.height))) {\n       const exactMillimeters = {\n         width: pageSizeInches.width * 25.4,\n         height: pageSizeInches.height * 25.4\n@@ -4354,8 +9516,8 @@\n         height: Math.round(sizeMillimeters.height)\n       };\n       if (Math.abs(exactMillimeters.width - intMillimeters.width) \u003C 0.1 && Math.abs(exactMillimeters.height - intMillimeters.height) \u003C 0.1) {\n-        rawName = getPageName(intMillimeters, isPortrait, METRIC_PAGE_NAMES);\n-        if (rawName) {\n+        nameId = getPageName(intMillimeters, isPortrait, METRIC_PAGE_NAMES);\n+        if (nameId) {\n           sizeInches = {\n             width: Math.round(intMillimeters.width \u002F 25.4 * 100) \u002F 100,\n             height: Math.round(intMillimeters.height \u002F 25.4 * 100) \u002F 100\n@@ -4367,31 +9529,34 @@\n     const [{\n       width,\n       height\n-    }, unit, name, orientation] = await Promise.all([this._isNonMetricLocale ? sizeInches : sizeMillimeters, this.l10n.get(`pdfjs-document-properties-page-size-unit-${this._isNonMetricLocale ? \"inches\" : \"millimeters\"}`), rawName && this.l10n.get(`pdfjs-document-properties-page-size-name-${rawName}`), this.l10n.get(`pdfjs-document-properties-page-size-orientation-${isPortrait ? \"portrait\" : \"landscape\"}`)]);\n-    return this.l10n.get(`pdfjs-document-properties-page-size-dimension-${name ? \"name-\" : \"\"}string`, {\n-      width: width.toLocaleString(),\n-      height: height.toLocaleString(),\n+    }, unit, name, orientation] = await Promise.all([nonMetric ? sizeInches : sizeMillimeters, this.l10n.get(nonMetric ? \"pdfjs-document-properties-page-size-unit-inches\" : \"pdfjs-document-properties-page-size-unit-millimeters\"), nameId && this.l10n.get(nameId), this.l10n.get(isPortrait ? \"pdfjs-document-properties-page-size-orientation-portrait\" : \"pdfjs-document-properties-page-size-orientation-landscape\")]);\n+    return this.l10n.get(name ? \"pdfjs-document-properties-page-size-dimension-name-string\" : \"pdfjs-document-properties-page-size-dimension-string\", {\n+      width,\n+      height,\n       unit,\n       name,\n       orientation\n     });\n   }\n-  async #parseDate(inputDate) {\n-    const dateObject = PDFDateString.toDateObject(inputDate);\n-    if (!dateObject) {\n-      return undefined;\n-    }\n-    return this.l10n.get(\"pdfjs-document-properties-date-string\", {\n-      date: dateObject.toLocaleDateString(),\n-      time: dateObject.toLocaleTimeString()\n-    });\n+  async #parseDate(metadataDate, infoDate) {\n+    const dateObj = Date.parse(metadataDate) || PDFDateString.toDateObject(infoDate);\n+    return dateObj ? this.l10n.get(\"pdfjs-document-properties-date-time-string\", {\n+      dateObj: dateObj.valueOf()\n+    }) : undefined;\n   }\n   #parseLinearization(isLinearized) {\n-    return this.l10n.get(`pdfjs-document-properties-linearized-${isLinearized ? \"yes\" : \"no\"}`);\n+    return this.l10n.get(isLinearized ? \"pdfjs-document-properties-linearized-yes\" : \"pdfjs-document-properties-linearized-no\");\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fpdf_find_utils.js\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array-buffer.detached.js\n+var es_array_buffer_detached = __webpack_require__(6573);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array-buffer.transfer.js\n+var es_array_buffer_transfer = __webpack_require__(8100);\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array-buffer.transfer-to-fixed-length.js\n+var es_array_buffer_transfer_to_fixed_length = __webpack_require__(7936);\n+;\u002F\u002F .\u002Fweb\u002Fpdf_find_utils.js\n+\n const CharacterType = {\n   SPACE: 0,\n   ALPHA_LETTER: 1,\n@@ -4465,7 +9630,23 @@\n   return NormalizeWithNFKC;\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fpdf_find_controller.js\n+;\u002F\u002F .\u002Fweb\u002Fpdf_find_controller.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n const FindState = {\n@@ -4519,21 +9700,24 @@\n       syllablePositions.push([len, index++]);\n     }\n   }\n+  const hasSyllables = syllablePositions.length > 0;\n   let normalizationRegex;\n-  if (syllablePositions.length === 0 && noSyllablesRegExp) {\n+  if (!hasSyllables && noSyllablesRegExp) {\n     normalizationRegex = noSyllablesRegExp;\n-  } else if (syllablePositions.length > 0 && withSyllablesRegExp) {\n+  } else if (hasSyllables && withSyllablesRegExp) {\n     normalizationRegex = withSyllablesRegExp;\n   } else {\n     const replace = Object.keys(CHARACTERS_TO_NORMALIZE).join(\"\");\n     const toNormalizeWithNFKC = getNormalizeWithNFKC();\n     const CJK = \"(?:\\\\p{Ideographic}|[\\u3040-\\u30FF])\";\n     const HKDiacritics = \"(?:\\u3099|\\u309A)\";\n-    const regexp = `([${replace}])|([${toNormalizeWithNFKC}])|(${HKDiacritics}\\\\n)|(\\\\p{M}+(?:-\\\\n)?)|(\\\\S-\\\\n)|(${CJK}\\\\n)|(\\\\n)`;\n-    if (syllablePositions.length === 0) {\n-      normalizationRegex = noSyllablesRegExp = new RegExp(regexp + \"|(\\\\u0000)\", \"gum\");\n+    const BrokenWord = `\\\\p{Ll}-\\\\n(?=\\\\p{Ll})|\\\\p{Lu}-\\\\n(?=\\\\p{L})`;\n+    const regexps = [`[${replace}]`, `[${toNormalizeWithNFKC}]`, `${HKDiacritics}\\\\n`, \"\\\\p{M}+(?:-\\\\n)?\", `${BrokenWord}`, \"\\\\S-\\\\n\", `${CJK}\\\\n`, \"\\\\n\", hasSyllables ? FIRST_CHAR_SYLLABLES_REG_EXP : \"\\\\u0000\"];\n+    normalizationRegex = new RegExp(regexps.map(r => `(${r})`).join(\"|\"), \"gum\");\n+    if (hasSyllables) {\n+      withSyllablesRegExp = normalizationRegex;\n     } else {\n-      normalizationRegex = withSyllablesRegExp = new RegExp(regexp + `|(${FIRST_CHAR_SYLLABLES_REG_EXP})`, \"gum\");\n+      noSyllablesRegExp = normalizationRegex;\n     }\n   }\n   const rawDiacriticsPositions = [];\n@@ -4541,20 +9725,20 @@\n     rawDiacriticsPositions.push([m[0].length, m.index]);\n   }\n   let normalized = text.normalize(\"NFD\");\n-  const positions = [[0, 0]];\n+  const positions = [0, 0];\n   let rawDiacriticsIndex = 0;\n   let syllableIndex = 0;\n   let shift = 0;\n   let shiftOrigin = 0;\n   let eol = 0;\n   let hasDiacritics = false;\n-  normalized = normalized.replace(normalizationRegex, (match, p1, p2, p3, p4, p5, p6, p7, p8, i) => {\n+  normalized = normalized.replace(normalizationRegex, (match, p1, p2, p3, p4, p5, p6, p7, p8, p9, i) => {\n     i -= shiftOrigin;\n     if (p1) {\n       const replacement = CHARACTERS_TO_NORMALIZE[p1];\n       const jj = replacement.length;\n       for (let j = 1; j \u003C jj; j++) {\n-        positions.push([i - shift + j, shift - j]);\n+        positions.push(i - shift + j, shift - j);\n       }\n       shift -= jj - 1;\n       return replacement;\n@@ -4567,7 +9751,7 @@\n       }\n       const jj = replacement.length;\n       for (let j = 1; j \u003C jj; j++) {\n-        positions.push([i - shift + j, shift - j]);\n+        positions.push(i - shift + j, shift - j);\n       }\n       shift -= jj - 1;\n       return replacement;\n@@ -4577,11 +9761,11 @@\n       if (i + eol === rawDiacriticsPositions[rawDiacriticsIndex]?.[1]) {\n         ++rawDiacriticsIndex;\n       } else {\n-        positions.push([i - 1 - shift + 1, shift - 1]);\n+        positions.push(i - 1 - shift + 1, shift - 1);\n         shift -= 1;\n         shiftOrigin += 1;\n       }\n-      positions.push([i - shift + 1, shift]);\n+      positions.push(i - shift + 1, shift);\n       shiftOrigin += 1;\n       eol += 1;\n       return p3.charAt(0);\n@@ -4596,13 +9780,13 @@\n         ++rawDiacriticsIndex;\n       }\n       for (let j = 1; j \u003C= jj; j++) {\n-        positions.push([i - 1 - shift + j, shift - j]);\n+        positions.push(i - 1 - shift + j, shift - j);\n       }\n       shift -= jj;\n       shiftOrigin += jj;\n       if (hasTrailingDashEOL) {\n         i += len - 1;\n-        positions.push([i - shift + 1, 1 + shift]);\n+        positions.push(i - shift + 1, 1 + shift);\n         shift += 1;\n         shiftOrigin += 1;\n         eol += 1;\n@@ -4612,21 +9796,26 @@\n     }\n     if (p5) {\n       const len = p5.length - 2;\n-      positions.push([i - shift + len, 1 + shift]);\n+      positions.push(i - shift + len, 1 + shift);\n       shift += 1;\n       shiftOrigin += 1;\n       eol += 1;\n       return p5.slice(0, -2);\n     }\n     if (p6) {\n-      const len = p6.length - 1;\n-      positions.push([i - shift + len, shift]);\n       shiftOrigin += 1;\n       eol += 1;\n       return p6.slice(0, -1);\n     }\n     if (p7) {\n-      positions.push([i - shift + 1, shift - 1]);\n+      const len = p7.length - 1;\n+      positions.push(i - shift + len, shift);\n+      shiftOrigin += 1;\n+      eol += 1;\n+      return p7.slice(0, -1);\n+    }\n+    if (p8) {\n+      positions.push(i - shift + 1, shift - 1);\n       shift -= 1;\n       shiftOrigin += 1;\n       eol += 1;\n@@ -4636,32 +9825,39 @@\n       const newCharLen = syllablePositions[syllableIndex][0] - 1;\n       ++syllableIndex;\n       for (let j = 1; j \u003C= newCharLen; j++) {\n-        positions.push([i - (shift - j), shift - j]);\n+        positions.push(i - (shift - j), shift - j);\n       }\n       shift -= newCharLen;\n       shiftOrigin += newCharLen;\n     }\n-    return p8;\n+    return p9;\n   });\n-  positions.push([normalized.length, shift]);\n-  return [normalized, positions, hasDiacritics];\n+  positions.push(normalized.length, shift);\n+  const starts = new Uint32Array(positions.length >> 1);\n+  const shifts = new Int32Array(positions.length >> 1);\n+  for (let i = 0, ii = positions.length; i \u003C ii; i += 2) {\n+    starts[i >> 1] = positions[i];\n+    shifts[i >> 1] = positions[i + 1];\n+  }\n+  return [normalized, [starts, shifts], hasDiacritics];\n }\n function getOriginalIndex(diffs, pos, len) {\n   if (!diffs) {\n     return [pos, len];\n   }\n+  const [starts, shifts] = diffs;\n   const start = pos;\n   const end = pos + len - 1;\n-  let i = binarySearchFirstItem(diffs, x => x[0] >= start);\n-  if (diffs[i][0] > start) {\n+  let i = binarySearchFirstItem(starts, x => x >= start);\n+  if (starts[i] > start) {\n     --i;\n   }\n-  let j = binarySearchFirstItem(diffs, x => x[0] >= end, i);\n-  if (diffs[j][0] > end) {\n+  let j = binarySearchFirstItem(starts, x => x >= end, i);\n+  if (starts[j] > end) {\n     --j;\n   }\n-  const oldStart = start + diffs[i][1];\n-  const oldEnd = end + diffs[j][1];\n+  const oldStart = start + shifts[i];\n+  const oldEnd = end + shifts[j];\n   const oldLen = oldEnd + 1 - oldStart;\n   return [oldStart, oldLen];\n }\n@@ -4864,25 +10060,6 @@\n     }\n     return true;\n   }\n-  #calculateRegExpMatch(query, entireWord, pageIndex, pageContent) {\n-    const matches = this._pageMatches[pageIndex] = [];\n-    const matchesLength = this._pageMatchesLength[pageIndex] = [];\n-    if (!query) {\n-      return;\n-    }\n-    const diffs = this._pageDiffs[pageIndex];\n-    let match;\n-    while ((match = query.exec(pageContent)) !== null) {\n-      if (entireWord && !this.#isEntireWord(pageContent, match.index, match[0].length)) {\n-        continue;\n-      }\n-      const [matchPos, matchLen] = getOriginalIndex(diffs, match.index, match[0].length);\n-      if (matchLen) {\n-        matches.push(matchPos);\n-        matchesLength.push(matchLen);\n-      }\n-    }\n-  }\n   #convertToRegExpString(query, hasDiacritics) {\n     const {\n       matchDiacritics\n@@ -4924,29 +10101,28 @@\n     return [isUnicode, query];\n   }\n   #calculateMatch(pageIndex) {\n-    let query = this.#query;\n+    if (!this.#state) {\n+      return;\n+    }\n+    const query = this.#query;\n     if (query.length === 0) {\n       return;\n     }\n-    const {\n-      caseSensitive,\n-      entireWord\n-    } = this.#state;\n     const pageContent = this._pageContents[pageIndex];\n-    const hasDiacritics = this._hasDiacritics[pageIndex];\n-    let isUnicode = false;\n-    if (typeof query === \"string\") {\n-      [isUnicode, query] = this.#convertToRegExpString(query, hasDiacritics);\n-    } else {\n-      query = query.sort().reverse().map(q => {\n-        const [isUnicodePart, queryPart] = this.#convertToRegExpString(q, hasDiacritics);\n-        isUnicode ||= isUnicodePart;\n-        return `(${queryPart})`;\n-      }).join(\"|\");\n-    }\n-    const flags = `g${isUnicode ? \"u\" : \"\"}${caseSensitive ? \"\" : \"i\"}`;\n-    query = query ? new RegExp(query, flags) : null;\n-    this.#calculateRegExpMatch(query, entireWord, pageIndex, pageContent);\n+    const matcherResult = this.match(query, pageContent, pageIndex);\n+    const matches = this._pageMatches[pageIndex] = [];\n+    const matchesLength = this._pageMatchesLength[pageIndex] = [];\n+    const diffs = this._pageDiffs[pageIndex];\n+    matcherResult?.forEach(({\n+      index,\n+      length\n+    }) => {\n+      const [matchPos, matchLen] = getOriginalIndex(diffs, index, length);\n+      if (matchLen) {\n+        matches.push(matchPos);\n+        matchesLength.push(matchLen);\n+      }\n+    });\n     if (this.#state.highlightAll) {\n       this.#updatePage(pageIndex);\n     }\n@@ -4954,7 +10130,7 @@\n       this._resumePageIdx = null;\n       this.#nextPageMatch();\n     }\n-    const pageMatchesCount = this._pageMatches[pageIndex].length;\n+    const pageMatchesCount = matches.length;\n     this._matchesCountTotal += pageMatchesCount;\n     if (this.#updateMatchesCountOnProgress) {\n       if (pageMatchesCount > 0) {\n@@ -4964,6 +10140,40 @@\n       this.#updateUIResultsCount();\n     }\n   }\n+  match(query, pageContent, pageIndex) {\n+    const hasDiacritics = this._hasDiacritics[pageIndex];\n+    let isUnicode = false;\n+    if (typeof query === \"string\") {\n+      [isUnicode, query] = this.#convertToRegExpString(query, hasDiacritics);\n+    } else {\n+      query = query.sort().reverse().map(q => {\n+        const [isUnicodePart, queryPart] = this.#convertToRegExpString(q, hasDiacritics);\n+        isUnicode ||= isUnicodePart;\n+        return `(${queryPart})`;\n+      }).join(\"|\");\n+    }\n+    if (!query) {\n+      return undefined;\n+    }\n+    const {\n+      caseSensitive,\n+      entireWord\n+    } = this.#state;\n+    const flags = `g${isUnicode ? \"u\" : \"\"}${caseSensitive ? \"\" : \"i\"}`;\n+    query = new RegExp(query, flags);\n+    const matches = [];\n+    let match;\n+    while ((match = query.exec(pageContent)) !== null) {\n+      if (entireWord && !this.#isEntireWord(pageContent, match.index, match[0].length)) {\n+        continue;\n+      }\n+      matches.push({\n+        index: match.index,\n+        length: match[0].length\n+      });\n+    }\n+    return matches;\n+  }\n   #extractText() {\n     if (this._extractTextPromises.length > 0) {\n       return;\n@@ -4972,14 +10182,19 @@\n     const textOptions = {\n       disableNormalization: true\n     };\n+    const pdfDoc = this._pdfDocument;\n     for (let i = 0, ii = this._linkService.pagesCount; i \u003C ii; i++) {\n       const {\n         promise,\n         resolve\n       } = Promise.withResolvers();\n       this._extractTextPromises[i] = promise;\n-      deferred = deferred.then(() => {\n-        return this._pdfDocument.getPage(i + 1).then(pdfPage => pdfPage.getTextContent(textOptions)).then(textContent => {\n+      deferred = deferred.then(async () => {\n+        if (pdfDoc !== this._pdfDocument) {\n+          resolve();\n+          return;\n+        }\n+        await pdfDoc.getPage(i + 1).then(pdfPage => pdfPage.getTextContent(textOptions)).then(textContent => {\n           const strBuf = [];\n           for (const textItem of textContent.items) {\n             strBuf.push(textItem.str);\n@@ -5180,19 +10395,21 @@\n       source: this,\n       state,\n       previous,\n+      entireWord: this.#state?.entireWord ?? null,\n       matchesCount: this.#requestMatchesCount(),\n       rawQuery: this.#state?.query ?? null\n     });\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fpdf_find_bar.js\n+;\u002F\u002F .\u002Fweb\u002Fpdf_find_bar.js\n \n \n const MATCHES_COUNT_LIMIT = 1000;\n class PDFFindBar {\n+  #mainContainer;\n   #resizeObserver = new ResizeObserver(this.#resizeObserverCallback.bind(this));\n-  constructor(options, eventBus) {\n+  constructor(options, mainContainer, eventBus) {\n     this.opened = false;\n     this.bar = options.bar;\n     this.toggleButton = options.toggleButton;\n@@ -5206,17 +10423,26 @@\n     this.findPreviousButton = options.findPreviousButton;\n     this.findNextButton = options.findNextButton;\n     this.eventBus = eventBus;\n+    this.#mainContainer = mainContainer;\n+    const checkedInputs = new Map([[this.highlightAll, \"highlightallchange\"], [this.caseSensitive, \"casesensitivitychange\"], [this.entireWord, \"entirewordchange\"], [this.matchDiacritics, \"diacriticmatchingchange\"]]);\n     this.toggleButton.addEventListener(\"click\", () => {\n       this.toggle();\n     });\n     this.findField.addEventListener(\"input\", () => {\n       this.dispatchEvent(\"\");\n     });\n-    this.bar.addEventListener(\"keydown\", e => {\n-      switch (e.keyCode) {\n+    this.bar.addEventListener(\"keydown\", ({\n+      keyCode,\n+      shiftKey,\n+      target\n+    }) => {\n+      switch (keyCode) {\n         case 13:\n-          if (e.target === this.findField) {\n-            this.dispatchEvent(\"again\", e.shiftKey);\n+          if (target === this.findField) {\n+            this.dispatchEvent(\"again\", shiftKey);\n+          } else if (checkedInputs.has(target)) {\n+            target.checked = !target.checked;\n+            this.dispatchEvent(checkedInputs.get(target));\n           }\n           break;\n         case 27:\n@@ -5230,18 +10456,11 @@\n     this.findNextButton.addEventListener(\"click\", () => {\n       this.dispatchEvent(\"again\", false);\n     });\n-    this.highlightAll.addEventListener(\"click\", () => {\n-      this.dispatchEvent(\"highlightallchange\");\n-    });\n-    this.caseSensitive.addEventListener(\"click\", () => {\n-      this.dispatchEvent(\"casesensitivitychange\");\n-    });\n-    this.entireWord.addEventListener(\"click\", () => {\n-      this.dispatchEvent(\"entirewordchange\");\n-    });\n-    this.matchDiacritics.addEventListener(\"click\", () => {\n-      this.dispatchEvent(\"diacriticmatchingchange\");\n-    });\n+    for (const [elem, evtName] of checkedInputs) {\n+      elem.addEventListener(\"click\", () => {\n+        this.dispatchEvent(evtName);\n+      });\n+    }\n   }\n   reset() {\n     this.updateUIState();\n@@ -5276,7 +10495,7 @@\n         status = \"notFound\";\n         break;\n       case FindState.WRAPPED:\n-        findMsgId = `pdfjs-find-reached-${previous ? \"top\" : \"bottom\"}`;\n+        findMsgId = previous ? \"pdfjs-find-reached-top\" : \"pdfjs-find-reached-bottom\";\n         break;\n     }\n     findField.setAttribute(\"data-status\", status);\n@@ -5299,7 +10518,7 @@\n     } = this;\n     if (total > 0) {\n       const limit = MATCHES_COUNT_LIMIT;\n-      findResultsCount.setAttribute(\"data-l10n-id\", `pdfjs-find-match-count${total > limit ? \"-limit\" : \"\"}`);\n+      findResultsCount.setAttribute(\"data-l10n-id\", total > limit ? \"pdfjs-find-match-count-limit\" : \"pdfjs-find-match-count\");\n       findResultsCount.setAttribute(\"data-l10n-args\", JSON.stringify({\n         limit,\n         current,\n@@ -5312,7 +10531,7 @@\n   }\n   open() {\n     if (!this.opened) {\n-      this.#resizeObserver.observe(this.bar.parentNode);\n+      this.#resizeObserver.observe(this.#mainContainer);\n       this.#resizeObserver.observe(this.bar);\n       this.opened = true;\n       toggleExpandedBtn(this.toggleButton, true, this.bar);\n@@ -5338,7 +10557,7 @@\n       this.open();\n     }\n   }\n-  #resizeObserverCallback(entries) {\n+  #resizeObserverCallback() {\n     const {\n       bar\n     } = this;\n@@ -5351,7 +10570,8 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fpdf_history.js\n+;\u002F\u002F .\u002Fweb\u002Fpdf_history.js\n+\n \n \n const HASH_CHANGE_TIMEOUT = 1000;\n@@ -5566,9 +10786,12 @@\n     this.#updateInternalState(destination, newState.uid);\n     let newUrl;\n     if (this._updateUrl && destination?.hash) {\n-      const baseUrl = document.location.href.split(\"#\", 1)[0];\n-      if (!baseUrl.startsWith(\"file:\u002F\u002F\")) {\n-        newUrl = `${baseUrl}#${destination.hash}`;\n+      const {\n+        href,\n+        protocol\n+      } = document.location;\n+      if (protocol !== \"file:\") {\n+        newUrl = updateUrlHash(href, destination.hash);\n       }\n     }\n     if (shouldReplace) {\n@@ -5818,7 +11041,8 @@\n   return true;\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fpdf_layer_viewer.js\n+;\u002F\u002F .\u002Fweb\u002Fpdf_layer_viewer.js\n+\n \n class PDFLayerViewer extends BaseTreeViewer {\n   constructor(options) {\n@@ -5834,7 +11058,8 @@\n   reset() {\n     super.reset();\n     this._optionalContentConfig = null;\n-    this._optionalContentHash = null;\n+    this._optionalContentVisibility?.clear();\n+    this._optionalContentVisibility = null;\n   }\n   _dispatchEvent(layersCount) {\n     this.eventBus.dispatch(\"layersloaded\", {\n@@ -5847,8 +11072,12 @@\n     input\n   }) {\n     const setVisibility = () => {\n-      this._optionalContentConfig.setVisibility(groupId, input.checked);\n-      this._optionalContentHash = this._optionalContentConfig.getHash();\n+      const visible = input.checked;\n+      this._optionalContentConfig.setVisibility(groupId, visible);\n+      const cached = this._optionalContentVisibility.get(groupId);\n+      if (cached) {\n+        cached.visible = visible;\n+      }\n       this.eventBus.dispatch(\"optionalcontentconfig\", {\n         source: this,\n         promise: Promise.resolve(this._optionalContentConfig)\n@@ -5866,15 +11095,16 @@\n       return false;\n     };\n   }\n-  async _setNestedName(element, {\n+  _setNestedName(element, {\n     name = null\n   }) {\n     if (typeof name === \"string\") {\n       element.textContent = this._normalizeTextContent(name);\n       return;\n     }\n-    element.textContent = await this._l10n.get(\"pdfjs-additional-layers\");\n+    element.setAttribute(\"data-l10n-id\", \"pdfjs-additional-layers\");\n     element.style.fontStyle = \"italic\";\n+    this._l10n.translateOnce(element);\n   }\n   _addToggleButton(div, {\n     name = null\n@@ -5901,7 +11131,7 @@\n       this._dispatchEvent(0);\n       return;\n     }\n-    this._optionalContentHash = optionalContentConfig.getHash();\n+    this._optionalContentVisibility = new Map();\n     const fragment = document.createDocumentFragment(),\n       queue = [{\n         parent: fragment,\n@@ -5936,6 +11166,10 @@\n           });\n           input.type = \"checkbox\";\n           input.checked = group.visible;\n+          this._optionalContentVisibility.set(groupId, {\n+            input,\n+            visible: input.checked\n+          });\n           const label = document.createElement(\"label\");\n           label.textContent = this._normalizeTextContent(group.name);\n           label.append(input);\n@@ -5959,15 +11193,18 @@\n       return;\n     }\n     if (promise) {\n-      if (optionalContentConfig.getHash() === this._optionalContentHash) {\n-        return;\n+      for (const [groupId, cached] of this._optionalContentVisibility) {\n+        const group = optionalContentConfig.getGroup(groupId);\n+        if (group && cached.visible !== group.visible) {\n+          cached.input.checked = cached.visible = !cached.visible;\n+        }\n       }\n-    } else {\n-      this.eventBus.dispatch(\"optionalcontentconfig\", {\n-        source: this,\n-        promise: Promise.resolve(optionalContentConfig)\n-      });\n+      return;\n     }\n+    this.eventBus.dispatch(\"optionalcontentconfig\", {\n+      source: this,\n+      promise: Promise.resolve(optionalContentConfig)\n+    });\n     this.render({\n       optionalContentConfig,\n       pdfDocument: this._pdfDocument\n@@ -5975,7 +11212,9 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fpdf_outline_viewer.js\n+;\u002F\u002F .\u002Fweb\u002Fpdf_outline_viewer.js\n+\n+\n \n \n class PDFOutlineViewer extends BaseTreeViewer {\n@@ -6237,7 +11476,7 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fpdf_presentation_mode.js\n+;\u002F\u002F .\u002Fweb\u002Fpdf_presentation_mode.js\n \n \n const DELAY_BEFORE_HIDING_CONTROLS = 3000;\n@@ -6530,7 +11769,9 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fxfa_layer_builder.js\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.every.js\n+var es_iterator_every = __webpack_require__(1148);\n+;\u002F\u002F .\u002Fweb\u002Fxfa_layer_builder.js\n \n class XfaLayerBuilder {\n   constructor({\n@@ -6546,7 +11787,10 @@\n     this.div = null;\n     this._cancelled = false;\n   }\n-  async render(viewport, intent = \"display\") {\n+  async render({\n+    viewport,\n+    intent = \"display\"\n+  }) {\n     if (intent === \"print\") {\n       const parameters = {\n         viewport: viewport.clone({\n@@ -6596,7 +11840,7 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fprint_utils.js\n+;\u002F\u002F .\u002Fweb\u002Fprint_utils.js\n \n \n \n@@ -6617,12 +11861,21 @@\n     const viewport = getXfaPageViewport(xfaPage, {\n       scale\n     });\n-    builder.render(viewport, \"print\");\n+    builder.render({\n+      viewport,\n+      intent: \"print\"\n+    });\n     page.append(builder.div);\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fpdf_print_service.js\n+;\u002F\u002F .\u002Fweb\u002Fpdf_print_service.js\n+\n+\n+\n+\n+\n+\n \n \n let activeService = null;\n@@ -6713,9 +11966,7 @@\n     this.scratchCanvas = null;\n     activeService = null;\n     ensureOverlay().then(function () {\n-      if (overlayManager.active === dialog) {\n-        overlayManager.close(dialog);\n-      }\n+      overlayManager.closeIfActive(dialog);\n     });\n   }\n   renderPages() {\n@@ -6742,22 +11993,24 @@\n   useRenderedPage() {\n     this.throwIfInactive();\n     const img = document.createElement(\"img\");\n-    const scratchCanvas = this.scratchCanvas;\n-    if (\"toBlob\" in scratchCanvas) {\n-      scratchCanvas.toBlob(function (blob) {\n-        img.src = URL.createObjectURL(blob);\n-      });\n-    } else {\n-      img.src = scratchCanvas.toDataURL();\n-    }\n+    this.scratchCanvas.toBlob(blob => {\n+      img.src = URL.createObjectURL(blob);\n+    });\n     const wrapper = document.createElement(\"div\");\n     wrapper.className = \"printedPage\";\n     wrapper.append(img);\n     this.printContainer.append(wrapper);\n-    return new Promise(function (resolve, reject) {\n-      img.onload = resolve;\n-      img.onerror = reject;\n+    const {\n+      promise,\n+      resolve,\n+      reject\n+    } = Promise.withResolvers();\n+    img.onload = resolve;\n+    img.onerror = reject;\n+    promise.catch(() => {}).then(() => {\n+      URL.revokeObjectURL(img.src);\n     });\n+    return promise;\n   }\n   performPrint() {\n     this.throwIfInactive();\n@@ -6798,20 +12051,16 @@\n     if (!activeService) {\n       console.error(\"Expected print service to be initialized.\");\n       ensureOverlay().then(function () {\n-        if (overlayManager.active === dialog) {\n-          overlayManager.close(dialog);\n+        overlayManager.closeIfActive(dialog);\n+      });\n+    } else {\n+      const activeServiceOnEntry = activeService;\n+      activeService.renderPages().then(() => activeServiceOnEntry.performPrint()).catch(() => {}).then(() => {\n+        if (activeServiceOnEntry.active) {\n+          abort();\n         }\n       });\n-      return;\n     }\n-    const activeServiceOnEntry = activeService;\n-    activeService.renderPages().then(function () {\n-      return activeServiceOnEntry.performPrint();\n-    }).catch(function () {}).then(function () {\n-      if (activeServiceOnEntry.active) {\n-        abort();\n-      }\n-    });\n   }\n };\n function dispatchEvent(eventType) {\n@@ -6883,7 +12132,7 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fpdf_rendering_queue.js\n+;\u002F\u002F .\u002Fweb\u002Fpdf_rendering_queue.js\n \n \n const CLEANUP_TIMEOUT = 30000;\n@@ -6927,7 +12176,7 @@\n       this.idleTimeout = setTimeout(this.onIdle.bind(this), CLEANUP_TIMEOUT);\n     }\n   }\n-  getHighestPriority(visible, views, scrolledDown, preRenderExtra = false) {\n+  getHighestPriority(visible, views, scrolledDown, preRenderExtra = false, ignoreDetailViews = false) {\n     const visibleViews = visible.views,\n       numVisible = visibleViews.length;\n     if (numVisible === 0) {\n@@ -6939,6 +12188,16 @@\n         return view;\n       }\n     }\n+    if (!ignoreDetailViews) {\n+      for (let i = 0; i \u003C numVisible; i++) {\n+        const {\n+          detailView\n+        } = visibleViews[i].view;\n+        if (detailView && !this.isViewFinished(detailView)) {\n+          return detailView;\n+        }\n+      }\n+    }\n     const firstId = visible.first.id,\n       lastId = visible.last.id;\n     if (lastId - firstId + 1 > numVisible) {\n@@ -6990,7 +12249,7 @@\n           if (reason instanceof RenderingCancelledException) {\n             return;\n           }\n-          console.error(`renderView: \"${reason}\"`);\n+          console.error(\"renderView:\", reason);\n         });\n         break;\n     }\n@@ -6998,7 +12257,15 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fpdf_scripting_manager.js\n+;\u002F\u002F .\u002Fweb\u002Fpdf_scripting_manager.js\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n class PDFScriptingManager {\n@@ -7044,7 +12311,7 @@\n     try {\n       this.#scripting = this.#initScripting();\n     } catch (error) {\n-      console.error(`setDocument: \"${error.message}\".`);\n+      console.error(\"setDocument:\", error);\n       await this.#destroyScripting();\n       return;\n     }\n@@ -7121,7 +12388,7 @@\n         source: this\n       });\n     } catch (error) {\n-      console.error(`setDocument: \"${error.message}\".`);\n+      console.error(\"setDocument:\", error);\n       await this.#destroyScripting();\n       return;\n     }\n@@ -7363,7 +12630,7 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fpdf_sidebar.js\n+;\u002F\u002F .\u002Fweb\u002Fpdf_sidebar.js\n \n const SIDEBAR_WIDTH_VAR = \"--sidebar-width\";\n const SIDEBAR_MIN_WIDTH = 200;\n@@ -7371,8 +12638,7 @@\n const UI_NOTIFICATION_CLASS = \"pdfSidebarNotification\";\n class PDFSidebar {\n   #isRTL = false;\n-  #mouseMoveBound = this.#mouseMove.bind(this);\n-  #mouseUpBound = this.#mouseUp.bind(this);\n+  #mouseAC = null;\n   #outerContainerWidth = null;\n   #width = null;\n   constructor({\n@@ -7539,10 +12805,14 @@\n     }\n   }\n   #addEventListeners() {\n+    const {\n+      eventBus,\n+      outerContainer\n+    } = this;\n     this.sidebarContainer.addEventListener(\"transitionend\", evt => {\n       if (evt.target === this.sidebarContainer) {\n-        this.outerContainer.classList.remove(\"sidebarMoving\");\n-        this.eventBus.dispatch(\"resize\", {\n+        outerContainer.classList.remove(\"sidebarMoving\");\n+        eventBus.dispatch(\"resize\", {\n           source: this\n         });\n       }\n@@ -7557,7 +12827,7 @@\n       this.switchView(SidebarView.OUTLINE);\n     });\n     this.outlineButton.addEventListener(\"dblclick\", () => {\n-      this.eventBus.dispatch(\"toggleoutlinetree\", {\n+      eventBus.dispatch(\"toggleoutlinetree\", {\n         source: this\n       });\n     });\n@@ -7568,12 +12838,12 @@\n       this.switchView(SidebarView.LAYERS);\n     });\n     this.layersButton.addEventListener(\"dblclick\", () => {\n-      this.eventBus.dispatch(\"resetlayers\", {\n+      eventBus.dispatch(\"resetlayers\", {\n         source: this\n       });\n     });\n     this._currentOutlineItemButton.addEventListener(\"click\", () => {\n-      this.eventBus.dispatch(\"currentoutlineitem\", {\n+      eventBus.dispatch(\"currentoutlineitem\", {\n         source: this\n       });\n     });\n@@ -7585,7 +12855,7 @@\n         this.switchView(SidebarView.THUMBS);\n       }\n     };\n-    this.eventBus._on(\"outlineloaded\", evt => {\n+    eventBus._on(\"outlineloaded\", evt => {\n       onTreeLoaded(evt.outlineCount, this.outlineButton, SidebarView.OUTLINE);\n       evt.currentOutlineItemPromise.then(enabled => {\n         if (!this.isInitialViewSet) {\n@@ -7594,13 +12864,13 @@\n         this._currentOutlineItemButton.disabled = !enabled;\n       });\n     });\n-    this.eventBus._on(\"attachmentsloaded\", evt => {\n+    eventBus._on(\"attachmentsloaded\", evt => {\n       onTreeLoaded(evt.attachmentsCount, this.attachmentsButton, SidebarView.ATTACHMENTS);\n     });\n-    this.eventBus._on(\"layersloaded\", evt => {\n+    eventBus._on(\"layersloaded\", evt => {\n       onTreeLoaded(evt.layersCount, this.layersButton, SidebarView.LAYERS);\n     });\n-    this.eventBus._on(\"presentationmodechanged\", evt => {\n+    eventBus._on(\"presentationmodechanged\", evt => {\n       if (evt.state === PresentationModeState.NORMAL && this.visibleView === SidebarView.THUMBS) {\n         this.onUpdateThumbnails();\n       }\n@@ -7609,11 +12879,16 @@\n       if (evt.button !== 0) {\n         return;\n       }\n-      this.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS);\n-      window.addEventListener(\"mousemove\", this.#mouseMoveBound);\n-      window.addEventListener(\"mouseup\", this.#mouseUpBound);\n+      outerContainer.classList.add(SIDEBAR_RESIZING_CLASS);\n+      this.#mouseAC = new AbortController();\n+      const opts = {\n+        signal: this.#mouseAC.signal\n+      };\n+      window.addEventListener(\"mousemove\", this.#mouseMove.bind(this), opts);\n+      window.addEventListener(\"mouseup\", this.#mouseUp.bind(this), opts);\n+      window.addEventListener(\"blur\", this.#mouseUp.bind(this), opts);\n     });\n-    this.eventBus._on(\"resize\", evt => {\n+    eventBus._on(\"resize\", evt => {\n       if (evt.source !== window) {\n         return;\n       }\n@@ -7625,12 +12900,12 @@\n         this.#updateWidth(this.#width);\n         return;\n       }\n-      this.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS);\n+      outerContainer.classList.add(SIDEBAR_RESIZING_CLASS);\n       const updated = this.#updateWidth(this.#width);\n       Promise.resolve().then(() => {\n-        this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS);\n+        outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS);\n         if (updated) {\n-          this.eventBus.dispatch(\"resize\", {\n+          eventBus.dispatch(\"resize\", {\n             source: this\n           });\n         }\n@@ -7667,17 +12942,22 @@\n     this.eventBus.dispatch(\"resize\", {\n       source: this\n     });\n-    window.removeEventListener(\"mousemove\", this.#mouseMoveBound);\n-    window.removeEventListener(\"mouseup\", this.#mouseUpBound);\n+    this.#mouseAC?.abort();\n+    this.#mouseAC = null;\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fpdf_thumbnail_view.js\n+;\u002F\u002F .\u002Fweb\u002Fpdf_thumbnail_view.js\n+\n \n \n const DRAW_UPSCALE_FACTOR = 2;\n const MAX_NUM_SCALING_STEPS = 3;\n const THUMBNAIL_WIDTH = 98;\n+function zeroCanvas(c) {\n+  c.width = 0;\n+  c.height = 0;\n+}\n class TempImageFactory {\n   static #tempCanvas = null;\n   static getCanvas(width, height) {\n@@ -7694,10 +12974,8 @@\n     return [tempCanvas, tempCanvas.getContext(\"2d\")];\n   }\n   static destroyCanvas() {\n-    const tempCanvas = this.#tempCanvas;\n-    if (tempCanvas) {\n-      tempCanvas.width = 0;\n-      tempCanvas.height = 0;\n+    if (this.#tempCanvas) {\n+      zeroCanvas(this.#tempCanvas);\n     }\n     this.#tempCanvas = null;\n   }\n@@ -7711,7 +12989,10 @@\n     optionalContentConfigPromise,\n     linkService,\n     renderingQueue,\n-    pageColors\n+    maxCanvasPixels,\n+    maxCanvasDim,\n+    pageColors,\n+    enableHWA\n   }) {\n     this.id = id;\n     this.renderingId = \"thumbnail\" + id;\n@@ -7721,7 +13002,10 @@\n     this.viewport = defaultViewport;\n     this.pdfPageRotate = defaultViewport.rotation;\n     this._optionalContentConfigPromise = optionalContentConfigPromise || null;\n+    this.maxCanvasPixels = maxCanvasPixels ?? AppOptions.get(\"maxCanvasPixels\");\n+    this.maxCanvasDim = maxCanvasDim || AppOptions.get(\"maxCanvasDim\");\n     this.pageColors = pageColors || null;\n+    this.enableHWA = enableHWA || false;\n     this.eventBus = eventBus;\n     this.linkService = linkService;\n     this.renderingQueue = renderingQueue;\n@@ -7805,14 +13089,18 @@\n     }\n     this.resume = null;\n   }\n-  #getPageDrawContext(upscaleFactor = 1) {\n+  #getPageDrawContext(upscaleFactor = 1, enableHWA = this.enableHWA) {\n     const canvas = document.createElement(\"canvas\");\n     const ctx = canvas.getContext(\"2d\", {\n-      alpha: false\n+      alpha: false,\n+      willReadFrequently: !enableHWA\n     });\n     const outputScale = new OutputScale();\n-    canvas.width = upscaleFactor * this.canvasWidth * outputScale.sx | 0;\n-    canvas.height = upscaleFactor * this.canvasHeight * outputScale.sy | 0;\n+    const width = upscaleFactor * this.canvasWidth,\n+      height = upscaleFactor * this.canvasHeight;\n+    outputScale.limitCanvas(width, height, this.maxCanvasPixels, this.maxCanvasDim);\n+    canvas.width = width * outputScale.sx | 0;\n+    canvas.height = height * outputScale.sy | 0;\n     const transform = outputScale.scaled ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0] : null;\n     return {\n       ctx,\n@@ -7833,28 +13121,15 @@\n     this.image = image;\n     this.div.setAttribute(\"data-loaded\", true);\n     this._placeholderImg.replaceWith(image);\n-    reducedCanvas.width = 0;\n-    reducedCanvas.height = 0;\n-  }\n-  async #finishRenderTask(renderTask, canvas, error = null) {\n-    if (renderTask === this.renderTask) {\n-      this.renderTask = null;\n-    }\n-    if (error instanceof RenderingCancelledException) {\n-      return;\n-    }\n-    this.renderingState = RenderingStates.FINISHED;\n-    this.#convertCanvasToImage(canvas);\n-    if (error) {\n-      throw error;\n-    }\n+    zeroCanvas(reducedCanvas);\n   }\n   async draw() {\n     if (this.renderingState !== RenderingStates.INITIAL) {\n       console.error(\"Must be in new state before drawing\");\n-      return undefined;\n+      return;\n     }\n     const {\n+      pageColors,\n       pdfPage\n     } = this;\n     if (!pdfPage) {\n@@ -7886,21 +13161,35 @@\n       transform,\n       viewport: drawViewport,\n       optionalContentConfigPromise: this._optionalContentConfigPromise,\n-      pageColors: this.pageColors\n+      pageColors\n     };\n     const renderTask = this.renderTask = pdfPage.render(renderContext);\n     renderTask.onContinue = renderContinueCallback;\n-    const resultPromise = renderTask.promise.then(() => this.#finishRenderTask(renderTask, canvas), error => this.#finishRenderTask(renderTask, canvas, error));\n-    resultPromise.finally(() => {\n-      canvas.width = 0;\n-      canvas.height = 0;\n-      this.eventBus.dispatch(\"thumbnailrendered\", {\n-        source: this,\n-        pageNumber: this.id,\n-        pdfPage: this.pdfPage\n-      });\n+    let error = null;\n+    try {\n+      await renderTask.promise;\n+    } catch (e) {\n+      if (e instanceof RenderingCancelledException) {\n+        zeroCanvas(canvas);\n+        return;\n+      }\n+      error = e;\n+    } finally {\n+      if (renderTask === this.renderTask) {\n+        this.renderTask = null;\n+      }\n+    }\n+    this.renderingState = RenderingStates.FINISHED;\n+    this.#convertCanvasToImage(canvas);\n+    zeroCanvas(canvas);\n+    this.eventBus.dispatch(\"thumbnailrendered\", {\n+      source: this,\n+      pageNumber: this.id,\n+      pdfPage\n     });\n-    return resultPromise;\n+    if (error) {\n+      throw error;\n+    }\n   }\n   setImage(pageView) {\n     if (this.renderingState !== RenderingStates.INITIAL) {\n@@ -7923,17 +13212,24 @@\n     this.renderingState = RenderingStates.FINISHED;\n     this.#convertCanvasToImage(canvas);\n   }\n+  #getReducedImageDims(canvas) {\n+    const width = canvas.width \u003C\u003C MAX_NUM_SCALING_STEPS,\n+      height = canvas.height \u003C\u003C MAX_NUM_SCALING_STEPS;\n+    const outputScale = new OutputScale();\n+    outputScale.sx = outputScale.sy = 1;\n+    outputScale.limitCanvas(width, height, this.maxCanvasPixels, this.maxCanvasDim);\n+    return [width * outputScale.sx | 0, height * outputScale.sy | 0];\n+  }\n   #reduceImage(img) {\n     const {\n       ctx,\n       canvas\n-    } = this.#getPageDrawContext();\n+    } = this.#getPageDrawContext(1, true);\n     if (img.width \u003C= 2 * canvas.width) {\n       ctx.drawImage(img, 0, 0, img.width, img.height, 0, 0, canvas.width, canvas.height);\n       return canvas;\n     }\n-    let reducedWidth = canvas.width \u003C\u003C MAX_NUM_SCALING_STEPS;\n-    let reducedHeight = canvas.height \u003C\u003C MAX_NUM_SCALING_STEPS;\n+    let [reducedWidth, reducedHeight] = this.#getReducedImageDims(canvas);\n     const [reducedImage, reducedImageCtx] = TempImageFactory.getCanvas(reducedWidth, reducedHeight);\n     while (reducedWidth > img.width || reducedHeight > img.height) {\n       reducedWidth >>= 1;\n@@ -7963,7 +13259,8 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fpdf_thumbnail_viewer.js\n+;\u002F\u002F .\u002Fweb\u002Fpdf_thumbnail_viewer.js\n+\n \n \n const THUMBNAIL_SCROLL_MARGIN = -19;\n@@ -7974,14 +13271,21 @@\n     eventBus,\n     linkService,\n     renderingQueue,\n-    pageColors\n+    maxCanvasPixels,\n+    maxCanvasDim,\n+    pageColors,\n+    abortSignal,\n+    enableHWA\n   }) {\n     this.container = container;\n     this.eventBus = eventBus;\n     this.linkService = linkService;\n     this.renderingQueue = renderingQueue;\n+    this.maxCanvasPixels = maxCanvasPixels;\n+    this.maxCanvasDim = maxCanvasDim;\n     this.pageColors = pageColors || null;\n-    this.scroll = watchScroll(this.container, this.#scrollUpdated.bind(this));\n+    this.enableHWA = enableHWA || false;\n+    this.scroll = watchScroll(this.container, this.#scrollUpdated.bind(this), abortSignal);\n     this.#resetView();\n   }\n   #scrollUpdated() {\n@@ -8102,7 +13406,10 @@\n           optionalContentConfigPromise,\n           linkService: this.linkService,\n           renderingQueue: this.renderingQueue,\n-          pageColors: this.pageColors\n+          maxCanvasPixels: this.maxCanvasPixels,\n+          maxCanvasDim: this.maxCanvasDim,\n+          pageColors: this.pageColors,\n+          enableHWA: this.enableHWA\n         });\n         this._thumbnails.push(thumbnail);\n       }\n@@ -8160,7 +13467,7 @@\n   forceRendering() {\n     const visibleThumbs = this.#getVisibleThumbs();\n     const scrollAhead = this.#getScrollAhead(visibleThumbs);\n-    const thumbView = this.renderingQueue.getHighestPriority(visibleThumbs, this._thumbnails, scrollAhead);\n+    const thumbView = this.renderingQueue.getHighestPriority(visibleThumbs, this._thumbnails, scrollAhead, false, true);\n     if (thumbView) {\n       this.#ensurePdfPageLoaded(thumbView).then(() => {\n         this.renderingQueue.renderView(thumbView);\n@@ -8171,13 +13478,14 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fannotation_editor_layer_builder.js\n+;\u002F\u002F .\u002Fweb\u002Fannotation_editor_layer_builder.js\n \n \n class AnnotationEditorLayerBuilder {\n   #annotationLayer = null;\n   #drawLayer = null;\n   #onAppend = null;\n+  #structTreeLayer = null;\n   #textLayer = null;\n   #uiManager;\n   constructor(options) {\n@@ -8193,8 +13501,12 @@\n     this.#textLayer = options.textLayer || null;\n     this.#drawLayer = options.drawLayer || null;\n     this.#onAppend = options.onAppend || null;\n+    this.#structTreeLayer = options.structTreeLayer || null;\n   }\n-  async render(viewport, intent = \"display\") {\n+  async render({\n+    viewport,\n+    intent = \"display\"\n+  }) {\n     if (intent !== \"display\") {\n       return;\n     }\n@@ -8219,6 +13531,7 @@\n     this.annotationEditorLayer = new AnnotationEditorLayer({\n       uiManager: this.#uiManager,\n       div,\n+      structTreeLayer: this.#structTreeLayer,\n       accessibilityManager: this.accessibilityManager,\n       pageIndex: this.pdfPage.pageNumber - 1,\n       l10n: this.l10n,\n@@ -8247,6 +13560,7 @@\n     if (!this.div) {\n       return;\n     }\n+    this.annotationEditorLayer.pause(true);\n     this.div.hidden = true;\n   }\n   show() {\n@@ -8254,15 +13568,22 @@\n       return;\n     }\n     this.div.hidden = false;\n+    this.annotationEditorLayer.pause(false);\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fannotation_layer_builder.js\n+;\u002F\u002F .\u002Fweb\u002Fannotation_layer_builder.js\n+\n+\n+\n \n \n class AnnotationLayerBuilder {\n+  #annotations = null;\n+  #externalHide = false;\n   #onAppend = null;\n   #eventAbortController = null;\n+  #linksInjected = false;\n   constructor({\n     pdfPage,\n     linkService,\n@@ -8296,7 +13617,11 @@\n     this._cancelled = false;\n     this._eventBus = linkService.eventBus;\n   }\n-  async render(viewport, intent = \"display\") {\n+  async render({\n+    viewport,\n+    intent = \"display\",\n+    structTreeLayer = null\n+  }) {\n     if (this.div) {\n       if (this._cancelled || !this.annotationLayer) {\n         return;\n@@ -8318,19 +13643,11 @@\n     div.className = \"annotationLayer\";\n     this.#onAppend?.(div);\n     if (annotations.length === 0) {\n-      this.hide();\n+      this.#annotations = annotations;\n+      this.hide(true);\n       return;\n     }\n-    this.annotationLayer = new AnnotationLayer({\n-      div,\n-      accessibilityManager: this._accessibilityManager,\n-      annotationCanvasMap: this._annotationCanvasMap,\n-      annotationEditorUIManager: this._annotationEditorUIManager,\n-      page: this.pdfPage,\n-      viewport: viewport.clone({\n-        dontFlip: true\n-      })\n-    });\n+    this.#initAnnotationLayer(viewport, structTreeLayer);\n     await this.annotationLayer.render({\n       annotations,\n       imageResourcesPath: this.imageResourcesPath,\n@@ -8342,6 +13659,7 @@\n       hasJSActions,\n       fieldObjects\n     });\n+    this.#annotations = annotations;\n     if (this.linkService.isInPresentationMode) {\n       this.#updatePresentationModeState(PresentationModeState.FULLSCREEN);\n     }\n@@ -8354,17 +13672,59 @@\n       });\n     }\n   }\n+  #initAnnotationLayer(viewport, structTreeLayer) {\n+    this.annotationLayer = new AnnotationLayer({\n+      div: this.div,\n+      accessibilityManager: this._accessibilityManager,\n+      annotationCanvasMap: this._annotationCanvasMap,\n+      annotationEditorUIManager: this._annotationEditorUIManager,\n+      page: this.pdfPage,\n+      viewport: viewport.clone({\n+        dontFlip: true\n+      }),\n+      structTreeLayer\n+    });\n+  }\n   cancel() {\n     this._cancelled = true;\n     this.#eventAbortController?.abort();\n     this.#eventAbortController = null;\n   }\n-  hide() {\n+  hide(internal = false) {\n+    this.#externalHide = !internal;\n     if (!this.div) {\n       return;\n     }\n     this.div.hidden = true;\n   }\n+  hasEditableAnnotations() {\n+    return !!this.annotationLayer?.hasEditableAnnotations();\n+  }\n+  async injectLinkAnnotations({\n+    inferredLinks,\n+    viewport,\n+    structTreeLayer = null\n+  }) {\n+    if (this.#annotations === null) {\n+      throw new Error(\"`render` method must be called before `injectLinkAnnotations`.\");\n+    }\n+    if (this._cancelled || this.#linksInjected) {\n+      return;\n+    }\n+    this.#linksInjected = true;\n+    const newLinks = this.#annotations.length ? this.#checkInferredLinks(inferredLinks) : inferredLinks;\n+    if (!newLinks.length) {\n+      return;\n+    }\n+    if (!this.annotationLayer) {\n+      this.#initAnnotationLayer(viewport, structTreeLayer);\n+      setLayerDimensions(this.div, viewport);\n+    }\n+    await this.annotationLayer.addLinkAnnotations(newLinks, this.linkService);\n+    if (!this.#externalHide) {\n+      this.div.hidden = false;\n+    }\n+  }\n   #updatePresentationModeState(state) {\n     if (!this.div) {\n       return;\n@@ -8386,16 +13746,410 @@\n       section.inert = disableFormElements;\n     }\n   }\n+  #checkInferredLinks(inferredLinks) {\n+    function annotationRects(annot) {\n+      if (!annot.quadPoints) {\n+        return [annot.rect];\n+      }\n+      const rects = [];\n+      for (let i = 2, ii = annot.quadPoints.length; i \u003C ii; i += 8) {\n+        const trX = annot.quadPoints[i];\n+        const trY = annot.quadPoints[i + 1];\n+        const blX = annot.quadPoints[i + 2];\n+        const blY = annot.quadPoints[i + 3];\n+        rects.push([blX, blY, trX, trY]);\n+      }\n+      return rects;\n+    }\n+    function intersectAnnotations(annot1, annot2) {\n+      const intersections = [];\n+      const annot1Rects = annotationRects(annot1);\n+      const annot2Rects = annotationRects(annot2);\n+      for (const rect1 of annot1Rects) {\n+        for (const rect2 of annot2Rects) {\n+          const intersection = Util.intersect(rect1, rect2);\n+          if (intersection) {\n+            intersections.push(intersection);\n+          }\n+        }\n+      }\n+      return intersections;\n+    }\n+    function areaRects(rects) {\n+      let totalArea = 0;\n+      for (const rect of rects) {\n+        totalArea += Math.abs((rect[2] - rect[0]) * (rect[3] - rect[1]));\n+      }\n+      return totalArea;\n+    }\n+    return inferredLinks.filter(link => {\n+      let linkAreaRects;\n+      for (const annotation of this.#annotations) {\n+        if (annotation.annotationType !== AnnotationType.LINK || !annotation.url) {\n+          continue;\n+        }\n+        const intersections = intersectAnnotations(annotation, link);\n+        if (intersections.length === 0) {\n+          continue;\n+        }\n+        linkAreaRects ??= areaRects(annotationRects(link));\n+        if (areaRects(intersections) \u002F linkAreaRects > 0.5) {\n+          return false;\n+        }\n+      }\n+      return true;\n+    });\n+  }\n+}\n+\n+\u002F\u002F EXTERNAL MODULE: .\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.url.can-parse.js\n+var web_url_can_parse = __webpack_require__(2222);\n+;\u002F\u002F .\u002Fweb\u002Fautolinker.js\n+\n+\n+\n+\n+\n+\n+function DOMRectToPDF({\n+  width,\n+  height,\n+  left,\n+  top\n+}, pdfPageView) {\n+  if (width === 0 || height === 0) {\n+    return null;\n+  }\n+  const pageBox = pdfPageView.textLayer.div.getBoundingClientRect();\n+  const bottomLeft = pdfPageView.getPagePoint(left - pageBox.left, top - pageBox.top);\n+  const topRight = pdfPageView.getPagePoint(left - pageBox.left + width, top - pageBox.top + height);\n+  return Util.normalizeRect([bottomLeft[0], bottomLeft[1], topRight[0], topRight[1]]);\n+}\n+function calculateLinkPosition(range, pdfPageView) {\n+  const rangeRects = range.getClientRects();\n+  if (rangeRects.length === 1) {\n+    return {\n+      rect: DOMRectToPDF(rangeRects[0], pdfPageView)\n+    };\n+  }\n+  const rect = [Infinity, Infinity, -Infinity, -Infinity];\n+  const quadPoints = [];\n+  let i = 0;\n+  for (const domRect of rangeRects) {\n+    const normalized = DOMRectToPDF(domRect, pdfPageView);\n+    if (normalized === null) {\n+      continue;\n+    }\n+    quadPoints[i] = quadPoints[i + 4] = normalized[0];\n+    quadPoints[i + 1] = quadPoints[i + 3] = normalized[3];\n+    quadPoints[i + 2] = quadPoints[i + 6] = normalized[2];\n+    quadPoints[i + 5] = quadPoints[i + 7] = normalized[1];\n+    Util.rectBoundingBox(...normalized, rect);\n+    i += 8;\n+  }\n+  return {\n+    quadPoints,\n+    rect\n+  };\n+}\n+function textPosition(container, offset) {\n+  let currentContainer = container;\n+  do {\n+    if (currentContainer.nodeType === Node.TEXT_NODE) {\n+      const currentLength = currentContainer.textContent.length;\n+      if (offset \u003C= currentLength) {\n+        return [currentContainer, offset];\n+      }\n+      offset -= currentLength;\n+    } else if (currentContainer.firstChild) {\n+      currentContainer = currentContainer.firstChild;\n+      continue;\n+    }\n+    while (!currentContainer.nextSibling && currentContainer !== container) {\n+      currentContainer = currentContainer.parentNode;\n+    }\n+    if (currentContainer !== container) {\n+      currentContainer = currentContainer.nextSibling;\n+    }\n+  } while (currentContainer !== container);\n+  throw new Error(\"Offset is bigger than container's contents length.\");\n+}\n+function createLinkAnnotation({\n+  url,\n+  index,\n+  length\n+}, pdfPageView, id) {\n+  const highlighter = pdfPageView._textHighlighter;\n+  const [{\n+    begin,\n+    end\n+  }] = highlighter._convertMatches([index], [length]);\n+  const range = new Range();\n+  range.setStart(...textPosition(highlighter.textDivs[begin.divIdx], begin.offset));\n+  range.setEnd(...textPosition(highlighter.textDivs[end.divIdx], end.offset));\n+  return {\n+    id: `inferred_link_${id}`,\n+    unsafeUrl: url,\n+    url,\n+    annotationType: AnnotationType.LINK,\n+    rotation: 0,\n+    ...calculateLinkPosition(range, pdfPageView),\n+    borderStyle: null\n+  };\n+}\n+class Autolinker {\n+  static #index = 0;\n+  static #regex;\n+  static findLinks(text) {\n+    this.#regex ??= \u002F\\b(?:https?:\\\u002F\\\u002F|mailto:|www\\.)(?:[\\0-\\x08\\x0E-\\x1F\\$\\+0-9=A-Z\\^`-z\\|~-\\x9F\\xA2-\\xA6\\xA8-\\xAA\\xAC-\\xB5\\xB8-\\xBA\\xBC-\\xBE\\xC0-\\u037D\\u037F-\\u0386\\u0388-\\u0559\\u0560-\\u0588\\u058B-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7-\\u05F2\\u05F5-\\u0608\\u060B\\u060E-\\u061A\\u061C\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06FF\\u070E-\\u07F6\\u07FA-\\u082F\\u083F-\\u085D\\u085F-\\u0963\\u0966-\\u096F\\u0971-\\u09FC\\u09FE-\\u0A75\\u0A77-\\u0AEF\\u0AF1-\\u0C76\\u0C78-\\u0C83\\u0C85-\\u0DF3\\u0DF5-\\u0E4E\\u0E50-\\u0E59\\u0E5C-\\u0F03\\u0F13\\u0F15-\\u0F39\\u0F3E-\\u0F84\\u0F86-\\u0FCF\\u0FD5-\\u0FD8\\u0FDB-\\u1049\\u1050-\\u10FA\\u10FC-\\u135F\\u1369-\\u13FF\\u1401-\\u166D\\u166F-\\u167F\\u1681-\\u169A\\u169D-\\u16EA\\u16EE-\\u1734\\u1737-\\u17D3\\u17D7\\u17DB-\\u17FF\\u180B-\\u1943\\u1946-\\u1A1D\\u1A20-\\u1A9F\\u1AA7\\u1AAE-\\u1B4D\\u1B50-\\u1B59\\u1B61-\\u1B7C\\u1B80-\\u1BFB\\u1C00-\\u1C3A\\u1C40-\\u1C7D\\u1C80-\\u1CBF\\u1CC8-\\u1CD2\\u1CD4-\\u1FFF\\u200B-\\u200F\\u202A-\\u202E\\u2044\\u2052\\u2060-\\u207C\\u207F-\\u208C\\u208F-\\u2307\\u230C-\\u2328\\u232B-\\u2767\\u2776-\\u27C4\\u27C7-\\u27E5\\u27F0-\\u2982\\u2999-\\u29D7\\u29DC-\\u29FB\\u29FE-\\u2CF8\\u2CFD\\u2D00-\\u2D6F\\u2D71-\\u2DFF\\u2E2F\\u2E50\\u2E51\\u2E5E-\\u2FFF\\u3004-\\u3007\\u3012\\u3013\\u3020-\\u302F\\u3031-\\u303C\\u303E-\\u309F\\u30A1-\\u30FA\\u30FC-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA672\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA6F8-\\uA873\\uA878-\\uA8CD\\uA8D0-\\uA8F7\\uA8FB\\uA8FD-\\uA92D\\uA930-\\uA95E\\uA960-\\uA9C0\\uA9CE-\\uA9DD\\uA9E0-\\uAA5B\\uAA60-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uABEA\\uABEC-\\uFD3D\\uFD40-\\uFE0F\\uFE1A-\\uFE2F\\uFE53\\uFE62\\uFE64-\\uFE67\\uFE69\\uFE6C-\\uFEFE\\uFF00\\uFF04\\uFF0B\\uFF10-\\uFF19\\uFF1C-\\uFF1E\\uFF21-\\uFF3A\\uFF3E\\uFF40-\\uFF5A\\uFF5C\\uFF5E\\uFF66-\\u{100FF}\\u{10103}-\\u{1039E}\\u{103A0}-\\u{103CF}\\u{103D1}-\\u{1056E}\\u{10570}-\\u{10856}\\u{10858}-\\u{1091E}\\u{10920}-\\u{1093E}\\u{10940}-\\u{10A4F}\\u{10A59}-\\u{10A7E}\\u{10A80}-\\u{10AEF}\\u{10AF7}-\\u{10B38}\\u{10B40}-\\u{10B98}\\u{10B9D}-\\u{10D6D}\\u{10D6F}-\\u{10EAC}\\u{10EAE}-\\u{10F54}\\u{10F5A}-\\u{10F85}\\u{10F8A}-\\u{11046}\\u{1104E}-\\u{110BA}\\u{110BD}\\u{110C2}-\\u{1113F}\\u{11144}-\\u{11173}\\u{11176}-\\u{111C4}\\u{111C9}-\\u{111CC}\\u{111CE}-\\u{111DA}\\u{111DC}\\u{111E0}-\\u{11237}\\u{1123E}-\\u{112A8}\\u{112AA}-\\u{113D3}\\u{113D6}\\u{113D9}-\\u{1144A}\\u{11450}-\\u{11459}\\u{1145C}\\u{1145E}-\\u{114C5}\\u{114C7}-\\u{115C0}\\u{115D8}-\\u{11640}\\u{11644}-\\u{1165F}\\u{1166D}-\\u{116B8}\\u{116BA}-\\u{1173B}\\u{1173F}-\\u{1183A}\\u{1183C}-\\u{11943}\\u{11947}-\\u{119E1}\\u{119E3}-\\u{11A3E}\\u{11A47}-\\u{11A99}\\u{11A9D}\\u{11AA3}-\\u{11AFF}\\u{11B0A}-\\u{11BE0}\\u{11BE2}-\\u{11C40}\\u{11C46}-\\u{11C6F}\\u{11C72}-\\u{11EF6}\\u{11EF9}-\\u{11F42}\\u{11F50}-\\u{11FFE}\\u{12000}-\\u{1246F}\\u{12475}-\\u{12FF0}\\u{12FF3}-\\u{16A6D}\\u{16A70}-\\u{16AF4}\\u{16AF6}-\\u{16B36}\\u{16B3C}-\\u{16B43}\\u{16B45}-\\u{16D6C}\\u{16D70}-\\u{16E96}\\u{16E9B}-\\u{16FE1}\\u{16FE3}-\\u{1BC9E}\\u{1BCA0}-\\u{1DA86}\\u{1DA8C}-\\u{1E5FE}\\u{1E600}-\\u{1E95D}\\u{1E960}-\\u{10FFFF}]|\\\u002F|[\\0-\\x08\\x0E-\\x1F!-Z\\\\\\^-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uFEFE\\uFF00-\\u{10FFFF}]+[\\0-\\x08\\x0E-\\x1F\\$\\+0-9=A-Z\\^`-z\\|~-\\x9F\\xA2-\\xA6\\xA8-\\xAA\\xAC-\\xB5\\xB8-\\xBA\\xBC-\\xBE\\xC0-\\u037D\\u037F-\\u0386\\u0388-\\u0559\\u0560-\\u0588\\u058B-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7-\\u05F2\\u05F5-\\u0608\\u060B\\u060E-\\u061A\\u061C\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06FF\\u070E-\\u07F6\\u07FA-\\u082F\\u083F-\\u085D\\u085F-\\u0963\\u0966-\\u096F\\u0971-\\u09FC\\u09FE-\\u0A75\\u0A77-\\u0AEF\\u0AF1-\\u0C76\\u0C78-\\u0C83\\u0C85-\\u0DF3\\u0DF5-\\u0E4E\\u0E50-\\u0E59\\u0E5C-\\u0F03\\u0F13\\u0F15-\\u0F39\\u0F3E-\\u0F84\\u0F86-\\u0FCF\\u0FD5-\\u0FD8\\u0FDB-\\u1049\\u1050-\\u10FA\\u10FC-\\u135F\\u1369-\\u13FF\\u1401-\\u166D\\u166F-\\u167F\\u1681-\\u169A\\u169D-\\u16EA\\u16EE-\\u1734\\u1737-\\u17D3\\u17D7\\u17DB-\\u17FF\\u180B-\\u1943\\u1946-\\u1A1D\\u1A20-\\u1A9F\\u1AA7\\u1AAE-\\u1B4D\\u1B50-\\u1B59\\u1B61-\\u1B7C\\u1B80-\\u1BFB\\u1C00-\\u1C3A\\u1C40-\\u1C7D\\u1C80-\\u1CBF\\u1CC8-\\u1CD2\\u1CD4-\\u1FFF\\u200B-\\u200F\\u202A-\\u202E\\u2044\\u2052\\u2060-\\u207C\\u207F-\\u208C\\u208F-\\u2307\\u230C-\\u2328\\u232B-\\u2767\\u2776-\\u27C4\\u27C7-\\u27E5\\u27F0-\\u2982\\u2999-\\u29D7\\u29DC-\\u29FB\\u29FE-\\u2CF8\\u2CFD\\u2D00-\\u2D6F\\u2D71-\\u2DFF\\u2E2F\\u2E50\\u2E51\\u2E5E-\\u2FFF\\u3004-\\u3007\\u3012\\u3013\\u3020-\\u302F\\u3031-\\u303C\\u303E-\\u309F\\u30A1-\\u30FA\\u30FC-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA672\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA6F8-\\uA873\\uA878-\\uA8CD\\uA8D0-\\uA8F7\\uA8FB\\uA8FD-\\uA92D\\uA930-\\uA95E\\uA960-\\uA9C0\\uA9CE-\\uA9DD\\uA9E0-\\uAA5B\\uAA60-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uABEA\\uABEC-\\uFD3D\\uFD40-\\uFE0F\\uFE1A-\\uFE2F\\uFE53\\uFE62\\uFE64-\\uFE67\\uFE69\\uFE6C-\\uFEFE\\uFF00\\uFF04\\uFF0B\\uFF10-\\uFF19\\uFF1C-\\uFF1E\\uFF21-\\uFF3A\\uFF3E\\uFF40-\\uFF5A\\uFF5C\\uFF5E\\uFF66-\\u{100FF}\\u{10103}-\\u{1039E}\\u{103A0}-\\u{103CF}\\u{103D1}-\\u{1056E}\\u{10570}-\\u{10856}\\u{10858}-\\u{1091E}\\u{10920}-\\u{1093E}\\u{10940}-\\u{10A4F}\\u{10A59}-\\u{10A7E}\\u{10A80}-\\u{10AEF}\\u{10AF7}-\\u{10B38}\\u{10B40}-\\u{10B98}\\u{10B9D}-\\u{10D6D}\\u{10D6F}-\\u{10EAC}\\u{10EAE}-\\u{10F54}\\u{10F5A}-\\u{10F85}\\u{10F8A}-\\u{11046}\\u{1104E}-\\u{110BA}\\u{110BD}\\u{110C2}-\\u{1113F}\\u{11144}-\\u{11173}\\u{11176}-\\u{111C4}\\u{111C9}-\\u{111CC}\\u{111CE}-\\u{111DA}\\u{111DC}\\u{111E0}-\\u{11237}\\u{1123E}-\\u{112A8}\\u{112AA}-\\u{113D3}\\u{113D6}\\u{113D9}-\\u{1144A}\\u{11450}-\\u{11459}\\u{1145C}\\u{1145E}-\\u{114C5}\\u{114C7}-\\u{115C0}\\u{115D8}-\\u{11640}\\u{11644}-\\u{1165F}\\u{1166D}-\\u{116B8}\\u{116BA}-\\u{1173B}\\u{1173F}-\\u{1183A}\\u{1183C}-\\u{11943}\\u{11947}-\\u{119E1}\\u{119E3}-\\u{11A3E}\\u{11A47}-\\u{11A99}\\u{11A9D}\\u{11AA3}-\\u{11AFF}\\u{11B0A}-\\u{11BE0}\\u{11BE2}-\\u{11C40}\\u{11C46}-\\u{11C6F}\\u{11C72}-\\u{11EF6}\\u{11EF9}-\\u{11F42}\\u{11F50}-\\u{11FFE}\\u{12000}-\\u{1246F}\\u{12475}-\\u{12FF0}\\u{12FF3}-\\u{16A6D}\\u{16A70}-\\u{16AF4}\\u{16AF6}-\\u{16B36}\\u{16B3C}-\\u{16B43}\\u{16B45}-\\u{16D6C}\\u{16D70}-\\u{16E96}\\u{16E9B}-\\u{16FE1}\\u{16FE3}-\\u{1BC9E}\\u{1BCA0}-\\u{1DA86}\\u{1DA8C}-\\u{1E5FE}\\u{1E600}-\\u{1E95D}\\u{1E960}-\\u{10FFFF}])+|\\b[\\0-\\x08\\x0E-\\x1F!-'\\*-;=\\?A-Z\\\\\\^-z\\|~-\\x9F\\xA1-\\u0F39\\u0F3E-\\u167F\\u1681-\\u169A\\u169D-\\u1FFF\\u200B-\\u2019\\u201B-\\u201D\\u201F-\\u2027\\u202A-\\u202E\\u2030-\\u2044\\u2047-\\u205E\\u2060-\\u207C\\u207F-\\u208C\\u208F-\\u2307\\u230C-\\u2328\\u232B-\\u2767\\u2776-\\u27C4\\u27C7-\\u27E5\\u27F0-\\u2982\\u2999-\\u29D7\\u29DC-\\u29FB\\u29FE-\\u2E21\\u2E2A-\\u2E41\\u2E43-\\u2E54\\u2E5D-\\u2FFF\\u3001-\\u3007\\u3012\\u3013\\u301C\\u3020-\\uFD3D\\uFD40-\\uFE16\\uFE19-\\uFE34\\uFE45\\uFE46\\uFE49-\\uFE58\\uFE5F-\\uFEFE\\uFF00-\\uFF07\\uFF0A-\\uFF3A\\uFF3C\\uFF3E-\\uFF5A\\uFF5C\\uFF5E\\uFF61\\uFF64-\\u{10FFFF}]+@([\\0-\\x08\\x0E-\\x1F\\$\\+0-9=A-Z\\^`-z\\|~-\\x9F\\xA2-\\xA6\\xA8-\\xAA\\xAC-\\xB5\\xB8-\\xBA\\xBC-\\xBE\\xC0-\\u037D\\u037F-\\u0386\\u0388-\\u0559\\u0560-\\u0588\\u058B-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7-\\u05F2\\u05F5-\\u0608\\u060B\\u060E-\\u061A\\u061C\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06FF\\u070E-\\u07F6\\u07FA-\\u082F\\u083F-\\u085D\\u085F-\\u0963\\u0966-\\u096F\\u0971-\\u09FC\\u09FE-\\u0A75\\u0A77-\\u0AEF\\u0AF1-\\u0C76\\u0C78-\\u0C83\\u0C85-\\u0DF3\\u0DF5-\\u0E4E\\u0E50-\\u0E59\\u0E5C-\\u0F03\\u0F13\\u0F15-\\u0F39\\u0F3E-\\u0F84\\u0F86-\\u0FCF\\u0FD5-\\u0FD8\\u0FDB-\\u1049\\u1050-\\u10FA\\u10FC-\\u135F\\u1369-\\u13FF\\u1401-\\u166D\\u166F-\\u167F\\u1681-\\u169A\\u169D-\\u16EA\\u16EE-\\u1734\\u1737-\\u17D3\\u17D7\\u17DB-\\u17FF\\u180B-\\u1943\\u1946-\\u1A1D\\u1A20-\\u1A9F\\u1AA7\\u1AAE-\\u1B4D\\u1B50-\\u1B59\\u1B61-\\u1B7C\\u1B80-\\u1BFB\\u1C00-\\u1C3A\\u1C40-\\u1C7D\\u1C80-\\u1CBF\\u1CC8-\\u1CD2\\u1CD4-\\u1FFF\\u200B-\\u200F\\u202A-\\u202E\\u2044\\u2052\\u2060-\\u207C\\u207F-\\u208C\\u208F-\\u2307\\u230C-\\u2328\\u232B-\\u2767\\u2776-\\u27C4\\u27C7-\\u27E5\\u27F0-\\u2982\\u2999-\\u29D7\\u29DC-\\u29FB\\u29FE-\\u2CF8\\u2CFD\\u2D00-\\u2D6F\\u2D71-\\u2DFF\\u2E2F\\u2E50\\u2E51\\u2E5E-\\u2FFF\\u3004-\\u3007\\u3012\\u3013\\u3020-\\u302F\\u3031-\\u303C\\u303E-\\u309F\\u30A1-\\u30FA\\u30FC-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA672\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA6F8-\\uA873\\uA878-\\uA8CD\\uA8D0-\\uA8F7\\uA8FB\\uA8FD-\\uA92D\\uA930-\\uA95E\\uA960-\\uA9C0\\uA9CE-\\uA9DD\\uA9E0-\\uAA5B\\uAA60-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uABEA\\uABEC-\\uFD3D\\uFD40-\\uFE0F\\uFE1A-\\uFE2F\\uFE53\\uFE62\\uFE64-\\uFE67\\uFE69\\uFE6C-\\uFEFE\\uFF00\\uFF04\\uFF0B\\uFF10-\\uFF19\\uFF1C-\\uFF1E\\uFF21-\\uFF3A\\uFF3E\\uFF40-\\uFF5A\\uFF5C\\uFF5E\\uFF66-\\u{100FF}\\u{10103}-\\u{1039E}\\u{103A0}-\\u{103CF}\\u{103D1}-\\u{1056E}\\u{10570}-\\u{10856}\\u{10858}-\\u{1091E}\\u{10920}-\\u{1093E}\\u{10940}-\\u{10A4F}\\u{10A59}-\\u{10A7E}\\u{10A80}-\\u{10AEF}\\u{10AF7}-\\u{10B38}\\u{10B40}-\\u{10B98}\\u{10B9D}-\\u{10D6D}\\u{10D6F}-\\u{10EAC}\\u{10EAE}-\\u{10F54}\\u{10F5A}-\\u{10F85}\\u{10F8A}-\\u{11046}\\u{1104E}-\\u{110BA}\\u{110BD}\\u{110C2}-\\u{1113F}\\u{11144}-\\u{11173}\\u{11176}-\\u{111C4}\\u{111C9}-\\u{111CC}\\u{111CE}-\\u{111DA}\\u{111DC}\\u{111E0}-\\u{11237}\\u{1123E}-\\u{112A8}\\u{112AA}-\\u{113D3}\\u{113D6}\\u{113D9}-\\u{1144A}\\u{11450}-\\u{11459}\\u{1145C}\\u{1145E}-\\u{114C5}\\u{114C7}-\\u{115C0}\\u{115D8}-\\u{11640}\\u{11644}-\\u{1165F}\\u{1166D}-\\u{116B8}\\u{116BA}-\\u{1173B}\\u{1173F}-\\u{1183A}\\u{1183C}-\\u{11943}\\u{11947}-\\u{119E1}\\u{119E3}-\\u{11A3E}\\u{11A47}-\\u{11A99}\\u{11A9D}\\u{11AA3}-\\u{11AFF}\\u{11B0A}-\\u{11BE0}\\u{11BE2}-\\u{11C40}\\u{11C46}-\\u{11C6F}\\u{11C72}-\\u{11EF6}\\u{11EF9}-\\u{11F42}\\u{11F50}-\\u{11FFE}\\u{12000}-\\u{1246F}\\u{12475}-\\u{12FF0}\\u{12FF3}-\\u{16A6D}\\u{16A70}-\\u{16AF4}\\u{16AF6}-\\u{16B36}\\u{16B3C}-\\u{16B43}\\u{16B45}-\\u{16D6C}\\u{16D70}-\\u{16E96}\\u{16E9B}-\\u{16FE1}\\u{16FE3}-\\u{1BC9E}\\u{1BCA0}-\\u{1DA86}\\u{1DA8C}-\\u{1E5FE}\\u{1E600}-\\u{1E95D}\\u{1E960}-\\u{10FFFF}]+(?:\\.[\\0-\\x08\\x0E-\\x1F\\$\\+0-9=A-Z\\^`-z\\|~-\\x9F\\xA2-\\xA6\\xA8-\\xAA\\xAC-\\xB5\\xB8-\\xBA\\xBC-\\xBE\\xC0-\\u037D\\u037F-\\u0386\\u0388-\\u0559\\u0560-\\u0588\\u058B-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7-\\u05F2\\u05F5-\\u0608\\u060B\\u060E-\\u061A\\u061C\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06FF\\u070E-\\u07F6\\u07FA-\\u082F\\u083F-\\u085D\\u085F-\\u0963\\u0966-\\u096F\\u0971-\\u09FC\\u09FE-\\u0A75\\u0A77-\\u0AEF\\u0AF1-\\u0C76\\u0C78-\\u0C83\\u0C85-\\u0DF3\\u0DF5-\\u0E4E\\u0E50-\\u0E59\\u0E5C-\\u0F03\\u0F13\\u0F15-\\u0F39\\u0F3E-\\u0F84\\u0F86-\\u0FCF\\u0FD5-\\u0FD8\\u0FDB-\\u1049\\u1050-\\u10FA\\u10FC-\\u135F\\u1369-\\u13FF\\u1401-\\u166D\\u166F-\\u167F\\u1681-\\u169A\\u169D-\\u16EA\\u16EE-\\u1734\\u1737-\\u17D3\\u17D7\\u17DB-\\u17FF\\u180B-\\u1943\\u1946-\\u1A1D\\u1A20-\\u1A9F\\u1AA7\\u1AAE-\\u1B4D\\u1B50-\\u1B59\\u1B61-\\u1B7C\\u1B80-\\u1BFB\\u1C00-\\u1C3A\\u1C40-\\u1C7D\\u1C80-\\u1CBF\\u1CC8-\\u1CD2\\u1CD4-\\u1FFF\\u200B-\\u200F\\u202A-\\u202E\\u2044\\u2052\\u2060-\\u207C\\u207F-\\u208C\\u208F-\\u2307\\u230C-\\u2328\\u232B-\\u2767\\u2776-\\u27C4\\u27C7-\\u27E5\\u27F0-\\u2982\\u2999-\\u29D7\\u29DC-\\u29FB\\u29FE-\\u2CF8\\u2CFD\\u2D00-\\u2D6F\\u2D71-\\u2DFF\\u2E2F\\u2E50\\u2E51\\u2E5E-\\u2FFF\\u3004-\\u3007\\u3012\\u3013\\u3020-\\u302F\\u3031-\\u303C\\u303E-\\u309F\\u30A1-\\u30FA\\u30FC-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA672\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA6F8-\\uA873\\uA878-\\uA8CD\\uA8D0-\\uA8F7\\uA8FB\\uA8FD-\\uA92D\\uA930-\\uA95E\\uA960-\\uA9C0\\uA9CE-\\uA9DD\\uA9E0-\\uAA5B\\uAA60-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uABEA\\uABEC-\\uFD3D\\uFD40-\\uFE0F\\uFE1A-\\uFE2F\\uFE53\\uFE62\\uFE64-\\uFE67\\uFE69\\uFE6C-\\uFEFE\\uFF00\\uFF04\\uFF0B\\uFF10-\\uFF19\\uFF1C-\\uFF1E\\uFF21-\\uFF3A\\uFF3E\\uFF40-\\uFF5A\\uFF5C\\uFF5E\\uFF66-\\u{100FF}\\u{10103}-\\u{1039E}\\u{103A0}-\\u{103CF}\\u{103D1}-\\u{1056E}\\u{10570}-\\u{10856}\\u{10858}-\\u{1091E}\\u{10920}-\\u{1093E}\\u{10940}-\\u{10A4F}\\u{10A59}-\\u{10A7E}\\u{10A80}-\\u{10AEF}\\u{10AF7}-\\u{10B38}\\u{10B40}-\\u{10B98}\\u{10B9D}-\\u{10D6D}\\u{10D6F}-\\u{10EAC}\\u{10EAE}-\\u{10F54}\\u{10F5A}-\\u{10F85}\\u{10F8A}-\\u{11046}\\u{1104E}-\\u{110BA}\\u{110BD}\\u{110C2}-\\u{1113F}\\u{11144}-\\u{11173}\\u{11176}-\\u{111C4}\\u{111C9}-\\u{111CC}\\u{111CE}-\\u{111DA}\\u{111DC}\\u{111E0}-\\u{11237}\\u{1123E}-\\u{112A8}\\u{112AA}-\\u{113D3}\\u{113D6}\\u{113D9}-\\u{1144A}\\u{11450}-\\u{11459}\\u{1145C}\\u{1145E}-\\u{114C5}\\u{114C7}-\\u{115C0}\\u{115D8}-\\u{11640}\\u{11644}-\\u{1165F}\\u{1166D}-\\u{116B8}\\u{116BA}-\\u{1173B}\\u{1173F}-\\u{1183A}\\u{1183C}-\\u{11943}\\u{11947}-\\u{119E1}\\u{119E3}-\\u{11A3E}\\u{11A47}-\\u{11A99}\\u{11A9D}\\u{11AA3}-\\u{11AFF}\\u{11B0A}-\\u{11BE0}\\u{11BE2}-\\u{11C40}\\u{11C46}-\\u{11C6F}\\u{11C72}-\\u{11EF6}\\u{11EF9}-\\u{11F42}\\u{11F50}-\\u{11FFE}\\u{12000}-\\u{1246F}\\u{12475}-\\u{12FF0}\\u{12FF3}-\\u{16A6D}\\u{16A70}-\\u{16AF4}\\u{16AF6}-\\u{16B36}\\u{16B3C}-\\u{16B43}\\u{16B45}-\\u{16D6C}\\u{16D70}-\\u{16E96}\\u{16E9B}-\\u{16FE1}\\u{16FE3}-\\u{1BC9E}\\u{1BCA0}-\\u{1DA86}\\u{1DA8C}-\\u{1E5FE}\\u{1E600}-\\u{1E95D}\\u{1E960}-\\u{10FFFF}]+)+)\u002Fgmu;\n+    const [normalizedText, diffs] = normalize(text);\n+    const matches = normalizedText.matchAll(this.#regex);\n+    const links = [];\n+    for (const match of matches) {\n+      const [url, emailDomain] = match;\n+      let raw;\n+      if (url.startsWith(\"www.\") || url.startsWith(\"http:\u002F\u002F\") || url.startsWith(\"https:\u002F\u002F\")) {\n+        raw = url;\n+      } else if (URL.canParse(`http:\u002F\u002F${emailDomain}`)) {\n+        raw = url.startsWith(\"mailto:\") ? url : `mailto:${url}`;\n+      } else {\n+        continue;\n+      }\n+      const absoluteURL = createValidAbsoluteUrl(raw, null, {\n+        addDefaultProtocol: true\n+      });\n+      if (absoluteURL) {\n+        const [index, length] = getOriginalIndex(diffs, match.index, url.length);\n+        links.push({\n+          url: absoluteURL.href,\n+          index,\n+          length\n+        });\n+      }\n+    }\n+    return links;\n+  }\n+  static processLinks(pdfPageView) {\n+    return this.findLinks(pdfPageView._textHighlighter.textContentItemsStr.join(\"\\n\")).map(link => createLinkAnnotation(link, pdfPageView, this.#index++));\n+  }\n+}\n+\n+;\u002F\u002F .\u002Fweb\u002Fbase_pdf_page_view.js\n+\n+\n+class BasePDFPageView {\n+  #enableHWA = false;\n+  #loadingId = null;\n+  #minDurationToUpdateCanvas = 0;\n+  #renderError = null;\n+  #renderingState = RenderingStates.INITIAL;\n+  #showCanvas = null;\n+  #startTime = 0;\n+  #tempCanvas = null;\n+  canvas = null;\n+  div = null;\n+  eventBus = null;\n+  id = null;\n+  pageColors = null;\n+  renderingQueue = null;\n+  renderTask = null;\n+  resume = null;\n+  constructor(options) {\n+    this.#enableHWA = #enableHWA in options ? options.#enableHWA : options.enableHWA || false;\n+    this.eventBus = options.eventBus;\n+    this.id = options.id;\n+    this.pageColors = options.pageColors || null;\n+    this.renderingQueue = options.renderingQueue;\n+    this.#minDurationToUpdateCanvas = options.minDurationToUpdateCanvas ?? 500;\n+  }\n+  get renderingState() {\n+    return this.#renderingState;\n+  }\n+  set renderingState(state) {\n+    if (state === this.#renderingState) {\n+      return;\n+    }\n+    this.#renderingState = state;\n+    if (this.#loadingId) {\n+      clearTimeout(this.#loadingId);\n+      this.#loadingId = null;\n+    }\n+    switch (state) {\n+      case RenderingStates.PAUSED:\n+        this.div.classList.remove(\"loading\");\n+        this.#startTime = 0;\n+        this.#showCanvas?.(false);\n+        break;\n+      case RenderingStates.RUNNING:\n+        this.div.classList.add(\"loadingIcon\");\n+        this.#loadingId = setTimeout(() => {\n+          this.div.classList.add(\"loading\");\n+          this.#loadingId = null;\n+        }, 0);\n+        this.#startTime = Date.now();\n+        break;\n+      case RenderingStates.INITIAL:\n+      case RenderingStates.FINISHED:\n+        this.div.classList.remove(\"loadingIcon\", \"loading\");\n+        this.#startTime = 0;\n+        break;\n+    }\n+  }\n+  _createCanvas(onShow, hideUntilComplete = false) {\n+    const {\n+      pageColors\n+    } = this;\n+    const hasHCM = !!(pageColors?.background && pageColors?.foreground);\n+    const prevCanvas = this.canvas;\n+    const updateOnFirstShow = !prevCanvas && !hasHCM && !hideUntilComplete;\n+    let canvas = this.canvas = document.createElement(\"canvas\");\n+    this.#showCanvas = isLastShow => {\n+      if (updateOnFirstShow) {\n+        let tempCanvas = this.#tempCanvas;\n+        if (!isLastShow && this.#minDurationToUpdateCanvas > 0) {\n+          if (Date.now() - this.#startTime \u003C this.#minDurationToUpdateCanvas) {\n+            return;\n+          }\n+          if (!tempCanvas) {\n+            tempCanvas = this.#tempCanvas = canvas;\n+            canvas = this.canvas = canvas.cloneNode(false);\n+            onShow(canvas);\n+          }\n+        }\n+        if (tempCanvas) {\n+          const ctx = canvas.getContext(\"2d\", {\n+            alpha: false\n+          });\n+          ctx.drawImage(tempCanvas, 0, 0);\n+          if (isLastShow) {\n+            this.#resetTempCanvas();\n+          } else {\n+            this.#startTime = Date.now();\n+          }\n+          return;\n+        }\n+        onShow(canvas);\n+        this.#showCanvas = null;\n+        return;\n+      }\n+      if (!isLastShow) {\n+        return;\n+      }\n+      if (prevCanvas) {\n+        prevCanvas.replaceWith(canvas);\n+        prevCanvas.width = prevCanvas.height = 0;\n+      } else {\n+        onShow(canvas);\n+      }\n+    };\n+    const ctx = canvas.getContext(\"2d\", {\n+      alpha: false,\n+      willReadFrequently: !this.#enableHWA\n+    });\n+    return {\n+      canvas,\n+      prevCanvas,\n+      ctx\n+    };\n+  }\n+  #renderContinueCallback = cont => {\n+    this.#showCanvas?.(false);\n+    if (this.renderingQueue && !this.renderingQueue.isHighestPriority(this)) {\n+      this.renderingState = RenderingStates.PAUSED;\n+      this.resume = () => {\n+        this.renderingState = RenderingStates.RUNNING;\n+        cont();\n+      };\n+      return;\n+    }\n+    cont();\n+  };\n+  _resetCanvas() {\n+    const {\n+      canvas\n+    } = this;\n+    if (!canvas) {\n+      return;\n+    }\n+    canvas.remove();\n+    canvas.width = canvas.height = 0;\n+    this.canvas = null;\n+    this.#resetTempCanvas();\n+  }\n+  #resetTempCanvas() {\n+    if (this.#tempCanvas) {\n+      this.#tempCanvas.width = this.#tempCanvas.height = 0;\n+      this.#tempCanvas = null;\n+    }\n+  }\n+  async _drawCanvas(options, onCancel, onFinish) {\n+    const renderTask = this.renderTask = this.pdfPage.render(options);\n+    renderTask.onContinue = this.#renderContinueCallback;\n+    renderTask.onError = error => {\n+      if (error instanceof RenderingCancelledException) {\n+        onCancel();\n+        this.#renderError = null;\n+      }\n+    };\n+    let error = null;\n+    try {\n+      await renderTask.promise;\n+      this.#showCanvas?.(true);\n+    } catch (e) {\n+      if (e instanceof RenderingCancelledException) {\n+        return;\n+      }\n+      error = e;\n+      this.#showCanvas?.(true);\n+    } finally {\n+      this.#renderError = error;\n+      if (renderTask === this.renderTask) {\n+        this.renderTask = null;\n+      }\n+    }\n+    this.renderingState = RenderingStates.FINISHED;\n+    onFinish(renderTask);\n+    if (error) {\n+      throw error;\n+    }\n+  }\n+  cancelRendering({\n+    cancelExtraDelay = 0\n+  } = {}) {\n+    if (this.renderTask) {\n+      this.renderTask.cancel(cancelExtraDelay);\n+      this.renderTask = null;\n+    }\n+    this.resume = null;\n+  }\n+  dispatchPageRender() {\n+    this.eventBus.dispatch(\"pagerender\", {\n+      source: this,\n+      pageNumber: this.id\n+    });\n+  }\n+  dispatchPageRendered(cssTransform, isDetailView) {\n+    this.eventBus.dispatch(\"pagerendered\", {\n+      source: this,\n+      pageNumber: this.id,\n+      cssTransform,\n+      isDetailView,\n+      timestamp: performance.now(),\n+      error: this.#renderError\n+    });\n+  }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fdraw_layer_builder.js\n+;\u002F\u002F .\u002Fweb\u002Fdraw_layer_builder.js\n \n class DrawLayerBuilder {\n   #drawLayer = null;\n   constructor(options) {\n     this.pageIndex = options.pageIndex;\n   }\n-  async render(intent = \"display\") {\n+  async render({\n+    intent = \"display\"\n+  }) {\n     if (intent !== \"display\" || this.#drawLayer || this._cancelled) {\n       return;\n     }\n@@ -8419,7 +14173,184 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fstruct_tree_layer_builder.js\n+;\u002F\u002F .\u002Fweb\u002Fpdf_page_detail_view.js\n+\n+\n+\n+class PDFPageDetailView extends BasePDFPageView {\n+  #detailArea = null;\n+  renderingCancelled = false;\n+  constructor({\n+    pageView\n+  }) {\n+    super(pageView);\n+    this.pageView = pageView;\n+    this.renderingId = \"detail\" + this.id;\n+    this.div = pageView.div;\n+  }\n+  setPdfPage(pdfPage) {\n+    this.pageView.setPdfPage(pdfPage);\n+  }\n+  get pdfPage() {\n+    return this.pageView.pdfPage;\n+  }\n+  get renderingState() {\n+    return super.renderingState;\n+  }\n+  set renderingState(value) {\n+    this.renderingCancelled = false;\n+    super.renderingState = value;\n+  }\n+  reset({\n+    keepCanvas = false\n+  } = {}) {\n+    const renderingCancelled = this.renderingCancelled || this.renderingState === RenderingStates.RUNNING || this.renderingState === RenderingStates.PAUSED;\n+    this.cancelRendering();\n+    this.renderingState = RenderingStates.INITIAL;\n+    this.renderingCancelled = renderingCancelled;\n+    if (!keepCanvas) {\n+      this._resetCanvas();\n+    }\n+  }\n+  #shouldRenderDifferentArea(visibleArea) {\n+    if (!this.#detailArea) {\n+      return true;\n+    }\n+    const minDetailX = this.#detailArea.minX;\n+    const minDetailY = this.#detailArea.minY;\n+    const maxDetailX = this.#detailArea.width + minDetailX;\n+    const maxDetailY = this.#detailArea.height + minDetailY;\n+    if (visibleArea.minX \u003C minDetailX || visibleArea.minY \u003C minDetailY || visibleArea.maxX > maxDetailX || visibleArea.maxY > maxDetailY) {\n+      return true;\n+    }\n+    const {\n+      width: maxWidth,\n+      height: maxHeight,\n+      scale\n+    } = this.pageView.viewport;\n+    if (this.#detailArea.scale !== scale) {\n+      return true;\n+    }\n+    const paddingLeftSize = visibleArea.minX - minDetailX;\n+    const paddingRightSize = maxDetailX - visibleArea.maxX;\n+    const paddingTopSize = visibleArea.minY - minDetailY;\n+    const paddingBottomSize = maxDetailY - visibleArea.maxY;\n+    const MOVEMENT_THRESHOLD = 0.5;\n+    const ratio = (1 + MOVEMENT_THRESHOLD) \u002F MOVEMENT_THRESHOLD;\n+    if (minDetailX > 0 && paddingRightSize \u002F paddingLeftSize > ratio || maxDetailX \u003C maxWidth && paddingLeftSize \u002F paddingRightSize > ratio || minDetailY > 0 && paddingBottomSize \u002F paddingTopSize > ratio || maxDetailY \u003C maxHeight && paddingTopSize \u002F paddingBottomSize > ratio) {\n+      return true;\n+    }\n+    return false;\n+  }\n+  update({\n+    visibleArea = null,\n+    underlyingViewUpdated = false\n+  } = {}) {\n+    if (underlyingViewUpdated) {\n+      this.cancelRendering();\n+      this.renderingState = RenderingStates.INITIAL;\n+      return;\n+    }\n+    if (!this.#shouldRenderDifferentArea(visibleArea)) {\n+      return;\n+    }\n+    const {\n+      viewport,\n+      maxCanvasPixels,\n+      capCanvasAreaFactor\n+    } = this.pageView;\n+    const visibleWidth = visibleArea.maxX - visibleArea.minX;\n+    const visibleHeight = visibleArea.maxY - visibleArea.minY;\n+    const visiblePixels = visibleWidth * visibleHeight * OutputScale.pixelRatio ** 2;\n+    const maxDetailToVisibleLinearRatio = Math.sqrt(OutputScale.capPixels(maxCanvasPixels, capCanvasAreaFactor) \u002F visiblePixels);\n+    const maxOverflowScale = (maxDetailToVisibleLinearRatio - 1) \u002F 2;\n+    let overflowScale = Math.min(1, maxOverflowScale);\n+    if (overflowScale \u003C 0) {\n+      overflowScale = 0;\n+    }\n+    const overflowWidth = visibleWidth * overflowScale;\n+    const overflowHeight = visibleHeight * overflowScale;\n+    const minX = Math.max(0, visibleArea.minX - overflowWidth);\n+    const maxX = Math.min(viewport.width, visibleArea.maxX + overflowWidth);\n+    const minY = Math.max(0, visibleArea.minY - overflowHeight);\n+    const maxY = Math.min(viewport.height, visibleArea.maxY + overflowHeight);\n+    const width = maxX - minX;\n+    const height = maxY - minY;\n+    this.#detailArea = {\n+      minX,\n+      minY,\n+      width,\n+      height,\n+      scale: viewport.scale\n+    };\n+    this.reset({\n+      keepCanvas: true\n+    });\n+  }\n+  async draw() {\n+    if (this.pageView.detailView !== this) {\n+      return undefined;\n+    }\n+    const hideUntilComplete = this.pageView.renderingState === RenderingStates.FINISHED || this.renderingState === RenderingStates.FINISHED;\n+    if (this.renderingState !== RenderingStates.INITIAL) {\n+      console.error(\"Must be in new state before drawing\");\n+      this.reset();\n+    }\n+    const {\n+      div,\n+      pdfPage,\n+      viewport\n+    } = this.pageView;\n+    if (!pdfPage) {\n+      this.renderingState = RenderingStates.FINISHED;\n+      throw new Error(\"pdfPage is not loaded\");\n+    }\n+    this.renderingState = RenderingStates.RUNNING;\n+    const canvasWrapper = this.pageView._ensureCanvasWrapper();\n+    const {\n+      canvas,\n+      prevCanvas,\n+      ctx\n+    } = this._createCanvas(newCanvas => {\n+      if (canvasWrapper.firstElementChild?.tagName === \"CANVAS\") {\n+        canvasWrapper.firstElementChild.after(newCanvas);\n+      } else {\n+        canvasWrapper.prepend(newCanvas);\n+      }\n+    }, hideUntilComplete);\n+    canvas.setAttribute(\"aria-hidden\", \"true\");\n+    const {\n+      width,\n+      height\n+    } = viewport;\n+    const area = this.#detailArea;\n+    const {\n+      pixelRatio\n+    } = OutputScale;\n+    const transform = [pixelRatio, 0, 0, pixelRatio, -area.minX * pixelRatio, -area.minY * pixelRatio];\n+    canvas.width = area.width * pixelRatio;\n+    canvas.height = area.height * pixelRatio;\n+    const {\n+      style\n+    } = canvas;\n+    style.width = `${area.width * 100 \u002F width}%`;\n+    style.height = `${area.height * 100 \u002F height}%`;\n+    style.top = `${area.minY * 100 \u002F height}%`;\n+    style.left = `${area.minX * 100 \u002F width}%`;\n+    const renderingPromise = this._drawCanvas(this.pageView._getRenderingContext(ctx, transform), () => {\n+      this.canvas?.remove();\n+      this.canvas = prevCanvas;\n+    }, () => {\n+      this.dispatchPageRendered(false, true);\n+    });\n+    div.setAttribute(\"data-loaded\", true);\n+    this.dispatchPageRender();\n+    return renderingPromise;\n+  }\n+}\n+\n+;\u002F\u002F .\u002Fweb\u002Fstruct_tree_layer_builder.js\n+\n \n const PDF_ROLE_TO_HTML_ROLE = {\n   Document: null,\n@@ -8465,17 +14396,42 @@\n };\n const HEADING_PATTERN = \u002F^H(\\d+)$\u002F;\n class StructTreeLayerBuilder {\n-  #treeDom = undefined;\n-  get renderingDone() {\n-    return this.#treeDom !== undefined;\n-  }\n-  render(structTree) {\n-    if (this.#treeDom !== undefined) {\n-      return this.#treeDom;\n-    }\n-    const treeDom = this.#walk(structTree);\n-    treeDom?.classList.add(\"structTree\");\n-    return this.#treeDom = treeDom;\n+  #promise;\n+  #treeDom = null;\n+  #treePromise;\n+  #elementAttributes = new Map();\n+  #rawDims;\n+  #elementsToAddToTextLayer = null;\n+  constructor(pdfPage, rawDims) {\n+    this.#promise = pdfPage.getStructTree();\n+    this.#rawDims = rawDims;\n+  }\n+  async render() {\n+    if (this.#treePromise) {\n+      return this.#treePromise;\n+    }\n+    const {\n+      promise,\n+      resolve,\n+      reject\n+    } = Promise.withResolvers();\n+    this.#treePromise = promise;\n+    try {\n+      this.#treeDom = this.#walk(await this.#promise);\n+    } catch (ex) {\n+      reject(ex);\n+    }\n+    this.#promise = null;\n+    this.#treeDom?.classList.add(\"structTree\");\n+    resolve(this.#treeDom);\n+    return promise;\n+  }\n+  async getAriaAttributes(annotationId) {\n+    try {\n+      await this.render();\n+      return this.#elementAttributes.get(annotationId);\n+    } catch {}\n+    return null;\n   }\n   hide() {\n     if (this.#treeDom && !this.#treeDom.hidden) {\n@@ -8494,7 +14450,22 @@\n       lang\n     } = structElement;\n     if (alt !== undefined) {\n-      htmlElement.setAttribute(\"aria-label\", removeNullCharacters(alt));\n+      let added = false;\n+      const label = removeNullCharacters(alt);\n+      for (const child of structElement.children) {\n+        if (child.type === \"annotation\") {\n+          let attrs = this.#elementAttributes.get(child.id);\n+          if (!attrs) {\n+            attrs = new Map();\n+            this.#elementAttributes.set(child.id, attrs);\n+          }\n+          attrs.set(\"aria-label\", label);\n+          added = true;\n+        }\n+      }\n+      if (!added) {\n+        htmlElement.setAttribute(\"aria-label\", label);\n+      }\n     }\n     if (id !== undefined) {\n       htmlElement.setAttribute(\"aria-owns\", id);\n@@ -8503,6 +14474,52 @@\n       htmlElement.setAttribute(\"lang\", removeNullCharacters(lang, true));\n     }\n   }\n+  #addImageInTextLayer(node, element) {\n+    const {\n+      alt,\n+      bbox,\n+      children\n+    } = node;\n+    const child = children?.[0];\n+    if (!this.#rawDims || !alt || !bbox || child?.type !== \"content\") {\n+      return false;\n+    }\n+    const {\n+      id\n+    } = child;\n+    if (!id) {\n+      return false;\n+    }\n+    element.setAttribute(\"aria-owns\", id);\n+    const img = document.createElement(\"span\");\n+    (this.#elementsToAddToTextLayer ||= new Map()).set(id, img);\n+    img.setAttribute(\"role\", \"img\");\n+    img.setAttribute(\"aria-label\", removeNullCharacters(alt));\n+    const {\n+      pageHeight,\n+      pageX,\n+      pageY\n+    } = this.#rawDims;\n+    const calc = \"calc(var(--total-scale-factor) *\";\n+    const {\n+      style\n+    } = img;\n+    style.width = `${calc}${bbox[2] - bbox[0]}px)`;\n+    style.height = `${calc}${bbox[3] - bbox[1]}px)`;\n+    style.left = `${calc}${bbox[0] - pageX}px)`;\n+    style.top = `${calc}${pageHeight - bbox[3] + pageY}px)`;\n+    return true;\n+  }\n+  addElementsToTextLayer() {\n+    if (!this.#elementsToAddToTextLayer) {\n+      return;\n+    }\n+    for (const [id, img] of this.#elementsToAddToTextLayer) {\n+      document.getElementById(id)?.append(img);\n+    }\n+    this.#elementsToAddToTextLayer.clear();\n+    this.#elementsToAddToTextLayer = null;\n+  }\n   #walk(node) {\n     if (!node) {\n       return null;\n@@ -8519,6 +14536,9 @@\n       } else if (PDF_ROLE_TO_HTML_ROLE[role]) {\n         element.setAttribute(\"role\", PDF_ROLE_TO_HTML_ROLE[role]);\n       }\n+      if (role === \"Figure\" && this.#addImageInTextLayer(node, element)) {\n+        return element;\n+      }\n     }\n     this.#setAttributes(node, element);\n     if (node.children) {\n@@ -8534,7 +14554,9 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Ftext_accessibility.js\n+;\u002F\u002F .\u002Fweb\u002Ftext_accessibility.js\n+\n+\n \n class TextAccessibilityManager {\n   #enabled = false;\n@@ -8686,7 +14708,8 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Ftext_highlighter.js\n+;\u002F\u002F .\u002Fweb\u002Ftext_highlighter.js\n+\n class TextHighlighter {\n   #eventAbortController = null;\n   constructor({\n@@ -8815,7 +14838,14 @@\n         span.className = `${className} appended`;\n         span.append(node);\n         div.append(span);\n-        return className.includes(\"selected\") ? span.offsetLeft : 0;\n+        if (className.includes(\"selected\")) {\n+          const {\n+            left\n+          } = span.getClientRects()[0];\n+          const parentLeft = div.getBoundingClientRect().left;\n+          return left - parentLeft;\n+        }\n+        return 0;\n       }\n       div.append(node);\n       return 0;\n@@ -8906,7 +14936,16 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Ftext_layer_builder.js\n+;\u002F\u002F .\u002Fweb\u002Ftext_layer_builder.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n class TextLayerBuilder {\n@@ -8932,14 +14971,10 @@\n     this.div.tabIndex = 0;\n     this.div.className = \"textLayer\";\n   }\n-  #finishRendering() {\n-    this.#renderingDone = true;\n-    const endOfContent = document.createElement(\"div\");\n-    endOfContent.className = \"endOfContent\";\n-    this.div.append(endOfContent);\n-    this.#bindMouse(endOfContent);\n-  }\n-  async render(viewport, textContentParams = null) {\n+  async render({\n+    viewport,\n+    textContentParams = null\n+  }) {\n     if (this.#renderingDone && this.#textLayer) {\n       this.#textLayer.update({\n         viewport,\n@@ -8964,7 +14999,11 @@\n     this.highlighter?.setTextMapping(textDivs, textContentItemsStr);\n     this.accessibilityManager?.setTextMapping(textDivs);\n     await this.#textLayer.render();\n-    this.#finishRendering();\n+    this.#renderingDone = true;\n+    const endOfContent = document.createElement(\"div\");\n+    endOfContent.className = \"endOfContent\";\n+    this.div.append(endOfContent);\n+    this.#bindMouse(endOfContent);\n     this.#onAppend?.(this.div);\n     this.highlighter?.enable();\n     this.accessibilityManager?.enable();\n@@ -8992,16 +15031,15 @@\n     const {\n       div\n     } = this;\n-    div.addEventListener(\"mousedown\", evt => {\n-      end.classList.add(\"active\");\n+    div.addEventListener(\"mousedown\", () => {\n+      div.classList.add(\"selecting\");\n     });\n     div.addEventListener(\"copy\", event => {\n       if (!this.#enablePermissions) {\n         const selection = document.getSelection();\n         event.clipboardData.setData(\"text\u002Fplain\", removeNullCharacters(normalizeUnicode(selection.toString())));\n       }\n-      event.preventDefault();\n-      event.stopPropagation();\n+      stopEvent(event);\n     });\n     TextLayerBuilder.#textLayers.set(div, end);\n     TextLayerBuilder.#enableGlobalSelectionListener();\n@@ -9025,13 +15063,33 @@\n       textLayer.append(end);\n       end.style.width = \"\";\n       end.style.height = \"\";\n-      end.classList.remove(\"active\");\n+      textLayer.classList.remove(\"selecting\");\n     };\n+    let isPointerDown = false;\n+    document.addEventListener(\"pointerdown\", () => {\n+      isPointerDown = true;\n+    }, {\n+      signal\n+    });\n     document.addEventListener(\"pointerup\", () => {\n+      isPointerDown = false;\n       this.#textLayers.forEach(reset);\n     }, {\n       signal\n     });\n+    window.addEventListener(\"blur\", () => {\n+      isPointerDown = false;\n+      this.#textLayers.forEach(reset);\n+    }, {\n+      signal\n+    });\n+    document.addEventListener(\"keyup\", () => {\n+      if (!isPointerDown) {\n+        this.#textLayers.forEach(reset);\n+      }\n+    }, {\n+      signal\n+    });\n     var isFirefox, prevRange;\n     document.addEventListener(\"selectionchange\", () => {\n       const selection = document.getSelection();\n@@ -9050,7 +15108,7 @@\n       }\n       for (const [textLayerDiv, endDiv] of this.#textLayers) {\n         if (activeTextLayers.has(textLayerDiv)) {\n-          endDiv.classList.add(\"active\");\n+          textLayerDiv.classList.add(\"selecting\");\n         } else {\n           reset(endDiv, textLayerDiv);\n         }\n@@ -9065,7 +15123,15 @@\n       if (anchor.nodeType === Node.TEXT_NODE) {\n         anchor = anchor.parentNode;\n       }\n-      const parentTextLayer = anchor.parentElement.closest(\".textLayer\");\n+      if (!modifyStart && range.endOffset === 0) {\n+        do {\n+          while (!anchor.previousSibling) {\n+            anchor = anchor.parentNode;\n+          }\n+          anchor = anchor.previousSibling;\n+        } while (!anchor.childNodes.length);\n+      }\n+      const parentTextLayer = anchor.parentElement?.closest(\".textLayer\");\n       const endDiv = this.#textLayers.get(parentTextLayer);\n       if (endDiv) {\n         endDiv.style.width = parentTextLayer.style.width;\n@@ -9079,7 +15145,11 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fpdf_page_view.js\n+;\u002F\u002F .\u002Fweb\u002Fpdf_page_view.js\n+\n+\n+\n+\n \n \n \n@@ -9095,26 +15165,30 @@\n \n const DEFAULT_LAYER_PROPERTIES = null;\n const LAYERS_ORDER = new Map([[\"canvasWrapper\", 0], [\"textLayer\", 1], [\"annotationLayer\", 2], [\"annotationEditorLayer\", 3], [\"xfaLayer\", 3]]);\n-class PDFPageView {\n+class PDFPageView extends BasePDFPageView {\n   #annotationMode = AnnotationMode.ENABLE_FORMS;\n+  #canvasWrapper = null;\n+  #enableAutoLinking = true;\n   #hasRestrictedScaling = false;\n+  #isEditing = false;\n   #layerProperties = null;\n-  #loadingId = null;\n+  #needsRestrictedScaling = false;\n+  #originalViewport = null;\n   #previousRotation = null;\n-  #renderError = null;\n-  #renderingState = RenderingStates.INITIAL;\n+  #scaleRoundX = 1;\n+  #scaleRoundY = 1;\n   #textLayerMode = TextLayerMode.ENABLE;\n+  #userUnit = 1;\n   #useThumbnailCanvas = {\n     directDrawing: true,\n     initialOptionalContent: true,\n     regularAnnotations: true\n   };\n-  #viewportMap = new WeakMap();\n   #layers = [null, null, null, null];\n   constructor(options) {\n+    super(options);\n     const container = options.container;\n     const defaultViewport = options.defaultViewport;\n-    this.id = options.id;\n     this.renderingId = \"page\" + this.id;\n     this.#layerProperties = options.layerProperties || DEFAULT_LAYER_PROPERTIES;\n     this.pdfPage = null;\n@@ -9127,24 +15201,23 @@\n     this.#textLayerMode = options.textLayerMode ?? TextLayerMode.ENABLE;\n     this.#annotationMode = options.annotationMode ?? AnnotationMode.ENABLE_FORMS;\n     this.imageResourcesPath = options.imageResourcesPath || \"\";\n+    this.enableDetailCanvas = options.enableDetailCanvas ?? true;\n     this.maxCanvasPixels = options.maxCanvasPixels ?? AppOptions.get(\"maxCanvasPixels\");\n-    this.pageColors = options.pageColors || null;\n-    this.eventBus = options.eventBus;\n-    this.renderingQueue = options.renderingQueue;\n+    this.maxCanvasDim = options.maxCanvasDim || AppOptions.get(\"maxCanvasDim\");\n+    this.capCanvasAreaFactor = options.capCanvasAreaFactor ?? AppOptions.get(\"capCanvasAreaFactor\");\n+    this.#enableAutoLinking = options.enableAutoLinking !== false;\n     this.l10n = options.l10n;\n     this.l10n ||= new genericl10n_GenericL10n();\n-    this.renderTask = null;\n-    this.resume = null;\n     this._isStandalone = !this.renderingQueue?.hasViewer();\n     this._container = container;\n     this._annotationCanvasMap = null;\n     this.annotationLayer = null;\n     this.annotationEditorLayer = null;\n     this.textLayer = null;\n-    this.zoomLayer = null;\n     this.xfaLayer = null;\n     this.structTreeLayer = null;\n     this.drawLayer = null;\n+    this.detailView = null;\n     const div = document.createElement(\"div\");\n     div.className = \"page\";\n     div.setAttribute(\"data-page-number\", this.id);\n@@ -9158,6 +15231,9 @@\n     container?.append(div);\n     if (this._isStandalone) {\n       container?.style.setProperty(\"--scale-factor\", this.scale * PixelsPerInch.PDF_TO_CSS_UNITS);\n+      if (this.pageColors?.background) {\n+        container?.style.setProperty(\"--page-bg-color\", this.pageColors.background);\n+      }\n       const {\n         optionalContentConfigPromise\n       } = options;\n@@ -9191,46 +15267,26 @@\n     }\n     this.div.prepend(div);\n   }\n-  get renderingState() {\n-    return this.#renderingState;\n-  }\n-  set renderingState(state) {\n-    if (state === this.#renderingState) {\n-      return;\n-    }\n-    this.#renderingState = state;\n-    if (this.#loadingId) {\n-      clearTimeout(this.#loadingId);\n-      this.#loadingId = null;\n-    }\n-    switch (state) {\n-      case RenderingStates.PAUSED:\n-        this.div.classList.remove(\"loading\");\n-        break;\n-      case RenderingStates.RUNNING:\n-        this.div.classList.add(\"loadingIcon\");\n-        this.#loadingId = setTimeout(() => {\n-          this.div.classList.add(\"loading\");\n-          this.#loadingId = null;\n-        }, 0);\n-        break;\n-      case RenderingStates.INITIAL:\n-      case RenderingStates.FINISHED:\n-        this.div.classList.remove(\"loadingIcon\", \"loading\");\n-        break;\n-    }\n-  }\n   #setDimensions() {\n     const {\n+      div,\n       viewport\n     } = this;\n+    if (viewport.userUnit !== this.#userUnit) {\n+      if (viewport.userUnit !== 1) {\n+        div.style.setProperty(\"--user-unit\", viewport.userUnit);\n+      } else {\n+        div.style.removeProperty(\"--user-unit\");\n+      }\n+      this.#userUnit = viewport.userUnit;\n+    }\n     if (this.pdfPage) {\n       if (this.#previousRotation === viewport.rotation) {\n         return;\n       }\n       this.#previousRotation = viewport.rotation;\n     }\n-    setLayerDimensions(this.div, viewport, true, false);\n+    setLayerDimensions(div, viewport, true, false);\n   }\n   setPdfPage(pdfPage) {\n     if (this._isStandalone && (this.pageColors?.foreground === \"CanvasText\" || this.pageColors?.background === \"Canvas\")) {\n@@ -9251,6 +15307,9 @@\n     this.reset();\n     this.pdfPage?.cleanup();\n   }\n+  hasEditableAnnotations() {\n+    return !!this.annotationLayer?.hasEditableAnnotations();\n+  }\n   get _textHighlighter() {\n     return shadow(this, \"_textHighlighter\", new TextHighlighter({\n       pageIndex: this.id - 1,\n@@ -9268,9 +15327,13 @@\n   async #renderAnnotationLayer() {\n     let error = null;\n     try {\n-      await this.annotationLayer.render(this.viewport, \"display\");\n+      await this.annotationLayer.render({\n+        viewport: this.viewport,\n+        intent: \"display\",\n+        structTreeLayer: this.structTreeLayer\n+      });\n     } catch (ex) {\n-      console.error(`#renderAnnotationLayer: \"${ex}\".`);\n+      console.error(\"#renderAnnotationLayer:\", ex);\n       error = ex;\n     } finally {\n       this.#dispatchLayerRendered(\"annotationlayerrendered\", error);\n@@ -9279,9 +15342,12 @@\n   async #renderAnnotationEditorLayer() {\n     let error = null;\n     try {\n-      await this.annotationEditorLayer.render(this.viewport, \"display\");\n+      await this.annotationEditorLayer.render({\n+        viewport: this.viewport,\n+        intent: \"display\"\n+      });\n     } catch (ex) {\n-      console.error(`#renderAnnotationEditorLayer: \"${ex}\".`);\n+      console.error(\"#renderAnnotationEditorLayer:\", ex);\n       error = ex;\n     } finally {\n       this.#dispatchLayerRendered(\"annotationeditorlayerrendered\", error);\n@@ -9289,20 +15355,25 @@\n   }\n   async #renderDrawLayer() {\n     try {\n-      await this.drawLayer.render(\"display\");\n+      await this.drawLayer.render({\n+        intent: \"display\"\n+      });\n     } catch (ex) {\n-      console.error(`#renderDrawLayer: \"${ex}\".`);\n+      console.error(\"#renderDrawLayer:\", ex);\n     }\n   }\n   async #renderXfaLayer() {\n     let error = null;\n     try {\n-      const result = await this.xfaLayer.render(this.viewport, \"display\");\n+      const result = await this.xfaLayer.render({\n+        viewport: this.viewport,\n+        intent: \"display\"\n+      });\n       if (result?.textDivs && this._textHighlighter) {\n         this.#buildXfaTextContentItems(result.textDivs);\n       }\n     } catch (ex) {\n-      console.error(`#renderXfaLayer: \"${ex}\".`);\n+      console.error(\"#renderXfaLayer:\", ex);\n       error = ex;\n     } finally {\n       if (this.xfaLayer?.div) {\n@@ -9319,12 +15390,14 @@\n     }\n     let error = null;\n     try {\n-      await this.textLayer.render(this.viewport);\n+      await this.textLayer.render({\n+        viewport: this.viewport\n+      });\n     } catch (ex) {\n       if (ex instanceof AbortException) {\n         return;\n       }\n-      console.error(`#renderTextLayer: \"${ex}\".`);\n+      console.error(\"#renderTextLayer:\", ex);\n       error = ex;\n     }\n     this.#dispatchLayerRendered(\"textlayerrendered\", error);\n@@ -9334,12 +15407,13 @@\n     if (!this.textLayer) {\n       return;\n     }\n-    this.structTreeLayer ||= new StructTreeLayerBuilder();\n-    const tree = await (!this.structTreeLayer.renderingDone ? this.pdfPage.getStructTree() : null);\n-    const treeDom = this.structTreeLayer?.render(tree);\n+    const treeDom = await this.structTreeLayer?.render();\n     if (treeDom) {\n       this.l10n.pause();\n-      this.canvas?.append(treeDom);\n+      this.structTreeLayer?.addElementsToTextLayer();\n+      if (this.canvas && treeDom.parentNode !== this.canvas) {\n+        this.canvas.append(treeDom);\n+      }\n       this.l10n.resume();\n     }\n     this.structTreeLayer?.show();\n@@ -9353,25 +15427,34 @@\n     this._textHighlighter.setTextMapping(textDivs, items);\n     this._textHighlighter.enable();\n   }\n-  _resetZoomLayer(removeFromDOM = false) {\n-    if (!this.zoomLayer) {\n-      return;\n-    }\n-    const zoomLayerCanvas = this.zoomLayer.firstChild;\n-    this.#viewportMap.delete(zoomLayerCanvas);\n-    zoomLayerCanvas.width = 0;\n-    zoomLayerCanvas.height = 0;\n-    if (removeFromDOM) {\n-      this.zoomLayer.remove();\n+  async #injectLinkAnnotations(textLayerPromise) {\n+    let error = null;\n+    try {\n+      await textLayerPromise;\n+      if (!this.annotationLayer) {\n+        return;\n+      }\n+      await this.annotationLayer.injectLinkAnnotations({\n+        inferredLinks: Autolinker.processLinks(this),\n+        viewport: this.viewport,\n+        structTreeLayer: this.structTreeLayer\n+      });\n+    } catch (ex) {\n+      console.error(\"#injectLinkAnnotations:\", ex);\n+      error = ex;\n     }\n-    this.zoomLayer = null;\n+  }\n+  _resetCanvas() {\n+    super._resetCanvas();\n+    this.#originalViewport = null;\n   }\n   reset({\n-    keepZoomLayer = false,\n     keepAnnotationLayer = false,\n     keepAnnotationEditorLayer = false,\n     keepXfaLayer = false,\n-    keepTextLayer = false\n+    keepTextLayer = false,\n+    keepCanvasWrapper = false,\n+    preserveDetailViewState = false\n   } = {}) {\n     this.cancelRendering({\n       keepAnnotationLayer,\n@@ -9382,19 +15465,19 @@\n     this.renderingState = RenderingStates.INITIAL;\n     const div = this.div;\n     const childNodes = div.childNodes,\n-      zoomLayerNode = keepZoomLayer && this.zoomLayer || null,\n       annotationLayerNode = keepAnnotationLayer && this.annotationLayer?.div || null,\n       annotationEditorLayerNode = keepAnnotationEditorLayer && this.annotationEditorLayer?.div || null,\n       xfaLayerNode = keepXfaLayer && this.xfaLayer?.div || null,\n-      textLayerNode = keepTextLayer && this.textLayer?.div || null;\n+      textLayerNode = keepTextLayer && this.textLayer?.div || null,\n+      canvasWrapperNode = keepCanvasWrapper && this.#canvasWrapper || null;\n     for (let i = childNodes.length - 1; i >= 0; i--) {\n       const node = childNodes[i];\n       switch (node) {\n-        case zoomLayerNode:\n         case annotationLayerNode:\n         case annotationEditorLayerNode:\n         case xfaLayerNode:\n         case textLayerNode:\n+        case canvasWrapperNode:\n           continue;\n       }\n       node.remove();\n@@ -9417,14 +15500,45 @@\n       this.textLayer.hide();\n     }\n     this.structTreeLayer?.hide();\n-    if (!zoomLayerNode) {\n-      if (this.canvas) {\n-        this.#viewportMap.delete(this.canvas);\n-        this.canvas.width = 0;\n-        this.canvas.height = 0;\n-        delete this.canvas;\n+    if (!keepCanvasWrapper && this.#canvasWrapper) {\n+      this.#canvasWrapper = null;\n+      this._resetCanvas();\n+    }\n+    if (!preserveDetailViewState) {\n+      this.detailView?.reset({\n+        keepCanvas: keepCanvasWrapper\n+      });\n+      if (!keepCanvasWrapper) {\n+        this.detailView = null;\n+      }\n+    }\n+  }\n+  toggleEditingMode(isEditing) {\n+    this.#isEditing = isEditing;\n+    if (!this.hasEditableAnnotations()) {\n+      return;\n+    }\n+    this.reset({\n+      keepAnnotationLayer: true,\n+      keepAnnotationEditorLayer: true,\n+      keepXfaLayer: true,\n+      keepTextLayer: true,\n+      keepCanvasWrapper: true\n+    });\n+  }\n+  updateVisibleArea(visibleArea) {\n+    if (this.enableDetailCanvas) {\n+      if (this.#needsRestrictedScaling && this.maxCanvasPixels > 0 && visibleArea) {\n+        this.detailView ??= new PDFPageDetailView({\n+          pageView: this\n+        });\n+        this.detailView.update({\n+          visibleArea\n+        });\n+      } else if (this.detailView) {\n+        this.detailView.reset();\n+        this.detailView = null;\n       }\n-      this._resetZoomLayer();\n     }\n   }\n   update({\n@@ -9456,28 +15570,13 @@\n     if (this._isStandalone) {\n       this._container?.style.setProperty(\"--scale-factor\", this.viewport.scale);\n     }\n+    this.#computeScale();\n     if (this.canvas) {\n-      let onlyCssZoom = false;\n-      if (this.#hasRestrictedScaling) {\n-        if (this.maxCanvasPixels === 0) {\n-          onlyCssZoom = true;\n-        } else if (this.maxCanvasPixels > 0) {\n-          const {\n-            width,\n-            height\n-          } = this.viewport;\n-          const {\n-            sx,\n-            sy\n-          } = this.outputScale;\n-          onlyCssZoom = (Math.floor(width) * sx | 0) * (Math.floor(height) * sy | 0) > this.maxCanvasPixels;\n-        }\n-      }\n+      const onlyCssZoom = this.#hasRestrictedScaling && this.#needsRestrictedScaling;\n       const postponeDrawing = drawingDelay >= 0 && drawingDelay \u003C 1000;\n       if (postponeDrawing || onlyCssZoom) {\n         if (postponeDrawing && !onlyCssZoom && this.renderingState !== RenderingStates.FINISHED) {\n           this.cancelRendering({\n-            keepZoomLayer: true,\n             keepAnnotationLayer: true,\n             keepAnnotationEditorLayer: true,\n             keepXfaLayer: true,\n@@ -9488,42 +15587,48 @@\n           this.#useThumbnailCanvas.directDrawing = false;\n         }\n         this.cssTransform({\n-          target: this.canvas,\n           redrawAnnotationLayer: true,\n           redrawAnnotationEditorLayer: true,\n           redrawXfaLayer: true,\n           redrawTextLayer: !postponeDrawing,\n           hideTextLayer: postponeDrawing\n         });\n-        if (postponeDrawing) {\n-          return;\n+        if (!postponeDrawing) {\n+          this.detailView?.update({\n+            underlyingViewUpdated: true\n+          });\n+          this.dispatchPageRendered(true, false);\n         }\n-        this.eventBus.dispatch(\"pagerendered\", {\n-          source: this,\n-          pageNumber: this.id,\n-          cssTransform: true,\n-          timestamp: performance.now(),\n-          error: this.#renderError\n-        });\n         return;\n       }\n-      if (!this.zoomLayer && !this.canvas.hidden) {\n-        this.zoomLayer = this.canvas.parentNode;\n-        this.zoomLayer.style.position = \"absolute\";\n-      }\n-    }\n-    if (this.zoomLayer) {\n-      this.cssTransform({\n-        target: this.zoomLayer.firstChild\n-      });\n     }\n+    this.cssTransform({});\n     this.reset({\n-      keepZoomLayer: true,\n       keepAnnotationLayer: true,\n       keepAnnotationEditorLayer: true,\n       keepXfaLayer: true,\n-      keepTextLayer: true\n+      keepTextLayer: true,\n+      keepCanvasWrapper: true,\n+      preserveDetailViewState: true\n     });\n+    this.detailView?.update({\n+      underlyingViewUpdated: true\n+    });\n+  }\n+  #computeScale() {\n+    const {\n+      width,\n+      height\n+    } = this.viewport;\n+    const outputScale = this.outputScale = new OutputScale();\n+    if (this.maxCanvasPixels === 0) {\n+      const invScale = 1 \u002F this.scale;\n+      outputScale.sx *= invScale;\n+      outputScale.sy *= invScale;\n+      this.#needsRestrictedScaling = true;\n+    } else {\n+      this.#needsRestrictedScaling = outputScale.limitCanvas(width, height, this.maxCanvasPixels, this.maxCanvasDim, this.capCanvasAreaFactor);\n+    }\n   }\n   cancelRendering({\n     keepAnnotationLayer = false,\n@@ -9532,23 +15637,21 @@\n     keepTextLayer = false,\n     cancelExtraDelay = 0\n   } = {}) {\n-    if (this.renderTask) {\n-      this.renderTask.cancel(cancelExtraDelay);\n-      this.renderTask = null;\n-    }\n-    this.resume = null;\n+    super.cancelRendering({\n+      cancelExtraDelay\n+    });\n     if (this.textLayer && (!keepTextLayer || !this.textLayer.div)) {\n       this.textLayer.cancel();\n       this.textLayer = null;\n     }\n-    if (this.structTreeLayer && !this.textLayer) {\n-      this.structTreeLayer = null;\n-    }\n     if (this.annotationLayer && (!keepAnnotationLayer || !this.annotationLayer.div)) {\n       this.annotationLayer.cancel();\n       this.annotationLayer = null;\n       this._annotationCanvasMap = null;\n     }\n+    if (this.structTreeLayer && !this.textLayer) {\n+      this.structTreeLayer = null;\n+    }\n     if (this.annotationEditorLayer && (!keepAnnotationEditorLayer || !this.annotationEditorLayer.div)) {\n       if (this.drawLayer) {\n         this.drawLayer.cancel();\n@@ -9564,35 +15667,32 @@\n     }\n   }\n   cssTransform({\n-    target,\n     redrawAnnotationLayer = false,\n     redrawAnnotationEditorLayer = false,\n     redrawXfaLayer = false,\n     redrawTextLayer = false,\n     hideTextLayer = false\n   }) {\n-    if (!target.hasAttribute(\"zooming\")) {\n-      target.setAttribute(\"zooming\", true);\n-      const {\n-        style\n-      } = target;\n-      style.width = style.height = \"\";\n+    const {\n+      canvas\n+    } = this;\n+    if (!canvas) {\n+      return;\n     }\n-    const originalViewport = this.#viewportMap.get(target);\n+    const originalViewport = this.#originalViewport;\n     if (this.viewport !== originalViewport) {\n-      const relativeRotation = this.viewport.rotation - originalViewport.rotation;\n-      const absRotation = Math.abs(relativeRotation);\n-      let scaleX = 1,\n-        scaleY = 1;\n-      if (absRotation === 90 || absRotation === 270) {\n+      const relativeRotation = (360 + this.viewport.rotation - originalViewport.rotation) % 360;\n+      if (relativeRotation === 90 || relativeRotation === 270) {\n         const {\n           width,\n           height\n         } = this.viewport;\n-        scaleX = height \u002F width;\n-        scaleY = width \u002F height;\n+        const scaleX = height \u002F width;\n+        const scaleY = width \u002F height;\n+        canvas.style.transform = `rotate(${relativeRotation}deg) scale(${scaleX},${scaleY})`;\n+      } else {\n+        canvas.style.transform = relativeRotation === 0 ? \"\" : `rotate(${relativeRotation}deg)`;\n       }\n-      target.style.transform = `rotate(${relativeRotation}deg) scale(${scaleX}, ${scaleY})`;\n     }\n     if (redrawAnnotationLayer && this.annotationLayer) {\n       this.#renderAnnotationLayer();\n@@ -9624,28 +15724,26 @@\n   getPagePoint(x, y) {\n     return this.viewport.convertToPdfPoint(x, y);\n   }\n-  async #finishRenderTask(renderTask, error = null) {\n-    if (renderTask === this.renderTask) {\n-      this.renderTask = null;\n-    }\n-    if (error instanceof RenderingCancelledException) {\n-      this.#renderError = null;\n-      return;\n-    }\n-    this.#renderError = error;\n-    this.renderingState = RenderingStates.FINISHED;\n-    this._resetZoomLayer(true);\n-    this.#useThumbnailCanvas.regularAnnotations = !renderTask.separateAnnots;\n-    this.eventBus.dispatch(\"pagerendered\", {\n-      source: this,\n-      pageNumber: this.id,\n-      cssTransform: false,\n-      timestamp: performance.now(),\n-      error: this.#renderError\n-    });\n-    if (error) {\n-      throw error;\n+  _ensureCanvasWrapper() {\n+    let canvasWrapper = this.#canvasWrapper;\n+    if (!canvasWrapper) {\n+      canvasWrapper = this.#canvasWrapper = document.createElement(\"div\");\n+      canvasWrapper.classList.add(\"canvasWrapper\");\n+      this.#addLayer(canvasWrapper, \"canvasWrapper\");\n     }\n+    return canvasWrapper;\n+  }\n+  _getRenderingContext(canvasContext, transform) {\n+    return {\n+      canvasContext,\n+      transform,\n+      viewport: this.viewport,\n+      annotationMode: this.#annotationMode,\n+      optionalContentConfigPromise: this._optionalContentConfigPromise,\n+      annotationCanvasMap: this._annotationCanvasMap,\n+      pageColors: this.pageColors,\n+      isEditing: this.#isEditing\n+    };\n   }\n   async draw() {\n     if (this.renderingState !== RenderingStates.INITIAL) {\n@@ -9655,7 +15753,6 @@\n     const {\n       div,\n       l10n,\n-      pageColors,\n       pdfPage,\n       viewport\n     } = this;\n@@ -9664,9 +15761,7 @@\n       throw new Error(\"pdfPage is not loaded\");\n     }\n     this.renderingState = RenderingStates.RUNNING;\n-    const canvasWrapper = document.createElement(\"div\");\n-    canvasWrapper.classList.add(\"canvasWrapper\");\n-    this.#addLayer(canvasWrapper, \"canvasWrapper\");\n+    const canvasWrapper = this._ensureCanvasWrapper();\n     if (!this.textLayer && this.#textLayerMode !== TextLayerMode.DISABLE && !pdfPage.isPureXfa) {\n       this._accessibilityManager ||= new TextAccessibilityManager();\n       this.textLayer = new TextLayerBuilder({\n@@ -9710,82 +15805,57 @@\n         }\n       });\n     }\n-    const renderContinueCallback = cont => {\n-      showCanvas?.(false);\n-      if (this.renderingQueue && !this.renderingQueue.isHighestPriority(this)) {\n-        this.renderingState = RenderingStates.PAUSED;\n-        this.resume = () => {\n-          this.renderingState = RenderingStates.RUNNING;\n-          cont();\n-        };\n-        return;\n-      }\n-      cont();\n-    };\n     const {\n       width,\n       height\n     } = viewport;\n-    const canvas = document.createElement(\"canvas\");\n-    canvas.setAttribute(\"role\", \"presentation\");\n-    canvas.hidden = true;\n-    const hasHCM = !!(pageColors?.background && pageColors?.foreground);\n-    let showCanvas = isLastShow => {\n-      if (!hasHCM || isLastShow) {\n-        canvas.hidden = false;\n-        showCanvas = null;\n-      }\n-    };\n-    canvasWrapper.append(canvas);\n-    this.canvas = canvas;\n-    const ctx = canvas.getContext(\"2d\", {\n-      alpha: false\n+    this.#originalViewport = viewport;\n+    const {\n+      canvas,\n+      prevCanvas,\n+      ctx\n+    } = this._createCanvas(newCanvas => {\n+      canvasWrapper.prepend(newCanvas);\n     });\n-    const outputScale = this.outputScale = new OutputScale();\n-    if (this.maxCanvasPixels === 0) {\n-      const invScale = 1 \u002F this.scale;\n-      outputScale.sx *= invScale;\n-      outputScale.sy *= invScale;\n-      this.#hasRestrictedScaling = true;\n-    } else if (this.maxCanvasPixels > 0) {\n-      const pixelsInViewport = width * height;\n-      const maxScale = Math.sqrt(this.maxCanvasPixels \u002F pixelsInViewport);\n-      if (outputScale.sx > maxScale || outputScale.sy > maxScale) {\n-        outputScale.sx = maxScale;\n-        outputScale.sy = maxScale;\n-        this.#hasRestrictedScaling = true;\n-      } else {\n-        this.#hasRestrictedScaling = false;\n-      }\n+    canvas.setAttribute(\"role\", \"presentation\");\n+    if (!this.outputScale) {\n+      this.#computeScale();\n     }\n+    const {\n+      outputScale\n+    } = this;\n+    this.#hasRestrictedScaling = this.#needsRestrictedScaling;\n     const sfx = approximateFraction(outputScale.sx);\n     const sfy = approximateFraction(outputScale.sy);\n-    canvas.width = roundToDivide(width * outputScale.sx, sfx[0]);\n-    canvas.height = roundToDivide(height * outputScale.sy, sfy[0]);\n-    const {\n-      style\n-    } = canvas;\n-    style.width = roundToDivide(width, sfx[1]) + \"px\";\n-    style.height = roundToDivide(height, sfy[1]) + \"px\";\n-    this.#viewportMap.set(canvas, viewport);\n+    const canvasWidth = canvas.width = floorToDivide(calcRound(width * outputScale.sx), sfx[0]);\n+    const canvasHeight = canvas.height = floorToDivide(calcRound(height * outputScale.sy), sfy[0]);\n+    const pageWidth = floorToDivide(calcRound(width), sfx[1]);\n+    const pageHeight = floorToDivide(calcRound(height), sfy[1]);\n+    outputScale.sx = canvasWidth \u002F pageWidth;\n+    outputScale.sy = canvasHeight \u002F pageHeight;\n+    if (this.#scaleRoundX !== sfx[1]) {\n+      div.style.setProperty(\"--scale-round-x\", `${sfx[1]}px`);\n+      this.#scaleRoundX = sfx[1];\n+    }\n+    if (this.#scaleRoundY !== sfy[1]) {\n+      div.style.setProperty(\"--scale-round-y\", `${sfy[1]}px`);\n+      this.#scaleRoundY = sfy[1];\n+    }\n     const transform = outputScale.scaled ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0] : null;\n-    const renderContext = {\n-      canvasContext: ctx,\n-      transform,\n-      viewport,\n-      annotationMode: this.#annotationMode,\n-      optionalContentConfigPromise: this._optionalContentConfigPromise,\n-      annotationCanvasMap: this._annotationCanvasMap,\n-      pageColors\n-    };\n-    const renderTask = this.renderTask = pdfPage.render(renderContext);\n-    renderTask.onContinue = renderContinueCallback;\n-    const resultPromise = renderTask.promise.then(async () => {\n-      showCanvas?.(true);\n-      await this.#finishRenderTask(renderTask);\n-      this.#renderTextLayer();\n+    const resultPromise = this._drawCanvas(this._getRenderingContext(ctx, transform), () => {\n+      prevCanvas?.remove();\n+      this._resetCanvas();\n+    }, renderTask => {\n+      this.#useThumbnailCanvas.regularAnnotations = !renderTask.separateAnnots;\n+      this.dispatchPageRendered(false, false);\n+    }).then(async () => {\n+      this.structTreeLayer ||= new StructTreeLayerBuilder(pdfPage, viewport.rawDims);\n+      const textLayerPromise = this.#renderTextLayer();\n       if (this.annotationLayer) {\n         await this.#renderAnnotationLayer();\n+        if (this.#enableAutoLinking && this.annotationLayer && this.textLayer) {\n+          await this.#injectLinkAnnotations(textLayerPromise);\n+        }\n       }\n       const {\n         annotationEditorUIManager\n@@ -9798,26 +15868,20 @@\n       });\n       await this.#renderDrawLayer();\n       this.drawLayer.setParent(canvasWrapper);\n-      if (!this.annotationEditorLayer) {\n-        this.annotationEditorLayer = new AnnotationEditorLayerBuilder({\n-          uiManager: annotationEditorUIManager,\n-          pdfPage,\n-          l10n,\n-          accessibilityManager: this._accessibilityManager,\n-          annotationLayer: this.annotationLayer?.annotationLayer,\n-          textLayer: this.textLayer,\n-          drawLayer: this.drawLayer.getDrawLayer(),\n-          onAppend: annotationEditorLayerDiv => {\n-            this.#addLayer(annotationEditorLayerDiv, \"annotationEditorLayer\");\n-          }\n-        });\n-      }\n+      this.annotationEditorLayer ||= new AnnotationEditorLayerBuilder({\n+        uiManager: annotationEditorUIManager,\n+        pdfPage,\n+        l10n,\n+        structTreeLayer: this.structTreeLayer,\n+        accessibilityManager: this._accessibilityManager,\n+        annotationLayer: this.annotationLayer?.annotationLayer,\n+        textLayer: this.textLayer,\n+        drawLayer: this.drawLayer.getDrawLayer(),\n+        onAppend: annotationEditorLayerDiv => {\n+          this.#addLayer(annotationEditorLayerDiv, \"annotationEditorLayer\");\n+        }\n+      });\n       this.#renderAnnotationEditorLayer();\n-    }, error => {\n-      if (!(error instanceof RenderingCancelledException)) {\n-        showCanvas?.(true);\n-      }\n-      return this.#finishRenderTask(renderTask, error);\n     });\n     if (pdfPage.isPureXfa) {\n       if (!this.xfaLayer) {\n@@ -9834,10 +15898,7 @@\n       this.#renderXfaLayer();\n     }\n     div.setAttribute(\"data-loaded\", true);\n-    this.eventBus.dispatch(\"pagerender\", {\n-      source: this,\n-      pageNumber: this.id\n-    });\n+    this.dispatchPageRender();\n     return resultPromise;\n   }\n   setPageLabel(label) {\n@@ -9861,7 +15922,20 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fpdf_viewer.js\n+;\u002F\u002F .\u002Fweb\u002Fpdf_viewer.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n \n@@ -9870,8 +15944,8 @@\n \n const DEFAULT_CACHE_SIZE = 10;\n const PagesCountLimit = {\n-  FORCE_SCROLL_MODE_PAGE: 15000,\n-  FORCE_LAZY_PAGE_INIT: 7500,\n+  FORCE_SCROLL_MODE_PAGE: 10000,\n+  FORCE_LAZY_PAGE_INIT: 5000,\n   PAUSE_EAGER_PAGE_INIT: 250\n };\n function isValidAnnotationEditorMode(mode) {\n@@ -9933,10 +16007,19 @@\n   #annotationEditorUIManager = null;\n   #annotationMode = AnnotationMode.ENABLE_FORMS;\n   #containerTopLeft = null;\n+  #editorUndoBar = null;\n+  #enableHWA = false;\n   #enableHighlightFloatingButton = false;\n   #enablePermissions = false;\n+  #enableUpdatedAddImage = false;\n+  #enableNewAltTextWhenAddingImage = false;\n+  #enableAutoLinking = true;\n   #eventAbortController = null;\n+  #minDurationToUpdateCanvas = 0;\n   #mlManager = null;\n+  #scrollTimeoutId = null;\n+  #switchAnnotationEditorModeAC = null;\n+  #switchAnnotationEditorModeTimeoutId = null;\n   #getAllTextInProgress = false;\n   #hiddenCopyElement = null;\n   #interruptCopyCondition = false;\n@@ -9944,9 +16027,11 @@\n   #resizeObserver = new ResizeObserver(this.#resizeObserverCallback.bind(this));\n   #scrollModePageState = null;\n   #scaleTimeoutId = null;\n+  #signatureManager = null;\n+  #supportsPinchToZoom = true;\n   #textLayerMode = TextLayerMode.ENABLE;\n   constructor(options) {\n-    const viewerVersion = \"4.3.136\";\n+    const viewerVersion = \"5.3.31\";\n     if (version !== viewerVersion) {\n       throw new Error(`The API version \"${version}\" does not match the Viewer version \"${viewerVersion}\".`);\n     }\n@@ -9964,6 +16049,8 @@\n     this.downloadManager = options.downloadManager || null;\n     this.findController = options.findController || null;\n     this.#altTextManager = options.altTextManager || null;\n+    this.#signatureManager = options.signatureManager || null;\n+    this.#editorUndoBar = options.editorUndoBar || null;\n     if (this.findController) {\n       this.findController.onIsPageVisible = pageNumber => this._getVisiblePages().ids.has(pageNumber);\n     }\n@@ -9973,15 +16060,24 @@\n     this.#annotationEditorMode = options.annotationEditorMode ?? AnnotationEditorType.NONE;\n     this.#annotationEditorHighlightColors = options.annotationEditorHighlightColors || null;\n     this.#enableHighlightFloatingButton = options.enableHighlightFloatingButton === true;\n+    this.#enableUpdatedAddImage = options.enableUpdatedAddImage === true;\n+    this.#enableNewAltTextWhenAddingImage = options.enableNewAltTextWhenAddingImage === true;\n     this.imageResourcesPath = options.imageResourcesPath || \"\";\n     this.enablePrintAutoRotate = options.enablePrintAutoRotate || false;\n     this.removePageBorders = options.removePageBorders || false;\n     this.maxCanvasPixels = options.maxCanvasPixels;\n+    this.maxCanvasDim = options.maxCanvasDim;\n+    this.capCanvasAreaFactor = options.capCanvasAreaFactor;\n+    this.enableDetailCanvas = options.enableDetailCanvas ?? true;\n     this.l10n = options.l10n;\n     this.l10n ||= new genericl10n_GenericL10n();\n     this.#enablePermissions = options.enablePermissions || false;\n     this.pageColors = options.pageColors || null;\n     this.#mlManager = options.mlManager || null;\n+    this.#enableHWA = options.enableHWA || false;\n+    this.#supportsPinchToZoom = options.supportsPinchToZoom !== false;\n+    this.#enableAutoLinking = options.enableAutoLinking !== false;\n+    this.#minDurationToUpdateCanvas = options.minDurationToUpdateCanvas ?? 500;\n     this.defaultRenderingQueue = !options.renderingQueue;\n     if (this.defaultRenderingQueue) {\n       this.renderingQueue = new PDFRenderingQueue();\n@@ -9989,7 +16085,16 @@\n     } else {\n       this.renderingQueue = options.renderingQueue;\n     }\n-    this.scroll = watchScroll(this.container, this._scrollUpdate.bind(this));\n+    const {\n+      abortSignal\n+    } = options;\n+    abortSignal?.addEventListener(\"abort\", () => {\n+      this.#resizeObserver.disconnect();\n+      this.#resizeObserver = null;\n+    }, {\n+      once: true\n+    });\n+    this.scroll = watchScroll(this.container, this._scrollUpdate.bind(this), abortSignal);\n     this.presentationModeState = PresentationModeState.UNKNOWN;\n     this._resetView();\n     if (this.removePageBorders) {\n@@ -10205,17 +16310,17 @@\n     if (document.visibilityState === \"hidden\" || !this.container.offsetParent || this._getVisiblePages().views.length === 0) {\n       return;\n     }\n-    const hiddenCapability = Promise.withResolvers();\n-    function onVisibilityChange() {\n+    const hiddenCapability = Promise.withResolvers(),\n+      ac = new AbortController();\n+    document.addEventListener(\"visibilitychange\", () => {\n       if (document.visibilityState === \"hidden\") {\n         hiddenCapability.resolve();\n       }\n-    }\n-    document.addEventListener(\"visibilitychange\", onVisibilityChange, {\n-      signal\n+    }, {\n+      signal: AbortSignal.any([signal, ac.signal])\n     });\n     await Promise.race([this._onePageRenderedCapability.promise, hiddenCapability.promise]);\n-    document.removeEventListener(\"visibilitychange\", onVisibilityChange);\n+    ac.abort();\n   }\n   async getAllText() {\n     const texts = [];\n@@ -10249,15 +16354,18 @@\n     } = selection;\n     if (anchorNode && focusNode && selection.containsNode(this.#hiddenCopyElement)) {\n       if (this.#getAllTextInProgress || textLayerMode === TextLayerMode.ENABLE_PERMISSIONS) {\n-        event.preventDefault();\n-        event.stopPropagation();\n+        stopEvent(event);\n         return;\n       }\n       this.#getAllTextInProgress = true;\n-      const savedCursor = this.container.style.cursor;\n-      this.container.style.cursor = \"wait\";\n-      const interruptCopy = ev => this.#interruptCopyCondition = ev.key === \"Escape\";\n-      window.addEventListener(\"keydown\", interruptCopy);\n+      const {\n+        classList\n+      } = this.viewer;\n+      classList.add(\"copyAll\");\n+      const ac = new AbortController();\n+      window.addEventListener(\"keydown\", ev => this.#interruptCopyCondition = ev.key === \"Escape\", {\n+        signal: ac.signal\n+      });\n       this.getAllText().then(async text => {\n         if (text !== null) {\n           await navigator.clipboard.writeText(text);\n@@ -10267,11 +16375,10 @@\n       }).finally(() => {\n         this.#getAllTextInProgress = false;\n         this.#interruptCopyCondition = false;\n-        window.removeEventListener(\"keydown\", interruptCopy);\n-        this.container.style.cursor = savedCursor;\n+        ac.abort();\n+        classList.remove(\"copyAll\");\n       });\n-      event.preventDefault();\n-      event.stopPropagation();\n+      stopEvent(event);\n     }\n   }\n   setDocument(pdfDocument) {\n@@ -10283,10 +16390,8 @@\n       this._resetView();\n       this.findController?.setDocument(null);\n       this._scriptingManager?.setDocument(null);\n-      if (this.#annotationEditorUIManager) {\n-        this.#annotationEditorUIManager.destroy();\n-        this.#annotationEditorUIManager = null;\n-      }\n+      this.#annotationEditorUIManager?.destroy();\n+      this.#annotationEditorUIManager = null;\n     }\n     this.pdfDocument = pdfDocument;\n     if (!pdfDocument) {\n@@ -10332,7 +16437,7 @@\n       signal\n     });\n     const onAfterDraw = evt => {\n-      if (evt.cssTransform) {\n+      if (evt.cssTransform || evt.isDetailView) {\n         return;\n       }\n       this._onePageRenderedCapability.resolve({\n@@ -10364,12 +16469,13 @@\n         if (pdfDocument.isPureXfa) {\n           console.warn(\"Warning: XFA-editing is not implemented.\");\n         } else if (isValidAnnotationEditorMode(mode)) {\n-          this.#annotationEditorUIManager = new AnnotationEditorUIManager(this.container, viewer, this.#altTextManager, eventBus, pdfDocument, pageColors, this.#annotationEditorHighlightColors, this.#enableHighlightFloatingButton, this.#mlManager);\n+          this.#annotationEditorUIManager = new AnnotationEditorUIManager(this.container, viewer, this.#altTextManager, this.#signatureManager, eventBus, pdfDocument, pageColors, this.#annotationEditorHighlightColors, this.#enableHighlightFloatingButton, this.#enableUpdatedAddImage, this.#enableNewAltTextWhenAddingImage, this.#mlManager, this.#editorUndoBar, this.#supportsPinchToZoom);\n           eventBus.dispatch(\"annotationeditoruimanager\", {\n             source: this,\n             uiManager: this.#annotationEditorUIManager\n           });\n           if (mode !== AnnotationEditorType.NONE) {\n+            this.#preloadEditingData(mode);\n             this.#annotationEditorUIManager.updateMode(mode);\n           }\n         } else {\n@@ -10382,6 +16488,9 @@\n         scale: scale * PixelsPerInch.PDF_TO_CSS_UNITS\n       });\n       viewer.style.setProperty(\"--scale-factor\", viewport.scale);\n+      if (pageColors?.background) {\n+        viewer.style.setProperty(\"--page-bg-color\", pageColors.background);\n+      }\n       if (pageColors?.foreground === \"CanvasText\" || pageColors?.background === \"Canvas\") {\n         viewer.style.setProperty(\"--hcm-highlight-filter\", pdfDocument.filterFactory.addHighlightHCMFilter(\"highlight\", \"CanvasText\", \"Canvas\", \"HighlightText\", \"Highlight\"));\n         viewer.style.setProperty(\"--hcm-highlight-selected-filter\", pdfDocument.filterFactory.addHighlightHCMFilter(\"highlight_selected\", \"CanvasText\", \"Canvas\", \"HighlightText\", \"ButtonText\"));\n@@ -10399,9 +16508,15 @@\n           annotationMode,\n           imageResourcesPath: this.imageResourcesPath,\n           maxCanvasPixels: this.maxCanvasPixels,\n+          maxCanvasDim: this.maxCanvasDim,\n+          capCanvasAreaFactor: this.capCanvasAreaFactor,\n+          enableDetailCanvas: this.enableDetailCanvas,\n           pageColors,\n           l10n: this.l10n,\n-          layerProperties: this._layerProperties\n+          layerProperties: this._layerProperties,\n+          enableHWA: this.#enableHWA,\n+          enableAutoLinking: this.#enableAutoLinking,\n+          minDurationToUpdateCanvas: this.#minDurationToUpdateCanvas\n         });\n         this._pages.push(pageView);\n       }\n@@ -10522,6 +16637,8 @@\n     this.viewer.removeAttribute(\"lang\");\n     this.#hiddenCopyElement?.remove();\n     this.#hiddenCopyElement = null;\n+    this.#cleanupTimeouts();\n+    this.#cleanupSwitchAnnotationEditorMode();\n   }\n   #ensurePageViewVisible() {\n     if (this._scrollMode !== ScrollMode.PAGE) {\n@@ -10572,6 +16689,13 @@\n     if (this.pagesCount === 0) {\n       return;\n     }\n+    if (this.#scrollTimeoutId) {\n+      clearTimeout(this.#scrollTimeoutId);\n+    }\n+    this.#scrollTimeoutId = setTimeout(() => {\n+      this.#scrollTimeoutId = null;\n+      this.update();\n+    }, 100);\n     this.update();\n   }\n   #scrollIntoView(pageView, pageSpot = null) {\n@@ -10874,6 +16998,17 @@\n     }\n     const newCacheSize = Math.max(DEFAULT_CACHE_SIZE, 2 * numVisiblePages + 1);\n     this.#buffer.resize(newCacheSize, visible.ids);\n+    for (const {\n+      view,\n+      visibleArea\n+    } of visiblePages) {\n+      view.updateVisibleArea(visibleArea);\n+    }\n+    for (const view of this.#buffer) {\n+      if (!visible.ids.has(view.id)) {\n+        view.updateVisibleArea(null);\n+      }\n+    }\n     this.renderingQueue.renderHighestPriority(visible);\n     const isSimpleLayout = this._spreadMode === SpreadMode.NONE && (this._scrollMode === ScrollMode.PAGE || this._scrollMode === ScrollMode.VERTICAL);\n     const currentId = this._currentPageNumber;\n@@ -10894,6 +17029,34 @@\n       location: this._location\n     });\n   }\n+  #switchToEditAnnotationMode() {\n+    const visible = this._getVisiblePages();\n+    const pagesToRefresh = [];\n+    const {\n+      ids,\n+      views\n+    } = visible;\n+    for (const page of views) {\n+      const {\n+        view\n+      } = page;\n+      if (!view.hasEditableAnnotations()) {\n+        ids.delete(view.id);\n+        continue;\n+      }\n+      pagesToRefresh.push(page);\n+    }\n+    if (pagesToRefresh.length === 0) {\n+      return null;\n+    }\n+    this.renderingQueue.renderHighestPriority({\n+      first: pagesToRefresh[0],\n+      last: pagesToRefresh.at(-1),\n+      views: pagesToRefresh,\n+      ids\n+    });\n+    return ids;\n+  }\n   containsElement(element) {\n     return this.container.contains(element);\n   }\n@@ -10972,7 +17135,8 @@\n     const visiblePages = currentlyVisiblePages || this._getVisiblePages();\n     const scrollAhead = this.#getScrollAhead(visiblePages);\n     const preRenderExtra = this._spreadMode !== SpreadMode.NONE && this._scrollMode !== ScrollMode.HORIZONTAL;\n-    const pageView = this.renderingQueue.getHighestPriority(visiblePages, this._pages, scrollAhead, preRenderExtra);\n+    const ignoreDetailViews = this.#scaleTimeoutId !== null || this.#scrollTimeoutId !== null && visiblePages.views.some(page => page.detailView?.renderingCancelled);\n+    const pageView = this.renderingQueue.getHighestPriority(visiblePages, this._pages, scrollAhead, preRenderExtra, ignoreDetailViews);\n     if (pageView) {\n       this.#ensurePdfPageLoaded(pageView).then(() => {\n         this.renderingQueue.renderView(pageView);\n@@ -11289,7 +17453,7 @@\n         newScale = round((newScale * delta).toFixed(2) * 10) \u002F 10;\n       } while (--steps > 0);\n     }\n-    newScale = Math.max(MIN_SCALE, Math.min(MAX_SCALE, newScale));\n+    newScale = MathClamp(newScale, MIN_SCALE, MAX_SCALE);\n     this.#setScale(newScale, {\n       noScroll: false,\n       drawingDelay,\n@@ -11326,6 +17490,34 @@\n   get containerTopLeft() {\n     return this.#containerTopLeft ||= [this.container.offsetTop, this.container.offsetLeft];\n   }\n+  #cleanupTimeouts() {\n+    if (this.#scaleTimeoutId !== null) {\n+      clearTimeout(this.#scaleTimeoutId);\n+      this.#scaleTimeoutId = null;\n+    }\n+    if (this.#scrollTimeoutId !== null) {\n+      clearTimeout(this.#scrollTimeoutId);\n+      this.#scrollTimeoutId = null;\n+    }\n+  }\n+  #cleanupSwitchAnnotationEditorMode() {\n+    this.#switchAnnotationEditorModeAC?.abort();\n+    this.#switchAnnotationEditorModeAC = null;\n+    if (this.#switchAnnotationEditorModeTimeoutId !== null) {\n+      clearTimeout(this.#switchAnnotationEditorModeTimeoutId);\n+      this.#switchAnnotationEditorModeTimeoutId = null;\n+    }\n+  }\n+  #preloadEditingData(mode) {\n+    switch (mode) {\n+      case AnnotationEditorType.STAMP:\n+        this.#mlManager?.loadModel(\"altText\");\n+        break;\n+      case AnnotationEditorType.SIGNATURE:\n+        this.#signatureManager?.loadSignatures();\n+        break;\n+    }\n+  }\n   get annotationEditorMode() {\n     return this.#annotationEditorUIManager ? this.#annotationEditorMode : AnnotationEditorType.DISABLE;\n   }\n@@ -11346,21 +17538,50 @@\n     if (!this.pdfDocument) {\n       return;\n     }\n-    this.#annotationEditorMode = mode;\n-    this.eventBus.dispatch(\"annotationeditormodechanged\", {\n-      source: this,\n-      mode\n-    });\n-    this.#annotationEditorUIManager.updateMode(mode, editId, isFromKeyboard);\n-  }\n-  set annotationEditorParams({\n-    type,\n-    value\n-  }) {\n-    if (!this.#annotationEditorUIManager) {\n-      throw new Error(`The AnnotationEditor is not enabled.`);\n+    this.#preloadEditingData(mode);\n+    const {\n+      eventBus,\n+      pdfDocument\n+    } = this;\n+    const updater = async () => {\n+      this.#cleanupSwitchAnnotationEditorMode();\n+      this.#annotationEditorMode = mode;\n+      await this.#annotationEditorUIManager.updateMode(mode, editId, isFromKeyboard);\n+      if (mode !== this.#annotationEditorMode || pdfDocument !== this.pdfDocument) {\n+        return;\n+      }\n+      eventBus.dispatch(\"annotationeditormodechanged\", {\n+        source: this,\n+        mode\n+      });\n+    };\n+    if (mode === AnnotationEditorType.NONE || this.#annotationEditorMode === AnnotationEditorType.NONE) {\n+      const isEditing = mode !== AnnotationEditorType.NONE;\n+      if (!isEditing) {\n+        this.pdfDocument.annotationStorage.resetModifiedIds();\n+      }\n+      for (const pageView of this._pages) {\n+        pageView.toggleEditingMode(isEditing);\n+      }\n+      const idsToRefresh = this.#switchToEditAnnotationMode();\n+      if (isEditing && idsToRefresh) {\n+        this.#cleanupSwitchAnnotationEditorMode();\n+        this.#switchAnnotationEditorModeAC = new AbortController();\n+        const signal = AbortSignal.any([this.#eventAbortController.signal, this.#switchAnnotationEditorModeAC.signal]);\n+        eventBus._on(\"pagerendered\", ({\n+          pageNumber\n+        }) => {\n+          idsToRefresh.delete(pageNumber);\n+          if (idsToRefresh.size === 0) {\n+            this.#switchAnnotationEditorModeTimeoutId = setTimeout(updater, 0);\n+          }\n+        }, {\n+          signal\n+        });\n+        return;\n+      }\n     }\n-    this.#annotationEditorUIManager.updateParams(type, value);\n+    updater();\n   }\n   refresh(noUpdate = false, updateArgs = Object.create(null)) {\n     if (!this.pdfDocument) {\n@@ -11369,17 +17590,15 @@\n     for (const pageView of this._pages) {\n       pageView.update(updateArgs);\n     }\n-    if (this.#scaleTimeoutId !== null) {\n-      clearTimeout(this.#scaleTimeoutId);\n-      this.#scaleTimeoutId = null;\n-    }\n+    this.#cleanupTimeouts();\n     if (!noUpdate) {\n       this.update();\n     }\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fsecondary_toolbar.js\n+;\u002F\u002F .\u002Fweb\u002Fsecondary_toolbar.js\n+\n \n \n class SecondaryToolbar {\n@@ -11482,6 +17701,10 @@\n       },\n       close: true\n     }, {\n+      element: options.imageAltTextSettingsButton,\n+      eventName: \"imagealttextsettings\",\n+      close: true\n+    }, {\n       element: options.documentPropertiesButton,\n       eventName: \"documentproperties\",\n       close: true\n@@ -11574,7 +17797,8 @@\n     eventBus._on(\"spreadmodechanged\", this.#spreadModeChanged.bind(this));\n   }\n   #cursorToolChanged({\n-    tool\n+    tool,\n+    disabled\n   }) {\n     const {\n       cursorSelectToolButton,\n@@ -11582,6 +17806,8 @@\n     } = this.#opts;\n     toggleCheckedBtn(cursorSelectToolButton, tool === CursorTool.SELECT);\n     toggleCheckedBtn(cursorHandToolButton, tool === CursorTool.HAND);\n+    cursorSelectToolButton.disabled = disabled;\n+    cursorHandToolButton.disabled = disabled;\n   }\n   #scrollModeChanged({\n     mode\n@@ -11652,12 +17878,885 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Ftoolbar.js\n+;\u002F\u002F .\u002Fweb\u002Fsignature_manager.js\n+\n+\n+\n+\n+const DEFAULT_HEIGHT_IN_PAGE = 40;\n+class SignatureManager {\n+  #addButton;\n+  #tabsToAltText = null;\n+  #clearButton;\n+  #clearDescription;\n+  #currentEditor;\n+  #description;\n+  #dialog;\n+  #drawCurves = null;\n+  #drawPlaceholder;\n+  #drawPath = null;\n+  #drawPathString = \"\";\n+  #drawPoints = null;\n+  #drawSVG;\n+  #drawThickness;\n+  #errorBar;\n+  #extractedSignatureData = null;\n+  #imagePath = null;\n+  #imagePicker;\n+  #imagePickerLink;\n+  #imagePlaceholder;\n+  #imageSVG;\n+  #saveCheckbox;\n+  #saveContainer;\n+  #tabButtons;\n+  #addSignatureToolbarButton;\n+  #loadSignaturesPromise = null;\n+  #typeInput;\n+  #currentTab = null;\n+  #currentTabAC = null;\n+  #hasDescriptionChanged = false;\n+  #eventBus;\n+  #l10n;\n+  #overlayManager;\n+  #editDescriptionDialog;\n+  #signatureStorage;\n+  #uiManager = null;\n+  static #l10nDescription = null;\n+  constructor({\n+    dialog,\n+    panels,\n+    typeButton,\n+    typeInput,\n+    drawButton,\n+    drawPlaceholder,\n+    drawSVG,\n+    drawThickness,\n+    imageButton,\n+    imageSVG,\n+    imagePlaceholder,\n+    imagePicker,\n+    imagePickerLink,\n+    description,\n+    clearButton,\n+    cancelButton,\n+    addButton,\n+    errorCloseButton,\n+    errorBar,\n+    saveCheckbox,\n+    saveContainer\n+  }, editSignatureElements, addSignatureToolbarButton, overlayManager, l10n, signatureStorage, eventBus) {\n+    this.#addButton = addButton;\n+    this.#clearButton = clearButton;\n+    this.#clearDescription = description.lastElementChild;\n+    this.#description = description.firstElementChild;\n+    this.#dialog = dialog;\n+    this.#drawSVG = drawSVG;\n+    this.#drawPlaceholder = drawPlaceholder;\n+    this.#drawThickness = drawThickness;\n+    this.#errorBar = errorBar;\n+    this.#imageSVG = imageSVG;\n+    this.#imagePlaceholder = imagePlaceholder;\n+    this.#imagePicker = imagePicker;\n+    this.#imagePickerLink = imagePickerLink;\n+    this.#overlayManager = overlayManager;\n+    this.#saveCheckbox = saveCheckbox;\n+    this.#saveContainer = saveContainer;\n+    this.#addSignatureToolbarButton = addSignatureToolbarButton;\n+    this.#typeInput = typeInput;\n+    this.#l10n = l10n;\n+    this.#signatureStorage = signatureStorage;\n+    this.#eventBus = eventBus;\n+    this.#editDescriptionDialog = new EditDescriptionDialog(editSignatureElements, overlayManager);\n+    SignatureManager.#l10nDescription ||= Object.freeze({\n+      signature: \"pdfjs-editor-add-signature-description-default-when-drawing\"\n+    });\n+    dialog.addEventListener(\"close\", this.#close.bind(this));\n+    dialog.addEventListener(\"contextmenu\", e => {\n+      const {\n+        target\n+      } = e;\n+      if (target !== this.#typeInput && target !== this.#description) {\n+        e.preventDefault();\n+      }\n+    });\n+    dialog.addEventListener(\"drop\", e => {\n+      stopEvent(e);\n+    });\n+    cancelButton.addEventListener(\"click\", this.#cancel.bind(this));\n+    addButton.addEventListener(\"click\", this.#add.bind(this));\n+    clearButton.addEventListener(\"click\", () => {\n+      this.#reportTelemetry({\n+        type: \"signature\",\n+        action: \"pdfjs.signature.clear\",\n+        data: {\n+          type: this.#currentTab\n+        }\n+      });\n+      this.#initTab(null);\n+    }, {\n+      passive: true\n+    });\n+    this.#description.addEventListener(\"input\", () => {\n+      this.#clearDescription.disabled = this.#description.value === \"\";\n+    }, {\n+      passive: true\n+    });\n+    this.#clearDescription.addEventListener(\"click\", () => {\n+      this.#description.value = \"\";\n+      this.#clearDescription.disabled = true;\n+    }, {\n+      passive: true\n+    });\n+    errorCloseButton.addEventListener(\"click\", () => {\n+      errorBar.hidden = true;\n+    }, {\n+      passive: true\n+    });\n+    this.#initTabButtons(typeButton, drawButton, imageButton, panels);\n+    imagePicker.accept = SupportedImageMimeTypes.join(\",\");\n+    eventBus._on(\"storedsignatureschanged\", this.#signaturesChanged.bind(this));\n+    overlayManager.register(dialog);\n+  }\n+  #initTabButtons(typeButton, drawButton, imageButton, panels) {\n+    const buttons = this.#tabButtons = new Map([[\"type\", typeButton], [\"draw\", drawButton], [\"image\", imageButton]]);\n+    const tabCallback = e => {\n+      for (const [name, button] of buttons) {\n+        if (button === e.target) {\n+          button.setAttribute(\"aria-selected\", true);\n+          button.setAttribute(\"tabindex\", 0);\n+          panels.setAttribute(\"data-selected\", name);\n+          this.#initTab(name);\n+        } else {\n+          button.setAttribute(\"aria-selected\", false);\n+          button.setAttribute(\"tabindex\", -1);\n+        }\n+      }\n+    };\n+    const buttonsArray = Array.from(buttons.values());\n+    for (let i = 0, ii = buttonsArray.length; i \u003C ii; i++) {\n+      const button = buttonsArray[i];\n+      button.addEventListener(\"click\", tabCallback, {\n+        passive: true\n+      });\n+      button.addEventListener(\"keydown\", ({\n+        key\n+      }) => {\n+        if (key !== \"ArrowLeft\" && key !== \"ArrowRight\") {\n+          return;\n+        }\n+        buttonsArray[i + (key === \"ArrowLeft\" ? -1 : 1)]?.focus();\n+      }, {\n+        passive: true\n+      });\n+    }\n+  }\n+  #resetCommon() {\n+    this.#hasDescriptionChanged = false;\n+    this.#description.value = \"\";\n+    if (this.#currentTab) {\n+      this.#tabsToAltText.get(this.#currentTab).value = \"\";\n+    }\n+  }\n+  #resetTab(name) {\n+    switch (name) {\n+      case \"type\":\n+        this.#typeInput.value = \"\";\n+        break;\n+      case \"draw\":\n+        this.#drawCurves = null;\n+        this.#drawPoints = null;\n+        this.#drawPathString = \"\";\n+        this.#drawPath?.remove();\n+        this.#drawPath = null;\n+        this.#drawPlaceholder.hidden = false;\n+        this.#drawThickness.value = 1;\n+        break;\n+      case \"image\":\n+        this.#imagePlaceholder.hidden = false;\n+        this.#imagePath?.remove();\n+        this.#imagePath = null;\n+        break;\n+    }\n+  }\n+  #initTab(name) {\n+    if (name && this.#currentTab === name) {\n+      return;\n+    }\n+    if (this.#currentTab) {\n+      this.#tabsToAltText.get(this.#currentTab).value = this.#description.value;\n+    }\n+    if (name) {\n+      this.#currentTab = name;\n+    }\n+    this.#errorBar.hidden = true;\n+    const reset = !name;\n+    if (reset) {\n+      this.#resetCommon();\n+    } else {\n+      this.#description.value = this.#tabsToAltText.get(this.#currentTab).value;\n+    }\n+    this.#clearDescription.disabled = this.#description.value === \"\";\n+    this.#currentTabAC?.abort();\n+    this.#currentTabAC = new AbortController();\n+    switch (this.#currentTab) {\n+      case \"type\":\n+        this.#initTypeTab(reset);\n+        break;\n+      case \"draw\":\n+        this.#initDrawTab(reset);\n+        break;\n+      case \"image\":\n+        this.#initImageTab(reset);\n+        break;\n+    }\n+  }\n+  #disableButtons(value) {\n+    this.#saveCheckbox.disabled = this.#clearButton.disabled = this.#addButton.disabled = this.#description.disabled = !value;\n+  }\n+  #initTypeTab(reset) {\n+    if (reset) {\n+      this.#resetTab(\"type\");\n+    }\n+    this.#disableButtons(this.#typeInput.value);\n+    const {\n+      signal\n+    } = this.#currentTabAC;\n+    const options = {\n+      passive: true,\n+      signal\n+    };\n+    this.#typeInput.addEventListener(\"input\", () => {\n+      const {\n+        value\n+      } = this.#typeInput;\n+      if (!this.#hasDescriptionChanged) {\n+        this.#tabsToAltText.get(\"type\").default = this.#description.value = value;\n+        this.#clearDescription.disabled = value === \"\";\n+      }\n+      this.#disableButtons(value);\n+    }, options);\n+    this.#description.addEventListener(\"input\", () => {\n+      this.#hasDescriptionChanged = this.#typeInput.value !== this.#description.value;\n+    }, options);\n+  }\n+  #initDrawTab(reset) {\n+    if (reset) {\n+      this.#resetTab(\"draw\");\n+    }\n+    this.#disableButtons(this.#drawPath);\n+    const {\n+      signal\n+    } = this.#currentTabAC;\n+    const options = {\n+      signal\n+    };\n+    let currentPointerId = NaN;\n+    const drawCallback = e => {\n+      const {\n+        pointerId\n+      } = e;\n+      if (!isNaN(currentPointerId) && currentPointerId !== pointerId) {\n+        return;\n+      }\n+      currentPointerId = pointerId;\n+      e.preventDefault();\n+      this.#drawSVG.setPointerCapture(pointerId);\n+      const {\n+        width: drawWidth,\n+        height: drawHeight\n+      } = this.#drawSVG.getBoundingClientRect();\n+      let {\n+        offsetX,\n+        offsetY\n+      } = e;\n+      offsetX = Math.round(offsetX);\n+      offsetY = Math.round(offsetY);\n+      if (e.target === this.#drawPlaceholder) {\n+        this.#drawPlaceholder.hidden = true;\n+      }\n+      if (!this.#drawCurves) {\n+        this.#drawCurves = {\n+          width: drawWidth,\n+          height: drawHeight,\n+          thickness: parseInt(this.#drawThickness.value),\n+          curves: []\n+        };\n+        this.#disableButtons(true);\n+        const svgFactory = new DOMSVGFactory();\n+        const path = this.#drawPath = svgFactory.createElement(\"path\");\n+        path.setAttribute(\"stroke-width\", this.#drawThickness.value);\n+        this.#drawSVG.append(path);\n+        this.#drawSVG.addEventListener(\"pointerdown\", drawCallback, options);\n+        this.#drawPlaceholder.removeEventListener(\"pointerdown\", drawCallback);\n+        if (this.#description.value === \"\") {\n+          this.#l10n.get(SignatureManager.#l10nDescription.signature).then(description => {\n+            this.#tabsToAltText.get(\"draw\").default = description;\n+            this.#description.value ||= description;\n+            this.#clearDescription.disabled = this.#description.value === \"\";\n+          });\n+        }\n+      }\n+      this.#drawPoints = [offsetX, offsetY];\n+      this.#drawCurves.curves.push({\n+        points: this.#drawPoints\n+      });\n+      this.#drawPathString += `M ${offsetX} ${offsetY}`;\n+      this.#drawPath.setAttribute(\"d\", this.#drawPathString);\n+      const finishDrawAC = new AbortController();\n+      const listenerDrawOptions = {\n+        signal: AbortSignal.any([signal, finishDrawAC.signal])\n+      };\n+      this.#drawSVG.addEventListener(\"contextmenu\", noContextMenu, listenerDrawOptions);\n+      this.#drawSVG.addEventListener(\"pointermove\", evt => {\n+        evt.preventDefault();\n+        let {\n+          offsetX: x,\n+          offsetY: y\n+        } = evt;\n+        x = Math.round(x);\n+        y = Math.round(y);\n+        const drawPoints = this.#drawPoints;\n+        if (x \u003C 0 || y \u003C 0 || x > drawWidth || y > drawHeight || x === drawPoints.at(-2) && y === drawPoints.at(-1)) {\n+          return;\n+        }\n+        if (drawPoints.length >= 4) {\n+          const [x1, y1, x2, y2] = drawPoints.slice(-4);\n+          this.#drawPathString += `C${(x1 + 5 * x2) \u002F 6} ${(y1 + 5 * y2) \u002F 6} ${(5 * x2 + x) \u002F 6} ${(5 * y2 + y) \u002F 6} ${(x2 + x) \u002F 2} ${(y2 + y) \u002F 2}`;\n+        } else {\n+          this.#drawPathString += `L${x} ${y}`;\n+        }\n+        drawPoints.push(x, y);\n+        this.#drawPath.setAttribute(\"d\", this.#drawPathString);\n+      }, listenerDrawOptions);\n+      this.#drawSVG.addEventListener(\"pointerup\", evt => {\n+        const {\n+          pointerId: pId\n+        } = evt;\n+        if (!isNaN(currentPointerId) && currentPointerId !== pId) {\n+          return;\n+        }\n+        currentPointerId = NaN;\n+        evt.preventDefault();\n+        this.#drawSVG.releasePointerCapture(pId);\n+        finishDrawAC.abort();\n+        if (this.#drawPoints.length === 2) {\n+          this.#drawPathString += `L${this.#drawPoints[0]} ${this.#drawPoints[1]}`;\n+          this.#drawPath.setAttribute(\"d\", this.#drawPathString);\n+        }\n+      }, listenerDrawOptions);\n+    };\n+    if (this.#drawCurves) {\n+      this.#drawSVG.addEventListener(\"pointerdown\", drawCallback, options);\n+    } else {\n+      this.#drawPlaceholder.addEventListener(\"pointerdown\", drawCallback, options);\n+    }\n+    this.#drawThickness.addEventListener(\"input\", () => {\n+      const {\n+        value: thickness\n+      } = this.#drawThickness;\n+      this.#drawThickness.setAttribute(\"data-l10n-args\", JSON.stringify({\n+        thickness\n+      }));\n+      if (!this.#drawCurves) {\n+        return;\n+      }\n+      this.#drawPath.setAttribute(\"stroke-width\", thickness);\n+      this.#drawCurves.thickness = thickness;\n+    }, options);\n+  }\n+  #initImageTab(reset) {\n+    if (reset) {\n+      this.#resetTab(\"image\");\n+    }\n+    this.#disableButtons(this.#imagePath);\n+    const {\n+      signal\n+    } = this.#currentTabAC;\n+    const options = {\n+      signal\n+    };\n+    const passiveOptions = {\n+      passive: true,\n+      signal\n+    };\n+    this.#imagePickerLink.addEventListener(\"keydown\", e => {\n+      const {\n+        key\n+      } = e;\n+      if (key === \"Enter\" || key === \" \") {\n+        stopEvent(e);\n+        this.#imagePicker.click();\n+      }\n+    }, options);\n+    this.#imagePicker.addEventListener(\"click\", () => {\n+      this.#dialog.classList.toggle(\"waiting\", true);\n+    }, passiveOptions);\n+    this.#imagePicker.addEventListener(\"change\", async () => {\n+      const file = this.#imagePicker.files?.[0];\n+      if (!file || !SupportedImageMimeTypes.includes(file.type)) {\n+        this.#errorBar.hidden = false;\n+        this.#dialog.classList.toggle(\"waiting\", false);\n+        return;\n+      }\n+      await this.#extractSignature(file);\n+    }, passiveOptions);\n+    this.#imagePicker.addEventListener(\"cancel\", () => {\n+      this.#dialog.classList.toggle(\"waiting\", false);\n+    }, passiveOptions);\n+    this.#imagePlaceholder.addEventListener(\"dragover\", e => {\n+      const {\n+        dataTransfer\n+      } = e;\n+      for (const {\n+        type\n+      } of dataTransfer.items) {\n+        if (!SupportedImageMimeTypes.includes(type)) {\n+          continue;\n+        }\n+        dataTransfer.dropEffect = dataTransfer.effectAllowed === \"copy\" ? \"copy\" : \"move\";\n+        stopEvent(e);\n+        return;\n+      }\n+      dataTransfer.dropEffect = \"none\";\n+    }, options);\n+    this.#imagePlaceholder.addEventListener(\"drop\", e => {\n+      const {\n+        dataTransfer: {\n+          files\n+        }\n+      } = e;\n+      if (!files?.length) {\n+        return;\n+      }\n+      for (const file of files) {\n+        if (SupportedImageMimeTypes.includes(file.type)) {\n+          this.#extractSignature(file);\n+          break;\n+        }\n+      }\n+      stopEvent(e);\n+      this.#dialog.classList.toggle(\"waiting\", true);\n+    }, options);\n+  }\n+  async #extractSignature(file) {\n+    let data;\n+    try {\n+      data = await this.#uiManager.imageManager.getFromFile(file);\n+    } catch (e) {\n+      console.error(\"SignatureManager.#extractSignature.\", e);\n+    }\n+    if (!data) {\n+      this.#errorBar.hidden = false;\n+      this.#dialog.classList.toggle(\"waiting\", false);\n+      return;\n+    }\n+    const {\n+      outline\n+    } = this.#extractedSignatureData = this.#currentEditor.getFromImage(data.bitmap);\n+    if (!outline) {\n+      this.#dialog.classList.toggle(\"waiting\", false);\n+      return;\n+    }\n+    this.#imagePlaceholder.hidden = true;\n+    this.#disableButtons(true);\n+    const svgFactory = new DOMSVGFactory();\n+    const path = this.#imagePath = svgFactory.createElement(\"path\");\n+    this.#imageSVG.setAttribute(\"viewBox\", outline.viewBox);\n+    this.#imageSVG.setAttribute(\"preserveAspectRatio\", \"xMidYMid meet\");\n+    this.#imageSVG.append(path);\n+    path.setAttribute(\"d\", outline.toSVGPath());\n+    this.#tabsToAltText.get(\"image\").default = file.name;\n+    if (this.#description.value === \"\") {\n+      this.#description.value = file.name || \"\";\n+      this.#clearDescription.disabled = this.#description.value === \"\";\n+    }\n+    this.#dialog.classList.toggle(\"waiting\", false);\n+  }\n+  #getOutlineForType() {\n+    return this.#currentEditor.getFromText(this.#typeInput.value, window.getComputedStyle(this.#typeInput));\n+  }\n+  #getOutlineForDraw() {\n+    const {\n+      width,\n+      height\n+    } = this.#drawSVG.getBoundingClientRect();\n+    return this.#currentEditor.getDrawnSignature(this.#drawCurves, width, height);\n+  }\n+  #reportTelemetry(data) {\n+    this.#eventBus.dispatch(\"reporttelemetry\", {\n+      source: this,\n+      details: {\n+        type: \"editing\",\n+        data\n+      }\n+    });\n+  }\n+  #addToolbarButton(signatureData, uuid, description) {\n+    const {\n+      curves,\n+      areContours,\n+      thickness,\n+      width,\n+      height\n+    } = signatureData;\n+    const maxDim = Math.max(width, height);\n+    const outlineData = SignatureExtractor.processDrawnLines({\n+      lines: {\n+        curves,\n+        thickness,\n+        width,\n+        height\n+      },\n+      pageWidth: maxDim,\n+      pageHeight: maxDim,\n+      rotation: 0,\n+      innerMargin: 0,\n+      mustSmooth: false,\n+      areContours\n+    });\n+    if (!outlineData) {\n+      return;\n+    }\n+    const {\n+      outline\n+    } = outlineData;\n+    const svgFactory = new DOMSVGFactory();\n+    const div = document.createElement(\"div\");\n+    const button = document.createElement(\"button\");\n+    button.addEventListener(\"click\", () => {\n+      this.#eventBus.dispatch(\"switchannotationeditorparams\", {\n+        source: this,\n+        type: AnnotationEditorParamsType.CREATE,\n+        value: {\n+          signatureData: {\n+            lines: {\n+              curves,\n+              thickness,\n+              width,\n+              height\n+            },\n+            mustSmooth: false,\n+            areContours,\n+            description,\n+            uuid,\n+            heightInPage: DEFAULT_HEIGHT_IN_PAGE\n+          }\n+        }\n+      });\n+    });\n+    div.append(button);\n+    div.classList.add(\"toolbarAddSignatureButtonContainer\");\n+    const svg = svgFactory.create(1, 1, true);\n+    button.append(svg);\n+    const span = document.createElement(\"span\");\n+    span.ariaHidden = true;\n+    button.append(span);\n+    button.classList.add(\"toolbarAddSignatureButton\");\n+    button.type = \"button\";\n+    span.textContent = description;\n+    button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-add-saved-signature-button\");\n+    button.setAttribute(\"data-l10n-args\", JSON.stringify({\n+      description\n+    }));\n+    button.tabIndex = 0;\n+    const path = svgFactory.createElement(\"path\");\n+    svg.append(path);\n+    svg.setAttribute(\"viewBox\", outline.viewBox);\n+    svg.setAttribute(\"preserveAspectRatio\", \"xMidYMid meet\");\n+    if (areContours) {\n+      path.classList.add(\"contours\");\n+    }\n+    path.setAttribute(\"d\", outline.toSVGPath());\n+    const deleteButton = document.createElement(\"button\");\n+    div.append(deleteButton);\n+    deleteButton.classList.add(\"toolbarButton\", \"deleteButton\");\n+    deleteButton.setAttribute(\"data-l10n-id\", \"pdfjs-editor-delete-signature-button1\");\n+    deleteButton.type = \"button\";\n+    deleteButton.tabIndex = 0;\n+    deleteButton.addEventListener(\"click\", async () => {\n+      if (await this.#signatureStorage.delete(uuid)) {\n+        div.remove();\n+        this.#reportTelemetry({\n+          type: \"signature\",\n+          action: \"pdfjs.signature.delete_saved\",\n+          data: {\n+            savedCount: await this.#signatureStorage.size()\n+          }\n+        });\n+      }\n+    });\n+    const deleteSpan = document.createElement(\"span\");\n+    deleteButton.append(deleteSpan);\n+    deleteSpan.setAttribute(\"data-l10n-id\", \"pdfjs-editor-delete-signature-button-label1\");\n+    this.#addSignatureToolbarButton.before(div);\n+  }\n+  async #signaturesChanged() {\n+    const parent = this.#addSignatureToolbarButton.parentElement;\n+    while (parent.firstElementChild !== this.#addSignatureToolbarButton) {\n+      parent.firstElementChild.remove();\n+    }\n+    this.#loadSignaturesPromise = null;\n+    await this.loadSignatures(true);\n+  }\n+  getSignature(params) {\n+    return this.open(params);\n+  }\n+  async loadSignatures(reload = false) {\n+    if (!this.#addSignatureToolbarButton || !reload && this.#addSignatureToolbarButton.previousElementSibling || !this.#signatureStorage) {\n+      return;\n+    }\n+    if (!this.#loadSignaturesPromise) {\n+      this.#loadSignaturesPromise = this.#signatureStorage.getAll().then(async signatures => [signatures, await Promise.all(Array.from(signatures.values(), ({\n+        signatureData\n+      }) => SignatureExtractor.decompressSignature(signatureData)))]);\n+      if (!reload) {\n+        return;\n+      }\n+    }\n+    const [signatures, signaturesData] = await this.#loadSignaturesPromise;\n+    this.#loadSignaturesPromise = null;\n+    let i = 0;\n+    for (const [uuid, {\n+      description\n+    }] of signatures) {\n+      const data = signaturesData[i++];\n+      if (!data) {\n+        continue;\n+      }\n+      data.curves = data.outlines.map(points => ({\n+        points\n+      }));\n+      delete data.outlines;\n+      this.#addToolbarButton(data, uuid, description);\n+    }\n+  }\n+  async renderEditButton(editor) {\n+    const button = document.createElement(\"button\");\n+    button.classList.add(\"altText\", \"editDescription\");\n+    button.tabIndex = 0;\n+    button.title = editor.description;\n+    const span = document.createElement(\"span\");\n+    button.append(span);\n+    span.setAttribute(\"data-l10n-id\", \"pdfjs-editor-add-signature-edit-button-label\");\n+    button.addEventListener(\"click\", () => {\n+      this.#editDescriptionDialog.open(editor);\n+    }, {\n+      passive: true\n+    });\n+    return button;\n+  }\n+  async open({\n+    uiManager,\n+    editor\n+  }) {\n+    this.#tabsToAltText ||= new Map(this.#tabButtons.keys().map(name => [name, {\n+      value: \"\",\n+      default: \"\"\n+    }]));\n+    this.#uiManager = uiManager;\n+    this.#currentEditor = editor;\n+    this.#uiManager.removeEditListeners();\n+    const isStorageFull = await this.#signatureStorage.isFull();\n+    this.#saveContainer.classList.toggle(\"fullStorage\", isStorageFull);\n+    this.#saveCheckbox.checked = !isStorageFull;\n+    await this.#overlayManager.open(this.#dialog);\n+    const tabType = this.#tabButtons.get(\"type\");\n+    tabType.focus();\n+    tabType.click();\n+  }\n+  #cancel() {\n+    this.#finish();\n+  }\n+  #finish() {\n+    this.#overlayManager.closeIfActive(this.#dialog);\n+  }\n+  #close() {\n+    if (this.#currentEditor._drawId === null) {\n+      this.#currentEditor.remove();\n+    }\n+    this.#uiManager?.addEditListeners();\n+    this.#currentTabAC?.abort();\n+    this.#currentTabAC = null;\n+    this.#uiManager = null;\n+    this.#currentEditor = null;\n+    this.#resetCommon();\n+    for (const [name] of this.#tabButtons) {\n+      this.#resetTab(name);\n+    }\n+    this.#disableButtons(false);\n+    this.#currentTab = null;\n+    this.#tabsToAltText = null;\n+  }\n+  async #add() {\n+    let data;\n+    const type = this.#currentTab;\n+    switch (type) {\n+      case \"type\":\n+        data = this.#getOutlineForType();\n+        break;\n+      case \"draw\":\n+        data = this.#getOutlineForDraw();\n+        break;\n+      case \"image\":\n+        data = this.#extractedSignatureData;\n+        break;\n+    }\n+    let uuid = null;\n+    const description = this.#description.value;\n+    if (this.#saveCheckbox.checked) {\n+      const {\n+        newCurves,\n+        areContours,\n+        thickness,\n+        width,\n+        height\n+      } = data;\n+      const signatureData = await SignatureExtractor.compressSignature({\n+        outlines: newCurves,\n+        areContours,\n+        thickness,\n+        width,\n+        height\n+      });\n+      uuid = await this.#signatureStorage.create({\n+        description,\n+        signatureData\n+      });\n+      if (uuid) {\n+        this.#addToolbarButton({\n+          curves: newCurves.map(points => ({\n+            points\n+          })),\n+          areContours,\n+          thickness,\n+          width,\n+          height\n+        }, uuid, description);\n+      } else {\n+        console.warn(\"SignatureManager.add: cannot save the signature.\");\n+      }\n+    }\n+    const altText = this.#tabsToAltText.get(type);\n+    this.#reportTelemetry({\n+      type: \"signature\",\n+      action: \"pdfjs.signature.created\",\n+      data: {\n+        type,\n+        saved: !!uuid,\n+        savedCount: await this.#signatureStorage.size(),\n+        descriptionChanged: description !== altText.default\n+      }\n+    });\n+    this.#currentEditor.addSignature(data, DEFAULT_HEIGHT_IN_PAGE, this.#description.value, uuid);\n+    this.#finish();\n+  }\n+  destroy() {\n+    this.#uiManager = null;\n+    this.#finish();\n+  }\n+}\n+class EditDescriptionDialog {\n+  #currentEditor;\n+  #previousDescription;\n+  #description;\n+  #dialog;\n+  #overlayManager;\n+  #signatureSVG;\n+  #uiManager;\n+  constructor({\n+    dialog,\n+    description,\n+    cancelButton,\n+    updateButton,\n+    editSignatureView\n+  }, overlayManager) {\n+    const descriptionInput = this.#description = description.firstElementChild;\n+    this.#signatureSVG = editSignatureView;\n+    this.#dialog = dialog;\n+    this.#overlayManager = overlayManager;\n+    dialog.addEventListener(\"close\", this.#close.bind(this));\n+    dialog.addEventListener(\"contextmenu\", e => {\n+      if (e.target !== this.#description) {\n+        e.preventDefault();\n+      }\n+    });\n+    cancelButton.addEventListener(\"click\", this.#cancel.bind(this));\n+    updateButton.addEventListener(\"click\", this.#update.bind(this));\n+    const clearDescription = description.lastElementChild;\n+    clearDescription.addEventListener(\"click\", () => {\n+      descriptionInput.value = \"\";\n+      clearDescription.disabled = true;\n+      updateButton.disabled = this.#previousDescription === \"\";\n+    });\n+    descriptionInput.addEventListener(\"input\", () => {\n+      const {\n+        value\n+      } = descriptionInput;\n+      clearDescription.disabled = value === \"\";\n+      updateButton.disabled = value === this.#previousDescription;\n+      editSignatureView.setAttribute(\"aria-label\", value);\n+    }, {\n+      passive: true\n+    });\n+    overlayManager.register(dialog);\n+  }\n+  async open(editor) {\n+    this.#uiManager = editor._uiManager;\n+    this.#currentEditor = editor;\n+    this.#previousDescription = this.#description.value = editor.description;\n+    this.#description.dispatchEvent(new Event(\"input\"));\n+    this.#uiManager.removeEditListeners();\n+    const {\n+      areContours,\n+      outline\n+    } = editor.getSignaturePreview();\n+    const svgFactory = new DOMSVGFactory();\n+    const path = svgFactory.createElement(\"path\");\n+    this.#signatureSVG.append(path);\n+    this.#signatureSVG.setAttribute(\"viewBox\", outline.viewBox);\n+    path.setAttribute(\"d\", outline.toSVGPath());\n+    if (areContours) {\n+      path.classList.add(\"contours\");\n+    }\n+    await this.#overlayManager.open(this.#dialog);\n+  }\n+  async #update() {\n+    this.#currentEditor._reportTelemetry({\n+      action: \"pdfjs.signature.edit_description\",\n+      data: {\n+        hasBeenChanged: true\n+      }\n+    });\n+    this.#currentEditor.description = this.#description.value;\n+    this.#finish();\n+  }\n+  #cancel() {\n+    this.#currentEditor._reportTelemetry({\n+      action: \"pdfjs.signature.edit_description\",\n+      data: {\n+        hasBeenChanged: false\n+      }\n+    });\n+    this.#finish();\n+  }\n+  #finish() {\n+    this.#overlayManager.closeIfActive(this.#dialog);\n+  }\n+  #close() {\n+    this.#uiManager?.addEditListeners();\n+    this.#uiManager = null;\n+    this.#currentEditor = null;\n+    this.#signatureSVG.firstElementChild.remove();\n+  }\n+}\n+\n+;\u002F\u002F .\u002Fweb\u002Ftoolbar.js\n \n \n class Toolbar {\n+  #colorPicker = null;\n   #opts;\n-  constructor(options, eventBus) {\n+  constructor(options, eventBus, toolbarDensity = 0) {\n     this.#opts = options;\n     this.eventBus = eventBus;\n     const buttons = [{\n@@ -11721,35 +18820,44 @@\n           } = options.editorStampButton;\n           return classList.contains(\"toggled\") ? AnnotationEditorType.NONE : AnnotationEditorType.STAMP;\n         }\n+      },\n+      telemetry: {\n+        type: \"editing\",\n+        data: {\n+          action: \"pdfjs.image.icon_click\"\n+        }\n+      }\n+    }, {\n+      element: options.editorSignatureButton,\n+      eventName: \"switchannotationeditormode\",\n+      eventDetails: {\n+        get mode() {\n+          const {\n+            classList\n+          } = options.editorSignatureButton;\n+          return classList.contains(\"toggled\") ? AnnotationEditorType.NONE : AnnotationEditorType.SIGNATURE;\n+        }\n       }\n     }];\n     this.#bindListeners(buttons);\n-    if (options.editorHighlightColorPicker) {\n-      eventBus._on(\"annotationeditoruimanager\", ({\n-        uiManager\n-      }) => {\n-        this.#setAnnotationEditorUIManager(uiManager, options.editorHighlightColorPicker);\n-      }, {\n-        once: true\n-      });\n-    }\n-    eventBus._on(\"showannotationeditorui\", ({\n-      mode\n-    }) => {\n-      switch (mode) {\n-        case AnnotationEditorType.HIGHLIGHT:\n-          options.editorHighlightButton.click();\n-          break;\n-      }\n+    this.#updateToolbarDensity({\n+      value: toolbarDensity\n     });\n     this.reset();\n   }\n-  #setAnnotationEditorUIManager(uiManager, parentContainer) {\n-    const colorPicker = new ColorPicker({\n-      uiManager\n-    });\n-    uiManager.setMainHighlightColorPicker(colorPicker);\n-    parentContainer.append(colorPicker.renderMainDropdown());\n+  #updateToolbarDensity({\n+    value\n+  }) {\n+    let name = \"normal\";\n+    switch (value) {\n+      case 1:\n+        name = \"compact\";\n+        break;\n+      case 2:\n+        name = \"touch\";\n+        break;\n+    }\n+    document.documentElement.setAttribute(\"data-toolbar-density\", name);\n   }\n   setPageNumber(pageNumber, pageLabel) {\n     this.pageNumber = pageNumber;\n@@ -11767,6 +18875,7 @@\n     this.#updateUIState(false);\n   }\n   reset() {\n+    this.#colorPicker = null;\n     this.pageNumber = 0;\n     this.pageLabel = null;\n     this.hasPageLabels = false;\n@@ -11784,6 +18893,8 @@\n       eventBus\n     } = this;\n     const {\n+      editorHighlightColorPicker,\n+      editorHighlightButton,\n       pageNumber,\n       scaleSelect\n     } = this.#opts;\n@@ -11791,7 +18902,8 @@\n     for (const {\n       element,\n       eventName,\n-      eventDetails\n+      eventDetails,\n+      telemetry\n     } of buttons) {\n       element.addEventListener(\"click\", evt => {\n         if (eventName !== null) {\n@@ -11801,6 +18913,12 @@\n             isFromKeyboard: evt.detail === 0\n           });\n         }\n+        if (telemetry) {\n+          eventBus.dispatch(\"reporttelemetry\", {\n+            source: this,\n+            details: telemetry\n+          });\n+        }\n       });\n     }\n     pageNumber.addEventListener(\"click\", function () {\n@@ -11830,6 +18948,32 @@\n     });\n     scaleSelect.oncontextmenu = noContextMenu;\n     eventBus._on(\"annotationeditormodechanged\", this.#editorModeChanged.bind(this));\n+    eventBus._on(\"showannotationeditorui\", ({\n+      mode\n+    }) => {\n+      switch (mode) {\n+        case AnnotationEditorType.HIGHLIGHT:\n+          editorHighlightButton.click();\n+          break;\n+      }\n+    });\n+    eventBus._on(\"toolbardensity\", this.#updateToolbarDensity.bind(this));\n+    if (editorHighlightColorPicker) {\n+      eventBus._on(\"annotationeditoruimanager\", ({\n+        uiManager\n+      }) => {\n+        const cp = this.#colorPicker = new ColorPicker({\n+          uiManager\n+        });\n+        uiManager.setMainHighlightColorPicker(cp);\n+        editorHighlightColorPicker.append(cp.renderMainDropdown());\n+      });\n+      eventBus._on(\"mainhighlightcolorpickerupdatecolor\", ({\n+        value\n+      }) => {\n+        this.#colorPicker?.updateColor(value);\n+      });\n+    }\n   }\n   #editorModeChanged({\n     mode\n@@ -11842,17 +18986,21 @@\n       editorInkButton,\n       editorInkParamsToolbar,\n       editorStampButton,\n-      editorStampParamsToolbar\n+      editorStampParamsToolbar,\n+      editorSignatureButton,\n+      editorSignatureParamsToolbar\n     } = this.#opts;\n-    toggleCheckedBtn(editorFreeTextButton, mode === AnnotationEditorType.FREETEXT, editorFreeTextParamsToolbar);\n-    toggleCheckedBtn(editorHighlightButton, mode === AnnotationEditorType.HIGHLIGHT, editorHighlightParamsToolbar);\n-    toggleCheckedBtn(editorInkButton, mode === AnnotationEditorType.INK, editorInkParamsToolbar);\n-    toggleCheckedBtn(editorStampButton, mode === AnnotationEditorType.STAMP, editorStampParamsToolbar);\n+    toggleExpandedBtn(editorFreeTextButton, mode === AnnotationEditorType.FREETEXT, editorFreeTextParamsToolbar);\n+    toggleExpandedBtn(editorHighlightButton, mode === AnnotationEditorType.HIGHLIGHT, editorHighlightParamsToolbar);\n+    toggleExpandedBtn(editorInkButton, mode === AnnotationEditorType.INK, editorInkParamsToolbar);\n+    toggleExpandedBtn(editorStampButton, mode === AnnotationEditorType.STAMP, editorStampParamsToolbar);\n+    toggleExpandedBtn(editorSignatureButton, mode === AnnotationEditorType.SIGNATURE, editorSignatureParamsToolbar);\n     const isDisable = mode === AnnotationEditorType.DISABLE;\n     editorFreeTextButton.disabled = isDisable;\n     editorHighlightButton.disabled = isDisable;\n     editorInkButton.disabled = isDisable;\n     editorStampButton.disabled = isDisable;\n+    editorSignatureButton.disabled = isDisable;\n   }\n   #updateUIState(resetNumPages = false) {\n     const {\n@@ -11912,7 +19060,9 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fview_history.js\n+;\u002F\u002F .\u002Fweb\u002Fview_history.js\n+\n+\n const DEFAULT_VIEW_HISTORY_CACHE_SIZE = 20;\n class ViewHistory {\n   constructor(fingerprint, cacheSize = DEFAULT_VIEW_HISTORY_CACHE_SIZE) {\n@@ -11979,7 +19129,26 @@\n   }\n }\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fapp.js\n+;\u002F\u002F .\u002Fweb\u002Fapp.js\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n+\n \n \n \n@@ -12012,7 +19181,6 @@\n \n \n const FORCE_PAGES_LOADED_TIMEOUT = 10000;\n-const WHEEL_ZOOM_DISABLED_TIMEOUT = 1000;\n const ViewOnLoad = {\n   UNKNOWN: -1,\n   PREVIOUS: 0,\n@@ -12044,20 +19212,22 @@\n   store: null,\n   downloadManager: null,\n   overlayManager: null,\n-  preferences: null,\n+  preferences: new Preferences(),\n   toolbar: null,\n   secondaryToolbar: null,\n   eventBus: null,\n   l10n: null,\n   annotationEditorParams: null,\n+  imageAltTextSettings: null,\n   isInitialViewSet: false,\n-  downloadComplete: false,\n   isViewerEmbedded: window.parent !== window,\n   url: \"\",\n   baseUrl: \"\",\n+  mlManager: null,\n   _downloadUrl: \"\",\n   _eventBusAbortController: null,\n   _windowAbortController: null,\n+  _globalAbortController: new AbortController(),\n   documentInfo: null,\n   metadata: null,\n   _contentDispositionFilename: null,\n@@ -12065,24 +19235,23 @@\n   _saveInProgress: false,\n   _wheelUnusedTicks: 0,\n   _wheelUnusedFactor: 1,\n+  _touchManager: null,\n   _touchUnusedTicks: 0,\n   _touchUnusedFactor: 1,\n   _PDFBug: null,\n   _hasAnnotationEditors: false,\n   _title: document.title,\n   _printAnnotationStoragePromise: null,\n-  _touchInfo: null,\n   _isCtrlKeyDown: false,\n-  _nimbusDataPromise: null,\n   _caretBrowsing: null,\n   _isScrolling: false,\n+  editorUndoBar: null,\n   async initialize(appConfig) {\n-    let l10nPromise;\n     this.appConfig = appConfig;\n     try {\n       await this.preferences.initializedPromise;\n     } catch (ex) {\n-      console.error(`initialize: \"${ex.message}\".`);\n+      console.error(\"initialize:\", ex);\n     }\n     if (AppOptions.get(\"pdfBugEnabled\")) {\n       await this._parseHashParams();\n@@ -12090,17 +19259,16 @@\n     let mode;\n     switch (AppOptions.get(\"viewerCssTheme\")) {\n       case 1:\n-        mode = \"is-light\";\n+        mode = \"light\";\n         break;\n       case 2:\n-        mode = \"is-dark\";\n+        mode = \"dark\";\n         break;\n     }\n     if (mode) {\n-      document.documentElement.classList.add(mode);\n+      docStyle.setProperty(\"color-scheme\", mode);\n     }\n-    l10nPromise = this.externalServices.createL10n();\n-    this.l10n = await l10nPromise;\n+    this.l10n = await this.externalServices.createL10n();\n     document.getElementsByTagName(\"html\")[0].dir = this.l10n.getDirection();\n     this.l10n.translate(appConfig.appContainer || document.documentElement);\n     if (this.isViewerEmbedded && AppOptions.get(\"externalLinkTarget\") === LinkTarget.NONE) {\n@@ -12128,35 +19296,24 @@\n       }\n       const {\n         PDFBug\n-      } = await import( \u002F*webpackIgnore: true*\u002FAppOptions.get(\"debuggerSrc\"));\n+      } = await import(\n+      \u002F*webpackIgnore: true*\u002F\n+      \u002F*@vite-ignore*\u002F\n+      AppOptions.get(\"debuggerSrc\"));\n       this._PDFBug = PDFBug;\n     };\n     if (params.get(\"disableworker\") === \"true\") {\n       try {\n         GlobalWorkerOptions.workerSrc ||= AppOptions.get(\"workerSrc\");\n-        await import( \u002F*webpackIgnore: true*\u002FPDFWorker.workerSrc);\n+        await import(\n+        \u002F*webpackIgnore: true*\u002F\n+        \u002F*@vite-ignore*\u002F\n+        PDFWorker.workerSrc);\n+        AppOptions.set(\"workerPort\", null);\n       } catch (ex) {\n-        console.error(`_parseHashParams: \"${ex.message}\".`);\n+        console.error(\"_parseHashParams:\", ex);\n       }\n     }\n-    if (params.has(\"disablerange\")) {\n-      AppOptions.set(\"disableRange\", params.get(\"disablerange\") === \"true\");\n-    }\n-    if (params.has(\"disablestream\")) {\n-      AppOptions.set(\"disableStream\", params.get(\"disablestream\") === \"true\");\n-    }\n-    if (params.has(\"disableautofetch\")) {\n-      AppOptions.set(\"disableAutoFetch\", params.get(\"disableautofetch\") === \"true\");\n-    }\n-    if (params.has(\"disablefontface\")) {\n-      AppOptions.set(\"disableFontFace\", params.get(\"disablefontface\") === \"true\");\n-    }\n-    if (params.has(\"disablehistory\")) {\n-      AppOptions.set(\"disableHistory\", params.get(\"disablehistory\") === \"true\");\n-    }\n-    if (params.has(\"verbosity\")) {\n-      AppOptions.set(\"verbosity\", params.get(\"verbosity\") | 0);\n-    }\n     if (params.has(\"textlayer\")) {\n       switch (params.get(\"textlayer\")) {\n         case \"off\":\n@@ -12170,60 +19327,80 @@\n             await loadPDFBug();\n             this._PDFBug.loadCSS();\n           } catch (ex) {\n-            console.error(`_parseHashParams: \"${ex.message}\".`);\n+            console.error(\"_parseHashParams:\", ex);\n           }\n           break;\n       }\n     }\n     if (params.has(\"pdfbug\")) {\n-      AppOptions.setAll({\n-        pdfBug: true,\n-        fontExtraProperties: true\n-      });\n       const enabled = params.get(\"pdfbug\").split(\",\");\n       try {\n         await loadPDFBug();\n         this._PDFBug.init(mainContainer, enabled);\n       } catch (ex) {\n-        console.error(`_parseHashParams: \"${ex.message}\".`);\n+        console.error(\"_parseHashParams:\", ex);\n       }\n+      const debugOpts = {\n+        pdfBug: true,\n+        fontExtraProperties: true\n+      };\n+      if (globalThis.StepperManager?.enabled) {\n+        debugOpts.minDurationToUpdateCanvas = 0;\n+      }\n+      AppOptions.setAll(debugOpts);\n     }\n     if (params.has(\"locale\")) {\n-      AppOptions.set(\"locale\", params.get(\"locale\"));\n+      AppOptions.set(\"localeProperties\", {\n+        lang: params.get(\"locale\")\n+      });\n+    }\n+    const opts = {\n+      disableAutoFetch: x => x === \"true\",\n+      disableFontFace: x => x === \"true\",\n+      disableHistory: x => x === \"true\",\n+      disableRange: x => x === \"true\",\n+      disableStream: x => x === \"true\",\n+      verbosity: x => x | 0\n+    };\n+    for (const name in opts) {\n+      const check = opts[name],\n+        key = name.toLowerCase();\n+      if (params.has(key)) {\n+        AppOptions.set(name, check(params.get(key)));\n+      }\n     }\n   },\n   async _initializeViewerComponents() {\n     const {\n       appConfig,\n       externalServices,\n-      l10n\n+      l10n,\n+      mlManager\n     } = this;\n-    const eventBus = AppOptions.get(\"isInAutomation\") ? new AutomationEventBus() : new EventBus();\n-    this.eventBus = eventBus;\n-    this.overlayManager = new OverlayManager();\n-    const pdfRenderingQueue = new PDFRenderingQueue();\n-    pdfRenderingQueue.onIdle = this._cleanup.bind(this);\n-    this.pdfRenderingQueue = pdfRenderingQueue;\n-    const pdfLinkService = new PDFLinkService({\n+    const abortSignal = this._globalAbortController.signal;\n+    const eventBus = new EventBus();\n+    this.eventBus = AppOptions.eventBus = eventBus;\n+    mlManager?.setEventBus(eventBus, abortSignal);\n+    const overlayManager = this.overlayManager = new OverlayManager();\n+    const renderingQueue = this.pdfRenderingQueue = new PDFRenderingQueue();\n+    renderingQueue.onIdle = this._cleanup.bind(this);\n+    const linkService = this.pdfLinkService = new PDFLinkService({\n       eventBus,\n       externalLinkTarget: AppOptions.get(\"externalLinkTarget\"),\n       externalLinkRel: AppOptions.get(\"externalLinkRel\"),\n       ignoreDestinationZoom: AppOptions.get(\"ignoreDestinationZoom\")\n     });\n-    this.pdfLinkService = pdfLinkService;\n     const downloadManager = this.downloadManager = new DownloadManager();\n-    const findController = new PDFFindController({\n-      linkService: pdfLinkService,\n+    const findController = this.findController = new PDFFindController({\n+      linkService,\n       eventBus,\n       updateMatchesCountOnProgress: true\n     });\n-    this.findController = findController;\n-    const pdfScriptingManager = new PDFScriptingManager({\n+    const pdfScriptingManager = this.pdfScriptingManager = new PDFScriptingManager({\n       eventBus,\n       externalServices,\n       docProperties: this._scriptingDocProperties.bind(this)\n     });\n-    this.pdfScriptingManager = pdfScriptingManager;\n     const container = appConfig.mainContainer,\n       viewer = appConfig.viewerContainer;\n     const annotationEditorMode = AppOptions.get(\"annotationEditorMode\");\n@@ -12231,15 +19408,30 @@\n       background: AppOptions.get(\"pageColorsBackground\"),\n       foreground: AppOptions.get(\"pageColorsForeground\")\n     } : null;\n-    const altTextManager = appConfig.altTextDialog ? new AltTextManager(appConfig.altTextDialog, container, this.overlayManager, eventBus) : null;\n-    const pdfViewer = new PDFViewer({\n+    let altTextManager;\n+    if (AppOptions.get(\"enableUpdatedAddImage\")) {\n+      altTextManager = appConfig.newAltTextDialog ? new NewAltTextManager(appConfig.newAltTextDialog, overlayManager, eventBus) : null;\n+    } else {\n+      altTextManager = appConfig.altTextDialog ? new AltTextManager(appConfig.altTextDialog, container, overlayManager, eventBus) : null;\n+    }\n+    if (appConfig.editorUndoBar) {\n+      this.editorUndoBar = new EditorUndoBar(appConfig.editorUndoBar, eventBus);\n+    }\n+    const signatureManager = AppOptions.get(\"enableSignatureEditor\") && appConfig.addSignatureDialog ? new SignatureManager(appConfig.addSignatureDialog, appConfig.editSignatureDialog, appConfig.annotationEditorParams?.editorSignatureAddSignature || null, overlayManager, l10n, externalServices.createSignatureStorage(eventBus, abortSignal), eventBus) : null;\n+    const enableHWA = AppOptions.get(\"enableHWA\"),\n+      maxCanvasPixels = AppOptions.get(\"maxCanvasPixels\"),\n+      maxCanvasDim = AppOptions.get(\"maxCanvasDim\"),\n+      capCanvasAreaFactor = AppOptions.get(\"capCanvasAreaFactor\");\n+    const pdfViewer = this.pdfViewer = new PDFViewer({\n       container,\n       viewer,\n       eventBus,\n-      renderingQueue: pdfRenderingQueue,\n-      linkService: pdfLinkService,\n+      renderingQueue,\n+      linkService,\n       downloadManager,\n       altTextManager,\n+      signatureManager,\n+      editorUndoBar: this.editorUndoBar,\n       findController,\n       scriptingManager: AppOptions.get(\"enableScripting\") && pdfScriptingManager,\n       l10n,\n@@ -12248,45 +19440,55 @@\n       annotationEditorMode,\n       annotationEditorHighlightColors: AppOptions.get(\"highlightEditorColors\"),\n       enableHighlightFloatingButton: AppOptions.get(\"enableHighlightFloatingButton\"),\n+      enableUpdatedAddImage: AppOptions.get(\"enableUpdatedAddImage\"),\n+      enableNewAltTextWhenAddingImage: AppOptions.get(\"enableNewAltTextWhenAddingImage\"),\n       imageResourcesPath: AppOptions.get(\"imageResourcesPath\"),\n       enablePrintAutoRotate: AppOptions.get(\"enablePrintAutoRotate\"),\n-      maxCanvasPixels: AppOptions.get(\"maxCanvasPixels\"),\n+      maxCanvasPixels,\n+      maxCanvasDim,\n+      capCanvasAreaFactor,\n+      enableDetailCanvas: AppOptions.get(\"enableDetailCanvas\"),\n       enablePermissions: AppOptions.get(\"enablePermissions\"),\n       pageColors,\n-      mlManager: this.mlManager\n+      mlManager,\n+      abortSignal,\n+      enableHWA,\n+      supportsPinchToZoom: this.supportsPinchToZoom,\n+      enableAutoLinking: AppOptions.get(\"enableAutoLinking\"),\n+      minDurationToUpdateCanvas: AppOptions.get(\"minDurationToUpdateCanvas\")\n     });\n-    this.pdfViewer = pdfViewer;\n-    pdfRenderingQueue.setViewer(pdfViewer);\n-    pdfLinkService.setViewer(pdfViewer);\n+    renderingQueue.setViewer(pdfViewer);\n+    linkService.setViewer(pdfViewer);\n     pdfScriptingManager.setViewer(pdfViewer);\n     if (appConfig.sidebar?.thumbnailView) {\n       this.pdfThumbnailViewer = new PDFThumbnailViewer({\n         container: appConfig.sidebar.thumbnailView,\n         eventBus,\n-        renderingQueue: pdfRenderingQueue,\n-        linkService: pdfLinkService,\n-        pageColors\n+        renderingQueue,\n+        linkService,\n+        maxCanvasPixels,\n+        maxCanvasDim,\n+        pageColors,\n+        abortSignal,\n+        enableHWA\n       });\n-      pdfRenderingQueue.setThumbnailViewer(this.pdfThumbnailViewer);\n+      renderingQueue.setThumbnailViewer(this.pdfThumbnailViewer);\n     }\n     if (!this.isViewerEmbedded && !AppOptions.get(\"disableHistory\")) {\n       this.pdfHistory = new PDFHistory({\n-        linkService: pdfLinkService,\n+        linkService,\n         eventBus\n       });\n-      pdfLinkService.setHistory(this.pdfHistory);\n+      linkService.setHistory(this.pdfHistory);\n     }\n     if (!this.supportsIntegratedFind && appConfig.findBar) {\n-      this.findBar = new PDFFindBar(appConfig.findBar, eventBus);\n+      this.findBar = new PDFFindBar(appConfig.findBar, appConfig.principalContainer, eventBus);\n     }\n     if (appConfig.annotationEditorParams) {\n       if (annotationEditorMode !== AnnotationEditorType.DISABLE) {\n-        if (AppOptions.get(\"enableStampEditor\")) {\n-          appConfig.toolbar?.editorStampButton?.classList.remove(\"hidden\");\n-        }\n-        const editorHighlightButton = appConfig.toolbar?.editorHighlightButton;\n-        if (editorHighlightButton && AppOptions.get(\"enableHighlightEditor\")) {\n-          editorHighlightButton.hidden = false;\n+        const editorSignatureButton = appConfig.toolbar?.editorSignatureButton;\n+        if (editorSignatureButton && AppOptions.get(\"enableSignatureEditor\")) {\n+          editorSignatureButton.parentElement.hidden = false;\n         }\n         this.annotationEditorParams = new AnnotationEditorParams(appConfig.annotationEditorParams, eventBus);\n       } else {\n@@ -12295,8 +19497,11 @@\n         }\n       }\n     }\n+    if (mlManager && appConfig.secondaryToolbar?.imageAltTextSettingsButton) {\n+      this.imageAltTextSettings = new ImageAltTextSettings(appConfig.altTextSettingsDialog, overlayManager, eventBus, mlManager);\n+    }\n     if (appConfig.documentProperties) {\n-      this.pdfDocumentProperties = new PDFDocumentProperties(appConfig.documentProperties, this.overlayManager, eventBus, l10n, () => this._docFilename);\n+      this.pdfDocumentProperties = new PDFDocumentProperties(appConfig.documentProperties, overlayManager, eventBus, l10n, () => this._docFilename, () => this._docTitle);\n     }\n     if (appConfig.secondaryToolbar?.cursorHandToolButton) {\n       this.pdfCursorTools = new PDFCursorTools({\n@@ -12306,9 +19511,13 @@\n       });\n     }\n     if (appConfig.toolbar) {\n-      this.toolbar = new Toolbar(appConfig.toolbar, eventBus);\n+      this.toolbar = new Toolbar(appConfig.toolbar, eventBus, AppOptions.get(\"toolbarDensity\"));\n     }\n     if (appConfig.secondaryToolbar) {\n+      if (AppOptions.get(\"enableAltText\")) {\n+        appConfig.secondaryToolbar.imageAltTextSettingsButton?.classList.remove(\"hidden\");\n+        appConfig.secondaryToolbar.imageAltTextSettingsSeparator?.classList.remove(\"hidden\");\n+      }\n       this.secondaryToolbar = new SecondaryToolbar(appConfig.secondaryToolbar, eventBus);\n     }\n     if (this.supportsFullscreen && appConfig.secondaryToolbar?.presentationModeButton) {\n@@ -12319,14 +19528,14 @@\n       });\n     }\n     if (appConfig.passwordOverlay) {\n-      this.passwordPrompt = new PasswordPrompt(appConfig.passwordOverlay, this.overlayManager, this.isViewerEmbedded);\n+      this.passwordPrompt = new PasswordPrompt(appConfig.passwordOverlay, overlayManager, this.isViewerEmbedded);\n     }\n     if (appConfig.sidebar?.outlineView) {\n       this.pdfOutlineViewer = new PDFOutlineViewer({\n         container: appConfig.sidebar.outlineView,\n         eventBus,\n         l10n,\n-        linkService: pdfLinkService,\n+        linkService,\n         downloadManager\n       });\n     }\n@@ -12363,7 +19572,6 @@\n     }\n   },\n   async run(config) {\n-    this.preferences = new Preferences();\n     await this.initialize(config);\n     const {\n       appConfig,\n@@ -12393,17 +19601,19 @@\n       });\n     });\n     appConfig.mainContainer.addEventListener(\"dragover\", function (evt) {\n-      evt.preventDefault();\n-      evt.dataTransfer.dropEffect = evt.dataTransfer.effectAllowed === \"copy\" ? \"copy\" : \"move\";\n+      for (const item of evt.dataTransfer.items) {\n+        if (item.type === \"application\u002Fpdf\") {\n+          evt.dataTransfer.dropEffect = evt.dataTransfer.effectAllowed === \"copy\" ? \"copy\" : \"move\";\n+          stopEvent(evt);\n+          return;\n+        }\n+      }\n     });\n     appConfig.mainContainer.addEventListener(\"drop\", function (evt) {\n-      evt.preventDefault();\n-      const {\n-        files\n-      } = evt.dataTransfer;\n-      if (!files || files.length === 0) {\n+      if (evt.dataTransfer.files?.[0].type !== \"application\u002Fpdf\") {\n         return;\n       }\n+      stopEvent(evt);\n       eventBus.dispatch(\"fileinputchange\", {\n         source: this,\n         fileInput: evt.dataTransfer\n@@ -12423,7 +19633,7 @@\n       appConfig.secondaryToolbar?.presentationModeButton.classList.add(\"hidden\");\n     }\n     if (this.supportsIntegratedFind) {\n-      appConfig.toolbar?.viewFind?.classList.add(\"hidden\");\n+      appConfig.findBar?.toggleButton?.classList.add(\"hidden\");\n     }\n     if (file) {\n       this.open({\n@@ -12436,9 +19646,6 @@\n   get externalServices() {\n     return shadow(this, \"externalServices\", new ExternalServices());\n   },\n-  get mlManager() {\n-    return shadow(this, \"mlManager\", AppOptions.get(\"enableML\") === true ? new MLManager() : null);\n-  },\n   get initialized() {\n     return this._initializedCapability.settled;\n   },\n@@ -12468,6 +19675,20 @@\n     }\n     this.pdfViewer.currentScaleValue = DEFAULT_SCALE_VALUE;\n   },\n+  touchPinchCallback(origin, prevDistance, distance) {\n+    if (this.supportsPinchToZoom) {\n+      const newScaleFactor = this._accumulateFactor(this.pdfViewer.currentScale, distance \u002F prevDistance, \"_touchUnusedFactor\");\n+      this.updateZoom(null, newScaleFactor, origin);\n+    } else {\n+      const PIXELS_PER_LINE_SCALE = 30;\n+      const ticks = this._accumulateTicks((distance - prevDistance) \u002F PIXELS_PER_LINE_SCALE, \"_touchUnusedTicks\");\n+      this.updateZoom(ticks, null, origin);\n+    }\n+  },\n+  touchPinchEndCallback() {\n+    this._touchUnusedTicks = 0;\n+    this._touchUnusedFactor = 1;\n+  },\n   get pagesCount() {\n     return this.pdfDocument ? this.pdfDocument.numPages : 0;\n   },\n@@ -12478,7 +19699,7 @@\n     this.pdfViewer.currentPageNumber = val;\n   },\n   get supportsPrinting() {\n-    return PDFPrintServiceFactory.supportsPrinting;\n+    return shadow(this, \"supportsPrinting\", AppOptions.get(\"supportsPrinting\") && PDFPrintServiceFactory.supportsPrinting);\n   },\n   get supportsFullscreen() {\n     return shadow(this, \"supportsFullscreen\", document.fullscreenEnabled);\n@@ -12504,14 +19725,14 @@\n     return AppOptions.get(\"supportsCaretBrowsingMode\");\n   },\n   moveCaret(isUp, select) {\n-    this._caretBrowsing ||= new CaretBrowsingMode(this.appConfig.mainContainer, this.appConfig.viewerContainer, this.appConfig.toolbar?.container);\n+    this._caretBrowsing ||= new CaretBrowsingMode(this._globalAbortController.signal, this.appConfig.mainContainer, this.appConfig.viewerContainer, this.appConfig.toolbar?.container);\n     this._caretBrowsing.moveCaret(isUp, select);\n   },\n   setTitleUsingUrl(url = \"\", downloadUrl = null) {\n     this.url = url;\n-    this.baseUrl = url.split(\"#\", 1)[0];\n+    this.baseUrl = updateUrlHash(url, \"\", true);\n     if (downloadUrl) {\n-      this._downloadUrl = downloadUrl === url ? this.baseUrl : downloadUrl.split(\"#\", 1)[0];\n+      this._downloadUrl = downloadUrl === url ? this.baseUrl : updateUrlHash(downloadUrl, \"\", true);\n     }\n     if (isDataScheme(url)) {\n       this._hideViewBookmark();\n@@ -12519,12 +19740,10 @@\n     let title = pdfjs_getPdfFilenameFromUrl(url, \"\");\n     if (!title) {\n       try {\n-        title = decodeURIComponent(getFilenameFromUrl(url)) || url;\n-      } catch {\n-        title = url;\n-      }\n+        title = decodeURIComponent(getFilenameFromUrl(url));\n+      } catch {}\n     }\n-    this.setTitle(title);\n+    this.setTitle(title || url);\n   },\n   setTitle(title = this._title) {\n     this._title = title;\n@@ -12537,6 +19756,19 @@\n   get _docFilename() {\n     return this._contentDispositionFilename || pdfjs_getPdfFilenameFromUrl(this.url);\n   },\n+  get _docTitle() {\n+    const {\n+      documentInfo,\n+      metadata\n+    } = this;\n+    const title = metadata?.get(\"dc:title\");\n+    if (title) {\n+      if (title !== \"Untitled\" && !\u002F[\\uFFF0-\\uFFFF]\u002Fg.test(title)) {\n+        return title;\n+      }\n+    }\n+    return documentInfo.Title;\n+  },\n   _hideViewBookmark() {\n     const {\n       secondaryToolbar\n@@ -12570,7 +19802,6 @@\n     this.pdfLinkService.externalLinkEnabled = true;\n     this.store = null;\n     this.isInitialViewSet = false;\n-    this.downloadComplete = false;\n     this.url = \"\";\n     this.baseUrl = \"\";\n     this._downloadUrl = \"\";\n@@ -12631,10 +19862,8 @@\n       let key = \"pdfjs-loading-error\";\n       if (reason instanceof InvalidPDFException) {\n         key = \"pdfjs-invalid-file-error\";\n-      } else if (reason instanceof MissingPDFException) {\n-        key = \"pdfjs-missing-file-error\";\n-      } else if (reason instanceof UnexpectedResponseException) {\n-        key = \"pdfjs-unexpected-response-error\";\n+      } else if (reason instanceof ResponseException) {\n+        key = reason.missing ? \"pdfjs-missing-file-error\" : \"pdfjs-unexpected-response-error\";\n       }\n       return this._documentError(key, {\n         message: reason.message\n@@ -12643,44 +19872,25 @@\n       });\n     });\n   },\n-  _ensureDownloadComplete() {\n-    if (this.pdfDocument && this.downloadComplete) {\n-      return;\n-    }\n-    throw new Error(\"PDF document not downloaded.\");\n-  },\n-  async download(options = {}) {\n-    const url = this._downloadUrl,\n-      filename = this._docFilename;\n+  async download() {\n+    let data;\n     try {\n-      this._ensureDownloadComplete();\n-      const data = await this.pdfDocument.getData();\n-      const blob = new Blob([data], {\n-        type: \"application\u002Fpdf\"\n-      });\n-      await this.downloadManager.download(blob, url, filename, options);\n-    } catch {\n-      await this.downloadManager.downloadUrl(url, filename, options);\n-    }\n+      data = await (this.pdfDocument ? this.pdfDocument.getData() : this.pdfLoadingTask.getData());\n+    } catch {}\n+    this.downloadManager.download(data, this._downloadUrl, this._docFilename);\n   },\n-  async save(options = {}) {\n+  async save() {\n     if (this._saveInProgress) {\n       return;\n     }\n     this._saveInProgress = true;\n     await this.pdfScriptingManager.dispatchWillSave();\n-    const url = this._downloadUrl,\n-      filename = this._docFilename;\n     try {\n-      this._ensureDownloadComplete();\n       const data = await this.pdfDocument.saveDocument();\n-      const blob = new Blob([data], {\n-        type: \"application\u002Fpdf\"\n-      });\n-      await this.downloadManager.download(blob, url, filename, options);\n+      this.downloadManager.download(data, this._downloadUrl, this._docFilename);\n     } catch (reason) {\n-      console.error(`Error when saving the document: ${reason.message}`);\n-      await this.download(options);\n+      console.error(`Error when saving the document:`, reason);\n+      await this.download();\n     } finally {\n       await this.pdfScriptingManager.dispatchDidSave();\n       this._saveInProgress = false;\n@@ -12695,12 +19905,13 @@\n       });\n     }\n   },\n-  downloadOrSave(options = {}) {\n-    if (this.pdfDocument?.annotationStorage.size > 0) {\n-      this.save(options);\n-    } else {\n-      this.download(options);\n-    }\n+  async downloadOrSave() {\n+    const {\n+      classList\n+    } = this.appConfig.appContainer;\n+    classList.add(\"wait\");\n+    await (this.pdfDocument?.annotationStorage.size > 0 ? this.save() : this.download());\n+    classList.remove(\"wait\");\n   },\n   async _documentError(key, moreInfo = null) {\n     this._unblockDocumentLoadEvent();\n@@ -12731,11 +19942,8 @@\n     return message;\n   },\n   progress(level) {\n-    if (!this.loadingBar || this.downloadComplete) {\n-      return;\n-    }\n     const percent = Math.round(level * 100);\n-    if (percent \u003C= this.loadingBar.percent) {\n+    if (!this.loadingBar || percent \u003C= this.loadingBar.percent) {\n       return;\n     }\n     this.loadingBar.percent = percent;\n@@ -12749,7 +19957,6 @@\n       length\n     }) => {\n       this._contentLength = length;\n-      this.downloadComplete = true;\n       this.loadingBar?.hide();\n       firstPagePromise.then(() => {\n         this.eventBus.dispatch(\"documentloaded\", {\n@@ -12971,14 +20178,8 @@\n     this.metadata = metadata;\n     this._contentDispositionFilename ??= contentDispositionFilename;\n     this._contentLength ??= contentLength;\n-    console.log(`PDF ${pdfDocument.fingerprints[0]} [${info.PDFFormatVersion} ` + `${(info.Producer || \"-\").trim()} \u002F ${(info.Creator || \"-\").trim()}] ` + `(PDF.js: ${version || \"?\"} [${build || \"?\"}])`);\n-    let pdfTitle = info.Title;\n-    const metadataTitle = metadata?.get(\"dc:title\");\n-    if (metadataTitle) {\n-      if (metadataTitle !== \"Untitled\" && !\u002F[\\uFFF0-\\uFFFF]\u002Fg.test(metadataTitle)) {\n-        pdfTitle = metadataTitle;\n-      }\n-    }\n+    console.log(`PDF ${pdfDocument.fingerprints[0]} [${info.PDFFormatVersion} ` + `${(metadata?.get(\"pdf:producer\") || info.Producer || \"-\").trim()} \u002F ` + `${(metadata?.get(\"xmp:creatortool\") || info.Creator || \"-\").trim()}` + `] (PDF.js: ${version || \"?\"} [${build || \"?\"}])`);\n+    const pdfTitle = this._docTitle;\n     if (pdfTitle) {\n       this.setTitle(`${pdfTitle} - ${this._contentDispositionFilename || this._title}`);\n     } else if (this._contentDispositionFilename) {\n@@ -13186,145 +20387,66 @@\n     this.pdfPresentationMode?.request();\n   },\n   triggerPrinting() {\n-    if (!this.supportsPrinting) {\n-      return;\n+    if (this.supportsPrinting) {\n+      window.print();\n     }\n-    window.print();\n   },\n   bindEvents() {\n     if (this._eventBusAbortController) {\n       return;\n     }\n-    this._eventBusAbortController = new AbortController();\n+    const ac = this._eventBusAbortController = new AbortController();\n+    const opts = {\n+      signal: ac.signal\n+    };\n     const {\n       eventBus,\n-      _eventBusAbortController: {\n-        signal\n-      }\n+      externalServices,\n+      pdfDocumentProperties,\n+      pdfViewer,\n+      preferences\n     } = this;\n-    eventBus._on(\"resize\", webViewerResize, {\n-      signal\n-    });\n-    eventBus._on(\"hashchange\", webViewerHashchange, {\n-      signal\n-    });\n-    eventBus._on(\"beforeprint\", this.beforePrint.bind(this), {\n-      signal\n-    });\n-    eventBus._on(\"afterprint\", this.afterPrint.bind(this), {\n-      signal\n-    });\n-    eventBus._on(\"pagerender\", webViewerPageRender, {\n-      signal\n-    });\n-    eventBus._on(\"pagerendered\", webViewerPageRendered, {\n-      signal\n-    });\n-    eventBus._on(\"updateviewarea\", webViewerUpdateViewarea, {\n-      signal\n-    });\n-    eventBus._on(\"pagechanging\", webViewerPageChanging, {\n-      signal\n-    });\n-    eventBus._on(\"scalechanging\", webViewerScaleChanging, {\n-      signal\n-    });\n-    eventBus._on(\"rotationchanging\", webViewerRotationChanging, {\n-      signal\n-    });\n-    eventBus._on(\"sidebarviewchanged\", webViewerSidebarViewChanged, {\n-      signal\n-    });\n-    eventBus._on(\"pagemode\", webViewerPageMode, {\n-      signal\n-    });\n-    eventBus._on(\"namedaction\", webViewerNamedAction, {\n-      signal\n-    });\n-    eventBus._on(\"presentationmodechanged\", webViewerPresentationModeChanged, {\n-      signal\n-    });\n-    eventBus._on(\"presentationmode\", webViewerPresentationMode, {\n-      signal\n-    });\n-    eventBus._on(\"switchannotationeditormode\", webViewerSwitchAnnotationEditorMode, {\n-      signal\n-    });\n-    eventBus._on(\"switchannotationeditorparams\", webViewerSwitchAnnotationEditorParams, {\n-      signal\n-    });\n-    eventBus._on(\"print\", webViewerPrint, {\n-      signal\n-    });\n-    eventBus._on(\"download\", webViewerDownload, {\n-      signal\n-    });\n-    eventBus._on(\"firstpage\", webViewerFirstPage, {\n-      signal\n-    });\n-    eventBus._on(\"lastpage\", webViewerLastPage, {\n-      signal\n-    });\n-    eventBus._on(\"nextpage\", webViewerNextPage, {\n-      signal\n-    });\n-    eventBus._on(\"previouspage\", webViewerPreviousPage, {\n-      signal\n-    });\n-    eventBus._on(\"zoomin\", webViewerZoomIn, {\n-      signal\n-    });\n-    eventBus._on(\"zoomout\", webViewerZoomOut, {\n-      signal\n-    });\n-    eventBus._on(\"zoomreset\", webViewerZoomReset, {\n-      signal\n-    });\n-    eventBus._on(\"pagenumberchanged\", webViewerPageNumberChanged, {\n-      signal\n-    });\n-    eventBus._on(\"scalechanged\", webViewerScaleChanged, {\n-      signal\n-    });\n-    eventBus._on(\"rotatecw\", webViewerRotateCw, {\n-      signal\n-    });\n-    eventBus._on(\"rotateccw\", webViewerRotateCcw, {\n-      signal\n-    });\n-    eventBus._on(\"optionalcontentconfig\", webViewerOptionalContentConfig, {\n-      signal\n-    });\n-    eventBus._on(\"switchscrollmode\", webViewerSwitchScrollMode, {\n-      signal\n-    });\n-    eventBus._on(\"scrollmodechanged\", webViewerScrollModeChanged, {\n-      signal\n-    });\n-    eventBus._on(\"switchspreadmode\", webViewerSwitchSpreadMode, {\n-      signal\n-    });\n-    eventBus._on(\"spreadmodechanged\", webViewerSpreadModeChanged, {\n-      signal\n-    });\n-    eventBus._on(\"documentproperties\", webViewerDocumentProperties, {\n-      signal\n-    });\n-    eventBus._on(\"findfromurlhash\", webViewerFindFromUrlHash, {\n-      signal\n-    });\n-    eventBus._on(\"updatefindmatchescount\", webViewerUpdateFindMatchesCount, {\n-      signal\n-    });\n-    eventBus._on(\"updatefindcontrolstate\", webViewerUpdateFindControlState, {\n-      signal\n-    });\n-    eventBus._on(\"fileinputchange\", webViewerFileInputChange, {\n-      signal\n-    });\n-    eventBus._on(\"openfile\", webViewerOpenFile, {\n-      signal\n-    });\n+    eventBus._on(\"resize\", onResize.bind(this), opts);\n+    eventBus._on(\"hashchange\", onHashchange.bind(this), opts);\n+    eventBus._on(\"beforeprint\", this.beforePrint.bind(this), opts);\n+    eventBus._on(\"afterprint\", this.afterPrint.bind(this), opts);\n+    eventBus._on(\"pagerender\", onPageRender.bind(this), opts);\n+    eventBus._on(\"pagerendered\", onPageRendered.bind(this), opts);\n+    eventBus._on(\"updateviewarea\", onUpdateViewarea.bind(this), opts);\n+    eventBus._on(\"pagechanging\", onPageChanging.bind(this), opts);\n+    eventBus._on(\"scalechanging\", onScaleChanging.bind(this), opts);\n+    eventBus._on(\"rotationchanging\", onRotationChanging.bind(this), opts);\n+    eventBus._on(\"sidebarviewchanged\", onSidebarViewChanged.bind(this), opts);\n+    eventBus._on(\"pagemode\", onPageMode.bind(this), opts);\n+    eventBus._on(\"namedaction\", onNamedAction.bind(this), opts);\n+    eventBus._on(\"presentationmodechanged\", evt => pdfViewer.presentationModeState = evt.state, opts);\n+    eventBus._on(\"presentationmode\", this.requestPresentationMode.bind(this), opts);\n+    eventBus._on(\"switchannotationeditormode\", evt => pdfViewer.annotationEditorMode = evt, opts);\n+    eventBus._on(\"print\", this.triggerPrinting.bind(this), opts);\n+    eventBus._on(\"download\", this.downloadOrSave.bind(this), opts);\n+    eventBus._on(\"firstpage\", () => this.page = 1, opts);\n+    eventBus._on(\"lastpage\", () => this.page = this.pagesCount, opts);\n+    eventBus._on(\"nextpage\", () => pdfViewer.nextPage(), opts);\n+    eventBus._on(\"previouspage\", () => pdfViewer.previousPage(), opts);\n+    eventBus._on(\"zoomin\", this.zoomIn.bind(this), opts);\n+    eventBus._on(\"zoomout\", this.zoomOut.bind(this), opts);\n+    eventBus._on(\"zoomreset\", this.zoomReset.bind(this), opts);\n+    eventBus._on(\"pagenumberchanged\", onPageNumberChanged.bind(this), opts);\n+    eventBus._on(\"scalechanged\", evt => pdfViewer.currentScaleValue = evt.value, opts);\n+    eventBus._on(\"rotatecw\", this.rotatePages.bind(this, 90), opts);\n+    eventBus._on(\"rotateccw\", this.rotatePages.bind(this, -90), opts);\n+    eventBus._on(\"optionalcontentconfig\", evt => pdfViewer.optionalContentConfigPromise = evt.promise, opts);\n+    eventBus._on(\"switchscrollmode\", evt => pdfViewer.scrollMode = evt.mode, opts);\n+    eventBus._on(\"scrollmodechanged\", onViewerModesChanged.bind(this, \"scrollMode\"), opts);\n+    eventBus._on(\"switchspreadmode\", evt => pdfViewer.spreadMode = evt.mode, opts);\n+    eventBus._on(\"spreadmodechanged\", onViewerModesChanged.bind(this, \"spreadMode\"), opts);\n+    eventBus._on(\"imagealttextsettings\", onImageAltTextSettings.bind(this), opts);\n+    eventBus._on(\"documentproperties\", () => pdfDocumentProperties?.open(), opts);\n+    eventBus._on(\"findfromurlhash\", onFindFromUrlHash.bind(this), opts);\n+    eventBus._on(\"updatefindmatchescount\", onUpdateFindMatchesCount.bind(this), opts);\n+    eventBus._on(\"updatefindcontrolstate\", onUpdateFindControlState.bind(this), opts);\n+    eventBus._on(\"fileinputchange\", onFileInputChange.bind(this), opts);\n+    eventBus._on(\"openfile\", onOpenFile.bind(this), opts);\n   },\n   bindWindowEvents() {\n     if (this._windowAbortController) {\n@@ -13336,54 +20458,46 @@\n       appConfig: {\n         mainContainer\n       },\n+      pdfViewer,\n       _windowAbortController: {\n         signal\n       }\n     } = this;\n+    this._touchManager = new TouchManager({\n+      container: window,\n+      isPinchingDisabled: () => pdfViewer.isInPresentationMode,\n+      isPinchingStopped: () => this.overlayManager?.active,\n+      onPinching: this.touchPinchCallback.bind(this),\n+      onPinchEnd: this.touchPinchEndCallback.bind(this),\n+      signal\n+    });\n     function addWindowResolutionChange(evt = null) {\n       if (evt) {\n-        webViewerResolutionChange(evt);\n+        pdfViewer.refresh();\n       }\n-      const mediaQueryList = window.matchMedia(`(resolution: ${window.devicePixelRatio || 1}dppx)`);\n+      const mediaQueryList = window.matchMedia(`(resolution: ${OutputScale.pixelRatio}dppx)`);\n       mediaQueryList.addEventListener(\"change\", addWindowResolutionChange, {\n         once: true,\n         signal\n       });\n     }\n     addWindowResolutionChange();\n-    window.addEventListener(\"visibilitychange\", webViewerVisibilityChange, {\n-      signal\n-    });\n-    window.addEventListener(\"wheel\", webViewerWheel, {\n+    window.addEventListener(\"wheel\", onWheel.bind(this), {\n       passive: false,\n       signal\n     });\n-    window.addEventListener(\"touchstart\", webViewerTouchStart, {\n-      passive: false,\n+    window.addEventListener(\"click\", onClick.bind(this), {\n       signal\n     });\n-    window.addEventListener(\"touchmove\", webViewerTouchMove, {\n-      passive: false,\n-      signal\n-    });\n-    window.addEventListener(\"touchend\", webViewerTouchEnd, {\n-      passive: false,\n+    window.addEventListener(\"keydown\", onKeyDown.bind(this), {\n       signal\n     });\n-    window.addEventListener(\"click\", webViewerClick, {\n+    window.addEventListener(\"keyup\", onKeyUp.bind(this), {\n       signal\n     });\n-    window.addEventListener(\"keydown\", webViewerKeyDown, {\n-      signal\n-    });\n-    window.addEventListener(\"keyup\", webViewerKeyUp, {\n-      signal\n-    });\n-    window.addEventListener(\"resize\", () => {\n-      eventBus.dispatch(\"resize\", {\n-        source: window\n-      });\n-    }, {\n+    window.addEventListener(\"resize\", () => eventBus.dispatch(\"resize\", {\n+      source: window\n+    }), {\n       signal\n     });\n     window.addEventListener(\"hashchange\", () => {\n@@ -13394,24 +20508,20 @@\n     }, {\n       signal\n     });\n-    window.addEventListener(\"beforeprint\", () => {\n-      eventBus.dispatch(\"beforeprint\", {\n-        source: window\n-      });\n-    }, {\n+    window.addEventListener(\"beforeprint\", () => eventBus.dispatch(\"beforeprint\", {\n+      source: window\n+    }), {\n       signal\n     });\n-    window.addEventListener(\"afterprint\", () => {\n-      eventBus.dispatch(\"afterprint\", {\n-        source: window\n-      });\n-    }, {\n+    window.addEventListener(\"afterprint\", () => eventBus.dispatch(\"afterprint\", {\n+      source: window\n+    }), {\n       signal\n     });\n-    window.addEventListener(\"updatefromsandbox\", event => {\n+    window.addEventListener(\"updatefromsandbox\", evt => {\n       eventBus.dispatch(\"updatefromsandbox\", {\n         source: window,\n-        detail: event.detail\n+        detail: evt.detail\n       });\n     }, {\n       signal\n@@ -13443,9 +20553,7 @@\n       if (this._lastScrollTop === mainContainer.scrollTop && this._lastScrollLeft === mainContainer.scrollLeft) {\n         return;\n       }\n-      mainContainer.removeEventListener(\"scroll\", scroll, {\n-        passive: true\n-      });\n+      mainContainer.removeEventListener(\"scroll\", scroll);\n       this._isScrolling = true;\n       mainContainer.addEventListener(\"scrollend\", scrollend, {\n         signal\n@@ -13466,6 +20574,15 @@\n   unbindWindowEvents() {\n     this._windowAbortController?.abort();\n     this._windowAbortController = null;\n+    this._touchManager = null;\n+  },\n+  async testingClose() {\n+    this.unbindEvents();\n+    this.unbindWindowEvents();\n+    this._globalAbortController?.abort();\n+    this._globalAbortController = null;\n+    this.findBar?.close();\n+    await Promise.all([this.l10n?.destroy(), this.close()]);\n   },\n   _accumulateTicks(ticks, prop) {\n     if (this[prop] > 0 && ticks \u003C 0 || this[prop] \u003C 0 && ticks > 0) {\n@@ -13500,54 +20617,66 @@\n   PDFPrintServiceFactory.initGlobals(PDFViewerApplication);\n }\n {\n-  const HOSTED_VIEWER_ORIGINS = [\"null\", \"http:\u002F\u002Fmozilla.github.io\", \"https:\u002F\u002Fmozilla.github.io\"];\n+  const HOSTED_VIEWER_ORIGINS = new Set([\"null\", \"http:\u002F\u002Fmozilla.github.io\", \"https:\u002F\u002Fmozilla.github.io\"]);\n   var validateFileURL = function (file) {\n     if (!file) {\n       return;\n     }\n-    try {\n-      const viewerOrigin = new URL(window.location.href).origin || \"null\";\n-      if (HOSTED_VIEWER_ORIGINS.includes(viewerOrigin)) {\n-        return;\n-      }\n-      const fileOrigin = new URL(file, window.location.href).origin;\n-      if (fileOrigin !== viewerOrigin) {\n-        throw new Error(\"file origin does not match viewer's\");\n-      }\n-    } catch (ex) {\n-      PDFViewerApplication._documentError(\"pdfjs-loading-error\", {\n-        message: ex.message\n-      });\n-      throw ex;\n+    const viewerOrigin = URL.parse(window.location)?.origin || \"null\";\n+    if (HOSTED_VIEWER_ORIGINS.has(viewerOrigin)) {\n+      return;\n+    }\n+    const fileOrigin = URL.parse(file, window.location)?.origin;\n+    if (fileOrigin === viewerOrigin) {\n+      return;\n+    }\n+    const ex = new Error(\"file origin does not match viewer's\");\n+    PDFViewerApplication._documentError(\"pdfjs-loading-error\", {\n+      message: ex.message\n+    });\n+    throw ex;\n+  };\n+  var onFileInputChange = function (evt) {\n+    if (this.pdfViewer?.isInPresentationMode) {\n+      return;\n     }\n+    const file = evt.fileInput.files[0];\n+    this.open({\n+      url: URL.createObjectURL(file),\n+      originalUrl: file.name\n+    });\n+  };\n+  var onOpenFile = function (evt) {\n+    this._openFileInput?.click();\n   };\n }\n-function webViewerPageRender({\n+function onPageRender({\n   pageNumber\n }) {\n-  if (pageNumber === PDFViewerApplication.page) {\n-    PDFViewerApplication.toolbar?.updateLoadingIndicatorState(true);\n+  if (pageNumber === this.page) {\n+    this.toolbar?.updateLoadingIndicatorState(true);\n   }\n }\n-function webViewerPageRendered({\n+function onPageRendered({\n   pageNumber,\n+  isDetailView,\n   error\n }) {\n-  if (pageNumber === PDFViewerApplication.page) {\n-    PDFViewerApplication.toolbar?.updateLoadingIndicatorState(false);\n+  if (pageNumber === this.page) {\n+    this.toolbar?.updateLoadingIndicatorState(false);\n   }\n-  if (PDFViewerApplication.pdfSidebar?.visibleView === SidebarView.THUMBS) {\n-    const pageView = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1);\n-    const thumbnailView = PDFViewerApplication.pdfThumbnailViewer?.getThumbnail(pageNumber - 1);\n+  if (!isDetailView && this.pdfSidebar?.visibleView === SidebarView.THUMBS) {\n+    const pageView = this.pdfViewer.getPageView(pageNumber - 1);\n+    const thumbnailView = this.pdfThumbnailViewer?.getThumbnail(pageNumber - 1);\n     if (pageView) {\n       thumbnailView?.setImage(pageView);\n     }\n   }\n   if (error) {\n-    PDFViewerApplication._otherError(\"pdfjs-rendering-error\", error);\n+    this._otherError(\"pdfjs-rendering-error\", error);\n   }\n }\n-function webViewerPageMode({\n+function onPageMode({\n   mode\n }) {\n   let view;\n@@ -13572,42 +20701,39 @@\n       console.error('Invalid \"pagemode\" hash parameter: ' + mode);\n       return;\n   }\n-  PDFViewerApplication.pdfSidebar?.switchView(view, true);\n+  this.pdfSidebar?.switchView(view, true);\n }\n-function webViewerNamedAction(evt) {\n+function onNamedAction(evt) {\n   switch (evt.action) {\n     case \"GoToPage\":\n-      PDFViewerApplication.appConfig.toolbar?.pageNumber.select();\n+      this.appConfig.toolbar?.pageNumber.select();\n       break;\n     case \"Find\":\n-      if (!PDFViewerApplication.supportsIntegratedFind) {\n-        PDFViewerApplication.findBar?.toggle();\n+      if (!this.supportsIntegratedFind) {\n+        this.findBar?.toggle();\n       }\n       break;\n     case \"Print\":\n-      PDFViewerApplication.triggerPrinting();\n+      this.triggerPrinting();\n       break;\n     case \"SaveAs\":\n-      PDFViewerApplication.downloadOrSave();\n+      this.downloadOrSave();\n       break;\n   }\n }\n-function webViewerPresentationModeChanged(evt) {\n-  PDFViewerApplication.pdfViewer.presentationModeState = evt.state;\n-}\n-function webViewerSidebarViewChanged({\n+function onSidebarViewChanged({\n   view\n }) {\n-  PDFViewerApplication.pdfRenderingQueue.isThumbnailViewEnabled = view === SidebarView.THUMBS;\n-  if (PDFViewerApplication.isInitialViewSet) {\n-    PDFViewerApplication.store?.set(\"sidebarView\", view).catch(() => {});\n+  this.pdfRenderingQueue.isThumbnailViewEnabled = view === SidebarView.THUMBS;\n+  if (this.isInitialViewSet) {\n+    this.store?.set(\"sidebarView\", view).catch(() => {});\n   }\n }\n-function webViewerUpdateViewarea({\n+function onUpdateViewarea({\n   location\n }) {\n-  if (PDFViewerApplication.isInitialViewSet) {\n-    PDFViewerApplication.store?.setMultiple({\n+  if (this.isInitialViewSet) {\n+    this.store?.setMultiple({\n       page: location.pageNumber,\n       zoom: location.scale,\n       scrollLeft: location.left,\n@@ -13615,27 +20741,21 @@\n       rotation: location.rotation\n     }).catch(() => {});\n   }\n-  if (PDFViewerApplication.appConfig.secondaryToolbar) {\n-    const href = PDFViewerApplication.pdfLinkService.getAnchorUrl(location.pdfOpenParams);\n-    PDFViewerApplication.appConfig.secondaryToolbar.viewBookmarkButton.href = href;\n+  if (this.appConfig.secondaryToolbar) {\n+    this.appConfig.secondaryToolbar.viewBookmarkButton.href = this.pdfLinkService.getAnchorUrl(location.pdfOpenParams);\n   }\n }\n-function webViewerScrollModeChanged(evt) {\n-  if (PDFViewerApplication.isInitialViewSet && !PDFViewerApplication.pdfViewer.isInPresentationMode) {\n-    PDFViewerApplication.store?.set(\"scrollMode\", evt.mode).catch(() => {});\n+function onViewerModesChanged(name, evt) {\n+  if (this.isInitialViewSet && !this.pdfViewer.isInPresentationMode) {\n+    this.store?.set(name, evt.mode).catch(() => {});\n   }\n }\n-function webViewerSpreadModeChanged(evt) {\n-  if (PDFViewerApplication.isInitialViewSet && !PDFViewerApplication.pdfViewer.isInPresentationMode) {\n-    PDFViewerApplication.store?.set(\"spreadMode\", evt.mode).catch(() => {});\n-  }\n-}\n-function webViewerResize() {\n+function onResize() {\n   const {\n     pdfDocument,\n     pdfViewer,\n     pdfRenderingQueue\n-  } = PDFViewerApplication;\n+  } = this;\n   if (pdfRenderingQueue.printing && window.matchMedia(\"print\").matches) {\n     return;\n   }\n@@ -13648,100 +20768,36 @@\n   }\n   pdfViewer.update();\n }\n-function webViewerHashchange(evt) {\n+function onHashchange(evt) {\n   const hash = evt.hash;\n   if (!hash) {\n     return;\n   }\n-  if (!PDFViewerApplication.isInitialViewSet) {\n-    PDFViewerApplication.initialBookmark = hash;\n-  } else if (!PDFViewerApplication.pdfHistory?.popStateInProgress) {\n-    PDFViewerApplication.pdfLinkService.setHash(hash);\n+  if (!this.isInitialViewSet) {\n+    this.initialBookmark = hash;\n+  } else if (!this.pdfHistory?.popStateInProgress) {\n+    this.pdfLinkService.setHash(hash);\n   }\n }\n-{\n-  var webViewerFileInputChange = function (evt) {\n-    if (PDFViewerApplication.pdfViewer?.isInPresentationMode) {\n-      return;\n-    }\n-    const file = evt.fileInput.files[0];\n-    PDFViewerApplication.open({\n-      url: URL.createObjectURL(file),\n-      originalUrl: file.name\n-    });\n-  };\n-  var webViewerOpenFile = function (evt) {\n-    PDFViewerApplication._openFileInput?.click();\n-  };\n-}\n-function webViewerPresentationMode() {\n-  PDFViewerApplication.requestPresentationMode();\n-}\n-function webViewerSwitchAnnotationEditorMode(evt) {\n-  PDFViewerApplication.pdfViewer.annotationEditorMode = evt;\n-}\n-function webViewerSwitchAnnotationEditorParams(evt) {\n-  PDFViewerApplication.pdfViewer.annotationEditorParams = evt;\n-}\n-function webViewerPrint() {\n-  PDFViewerApplication.triggerPrinting();\n-}\n-function webViewerDownload() {\n-  PDFViewerApplication.downloadOrSave();\n-}\n-function webViewerFirstPage() {\n-  PDFViewerApplication.page = 1;\n-}\n-function webViewerLastPage() {\n-  PDFViewerApplication.page = PDFViewerApplication.pagesCount;\n-}\n-function webViewerNextPage() {\n-  PDFViewerApplication.pdfViewer.nextPage();\n-}\n-function webViewerPreviousPage() {\n-  PDFViewerApplication.pdfViewer.previousPage();\n-}\n-function webViewerZoomIn() {\n-  PDFViewerApplication.zoomIn();\n-}\n-function webViewerZoomOut() {\n-  PDFViewerApplication.zoomOut();\n-}\n-function webViewerZoomReset() {\n-  PDFViewerApplication.zoomReset();\n-}\n-function webViewerPageNumberChanged(evt) {\n-  const pdfViewer = PDFViewerApplication.pdfViewer;\n+function onPageNumberChanged(evt) {\n+  const {\n+    pdfViewer\n+  } = this;\n   if (evt.value !== \"\") {\n-    PDFViewerApplication.pdfLinkService.goToPage(evt.value);\n+    this.pdfLinkService.goToPage(evt.value);\n   }\n   if (evt.value !== pdfViewer.currentPageNumber.toString() && evt.value !== pdfViewer.currentPageLabel) {\n-    PDFViewerApplication.toolbar?.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel);\n+    this.toolbar?.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel);\n   }\n }\n-function webViewerScaleChanged(evt) {\n-  PDFViewerApplication.pdfViewer.currentScaleValue = evt.value;\n-}\n-function webViewerRotateCw() {\n-  PDFViewerApplication.rotatePages(90);\n-}\n-function webViewerRotateCcw() {\n-  PDFViewerApplication.rotatePages(-90);\n-}\n-function webViewerOptionalContentConfig(evt) {\n-  PDFViewerApplication.pdfViewer.optionalContentConfigPromise = evt.promise;\n-}\n-function webViewerSwitchScrollMode(evt) {\n-  PDFViewerApplication.pdfViewer.scrollMode = evt.mode;\n-}\n-function webViewerSwitchSpreadMode(evt) {\n-  PDFViewerApplication.pdfViewer.spreadMode = evt.mode;\n-}\n-function webViewerDocumentProperties() {\n-  PDFViewerApplication.pdfDocumentProperties?.open();\n+function onImageAltTextSettings() {\n+  this.imageAltTextSettings?.open({\n+    enableGuessAltText: AppOptions.get(\"enableGuessAltText\"),\n+    enableNewAltTextWhenAddingImage: AppOptions.get(\"enableNewAltTextWhenAddingImage\")\n+  });\n }\n-function webViewerFindFromUrlHash(evt) {\n-  PDFViewerApplication.eventBus.dispatch(\"find\", {\n+function onFindFromUrlHash(evt) {\n+  this.eventBus.dispatch(\"find\", {\n     source: evt.source,\n     type: \"\",\n     query: evt.query,\n@@ -13752,239 +20808,136 @@\n     matchDiacritics: true\n   });\n }\n-function webViewerUpdateFindMatchesCount({\n+function onUpdateFindMatchesCount({\n   matchesCount\n }) {\n-  if (PDFViewerApplication.supportsIntegratedFind) {\n-    PDFViewerApplication.externalServices.updateFindMatchesCount(matchesCount);\n+  if (this.supportsIntegratedFind) {\n+    this.externalServices.updateFindMatchesCount(matchesCount);\n   } else {\n-    PDFViewerApplication.findBar?.updateResultsCount(matchesCount);\n+    this.findBar?.updateResultsCount(matchesCount);\n   }\n }\n-function webViewerUpdateFindControlState({\n+function onUpdateFindControlState({\n   state,\n   previous,\n+  entireWord,\n   matchesCount,\n   rawQuery\n }) {\n-  if (PDFViewerApplication.supportsIntegratedFind) {\n-    PDFViewerApplication.externalServices.updateFindControlState({\n+  if (this.supportsIntegratedFind) {\n+    this.externalServices.updateFindControlState({\n       result: state,\n       findPrevious: previous,\n+      entireWord,\n       matchesCount,\n       rawQuery\n     });\n   } else {\n-    PDFViewerApplication.findBar?.updateUIState(state, previous, matchesCount);\n+    this.findBar?.updateUIState(state, previous, matchesCount);\n   }\n }\n-function webViewerScaleChanging(evt) {\n-  PDFViewerApplication.toolbar?.setPageScale(evt.presetValue, evt.scale);\n-  PDFViewerApplication.pdfViewer.update();\n+function onScaleChanging(evt) {\n+  this.toolbar?.setPageScale(evt.presetValue, evt.scale);\n+  this.pdfViewer.update();\n }\n-function webViewerRotationChanging(evt) {\n-  if (PDFViewerApplication.pdfThumbnailViewer) {\n-    PDFViewerApplication.pdfThumbnailViewer.pagesRotation = evt.pagesRotation;\n+function onRotationChanging(evt) {\n+  if (this.pdfThumbnailViewer) {\n+    this.pdfThumbnailViewer.pagesRotation = evt.pagesRotation;\n   }\n-  PDFViewerApplication.forceRendering();\n-  PDFViewerApplication.pdfViewer.currentPageNumber = evt.pageNumber;\n+  this.forceRendering();\n+  this.pdfViewer.currentPageNumber = evt.pageNumber;\n }\n-function webViewerPageChanging({\n+function onPageChanging({\n   pageNumber,\n   pageLabel\n }) {\n-  PDFViewerApplication.toolbar?.setPageNumber(pageNumber, pageLabel);\n-  PDFViewerApplication.secondaryToolbar?.setPageNumber(pageNumber);\n-  if (PDFViewerApplication.pdfSidebar?.visibleView === SidebarView.THUMBS) {\n-    PDFViewerApplication.pdfThumbnailViewer?.scrollThumbnailIntoView(pageNumber);\n-  }\n-  const currentPage = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1);\n-  PDFViewerApplication.toolbar?.updateLoadingIndicatorState(currentPage?.renderingState === RenderingStates.RUNNING);\n-}\n-function webViewerResolutionChange(evt) {\n-  PDFViewerApplication.pdfViewer.refresh();\n-}\n-function webViewerVisibilityChange(evt) {\n-  if (document.visibilityState === \"visible\") {\n-    setZoomDisabledTimeout();\n-  }\n-}\n-let zoomDisabledTimeout = null;\n-function setZoomDisabledTimeout() {\n-  if (zoomDisabledTimeout) {\n-    clearTimeout(zoomDisabledTimeout);\n+  this.toolbar?.setPageNumber(pageNumber, pageLabel);\n+  this.secondaryToolbar?.setPageNumber(pageNumber);\n+  if (this.pdfSidebar?.visibleView === SidebarView.THUMBS) {\n+    this.pdfThumbnailViewer?.scrollThumbnailIntoView(pageNumber);\n   }\n-  zoomDisabledTimeout = setTimeout(function () {\n-    zoomDisabledTimeout = null;\n-  }, WHEEL_ZOOM_DISABLED_TIMEOUT);\n+  const currentPage = this.pdfViewer.getPageView(pageNumber - 1);\n+  this.toolbar?.updateLoadingIndicatorState(currentPage?.renderingState === RenderingStates.RUNNING);\n }\n-function webViewerWheel(evt) {\n+function onWheel(evt) {\n   const {\n     pdfViewer,\n     supportsMouseWheelZoomCtrlKey,\n     supportsMouseWheelZoomMetaKey,\n     supportsPinchToZoom\n-  } = PDFViewerApplication;\n+  } = this;\n   if (pdfViewer.isInPresentationMode) {\n     return;\n   }\n   const deltaMode = evt.deltaMode;\n   let scaleFactor = Math.exp(-evt.deltaY \u002F 100);\n   const isBuiltInMac = false;\n-  const isPinchToZoom = evt.ctrlKey && !PDFViewerApplication._isCtrlKeyDown && deltaMode === WheelEvent.DOM_DELTA_PIXEL && evt.deltaX === 0 && (Math.abs(scaleFactor - 1) \u003C 0.05 || isBuiltInMac) && evt.deltaZ === 0;\n+  const isPinchToZoom = evt.ctrlKey && !this._isCtrlKeyDown && deltaMode === WheelEvent.DOM_DELTA_PIXEL && evt.deltaX === 0 && (Math.abs(scaleFactor - 1) \u003C 0.05 || isBuiltInMac) && evt.deltaZ === 0;\n   const origin = [evt.clientX, evt.clientY];\n   if (isPinchToZoom || evt.ctrlKey && supportsMouseWheelZoomCtrlKey || evt.metaKey && supportsMouseWheelZoomMetaKey) {\n     evt.preventDefault();\n-    if (PDFViewerApplication._isScrolling || zoomDisabledTimeout || document.visibilityState === \"hidden\" || PDFViewerApplication.overlayManager.active) {\n+    if (this._isScrolling || document.visibilityState === \"hidden\" || this.overlayManager.active) {\n       return;\n     }\n     if (isPinchToZoom && supportsPinchToZoom) {\n-      scaleFactor = PDFViewerApplication._accumulateFactor(pdfViewer.currentScale, scaleFactor, \"_wheelUnusedFactor\");\n-      PDFViewerApplication.updateZoom(null, scaleFactor, origin);\n+      scaleFactor = this._accumulateFactor(pdfViewer.currentScale, scaleFactor, \"_wheelUnusedFactor\");\n+      this.updateZoom(null, scaleFactor, origin);\n     } else {\n       const delta = normalizeWheelEventDirection(evt);\n       let ticks = 0;\n       if (deltaMode === WheelEvent.DOM_DELTA_LINE || deltaMode === WheelEvent.DOM_DELTA_PAGE) {\n-        if (Math.abs(delta) >= 1) {\n-          ticks = Math.sign(delta);\n-        } else {\n-          ticks = PDFViewerApplication._accumulateTicks(delta, \"_wheelUnusedTicks\");\n-        }\n+        ticks = Math.abs(delta) >= 1 ? Math.sign(delta) : this._accumulateTicks(delta, \"_wheelUnusedTicks\");\n       } else {\n         const PIXELS_PER_LINE_SCALE = 30;\n-        ticks = PDFViewerApplication._accumulateTicks(delta \u002F PIXELS_PER_LINE_SCALE, \"_wheelUnusedTicks\");\n+        ticks = this._accumulateTicks(delta \u002F PIXELS_PER_LINE_SCALE, \"_wheelUnusedTicks\");\n       }\n-      PDFViewerApplication.updateZoom(ticks, null, origin);\n+      this.updateZoom(ticks, null, origin);\n     }\n   }\n }\n-function webViewerTouchStart(evt) {\n-  if (PDFViewerApplication.pdfViewer.isInPresentationMode || evt.touches.length \u003C 2) {\n-    return;\n-  }\n-  evt.preventDefault();\n-  if (evt.touches.length !== 2 || PDFViewerApplication.overlayManager.active) {\n-    PDFViewerApplication._touchInfo = null;\n-    return;\n-  }\n-  let [touch0, touch1] = evt.touches;\n-  if (touch0.identifier > touch1.identifier) {\n-    [touch0, touch1] = [touch1, touch0];\n-  }\n-  PDFViewerApplication._touchInfo = {\n-    touch0X: touch0.pageX,\n-    touch0Y: touch0.pageY,\n-    touch1X: touch1.pageX,\n-    touch1Y: touch1.pageY\n-  };\n-}\n-function webViewerTouchMove(evt) {\n-  if (!PDFViewerApplication._touchInfo || evt.touches.length !== 2) {\n+function closeSecondaryToolbar({\n+  target\n+}) {\n+  if (!this.secondaryToolbar?.isOpen) {\n     return;\n   }\n   const {\n-    pdfViewer,\n-    _touchInfo,\n-    supportsPinchToZoom\n-  } = PDFViewerApplication;\n-  let [touch0, touch1] = evt.touches;\n-  if (touch0.identifier > touch1.identifier) {\n-    [touch0, touch1] = [touch1, touch0];\n-  }\n-  const {\n-    pageX: page0X,\n-    pageY: page0Y\n-  } = touch0;\n-  const {\n-    pageX: page1X,\n-    pageY: page1Y\n-  } = touch1;\n-  const {\n-    touch0X: pTouch0X,\n-    touch0Y: pTouch0Y,\n-    touch1X: pTouch1X,\n-    touch1Y: pTouch1Y\n-  } = _touchInfo;\n-  if (Math.abs(pTouch0X - page0X) \u003C= 1 && Math.abs(pTouch0Y - page0Y) \u003C= 1 && Math.abs(pTouch1X - page1X) \u003C= 1 && Math.abs(pTouch1Y - page1Y) \u003C= 1) {\n-    return;\n-  }\n-  _touchInfo.touch0X = page0X;\n-  _touchInfo.touch0Y = page0Y;\n-  _touchInfo.touch1X = page1X;\n-  _touchInfo.touch1Y = page1Y;\n-  if (pTouch0X === page0X && pTouch0Y === page0Y) {\n-    const v1X = pTouch1X - page0X;\n-    const v1Y = pTouch1Y - page0Y;\n-    const v2X = page1X - page0X;\n-    const v2Y = page1Y - page0Y;\n-    const det = v1X * v2Y - v1Y * v2X;\n-    if (Math.abs(det) > 0.02 * Math.hypot(v1X, v1Y) * Math.hypot(v2X, v2Y)) {\n-      return;\n-    }\n-  } else if (pTouch1X === page1X && pTouch1Y === page1Y) {\n-    const v1X = pTouch0X - page1X;\n-    const v1Y = pTouch0Y - page1Y;\n-    const v2X = page0X - page1X;\n-    const v2Y = page0Y - page1Y;\n-    const det = v1X * v2Y - v1Y * v2X;\n-    if (Math.abs(det) > 0.02 * Math.hypot(v1X, v1Y) * Math.hypot(v2X, v2Y)) {\n-      return;\n-    }\n-  } else {\n-    const diff0X = page0X - pTouch0X;\n-    const diff1X = page1X - pTouch1X;\n-    const diff0Y = page0Y - pTouch0Y;\n-    const diff1Y = page1Y - pTouch1Y;\n-    const dotProduct = diff0X * diff1X + diff0Y * diff1Y;\n-    if (dotProduct >= 0) {\n-      return;\n-    }\n-  }\n-  evt.preventDefault();\n-  const origin = [(page0X + page1X) \u002F 2, (page0Y + page1Y) \u002F 2];\n-  const distance = Math.hypot(page0X - page1X, page0Y - page1Y) || 1;\n-  const pDistance = Math.hypot(pTouch0X - pTouch1X, pTouch0Y - pTouch1Y) || 1;\n-  if (supportsPinchToZoom) {\n-    const newScaleFactor = PDFViewerApplication._accumulateFactor(pdfViewer.currentScale, distance \u002F pDistance, \"_touchUnusedFactor\");\n-    PDFViewerApplication.updateZoom(null, newScaleFactor, origin);\n-  } else {\n-    const PIXELS_PER_LINE_SCALE = 30;\n-    const ticks = PDFViewerApplication._accumulateTicks((distance - pDistance) \u002F PIXELS_PER_LINE_SCALE, \"_touchUnusedTicks\");\n-    PDFViewerApplication.updateZoom(ticks, null, origin);\n+    toolbar,\n+    secondaryToolbar\n+  } = this.appConfig;\n+  if (this.pdfViewer.containsElement(target) || toolbar?.container.contains(target) && !secondaryToolbar?.toolbar.contains(target) && !secondaryToolbar?.toggleButton.contains(target)) {\n+    this.secondaryToolbar.close();\n   }\n }\n-function webViewerTouchEnd(evt) {\n-  if (!PDFViewerApplication._touchInfo) {\n+function closeEditorUndoBar(evt) {\n+  if (!this.editorUndoBar?.isOpen) {\n     return;\n   }\n-  evt.preventDefault();\n-  PDFViewerApplication._touchInfo = null;\n-  PDFViewerApplication._touchUnusedTicks = 0;\n-  PDFViewerApplication._touchUnusedFactor = 1;\n-}\n-function webViewerClick(evt) {\n-  if (!PDFViewerApplication.secondaryToolbar?.isOpen) {\n-    return;\n-  }\n-  const appConfig = PDFViewerApplication.appConfig;\n-  if (PDFViewerApplication.pdfViewer.containsElement(evt.target) || appConfig.toolbar?.container.contains(evt.target) && evt.target !== appConfig.secondaryToolbar?.toggleButton) {\n-    PDFViewerApplication.secondaryToolbar.close();\n+  if (this.appConfig.secondaryToolbar?.toolbar.contains(evt.target)) {\n+    this.editorUndoBar.hide();\n   }\n }\n-function webViewerKeyUp(evt) {\n+function onClick(evt) {\n+  closeSecondaryToolbar.call(this, evt);\n+  closeEditorUndoBar.call(this, evt);\n+}\n+function onKeyUp(evt) {\n   if (evt.key === \"Control\") {\n-    PDFViewerApplication._isCtrlKeyDown = false;\n+    this._isCtrlKeyDown = false;\n   }\n }\n-function webViewerKeyDown(evt) {\n-  PDFViewerApplication._isCtrlKeyDown = evt.key === \"Control\";\n-  if (PDFViewerApplication.overlayManager.active) {\n+function onKeyDown(evt) {\n+  this._isCtrlKeyDown = evt.key === \"Control\";\n+  if (this.editorUndoBar?.isOpen && evt.keyCode !== 9 && evt.keyCode !== 16 && !((evt.keyCode === 13 || evt.keyCode === 32) && getActiveOrFocusedElement() === this.appConfig.editorUndoBar.undoButton)) {\n+    this.editorUndoBar.hide();\n+  }\n+  if (this.overlayManager.active) {\n     return;\n   }\n   const {\n     eventBus,\n     pdfViewer\n-  } = PDFViewerApplication;\n+  } = this;\n   const isViewerInPresentationMode = pdfViewer.isInPresentationMode;\n   let handled = false,\n     ensureViewerFocused = false;\n@@ -13992,16 +20945,16 @@\n   if (cmd === 1 || cmd === 8 || cmd === 5 || cmd === 12) {\n     switch (evt.keyCode) {\n       case 70:\n-        if (!PDFViewerApplication.supportsIntegratedFind && !evt.shiftKey) {\n-          PDFViewerApplication.findBar?.open();\n+        if (!this.supportsIntegratedFind && !evt.shiftKey) {\n+          this.findBar?.open();\n           handled = true;\n         }\n         break;\n       case 71:\n-        if (!PDFViewerApplication.supportsIntegratedFind) {\n+        if (!this.supportsIntegratedFind) {\n           const {\n             state\n-          } = PDFViewerApplication.findController;\n+          } = this.findController;\n           if (state) {\n             const newState = {\n               source: window,\n@@ -14020,34 +20973,34 @@\n       case 107:\n       case 187:\n       case 171:\n-        PDFViewerApplication.zoomIn();\n+        this.zoomIn();\n         handled = true;\n         break;\n       case 173:\n       case 109:\n       case 189:\n-        PDFViewerApplication.zoomOut();\n+        this.zoomOut();\n         handled = true;\n         break;\n       case 48:\n       case 96:\n         if (!isViewerInPresentationMode) {\n-          setTimeout(function () {\n-            PDFViewerApplication.zoomReset();\n+          setTimeout(() => {\n+            this.zoomReset();\n           });\n           handled = false;\n         }\n         break;\n       case 38:\n-        if (isViewerInPresentationMode || PDFViewerApplication.page > 1) {\n-          PDFViewerApplication.page = 1;\n+        if (isViewerInPresentationMode || this.page > 1) {\n+          this.page = 1;\n           handled = true;\n           ensureViewerFocused = true;\n         }\n         break;\n       case 40:\n-        if (isViewerInPresentationMode || PDFViewerApplication.page \u003C PDFViewerApplication.pagesCount) {\n-          PDFViewerApplication.page = PDFViewerApplication.pagesCount;\n+        if (isViewerInPresentationMode || this.page \u003C this.pagesCount) {\n+          this.page = this.pagesCount;\n           handled = true;\n           ensureViewerFocused = true;\n         }\n@@ -14075,9 +21028,9 @@\n   if (cmd === 3 || cmd === 10) {\n     switch (evt.keyCode) {\n       case 80:\n-        PDFViewerApplication.requestPresentationMode();\n+        this.requestPresentationMode();\n         handled = true;\n-        PDFViewerApplication.externalServices.reportTelemetry({\n+        this.externalServices.reportTelemetry({\n           type: \"buttons\",\n           data: {\n             id: \"presentationModeKeyboard\"\n@@ -14085,8 +21038,8 @@\n         });\n         break;\n       case 71:\n-        if (PDFViewerApplication.appConfig.toolbar) {\n-          PDFViewerApplication.appConfig.toolbar.pageNumber.select();\n+        if (this.appConfig.toolbar) {\n+          this.appConfig.toolbar.pageNumber.select();\n           handled = true;\n         }\n         break;\n@@ -14111,8 +21064,8 @@\n       turnOnlyIfPageFit = false;\n     switch (evt.keyCode) {\n       case 38:\n-        if (PDFViewerApplication.supportsCaretBrowsingMode) {\n-          PDFViewerApplication.moveCaret(true, false);\n+        if (this.supportsCaretBrowsingMode) {\n+          this.moveCaret(true, false);\n           handled = true;\n           break;\n         }\n@@ -14129,7 +21082,7 @@\n         turnPage = -1;\n         break;\n       case 37:\n-        if (PDFViewerApplication.supportsCaretBrowsingMode) {\n+        if (this.supportsCaretBrowsingMode) {\n           return;\n         }\n         if (pdfViewer.isHorizontalScrollbarEnabled) {\n@@ -14140,18 +21093,18 @@\n         turnPage = -1;\n         break;\n       case 27:\n-        if (PDFViewerApplication.secondaryToolbar?.isOpen) {\n-          PDFViewerApplication.secondaryToolbar.close();\n+        if (this.secondaryToolbar?.isOpen) {\n+          this.secondaryToolbar.close();\n           handled = true;\n         }\n-        if (!PDFViewerApplication.supportsIntegratedFind && PDFViewerApplication.findBar?.opened) {\n-          PDFViewerApplication.findBar.close();\n+        if (!this.supportsIntegratedFind && this.findBar?.opened) {\n+          this.findBar.close();\n           handled = true;\n         }\n         break;\n       case 40:\n-        if (PDFViewerApplication.supportsCaretBrowsingMode) {\n-          PDFViewerApplication.moveCaret(false, false);\n+        if (this.supportsCaretBrowsingMode) {\n+          this.moveCaret(false, false);\n           handled = true;\n           break;\n         }\n@@ -14169,7 +21122,7 @@\n         turnPage = 1;\n         break;\n       case 39:\n-        if (PDFViewerApplication.supportsCaretBrowsingMode) {\n+        if (this.supportsCaretBrowsingMode) {\n           return;\n         }\n         if (pdfViewer.isHorizontalScrollbarEnabled) {\n@@ -14180,30 +21133,30 @@\n         turnPage = 1;\n         break;\n       case 36:\n-        if (isViewerInPresentationMode || PDFViewerApplication.page > 1) {\n-          PDFViewerApplication.page = 1;\n+        if (isViewerInPresentationMode || this.page > 1) {\n+          this.page = 1;\n           handled = true;\n           ensureViewerFocused = true;\n         }\n         break;\n       case 35:\n-        if (isViewerInPresentationMode || PDFViewerApplication.page \u003C PDFViewerApplication.pagesCount) {\n-          PDFViewerApplication.page = PDFViewerApplication.pagesCount;\n+        if (isViewerInPresentationMode || this.page \u003C this.pagesCount) {\n+          this.page = this.pagesCount;\n           handled = true;\n           ensureViewerFocused = true;\n         }\n         break;\n       case 83:\n-        PDFViewerApplication.pdfCursorTools?.switchTool(CursorTool.SELECT);\n+        this.pdfCursorTools?.switchTool(CursorTool.SELECT);\n         break;\n       case 72:\n-        PDFViewerApplication.pdfCursorTools?.switchTool(CursorTool.HAND);\n+        this.pdfCursorTools?.switchTool(CursorTool.HAND);\n         break;\n       case 82:\n-        PDFViewerApplication.rotatePages(90);\n+        this.rotatePages(90);\n         break;\n       case 115:\n-        PDFViewerApplication.pdfSidebar?.toggle();\n+        this.pdfSidebar?.toggle();\n         break;\n     }\n     if (turnPage !== 0 && (!turnOnlyIfPageFit || pdfViewer.currentScaleValue === \"page-fit\")) {\n@@ -14226,15 +21179,15 @@\n         handled = true;\n         break;\n       case 38:\n-        PDFViewerApplication.moveCaret(true, true);\n+        this.moveCaret(true, true);\n         handled = true;\n         break;\n       case 40:\n-        PDFViewerApplication.moveCaret(false, true);\n+        this.moveCaret(false, true);\n         handled = true;\n         break;\n       case 82:\n-        PDFViewerApplication.rotatePages(-90);\n+        this.rotatePages(-90);\n         break;\n     }\n   }\n@@ -14255,22 +21208,12 @@\n   evt.returnValue = \"\";\n   return false;\n }\n-function webViewerAnnotationEditorStatesChanged(data) {\n-  PDFViewerApplication.externalServices.updateEditorStates(data);\n-}\n-function webViewerReportTelemetry({\n-  details\n-}) {\n-  PDFViewerApplication.externalServices.reportTelemetry(details);\n-}\n \n-;\u002F\u002F CONCATENATED MODULE: .\u002Fweb\u002Fviewer.js\n+;\u002F\u002F .\u002Fweb\u002Fviewer.js\n \n \n \n \n-const pdfjsVersion = \"4.3.136\";\n-const pdfjsBuild = \"0cec64437\";\n const AppConstants = {\n   LinkTarget: LinkTarget,\n   RenderingStates: RenderingStates,\n@@ -14283,34 +21226,36 @@\n function getViewerConfiguration() {\n   return {\n     appContainer: document.body,\n+    principalContainer: document.getElementById(\"mainContainer\"),\n     mainContainer: document.getElementById(\"viewerContainer\"),\n     viewerContainer: document.getElementById(\"viewer\"),\n     toolbar: {\n-      container: document.getElementById(\"toolbarViewer\"),\n+      container: document.getElementById(\"toolbarContainer\"),\n       numPages: document.getElementById(\"numPages\"),\n       pageNumber: document.getElementById(\"pageNumber\"),\n       scaleSelect: document.getElementById(\"scaleSelect\"),\n       customScaleOption: document.getElementById(\"customScaleOption\"),\n       previous: document.getElementById(\"previous\"),\n       next: document.getElementById(\"next\"),\n-      zoomIn: document.getElementById(\"zoomIn\"),\n-      zoomOut: document.getElementById(\"zoomOut\"),\n-      viewFind: document.getElementById(\"viewFind\"),\n-      print: document.getElementById(\"print\"),\n-      editorFreeTextButton: document.getElementById(\"editorFreeText\"),\n+      zoomIn: document.getElementById(\"zoomInButton\"),\n+      zoomOut: document.getElementById(\"zoomOutButton\"),\n+      print: document.getElementById(\"printButton\"),\n+      editorFreeTextButton: document.getElementById(\"editorFreeTextButton\"),\n       editorFreeTextParamsToolbar: document.getElementById(\"editorFreeTextParamsToolbar\"),\n-      editorHighlightButton: document.getElementById(\"editorHighlight\"),\n+      editorHighlightButton: document.getElementById(\"editorHighlightButton\"),\n       editorHighlightParamsToolbar: document.getElementById(\"editorHighlightParamsToolbar\"),\n       editorHighlightColorPicker: document.getElementById(\"editorHighlightColorPicker\"),\n-      editorInkButton: document.getElementById(\"editorInk\"),\n+      editorInkButton: document.getElementById(\"editorInkButton\"),\n       editorInkParamsToolbar: document.getElementById(\"editorInkParamsToolbar\"),\n-      editorStampButton: document.getElementById(\"editorStamp\"),\n+      editorStampButton: document.getElementById(\"editorStampButton\"),\n       editorStampParamsToolbar: document.getElementById(\"editorStampParamsToolbar\"),\n-      download: document.getElementById(\"download\")\n+      editorSignatureButton: document.getElementById(\"editorSignatureButton\"),\n+      editorSignatureParamsToolbar: document.getElementById(\"editorSignatureParamsToolbar\"),\n+      download: document.getElementById(\"downloadButton\")\n     },\n     secondaryToolbar: {\n       toolbar: document.getElementById(\"secondaryToolbar\"),\n-      toggleButton: document.getElementById(\"secondaryToolbarToggle\"),\n+      toggleButton: document.getElementById(\"secondaryToolbarToggleButton\"),\n       presentationModeButton: document.getElementById(\"presentationMode\"),\n       openFileButton: document.getElementById(\"secondaryOpenFile\"),\n       printButton: document.getElementById(\"secondaryPrint\"),\n@@ -14329,12 +21274,14 @@\n       spreadNoneButton: document.getElementById(\"spreadNone\"),\n       spreadOddButton: document.getElementById(\"spreadOdd\"),\n       spreadEvenButton: document.getElementById(\"spreadEven\"),\n+      imageAltTextSettingsButton: document.getElementById(\"imageAltTextSettings\"),\n+      imageAltTextSettingsSeparator: document.getElementById(\"imageAltTextSettingsSeparator\"),\n       documentPropertiesButton: document.getElementById(\"documentProperties\")\n     },\n     sidebar: {\n       outerContainer: document.getElementById(\"outerContainer\"),\n       sidebarContainer: document.getElementById(\"sidebarContainer\"),\n-      toggleButton: document.getElementById(\"sidebarToggle\"),\n+      toggleButton: document.getElementById(\"sidebarToggleButton\"),\n       resizer: document.getElementById(\"sidebarResizer\"),\n       thumbnailButton: document.getElementById(\"viewThumbnail\"),\n       outlineButton: document.getElementById(\"viewOutline\"),\n@@ -14348,7 +21295,7 @@\n     },\n     findBar: {\n       bar: document.getElementById(\"findbar\"),\n-      toggleButton: document.getElementById(\"viewFind\"),\n+      toggleButton: document.getElementById(\"viewFindButton\"),\n       findField: document.getElementById(\"findInput\"),\n       highlightAllCheckbox: document.getElementById(\"findHighlightAll\"),\n       caseSensitiveCheckbox: document.getElementById(\"findMatchCase\"),\n@@ -14356,8 +21303,8 @@\n       entireWordCheckbox: document.getElementById(\"findEntireWord\"),\n       findMsg: document.getElementById(\"findMsg\"),\n       findResultsCount: document.getElementById(\"findResultsCount\"),\n-      findPreviousButton: document.getElementById(\"findPrevious\"),\n-      findNextButton: document.getElementById(\"findNext\")\n+      findPreviousButton: document.getElementById(\"findPreviousButton\"),\n+      findNextButton: document.getElementById(\"findNextButton\")\n     },\n     passwordOverlay: {\n       dialog: document.getElementById(\"passwordDialog\"),\n@@ -14394,6 +21341,65 @@\n       cancelButton: document.getElementById(\"altTextCancel\"),\n       saveButton: document.getElementById(\"altTextSave\")\n     },\n+    newAltTextDialog: {\n+      dialog: document.getElementById(\"newAltTextDialog\"),\n+      title: document.getElementById(\"newAltTextTitle\"),\n+      descriptionContainer: document.getElementById(\"newAltTextDescriptionContainer\"),\n+      textarea: document.getElementById(\"newAltTextDescriptionTextarea\"),\n+      disclaimer: document.getElementById(\"newAltTextDisclaimer\"),\n+      learnMore: document.getElementById(\"newAltTextLearnMore\"),\n+      imagePreview: document.getElementById(\"newAltTextImagePreview\"),\n+      createAutomatically: document.getElementById(\"newAltTextCreateAutomatically\"),\n+      createAutomaticallyButton: document.getElementById(\"newAltTextCreateAutomaticallyButton\"),\n+      downloadModel: document.getElementById(\"newAltTextDownloadModel\"),\n+      downloadModelDescription: document.getElementById(\"newAltTextDownloadModelDescription\"),\n+      error: document.getElementById(\"newAltTextError\"),\n+      errorCloseButton: document.getElementById(\"newAltTextCloseButton\"),\n+      cancelButton: document.getElementById(\"newAltTextCancel\"),\n+      notNowButton: document.getElementById(\"newAltTextNotNow\"),\n+      saveButton: document.getElementById(\"newAltTextSave\")\n+    },\n+    altTextSettingsDialog: {\n+      dialog: document.getElementById(\"altTextSettingsDialog\"),\n+      createModelButton: document.getElementById(\"createModelButton\"),\n+      aiModelSettings: document.getElementById(\"aiModelSettings\"),\n+      learnMore: document.getElementById(\"altTextSettingsLearnMore\"),\n+      deleteModelButton: document.getElementById(\"deleteModelButton\"),\n+      downloadModelButton: document.getElementById(\"downloadModelButton\"),\n+      showAltTextDialogButton: document.getElementById(\"showAltTextDialogButton\"),\n+      altTextSettingsCloseButton: document.getElementById(\"altTextSettingsCloseButton\"),\n+      closeButton: document.getElementById(\"altTextSettingsCloseButton\")\n+    },\n+    addSignatureDialog: {\n+      dialog: document.getElementById(\"addSignatureDialog\"),\n+      panels: document.getElementById(\"addSignatureActionContainer\"),\n+      typeButton: document.getElementById(\"addSignatureTypeButton\"),\n+      typeInput: document.getElementById(\"addSignatureTypeInput\"),\n+      drawButton: document.getElementById(\"addSignatureDrawButton\"),\n+      drawSVG: document.getElementById(\"addSignatureDraw\"),\n+      drawPlaceholder: document.getElementById(\"addSignatureDrawPlaceholder\"),\n+      drawThickness: document.getElementById(\"addSignatureDrawThickness\"),\n+      imageButton: document.getElementById(\"addSignatureImageButton\"),\n+      imageSVG: document.getElementById(\"addSignatureImage\"),\n+      imagePlaceholder: document.getElementById(\"addSignatureImagePlaceholder\"),\n+      imagePicker: document.getElementById(\"addSignatureFilePicker\"),\n+      imagePickerLink: document.getElementById(\"addSignatureImageBrowse\"),\n+      description: document.getElementById(\"addSignatureDescription\"),\n+      clearButton: document.getElementById(\"clearSignatureButton\"),\n+      saveContainer: document.getElementById(\"addSignatureSaveContainer\"),\n+      saveCheckbox: document.getElementById(\"addSignatureSaveCheckbox\"),\n+      errorBar: document.getElementById(\"addSignatureError\"),\n+      errorCloseButton: document.getElementById(\"addSignatureErrorCloseButton\"),\n+      cancelButton: document.getElementById(\"addSignatureCancelButton\"),\n+      addButton: document.getElementById(\"addSignatureAddButton\")\n+    },\n+    editSignatureDialog: {\n+      dialog: document.getElementById(\"editSignatureDescriptionDialog\"),\n+      description: document.getElementById(\"editSignatureDescription\"),\n+      editSignatureView: document.getElementById(\"editSignatureView\"),\n+      cancelButton: document.getElementById(\"editSignatureCancelButton\"),\n+      updateButton: document.getElementById(\"editSignatureUpdateButton\")\n+    },\n     annotationEditorParams: {\n       editorFreeTextFontSize: document.getElementById(\"editorFreeTextFontSize\"),\n       editorFreeTextColor: document.getElementById(\"editorFreeTextColor\"),\n@@ -14401,10 +21407,17 @@\n       editorInkThickness: document.getElementById(\"editorInkThickness\"),\n       editorInkOpacity: document.getElementById(\"editorInkOpacity\"),\n       editorStampAddImage: document.getElementById(\"editorStampAddImage\"),\n+      editorSignatureAddSignature: document.getElementById(\"editorSignatureAddSignature\"),\n       editorFreeHighlightThickness: document.getElementById(\"editorFreeHighlightThickness\"),\n       editorHighlightShowAll: document.getElementById(\"editorHighlightShowAll\")\n     },\n-    printContainer: document.getElementById(\"printContainer\")\n+    printContainer: document.getElementById(\"printContainer\"),\n+    editorUndoBar: {\n+      container: document.getElementById(\"editorUndoBar\"),\n+      message: document.getElementById(\"editorUndoBarMessage\"),\n+      undoButton: document.getElementById(\"editorUndoBarUndoButton\"),\n+      closeButton: document.getElementById(\"editorUndoBarCloseButton\")\n+    }\n   };\n }\n function webViewerLoad() {\n@@ -14419,7 +21432,7 @@\n   try {\n     parent.document.dispatchEvent(event);\n   } catch (ex) {\n-    console.error(`webviewerloaded: ${ex}`);\n+    console.error(\"webviewerloaded:\", ex);\n     document.dispatchEvent(event);\n   }\n   PDFViewerApplication.run(config);\n@@ -14431,9 +21444,6 @@\n   document.addEventListener(\"DOMContentLoaded\", webViewerLoad, true);\n }\n \n-var __webpack_exports__PDFViewerApplication = __webpack_exports__.PDFViewerApplication;\n-var __webpack_exports__PDFViewerApplicationConstants = __webpack_exports__.PDFViewerApplicationConstants;\n-var __webpack_exports__PDFViewerApplicationOptions = __webpack_exports__.PDFViewerApplicationOptions;\n-export { __webpack_exports__PDFViewerApplication as PDFViewerApplication, __webpack_exports__PDFViewerApplicationConstants as PDFViewerApplicationConstants, __webpack_exports__PDFViewerApplicationOptions as PDFViewerApplicationOptions };\n+export { PDFViewerApplication, AppConstants as PDFViewerApplicationConstants, AppOptions as PDFViewerApplicationOptions };\n \n \u002F\u002F# sourceMappingURL=viewer.js.map\n\\ No newline at end of file\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Fviewer.js.map \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Fviewer.js.map\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fassets\u002Fpdf.js\u002Fweb\u002Fviewer.js.map\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb\u002Fviewer.js.map\t2026-02-24 09:27:28.000000000 +0000\n@@ -1 +1 @@\n-{\"version\":3,\"file\":\"viewer.js\",\"mappings\":\"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\u002FB,OAAO\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\u002FB;MACA,MAAM,IAAI\u002FB,WAAW,CAAC,oBAAoB,CAAC;IAC\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\u002FB4qB,gBAAgB,CAAC7C,QAAQ,CAAC\u002FiB,CAAC,CAAC,EAAEgqB,YAAY,CAAChqB,CAAC,CAAC,CAAC;MAClD;IACJ;IACA,IAAI,CAAC2sB,eAAe,CAAC,CAAC;EAC1B;EAQAU,gBAAgBA,CAAC3zB,OAAO,EAAE;IACtB,MAAMg0B,KAAK,GAAGhf,KAAK,CAACgZ,IAAI,CAAChuB,OAAO,CAACi0B,gBAAgB,CAAC1C,kBAAkB,CAAC,CAAC;IACtE,IAAI,OAAOvxB,OAAO,CAACotB,YAAY,KAAK,UAAU,IAC1CptB,OAAO,CAACotB,YAAY,CAACiE,gBAAgB,CAAC,EAAE;MACxC2C,KAAK,CAAC5rB,IAAI,CAACpI,OAAO,CAAC;IACvB;IACA,OAAOg0B,KAAK;EAChB;EASAF,iBAAiBA,CAAC9zB,OAAO,EAAE;IACvB,OAAO;MACHqI,EAAE,EAAErI,OAAO,CAAC8tB,YAAY,CAACuD,gBAAgB,CAAC;MAC1C7Y,IAAI,EAAEhC,IAAI,CAACiB,KAAK,CAACzX,OAAO,CAAC8tB,YAAY,CAACwD,kBAAkB,CAAC,IAAI,IAAI;IACrE,CAAC;EACL;AACJ;;ACjUmE;;;ACsBnE,MAAM4C,IAAI,CAAC;EACT,CAACC,GAAG;EAEJ,CAACC,IAAI;EAEL,CAACC,IAAI;EAEL70B,WAAWA,CAAC;IAAE40B,IAAI;IAAEE;EAAM,CAAC,EAAED,IAAI,GAAG,IAAI,EAAE;IACxC,IAAI,CAAC,CAACD,IAAI,GAAGF,IAAI,CAAC,CAACK,aAAa,CAACH,IAAI,CAAC;IACtC,IAAI,CAAC,CAACC,IAAI,GAAGA,IAAI;IACjB,IAAI,CAAC,CAACF,GAAG,GAAGG,KAAK,IAAIJ,IAAI,CAAC,CAACI,KAAK,CAAC,IAAI,CAAC,CAACF,IAAI,CAAC,GAAG,KAAK,GAAG,KAAK;EAC9D;EAEAI,QAAQA,CAACH,IAAI,EAAE;IACb,IAAI,CAAC,CAACA,IAAI,GAAGA,IAAI;EAInB;EAGAI,WAAWA,CAAA,EAAG;IACZ,OAAO,IAAI,CAAC,CAACL,IAAI;EACnB;EAGAM,YAAYA,CAAA,EAAG;IACb,OAAO,IAAI,CAAC,CAACP,GAAG;EAClB;EAGA,MAAMzhB,GAAGA,CAACvL,GAAG,EAAEqR,IAAI,GAAG,IAAI,EAAEmc,QAAQ,EAAE;IACpC,IAAI3f,KAAK,CAACC,OAAO,CAAC9N,GAAG,CAAC,EAAE;MACtBA,GAAG,GAAGA,GAAG,CAAC4mB,GAAG,CAAC1lB,EAAE,KAAK;QAAEA;MAAG,CAAC,CAAC,CAAC;MAC7B,MAAMusB,QAAQ,GAAG,MAAM,IAAI,CAAC,CAACP,IAAI,CAAC1D,cAAc,CAACxpB,GAAG,CAAC;MACrD,OAAOytB,QAAQ,CAAC7G,GAAG,CAAC5K,OAAO,IAAIA,OAAO,CAACngB,KAAK,CAAC;IAC\u002FC;IAEA,MAAM4xB,QAAQ,GAAG,MAAM,IAAI,CAAC,CAACP,IAAI,CAAC1D,cAAc,CAAC,CAC\u002FC;MACEtoB,EAAE,EAAElB,GAAG;MACPqR;IACF,CAAC,CACF,CAAC;IACF,OAAOoc,QAAQ,GAAG,CAAC,CAAC,CAAC5xB,KAAK,IAAI2xB,QAAQ;EACxC;EAGA,MAAME,SAASA,CAAC70B,OAAO,EAAE;IACvB,IAAI;MACF,IAAI,CAAC,CAACq0B,IAAI,CAAC\u002FB,WAAW,CAACtyB,OAAO,CAAC;MAC\u002FB,MAAM,IAAI,CAAC,CAACq0B,IAAI,CAAClC,cAAc,CAAC,CAAC;IACnC,CAAC,CAAC,MAAM,CAER;EACF;EAGA2C,KAAKA,CAAA,EAAG;IACN,IAAI,CAAC,CAACT,IAAI,CAACtB,cAAc,CAAC,CAAC;EAC7B;EAGAgC,MAAMA,CAAA,EAAG;IACP,IAAI,CAAC,CAACV,IAAI,CAACpB,eAAe,CAAC,CAAC;EAC9B;EAEA,OAAO,CAACsB,aAAaS,CAACC,QAAQ,EAAE;IAE9BA,QAAQ,GAAGA,QAAQ,EAAE9xB,WAAW,CAAC,CAAC,IAAI,OAAO;IAG7C,MAAM+xB,kBAAkB,GAAG;MACzBC,EAAE,EAAE,OAAO;MACXC,EAAE,EAAE,OAAO;MACXC,EAAE,EAAE,OAAO;MACXC,EAAE,EAAE,OAAO;MACXC,EAAE,EAAE,OAAO;MACXC,EAAE,EAAE,OAAO;MACXC,EAAE,EAAE,OAAO;MACXC,EAAE,EAAE,OAAO;MACXC,EAAE,EAAE,OAAO;MACXC,EAAE,EAAE,OAAO;MACXC,EAAE,EAAE,OAAO;MACXC,EAAE,EAAE,OAAO;MACXC,EAAE,EAAE,OAAO;MACXC,EAAE,EAAE;IACN,CAAC;IACD,OAAOd,kBAAkB,CAACD,QAAQ,CAAC,IAAIA,QAAQ;EACjD;EAEA,OAAO,CAACX,KAAK2B,CAAC7B,IAAI,EAAE;IAClB,MAAM8B,SAAS,GAAG9B,IAAI,CAACjd,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC9M,QAAQ,CAAC6rB,SAAS,CAAC;EAC3D;AACF;AAEA,MAAMC,WAAW,GAAG,IAAI;;;ACtGqC;AAChB;AACP;AACL;AAEjC,SAASC,YAAYA,CAAChC,IAAI,EAAEtJ,IAAI,EAAE;EAChC,MAAMuL,QAAQ,GAAG,IAAItO,cAAc,CAAC+C,IAAI,CAAC;EACzC,MAAM1H,MAAM,GAAG,IAAIsC,YAAY,CAAC0O,IAAI,CAAC;EACrC,MAAM1P,MAAM,GAAGtB,MAAM,CAAC2C,WAAW,CAACsQ,QAAQ,CAAC;EAC3C,IAAI3R,MAAM,CAACzgB,MAAM,EAAE;IACjB5D,OAAO,CAACC,KAAK,CAAC,aAAa,EAAEokB,MAAM,CAAC;EACtC;EACA,OAAOtB,MAAM;AACf;AAKA,MAAM+S,uBAAW,SAASjC,IAAI,CAAC;EAC7B10B,WAAWA,CAAC40B,IAAI,EAAE;IAChB,KAAK,CAAC;MAAEA;IAAK,CAAC,CAAC;IAEf,MAAMtE,eAAe,GAAG,CAACsE,IAAI,GACzB+B,uBAAW,CAAC,CAACG,uBAAuB,CAAC1Z,IAAI,CACvCuZ,uBAAW,EACX,IAAI,CAAC1B,WAAW,CAAC,CACnB,CAAC,GACD0B,uBAAW,CAAC,CAACrG,eAAe,CAAClT,IAAI,CAC\u002FBuZ,uBAAW,EACX,OAAO,EACP,IAAI,CAAC1B,WAAW,CAAC,CACnB,CAAC;IACL,IAAI,CAACD,QAAQ,CAAC,IAAIhD,eAAe,CAAC,EAAE,EAAE1B,eAAe,CAAC,CAAC;EACzD;EAQA,cAAc,CAACA,eAAeyG,CAACC,WAAW,EAAEC,QAAQ,EAAE;IACpD,MAAM;MAAEC,OAAO;MAAEC;IAAM,CAAC,GAAG,MAAM,IAAI,CAAC,CAACC,QAAQ,CAAC,CAAC;IAEjD,MAAMC,KAAK,GAAG,CAACJ,QAAQ,CAAC;IACxB,IAAID,WAAW,KAAKC,QAAQ,EAAE;MAG5B,MAAMK,SAAS,GAAGL,QAAQ,CAACtf,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;MAE3C,IAAI2f,SAAS,KAAKL,QAAQ,EAAE;QAC1BI,KAAK,CAACzuB,IAAI,CAAC0uB,SAAS,CAAC;MACvB;MACAD,KAAK,CAACzuB,IAAI,CAACouB,WAAW,CAAC;IACzB;IACA,KAAK,MAAMpC,IAAI,IAAIyC,KAAK,EAAE;MACxB,MAAMzT,MAAM,GAAG,MAAM,IAAI,CAAC,CAACgT,YAAY,CAAChC,IAAI,EAAEsC,OAAO,EAAEC,KAAK,CAAC;MAC7D,IAAIvT,MAAM,EAAE;QACV,MAAMA,MAAM;MACd;MACA,IAAIgR,IAAI,KAAK,OAAO,EAAE;QACpB,MAAM,IAAI,CAAC,CAAC2C,oBAAoB,CAAC3C,IAAI,CAAC;MACxC;IACF;EACF;EAEA,aAAa,CAACgC,YAAYY,CAAC5C,IAAI,EAAEsC,OAAO,EAAEC,KAAK,EAAE;IAC\u002FC,MAAMM,IAAI,GAAGN,KAAK,CAACvC,IAAI,CAAC;IACxB,IAAI,CAAC6C,IAAI,EAAE;MACT,OAAO,IAAI;IACb;IACA,MAAMphB,GAAG,GAAG,IAAIqhB,GAAG,CAACD,IAAI,EAAEP,OAAO,CAAC;IAClC,MAAM5L,IAAI,GAAG,MAAMlR,SAAS,CAAC\u002FD,GAAG,EAAe,MAAM,CAAC;IAEtD,OAAOugB,YAAY,CAAChC,IAAI,EAAEtJ,IAAI,CAAC;EACjC;EAEA,aAAa,CAAC8L,QAAQO,CAAA,EAAG;IACvB,IAAI;MACF,MAAM;QAAElhB;MAAK,CAAC,GAAGpL,QAAQ,CAAC6B,aAAa,CAAE,+BAA8B,CAAC;MACxE,MAAMiqB,KAAK,GAAG,MAAM\u002Fc,SAAS,CAAC3D,IAAI,EAAe,MAAM,CAAC;MAExD,OAAO;QAAEygB,OAAO,EAAEzgB,IAAI,CAAC8U,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,IAAI;QAAE4L;MAAM,CAAC;IAC\u002FD,CAAC,CAAC,MAAM,CAAC;IACT,OAAO;MAAED,OAAO,EAAE,IAAI;MAAEC,KAAK,EAAExsB,MAAM,CAACoD,MAAM,CAAC,IAAI;IAAE,CAAC;EACtD;EAEA,cAAc,CAAC+oB,uBAAuBc,CAAChD,IAAI,EAAE;IAC3C,MAAM,IAAI,CAAC,CAAC2C,oBAAoB,CAAC3C,IAAI,CAAC;EACxC;EAEA,aAAa,CAAC2C,oBAAoBM,CAACjD,IAAI,EAAE;IAIvC,MAAMtJ,IAAI,GAMJ,y+WAA4B;IAElC,OAAOsL,YAAY,CAAChC,IAAI,EAAEtJ,IAAI,CAAC;EACjC;AACF;;;AC3GkD;AAElD,eAAewM,aAAaA,CAACzjB,WAAW,EAAE;EACxC,MAAMgC,GAAG,GAAG,EAAE;IACZjC,OAAO,GAAGiC,GAAG,CAACsB,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;EAEhC,IAAI;IAAEogB,IAAI;IAAEC,QAAQ;IAAEC,0BAA0B;IAAEC;EAAc,CAAC,GAC\u002FD,MAAM7jB,WAAW,CAAC8jB,WAAW,CAAC,CAAC;EAEjC,IAAI,CAACD,aAAa,EAAE;IAClB,MAAM;MAAEzzB;IAAO,CAAC,GAAG,MAAM4P,WAAW,CAAC+jB,eAAe,CAAC,CAAC;IACtDF,aAAa,GAAGzzB,MAAM;EACxB;EAEA,OAAO;IACL,GAAGszB,IAAI;IACPb,OAAO,EAAE9iB,OAAO;IAChBikB,QAAQ,EAAEH,aAAa;IACvBI,QAAQ,EAAEL,0BAA0B,IAAI1d,qBAAqB,CAAClE,GAAG,CAAC;IAClE2hB,QAAQ,EAAEA,QAAQ,EAAEO,MAAM,CAAC,CAAC;IAC5BC,OAAO,EAAER,QAAQ,EAAE9kB,GAAG,CAAC,YAAY,CAAC;IACpC0B,QAAQ,EAAEP,WAAW,CAACO,QAAQ;IAC9B8iB,GAAG,EAAErhB;EACP,CAAC;AACH;AAEA,MAAMoiB,gBAAgB,CAAC;EACrBz4B,WAAWA,CAACyS,gBAAgB,EAAE;IAC5B,IAAI,CAACimB,MAAM,GAAG,IAAIxtB,OAAO,CAAC,CAACC,OAAO,EAAEwtB,MAAM,KAAK;MAC7C,MAAMC,OAAO,kCAGgBnmB,gBAAgB,CAAC;MAC9CmmB,OAAO,CACJjZ,IAAI,CAACkZ,YAAY,IAAI;QACpB1tB,OAAO,CAAC0tB,YAAY,CAACC,cAAc,CAAC,CAAC,CAAC;MACxC,CAAC,CAAC,CACDC,KAAK,CAACJ,MAAM,CAAC;IAClB,CAAC,CAAC;EACJ;EAEA,MAAMK,aAAaA,CAACjb,IAAI,EAAE;IACxB,MAAM6a,OAAO,GAAG,MAAM,IAAI,CAACF,MAAM;IACjCE,OAAO,CAAC7qB,MAAM,CAACgQ,IAAI,CAAC;EACtB;EAEA,MAAMkb,sBAAsBA,CAACC,KAAK,EAAE;IAClC,MAAMN,OAAO,GAAG,MAAM,IAAI,CAACF,MAAM;IACjC9rB,UAAU,CAAC,MAAMgsB,OAAO,CAACO,aAAa,CAACD,KAAK,CAAC,EAAE,CAAC,CAAC;EACnD;EAEA,MAAME,cAAcA,CAAA,EAAG;IACrB,MAAMR,OAAO,GAAG,MAAM,IAAI,CAACF,MAAM;IACjCE,OAAO,CAACS,WAAW,CAAC,CAAC;EACvB;AACF;;;ACvD8C;AACgB;AACX;AACJ;AACW;AAQ1D,SAASC,OAAOA,CAACC,GAAG,EAAE,CAAC;AAEvB,MAAMC,WAAW,SAASpa,eAAe,CAAC;EACxC,MAAMW,eAAeA,CAACC,OAAO,EAAE;IAC7ByZ,YAAY,CAACC,OAAO,CAAC,mBAAmB,EAAE1iB,IAAI,CAACC,SAAS,CAAC+I,OAAO,CAAC,CAAC;EACpE;EAEA,MAAMN,gBAAgBA,CAACM,OAAO,EAAE;IAC9B,OAAO;MAAER,KAAK,EAAExI,IAAI,CAACiB,KAAK,CAACwhB,YAAY,CAACE,OAAO,CAAC,mBAAmB,CAAC;IAAE,CAAC;EACzE;AACF;AAEA,MAAMC,gBAAgB,SAASjb,oBAAoB,CAAC;EAClD,MAAMK,UAAUA,CAAA,EAAG;IACjB,OAAO,IAAI2X,uBAAW,CAAC3jB,UAAU,CAACE,GAAG,CAAC,QAAQ,CAAC,CAAC;EAClD;EAEA+L,eAAeA,CAAA,EAAG;IAChB,OAAO,IAAIwZ,gBAAgB,CAACzlB,UAAU,CAACE,GAAG,CAAC,kBAAkB,CAAC,CAAC;EACjE;AACF;AAEA,MAAM2mB,SAAS,CAAC;EACd,MAAMC,KAAKA,CAAA,EAAG;IACZ,OAAO,IAAI;EACb;AACF;;;ACtCkD;AAElD,MAAMC,cAAc,CAAC;EACnB,CAACC,kBAAkB,GAAG,IAAI,CAAC,CAACC,aAAa,CAAC7c,IAAI,CAAC,IAAI,CAAC;EAEpD,CAAC8c,gBAAgB,GAAG,IAAI,CAAC,CAACC,WAAW,CAAC\u002Fc,IAAI,CAAC,IAAI,CAAC;EAEhD,CAACgd,YAAY,GAAG,IAAI,CAAC,CAACC,OAAO,CAACjd,IAAI,CAAC,IAAI,CAAC;EAExC,CAACkd,aAAa,GAAG,IAAI;EAErB,CAACC,YAAY;EAEb,CAACC,MAAM;EAEP,CAACtmB,QAAQ;EAET,CAACumB,cAAc,GAAG,KAAK;EAEvB,CAACC,iBAAiB;EAElB,CAACC,gBAAgB;EAEjB,CAACC,cAAc;EAEf,CAACC,UAAU;EAEX,CAACxO,QAAQ;EAET,CAACyO,SAAS;EAEV,CAACC,eAAe,GAAG,IAAI;EAEvB,CAACC,UAAU,GAAG,IAAI;EAElB,CAACC,WAAW,GAAG,IAAI;EAEnB,CAAC7uB,SAAS;EAEV,CAAC8uB,aAAa,GAAG,IAAI;EAErBl7B,WAAWA,CACT;IACEw6B,MAAM;IACNE,iBAAiB;IACjBC,gBAAgB;IAChBtO,QAAQ;IACRkO,YAAY;IACZM;EACF,CAAC,EACDzuB,SAAS,EACTwuB,cAAc,EACd1mB,QAAQ,EACR;IACA,IAAI,CAAC,CAACsmB,MAAM,GAAGA,MAAM;IACrB,IAAI,CAAC,CAACE,iBAAiB,GAAGA,iBAAiB;IAC3C,IAAI,CAAC,CAACC,gBAAgB,GAAGA,gBAAgB;IACzC,IAAI,CAAC,CAACtO,QAAQ,GAAGA,QAAQ;IACzB,IAAI,CAAC,CAACkO,YAAY,GAAGA,YAAY;IACjC,IAAI,CAAC,CAACM,UAAU,GAAGA,UAAU;IAC7B,IAAI,CAAC,CAACD,cAAc,GAAGA,cAAc;IACrC,IAAI,CAAC,CAAC1mB,QAAQ,GAAGA,QAAQ;IACzB,IAAI,CAAC,CAAC9H,SAAS,GAAGA,SAAS;IAE3BouB,MAAM,CAACt3B,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAACi4B,KAAK,CAAC\u002Fd,IAAI,CAAC,IAAI,CAAC,CAAC;IACxDod,MAAM,CAACt3B,gBAAgB,CAAC,aAAa,EAAEg2B,KAAK,IAAI;MAC9C,IAAIA,KAAK,CAAC3iB,MAAM,KAAK,IAAI,CAAC,CAAC8V,QAAQ,EAAE;QACnC6M,KAAK,CAACkC,cAAc,CAAC,CAAC;MACxB;IACF,CAAC,CAAC;IACFb,YAAY,CAACr3B,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAACm4B,MAAM,CAACje,IAAI,CAAC,IAAI,CAAC,CAAC;IAC\u002FDyd,UAAU,CAAC33B,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAACo4B,IAAI,CAACle,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3Dsd,iBAAiB,CAACx3B,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC82B,kBAAkB,CAAC;IACtEW,gBAAgB,CAACz3B,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC82B,kBAAkB,CAAC;IAErE,IAAI,CAAC,CAACY,cAAc,CAACW,QAAQ,CAACf,MAAM,CAAC;EACvC;EAEA,IAAIgB,SAASA,CAAA,EAAG;IACd,OAAO5f,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,CAC\u002FB,IAAI,CAAC,CAAC8e,iBAAiB,EACvB,IAAI,CAAC,CAACC,gBAAgB,EACtB,IAAI,CAAC,CAACtO,QAAQ,EACd,IAAI,CAAC,CAACwO,UAAU,EAChB,IAAI,CAAC,CAACN,YAAY,CACnB,CAAC;EACJ;EAEA,CAACkB,gBAAgBC,CAAA,EAAG;IAClB,IAAI,IAAI,CAAC,CAACV,UAAU,EAAE;MACpB;IACF;IAMA,MAAMW,UAAU,GAAG,IAAI1hB,aAAa,CAAC,CAAC;IACtC,MAAM2hB,GAAG,GAAI,IAAI,CAAC,CAACZ,UAAU,GAAGW,UAAU,CAACxM,aAAa,CAAC,KAAK,CAAE;IAChEyM,GAAG,CAAChuB,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC;IAC9BguB,GAAG,CAAChuB,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC;IAC\u002FB,MAAMiuB,IAAI,GAAGF,UAAU,CAACxM,aAAa,CAAC,MAAM,CAAC;IAC7CyM,GAAG,CAACE,MAAM,CAACD,IAAI,CAAC;IAChB,MAAME,IAAI,GAAGJ,UAAU,CAACxM,aAAa,CAAC,MAAM,CAAC;IAC7C0M,IAAI,CAACC,MAAM,CAACC,IAAI,CAAC;IACjBA,IAAI,CAACnuB,YAAY,CAAC,IAAI,EAAE,sBAAsB,CAAC;IAC\u002FCmuB,IAAI,CAACnuB,YAAY,CAAC,kBAAkB,EAAE,mBAAmB,CAAC;IAC1D,IAAIouB,IAAI,GAAGL,UAAU,CAACxM,aAAa,CAAC,MAAM,CAAC;IAC3C4M,IAAI,CAACD,MAAM,CAACE,IAAI,CAAC;IACjBA,IAAI,CAACpuB,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;IAClCouB,IAAI,CAACpuB,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC;IAC\u002FBouB,IAAI,CAACpuB,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC;IAChCouB,IAAI,CAACpuB,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC;IAC3BouB,IAAI,CAACpuB,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC;IAE3BouB,IAAI,GAAG,IAAI,CAAC,CAACf,WAAW,GAAGU,UAAU,CAACxM,aAAa,CAAC,MAAM,CAAC;IAC3D4M,IAAI,CAACD,MAAM,CAACE,IAAI,CAAC;IACjBA,IAAI,CAACpuB,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;IAClC,IAAI,CAAC,CAAC4sB,MAAM,CAACsB,MAAM,CAACF,GAAG,CAAC;EAC1B;EAEA,MAAMK,WAAWA,CAACnB,SAAS,EAAEoB,MAAM,EAAE;IACnC,IAAI,IAAI,CAAC,CAAC5B,aAAa,IAAI,CAAC4B,MAAM,EAAE;MAClC;IACF;IAEA,IAAI,CAAC,CAACT,gBAAgB,CAAC,CAAC;IAExB,IAAI,CAAC,CAAChB,cAAc,GAAG,KAAK;IAC5B,KAAK,MAAMj6B,OAAO,IAAI,IAAI,CAACg7B,SAAS,EAAE;MACpCh7B,OAAO,CAAC0C,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAACk3B,YAAY,CAAC;IACvD;IAEA,MAAM;MAAE+B,OAAO;MAAEC;IAAW,CAAC,GAAGF,MAAM,CAACG,WAAW;IAClD,IAAID,UAAU,KAAK,IAAI,EAAE;MACvB,IAAI,CAAC,CAACzB,gBAAgB,CAAC2B,OAAO,GAAG,IAAI;MACrC,IAAI,CAAC,CAAC5B,iBAAiB,CAAC4B,OAAO,GAAG,KAAK;IACzC,CAAC,MAAM;MACL,IAAI,CAAC,CAAC3B,gBAAgB,CAAC2B,OAAO,GAAG,KAAK;MACtC,IAAI,CAAC,CAAC5B,iBAAiB,CAAC4B,OAAO,GAAG,IAAI;IACxC;IACA,IAAI,CAAC,CAACvB,eAAe,GAAG,IAAI,CAAC,CAAC1O,QAAQ,CAAC7oB,KAAK,GAAG24B,OAAO,EAAEvS,IAAI,CAAC,CAAC,IAAI,EAAE;IACpE,IAAI,CAAC,CAACqQ,aAAa,CAAC,CAAC;IAErB,IAAI,CAAC,CAACK,aAAa,GAAG4B,MAAM;IAC5B,IAAI,CAAC,CAACpB,SAAS,GAAGA,SAAS;IAC3B,IAAI,CAAC,CAACA,SAAS,CAACyB,mBAAmB,CAAC,CAAC;IACrC,IAAI,CAAC,CAACroB,QAAQ,CAACwJ,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAACwc,gBAAgB,CAAC;IAEpD,IAAI;MACF,MAAM,IAAI,CAAC,CAACU,cAAc,CAAC4B,IAAI,CAAC,IAAI,CAAC,CAAChC,MAAM,CAAC;MAC7C,IAAI,CAAC,CAACL,WAAW,CAAC,CAAC;IACrB,CAAC,CAAC,OAAOsC,EAAE,EAAE;MACX,IAAI,CAAC,CAACtB,KAAK,CAAC,CAAC;MACb,MAAMsB,EAAE;IACV;EACF;EAEA,CAACtC,WAAWuC,CAAA,EAAG;IACb,IAAI,CAAC,IAAI,CAAC,CAACpC,aAAa,EAAE;MACxB;IACF;IACA,MAAME,MAAM,GAAG,IAAI,CAAC,CAACA,MAAM;IAC3B,MAAM;MAAEjvB;IAAM,CAAC,GAAGivB,MAAM;IACxB,MAAM;MACJ31B,CAAC,EAAE83B,UAAU;MACb7zB,CAAC,EAAE8zB,UAAU;MACbr2B,KAAK,EAAEs2B,UAAU;MACjBr2B,MAAM,EAAEs2B;IACV,CAAC,GAAG,IAAI,CAAC,CAAC1wB,SAAS,CAAC2wB,qBAAqB,CAAC,CAAC;IAC3C,MAAM;MAAEC,UAAU,EAAEC,OAAO;MAAEC,WAAW,EAAEC;IAAQ,CAAC,GAAGj9B,MAAM;IAC5D,MAAM;MAAEqG,KAAK,EAAE62B,OAAO;MAAE52B,MAAM,EAAE62B;IAAQ,CAAC,GAAG7C,MAAM,CAACuC,qBAAqB,CAAC,CAAC;IAC1E,MAAM;MAAEl4B,CAAC;MAAEiE,CAAC;MAAEvC,KAAK;MAAEC;IAAO,CAAC,GAAG,IAAI,CAAC,CAAC8zB,aAAa,CAACgD,mBAAmB,CAAC,CAAC;IACzE,MAAMC,MAAM,GAAG,EAAE;IACjB,MAAMC,KAAK,GAAG,IAAI,CAAC,CAAC1C,SAAS,CAAC2C,SAAS,KAAK,KAAK;IAEjD,MAAMC,EAAE,GAAG54B,IAAI,CAACyD,GAAG,CAAC1D,CAAC,EAAE83B,UAAU,CAAC;IAClC,MAAMgB,EAAE,GAAG74B,IAAI,CAAC4G,GAAG,CAAC7G,CAAC,GAAG0B,KAAK,EAAEo2B,UAAU,GAAGE,UAAU,CAAC;IACvD,MAAMe,EAAE,GAAG94B,IAAI,CAACyD,GAAG,CAACO,CAAC,EAAE8zB,UAAU,CAAC;IAClC,MAAMiB,EAAE,GAAG\u002F4B,IAAI,CAAC4G,GAAG,CAAC5C,CAAC,GAAGtC,MAAM,EAAEo2B,UAAU,GAAGE,UAAU,CAAC;IACxD,IAAI,CAAC,CAAC7B,WAAW,CAACrtB,YAAY,CAAC,OAAO,EAAG,GAAE,CAAC+vB,EAAE,GAAGD,EAAE,IAAIT,OAAQ,EAAC,CAAC;IACjE,IAAI,CAAC,CAAChC,WAAW,CAACrtB,YAAY,CAAC,QAAQ,EAAG,GAAE,CAACiwB,EAAE,GAAGD,EAAE,IAAIT,OAAQ,EAAC,CAAC;IAClE,IAAI,CAAC,CAAClC,WAAW,CAACrtB,YAAY,CAAC,GAAG,EAAG,GAAE8vB,EAAE,GAAGT,OAAQ,EAAC,CAAC;IACtD,IAAI,CAAC,CAAChC,WAAW,CAACrtB,YAAY,CAAC,GAAG,EAAG,GAAEgwB,EAAE,GAAGT,OAAQ,EAAC,CAAC;IAEtD,IAAIp7B,IAAI,GAAG,IAAI;IACf,IAAIF,GAAG,GAAGiD,IAAI,CAACyD,GAAG,CAACO,CAAC,EAAE,CAAC,CAAC;IACxBjH,GAAG,IAAIiD,IAAI,CAAC4G,GAAG,CAACyxB,OAAO,IAAIt7B,GAAG,GAAGw7B,OAAO,CAAC,EAAE,CAAC,CAAC;IAE7C,IAAIG,KAAK,EAAE;MAET,IAAI34B,CAAC,GAAG0B,KAAK,GAAGg3B,MAAM,GAAGH,OAAO,GAAGH,OAAO,EAAE;QAC1Cl7B,IAAI,GAAG8C,CAAC,GAAG0B,KAAK,GAAGg3B,MAAM;MAC3B,CAAC,MAAM,IAAI14B,CAAC,GAAGu4B,OAAO,GAAGG,MAAM,EAAE;QAC\u002FBx7B,IAAI,GAAG8C,CAAC,GAAGu4B,OAAO,GAAGG,MAAM;MAC7B;IACF,CAAC,MAAM,IAAI14B,CAAC,GAAGu4B,OAAO,GAAGG,MAAM,EAAE;MAC\u002FBx7B,IAAI,GAAG8C,CAAC,GAAGu4B,OAAO,GAAGG,MAAM;IAC7B,CAAC,MAAM,IAAI14B,CAAC,GAAG0B,KAAK,GAAGg3B,MAAM,GAAGH,OAAO,GAAGH,OAAO,EAAE;MACjDl7B,IAAI,GAAG8C,CAAC,GAAG0B,KAAK,GAAGg3B,MAAM;IAC3B;IAEA,IAAIx7B,IAAI,KAAK,IAAI,EAAE;MACjBF,GAAG,GAAG,IAAI;MACVE,IAAI,GAAG+C,IAAI,CAACyD,GAAG,CAAC1D,CAAC,EAAE,CAAC,CAAC;MACrB9C,IAAI,IAAI+C,IAAI,CAAC4G,GAAG,CAACuxB,OAAO,IAAIl7B,IAAI,GAAGq7B,OAAO,CAAC,EAAE,CAAC,CAAC;MAC\u002FC,IAAIt0B,CAAC,GAAGu0B,OAAO,GAAGE,MAAM,EAAE;QACxB17B,GAAG,GAAGiH,CAAC,GAAGu0B,OAAO,GAAGE,MAAM;MAC5B,CAAC,MAAM,IAAIz0B,CAAC,GAAGtC,MAAM,GAAG+2B,MAAM,GAAGF,OAAO,GAAGF,OAAO,EAAE;QAClDt7B,GAAG,GAAGiH,CAAC,GAAGtC,MAAM,GAAG+2B,MAAM;MAC3B;IACF;IAEA,IAAI17B,GAAG,KAAK,IAAI,EAAE;MAChB24B,MAAM,CAAC\u002F4B,SAAS,CAACuH,GAAG,CAAC,YAAY,CAAC;MAClC,IAAIw0B,KAAK,EAAE;QACTjyB,KAAK,CAACxJ,IAAI,GAAI,GAAEA,IAAK,IAAG;MAC1B,CAAC,MAAM;QACLwJ,KAAK,CAAC1I,KAAK,GAAI,GAAEo6B,OAAO,GAAGl7B,IAAI,GAAGq7B,OAAQ,IAAG;MAC\u002FC;MACA7xB,KAAK,CAAC1J,GAAG,GAAI,GAAEA,GAAI,IAAG;IACxB,CAAC,MAAM;MACL24B,MAAM,CAAC\u002F4B,SAAS,CAACuK,MAAM,CAAC,YAAY,CAAC;MACrCT,KAAK,CAACxJ,IAAI,GAAG,EAAE;MACfwJ,KAAK,CAAC1J,GAAG,GAAG,EAAE;IAChB;EACF;EAEA,CAACw5B,MAAMyC,CAAA,EAAG;IACR,IAAI,IAAI,CAAC,CAAClD,cAAc,CAACmD,MAAM,KAAK,IAAI,CAAC,CAACvD,MAAM,EAAE;MAChD,IAAI,CAAC,CAACI,cAAc,CAACO,KAAK,CAAC,IAAI,CAAC,CAACX,MAAM,CAAC;IAC1C;EACF;EAEA,CAACW,KAAK6C,CAAA,EAAG;IACP,IAAI,CAAC,CAAC1D,aAAa,CAAC2D,gBAAgB,CAClC,IAAI,CAAC,CAAC\u002FC,aAAa,IAAI;MACrB7iB,MAAM,EAAE,iBAAiB;MACzB6lB,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAACzD;IAC5B,CACF,CAAC;IACD,IAAI,CAAC,CAACS,aAAa,GAAG,IAAI;IAE1B,IAAI,CAAC,CAACiD,sBAAsB,CAAC,CAAC;IAC9B,IAAI,CAAC,CAACrD,SAAS,EAAEsD,gBAAgB,CAAC,CAAC;IACnC,IAAI,CAAC,CAAClqB,QAAQ,CAAC4J,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAACoc,gBAAgB,CAAC;IACrD,IAAI,CAAC,CAACI,aAAa,CAAC+D,aAAa,CAAC,CAAC;IACnC,IAAI,CAAC,CAAC\u002FD,aAAa,GAAG,IAAI;IAC1B,IAAI,CAAC,CAACQ,SAAS,GAAG,IAAI;EACxB;EAEA,CAACb,aAAaqE,CAAA,EAAG;IACf,IAAI,CAAC,CAACjS,QAAQ,CAACkS,QAAQ,GAAG,IAAI,CAAC,CAAC5D,gBAAgB,CAAC2B,OAAO;EAC1D;EAEA,CAAChB,IAAIkD,CAAA,EAAG;IACN,MAAMrC,OAAO,GAAG,IAAI,CAAC,CAAC9P,QAAQ,CAAC7oB,KAAK,CAAComB,IAAI,CAAC,CAAC;IAC3C,MAAMwS,UAAU,GAAG,IAAI,CAAC,CAACzB,gBAAgB,CAAC2B,OAAO;IACjD,IAAI,CAAC,CAAChC,aAAa,CAAC+B,WAAW,GAAG;MAChCF,OAAO;MACPC;IACF,CAAC;IACD,IAAI,CAAC,CAAClB,aAAa,GAAG;MACpB7iB,MAAM,EAAE,eAAe;MACvBomB,oBAAoB,EAAE,CAAC,CAACtC,OAAO;MAC\u002FBuC,aAAa,EACX,CAAC,CAAC,IAAI,CAAC,CAAC3D,eAAe,IAAI,IAAI,CAAC,CAACA,eAAe,KAAKoB,OAAO;MAC9DwC,mBAAmB,EAAEvC,UAAU;MAC\u002FB8B,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAACzD;IAC5B,CAAC;IACD,IAAI,CAAC,CAACY,MAAM,CAAC,CAAC;EAChB;EAEA,CAAChB,OAAOuE,CAACt8B,GAAG,EAAE;IACZ,IAAIA,GAAG,CAACu8B,MAAM,KAAK,CAAC,EAAE;MACpB;IACF;IACA,IAAI,CAAC,CAACpE,cAAc,GAAG,IAAI;IAC3B,IAAI,CAAC,CAAC0D,sBAAsB,CAAC,CAAC;EAChC;EAEA,CAACA,sBAAsBW,CAAA,EAAG;IACxB,KAAK,MAAMt+B,OAAO,IAAI,IAAI,CAACg7B,SAAS,EAAE;MACpCh7B,OAAO,CAAC+d,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC6b,YAAY,CAAC;IAC1D;EACF;EAEA2E,OAAOA,CAAA,EAAG;IACR,IAAI,CAAC,CAACjE,SAAS,GAAG,IAAI;IACtB,IAAI,CAAC,CAACO,MAAM,CAAC,CAAC;IACd,IAAI,CAAC,CAACL,UAAU,EAAEhvB,MAAM,CAAC,CAAC;IAC1B,IAAI,CAAC,CAACgvB,UAAU,GAAG,IAAI,CAAC,CAACC,WAAW,GAAG,IAAI;EAC7C;AACF;;;ACnSuD;AAcvD,MAAM+D,sBAAsB,CAAC;EAK3Bh\u002FB,WAAWA,CAACqT,OAAO,EAAEa,QAAQ,EAAE;IAC7B,IAAI,CAACA,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAAC,CAAC+qB,aAAa,CAAC5rB,OAAO,CAAC;EAC9B;EAKA,CAAC4rB,aAAaC,CAAC;IACbC,sBAAsB;IACtBC,mBAAmB;IACnBC,cAAc;IACdC,kBAAkB;IAClBC,gBAAgB;IAChBC,mBAAmB;IACnBC,4BAA4B;IAC5BC;EACF,CAAC,EAAE;IACD,MAAMvG,aAAa,GAAGA,CAACwG,OAAO,EAAEn8B,KAAK,KAAK;MACxC,IAAI,CAAC0Q,QAAQ,CAACqD,QAAQ,CAAC,8BAA8B,EAAE;QACrDC,MAAM,EAAE,IAAI;QACZuF,IAAI,EAAEvD,0BAA0B,CAACmmB,OAAO,CAAC;QACzCn8B;MACF,CAAC,CAAC;IACJ,CAAC;IACD27B,sBAAsB,CAACj8B,gBAAgB,CAAC,OAAO,EAAE,YAAY;MAC3Di2B,aAAa,CAAC,eAAe,EAAE,IAAI,CAACyG,aAAa,CAAC;IACpD,CAAC,CAAC;IACFR,mBAAmB,CAACl8B,gBAAgB,CAAC,OAAO,EAAE,YAAY;MACxDi2B,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC31B,KAAK,CAAC;IAC7C,CAAC,CAAC;IACF67B,cAAc,CAACn8B,gBAAgB,CAAC,OAAO,EAAE,YAAY;MACnDi2B,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC31B,KAAK,CAAC;IACxC,CAAC,CAAC;IACF87B,kBAAkB,CAACp8B,gBAAgB,CAAC,OAAO,EAAE,YAAY;MACvDi2B,aAAa,CAAC,eAAe,EAAE,IAAI,CAACyG,aAAa,CAAC;IACpD,CAAC,CAAC;IACFL,gBAAgB,CAACr8B,gBAAgB,CAAC,OAAO,EAAE,YAAY;MACrDi2B,aAAa,CAAC,aAAa,EAAE,IAAI,CAACyG,aAAa,CAAC;IAClD,CAAC,CAAC;IACFJ,mBAAmB,CAACt8B,gBAAgB,CAAC,OAAO,EAAE,MAAM;MAClDi2B,aAAa,CAAC,QAAQ,CAAC;IACzB,CAAC,CAAC;IACFsG,4BAA4B,CAACv8B,gBAAgB,CAAC,OAAO,EAAE,YAAY;MACjEi2B,aAAa,CAAC,qBAAqB,EAAE,IAAI,CAACyG,aAAa,CAAC;IAC1D,CAAC,CAAC;IACFF,sBAAsB,CAACx8B,gBAAgB,CAAC,OAAO,EAAE,YAAY;MAC3D,MAAMo5B,OAAO,GAAG,IAAI,CAAChO,YAAY,CAAC,cAAc,CAAC,KAAK,MAAM;MAC5D,IAAI,CAAC1gB,YAAY,CAAC,cAAc,EAAE,CAAC0uB,OAAO,CAAC;MAC3CnD,aAAa,CAAC,oBAAoB,EAAE,CAACmD,OAAO,CAAC;IAC\u002FC,CAAC,CAAC;IAEF,IAAI,CAACpoB,QAAQ,CAACwJ,GAAG,CAAC,+BAA+B,EAAEpb,GAAG,IAAI;MACxD,KAAK,MAAM,CAACya,IAAI,EAAEvZ,KAAK,CAAC,IAAIlB,GAAG,CAACu9B,OAAO,EAAE;QACvC,QAAQ9iB,IAAI;UACV,KAAKvD,0BAA0B,CAACsmB,aAAa;YAC3CX,sBAAsB,CAAC37B,KAAK,GAAGA,KAAK;YACpC;UACF,KAAKgW,0BAA0B,CAACumB,cAAc;YAC5CX,mBAAmB,CAAC57B,KAAK,GAAGA,KAAK;YACjC;UACF,KAAKgW,0BAA0B,CAACwmB,SAAS;YACvCX,cAAc,CAAC77B,KAAK,GAAGA,KAAK;YAC5B;UACF,KAAKgW,0BAA0B,CAACymB,aAAa;YAC3CX,kBAAkB,CAAC97B,KAAK,GAAGA,KAAK;YAChC;UACF,KAAKgW,0BAA0B,CAAC0mB,WAAW;YACzCX,gBAAgB,CAAC\u002F7B,KAAK,GAAGA,KAAK;YAC9B;UACF,KAAKgW,0BAA0B,CAAC2mB,mBAAmB;YACjDV,4BAA4B,CAACj8B,KAAK,GAAGA,KAAK;YAC1C;UACF,KAAKgW,0BAA0B,CAAC4mB,cAAc;YAC5CX,4BAA4B,CAAClB,QAAQ,GAAG,CAAC\u002F6B,KAAK;YAC9C;UACF,KAAKgW,0BAA0B,CAAC6mB,kBAAkB;YAChDX,sBAAsB,CAAC9xB,YAAY,CAAC,cAAc,EAAEpK,KAAK,CAAC;YAC1D;QACJ;MACF;IACF,CAAC,CAAC;EACJ;AACF;;;ACvGA,MAAM88B,SAAS,GAAG,IAAI;AAEtB,MAAMC,iBAAiB,CAAC;EACtB,CAACC,aAAa;EAEd,CAACC,aAAa;EAEd,CAACC,eAAe;EAEhB1gC,WAAWA,CAACwgC,aAAa,EAAEE,eAAe,EAAEC,gBAAgB,EAAE;IAC5D,IAAI,CAAC,CAACH,aAAa,GAAGA,aAAa;IACnC,IAAI,CAAC,CAACE,eAAe,GAAGA,eAAe;IACvC,IAAI,CAAC,CAACD,aAAa,GAAGE,gBAAgB,EAAE5D,qBAAqB,CAAC,CAAC,CAACv2B,MAAM,IAAI,CAAC;EAC7E;EAQA,CAACo6B,YAAYC,CAACC,KAAK,EAAEC,KAAK,EAAE;IAC1B,MAAMC,IAAI,GAAGF,KAAK,CAACh4B,CAAC;IACpB,MAAMm4B,IAAI,GAAGH,KAAK,CAAC15B,MAAM;IACzB,MAAM85B,IAAI,GAAGJ,KAAK,CAACh4B,CAAC,GAAGg4B,KAAK,CAACt6B,MAAM,GAAG,CAAC;IAEvC,MAAM26B,IAAI,GAAGJ,KAAK,CAACj4B,CAAC;IACpB,MAAMs4B,IAAI,GAAGL,KAAK,CAAC35B,MAAM;IACzB,MAAMi6B,IAAI,GAAGN,KAAK,CAACj4B,CAAC,GAAGi4B,KAAK,CAACv6B,MAAM,GAAG,CAAC;IAEvC,OAAQw6B,IAAI,IAAIK,IAAI,IAAIA,IAAI,IAAIJ,IAAI,IAAME,IAAI,IAAID,IAAI,IAAIA,IAAI,IAAIE,IAAK;EACzE;EAYA,CAACE,WAAWC,CAACvF,IAAI,EAAEn3B,CAAC,EAAEiE,CAAC,EAAE04B,IAAI,EAAE;IAC7B,MAAMC,IAAI,GAAGzF,IAAI,CAAClzB,CAAC,GAAGkzB,IAAI,CAACx1B,MAAM,GAAG,CAAC;IACrC,OACE,CAACg7B,IAAI,GAAG14B,CAAC,IAAI24B,IAAI,GAAG34B,CAAC,IAAI24B,IAAI,KAC7BzF,IAAI,CAACn3B,CAAC,GAAGy7B,SAAS,IAAIz7B,CAAC,IACvBA,CAAC,IAAIm3B,IAAI,CAACn5B,KAAK,GAAGy9B,SAAS;EAE\u002FB;EAOA,CAACoB,SAASC,CAAC3F,IAAI,EAAE;IACf,OACEA,IAAI,CAACn6B,GAAG,IAAI,IAAI,CAAC,CAAC4+B,aAAa,IAC\u002FBzE,IAAI,CAACj6B,IAAI,IAAI,CAAC,IACdi6B,IAAI,CAAC50B,MAAM,KACRlH,MAAM,CAACg9B,WAAW,IAAI7xB,QAAQ,CAACC,eAAe,CAACjK,YAAY,CAAC,IAC\u002FD26B,IAAI,CAACn5B,KAAK,KAAK3C,MAAM,CAAC88B,UAAU,IAAI3xB,QAAQ,CAACC,eAAe,CAAC\u002FJ,WAAW,CAAC;EAE7E;EAQA,CAACqgC,gBAAgBC,CAACC,SAAS,EAAEN,IAAI,EAAE;IACjC,MAAM;MAAEO,SAAS;MAAEC;IAAY,CAAC,GAAGF,SAAS;IAC5C,MAAMG,KAAK,GAAG52B,QAAQ,CAAC62B,WAAW,CAAC,CAAC;IACpCD,KAAK,CAACE,QAAQ,CAACJ,SAAS,EAAEC,WAAW,CAAC;IACtCC,KAAK,CAACG,MAAM,CAACL,SAAS,EAAEC,WAAW,CAAC;IACpC,MAAMhG,IAAI,GAAGiG,KAAK,CAAClF,qBAAqB,CAAC,CAAC;IAE1C,OAAO,CAACf,IAAI,CAACn3B,CAAC,EAAE28B,IAAI,GAAGxF,IAAI,CAACn6B,GAAG,GAAGm6B,IAAI,CAAC50B,MAAM,CAAC;EAChD;EAEA,OAAO,CAACi7B,sBAAsBC,CAACz9B,CAAC,EAAEiE,CAAC,EAAE;IACnC,IAEE,CAACuC,QAAQ,CAACg3B,sBAAsB,EAChC;MACA,MAAM;QAAEE,cAAc,EAAEC,UAAU;QAAEC,WAAW,EAAEC;MAAO,CAAC,GACvDr3B,QAAQ,CAACs3B,mBAAmB,CAAC99B,CAAC,EAAEiE,CAAC,CAAC;MACpC,OAAO;QAAE05B,UAAU;QAAEE;MAAO,CAAC;IAC\u002FB;IACA,OAAOr3B,QAAQ,CAACg3B,sBAAsB,CAACx9B,CAAC,EAAEiE,CAAC,CAAC;EAC9C;EAEA,CAAC85B,sBAAsBC,CAACf,SAAS,EAAEgB,MAAM,EAAE5gB,MAAM,EAAE1hB,OAAO,EAAEw7B,IAAI,EAAE;IAChEA,IAAI,KAAKx7B,OAAO,CAACu8B,qBAAqB,CAAC,CAAC;IACxC,IAAI+F,MAAM,IAAI9G,IAAI,CAACn3B,CAAC,GAAGy7B,SAAS,EAAE;MAChC,IAAIpe,MAAM,EAAE;QACV4f,SAAS,CAACiB,MAAM,CAACviC,OAAO,CAACwiC,UAAU,EAAE,CAAC,CAAC;MACzC,CAAC,MAAM;QACLlB,SAAS,CAAC3H,WAAW,CAAC35B,OAAO,CAACwiC,UAAU,EAAE,CAAC,CAAC;MAC9C;MACA;IACF;IACA,IAAIhH,IAAI,CAACn5B,KAAK,GAAGy9B,SAAS,IAAIwC,MAAM,EAAE;MACpC,MAAM;QAAEG;MAAU,CAAC,GAAGziC,OAAO;MAC7B,IAAI0hB,MAAM,EAAE;QACV4f,SAAS,CAACiB,MAAM,CAACE,SAAS,EAAEA,SAAS,CAACx+B,MAAM,CAAC;MAC\u002FC,CAAC,MAAM;QACLq9B,SAAS,CAAC3H,WAAW,CAAC8I,SAAS,EAAEA,SAAS,CAACx+B,MAAM,CAAC;MACpD;MACA;IACF;IAEA,MAAMg9B,IAAI,GAAGzF,IAAI,CAAClzB,CAAC,GAAGkzB,IAAI,CAACx1B,MAAM,GAAG,CAAC;IACrC,IAAI08B,aAAa,GAAG3C,iBAAiB,CAAC,CAAC8B,sBAAsB,CAACS,MAAM,EAAErB,IAAI,CAAC;IAC3E,IAAI0B,aAAa,GAAGD,aAAa,CAACV,UAAU,EAAEW,aAAa;IAC3D,IAAIA,aAAa,IAAIA,aAAa,KAAK3iC,OAAO,EAAE;MAI9C,MAAM4iC,eAAe,GAAG\u002F3B,QAAQ,CAACg4B,iBAAiB,CAACP,MAAM,EAAErB,IAAI,CAAC;MAChE,MAAM6B,iBAAiB,GAAG,EAAE;MAC5B,KAAK,MAAMC,EAAE,IAAIH,eAAe,EAAE;QAChC,IAAIG,EAAE,KAAK\u002FiC,OAAO,EAAE;UAClB;QACF;QACA,MAAM;UAAE+K;QAAM,CAAC,GAAGg4B,EAAE;QACpBD,iBAAiB,CAAC16B,IAAI,CAAC,CAAC26B,EAAE,EAAEh4B,KAAK,CAACi4B,UAAU,CAAC,CAAC;QAC9Cj4B,KAAK,CAACi4B,UAAU,GAAG,QAAQ;MAC7B;MACAN,aAAa,GAAG3C,iBAAiB,CAAC,CAAC8B,sBAAsB,CAACS,MAAM,EAAErB,IAAI,CAAC;MACvE0B,aAAa,GAAGD,aAAa,CAACV,UAAU,EAAEW,aAAa;MACvD,KAAK,MAAM,CAACI,EAAE,EAAEC,UAAU,CAAC,IAAIF,iBAAiB,EAAE;QAChDC,EAAE,CAACh4B,KAAK,CAACi4B,UAAU,GAAGA,UAAU;MAClC;IACF;IACA,IAAIL,aAAa,KAAK3iC,OAAO,EAAE;MAG7B,IAAI0hB,MAAM,EAAE;QACV4f,SAAS,CAACiB,MAAM,CAACviC,OAAO,CAACwiC,UAAU,EAAE,CAAC,CAAC;MACzC,CAAC,MAAM;QACLlB,SAAS,CAAC3H,WAAW,CAAC35B,OAAO,CAACwiC,UAAU,EAAE,CAAC,CAAC;MAC9C;MACA;IACF;IACA,IAAI9gB,MAAM,EAAE;MACV4f,SAAS,CAACiB,MAAM,CAACG,aAAa,CAACV,UAAU,EAAEU,aAAa,CAACR,MAAM,CAAC;IAClE,CAAC,MAAM;MACLZ,SAAS,CAAC3H,WAAW,CAAC+I,aAAa,CAACV,UAAU,EAAEU,aAAa,CAACR,MAAM,CAAC;IACvE;EACF;EAWA,CAACe,gBAAgBC,CACfxhB,MAAM,EACN4f,SAAS,EACT6B,cAAc,EACdC,kBAAkB,EAClBd,MAAM,EACN;IACA,IAAI,IAAI,CAAC,CAACpB,SAAS,CAACkC,kBAAkB,CAAC,EAAE;MACvC,IAAI,CAAC,CAAChB,sBAAsB,CAC1Bd,SAAS,EACTgB,MAAM,EACN5gB,MAAM,EACNyhB,cAAc,EACdC,kBACF,CAAC;MACD;IACF;IACA,IAAI,CAAC,CAACpD,aAAa,CAACt9B,gBAAgB,CAClC,WAAW,EACX,IAAI,CAAC,CAAC0\u002FB,sBAAsB,CAACxlB,IAAI,CAC\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\u002F7B,SAAS,CAAC0gB,WAAW,GAAG,EAAE;IAG\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\u002FC\u002FnC,WAAWA,CAACqT,OAAO,EAAE;IACnB,KAAK,CAACA,OAAO,CAAC;IACd,IAAI,CAACs2B,eAAe,GAAGt2B,OAAO,CAACs2B,eAAe;IAE9C,IAAI,CAACz1B,QAAQ,CAACwJ,GAAG,CACf,0BAA0B,EAC1B,IAAI,CAAC,CAACksB,gBAAgB,CAACxsB,IAAI,CAAC,IAAI,CAClC,CAAC;EACH;EAEA+C,KAAKA,CAAC0pB,sBAAsB,GAAG,KAAK,EAAE;IACpC,KAAK,CAAC1pB,KAAK,CAAC,CAAC;IACb,IAAI,CAAC2pB,YAAY,GAAG,IAAI;IAExB,IAAI,CAACD,sBAAsB,EAAE;MAG3B,IAAI,CAACE,mBAAmB,GAAG7+B,OAAO,CAACyR,aAAa,CAAC,CAAC;IACpD;IACA,IAAI,CAACqtB,qBAAqB,GAAG,KAAK;EACpC;EAKA,MAAM5B,cAAcA,CAAC6B,gBAAgB,EAAE;IACrC,IAAI,CAACF,mBAAmB,CAAC5+B,OAAO,CAAC,CAAC;IAElC,IAAI8+B,gBAAgB,KAAK,CAAC,IAAI,CAAC,IAAI,CAACD,qBAAqB,EAAE;MAKzD,IAAI,CAACA,qBAAqB,GAAG,IAAI;MAEjC,MAAMvtB,oBAAoB,CAAC;QACzBlG,MAAM,EAAE,IAAI,CAACrC,QAAQ;QACrBnB,IAAI,EAAE,yBAAyB;QAC\u002FBtG,KAAK,EAAE;MACT,CAAC,CAAC;MAEF,IAAI,CAAC,IAAI,CAACu9B,qBAAqB,EAAE;QAC\u002FB;MACF;IACF;IACA,IAAI,CAACA,qBAAqB,GAAG,KAAK;IAElC,IAAI,CAAC91B,QAAQ,CAACqD,QAAQ,CAAC,mBAAmB,EAAE;MAC1CC,MAAM,EAAE,IAAI;MACZyyB;IACF,CAAC,CAAC;EACJ;EAKA5B,SAASA,CAAC7nC,OAAO,EAAE;IAAE4sB,OAAO;IAAEb,WAAW;IAAE+L;EAAS,CAAC,EAAE;IACrD,IAAI\u002FL,WAAW,EAAE;MACf\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\u002FB\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\u002FB,KAAK,CAAC\u002FQ,KAAK,EACX+Q,KAAK,CAAC,CAAC,CAAC,CAAChT,MACX,CAAC;MAED,IAAIs2C,QAAQ,EAAE;QACZ5P,OAAO,CAACviC,IAAI,CAACkyC,QAAQ,CAAC;QACtBD,aAAa,CAACjyC,IAAI,CAACmyC,QAAQ,CAAC;MAC9B;IACF;EACF;EAEA,CAACC,qBAAqBC,CAAC73C,KAAK,EAAEqyC,aAAa,EAAE;IAC3C,MAAM;MAAEyF;IAAgB,CAAC,GAAG,IAAI,CAAC,CAACt4C,KAAK;IACvC,IAAIu4C,SAAS,GAAG,KAAK;IACrB\u002F3C,KAAK,GAAGA,KAAK,CAACa,UAAU,CACtB8vC,qBAAqB,EACrB,CACEt8B,KAAK,EACLi+B,EAAE,EACFC,EAAE,EACFC,EAAE,EACFC,EAAE,EACFC,EAAE,KACC;MAIH,IAAIJ,EAAE,EAAE;QAEN,OAAQ,SAAQA,EAAG,MAAK;MAC1B;MACA,IAAIC,EAAE,EAAE;QAEN,OAAQ,OAAMA,EAAG,MAAK;MACxB;MACA,IAAIC,EAAE,EAAE;QAEN,OAAO,MAAM;MACf;MACA,IAAIsF,eAAe,EAAE;QACnB,OAAOrF,EAAE,IAAIC,EAAE;MACjB;MAEA,IAAID,EAAE,EAAE;QAEN,OAAOjC,oBAAoB,CAACv8B,GAAG,CAACw+B,EAAE,CAAC2E,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG3E,EAAE,GAAG,EAAE;MAC7D;MAIA,IAAIJ,aAAa,EAAE;QACjB0F,SAAS,GAAG,IAAI;QAChB,OAAQ,GAAErF,EAAG,SAAQ;MACvB;MACA,OAAOA,EAAE;IACX,CACF,CAAC;IAED,MAAMsF,cAAc,GAAG,MAAM;IAC7B,IAAIh4C,KAAK,CAACmzC,QAAQ,CAAC6E,cAAc,CAAC,EAAE;MAIlCh4C,KAAK,GAAGA,KAAK,CAAC8a,KAAK,CAAC,CAAC,EAAE9a,KAAK,CAACqB,MAAM,GAAG22C,cAAc,CAAC32C,MAAM,CAAC;IAC9D;IAEA,IAAIy2C,eAAe,EAAE;MAEnB,IAAIzF,aAAa,EAAE;QACjB5B,wBAAwB,KAAK1oB,MAAM,CAACkwB,YAAY,CAC9C,GAAGzH,oBACL,CAAC;QAEDuH,SAAS,GAAG,IAAI;QAChB\u002F3C,KAAK,GAAI,GAAEA,KAAM,OAAMywC,wBAAyB,gBAAe;MACjE;IACF;IAEA,OAAO,CAACsH,SAAS,EAAE\u002F3C,KAAK,CAAC;EAC3B;EAEA,CAACk4C,cAAcC,CAACzC,SAAS,EAAE;IACzB,IAAI11C,KAAK,GAAG,IAAI,CAAC,CAACA,KAAK;IACvB,IAAIA,KAAK,CAACqB,MAAM,KAAK,CAAC,EAAE;MACtB;IACF;IACA,MAAM;MAAE+2C,aAAa;MAAEb;IAAW,CAAC,GAAG,IAAI,CAAC,CAAC\u002F3C,KAAK;IACjD,MAAMg4C,WAAW,GAAG,IAAI,CAACtB,aAAa,CAACR,SAAS,CAAC;IACjD,MAAMrD,aAAa,GAAG,IAAI,CAAC+D,cAAc,CAACV,SAAS,CAAC;IAEpD,IAAIqC,SAAS,GAAG,KAAK;IACrB,IAAI,OAAO\u002F3C,KAAK,KAAK,QAAQ,EAAE;MAC7B,CAAC+3C,SAAS,EAAE\u002F3C,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC43C,qBAAqB,CAAC53C,KAAK,EAAEqyC,aAAa,CAAC;IACxE,CAAC,MAAM;MAGLryC,KAAK,GAAGA,KAAK,CACVgG,IAAI,CAAC,CAAC,CACNqyC,OAAO,CAAC,CAAC,CACTltB,GAAG,CAAC\u002FoB,CAAC,IAAI;QACR,MAAM,CAACk2C,aAAa,EAAEC,SAAS,CAAC,GAAG,IAAI,CAAC,CAACX,qBAAqB,CAC5Dx1C,CAAC,EACDiwC,aACF,CAAC;QACD0F,SAAS,KAAKO,aAAa;QAC3B,OAAQ,IAAGC,SAAU,GAAE;MACzB,CAAC,CAAC,CACD32B,IAAI,CAAC,GAAG,CAAC;IACd;IAEA,MAAM42B,KAAK,GAAI,IAAGT,SAAS,GAAG,GAAG,GAAG,EAAG,GAAEK,aAAa,GAAG,EAAE,GAAG,GAAI,EAAC;IACnEp4C,KAAK,GAAGA,KAAK,GAAG,IAAI4xC,MAAM,CAAC5xC,KAAK,EAAEw4C,KAAK,CAAC,GAAG,IAAI;IAE\u002FC,IAAI,CAAC,CAACnB,oBAAoB,CAACr3C,KAAK,EAAEu3C,UAAU,EAAE7B,SAAS,EAAE8B,WAAW,CAAC;IAIrE,IAAI,IAAI,CAAC,CAACh4C,KAAK,CAAC81C,YAAY,EAAE;MAC5B,IAAI,CAAC,CAACmD,UAAU,CAAC\u002FC,SAAS,CAAC;IAC7B;IACA,IAAI,IAAI,CAACc,cAAc,KAAKd,SAAS,EAAE;MACrC,IAAI,CAACc,cAAc,GAAG,IAAI;MAC1B,IAAI,CAAC,CAACkC,aAAa,CAAC,CAAC;IACvB;IAGA,MAAMC,gBAAgB,GAAG,IAAI,CAACnE,YAAY,CAACkB,SAAS,CAAC,CAACr0C,MAAM;IAC5D,IAAI,CAACg1C,kBAAkB,IAAIsC,gBAAgB;IAC3C,IAAI,IAAI,CAAC,CAAC9E,4BAA4B,EAAE;MACtC,IAAI8E,gBAAgB,GAAG,CAAC,EAAE;QACxB,IAAI,CAAC,CAACC,oBAAoB,CAAC,CAAC;MAC9B;IACF,CAAC,MAAM,IAAI,EAAE,IAAI,CAAC,CAAC9E,iBAAiB,KAAK,IAAI,CAACE,YAAY,CAACziC,UAAU,EAAE;MAGrE,IAAI,CAAC,CAACqnC,oBAAoB,CAAC,CAAC;IAC9B;EACF;EAEA,CAAC3D,WAAW4D,CAAA,EAAG;IAEb,IAAI,IAAI,CAAC5C,oBAAoB,CAAC50C,MAAM,GAAG,CAAC,EAAE;MACxC;IACF;IAEA,IAAIy3C,QAAQ,GAAGhxC,OAAO,CAACC,OAAO,CAAC,CAAC;IAChC,MAAMgxC,WAAW,GAAG;MAAEC,oBAAoB,EAAE;IAAK,CAAC;IAClD,KAAK,IAAIt1C,CAAC,GAAG,CAAC,EAAE0X,EAAE,GAAG,IAAI,CAAC44B,YAAY,CAACziC,UAAU,EAAE7N,CAAC,GAAG0X,EAAE,EAAE1X,CAAC,EAAE,EAAE;MAC9D,MAAM;QAAE4V,OAAO;QAAEvR;MAAQ,CAAC,GAAGD,OAAO,CAACyR,aAAa,CAAC,CAAC;MACpD,IAAI,CAAC08B,oBAAoB,CAACvyC,CAAC,CAAC,GAAG4V,OAAO;MAGtCw\u002FB,QAAQ,GAAGA,QAAQ,CAACv8B,IAAI,CAAC,MAAM;QAC7B,OAAO,IAAI,CAACsoB,YAAY,CACrB4G,OAAO,CAAC\u002FnC,CAAC,GAAG,CAAC,CAAC,CACd6Y,IAAI,CAACmvB,OAAO,IAAIA,OAAO,CAACuN,cAAc,CAACF,WAAW,CAAC,CAAC,CACpDx8B,IAAI,CACHmN,WAAW,IAAI;UACb,MAAMwvB,MAAM,GAAG,EAAE;UAEjB,KAAK,MAAMC,QAAQ,IAAIzvB,WAAW,CAAC1oB,KAAK,EAAE;YACxCk4C,MAAM,CAAC1zC,IAAI,CAAC2zC,QAAQ,CAACz4C,GAAG,CAAC;YACzB,IAAIy4C,QAAQ,CAACC,MAAM,EAAE;cACnBF,MAAM,CAAC1zC,IAAI,CAAC,IAAI,CAAC;YACnB;UACF;UAGA,CACE,IAAI,CAAC0wC,aAAa,CAACxyC,CAAC,CAAC,EACrB,IAAI,CAACyyC,UAAU,CAACzyC,CAAC,CAAC,EAClB,IAAI,CAAC0yC,cAAc,CAAC1yC,CAAC,CAAC,CACvB,GAAG0tC,SAAS,CAAC8H,MAAM,CAACt3B,IAAI,CAAC,EAAE,CAAC,CAAC;UAC9B7Z,OAAO,CAAC,CAAC;QACX,CAAC,EACDmV,MAAM,IAAI;UACRzf,OAAO,CAACC,KAAK,CACV,uCAAsCgG,CAAC,GAAG,CAAE,EAAC,EAC9CwZ,MACF,CAAC;UAED,IAAI,CAACg5B,aAAa,CAACxyC,CAAC,CAAC,GAAG,EAAE;UAC1B,IAAI,CAACyyC,UAAU,CAACzyC,CAAC,CAAC,GAAG,IAAI;UACzB,IAAI,CAAC0yC,cAAc,CAAC1yC,CAAC,CAAC,GAAG,KAAK;UAC9BqE,OAAO,CAAC,CAAC;QACX,CACF,CAAC;MACL,CAAC,CAAC;IACJ;EACF;EAEA,CAAC0wC,UAAUY,CAAC\u002F1C,KAAK,EAAE;IACjB,IAAI,IAAI,CAACsyC,cAAc,IAAI,IAAI,CAAChB,SAAS,CAACkB,OAAO,KAAKxyC,KAAK,EAAE;MAI3D,IAAI,CAAC0wC,YAAY,CAACviC,IAAI,GAAGnO,KAAK,GAAG,CAAC;IACpC;IAEA,IAAI,CAAC2wC,SAAS,CAAC9\u002FB,QAAQ,CAAC,wBAAwB,EAAE;MAChDC,MAAM,EAAE,IAAI;MACZshC,SAAS,EAAEpyC;IACb,CAAC,CAAC;EACJ;EAEA,CAACiyC,cAAc+D,CAAA,EAAG;IAChB,IAAI,CAACrF,SAAS,CAAC9\u002FB,QAAQ,CAAC,wBAAwB,EAAE;MAChDC,MAAM,EAAE,IAAI;MACZshC,SAAS,EAAE,CAAC;IACd,CAAC,CAAC;EACJ;EAEA,CAACL,SAASkE,CAAA,EAAG;IACX,MAAMC,QAAQ,GAAG,IAAI,CAAC,CAACh6C,KAAK,CAACi6C,YAAY;IACzC,MAAMC,gBAAgB,GAAG,IAAI,CAAC1F,YAAY,CAACviC,IAAI,GAAG,CAAC;IACnD,MAAMD,QAAQ,GAAG,IAAI,CAACwiC,YAAY,CAACziC,UAAU;IAE7C,IAAI,CAAC+iC,iBAAiB,GAAG,IAAI;IAE7B,IAAI,IAAI,CAACU,WAAW,EAAE;MAEpB,IAAI,CAACA,WAAW,GAAG,KAAK;MACxB,IAAI,CAACJ,SAAS,CAACkB,OAAO,GAAG,IAAI,CAAClB,SAAS,CAACiB,QAAQ,GAAG,CAAC,CAAC;MACrD,IAAI,CAACE,OAAO,CAACD,OAAO,GAAG4D,gBAAgB;MACvC,IAAI,CAAC3D,OAAO,CAACF,QAAQ,GAAG,IAAI;MAC5B,IAAI,CAACE,OAAO,CAACC,OAAO,GAAG,KAAK;MAC5B,IAAI,CAACQ,cAAc,GAAG,IAAI;MAC1B,IAAI,CAAChC,YAAY,CAACnzC,MAAM,GAAG,CAAC;MAC5B,IAAI,CAACqzC,kBAAkB,CAACrzC,MAAM,GAAG,CAAC;MAClC,IAAI,CAAC,CAACyyC,iBAAiB,GAAG,CAAC;MAC3B,IAAI,CAACuC,kBAAkB,GAAG,CAAC;MAE3B,IAAI,CAAC,CAACd,cAAc,CAAC,CAAC;MAEtB,KAAK,IAAI7xC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG8N,QAAQ,EAAE9N,CAAC,EAAE,EAAE;QAEjC,IAAI,IAAI,CAAC6yC,mBAAmB,CAACtiC,GAAG,CAACvQ,CAAC,CAAC,EAAE;UACnC;QACF;QACA,IAAI,CAAC6yC,mBAAmB,CAAC3wC,GAAG,CAAClC,CAAC,CAAC;QAC\u002FB,IAAI,CAACuyC,oBAAoB,CAACvyC,CAAC,CAAC,CAAC6Y,IAAI,CAAC,MAAM;UACtC,IAAI,CAACg6B,mBAAmB,CAAC50B,MAAM,CAACje,CAAC,CAAC;UAClC,IAAI,CAAC,CAACw0C,cAAc,CAACx0C,CAAC,CAAC;QACzB,CAAC,CAAC;MACJ;IACF;IAGA,MAAM1D,KAAK,GAAG,IAAI,CAAC,CAACA,KAAK;IACzB,IAAIA,KAAK,CAACqB,MAAM,KAAK,CAAC,EAAE;MACtB,IAAI,CAAC,CAACw1B,aAAa,CAACmZ,SAAS,CAACC,KAAK,CAAC;MACpC;IACF;IAEA,IAAI,IAAI,CAACuG,cAAc,EAAE;MACvB;IACF;IAEA,MAAMlX,MAAM,GAAG,IAAI,CAACyW,OAAO;IAE3B,IAAI,CAACO,cAAc,GAAG9kC,QAAQ;IAG9B,IAAI8tB,MAAM,CAACuW,QAAQ,KAAK,IAAI,EAAE;MAC5B,MAAM8D,cAAc,GAAG,IAAI,CAACnF,YAAY,CAAClV,MAAM,CAACwW,OAAO,CAAC,CAACz0C,MAAM;MAC\u002FD,IACG,CAACm4C,QAAQ,IAAIla,MAAM,CAACuW,QAAQ,GAAG,CAAC,GAAG8D,cAAc,IACjDH,QAAQ,IAAIla,MAAM,CAACuW,QAAQ,GAAG,CAAE,EACjC;QAGAvW,MAAM,CAACuW,QAAQ,GAAG2D,QAAQ,GAAGla,MAAM,CAACuW,QAAQ,GAAG,CAAC,GAAGvW,MAAM,CAACuW,QAAQ,GAAG,CAAC;QACtE,IAAI,CAAC,CAAC+D,WAAW,CAAe,IAAI,CAAC;QACrC;MACF;MAGA,IAAI,CAAC,CAACC,iBAAiB,CAACL,QAAQ,CAAC;IACnC;IAEA,IAAI,CAAC,CAACd,aAAa,CAAC,CAAC;EACvB;EAEA,CAACoB,YAAYC,CAAChS,OAAO,EAAE;IACrB,MAAMzI,MAAM,GAAG,IAAI,CAACyW,OAAO;IAC3B,MAAMiE,UAAU,GAAGjS,OAAO,CAAC1mC,MAAM;IACjC,MAAMm4C,QAAQ,GAAG,IAAI,CAAC,CAACh6C,KAAK,CAACi6C,YAAY;IAEzC,IAAIO,UAAU,EAAE;MAEd1a,MAAM,CAACuW,QAAQ,GAAG2D,QAAQ,GAAGQ,UAAU,GAAG,CAAC,GAAG,CAAC;MAC\u002FC,IAAI,CAAC,CAACJ,WAAW,CAAe,IAAI,CAAC;MACrC,OAAO,IAAI;IACb;IAEA,IAAI,CAAC,CAACC,iBAAiB,CAACL,QAAQ,CAAC;IACjC,IAAIla,MAAM,CAAC0W,OAAO,EAAE;MAClB1W,MAAM,CAACuW,QAAQ,GAAG,IAAI;MACtB,IAAI,IAAI,CAACS,cAAc,GAAG,CAAC,EAAE;QAE3B,IAAI,CAAC,CAACsD,WAAW,CAAe,KAAK,CAAC;QAGtC,OAAO,IAAI;MACb;IACF;IAEA,OAAO,KAAK;EACd;EAEA,CAAClB,aAAauB,CAAA,EAAG;IACf,IAAI,IAAI,CAACzD,cAAc,KAAK,IAAI,EAAE;MAChC\u002F4C,OAAO,CAACC,KAAK,CAAC,qCAAqC,CAAC;IACtD;IAEA,IAAIqqC,OAAO,GAAG,IAAI;IAClB,GAAG;MACD,MAAM+N,OAAO,GAAG,IAAI,CAACC,OAAO,CAACD,OAAO;MACpC\u002FN,OAAO,GAAG,IAAI,CAACyM,YAAY,CAACsB,OAAO,CAAC;MACpC,IAAI,CAAC\u002FN,OAAO,EAAE;QAGZ,IAAI,CAACyO,cAAc,GAAGV,OAAO;QAC7B;MACF;IACF,CAAC,QAAQ,CAAC,IAAI,CAAC,CAACgE,YAAY,CAAC\u002FR,OAAO,CAAC;EACvC;EAEA,CAAC8R,iBAAiBK,CAACV,QAAQ,EAAE;IAC3B,MAAMla,MAAM,GAAG,IAAI,CAACyW,OAAO;IAC3B,MAAMvkC,QAAQ,GAAG,IAAI,CAACwiC,YAAY,CAACziC,UAAU;IAC7C+tB,MAAM,CAACwW,OAAO,GAAG0D,QAAQ,GAAGla,MAAM,CAACwW,OAAO,GAAG,CAAC,GAAGxW,MAAM,CAACwW,OAAO,GAAG,CAAC;IACnExW,MAAM,CAACuW,QAAQ,GAAG,IAAI;IAEtB,IAAI,CAACS,cAAc,EAAE;IAErB,IAAIhX,MAAM,CAACwW,OAAO,IAAItkC,QAAQ,IAAI8tB,MAAM,CAACwW,OAAO,GAAG,CAAC,EAAE;MACpDxW,MAAM,CAACwW,OAAO,GAAG0D,QAAQ,GAAGhoC,QAAQ,GAAG,CAAC,GAAG,CAAC;MAC5C8tB,MAAM,CAAC0W,OAAO,GAAG,IAAI;IACvB;EACF;EAEA,CAAC4D,WAAWO,CAACC,KAAK,GAAG,KAAK,EAAE;IAC1B,IAAI56C,KAAK,GAAGwwC,SAAS,CAACE,SAAS;IAC\u002FB,MAAM8F,OAAO,GAAG,IAAI,CAACD,OAAO,CAACC,OAAO;IACpC,IAAI,CAACD,OAAO,CAACC,OAAO,GAAG,KAAK;IAE5B,IAAIoE,KAAK,EAAE;MACT,MAAM\u002FkC,YAAY,GAAG,IAAI,CAACu\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\u002FL,SAAS,CAAC\u002FzC,OAAO;QACpB6\u002FC,SAAS,GAAI,sBAAqBtC,QAAQ,GAAG,KAAK,GAAG,QAAS,EAAC;QAC\u002FD;IACJ;IACA4B,SAAS,CAAC5wC,YAAY,CAAC,aAAa,EAAEuxC,MAAM,CAAC;IAC7CX,SAAS,CAAC5wC,YAAY,CAAC,cAAc,EAAEhL,KAAK,KAAKwwC,SAAS,CAACE,SAAS,CAAC;IAErEuL,OAAO,CAACjxC,YAAY,CAAC,aAAa,EAAEuxC,MAAM,CAAC;IAC3C,IAAID,SAAS,EAAE;MACbL,OAAO,CAACjxC,YAAY,CAAC,cAAc,EAAEsxC,SAAS,CAAC;IACjD,CAAC,MAAM;MACLL,OAAO,CAACnwB,eAAe,CAAC,cAAc,CAAC;MACvCmwB,OAAO,CAAC\u002FxB,WAAW,GAAG,EAAE;IAC1B;IAEA,IAAI,CAACsyB,kBAAkB,CAACrB,YAAY,CAAC;EACvC;EAEAqB,kBAAkBA,CAAC;IAAExB,OAAO,GAAG,CAAC;IAAEC,KAAK,GAAG;EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;IAClD,MAAM;MAAEiB;IAAiB,CAAC,GAAG,IAAI;IAEjC,IAAIjB,KAAK,GAAG,CAAC,EAAE;MACb,MAAM54C,KAAK,GAAGg5C,mBAAmB;MAEjCa,gBAAgB,CAAClxC,YAAY,CAC3B,cAAc,EACb,yBAAwBiwC,KAAK,GAAG54C,KAAK,GAAG,QAAQ,GAAG,EAAG,EACzD,CAAC;MACD65C,gBAAgB,CAAClxC,YAAY,CAC3B,gBAAgB,EAChBoJ,IAAI,CAACC,SAAS,CAAC;QAAEhS,KAAK;QAAE24C,OAAO;QAAEC;MAAM,CAAC,CAC1C,CAAC;IACH,CAAC,MAAM;MACLiB,gBAAgB,CAACpwB,eAAe,CAAC,cAAc,CAAC;MAChDowB,gBAAgB,CAAChyB,WAAW,GAAG,EAAE;IACnC;EACF;EAEA0P,IAAIA,CAAA,EAAG;IACL,IAAI,CAAC,IAAI,CAAC8hB,MAAM,EAAE;MAKhB,IAAI,CAAC,CAACH,cAAc,CAAC9qB,OAAO,CAAC,IAAI,CAACxnB,GAAG,CAACQ,UAAU,CAAC;MACjD,IAAI,CAAC,CAAC8xC,cAAc,CAAC9qB,OAAO,CAAC,IAAI,CAACxnB,GAAG,CAAC;MAEtC,IAAI,CAACyyC,MAAM,GAAG,IAAI;MAClBzwC,iBAAiB,CAAC,IAAI,CAAC0wC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC1yC,GAAG,CAAC;IACtD;IACA,IAAI,CAAC2yC,SAAS,CAACt8B,MAAM,CAAC,CAAC;IACvB,IAAI,CAACs8B,SAAS,CAAClX,KAAK,CAAC,CAAC;EACxB;EAEAnM,KAAKA,CAAA,EAAG;IACN,IAAI,CAAC,IAAI,CAACmjB,MAAM,EAAE;MAChB;IACF;IACA,IAAI,CAAC,CAACH,cAAc,CAACtqB,UAAU,CAAC,CAAC;IAEjC,IAAI,CAACyqB,MAAM,GAAG,KAAK;IACnBzwC,iBAAiB,CAAC,IAAI,CAAC0wC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC1yC,GAAG,CAAC;IAErD,IAAI,CAACqI,QAAQ,CAACqD,QAAQ,CAAC,cAAc,EAAE;MAAEC,MAAM,EAAE;IAAK,CAAC,CAAC;EAC1D;EAEA7J,MAAMA,CAAA,EAAG;IACP,IAAI,IAAI,CAAC2wC,MAAM,EAAE;MACf,IAAI,CAACnjB,KAAK,CAAC,CAAC;IACd,CAAC,MAAM;MACL,IAAI,CAACqB,IAAI,CAAC,CAAC;IACb;EACF;EAEA,CAAC6hB,sBAAsBgB,CAACx\u002FB,OAAO,EAAE;IAC\u002FB,MAAM;MAAEhU;IAAI,CAAC,GAAG,IAAI;IAKpBA,GAAG,CAACpK,SAAS,CAACuK,MAAM,CAAC,gBAAgB,CAAC;IAEtC,MAAMszC,aAAa,GAAGzzC,GAAG,CAACxK,YAAY;IACtC,MAAMk+C,oBAAoB,GAAG1zC,GAAG,CAAC29B,iBAAiB,CAACnoC,YAAY;IAE\u002FD,IAAIi+C,aAAa,GAAGC,oBAAoB,EAAE;MAIxC1zC,GAAG,CAACpK,SAAS,CAACuH,GAAG,CAAC,gBAAgB,CAAC;IACrC;EACF;AACF;;;ACtMkE;AACV;AAGxD,MAAMw2C,mBAAmB,GAAG,IAAI;AAEhC,MAAMC,0BAA0B,GAAG,EAAE;AAErC,MAAMC,uBAAuB,GAAG,IAAI;AAwBpC,SAASC,cAAcA,CAAA,EAAG;EACxB,OAAOt0C,QAAQ,CAACu0C,QAAQ,CAACxoC,IAAI;AAC\u002FB;AAEA,MAAMyoC,UAAU,CAAC;EACf,CAACC,oBAAoB,GAAG,IAAI;EAK5B9\u002FC,WAAWA,CAAC;IAAEm3C,WAAW;IAAEjjC;EAAS,CAAC,EAAE;IACrC,IAAI,CAACijC,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACjjC,QAAQ,GAAGA,QAAQ;IAExB,IAAI,CAAC6rC,YAAY,GAAG,KAAK;IACzB,IAAI,CAACC,YAAY,GAAG,EAAE;IACtB,IAAI,CAAC7\u002FB,KAAK,CAAC,CAAC;IAIZ,IAAI,CAACjM,QAAQ,CAACwJ,GAAG,CAAC,WAAW,EAAE,MAAM;MACnC,IAAI,CAACuiC,cAAc,GAAG,KAAK;MAE3B,IAAI,CAAC\u002FrC,QAAQ,CAACwJ,GAAG,CACf,aAAa,EACbpb,GAAG,IAAI;QACL,IAAI,CAAC29C,cAAc,GAAG,CAAC,CAAC39C,GAAG,CAACqS,UAAU;MACxC,CAAC,EACD;QAAEiJ,IAAI,EAAE;MAAK,CACf,CAAC;IACH,CAAC,CAAC;EACJ;EAOAsiC,UAAUA,CAAC;IAAEC,WAAW;IAAEC,YAAY,GAAG,KAAK;IAAEC,SAAS,GAAG;EAAM,CAAC,EAAE;IACnE,IAAI,CAACF,WAAW,IAAI,OAAOA,WAAW,KAAK,QAAQ,EAAE;MACnDt\u002FC,OAAO,CAACC,KAAK,CACX,sEACF,CAAC;MACD;IACF;IAEA,IAAI,IAAI,CAACi\u002FC,YAAY,EAAE;MACrB,IAAI,CAAC5\u002FB,KAAK,CAAC,CAAC;IACd;IACA,MAAMmgC,aAAa,GACjB,IAAI,CAACN,YAAY,KAAK,EAAE,IAAI,IAAI,CAACA,YAAY,KAAKG,WAAW;IAC\u002FD,IAAI,CAACH,YAAY,GAAGG,WAAW;IAC\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\u002FC,YAAY,CAAC\u002F3C,KAAK,EAAE;QACpE;MACF;MAEA64C,YAAY,GAAG,IAAI;IACrB;IACA,IAAI,CAAC,CAACV,kBAAkB,CAACyB,QAAQ,EAAEf,YAAY,CAAC;EAClD;EAEA,CAACD,WAAWiB,CAACh3C,GAAG,EAAE;IAChB,OACEvB,MAAM,CAACC,SAAS,CAACsB,GAAG,CAAC,IAAIA,GAAG,GAAG,CAAC,IAAIA,GAAG,IAAI,IAAI,CAACqrC,WAAW,CAACxiC,UAAU;EAE1E;EAEA,CAACusC,YAAY6B,CAACngD,KAAK,EAAEogD,WAAW,GAAG,KAAK,EAAE;IACxC,IAAI,CAACpgD,KAAK,EAAE;MACV,OAAO,KAAK;IACd;IACA,IAAIA,KAAK,CAACu9C,WAAW,KAAK,IAAI,CAACH,YAAY,EAAE;MAC3C,IAAIgD,WAAW,EAAE;QAGf,IACE,OAAOpgD,KAAK,CAACu9C,WAAW,KAAK,QAAQ,IACrCv9C,KAAK,CAACu9C,WAAW,CAAC17C,MAAM,KAAK,IAAI,CAACu7C,YAAY,CAACv7C,MAAM,EACrD;UACA,OAAO,KAAK;QACd;QACA,MAAM,CAACw+C,SAAS,CAAC,GAAGC,WAAW,CAACC,gBAAgB,CAAC,YAAY,CAAC;QAC9D,IAAIF,SAAS,EAAElmC,IAAI,KAAK,QAAQ,EAAE;UAChC,OAAO,KAAK;QACd;MACF,CAAC,MAAM;QAGL,OAAO,KAAK;MACd;IACF;IACA,IAAI,CAACxS,MAAM,CAACC,SAAS,CAAC5H,KAAK,CAAC2+C,GAAG,CAAC,IAAI3+C,KAAK,CAAC2+C,GAAG,GAAG,CAAC,EAAE;MACjD,OAAO,KAAK;IACd;IACA,IAAI3+C,KAAK,CAACy+C,WAAW,KAAK,IAAI,IAAI,OAAOz+C,KAAK,CAACy+C,WAAW,KAAK,QAAQ,EAAE;MACvE,OAAO,KAAK;IACd;IACA,OAAO,IAAI;EACb;EAEA,CAACC,mBAAmB8B,CAAC\u002FB,WAAW,EAAEE,GAAG,EAAE8B,eAAe,GAAG,KAAK,EAAE;IAC9D,IAAI,IAAI,CAACzB,sBAAsB,EAAE;MAI\u002FBl1C,YAAY,CAAC,IAAI,CAACk1C,sBAAsB,CAAC;MACzC,IAAI,CAACA,sBAAsB,GAAG,IAAI;IACpC;IACA,IAAIyB,eAAe,IAAIhC,WAAW,EAAEuB,SAAS,EAAE;MAG7C,OAAOvB,WAAW,CAACuB,SAAS;IAC9B;IACA,IAAI,CAAC5B,YAAY,GAAGK,WAAW;IAC\u002FB,IAAI,CAACP,IAAI,GAAGS,GAAG;IACf,IAAI,CAACR,OAAO,GAAGj8C,IAAI,CAACyD,GAAG,CAAC,IAAI,CAACw4C,OAAO,EAAEQ,GAAG,CAAC;IAE1C,IAAI,CAACV,mBAAmB,GAAG,CAAC;EAC9B;EAEA,CAACM,gBAAgBmC,CAACC,cAAc,GAAG,KAAK,EAAE;IACxC,MAAMnsC,IAAI,GAAGY,QAAQ,CAAC2nC,cAAc,CAAC,CAAC,CAAC,CAAC6D,SAAS,CAAC,CAAC,CAAC;IACpD,MAAMngD,MAAM,GAAGF,gBAAgB,CAACiU,IAAI,CAAC;IAErC,MAAMqsC,SAAS,GAAGpgD,MAAM,CAAC6P,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE;IAC\u002FC,IAAI2B,IAAI,GAAGxR,MAAM,CAAC6P,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;IAEjC,IAAI,CAAC,IAAI,CAAC,CAAC2uC,WAAW,CAAChtC,IAAI,CAAC,IAAK0uC,cAAc,IAAIE,SAAS,CAACh\u002FC,MAAM,GAAG,CAAE,EAAE;MACxEoQ,IAAI,GAAG,IAAI;IACb;IACA,OAAO;MAAEuC,IAAI;MAAEvC,IAAI;MAAEE,QAAQ,EAAE,IAAI,CAACoiC,WAAW,CAACpiC;IAAS,CAAC;EAC5D;EAEA,CAAC2uC,cAAcC,CAAC;IAAE\u002FD;EAAS,CAAC,EAAE;IAC5B,IAAI,IAAI,CAACgC,sBAAsB,EAAE;MAC\u002FBl1C,YAAY,CAAC,IAAI,CAACk1C,sBAAsB,CAAC;MACzC,IAAI,CAACA,sBAAsB,GAAG,IAAI;IACpC;IAEA,IAAI,CAACX,SAAS,GAAG;MACf7pC,IAAI,EAAEwoC,QAAQ,CAACgE,aAAa,CAACJ,SAAS,CAAC,CAAC,CAAC;MACzC3uC,IAAI,EAAE,IAAI,CAACsiC,WAAW,CAACtiC,IAAI;MAC3B5L,KAAK,EAAE22C,QAAQ,CAACtqC,UAAU;MAC1BP,QAAQ,EAAE6qC,QAAQ,CAAC7qC;IACrB,CAAC;IAED,IAAI,IAAI,CAAC2rC,mBAAmB,EAAE;MAC5B;IACF;IAEA,IACEjB,0BAA0B,GAAG,CAAC,IAC9B,IAAI,CAACQ,cAAc,IACnB,IAAI,CAACe,YAAY,IACjB,CAAC,IAAI,CAACA,YAAY,CAACnsC,IAAI,EACvB;MASA,IAAI,CAACgsC,mBAAmB,EAAE;IAC5B;IAEA,IAAInB,uBAAuB,GAAG,CAAC,EAAE;MAgB\u002FB,IAAI,CAACkC,sBAAsB,GAAGh1C,UAAU,CAAC,MAAM;QAC7C,IAAI,CAAC,IAAI,CAAC8zC,mBAAmB,EAAE;UAC7B,IAAI,CAAC,CAACuB,sBAAsB,CAAmB,IAAI,CAAC;QACtD;QACA,IAAI,CAACL,sBAAsB,GAAG,IAAI;MACpC,CAAC,EAAElC,uBAAuB,CAAC;IAC7B;EACF;EAEA,CAACmE,QAAQC,CAAC;IAAElhD;EAAM,CAAC,EAAE;IACnB,MAAMmhD,OAAO,GAAGpE,cAAc,CAAC,CAAC;MAC9BqE,WAAW,GAAG,IAAI,CAACpD,YAAY,KAAKmD,OAAO;IAC7C,IAAI,CAACnD,YAAY,GAAGmD,OAAO;IAE3B,IAKE,CAACnhD,KAAK,EACN;MAEA,IAAI,CAACk+C,IAAI,EAAE;MAEX,MAAM;QAAE1pC,IAAI;QAAEvC,IAAI;QAAEE;MAAS,CAAC,GAAG,IAAI,CAAC,CAACosC,gBAAgB,CAAC,CAAC;MACzD,IAAI,CAAC,CAACC,kBAAkB,CACtB;QAAEhqC,IAAI;QAAEvC,IAAI;QAAEE;MAAS,CAAC,EACH,IACvB,CAAC;MACD;IACF;IACA,IAAI,CAAC,IAAI,CAAC,CAACmsC,YAAY,CAACt+C,KAAK,CAAC,EAAE;MAG9B;IACF;IAIA,IAAI,CAAC89C,mBAAmB,GAAG,IAAI;IAE\u002FB,IAAIsD,WAAW,EAAE;MAUf,IAAI,CAACrD,gBAAgB,EAAE;MACvBlkC,oBAAoB,CAAC;QACnBlG,MAAM,EAAErW,MAAM;QACd6S,IAAI,EAAE,YAAY;QAClBtG,KAAK,EAAE+yC;MACT,CAAC,CAAC,CAAC7\u002FB,IAAI,CAAC,MAAM;QACZ,IAAI,CAACghC,gBAAgB,EAAE;MACzB,CAAC,CAAC;IACJ;IAGA,MAAMU,WAAW,GAAGz+C,KAAK,CAACy+C,WAAW;IACrC,IAAI,CAAC,CAACC,mBAAmB,CACvBD,WAAW,EACXz+C,KAAK,CAAC2+C,GAAG,EACe,IAC1B,CAAC;IAED,IAAIj3C,eAAe,CAAC+2C,WAAW,CAACtsC,QAAQ,CAAC,EAAE;MACzC,IAAI,CAACoiC,WAAW,CAACpiC,QAAQ,GAAGssC,WAAW,CAACtsC,QAAQ;IAClD;IACA,IAAIssC,WAAW,CAAClsC,IAAI,EAAE;MACpB,IAAI,CAACgiC,WAAW,CAACjiC,eAAe,CAACmsC,WAAW,CAAClsC,IAAI,CAAC;IACpD,CAAC,MAAM,IAAIksC,WAAW,CAACjqC,IAAI,EAAE;MAC3B,IAAI,CAAC+\u002FB,WAAW,CAAChgC,OAAO,CAACkqC,WAAW,CAACjqC,IAAI,CAAC;IAC5C,CAAC,MAAM,IAAIiqC,WAAW,CAACxsC,IAAI,EAAE;MAE3B,IAAI,CAACsiC,WAAW,CAACtiC,IAAI,GAAGwsC,WAAW,CAACxsC,IAAI;IAC1C;IAIA3J,OAAO,CAACC,OAAO,CAAC,CAAC,CAACwU,IAAI,CAAC,MAAM;MAC3B,IAAI,CAAC+gC,mBAAmB,GAAG,KAAK;IAClC,CAAC,CAAC;EACJ;EAEA,CAACgB,QAAQuC,CAAA,EAAG;IAMV,IAAI,CAAC,IAAI,CAACjD,YAAY,IAAI,IAAI,CAACA,YAAY,CAAC4B,SAAS,EAAE;MACrD,IAAI,CAAC,CAACX,sBAAsB,CAAC,CAAC;IAChC;EACF;EAEA,CAACzB,UAAU0D,CAAA,EAAG;IACZ,IAAI,IAAI,CAAC,CAACpE,oBAAoB,EAAE;MAC9B;IACF;IACA,IAAI,CAAC,CAACA,oBAAoB,GAAG,IAAIjjC,eAAe,CAAC,CAAC;IAClD,MAAM;MAAEQ;IAAO,CAAC,GAAG,IAAI,CAAC,CAACyiC,oBAAoB;IAE7C,IAAI,CAAC5rC,QAAQ,CAACwJ,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAACgmC,cAAc,CAACtmC,IAAI,CAAC,IAAI,CAAC,EAAE;MACnEC;IACF,CAAC,CAAC;IACFnd,MAAM,CAACgD,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC2gD,QAAQ,CAACzmC,IAAI,CAAC,IAAI,CAAC,EAAE;MAAEC;IAAO,CAAC,CAAC;IAC1End,MAAM,CAACgD,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,CAACw+C,QAAQ,CAACtkC,IAAI,CAAC,IAAI,CAAC,EAAE;MAAEC;IAAO,CAAC,CAAC;EAC5E;EAEA,CAACskC,YAAYwC,CAAA,EAAG;IACd,IAAI,CAAC,CAACrE,oBAAoB,EAAE9iC,KAAK,CAAC,CAAC;IACnC,IAAI,CAAC,CAAC8iC,oBAAoB,GAAG,IAAI;EACnC;AACF;AAEA,SAASiC,iBAAiBA,CAACqC,QAAQ,EAAEC,QAAQ,EAAE;EAC7C,IAAI,OAAOD,QAAQ,KAAK,QAAQ,IAAI,OAAOC,QAAQ,KAAK,QAAQ,EAAE;IAChE,OAAO,KAAK;EACd;EACA,IAAID,QAAQ,KAAKC,QAAQ,EAAE;IACzB,OAAO,IAAI;EACb;EACA,MAAMZ,SAAS,GAAGtgD,gBAAgB,CAACihD,QAAQ,CAAC,CAAClxC,GAAG,CAAC,WAAW,CAAC;EAC7D,IAAIuwC,SAAS,KAAKY,QAAQ,EAAE;IAC1B,OAAO,IAAI;EACb;EACA,OAAO,KAAK;AACd;AAEA,SAASrC,iBAAiBA,CAACsC,SAAS,EAAEC,UAAU,EAAE;EAChD,SAASC,YAAYA,CAACv7C,KAAK,EAAEw7C,MAAM,EAAE;IACnC,IAAI,OAAOx7C,KAAK,KAAK,OAAOw7C,MAAM,EAAE;MAClC,OAAO,KAAK;IACd;IACA,IAAIjvC,KAAK,CAACC,OAAO,CAACxM,KAAK,CAAC,IAAIuM,KAAK,CAACC,OAAO,CAACgvC,MAAM,CAAC,EAAE;MACjD,OAAO,KAAK;IACd;IACA,IAAIx7C,KAAK,KAAK,IAAI,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAIw7C,MAAM,KAAK,IAAI,EAAE;MAClE,IAAI95C,MAAM,CAAC2e,IAAI,CAACrgB,KAAK,CAAC,CAACxE,MAAM,KAAKkG,MAAM,CAAC2e,IAAI,CAACm7B,MAAM,CAAC,CAAChgD,MAAM,EAAE;QAC5D,OAAO,KAAK;MACd;MACA,KAAK,MAAMlB,GAAG,IAAI0F,KAAK,EAAE;QACvB,IAAI,CAACu7C,YAAY,CAACv7C,KAAK,CAAC1F,GAAG,CAAC,EAAEkhD,MAAM,CAAClhD,GAAG,CAAC,CAAC,EAAE;UAC1C,OAAO,KAAK;QACd;MACF;MACA,OAAO,IAAI;IACb;IACA,OAAO0F,KAAK,KAAKw7C,MAAM,IAAKl6C,MAAM,CAACwB,KAAK,CAAC9C,KAAK,CAAC,IAAIsB,MAAM,CAACwB,KAAK,CAAC04C,MAAM,CAAE;EAC1E;EAEA,IAAI,EAAEjvC,KAAK,CAACC,OAAO,CAAC6uC,SAAS,CAAC,IAAI9uC,KAAK,CAACC,OAAO,CAAC8uC,UAAU,CAAC,CAAC,EAAE;IAC5D,OAAO,KAAK;EACd;EACA,IAAID,SAAS,CAAC7\u002FC,MAAM,KAAK8\u002FC,UAAU,CAAC9\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\u002FB,IAAI,CAAC\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\u002FC,qBAAqB,CAAC,CAAC;IAC\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\u002FuC,IAAI,CAAC,YAAY;MAC\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\u002FuC,IAAI,CAAC,YAAY;IAC\u002FB,IAAIktC,aAAa,EAAE;MACjBjyB,cAAc,CAAC4B,IAAI,CAAChC,MAAM,CAAC;IAC7B;EACF,CAAC,CAAC;EAEF,IAAI;IACFrB,aAAa,CAAC,aAAa,CAAC;EAC9B,CAAC,SAAS;IACR,IAAI,CAAC0zB,aAAa,EAAE;MAClBhsD,OAAO,CAACC,KAAK,CAAC,2CAA2C,CAAC;MAC1D4tD,aAAa,CAAC,CAAC,CAAC\u002FuC,IAAI,CAAC,YAAY;QAC\u002FB,IAAIib,cAAc,CAACmD,MAAM,KAAKvD,MAAM,EAAE;UACpCI,cAAc,CAACO,KAAK,CAACX,MAAM,CAAC;QAC9B;MACF,CAAC,CAAC;MACF;IACF;IACA,MAAMyyB,oBAAoB,GAAGJ,aAAa;IAC1CA,aAAa,CACV8B,WAAW,CAAC,CAAC,CACbhvC,IAAI,CAAC,YAAY;MAChB,OAAOstC,oBAAoB,CAACqC,YAAY,CAAC,CAAC;IAC5C,CAAC,CAAC,CACDv2B,KAAK,CAAC,YAAY,CAEnB,CAAC,CAAC,CACDpZ,IAAI,CAAC,YAAY;MAMhB,IAAIstC,oBAAoB,CAAClvB,MAAM,EAAE;QAC\u002FB\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\u002FC,eAAe,CAAC,CAAC,EAC7Bl\u002FC,WAAW,CAACm\u002FC,sBAAsB,CAAC,CAAC,EACpCn\u002FC,WAAW,CAACo\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\u002FC8Q,SAAS,CAAC\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\u002F9C,GAAG,CAAC\u002FB,UAAU,CAAC,GAChD+\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\u002FB;QACF;QACA;MACF,KAAK\u002F\u002FB,WAAW,CAACI,WAAW;QAC1B,IAAI,IAAI,CAACo4D,iBAAiB,CAACz4B,QAAQ,EAAE;UACnC;QACF;QACA;MACF,KAAK\u002F\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\u002FD,CAAC,CAAC;IAEF,IAAI,CAACw\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\u002FD,MAAM,CAAC;EACpC;EAEAi\u002FD,YAAYA,CAAA,EAAG;IACb,OAAO,IAAI,CAAC,CAAC5B,SAAS;EACxB;AACF;;;AC9CqD;AAErD,MAAM6B,qBAAqB,GAAG;EAE5BC,QAAQ,EAAE,IAAI;EACdC,gBAAgB,EAAE,IAAI;EAEtBC,IAAI,EAAE,OAAO;EACbC,IAAI,EAAE,OAAO;EACbC,GAAG,EAAE,OAAO;EACZC,KAAK,EAAE,MAAM;EACbC,SAAS,EAAE,MAAM;EAEjBC,CAAC,EAAE,IAAI;EAEPC,CAAC,EAAE,SAAS;EACZpxB,KAAK,EAAE,IAAI;EACXqxB,MAAM,EAAE,MAAM;EAEdC,GAAG,EAAE,OAAO;EAEZC,GAAG,EAAE,IAAI;EACTC,IAAI,EAAE,IAAI;EACVC,EAAE,EAAE,IAAI;EACRC,MAAM,EAAE,IAAI;EACZC,IAAI,EAAE,MAAM;EACZC,KAAK,EAAE,MAAM;EACbC,IAAI,EAAE,MAAM;EAEZC,IAAI,EAAE,IAAI;EACVC,EAAE,EAAE,IAAI;EACRC,EAAE,EAAE,IAAI;EACRC,EAAE,EAAE,IAAI;EACRC,OAAO,EAAE,IAAI;EACbC,EAAE,EAAE,IAAI;EACRC,EAAE,EAAE,IAAI;EAERC,CAAC,EAAE,MAAM;EACTC,EAAE,EAAE,UAAU;EACdC,KAAK,EAAE,IAAI;EAEXC,KAAK,EAAE,OAAO;EACdC,EAAE,EAAE,KAAK;EACTC,EAAE,EAAE,cAAc;EAClBC,EAAE,EAAE,MAAM;EACVC,KAAK,EAAE,cAAc;EACrBC,KAAK,EAAE,IAAI;EACXC,KAAK,EAAE,IAAI;EAEXC,OAAO,EAAE,IAAI;EAEbC,MAAM,EAAE,QAAQ;EAEhBC,OAAO,EAAE,IAAI;EAEbC,QAAQ,EAAE;AACZ,CAAC;AAED,MAAMC,eAAe,GAAG,UAAU;AAElC,MAAMC,sBAAsB,CAAC;EAC3B,CAACC,OAAO,GAAGzgE,SAAS;EAEpB,IAAI0gE,aAAaA,CAAA,EAAG;IAClB,OAAO,IAAI,CAAC,CAACD,OAAO,KAAKzgE,SAAS;EACpC;EAEAsnC,MAAMA,CAACq5B,UAAU,EAAE;IACjB,IAAI,IAAI,CAAC,CAACF,OAAO,KAAKzgE,SAAS,EAAE;MAC\u002FB,OAAO,IAAI,CAAC,CAACygE,OAAO;IACtB;IACA,MAAMA,OAAO,GAAG,IAAI,CAAC,CAACG,IAAI,CAACD,UAAU,CAAC;IACtCF,OAAO,EAAE9gE,SAAS,CAACuH,GAAG,CAAC,YAAY,CAAC;IACpC,OAAQ,IAAI,CAAC,CAACu5D,OAAO,GAAGA,OAAO;EACjC;EAEA11D,IAAIA,CAAA,EAAG;IACL,IAAI,IAAI,CAAC,CAAC01D,OAAO,IAAI,CAAC,IAAI,CAAC,CAACA,OAAO,CAAC\u002F5B,MAAM,EAAE;MAC1C,IAAI,CAAC,CAAC+5B,OAAO,CAAC\u002F5B,MAAM,GAAG,IAAI;IAC7B;EACF;EAEA77B,IAAIA,CAAA,EAAG;IACL,IAAI,IAAI,CAAC,CAAC41D,OAAO,EAAE\u002F5B,MAAM,EAAE;MACzB,IAAI,CAAC,CAAC+5B,OAAO,CAAC\u002F5B,MAAM,GAAG,KAAK;IAC9B;EACF;EAEA,CAAC5V,aAAa+vC,CAACC,aAAa,EAAEC,WAAW,EAAE;IACzC,MAAM;MAAEC,GAAG;MAAEj6D,EAAE;MAAE+rB;IAAK,CAAC,GAAGguC,aAAa;IACvC,IAAIE,GAAG,KAAKhhE,SAAS,EAAE;MACrB+gE,WAAW,CAACj1D,YAAY,CAAC,YAAY,EAAE\u002FJ,oBAAoB,CAACi\u002FD,GAAG,CAAC,CAAC;IACnE;IACA,IAAIj6D,EAAE,KAAK\u002FG,SAAS,EAAE;MACpB+gE,WAAW,CAACj1D,YAAY,CAAC,WAAW,EAAE\u002FE,EAAE,CAAC;IAC3C;IACA,IAAI+rB,IAAI,KAAK9yB,SAAS,EAAE;MACtB+gE,WAAW,CAACj1D,YAAY,CACtB,MAAM,EACN\u002FJ,oBAAoB,CAAC+wB,IAAI,EAA2B,IAAI,CAC1D,CAAC;IACH;EACF;EAEA,CAAC8tC,IAAIK,CAAC1+B,IAAI,EAAE;IACV,IAAI,CAACA,IAAI,EAAE;MACT,OAAO,IAAI;IACb;IAEA,MAAM7jC,OAAO,GAAG6K,QAAQ,CAAC8jB,aAAa,CAAC,MAAM,CAAC;IAC9C,IAAI,MAAM,IAAIkV,IAAI,EAAE;MAClB,MAAM;QAAE2+B;MAAK,CAAC,GAAG3+B,IAAI;MACrB,MAAM5sB,KAAK,GAAGurD,IAAI,CAACvrD,KAAK,CAAC4qD,eAAe,CAAC;MACzC,IAAI5qD,KAAK,EAAE;QACTjX,OAAO,CAACoN,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC;QACvCpN,OAAO,CAACoN,YAAY,CAAC,YAAY,EAAE6J,KAAK,CAAC,CAAC,CAAC,CAAC;MAC9C,CAAC,MAAM,IAAIooD,qBAAqB,CAACmD,IAAI,CAAC,EAAE;QACtCxiE,OAAO,CAACoN,YAAY,CAAC,MAAM,EAAEiyD,qBAAqB,CAACmD,IAAI,CAAC,CAAC;MAC3D;IACF;IAEA,IAAI,CAAC,CAACpwC,aAAa,CAACyR,IAAI,EAAE7jC,OAAO,CAAC;IAElC,IAAI6jC,IAAI,CAACsoB,QAAQ,EAAE;MACjB,IAAItoB,IAAI,CAACsoB,QAAQ,CAACloD,MAAM,KAAK,CAAC,IAAI,IAAI,IAAI4\u002FB,IAAI,CAACsoB,QAAQ,CAAC,CAAC,CAAC,EAAE;QAG1D,IAAI,CAAC,CAAC\u002F5B,aAAa,CAACyR,IAAI,CAACsoB,QAAQ,CAAC,CAAC,CAAC,EAAEnsD,OAAO,CAAC;MAChD,CAAC,MAAM;QACL,KAAK,MAAMyiE,GAAG,IAAI5+B,IAAI,CAACsoB,QAAQ,EAAE;UAC\u002FBnsD,OAAO,CAACs7B,MAAM,CAAC,IAAI,CAAC,CAAC4mC,IAAI,CAACO,GAAG,CAAC,CAAC;QACjC;MACF;IACF;IACA,OAAOziE,OAAO;EAChB;AACF;;;ACxIsD;AAStD,MAAM0iE,wBAAwB,CAAC;EAC7B,CAAC\u002FK,OAAO,GAAG,KAAK;EAEhB,CAACgL,YAAY,GAAG,IAAI;EAEpB,CAACC,SAAS,GAAG,IAAI9\u002FD,GAAG,CAAC,CAAC;EAEtB,CAAC+\u002FD,eAAe,GAAG,IAAI\u002F\u002FD,GAAG,CAAC,CAAC;EAE5BggE,cAAcA,CAACnX,QAAQ,EAAE;IACvB,IAAI,CAAC,CAACgX,YAAY,GAAGhX,QAAQ;EAC\u002FB;EAUA,OAAO,CAACoX,uBAAuBC,CAACC,EAAE,EAAEC,EAAE,EAAE;IACtC,MAAM5iC,KAAK,GAAG2iC,EAAE,CAAC1mC,qBAAqB,CAAC,CAAC;IACxC,MAAMgE,KAAK,GAAG2iC,EAAE,CAAC3mC,qBAAqB,CAAC,CAAC;IAExC,IAAI+D,KAAK,CAACv6B,KAAK,KAAK,CAAC,IAAIu6B,KAAK,CAACt6B,MAAM,KAAK,CAAC,EAAE;MAC3C,OAAO,CAAC,CAAC;IACX;IAEA,IAAIu6B,KAAK,CAACx6B,KAAK,KAAK,CAAC,IAAIw6B,KAAK,CAACv6B,MAAM,KAAK,CAAC,EAAE;MAC3C,OAAO,CAAC,CAAC;IACX;IAEA,MAAMw6B,IAAI,GAAGF,KAAK,CAACh4B,CAAC;IACpB,MAAMm4B,IAAI,GAAGH,KAAK,CAACh4B,CAAC,GAAGg4B,KAAK,CAACt6B,MAAM;IACnC,MAAM06B,IAAI,GAAGJ,KAAK,CAACh4B,CAAC,GAAGg4B,KAAK,CAACt6B,MAAM,GAAG,CAAC;IAEvC,MAAM26B,IAAI,GAAGJ,KAAK,CAACj4B,CAAC;IACpB,MAAMs4B,IAAI,GAAGL,KAAK,CAACj4B,CAAC,GAAGi4B,KAAK,CAACv6B,MAAM;IACnC,MAAM66B,IAAI,GAAGN,KAAK,CAACj4B,CAAC,GAAGi4B,KAAK,CAACv6B,MAAM,GAAG,CAAC;IAEvC,IAAI06B,IAAI,IAAIC,IAAI,IAAIE,IAAI,IAAIJ,IAAI,EAAE;MAChC,OAAO,CAAC,CAAC;IACX;IAEA,IAAII,IAAI,IAAIL,IAAI,IAAIE,IAAI,IAAIE,IAAI,EAAE;MAChC,OAAO,CAAC,CAAC;IACX;IAEA,MAAMuiC,QAAQ,GAAG7iC,KAAK,CAACj8B,CAAC,GAAGi8B,KAAK,CAACv6B,KAAK,GAAG,CAAC;IAC1C,MAAMq9D,QAAQ,GAAG7iC,KAAK,CAACl8B,CAAC,GAAGk8B,KAAK,CAACx6B,KAAK,GAAG,CAAC;IAE1C,OAAOo9D,QAAQ,GAAGC,QAAQ;EAC5B;EAKAC,MAAMA,CAAA,EAAG;IACP,IAAI,IAAI,CAAC,CAAC1L,OAAO,EAAE;MACjB,MAAM,IAAIllD,KAAK,CAAC,8CAA8C,CAAC;IACjE;IACA,IAAI,CAAC,IAAI,CAAC,CAACkwD,YAAY,EAAE;MACvB,MAAM,IAAIlwD,KAAK,CAAC,0CAA0C,CAAC;IAC7D;IAEA,IAAI,CAAC,CAACklD,OAAO,GAAG,IAAI;IACpB,IAAI,CAAC,CAACgL,YAAY,GAAG,IAAI,CAAC,CAACA,YAAY,CAACjlD,KAAK,CAAC,CAAC;IAC\u002FC,IAAI,CAAC,CAACilD,YAAY,CAAC\u002F5D,IAAI,CAAC85D,wBAAwB,CAAC,CAACK,uBAAuB,CAAC;IAE1E,IAAI,IAAI,CAAC,CAACH,SAAS,CAACp4D,IAAI,GAAG,CAAC,EAAE;MAG5B,MAAMm4D,YAAY,GAAG,IAAI,CAAC,CAACA,YAAY;MACvC,KAAK,MAAM,CAACt6D,EAAE,EAAEi7D,SAAS,CAAC,IAAI,IAAI,CAAC,CAACV,SAAS,EAAE;QAC7C,MAAM5iE,OAAO,GAAG6K,QAAQ,CAACukD,cAAc,CAAC\u002FmD,EAAE,CAAC;QAC3C,IAAI,CAACrI,OAAO,EAAE;UAGZ,IAAI,CAAC,CAAC4iE,SAAS,CAACr+C,MAAM,CAAClc,EAAE,CAAC;UAC1B;QACF;QACA,IAAI,CAAC,CAACk7D,eAAe,CAACl7D,EAAE,EAAEs6D,YAAY,CAACW,SAAS,CAAC,CAAC;MACpD;IACF;IAEA,KAAK,MAAM,CAACtjE,OAAO,EAAEwjE,WAAW,CAAC,IAAI,IAAI,CAAC,CAACX,eAAe,EAAE;MAC1D,IAAI,CAACY,qBAAqB,CAACzjE,OAAO,EAAEwjE,WAAW,CAAC;IAClD;IACA,IAAI,CAAC,CAACX,eAAe,CAAC7vC,KAAK,CAAC,CAAC;EAC\u002FB;EAEA0wC,OAAOA,CAAA,EAAG;IACR,IAAI,CAAC,IAAI,CAAC,CAAC\u002FL,OAAO,EAAE;MAClB;IACF;IAKA,IAAI,CAAC,CAACkL,eAAe,CAAC7vC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,CAAC2vC,YAAY,GAAG,IAAI;IACzB,IAAI,CAAC,CAAChL,OAAO,GAAG,KAAK;EACvB;EAMAgM,wBAAwBA,CAAC3jE,OAAO,EAAE;IAChC,IAAI,CAAC,IAAI,CAAC,CAAC23D,OAAO,EAAE;MAClB,IAAI,CAAC,CAACkL,eAAe,CAACt+C,MAAM,CAACvkB,OAAO,CAAC;MACrC;IACF;IAEA,MAAMmsD,QAAQ,GAAG,IAAI,CAAC,CAACwW,YAAY;IACnC,IAAI,CAACxW,QAAQ,IAAIA,QAAQ,CAACloD,MAAM,KAAK,CAAC,EAAE;MACtC;IACF;IAEA,MAAM;MAAEoE;IAAG,CAAC,GAAGrI,OAAO;IACtB,MAAMsjE,SAAS,GAAG,IAAI,CAAC,CAACV,SAAS,CAAClwD,GAAG,CAACrK,EAAE,CAAC;IACzC,IAAIi7D,SAAS,KAAKhiE,SAAS,EAAE;MAC3B;IACF;IAEA,MAAMuiC,IAAI,GAAGsoB,QAAQ,CAACmX,SAAS,CAAC;IAEhC,IAAI,CAAC,CAACV,SAAS,CAACr+C,MAAM,CAAClc,EAAE,CAAC;IAC1B,IAAIu7D,IAAI,GAAG\u002F\u002FB,IAAI,CAAC\u002FV,YAAY,CAAC,WAAW,CAAC;IACzC,IAAI81C,IAAI,EAAEv5D,QAAQ,CAAChC,EAAE,CAAC,EAAE;MACtBu7D,IAAI,GAAGA,IAAI,CACRzsD,KAAK,CAAC,GAAG,CAAC,CACVgZ,MAAM,CAAC9rB,CAAC,IAAIA,CAAC,KAAKgE,EAAE,CAAC,CACrBmc,IAAI,CAAC,GAAG,CAAC;MACZ,IAAIo\u002FC,IAAI,EAAE;QACR\u002F\u002FB,IAAI,CAACz2B,YAAY,CAAC,WAAW,EAAEw2D,IAAI,CAAC;MACtC,CAAC,MAAM;QACL\u002F\u002FB,IAAI,CAAC3V,eAAe,CAAC,WAAW,CAAC;QACjC2V,IAAI,CAACz2B,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC;MAC3C;IACF;EACF;EAEA,CAACm2D,eAAeM,CAACx7D,EAAE,EAAEw7B,IAAI,EAAE;IACzB,MAAM+\u002FB,IAAI,GAAG\u002F\u002FB,IAAI,CAAC\u002FV,YAAY,CAAC,WAAW,CAAC;IAC3C,IAAI,CAAC81C,IAAI,EAAEv5D,QAAQ,CAAChC,EAAE,CAAC,EAAE;MACvBw7B,IAAI,CAACz2B,YAAY,CAAC,WAAW,EAAEw2D,IAAI,GAAI,GAAEA,IAAK,IAAGv7D,EAAG,EAAC,GAAGA,EAAE,CAAC;IAC7D;IACAw7B,IAAI,CAAC3V,eAAe,CAAC,MAAM,CAAC;EAC9B;EASAu1C,qBAAqBA,CAACzjE,OAAO,EAAEwjE,WAAW,EAAE;IAC1C,MAAM;MAAEn7D;IAAG,CAAC,GAAGrI,OAAO;IACtB,IAAI,CAACqI,EAAE,EAAE;MACP,OAAO,IAAI;IACb;IAEA,IAAI,CAAC,IAAI,CAAC,CAACsvD,OAAO,EAAE;MAElB,IAAI,CAAC,CAACkL,eAAe,CAAC3\u002FD,GAAG,CAAClD,OAAO,EAAEwjE,WAAW,CAAC;MAC\u002FC,OAAO,IAAI;IACb;IAEA,IAAIA,WAAW,EAAE;MACf,IAAI,CAACG,wBAAwB,CAAC3jE,OAAO,CAAC;IACxC;IAEA,MAAMmsD,QAAQ,GAAG,IAAI,CAAC,CAACwW,YAAY;IACnC,IAAI,CAACxW,QAAQ,IAAIA,QAAQ,CAACloD,MAAM,KAAK,CAAC,EAAE;MACtC,OAAO,IAAI;IACb;IAEA,MAAMiC,KAAK,GAAGvC,qBAAqB,CACjCwoD,QAAQ,EACRtoB,IAAI,IACF6+B,wBAAwB,CAAC,CAACK,uBAAuB,CAAC\u002FiE,OAAO,EAAE6jC,IAAI,CAAC,GAAG,CACvE,CAAC;IAED,MAAMy\u002FB,SAAS,GAAGh\u002FD,IAAI,CAACyD,GAAG,CAAC,CAAC,EAAE7B,KAAK,GAAG,CAAC,CAAC;IACxC,MAAM49D,KAAK,GAAG3X,QAAQ,CAACmX,SAAS,CAAC;IACjC,IAAI,CAAC,CAACC,eAAe,CAACl7D,EAAE,EAAEy7D,KAAK,CAAC;IAChC,IAAI,CAAC,CAAClB,SAAS,CAAC1\u002FD,GAAG,CAACmF,EAAE,EAAEi7D,SAAS,CAAC;IAElC,MAAMnjE,MAAM,GAAG2jE,KAAK,CAACj4D,UAAU;IAC\u002FB,OAAO1L,MAAM,EAAEc,SAAS,CAACC,QAAQ,CAAC,eAAe,CAAC,GAAGf,MAAM,CAACkI,EAAE,GAAG,IAAI;EACvE;EAOA07D,gBAAgBA,CAACn4D,SAAS,EAAE5L,OAAO,EAAEgkE,cAAc,EAAER,WAAW,EAAE;IAChE,MAAMn7D,EAAE,GAAG,IAAI,CAACo7D,qBAAqB,CAACO,cAAc,EAAER,WAAW,CAAC;IAElE,IAAI,CAAC53D,SAAS,CAACq4D,aAAa,CAAC,CAAC,EAAE;MAC9Br4D,SAAS,CAAC0vB,MAAM,CAACt7B,OAAO,CAAC;MACzB,OAAOqI,EAAE;IACX;IAEA,MAAM8jD,QAAQ,GAAGn3C,KAAK,CAACgZ,IAAI,CAACpiB,SAAS,CAACqhB,UAAU,CAAC,CAACkD,MAAM,CACtD0T,IAAI,IAAIA,IAAI,KAAK7jC,OACnB,CAAC;IAED,IAAImsD,QAAQ,CAACloD,MAAM,KAAK,CAAC,EAAE;MACzB,OAAOoE,EAAE;IACX;IAEA,MAAM67D,gBAAgB,GAAGF,cAAc,IAAIhkE,OAAO;IAClD,MAAMkG,KAAK,GAAGvC,qBAAqB,CACjCwoD,QAAQ,EACRtoB,IAAI,IACF6+B,wBAAwB,CAAC,CAACK,uBAAuB,CAC\u002FCmB,gBAAgB,EAChBrgC,IACF,CAAC,GAAG,CACR,CAAC;IAED,IAAI39B,KAAK,KAAK,CAAC,EAAE;MACfimD,QAAQ,CAAC,CAAC,CAAC,CAACgY,MAAM,CAACnkE,OAAO,CAAC;IAC7B,CAAC,MAAM;MACLmsD,QAAQ,CAACjmD,KAAK,GAAG,CAAC,CAAC,CAACk+D,KAAK,CAACpkE,OAAO,CAAC;IACpC;IAEA,OAAOqI,EAAE;EACX;AACF;;;ACpOA,MAAMg8D,eAAe,CAAC;EACpB,CAAC\u002FkB,oBAAoB,GAAG,IAAI;EAK5B9\u002FC,WAAWA,CAAC;IAAE8kE,cAAc;IAAE5wD,QAAQ;IAAE4kC;EAAU,CAAC,EAAE;IACnD,IAAI,CAACgsB,cAAc,GAAGA,cAAc;IACpC,IAAI,CAAC35B,OAAO,GAAG,EAAE;IACjB,IAAI,CAACj3B,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACglC,OAAO,GAAGJ,SAAS;IACxB,IAAI,CAACqT,QAAQ,GAAG,IAAI;IACpB,IAAI,CAAC4Y,mBAAmB,GAAG,IAAI;IAC\u002FB,IAAI,CAAC5M,OAAO,GAAG,KAAK;EACtB;EAWAmL,cAAcA,CAAC0B,IAAI,EAAEC,KAAK,EAAE;IAC1B,IAAI,CAAC9Y,QAAQ,GAAG6Y,IAAI;IACpB,IAAI,CAACD,mBAAmB,GAAGE,KAAK;EAClC;EAMApB,MAAMA,CAAA,EAAG;IACP,IAAI,CAAC,IAAI,CAAC1X,QAAQ,IAAI,CAAC,IAAI,CAAC4Y,mBAAmB,EAAE;MAC\u002FC,MAAM,IAAI9xD,KAAK,CAAC,0CAA0C,CAAC;IAC7D;IACA,IAAI,IAAI,CAACklD,OAAO,EAAE;MAChB,MAAM,IAAIllD,KAAK,CAAC,qCAAqC,CAAC;IACxD;IACA,IAAI,CAACklD,OAAO,GAAG,IAAI;IAEnB,IAAI,CAAC,IAAI,CAAC,CAACrY,oBAAoB,EAAE;MAC\u002FB,IAAI,CAAC,CAACA,oBAAoB,GAAG,IAAIjjC,eAAe,CAAC,CAAC;MAElD,IAAI,CAAC3I,QAAQ,CAACwJ,GAAG,CACf,wBAAwB,EACxBpb,GAAG,IAAI;QACL,IAAIA,GAAG,CAACw2C,SAAS,KAAK,IAAI,CAACI,OAAO,IAAI52C,GAAG,CAACw2C,SAAS,KAAK,CAAC,CAAC,EAAE;UAC1D,IAAI,CAACosB,cAAc,CAAC,CAAC;QACvB;MACF,CAAC,EACD;QAAE7nD,MAAM,EAAE,IAAI,CAAC,CAACyiC,oBAAoB,CAACziC;MAAO,CAC9C,CAAC;IACH;IACA,IAAI,CAAC6nD,cAAc,CAAC,CAAC;EACvB;EAEAhB,OAAOA,CAAA,EAAG;IACR,IAAI,CAAC,IAAI,CAAC\u002FL,OAAO,EAAE;MACjB;IACF;IACA,IAAI,CAACA,OAAO,GAAG,KAAK;IAEpB,IAAI,CAAC,CAACrY,oBAAoB,EAAE9iC,KAAK,CAAC,CAAC;IACnC,IAAI,CAAC,CAAC8iC,oBAAoB,GAAG,IAAI;IAEjC,IAAI,CAAColB,cAAc,CAAe,IAAI,CAAC;EACzC;EAEAC,eAAeA,CAACh6B,OAAO,EAAE0P,aAAa,EAAE;IAEtC,IAAI,CAAC1P,OAAO,EAAE;MACZ,OAAO,EAAE;IACX;IACA,MAAM;MAAE45B;IAAoB,CAAC,GAAG,IAAI;IAEpC,IAAIj+D,CAAC,GAAG,CAAC;MACPs+D,MAAM,GAAG,CAAC;IACZ,MAAMxuB,GAAG,GAAGmuB,mBAAmB,CAACtgE,MAAM,GAAG,CAAC;IAC1C,MAAMgB,MAAM,GAAG,EAAE;IAEjB,KAAK,IAAIvB,CAAC,GAAG,CAAC,EAAEmhE,EAAE,GAAGl6B,OAAO,CAAC1mC,MAAM,EAAEP,CAAC,GAAGmhE,EAAE,EAAEnhE,CAAC,EAAE,EAAE;MAEhD,IAAI+0C,QAAQ,GAAG9N,OAAO,CAACjnC,CAAC,CAAC;MAGzB,OAAO4C,CAAC,KAAK8vC,GAAG,IAAIqC,QAAQ,IAAImsB,MAAM,GAAGL,mBAAmB,CAACj+D,CAAC,CAAC,CAACrC,MAAM,EAAE;QACtE2gE,MAAM,IAAIL,mBAAmB,CAACj+D,CAAC,CAAC,CAACrC,MAAM;QACvCqC,CAAC,EAAE;MACL;MAEA,IAAIA,CAAC,KAAKi+D,mBAAmB,CAACtgE,MAAM,EAAE;QACpC5D,OAAO,CAACC,KAAK,CAAC,mCAAmC,CAAC;MACpD;MAEA,MAAM2W,KAAK,GAAG;QACZ6tD,KAAK,EAAE;UACLC,MAAM,EAAEz+D,CAAC;UACT47B,MAAM,EAAEuW,QAAQ,GAAGmsB;QACrB;MACF,CAAC;MAGDnsB,QAAQ,IAAI4B,aAAa,CAAC32C,CAAC,CAAC;MAI5B,OAAO4C,CAAC,KAAK8vC,GAAG,IAAIqC,QAAQ,GAAGmsB,MAAM,GAAGL,mBAAmB,CAACj+D,CAAC,CAAC,CAACrC,MAAM,EAAE;QACrE2gE,MAAM,IAAIL,mBAAmB,CAACj+D,CAAC,CAAC,CAACrC,MAAM;QACvCqC,CAAC,EAAE;MACL;MAEA2Q,KAAK,CAACm\u002FB,GAAG,GAAG;QACV2uB,MAAM,EAAEz+D,CAAC;QACT47B,MAAM,EAAEuW,QAAQ,GAAGmsB;MACrB,CAAC;MACD3\u002FD,MAAM,CAACmD,IAAI,CAAC6O,KAAK,CAAC;IACpB;IACA,OAAOhS,MAAM;EACf;EAEA+\u002FD,cAAcA,CAACr6B,OAAO,EAAE;IAEtB,IAAIA,OAAO,CAAC1mC,MAAM,KAAK,CAAC,EAAE;MACxB;IACF;IACA,MAAM;MAAEqgE,cAAc;MAAE5rB;IAAQ,CAAC,GAAG,IAAI;IACxC,MAAM;MAAE6rB,mBAAmB;MAAE5Y;IAAS,CAAC,GAAG,IAAI;IAE9C,MAAMsZ,cAAc,GAAGvsB,OAAO,KAAK4rB,cAAc,CAAC\u002FsB,QAAQ,CAACmB,OAAO;IAClE,MAAMwsB,gBAAgB,GAAGZ,cAAc,CAAC\u002FsB,QAAQ,CAACkB,QAAQ;IACzD,MAAMP,YAAY,GAAGosB,cAAc,CAACliE,KAAK,CAAC81C,YAAY;IACtD,IAAIitB,OAAO,GAAG,IAAI;IAClB,MAAMC,QAAQ,GAAG;MACfL,MAAM,EAAE,CAAC,CAAC;MACV7iC,MAAM,EAAE5gC;IACV,CAAC;IAED,SAAS+jE,SAASA,CAACP,KAAK,EAAE58B,SAAS,EAAE;MACnC,MAAM68B,MAAM,GAAGD,KAAK,CAACC,MAAM;MAC3BpZ,QAAQ,CAACoZ,MAAM,CAAC,CAACz4C,WAAW,GAAG,EAAE;MACjC,OAAOg5C,eAAe,CAACP,MAAM,EAAE,CAAC,EAAED,KAAK,CAAC5iC,MAAM,EAAEgG,SAAS,CAAC;IAC5D;IAEA,SAASo9B,eAAeA,CAACP,MAAM,EAAEQ,UAAU,EAAEC,QAAQ,EAAEt9B,SAAS,EAAE;MAChE,IAAI\u002FiC,GAAG,GAAGwmD,QAAQ,CAACoZ,MAAM,CAAC;MAC1B,IAAI5\u002FD,GAAG,CAAC+nB,QAAQ,KAAKgX,IAAI,CAAC\u002FW,SAAS,EAAE;QACnC,MAAMs4C,IAAI,GAAG56D,QAAQ,CAAC8jB,aAAa,CAAC,MAAM,CAAC;QAC3CxpB,GAAG,CAACg\u002FD,MAAM,CAACsB,IAAI,CAAC;QAChBA,IAAI,CAACnqC,MAAM,CAACn2B,GAAG,CAAC;QAChBwmD,QAAQ,CAACoZ,MAAM,CAAC,GAAGU,IAAI;QACvBtgE,GAAG,GAAGsgE,IAAI;MACZ;MACA,MAAM74C,OAAO,GAAG23C,mBAAmB,CAACQ,MAAM,CAAC,CAAC\u002FhB,SAAS,CACnDuiB,UAAU,EACVC,QACF,CAAC;MACD,MAAM3hC,IAAI,GAAGh5B,QAAQ,CAAC+jB,cAAc,CAAChC,OAAO,CAAC;MAC7C,IAAIsb,SAAS,EAAE;QACb,MAAMu9B,IAAI,GAAG56D,QAAQ,CAAC8jB,aAAa,CAAC,MAAM,CAAC;QAC3C82C,IAAI,CAACv9B,SAAS,GAAI,GAAEA,SAAU,WAAU;QACxCu9B,IAAI,CAACnqC,MAAM,CAACuI,IAAI,CAAC;QACjB1+B,GAAG,CAACm2B,MAAM,CAACmqC,IAAI,CAAC;QAChB,OAAOv9B,SAAS,CAAC79B,QAAQ,CAAC,UAAU,CAAC,GAAGo7D,IAAI,CAAC9kE,UAAU,GAAG,CAAC;MAC7D;MACAwE,GAAG,CAACm2B,MAAM,CAACuI,IAAI,CAAC;MAChB,OAAO,CAAC;IACV;IAEA,IAAI6hC,EAAE,GAAGR,gBAAgB;MACvBS,EAAE,GAAGD,EAAE,GAAG,CAAC;IACb,IAAIxtB,YAAY,EAAE;MAChBwtB,EAAE,GAAG,CAAC;MACNC,EAAE,GAAGh7B,OAAO,CAAC1mC,MAAM;IACrB,CAAC,MAAM,IAAI,CAACghE,cAAc,EAAE;MAE1B;IACF;IAEA,IAAIW,UAAU,GAAG,CAAC,CAAC;IACnB,IAAIC,UAAU,GAAG,CAAC,CAAC;IACnB,KAAK,IAAIv\u002FD,CAAC,GAAGo\u002FD,EAAE,EAAEp\u002FD,CAAC,GAAGq\u002FD,EAAE,EAAEr\u002FD,CAAC,EAAE,EAAE;MAC5B,MAAM2Q,KAAK,GAAG0zB,OAAO,CAACrkC,CAAC,CAAC;MACxB,MAAMw+D,KAAK,GAAG7tD,KAAK,CAAC6tD,KAAK;MACzB,IAAIA,KAAK,CAACC,MAAM,KAAKa,UAAU,IAAId,KAAK,CAAC5iC,MAAM,KAAK2jC,UAAU,EAAE;QAI9D;MACF;MACAD,UAAU,GAAGd,KAAK,CAACC,MAAM;MACzBc,UAAU,GAAGf,KAAK,CAAC5iC,MAAM;MAEzB,MAAMkU,GAAG,GAAGn\u002FB,KAAK,CAACm\u002FB,GAAG;MACrB,MAAM0vB,UAAU,GAAGb,cAAc,IAAI3+D,CAAC,KAAK4+D,gBAAgB;MAC3D,MAAMa,eAAe,GAAGD,UAAU,GAAG,WAAW,GAAG,EAAE;MACrD,IAAIztB,YAAY,GAAG,CAAC;MAGpB,IAAI,CAAC8sB,OAAO,IAAIL,KAAK,CAACC,MAAM,KAAKI,OAAO,CAACJ,MAAM,EAAE;QAE\u002FC,IAAII,OAAO,KAAK,IAAI,EAAE;UACpBG,eAAe,CAACH,OAAO,CAACJ,MAAM,EAAEI,OAAO,CAACjjC,MAAM,EAAEkjC,QAAQ,CAACljC,MAAM,CAAC;QAClE;QAEAmjC,SAAS,CAACP,KAAK,CAAC;MAClB,CAAC,MAAM;QACLQ,eAAe,CAACH,OAAO,CAACJ,MAAM,EAAEI,OAAO,CAACjjC,MAAM,EAAE4iC,KAAK,CAAC5iC,MAAM,CAAC;MAC\u002FD;MAEA,IAAI4iC,KAAK,CAACC,MAAM,KAAK3uB,GAAG,CAAC2uB,MAAM,EAAE;QAC\u002FB1sB,YAAY,GAAGitB,eAAe,CAC5BR,KAAK,CAACC,MAAM,EACZD,KAAK,CAAC5iC,MAAM,EACZkU,GAAG,CAAClU,MAAM,EACV,WAAW,GAAG6jC,eAChB,CAAC;MACH,CAAC,MAAM;QACL1tB,YAAY,GAAGitB,eAAe,CAC5BR,KAAK,CAACC,MAAM,EACZD,KAAK,CAAC5iC,MAAM,EACZkjC,QAAQ,CAACljC,MAAM,EACf,iBAAiB,GAAG6jC,eACtB,CAAC;QACD,KAAK,IAAIC,EAAE,GAAGlB,KAAK,CAACC,MAAM,GAAG,CAAC,EAAEkB,EAAE,GAAG7vB,GAAG,CAAC2uB,MAAM,EAAEiB,EAAE,GAAGC,EAAE,EAAED,EAAE,EAAE,EAAE;UAC9Dra,QAAQ,CAACqa,EAAE,CAAC,CAAC99B,SAAS,GAAG,kBAAkB,GAAG69B,eAAe;QAC\u002FD;QACAV,SAAS,CAACjvB,GAAG,EAAE,eAAe,GAAG2vB,eAAe,CAAC;MACnD;MACAZ,OAAO,GAAG\u002FuB,GAAG;MAEb,IAAI0vB,UAAU,EAAE;QAEdxB,cAAc,CAAClsB,mBAAmB,CAAC;UACjCp4C,OAAO,EAAE2rD,QAAQ,CAACmZ,KAAK,CAACC,MAAM,CAAC;UAC\u002FB1sB,YAAY;UACZC,SAAS,EAAEI,OAAO;UAClBH,UAAU,EAAE2sB;QACd,CAAC,CAAC;MACJ;IACF;IAEA,IAAIC,OAAO,EAAE;MACXG,eAAe,CAACH,OAAO,CAACJ,MAAM,EAAEI,OAAO,CAACjjC,MAAM,EAAEkjC,QAAQ,CAACljC,MAAM,CAAC;IAClE;EACF;EAEAwiC,cAAcA,CAAC\u002FkD,KAAK,GAAG,KAAK,EAAE;IAC5B,IAAI,CAAC,IAAI,CAACg4C,OAAO,IAAI,CAACh4C,KAAK,EAAE;MAC3B;IACF;IACA,MAAM;MAAE2kD,cAAc;MAAE35B,OAAO;MAAE+N;IAAQ,CAAC,GAAG,IAAI;IACjD,MAAM;MAAE6rB,mBAAmB;MAAE5Y;IAAS,CAAC,GAAG,IAAI;IAC9C,IAAIua,kBAAkB,GAAG,CAAC,CAAC;IAG3B,KAAK,MAAMjvD,KAAK,IAAI0zB,OAAO,EAAE;MAC3B,MAAMm6B,KAAK,GAAGxgE,IAAI,CAACyD,GAAG,CAACm+D,kBAAkB,EAAEjvD,KAAK,CAAC6tD,KAAK,CAACC,MAAM,CAAC;MAC9D,KAAK,IAAIoB,CAAC,GAAGrB,KAAK,EAAE1uB,GAAG,GAAGn\u002FB,KAAK,CAACm\u002FB,GAAG,CAAC2uB,MAAM,EAAEoB,CAAC,IAAI\u002FvB,GAAG,EAAE+vB,CAAC,EAAE,EAAE;QACzD,MAAMhhE,GAAG,GAAGwmD,QAAQ,CAACwa,CAAC,CAAC;QACvBhhE,GAAG,CAACmnB,WAAW,GAAGi4C,mBAAmB,CAAC4B,CAAC,CAAC;QACxChhE,GAAG,CAAC+iC,SAAS,GAAG,EAAE;MACpB;MACAg+B,kBAAkB,GAAGjvD,KAAK,CAACm\u002FB,GAAG,CAAC2uB,MAAM,GAAG,CAAC;IAC3C;IAEA,IAAI,CAACT,cAAc,EAAErtB,gBAAgB,IAAIt3B,KAAK,EAAE;MAC9C;IACF;IAGA,MAAMw3B,WAAW,GAAGmtB,cAAc,CAACntB,WAAW,CAACuB,OAAO,CAAC,IAAI,IAAI;IAC\u002FD,MAAMrB,iBAAiB,GAAGitB,cAAc,CAACjtB,iBAAiB,CAACqB,OAAO,CAAC,IAAI,IAAI;IAE3E,IAAI,CAAC\u002FN,OAAO,GAAG,IAAI,CAACg6B,eAAe,CAACxtB,WAAW,EAAEE,iBAAiB,CAAC;IACnE,IAAI,CAAC2tB,cAAc,CAAC,IAAI,CAACr6B,OAAO,CAAC;EACnC;AACF;;;AC\u002FRwD;AACH;AAgBrD,MAAMy7B,gBAAgB,CAAC;EACrB,CAACz2D,iBAAiB,GAAG,KAAK;EAE1B,CAAC8tD,QAAQ,GAAG,IAAI;EAEhB,CAACuE,aAAa,GAAG,KAAK;EAEtB,CAACz+B,SAAS,GAAG,IAAI;EAEjB,OAAO,CAAC8iC,UAAU,GAAG,IAAIvjE,GAAG,CAAC,CAAC;EAE9B,OAAO,CAACwjE,8BAA8B,GAAG,IAAI;EAE7C9mE,WAAWA,CAAC;IACV8uC,OAAO;IACPi4B,WAAW,GAAG,IAAI;IAClB7I,oBAAoB,GAAG,IAAI;IAC3B\u002FtD,iBAAiB,GAAG,KAAK;IACzB8tD,QAAQ,GAAG;EACb,CAAC,EAAE;IACD,IAAI,CAACnvB,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACi4B,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAAC7I,oBAAoB,GAAGA,oBAAoB;IAChD,IAAI,CAAC,CAAC\u002FtD,iBAAiB,GAAGA,iBAAiB,KAAK,IAAI;IACpD,IAAI,CAAC,CAAC8tD,QAAQ,GAAGA,QAAQ;IAEzB,IAAI,CAACt4D,GAAG,GAAG0F,QAAQ,CAAC8jB,aAAa,CAAC,KAAK,CAAC;IACxC,IAAI,CAACxpB,GAAG,CAACqhE,QAAQ,GAAG,CAAC;IACrB,IAAI,CAACrhE,GAAG,CAAC+iC,SAAS,GAAG,WAAW;EAClC;EAEA,CAACu+B,eAAeC,CAAA,EAAG;IACjB,IAAI,CAAC,CAAC1E,aAAa,GAAG,IAAI;IAE1B,MAAM2E,YAAY,GAAG97D,QAAQ,CAAC8jB,aAAa,CAAC,KAAK,CAAC;IAClDg4C,YAAY,CAACz+B,SAAS,GAAG,cAAc;IACvC,IAAI,CAAC\u002FiC,GAAG,CAACm2B,MAAM,CAACqrC,YAAY,CAAC;IAE7B,IAAI,CAAC,CAACC,SAAS,CAACD,YAAY,CAAC;EAC\u002FB;EAOA,MAAM\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\u002FwD,GAAG,CAAC2wD,YAAY,CAAC,IACnC\u002FlC,KAAK,CAACqmC,cAAc,CAACN,YAAY,CAAC,EAClC;YACAI,gBAAgB,CAACp\u002FD,GAAG,CAACg\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\u002FBm\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\u002FB,OAAO,KAAK,KAAK,IAAI,IAAI,CAACn\u002FB,MAAM,EAAEm\u002FB,OAAO,KAAK,KAAK,EAAE;MACvE,MAAM,IAAIr4B,KAAK,CAAC,6CAA6C,CAAC;IAChE;IAEA,IACE,IAAI,CAAC7G,SAAS,CAACxL,YAAY,IAC3Be,gBAAgB,CAAC,IAAI,CAACyK,SAAS,CAAC,CAACy2C,QAAQ,KAAK,UAAU,EACxD;MACA,MAAM,IAAI5vC,KAAK,CAAC,gDAAgD,CAAC;IACnE;IAEF,IAAI,CAAC,CAACkrC,cAAc,CAAC9qB,OAAO,CAAC,IAAI,CAACjnB,SAAS,CAAC;IAE5C,IAAI,CAAC8H,QAAQ,GAAGb,OAAO,CAACa,QAAQ;IAChC,IAAI,CAACijC,WAAW,GAAG9jC,OAAO,CAAC8jC,WAAW,IAAI,IAAI99B,iBAAiB,CAAC,CAAC;IACjE,IAAI,CAACswB,eAAe,GAAGt2B,OAAO,CAACs2B,eAAe,IAAI,IAAI;IACtD,IAAI,CAACm7B,cAAc,GAAGzxD,OAAO,CAACyxD,cAAc,IAAI,IAAI;IACpD,IAAI,CAAC,CAACoL,cAAc,GAAG78D,OAAO,CAAC68D,cAAc,IAAI,IAAI;IAErD,IAAI,IAAI,CAACpL,cAAc,EAAE;MACvB,IAAI,CAACA,cAAc,CAACxtB,eAAe,GAAGhiC,UAAU,IAC9C,IAAI,CAACu7D,gBAAgB,CAAC,CAAC,CAAClpE,GAAG,CAAC0P,GAAG,CAAC\u002FB,UAAU,CAAC;IAC\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\u002F9D,WAAW,EAAEk\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\u002FmE,OAAO,CAAC,CAAC;UAC\u002FB;QACF;QACA,IAAImpE,YAAY,GAAG3\u002FD,UAAU,GAAG,CAAC;QAEjC,IAAI2\u002FD,YAAY,IAAI,CAAC,EAAE;UACrB,IAAI,CAACpC,gBAAgB,CAAC\u002FmE,OAAO,CAAC,CAAC;UAC\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\u002FD,MAAM,EAAE;QAEpCD,YAAY,CAAC\u002FrE,GAAG,CAACsM,UAAU,GAAG,CAAC,CAAC;QAChCy\u002FD,YAAY,CAAC\u002FrE,GAAG,CAACsM,UAAU,CAAC;MAC9B,CAAC,MAAM;QAELy\u002FD,YAAY,CAAC\u002FrE,GAAG,CAACsM,UAAU,GAAG,CAAC,CAAC;QAChCy\u002FD,YAAY,CAAC\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\u002FD,SAAS,IACd,EAAE,IAAI,CAACv\u002FD,oBAAoB,IAAI,IAAI,CAACw\u002FC,0BAA0B,CAAC,EAC\u002FD;QACA5\u002FC,IAAI,GAAG,IAAI,CAAC2\u002FD,SAAS,CAACl\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\u002FI,YAAY,CAC1C\u002FhE,SAAS,CAACpK,UAAU,GAAGg1E,SAAS,CAACnyE,CAAC,EAClCuH,SAAS,CAACnK,SAAS,GAAG+0E,SAAS,CAACluE,CAClC,CAAC;IACD,MAAMsuE,OAAO,GAAGtyE,IAAI,CAACe,KAAK,CAACsxE,OAAO,CAAC,CAAC,CAAC,CAAC;IACtC,MAAME,MAAM,GAAGvyE,IAAI,CAACe,KAAK,CAACsxE,OAAO,CAAC,CAAC,CAAC,CAAC;IAErC,IAAIvzB,aAAa,GAAI,SAAQtuC,UAAW,EAAC;IACzC,IAAI,CAAC,IAAI,CAACL,oBAAoB,EAAE;MAC9B2uC,aAAa,IAAK,SAAQqzB,oBAAqB,IAAGG,OAAQ,IAAGC,MAAO,EAAC;IACvE;IAEA,IAAI,CAAC7C,SAAS,GAAG;MACfl\u002FD,UAAU;MACVk3C,KAAK,EAAEyqB,oBAAoB;MAC3Bp1E,GAAG,EAAEw1E,MAAM;MACXt1E,IAAI,EAAEq1E,OAAO;MACbriE,QAAQ,EAAE,IAAI,CAACg5B,cAAc;MAC7B6V;IACF,CAAC;EACH;EAEAwI,MAAMA,CAAA,EAAG;IACP,MAAM1kD,OAAO,GAAG,IAAI,CAACmpE,gBAAgB,CAAC,CAAC;IACvC,MAAMyG,YAAY,GAAG5vE,OAAO,CAACf,KAAK;MAChC4wE,eAAe,GAAGD,YAAY,CAAC7yE,MAAM;IAEvC,IAAI8yE,eAAe,KAAK,CAAC,EAAE;MACzB;IACF;IACA,MAAMC,YAAY,GAAG1yE,IAAI,CAACyD,GAAG,CAAC2mE,kBAAkB,EAAE,CAAC,GAAGqI,eAAe,GAAG,CAAC,CAAC;IAC1E,IAAI,CAAC,CAACtH,MAAM,CAACN,MAAM,CAAC6H,YAAY,EAAE9vE,OAAO,CAACC,GAAG,CAAC;IAE9C,IAAI,CAACyxD,cAAc,CAAC5H,qBAAqB,CAAC9pD,OAAO,CAAC;IAElD,MAAM+vE,cAAc,GAClB,IAAI,CAACrD,WAAW,KAAK70E,UAAU,CAACd,IAAI,KACnC,IAAI,CAACq1E,WAAW,KAAK50E,UAAU,CAACI,IAAI,IACnC,IAAI,CAACw0E,WAAW,KAAK50E,UAAU,CAACC,QAAQ,CAAC;IAC7C,MAAMu4E,SAAS,GAAG,IAAI,CAAC5pC,kBAAkB;IACzC,IAAI6pC,iBAAiB,GAAG,KAAK;IAE7B,KAAK,MAAM9iE,IAAI,IAAIyiE,YAAY,EAAE;MAC\u002FB,IAAIziE,IAAI,CAAClM,OAAO,GAAG,GAAG,EAAE;QACtB;MACF;MACA,IAAIkM,IAAI,CAAChM,EAAE,KAAK6uE,SAAS,IAAID,cAAc,EAAE;QAC3CE,iBAAiB,GAAG,IAAI;QACxB;MACF;IACF;IACA,IAAI,CAACpG,qBAAqB,CACxBoG,iBAAiB,GAAGD,SAAS,GAAGJ,YAAY,CAAC,CAAC,CAAC,CAACzuE,EAClD,CAAC;IAED,IAAI,CAACkuE,eAAe,CAACrvE,OAAO,CAACuB,KAAK,CAAC;IACnC,IAAI,CAACiL,QAAQ,CAACqD,QAAQ,CAAC,gBAAgB,EAAE;MACvCC,MAAM,EAAE,IAAI;MACZooC,QAAQ,EAAE,IAAI,CAAC40B;IACjB,CAAC,CAAC;EACJ;EAEAoD,eAAeA,CAACp3E,OAAO,EAAE;IACvB,OAAO,IAAI,CAAC4L,SAAS,CAAC1K,QAAQ,CAAClB,OAAO,CAAC;EACzC;EAEA8mC,KAAKA,CAAA,EAAG;IACN,IAAI,CAACl7B,SAAS,CAACk7B,KAAK,CAAC,CAAC;EACxB;EAEA,IAAIuwC,eAAeA,CAAA,EAAG;IACpB,OAAOl2E,gBAAgB,CAAC,IAAI,CAACyK,SAAS,CAAC,CAACqxB,SAAS,KAAK,KAAK;EAC7D;EAEA,IAAIxoB,oBAAoBA,CAAA,EAAG;IACzB,OAAO,IAAI,CAAC63B,qBAAqB,KAAK3uC,qBAAqB,CAACI,UAAU;EACxE;EAEA,IAAIk2D,0BAA0BA,CAAA,EAAG;IAC\u002FB,OAAO,IAAI,CAAC3nB,qBAAqB,KAAK3uC,qBAAqB,CAACG,QAAQ;EACtE;EAEA,IAAIw5E,4BAA4BA,CAAA,EAAG;IACjC,OAAO,IAAI,CAAC7iE,oBAAoB,GAC5B,KAAK,GACL,IAAI,CAAC7I,SAAS,CAAC5K,WAAW,GAAG,IAAI,CAAC4K,SAAS,CAAC7K,WAAW;EAC7D;EAEA,IAAIw2E,0BAA0BA,CAAA,EAAG;IAC\u002FB,OAAO,IAAI,CAAC9iE,oBAAoB,GAC5B,KAAK,GACL,IAAI,CAAC7I,SAAS,CAAC9K,YAAY,GAAG,IAAI,CAAC8K,SAAS,CAAC\u002FK,YAAY;EAC\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\u002FB,OAAO,EAAE;IAC\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\u002FE,mBAAmB;IACzC,IAAI,CAACq\u002FE,SAAS,GAAGp\u002FE,aAAa;IAC9B,IAAI,CAAC,CAAC28B,aAAa,CAAC,IAAI,CAAC;IACzB,IAAI,CAAC0iD,2BAA2B,CAAC,CAAC;IAGlC,IAAI,CAAC,CAACC,iBAAiB,CAAC;MAAElyE,IAAI,EAAE+O,oBAAoB,CAAC1a;IAAQ,CAAC,CAAC;EACjE;EAEA,CAACkgC,aAAaC,CAAC8M,OAAO,EAAE;IACtB,MAAM;MAAE93B;IAAS,CAAC,GAAG,IAAI;IACzB,MAAM;MAAEoB,UAAU;MAAEunE;IAAY,CAAC,GAAG,IAAI,CAAC,CAAC97D,IAAI;IAC9C,MAAMqxD,IAAI,GAAG,IAAI;IAGjB,KAAK,MAAM;MAAE5xE,OAAO;MAAEgd,SAAS;MAAEu8D;IAAa,CAAC,IAAI\u002FtC,OAAO,EAAE;MAC1DxrC,OAAO,CAAC0C,gBAAgB,CAAC,OAAO,EAAEZ,GAAG,IAAI;QACvC,IAAIkb,SAAS,KAAK,IAAI,EAAE;UACtBtJ,QAAQ,CAACqD,QAAQ,CAACiG,SAAS,EAAE;YAC3BhG,MAAM,EAAE,IAAI;YACZ,GAAGuiE,YAAY;YAEfd,cAAc,EAAE32E,GAAG,CAACu8B,MAAM,KAAK;UACjC,CAAC,CAAC;QACJ;MACF,CAAC,CAAC;IACJ;IAEAvpB,UAAU,CAACpS,gBAAgB,CAAC,OAAO,EAAE,YAAY;MAC\u002FC,IAAI,CAACgf,MAAM,CAAC,CAAC;IACf,CAAC,CAAC;IACF5M,UAAU,CAACpS,gBAAgB,CAAC,QAAQ,EAAE,YAAY;MAChDgR,QAAQ,CAACqD,QAAQ,CAAC,mBAAmB,EAAE;QACrCC,MAAM,EAAE46D,IAAI;QACZ5uE,KAAK,EAAE,IAAI,CAACA;MACd,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFq5E,WAAW,CAAC35E,gBAAgB,CAAC,QAAQ,EAAE,YAAY;MACjD,IAAI,IAAI,CAACM,KAAK,KAAK,QAAQ,EAAE;QAC3B;MACF;MACA0Q,QAAQ,CAACqD,QAAQ,CAAC,cAAc,EAAE;QAChCC,MAAM,EAAE46D,IAAI;QACZ5uE,KAAK,EAAE,IAAI,CAACA;MACd,CAAC,CAAC;IACJ,CAAC,CAAC;IAGFq5E,WAAW,CAAC35E,gBAAgB,CAAC,OAAO,EAAE,UAAU;MAAEqT;IAAO,CAAC,EAAE;MAG1D,IACE,IAAI,CAAC\u002FS,KAAK,KAAK4uE,IAAI,CAACqK,cAAc,IAClClmE,MAAM,CAAC+0B,OAAO,CAACwxC,WAAW,CAAC,CAAC,KAAK,QAAQ,EACzC;QACA,IAAI,CAAChxC,IAAI,CAAC,CAAC;MACb;IACF,CAAC,CAAC;IAEF+wC,WAAW,CAACE,aAAa,GAAGhiE,aAAa;IAEzC7G,QAAQ,CAACwJ,GAAG,CACV,6BAA6B,EAC7B,IAAI,CAAC,CAACk\u002FD,iBAAiB,CAACx\u002FD,IAAI,CAAC,IAAI,CACnC,CAAC;EACH;EAEA,CAACw\u002FD,iBAAiBI,CAAC;IAAEtyE;EAAK,CAAC,EAAE;IAC3B,MAAM;MACJ8wE,oBAAoB;MACpByB,2BAA2B;MAC3BvB,qBAAqB;MACrBwB,4BAA4B;MAC5BtB,eAAe;MACfuB,sBAAsB;MACtBrB,iBAAiB;MACjBsB;IACF,CAAC,GAAG,IAAI,CAAC,CAACr8D,IAAI;IAEdtT,gBAAgB,CACd+tE,oBAAoB,EACpB9wE,IAAI,KAAK+O,oBAAoB,CAACgiE,QAAQ,EACtCwB,2BACF,CAAC;IACDxvE,gBAAgB,CACdiuE,qBAAqB,EACrBhxE,IAAI,KAAK+O,oBAAoB,CAACkiE,SAAS,EACvCuB,4BACF,CAAC;IACDzvE,gBAAgB,CACdmuE,eAAe,EACflxE,IAAI,KAAK+O,oBAAoB,CAACoiE,GAAG,EACjCsB,sBACF,CAAC;IACD1vE,gBAAgB,CACdquE,iBAAiB,EACjBpxE,IAAI,KAAK+O,oBAAoB,CAACsiE,KAAK,EACnCqB,wBACF,CAAC;IAED,MAAMC,SAAS,GAAG3yE,IAAI,KAAK+O,oBAAoB,CAAC1a,OAAO;IACvDy8E,oBAAoB,CAACj9C,QAAQ,GAAG8+C,SAAS;IACzC3B,qBAAqB,CAACn9C,QAAQ,GAAG8+C,SAAS;IAC1CzB,eAAe,CAACr9C,QAAQ,GAAG8+C,SAAS;IACpCvB,iBAAiB,CAACv9C,QAAQ,GAAG8+C,SAAS;EACxC;EAEA,CAACpjD,aAAaqE,CAACg\u002FC,aAAa,GAAG,KAAK,EAAE;IACpC,MAAM;MAAEhoE,UAAU;MAAEX,UAAU;MAAE8nE,cAAc;MAAEC;IAAU,CAAC,GAAG,IAAI;IAClE,MAAM37D,IAAI,GAAG,IAAI,CAAC,CAACA,IAAI;IAEvB,IAAIu8D,aAAa,EAAE;MACjB,IAAI,IAAI,CAACf,aAAa,EAAE;QACtBx7D,IAAI,CAACzL,UAAU,CAACyH,IAAI,GAAG,MAAM;QAE7BgE,IAAI,CAACnM,QAAQ,CAAChH,YAAY,CAAC,cAAc,EAAE,qBAAqB,CAAC;MACnE,CAAC,MAAM;QACLmT,IAAI,CAACzL,UAAU,CAACyH,IAAI,GAAG,QAAQ;QAE\u002FBgE,IAAI,CAACnM,QAAQ,CAAChH,YAAY,CAAC,cAAc,EAAE,gBAAgB,CAAC;QAC5DmT,IAAI,CAACnM,QAAQ,CAAChH,YAAY,CACxB,gBAAgB,EAChBoJ,IAAI,CAACC,SAAS,CAAC;UAAEtC;QAAW,CAAC,CAC\u002FB,CAAC;MACH;MACAoM,IAAI,CAACzL,UAAU,CAAC\u002FM,GAAG,GAAGoM,UAAU;IAClC;IAEA,IAAI,IAAI,CAAC4nE,aAAa,EAAE;MACtBx7D,IAAI,CAACzL,UAAU,CAAC9R,KAAK,GAAG,IAAI,CAAC81D,SAAS;MAEtCv4C,IAAI,CAACnM,QAAQ,CAAChH,YAAY,CACxB,gBAAgB,EAChBoJ,IAAI,CAACC,SAAS,CAAC;QAAE3B,UAAU;QAAEX;MAAW,CAAC,CAC3C,CAAC;IACH,CAAC,MAAM;MACLoM,IAAI,CAACzL,UAAU,CAAC9R,KAAK,GAAG8R,UAAU;IACpC;IAEAyL,IAAI,CAAC67B,QAAQ,CAACre,QAAQ,GAAGjpB,UAAU,IAAI,CAAC;IACxCyL,IAAI,CAAC2H,IAAI,CAAC6V,QAAQ,GAAGjpB,UAAU,IAAIX,UAAU;IAE7CoM,IAAI,CAACw6D,OAAO,CAACh9C,QAAQ,GAAGm+C,SAAS,IAAIl\u002FE,SAAS;IAC9CujB,IAAI,CAACu6D,MAAM,CAAC\u002F8C,QAAQ,GAAGm+C,SAAS,IAAIj\u002FE,SAAS;IAE7C,IAAI8\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\u002F1C,eAAe,EAAE,IAAI;EAErB\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\u002FB,UAAU,EAAE\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\u002FBA,SAAS,CAACx\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\u002F\u002FC,OAAO,CAAC,CAAC,CAAC;IAC5C,IAAI,CAAC+\u002FC,cAAc,GAAG,IAAI;IAE1B,IAAI,IAAI,CAACzqE,WAAW,EAAE;MACpB,IAAI,CAACA,WAAW,GAAG,IAAI;MAEvB,IAAI,CAACy8C,kBAAkB,EAAEt8C,WAAW,CAAC,IAAI,CAAC;MAC1C,IAAI,CAACF,SAAS,CAACE,WAAW,CAAC,IAAI,CAAC;MAChC,IAAI,CAAC2qE,cAAc,CAAC3qE,WAAW,CAAC,IAAI,CAAC;MACrC,IAAI,CAAC0qE,qBAAqB,EAAE1qE,WAAW,CAAC,IAAI,CAAC;IAC\u002FC;IACA,IAAI,CAAC2qE,cAAc,CAAClrE,mBAAmB,GAAG,IAAI;IAC9C,IAAI,CAACyrE,KAAK,GAAG,IAAI;IACjB,IAAI,CAACnpB,gBAAgB,GAAG,KAAK;IAC7B,IAAI,CAACspB,gBAAgB,GAAG,KAAK;IAC7B,IAAI,CAACxpE,GAAG,GAAG,EAAE;IACb,IAAI,CAACjC,OAAO,GAAG,EAAE;IACjB,IAAI,CAAC0rE,YAAY,GAAG,EAAE;IACtB,IAAI,CAACG,YAAY,GAAG,IAAI;IACxB,IAAI,CAACjoD,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACkoD,2BAA2B,GAAG,IAAI;IACvC,IAAI,CAACC,cAAc,GAAG,IAAI;IAC1B,IAAI,CAACC,eAAe,GAAG,KAAK;IAC5B,IAAI,CAACM,qBAAqB,GAAG,KAAK;IAElCmD,QAAQ,CAACj7E,IAAI,CACX,IAAI,CAAC62E,mBAAmB,CAACnrB,cAAc,EACvC,IAAI,CAAC8tB,cAAc,CAACjnD,KAAK,CAAC,CAC5B,CAAC;IAED,IAAI,CAACsoD,QAAQ,CAAC,CAAC;IACf,IAAI,CAACrE,UAAU,EAAEj\u002FD,KAAK,CAAC,CAAC;IACxB,IAAI,CAACk\u002FD,gBAAgB,EAAEl\u002FD,KAAK,CAAC,CAAC;IAC9B,IAAI,CAACm\u002FD,mBAAmB,EAAEn\u002FD,KAAK,CAAC,CAAC;IACjC,IAAI,CAACo\u002FD,cAAc,EAAEp\u002FD,KAAK,CAAC,CAAC;IAE5B,IAAI,CAAC5L,UAAU,EAAE4L,KAAK,CAAC,CAAC;IACxB,IAAI,CAAC4hE,OAAO,EAAE5hE,KAAK,CAAC,CAAC;IACrB,IAAI,CAACi7D,OAAO,EAAEj7D,KAAK,CAAC,CAAC;IACrB,IAAI,CAACy\u002FD,gBAAgB,EAAEz\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\u002F\u002FD,IAAI,CAAC,IAAI,CAAE,EAAC,CAAC;IACzD,OAAOrB,OAAO;EAChB,CAAC;EAEDksC,QAAQA,CAACq1B,KAAK,EAAE;IACd,IAAI,CAAC,IAAI,CAAC7B,UAAU,IAAI,IAAI,CAACxD,gBAAgB,EAAE;MAG7C;IACF;IACA,MAAMl3E,OAAO,GAAG7D,IAAI,CAACe,KAAK,CAACq\u002FE,KAAK,GAAG,GAAG,CAAC;IAKvC,IAAIv8E,OAAO,IAAI,IAAI,CAAC06E,UAAU,CAAC16E,OAAO,EAAE;MACtC;IACF;IACA,IAAI,CAAC06E,UAAU,CAAC16E,OAAO,GAAGA,OAAO;IAOjC,IACE,IAAI,CAAC0L,WAAW,EAAEiyC,aAAa,CAAC70C,gBAAgB,IAChDuB,UAAU,CAACE,GAAG,CAAC,kBAAkB,CAAC,EAClC;MACA,IAAI,CAACmwE,UAAU,CAAC72E,mBAAmB,CAAC,CAAC;IACvC;EACF,CAAC;EAED63E,IAAIA,CAAChwE,WAAW,EAAE;IAChB,IAAI,CAACA,WAAW,GAAGA,WAAW;IAE9BA,WAAW,CAAC+jB,eAAe,CAAC,CAAC,CAACzY,IAAI,CAAC,CAAC;MAAElb;IAAO,CAAC,KAAK;MACjD,IAAI,CAAC07E,cAAc,GAAG17E,MAAM;MAC5B,IAAI,CAACo7E,gBAAgB,GAAG,IAAI;MAC5B,IAAI,CAACwD,UAAU,EAAEx2E,IAAI,CAAC,CAAC;MAEvBowD,gBAAgB,CAACt9C,IAAI,CAAC,MAAM;QAC1B,IAAI,CAACzL,QAAQ,CAACqD,QAAQ,CAAC,gBAAgB,EAAE;UAAEC,MAAM,EAAE;QAAK,CAAC,CAAC;MAC5D,CAAC,CAAC;IACJ,CAAC,CAAC;IAIF,MAAM2tE,iBAAiB,GAAG9wE,WAAW,CAAC+wE,aAAa,CAAC,CAAC,CAACrsD,KAAK,CAAC,MAAM,CAElE,CAAC,CAAC;IACF,MAAMssD,eAAe,GAAGhxE,WAAW,CAACixE,WAAW,CAAC,CAAC,CAACvsD,KAAK,CAAC,MAAM,CAE9D,CAAC,CAAC;IACF,MAAMwsD,iBAAiB,GAAGlxE,WAAW,CAACmxE,aAAa,CAAC,CAAC,CAACzsD,KAAK,CAAC,MAAM,CAElE,CAAC,CAAC;IAEF,IAAI,CAACqiD,OAAO,EAAET,aAAa,CAACtmE,WAAW,CAACO,QAAQ,EAAE,KAAK,CAAC;IACxD,IAAI,CAACgrE,gBAAgB,EAAEjF,aAAa,CAACtmE,WAAW,CAACO,QAAQ,CAAC;IAWxD,IAAI,CAACuqE,cAAc,CAAC3qE,WAAW,CAACH,WAAW,CAAC;IAE9C,IAAI,CAAC6qE,qBAAqB,EAAE1qE,WAAW,CAACH,WAAW,CAAC;IAEpD,MAAMC,SAAS,GAAG,IAAI,CAACA,SAAS;IAChCA,SAAS,CAACE,WAAW,CAACH,WAAW,CAAC;IAClC,MAAM;MAAE4oD,gBAAgB;MAAE+U,eAAe;MAAEnd;IAAa,CAAC,GAAGvgD,SAAS;IAErE,IAAI,CAACw8C,kBAAkB,EAAEt8C,WAAW,CAACH,WAAW,CAAC;IAEjD,MAAMoxE,aAAa,GAAG,CAAC,IAAI,CAAC\u002FF,KAAK,GAAG,IAAI\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\u002FCx\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\u002FC,QAAQ,CAACnpC,IAAI,CAAC,CAACm\u002FD,MAAM,IAAI,MAAM;MACnE,IAAIuW,qBAAqB,CAACthF,QAAQ,CAACuhF,YAAY,CAAC,EAAE;QAEhD;MACF;MACA,MAAMC,UAAU,GAAG,IAAI30D,GAAG,CAACwmD,IAAI,EAAEh+E,MAAM,CAAC0\u002FC,QAAQ,CAACnpC,IAAI,CAAC,CAACm\u002FD,MAAM;MAI7D,IAAIyW,UAAU,KAAKD,YAAY,EAAE;QAC\u002FB,MAAM,IAAIn5E,KAAK,CAAC,qCAAqC,CAAC;MACxD;IACF,CAAC,CAAC,OAAOwpB,EAAE,EAAE;MACXiiD,oBAAoB,CAAC4F,cAAc,CAAC,qBAAqB,EAAE;QACzD3gE,OAAO,EAAE8Y,EAAE,CAAC9Y;MACd,CAAC,CAAC;MACF,MAAM8Y,EAAE;IACV;EACF,CAAC;AACH;AAEA,SAAS4rD,mBAAmBA,CAAC;EAAE\u002FyE;AAAW,CAAC,EAAE;EAG3C,IAAIA,UAAU,KAAKopE,oBAAoB,CAAC7pE,IAAI,EAAE;IAC5C6pE,oBAAoB,CAACtD,OAAO,EAAEuB,2BAA2B,CAAC,IAAI,CAAC;EACjE;AACF;AAEA,SAAS2L,qBAAqBA,CAAC;EAAEhzE,UAAU;EAAExU;AAAM,CAAC,EAAE;EAGpD,IAAIwU,UAAU,KAAKopE,oBAAoB,CAAC7pE,IAAI,EAAE;IAC5C6pE,oBAAoB,CAACtD,OAAO,EAAEuB,2BAA2B,CAAC,KAAK,CAAC;EAClE;EAGA,IAAI+B,oBAAoB,CAACU,UAAU,EAAE1nB,WAAW,KAAKl5D,WAAW,CAACE,MAAM,EAAE;IACvE,MAAM22D,QAAQ,GAAGqpB,oBAAoB,CAACpqE,SAAS,CAACghD,WAAW,CAC3ChgD,UAAU,GAAG,CAC7B,CAAC;IACD,MAAM4hD,aAAa,GAAGwnB,oBAAoB,CAAC5tB,kBAAkB,EAAEuL,YAAY,CAC3D\u002FmD,UAAU,GAAG,CAC7B,CAAC;IACD,IAAI+\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\u002FE,YAAY,CAAC6\u002FE,mBAAmB,CAAC;EACnC;EACAA,mBAAmB,GAAG3\u002FE,UAAU,CAAC,YAAY;IAC3C2\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\u002FC,QAAQ,GAAG;cACf\u002FqC,MAAM,EAAEtX,MAAM;cACd6c,IAAI,EAAE,OAAO;cACb8\u002FB,YAAY,EAAEiyC,GAAG,KAAK,CAAC,IAAIA,GAAG,KAAK;YACrC,CAAC;YACD56E,QAAQ,CAACqD,QAAQ,CAAC,MAAM,EAAE;cAAE,GAAG3U,KAAK;cAAE,GAAG2\u002FC;YAAS,CAAC,CAAC;UACtD;UACAqsC,OAAO,GAAG,IAAI;QAChB;QACA;MACF,KAAK,EAAE;MACP,KAAK,GAAG;MACR,KAAK,GAAG;MACR,KAAK,GAAG;QACNlQ,oBAAoB,CAACpD,MAAM,CAAC,CAAC;QAC7BsT,OAAO,GAAG,IAAI;QACd;MACF,KAAK,GAAG;MACR,KAAK,GAAG;MACR,KAAK,GAAG;QACNlQ,oBAAoB,CAACnD,OAAO,CAAC,CAAC;QAC9BqT,OAAO,GAAG,IAAI;QACd;MACF,KAAK,EAAE;MACP,KAAK,EAAE;QACL,IAAI,CAACD,0BAA0B,EAAE;UAE\u002FB\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\u002FxE,QAAQ,CAACukD,cAAc,CAC\u002FC,0BACF,CAAC;MACDxqB,QAAQ,EAAE\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\",\"sources\":[\"webpack:\u002F\u002Fpdf.js\u002Fwebpack\u002Fbootstrap\",\"webpack:\u002F\u002Fpdf.js\u002Fwebpack\u002Fruntime\u002Fdefine property getters\",\"webpack:\u002F\u002Fpdf.js\u002Fwebpack\u002Fruntime\u002FhasOwnProperty shorthand\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fui_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fapp_options.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_link_service.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdfjs.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fevent_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fexternal_services.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpreferences.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Ftypes.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Fresolver.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Fscope.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Fbuiltins.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Fmemoizer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Fbundle.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Fresource.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Findex.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002F@fluent\u002Fdom\u002Fesm\u002Foverlay.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcached-iterable\u002Fsrc\u002Fcached_iterable.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcached-iterable\u002Fsrc\u002Fcached_sync_iterable.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcached-iterable\u002Fsrc\u002Fcached_async_iterable.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcached-iterable\u002Fsrc\u002Findex.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002F@fluent\u002Fdom\u002Fesm\u002Flocalization.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002F@fluent\u002Fdom\u002Fesm\u002Fdom_localization.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002F@fluent\u002Fdom\u002Fesm\u002Findex.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fl10n.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fgenericl10n.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fgeneric_scripting.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fgenericcom.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Falt_text_manager.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fannotation_editor_params.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fcaret_browsing.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fdownload_manager.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Foverlay_manager.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpassword_prompt.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fbase_tree_viewer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_attachment_viewer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fgrab_to_pan.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_cursor_tools.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_document_properties.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_find_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_find_controller.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_find_bar.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_history.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_layer_viewer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_outline_viewer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_presentation_mode.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fxfa_layer_builder.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fprint_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_print_service.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_rendering_queue.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_scripting_manager.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_sidebar.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_thumbnail_view.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_thumbnail_viewer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fannotation_editor_layer_builder.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fannotation_layer_builder.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fdraw_layer_builder.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fstruct_tree_layer_builder.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Ftext_accessibility.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Ftext_highlighter.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Ftext_layer_builder.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_page_view.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_viewer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fsecondary_toolbar.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Ftoolbar.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fview_history.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fapp.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fviewer.js\"],\"sourcesContent\":[\"\u002F\u002F The require scope\\nvar __webpack_require__ = {};\\n\\n\",\"\u002F\u002F define getter functions for harmony exports\\n__webpack_require__.d = (exports, definition) => {\\n\\tfor(var key in definition) {\\n\\t\\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\\n\\t\\t\\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\\n\\t\\t}\\n\\t}\\n};\",\"__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nconst DEFAULT_SCALE_VALUE = \\\"auto\\\";\\nconst DEFAULT_SCALE = 1.0;\\nconst DEFAULT_SCALE_DELTA = 1.1;\\nconst MIN_SCALE = 0.1;\\nconst MAX_SCALE = 10.0;\\nconst UNKNOWN_SCALE = 0;\\nconst MAX_AUTO_SCALE = 1.25;\\nconst SCROLLBAR_PADDING = 40;\\nconst VERTICAL_PADDING = 5;\\n\\nconst RenderingStates = {\\n  INITIAL: 0,\\n  RUNNING: 1,\\n  PAUSED: 2,\\n  FINISHED: 3,\\n};\\n\\nconst PresentationModeState = {\\n  UNKNOWN: 0,\\n  NORMAL: 1,\\n  CHANGING: 2,\\n  FULLSCREEN: 3,\\n};\\n\\nconst SidebarView = {\\n  UNKNOWN: -1,\\n  NONE: 0,\\n  THUMBS: 1, \u002F\u002F Default value.\\n  OUTLINE: 2,\\n  ATTACHMENTS: 3,\\n  LAYERS: 4,\\n};\\n\\nconst TextLayerMode = {\\n  DISABLE: 0,\\n  ENABLE: 1,\\n  ENABLE_PERMISSIONS: 2,\\n};\\n\\nconst ScrollMode = {\\n  UNKNOWN: -1,\\n  VERTICAL: 0, \u002F\u002F Default value.\\n  HORIZONTAL: 1,\\n  WRAPPED: 2,\\n  PAGE: 3,\\n};\\n\\nconst SpreadMode = {\\n  UNKNOWN: -1,\\n  NONE: 0, \u002F\u002F Default value.\\n  ODD: 1,\\n  EVEN: 2,\\n};\\n\\nconst CursorTool = {\\n  SELECT: 0, \u002F\u002F The default value.\\n  HAND: 1,\\n  ZOOM: 2,\\n};\\n\\n\u002F\u002F Used by `PDFViewerApplication`, and by the API unit-tests.\\nconst AutoPrintRegExp = \u002F\\\\bprint\\\\s*\\\\(\u002F;\\n\\n\u002F**\\n * Scale factors for the canvas, necessary with HiDPI displays.\\n *\u002F\\nclass OutputScale {\\n  constructor() {\\n    const pixelRatio = window.devicePixelRatio || 1;\\n\\n    \u002F**\\n     * @type {number} Horizontal scale.\\n     *\u002F\\n    this.sx = pixelRatio;\\n\\n    \u002F**\\n     * @type {number} Vertical scale.\\n     *\u002F\\n    this.sy = pixelRatio;\\n  }\\n\\n  \u002F**\\n   * @type {boolean} Returns `true` when scaling is required, `false` otherwise.\\n   *\u002F\\n  get scaled() {\\n    return this.sx !== 1 || this.sy !== 1;\\n  }\\n}\\n\\n\u002F**\\n * Scrolls specified element into view of its parent.\\n * @param {HTMLElement} element - The element to be visible.\\n * @param {Object} [spot] - An object with optional top and left properties,\\n *   specifying the offset from the top left edge.\\n * @param {number} [spot.left]\\n * @param {number} [spot.top]\\n * @param {boolean} [scrollMatches] - When scrolling search results into view,\\n *   ignore elements that either: Contains marked content identifiers,\\n *   or have the CSS-rule `overflow: hidden;` set. The default value is `false`.\\n *\u002F\\nfunction scrollIntoView(element, spot, scrollMatches = false) {\\n  \u002F\u002F Assuming offsetParent is available (it's not available when viewer is in\\n  \u002F\u002F hidden iframe or object). We have to scroll: if the offsetParent is not set\\n  \u002F\u002F producing the error. See also animationStarted.\\n  let parent = element.offsetParent;\\n  if (!parent) {\\n    console.error(\\\"offsetParent is not set -- cannot scroll\\\");\\n    return;\\n  }\\n  let offsetY = element.offsetTop + element.clientTop;\\n  let offsetX = element.offsetLeft + element.clientLeft;\\n  while (\\n    (parent.clientHeight === parent.scrollHeight &&\\n      parent.clientWidth === parent.scrollWidth) ||\\n    (scrollMatches &&\\n      (parent.classList.contains(\\\"markedContent\\\") ||\\n        getComputedStyle(parent).overflow === \\\"hidden\\\"))\\n  ) {\\n    offsetY += parent.offsetTop;\\n    offsetX += parent.offsetLeft;\\n\\n    parent = parent.offsetParent;\\n    if (!parent) {\\n      return; \u002F\u002F no need to scroll\\n    }\\n  }\\n  if (spot) {\\n    if (spot.top !== undefined) {\\n      offsetY += spot.top;\\n    }\\n    if (spot.left !== undefined) {\\n      offsetX += spot.left;\\n      parent.scrollLeft = offsetX;\\n    }\\n  }\\n  parent.scrollTop = offsetY;\\n}\\n\\n\u002F**\\n * Helper function to start monitoring the scroll event and converting them into\\n * PDF.js friendly one: with scroll debounce and scroll direction.\\n *\u002F\\nfunction watchScroll(viewAreaElement, callback) {\\n  const debounceScroll = function (evt) {\\n    if (rAF) {\\n      return;\\n    }\\n    \u002F\u002F schedule an invocation of scroll for next animation frame.\\n    rAF = window.requestAnimationFrame(function viewAreaElementScrolled() {\\n      rAF = null;\\n\\n      const currentX = viewAreaElement.scrollLeft;\\n      const lastX = state.lastX;\\n      if (currentX !== lastX) {\\n        state.right = currentX > lastX;\\n      }\\n      state.lastX = currentX;\\n      const currentY = viewAreaElement.scrollTop;\\n      const lastY = state.lastY;\\n      if (currentY !== lastY) {\\n        state.down = currentY > lastY;\\n      }\\n      state.lastY = currentY;\\n      callback(state);\\n    });\\n  };\\n\\n  const state = {\\n    right: true,\\n    down: true,\\n    lastX: viewAreaElement.scrollLeft,\\n    lastY: viewAreaElement.scrollTop,\\n    _eventHandler: debounceScroll,\\n  };\\n\\n  let rAF = null;\\n  viewAreaElement.addEventListener(\\\"scroll\\\", debounceScroll, true);\\n  return state;\\n}\\n\\n\u002F**\\n * Helper function to parse query string (e.g. ?param1=value&param2=...).\\n * @param {string} query\\n * @returns {Map}\\n *\u002F\\nfunction parseQueryString(query) {\\n  const params = new Map();\\n  for (const [key, value] of new URLSearchParams(query)) {\\n    params.set(key.toLowerCase(), value);\\n  }\\n  return params;\\n}\\n\\nconst InvisibleCharsRegExp = \u002F[\\\\x00-\\\\x1F]\u002Fg;\\n\\n\u002F**\\n * @param {string} str\\n * @param {boolean} [replaceInvisible]\\n *\u002F\\nfunction removeNullCharacters(str, replaceInvisible = false) {\\n  if (!InvisibleCharsRegExp.test(str)) {\\n    return str;\\n  }\\n  if (replaceInvisible) {\\n    return str.replaceAll(InvisibleCharsRegExp, m => (m === \\\"\\\\x00\\\" ? \\\"\\\" : \\\" \\\"));\\n  }\\n  return str.replaceAll(\\\"\\\\x00\\\", \\\"\\\");\\n}\\n\\n\u002F**\\n * Use binary search to find the index of the first item in a given array which\\n * passes a given condition. The items are expected to be sorted in the sense\\n * that if the condition is true for one item in the array, then it is also true\\n * for all following items.\\n *\\n * @returns {number} Index of the first array element to pass the test,\\n *                   or |items.length| if no such element exists.\\n *\u002F\\nfunction binarySearchFirstItem(items, condition, start = 0) {\\n  let minIndex = start;\\n  let maxIndex = items.length - 1;\\n\\n  if (maxIndex \u003C 0 || !condition(items[maxIndex])) {\\n    return items.length;\\n  }\\n  if (condition(items[minIndex])) {\\n    return minIndex;\\n  }\\n\\n  while (minIndex \u003C maxIndex) {\\n    const currentIndex = (minIndex + maxIndex) >> 1;\\n    const currentItem = items[currentIndex];\\n    if (condition(currentItem)) {\\n      maxIndex = currentIndex;\\n    } else {\\n      minIndex = currentIndex + 1;\\n    }\\n  }\\n  return minIndex; \u002F* === maxIndex *\u002F\\n}\\n\\n\u002F**\\n *  Approximates float number as a fraction using Farey sequence (max order\\n *  of 8).\\n *  @param {number} x - Positive float number.\\n *  @returns {Array} Estimated fraction: the first array item is a numerator,\\n *                   the second one is a denominator.\\n *\u002F\\nfunction approximateFraction(x) {\\n  \u002F\u002F Fast paths for int numbers or their inversions.\\n  if (Math.floor(x) === x) {\\n    return [x, 1];\\n  }\\n  const xinv = 1 \u002F x;\\n  const limit = 8;\\n  if (xinv > limit) {\\n    return [1, limit];\\n  } else if (Math.floor(xinv) === xinv) {\\n    return [1, xinv];\\n  }\\n\\n  const x_ = x > 1 ? xinv : x;\\n  \u002F\u002F a\u002Fb and c\u002Fd are neighbours in Farey sequence.\\n  let a = 0,\\n    b = 1,\\n    c = 1,\\n    d = 1;\\n  \u002F\u002F Limiting search to order 8.\\n  while (true) {\\n    \u002F\u002F Generating next term in sequence (order of q).\\n    const p = a + c,\\n      q = b + d;\\n    if (q > limit) {\\n      break;\\n    }\\n    if (x_ \u003C= p \u002F q) {\\n      c = p;\\n      d = q;\\n    } else {\\n      a = p;\\n      b = q;\\n    }\\n  }\\n  let result;\\n  \u002F\u002F Select closest of the neighbours to x.\\n  if (x_ - a \u002F b \u003C c \u002F d - x_) {\\n    result = x_ === x ? [a, b] : [b, a];\\n  } else {\\n    result = x_ === x ? [c, d] : [d, c];\\n  }\\n  return result;\\n}\\n\\nfunction roundToDivide(x, div) {\\n  const r = x % div;\\n  return r === 0 ? x : Math.round(x - r + div);\\n}\\n\\n\u002F**\\n * @typedef {Object} GetPageSizeInchesParameters\\n * @property {number[]} view\\n * @property {number} userUnit\\n * @property {number} rotate\\n *\u002F\\n\\n\u002F**\\n * @typedef {Object} PageSize\\n * @property {number} width - In inches.\\n * @property {number} height - In inches.\\n *\u002F\\n\\n\u002F**\\n * Gets the size of the specified page, converted from PDF units to inches.\\n * @param {GetPageSizeInchesParameters} params\\n * @returns {PageSize}\\n *\u002F\\nfunction getPageSizeInches({ view, userUnit, rotate }) {\\n  const [x1, y1, x2, y2] = view;\\n  \u002F\u002F We need to take the page rotation into account as well.\\n  const changeOrientation = rotate % 180 !== 0;\\n\\n  const width = ((x2 - x1) \u002F 72) * userUnit;\\n  const height = ((y2 - y1) \u002F 72) * userUnit;\\n\\n  return {\\n    width: changeOrientation ? height : width,\\n    height: changeOrientation ? width : height,\\n  };\\n}\\n\\n\u002F**\\n * Helper function for getVisibleElements.\\n *\\n * @param {number} index - initial guess at the first visible element\\n * @param {Array} views - array of pages, into which `index` is an index\\n * @param {number} top - the top of the scroll pane\\n * @returns {number} less than or equal to `index` that is definitely at or\\n *   before the first visible element in `views`, but not by too much. (Usually,\\n *   this will be the first element in the first partially visible row in\\n *   `views`, although sometimes it goes back one row further.)\\n *\u002F\\nfunction backtrackBeforeAllVisibleElements(index, views, top) {\\n  \u002F\u002F binarySearchFirstItem's assumption is that the input is ordered, with only\\n  \u002F\u002F one index where the conditions flips from false to true: [false ...,\\n  \u002F\u002F true...]. With vertical scrolling and spreads, it is possible to have\\n  \u002F\u002F [false ..., true, false, true ...]. With wrapped scrolling we can have a\\n  \u002F\u002F similar sequence, with many more mixed true and false in the middle.\\n  \u002F\u002F\\n  \u002F\u002F So there is no guarantee that the binary search yields the index of the\\n  \u002F\u002F first visible element. It could have been any of the other visible elements\\n  \u002F\u002F that were preceded by a hidden element.\\n\\n  \u002F\u002F Of course, if either this element or the previous (hidden) element is also\\n  \u002F\u002F the first element, there's nothing to worry about.\\n  if (index \u003C 2) {\\n    return index;\\n  }\\n\\n  \u002F\u002F That aside, the possible cases are represented below.\\n  \u002F\u002F\\n  \u002F\u002F     ****  = fully hidden\\n  \u002F\u002F     A*B*  = mix of partially visible and\u002For hidden pages\\n  \u002F\u002F     CDEF  = fully visible\\n  \u002F\u002F\\n  \u002F\u002F (1) Binary search could have returned A, in which case we can stop.\\n  \u002F\u002F (2) Binary search could also have returned B, in which case we need to\\n  \u002F\u002F check the whole row.\\n  \u002F\u002F (3) Binary search could also have returned C, in which case we need to\\n  \u002F\u002F check the whole previous row.\\n  \u002F\u002F\\n  \u002F\u002F There's one other possibility:\\n  \u002F\u002F\\n  \u002F\u002F     ****  = fully hidden\\n  \u002F\u002F     ABCD  = mix of fully and\u002For partially visible pages\\n  \u002F\u002F\\n  \u002F\u002F (4) Binary search could only have returned A.\\n\\n  \u002F\u002F Initially assume that we need to find the beginning of the current row\\n  \u002F\u002F (case 1, 2, or 4), which means finding a page that is above the current\\n  \u002F\u002F page's top. If the found page is partially visible, we're definitely not in\\n  \u002F\u002F case 3, and this assumption is correct.\\n  let elt = views[index].div;\\n  let pageTop = elt.offsetTop + elt.clientTop;\\n\\n  if (pageTop >= top) {\\n    \u002F\u002F The found page is fully visible, so we're actually either in case 3 or 4,\\n    \u002F\u002F and unfortunately we can't tell the difference between them without\\n    \u002F\u002F scanning the entire previous row, so we just conservatively assume that\\n    \u002F\u002F we do need to backtrack to that row. In both cases, the previous page is\\n    \u002F\u002F in the previous row, so use its top instead.\\n    elt = views[index - 1].div;\\n    pageTop = elt.offsetTop + elt.clientTop;\\n  }\\n\\n  \u002F\u002F Now we backtrack to the first page that still has its bottom below\\n  \u002F\u002F `pageTop`, which is the top of a page in the first visible row (unless\\n  \u002F\u002F we're in case 4, in which case it's the row before that).\\n  \u002F\u002F `index` is found by binary search, so the page at `index - 1` is\\n  \u002F\u002F invisible and we can start looking for potentially visible pages from\\n  \u002F\u002F `index - 2`. (However, if this loop terminates on its first iteration,\\n  \u002F\u002F which is the case when pages are stacked vertically, `index` should remain\\n  \u002F\u002F unchanged, so we use a distinct loop variable.)\\n  for (let i = index - 2; i >= 0; --i) {\\n    elt = views[i].div;\\n    if (elt.offsetTop + elt.clientTop + elt.clientHeight \u003C= pageTop) {\\n      \u002F\u002F We have reached the previous row, so stop now.\\n      \u002F\u002F This loop is expected to terminate relatively quickly because the\\n      \u002F\u002F number of pages per row is expected to be small.\\n      break;\\n    }\\n    index = i;\\n  }\\n  return index;\\n}\\n\\n\u002F**\\n * @typedef {Object} GetVisibleElementsParameters\\n * @property {HTMLElement} scrollEl - A container that can possibly scroll.\\n * @property {Array} views - Objects with a `div` property that contains an\\n *   HTMLElement, which should all be descendants of `scrollEl` satisfying the\\n *   relevant layout assumptions.\\n * @property {boolean} sortByVisibility - If `true`, the returned elements are\\n *   sorted in descending order of the percent of their padding box that is\\n *   visible. The default value is `false`.\\n * @property {boolean} horizontal - If `true`, the elements are assumed to be\\n *   laid out horizontally instead of vertically. The default value is `false`.\\n * @property {boolean} rtl - If `true`, the `scrollEl` container is assumed to\\n *   be in right-to-left mode. The default value is `false`.\\n *\u002F\\n\\n\u002F**\\n * Generic helper to find out what elements are visible within a scroll pane.\\n *\\n * Well, pretty generic. There are some assumptions placed on the elements\\n * referenced by `views`:\\n *   - If `horizontal`, no left of any earlier element is to the right of the\\n *     left of any later element.\\n *   - Otherwise, `views` can be split into contiguous rows where, within a row,\\n *     no top of any element is below the bottom of any other element, and\\n *     between rows, no bottom of any element in an earlier row is below the\\n *     top of any element in a later row.\\n *\\n * (Here, top, left, etc. all refer to the padding edge of the element in\\n * question. For pages, that ends up being equivalent to the bounding box of the\\n * rendering canvas. Earlier and later refer to index in `views`, not page\\n * layout.)\\n *\\n * @param {GetVisibleElementsParameters} params\\n * @returns {Object} `{ first, last, views: [{ id, x, y, view, percent }] }`\\n *\u002F\\nfunction getVisibleElements({\\n  scrollEl,\\n  views,\\n  sortByVisibility = false,\\n  horizontal = false,\\n  rtl = false,\\n}) {\\n  const top = scrollEl.scrollTop,\\n    bottom = top + scrollEl.clientHeight;\\n  const left = scrollEl.scrollLeft,\\n    right = left + scrollEl.clientWidth;\\n\\n  \u002F\u002F Throughout this \\\"generic\\\" function, comments will assume we're working with\\n  \u002F\u002F PDF document pages, which is the most important and complex case. In this\\n  \u002F\u002F case, the visible elements we're actually interested is the page canvas,\\n  \u002F\u002F which is contained in a wrapper which adds no padding\u002Fborder\u002Fmargin, which\\n  \u002F\u002F is itself contained in `view.div` which adds no padding (but does add a\\n  \u002F\u002F border). So, as specified in this function's doc comment, this function\\n  \u002F\u002F does all of its work on the padding edge of the provided views, starting at\\n  \u002F\u002F offsetLeft\u002FTop (which includes margin) and adding clientLeft\u002FTop (which is\\n  \u002F\u002F the border). Adding clientWidth\u002FHeight gets us the bottom-right corner of\\n  \u002F\u002F the padding edge.\\n  function isElementBottomAfterViewTop(view) {\\n    const element = view.div;\\n    const elementBottom =\\n      element.offsetTop + element.clientTop + element.clientHeight;\\n    return elementBottom > top;\\n  }\\n  function isElementNextAfterViewHorizontally(view) {\\n    const element = view.div;\\n    const elementLeft = element.offsetLeft + element.clientLeft;\\n    const elementRight = elementLeft + element.clientWidth;\\n    return rtl ? elementLeft \u003C right : elementRight > left;\\n  }\\n\\n  const visible = [],\\n    ids = new Set(),\\n    numViews = views.length;\\n  let firstVisibleElementInd = binarySearchFirstItem(\\n    views,\\n    horizontal\\n      ? isElementNextAfterViewHorizontally\\n      : isElementBottomAfterViewTop\\n  );\\n\\n  \u002F\u002F Please note the return value of the `binarySearchFirstItem` function when\\n  \u002F\u002F no valid element is found (hence the `firstVisibleElementInd` check below).\\n  if (\\n    firstVisibleElementInd > 0 &&\\n    firstVisibleElementInd \u003C numViews &&\\n    !horizontal\\n  ) {\\n    \u002F\u002F In wrapped scrolling (or vertical scrolling with spreads), with some page\\n    \u002F\u002F sizes, isElementBottomAfterViewTop doesn't satisfy the binary search\\n    \u002F\u002F condition: there can be pages with bottoms above the view top between\\n    \u002F\u002F pages with bottoms below. This function detects and corrects that error;\\n    \u002F\u002F see it for more comments.\\n    firstVisibleElementInd = backtrackBeforeAllVisibleElements(\\n      firstVisibleElementInd,\\n      views,\\n      top\\n    );\\n  }\\n\\n  \u002F\u002F lastEdge acts as a cutoff for us to stop looping, because we know all\\n  \u002F\u002F subsequent pages will be hidden.\\n  \u002F\u002F\\n  \u002F\u002F When using wrapped scrolling or vertical scrolling with spreads, we can't\\n  \u002F\u002F simply stop the first time we reach a page below the bottom of the view;\\n  \u002F\u002F the tops of subsequent pages on the same row could still be visible. In\\n  \u002F\u002F horizontal scrolling, we don't have that issue, so we can stop as soon as\\n  \u002F\u002F we pass `right`, without needing the code below that handles the -1 case.\\n  let lastEdge = horizontal ? right : -1;\\n\\n  for (let i = firstVisibleElementInd; i \u003C numViews; i++) {\\n    const view = views[i],\\n      element = view.div;\\n    const currentWidth = element.offsetLeft + element.clientLeft;\\n    const currentHeight = element.offsetTop + element.clientTop;\\n    const viewWidth = element.clientWidth,\\n      viewHeight = element.clientHeight;\\n    const viewRight = currentWidth + viewWidth;\\n    const viewBottom = currentHeight + viewHeight;\\n\\n    if (lastEdge === -1) {\\n      \u002F\u002F As commented above, this is only needed in non-horizontal cases.\\n      \u002F\u002F Setting lastEdge to the bottom of the first page that is partially\\n      \u002F\u002F visible ensures that the next page fully below lastEdge is on the\\n      \u002F\u002F next row, which has to be fully hidden along with all subsequent rows.\\n      if (viewBottom >= bottom) {\\n        lastEdge = viewBottom;\\n      }\\n    } else if ((horizontal ? currentWidth : currentHeight) > lastEdge) {\\n      break;\\n    }\\n\\n    if (\\n      viewBottom \u003C= top ||\\n      currentHeight >= bottom ||\\n      viewRight \u003C= left ||\\n      currentWidth >= right\\n    ) {\\n      continue;\\n    }\\n\\n    const hiddenHeight =\\n      Math.max(0, top - currentHeight) + Math.max(0, viewBottom - bottom);\\n    const hiddenWidth =\\n      Math.max(0, left - currentWidth) + Math.max(0, viewRight - right);\\n\\n    const fractionHeight = (viewHeight - hiddenHeight) \u002F viewHeight,\\n      fractionWidth = (viewWidth - hiddenWidth) \u002F viewWidth;\\n    const percent = (fractionHeight * fractionWidth * 100) | 0;\\n\\n    visible.push({\\n      id: view.id,\\n      x: currentWidth,\\n      y: currentHeight,\\n      view,\\n      percent,\\n      widthPercent: (fractionWidth * 100) | 0,\\n    });\\n    ids.add(view.id);\\n  }\\n\\n  const first = visible[0],\\n    last = visible.at(-1);\\n\\n  if (sortByVisibility) {\\n    visible.sort(function (a, b) {\\n      const pc = a.percent - b.percent;\\n      if (Math.abs(pc) > 0.001) {\\n        return -pc;\\n      }\\n      return a.id - b.id; \u002F\u002F ensure stability\\n    });\\n  }\\n  return { first, last, views: visible, ids };\\n}\\n\\nfunction normalizeWheelEventDirection(evt) {\\n  let delta = Math.hypot(evt.deltaX, evt.deltaY);\\n  const angle = Math.atan2(evt.deltaY, evt.deltaX);\\n  if (-0.25 * Math.PI \u003C angle && angle \u003C 0.75 * Math.PI) {\\n    \u002F\u002F All that is left-up oriented has to change the sign.\\n    delta = -delta;\\n  }\\n  return delta;\\n}\\n\\nfunction normalizeWheelEventDelta(evt) {\\n  const deltaMode = evt.deltaMode; \u002F\u002F Avoid being affected by bug 1392460.\\n  let delta = normalizeWheelEventDirection(evt);\\n\\n  const MOUSE_PIXELS_PER_LINE = 30;\\n  const MOUSE_LINES_PER_PAGE = 30;\\n\\n  \u002F\u002F Converts delta to per-page units\\n  if (deltaMode === WheelEvent.DOM_DELTA_PIXEL) {\\n    delta \u002F= MOUSE_PIXELS_PER_LINE * MOUSE_LINES_PER_PAGE;\\n  } else if (deltaMode === WheelEvent.DOM_DELTA_LINE) {\\n    delta \u002F= MOUSE_LINES_PER_PAGE;\\n  }\\n  return delta;\\n}\\n\\nfunction isValidRotation(angle) {\\n  return Number.isInteger(angle) && angle % 90 === 0;\\n}\\n\\nfunction isValidScrollMode(mode) {\\n  return (\\n    Number.isInteger(mode) &&\\n    Object.values(ScrollMode).includes(mode) &&\\n    mode !== ScrollMode.UNKNOWN\\n  );\\n}\\n\\nfunction isValidSpreadMode(mode) {\\n  return (\\n    Number.isInteger(mode) &&\\n    Object.values(SpreadMode).includes(mode) &&\\n    mode !== SpreadMode.UNKNOWN\\n  );\\n}\\n\\nfunction isPortraitOrientation(size) {\\n  return size.width \u003C= size.height;\\n}\\n\\n\u002F**\\n * Promise that is resolved when DOM window becomes visible.\\n *\u002F\\nconst animationStarted = new Promise(function (resolve) {\\n  if (\\n    typeof PDFJSDev !== \\\"undefined\\\" &&\\n    PDFJSDev.test(\\\"LIB\\\") &&\\n    typeof window === \\\"undefined\\\"\\n  ) {\\n    \u002F\u002F Prevent \\\"ReferenceError: window is not defined\\\" errors when running the\\n    \u002F\u002F unit-tests in Node.js environments.\\n    setTimeout(resolve, 20);\\n    return;\\n  }\\n  window.requestAnimationFrame(resolve);\\n});\\n\\nconst docStyle =\\n  typeof PDFJSDev !== \\\"undefined\\\" &&\\n  PDFJSDev.test(\\\"LIB\\\") &&\\n  typeof document === \\\"undefined\\\"\\n    ? null\\n    : document.documentElement.style;\\n\\nfunction clamp(v, min, max) {\\n  return Math.min(Math.max(v, min), max);\\n}\\n\\nclass ProgressBar {\\n  #classList = null;\\n\\n  #disableAutoFetchTimeout = null;\\n\\n  #percent = 0;\\n\\n  #style = null;\\n\\n  #visible = true;\\n\\n  constructor(bar) {\\n    this.#classList = bar.classList;\\n    this.#style = bar.style;\\n  }\\n\\n  get percent() {\\n    return this.#percent;\\n  }\\n\\n  set percent(val) {\\n    this.#percent = clamp(val, 0, 100);\\n\\n    if (isNaN(val)) {\\n      this.#classList.add(\\\"indeterminate\\\");\\n      return;\\n    }\\n    this.#classList.remove(\\\"indeterminate\\\");\\n\\n    this.#style.setProperty(\\\"--progressBar-percent\\\", `${this.#percent}%`);\\n  }\\n\\n  setWidth(viewer) {\\n    if (!viewer) {\\n      return;\\n    }\\n    const container = viewer.parentNode;\\n    const scrollbarWidth = container.offsetWidth - viewer.offsetWidth;\\n    if (scrollbarWidth > 0) {\\n      this.#style.setProperty(\\n        \\\"--progressBar-end-offset\\\",\\n        `${scrollbarWidth}px`\\n      );\\n    }\\n  }\\n\\n  setDisableAutoFetch(delay = \u002F* ms = *\u002F 5000) {\\n    if (isNaN(this.#percent)) {\\n      return;\\n    }\\n    if (this.#disableAutoFetchTimeout) {\\n      clearTimeout(this.#disableAutoFetchTimeout);\\n    }\\n    this.show();\\n\\n    this.#disableAutoFetchTimeout = setTimeout(() => {\\n      this.#disableAutoFetchTimeout = null;\\n      this.hide();\\n    }, delay);\\n  }\\n\\n  hide() {\\n    if (!this.#visible) {\\n      return;\\n    }\\n    this.#visible = false;\\n    this.#classList.add(\\\"hidden\\\");\\n  }\\n\\n  show() {\\n    if (this.#visible) {\\n      return;\\n    }\\n    this.#visible = true;\\n    this.#classList.remove(\\\"hidden\\\");\\n  }\\n}\\n\\n\u002F**\\n * Get the active or focused element in current DOM.\\n *\\n * Recursively search for the truly active or focused element in case there are\\n * shadow DOMs.\\n *\\n * @returns {Element} the truly active or focused element.\\n *\u002F\\nfunction getActiveOrFocusedElement() {\\n  let curRoot = document;\\n  let curActiveOrFocused =\\n    curRoot.activeElement || curRoot.querySelector(\\\":focus\\\");\\n\\n  while (curActiveOrFocused?.shadowRoot) {\\n    curRoot = curActiveOrFocused.shadowRoot;\\n    curActiveOrFocused =\\n      curRoot.activeElement || curRoot.querySelector(\\\":focus\\\");\\n  }\\n\\n  return curActiveOrFocused;\\n}\\n\\n\u002F**\\n * Converts API PageLayout values to the format used by `BaseViewer`.\\n * @param {string} layout - The API PageLayout value.\\n * @returns {Object}\\n *\u002F\\nfunction apiPageLayoutToViewerModes(layout) {\\n  let scrollMode = ScrollMode.VERTICAL,\\n    spreadMode = SpreadMode.NONE;\\n\\n  switch (layout) {\\n    case \\\"SinglePage\\\":\\n      scrollMode = ScrollMode.PAGE;\\n      break;\\n    case \\\"OneColumn\\\":\\n      break;\\n    case \\\"TwoPageLeft\\\":\\n      scrollMode = ScrollMode.PAGE;\\n    \u002F* falls through *\u002F\\n    case \\\"TwoColumnLeft\\\":\\n      spreadMode = SpreadMode.ODD;\\n      break;\\n    case \\\"TwoPageRight\\\":\\n      scrollMode = ScrollMode.PAGE;\\n    \u002F* falls through *\u002F\\n    case \\\"TwoColumnRight\\\":\\n      spreadMode = SpreadMode.EVEN;\\n      break;\\n  }\\n  return { scrollMode, spreadMode };\\n}\\n\\n\u002F**\\n * Converts API PageMode values to the format used by `PDFSidebar`.\\n * NOTE: There's also a \\\"FullScreen\\\" parameter which is not possible to support,\\n *       since the Fullscreen API used in browsers requires that entering\\n *       fullscreen mode only occurs as a result of a user-initiated event.\\n * @param {string} mode - The API PageMode value.\\n * @returns {number} A value from {SidebarView}.\\n *\u002F\\nfunction apiPageModeToSidebarView(mode) {\\n  switch (mode) {\\n    case \\\"UseNone\\\":\\n      return SidebarView.NONE;\\n    case \\\"UseThumbs\\\":\\n      return SidebarView.THUMBS;\\n    case \\\"UseOutlines\\\":\\n      return SidebarView.OUTLINE;\\n    case \\\"UseAttachments\\\":\\n      return SidebarView.ATTACHMENTS;\\n    case \\\"UseOC\\\":\\n      return SidebarView.LAYERS;\\n  }\\n  return SidebarView.NONE; \u002F\u002F Default value.\\n}\\n\\nfunction toggleCheckedBtn(button, toggle, view = null) {\\n  button.classList.toggle(\\\"toggled\\\", toggle);\\n  button.setAttribute(\\\"aria-checked\\\", toggle);\\n\\n  view?.classList.toggle(\\\"hidden\\\", !toggle);\\n}\\n\\nfunction toggleExpandedBtn(button, toggle, view = null) {\\n  button.classList.toggle(\\\"toggled\\\", toggle);\\n  button.setAttribute(\\\"aria-expanded\\\", toggle);\\n\\n  view?.classList.toggle(\\\"hidden\\\", !toggle);\\n}\\n\\nexport {\\n  animationStarted,\\n  apiPageLayoutToViewerModes,\\n  apiPageModeToSidebarView,\\n  approximateFraction,\\n  AutoPrintRegExp,\\n  backtrackBeforeAllVisibleElements, \u002F\u002F only exported for testing\\n  binarySearchFirstItem,\\n  CursorTool,\\n  DEFAULT_SCALE,\\n  DEFAULT_SCALE_DELTA,\\n  DEFAULT_SCALE_VALUE,\\n  docStyle,\\n  getActiveOrFocusedElement,\\n  getPageSizeInches,\\n  getVisibleElements,\\n  isPortraitOrientation,\\n  isValidRotation,\\n  isValidScrollMode,\\n  isValidSpreadMode,\\n  MAX_AUTO_SCALE,\\n  MAX_SCALE,\\n  MIN_SCALE,\\n  normalizeWheelEventDelta,\\n  normalizeWheelEventDirection,\\n  OutputScale,\\n  parseQueryString,\\n  PresentationModeState,\\n  ProgressBar,\\n  removeNullCharacters,\\n  RenderingStates,\\n  roundToDivide,\\n  SCROLLBAR_PADDING,\\n  scrollIntoView,\\n  ScrollMode,\\n  SidebarView,\\n  SpreadMode,\\n  TextLayerMode,\\n  toggleCheckedBtn,\\n  toggleExpandedBtn,\\n  UNKNOWN_SCALE,\\n  VERTICAL_PADDING,\\n  watchScroll,\\n};\\n\",\"\u002F* Copyright 2018 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nif (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n  \u002F\u002F eslint-disable-next-line no-var\\n  var compatibilityParams = Object.create(null);\\n  if (\\n    typeof PDFJSDev !== \\\"undefined\\\" &&\\n    PDFJSDev.test(\\\"LIB\\\") &&\\n    typeof navigator === \\\"undefined\\\"\\n  ) {\\n    globalThis.navigator = Object.create(null);\\n  }\\n  const userAgent = navigator.userAgent || \\\"\\\";\\n  const platform = navigator.platform || \\\"\\\";\\n  const maxTouchPoints = navigator.maxTouchPoints || 1;\\n\\n  const isAndroid = \u002FAndroid\u002F.test(userAgent);\\n  const isIOS =\\n    \u002F\\\\b(iPad|iPhone|iPod)(?=;)\u002F.test(userAgent) ||\\n    (platform === \\\"MacIntel\\\" && maxTouchPoints > 1);\\n\\n  \u002F\u002F Limit canvas size to 5 mega-pixels on mobile.\\n  \u002F\u002F Support: Android, iOS\\n  (function checkCanvasSizeLimitation() {\\n    if (isIOS || isAndroid) {\\n      compatibilityParams.maxCanvasPixels = 5242880;\\n    }\\n  })();\\n}\\n\\nconst OptionKind = {\\n  BROWSER: 0x01,\\n  VIEWER: 0x02,\\n  API: 0x04,\\n  WORKER: 0x08,\\n  PREFERENCE: 0x80,\\n};\\n\\n\u002F**\\n * NOTE: These options are used to generate the `default_preferences.json` file,\\n *       see `OptionKind.PREFERENCE`, hence the values below must use only\\n *       primitive types and cannot rely on any imported types.\\n *\u002F\\nconst defaultOptions = {\\n  canvasMaxAreaInBytes: {\\n    \u002F** @type {number} *\u002F\\n    value: -1,\\n    kind: OptionKind.BROWSER + OptionKind.API,\\n  },\\n  isInAutomation: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.BROWSER,\\n  },\\n  supportsCaretBrowsingMode: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.BROWSER,\\n  },\\n  supportsDocumentFonts: {\\n    \u002F** @type {boolean} *\u002F\\n    value: true,\\n    kind: OptionKind.BROWSER,\\n  },\\n  supportsIntegratedFind: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.BROWSER,\\n  },\\n  supportsMouseWheelZoomCtrlKey: {\\n    \u002F** @type {boolean} *\u002F\\n    value: true,\\n    kind: OptionKind.BROWSER,\\n  },\\n  supportsMouseWheelZoomMetaKey: {\\n    \u002F** @type {boolean} *\u002F\\n    value: true,\\n    kind: OptionKind.BROWSER,\\n  },\\n  supportsPinchToZoom: {\\n    \u002F** @type {boolean} *\u002F\\n    value: true,\\n    kind: OptionKind.BROWSER,\\n  },\\n\\n  annotationEditorMode: {\\n    \u002F** @type {number} *\u002F\\n    value: 0,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  annotationMode: {\\n    \u002F** @type {number} *\u002F\\n    value: 2,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  cursorToolOnLoad: {\\n    \u002F** @type {number} *\u002F\\n    value: 0,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  debuggerSrc: {\\n    \u002F** @type {string} *\u002F\\n    value: \\\".\u002Fdebugger.js\\\",\\n    kind: OptionKind.VIEWER,\\n  },\\n  defaultZoomDelay: {\\n    \u002F** @type {number} *\u002F\\n    value: 400,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  defaultZoomValue: {\\n    \u002F** @type {string} *\u002F\\n    value: \\\"\\\",\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  disableHistory: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.VIEWER,\\n  },\\n  disablePageLabels: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  enableHighlightEditor: {\\n    \u002F\u002F We'll probably want to make some experiments before enabling this\\n    \u002F\u002F in Firefox release, but it has to be temporary.\\n    \u002F\u002F TODO: remove it when unnecessary.\\n    \u002F** @type {boolean} *\u002F\\n    value: typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\"),\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  enableHighlightFloatingButton: {\\n    \u002F\u002F We'll probably want to make some experiments before enabling this\\n    \u002F\u002F in Firefox release, but it has to be temporary.\\n    \u002F\u002F TODO: remove it when unnecessary.\\n    \u002F** @type {boolean} *\u002F\\n    value: typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\"),\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  enableML: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  enablePermissions: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  enablePrintAutoRotate: {\\n    \u002F** @type {boolean} *\u002F\\n    value: true,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  enableScripting: {\\n    \u002F** @type {boolean} *\u002F\\n    value: typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"CHROME\\\"),\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  enableStampEditor: {\\n    \u002F\u002F We'll probably want to make some experiments before enabling this\\n    \u002F\u002F in Firefox release, but it has to be temporary.\\n    \u002F\u002F TODO: remove it when unnecessary.\\n    \u002F** @type {boolean} *\u002F\\n    value: true,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  externalLinkRel: {\\n    \u002F** @type {string} *\u002F\\n    value: \\\"noopener noreferrer nofollow\\\",\\n    kind: OptionKind.VIEWER,\\n  },\\n  externalLinkTarget: {\\n    \u002F** @type {number} *\u002F\\n    value: 0,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  highlightEditorColors: {\\n    \u002F** @type {string} *\u002F\\n    value: \\\"yellow=#FFFF98,green=#53FFBC,blue=#80EBFF,pink=#FFCBE6,red=#FF4F5F\\\",\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  historyUpdateUrl: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  ignoreDestinationZoom: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  imageResourcesPath: {\\n    \u002F** @type {string} *\u002F\\n    value:\\n      typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")\\n        ? \\\"resource:\u002F\u002Fpdf.js\u002Fweb\u002Fimages\u002F\\\"\\n        : \\\".\u002Fimages\u002F\\\",\\n    kind: OptionKind.VIEWER,\\n  },\\n  maxCanvasPixels: {\\n    \u002F** @type {number} *\u002F\\n    value: 2 ** 25,\\n    kind: OptionKind.VIEWER,\\n  },\\n  forcePageColors: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  pageColorsBackground: {\\n    \u002F** @type {string} *\u002F\\n    value: \\\"Canvas\\\",\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  pageColorsForeground: {\\n    \u002F** @type {string} *\u002F\\n    value: \\\"CanvasText\\\",\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  pdfBugEnabled: {\\n    \u002F** @type {boolean} *\u002F\\n    value: typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\"),\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  printResolution: {\\n    \u002F** @type {number} *\u002F\\n    value: 150,\\n    kind: OptionKind.VIEWER,\\n  },\\n  sidebarViewOnLoad: {\\n    \u002F** @type {number} *\u002F\\n    value: -1,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  scrollModeOnLoad: {\\n    \u002F** @type {number} *\u002F\\n    value: -1,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  spreadModeOnLoad: {\\n    \u002F** @type {number} *\u002F\\n    value: -1,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  textLayerMode: {\\n    \u002F** @type {number} *\u002F\\n    value: 1,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  viewOnLoad: {\\n    \u002F** @type {boolean} *\u002F\\n    value: 0,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n\\n  cMapPacked: {\\n    \u002F** @type {boolean} *\u002F\\n    value: true,\\n    kind: OptionKind.API,\\n  },\\n  cMapUrl: {\\n    \u002F** @type {string} *\u002F\\n    value:\\n      \u002F\u002F eslint-disable-next-line no-nested-ternary\\n      typeof PDFJSDev === \\\"undefined\\\"\\n        ? \\\"..\u002Fexternal\u002Fbcmaps\u002F\\\"\\n        : PDFJSDev.test(\\\"MOZCENTRAL\\\")\\n          ? \\\"resource:\u002F\u002Fpdf.js\u002Fweb\u002Fcmaps\u002F\\\"\\n          : \\\"..\u002Fweb\u002Fcmaps\u002F\\\",\\n    kind: OptionKind.API,\\n  },\\n  disableAutoFetch: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.API + OptionKind.PREFERENCE,\\n  },\\n  disableFontFace: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.API + OptionKind.PREFERENCE,\\n  },\\n  disableRange: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.API + OptionKind.PREFERENCE,\\n  },\\n  disableStream: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.API + OptionKind.PREFERENCE,\\n  },\\n  docBaseUrl: {\\n    \u002F** @type {string} *\u002F\\n    value: \\\"\\\",\\n    kind: OptionKind.API,\\n  },\\n  enableXfa: {\\n    \u002F** @type {boolean} *\u002F\\n    value: true,\\n    kind: OptionKind.API + OptionKind.PREFERENCE,\\n  },\\n  fontExtraProperties: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.API,\\n  },\\n  isEvalSupported: {\\n    \u002F** @type {boolean} *\u002F\\n    value: true,\\n    kind: OptionKind.API,\\n  },\\n  isOffscreenCanvasSupported: {\\n    \u002F** @type {boolean} *\u002F\\n    value: true,\\n    kind: OptionKind.API,\\n  },\\n  maxImageSize: {\\n    \u002F** @type {number} *\u002F\\n    value: -1,\\n    kind: OptionKind.API,\\n  },\\n  pdfBug: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.API,\\n  },\\n  standardFontDataUrl: {\\n    \u002F** @type {string} *\u002F\\n    value:\\n      \u002F\u002F eslint-disable-next-line no-nested-ternary\\n      typeof PDFJSDev === \\\"undefined\\\"\\n        ? \\\"..\u002Fexternal\u002Fstandard_fonts\u002F\\\"\\n        : PDFJSDev.test(\\\"MOZCENTRAL\\\")\\n          ? \\\"resource:\u002F\u002Fpdf.js\u002Fweb\u002Fstandard_fonts\u002F\\\"\\n          : \\\"..\u002Fweb\u002Fstandard_fonts\u002F\\\",\\n    kind: OptionKind.API,\\n  },\\n  verbosity: {\\n    \u002F** @type {number} *\u002F\\n    value: 1,\\n    kind: OptionKind.API,\\n  },\\n\\n  workerPort: {\\n    \u002F** @type {Object} *\u002F\\n    value: null,\\n    kind: OptionKind.WORKER,\\n  },\\n  workerSrc: {\\n    \u002F** @type {string} *\u002F\\n    value:\\n      \u002F\u002F eslint-disable-next-line no-nested-ternary\\n      typeof PDFJSDev === \\\"undefined\\\"\\n        ? \\\"..\u002Fsrc\u002Fpdf.worker.js\\\"\\n        : PDFJSDev.test(\\\"MOZCENTRAL\\\")\\n          ? \\\"resource:\u002F\u002Fpdf.js\u002Fbuild\u002Fpdf.worker.js\\\"\\n          : \\\"..\u002Fbuild\u002Fpdf.worker.js\\\",\\n    kind: OptionKind.WORKER,\\n  },\\n};\\nif (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n  defaultOptions.defaultUrl = {\\n    \u002F** @type {string} *\u002F\\n    value:\\n      typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"CHROME\\\")\\n        ? \\\"\\\"\\n        : \\\"compressed.tracemonkey-pldi-09.pdf\\\",\\n    kind: OptionKind.VIEWER,\\n  };\\n  defaultOptions.sandboxBundleSrc = {\\n    \u002F** @type {string} *\u002F\\n    value:\\n      typeof PDFJSDev === \\\"undefined\\\"\\n        ? \\\"..\u002Fbuild\u002Fdev-sandbox\u002Fpdf.sandbox.js\\\"\\n        : \\\"..\u002Fbuild\u002Fpdf.sandbox.js\\\",\\n    kind: OptionKind.VIEWER,\\n  };\\n  defaultOptions.viewerCssTheme = {\\n    \u002F** @type {number} *\u002F\\n    value: typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"CHROME\\\") ? 2 : 0,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  };\\n}\\nif (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n  defaultOptions.disablePreferences = {\\n    \u002F** @type {boolean} *\u002F\\n    value: typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING\\\"),\\n    kind: OptionKind.VIEWER,\\n  };\\n  defaultOptions.locale = {\\n    \u002F** @type {string} *\u002F\\n    value: navigator.language || \\\"en-US\\\",\\n    kind: OptionKind.VIEWER,\\n  };\\n} else if (PDFJSDev.test(\\\"CHROME\\\")) {\\n  defaultOptions.disableTelemetry = {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  };\\n}\\n\\nconst userOptions = Object.create(null);\\n\\nif (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n  \u002F\u002F Apply any compatibility-values to the user-options,\\n  \u002F\u002F see also `AppOptions.remove` below.\\n  for (const name in compatibilityParams) {\\n    userOptions[name] = compatibilityParams[name];\\n  }\\n}\\n\\nif (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING || LIB\\\")) {\\n  \u002F\u002F Ensure that the `defaultOptions` are correctly specified.\\n  for (const name in defaultOptions) {\\n    const { value, kind } = defaultOptions[name];\\n\\n    if (kind & OptionKind.PREFERENCE) {\\n      if (kind === OptionKind.PREFERENCE) {\\n        throw new Error(`Cannot use only \\\"PREFERENCE\\\" kind: ${name}`);\\n      }\\n      if (kind & OptionKind.BROWSER) {\\n        throw new Error(`Cannot mix \\\"PREFERENCE\\\" and \\\"BROWSER\\\" kind: ${name}`);\\n      }\\n      if (\\n        typeof compatibilityParams === \\\"object\\\" &&\\n        compatibilityParams[name] !== undefined\\n      ) {\\n        throw new Error(\\n          `Should not have compatibility-value for \\\"PREFERENCE\\\" kind: ${name}`\\n        );\\n      }\\n      \u002F\u002F Only \\\"simple\\\" preference-values are allowed.\\n      if (\\n        typeof value !== \\\"boolean\\\" &&\\n        typeof value !== \\\"string\\\" &&\\n        !Number.isInteger(value)\\n      ) {\\n        throw new Error(`Invalid value for \\\"PREFERENCE\\\" kind: ${name}`);\\n      }\\n    }\\n  }\\n}\\n\\nclass AppOptions {\\n  constructor() {\\n    throw new Error(\\\"Cannot initialize AppOptions.\\\");\\n  }\\n\\n  static get(name) {\\n    return userOptions[name] ?? defaultOptions[name]?.value ?? undefined;\\n  }\\n\\n  static getAll(kind = null, defaultOnly = false) {\\n    const options = Object.create(null);\\n    for (const name in defaultOptions) {\\n      const defaultOption = defaultOptions[name];\\n\\n      if (kind && !(kind & defaultOption.kind)) {\\n        continue;\\n      }\\n      options[name] = defaultOnly\\n        ? defaultOption.value\\n        : userOptions[name] ?? defaultOption.value;\\n    }\\n    return options;\\n  }\\n\\n  static set(name, value) {\\n    userOptions[name] = value;\\n  }\\n\\n  static setAll(options, init = false) {\\n    if ((typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) && init) {\\n      if (this.get(\\\"disablePreferences\\\")) {\\n        \u002F\u002F Give custom implementations of the default viewer a simpler way to\\n        \u002F\u002F opt-out of having the `Preferences` override existing `AppOptions`.\\n        return;\\n      }\\n      for (const name in userOptions) {\\n        \u002F\u002F Ignore any compatibility-values in the user-options.\\n        if (compatibilityParams[name] !== undefined) {\\n          continue;\\n        }\\n        console.warn(\\n          \\\"setAll: The Preferences may override manually set AppOptions; \\\" +\\n            'please use the \\\"disablePreferences\\\"-option in order to prevent that.'\\n        );\\n        break;\\n      }\\n    }\\n\\n    for (const name in options) {\\n      userOptions[name] = options[name];\\n    }\\n  }\\n\\n  static remove(name) {\\n    delete userOptions[name];\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      \u002F\u002F Re-apply a compatibility-value, if it exists, to the user-options.\\n      const val = compatibilityParams[name];\\n      if (val !== undefined) {\\n        userOptions[name] = val;\\n      }\\n    }\\n  }\\n}\\n\\nexport { AppOptions, OptionKind };\\n\",\"\u002F* Copyright 2015 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fevent_utils\\\").EventBus} EventBus *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IPDFLinkService} IPDFLinkService *\u002F\\n\\nimport { parseQueryString } from \\\".\u002Fui_utils.js\\\";\\n\\nconst DEFAULT_LINK_REL = \\\"noopener noreferrer nofollow\\\";\\n\\nconst LinkTarget = {\\n  NONE: 0, \u002F\u002F Default value.\\n  SELF: 1,\\n  BLANK: 2,\\n  PARENT: 3,\\n  TOP: 4,\\n};\\n\\n\u002F**\\n * @typedef {Object} PDFLinkServiceOptions\\n * @property {EventBus} eventBus - The application event bus.\\n * @property {number} [externalLinkTarget] - Specifies the `target` attribute\\n *   for external links. Must use one of the values from {LinkTarget}.\\n *   Defaults to using no target.\\n * @property {string} [externalLinkRel] - Specifies the `rel` attribute for\\n *   external links. Defaults to stripping the referrer.\\n * @property {boolean} [ignoreDestinationZoom] - Ignores the zoom argument,\\n *   thus preserving the current zoom level in the viewer, when navigating\\n *   to internal destinations. The default value is `false`.\\n *\u002F\\n\\n\u002F**\\n * Performs navigation functions inside PDF, such as opening specified page,\\n * or destination.\\n * @implements {IPDFLinkService}\\n *\u002F\\nclass PDFLinkService {\\n  externalLinkEnabled = true;\\n\\n  \u002F**\\n   * @param {PDFLinkServiceOptions} options\\n   *\u002F\\n  constructor({\\n    eventBus,\\n    externalLinkTarget = null,\\n    externalLinkRel = null,\\n    ignoreDestinationZoom = false,\\n  } = {}) {\\n    this.eventBus = eventBus;\\n    this.externalLinkTarget = externalLinkTarget;\\n    this.externalLinkRel = externalLinkRel;\\n    this._ignoreDestinationZoom = ignoreDestinationZoom;\\n\\n    this.baseUrl = null;\\n    this.pdfDocument = null;\\n    this.pdfViewer = null;\\n    this.pdfHistory = null;\\n  }\\n\\n  setDocument(pdfDocument, baseUrl = null) {\\n    this.baseUrl = baseUrl;\\n    this.pdfDocument = pdfDocument;\\n  }\\n\\n  setViewer(pdfViewer) {\\n    this.pdfViewer = pdfViewer;\\n  }\\n\\n  setHistory(pdfHistory) {\\n    this.pdfHistory = pdfHistory;\\n  }\\n\\n  \u002F**\\n   * @type {number}\\n   *\u002F\\n  get pagesCount() {\\n    return this.pdfDocument ? this.pdfDocument.numPages : 0;\\n  }\\n\\n  \u002F**\\n   * @type {number}\\n   *\u002F\\n  get page() {\\n    return this.pdfDocument ? this.pdfViewer.currentPageNumber : 1;\\n  }\\n\\n  \u002F**\\n   * @param {number} value\\n   *\u002F\\n  set page(value) {\\n    if (this.pdfDocument) {\\n      this.pdfViewer.currentPageNumber = value;\\n    }\\n  }\\n\\n  \u002F**\\n   * @type {number}\\n   *\u002F\\n  get rotation() {\\n    return this.pdfDocument ? this.pdfViewer.pagesRotation : 0;\\n  }\\n\\n  \u002F**\\n   * @param {number} value\\n   *\u002F\\n  set rotation(value) {\\n    if (this.pdfDocument) {\\n      this.pdfViewer.pagesRotation = value;\\n    }\\n  }\\n\\n  \u002F**\\n   * @type {boolean}\\n   *\u002F\\n  get isInPresentationMode() {\\n    return this.pdfDocument ? this.pdfViewer.isInPresentationMode : false;\\n  }\\n\\n  \u002F**\\n   * This method will, when available, also update the browser history.\\n   *\\n   * @param {string|Array} dest - The named, or explicit, PDF destination.\\n   *\u002F\\n  async goToDestination(dest) {\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    let namedDest, explicitDest, pageNumber;\\n    if (typeof dest === \\\"string\\\") {\\n      namedDest = dest;\\n      explicitDest = await this.pdfDocument.getDestination(dest);\\n    } else {\\n      namedDest = null;\\n      explicitDest = await dest;\\n    }\\n    if (!Array.isArray(explicitDest)) {\\n      console.error(\\n        `goToDestination: \\\"${explicitDest}\\\" is not a valid destination array, for dest=\\\"${dest}\\\".`\\n      );\\n      return;\\n    }\\n    \u002F\u002F Dest array looks like that: \u003Cpage-ref> \u003C\u002FXYZ|\u002FFitXXX> \u003Cargs..>\\n    const [destRef] = explicitDest;\\n\\n    if (destRef && typeof destRef === \\\"object\\\") {\\n      pageNumber = this.pdfDocument.cachedPageNumber(destRef);\\n\\n      if (!pageNumber) {\\n        \u002F\u002F Fetch the page reference if it's not yet available. This could\\n        \u002F\u002F only occur during loading, before all pages have been resolved.\\n        try {\\n          pageNumber = (await this.pdfDocument.getPageIndex(destRef)) + 1;\\n        } catch {\\n          console.error(\\n            `goToDestination: \\\"${destRef}\\\" is not a valid page reference, for dest=\\\"${dest}\\\".`\\n          );\\n          return;\\n        }\\n      }\\n    } else if (Number.isInteger(destRef)) {\\n      pageNumber = destRef + 1;\\n    }\\n    if (!pageNumber || pageNumber \u003C 1 || pageNumber > this.pagesCount) {\\n      console.error(\\n        `goToDestination: \\\"${pageNumber}\\\" is not a valid page number, for dest=\\\"${dest}\\\".`\\n      );\\n      return;\\n    }\\n\\n    if (this.pdfHistory) {\\n      \u002F\u002F Update the browser history before scrolling the new destination into\\n      \u002F\u002F view, to be able to accurately capture the current document position.\\n      this.pdfHistory.pushCurrentPosition();\\n      this.pdfHistory.push({ namedDest, explicitDest, pageNumber });\\n    }\\n\\n    this.pdfViewer.scrollPageIntoView({\\n      pageNumber,\\n      destArray: explicitDest,\\n      ignoreDestinationZoom: this._ignoreDestinationZoom,\\n    });\\n  }\\n\\n  \u002F**\\n   * This method will, when available, also update the browser history.\\n   *\\n   * @param {number|string} val - The page number, or page label.\\n   *\u002F\\n  goToPage(val) {\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    const pageNumber =\\n      (typeof val === \\\"string\\\" && this.pdfViewer.pageLabelToPageNumber(val)) ||\\n      val | 0;\\n    if (\\n      !(\\n        Number.isInteger(pageNumber) &&\\n        pageNumber > 0 &&\\n        pageNumber \u003C= this.pagesCount\\n      )\\n    ) {\\n      console.error(`PDFLinkService.goToPage: \\\"${val}\\\" is not a valid page.`);\\n      return;\\n    }\\n\\n    if (this.pdfHistory) {\\n      \u002F\u002F Update the browser history before scrolling the new page into view,\\n      \u002F\u002F to be able to accurately capture the current document position.\\n      this.pdfHistory.pushCurrentPosition();\\n      this.pdfHistory.pushPage(pageNumber);\\n    }\\n\\n    this.pdfViewer.scrollPageIntoView({ pageNumber });\\n  }\\n\\n  \u002F**\\n   * Adds various attributes (href, title, target, rel) to hyperlinks.\\n   * @param {HTMLAnchorElement} link\\n   * @param {string} url\\n   * @param {boolean} [newWindow]\\n   *\u002F\\n  addLinkAttributes(link, url, newWindow = false) {\\n    if (!url || typeof url !== \\\"string\\\") {\\n      throw new Error('A valid \\\"url\\\" parameter must provided.');\\n    }\\n    const target = newWindow ? LinkTarget.BLANK : this.externalLinkTarget,\\n      rel = this.externalLinkRel;\\n\\n    if (this.externalLinkEnabled) {\\n      link.href = link.title = url;\\n    } else {\\n      link.href = \\\"\\\";\\n      link.title = `Disabled: ${url}`;\\n      link.onclick = () => false;\\n    }\\n\\n    let targetStr = \\\"\\\"; \u002F\u002F LinkTarget.NONE\\n    switch (target) {\\n      case LinkTarget.NONE:\\n        break;\\n      case LinkTarget.SELF:\\n        targetStr = \\\"_self\\\";\\n        break;\\n      case LinkTarget.BLANK:\\n        targetStr = \\\"_blank\\\";\\n        break;\\n      case LinkTarget.PARENT:\\n        targetStr = \\\"_parent\\\";\\n        break;\\n      case LinkTarget.TOP:\\n        targetStr = \\\"_top\\\";\\n        break;\\n    }\\n    link.target = targetStr;\\n\\n    link.rel = typeof rel === \\\"string\\\" ? rel : DEFAULT_LINK_REL;\\n  }\\n\\n  \u002F**\\n   * @param {string|Array} dest - The PDF destination object.\\n   * @returns {string} The hyperlink to the PDF object.\\n   *\u002F\\n  getDestinationHash(dest) {\\n    if (typeof dest === \\\"string\\\") {\\n      if (dest.length > 0) {\\n        return this.getAnchorUrl(\\\"#\\\" + escape(dest));\\n      }\\n    } else if (Array.isArray(dest)) {\\n      const str = JSON.stringify(dest);\\n      if (str.length > 0) {\\n        return this.getAnchorUrl(\\\"#\\\" + escape(str));\\n      }\\n    }\\n    return this.getAnchorUrl(\\\"\\\");\\n  }\\n\\n  \u002F**\\n   * Prefix the full url on anchor links to make sure that links are resolved\\n   * relative to the current URL instead of the one defined in \u003Cbase href>.\\n   * @param {string} anchor - The anchor hash, including the #.\\n   * @returns {string} The hyperlink to the PDF object.\\n   *\u002F\\n  getAnchorUrl(anchor) {\\n    return this.baseUrl ? this.baseUrl + anchor : anchor;\\n  }\\n\\n  \u002F**\\n   * @param {string} hash\\n   *\u002F\\n  setHash(hash) {\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    let pageNumber, dest;\\n    if (hash.includes(\\\"=\\\")) {\\n      const params = parseQueryString(hash);\\n      if (params.has(\\\"search\\\")) {\\n        const query = params.get(\\\"search\\\").replaceAll('\\\"', \\\"\\\"),\\n          phrase = params.get(\\\"phrase\\\") === \\\"true\\\";\\n\\n        this.eventBus.dispatch(\\\"findfromurlhash\\\", {\\n          source: this,\\n          query: phrase ? query : query.match(\u002F\\\\S+\u002Fg),\\n        });\\n      }\\n      \u002F\u002F borrowing syntax from \\\"Parameters for Opening PDF Files\\\"\\n      if (params.has(\\\"page\\\")) {\\n        pageNumber = params.get(\\\"page\\\") | 0 || 1;\\n      }\\n      if (params.has(\\\"zoom\\\")) {\\n        \u002F\u002F Build the destination array.\\n        const zoomArgs = params.get(\\\"zoom\\\").split(\\\",\\\"); \u002F\u002F scale,left,top\\n        const zoomArg = zoomArgs[0];\\n        const zoomArgNumber = parseFloat(zoomArg);\\n\\n        if (!zoomArg.includes(\\\"Fit\\\")) {\\n          \u002F\u002F If the zoomArg is a number, it has to get divided by 100. If it's\\n          \u002F\u002F a string, it should stay as it is.\\n          dest = [\\n            null,\\n            { name: \\\"XYZ\\\" },\\n            zoomArgs.length > 1 ? zoomArgs[1] | 0 : null,\\n            zoomArgs.length > 2 ? zoomArgs[2] | 0 : null,\\n            zoomArgNumber ? zoomArgNumber \u002F 100 : zoomArg,\\n          ];\\n        } else if (zoomArg === \\\"Fit\\\" || zoomArg === \\\"FitB\\\") {\\n          dest = [null, { name: zoomArg }];\\n        } else if (\\n          zoomArg === \\\"FitH\\\" ||\\n          zoomArg === \\\"FitBH\\\" ||\\n          zoomArg === \\\"FitV\\\" ||\\n          zoomArg === \\\"FitBV\\\"\\n        ) {\\n          dest = [\\n            null,\\n            { name: zoomArg },\\n            zoomArgs.length > 1 ? zoomArgs[1] | 0 : null,\\n          ];\\n        } else if (zoomArg === \\\"FitR\\\") {\\n          if (zoomArgs.length !== 5) {\\n            console.error(\\n              'PDFLinkService.setHash: Not enough parameters for \\\"FitR\\\".'\\n            );\\n          } else {\\n            dest = [\\n              null,\\n              { name: zoomArg },\\n              zoomArgs[1] | 0,\\n              zoomArgs[2] | 0,\\n              zoomArgs[3] | 0,\\n              zoomArgs[4] | 0,\\n            ];\\n          }\\n        } else {\\n          console.error(\\n            `PDFLinkService.setHash: \\\"${zoomArg}\\\" is not a valid zoom value.`\\n          );\\n        }\\n      }\\n      if (dest) {\\n        this.pdfViewer.scrollPageIntoView({\\n          pageNumber: pageNumber || this.page,\\n          destArray: dest,\\n          allowNegativeOffset: true,\\n        });\\n      } else if (pageNumber) {\\n        this.page = pageNumber; \u002F\u002F simple page\\n      }\\n      if (params.has(\\\"pagemode\\\")) {\\n        this.eventBus.dispatch(\\\"pagemode\\\", {\\n          source: this,\\n          mode: params.get(\\\"pagemode\\\"),\\n        });\\n      }\\n      \u002F\u002F Ensure that this parameter is *always* handled last, in order to\\n      \u002F\u002F guarantee that it won't be overridden (e.g. by the \\\"page\\\" parameter).\\n      if (params.has(\\\"nameddest\\\")) {\\n        this.goToDestination(params.get(\\\"nameddest\\\"));\\n      }\\n\\n      if (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n        return;\\n      }\\n      \u002F\u002F Support opening of PDF attachments in the Firefox PDF Viewer,\\n      \u002F\u002F which uses a couple of non-standard hash parameters; refer to\\n      \u002F\u002F `DownloadManager.openOrDownloadData` in the firefoxcom.js file.\\n      if (!params.has(\\\"filename\\\") || !params.has(\\\"filedest\\\")) {\\n        return;\\n      }\\n      hash = params.get(\\\"filedest\\\");\\n    }\\n\\n    \u002F\u002F Named (or explicit) destination.\\n    dest = unescape(hash);\\n    try {\\n      dest = JSON.parse(dest);\\n\\n      if (!Array.isArray(dest)) {\\n        \u002F\u002F Avoid incorrectly rejecting a valid named destination, such as\\n        \u002F\u002F e.g. \\\"4.3\\\" or \\\"true\\\", because `JSON.parse` converted its type.\\n        dest = dest.toString();\\n      }\\n    } catch {}\\n\\n    if (typeof dest === \\\"string\\\" || PDFLinkService.#isValidExplicitDest(dest)) {\\n      this.goToDestination(dest);\\n      return;\\n    }\\n    console.error(\\n      `PDFLinkService.setHash: \\\"${unescape(hash)}\\\" is not a valid destination.`\\n    );\\n  }\\n\\n  \u002F**\\n   * @param {string} action\\n   *\u002F\\n  executeNamedAction(action) {\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    \u002F\u002F See PDF reference, table 8.45 - Named action\\n    switch (action) {\\n      case \\\"GoBack\\\":\\n        this.pdfHistory?.back();\\n        break;\\n\\n      case \\\"GoForward\\\":\\n        this.pdfHistory?.forward();\\n        break;\\n\\n      case \\\"NextPage\\\":\\n        this.pdfViewer.nextPage();\\n        break;\\n\\n      case \\\"PrevPage\\\":\\n        this.pdfViewer.previousPage();\\n        break;\\n\\n      case \\\"LastPage\\\":\\n        this.page = this.pagesCount;\\n        break;\\n\\n      case \\\"FirstPage\\\":\\n        this.page = 1;\\n        break;\\n\\n      default:\\n        break; \u002F\u002F No action according to spec\\n    }\\n\\n    this.eventBus.dispatch(\\\"namedaction\\\", {\\n      source: this,\\n      action,\\n    });\\n  }\\n\\n  \u002F**\\n   * @param {Object} action\\n   *\u002F\\n  async executeSetOCGState(action) {\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    const pdfDocument = this.pdfDocument,\\n      optionalContentConfig = await this.pdfViewer.optionalContentConfigPromise;\\n\\n    if (pdfDocument !== this.pdfDocument) {\\n      return; \u002F\u002F The document was closed while the optional content resolved.\\n    }\\n    optionalContentConfig.setOCGState(action);\\n\\n    this.pdfViewer.optionalContentConfigPromise = Promise.resolve(\\n      optionalContentConfig\\n    );\\n  }\\n\\n  static #isValidExplicitDest(dest) {\\n    if (!Array.isArray(dest) || dest.length \u003C 2) {\\n      return false;\\n    }\\n    const [page, zoom, ...args] = dest;\\n    if (\\n      !(\\n        typeof page === \\\"object\\\" &&\\n        Number.isInteger(page?.num) &&\\n        Number.isInteger(page?.gen)\\n      ) &&\\n      !Number.isInteger(page)\\n    ) {\\n      return false;\\n    }\\n    if (!(typeof zoom === \\\"object\\\" && typeof zoom?.name === \\\"string\\\")) {\\n      return false;\\n    }\\n    let allowNull = true;\\n    switch (zoom.name) {\\n      case \\\"XYZ\\\":\\n        if (args.length !== 3) {\\n          return false;\\n        }\\n        break;\\n      case \\\"Fit\\\":\\n      case \\\"FitB\\\":\\n        return args.length === 0;\\n      case \\\"FitH\\\":\\n      case \\\"FitBH\\\":\\n      case \\\"FitV\\\":\\n      case \\\"FitBV\\\":\\n        if (args.length !== 1) {\\n          return false;\\n        }\\n        break;\\n      case \\\"FitR\\\":\\n        if (args.length !== 4) {\\n          return false;\\n        }\\n        allowNull = false;\\n        break;\\n      default:\\n        return false;\\n    }\\n    for (const arg of args) {\\n      if (!(typeof arg === \\\"number\\\" || (allowNull && arg === null))) {\\n        return false;\\n      }\\n    }\\n    return true;\\n  }\\n}\\n\\n\u002F**\\n * @implements {IPDFLinkService}\\n *\u002F\\nclass SimpleLinkService extends PDFLinkService {\\n  setDocument(pdfDocument, baseUrl = null) {}\\n}\\n\\nexport { LinkTarget, PDFLinkService, SimpleLinkService };\\n\",\"\u002F* Copyright 2016 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nconst {\\n  AbortException,\\n  AnnotationEditorLayer,\\n  AnnotationEditorParamsType,\\n  AnnotationEditorType,\\n  AnnotationEditorUIManager,\\n  AnnotationLayer,\\n  AnnotationMode,\\n  build,\\n  CMapCompressionType,\\n  ColorPicker,\\n  createValidAbsoluteUrl,\\n  DOMSVGFactory,\\n  DrawLayer,\\n  FeatureTest,\\n  fetchData,\\n  getDocument,\\n  getFilenameFromUrl,\\n  getPdfFilenameFromUrl,\\n  getXfaPageViewport,\\n  GlobalWorkerOptions,\\n  ImageKind,\\n  InvalidPDFException,\\n  isDataScheme,\\n  isPdfFile,\\n  MissingPDFException,\\n  noContextMenu,\\n  normalizeUnicode,\\n  OPS,\\n  Outliner,\\n  PasswordResponses,\\n  PDFDataRangeTransport,\\n  PDFDateString,\\n  PDFWorker,\\n  PermissionFlag,\\n  PixelsPerInch,\\n  RenderingCancelledException,\\n  renderTextLayer,\\n  setLayerDimensions,\\n  shadow,\\n  TextLayer,\\n  UnexpectedResponseException,\\n  updateTextLayer,\\n  Util,\\n  VerbosityLevel,\\n  version,\\n  XfaLayer,\\n} = globalThis.pdfjsLib;\\n\\nexport {\\n  AbortException,\\n  AnnotationEditorLayer,\\n  AnnotationEditorParamsType,\\n  AnnotationEditorType,\\n  AnnotationEditorUIManager,\\n  AnnotationLayer,\\n  AnnotationMode,\\n  build,\\n  CMapCompressionType,\\n  ColorPicker,\\n  createValidAbsoluteUrl,\\n  DOMSVGFactory,\\n  DrawLayer,\\n  FeatureTest,\\n  fetchData,\\n  getDocument,\\n  getFilenameFromUrl,\\n  getPdfFilenameFromUrl,\\n  getXfaPageViewport,\\n  GlobalWorkerOptions,\\n  ImageKind,\\n  InvalidPDFException,\\n  isDataScheme,\\n  isPdfFile,\\n  MissingPDFException,\\n  noContextMenu,\\n  normalizeUnicode,\\n  OPS,\\n  Outliner,\\n  PasswordResponses,\\n  PDFDataRangeTransport,\\n  PDFDateString,\\n  PDFWorker,\\n  PermissionFlag,\\n  PixelsPerInch,\\n  RenderingCancelledException,\\n  renderTextLayer,\\n  setLayerDimensions,\\n  shadow,\\n  TextLayer,\\n  UnexpectedResponseException,\\n  updateTextLayer,\\n  Util,\\n  VerbosityLevel,\\n  version,\\n  XfaLayer,\\n};\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nconst WaitOnType = {\\n  EVENT: \\\"event\\\",\\n  TIMEOUT: \\\"timeout\\\",\\n};\\n\\n\u002F**\\n * @typedef {Object} WaitOnEventOrTimeoutParameters\\n * @property {Object} target - The event target, can for example be:\\n *   `window`, `document`, a DOM element, or an {EventBus} instance.\\n * @property {string} name - The name of the event.\\n * @property {number} delay - The delay, in milliseconds, after which the\\n *   timeout occurs (if the event wasn't already dispatched).\\n *\u002F\\n\\n\u002F**\\n * Allows waiting for an event or a timeout, whichever occurs first.\\n * Can be used to ensure that an action always occurs, even when an event\\n * arrives late or not at all.\\n *\\n * @param {WaitOnEventOrTimeoutParameters}\\n * @returns {Promise} A promise that is resolved with a {WaitOnType} value.\\n *\u002F\\nasync function waitOnEventOrTimeout({ target, name, delay = 0 }) {\\n  if (\\n    typeof target !== \\\"object\\\" ||\\n    !(name && typeof name === \\\"string\\\") ||\\n    !(Number.isInteger(delay) && delay >= 0)\\n  ) {\\n    throw new Error(\\\"waitOnEventOrTimeout - invalid parameters.\\\");\\n  }\\n  const { promise, resolve } = Promise.withResolvers();\\n  const ac = new AbortController();\\n\\n  function handler(type) {\\n    ac.abort(); \u002F\u002F Remove event listener.\\n    clearTimeout(timeout);\\n\\n    resolve(type);\\n  }\\n\\n  const evtMethod = target instanceof EventBus ? \\\"_on\\\" : \\\"addEventListener\\\";\\n  target[evtMethod](name, handler.bind(null, WaitOnType.EVENT), {\\n    signal: ac.signal,\\n  });\\n\\n  const timeout = setTimeout(handler.bind(null, WaitOnType.TIMEOUT), delay);\\n\\n  return promise;\\n}\\n\\n\u002F**\\n * Simple event bus for an application. Listeners are attached using the `on`\\n * and `off` methods. To raise an event, the `dispatch` method shall be used.\\n *\u002F\\nclass EventBus {\\n  #listeners = Object.create(null);\\n\\n  \u002F**\\n   * @param {string} eventName\\n   * @param {function} listener\\n   * @param {Object} [options]\\n   *\u002F\\n  on(eventName, listener, options = null) {\\n    this._on(eventName, listener, {\\n      external: true,\\n      once: options?.once,\\n      signal: options?.signal,\\n    });\\n  }\\n\\n  \u002F**\\n   * @param {string} eventName\\n   * @param {function} listener\\n   * @param {Object} [options]\\n   *\u002F\\n  off(eventName, listener, options = null) {\\n    this._off(eventName, listener);\\n  }\\n\\n  \u002F**\\n   * @param {string} eventName\\n   * @param {Object} data\\n   *\u002F\\n  dispatch(eventName, data) {\\n    const eventListeners = this.#listeners[eventName];\\n    if (!eventListeners || eventListeners.length === 0) {\\n      return;\\n    }\\n    let externalListeners;\\n    \u002F\u002F Making copy of the listeners array in case if it will be modified\\n    \u002F\u002F during dispatch.\\n    for (const { listener, external, once } of eventListeners.slice(0)) {\\n      if (once) {\\n        this._off(eventName, listener);\\n      }\\n      if (external) {\\n        (externalListeners ||= []).push(listener);\\n        continue;\\n      }\\n      listener(data);\\n    }\\n    \u002F\u002F Dispatch any \\\"external\\\" listeners *after* the internal ones, to give the\\n    \u002F\u002F viewer components time to handle events and update their state first.\\n    if (externalListeners) {\\n      for (const listener of externalListeners) {\\n        listener(data);\\n      }\\n      externalListeners = null;\\n    }\\n  }\\n\\n  \u002F**\\n   * @ignore\\n   *\u002F\\n  _on(eventName, listener, options = null) {\\n    let rmAbort = null;\\n    if (options?.signal instanceof AbortSignal) {\\n      const { signal } = options;\\n      if (signal.aborted) {\\n        console.error(\\\"Cannot use an `aborted` signal.\\\");\\n        return;\\n      }\\n      const onAbort = () => this._off(eventName, listener);\\n      rmAbort = () => signal.removeEventListener(\\\"abort\\\", onAbort);\\n\\n      signal.addEventListener(\\\"abort\\\", onAbort);\\n    }\\n\\n    const eventListeners = (this.#listeners[eventName] ||= []);\\n    eventListeners.push({\\n      listener,\\n      external: options?.external === true,\\n      once: options?.once === true,\\n      rmAbort,\\n    });\\n  }\\n\\n  \u002F**\\n   * @ignore\\n   *\u002F\\n  _off(eventName, listener, options = null) {\\n    const eventListeners = this.#listeners[eventName];\\n    if (!eventListeners) {\\n      return;\\n    }\\n    for (let i = 0, ii = eventListeners.length; i \u003C ii; i++) {\\n      const evt = eventListeners[i];\\n      if (evt.listener === listener) {\\n        evt.rmAbort?.(); \u002F\u002F Ensure that the `AbortSignal` listener is removed.\\n        eventListeners.splice(i, 1);\\n        return;\\n      }\\n    }\\n  }\\n}\\n\\n\u002F**\\n * NOTE: Only used to support various PDF viewer tests in `mozilla-central`.\\n *\u002F\\nclass AutomationEventBus extends EventBus {\\n  dispatch(eventName, data) {\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && !PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      throw new Error(\\\"Not implemented: AutomationEventBus.dispatch\\\");\\n    }\\n    super.dispatch(eventName, data);\\n\\n    const detail = Object.create(null);\\n    if (data) {\\n      for (const key in data) {\\n        const value = data[key];\\n        if (key === \\\"source\\\") {\\n          if (value === window || value === document) {\\n            return; \u002F\u002F No need to re-dispatch (already) global events.\\n          }\\n          continue; \u002F\u002F Ignore the `source` property.\\n        }\\n        detail[key] = value;\\n      }\\n    }\\n    const event = new CustomEvent(eventName, {\\n      bubbles: true,\\n      cancelable: true,\\n      detail,\\n    });\\n    document.dispatchEvent(event);\\n  }\\n}\\n\\nexport { AutomationEventBus, EventBus, waitOnEventOrTimeout, WaitOnType };\\n\",\"\u002F* Copyright 2024 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Finterfaces.js\\\").IL10n} IL10n *\u002F\\n\\nclass BaseExternalServices {\\n  constructor() {\\n    if (this.constructor === BaseExternalServices) {\\n      throw new Error(\\\"Cannot initialize BaseExternalServices.\\\");\\n    }\\n  }\\n\\n  updateFindControlState(data) {}\\n\\n  updateFindMatchesCount(data) {}\\n\\n  initPassiveLoading() {}\\n\\n  reportTelemetry(data) {}\\n\\n  \u002F**\\n   * @returns {Promise\u003CIL10n>}\\n   *\u002F\\n  async createL10n() {\\n    throw new Error(\\\"Not implemented: createL10n\\\");\\n  }\\n\\n  createScripting() {\\n    throw new Error(\\\"Not implemented: createScripting\\\");\\n  }\\n\\n  updateEditorStates(data) {\\n    throw new Error(\\\"Not implemented: updateEditorStates\\\");\\n  }\\n\\n  async getNimbusExperimentData() {}\\n}\\n\\nexport { BaseExternalServices };\\n\",\"\u002F* Copyright 2013 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { AppOptions, OptionKind } from \\\".\u002Fapp_options.js\\\";\\n\\n\u002F**\\n * BasePreferences - Abstract base class for storing persistent settings.\\n *   Used for settings that should be applied to all opened documents,\\n *   or every time the viewer is loaded.\\n *\u002F\\nclass BasePreferences {\\n  #browserDefaults = Object.freeze(\\n    typeof PDFJSDev === \\\"undefined\\\"\\n      ? AppOptions.getAll(OptionKind.BROWSER, \u002F* defaultOnly = *\u002F true)\\n      : PDFJSDev.eval(\\\"BROWSER_PREFERENCES\\\")\\n  );\\n\\n  #defaults = Object.freeze(\\n    typeof PDFJSDev === \\\"undefined\\\"\\n      ? AppOptions.getAll(OptionKind.PREFERENCE, \u002F* defaultOnly = *\u002F true)\\n      : PDFJSDev.eval(\\\"DEFAULT_PREFERENCES\\\")\\n  );\\n\\n  #prefs = Object.create(null);\\n\\n  #initializedPromise = null;\\n\\n  constructor() {\\n    if (this.constructor === BasePreferences) {\\n      throw new Error(\\\"Cannot initialize BasePreferences.\\\");\\n    }\\n\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"CHROME\\\")) {\\n      Object.defineProperty(this, \\\"defaults\\\", {\\n        get() {\\n          return this.#defaults;\\n        },\\n      });\\n    }\\n\\n    this.#initializedPromise = this._readFromStorage(this.#defaults).then(\\n      ({ browserPrefs, prefs }) => {\\n        const options = Object.create(null);\\n\\n        for (const [name, val] of Object.entries(this.#browserDefaults)) {\\n          const prefVal = browserPrefs?.[name];\\n          options[name] = typeof prefVal === typeof val ? prefVal : val;\\n        }\\n        for (const [name, val] of Object.entries(this.#defaults)) {\\n          const prefVal = prefs?.[name];\\n          \u002F\u002F Ignore preferences whose types don't match the default values.\\n          options[name] = this.#prefs[name] =\\n            typeof prefVal === typeof val ? prefVal : val;\\n        }\\n        AppOptions.setAll(options, \u002F* init = *\u002F true);\\n\\n        if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n          window.addEventListener(\\\"updatedPreference\\\", evt => {\\n            this.#updatePref(evt.detail);\\n          });\\n        }\\n      }\\n    );\\n  }\\n\\n  \u002F**\\n   * Stub function for writing preferences to storage.\\n   * @param {Object} prefObj The preferences that should be written to storage.\\n   * @returns {Promise} A promise that is resolved when the preference values\\n   *                    have been written.\\n   *\u002F\\n  async _writeToStorage(prefObj) {\\n    throw new Error(\\\"Not implemented: _writeToStorage\\\");\\n  }\\n\\n  \u002F**\\n   * Stub function for reading preferences from storage.\\n   * @param {Object} prefObj The preferences that should be read from storage.\\n   * @returns {Promise} A promise that is resolved with an {Object} containing\\n   *                    the preferences that have been read.\\n   *\u002F\\n  async _readFromStorage(prefObj) {\\n    throw new Error(\\\"Not implemented: _readFromStorage\\\");\\n  }\\n\\n  #updatePref({ name, value }) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      throw new Error(\\\"Not implemented: #updatePref\\\");\\n    }\\n\\n    if (name in this.#browserDefaults) {\\n      if (typeof value !== typeof this.#browserDefaults[name]) {\\n        return; \u002F\u002F Invalid preference value.\\n      }\\n    } else if (name in this.#defaults) {\\n      if (typeof value !== typeof this.#defaults[name]) {\\n        return; \u002F\u002F Invalid preference value.\\n      }\\n      this.#prefs[name] = value;\\n    } else {\\n      return; \u002F\u002F Invalid preference.\\n    }\\n    AppOptions.set(name, value);\\n  }\\n\\n  \u002F**\\n   * Reset the preferences to their default values and update storage.\\n   * @returns {Promise} A promise that is resolved when the preference values\\n   *                    have been reset.\\n   *\u002F\\n  async reset() {\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      throw new Error(\\\"Please use `about:config` to change preferences.\\\");\\n    }\\n    await this.#initializedPromise;\\n    const oldPrefs = structuredClone(this.#prefs);\\n\\n    this.#prefs = Object.create(null);\\n    try {\\n      await this._writeToStorage(this.#defaults);\\n    } catch (reason) {\\n      \u002F\u002F Revert all preference values, since writing to storage failed.\\n      this.#prefs = oldPrefs;\\n      throw reason;\\n    }\\n  }\\n\\n  \u002F**\\n   * Set the value of a preference.\\n   * @param {string} name The name of the preference that should be changed.\\n   * @param {boolean|number|string} value The new value of the preference.\\n   * @returns {Promise} A promise that is resolved when the value has been set,\\n   *                    provided that the preference exists and the types match.\\n   *\u002F\\n  async set(name, value) {\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      throw new Error(\\\"Please use `about:config` to change preferences.\\\");\\n    }\\n    await this.#initializedPromise;\\n    const defaultValue = this.#defaults[name],\\n      oldPrefs = structuredClone(this.#prefs);\\n\\n    if (defaultValue === undefined) {\\n      throw new Error(`Set preference: \\\"${name}\\\" is undefined.`);\\n    } else if (value === undefined) {\\n      throw new Error(\\\"Set preference: no value is specified.\\\");\\n    }\\n    const valueType = typeof value,\\n      defaultType = typeof defaultValue;\\n\\n    if (valueType !== defaultType) {\\n      if (valueType === \\\"number\\\" && defaultType === \\\"string\\\") {\\n        value = value.toString();\\n      } else {\\n        throw new Error(\\n          `Set preference: \\\"${value}\\\" is a ${valueType}, expected a ${defaultType}.`\\n        );\\n      }\\n    } else if (valueType === \\\"number\\\" && !Number.isInteger(value)) {\\n      throw new Error(`Set preference: \\\"${value}\\\" must be an integer.`);\\n    }\\n\\n    this.#prefs[name] = value;\\n    try {\\n      await this._writeToStorage(this.#prefs);\\n    } catch (reason) {\\n      \u002F\u002F Revert all preference values, since writing to storage failed.\\n      this.#prefs = oldPrefs;\\n      throw reason;\\n    }\\n  }\\n\\n  \u002F**\\n   * Get the value of a preference.\\n   * @param {string} name The name of the preference whose value is requested.\\n   * @returns {Promise} A promise resolved with a {boolean|number|string}\\n   *                    containing the value of the preference.\\n   *\u002F\\n  async get(name) {\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      throw new Error(\\\"Not implemented: get\\\");\\n    }\\n    await this.#initializedPromise;\\n    const defaultValue = this.#defaults[name];\\n\\n    if (defaultValue === undefined) {\\n      throw new Error(`Get preference: \\\"${name}\\\" is undefined.`);\\n    }\\n    return this.#prefs[name] ?? defaultValue;\\n  }\\n\\n  get initializedPromise() {\\n    return this.#initializedPromise;\\n  }\\n}\\n\\nexport { BasePreferences };\\n\",\"\u002F**\\n * The `FluentType` class is the base of Fluent's type system.\\n *\\n * Fluent types wrap JavaScript values and store additional configuration for\\n * them, which can then be used in the `toString` method together with a proper\\n * `Intl` formatter.\\n *\u002F\\nexport class FluentType {\\n    \u002F**\\n     * Create a `FluentType` instance.\\n     *\\n     * @param value The JavaScript value to wrap.\\n     *\u002F\\n    constructor(value) {\\n        this.value = value;\\n    }\\n    \u002F**\\n     * Unwrap the raw value stored by this `FluentType`.\\n     *\u002F\\n    valueOf() {\\n        return this.value;\\n    }\\n}\\n\u002F**\\n * A `FluentType` representing no correct value.\\n *\u002F\\nexport class FluentNone extends FluentType {\\n    \u002F**\\n     * Create an instance of `FluentNone` with an optional fallback value.\\n     * @param value The fallback value of this `FluentNone`.\\n     *\u002F\\n    constructor(value = \\\"???\\\") {\\n        super(value);\\n    }\\n    \u002F**\\n     * Format this `FluentNone` to the fallback string.\\n     *\u002F\\n    toString(scope) {\\n        return `{${this.value}}`;\\n    }\\n}\\n\u002F**\\n * A `FluentType` representing a number.\\n *\\n * A `FluentNumber` instance stores the number value of the number it\\n * represents. It may also store an option bag of options which will be passed\\n * to `Intl.NumerFormat` when the `FluentNumber` is formatted to a string.\\n *\u002F\\nexport class FluentNumber extends FluentType {\\n    \u002F**\\n     * Create an instance of `FluentNumber` with options to the\\n     * `Intl.NumberFormat` constructor.\\n     *\\n     * @param value The number value of this `FluentNumber`.\\n     * @param opts Options which will be passed to `Intl.NumberFormat`.\\n     *\u002F\\n    constructor(value, opts = {}) {\\n        super(value);\\n        this.opts = opts;\\n    }\\n    \u002F**\\n     * Format this `FluentNumber` to a string.\\n     *\u002F\\n    toString(scope) {\\n        try {\\n            const nf = scope.memoizeIntlObject(Intl.NumberFormat, this.opts);\\n            return nf.format(this.value);\\n        }\\n        catch (err) {\\n            scope.reportError(err);\\n            return this.value.toString(10);\\n        }\\n    }\\n}\\n\u002F**\\n * A `FluentType` representing a date and time.\\n *\\n * A `FluentDateTime` instance stores the number value of the date it\\n * represents, as a numerical timestamp in milliseconds. It may also store an\\n * option bag of options which will be passed to `Intl.DateTimeFormat` when the\\n * `FluentDateTime` is formatted to a string.\\n *\u002F\\nexport class FluentDateTime extends FluentType {\\n    \u002F**\\n     * Create an instance of `FluentDateTime` with options to the\\n     * `Intl.DateTimeFormat` constructor.\\n     *\\n     * @param value The number value of this `FluentDateTime`, in milliseconds.\\n     * @param opts Options which will be passed to `Intl.DateTimeFormat`.\\n     *\u002F\\n    constructor(value, opts = {}) {\\n        super(value);\\n        this.opts = opts;\\n    }\\n    \u002F**\\n     * Format this `FluentDateTime` to a string.\\n     *\u002F\\n    toString(scope) {\\n        try {\\n            const dtf = scope.memoizeIntlObject(Intl.DateTimeFormat, this.opts);\\n            return dtf.format(this.value);\\n        }\\n        catch (err) {\\n            scope.reportError(err);\\n            return new Date(this.value).toISOString();\\n        }\\n    }\\n}\\n\",\"\u002F* global Intl *\u002F\\n\u002F**\\n * @overview\\n *\\n * The role of the Fluent resolver is to format a `Pattern` to an instance of\\n * `FluentValue`. For performance reasons, primitive strings are considered\\n * such instances, too.\\n *\\n * Translations can contain references to other messages or variables,\\n * conditional logic in form of select expressions, traits which describe their\\n * grammatical features, and can use Fluent builtins which make use of the\\n * `Intl` formatters to format numbers and dates into the bundle's languages.\\n * See the documentation of the Fluent syntax for more information.\\n *\\n * In case of errors the resolver will try to salvage as much of the\\n * translation as possible. In rare situations where the resolver didn't know\\n * how to recover from an error it will return an instance of `FluentNone`.\\n *\\n * All expressions resolve to an instance of `FluentValue`. The caller should\\n * use the `toString` method to convert the instance to a native value.\\n *\\n * Functions in this file pass around an instance of the `Scope` class, which\\n * stores the data required for successful resolution and error recovery.\\n *\u002F\\nimport { FluentType, FluentNone, FluentNumber, FluentDateTime, } from \\\".\u002Ftypes.js\\\";\\n\u002F**\\n * The maximum number of placeables which can be expanded in a single call to\\n * `formatPattern`. The limit protects against the Billion Laughs and Quadratic\\n * Blowup attacks. See https:\u002F\u002Fmsdn.microsoft.com\u002Fen-us\u002Fmagazine\u002Fee335713.aspx.\\n *\u002F\\nconst MAX_PLACEABLES = 100;\\n\u002F** Unicode bidi isolation characters. *\u002F\\nconst FSI = \\\"\\\\u2068\\\";\\nconst PDI = \\\"\\\\u2069\\\";\\n\u002F** Helper: match a variant key to the given selector. *\u002F\\nfunction match(scope, selector, key) {\\n    if (key === selector) {\\n        \u002F\u002F Both are strings.\\n        return true;\\n    }\\n    \u002F\u002F XXX Consider comparing options too, e.g. minimumFractionDigits.\\n    if (key instanceof FluentNumber &&\\n        selector instanceof FluentNumber &&\\n        key.value === selector.value) {\\n        return true;\\n    }\\n    if (selector instanceof FluentNumber && typeof key === \\\"string\\\") {\\n        let category = scope\\n            .memoizeIntlObject(Intl.PluralRules, selector.opts)\\n            .select(selector.value);\\n        if (key === category) {\\n            return true;\\n        }\\n    }\\n    return false;\\n}\\n\u002F** Helper: resolve the default variant from a list of variants. *\u002F\\nfunction getDefault(scope, variants, star) {\\n    if (variants[star]) {\\n        return resolvePattern(scope, variants[star].value);\\n    }\\n    scope.reportError(new RangeError(\\\"No default\\\"));\\n    return new FluentNone();\\n}\\n\u002F** Helper: resolve arguments to a call expression. *\u002F\\nfunction getArguments(scope, args) {\\n    const positional = [];\\n    const named = Object.create(null);\\n    for (const arg of args) {\\n        if (arg.type === \\\"narg\\\") {\\n            named[arg.name] = resolveExpression(scope, arg.value);\\n        }\\n        else {\\n            positional.push(resolveExpression(scope, arg));\\n        }\\n    }\\n    return { positional, named };\\n}\\n\u002F** Resolve an expression to a Fluent type. *\u002F\\nfunction resolveExpression(scope, expr) {\\n    switch (expr.type) {\\n        case \\\"str\\\":\\n            return expr.value;\\n        case \\\"num\\\":\\n            return new FluentNumber(expr.value, {\\n                minimumFractionDigits: expr.precision,\\n            });\\n        case \\\"var\\\":\\n            return resolveVariableReference(scope, expr);\\n        case \\\"mesg\\\":\\n            return resolveMessageReference(scope, expr);\\n        case \\\"term\\\":\\n            return resolveTermReference(scope, expr);\\n        case \\\"func\\\":\\n            return resolveFunctionReference(scope, expr);\\n        case \\\"select\\\":\\n            return resolveSelectExpression(scope, expr);\\n        default:\\n            return new FluentNone();\\n    }\\n}\\n\u002F** Resolve a reference to a variable. *\u002F\\nfunction resolveVariableReference(scope, { name }) {\\n    let arg;\\n    if (scope.params) {\\n        \u002F\u002F We're inside a TermReference. It's OK to reference undefined parameters.\\n        if (Object.prototype.hasOwnProperty.call(scope.params, name)) {\\n            arg = scope.params[name];\\n        }\\n        else {\\n            return new FluentNone(`$${name}`);\\n        }\\n    }\\n    else if (scope.args &&\\n        Object.prototype.hasOwnProperty.call(scope.args, name)) {\\n        \u002F\u002F We're in the top-level Pattern or inside a MessageReference. Missing\\n        \u002F\u002F variables references produce ReferenceErrors.\\n        arg = scope.args[name];\\n    }\\n    else {\\n        scope.reportError(new ReferenceError(`Unknown variable: $${name}`));\\n        return new FluentNone(`$${name}`);\\n    }\\n    \u002F\u002F Return early if the argument already is an instance of FluentType.\\n    if (arg instanceof FluentType) {\\n        return arg;\\n    }\\n    \u002F\u002F Convert the argument to a Fluent type.\\n    switch (typeof arg) {\\n        case \\\"string\\\":\\n            return arg;\\n        case \\\"number\\\":\\n            return new FluentNumber(arg);\\n        case \\\"object\\\":\\n            if (arg instanceof Date) {\\n                return new FluentDateTime(arg.getTime());\\n            }\\n        \u002F\u002F eslint-disable-next-line no-fallthrough\\n        default:\\n            scope.reportError(new TypeError(`Variable type not supported: $${name}, ${typeof arg}`));\\n            return new FluentNone(`$${name}`);\\n    }\\n}\\n\u002F** Resolve a reference to another message. *\u002F\\nfunction resolveMessageReference(scope, { name, attr }) {\\n    const message = scope.bundle._messages.get(name);\\n    if (!message) {\\n        scope.reportError(new ReferenceError(`Unknown message: ${name}`));\\n        return new FluentNone(name);\\n    }\\n    if (attr) {\\n        const attribute = message.attributes[attr];\\n        if (attribute) {\\n            return resolvePattern(scope, attribute);\\n        }\\n        scope.reportError(new ReferenceError(`Unknown attribute: ${attr}`));\\n        return new FluentNone(`${name}.${attr}`);\\n    }\\n    if (message.value) {\\n        return resolvePattern(scope, message.value);\\n    }\\n    scope.reportError(new ReferenceError(`No value: ${name}`));\\n    return new FluentNone(name);\\n}\\n\u002F** Resolve a call to a Term with key-value arguments. *\u002F\\nfunction resolveTermReference(scope, { name, attr, args }) {\\n    const id = `-${name}`;\\n    const term = scope.bundle._terms.get(id);\\n    if (!term) {\\n        scope.reportError(new ReferenceError(`Unknown term: ${id}`));\\n        return new FluentNone(id);\\n    }\\n    if (attr) {\\n        const attribute = term.attributes[attr];\\n        if (attribute) {\\n            \u002F\u002F Every TermReference has its own variables.\\n            scope.params = getArguments(scope, args).named;\\n            const resolved = resolvePattern(scope, attribute);\\n            scope.params = null;\\n            return resolved;\\n        }\\n        scope.reportError(new ReferenceError(`Unknown attribute: ${attr}`));\\n        return new FluentNone(`${id}.${attr}`);\\n    }\\n    scope.params = getArguments(scope, args).named;\\n    const resolved = resolvePattern(scope, term.value);\\n    scope.params = null;\\n    return resolved;\\n}\\n\u002F** Resolve a call to a Function with positional and key-value arguments. *\u002F\\nfunction resolveFunctionReference(scope, { name, args }) {\\n    \u002F\u002F Some functions are built-in. Others may be provided by the runtime via\\n    \u002F\u002F the `FluentBundle` constructor.\\n    let func = scope.bundle._functions[name];\\n    if (!func) {\\n        scope.reportError(new ReferenceError(`Unknown function: ${name}()`));\\n        return new FluentNone(`${name}()`);\\n    }\\n    if (typeof func !== \\\"function\\\") {\\n        scope.reportError(new TypeError(`Function ${name}() is not callable`));\\n        return new FluentNone(`${name}()`);\\n    }\\n    try {\\n        let resolved = getArguments(scope, args);\\n        return func(resolved.positional, resolved.named);\\n    }\\n    catch (err) {\\n        scope.reportError(err);\\n        return new FluentNone(`${name}()`);\\n    }\\n}\\n\u002F** Resolve a select expression to the member object. *\u002F\\nfunction resolveSelectExpression(scope, { selector, variants, star }) {\\n    let sel = resolveExpression(scope, selector);\\n    if (sel instanceof FluentNone) {\\n        return getDefault(scope, variants, star);\\n    }\\n    \u002F\u002F Match the selector against keys of each variant, in order.\\n    for (const variant of variants) {\\n        const key = resolveExpression(scope, variant.key);\\n        if (match(scope, sel, key)) {\\n            return resolvePattern(scope, variant.value);\\n        }\\n    }\\n    return getDefault(scope, variants, star);\\n}\\n\u002F** Resolve a pattern (a complex string with placeables). *\u002F\\nexport function resolveComplexPattern(scope, ptn) {\\n    if (scope.dirty.has(ptn)) {\\n        scope.reportError(new RangeError(\\\"Cyclic reference\\\"));\\n        return new FluentNone();\\n    }\\n    \u002F\u002F Tag the pattern as dirty for the purpose of the current resolution.\\n    scope.dirty.add(ptn);\\n    const result = [];\\n    \u002F\u002F Wrap interpolations with Directional Isolate Formatting characters\\n    \u002F\u002F only when the pattern has more than one element.\\n    const useIsolating = scope.bundle._useIsolating && ptn.length > 1;\\n    for (const elem of ptn) {\\n        if (typeof elem === \\\"string\\\") {\\n            result.push(scope.bundle._transform(elem));\\n            continue;\\n        }\\n        scope.placeables++;\\n        if (scope.placeables > MAX_PLACEABLES) {\\n            scope.dirty.delete(ptn);\\n            \u002F\u002F This is a fatal error which causes the resolver to instantly bail out\\n            \u002F\u002F on this pattern. The length check protects against excessive memory\\n            \u002F\u002F usage, and throwing protects against eating up the CPU when long\\n            \u002F\u002F placeables are deeply nested.\\n            throw new RangeError(`Too many placeables expanded: ${scope.placeables}, ` +\\n                `max allowed is ${MAX_PLACEABLES}`);\\n        }\\n        if (useIsolating) {\\n            result.push(FSI);\\n        }\\n        result.push(resolveExpression(scope, elem).toString(scope));\\n        if (useIsolating) {\\n            result.push(PDI);\\n        }\\n    }\\n    scope.dirty.delete(ptn);\\n    return result.join(\\\"\\\");\\n}\\n\u002F**\\n * Resolve a simple or a complex Pattern to a FluentString\\n * (which is really the string primitive).\\n *\u002F\\nfunction resolvePattern(scope, value) {\\n    \u002F\u002F Resolve a simple pattern.\\n    if (typeof value === \\\"string\\\") {\\n        return scope.bundle._transform(value);\\n    }\\n    return resolveComplexPattern(scope, value);\\n}\\n\",\"export class Scope {\\n    constructor(bundle, errors, args) {\\n        \u002F**\\n         * The Set of patterns already encountered during this resolution.\\n         * Used to detect and prevent cyclic resolutions.\\n         * @ignore\\n         *\u002F\\n        this.dirty = new WeakSet();\\n        \u002F** A dict of parameters passed to a TermReference. *\u002F\\n        this.params = null;\\n        \u002F**\\n         * The running count of placeables resolved so far.\\n         * Used to detect the Billion Laughs and Quadratic Blowup attacks.\\n         * @ignore\\n         *\u002F\\n        this.placeables = 0;\\n        this.bundle = bundle;\\n        this.errors = errors;\\n        this.args = args;\\n    }\\n    reportError(error) {\\n        if (!this.errors || !(error instanceof Error)) {\\n            throw error;\\n        }\\n        this.errors.push(error);\\n    }\\n    memoizeIntlObject(ctor, opts) {\\n        let cache = this.bundle._intls.get(ctor);\\n        if (!cache) {\\n            cache = {};\\n            this.bundle._intls.set(ctor, cache);\\n        }\\n        let id = JSON.stringify(opts);\\n        if (!cache[id]) {\\n            cache[id] = new ctor(this.bundle.locales, opts);\\n        }\\n        return cache[id];\\n    }\\n}\\n\",\"\u002F**\\n * @overview\\n *\\n * The FTL resolver ships with a number of functions built-in.\\n *\\n * Each function take two arguments:\\n *   - args - an array of positional args\\n *   - opts - an object of key-value args\\n *\\n * Arguments to functions are guaranteed to already be instances of\\n * `FluentValue`.  Functions must return `FluentValues` as well.\\n *\u002F\\nimport { FluentNone, FluentNumber, FluentDateTime, } from \\\".\u002Ftypes.js\\\";\\nfunction values(opts, allowed) {\\n    const unwrapped = Object.create(null);\\n    for (const [name, opt] of Object.entries(opts)) {\\n        if (allowed.includes(name)) {\\n            unwrapped[name] = opt.valueOf();\\n        }\\n    }\\n    return unwrapped;\\n}\\nconst NUMBER_ALLOWED = [\\n    \\\"unitDisplay\\\",\\n    \\\"currencyDisplay\\\",\\n    \\\"useGrouping\\\",\\n    \\\"minimumIntegerDigits\\\",\\n    \\\"minimumFractionDigits\\\",\\n    \\\"maximumFractionDigits\\\",\\n    \\\"minimumSignificantDigits\\\",\\n    \\\"maximumSignificantDigits\\\",\\n];\\n\u002F**\\n * The implementation of the `NUMBER()` builtin available to translations.\\n *\\n * Translations may call the `NUMBER()` builtin in order to specify formatting\\n * options of a number. For example:\\n *\\n *     pi = The value of π is {NUMBER($pi, maximumFractionDigits: 2)}.\\n *\\n * The implementation expects an array of `FluentValues` representing the\\n * positional arguments, and an object of named `FluentValues` representing the\\n * named parameters.\\n *\\n * The following options are recognized:\\n *\\n *     unitDisplay\\n *     currencyDisplay\\n *     useGrouping\\n *     minimumIntegerDigits\\n *     minimumFractionDigits\\n *     maximumFractionDigits\\n *     minimumSignificantDigits\\n *     maximumSignificantDigits\\n *\\n * Other options are ignored.\\n *\\n * @param args The positional arguments passed to this `NUMBER()`.\\n * @param opts The named argments passed to this `NUMBER()`.\\n *\u002F\\nexport function NUMBER(args, opts) {\\n    let arg = args[0];\\n    if (arg instanceof FluentNone) {\\n        return new FluentNone(`NUMBER(${arg.valueOf()})`);\\n    }\\n    if (arg instanceof FluentNumber) {\\n        return new FluentNumber(arg.valueOf(), {\\n            ...arg.opts,\\n            ...values(opts, NUMBER_ALLOWED),\\n        });\\n    }\\n    if (arg instanceof FluentDateTime) {\\n        return new FluentNumber(arg.valueOf(), {\\n            ...values(opts, NUMBER_ALLOWED),\\n        });\\n    }\\n    throw new TypeError(\\\"Invalid argument to NUMBER\\\");\\n}\\nconst DATETIME_ALLOWED = [\\n    \\\"dateStyle\\\",\\n    \\\"timeStyle\\\",\\n    \\\"fractionalSecondDigits\\\",\\n    \\\"dayPeriod\\\",\\n    \\\"hour12\\\",\\n    \\\"weekday\\\",\\n    \\\"era\\\",\\n    \\\"year\\\",\\n    \\\"month\\\",\\n    \\\"day\\\",\\n    \\\"hour\\\",\\n    \\\"minute\\\",\\n    \\\"second\\\",\\n    \\\"timeZoneName\\\",\\n];\\n\u002F**\\n * The implementation of the `DATETIME()` builtin available to translations.\\n *\\n * Translations may call the `DATETIME()` builtin in order to specify\\n * formatting options of a number. For example:\\n *\\n *     now = It's {DATETIME($today, month: \\\"long\\\")}.\\n *\\n * The implementation expects an array of `FluentValues` representing the\\n * positional arguments, and an object of named `FluentValues` representing the\\n * named parameters.\\n *\\n * The following options are recognized:\\n *\\n *     dateStyle\\n *     timeStyle\\n *     fractionalSecondDigits\\n *     dayPeriod\\n *     hour12\\n *     weekday\\n *     era\\n *     year\\n *     month\\n *     day\\n *     hour\\n *     minute\\n *     second\\n *     timeZoneName\\n *\\n * Other options are ignored.\\n *\\n * @param args The positional arguments passed to this `DATETIME()`.\\n * @param opts The named argments passed to this `DATETIME()`.\\n *\u002F\\nexport function DATETIME(args, opts) {\\n    let arg = args[0];\\n    if (arg instanceof FluentNone) {\\n        return new FluentNone(`DATETIME(${arg.valueOf()})`);\\n    }\\n    if (arg instanceof FluentDateTime) {\\n        return new FluentDateTime(arg.valueOf(), {\\n            ...arg.opts,\\n            ...values(opts, DATETIME_ALLOWED),\\n        });\\n    }\\n    if (arg instanceof FluentNumber) {\\n        return new FluentDateTime(arg.valueOf(), {\\n            ...values(opts, DATETIME_ALLOWED),\\n        });\\n    }\\n    throw new TypeError(\\\"Invalid argument to DATETIME\\\");\\n}\\n\",\"const cache = new Map();\\nexport function getMemoizerForLocale(locales) {\\n    const stringLocale = Array.isArray(locales) ? locales.join(\\\" \\\") : locales;\\n    let memoizer = cache.get(stringLocale);\\n    if (memoizer === undefined) {\\n        memoizer = new Map();\\n        cache.set(stringLocale, memoizer);\\n    }\\n    return memoizer;\\n}\\n\",\"import { resolveComplexPattern } from \\\".\u002Fresolver.js\\\";\\nimport { Scope } from \\\".\u002Fscope.js\\\";\\nimport { FluentNone } from \\\".\u002Ftypes.js\\\";\\nimport { NUMBER, DATETIME } from \\\".\u002Fbuiltins.js\\\";\\nimport { getMemoizerForLocale } from \\\".\u002Fmemoizer.js\\\";\\n\u002F**\\n * Message bundles are single-language stores of translation resources. They are\\n * responsible for formatting message values and attributes to strings.\\n *\u002F\\nexport class FluentBundle {\\n    \u002F**\\n     * Create an instance of `FluentBundle`.\\n     *\\n     * @example\\n     * ```js\\n     * let bundle = new FluentBundle([\\\"en-US\\\", \\\"en\\\"]);\\n     *\\n     * let bundle = new FluentBundle(locales, {useIsolating: false});\\n     *\\n     * let bundle = new FluentBundle(locales, {\\n     *   useIsolating: true,\\n     *   functions: {\\n     *     NODE_ENV: () => process.env.NODE_ENV\\n     *   }\\n     * });\\n     * ```\\n     *\\n     * @param locales - Used to instantiate `Intl` formatters used by translations.\\n     * @param options - Optional configuration for the bundle.\\n     *\u002F\\n    constructor(locales, { functions, useIsolating = true, transform = (v) => v, } = {}) {\\n        \u002F** @ignore *\u002F\\n        this._terms = new Map();\\n        \u002F** @ignore *\u002F\\n        this._messages = new Map();\\n        this.locales = Array.isArray(locales) ? locales : [locales];\\n        this._functions = {\\n            NUMBER,\\n            DATETIME,\\n            ...functions,\\n        };\\n        this._useIsolating = useIsolating;\\n        this._transform = transform;\\n        this._intls = getMemoizerForLocale(locales);\\n    }\\n    \u002F**\\n     * Check if a message is present in the bundle.\\n     *\\n     * @param id - The identifier of the message to check.\\n     *\u002F\\n    hasMessage(id) {\\n        return this._messages.has(id);\\n    }\\n    \u002F**\\n     * Return a raw unformatted message object from the bundle.\\n     *\\n     * Raw messages are `{value, attributes}` shapes containing translation units\\n     * called `Patterns`. `Patterns` are implementation-specific; they should be\\n     * treated as black boxes and formatted with `FluentBundle.formatPattern`.\\n     *\\n     * @param id - The identifier of the message to check.\\n     *\u002F\\n    getMessage(id) {\\n        return this._messages.get(id);\\n    }\\n    \u002F**\\n     * Add a translation resource to the bundle.\\n     *\\n     * @example\\n     * ```js\\n     * let res = new FluentResource(\\\"foo = Foo\\\");\\n     * bundle.addResource(res);\\n     * bundle.getMessage(\\\"foo\\\");\\n     * \u002F\u002F → {value: .., attributes: {..}}\\n     * ```\\n     *\\n     * @param res\\n     * @param options\\n     *\u002F\\n    addResource(res, { allowOverrides = false, } = {}) {\\n        const errors = [];\\n        for (let i = 0; i \u003C res.body.length; i++) {\\n            let entry = res.body[i];\\n            if (entry.id.startsWith(\\\"-\\\")) {\\n                \u002F\u002F Identifiers starting with a dash (-) define terms. Terms are private\\n                \u002F\u002F and cannot be retrieved from FluentBundle.\\n                if (allowOverrides === false && this._terms.has(entry.id)) {\\n                    errors.push(new Error(`Attempt to override an existing term: \\\"${entry.id}\\\"`));\\n                    continue;\\n                }\\n                this._terms.set(entry.id, entry);\\n            }\\n            else {\\n                if (allowOverrides === false && this._messages.has(entry.id)) {\\n                    errors.push(new Error(`Attempt to override an existing message: \\\"${entry.id}\\\"`));\\n                    continue;\\n                }\\n                this._messages.set(entry.id, entry);\\n            }\\n        }\\n        return errors;\\n    }\\n    \u002F**\\n     * Format a `Pattern` to a string.\\n     *\\n     * Format a raw `Pattern` into a string. `args` will be used to resolve\\n     * references to variables passed as arguments to the translation.\\n     *\\n     * In case of errors `formatPattern` will try to salvage as much of the\\n     * translation as possible and will still return a string. For performance\\n     * reasons, the encountered errors are not returned but instead are appended\\n     * to the `errors` array passed as the third argument.\\n     *\\n     * If `errors` is omitted, the first encountered error will be thrown.\\n     *\\n     * @example\\n     * ```js\\n     * let errors = [];\\n     * bundle.addResource(\\n     *     new FluentResource(\\\"hello = Hello, {$name}!\\\"));\\n     *\\n     * let hello = bundle.getMessage(\\\"hello\\\");\\n     * if (hello.value) {\\n     *     bundle.formatPattern(hello.value, {name: \\\"Jane\\\"}, errors);\\n     *     \u002F\u002F Returns \\\"Hello, Jane!\\\" and `errors` is empty.\\n     *\\n     *     bundle.formatPattern(hello.value, undefined, errors);\\n     *     \u002F\u002F Returns \\\"Hello, {$name}!\\\" and `errors` is now:\\n     *     \u002F\u002F [\u003CReferenceError: Unknown variable: name>]\\n     * }\\n     * ```\\n     *\u002F\\n    formatPattern(pattern, args = null, errors = null) {\\n        \u002F\u002F Resolve a simple pattern without creating a scope. No error handling is\\n        \u002F\u002F required; by definition simple patterns don't have placeables.\\n        if (typeof pattern === \\\"string\\\") {\\n            return this._transform(pattern);\\n        }\\n        \u002F\u002F Resolve a complex pattern.\\n        let scope = new Scope(this, errors, args);\\n        try {\\n            let value = resolveComplexPattern(scope, pattern);\\n            return value.toString(scope);\\n        }\\n        catch (err) {\\n            if (scope.errors && err instanceof Error) {\\n                scope.errors.push(err);\\n                return new FluentNone().toString(scope);\\n            }\\n            throw err;\\n        }\\n    }\\n}\\n\",\"\u002F\u002F This regex is used to iterate through the beginnings of messages and terms.\\n\u002F\u002F With the \u002Fm flag, the ^ matches at the beginning of every line.\\nconst RE_MESSAGE_START = \u002F^(-?[a-zA-Z][\\\\w-]*) *= *\u002Fgm;\\n\u002F\u002F Both Attributes and Variants are parsed in while loops. These regexes are\\n\u002F\u002F used to break out of them.\\nconst RE_ATTRIBUTE_START = \u002F\\\\.([a-zA-Z][\\\\w-]*) *= *\u002Fy;\\nconst RE_VARIANT_START = \u002F\\\\*?\\\\[\u002Fy;\\nconst RE_NUMBER_LITERAL = \u002F(-?[0-9]+(?:\\\\.([0-9]+))?)\u002Fy;\\nconst RE_IDENTIFIER = \u002F([a-zA-Z][\\\\w-]*)\u002Fy;\\nconst RE_REFERENCE = \u002F([$-])?([a-zA-Z][\\\\w-]*)(?:\\\\.([a-zA-Z][\\\\w-]*))?\u002Fy;\\nconst RE_FUNCTION_NAME = \u002F^[A-Z][A-Z0-9_-]*$\u002F;\\n\u002F\u002F A \\\"run\\\" is a sequence of text or string literal characters which don't\\n\u002F\u002F require any special handling. For TextElements such special characters are: {\\n\u002F\u002F (starts a placeable), and line breaks which require additional logic to check\\n\u002F\u002F if the next line is indented. For StringLiterals they are: \\\\ (starts an\\n\u002F\u002F escape sequence), \\\" (ends the literal), and line breaks which are not allowed\\n\u002F\u002F in StringLiterals. Note that string runs may be empty; text runs may not.\\nconst RE_TEXT_RUN = \u002F([^{}\\\\n\\\\r]+)\u002Fy;\\nconst RE_STRING_RUN = \u002F([^\\\\\\\\\\\"\\\\n\\\\r]*)\u002Fy;\\n\u002F\u002F Escape sequences.\\nconst RE_STRING_ESCAPE = \u002F\\\\\\\\([\\\\\\\\\\\"])\u002Fy;\\nconst RE_UNICODE_ESCAPE = \u002F\\\\\\\\u([a-fA-F0-9]{4})|\\\\\\\\U([a-fA-F0-9]{6})\u002Fy;\\n\u002F\u002F Used for trimming TextElements and indents.\\nconst RE_LEADING_NEWLINES = \u002F^\\\\n+\u002F;\\nconst RE_TRAILING_SPACES = \u002F +$\u002F;\\n\u002F\u002F Used in makeIndent to strip spaces from blank lines and normalize CRLF to LF.\\nconst RE_BLANK_LINES = \u002F *\\\\r?\\\\n\u002Fg;\\n\u002F\u002F Used in makeIndent to measure the indentation.\\nconst RE_INDENT = \u002F( *)$\u002F;\\n\u002F\u002F Common tokens.\\nconst TOKEN_BRACE_OPEN = \u002F{\\\\s*\u002Fy;\\nconst TOKEN_BRACE_CLOSE = \u002F\\\\s*}\u002Fy;\\nconst TOKEN_BRACKET_OPEN = \u002F\\\\[\\\\s*\u002Fy;\\nconst TOKEN_BRACKET_CLOSE = \u002F\\\\s*] *\u002Fy;\\nconst TOKEN_PAREN_OPEN = \u002F\\\\s*\\\\(\\\\s*\u002Fy;\\nconst TOKEN_ARROW = \u002F\\\\s*->\\\\s*\u002Fy;\\nconst TOKEN_COLON = \u002F\\\\s*:\\\\s*\u002Fy;\\n\u002F\u002F Note the optional comma. As a deviation from the Fluent EBNF, the parser\\n\u002F\u002F doesn't enforce commas between call arguments.\\nconst TOKEN_COMMA = \u002F\\\\s*,?\\\\s*\u002Fy;\\nconst TOKEN_BLANK = \u002F\\\\s+\u002Fy;\\n\u002F**\\n * Fluent Resource is a structure storing parsed localization entries.\\n *\u002F\\nexport class FluentResource {\\n    constructor(source) {\\n        this.body = [];\\n        RE_MESSAGE_START.lastIndex = 0;\\n        let cursor = 0;\\n        \u002F\u002F Iterate over the beginnings of messages and terms to efficiently skip\\n        \u002F\u002F comments and recover from errors.\\n        while (true) {\\n            let next = RE_MESSAGE_START.exec(source);\\n            if (next === null) {\\n                break;\\n            }\\n            cursor = RE_MESSAGE_START.lastIndex;\\n            try {\\n                this.body.push(parseMessage(next[1]));\\n            }\\n            catch (err) {\\n                if (err instanceof SyntaxError) {\\n                    \u002F\u002F Don't report any Fluent syntax errors. Skip directly to the\\n                    \u002F\u002F beginning of the next message or term.\\n                    continue;\\n                }\\n                throw err;\\n            }\\n        }\\n        \u002F\u002F The parser implementation is inlined below for performance reasons,\\n        \u002F\u002F as well as for convenience of accessing `source` and `cursor`.\\n        \u002F\u002F The parser focuses on minimizing the number of false negatives at the\\n        \u002F\u002F expense of increasing the risk of false positives. In other words, it\\n        \u002F\u002F aims at parsing valid Fluent messages with a success rate of 100%, but it\\n        \u002F\u002F may also parse a few invalid messages which the reference parser would\\n        \u002F\u002F reject. The parser doesn't perform any validation and may produce entries\\n        \u002F\u002F which wouldn't make sense in the real world. For best results users are\\n        \u002F\u002F advised to validate translations with the fluent-syntax parser\\n        \u002F\u002F pre-runtime.\\n        \u002F\u002F The parser makes an extensive use of sticky regexes which can be anchored\\n        \u002F\u002F to any offset of the source string without slicing it. Errors are thrown\\n        \u002F\u002F to bail out of parsing of ill-formed messages.\\n        function test(re) {\\n            re.lastIndex = cursor;\\n            return re.test(source);\\n        }\\n        \u002F\u002F Advance the cursor by the char if it matches. May be used as a predicate\\n        \u002F\u002F (was the match found?) or, if errorClass is passed, as an assertion.\\n        function consumeChar(char, errorClass) {\\n            if (source[cursor] === char) {\\n                cursor++;\\n                return true;\\n            }\\n            if (errorClass) {\\n                throw new errorClass(`Expected ${char}`);\\n            }\\n            return false;\\n        }\\n        \u002F\u002F Advance the cursor by the token if it matches. May be used as a predicate\\n        \u002F\u002F (was the match found?) or, if errorClass is passed, as an assertion.\\n        function consumeToken(re, errorClass) {\\n            if (test(re)) {\\n                cursor = re.lastIndex;\\n                return true;\\n            }\\n            if (errorClass) {\\n                throw new errorClass(`Expected ${re.toString()}`);\\n            }\\n            return false;\\n        }\\n        \u002F\u002F Execute a regex, advance the cursor, and return all capture groups.\\n        function match(re) {\\n            re.lastIndex = cursor;\\n            let result = re.exec(source);\\n            if (result === null) {\\n                throw new SyntaxError(`Expected ${re.toString()}`);\\n            }\\n            cursor = re.lastIndex;\\n            return result;\\n        }\\n        \u002F\u002F Execute a regex, advance the cursor, and return the capture group.\\n        function match1(re) {\\n            return match(re)[1];\\n        }\\n        function parseMessage(id) {\\n            let value = parsePattern();\\n            let attributes = parseAttributes();\\n            if (value === null && Object.keys(attributes).length === 0) {\\n                throw new SyntaxError(\\\"Expected message value or attributes\\\");\\n            }\\n            return { id, value, attributes };\\n        }\\n        function parseAttributes() {\\n            let attrs = Object.create(null);\\n            while (test(RE_ATTRIBUTE_START)) {\\n                let name = match1(RE_ATTRIBUTE_START);\\n                let value = parsePattern();\\n                if (value === null) {\\n                    throw new SyntaxError(\\\"Expected attribute value\\\");\\n                }\\n                attrs[name] = value;\\n            }\\n            return attrs;\\n        }\\n        function parsePattern() {\\n            let first;\\n            \u002F\u002F First try to parse any simple text on the same line as the id.\\n            if (test(RE_TEXT_RUN)) {\\n                first = match1(RE_TEXT_RUN);\\n            }\\n            \u002F\u002F If there's a placeable on the first line, parse a complex pattern.\\n            if (source[cursor] === \\\"{\\\" || source[cursor] === \\\"}\\\") {\\n                \u002F\u002F Re-use the text parsed above, if possible.\\n                return parsePatternElements(first ? [first] : [], Infinity);\\n            }\\n            \u002F\u002F RE_TEXT_VALUE stops at newlines. Only continue parsing the pattern if\\n            \u002F\u002F what comes after the newline is indented.\\n            let indent = parseIndent();\\n            if (indent) {\\n                if (first) {\\n                    \u002F\u002F If there's text on the first line, the blank block is part of the\\n                    \u002F\u002F translation content in its entirety.\\n                    return parsePatternElements([first, indent], indent.length);\\n                }\\n                \u002F\u002F Otherwise, we're dealing with a block pattern, i.e. a pattern which\\n                \u002F\u002F starts on a new line. Discrad the leading newlines but keep the\\n                \u002F\u002F inline indent; it will be used by the dedentation logic.\\n                indent.value = trim(indent.value, RE_LEADING_NEWLINES);\\n                return parsePatternElements([indent], indent.length);\\n            }\\n            if (first) {\\n                \u002F\u002F It was just a simple inline text after all.\\n                return trim(first, RE_TRAILING_SPACES);\\n            }\\n            return null;\\n        }\\n        \u002F\u002F Parse a complex pattern as an array of elements.\\n        function parsePatternElements(elements = [], commonIndent) {\\n            while (true) {\\n                if (test(RE_TEXT_RUN)) {\\n                    elements.push(match1(RE_TEXT_RUN));\\n                    continue;\\n                }\\n                if (source[cursor] === \\\"{\\\") {\\n                    elements.push(parsePlaceable());\\n                    continue;\\n                }\\n                if (source[cursor] === \\\"}\\\") {\\n                    throw new SyntaxError(\\\"Unbalanced closing brace\\\");\\n                }\\n                let indent = parseIndent();\\n                if (indent) {\\n                    elements.push(indent);\\n                    commonIndent = Math.min(commonIndent, indent.length);\\n                    continue;\\n                }\\n                break;\\n            }\\n            let lastIndex = elements.length - 1;\\n            let lastElement = elements[lastIndex];\\n            \u002F\u002F Trim the trailing spaces in the last element if it's a TextElement.\\n            if (typeof lastElement === \\\"string\\\") {\\n                elements[lastIndex] = trim(lastElement, RE_TRAILING_SPACES);\\n            }\\n            let baked = [];\\n            for (let element of elements) {\\n                if (element instanceof Indent) {\\n                    \u002F\u002F Dedent indented lines by the maximum common indent.\\n                    element = element.value.slice(0, element.value.length - commonIndent);\\n                }\\n                if (element) {\\n                    baked.push(element);\\n                }\\n            }\\n            return baked;\\n        }\\n        function parsePlaceable() {\\n            consumeToken(TOKEN_BRACE_OPEN, SyntaxError);\\n            let selector = parseInlineExpression();\\n            if (consumeToken(TOKEN_BRACE_CLOSE)) {\\n                return selector;\\n            }\\n            if (consumeToken(TOKEN_ARROW)) {\\n                let variants = parseVariants();\\n                consumeToken(TOKEN_BRACE_CLOSE, SyntaxError);\\n                return {\\n                    type: \\\"select\\\",\\n                    selector,\\n                    ...variants,\\n                };\\n            }\\n            throw new SyntaxError(\\\"Unclosed placeable\\\");\\n        }\\n        function parseInlineExpression() {\\n            if (source[cursor] === \\\"{\\\") {\\n                \u002F\u002F It's a nested placeable.\\n                return parsePlaceable();\\n            }\\n            if (test(RE_REFERENCE)) {\\n                let [, sigil, name, attr = null] = match(RE_REFERENCE);\\n                if (sigil === \\\"$\\\") {\\n                    return { type: \\\"var\\\", name };\\n                }\\n                if (consumeToken(TOKEN_PAREN_OPEN)) {\\n                    let args = parseArguments();\\n                    if (sigil === \\\"-\\\") {\\n                        \u002F\u002F A parameterized term: -term(...).\\n                        return { type: \\\"term\\\", name, attr, args };\\n                    }\\n                    if (RE_FUNCTION_NAME.test(name)) {\\n                        return { type: \\\"func\\\", name, args };\\n                    }\\n                    throw new SyntaxError(\\\"Function names must be all upper-case\\\");\\n                }\\n                if (sigil === \\\"-\\\") {\\n                    \u002F\u002F A non-parameterized term: -term.\\n                    return {\\n                        type: \\\"term\\\",\\n                        name,\\n                        attr,\\n                        args: [],\\n                    };\\n                }\\n                return { type: \\\"mesg\\\", name, attr };\\n            }\\n            return parseLiteral();\\n        }\\n        function parseArguments() {\\n            let args = [];\\n            while (true) {\\n                switch (source[cursor]) {\\n                    case \\\")\\\": \u002F\u002F End of the argument list.\\n                        cursor++;\\n                        return args;\\n                    case undefined: \u002F\u002F EOF\\n                        throw new SyntaxError(\\\"Unclosed argument list\\\");\\n                }\\n                args.push(parseArgument());\\n                \u002F\u002F Commas between arguments are treated as whitespace.\\n                consumeToken(TOKEN_COMMA);\\n            }\\n        }\\n        function parseArgument() {\\n            let expr = parseInlineExpression();\\n            if (expr.type !== \\\"mesg\\\") {\\n                return expr;\\n            }\\n            if (consumeToken(TOKEN_COLON)) {\\n                \u002F\u002F The reference is the beginning of a named argument.\\n                return {\\n                    type: \\\"narg\\\",\\n                    name: expr.name,\\n                    value: parseLiteral(),\\n                };\\n            }\\n            \u002F\u002F It's a regular message reference.\\n            return expr;\\n        }\\n        function parseVariants() {\\n            let variants = [];\\n            let count = 0;\\n            let star;\\n            while (test(RE_VARIANT_START)) {\\n                if (consumeChar(\\\"*\\\")) {\\n                    star = count;\\n                }\\n                let key = parseVariantKey();\\n                let value = parsePattern();\\n                if (value === null) {\\n                    throw new SyntaxError(\\\"Expected variant value\\\");\\n                }\\n                variants[count++] = { key, value };\\n            }\\n            if (count === 0) {\\n                return null;\\n            }\\n            if (star === undefined) {\\n                throw new SyntaxError(\\\"Expected default variant\\\");\\n            }\\n            return { variants, star };\\n        }\\n        function parseVariantKey() {\\n            consumeToken(TOKEN_BRACKET_OPEN, SyntaxError);\\n            let key;\\n            if (test(RE_NUMBER_LITERAL)) {\\n                key = parseNumberLiteral();\\n            }\\n            else {\\n                key = {\\n                    type: \\\"str\\\",\\n                    value: match1(RE_IDENTIFIER),\\n                };\\n            }\\n            consumeToken(TOKEN_BRACKET_CLOSE, SyntaxError);\\n            return key;\\n        }\\n        function parseLiteral() {\\n            if (test(RE_NUMBER_LITERAL)) {\\n                return parseNumberLiteral();\\n            }\\n            if (source[cursor] === '\\\"') {\\n                return parseStringLiteral();\\n            }\\n            throw new SyntaxError(\\\"Invalid expression\\\");\\n        }\\n        function parseNumberLiteral() {\\n            let [, value, fraction = \\\"\\\"] = match(RE_NUMBER_LITERAL);\\n            let precision = fraction.length;\\n            return {\\n                type: \\\"num\\\",\\n                value: parseFloat(value),\\n                precision,\\n            };\\n        }\\n        function parseStringLiteral() {\\n            consumeChar('\\\"', SyntaxError);\\n            let value = \\\"\\\";\\n            while (true) {\\n                value += match1(RE_STRING_RUN);\\n                if (source[cursor] === \\\"\\\\\\\\\\\") {\\n                    value += parseEscapeSequence();\\n                    continue;\\n                }\\n                if (consumeChar('\\\"')) {\\n                    return { type: \\\"str\\\", value };\\n                }\\n                \u002F\u002F We've reached an EOL of EOF.\\n                throw new SyntaxError(\\\"Unclosed string literal\\\");\\n            }\\n        }\\n        \u002F\u002F Unescape known escape sequences.\\n        function parseEscapeSequence() {\\n            if (test(RE_STRING_ESCAPE)) {\\n                return match1(RE_STRING_ESCAPE);\\n            }\\n            if (test(RE_UNICODE_ESCAPE)) {\\n                let [, codepoint4, codepoint6] = match(RE_UNICODE_ESCAPE);\\n                let codepoint = parseInt(codepoint4 || codepoint6, 16);\\n                return codepoint \u003C= 0xd7ff || 0xe000 \u003C= codepoint\\n                    ? \u002F\u002F It's a Unicode scalar value.\\n                        String.fromCodePoint(codepoint)\\n                    : \u002F\u002F Lonely surrogates can cause trouble when the parsing result is\\n                        \u002F\u002F saved using UTF-8. Use U+FFFD REPLACEMENT CHARACTER instead.\\n                        \\\"�\\\";\\n            }\\n            throw new SyntaxError(\\\"Unknown escape sequence\\\");\\n        }\\n        \u002F\u002F Parse blank space. Return it if it looks like indent before a pattern\\n        \u002F\u002F line. Skip it othwerwise.\\n        function parseIndent() {\\n            let start = cursor;\\n            consumeToken(TOKEN_BLANK);\\n            \u002F\u002F Check the first non-blank character after the indent.\\n            switch (source[cursor]) {\\n                case \\\".\\\":\\n                case \\\"[\\\":\\n                case \\\"*\\\":\\n                case \\\"}\\\":\\n                case undefined: \u002F\u002F EOF\\n                    \u002F\u002F A special character. End the Pattern.\\n                    return false;\\n                case \\\"{\\\":\\n                    \u002F\u002F Placeables don't require indentation (in EBNF: block-placeable).\\n                    \u002F\u002F Continue the Pattern.\\n                    return makeIndent(source.slice(start, cursor));\\n            }\\n            \u002F\u002F If the first character on the line is not one of the special characters\\n            \u002F\u002F listed above, it's a regular text character. Check if there's at least\\n            \u002F\u002F one space of indent before it.\\n            if (source[cursor - 1] === \\\" \\\") {\\n                \u002F\u002F It's an indented text character (in EBNF: indented-char). Continue\\n                \u002F\u002F the Pattern.\\n                return makeIndent(source.slice(start, cursor));\\n            }\\n            \u002F\u002F A not-indented text character is likely the identifier of the next\\n            \u002F\u002F message. End the Pattern.\\n            return false;\\n        }\\n        \u002F\u002F Trim blanks in text according to the given regex.\\n        function trim(text, re) {\\n            return text.replace(re, \\\"\\\");\\n        }\\n        \u002F\u002F Normalize a blank block and extract the indent details.\\n        function makeIndent(blank) {\\n            let value = blank.replace(RE_BLANK_LINES, \\\"\\\\n\\\");\\n            \u002F\u002F eslint-disable-next-line @typescript-eslint\u002Fno-non-null-assertion\\n            let length = RE_INDENT.exec(blank)[1].length;\\n            return new Indent(value, length);\\n        }\\n    }\\n}\\nclass Indent {\\n    constructor(value, length) {\\n        this.value = value;\\n        this.length = length;\\n    }\\n}\\n\",\"\u002F**\\n * @module fluent\\n * @overview\\n *\\n * `fluent` is a JavaScript implementation of Project Fluent, a localization\\n * framework designed to unleash the expressive power of the natural language.\\n *\\n *\u002F\\nexport { FluentBundle } from \\\".\u002Fbundle.js\\\";\\nexport { FluentResource } from \\\".\u002Fresource.js\\\";\\nexport { FluentType, FluentNone, FluentNumber, FluentDateTime, } from \\\".\u002Ftypes.js\\\";\\n\",\"\u002F* eslint no-console: [\\\"error\\\", {allow: [\\\"warn\\\"]}] *\u002F\\n\u002F* global console *\u002F\\n\u002F\u002F Match the opening angle bracket (\u003C) in HTML tags, and HTML entities like\\n\u002F\u002F &amp;, &#0038;, &#x0026;.\\nconst reOverlay = \u002F\u003C|&#?\\\\w+;\u002F;\\n\u002F**\\n * Elements allowed in translations even if they are not present in the source\\n * HTML. They are text-level elements as defined by the HTML5 spec:\\n * https:\u002F\u002Fwww.w3.org\u002FTR\u002Fhtml5\u002Ftext-level-semantics.html with the exception of:\\n *\\n *   - a - because we don't allow href on it anyways,\\n *   - ruby, rt, rp - because we don't allow nested elements to be inserted.\\n *\u002F\\nconst TEXT_LEVEL_ELEMENTS = {\\n    \\\"http:\u002F\u002Fwww.w3.org\u002F1999\u002Fxhtml\\\": [\\n        \\\"em\\\",\\n        \\\"strong\\\",\\n        \\\"small\\\",\\n        \\\"s\\\",\\n        \\\"cite\\\",\\n        \\\"q\\\",\\n        \\\"dfn\\\",\\n        \\\"abbr\\\",\\n        \\\"data\\\",\\n        \\\"time\\\",\\n        \\\"code\\\",\\n        \\\"var\\\",\\n        \\\"samp\\\",\\n        \\\"kbd\\\",\\n        \\\"sub\\\",\\n        \\\"sup\\\",\\n        \\\"i\\\",\\n        \\\"b\\\",\\n        \\\"u\\\",\\n        \\\"mark\\\",\\n        \\\"bdi\\\",\\n        \\\"bdo\\\",\\n        \\\"span\\\",\\n        \\\"br\\\",\\n        \\\"wbr\\\",\\n    ],\\n};\\nconst LOCALIZABLE_ATTRIBUTES = {\\n    \\\"http:\u002F\u002Fwww.w3.org\u002F1999\u002Fxhtml\\\": {\\n        global: [\\\"title\\\", \\\"aria-label\\\", \\\"aria-valuetext\\\"],\\n        a: [\\\"download\\\"],\\n        area: [\\\"download\\\", \\\"alt\\\"],\\n        \u002F\u002F value is special-cased in isAttrNameLocalizable\\n        input: [\\\"alt\\\", \\\"placeholder\\\"],\\n        menuitem: [\\\"label\\\"],\\n        menu: [\\\"label\\\"],\\n        optgroup: [\\\"label\\\"],\\n        option: [\\\"label\\\"],\\n        track: [\\\"label\\\"],\\n        img: [\\\"alt\\\"],\\n        textarea: [\\\"placeholder\\\"],\\n        th: [\\\"abbr\\\"],\\n    },\\n    \\\"http:\u002F\u002Fwww.mozilla.org\u002Fkeymaster\u002Fgatekeeper\u002Fthere.is.only.xul\\\": {\\n        global: [\\n            \\\"accesskey\\\",\\n            \\\"aria-label\\\",\\n            \\\"aria-valuetext\\\",\\n            \\\"label\\\",\\n            \\\"title\\\",\\n            \\\"tooltiptext\\\",\\n        ],\\n        description: [\\\"value\\\"],\\n        key: [\\\"key\\\", \\\"keycode\\\"],\\n        label: [\\\"value\\\"],\\n        textbox: [\\\"placeholder\\\", \\\"value\\\"],\\n    },\\n};\\n\u002F**\\n * Translate an element.\\n *\\n * Translate the element's text content and attributes. Some HTML markup is\\n * allowed in the translation. The element's children with the data-l10n-name\\n * attribute will be treated as arguments to the translation. If the\\n * translation defines the same children, their attributes and text contents\\n * will be used for translating the matching source child.\\n *\\n * @param   {Element} element\\n * @param   {Object} translation\\n * @private\\n *\u002F\\nexport default function translateElement(element, translation) {\\n    const { value } = translation;\\n    if (typeof value === \\\"string\\\") {\\n        if (element.localName === \\\"title\\\" &&\\n            element.namespaceURI === \\\"http:\u002F\u002Fwww.w3.org\u002F1999\u002Fxhtml\\\") {\\n            \u002F\u002F A special case for the HTML title element whose content must be text.\\n            element.textContent = value;\\n        }\\n        else if (!reOverlay.test(value)) {\\n            \u002F\u002F If the translation doesn't contain any markup skip the overlay logic.\\n            element.textContent = value;\\n        }\\n        else {\\n            \u002F\u002F Else parse the translation's HTML using an inert template element,\\n            \u002F\u002F sanitize it and replace the element's content.\\n            const templateElement = element.ownerDocument.createElementNS(\\\"http:\u002F\u002Fwww.w3.org\u002F1999\u002Fxhtml\\\", \\\"template\\\");\\n            templateElement.innerHTML = value;\\n            overlayChildNodes(templateElement.content, element);\\n        }\\n    }\\n    \u002F\u002F Even if the translation doesn't define any localizable attributes, run\\n    \u002F\u002F overlayAttributes to remove any localizable attributes set by previous\\n    \u002F\u002F translations.\\n    overlayAttributes(translation, element);\\n}\\n\u002F**\\n * Replace child nodes of an element with child nodes of another element.\\n *\\n * The contents of the target element will be cleared and fully replaced with\\n * sanitized contents of the source element.\\n *\\n * @param {DocumentFragment} fromFragment - The source of children to overlay.\\n * @param {Element} toElement - The target of the overlay.\\n * @private\\n *\u002F\\nfunction overlayChildNodes(fromFragment, toElement) {\\n    for (const childNode of fromFragment.childNodes) {\\n        if (childNode.nodeType === childNode.TEXT_NODE) {\\n            \u002F\u002F Keep the translated text node.\\n            continue;\\n        }\\n        if (childNode.hasAttribute(\\\"data-l10n-name\\\")) {\\n            const sanitized = getNodeForNamedElement(toElement, childNode);\\n            fromFragment.replaceChild(sanitized, childNode);\\n            continue;\\n        }\\n        if (isElementAllowed(childNode)) {\\n            const sanitized = createSanitizedElement(childNode);\\n            fromFragment.replaceChild(sanitized, childNode);\\n            continue;\\n        }\\n        console.warn(`An element of forbidden type \\\"${childNode.localName}\\\" was found in ` +\\n            \\\"the translation. Only safe text-level elements and elements with \\\" +\\n            \\\"data-l10n-name are allowed.\\\");\\n        \u002F\u002F If all else fails, replace the element with its text content.\\n        fromFragment.replaceChild(createTextNodeFromTextContent(childNode), childNode);\\n    }\\n    toElement.textContent = \\\"\\\";\\n    toElement.appendChild(fromFragment);\\n}\\nfunction hasAttribute(attributes, name) {\\n    if (!attributes) {\\n        return false;\\n    }\\n    for (let attr of attributes) {\\n        if (attr.name === name) {\\n            return true;\\n        }\\n    }\\n    return false;\\n}\\n\u002F**\\n * Transplant localizable attributes of an element to another element.\\n *\\n * Any localizable attributes already set on the target element will be\\n * cleared.\\n *\\n * @param   {Element|Object} fromElement - The source of child nodes to overlay.\\n * @param   {Element} toElement - The target of the overlay.\\n * @private\\n *\u002F\\nfunction overlayAttributes(fromElement, toElement) {\\n    const explicitlyAllowed = toElement.hasAttribute(\\\"data-l10n-attrs\\\")\\n        ? toElement\\n            .getAttribute(\\\"data-l10n-attrs\\\")\\n            .split(\\\",\\\")\\n            .map(i => i.trim())\\n        : null;\\n    \u002F\u002F Remove existing localizable attributes if they\\n    \u002F\u002F will not be used in the new translation.\\n    for (const attr of Array.from(toElement.attributes)) {\\n        if (isAttrNameLocalizable(attr.name, toElement, explicitlyAllowed) &&\\n            !hasAttribute(fromElement.attributes, attr.name)) {\\n            toElement.removeAttribute(attr.name);\\n        }\\n    }\\n    \u002F\u002F fromElement might be a {value, attributes} object as returned by\\n    \u002F\u002F Localization.messageFromBundle. In which case attributes may be null to\\n    \u002F\u002F save GC cycles.\\n    if (!fromElement.attributes) {\\n        return;\\n    }\\n    \u002F\u002F Set localizable attributes.\\n    for (const attr of Array.from(fromElement.attributes)) {\\n        if (isAttrNameLocalizable(attr.name, toElement, explicitlyAllowed) &&\\n            toElement.getAttribute(attr.name) !== attr.value) {\\n            toElement.setAttribute(attr.name, attr.value);\\n        }\\n    }\\n}\\n\u002F**\\n * Sanitize a child element created by the translation.\\n *\\n * Try to find a corresponding child in sourceElement and use it as the base\\n * for the sanitization. This will preserve functional attribtues defined on\\n * the child element in the source HTML.\\n *\\n * @param   {Element} sourceElement - The source for data-l10n-name lookups.\\n * @param   {Element} translatedChild - The translated child to be sanitized.\\n * @returns {Element}\\n * @private\\n *\u002F\\nfunction getNodeForNamedElement(sourceElement, translatedChild) {\\n    const childName = translatedChild.getAttribute(\\\"data-l10n-name\\\");\\n    const sourceChild = sourceElement.querySelector(`[data-l10n-name=\\\"${childName}\\\"]`);\\n    if (!sourceChild) {\\n        console.warn(`An element named \\\"${childName}\\\" wasn't found in the source.`);\\n        return createTextNodeFromTextContent(translatedChild);\\n    }\\n    if (sourceChild.localName !== translatedChild.localName) {\\n        console.warn(`An element named \\\"${childName}\\\" was found in the translation ` +\\n            `but its type ${translatedChild.localName} didn't match the ` +\\n            `element found in the source (${sourceChild.localName}).`);\\n        return createTextNodeFromTextContent(translatedChild);\\n    }\\n    \u002F\u002F Remove it from sourceElement so that the translation cannot use\\n    \u002F\u002F the same reference name again.\\n    sourceElement.removeChild(sourceChild);\\n    \u002F\u002F We can't currently guarantee that a translation won't remove\\n    \u002F\u002F sourceChild from the element completely, which could break the app if\\n    \u002F\u002F it relies on an event handler attached to the sourceChild. Let's make\\n    \u002F\u002F this limitation explicit for now by breaking the identitiy of the\\n    \u002F\u002F sourceChild by cloning it. This will destroy all event handlers\\n    \u002F\u002F attached to sourceChild via addEventListener and via on\u003Cname>\\n    \u002F\u002F properties.\\n    const clone = sourceChild.cloneNode(false);\\n    return shallowPopulateUsing(translatedChild, clone);\\n}\\n\u002F**\\n * Sanitize an allowed element.\\n *\\n * Text-level elements allowed in translations may only use safe attributes\\n * and will have any nested markup stripped to text content.\\n *\\n * @param   {Element} element - The element to be sanitized.\\n * @returns {Element}\\n * @private\\n *\u002F\\nfunction createSanitizedElement(element) {\\n    \u002F\u002F Start with an empty element of the same type to remove nested children\\n    \u002F\u002F and non-localizable attributes defined by the translation.\\n    const clone = element.ownerDocument.createElement(element.localName);\\n    return shallowPopulateUsing(element, clone);\\n}\\n\u002F**\\n * Convert an element to a text node.\\n *\\n * @param   {Element} element - The element to be sanitized.\\n * @returns {Node}\\n * @private\\n *\u002F\\nfunction createTextNodeFromTextContent(element) {\\n    return element.ownerDocument.createTextNode(element.textContent);\\n}\\n\u002F**\\n * Check if element is allowed in the translation.\\n *\\n * This method is used by the sanitizer when the translation markup contains\\n * an element which is not present in the source code.\\n *\\n * @param   {Element} element\\n * @returns {boolean}\\n * @private\\n *\u002F\\nfunction isElementAllowed(element) {\\n    const allowed = TEXT_LEVEL_ELEMENTS[element.namespaceURI];\\n    return allowed && allowed.includes(element.localName);\\n}\\n\u002F**\\n * Check if attribute is allowed for the given element.\\n *\\n * This method is used by the sanitizer when the translation markup contains\\n * DOM attributes, or when the translation has traits which map to DOM\\n * attributes.\\n *\\n * `explicitlyAllowed` can be passed as a list of attributes explicitly\\n * allowed on this element.\\n *\\n * @param   {string}         name\\n * @param   {Element}        element\\n * @param   {Array}          explicitlyAllowed\\n * @returns {boolean}\\n * @private\\n *\u002F\\nfunction isAttrNameLocalizable(name, element, explicitlyAllowed = null) {\\n    if (explicitlyAllowed && explicitlyAllowed.includes(name)) {\\n        return true;\\n    }\\n    const allowed = LOCALIZABLE_ATTRIBUTES[element.namespaceURI];\\n    if (!allowed) {\\n        return false;\\n    }\\n    const attrName = name.toLowerCase();\\n    const elemName = element.localName;\\n    \u002F\u002F Is it a globally safe attribute?\\n    if (allowed.global.includes(attrName)) {\\n        return true;\\n    }\\n    \u002F\u002F Are there no allowed attributes for this element?\\n    if (!allowed[elemName]) {\\n        return false;\\n    }\\n    \u002F\u002F Is it allowed on this element?\\n    if (allowed[elemName].includes(attrName)) {\\n        return true;\\n    }\\n    \u002F\u002F Special case for value on HTML inputs with type button, reset, submit\\n    if (element.namespaceURI === \\\"http:\u002F\u002Fwww.w3.org\u002F1999\u002Fxhtml\\\" &&\\n        elemName === \\\"input\\\" &&\\n        attrName === \\\"value\\\") {\\n        const type = element.type.toLowerCase();\\n        if (type === \\\"submit\\\" || type === \\\"button\\\" || type === \\\"reset\\\") {\\n            return true;\\n        }\\n    }\\n    return false;\\n}\\n\u002F**\\n * Helper to set textContent and localizable attributes on an element.\\n *\\n * @param   {Element} fromElement\\n * @param   {Element} toElement\\n * @returns {Element}\\n * @private\\n *\u002F\\nfunction shallowPopulateUsing(fromElement, toElement) {\\n    toElement.textContent = fromElement.textContent;\\n    overlayAttributes(fromElement, toElement);\\n    return toElement;\\n}\\n\",\"\u002F*\\n * Base CachedIterable class.\\n *\u002F\\nexport default class CachedIterable extends Array {\\n    \u002F**\\n     * Create a `CachedIterable` instance from an iterable or, if another\\n     * instance of `CachedIterable` is passed, return it without any\\n     * modifications.\\n     *\\n     * @param {Iterable} iterable\\n     * @returns {CachedIterable}\\n     *\u002F\\n    static from(iterable) {\\n        if (iterable instanceof this) {\\n            return iterable;\\n        }\\n\\n        return new this(iterable);\\n    }\\n}\\n\",\"import CachedIterable from \\\".\u002Fcached_iterable.js\\\";\\n\\n\u002F*\\n * CachedSyncIterable caches the elements yielded by an iterable.\\n *\\n * It can be used to iterate over an iterable many times without depleting the\\n * iterable.\\n *\u002F\\nexport default class CachedSyncIterable extends CachedIterable {\\n    \u002F**\\n     * Create an `CachedSyncIterable` instance.\\n     *\\n     * @param {Iterable} iterable\\n     * @returns {CachedSyncIterable}\\n     *\u002F\\n    constructor(iterable) {\\n        super();\\n\\n        if (Symbol.iterator in Object(iterable)) {\\n            this.iterator = iterable[Symbol.iterator]();\\n        } else {\\n            throw new TypeError(\\\"Argument must implement the iteration protocol.\\\");\\n        }\\n    }\\n\\n    [Symbol.iterator]() {\\n        const cached = this;\\n        let cur = 0;\\n\\n        return {\\n            next() {\\n                if (cached.length \u003C= cur) {\\n                    cached.push(cached.iterator.next());\\n                }\\n                return cached[cur++];\\n            }\\n        };\\n    }\\n\\n    \u002F**\\n     * This method allows user to consume the next element from the iterator\\n     * into the cache.\\n     *\\n     * @param {number} count - number of elements to consume\\n     *\u002F\\n    touchNext(count = 1) {\\n        let idx = 0;\\n        while (idx++ \u003C count) {\\n            const last = this[this.length - 1];\\n            if (last && last.done) {\\n                break;\\n            }\\n            this.push(this.iterator.next());\\n        }\\n        \u002F\u002F Return the last cached {value, done} object to allow the calling\\n        \u002F\u002F code to decide if it needs to call touchNext again.\\n        return this[this.length - 1];\\n    }\\n}\\n\",\"import CachedIterable from \\\".\u002Fcached_iterable.js\\\";\\n\\n\u002F*\\n * CachedAsyncIterable caches the elements yielded by an async iterable.\\n *\\n * It can be used to iterate over an iterable many times without depleting the\\n * iterable.\\n *\u002F\\nexport default class CachedAsyncIterable extends CachedIterable {\\n    \u002F**\\n     * Create an `CachedAsyncIterable` instance.\\n     *\\n     * @param {Iterable} iterable\\n     * @returns {CachedAsyncIterable}\\n     *\u002F\\n    constructor(iterable) {\\n        super();\\n\\n        if (Symbol.asyncIterator in Object(iterable)) {\\n            this.iterator = iterable[Symbol.asyncIterator]();\\n        } else if (Symbol.iterator in Object(iterable)) {\\n            this.iterator = iterable[Symbol.iterator]();\\n        } else {\\n            throw new TypeError(\\\"Argument must implement the iteration protocol.\\\");\\n        }\\n    }\\n\\n    \u002F**\\n     * Asynchronous iterator caching the yielded elements.\\n     *\\n     * Elements yielded by the original iterable will be cached and available\\n     * synchronously. Returns an async generator object implementing the\\n     * iterator protocol over the elements of the original (async or sync)\\n     * iterable.\\n     *\u002F\\n    [Symbol.asyncIterator]() {\\n        const cached = this;\\n        let cur = 0;\\n\\n        return {\\n            async next() {\\n                if (cached.length \u003C= cur) {\\n                    cached.push(cached.iterator.next());\\n                }\\n                return cached[cur++];\\n            }\\n        };\\n    }\\n\\n    \u002F**\\n     * This method allows user to consume the next element from the iterator\\n     * into the cache.\\n     *\\n     * @param {number} count - number of elements to consume\\n     *\u002F\\n    async touchNext(count = 1) {\\n        let idx = 0;\\n        while (idx++ \u003C count) {\\n            const last = this[this.length - 1];\\n            if (last && (await last).done) {\\n                break;\\n            }\\n            this.push(this.iterator.next());\\n        }\\n        \u002F\u002F Return the last cached {value, done} object to allow the calling\\n        \u002F\u002F code to decide if it needs to call touchNext again.\\n        return this[this.length - 1];\\n    }\\n}\\n\",\"export {default as CachedSyncIterable} from \\\".\u002Fcached_sync_iterable.js\\\";\\nexport {default as CachedAsyncIterable} from \\\".\u002Fcached_async_iterable.js\\\";\\n\",\"\u002F* eslint no-console: [\\\"error\\\", { allow: [\\\"warn\\\", \\\"error\\\"] }] *\u002F\\n\u002F* global console *\u002F\\nimport { CachedAsyncIterable } from \\\"cached-iterable\\\";\\n\u002F**\\n * The `Localization` class is a central high-level API for vanilla\\n * JavaScript use of Fluent.\\n * It combines language negotiation, FluentBundle and I\u002FO to\\n * provide a scriptable API to format translations.\\n *\u002F\\nexport default class Localization {\\n    \u002F**\\n     * @param {Array\u003CString>} resourceIds     - List of resource IDs\\n     * @param {Function}      generateBundles - Function that returns a\\n     *                                          generator over FluentBundles\\n     *\\n     * @returns {Localization}\\n     *\u002F\\n    constructor(resourceIds = [], generateBundles) {\\n        this.resourceIds = resourceIds;\\n        this.generateBundles = generateBundles;\\n        this.onChange(true);\\n    }\\n    addResourceIds(resourceIds, eager = false) {\\n        this.resourceIds.push(...resourceIds);\\n        this.onChange(eager);\\n        return this.resourceIds.length;\\n    }\\n    removeResourceIds(resourceIds) {\\n        this.resourceIds = this.resourceIds.filter(r => !resourceIds.includes(r));\\n        this.onChange();\\n        return this.resourceIds.length;\\n    }\\n    \u002F**\\n     * Format translations and handle fallback if needed.\\n     *\\n     * Format translations for `keys` from `FluentBundle` instances on this\\n     * DOMLocalization. In case of errors, fetch the next context in the\\n     * fallback chain.\\n     *\\n     * @param   {Array\u003CObject>}         keys    - Translation keys to format.\\n     * @param   {Function}              method  - Formatting function.\\n     * @returns {Promise\u003CArray\u003Cstring|Object>>}\\n     * @private\\n     *\u002F\\n    async formatWithFallback(keys, method) {\\n        const translations = [];\\n        let hasAtLeastOneBundle = false;\\n        for await (const bundle of this.bundles) {\\n            hasAtLeastOneBundle = true;\\n            const missingIds = keysFromBundle(method, bundle, keys, translations);\\n            if (missingIds.size === 0) {\\n                break;\\n            }\\n            if (typeof console !== \\\"undefined\\\") {\\n                const locale = bundle.locales[0];\\n                const ids = Array.from(missingIds).join(\\\", \\\");\\n                console.warn(`[fluent] Missing translations in ${locale}: ${ids}`);\\n            }\\n        }\\n        if (!hasAtLeastOneBundle && typeof console !== \\\"undefined\\\") {\\n            \u002F\u002F eslint-disable-next-line max-len\\n            console.warn(`[fluent] Request for keys failed because no resource bundles got generated.\\n  keys: ${JSON.stringify(keys)}.\\n  resourceIds: ${JSON.stringify(this.resourceIds)}.`);\\n        }\\n        return translations;\\n    }\\n    \u002F**\\n     * Format translations into `{value, attributes}` objects.\\n     *\\n     * The fallback logic is the same as in `formatValues`\\n     * but it returns `{value, attributes}` objects\\n     * which are suitable for the translation of DOM elements.\\n     *\\n     * Returns a Promise resolving to an array of the translation strings.\\n     *\\n     * @example\\n     * ```js\\n     * docL10n.formatMessages([\\n     *   {id: 'hello', args: { who: 'Mary' }},\\n     *   {id: 'welcome'}\\n     * ]).then(console.log);\\n     *\\n     * \u002F\u002F [\\n     * \u002F\u002F   { value: 'Hello, Mary!', attributes: null },\\n     * \u002F\u002F   {\\n     * \u002F\u002F     value: 'Welcome!',\\n     * \u002F\u002F     attributes: [ { name: \\\"title\\\", value: 'Hello' } ]\\n     * \u002F\u002F   }\\n     * \u002F\u002F ]\\n     * ```\\n     *\\n     * @param   {Array\u003CObject>} keys\\n     * @returns {Promise\u003CArray\u003C{value: string, attributes: Object}>>}\\n     * @private\\n     *\u002F\\n    formatMessages(keys) {\\n        return this.formatWithFallback(keys, messageFromBundle);\\n    }\\n    \u002F**\\n     * Retrieve translations corresponding to the passed keys.\\n     *\\n     * A generalized version of `DOMLocalization.formatValue`. Keys must\\n     * be `{id, args}` objects.\\n     *\\n     * Returns a Promise resolving to an array of the translation strings.\\n     *\\n     * @example\\n     * ```js\\n     * docL10n.formatValues([\\n     *   {id: 'hello', args: { who: 'Mary' }},\\n     *   {id: 'hello', args: { who: 'John' }},\\n     *   {id: 'welcome'}\\n     * ]).then(console.log);\\n     *\\n     * \u002F\u002F ['Hello, Mary!', 'Hello, John!', 'Welcome!']\\n     * ```\\n     *\\n     * @param   {Array\u003CObject>} keys\\n     * @returns {Promise\u003CArray\u003Cstring>>}\\n     *\u002F\\n    formatValues(keys) {\\n        return this.formatWithFallback(keys, valueFromBundle);\\n    }\\n    \u002F**\\n     * Retrieve the translation corresponding to the `id` identifier.\\n     *\\n     * If passed, `args` is a simple hash object with a list of variables that\\n     * will be interpolated in the value of the translation.\\n     *\\n     * Returns a Promise resolving to the translation string.\\n     *\\n     * Use this sparingly for one-off messages which don't need to be\\n     * retranslated when the user changes their language preferences, e.g. in\\n     * notifications.\\n     *\\n     * @example\\n     * ```js\\n     * docL10n.formatValue(\\n     *   'hello', { who: 'world' }\\n     * ).then(console.log);\\n     *\\n     * \u002F\u002F 'Hello, world!'\\n     * ```\\n     *\\n     * @param   {string}  id     - Identifier of the translation to format\\n     * @param   {Object}  [args] - Optional external arguments\\n     * @returns {Promise\u003Cstring>}\\n     *\u002F\\n    async formatValue(id, args) {\\n        const [val] = await this.formatValues([{ id, args }]);\\n        return val;\\n    }\\n    handleEvent() {\\n        this.onChange();\\n    }\\n    \u002F**\\n     * This method should be called when there's a reason to believe\\n     * that language negotiation or available resources changed.\\n     *\u002F\\n    onChange(eager = false) {\\n        this.bundles = CachedAsyncIterable.from(this.generateBundles(this.resourceIds));\\n        if (eager) {\\n            this.bundles.touchNext(2);\\n        }\\n    }\\n}\\n\u002F**\\n * Format the value of a message into a string or `null`.\\n *\\n * This function is passed as a method to `keysFromBundle` and resolve\\n * a value of a single L10n Entity using provided `FluentBundle`.\\n *\\n * If the message doesn't have a value, return `null`.\\n *\\n * @param   {FluentBundle} bundle\\n * @param   {Array\u003CError>} errors\\n * @param   {Object} message\\n * @param   {Object} args\\n * @returns {string|null}\\n * @private\\n *\u002F\\nfunction valueFromBundle(bundle, errors, message, args) {\\n    if (message.value) {\\n        return bundle.formatPattern(message.value, args, errors);\\n    }\\n    return null;\\n}\\n\u002F**\\n * Format all public values of a message into a {value, attributes} object.\\n *\\n * This function is passed as a method to `keysFromBundle` and resolve\\n * a single L10n Entity using provided `FluentBundle`.\\n *\\n * The function will return an object with a value and attributes of the\\n * entity.\\n *\\n * @param   {FluentBundle} bundle\\n * @param   {Array\u003CError>} errors\\n * @param   {Object} message\\n * @param   {Object} args\\n * @returns {Object}\\n * @private\\n *\u002F\\nfunction messageFromBundle(bundle, errors, message, args) {\\n    const formatted = {\\n        value: null,\\n        attributes: null,\\n    };\\n    if (message.value) {\\n        formatted.value = bundle.formatPattern(message.value, args, errors);\\n    }\\n    let attrNames = Object.keys(message.attributes);\\n    if (attrNames.length > 0) {\\n        formatted.attributes = new Array(attrNames.length);\\n        for (let [i, name] of attrNames.entries()) {\\n            let value = bundle.formatPattern(message.attributes[name], args, errors);\\n            formatted.attributes[i] = { name, value };\\n        }\\n    }\\n    return formatted;\\n}\\n\u002F**\\n * This function is an inner function for `Localization.formatWithFallback`.\\n *\\n * It takes a `FluentBundle`, list of l10n-ids and a method to be used for\\n * key resolution (either `valueFromBundle` or `messageFromBundle`) and\\n * optionally a value returned from `keysFromBundle` executed against\\n * another `FluentBundle`.\\n *\\n * The idea here is that if the previous `FluentBundle` did not resolve\\n * all keys, we're calling this function with the next context to resolve\\n * the remaining ones.\\n *\\n * In the function, we loop over `keys` and check if we have the `prev`\\n * passed and if it has an error entry for the position we're in.\\n *\\n * If it doesn't, it means that we have a good translation for this key and\\n * we return it. If it does, we'll try to resolve the key using the passed\\n * `FluentBundle`.\\n *\\n * In the end, we fill the translations array, and return the Set with\\n * missing ids.\\n *\\n * See `Localization.formatWithFallback` for more info on how this is used.\\n *\\n * @param {Function}       method\\n * @param {FluentBundle} bundle\\n * @param {Array\u003Cstring>}  keys\\n * @param {{Array\u003C{value: string, attributes: Object}>}} translations\\n *\\n * @returns {Set\u003Cstring>}\\n * @private\\n *\u002F\\nfunction keysFromBundle(method, bundle, keys, translations) {\\n    const messageErrors = [];\\n    const missingIds = new Set();\\n    keys.forEach(({ id, args }, i) => {\\n        if (translations[i] !== undefined) {\\n            return;\\n        }\\n        let message = bundle.getMessage(id);\\n        if (message) {\\n            messageErrors.length = 0;\\n            translations[i] = method(bundle, messageErrors, message, args);\\n            if (messageErrors.length > 0 && typeof console !== \\\"undefined\\\") {\\n                const locale = bundle.locales[0];\\n                const errors = messageErrors.join(\\\", \\\");\\n                \u002F\u002F eslint-disable-next-line max-len\\n                console.warn(`[fluent][resolver] errors in ${locale}\u002F${id}: ${errors}.`);\\n            }\\n        }\\n        else {\\n            missingIds.add(id);\\n        }\\n    });\\n    return missingIds;\\n}\\n\",\"import translateElement from \\\".\u002Foverlay.js\\\";\\nimport Localization from \\\".\u002Flocalization.js\\\";\\nconst L10NID_ATTR_NAME = \\\"data-l10n-id\\\";\\nconst L10NARGS_ATTR_NAME = \\\"data-l10n-args\\\";\\nconst L10N_ELEMENT_QUERY = `[${L10NID_ATTR_NAME}]`;\\n\u002F**\\n * The `DOMLocalization` class is responsible for fetching resources and\\n * formatting translations.\\n *\\n * It implements the fallback strategy in case of errors encountered during the\\n * formatting of translations and methods for observing DOM\\n * trees with a `MutationObserver`.\\n *\u002F\\nexport default class DOMLocalization extends Localization {\\n    \u002F**\\n     * @param {Array\u003CString>}    resourceIds     - List of resource IDs\\n     * @param {Function}         generateBundles - Function that returns a\\n     *                                             generator over FluentBundles\\n     * @returns {DOMLocalization}\\n     *\u002F\\n    constructor(resourceIds, generateBundles) {\\n        super(resourceIds, generateBundles);\\n        \u002F\u002F A Set of DOM trees observed by the `MutationObserver`.\\n        this.roots = new Set();\\n        \u002F\u002F requestAnimationFrame handler.\\n        this.pendingrAF = null;\\n        \u002F\u002F list of elements pending for translation.\\n        this.pendingElements = new Set();\\n        this.windowElement = null;\\n        this.mutationObserver = null;\\n        this.observerConfig = {\\n            attributes: true,\\n            characterData: false,\\n            childList: true,\\n            subtree: true,\\n            attributeFilter: [L10NID_ATTR_NAME, L10NARGS_ATTR_NAME],\\n        };\\n    }\\n    onChange(eager = false) {\\n        super.onChange(eager);\\n        if (this.roots) {\\n            this.translateRoots();\\n        }\\n    }\\n    \u002F**\\n     * Set the `data-l10n-id` and `data-l10n-args` attributes on DOM elements.\\n     * FluentDOM makes use of mutation observers to detect changes\\n     * to `data-l10n-*` attributes and translate elements asynchronously.\\n     * `setAttributes` is a convenience method which allows to translate\\n     * DOM elements declaratively.\\n     *\\n     * You should always prefer to use `data-l10n-id` on elements (statically in\\n     * HTML or dynamically via `setAttributes`) over manually retrieving\\n     * translations with `format`.  The use of attributes ensures that the\\n     * elements can be retranslated when the user changes their language\\n     * preferences.\\n     *\\n     * ```javascript\\n     * localization.setAttributes(\\n     *   document.querySelector('#welcome'), 'hello', { who: 'world' }\\n     * );\\n     * ```\\n     *\\n     * This will set the following attributes on the `#welcome` element.\\n     * The MutationObserver will pick up this change and will localize the element\\n     * asynchronously.\\n     *\\n     * ```html\\n     * \u003Cp id='welcome'\\n     *   data-l10n-id='hello'\\n     *   data-l10n-args='{\\\"who\\\": \\\"world\\\"}'>\\n     * \u003C\u002Fp>\\n     * ```\\n     *\\n     * @param {Element}                element - Element to set attributes on\\n     * @param {string}                 id      - l10n-id string\\n     * @param {Object\u003Cstring, string>} args    - KVP list of l10n arguments\\n     * @returns {Element}\\n     *\u002F\\n    setAttributes(element, id, args) {\\n        element.setAttribute(L10NID_ATTR_NAME, id);\\n        if (args) {\\n            element.setAttribute(L10NARGS_ATTR_NAME, JSON.stringify(args));\\n        }\\n        else {\\n            element.removeAttribute(L10NARGS_ATTR_NAME);\\n        }\\n        return element;\\n    }\\n    \u002F**\\n     * Get the `data-l10n-*` attributes from DOM elements.\\n     *\\n     * ```javascript\\n     * localization.getAttributes(\\n     *   document.querySelector('#welcome')\\n     * );\\n     * \u002F\u002F -> { id: 'hello', args: { who: 'world' } }\\n     * ```\\n     *\\n     * @param   {Element}  element - HTML element\\n     * @returns {{id: string, args: Object}}\\n     *\u002F\\n    getAttributes(element) {\\n        return {\\n            id: element.getAttribute(L10NID_ATTR_NAME),\\n            args: JSON.parse(element.getAttribute(L10NARGS_ATTR_NAME) || null),\\n        };\\n    }\\n    \u002F**\\n     * Add `newRoot` to the list of roots managed by this `DOMLocalization`.\\n     *\\n     * Additionally, if this `DOMLocalization` has an observer, start observing\\n     * `newRoot` in order to translate mutations in it.\\n     *\\n     * @param {Element}      newRoot - Root to observe.\\n     *\u002F\\n    connectRoot(newRoot) {\\n        for (const root of this.roots) {\\n            if (root === newRoot ||\\n                root.contains(newRoot) ||\\n                newRoot.contains(root)) {\\n                throw new Error(\\\"Cannot add a root that overlaps with existing root.\\\");\\n            }\\n        }\\n        if (this.windowElement) {\\n            if (this.windowElement !== newRoot.ownerDocument.defaultView) {\\n                throw new Error(`Cannot connect a root:\\n          DOMLocalization already has a root from a different window.`);\\n            }\\n        }\\n        else {\\n            this.windowElement = newRoot.ownerDocument.defaultView;\\n            this.mutationObserver = new this.windowElement.MutationObserver(mutations => this.translateMutations(mutations));\\n        }\\n        this.roots.add(newRoot);\\n        this.mutationObserver.observe(newRoot, this.observerConfig);\\n    }\\n    \u002F**\\n     * Remove `root` from the list of roots managed by this `DOMLocalization`.\\n     *\\n     * Additionally, if this `DOMLocalization` has an observer, stop observing\\n     * `root`.\\n     *\\n     * Returns `true` if the root was the last one managed by this\\n     * `DOMLocalization`.\\n     *\\n     * @param   {Element} root - Root to disconnect.\\n     * @returns {boolean}\\n     *\u002F\\n    disconnectRoot(root) {\\n        this.roots.delete(root);\\n        \u002F\u002F Pause the mutation observer to stop observing `root`.\\n        this.pauseObserving();\\n        if (this.roots.size === 0) {\\n            this.mutationObserver = null;\\n            this.windowElement = null;\\n            this.pendingrAF = null;\\n            this.pendingElements.clear();\\n            return true;\\n        }\\n        \u002F\u002F Resume observing all other roots.\\n        this.resumeObserving();\\n        return false;\\n    }\\n    \u002F**\\n     * Translate all roots associated with this `DOMLocalization`.\\n     *\\n     * @returns {Promise}\\n     *\u002F\\n    translateRoots() {\\n        const roots = Array.from(this.roots);\\n        return Promise.all(roots.map(root => this.translateFragment(root)));\\n    }\\n    \u002F**\\n     * Pauses the `MutationObserver`.\\n     *\\n     * @private\\n     *\u002F\\n    pauseObserving() {\\n        if (!this.mutationObserver) {\\n            return;\\n        }\\n        this.translateMutations(this.mutationObserver.takeRecords());\\n        this.mutationObserver.disconnect();\\n    }\\n    \u002F**\\n     * Resumes the `MutationObserver`.\\n     *\\n     * @private\\n     *\u002F\\n    resumeObserving() {\\n        if (!this.mutationObserver) {\\n            return;\\n        }\\n        for (const root of this.roots) {\\n            this.mutationObserver.observe(root, this.observerConfig);\\n        }\\n    }\\n    \u002F**\\n     * Translate mutations detected by the `MutationObserver`.\\n     *\\n     * @private\\n     *\u002F\\n    translateMutations(mutations) {\\n        for (const mutation of mutations) {\\n            switch (mutation.type) {\\n                case \\\"attributes\\\":\\n                    if (mutation.target.hasAttribute(\\\"data-l10n-id\\\")) {\\n                        this.pendingElements.add(mutation.target);\\n                    }\\n                    break;\\n                case \\\"childList\\\":\\n                    for (const addedNode of mutation.addedNodes) {\\n                        if (addedNode.nodeType === addedNode.ELEMENT_NODE) {\\n                            if (addedNode.childElementCount) {\\n                                for (const element of this.getTranslatables(addedNode)) {\\n                                    this.pendingElements.add(element);\\n                                }\\n                            }\\n                            else if (addedNode.hasAttribute(L10NID_ATTR_NAME)) {\\n                                this.pendingElements.add(addedNode);\\n                            }\\n                        }\\n                    }\\n                    break;\\n            }\\n        }\\n        \u002F\u002F This fragment allows us to coalesce all pending translations\\n        \u002F\u002F into a single requestAnimationFrame.\\n        if (this.pendingElements.size > 0) {\\n            if (this.pendingrAF === null) {\\n                this.pendingrAF = this.windowElement.requestAnimationFrame(() => {\\n                    this.translateElements(Array.from(this.pendingElements));\\n                    this.pendingElements.clear();\\n                    this.pendingrAF = null;\\n                });\\n            }\\n        }\\n    }\\n    \u002F**\\n     * Translate a DOM element or fragment asynchronously using this\\n     * `DOMLocalization` object.\\n     *\\n     * Manually trigger the translation (or re-translation) of a DOM fragment.\\n     * Use the `data-l10n-id` and `data-l10n-args` attributes to mark up the DOM\\n     * with information about which translations to use.\\n     *\\n     * Returns a `Promise` that gets resolved once the translation is complete.\\n     *\\n     * @param   {DOMFragment} frag - Element or DocumentFragment to be translated\\n     * @returns {Promise}\\n     *\u002F\\n    translateFragment(frag) {\\n        return this.translateElements(this.getTranslatables(frag));\\n    }\\n    \u002F**\\n     * Translate a list of DOM elements asynchronously using this\\n     * `DOMLocalization` object.\\n     *\\n     * Manually trigger the translation (or re-translation) of a list of elements.\\n     * Use the `data-l10n-id` and `data-l10n-args` attributes to mark up the DOM\\n     * with information about which translations to use.\\n     *\\n     * Returns a `Promise` that gets resolved once the translation is complete.\\n     *\\n     * @param   {Array\u003CElement>} elements - List of elements to be translated\\n     * @returns {Promise}\\n     *\u002F\\n    async translateElements(elements) {\\n        if (!elements.length) {\\n            return undefined;\\n        }\\n        const keys = elements.map(this.getKeysForElement);\\n        const translations = await this.formatMessages(keys);\\n        return this.applyTranslations(elements, translations);\\n    }\\n    \u002F**\\n     * Applies translations onto elements.\\n     *\\n     * @param {Array\u003CElement>} elements\\n     * @param {Array\u003CObject>}  translations\\n     * @private\\n     *\u002F\\n    applyTranslations(elements, translations) {\\n        this.pauseObserving();\\n        for (let i = 0; i \u003C elements.length; i++) {\\n            if (translations[i] !== undefined) {\\n                translateElement(elements[i], translations[i]);\\n            }\\n        }\\n        this.resumeObserving();\\n    }\\n    \u002F**\\n     * Collects all translatable child elements of the element.\\n     *\\n     * @param {Element} element\\n     * @returns {Array\u003CElement>}\\n     * @private\\n     *\u002F\\n    getTranslatables(element) {\\n        const nodes = Array.from(element.querySelectorAll(L10N_ELEMENT_QUERY));\\n        if (typeof element.hasAttribute === \\\"function\\\" &&\\n            element.hasAttribute(L10NID_ATTR_NAME)) {\\n            nodes.push(element);\\n        }\\n        return nodes;\\n    }\\n    \u002F**\\n     * Get the `data-l10n-*` attributes from DOM elements as a two-element\\n     * array.\\n     *\\n     * @param {Element} element\\n     * @returns {Object}\\n     * @private\\n     *\u002F\\n    getKeysForElement(element) {\\n        return {\\n            id: element.getAttribute(L10NID_ATTR_NAME),\\n            args: JSON.parse(element.getAttribute(L10NARGS_ATTR_NAME) || null),\\n        };\\n    }\\n}\\n\",\"export { default as DOMLocalization } from \\\".\u002Fdom_localization.js\\\";\\nexport { default as Localization } from \\\".\u002Flocalization.js\\\";\\n\",\"\u002F* Copyright 2023 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IL10n} IL10n *\u002F\\n\\n\u002F**\\n * NOTE: The L10n-implementations should use lowercase language-codes\\n *       internally.\\n * @implements {IL10n}\\n *\u002F\\nclass L10n {\\n  #dir;\\n\\n  #lang;\\n\\n  #l10n;\\n\\n  constructor({ lang, isRTL }, l10n = null) {\\n    this.#lang = L10n.#fixupLangCode(lang);\\n    this.#l10n = l10n;\\n    this.#dir = isRTL ?? L10n.#isRTL(this.#lang) ? \\\"rtl\\\" : \\\"ltr\\\";\\n  }\\n\\n  _setL10n(l10n) {\\n    this.#l10n = l10n;\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING\\\")) {\\n      document.l10n = l10n;\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  getLanguage() {\\n    return this.#lang;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  getDirection() {\\n    return this.#dir;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  async get(ids, args = null, fallback) {\\n    if (Array.isArray(ids)) {\\n      ids = ids.map(id => ({ id }));\\n      const messages = await this.#l10n.formatMessages(ids);\\n      return messages.map(message => message.value);\\n    }\\n\\n    const messages = await this.#l10n.formatMessages([\\n      {\\n        id: ids,\\n        args,\\n      },\\n    ]);\\n    return messages?.[0].value || fallback;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  async translate(element) {\\n    try {\\n      this.#l10n.connectRoot(element);\\n      await this.#l10n.translateRoots();\\n    } catch {\\n      \u002F\u002F Element is under an existing root, so there is no need to add it again.\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  pause() {\\n    this.#l10n.pauseObserving();\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  resume() {\\n    this.#l10n.resumeObserving();\\n  }\\n\\n  static #fixupLangCode(langCode) {\\n    \u002F\u002F Use only lowercase language-codes internally, and fallback to English.\\n    langCode = langCode?.toLowerCase() || \\\"en-us\\\";\\n\\n    \u002F\u002F Try to support \\\"incompletely\\\" specified language codes (see issue 13689).\\n    const PARTIAL_LANG_CODES = {\\n      en: \\\"en-us\\\",\\n      es: \\\"es-es\\\",\\n      fy: \\\"fy-nl\\\",\\n      ga: \\\"ga-ie\\\",\\n      gu: \\\"gu-in\\\",\\n      hi: \\\"hi-in\\\",\\n      hy: \\\"hy-am\\\",\\n      nb: \\\"nb-no\\\",\\n      ne: \\\"ne-np\\\",\\n      nn: \\\"nn-no\\\",\\n      pa: \\\"pa-in\\\",\\n      pt: \\\"pt-pt\\\",\\n      sv: \\\"sv-se\\\",\\n      zh: \\\"zh-cn\\\",\\n    };\\n    return PARTIAL_LANG_CODES[langCode] || langCode;\\n  }\\n\\n  static #isRTL(lang) {\\n    const shortCode = lang.split(\\\"-\\\", 1)[0];\\n    return [\\\"ar\\\", \\\"he\\\", \\\"fa\\\", \\\"ps\\\", \\\"ur\\\"].includes(shortCode);\\n  }\\n}\\n\\nconst GenericL10n = null;\\n\\nexport { GenericL10n, L10n };\\n\",\"\u002F* Copyright 2017 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IL10n} IL10n *\u002F\\n\\nimport { FluentBundle, FluentResource } from \\\"fluent-bundle\\\";\\nimport { DOMLocalization } from \\\"fluent-dom\\\";\\nimport { fetchData } from \\\"pdfjs-lib\\\";\\nimport { L10n } from \\\".\u002Fl10n.js\\\";\\n\\nfunction createBundle(lang, text) {\\n  const resource = new FluentResource(text);\\n  const bundle = new FluentBundle(lang);\\n  const errors = bundle.addResource(resource);\\n  if (errors.length) {\\n    console.error(\\\"L10n errors\\\", errors);\\n  }\\n  return bundle;\\n}\\n\\n\u002F**\\n * @implements {IL10n}\\n *\u002F\\nclass GenericL10n extends L10n {\\n  constructor(lang) {\\n    super({ lang });\\n\\n    const generateBundles = !lang\\n      ? GenericL10n.#generateBundlesFallback.bind(\\n          GenericL10n,\\n          this.getLanguage()\\n        )\\n      : GenericL10n.#generateBundles.bind(\\n          GenericL10n,\\n          \\\"en-us\\\",\\n          this.getLanguage()\\n        );\\n    this._setL10n(new DOMLocalization([], generateBundles));\\n  }\\n\\n  \u002F**\\n   * Generate the bundles for Fluent.\\n   * @param {String} defaultLang - The fallback language to use for\\n   *   translations.\\n   * @param {String} baseLang - The base language to use for translations.\\n   *\u002F\\n  static async *#generateBundles(defaultLang, baseLang) {\\n    const { baseURL, paths } = await this.#getPaths();\\n\\n    const langs = [baseLang];\\n    if (defaultLang !== baseLang) {\\n      \u002F\u002F Also fallback to the short-format of the base language\\n      \u002F\u002F (see issue 17269).\\n      const shortLang = baseLang.split(\\\"-\\\", 1)[0];\\n\\n      if (shortLang !== baseLang) {\\n        langs.push(shortLang);\\n      }\\n      langs.push(defaultLang);\\n    }\\n    for (const lang of langs) {\\n      const bundle = await this.#createBundle(lang, baseURL, paths);\\n      if (bundle) {\\n        yield bundle;\\n      }\\n      if (lang === \\\"en-us\\\") {\\n        yield this.#createBundleFallback(lang);\\n      }\\n    }\\n  }\\n\\n  static async #createBundle(lang, baseURL, paths) {\\n    const path = paths[lang];\\n    if (!path) {\\n      return null;\\n    }\\n    const url = new URL(path, baseURL);\\n    const text = await fetchData(url, \u002F* type = *\u002F \\\"text\\\");\\n\\n    return createBundle(lang, text);\\n  }\\n\\n  static async #getPaths() {\\n    try {\\n      const { href } = document.querySelector(`link[type=\\\"application\u002Fl10n\\\"]`);\\n      const paths = await fetchData(href, \u002F* type = *\u002F \\\"json\\\");\\n\\n      return { baseURL: href.replace(\u002F[^\u002F]*$\u002F, \\\"\\\") || \\\".\u002F\\\", paths };\\n    } catch {}\\n    return { baseURL: \\\".\u002F\\\", paths: Object.create(null) };\\n  }\\n\\n  static async *#generateBundlesFallback(lang) {\\n    yield this.#createBundleFallback(lang);\\n  }\\n\\n  static async #createBundleFallback(lang) {\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING\\\")) {\\n      throw new Error(\\\"Not implemented: #createBundleFallback\\\");\\n    }\\n    const text =\\n      typeof PDFJSDev === \\\"undefined\\\"\\n        ? await fetchData(\\n            new URL(\\\"..\u002Fl10n\u002Fen-US\u002Fviewer.ftl\\\", window.location.href),\\n            \u002F* type = *\u002F \\\"text\\\"\\n          )\\n        : PDFJSDev.eval(\\\"DEFAULT_FTL\\\");\\n\\n    return createBundle(lang, text);\\n  }\\n}\\n\\nexport { GenericL10n };\\n\",\"\u002F* Copyright 2020 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { getPdfFilenameFromUrl } from \\\"pdfjs-lib\\\";\\n\\nasync function docProperties(pdfDocument) {\\n  const url = \\\"\\\",\\n    baseUrl = url.split(\\\"#\\\", 1)[0];\\n  \u002F\u002F eslint-disable-next-line prefer-const\\n  let { info, metadata, contentDispositionFilename, contentLength } =\\n    await pdfDocument.getMetadata();\\n\\n  if (!contentLength) {\\n    const { length } = await pdfDocument.getDownloadInfo();\\n    contentLength = length;\\n  }\\n\\n  return {\\n    ...info,\\n    baseURL: baseUrl,\\n    filesize: contentLength,\\n    filename: contentDispositionFilename || getPdfFilenameFromUrl(url),\\n    metadata: metadata?.getRaw(),\\n    authors: metadata?.get(\\\"dc:creator\\\"),\\n    numPages: pdfDocument.numPages,\\n    URL: url,\\n  };\\n}\\n\\nclass GenericScripting {\\n  constructor(sandboxBundleSrc) {\\n    this._ready = new Promise((resolve, reject) => {\\n      const sandbox =\\n        typeof PDFJSDev === \\\"undefined\\\"\\n          ? import(sandboxBundleSrc) \u002F\u002F eslint-disable-line no-unsanitized\u002Fmethod\\n          : __non_webpack_import__(sandboxBundleSrc);\\n      sandbox\\n        .then(pdfjsSandbox => {\\n          resolve(pdfjsSandbox.QuickJSSandbox());\\n        })\\n        .catch(reject);\\n    });\\n  }\\n\\n  async createSandbox(data) {\\n    const sandbox = await this._ready;\\n    sandbox.create(data);\\n  }\\n\\n  async dispatchEventInSandbox(event) {\\n    const sandbox = await this._ready;\\n    setTimeout(() => sandbox.dispatchEvent(event), 0);\\n  }\\n\\n  async destroySandbox() {\\n    const sandbox = await this._ready;\\n    sandbox.nukeSandbox();\\n  }\\n}\\n\\nexport { docProperties, GenericScripting };\\n\",\"\u002F* Copyright 2017 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { AppOptions } from \\\".\u002Fapp_options.js\\\";\\nimport { BaseExternalServices } from \\\".\u002Fexternal_services.js\\\";\\nimport { BasePreferences } from \\\".\u002Fpreferences.js\\\";\\nimport { GenericL10n } from \\\".\u002Fgenericl10n.js\\\";\\nimport { GenericScripting } from \\\".\u002Fgeneric_scripting.js\\\";\\n\\nif (typeof PDFJSDev !== \\\"undefined\\\" && !PDFJSDev.test(\\\"GENERIC\\\")) {\\n  throw new Error(\\n    'Module \\\"pdfjs-web\u002Fgenericcom\\\" shall not be used outside GENERIC build.'\\n  );\\n}\\n\\nfunction initCom(app) {}\\n\\nclass Preferences extends BasePreferences {\\n  async _writeToStorage(prefObj) {\\n    localStorage.setItem(\\\"pdfjs.preferences\\\", JSON.stringify(prefObj));\\n  }\\n\\n  async _readFromStorage(prefObj) {\\n    return { prefs: JSON.parse(localStorage.getItem(\\\"pdfjs.preferences\\\")) };\\n  }\\n}\\n\\nclass ExternalServices extends BaseExternalServices {\\n  async createL10n() {\\n    return new GenericL10n(AppOptions.get(\\\"locale\\\"));\\n  }\\n\\n  createScripting() {\\n    return new GenericScripting(AppOptions.get(\\\"sandboxBundleSrc\\\"));\\n  }\\n}\\n\\nclass MLManager {\\n  async guess() {\\n    return null;\\n  }\\n}\\n\\nexport { ExternalServices, initCom, MLManager, Preferences };\\n\",\"\u002F* Copyright 2023 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { DOMSVGFactory, shadow } from \\\"pdfjs-lib\\\";\\n\\nclass AltTextManager {\\n  #boundUpdateUIState = this.#updateUIState.bind(this);\\n\\n  #boundSetPosition = this.#setPosition.bind(this);\\n\\n  #boundOnClick = this.#onClick.bind(this);\\n\\n  #currentEditor = null;\\n\\n  #cancelButton;\\n\\n  #dialog;\\n\\n  #eventBus;\\n\\n  #hasUsedPointer = false;\\n\\n  #optionDescription;\\n\\n  #optionDecorative;\\n\\n  #overlayManager;\\n\\n  #saveButton;\\n\\n  #textarea;\\n\\n  #uiManager;\\n\\n  #previousAltText = null;\\n\\n  #svgElement = null;\\n\\n  #rectElement = null;\\n\\n  #container;\\n\\n  #telemetryData = null;\\n\\n  constructor(\\n    {\\n      dialog,\\n      optionDescription,\\n      optionDecorative,\\n      textarea,\\n      cancelButton,\\n      saveButton,\\n    },\\n    container,\\n    overlayManager,\\n    eventBus\\n  ) {\\n    this.#dialog = dialog;\\n    this.#optionDescription = optionDescription;\\n    this.#optionDecorative = optionDecorative;\\n    this.#textarea = textarea;\\n    this.#cancelButton = cancelButton;\\n    this.#saveButton = saveButton;\\n    this.#overlayManager = overlayManager;\\n    this.#eventBus = eventBus;\\n    this.#container = container;\\n\\n    dialog.addEventListener(\\\"close\\\", this.#close.bind(this));\\n    dialog.addEventListener(\\\"contextmenu\\\", event => {\\n      if (event.target !== this.#textarea) {\\n        event.preventDefault();\\n      }\\n    });\\n    cancelButton.addEventListener(\\\"click\\\", this.#finish.bind(this));\\n    saveButton.addEventListener(\\\"click\\\", this.#save.bind(this));\\n    optionDescription.addEventListener(\\\"change\\\", this.#boundUpdateUIState);\\n    optionDecorative.addEventListener(\\\"change\\\", this.#boundUpdateUIState);\\n\\n    this.#overlayManager.register(dialog);\\n  }\\n\\n  get _elements() {\\n    return shadow(this, \\\"_elements\\\", [\\n      this.#optionDescription,\\n      this.#optionDecorative,\\n      this.#textarea,\\n      this.#saveButton,\\n      this.#cancelButton,\\n    ]);\\n  }\\n\\n  #createSVGElement() {\\n    if (this.#svgElement) {\\n      return;\\n    }\\n\\n    \u002F\u002F We create a mask to add to the dialog backdrop: the idea is to have a\\n    \u002F\u002F darken background everywhere except on the editor to clearly see the\\n    \u002F\u002F picture to describe.\\n\\n    const svgFactory = new DOMSVGFactory();\\n    const svg = (this.#svgElement = svgFactory.createElement(\\\"svg\\\"));\\n    svg.setAttribute(\\\"width\\\", \\\"0\\\");\\n    svg.setAttribute(\\\"height\\\", \\\"0\\\");\\n    const defs = svgFactory.createElement(\\\"defs\\\");\\n    svg.append(defs);\\n    const mask = svgFactory.createElement(\\\"mask\\\");\\n    defs.append(mask);\\n    mask.setAttribute(\\\"id\\\", \\\"alttext-manager-mask\\\");\\n    mask.setAttribute(\\\"maskContentUnits\\\", \\\"objectBoundingBox\\\");\\n    let rect = svgFactory.createElement(\\\"rect\\\");\\n    mask.append(rect);\\n    rect.setAttribute(\\\"fill\\\", \\\"white\\\");\\n    rect.setAttribute(\\\"width\\\", \\\"1\\\");\\n    rect.setAttribute(\\\"height\\\", \\\"1\\\");\\n    rect.setAttribute(\\\"x\\\", \\\"0\\\");\\n    rect.setAttribute(\\\"y\\\", \\\"0\\\");\\n\\n    rect = this.#rectElement = svgFactory.createElement(\\\"rect\\\");\\n    mask.append(rect);\\n    rect.setAttribute(\\\"fill\\\", \\\"black\\\");\\n    this.#dialog.append(svg);\\n  }\\n\\n  async editAltText(uiManager, editor) {\\n    if (this.#currentEditor || !editor) {\\n      return;\\n    }\\n\\n    this.#createSVGElement();\\n\\n    this.#hasUsedPointer = false;\\n    for (const element of this._elements) {\\n      element.addEventListener(\\\"click\\\", this.#boundOnClick);\\n    }\\n\\n    const { altText, decorative } = editor.altTextData;\\n    if (decorative === true) {\\n      this.#optionDecorative.checked = true;\\n      this.#optionDescription.checked = false;\\n    } else {\\n      this.#optionDecorative.checked = false;\\n      this.#optionDescription.checked = true;\\n    }\\n    this.#previousAltText = this.#textarea.value = altText?.trim() || \\\"\\\";\\n    this.#updateUIState();\\n\\n    this.#currentEditor = editor;\\n    this.#uiManager = uiManager;\\n    this.#uiManager.removeEditListeners();\\n    this.#eventBus._on(\\\"resize\\\", this.#boundSetPosition);\\n\\n    try {\\n      await this.#overlayManager.open(this.#dialog);\\n      this.#setPosition();\\n    } catch (ex) {\\n      this.#close();\\n      throw ex;\\n    }\\n  }\\n\\n  #setPosition() {\\n    if (!this.#currentEditor) {\\n      return;\\n    }\\n    const dialog = this.#dialog;\\n    const { style } = dialog;\\n    const {\\n      x: containerX,\\n      y: containerY,\\n      width: containerW,\\n      height: containerH,\\n    } = this.#container.getBoundingClientRect();\\n    const { innerWidth: windowW, innerHeight: windowH } = window;\\n    const { width: dialogW, height: dialogH } = dialog.getBoundingClientRect();\\n    const { x, y, width, height } = this.#currentEditor.getClientDimensions();\\n    const MARGIN = 10;\\n    const isLTR = this.#uiManager.direction === \\\"ltr\\\";\\n\\n    const xs = Math.max(x, containerX);\\n    const xe = Math.min(x + width, containerX + containerW);\\n    const ys = Math.max(y, containerY);\\n    const ye = Math.min(y + height, containerY + containerH);\\n    this.#rectElement.setAttribute(\\\"width\\\", `${(xe - xs) \u002F windowW}`);\\n    this.#rectElement.setAttribute(\\\"height\\\", `${(ye - ys) \u002F windowH}`);\\n    this.#rectElement.setAttribute(\\\"x\\\", `${xs \u002F windowW}`);\\n    this.#rectElement.setAttribute(\\\"y\\\", `${ys \u002F windowH}`);\\n\\n    let left = null;\\n    let top = Math.max(y, 0);\\n    top += Math.min(windowH - (top + dialogH), 0);\\n\\n    if (isLTR) {\\n      \u002F\u002F Prefer to position the dialog \\\"after\\\" (so on the right) the editor.\\n      if (x + width + MARGIN + dialogW \u003C windowW) {\\n        left = x + width + MARGIN;\\n      } else if (x > dialogW + MARGIN) {\\n        left = x - dialogW - MARGIN;\\n      }\\n    } else if (x > dialogW + MARGIN) {\\n      left = x - dialogW - MARGIN;\\n    } else if (x + width + MARGIN + dialogW \u003C windowW) {\\n      left = x + width + MARGIN;\\n    }\\n\\n    if (left === null) {\\n      top = null;\\n      left = Math.max(x, 0);\\n      left += Math.min(windowW - (left + dialogW), 0);\\n      if (y > dialogH + MARGIN) {\\n        top = y - dialogH - MARGIN;\\n      } else if (y + height + MARGIN + dialogH \u003C windowH) {\\n        top = y + height + MARGIN;\\n      }\\n    }\\n\\n    if (top !== null) {\\n      dialog.classList.add(\\\"positioned\\\");\\n      if (isLTR) {\\n        style.left = `${left}px`;\\n      } else {\\n        style.right = `${windowW - left - dialogW}px`;\\n      }\\n      style.top = `${top}px`;\\n    } else {\\n      dialog.classList.remove(\\\"positioned\\\");\\n      style.left = \\\"\\\";\\n      style.top = \\\"\\\";\\n    }\\n  }\\n\\n  #finish() {\\n    if (this.#overlayManager.active === this.#dialog) {\\n      this.#overlayManager.close(this.#dialog);\\n    }\\n  }\\n\\n  #close() {\\n    this.#currentEditor._reportTelemetry(\\n      this.#telemetryData || {\\n        action: \\\"alt_text_cancel\\\",\\n        alt_text_keyboard: !this.#hasUsedPointer,\\n      }\\n    );\\n    this.#telemetryData = null;\\n\\n    this.#removeOnClickListeners();\\n    this.#uiManager?.addEditListeners();\\n    this.#eventBus._off(\\\"resize\\\", this.#boundSetPosition);\\n    this.#currentEditor.altTextFinish();\\n    this.#currentEditor = null;\\n    this.#uiManager = null;\\n  }\\n\\n  #updateUIState() {\\n    this.#textarea.disabled = this.#optionDecorative.checked;\\n  }\\n\\n  #save() {\\n    const altText = this.#textarea.value.trim();\\n    const decorative = this.#optionDecorative.checked;\\n    this.#currentEditor.altTextData = {\\n      altText,\\n      decorative,\\n    };\\n    this.#telemetryData = {\\n      action: \\\"alt_text_save\\\",\\n      alt_text_description: !!altText,\\n      alt_text_edit:\\n        !!this.#previousAltText && this.#previousAltText !== altText,\\n      alt_text_decorative: decorative,\\n      alt_text_keyboard: !this.#hasUsedPointer,\\n    };\\n    this.#finish();\\n  }\\n\\n  #onClick(evt) {\\n    if (evt.detail === 0) {\\n      return; \u002F\u002F The keyboard was used.\\n    }\\n    this.#hasUsedPointer = true;\\n    this.#removeOnClickListeners();\\n  }\\n\\n  #removeOnClickListeners() {\\n    for (const element of this._elements) {\\n      element.removeEventListener(\\\"click\\\", this.#boundOnClick);\\n    }\\n  }\\n\\n  destroy() {\\n    this.#uiManager = null; \u002F\u002F Avoid re-adding the edit listeners.\\n    this.#finish();\\n    this.#svgElement?.remove();\\n    this.#svgElement = this.#rectElement = null;\\n  }\\n}\\n\\nexport { AltTextManager };\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fevent_utils.js\\\").EventBus} EventBus *\u002F\\n\\nimport { AnnotationEditorParamsType } from \\\"pdfjs-lib\\\";\\n\\n\u002F**\\n * @typedef {Object} AnnotationEditorParamsOptions\\n * @property {HTMLInputElement} editorFreeTextFontSize\\n * @property {HTMLInputElement} editorFreeTextColor\\n * @property {HTMLInputElement} editorInkColor\\n * @property {HTMLInputElement} editorInkThickness\\n * @property {HTMLInputElement} editorInkOpacity\\n * @property {HTMLButtonElement} editorStampAddImage\\n * @property {HTMLInputElement} editorFreeHighlightThickness\\n * @property {HTMLButtonElement} editorHighlightShowAll\\n *\u002F\\n\\nclass AnnotationEditorParams {\\n  \u002F**\\n   * @param {AnnotationEditorParamsOptions} options\\n   * @param {EventBus} eventBus\\n   *\u002F\\n  constructor(options, eventBus) {\\n    this.eventBus = eventBus;\\n    this.#bindListeners(options);\\n  }\\n\\n  \u002F**\\n   * @param {AnnotationEditorParamsOptions} options\\n   *\u002F\\n  #bindListeners({\\n    editorFreeTextFontSize,\\n    editorFreeTextColor,\\n    editorInkColor,\\n    editorInkThickness,\\n    editorInkOpacity,\\n    editorStampAddImage,\\n    editorFreeHighlightThickness,\\n    editorHighlightShowAll,\\n  }) {\\n    const dispatchEvent = (typeStr, value) => {\\n      this.eventBus.dispatch(\\\"switchannotationeditorparams\\\", {\\n        source: this,\\n        type: AnnotationEditorParamsType[typeStr],\\n        value,\\n      });\\n    };\\n    editorFreeTextFontSize.addEventListener(\\\"input\\\", function () {\\n      dispatchEvent(\\\"FREETEXT_SIZE\\\", this.valueAsNumber);\\n    });\\n    editorFreeTextColor.addEventListener(\\\"input\\\", function () {\\n      dispatchEvent(\\\"FREETEXT_COLOR\\\", this.value);\\n    });\\n    editorInkColor.addEventListener(\\\"input\\\", function () {\\n      dispatchEvent(\\\"INK_COLOR\\\", this.value);\\n    });\\n    editorInkThickness.addEventListener(\\\"input\\\", function () {\\n      dispatchEvent(\\\"INK_THICKNESS\\\", this.valueAsNumber);\\n    });\\n    editorInkOpacity.addEventListener(\\\"input\\\", function () {\\n      dispatchEvent(\\\"INK_OPACITY\\\", this.valueAsNumber);\\n    });\\n    editorStampAddImage.addEventListener(\\\"click\\\", () => {\\n      dispatchEvent(\\\"CREATE\\\");\\n    });\\n    editorFreeHighlightThickness.addEventListener(\\\"input\\\", function () {\\n      dispatchEvent(\\\"HIGHLIGHT_THICKNESS\\\", this.valueAsNumber);\\n    });\\n    editorHighlightShowAll.addEventListener(\\\"click\\\", function () {\\n      const checked = this.getAttribute(\\\"aria-pressed\\\") === \\\"true\\\";\\n      this.setAttribute(\\\"aria-pressed\\\", !checked);\\n      dispatchEvent(\\\"HIGHLIGHT_SHOW_ALL\\\", !checked);\\n    });\\n\\n    this.eventBus._on(\\\"annotationeditorparamschanged\\\", evt => {\\n      for (const [type, value] of evt.details) {\\n        switch (type) {\\n          case AnnotationEditorParamsType.FREETEXT_SIZE:\\n            editorFreeTextFontSize.value = value;\\n            break;\\n          case AnnotationEditorParamsType.FREETEXT_COLOR:\\n            editorFreeTextColor.value = value;\\n            break;\\n          case AnnotationEditorParamsType.INK_COLOR:\\n            editorInkColor.value = value;\\n            break;\\n          case AnnotationEditorParamsType.INK_THICKNESS:\\n            editorInkThickness.value = value;\\n            break;\\n          case AnnotationEditorParamsType.INK_OPACITY:\\n            editorInkOpacity.value = value;\\n            break;\\n          case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\\n            editorFreeHighlightThickness.value = value;\\n            break;\\n          case AnnotationEditorParamsType.HIGHLIGHT_FREE:\\n            editorFreeHighlightThickness.disabled = !value;\\n            break;\\n          case AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL:\\n            editorHighlightShowAll.setAttribute(\\\"aria-pressed\\\", value);\\n            break;\\n        }\\n      }\\n    });\\n  }\\n}\\n\\nexport { AnnotationEditorParams };\\n\",\"\u002F* Copyright 2024 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F Used to compare floats: there is no exact equality due to rounding errors.\\nconst PRECISION = 1e-1;\\n\\nclass CaretBrowsingMode {\\n  #mainContainer;\\n\\n  #toolBarHeight;\\n\\n  #viewerContainer;\\n\\n  constructor(mainContainer, viewerContainer, toolbarContainer) {\\n    this.#mainContainer = mainContainer;\\n    this.#viewerContainer = viewerContainer;\\n    this.#toolBarHeight = toolbarContainer?.getBoundingClientRect().height ?? 0;\\n  }\\n\\n  \u002F**\\n   * Return true if the two rectangles are on the same line.\\n   * @param {DOMRect} rect1\\n   * @param {DOMRect} rect2\\n   * @returns {boolean}\\n   *\u002F\\n  #isOnSameLine(rect1, rect2) {\\n    const top1 = rect1.y;\\n    const bot1 = rect1.bottom;\\n    const mid1 = rect1.y + rect1.height \u002F 2;\\n\\n    const top2 = rect2.y;\\n    const bot2 = rect2.bottom;\\n    const mid2 = rect2.y + rect2.height \u002F 2;\\n\\n    return (top1 \u003C= mid2 && mid2 \u003C= bot1) || (top2 \u003C= mid1 && mid1 \u003C= bot2);\\n  }\\n\\n  \u002F**\\n   * Return `true` if the rectangle is:\\n   *  - under the caret when `isUp === false`.\\n   *  - over the caret when `isUp === true`.\\n   * @param {DOMRect} rect\\n   * @param {number} x\\n   * @param {number} y\\n   * @param {boolean} isUp\\n   * @returns {boolean}\\n   *\u002F\\n  #isUnderOver(rect, x, y, isUp) {\\n    const midY = rect.y + rect.height \u002F 2;\\n    return (\\n      (isUp ? y >= midY : y \u003C= midY) &&\\n      rect.x - PRECISION \u003C= x &&\\n      x \u003C= rect.right + PRECISION\\n    );\\n  }\\n\\n  \u002F**\\n   * Check if the rectangle is visible.\\n   * @param {DOMRect} rect\\n   * @returns {boolean}\\n   *\u002F\\n  #isVisible(rect) {\\n    return (\\n      rect.top >= this.#toolBarHeight &&\\n      rect.left >= 0 &&\\n      rect.bottom \u003C=\\n        (window.innerHeight || document.documentElement.clientHeight) &&\\n      rect.right \u003C= (window.innerWidth || document.documentElement.clientWidth)\\n    );\\n  }\\n\\n  \u002F**\\n   * Get the position of the caret.\\n   * @param {Selection} selection\\n   * @param {boolean} isUp\\n   * @returns {Array\u003Cnumber>}\\n   *\u002F\\n  #getCaretPosition(selection, isUp) {\\n    const { focusNode, focusOffset } = selection;\\n    const range = document.createRange();\\n    range.setStart(focusNode, focusOffset);\\n    range.setEnd(focusNode, focusOffset);\\n    const rect = range.getBoundingClientRect();\\n\\n    return [rect.x, isUp ? rect.top : rect.bottom];\\n  }\\n\\n  static #caretPositionFromPoint(x, y) {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) &&\\n      !document.caretPositionFromPoint\\n    ) {\\n      const { startContainer: offsetNode, startOffset: offset } =\\n        document.caretRangeFromPoint(x, y);\\n      return { offsetNode, offset };\\n    }\\n    return document.caretPositionFromPoint(x, y);\\n  }\\n\\n  #setCaretPositionHelper(selection, caretX, select, element, rect) {\\n    rect ||= element.getBoundingClientRect();\\n    if (caretX \u003C= rect.x + PRECISION) {\\n      if (select) {\\n        selection.extend(element.firstChild, 0);\\n      } else {\\n        selection.setPosition(element.firstChild, 0);\\n      }\\n      return;\\n    }\\n    if (rect.right - PRECISION \u003C= caretX) {\\n      const { lastChild } = element;\\n      if (select) {\\n        selection.extend(lastChild, lastChild.length);\\n      } else {\\n        selection.setPosition(lastChild, lastChild.length);\\n      }\\n      return;\\n    }\\n\\n    const midY = rect.y + rect.height \u002F 2;\\n    let caretPosition = CaretBrowsingMode.#caretPositionFromPoint(caretX, midY);\\n    let parentElement = caretPosition.offsetNode?.parentElement;\\n    if (parentElement && parentElement !== element) {\\n      \u002F\u002F There is an element on top of the one in the text layer, so we\\n      \u002F\u002F need to hide all the elements (except the one in the text layer)\\n      \u002F\u002F at this position in order to get the correct caret position.\\n      const elementsAtPoint = document.elementsFromPoint(caretX, midY);\\n      const savedVisibilities = [];\\n      for (const el of elementsAtPoint) {\\n        if (el === element) {\\n          break;\\n        }\\n        const { style } = el;\\n        savedVisibilities.push([el, style.visibility]);\\n        style.visibility = \\\"hidden\\\";\\n      }\\n      caretPosition = CaretBrowsingMode.#caretPositionFromPoint(caretX, midY);\\n      parentElement = caretPosition.offsetNode?.parentElement;\\n      for (const [el, visibility] of savedVisibilities) {\\n        el.style.visibility = visibility;\\n      }\\n    }\\n    if (parentElement !== element) {\\n      \u002F\u002F The element targeted by caretPositionFromPoint isn't in the text\\n      \u002F\u002F layer.\\n      if (select) {\\n        selection.extend(element.firstChild, 0);\\n      } else {\\n        selection.setPosition(element.firstChild, 0);\\n      }\\n      return;\\n    }\\n    if (select) {\\n      selection.extend(caretPosition.offsetNode, caretPosition.offset);\\n    } else {\\n      selection.setPosition(caretPosition.offsetNode, caretPosition.offset);\\n    }\\n  }\\n\\n  \u002F**\\n   * Set the caret position or extend the selection (it depends on the select\\n   * parameter).\\n   * @param {boolean} select\\n   * @param {Selection} selection\\n   * @param {Element} newLineElement\\n   * @param {DOMRect} newLineElementRect\\n   * @param {number} caretX\\n   *\u002F\\n  #setCaretPosition(\\n    select,\\n    selection,\\n    newLineElement,\\n    newLineElementRect,\\n    caretX\\n  ) {\\n    if (this.#isVisible(newLineElementRect)) {\\n      this.#setCaretPositionHelper(\\n        selection,\\n        caretX,\\n        select,\\n        newLineElement,\\n        newLineElementRect\\n      );\\n      return;\\n    }\\n    this.#mainContainer.addEventListener(\\n      \\\"scrollend\\\",\\n      this.#setCaretPositionHelper.bind(\\n        this,\\n        selection,\\n        caretX,\\n        select,\\n        newLineElement,\\n        null\\n      ),\\n      { once: true }\\n    );\\n    newLineElement.scrollIntoView();\\n  }\\n\\n  \u002F**\\n   * Get the node on the next page.\\n   * @param {Element} textLayer\\n   * @param {boolean} isUp\\n   * @returns {Node}\\n   *\u002F\\n  #getNodeOnNextPage(textLayer, isUp) {\\n    while (true) {\\n      const page = textLayer.closest(\\\".page\\\");\\n      const pageNumber = parseInt(page.getAttribute(\\\"data-page-number\\\"));\\n      const nextPage = isUp ? pageNumber - 1 : pageNumber + 1;\\n      textLayer = this.#viewerContainer.querySelector(\\n        `.page[data-page-number=\\\"${nextPage}\\\"] .textLayer`\\n      );\\n      if (!textLayer) {\\n        return null;\\n      }\\n      const walker = document.createTreeWalker(textLayer, NodeFilter.SHOW_TEXT);\\n      const node = isUp ? walker.lastChild() : walker.firstChild();\\n      if (node) {\\n        return node;\\n      }\\n    }\\n  }\\n\\n  \u002F**\\n   * Move the caret in the given direction.\\n   * @param {boolean} isUp\\n   * @param {boolean} select\\n   *\u002F\\n  moveCaret(isUp, select) {\\n    const selection = document.getSelection();\\n    if (selection.rangeCount === 0) {\\n      return;\\n    }\\n    const { focusNode } = selection;\\n    const focusElement =\\n      focusNode.nodeType !== Node.ELEMENT_NODE\\n        ? focusNode.parentElement\\n        : focusNode;\\n    const root = focusElement.closest(\\\".textLayer\\\");\\n    if (!root) {\\n      return;\\n    }\\n    const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT);\\n    walker.currentNode = focusNode;\\n\\n    \u002F\u002F Move to the next element which is not on the same line as the focus\\n    \u002F\u002F element.\\n    const focusRect = focusElement.getBoundingClientRect();\\n    let newLineElement = null;\\n    const nodeIterator = (\\n      isUp ? walker.previousSibling : walker.nextSibling\\n    ).bind(walker);\\n    while (nodeIterator()) {\\n      const element = walker.currentNode.parentElement;\\n      if (!this.#isOnSameLine(focusRect, element.getBoundingClientRect())) {\\n        newLineElement = element;\\n        break;\\n      }\\n    }\\n\\n    if (!newLineElement) {\\n      \u002F\u002F Need to find the next line on the next page.\\n      const node = this.#getNodeOnNextPage(root, isUp);\\n      if (!node) {\\n        return;\\n      }\\n      if (select) {\\n        const lastNode =\\n          (isUp ? walker.firstChild() : walker.lastChild()) || focusNode;\\n        selection.extend(lastNode, isUp ? 0 : lastNode.length);\\n        const range = document.createRange();\\n        range.setStart(node, isUp ? node.length : 0);\\n        range.setEnd(node, isUp ? node.length : 0);\\n        selection.addRange(range);\\n        return;\\n      }\\n      const [caretX] = this.#getCaretPosition(selection, isUp);\\n      const { parentElement } = node;\\n      this.#setCaretPosition(\\n        select,\\n        selection,\\n        parentElement,\\n        parentElement.getBoundingClientRect(),\\n        caretX\\n      );\\n      return;\\n    }\\n\\n    \u002F\u002F We've a candidate for the next line now we want to find the first element\\n    \u002F\u002F which is under\u002Fover the caret.\\n    const [caretX, caretY] = this.#getCaretPosition(selection, isUp);\\n    const newLineElementRect = newLineElement.getBoundingClientRect();\\n\\n    \u002F\u002F Maybe the element on the new line is a valid candidate.\\n    if (this.#isUnderOver(newLineElementRect, caretX, caretY, isUp)) {\\n      this.#setCaretPosition(\\n        select,\\n        selection,\\n        newLineElement,\\n        newLineElementRect,\\n        caretX\\n      );\\n      return;\\n    }\\n\\n    while (nodeIterator()) {\\n      \u002F\u002F Search an element on the same line as newLineElement\\n      \u002F\u002F which could be under\u002Fover the caret.\\n      const element = walker.currentNode.parentElement;\\n      const elementRect = element.getBoundingClientRect();\\n      if (!this.#isOnSameLine(newLineElementRect, elementRect)) {\\n        break;\\n      }\\n      if (this.#isUnderOver(elementRect, caretX, caretY, isUp)) {\\n        \u002F\u002F We found the element.\\n        this.#setCaretPosition(select, selection, element, elementRect, caretX);\\n        return;\\n      }\\n    }\\n\\n    \u002F\u002F No element has been found so just put the caret on the element on the new\\n    \u002F\u002F line.\\n    this.#setCaretPosition(\\n      select,\\n      selection,\\n      newLineElement,\\n      newLineElementRect,\\n      caretX\\n    );\\n  }\\n}\\n\\nexport { CaretBrowsingMode };\\n\",\"\u002F* Copyright 2013 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IDownloadManager} IDownloadManager *\u002F\\n\\nimport { createValidAbsoluteUrl, isPdfFile } from \\\"pdfjs-lib\\\";\\n\\nif (typeof PDFJSDev !== \\\"undefined\\\" && !PDFJSDev.test(\\\"CHROME || GENERIC\\\")) {\\n  throw new Error(\\n    'Module \\\"pdfjs-web\u002Fdownload_manager\\\" shall not be used ' +\\n      \\\"outside CHROME and GENERIC builds.\\\"\\n  );\\n}\\n\\nfunction download(blobUrl, filename) {\\n  const a = document.createElement(\\\"a\\\");\\n  if (!a.click) {\\n    throw new Error('DownloadManager: \\\"a.click()\\\" is not supported.');\\n  }\\n  a.href = blobUrl;\\n  a.target = \\\"_parent\\\";\\n  \u002F\u002F Use a.download if available. This increases the likelihood that\\n  \u002F\u002F the file is downloaded instead of opened by another PDF plugin.\\n  if (\\\"download\\\" in a) {\\n    a.download = filename;\\n  }\\n  \u002F\u002F \u003Ca> must be in the document for recent Firefox versions,\\n  \u002F\u002F otherwise .click() is ignored.\\n  (document.body || document.documentElement).append(a);\\n  a.click();\\n  a.remove();\\n}\\n\\n\u002F**\\n * @implements {IDownloadManager}\\n *\u002F\\nclass DownloadManager {\\n  #openBlobUrls = new WeakMap();\\n\\n  downloadUrl(url, filename, _options) {\\n    if (!createValidAbsoluteUrl(url, \\\"http:\u002F\u002Fexample.com\\\")) {\\n      console.error(`downloadUrl - not a valid URL: ${url}`);\\n      return; \u002F\u002F restricted\u002Finvalid URL\\n    }\\n    download(url + \\\"#pdfjs.action=download\\\", filename);\\n  }\\n\\n  downloadData(data, filename, contentType) {\\n    const blobUrl = URL.createObjectURL(\\n      new Blob([data], { type: contentType })\\n    );\\n    download(blobUrl, filename);\\n  }\\n\\n  \u002F**\\n   * @returns {boolean} Indicating if the data was opened.\\n   *\u002F\\n  openOrDownloadData(data, filename, dest = null) {\\n    const isPdfData = isPdfFile(filename);\\n    const contentType = isPdfData ? \\\"application\u002Fpdf\\\" : \\\"\\\";\\n\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"COMPONENTS\\\")) &&\\n      isPdfData\\n    ) {\\n      let blobUrl = this.#openBlobUrls.get(data);\\n      if (!blobUrl) {\\n        blobUrl = URL.createObjectURL(new Blob([data], { type: contentType }));\\n        this.#openBlobUrls.set(data, blobUrl);\\n      }\\n      let viewerUrl;\\n      if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n        \u002F\u002F The current URL is the viewer, let's use it and append the file.\\n        viewerUrl = \\\"?file=\\\" + encodeURIComponent(blobUrl + \\\"#\\\" + filename);\\n      } else if (PDFJSDev.test(\\\"CHROME\\\")) {\\n        \u002F\u002F In the Chrome extension, the URL is rewritten using the history API\\n        \u002F\u002F in viewer.js, so an absolute URL must be generated.\\n        viewerUrl =\\n          \u002F\u002F eslint-disable-next-line no-undef\\n          chrome.runtime.getURL(\\\"\u002Fcontent\u002Fweb\u002Fviewer.html\\\") +\\n          \\\"?file=\\\" +\\n          encodeURIComponent(blobUrl + \\\"#\\\" + filename);\\n      }\\n      if (dest) {\\n        viewerUrl += `#${escape(dest)}`;\\n      }\\n\\n      try {\\n        window.open(viewerUrl);\\n        return true;\\n      } catch (ex) {\\n        console.error(`openOrDownloadData: ${ex}`);\\n        \u002F\u002F Release the `blobUrl`, since opening it failed, and fallback to\\n        \u002F\u002F downloading the PDF file.\\n        URL.revokeObjectURL(blobUrl);\\n        this.#openBlobUrls.delete(data);\\n      }\\n    }\\n\\n    this.downloadData(data, filename, contentType);\\n    return false;\\n  }\\n\\n  download(blob, url, filename, _options) {\\n    const blobUrl = URL.createObjectURL(blob);\\n    download(blobUrl, filename);\\n  }\\n}\\n\\nexport { DownloadManager };\\n\",\"\u002F* Copyright 2014 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nclass OverlayManager {\\n  #overlays = new WeakMap();\\n\\n  #active = null;\\n\\n  get active() {\\n    return this.#active;\\n  }\\n\\n  \u002F**\\n   * @param {HTMLDialogElement} dialog - The overlay's DOM element.\\n   * @param {boolean} [canForceClose] - Indicates if opening the overlay closes\\n   *                  an active overlay. The default is `false`.\\n   * @returns {Promise} A promise that is resolved when the overlay has been\\n   *                    registered.\\n   *\u002F\\n  async register(dialog, canForceClose = false) {\\n    if (typeof dialog !== \\\"object\\\") {\\n      throw new Error(\\\"Not enough parameters.\\\");\\n    } else if (this.#overlays.has(dialog)) {\\n      throw new Error(\\\"The overlay is already registered.\\\");\\n    }\\n    this.#overlays.set(dialog, { canForceClose });\\n\\n    dialog.addEventListener(\\\"cancel\\\", evt => {\\n      this.#active = null;\\n    });\\n  }\\n\\n  \u002F**\\n   * @param {HTMLDialogElement} dialog - The overlay's DOM element.\\n   * @returns {Promise} A promise that is resolved when the overlay has been\\n   *                    opened.\\n   *\u002F\\n  async open(dialog) {\\n    if (!this.#overlays.has(dialog)) {\\n      throw new Error(\\\"The overlay does not exist.\\\");\\n    } else if (this.#active) {\\n      if (this.#active === dialog) {\\n        throw new Error(\\\"The overlay is already active.\\\");\\n      } else if (this.#overlays.get(dialog).canForceClose) {\\n        await this.close();\\n      } else {\\n        throw new Error(\\\"Another overlay is currently active.\\\");\\n      }\\n    }\\n    this.#active = dialog;\\n    dialog.showModal();\\n  }\\n\\n  \u002F**\\n   * @param {HTMLDialogElement} dialog - The overlay's DOM element.\\n   * @returns {Promise} A promise that is resolved when the overlay has been\\n   *                    closed.\\n   *\u002F\\n  async close(dialog = this.#active) {\\n    if (!this.#overlays.has(dialog)) {\\n      throw new Error(\\\"The overlay does not exist.\\\");\\n    } else if (!this.#active) {\\n      throw new Error(\\\"The overlay is currently not active.\\\");\\n    } else if (this.#active !== dialog) {\\n      throw new Error(\\\"Another overlay is currently active.\\\");\\n    }\\n    dialog.close();\\n    this.#active = null;\\n  }\\n}\\n\\nexport { OverlayManager };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Foverlay_manager.js\\\").OverlayManager} OverlayManager *\u002F\\n\\nimport { PasswordResponses } from \\\"pdfjs-lib\\\";\\n\\n\u002F**\\n * @typedef {Object} PasswordPromptOptions\\n * @property {HTMLDialogElement} dialog - The overlay's DOM element.\\n * @property {HTMLParagraphElement} label - Label containing instructions for\\n *                                          entering the password.\\n * @property {HTMLInputElement} input - Input field for entering the password.\\n * @property {HTMLButtonElement} submitButton - Button for submitting the\\n *                                              password.\\n * @property {HTMLButtonElement} cancelButton - Button for cancelling password\\n *                                              entry.\\n *\u002F\\n\\nclass PasswordPrompt {\\n  #activeCapability = null;\\n\\n  #updateCallback = null;\\n\\n  #reason = null;\\n\\n  \u002F**\\n   * @param {PasswordPromptOptions} options\\n   * @param {OverlayManager} overlayManager - Manager for the viewer overlays.\\n   * @param {boolean} [isViewerEmbedded] - If the viewer is embedded, in e.g.\\n   *   an \u003Ciframe> or an \u003Cobject>. The default value is `false`.\\n   *\u002F\\n  constructor(options, overlayManager, isViewerEmbedded = false) {\\n    this.dialog = options.dialog;\\n    this.label = options.label;\\n    this.input = options.input;\\n    this.submitButton = options.submitButton;\\n    this.cancelButton = options.cancelButton;\\n    this.overlayManager = overlayManager;\\n    this._isViewerEmbedded = isViewerEmbedded;\\n\\n    \u002F\u002F Attach the event listeners.\\n    this.submitButton.addEventListener(\\\"click\\\", this.#verify.bind(this));\\n    this.cancelButton.addEventListener(\\\"click\\\", this.close.bind(this));\\n    this.input.addEventListener(\\\"keydown\\\", e => {\\n      if (e.keyCode === \u002F* Enter = *\u002F 13) {\\n        this.#verify();\\n      }\\n    });\\n\\n    this.overlayManager.register(this.dialog, \u002F* canForceClose = *\u002F true);\\n\\n    this.dialog.addEventListener(\\\"close\\\", this.#cancel.bind(this));\\n  }\\n\\n  async open() {\\n    await this.#activeCapability?.promise;\\n    this.#activeCapability = Promise.withResolvers();\\n\\n    try {\\n      await this.overlayManager.open(this.dialog);\\n    } catch (ex) {\\n      this.#activeCapability.resolve();\\n      throw ex;\\n    }\\n\\n    const passwordIncorrect =\\n      this.#reason === PasswordResponses.INCORRECT_PASSWORD;\\n\\n    if (!this._isViewerEmbedded || passwordIncorrect) {\\n      this.input.focus();\\n    }\\n    this.label.setAttribute(\\n      \\\"data-l10n-id\\\",\\n      `pdfjs-password-${passwordIncorrect ? \\\"invalid\\\" : \\\"label\\\"}`\\n    );\\n  }\\n\\n  async close() {\\n    if (this.overlayManager.active === this.dialog) {\\n      this.overlayManager.close(this.dialog);\\n    }\\n  }\\n\\n  #verify() {\\n    const password = this.input.value;\\n    if (password?.length > 0) {\\n      this.#invokeCallback(password);\\n    }\\n  }\\n\\n  #cancel() {\\n    this.#invokeCallback(new Error(\\\"PasswordPrompt cancelled.\\\"));\\n    this.#activeCapability.resolve();\\n  }\\n\\n  #invokeCallback(password) {\\n    if (!this.#updateCallback) {\\n      return; \u002F\u002F Ensure that the callback is only invoked once.\\n    }\\n    this.close();\\n    this.input.value = \\\"\\\";\\n\\n    this.#updateCallback(password);\\n    this.#updateCallback = null;\\n  }\\n\\n  async setUpdateCallback(updateCallback, reason) {\\n    if (this.#activeCapability) {\\n      await this.#activeCapability.promise;\\n    }\\n    this.#updateCallback = updateCallback;\\n    this.#reason = reason;\\n  }\\n}\\n\\nexport { PasswordPrompt };\\n\",\"\u002F* Copyright 2020 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { removeNullCharacters } from \\\".\u002Fui_utils.js\\\";\\n\\nconst TREEITEM_OFFSET_TOP = -100; \u002F\u002F px\\nconst TREEITEM_SELECTED_CLASS = \\\"selected\\\";\\n\\nclass BaseTreeViewer {\\n  constructor(options) {\\n    if (this.constructor === BaseTreeViewer) {\\n      throw new Error(\\\"Cannot initialize BaseTreeViewer.\\\");\\n    }\\n    this.container = options.container;\\n    this.eventBus = options.eventBus;\\n    this._l10n = options.l10n;\\n\\n    this.reset();\\n  }\\n\\n  reset() {\\n    this._pdfDocument = null;\\n    this._lastToggleIsShow = true;\\n    this._currentTreeItem = null;\\n\\n    \u002F\u002F Remove the tree from the DOM.\\n    this.container.textContent = \\\"\\\";\\n    \u002F\u002F Ensure that the left (right in RTL locales) margin is always reset,\\n    \u002F\u002F to prevent incorrect tree alignment if a new document is opened.\\n    this.container.classList.remove(\\\"treeWithDeepNesting\\\");\\n  }\\n\\n  \u002F**\\n   * @protected\\n   *\u002F\\n  _dispatchEvent(count) {\\n    throw new Error(\\\"Not implemented: _dispatchEvent\\\");\\n  }\\n\\n  \u002F**\\n   * @protected\\n   *\u002F\\n  _bindLink(element, params) {\\n    throw new Error(\\\"Not implemented: _bindLink\\\");\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _normalizeTextContent(str) {\\n    \u002F\u002F Chars in range [0x01-0x1F] will be replaced with a white space\\n    \u002F\u002F and 0x00 by \\\"\\\".\\n    return (\\n      removeNullCharacters(str, \u002F* replaceInvisible *\u002F true) ||\\n      \u002F* en dash = *\u002F \\\"\\\\u2013\\\"\\n    );\\n  }\\n\\n  \u002F**\\n   * Prepend a button before a tree item which allows the user to collapse or\\n   * expand all tree items at that level; see `_toggleTreeItem`.\\n   * @param {HTMLDivElement} div\\n   * @param {boolean|object} [hidden]\\n   * @protected\\n   *\u002F\\n  _addToggleButton(div, hidden = false) {\\n    const toggler = document.createElement(\\\"div\\\");\\n    toggler.className = \\\"treeItemToggler\\\";\\n    if (hidden) {\\n      toggler.classList.add(\\\"treeItemsHidden\\\");\\n    }\\n    toggler.onclick = evt => {\\n      evt.stopPropagation();\\n      toggler.classList.toggle(\\\"treeItemsHidden\\\");\\n\\n      if (evt.shiftKey) {\\n        const shouldShowAll = !toggler.classList.contains(\\\"treeItemsHidden\\\");\\n        this._toggleTreeItem(div, shouldShowAll);\\n      }\\n    };\\n    div.prepend(toggler);\\n  }\\n\\n  \u002F**\\n   * Collapse or expand the subtree of a tree item.\\n   *\\n   * @param {Element} root - the root of the item (sub)tree.\\n   * @param {boolean} show - whether to show the item (sub)tree. If false,\\n   *   the item subtree rooted at `root` will be collapsed.\\n   * @private\\n   *\u002F\\n  _toggleTreeItem(root, show = false) {\\n    \u002F\u002F Pause translation when collapsing\u002Fexpanding the subtree.\\n    this._l10n.pause();\\n\\n    this._lastToggleIsShow = show;\\n    for (const toggler of root.querySelectorAll(\\\".treeItemToggler\\\")) {\\n      toggler.classList.toggle(\\\"treeItemsHidden\\\", !show);\\n    }\\n    this._l10n.resume();\\n  }\\n\\n  \u002F**\\n   * Collapse or expand all subtrees of the `container`.\\n   * @private\\n   *\u002F\\n  _toggleAllTreeItems() {\\n    this._toggleTreeItem(this.container, !this._lastToggleIsShow);\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _finishRendering(fragment, count, hasAnyNesting = false) {\\n    if (hasAnyNesting) {\\n      this.container.classList.add(\\\"treeWithDeepNesting\\\");\\n\\n      this._lastToggleIsShow = !fragment.querySelector(\\\".treeItemsHidden\\\");\\n    }\\n    \u002F\u002F Pause translation when inserting the tree into the DOM.\\n    this._l10n.pause();\\n    this.container.append(fragment);\\n    this._l10n.resume();\\n\\n    this._dispatchEvent(count);\\n  }\\n\\n  render(params) {\\n    throw new Error(\\\"Not implemented: render\\\");\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _updateCurrentTreeItem(treeItem = null) {\\n    if (this._currentTreeItem) {\\n      \u002F\u002F Ensure that the current treeItem-selection is always removed.\\n      this._currentTreeItem.classList.remove(TREEITEM_SELECTED_CLASS);\\n      this._currentTreeItem = null;\\n    }\\n    if (treeItem) {\\n      treeItem.classList.add(TREEITEM_SELECTED_CLASS);\\n      this._currentTreeItem = treeItem;\\n    }\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _scrollToCurrentTreeItem(treeItem) {\\n    if (!treeItem) {\\n      return;\\n    }\\n    \u002F\u002F Pause translation when expanding the treeItem.\\n    this._l10n.pause();\\n    \u002F\u002F Ensure that the treeItem is *fully* expanded, such that it will first of\\n    \u002F\u002F all be visible and secondly that scrolling it into view works correctly.\\n    let currentNode = treeItem.parentNode;\\n    while (currentNode && currentNode !== this.container) {\\n      if (currentNode.classList.contains(\\\"treeItem\\\")) {\\n        const toggler = currentNode.firstElementChild;\\n        toggler?.classList.remove(\\\"treeItemsHidden\\\");\\n      }\\n      currentNode = currentNode.parentNode;\\n    }\\n    this._l10n.resume();\\n\\n    this._updateCurrentTreeItem(treeItem);\\n\\n    this.container.scrollTo(\\n      treeItem.offsetLeft,\\n      treeItem.offsetTop + TREEITEM_OFFSET_TOP\\n    );\\n  }\\n}\\n\\nexport { BaseTreeViewer };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fevent_utils.js\\\").EventBus} EventBus *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fdownload_manager.js\\\").DownloadManager} DownloadManager *\u002F\\n\\nimport { BaseTreeViewer } from \\\".\u002Fbase_tree_viewer.js\\\";\\nimport { waitOnEventOrTimeout } from \\\".\u002Fevent_utils.js\\\";\\n\\n\u002F**\\n * @typedef {Object} PDFAttachmentViewerOptions\\n * @property {HTMLDivElement} container - The viewer element.\\n * @property {EventBus} eventBus - The application event bus.\\n * @property {DownloadManager} downloadManager - The download manager.\\n *\u002F\\n\\n\u002F**\\n * @typedef {Object} PDFAttachmentViewerRenderParameters\\n * @property {Object|null} attachments - A lookup table of attachment objects.\\n * @property {boolean} [keepRenderedCapability]\\n *\u002F\\n\\nclass PDFAttachmentViewer extends BaseTreeViewer {\\n  \u002F**\\n   * @param {PDFAttachmentViewerOptions} options\\n   *\u002F\\n  constructor(options) {\\n    super(options);\\n    this.downloadManager = options.downloadManager;\\n\\n    this.eventBus._on(\\n      \\\"fileattachmentannotation\\\",\\n      this.#appendAttachment.bind(this)\\n    );\\n  }\\n\\n  reset(keepRenderedCapability = false) {\\n    super.reset();\\n    this._attachments = null;\\n\\n    if (!keepRenderedCapability) {\\n      \u002F\u002F The only situation in which the `_renderedCapability` should *not* be\\n      \u002F\u002F replaced is when appending FileAttachment annotations.\\n      this._renderedCapability = Promise.withResolvers();\\n    }\\n    this._pendingDispatchEvent = false;\\n  }\\n\\n  \u002F**\\n   * @protected\\n   *\u002F\\n  async _dispatchEvent(attachmentsCount) {\\n    this._renderedCapability.resolve();\\n\\n    if (attachmentsCount === 0 && !this._pendingDispatchEvent) {\\n      \u002F\u002F Delay the event when no \\\"regular\\\" attachments exist, to allow time for\\n      \u002F\u002F parsing of any FileAttachment annotations that may be present on the\\n      \u002F\u002F *initially* rendered page; this reduces the likelihood of temporarily\\n      \u002F\u002F disabling the attachmentsView when the `PDFSidebar` handles the event.\\n      this._pendingDispatchEvent = true;\\n\\n      await waitOnEventOrTimeout({\\n        target: this.eventBus,\\n        name: \\\"annotationlayerrendered\\\",\\n        delay: 1000,\\n      });\\n\\n      if (!this._pendingDispatchEvent) {\\n        return; \u002F\u002F There was already another `_dispatchEvent`-call`.\\n      }\\n    }\\n    this._pendingDispatchEvent = false;\\n\\n    this.eventBus.dispatch(\\\"attachmentsloaded\\\", {\\n      source: this,\\n      attachmentsCount,\\n    });\\n  }\\n\\n  \u002F**\\n   * @protected\\n   *\u002F\\n  _bindLink(element, { content, description, filename }) {\\n    if (description) {\\n      element.title = description;\\n    }\\n    element.onclick = () => {\\n      this.downloadManager.openOrDownloadData(content, filename);\\n      return false;\\n    };\\n  }\\n\\n  \u002F**\\n   * @param {PDFAttachmentViewerRenderParameters} params\\n   *\u002F\\n  render({ attachments, keepRenderedCapability = false }) {\\n    if (this._attachments) {\\n      this.reset(keepRenderedCapability);\\n    }\\n    this._attachments = attachments || null;\\n\\n    if (!attachments) {\\n      this._dispatchEvent(\u002F* attachmentsCount = *\u002F 0);\\n      return;\\n    }\\n\\n    const fragment = document.createDocumentFragment();\\n    let attachmentsCount = 0;\\n    for (const name in attachments) {\\n      const item = attachments[name];\\n\\n      const div = document.createElement(\\\"div\\\");\\n      div.className = \\\"treeItem\\\";\\n\\n      const element = document.createElement(\\\"a\\\");\\n      this._bindLink(element, item);\\n      element.textContent = this._normalizeTextContent(item.filename);\\n\\n      div.append(element);\\n\\n      fragment.append(div);\\n      attachmentsCount++;\\n    }\\n\\n    this._finishRendering(fragment, attachmentsCount);\\n  }\\n\\n  \u002F**\\n   * Used to append FileAttachment annotations to the sidebar.\\n   *\u002F\\n  #appendAttachment(item) {\\n    const renderedPromise = this._renderedCapability.promise;\\n\\n    renderedPromise.then(() => {\\n      if (renderedPromise !== this._renderedCapability.promise) {\\n        return; \u002F\u002F The FileAttachment annotation belongs to a previous document.\\n      }\\n      const attachments = this._attachments || Object.create(null);\\n\\n      for (const name in attachments) {\\n        if (item.filename === name) {\\n          return; \u002F\u002F Ignore the new attachment if it already exists.\\n        }\\n      }\\n      attachments[item.filename] = item;\\n\\n      this.render({\\n        attachments,\\n        keepRenderedCapability: true,\\n      });\\n    });\\n  }\\n}\\n\\nexport { PDFAttachmentViewer };\\n\",\"\u002F* Copyright 2013 Rob Wu \u003Crob@robwu.nl>\\n * https:\u002F\u002Fgithub.com\u002FRob--W\u002Fgrab-to-pan.js\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F Class name of element which can be grabbed.\\nconst CSS_CLASS_GRAB = \\\"grab-to-pan-grab\\\";\\n\\n\u002F**\\n * @typedef {Object} GrabToPanOptions\\n * @property {HTMLElement} element\\n *\u002F\\n\\nclass GrabToPan {\\n  \u002F**\\n   * Construct a GrabToPan instance for a given HTML element.\\n   * @param {GrabToPanOptions} options\\n   *\u002F\\n  constructor({ element }) {\\n    this.element = element;\\n    this.document = element.ownerDocument;\\n\\n    \u002F\u002F Bind the contexts to ensure that `this` always points to\\n    \u002F\u002F the GrabToPan instance.\\n    this.activate = this.activate.bind(this);\\n    this.deactivate = this.deactivate.bind(this);\\n    this.toggle = this.toggle.bind(this);\\n    this._onMouseDown = this.#onMouseDown.bind(this);\\n    this._onMouseMove = this.#onMouseMove.bind(this);\\n    this._endPan = this.#endPan.bind(this);\\n\\n    \u002F\u002F This overlay will be inserted in the document when the mouse moves during\\n    \u002F\u002F a grab operation, to ensure that the cursor has the desired appearance.\\n    const overlay = (this.overlay = document.createElement(\\\"div\\\"));\\n    overlay.className = \\\"grab-to-pan-grabbing\\\";\\n  }\\n\\n  \u002F**\\n   * Bind a mousedown event to the element to enable grab-detection.\\n   *\u002F\\n  activate() {\\n    if (!this.active) {\\n      this.active = true;\\n      this.element.addEventListener(\\\"mousedown\\\", this._onMouseDown, true);\\n      this.element.classList.add(CSS_CLASS_GRAB);\\n    }\\n  }\\n\\n  \u002F**\\n   * Removes all events. Any pending pan session is immediately stopped.\\n   *\u002F\\n  deactivate() {\\n    if (this.active) {\\n      this.active = false;\\n      this.element.removeEventListener(\\\"mousedown\\\", this._onMouseDown, true);\\n      this._endPan();\\n      this.element.classList.remove(CSS_CLASS_GRAB);\\n    }\\n  }\\n\\n  toggle() {\\n    if (this.active) {\\n      this.deactivate();\\n    } else {\\n      this.activate();\\n    }\\n  }\\n\\n  \u002F**\\n   * Whether to not pan if the target element is clicked.\\n   * Override this method to change the default behaviour.\\n   *\\n   * @param {Element} node - The target of the event.\\n   * @returns {boolean} Whether to not react to the click event.\\n   *\u002F\\n  ignoreTarget(node) {\\n    \u002F\u002F Check whether the clicked element is, a child of, an input element\u002Flink.\\n    return node.matches(\\n      \\\"a[href], a[href] *, input, textarea, button, button *, select, option\\\"\\n    );\\n  }\\n\\n  #onMouseDown(event) {\\n    if (event.button !== 0 || this.ignoreTarget(event.target)) {\\n      return;\\n    }\\n    if (event.originalTarget) {\\n      try {\\n        \u002F\u002F eslint-disable-next-line no-unused-expressions\\n        event.originalTarget.tagName;\\n      } catch {\\n        \u002F\u002F Mozilla-specific: element is a scrollbar (XUL element)\\n        return;\\n      }\\n    }\\n\\n    this.scrollLeftStart = this.element.scrollLeft;\\n    this.scrollTopStart = this.element.scrollTop;\\n    this.clientXStart = event.clientX;\\n    this.clientYStart = event.clientY;\\n    this.document.addEventListener(\\\"mousemove\\\", this._onMouseMove, true);\\n    this.document.addEventListener(\\\"mouseup\\\", this._endPan, true);\\n    \u002F\u002F When a scroll event occurs before a mousemove, assume that the user\\n    \u002F\u002F dragged a scrollbar (necessary for Opera Presto, Safari and IE)\\n    \u002F\u002F (not needed for Chrome\u002FFirefox)\\n    this.element.addEventListener(\\\"scroll\\\", this._endPan, true);\\n    event.preventDefault();\\n    event.stopPropagation();\\n\\n    const focusedElement = document.activeElement;\\n    if (focusedElement && !focusedElement.contains(event.target)) {\\n      focusedElement.blur();\\n    }\\n  }\\n\\n  #onMouseMove(event) {\\n    this.element.removeEventListener(\\\"scroll\\\", this._endPan, true);\\n    if (!(event.buttons & 1)) {\\n      \u002F\u002F The left mouse button is released.\\n      this._endPan();\\n      return;\\n    }\\n    const xDiff = event.clientX - this.clientXStart;\\n    const yDiff = event.clientY - this.clientYStart;\\n    this.element.scrollTo({\\n      top: this.scrollTopStart - yDiff,\\n      left: this.scrollLeftStart - xDiff,\\n      behavior: \\\"instant\\\",\\n    });\\n\\n    if (!this.overlay.parentNode) {\\n      document.body.append(this.overlay);\\n    }\\n  }\\n\\n  #endPan() {\\n    this.element.removeEventListener(\\\"scroll\\\", this._endPan, true);\\n    this.document.removeEventListener(\\\"mousemove\\\", this._onMouseMove, true);\\n    this.document.removeEventListener(\\\"mouseup\\\", this._endPan, true);\\n    \u002F\u002F Note: ChildNode.remove doesn't throw if the parentNode is undefined.\\n    this.overlay.remove();\\n  }\\n}\\n\\nexport { GrabToPan };\\n\",\"\u002F* Copyright 2017 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fevent_utils.js\\\").EventBus} EventBus *\u002F\\n\\nimport { AnnotationEditorType, shadow } from \\\"pdfjs-lib\\\";\\nimport { CursorTool, PresentationModeState } from \\\".\u002Fui_utils.js\\\";\\nimport { GrabToPan } from \\\".\u002Fgrab_to_pan.js\\\";\\n\\n\u002F**\\n * @typedef {Object} PDFCursorToolsOptions\\n * @property {HTMLDivElement} container - The document container.\\n * @property {EventBus} eventBus - The application event bus.\\n * @property {number} [cursorToolOnLoad] - The cursor tool that will be enabled\\n *   on load; the constants from {CursorTool} should be used. The default value\\n *   is `CursorTool.SELECT`.\\n *\u002F\\n\\nclass PDFCursorTools {\\n  #active = CursorTool.SELECT;\\n\\n  #prevActive = null;\\n\\n  \u002F**\\n   * @param {PDFCursorToolsOptions} options\\n   *\u002F\\n  constructor({ container, eventBus, cursorToolOnLoad = CursorTool.SELECT }) {\\n    this.container = container;\\n    this.eventBus = eventBus;\\n\\n    this.#addEventListeners();\\n\\n    \u002F\u002F Defer the initial `switchTool` call, to give other viewer components\\n    \u002F\u002F time to initialize *and* register 'cursortoolchanged' event listeners.\\n    Promise.resolve().then(() => {\\n      this.switchTool(cursorToolOnLoad);\\n    });\\n  }\\n\\n  \u002F**\\n   * @type {number} One of the values in {CursorTool}.\\n   *\u002F\\n  get activeTool() {\\n    return this.#active;\\n  }\\n\\n  \u002F**\\n   * @param {number} tool - The cursor mode that should be switched to,\\n   *                        must be one of the values in {CursorTool}.\\n   *\u002F\\n  switchTool(tool) {\\n    if (this.#prevActive !== null) {\\n      \u002F\u002F Cursor tools cannot be used in PresentationMode\u002FAnnotationEditor.\\n      return;\\n    }\\n    if (tool === this.#active) {\\n      return; \u002F\u002F The requested tool is already active.\\n    }\\n\\n    const disableActiveTool = () => {\\n      switch (this.#active) {\\n        case CursorTool.SELECT:\\n          break;\\n        case CursorTool.HAND:\\n          this._handTool.deactivate();\\n          break;\\n        case CursorTool.ZOOM:\\n        \u002F* falls through *\u002F\\n      }\\n    };\\n\\n    \u002F\u002F Enable the new cursor tool.\\n    switch (tool) {\\n      case CursorTool.SELECT:\\n        disableActiveTool();\\n        break;\\n      case CursorTool.HAND:\\n        disableActiveTool();\\n        this._handTool.activate();\\n        break;\\n      case CursorTool.ZOOM:\\n      \u002F* falls through *\u002F\\n      default:\\n        console.error(`switchTool: \\\"${tool}\\\" is an unsupported value.`);\\n        return;\\n    }\\n    \u002F\u002F Update the active tool *after* it has been validated above,\\n    \u002F\u002F in order to prevent setting it to an invalid state.\\n    this.#active = tool;\\n\\n    this.eventBus.dispatch(\\\"cursortoolchanged\\\", {\\n      source: this,\\n      tool,\\n    });\\n  }\\n\\n  #addEventListeners() {\\n    this.eventBus._on(\\\"switchcursortool\\\", evt => {\\n      if (!evt.reset) {\\n        this.switchTool(evt.tool);\\n      } else if (this.#prevActive !== null) {\\n        annotationEditorMode = AnnotationEditorType.NONE;\\n        presentationModeState = PresentationModeState.NORMAL;\\n\\n        enableActive();\\n      }\\n    });\\n\\n    let annotationEditorMode = AnnotationEditorType.NONE,\\n      presentationModeState = PresentationModeState.NORMAL;\\n\\n    const disableActive = () => {\\n      const prevActive = this.#active;\\n\\n      this.switchTool(CursorTool.SELECT);\\n      this.#prevActive ??= prevActive; \u002F\u002F Keep track of the first one.\\n    };\\n    const enableActive = () => {\\n      const prevActive = this.#prevActive;\\n\\n      if (\\n        prevActive !== null &&\\n        annotationEditorMode === AnnotationEditorType.NONE &&\\n        presentationModeState === PresentationModeState.NORMAL\\n      ) {\\n        this.#prevActive = null;\\n        this.switchTool(prevActive);\\n      }\\n    };\\n\\n    this.eventBus._on(\\\"annotationeditormodechanged\\\", ({ mode }) => {\\n      annotationEditorMode = mode;\\n\\n      if (mode === AnnotationEditorType.NONE) {\\n        enableActive();\\n      } else {\\n        disableActive();\\n      }\\n    });\\n\\n    this.eventBus._on(\\\"presentationmodechanged\\\", ({ state }) => {\\n      presentationModeState = state;\\n\\n      if (state === PresentationModeState.NORMAL) {\\n        enableActive();\\n      } else if (state === PresentationModeState.FULLSCREEN) {\\n        disableActive();\\n      }\\n    });\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  get _handTool() {\\n    return shadow(\\n      this,\\n      \\\"_handTool\\\",\\n      new GrabToPan({\\n        element: this.container,\\n      })\\n    );\\n  }\\n}\\n\\nexport { PDFCursorTools };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fevent_utils.js\\\").EventBus} EventBus *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces.js\\\").IL10n} IL10n *\u002F\\n\u002F** @typedef {import(\\\".\u002Foverlay_manager.js\\\").OverlayManager} OverlayManager *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fapi.js\\\").PDFDocumentProxy} PDFDocumentProxy *\u002F\\n\\nimport { getPageSizeInches, isPortraitOrientation } from \\\".\u002Fui_utils.js\\\";\\nimport { PDFDateString } from \\\"pdfjs-lib\\\";\\n\\nconst DEFAULT_FIELD_CONTENT = \\\"-\\\";\\n\\n\u002F\u002F See https:\u002F\u002Fen.wikibooks.org\u002Fwiki\u002FLentis\u002FConversion_to_the_Metric_Standard_in_the_United_States\\nconst NON_METRIC_LOCALES = [\\\"en-us\\\", \\\"en-lr\\\", \\\"my\\\"];\\n\\n\u002F\u002F Should use the format: `width x height`, in portrait orientation. The names,\\n\u002F\u002F which are l10n-ids, should be lowercase.\\n\u002F\u002F See https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPaper_size\\nconst US_PAGE_NAMES = {\\n  \\\"8.5x11\\\": \\\"letter\\\",\\n  \\\"8.5x14\\\": \\\"legal\\\",\\n};\\nconst METRIC_PAGE_NAMES = {\\n  \\\"297x420\\\": \\\"a-three\\\",\\n  \\\"210x297\\\": \\\"a-four\\\",\\n};\\n\\nfunction getPageName(size, isPortrait, pageNames) {\\n  const width = isPortrait ? size.width : size.height;\\n  const height = isPortrait ? size.height : size.width;\\n\\n  return pageNames[`${width}x${height}`];\\n}\\n\\n\u002F**\\n * @typedef {Object} PDFDocumentPropertiesOptions\\n * @property {HTMLDialogElement} dialog - The overlay's DOM element.\\n * @property {Object} fields - Names and elements of the overlay's fields.\\n * @property {HTMLButtonElement} closeButton - Button for closing the overlay.\\n *\u002F\\n\\nclass PDFDocumentProperties {\\n  #fieldData = null;\\n\\n  \u002F**\\n   * @param {PDFDocumentPropertiesOptions} options\\n   * @param {OverlayManager} overlayManager - Manager for the viewer overlays.\\n   * @param {EventBus} eventBus - The application event bus.\\n   * @param {IL10n} l10n - Localization service.\\n   * @param {function} fileNameLookup - The function that is used to lookup\\n   *   the document fileName.\\n   *\u002F\\n  constructor(\\n    { dialog, fields, closeButton },\\n    overlayManager,\\n    eventBus,\\n    l10n,\\n    fileNameLookup\\n  ) {\\n    this.dialog = dialog;\\n    this.fields = fields;\\n    this.overlayManager = overlayManager;\\n    this.l10n = l10n;\\n    this._fileNameLookup = fileNameLookup;\\n\\n    this.#reset();\\n    \u002F\u002F Bind the event listener for the Close button.\\n    closeButton.addEventListener(\\\"click\\\", this.close.bind(this));\\n\\n    this.overlayManager.register(this.dialog);\\n\\n    eventBus._on(\\\"pagechanging\\\", evt => {\\n      this._currentPageNumber = evt.pageNumber;\\n    });\\n    eventBus._on(\\\"rotationchanging\\\", evt => {\\n      this._pagesRotation = evt.pagesRotation;\\n    });\\n\\n    this._isNonMetricLocale = NON_METRIC_LOCALES.includes(l10n.getLanguage());\\n  }\\n\\n  \u002F**\\n   * Open the document properties overlay.\\n   *\u002F\\n  async open() {\\n    await Promise.all([\\n      this.overlayManager.open(this.dialog),\\n      this._dataAvailableCapability.promise,\\n    ]);\\n    const currentPageNumber = this._currentPageNumber;\\n    const pagesRotation = this._pagesRotation;\\n\\n    \u002F\u002F If the document properties were previously fetched (for this PDF file),\\n    \u002F\u002F just update the dialog immediately to avoid redundant lookups.\\n    if (\\n      this.#fieldData &&\\n      currentPageNumber === this.#fieldData._currentPageNumber &&\\n      pagesRotation === this.#fieldData._pagesRotation\\n    ) {\\n      this.#updateUI();\\n      return;\\n    }\\n\\n    \u002F\u002F Get the document properties.\\n    const {\\n      info,\\n      \u002F* metadata, *\u002F\\n      \u002F* contentDispositionFilename, *\u002F\\n      contentLength,\\n    } = await this.pdfDocument.getMetadata();\\n\\n    const [\\n      fileName,\\n      fileSize,\\n      creationDate,\\n      modificationDate,\\n      pageSize,\\n      isLinearized,\\n    ] = await Promise.all([\\n      this._fileNameLookup(),\\n      this.#parseFileSize(contentLength),\\n      this.#parseDate(info.CreationDate),\\n      this.#parseDate(info.ModDate),\\n      \u002F\u002F eslint-disable-next-line arrow-body-style\\n      this.pdfDocument.getPage(currentPageNumber).then(pdfPage => {\\n        return this.#parsePageSize(getPageSizeInches(pdfPage), pagesRotation);\\n      }),\\n      this.#parseLinearization(info.IsLinearized),\\n    ]);\\n\\n    this.#fieldData = Object.freeze({\\n      fileName,\\n      fileSize,\\n      title: info.Title,\\n      author: info.Author,\\n      subject: info.Subject,\\n      keywords: info.Keywords,\\n      creationDate,\\n      modificationDate,\\n      creator: info.Creator,\\n      producer: info.Producer,\\n      version: info.PDFFormatVersion,\\n      pageCount: this.pdfDocument.numPages,\\n      pageSize,\\n      linearized: isLinearized,\\n      _currentPageNumber: currentPageNumber,\\n      _pagesRotation: pagesRotation,\\n    });\\n    this.#updateUI();\\n\\n    \u002F\u002F Get the correct fileSize, since it may not have been available\\n    \u002F\u002F or could potentially be wrong.\\n    const { length } = await this.pdfDocument.getDownloadInfo();\\n    if (contentLength === length) {\\n      return; \u002F\u002F The fileSize has already been correctly set.\\n    }\\n    const data = Object.assign(Object.create(null), this.#fieldData);\\n    data.fileSize = await this.#parseFileSize(length);\\n\\n    this.#fieldData = Object.freeze(data);\\n    this.#updateUI();\\n  }\\n\\n  \u002F**\\n   * Close the document properties overlay.\\n   *\u002F\\n  async close() {\\n    this.overlayManager.close(this.dialog);\\n  }\\n\\n  \u002F**\\n   * Set a reference to the PDF document in order to populate the dialog fields\\n   * with the document properties. Note that the dialog will contain no\\n   * information if this method is not called.\\n   *\\n   * @param {PDFDocumentProxy} pdfDocument - A reference to the PDF document.\\n   *\u002F\\n  setDocument(pdfDocument) {\\n    if (this.pdfDocument) {\\n      this.#reset();\\n      this.#updateUI(true);\\n    }\\n    if (!pdfDocument) {\\n      return;\\n    }\\n    this.pdfDocument = pdfDocument;\\n\\n    this._dataAvailableCapability.resolve();\\n  }\\n\\n  #reset() {\\n    this.pdfDocument = null;\\n\\n    this.#fieldData = null;\\n    this._dataAvailableCapability = Promise.withResolvers();\\n    this._currentPageNumber = 1;\\n    this._pagesRotation = 0;\\n  }\\n\\n  \u002F**\\n   * Always updates all of the dialog fields, to prevent inconsistent UI state.\\n   * NOTE: If the contents of a particular field is neither a non-empty string,\\n   *       nor a number, it will fall back to `DEFAULT_FIELD_CONTENT`.\\n   *\u002F\\n  #updateUI(reset = false) {\\n    if (reset || !this.#fieldData) {\\n      for (const id in this.fields) {\\n        this.fields[id].textContent = DEFAULT_FIELD_CONTENT;\\n      }\\n      return;\\n    }\\n    if (this.overlayManager.active !== this.dialog) {\\n      \u002F\u002F Don't bother updating the dialog if has already been closed,\\n      \u002F\u002F since it will be updated the next time `this.open` is called.\\n      return;\\n    }\\n    for (const id in this.fields) {\\n      const content = this.#fieldData[id];\\n      this.fields[id].textContent =\\n        content || content === 0 ? content : DEFAULT_FIELD_CONTENT;\\n    }\\n  }\\n\\n  async #parseFileSize(fileSize = 0) {\\n    const kb = fileSize \u002F 1024,\\n      mb = kb \u002F 1024;\\n    if (!kb) {\\n      return undefined;\\n    }\\n    return this.l10n.get(`pdfjs-document-properties-${mb >= 1 ? \\\"mb\\\" : \\\"kb\\\"}`, {\\n      size_mb: mb >= 1 && (+mb.toPrecision(3)).toLocaleString(),\\n      size_kb: mb \u003C 1 && (+kb.toPrecision(3)).toLocaleString(),\\n      size_b: fileSize.toLocaleString(),\\n    });\\n  }\\n\\n  async #parsePageSize(pageSizeInches, pagesRotation) {\\n    if (!pageSizeInches) {\\n      return undefined;\\n    }\\n    \u002F\u002F Take the viewer rotation into account as well; compare with Adobe Reader.\\n    if (pagesRotation % 180 !== 0) {\\n      pageSizeInches = {\\n        width: pageSizeInches.height,\\n        height: pageSizeInches.width,\\n      };\\n    }\\n    const isPortrait = isPortraitOrientation(pageSizeInches);\\n\\n    let sizeInches = {\\n      width: Math.round(pageSizeInches.width * 100) \u002F 100,\\n      height: Math.round(pageSizeInches.height * 100) \u002F 100,\\n    };\\n    \u002F\u002F 1in == 25.4mm; no need to round to 2 decimals for millimeters.\\n    let sizeMillimeters = {\\n      width: Math.round(pageSizeInches.width * 25.4 * 10) \u002F 10,\\n      height: Math.round(pageSizeInches.height * 25.4 * 10) \u002F 10,\\n    };\\n\\n    let rawName =\\n      getPageName(sizeInches, isPortrait, US_PAGE_NAMES) ||\\n      getPageName(sizeMillimeters, isPortrait, METRIC_PAGE_NAMES);\\n\\n    if (\\n      !rawName &&\\n      !(\\n        Number.isInteger(sizeMillimeters.width) &&\\n        Number.isInteger(sizeMillimeters.height)\\n      )\\n    ) {\\n      \u002F\u002F Attempt to improve the page name detection by falling back to fuzzy\\n      \u002F\u002F matching of the metric dimensions, to account for e.g. rounding errors\\n      \u002F\u002F and\u002For PDF files that define the page sizes in an imprecise manner.\\n      const exactMillimeters = {\\n        width: pageSizeInches.width * 25.4,\\n        height: pageSizeInches.height * 25.4,\\n      };\\n      const intMillimeters = {\\n        width: Math.round(sizeMillimeters.width),\\n        height: Math.round(sizeMillimeters.height),\\n      };\\n\\n      \u002F\u002F Try to avoid false positives, by only considering \\\"small\\\" differences.\\n      if (\\n        Math.abs(exactMillimeters.width - intMillimeters.width) \u003C 0.1 &&\\n        Math.abs(exactMillimeters.height - intMillimeters.height) \u003C 0.1\\n      ) {\\n        rawName = getPageName(intMillimeters, isPortrait, METRIC_PAGE_NAMES);\\n        if (rawName) {\\n          \u002F\u002F Update *both* sizes, computed above, to ensure that the displayed\\n          \u002F\u002F dimensions always correspond to the detected page name.\\n          sizeInches = {\\n            width: Math.round((intMillimeters.width \u002F 25.4) * 100) \u002F 100,\\n            height: Math.round((intMillimeters.height \u002F 25.4) * 100) \u002F 100,\\n          };\\n          sizeMillimeters = intMillimeters;\\n        }\\n      }\\n    }\\n\\n    const [{ width, height }, unit, name, orientation] = await Promise.all([\\n      this._isNonMetricLocale ? sizeInches : sizeMillimeters,\\n      this.l10n.get(\\n        `pdfjs-document-properties-page-size-unit-${\\n          this._isNonMetricLocale ? \\\"inches\\\" : \\\"millimeters\\\"\\n        }`\\n      ),\\n      rawName &&\\n        this.l10n.get(`pdfjs-document-properties-page-size-name-${rawName}`),\\n      this.l10n.get(\\n        `pdfjs-document-properties-page-size-orientation-${\\n          isPortrait ? \\\"portrait\\\" : \\\"landscape\\\"\\n        }`\\n      ),\\n    ]);\\n\\n    return this.l10n.get(\\n      `pdfjs-document-properties-page-size-dimension-${\\n        name ? \\\"name-\\\" : \\\"\\\"\\n      }string`,\\n      {\\n        width: width.toLocaleString(),\\n        height: height.toLocaleString(),\\n        unit,\\n        name,\\n        orientation,\\n      }\\n    );\\n  }\\n\\n  async #parseDate(inputDate) {\\n    const dateObject = PDFDateString.toDateObject(inputDate);\\n    if (!dateObject) {\\n      return undefined;\\n    }\\n    return this.l10n.get(\\\"pdfjs-document-properties-date-string\\\", {\\n      date: dateObject.toLocaleDateString(),\\n      time: dateObject.toLocaleTimeString(),\\n    });\\n  }\\n\\n  #parseLinearization(isLinearized) {\\n    return this.l10n.get(\\n      `pdfjs-document-properties-linearized-${isLinearized ? \\\"yes\\\" : \\\"no\\\"}`\\n    );\\n  }\\n}\\n\\nexport { PDFDocumentProperties };\\n\",\"\u002F* Copyright 2018 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nconst CharacterType = {\\n  SPACE: 0,\\n  ALPHA_LETTER: 1,\\n  PUNCT: 2,\\n  HAN_LETTER: 3,\\n  KATAKANA_LETTER: 4,\\n  HIRAGANA_LETTER: 5,\\n  HALFWIDTH_KATAKANA_LETTER: 6,\\n  THAI_LETTER: 7,\\n};\\n\\nfunction isAlphabeticalScript(charCode) {\\n  return charCode \u003C 0x2e80;\\n}\\n\\nfunction isAscii(charCode) {\\n  return (charCode & 0xff80) === 0;\\n}\\n\\nfunction isAsciiAlpha(charCode) {\\n  return (\\n    (charCode >= \u002F* a = *\u002F 0x61 && charCode \u003C= \u002F* z = *\u002F 0x7a) ||\\n    (charCode >= \u002F* A = *\u002F 0x41 && charCode \u003C= \u002F* Z = *\u002F 0x5a)\\n  );\\n}\\n\\nfunction isAsciiDigit(charCode) {\\n  return charCode >= \u002F* 0 = *\u002F 0x30 && charCode \u003C= \u002F* 9 = *\u002F 0x39;\\n}\\n\\nfunction isAsciiSpace(charCode) {\\n  return (\\n    charCode === \u002F* SPACE = *\u002F 0x20 ||\\n    charCode === \u002F* TAB = *\u002F 0x09 ||\\n    charCode === \u002F* CR = *\u002F 0x0d ||\\n    charCode === \u002F* LF = *\u002F 0x0a\\n  );\\n}\\n\\nfunction isHan(charCode) {\\n  return (\\n    (charCode >= 0x3400 && charCode \u003C= 0x9fff) ||\\n    (charCode >= 0xf900 && charCode \u003C= 0xfaff)\\n  );\\n}\\n\\nfunction isKatakana(charCode) {\\n  return charCode >= 0x30a0 && charCode \u003C= 0x30ff;\\n}\\n\\nfunction isHiragana(charCode) {\\n  return charCode >= 0x3040 && charCode \u003C= 0x309f;\\n}\\n\\nfunction isHalfwidthKatakana(charCode) {\\n  return charCode >= 0xff60 && charCode \u003C= 0xff9f;\\n}\\n\\nfunction isThai(charCode) {\\n  return (charCode & 0xff80) === 0x0e00;\\n}\\n\\n\u002F**\\n * This function is based on the word-break detection implemented in:\\n * https:\u002F\u002Fhg.mozilla.org\u002Fmozilla-central\u002Ffile\u002Ftip\u002Fintl\u002Flwbrk\u002FWordBreaker.cpp\\n *\u002F\\nfunction getCharacterType(charCode) {\\n  if (isAlphabeticalScript(charCode)) {\\n    if (isAscii(charCode)) {\\n      if (isAsciiSpace(charCode)) {\\n        return CharacterType.SPACE;\\n      } else if (\\n        isAsciiAlpha(charCode) ||\\n        isAsciiDigit(charCode) ||\\n        charCode === \u002F* UNDERSCORE = *\u002F 0x5f\\n      ) {\\n        return CharacterType.ALPHA_LETTER;\\n      }\\n      return CharacterType.PUNCT;\\n    } else if (isThai(charCode)) {\\n      return CharacterType.THAI_LETTER;\\n    } else if (charCode === \u002F* NBSP = *\u002F 0xa0) {\\n      return CharacterType.SPACE;\\n    }\\n    return CharacterType.ALPHA_LETTER;\\n  }\\n\\n  if (isHan(charCode)) {\\n    return CharacterType.HAN_LETTER;\\n  } else if (isKatakana(charCode)) {\\n    return CharacterType.KATAKANA_LETTER;\\n  } else if (isHiragana(charCode)) {\\n    return CharacterType.HIRAGANA_LETTER;\\n  } else if (isHalfwidthKatakana(charCode)) {\\n    return CharacterType.HALFWIDTH_KATAKANA_LETTER;\\n  }\\n  return CharacterType.ALPHA_LETTER;\\n}\\n\\nlet NormalizeWithNFKC;\\nfunction getNormalizeWithNFKC() {\\n  \u002F* eslint-disable no-irregular-whitespace *\u002F\\n  NormalizeWithNFKC ||= ` ¨ª¯²-µ¸-º¼-¾Ĳ-ĳĿ-ŀŉſǄ-ǌǱ-ǳʰ-ʸ˘-˝ˠ-ˤʹͺ;΄-΅·ϐ-ϖϰ-ϲϴ-ϵϹևٵ-ٸक़-य़ড়-ঢ়য়ਲ਼ਸ਼ਖ਼-ਜ਼ਫ਼ଡ଼-ଢ଼ำຳໜ-ໝ༌གྷཌྷདྷབྷཛྷཀྵჼᴬ-ᴮᴰ-ᴺᴼ-ᵍᵏ-ᵪᵸᶛ-ᶿẚ-ẛάέήίόύώΆ᾽-῁ΈΉ῍-῏ΐΊ῝-῟ΰΎ῭-`ΌΏ´-῾ - ‑‗․-… ″-‴‶-‷‼‾⁇-⁉⁗ ⁰-ⁱ⁴-₎ₐ-ₜ₨℀-℃℅-ℇ℉-ℓℕ-№ℙ-ℝ℠-™ℤΩℨK-ℭℯ-ℱℳ-ℹ℻-⅀ⅅ-ⅉ⅐-ⅿ↉∬-∭∯-∰〈-〉①-⓪⨌⩴-⩶⫝̸ⱼ-ⱽⵯ⺟⻳⼀-⿕　〶〸-〺゛-゜ゟヿㄱ-ㆎ㆒-㆟㈀-㈞㈠-㉇㉐-㉾㊀-㏿ꚜ-ꚝꝰꟲ-ꟴꟸ-ꟹꭜ-ꭟꭩ豈-嗀塚晴凞-羽蘒諸逸-都飯-舘並-龎ﬀ-ﬆﬓ-ﬗיִײַ-זּטּ-לּמּנּ-סּףּ-פּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-﷼︐-︙︰-﹄﹇-﹒﹔-﹦﹨-﹫ﹰ-ﹲﹴﹶ-ﻼ！-ﾾￂ-ￇￊ-ￏￒ-ￗￚ-ￜ￠-￦`;\\n\\n  if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n    const ranges = [];\\n    const range = [];\\n    const diacriticsRegex = \u002F^\\\\p{M}$\u002Fu;\\n    \u002F\u002F Some chars must be replaced by their NFKC counterpart during a search.\\n    for (let i = 0; i \u003C 65536; i++) {\\n      const c = String.fromCharCode(i);\\n      if (c.normalize(\\\"NFKC\\\") !== c && !diacriticsRegex.test(c)) {\\n        if (range.length !== 2) {\\n          range[0] = range[1] = i;\\n          continue;\\n        }\\n        if (range[1] + 1 !== i) {\\n          if (range[0] === range[1]) {\\n            ranges.push(String.fromCharCode(range[0]));\\n          } else {\\n            ranges.push(\\n              `${String.fromCharCode(range[0])}-${String.fromCharCode(\\n                range[1]\\n              )}`\\n            );\\n          }\\n          range[0] = range[1] = i;\\n        } else {\\n          range[1] = i;\\n        }\\n      }\\n    }\\n    if (ranges.join(\\\"\\\") !== NormalizeWithNFKC) {\\n      throw new Error(\\n        \\\"getNormalizeWithNFKC - update the `NormalizeWithNFKC` string.\\\"\\n      );\\n    }\\n  }\\n  return NormalizeWithNFKC;\\n}\\n\\nexport { CharacterType, getCharacterType, getNormalizeWithNFKC };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fapi\\\").PDFDocumentProxy} PDFDocumentProxy *\u002F\\n\u002F** @typedef {import(\\\".\u002Fevent_utils\\\").EventBus} EventBus *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IPDFLinkService} IPDFLinkService *\u002F\\n\\nimport { binarySearchFirstItem, scrollIntoView } from \\\".\u002Fui_utils.js\\\";\\nimport { getCharacterType, getNormalizeWithNFKC } from \\\".\u002Fpdf_find_utils.js\\\";\\n\\nconst FindState = {\\n  FOUND: 0,\\n  NOT_FOUND: 1,\\n  WRAPPED: 2,\\n  PENDING: 3,\\n};\\n\\nconst FIND_TIMEOUT = 250; \u002F\u002F ms\\nconst MATCH_SCROLL_OFFSET_TOP = -50; \u002F\u002F px\\nconst MATCH_SCROLL_OFFSET_LEFT = -400; \u002F\u002F px\\n\\nconst CHARACTERS_TO_NORMALIZE = {\\n  \\\"\\\\u2010\\\": \\\"-\\\", \u002F\u002F Hyphen\\n  \\\"\\\\u2018\\\": \\\"'\\\", \u002F\u002F Left single quotation mark\\n  \\\"\\\\u2019\\\": \\\"'\\\", \u002F\u002F Right single quotation mark\\n  \\\"\\\\u201A\\\": \\\"'\\\", \u002F\u002F Single low-9 quotation mark\\n  \\\"\\\\u201B\\\": \\\"'\\\", \u002F\u002F Single high-reversed-9 quotation mark\\n  \\\"\\\\u201C\\\": '\\\"', \u002F\u002F Left double quotation mark\\n  \\\"\\\\u201D\\\": '\\\"', \u002F\u002F Right double quotation mark\\n  \\\"\\\\u201E\\\": '\\\"', \u002F\u002F Double low-9 quotation mark\\n  \\\"\\\\u201F\\\": '\\\"', \u002F\u002F Double high-reversed-9 quotation mark\\n  \\\"\\\\u00BC\\\": \\\"1\u002F4\\\", \u002F\u002F Vulgar fraction one quarter\\n  \\\"\\\\u00BD\\\": \\\"1\u002F2\\\", \u002F\u002F Vulgar fraction one half\\n  \\\"\\\\u00BE\\\": \\\"3\u002F4\\\", \u002F\u002F Vulgar fraction three quarters\\n};\\n\\n\u002F\u002F These diacritics aren't considered as combining diacritics\\n\u002F\u002F when searching in a document:\\n\u002F\u002F   https:\u002F\u002Fsearchfox.org\u002Fmozilla-central\u002Fsource\u002Fintl\u002Funicharutil\u002Futil\u002Fis_combining_diacritic.py.\\n\u002F\u002F The combining class definitions can be found:\\n\u002F\u002F   https:\u002F\u002Fwww.unicode.org\u002Freports\u002Ftr44\u002F#Canonical_Combining_Class_Values\\n\u002F\u002F Category 0 corresponds to [^\\\\p{Mn}].\\nconst DIACRITICS_EXCEPTION = new Set([\\n  \u002F\u002F UNICODE_COMBINING_CLASS_KANA_VOICING\\n  \u002F\u002F https:\u002F\u002Fwww.compart.com\u002Ffr\u002Funicode\u002Fcombining\u002F8\\n  0x3099, 0x309a,\\n  \u002F\u002F UNICODE_COMBINING_CLASS_VIRAMA (under 0xFFFF)\\n  \u002F\u002F https:\u002F\u002Fwww.compart.com\u002Ffr\u002Funicode\u002Fcombining\u002F9\\n  0x094d, 0x09cd, 0x0a4d, 0x0acd, 0x0b4d, 0x0bcd, 0x0c4d, 0x0ccd, 0x0d3b,\\n  0x0d3c, 0x0d4d, 0x0dca, 0x0e3a, 0x0eba, 0x0f84, 0x1039, 0x103a, 0x1714,\\n  0x1734, 0x17d2, 0x1a60, 0x1b44, 0x1baa, 0x1bab, 0x1bf2, 0x1bf3, 0x2d7f,\\n  0xa806, 0xa82c, 0xa8c4, 0xa953, 0xa9c0, 0xaaf6, 0xabed,\\n  \u002F\u002F 91\\n  \u002F\u002F https:\u002F\u002Fwww.compart.com\u002Ffr\u002Funicode\u002Fcombining\u002F91\\n  0x0c56,\\n  \u002F\u002F 129\\n  \u002F\u002F https:\u002F\u002Fwww.compart.com\u002Ffr\u002Funicode\u002Fcombining\u002F129\\n  0x0f71,\\n  \u002F\u002F 130\\n  \u002F\u002F https:\u002F\u002Fwww.compart.com\u002Ffr\u002Funicode\u002Fcombining\u002F130\\n  0x0f72, 0x0f7a, 0x0f7b, 0x0f7c, 0x0f7d, 0x0f80,\\n  \u002F\u002F 132\\n  \u002F\u002F https:\u002F\u002Fwww.compart.com\u002Ffr\u002Funicode\u002Fcombining\u002F132\\n  0x0f74,\\n]);\\nlet DIACRITICS_EXCEPTION_STR; \u002F\u002F Lazily initialized, see below.\\n\\nconst DIACRITICS_REG_EXP = \u002F\\\\p{M}+\u002Fgu;\\nconst SPECIAL_CHARS_REG_EXP =\\n  \u002F([.*+?^${}()|[\\\\]\\\\\\\\])|(\\\\p{P})|(\\\\s+)|(\\\\p{M})|(\\\\p{L})\u002Fgu;\\nconst NOT_DIACRITIC_FROM_END_REG_EXP = \u002F([^\\\\p{M}])\\\\p{M}*$\u002Fu;\\nconst NOT_DIACRITIC_FROM_START_REG_EXP = \u002F^\\\\p{M}*([^\\\\p{M}])\u002Fu;\\n\\n\u002F\u002F The range [AC00-D7AF] corresponds to the Hangul syllables.\\n\u002F\u002F The few other chars are some CJK Compatibility Ideographs.\\nconst SYLLABLES_REG_EXP = \u002F[\\\\uAC00-\\\\uD7AF\\\\uFA6C\\\\uFACF-\\\\uFAD1\\\\uFAD5-\\\\uFAD7]+\u002Fg;\\nconst SYLLABLES_LENGTHS = new Map();\\n\u002F\u002F When decomposed (in using NFD) the above syllables will start\\n\u002F\u002F with one of the chars in this regexp.\\nconst FIRST_CHAR_SYLLABLES_REG_EXP =\\n  \\\"[\\\\\\\\u1100-\\\\\\\\u1112\\\\\\\\ud7a4-\\\\\\\\ud7af\\\\\\\\ud84a\\\\\\\\ud84c\\\\\\\\ud850\\\\\\\\ud854\\\\\\\\ud857\\\\\\\\ud85f]\\\";\\n\\nconst NFKC_CHARS_TO_NORMALIZE = new Map();\\n\\nlet noSyllablesRegExp = null;\\nlet withSyllablesRegExp = null;\\n\\nfunction normalize(text) {\\n  \u002F\u002F The diacritics in the text or in the query can be composed or not.\\n  \u002F\u002F So we use a decomposed text using NFD (and the same for the query)\\n  \u002F\u002F in order to be sure that diacritics are in the same order.\\n\\n  \u002F\u002F Collect syllables length and positions.\\n  const syllablePositions = [];\\n  let m;\\n  while ((m = SYLLABLES_REG_EXP.exec(text)) !== null) {\\n    let { index } = m;\\n    for (const char of m[0]) {\\n      let len = SYLLABLES_LENGTHS.get(char);\\n      if (!len) {\\n        len = char.normalize(\\\"NFD\\\").length;\\n        SYLLABLES_LENGTHS.set(char, len);\\n      }\\n      syllablePositions.push([len, index++]);\\n    }\\n  }\\n\\n  let normalizationRegex;\\n  if (syllablePositions.length === 0 && noSyllablesRegExp) {\\n    normalizationRegex = noSyllablesRegExp;\\n  } else if (syllablePositions.length > 0 && withSyllablesRegExp) {\\n    normalizationRegex = withSyllablesRegExp;\\n  } else {\\n    \u002F\u002F Compile the regular expression for text normalization once.\\n    const replace = Object.keys(CHARACTERS_TO_NORMALIZE).join(\\\"\\\");\\n    const toNormalizeWithNFKC = getNormalizeWithNFKC();\\n\\n    \u002F\u002F 3040-309F: Hiragana\\n    \u002F\u002F 30A0-30FF: Katakana\\n    const CJK = \\\"(?:\\\\\\\\p{Ideographic}|[\\\\u3040-\\\\u30FF])\\\";\\n    const HKDiacritics = \\\"(?:\\\\u3099|\\\\u309A)\\\";\\n    const regexp = `([${replace}])|([${toNormalizeWithNFKC}])|(${HKDiacritics}\\\\\\\\n)|(\\\\\\\\p{M}+(?:-\\\\\\\\n)?)|(\\\\\\\\S-\\\\\\\\n)|(${CJK}\\\\\\\\n)|(\\\\\\\\n)`;\\n\\n    if (syllablePositions.length === 0) {\\n      \u002F\u002F Most of the syllables belong to Hangul so there are no need\\n      \u002F\u002F to search for them in a non-Hangul document.\\n      \u002F\u002F We use the \\\\0 in order to have the same number of groups.\\n      normalizationRegex = noSyllablesRegExp = new RegExp(\\n        regexp + \\\"|(\\\\\\\\u0000)\\\",\\n        \\\"gum\\\"\\n      );\\n    } else {\\n      normalizationRegex = withSyllablesRegExp = new RegExp(\\n        regexp + `|(${FIRST_CHAR_SYLLABLES_REG_EXP})`,\\n        \\\"gum\\\"\\n      );\\n    }\\n  }\\n\\n  \u002F\u002F The goal of this function is to normalize the string and\\n  \u002F\u002F be able to get from an index in the new string the\\n  \u002F\u002F corresponding index in the old string.\\n  \u002F\u002F For example if we have: abCd12ef456gh where C is replaced by ccc\\n  \u002F\u002F and numbers replaced by nothing (it's the case for diacritics), then\\n  \u002F\u002F we'll obtain the normalized string: abcccdefgh.\\n  \u002F\u002F So here the reverse map is: [0,1,2,2,2,3,6,7,11,12].\\n\\n  \u002F\u002F The goal is to obtain the array: [[0, 0], [3, -1], [4, -2],\\n  \u002F\u002F [6, 0], [8, 3]].\\n  \u002F\u002F which can be used like this:\\n  \u002F\u002F  - let say that i is the index in new string and j the index\\n  \u002F\u002F    the old string.\\n  \u002F\u002F  - if i is in [0; 3[ then j = i + 0\\n  \u002F\u002F  - if i is in [3; 4[ then j = i - 1\\n  \u002F\u002F  - if i is in [4; 6[ then j = i - 2\\n  \u002F\u002F  ...\\n  \u002F\u002F Thanks to a binary search it's easy to know where is i and what's the\\n  \u002F\u002F shift.\\n  \u002F\u002F Let say that the last entry in the array is [x, s] and we have a\\n  \u002F\u002F substitution at index y (old string) which will replace o chars by n chars.\\n  \u002F\u002F Firstly, if o === n, then no need to add a new entry: the shift is\\n  \u002F\u002F the same.\\n  \u002F\u002F Secondly, if o \u003C n, then we push the n - o elements:\\n  \u002F\u002F [y - (s - 1), s - 1], [y - (s - 2), s - 2], ...\\n  \u002F\u002F Thirdly, if o > n, then we push the element: [y - (s - n), o + s - n]\\n\\n  \u002F\u002F Collect diacritics length and positions.\\n  const rawDiacriticsPositions = [];\\n  while ((m = DIACRITICS_REG_EXP.exec(text)) !== null) {\\n    rawDiacriticsPositions.push([m[0].length, m.index]);\\n  }\\n\\n  let normalized = text.normalize(\\\"NFD\\\");\\n  const positions = [[0, 0]];\\n  let rawDiacriticsIndex = 0;\\n  let syllableIndex = 0;\\n  let shift = 0;\\n  let shiftOrigin = 0;\\n  let eol = 0;\\n  let hasDiacritics = false;\\n\\n  normalized = normalized.replace(\\n    normalizationRegex,\\n    (match, p1, p2, p3, p4, p5, p6, p7, p8, i) => {\\n      i -= shiftOrigin;\\n      if (p1) {\\n        \u002F\u002F Maybe fractions or quotations mark...\\n        const replacement = CHARACTERS_TO_NORMALIZE[p1];\\n        const jj = replacement.length;\\n        for (let j = 1; j \u003C jj; j++) {\\n          positions.push([i - shift + j, shift - j]);\\n        }\\n        shift -= jj - 1;\\n        return replacement;\\n      }\\n\\n      if (p2) {\\n        \u002F\u002F Use the NFKC representation to normalize the char.\\n        let replacement = NFKC_CHARS_TO_NORMALIZE.get(p2);\\n        if (!replacement) {\\n          replacement = p2.normalize(\\\"NFKC\\\");\\n          NFKC_CHARS_TO_NORMALIZE.set(p2, replacement);\\n        }\\n        const jj = replacement.length;\\n        for (let j = 1; j \u003C jj; j++) {\\n          positions.push([i - shift + j, shift - j]);\\n        }\\n        shift -= jj - 1;\\n        return replacement;\\n      }\\n\\n      if (p3) {\\n        \u002F\u002F We've a Katakana-Hiragana diacritic followed by a \\\\n so don't replace\\n        \u002F\u002F the \\\\n by a whitespace.\\n        hasDiacritics = true;\\n\\n        \u002F\u002F Diacritic.\\n        if (i + eol === rawDiacriticsPositions[rawDiacriticsIndex]?.[1]) {\\n          ++rawDiacriticsIndex;\\n        } else {\\n          \u002F\u002F i is the position of the first diacritic\\n          \u002F\u002F so (i - 1) is the position for the letter before.\\n          positions.push([i - 1 - shift + 1, shift - 1]);\\n          shift -= 1;\\n          shiftOrigin += 1;\\n        }\\n\\n        \u002F\u002F End-of-line.\\n        positions.push([i - shift + 1, shift]);\\n        shiftOrigin += 1;\\n        eol += 1;\\n\\n        return p3.charAt(0);\\n      }\\n\\n      if (p4) {\\n        const hasTrailingDashEOL = p4.endsWith(\\\"\\\\n\\\");\\n        const len = hasTrailingDashEOL ? p4.length - 2 : p4.length;\\n\\n        \u002F\u002F Diacritics.\\n        hasDiacritics = true;\\n        let jj = len;\\n        if (i + eol === rawDiacriticsPositions[rawDiacriticsIndex]?.[1]) {\\n          jj -= rawDiacriticsPositions[rawDiacriticsIndex][0];\\n          ++rawDiacriticsIndex;\\n        }\\n\\n        for (let j = 1; j \u003C= jj; j++) {\\n          \u002F\u002F i is the position of the first diacritic\\n          \u002F\u002F so (i - 1) is the position for the letter before.\\n          positions.push([i - 1 - shift + j, shift - j]);\\n        }\\n        shift -= jj;\\n        shiftOrigin += jj;\\n\\n        if (hasTrailingDashEOL) {\\n          \u002F\u002F Diacritics are followed by a -\\\\n.\\n          \u002F\u002F See comments in `if (p5)` block.\\n          i += len - 1;\\n          positions.push([i - shift + 1, 1 + shift]);\\n          shift += 1;\\n          shiftOrigin += 1;\\n          eol += 1;\\n          return p4.slice(0, len);\\n        }\\n\\n        return p4;\\n      }\\n\\n      if (p5) {\\n        \u002F\u002F \\\"X-\\\\n\\\" is removed because an hyphen at the end of a line\\n        \u002F\u002F with not a space before is likely here to mark a break\\n        \u002F\u002F in a word.\\n        \u002F\u002F If X is encoded with UTF-32 then it can have a length greater than 1.\\n        \u002F\u002F The \\\\n isn't in the original text so here y = i, n = X.len - 2 and\\n        \u002F\u002F o = X.len - 1.\\n        const len = p5.length - 2;\\n        positions.push([i - shift + len, 1 + shift]);\\n        shift += 1;\\n        shiftOrigin += 1;\\n        eol += 1;\\n        return p5.slice(0, -2);\\n      }\\n\\n      if (p6) {\\n        \u002F\u002F An ideographic at the end of a line doesn't imply adding an extra\\n        \u002F\u002F white space.\\n        \u002F\u002F A CJK can be encoded in UTF-32, hence their length isn't always 1.\\n        const len = p6.length - 1;\\n        positions.push([i - shift + len, shift]);\\n        shiftOrigin += 1;\\n        eol += 1;\\n        return p6.slice(0, -1);\\n      }\\n\\n      if (p7) {\\n        \u002F\u002F eol is replaced by space: \\\"foo\\\\nbar\\\" is likely equivalent to\\n        \u002F\u002F \\\"foo bar\\\".\\n        positions.push([i - shift + 1, shift - 1]);\\n        shift -= 1;\\n        shiftOrigin += 1;\\n        eol += 1;\\n        return \\\" \\\";\\n      }\\n\\n      \u002F\u002F p8\\n      if (i + eol === syllablePositions[syllableIndex]?.[1]) {\\n        \u002F\u002F A syllable (1 char) is replaced with several chars (n) so\\n        \u002F\u002F newCharsLen = n - 1.\\n        const newCharLen = syllablePositions[syllableIndex][0] - 1;\\n        ++syllableIndex;\\n        for (let j = 1; j \u003C= newCharLen; j++) {\\n          positions.push([i - (shift - j), shift - j]);\\n        }\\n        shift -= newCharLen;\\n        shiftOrigin += newCharLen;\\n      }\\n      return p8;\\n    }\\n  );\\n\\n  positions.push([normalized.length, shift]);\\n\\n  return [normalized, positions, hasDiacritics];\\n}\\n\\n\u002F\u002F Determine the original, non-normalized, match index such that highlighting of\\n\u002F\u002F search results is correct in the `textLayer` for strings containing e.g. \\\"½\\\"\\n\u002F\u002F characters; essentially \\\"inverting\\\" the result of the `normalize` function.\\nfunction getOriginalIndex(diffs, pos, len) {\\n  if (!diffs) {\\n    return [pos, len];\\n  }\\n\\n  \u002F\u002F First char in the new string.\\n  const start = pos;\\n  \u002F\u002F Last char in the new string.\\n  const end = pos + len - 1;\\n  let i = binarySearchFirstItem(diffs, x => x[0] >= start);\\n  if (diffs[i][0] > start) {\\n    --i;\\n  }\\n\\n  let j = binarySearchFirstItem(diffs, x => x[0] >= end, i);\\n  if (diffs[j][0] > end) {\\n    --j;\\n  }\\n\\n  \u002F\u002F First char in the old string.\\n  const oldStart = start + diffs[i][1];\\n\\n  \u002F\u002F Last char in the old string.\\n  const oldEnd = end + diffs[j][1];\\n  const oldLen = oldEnd + 1 - oldStart;\\n\\n  return [oldStart, oldLen];\\n}\\n\\n\u002F**\\n * @typedef {Object} PDFFindControllerOptions\\n * @property {IPDFLinkService} linkService - The navigation\u002Flinking service.\\n * @property {EventBus} eventBus - The application event bus.\\n * @property {boolean} [updateMatchesCountOnProgress] - True if the matches\\n *   count must be updated on progress or only when the last page is reached.\\n *   The default value is `true`.\\n *\u002F\\n\\n\u002F**\\n * Provides search functionality to find a given string in a PDF document.\\n *\u002F\\nclass PDFFindController {\\n  #state = null;\\n\\n  #updateMatchesCountOnProgress = true;\\n\\n  #visitedPagesCount = 0;\\n\\n  \u002F**\\n   * @param {PDFFindControllerOptions} options\\n   *\u002F\\n  constructor({ linkService, eventBus, updateMatchesCountOnProgress = true }) {\\n    this._linkService = linkService;\\n    this._eventBus = eventBus;\\n    this.#updateMatchesCountOnProgress = updateMatchesCountOnProgress;\\n\\n    \u002F**\\n     * Callback used to check if a `pageNumber` is currently visible.\\n     * @type {function}\\n     *\u002F\\n    this.onIsPageVisible = null;\\n\\n    this.#reset();\\n    eventBus._on(\\\"find\\\", this.#onFind.bind(this));\\n    eventBus._on(\\\"findbarclose\\\", this.#onFindBarClose.bind(this));\\n  }\\n\\n  get highlightMatches() {\\n    return this._highlightMatches;\\n  }\\n\\n  get pageMatches() {\\n    return this._pageMatches;\\n  }\\n\\n  get pageMatchesLength() {\\n    return this._pageMatchesLength;\\n  }\\n\\n  get selected() {\\n    return this._selected;\\n  }\\n\\n  get state() {\\n    return this.#state;\\n  }\\n\\n  \u002F**\\n   * Set a reference to the PDF document in order to search it.\\n   * Note that searching is not possible if this method is not called.\\n   *\\n   * @param {PDFDocumentProxy} pdfDocument - The PDF document to search.\\n   *\u002F\\n  setDocument(pdfDocument) {\\n    if (this._pdfDocument) {\\n      this.#reset();\\n    }\\n    if (!pdfDocument) {\\n      return;\\n    }\\n    this._pdfDocument = pdfDocument;\\n    this._firstPageCapability.resolve();\\n  }\\n\\n  #onFind(state) {\\n    if (!state) {\\n      return;\\n    }\\n    const pdfDocument = this._pdfDocument;\\n    const { type } = state;\\n\\n    if (this.#state === null || this.#shouldDirtyMatch(state)) {\\n      this._dirtyMatch = true;\\n    }\\n    this.#state = state;\\n    if (type !== \\\"highlightallchange\\\") {\\n      this.#updateUIState(FindState.PENDING);\\n    }\\n\\n    this._firstPageCapability.promise.then(() => {\\n      \u002F\u002F If the document was closed before searching began, or if the search\\n      \u002F\u002F operation was relevant for a previously opened document, do nothing.\\n      if (\\n        !this._pdfDocument ||\\n        (pdfDocument && this._pdfDocument !== pdfDocument)\\n      ) {\\n        return;\\n      }\\n      this.#extractText();\\n\\n      const findbarClosed = !this._highlightMatches;\\n      const pendingTimeout = !!this._findTimeout;\\n\\n      if (this._findTimeout) {\\n        clearTimeout(this._findTimeout);\\n        this._findTimeout = null;\\n      }\\n      if (!type) {\\n        \u002F\u002F Trigger the find action with a small delay to avoid starting the\\n        \u002F\u002F search when the user is still typing (saving resources).\\n        this._findTimeout = setTimeout(() => {\\n          this.#nextMatch();\\n          this._findTimeout = null;\\n        }, FIND_TIMEOUT);\\n      } else if (this._dirtyMatch) {\\n        \u002F\u002F Immediately trigger searching for non-'find' operations, when the\\n        \u002F\u002F current state needs to be reset and matches re-calculated.\\n        this.#nextMatch();\\n      } else if (type === \\\"again\\\") {\\n        this.#nextMatch();\\n\\n        \u002F\u002F When the findbar was previously closed, and `highlightAll` is set,\\n        \u002F\u002F ensure that the matches on all active pages are highlighted again.\\n        if (findbarClosed && this.#state.highlightAll) {\\n          this.#updateAllPages();\\n        }\\n      } else if (type === \\\"highlightallchange\\\") {\\n        \u002F\u002F If there was a pending search operation, synchronously trigger a new\\n        \u002F\u002F search *first* to ensure that the correct matches are highlighted.\\n        if (pendingTimeout) {\\n          this.#nextMatch();\\n        } else {\\n          this._highlightMatches = true;\\n        }\\n        this.#updateAllPages(); \u002F\u002F Update the highlighting on all active pages.\\n      } else {\\n        this.#nextMatch();\\n      }\\n    });\\n  }\\n\\n  \u002F**\\n   * @typedef {Object} PDFFindControllerScrollMatchIntoViewParams\\n   * @property {HTMLElement} element\\n   * @property {number} selectedLeft\\n   * @property {number} pageIndex\\n   * @property {number} matchIndex\\n   *\u002F\\n\\n  \u002F**\\n   * Scroll the current match into view.\\n   * @param {PDFFindControllerScrollMatchIntoViewParams}\\n   *\u002F\\n  scrollMatchIntoView({\\n    element = null,\\n    selectedLeft = 0,\\n    pageIndex = -1,\\n    matchIndex = -1,\\n  }) {\\n    if (!this._scrollMatches || !element) {\\n      return;\\n    } else if (matchIndex === -1 || matchIndex !== this._selected.matchIdx) {\\n      return;\\n    } else if (pageIndex === -1 || pageIndex !== this._selected.pageIdx) {\\n      return;\\n    }\\n    this._scrollMatches = false; \u002F\u002F Ensure that scrolling only happens once.\\n\\n    const spot = {\\n      top: MATCH_SCROLL_OFFSET_TOP,\\n      left: selectedLeft + MATCH_SCROLL_OFFSET_LEFT,\\n    };\\n    scrollIntoView(element, spot, \u002F* scrollMatches = *\u002F true);\\n  }\\n\\n  #reset() {\\n    this._highlightMatches = false;\\n    this._scrollMatches = false;\\n    this._pdfDocument = null;\\n    this._pageMatches = [];\\n    this._pageMatchesLength = [];\\n    this.#visitedPagesCount = 0;\\n    this.#state = null;\\n    \u002F\u002F Currently selected match.\\n    this._selected = {\\n      pageIdx: -1,\\n      matchIdx: -1,\\n    };\\n    \u002F\u002F Where the find algorithm currently is in the document.\\n    this._offset = {\\n      pageIdx: null,\\n      matchIdx: null,\\n      wrapped: false,\\n    };\\n    this._extractTextPromises = [];\\n    this._pageContents = []; \u002F\u002F Stores the normalized text for each page.\\n    this._pageDiffs = [];\\n    this._hasDiacritics = [];\\n    this._matchesCountTotal = 0;\\n    this._pagesToSearch = null;\\n    this._pendingFindMatches = new Set();\\n    this._resumePageIdx = null;\\n    this._dirtyMatch = false;\\n    clearTimeout(this._findTimeout);\\n    this._findTimeout = null;\\n\\n    this._firstPageCapability = Promise.withResolvers();\\n  }\\n\\n  \u002F**\\n   * @type {string|Array} The (current) normalized search query.\\n   *\u002F\\n  get #query() {\\n    const { query } = this.#state;\\n    if (typeof query === \\\"string\\\") {\\n      if (query !== this._rawQuery) {\\n        this._rawQuery = query;\\n        [this._normalizedQuery] = normalize(query);\\n      }\\n      return this._normalizedQuery;\\n    }\\n    \u002F\u002F We don't bother caching the normalized search query in the Array-case,\\n    \u002F\u002F since this code-path is *essentially* unused in the default viewer.\\n    return (query || []).filter(q => !!q).map(q => normalize(q)[0]);\\n  }\\n\\n  #shouldDirtyMatch(state) {\\n    \u002F\u002F When the search query changes, regardless of the actual search command\\n    \u002F\u002F used, always re-calculate matches to avoid errors (fixes bug 1030622).\\n    const newQuery = state.query,\\n      prevQuery = this.#state.query;\\n    const newType = typeof newQuery,\\n      prevType = typeof prevQuery;\\n\\n    if (newType !== prevType) {\\n      return true;\\n    }\\n    if (newType === \\\"string\\\") {\\n      if (newQuery !== prevQuery) {\\n        return true;\\n      }\\n    } else if (\\n      \u002F* isArray && *\u002F JSON.stringify(newQuery) !== JSON.stringify(prevQuery)\\n    ) {\\n      return true;\\n    }\\n\\n    switch (state.type) {\\n      case \\\"again\\\":\\n        const pageNumber = this._selected.pageIdx + 1;\\n        const linkService = this._linkService;\\n        \u002F\u002F Only treat a 'findagain' event as a new search operation when it's\\n        \u002F\u002F *absolutely* certain that the currently selected match is no longer\\n        \u002F\u002F visible, e.g. as a result of the user scrolling in the document.\\n        \u002F\u002F\\n        \u002F\u002F NOTE: If only a simple `this._linkService.page` check was used here,\\n        \u002F\u002F there's a risk that consecutive 'findagain' operations could \\\"skip\\\"\\n        \u002F\u002F over matches at the top\u002Fbottom of pages thus making them completely\\n        \u002F\u002F inaccessible when there's multiple pages visible in the viewer.\\n        return (\\n          pageNumber >= 1 &&\\n          pageNumber \u003C= linkService.pagesCount &&\\n          pageNumber !== linkService.page &&\\n          !(this.onIsPageVisible?.(pageNumber) ?? true)\\n        );\\n      case \\\"highlightallchange\\\":\\n        return false;\\n    }\\n    return true;\\n  }\\n\\n  \u002F**\\n   * Determine if the search query constitutes a \\\"whole word\\\", by comparing the\\n   * first\u002Flast character type with the preceding\u002Ffollowing character type.\\n   *\u002F\\n  #isEntireWord(content, startIdx, length) {\\n    let match = content\\n      .slice(0, startIdx)\\n      .match(NOT_DIACRITIC_FROM_END_REG_EXP);\\n    if (match) {\\n      const first = content.charCodeAt(startIdx);\\n      const limit = match[1].charCodeAt(0);\\n      if (getCharacterType(first) === getCharacterType(limit)) {\\n        return false;\\n      }\\n    }\\n\\n    match = content\\n      .slice(startIdx + length)\\n      .match(NOT_DIACRITIC_FROM_START_REG_EXP);\\n    if (match) {\\n      const last = content.charCodeAt(startIdx + length - 1);\\n      const limit = match[1].charCodeAt(0);\\n      if (getCharacterType(last) === getCharacterType(limit)) {\\n        return false;\\n      }\\n    }\\n\\n    return true;\\n  }\\n\\n  #calculateRegExpMatch(query, entireWord, pageIndex, pageContent) {\\n    const matches = (this._pageMatches[pageIndex] = []);\\n    const matchesLength = (this._pageMatchesLength[pageIndex] = []);\\n    if (!query) {\\n      \u002F\u002F The query can be empty because some chars like diacritics could have\\n      \u002F\u002F been stripped out.\\n      return;\\n    }\\n    const diffs = this._pageDiffs[pageIndex];\\n    let match;\\n    while ((match = query.exec(pageContent)) !== null) {\\n      if (\\n        entireWord &&\\n        !this.#isEntireWord(pageContent, match.index, match[0].length)\\n      ) {\\n        continue;\\n      }\\n\\n      const [matchPos, matchLen] = getOriginalIndex(\\n        diffs,\\n        match.index,\\n        match[0].length\\n      );\\n\\n      if (matchLen) {\\n        matches.push(matchPos);\\n        matchesLength.push(matchLen);\\n      }\\n    }\\n  }\\n\\n  #convertToRegExpString(query, hasDiacritics) {\\n    const { matchDiacritics } = this.#state;\\n    let isUnicode = false;\\n    query = query.replaceAll(\\n      SPECIAL_CHARS_REG_EXP,\\n      (\\n        match,\\n        p1 \u002F* to escape *\u002F,\\n        p2 \u002F* punctuation *\u002F,\\n        p3 \u002F* whitespaces *\u002F,\\n        p4 \u002F* diacritics *\u002F,\\n        p5 \u002F* letters *\u002F\\n      ) => {\\n        \u002F\u002F We don't need to use a \\\\s for whitespaces since all the different\\n        \u002F\u002F kind of whitespaces are replaced by a single \\\" \\\".\\n\\n        if (p1) {\\n          \u002F\u002F Escape characters like *+?... to not interfer with regexp syntax.\\n          return `[ ]*\\\\\\\\${p1}[ ]*`;\\n        }\\n        if (p2) {\\n          \u002F\u002F Allow whitespaces around punctuation signs.\\n          return `[ ]*${p2}[ ]*`;\\n        }\\n        if (p3) {\\n          \u002F\u002F Replace spaces by \\\\s+ to be sure to match any spaces.\\n          return \\\"[ ]+\\\";\\n        }\\n        if (matchDiacritics) {\\n          return p4 || p5;\\n        }\\n\\n        if (p4) {\\n          \u002F\u002F Diacritics are removed with few exceptions.\\n          return DIACRITICS_EXCEPTION.has(p4.charCodeAt(0)) ? p4 : \\\"\\\";\\n        }\\n\\n        \u002F\u002F A letter has been matched and it can be followed by any diacritics\\n        \u002F\u002F in normalized text.\\n        if (hasDiacritics) {\\n          isUnicode = true;\\n          return `${p5}\\\\\\\\p{M}*`;\\n        }\\n        return p5;\\n      }\\n    );\\n\\n    const trailingSpaces = \\\"[ ]*\\\";\\n    if (query.endsWith(trailingSpaces)) {\\n      \u002F\u002F The [ ]* has been added in order to help to match \\\"foo . bar\\\" but\\n      \u002F\u002F it doesn't make sense to match some whitespaces after the dot\\n      \u002F\u002F when it's the last character.\\n      query = query.slice(0, query.length - trailingSpaces.length);\\n    }\\n\\n    if (matchDiacritics) {\\n      \u002F\u002F aX must not match aXY.\\n      if (hasDiacritics) {\\n        DIACRITICS_EXCEPTION_STR ||= String.fromCharCode(\\n          ...DIACRITICS_EXCEPTION\\n        );\\n\\n        isUnicode = true;\\n        query = `${query}(?=[${DIACRITICS_EXCEPTION_STR}]|[^\\\\\\\\p{M}]|$)`;\\n      }\\n    }\\n\\n    return [isUnicode, query];\\n  }\\n\\n  #calculateMatch(pageIndex) {\\n    let query = this.#query;\\n    if (query.length === 0) {\\n      return; \u002F\u002F Do nothing: the matches should be wiped out already.\\n    }\\n    const { caseSensitive, entireWord } = this.#state;\\n    const pageContent = this._pageContents[pageIndex];\\n    const hasDiacritics = this._hasDiacritics[pageIndex];\\n\\n    let isUnicode = false;\\n    if (typeof query === \\\"string\\\") {\\n      [isUnicode, query] = this.#convertToRegExpString(query, hasDiacritics);\\n    } else {\\n      \u002F\u002F Words are sorted in reverse order to be sure that \\\"foobar\\\" is matched\\n      \u002F\u002F before \\\"foo\\\" in case the query is \\\"foobar foo\\\".\\n      query = query\\n        .sort()\\n        .reverse()\\n        .map(q => {\\n          const [isUnicodePart, queryPart] = this.#convertToRegExpString(\\n            q,\\n            hasDiacritics\\n          );\\n          isUnicode ||= isUnicodePart;\\n          return `(${queryPart})`;\\n        })\\n        .join(\\\"|\\\");\\n    }\\n\\n    const flags = `g${isUnicode ? \\\"u\\\" : \\\"\\\"}${caseSensitive ? \\\"\\\" : \\\"i\\\"}`;\\n    query = query ? new RegExp(query, flags) : null;\\n\\n    this.#calculateRegExpMatch(query, entireWord, pageIndex, pageContent);\\n\\n    \u002F\u002F When `highlightAll` is set, ensure that the matches on previously\\n    \u002F\u002F rendered (and still active) pages are correctly highlighted.\\n    if (this.#state.highlightAll) {\\n      this.#updatePage(pageIndex);\\n    }\\n    if (this._resumePageIdx === pageIndex) {\\n      this._resumePageIdx = null;\\n      this.#nextPageMatch();\\n    }\\n\\n    \u002F\u002F Update the match count.\\n    const pageMatchesCount = this._pageMatches[pageIndex].length;\\n    this._matchesCountTotal += pageMatchesCount;\\n    if (this.#updateMatchesCountOnProgress) {\\n      if (pageMatchesCount > 0) {\\n        this.#updateUIResultsCount();\\n      }\\n    } else if (++this.#visitedPagesCount === this._linkService.pagesCount) {\\n      \u002F\u002F For example, in GeckoView we want to have only the final update because\\n      \u002F\u002F the Java side provides only one object to update the counts.\\n      this.#updateUIResultsCount();\\n    }\\n  }\\n\\n  #extractText() {\\n    \u002F\u002F Perform text extraction once if this method is called multiple times.\\n    if (this._extractTextPromises.length > 0) {\\n      return;\\n    }\\n\\n    let deferred = Promise.resolve();\\n    const textOptions = { disableNormalization: true };\\n    for (let i = 0, ii = this._linkService.pagesCount; i \u003C ii; i++) {\\n      const { promise, resolve } = Promise.withResolvers();\\n      this._extractTextPromises[i] = promise;\\n\\n      \u002F\u002F eslint-disable-next-line arrow-body-style\\n      deferred = deferred.then(() => {\\n        return this._pdfDocument\\n          .getPage(i + 1)\\n          .then(pdfPage => pdfPage.getTextContent(textOptions))\\n          .then(\\n            textContent => {\\n              const strBuf = [];\\n\\n              for (const textItem of textContent.items) {\\n                strBuf.push(textItem.str);\\n                if (textItem.hasEOL) {\\n                  strBuf.push(\\\"\\\\n\\\");\\n                }\\n              }\\n\\n              \u002F\u002F Store the normalized page content (text items) as one string.\\n              [\\n                this._pageContents[i],\\n                this._pageDiffs[i],\\n                this._hasDiacritics[i],\\n              ] = normalize(strBuf.join(\\\"\\\"));\\n              resolve();\\n            },\\n            reason => {\\n              console.error(\\n                `Unable to get text content for page ${i + 1}`,\\n                reason\\n              );\\n              \u002F\u002F Page error -- assuming no text content.\\n              this._pageContents[i] = \\\"\\\";\\n              this._pageDiffs[i] = null;\\n              this._hasDiacritics[i] = false;\\n              resolve();\\n            }\\n          );\\n      });\\n    }\\n  }\\n\\n  #updatePage(index) {\\n    if (this._scrollMatches && this._selected.pageIdx === index) {\\n      \u002F\u002F If the page is selected, scroll the page into view, which triggers\\n      \u002F\u002F rendering the page, which adds the text layer. Once the text layer\\n      \u002F\u002F is built, it will attempt to scroll the selected match into view.\\n      this._linkService.page = index + 1;\\n    }\\n\\n    this._eventBus.dispatch(\\\"updatetextlayermatches\\\", {\\n      source: this,\\n      pageIndex: index,\\n    });\\n  }\\n\\n  #updateAllPages() {\\n    this._eventBus.dispatch(\\\"updatetextlayermatches\\\", {\\n      source: this,\\n      pageIndex: -1,\\n    });\\n  }\\n\\n  #nextMatch() {\\n    const previous = this.#state.findPrevious;\\n    const currentPageIndex = this._linkService.page - 1;\\n    const numPages = this._linkService.pagesCount;\\n\\n    this._highlightMatches = true;\\n\\n    if (this._dirtyMatch) {\\n      \u002F\u002F Need to recalculate the matches, reset everything.\\n      this._dirtyMatch = false;\\n      this._selected.pageIdx = this._selected.matchIdx = -1;\\n      this._offset.pageIdx = currentPageIndex;\\n      this._offset.matchIdx = null;\\n      this._offset.wrapped = false;\\n      this._resumePageIdx = null;\\n      this._pageMatches.length = 0;\\n      this._pageMatchesLength.length = 0;\\n      this.#visitedPagesCount = 0;\\n      this._matchesCountTotal = 0;\\n\\n      this.#updateAllPages(); \u002F\u002F Wipe out any previously highlighted matches.\\n\\n      for (let i = 0; i \u003C numPages; i++) {\\n        \u002F\u002F Start finding the matches as soon as the text is extracted.\\n        if (this._pendingFindMatches.has(i)) {\\n          continue;\\n        }\\n        this._pendingFindMatches.add(i);\\n        this._extractTextPromises[i].then(() => {\\n          this._pendingFindMatches.delete(i);\\n          this.#calculateMatch(i);\\n        });\\n      }\\n    }\\n\\n    \u002F\u002F If there's no query there's no point in searching.\\n    const query = this.#query;\\n    if (query.length === 0) {\\n      this.#updateUIState(FindState.FOUND);\\n      return;\\n    }\\n    \u002F\u002F If we're waiting on a page, we return since we can't do anything else.\\n    if (this._resumePageIdx) {\\n      return;\\n    }\\n\\n    const offset = this._offset;\\n    \u002F\u002F Keep track of how many pages we should maximally iterate through.\\n    this._pagesToSearch = numPages;\\n    \u002F\u002F If there's already a `matchIdx` that means we are iterating through a\\n    \u002F\u002F page's matches.\\n    if (offset.matchIdx !== null) {\\n      const numPageMatches = this._pageMatches[offset.pageIdx].length;\\n      if (\\n        (!previous && offset.matchIdx + 1 \u003C numPageMatches) ||\\n        (previous && offset.matchIdx > 0)\\n      ) {\\n        \u002F\u002F The simple case; we just have advance the matchIdx to select\\n        \u002F\u002F the next match on the page.\\n        offset.matchIdx = previous ? offset.matchIdx - 1 : offset.matchIdx + 1;\\n        this.#updateMatch(\u002F* found = *\u002F true);\\n        return;\\n      }\\n      \u002F\u002F We went beyond the current page's matches, so we advance to\\n      \u002F\u002F the next page.\\n      this.#advanceOffsetPage(previous);\\n    }\\n    \u002F\u002F Start searching through the page.\\n    this.#nextPageMatch();\\n  }\\n\\n  #matchesReady(matches) {\\n    const offset = this._offset;\\n    const numMatches = matches.length;\\n    const previous = this.#state.findPrevious;\\n\\n    if (numMatches) {\\n      \u002F\u002F There were matches for the page, so initialize `matchIdx`.\\n      offset.matchIdx = previous ? numMatches - 1 : 0;\\n      this.#updateMatch(\u002F* found = *\u002F true);\\n      return true;\\n    }\\n    \u002F\u002F No matches, so attempt to search the next page.\\n    this.#advanceOffsetPage(previous);\\n    if (offset.wrapped) {\\n      offset.matchIdx = null;\\n      if (this._pagesToSearch \u003C 0) {\\n        \u002F\u002F No point in wrapping again, there were no matches.\\n        this.#updateMatch(\u002F* found = *\u002F false);\\n        \u002F\u002F While matches were not found, searching for a page\\n        \u002F\u002F with matches should nevertheless halt.\\n        return true;\\n      }\\n    }\\n    \u002F\u002F Matches were not found (and searching is not done).\\n    return false;\\n  }\\n\\n  #nextPageMatch() {\\n    if (this._resumePageIdx !== null) {\\n      console.error(\\\"There can only be one pending page.\\\");\\n    }\\n\\n    let matches = null;\\n    do {\\n      const pageIdx = this._offset.pageIdx;\\n      matches = this._pageMatches[pageIdx];\\n      if (!matches) {\\n        \u002F\u002F The matches don't exist yet for processing by `_matchesReady`,\\n        \u002F\u002F so set a resume point for when they do exist.\\n        this._resumePageIdx = pageIdx;\\n        break;\\n      }\\n    } while (!this.#matchesReady(matches));\\n  }\\n\\n  #advanceOffsetPage(previous) {\\n    const offset = this._offset;\\n    const numPages = this._linkService.pagesCount;\\n    offset.pageIdx = previous ? offset.pageIdx - 1 : offset.pageIdx + 1;\\n    offset.matchIdx = null;\\n\\n    this._pagesToSearch--;\\n\\n    if (offset.pageIdx >= numPages || offset.pageIdx \u003C 0) {\\n      offset.pageIdx = previous ? numPages - 1 : 0;\\n      offset.wrapped = true;\\n    }\\n  }\\n\\n  #updateMatch(found = false) {\\n    let state = FindState.NOT_FOUND;\\n    const wrapped = this._offset.wrapped;\\n    this._offset.wrapped = false;\\n\\n    if (found) {\\n      const previousPage = this._selected.pageIdx;\\n      this._selected.pageIdx = this._offset.pageIdx;\\n      this._selected.matchIdx = this._offset.matchIdx;\\n      state = wrapped ? FindState.WRAPPED : FindState.FOUND;\\n\\n      \u002F\u002F Update the currently selected page to wipe out any selected matches.\\n      if (previousPage !== -1 && previousPage !== this._selected.pageIdx) {\\n        this.#updatePage(previousPage);\\n      }\\n    }\\n\\n    this.#updateUIState(state, this.#state.findPrevious);\\n    if (this._selected.pageIdx !== -1) {\\n      \u002F\u002F Ensure that the match will be scrolled into view.\\n      this._scrollMatches = true;\\n\\n      this.#updatePage(this._selected.pageIdx);\\n    }\\n  }\\n\\n  #onFindBarClose(evt) {\\n    const pdfDocument = this._pdfDocument;\\n    \u002F\u002F Since searching is asynchronous, ensure that the removal of highlighted\\n    \u002F\u002F matches (from the UI) is async too such that the 'updatetextlayermatches'\\n    \u002F\u002F events will always be dispatched in the expected order.\\n    this._firstPageCapability.promise.then(() => {\\n      \u002F\u002F Only update the UI if the document is open, and is the current one.\\n      if (\\n        !this._pdfDocument ||\\n        (pdfDocument && this._pdfDocument !== pdfDocument)\\n      ) {\\n        return;\\n      }\\n      \u002F\u002F Ensure that a pending, not yet started, search operation is aborted.\\n      if (this._findTimeout) {\\n        clearTimeout(this._findTimeout);\\n        this._findTimeout = null;\\n      }\\n      \u002F\u002F Abort any long running searches, to avoid a match being scrolled into\\n      \u002F\u002F view *after* the findbar has been closed. In this case `this._offset`\\n      \u002F\u002F will most likely differ from `this._selected`, hence we also ensure\\n      \u002F\u002F that any new search operation will always start with a clean slate.\\n      if (this._resumePageIdx) {\\n        this._resumePageIdx = null;\\n        this._dirtyMatch = true;\\n      }\\n      \u002F\u002F Avoid the UI being in a pending state when the findbar is re-opened.\\n      this.#updateUIState(FindState.FOUND);\\n\\n      this._highlightMatches = false;\\n      this.#updateAllPages(); \u002F\u002F Wipe out any previously highlighted matches.\\n    });\\n  }\\n\\n  #requestMatchesCount() {\\n    const { pageIdx, matchIdx } = this._selected;\\n    let current = 0,\\n      total = this._matchesCountTotal;\\n    if (matchIdx !== -1) {\\n      for (let i = 0; i \u003C pageIdx; i++) {\\n        current += this._pageMatches[i]?.length || 0;\\n      }\\n      current += matchIdx + 1;\\n    }\\n    \u002F\u002F When searching starts, this method may be called before the `pageMatches`\\n    \u002F\u002F have been counted (in `_calculateMatch`). Ensure that the UI won't show\\n    \u002F\u002F temporarily broken state when the active find result doesn't make sense.\\n    if (current \u003C 1 || current > total) {\\n      current = total = 0;\\n    }\\n    return { current, total };\\n  }\\n\\n  #updateUIResultsCount() {\\n    this._eventBus.dispatch(\\\"updatefindmatchescount\\\", {\\n      source: this,\\n      matchesCount: this.#requestMatchesCount(),\\n    });\\n  }\\n\\n  #updateUIState(state, previous = false) {\\n    if (\\n      !this.#updateMatchesCountOnProgress &&\\n      (this.#visitedPagesCount !== this._linkService.pagesCount ||\\n        state === FindState.PENDING)\\n    ) {\\n      \u002F\u002F When this.#updateMatchesCountOnProgress is false we only send an update\\n      \u002F\u002F when everything is ready.\\n      return;\\n    }\\n\\n    this._eventBus.dispatch(\\\"updatefindcontrolstate\\\", {\\n      source: this,\\n      state,\\n      previous,\\n      matchesCount: this.#requestMatchesCount(),\\n      rawQuery: this.#state?.query ?? null,\\n    });\\n  }\\n}\\n\\nexport { FindState, PDFFindController };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { FindState } from \\\".\u002Fpdf_find_controller.js\\\";\\nimport { toggleExpandedBtn } from \\\".\u002Fui_utils.js\\\";\\n\\nconst MATCHES_COUNT_LIMIT = 1000;\\n\\n\u002F**\\n * Creates a \\\"search bar\\\" given a set of DOM elements that act as controls\\n * for searching or for setting search preferences in the UI. This object\\n * also sets up the appropriate events for the controls. Actual searching\\n * is done by PDFFindController.\\n *\u002F\\nclass PDFFindBar {\\n  #resizeObserver = new ResizeObserver(this.#resizeObserverCallback.bind(this));\\n\\n  constructor(options, eventBus) {\\n    this.opened = false;\\n\\n    this.bar = options.bar;\\n    this.toggleButton = options.toggleButton;\\n    this.findField = options.findField;\\n    this.highlightAll = options.highlightAllCheckbox;\\n    this.caseSensitive = options.caseSensitiveCheckbox;\\n    this.matchDiacritics = options.matchDiacriticsCheckbox;\\n    this.entireWord = options.entireWordCheckbox;\\n    this.findMsg = options.findMsg;\\n    this.findResultsCount = options.findResultsCount;\\n    this.findPreviousButton = options.findPreviousButton;\\n    this.findNextButton = options.findNextButton;\\n    this.eventBus = eventBus;\\n\\n    \u002F\u002F Add event listeners to the DOM elements.\\n    this.toggleButton.addEventListener(\\\"click\\\", () => {\\n      this.toggle();\\n    });\\n\\n    this.findField.addEventListener(\\\"input\\\", () => {\\n      this.dispatchEvent(\\\"\\\");\\n    });\\n\\n    this.bar.addEventListener(\\\"keydown\\\", e => {\\n      switch (e.keyCode) {\\n        case 13: \u002F\u002F Enter\\n          if (e.target === this.findField) {\\n            this.dispatchEvent(\\\"again\\\", e.shiftKey);\\n          }\\n          break;\\n        case 27: \u002F\u002F Escape\\n          this.close();\\n          break;\\n      }\\n    });\\n\\n    this.findPreviousButton.addEventListener(\\\"click\\\", () => {\\n      this.dispatchEvent(\\\"again\\\", true);\\n    });\\n\\n    this.findNextButton.addEventListener(\\\"click\\\", () => {\\n      this.dispatchEvent(\\\"again\\\", false);\\n    });\\n\\n    this.highlightAll.addEventListener(\\\"click\\\", () => {\\n      this.dispatchEvent(\\\"highlightallchange\\\");\\n    });\\n\\n    this.caseSensitive.addEventListener(\\\"click\\\", () => {\\n      this.dispatchEvent(\\\"casesensitivitychange\\\");\\n    });\\n\\n    this.entireWord.addEventListener(\\\"click\\\", () => {\\n      this.dispatchEvent(\\\"entirewordchange\\\");\\n    });\\n\\n    this.matchDiacritics.addEventListener(\\\"click\\\", () => {\\n      this.dispatchEvent(\\\"diacriticmatchingchange\\\");\\n    });\\n  }\\n\\n  reset() {\\n    this.updateUIState();\\n  }\\n\\n  dispatchEvent(type, findPrev = false) {\\n    this.eventBus.dispatch(\\\"find\\\", {\\n      source: this,\\n      type,\\n      query: this.findField.value,\\n      caseSensitive: this.caseSensitive.checked,\\n      entireWord: this.entireWord.checked,\\n      highlightAll: this.highlightAll.checked,\\n      findPrevious: findPrev,\\n      matchDiacritics: this.matchDiacritics.checked,\\n    });\\n  }\\n\\n  updateUIState(state, previous, matchesCount) {\\n    const { findField, findMsg } = this;\\n    let findMsgId = \\\"\\\",\\n      status = \\\"\\\";\\n\\n    switch (state) {\\n      case FindState.FOUND:\\n        break;\\n      case FindState.PENDING:\\n        status = \\\"pending\\\";\\n        break;\\n      case FindState.NOT_FOUND:\\n        findMsgId = \\\"pdfjs-find-not-found\\\";\\n        status = \\\"notFound\\\";\\n        break;\\n      case FindState.WRAPPED:\\n        findMsgId = `pdfjs-find-reached-${previous ? \\\"top\\\" : \\\"bottom\\\"}`;\\n        break;\\n    }\\n    findField.setAttribute(\\\"data-status\\\", status);\\n    findField.setAttribute(\\\"aria-invalid\\\", state === FindState.NOT_FOUND);\\n\\n    findMsg.setAttribute(\\\"data-status\\\", status);\\n    if (findMsgId) {\\n      findMsg.setAttribute(\\\"data-l10n-id\\\", findMsgId);\\n    } else {\\n      findMsg.removeAttribute(\\\"data-l10n-id\\\");\\n      findMsg.textContent = \\\"\\\";\\n    }\\n\\n    this.updateResultsCount(matchesCount);\\n  }\\n\\n  updateResultsCount({ current = 0, total = 0 } = {}) {\\n    const { findResultsCount } = this;\\n\\n    if (total > 0) {\\n      const limit = MATCHES_COUNT_LIMIT;\\n\\n      findResultsCount.setAttribute(\\n        \\\"data-l10n-id\\\",\\n        `pdfjs-find-match-count${total > limit ? \\\"-limit\\\" : \\\"\\\"}`\\n      );\\n      findResultsCount.setAttribute(\\n        \\\"data-l10n-args\\\",\\n        JSON.stringify({ limit, current, total })\\n      );\\n    } else {\\n      findResultsCount.removeAttribute(\\\"data-l10n-id\\\");\\n      findResultsCount.textContent = \\\"\\\";\\n    }\\n  }\\n\\n  open() {\\n    if (!this.opened) {\\n      \u002F\u002F Potentially update the findbar layout, row vs column, when:\\n      \u002F\u002F  - The width of the viewer itself changes.\\n      \u002F\u002F  - The width of the findbar changes, by toggling the visibility\\n      \u002F\u002F    (or localization) of find count\u002Fstatus messages.\\n      this.#resizeObserver.observe(this.bar.parentNode);\\n      this.#resizeObserver.observe(this.bar);\\n\\n      this.opened = true;\\n      toggleExpandedBtn(this.toggleButton, true, this.bar);\\n    }\\n    this.findField.select();\\n    this.findField.focus();\\n  }\\n\\n  close() {\\n    if (!this.opened) {\\n      return;\\n    }\\n    this.#resizeObserver.disconnect();\\n\\n    this.opened = false;\\n    toggleExpandedBtn(this.toggleButton, false, this.bar);\\n\\n    this.eventBus.dispatch(\\\"findbarclose\\\", { source: this });\\n  }\\n\\n  toggle() {\\n    if (this.opened) {\\n      this.close();\\n    } else {\\n      this.open();\\n    }\\n  }\\n\\n  #resizeObserverCallback(entries) {\\n    const { bar } = this;\\n    \u002F\u002F The find bar has an absolute position and thus the browser extends\\n    \u002F\u002F its width to the maximum possible width once the find bar does not fit\\n    \u002F\u002F entirely within the window anymore (and its elements are automatically\\n    \u002F\u002F wrapped). Here we detect and fix that.\\n    bar.classList.remove(\\\"wrapContainers\\\");\\n\\n    const findbarHeight = bar.clientHeight;\\n    const inputContainerHeight = bar.firstElementChild.clientHeight;\\n\\n    if (findbarHeight > inputContainerHeight) {\\n      \u002F\u002F The findbar is taller than the input container, which means that\\n      \u002F\u002F the browser wrapped some of the elements. For a consistent look,\\n      \u002F\u002F wrap all of them to adjust the width of the find bar.\\n      bar.classList.add(\\\"wrapContainers\\\");\\n    }\\n  }\\n}\\n\\nexport { PDFFindBar };\\n\",\"\u002F* Copyright 2017 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fevent_utils\\\").EventBus} EventBus *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IPDFLinkService} IPDFLinkService *\u002F\\n\\nimport { isValidRotation, parseQueryString } from \\\".\u002Fui_utils.js\\\";\\nimport { waitOnEventOrTimeout } from \\\".\u002Fevent_utils.js\\\";\\n\\n\u002F\u002F Heuristic value used when force-resetting `this._blockHashChange`.\\nconst HASH_CHANGE_TIMEOUT = 1000; \u002F\u002F milliseconds\\n\u002F\u002F Heuristic value used when adding the current position to the browser history.\\nconst POSITION_UPDATED_THRESHOLD = 50;\\n\u002F\u002F Heuristic value used when adding a temporary position to the browser history.\\nconst UPDATE_VIEWAREA_TIMEOUT = 1000; \u002F\u002F milliseconds\\n\\n\u002F**\\n * @typedef {Object} PDFHistoryOptions\\n * @property {IPDFLinkService} linkService - The navigation\u002Flinking service.\\n * @property {EventBus} eventBus - The application event bus.\\n *\u002F\\n\\n\u002F**\\n * @typedef {Object} InitializeParameters\\n * @property {string} fingerprint - The PDF document's unique fingerprint.\\n * @property {boolean} [resetHistory] - Reset the browsing history.\\n * @property {boolean} [updateUrl] - Attempt to update the document URL, with\\n *   the current hash, when pushing\u002Freplacing browser history entries.\\n *\u002F\\n\\n\u002F**\\n * @typedef {Object} PushParameters\\n * @property {string} [namedDest] - The named destination. If absent, a\\n *   stringified version of `explicitDest` is used.\\n * @property {Array} explicitDest - The explicit destination array.\\n * @property {number} pageNumber - The page to which the destination points.\\n *\u002F\\n\\nfunction getCurrentHash() {\\n  return document.location.hash;\\n}\\n\\nclass PDFHistory {\\n  #eventAbortController = null;\\n\\n  \u002F**\\n   * @param {PDFHistoryOptions} options\\n   *\u002F\\n  constructor({ linkService, eventBus }) {\\n    this.linkService = linkService;\\n    this.eventBus = eventBus;\\n\\n    this._initialized = false;\\n    this._fingerprint = \\\"\\\";\\n    this.reset();\\n\\n    \u002F\u002F Ensure that we don't miss a \\\"pagesinit\\\" event,\\n    \u002F\u002F by registering the listener immediately.\\n    this.eventBus._on(\\\"pagesinit\\\", () => {\\n      this._isPagesLoaded = false;\\n\\n      this.eventBus._on(\\n        \\\"pagesloaded\\\",\\n        evt => {\\n          this._isPagesLoaded = !!evt.pagesCount;\\n        },\\n        { once: true }\\n      );\\n    });\\n  }\\n\\n  \u002F**\\n   * Initialize the history for the PDF document, using either the current\\n   * browser history entry or the document hash, whichever is present.\\n   * @param {InitializeParameters} params\\n   *\u002F\\n  initialize({ fingerprint, resetHistory = false, updateUrl = false }) {\\n    if (!fingerprint || typeof fingerprint !== \\\"string\\\") {\\n      console.error(\\n        'PDFHistory.initialize: The \\\"fingerprint\\\" must be a non-empty string.'\\n      );\\n      return;\\n    }\\n    \u002F\u002F Ensure that any old state is always reset upon initialization.\\n    if (this._initialized) {\\n      this.reset();\\n    }\\n    const reInitialized =\\n      this._fingerprint !== \\\"\\\" && this._fingerprint !== fingerprint;\\n    this._fingerprint = fingerprint;\\n    this._updateUrl = updateUrl === true;\\n\\n    this._initialized = true;\\n    this.#bindEvents();\\n    const state = window.history.state;\\n\\n    this._popStateInProgress = false;\\n    this._blockHashChange = 0;\\n    this._currentHash = getCurrentHash();\\n    this._numPositionUpdates = 0;\\n\\n    this._uid = this._maxUid = 0;\\n    this._destination = null;\\n    this._position = null;\\n\\n    if (!this.#isValidState(state, \u002F* checkReload = *\u002F true) || resetHistory) {\\n      const { hash, page, rotation } = this.#parseCurrentHash(\\n        \u002F* checkNameddest = *\u002F true\\n      );\\n\\n      if (!hash || reInitialized || resetHistory) {\\n        \u002F\u002F Ensure that the browser history is reset on PDF document load.\\n        this.#pushOrReplaceState(null, \u002F* forceReplace = *\u002F true);\\n        return;\\n      }\\n      \u002F\u002F Ensure that the browser history is initialized correctly when\\n      \u002F\u002F the document hash is present on PDF document load.\\n      this.#pushOrReplaceState(\\n        { hash, page, rotation },\\n        \u002F* forceReplace = *\u002F true\\n      );\\n      return;\\n    }\\n\\n    \u002F\u002F The browser history contains a valid entry, ensure that the history is\\n    \u002F\u002F initialized correctly on PDF document load.\\n    const destination = state.destination;\\n    this.#updateInternalState(\\n      destination,\\n      state.uid,\\n      \u002F* removeTemporary = *\u002F true\\n    );\\n\\n    if (destination.rotation !== undefined) {\\n      this._initialRotation = destination.rotation;\\n    }\\n    if (destination.dest) {\\n      this._initialBookmark = JSON.stringify(destination.dest);\\n\\n      \u002F\u002F If the history is updated, e.g. through the user changing the hash,\\n      \u002F\u002F before the initial destination has become visible, then we do *not*\\n      \u002F\u002F want to potentially add `this._position` to the browser history.\\n      this._destination.page = null;\\n    } else if (destination.hash) {\\n      this._initialBookmark = destination.hash;\\n    } else if (destination.page) {\\n      \u002F\u002F Fallback case; shouldn't be necessary, but better safe than sorry.\\n      this._initialBookmark = `page=${destination.page}`;\\n    }\\n  }\\n\\n  \u002F**\\n   * Reset the current `PDFHistory` instance, and consequently prevent any\\n   * further updates and\u002For navigation of the browser history.\\n   *\u002F\\n  reset() {\\n    if (this._initialized) {\\n      this.#pageHide(); \u002F\u002F Simulate a 'pagehide' event when resetting.\\n\\n      this._initialized = false;\\n      this.#unbindEvents();\\n    }\\n    if (this._updateViewareaTimeout) {\\n      clearTimeout(this._updateViewareaTimeout);\\n      this._updateViewareaTimeout = null;\\n    }\\n    this._initialBookmark = null;\\n    this._initialRotation = null;\\n  }\\n\\n  \u002F**\\n   * Push an internal destination to the browser history.\\n   * @param {PushParameters}\\n   *\u002F\\n  push({ namedDest = null, explicitDest, pageNumber }) {\\n    if (!this._initialized) {\\n      return;\\n    }\\n    if (namedDest && typeof namedDest !== \\\"string\\\") {\\n      console.error(\\n        \\\"PDFHistory.push: \\\" +\\n          `\\\"${namedDest}\\\" is not a valid namedDest parameter.`\\n      );\\n      return;\\n    } else if (!Array.isArray(explicitDest)) {\\n      console.error(\\n        \\\"PDFHistory.push: \\\" +\\n          `\\\"${explicitDest}\\\" is not a valid explicitDest parameter.`\\n      );\\n      return;\\n    } else if (!this.#isValidPage(pageNumber)) {\\n      \u002F\u002F Allow an unset `pageNumber` if and only if the history is still empty;\\n      \u002F\u002F please refer to the `this._destination.page = null;` comment above.\\n      if (pageNumber !== null || this._destination) {\\n        console.error(\\n          \\\"PDFHistory.push: \\\" +\\n            `\\\"${pageNumber}\\\" is not a valid pageNumber parameter.`\\n        );\\n        return;\\n      }\\n    }\\n\\n    const hash = namedDest || JSON.stringify(explicitDest);\\n    if (!hash) {\\n      \u002F\u002F The hash *should* never be undefined, but if that were to occur,\\n      \u002F\u002F avoid any possible issues by not updating the browser history.\\n      return;\\n    }\\n\\n    let forceReplace = false;\\n    if (\\n      this._destination &&\\n      (isDestHashesEqual(this._destination.hash, hash) ||\\n        isDestArraysEqual(this._destination.dest, explicitDest))\\n    ) {\\n      \u002F\u002F When the new destination is identical to `this._destination`, and\\n      \u002F\u002F its `page` is undefined, replace the current browser history entry.\\n      \u002F\u002F NOTE: This can only occur if `this._destination` was set either:\\n      \u002F\u002F  - through the document hash being specified on load.\\n      \u002F\u002F  - through the user changing the hash of the document.\\n      if (this._destination.page) {\\n        return;\\n      }\\n      forceReplace = true;\\n    }\\n    if (this._popStateInProgress && !forceReplace) {\\n      return;\\n    }\\n\\n    this.#pushOrReplaceState(\\n      {\\n        dest: explicitDest,\\n        hash,\\n        page: pageNumber,\\n        rotation: this.linkService.rotation,\\n      },\\n      forceReplace\\n    );\\n\\n    if (!this._popStateInProgress) {\\n      \u002F\u002F Prevent the browser history from updating while the new destination is\\n      \u002F\u002F being scrolled into view, to avoid potentially inconsistent state.\\n      this._popStateInProgress = true;\\n      \u002F\u002F We defer the resetting of `this._popStateInProgress`, to account for\\n      \u002F\u002F e.g. zooming occurring when the new destination is being navigated to.\\n      Promise.resolve().then(() => {\\n        this._popStateInProgress = false;\\n      });\\n    }\\n  }\\n\\n  \u002F**\\n   * Push a page to the browser history; generally the `push` method should be\\n   * used instead.\\n   * @param {number} pageNumber\\n   *\u002F\\n  pushPage(pageNumber) {\\n    if (!this._initialized) {\\n      return;\\n    }\\n    if (!this.#isValidPage(pageNumber)) {\\n      console.error(\\n        `PDFHistory.pushPage: \\\"${pageNumber}\\\" is not a valid page number.`\\n      );\\n      return;\\n    }\\n\\n    if (this._destination?.page === pageNumber) {\\n      \u002F\u002F When the new page is identical to the one in `this._destination`, we\\n      \u002F\u002F don't want to add a potential duplicate entry in the browser history.\\n      return;\\n    }\\n    if (this._popStateInProgress) {\\n      return;\\n    }\\n\\n    this.#pushOrReplaceState({\\n      \u002F\u002F Simulate an internal destination, for `this.#tryPushCurrentPosition`:\\n      dest: null,\\n      hash: `page=${pageNumber}`,\\n      page: pageNumber,\\n      rotation: this.linkService.rotation,\\n    });\\n\\n    if (!this._popStateInProgress) {\\n      \u002F\u002F Prevent the browser history from updating while the new page is\\n      \u002F\u002F being scrolled into view, to avoid potentially inconsistent state.\\n      this._popStateInProgress = true;\\n      \u002F\u002F We defer the resetting of `this._popStateInProgress`, to account for\\n      \u002F\u002F e.g. zooming occurring when the new page is being navigated to.\\n      Promise.resolve().then(() => {\\n        this._popStateInProgress = false;\\n      });\\n    }\\n  }\\n\\n  \u002F**\\n   * Push the current position to the browser history.\\n   *\u002F\\n  pushCurrentPosition() {\\n    if (!this._initialized || this._popStateInProgress) {\\n      return;\\n    }\\n    this.#tryPushCurrentPosition();\\n  }\\n\\n  \u002F**\\n   * Go back one step in the browser history.\\n   * NOTE: Avoids navigating away from the document, useful for \\\"named actions\\\".\\n   *\u002F\\n  back() {\\n    if (!this._initialized || this._popStateInProgress) {\\n      return;\\n    }\\n    const state = window.history.state;\\n    if (this.#isValidState(state) && state.uid > 0) {\\n      window.history.back();\\n    }\\n  }\\n\\n  \u002F**\\n   * Go forward one step in the browser history.\\n   * NOTE: Avoids navigating away from the document, useful for \\\"named actions\\\".\\n   *\u002F\\n  forward() {\\n    if (!this._initialized || this._popStateInProgress) {\\n      return;\\n    }\\n    const state = window.history.state;\\n    if (this.#isValidState(state) && state.uid \u003C this._maxUid) {\\n      window.history.forward();\\n    }\\n  }\\n\\n  \u002F**\\n   * @type {boolean} Indicating if the user is currently moving through the\\n   *   browser history, useful e.g. for skipping the next 'hashchange' event.\\n   *\u002F\\n  get popStateInProgress() {\\n    return (\\n      this._initialized &&\\n      (this._popStateInProgress || this._blockHashChange > 0)\\n    );\\n  }\\n\\n  get initialBookmark() {\\n    return this._initialized ? this._initialBookmark : null;\\n  }\\n\\n  get initialRotation() {\\n    return this._initialized ? this._initialRotation : null;\\n  }\\n\\n  #pushOrReplaceState(destination, forceReplace = false) {\\n    const shouldReplace = forceReplace || !this._destination;\\n    const newState = {\\n      fingerprint: this._fingerprint,\\n      uid: shouldReplace ? this._uid : this._uid + 1,\\n      destination,\\n    };\\n\\n    if (\\n      typeof PDFJSDev !== \\\"undefined\\\" &&\\n      PDFJSDev.test(\\\"CHROME\\\") &&\\n      window.history.state?.chromecomState\\n    ) {\\n      \u002F\u002F history.state.chromecomState is managed by chromecom.js.\\n      newState.chromecomState = window.history.state.chromecomState;\\n    }\\n    this.#updateInternalState(destination, newState.uid);\\n\\n    let newUrl;\\n    if (this._updateUrl && destination?.hash) {\\n      const baseUrl = document.location.href.split(\\\"#\\\", 1)[0];\\n      \u002F\u002F Prevent errors in Firefox.\\n      if (!baseUrl.startsWith(\\\"file:\u002F\u002F\\\")) {\\n        newUrl = `${baseUrl}#${destination.hash}`;\\n      }\\n    }\\n    if (shouldReplace) {\\n      window.history.replaceState(newState, \\\"\\\", newUrl);\\n    } else {\\n      window.history.pushState(newState, \\\"\\\", newUrl);\\n    }\\n\\n    if (\\n      typeof PDFJSDev !== \\\"undefined\\\" &&\\n      PDFJSDev.test(\\\"CHROME\\\") &&\\n      top === window\\n    ) {\\n      \u002F\u002F eslint-disable-next-line no-undef\\n      chrome.runtime.sendMessage(\\\"showPageAction\\\");\\n    }\\n  }\\n\\n  #tryPushCurrentPosition(temporary = false) {\\n    if (!this._position) {\\n      return;\\n    }\\n    let position = this._position;\\n    if (temporary) {\\n      position = Object.assign(Object.create(null), this._position);\\n      position.temporary = true;\\n    }\\n\\n    if (!this._destination) {\\n      this.#pushOrReplaceState(position);\\n      return;\\n    }\\n    if (this._destination.temporary) {\\n      \u002F\u002F Always replace a previous *temporary* position.\\n      this.#pushOrReplaceState(position, \u002F* forceReplace = *\u002F true);\\n      return;\\n    }\\n    if (this._destination.hash === position.hash) {\\n      return; \u002F\u002F The current document position has not changed.\\n    }\\n    if (\\n      !this._destination.page &&\\n      (POSITION_UPDATED_THRESHOLD \u003C= 0 ||\\n        this._numPositionUpdates \u003C= POSITION_UPDATED_THRESHOLD)\\n    ) {\\n      \u002F\u002F `this._destination` was set through the user changing the hash of\\n      \u002F\u002F the document. Do not add `this._position` to the browser history,\\n      \u002F\u002F to avoid \\\"flooding\\\" it with lots of (nearly) identical entries,\\n      \u002F\u002F since we cannot ensure that the document position has changed.\\n      return;\\n    }\\n\\n    let forceReplace = false;\\n    if (\\n      this._destination.page >= position.first &&\\n      this._destination.page \u003C= position.page\\n    ) {\\n      \u002F\u002F When the `page` of `this._destination` is still visible, do not\\n      \u002F\u002F update the browsing history when `this._destination` either:\\n      \u002F\u002F  - contains an internal destination, since in this case we\\n      \u002F\u002F    cannot ensure that the document position has actually changed.\\n      \u002F\u002F  - was set through the user changing the hash of the document.\\n      if (this._destination.dest !== undefined || !this._destination.first) {\\n        return;\\n      }\\n      \u002F\u002F To avoid \\\"flooding\\\" the browser history, replace the current entry.\\n      forceReplace = true;\\n    }\\n    this.#pushOrReplaceState(position, forceReplace);\\n  }\\n\\n  #isValidPage(val) {\\n    return (\\n      Number.isInteger(val) && val > 0 && val \u003C= this.linkService.pagesCount\\n    );\\n  }\\n\\n  #isValidState(state, checkReload = false) {\\n    if (!state) {\\n      return false;\\n    }\\n    if (state.fingerprint !== this._fingerprint) {\\n      if (checkReload) {\\n        \u002F\u002F Potentially accept the history entry, even if the fingerprints don't\\n        \u002F\u002F match, when the viewer was reloaded (see issue 6847).\\n        if (\\n          typeof state.fingerprint !== \\\"string\\\" ||\\n          state.fingerprint.length !== this._fingerprint.length\\n        ) {\\n          return false;\\n        }\\n        const [perfEntry] = performance.getEntriesByType(\\\"navigation\\\");\\n        if (perfEntry?.type !== \\\"reload\\\") {\\n          return false;\\n        }\\n      } else {\\n        \u002F\u002F This should only occur in viewers with support for opening more than\\n        \u002F\u002F one PDF document, e.g. the GENERIC viewer.\\n        return false;\\n      }\\n    }\\n    if (!Number.isInteger(state.uid) || state.uid \u003C 0) {\\n      return false;\\n    }\\n    if (state.destination === null || typeof state.destination !== \\\"object\\\") {\\n      return false;\\n    }\\n    return true;\\n  }\\n\\n  #updateInternalState(destination, uid, removeTemporary = false) {\\n    if (this._updateViewareaTimeout) {\\n      \u002F\u002F When updating `this._destination`, make sure that we always wait for\\n      \u002F\u002F the next 'updateviewarea' event before (potentially) attempting to\\n      \u002F\u002F push the current position to the browser history.\\n      clearTimeout(this._updateViewareaTimeout);\\n      this._updateViewareaTimeout = null;\\n    }\\n    if (removeTemporary && destination?.temporary) {\\n      \u002F\u002F When the `destination` comes from the browser history,\\n      \u002F\u002F we no longer treat it as a *temporary* position.\\n      delete destination.temporary;\\n    }\\n    this._destination = destination;\\n    this._uid = uid;\\n    this._maxUid = Math.max(this._maxUid, uid);\\n    \u002F\u002F This should always be reset when `this._destination` is updated.\\n    this._numPositionUpdates = 0;\\n  }\\n\\n  #parseCurrentHash(checkNameddest = false) {\\n    const hash = unescape(getCurrentHash()).substring(1);\\n    const params = parseQueryString(hash);\\n\\n    const nameddest = params.get(\\\"nameddest\\\") || \\\"\\\";\\n    let page = params.get(\\\"page\\\") | 0;\\n\\n    if (!this.#isValidPage(page) || (checkNameddest && nameddest.length > 0)) {\\n      page = null;\\n    }\\n    return { hash, page, rotation: this.linkService.rotation };\\n  }\\n\\n  #updateViewarea({ location }) {\\n    if (this._updateViewareaTimeout) {\\n      clearTimeout(this._updateViewareaTimeout);\\n      this._updateViewareaTimeout = null;\\n    }\\n\\n    this._position = {\\n      hash: location.pdfOpenParams.substring(1),\\n      page: this.linkService.page,\\n      first: location.pageNumber,\\n      rotation: location.rotation,\\n    };\\n\\n    if (this._popStateInProgress) {\\n      return;\\n    }\\n\\n    if (\\n      POSITION_UPDATED_THRESHOLD > 0 &&\\n      this._isPagesLoaded &&\\n      this._destination &&\\n      !this._destination.page\\n    ) {\\n      \u002F\u002F If the current destination was set through the user changing the hash\\n      \u002F\u002F of the document, we will usually not try to push the current position\\n      \u002F\u002F to the browser history; see `this.#tryPushCurrentPosition()`.\\n      \u002F\u002F\\n      \u002F\u002F To prevent `this.#tryPushCurrentPosition()` from effectively being\\n      \u002F\u002F reduced to a no-op in this case, we will assume that the position\\n      \u002F\u002F *did* in fact change if the 'updateviewarea' event was dispatched\\n      \u002F\u002F more than `POSITION_UPDATED_THRESHOLD` times.\\n      this._numPositionUpdates++;\\n    }\\n\\n    if (UPDATE_VIEWAREA_TIMEOUT > 0) {\\n      \u002F\u002F When closing the browser, a 'pagehide' event will be dispatched which\\n      \u002F\u002F *should* allow us to push the current position to the browser history.\\n      \u002F\u002F In practice, it seems that the event is arriving too late in order for\\n      \u002F\u002F the session history to be successfully updated.\\n      \u002F\u002F (For additional details, please refer to the discussion in\\n      \u002F\u002F  https:\u002F\u002Fbugzilla.mozilla.org\u002Fshow_bug.cgi?id=1153393.)\\n      \u002F\u002F\\n      \u002F\u002F To workaround this we attempt to *temporarily* add the current position\\n      \u002F\u002F to the browser history only when the viewer is *idle*,\\n      \u002F\u002F i.e. when scrolling and\u002For zooming does not occur.\\n      \u002F\u002F\\n      \u002F\u002F PLEASE NOTE: It's absolutely imperative that the browser history is\\n      \u002F\u002F *not* updated too often, since that would render the viewer more or\\n      \u002F\u002F less unusable. Hence the use of a timeout to delay the update until\\n      \u002F\u002F the viewer has been idle for `UPDATE_VIEWAREA_TIMEOUT` milliseconds.\\n      this._updateViewareaTimeout = setTimeout(() => {\\n        if (!this._popStateInProgress) {\\n          this.#tryPushCurrentPosition(\u002F* temporary = *\u002F true);\\n        }\\n        this._updateViewareaTimeout = null;\\n      }, UPDATE_VIEWAREA_TIMEOUT);\\n    }\\n  }\\n\\n  #popState({ state }) {\\n    const newHash = getCurrentHash(),\\n      hashChanged = this._currentHash !== newHash;\\n    this._currentHash = newHash;\\n\\n    if (\\n      (typeof PDFJSDev !== \\\"undefined\\\" &&\\n        PDFJSDev.test(\\\"CHROME\\\") &&\\n        state?.chromecomState &&\\n        !this.#isValidState(state)) ||\\n      !state\\n    ) {\\n      \u002F\u002F This case corresponds to the user changing the hash of the document.\\n      this._uid++;\\n\\n      const { hash, page, rotation } = this.#parseCurrentHash();\\n      this.#pushOrReplaceState(\\n        { hash, page, rotation },\\n        \u002F* forceReplace = *\u002F true\\n      );\\n      return;\\n    }\\n    if (!this.#isValidState(state)) {\\n      \u002F\u002F This should only occur in viewers with support for opening more than\\n      \u002F\u002F one PDF document, e.g. the GENERIC viewer.\\n      return;\\n    }\\n\\n    \u002F\u002F Prevent the browser history from updating until the new destination,\\n    \u002F\u002F as stored in the browser history, has been scrolled into view.\\n    this._popStateInProgress = true;\\n\\n    if (hashChanged) {\\n      \u002F\u002F When the hash changed, implying that the 'popstate' event will be\\n      \u002F\u002F followed by a 'hashchange' event, then we do *not* want to update the\\n      \u002F\u002F browser history when handling the 'hashchange' event (in web\u002Fapp.js)\\n      \u002F\u002F since that would *overwrite* the new destination navigated to below.\\n      \u002F\u002F\\n      \u002F\u002F To avoid accidentally disabling all future user-initiated hash changes,\\n      \u002F\u002F if there's e.g. another 'hashchange' listener that stops the event\\n      \u002F\u002F propagation, we make sure to always force-reset `this._blockHashChange`\\n      \u002F\u002F after `HASH_CHANGE_TIMEOUT` milliseconds have passed.\\n      this._blockHashChange++;\\n      waitOnEventOrTimeout({\\n        target: window,\\n        name: \\\"hashchange\\\",\\n        delay: HASH_CHANGE_TIMEOUT,\\n      }).then(() => {\\n        this._blockHashChange--;\\n      });\\n    }\\n\\n    \u002F\u002F Navigate to the new destination.\\n    const destination = state.destination;\\n    this.#updateInternalState(\\n      destination,\\n      state.uid,\\n      \u002F* removeTemporary = *\u002F true\\n    );\\n\\n    if (isValidRotation(destination.rotation)) {\\n      this.linkService.rotation = destination.rotation;\\n    }\\n    if (destination.dest) {\\n      this.linkService.goToDestination(destination.dest);\\n    } else if (destination.hash) {\\n      this.linkService.setHash(destination.hash);\\n    } else if (destination.page) {\\n      \u002F\u002F Fallback case; shouldn't be necessary, but better safe than sorry.\\n      this.linkService.page = destination.page;\\n    }\\n\\n    \u002F\u002F Since `PDFLinkService.goToDestination` is asynchronous, we thus defer the\\n    \u002F\u002F resetting of `this._popStateInProgress` slightly.\\n    Promise.resolve().then(() => {\\n      this._popStateInProgress = false;\\n    });\\n  }\\n\\n  #pageHide() {\\n    \u002F\u002F Attempt to push the `this._position` into the browser history when\\n    \u002F\u002F navigating away from the document. This is *only* done if the history\\n    \u002F\u002F is empty\u002Ftemporary, since otherwise an existing browser history entry\\n    \u002F\u002F will end up being overwritten (given that new entries cannot be pushed\\n    \u002F\u002F into the browser history when the 'unload' event has already fired).\\n    if (!this._destination || this._destination.temporary) {\\n      this.#tryPushCurrentPosition();\\n    }\\n  }\\n\\n  #bindEvents() {\\n    if (this.#eventAbortController) {\\n      return; \u002F\u002F The event listeners were already added.\\n    }\\n    this.#eventAbortController = new AbortController();\\n    const { signal } = this.#eventAbortController;\\n\\n    this.eventBus._on(\\\"updateviewarea\\\", this.#updateViewarea.bind(this), {\\n      signal,\\n    });\\n    window.addEventListener(\\\"popstate\\\", this.#popState.bind(this), { signal });\\n    window.addEventListener(\\\"pagehide\\\", this.#pageHide.bind(this), { signal });\\n  }\\n\\n  #unbindEvents() {\\n    this.#eventAbortController?.abort();\\n    this.#eventAbortController = null;\\n  }\\n}\\n\\nfunction isDestHashesEqual(destHash, pushHash) {\\n  if (typeof destHash !== \\\"string\\\" || typeof pushHash !== \\\"string\\\") {\\n    return false;\\n  }\\n  if (destHash === pushHash) {\\n    return true;\\n  }\\n  const nameddest = parseQueryString(destHash).get(\\\"nameddest\\\");\\n  if (nameddest === pushHash) {\\n    return true;\\n  }\\n  return false;\\n}\\n\\nfunction isDestArraysEqual(firstDest, secondDest) {\\n  function isEntryEqual(first, second) {\\n    if (typeof first !== typeof second) {\\n      return false;\\n    }\\n    if (Array.isArray(first) || Array.isArray(second)) {\\n      return false;\\n    }\\n    if (first !== null && typeof first === \\\"object\\\" && second !== null) {\\n      if (Object.keys(first).length !== Object.keys(second).length) {\\n        return false;\\n      }\\n      for (const key in first) {\\n        if (!isEntryEqual(first[key], second[key])) {\\n          return false;\\n        }\\n      }\\n      return true;\\n    }\\n    return first === second || (Number.isNaN(first) && Number.isNaN(second));\\n  }\\n\\n  if (!(Array.isArray(firstDest) && Array.isArray(secondDest))) {\\n    return false;\\n  }\\n  if (firstDest.length !== secondDest.length) {\\n    return false;\\n  }\\n  for (let i = 0, ii = firstDest.length; i \u003C ii; i++) {\\n    if (!isEntryEqual(firstDest[i], secondDest[i])) {\\n      return false;\\n    }\\n  }\\n  return true;\\n}\\n\\nexport { isDestArraysEqual, isDestHashesEqual, PDFHistory };\\n\",\"\u002F* Copyright 2020 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fevent_utils.js\\\").EventBus} EventBus *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Foptional_content_config.js\\\").OptionalContentConfig} OptionalContentConfig *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fapi.js\\\").PDFDocumentProxy} PDFDocumentProxy *\u002F\\n\\nimport { BaseTreeViewer } from \\\".\u002Fbase_tree_viewer.js\\\";\\n\\n\u002F**\\n * @typedef {Object} PDFLayerViewerOptions\\n * @property {HTMLDivElement} container - The viewer element.\\n * @property {EventBus} eventBus - The application event bus.\\n *\u002F\\n\\n\u002F**\\n * @typedef {Object} PDFLayerViewerRenderParameters\\n * @property {OptionalContentConfig|null} optionalContentConfig - An\\n *   {OptionalContentConfig} instance.\\n * @property {PDFDocumentProxy} pdfDocument - A {PDFDocument} instance.\\n *\u002F\\n\\nclass PDFLayerViewer extends BaseTreeViewer {\\n  constructor(options) {\\n    super(options);\\n\\n    this.eventBus._on(\\\"optionalcontentconfigchanged\\\", evt => {\\n      this.#updateLayers(evt.promise);\\n    });\\n    this.eventBus._on(\\\"resetlayers\\\", () => {\\n      this.#updateLayers();\\n    });\\n    this.eventBus._on(\\\"togglelayerstree\\\", this._toggleAllTreeItems.bind(this));\\n  }\\n\\n  reset() {\\n    super.reset();\\n    this._optionalContentConfig = null;\\n    this._optionalContentHash = null;\\n  }\\n\\n  \u002F**\\n   * @protected\\n   *\u002F\\n  _dispatchEvent(layersCount) {\\n    this.eventBus.dispatch(\\\"layersloaded\\\", {\\n      source: this,\\n      layersCount,\\n    });\\n  }\\n\\n  \u002F**\\n   * @protected\\n   *\u002F\\n  _bindLink(element, { groupId, input }) {\\n    const setVisibility = () => {\\n      this._optionalContentConfig.setVisibility(groupId, input.checked);\\n      this._optionalContentHash = this._optionalContentConfig.getHash();\\n\\n      this.eventBus.dispatch(\\\"optionalcontentconfig\\\", {\\n        source: this,\\n        promise: Promise.resolve(this._optionalContentConfig),\\n      });\\n    };\\n\\n    element.onclick = evt => {\\n      if (evt.target === input) {\\n        setVisibility();\\n        return true;\\n      } else if (evt.target !== element) {\\n        return true; \u002F\u002F The target is the \\\"label\\\", which is handled above.\\n      }\\n      input.checked = !input.checked;\\n      setVisibility();\\n      return false;\\n    };\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  async _setNestedName(element, { name = null }) {\\n    if (typeof name === \\\"string\\\") {\\n      element.textContent = this._normalizeTextContent(name);\\n      return;\\n    }\\n    element.textContent = await this._l10n.get(\\\"pdfjs-additional-layers\\\");\\n    element.style.fontStyle = \\\"italic\\\";\\n  }\\n\\n  \u002F**\\n   * @protected\\n   *\u002F\\n  _addToggleButton(div, { name = null }) {\\n    super._addToggleButton(div, \u002F* hidden = *\u002F name === null);\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _toggleAllTreeItems() {\\n    if (!this._optionalContentConfig) {\\n      return;\\n    }\\n    super._toggleAllTreeItems();\\n  }\\n\\n  \u002F**\\n   * @param {PDFLayerViewerRenderParameters} params\\n   *\u002F\\n  render({ optionalContentConfig, pdfDocument }) {\\n    if (this._optionalContentConfig) {\\n      this.reset();\\n    }\\n    this._optionalContentConfig = optionalContentConfig || null;\\n    this._pdfDocument = pdfDocument || null;\\n\\n    const groups = optionalContentConfig?.getOrder();\\n    if (!groups) {\\n      this._dispatchEvent(\u002F* layersCount = *\u002F 0);\\n      return;\\n    }\\n    this._optionalContentHash = optionalContentConfig.getHash();\\n\\n    const fragment = document.createDocumentFragment(),\\n      queue = [{ parent: fragment, groups }];\\n    let layersCount = 0,\\n      hasAnyNesting = false;\\n    while (queue.length > 0) {\\n      const levelData = queue.shift();\\n      for (const groupId of levelData.groups) {\\n        const div = document.createElement(\\\"div\\\");\\n        div.className = \\\"treeItem\\\";\\n\\n        const element = document.createElement(\\\"a\\\");\\n        div.append(element);\\n\\n        if (typeof groupId === \\\"object\\\") {\\n          hasAnyNesting = true;\\n          this._addToggleButton(div, groupId);\\n          this._setNestedName(element, groupId);\\n\\n          const itemsDiv = document.createElement(\\\"div\\\");\\n          itemsDiv.className = \\\"treeItems\\\";\\n          div.append(itemsDiv);\\n\\n          queue.push({ parent: itemsDiv, groups: groupId.order });\\n        } else {\\n          const group = optionalContentConfig.getGroup(groupId);\\n\\n          const input = document.createElement(\\\"input\\\");\\n          this._bindLink(element, { groupId, input });\\n          input.type = \\\"checkbox\\\";\\n          input.checked = group.visible;\\n\\n          const label = document.createElement(\\\"label\\\");\\n          label.textContent = this._normalizeTextContent(group.name);\\n\\n          label.append(input);\\n          element.append(label);\\n          layersCount++;\\n        }\\n\\n        levelData.parent.append(div);\\n      }\\n    }\\n\\n    this._finishRendering(fragment, layersCount, hasAnyNesting);\\n  }\\n\\n  async #updateLayers(promise = null) {\\n    if (!this._optionalContentConfig) {\\n      return;\\n    }\\n    const pdfDocument = this._pdfDocument;\\n    const optionalContentConfig = await (promise ||\\n      pdfDocument.getOptionalContentConfig({ intent: \\\"display\\\" }));\\n\\n    if (pdfDocument !== this._pdfDocument) {\\n      return; \u002F\u002F The document was closed while the optional content resolved.\\n    }\\n    if (promise) {\\n      if (optionalContentConfig.getHash() === this._optionalContentHash) {\\n        return; \u002F\u002F The optional content didn't change, hence no need to reset the UI.\\n      }\\n    } else {\\n      this.eventBus.dispatch(\\\"optionalcontentconfig\\\", {\\n        source: this,\\n        promise: Promise.resolve(optionalContentConfig),\\n      });\\n    }\\n\\n    \u002F\u002F Reset the sidebarView to the new state.\\n    this.render({\\n      optionalContentConfig,\\n      pdfDocument: this._pdfDocument,\\n    });\\n  }\\n}\\n\\nexport { PDFLayerViewer };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fevent_utils.js\\\").EventBus} EventBus *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fdownload_manager.js\\\").DownloadManager} DownloadManager *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces.js\\\").IPDFLinkService} IPDFLinkService *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fapi.js\\\").PDFDocumentProxy} PDFDocumentProxy *\u002F\\n\\nimport { BaseTreeViewer } from \\\".\u002Fbase_tree_viewer.js\\\";\\nimport { SidebarView } from \\\".\u002Fui_utils.js\\\";\\n\\n\u002F**\\n * @typedef {Object} PDFOutlineViewerOptions\\n * @property {HTMLDivElement} container - The viewer element.\\n * @property {EventBus} eventBus - The application event bus.\\n * @property {IPDFLinkService} linkService - The navigation\u002Flinking service.\\n * @property {DownloadManager} downloadManager - The download manager.\\n *\u002F\\n\\n\u002F**\\n * @typedef {Object} PDFOutlineViewerRenderParameters\\n * @property {Array|null} outline - An array of outline objects.\\n * @property {PDFDocumentProxy} pdfDocument - A {PDFDocument} instance.\\n *\u002F\\n\\nclass PDFOutlineViewer extends BaseTreeViewer {\\n  \u002F**\\n   * @param {PDFOutlineViewerOptions} options\\n   *\u002F\\n  constructor(options) {\\n    super(options);\\n    this.linkService = options.linkService;\\n    this.downloadManager = options.downloadManager;\\n\\n    this.eventBus._on(\\\"toggleoutlinetree\\\", this._toggleAllTreeItems.bind(this));\\n    this.eventBus._on(\\n      \\\"currentoutlineitem\\\",\\n      this._currentOutlineItem.bind(this)\\n    );\\n\\n    this.eventBus._on(\\\"pagechanging\\\", evt => {\\n      this._currentPageNumber = evt.pageNumber;\\n    });\\n    this.eventBus._on(\\\"pagesloaded\\\", evt => {\\n      this._isPagesLoaded = !!evt.pagesCount;\\n\\n      \u002F\u002F If the capability is still pending, see the `_dispatchEvent`-method,\\n      \u002F\u002F we know that the `currentOutlineItem`-button can be enabled here.\\n      this._currentOutlineItemCapability?.resolve(\\n        \u002F* enabled = *\u002F this._isPagesLoaded\\n      );\\n    });\\n    this.eventBus._on(\\\"sidebarviewchanged\\\", evt => {\\n      this._sidebarView = evt.view;\\n    });\\n  }\\n\\n  reset() {\\n    super.reset();\\n    this._outline = null;\\n\\n    this._pageNumberToDestHashCapability = null;\\n    this._currentPageNumber = 1;\\n    this._isPagesLoaded = null;\\n\\n    this._currentOutlineItemCapability?.resolve(\u002F* enabled = *\u002F false);\\n    this._currentOutlineItemCapability = null;\\n  }\\n\\n  \u002F**\\n   * @protected\\n   *\u002F\\n  _dispatchEvent(outlineCount) {\\n    this._currentOutlineItemCapability = Promise.withResolvers();\\n    if (\\n      outlineCount === 0 ||\\n      this._pdfDocument?.loadingParams.disableAutoFetch\\n    ) {\\n      this._currentOutlineItemCapability.resolve(\u002F* enabled = *\u002F false);\\n    } else if (this._isPagesLoaded !== null) {\\n      this._currentOutlineItemCapability.resolve(\\n        \u002F* enabled = *\u002F this._isPagesLoaded\\n      );\\n    }\\n\\n    this.eventBus.dispatch(\\\"outlineloaded\\\", {\\n      source: this,\\n      outlineCount,\\n      currentOutlineItemPromise: this._currentOutlineItemCapability.promise,\\n    });\\n  }\\n\\n  \u002F**\\n   * @protected\\n   *\u002F\\n  _bindLink(\\n    element,\\n    { url, newWindow, action, attachment, dest, setOCGState }\\n  ) {\\n    const { linkService } = this;\\n\\n    if (url) {\\n      linkService.addLinkAttributes(element, url, newWindow);\\n      return;\\n    }\\n    if (action) {\\n      element.href = linkService.getAnchorUrl(\\\"\\\");\\n      element.onclick = () => {\\n        linkService.executeNamedAction(action);\\n        return false;\\n      };\\n      return;\\n    }\\n    if (attachment) {\\n      element.href = linkService.getAnchorUrl(\\\"\\\");\\n      element.onclick = () => {\\n        this.downloadManager.openOrDownloadData(\\n          attachment.content,\\n          attachment.filename\\n        );\\n        return false;\\n      };\\n      return;\\n    }\\n    if (setOCGState) {\\n      element.href = linkService.getAnchorUrl(\\\"\\\");\\n      element.onclick = () => {\\n        linkService.executeSetOCGState(setOCGState);\\n        return false;\\n      };\\n      return;\\n    }\\n\\n    element.href = linkService.getDestinationHash(dest);\\n    element.onclick = evt => {\\n      this._updateCurrentTreeItem(evt.target.parentNode);\\n\\n      if (dest) {\\n        linkService.goToDestination(dest);\\n      }\\n      return false;\\n    };\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _setStyles(element, { bold, italic }) {\\n    if (bold) {\\n      element.style.fontWeight = \\\"bold\\\";\\n    }\\n    if (italic) {\\n      element.style.fontStyle = \\\"italic\\\";\\n    }\\n  }\\n\\n  \u002F**\\n   * @protected\\n   *\u002F\\n  _addToggleButton(div, { count, items }) {\\n    let hidden = false;\\n    if (count \u003C 0) {\\n      let totalCount = items.length;\\n      if (totalCount > 0) {\\n        const queue = [...items];\\n        while (queue.length > 0) {\\n          const { count: nestedCount, items: nestedItems } = queue.shift();\\n          if (nestedCount > 0 && nestedItems.length > 0) {\\n            totalCount += nestedItems.length;\\n            queue.push(...nestedItems);\\n          }\\n        }\\n      }\\n      if (Math.abs(count) === totalCount) {\\n        hidden = true;\\n      }\\n    }\\n    super._addToggleButton(div, hidden);\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _toggleAllTreeItems() {\\n    if (!this._outline) {\\n      return;\\n    }\\n    super._toggleAllTreeItems();\\n  }\\n\\n  \u002F**\\n   * @param {PDFOutlineViewerRenderParameters} params\\n   *\u002F\\n  render({ outline, pdfDocument }) {\\n    if (this._outline) {\\n      this.reset();\\n    }\\n    this._outline = outline || null;\\n    this._pdfDocument = pdfDocument || null;\\n\\n    if (!outline) {\\n      this._dispatchEvent(\u002F* outlineCount = *\u002F 0);\\n      return;\\n    }\\n\\n    const fragment = document.createDocumentFragment();\\n    const queue = [{ parent: fragment, items: outline }];\\n    let outlineCount = 0,\\n      hasAnyNesting = false;\\n    while (queue.length > 0) {\\n      const levelData = queue.shift();\\n      for (const item of levelData.items) {\\n        const div = document.createElement(\\\"div\\\");\\n        div.className = \\\"treeItem\\\";\\n\\n        const element = document.createElement(\\\"a\\\");\\n        this._bindLink(element, item);\\n        this._setStyles(element, item);\\n        element.textContent = this._normalizeTextContent(item.title);\\n\\n        div.append(element);\\n\\n        if (item.items.length > 0) {\\n          hasAnyNesting = true;\\n          this._addToggleButton(div, item);\\n\\n          const itemsDiv = document.createElement(\\\"div\\\");\\n          itemsDiv.className = \\\"treeItems\\\";\\n          div.append(itemsDiv);\\n\\n          queue.push({ parent: itemsDiv, items: item.items });\\n        }\\n\\n        levelData.parent.append(div);\\n        outlineCount++;\\n      }\\n    }\\n\\n    this._finishRendering(fragment, outlineCount, hasAnyNesting);\\n  }\\n\\n  \u002F**\\n   * Find\u002Fhighlight the current outline item, corresponding to the active page.\\n   * @private\\n   *\u002F\\n  async _currentOutlineItem() {\\n    if (!this._isPagesLoaded) {\\n      throw new Error(\\\"_currentOutlineItem: All pages have not been loaded.\\\");\\n    }\\n    if (!this._outline || !this._pdfDocument) {\\n      return;\\n    }\\n\\n    const pageNumberToDestHash = await this._getPageNumberToDestHash(\\n      this._pdfDocument\\n    );\\n    if (!pageNumberToDestHash) {\\n      return;\\n    }\\n    this._updateCurrentTreeItem(\u002F* treeItem = *\u002F null);\\n\\n    if (this._sidebarView !== SidebarView.OUTLINE) {\\n      return; \u002F\u002F The outline view is no longer visible, hence do nothing.\\n    }\\n    \u002F\u002F When there is no destination on the current page, always check the\\n    \u002F\u002F previous ones in (reverse) order.\\n    for (let i = this._currentPageNumber; i > 0; i--) {\\n      const destHash = pageNumberToDestHash.get(i);\\n      if (!destHash) {\\n        continue;\\n      }\\n      const linkElement = this.container.querySelector(`a[href=\\\"${destHash}\\\"]`);\\n      if (!linkElement) {\\n        continue;\\n      }\\n      this._scrollToCurrentTreeItem(linkElement.parentNode);\\n      break;\\n    }\\n  }\\n\\n  \u002F**\\n   * To (significantly) simplify the overall implementation, we will only\\n   * consider *one* destination per page when finding\u002Fhighlighting the current\\n   * outline item (similar to e.g. Adobe Reader); more specifically, we choose\\n   * the *first* outline item at the *lowest* level of the outline tree.\\n   * @private\\n   *\u002F\\n  async _getPageNumberToDestHash(pdfDocument) {\\n    if (this._pageNumberToDestHashCapability) {\\n      return this._pageNumberToDestHashCapability.promise;\\n    }\\n    this._pageNumberToDestHashCapability = Promise.withResolvers();\\n\\n    const pageNumberToDestHash = new Map(),\\n      pageNumberNesting = new Map();\\n    const queue = [{ nesting: 0, items: this._outline }];\\n    while (queue.length > 0) {\\n      const levelData = queue.shift(),\\n        currentNesting = levelData.nesting;\\n      for (const { dest, items } of levelData.items) {\\n        let explicitDest, pageNumber;\\n        if (typeof dest === \\\"string\\\") {\\n          explicitDest = await pdfDocument.getDestination(dest);\\n\\n          if (pdfDocument !== this._pdfDocument) {\\n            return null; \u002F\u002F The document was closed while the data resolved.\\n          }\\n        } else {\\n          explicitDest = dest;\\n        }\\n        if (Array.isArray(explicitDest)) {\\n          const [destRef] = explicitDest;\\n\\n          if (destRef && typeof destRef === \\\"object\\\") {\\n            \u002F\u002F The page reference must be available, since the current method\\n            \u002F\u002F won't be invoked until all pages have been loaded.\\n            pageNumber = pdfDocument.cachedPageNumber(destRef);\\n          } else if (Number.isInteger(destRef)) {\\n            pageNumber = destRef + 1;\\n          }\\n\\n          if (\\n            Number.isInteger(pageNumber) &&\\n            (!pageNumberToDestHash.has(pageNumber) ||\\n              currentNesting > pageNumberNesting.get(pageNumber))\\n          ) {\\n            const destHash = this.linkService.getDestinationHash(dest);\\n            pageNumberToDestHash.set(pageNumber, destHash);\\n            pageNumberNesting.set(pageNumber, currentNesting);\\n          }\\n        }\\n\\n        if (items.length > 0) {\\n          queue.push({ nesting: currentNesting + 1, items });\\n        }\\n      }\\n    }\\n\\n    this._pageNumberToDestHashCapability.resolve(\\n      pageNumberToDestHash.size > 0 ? pageNumberToDestHash : null\\n    );\\n    return this._pageNumberToDestHashCapability.promise;\\n  }\\n}\\n\\nexport { PDFOutlineViewer };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fevent_utils.js\\\").EventBus} EventBus *\u002F\\n\u002F** @typedef {import(\\\".\u002Fpdf_viewer.js\\\").PDFViewer} PDFViewer *\u002F\\n\\nimport {\\n  normalizeWheelEventDelta,\\n  PresentationModeState,\\n  ScrollMode,\\n  SpreadMode,\\n} from \\\".\u002Fui_utils.js\\\";\\nimport { AnnotationEditorType } from \\\"pdfjs-lib\\\";\\n\\nconst DELAY_BEFORE_HIDING_CONTROLS = 3000; \u002F\u002F in ms\\nconst ACTIVE_SELECTOR = \\\"pdfPresentationMode\\\";\\nconst CONTROLS_SELECTOR = \\\"pdfPresentationModeControls\\\";\\nconst MOUSE_SCROLL_COOLDOWN_TIME = 50; \u002F\u002F in ms\\nconst PAGE_SWITCH_THRESHOLD = 0.1;\\n\\n\u002F\u002F Number of CSS pixels for a movement to count as a swipe.\\nconst SWIPE_MIN_DISTANCE_THRESHOLD = 50;\\n\\n\u002F\u002F Swipe angle deviation from the x or y axis before it is not\\n\u002F\u002F considered a swipe in that direction any more.\\nconst SWIPE_ANGLE_THRESHOLD = Math.PI \u002F 6;\\n\\n\u002F**\\n * @typedef {Object} PDFPresentationModeOptions\\n * @property {HTMLDivElement} container - The container for the viewer element.\\n * @property {PDFViewer} pdfViewer - The document viewer.\\n * @property {EventBus} eventBus - The application event bus.\\n *\u002F\\n\\nclass PDFPresentationMode {\\n  #state = PresentationModeState.UNKNOWN;\\n\\n  #args = null;\\n\\n  #fullscreenChangeAbortController = null;\\n\\n  #windowAbortController = null;\\n\\n  \u002F**\\n   * @param {PDFPresentationModeOptions} options\\n   *\u002F\\n  constructor({ container, pdfViewer, eventBus }) {\\n    this.container = container;\\n    this.pdfViewer = pdfViewer;\\n    this.eventBus = eventBus;\\n\\n    this.contextMenuOpen = false;\\n    this.mouseScrollTimeStamp = 0;\\n    this.mouseScrollDelta = 0;\\n    this.touchSwipeState = null;\\n  }\\n\\n  \u002F**\\n   * Request the browser to enter fullscreen mode.\\n   * @returns {Promise\u003Cboolean>} Indicating if the request was successful.\\n   *\u002F\\n  async request() {\\n    const { container, pdfViewer } = this;\\n\\n    if (this.active || !pdfViewer.pagesCount || !container.requestFullscreen) {\\n      return false;\\n    }\\n    this.#addFullscreenChangeListeners();\\n    this.#notifyStateChange(PresentationModeState.CHANGING);\\n\\n    const promise = container.requestFullscreen();\\n\\n    this.#args = {\\n      pageNumber: pdfViewer.currentPageNumber,\\n      scaleValue: pdfViewer.currentScaleValue,\\n      scrollMode: pdfViewer.scrollMode,\\n      spreadMode: null,\\n      annotationEditorMode: null,\\n    };\\n\\n    if (\\n      pdfViewer.spreadMode !== SpreadMode.NONE &&\\n      !(pdfViewer.pageViewsReady && pdfViewer.hasEqualPageSizes)\\n    ) {\\n      console.warn(\\n        \\\"Ignoring Spread modes when entering PresentationMode, \\\" +\\n          \\\"since the document may contain varying page sizes.\\\"\\n      );\\n      this.#args.spreadMode = pdfViewer.spreadMode;\\n    }\\n    if (pdfViewer.annotationEditorMode !== AnnotationEditorType.DISABLE) {\\n      this.#args.annotationEditorMode = pdfViewer.annotationEditorMode;\\n    }\\n\\n    try {\\n      await promise;\\n      pdfViewer.focus(); \u002F\u002F Fixes bug 1787456.\\n      return true;\\n    } catch {\\n      this.#removeFullscreenChangeListeners();\\n      this.#notifyStateChange(PresentationModeState.NORMAL);\\n    }\\n    return false;\\n  }\\n\\n  get active() {\\n    return (\\n      this.#state === PresentationModeState.CHANGING ||\\n      this.#state === PresentationModeState.FULLSCREEN\\n    );\\n  }\\n\\n  #mouseWheel(evt) {\\n    if (!this.active) {\\n      return;\\n    }\\n    evt.preventDefault();\\n\\n    const delta = normalizeWheelEventDelta(evt);\\n    const currentTime = Date.now();\\n    const storedTime = this.mouseScrollTimeStamp;\\n\\n    \u002F\u002F If we've already switched page, avoid accidentally switching again.\\n    if (\\n      currentTime > storedTime &&\\n      currentTime - storedTime \u003C MOUSE_SCROLL_COOLDOWN_TIME\\n    ) {\\n      return;\\n    }\\n    \u002F\u002F If the scroll direction changed, reset the accumulated scroll delta.\\n    if (\\n      (this.mouseScrollDelta > 0 && delta \u003C 0) ||\\n      (this.mouseScrollDelta \u003C 0 && delta > 0)\\n    ) {\\n      this.#resetMouseScrollState();\\n    }\\n    this.mouseScrollDelta += delta;\\n\\n    if (Math.abs(this.mouseScrollDelta) >= PAGE_SWITCH_THRESHOLD) {\\n      const totalDelta = this.mouseScrollDelta;\\n      this.#resetMouseScrollState();\\n      const success =\\n        totalDelta > 0\\n          ? this.pdfViewer.previousPage()\\n          : this.pdfViewer.nextPage();\\n      if (success) {\\n        this.mouseScrollTimeStamp = currentTime;\\n      }\\n    }\\n  }\\n\\n  #notifyStateChange(state) {\\n    this.#state = state;\\n\\n    this.eventBus.dispatch(\\\"presentationmodechanged\\\", { source: this, state });\\n  }\\n\\n  #enter() {\\n    this.#notifyStateChange(PresentationModeState.FULLSCREEN);\\n    this.container.classList.add(ACTIVE_SELECTOR);\\n\\n    \u002F\u002F Ensure that the correct page is scrolled into view when entering\\n    \u002F\u002F Presentation Mode, by waiting until fullscreen mode in enabled.\\n    setTimeout(() => {\\n      this.pdfViewer.scrollMode = ScrollMode.PAGE;\\n      if (this.#args.spreadMode !== null) {\\n        this.pdfViewer.spreadMode = SpreadMode.NONE;\\n      }\\n      this.pdfViewer.currentPageNumber = this.#args.pageNumber;\\n      this.pdfViewer.currentScaleValue = \\\"page-fit\\\";\\n\\n      if (this.#args.annotationEditorMode !== null) {\\n        this.pdfViewer.annotationEditorMode = {\\n          mode: AnnotationEditorType.NONE,\\n        };\\n      }\\n    }, 0);\\n\\n    this.#addWindowListeners();\\n    this.#showControls();\\n    this.contextMenuOpen = false;\\n\\n    \u002F\u002F Text selection is disabled in Presentation Mode, thus it's not possible\\n    \u002F\u002F for the user to deselect text that is selected (e.g. with \\\"Select all\\\")\\n    \u002F\u002F when entering Presentation Mode, hence we remove any active selection.\\n    document.getSelection().empty();\\n  }\\n\\n  #exit() {\\n    const pageNumber = this.pdfViewer.currentPageNumber;\\n    this.container.classList.remove(ACTIVE_SELECTOR);\\n\\n    \u002F\u002F Ensure that the correct page is scrolled into view when exiting\\n    \u002F\u002F Presentation Mode, by waiting until fullscreen mode is disabled.\\n    setTimeout(() => {\\n      this.#removeFullscreenChangeListeners();\\n      this.#notifyStateChange(PresentationModeState.NORMAL);\\n\\n      this.pdfViewer.scrollMode = this.#args.scrollMode;\\n      if (this.#args.spreadMode !== null) {\\n        this.pdfViewer.spreadMode = this.#args.spreadMode;\\n      }\\n      this.pdfViewer.currentScaleValue = this.#args.scaleValue;\\n      this.pdfViewer.currentPageNumber = pageNumber;\\n\\n      if (this.#args.annotationEditorMode !== null) {\\n        this.pdfViewer.annotationEditorMode = {\\n          mode: this.#args.annotationEditorMode,\\n        };\\n      }\\n      this.#args = null;\\n    }, 0);\\n\\n    this.#removeWindowListeners();\\n    this.#hideControls();\\n    this.#resetMouseScrollState();\\n    this.contextMenuOpen = false;\\n  }\\n\\n  #mouseDown(evt) {\\n    if (this.contextMenuOpen) {\\n      this.contextMenuOpen = false;\\n      evt.preventDefault();\\n      return;\\n    }\\n    if (evt.button !== 0) {\\n      return;\\n    }\\n    \u002F\u002F Enable clicking of links in presentation mode. Note: only links\\n    \u002F\u002F pointing to destinations in the current PDF document work.\\n    if (\\n      evt.target.href &&\\n      evt.target.parentNode?.hasAttribute(\\\"data-internal-link\\\")\\n    ) {\\n      return;\\n    }\\n    \u002F\u002F Unless an internal link was clicked, advance one page.\\n    evt.preventDefault();\\n\\n    if (evt.shiftKey) {\\n      this.pdfViewer.previousPage();\\n    } else {\\n      this.pdfViewer.nextPage();\\n    }\\n  }\\n\\n  #contextMenu() {\\n    this.contextMenuOpen = true;\\n  }\\n\\n  #showControls() {\\n    if (this.controlsTimeout) {\\n      clearTimeout(this.controlsTimeout);\\n    } else {\\n      this.container.classList.add(CONTROLS_SELECTOR);\\n    }\\n    this.controlsTimeout = setTimeout(() => {\\n      this.container.classList.remove(CONTROLS_SELECTOR);\\n      delete this.controlsTimeout;\\n    }, DELAY_BEFORE_HIDING_CONTROLS);\\n  }\\n\\n  #hideControls() {\\n    if (!this.controlsTimeout) {\\n      return;\\n    }\\n    clearTimeout(this.controlsTimeout);\\n    this.container.classList.remove(CONTROLS_SELECTOR);\\n    delete this.controlsTimeout;\\n  }\\n\\n  \u002F**\\n   * Resets the properties used for tracking mouse scrolling events.\\n   *\u002F\\n  #resetMouseScrollState() {\\n    this.mouseScrollTimeStamp = 0;\\n    this.mouseScrollDelta = 0;\\n  }\\n\\n  #touchSwipe(evt) {\\n    if (!this.active) {\\n      return;\\n    }\\n    if (evt.touches.length > 1) {\\n      \u002F\u002F Multiple touch points detected; cancel the swipe.\\n      this.touchSwipeState = null;\\n      return;\\n    }\\n\\n    switch (evt.type) {\\n      case \\\"touchstart\\\":\\n        this.touchSwipeState = {\\n          startX: evt.touches[0].pageX,\\n          startY: evt.touches[0].pageY,\\n          endX: evt.touches[0].pageX,\\n          endY: evt.touches[0].pageY,\\n        };\\n        break;\\n      case \\\"touchmove\\\":\\n        if (this.touchSwipeState === null) {\\n          return;\\n        }\\n        this.touchSwipeState.endX = evt.touches[0].pageX;\\n        this.touchSwipeState.endY = evt.touches[0].pageY;\\n        \u002F\u002F Avoid the swipe from triggering browser gestures (Chrome in\\n        \u002F\u002F particular has some sort of swipe gesture in fullscreen mode).\\n        evt.preventDefault();\\n        break;\\n      case \\\"touchend\\\":\\n        if (this.touchSwipeState === null) {\\n          return;\\n        }\\n        let delta = 0;\\n        const dx = this.touchSwipeState.endX - this.touchSwipeState.startX;\\n        const dy = this.touchSwipeState.endY - this.touchSwipeState.startY;\\n        const absAngle = Math.abs(Math.atan2(dy, dx));\\n        if (\\n          Math.abs(dx) > SWIPE_MIN_DISTANCE_THRESHOLD &&\\n          (absAngle \u003C= SWIPE_ANGLE_THRESHOLD ||\\n            absAngle >= Math.PI - SWIPE_ANGLE_THRESHOLD)\\n        ) {\\n          \u002F\u002F Horizontal swipe.\\n          delta = dx;\\n        } else if (\\n          Math.abs(dy) > SWIPE_MIN_DISTANCE_THRESHOLD &&\\n          Math.abs(absAngle - Math.PI \u002F 2) \u003C= SWIPE_ANGLE_THRESHOLD\\n        ) {\\n          \u002F\u002F Vertical swipe.\\n          delta = dy;\\n        }\\n        if (delta > 0) {\\n          this.pdfViewer.previousPage();\\n        } else if (delta \u003C 0) {\\n          this.pdfViewer.nextPage();\\n        }\\n        break;\\n    }\\n  }\\n\\n  #addWindowListeners() {\\n    if (this.#windowAbortController) {\\n      return;\\n    }\\n    this.#windowAbortController = new AbortController();\\n    const { signal } = this.#windowAbortController;\\n\\n    const touchSwipeBind = this.#touchSwipe.bind(this);\\n\\n    window.addEventListener(\\\"mousemove\\\", this.#showControls.bind(this), {\\n      signal,\\n    });\\n    window.addEventListener(\\\"mousedown\\\", this.#mouseDown.bind(this), {\\n      signal,\\n    });\\n    window.addEventListener(\\\"wheel\\\", this.#mouseWheel.bind(this), {\\n      passive: false,\\n      signal,\\n    });\\n    window.addEventListener(\\\"keydown\\\", this.#resetMouseScrollState.bind(this), {\\n      signal,\\n    });\\n    window.addEventListener(\\\"contextmenu\\\", this.#contextMenu.bind(this), {\\n      signal,\\n    });\\n    window.addEventListener(\\\"touchstart\\\", touchSwipeBind, { signal });\\n    window.addEventListener(\\\"touchmove\\\", touchSwipeBind, { signal });\\n    window.addEventListener(\\\"touchend\\\", touchSwipeBind, { signal });\\n  }\\n\\n  #removeWindowListeners() {\\n    this.#windowAbortController?.abort();\\n    this.#windowAbortController = null;\\n  }\\n\\n  #addFullscreenChangeListeners() {\\n    if (this.#fullscreenChangeAbortController) {\\n      return;\\n    }\\n    this.#fullscreenChangeAbortController = new AbortController();\\n\\n    window.addEventListener(\\n      \\\"fullscreenchange\\\",\\n      () => {\\n        if (\u002F* isFullscreen = *\u002F document.fullscreenElement) {\\n          this.#enter();\\n        } else {\\n          this.#exit();\\n        }\\n      },\\n      { signal: this.#fullscreenChangeAbortController.signal }\\n    );\\n  }\\n\\n  #removeFullscreenChangeListeners() {\\n    this.#fullscreenChangeAbortController?.abort();\\n    this.#fullscreenChangeAbortController = null;\\n  }\\n}\\n\\nexport { PDFPresentationMode };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fapi\\\").PDFPageProxy} PDFPageProxy *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fannotation_storage\\\").AnnotationStorage} AnnotationStorage *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fdisplay_utils\\\").PageViewport} PageViewport *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IPDFLinkService} IPDFLinkService *\u002F\\n\\nimport { XfaLayer } from \\\"pdfjs-lib\\\";\\n\\n\u002F**\\n * @typedef {Object} XfaLayerBuilderOptions\\n * @property {PDFPageProxy} pdfPage\\n * @property {AnnotationStorage} [annotationStorage]\\n * @property {IPDFLinkService} linkService\\n * @property {Object} [xfaHtml]\\n *\u002F\\n\\nclass XfaLayerBuilder {\\n  \u002F**\\n   * @param {XfaLayerBuilderOptions} options\\n   *\u002F\\n  constructor({\\n    pdfPage,\\n    annotationStorage = null,\\n    linkService,\\n    xfaHtml = null,\\n  }) {\\n    this.pdfPage = pdfPage;\\n    this.annotationStorage = annotationStorage;\\n    this.linkService = linkService;\\n    this.xfaHtml = xfaHtml;\\n\\n    this.div = null;\\n    this._cancelled = false;\\n  }\\n\\n  \u002F**\\n   * @param {PageViewport} viewport\\n   * @param {string} intent (default value is 'display')\\n   * @returns {Promise\u003CObject | void>} A promise that is resolved when rendering\\n   *   of the XFA layer is complete. The first rendering will return an object\\n   *   with a `textDivs` property that can be used with the TextHighlighter.\\n   *\u002F\\n  async render(viewport, intent = \\\"display\\\") {\\n    if (intent === \\\"print\\\") {\\n      const parameters = {\\n        viewport: viewport.clone({ dontFlip: true }),\\n        div: this.div,\\n        xfaHtml: this.xfaHtml,\\n        annotationStorage: this.annotationStorage,\\n        linkService: this.linkService,\\n        intent,\\n      };\\n\\n      \u002F\u002F Create an xfa layer div and render the form\\n      this.div = document.createElement(\\\"div\\\");\\n      parameters.div = this.div;\\n\\n      return XfaLayer.render(parameters);\\n    }\\n\\n    \u002F\u002F intent === \\\"display\\\"\\n    const xfaHtml = await this.pdfPage.getXfa();\\n    if (this._cancelled || !xfaHtml) {\\n      return { textDivs: [] };\\n    }\\n\\n    const parameters = {\\n      viewport: viewport.clone({ dontFlip: true }),\\n      div: this.div,\\n      xfaHtml,\\n      annotationStorage: this.annotationStorage,\\n      linkService: this.linkService,\\n      intent,\\n    };\\n\\n    if (this.div) {\\n      return XfaLayer.update(parameters);\\n    }\\n    \u002F\u002F Create an xfa layer div and render the form\\n    this.div = document.createElement(\\\"div\\\");\\n    parameters.div = this.div;\\n\\n    return XfaLayer.render(parameters);\\n  }\\n\\n  cancel() {\\n    this._cancelled = true;\\n  }\\n\\n  hide() {\\n    if (!this.div) {\\n      return;\\n    }\\n    this.div.hidden = true;\\n  }\\n}\\n\\nexport { XfaLayerBuilder };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { getXfaPageViewport, PixelsPerInch } from \\\"pdfjs-lib\\\";\\nimport { SimpleLinkService } from \\\".\u002Fpdf_link_service.js\\\";\\nimport { XfaLayerBuilder } from \\\".\u002Fxfa_layer_builder.js\\\";\\n\\nfunction getXfaHtmlForPrinting(printContainer, pdfDocument) {\\n  const xfaHtml = pdfDocument.allXfaHtml;\\n  const linkService = new SimpleLinkService();\\n  const scale = Math.round(PixelsPerInch.PDF_TO_CSS_UNITS * 100) \u002F 100;\\n\\n  for (const xfaPage of xfaHtml.children) {\\n    const page = document.createElement(\\\"div\\\");\\n    page.className = \\\"xfaPrintedPage\\\";\\n    printContainer.append(page);\\n\\n    const builder = new XfaLayerBuilder({\\n      pdfPage: null,\\n      annotationStorage: pdfDocument.annotationStorage,\\n      linkService,\\n      xfaHtml: xfaPage,\\n    });\\n    const viewport = getXfaPageViewport(xfaPage, { scale });\\n\\n    builder.render(viewport, \\\"print\\\");\\n    page.append(builder.div);\\n  }\\n}\\n\\nexport { getXfaHtmlForPrinting };\\n\",\"\u002F* Copyright 2016 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Finterfaces.js\\\").IPDFPrintServiceFactory} IPDFPrintServiceFactory *\u002F\\n\\nimport {\\n  AnnotationMode,\\n  PixelsPerInch,\\n  RenderingCancelledException,\\n  shadow,\\n} from \\\"pdfjs-lib\\\";\\nimport { getXfaHtmlForPrinting } from \\\".\u002Fprint_utils.js\\\";\\n\\nlet activeService = null;\\nlet dialog = null;\\nlet overlayManager = null;\\nlet viewerApp = { initialized: false };\\n\\n\u002F\u002F Renders the page to the canvas of the given print service, and returns\\n\u002F\u002F the suggested dimensions of the output page.\\nfunction renderPage(\\n  activeServiceOnEntry,\\n  pdfDocument,\\n  pageNumber,\\n  size,\\n  printResolution,\\n  optionalContentConfigPromise,\\n  printAnnotationStoragePromise\\n) {\\n  const scratchCanvas = activeService.scratchCanvas;\\n\\n  \u002F\u002F The size of the canvas in pixels for printing.\\n  const PRINT_UNITS = printResolution \u002F PixelsPerInch.PDF;\\n  scratchCanvas.width = Math.floor(size.width * PRINT_UNITS);\\n  scratchCanvas.height = Math.floor(size.height * PRINT_UNITS);\\n\\n  const ctx = scratchCanvas.getContext(\\\"2d\\\");\\n  ctx.save();\\n  ctx.fillStyle = \\\"rgb(255, 255, 255)\\\";\\n  ctx.fillRect(0, 0, scratchCanvas.width, scratchCanvas.height);\\n  ctx.restore();\\n\\n  return Promise.all([\\n    pdfDocument.getPage(pageNumber),\\n    printAnnotationStoragePromise,\\n  ]).then(function ([pdfPage, printAnnotationStorage]) {\\n    const renderContext = {\\n      canvasContext: ctx,\\n      transform: [PRINT_UNITS, 0, 0, PRINT_UNITS, 0, 0],\\n      viewport: pdfPage.getViewport({ scale: 1, rotation: size.rotation }),\\n      intent: \\\"print\\\",\\n      annotationMode: AnnotationMode.ENABLE_STORAGE,\\n      optionalContentConfigPromise,\\n      printAnnotationStorage,\\n    };\\n    const renderTask = pdfPage.render(renderContext);\\n\\n    return renderTask.promise.catch(reason => {\\n      if (!(reason instanceof RenderingCancelledException)) {\\n        console.error(reason);\\n      }\\n      throw reason;\\n    });\\n  });\\n}\\n\\nclass PDFPrintService {\\n  constructor({\\n    pdfDocument,\\n    pagesOverview,\\n    printContainer,\\n    printResolution,\\n    printAnnotationStoragePromise = null,\\n  }) {\\n    this.pdfDocument = pdfDocument;\\n    this.pagesOverview = pagesOverview;\\n    this.printContainer = printContainer;\\n    this._printResolution = printResolution || 150;\\n    this._optionalContentConfigPromise = pdfDocument.getOptionalContentConfig({\\n      intent: \\\"print\\\",\\n    });\\n    this._printAnnotationStoragePromise =\\n      printAnnotationStoragePromise || Promise.resolve();\\n    this.currentPage = -1;\\n    \u002F\u002F The temporary canvas where renderPage paints one page at a time.\\n    this.scratchCanvas = document.createElement(\\\"canvas\\\");\\n  }\\n\\n  layout() {\\n    this.throwIfInactive();\\n\\n    const body = document.querySelector(\\\"body\\\");\\n    body.setAttribute(\\\"data-pdfjsprinting\\\", true);\\n\\n    const { width, height } = this.pagesOverview[0];\\n    const hasEqualPageSizes = this.pagesOverview.every(\\n      size => size.width === width && size.height === height\\n    );\\n    if (!hasEqualPageSizes) {\\n      console.warn(\\n        \\\"Not all pages have the same size. The printed result may be incorrect!\\\"\\n      );\\n    }\\n\\n    \u002F\u002F Insert a @page + size rule to make sure that the page size is correctly\\n    \u002F\u002F set. Note that we assume that all pages have the same size, because\\n    \u002F\u002F variable-size pages are not supported yet (e.g. in Chrome & Firefox).\\n    \u002F\u002F TODO(robwu): Use named pages when size calculation bugs get resolved\\n    \u002F\u002F (e.g. https:\u002F\u002Fcrbug.com\u002F355116) AND when support for named pages is\\n    \u002F\u002F added (http:\u002F\u002Fwww.w3.org\u002FTR\u002Fcss3-page\u002F#using-named-pages).\\n    \u002F\u002F In browsers where @page + size is not supported, the next stylesheet\\n    \u002F\u002F will be ignored and the user has to select the correct paper size in\\n    \u002F\u002F the UI if wanted.\\n    this.pageStyleSheet = document.createElement(\\\"style\\\");\\n    this.pageStyleSheet.textContent = `@page { size: ${width}pt ${height}pt;}`;\\n    body.append(this.pageStyleSheet);\\n  }\\n\\n  destroy() {\\n    if (activeService !== this) {\\n      \u002F\u002F |activeService| cannot be replaced without calling destroy() first,\\n      \u002F\u002F so if it differs then an external consumer has a stale reference to us.\\n      return;\\n    }\\n    this.printContainer.textContent = \\\"\\\";\\n\\n    const body = document.querySelector(\\\"body\\\");\\n    body.removeAttribute(\\\"data-pdfjsprinting\\\");\\n\\n    if (this.pageStyleSheet) {\\n      this.pageStyleSheet.remove();\\n      this.pageStyleSheet = null;\\n    }\\n    this.scratchCanvas.width = this.scratchCanvas.height = 0;\\n    this.scratchCanvas = null;\\n    activeService = null;\\n    ensureOverlay().then(function () {\\n      if (overlayManager.active === dialog) {\\n        overlayManager.close(dialog);\\n      }\\n    });\\n  }\\n\\n  renderPages() {\\n    if (this.pdfDocument.isPureXfa) {\\n      getXfaHtmlForPrinting(this.printContainer, this.pdfDocument);\\n      return Promise.resolve();\\n    }\\n\\n    const pageCount = this.pagesOverview.length;\\n    const renderNextPage = (resolve, reject) => {\\n      this.throwIfInactive();\\n      if (++this.currentPage >= pageCount) {\\n        renderProgress(pageCount, pageCount);\\n        resolve();\\n        return;\\n      }\\n      const index = this.currentPage;\\n      renderProgress(index, pageCount);\\n      renderPage(\\n        this,\\n        this.pdfDocument,\\n        \u002F* pageNumber = *\u002F index + 1,\\n        this.pagesOverview[index],\\n        this._printResolution,\\n        this._optionalContentConfigPromise,\\n        this._printAnnotationStoragePromise\\n      )\\n        .then(this.useRenderedPage.bind(this))\\n        .then(function () {\\n          renderNextPage(resolve, reject);\\n        }, reject);\\n    };\\n    return new Promise(renderNextPage);\\n  }\\n\\n  useRenderedPage() {\\n    this.throwIfInactive();\\n    const img = document.createElement(\\\"img\\\");\\n    const scratchCanvas = this.scratchCanvas;\\n    if (\\\"toBlob\\\" in scratchCanvas) {\\n      scratchCanvas.toBlob(function (blob) {\\n        img.src = URL.createObjectURL(blob);\\n      });\\n    } else {\\n      img.src = scratchCanvas.toDataURL();\\n    }\\n\\n    const wrapper = document.createElement(\\\"div\\\");\\n    wrapper.className = \\\"printedPage\\\";\\n    wrapper.append(img);\\n    this.printContainer.append(wrapper);\\n\\n    return new Promise(function (resolve, reject) {\\n      img.onload = resolve;\\n      img.onerror = reject;\\n    });\\n  }\\n\\n  performPrint() {\\n    this.throwIfInactive();\\n    return new Promise(resolve => {\\n      \u002F\u002F Push window.print in the macrotask queue to avoid being affected by\\n      \u002F\u002F the deprecation of running print() code in a microtask, see\\n      \u002F\u002F https:\u002F\u002Fgithub.com\u002Fmozilla\u002Fpdf.js\u002Fissues\u002F7547.\\n      setTimeout(() => {\\n        if (!this.active) {\\n          resolve();\\n          return;\\n        }\\n        print.call(window);\\n        \u002F\u002F Delay promise resolution in case print() was not synchronous.\\n        setTimeout(resolve, 20); \u002F\u002F Tidy-up.\\n      }, 0);\\n    });\\n  }\\n\\n  get active() {\\n    return this === activeService;\\n  }\\n\\n  throwIfInactive() {\\n    if (!this.active) {\\n      throw new Error(\\\"This print request was cancelled or completed.\\\");\\n    }\\n  }\\n}\\n\\nconst print = window.print;\\nwindow.print = function () {\\n  if (activeService) {\\n    console.warn(\\\"Ignored window.print() because of a pending print job.\\\");\\n    return;\\n  }\\n  ensureOverlay().then(function () {\\n    if (activeService) {\\n      overlayManager.open(dialog);\\n    }\\n  });\\n\\n  try {\\n    dispatchEvent(\\\"beforeprint\\\");\\n  } finally {\\n    if (!activeService) {\\n      console.error(\\\"Expected print service to be initialized.\\\");\\n      ensureOverlay().then(function () {\\n        if (overlayManager.active === dialog) {\\n          overlayManager.close(dialog);\\n        }\\n      });\\n      return; \u002F\u002F eslint-disable-line no-unsafe-finally\\n    }\\n    const activeServiceOnEntry = activeService;\\n    activeService\\n      .renderPages()\\n      .then(function () {\\n        return activeServiceOnEntry.performPrint();\\n      })\\n      .catch(function () {\\n        \u002F\u002F Ignore any error messages.\\n      })\\n      .then(function () {\\n        \u002F\u002F aborts acts on the \\\"active\\\" print request, so we need to check\\n        \u002F\u002F whether the print request (activeServiceOnEntry) is still active.\\n        \u002F\u002F Without the check, an unrelated print request (created after aborting\\n        \u002F\u002F this print request while the pages were being generated) would be\\n        \u002F\u002F aborted.\\n        if (activeServiceOnEntry.active) {\\n          abort();\\n        }\\n      });\\n  }\\n};\\n\\nfunction dispatchEvent(eventType) {\\n  const event = new CustomEvent(eventType, {\\n    bubbles: false,\\n    cancelable: false,\\n    detail: \\\"custom\\\",\\n  });\\n  window.dispatchEvent(event);\\n}\\n\\nfunction abort() {\\n  if (activeService) {\\n    activeService.destroy();\\n    dispatchEvent(\\\"afterprint\\\");\\n  }\\n}\\n\\nfunction renderProgress(index, total) {\\n  if (typeof PDFJSDev === \\\"undefined\\\" && window.isGECKOVIEW) {\\n    return;\\n  }\\n  dialog ||= document.getElementById(\\\"printServiceDialog\\\");\\n  const progress = Math.round((100 * index) \u002F total);\\n  const progressBar = dialog.querySelector(\\\"progress\\\");\\n  const progressPerc = dialog.querySelector(\\\".relative-progress\\\");\\n  progressBar.value = progress;\\n  progressPerc.setAttribute(\\\"data-l10n-args\\\", JSON.stringify({ progress }));\\n}\\n\\nwindow.addEventListener(\\n  \\\"keydown\\\",\\n  function (event) {\\n    \u002F\u002F Intercept Cmd\u002FCtrl + P in all browsers.\\n    \u002F\u002F Also intercept Cmd\u002FCtrl + Shift + P in Chrome and Opera\\n    if (\\n      event.keyCode === \u002F* P= *\u002F 80 &&\\n      (event.ctrlKey || event.metaKey) &&\\n      !event.altKey &&\\n      (!event.shiftKey || window.chrome || window.opera)\\n    ) {\\n      window.print();\\n\\n      event.preventDefault();\\n      event.stopImmediatePropagation();\\n    }\\n  },\\n  true\\n);\\n\\nif (\\\"onbeforeprint\\\" in window) {\\n  \u002F\u002F Do not propagate before\u002Fafterprint events when they are not triggered\\n  \u002F\u002F from within this polyfill. (FF \u002F Chrome 63+).\\n  const stopPropagationIfNeeded = function (event) {\\n    if (event.detail !== \\\"custom\\\") {\\n      event.stopImmediatePropagation();\\n    }\\n  };\\n  window.addEventListener(\\\"beforeprint\\\", stopPropagationIfNeeded);\\n  window.addEventListener(\\\"afterprint\\\", stopPropagationIfNeeded);\\n}\\n\\nlet overlayPromise;\\nfunction ensureOverlay() {\\n  if (typeof PDFJSDev === \\\"undefined\\\" && window.isGECKOVIEW) {\\n    return Promise.reject(\\n      new Error(\\\"ensureOverlay not implemented in GECKOVIEW development mode.\\\")\\n    );\\n  }\\n  if (!overlayPromise) {\\n    overlayManager = viewerApp.overlayManager;\\n    if (!overlayManager) {\\n      throw new Error(\\\"The overlay manager has not yet been initialized.\\\");\\n    }\\n    dialog ||= document.getElementById(\\\"printServiceDialog\\\");\\n\\n    overlayPromise = overlayManager.register(\\n      dialog,\\n      \u002F* canForceClose = *\u002F true\\n    );\\n\\n    document.getElementById(\\\"printCancel\\\").onclick = abort;\\n    dialog.addEventListener(\\\"close\\\", abort);\\n  }\\n  return overlayPromise;\\n}\\n\\n\u002F**\\n * @implements {IPDFPrintServiceFactory}\\n *\u002F\\nclass PDFPrintServiceFactory {\\n  static initGlobals(app) {\\n    viewerApp = app;\\n  }\\n\\n  static get supportsPrinting() {\\n    return shadow(this, \\\"supportsPrinting\\\", true);\\n  }\\n\\n  static createPrintService(params) {\\n    if (activeService) {\\n      throw new Error(\\\"The print service is created and active.\\\");\\n    }\\n    return (activeService = new PDFPrintService(params));\\n  }\\n}\\n\\nexport { PDFPrintServiceFactory };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IRenderableView} IRenderableView *\u002F\\n\u002F** @typedef {import(\\\".\u002Fpdf_viewer\\\").PDFViewer} PDFViewer *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fpdf_thumbnail_viewer\\\").PDFThumbnailViewer} PDFThumbnailViewer *\u002F\\n\\nimport { RenderingCancelledException } from \\\"pdfjs-lib\\\";\\nimport { RenderingStates } from \\\".\u002Fui_utils.js\\\";\\n\\nconst CLEANUP_TIMEOUT = 30000;\\n\\n\u002F**\\n * Controls rendering of the views for pages and thumbnails.\\n *\u002F\\nclass PDFRenderingQueue {\\n  constructor() {\\n    this.pdfViewer = null;\\n    this.pdfThumbnailViewer = null;\\n    this.onIdle = null;\\n    this.highestPriorityPage = null;\\n    \u002F** @type {number} *\u002F\\n    this.idleTimeout = null;\\n    this.printing = false;\\n    this.isThumbnailViewEnabled = false;\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      Object.defineProperty(this, \\\"hasViewer\\\", {\\n        value: () => !!this.pdfViewer,\\n      });\\n    }\\n  }\\n\\n  \u002F**\\n   * @param {PDFViewer} pdfViewer\\n   *\u002F\\n  setViewer(pdfViewer) {\\n    this.pdfViewer = pdfViewer;\\n  }\\n\\n  \u002F**\\n   * @param {PDFThumbnailViewer} pdfThumbnailViewer\\n   *\u002F\\n  setThumbnailViewer(pdfThumbnailViewer) {\\n    this.pdfThumbnailViewer = pdfThumbnailViewer;\\n  }\\n\\n  \u002F**\\n   * @param {IRenderableView} view\\n   * @returns {boolean}\\n   *\u002F\\n  isHighestPriority(view) {\\n    return this.highestPriorityPage === view.renderingId;\\n  }\\n\\n  \u002F**\\n   * @param {Object} currentlyVisiblePages\\n   *\u002F\\n  renderHighestPriority(currentlyVisiblePages) {\\n    if (this.idleTimeout) {\\n      clearTimeout(this.idleTimeout);\\n      this.idleTimeout = null;\\n    }\\n\\n    \u002F\u002F Pages have a higher priority than thumbnails, so check them first.\\n    if (this.pdfViewer.forceRendering(currentlyVisiblePages)) {\\n      return;\\n    }\\n    \u002F\u002F No pages needed rendering, so check thumbnails.\\n    if (\\n      this.isThumbnailViewEnabled &&\\n      this.pdfThumbnailViewer?.forceRendering()\\n    ) {\\n      return;\\n    }\\n\\n    if (this.printing) {\\n      \u002F\u002F If printing is currently ongoing do not reschedule cleanup.\\n      return;\\n    }\\n\\n    if (this.onIdle) {\\n      this.idleTimeout = setTimeout(this.onIdle.bind(this), CLEANUP_TIMEOUT);\\n    }\\n  }\\n\\n  \u002F**\\n   * @param {Object} visible\\n   * @param {Array} views\\n   * @param {boolean} scrolledDown\\n   * @param {boolean} [preRenderExtra]\\n   *\u002F\\n  getHighestPriority(visible, views, scrolledDown, preRenderExtra = false) {\\n    \u002F**\\n     * The state has changed. Figure out which page has the highest priority to\\n     * render next (if any).\\n     *\\n     * Priority:\\n     * 1. visible pages\\n     * 2. if last scrolled down, the page after the visible pages, or\\n     *    if last scrolled up, the page before the visible pages\\n     *\u002F\\n    const visibleViews = visible.views,\\n      numVisible = visibleViews.length;\\n\\n    if (numVisible === 0) {\\n      return null;\\n    }\\n    for (let i = 0; i \u003C numVisible; i++) {\\n      const view = visibleViews[i].view;\\n      if (!this.isViewFinished(view)) {\\n        return view;\\n      }\\n    }\\n    const firstId = visible.first.id,\\n      lastId = visible.last.id;\\n\\n    \u002F\u002F All the visible views have rendered; try to handle any \\\"holes\\\" in the\\n    \u002F\u002F page layout (can happen e.g. with spreadModes at higher zoom levels).\\n    if (lastId - firstId + 1 > numVisible) {\\n      const visibleIds = visible.ids;\\n      for (let i = 1, ii = lastId - firstId; i \u003C ii; i++) {\\n        const holeId = scrolledDown ? firstId + i : lastId - i;\\n        if (visibleIds.has(holeId)) {\\n          continue;\\n        }\\n        const holeView = views[holeId - 1];\\n        if (!this.isViewFinished(holeView)) {\\n          return holeView;\\n        }\\n      }\\n    }\\n\\n    \u002F\u002F All the visible views have rendered; try to render next\u002Fprevious page.\\n    \u002F\u002F (IDs start at 1, so no need to add 1 when `scrolledDown === true`.)\\n    let preRenderIndex = scrolledDown ? lastId : firstId - 2;\\n    let preRenderView = views[preRenderIndex];\\n\\n    if (preRenderView && !this.isViewFinished(preRenderView)) {\\n      return preRenderView;\\n    }\\n    if (preRenderExtra) {\\n      preRenderIndex += scrolledDown ? 1 : -1;\\n      preRenderView = views[preRenderIndex];\\n\\n      if (preRenderView && !this.isViewFinished(preRenderView)) {\\n        return preRenderView;\\n      }\\n    }\\n    \u002F\u002F Everything that needs to be rendered has been.\\n    return null;\\n  }\\n\\n  \u002F**\\n   * @param {IRenderableView} view\\n   * @returns {boolean}\\n   *\u002F\\n  isViewFinished(view) {\\n    return view.renderingState === RenderingStates.FINISHED;\\n  }\\n\\n  \u002F**\\n   * Render a page or thumbnail view. This calls the appropriate function\\n   * based on the views state. If the view is already rendered it will return\\n   * `false`.\\n   *\\n   * @param {IRenderableView} view\\n   *\u002F\\n  renderView(view) {\\n    switch (view.renderingState) {\\n      case RenderingStates.FINISHED:\\n        return false;\\n      case RenderingStates.PAUSED:\\n        this.highestPriorityPage = view.renderingId;\\n        view.resume();\\n        break;\\n      case RenderingStates.RUNNING:\\n        this.highestPriorityPage = view.renderingId;\\n        break;\\n      case RenderingStates.INITIAL:\\n        this.highestPriorityPage = view.renderingId;\\n        view\\n          .draw()\\n          .finally(() => {\\n            this.renderHighestPriority();\\n          })\\n          .catch(reason => {\\n            if (reason instanceof RenderingCancelledException) {\\n              return;\\n            }\\n            console.error(`renderView: \\\"${reason}\\\"`);\\n          });\\n        break;\\n    }\\n    return true;\\n  }\\n}\\n\\nexport { PDFRenderingQueue };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fevent_utils\\\").EventBus} EventBus *\u002F\\n\\nimport { apiPageLayoutToViewerModes, RenderingStates } from \\\".\u002Fui_utils.js\\\";\\nimport { shadow } from \\\"pdfjs-lib\\\";\\n\\n\u002F**\\n * @typedef {Object} PDFScriptingManagerOptions\\n * @property {EventBus} eventBus - The application event bus.\\n * @property {string} [sandboxBundleSrc] - The path and filename of the\\n *   scripting bundle.\\n * @property {Object} [externalServices] - The factory that is used when\\n *   initializing scripting; must contain a `createScripting` method.\\n *   PLEASE NOTE: Primarily intended for the default viewer use-case.\\n * @property {function} [docProperties] - The function that is used to lookup\\n *   the necessary document properties.\\n *\u002F\\n\\nclass PDFScriptingManager {\\n  #closeCapability = null;\\n\\n  #destroyCapability = null;\\n\\n  #docProperties = null;\\n\\n  #eventAbortController = null;\\n\\n  #eventBus = null;\\n\\n  #externalServices = null;\\n\\n  #pdfDocument = null;\\n\\n  #pdfViewer = null;\\n\\n  #ready = false;\\n\\n  #scripting = null;\\n\\n  #willPrintCapability = null;\\n\\n  \u002F**\\n   * @param {PDFScriptingManagerOptions} options\\n   *\u002F\\n  constructor({ eventBus, externalServices = null, docProperties = null }) {\\n    this.#eventBus = eventBus;\\n    this.#externalServices = externalServices;\\n    this.#docProperties = docProperties;\\n\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING\\\")) {\\n      Object.defineProperty(this, \\\"sandboxTrip\\\", {\\n        value: () =>\\n          setTimeout(\\n            () =>\\n              this.#scripting?.dispatchEventInSandbox({\\n                name: \\\"sandboxtripbegin\\\",\\n              }),\\n            0\\n          ),\\n      });\\n    }\\n  }\\n\\n  setViewer(pdfViewer) {\\n    this.#pdfViewer = pdfViewer;\\n  }\\n\\n  async setDocument(pdfDocument) {\\n    if (this.#pdfDocument) {\\n      await this.#destroyScripting();\\n    }\\n    this.#pdfDocument = pdfDocument;\\n\\n    if (!pdfDocument) {\\n      return;\\n    }\\n    const [objects, calculationOrder, docActions] = await Promise.all([\\n      pdfDocument.getFieldObjects(),\\n      pdfDocument.getCalculationOrderIds(),\\n      pdfDocument.getJSActions(),\\n    ]);\\n\\n    if (!objects && !docActions) {\\n      \u002F\u002F No FieldObjects or JavaScript actions were found in the document.\\n      await this.#destroyScripting();\\n      return;\\n    }\\n    if (pdfDocument !== this.#pdfDocument) {\\n      return; \u002F\u002F The document was closed while the data resolved.\\n    }\\n    try {\\n      this.#scripting = this.#initScripting();\\n    } catch (error) {\\n      console.error(`setDocument: \\\"${error.message}\\\".`);\\n\\n      await this.#destroyScripting();\\n      return;\\n    }\\n    const eventBus = this.#eventBus;\\n\\n    this.#eventAbortController = new AbortController();\\n    const { signal } = this.#eventAbortController;\\n\\n    eventBus._on(\\n      \\\"updatefromsandbox\\\",\\n      event => {\\n        if (event?.source === window) {\\n          this.#updateFromSandbox(event.detail);\\n        }\\n      },\\n      { signal }\\n    );\\n    eventBus._on(\\n      \\\"dispatcheventinsandbox\\\",\\n      event => {\\n        this.#scripting?.dispatchEventInSandbox(event.detail);\\n      },\\n      { signal }\\n    );\\n\\n    eventBus._on(\\n      \\\"pagechanging\\\",\\n      ({ pageNumber, previous }) => {\\n        if (pageNumber === previous) {\\n          return; \u002F\u002F The current page didn't change.\\n        }\\n        this.#dispatchPageClose(previous);\\n        this.#dispatchPageOpen(pageNumber);\\n      },\\n      { signal }\\n    );\\n    eventBus._on(\\n      \\\"pagerendered\\\",\\n      ({ pageNumber }) => {\\n        if (!this._pageOpenPending.has(pageNumber)) {\\n          return; \u002F\u002F No pending \\\"PageOpen\\\" event for the newly rendered page.\\n        }\\n        if (pageNumber !== this.#pdfViewer.currentPageNumber) {\\n          return; \u002F\u002F The newly rendered page is no longer the current one.\\n        }\\n        this.#dispatchPageOpen(pageNumber);\\n      },\\n      { signal }\\n    );\\n    eventBus._on(\\n      \\\"pagesdestroy\\\",\\n      async () => {\\n        await this.#dispatchPageClose(this.#pdfViewer.currentPageNumber);\\n\\n        await this.#scripting?.dispatchEventInSandbox({\\n          id: \\\"doc\\\",\\n          name: \\\"WillClose\\\",\\n        });\\n\\n        this.#closeCapability?.resolve();\\n      },\\n      { signal }\\n    );\\n\\n    try {\\n      const docProperties = await this.#docProperties(pdfDocument);\\n      if (pdfDocument !== this.#pdfDocument) {\\n        return; \u002F\u002F The document was closed while the properties resolved.\\n      }\\n\\n      await this.#scripting.createSandbox({\\n        objects,\\n        calculationOrder,\\n        appInfo: {\\n          platform: navigator.platform,\\n          language: navigator.language,\\n        },\\n        docInfo: {\\n          ...docProperties,\\n          actions: docActions,\\n        },\\n      });\\n\\n      eventBus.dispatch(\\\"sandboxcreated\\\", { source: this });\\n    } catch (error) {\\n      console.error(`setDocument: \\\"${error.message}\\\".`);\\n\\n      await this.#destroyScripting();\\n      return;\\n    }\\n\\n    await this.#scripting?.dispatchEventInSandbox({\\n      id: \\\"doc\\\",\\n      name: \\\"Open\\\",\\n    });\\n    await this.#dispatchPageOpen(\\n      this.#pdfViewer.currentPageNumber,\\n      \u002F* initialize = *\u002F true\\n    );\\n\\n    \u002F\u002F Defer this slightly, to ensure that scripting is *fully* initialized.\\n    Promise.resolve().then(() => {\\n      if (pdfDocument === this.#pdfDocument) {\\n        this.#ready = true;\\n      }\\n    });\\n  }\\n\\n  async dispatchWillSave() {\\n    return this.#scripting?.dispatchEventInSandbox({\\n      id: \\\"doc\\\",\\n      name: \\\"WillSave\\\",\\n    });\\n  }\\n\\n  async dispatchDidSave() {\\n    return this.#scripting?.dispatchEventInSandbox({\\n      id: \\\"doc\\\",\\n      name: \\\"DidSave\\\",\\n    });\\n  }\\n\\n  async dispatchWillPrint() {\\n    if (!this.#scripting) {\\n      return;\\n    }\\n    await this.#willPrintCapability?.promise;\\n    this.#willPrintCapability = Promise.withResolvers();\\n    try {\\n      await this.#scripting.dispatchEventInSandbox({\\n        id: \\\"doc\\\",\\n        name: \\\"WillPrint\\\",\\n      });\\n    } catch (ex) {\\n      this.#willPrintCapability.resolve();\\n      this.#willPrintCapability = null;\\n      throw ex;\\n    }\\n\\n    await this.#willPrintCapability.promise;\\n  }\\n\\n  async dispatchDidPrint() {\\n    return this.#scripting?.dispatchEventInSandbox({\\n      id: \\\"doc\\\",\\n      name: \\\"DidPrint\\\",\\n    });\\n  }\\n\\n  get destroyPromise() {\\n    return this.#destroyCapability?.promise || null;\\n  }\\n\\n  get ready() {\\n    return this.#ready;\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  get _pageOpenPending() {\\n    return shadow(this, \\\"_pageOpenPending\\\", new Set());\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  get _visitedPages() {\\n    return shadow(this, \\\"_visitedPages\\\", new Map());\\n  }\\n\\n  async #updateFromSandbox(detail) {\\n    const pdfViewer = this.#pdfViewer;\\n    \u002F\u002F Ignore some events, see below, that don't make sense in PresentationMode.\\n    const isInPresentationMode =\\n      pdfViewer.isInPresentationMode || pdfViewer.isChangingPresentationMode;\\n\\n    const { id, siblings, command, value } = detail;\\n    if (!id) {\\n      if (\\n        typeof PDFJSDev !== \\\"undefined\\\" &&\\n        PDFJSDev.test(\\\"TESTING\\\") &&\\n        command === \\\"sandboxTripEnd\\\"\\n      ) {\\n        window.setTimeout(() => {\\n          window.dispatchEvent(new CustomEvent(\\\"sandboxtripend\\\"));\\n        }, 0);\\n        return;\\n      }\\n\\n      switch (command) {\\n        case \\\"clear\\\":\\n          console.clear();\\n          break;\\n        case \\\"error\\\":\\n          console.error(value);\\n          break;\\n        case \\\"layout\\\":\\n          if (!isInPresentationMode) {\\n            const modes = apiPageLayoutToViewerModes(value);\\n            pdfViewer.spreadMode = modes.spreadMode;\\n          }\\n          break;\\n        case \\\"page-num\\\":\\n          pdfViewer.currentPageNumber = value + 1;\\n          break;\\n        case \\\"print\\\":\\n          await pdfViewer.pagesPromise;\\n          this.#eventBus.dispatch(\\\"print\\\", { source: this });\\n          break;\\n        case \\\"println\\\":\\n          console.log(value);\\n          break;\\n        case \\\"zoom\\\":\\n          if (!isInPresentationMode) {\\n            pdfViewer.currentScaleValue = value;\\n          }\\n          break;\\n        case \\\"SaveAs\\\":\\n          this.#eventBus.dispatch(\\\"download\\\", { source: this });\\n          break;\\n        case \\\"FirstPage\\\":\\n          pdfViewer.currentPageNumber = 1;\\n          break;\\n        case \\\"LastPage\\\":\\n          pdfViewer.currentPageNumber = pdfViewer.pagesCount;\\n          break;\\n        case \\\"NextPage\\\":\\n          pdfViewer.nextPage();\\n          break;\\n        case \\\"PrevPage\\\":\\n          pdfViewer.previousPage();\\n          break;\\n        case \\\"ZoomViewIn\\\":\\n          if (!isInPresentationMode) {\\n            pdfViewer.increaseScale();\\n          }\\n          break;\\n        case \\\"ZoomViewOut\\\":\\n          if (!isInPresentationMode) {\\n            pdfViewer.decreaseScale();\\n          }\\n          break;\\n        case \\\"WillPrintFinished\\\":\\n          this.#willPrintCapability?.resolve();\\n          this.#willPrintCapability = null;\\n          break;\\n      }\\n      return;\\n    }\\n\\n    if (isInPresentationMode && detail.focus) {\\n      return;\\n    }\\n    delete detail.id;\\n    delete detail.siblings;\\n\\n    const ids = siblings ? [id, ...siblings] : [id];\\n    for (const elementId of ids) {\\n      const element = document.querySelector(\\n        `[data-element-id=\\\"${elementId}\\\"]`\\n      );\\n      if (element) {\\n        element.dispatchEvent(new CustomEvent(\\\"updatefromsandbox\\\", { detail }));\\n      } else {\\n        \u002F\u002F The element hasn't been rendered yet, use the AnnotationStorage.\\n        this.#pdfDocument?.annotationStorage.setValue(elementId, detail);\\n      }\\n    }\\n  }\\n\\n  async #dispatchPageOpen(pageNumber, initialize = false) {\\n    const pdfDocument = this.#pdfDocument,\\n      visitedPages = this._visitedPages;\\n\\n    if (initialize) {\\n      this.#closeCapability = Promise.withResolvers();\\n    }\\n    if (!this.#closeCapability) {\\n      return; \u002F\u002F Scripting isn't fully initialized yet.\\n    }\\n    const pageView = this.#pdfViewer.getPageView(\u002F* index = *\u002F pageNumber - 1);\\n\\n    if (pageView?.renderingState !== RenderingStates.FINISHED) {\\n      this._pageOpenPending.add(pageNumber);\\n      return; \u002F\u002F Wait for the page to finish rendering.\\n    }\\n    this._pageOpenPending.delete(pageNumber);\\n\\n    const actionsPromise = (async () => {\\n      \u002F\u002F Avoid sending, and thus serializing, the `actions` data more than once.\\n      const actions = await (!visitedPages.has(pageNumber)\\n        ? pageView.pdfPage?.getJSActions()\\n        : null);\\n      if (pdfDocument !== this.#pdfDocument) {\\n        return; \u002F\u002F The document was closed while the actions resolved.\\n      }\\n\\n      await this.#scripting?.dispatchEventInSandbox({\\n        id: \\\"page\\\",\\n        name: \\\"PageOpen\\\",\\n        pageNumber,\\n        actions,\\n      });\\n    })();\\n    visitedPages.set(pageNumber, actionsPromise);\\n  }\\n\\n  async #dispatchPageClose(pageNumber) {\\n    const pdfDocument = this.#pdfDocument,\\n      visitedPages = this._visitedPages;\\n\\n    if (!this.#closeCapability) {\\n      return; \u002F\u002F Scripting isn't fully initialized yet.\\n    }\\n    if (this._pageOpenPending.has(pageNumber)) {\\n      return; \u002F\u002F The page is still rendering; no \\\"PageOpen\\\" event dispatched.\\n    }\\n    const actionsPromise = visitedPages.get(pageNumber);\\n    if (!actionsPromise) {\\n      return; \u002F\u002F The \\\"PageClose\\\" event must be preceded by a \\\"PageOpen\\\" event.\\n    }\\n    visitedPages.set(pageNumber, null);\\n\\n    \u002F\u002F Ensure that the \\\"PageOpen\\\" event is dispatched first.\\n    await actionsPromise;\\n    if (pdfDocument !== this.#pdfDocument) {\\n      return; \u002F\u002F The document was closed while the actions resolved.\\n    }\\n\\n    await this.#scripting?.dispatchEventInSandbox({\\n      id: \\\"page\\\",\\n      name: \\\"PageClose\\\",\\n      pageNumber,\\n    });\\n  }\\n\\n  #initScripting() {\\n    this.#destroyCapability = Promise.withResolvers();\\n\\n    if (this.#scripting) {\\n      throw new Error(\\\"#initScripting: Scripting already exists.\\\");\\n    }\\n    return this.#externalServices.createScripting();\\n  }\\n\\n  async #destroyScripting() {\\n    if (!this.#scripting) {\\n      this.#pdfDocument = null;\\n\\n      this.#destroyCapability?.resolve();\\n      return;\\n    }\\n    if (this.#closeCapability) {\\n      await Promise.race([\\n        this.#closeCapability.promise,\\n        new Promise(resolve => {\\n          \u002F\u002F Avoid the scripting\u002Fsandbox-destruction hanging indefinitely.\\n          setTimeout(resolve, 1000);\\n        }),\\n      ]).catch(() => {\\n        \u002F\u002F Ignore any errors, to ensure that the sandbox is always destroyed.\\n      });\\n      this.#closeCapability = null;\\n    }\\n    this.#pdfDocument = null;\\n\\n    try {\\n      await this.#scripting.destroySandbox();\\n    } catch {}\\n\\n    this.#willPrintCapability?.reject(new Error(\\\"Scripting destroyed.\\\"));\\n    this.#willPrintCapability = null;\\n\\n    this.#eventAbortController?.abort();\\n    this.#eventAbortController = null;\\n\\n    this._pageOpenPending.clear();\\n    this._visitedPages.clear();\\n\\n    this.#scripting = null;\\n    this.#ready = false;\\n\\n    this.#destroyCapability?.resolve();\\n  }\\n}\\n\\nexport { PDFScriptingManager };\\n\",\"\u002F* Copyright 2016 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fevent_utils.js\\\").EventBus} EventBus *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces.js\\\").IL10n} IL10n *\u002F\\n\\nimport {\\n  docStyle,\\n  PresentationModeState,\\n  SidebarView,\\n  toggleCheckedBtn,\\n  toggleExpandedBtn,\\n} from \\\".\u002Fui_utils.js\\\";\\n\\nconst SIDEBAR_WIDTH_VAR = \\\"--sidebar-width\\\";\\nconst SIDEBAR_MIN_WIDTH = 200; \u002F\u002F pixels\\nconst SIDEBAR_RESIZING_CLASS = \\\"sidebarResizing\\\";\\nconst UI_NOTIFICATION_CLASS = \\\"pdfSidebarNotification\\\";\\n\\n\u002F**\\n * @typedef {Object} PDFSidebarOptions\\n * @property {PDFSidebarElements} elements - The DOM elements.\\n * @property {EventBus} eventBus - The application event bus.\\n * @property {IL10n} l10n - The localization service.\\n *\u002F\\n\\n\u002F**\\n * @typedef {Object} PDFSidebarElements\\n * @property {HTMLDivElement} outerContainer - The outer container\\n *   (encasing both the viewer and sidebar elements).\\n * @property {HTMLDivElement} sidebarContainer - The sidebar container\\n *   (in which the views are placed).\\n * @property {HTMLButtonElement} toggleButton - The button used for\\n *   opening\u002Fclosing the sidebar.\\n * @property {HTMLDivElement} resizer - The DOM element that can be dragged in\\n *   order to adjust the width of the sidebar.\\n * @property {HTMLButtonElement} thumbnailButton - The button used to show\\n *   the thumbnail view.\\n * @property {HTMLButtonElement} outlineButton - The button used to show\\n *   the outline view.\\n * @property {HTMLButtonElement} attachmentsButton - The button used to show\\n *   the attachments view.\\n * @property {HTMLButtonElement} layersButton - The button used to show\\n *   the layers view.\\n * @property {HTMLDivElement} thumbnailView - The container in which\\n *   the thumbnails are placed.\\n * @property {HTMLDivElement} outlineView - The container in which\\n *   the outline is placed.\\n * @property {HTMLDivElement} attachmentsView - The container in which\\n *   the attachments are placed.\\n * @property {HTMLDivElement} layersView - The container in which\\n *   the layers are placed.\\n * @property {HTMLButtonElement} currentOutlineItemButton - The button used to\\n *   find the current outline item.\\n *\u002F\\n\\nclass PDFSidebar {\\n  #isRTL = false;\\n\\n  #mouseMoveBound = this.#mouseMove.bind(this);\\n\\n  #mouseUpBound = this.#mouseUp.bind(this);\\n\\n  #outerContainerWidth = null;\\n\\n  #width = null;\\n\\n  \u002F**\\n   * @param {PDFSidebarOptions} options\\n   *\u002F\\n  constructor({ elements, eventBus, l10n }) {\\n    this.isOpen = false;\\n    this.active = SidebarView.THUMBS;\\n    this.isInitialViewSet = false;\\n    this.isInitialEventDispatched = false;\\n\\n    \u002F**\\n     * Callback used when the sidebar has been opened\u002Fclosed, to ensure that\\n     * the viewers (PDFViewer\u002FPDFThumbnailViewer) are updated correctly.\\n     *\u002F\\n    this.onToggled = null;\\n    this.onUpdateThumbnails = null;\\n\\n    this.outerContainer = elements.outerContainer;\\n    this.sidebarContainer = elements.sidebarContainer;\\n    this.toggleButton = elements.toggleButton;\\n    this.resizer = elements.resizer;\\n\\n    this.thumbnailButton = elements.thumbnailButton;\\n    this.outlineButton = elements.outlineButton;\\n    this.attachmentsButton = elements.attachmentsButton;\\n    this.layersButton = elements.layersButton;\\n\\n    this.thumbnailView = elements.thumbnailView;\\n    this.outlineView = elements.outlineView;\\n    this.attachmentsView = elements.attachmentsView;\\n    this.layersView = elements.layersView;\\n\\n    this._currentOutlineItemButton = elements.currentOutlineItemButton;\\n\\n    this.eventBus = eventBus;\\n\\n    this.#isRTL = l10n.getDirection() === \\\"rtl\\\";\\n    this.#addEventListeners();\\n  }\\n\\n  reset() {\\n    this.isInitialViewSet = false;\\n    this.isInitialEventDispatched = false;\\n\\n    this.#hideUINotification(\u002F* reset = *\u002F true);\\n    this.switchView(SidebarView.THUMBS);\\n\\n    this.outlineButton.disabled = false;\\n    this.attachmentsButton.disabled = false;\\n    this.layersButton.disabled = false;\\n    this._currentOutlineItemButton.disabled = true;\\n  }\\n\\n  \u002F**\\n   * @type {number} One of the values in {SidebarView}.\\n   *\u002F\\n  get visibleView() {\\n    return this.isOpen ? this.active : SidebarView.NONE;\\n  }\\n\\n  \u002F**\\n   * @param {number} view - The sidebar view that should become visible,\\n   *                        must be one of the values in {SidebarView}.\\n   *\u002F\\n  setInitialView(view = SidebarView.NONE) {\\n    if (this.isInitialViewSet) {\\n      return;\\n    }\\n    this.isInitialViewSet = true;\\n\\n    \u002F\u002F If the user has already manually opened the sidebar, immediately closing\\n    \u002F\u002F it would be bad UX; also ignore the \\\"unknown\\\" sidebar view value.\\n    if (view === SidebarView.NONE || view === SidebarView.UNKNOWN) {\\n      this.#dispatchEvent();\\n      return;\\n    }\\n    this.switchView(view, \u002F* forceOpen = *\u002F true);\\n\\n    \u002F\u002F Prevent dispatching two back-to-back \\\"sidebarviewchanged\\\" events,\\n    \u002F\u002F since `this.switchView` dispatched the event if the view changed.\\n    if (!this.isInitialEventDispatched) {\\n      this.#dispatchEvent();\\n    }\\n  }\\n\\n  \u002F**\\n   * @param {number} view - The sidebar view that should be switched to,\\n   *                        must be one of the values in {SidebarView}.\\n   * @param {boolean} [forceOpen] - Ensure that the sidebar is open.\\n   *                                The default value is `false`.\\n   *\u002F\\n  switchView(view, forceOpen = false) {\\n    const isViewChanged = view !== this.active;\\n    let forceRendering = false;\\n\\n    switch (view) {\\n      case SidebarView.NONE:\\n        if (this.isOpen) {\\n          this.close();\\n        }\\n        return; \u002F\u002F Closing will trigger rendering and dispatch the event.\\n      case SidebarView.THUMBS:\\n        if (this.isOpen && isViewChanged) {\\n          forceRendering = true;\\n        }\\n        break;\\n      case SidebarView.OUTLINE:\\n        if (this.outlineButton.disabled) {\\n          return;\\n        }\\n        break;\\n      case SidebarView.ATTACHMENTS:\\n        if (this.attachmentsButton.disabled) {\\n          return;\\n        }\\n        break;\\n      case SidebarView.LAYERS:\\n        if (this.layersButton.disabled) {\\n          return;\\n        }\\n        break;\\n      default:\\n        console.error(`PDFSidebar.switchView: \\\"${view}\\\" is not a valid view.`);\\n        return;\\n    }\\n    \u002F\u002F Update the active view *after* it has been validated above,\\n    \u002F\u002F in order to prevent setting it to an invalid state.\\n    this.active = view;\\n\\n    \u002F\u002F Update the CSS classes (and aria attributes), for all buttons and views.\\n    toggleCheckedBtn(\\n      this.thumbnailButton,\\n      view === SidebarView.THUMBS,\\n      this.thumbnailView\\n    );\\n    toggleCheckedBtn(\\n      this.outlineButton,\\n      view === SidebarView.OUTLINE,\\n      this.outlineView\\n    );\\n    toggleCheckedBtn(\\n      this.attachmentsButton,\\n      view === SidebarView.ATTACHMENTS,\\n      this.attachmentsView\\n    );\\n    toggleCheckedBtn(\\n      this.layersButton,\\n      view === SidebarView.LAYERS,\\n      this.layersView\\n    );\\n\\n    if (forceOpen && !this.isOpen) {\\n      this.open();\\n      return; \u002F\u002F Opening will trigger rendering and dispatch the event.\\n    }\\n    if (forceRendering) {\\n      this.onUpdateThumbnails();\\n      this.onToggled();\\n    }\\n    if (isViewChanged) {\\n      this.#dispatchEvent();\\n    }\\n  }\\n\\n  open() {\\n    if (this.isOpen) {\\n      return;\\n    }\\n    this.isOpen = true;\\n    toggleExpandedBtn(this.toggleButton, true);\\n\\n    this.outerContainer.classList.add(\\\"sidebarMoving\\\", \\\"sidebarOpen\\\");\\n\\n    if (this.active === SidebarView.THUMBS) {\\n      this.onUpdateThumbnails();\\n    }\\n    this.onToggled();\\n    this.#dispatchEvent();\\n\\n    this.#hideUINotification();\\n  }\\n\\n  close(evt = null) {\\n    if (!this.isOpen) {\\n      return;\\n    }\\n    this.isOpen = false;\\n    toggleExpandedBtn(this.toggleButton, false);\\n\\n    this.outerContainer.classList.add(\\\"sidebarMoving\\\");\\n    this.outerContainer.classList.remove(\\\"sidebarOpen\\\");\\n\\n    this.onToggled();\\n    this.#dispatchEvent();\\n\\n    if (evt?.detail > 0) {\\n      \u002F\u002F Remove focus from the toggleButton if it's clicked (see issue 17361).\\n      this.toggleButton.blur();\\n    }\\n  }\\n\\n  toggle(evt = null) {\\n    if (this.isOpen) {\\n      this.close(evt);\\n    } else {\\n      this.open();\\n    }\\n  }\\n\\n  #dispatchEvent() {\\n    if (this.isInitialViewSet) {\\n      this.isInitialEventDispatched ||= true;\\n    }\\n\\n    this.eventBus.dispatch(\\\"sidebarviewchanged\\\", {\\n      source: this,\\n      view: this.visibleView,\\n    });\\n  }\\n\\n  #showUINotification() {\\n    this.toggleButton.setAttribute(\\n      \\\"data-l10n-id\\\",\\n      \\\"pdfjs-toggle-sidebar-notification-button\\\"\\n    );\\n\\n    if (!this.isOpen) {\\n      \u002F\u002F Only show the notification on the `toggleButton` if the sidebar is\\n      \u002F\u002F currently closed, to avoid unnecessarily bothering the user.\\n      this.toggleButton.classList.add(UI_NOTIFICATION_CLASS);\\n    }\\n  }\\n\\n  #hideUINotification(reset = false) {\\n    if (this.isOpen || reset) {\\n      \u002F\u002F Only hide the notification on the `toggleButton` if the sidebar is\\n      \u002F\u002F currently open, or when the current PDF document is being closed.\\n      this.toggleButton.classList.remove(UI_NOTIFICATION_CLASS);\\n    }\\n\\n    if (reset) {\\n      this.toggleButton.setAttribute(\\n        \\\"data-l10n-id\\\",\\n        \\\"pdfjs-toggle-sidebar-button\\\"\\n      );\\n    }\\n  }\\n\\n  #addEventListeners() {\\n    this.sidebarContainer.addEventListener(\\\"transitionend\\\", evt => {\\n      if (evt.target === this.sidebarContainer) {\\n        this.outerContainer.classList.remove(\\\"sidebarMoving\\\");\\n        \u002F\u002F Ensure that rendering is triggered after opening\u002Fclosing the sidebar.\\n        this.eventBus.dispatch(\\\"resize\\\", { source: this });\\n      }\\n    });\\n\\n    this.toggleButton.addEventListener(\\\"click\\\", evt => {\\n      this.toggle(evt);\\n    });\\n\\n    \u002F\u002F Buttons for switching views.\\n    this.thumbnailButton.addEventListener(\\\"click\\\", () => {\\n      this.switchView(SidebarView.THUMBS);\\n    });\\n\\n    this.outlineButton.addEventListener(\\\"click\\\", () => {\\n      this.switchView(SidebarView.OUTLINE);\\n    });\\n    this.outlineButton.addEventListener(\\\"dblclick\\\", () => {\\n      this.eventBus.dispatch(\\\"toggleoutlinetree\\\", { source: this });\\n    });\\n\\n    this.attachmentsButton.addEventListener(\\\"click\\\", () => {\\n      this.switchView(SidebarView.ATTACHMENTS);\\n    });\\n\\n    this.layersButton.addEventListener(\\\"click\\\", () => {\\n      this.switchView(SidebarView.LAYERS);\\n    });\\n    this.layersButton.addEventListener(\\\"dblclick\\\", () => {\\n      this.eventBus.dispatch(\\\"resetlayers\\\", { source: this });\\n    });\\n\\n    \u002F\u002F Buttons for view-specific options.\\n    this._currentOutlineItemButton.addEventListener(\\\"click\\\", () => {\\n      this.eventBus.dispatch(\\\"currentoutlineitem\\\", { source: this });\\n    });\\n\\n    \u002F\u002F Disable\u002Fenable views.\\n    const onTreeLoaded = (count, button, view) => {\\n      button.disabled = !count;\\n\\n      if (count) {\\n        this.#showUINotification();\\n      } else if (this.active === view) {\\n        \u002F\u002F If the `view` was opened by the user during document load,\\n        \u002F\u002F switch away from it if it turns out to be empty.\\n        this.switchView(SidebarView.THUMBS);\\n      }\\n    };\\n\\n    this.eventBus._on(\\\"outlineloaded\\\", evt => {\\n      onTreeLoaded(evt.outlineCount, this.outlineButton, SidebarView.OUTLINE);\\n\\n      evt.currentOutlineItemPromise.then(enabled => {\\n        if (!this.isInitialViewSet) {\\n          return;\\n        }\\n        this._currentOutlineItemButton.disabled = !enabled;\\n      });\\n    });\\n\\n    this.eventBus._on(\\\"attachmentsloaded\\\", evt => {\\n      onTreeLoaded(\\n        evt.attachmentsCount,\\n        this.attachmentsButton,\\n        SidebarView.ATTACHMENTS\\n      );\\n    });\\n\\n    this.eventBus._on(\\\"layersloaded\\\", evt => {\\n      onTreeLoaded(evt.layersCount, this.layersButton, SidebarView.LAYERS);\\n    });\\n\\n    \u002F\u002F Update the thumbnailViewer, if visible, when exiting presentation mode.\\n    this.eventBus._on(\\\"presentationmodechanged\\\", evt => {\\n      if (\\n        evt.state === PresentationModeState.NORMAL &&\\n        this.visibleView === SidebarView.THUMBS\\n      ) {\\n        this.onUpdateThumbnails();\\n      }\\n    });\\n\\n    \u002F\u002F Handle resizing of the sidebar.\\n    this.resizer.addEventListener(\\\"mousedown\\\", evt => {\\n      if (evt.button !== 0) {\\n        return;\\n      }\\n      \u002F\u002F Disable the `transition-duration` rules when sidebar resizing begins,\\n      \u002F\u002F in order to improve responsiveness and to avoid visual glitches.\\n      this.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS);\\n\\n      window.addEventListener(\\\"mousemove\\\", this.#mouseMoveBound);\\n      window.addEventListener(\\\"mouseup\\\", this.#mouseUpBound);\\n    });\\n\\n    this.eventBus._on(\\\"resize\\\", evt => {\\n      \u002F\u002F When the *entire* viewer is resized, such that it becomes narrower,\\n      \u002F\u002F ensure that the sidebar doesn't end up being too wide.\\n      if (evt.source !== window) {\\n        return;\\n      }\\n      \u002F\u002F Always reset the cached width when the viewer is resized.\\n      this.#outerContainerWidth = null;\\n\\n      if (!this.#width) {\\n        \u002F\u002F The sidebar hasn't been resized, hence no need to adjust its width.\\n        return;\\n      }\\n      \u002F\u002F NOTE: If the sidebar is closed, we don't need to worry about\\n      \u002F\u002F       visual glitches nor ensure that rendering is triggered.\\n      if (!this.isOpen) {\\n        this.#updateWidth(this.#width);\\n        return;\\n      }\\n      this.outerContainer.classList.add(SIDEBAR_RESIZING_CLASS);\\n      const updated = this.#updateWidth(this.#width);\\n\\n      Promise.resolve().then(() => {\\n        this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS);\\n        \u002F\u002F Trigger rendering if the sidebar width changed, to avoid\\n        \u002F\u002F depending on the order in which 'resize' events are handled.\\n        if (updated) {\\n          this.eventBus.dispatch(\\\"resize\\\", { source: this });\\n        }\\n      });\\n    });\\n  }\\n\\n  \u002F**\\n   * @type {number}\\n   *\u002F\\n  get outerContainerWidth() {\\n    return (this.#outerContainerWidth ||= this.outerContainer.clientWidth);\\n  }\\n\\n  \u002F**\\n   * returns {boolean} Indicating if the sidebar width was updated.\\n   *\u002F\\n  #updateWidth(width = 0) {\\n    \u002F\u002F Prevent the sidebar from becoming too narrow, or from occupying more\\n    \u002F\u002F than half of the available viewer width.\\n    const maxWidth = Math.floor(this.outerContainerWidth \u002F 2);\\n    if (width > maxWidth) {\\n      width = maxWidth;\\n    }\\n    if (width \u003C SIDEBAR_MIN_WIDTH) {\\n      width = SIDEBAR_MIN_WIDTH;\\n    }\\n    \u002F\u002F Only update the UI when the sidebar width did in fact change.\\n    if (width === this.#width) {\\n      return false;\\n    }\\n    this.#width = width;\\n\\n    docStyle.setProperty(SIDEBAR_WIDTH_VAR, `${width}px`);\\n    return true;\\n  }\\n\\n  #mouseMove(evt) {\\n    let width = evt.clientX;\\n    \u002F\u002F For sidebar resizing to work correctly in RTL mode, invert the width.\\n    if (this.#isRTL) {\\n      width = this.outerContainerWidth - width;\\n    }\\n    this.#updateWidth(width);\\n  }\\n\\n  #mouseUp(evt) {\\n    \u002F\u002F Re-enable the `transition-duration` rules when sidebar resizing ends...\\n    this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS);\\n    \u002F\u002F ... and ensure that rendering will always be triggered.\\n    this.eventBus.dispatch(\\\"resize\\\", { source: this });\\n\\n    window.removeEventListener(\\\"mousemove\\\", this.#mouseMoveBound);\\n    window.removeEventListener(\\\"mouseup\\\", this.#mouseUpBound);\\n  }\\n}\\n\\nexport { PDFSidebar };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Foptional_content_config\\\").OptionalContentConfig} OptionalContentConfig *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fdisplay_utils\\\").PageViewport} PageViewport *\u002F\\n\u002F** @typedef {import(\\\".\u002Fevent_utils\\\").EventBus} EventBus *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IPDFLinkService} IPDFLinkService *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IRenderableView} IRenderableView *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fpdf_rendering_queue\\\").PDFRenderingQueue} PDFRenderingQueue *\u002F\\n\\nimport { OutputScale, RenderingStates } from \\\".\u002Fui_utils.js\\\";\\nimport { RenderingCancelledException } from \\\"pdfjs-lib\\\";\\n\\nconst DRAW_UPSCALE_FACTOR = 2; \u002F\u002F See comment in `PDFThumbnailView.draw` below.\\nconst MAX_NUM_SCALING_STEPS = 3;\\nconst THUMBNAIL_WIDTH = 98; \u002F\u002F px\\n\\n\u002F**\\n * @typedef {Object} PDFThumbnailViewOptions\\n * @property {HTMLDivElement} container - The viewer element.\\n * @property {EventBus} eventBus - The application event bus.\\n * @property {number} id - The thumbnail's unique ID (normally its number).\\n * @property {PageViewport} defaultViewport - The page viewport.\\n * @property {Promise\u003COptionalContentConfig>} [optionalContentConfigPromise] -\\n *   A promise that is resolved with an {@link OptionalContentConfig} instance.\\n *   The default value is `null`.\\n * @property {IPDFLinkService} linkService - The navigation\u002Flinking service.\\n * @property {PDFRenderingQueue} renderingQueue - The rendering queue object.\\n * @property {Object} [pageColors] - Overwrites background and foreground colors\\n *   with user defined ones in order to improve readability in high contrast\\n *   mode.\\n *\u002F\\n\\nclass TempImageFactory {\\n  static #tempCanvas = null;\\n\\n  static getCanvas(width, height) {\\n    const tempCanvas = (this.#tempCanvas ||= document.createElement(\\\"canvas\\\"));\\n    tempCanvas.width = width;\\n    tempCanvas.height = height;\\n\\n    \u002F\u002F Since this is a temporary canvas, we need to fill it with a white\\n    \u002F\u002F background ourselves. `#getPageDrawContext` uses CSS rules for this.\\n    const ctx = tempCanvas.getContext(\\\"2d\\\", { alpha: false });\\n    ctx.save();\\n    ctx.fillStyle = \\\"rgb(255, 255, 255)\\\";\\n    ctx.fillRect(0, 0, width, height);\\n    ctx.restore();\\n    return [tempCanvas, tempCanvas.getContext(\\\"2d\\\")];\\n  }\\n\\n  static destroyCanvas() {\\n    const tempCanvas = this.#tempCanvas;\\n    if (tempCanvas) {\\n      \u002F\u002F Zeroing the width and height causes Firefox to release graphics\\n      \u002F\u002F resources immediately, which can greatly reduce memory consumption.\\n      tempCanvas.width = 0;\\n      tempCanvas.height = 0;\\n    }\\n    this.#tempCanvas = null;\\n  }\\n}\\n\\n\u002F**\\n * @implements {IRenderableView}\\n *\u002F\\nclass PDFThumbnailView {\\n  \u002F**\\n   * @param {PDFThumbnailViewOptions} options\\n   *\u002F\\n  constructor({\\n    container,\\n    eventBus,\\n    id,\\n    defaultViewport,\\n    optionalContentConfigPromise,\\n    linkService,\\n    renderingQueue,\\n    pageColors,\\n  }) {\\n    this.id = id;\\n    this.renderingId = \\\"thumbnail\\\" + id;\\n    this.pageLabel = null;\\n\\n    this.pdfPage = null;\\n    this.rotation = 0;\\n    this.viewport = defaultViewport;\\n    this.pdfPageRotate = defaultViewport.rotation;\\n    this._optionalContentConfigPromise = optionalContentConfigPromise || null;\\n    this.pageColors = pageColors || null;\\n\\n    this.eventBus = eventBus;\\n    this.linkService = linkService;\\n    this.renderingQueue = renderingQueue;\\n\\n    this.renderTask = null;\\n    this.renderingState = RenderingStates.INITIAL;\\n    this.resume = null;\\n\\n    const anchor = document.createElement(\\\"a\\\");\\n    anchor.href = linkService.getAnchorUrl(\\\"#page=\\\" + id);\\n    anchor.setAttribute(\\\"data-l10n-id\\\", \\\"pdfjs-thumb-page-title\\\");\\n    anchor.setAttribute(\\\"data-l10n-args\\\", this.#pageL10nArgs);\\n    anchor.onclick = function () {\\n      linkService.goToPage(id);\\n      return false;\\n    };\\n    this.anchor = anchor;\\n\\n    const div = document.createElement(\\\"div\\\");\\n    div.className = \\\"thumbnail\\\";\\n    div.setAttribute(\\\"data-page-number\\\", this.id);\\n    this.div = div;\\n    this.#updateDims();\\n\\n    const img = document.createElement(\\\"div\\\");\\n    img.className = \\\"thumbnailImage\\\";\\n    this._placeholderImg = img;\\n\\n    div.append(img);\\n    anchor.append(div);\\n    container.append(anchor);\\n  }\\n\\n  #updateDims() {\\n    const { width, height } = this.viewport;\\n    const ratio = width \u002F height;\\n\\n    this.canvasWidth = THUMBNAIL_WIDTH;\\n    this.canvasHeight = (this.canvasWidth \u002F ratio) | 0;\\n    this.scale = this.canvasWidth \u002F width;\\n\\n    const { style } = this.div;\\n    style.setProperty(\\\"--thumbnail-width\\\", `${this.canvasWidth}px`);\\n    style.setProperty(\\\"--thumbnail-height\\\", `${this.canvasHeight}px`);\\n  }\\n\\n  setPdfPage(pdfPage) {\\n    this.pdfPage = pdfPage;\\n    this.pdfPageRotate = pdfPage.rotate;\\n    const totalRotation = (this.rotation + this.pdfPageRotate) % 360;\\n    this.viewport = pdfPage.getViewport({ scale: 1, rotation: totalRotation });\\n    this.reset();\\n  }\\n\\n  reset() {\\n    this.cancelRendering();\\n    this.renderingState = RenderingStates.INITIAL;\\n\\n    this.div.removeAttribute(\\\"data-loaded\\\");\\n    this.image?.replaceWith(this._placeholderImg);\\n    this.#updateDims();\\n\\n    if (this.image) {\\n      this.image.removeAttribute(\\\"src\\\");\\n      delete this.image;\\n    }\\n  }\\n\\n  update({ rotation = null }) {\\n    if (typeof rotation === \\\"number\\\") {\\n      this.rotation = rotation; \u002F\u002F The rotation may be zero.\\n    }\\n    const totalRotation = (this.rotation + this.pdfPageRotate) % 360;\\n    this.viewport = this.viewport.clone({\\n      scale: 1,\\n      rotation: totalRotation,\\n    });\\n    this.reset();\\n  }\\n\\n  \u002F**\\n   * PLEASE NOTE: Most likely you want to use the `this.reset()` method,\\n   *              rather than calling this one directly.\\n   *\u002F\\n  cancelRendering() {\\n    if (this.renderTask) {\\n      this.renderTask.cancel();\\n      this.renderTask = null;\\n    }\\n    this.resume = null;\\n  }\\n\\n  #getPageDrawContext(upscaleFactor = 1) {\\n    \u002F\u002F Keep the no-thumbnail outline visible, i.e. `data-loaded === false`,\\n    \u002F\u002F until rendering\u002Fimage conversion is complete, to avoid display issues.\\n    const canvas = document.createElement(\\\"canvas\\\");\\n    const ctx = canvas.getContext(\\\"2d\\\", { alpha: false });\\n    const outputScale = new OutputScale();\\n\\n    canvas.width = (upscaleFactor * this.canvasWidth * outputScale.sx) | 0;\\n    canvas.height = (upscaleFactor * this.canvasHeight * outputScale.sy) | 0;\\n\\n    const transform = outputScale.scaled\\n      ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0]\\n      : null;\\n\\n    return { ctx, canvas, transform };\\n  }\\n\\n  #convertCanvasToImage(canvas) {\\n    if (this.renderingState !== RenderingStates.FINISHED) {\\n      throw new Error(\\\"#convertCanvasToImage: Rendering has not finished.\\\");\\n    }\\n    const reducedCanvas = this.#reduceImage(canvas);\\n\\n    const image = document.createElement(\\\"img\\\");\\n    image.className = \\\"thumbnailImage\\\";\\n    image.setAttribute(\\\"data-l10n-id\\\", \\\"pdfjs-thumb-page-canvas\\\");\\n    image.setAttribute(\\\"data-l10n-args\\\", this.#pageL10nArgs);\\n    image.src = reducedCanvas.toDataURL();\\n    this.image = image;\\n\\n    this.div.setAttribute(\\\"data-loaded\\\", true);\\n    this._placeholderImg.replaceWith(image);\\n\\n    \u002F\u002F Zeroing the width and height causes Firefox to release graphics\\n    \u002F\u002F resources immediately, which can greatly reduce memory consumption.\\n    reducedCanvas.width = 0;\\n    reducedCanvas.height = 0;\\n  }\\n\\n  async #finishRenderTask(renderTask, canvas, error = null) {\\n    \u002F\u002F The renderTask may have been replaced by a new one, so only remove\\n    \u002F\u002F the reference to the renderTask if it matches the one that is\\n    \u002F\u002F triggering this callback.\\n    if (renderTask === this.renderTask) {\\n      this.renderTask = null;\\n    }\\n\\n    if (error instanceof RenderingCancelledException) {\\n      return;\\n    }\\n    this.renderingState = RenderingStates.FINISHED;\\n    this.#convertCanvasToImage(canvas);\\n\\n    if (error) {\\n      throw error;\\n    }\\n  }\\n\\n  async draw() {\\n    if (this.renderingState !== RenderingStates.INITIAL) {\\n      console.error(\\\"Must be in new state before drawing\\\");\\n      return undefined;\\n    }\\n    const { pdfPage } = this;\\n\\n    if (!pdfPage) {\\n      this.renderingState = RenderingStates.FINISHED;\\n      throw new Error(\\\"pdfPage is not loaded\\\");\\n    }\\n\\n    this.renderingState = RenderingStates.RUNNING;\\n\\n    \u002F\u002F Render the thumbnail at a larger size and downsize the canvas (similar\\n    \u002F\u002F to `setImage`), to improve consistency between thumbnails created by\\n    \u002F\u002F the `draw` and `setImage` methods (fixes issue 8233).\\n    \u002F\u002F NOTE: To primarily avoid increasing memory usage too much, but also to\\n    \u002F\u002F   reduce downsizing overhead, we purposely limit the up-scaling factor.\\n    const { ctx, canvas, transform } =\\n      this.#getPageDrawContext(DRAW_UPSCALE_FACTOR);\\n    const drawViewport = this.viewport.clone({\\n      scale: DRAW_UPSCALE_FACTOR * this.scale,\\n    });\\n    const renderContinueCallback = cont => {\\n      if (!this.renderingQueue.isHighestPriority(this)) {\\n        this.renderingState = RenderingStates.PAUSED;\\n        this.resume = () => {\\n          this.renderingState = RenderingStates.RUNNING;\\n          cont();\\n        };\\n        return;\\n      }\\n      cont();\\n    };\\n\\n    const renderContext = {\\n      canvasContext: ctx,\\n      transform,\\n      viewport: drawViewport,\\n      optionalContentConfigPromise: this._optionalContentConfigPromise,\\n      pageColors: this.pageColors,\\n    };\\n    const renderTask = (this.renderTask = pdfPage.render(renderContext));\\n    renderTask.onContinue = renderContinueCallback;\\n\\n    const resultPromise = renderTask.promise.then(\\n      () => this.#finishRenderTask(renderTask, canvas),\\n      error => this.#finishRenderTask(renderTask, canvas, error)\\n    );\\n    resultPromise.finally(() => {\\n      \u002F\u002F Zeroing the width and height causes Firefox to release graphics\\n      \u002F\u002F resources immediately, which can greatly reduce memory consumption.\\n      canvas.width = 0;\\n      canvas.height = 0;\\n\\n      this.eventBus.dispatch(\\\"thumbnailrendered\\\", {\\n        source: this,\\n        pageNumber: this.id,\\n        pdfPage: this.pdfPage,\\n      });\\n    });\\n\\n    return resultPromise;\\n  }\\n\\n  setImage(pageView) {\\n    if (this.renderingState !== RenderingStates.INITIAL) {\\n      return;\\n    }\\n    const { thumbnailCanvas: canvas, pdfPage, scale } = pageView;\\n    if (!canvas) {\\n      return;\\n    }\\n    if (!this.pdfPage) {\\n      this.setPdfPage(pdfPage);\\n    }\\n    if (scale \u003C this.scale) {\\n      \u002F\u002F Avoid upscaling the image, since that makes the thumbnail look blurry.\\n      return;\\n    }\\n    this.renderingState = RenderingStates.FINISHED;\\n    this.#convertCanvasToImage(canvas);\\n  }\\n\\n  #reduceImage(img) {\\n    const { ctx, canvas } = this.#getPageDrawContext();\\n\\n    if (img.width \u003C= 2 * canvas.width) {\\n      ctx.drawImage(\\n        img,\\n        0,\\n        0,\\n        img.width,\\n        img.height,\\n        0,\\n        0,\\n        canvas.width,\\n        canvas.height\\n      );\\n      return canvas;\\n    }\\n    \u002F\u002F drawImage does an awful job of rescaling the image, doing it gradually.\\n    let reducedWidth = canvas.width \u003C\u003C MAX_NUM_SCALING_STEPS;\\n    let reducedHeight = canvas.height \u003C\u003C MAX_NUM_SCALING_STEPS;\\n    const [reducedImage, reducedImageCtx] = TempImageFactory.getCanvas(\\n      reducedWidth,\\n      reducedHeight\\n    );\\n\\n    while (reducedWidth > img.width || reducedHeight > img.height) {\\n      reducedWidth >>= 1;\\n      reducedHeight >>= 1;\\n    }\\n    reducedImageCtx.drawImage(\\n      img,\\n      0,\\n      0,\\n      img.width,\\n      img.height,\\n      0,\\n      0,\\n      reducedWidth,\\n      reducedHeight\\n    );\\n    while (reducedWidth > 2 * canvas.width) {\\n      reducedImageCtx.drawImage(\\n        reducedImage,\\n        0,\\n        0,\\n        reducedWidth,\\n        reducedHeight,\\n        0,\\n        0,\\n        reducedWidth >> 1,\\n        reducedHeight >> 1\\n      );\\n      reducedWidth >>= 1;\\n      reducedHeight >>= 1;\\n    }\\n    ctx.drawImage(\\n      reducedImage,\\n      0,\\n      0,\\n      reducedWidth,\\n      reducedHeight,\\n      0,\\n      0,\\n      canvas.width,\\n      canvas.height\\n    );\\n    return canvas;\\n  }\\n\\n  get #pageL10nArgs() {\\n    return JSON.stringify({ page: this.pageLabel ?? this.id });\\n  }\\n\\n  \u002F**\\n   * @param {string|null} label\\n   *\u002F\\n  setPageLabel(label) {\\n    this.pageLabel = typeof label === \\\"string\\\" ? label : null;\\n\\n    this.anchor.setAttribute(\\\"data-l10n-args\\\", this.#pageL10nArgs);\\n\\n    if (this.renderingState !== RenderingStates.FINISHED) {\\n      return;\\n    }\\n    this.image?.setAttribute(\\\"data-l10n-args\\\", this.#pageL10nArgs);\\n  }\\n}\\n\\nexport { PDFThumbnailView, TempImageFactory };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fapi\\\").PDFDocumentProxy} PDFDocumentProxy *\u002F\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fapi\\\").PDFPageProxy} PDFPageProxy *\u002F\\n\u002F** @typedef {import(\\\".\u002Fevent_utils\\\").EventBus} EventBus *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IPDFLinkService} IPDFLinkService *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fpdf_rendering_queue\\\").PDFRenderingQueue} PDFRenderingQueue *\u002F\\n\\nimport {\\n  getVisibleElements,\\n  isValidRotation,\\n  RenderingStates,\\n  scrollIntoView,\\n  watchScroll,\\n} from \\\".\u002Fui_utils.js\\\";\\nimport { PDFThumbnailView, TempImageFactory } from \\\".\u002Fpdf_thumbnail_view.js\\\";\\n\\nconst THUMBNAIL_SCROLL_MARGIN = -19;\\nconst THUMBNAIL_SELECTED_CLASS = \\\"selected\\\";\\n\\n\u002F**\\n * @typedef {Object} PDFThumbnailViewerOptions\\n * @property {HTMLDivElement} container - The container for the thumbnail\\n *   elements.\\n * @property {EventBus} eventBus - The application event bus.\\n * @property {IPDFLinkService} linkService - The navigation\u002Flinking service.\\n * @property {PDFRenderingQueue} renderingQueue - The rendering queue object.\\n * @property {Object} [pageColors] - Overwrites background and foreground colors\\n *   with user defined ones in order to improve readability in high contrast\\n *   mode.\\n *\u002F\\n\\n\u002F**\\n * Viewer control to display thumbnails for pages in a PDF document.\\n *\u002F\\nclass PDFThumbnailViewer {\\n  \u002F**\\n   * @param {PDFThumbnailViewerOptions} options\\n   *\u002F\\n  constructor({\\n    container,\\n    eventBus,\\n    linkService,\\n    renderingQueue,\\n    pageColors,\\n  }) {\\n    this.container = container;\\n    this.eventBus = eventBus;\\n    this.linkService = linkService;\\n    this.renderingQueue = renderingQueue;\\n    this.pageColors = pageColors || null;\\n\\n    this.scroll = watchScroll(this.container, this.#scrollUpdated.bind(this));\\n    this.#resetView();\\n  }\\n\\n  #scrollUpdated() {\\n    this.renderingQueue.renderHighestPriority();\\n  }\\n\\n  getThumbnail(index) {\\n    return this._thumbnails[index];\\n  }\\n\\n  #getVisibleThumbs() {\\n    return getVisibleElements({\\n      scrollEl: this.container,\\n      views: this._thumbnails,\\n    });\\n  }\\n\\n  scrollThumbnailIntoView(pageNumber) {\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    const thumbnailView = this._thumbnails[pageNumber - 1];\\n\\n    if (!thumbnailView) {\\n      console.error('scrollThumbnailIntoView: Invalid \\\"pageNumber\\\" parameter.');\\n      return;\\n    }\\n\\n    if (pageNumber !== this._currentPageNumber) {\\n      const prevThumbnailView = this._thumbnails[this._currentPageNumber - 1];\\n      \u002F\u002F Remove the highlight from the previous thumbnail...\\n      prevThumbnailView.div.classList.remove(THUMBNAIL_SELECTED_CLASS);\\n      \u002F\u002F ... and add the highlight to the new thumbnail.\\n      thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS);\\n    }\\n    const { first, last, views } = this.#getVisibleThumbs();\\n\\n    \u002F\u002F If the thumbnail isn't currently visible, scroll it into view.\\n    if (views.length > 0) {\\n      let shouldScroll = false;\\n      if (pageNumber \u003C= first.id || pageNumber >= last.id) {\\n        shouldScroll = true;\\n      } else {\\n        for (const { id, percent } of views) {\\n          if (id !== pageNumber) {\\n            continue;\\n          }\\n          shouldScroll = percent \u003C 100;\\n          break;\\n        }\\n      }\\n      if (shouldScroll) {\\n        scrollIntoView(thumbnailView.div, { top: THUMBNAIL_SCROLL_MARGIN });\\n      }\\n    }\\n\\n    this._currentPageNumber = pageNumber;\\n  }\\n\\n  get pagesRotation() {\\n    return this._pagesRotation;\\n  }\\n\\n  set pagesRotation(rotation) {\\n    if (!isValidRotation(rotation)) {\\n      throw new Error(\\\"Invalid thumbnails rotation angle.\\\");\\n    }\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    if (this._pagesRotation === rotation) {\\n      return; \u002F\u002F The rotation didn't change.\\n    }\\n    this._pagesRotation = rotation;\\n\\n    const updateArgs = { rotation };\\n    for (const thumbnail of this._thumbnails) {\\n      thumbnail.update(updateArgs);\\n    }\\n  }\\n\\n  cleanup() {\\n    for (const thumbnail of this._thumbnails) {\\n      if (thumbnail.renderingState !== RenderingStates.FINISHED) {\\n        thumbnail.reset();\\n      }\\n    }\\n    TempImageFactory.destroyCanvas();\\n  }\\n\\n  #resetView() {\\n    this._thumbnails = [];\\n    this._currentPageNumber = 1;\\n    this._pageLabels = null;\\n    this._pagesRotation = 0;\\n\\n    \u002F\u002F Remove the thumbnails from the DOM.\\n    this.container.textContent = \\\"\\\";\\n  }\\n\\n  \u002F**\\n   * @param {PDFDocumentProxy} pdfDocument\\n   *\u002F\\n  setDocument(pdfDocument) {\\n    if (this.pdfDocument) {\\n      this.#cancelRendering();\\n      this.#resetView();\\n    }\\n\\n    this.pdfDocument = pdfDocument;\\n    if (!pdfDocument) {\\n      return;\\n    }\\n    const firstPagePromise = pdfDocument.getPage(1);\\n    const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig({\\n      intent: \\\"display\\\",\\n    });\\n\\n    firstPagePromise\\n      .then(firstPdfPage => {\\n        const pagesCount = pdfDocument.numPages;\\n        const viewport = firstPdfPage.getViewport({ scale: 1 });\\n\\n        for (let pageNum = 1; pageNum \u003C= pagesCount; ++pageNum) {\\n          const thumbnail = new PDFThumbnailView({\\n            container: this.container,\\n            eventBus: this.eventBus,\\n            id: pageNum,\\n            defaultViewport: viewport.clone(),\\n            optionalContentConfigPromise,\\n            linkService: this.linkService,\\n            renderingQueue: this.renderingQueue,\\n            pageColors: this.pageColors,\\n          });\\n          this._thumbnails.push(thumbnail);\\n        }\\n        \u002F\u002F Set the first `pdfPage` immediately, since it's already loaded,\\n        \u002F\u002F rather than having to repeat the `PDFDocumentProxy.getPage` call in\\n        \u002F\u002F the `this.#ensurePdfPageLoaded` method before rendering can start.\\n        this._thumbnails[0]?.setPdfPage(firstPdfPage);\\n\\n        \u002F\u002F Ensure that the current thumbnail is always highlighted on load.\\n        const thumbnailView = this._thumbnails[this._currentPageNumber - 1];\\n        thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS);\\n      })\\n      .catch(reason => {\\n        console.error(\\\"Unable to initialize thumbnail viewer\\\", reason);\\n      });\\n  }\\n\\n  #cancelRendering() {\\n    for (const thumbnail of this._thumbnails) {\\n      thumbnail.cancelRendering();\\n    }\\n  }\\n\\n  \u002F**\\n   * @param {Array|null} labels\\n   *\u002F\\n  setPageLabels(labels) {\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    if (!labels) {\\n      this._pageLabels = null;\\n    } else if (\\n      !(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)\\n    ) {\\n      this._pageLabels = null;\\n      console.error(\\\"PDFThumbnailViewer_setPageLabels: Invalid page labels.\\\");\\n    } else {\\n      this._pageLabels = labels;\\n    }\\n    \u002F\u002F Update all the `PDFThumbnailView` instances.\\n    for (let i = 0, ii = this._thumbnails.length; i \u003C ii; i++) {\\n      this._thumbnails[i].setPageLabel(this._pageLabels?.[i] ?? null);\\n    }\\n  }\\n\\n  \u002F**\\n   * @param {PDFThumbnailView} thumbView\\n   * @returns {Promise\u003CPDFPageProxy | null>}\\n   *\u002F\\n  async #ensurePdfPageLoaded(thumbView) {\\n    if (thumbView.pdfPage) {\\n      return thumbView.pdfPage;\\n    }\\n    try {\\n      const pdfPage = await this.pdfDocument.getPage(thumbView.id);\\n      if (!thumbView.pdfPage) {\\n        thumbView.setPdfPage(pdfPage);\\n      }\\n      return pdfPage;\\n    } catch (reason) {\\n      console.error(\\\"Unable to get page for thumb view\\\", reason);\\n      return null; \u002F\u002F Page error -- there is nothing that can be done.\\n    }\\n  }\\n\\n  #getScrollAhead(visible) {\\n    if (visible.first?.id === 1) {\\n      return true;\\n    } else if (visible.last?.id === this._thumbnails.length) {\\n      return false;\\n    }\\n    return this.scroll.down;\\n  }\\n\\n  forceRendering() {\\n    const visibleThumbs = this.#getVisibleThumbs();\\n    const scrollAhead = this.#getScrollAhead(visibleThumbs);\\n    const thumbView = this.renderingQueue.getHighestPriority(\\n      visibleThumbs,\\n      this._thumbnails,\\n      scrollAhead\\n    );\\n    if (thumbView) {\\n      this.#ensurePdfPageLoaded(thumbView).then(() => {\\n        this.renderingQueue.renderView(thumbView);\\n      });\\n      return true;\\n    }\\n    return false;\\n  }\\n}\\n\\nexport { PDFThumbnailViewer };\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fapi\\\").PDFPageProxy} PDFPageProxy *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fdisplay_utils\\\").PageViewport} PageViewport *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Feditor\u002Ftools.js\\\").AnnotationEditorUIManager} AnnotationEditorUIManager *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Ftext_accessibility.js\\\").TextAccessibilityManager} TextAccessibilityManager *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IL10n} IL10n *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fannotation_layer.js\\\").AnnotationLayer} AnnotationLayer *\u002F\\n\\nimport { AnnotationEditorLayer } from \\\"pdfjs-lib\\\";\\nimport { GenericL10n } from \\\"web-null_l10n\\\";\\n\\n\u002F**\\n * @typedef {Object} AnnotationEditorLayerBuilderOptions\\n * @property {AnnotationEditorUIManager} [uiManager]\\n * @property {PDFPageProxy} pdfPage\\n * @property {IL10n} [l10n]\\n * @property {TextAccessibilityManager} [accessibilityManager]\\n * @property {AnnotationLayer} [annotationLayer]\\n * @property {TextLayer} [textLayer]\\n * @property {DrawLayer} [drawLayer]\\n * @property {function} [onAppend]\\n *\u002F\\n\\nclass AnnotationEditorLayerBuilder {\\n  #annotationLayer = null;\\n\\n  #drawLayer = null;\\n\\n  #onAppend = null;\\n\\n  #textLayer = null;\\n\\n  #uiManager;\\n\\n  \u002F**\\n   * @param {AnnotationEditorLayerBuilderOptions} options\\n   *\u002F\\n  constructor(options) {\\n    this.pdfPage = options.pdfPage;\\n    this.accessibilityManager = options.accessibilityManager;\\n    this.l10n = options.l10n;\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      this.l10n ||= new GenericL10n();\\n    }\\n    this.annotationEditorLayer = null;\\n    this.div = null;\\n    this._cancelled = false;\\n    this.#uiManager = options.uiManager;\\n    this.#annotationLayer = options.annotationLayer || null;\\n    this.#textLayer = options.textLayer || null;\\n    this.#drawLayer = options.drawLayer || null;\\n    this.#onAppend = options.onAppend || null;\\n  }\\n\\n  \u002F**\\n   * @param {PageViewport} viewport\\n   * @param {string} intent (default value is 'display')\\n   *\u002F\\n  async render(viewport, intent = \\\"display\\\") {\\n    if (intent !== \\\"display\\\") {\\n      return;\\n    }\\n\\n    if (this._cancelled) {\\n      return;\\n    }\\n\\n    const clonedViewport = viewport.clone({ dontFlip: true });\\n    if (this.div) {\\n      this.annotationEditorLayer.update({ viewport: clonedViewport });\\n      this.show();\\n      return;\\n    }\\n\\n    \u002F\u002F Create an AnnotationEditor layer div\\n    const div = (this.div = document.createElement(\\\"div\\\"));\\n    div.className = \\\"annotationEditorLayer\\\";\\n    div.hidden = true;\\n    div.dir = this.#uiManager.direction;\\n    this.#onAppend?.(div);\\n\\n    this.annotationEditorLayer = new AnnotationEditorLayer({\\n      uiManager: this.#uiManager,\\n      div,\\n      accessibilityManager: this.accessibilityManager,\\n      pageIndex: this.pdfPage.pageNumber - 1,\\n      l10n: this.l10n,\\n      viewport: clonedViewport,\\n      annotationLayer: this.#annotationLayer,\\n      textLayer: this.#textLayer,\\n      drawLayer: this.#drawLayer,\\n    });\\n\\n    const parameters = {\\n      viewport: clonedViewport,\\n      div,\\n      annotations: null,\\n      intent,\\n    };\\n\\n    this.annotationEditorLayer.render(parameters);\\n    this.show();\\n  }\\n\\n  cancel() {\\n    this._cancelled = true;\\n\\n    if (!this.div) {\\n      return;\\n    }\\n    this.annotationEditorLayer.destroy();\\n  }\\n\\n  hide() {\\n    if (!this.div) {\\n      return;\\n    }\\n    this.div.hidden = true;\\n  }\\n\\n  show() {\\n    if (!this.div || this.annotationEditorLayer.isInvisible) {\\n      return;\\n    }\\n    this.div.hidden = false;\\n  }\\n}\\n\\nexport { AnnotationEditorLayerBuilder };\\n\",\"\u002F* Copyright 2014 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fapi\\\").PDFPageProxy} PDFPageProxy *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fdisplay_utils\\\").PageViewport} PageViewport *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fannotation_storage\\\").AnnotationStorage} AnnotationStorage *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IDownloadManager} IDownloadManager *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IPDFLinkService} IPDFLinkService *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Ftext_accessibility.js\\\").TextAccessibilityManager} TextAccessibilityManager *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Feditor\u002Ftools.js\\\").AnnotationEditorUIManager} AnnotationEditorUIManager *\u002F\\n\\nimport { AnnotationLayer } from \\\"pdfjs-lib\\\";\\nimport { PresentationModeState } from \\\".\u002Fui_utils.js\\\";\\n\\n\u002F**\\n * @typedef {Object} AnnotationLayerBuilderOptions\\n * @property {PDFPageProxy} pdfPage\\n * @property {AnnotationStorage} [annotationStorage]\\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\\n *   for annotation icons. Include trailing slash.\\n * @property {boolean} renderForms\\n * @property {IPDFLinkService} linkService\\n * @property {IDownloadManager} [downloadManager]\\n * @property {boolean} [enableScripting]\\n * @property {Promise\u003Cboolean>} [hasJSActionsPromise]\\n * @property {Promise\u003CObject\u003Cstring, Array\u003CObject>> | null>}\\n *   [fieldObjectsPromise]\\n * @property {Map\u003Cstring, HTMLCanvasElement>} [annotationCanvasMap]\\n * @property {TextAccessibilityManager} [accessibilityManager]\\n * @property {AnnotationEditorUIManager} [annotationEditorUIManager]\\n * @property {function} [onAppend]\\n *\u002F\\n\\nclass AnnotationLayerBuilder {\\n  #onAppend = null;\\n\\n  #eventAbortController = null;\\n\\n  \u002F**\\n   * @param {AnnotationLayerBuilderOptions} options\\n   *\u002F\\n  constructor({\\n    pdfPage,\\n    linkService,\\n    downloadManager,\\n    annotationStorage = null,\\n    imageResourcesPath = \\\"\\\",\\n    renderForms = true,\\n    enableScripting = false,\\n    hasJSActionsPromise = null,\\n    fieldObjectsPromise = null,\\n    annotationCanvasMap = null,\\n    accessibilityManager = null,\\n    annotationEditorUIManager = null,\\n    onAppend = null,\\n  }) {\\n    this.pdfPage = pdfPage;\\n    this.linkService = linkService;\\n    this.downloadManager = downloadManager;\\n    this.imageResourcesPath = imageResourcesPath;\\n    this.renderForms = renderForms;\\n    this.annotationStorage = annotationStorage;\\n    this.enableScripting = enableScripting;\\n    this._hasJSActionsPromise = hasJSActionsPromise || Promise.resolve(false);\\n    this._fieldObjectsPromise = fieldObjectsPromise || Promise.resolve(null);\\n    this._annotationCanvasMap = annotationCanvasMap;\\n    this._accessibilityManager = accessibilityManager;\\n    this._annotationEditorUIManager = annotationEditorUIManager;\\n    this.#onAppend = onAppend;\\n\\n    this.annotationLayer = null;\\n    this.div = null;\\n    this._cancelled = false;\\n    this._eventBus = linkService.eventBus;\\n  }\\n\\n  \u002F**\\n   * @param {PageViewport} viewport\\n   * @param {string} intent (default value is 'display')\\n   * @returns {Promise\u003Cvoid>} A promise that is resolved when rendering of the\\n   *   annotations is complete.\\n   *\u002F\\n  async render(viewport, intent = \\\"display\\\") {\\n    if (this.div) {\\n      if (this._cancelled || !this.annotationLayer) {\\n        return;\\n      }\\n      \u002F\u002F If an annotationLayer already exists, refresh its children's\\n      \u002F\u002F transformation matrices.\\n      this.annotationLayer.update({\\n        viewport: viewport.clone({ dontFlip: true }),\\n      });\\n      return;\\n    }\\n\\n    const [annotations, hasJSActions, fieldObjects] = await Promise.all([\\n      this.pdfPage.getAnnotations({ intent }),\\n      this._hasJSActionsPromise,\\n      this._fieldObjectsPromise,\\n    ]);\\n    if (this._cancelled) {\\n      return;\\n    }\\n\\n    \u002F\u002F Create an annotation layer div and render the annotations\\n    \u002F\u002F if there is at least one annotation.\\n    const div = (this.div = document.createElement(\\\"div\\\"));\\n    div.className = \\\"annotationLayer\\\";\\n    this.#onAppend?.(div);\\n\\n    if (annotations.length === 0) {\\n      this.hide();\\n      return;\\n    }\\n\\n    this.annotationLayer = new AnnotationLayer({\\n      div,\\n      accessibilityManager: this._accessibilityManager,\\n      annotationCanvasMap: this._annotationCanvasMap,\\n      annotationEditorUIManager: this._annotationEditorUIManager,\\n      page: this.pdfPage,\\n      viewport: viewport.clone({ dontFlip: true }),\\n    });\\n\\n    await this.annotationLayer.render({\\n      annotations,\\n      imageResourcesPath: this.imageResourcesPath,\\n      renderForms: this.renderForms,\\n      linkService: this.linkService,\\n      downloadManager: this.downloadManager,\\n      annotationStorage: this.annotationStorage,\\n      enableScripting: this.enableScripting,\\n      hasJSActions,\\n      fieldObjects,\\n    });\\n\\n    \u002F\u002F Ensure that interactive form elements in the annotationLayer are\\n    \u002F\u002F disabled while PresentationMode is active (see issue 12232).\\n    if (this.linkService.isInPresentationMode) {\\n      this.#updatePresentationModeState(PresentationModeState.FULLSCREEN);\\n    }\\n    if (!this.#eventAbortController) {\\n      this.#eventAbortController = new AbortController();\\n\\n      this._eventBus?._on(\\n        \\\"presentationmodechanged\\\",\\n        evt => {\\n          this.#updatePresentationModeState(evt.state);\\n        },\\n        { signal: this.#eventAbortController.signal }\\n      );\\n    }\\n  }\\n\\n  cancel() {\\n    this._cancelled = true;\\n\\n    this.#eventAbortController?.abort();\\n    this.#eventAbortController = null;\\n  }\\n\\n  hide() {\\n    if (!this.div) {\\n      return;\\n    }\\n    this.div.hidden = true;\\n  }\\n\\n  #updatePresentationModeState(state) {\\n    if (!this.div) {\\n      return;\\n    }\\n    let disableFormElements = false;\\n\\n    switch (state) {\\n      case PresentationModeState.FULLSCREEN:\\n        disableFormElements = true;\\n        break;\\n      case PresentationModeState.NORMAL:\\n        break;\\n      default:\\n        return;\\n    }\\n    for (const section of this.div.childNodes) {\\n      if (section.hasAttribute(\\\"data-internal-link\\\")) {\\n        continue;\\n      }\\n      section.inert = disableFormElements;\\n    }\\n  }\\n}\\n\\nexport { AnnotationLayerBuilder };\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { DrawLayer } from \\\"pdfjs-lib\\\";\\n\\n\u002F**\\n * @typedef {Object} DrawLayerBuilderOptions\\n * @property {number} pageIndex\\n *\u002F\\n\\nclass DrawLayerBuilder {\\n  #drawLayer = null;\\n\\n  \u002F**\\n   * @param {DrawLayerBuilderOptions} options\\n   *\u002F\\n  constructor(options) {\\n    this.pageIndex = options.pageIndex;\\n  }\\n\\n  \u002F**\\n   * @param {string} intent (default value is 'display')\\n   *\u002F\\n  async render(intent = \\\"display\\\") {\\n    if (intent !== \\\"display\\\" || this.#drawLayer || this._cancelled) {\\n      return;\\n    }\\n    this.#drawLayer = new DrawLayer({\\n      pageIndex: this.pageIndex,\\n    });\\n  }\\n\\n  cancel() {\\n    this._cancelled = true;\\n\\n    if (!this.#drawLayer) {\\n      return;\\n    }\\n    this.#drawLayer.destroy();\\n    this.#drawLayer = null;\\n  }\\n\\n  setParent(parent) {\\n    this.#drawLayer?.setParent(parent);\\n  }\\n\\n  getDrawLayer() {\\n    return this.#drawLayer;\\n  }\\n}\\n\\nexport { DrawLayerBuilder };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { removeNullCharacters } from \\\".\u002Fui_utils.js\\\";\\n\\nconst PDF_ROLE_TO_HTML_ROLE = {\\n  \u002F\u002F Document level structure types\\n  Document: null, \u002F\u002F There's a \\\"document\\\" role, but it doesn't make sense here.\\n  DocumentFragment: null,\\n  \u002F\u002F Grouping level structure types\\n  Part: \\\"group\\\",\\n  Sect: \\\"group\\\", \u002F\u002F XXX: There's a \\\"section\\\" role, but it's abstract.\\n  Div: \\\"group\\\",\\n  Aside: \\\"note\\\",\\n  NonStruct: \\\"none\\\",\\n  \u002F\u002F Block level structure types\\n  P: null,\\n  \u002F\u002F H\u003Cn>,\\n  H: \\\"heading\\\",\\n  Title: null,\\n  FENote: \\\"note\\\",\\n  \u002F\u002F Sub-block level structure type\\n  Sub: \\\"group\\\",\\n  \u002F\u002F General inline level structure types\\n  Lbl: null,\\n  Span: null,\\n  Em: null,\\n  Strong: null,\\n  Link: \\\"link\\\",\\n  Annot: \\\"note\\\",\\n  Form: \\\"form\\\",\\n  \u002F\u002F Ruby and Warichu structure types\\n  Ruby: null,\\n  RB: null,\\n  RT: null,\\n  RP: null,\\n  Warichu: null,\\n  WT: null,\\n  WP: null,\\n  \u002F\u002F List standard structure types\\n  L: \\\"list\\\",\\n  LI: \\\"listitem\\\",\\n  LBody: null,\\n  \u002F\u002F Table standard structure types\\n  Table: \\\"table\\\",\\n  TR: \\\"row\\\",\\n  TH: \\\"columnheader\\\",\\n  TD: \\\"cell\\\",\\n  THead: \\\"columnheader\\\",\\n  TBody: null,\\n  TFoot: null,\\n  \u002F\u002F Standard structure type Caption\\n  Caption: null,\\n  \u002F\u002F Standard structure type Figure\\n  Figure: \\\"figure\\\",\\n  \u002F\u002F Standard structure type Formula\\n  Formula: null,\\n  \u002F\u002F standard structure type Artifact\\n  Artifact: null,\\n};\\n\\nconst HEADING_PATTERN = \u002F^H(\\\\d+)$\u002F;\\n\\nclass StructTreeLayerBuilder {\\n  #treeDom = undefined;\\n\\n  get renderingDone() {\\n    return this.#treeDom !== undefined;\\n  }\\n\\n  render(structTree) {\\n    if (this.#treeDom !== undefined) {\\n      return this.#treeDom;\\n    }\\n    const treeDom = this.#walk(structTree);\\n    treeDom?.classList.add(\\\"structTree\\\");\\n    return (this.#treeDom = treeDom);\\n  }\\n\\n  hide() {\\n    if (this.#treeDom && !this.#treeDom.hidden) {\\n      this.#treeDom.hidden = true;\\n    }\\n  }\\n\\n  show() {\\n    if (this.#treeDom?.hidden) {\\n      this.#treeDom.hidden = false;\\n    }\\n  }\\n\\n  #setAttributes(structElement, htmlElement) {\\n    const { alt, id, lang } = structElement;\\n    if (alt !== undefined) {\\n      htmlElement.setAttribute(\\\"aria-label\\\", removeNullCharacters(alt));\\n    }\\n    if (id !== undefined) {\\n      htmlElement.setAttribute(\\\"aria-owns\\\", id);\\n    }\\n    if (lang !== undefined) {\\n      htmlElement.setAttribute(\\n        \\\"lang\\\",\\n        removeNullCharacters(lang, \u002F* replaceInvisible = *\u002F true)\\n      );\\n    }\\n  }\\n\\n  #walk(node) {\\n    if (!node) {\\n      return null;\\n    }\\n\\n    const element = document.createElement(\\\"span\\\");\\n    if (\\\"role\\\" in node) {\\n      const { role } = node;\\n      const match = role.match(HEADING_PATTERN);\\n      if (match) {\\n        element.setAttribute(\\\"role\\\", \\\"heading\\\");\\n        element.setAttribute(\\\"aria-level\\\", match[1]);\\n      } else if (PDF_ROLE_TO_HTML_ROLE[role]) {\\n        element.setAttribute(\\\"role\\\", PDF_ROLE_TO_HTML_ROLE[role]);\\n      }\\n    }\\n\\n    this.#setAttributes(node, element);\\n\\n    if (node.children) {\\n      if (node.children.length === 1 && \\\"id\\\" in node.children[0]) {\\n        \u002F\u002F Often there is only one content node so just set the values on the\\n        \u002F\u002F parent node to avoid creating an extra span.\\n        this.#setAttributes(node.children[0], element);\\n      } else {\\n        for (const kid of node.children) {\\n          element.append(this.#walk(kid));\\n        }\\n      }\\n    }\\n    return element;\\n  }\\n}\\n\\nexport { StructTreeLayerBuilder };\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { binarySearchFirstItem } from \\\".\u002Fui_utils.js\\\";\\n\\n\u002F**\\n * This class aims to provide some methods:\\n *  - to reorder elements in the DOM with respect to the visual order;\\n *  - to create a link, using aria-owns, between spans in the textLayer and\\n *    annotations in the annotationLayer. The goal is to help to know\\n *    where the annotations are in the text flow.\\n *\u002F\\nclass TextAccessibilityManager {\\n  #enabled = false;\\n\\n  #textChildren = null;\\n\\n  #textNodes = new Map();\\n\\n  #waitingElements = new Map();\\n\\n  setTextMapping(textDivs) {\\n    this.#textChildren = textDivs;\\n  }\\n\\n  \u002F**\\n   * Compare the positions of two elements, it must correspond to\\n   * the visual ordering.\\n   *\\n   * @param {HTMLElement} e1\\n   * @param {HTMLElement} e2\\n   * @returns {number}\\n   *\u002F\\n  static #compareElementPositions(e1, e2) {\\n    const rect1 = e1.getBoundingClientRect();\\n    const rect2 = e2.getBoundingClientRect();\\n\\n    if (rect1.width === 0 && rect1.height === 0) {\\n      return +1;\\n    }\\n\\n    if (rect2.width === 0 && rect2.height === 0) {\\n      return -1;\\n    }\\n\\n    const top1 = rect1.y;\\n    const bot1 = rect1.y + rect1.height;\\n    const mid1 = rect1.y + rect1.height \u002F 2;\\n\\n    const top2 = rect2.y;\\n    const bot2 = rect2.y + rect2.height;\\n    const mid2 = rect2.y + rect2.height \u002F 2;\\n\\n    if (mid1 \u003C= top2 && mid2 >= bot1) {\\n      return -1;\\n    }\\n\\n    if (mid2 \u003C= top1 && mid1 >= bot2) {\\n      return +1;\\n    }\\n\\n    const centerX1 = rect1.x + rect1.width \u002F 2;\\n    const centerX2 = rect2.x + rect2.width \u002F 2;\\n\\n    return centerX1 - centerX2;\\n  }\\n\\n  \u002F**\\n   * Function called when the text layer has finished rendering.\\n   *\u002F\\n  enable() {\\n    if (this.#enabled) {\\n      throw new Error(\\\"TextAccessibilityManager is already enabled.\\\");\\n    }\\n    if (!this.#textChildren) {\\n      throw new Error(\\\"Text divs and strings have not been set.\\\");\\n    }\\n\\n    this.#enabled = true;\\n    this.#textChildren = this.#textChildren.slice();\\n    this.#textChildren.sort(TextAccessibilityManager.#compareElementPositions);\\n\\n    if (this.#textNodes.size > 0) {\\n      \u002F\u002F Some links have been made before this manager has been disabled, hence\\n      \u002F\u002F we restore them.\\n      const textChildren = this.#textChildren;\\n      for (const [id, nodeIndex] of this.#textNodes) {\\n        const element = document.getElementById(id);\\n        if (!element) {\\n          \u002F\u002F If the page was *fully* reset the element no longer exists, and it\\n          \u002F\u002F will be re-inserted later (i.e. when the annotationLayer renders).\\n          this.#textNodes.delete(id);\\n          continue;\\n        }\\n        this.#addIdToAriaOwns(id, textChildren[nodeIndex]);\\n      }\\n    }\\n\\n    for (const [element, isRemovable] of this.#waitingElements) {\\n      this.addPointerInTextLayer(element, isRemovable);\\n    }\\n    this.#waitingElements.clear();\\n  }\\n\\n  disable() {\\n    if (!this.#enabled) {\\n      return;\\n    }\\n\\n    \u002F\u002F Don't clear this.#textNodes which is used to rebuild the aria-owns\\n    \u002F\u002F in case it's re-enabled at some point.\\n\\n    this.#waitingElements.clear();\\n    this.#textChildren = null;\\n    this.#enabled = false;\\n  }\\n\\n  \u002F**\\n   * Remove an aria-owns id from a node in the text layer.\\n   * @param {HTMLElement} element\\n   *\u002F\\n  removePointerInTextLayer(element) {\\n    if (!this.#enabled) {\\n      this.#waitingElements.delete(element);\\n      return;\\n    }\\n\\n    const children = this.#textChildren;\\n    if (!children || children.length === 0) {\\n      return;\\n    }\\n\\n    const { id } = element;\\n    const nodeIndex = this.#textNodes.get(id);\\n    if (nodeIndex === undefined) {\\n      return;\\n    }\\n\\n    const node = children[nodeIndex];\\n\\n    this.#textNodes.delete(id);\\n    let owns = node.getAttribute(\\\"aria-owns\\\");\\n    if (owns?.includes(id)) {\\n      owns = owns\\n        .split(\\\" \\\")\\n        .filter(x => x !== id)\\n        .join(\\\" \\\");\\n      if (owns) {\\n        node.setAttribute(\\\"aria-owns\\\", owns);\\n      } else {\\n        node.removeAttribute(\\\"aria-owns\\\");\\n        node.setAttribute(\\\"role\\\", \\\"presentation\\\");\\n      }\\n    }\\n  }\\n\\n  #addIdToAriaOwns(id, node) {\\n    const owns = node.getAttribute(\\\"aria-owns\\\");\\n    if (!owns?.includes(id)) {\\n      node.setAttribute(\\\"aria-owns\\\", owns ? `${owns} ${id}` : id);\\n    }\\n    node.removeAttribute(\\\"role\\\");\\n  }\\n\\n  \u002F**\\n   * Find the text node which is the nearest and add an aria-owns attribute\\n   * in order to correctly position this editor in the text flow.\\n   * @param {HTMLElement} element\\n   * @param {boolean} isRemovable\\n   * @returns {string|null} The id in the struct tree if any.\\n   *\u002F\\n  addPointerInTextLayer(element, isRemovable) {\\n    const { id } = element;\\n    if (!id) {\\n      return null;\\n    }\\n\\n    if (!this.#enabled) {\\n      \u002F\u002F The text layer needs to be there, so we postpone the association.\\n      this.#waitingElements.set(element, isRemovable);\\n      return null;\\n    }\\n\\n    if (isRemovable) {\\n      this.removePointerInTextLayer(element);\\n    }\\n\\n    const children = this.#textChildren;\\n    if (!children || children.length === 0) {\\n      return null;\\n    }\\n\\n    const index = binarySearchFirstItem(\\n      children,\\n      node =>\\n        TextAccessibilityManager.#compareElementPositions(element, node) \u003C 0\\n    );\\n\\n    const nodeIndex = Math.max(0, index - 1);\\n    const child = children[nodeIndex];\\n    this.#addIdToAriaOwns(id, child);\\n    this.#textNodes.set(id, nodeIndex);\\n\\n    const parent = child.parentNode;\\n    return parent?.classList.contains(\\\"markedContent\\\") ? parent.id : null;\\n  }\\n\\n  \u002F**\\n   * Move a div in the DOM in order to respect the visual order.\\n   * @param {HTMLDivElement} element\\n   * @returns {string|null} The id in the struct tree if any.\\n   *\u002F\\n  moveElementInDOM(container, element, contentElement, isRemovable) {\\n    const id = this.addPointerInTextLayer(contentElement, isRemovable);\\n\\n    if (!container.hasChildNodes()) {\\n      container.append(element);\\n      return id;\\n    }\\n\\n    const children = Array.from(container.childNodes).filter(\\n      node => node !== element\\n    );\\n\\n    if (children.length === 0) {\\n      return id;\\n    }\\n\\n    const elementToCompare = contentElement || element;\\n    const index = binarySearchFirstItem(\\n      children,\\n      node =>\\n        TextAccessibilityManager.#compareElementPositions(\\n          elementToCompare,\\n          node\\n        ) \u003C 0\\n    );\\n\\n    if (index === 0) {\\n      children[0].before(element);\\n    } else {\\n      children[index - 1].after(element);\\n    }\\n\\n    return id;\\n  }\\n}\\n\\nexport { TextAccessibilityManager };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fevent_utils\\\").EventBus} EventBus *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fpdf_find_controller\\\").PDFFindController} PDFFindController *\u002F\\n\\n\u002F**\\n * @typedef {Object} TextHighlighterOptions\\n * @property {PDFFindController} findController\\n * @property {EventBus} eventBus - The application event bus.\\n * @property {number} pageIndex - The page index.\\n *\u002F\\n\\n\u002F**\\n * TextHighlighter handles highlighting matches from the FindController in\\n * either the text layer or XFA layer depending on the type of document.\\n *\u002F\\nclass TextHighlighter {\\n  #eventAbortController = null;\\n\\n  \u002F**\\n   * @param {TextHighlighterOptions} options\\n   *\u002F\\n  constructor({ findController, eventBus, pageIndex }) {\\n    this.findController = findController;\\n    this.matches = [];\\n    this.eventBus = eventBus;\\n    this.pageIdx = pageIndex;\\n    this.textDivs = null;\\n    this.textContentItemsStr = null;\\n    this.enabled = false;\\n  }\\n\\n  \u002F**\\n   * Store two arrays that will map DOM nodes to text they should contain.\\n   * The arrays should be of equal length and the array element at each index\\n   * should correspond to the other. e.g.\\n   * `items[0] = \\\"\u003Cspan>Item 0\u003C\u002Fspan>\\\" and texts[0] = \\\"Item 0\\\";\\n   *\\n   * @param {Array\u003CNode>} divs\\n   * @param {Array\u003Cstring>} texts\\n   *\u002F\\n  setTextMapping(divs, texts) {\\n    this.textDivs = divs;\\n    this.textContentItemsStr = texts;\\n  }\\n\\n  \u002F**\\n   * Start listening for events to update the highlighter and check if there are\\n   * any current matches that need be highlighted.\\n   *\u002F\\n  enable() {\\n    if (!this.textDivs || !this.textContentItemsStr) {\\n      throw new Error(\\\"Text divs and strings have not been set.\\\");\\n    }\\n    if (this.enabled) {\\n      throw new Error(\\\"TextHighlighter is already enabled.\\\");\\n    }\\n    this.enabled = true;\\n\\n    if (!this.#eventAbortController) {\\n      this.#eventAbortController = new AbortController();\\n\\n      this.eventBus._on(\\n        \\\"updatetextlayermatches\\\",\\n        evt => {\\n          if (evt.pageIndex === this.pageIdx || evt.pageIndex === -1) {\\n            this._updateMatches();\\n          }\\n        },\\n        { signal: this.#eventAbortController.signal }\\n      );\\n    }\\n    this._updateMatches();\\n  }\\n\\n  disable() {\\n    if (!this.enabled) {\\n      return;\\n    }\\n    this.enabled = false;\\n\\n    this.#eventAbortController?.abort();\\n    this.#eventAbortController = null;\\n\\n    this._updateMatches(\u002F* reset = *\u002F true);\\n  }\\n\\n  _convertMatches(matches, matchesLength) {\\n    \u002F\u002F Early exit if there is nothing to convert.\\n    if (!matches) {\\n      return [];\\n    }\\n    const { textContentItemsStr } = this;\\n\\n    let i = 0,\\n      iIndex = 0;\\n    const end = textContentItemsStr.length - 1;\\n    const result = [];\\n\\n    for (let m = 0, mm = matches.length; m \u003C mm; m++) {\\n      \u002F\u002F Calculate the start position.\\n      let matchIdx = matches[m];\\n\\n      \u002F\u002F Loop over the divIdxs.\\n      while (i !== end && matchIdx >= iIndex + textContentItemsStr[i].length) {\\n        iIndex += textContentItemsStr[i].length;\\n        i++;\\n      }\\n\\n      if (i === textContentItemsStr.length) {\\n        console.error(\\\"Could not find a matching mapping\\\");\\n      }\\n\\n      const match = {\\n        begin: {\\n          divIdx: i,\\n          offset: matchIdx - iIndex,\\n        },\\n      };\\n\\n      \u002F\u002F Calculate the end position.\\n      matchIdx += matchesLength[m];\\n\\n      \u002F\u002F Somewhat the same array as above, but use > instead of >= to get\\n      \u002F\u002F the end position right.\\n      while (i !== end && matchIdx > iIndex + textContentItemsStr[i].length) {\\n        iIndex += textContentItemsStr[i].length;\\n        i++;\\n      }\\n\\n      match.end = {\\n        divIdx: i,\\n        offset: matchIdx - iIndex,\\n      };\\n      result.push(match);\\n    }\\n    return result;\\n  }\\n\\n  _renderMatches(matches) {\\n    \u002F\u002F Early exit if there is nothing to render.\\n    if (matches.length === 0) {\\n      return;\\n    }\\n    const { findController, pageIdx } = this;\\n    const { textContentItemsStr, textDivs } = this;\\n\\n    const isSelectedPage = pageIdx === findController.selected.pageIdx;\\n    const selectedMatchIdx = findController.selected.matchIdx;\\n    const highlightAll = findController.state.highlightAll;\\n    let prevEnd = null;\\n    const infinity = {\\n      divIdx: -1,\\n      offset: undefined,\\n    };\\n\\n    function beginText(begin, className) {\\n      const divIdx = begin.divIdx;\\n      textDivs[divIdx].textContent = \\\"\\\";\\n      return appendTextToDiv(divIdx, 0, begin.offset, className);\\n    }\\n\\n    function appendTextToDiv(divIdx, fromOffset, toOffset, className) {\\n      let div = textDivs[divIdx];\\n      if (div.nodeType === Node.TEXT_NODE) {\\n        const span = document.createElement(\\\"span\\\");\\n        div.before(span);\\n        span.append(div);\\n        textDivs[divIdx] = span;\\n        div = span;\\n      }\\n      const content = textContentItemsStr[divIdx].substring(\\n        fromOffset,\\n        toOffset\\n      );\\n      const node = document.createTextNode(content);\\n      if (className) {\\n        const span = document.createElement(\\\"span\\\");\\n        span.className = `${className} appended`;\\n        span.append(node);\\n        div.append(span);\\n        return className.includes(\\\"selected\\\") ? span.offsetLeft : 0;\\n      }\\n      div.append(node);\\n      return 0;\\n    }\\n\\n    let i0 = selectedMatchIdx,\\n      i1 = i0 + 1;\\n    if (highlightAll) {\\n      i0 = 0;\\n      i1 = matches.length;\\n    } else if (!isSelectedPage) {\\n      \u002F\u002F Not highlighting all and this isn't the selected page, so do nothing.\\n      return;\\n    }\\n\\n    let lastDivIdx = -1;\\n    let lastOffset = -1;\\n    for (let i = i0; i \u003C i1; i++) {\\n      const match = matches[i];\\n      const begin = match.begin;\\n      if (begin.divIdx === lastDivIdx && begin.offset === lastOffset) {\\n        \u002F\u002F It's possible to be in this situation if we searched for a 'f' and we\\n        \u002F\u002F have a ligature 'ff' in the text. The 'ff' has to be highlighted two\\n        \u002F\u002F times.\\n        continue;\\n      }\\n      lastDivIdx = begin.divIdx;\\n      lastOffset = begin.offset;\\n\\n      const end = match.end;\\n      const isSelected = isSelectedPage && i === selectedMatchIdx;\\n      const highlightSuffix = isSelected ? \\\" selected\\\" : \\\"\\\";\\n      let selectedLeft = 0;\\n\\n      \u002F\u002F Match inside new div.\\n      if (!prevEnd || begin.divIdx !== prevEnd.divIdx) {\\n        \u002F\u002F If there was a previous div, then add the text at the end.\\n        if (prevEnd !== null) {\\n          appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);\\n        }\\n        \u002F\u002F Clear the divs and set the content until the starting point.\\n        beginText(begin);\\n      } else {\\n        appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset);\\n      }\\n\\n      if (begin.divIdx === end.divIdx) {\\n        selectedLeft = appendTextToDiv(\\n          begin.divIdx,\\n          begin.offset,\\n          end.offset,\\n          \\\"highlight\\\" + highlightSuffix\\n        );\\n      } else {\\n        selectedLeft = appendTextToDiv(\\n          begin.divIdx,\\n          begin.offset,\\n          infinity.offset,\\n          \\\"highlight begin\\\" + highlightSuffix\\n        );\\n        for (let n0 = begin.divIdx + 1, n1 = end.divIdx; n0 \u003C n1; n0++) {\\n          textDivs[n0].className = \\\"highlight middle\\\" + highlightSuffix;\\n        }\\n        beginText(end, \\\"highlight end\\\" + highlightSuffix);\\n      }\\n      prevEnd = end;\\n\\n      if (isSelected) {\\n        \u002F\u002F Attempt to scroll the selected match into view.\\n        findController.scrollMatchIntoView({\\n          element: textDivs[begin.divIdx],\\n          selectedLeft,\\n          pageIndex: pageIdx,\\n          matchIndex: selectedMatchIdx,\\n        });\\n      }\\n    }\\n\\n    if (prevEnd) {\\n      appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);\\n    }\\n  }\\n\\n  _updateMatches(reset = false) {\\n    if (!this.enabled && !reset) {\\n      return;\\n    }\\n    const { findController, matches, pageIdx } = this;\\n    const { textContentItemsStr, textDivs } = this;\\n    let clearedUntilDivIdx = -1;\\n\\n    \u002F\u002F Clear all current matches.\\n    for (const match of matches) {\\n      const begin = Math.max(clearedUntilDivIdx, match.begin.divIdx);\\n      for (let n = begin, end = match.end.divIdx; n \u003C= end; n++) {\\n        const div = textDivs[n];\\n        div.textContent = textContentItemsStr[n];\\n        div.className = \\\"\\\";\\n      }\\n      clearedUntilDivIdx = match.end.divIdx + 1;\\n    }\\n\\n    if (!findController?.highlightMatches || reset) {\\n      return;\\n    }\\n    \u002F\u002F Convert the matches on the `findController` into the match format\\n    \u002F\u002F used for the textLayer.\\n    const pageMatches = findController.pageMatches[pageIdx] || null;\\n    const pageMatchesLength = findController.pageMatchesLength[pageIdx] || null;\\n\\n    this.matches = this._convertMatches(pageMatches, pageMatchesLength);\\n    this._renderMatches(this.matches);\\n  }\\n}\\n\\nexport { TextHighlighter };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fapi\\\").PDFPageProxy} PDFPageProxy *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fdisplay_utils\\\").PageViewport} PageViewport *\u002F\\n\u002F** @typedef {import(\\\".\u002Ftext_highlighter\\\").TextHighlighter} TextHighlighter *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Ftext_accessibility.js\\\").TextAccessibilityManager} TextAccessibilityManager *\u002F\\n\\nimport { normalizeUnicode, TextLayer } from \\\"pdfjs-lib\\\";\\nimport { removeNullCharacters } from \\\".\u002Fui_utils.js\\\";\\n\\n\u002F**\\n * @typedef {Object} TextLayerBuilderOptions\\n * @property {PDFPageProxy} pdfPage\\n * @property {TextHighlighter} [highlighter] - Optional object that will handle\\n *   highlighting text from the find controller.\\n * @property {TextAccessibilityManager} [accessibilityManager]\\n * @property {function} [onAppend]\\n *\u002F\\n\\n\u002F**\\n * The text layer builder provides text selection functionality for the PDF.\\n * It does this by creating overlay divs over the PDF's text. These divs\\n * contain text that matches the PDF text they are overlaying.\\n *\u002F\\nclass TextLayerBuilder {\\n  #enablePermissions = false;\\n\\n  #onAppend = null;\\n\\n  #renderingDone = false;\\n\\n  #textLayer = null;\\n\\n  static #textLayers = new Map();\\n\\n  static #selectionChangeAbortController = null;\\n\\n  constructor({\\n    pdfPage,\\n    highlighter = null,\\n    accessibilityManager = null,\\n    enablePermissions = false,\\n    onAppend = null,\\n  }) {\\n    this.pdfPage = pdfPage;\\n    this.highlighter = highlighter;\\n    this.accessibilityManager = accessibilityManager;\\n    this.#enablePermissions = enablePermissions === true;\\n    this.#onAppend = onAppend;\\n\\n    this.div = document.createElement(\\\"div\\\");\\n    this.div.tabIndex = 0;\\n    this.div.className = \\\"textLayer\\\";\\n  }\\n\\n  #finishRendering() {\\n    this.#renderingDone = true;\\n\\n    const endOfContent = document.createElement(\\\"div\\\");\\n    endOfContent.className = \\\"endOfContent\\\";\\n    this.div.append(endOfContent);\\n\\n    this.#bindMouse(endOfContent);\\n  }\\n\\n  \u002F**\\n   * Renders the text layer.\\n   * @param {PageViewport} viewport\\n   * @param {Object} [textContentParams]\\n   *\u002F\\n  async render(viewport, textContentParams = null) {\\n    if (this.#renderingDone && this.#textLayer) {\\n      this.#textLayer.update({\\n        viewport,\\n        onBefore: this.hide.bind(this),\\n      });\\n      this.show();\\n      return;\\n    }\\n\\n    this.cancel();\\n    this.#textLayer = new TextLayer({\\n      textContentSource: this.pdfPage.streamTextContent(\\n        textContentParams || {\\n          includeMarkedContent: true,\\n          disableNormalization: true,\\n        }\\n      ),\\n      container: this.div,\\n      viewport,\\n    });\\n\\n    const { textDivs, textContentItemsStr } = this.#textLayer;\\n    this.highlighter?.setTextMapping(textDivs, textContentItemsStr);\\n    this.accessibilityManager?.setTextMapping(textDivs);\\n\\n    await this.#textLayer.render();\\n    this.#finishRendering();\\n    \u002F\u002F Ensure that the textLayer is appended to the DOM *before* handling\\n    \u002F\u002F e.g. a pending search operation.\\n    this.#onAppend?.(this.div);\\n    this.highlighter?.enable();\\n    this.accessibilityManager?.enable();\\n  }\\n\\n  hide() {\\n    if (!this.div.hidden && this.#renderingDone) {\\n      \u002F\u002F We turn off the highlighter in order to avoid to scroll into view an\\n      \u002F\u002F element of the text layer which could be hidden.\\n      this.highlighter?.disable();\\n      this.div.hidden = true;\\n    }\\n  }\\n\\n  show() {\\n    if (this.div.hidden && this.#renderingDone) {\\n      this.div.hidden = false;\\n      this.highlighter?.enable();\\n    }\\n  }\\n\\n  \u002F**\\n   * Cancel rendering of the text layer.\\n   *\u002F\\n  cancel() {\\n    this.#textLayer?.cancel();\\n    this.#textLayer = null;\\n\\n    this.highlighter?.disable();\\n    this.accessibilityManager?.disable();\\n    TextLayerBuilder.#removeGlobalSelectionListener(this.div);\\n  }\\n\\n  \u002F**\\n   * Improves text selection by adding an additional div where the mouse was\\n   * clicked. This reduces flickering of the content if the mouse is slowly\\n   * dragged up or down.\\n   *\u002F\\n  #bindMouse(end) {\\n    const { div } = this;\\n\\n    div.addEventListener(\\\"mousedown\\\", evt => {\\n      end.classList.add(\\\"active\\\");\\n    });\\n\\n    div.addEventListener(\\\"copy\\\", event => {\\n      if (!this.#enablePermissions) {\\n        const selection = document.getSelection();\\n        event.clipboardData.setData(\\n          \\\"text\u002Fplain\\\",\\n          removeNullCharacters(normalizeUnicode(selection.toString()))\\n        );\\n      }\\n      event.preventDefault();\\n      event.stopPropagation();\\n    });\\n\\n    TextLayerBuilder.#textLayers.set(div, end);\\n    TextLayerBuilder.#enableGlobalSelectionListener();\\n  }\\n\\n  static #removeGlobalSelectionListener(textLayerDiv) {\\n    this.#textLayers.delete(textLayerDiv);\\n\\n    if (this.#textLayers.size === 0) {\\n      this.#selectionChangeAbortController?.abort();\\n      this.#selectionChangeAbortController = null;\\n    }\\n  }\\n\\n  static #enableGlobalSelectionListener() {\\n    if (this.#selectionChangeAbortController) {\\n      \u002F\u002F document-level event listeners already installed\\n      return;\\n    }\\n    this.#selectionChangeAbortController = new AbortController();\\n    const { signal } = this.#selectionChangeAbortController;\\n\\n    const reset = (end, textLayer) => {\\n      if (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n        textLayer.append(end);\\n        end.style.width = \\\"\\\";\\n        end.style.height = \\\"\\\";\\n      }\\n      end.classList.remove(\\\"active\\\");\\n    };\\n\\n    document.addEventListener(\\n      \\\"pointerup\\\",\\n      () => {\\n        this.#textLayers.forEach(reset);\\n      },\\n      { signal }\\n    );\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      \u002F\u002F eslint-disable-next-line no-var\\n      var isFirefox, prevRange;\\n    }\\n\\n    document.addEventListener(\\n      \\\"selectionchange\\\",\\n      () => {\\n        const selection = document.getSelection();\\n        if (selection.rangeCount === 0) {\\n          this.#textLayers.forEach(reset);\\n          return;\\n        }\\n\\n        \u002F\u002F Even though the spec says that .rangeCount should be 0 or 1, Firefox\\n        \u002F\u002F creates multiple ranges when selecting across multiple pages.\\n        \u002F\u002F Make sure to collect all the .textLayer elements where the selection\\n        \u002F\u002F is happening.\\n        const activeTextLayers = new Set();\\n        for (let i = 0; i \u003C selection.rangeCount; i++) {\\n          const range = selection.getRangeAt(i);\\n          for (const textLayerDiv of this.#textLayers.keys()) {\\n            if (\\n              !activeTextLayers.has(textLayerDiv) &&\\n              range.intersectsNode(textLayerDiv)\\n            ) {\\n              activeTextLayers.add(textLayerDiv);\\n            }\\n          }\\n        }\\n\\n        for (const [textLayerDiv, endDiv] of this.#textLayers) {\\n          if (activeTextLayers.has(textLayerDiv)) {\\n            endDiv.classList.add(\\\"active\\\");\\n          } else {\\n            reset(endDiv, textLayerDiv);\\n          }\\n        }\\n\\n        if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n          return;\\n        }\\n        if (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"CHROME\\\")) {\\n          isFirefox ??=\\n            getComputedStyle(\\n              this.#textLayers.values().next().value\\n            ).getPropertyValue(\\\"-moz-user-select\\\") === \\\"none\\\";\\n\\n          if (isFirefox) {\\n            return;\\n          }\\n        }\\n        \u002F\u002F In non-Firefox browsers, when hovering over an empty space (thus,\\n        \u002F\u002F on .endOfContent), the selection will expand to cover all the\\n        \u002F\u002F text between the current selection and .endOfContent. By moving\\n        \u002F\u002F .endOfContent to right after (or before, depending on which side\\n        \u002F\u002F of the selection the user is moving), we limit the selection jump\\n        \u002F\u002F to at most cover the enteirety of the \u003Cspan> where the selection\\n        \u002F\u002F is being modified.\\n        const range = selection.getRangeAt(0);\\n        const modifyStart =\\n          prevRange &&\\n          (range.compareBoundaryPoints(Range.END_TO_END, prevRange) === 0 ||\\n            range.compareBoundaryPoints(Range.START_TO_END, prevRange) === 0);\\n        let anchor = modifyStart ? range.startContainer : range.endContainer;\\n        if (anchor.nodeType === Node.TEXT_NODE) {\\n          anchor = anchor.parentNode;\\n        }\\n\\n        const parentTextLayer = anchor.parentElement.closest(\\\".textLayer\\\");\\n        const endDiv = this.#textLayers.get(parentTextLayer);\\n        if (endDiv) {\\n          endDiv.style.width = parentTextLayer.style.width;\\n          endDiv.style.height = parentTextLayer.style.height;\\n          anchor.parentElement.insertBefore(\\n            endDiv,\\n            modifyStart ? anchor : anchor.nextSibling\\n          );\\n        }\\n\\n        prevRange = range.cloneRange();\\n      },\\n      { signal }\\n    );\\n  }\\n}\\n\\nexport { TextLayerBuilder };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fdisplay_utils\\\").PageViewport} PageViewport *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Foptional_content_config\\\").OptionalContentConfig} OptionalContentConfig *\u002F\\n\u002F** @typedef {import(\\\".\u002Fevent_utils\\\").EventBus} EventBus *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IL10n} IL10n *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IRenderableView} IRenderableView *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fpdf_rendering_queue\\\").PDFRenderingQueue} PDFRenderingQueue *\u002F\\n\\nimport {\\n  AbortException,\\n  AnnotationMode,\\n  PixelsPerInch,\\n  RenderingCancelledException,\\n  setLayerDimensions,\\n  shadow,\\n} from \\\"pdfjs-lib\\\";\\nimport {\\n  approximateFraction,\\n  DEFAULT_SCALE,\\n  OutputScale,\\n  RenderingStates,\\n  roundToDivide,\\n  TextLayerMode,\\n} from \\\".\u002Fui_utils.js\\\";\\nimport { AnnotationEditorLayerBuilder } from \\\".\u002Fannotation_editor_layer_builder.js\\\";\\nimport { AnnotationLayerBuilder } from \\\".\u002Fannotation_layer_builder.js\\\";\\nimport { AppOptions } from \\\".\u002Fapp_options.js\\\";\\nimport { DrawLayerBuilder } from \\\".\u002Fdraw_layer_builder.js\\\";\\nimport { GenericL10n } from \\\"web-null_l10n\\\";\\nimport { SimpleLinkService } from \\\".\u002Fpdf_link_service.js\\\";\\nimport { StructTreeLayerBuilder } from \\\".\u002Fstruct_tree_layer_builder.js\\\";\\nimport { TextAccessibilityManager } from \\\".\u002Ftext_accessibility.js\\\";\\nimport { TextHighlighter } from \\\".\u002Ftext_highlighter.js\\\";\\nimport { TextLayerBuilder } from \\\".\u002Ftext_layer_builder.js\\\";\\nimport { XfaLayerBuilder } from \\\".\u002Fxfa_layer_builder.js\\\";\\n\\n\u002F**\\n * @typedef {Object} PDFPageViewOptions\\n * @property {HTMLDivElement} [container] - The viewer element.\\n * @property {EventBus} eventBus - The application event bus.\\n * @property {number} id - The page unique ID (normally its number).\\n * @property {number} [scale] - The page scale display.\\n * @property {PageViewport} defaultViewport - The page viewport.\\n * @property {Promise\u003COptionalContentConfig>} [optionalContentConfigPromise] -\\n *   A promise that is resolved with an {@link OptionalContentConfig} instance.\\n *   The default value is `null`.\\n * @property {PDFRenderingQueue} [renderingQueue] - The rendering queue object.\\n * @property {number} [textLayerMode] - Controls if the text layer used for\\n *   selection and searching is created. The constants from {TextLayerMode}\\n *   should be used. The default value is `TextLayerMode.ENABLE`.\\n * @property {number} [annotationMode] - Controls if the annotation layer is\\n *   created, and if interactive form elements or `AnnotationStorage`-data are\\n *   being rendered. The constants from {@link AnnotationMode} should be used;\\n *   see also {@link RenderParameters} and {@link GetOperatorListParameters}.\\n *   The default value is `AnnotationMode.ENABLE_FORMS`.\\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\\n *   for annotation icons. Include trailing slash.\\n * @property {number} [maxCanvasPixels] - The maximum supported canvas size in\\n *   total pixels, i.e. width * height. Use `-1` for no limit, or `0` for\\n *   CSS-only zooming. The default value is 4096 * 8192 (32 mega-pixels).\\n * @property {Object} [pageColors] - Overwrites background and foreground colors\\n *   with user defined ones in order to improve readability in high contrast\\n *   mode.\\n * @property {IL10n} [l10n] - Localization service.\\n * @property {Object} [layerProperties] - The object that is used to lookup\\n *   the necessary layer-properties.\\n *\u002F\\n\\nconst DEFAULT_LAYER_PROPERTIES =\\n  typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"COMPONENTS\\\")\\n    ? null\\n    : {\\n        annotationEditorUIManager: null,\\n        annotationStorage: null,\\n        downloadManager: null,\\n        enableScripting: false,\\n        fieldObjectsPromise: null,\\n        findController: null,\\n        hasJSActionsPromise: null,\\n        get linkService() {\\n          return new SimpleLinkService();\\n        },\\n      };\\n\\nconst LAYERS_ORDER = new Map([\\n  [\\\"canvasWrapper\\\", 0],\\n  [\\\"textLayer\\\", 1],\\n  [\\\"annotationLayer\\\", 2],\\n  [\\\"annotationEditorLayer\\\", 3],\\n  [\\\"xfaLayer\\\", 3],\\n]);\\n\\n\u002F**\\n * @implements {IRenderableView}\\n *\u002F\\nclass PDFPageView {\\n  #annotationMode = AnnotationMode.ENABLE_FORMS;\\n\\n  #hasRestrictedScaling = false;\\n\\n  #layerProperties = null;\\n\\n  #loadingId = null;\\n\\n  #previousRotation = null;\\n\\n  #renderError = null;\\n\\n  #renderingState = RenderingStates.INITIAL;\\n\\n  #textLayerMode = TextLayerMode.ENABLE;\\n\\n  #useThumbnailCanvas = {\\n    directDrawing: true,\\n    initialOptionalContent: true,\\n    regularAnnotations: true,\\n  };\\n\\n  #viewportMap = new WeakMap();\\n\\n  #layers = [null, null, null, null];\\n\\n  \u002F**\\n   * @param {PDFPageViewOptions} options\\n   *\u002F\\n  constructor(options) {\\n    const container = options.container;\\n    const defaultViewport = options.defaultViewport;\\n\\n    this.id = options.id;\\n    this.renderingId = \\\"page\\\" + this.id;\\n    this.#layerProperties = options.layerProperties || DEFAULT_LAYER_PROPERTIES;\\n\\n    this.pdfPage = null;\\n    this.pageLabel = null;\\n    this.rotation = 0;\\n    this.scale = options.scale || DEFAULT_SCALE;\\n    this.viewport = defaultViewport;\\n    this.pdfPageRotate = defaultViewport.rotation;\\n    this._optionalContentConfigPromise =\\n      options.optionalContentConfigPromise || null;\\n    this.#textLayerMode = options.textLayerMode ?? TextLayerMode.ENABLE;\\n    this.#annotationMode =\\n      options.annotationMode ?? AnnotationMode.ENABLE_FORMS;\\n    this.imageResourcesPath = options.imageResourcesPath || \\\"\\\";\\n    this.maxCanvasPixels =\\n      options.maxCanvasPixels ?? AppOptions.get(\\\"maxCanvasPixels\\\");\\n    this.pageColors = options.pageColors || null;\\n\\n    this.eventBus = options.eventBus;\\n    this.renderingQueue = options.renderingQueue;\\n    this.l10n = options.l10n;\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      this.l10n ||= new GenericL10n();\\n    }\\n\\n    this.renderTask = null;\\n    this.resume = null;\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      this._isStandalone = !this.renderingQueue?.hasViewer();\\n      this._container = container;\\n    }\\n\\n    this._annotationCanvasMap = null;\\n\\n    this.annotationLayer = null;\\n    this.annotationEditorLayer = null;\\n    this.textLayer = null;\\n    this.zoomLayer = null;\\n    this.xfaLayer = null;\\n    this.structTreeLayer = null;\\n    this.drawLayer = null;\\n\\n    const div = document.createElement(\\\"div\\\");\\n    div.className = \\\"page\\\";\\n    div.setAttribute(\\\"data-page-number\\\", this.id);\\n    div.setAttribute(\\\"role\\\", \\\"region\\\");\\n    div.setAttribute(\\\"data-l10n-id\\\", \\\"pdfjs-page-landmark\\\");\\n    div.setAttribute(\\\"data-l10n-args\\\", JSON.stringify({ page: this.id }));\\n    this.div = div;\\n\\n    this.#setDimensions();\\n    container?.append(div);\\n\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) &&\\n      this._isStandalone\\n    ) {\\n      \u002F\u002F Ensure that the various layers always get the correct initial size,\\n      \u002F\u002F see issue 15795.\\n      container?.style.setProperty(\\n        \\\"--scale-factor\\\",\\n        this.scale * PixelsPerInch.PDF_TO_CSS_UNITS\\n      );\\n\\n      const { optionalContentConfigPromise } = options;\\n      if (optionalContentConfigPromise) {\\n        \u002F\u002F Ensure that the thumbnails always display the *initial* document\\n        \u002F\u002F state, for documents with optional content.\\n        optionalContentConfigPromise.then(optionalContentConfig => {\\n          if (\\n            optionalContentConfigPromise !== this._optionalContentConfigPromise\\n          ) {\\n            return;\\n          }\\n          this.#useThumbnailCanvas.initialOptionalContent =\\n            optionalContentConfig.hasInitialVisibility;\\n        });\\n      }\\n\\n      \u002F\u002F Ensure that Fluent is connected in e.g. the COMPONENTS build.\\n      if (!options.l10n) {\\n        this.l10n.translate(this.div);\\n      }\\n    }\\n  }\\n\\n  #addLayer(div, name) {\\n    const pos = LAYERS_ORDER.get(name);\\n    const oldDiv = this.#layers[pos];\\n    this.#layers[pos] = div;\\n    if (oldDiv) {\\n      oldDiv.replaceWith(div);\\n      return;\\n    }\\n    for (let i = pos - 1; i >= 0; i--) {\\n      const layer = this.#layers[i];\\n      if (layer) {\\n        layer.after(div);\\n        return;\\n      }\\n    }\\n    this.div.prepend(div);\\n  }\\n\\n  get renderingState() {\\n    return this.#renderingState;\\n  }\\n\\n  set renderingState(state) {\\n    if (state === this.#renderingState) {\\n      return;\\n    }\\n    this.#renderingState = state;\\n\\n    if (this.#loadingId) {\\n      clearTimeout(this.#loadingId);\\n      this.#loadingId = null;\\n    }\\n\\n    switch (state) {\\n      case RenderingStates.PAUSED:\\n        this.div.classList.remove(\\\"loading\\\");\\n        break;\\n      case RenderingStates.RUNNING:\\n        this.div.classList.add(\\\"loadingIcon\\\");\\n        this.#loadingId = setTimeout(() => {\\n          \u002F\u002F Adding the loading class is slightly postponed in order to not have\\n          \u002F\u002F it with loadingIcon.\\n          \u002F\u002F If we don't do that the visibility of the background is changed but\\n          \u002F\u002F the transition isn't triggered.\\n          this.div.classList.add(\\\"loading\\\");\\n          this.#loadingId = null;\\n        }, 0);\\n        break;\\n      case RenderingStates.INITIAL:\\n      case RenderingStates.FINISHED:\\n        this.div.classList.remove(\\\"loadingIcon\\\", \\\"loading\\\");\\n        break;\\n    }\\n  }\\n\\n  #setDimensions() {\\n    const { viewport } = this;\\n    if (this.pdfPage) {\\n      if (this.#previousRotation === viewport.rotation) {\\n        return;\\n      }\\n      this.#previousRotation = viewport.rotation;\\n    }\\n\\n    setLayerDimensions(\\n      this.div,\\n      viewport,\\n      \u002F* mustFlip = *\u002F true,\\n      \u002F* mustRotate = *\u002F false\\n    );\\n  }\\n\\n  setPdfPage(pdfPage) {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) &&\\n      this._isStandalone &&\\n      (this.pageColors?.foreground === \\\"CanvasText\\\" ||\\n        this.pageColors?.background === \\\"Canvas\\\")\\n    ) {\\n      this._container?.style.setProperty(\\n        \\\"--hcm-highlight-filter\\\",\\n        pdfPage.filterFactory.addHighlightHCMFilter(\\n          \\\"highlight\\\",\\n          \\\"CanvasText\\\",\\n          \\\"Canvas\\\",\\n          \\\"HighlightText\\\",\\n          \\\"Highlight\\\"\\n        )\\n      );\\n      this._container?.style.setProperty(\\n        \\\"--hcm-highlight-selected-filter\\\",\\n        pdfPage.filterFactory.addHighlightHCMFilter(\\n          \\\"highlight_selected\\\",\\n          \\\"CanvasText\\\",\\n          \\\"Canvas\\\",\\n          \\\"HighlightText\\\",\\n          \\\"Highlight\\\"\\n        )\\n      );\\n    }\\n    this.pdfPage = pdfPage;\\n    this.pdfPageRotate = pdfPage.rotate;\\n\\n    const totalRotation = (this.rotation + this.pdfPageRotate) % 360;\\n    this.viewport = pdfPage.getViewport({\\n      scale: this.scale * PixelsPerInch.PDF_TO_CSS_UNITS,\\n      rotation: totalRotation,\\n    });\\n    this.#setDimensions();\\n    this.reset();\\n  }\\n\\n  destroy() {\\n    this.reset();\\n    this.pdfPage?.cleanup();\\n  }\\n\\n  get _textHighlighter() {\\n    return shadow(\\n      this,\\n      \\\"_textHighlighter\\\",\\n      new TextHighlighter({\\n        pageIndex: this.id - 1,\\n        eventBus: this.eventBus,\\n        findController: this.#layerProperties.findController,\\n      })\\n    );\\n  }\\n\\n  #dispatchLayerRendered(name, error) {\\n    this.eventBus.dispatch(name, {\\n      source: this,\\n      pageNumber: this.id,\\n      error,\\n    });\\n  }\\n\\n  async #renderAnnotationLayer() {\\n    let error = null;\\n    try {\\n      await this.annotationLayer.render(this.viewport, \\\"display\\\");\\n    } catch (ex) {\\n      console.error(`#renderAnnotationLayer: \\\"${ex}\\\".`);\\n      error = ex;\\n    } finally {\\n      this.#dispatchLayerRendered(\\\"annotationlayerrendered\\\", error);\\n    }\\n  }\\n\\n  async #renderAnnotationEditorLayer() {\\n    let error = null;\\n    try {\\n      await this.annotationEditorLayer.render(this.viewport, \\\"display\\\");\\n    } catch (ex) {\\n      console.error(`#renderAnnotationEditorLayer: \\\"${ex}\\\".`);\\n      error = ex;\\n    } finally {\\n      this.#dispatchLayerRendered(\\\"annotationeditorlayerrendered\\\", error);\\n    }\\n  }\\n\\n  async #renderDrawLayer() {\\n    try {\\n      await this.drawLayer.render(\\\"display\\\");\\n    } catch (ex) {\\n      console.error(`#renderDrawLayer: \\\"${ex}\\\".`);\\n    }\\n  }\\n\\n  async #renderXfaLayer() {\\n    let error = null;\\n    try {\\n      const result = await this.xfaLayer.render(this.viewport, \\\"display\\\");\\n      if (result?.textDivs && this._textHighlighter) {\\n        \u002F\u002F Given that the following method fetches the text asynchronously we\\n        \u002F\u002F can invoke it *before* appending the xfaLayer to the DOM (below),\\n        \u002F\u002F since a pending search-highlight\u002Fscroll operation thus won't run\\n        \u002F\u002F until after the xfaLayer is available in the viewer.\\n        this.#buildXfaTextContentItems(result.textDivs);\\n      }\\n    } catch (ex) {\\n      console.error(`#renderXfaLayer: \\\"${ex}\\\".`);\\n      error = ex;\\n    } finally {\\n      if (this.xfaLayer?.div) {\\n        \u002F\u002F Pause translation when inserting the xfaLayer in the DOM.\\n        this.l10n.pause();\\n        this.#addLayer(this.xfaLayer.div, \\\"xfaLayer\\\");\\n        this.l10n.resume();\\n      }\\n      this.#dispatchLayerRendered(\\\"xfalayerrendered\\\", error);\\n    }\\n  }\\n\\n  async #renderTextLayer() {\\n    if (!this.textLayer) {\\n      return;\\n    }\\n\\n    let error = null;\\n    try {\\n      await this.textLayer.render(this.viewport);\\n    } catch (ex) {\\n      if (ex instanceof AbortException) {\\n        return;\\n      }\\n      console.error(`#renderTextLayer: \\\"${ex}\\\".`);\\n      error = ex;\\n    }\\n    this.#dispatchLayerRendered(\\\"textlayerrendered\\\", error);\\n\\n    this.#renderStructTreeLayer();\\n  }\\n\\n  \u002F**\\n   * The structure tree is currently only supported when the text layer is\\n   * enabled and a canvas is used for rendering.\\n   *\\n   * The structure tree must be generated after the text layer for the\\n   * aria-owns to work.\\n   *\u002F\\n  async #renderStructTreeLayer() {\\n    if (!this.textLayer) {\\n      return;\\n    }\\n    this.structTreeLayer ||= new StructTreeLayerBuilder();\\n\\n    const tree = await (!this.structTreeLayer.renderingDone\\n      ? this.pdfPage.getStructTree()\\n      : null);\\n    const treeDom = this.structTreeLayer?.render(tree);\\n    if (treeDom) {\\n      \u002F\u002F Pause translation when inserting the structTree in the DOM.\\n      this.l10n.pause();\\n      this.canvas?.append(treeDom);\\n      this.l10n.resume();\\n    }\\n    this.structTreeLayer?.show();\\n  }\\n\\n  async #buildXfaTextContentItems(textDivs) {\\n    const text = await this.pdfPage.getTextContent();\\n    const items = [];\\n    for (const item of text.items) {\\n      items.push(item.str);\\n    }\\n    this._textHighlighter.setTextMapping(textDivs, items);\\n    this._textHighlighter.enable();\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _resetZoomLayer(removeFromDOM = false) {\\n    if (!this.zoomLayer) {\\n      return;\\n    }\\n    const zoomLayerCanvas = this.zoomLayer.firstChild;\\n    this.#viewportMap.delete(zoomLayerCanvas);\\n    \u002F\u002F Zeroing the width and height causes Firefox to release graphics\\n    \u002F\u002F resources immediately, which can greatly reduce memory consumption.\\n    zoomLayerCanvas.width = 0;\\n    zoomLayerCanvas.height = 0;\\n\\n    if (removeFromDOM) {\\n      \u002F\u002F Note: `ChildNode.remove` doesn't throw if the parent node is undefined.\\n      this.zoomLayer.remove();\\n    }\\n    this.zoomLayer = null;\\n  }\\n\\n  reset({\\n    keepZoomLayer = false,\\n    keepAnnotationLayer = false,\\n    keepAnnotationEditorLayer = false,\\n    keepXfaLayer = false,\\n    keepTextLayer = false,\\n  } = {}) {\\n    this.cancelRendering({\\n      keepAnnotationLayer,\\n      keepAnnotationEditorLayer,\\n      keepXfaLayer,\\n      keepTextLayer,\\n    });\\n    this.renderingState = RenderingStates.INITIAL;\\n\\n    const div = this.div;\\n\\n    const childNodes = div.childNodes,\\n      zoomLayerNode = (keepZoomLayer && this.zoomLayer) || null,\\n      annotationLayerNode =\\n        (keepAnnotationLayer && this.annotationLayer?.div) || null,\\n      annotationEditorLayerNode =\\n        (keepAnnotationEditorLayer && this.annotationEditorLayer?.div) || null,\\n      xfaLayerNode = (keepXfaLayer && this.xfaLayer?.div) || null,\\n      textLayerNode = (keepTextLayer && this.textLayer?.div) || null;\\n    for (let i = childNodes.length - 1; i >= 0; i--) {\\n      const node = childNodes[i];\\n      switch (node) {\\n        case zoomLayerNode:\\n        case annotationLayerNode:\\n        case annotationEditorLayerNode:\\n        case xfaLayerNode:\\n        case textLayerNode:\\n          continue;\\n      }\\n      node.remove();\\n      const layerIndex = this.#layers.indexOf(node);\\n      if (layerIndex >= 0) {\\n        this.#layers[layerIndex] = null;\\n      }\\n    }\\n    div.removeAttribute(\\\"data-loaded\\\");\\n\\n    if (annotationLayerNode) {\\n      \u002F\u002F Hide the annotation layer until all elements are resized\\n      \u002F\u002F so they are not displayed on the already resized page.\\n      this.annotationLayer.hide();\\n    }\\n    if (annotationEditorLayerNode) {\\n      this.annotationEditorLayer.hide();\\n    }\\n    if (xfaLayerNode) {\\n      \u002F\u002F Hide the XFA layer until all elements are resized\\n      \u002F\u002F so they are not displayed on the already resized page.\\n      this.xfaLayer.hide();\\n    }\\n    if (textLayerNode) {\\n      this.textLayer.hide();\\n    }\\n    this.structTreeLayer?.hide();\\n\\n    if (!zoomLayerNode) {\\n      if (this.canvas) {\\n        this.#viewportMap.delete(this.canvas);\\n        \u002F\u002F Zeroing the width and height causes Firefox to release graphics\\n        \u002F\u002F resources immediately, which can greatly reduce memory consumption.\\n        this.canvas.width = 0;\\n        this.canvas.height = 0;\\n        delete this.canvas;\\n      }\\n      this._resetZoomLayer();\\n    }\\n  }\\n\\n  \u002F**\\n   * @typedef {Object} PDFPageViewUpdateParameters\\n   * @property {number} [scale] The new scale, if specified.\\n   * @property {number} [rotation] The new rotation, if specified.\\n   * @property {Promise\u003COptionalContentConfig>} [optionalContentConfigPromise]\\n   *   A promise that is resolved with an {@link OptionalContentConfig}\\n   *   instance. The default value is `null`.\\n   * @property {number} [drawingDelay]\\n   *\u002F\\n\\n  \u002F**\\n   * Update e.g. the scale and\u002For rotation of the page.\\n   * @param {PDFPageViewUpdateParameters} params\\n   *\u002F\\n  update({\\n    scale = 0,\\n    rotation = null,\\n    optionalContentConfigPromise = null,\\n    drawingDelay = -1,\\n  }) {\\n    this.scale = scale || this.scale;\\n    if (typeof rotation === \\\"number\\\") {\\n      this.rotation = rotation; \u002F\u002F The rotation may be zero.\\n    }\\n    if (optionalContentConfigPromise instanceof Promise) {\\n      this._optionalContentConfigPromise = optionalContentConfigPromise;\\n\\n      \u002F\u002F Ensure that the thumbnails always display the *initial* document state,\\n      \u002F\u002F for documents with optional content.\\n      optionalContentConfigPromise.then(optionalContentConfig => {\\n        if (\\n          optionalContentConfigPromise !== this._optionalContentConfigPromise\\n        ) {\\n          return;\\n        }\\n        this.#useThumbnailCanvas.initialOptionalContent =\\n          optionalContentConfig.hasInitialVisibility;\\n      });\\n    }\\n    this.#useThumbnailCanvas.directDrawing = true;\\n\\n    const totalRotation = (this.rotation + this.pdfPageRotate) % 360;\\n    this.viewport = this.viewport.clone({\\n      scale: this.scale * PixelsPerInch.PDF_TO_CSS_UNITS,\\n      rotation: totalRotation,\\n    });\\n    this.#setDimensions();\\n\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) &&\\n      this._isStandalone\\n    ) {\\n      this._container?.style.setProperty(\\\"--scale-factor\\\", this.viewport.scale);\\n    }\\n\\n    if (this.canvas) {\\n      let onlyCssZoom = false;\\n      if (this.#hasRestrictedScaling) {\\n        if (\\n          (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) &&\\n          this.maxCanvasPixels === 0\\n        ) {\\n          onlyCssZoom = true;\\n        } else if (this.maxCanvasPixels > 0) {\\n          const { width, height } = this.viewport;\\n          const { sx, sy } = this.outputScale;\\n          onlyCssZoom =\\n            ((Math.floor(width) * sx) | 0) * ((Math.floor(height) * sy) | 0) >\\n            this.maxCanvasPixels;\\n        }\\n      }\\n      const postponeDrawing = drawingDelay >= 0 && drawingDelay \u003C 1000;\\n\\n      if (postponeDrawing || onlyCssZoom) {\\n        if (\\n          postponeDrawing &&\\n          !onlyCssZoom &&\\n          this.renderingState !== RenderingStates.FINISHED\\n        ) {\\n          this.cancelRendering({\\n            keepZoomLayer: true,\\n            keepAnnotationLayer: true,\\n            keepAnnotationEditorLayer: true,\\n            keepXfaLayer: true,\\n            keepTextLayer: true,\\n            cancelExtraDelay: drawingDelay,\\n          });\\n          \u002F\u002F It isn't really finished, but once we have finished\\n          \u002F\u002F to postpone, we'll call this.reset(...) which will set\\n          \u002F\u002F the rendering state to INITIAL, hence the next call to\\n          \u002F\u002F PDFViewer.update() will trigger a redraw (if it's mandatory).\\n          this.renderingState = RenderingStates.FINISHED;\\n          \u002F\u002F Ensure that the thumbnails won't become partially (or fully) blank,\\n          \u002F\u002F if the sidebar is opened before the actual rendering is done.\\n          this.#useThumbnailCanvas.directDrawing = false;\\n        }\\n\\n        this.cssTransform({\\n          target: this.canvas,\\n          redrawAnnotationLayer: true,\\n          redrawAnnotationEditorLayer: true,\\n          redrawXfaLayer: true,\\n          redrawTextLayer: !postponeDrawing,\\n          hideTextLayer: postponeDrawing,\\n        });\\n\\n        if (postponeDrawing) {\\n          \u002F\u002F The \\\"pagerendered\\\"-event will be dispatched once the actual\\n          \u002F\u002F rendering is done, hence don't dispatch it here as well.\\n          return;\\n        }\\n        this.eventBus.dispatch(\\\"pagerendered\\\", {\\n          source: this,\\n          pageNumber: this.id,\\n          cssTransform: true,\\n          timestamp: performance.now(),\\n          error: this.#renderError,\\n        });\\n        return;\\n      }\\n      if (!this.zoomLayer && !this.canvas.hidden) {\\n        this.zoomLayer = this.canvas.parentNode;\\n        this.zoomLayer.style.position = \\\"absolute\\\";\\n      }\\n    }\\n    if (this.zoomLayer) {\\n      this.cssTransform({ target: this.zoomLayer.firstChild });\\n    }\\n    this.reset({\\n      keepZoomLayer: true,\\n      keepAnnotationLayer: true,\\n      keepAnnotationEditorLayer: true,\\n      keepXfaLayer: true,\\n      keepTextLayer: true,\\n    });\\n  }\\n\\n  \u002F**\\n   * PLEASE NOTE: Most likely you want to use the `this.reset()` method,\\n   *              rather than calling this one directly.\\n   *\u002F\\n  cancelRendering({\\n    keepAnnotationLayer = false,\\n    keepAnnotationEditorLayer = false,\\n    keepXfaLayer = false,\\n    keepTextLayer = false,\\n    cancelExtraDelay = 0,\\n  } = {}) {\\n    if (this.renderTask) {\\n      this.renderTask.cancel(cancelExtraDelay);\\n      this.renderTask = null;\\n    }\\n    this.resume = null;\\n\\n    if (this.textLayer && (!keepTextLayer || !this.textLayer.div)) {\\n      this.textLayer.cancel();\\n      this.textLayer = null;\\n    }\\n    if (this.structTreeLayer && !this.textLayer) {\\n      this.structTreeLayer = null;\\n    }\\n    if (\\n      this.annotationLayer &&\\n      (!keepAnnotationLayer || !this.annotationLayer.div)\\n    ) {\\n      this.annotationLayer.cancel();\\n      this.annotationLayer = null;\\n      this._annotationCanvasMap = null;\\n    }\\n    if (\\n      this.annotationEditorLayer &&\\n      (!keepAnnotationEditorLayer || !this.annotationEditorLayer.div)\\n    ) {\\n      if (this.drawLayer) {\\n        this.drawLayer.cancel();\\n        this.drawLayer = null;\\n      }\\n      this.annotationEditorLayer.cancel();\\n      this.annotationEditorLayer = null;\\n    }\\n    if (this.xfaLayer && (!keepXfaLayer || !this.xfaLayer.div)) {\\n      this.xfaLayer.cancel();\\n      this.xfaLayer = null;\\n      this._textHighlighter?.disable();\\n    }\\n  }\\n\\n  cssTransform({\\n    target,\\n    redrawAnnotationLayer = false,\\n    redrawAnnotationEditorLayer = false,\\n    redrawXfaLayer = false,\\n    redrawTextLayer = false,\\n    hideTextLayer = false,\\n  }) {\\n    \u002F\u002F Scale target (canvas), its wrapper and page container.\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      !(target instanceof HTMLCanvasElement)\\n    ) {\\n      throw new Error(\\\"Expected `target` to be a canvas.\\\");\\n    }\\n    if (!target.hasAttribute(\\\"zooming\\\")) {\\n      target.setAttribute(\\\"zooming\\\", true);\\n      const { style } = target;\\n      style.width = style.height = \\\"\\\";\\n    }\\n\\n    const originalViewport = this.#viewportMap.get(target);\\n    if (this.viewport !== originalViewport) {\\n      \u002F\u002F The canvas may have been originally rotated; rotate relative to that.\\n      const relativeRotation =\\n        this.viewport.rotation - originalViewport.rotation;\\n      const absRotation = Math.abs(relativeRotation);\\n      let scaleX = 1,\\n        scaleY = 1;\\n      if (absRotation === 90 || absRotation === 270) {\\n        const { width, height } = this.viewport;\\n        \u002F\u002F Scale x and y because of the rotation.\\n        scaleX = height \u002F width;\\n        scaleY = width \u002F height;\\n      }\\n      target.style.transform = `rotate(${relativeRotation}deg) scale(${scaleX}, ${scaleY})`;\\n    }\\n\\n    if (redrawAnnotationLayer && this.annotationLayer) {\\n      this.#renderAnnotationLayer();\\n    }\\n    if (redrawAnnotationEditorLayer && this.annotationEditorLayer) {\\n      if (this.drawLayer) {\\n        this.#renderDrawLayer();\\n      }\\n      this.#renderAnnotationEditorLayer();\\n    }\\n    if (redrawXfaLayer && this.xfaLayer) {\\n      this.#renderXfaLayer();\\n    }\\n\\n    if (this.textLayer) {\\n      if (hideTextLayer) {\\n        this.textLayer.hide();\\n        this.structTreeLayer?.hide();\\n      } else if (redrawTextLayer) {\\n        this.#renderTextLayer();\\n      }\\n    }\\n  }\\n\\n  get width() {\\n    return this.viewport.width;\\n  }\\n\\n  get height() {\\n    return this.viewport.height;\\n  }\\n\\n  getPagePoint(x, y) {\\n    return this.viewport.convertToPdfPoint(x, y);\\n  }\\n\\n  async #finishRenderTask(renderTask, error = null) {\\n    \u002F\u002F The renderTask may have been replaced by a new one, so only remove\\n    \u002F\u002F the reference to the renderTask if it matches the one that is\\n    \u002F\u002F triggering this callback.\\n    if (renderTask === this.renderTask) {\\n      this.renderTask = null;\\n    }\\n\\n    if (error instanceof RenderingCancelledException) {\\n      this.#renderError = null;\\n      return;\\n    }\\n    this.#renderError = error;\\n\\n    this.renderingState = RenderingStates.FINISHED;\\n    this._resetZoomLayer(\u002F* removeFromDOM = *\u002F true);\\n\\n    \u002F\u002F Ensure that the thumbnails won't become partially (or fully) blank,\\n    \u002F\u002F for documents that contain interactive form elements.\\n    this.#useThumbnailCanvas.regularAnnotations = !renderTask.separateAnnots;\\n\\n    this.eventBus.dispatch(\\\"pagerendered\\\", {\\n      source: this,\\n      pageNumber: this.id,\\n      cssTransform: false,\\n      timestamp: performance.now(),\\n      error: this.#renderError,\\n    });\\n\\n    if (error) {\\n      throw error;\\n    }\\n  }\\n\\n  async draw() {\\n    if (this.renderingState !== RenderingStates.INITIAL) {\\n      console.error(\\\"Must be in new state before drawing\\\");\\n      this.reset(); \u002F\u002F Ensure that we reset all state to prevent issues.\\n    }\\n    const { div, l10n, pageColors, pdfPage, viewport } = this;\\n\\n    if (!pdfPage) {\\n      this.renderingState = RenderingStates.FINISHED;\\n      throw new Error(\\\"pdfPage is not loaded\\\");\\n    }\\n\\n    this.renderingState = RenderingStates.RUNNING;\\n\\n    \u002F\u002F Wrap the canvas so that if it has a CSS transform for high DPI the\\n    \u002F\u002F overflow will be hidden in Firefox.\\n    const canvasWrapper = document.createElement(\\\"div\\\");\\n    canvasWrapper.classList.add(\\\"canvasWrapper\\\");\\n    this.#addLayer(canvasWrapper, \\\"canvasWrapper\\\");\\n\\n    if (\\n      !this.textLayer &&\\n      this.#textLayerMode !== TextLayerMode.DISABLE &&\\n      !pdfPage.isPureXfa\\n    ) {\\n      this._accessibilityManager ||= new TextAccessibilityManager();\\n\\n      this.textLayer = new TextLayerBuilder({\\n        pdfPage,\\n        highlighter: this._textHighlighter,\\n        accessibilityManager: this._accessibilityManager,\\n        enablePermissions:\\n          this.#textLayerMode === TextLayerMode.ENABLE_PERMISSIONS,\\n        onAppend: textLayerDiv => {\\n          \u002F\u002F Pause translation when inserting the textLayer in the DOM.\\n          this.l10n.pause();\\n          this.#addLayer(textLayerDiv, \\\"textLayer\\\");\\n          this.l10n.resume();\\n        },\\n      });\\n    }\\n\\n    if (\\n      !this.annotationLayer &&\\n      this.#annotationMode !== AnnotationMode.DISABLE\\n    ) {\\n      const {\\n        annotationStorage,\\n        annotationEditorUIManager,\\n        downloadManager,\\n        enableScripting,\\n        fieldObjectsPromise,\\n        hasJSActionsPromise,\\n        linkService,\\n      } = this.#layerProperties;\\n\\n      this._annotationCanvasMap ||= new Map();\\n      this.annotationLayer = new AnnotationLayerBuilder({\\n        pdfPage,\\n        annotationStorage,\\n        imageResourcesPath: this.imageResourcesPath,\\n        renderForms: this.#annotationMode === AnnotationMode.ENABLE_FORMS,\\n        linkService,\\n        downloadManager,\\n        enableScripting,\\n        hasJSActionsPromise,\\n        fieldObjectsPromise,\\n        annotationCanvasMap: this._annotationCanvasMap,\\n        accessibilityManager: this._accessibilityManager,\\n        annotationEditorUIManager,\\n        onAppend: annotationLayerDiv => {\\n          this.#addLayer(annotationLayerDiv, \\\"annotationLayer\\\");\\n        },\\n      });\\n    }\\n\\n    const renderContinueCallback = cont => {\\n      showCanvas?.(false);\\n      if (this.renderingQueue && !this.renderingQueue.isHighestPriority(this)) {\\n        this.renderingState = RenderingStates.PAUSED;\\n        this.resume = () => {\\n          this.renderingState = RenderingStates.RUNNING;\\n          cont();\\n        };\\n        return;\\n      }\\n      cont();\\n    };\\n\\n    const { width, height } = viewport;\\n    const canvas = document.createElement(\\\"canvas\\\");\\n    canvas.setAttribute(\\\"role\\\", \\\"presentation\\\");\\n\\n    \u002F\u002F Keep the canvas hidden until the first draw callback, or until drawing\\n    \u002F\u002F is complete when `!this.renderingQueue`, to prevent black flickering.\\n    canvas.hidden = true;\\n    const hasHCM = !!(pageColors?.background && pageColors?.foreground);\\n\\n    let showCanvas = isLastShow => {\\n      \u002F\u002F In HCM, a final filter is applied on the canvas which means that\\n      \u002F\u002F before it's applied we've normal colors. Consequently, to avoid to have\\n      \u002F\u002F a final flash we just display it once all the drawing is done.\\n      if (!hasHCM || isLastShow) {\\n        canvas.hidden = false;\\n        showCanvas = null; \u002F\u002F Only invoke the function once.\\n      }\\n    };\\n    canvasWrapper.append(canvas);\\n    this.canvas = canvas;\\n\\n    const ctx = canvas.getContext(\\\"2d\\\", { alpha: false });\\n    const outputScale = (this.outputScale = new OutputScale());\\n\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) &&\\n      this.maxCanvasPixels === 0\\n    ) {\\n      const invScale = 1 \u002F this.scale;\\n      \u002F\u002F Use a scale that makes the canvas have the originally intended size\\n      \u002F\u002F of the page.\\n      outputScale.sx *= invScale;\\n      outputScale.sy *= invScale;\\n      this.#hasRestrictedScaling = true;\\n    } else if (this.maxCanvasPixels > 0) {\\n      const pixelsInViewport = width * height;\\n      const maxScale = Math.sqrt(this.maxCanvasPixels \u002F pixelsInViewport);\\n      if (outputScale.sx > maxScale || outputScale.sy > maxScale) {\\n        outputScale.sx = maxScale;\\n        outputScale.sy = maxScale;\\n        this.#hasRestrictedScaling = true;\\n      } else {\\n        this.#hasRestrictedScaling = false;\\n      }\\n    }\\n    const sfx = approximateFraction(outputScale.sx);\\n    const sfy = approximateFraction(outputScale.sy);\\n\\n    canvas.width = roundToDivide(width * outputScale.sx, sfx[0]);\\n    canvas.height = roundToDivide(height * outputScale.sy, sfy[0]);\\n    const { style } = canvas;\\n    style.width = roundToDivide(width, sfx[1]) + \\\"px\\\";\\n    style.height = roundToDivide(height, sfy[1]) + \\\"px\\\";\\n\\n    \u002F\u002F Add the viewport so it's known what it was originally drawn with.\\n    this.#viewportMap.set(canvas, viewport);\\n\\n    \u002F\u002F Rendering area\\n    const transform = outputScale.scaled\\n      ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0]\\n      : null;\\n    const renderContext = {\\n      canvasContext: ctx,\\n      transform,\\n      viewport,\\n      annotationMode: this.#annotationMode,\\n      optionalContentConfigPromise: this._optionalContentConfigPromise,\\n      annotationCanvasMap: this._annotationCanvasMap,\\n      pageColors,\\n    };\\n    const renderTask = (this.renderTask = pdfPage.render(renderContext));\\n    renderTask.onContinue = renderContinueCallback;\\n\\n    const resultPromise = renderTask.promise.then(\\n      async () => {\\n        showCanvas?.(true);\\n        await this.#finishRenderTask(renderTask);\\n\\n        this.#renderTextLayer();\\n\\n        if (this.annotationLayer) {\\n          await this.#renderAnnotationLayer();\\n        }\\n\\n        const { annotationEditorUIManager } = this.#layerProperties;\\n\\n        if (!annotationEditorUIManager) {\\n          return;\\n        }\\n\\n        this.drawLayer ||= new DrawLayerBuilder({\\n          pageIndex: this.id,\\n        });\\n        await this.#renderDrawLayer();\\n        this.drawLayer.setParent(canvasWrapper);\\n\\n        if (!this.annotationEditorLayer) {\\n          this.annotationEditorLayer = new AnnotationEditorLayerBuilder({\\n            uiManager: annotationEditorUIManager,\\n            pdfPage,\\n            l10n,\\n            accessibilityManager: this._accessibilityManager,\\n            annotationLayer: this.annotationLayer?.annotationLayer,\\n            textLayer: this.textLayer,\\n            drawLayer: this.drawLayer.getDrawLayer(),\\n            onAppend: annotationEditorLayerDiv => {\\n              this.#addLayer(annotationEditorLayerDiv, \\\"annotationEditorLayer\\\");\\n            },\\n          });\\n        }\\n        this.#renderAnnotationEditorLayer();\\n      },\\n      error => {\\n        \u002F\u002F When zooming with a `drawingDelay` set, avoid temporarily showing\\n        \u002F\u002F a black canvas if rendering was cancelled before the `onContinue`-\\n        \u002F\u002F callback had been invoked at least once.\\n        if (!(error instanceof RenderingCancelledException)) {\\n          showCanvas?.(true);\\n        }\\n        return this.#finishRenderTask(renderTask, error);\\n      }\\n    );\\n\\n    if (pdfPage.isPureXfa) {\\n      if (!this.xfaLayer) {\\n        const { annotationStorage, linkService } = this.#layerProperties;\\n\\n        this.xfaLayer = new XfaLayerBuilder({\\n          pdfPage,\\n          annotationStorage,\\n          linkService,\\n        });\\n      }\\n      this.#renderXfaLayer();\\n    }\\n\\n    div.setAttribute(\\\"data-loaded\\\", true);\\n\\n    this.eventBus.dispatch(\\\"pagerender\\\", {\\n      source: this,\\n      pageNumber: this.id,\\n    });\\n    return resultPromise;\\n  }\\n\\n  \u002F**\\n   * @param {string|null} label\\n   *\u002F\\n  setPageLabel(label) {\\n    this.pageLabel = typeof label === \\\"string\\\" ? label : null;\\n\\n    this.div.setAttribute(\\n      \\\"data-l10n-args\\\",\\n      JSON.stringify({ page: this.pageLabel ?? this.id })\\n    );\\n\\n    if (this.pageLabel !== null) {\\n      this.div.setAttribute(\\\"data-page-label\\\", this.pageLabel);\\n    } else {\\n      this.div.removeAttribute(\\\"data-page-label\\\");\\n    }\\n  }\\n\\n  \u002F**\\n   * For use by the `PDFThumbnailView.setImage`-method.\\n   * @ignore\\n   *\u002F\\n  get thumbnailCanvas() {\\n    const { directDrawing, initialOptionalContent, regularAnnotations } =\\n      this.#useThumbnailCanvas;\\n    return directDrawing && initialOptionalContent && regularAnnotations\\n      ? this.canvas\\n      : null;\\n  }\\n}\\n\\nexport { PDFPageView };\\n\",\"\u002F* Copyright 2014 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fapi\\\").PDFDocumentProxy} PDFDocumentProxy *\u002F\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fapi\\\").PDFPageProxy} PDFPageProxy *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fdisplay_utils\\\").PageViewport} PageViewport *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Foptional_content_config\\\").OptionalContentConfig} OptionalContentConfig *\u002F\\n\u002F** @typedef {import(\\\".\u002Fevent_utils\\\").EventBus} EventBus *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IDownloadManager} IDownloadManager *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IL10n} IL10n *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IPDFLinkService} IPDFLinkService *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fpdf_find_controller\\\").PDFFindController} PDFFindController *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fpdf_scripting_manager\\\").PDFScriptingManager} PDFScriptingManager *\u002F\\n\\nimport {\\n  AnnotationEditorType,\\n  AnnotationEditorUIManager,\\n  AnnotationMode,\\n  PermissionFlag,\\n  PixelsPerInch,\\n  shadow,\\n  version,\\n} from \\\"pdfjs-lib\\\";\\nimport {\\n  DEFAULT_SCALE,\\n  DEFAULT_SCALE_DELTA,\\n  DEFAULT_SCALE_VALUE,\\n  docStyle,\\n  getVisibleElements,\\n  isPortraitOrientation,\\n  isValidRotation,\\n  isValidScrollMode,\\n  isValidSpreadMode,\\n  MAX_AUTO_SCALE,\\n  MAX_SCALE,\\n  MIN_SCALE,\\n  PresentationModeState,\\n  removeNullCharacters,\\n  RenderingStates,\\n  SCROLLBAR_PADDING,\\n  scrollIntoView,\\n  ScrollMode,\\n  SpreadMode,\\n  TextLayerMode,\\n  UNKNOWN_SCALE,\\n  VERTICAL_PADDING,\\n  watchScroll,\\n} from \\\".\u002Fui_utils.js\\\";\\nimport { GenericL10n } from \\\"web-null_l10n\\\";\\nimport { PDFPageView } from \\\".\u002Fpdf_page_view.js\\\";\\nimport { PDFRenderingQueue } from \\\".\u002Fpdf_rendering_queue.js\\\";\\nimport { SimpleLinkService } from \\\".\u002Fpdf_link_service.js\\\";\\n\\nconst DEFAULT_CACHE_SIZE = 10;\\n\\nconst PagesCountLimit = {\\n  FORCE_SCROLL_MODE_PAGE: 15000,\\n  FORCE_LAZY_PAGE_INIT: 7500,\\n  PAUSE_EAGER_PAGE_INIT: 250,\\n};\\n\\nfunction isValidAnnotationEditorMode(mode) {\\n  return (\\n    Object.values(AnnotationEditorType).includes(mode) &&\\n    mode !== AnnotationEditorType.DISABLE\\n  );\\n}\\n\\n\u002F**\\n * @typedef {Object} PDFViewerOptions\\n * @property {HTMLDivElement} container - The container for the viewer element.\\n * @property {HTMLDivElement} [viewer] - The viewer element.\\n * @property {EventBus} eventBus - The application event bus.\\n * @property {IPDFLinkService} [linkService] - The navigation\u002Flinking service.\\n * @property {IDownloadManager} [downloadManager] - The download manager\\n *   component.\\n * @property {PDFFindController} [findController] - The find controller\\n *   component.\\n * @property {PDFScriptingManager} [scriptingManager] - The scripting manager\\n *   component.\\n * @property {PDFRenderingQueue} [renderingQueue] - The rendering queue object.\\n * @property {boolean} [removePageBorders] - Removes the border shadow around\\n *   the pages. The default value is `false`.\\n * @property {number} [textLayerMode] - Controls if the text layer used for\\n *   selection and searching is created. The constants from {TextLayerMode}\\n *   should be used. The default value is `TextLayerMode.ENABLE`.\\n * @property {number} [annotationMode] - Controls if the annotation layer is\\n *   created, and if interactive form elements or `AnnotationStorage`-data are\\n *   being rendered. The constants from {@link AnnotationMode} should be used;\\n *   see also {@link RenderParameters} and {@link GetOperatorListParameters}.\\n *   The default value is `AnnotationMode.ENABLE_FORMS`.\\n * @property {number} [annotationEditorMode] - Enables the creation and editing\\n *   of new Annotations. The constants from {@link AnnotationEditorType} should\\n *   be used. The default value is `AnnotationEditorType.NONE`.\\n * @property {string} [annotationEditorHighlightColors] - A comma separated list\\n *   of colors to propose to highlight some text in the pdf.\\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\\n *   mainly for annotation icons. Include trailing slash.\\n * @property {boolean} [enablePrintAutoRotate] - Enables automatic rotation of\\n *   landscape pages upon printing. The default is `false`.\\n * @property {number} [maxCanvasPixels] - The maximum supported canvas size in\\n *   total pixels, i.e. width * height. Use `-1` for no limit, or `0` for\\n *   CSS-only zooming. The default value is 4096 * 8192 (32 mega-pixels).\\n * @property {IL10n} [l10n] - Localization service.\\n * @property {boolean} [enablePermissions] - Enables PDF document permissions,\\n *   when they exist. The default value is `false`.\\n * @property {Object} [pageColors] - Overwrites background and foreground colors\\n *   with user defined ones in order to improve readability in high contrast\\n *   mode.\\n *\u002F\\n\\nclass PDFPageViewBuffer {\\n  \u002F\u002F Here we rely on the fact that `Set`s preserve the insertion order.\\n  #buf = new Set();\\n\\n  #size = 0;\\n\\n  constructor(size) {\\n    this.#size = size;\\n  }\\n\\n  push(view) {\\n    const buf = this.#buf;\\n    if (buf.has(view)) {\\n      buf.delete(view); \u002F\u002F Move the view to the \\\"end\\\" of the buffer.\\n    }\\n    buf.add(view);\\n\\n    if (buf.size > this.#size) {\\n      this.#destroyFirstView();\\n    }\\n  }\\n\\n  \u002F**\\n   * After calling resize, the size of the buffer will be `newSize`.\\n   * The optional parameter `idsToKeep` is, if present, a Set of page-ids to\\n   * push to the back of the buffer, delaying their destruction. The size of\\n   * `idsToKeep` has no impact on the final size of the buffer; if `idsToKeep`\\n   * is larger than `newSize`, some of those pages will be destroyed anyway.\\n   *\u002F\\n  resize(newSize, idsToKeep = null) {\\n    this.#size = newSize;\\n\\n    const buf = this.#buf;\\n    if (idsToKeep) {\\n      const ii = buf.size;\\n      let i = 1;\\n      for (const view of buf) {\\n        if (idsToKeep.has(view.id)) {\\n          buf.delete(view); \u002F\u002F Move the view to the \\\"end\\\" of the buffer.\\n          buf.add(view);\\n        }\\n        if (++i > ii) {\\n          break;\\n        }\\n      }\\n    }\\n\\n    while (buf.size > this.#size) {\\n      this.#destroyFirstView();\\n    }\\n  }\\n\\n  has(view) {\\n    return this.#buf.has(view);\\n  }\\n\\n  [Symbol.iterator]() {\\n    return this.#buf.keys();\\n  }\\n\\n  #destroyFirstView() {\\n    const firstView = this.#buf.keys().next().value;\\n\\n    firstView?.destroy();\\n    this.#buf.delete(firstView);\\n  }\\n}\\n\\n\u002F**\\n * Simple viewer control to display PDF content\u002Fpages.\\n *\u002F\\nclass PDFViewer {\\n  #buffer = null;\\n\\n  #altTextManager = null;\\n\\n  #annotationEditorHighlightColors = null;\\n\\n  #annotationEditorMode = AnnotationEditorType.NONE;\\n\\n  #annotationEditorUIManager = null;\\n\\n  #annotationMode = AnnotationMode.ENABLE_FORMS;\\n\\n  #containerTopLeft = null;\\n\\n  #enableHighlightFloatingButton = false;\\n\\n  #enablePermissions = false;\\n\\n  #eventAbortController = null;\\n\\n  #mlManager = null;\\n\\n  #getAllTextInProgress = false;\\n\\n  #hiddenCopyElement = null;\\n\\n  #interruptCopyCondition = false;\\n\\n  #previousContainerHeight = 0;\\n\\n  #resizeObserver = new ResizeObserver(this.#resizeObserverCallback.bind(this));\\n\\n  #scrollModePageState = null;\\n\\n  #scaleTimeoutId = null;\\n\\n  #textLayerMode = TextLayerMode.ENABLE;\\n\\n  \u002F**\\n   * @param {PDFViewerOptions} options\\n   *\u002F\\n  constructor(options) {\\n    const viewerVersion =\\n      typeof PDFJSDev !== \\\"undefined\\\" ? PDFJSDev.eval(\\\"BUNDLE_VERSION\\\") : null;\\n    if (version !== viewerVersion) {\\n      throw new Error(\\n        `The API version \\\"${version}\\\" does not match the Viewer version \\\"${viewerVersion}\\\".`\\n      );\\n    }\\n    this.container = options.container;\\n    this.viewer = options.viewer || options.container.firstElementChild;\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      if (this.container?.tagName !== \\\"DIV\\\" || this.viewer?.tagName !== \\\"DIV\\\") {\\n        throw new Error(\\\"Invalid `container` and\u002For `viewer` option.\\\");\\n      }\\n\\n      if (\\n        this.container.offsetParent &&\\n        getComputedStyle(this.container).position !== \\\"absolute\\\"\\n      ) {\\n        throw new Error(\\\"The `container` must be absolutely positioned.\\\");\\n      }\\n    }\\n    this.#resizeObserver.observe(this.container);\\n\\n    this.eventBus = options.eventBus;\\n    this.linkService = options.linkService || new SimpleLinkService();\\n    this.downloadManager = options.downloadManager || null;\\n    this.findController = options.findController || null;\\n    this.#altTextManager = options.altTextManager || null;\\n\\n    if (this.findController) {\\n      this.findController.onIsPageVisible = pageNumber =>\\n        this._getVisiblePages().ids.has(pageNumber);\\n    }\\n    this._scriptingManager = options.scriptingManager || null;\\n    this.#textLayerMode = options.textLayerMode ?? TextLayerMode.ENABLE;\\n    this.#annotationMode =\\n      options.annotationMode ?? AnnotationMode.ENABLE_FORMS;\\n    this.#annotationEditorMode =\\n      options.annotationEditorMode ?? AnnotationEditorType.NONE;\\n    this.#annotationEditorHighlightColors =\\n      options.annotationEditorHighlightColors || null;\\n    this.#enableHighlightFloatingButton =\\n      options.enableHighlightFloatingButton === true;\\n    this.imageResourcesPath = options.imageResourcesPath || \\\"\\\";\\n    this.enablePrintAutoRotate = options.enablePrintAutoRotate || false;\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      this.removePageBorders = options.removePageBorders || false;\\n    }\\n    this.maxCanvasPixels = options.maxCanvasPixels;\\n    this.l10n = options.l10n;\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      this.l10n ||= new GenericL10n();\\n    }\\n    this.#enablePermissions = options.enablePermissions || false;\\n    this.pageColors = options.pageColors || null;\\n    this.#mlManager = options.mlManager || null;\\n\\n    this.defaultRenderingQueue = !options.renderingQueue;\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) &&\\n      this.defaultRenderingQueue\\n    ) {\\n      \u002F\u002F Custom rendering queue is not specified, using default one\\n      this.renderingQueue = new PDFRenderingQueue();\\n      this.renderingQueue.setViewer(this);\\n    } else {\\n      this.renderingQueue = options.renderingQueue;\\n    }\\n\\n    this.scroll = watchScroll(this.container, this._scrollUpdate.bind(this));\\n    this.presentationModeState = PresentationModeState.UNKNOWN;\\n    this._resetView();\\n\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) &&\\n      this.removePageBorders\\n    ) {\\n      this.viewer.classList.add(\\\"removePageBorders\\\");\\n    }\\n\\n    this.#updateContainerHeightCss();\\n\\n    \u002F\u002F Trigger API-cleanup, once thumbnail rendering has finished,\\n    \u002F\u002F if the relevant pageView is *not* cached in the buffer.\\n    this.eventBus._on(\\\"thumbnailrendered\\\", ({ pageNumber, pdfPage }) => {\\n      const pageView = this._pages[pageNumber - 1];\\n      if (!this.#buffer.has(pageView)) {\\n        pdfPage?.cleanup();\\n      }\\n    });\\n\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) &&\\n      !options.l10n\\n    ) {\\n      \u002F\u002F Ensure that Fluent is connected in e.g. the COMPONENTS build.\\n      this.l10n.translate(this.container);\\n    }\\n  }\\n\\n  get pagesCount() {\\n    return this._pages.length;\\n  }\\n\\n  getPageView(index) {\\n    return this._pages[index];\\n  }\\n\\n  getCachedPageViews() {\\n    return new Set(this.#buffer);\\n  }\\n\\n  \u002F**\\n   * @type {boolean} - True if all {PDFPageView} objects are initialized.\\n   *\u002F\\n  get pageViewsReady() {\\n    \u002F\u002F Prevent printing errors when 'disableAutoFetch' is set, by ensuring\\n    \u002F\u002F that *all* pages have in fact been completely loaded.\\n    return this._pages.every(pageView => pageView?.pdfPage);\\n  }\\n\\n  \u002F**\\n   * @type {boolean}\\n   *\u002F\\n  get renderForms() {\\n    return this.#annotationMode === AnnotationMode.ENABLE_FORMS;\\n  }\\n\\n  \u002F**\\n   * @type {boolean}\\n   *\u002F\\n  get enableScripting() {\\n    return !!this._scriptingManager;\\n  }\\n\\n  \u002F**\\n   * @type {number}\\n   *\u002F\\n  get currentPageNumber() {\\n    return this._currentPageNumber;\\n  }\\n\\n  \u002F**\\n   * @param {number} val - The page number.\\n   *\u002F\\n  set currentPageNumber(val) {\\n    if (!Number.isInteger(val)) {\\n      throw new Error(\\\"Invalid page number.\\\");\\n    }\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    \u002F\u002F The intent can be to just reset a scroll position and\u002For scale.\\n    if (!this._setCurrentPageNumber(val, \u002F* resetCurrentPageView = *\u002F true)) {\\n      console.error(`currentPageNumber: \\\"${val}\\\" is not a valid page.`);\\n    }\\n  }\\n\\n  \u002F**\\n   * @returns {boolean} Whether the pageNumber is valid (within bounds).\\n   * @private\\n   *\u002F\\n  _setCurrentPageNumber(val, resetCurrentPageView = false) {\\n    if (this._currentPageNumber === val) {\\n      if (resetCurrentPageView) {\\n        this.#resetCurrentPageView();\\n      }\\n      return true;\\n    }\\n\\n    if (!(0 \u003C val && val \u003C= this.pagesCount)) {\\n      return false;\\n    }\\n    const previous = this._currentPageNumber;\\n    this._currentPageNumber = val;\\n\\n    this.eventBus.dispatch(\\\"pagechanging\\\", {\\n      source: this,\\n      pageNumber: val,\\n      pageLabel: this._pageLabels?.[val - 1] ?? null,\\n      previous,\\n    });\\n\\n    if (resetCurrentPageView) {\\n      this.#resetCurrentPageView();\\n    }\\n    return true;\\n  }\\n\\n  \u002F**\\n   * @type {string|null} Returns the current page label, or `null` if no page\\n   *   labels exist.\\n   *\u002F\\n  get currentPageLabel() {\\n    return this._pageLabels?.[this._currentPageNumber - 1] ?? null;\\n  }\\n\\n  \u002F**\\n   * @param {string} val - The page label.\\n   *\u002F\\n  set currentPageLabel(val) {\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    let page = val | 0; \u002F\u002F Fallback page number.\\n    if (this._pageLabels) {\\n      const i = this._pageLabels.indexOf(val);\\n      if (i >= 0) {\\n        page = i + 1;\\n      }\\n    }\\n    \u002F\u002F The intent can be to just reset a scroll position and\u002For scale.\\n    if (!this._setCurrentPageNumber(page, \u002F* resetCurrentPageView = *\u002F true)) {\\n      console.error(`currentPageLabel: \\\"${val}\\\" is not a valid page.`);\\n    }\\n  }\\n\\n  \u002F**\\n   * @type {number}\\n   *\u002F\\n  get currentScale() {\\n    return this._currentScale !== UNKNOWN_SCALE\\n      ? this._currentScale\\n      : DEFAULT_SCALE;\\n  }\\n\\n  \u002F**\\n   * @param {number} val - Scale of the pages in percents.\\n   *\u002F\\n  set currentScale(val) {\\n    if (isNaN(val)) {\\n      throw new Error(\\\"Invalid numeric scale.\\\");\\n    }\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    this.#setScale(val, { noScroll: false });\\n  }\\n\\n  \u002F**\\n   * @type {string}\\n   *\u002F\\n  get currentScaleValue() {\\n    return this._currentScaleValue;\\n  }\\n\\n  \u002F**\\n   * @param val - The scale of the pages (in percent or predefined value).\\n   *\u002F\\n  set currentScaleValue(val) {\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    this.#setScale(val, { noScroll: false });\\n  }\\n\\n  \u002F**\\n   * @type {number}\\n   *\u002F\\n  get pagesRotation() {\\n    return this._pagesRotation;\\n  }\\n\\n  \u002F**\\n   * @param {number} rotation - The rotation of the pages (0, 90, 180, 270).\\n   *\u002F\\n  set pagesRotation(rotation) {\\n    if (!isValidRotation(rotation)) {\\n      throw new Error(\\\"Invalid pages rotation angle.\\\");\\n    }\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    \u002F\u002F Normalize the rotation, by clamping it to the [0, 360) range.\\n    rotation %= 360;\\n    if (rotation \u003C 0) {\\n      rotation += 360;\\n    }\\n    if (this._pagesRotation === rotation) {\\n      return; \u002F\u002F The rotation didn't change.\\n    }\\n    this._pagesRotation = rotation;\\n\\n    const pageNumber = this._currentPageNumber;\\n\\n    this.refresh(true, { rotation });\\n\\n    \u002F\u002F Prevent errors in case the rotation changes *before* the scale has been\\n    \u002F\u002F set to a non-default value.\\n    if (this._currentScaleValue) {\\n      this.#setScale(this._currentScaleValue, { noScroll: true });\\n    }\\n\\n    this.eventBus.dispatch(\\\"rotationchanging\\\", {\\n      source: this,\\n      pagesRotation: rotation,\\n      pageNumber,\\n    });\\n\\n    if (this.defaultRenderingQueue) {\\n      this.update();\\n    }\\n  }\\n\\n  get firstPagePromise() {\\n    return this.pdfDocument ? this._firstPageCapability.promise : null;\\n  }\\n\\n  get onePageRendered() {\\n    return this.pdfDocument ? this._onePageRenderedCapability.promise : null;\\n  }\\n\\n  get pagesPromise() {\\n    return this.pdfDocument ? this._pagesCapability.promise : null;\\n  }\\n\\n  get _layerProperties() {\\n    const self = this;\\n    return shadow(this, \\\"_layerProperties\\\", {\\n      get annotationEditorUIManager() {\\n        return self.#annotationEditorUIManager;\\n      },\\n      get annotationStorage() {\\n        return self.pdfDocument?.annotationStorage;\\n      },\\n      get downloadManager() {\\n        return self.downloadManager;\\n      },\\n      get enableScripting() {\\n        return !!self._scriptingManager;\\n      },\\n      get fieldObjectsPromise() {\\n        return self.pdfDocument?.getFieldObjects();\\n      },\\n      get findController() {\\n        return self.findController;\\n      },\\n      get hasJSActionsPromise() {\\n        return self.pdfDocument?.hasJSActions();\\n      },\\n      get linkService() {\\n        return self.linkService;\\n      },\\n    });\\n  }\\n\\n  \u002F**\\n   * Currently only *some* permissions are supported.\\n   * @returns {Object}\\n   *\u002F\\n  #initializePermissions(permissions) {\\n    const params = {\\n      annotationEditorMode: this.#annotationEditorMode,\\n      annotationMode: this.#annotationMode,\\n      textLayerMode: this.#textLayerMode,\\n    };\\n    if (!permissions) {\\n      return params;\\n    }\\n\\n    if (\\n      !permissions.includes(PermissionFlag.COPY) &&\\n      this.#textLayerMode === TextLayerMode.ENABLE\\n    ) {\\n      params.textLayerMode = TextLayerMode.ENABLE_PERMISSIONS;\\n    }\\n\\n    if (!permissions.includes(PermissionFlag.MODIFY_CONTENTS)) {\\n      params.annotationEditorMode = AnnotationEditorType.DISABLE;\\n    }\\n\\n    if (\\n      !permissions.includes(PermissionFlag.MODIFY_ANNOTATIONS) &&\\n      !permissions.includes(PermissionFlag.FILL_INTERACTIVE_FORMS) &&\\n      this.#annotationMode === AnnotationMode.ENABLE_FORMS\\n    ) {\\n      params.annotationMode = AnnotationMode.ENABLE;\\n    }\\n\\n    return params;\\n  }\\n\\n  async #onePageRenderedOrForceFetch(signal) {\\n    \u002F\u002F Unless the viewer *and* its pages are visible, rendering won't start and\\n    \u002F\u002F `this._onePageRenderedCapability` thus won't be resolved.\\n    \u002F\u002F To ensure that automatic printing, on document load, still works even in\\n    \u002F\u002F those cases we force-allow fetching of all pages when:\\n    \u002F\u002F  - The current window\u002Ftab is inactive, which will prevent rendering since\\n    \u002F\u002F    `requestAnimationFrame` is being used; fixes bug 1746213.\\n    \u002F\u002F  - The viewer is hidden in the DOM, e.g. in a `display: none` \u003Ciframe>\\n    \u002F\u002F    element; fixes bug 1618621.\\n    \u002F\u002F  - The viewer is visible, but none of the pages are (e.g. if the\\n    \u002F\u002F    viewer is very small); fixes bug 1618955.\\n    if (\\n      document.visibilityState === \\\"hidden\\\" ||\\n      !this.container.offsetParent ||\\n      this._getVisiblePages().views.length === 0\\n    ) {\\n      return;\\n    }\\n\\n    \u002F\u002F Handle the window\u002Ftab becoming inactive *after* rendering has started;\\n    \u002F\u002F fixes (another part of) bug 1746213.\\n    const hiddenCapability = Promise.withResolvers();\\n    function onVisibilityChange() {\\n      if (document.visibilityState === \\\"hidden\\\") {\\n        hiddenCapability.resolve();\\n      }\\n    }\\n    document.addEventListener(\\\"visibilitychange\\\", onVisibilityChange, {\\n      signal,\\n    });\\n\\n    await Promise.race([\\n      this._onePageRenderedCapability.promise,\\n      hiddenCapability.promise,\\n    ]);\\n    \u002F\u002F Ensure that the \\\"visibilitychange\\\" listener is removed immediately.\\n    document.removeEventListener(\\\"visibilitychange\\\", onVisibilityChange);\\n  }\\n\\n  async getAllText() {\\n    const texts = [];\\n    const buffer = [];\\n    for (\\n      let pageNum = 1, pagesCount = this.pdfDocument.numPages;\\n      pageNum \u003C= pagesCount;\\n      ++pageNum\\n    ) {\\n      if (this.#interruptCopyCondition) {\\n        return null;\\n      }\\n      buffer.length = 0;\\n      const page = await this.pdfDocument.getPage(pageNum);\\n      \u002F\u002F By default getTextContent pass disableNormalization equals to false\\n      \u002F\u002F which is fine because we want a normalized string.\\n      const { items } = await page.getTextContent();\\n      for (const item of items) {\\n        if (item.str) {\\n          buffer.push(item.str);\\n        }\\n        if (item.hasEOL) {\\n          buffer.push(\\\"\\\\n\\\");\\n        }\\n      }\\n      texts.push(removeNullCharacters(buffer.join(\\\"\\\")));\\n    }\\n\\n    return texts.join(\\\"\\\\n\\\");\\n  }\\n\\n  #copyCallback(textLayerMode, event) {\\n    const selection = document.getSelection();\\n    const { focusNode, anchorNode } = selection;\\n    if (\\n      anchorNode &&\\n      focusNode &&\\n      selection.containsNode(this.#hiddenCopyElement)\\n    ) {\\n      \u002F\u002F About the condition above:\\n      \u002F\u002F  - having non-null anchorNode and focusNode are here to guaranty that\\n      \u002F\u002F    we have at least a kind of selection.\\n      \u002F\u002F  - this.#hiddenCopyElement is an invisible element which is impossible\\n      \u002F\u002F    to select manually (its display is none) but ctrl+A will select all\\n      \u002F\u002F    including this element so having it in the selection means that all\\n      \u002F\u002F    has been selected.\\n\\n      if (\\n        this.#getAllTextInProgress ||\\n        textLayerMode === TextLayerMode.ENABLE_PERMISSIONS\\n      ) {\\n        event.preventDefault();\\n        event.stopPropagation();\\n        return;\\n      }\\n      this.#getAllTextInProgress = true;\\n\\n      \u002F\u002F TODO: if all the pages are rendered we don't need to wait for\\n      \u002F\u002F getAllText and we could just get text from the Selection object.\\n\\n      \u002F\u002F Select all the document.\\n      const savedCursor = this.container.style.cursor;\\n      this.container.style.cursor = \\\"wait\\\";\\n\\n      const interruptCopy = ev =>\\n        (this.#interruptCopyCondition = ev.key === \\\"Escape\\\");\\n      window.addEventListener(\\\"keydown\\\", interruptCopy);\\n\\n      this.getAllText()\\n        .then(async text => {\\n          if (text !== null) {\\n            await navigator.clipboard.writeText(text);\\n          }\\n        })\\n        .catch(reason => {\\n          console.warn(\\n            `Something goes wrong when extracting the text: ${reason.message}`\\n          );\\n        })\\n        .finally(() => {\\n          this.#getAllTextInProgress = false;\\n          this.#interruptCopyCondition = false;\\n          window.removeEventListener(\\\"keydown\\\", interruptCopy);\\n          this.container.style.cursor = savedCursor;\\n        });\\n\\n      event.preventDefault();\\n      event.stopPropagation();\\n    }\\n  }\\n\\n  \u002F**\\n   * @param {PDFDocumentProxy} pdfDocument\\n   *\u002F\\n  setDocument(pdfDocument) {\\n    if (this.pdfDocument) {\\n      this.eventBus.dispatch(\\\"pagesdestroy\\\", { source: this });\\n\\n      this._cancelRendering();\\n      this._resetView();\\n\\n      this.findController?.setDocument(null);\\n      this._scriptingManager?.setDocument(null);\\n\\n      if (this.#annotationEditorUIManager) {\\n        this.#annotationEditorUIManager.destroy();\\n        this.#annotationEditorUIManager = null;\\n      }\\n    }\\n\\n    this.pdfDocument = pdfDocument;\\n    if (!pdfDocument) {\\n      return;\\n    }\\n    const pagesCount = pdfDocument.numPages;\\n    const firstPagePromise = pdfDocument.getPage(1);\\n    \u002F\u002F Rendering (potentially) depends on this, hence fetching it immediately.\\n    const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig({\\n      intent: \\\"display\\\",\\n    });\\n    const permissionsPromise = this.#enablePermissions\\n      ? pdfDocument.getPermissions()\\n      : Promise.resolve();\\n\\n    const { eventBus, pageColors, viewer } = this;\\n\\n    this.#eventAbortController = new AbortController();\\n    const { signal } = this.#eventAbortController;\\n\\n    \u002F\u002F Given that browsers don't handle huge amounts of DOM-elements very well,\\n    \u002F\u002F enforce usage of PAGE-scrolling when loading *very* long\u002Flarge documents.\\n    if (pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE) {\\n      console.warn(\\n        \\\"Forcing PAGE-scrolling for performance reasons, given the length of the document.\\\"\\n      );\\n      const mode = (this._scrollMode = ScrollMode.PAGE);\\n      eventBus.dispatch(\\\"scrollmodechanged\\\", { source: this, mode });\\n    }\\n\\n    this._pagesCapability.promise.then(\\n      () => {\\n        eventBus.dispatch(\\\"pagesloaded\\\", { source: this, pagesCount });\\n      },\\n      () => {\\n        \u002F* Prevent \\\"Uncaught (in promise)\\\"-messages in the console. *\u002F\\n      }\\n    );\\n\\n    const onBeforeDraw = evt => {\\n      const pageView = this._pages[evt.pageNumber - 1];\\n      if (!pageView) {\\n        return;\\n      }\\n      \u002F\u002F Add the page to the buffer at the start of drawing. That way it can be\\n      \u002F\u002F evicted from the buffer and destroyed even if we pause its rendering.\\n      this.#buffer.push(pageView);\\n    };\\n    eventBus._on(\\\"pagerender\\\", onBeforeDraw, { signal });\\n\\n    const onAfterDraw = evt => {\\n      if (evt.cssTransform) {\\n        return;\\n      }\\n      this._onePageRenderedCapability.resolve({ timestamp: evt.timestamp });\\n\\n      eventBus._off(\\\"pagerendered\\\", onAfterDraw); \u002F\u002F Remove immediately.\\n    };\\n    eventBus._on(\\\"pagerendered\\\", onAfterDraw, { signal });\\n\\n    \u002F\u002F Fetch a single page so we can get a viewport that will be the default\\n    \u002F\u002F viewport for all pages\\n    Promise.all([firstPagePromise, permissionsPromise])\\n      .then(([firstPdfPage, permissions]) => {\\n        if (pdfDocument !== this.pdfDocument) {\\n          return; \u002F\u002F The document was closed while the first page resolved.\\n        }\\n        this._firstPageCapability.resolve(firstPdfPage);\\n        this._optionalContentConfigPromise = optionalContentConfigPromise;\\n\\n        const { annotationEditorMode, annotationMode, textLayerMode } =\\n          this.#initializePermissions(permissions);\\n\\n        if (textLayerMode !== TextLayerMode.DISABLE) {\\n          const element = (this.#hiddenCopyElement =\\n            document.createElement(\\\"div\\\"));\\n          element.id = \\\"hiddenCopyElement\\\";\\n          viewer.before(element);\\n        }\\n\\n        if (annotationEditorMode !== AnnotationEditorType.DISABLE) {\\n          const mode = annotationEditorMode;\\n\\n          if (pdfDocument.isPureXfa) {\\n            console.warn(\\\"Warning: XFA-editing is not implemented.\\\");\\n          } else if (isValidAnnotationEditorMode(mode)) {\\n            this.#annotationEditorUIManager = new AnnotationEditorUIManager(\\n              this.container,\\n              viewer,\\n              this.#altTextManager,\\n              eventBus,\\n              pdfDocument,\\n              pageColors,\\n              this.#annotationEditorHighlightColors,\\n              this.#enableHighlightFloatingButton,\\n              this.#mlManager\\n            );\\n            eventBus.dispatch(\\\"annotationeditoruimanager\\\", {\\n              source: this,\\n              uiManager: this.#annotationEditorUIManager,\\n            });\\n            if (mode !== AnnotationEditorType.NONE) {\\n              this.#annotationEditorUIManager.updateMode(mode);\\n            }\\n          } else {\\n            console.error(`Invalid AnnotationEditor mode: ${mode}`);\\n          }\\n        }\\n\\n        const viewerElement =\\n          this._scrollMode === ScrollMode.PAGE ? null : viewer;\\n        const scale = this.currentScale;\\n        const viewport = firstPdfPage.getViewport({\\n          scale: scale * PixelsPerInch.PDF_TO_CSS_UNITS,\\n        });\\n        \u002F\u002F Ensure that the various layers always get the correct initial size,\\n        \u002F\u002F see issue 15795.\\n        viewer.style.setProperty(\\\"--scale-factor\\\", viewport.scale);\\n        if (\\n          pageColors?.foreground === \\\"CanvasText\\\" ||\\n          pageColors?.background === \\\"Canvas\\\"\\n        ) {\\n          viewer.style.setProperty(\\n            \\\"--hcm-highlight-filter\\\",\\n            pdfDocument.filterFactory.addHighlightHCMFilter(\\n              \\\"highlight\\\",\\n              \\\"CanvasText\\\",\\n              \\\"Canvas\\\",\\n              \\\"HighlightText\\\",\\n              \\\"Highlight\\\"\\n            )\\n          );\\n          viewer.style.setProperty(\\n            \\\"--hcm-highlight-selected-filter\\\",\\n            pdfDocument.filterFactory.addHighlightHCMFilter(\\n              \\\"highlight_selected\\\",\\n              \\\"CanvasText\\\",\\n              \\\"Canvas\\\",\\n              \\\"HighlightText\\\",\\n              \\\"ButtonText\\\"\\n            )\\n          );\\n        }\\n\\n        for (let pageNum = 1; pageNum \u003C= pagesCount; ++pageNum) {\\n          const pageView = new PDFPageView({\\n            container: viewerElement,\\n            eventBus,\\n            id: pageNum,\\n            scale,\\n            defaultViewport: viewport.clone(),\\n            optionalContentConfigPromise,\\n            renderingQueue: this.renderingQueue,\\n            textLayerMode,\\n            annotationMode,\\n            imageResourcesPath: this.imageResourcesPath,\\n            maxCanvasPixels: this.maxCanvasPixels,\\n            pageColors,\\n            l10n: this.l10n,\\n            layerProperties: this._layerProperties,\\n          });\\n          this._pages.push(pageView);\\n        }\\n        \u002F\u002F Set the first `pdfPage` immediately, since it's already loaded,\\n        \u002F\u002F rather than having to repeat the `PDFDocumentProxy.getPage` call in\\n        \u002F\u002F the `this.#ensurePdfPageLoaded` method before rendering can start.\\n        this._pages[0]?.setPdfPage(firstPdfPage);\\n\\n        if (this._scrollMode === ScrollMode.PAGE) {\\n          \u002F\u002F Ensure that the current page becomes visible on document load.\\n          this.#ensurePageViewVisible();\\n        } else if (this._spreadMode !== SpreadMode.NONE) {\\n          this._updateSpreadMode();\\n        }\\n\\n        \u002F\u002F Fetch all the pages since the viewport is needed before printing\\n        \u002F\u002F starts to create the correct size canvas. Wait until one page is\\n        \u002F\u002F rendered so we don't tie up too many resources early on.\\n        this.#onePageRenderedOrForceFetch(signal).then(async () => {\\n          if (pdfDocument !== this.pdfDocument) {\\n            return; \u002F\u002F The document was closed while the first page rendered.\\n          }\\n          this.findController?.setDocument(pdfDocument); \u002F\u002F Enable searching.\\n          this._scriptingManager?.setDocument(pdfDocument); \u002F\u002F Enable scripting.\\n\\n          if (this.#hiddenCopyElement) {\\n            document.addEventListener(\\n              \\\"copy\\\",\\n              this.#copyCallback.bind(this, textLayerMode),\\n              { signal }\\n            );\\n          }\\n\\n          if (this.#annotationEditorUIManager) {\\n            \u002F\u002F Ensure that the Editor buttons, in the toolbar, are updated.\\n            eventBus.dispatch(\\\"annotationeditormodechanged\\\", {\\n              source: this,\\n              mode: this.#annotationEditorMode,\\n            });\\n          }\\n\\n          \u002F\u002F In addition to 'disableAutoFetch' being set, also attempt to reduce\\n          \u002F\u002F resource usage when loading *very* long\u002Flarge documents.\\n          if (\\n            pdfDocument.loadingParams.disableAutoFetch ||\\n            pagesCount > PagesCountLimit.FORCE_LAZY_PAGE_INIT\\n          ) {\\n            \u002F\u002F XXX: Printing is semi-broken with auto fetch disabled.\\n            this._pagesCapability.resolve();\\n            return;\\n          }\\n          let getPagesLeft = pagesCount - 1; \u002F\u002F The first page was already loaded.\\n\\n          if (getPagesLeft \u003C= 0) {\\n            this._pagesCapability.resolve();\\n            return;\\n          }\\n          for (let pageNum = 2; pageNum \u003C= pagesCount; ++pageNum) {\\n            const promise = pdfDocument.getPage(pageNum).then(\\n              pdfPage => {\\n                const pageView = this._pages[pageNum - 1];\\n                if (!pageView.pdfPage) {\\n                  pageView.setPdfPage(pdfPage);\\n                }\\n                if (--getPagesLeft === 0) {\\n                  this._pagesCapability.resolve();\\n                }\\n              },\\n              reason => {\\n                console.error(\\n                  `Unable to get page ${pageNum} to initialize viewer`,\\n                  reason\\n                );\\n                if (--getPagesLeft === 0) {\\n                  this._pagesCapability.resolve();\\n                }\\n              }\\n            );\\n\\n            if (pageNum % PagesCountLimit.PAUSE_EAGER_PAGE_INIT === 0) {\\n              await promise;\\n            }\\n          }\\n        });\\n\\n        eventBus.dispatch(\\\"pagesinit\\\", { source: this });\\n\\n        pdfDocument.getMetadata().then(({ info }) => {\\n          if (pdfDocument !== this.pdfDocument) {\\n            return; \u002F\u002F The document was closed while the metadata resolved.\\n          }\\n          if (info.Language) {\\n            viewer.lang = info.Language;\\n          }\\n        });\\n\\n        if (this.defaultRenderingQueue) {\\n          this.update();\\n        }\\n      })\\n      .catch(reason => {\\n        console.error(\\\"Unable to initialize viewer\\\", reason);\\n\\n        this._pagesCapability.reject(reason);\\n      });\\n  }\\n\\n  \u002F**\\n   * @param {Array|null} labels\\n   *\u002F\\n  setPageLabels(labels) {\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    if (!labels) {\\n      this._pageLabels = null;\\n    } else if (\\n      !(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)\\n    ) {\\n      this._pageLabels = null;\\n      console.error(`setPageLabels: Invalid page labels.`);\\n    } else {\\n      this._pageLabels = labels;\\n    }\\n    \u002F\u002F Update all the `PDFPageView` instances.\\n    for (let i = 0, ii = this._pages.length; i \u003C ii; i++) {\\n      this._pages[i].setPageLabel(this._pageLabels?.[i] ?? null);\\n    }\\n  }\\n\\n  _resetView() {\\n    this._pages = [];\\n    this._currentPageNumber = 1;\\n    this._currentScale = UNKNOWN_SCALE;\\n    this._currentScaleValue = null;\\n    this._pageLabels = null;\\n    this.#buffer = new PDFPageViewBuffer(DEFAULT_CACHE_SIZE);\\n    this._location = null;\\n    this._pagesRotation = 0;\\n    this._optionalContentConfigPromise = null;\\n    this._firstPageCapability = Promise.withResolvers();\\n    this._onePageRenderedCapability = Promise.withResolvers();\\n    this._pagesCapability = Promise.withResolvers();\\n    this._scrollMode = ScrollMode.VERTICAL;\\n    this._previousScrollMode = ScrollMode.UNKNOWN;\\n    this._spreadMode = SpreadMode.NONE;\\n\\n    this.#scrollModePageState = {\\n      previousPageNumber: 1,\\n      scrollDown: true,\\n      pages: [],\\n    };\\n\\n    this.#eventAbortController?.abort();\\n    this.#eventAbortController = null;\\n\\n    \u002F\u002F Remove the pages from the DOM...\\n    this.viewer.textContent = \\\"\\\";\\n    \u002F\u002F ... and reset the Scroll mode CSS class(es) afterwards.\\n    this._updateScrollMode();\\n\\n    this.viewer.removeAttribute(\\\"lang\\\");\\n\\n    this.#hiddenCopyElement?.remove();\\n    this.#hiddenCopyElement = null;\\n  }\\n\\n  #ensurePageViewVisible() {\\n    if (this._scrollMode !== ScrollMode.PAGE) {\\n      throw new Error(\\\"#ensurePageViewVisible: Invalid scrollMode value.\\\");\\n    }\\n    const pageNumber = this._currentPageNumber,\\n      state = this.#scrollModePageState,\\n      viewer = this.viewer;\\n\\n    \u002F\u002F Temporarily remove all the pages from the DOM...\\n    viewer.textContent = \\\"\\\";\\n    \u002F\u002F ... and clear out the active ones.\\n    state.pages.length = 0;\\n\\n    if (this._spreadMode === SpreadMode.NONE && !this.isInPresentationMode) {\\n      \u002F\u002F Finally, append the new page to the viewer.\\n      const pageView = this._pages[pageNumber - 1];\\n      viewer.append(pageView.div);\\n\\n      state.pages.push(pageView);\\n    } else {\\n      const pageIndexSet = new Set(),\\n        parity = this._spreadMode - 1;\\n\\n      \u002F\u002F Determine the pageIndices in the new spread.\\n      if (parity === -1) {\\n        \u002F\u002F PresentationMode is active, with `SpreadMode.NONE` set.\\n        pageIndexSet.add(pageNumber - 1);\\n      } else if (pageNumber % 2 !== parity) {\\n        \u002F\u002F Left-hand side page.\\n        pageIndexSet.add(pageNumber - 1);\\n        pageIndexSet.add(pageNumber);\\n      } else {\\n        \u002F\u002F Right-hand side page.\\n        pageIndexSet.add(pageNumber - 2);\\n        pageIndexSet.add(pageNumber - 1);\\n      }\\n\\n      \u002F\u002F Finally, append the new pages to the viewer and apply the spreadMode.\\n      const spread = document.createElement(\\\"div\\\");\\n      spread.className = \\\"spread\\\";\\n\\n      if (this.isInPresentationMode) {\\n        const dummyPage = document.createElement(\\\"div\\\");\\n        dummyPage.className = \\\"dummyPage\\\";\\n        spread.append(dummyPage);\\n      }\\n\\n      for (const i of pageIndexSet) {\\n        const pageView = this._pages[i];\\n        if (!pageView) {\\n          continue;\\n        }\\n        spread.append(pageView.div);\\n\\n        state.pages.push(pageView);\\n      }\\n      viewer.append(spread);\\n    }\\n\\n    state.scrollDown = pageNumber >= state.previousPageNumber;\\n    state.previousPageNumber = pageNumber;\\n  }\\n\\n  _scrollUpdate() {\\n    if (this.pagesCount === 0) {\\n      return;\\n    }\\n    this.update();\\n  }\\n\\n  #scrollIntoView(pageView, pageSpot = null) {\\n    const { div, id } = pageView;\\n\\n    \u002F\u002F Ensure that `this._currentPageNumber` is correct, when `#scrollIntoView`\\n    \u002F\u002F is called directly (and not from `#resetCurrentPageView`).\\n    if (this._currentPageNumber !== id) {\\n      this._setCurrentPageNumber(id);\\n    }\\n    if (this._scrollMode === ScrollMode.PAGE) {\\n      this.#ensurePageViewVisible();\\n      \u002F\u002F Ensure that rendering always occurs, to avoid showing a blank page,\\n      \u002F\u002F even if the current position doesn't change when the page is scrolled.\\n      this.update();\\n    }\\n\\n    if (!pageSpot && !this.isInPresentationMode) {\\n      const left = div.offsetLeft + div.clientLeft,\\n        right = left + div.clientWidth;\\n      const { scrollLeft, clientWidth } = this.container;\\n      if (\\n        this._scrollMode === ScrollMode.HORIZONTAL ||\\n        left \u003C scrollLeft ||\\n        right > scrollLeft + clientWidth\\n      ) {\\n        pageSpot = { left: 0, top: 0 };\\n      }\\n    }\\n    scrollIntoView(div, pageSpot);\\n\\n    \u002F\u002F Ensure that the correct *initial* document position is set, when any\\n    \u002F\u002F OpenParameters are used, for documents with non-default Scroll\u002FSpread\\n    \u002F\u002F modes (fixes issue 15695). This is necessary since the scroll-handler\\n    \u002F\u002F invokes the `update`-method asynchronously, and `this._location` could\\n    \u002F\u002F thus be wrong when the initial zooming occurs in the default viewer.\\n    if (!this._currentScaleValue && this._location) {\\n      this._location = null;\\n    }\\n  }\\n\\n  \u002F**\\n   * Prevent unnecessary re-rendering of all pages when the scale changes\\n   * only because of limited numerical precision.\\n   *\u002F\\n  #isSameScale(newScale) {\\n    return (\\n      newScale === this._currentScale ||\\n      Math.abs(newScale - this._currentScale) \u003C 1e-15\\n    );\\n  }\\n\\n  #setScaleUpdatePages(\\n    newScale,\\n    newValue,\\n    { noScroll = false, preset = false, drawingDelay = -1, origin = null }\\n  ) {\\n    this._currentScaleValue = newValue.toString();\\n\\n    if (this.#isSameScale(newScale)) {\\n      if (preset) {\\n        this.eventBus.dispatch(\\\"scalechanging\\\", {\\n          source: this,\\n          scale: newScale,\\n          presetValue: newValue,\\n        });\\n      }\\n      return;\\n    }\\n\\n    this.viewer.style.setProperty(\\n      \\\"--scale-factor\\\",\\n      newScale * PixelsPerInch.PDF_TO_CSS_UNITS\\n    );\\n\\n    const postponeDrawing = drawingDelay >= 0 && drawingDelay \u003C 1000;\\n    this.refresh(true, {\\n      scale: newScale,\\n      drawingDelay: postponeDrawing ? drawingDelay : -1,\\n    });\\n\\n    if (postponeDrawing) {\\n      this.#scaleTimeoutId = setTimeout(() => {\\n        this.#scaleTimeoutId = null;\\n        this.refresh();\\n      }, drawingDelay);\\n    }\\n\\n    const previousScale = this._currentScale;\\n    this._currentScale = newScale;\\n\\n    if (!noScroll) {\\n      let page = this._currentPageNumber,\\n        dest;\\n      if (\\n        this._location &&\\n        !(this.isInPresentationMode || this.isChangingPresentationMode)\\n      ) {\\n        page = this._location.pageNumber;\\n        dest = [\\n          null,\\n          { name: \\\"XYZ\\\" },\\n          this._location.left,\\n          this._location.top,\\n          null,\\n        ];\\n      }\\n      this.scrollPageIntoView({\\n        pageNumber: page,\\n        destArray: dest,\\n        allowNegativeOffset: true,\\n      });\\n      if (Array.isArray(origin)) {\\n        \u002F\u002F If the origin of the scaling transform is specified, preserve its\\n        \u002F\u002F location on screen. If not specified, scaling will fix the top-left\\n        \u002F\u002F corner of the visible PDF area.\\n        const scaleDiff = newScale \u002F previousScale - 1;\\n        const [top, left] = this.containerTopLeft;\\n        this.container.scrollLeft += (origin[0] - left) * scaleDiff;\\n        this.container.scrollTop += (origin[1] - top) * scaleDiff;\\n      }\\n    }\\n\\n    this.eventBus.dispatch(\\\"scalechanging\\\", {\\n      source: this,\\n      scale: newScale,\\n      presetValue: preset ? newValue : undefined,\\n    });\\n\\n    if (this.defaultRenderingQueue) {\\n      this.update();\\n    }\\n  }\\n\\n  get #pageWidthScaleFactor() {\\n    if (\\n      this._spreadMode !== SpreadMode.NONE &&\\n      this._scrollMode !== ScrollMode.HORIZONTAL\\n    ) {\\n      return 2;\\n    }\\n    return 1;\\n  }\\n\\n  #setScale(value, options) {\\n    let scale = parseFloat(value);\\n\\n    if (scale > 0) {\\n      options.preset = false;\\n      this.#setScaleUpdatePages(scale, value, options);\\n    } else {\\n      const currentPage = this._pages[this._currentPageNumber - 1];\\n      if (!currentPage) {\\n        return;\\n      }\\n      let hPadding = SCROLLBAR_PADDING,\\n        vPadding = VERTICAL_PADDING;\\n\\n      if (this.isInPresentationMode) {\\n        \u002F\u002F Pages have a 2px (transparent) border in PresentationMode, see\\n        \u002F\u002F the `web\u002Fpdf_viewer.css` file.\\n        hPadding = vPadding = 4; \u002F\u002F 2 * 2px\\n        if (this._spreadMode !== SpreadMode.NONE) {\\n          \u002F\u002F Account for two pages being visible in PresentationMode, thus\\n          \u002F\u002F \\\"doubling\\\" the total border width.\\n          hPadding *= 2;\\n        }\\n      } else if (\\n        (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) &&\\n        this.removePageBorders\\n      ) {\\n        hPadding = vPadding = 0;\\n      } else if (this._scrollMode === ScrollMode.HORIZONTAL) {\\n        [hPadding, vPadding] = [vPadding, hPadding]; \u002F\u002F Swap the padding values.\\n      }\\n      const pageWidthScale =\\n        (((this.container.clientWidth - hPadding) \u002F currentPage.width) *\\n          currentPage.scale) \u002F\\n        this.#pageWidthScaleFactor;\\n      const pageHeightScale =\\n        ((this.container.clientHeight - vPadding) \u002F currentPage.height) *\\n        currentPage.scale;\\n      switch (value) {\\n        case \\\"page-actual\\\":\\n          scale = 1;\\n          break;\\n        case \\\"page-width\\\":\\n          scale = pageWidthScale;\\n          break;\\n        case \\\"page-height\\\":\\n          scale = pageHeightScale;\\n          break;\\n        case \\\"page-fit\\\":\\n          scale = Math.min(pageWidthScale, pageHeightScale);\\n          break;\\n        case \\\"auto\\\":\\n          \u002F\u002F For pages in landscape mode, fit the page height to the viewer\\n          \u002F\u002F *unless* the page would thus become too wide to fit horizontally.\\n          const horizontalScale = isPortraitOrientation(currentPage)\\n            ? pageWidthScale\\n            : Math.min(pageHeightScale, pageWidthScale);\\n          scale = Math.min(MAX_AUTO_SCALE, horizontalScale);\\n          break;\\n        default:\\n          console.error(`#setScale: \\\"${value}\\\" is an unknown zoom value.`);\\n          return;\\n      }\\n      options.preset = true;\\n      this.#setScaleUpdatePages(scale, value, options);\\n    }\\n  }\\n\\n  \u002F**\\n   * Refreshes page view: scrolls to the current page and updates the scale.\\n   *\u002F\\n  #resetCurrentPageView() {\\n    const pageView = this._pages[this._currentPageNumber - 1];\\n\\n    if (this.isInPresentationMode) {\\n      \u002F\u002F Fixes the case when PDF has different page sizes.\\n      this.#setScale(this._currentScaleValue, { noScroll: true });\\n    }\\n    this.#scrollIntoView(pageView);\\n  }\\n\\n  \u002F**\\n   * @param {string} label - The page label.\\n   * @returns {number|null} The page number corresponding to the page label,\\n   *   or `null` when no page labels exist and\u002For the input is invalid.\\n   *\u002F\\n  pageLabelToPageNumber(label) {\\n    if (!this._pageLabels) {\\n      return null;\\n    }\\n    const i = this._pageLabels.indexOf(label);\\n    if (i \u003C 0) {\\n      return null;\\n    }\\n    return i + 1;\\n  }\\n\\n  \u002F**\\n   * @typedef {Object} ScrollPageIntoViewParameters\\n   * @property {number} pageNumber - The page number.\\n   * @property {Array} [destArray] - The original PDF destination array, in the\\n   *   format: \u003Cpage-ref> \u003C\u002FXYZ|\u002FFitXXX> \u003Cargs..>\\n   * @property {boolean} [allowNegativeOffset] - Allow negative page offsets.\\n   *   The default value is `false`.\\n   * @property {boolean} [ignoreDestinationZoom] - Ignore the zoom argument in\\n   *   the destination array. The default value is `false`.\\n   *\u002F\\n\\n  \u002F**\\n   * Scrolls page into view.\\n   * @param {ScrollPageIntoViewParameters} params\\n   *\u002F\\n  scrollPageIntoView({\\n    pageNumber,\\n    destArray = null,\\n    allowNegativeOffset = false,\\n    ignoreDestinationZoom = false,\\n  }) {\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    const pageView =\\n      Number.isInteger(pageNumber) && this._pages[pageNumber - 1];\\n    if (!pageView) {\\n      console.error(\\n        `scrollPageIntoView: \\\"${pageNumber}\\\" is not a valid pageNumber parameter.`\\n      );\\n      return;\\n    }\\n\\n    if (this.isInPresentationMode || !destArray) {\\n      this._setCurrentPageNumber(pageNumber, \u002F* resetCurrentPageView = *\u002F true);\\n      return;\\n    }\\n    let x = 0,\\n      y = 0;\\n    let width = 0,\\n      height = 0,\\n      widthScale,\\n      heightScale;\\n    const changeOrientation = pageView.rotation % 180 !== 0;\\n    const pageWidth =\\n      (changeOrientation ? pageView.height : pageView.width) \u002F\\n      pageView.scale \u002F\\n      PixelsPerInch.PDF_TO_CSS_UNITS;\\n    const pageHeight =\\n      (changeOrientation ? pageView.width : pageView.height) \u002F\\n      pageView.scale \u002F\\n      PixelsPerInch.PDF_TO_CSS_UNITS;\\n    let scale = 0;\\n    switch (destArray[1].name) {\\n      case \\\"XYZ\\\":\\n        x = destArray[2];\\n        y = destArray[3];\\n        scale = destArray[4];\\n        \u002F\u002F If x and\u002For y coordinates are not supplied, default to\\n        \u002F\u002F _top_ left of the page (not the obvious bottom left,\\n        \u002F\u002F since aligning the bottom of the intended page with the\\n        \u002F\u002F top of the window is rarely helpful).\\n        x = x !== null ? x : 0;\\n        y = y !== null ? y : pageHeight;\\n        break;\\n      case \\\"Fit\\\":\\n      case \\\"FitB\\\":\\n        scale = \\\"page-fit\\\";\\n        break;\\n      case \\\"FitH\\\":\\n      case \\\"FitBH\\\":\\n        y = destArray[2];\\n        scale = \\\"page-width\\\";\\n        \u002F\u002F According to the PDF spec, section 12.3.2.2, a `null` value in the\\n        \u002F\u002F parameter should maintain the position relative to the new page.\\n        if (y === null && this._location) {\\n          x = this._location.left;\\n          y = this._location.top;\\n        } else if (typeof y !== \\\"number\\\" || y \u003C 0) {\\n          \u002F\u002F The \\\"top\\\" value isn't optional, according to the spec, however some\\n          \u002F\u002F bad PDF generators will pretend that it is (fixes bug 1663390).\\n          y = pageHeight;\\n        }\\n        break;\\n      case \\\"FitV\\\":\\n      case \\\"FitBV\\\":\\n        x = destArray[2];\\n        width = pageWidth;\\n        height = pageHeight;\\n        scale = \\\"page-height\\\";\\n        break;\\n      case \\\"FitR\\\":\\n        x = destArray[2];\\n        y = destArray[3];\\n        width = destArray[4] - x;\\n        height = destArray[5] - y;\\n        let hPadding = SCROLLBAR_PADDING,\\n          vPadding = VERTICAL_PADDING;\\n\\n        if (\\n          (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) &&\\n          this.removePageBorders\\n        ) {\\n          hPadding = vPadding = 0;\\n        }\\n        widthScale =\\n          (this.container.clientWidth - hPadding) \u002F\\n          width \u002F\\n          PixelsPerInch.PDF_TO_CSS_UNITS;\\n        heightScale =\\n          (this.container.clientHeight - vPadding) \u002F\\n          height \u002F\\n          PixelsPerInch.PDF_TO_CSS_UNITS;\\n        scale = Math.min(Math.abs(widthScale), Math.abs(heightScale));\\n        break;\\n      default:\\n        console.error(\\n          `scrollPageIntoView: \\\"${destArray[1].name}\\\" is not a valid destination type.`\\n        );\\n        return;\\n    }\\n\\n    if (!ignoreDestinationZoom) {\\n      if (scale && scale !== this._currentScale) {\\n        this.currentScaleValue = scale;\\n      } else if (this._currentScale === UNKNOWN_SCALE) {\\n        this.currentScaleValue = DEFAULT_SCALE_VALUE;\\n      }\\n    }\\n\\n    if (scale === \\\"page-fit\\\" && !destArray[4]) {\\n      this.#scrollIntoView(pageView);\\n      return;\\n    }\\n\\n    const boundingRect = [\\n      pageView.viewport.convertToViewportPoint(x, y),\\n      pageView.viewport.convertToViewportPoint(x + width, y + height),\\n    ];\\n    let left = Math.min(boundingRect[0][0], boundingRect[1][0]);\\n    let top = Math.min(boundingRect[0][1], boundingRect[1][1]);\\n\\n    if (!allowNegativeOffset) {\\n      \u002F\u002F Some bad PDF generators will create destinations with e.g. top values\\n      \u002F\u002F that exceeds the page height. Ensure that offsets are not negative,\\n      \u002F\u002F to prevent a previous page from becoming visible (fixes bug 874482).\\n      left = Math.max(left, 0);\\n      top = Math.max(top, 0);\\n    }\\n    this.#scrollIntoView(pageView, \u002F* pageSpot = *\u002F { left, top });\\n  }\\n\\n  _updateLocation(firstPage) {\\n    const currentScale = this._currentScale;\\n    const currentScaleValue = this._currentScaleValue;\\n    const normalizedScaleValue =\\n      parseFloat(currentScaleValue) === currentScale\\n        ? Math.round(currentScale * 10000) \u002F 100\\n        : currentScaleValue;\\n\\n    const pageNumber = firstPage.id;\\n    const currentPageView = this._pages[pageNumber - 1];\\n    const container = this.container;\\n    const topLeft = currentPageView.getPagePoint(\\n      container.scrollLeft - firstPage.x,\\n      container.scrollTop - firstPage.y\\n    );\\n    const intLeft = Math.round(topLeft[0]);\\n    const intTop = Math.round(topLeft[1]);\\n\\n    let pdfOpenParams = `#page=${pageNumber}`;\\n    if (!this.isInPresentationMode) {\\n      pdfOpenParams += `&zoom=${normalizedScaleValue},${intLeft},${intTop}`;\\n    }\\n\\n    this._location = {\\n      pageNumber,\\n      scale: normalizedScaleValue,\\n      top: intTop,\\n      left: intLeft,\\n      rotation: this._pagesRotation,\\n      pdfOpenParams,\\n    };\\n  }\\n\\n  update() {\\n    const visible = this._getVisiblePages();\\n    const visiblePages = visible.views,\\n      numVisiblePages = visiblePages.length;\\n\\n    if (numVisiblePages === 0) {\\n      return;\\n    }\\n    const newCacheSize = Math.max(DEFAULT_CACHE_SIZE, 2 * numVisiblePages + 1);\\n    this.#buffer.resize(newCacheSize, visible.ids);\\n\\n    this.renderingQueue.renderHighestPriority(visible);\\n\\n    const isSimpleLayout =\\n      this._spreadMode === SpreadMode.NONE &&\\n      (this._scrollMode === ScrollMode.PAGE ||\\n        this._scrollMode === ScrollMode.VERTICAL);\\n    const currentId = this._currentPageNumber;\\n    let stillFullyVisible = false;\\n\\n    for (const page of visiblePages) {\\n      if (page.percent \u003C 100) {\\n        break;\\n      }\\n      if (page.id === currentId && isSimpleLayout) {\\n        stillFullyVisible = true;\\n        break;\\n      }\\n    }\\n    this._setCurrentPageNumber(\\n      stillFullyVisible ? currentId : visiblePages[0].id\\n    );\\n\\n    this._updateLocation(visible.first);\\n    this.eventBus.dispatch(\\\"updateviewarea\\\", {\\n      source: this,\\n      location: this._location,\\n    });\\n  }\\n\\n  containsElement(element) {\\n    return this.container.contains(element);\\n  }\\n\\n  focus() {\\n    this.container.focus();\\n  }\\n\\n  get _isContainerRtl() {\\n    return getComputedStyle(this.container).direction === \\\"rtl\\\";\\n  }\\n\\n  get isInPresentationMode() {\\n    return this.presentationModeState === PresentationModeState.FULLSCREEN;\\n  }\\n\\n  get isChangingPresentationMode() {\\n    return this.presentationModeState === PresentationModeState.CHANGING;\\n  }\\n\\n  get isHorizontalScrollbarEnabled() {\\n    return this.isInPresentationMode\\n      ? false\\n      : this.container.scrollWidth > this.container.clientWidth;\\n  }\\n\\n  get isVerticalScrollbarEnabled() {\\n    return this.isInPresentationMode\\n      ? false\\n      : this.container.scrollHeight > this.container.clientHeight;\\n  }\\n\\n  _getVisiblePages() {\\n    const views =\\n        this._scrollMode === ScrollMode.PAGE\\n          ? this.#scrollModePageState.pages\\n          : this._pages,\\n      horizontal = this._scrollMode === ScrollMode.HORIZONTAL,\\n      rtl = horizontal && this._isContainerRtl;\\n\\n    return getVisibleElements({\\n      scrollEl: this.container,\\n      views,\\n      sortByVisibility: true,\\n      horizontal,\\n      rtl,\\n    });\\n  }\\n\\n  cleanup() {\\n    for (const pageView of this._pages) {\\n      if (pageView.renderingState !== RenderingStates.FINISHED) {\\n        pageView.reset();\\n      }\\n    }\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _cancelRendering() {\\n    for (const pageView of this._pages) {\\n      pageView.cancelRendering();\\n    }\\n  }\\n\\n  \u002F**\\n   * @param {PDFPageView} pageView\\n   * @returns {Promise\u003CPDFPageProxy | null>}\\n   *\u002F\\n  async #ensurePdfPageLoaded(pageView) {\\n    if (pageView.pdfPage) {\\n      return pageView.pdfPage;\\n    }\\n    try {\\n      const pdfPage = await this.pdfDocument.getPage(pageView.id);\\n      if (!pageView.pdfPage) {\\n        pageView.setPdfPage(pdfPage);\\n      }\\n      return pdfPage;\\n    } catch (reason) {\\n      console.error(\\\"Unable to get page for page view\\\", reason);\\n      return null; \u002F\u002F Page error -- there is nothing that can be done.\\n    }\\n  }\\n\\n  #getScrollAhead(visible) {\\n    if (visible.first?.id === 1) {\\n      return true;\\n    } else if (visible.last?.id === this.pagesCount) {\\n      return false;\\n    }\\n    switch (this._scrollMode) {\\n      case ScrollMode.PAGE:\\n        return this.#scrollModePageState.scrollDown;\\n      case ScrollMode.HORIZONTAL:\\n        return this.scroll.right;\\n    }\\n    return this.scroll.down;\\n  }\\n\\n  forceRendering(currentlyVisiblePages) {\\n    const visiblePages = currentlyVisiblePages || this._getVisiblePages();\\n    const scrollAhead = this.#getScrollAhead(visiblePages);\\n    const preRenderExtra =\\n      this._spreadMode !== SpreadMode.NONE &&\\n      this._scrollMode !== ScrollMode.HORIZONTAL;\\n\\n    const pageView = this.renderingQueue.getHighestPriority(\\n      visiblePages,\\n      this._pages,\\n      scrollAhead,\\n      preRenderExtra\\n    );\\n\\n    if (pageView) {\\n      this.#ensurePdfPageLoaded(pageView).then(() => {\\n        this.renderingQueue.renderView(pageView);\\n      });\\n      return true;\\n    }\\n    return false;\\n  }\\n\\n  \u002F**\\n   * @type {boolean} Whether all pages of the PDF document have identical\\n   *   widths and heights.\\n   *\u002F\\n  get hasEqualPageSizes() {\\n    const firstPageView = this._pages[0];\\n    for (let i = 1, ii = this._pages.length; i \u003C ii; ++i) {\\n      const pageView = this._pages[i];\\n      if (\\n        pageView.width !== firstPageView.width ||\\n        pageView.height !== firstPageView.height\\n      ) {\\n        return false;\\n      }\\n    }\\n    return true;\\n  }\\n\\n  \u002F**\\n   * Returns sizes of the pages.\\n   * @returns {Array} Array of objects with width\u002Fheight\u002Frotation fields.\\n   *\u002F\\n  getPagesOverview() {\\n    let initialOrientation;\\n    return this._pages.map(pageView => {\\n      const viewport = pageView.pdfPage.getViewport({ scale: 1 });\\n      const orientation = isPortraitOrientation(viewport);\\n      if (initialOrientation === undefined) {\\n        initialOrientation = orientation;\\n      } else if (\\n        this.enablePrintAutoRotate &&\\n        orientation !== initialOrientation\\n      ) {\\n        \u002F\u002F Rotate to fit the initial orientation.\\n        return {\\n          width: viewport.height,\\n          height: viewport.width,\\n          rotation: (viewport.rotation - 90) % 360,\\n        };\\n      }\\n      return {\\n        width: viewport.width,\\n        height: viewport.height,\\n        rotation: viewport.rotation,\\n      };\\n    });\\n  }\\n\\n  \u002F**\\n   * @type {Promise\u003COptionalContentConfig | null>}\\n   *\u002F\\n  get optionalContentConfigPromise() {\\n    if (!this.pdfDocument) {\\n      return Promise.resolve(null);\\n    }\\n    if (!this._optionalContentConfigPromise) {\\n      console.error(\\\"optionalContentConfigPromise: Not initialized yet.\\\");\\n      \u002F\u002F Prevent issues if the getter is accessed *before* the `onePageRendered`\\n      \u002F\u002F promise has resolved; won't (normally) happen in the default viewer.\\n      return this.pdfDocument.getOptionalContentConfig({ intent: \\\"display\\\" });\\n    }\\n    return this._optionalContentConfigPromise;\\n  }\\n\\n  \u002F**\\n   * @param {Promise\u003COptionalContentConfig>} promise - A promise that is\\n   *   resolved with an {@link OptionalContentConfig} instance.\\n   *\u002F\\n  set optionalContentConfigPromise(promise) {\\n    if (!(promise instanceof Promise)) {\\n      throw new Error(`Invalid optionalContentConfigPromise: ${promise}`);\\n    }\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    if (!this._optionalContentConfigPromise) {\\n      \u002F\u002F Ignore the setter *before* the `onePageRendered` promise has resolved,\\n      \u002F\u002F since it'll be overwritten anyway; won't happen in the default viewer.\\n      return;\\n    }\\n    this._optionalContentConfigPromise = promise;\\n\\n    this.refresh(false, { optionalContentConfigPromise: promise });\\n\\n    this.eventBus.dispatch(\\\"optionalcontentconfigchanged\\\", {\\n      source: this,\\n      promise,\\n    });\\n  }\\n\\n  \u002F**\\n   * @type {number} One of the values in {ScrollMode}.\\n   *\u002F\\n  get scrollMode() {\\n    return this._scrollMode;\\n  }\\n\\n  \u002F**\\n   * @param {number} mode - The direction in which the document pages should be\\n   *   laid out within the scrolling container.\\n   *   The constants from {ScrollMode} should be used.\\n   *\u002F\\n  set scrollMode(mode) {\\n    if (\\n      typeof PDFJSDev === \\\"undefined\\\"\\n        ? window.isGECKOVIEW\\n        : PDFJSDev.test(\\\"GECKOVIEW\\\")\\n    ) {\\n      \u002F\u002F NOTE: Always ignore the pageLayout in GeckoView since there's\\n      \u002F\u002F no UI available to change Scroll\u002FSpread modes for the user.\\n      return;\\n    }\\n    if (this._scrollMode === mode) {\\n      return; \u002F\u002F The Scroll mode didn't change.\\n    }\\n    if (!isValidScrollMode(mode)) {\\n      throw new Error(`Invalid scroll mode: ${mode}`);\\n    }\\n    if (this.pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE) {\\n      return; \u002F\u002F Disabled for performance reasons.\\n    }\\n    this._previousScrollMode = this._scrollMode;\\n\\n    this._scrollMode = mode;\\n    this.eventBus.dispatch(\\\"scrollmodechanged\\\", { source: this, mode });\\n\\n    this._updateScrollMode(\u002F* pageNumber = *\u002F this._currentPageNumber);\\n  }\\n\\n  _updateScrollMode(pageNumber = null) {\\n    const scrollMode = this._scrollMode,\\n      viewer = this.viewer;\\n\\n    viewer.classList.toggle(\\n      \\\"scrollHorizontal\\\",\\n      scrollMode === ScrollMode.HORIZONTAL\\n    );\\n    viewer.classList.toggle(\\\"scrollWrapped\\\", scrollMode === ScrollMode.WRAPPED);\\n\\n    if (!this.pdfDocument || !pageNumber) {\\n      return;\\n    }\\n\\n    if (scrollMode === ScrollMode.PAGE) {\\n      this.#ensurePageViewVisible();\\n    } else if (this._previousScrollMode === ScrollMode.PAGE) {\\n      \u002F\u002F Ensure that the current spreadMode is still applied correctly when\\n      \u002F\u002F the *previous* scrollMode was `ScrollMode.PAGE`.\\n      this._updateSpreadMode();\\n    }\\n    \u002F\u002F Non-numeric scale values can be sensitive to the scroll orientation.\\n    \u002F\u002F Call this before re-scrolling to the current page, to ensure that any\\n    \u002F\u002F changes in scale don't move the current page.\\n    if (this._currentScaleValue && isNaN(this._currentScaleValue)) {\\n      this.#setScale(this._currentScaleValue, { noScroll: true });\\n    }\\n    this._setCurrentPageNumber(pageNumber, \u002F* resetCurrentPageView = *\u002F true);\\n    this.update();\\n  }\\n\\n  \u002F**\\n   * @type {number} One of the values in {SpreadMode}.\\n   *\u002F\\n  get spreadMode() {\\n    return this._spreadMode;\\n  }\\n\\n  \u002F**\\n   * @param {number} mode - Group the pages in spreads, starting with odd- or\\n   *   even-number pages (unless `SpreadMode.NONE` is used).\\n   *   The constants from {SpreadMode} should be used.\\n   *\u002F\\n  set spreadMode(mode) {\\n    if (\\n      typeof PDFJSDev === \\\"undefined\\\"\\n        ? window.isGECKOVIEW\\n        : PDFJSDev.test(\\\"GECKOVIEW\\\")\\n    ) {\\n      \u002F\u002F NOTE: Always ignore the pageLayout in GeckoView since there's\\n      \u002F\u002F no UI available to change Scroll\u002FSpread modes for the user.\\n      return;\\n    }\\n    if (this._spreadMode === mode) {\\n      return; \u002F\u002F The Spread mode didn't change.\\n    }\\n    if (!isValidSpreadMode(mode)) {\\n      throw new Error(`Invalid spread mode: ${mode}`);\\n    }\\n    this._spreadMode = mode;\\n    this.eventBus.dispatch(\\\"spreadmodechanged\\\", { source: this, mode });\\n\\n    this._updateSpreadMode(\u002F* pageNumber = *\u002F this._currentPageNumber);\\n  }\\n\\n  _updateSpreadMode(pageNumber = null) {\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    const viewer = this.viewer,\\n      pages = this._pages;\\n\\n    if (this._scrollMode === ScrollMode.PAGE) {\\n      this.#ensurePageViewVisible();\\n    } else {\\n      \u002F\u002F Temporarily remove all the pages from the DOM.\\n      viewer.textContent = \\\"\\\";\\n\\n      if (this._spreadMode === SpreadMode.NONE) {\\n        for (const pageView of this._pages) {\\n          viewer.append(pageView.div);\\n        }\\n      } else {\\n        const parity = this._spreadMode - 1;\\n        let spread = null;\\n        for (let i = 0, ii = pages.length; i \u003C ii; ++i) {\\n          if (spread === null) {\\n            spread = document.createElement(\\\"div\\\");\\n            spread.className = \\\"spread\\\";\\n            viewer.append(spread);\\n          } else if (i % 2 === parity) {\\n            spread = spread.cloneNode(false);\\n            viewer.append(spread);\\n          }\\n          spread.append(pages[i].div);\\n        }\\n      }\\n    }\\n\\n    if (!pageNumber) {\\n      return;\\n    }\\n    \u002F\u002F Non-numeric scale values can be sensitive to the scroll orientation.\\n    \u002F\u002F Call this before re-scrolling to the current page, to ensure that any\\n    \u002F\u002F changes in scale don't move the current page.\\n    if (this._currentScaleValue && isNaN(this._currentScaleValue)) {\\n      this.#setScale(this._currentScaleValue, { noScroll: true });\\n    }\\n    this._setCurrentPageNumber(pageNumber, \u002F* resetCurrentPageView = *\u002F true);\\n    this.update();\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _getPageAdvance(currentPageNumber, previous = false) {\\n    switch (this._scrollMode) {\\n      case ScrollMode.WRAPPED: {\\n        const { views } = this._getVisiblePages(),\\n          pageLayout = new Map();\\n\\n        \u002F\u002F Determine the current (visible) page layout.\\n        for (const { id, y, percent, widthPercent } of views) {\\n          if (percent === 0 || widthPercent \u003C 100) {\\n            continue;\\n          }\\n          let yArray = pageLayout.get(y);\\n          if (!yArray) {\\n            pageLayout.set(y, (yArray ||= []));\\n          }\\n          yArray.push(id);\\n        }\\n        \u002F\u002F Find the row of the current page.\\n        for (const yArray of pageLayout.values()) {\\n          const currentIndex = yArray.indexOf(currentPageNumber);\\n          if (currentIndex === -1) {\\n            continue;\\n          }\\n          const numPages = yArray.length;\\n          if (numPages === 1) {\\n            break;\\n          }\\n          \u002F\u002F Handle documents with varying page sizes.\\n          if (previous) {\\n            for (let i = currentIndex - 1, ii = 0; i >= ii; i--) {\\n              const currentId = yArray[i],\\n                expectedId = yArray[i + 1] - 1;\\n              if (currentId \u003C expectedId) {\\n                return currentPageNumber - expectedId;\\n              }\\n            }\\n          } else {\\n            for (let i = currentIndex + 1, ii = numPages; i \u003C ii; i++) {\\n              const currentId = yArray[i],\\n                expectedId = yArray[i - 1] + 1;\\n              if (currentId > expectedId) {\\n                return expectedId - currentPageNumber;\\n              }\\n            }\\n          }\\n          \u002F\u002F The current row is \\\"complete\\\", advance to the previous\u002Fnext one.\\n          if (previous) {\\n            const firstId = yArray[0];\\n            if (firstId \u003C currentPageNumber) {\\n              return currentPageNumber - firstId + 1;\\n            }\\n          } else {\\n            const lastId = yArray[numPages - 1];\\n            if (lastId > currentPageNumber) {\\n              return lastId - currentPageNumber + 1;\\n            }\\n          }\\n          break;\\n        }\\n        break;\\n      }\\n      case ScrollMode.HORIZONTAL: {\\n        break;\\n      }\\n      case ScrollMode.PAGE:\\n      case ScrollMode.VERTICAL: {\\n        if (this._spreadMode === SpreadMode.NONE) {\\n          break; \u002F\u002F Normal vertical scrolling.\\n        }\\n        const parity = this._spreadMode - 1;\\n\\n        if (previous && currentPageNumber % 2 !== parity) {\\n          break; \u002F\u002F Left-hand side page.\\n        } else if (!previous && currentPageNumber % 2 === parity) {\\n          break; \u002F\u002F Right-hand side page.\\n        }\\n        const { views } = this._getVisiblePages(),\\n          expectedId = previous ? currentPageNumber - 1 : currentPageNumber + 1;\\n\\n        for (const { id, percent, widthPercent } of views) {\\n          if (id !== expectedId) {\\n            continue;\\n          }\\n          if (percent > 0 && widthPercent === 100) {\\n            return 2;\\n          }\\n          break;\\n        }\\n        break;\\n      }\\n    }\\n    return 1;\\n  }\\n\\n  \u002F**\\n   * Go to the next page, taking scroll\u002Fspread-modes into account.\\n   * @returns {boolean} Whether navigation occurred.\\n   *\u002F\\n  nextPage() {\\n    const currentPageNumber = this._currentPageNumber,\\n      pagesCount = this.pagesCount;\\n\\n    if (currentPageNumber >= pagesCount) {\\n      return false;\\n    }\\n    const advance =\\n      this._getPageAdvance(currentPageNumber, \u002F* previous = *\u002F false) || 1;\\n\\n    this.currentPageNumber = Math.min(currentPageNumber + advance, pagesCount);\\n    return true;\\n  }\\n\\n  \u002F**\\n   * Go to the previous page, taking scroll\u002Fspread-modes into account.\\n   * @returns {boolean} Whether navigation occurred.\\n   *\u002F\\n  previousPage() {\\n    const currentPageNumber = this._currentPageNumber;\\n\\n    if (currentPageNumber \u003C= 1) {\\n      return false;\\n    }\\n    const advance =\\n      this._getPageAdvance(currentPageNumber, \u002F* previous = *\u002F true) || 1;\\n\\n    this.currentPageNumber = Math.max(currentPageNumber - advance, 1);\\n    return true;\\n  }\\n\\n  \u002F**\\n   * @typedef {Object} ChangeScaleOptions\\n   * @property {number} [drawingDelay]\\n   * @property {number} [scaleFactor]\\n   * @property {number} [steps]\\n   * @property {Array} [origin] x and y coordinates of the scale\\n   *                            transformation origin.\\n   *\u002F\\n\\n  \u002F**\\n   * Changes the current zoom level by the specified amount.\\n   * @param {ChangeScaleOptions} [options]\\n   *\u002F\\n  updateScale({ drawingDelay, scaleFactor = null, steps = null, origin }) {\\n    if (steps === null && scaleFactor === null) {\\n      throw new Error(\\n        \\\"Invalid updateScale options: either `steps` or `scaleFactor` must be provided.\\\"\\n      );\\n    }\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    let newScale = this._currentScale;\\n    if (scaleFactor > 0 && scaleFactor !== 1) {\\n      newScale = Math.round(newScale * scaleFactor * 100) \u002F 100;\\n    } else if (steps) {\\n      const delta = steps > 0 ? DEFAULT_SCALE_DELTA : 1 \u002F DEFAULT_SCALE_DELTA;\\n      const round = steps > 0 ? Math.ceil : Math.floor;\\n      steps = Math.abs(steps);\\n      do {\\n        newScale = round((newScale * delta).toFixed(2) * 10) \u002F 10;\\n      } while (--steps > 0);\\n    }\\n    newScale = Math.max(MIN_SCALE, Math.min(MAX_SCALE, newScale));\\n    this.#setScale(newScale, { noScroll: false, drawingDelay, origin });\\n  }\\n\\n  \u002F**\\n   * Increase the current zoom level one, or more, times.\\n   * @param {ChangeScaleOptions} [options]\\n   *\u002F\\n  increaseScale(options = {}) {\\n    this.updateScale({ ...options, steps: options.steps ?? 1 });\\n  }\\n\\n  \u002F**\\n   * Decrease the current zoom level one, or more, times.\\n   * @param {ChangeScaleOptions} [options]\\n   *\u002F\\n  decreaseScale(options = {}) {\\n    this.updateScale({ ...options, steps: -(options.steps ?? 1) });\\n  }\\n\\n  #updateContainerHeightCss(height = this.container.clientHeight) {\\n    if (height !== this.#previousContainerHeight) {\\n      this.#previousContainerHeight = height;\\n      docStyle.setProperty(\\\"--viewer-container-height\\\", `${height}px`);\\n    }\\n  }\\n\\n  #resizeObserverCallback(entries) {\\n    for (const entry of entries) {\\n      if (entry.target === this.container) {\\n        this.#updateContainerHeightCss(\\n          Math.floor(entry.borderBoxSize[0].blockSize)\\n        );\\n        this.#containerTopLeft = null;\\n        break;\\n      }\\n    }\\n  }\\n\\n  get containerTopLeft() {\\n    return (this.#containerTopLeft ||= [\\n      this.container.offsetTop,\\n      this.container.offsetLeft,\\n    ]);\\n  }\\n\\n  get annotationEditorMode() {\\n    return this.#annotationEditorUIManager\\n      ? this.#annotationEditorMode\\n      : AnnotationEditorType.DISABLE;\\n  }\\n\\n  \u002F**\\n   * @typedef {Object} AnnotationEditorModeOptions\\n   * @property {number} mode - The editor mode (none, FreeText, ink, ...).\\n   * @property {string|null} [editId] - ID of the existing annotation to edit.\\n   * @property {boolean} [isFromKeyboard] - True if the mode change is due to a\\n   *   keyboard action.\\n   *\u002F\\n\\n  \u002F**\\n   * @param {AnnotationEditorModeOptions} options\\n   *\u002F\\n  set annotationEditorMode({ mode, editId = null, isFromKeyboard = false }) {\\n    if (!this.#annotationEditorUIManager) {\\n      throw new Error(`The AnnotationEditor is not enabled.`);\\n    }\\n    if (this.#annotationEditorMode === mode) {\\n      return; \u002F\u002F The AnnotationEditor mode didn't change.\\n    }\\n    if (!isValidAnnotationEditorMode(mode)) {\\n      throw new Error(`Invalid AnnotationEditor mode: ${mode}`);\\n    }\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    this.#annotationEditorMode = mode;\\n    this.eventBus.dispatch(\\\"annotationeditormodechanged\\\", {\\n      source: this,\\n      mode,\\n    });\\n\\n    this.#annotationEditorUIManager.updateMode(mode, editId, isFromKeyboard);\\n  }\\n\\n  \u002F\u002F eslint-disable-next-line accessor-pairs\\n  set annotationEditorParams({ type, value }) {\\n    if (!this.#annotationEditorUIManager) {\\n      throw new Error(`The AnnotationEditor is not enabled.`);\\n    }\\n    this.#annotationEditorUIManager.updateParams(type, value);\\n  }\\n\\n  refresh(noUpdate = false, updateArgs = Object.create(null)) {\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    for (const pageView of this._pages) {\\n      pageView.update(updateArgs);\\n    }\\n    if (this.#scaleTimeoutId !== null) {\\n      clearTimeout(this.#scaleTimeoutId);\\n      this.#scaleTimeoutId = null;\\n    }\\n    if (!noUpdate) {\\n      this.update();\\n    }\\n  }\\n}\\n\\nexport { PagesCountLimit, PDFPageViewBuffer, PDFViewer };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fevent_utils.js\\\").EventBus} EventBus *\u002F\\n\\nimport {\\n  CursorTool,\\n  ScrollMode,\\n  SpreadMode,\\n  toggleCheckedBtn,\\n  toggleExpandedBtn,\\n} from \\\".\u002Fui_utils.js\\\";\\nimport { PagesCountLimit } from \\\".\u002Fpdf_viewer.js\\\";\\n\\n\u002F**\\n * @typedef {Object} SecondaryToolbarOptions\\n * @property {HTMLDivElement} toolbar - Container for the secondary toolbar.\\n * @property {HTMLButtonElement} toggleButton - Button to toggle the visibility\\n *   of the secondary toolbar.\\n * @property {HTMLButtonElement} presentationModeButton - Button for entering\\n *   presentation mode.\\n * @property {HTMLButtonElement} openFileButton - Button to open a file.\\n * @property {HTMLButtonElement} printButton - Button to print the document.\\n * @property {HTMLButtonElement} downloadButton - Button to download the\\n *   document.\\n * @property {HTMLAnchorElement} viewBookmarkButton - Button to obtain a\\n *   bookmark link to the current location in the document.\\n * @property {HTMLButtonElement} firstPageButton - Button to go to the first\\n *   page in the document.\\n * @property {HTMLButtonElement} lastPageButton - Button to go to the last page\\n *   in the document.\\n * @property {HTMLButtonElement} pageRotateCwButton - Button to rotate the pages\\n *   clockwise.\\n * @property {HTMLButtonElement} pageRotateCcwButton - Button to rotate the\\n *   pages counterclockwise.\\n * @property {HTMLButtonElement} cursorSelectToolButton - Button to enable the\\n *   select tool.\\n * @property {HTMLButtonElement} cursorHandToolButton - Button to enable the\\n *   hand tool.\\n * @property {HTMLButtonElement} documentPropertiesButton - Button for opening\\n *   the document properties dialog.\\n *\u002F\\n\\nclass SecondaryToolbar {\\n  #opts;\\n\\n  \u002F**\\n   * @param {SecondaryToolbarOptions} options\\n   * @param {EventBus} eventBus\\n   *\u002F\\n  constructor(options, eventBus) {\\n    this.#opts = options;\\n    const buttons = [\\n      {\\n        element: options.presentationModeButton,\\n        eventName: \\\"presentationmode\\\",\\n        close: true,\\n      },\\n      { element: options.printButton, eventName: \\\"print\\\", close: true },\\n      { element: options.downloadButton, eventName: \\\"download\\\", close: true },\\n      { element: options.viewBookmarkButton, eventName: null, close: true },\\n      { element: options.firstPageButton, eventName: \\\"firstpage\\\", close: true },\\n      { element: options.lastPageButton, eventName: \\\"lastpage\\\", close: true },\\n      {\\n        element: options.pageRotateCwButton,\\n        eventName: \\\"rotatecw\\\",\\n        close: false,\\n      },\\n      {\\n        element: options.pageRotateCcwButton,\\n        eventName: \\\"rotateccw\\\",\\n        close: false,\\n      },\\n      {\\n        element: options.cursorSelectToolButton,\\n        eventName: \\\"switchcursortool\\\",\\n        eventDetails: { tool: CursorTool.SELECT },\\n        close: true,\\n      },\\n      {\\n        element: options.cursorHandToolButton,\\n        eventName: \\\"switchcursortool\\\",\\n        eventDetails: { tool: CursorTool.HAND },\\n        close: true,\\n      },\\n      {\\n        element: options.scrollPageButton,\\n        eventName: \\\"switchscrollmode\\\",\\n        eventDetails: { mode: ScrollMode.PAGE },\\n        close: true,\\n      },\\n      {\\n        element: options.scrollVerticalButton,\\n        eventName: \\\"switchscrollmode\\\",\\n        eventDetails: { mode: ScrollMode.VERTICAL },\\n        close: true,\\n      },\\n      {\\n        element: options.scrollHorizontalButton,\\n        eventName: \\\"switchscrollmode\\\",\\n        eventDetails: { mode: ScrollMode.HORIZONTAL },\\n        close: true,\\n      },\\n      {\\n        element: options.scrollWrappedButton,\\n        eventName: \\\"switchscrollmode\\\",\\n        eventDetails: { mode: ScrollMode.WRAPPED },\\n        close: true,\\n      },\\n      {\\n        element: options.spreadNoneButton,\\n        eventName: \\\"switchspreadmode\\\",\\n        eventDetails: { mode: SpreadMode.NONE },\\n        close: true,\\n      },\\n      {\\n        element: options.spreadOddButton,\\n        eventName: \\\"switchspreadmode\\\",\\n        eventDetails: { mode: SpreadMode.ODD },\\n        close: true,\\n      },\\n      {\\n        element: options.spreadEvenButton,\\n        eventName: \\\"switchspreadmode\\\",\\n        eventDetails: { mode: SpreadMode.EVEN },\\n        close: true,\\n      },\\n      {\\n        element: options.documentPropertiesButton,\\n        eventName: \\\"documentproperties\\\",\\n        close: true,\\n      },\\n    ];\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      buttons.push({\\n        element: options.openFileButton,\\n        eventName: \\\"openfile\\\",\\n        close: true,\\n      });\\n    }\\n\\n    this.eventBus = eventBus;\\n    this.opened = false;\\n\\n    \u002F\u002F Bind the event listeners for click, cursor tool, and scroll\u002Fspread mode\\n    \u002F\u002F actions.\\n    this.#bindListeners(buttons);\\n\\n    this.reset();\\n  }\\n\\n  \u002F**\\n   * @type {boolean}\\n   *\u002F\\n  get isOpen() {\\n    return this.opened;\\n  }\\n\\n  setPageNumber(pageNumber) {\\n    this.pageNumber = pageNumber;\\n    this.#updateUIState();\\n  }\\n\\n  setPagesCount(pagesCount) {\\n    this.pagesCount = pagesCount;\\n    this.#updateUIState();\\n  }\\n\\n  reset() {\\n    this.pageNumber = 0;\\n    this.pagesCount = 0;\\n    this.#updateUIState();\\n\\n    \u002F\u002F Reset the Scroll\u002FSpread buttons too, since they're document specific.\\n    this.eventBus.dispatch(\\\"switchcursortool\\\", { source: this, reset: true });\\n    this.#scrollModeChanged({ mode: ScrollMode.VERTICAL });\\n    this.#spreadModeChanged({ mode: SpreadMode.NONE });\\n  }\\n\\n  #updateUIState() {\\n    const {\\n      firstPageButton,\\n      lastPageButton,\\n      pageRotateCwButton,\\n      pageRotateCcwButton,\\n    } = this.#opts;\\n\\n    firstPageButton.disabled = this.pageNumber \u003C= 1;\\n    lastPageButton.disabled = this.pageNumber >= this.pagesCount;\\n    pageRotateCwButton.disabled = this.pagesCount === 0;\\n    pageRotateCcwButton.disabled = this.pagesCount === 0;\\n  }\\n\\n  #bindListeners(buttons) {\\n    const { eventBus } = this;\\n    const { toggleButton } = this.#opts;\\n    \u002F\u002F Button to toggle the visibility of the secondary toolbar.\\n    toggleButton.addEventListener(\\\"click\\\", this.toggle.bind(this));\\n\\n    \u002F\u002F All items within the secondary toolbar.\\n    for (const { element, eventName, close, eventDetails } of buttons) {\\n      element.addEventListener(\\\"click\\\", evt => {\\n        if (eventName !== null) {\\n          eventBus.dispatch(eventName, { source: this, ...eventDetails });\\n        }\\n        if (close) {\\n          this.close();\\n        }\\n        eventBus.dispatch(\\\"reporttelemetry\\\", {\\n          source: this,\\n          details: {\\n            type: \\\"buttons\\\",\\n            data: { id: element.id },\\n          },\\n        });\\n      });\\n    }\\n\\n    eventBus._on(\\\"cursortoolchanged\\\", this.#cursorToolChanged.bind(this));\\n    eventBus._on(\\\"scrollmodechanged\\\", this.#scrollModeChanged.bind(this));\\n    eventBus._on(\\\"spreadmodechanged\\\", this.#spreadModeChanged.bind(this));\\n  }\\n\\n  #cursorToolChanged({ tool }) {\\n    const { cursorSelectToolButton, cursorHandToolButton } = this.#opts;\\n\\n    toggleCheckedBtn(cursorSelectToolButton, tool === CursorTool.SELECT);\\n    toggleCheckedBtn(cursorHandToolButton, tool === CursorTool.HAND);\\n  }\\n\\n  #scrollModeChanged({ mode }) {\\n    const {\\n      scrollPageButton,\\n      scrollVerticalButton,\\n      scrollHorizontalButton,\\n      scrollWrappedButton,\\n      spreadNoneButton,\\n      spreadOddButton,\\n      spreadEvenButton,\\n    } = this.#opts;\\n\\n    toggleCheckedBtn(scrollPageButton, mode === ScrollMode.PAGE);\\n    toggleCheckedBtn(scrollVerticalButton, mode === ScrollMode.VERTICAL);\\n    toggleCheckedBtn(scrollHorizontalButton, mode === ScrollMode.HORIZONTAL);\\n    toggleCheckedBtn(scrollWrappedButton, mode === ScrollMode.WRAPPED);\\n\\n    \u002F\u002F Permanently *disable* the Scroll buttons when PAGE-scrolling is being\\n    \u002F\u002F enforced for *very* long\u002Flarge documents; please see the `BaseViewer`.\\n    const forceScrollModePage =\\n      this.pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE;\\n    scrollPageButton.disabled = forceScrollModePage;\\n    scrollVerticalButton.disabled = forceScrollModePage;\\n    scrollHorizontalButton.disabled = forceScrollModePage;\\n    scrollWrappedButton.disabled = forceScrollModePage;\\n\\n    \u002F\u002F Temporarily *disable* the Spread buttons when horizontal scrolling is\\n    \u002F\u002F enabled, since the non-default Spread modes doesn't affect the layout.\\n    const isHorizontal = mode === ScrollMode.HORIZONTAL;\\n    spreadNoneButton.disabled = isHorizontal;\\n    spreadOddButton.disabled = isHorizontal;\\n    spreadEvenButton.disabled = isHorizontal;\\n  }\\n\\n  #spreadModeChanged({ mode }) {\\n    const { spreadNoneButton, spreadOddButton, spreadEvenButton } = this.#opts;\\n\\n    toggleCheckedBtn(spreadNoneButton, mode === SpreadMode.NONE);\\n    toggleCheckedBtn(spreadOddButton, mode === SpreadMode.ODD);\\n    toggleCheckedBtn(spreadEvenButton, mode === SpreadMode.EVEN);\\n  }\\n\\n  open() {\\n    if (this.opened) {\\n      return;\\n    }\\n    this.opened = true;\\n\\n    const { toggleButton, toolbar } = this.#opts;\\n    toggleExpandedBtn(toggleButton, true, toolbar);\\n  }\\n\\n  close() {\\n    if (!this.opened) {\\n      return;\\n    }\\n    this.opened = false;\\n\\n    const { toggleButton, toolbar } = this.#opts;\\n    toggleExpandedBtn(toggleButton, false, toolbar);\\n  }\\n\\n  toggle() {\\n    if (this.opened) {\\n      this.close();\\n    } else {\\n      this.open();\\n    }\\n  }\\n}\\n\\nexport { SecondaryToolbar };\\n\",\"\u002F* Copyright 2016 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fevent_utils.js\\\").EventBus} EventBus *\u002F\\n\\nimport { AnnotationEditorType, ColorPicker, noContextMenu } from \\\"pdfjs-lib\\\";\\nimport {\\n  DEFAULT_SCALE,\\n  DEFAULT_SCALE_VALUE,\\n  MAX_SCALE,\\n  MIN_SCALE,\\n  toggleCheckedBtn,\\n} from \\\".\u002Fui_utils.js\\\";\\n\\n\u002F**\\n * @typedef {Object} ToolbarOptions\\n * @property {HTMLDivElement} container - Container for the secondary toolbar.\\n * @property {HTMLSpanElement} numPages - Label that contains number of pages.\\n * @property {HTMLInputElement} pageNumber - Control for display and user input\\n *   of the current page number.\\n * @property {HTMLSelectElement} scaleSelect - Scale selection control.\\n *   Its width is adjusted, when necessary, on UI localization.\\n * @property {HTMLOptionElement} customScaleOption - The item used to display\\n *   a non-predefined scale.\\n * @property {HTMLButtonElement} previous - Button to go to the previous page.\\n * @property {HTMLButtonElement} next - Button to go to the next page.\\n * @property {HTMLButtonElement} zoomIn - Button to zoom in the pages.\\n * @property {HTMLButtonElement} zoomOut - Button to zoom out the pages.\\n * @property {HTMLButtonElement} viewFind - Button to open find bar.\\n * @property {HTMLButtonElement} editorFreeTextButton - Button to switch to\\n *   FreeText editing.\\n * @property {HTMLButtonElement} download - Button to download the document.\\n *\u002F\\n\\nclass Toolbar {\\n  #opts;\\n\\n  \u002F**\\n   * @param {ToolbarOptions} options\\n   * @param {EventBus} eventBus\\n   *\u002F\\n  constructor(options, eventBus) {\\n    this.#opts = options;\\n    this.eventBus = eventBus;\\n    const buttons = [\\n      { element: options.previous, eventName: \\\"previouspage\\\" },\\n      { element: options.next, eventName: \\\"nextpage\\\" },\\n      { element: options.zoomIn, eventName: \\\"zoomin\\\" },\\n      { element: options.zoomOut, eventName: \\\"zoomout\\\" },\\n      { element: options.print, eventName: \\\"print\\\" },\\n      { element: options.download, eventName: \\\"download\\\" },\\n      {\\n        element: options.editorFreeTextButton,\\n        eventName: \\\"switchannotationeditormode\\\",\\n        eventDetails: {\\n          get mode() {\\n            const { classList } = options.editorFreeTextButton;\\n            return classList.contains(\\\"toggled\\\")\\n              ? AnnotationEditorType.NONE\\n              : AnnotationEditorType.FREETEXT;\\n          },\\n        },\\n      },\\n      {\\n        element: options.editorHighlightButton,\\n        eventName: \\\"switchannotationeditormode\\\",\\n        eventDetails: {\\n          get mode() {\\n            const { classList } = options.editorHighlightButton;\\n            return classList.contains(\\\"toggled\\\")\\n              ? AnnotationEditorType.NONE\\n              : AnnotationEditorType.HIGHLIGHT;\\n          },\\n        },\\n      },\\n      {\\n        element: options.editorInkButton,\\n        eventName: \\\"switchannotationeditormode\\\",\\n        eventDetails: {\\n          get mode() {\\n            const { classList } = options.editorInkButton;\\n            return classList.contains(\\\"toggled\\\")\\n              ? AnnotationEditorType.NONE\\n              : AnnotationEditorType.INK;\\n          },\\n        },\\n      },\\n      {\\n        element: options.editorStampButton,\\n        eventName: \\\"switchannotationeditormode\\\",\\n        eventDetails: {\\n          get mode() {\\n            const { classList } = options.editorStampButton;\\n            return classList.contains(\\\"toggled\\\")\\n              ? AnnotationEditorType.NONE\\n              : AnnotationEditorType.STAMP;\\n          },\\n        },\\n      },\\n    ];\\n\\n    \u002F\u002F Bind the event listeners for click and various other actions.\\n    this.#bindListeners(buttons);\\n\\n    if (options.editorHighlightColorPicker) {\\n      eventBus._on(\\n        \\\"annotationeditoruimanager\\\",\\n        ({ uiManager }) => {\\n          this.#setAnnotationEditorUIManager(\\n            uiManager,\\n            options.editorHighlightColorPicker\\n          );\\n        },\\n        \u002F\u002F Once the color picker has been added, we don't want to add it again.\\n        { once: true }\\n      );\\n    }\\n\\n    eventBus._on(\\\"showannotationeditorui\\\", ({ mode }) => {\\n      switch (mode) {\\n        case AnnotationEditorType.HIGHLIGHT:\\n          options.editorHighlightButton.click();\\n          break;\\n      }\\n    });\\n\\n    this.reset();\\n  }\\n\\n  #setAnnotationEditorUIManager(uiManager, parentContainer) {\\n    const colorPicker = new ColorPicker({ uiManager });\\n    uiManager.setMainHighlightColorPicker(colorPicker);\\n    parentContainer.append(colorPicker.renderMainDropdown());\\n  }\\n\\n  setPageNumber(pageNumber, pageLabel) {\\n    this.pageNumber = pageNumber;\\n    this.pageLabel = pageLabel;\\n    this.#updateUIState(false);\\n  }\\n\\n  setPagesCount(pagesCount, hasPageLabels) {\\n    this.pagesCount = pagesCount;\\n    this.hasPageLabels = hasPageLabels;\\n    this.#updateUIState(true);\\n  }\\n\\n  setPageScale(pageScaleValue, pageScale) {\\n    this.pageScaleValue = (pageScaleValue || pageScale).toString();\\n    this.pageScale = pageScale;\\n    this.#updateUIState(false);\\n  }\\n\\n  reset() {\\n    this.pageNumber = 0;\\n    this.pageLabel = null;\\n    this.hasPageLabels = false;\\n    this.pagesCount = 0;\\n    this.pageScaleValue = DEFAULT_SCALE_VALUE;\\n    this.pageScale = DEFAULT_SCALE;\\n    this.#updateUIState(true);\\n    this.updateLoadingIndicatorState();\\n\\n    \u002F\u002F Reset the Editor buttons too, since they're document specific.\\n    this.#editorModeChanged({ mode: AnnotationEditorType.DISABLE });\\n  }\\n\\n  #bindListeners(buttons) {\\n    const { eventBus } = this;\\n    const { pageNumber, scaleSelect } = this.#opts;\\n    const self = this;\\n\\n    \u002F\u002F The buttons within the toolbar.\\n    for (const { element, eventName, eventDetails } of buttons) {\\n      element.addEventListener(\\\"click\\\", evt => {\\n        if (eventName !== null) {\\n          eventBus.dispatch(eventName, {\\n            source: this,\\n            ...eventDetails,\\n            \u002F\u002F evt.detail is the number of clicks.\\n            isFromKeyboard: evt.detail === 0,\\n          });\\n        }\\n      });\\n    }\\n    \u002F\u002F The non-button elements within the toolbar.\\n    pageNumber.addEventListener(\\\"click\\\", function () {\\n      this.select();\\n    });\\n    pageNumber.addEventListener(\\\"change\\\", function () {\\n      eventBus.dispatch(\\\"pagenumberchanged\\\", {\\n        source: self,\\n        value: this.value,\\n      });\\n    });\\n\\n    scaleSelect.addEventListener(\\\"change\\\", function () {\\n      if (this.value === \\\"custom\\\") {\\n        return;\\n      }\\n      eventBus.dispatch(\\\"scalechanged\\\", {\\n        source: self,\\n        value: this.value,\\n      });\\n    });\\n    \u002F\u002F Here we depend on browsers dispatching the \\\"click\\\" event *after* the\\n    \u002F\u002F \\\"change\\\" event, when the \u003Cselect>-element changes.\\n    scaleSelect.addEventListener(\\\"click\\\", function ({ target }) {\\n      \u002F\u002F Remove focus when an \u003Coption>-element was *clicked*, to improve the UX\\n      \u002F\u002F for mouse users (fixes bug 1300525 and issue 4923).\\n      if (\\n        this.value === self.pageScaleValue &&\\n        target.tagName.toUpperCase() === \\\"OPTION\\\"\\n      ) {\\n        this.blur();\\n      }\\n    });\\n    \u002F\u002F Suppress context menus for some controls.\\n    scaleSelect.oncontextmenu = noContextMenu;\\n\\n    eventBus._on(\\n      \\\"annotationeditormodechanged\\\",\\n      this.#editorModeChanged.bind(this)\\n    );\\n  }\\n\\n  #editorModeChanged({ mode }) {\\n    const {\\n      editorFreeTextButton,\\n      editorFreeTextParamsToolbar,\\n      editorHighlightButton,\\n      editorHighlightParamsToolbar,\\n      editorInkButton,\\n      editorInkParamsToolbar,\\n      editorStampButton,\\n      editorStampParamsToolbar,\\n    } = this.#opts;\\n\\n    toggleCheckedBtn(\\n      editorFreeTextButton,\\n      mode === AnnotationEditorType.FREETEXT,\\n      editorFreeTextParamsToolbar\\n    );\\n    toggleCheckedBtn(\\n      editorHighlightButton,\\n      mode === AnnotationEditorType.HIGHLIGHT,\\n      editorHighlightParamsToolbar\\n    );\\n    toggleCheckedBtn(\\n      editorInkButton,\\n      mode === AnnotationEditorType.INK,\\n      editorInkParamsToolbar\\n    );\\n    toggleCheckedBtn(\\n      editorStampButton,\\n      mode === AnnotationEditorType.STAMP,\\n      editorStampParamsToolbar\\n    );\\n\\n    const isDisable = mode === AnnotationEditorType.DISABLE;\\n    editorFreeTextButton.disabled = isDisable;\\n    editorHighlightButton.disabled = isDisable;\\n    editorInkButton.disabled = isDisable;\\n    editorStampButton.disabled = isDisable;\\n  }\\n\\n  #updateUIState(resetNumPages = false) {\\n    const { pageNumber, pagesCount, pageScaleValue, pageScale } = this;\\n    const opts = this.#opts;\\n\\n    if (resetNumPages) {\\n      if (this.hasPageLabels) {\\n        opts.pageNumber.type = \\\"text\\\";\\n\\n        opts.numPages.setAttribute(\\\"data-l10n-id\\\", \\\"pdfjs-page-of-pages\\\");\\n      } else {\\n        opts.pageNumber.type = \\\"number\\\";\\n\\n        opts.numPages.setAttribute(\\\"data-l10n-id\\\", \\\"pdfjs-of-pages\\\");\\n        opts.numPages.setAttribute(\\n          \\\"data-l10n-args\\\",\\n          JSON.stringify({ pagesCount })\\n        );\\n      }\\n      opts.pageNumber.max = pagesCount;\\n    }\\n\\n    if (this.hasPageLabels) {\\n      opts.pageNumber.value = this.pageLabel;\\n\\n      opts.numPages.setAttribute(\\n        \\\"data-l10n-args\\\",\\n        JSON.stringify({ pageNumber, pagesCount })\\n      );\\n    } else {\\n      opts.pageNumber.value = pageNumber;\\n    }\\n\\n    opts.previous.disabled = pageNumber \u003C= 1;\\n    opts.next.disabled = pageNumber >= pagesCount;\\n\\n    opts.zoomOut.disabled = pageScale \u003C= MIN_SCALE;\\n    opts.zoomIn.disabled = pageScale >= MAX_SCALE;\\n\\n    let predefinedValueFound = false;\\n    for (const option of opts.scaleSelect.options) {\\n      if (option.value !== pageScaleValue) {\\n        option.selected = false;\\n        continue;\\n      }\\n      option.selected = true;\\n      predefinedValueFound = true;\\n    }\\n    if (!predefinedValueFound) {\\n      opts.customScaleOption.selected = true;\\n      opts.customScaleOption.setAttribute(\\n        \\\"data-l10n-args\\\",\\n        JSON.stringify({\\n          scale: Math.round(pageScale * 10000) \u002F 100,\\n        })\\n      );\\n    }\\n  }\\n\\n  updateLoadingIndicatorState(loading = false) {\\n    const { pageNumber } = this.#opts;\\n    pageNumber.classList.toggle(\\\"loading\\\", loading);\\n  }\\n}\\n\\nexport { Toolbar };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nconst DEFAULT_VIEW_HISTORY_CACHE_SIZE = 20;\\n\\n\u002F**\\n * View History - This is a utility for saving various view parameters for\\n *                recently opened files.\\n *\\n * The way that the view parameters are stored depends on how PDF.js is built,\\n * for 'gulp \u003Cflag>' the following cases exist:\\n *  - MOZCENTRAL        - uses sessionStorage.\\n *  - GENERIC or CHROME - uses localStorage, if it is available.\\n *\u002F\\nclass ViewHistory {\\n  constructor(fingerprint, cacheSize = DEFAULT_VIEW_HISTORY_CACHE_SIZE) {\\n    this.fingerprint = fingerprint;\\n    this.cacheSize = cacheSize;\\n\\n    this._initializedPromise = this._readFromStorage().then(databaseStr => {\\n      const database = JSON.parse(databaseStr || \\\"{}\\\");\\n      let index = -1;\\n      if (!Array.isArray(database.files)) {\\n        database.files = [];\\n      } else {\\n        while (database.files.length >= this.cacheSize) {\\n          database.files.shift();\\n        }\\n\\n        for (let i = 0, ii = database.files.length; i \u003C ii; i++) {\\n          const branch = database.files[i];\\n          if (branch.fingerprint === this.fingerprint) {\\n            index = i;\\n            break;\\n          }\\n        }\\n      }\\n      if (index === -1) {\\n        index = database.files.push({ fingerprint: this.fingerprint }) - 1;\\n      }\\n      this.file = database.files[index];\\n      this.database = database;\\n    });\\n  }\\n\\n  async _writeToStorage() {\\n    const databaseStr = JSON.stringify(this.database);\\n\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      sessionStorage.setItem(\\\"pdfjs.history\\\", databaseStr);\\n      return;\\n    }\\n    localStorage.setItem(\\\"pdfjs.history\\\", databaseStr);\\n  }\\n\\n  async _readFromStorage() {\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      return sessionStorage.getItem(\\\"pdfjs.history\\\");\\n    }\\n    return localStorage.getItem(\\\"pdfjs.history\\\");\\n  }\\n\\n  async set(name, val) {\\n    await this._initializedPromise;\\n    this.file[name] = val;\\n    return this._writeToStorage();\\n  }\\n\\n  async setMultiple(properties) {\\n    await this._initializedPromise;\\n    for (const name in properties) {\\n      this.file[name] = properties[name];\\n    }\\n    return this._writeToStorage();\\n  }\\n\\n  async get(name, defaultValue) {\\n    await this._initializedPromise;\\n    const val = this.file[name];\\n    return val !== undefined ? val : defaultValue;\\n  }\\n\\n  async getMultiple(properties) {\\n    await this._initializedPromise;\\n    const values = Object.create(null);\\n\\n    for (const name in properties) {\\n      const val = this.file[name];\\n      values[name] = val !== undefined ? val : properties[name];\\n    }\\n    return values;\\n  }\\n}\\n\\nexport { ViewHistory };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Finterfaces.js\\\").IL10n} IL10n *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fapi.js\\\").PDFDocumentProxy} PDFDocumentProxy *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fapi.js\\\").PDFDocumentLoadingTask} PDFDocumentLoadingTask *\u002F\\n\\nimport {\\n  animationStarted,\\n  apiPageLayoutToViewerModes,\\n  apiPageModeToSidebarView,\\n  AutoPrintRegExp,\\n  CursorTool,\\n  DEFAULT_SCALE_VALUE,\\n  getActiveOrFocusedElement,\\n  isValidRotation,\\n  isValidScrollMode,\\n  isValidSpreadMode,\\n  normalizeWheelEventDirection,\\n  parseQueryString,\\n  ProgressBar,\\n  RenderingStates,\\n  ScrollMode,\\n  SidebarView,\\n  SpreadMode,\\n  TextLayerMode,\\n} from \\\".\u002Fui_utils.js\\\";\\nimport {\\n  AnnotationEditorType,\\n  build,\\n  FeatureTest,\\n  getDocument,\\n  getFilenameFromUrl,\\n  getPdfFilenameFromUrl,\\n  GlobalWorkerOptions,\\n  InvalidPDFException,\\n  isDataScheme,\\n  isPdfFile,\\n  MissingPDFException,\\n  PDFWorker,\\n  shadow,\\n  UnexpectedResponseException,\\n  version,\\n} from \\\"pdfjs-lib\\\";\\nimport { AppOptions, OptionKind } from \\\".\u002Fapp_options.js\\\";\\nimport { AutomationEventBus, EventBus } from \\\".\u002Fevent_utils.js\\\";\\nimport { ExternalServices, initCom, MLManager } from \\\"web-external_services\\\";\\nimport { LinkTarget, PDFLinkService } from \\\".\u002Fpdf_link_service.js\\\";\\nimport { AltTextManager } from \\\"web-alt_text_manager\\\";\\nimport { AnnotationEditorParams } from \\\"web-annotation_editor_params\\\";\\nimport { CaretBrowsingMode } from \\\".\u002Fcaret_browsing.js\\\";\\nimport { DownloadManager } from \\\"web-download_manager\\\";\\nimport { OverlayManager } from \\\".\u002Foverlay_manager.js\\\";\\nimport { PasswordPrompt } from \\\".\u002Fpassword_prompt.js\\\";\\nimport { PDFAttachmentViewer } from \\\"web-pdf_attachment_viewer\\\";\\nimport { PDFCursorTools } from \\\"web-pdf_cursor_tools\\\";\\nimport { PDFDocumentProperties } from \\\"web-pdf_document_properties\\\";\\nimport { PDFFindBar } from \\\"web-pdf_find_bar\\\";\\nimport { PDFFindController } from \\\".\u002Fpdf_find_controller.js\\\";\\nimport { PDFHistory } from \\\".\u002Fpdf_history.js\\\";\\nimport { PDFLayerViewer } from \\\"web-pdf_layer_viewer\\\";\\nimport { PDFOutlineViewer } from \\\"web-pdf_outline_viewer\\\";\\nimport { PDFPresentationMode } from \\\"web-pdf_presentation_mode\\\";\\nimport { PDFPrintServiceFactory } from \\\"web-print_service\\\";\\nimport { PDFRenderingQueue } from \\\".\u002Fpdf_rendering_queue.js\\\";\\nimport { PDFScriptingManager } from \\\".\u002Fpdf_scripting_manager.js\\\";\\nimport { PDFSidebar } from \\\"web-pdf_sidebar\\\";\\nimport { PDFThumbnailViewer } from \\\"web-pdf_thumbnail_viewer\\\";\\nimport { PDFViewer } from \\\".\u002Fpdf_viewer.js\\\";\\nimport { Preferences } from \\\"web-preferences\\\";\\nimport { SecondaryToolbar } from \\\"web-secondary_toolbar\\\";\\nimport { Toolbar } from \\\"web-toolbar\\\";\\nimport { ViewHistory } from \\\".\u002Fview_history.js\\\";\\n\\nconst FORCE_PAGES_LOADED_TIMEOUT = 10000; \u002F\u002F ms\\nconst WHEEL_ZOOM_DISABLED_TIMEOUT = 1000; \u002F\u002F ms\\n\\nconst ViewOnLoad = {\\n  UNKNOWN: -1,\\n  PREVIOUS: 0, \u002F\u002F Default value.\\n  INITIAL: 1,\\n};\\n\\nconst PDFViewerApplication = {\\n  initialBookmark: document.location.hash.substring(1),\\n  _initializedCapability: {\\n    ...Promise.withResolvers(),\\n    settled: false,\\n  },\\n  appConfig: null,\\n  \u002F** @type {PDFDocumentProxy} *\u002F\\n  pdfDocument: null,\\n  \u002F** @type {PDFDocumentLoadingTask} *\u002F\\n  pdfLoadingTask: null,\\n  printService: null,\\n  \u002F** @type {PDFViewer} *\u002F\\n  pdfViewer: null,\\n  \u002F** @type {PDFThumbnailViewer} *\u002F\\n  pdfThumbnailViewer: null,\\n  \u002F** @type {PDFRenderingQueue} *\u002F\\n  pdfRenderingQueue: null,\\n  \u002F** @type {PDFPresentationMode} *\u002F\\n  pdfPresentationMode: null,\\n  \u002F** @type {PDFDocumentProperties} *\u002F\\n  pdfDocumentProperties: null,\\n  \u002F** @type {PDFLinkService} *\u002F\\n  pdfLinkService: null,\\n  \u002F** @type {PDFHistory} *\u002F\\n  pdfHistory: null,\\n  \u002F** @type {PDFSidebar} *\u002F\\n  pdfSidebar: null,\\n  \u002F** @type {PDFOutlineViewer} *\u002F\\n  pdfOutlineViewer: null,\\n  \u002F** @type {PDFAttachmentViewer} *\u002F\\n  pdfAttachmentViewer: null,\\n  \u002F** @type {PDFLayerViewer} *\u002F\\n  pdfLayerViewer: null,\\n  \u002F** @type {PDFCursorTools} *\u002F\\n  pdfCursorTools: null,\\n  \u002F** @type {PDFScriptingManager} *\u002F\\n  pdfScriptingManager: null,\\n  \u002F** @type {ViewHistory} *\u002F\\n  store: null,\\n  \u002F** @type {DownloadManager} *\u002F\\n  downloadManager: null,\\n  \u002F** @type {OverlayManager} *\u002F\\n  overlayManager: null,\\n  \u002F** @type {Preferences} *\u002F\\n  preferences: null,\\n  \u002F** @type {Toolbar} *\u002F\\n  toolbar: null,\\n  \u002F** @type {SecondaryToolbar} *\u002F\\n  secondaryToolbar: null,\\n  \u002F** @type {EventBus} *\u002F\\n  eventBus: null,\\n  \u002F** @type {IL10n} *\u002F\\n  l10n: null,\\n  \u002F** @type {AnnotationEditorParams} *\u002F\\n  annotationEditorParams: null,\\n  isInitialViewSet: false,\\n  downloadComplete: false,\\n  isViewerEmbedded: window.parent !== window,\\n  url: \\\"\\\",\\n  baseUrl: \\\"\\\",\\n  _downloadUrl: \\\"\\\",\\n  _eventBusAbortController: null,\\n  _windowAbortController: null,\\n  documentInfo: null,\\n  metadata: null,\\n  _contentDispositionFilename: null,\\n  _contentLength: null,\\n  _saveInProgress: false,\\n  _wheelUnusedTicks: 0,\\n  _wheelUnusedFactor: 1,\\n  _touchUnusedTicks: 0,\\n  _touchUnusedFactor: 1,\\n  _PDFBug: null,\\n  _hasAnnotationEditors: false,\\n  _title: document.title,\\n  _printAnnotationStoragePromise: null,\\n  _touchInfo: null,\\n  _isCtrlKeyDown: false,\\n  _nimbusDataPromise: null,\\n  _caretBrowsing: null,\\n  _isScrolling: false,\\n\\n  \u002F\u002F Called once when the document is loaded.\\n  async initialize(appConfig) {\\n    let l10nPromise;\\n    \u002F\u002F In the (various) extension builds, where the locale is set automatically,\\n    \u002F\u002F initialize the `L10n`-instance as soon as possible.\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && !PDFJSDev.test(\\\"GENERIC\\\")) {\\n      l10nPromise = this.externalServices.createL10n();\\n    }\\n    this.appConfig = appConfig;\\n\\n    if (\\n      typeof PDFJSDev === \\\"undefined\\\"\\n        ? window.isGECKOVIEW\\n        : PDFJSDev.test(\\\"GECKOVIEW\\\")\\n    ) {\\n      this._nimbusDataPromise = this.externalServices.getNimbusExperimentData();\\n    }\\n\\n    \u002F\u002F Ensure that `Preferences`, and indirectly `AppOptions`, have initialized\\n    \u002F\u002F before creating e.g. the various viewer components.\\n    try {\\n      await this.preferences.initializedPromise;\\n    } catch (ex) {\\n      console.error(`initialize: \\\"${ex.message}\\\".`);\\n    }\\n    if (AppOptions.get(\\\"pdfBugEnabled\\\")) {\\n      await this._parseHashParams();\\n    }\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      let mode;\\n      switch (AppOptions.get(\\\"viewerCssTheme\\\")) {\\n        case 1:\\n          mode = \\\"is-light\\\";\\n          break;\\n        case 2:\\n          mode = \\\"is-dark\\\";\\n          break;\\n      }\\n      if (mode) {\\n        document.documentElement.classList.add(mode);\\n      }\\n    }\\n\\n    \u002F\u002F Ensure that the `L10n`-instance has been initialized before creating\\n    \u002F\u002F e.g. the various viewer components.\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      l10nPromise = this.externalServices.createL10n();\\n    }\\n    this.l10n = await l10nPromise;\\n    document.getElementsByTagName(\\\"html\\\")[0].dir = this.l10n.getDirection();\\n    \u002F\u002F Connect Fluent, when necessary, and translate what we already have.\\n    if (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      this.l10n.translate(appConfig.appContainer || document.documentElement);\\n    }\\n\\n    if (\\n      this.isViewerEmbedded &&\\n      AppOptions.get(\\\"externalLinkTarget\\\") === LinkTarget.NONE\\n    ) {\\n      \u002F\u002F Prevent external links from \\\"replacing\\\" the viewer,\\n      \u002F\u002F when it's embedded in e.g. an \u003Ciframe> or an \u003Cobject>.\\n      AppOptions.set(\\\"externalLinkTarget\\\", LinkTarget.TOP);\\n    }\\n    await this._initializeViewerComponents();\\n\\n    \u002F\u002F Bind the various event handlers *after* the viewer has been\\n    \u002F\u002F initialized, to prevent errors if an event arrives too soon.\\n    this.bindEvents();\\n    this.bindWindowEvents();\\n\\n    this._initializedCapability.settled = true;\\n    this._initializedCapability.resolve();\\n  },\\n\\n  \u002F**\\n   * Potentially parse special debugging flags in the hash section of the URL.\\n   * @private\\n   *\u002F\\n  async _parseHashParams() {\\n    const hash = document.location.hash.substring(1);\\n    if (!hash) {\\n      return;\\n    }\\n    const { mainContainer, viewerContainer } = this.appConfig,\\n      params = parseQueryString(hash);\\n\\n    const loadPDFBug = async () => {\\n      if (this._PDFBug) {\\n        return;\\n      }\\n      const { PDFBug } =\\n        typeof PDFJSDev === \\\"undefined\\\"\\n          ? await import(AppOptions.get(\\\"debuggerSrc\\\")) \u002F\u002F eslint-disable-line no-unsanitized\u002Fmethod\\n          : await __non_webpack_import__(AppOptions.get(\\\"debuggerSrc\\\"));\\n\\n      this._PDFBug = PDFBug;\\n    };\\n\\n    if (params.get(\\\"disableworker\\\") === \\\"true\\\") {\\n      try {\\n        GlobalWorkerOptions.workerSrc ||= AppOptions.get(\\\"workerSrc\\\");\\n\\n        if (typeof PDFJSDev === \\\"undefined\\\") {\\n          globalThis.pdfjsWorker = await import(\\\"pdfjs\u002Fpdf.worker.js\\\");\\n        } else {\\n          await __non_webpack_import__(PDFWorker.workerSrc);\\n        }\\n      } catch (ex) {\\n        console.error(`_parseHashParams: \\\"${ex.message}\\\".`);\\n      }\\n    }\\n    if (params.has(\\\"disablerange\\\")) {\\n      AppOptions.set(\\\"disableRange\\\", params.get(\\\"disablerange\\\") === \\\"true\\\");\\n    }\\n    if (params.has(\\\"disablestream\\\")) {\\n      AppOptions.set(\\\"disableStream\\\", params.get(\\\"disablestream\\\") === \\\"true\\\");\\n    }\\n    if (params.has(\\\"disableautofetch\\\")) {\\n      AppOptions.set(\\n        \\\"disableAutoFetch\\\",\\n        params.get(\\\"disableautofetch\\\") === \\\"true\\\"\\n      );\\n    }\\n    if (params.has(\\\"disablefontface\\\")) {\\n      AppOptions.set(\\n        \\\"disableFontFace\\\",\\n        params.get(\\\"disablefontface\\\") === \\\"true\\\"\\n      );\\n    }\\n    if (params.has(\\\"disablehistory\\\")) {\\n      AppOptions.set(\\\"disableHistory\\\", params.get(\\\"disablehistory\\\") === \\\"true\\\");\\n    }\\n    if (params.has(\\\"verbosity\\\")) {\\n      AppOptions.set(\\\"verbosity\\\", params.get(\\\"verbosity\\\") | 0);\\n    }\\n    if (params.has(\\\"textlayer\\\")) {\\n      switch (params.get(\\\"textlayer\\\")) {\\n        case \\\"off\\\":\\n          AppOptions.set(\\\"textLayerMode\\\", TextLayerMode.DISABLE);\\n          break;\\n        case \\\"visible\\\":\\n        case \\\"shadow\\\":\\n        case \\\"hover\\\":\\n          viewerContainer.classList.add(`textLayer-${params.get(\\\"textlayer\\\")}`);\\n          try {\\n            await loadPDFBug();\\n            this._PDFBug.loadCSS();\\n          } catch (ex) {\\n            console.error(`_parseHashParams: \\\"${ex.message}\\\".`);\\n          }\\n          break;\\n      }\\n    }\\n    if (params.has(\\\"pdfbug\\\")) {\\n      AppOptions.setAll({ pdfBug: true, fontExtraProperties: true });\\n\\n      const enabled = params.get(\\\"pdfbug\\\").split(\\\",\\\");\\n      try {\\n        await loadPDFBug();\\n        this._PDFBug.init(mainContainer, enabled);\\n      } catch (ex) {\\n        console.error(`_parseHashParams: \\\"${ex.message}\\\".`);\\n      }\\n    }\\n    \u002F\u002F It is not possible to change locale for the (various) extension builds.\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) &&\\n      params.has(\\\"locale\\\")\\n    ) {\\n      AppOptions.set(\\\"locale\\\", params.get(\\\"locale\\\"));\\n    }\\n\\n    \u002F\u002F Set some specific preferences for tests.\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING\\\")) {\\n      if (params.has(\\\"highlighteditorcolors\\\")) {\\n        AppOptions.set(\\n          \\\"highlightEditorColors\\\",\\n          params.get(\\\"highlighteditorcolors\\\")\\n        );\\n      }\\n      if (params.has(\\\"maxcanvaspixels\\\")) {\\n        AppOptions.set(\\n          \\\"maxCanvasPixels\\\",\\n          Number(params.get(\\\"maxcanvaspixels\\\"))\\n        );\\n      }\\n      if (params.has(\\\"supportscaretbrowsingmode\\\")) {\\n        AppOptions.set(\\n          \\\"supportsCaretBrowsingMode\\\",\\n          params.get(\\\"supportscaretbrowsingmode\\\") === \\\"true\\\"\\n        );\\n      }\\n    }\\n  },\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  async _initializeViewerComponents() {\\n    const { appConfig, externalServices, l10n } = this;\\n\\n    const eventBus = AppOptions.get(\\\"isInAutomation\\\")\\n      ? new AutomationEventBus()\\n      : new EventBus();\\n    this.eventBus = eventBus;\\n\\n    this.overlayManager = new OverlayManager();\\n\\n    const pdfRenderingQueue = new PDFRenderingQueue();\\n    pdfRenderingQueue.onIdle = this._cleanup.bind(this);\\n    this.pdfRenderingQueue = pdfRenderingQueue;\\n\\n    const pdfLinkService = new PDFLinkService({\\n      eventBus,\\n      externalLinkTarget: AppOptions.get(\\\"externalLinkTarget\\\"),\\n      externalLinkRel: AppOptions.get(\\\"externalLinkRel\\\"),\\n      ignoreDestinationZoom: AppOptions.get(\\\"ignoreDestinationZoom\\\"),\\n    });\\n    this.pdfLinkService = pdfLinkService;\\n\\n    const downloadManager = (this.downloadManager = new DownloadManager());\\n\\n    const findController = new PDFFindController({\\n      linkService: pdfLinkService,\\n      eventBus,\\n      updateMatchesCountOnProgress:\\n        typeof PDFJSDev === \\\"undefined\\\"\\n          ? !window.isGECKOVIEW\\n          : !PDFJSDev.test(\\\"GECKOVIEW\\\"),\\n    });\\n    this.findController = findController;\\n\\n    const pdfScriptingManager = new PDFScriptingManager({\\n      eventBus,\\n      externalServices,\\n      docProperties: this._scriptingDocProperties.bind(this),\\n    });\\n    this.pdfScriptingManager = pdfScriptingManager;\\n\\n    const container = appConfig.mainContainer,\\n      viewer = appConfig.viewerContainer;\\n    const annotationEditorMode = AppOptions.get(\\\"annotationEditorMode\\\");\\n    const pageColors =\\n      AppOptions.get(\\\"forcePageColors\\\") ||\\n      window.matchMedia(\\\"(forced-colors: active)\\\").matches\\n        ? {\\n            background: AppOptions.get(\\\"pageColorsBackground\\\"),\\n            foreground: AppOptions.get(\\\"pageColorsForeground\\\"),\\n          }\\n        : null;\\n    const altTextManager = appConfig.altTextDialog\\n      ? new AltTextManager(\\n          appConfig.altTextDialog,\\n          container,\\n          this.overlayManager,\\n          eventBus\\n        )\\n      : null;\\n\\n    const pdfViewer = new PDFViewer({\\n      container,\\n      viewer,\\n      eventBus,\\n      renderingQueue: pdfRenderingQueue,\\n      linkService: pdfLinkService,\\n      downloadManager,\\n      altTextManager,\\n      findController,\\n      scriptingManager:\\n        AppOptions.get(\\\"enableScripting\\\") && pdfScriptingManager,\\n      l10n,\\n      textLayerMode: AppOptions.get(\\\"textLayerMode\\\"),\\n      annotationMode: AppOptions.get(\\\"annotationMode\\\"),\\n      annotationEditorMode,\\n      annotationEditorHighlightColors: AppOptions.get(\\\"highlightEditorColors\\\"),\\n      enableHighlightFloatingButton: AppOptions.get(\\n        \\\"enableHighlightFloatingButton\\\"\\n      ),\\n      imageResourcesPath: AppOptions.get(\\\"imageResourcesPath\\\"),\\n      enablePrintAutoRotate: AppOptions.get(\\\"enablePrintAutoRotate\\\"),\\n      maxCanvasPixels: AppOptions.get(\\\"maxCanvasPixels\\\"),\\n      enablePermissions: AppOptions.get(\\\"enablePermissions\\\"),\\n      pageColors,\\n      mlManager: this.mlManager,\\n    });\\n    this.pdfViewer = pdfViewer;\\n\\n    pdfRenderingQueue.setViewer(pdfViewer);\\n    pdfLinkService.setViewer(pdfViewer);\\n    pdfScriptingManager.setViewer(pdfViewer);\\n\\n    if (appConfig.sidebar?.thumbnailView) {\\n      this.pdfThumbnailViewer = new PDFThumbnailViewer({\\n        container: appConfig.sidebar.thumbnailView,\\n        eventBus,\\n        renderingQueue: pdfRenderingQueue,\\n        linkService: pdfLinkService,\\n        pageColors,\\n      });\\n      pdfRenderingQueue.setThumbnailViewer(this.pdfThumbnailViewer);\\n    }\\n\\n    \u002F\u002F The browsing history is only enabled when the viewer is standalone,\\n    \u002F\u002F i.e. not when it is embedded in a web page.\\n    if (!this.isViewerEmbedded && !AppOptions.get(\\\"disableHistory\\\")) {\\n      this.pdfHistory = new PDFHistory({\\n        linkService: pdfLinkService,\\n        eventBus,\\n      });\\n      pdfLinkService.setHistory(this.pdfHistory);\\n    }\\n\\n    if (!this.supportsIntegratedFind && appConfig.findBar) {\\n      this.findBar = new PDFFindBar(appConfig.findBar, eventBus);\\n    }\\n\\n    if (appConfig.annotationEditorParams) {\\n      if (annotationEditorMode !== AnnotationEditorType.DISABLE) {\\n        if (AppOptions.get(\\\"enableStampEditor\\\")) {\\n          appConfig.toolbar?.editorStampButton?.classList.remove(\\\"hidden\\\");\\n        }\\n\\n        const editorHighlightButton = appConfig.toolbar?.editorHighlightButton;\\n        if (editorHighlightButton && AppOptions.get(\\\"enableHighlightEditor\\\")) {\\n          editorHighlightButton.hidden = false;\\n        }\\n\\n        this.annotationEditorParams = new AnnotationEditorParams(\\n          appConfig.annotationEditorParams,\\n          eventBus\\n        );\\n      } else {\\n        for (const id of [\\\"editorModeButtons\\\", \\\"editorModeSeparator\\\"]) {\\n          document.getElementById(id)?.classList.add(\\\"hidden\\\");\\n        }\\n      }\\n    }\\n\\n    if (appConfig.documentProperties) {\\n      this.pdfDocumentProperties = new PDFDocumentProperties(\\n        appConfig.documentProperties,\\n        this.overlayManager,\\n        eventBus,\\n        l10n,\\n        \u002F* fileNameLookup = *\u002F () => this._docFilename\\n      );\\n    }\\n\\n    \u002F\u002F NOTE: The cursor-tools are unlikely to be helpful\u002Fuseful in GeckoView,\\n    \u002F\u002F in particular the `HandTool` which basically simulates touch scrolling.\\n    if (appConfig.secondaryToolbar?.cursorHandToolButton) {\\n      this.pdfCursorTools = new PDFCursorTools({\\n        container,\\n        eventBus,\\n        cursorToolOnLoad: AppOptions.get(\\\"cursorToolOnLoad\\\"),\\n      });\\n    }\\n\\n    if (appConfig.toolbar) {\\n      if (\\n        typeof PDFJSDev === \\\"undefined\\\"\\n          ? window.isGECKOVIEW\\n          : PDFJSDev.test(\\\"GECKOVIEW\\\")\\n      ) {\\n        this.toolbar = new Toolbar(\\n          appConfig.toolbar,\\n          eventBus,\\n          await this._nimbusDataPromise\\n        );\\n      } else {\\n        this.toolbar = new Toolbar(appConfig.toolbar, eventBus);\\n      }\\n    }\\n\\n    if (appConfig.secondaryToolbar) {\\n      this.secondaryToolbar = new SecondaryToolbar(\\n        appConfig.secondaryToolbar,\\n        eventBus\\n      );\\n    }\\n\\n    if (\\n      this.supportsFullscreen &&\\n      appConfig.secondaryToolbar?.presentationModeButton\\n    ) {\\n      this.pdfPresentationMode = new PDFPresentationMode({\\n        container,\\n        pdfViewer,\\n        eventBus,\\n      });\\n    }\\n\\n    if (appConfig.passwordOverlay) {\\n      this.passwordPrompt = new PasswordPrompt(\\n        appConfig.passwordOverlay,\\n        this.overlayManager,\\n        this.isViewerEmbedded\\n      );\\n    }\\n\\n    if (appConfig.sidebar?.outlineView) {\\n      this.pdfOutlineViewer = new PDFOutlineViewer({\\n        container: appConfig.sidebar.outlineView,\\n        eventBus,\\n        l10n,\\n        linkService: pdfLinkService,\\n        downloadManager,\\n      });\\n    }\\n\\n    if (appConfig.sidebar?.attachmentsView) {\\n      this.pdfAttachmentViewer = new PDFAttachmentViewer({\\n        container: appConfig.sidebar.attachmentsView,\\n        eventBus,\\n        l10n,\\n        downloadManager,\\n      });\\n    }\\n\\n    if (appConfig.sidebar?.layersView) {\\n      this.pdfLayerViewer = new PDFLayerViewer({\\n        container: appConfig.sidebar.layersView,\\n        eventBus,\\n        l10n,\\n      });\\n    }\\n\\n    if (appConfig.sidebar) {\\n      this.pdfSidebar = new PDFSidebar({\\n        elements: appConfig.sidebar,\\n        eventBus,\\n        l10n,\\n      });\\n      this.pdfSidebar.onToggled = this.forceRendering.bind(this);\\n      this.pdfSidebar.onUpdateThumbnails = () => {\\n        \u002F\u002F Use the rendered pages to set the corresponding thumbnail images.\\n        for (const pageView of pdfViewer.getCachedPageViews()) {\\n          if (pageView.renderingState === RenderingStates.FINISHED) {\\n            this.pdfThumbnailViewer\\n              .getThumbnail(pageView.id - 1)\\n              ?.setImage(pageView);\\n          }\\n        }\\n        this.pdfThumbnailViewer.scrollThumbnailIntoView(\\n          pdfViewer.currentPageNumber\\n        );\\n      };\\n    }\\n  },\\n\\n  async run(config) {\\n    this.preferences = new Preferences();\\n    await this.initialize(config);\\n\\n    const { appConfig, eventBus } = this;\\n    let file;\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      const queryString = document.location.search.substring(1);\\n      const params = parseQueryString(queryString);\\n      file = params.get(\\\"file\\\") ?? AppOptions.get(\\\"defaultUrl\\\");\\n      validateFileURL(file);\\n    } else if (PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      file = window.location.href;\\n    } else if (PDFJSDev.test(\\\"CHROME\\\")) {\\n      file = AppOptions.get(\\\"defaultUrl\\\");\\n    }\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      const fileInput = (this._openFileInput = document.createElement(\\\"input\\\"));\\n      fileInput.id = \\\"fileInput\\\";\\n      fileInput.hidden = true;\\n      fileInput.type = \\\"file\\\";\\n      fileInput.value = null;\\n      document.body.append(fileInput);\\n\\n      fileInput.addEventListener(\\\"change\\\", function (evt) {\\n        const { files } = evt.target;\\n        if (!files || files.length === 0) {\\n          return;\\n        }\\n        eventBus.dispatch(\\\"fileinputchange\\\", {\\n          source: this,\\n          fileInput: evt.target,\\n        });\\n      });\\n\\n      \u002F\u002F Enable dragging-and-dropping a new PDF file onto the viewerContainer.\\n      appConfig.mainContainer.addEventListener(\\\"dragover\\\", function (evt) {\\n        evt.preventDefault();\\n\\n        evt.dataTransfer.dropEffect =\\n          evt.dataTransfer.effectAllowed === \\\"copy\\\" ? \\\"copy\\\" : \\\"move\\\";\\n      });\\n      appConfig.mainContainer.addEventListener(\\\"drop\\\", function (evt) {\\n        evt.preventDefault();\\n\\n        const { files } = evt.dataTransfer;\\n        if (!files || files.length === 0) {\\n          return;\\n        }\\n        eventBus.dispatch(\\\"fileinputchange\\\", {\\n          source: this,\\n          fileInput: evt.dataTransfer,\\n        });\\n      });\\n    }\\n\\n    if (!AppOptions.get(\\\"supportsDocumentFonts\\\")) {\\n      AppOptions.set(\\\"disableFontFace\\\", true);\\n      this.l10n.get(\\\"pdfjs-web-fonts-disabled\\\").then(msg => {\\n        console.warn(msg);\\n      });\\n    }\\n\\n    if (!this.supportsPrinting) {\\n      appConfig.toolbar?.print?.classList.add(\\\"hidden\\\");\\n      appConfig.secondaryToolbar?.printButton.classList.add(\\\"hidden\\\");\\n    }\\n\\n    if (!this.supportsFullscreen) {\\n      appConfig.secondaryToolbar?.presentationModeButton.classList.add(\\n        \\\"hidden\\\"\\n      );\\n    }\\n\\n    if (this.supportsIntegratedFind) {\\n      appConfig.toolbar?.viewFind?.classList.add(\\\"hidden\\\");\\n    }\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      if (file) {\\n        this.open({ url: file });\\n      } else {\\n        this._hideViewBookmark();\\n      }\\n    } else if (PDFJSDev.test(\\\"MOZCENTRAL || CHROME\\\")) {\\n      this.setTitleUsingUrl(file, \u002F* downloadUrl = *\u002F file);\\n\\n      this.externalServices.initPassiveLoading();\\n    } else {\\n      throw new Error(\\\"Not implemented: run\\\");\\n    }\\n  },\\n\\n  get externalServices() {\\n    return shadow(this, \\\"externalServices\\\", new ExternalServices());\\n  },\\n\\n  get mlManager() {\\n    return shadow(\\n      this,\\n      \\\"mlManager\\\",\\n      AppOptions.get(\\\"enableML\\\") === true ? new MLManager() : null\\n    );\\n  },\\n\\n  get initialized() {\\n    return this._initializedCapability.settled;\\n  },\\n\\n  get initializedPromise() {\\n    return this._initializedCapability.promise;\\n  },\\n\\n  updateZoom(steps, scaleFactor, origin) {\\n    if (this.pdfViewer.isInPresentationMode) {\\n      return;\\n    }\\n    this.pdfViewer.updateScale({\\n      drawingDelay: AppOptions.get(\\\"defaultZoomDelay\\\"),\\n      steps,\\n      scaleFactor,\\n      origin,\\n    });\\n  },\\n\\n  zoomIn() {\\n    this.updateZoom(1);\\n  },\\n\\n  zoomOut() {\\n    this.updateZoom(-1);\\n  },\\n\\n  zoomReset() {\\n    if (this.pdfViewer.isInPresentationMode) {\\n      return;\\n    }\\n    this.pdfViewer.currentScaleValue = DEFAULT_SCALE_VALUE;\\n  },\\n\\n  get pagesCount() {\\n    return this.pdfDocument ? this.pdfDocument.numPages : 0;\\n  },\\n\\n  get page() {\\n    return this.pdfViewer.currentPageNumber;\\n  },\\n\\n  set page(val) {\\n    this.pdfViewer.currentPageNumber = val;\\n  },\\n\\n  get supportsPrinting() {\\n    return PDFPrintServiceFactory.supportsPrinting;\\n  },\\n\\n  get supportsFullscreen() {\\n    return shadow(this, \\\"supportsFullscreen\\\", document.fullscreenEnabled);\\n  },\\n\\n  get supportsPinchToZoom() {\\n    return shadow(\\n      this,\\n      \\\"supportsPinchToZoom\\\",\\n      AppOptions.get(\\\"supportsPinchToZoom\\\")\\n    );\\n  },\\n\\n  get supportsIntegratedFind() {\\n    return shadow(\\n      this,\\n      \\\"supportsIntegratedFind\\\",\\n      AppOptions.get(\\\"supportsIntegratedFind\\\")\\n    );\\n  },\\n\\n  get loadingBar() {\\n    const barElement = document.getElementById(\\\"loadingBar\\\");\\n    const bar = barElement ? new ProgressBar(barElement) : null;\\n    return shadow(this, \\\"loadingBar\\\", bar);\\n  },\\n\\n  get supportsMouseWheelZoomCtrlKey() {\\n    return shadow(\\n      this,\\n      \\\"supportsMouseWheelZoomCtrlKey\\\",\\n      AppOptions.get(\\\"supportsMouseWheelZoomCtrlKey\\\")\\n    );\\n  },\\n\\n  get supportsMouseWheelZoomMetaKey() {\\n    return shadow(\\n      this,\\n      \\\"supportsMouseWheelZoomMetaKey\\\",\\n      AppOptions.get(\\\"supportsMouseWheelZoomMetaKey\\\")\\n    );\\n  },\\n\\n  get supportsCaretBrowsingMode() {\\n    return AppOptions.get(\\\"supportsCaretBrowsingMode\\\");\\n  },\\n\\n  moveCaret(isUp, select) {\\n    this._caretBrowsing ||= new CaretBrowsingMode(\\n      this.appConfig.mainContainer,\\n      this.appConfig.viewerContainer,\\n      this.appConfig.toolbar?.container\\n    );\\n    this._caretBrowsing.moveCaret(isUp, select);\\n  },\\n\\n  setTitleUsingUrl(url = \\\"\\\", downloadUrl = null) {\\n    this.url = url;\\n    this.baseUrl = url.split(\\\"#\\\", 1)[0];\\n    if (downloadUrl) {\\n      this._downloadUrl =\\n        downloadUrl === url ? this.baseUrl : downloadUrl.split(\\\"#\\\", 1)[0];\\n    }\\n    if (isDataScheme(url)) {\\n      this._hideViewBookmark();\\n    }\\n    let title = getPdfFilenameFromUrl(url, \\\"\\\");\\n    if (!title) {\\n      try {\\n        title = decodeURIComponent(getFilenameFromUrl(url)) || url;\\n      } catch {\\n        \u002F\u002F decodeURIComponent may throw URIError,\\n        \u002F\u002F fall back to using the unprocessed url in that case\\n        title = url;\\n      }\\n    }\\n    this.setTitle(title);\\n  },\\n\\n  setTitle(title = this._title) {\\n    this._title = title;\\n\\n    if (this.isViewerEmbedded) {\\n      \u002F\u002F Embedded PDF viewers should not be changing their parent page's title.\\n      return;\\n    }\\n    const editorIndicator =\\n      this._hasAnnotationEditors && !this.pdfRenderingQueue.printing;\\n    document.title = `${editorIndicator ? \\\"* \\\" : \\\"\\\"}${title}`;\\n  },\\n\\n  get _docFilename() {\\n    \u002F\u002F Use `this.url` instead of `this.baseUrl` to perform filename detection\\n    \u002F\u002F based on the reference fragment as ultimate fallback if needed.\\n    return this._contentDispositionFilename || getPdfFilenameFromUrl(this.url);\\n  },\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _hideViewBookmark() {\\n    const { secondaryToolbar } = this.appConfig;\\n    \u002F\u002F URL does not reflect proper document location - hiding some buttons.\\n    secondaryToolbar?.viewBookmarkButton.classList.add(\\\"hidden\\\");\\n\\n    \u002F\u002F Avoid displaying multiple consecutive separators in the secondaryToolbar.\\n    if (secondaryToolbar?.presentationModeButton.classList.contains(\\\"hidden\\\")) {\\n      document.getElementById(\\\"viewBookmarkSeparator\\\")?.classList.add(\\\"hidden\\\");\\n    }\\n  },\\n\\n  \u002F**\\n   * Closes opened PDF document.\\n   * @returns {Promise} - Returns the promise, which is resolved when all\\n   *                      destruction is completed.\\n   *\u002F\\n  async close() {\\n    this._unblockDocumentLoadEvent();\\n    this._hideViewBookmark();\\n\\n    if (!this.pdfLoadingTask) {\\n      return;\\n    }\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) &&\\n      this.pdfDocument?.annotationStorage.size > 0 &&\\n      this._annotationStorageModified\\n    ) {\\n      try {\\n        \u002F\u002F Trigger saving, to prevent data loss in forms; see issue 12257.\\n        await this.save();\\n      } catch {\\n        \u002F\u002F Ignoring errors, to ensure that document closing won't break.\\n      }\\n    }\\n    const promises = [];\\n\\n    promises.push(this.pdfLoadingTask.destroy());\\n    this.pdfLoadingTask = null;\\n\\n    if (this.pdfDocument) {\\n      this.pdfDocument = null;\\n\\n      this.pdfThumbnailViewer?.setDocument(null);\\n      this.pdfViewer.setDocument(null);\\n      this.pdfLinkService.setDocument(null);\\n      this.pdfDocumentProperties?.setDocument(null);\\n    }\\n    this.pdfLinkService.externalLinkEnabled = true;\\n    this.store = null;\\n    this.isInitialViewSet = false;\\n    this.downloadComplete = false;\\n    this.url = \\\"\\\";\\n    this.baseUrl = \\\"\\\";\\n    this._downloadUrl = \\\"\\\";\\n    this.documentInfo = null;\\n    this.metadata = null;\\n    this._contentDispositionFilename = null;\\n    this._contentLength = null;\\n    this._saveInProgress = false;\\n    this._hasAnnotationEditors = false;\\n\\n    promises.push(\\n      this.pdfScriptingManager.destroyPromise,\\n      this.passwordPrompt.close()\\n    );\\n\\n    this.setTitle();\\n    this.pdfSidebar?.reset();\\n    this.pdfOutlineViewer?.reset();\\n    this.pdfAttachmentViewer?.reset();\\n    this.pdfLayerViewer?.reset();\\n\\n    this.pdfHistory?.reset();\\n    this.findBar?.reset();\\n    this.toolbar?.reset();\\n    this.secondaryToolbar?.reset();\\n    this._PDFBug?.cleanup();\\n\\n    await Promise.all(promises);\\n  },\\n\\n  \u002F**\\n   * Opens a new PDF document.\\n   * @param {Object} args - Accepts any\u002Fall of the properties from\\n   *   {@link DocumentInitParameters}, and also a `originalUrl` string.\\n   * @returns {Promise} - Promise that is resolved when the document is opened.\\n   *\u002F\\n  async open(args) {\\n    if (this.pdfLoadingTask) {\\n      \u002F\u002F We need to destroy already opened document.\\n      await this.close();\\n    }\\n    \u002F\u002F Set the necessary global worker parameters, using the available options.\\n    const workerParams = AppOptions.getAll(OptionKind.WORKER);\\n    Object.assign(GlobalWorkerOptions, workerParams);\\n\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      if (args.data && isPdfFile(args.filename)) {\\n        this._contentDispositionFilename = args.filename;\\n      }\\n    } else if (args.url) {\\n      \u002F\u002F The Firefox built-in viewer always calls `setTitleUsingUrl`, before\\n      \u002F\u002F `initPassiveLoading`, and it never provides an `originalUrl` here.\\n      this.setTitleUsingUrl(\\n        args.originalUrl || args.url,\\n        \u002F* downloadUrl = *\u002F args.url\\n      );\\n    }\\n    \u002F\u002F Always set `docBaseUrl` in development mode, and in the (various)\\n    \u002F\u002F extension builds.\\n    if (typeof PDFJSDev === \\\"undefined\\\") {\\n      AppOptions.set(\\\"docBaseUrl\\\", document.URL.split(\\\"#\\\", 1)[0]);\\n    } else if (PDFJSDev.test(\\\"MOZCENTRAL || CHROME\\\")) {\\n      AppOptions.set(\\\"docBaseUrl\\\", this.baseUrl);\\n    }\\n\\n    \u002F\u002F On Android, there is almost no chance to have the font we want so we\\n    \u002F\u002F don't use the system fonts in this case.\\n    if (\\n      typeof PDFJSDev === \\\"undefined\\\"\\n        ? window.isGECKOVIEW\\n        : PDFJSDev.test(\\\"GECKOVIEW\\\")\\n    ) {\\n      args.useSystemFonts = false;\\n    }\\n\\n    \u002F\u002F Set the necessary API parameters, using all the available options.\\n    const apiParams = AppOptions.getAll(OptionKind.API);\\n    const loadingTask = getDocument({\\n      ...apiParams,\\n      ...args,\\n    });\\n    this.pdfLoadingTask = loadingTask;\\n\\n    loadingTask.onPassword = (updateCallback, reason) => {\\n      if (this.isViewerEmbedded) {\\n        \u002F\u002F The load event can't be triggered until the password is entered, so\\n        \u002F\u002F if the viewer is in an iframe and its visibility depends on the\\n        \u002F\u002F onload callback then the viewer never shows (bug 1801341).\\n        this._unblockDocumentLoadEvent();\\n      }\\n\\n      this.pdfLinkService.externalLinkEnabled = false;\\n      this.passwordPrompt.setUpdateCallback(updateCallback, reason);\\n      this.passwordPrompt.open();\\n    };\\n\\n    loadingTask.onProgress = ({ loaded, total }) => {\\n      this.progress(loaded \u002F total);\\n    };\\n\\n    return loadingTask.promise.then(\\n      pdfDocument => {\\n        this.load(pdfDocument);\\n      },\\n      reason => {\\n        if (loadingTask !== this.pdfLoadingTask) {\\n          return undefined; \u002F\u002F Ignore errors for previously opened PDF files.\\n        }\\n\\n        let key = \\\"pdfjs-loading-error\\\";\\n        if (reason instanceof InvalidPDFException) {\\n          key = \\\"pdfjs-invalid-file-error\\\";\\n        } else if (reason instanceof MissingPDFException) {\\n          key = \\\"pdfjs-missing-file-error\\\";\\n        } else if (reason instanceof UnexpectedResponseException) {\\n          key = \\\"pdfjs-unexpected-response-error\\\";\\n        }\\n        return this._documentError(key, { message: reason.message }).then(\\n          () => {\\n            throw reason;\\n          }\\n        );\\n      }\\n    );\\n  },\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _ensureDownloadComplete() {\\n    if (this.pdfDocument && this.downloadComplete) {\\n      return;\\n    }\\n    throw new Error(\\\"PDF document not downloaded.\\\");\\n  },\\n\\n  async download(options = {}) {\\n    const url = this._downloadUrl,\\n      filename = this._docFilename;\\n    try {\\n      this._ensureDownloadComplete();\\n\\n      const data = await this.pdfDocument.getData();\\n      const blob = new Blob([data], { type: \\\"application\u002Fpdf\\\" });\\n\\n      await this.downloadManager.download(blob, url, filename, options);\\n    } catch {\\n      \u002F\u002F When the PDF document isn't ready, or the PDF file is still\\n      \u002F\u002F downloading, simply download using the URL.\\n      await this.downloadManager.downloadUrl(url, filename, options);\\n    }\\n  },\\n\\n  async save(options = {}) {\\n    if (this._saveInProgress) {\\n      return;\\n    }\\n    this._saveInProgress = true;\\n    await this.pdfScriptingManager.dispatchWillSave();\\n\\n    const url = this._downloadUrl,\\n      filename = this._docFilename;\\n    try {\\n      this._ensureDownloadComplete();\\n\\n      const data = await this.pdfDocument.saveDocument();\\n      const blob = new Blob([data], { type: \\\"application\u002Fpdf\\\" });\\n\\n      await this.downloadManager.download(blob, url, filename, options);\\n    } catch (reason) {\\n      \u002F\u002F When the PDF document isn't ready, or the PDF file is still\\n      \u002F\u002F downloading, simply fallback to a \\\"regular\\\" download.\\n      console.error(`Error when saving the document: ${reason.message}`);\\n      await this.download(options);\\n    } finally {\\n      await this.pdfScriptingManager.dispatchDidSave();\\n      this._saveInProgress = false;\\n    }\\n\\n    if (this._hasAnnotationEditors) {\\n      this.externalServices.reportTelemetry({\\n        type: \\\"editing\\\",\\n        data: {\\n          type: \\\"save\\\",\\n          stats: this.pdfDocument?.annotationStorage.editorStats,\\n        },\\n      });\\n    }\\n  },\\n\\n  downloadOrSave(options = {}) {\\n    if (this.pdfDocument?.annotationStorage.size > 0) {\\n      this.save(options);\\n    } else {\\n      this.download(options);\\n    }\\n  },\\n\\n  \u002F**\\n   * Report the error; used for errors affecting loading and\u002For parsing of\\n   * the entire PDF document.\\n   *\u002F\\n  async _documentError(key, moreInfo = null) {\\n    this._unblockDocumentLoadEvent();\\n\\n    const message = await this._otherError(\\n      key || \\\"pdfjs-loading-error\\\",\\n      moreInfo\\n    );\\n\\n    this.eventBus.dispatch(\\\"documenterror\\\", {\\n      source: this,\\n      message,\\n      reason: moreInfo?.message ?? null,\\n    });\\n  },\\n\\n  \u002F**\\n   * Report the error; used for errors affecting e.g. only a single page.\\n   * @param {string} key - The localization key for the error.\\n   * @param {Object} [moreInfo] - Further information about the error that is\\n   *                              more technical. Should have a 'message' and\\n   *                              optionally a 'stack' property.\\n   * @returns {string} A (localized) error message that is human readable.\\n   *\u002F\\n  async _otherError(key, moreInfo = null) {\\n    const message = await this.l10n.get(key);\\n\\n    const moreInfoText = [`PDF.js v${version || \\\"?\\\"} (build: ${build || \\\"?\\\"})`];\\n    if (moreInfo) {\\n      moreInfoText.push(`Message: ${moreInfo.message}`);\\n\\n      if (moreInfo.stack) {\\n        moreInfoText.push(`Stack: ${moreInfo.stack}`);\\n      } else {\\n        if (moreInfo.filename) {\\n          moreInfoText.push(`File: ${moreInfo.filename}`);\\n        }\\n        if (moreInfo.lineNumber) {\\n          moreInfoText.push(`Line: ${moreInfo.lineNumber}`);\\n        }\\n      }\\n    }\\n\\n    console.error(`${message}\\\\n\\\\n${moreInfoText.join(\\\"\\\\n\\\")}`);\\n    return message;\\n  },\\n\\n  progress(level) {\\n    if (!this.loadingBar || this.downloadComplete) {\\n      \u002F\u002F Don't accidentally show the loading bar again when the entire file has\\n      \u002F\u002F already been fetched (only an issue when disableAutoFetch is enabled).\\n      return;\\n    }\\n    const percent = Math.round(level * 100);\\n    \u002F\u002F When we transition from full request to range requests, it's possible\\n    \u002F\u002F that we discard some of the loaded data. This can cause the loading\\n    \u002F\u002F bar to move backwards. So prevent this by only updating the bar if it\\n    \u002F\u002F increases.\\n    if (percent \u003C= this.loadingBar.percent) {\\n      return;\\n    }\\n    this.loadingBar.percent = percent;\\n\\n    \u002F\u002F When disableAutoFetch is enabled, it's not uncommon for the entire file\\n    \u002F\u002F to never be fetched (depends on e.g. the file structure). In this case\\n    \u002F\u002F the loading bar will not be completely filled, nor will it be hidden.\\n    \u002F\u002F To prevent displaying a partially filled loading bar permanently, we\\n    \u002F\u002F hide it when no data has been loaded during a certain amount of time.\\n    if (\\n      this.pdfDocument?.loadingParams.disableAutoFetch ??\\n      AppOptions.get(\\\"disableAutoFetch\\\")\\n    ) {\\n      this.loadingBar.setDisableAutoFetch();\\n    }\\n  },\\n\\n  load(pdfDocument) {\\n    this.pdfDocument = pdfDocument;\\n\\n    pdfDocument.getDownloadInfo().then(({ length }) => {\\n      this._contentLength = length; \u002F\u002F Ensure that the correct length is used.\\n      this.downloadComplete = true;\\n      this.loadingBar?.hide();\\n\\n      firstPagePromise.then(() => {\\n        this.eventBus.dispatch(\\\"documentloaded\\\", { source: this });\\n      });\\n    });\\n\\n    \u002F\u002F Since the `setInitialView` call below depends on this being resolved,\\n    \u002F\u002F fetch it early to avoid delaying initial rendering of the PDF document.\\n    const pageLayoutPromise = pdfDocument.getPageLayout().catch(() => {\\n      \u002F* Avoid breaking initial rendering; ignoring errors. *\u002F\\n    });\\n    const pageModePromise = pdfDocument.getPageMode().catch(() => {\\n      \u002F* Avoid breaking initial rendering; ignoring errors. *\u002F\\n    });\\n    const openActionPromise = pdfDocument.getOpenAction().catch(() => {\\n      \u002F* Avoid breaking initial rendering; ignoring errors. *\u002F\\n    });\\n\\n    this.toolbar?.setPagesCount(pdfDocument.numPages, false);\\n    this.secondaryToolbar?.setPagesCount(pdfDocument.numPages);\\n\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"CHROME\\\")) {\\n      const baseUrl = location.href.split(\\\"#\\\", 1)[0];\\n      \u002F\u002F Ignore \\\"data:\\\"-URLs for performance reasons, even though it may cause\\n      \u002F\u002F internal links to not work perfectly in all cases (see bug 1803050).\\n      this.pdfLinkService.setDocument(\\n        pdfDocument,\\n        isDataScheme(baseUrl) ? null : baseUrl\\n      );\\n    } else {\\n      this.pdfLinkService.setDocument(pdfDocument);\\n    }\\n    this.pdfDocumentProperties?.setDocument(pdfDocument);\\n\\n    const pdfViewer = this.pdfViewer;\\n    pdfViewer.setDocument(pdfDocument);\\n    const { firstPagePromise, onePageRendered, pagesPromise } = pdfViewer;\\n\\n    this.pdfThumbnailViewer?.setDocument(pdfDocument);\\n\\n    const storedPromise = (this.store = new ViewHistory(\\n      pdfDocument.fingerprints[0]\\n    ))\\n      .getMultiple({\\n        page: null,\\n        zoom: DEFAULT_SCALE_VALUE,\\n        scrollLeft: \\\"0\\\",\\n        scrollTop: \\\"0\\\",\\n        rotation: null,\\n        sidebarView: SidebarView.UNKNOWN,\\n        scrollMode: ScrollMode.UNKNOWN,\\n        spreadMode: SpreadMode.UNKNOWN,\\n      })\\n      .catch(() => {\\n        \u002F* Unable to read from storage; ignoring errors. *\u002F\\n      });\\n\\n    firstPagePromise.then(pdfPage => {\\n      this.loadingBar?.setWidth(this.appConfig.viewerContainer);\\n      this._initializeAnnotationStorageCallbacks(pdfDocument);\\n\\n      Promise.all([\\n        animationStarted,\\n        storedPromise,\\n        pageLayoutPromise,\\n        pageModePromise,\\n        openActionPromise,\\n      ])\\n        .then(async ([timeStamp, stored, pageLayout, pageMode, openAction]) => {\\n          const viewOnLoad = AppOptions.get(\\\"viewOnLoad\\\");\\n\\n          this._initializePdfHistory({\\n            fingerprint: pdfDocument.fingerprints[0],\\n            viewOnLoad,\\n            initialDest: openAction?.dest,\\n          });\\n          const initialBookmark = this.initialBookmark;\\n\\n          \u002F\u002F Initialize the default values, from user preferences.\\n          const zoom = AppOptions.get(\\\"defaultZoomValue\\\");\\n          let hash = zoom ? `zoom=${zoom}` : null;\\n\\n          let rotation = null;\\n          let sidebarView = AppOptions.get(\\\"sidebarViewOnLoad\\\");\\n          let scrollMode = AppOptions.get(\\\"scrollModeOnLoad\\\");\\n          let spreadMode = AppOptions.get(\\\"spreadModeOnLoad\\\");\\n\\n          if (stored?.page && viewOnLoad !== ViewOnLoad.INITIAL) {\\n            hash =\\n              `page=${stored.page}&zoom=${zoom || stored.zoom},` +\\n              `${stored.scrollLeft},${stored.scrollTop}`;\\n\\n            rotation = parseInt(stored.rotation, 10);\\n            \u002F\u002F Always let user preference take precedence over the view history.\\n            if (sidebarView === SidebarView.UNKNOWN) {\\n              sidebarView = stored.sidebarView | 0;\\n            }\\n            if (scrollMode === ScrollMode.UNKNOWN) {\\n              scrollMode = stored.scrollMode | 0;\\n            }\\n            if (spreadMode === SpreadMode.UNKNOWN) {\\n              spreadMode = stored.spreadMode | 0;\\n            }\\n          }\\n          \u002F\u002F Always let the user preference\u002Fview history take precedence.\\n          if (pageMode && sidebarView === SidebarView.UNKNOWN) {\\n            sidebarView = apiPageModeToSidebarView(pageMode);\\n          }\\n          if (\\n            pageLayout &&\\n            scrollMode === ScrollMode.UNKNOWN &&\\n            spreadMode === SpreadMode.UNKNOWN\\n          ) {\\n            const modes = apiPageLayoutToViewerModes(pageLayout);\\n            \u002F\u002F TODO: Try to improve page-switching when using the mouse-wheel\\n            \u002F\u002F and\u002For arrow-keys before allowing the document to control this.\\n            \u002F\u002F scrollMode = modes.scrollMode;\\n            spreadMode = modes.spreadMode;\\n          }\\n\\n          this.setInitialView(hash, {\\n            rotation,\\n            sidebarView,\\n            scrollMode,\\n            spreadMode,\\n          });\\n          this.eventBus.dispatch(\\\"documentinit\\\", { source: this });\\n          \u002F\u002F Make all navigation keys work on document load,\\n          \u002F\u002F unless the viewer is embedded in a web page.\\n          if (!this.isViewerEmbedded) {\\n            pdfViewer.focus();\\n          }\\n\\n          \u002F\u002F For documents with different page sizes, once all pages are\\n          \u002F\u002F resolved, ensure that the correct location becomes visible on load.\\n          \u002F\u002F (To reduce the risk, in very large and\u002For slow loading documents,\\n          \u002F\u002F  that the location changes *after* the user has started interacting\\n          \u002F\u002F  with the viewer, wait for either `pagesPromise` or a timeout.)\\n          await Promise.race([\\n            pagesPromise,\\n            new Promise(resolve => {\\n              setTimeout(resolve, FORCE_PAGES_LOADED_TIMEOUT);\\n            }),\\n          ]);\\n          if (!initialBookmark && !hash) {\\n            return;\\n          }\\n          if (pdfViewer.hasEqualPageSizes) {\\n            return;\\n          }\\n          this.initialBookmark = initialBookmark;\\n\\n          \u002F\u002F eslint-disable-next-line no-self-assign\\n          pdfViewer.currentScaleValue = pdfViewer.currentScaleValue;\\n          \u002F\u002F Re-apply the initial document location.\\n          this.setInitialView(hash);\\n        })\\n        .catch(() => {\\n          \u002F\u002F Ensure that the document is always completely initialized,\\n          \u002F\u002F even if there are any errors thrown above.\\n          this.setInitialView();\\n        })\\n        .then(function () {\\n          \u002F\u002F At this point, rendering of the initial page(s) should always have\\n          \u002F\u002F started (and may even have completed).\\n          \u002F\u002F To prevent any future issues, e.g. the document being completely\\n          \u002F\u002F blank on load, always trigger rendering here.\\n          pdfViewer.update();\\n        });\\n    });\\n\\n    pagesPromise.then(\\n      () => {\\n        this._unblockDocumentLoadEvent();\\n\\n        this._initializeAutoPrint(pdfDocument, openActionPromise);\\n      },\\n      reason => {\\n        this._documentError(\\\"pdfjs-loading-error\\\", { message: reason.message });\\n      }\\n    );\\n\\n    onePageRendered.then(data => {\\n      this.externalServices.reportTelemetry({\\n        type: \\\"pageInfo\\\",\\n        timestamp: data.timestamp,\\n      });\\n\\n      if (this.pdfOutlineViewer) {\\n        pdfDocument.getOutline().then(outline => {\\n          if (pdfDocument !== this.pdfDocument) {\\n            return; \u002F\u002F The document was closed while the outline resolved.\\n          }\\n          this.pdfOutlineViewer.render({ outline, pdfDocument });\\n        });\\n      }\\n      if (this.pdfAttachmentViewer) {\\n        pdfDocument.getAttachments().then(attachments => {\\n          if (pdfDocument !== this.pdfDocument) {\\n            return; \u002F\u002F The document was closed while the attachments resolved.\\n          }\\n          this.pdfAttachmentViewer.render({ attachments });\\n        });\\n      }\\n      if (this.pdfLayerViewer) {\\n        \u002F\u002F Ensure that the layers accurately reflects the current state in the\\n        \u002F\u002F viewer itself, rather than the default state provided by the API.\\n        pdfViewer.optionalContentConfigPromise.then(optionalContentConfig => {\\n          if (pdfDocument !== this.pdfDocument) {\\n            return; \u002F\u002F The document was closed while the layers resolved.\\n          }\\n          this.pdfLayerViewer.render({ optionalContentConfig, pdfDocument });\\n        });\\n      }\\n    });\\n\\n    this._initializePageLabels(pdfDocument);\\n    this._initializeMetadata(pdfDocument);\\n  },\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  async _scriptingDocProperties(pdfDocument) {\\n    if (!this.documentInfo) {\\n      \u002F\u002F It should be *extremely* rare for metadata to not have been resolved\\n      \u002F\u002F when this code runs, but ensure that we handle that case here.\\n      await new Promise(resolve => {\\n        this.eventBus._on(\\\"metadataloaded\\\", resolve, { once: true });\\n      });\\n      if (pdfDocument !== this.pdfDocument) {\\n        return null; \u002F\u002F The document was closed while the metadata resolved.\\n      }\\n    }\\n    if (!this._contentLength) {\\n      \u002F\u002F Always waiting for the entire PDF document to be loaded will, most\\n      \u002F\u002F likely, delay sandbox-creation too much in the general case for all\\n      \u002F\u002F PDF documents which are not provided as binary data to the API.\\n      \u002F\u002F Hence we'll simply have to trust that the `contentLength` (as provided\\n      \u002F\u002F by the server), when it exists, is accurate enough here.\\n      await new Promise(resolve => {\\n        this.eventBus._on(\\\"documentloaded\\\", resolve, { once: true });\\n      });\\n      if (pdfDocument !== this.pdfDocument) {\\n        return null; \u002F\u002F The document was closed while the downloadInfo resolved.\\n      }\\n    }\\n\\n    return {\\n      ...this.documentInfo,\\n      baseURL: this.baseUrl,\\n      filesize: this._contentLength,\\n      filename: this._docFilename,\\n      metadata: this.metadata?.getRaw(),\\n      authors: this.metadata?.get(\\\"dc:creator\\\"),\\n      numPages: this.pagesCount,\\n      URL: this.url,\\n    };\\n  },\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  async _initializeAutoPrint(pdfDocument, openActionPromise) {\\n    const [openAction, jsActions] = await Promise.all([\\n      openActionPromise,\\n      this.pdfViewer.enableScripting ? null : pdfDocument.getJSActions(),\\n    ]);\\n\\n    if (pdfDocument !== this.pdfDocument) {\\n      return; \u002F\u002F The document was closed while the auto print data resolved.\\n    }\\n    let triggerAutoPrint = openAction?.action === \\\"Print\\\";\\n\\n    if (jsActions) {\\n      console.warn(\\\"Warning: JavaScript support is not enabled\\\");\\n\\n      \u002F\u002F Hack to support auto printing.\\n      for (const name in jsActions) {\\n        if (triggerAutoPrint) {\\n          break;\\n        }\\n        switch (name) {\\n          case \\\"WillClose\\\":\\n          case \\\"WillSave\\\":\\n          case \\\"DidSave\\\":\\n          case \\\"WillPrint\\\":\\n          case \\\"DidPrint\\\":\\n            continue;\\n        }\\n        triggerAutoPrint = jsActions[name].some(js => AutoPrintRegExp.test(js));\\n      }\\n    }\\n\\n    if (triggerAutoPrint) {\\n      this.triggerPrinting();\\n    }\\n  },\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  async _initializeMetadata(pdfDocument) {\\n    const { info, metadata, contentDispositionFilename, contentLength } =\\n      await pdfDocument.getMetadata();\\n\\n    if (pdfDocument !== this.pdfDocument) {\\n      return; \u002F\u002F The document was closed while the metadata resolved.\\n    }\\n    this.documentInfo = info;\\n    this.metadata = metadata;\\n    this._contentDispositionFilename ??= contentDispositionFilename;\\n    this._contentLength ??= contentLength; \u002F\u002F See `getDownloadInfo`-call above.\\n\\n    \u002F\u002F Provides some basic debug information\\n    console.log(\\n      `PDF ${pdfDocument.fingerprints[0]} [${info.PDFFormatVersion} ` +\\n        `${(info.Producer || \\\"-\\\").trim()} \u002F ${(info.Creator || \\\"-\\\").trim()}] ` +\\n        `(PDF.js: ${version || \\\"?\\\"} [${build || \\\"?\\\"}])`\\n    );\\n    let pdfTitle = info.Title;\\n\\n    const metadataTitle = metadata?.get(\\\"dc:title\\\");\\n    if (metadataTitle) {\\n      \u002F\u002F Ghostscript can produce invalid 'dc:title' Metadata entries:\\n      \u002F\u002F  - The title may be \\\"Untitled\\\" (fixes bug 1031612).\\n      \u002F\u002F  - The title may contain incorrectly encoded characters, which thus\\n      \u002F\u002F    looks broken, hence we ignore the Metadata entry when it contains\\n      \u002F\u002F    characters from the Specials Unicode block (fixes bug 1605526).\\n      if (\\n        metadataTitle !== \\\"Untitled\\\" &&\\n        !\u002F[\\\\uFFF0-\\\\uFFFF]\u002Fg.test(metadataTitle)\\n      ) {\\n        pdfTitle = metadataTitle;\\n      }\\n    }\\n    if (pdfTitle) {\\n      this.setTitle(\\n        `${pdfTitle} - ${this._contentDispositionFilename || this._title}`\\n      );\\n    } else if (this._contentDispositionFilename) {\\n      this.setTitle(this._contentDispositionFilename);\\n    }\\n\\n    if (\\n      info.IsXFAPresent &&\\n      !info.IsAcroFormPresent &&\\n      !pdfDocument.isPureXfa\\n    ) {\\n      if (pdfDocument.loadingParams.enableXfa) {\\n        console.warn(\\\"Warning: XFA Foreground documents are not supported\\\");\\n      } else {\\n        console.warn(\\\"Warning: XFA support is not enabled\\\");\\n      }\\n    } else if (\\n      (info.IsAcroFormPresent || info.IsXFAPresent) &&\\n      !this.pdfViewer.renderForms\\n    ) {\\n      console.warn(\\\"Warning: Interactive form support is not enabled\\\");\\n    }\\n\\n    if (info.IsSignaturesPresent) {\\n      console.warn(\\\"Warning: Digital signatures validation is not supported\\\");\\n    }\\n\\n    this.eventBus.dispatch(\\\"metadataloaded\\\", { source: this });\\n  },\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  async _initializePageLabels(pdfDocument) {\\n    if (\\n      typeof PDFJSDev === \\\"undefined\\\"\\n        ? window.isGECKOVIEW\\n        : PDFJSDev.test(\\\"GECKOVIEW\\\")\\n    ) {\\n      return;\\n    }\\n    const labels = await pdfDocument.getPageLabels();\\n\\n    if (pdfDocument !== this.pdfDocument) {\\n      return; \u002F\u002F The document was closed while the page labels resolved.\\n    }\\n    if (!labels || AppOptions.get(\\\"disablePageLabels\\\")) {\\n      return;\\n    }\\n    const numLabels = labels.length;\\n    \u002F\u002F Ignore page labels that correspond to standard page numbering,\\n    \u002F\u002F or page labels that are all empty.\\n    let standardLabels = 0,\\n      emptyLabels = 0;\\n    for (let i = 0; i \u003C numLabels; i++) {\\n      const label = labels[i];\\n      if (label === (i + 1).toString()) {\\n        standardLabels++;\\n      } else if (label === \\\"\\\") {\\n        emptyLabels++;\\n      } else {\\n        break;\\n      }\\n    }\\n    if (standardLabels >= numLabels || emptyLabels >= numLabels) {\\n      return;\\n    }\\n    const { pdfViewer, pdfThumbnailViewer, toolbar } = this;\\n\\n    pdfViewer.setPageLabels(labels);\\n    pdfThumbnailViewer?.setPageLabels(labels);\\n\\n    \u002F\u002F Changing toolbar page display to use labels and we need to set\\n    \u002F\u002F the label of the current page.\\n    toolbar?.setPagesCount(numLabels, true);\\n    toolbar?.setPageNumber(\\n      pdfViewer.currentPageNumber,\\n      pdfViewer.currentPageLabel\\n    );\\n  },\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _initializePdfHistory({ fingerprint, viewOnLoad, initialDest = null }) {\\n    if (!this.pdfHistory) {\\n      return;\\n    }\\n    this.pdfHistory.initialize({\\n      fingerprint,\\n      resetHistory: viewOnLoad === ViewOnLoad.INITIAL,\\n      updateUrl: AppOptions.get(\\\"historyUpdateUrl\\\"),\\n    });\\n\\n    if (this.pdfHistory.initialBookmark) {\\n      this.initialBookmark = this.pdfHistory.initialBookmark;\\n\\n      this.initialRotation = this.pdfHistory.initialRotation;\\n    }\\n\\n    \u002F\u002F Always let the browser history\u002Fdocument hash take precedence.\\n    if (\\n      initialDest &&\\n      !this.initialBookmark &&\\n      viewOnLoad === ViewOnLoad.UNKNOWN\\n    ) {\\n      this.initialBookmark = JSON.stringify(initialDest);\\n      \u002F\u002F TODO: Re-factor the `PDFHistory` initialization to remove this hack\\n      \u002F\u002F that's currently necessary to prevent weird initial history state.\\n      this.pdfHistory.push({ explicitDest: initialDest, pageNumber: null });\\n    }\\n  },\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _initializeAnnotationStorageCallbacks(pdfDocument) {\\n    if (pdfDocument !== this.pdfDocument) {\\n      return;\\n    }\\n    const { annotationStorage } = pdfDocument;\\n\\n    annotationStorage.onSetModified = () => {\\n      window.addEventListener(\\\"beforeunload\\\", beforeUnload);\\n\\n      if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n        this._annotationStorageModified = true;\\n      }\\n    };\\n    annotationStorage.onResetModified = () => {\\n      window.removeEventListener(\\\"beforeunload\\\", beforeUnload);\\n\\n      if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n        delete this._annotationStorageModified;\\n      }\\n    };\\n    annotationStorage.onAnnotationEditor = typeStr => {\\n      this._hasAnnotationEditors = !!typeStr;\\n      this.setTitle();\\n    };\\n  },\\n\\n  setInitialView(\\n    storedHash,\\n    { rotation, sidebarView, scrollMode, spreadMode } = {}\\n  ) {\\n    const setRotation = angle => {\\n      if (isValidRotation(angle)) {\\n        this.pdfViewer.pagesRotation = angle;\\n      }\\n    };\\n    const setViewerModes = (scroll, spread) => {\\n      if (isValidScrollMode(scroll)) {\\n        this.pdfViewer.scrollMode = scroll;\\n      }\\n      if (isValidSpreadMode(spread)) {\\n        this.pdfViewer.spreadMode = spread;\\n      }\\n    };\\n    this.isInitialViewSet = true;\\n    this.pdfSidebar?.setInitialView(sidebarView);\\n\\n    setViewerModes(scrollMode, spreadMode);\\n\\n    if (this.initialBookmark) {\\n      setRotation(this.initialRotation);\\n      delete this.initialRotation;\\n\\n      this.pdfLinkService.setHash(this.initialBookmark);\\n      this.initialBookmark = null;\\n    } else if (storedHash) {\\n      setRotation(rotation);\\n\\n      this.pdfLinkService.setHash(storedHash);\\n    }\\n\\n    \u002F\u002F Ensure that the correct page number is displayed in the UI,\\n    \u002F\u002F even if the active page didn't change during document load.\\n    this.toolbar?.setPageNumber(\\n      this.pdfViewer.currentPageNumber,\\n      this.pdfViewer.currentPageLabel\\n    );\\n    this.secondaryToolbar?.setPageNumber(this.pdfViewer.currentPageNumber);\\n\\n    if (!this.pdfViewer.currentScaleValue) {\\n      \u002F\u002F Scale was not initialized: invalid bookmark or scale was not specified.\\n      \u002F\u002F Setting the default one.\\n      this.pdfViewer.currentScaleValue = DEFAULT_SCALE_VALUE;\\n    }\\n  },\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _cleanup() {\\n    if (!this.pdfDocument) {\\n      return; \u002F\u002F run cleanup when document is loaded\\n    }\\n    this.pdfViewer.cleanup();\\n    this.pdfThumbnailViewer?.cleanup();\\n\\n    this.pdfDocument.cleanup(\\n      \u002F* keepLoadedFonts = *\u002F AppOptions.get(\\\"fontExtraProperties\\\")\\n    );\\n  },\\n\\n  forceRendering() {\\n    this.pdfRenderingQueue.printing = !!this.printService;\\n    this.pdfRenderingQueue.isThumbnailViewEnabled =\\n      this.pdfSidebar?.visibleView === SidebarView.THUMBS;\\n    this.pdfRenderingQueue.renderHighestPriority();\\n  },\\n\\n  beforePrint() {\\n    this._printAnnotationStoragePromise = this.pdfScriptingManager\\n      .dispatchWillPrint()\\n      .catch(() => {\\n        \u002F* Avoid breaking printing; ignoring errors. *\u002F\\n      })\\n      .then(() => this.pdfDocument?.annotationStorage.print);\\n\\n    if (this.printService) {\\n      \u002F\u002F There is no way to suppress beforePrint\u002FafterPrint events,\\n      \u002F\u002F but PDFPrintService may generate double events -- this will ignore\\n      \u002F\u002F the second event that will be coming from native window.print().\\n      return;\\n    }\\n\\n    if (!this.supportsPrinting) {\\n      this._otherError(\\\"pdfjs-printing-not-supported\\\");\\n      return;\\n    }\\n\\n    \u002F\u002F The beforePrint is a sync method and we need to know layout before\\n    \u002F\u002F returning from this method. Ensure that we can get sizes of the pages.\\n    if (!this.pdfViewer.pageViewsReady) {\\n      this.l10n.get(\\\"pdfjs-printing-not-ready\\\").then(msg => {\\n        \u002F\u002F eslint-disable-next-line no-alert\\n        window.alert(msg);\\n      });\\n      return;\\n    }\\n\\n    this.printService = PDFPrintServiceFactory.createPrintService({\\n      pdfDocument: this.pdfDocument,\\n      pagesOverview: this.pdfViewer.getPagesOverview(),\\n      printContainer: this.appConfig.printContainer,\\n      printResolution: AppOptions.get(\\\"printResolution\\\"),\\n      printAnnotationStoragePromise: this._printAnnotationStoragePromise,\\n    });\\n    this.forceRendering();\\n    \u002F\u002F Disable the editor-indicator during printing (fixes bug 1790552).\\n    this.setTitle();\\n\\n    this.printService.layout();\\n\\n    if (this._hasAnnotationEditors) {\\n      this.externalServices.reportTelemetry({\\n        type: \\\"editing\\\",\\n        data: {\\n          type: \\\"print\\\",\\n          stats: this.pdfDocument?.annotationStorage.editorStats,\\n        },\\n      });\\n    }\\n  },\\n\\n  afterPrint() {\\n    if (this._printAnnotationStoragePromise) {\\n      this._printAnnotationStoragePromise.then(() => {\\n        this.pdfScriptingManager.dispatchDidPrint();\\n      });\\n      this._printAnnotationStoragePromise = null;\\n    }\\n\\n    if (this.printService) {\\n      this.printService.destroy();\\n      this.printService = null;\\n\\n      this.pdfDocument?.annotationStorage.resetModified();\\n    }\\n    this.forceRendering();\\n    \u002F\u002F Re-enable the editor-indicator after printing (fixes bug 1790552).\\n    this.setTitle();\\n  },\\n\\n  rotatePages(delta) {\\n    this.pdfViewer.pagesRotation += delta;\\n    \u002F\u002F Note that the thumbnail viewer is updated, and rendering is triggered,\\n    \u002F\u002F in the 'rotationchanging' event handler.\\n  },\\n\\n  requestPresentationMode() {\\n    this.pdfPresentationMode?.request();\\n  },\\n\\n  triggerPrinting() {\\n    if (!this.supportsPrinting) {\\n      return;\\n    }\\n    window.print();\\n  },\\n\\n  bindEvents() {\\n    if (this._eventBusAbortController) {\\n      return;\\n    }\\n    this._eventBusAbortController = new AbortController();\\n\\n    const {\\n      eventBus,\\n      _eventBusAbortController: { signal },\\n    } = this;\\n\\n    eventBus._on(\\\"resize\\\", webViewerResize, { signal });\\n    eventBus._on(\\\"hashchange\\\", webViewerHashchange, { signal });\\n    eventBus._on(\\\"beforeprint\\\", this.beforePrint.bind(this), { signal });\\n    eventBus._on(\\\"afterprint\\\", this.afterPrint.bind(this), { signal });\\n    eventBus._on(\\\"pagerender\\\", webViewerPageRender, { signal });\\n    eventBus._on(\\\"pagerendered\\\", webViewerPageRendered, { signal });\\n    eventBus._on(\\\"updateviewarea\\\", webViewerUpdateViewarea, { signal });\\n    eventBus._on(\\\"pagechanging\\\", webViewerPageChanging, { signal });\\n    eventBus._on(\\\"scalechanging\\\", webViewerScaleChanging, { signal });\\n    eventBus._on(\\\"rotationchanging\\\", webViewerRotationChanging, { signal });\\n    eventBus._on(\\\"sidebarviewchanged\\\", webViewerSidebarViewChanged, { signal });\\n    eventBus._on(\\\"pagemode\\\", webViewerPageMode, { signal });\\n    eventBus._on(\\\"namedaction\\\", webViewerNamedAction, { signal });\\n    eventBus._on(\\\"presentationmodechanged\\\", webViewerPresentationModeChanged, {\\n      signal,\\n    });\\n    eventBus._on(\\\"presentationmode\\\", webViewerPresentationMode, { signal });\\n    eventBus._on(\\n      \\\"switchannotationeditormode\\\",\\n      webViewerSwitchAnnotationEditorMode,\\n      { signal }\\n    );\\n    eventBus._on(\\n      \\\"switchannotationeditorparams\\\",\\n      webViewerSwitchAnnotationEditorParams,\\n      { signal }\\n    );\\n    eventBus._on(\\\"print\\\", webViewerPrint, { signal });\\n    eventBus._on(\\\"download\\\", webViewerDownload, { signal });\\n    eventBus._on(\\\"firstpage\\\", webViewerFirstPage, { signal });\\n    eventBus._on(\\\"lastpage\\\", webViewerLastPage, { signal });\\n    eventBus._on(\\\"nextpage\\\", webViewerNextPage, { signal });\\n    eventBus._on(\\\"previouspage\\\", webViewerPreviousPage, { signal });\\n    eventBus._on(\\\"zoomin\\\", webViewerZoomIn, { signal });\\n    eventBus._on(\\\"zoomout\\\", webViewerZoomOut, { signal });\\n    eventBus._on(\\\"zoomreset\\\", webViewerZoomReset, { signal });\\n    eventBus._on(\\\"pagenumberchanged\\\", webViewerPageNumberChanged, { signal });\\n    eventBus._on(\\\"scalechanged\\\", webViewerScaleChanged, { signal });\\n    eventBus._on(\\\"rotatecw\\\", webViewerRotateCw, { signal });\\n    eventBus._on(\\\"rotateccw\\\", webViewerRotateCcw, { signal });\\n    eventBus._on(\\\"optionalcontentconfig\\\", webViewerOptionalContentConfig, {\\n      signal,\\n    });\\n    eventBus._on(\\\"switchscrollmode\\\", webViewerSwitchScrollMode, { signal });\\n    eventBus._on(\\\"scrollmodechanged\\\", webViewerScrollModeChanged, { signal });\\n    eventBus._on(\\\"switchspreadmode\\\", webViewerSwitchSpreadMode, { signal });\\n    eventBus._on(\\\"spreadmodechanged\\\", webViewerSpreadModeChanged, { signal });\\n    eventBus._on(\\\"documentproperties\\\", webViewerDocumentProperties, { signal });\\n    eventBus._on(\\\"findfromurlhash\\\", webViewerFindFromUrlHash, { signal });\\n    eventBus._on(\\\"updatefindmatchescount\\\", webViewerUpdateFindMatchesCount, {\\n      signal,\\n    });\\n    eventBus._on(\\\"updatefindcontrolstate\\\", webViewerUpdateFindControlState, {\\n      signal,\\n    });\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      eventBus._on(\\\"fileinputchange\\\", webViewerFileInputChange, { signal });\\n      eventBus._on(\\\"openfile\\\", webViewerOpenFile, { signal });\\n    }\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      eventBus._on(\\n        \\\"annotationeditorstateschanged\\\",\\n        webViewerAnnotationEditorStatesChanged,\\n        { signal }\\n      );\\n      eventBus._on(\\\"reporttelemetry\\\", webViewerReportTelemetry, { signal });\\n    }\\n  },\\n\\n  bindWindowEvents() {\\n    if (this._windowAbortController) {\\n      return;\\n    }\\n    this._windowAbortController = new AbortController();\\n\\n    const {\\n      eventBus,\\n      appConfig: { mainContainer },\\n      _windowAbortController: { signal },\\n    } = this;\\n\\n    function addWindowResolutionChange(evt = null) {\\n      if (evt) {\\n        webViewerResolutionChange(evt);\\n      }\\n      const mediaQueryList = window.matchMedia(\\n        `(resolution: ${window.devicePixelRatio || 1}dppx)`\\n      );\\n      mediaQueryList.addEventListener(\\\"change\\\", addWindowResolutionChange, {\\n        once: true,\\n        signal,\\n      });\\n    }\\n    addWindowResolutionChange();\\n\\n    window.addEventListener(\\\"visibilitychange\\\", webViewerVisibilityChange, {\\n      signal,\\n    });\\n    window.addEventListener(\\\"wheel\\\", webViewerWheel, {\\n      passive: false,\\n      signal,\\n    });\\n    window.addEventListener(\\\"touchstart\\\", webViewerTouchStart, {\\n      passive: false,\\n      signal,\\n    });\\n    window.addEventListener(\\\"touchmove\\\", webViewerTouchMove, {\\n      passive: false,\\n      signal,\\n    });\\n    window.addEventListener(\\\"touchend\\\", webViewerTouchEnd, {\\n      passive: false,\\n      signal,\\n    });\\n    window.addEventListener(\\\"click\\\", webViewerClick, { signal });\\n    window.addEventListener(\\\"keydown\\\", webViewerKeyDown, { signal });\\n    window.addEventListener(\\\"keyup\\\", webViewerKeyUp, { signal });\\n    window.addEventListener(\\n      \\\"resize\\\",\\n      () => {\\n        eventBus.dispatch(\\\"resize\\\", { source: window });\\n      },\\n      { signal }\\n    );\\n    window.addEventListener(\\n      \\\"hashchange\\\",\\n      () => {\\n        eventBus.dispatch(\\\"hashchange\\\", {\\n          source: window,\\n          hash: document.location.hash.substring(1),\\n        });\\n      },\\n      { signal }\\n    );\\n    window.addEventListener(\\n      \\\"beforeprint\\\",\\n      () => {\\n        eventBus.dispatch(\\\"beforeprint\\\", { source: window });\\n      },\\n      { signal }\\n    );\\n    window.addEventListener(\\n      \\\"afterprint\\\",\\n      () => {\\n        eventBus.dispatch(\\\"afterprint\\\", { source: window });\\n      },\\n      { signal }\\n    );\\n    window.addEventListener(\\n      \\\"updatefromsandbox\\\",\\n      event => {\\n        eventBus.dispatch(\\\"updatefromsandbox\\\", {\\n          source: window,\\n          detail: event.detail,\\n        });\\n      },\\n      { signal }\\n    );\\n\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) &&\\n      !(\\\"onscrollend\\\" in document.documentElement)\\n    ) {\\n      return;\\n    }\\n    if (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      \u002F\u002F Using the values lastScrollTop and lastScrollLeft is a workaround to\\n      \u002F\u002F https:\u002F\u002Fbugzilla.mozilla.org\u002Fshow_bug.cgi?id=1881974.\\n      \u002F\u002F TODO: remove them once the bug is fixed.\\n      ({ scrollTop: this._lastScrollTop, scrollLeft: this._lastScrollLeft } =\\n        mainContainer);\\n    }\\n\\n    const scrollend = () => {\\n      if (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n        ({ scrollTop: this._lastScrollTop, scrollLeft: this._lastScrollLeft } =\\n          mainContainer);\\n      }\\n\\n      this._isScrolling = false;\\n      mainContainer.addEventListener(\\\"scroll\\\", scroll, {\\n        passive: true,\\n        signal,\\n      });\\n      mainContainer.removeEventListener(\\\"scrollend\\\", scrollend);\\n      mainContainer.removeEventListener(\\\"blur\\\", scrollend);\\n    };\\n    const scroll = () => {\\n      if (this._isCtrlKeyDown) {\\n        return;\\n      }\\n      if (\\n        (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) &&\\n        this._lastScrollTop === mainContainer.scrollTop &&\\n        this._lastScrollLeft === mainContainer.scrollLeft\\n      ) {\\n        return;\\n      }\\n\\n      mainContainer.removeEventListener(\\\"scroll\\\", scroll, { passive: true });\\n      this._isScrolling = true;\\n      mainContainer.addEventListener(\\\"scrollend\\\", scrollend, { signal });\\n      mainContainer.addEventListener(\\\"blur\\\", scrollend, { signal });\\n    };\\n    mainContainer.addEventListener(\\\"scroll\\\", scroll, {\\n      passive: true,\\n      signal,\\n    });\\n  },\\n\\n  unbindEvents() {\\n    this._eventBusAbortController?.abort();\\n    this._eventBusAbortController = null;\\n  },\\n\\n  unbindWindowEvents() {\\n    this._windowAbortController?.abort();\\n    this._windowAbortController = null;\\n  },\\n\\n  _accumulateTicks(ticks, prop) {\\n    \u002F\u002F If the direction changed, reset the accumulated ticks.\\n    if ((this[prop] > 0 && ticks \u003C 0) || (this[prop] \u003C 0 && ticks > 0)) {\\n      this[prop] = 0;\\n    }\\n    this[prop] += ticks;\\n    const wholeTicks = Math.trunc(this[prop]);\\n    this[prop] -= wholeTicks;\\n    return wholeTicks;\\n  },\\n\\n  _accumulateFactor(previousScale, factor, prop) {\\n    if (factor === 1) {\\n      return 1;\\n    }\\n    \u002F\u002F If the direction changed, reset the accumulated factor.\\n    if ((this[prop] > 1 && factor \u003C 1) || (this[prop] \u003C 1 && factor > 1)) {\\n      this[prop] = 1;\\n    }\\n\\n    const newFactor =\\n      Math.floor(previousScale * factor * this[prop] * 100) \u002F\\n      (100 * previousScale);\\n    this[prop] = factor \u002F newFactor;\\n\\n    return newFactor;\\n  },\\n\\n  \u002F**\\n   * Should be called *after* all pages have loaded, or if an error occurred,\\n   * to unblock the \\\"load\\\" event; see https:\u002F\u002Fbugzilla.mozilla.org\u002Fshow_bug.cgi?id=1618553\\n   * @private\\n   *\u002F\\n  _unblockDocumentLoadEvent() {\\n    document.blockUnblockOnload?.(false);\\n\\n    \u002F\u002F Ensure that this method is only ever run once.\\n    this._unblockDocumentLoadEvent = () => {};\\n  },\\n\\n  \u002F**\\n   * Used together with the integration-tests, to enable awaiting full\\n   * initialization of the scripting\u002Fsandbox.\\n   *\u002F\\n  get scriptingReady() {\\n    return this.pdfScriptingManager.ready;\\n  },\\n};\\n\\ninitCom(PDFViewerApplication);\\n\\nif (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n  PDFPrintServiceFactory.initGlobals(PDFViewerApplication);\\n}\\n\\nif (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n  const HOSTED_VIEWER_ORIGINS = [\\n    \\\"null\\\",\\n    \\\"http:\u002F\u002Fmozilla.github.io\\\",\\n    \\\"https:\u002F\u002Fmozilla.github.io\\\",\\n  ];\\n  \u002F\u002F eslint-disable-next-line no-var\\n  var validateFileURL = function (file) {\\n    if (!file) {\\n      return;\\n    }\\n    try {\\n      const viewerOrigin = new URL(window.location.href).origin || \\\"null\\\";\\n      if (HOSTED_VIEWER_ORIGINS.includes(viewerOrigin)) {\\n        \u002F\u002F Hosted or local viewer, allow for any file locations\\n        return;\\n      }\\n      const fileOrigin = new URL(file, window.location.href).origin;\\n      \u002F\u002F Removing of the following line will not guarantee that the viewer will\\n      \u002F\u002F start accepting URLs from foreign origin -- CORS headers on the remote\\n      \u002F\u002F server must be properly configured.\\n      if (fileOrigin !== viewerOrigin) {\\n        throw new Error(\\\"file origin does not match viewer's\\\");\\n      }\\n    } catch (ex) {\\n      PDFViewerApplication._documentError(\\\"pdfjs-loading-error\\\", {\\n        message: ex.message,\\n      });\\n      throw ex;\\n    }\\n  };\\n}\\n\\nfunction webViewerPageRender({ pageNumber }) {\\n  \u002F\u002F If the page is (the most) visible when it starts rendering,\\n  \u002F\u002F ensure that the page number input loading indicator is displayed.\\n  if (pageNumber === PDFViewerApplication.page) {\\n    PDFViewerApplication.toolbar?.updateLoadingIndicatorState(true);\\n  }\\n}\\n\\nfunction webViewerPageRendered({ pageNumber, error }) {\\n  \u002F\u002F If the page is still visible when it has finished rendering,\\n  \u002F\u002F ensure that the page number input loading indicator is hidden.\\n  if (pageNumber === PDFViewerApplication.page) {\\n    PDFViewerApplication.toolbar?.updateLoadingIndicatorState(false);\\n  }\\n\\n  \u002F\u002F Use the rendered page to set the corresponding thumbnail image.\\n  if (PDFViewerApplication.pdfSidebar?.visibleView === SidebarView.THUMBS) {\\n    const pageView = PDFViewerApplication.pdfViewer.getPageView(\\n      \u002F* index = *\u002F pageNumber - 1\\n    );\\n    const thumbnailView = PDFViewerApplication.pdfThumbnailViewer?.getThumbnail(\\n      \u002F* index = *\u002F pageNumber - 1\\n    );\\n    if (pageView) {\\n      thumbnailView?.setImage(pageView);\\n    }\\n  }\\n\\n  if (error) {\\n    PDFViewerApplication._otherError(\\\"pdfjs-rendering-error\\\", error);\\n  }\\n}\\n\\nfunction webViewerPageMode({ mode }) {\\n  \u002F\u002F Handle the 'pagemode' hash parameter, see also `PDFLinkService_setHash`.\\n  let view;\\n  switch (mode) {\\n    case \\\"thumbs\\\":\\n      view = SidebarView.THUMBS;\\n      break;\\n    case \\\"bookmarks\\\":\\n    case \\\"outline\\\": \u002F\u002F non-standard\\n      view = SidebarView.OUTLINE;\\n      break;\\n    case \\\"attachments\\\": \u002F\u002F non-standard\\n      view = SidebarView.ATTACHMENTS;\\n      break;\\n    case \\\"layers\\\": \u002F\u002F non-standard\\n      view = SidebarView.LAYERS;\\n      break;\\n    case \\\"none\\\":\\n      view = SidebarView.NONE;\\n      break;\\n    default:\\n      console.error('Invalid \\\"pagemode\\\" hash parameter: ' + mode);\\n      return;\\n  }\\n  PDFViewerApplication.pdfSidebar?.switchView(view, \u002F* forceOpen = *\u002F true);\\n}\\n\\nfunction webViewerNamedAction(evt) {\\n  \u002F\u002F Processing a couple of named actions that might be useful, see also\\n  \u002F\u002F `PDFLinkService.executeNamedAction`.\\n  switch (evt.action) {\\n    case \\\"GoToPage\\\":\\n      PDFViewerApplication.appConfig.toolbar?.pageNumber.select();\\n      break;\\n\\n    case \\\"Find\\\":\\n      if (!PDFViewerApplication.supportsIntegratedFind) {\\n        PDFViewerApplication.findBar?.toggle();\\n      }\\n      break;\\n\\n    case \\\"Print\\\":\\n      PDFViewerApplication.triggerPrinting();\\n      break;\\n\\n    case \\\"SaveAs\\\":\\n      PDFViewerApplication.downloadOrSave();\\n      break;\\n  }\\n}\\n\\nfunction webViewerPresentationModeChanged(evt) {\\n  PDFViewerApplication.pdfViewer.presentationModeState = evt.state;\\n}\\n\\nfunction webViewerSidebarViewChanged({ view }) {\\n  PDFViewerApplication.pdfRenderingQueue.isThumbnailViewEnabled =\\n    view === SidebarView.THUMBS;\\n\\n  if (PDFViewerApplication.isInitialViewSet) {\\n    \u002F\u002F Only update the storage when the document has been loaded *and* rendered.\\n    PDFViewerApplication.store?.set(\\\"sidebarView\\\", view).catch(() => {\\n      \u002F\u002F Unable to write to storage.\\n    });\\n  }\\n}\\n\\nfunction webViewerUpdateViewarea({ location }) {\\n  if (PDFViewerApplication.isInitialViewSet) {\\n    \u002F\u002F Only update the storage when the document has been loaded *and* rendered.\\n    PDFViewerApplication.store\\n      ?.setMultiple({\\n        page: location.pageNumber,\\n        zoom: location.scale,\\n        scrollLeft: location.left,\\n        scrollTop: location.top,\\n        rotation: location.rotation,\\n      })\\n      .catch(() => {\\n        \u002F\u002F Unable to write to storage.\\n      });\\n  }\\n  if (PDFViewerApplication.appConfig.secondaryToolbar) {\\n    const href = PDFViewerApplication.pdfLinkService.getAnchorUrl(\\n      location.pdfOpenParams\\n    );\\n    PDFViewerApplication.appConfig.secondaryToolbar.viewBookmarkButton.href =\\n      href;\\n  }\\n}\\n\\nfunction webViewerScrollModeChanged(evt) {\\n  if (\\n    PDFViewerApplication.isInitialViewSet &&\\n    !PDFViewerApplication.pdfViewer.isInPresentationMode\\n  ) {\\n    \u002F\u002F Only update the storage when the document has been loaded *and* rendered.\\n    PDFViewerApplication.store?.set(\\\"scrollMode\\\", evt.mode).catch(() => {\\n      \u002F\u002F Unable to write to storage.\\n    });\\n  }\\n}\\n\\nfunction webViewerSpreadModeChanged(evt) {\\n  if (\\n    PDFViewerApplication.isInitialViewSet &&\\n    !PDFViewerApplication.pdfViewer.isInPresentationMode\\n  ) {\\n    \u002F\u002F Only update the storage when the document has been loaded *and* rendered.\\n    PDFViewerApplication.store?.set(\\\"spreadMode\\\", evt.mode).catch(() => {\\n      \u002F\u002F Unable to write to storage.\\n    });\\n  }\\n}\\n\\nfunction webViewerResize() {\\n  const { pdfDocument, pdfViewer, pdfRenderingQueue } = PDFViewerApplication;\\n\\n  if (pdfRenderingQueue.printing && window.matchMedia(\\\"print\\\").matches) {\\n    \u002F\u002F Work-around issue 15324 by ignoring \\\"resize\\\" events during printing.\\n    return;\\n  }\\n\\n  if (!pdfDocument) {\\n    return;\\n  }\\n  const currentScaleValue = pdfViewer.currentScaleValue;\\n  if (\\n    currentScaleValue === \\\"auto\\\" ||\\n    currentScaleValue === \\\"page-fit\\\" ||\\n    currentScaleValue === \\\"page-width\\\"\\n  ) {\\n    \u002F\u002F Note: the scale is constant for 'page-actual'.\\n    pdfViewer.currentScaleValue = currentScaleValue;\\n  }\\n  pdfViewer.update();\\n}\\n\\nfunction webViewerHashchange(evt) {\\n  const hash = evt.hash;\\n  if (!hash) {\\n    return;\\n  }\\n  if (!PDFViewerApplication.isInitialViewSet) {\\n    PDFViewerApplication.initialBookmark = hash;\\n  } else if (!PDFViewerApplication.pdfHistory?.popStateInProgress) {\\n    PDFViewerApplication.pdfLinkService.setHash(hash);\\n  }\\n}\\n\\nif (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n  \u002F\u002F eslint-disable-next-line no-var\\n  var webViewerFileInputChange = function (evt) {\\n    if (PDFViewerApplication.pdfViewer?.isInPresentationMode) {\\n      return; \u002F\u002F Opening a new PDF file isn't supported in Presentation Mode.\\n    }\\n    const file = evt.fileInput.files[0];\\n\\n    PDFViewerApplication.open({\\n      url: URL.createObjectURL(file),\\n      originalUrl: file.name,\\n    });\\n  };\\n\\n  \u002F\u002F eslint-disable-next-line no-var\\n  var webViewerOpenFile = function (evt) {\\n    PDFViewerApplication._openFileInput?.click();\\n  };\\n}\\n\\nfunction webViewerPresentationMode() {\\n  PDFViewerApplication.requestPresentationMode();\\n}\\nfunction webViewerSwitchAnnotationEditorMode(evt) {\\n  PDFViewerApplication.pdfViewer.annotationEditorMode = evt;\\n}\\nfunction webViewerSwitchAnnotationEditorParams(evt) {\\n  PDFViewerApplication.pdfViewer.annotationEditorParams = evt;\\n}\\nfunction webViewerPrint() {\\n  PDFViewerApplication.triggerPrinting();\\n}\\nfunction webViewerDownload() {\\n  PDFViewerApplication.downloadOrSave();\\n}\\nfunction webViewerFirstPage() {\\n  PDFViewerApplication.page = 1;\\n}\\nfunction webViewerLastPage() {\\n  PDFViewerApplication.page = PDFViewerApplication.pagesCount;\\n}\\nfunction webViewerNextPage() {\\n  PDFViewerApplication.pdfViewer.nextPage();\\n}\\nfunction webViewerPreviousPage() {\\n  PDFViewerApplication.pdfViewer.previousPage();\\n}\\nfunction webViewerZoomIn() {\\n  PDFViewerApplication.zoomIn();\\n}\\nfunction webViewerZoomOut() {\\n  PDFViewerApplication.zoomOut();\\n}\\nfunction webViewerZoomReset() {\\n  PDFViewerApplication.zoomReset();\\n}\\nfunction webViewerPageNumberChanged(evt) {\\n  const pdfViewer = PDFViewerApplication.pdfViewer;\\n  \u002F\u002F Note that for `\u003Cinput type=\\\"number\\\">` HTML elements, an empty string will\\n  \u002F\u002F be returned for non-number inputs; hence we simply do nothing in that case.\\n  if (evt.value !== \\\"\\\") {\\n    PDFViewerApplication.pdfLinkService.goToPage(evt.value);\\n  }\\n\\n  \u002F\u002F Ensure that the page number input displays the correct value, even if the\\n  \u002F\u002F value entered by the user was invalid (e.g. a floating point number).\\n  if (\\n    evt.value !== pdfViewer.currentPageNumber.toString() &&\\n    evt.value !== pdfViewer.currentPageLabel\\n  ) {\\n    PDFViewerApplication.toolbar?.setPageNumber(\\n      pdfViewer.currentPageNumber,\\n      pdfViewer.currentPageLabel\\n    );\\n  }\\n}\\nfunction webViewerScaleChanged(evt) {\\n  PDFViewerApplication.pdfViewer.currentScaleValue = evt.value;\\n}\\nfunction webViewerRotateCw() {\\n  PDFViewerApplication.rotatePages(90);\\n}\\nfunction webViewerRotateCcw() {\\n  PDFViewerApplication.rotatePages(-90);\\n}\\nfunction webViewerOptionalContentConfig(evt) {\\n  PDFViewerApplication.pdfViewer.optionalContentConfigPromise = evt.promise;\\n}\\nfunction webViewerSwitchScrollMode(evt) {\\n  PDFViewerApplication.pdfViewer.scrollMode = evt.mode;\\n}\\nfunction webViewerSwitchSpreadMode(evt) {\\n  PDFViewerApplication.pdfViewer.spreadMode = evt.mode;\\n}\\nfunction webViewerDocumentProperties() {\\n  PDFViewerApplication.pdfDocumentProperties?.open();\\n}\\n\\nfunction webViewerFindFromUrlHash(evt) {\\n  PDFViewerApplication.eventBus.dispatch(\\\"find\\\", {\\n    source: evt.source,\\n    type: \\\"\\\",\\n    query: evt.query,\\n    caseSensitive: false,\\n    entireWord: false,\\n    highlightAll: true,\\n    findPrevious: false,\\n    matchDiacritics: true,\\n  });\\n}\\n\\nfunction webViewerUpdateFindMatchesCount({ matchesCount }) {\\n  if (PDFViewerApplication.supportsIntegratedFind) {\\n    PDFViewerApplication.externalServices.updateFindMatchesCount(matchesCount);\\n  } else {\\n    PDFViewerApplication.findBar?.updateResultsCount(matchesCount);\\n  }\\n}\\n\\nfunction webViewerUpdateFindControlState({\\n  state,\\n  previous,\\n  matchesCount,\\n  rawQuery,\\n}) {\\n  if (PDFViewerApplication.supportsIntegratedFind) {\\n    PDFViewerApplication.externalServices.updateFindControlState({\\n      result: state,\\n      findPrevious: previous,\\n      matchesCount,\\n      rawQuery,\\n    });\\n  } else {\\n    PDFViewerApplication.findBar?.updateUIState(state, previous, matchesCount);\\n  }\\n}\\n\\nfunction webViewerScaleChanging(evt) {\\n  PDFViewerApplication.toolbar?.setPageScale(evt.presetValue, evt.scale);\\n\\n  PDFViewerApplication.pdfViewer.update();\\n}\\n\\nfunction webViewerRotationChanging(evt) {\\n  if (PDFViewerApplication.pdfThumbnailViewer) {\\n    PDFViewerApplication.pdfThumbnailViewer.pagesRotation = evt.pagesRotation;\\n  }\\n\\n  PDFViewerApplication.forceRendering();\\n  \u002F\u002F Ensure that the active page doesn't change during rotation.\\n  PDFViewerApplication.pdfViewer.currentPageNumber = evt.pageNumber;\\n}\\n\\nfunction webViewerPageChanging({ pageNumber, pageLabel }) {\\n  PDFViewerApplication.toolbar?.setPageNumber(pageNumber, pageLabel);\\n  PDFViewerApplication.secondaryToolbar?.setPageNumber(pageNumber);\\n\\n  if (PDFViewerApplication.pdfSidebar?.visibleView === SidebarView.THUMBS) {\\n    PDFViewerApplication.pdfThumbnailViewer?.scrollThumbnailIntoView(\\n      pageNumber\\n    );\\n  }\\n\\n  \u002F\u002F Show\u002Fhide the loading indicator in the page number input element.\\n  const currentPage = PDFViewerApplication.pdfViewer.getPageView(\\n    \u002F* index = *\u002F pageNumber - 1\\n  );\\n  PDFViewerApplication.toolbar?.updateLoadingIndicatorState(\\n    currentPage?.renderingState === RenderingStates.RUNNING\\n  );\\n}\\n\\nfunction webViewerResolutionChange(evt) {\\n  PDFViewerApplication.pdfViewer.refresh();\\n}\\n\\nfunction webViewerVisibilityChange(evt) {\\n  if (document.visibilityState === \\\"visible\\\") {\\n    \u002F\u002F Ignore mouse wheel zooming during tab switches (bug 1503412).\\n    setZoomDisabledTimeout();\\n  }\\n}\\n\\nlet zoomDisabledTimeout = null;\\nfunction setZoomDisabledTimeout() {\\n  if (zoomDisabledTimeout) {\\n    clearTimeout(zoomDisabledTimeout);\\n  }\\n  zoomDisabledTimeout = setTimeout(function () {\\n    zoomDisabledTimeout = null;\\n  }, WHEEL_ZOOM_DISABLED_TIMEOUT);\\n}\\n\\nfunction webViewerWheel(evt) {\\n  const {\\n    pdfViewer,\\n    supportsMouseWheelZoomCtrlKey,\\n    supportsMouseWheelZoomMetaKey,\\n    supportsPinchToZoom,\\n  } = PDFViewerApplication;\\n\\n  if (pdfViewer.isInPresentationMode) {\\n    return;\\n  }\\n\\n  \u002F\u002F Pinch-to-zoom on a trackpad maps to a wheel event with ctrlKey set to true\\n  \u002F\u002F https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FWheelEvent#browser_compatibility\\n  \u002F\u002F Hence if ctrlKey is true but ctrl key hasn't been pressed then we can\\n  \u002F\u002F infer that we have a pinch-to-zoom.\\n  \u002F\u002F But the ctrlKey could have been pressed outside of the browser window,\\n  \u002F\u002F hence we try to do some magic to guess if the scaleFactor is likely coming\\n  \u002F\u002F from a pinch-to-zoom or not.\\n\\n  \u002F\u002F It is important that we query deltaMode before delta{X,Y}, so that\\n  \u002F\u002F Firefox doesn't switch to DOM_DELTA_PIXEL mode for compat with other\\n  \u002F\u002F browsers, see https:\u002F\u002Fbugzilla.mozilla.org\u002Fshow_bug.cgi?id=1392460.\\n  const deltaMode = evt.deltaMode;\\n\\n  \u002F\u002F The following formula is a bit strange but it comes from:\\n  \u002F\u002F https:\u002F\u002Fsearchfox.org\u002Fmozilla-central\u002Frev\u002Fd62c4c4d5547064487006a1506287da394b64724\u002Fwidget\u002FInputData.cpp#618-626\\n  let scaleFactor = Math.exp(-evt.deltaY \u002F 100);\\n\\n  const isBuiltInMac =\\n    typeof PDFJSDev !== \\\"undefined\\\" &&\\n    PDFJSDev.test(\\\"MOZCENTRAL\\\") &&\\n    FeatureTest.platform.isMac;\\n  const isPinchToZoom =\\n    evt.ctrlKey &&\\n    !PDFViewerApplication._isCtrlKeyDown &&\\n    deltaMode === WheelEvent.DOM_DELTA_PIXEL &&\\n    evt.deltaX === 0 &&\\n    (Math.abs(scaleFactor - 1) \u003C 0.05 || isBuiltInMac) &&\\n    evt.deltaZ === 0;\\n  const origin = [evt.clientX, evt.clientY];\\n\\n  if (\\n    isPinchToZoom ||\\n    (evt.ctrlKey && supportsMouseWheelZoomCtrlKey) ||\\n    (evt.metaKey && supportsMouseWheelZoomMetaKey)\\n  ) {\\n    \u002F\u002F Only zoom the pages, not the entire viewer.\\n    evt.preventDefault();\\n    \u002F\u002F NOTE: this check must be placed *after* preventDefault.\\n    if (\\n      PDFViewerApplication._isScrolling ||\\n      zoomDisabledTimeout ||\\n      document.visibilityState === \\\"hidden\\\" ||\\n      PDFViewerApplication.overlayManager.active\\n    ) {\\n      return;\\n    }\\n\\n    if (isPinchToZoom && supportsPinchToZoom) {\\n      scaleFactor = PDFViewerApplication._accumulateFactor(\\n        pdfViewer.currentScale,\\n        scaleFactor,\\n        \\\"_wheelUnusedFactor\\\"\\n      );\\n      PDFViewerApplication.updateZoom(null, scaleFactor, origin);\\n    } else {\\n      const delta = normalizeWheelEventDirection(evt);\\n\\n      let ticks = 0;\\n      if (\\n        deltaMode === WheelEvent.DOM_DELTA_LINE ||\\n        deltaMode === WheelEvent.DOM_DELTA_PAGE\\n      ) {\\n        \u002F\u002F For line-based devices, use one tick per event, because different\\n        \u002F\u002F OSs have different defaults for the number lines. But we generally\\n        \u002F\u002F want one \\\"clicky\\\" roll of the wheel (which produces one event) to\\n        \u002F\u002F adjust the zoom by one step.\\n        if (Math.abs(delta) >= 1) {\\n          ticks = Math.sign(delta);\\n        } else {\\n          \u002F\u002F If we're getting fractional lines (I can't think of a scenario\\n          \u002F\u002F this might actually happen), be safe and use the accumulator.\\n          ticks = PDFViewerApplication._accumulateTicks(\\n            delta,\\n            \\\"_wheelUnusedTicks\\\"\\n          );\\n        }\\n      } else {\\n        \u002F\u002F pixel-based devices\\n        const PIXELS_PER_LINE_SCALE = 30;\\n        ticks = PDFViewerApplication._accumulateTicks(\\n          delta \u002F PIXELS_PER_LINE_SCALE,\\n          \\\"_wheelUnusedTicks\\\"\\n        );\\n      }\\n\\n      PDFViewerApplication.updateZoom(ticks, null, origin);\\n    }\\n  }\\n}\\n\\nfunction webViewerTouchStart(evt) {\\n  if (\\n    PDFViewerApplication.pdfViewer.isInPresentationMode ||\\n    evt.touches.length \u003C 2\\n  ) {\\n    return;\\n  }\\n  evt.preventDefault();\\n\\n  if (evt.touches.length !== 2 || PDFViewerApplication.overlayManager.active) {\\n    PDFViewerApplication._touchInfo = null;\\n    return;\\n  }\\n\\n  let [touch0, touch1] = evt.touches;\\n  if (touch0.identifier > touch1.identifier) {\\n    [touch0, touch1] = [touch1, touch0];\\n  }\\n  PDFViewerApplication._touchInfo = {\\n    touch0X: touch0.pageX,\\n    touch0Y: touch0.pageY,\\n    touch1X: touch1.pageX,\\n    touch1Y: touch1.pageY,\\n  };\\n}\\n\\nfunction webViewerTouchMove(evt) {\\n  if (!PDFViewerApplication._touchInfo || evt.touches.length !== 2) {\\n    return;\\n  }\\n\\n  const { pdfViewer, _touchInfo, supportsPinchToZoom } = PDFViewerApplication;\\n  let [touch0, touch1] = evt.touches;\\n  if (touch0.identifier > touch1.identifier) {\\n    [touch0, touch1] = [touch1, touch0];\\n  }\\n  const { pageX: page0X, pageY: page0Y } = touch0;\\n  const { pageX: page1X, pageY: page1Y } = touch1;\\n  const {\\n    touch0X: pTouch0X,\\n    touch0Y: pTouch0Y,\\n    touch1X: pTouch1X,\\n    touch1Y: pTouch1Y,\\n  } = _touchInfo;\\n\\n  if (\\n    Math.abs(pTouch0X - page0X) \u003C= 1 &&\\n    Math.abs(pTouch0Y - page0Y) \u003C= 1 &&\\n    Math.abs(pTouch1X - page1X) \u003C= 1 &&\\n    Math.abs(pTouch1Y - page1Y) \u003C= 1\\n  ) {\\n    \u002F\u002F Touches are really too close and it's hard do some basic\\n    \u002F\u002F geometry in order to guess something.\\n    return;\\n  }\\n\\n  _touchInfo.touch0X = page0X;\\n  _touchInfo.touch0Y = page0Y;\\n  _touchInfo.touch1X = page1X;\\n  _touchInfo.touch1Y = page1Y;\\n\\n  if (pTouch0X === page0X && pTouch0Y === page0Y) {\\n    \u002F\u002F First touch is fixed, if the vectors are collinear then we've a pinch.\\n    const v1X = pTouch1X - page0X;\\n    const v1Y = pTouch1Y - page0Y;\\n    const v2X = page1X - page0X;\\n    const v2Y = page1Y - page0Y;\\n    const det = v1X * v2Y - v1Y * v2X;\\n    \u002F\u002F 0.02 is approximatively sin(0.15deg).\\n    if (Math.abs(det) > 0.02 * Math.hypot(v1X, v1Y) * Math.hypot(v2X, v2Y)) {\\n      return;\\n    }\\n  } else if (pTouch1X === page1X && pTouch1Y === page1Y) {\\n    \u002F\u002F Second touch is fixed, if the vectors are collinear then we've a pinch.\\n    const v1X = pTouch0X - page1X;\\n    const v1Y = pTouch0Y - page1Y;\\n    const v2X = page0X - page1X;\\n    const v2Y = page0Y - page1Y;\\n    const det = v1X * v2Y - v1Y * v2X;\\n    if (Math.abs(det) > 0.02 * Math.hypot(v1X, v1Y) * Math.hypot(v2X, v2Y)) {\\n      return;\\n    }\\n  } else {\\n    const diff0X = page0X - pTouch0X;\\n    const diff1X = page1X - pTouch1X;\\n    const diff0Y = page0Y - pTouch0Y;\\n    const diff1Y = page1Y - pTouch1Y;\\n    const dotProduct = diff0X * diff1X + diff0Y * diff1Y;\\n    if (dotProduct >= 0) {\\n      \u002F\u002F The two touches go in almost the same direction.\\n      return;\\n    }\\n  }\\n\\n  evt.preventDefault();\\n\\n  const origin = [(page0X + page1X) \u002F 2, (page0Y + page1Y) \u002F 2];\\n  const distance = Math.hypot(page0X - page1X, page0Y - page1Y) || 1;\\n  const pDistance = Math.hypot(pTouch0X - pTouch1X, pTouch0Y - pTouch1Y) || 1;\\n  if (supportsPinchToZoom) {\\n    const newScaleFactor = PDFViewerApplication._accumulateFactor(\\n      pdfViewer.currentScale,\\n      distance \u002F pDistance,\\n      \\\"_touchUnusedFactor\\\"\\n    );\\n    PDFViewerApplication.updateZoom(null, newScaleFactor, origin);\\n  } else {\\n    const PIXELS_PER_LINE_SCALE = 30;\\n    const ticks = PDFViewerApplication._accumulateTicks(\\n      (distance - pDistance) \u002F PIXELS_PER_LINE_SCALE,\\n      \\\"_touchUnusedTicks\\\"\\n    );\\n    PDFViewerApplication.updateZoom(ticks, null, origin);\\n  }\\n}\\n\\nfunction webViewerTouchEnd(evt) {\\n  if (!PDFViewerApplication._touchInfo) {\\n    return;\\n  }\\n\\n  evt.preventDefault();\\n  PDFViewerApplication._touchInfo = null;\\n  PDFViewerApplication._touchUnusedTicks = 0;\\n  PDFViewerApplication._touchUnusedFactor = 1;\\n}\\n\\nfunction webViewerClick(evt) {\\n  if (!PDFViewerApplication.secondaryToolbar?.isOpen) {\\n    return;\\n  }\\n  const appConfig = PDFViewerApplication.appConfig;\\n  if (\\n    PDFViewerApplication.pdfViewer.containsElement(evt.target) ||\\n    (appConfig.toolbar?.container.contains(evt.target) &&\\n      evt.target !== appConfig.secondaryToolbar?.toggleButton)\\n  ) {\\n    PDFViewerApplication.secondaryToolbar.close();\\n  }\\n}\\n\\nfunction webViewerKeyUp(evt) {\\n  \u002F\u002F evt.ctrlKey is false hence we use evt.key.\\n  if (evt.key === \\\"Control\\\") {\\n    PDFViewerApplication._isCtrlKeyDown = false;\\n  }\\n}\\n\\nfunction webViewerKeyDown(evt) {\\n  PDFViewerApplication._isCtrlKeyDown = evt.key === \\\"Control\\\";\\n\\n  if (PDFViewerApplication.overlayManager.active) {\\n    return;\\n  }\\n  const { eventBus, pdfViewer } = PDFViewerApplication;\\n  const isViewerInPresentationMode = pdfViewer.isInPresentationMode;\\n\\n  let handled = false,\\n    ensureViewerFocused = false;\\n  const cmd =\\n    (evt.ctrlKey ? 1 : 0) |\\n    (evt.altKey ? 2 : 0) |\\n    (evt.shiftKey ? 4 : 0) |\\n    (evt.metaKey ? 8 : 0);\\n\\n  \u002F\u002F First, handle the key bindings that are independent whether an input\\n  \u002F\u002F control is selected or not.\\n  if (cmd === 1 || cmd === 8 || cmd === 5 || cmd === 12) {\\n    \u002F\u002F either CTRL or META key with optional SHIFT.\\n    switch (evt.keyCode) {\\n      case 70: \u002F\u002F f\\n        if (!PDFViewerApplication.supportsIntegratedFind && !evt.shiftKey) {\\n          PDFViewerApplication.findBar?.open();\\n          handled = true;\\n        }\\n        break;\\n      case 71: \u002F\u002F g\\n        if (!PDFViewerApplication.supportsIntegratedFind) {\\n          const { state } = PDFViewerApplication.findController;\\n          if (state) {\\n            const newState = {\\n              source: window,\\n              type: \\\"again\\\",\\n              findPrevious: cmd === 5 || cmd === 12,\\n            };\\n            eventBus.dispatch(\\\"find\\\", { ...state, ...newState });\\n          }\\n          handled = true;\\n        }\\n        break;\\n      case 61: \u002F\u002F FF\u002FMac '='\\n      case 107: \u002F\u002F FF '+' and '='\\n      case 187: \u002F\u002F Chrome '+'\\n      case 171: \u002F\u002F FF with German keyboard\\n        PDFViewerApplication.zoomIn();\\n        handled = true;\\n        break;\\n      case 173: \u002F\u002F FF\u002FMac '-'\\n      case 109: \u002F\u002F FF '-'\\n      case 189: \u002F\u002F Chrome '-'\\n        PDFViewerApplication.zoomOut();\\n        handled = true;\\n        break;\\n      case 48: \u002F\u002F '0'\\n      case 96: \u002F\u002F '0' on Numpad of Swedish keyboard\\n        if (!isViewerInPresentationMode) {\\n          \u002F\u002F keeping it unhandled (to restore page zoom to 100%)\\n          setTimeout(function () {\\n            \u002F\u002F ... and resetting the scale after browser adjusts its scale\\n            PDFViewerApplication.zoomReset();\\n          });\\n          handled = false;\\n        }\\n        break;\\n\\n      case 38: \u002F\u002F up arrow\\n        if (isViewerInPresentationMode || PDFViewerApplication.page > 1) {\\n          PDFViewerApplication.page = 1;\\n          handled = true;\\n          ensureViewerFocused = true;\\n        }\\n        break;\\n      case 40: \u002F\u002F down arrow\\n        if (\\n          isViewerInPresentationMode ||\\n          PDFViewerApplication.page \u003C PDFViewerApplication.pagesCount\\n        ) {\\n          PDFViewerApplication.page = PDFViewerApplication.pagesCount;\\n          handled = true;\\n          ensureViewerFocused = true;\\n        }\\n        break;\\n    }\\n  }\\n\\n  if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC || CHROME\\\")) {\\n    \u002F\u002F CTRL or META without shift\\n    if (cmd === 1 || cmd === 8) {\\n      switch (evt.keyCode) {\\n        case 83: \u002F\u002F s\\n          eventBus.dispatch(\\\"download\\\", { source: window });\\n          handled = true;\\n          break;\\n\\n        case 79: \u002F\u002F o\\n          if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n            eventBus.dispatch(\\\"openfile\\\", { source: window });\\n            handled = true;\\n          }\\n          break;\\n      }\\n    }\\n  }\\n\\n  \u002F\u002F CTRL+ALT or Option+Command\\n  if (cmd === 3 || cmd === 10) {\\n    switch (evt.keyCode) {\\n      case 80: \u002F\u002F p\\n        PDFViewerApplication.requestPresentationMode();\\n        handled = true;\\n        PDFViewerApplication.externalServices.reportTelemetry({\\n          type: \\\"buttons\\\",\\n          data: { id: \\\"presentationModeKeyboard\\\" },\\n        });\\n        break;\\n      case 71: \u002F\u002F g\\n        \u002F\u002F focuses input#pageNumber field\\n        if (PDFViewerApplication.appConfig.toolbar) {\\n          PDFViewerApplication.appConfig.toolbar.pageNumber.select();\\n          handled = true;\\n        }\\n        break;\\n    }\\n  }\\n\\n  if (handled) {\\n    if (ensureViewerFocused && !isViewerInPresentationMode) {\\n      pdfViewer.focus();\\n    }\\n    evt.preventDefault();\\n    return;\\n  }\\n\\n  \u002F\u002F Some shortcuts should not get handled if a control\u002Finput element\\n  \u002F\u002F is selected.\\n  const curElement = getActiveOrFocusedElement();\\n  const curElementTagName = curElement?.tagName.toUpperCase();\\n  if (\\n    curElementTagName === \\\"INPUT\\\" ||\\n    curElementTagName === \\\"TEXTAREA\\\" ||\\n    curElementTagName === \\\"SELECT\\\" ||\\n    (curElementTagName === \\\"BUTTON\\\" &&\\n      (evt.keyCode === \u002F* Enter = *\u002F 13 || evt.keyCode === \u002F* Space = *\u002F 32)) ||\\n    curElement?.isContentEditable\\n  ) {\\n    \u002F\u002F Make sure that the secondary toolbar is closed when Escape is pressed.\\n    if (evt.keyCode !== \u002F* Esc = *\u002F 27) {\\n      return;\\n    }\\n  }\\n\\n  \u002F\u002F No control key pressed at all.\\n  if (cmd === 0) {\\n    let turnPage = 0,\\n      turnOnlyIfPageFit = false;\\n    switch (evt.keyCode) {\\n      case 38: \u002F\u002F up arrow\\n        if (PDFViewerApplication.supportsCaretBrowsingMode) {\\n          PDFViewerApplication.moveCaret(\\n            \u002F* isUp = *\u002F true,\\n            \u002F* select = *\u002F false\\n          );\\n          handled = true;\\n          break;\\n        }\\n      \u002F* falls through *\u002F\\n      case 33: \u002F\u002F pg up\\n        \u002F\u002F vertical scrolling using arrow\u002Fpg keys\\n        if (pdfViewer.isVerticalScrollbarEnabled) {\\n          turnOnlyIfPageFit = true;\\n        }\\n        turnPage = -1;\\n        break;\\n      case 8: \u002F\u002F backspace\\n        if (!isViewerInPresentationMode) {\\n          turnOnlyIfPageFit = true;\\n        }\\n        turnPage = -1;\\n        break;\\n      case 37: \u002F\u002F left arrow\\n        if (PDFViewerApplication.supportsCaretBrowsingMode) {\\n          return;\\n        }\\n        \u002F\u002F horizontal scrolling using arrow keys\\n        if (pdfViewer.isHorizontalScrollbarEnabled) {\\n          turnOnlyIfPageFit = true;\\n        }\\n      \u002F* falls through *\u002F\\n      case 75: \u002F\u002F 'k'\\n      case 80: \u002F\u002F 'p'\\n        turnPage = -1;\\n        break;\\n      case 27: \u002F\u002F esc key\\n        if (PDFViewerApplication.secondaryToolbar?.isOpen) {\\n          PDFViewerApplication.secondaryToolbar.close();\\n          handled = true;\\n        }\\n        if (\\n          !PDFViewerApplication.supportsIntegratedFind &&\\n          PDFViewerApplication.findBar?.opened\\n        ) {\\n          PDFViewerApplication.findBar.close();\\n          handled = true;\\n        }\\n        break;\\n      case 40: \u002F\u002F down arrow\\n        if (PDFViewerApplication.supportsCaretBrowsingMode) {\\n          PDFViewerApplication.moveCaret(\\n            \u002F* isUp = *\u002F false,\\n            \u002F* select = *\u002F false\\n          );\\n          handled = true;\\n          break;\\n        }\\n      \u002F* falls through *\u002F\\n      case 34: \u002F\u002F pg down\\n        \u002F\u002F vertical scrolling using arrow\u002Fpg keys\\n        if (pdfViewer.isVerticalScrollbarEnabled) {\\n          turnOnlyIfPageFit = true;\\n        }\\n        turnPage = 1;\\n        break;\\n      case 13: \u002F\u002F enter key\\n      case 32: \u002F\u002F spacebar\\n        if (!isViewerInPresentationMode) {\\n          turnOnlyIfPageFit = true;\\n        }\\n        turnPage = 1;\\n        break;\\n      case 39: \u002F\u002F right arrow\\n        if (PDFViewerApplication.supportsCaretBrowsingMode) {\\n          return;\\n        }\\n        \u002F\u002F horizontal scrolling using arrow keys\\n        if (pdfViewer.isHorizontalScrollbarEnabled) {\\n          turnOnlyIfPageFit = true;\\n        }\\n      \u002F* falls through *\u002F\\n      case 74: \u002F\u002F 'j'\\n      case 78: \u002F\u002F 'n'\\n        turnPage = 1;\\n        break;\\n\\n      case 36: \u002F\u002F home\\n        if (isViewerInPresentationMode || PDFViewerApplication.page > 1) {\\n          PDFViewerApplication.page = 1;\\n          handled = true;\\n          ensureViewerFocused = true;\\n        }\\n        break;\\n      case 35: \u002F\u002F end\\n        if (\\n          isViewerInPresentationMode ||\\n          PDFViewerApplication.page \u003C PDFViewerApplication.pagesCount\\n        ) {\\n          PDFViewerApplication.page = PDFViewerApplication.pagesCount;\\n          handled = true;\\n          ensureViewerFocused = true;\\n        }\\n        break;\\n\\n      case 83: \u002F\u002F 's'\\n        PDFViewerApplication.pdfCursorTools?.switchTool(CursorTool.SELECT);\\n        break;\\n      case 72: \u002F\u002F 'h'\\n        PDFViewerApplication.pdfCursorTools?.switchTool(CursorTool.HAND);\\n        break;\\n\\n      case 82: \u002F\u002F 'r'\\n        PDFViewerApplication.rotatePages(90);\\n        break;\\n\\n      case 115: \u002F\u002F F4\\n        PDFViewerApplication.pdfSidebar?.toggle();\\n        break;\\n    }\\n\\n    if (\\n      turnPage !== 0 &&\\n      (!turnOnlyIfPageFit || pdfViewer.currentScaleValue === \\\"page-fit\\\")\\n    ) {\\n      if (turnPage > 0) {\\n        pdfViewer.nextPage();\\n      } else {\\n        pdfViewer.previousPage();\\n      }\\n      handled = true;\\n    }\\n  }\\n\\n  \u002F\u002F shift-key\\n  if (cmd === 4) {\\n    switch (evt.keyCode) {\\n      case 13: \u002F\u002F enter key\\n      case 32: \u002F\u002F spacebar\\n        if (\\n          !isViewerInPresentationMode &&\\n          pdfViewer.currentScaleValue !== \\\"page-fit\\\"\\n        ) {\\n          break;\\n        }\\n        pdfViewer.previousPage();\\n\\n        handled = true;\\n        break;\\n\\n      case 38: \u002F\u002F up arrow\\n        PDFViewerApplication.moveCaret(\u002F* isUp = *\u002F true, \u002F* select = *\u002F true);\\n        handled = true;\\n        break;\\n      case 40: \u002F\u002F down arrow\\n        PDFViewerApplication.moveCaret(\u002F* isUp = *\u002F false, \u002F* select = *\u002F true);\\n        handled = true;\\n        break;\\n      case 82: \u002F\u002F 'r'\\n        PDFViewerApplication.rotatePages(-90);\\n        break;\\n    }\\n  }\\n\\n  if (!handled && !isViewerInPresentationMode) {\\n    \u002F\u002F 33=Page Up  34=Page Down  35=End    36=Home\\n    \u002F\u002F 37=Left     38=Up         39=Right  40=Down\\n    \u002F\u002F 32=Spacebar\\n    if (\\n      (evt.keyCode >= 33 && evt.keyCode \u003C= 40) ||\\n      (evt.keyCode === 32 && curElementTagName !== \\\"BUTTON\\\")\\n    ) {\\n      ensureViewerFocused = true;\\n    }\\n  }\\n\\n  if (ensureViewerFocused && !pdfViewer.containsElement(curElement)) {\\n    \u002F\u002F The page container is not focused, but a page navigation key has been\\n    \u002F\u002F pressed. Change the focus to the viewer container to make sure that\\n    \u002F\u002F navigation by keyboard works as expected.\\n    pdfViewer.focus();\\n  }\\n\\n  if (handled) {\\n    evt.preventDefault();\\n  }\\n}\\n\\nfunction beforeUnload(evt) {\\n  evt.preventDefault();\\n  evt.returnValue = \\\"\\\";\\n  return false;\\n}\\n\\nfunction webViewerAnnotationEditorStatesChanged(data) {\\n  PDFViewerApplication.externalServices.updateEditorStates(data);\\n}\\n\\nfunction webViewerReportTelemetry({ details }) {\\n  PDFViewerApplication.externalServices.reportTelemetry(details);\\n}\\n\\nexport { PDFViewerApplication };\\n\",\"\u002F* Copyright 2016 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { RenderingStates, ScrollMode, SpreadMode } from \\\".\u002Fui_utils.js\\\";\\nimport { AppOptions } from \\\".\u002Fapp_options.js\\\";\\nimport { LinkTarget } from \\\".\u002Fpdf_link_service.js\\\";\\nimport { PDFViewerApplication } from \\\".\u002Fapp.js\\\";\\n\\n\u002F* eslint-disable-next-line no-unused-vars *\u002F\\nconst pdfjsVersion =\\n  typeof PDFJSDev !== \\\"undefined\\\" ? PDFJSDev.eval(\\\"BUNDLE_VERSION\\\") : void 0;\\n\u002F* eslint-disable-next-line no-unused-vars *\u002F\\nconst pdfjsBuild =\\n  typeof PDFJSDev !== \\\"undefined\\\" ? PDFJSDev.eval(\\\"BUNDLE_BUILD\\\") : void 0;\\n\\nconst AppConstants =\\n  typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")\\n    ? { LinkTarget, RenderingStates, ScrollMode, SpreadMode }\\n    : null;\\n\\nwindow.PDFViewerApplication = PDFViewerApplication;\\nwindow.PDFViewerApplicationConstants = AppConstants;\\nwindow.PDFViewerApplicationOptions = AppOptions;\\n\\nfunction getViewerConfiguration() {\\n  return {\\n    appContainer: document.body,\\n    mainContainer: document.getElementById(\\\"viewerContainer\\\"),\\n    viewerContainer: document.getElementById(\\\"viewer\\\"),\\n    toolbar: {\\n      container: document.getElementById(\\\"toolbarViewer\\\"),\\n      numPages: document.getElementById(\\\"numPages\\\"),\\n      pageNumber: document.getElementById(\\\"pageNumber\\\"),\\n      scaleSelect: document.getElementById(\\\"scaleSelect\\\"),\\n      customScaleOption: document.getElementById(\\\"customScaleOption\\\"),\\n      previous: document.getElementById(\\\"previous\\\"),\\n      next: document.getElementById(\\\"next\\\"),\\n      zoomIn: document.getElementById(\\\"zoomIn\\\"),\\n      zoomOut: document.getElementById(\\\"zoomOut\\\"),\\n      viewFind: document.getElementById(\\\"viewFind\\\"),\\n      print: document.getElementById(\\\"print\\\"),\\n      editorFreeTextButton: document.getElementById(\\\"editorFreeText\\\"),\\n      editorFreeTextParamsToolbar: document.getElementById(\\n        \\\"editorFreeTextParamsToolbar\\\"\\n      ),\\n      editorHighlightButton: document.getElementById(\\\"editorHighlight\\\"),\\n      editorHighlightParamsToolbar: document.getElementById(\\n        \\\"editorHighlightParamsToolbar\\\"\\n      ),\\n      editorHighlightColorPicker: document.getElementById(\\n        \\\"editorHighlightColorPicker\\\"\\n      ),\\n      editorInkButton: document.getElementById(\\\"editorInk\\\"),\\n      editorInkParamsToolbar: document.getElementById(\\\"editorInkParamsToolbar\\\"),\\n      editorStampButton: document.getElementById(\\\"editorStamp\\\"),\\n      editorStampParamsToolbar: document.getElementById(\\n        \\\"editorStampParamsToolbar\\\"\\n      ),\\n      download: document.getElementById(\\\"download\\\"),\\n    },\\n    secondaryToolbar: {\\n      toolbar: document.getElementById(\\\"secondaryToolbar\\\"),\\n      toggleButton: document.getElementById(\\\"secondaryToolbarToggle\\\"),\\n      presentationModeButton: document.getElementById(\\\"presentationMode\\\"),\\n      openFileButton:\\n        typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")\\n          ? document.getElementById(\\\"secondaryOpenFile\\\")\\n          : null,\\n      printButton: document.getElementById(\\\"secondaryPrint\\\"),\\n      downloadButton: document.getElementById(\\\"secondaryDownload\\\"),\\n      viewBookmarkButton: document.getElementById(\\\"viewBookmark\\\"),\\n      firstPageButton: document.getElementById(\\\"firstPage\\\"),\\n      lastPageButton: document.getElementById(\\\"lastPage\\\"),\\n      pageRotateCwButton: document.getElementById(\\\"pageRotateCw\\\"),\\n      pageRotateCcwButton: document.getElementById(\\\"pageRotateCcw\\\"),\\n      cursorSelectToolButton: document.getElementById(\\\"cursorSelectTool\\\"),\\n      cursorHandToolButton: document.getElementById(\\\"cursorHandTool\\\"),\\n      scrollPageButton: document.getElementById(\\\"scrollPage\\\"),\\n      scrollVerticalButton: document.getElementById(\\\"scrollVertical\\\"),\\n      scrollHorizontalButton: document.getElementById(\\\"scrollHorizontal\\\"),\\n      scrollWrappedButton: document.getElementById(\\\"scrollWrapped\\\"),\\n      spreadNoneButton: document.getElementById(\\\"spreadNone\\\"),\\n      spreadOddButton: document.getElementById(\\\"spreadOdd\\\"),\\n      spreadEvenButton: document.getElementById(\\\"spreadEven\\\"),\\n      documentPropertiesButton: document.getElementById(\\\"documentProperties\\\"),\\n    },\\n    sidebar: {\\n      \u002F\u002F Divs (and sidebar button)\\n      outerContainer: document.getElementById(\\\"outerContainer\\\"),\\n      sidebarContainer: document.getElementById(\\\"sidebarContainer\\\"),\\n      toggleButton: document.getElementById(\\\"sidebarToggle\\\"),\\n      resizer: document.getElementById(\\\"sidebarResizer\\\"),\\n      \u002F\u002F Buttons\\n      thumbnailButton: document.getElementById(\\\"viewThumbnail\\\"),\\n      outlineButton: document.getElementById(\\\"viewOutline\\\"),\\n      attachmentsButton: document.getElementById(\\\"viewAttachments\\\"),\\n      layersButton: document.getElementById(\\\"viewLayers\\\"),\\n      \u002F\u002F Views\\n      thumbnailView: document.getElementById(\\\"thumbnailView\\\"),\\n      outlineView: document.getElementById(\\\"outlineView\\\"),\\n      attachmentsView: document.getElementById(\\\"attachmentsView\\\"),\\n      layersView: document.getElementById(\\\"layersView\\\"),\\n      \u002F\u002F View-specific options\\n      currentOutlineItemButton: document.getElementById(\\\"currentOutlineItem\\\"),\\n    },\\n    findBar: {\\n      bar: document.getElementById(\\\"findbar\\\"),\\n      toggleButton: document.getElementById(\\\"viewFind\\\"),\\n      findField: document.getElementById(\\\"findInput\\\"),\\n      highlightAllCheckbox: document.getElementById(\\\"findHighlightAll\\\"),\\n      caseSensitiveCheckbox: document.getElementById(\\\"findMatchCase\\\"),\\n      matchDiacriticsCheckbox: document.getElementById(\\\"findMatchDiacritics\\\"),\\n      entireWordCheckbox: document.getElementById(\\\"findEntireWord\\\"),\\n      findMsg: document.getElementById(\\\"findMsg\\\"),\\n      findResultsCount: document.getElementById(\\\"findResultsCount\\\"),\\n      findPreviousButton: document.getElementById(\\\"findPrevious\\\"),\\n      findNextButton: document.getElementById(\\\"findNext\\\"),\\n    },\\n    passwordOverlay: {\\n      dialog: document.getElementById(\\\"passwordDialog\\\"),\\n      label: document.getElementById(\\\"passwordText\\\"),\\n      input: document.getElementById(\\\"password\\\"),\\n      submitButton: document.getElementById(\\\"passwordSubmit\\\"),\\n      cancelButton: document.getElementById(\\\"passwordCancel\\\"),\\n    },\\n    documentProperties: {\\n      dialog: document.getElementById(\\\"documentPropertiesDialog\\\"),\\n      closeButton: document.getElementById(\\\"documentPropertiesClose\\\"),\\n      fields: {\\n        fileName: document.getElementById(\\\"fileNameField\\\"),\\n        fileSize: document.getElementById(\\\"fileSizeField\\\"),\\n        title: document.getElementById(\\\"titleField\\\"),\\n        author: document.getElementById(\\\"authorField\\\"),\\n        subject: document.getElementById(\\\"subjectField\\\"),\\n        keywords: document.getElementById(\\\"keywordsField\\\"),\\n        creationDate: document.getElementById(\\\"creationDateField\\\"),\\n        modificationDate: document.getElementById(\\\"modificationDateField\\\"),\\n        creator: document.getElementById(\\\"creatorField\\\"),\\n        producer: document.getElementById(\\\"producerField\\\"),\\n        version: document.getElementById(\\\"versionField\\\"),\\n        pageCount: document.getElementById(\\\"pageCountField\\\"),\\n        pageSize: document.getElementById(\\\"pageSizeField\\\"),\\n        linearized: document.getElementById(\\\"linearizedField\\\"),\\n      },\\n    },\\n    altTextDialog: {\\n      dialog: document.getElementById(\\\"altTextDialog\\\"),\\n      optionDescription: document.getElementById(\\\"descriptionButton\\\"),\\n      optionDecorative: document.getElementById(\\\"decorativeButton\\\"),\\n      textarea: document.getElementById(\\\"descriptionTextarea\\\"),\\n      cancelButton: document.getElementById(\\\"altTextCancel\\\"),\\n      saveButton: document.getElementById(\\\"altTextSave\\\"),\\n    },\\n    annotationEditorParams: {\\n      editorFreeTextFontSize: document.getElementById(\\\"editorFreeTextFontSize\\\"),\\n      editorFreeTextColor: document.getElementById(\\\"editorFreeTextColor\\\"),\\n      editorInkColor: document.getElementById(\\\"editorInkColor\\\"),\\n      editorInkThickness: document.getElementById(\\\"editorInkThickness\\\"),\\n      editorInkOpacity: document.getElementById(\\\"editorInkOpacity\\\"),\\n      editorStampAddImage: document.getElementById(\\\"editorStampAddImage\\\"),\\n      editorFreeHighlightThickness: document.getElementById(\\n        \\\"editorFreeHighlightThickness\\\"\\n      ),\\n      editorHighlightShowAll: document.getElementById(\\\"editorHighlightShowAll\\\"),\\n    },\\n    printContainer: document.getElementById(\\\"printContainer\\\"),\\n  };\\n}\\n\\nfunction webViewerLoad() {\\n  const config = getViewerConfiguration();\\n\\n  if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"GENERIC\\\")) {\\n    \u002F\u002F Give custom implementations of the default viewer a simpler way to\\n    \u002F\u002F set various `AppOptions`, by dispatching an event once all viewer\\n    \u002F\u002F files are loaded but *before* the viewer initialization has run.\\n    const event = new CustomEvent(\\\"webviewerloaded\\\", {\\n      bubbles: true,\\n      cancelable: true,\\n      detail: {\\n        source: window,\\n      },\\n    });\\n    try {\\n      \u002F\u002F Attempt to dispatch the event at the embedding `document`,\\n      \u002F\u002F in order to support cases where the viewer is embedded in\\n      \u002F\u002F a *dynamically* created \u003Ciframe> element.\\n      parent.document.dispatchEvent(event);\\n    } catch (ex) {\\n      \u002F\u002F The viewer could be in e.g. a cross-origin \u003Ciframe> element,\\n      \u002F\u002F fallback to dispatching the event at the current `document`.\\n      console.error(`webviewerloaded: ${ex}`);\\n      document.dispatchEvent(event);\\n    }\\n  }\\n  PDFViewerApplication.run(config);\\n}\\n\\n\u002F\u002F Block the \\\"load\\\" event until all pages are loaded, to ensure that printing\\n\u002F\u002F works in Firefox; see https:\u002F\u002Fbugzilla.mozilla.org\u002Fshow_bug.cgi?id=1618553\\ndocument.blockUnblockOnload?.(true);\\n\\nif (\\n  document.readyState === \\\"interactive\\\" ||\\n  document.readyState === \\\"complete\\\"\\n) {\\n  webViewerLoad();\\n} else {\\n  document.addEventListener(\\\"DOMContentLoaded\\\", webViewerLoad, true);\\n}\\n\\nexport {\\n  PDFViewerApplication,\\n  AppConstants as PDFViewerApplicationConstants,\\n  AppOptions as PDFViewerApplicationOptions,\\n};\\n\"],\"names\":[\"DEFAULT_SCALE_VALUE\",\"DEFAULT_SCALE\",\"DEFAULT_SCALE_DELTA\",\"MIN_SCALE\",\"MAX_SCALE\",\"UNKNOWN_SCALE\",\"MAX_AUTO_SCALE\",\"SCROLLBAR_PADDING\",\"VERTICAL_PADDING\",\"RenderingStates\",\"INITIAL\",\"RUNNING\",\"PAUSED\",\"FINISHED\",\"PresentationModeState\",\"UNKNOWN\",\"NORMAL\",\"CHANGING\",\"FULLSCREEN\",\"SidebarView\",\"NONE\",\"THUMBS\",\"OUTLINE\",\"ATTACHMENTS\",\"LAYERS\",\"TextLayerMode\",\"DISABLE\",\"ENABLE\",\"ENABLE_PERMISSIONS\",\"ScrollMode\",\"VERTICAL\",\"HORIZONTAL\",\"WRAPPED\",\"PAGE\",\"SpreadMode\",\"ODD\",\"EVEN\",\"CursorTool\",\"SELECT\",\"HAND\",\"ZOOM\",\"AutoPrintRegExp\",\"OutputScale\",\"constructor\",\"pixelRatio\",\"window\",\"devicePixelRatio\",\"sx\",\"sy\",\"scaled\",\"scrollIntoView\",\"element\",\"spot\",\"scrollMatches\",\"parent\",\"offsetParent\",\"console\",\"error\",\"offsetY\",\"offsetTop\",\"clientTop\",\"offsetX\",\"offsetLeft\",\"clientLeft\",\"clientHeight\",\"scrollHeight\",\"clientWidth\",\"scrollWidth\",\"classList\",\"contains\",\"getComputedStyle\",\"overflow\",\"top\",\"undefined\",\"left\",\"scrollLeft\",\"scrollTop\",\"watchScroll\",\"viewAreaElement\",\"callback\",\"debounceScroll\",\"evt\",\"rAF\",\"requestAnimationFrame\",\"viewAreaElementScrolled\",\"currentX\",\"lastX\",\"state\",\"right\",\"currentY\",\"lastY\",\"down\",\"_eventHandler\",\"addEventListener\",\"parseQueryString\",\"query\",\"params\",\"Map\",\"key\",\"value\",\"URLSearchParams\",\"set\",\"toLowerCase\",\"InvisibleCharsRegExp\",\"removeNullCharacters\",\"str\",\"replaceInvisible\",\"test\",\"replaceAll\",\"m\",\"binarySearchFirstItem\",\"items\",\"condition\",\"start\",\"minIndex\",\"maxIndex\",\"length\",\"currentIndex\",\"currentItem\",\"approximateFraction\",\"x\",\"Math\",\"floor\",\"xinv\",\"limit\",\"x_\",\"a\",\"b\",\"c\",\"d\",\"p\",\"q\",\"result\",\"roundToDivide\",\"div\",\"r\",\"round\",\"getPageSizeInches\",\"view\",\"userUnit\",\"rotate\",\"x1\",\"y1\",\"x2\",\"y2\",\"changeOrientation\",\"width\",\"height\",\"backtrackBeforeAllVisibleElements\",\"index\",\"views\",\"elt\",\"pageTop\",\"i\",\"getVisibleElements\",\"scrollEl\",\"sortByVisibility\",\"horizontal\",\"rtl\",\"bottom\",\"isElementBottomAfterViewTop\",\"elementBottom\",\"isElementNextAfterViewHorizontally\",\"elementLeft\",\"elementRight\",\"visible\",\"ids\",\"Set\",\"numViews\",\"firstVisibleElementInd\",\"lastEdge\",\"currentWidth\",\"currentHeight\",\"viewWidth\",\"viewHeight\",\"viewRight\",\"viewBottom\",\"hiddenHeight\",\"max\",\"hiddenWidth\",\"fractionHeight\",\"fractionWidth\",\"percent\",\"push\",\"id\",\"y\",\"widthPercent\",\"add\",\"first\",\"last\",\"at\",\"sort\",\"pc\",\"abs\",\"normalizeWheelEventDirection\",\"delta\",\"hypot\",\"deltaX\",\"deltaY\",\"angle\",\"atan2\",\"PI\",\"normalizeWheelEventDelta\",\"deltaMode\",\"MOUSE_PIXELS_PER_LINE\",\"MOUSE_LINES_PER_PAGE\",\"WheelEvent\",\"DOM_DELTA_PIXEL\",\"DOM_DELTA_LINE\",\"isValidRotation\",\"Number\",\"isInteger\",\"isValidScrollMode\",\"mode\",\"Object\",\"values\",\"includes\",\"isValidSpreadMode\",\"isPortraitOrientation\",\"size\",\"animationStarted\",\"Promise\",\"resolve\",\"docStyle\",\"document\",\"documentElement\",\"style\",\"clamp\",\"v\",\"min\",\"ProgressBar\",\"disableAutoFetchTimeout\",\"bar\",\"val\",\"isNaN\",\"remove\",\"setProperty\",\"setWidth\",\"viewer\",\"container\",\"parentNode\",\"scrollbarWidth\",\"offsetWidth\",\"setDisableAutoFetch\",\"delay\",\"clearTimeout\",\"show\",\"setTimeout\",\"hide\",\"getActiveOrFocusedElement\",\"curRoot\",\"curActiveOrFocused\",\"activeElement\",\"querySelector\",\"shadowRoot\",\"apiPageLayoutToViewerModes\",\"layout\",\"scrollMode\",\"spreadMode\",\"apiPageModeToSidebarView\",\"toggleCheckedBtn\",\"button\",\"toggle\",\"setAttribute\",\"toggleExpandedBtn\",\"compatibilityParams\",\"create\",\"userAgent\",\"navigator\",\"platform\",\"maxTouchPoints\",\"isAndroid\",\"isIOS\",\"checkCanvasSizeLimitation\",\"maxCanvasPixels\",\"OptionKind\",\"BROWSER\",\"VIEWER\",\"API\",\"WORKER\",\"PREFERENCE\",\"defaultOptions\",\"canvasMaxAreaInBytes\",\"kind\",\"isInAutomation\",\"supportsCaretBrowsingMode\",\"supportsDocumentFonts\",\"supportsIntegratedFind\",\"supportsMouseWheelZoomCtrlKey\",\"supportsMouseWheelZoomMetaKey\",\"supportsPinchToZoom\",\"annotationEditorMode\",\"annotationMode\",\"cursorToolOnLoad\",\"debuggerSrc\",\"defaultZoomDelay\",\"defaultZoomValue\",\"disableHistory\",\"disablePageLabels\",\"enableHighlightEditor\",\"enableHighlightFloatingButton\",\"enableML\",\"enablePermissions\",\"enablePrintAutoRotate\",\"enableScripting\",\"enableStampEditor\",\"externalLinkRel\",\"externalLinkTarget\",\"highlightEditorColors\",\"historyUpdateUrl\",\"ignoreDestinationZoom\",\"imageResourcesPath\",\"forcePageColors\",\"pageColorsBackground\",\"pageColorsForeground\",\"pdfBugEnabled\",\"printResolution\",\"sidebarViewOnLoad\",\"scrollModeOnLoad\",\"spreadModeOnLoad\",\"textLayerMode\",\"viewOnLoad\",\"cMapPacked\",\"cMapUrl\",\"disableAutoFetch\",\"disableFontFace\",\"disableRange\",\"disableStream\",\"docBaseUrl\",\"enableXfa\",\"fontExtraProperties\",\"isEvalSupported\",\"isOffscreenCanvasSupported\",\"maxImageSize\",\"pdfBug\",\"standardFontDataUrl\",\"verbosity\",\"workerPort\",\"workerSrc\",\"defaultUrl\",\"sandboxBundleSrc\",\"viewerCssTheme\",\"disablePreferences\",\"locale\",\"language\",\"userOptions\",\"name\",\"AppOptions\",\"Error\",\"get\",\"getAll\",\"defaultOnly\",\"options\",\"defaultOption\",\"setAll\",\"init\",\"warn\",\"DEFAULT_LINK_REL\",\"LinkTarget\",\"SELF\",\"BLANK\",\"PARENT\",\"TOP\",\"PDFLinkService\",\"externalLinkEnabled\",\"eventBus\",\"_ignoreDestinationZoom\",\"baseUrl\",\"pdfDocument\",\"pdfViewer\",\"pdfHistory\",\"setDocument\",\"setViewer\",\"setHistory\",\"pagesCount\",\"numPages\",\"page\",\"currentPageNumber\",\"rotation\",\"pagesRotation\",\"isInPresentationMode\",\"goToDestination\",\"dest\",\"namedDest\",\"explicitDest\",\"pageNumber\",\"getDestination\",\"Array\",\"isArray\",\"destRef\",\"cachedPageNumber\",\"getPageIndex\",\"pushCurrentPosition\",\"scrollPageIntoView\",\"destArray\",\"goToPage\",\"pageLabelToPageNumber\",\"pushPage\",\"addLinkAttributes\",\"link\",\"url\",\"newWindow\",\"target\",\"rel\",\"href\",\"title\",\"onclick\",\"targetStr\",\"getDestinationHash\",\"getAnchorUrl\",\"escape\",\"JSON\",\"stringify\",\"anchor\",\"setHash\",\"hash\",\"has\",\"phrase\",\"dispatch\",\"source\",\"match\",\"zoomArgs\",\"split\",\"zoomArg\",\"zoomArgNumber\",\"parseFloat\",\"allowNegativeOffset\",\"unescape\",\"parse\",\"toString\",\"isValidExplicitDest\",\"executeNamedAction\",\"action\",\"back\",\"forward\",\"nextPage\",\"previousPage\",\"executeSetOCGState\",\"optionalContentConfig\",\"optionalContentConfigPromise\",\"setOCGState\",\"#isValidExplicitDest\",\"zoom\",\"args\",\"num\",\"gen\",\"allowNull\",\"arg\",\"SimpleLinkService\",\"AbortException\",\"AnnotationEditorLayer\",\"AnnotationEditorParamsType\",\"AnnotationEditorType\",\"AnnotationEditorUIManager\",\"AnnotationLayer\",\"AnnotationMode\",\"build\",\"CMapCompressionType\",\"ColorPicker\",\"createValidAbsoluteUrl\",\"DOMSVGFactory\",\"DrawLayer\",\"FeatureTest\",\"fetchData\",\"getDocument\",\"getFilenameFromUrl\",\"getPdfFilenameFromUrl\",\"getXfaPageViewport\",\"GlobalWorkerOptions\",\"ImageKind\",\"InvalidPDFException\",\"isDataScheme\",\"isPdfFile\",\"MissingPDFException\",\"noContextMenu\",\"normalizeUnicode\",\"OPS\",\"Outliner\",\"PasswordResponses\",\"PDFDataRangeTransport\",\"PDFDateString\",\"PDFWorker\",\"PermissionFlag\",\"PixelsPerInch\",\"RenderingCancelledException\",\"renderTextLayer\",\"setLayerDimensions\",\"shadow\",\"TextLayer\",\"UnexpectedResponseException\",\"updateTextLayer\",\"Util\",\"VerbosityLevel\",\"version\",\"XfaLayer\",\"globalThis\",\"pdfjsLib\",\"WaitOnType\",\"EVENT\",\"TIMEOUT\",\"waitOnEventOrTimeout\",\"promise\",\"withResolvers\",\"ac\",\"AbortController\",\"handler\",\"type\",\"abort\",\"timeout\",\"evtMethod\",\"EventBus\",\"bind\",\"signal\",\"listeners\",\"on\",\"eventName\",\"listener\",\"_on\",\"external\",\"once\",\"off\",\"_off\",\"data\",\"eventListeners\",\"externalListeners\",\"slice\",\"rmAbort\",\"AbortSignal\",\"aborted\",\"onAbort\",\"removeEventListener\",\"ii\",\"splice\",\"AutomationEventBus\",\"BaseExternalServices\",\"updateFindControlState\",\"updateFindMatchesCount\",\"initPassiveLoading\",\"reportTelemetry\",\"createL10n\",\"createScripting\",\"updateEditorStates\",\"getNimbusExperimentData\",\"BasePreferences\",\"browserDefaults\",\"freeze\",\"defaults\",\"prefs\",\"initializedPromise\",\"_readFromStorage\",\"then\",\"browserPrefs\",\"entries\",\"prefVal\",\"_writeToStorage\",\"prefObj\",\"updatePref\",\"#updatePref\",\"reset\",\"oldPrefs\",\"structuredClone\",\"reason\",\"defaultValue\",\"valueType\",\"defaultType\",\"FluentType\",\"valueOf\",\"FluentNone\",\"scope\",\"FluentNumber\",\"opts\",\"nf\",\"memoizeIntlObject\",\"Intl\",\"NumberFormat\",\"format\",\"err\",\"reportError\",\"FluentDateTime\",\"dtf\",\"DateTimeFormat\",\"Date\",\"toISOString\",\"MAX_PLACEABLES\",\"FSI\",\"PDI\",\"selector\",\"category\",\"PluralRules\",\"select\",\"getDefault\",\"variants\",\"star\",\"resolvePattern\",\"RangeError\",\"getArguments\",\"positional\",\"named\",\"resolveExpression\",\"expr\",\"minimumFractionDigits\",\"precision\",\"resolveVariableReference\",\"resolveMessageReference\",\"resolveTermReference\",\"resolveFunctionReference\",\"resolveSelectExpression\",\"prototype\",\"hasOwnProperty\",\"call\",\"ReferenceError\",\"getTime\",\"TypeError\",\"attr\",\"message\",\"bundle\",\"_messages\",\"attribute\",\"attributes\",\"term\",\"_terms\",\"resolved\",\"func\",\"_functions\",\"sel\",\"variant\",\"resolveComplexPattern\",\"ptn\",\"dirty\",\"useIsolating\",\"_useIsolating\",\"elem\",\"_transform\",\"placeables\",\"delete\",\"join\",\"Scope\",\"errors\",\"WeakSet\",\"ctor\",\"cache\",\"_intls\",\"locales\",\"allowed\",\"unwrapped\",\"opt\",\"NUMBER_ALLOWED\",\"NUMBER\",\"DATETIME_ALLOWED\",\"DATETIME\",\"getMemoizerForLocale\",\"stringLocale\",\"memoizer\",\"FluentBundle\",\"functions\",\"transform\",\"hasMessage\",\"getMessage\",\"addResource\",\"res\",\"allowOverrides\",\"body\",\"entry\",\"startsWith\",\"formatPattern\",\"pattern\",\"RE_MESSAGE_START\",\"RE_ATTRIBUTE_START\",\"RE_VARIANT_START\",\"RE_NUMBER_LITERAL\",\"RE_IDENTIFIER\",\"RE_REFERENCE\",\"RE_FUNCTION_NAME\",\"RE_TEXT_RUN\",\"RE_STRING_RUN\",\"RE_STRING_ESCAPE\",\"RE_UNICODE_ESCAPE\",\"RE_LEADING_NEWLINES\",\"RE_TRAILING_SPACES\",\"RE_BLANK_LINES\",\"RE_INDENT\",\"TOKEN_BRACE_OPEN\",\"TOKEN_BRACE_CLOSE\",\"TOKEN_BRACKET_OPEN\",\"TOKEN_BRACKET_CLOSE\",\"TOKEN_PAREN_OPEN\",\"TOKEN_ARROW\",\"TOKEN_COLON\",\"TOKEN_COMMA\",\"TOKEN_BLANK\",\"FluentResource\",\"lastIndex\",\"cursor\",\"next\",\"exec\",\"parseMessage\",\"SyntaxError\",\"re\",\"consumeChar\",\"char\",\"errorClass\",\"consumeToken\",\"match1\",\"parsePattern\",\"parseAttributes\",\"keys\",\"attrs\",\"parsePatternElements\",\"Infinity\",\"indent\",\"parseIndent\",\"trim\",\"elements\",\"commonIndent\",\"parsePlaceable\",\"lastElement\",\"baked\",\"Indent\",\"parseInlineExpression\",\"parseVariants\",\"sigil\",\"parseArguments\",\"parseLiteral\",\"parseArgument\",\"count\",\"parseVariantKey\",\"parseNumberLiteral\",\"parseStringLiteral\",\"fraction\",\"parseEscapeSequence\",\"codepoint4\",\"codepoint6\",\"codepoint\",\"parseInt\",\"String\",\"fromCodePoint\",\"makeIndent\",\"text\",\"replace\",\"blank\",\"reOverlay\",\"TEXT_LEVEL_ELEMENTS\",\"LOCALIZABLE_ATTRIBUTES\",\"global\",\"area\",\"input\",\"menuitem\",\"menu\",\"optgroup\",\"option\",\"track\",\"img\",\"textarea\",\"th\",\"description\",\"label\",\"textbox\",\"translateElement\",\"translation\",\"localName\",\"namespaceURI\",\"textContent\",\"templateElement\",\"ownerDocument\",\"createElementNS\",\"innerHTML\",\"overlayChildNodes\",\"content\",\"overlayAttributes\",\"fromFragment\",\"toElement\",\"childNode\",\"childNodes\",\"nodeType\",\"TEXT_NODE\",\"hasAttribute\",\"sanitized\",\"getNodeForNamedElement\",\"replaceChild\",\"isElementAllowed\",\"createSanitizedElement\",\"createTextNodeFromTextContent\",\"appendChild\",\"fromElement\",\"explicitlyAllowed\",\"getAttribute\",\"map\",\"from\",\"isAttrNameLocalizable\",\"removeAttribute\",\"sourceElement\",\"translatedChild\",\"childName\",\"sourceChild\",\"removeChild\",\"clone\",\"cloneNode\",\"shallowPopulateUsing\",\"createElement\",\"createTextNode\",\"attrName\",\"elemName\",\"CachedIterable\",\"iterable\",\"CachedSyncIterable\",\"Symbol\",\"iterator\",\"cached\",\"cur\",\"touchNext\",\"idx\",\"done\",\"CachedAsyncIterable\",\"asyncIterator\",\"default\",\"Localization\",\"resourceIds\",\"generateBundles\",\"onChange\",\"addResourceIds\",\"eager\",\"removeResourceIds\",\"filter\",\"formatWithFallback\",\"method\",\"translations\",\"hasAtLeastOneBundle\",\"bundles\",\"missingIds\",\"keysFromBundle\",\"formatMessages\",\"messageFromBundle\",\"formatValues\",\"valueFromBundle\",\"formatValue\",\"handleEvent\",\"formatted\",\"attrNames\",\"messageErrors\",\"forEach\",\"L10NID_ATTR_NAME\",\"L10NARGS_ATTR_NAME\",\"L10N_ELEMENT_QUERY\",\"DOMLocalization\",\"roots\",\"pendingrAF\",\"pendingElements\",\"windowElement\",\"mutationObserver\",\"observerConfig\",\"characterData\",\"childList\",\"subtree\",\"attributeFilter\",\"translateRoots\",\"setAttributes\",\"getAttributes\",\"connectRoot\",\"newRoot\",\"root\",\"defaultView\",\"MutationObserver\",\"mutations\",\"translateMutations\",\"observe\",\"disconnectRoot\",\"pauseObserving\",\"clear\",\"resumeObserving\",\"all\",\"translateFragment\",\"takeRecords\",\"disconnect\",\"mutation\",\"addedNode\",\"addedNodes\",\"ELEMENT_NODE\",\"childElementCount\",\"getTranslatables\",\"translateElements\",\"frag\",\"getKeysForElement\",\"applyTranslations\",\"nodes\",\"querySelectorAll\",\"L10n\",\"dir\",\"lang\",\"l10n\",\"isRTL\",\"fixupLangCode\",\"_setL10n\",\"getLanguage\",\"getDirection\",\"fallback\",\"messages\",\"translate\",\"pause\",\"resume\",\"#fixupLangCode\",\"langCode\",\"PARTIAL_LANG_CODES\",\"en\",\"es\",\"fy\",\"ga\",\"gu\",\"hi\",\"hy\",\"nb\",\"ne\",\"nn\",\"pa\",\"pt\",\"sv\",\"zh\",\"#isRTL\",\"shortCode\",\"GenericL10n\",\"createBundle\",\"resource\",\"generateBundlesFallback\",\"#generateBundles\",\"defaultLang\",\"baseLang\",\"baseURL\",\"paths\",\"getPaths\",\"langs\",\"shortLang\",\"createBundleFallback\",\"#createBundle\",\"path\",\"URL\",\"#getPaths\",\"#generateBundlesFallback\",\"#createBundleFallback\",\"docProperties\",\"info\",\"metadata\",\"contentDispositionFilename\",\"contentLength\",\"getMetadata\",\"getDownloadInfo\",\"filesize\",\"filename\",\"getRaw\",\"authors\",\"GenericScripting\",\"_ready\",\"reject\",\"sandbox\",\"pdfjsSandbox\",\"QuickJSSandbox\",\"catch\",\"createSandbox\",\"dispatchEventInSandbox\",\"event\",\"dispatchEvent\",\"destroySandbox\",\"nukeSandbox\",\"initCom\",\"app\",\"Preferences\",\"localStorage\",\"setItem\",\"getItem\",\"ExternalServices\",\"MLManager\",\"guess\",\"AltTextManager\",\"boundUpdateUIState\",\"updateUIState\",\"boundSetPosition\",\"setPosition\",\"boundOnClick\",\"onClick\",\"currentEditor\",\"cancelButton\",\"dialog\",\"hasUsedPointer\",\"optionDescription\",\"optionDecorative\",\"overlayManager\",\"saveButton\",\"uiManager\",\"previousAltText\",\"svgElement\",\"rectElement\",\"telemetryData\",\"close\",\"preventDefault\",\"finish\",\"save\",\"register\",\"_elements\",\"createSVGElement\",\"#createSVGElement\",\"svgFactory\",\"svg\",\"defs\",\"append\",\"mask\",\"rect\",\"editAltText\",\"editor\",\"altText\",\"decorative\",\"altTextData\",\"checked\",\"removeEditListeners\",\"open\",\"ex\",\"#setPosition\",\"containerX\",\"containerY\",\"containerW\",\"containerH\",\"getBoundingClientRect\",\"innerWidth\",\"windowW\",\"innerHeight\",\"windowH\",\"dialogW\",\"dialogH\",\"getClientDimensions\",\"MARGIN\",\"isLTR\",\"direction\",\"xs\",\"xe\",\"ys\",\"ye\",\"#finish\",\"active\",\"#close\",\"_reportTelemetry\",\"alt_text_keyboard\",\"removeOnClickListeners\",\"addEditListeners\",\"altTextFinish\",\"#updateUIState\",\"disabled\",\"#save\",\"alt_text_description\",\"alt_text_edit\",\"alt_text_decorative\",\"#onClick\",\"detail\",\"#removeOnClickListeners\",\"destroy\",\"AnnotationEditorParams\",\"bindListeners\",\"#bindListeners\",\"editorFreeTextFontSize\",\"editorFreeTextColor\",\"editorInkColor\",\"editorInkThickness\",\"editorInkOpacity\",\"editorStampAddImage\",\"editorFreeHighlightThickness\",\"editorHighlightShowAll\",\"typeStr\",\"valueAsNumber\",\"details\",\"FREETEXT_SIZE\",\"FREETEXT_COLOR\",\"INK_COLOR\",\"INK_THICKNESS\",\"INK_OPACITY\",\"HIGHLIGHT_THICKNESS\",\"HIGHLIGHT_FREE\",\"HIGHLIGHT_SHOW_ALL\",\"PRECISION\",\"CaretBrowsingMode\",\"mainContainer\",\"toolBarHeight\",\"viewerContainer\",\"toolbarContainer\",\"isOnSameLine\",\"#isOnSameLine\",\"rect1\",\"rect2\",\"top1\",\"bot1\",\"mid1\",\"top2\",\"bot2\",\"mid2\",\"isUnderOver\",\"#isUnderOver\",\"isUp\",\"midY\",\"isVisible\",\"#isVisible\",\"getCaretPosition\",\"#getCaretPosition\",\"selection\",\"focusNode\",\"focusOffset\",\"range\",\"createRange\",\"setStart\",\"setEnd\",\"caretPositionFromPoint\",\"#caretPositionFromPoint\",\"startContainer\",\"offsetNode\",\"startOffset\",\"offset\",\"caretRangeFromPoint\",\"setCaretPositionHelper\",\"#setCaretPositionHelper\",\"caretX\",\"extend\",\"firstChild\",\"lastChild\",\"caretPosition\",\"parentElement\",\"elementsAtPoint\",\"elementsFromPoint\",\"savedVisibilities\",\"el\",\"visibility\",\"setCaretPosition\",\"#setCaretPosition\",\"newLineElement\",\"newLineElementRect\",\"getNodeOnNextPage\",\"#getNodeOnNextPage\",\"textLayer\",\"closest\",\"walker\",\"createTreeWalker\",\"NodeFilter\",\"SHOW_TEXT\",\"node\",\"moveCaret\",\"getSelection\",\"rangeCount\",\"focusElement\",\"Node\",\"currentNode\",\"focusRect\",\"nodeIterator\",\"previousSibling\",\"nextSibling\",\"lastNode\",\"addRange\",\"caretY\",\"elementRect\",\"download\",\"blobUrl\",\"click\",\"DownloadManager\",\"openBlobUrls\",\"WeakMap\",\"downloadUrl\",\"_options\",\"downloadData\",\"contentType\",\"createObjectURL\",\"Blob\",\"openOrDownloadData\",\"isPdfData\",\"viewerUrl\",\"encodeURIComponent\",\"revokeObjectURL\",\"blob\",\"OverlayManager\",\"overlays\",\"canForceClose\",\"showModal\",\"PasswordPrompt\",\"activeCapability\",\"updateCallback\",\"isViewerEmbedded\",\"submitButton\",\"_isViewerEmbedded\",\"verify\",\"e\",\"keyCode\",\"cancel\",\"passwordIncorrect\",\"INCORRECT_PASSWORD\",\"focus\",\"#verify\",\"password\",\"invokeCallback\",\"#cancel\",\"#invokeCallback\",\"setUpdateCallback\",\"TREEITEM_OFFSET_TOP\",\"TREEITEM_SELECTED_CLASS\",\"BaseTreeViewer\",\"_l10n\",\"_pdfDocument\",\"_lastToggleIsShow\",\"_currentTreeItem\",\"_dispatchEvent\",\"_bindLink\",\"_normalizeTextContent\",\"_addToggleButton\",\"hidden\",\"toggler\",\"className\",\"stopPropagation\",\"shiftKey\",\"shouldShowAll\",\"_toggleTreeItem\",\"prepend\",\"_toggleAllTreeItems\",\"_finishRendering\",\"fragment\",\"hasAnyNesting\",\"render\",\"_updateCurrentTreeItem\",\"treeItem\",\"_scrollToCurrentTreeItem\",\"firstElementChild\",\"scrollTo\",\"PDFAttachmentViewer\",\"downloadManager\",\"appendAttachment\",\"keepRenderedCapability\",\"_attachments\",\"_renderedCapability\",\"_pendingDispatchEvent\",\"attachmentsCount\",\"attachments\",\"createDocumentFragment\",\"item\",\"#appendAttachment\",\"renderedPromise\",\"CSS_CLASS_GRAB\",\"GrabToPan\",\"activate\",\"deactivate\",\"_onMouseDown\",\"onMouseDown\",\"_onMouseMove\",\"onMouseMove\",\"_endPan\",\"endPan\",\"overlay\",\"ignoreTarget\",\"matches\",\"#onMouseDown\",\"originalTarget\",\"tagName\",\"scrollLeftStart\",\"scrollTopStart\",\"clientXStart\",\"clientX\",\"clientYStart\",\"clientY\",\"focusedElement\",\"blur\",\"#onMouseMove\",\"buttons\",\"xDiff\",\"yDiff\",\"behavior\",\"#endPan\",\"PDFCursorTools\",\"prevActive\",\"addEventListeners\",\"switchTool\",\"activeTool\",\"tool\",\"disableActiveTool\",\"_handTool\",\"#addEventListeners\",\"presentationModeState\",\"enableActive\",\"disableActive\",\"DEFAULT_FIELD_CONTENT\",\"NON_METRIC_LOCALES\",\"US_PAGE_NAMES\",\"METRIC_PAGE_NAMES\",\"getPageName\",\"isPortrait\",\"pageNames\",\"PDFDocumentProperties\",\"fieldData\",\"fields\",\"closeButton\",\"fileNameLookup\",\"_fileNameLookup\",\"_currentPageNumber\",\"_pagesRotation\",\"_isNonMetricLocale\",\"_dataAvailableCapability\",\"updateUI\",\"fileName\",\"fileSize\",\"creationDate\",\"modificationDate\",\"pageSize\",\"isLinearized\",\"parseFileSize\",\"parseDate\",\"CreationDate\",\"ModDate\",\"getPage\",\"pdfPage\",\"parsePageSize\",\"parseLinearization\",\"IsLinearized\",\"Title\",\"author\",\"Author\",\"subject\",\"Subject\",\"keywords\",\"Keywords\",\"creator\",\"Creator\",\"producer\",\"Producer\",\"PDFFormatVersion\",\"pageCount\",\"linearized\",\"assign\",\"#reset\",\"#updateUI\",\"#parseFileSize\",\"kb\",\"mb\",\"size_mb\",\"toPrecision\",\"toLocaleString\",\"size_kb\",\"size_b\",\"#parsePageSize\",\"pageSizeInches\",\"sizeInches\",\"sizeMillimeters\",\"rawName\",\"exactMillimeters\",\"intMillimeters\",\"unit\",\"orientation\",\"#parseDate\",\"inputDate\",\"dateObject\",\"toDateObject\",\"date\",\"toLocaleDateString\",\"time\",\"toLocaleTimeString\",\"#parseLinearization\",\"CharacterType\",\"SPACE\",\"ALPHA_LETTER\",\"PUNCT\",\"HAN_LETTER\",\"KATAKANA_LETTER\",\"HIRAGANA_LETTER\",\"HALFWIDTH_KATAKANA_LETTER\",\"THAI_LETTER\",\"isAlphabeticalScript\",\"charCode\",\"isAscii\",\"isAsciiAlpha\",\"isAsciiDigit\",\"isAsciiSpace\",\"isHan\",\"isKatakana\",\"isHiragana\",\"isHalfwidthKatakana\",\"isThai\",\"getCharacterType\",\"NormalizeWithNFKC\",\"getNormalizeWithNFKC\",\"FindState\",\"FOUND\",\"NOT_FOUND\",\"PENDING\",\"FIND_TIMEOUT\",\"MATCH_SCROLL_OFFSET_TOP\",\"MATCH_SCROLL_OFFSET_LEFT\",\"CHARACTERS_TO_NORMALIZE\",\"DIACRITICS_EXCEPTION\",\"DIACRITICS_EXCEPTION_STR\",\"DIACRITICS_REG_EXP\",\"SPECIAL_CHARS_REG_EXP\",\"NOT_DIACRITIC_FROM_END_REG_EXP\",\"NOT_DIACRITIC_FROM_START_REG_EXP\",\"SYLLABLES_REG_EXP\",\"SYLLABLES_LENGTHS\",\"FIRST_CHAR_SYLLABLES_REG_EXP\",\"NFKC_CHARS_TO_NORMALIZE\",\"noSyllablesRegExp\",\"withSyllablesRegExp\",\"normalize\",\"syllablePositions\",\"len\",\"normalizationRegex\",\"toNormalizeWithNFKC\",\"CJK\",\"HKDiacritics\",\"regexp\",\"RegExp\",\"rawDiacriticsPositions\",\"normalized\",\"positions\",\"rawDiacriticsIndex\",\"syllableIndex\",\"shift\",\"shiftOrigin\",\"eol\",\"hasDiacritics\",\"p1\",\"p2\",\"p3\",\"p4\",\"p5\",\"p6\",\"p7\",\"p8\",\"replacement\",\"jj\",\"j\",\"charAt\",\"hasTrailingDashEOL\",\"endsWith\",\"newCharLen\",\"getOriginalIndex\",\"diffs\",\"pos\",\"end\",\"oldStart\",\"oldEnd\",\"oldLen\",\"PDFFindController\",\"updateMatchesCountOnProgress\",\"visitedPagesCount\",\"linkService\",\"_linkService\",\"_eventBus\",\"onIsPageVisible\",\"onFind\",\"onFindBarClose\",\"highlightMatches\",\"_highlightMatches\",\"pageMatches\",\"_pageMatches\",\"pageMatchesLength\",\"_pageMatchesLength\",\"selected\",\"_selected\",\"_firstPageCapability\",\"#onFind\",\"shouldDirtyMatch\",\"_dirtyMatch\",\"extractText\",\"findbarClosed\",\"pendingTimeout\",\"_findTimeout\",\"nextMatch\",\"highlightAll\",\"updateAllPages\",\"scrollMatchIntoView\",\"selectedLeft\",\"pageIndex\",\"matchIndex\",\"_scrollMatches\",\"matchIdx\",\"pageIdx\",\"_offset\",\"wrapped\",\"_extractTextPromises\",\"_pageContents\",\"_pageDiffs\",\"_hasDiacritics\",\"_matchesCountTotal\",\"_pagesToSearch\",\"_pendingFindMatches\",\"_resumePageIdx\",\"#query\",\"_rawQuery\",\"_normalizedQuery\",\"#shouldDirtyMatch\",\"newQuery\",\"prevQuery\",\"newType\",\"prevType\",\"isEntireWord\",\"#isEntireWord\",\"startIdx\",\"charCodeAt\",\"calculateRegExpMatch\",\"#calculateRegExpMatch\",\"entireWord\",\"pageContent\",\"matchesLength\",\"matchPos\",\"matchLen\",\"convertToRegExpString\",\"#convertToRegExpString\",\"matchDiacritics\",\"isUnicode\",\"trailingSpaces\",\"fromCharCode\",\"calculateMatch\",\"#calculateMatch\",\"caseSensitive\",\"reverse\",\"isUnicodePart\",\"queryPart\",\"flags\",\"updatePage\",\"nextPageMatch\",\"pageMatchesCount\",\"updateUIResultsCount\",\"#extractText\",\"deferred\",\"textOptions\",\"disableNormalization\",\"getTextContent\",\"strBuf\",\"textItem\",\"hasEOL\",\"#updatePage\",\"#updateAllPages\",\"#nextMatch\",\"previous\",\"findPrevious\",\"currentPageIndex\",\"numPageMatches\",\"updateMatch\",\"advanceOffsetPage\",\"matchesReady\",\"#matchesReady\",\"numMatches\",\"#nextPageMatch\",\"#advanceOffsetPage\",\"#updateMatch\",\"found\",\"#onFindBarClose\",\"requestMatchesCount\",\"#requestMatchesCount\",\"current\",\"total\",\"#updateUIResultsCount\",\"matchesCount\",\"rawQuery\",\"MATCHES_COUNT_LIMIT\",\"PDFFindBar\",\"resizeObserver\",\"ResizeObserver\",\"resizeObserverCallback\",\"opened\",\"toggleButton\",\"findField\",\"highlightAllCheckbox\",\"caseSensitiveCheckbox\",\"matchDiacriticsCheckbox\",\"entireWordCheckbox\",\"findMsg\",\"findResultsCount\",\"findPreviousButton\",\"findNextButton\",\"findPrev\",\"findMsgId\",\"status\",\"updateResultsCount\",\"#resizeObserverCallback\",\"findbarHeight\",\"inputContainerHeight\",\"HASH_CHANGE_TIMEOUT\",\"POSITION_UPDATED_THRESHOLD\",\"UPDATE_VIEWAREA_TIMEOUT\",\"getCurrentHash\",\"location\",\"PDFHistory\",\"eventAbortController\",\"_initialized\",\"_fingerprint\",\"_isPagesLoaded\",\"initialize\",\"fingerprint\",\"resetHistory\",\"updateUrl\",\"reInitialized\",\"_updateUrl\",\"bindEvents\",\"history\",\"_popStateInProgress\",\"_blockHashChange\",\"_currentHash\",\"_numPositionUpdates\",\"_uid\",\"_maxUid\",\"_destination\",\"_position\",\"isValidState\",\"parseCurrentHash\",\"pushOrReplaceState\",\"destination\",\"updateInternalState\",\"uid\",\"_initialRotation\",\"_initialBookmark\",\"pageHide\",\"unbindEvents\",\"_updateViewareaTimeout\",\"isValidPage\",\"forceReplace\",\"isDestHashesEqual\",\"isDestArraysEqual\",\"tryPushCurrentPosition\",\"popStateInProgress\",\"initialBookmark\",\"initialRotation\",\"#pushOrReplaceState\",\"shouldReplace\",\"newState\",\"newUrl\",\"replaceState\",\"pushState\",\"#tryPushCurrentPosition\",\"temporary\",\"position\",\"#isValidPage\",\"#isValidState\",\"checkReload\",\"perfEntry\",\"performance\",\"getEntriesByType\",\"#updateInternalState\",\"removeTemporary\",\"#parseCurrentHash\",\"checkNameddest\",\"substring\",\"nameddest\",\"updateViewarea\",\"#updateViewarea\",\"pdfOpenParams\",\"popState\",\"#popState\",\"newHash\",\"hashChanged\",\"#pageHide\",\"#bindEvents\",\"#unbindEvents\",\"destHash\",\"pushHash\",\"firstDest\",\"secondDest\",\"isEntryEqual\",\"second\",\"PDFLayerViewer\",\"updateLayers\",\"_optionalContentConfig\",\"_optionalContentHash\",\"layersCount\",\"groupId\",\"setVisibility\",\"getHash\",\"_setNestedName\",\"fontStyle\",\"groups\",\"getOrder\",\"queue\",\"levelData\",\"itemsDiv\",\"order\",\"group\",\"getGroup\",\"#updateLayers\",\"getOptionalContentConfig\",\"intent\",\"PDFOutlineViewer\",\"_currentOutlineItem\",\"_currentOutlineItemCapability\",\"_sidebarView\",\"_outline\",\"_pageNumberToDestHashCapability\",\"outlineCount\",\"loadingParams\",\"currentOutlineItemPromise\",\"attachment\",\"_setStyles\",\"bold\",\"italic\",\"fontWeight\",\"totalCount\",\"nestedCount\",\"nestedItems\",\"outline\",\"pageNumberToDestHash\",\"_getPageNumberToDestHash\",\"linkElement\",\"pageNumberNesting\",\"nesting\",\"currentNesting\",\"DELAY_BEFORE_HIDING_CONTROLS\",\"ACTIVE_SELECTOR\",\"CONTROLS_SELECTOR\",\"MOUSE_SCROLL_COOLDOWN_TIME\",\"PAGE_SWITCH_THRESHOLD\",\"SWIPE_MIN_DISTANCE_THRESHOLD\",\"SWIPE_ANGLE_THRESHOLD\",\"PDFPresentationMode\",\"fullscreenChangeAbortController\",\"windowAbortController\",\"contextMenuOpen\",\"mouseScrollTimeStamp\",\"mouseScrollDelta\",\"touchSwipeState\",\"request\",\"requestFullscreen\",\"addFullscreenChangeListeners\",\"notifyStateChange\",\"scaleValue\",\"currentScaleValue\",\"pageViewsReady\",\"hasEqualPageSizes\",\"removeFullscreenChangeListeners\",\"mouseWheel\",\"#mouseWheel\",\"currentTime\",\"now\",\"storedTime\",\"resetMouseScrollState\",\"totalDelta\",\"success\",\"#notifyStateChange\",\"enter\",\"#enter\",\"addWindowListeners\",\"showControls\",\"empty\",\"exit\",\"#exit\",\"removeWindowListeners\",\"hideControls\",\"mouseDown\",\"#mouseDown\",\"contextMenu\",\"#contextMenu\",\"#showControls\",\"controlsTimeout\",\"#hideControls\",\"#resetMouseScrollState\",\"touchSwipe\",\"#touchSwipe\",\"touches\",\"startX\",\"pageX\",\"startY\",\"pageY\",\"endX\",\"endY\",\"dx\",\"dy\",\"absAngle\",\"#addWindowListeners\",\"touchSwipeBind\",\"passive\",\"#removeWindowListeners\",\"#addFullscreenChangeListeners\",\"fullscreenElement\",\"#removeFullscreenChangeListeners\",\"XfaLayerBuilder\",\"annotationStorage\",\"xfaHtml\",\"_cancelled\",\"viewport\",\"parameters\",\"dontFlip\",\"getXfa\",\"textDivs\",\"update\",\"getXfaHtmlForPrinting\",\"printContainer\",\"allXfaHtml\",\"scale\",\"PDF_TO_CSS_UNITS\",\"xfaPage\",\"children\",\"builder\",\"activeService\",\"viewerApp\",\"initialized\",\"renderPage\",\"activeServiceOnEntry\",\"printAnnotationStoragePromise\",\"scratchCanvas\",\"PRINT_UNITS\",\"PDF\",\"ctx\",\"getContext\",\"fillStyle\",\"fillRect\",\"restore\",\"printAnnotationStorage\",\"renderContext\",\"canvasContext\",\"getViewport\",\"ENABLE_STORAGE\",\"renderTask\",\"PDFPrintService\",\"pagesOverview\",\"_printResolution\",\"_optionalContentConfigPromise\",\"_printAnnotationStoragePromise\",\"currentPage\",\"throwIfInactive\",\"every\",\"pageStyleSheet\",\"ensureOverlay\",\"renderPages\",\"isPureXfa\",\"renderNextPage\",\"renderProgress\",\"useRenderedPage\",\"toBlob\",\"src\",\"toDataURL\",\"wrapper\",\"onload\",\"onerror\",\"performPrint\",\"print\",\"eventType\",\"CustomEvent\",\"bubbles\",\"cancelable\",\"getElementById\",\"progress\",\"progressBar\",\"progressPerc\",\"ctrlKey\",\"metaKey\",\"altKey\",\"chrome\",\"opera\",\"stopImmediatePropagation\",\"stopPropagationIfNeeded\",\"overlayPromise\",\"PDFPrintServiceFactory\",\"initGlobals\",\"supportsPrinting\",\"createPrintService\",\"CLEANUP_TIMEOUT\",\"PDFRenderingQueue\",\"pdfThumbnailViewer\",\"onIdle\",\"highestPriorityPage\",\"idleTimeout\",\"printing\",\"isThumbnailViewEnabled\",\"defineProperty\",\"setThumbnailViewer\",\"isHighestPriority\",\"renderingId\",\"renderHighestPriority\",\"currentlyVisiblePages\",\"forceRendering\",\"getHighestPriority\",\"scrolledDown\",\"preRenderExtra\",\"visibleViews\",\"numVisible\",\"isViewFinished\",\"firstId\",\"lastId\",\"visibleIds\",\"holeId\",\"holeView\",\"preRenderIndex\",\"preRenderView\",\"renderingState\",\"renderView\",\"draw\",\"finally\",\"PDFScriptingManager\",\"closeCapability\",\"destroyCapability\",\"externalServices\",\"ready\",\"scripting\",\"willPrintCapability\",\"destroyScripting\",\"objects\",\"calculationOrder\",\"docActions\",\"getFieldObjects\",\"getCalculationOrderIds\",\"getJSActions\",\"initScripting\",\"updateFromSandbox\",\"dispatchPageClose\",\"dispatchPageOpen\",\"_pageOpenPending\",\"appInfo\",\"docInfo\",\"actions\",\"dispatchWillSave\",\"dispatchDidSave\",\"dispatchWillPrint\",\"dispatchDidPrint\",\"destroyPromise\",\"_visitedPages\",\"#updateFromSandbox\",\"isChangingPresentationMode\",\"siblings\",\"command\",\"modes\",\"pagesPromise\",\"log\",\"increaseScale\",\"decreaseScale\",\"elementId\",\"setValue\",\"#dispatchPageOpen\",\"visitedPages\",\"pageView\",\"getPageView\",\"actionsPromise\",\"#dispatchPageClose\",\"#initScripting\",\"#destroyScripting\",\"race\",\"SIDEBAR_WIDTH_VAR\",\"SIDEBAR_MIN_WIDTH\",\"SIDEBAR_RESIZING_CLASS\",\"UI_NOTIFICATION_CLASS\",\"PDFSidebar\",\"mouseMoveBound\",\"mouseMove\",\"mouseUpBound\",\"mouseUp\",\"outerContainerWidth\",\"isOpen\",\"isInitialViewSet\",\"isInitialEventDispatched\",\"onToggled\",\"onUpdateThumbnails\",\"outerContainer\",\"sidebarContainer\",\"resizer\",\"thumbnailButton\",\"outlineButton\",\"attachmentsButton\",\"layersButton\",\"thumbnailView\",\"outlineView\",\"attachmentsView\",\"layersView\",\"_currentOutlineItemButton\",\"currentOutlineItemButton\",\"hideUINotification\",\"switchView\",\"visibleView\",\"setInitialView\",\"forceOpen\",\"isViewChanged\",\"#dispatchEvent\",\"showUINotification\",\"#showUINotification\",\"#hideUINotification\",\"onTreeLoaded\",\"enabled\",\"updateWidth\",\"updated\",\"#updateWidth\",\"maxWidth\",\"#mouseMove\",\"#mouseUp\",\"DRAW_UPSCALE_FACTOR\",\"MAX_NUM_SCALING_STEPS\",\"THUMBNAIL_WIDTH\",\"TempImageFactory\",\"tempCanvas\",\"getCanvas\",\"alpha\",\"destroyCanvas\",\"PDFThumbnailView\",\"defaultViewport\",\"renderingQueue\",\"pageColors\",\"pageLabel\",\"pdfPageRotate\",\"pageL10nArgs\",\"updateDims\",\"_placeholderImg\",\"#updateDims\",\"ratio\",\"canvasWidth\",\"canvasHeight\",\"setPdfPage\",\"totalRotation\",\"cancelRendering\",\"image\",\"replaceWith\",\"getPageDrawContext\",\"#getPageDrawContext\",\"upscaleFactor\",\"canvas\",\"outputScale\",\"convertCanvasToImage\",\"#convertCanvasToImage\",\"reducedCanvas\",\"reduceImage\",\"finishRenderTask\",\"#finishRenderTask\",\"drawViewport\",\"renderContinueCallback\",\"cont\",\"onContinue\",\"resultPromise\",\"setImage\",\"thumbnailCanvas\",\"#reduceImage\",\"drawImage\",\"reducedWidth\",\"reducedHeight\",\"reducedImage\",\"reducedImageCtx\",\"#pageL10nArgs\",\"setPageLabel\",\"THUMBNAIL_SCROLL_MARGIN\",\"THUMBNAIL_SELECTED_CLASS\",\"PDFThumbnailViewer\",\"scroll\",\"scrollUpdated\",\"resetView\",\"#scrollUpdated\",\"getThumbnail\",\"_thumbnails\",\"getVisibleThumbs\",\"#getVisibleThumbs\",\"scrollThumbnailIntoView\",\"prevThumbnailView\",\"shouldScroll\",\"updateArgs\",\"thumbnail\",\"cleanup\",\"#resetView\",\"_pageLabels\",\"firstPagePromise\",\"firstPdfPage\",\"pageNum\",\"#cancelRendering\",\"setPageLabels\",\"labels\",\"ensurePdfPageLoaded\",\"#ensurePdfPageLoaded\",\"thumbView\",\"getScrollAhead\",\"#getScrollAhead\",\"visibleThumbs\",\"scrollAhead\",\"AnnotationEditorLayerBuilder\",\"annotationLayer\",\"drawLayer\",\"onAppend\",\"accessibilityManager\",\"annotationEditorLayer\",\"clonedViewport\",\"annotations\",\"isInvisible\",\"AnnotationLayerBuilder\",\"renderForms\",\"hasJSActionsPromise\",\"fieldObjectsPromise\",\"annotationCanvasMap\",\"annotationEditorUIManager\",\"_hasJSActionsPromise\",\"_fieldObjectsPromise\",\"_annotationCanvasMap\",\"_accessibilityManager\",\"_annotationEditorUIManager\",\"hasJSActions\",\"fieldObjects\",\"getAnnotations\",\"updatePresentationModeState\",\"#updatePresentationModeState\",\"disableFormElements\",\"section\",\"inert\",\"DrawLayerBuilder\",\"setParent\",\"getDrawLayer\",\"PDF_ROLE_TO_HTML_ROLE\",\"Document\",\"DocumentFragment\",\"Part\",\"Sect\",\"Div\",\"Aside\",\"NonStruct\",\"P\",\"H\",\"FENote\",\"Sub\",\"Lbl\",\"Span\",\"Em\",\"Strong\",\"Link\",\"Annot\",\"Form\",\"Ruby\",\"RB\",\"RT\",\"RP\",\"Warichu\",\"WT\",\"WP\",\"L\",\"LI\",\"LBody\",\"Table\",\"TR\",\"TH\",\"TD\",\"THead\",\"TBody\",\"TFoot\",\"Caption\",\"Figure\",\"Formula\",\"Artifact\",\"HEADING_PATTERN\",\"StructTreeLayerBuilder\",\"treeDom\",\"renderingDone\",\"structTree\",\"walk\",\"#setAttributes\",\"structElement\",\"htmlElement\",\"alt\",\"#walk\",\"role\",\"kid\",\"TextAccessibilityManager\",\"textChildren\",\"textNodes\",\"waitingElements\",\"setTextMapping\",\"compareElementPositions\",\"#compareElementPositions\",\"e1\",\"e2\",\"centerX1\",\"centerX2\",\"enable\",\"nodeIndex\",\"addIdToAriaOwns\",\"isRemovable\",\"addPointerInTextLayer\",\"disable\",\"removePointerInTextLayer\",\"owns\",\"#addIdToAriaOwns\",\"child\",\"moveElementInDOM\",\"contentElement\",\"hasChildNodes\",\"elementToCompare\",\"before\",\"after\",\"TextHighlighter\",\"findController\",\"textContentItemsStr\",\"divs\",\"texts\",\"_updateMatches\",\"_convertMatches\",\"iIndex\",\"mm\",\"begin\",\"divIdx\",\"_renderMatches\",\"isSelectedPage\",\"selectedMatchIdx\",\"prevEnd\",\"infinity\",\"beginText\",\"appendTextToDiv\",\"fromOffset\",\"toOffset\",\"span\",\"i0\",\"i1\",\"lastDivIdx\",\"lastOffset\",\"isSelected\",\"highlightSuffix\",\"n0\",\"n1\",\"clearedUntilDivIdx\",\"n\",\"TextLayerBuilder\",\"textLayers\",\"selectionChangeAbortController\",\"highlighter\",\"tabIndex\",\"finishRendering\",\"#finishRendering\",\"endOfContent\",\"bindMouse\",\"textContentParams\",\"onBefore\",\"textContentSource\",\"streamTextContent\",\"includeMarkedContent\",\"removeGlobalSelectionListener\",\"#bindMouse\",\"clipboardData\",\"setData\",\"enableGlobalSelectionListener\",\"#removeGlobalSelectionListener\",\"textLayerDiv\",\"#enableGlobalSelectionListener\",\"isFirefox\",\"prevRange\",\"activeTextLayers\",\"getRangeAt\",\"intersectsNode\",\"endDiv\",\"getPropertyValue\",\"modifyStart\",\"compareBoundaryPoints\",\"Range\",\"END_TO_END\",\"START_TO_END\",\"endContainer\",\"parentTextLayer\",\"insertBefore\",\"cloneRange\",\"DEFAULT_LAYER_PROPERTIES\",\"LAYERS_ORDER\",\"PDFPageView\",\"ENABLE_FORMS\",\"hasRestrictedScaling\",\"layerProperties\",\"loadingId\",\"previousRotation\",\"renderError\",\"useThumbnailCanvas\",\"directDrawing\",\"initialOptionalContent\",\"regularAnnotations\",\"viewportMap\",\"layers\",\"_isStandalone\",\"hasViewer\",\"_container\",\"zoomLayer\",\"xfaLayer\",\"structTreeLayer\",\"setDimensions\",\"hasInitialVisibility\",\"addLayer\",\"#addLayer\",\"oldDiv\",\"layer\",\"#setDimensions\",\"foreground\",\"background\",\"filterFactory\",\"addHighlightHCMFilter\",\"_textHighlighter\",\"dispatchLayerRendered\",\"#dispatchLayerRendered\",\"renderAnnotationLayer\",\"#renderAnnotationLayer\",\"renderAnnotationEditorLayer\",\"#renderAnnotationEditorLayer\",\"renderDrawLayer\",\"#renderDrawLayer\",\"renderXfaLayer\",\"#renderXfaLayer\",\"buildXfaTextContentItems\",\"#renderTextLayer\",\"renderStructTreeLayer\",\"#renderStructTreeLayer\",\"tree\",\"getStructTree\",\"#buildXfaTextContentItems\",\"_resetZoomLayer\",\"removeFromDOM\",\"zoomLayerCanvas\",\"keepZoomLayer\",\"keepAnnotationLayer\",\"keepAnnotationEditorLayer\",\"keepXfaLayer\",\"keepTextLayer\",\"zoomLayerNode\",\"annotationLayerNode\",\"annotationEditorLayerNode\",\"xfaLayerNode\",\"textLayerNode\",\"layerIndex\",\"indexOf\",\"drawingDelay\",\"onlyCssZoom\",\"postponeDrawing\",\"cancelExtraDelay\",\"cssTransform\",\"redrawAnnotationLayer\",\"redrawAnnotationEditorLayer\",\"redrawXfaLayer\",\"redrawTextLayer\",\"hideTextLayer\",\"timestamp\",\"originalViewport\",\"relativeRotation\",\"absRotation\",\"scaleX\",\"scaleY\",\"getPagePoint\",\"convertToPdfPoint\",\"separateAnnots\",\"canvasWrapper\",\"annotationLayerDiv\",\"showCanvas\",\"hasHCM\",\"isLastShow\",\"invScale\",\"pixelsInViewport\",\"maxScale\",\"sqrt\",\"sfx\",\"sfy\",\"annotationEditorLayerDiv\",\"DEFAULT_CACHE_SIZE\",\"PagesCountLimit\",\"FORCE_SCROLL_MODE_PAGE\",\"FORCE_LAZY_PAGE_INIT\",\"PAUSE_EAGER_PAGE_INIT\",\"isValidAnnotationEditorMode\",\"PDFPageViewBuffer\",\"buf\",\"destroyFirstView\",\"resize\",\"newSize\",\"idsToKeep\",\"#destroyFirstView\",\"firstView\",\"PDFViewer\",\"buffer\",\"altTextManager\",\"annotationEditorHighlightColors\",\"containerTopLeft\",\"mlManager\",\"getAllTextInProgress\",\"hiddenCopyElement\",\"interruptCopyCondition\",\"previousContainerHeight\",\"scrollModePageState\",\"scaleTimeoutId\",\"viewerVersion\",\"_getVisiblePages\",\"_scriptingManager\",\"scriptingManager\",\"removePageBorders\",\"defaultRenderingQueue\",\"_scrollUpdate\",\"_resetView\",\"updateContainerHeightCss\",\"_pages\",\"getCachedPageViews\",\"_setCurrentPageNumber\",\"resetCurrentPageView\",\"currentPageLabel\",\"currentScale\",\"_currentScale\",\"setScale\",\"noScroll\",\"_currentScaleValue\",\"refresh\",\"onePageRendered\",\"_onePageRenderedCapability\",\"_pagesCapability\",\"_layerProperties\",\"self\",\"initializePermissions\",\"#initializePermissions\",\"permissions\",\"COPY\",\"MODIFY_CONTENTS\",\"MODIFY_ANNOTATIONS\",\"FILL_INTERACTIVE_FORMS\",\"onePageRenderedOrForceFetch\",\"#onePageRenderedOrForceFetch\",\"visibilityState\",\"hiddenCapability\",\"onVisibilityChange\",\"getAllText\",\"copyCallback\",\"#copyCallback\",\"anchorNode\",\"containsNode\",\"savedCursor\",\"interruptCopy\",\"ev\",\"clipboard\",\"writeText\",\"_cancelRendering\",\"permissionsPromise\",\"getPermissions\",\"_scrollMode\",\"onBeforeDraw\",\"onAfterDraw\",\"updateMode\",\"viewerElement\",\"ensurePageViewVisible\",\"_spreadMode\",\"_updateSpreadMode\",\"getPagesLeft\",\"Language\",\"_location\",\"_previousScrollMode\",\"previousPageNumber\",\"scrollDown\",\"pages\",\"_updateScrollMode\",\"#ensurePageViewVisible\",\"pageIndexSet\",\"parity\",\"spread\",\"dummyPage\",\"#scrollIntoView\",\"pageSpot\",\"isSameScale\",\"#isSameScale\",\"newScale\",\"setScaleUpdatePages\",\"#setScaleUpdatePages\",\"newValue\",\"preset\",\"origin\",\"presetValue\",\"previousScale\",\"scaleDiff\",\"pageWidthScaleFactor\",\"#pageWidthScaleFactor\",\"#setScale\",\"hPadding\",\"vPadding\",\"pageWidthScale\",\"pageHeightScale\",\"horizontalScale\",\"#resetCurrentPageView\",\"widthScale\",\"heightScale\",\"pageWidth\",\"pageHeight\",\"boundingRect\",\"convertToViewportPoint\",\"_updateLocation\",\"firstPage\",\"normalizedScaleValue\",\"currentPageView\",\"topLeft\",\"intLeft\",\"intTop\",\"visiblePages\",\"numVisiblePages\",\"newCacheSize\",\"isSimpleLayout\",\"currentId\",\"stillFullyVisible\",\"containsElement\",\"_isContainerRtl\",\"isHorizontalScrollbarEnabled\",\"isVerticalScrollbarEnabled\",\"firstPageView\",\"getPagesOverview\",\"initialOrientation\",\"_getPageAdvance\",\"pageLayout\",\"yArray\",\"expectedId\",\"advance\",\"updateScale\",\"scaleFactor\",\"steps\",\"ceil\",\"toFixed\",\"#updateContainerHeightCss\",\"borderBoxSize\",\"blockSize\",\"editId\",\"isFromKeyboard\",\"annotationEditorParams\",\"updateParams\",\"noUpdate\",\"SecondaryToolbar\",\"presentationModeButton\",\"printButton\",\"downloadButton\",\"viewBookmarkButton\",\"firstPageButton\",\"lastPageButton\",\"pageRotateCwButton\",\"pageRotateCcwButton\",\"cursorSelectToolButton\",\"eventDetails\",\"cursorHandToolButton\",\"scrollPageButton\",\"scrollVerticalButton\",\"scrollHorizontalButton\",\"scrollWrappedButton\",\"spreadNoneButton\",\"spreadOddButton\",\"spreadEvenButton\",\"documentPropertiesButton\",\"openFileButton\",\"setPageNumber\",\"setPagesCount\",\"scrollModeChanged\",\"spreadModeChanged\",\"cursorToolChanged\",\"#cursorToolChanged\",\"#scrollModeChanged\",\"forceScrollModePage\",\"isHorizontal\",\"#spreadModeChanged\",\"toolbar\",\"Toolbar\",\"zoomIn\",\"zoomOut\",\"editorFreeTextButton\",\"FREETEXT\",\"editorHighlightButton\",\"HIGHLIGHT\",\"editorInkButton\",\"INK\",\"editorStampButton\",\"STAMP\",\"editorHighlightColorPicker\",\"setAnnotationEditorUIManager\",\"#setAnnotationEditorUIManager\",\"parentContainer\",\"colorPicker\",\"setMainHighlightColorPicker\",\"renderMainDropdown\",\"hasPageLabels\",\"setPageScale\",\"pageScaleValue\",\"pageScale\",\"updateLoadingIndicatorState\",\"editorModeChanged\",\"scaleSelect\",\"toUpperCase\",\"oncontextmenu\",\"#editorModeChanged\",\"editorFreeTextParamsToolbar\",\"editorHighlightParamsToolbar\",\"editorInkParamsToolbar\",\"editorStampParamsToolbar\",\"isDisable\",\"resetNumPages\",\"predefinedValueFound\",\"customScaleOption\",\"loading\",\"DEFAULT_VIEW_HISTORY_CACHE_SIZE\",\"ViewHistory\",\"cacheSize\",\"_initializedPromise\",\"databaseStr\",\"database\",\"files\",\"branch\",\"file\",\"setMultiple\",\"properties\",\"getMultiple\",\"FORCE_PAGES_LOADED_TIMEOUT\",\"WHEEL_ZOOM_DISABLED_TIMEOUT\",\"ViewOnLoad\",\"PREVIOUS\",\"PDFViewerApplication\",\"_initializedCapability\",\"settled\",\"appConfig\",\"pdfLoadingTask\",\"printService\",\"pdfRenderingQueue\",\"pdfPresentationMode\",\"pdfDocumentProperties\",\"pdfLinkService\",\"pdfSidebar\",\"pdfOutlineViewer\",\"pdfAttachmentViewer\",\"pdfLayerViewer\",\"pdfCursorTools\",\"pdfScriptingManager\",\"store\",\"preferences\",\"secondaryToolbar\",\"downloadComplete\",\"_downloadUrl\",\"_eventBusAbortController\",\"_windowAbortController\",\"documentInfo\",\"_contentDispositionFilename\",\"_contentLength\",\"_saveInProgress\",\"_wheelUnusedTicks\",\"_wheelUnusedFactor\",\"_touchUnusedTicks\",\"_touchUnusedFactor\",\"_PDFBug\",\"_hasAnnotationEditors\",\"_title\",\"_touchInfo\",\"_isCtrlKeyDown\",\"_nimbusDataPromise\",\"_caretBrowsing\",\"_isScrolling\",\"l10nPromise\",\"_parseHashParams\",\"getElementsByTagName\",\"appContainer\",\"_initializeViewerComponents\",\"bindWindowEvents\",\"loadPDFBug\",\"PDFBug\",\"loadCSS\",\"_cleanup\",\"_scriptingDocProperties\",\"matchMedia\",\"altTextDialog\",\"sidebar\",\"findBar\",\"documentProperties\",\"_docFilename\",\"supportsFullscreen\",\"passwordOverlay\",\"passwordPrompt\",\"run\",\"config\",\"queryString\",\"search\",\"validateFileURL\",\"fileInput\",\"_openFileInput\",\"dataTransfer\",\"dropEffect\",\"effectAllowed\",\"msg\",\"viewFind\",\"_hideViewBookmark\",\"updateZoom\",\"zoomReset\",\"fullscreenEnabled\",\"loadingBar\",\"barElement\",\"setTitleUsingUrl\",\"decodeURIComponent\",\"setTitle\",\"editorIndicator\",\"_unblockDocumentLoadEvent\",\"_annotationStorageModified\",\"promises\",\"workerParams\",\"originalUrl\",\"apiParams\",\"loadingTask\",\"onPassword\",\"onProgress\",\"loaded\",\"load\",\"_documentError\",\"_ensureDownloadComplete\",\"getData\",\"saveDocument\",\"stats\",\"editorStats\",\"downloadOrSave\",\"moreInfo\",\"_otherError\",\"moreInfoText\",\"stack\",\"lineNumber\",\"level\",\"pageLayoutPromise\",\"getPageLayout\",\"pageModePromise\",\"getPageMode\",\"openActionPromise\",\"getOpenAction\",\"storedPromise\",\"fingerprints\",\"sidebarView\",\"_initializeAnnotationStorageCallbacks\",\"timeStamp\",\"stored\",\"pageMode\",\"openAction\",\"_initializePdfHistory\",\"initialDest\",\"_initializeAutoPrint\",\"getOutline\",\"getAttachments\",\"_initializePageLabels\",\"_initializeMetadata\",\"jsActions\",\"triggerAutoPrint\",\"some\",\"js\",\"triggerPrinting\",\"pdfTitle\",\"metadataTitle\",\"IsXFAPresent\",\"IsAcroFormPresent\",\"IsSignaturesPresent\",\"getPageLabels\",\"numLabels\",\"standardLabels\",\"emptyLabels\",\"onSetModified\",\"beforeUnload\",\"onResetModified\",\"onAnnotationEditor\",\"storedHash\",\"setRotation\",\"setViewerModes\",\"beforePrint\",\"alert\",\"afterPrint\",\"resetModified\",\"rotatePages\",\"requestPresentationMode\",\"webViewerResize\",\"webViewerHashchange\",\"webViewerPageRender\",\"webViewerPageRendered\",\"webViewerUpdateViewarea\",\"webViewerPageChanging\",\"webViewerScaleChanging\",\"webViewerRotationChanging\",\"webViewerSidebarViewChanged\",\"webViewerPageMode\",\"webViewerNamedAction\",\"webViewerPresentationModeChanged\",\"webViewerPresentationMode\",\"webViewerSwitchAnnotationEditorMode\",\"webViewerSwitchAnnotationEditorParams\",\"webViewerPrint\",\"webViewerDownload\",\"webViewerFirstPage\",\"webViewerLastPage\",\"webViewerNextPage\",\"webViewerPreviousPage\",\"webViewerZoomIn\",\"webViewerZoomOut\",\"webViewerZoomReset\",\"webViewerPageNumberChanged\",\"webViewerScaleChanged\",\"webViewerRotateCw\",\"webViewerRotateCcw\",\"webViewerOptionalContentConfig\",\"webViewerSwitchScrollMode\",\"webViewerScrollModeChanged\",\"webViewerSwitchSpreadMode\",\"webViewerSpreadModeChanged\",\"webViewerDocumentProperties\",\"webViewerFindFromUrlHash\",\"webViewerUpdateFindMatchesCount\",\"webViewerUpdateFindControlState\",\"webViewerFileInputChange\",\"webViewerOpenFile\",\"addWindowResolutionChange\",\"webViewerResolutionChange\",\"mediaQueryList\",\"webViewerVisibilityChange\",\"webViewerWheel\",\"webViewerTouchStart\",\"webViewerTouchMove\",\"webViewerTouchEnd\",\"webViewerClick\",\"webViewerKeyDown\",\"webViewerKeyUp\",\"_lastScrollTop\",\"_lastScrollLeft\",\"scrollend\",\"unbindWindowEvents\",\"_accumulateTicks\",\"ticks\",\"prop\",\"wholeTicks\",\"trunc\",\"_accumulateFactor\",\"factor\",\"newFactor\",\"blockUnblockOnload\",\"scriptingReady\",\"HOSTED_VIEWER_ORIGINS\",\"viewerOrigin\",\"fileOrigin\",\"setZoomDisabledTimeout\",\"zoomDisabledTimeout\",\"exp\",\"isBuiltInMac\",\"isPinchToZoom\",\"deltaZ\",\"DOM_DELTA_PAGE\",\"sign\",\"PIXELS_PER_LINE_SCALE\",\"touch0\",\"touch1\",\"identifier\",\"touch0X\",\"touch0Y\",\"touch1X\",\"touch1Y\",\"page0X\",\"page0Y\",\"page1X\",\"page1Y\",\"pTouch0X\",\"pTouch0Y\",\"pTouch1X\",\"pTouch1Y\",\"v1X\",\"v1Y\",\"v2X\",\"v2Y\",\"det\",\"diff0X\",\"diff1X\",\"diff0Y\",\"diff1Y\",\"dotProduct\",\"distance\",\"pDistance\",\"newScaleFactor\",\"isViewerInPresentationMode\",\"handled\",\"ensureViewerFocused\",\"cmd\",\"curElement\",\"curElementTagName\",\"isContentEditable\",\"turnPage\",\"turnOnlyIfPageFit\",\"returnValue\",\"webViewerAnnotationEditorStatesChanged\",\"webViewerReportTelemetry\",\"pdfjsVersion\",\"pdfjsBuild\",\"AppConstants\",\"PDFViewerApplicationConstants\",\"PDFViewerApplicationOptions\",\"getViewerConfiguration\",\"webViewerLoad\",\"readyState\"],\"sourceRoot\":\"\"}\n\\ No newline at end of file\n+{\"version\":3,\"file\":\"viewer.js\",\"mappings\":\"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\u002FC,eAAe,mBAAO,CAAC,IAAwB;AAC\u002FC,kBAAkB,mBAAO,CAAC,IAA4B;AACtD,4BAA4B,mBAAO,CAAC,IAAuC;AAC3E,wBAAwB,mBAAO,CAAC,IAAmC;AACnE,oBAAoB,mBAAO,CAAC,IAAqC;AACjE,kBAAkB,mBAAO,CAAC,EAA2B;AACrD,wBAAwB,mBAAO,CAAC,GAAkC;AAClE,oBAAoB,mBAAO,CAAC,IAA6B;;AAEzD;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,4DAA4D,gBAAgB;AAC5E;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,IAAI;AACJ;;;;;;;;ACpEa;AACb,WAAW,mBAAO,CAAC,IAA4B;AAC\u002FC,eAAe,mBAAO,CAAC,EAAwB;AAC\u002FC,eAAe,mBAAO,CAAC,GAAwB;AAC\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\u002FC,WAAW,mBAAO,CAAC,IAA4B;AAC\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IAA0B;;AAEnD;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,0BAA0B,SAAS,eAAe;AAClD,8BAA8B;AAC9B,KAAK;AACL,IAAI;AACJ;AACA;AACA;;AAEA;AACA;;;;;;;;ACtBa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,cAAc;;;;;;;;ACflB;AACb,oBAAoB,mBAAO,CAAC,IAA8B;AAC1D,kBAAkB,mBAAO,CAAC,IAAoC;AAC9D,eAAe,mBAAO,CAAC,GAAwB;AAC\u002FC,8BAA8B,mBAAO,CAAC,IAAwC;;AAE9E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC,sBAAsB,kBAAkB;AACxC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,GAAG,IAAI,gCAAgC;AACvC;;;;;;;;AChDa;AACb,QAAQ,mBAAO,CAAC,IAAqB;AACrC,iCAAiC,mBAAO,CAAC,IAAqC;;AAE9E;AACA;AACA,IAAI,+BAA+B;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;ACfY;AACb,kBAAkB,mBAAO,CAAC,IAA0B;AACpD,2BAA2B,mBAAO,CAAC,IAAqC;AACxE,+BAA+B,mBAAO,CAAC,IAAyC;;AAEhF;AACA;AACA;AACA;;;;;;;;ACRa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;;;;;;;ACXa;AACb,kBAAkB,mBAAO,CAAC,IAA0B;AACpD,qBAAqB,mBAAO,CAAC,IAA6B;AAC1D,8BAA8B,mBAAO,CAAC,IAAsC;AAC5E,eAAe,mBAAO,CAAC,IAAwB;AAC\u002FC,oBAAoB,mBAAO,CAAC,IAA8B;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,IAAI,gBAAgB;AACpB;AACA;AACA;AACA;;;;;;;;AC3Ca;AACb,iBAAiB,mBAAO,CAAC,IAA2B;;AAEpD;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;;;;;;;AC3Da;AACb,QAAQ,mBAAO,CAAC,IAAqB;AACrC,0BAA0B,mBAAO,CAAC,IAAuC;AACzE,6BAA6B,mBAAO,CAAC,IAAyC;;AAE9E;AACA;AACA,IAAI,gGAAgG;AACpG;AACA,CAAC;;;;;;;;ACTY;AACb,iBAAiB,mBAAO,CAAC,IAA2B;AACpD,kBAAkB,mBAAO,CAAC,IAAoC;AAC9D,gCAAgC,mBAAO,CAAC,IAA4C;AACpF,kCAAkC,mBAAO,CAAC,IAA8C;AACxF,eAAe,mBAAO,CAAC,IAAwB;;AAE\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\u002FC,iBAAiB,mBAAO,CAAC,IAA0B;AACnD,eAAe,mBAAO,CAAC,EAAwB;AAC\u002FC,cAAc,mBAAO,CAAC,IAAuB;AAC7C,aAAa,mBAAO,CAAC,IAA+B;AACpD,eAAe,mBAAO,CAAC,GAAwB;AAC\u002FC,wBAAwB,mBAAO,CAAC,IAAmC;AACnE,qBAAqB,mBAAO,CAAC,IAA8B;AAC3D,YAAY,mBAAO,CAAC,IAAoB;AACxC,sBAAsB,mBAAO,CAAC,IAAgC;AAC9D,oBAAoB,mBAAO,CAAC,IAA2C;;AAEvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,WAAW;AACxD;;AAEA;AACA;AACA;AACA,iEAAiE,sBAAsB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,SAAS;AAC3B;AACA;AACA,MAAM;AACN;AACA;AACA,kBAAkB,SAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,QAAQ,mBAAmB;AAC3B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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\u002FC,eAAe,mBAAO,CAAC,IAAwB;AAC\u002FC,gBAAgB,mBAAO,CAAC,IAAyB;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBa;AACb,kBAAkB,mBAAO,CAAC,GAAmC;;AAE7D;AACA;AACA;AACA;AACA;;;;;;;;ACPa;AACb,sBAAsB,mBAAO,CAAC,IAAgC;AAC9D,sBAAsB,mBAAO,CAAC,IAAgC;AAC9D,wBAAwB,mBAAO,CAAC,IAAmC;;AAEnE,sBAAsB,mBAAmB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAW,gBAAgB;AACjC;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;SCjCA;SACA;;SAEA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;;SAEA;SACA;;SAEA;SACA;SACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACPA,MAAM;EACJA,cAAc;EACdC,qBAAqB;EACrBC,0BAA0B;EAC1BC,oBAAoB;EACpBC,yBAAyB;EACzBC,eAAe;EACfC,cAAc;EACdC,cAAc;EACdC,KAAK;EACLC,WAAW;EACXC,sBAAsB;EACtBC,aAAa;EACbC,SAAS;EACTC,WAAW;EACXC,SAAS;EACTC,WAAW;EACXC,kBAAkB;EAClBC,qBAAqB;EACrBC,OAAO;EACPC,kBAAkB;EAClBC,mBAAmB;EACnBC,SAAS;EACTC,mBAAmB;EACnBC,YAAY;EACZC,SAAS;EACTC,mBAAmB;EACnBC,SAAS;EACTC,aAAa;EACbC,gBAAgB;EAChBC,GAAG;EACHC,WAAW;EACXC,iBAAiB;EACjBC,qBAAqB;EACrBC,aAAa;EACbC,SAAS;EACTC,cAAc;EACdC,aAAa;EACbC,2BAA2B;EAC3BC,iBAAiB;EACjBC,kBAAkB;EAClBC,MAAM;EACNC,kBAAkB;EAClBC,SAAS;EACTC,uBAAuB;EACvBC,SAAS;EACTC,YAAY;EACZC,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\u002FJ;AAAK,CAAC,EAAE;EAC\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\u002FB;MACA,MAAM,IAAI\u002FB,WAAW,CAAC,oBAAoB,CAAC;IAC\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\u002FD,IAAI,CAAC,CAACN,YAAY,CAAC\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\u002FB,OAAO,CAACt\u002FB;MAAO,CAAC;MAChDwgC,OAAO,GAAG,IAAI,CAAC,CAACA,OAAO,CAACxnB,IAAI,CAAC,IAAI,CAAC;IACpC,KAAK,MAAM9b,OAAO,IAAI,CACpB,IAAI,CAAC,CAACsiC,iBAAiB,EACvB,IAAI,CAAC,CAACC,gBAAgB,EACtB,IAAI,CAAC,CAAC\u002FW,QAAQ,EACd,IAAI,CAAC,CAAC2Q,UAAU,EAChB,IAAI,CAAC,CAACnB,YAAY,CACnB,EAAE;MACDh7B,OAAO,CAAC4C,gBAAgB,CAAC,OAAO,EAAE0gC,OAAO,EAAED,SAAS,CAAC;IACvD;IAEA,MAAM;MAAErF,OAAO;MAAEyC;IAAW,CAAC,GAAG1B,MAAM,CAACM,WAAW;IAClD,IAAIoB,UAAU,KAAK,IAAI,EAAE;MACvB,IAAI,CAAC,CAAC8B,gBAAgB,CAAC\u002FF,OAAO,GAAG,IAAI;MACrC,IAAI,CAAC,CAAC8F,iBAAiB,CAAC9F,OAAO,GAAG,KAAK;IACzC,CAAC,MAAM;MACL,IAAI,CAAC,CAAC+F,gBAAgB,CAAC\u002FF,OAAO,GAAG,KAAK;MACtC,IAAI,CAAC,CAAC8F,iBAAiB,CAAC9F,OAAO,GAAG,IAAI;IACxC;IACA,IAAI,CAAC,CAACN,eAAe,GAAG,IAAI,CAAC,CAAC1Q,QAAQ,CAACloB,KAAK,GAAG06B,OAAO,EAAEjV,IAAI,CAAC,CAAC,IAAI,EAAE;IACpE,IAAI,CAAC,CAAC8Z,aAAa,CAAC,CAAC;IAErB,IAAI,CAAC,CAAC9H,aAAa,GAAGgE,MAAM;IAC5B,IAAI,CAAC,CAAC9C,SAAS,GAAGA,SAAS;IAC3B,IAAI,CAAC,CAACA,SAAS,CAACmD,mBAAmB,CAAC,CAAC;IAErC,IAAI,CAAC,CAACoD,QAAQ,GAAG,IAAIhnB,eAAe,CAAC,CAAC;IACtC,IAAI,CAAC,CAAC5G,QAAQ,CAACuH,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAConB,WAAW,CAACznB,IAAI,CAAC,IAAI,CAAC,EAAE;MACzDhZ,MAAM,EAAE,IAAI,CAAC,CAAC0\u002FB,QAAQ,CAAC1\u002FB;IACzB,CAAC,CAAC;IAEF,IAAI;MACF,MAAM,IAAI,CAAC,CAACk5B,cAAc,CAAC2D,IAAI,CAAC,IAAI,CAAC,CAACzE,MAAM,CAAC;MAC7C,IAAI,CAAC,CAACqI,WAAW,CAAC,CAAC;IACrB,CAAC,CAAC,OAAO9O,EAAE,EAAE;MACX,IAAI,CAAC,CAAC4H,KAAK,CAAC,CAAC;MACb,MAAM5H,EAAE;IACV;EACF;EAEA,CAAC8O,WAAWC,CAAA,EAAG;IACb,IAAI,CAAC,IAAI,CAAC,CAACzI,aAAa,EAAE;MACxB;IACF;IACA,MAAMG,MAAM,GAAG,IAAI,CAAC,CAACA,MAAM;IAC3B,MAAM;MAAEzvB;IAAM,CAAC,GAAGyvB,MAAM;IACxB,MAAM;MACJv2B,CAAC,EAAE8+B,UAAU;MACb76B,CAAC,EAAE86B,UAAU;MACbv9B,KAAK,EAAEw9B,UAAU;MACjBv9B,MAAM,EAAEw9B;IACV,CAAC,GAAG,IAAI,CAAC,CAACx3B,SAAS,CAACy3B,qBAAqB,CAAC,CAAC;IAC3C,MAAM;MAAEC,UAAU,EAAEC,OAAO;MAAEC,WAAW,EAAEC;IAAQ,CAAC,GAAGhiC,MAAM;IAC5D,MAAM;MAAEkE,KAAK,EAAE+9B,OAAO;MAAE99B,MAAM,EAAE+9B;IAAQ,CAAC,GAAGjJ,MAAM,CAAC2I,qBAAqB,CAAC,CAAC;IAC1E,MAAM;MAAEl\u002FB,CAAC;MAAEiE,CAAC;MAAEzC,KAAK;MAAEC;IAAO,CAAC,GAAG,IAAI,CAAC,CAAC20B,aAAa,CAACqJ,mBAAmB,CAAC,CAAC;IACzE,MAAMC,MAAM,GAAG,EAAE;IACjB,MAAMC,KAAK,GAAG,IAAI,CAAC,CAACrI,SAAS,CAACsI,SAAS,KAAK,KAAK;IAEjD,MAAMC,EAAE,GAAG5\u002FB,IAAI,CAACuD,GAAG,CAACxD,CAAC,EAAE8+B,UAAU,CAAC;IAClC,MAAMgB,EAAE,GAAG7\u002FB,IAAI,CAACmE,GAAG,CAACpE,CAAC,GAAGwB,KAAK,EAAEs9B,UAAU,GAAGE,UAAU,CAAC;IACvD,MAAMe,EAAE,GAAG9\u002FB,IAAI,CAACuD,GAAG,CAACS,CAAC,EAAE86B,UAAU,CAAC;IAClC,MAAMiB,EAAE,GAAG\u002F\u002FB,IAAI,CAACmE,GAAG,CAACH,CAAC,GAAGxC,MAAM,EAAEs9B,UAAU,GAAGE,UAAU,CAAC;IACxD,IAAI,CAAC,CAAClB,WAAW,CAAC90B,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC62B,EAAE,GAAGD,EAAE,IAAIT,OAAO,EAAE,CAAC;IACjE,IAAI,CAAC,CAACrB,WAAW,CAAC90B,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC+2B,EAAE,GAAGD,EAAE,IAAIT,OAAO,EAAE,CAAC;IAClE,IAAI,CAAC,CAACvB,WAAW,CAAC90B,YAAY,CAAC,GAAG,EAAE,GAAG42B,EAAE,GAAGT,OAAO,EAAE,CAAC;IACtD,IAAI,CAAC,CAACrB,WAAW,CAAC90B,YAAY,CAAC,GAAG,EAAE,GAAG82B,EAAE,GAAGT,OAAO,EAAE,CAAC;IAEtD,IAAI1iC,IAAI,GAAG,IAAI;IACf,IAAIF,GAAG,GAAGuD,IAAI,CAACuD,GAAG,CAACS,CAAC,EAAE,CAAC,CAAC;IACxBvH,GAAG,IAAIuD,IAAI,CAACmE,GAAG,CAACk7B,OAAO,IAAI5iC,GAAG,GAAG8iC,OAAO,CAAC,EAAE,CAAC,CAAC;IAE7C,IAAIG,KAAK,EAAE;MAET,IAAI3\u002FB,CAAC,GAAGwB,KAAK,GAAGk+B,MAAM,GAAGH,OAAO,GAAGH,OAAO,EAAE;QAC1CxiC,IAAI,GAAGoD,CAAC,GAAGwB,KAAK,GAAGk+B,MAAM;MAC3B,CAAC,MAAM,IAAI1\u002FB,CAAC,GAAGu\u002FB,OAAO,GAAGG,MAAM,EAAE;QAC\u002FB9iC,IAAI,GAAGoD,CAAC,GAAGu\u002FB,OAAO,GAAGG,MAAM;MAC7B;IACF,CAAC,MAAM,IAAI1\u002FB,CAAC,GAAGu\u002FB,OAAO,GAAGG,MAAM,EAAE;MAC\u002FB9iC,IAAI,GAAGoD,CAAC,GAAGu\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\u002FG,OAAO;MAC\u002FBgH,aAAa,EACX,CAAC,CAAC,IAAI,CAAC,CAAC9I,eAAe,IAAI,IAAI,CAAC,CAACA,eAAe,KAAK8B,OAAO;MAC9DiH,mBAAmB,EAAExE,UAAU;MAC\u002FBmE,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAACvC;IAC5B,CAAC;IACD,IAAI,CAAC,CAACrC,MAAM,CAAC,CAAC;EAChB;EAEA,CAACsD,OAAO4B,CAACnjC,GAAG,EAAE;IACZ,IAAIA,GAAG,CAACq8B,MAAM,KAAK,CAAC,EAAE;MACpB;IACF;IACA,IAAI,CAAC,CAACiE,cAAc,GAAG,IAAI;IAC3B,IAAI,CAAC,CAACwC,sBAAsB,CAAC,CAAC;EAChC;EAEA,CAACA,sBAAsBM,CAAA,EAAG;IACxB,IAAI,CAAC,CAAC\u002FC,OAAO,EAAE1mB,KAAK,CAAC,CAAC;IACtB,IAAI,CAAC,CAAC0mB,OAAO,GAAG,IAAI;EACtB;EAEA1N,OAAOA,CAAA,EAAG;IACR,IAAI,CAAC,CAACuH,SAAS,GAAG,IAAI;IACtB,IAAI,CAAC,CAAC+D,MAAM,CAAC,CAAC;IACd,IAAI,CAAC,CAACyC,UAAU,EAAEz2B,MAAM,CAAC,CAAC;IAC1B,IAAI,CAAC,CAACy2B,UAAU,GAAG,IAAI,CAAC,CAACC,WAAW,GAAG,IAAI;EAC7C;AACF;;;ACpSuD;AAevD,MAAM0C,sBAAsB,CAAC;EAK3Bx5B,WAAWA,CAACyJ,OAAO,EAAET,QAAQ,EAAE;IAC7B,IAAI,CAACA,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAAC,CAACywB,aAAa,CAAChwB,OAAO,CAAC;EAC9B;EAKA,CAACgwB,aAAaC,CAAC;IACbC,sBAAsB;IACtBC,mBAAmB;IACnBC,cAAc;IACdC,kBAAkB;IAClBC,gBAAgB;IAChBC,mBAAmB;IACnBC,4BAA4B;IAC5BC,sBAAsB;IACtBC;EACF,CAAC,EAAE;IACD,MAAM;MAAEnxB;IAAS,CAAC,GAAG,IAAI;IAEzB,MAAMmkB,aAAa,GAAGA,CAACiN,OAAO,EAAE1iC,KAAK,KAAK;MACxCsR,QAAQ,CAACiB,QAAQ,CAAC,8BAA8B,EAAE;QAChDC,MAAM,EAAE,IAAI;QACZ5B,IAAI,EAAEha,0BAA0B,CAAC8rC,OAAO,CAAC;QACzC1iC;MACF,CAAC,CAAC;IACJ,CAAC;IACDiiC,sBAAsB,CAAC3iC,gBAAgB,CAAC,OAAO,EAAE,YAAY;MAC3Dm2B,aAAa,CAAC,eAAe,EAAE,IAAI,CAACkN,aAAa,CAAC;IACpD,CAAC,CAAC;IACFT,mBAAmB,CAAC5iC,gBAAgB,CAAC,OAAO,EAAE,YAAY;MACxDm2B,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAACz1B,KAAK,CAAC;IAC7C,CAAC,CAAC;IACFmiC,cAAc,CAAC7iC,gBAAgB,CAAC,OAAO,EAAE,YAAY;MACnDm2B,aAAa,CAAC,WAAW,EAAE,IAAI,CAACz1B,KAAK,CAAC;IACxC,CAAC,CAAC;IACFoiC,kBAAkB,CAAC9iC,gBAAgB,CAAC,OAAO,EAAE,YAAY;MACvDm2B,aAAa,CAAC,eAAe,EAAE,IAAI,CAACkN,aAAa,CAAC;IACpD,CAAC,CAAC;IACFN,gBAAgB,CAAC\u002FiC,gBAAgB,CAAC,OAAO,EAAE,YAAY;MACrDm2B,aAAa,CAAC,aAAa,EAAE,IAAI,CAACkN,aAAa,CAAC;IAClD,CAAC,CAAC;IACFL,mBAAmB,CAAChjC,gBAAgB,CAAC,OAAO,EAAE,MAAM;MAClDgS,QAAQ,CAACiB,QAAQ,CAAC,iBAAiB,EAAE;QACnCC,MAAM,EAAE,IAAI;QACZ4rB,OAAO,EAAE;UACPxtB,IAAI,EAAE,SAAS;UACfqI,IAAI,EAAE;YAAEhC,MAAM,EAAE;UAA8B;QAChD;MACF,CAAC,CAAC;MACFwe,aAAa,CAAC,QAAQ,CAAC;IACzB,CAAC,CAAC;IACF8M,4BAA4B,CAACjjC,gBAAgB,CAAC,OAAO,EAAE,YAAY;MACjEm2B,aAAa,CAAC,qBAAqB,EAAE,IAAI,CAACkN,aAAa,CAAC;IAC1D,CAAC,CAAC;IACFH,sBAAsB,CAACljC,gBAAgB,CAAC,OAAO,EAAE,YAAY;MAC3D,MAAM45B,OAAO,GAAG,IAAI,CAAC\u002FO,YAAY,CAAC,cAAc,CAAC,KAAK,MAAM;MAC5D,IAAI,CAAC7f,YAAY,CAAC,cAAc,EAAE,CAAC4uB,OAAO,CAAC;MAC3CzD,aAAa,CAAC,oBAAoB,EAAE,CAACyD,OAAO,CAAC;IAC\u002FC,CAAC,CAAC;IACFuJ,2BAA2B,CAACnjC,gBAAgB,CAAC,OAAO,EAAE,MAAM;MAC1Dm2B,aAAa,CAAC,QAAQ,CAAC;IACzB,CAAC,CAAC;IAEFnkB,QAAQ,CAACuH,GAAG,CAAC,+BAA+B,EAAEpa,GAAG,IAAI;MACnD,KAAK,MAAM,CAACmS,IAAI,EAAE5Q,KAAK,CAAC,IAAIvB,GAAG,CAAC2\u002FB,OAAO,EAAE;QACvC,QAAQxtB,IAAI;UACV,KAAKha,0BAA0B,CAACgsC,aAAa;YAC3CX,sBAAsB,CAACjiC,KAAK,GAAGA,KAAK;YACpC;UACF,KAAKpJ,0BAA0B,CAACisC,cAAc;YAC5CX,mBAAmB,CAACliC,KAAK,GAAGA,KAAK;YACjC;UACF,KAAKpJ,0BAA0B,CAACksC,SAAS;YACvCX,cAAc,CAACniC,KAAK,GAAGA,KAAK;YAC5B;UACF,KAAKpJ,0BAA0B,CAACmsC,aAAa;YAC3CX,kBAAkB,CAACpiC,KAAK,GAAGA,KAAK;YAChC;UACF,KAAKpJ,0BAA0B,CAACosC,WAAW;YACzCX,gBAAgB,CAACriC,KAAK,GAAGA,KAAK;YAC9B;UACF,KAAKpJ,0BAA0B,CAACqsC,uBAAuB;YACrD3xB,QAAQ,CAACiB,QAAQ,CAAC,qCAAqC,EAAE;cACvDC,MAAM,EAAE,IAAI;cACZxS;YACF,CAAC,CAAC;YACF;UACF,KAAKpJ,0BAA0B,CAACssC,mBAAmB;YACjDX,4BAA4B,CAACviC,KAAK,GAAGA,KAAK;YAC1C;UACF,KAAKpJ,0BAA0B,CAACusC,cAAc;YAC5CZ,4BAA4B,CAAChE,QAAQ,GAAG,CAACv+B,KAAK;YAC9C;UACF,KAAKpJ,0BAA0B,CAACwsC,kBAAkB;YAChDZ,sBAAsB,CAACl4B,YAAY,CAAC,cAAc,EAAEtK,KAAK,CAAC;YAC1D;QACJ;MACF;IACF,CAAC,CAAC;EACJ;AACF;;;;AC3HA,MAAMqjC,SAAS,GAAG,IAAI;AAEtB,MAAMC,iBAAiB,CAAC;EACtB,CAACC,aAAa;EAEd,CAACC,aAAa,GAAG,CAAC;EAElB,CAACC,eAAe;EAEhBn7B,WAAWA,CAAC\u002FJ,WAAW,EAAEglC,aAAa,EAAEE,eAAe,EAAEC,gBAAgB,EAAE;IACzE,IAAI,CAAC,CAACH,aAAa,GAAGA,aAAa;IACnC,IAAI,CAAC,CAACE,eAAe,GAAGA,eAAe;IAEvC,IAAI,CAACC,gBAAgB,EAAE;MACrB;IACF;IACA,IAAI,CAAC,CAACF,aAAa,GAAGE,gBAAgB,CAACnD,qBAAqB,CAAC,CAAC,CAACz9B,MAAM;IAErE,MAAM6gC,eAAe,GAAG,IAAIC,cAAc,CAACriB,OAAO,IAAI;MACpD,KAAK,MAAMiB,KAAK,IAAIjB,OAAO,EAAE;QAC3B,IAAIiB,KAAK,CAAClN,MAAM,KAAKouB,gBAAgB,EAAE;UACrC,IAAI,CAAC,CAACF,aAAa,GAAGliC,IAAI,CAACC,KAAK,CAACihB,KAAK,CAACqhB,aAAa,CAAC,CAAC,CAAC,CAACC,SAAS,CAAC;UAClE;QACF;MACF;IACF,CAAC,CAAC;IACFH,eAAe,CAACzU,OAAO,CAACwU,gBAAgB,CAAC;IAEzCnlC,WAAW,CAACe,gBAAgB,CAAC,OAAO,EAAE,MAAMqkC,eAAe,CAACjU,UAAU,CAAC,CAAC,EAAE;MACxEhwB,IAAI,EAAE;IACR,CAAC,CAAC;EACJ;EAQA,CAACqkC,YAAYC,CAACC,KAAK,EAAEC,KAAK,EAAE;IAC1B,MAAMC,IAAI,GAAGF,KAAK,CAAC3+B,CAAC;IACpB,MAAM8+B,IAAI,GAAGH,KAAK,CAACvgC,MAAM;IACzB,MAAM2gC,IAAI,GAAGJ,KAAK,CAAC3+B,CAAC,GAAG2+B,KAAK,CAACnhC,MAAM,GAAG,CAAC;IAEvC,MAAMwhC,IAAI,GAAGJ,KAAK,CAAC5+B,CAAC;IACpB,MAAMi\u002FB,IAAI,GAAGL,KAAK,CAACxgC,MAAM;IACzB,MAAM8gC,IAAI,GAAGN,KAAK,CAAC5+B,CAAC,GAAG4+B,KAAK,CAACphC,MAAM,GAAG,CAAC;IAEvC,OAAQqhC,IAAI,IAAIK,IAAI,IAAIA,IAAI,IAAIJ,IAAI,IAAME,IAAI,IAAID,IAAI,IAAIA,IAAI,IAAIE,IAAK;EACzE;EAYA,CAACE,WAAWC,CAAC5E,IAAI,EAAEz+B,CAAC,EAAEiE,CAAC,EAAEq\u002FB,IAAI,EAAE;IAC7B,MAAMC,IAAI,GAAG9E,IAAI,CAACx6B,CAAC,GAAGw6B,IAAI,CAACh9B,MAAM,GAAG,CAAC;IACrC,OACE,CAAC6hC,IAAI,GAAGr\u002FB,CAAC,IAAIs\u002FB,IAAI,GAAGt\u002FB,CAAC,IAAIs\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\u002FB,QAAQ,CAACm\u002FB,gBAAgB,CAACH,SAAS,EAAEI,UAAU,CAACC,SAAS,CAAC;MACzE,MAAMC,IAAI,GAAG5C,IAAI,GAAGwC,MAAM,CAAChB,SAAS,CAAC,CAAC,GAAGgB,MAAM,CAACrK,UAAU,CAAC,CAAC;MAC5D,IAAIyK,IAAI,EAAE;QACR,OAAOA,IAAI;MACb;IACF;EACF;EAOAC,SAASA,CAAC7C,IAAI,EAAE7mB,MAAM,EAAE;IACtB,MAAMmnB,SAAS,GAAGh9B,QAAQ,CAACw\u002FB,YAAY,CAAC,CAAC;IACzC,IAAIxC,SAAS,CAACyC,UAAU,KAAK,CAAC,EAAE;MAC9B;IACF;IACA,MAAM;MAAExC;IAAU,CAAC,GAAGD,SAAS;IAC\u002FB,MAAM0C,YAAY,GAChBzC,SAAS,CAAC3b,QAAQ,KAAKqe,IAAI,CAAC9X,YAAY,GACpCoV,SAAS,CAACmB,aAAa,GACvBnB,SAAS;IACf,MAAMrW,IAAI,GAAG8Y,YAAY,CAACT,OAAO,CAAC,YAAY,CAAC;IAC\u002FC,IAAI,CAACrY,IAAI,EAAE;MACT;IACF;IACA,MAAMsY,MAAM,GAAGl\u002FB,QAAQ,CAACm\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\u002F\u002FB,IAAI,CAAC,CAAC;EACb;EAEAF,IAAIA,CAAC4gC,UAAU,EAAEC,WAAW,EAAE;IAC5B,IAAI,CAAC,IAAI,CAAC,CAACZ,cAAc,EAAE;MACzB,IAAI,CAAC,CAACA,cAAc,GAAG,IAAIpxB,eAAe,CAAC,CAAC;MAC5C,MAAM3G,IAAI,GAAG;QAAE\u002FR,MAAM,EAAE,IAAI,CAAC,CAAC8pC,cAAc,CAAC9pC;MAAO,CAAC;MACpD,MAAM2qC,SAAS,GAAG,IAAI,CAAC5gC,IAAI,CAACiP,IAAI,CAAC,IAAI,CAAC;MAEtC,IAAI,CAAC,CAAC1P,SAAS,CAACxJ,gBAAgB,CAAC,aAAa,EAAEjH,aAAa,EAAEkZ,IAAI,CAAC;MACpE,IAAI,CAAC,CAACwsB,WAAW,CAACz+B,gBAAgB,CAAC,OAAO,EAAE6qC,SAAS,EAAE54B,IAAI,CAAC;MAC5D,IAAI,CAAC,CAACD,QAAQ,CAACuH,GAAG,CAAC,aAAa,EAAEsxB,SAAS,EAAE54B,IAAI,CAAC;MAClD,IAAI,CAAC,CAACD,QAAQ,CAACuH,GAAG,CAAC,UAAU,EAAEsxB,SAAS,EAAE54B,IAAI,CAAC;IACjD;IAEA,IAAI,CAAChI,IAAI,CAAC,CAAC;IAEX,IAAI,OAAO2gC,WAAW,KAAK,QAAQ,EAAE;MACnC,IAAI,CAAC,CAAC3qB,OAAO,CAACjV,YAAY,CACxB,cAAc,EACd8+B,aAAa,CAAC,CAACM,YAAY,CAACQ,WAAW,CACzC,CAAC;IACH,CAAC,MAAM;MACL,IAAI,CAAC,CAAC3qB,OAAO,CAACjV,YAAY,CACxB,cAAc,EACd8+B,aAAa,CAAC,CAACM,YAAY,CAACM,SAC9B,CAAC;MACD,IAAI,CAAC,CAACzqB,OAAO,CAACjV,YAAY,CACxB,gBAAgB,EAChByL,IAAI,CAACC,SAAS,CAAC;QAAEsQ,KAAK,EAAE4jB;MAAY,CAAC,CACvC,CAAC;IACH;IACA,IAAI,CAACX,MAAM,GAAG,IAAI;IAClB,IAAI,CAAC,CAACzgC,SAAS,CAACwxB,MAAM,GAAG,KAAK;IAE9B,IAAI,CAAC,CAACkP,cAAc,GAAG,IAAItxB,eAAe,CAAC,CAAC;IAE5C,IAAI,CAAC,CAACuxB,UAAU,CAACnqC,gBAAgB,CAC\u002FB,OAAO,EACP,MAAM;MACJ2qC,UAAU,CAAC,CAAC;MACZ,IAAI,CAAC1gC,IAAI,CAAC,CAAC;IACb,CAAC,EACD;MAAE\u002FJ,MAAM,EAAE,IAAI,CAAC,CAACgqC,cAAc,CAAChqC;IAAO,CACxC,CAAC;IAID,IAAI,CAAC,CAAC6pC,YAAY,GAAG\u002F\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\u002FhB,KAAK,CAAC\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\u002FDzyB,GAAG,CAACi6B,MAAM,CAAC1\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\u002FC,KAAK,CAACY,KAAK;IAC\u002FB,MAAMq+C,OAAO,GAAG,OAAOF,QAAQ;MAC7BG,QAAQ,GAAG,OAAOF,SAAS;IAE7B,IAAIC,OAAO,KAAKC,QAAQ,EAAE;MACxB,OAAO,IAAI;IACb;IACA,IAAID,OAAO,KAAK,QAAQ,EAAE;MACxB,IAAIF,QAAQ,KAAKC,SAAS,EAAE;QAC1B,OAAO,IAAI;MACb;IACF,CAAC,MAAM,IACYjoC,IAAI,CAACC,SAAS,CAAC+nC,QAAQ,CAAC,KAAKhoC,IAAI,CAACC,SAAS,CAACgoC,SAAS,CAAC,EACvE;MACA,OAAO,IAAI;IACb;IAEA,QAAQh\u002FC,KAAK,CAAC4R,IAAI;MAChB,KAAK,OAAO;QACV,MAAMwD,UAAU,GAAG,IAAI,CAAC0nC,SAAS,CAACkB,OAAO,GAAG,CAAC;QAC7C,MAAM\u002FB,WAAW,GAAG,IAAI,CAACC,YAAY;QASrC,OACE9mC,UAAU,IAAI,CAAC,IACfA,UAAU,IAAI6mC,WAAW,CAACxnC,UAAU,IACpCW,UAAU,KAAK6mC,WAAW,CAACtnC,IAAI,IAC\u002FB,EAAE,IAAI,CAACynC,eAAe,GAAGhnC,UAAU,CAAC,IAAI,IAAI,CAAC;MAEjD,KAAK,oBAAoB;QACvB,OAAO,KAAK;IAChB;IACA,OAAO,IAAI;EACb;EAMA,CAAC+pC,YAAYC,CAACn1B,OAAO,EAAEo1B,QAAQ,EAAEp9C,MAAM,EAAE;IACvC,IAAIqV,KAAK,GAAG2S,OAAO,CAChB7P,KAAK,CAAC,CAAC,EAAEilC,QAAQ,CAAC,CAClB\u002FnC,KAAK,CAACihC,8BAA8B,CAAC;IACxC,IAAIjhC,KAAK,EAAE;MACT,MAAMzQ,KAAK,GAAGojB,OAAO,CAACq1B,UAAU,CAACD,QAAQ,CAAC;MAC1C,MAAM58C,KAAK,GAAG6U,KAAK,CAAC,CAAC,CAAC,CAACgoC,UAAU,CAAC,CAAC,CAAC;MACpC,IAAI9H,gBAAgB,CAAC3wC,KAAK,CAAC,KAAK2wC,gBAAgB,CAAC\u002F0C,KAAK,CAAC,EAAE;QACvD,OAAO,KAAK;MACd;IACF;IAEA6U,KAAK,GAAG2S,OAAO,CACZ7P,KAAK,CAACilC,QAAQ,GAAGp9C,MAAM,CAAC,CACxBqV,KAAK,CAACkhC,gCAAgC,CAAC;IAC1C,IAAIlhC,KAAK,EAAE;MACT,MAAMxQ,IAAI,GAAGmjB,OAAO,CAACq1B,UAAU,CAACD,QAAQ,GAAGp9C,MAAM,GAAG,CAAC,CAAC;MACtD,MAAMQ,KAAK,GAAG6U,KAAK,CAAC,CAAC,CAAC,CAACgoC,UAAU,CAAC,CAAC,CAAC;MACpC,IAAI9H,gBAAgB,CAAC1wC,IAAI,CAAC,KAAK0wC,gBAAgB,CAAC\u002F0C,KAAK,CAAC,EAAE;QACtD,OAAO,KAAK;MACd;IACF;IAEA,OAAO,IAAI;EACb;EAEA,CAAC88C,qBAAqBC,CAAC5+C,KAAK,EAAEs5C,aAAa,EAAE;IAC3C,MAAM;MAAEuF;IAAgB,CAAC,GAAG,IAAI,CAAC,CAACz\u002FC,KAAK;IACvC,IAAI0\u002FC,SAAS,GAAG,KAAK;IACrB9+C,KAAK,GAAGA,KAAK,CAACa,UAAU,CACtB62C,qBAAqB,EACrB,CACEhhC,KAAK,EACL6iC,EAAE,EACFC,EAAE,EACFC,EAAE,EACFC,EAAE,EACFC,EAAE,KACC;MAIH,IAAIJ,EAAE,EAAE;QAEN,OAAO,SAASA,EAAE,MAAM;MAC1B;MACA,IAAIC,EAAE,EAAE;QAEN,OAAO,OAAOA,EAAE,MAAM;MACxB;MACA,IAAIC,EAAE,EAAE;QAEN,OAAO,MAAM;MACf;MACA,IAAIoF,eAAe,EAAE;QACnB,OAAOnF,EAAE,IAAIC,EAAE;MACjB;MAEA,IAAID,EAAE,EAAE;QAEN,OAAOnC,oBAAoB,CAAC\u002FgC,GAAG,CAACkjC,EAAE,CAACgF,UAAU,CAAC,CAAC,CAAC,CAAC,GAAGhF,EAAE,GAAG,EAAE;MAC7D;MAIA,IAAIJ,aAAa,EAAE;QACjBwF,SAAS,GAAG,IAAI;QAChB,OAAO,GAAGnF,EAAE,SAAS;MACvB;MACA,OAAOA,EAAE;IACX,CACF,CAAC;IAED,MAAMoF,cAAc,GAAG,MAAM;IAC7B,IAAI\u002F+C,KAAK,CAACq6C,QAAQ,CAAC0E,cAAc,CAAC,EAAE;MAIlC\u002F+C,KAAK,GAAGA,KAAK,CAACwZ,KAAK,CAAC,CAAC,EAAExZ,KAAK,CAACqB,MAAM,GAAG09C,cAAc,CAAC19C,MAAM,CAAC;IAC9D;IAEA,IAAIw9C,eAAe,EAAE;MAEnB,IAAIvF,aAAa,EAAE;QACjB9B,wBAAwB,KAAKpwB,MAAM,CAAC43B,YAAY,CAC9C,GAAGzH,oBACL,CAAC;QAEDuH,SAAS,GAAG,IAAI;QAChB9+C,KAAK,GAAG,GAAGA,KAAK,OAAOw3C,wBAAwB,gBAAgB;MACjE;IACF;IAEA,OAAO,CAACsH,SAAS,EAAE9+C,KAAK,CAAC;EAC3B;EAEA,CAACi\u002FC,cAAcC,CAAClC,SAAS,EAAE;IACzB,IAAI,CAAC,IAAI,CAAC,CAAC59C,KAAK,EAAE;MAChB;IACF;IACA,MAAMY,KAAK,GAAG,IAAI,CAAC,CAACA,KAAK;IACzB,IAAIA,KAAK,CAACqB,MAAM,KAAK,CAAC,EAAE;MACtB;IACF;IACA,MAAM89C,WAAW,GAAG,IAAI,CAAC3B,aAAa,CAACR,SAAS,CAAC;IACjD,MAAMoC,aAAa,GAAG,IAAI,CAAC1oC,KAAK,CAAC1W,KAAK,EAAEm\u002FC,WAAW,EAAEnC,SAAS,CAAC;IAE\u002FD,MAAM7N,OAAO,GAAI,IAAI,CAAC2M,YAAY,CAACkB,SAAS,CAAC,GAAG,EAAG;IACnD,MAAMqC,aAAa,GAAI,IAAI,CAACrD,kBAAkB,CAACgB,SAAS,CAAC,GAAG,EAAG;IAC\u002FD,MAAMpC,KAAK,GAAG,IAAI,CAAC6C,UAAU,CAACT,SAAS,CAAC;IAExCoC,aAAa,EAAEvxB,OAAO,CAAC,CAAC;MAAEzqB,KAAK;MAAE\u002FB;IAAO,CAAC,KAAK;MAC5C,MAAM,CAACi+C,QAAQ,EAAEC,QAAQ,CAAC,GAAG5E,gBAAgB,CAACC,KAAK,EAAEx3C,KAAK,EAAE\u002FB,MAAM,CAAC;MACnE,IAAIk+C,QAAQ,EAAE;QACZpQ,OAAO,CAAC3pC,IAAI,CAAC85C,QAAQ,CAAC;QACtBD,aAAa,CAAC75C,IAAI,CAAC+5C,QAAQ,CAAC;MAC9B;IACF,CAAC,CAAC;IAIF,IAAI,IAAI,CAAC,CAACngD,KAAK,CAACw9C,YAAY,EAAE;MAC5B,IAAI,CAAC,CAAC4C,UAAU,CAACxC,SAAS,CAAC;IAC7B;IACA,IAAI,IAAI,CAACc,cAAc,KAAKd,SAAS,EAAE;MACrC,IAAI,CAACc,cAAc,GAAG,IAAI;MAC1B,IAAI,CAAC,CAAC2B,aAAa,CAAC,CAAC;IACvB;IAGA,MAAMC,gBAAgB,GAAGvQ,OAAO,CAAC9tC,MAAM;IACvC,IAAI,CAACs8C,kBAAkB,IAAI+B,gBAAgB;IAC3C,IAAI,IAAI,CAAC,CAACvE,4BAA4B,EAAE;MACtC,IAAIuE,gBAAgB,GAAG,CAAC,EAAE;QACxB,IAAI,CAAC,CAACC,oBAAoB,CAAC,CAAC;MAC9B;IACF,CAAC,MAAM,IAAI,EAAE,IAAI,CAAC,CAACvE,iBAAiB,KAAK,IAAI,CAACE,YAAY,CAACznC,UAAU,EAAE;MAGrE,IAAI,CAAC,CAAC8rC,oBAAoB,CAAC,CAAC;IAC9B;EACF;EAgBAjpC,KAAKA,CAAC1W,KAAK,EAAEm\u002FC,WAAW,EAAEnC,SAAS,EAAE;IACnC,MAAM1D,aAAa,GAAG,IAAI,CAACoE,cAAc,CAACV,SAAS,CAAC;IAEpD,IAAI8B,SAAS,GAAG,KAAK;IACrB,IAAI,OAAO9+C,KAAK,KAAK,QAAQ,EAAE;MAC7B,CAAC8+C,SAAS,EAAE9+C,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC2+C,qBAAqB,CAAC3+C,KAAK,EAAEs5C,aAAa,CAAC;IACxE,CAAC,MAAM;MAGLt5C,KAAK,GAAGA,KAAK,CACVoG,IAAI,CAAC,CAAC,CACNw5C,OAAO,CAAC,CAAC,CACTp1B,GAAG,CAACpoB,CAAC,IAAI;QACR,MAAM,CAACy9C,aAAa,EAAEC,SAAS,CAAC,GAAG,IAAI,CAAC,CAACnB,qBAAqB,CAC5Dv8C,CAAC,EACDk3C,aACF,CAAC;QACDwF,SAAS,KAAKe,aAAa;QAC3B,OAAO,IAAIC,SAAS,GAAG;MACzB,CAAC,CAAC,CACD9+B,IAAI,CAAC,GAAG,CAAC;IACd;IACA,IAAI,CAAChhB,KAAK,EAAE;MAGV,OAAO5B,SAAS;IAClB;IAEA,MAAM;MAAE2hD,aAAa;MAAEC;IAAW,CAAC,GAAG,IAAI,CAAC,CAAC5gD,KAAK;IACjD,MAAM6gD,KAAK,GAAG,IAAInB,SAAS,GAAG,GAAG,GAAG,EAAE,GAAGiB,aAAa,GAAG,EAAE,GAAG,GAAG,EAAE;IACnE\u002F\u002FC,KAAK,GAAG,IAAI64C,MAAM,CAAC74C,KAAK,EAAEigD,KAAK,CAAC;IAEhC,MAAM9Q,OAAO,GAAG,EAAE;IAClB,IAAIz4B,KAAK;IACT,OAAO,CAACA,KAAK,GAAG1W,KAAK,CAAC4kB,IAAI,CAACu6B,WAAW,CAAC,MAAM,IAAI,EAAE;MACjD,IACEa,UAAU,IACV,CAAC,IAAI,CAAC,CAACzB,YAAY,CAACY,WAAW,EAAEzoC,KAAK,CAACtT,KAAK,EAAEsT,KAAK,CAAC,CAAC,CAAC,CAACrV,MAAM,CAAC,EAC9D;QACA;MACF;MACA8tC,OAAO,CAAC3pC,IAAI,CAAC;QAAEpC,KAAK,EAAEsT,KAAK,CAACtT,KAAK;QAAE\u002FB,MAAM,EAAEqV,KAAK,CAAC,CAAC,CAAC,CAACrV;MAAO,CAAC,CAAC;IAC\u002FD;IACA,OAAO8tC,OAAO;EAChB;EAEA,CAACoN,WAAW2D,CAAA,EAAG;IAEb,IAAI,IAAI,CAAC3C,oBAAoB,CAACl8C,MAAM,GAAG,CAAC,EAAE;MACxC;IACF;IAEA,IAAI8+C,QAAQ,GAAGj4C,OAAO,CAACC,OAAO,CAAC,CAAC;IAChC,MAAMi4C,WAAW,GAAG;MAAEC,oBAAoB,EAAE;IAAK,CAAC;IAClD,MAAMC,MAAM,GAAG,IAAI,CAACpU,YAAY;IAChC,KAAK,IAAI1oC,CAAC,GAAG,CAAC,EAAEsW,EAAE,GAAG,IAAI,CAACwhC,YAAY,CAACznC,UAAU,EAAErQ,CAAC,GAAGsW,EAAE,EAAEtW,CAAC,EAAE,EAAE;MAC9D,MAAM;QAAE2U,OAAO;QAAEhQ;MAAQ,CAAC,GAAGD,OAAO,CAACkQ,aAAa,CAAC,CAAC;MACpD,IAAI,CAACmlC,oBAAoB,CAAC\u002F5C,CAAC,CAAC,GAAG2U,OAAO;MAEtCgoC,QAAQ,GAAGA,QAAQ,CAAChlC,IAAI,CAAC,YAAY;QACnC,IAAImlC,MAAM,KAAK,IAAI,CAACpU,YAAY,EAAE;UAChC\u002FjC,OAAO,CAAC,CAAC;UACT;QACF;QACA,MAAMm4C,MAAM,CACT\u002FN,OAAO,CAAC\u002FuC,CAAC,GAAG,CAAC,CAAC,CACd2X,IAAI,CAACm3B,OAAO,IAAIA,OAAO,CAACiO,cAAc,CAACH,WAAW,CAAC,CAAC,CACpDjlC,IAAI,CACH4N,WAAW,IAAI;UACb,MAAMy3B,MAAM,GAAG,EAAE;UAEjB,KAAK,MAAMC,QAAQ,IAAI13B,WAAW,CAAC\u002FnB,KAAK,EAAE;YACxCw\u002FC,MAAM,CAACh7C,IAAI,CAACi7C,QAAQ,CAAC\u002F\u002FC,GAAG,CAAC;YACzB,IAAI+\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\u002FB,IAAI,CAAC+5C,oBAAoB,CAAC\u002F5C,CAAC,CAAC,CAAC2X,IAAI,CAAC,MAAM;UACtC,IAAI,CAAC0iC,mBAAmB,CAAC98B,MAAM,CAACvd,CAAC,CAAC;UAClC,IAAI,CAAC,CAACy7C,cAAc,CAACz7C,CAAC,CAAC;QACzB,CAAC,CAAC;MACJ;IACF;IAGA,MAAMxD,KAAK,GAAG,IAAI,CAAC,CAACA,KAAK;IACzB,IAAIA,KAAK,CAACqB,MAAM,KAAK,CAAC,EAAE;MACtB,IAAI,CAAC,CAACs+B,aAAa,CAACoX,SAAS,CAACC,KAAK,CAAC;MACpC;IACF;IAEA,IAAI,IAAI,CAAC8G,cAAc,EAAE;MACvB;IACF;IAEA,MAAM7X,MAAM,GAAG,IAAI,CAACoX,OAAO;IAE3B,IAAI,CAACO,cAAc,GAAG9pC,QAAQ;IAG9B,IAAImyB,MAAM,CAACkX,QAAQ,KAAK,IAAI,EAAE;MAC5B,MAAM8D,cAAc,GAAG,IAAI,CAACnF,YAAY,CAAC7V,MAAM,CAACmX,OAAO,CAAC,CAAC\u002F7C,MAAM;MAC\u002FD,IACG,CAACy\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\u002FC\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\u002FD,IAAI,CAACH,YAAY,GAAGG,WAAW;IAC\u002FB,IAAI,CAACI,UAAU,GAAGF,SAAS,KAAK,IAAI;IAEpC,IAAI,CAACN,YAAY,GAAG,IAAI;IACxB,IAAI,CAAC,CAACS,UAAU,CAAC,CAAC;IAClB,MAAMrlD,KAAK,GAAGL,MAAM,CAAC2lD,OAAO,CAACtlD,KAAK;IAElC,IAAI,CAACulD,mBAAmB,GAAG,KAAK;IAChC,IAAI,CAACC,gBAAgB,GAAG,CAAC;IACzB,IAAI,CAACC,YAAY,GAAGjB,cAAc,CAAC,CAAC;IACpC,IAAI,CAACkB,mBAAmB,GAAG,CAAC;IAE5B,IAAI,CAACC,IAAI,GAAG,IAAI,CAACC,OAAO,GAAG,CAAC;IAC5B,IAAI,CAACC,YAAY,GAAG,IAAI;IACxB,IAAI,CAACC,SAAS,GAAG,IAAI;IAErB,IAAI,CAAC,IAAI,CAAC,CAACC,YAAY,CAAC\u002FlD,KAAK,EAAsB,IAAI,CAAC,IAAIilD,YAAY,EAAE;MACxE,MAAM;QAAE9tC,IAAI;QAAExC,IAAI;QAAEE;MAAS,CAAC,GAAG,IAAI,CAAC,CAACmxC,gBAAgB,CAC9B,IACzB,CAAC;MAED,IAAI,CAAC7uC,IAAI,IAAIguC,aAAa,IAAIF,YAAY,EAAE;QAE1C,IAAI,CAAC,CAACgB,kBAAkB,CAAC,IAAI,EAAuB,IAAI,CAAC;QACzD;MACF;MAGA,IAAI,CAAC,CAACA,kBAAkB,CACtB;QAAE9uC,IAAI;QAAExC,IAAI;QAAEE;MAAS,CAAC,EACH,IACvB,CAAC;MACD;IACF;IAIA,MAAMqxC,WAAW,GAAGlmD,KAAK,CAACkmD,WAAW;IACrC,IAAI,CAAC,CAACC,mBAAmB,CACvBD,WAAW,EACXlmD,KAAK,CAAComD,GAAG,EACe,IAC1B,CAAC;IAED,IAAIF,WAAW,CAACrxC,QAAQ,KAAK7V,SAAS,EAAE;MACtC,IAAI,CAACqnD,gBAAgB,GAAGH,WAAW,CAACrxC,QAAQ;IAC9C;IACA,IAAIqxC,WAAW,CAACjxC,IAAI,EAAE;MACpB,IAAI,CAACqxC,gBAAgB,GAAGvvC,IAAI,CAACC,SAAS,CAACkvC,WAAW,CAACjxC,IAAI,CAAC;MAKxD,IAAI,CAAC4wC,YAAY,CAAClxC,IAAI,GAAG,IAAI;IAC\u002FB,CAAC,MAAM,IAAIuxC,WAAW,CAAC\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\u002FC,KAAK,EAAE;QACpE;MACF;MAEA8\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\u002FkC,OAAO,CAACgvC,WAAW,CAAC\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\u002FB,MAAM,CAAC\u002FT,KAAK,CAAC;UACrBsgC,WAAW,EAAE;QACf;QAEAQ,SAAS,CAACtsD,MAAM,CAACu\u002FB,MAAM,CAACj6B,GAAG,CAAC;MAC9B;IACF;IAEA,IAAI,CAAC0qC,gBAAgB,CAACC,QAAQ,EAAE6b,WAAW,EAAE5b,aAAa,CAAC;EAC7D;EAEA,MAAM,CAACyb,YAAYgB,CAACzxC,OAAO,GAAG,IAAI,EAAE;IAClC,IAAI,CAAC,IAAI,CAAC0wC,sBAAsB,EAAE;MAChC;IACF;IACA,MAAMt1C,WAAW,GAAG,IAAI,CAAC24B,YAAY;IACrC,MAAMv0B,qBAAqB,GAAG,OAAOQ,OAAO,IAC1C5E,WAAW,CAACs2C,wBAAwB,CAAC;MAAEC,MAAM,EAAE;IAAU,CAAC,CAAC,CAAC;IAE9D,IAAIv2C,WAAW,KAAK,IAAI,CAAC24B,YAAY,EAAE;MACrC;IACF;IACA,IAAI\u002FzB,OAAO,EAAE;MAEX,KAAK,MAAM,CAAC6wC,OAAO,EAAEr9B,MAAM,CAAC,IAAI,IAAI,CAACm9B,0BAA0B,EAAE;QAC\u002FD,MAAMY,KAAK,GAAG\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\u002FB,KAAK,MAAM\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\u002FB,OAAO,CAAC\u002F9B,UAAU,CAAC,EAC\u002FB08C,6BAA6B,CAC9B,CAAC,CAAC\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\u002FC,WAAW,CAACq\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\u002FB,IAAI01C,aAAa,EAAE;MACjB\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\u002FC,GAAG,CAAC6\u002FC,MAAM,CAAC,EAAE;UAC1B;QACF;QACA,MAAMC,QAAQ,GAAGjzD,KAAK,CAACgzD,MAAM,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,CAACL,cAAc,CAACM,QAAQ,CAAC,EAAE;UAClC,OAAOA,QAAQ;QACjB;MACF;IACF;IAIA,IAAIC,cAAc,GAAGZ,YAAY,GAAGQ,MAAM,GAAGD,OAAO,GAAG,CAAC;IACxD,IAAIM,aAAa,GAAGnzD,KAAK,CAACkzD,cAAc,CAAC;IAEzC,IAAIC,aAAa,IAAI,CAAC,IAAI,CAACR,cAAc,CAACQ,aAAa,CAAC,EAAE;MACxD,OAAOA,aAAa;IACtB;IACA,IAAIZ,cAAc,EAAE;MAClBW,cAAc,IAAIZ,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC;MACvCa,aAAa,GAAGnzD,KAAK,CAACkzD,cAAc,CAAC;MAErC,IAAIC,aAAa,IAAI,CAAC,IAAI,CAACR,cAAc,CAACQ,aAAa,CAAC,EAAE;QACxD,OAAOA,aAAa;MACtB;IACF;IAEA,OAAO,IAAI;EACb;EAMAR,cAAcA,CAACvzD,IAAI,EAAE;IACnB,OAAOA,IAAI,CAACg0D,cAAc,KAAK77D,eAAe,CAACI,QAAQ;EACzD;EASA07D,UAAUA,CAACj0D,IAAI,EAAE;IACf,QAAQA,IAAI,CAACg0D,cAAc;MACzB,KAAK77D,eAAe,CAACI,QAAQ;QAC3B,OAAO,KAAK;MACd,KAAKJ,eAAe,CAACG,MAAM;QACzB,IAAI,CAACg6D,mBAAmB,GAAGtyD,IAAI,CAAC6yD,WAAW;QAC3C7yD,IAAI,CAACivB,MAAM,CAAC,CAAC;QACb;MACF,KAAK92B,eAAe,CAACE,OAAO;QAC1B,IAAI,CAACi6D,mBAAmB,GAAGtyD,IAAI,CAAC6yD,WAAW;QAC3C;MACF,KAAK16D,eAAe,CAACC,OAAO;QAC1B,IAAI,CAACk6D,mBAAmB,GAAGtyD,IAAI,CAAC6yD,WAAW;QAC3C7yD,IAAI,CACDk0D,IAAI,CAAC,CAAC,CACNC,OAAO,CAAC,MAAM;UACb,IAAI,CAACrB,qBAAqB,CAAC,CAAC;QAC9B,CAAC,CAAC,CACD9\u002FB,KAAK,CAACwV,MAAM,IAAI;UACf,IAAIA,MAAM,YAAY9xC,2BAA2B,EAAE;YACjD;UACF;UACAgE,OAAO,CAACC,KAAK,CAAC,aAAa,EAAE6tC,MAAM,CAAC;QACtC,CAAC,CAAC;QACJ;IACJ;IACA,OAAO,IAAI;EACb;AACF;;;;;;;;;;;AClN4E;AACzC;AAcnC,MAAM4rB,mBAAmB,CAAC;EACxB,CAACC,eAAe,GAAG,IAAI;EAEvB,CAACC,iBAAiB,GAAG,IAAI;EAEzB,CAACviC,aAAa,GAAG,IAAI;EAErB,CAACuvB,oBAAoB,GAAG,IAAI;EAE5B,CAACryC,QAAQ,GAAG,IAAI;EAEhB,CAACuI,gBAAgB,GAAG,IAAI;EAExB,CAAC1G,WAAW,GAAG,IAAI;EAEnB,CAACC,SAAS,GAAG,IAAI;EAEjB,CAACwjD,KAAK,GAAG,KAAK;EAEd,CAACC,SAAS,GAAG,IAAI;EAEjB,CAACC,mBAAmB,GAAG,IAAI;EAK3BxuD,WAAWA,CAAC;IAAEgJ,QAAQ;IAAEuI,gBAAgB,GAAG,IAAI;IAAEua,aAAa,GAAG;EAAK,CAAC,EAAE;IACvE,IAAI,CAAC,CAAC9iB,QAAQ,GAAGA,QAAQ;IACzB,IAAI,CAAC,CAACuI,gBAAgB,GAAGA,gBAAgB;IACzC,IAAI,CAAC,CAACua,aAAa,GAAGA,aAAa;EAcrC;EAEA7gB,SAASA,CAACH,SAAS,EAAE;IACnB,IAAI,CAAC,CAACA,SAAS,GAAGA,SAAS;EAC7B;EAEA,MAAME,WAAWA,CAACH,WAAW,EAAE;IAC7B,IAAI,IAAI,CAAC,CAACA,WAAW,EAAE;MACrB,MAAM,IAAI,CAAC,CAAC4jD,gBAAgB,CAAC,CAAC;IAChC;IACA,IAAI,CAAC,CAAC5jD,WAAW,GAAGA,WAAW;IAE\u002FB,IAAI,CAACA,WAAW,EAAE;MAChB;IACF;IACA,MAAM,CAAC6jD,OAAO,EAAEC,gBAAgB,EAAEC,UAAU,CAAC,GAAG,MAAMpvD,OAAO,CAACynB,GAAG,CAAC,CAChEpc,WAAW,CAACgkD,eAAe,CAAC,CAAC,EAC7BhkD,WAAW,CAACikD,sBAAsB,CAAC,CAAC,EACpCjkD,WAAW,CAACkkD,YAAY,CAAC,CAAC,CAC3B,CAAC;IAEF,IAAI,CAACL,OAAO,IAAI,CAACE,UAAU,EAAE;MAE3B,MAAM,IAAI,CAAC,CAACH,gBAAgB,CAAC,CAAC;MAC9B;IACF;IACA,IAAI5jD,WAAW,KAAK,IAAI,CAAC,CAACA,WAAW,EAAE;MACrC;IACF;IACA,IAAI;MACF,IAAI,CAAC,CAAC0jD,SAAS,GAAG,IAAI,CAAC,CAACS,aAAa,CAAC,CAAC;IACzC,CAAC,CAAC,OAAOt6D,KAAK,EAAE;MACdD,OAAO,CAACC,KAAK,CAAC,cAAc,EAAEA,KAAK,CAAC;MAEpC,MAAM,IAAI,CAAC,CAAC+5D,gBAAgB,CAAC,CAAC;MAC9B;IACF;IACA,MAAMzlD,QAAQ,GAAG,IAAI,CAAC,CAACA,QAAQ;IAE\u002FB,IAAI,CAAC,CAACqyC,oBAAoB,GAAG,IAAIzrC,eAAe,CAAC,CAAC;IAClD,MAAM;MAAE1Y;IAAO,CAAC,GAAG,IAAI,CAAC,CAACmkD,oBAAoB;IAE7CryC,QAAQ,CAACuH,GAAG,CACV,mBAAmB,EACnB2c,KAAK,IAAI;MACP,IAAIA,KAAK,EAAEhjB,MAAM,KAAK7T,MAAM,EAAE;QAC5B,IAAI,CAAC,CAAC44D,iBAAiB,CAAC\u002FhC,KAAK,CAACsF,MAAM,CAAC;MACvC;IACF,CAAC,EACD;MAAEt7B;IAAO,CACX,CAAC;IACD8R,QAAQ,CAACuH,GAAG,CACV,wBAAwB,EACxB2c,KAAK,IAAI;MACP,IAAI,CAAC,CAACqhC,SAAS,EAAEthC,sBAAsB,CAACC,KAAK,CAACsF,MAAM,CAAC;IACvD,CAAC,EACD;MAAEt7B;IAAO,CACX,CAAC;IAED8R,QAAQ,CAACuH,GAAG,CACV,cAAc,EACd,CAAC;MAAEzE,UAAU;MAAEssC;IAAS,CAAC,KAAK;MAC5B,IAAItsC,UAAU,KAAKssC,QAAQ,EAAE;QAC3B;MACF;MACA,IAAI,CAAC,CAAC8W,iBAAiB,CAAC9W,QAAQ,CAAC;MACjC,IAAI,CAAC,CAAC+W,gBAAgB,CAACrjD,UAAU,CAAC;IACpC,CAAC,EACD;MAAE5U;IAAO,CACX,CAAC;IACD8R,QAAQ,CAACuH,GAAG,CACV,cAAc,EACd,CAAC;MAAEzE;IAAW,CAAC,KAAK;MAClB,IAAI,CAAC,IAAI,CAACsjD,gBAAgB,CAACthD,GAAG,CAAChC,UAAU,CAAC,EAAE;QAC1C;MACF;MACA,IAAIA,UAAU,KAAK,IAAI,CAAC,CAAChB,SAAS,CAACQ,iBAAiB,EAAE;QACpD;MACF;MACA,IAAI,CAAC,CAAC6jD,gBAAgB,CAACrjD,UAAU,CAAC;IACpC,CAAC,EACD;MAAE5U;IAAO,CACX,CAAC;IACD8R,QAAQ,CAACuH,GAAG,CACV,cAAc,EACd,YAAY;MACV,MAAM,IAAI,CAAC,CAAC2+C,iBAAiB,CAAC,IAAI,CAAC,CAACpkD,SAAS,CAACQ,iBAAiB,CAAC;MAEhE,MAAM,IAAI,CAAC,CAACijD,SAAS,EAAEthC,sBAAsB,CAAC;QAC5ClwB,EAAE,EAAE,KAAK;QACTmM,IAAI,EAAE;MACR,CAAC,CAAC;MAEF,IAAI,CAAC,CAACklD,eAAe,EAAE3uD,OAAO,CAAC,CAAC;IAClC,CAAC,EACD;MAAEvI;IAAO,CACX,CAAC;IAED,IAAI;MACF,MAAM40B,aAAa,GAAG,MAAM,IAAI,CAAC,CAACA,aAAa,CAACjhB,WAAW,CAAC;MAC5D,IAAIA,WAAW,KAAK,IAAI,CAAC,CAACA,WAAW,EAAE;QACrC;MACF;MAEA,MAAM,IAAI,CAAC,CAAC0jD,SAAS,CAACvhC,aAAa,CAAC;QAClC0hC,OAAO;QACPC,gBAAgB;QAChBU,OAAO,EAAE;UACP7sD,QAAQ,EAAEE,SAAS,CAACF,QAAQ;UAC5ByB,QAAQ,EAAEvB,SAAS,CAACuB;QACtB,CAAC;QACDqrD,OAAO,EAAE;UACP,GAAGxjC,aAAa;UAChByjC,OAAO,EAAEX;QACX;MACF,CAAC,CAAC;MAEF5lD,QAAQ,CAACiB,QAAQ,CAAC,gBAAgB,EAAE;QAAEC,MAAM,EAAE;MAAK,CAAC,CAAC;IACvD,CAAC,CAAC,OAAOxV,KAAK,EAAE;MACdD,OAAO,CAACC,KAAK,CAAC,cAAc,EAAEA,KAAK,CAAC;MAEpC,MAAM,IAAI,CAAC,CAAC+5D,gBAAgB,CAAC,CAAC;MAC9B;IACF;IAEA,MAAM,IAAI,CAAC,CAACF,SAAS,EAAEthC,sBAAsB,CAAC;MAC5ClwB,EAAE,EAAE,KAAK;MACTmM,IAAI,EAAE;IACR,CAAC,CAAC;IACF,MAAM,IAAI,CAAC,CAACimD,gBAAgB,CAC1B,IAAI,CAAC,CAACrkD,SAAS,CAACQ,iBAAiB,EACd,IACrB,CAAC;IAGD9L,OAAO,CAACC,OAAO,CAAC,CAAC,CAACgT,IAAI,CAAC,MAAM;MAC3B,IAAI5H,WAAW,KAAK,IAAI,CAAC,CAACA,WAAW,EAAE;QACrC,IAAI,CAAC,CAACyjD,KAAK,GAAG,IAAI;MACpB;IACF,CAAC,CAAC;EACJ;EAEA,MAAMkB,gBAAgBA,CAAA,EAAG;IACvB,OAAO,IAAI,CAAC,CAACjB,SAAS,EAAEthC,sBAAsB,CAAC;MAC7ClwB,EAAE,EAAE,KAAK;MACTmM,IAAI,EAAE;IACR,CAAC,CAAC;EACJ;EAEA,MAAMumD,eAAeA,CAAA,EAAG;IACtB,OAAO,IAAI,CAAC,CAAClB,SAAS,EAAEthC,sBAAsB,CAAC;MAC7ClwB,EAAE,EAAE,KAAK;MACTmM,IAAI,EAAE;IACR,CAAC,CAAC;EACJ;EAEA,MAAMwmD,iBAAiBA,CAAA,EAAG;IACxB,IAAI,CAAC,IAAI,CAAC,CAACnB,SAAS,EAAE;MACpB;IACF;IACA,MAAM,IAAI,CAAC,CAACC,mBAAmB,EAAE\u002F+C,OAAO;IACxC,IAAI,CAAC,CAAC++C,mBAAmB,GAAGhvD,OAAO,CAACkQ,aAAa,CAAC,CAAC;IACnD,IAAI;MACF,MAAM,IAAI,CAAC,CAAC6+C,SAAS,CAACthC,sBAAsB,CAAC;QAC3ClwB,EAAE,EAAE,KAAK;QACTmM,IAAI,EAAE;MACR,CAAC,CAAC;IACJ,CAAC,CAAC,OAAO2f,EAAE,EAAE;MACX,IAAI,CAAC,CAAC2lC,mBAAmB,CAAC\u002FuD,OAAO,CAAC,CAAC;MACnC,IAAI,CAAC,CAAC+uD,mBAAmB,GAAG,IAAI;MAChC,MAAM3lC,EAAE;IACV;IAEA,MAAM,IAAI,CAAC,CAAC2lC,mBAAmB,CAAC\u002F+C,OAAO;EACzC;EAEA,MAAMkgD,gBAAgBA,CAAA,EAAG;IACvB,OAAO,IAAI,CAAC,CAACpB,SAAS,EAAEthC,sBAAsB,CAAC;MAC7ClwB,EAAE,EAAE,KAAK;MACTmM,IAAI,EAAE;IACR,CAAC,CAAC;EACJ;EAEA,IAAI0mD,cAAcA,CAAA,EAAG;IACnB,OAAO,IAAI,CAAC,CAACvB,iBAAiB,EAAE5+C,OAAO,IAAI,IAAI;EACjD;EAEA,IAAI6+C,KAAKA,CAAA,EAAG;IACV,OAAO,IAAI,CAAC,CAACA,KAAK;EACpB;EAKA,IAAIc,gBAAgBA,CAAA,EAAG;IACrB,OAAOx+D,MAAM,CAAC,IAAI,EAAE,kBAAkB,EAAE,IAAIgL,GAAG,CAAC,CAAC,CAAC;EACpD;EAKA,IAAIi0D,aAAaA,CAAA,EAAG;IAClB,OAAOj\u002FD,MAAM,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI4G,GAAG,CAAC,CAAC,CAAC;EACjD;EAEA,MAAM,CAACy3D,iBAAiBa,CAACt9B,MAAM,EAAE;IAC\u002FB,MAAM1nB,SAAS,GAAG,IAAI,CAAC,CAACA,SAAS;IAEjC,MAAMW,oBAAoB,GACxBX,SAAS,CAACW,oBAAoB,IAAIX,SAAS,CAACilD,0BAA0B;IAExE,MAAM;MAAEhzD,EAAE;MAAEizD,QAAQ;MAAEC,OAAO;MAAEv4D;IAAM,CAAC,GAAG86B,MAAM;IAC\u002FC,IAAI,CAACz1B,EAAE,EAAE;MAYP,QAAQkzD,OAAO;QACb,KAAK,OAAO;UACVx7D,OAAO,CAACsyB,KAAK,CAAC,CAAC;UACf;QACF,KAAK,OAAO;UACVtyB,OAAO,CAACC,KAAK,CAACgD,KAAK,CAAC;UACpB;QACF,KAAK,QAAQ;UACX,IAAI,CAAC+T,oBAAoB,EAAE;YACzB,MAAMykD,KAAK,GAAG1uD,0BAA0B,CAAC9J,KAAK,CAAC;YAC\u002FCoT,SAAS,CAACnJ,UAAU,GAAGuuD,KAAK,CAACvuD,UAAU;UACzC;UACA;QACF,KAAK,UAAU;UACbmJ,SAAS,CAACQ,iBAAiB,GAAG5T,KAAK,GAAG,CAAC;UACvC;QACF,KAAK,OAAO;UACV,MAAMoT,SAAS,CAACqlD,YAAY;UAC5B,IAAI,CAAC,CAACnnD,QAAQ,CAACiB,QAAQ,CAAC,OAAO,EAAE;YAAEC,MAAM,EAAE;UAAK,CAAC,CAAC;UAClD;QACF,KAAK,SAAS;UACZzV,OAAO,CAAC27D,GAAG,CAAC14D,KAAK,CAAC;UAClB;QACF,KAAK,MAAM;UACT,IAAI,CAAC+T,oBAAoB,EAAE;YACzBX,SAAS,CAACk5C,iBAAiB,GAAGtsD,KAAK;UACrC;UACA;QACF,KAAK,QAAQ;UACX,IAAI,CAAC,CAACsR,QAAQ,CAACiB,QAAQ,CAAC,UAAU,EAAE;YAAEC,MAAM,EAAE;UAAK,CAAC,CAAC;UACrD;QACF,KAAK,WAAW;UACdY,SAAS,CAACQ,iBAAiB,GAAG,CAAC;UAC\u002FB;QACF,KAAK,UAAU;UACbR,SAAS,CAACQ,iBAAiB,GAAGR,SAAS,CAACK,UAAU;UAClD;QACF,KAAK,UAAU;UACbL,SAAS,CAACgE,QAAQ,CAAC,CAAC;UACpB;QACF,KAAK,UAAU;UACbhE,SAAS,CAACiE,YAAY,CAAC,CAAC;UACxB;QACF,KAAK,YAAY;UACf,IAAI,CAACtD,oBAAoB,EAAE;YACzBX,SAAS,CAACulD,aAAa,CAAC,CAAC;UAC3B;UACA;QACF,KAAK,aAAa;UAChB,IAAI,CAAC5kD,oBAAoB,EAAE;YACzBX,SAAS,CAACwlD,aAAa,CAAC,CAAC;UAC3B;UACA;QACF,KAAK,mBAAmB;UACtB,IAAI,CAAC,CAAC9B,mBAAmB,EAAE\u002FuD,OAAO,CAAC,CAAC;UACpC,IAAI,CAAC,CAAC+uD,mBAAmB,GAAG,IAAI;UAChC;MACJ;MACA;IACF;IAEA,IAAI\u002FiD,oBAAoB,IAAI+mB,MAAM,CAACsP,KAAK,EAAE;MACxC;IACF;IACA,OAAOtP,MAAM,CAACz1B,EAAE;IAChB,OAAOy1B,MAAM,CAACw9B,QAAQ;IAEtB,MAAMr0D,GAAG,GAAGq0D,QAAQ,GAAG,CAACjzD,EAAE,EAAE,GAAGizD,QAAQ,CAAC,GAAG,CAACjzD,EAAE,CAAC;IAC\u002FC,KAAK,MAAMwzD,SAAS,IAAI50D,GAAG,EAAE;MAC3B,MAAMvH,OAAO,GAAGuL,QAAQ,CAAC2B,aAAa,CACpC,qBAAqBivD,SAAS,IAChC,CAAC;MACD,IAAIn8D,OAAO,EAAE;QACXA,OAAO,CAAC+4B,aAAa,CAAC,IAAI49B,WAAW,CAAC,mBAAmB,EAAE;UAAEv4B;QAAO,CAAC,CAAC,CAAC;MACzE,CAAC,MAAM;QAEL,IAAI,CAAC,CAAC3nB,WAAW,EAAEq8C,iBAAiB,CAACsJ,QAAQ,CAACD,SAAS,EAAE\u002F9B,MAAM,CAAC;MAClE;IACF;EACF;EAEA,MAAM,CAAC28B,gBAAgBsB,CAAC3kD,UAAU,EAAE2vC,UAAU,GAAG,KAAK,EAAE;IACtD,MAAM5wC,WAAW,GAAG,IAAI,CAAC,CAACA,WAAW;MACnC6lD,YAAY,GAAG,IAAI,CAACb,aAAa;IAEnC,IAAIpU,UAAU,EAAE;MACd,IAAI,CAAC,CAAC2S,eAAe,GAAG5uD,OAAO,CAACkQ,aAAa,CAAC,CAAC;IACjD;IACA,IAAI,CAAC,IAAI,CAAC,CAAC0+C,eAAe,EAAE;MAC1B;IACF;IACA,MAAMuC,QAAQ,GAAG,IAAI,CAAC,CAAC7lD,SAAS,CAAC8lD,WAAW,CAAe9kD,UAAU,GAAG,CAAC,CAAC;IAE1E,IAAI6kD,QAAQ,EAAE5C,cAAc,KAAK77D,eAAe,CAACI,QAAQ,EAAE;MACzD,IAAI,CAAC88D,gBAAgB,CAAC9xD,GAAG,CAACwO,UAAU,CAAC;MACrC;IACF;IACA,IAAI,CAACsjD,gBAAgB,CAAC\u002F2C,MAAM,CAACvM,UAAU,CAAC;IAExC,MAAM+kD,cAAc,GAAG,CAAC,YAAY;MAElC,MAAMtB,OAAO,GAAG,OAAO,CAACmB,YAAY,CAAC5iD,GAAG,CAAChC,UAAU,CAAC,GAChD6kD,QAAQ,CAAC\u002FmB,OAAO,EAAEmlB,YAAY,CAAC,CAAC,GAChC,IAAI,CAAC;MACT,IAAIlkD,WAAW,KAAK,IAAI,CAAC,CAACA,WAAW,EAAE;QACrC;MACF;MAEA,MAAM,IAAI,CAAC,CAAC0jD,SAAS,EAAEthC,sBAAsB,CAAC;QAC5ClwB,EAAE,EAAE,MAAM;QACVmM,IAAI,EAAE,UAAU;QAChB4C,UAAU;QACVyjD;MACF,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC;IACJmB,YAAY,CAAC94D,GAAG,CAACkU,UAAU,EAAE+kD,cAAc,CAAC;EAC9C;EAEA,MAAM,CAAC3B,iBAAiB4B,CAAChlD,UAAU,EAAE;IACnC,MAAMjB,WAAW,GAAG,IAAI,CAAC,CAACA,WAAW;MACnC6lD,YAAY,GAAG,IAAI,CAACb,aAAa;IAEnC,IAAI,CAAC,IAAI,CAAC,CAACzB,eAAe,EAAE;MAC1B;IACF;IACA,IAAI,IAAI,CAACgB,gBAAgB,CAACthD,GAAG,CAAChC,UAAU,CAAC,EAAE;MACzC;IACF;IACA,MAAM+kD,cAAc,GAAGH,YAAY,CAACrnD,GAAG,CAACyC,UAAU,CAAC;IACnD,IAAI,CAAC+kD,cAAc,EAAE;MACnB;IACF;IACAH,YAAY,CAAC94D,GAAG,CAACkU,UAAU,EAAE,IAAI,CAAC;IAGlC,MAAM+kD,cAAc;IACpB,IAAIhmD,WAAW,KAAK,IAAI,CAAC,CAACA,WAAW,EAAE;MACrC;IACF;IAEA,MAAM,IAAI,CAAC,CAAC0jD,SAAS,EAAEthC,sBAAsB,CAAC;MAC5ClwB,EAAE,EAAE,MAAM;MACVmM,IAAI,EAAE,WAAW;MACjB4C;IACF,CAAC,CAAC;EACJ;EAEA,CAACkjD,aAAa+B,CAAA,EAAG;IACf,IAAI,CAAC,CAAC1C,iBAAiB,GAAG7uD,OAAO,CAACkQ,aAAa,CAAC,CAAC;IAEjD,IAAI,IAAI,CAAC,CAAC6+C,SAAS,EAAE;MACnB,MAAM,IAAIxhD,KAAK,CAAC,2CAA2C,CAAC;IAC9D;IACA,OAAO,IAAI,CAAC,CAACwE,gBAAgB,CAACQ,eAAe,CAAC,CAAC;EACjD;EAEA,MAAM,CAAC08C,gBAAgBuC,CAAA,EAAG;IACxB,IAAI,CAAC,IAAI,CAAC,CAACzC,SAAS,EAAE;MACpB,IAAI,CAAC,CAAC1jD,WAAW,GAAG,IAAI;MAExB,IAAI,CAAC,CAACwjD,iBAAiB,EAAE5uD,OAAO,CAAC,CAAC;MAClC;IACF;IACA,IAAI,IAAI,CAAC,CAAC2uD,eAAe,EAAE;MACzB,MAAM5uD,OAAO,CAACyxD,IAAI,CAAC,CACjB,IAAI,CAAC,CAAC7C,eAAe,CAAC3+C,OAAO,EAC7B,IAAIjQ,OAAO,CAACC,OAAO,IAAI;QAErBuB,UAAU,CAACvB,OAAO,EAAE,IAAI,CAAC;MAC3B,CAAC,CAAC,CACH,CAAC,CAACstB,KAAK,CAAC,MAAM,CAEf,CAAC,CAAC;MACF,IAAI,CAAC,CAACqhC,eAAe,GAAG,IAAI;IAC9B;IACA,IAAI,CAAC,CAACvjD,WAAW,GAAG,IAAI;IAExB,IAAI;MACF,MAAM,IAAI,CAAC,CAAC0jD,SAAS,CAACnhC,cAAc,CAAC,CAAC;IACxC,CAAC,CAAC,MAAM,CAAC;IAET,IAAI,CAAC,CAACohC,mBAAmB,EAAE7hC,MAAM,CAAC,IAAI5f,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACpE,IAAI,CAAC,CAACyhD,mBAAmB,GAAG,IAAI;IAEhC,IAAI,CAAC,CAACnT,oBAAoB,EAAEvrC,KAAK,CAAC,CAAC;IACnC,IAAI,CAAC,CAACurC,oBAAoB,GAAG,IAAI;IAEjC,IAAI,CAAC+T,gBAAgB,CAACroC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC8oC,aAAa,CAAC9oC,KAAK,CAAC,CAAC;IAE1B,IAAI,CAAC,CAACwnC,SAAS,GAAG,IAAI;IACtB,IAAI,CAAC,CAACD,KAAK,GAAG,KAAK;IAEnB,IAAI,CAAC,CAACD,iBAAiB,EAAE5uD,OAAO,CAAC,CAAC;EACpC;AACF;;;ACtduB;AAEvB,MAAMyxD,iBAAiB,GAAG,iBAAiB;AAC3C,MAAMC,iBAAiB,GAAG,GAAG;AAC7B,MAAMC,sBAAsB,GAAG,iBAAiB;AAChD,MAAMC,qBAAqB,GAAG,wBAAwB;AAuCtD,MAAMC,UAAU,CAAC;EACf,CAAClpC,KAAK,GAAG,KAAK;EAEd,CAACmpC,OAAO,GAAG,IAAI;EAEf,CAACC,mBAAmB,GAAG,IAAI;EAE3B,CAACj3D,KAAK,GAAG,IAAI;EAKbyF,WAAWA,CAAC;IAAEod,QAAQ;IAAEpU,QAAQ;IAAEmf;EAAK,CAAC,EAAE;IACxC,IAAI,CAAC8Y,MAAM,GAAG,KAAK;IACnB,IAAI,CAACgB,MAAM,GAAGrvC,WAAW,CAACE,MAAM;IAChC,IAAI,CAAC2+D,gBAAgB,GAAG,KAAK;IAC7B,IAAI,CAACC,wBAAwB,GAAG,KAAK;IAMrC,IAAI,CAACC,SAAS,GAAG,IAAI;IACrB,IAAI,CAACC,kBAAkB,GAAG,IAAI;IAE9B,IAAI,CAACC,cAAc,GAAGz0C,QAAQ,CAACy0C,cAAc;IAC7C,IAAI,CAACC,gBAAgB,GAAG10C,QAAQ,CAAC00C,gBAAgB;IACjD,IAAI,CAACjY,YAAY,GAAGz8B,QAAQ,CAACy8B,YAAY;IACzC,IAAI,CAACkY,OAAO,GAAG30C,QAAQ,CAAC20C,OAAO;IAE\u002FB,IAAI,CAACC,eAAe,GAAG50C,QAAQ,CAAC40C,eAAe;IAC\u002FC,IAAI,CAACC,aAAa,GAAG70C,QAAQ,CAAC60C,aAAa;IAC3C,IAAI,CAACC,iBAAiB,GAAG90C,QAAQ,CAAC80C,iBAAiB;IACnD,IAAI,CAACC,YAAY,GAAG\u002F0C,QAAQ,CAAC+0C,YAAY;IAEzC,IAAI,CAACC,aAAa,GAAGh1C,QAAQ,CAACg1C,aAAa;IAC3C,IAAI,CAACC,WAAW,GAAGj1C,QAAQ,CAACi1C,WAAW;IACvC,IAAI,CAACC,eAAe,GAAGl1C,QAAQ,CAACk1C,eAAe;IAC\u002FC,IAAI,CAACC,UAAU,GAAGn1C,QAAQ,CAACm1C,UAAU;IAErC,IAAI,CAACC,yBAAyB,GAAGp1C,QAAQ,CAACq1C,wBAAwB;IAElE,IAAI,CAACzpD,QAAQ,GAAGA,QAAQ;IAExB,IAAI,CAAC,CAACof,KAAK,GAAGD,IAAI,CAACK,YAAY,CAAC,CAAC,KAAK,KAAK;IAC3C,IAAI,CAAC,CAACwf,iBAAiB,CAAC,CAAC;EAC3B;EAEAn1B,KAAKA,CAAA,EAAG;IACN,IAAI,CAAC4+C,gBAAgB,GAAG,KAAK;IAC7B,IAAI,CAACC,wBAAwB,GAAG,KAAK;IAErC,IAAI,CAAC,CAACgB,kBAAkB,CAAe,IAAI,CAAC;IAC5C,IAAI,CAACC,UAAU,CAAC\u002F\u002FD,WAAW,CAACE,MAAM,CAAC;IAEnC,IAAI,CAACm\u002FD,aAAa,CAACh8B,QAAQ,GAAG,KAAK;IACnC,IAAI,CAACi8B,iBAAiB,CAACj8B,QAAQ,GAAG,KAAK;IACvC,IAAI,CAACk8B,YAAY,CAACl8B,QAAQ,GAAG,KAAK;IAClC,IAAI,CAACu8B,yBAAyB,CAACv8B,QAAQ,GAAG,IAAI;EAChD;EAKA,IAAI28B,WAAWA,CAAA,EAAG;IAChB,OAAO,IAAI,CAAC3xB,MAAM,GAAG,IAAI,CAACgB,MAAM,GAAGrvC,WAAW,CAACC,IAAI;EACrD;EAMAggE,cAAcA,CAAC94D,IAAI,GAAGnH,WAAW,CAACC,IAAI,EAAE;IACtC,IAAI,IAAI,CAAC4+D,gBAAgB,EAAE;MACzB;IACF;IACA,IAAI,CAACA,gBAAgB,GAAG,IAAI;IAI5B,IAAI13D,IAAI,KAAKnH,WAAW,CAACC,IAAI,IAAIkH,IAAI,KAAKnH,WAAW,CAACJ,OAAO,EAAE;MAC7D,IAAI,CAAC,CAAC26B,aAAa,CAAC,CAAC;MACrB;IACF;IACA,IAAI,CAACwlC,UAAU,CAAC54D,IAAI,EAAoB,IAAI,CAAC;IAI7C,IAAI,CAAC,IAAI,CAAC23D,wBAAwB,EAAE;MAClC,IAAI,CAAC,CAACvkC,aAAa,CAAC,CAAC;IACvB;EACF;EAQAwlC,UAAUA,CAAC54D,IAAI,EAAE+4D,SAAS,GAAG,KAAK,EAAE;IAClC,MAAMC,aAAa,GAAGh5D,IAAI,KAAK,IAAI,CAACkoC,MAAM;IAC1C,IAAI8qB,cAAc,GAAG,KAAK;IAE1B,QAAQhzD,IAAI;MACV,KAAKnH,WAAW,CAACC,IAAI;QACnB,IAAI,IAAI,CAACouC,MAAM,EAAE;UACf,IAAI,CAACxQ,KAAK,CAAC,CAAC;QACd;QACA;MACF,KAAK79B,WAAW,CAACE,MAAM;QACrB,IAAI,IAAI,CAACmuC,MAAM,IAAI8xB,aAAa,EAAE;UAChChG,cAAc,GAAG,IAAI;QACvB;QACA;MACF,KAAKn6D,WAAW,CAACG,OAAO;QACtB,IAAI,IAAI,CAACk\u002FD,aAAa,CAACh8B,QAAQ,EAAE;UAC\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\u002F\u002FD,WAAW,CAACE,MAAM,CAAC;IACrC,CAAC,CAAC;IAEF,IAAI,CAACm\u002FD,aAAa,CAACj7D,gBAAgB,CAAC,OAAO,EAAE,MAAM;MACjD,IAAI,CAAC27D,UAAU,CAAC\u002F\u002FD,WAAW,CAACG,OAAO,CAAC;IACtC,CAAC,CAAC;IACF,IAAI,CAACk\u002FD,aAAa,CAACj7D,gBAAgB,CAAC,UAAU,EAAE,MAAM;MACpDgS,QAAQ,CAACiB,QAAQ,CAAC,mBAAmB,EAAE;QAAEC,MAAM,EAAE;MAAK,CAAC,CAAC;IAC1D,CAAC,CAAC;IAEF,IAAI,CAACgoD,iBAAiB,CAACl7D,gBAAgB,CAAC,OAAO,EAAE,MAAM;MACrD,IAAI,CAAC27D,UAAU,CAAC\u002F\u002FD,WAAW,CAACI,WAAW,CAAC;IAC1C,CAAC,CAAC;IAEF,IAAI,CAACm\u002FD,YAAY,CAACn7D,gBAAgB,CAAC,OAAO,EAAE,MAAM;MAChD,IAAI,CAAC27D,UAAU,CAAC\u002F\u002FD,WAAW,CAACK,MAAM,CAAC;IACrC,CAAC,CAAC;IACF,IAAI,CAACk\u002FD,YAAY,CAACn7D,gBAAgB,CAAC,UAAU,EAAE,MAAM;MACnDgS,QAAQ,CAACiB,QAAQ,CAAC,aAAa,EAAE;QAAEC,MAAM,EAAE;MAAK,CAAC,CAAC;IACpD,CAAC,CAAC;IAGF,IAAI,CAACsoD,yBAAyB,CAACx7D,gBAAgB,CAAC,OAAO,EAAE,MAAM;MAC7DgS,QAAQ,CAACiB,QAAQ,CAAC,oBAAoB,EAAE;QAAEC,MAAM,EAAE;MAAK,CAAC,CAAC;IAC3D,CAAC,CAAC;IAGF,MAAMkpD,YAAY,GAAGA,CAACp1C,KAAK,EAAElc,MAAM,EAAE\u002FH,IAAI,KAAK;MAC5C+H,MAAM,CAACm0B,QAAQ,GAAG,CAACjY,KAAK;MAExB,IAAIA,KAAK,EAAE;QACT,IAAI,CAAC,CAACi1C,kBAAkB,CAAC,CAAC;MAC5B,CAAC,MAAM,IAAI,IAAI,CAAChxB,MAAM,KAAKloC,IAAI,EAAE;QAG\u002FB,IAAI,CAAC44D,UAAU,CAAC\u002F\u002FD,WAAW,CAACE,MAAM,CAAC;MACrC;IACF,CAAC;IAEDkW,QAAQ,CAACuH,GAAG,CAAC,eAAe,EAAEpa,GAAG,IAAI;MACnCi9D,YAAY,CAACj9D,GAAG,CAACwrD,YAAY,EAAE,IAAI,CAACsQ,aAAa,EAAEr\u002FD,WAAW,CAACG,OAAO,CAAC;MAEvEoD,GAAG,CAAC0rD,yBAAyB,CAACpvC,IAAI,CAAC4gD,OAAO,IAAI;QAC5C,IAAI,CAAC,IAAI,CAAC5B,gBAAgB,EAAE;UAC1B;QACF;QACA,IAAI,CAACe,yBAAyB,CAACv8B,QAAQ,GAAG,CAACo9B,OAAO;MACpD,CAAC,CAAC;IACJ,CAAC,CAAC;IAEFrqD,QAAQ,CAACuH,GAAG,CAAC,mBAAmB,EAAEpa,GAAG,IAAI;MACvCi9D,YAAY,CACVj9D,GAAG,CAACovC,gBAAgB,EACpB,IAAI,CAAC2sB,iBAAiB,EACtBt\u002FD,WAAW,CAACI,WACd,CAAC;IACH,CAAC,CAAC;IAEFgW,QAAQ,CAACuH,GAAG,CAAC,cAAc,EAAEpa,GAAG,IAAI;MAClCi9D,YAAY,CAACj9D,GAAG,CAACkqD,WAAW,EAAE,IAAI,CAAC8R,YAAY,EAAEv\u002FD,WAAW,CAACK,MAAM,CAAC;IACtE,CAAC,CAAC;IAGF+V,QAAQ,CAACuH,GAAG,CAAC,yBAAyB,EAAEpa,GAAG,IAAI;MAC7C,IACEA,GAAG,CAACO,KAAK,KAAKnE,qBAAqB,CAACE,MAAM,IAC1C,IAAI,CAACmgE,WAAW,KAAKhgE,WAAW,CAACE,MAAM,EACvC;QACA,IAAI,CAAC8+D,kBAAkB,CAAC,CAAC;MAC3B;IACF,CAAC,CAAC;IAGF,IAAI,CAACG,OAAO,CAAC\u002F6D,gBAAgB,CAAC,WAAW,EAAEb,GAAG,IAAI;MAChD,IAAIA,GAAG,CAAC2L,MAAM,KAAK,CAAC,EAAE;QACpB;MACF;MAGA+vD,cAAc,CAACx8D,SAAS,CAACiI,GAAG,CAAC8zD,sBAAsB,CAAC;MAEpD,IAAI,CAAC,CAACG,OAAO,GAAG,IAAI3hD,eAAe,CAAC,CAAC;MACrC,MAAM3G,IAAI,GAAG;QAAE\u002FR,MAAM,EAAE,IAAI,CAAC,CAACq6D,OAAO,CAACr6D;MAAO,CAAC;MAE7Cb,MAAM,CAACW,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,CAACs8D,SAAS,CAACpjD,IAAI,CAAC,IAAI,CAAC,EAAEjH,IAAI,CAAC;MACtE5S,MAAM,CAACW,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAACu8D,OAAO,CAACrjD,IAAI,CAAC,IAAI,CAAC,EAAEjH,IAAI,CAAC;MAClE5S,MAAM,CAACW,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAACu8D,OAAO,CAACrjD,IAAI,CAAC,IAAI,CAAC,EAAEjH,IAAI,CAAC;IACjE,CAAC,CAAC;IAEFD,QAAQ,CAACuH,GAAG,CAAC,QAAQ,EAAEpa,GAAG,IAAI;MAG5B,IAAIA,GAAG,CAAC+T,MAAM,KAAK7T,MAAM,EAAE;QACzB;MACF;MAEA,IAAI,CAAC,CAACm7D,mBAAmB,GAAG,IAAI;MAEhC,IAAI,CAAC,IAAI,CAAC,CAACj3D,KAAK,EAAE;QAEhB;MACF;MAGA,IAAI,CAAC,IAAI,CAAC0mC,MAAM,EAAE;QAChB,IAAI,CAAC,CAACuyB,WAAW,CAAC,IAAI,CAAC,CAACj5D,KAAK,CAAC;QAC9B;MACF;MACAs3D,cAAc,CAACx8D,SAAS,CAACiI,GAAG,CAAC8zD,sBAAsB,CAAC;MACpD,MAAMqC,OAAO,GAAG,IAAI,CAAC,CAACD,WAAW,CAAC,IAAI,CAAC,CAACj5D,KAAK,CAAC;MAE9CiF,OAAO,CAACC,OAAO,CAAC,CAAC,CAACgT,IAAI,CAAC,MAAM;QAC3Bo\u002FC,cAAc,CAACx8D,SAAS,CAAC+K,MAAM,CAACgxD,sBAAsB,CAAC;QAGvD,IAAIqC,OAAO,EAAE;UACXzqD,QAAQ,CAACiB,QAAQ,CAAC,QAAQ,EAAE;YAAEC,MAAM,EAAE;UAAK,CAAC,CAAC;QAC\u002FC;MACF,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ;EAKA,IAAIsnD,mBAAmBA,CAAA,EAAG;IACxB,OAAQ,IAAI,CAAC,CAACA,mBAAmB,KAAK,IAAI,CAACK,cAAc,CAAC18D,WAAW;EACvE;EAKA,CAACq+D,WAAWE,CAACn5D,KAAK,GAAG,CAAC,EAAE;IAGtB,MAAMo5D,QAAQ,GAAG36D,IAAI,CAACC,KAAK,CAAC,IAAI,CAACu4D,mBAAmB,GAAG,CAAC,CAAC;IACzD,IAAIj3D,KAAK,GAAGo5D,QAAQ,EAAE;MACpBp5D,KAAK,GAAGo5D,QAAQ;IAClB;IACA,IAAIp5D,KAAK,GAAG42D,iBAAiB,EAAE;MAC7B52D,KAAK,GAAG42D,iBAAiB;IAC3B;IAEA,IAAI52D,KAAK,KAAK,IAAI,CAAC,CAACA,KAAK,EAAE;MACzB,OAAO,KAAK;IACd;IACA,IAAI,CAAC,CAACA,KAAK,GAAGA,KAAK;IAEnBmF,QAAQ,CAACW,WAAW,CAAC6wD,iBAAiB,EAAE,GAAG32D,KAAK,IAAI,CAAC;IACrD,OAAO,IAAI;EACb;EAEA,CAAC+4D,SAASM,CAACz9D,GAAG,EAAE;IACd,IAAIoE,KAAK,GAAGpE,GAAG,CAAC6wC,OAAO;IAEvB,IAAI,IAAI,CAAC,CAAC5e,KAAK,EAAE;MACf7tB,KAAK,GAAG,IAAI,CAACi3D,mBAAmB,GAAGj3D,KAAK;IAC1C;IACA,IAAI,CAAC,CAACi5D,WAAW,CAACj5D,KAAK,CAAC;EAC1B;EAEA,CAACg5D,OAAOM,CAAC19D,GAAG,EAAE;IAEZ,IAAI,CAAC07D,cAAc,CAACx8D,SAAS,CAAC+K,MAAM,CAACgxD,sBAAsB,CAAC;IAE5D,IAAI,CAACpoD,QAAQ,CAACiB,QAAQ,CAAC,QAAQ,EAAE;MAAEC,MAAM,EAAE;IAAK,CAAC,CAAC;IAElD,IAAI,CAAC,CAACqnD,OAAO,EAAEzhD,KAAK,CAAC,CAAC;IACtB,IAAI,CAAC,CAACyhD,OAAO,GAAG,IAAI;EACtB;AACF;;;ACteqE;AACvB;AACE;AAEhD,MAAMuC,mBAAmB,GAAG,CAAC;AAC7B,MAAMC,qBAAqB,GAAG,CAAC;AAC\u002FB,MAAMC,eAAe,GAAG,EAAE;AAE1B,SAASC,UAAUA,CAAC16D,CAAC,EAAE;EAGrBA,CAAC,CAACgB,KAAK,GAAG,CAAC;EACXhB,CAAC,CAACiB,MAAM,GAAG,CAAC;AACd;AA0BA,MAAM05D,gBAAgB,CAAC;EACrB,OAAO,CAACC,UAAU,GAAG,IAAI;EAEzB,OAAOC,SAASA,CAAC75D,KAAK,EAAEC,MAAM,EAAE;IAC9B,MAAM25D,UAAU,GAAI,IAAI,CAAC,CAACA,UAAU,KAAKx0D,QAAQ,CAACyC,aAAa,CAAC,QAAQ,CAAE;IAC1E+xD,UAAU,CAAC55D,KAAK,GAAGA,KAAK;IACxB45D,UAAU,CAAC35D,MAAM,GAAGA,MAAM;IAI1B,MAAMouD,GAAG,GAAGuL,UAAU,CAACtL,UAAU,CAAC,IAAI,EAAE;MAAEwL,KAAK,EAAE;IAAM,CAAC,CAAC;IACzDzL,GAAG,CAACn7B,IAAI,CAAC,CAAC;IACVm7B,GAAG,CAACE,SAAS,GAAG,oBAAoB;IACpCF,GAAG,CAACG,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAExuD,KAAK,EAAEC,MAAM,CAAC;IACjCouD,GAAG,CAACI,OAAO,CAAC,CAAC;IACb,OAAO,CAACmL,UAAU,EAAEA,UAAU,CAACtL,UAAU,CAAC,IAAI,CAAC,CAAC;EAClD;EAEA,OAAOyL,aAAaA,CAAA,EAAG;IACrB,IAAI,IAAI,CAAC,CAACH,UAAU,EAAE;MACpBF,UAAU,CAAC,IAAI,CAAC,CAACE,UAAU,CAAC;IAC9B;IACA,IAAI,CAAC,CAACA,UAAU,GAAG,IAAI;EACzB;AACF;AAKA,MAAMI,gBAAgB,CAAC;EAIrBv0D,WAAWA,CAAC;IACVQ,SAAS;IACTwI,QAAQ;IACRjM,EAAE;IACFy3D,eAAe;IACftlD,4BAA4B;IAC5ByjC,WAAW;IACX8hB,cAAc;IACdjuD,eAAe;IACftC,YAAY;IACZwwD,UAAU;IACV9sD;EACF,CAAC,EAAE;IACD,IAAI,CAAC7K,EAAE,GAAGA,EAAE;IACZ,IAAI,CAAC6vD,WAAW,GAAG,WAAW,GAAG7vD,EAAE;IACnC,IAAI,CAAC43D,SAAS,GAAG,IAAI;IAErB,IAAI,CAAC\u002FqB,OAAO,GAAG,IAAI;IACnB,IAAI,CAACr+B,QAAQ,GAAG,CAAC;IACjB,IAAI,CAAC87C,QAAQ,GAAGmN,eAAe;IAC\u002FB,IAAI,CAACI,aAAa,GAAGJ,eAAe,CAACjpD,QAAQ;IAC7C,IAAI,CAACm+C,6BAA6B,GAAGx6C,4BAA4B,IAAI,IAAI;IACzE,IAAI,CAAC1I,eAAe,GAAGA,eAAe,IAAIuC,UAAU,CAACM,GAAG,CAAC,iBAAiB,CAAC;IAC3E,IAAI,CAACnF,YAAY,GAAGA,YAAY,IAAI6E,UAAU,CAACM,GAAG,CAAC,cAAc,CAAC;IAClE,IAAI,CAACqrD,UAAU,GAAGA,UAAU,IAAI,IAAI;IACpC,IAAI,CAAC9sD,SAAS,GAAGA,SAAS,IAAI,KAAK;IAEnC,IAAI,CAACoB,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAAC2pC,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAAC8hB,cAAc,GAAGA,cAAc;IAEpC,IAAI,CAACnL,UAAU,GAAG,IAAI;IACtB,IAAI,CAACyE,cAAc,GAAG77D,eAAe,CAACC,OAAO;IAC7C,IAAI,CAAC62B,MAAM,GAAG,IAAI;IAElB,MAAMrb,MAAM,GAAGhO,QAAQ,CAACyC,aAAa,CAAC,GAAG,CAAC;IAC1CuL,MAAM,CAACT,IAAI,GAAGylC,WAAW,CAACplC,YAAY,CAAC,QAAQ,GAAGxQ,EAAE,CAAC;IACrD4Q,MAAM,CAAC3L,YAAY,CAAC,cAAc,EAAE,wBAAwB,CAAC;IAC7D2L,MAAM,CAAC3L,YAAY,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC6yD,YAAY,CAAC;IACzDlnD,MAAM,CAACP,OAAO,GAAG,YAAY;MAC3BulC,WAAW,CAACnmC,QAAQ,CAACzP,EAAE,CAAC;MACxB,OAAO,KAAK;IACd,CAAC;IACD,IAAI,CAAC4Q,MAAM,GAAGA,MAAM;IAEpB,MAAM9T,GAAG,GAAG8F,QAAQ,CAACyC,aAAa,CAAC,KAAK,CAAC;IACzCvI,GAAG,CAACmqC,SAAS,GAAG,WAAW;IAC3BnqC,GAAG,CAACmI,YAAY,CAAC,kBAAkB,EAAE,IAAI,CAACjF,EAAE,CAAC;IAC7C,IAAI,CAAClD,GAAG,GAAGA,GAAG;IACd,IAAI,CAAC,CAACi7D,UAAU,CAAC,CAAC;IAElB,MAAMn1C,GAAG,GAAGhgB,QAAQ,CAACyC,aAAa,CAAC,KAAK,CAAC;IACzCud,GAAG,CAACqkB,SAAS,GAAG,gBAAgB;IAChC,IAAI,CAAC+wB,eAAe,GAAGp1C,GAAG;IAE1B9lB,GAAG,CAACi6B,MAAM,CAACnU,GAAG,CAAC;IACfhS,MAAM,CAACmmB,MAAM,CAACj6B,GAAG,CAAC;IAClB2G,SAAS,CAACszB,MAAM,CAACnmB,MAAM,CAAC;EAC1B;EAEA,CAACmnD,UAAUE,CAAA,EAAG;IACZ,MAAM;MAAEz6D,KAAK;MAAEC;IAAO,CAAC,GAAG,IAAI,CAAC6sD,QAAQ;IACvC,MAAM4N,KAAK,GAAG16D,KAAK,GAAGC,MAAM;IAE5B,IAAI,CAAC06D,WAAW,GAAGlB,eAAe;IAClC,IAAI,CAACmB,YAAY,GAAI,IAAI,CAACD,WAAW,GAAGD,KAAK,GAAI,CAAC;IAClD,IAAI,CAACnN,KAAK,GAAG,IAAI,CAACoN,WAAW,GAAG36D,KAAK;IAErC,MAAM;MAAEsF;IAAM,CAAC,GAAG,IAAI,CAAChG,GAAG;IAC1BgG,KAAK,CAACQ,WAAW,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAAC60D,WAAW,IAAI,CAAC;IAC\u002FDr1D,KAAK,CAACQ,WAAW,CAAC,oBAAoB,EAAE,GAAG,IAAI,CAAC80D,YAAY,IAAI,CAAC;EACnE;EAEAC,UAAUA,CAACxrB,OAAO,EAAE;IAClB,IAAI,CAACA,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACgrB,aAAa,GAAGhrB,OAAO,CAAC3vC,MAAM;IACnC,MAAMo7D,aAAa,GAAG,CAAC,IAAI,CAAC9pD,QAAQ,GAAG,IAAI,CAACqpD,aAAa,IAAI,GAAG;IAChE,IAAI,CAACvN,QAAQ,GAAGzd,OAAO,CAACwf,WAAW,CAAC;MAAEtB,KAAK,EAAE,CAAC;MAAEv8C,QAAQ,EAAE8pD;IAAc,CAAC,CAAC;IAC1E,IAAI,CAACxiD,KAAK,CAAC,CAAC;EACd;EAEAA,KAAKA,CAAA,EAAG;IACN,IAAI,CAACyiD,eAAe,CAAC,CAAC;IACtB,IAAI,CAACvH,cAAc,GAAG77D,eAAe,CAACC,OAAO;IAE7C,IAAI,CAAC0H,GAAG,CAACooB,eAAe,CAAC,aAAa,CAAC;IACvC,IAAI,CAACszC,KAAK,EAAEC,WAAW,CAAC,IAAI,CAACT,eAAe,CAAC;IAC7C,IAAI,CAAC,CAACD,UAAU,CAAC,CAAC;IAElB,IAAI,IAAI,CAACS,KAAK,EAAE;MACd,IAAI,CAACA,KAAK,CAACtzC,eAAe,CAAC,KAAK,CAAC;MACjC,OAAO,IAAI,CAACszC,KAAK;IACnB;EACF;EAEA7N,MAAMA,CAAC;IAAEn8C,QAAQ,GAAG;EAAK,CAAC,EAAE;IAC1B,IAAI,OAAOA,QAAQ,KAAK,QAAQ,EAAE;MAChC,IAAI,CAACA,QAAQ,GAAGA,QAAQ;IAC1B;IACA,MAAM8pD,aAAa,GAAG,CAAC,IAAI,CAAC9pD,QAAQ,GAAG,IAAI,CAACqpD,aAAa,IAAI,GAAG;IAChE,IAAI,CAACvN,QAAQ,GAAG,IAAI,CAACA,QAAQ,CAAC9kC,KAAK,CAAC;MAClCulC,KAAK,EAAE,CAAC;MACRv8C,QAAQ,EAAE8pD;IACZ,CAAC,CAAC;IACF,IAAI,CAACxiD,KAAK,CAAC,CAAC;EACd;EAMAyiD,eAAeA,CAAA,EAAG;IAChB,IAAI,IAAI,CAAChM,UAAU,EAAE;MACnB,IAAI,CAACA,UAAU,CAACr6B,MAAM,CAAC,CAAC;MACxB,IAAI,CAACq6B,UAAU,GAAG,IAAI;IACxB;IACA,IAAI,CAACtgC,MAAM,GAAG,IAAI;EACpB;EAEA,CAACysC,kBAAkBC,CAACC,aAAa,GAAG,CAAC,EAAE\u002FtD,SAAS,GAAG,IAAI,CAACA,SAAS,EAAE;IAGjE,MAAMgsB,MAAM,GAAGj0B,QAAQ,CAACyC,aAAa,CAAC,QAAQ,CAAC;IAC\u002FC,MAAMwmD,GAAG,GAAGh1B,MAAM,CAACi1B,UAAU,CAAC,IAAI,EAAE;MAClCwL,KAAK,EAAE,KAAK;MACZuB,kBAAkB,EAAE,CAAChuD;IACvB,CAAC,CAAC;IACF,MAAMiuD,WAAW,GAAG,IAAI3lE,WAAW,CAAC,CAAC;IACrC,MAAMqK,KAAK,GAAGo7D,aAAa,GAAG,IAAI,CAACT,WAAW;MAC5C16D,MAAM,GAAGm7D,aAAa,GAAG,IAAI,CAACR,YAAY;IAE5CU,WAAW,CAACC,WAAW,CACrBv7D,KAAK,EACLC,MAAM,EACN,IAAI,CAACgM,eAAe,EACpB,IAAI,CAACtC,YACP,CAAC;IACD0vB,MAAM,CAACr5B,KAAK,GAAIA,KAAK,GAAGs7D,WAAW,CAACE,EAAE,GAAI,CAAC;IAC3CniC,MAAM,CAACp5B,MAAM,GAAIA,MAAM,GAAGq7D,WAAW,CAACG,EAAE,GAAI,CAAC;IAE7C,MAAMt8C,SAAS,GAAGm8C,WAAW,CAACI,MAAM,GAChC,CAACJ,WAAW,CAACE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAEF,WAAW,CAACG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,GAC5C,IAAI;IAER,OAAO;MAAEpN,GAAG;MAAEh1B,MAAM;MAAEla;IAAU,CAAC;EACnC;EAEA,CAACw8C,oBAAoBC,CAACviC,MAAM,EAAE;IAC5B,IAAI,IAAI,CAACm6B,cAAc,KAAK77D,eAAe,CAACI,QAAQ,EAAE;MACpD,MAAM,IAAIya,KAAK,CAAC,oDAAoD,CAAC;IACvE;IACA,MAAMqpD,aAAa,GAAG,IAAI,CAAC,CAACC,WAAW,CAACziC,MAAM,CAAC;IAE\u002FC,MAAM2hC,KAAK,GAAG51D,QAAQ,CAACyC,aAAa,CAAC,KAAK,CAAC;IAC3CmzD,KAAK,CAACvxB,SAAS,GAAG,gBAAgB;IAClCuxB,KAAK,CAACvzD,YAAY,CAAC,cAAc,EAAE,yBAAyB,CAAC;IAC7DuzD,KAAK,CAACvzD,YAAY,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC6yD,YAAY,CAAC;IACxDU,KAAK,CAAC\u002FK,GAAG,GAAG4L,aAAa,CAACE,SAAS,CAAC,CAAC;IACrC,IAAI,CAACf,KAAK,GAAGA,KAAK;IAElB,IAAI,CAAC17D,GAAG,CAACmI,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC;IAC1C,IAAI,CAAC+yD,eAAe,CAACS,WAAW,CAACD,KAAK,CAAC;IAEvCtB,UAAU,CAACmC,aAAa,CAAC;EAC3B;EAEA,MAAMnI,IAAIA,CAAA,EAAG;IACX,IAAI,IAAI,CAACF,cAAc,KAAK77D,eAAe,CAACC,OAAO,EAAE;MACnDsC,OAAO,CAACC,KAAK,CAAC,qCAAqC,CAAC;MACpD;IACF;IACA,MAAM;MAAEggE,UAAU;MAAE9qB;IAAQ,CAAC,GAAG,IAAI;IAEpC,IAAI,CAACA,OAAO,EAAE;MACZ,IAAI,CAACmkB,cAAc,GAAG77D,eAAe,CAACI,QAAQ;MAC9C,MAAM,IAAIya,KAAK,CAAC,uBAAuB,CAAC;IAC1C;IAEA,IAAI,CAACghD,cAAc,GAAG77D,eAAe,CAACE,OAAO;IAO7C,MAAM;MAAEw2D,GAAG;MAAEh1B,MAAM;MAAEla;IAAU,CAAC,GAC9B,IAAI,CAAC,CAAC+7C,kBAAkB,CAAC3B,mBAAmB,CAAC;IAC\u002FC,MAAMyC,YAAY,GAAG,IAAI,CAAClP,QAAQ,CAAC9kC,KAAK,CAAC;MACvCulC,KAAK,EAAEgM,mBAAmB,GAAG,IAAI,CAAChM;IACpC,CAAC,CAAC;IACF,MAAM0O,sBAAsB,GAAGC,IAAI,IAAI;MACrC,IAAI,CAAC,IAAI,CAAChC,cAAc,CAAC9H,iBAAiB,CAAC,IAAI,CAAC,EAAE;QAChD,IAAI,CAACoB,cAAc,GAAG77D,eAAe,CAACG,MAAM;QAC5C,IAAI,CAAC22B,MAAM,GAAG,MAAM;UAClB,IAAI,CAAC+kC,cAAc,GAAG77D,eAAe,CAACE,OAAO;UAC7CqkE,IAAI,CAAC,CAAC;QACR,CAAC;QACD;MACF;MACAA,IAAI,CAAC,CAAC;IACR,CAAC;IAED,MAAMvN,aAAa,GAAG;MACpBC,aAAa,EAAEP,GAAG;MAClBlvC,SAAS;MACT2tC,QAAQ,EAAEkP,YAAY;MACtBrnD,4BAA4B,EAAE,IAAI,CAACw6C,6BAA6B;MAChEgL;IACF,CAAC;IACD,MAAMpL,UAAU,GAAI,IAAI,CAACA,UAAU,GAAG1f,OAAO,CAAClF,MAAM,CAACwkB,aAAa,CAAE;IACpEI,UAAU,CAACoN,UAAU,GAAGF,sBAAsB;IAE9C,IAAI9hE,KAAK,GAAG,IAAI;IAChB,IAAI;MACF,MAAM40D,UAAU,CAAC75C,OAAO;IAC1B,CAAC,CAAC,OAAOtN,CAAC,EAAE;MACV,IAAIA,CAAC,YAAY1R,2BAA2B,EAAE;QAC5CwjE,UAAU,CAACrgC,MAAM,CAAC;QAClB;MACF;MACAl\u002FB,KAAK,GAAGyN,CAAC;IACX,CAAC,SAAS;MAIR,IAAImnD,UAAU,KAAK,IAAI,CAACA,UAAU,EAAE;QAClC,IAAI,CAACA,UAAU,GAAG,IAAI;MACxB;IACF;IACA,IAAI,CAACyE,cAAc,GAAG77D,eAAe,CAACI,QAAQ;IAE9C,IAAI,CAAC,CAAC4jE,oBAAoB,CAACtiC,MAAM,CAAC;IAClCqgC,UAAU,CAACrgC,MAAM,CAAC;IAElB,IAAI,CAAC5qB,QAAQ,CAACiB,QAAQ,CAAC,mBAAmB,EAAE;MAC1CC,MAAM,EAAE,IAAI;MACZ4B,UAAU,EAAE,IAAI,CAAC\u002FO,EAAE;MACnB6sC;IACF,CAAC,CAAC;IAEF,IAAIl1C,KAAK,EAAE;MACT,MAAMA,KAAK;IACb;EACF;EAEAiiE,QAAQA,CAAChG,QAAQ,EAAE;IACjB,IAAI,IAAI,CAAC5C,cAAc,KAAK77D,eAAe,CAACC,OAAO,EAAE;MACnD;IACF;IACA,MAAM;MAAEykE,eAAe,EAAEhjC,MAAM;MAAEgW,OAAO;MAAEke;IAAM,CAAC,GAAG6I,QAAQ;IAC5D,IAAI,CAAC\u002F8B,MAAM,EAAE;MACX;IACF;IACA,IAAI,CAAC,IAAI,CAACgW,OAAO,EAAE;MACjB,IAAI,CAACwrB,UAAU,CAACxrB,OAAO,CAAC;IAC1B;IACA,IAAIke,KAAK,GAAG,IAAI,CAACA,KAAK,EAAE;MAEtB;IACF;IACA,IAAI,CAACiG,cAAc,GAAG77D,eAAe,CAACI,QAAQ;IAC9C,IAAI,CAAC,CAAC4jE,oBAAoB,CAACtiC,MAAM,CAAC;EACpC;EAEA,CAACijC,mBAAmBC,CAACljC,MAAM,EAAE;IAC3B,MAAMr5B,KAAK,GAAGq5B,MAAM,CAACr5B,KAAK,IAAIw5D,qBAAqB;MACjDv5D,MAAM,GAAGo5B,MAAM,CAACp5B,MAAM,IAAIu5D,qBAAqB;IAEjD,MAAM8B,WAAW,GAAG,IAAI3lE,WAAW,CAAC,CAAC;IAGrC2lE,WAAW,CAACE,EAAE,GAAGF,WAAW,CAACG,EAAE,GAAG,CAAC;IAEnCH,WAAW,CAACC,WAAW,CACrBv7D,KAAK,EACLC,MAAM,EACN,IAAI,CAACgM,eAAe,EACpB,IAAI,CAACtC,YACP,CAAC;IACD,OAAO,CAAE3J,KAAK,GAAGs7D,WAAW,CAACE,EAAE,GAAI,CAAC,EAAGv7D,MAAM,GAAGq7D,WAAW,CAACG,EAAE,GAAI,CAAC,CAAC;EACtE;EAEA,CAACK,WAAWU,CAACp3C,GAAG,EAAE;IAChB,MAAM;MAAEipC,GAAG;MAAEh1B;IAAO,CAAC,GAAG,IAAI,CAAC,CAAC6hC,kBAAkB,CAAC,CAAC,EAAE,IAAI,CAAC;IAEzD,IAAI91C,GAAG,CAACplB,KAAK,IAAI,CAAC,GAAGq5B,MAAM,CAACr5B,KAAK,EAAE;MACjCquD,GAAG,CAACoO,SAAS,CACXr3C,GAAG,EACH,CAAC,EACD,CAAC,EACDA,GAAG,CAACplB,KAAK,EACTolB,GAAG,CAACnlB,MAAM,EACV,CAAC,EACD,CAAC,EACDo5B,MAAM,CAACr5B,KAAK,EACZq5B,MAAM,CAACp5B,MACT,CAAC;MACD,OAAOo5B,MAAM;IACf;IAEA,IAAI,CAACqjC,YAAY,EAAEC,aAAa,CAAC,GAAG,IAAI,CAAC,CAACL,mBAAmB,CAACjjC,MAAM,CAAC;IACrE,MAAM,CAACujC,YAAY,EAAEC,eAAe,CAAC,GAAGlD,gBAAgB,CAACE,SAAS,CAChE6C,YAAY,EACZC,aACF,CAAC;IAED,OAAOD,YAAY,GAAGt3C,GAAG,CAACplB,KAAK,IAAI28D,aAAa,GAAGv3C,GAAG,CAACnlB,MAAM,EAAE;MAC7Dy8D,YAAY,KAAK,CAAC;MAClBC,aAAa,KAAK,CAAC;IACrB;IACAE,eAAe,CAACJ,SAAS,CACvBr3C,GAAG,EACH,CAAC,EACD,CAAC,EACDA,GAAG,CAACplB,KAAK,EACTolB,GAAG,CAACnlB,MAAM,EACV,CAAC,EACD,CAAC,EACDy8D,YAAY,EACZC,aACF,CAAC;IACD,OAAOD,YAAY,GAAG,CAAC,GAAGrjC,MAAM,CAACr5B,KAAK,EAAE;MACtC68D,eAAe,CAACJ,SAAS,CACvBG,YAAY,EACZ,CAAC,EACD,CAAC,EACDF,YAAY,EACZC,aAAa,EACb,CAAC,EACD,CAAC,EACDD,YAAY,IAAI,CAAC,EACjBC,aAAa,IAAI,CACnB,CAAC;MACDD,YAAY,KAAK,CAAC;MAClBC,aAAa,KAAK,CAAC;IACrB;IACAtO,GAAG,CAACoO,SAAS,CACXG,YAAY,EACZ,CAAC,EACD,CAAC,EACDF,YAAY,EACZC,aAAa,EACb,CAAC,EACD,CAAC,EACDtjC,MAAM,CAACr5B,KAAK,EACZq5B,MAAM,CAACp5B,MACT,CAAC;IACD,OAAOo5B,MAAM;EACf;EAEA,IAAI,CAACihC,YAAYwC,CAAA,EAAG;IAClB,OAAO5pD,IAAI,CAACC,SAAS,CAAC;MAAErC,IAAI,EAAE,IAAI,CAACspD,SAAS,IAAI,IAAI,CAAC53D;IAAG,CAAC,CAAC;EAC5D;EAKAu6D,YAAYA,CAACv3C,KAAK,EAAE;IAClB,IAAI,CAAC40C,SAAS,GAAG,OAAO50C,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAG,IAAI;IAEzD,IAAI,CAACpS,MAAM,CAAC3L,YAAY,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC6yD,YAAY,CAAC;IAE9D,IAAI,IAAI,CAAC9G,cAAc,KAAK77D,eAAe,CAACI,QAAQ,EAAE;MACpD;IACF;IACA,IAAI,CAACijE,KAAK,EAAEvzD,YAAY,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC6yD,YAAY,CAAC;EAChE;AACF;;;;ACpbuB;AACsD;AAE7E,MAAM0C,uBAAuB,GAAG,CAAC,EAAE;AACnC,MAAMC,wBAAwB,GAAG,UAAU;AA2B3C,MAAMC,kBAAkB,CAAC;EAIvBz3D,WAAWA,CAAC;IACVQ,SAAS;IACTwI,QAAQ;IACR2pC,WAAW;IACX8hB,cAAc;IACdjuD,eAAe;IACftC,YAAY;IACZwwD,UAAU;IACVz+D,WAAW;IACX2R;EACF,CAAC,EAAE;IACD,IAAI,CAACpH,SAAS,GAAGA,SAAS;IAC1B,IAAI,CAACwI,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAAC2pC,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAAC8hB,cAAc,GAAGA,cAAc;IACpC,IAAI,CAACjuD,eAAe,GAAGA,eAAe;IACtC,IAAI,CAACtC,YAAY,GAAGA,YAAY;IAChC,IAAI,CAACwwD,UAAU,GAAGA,UAAU,IAAI,IAAI;IACpC,IAAI,CAAC9sD,SAAS,GAAGA,SAAS,IAAI,KAAK;IAEnC,IAAI,CAAC8vD,MAAM,GAAG5hE,WAAW,CACvB,IAAI,CAAC0K,SAAS,EACd,IAAI,CAAC,CAACm3D,aAAa,CAACznD,IAAI,CAAC,IAAI,CAAC,EAC9Bja,WACF,CAAC;IACD,IAAI,CAAC,CAAC2hE,SAAS,CAAC,CAAC;EACnB;EAEA,CAACD,aAAaE,CAAA,EAAG;IACf,IAAI,CAACpD,cAAc,CAAC5H,qBAAqB,CAAC,CAAC;EAC7C;EAEAiL,YAAYA,CAACp9D,KAAK,EAAE;IAClB,OAAO,IAAI,CAACq9D,WAAW,CAACr9D,KAAK,CAAC;EAChC;EAEA,CAACs9D,gBAAgBC,CAAA,EAAG;IAClB,OAAOl9D,kBAAkB,CAAC;MACxBC,QAAQ,EAAE,IAAI,CAACwF,SAAS;MACxB7F,KAAK,EAAE,IAAI,CAACo9D;IACd,CAAC,CAAC;EACJ;EAEAG,uBAAuBA,CAACpsD,UAAU,EAAE;IAClC,IAAI,CAAC,IAAI,CAACjB,WAAW,EAAE;MACrB;IACF;IACA,MAAMunD,aAAa,GAAG,IAAI,CAAC2F,WAAW,CAACjsD,UAAU,GAAG,CAAC,CAAC;IAEtD,IAAI,CAACsmD,aAAa,EAAE;MAClB39D,OAAO,CAACC,KAAK,CAAC,0DAA0D,CAAC;MACzE;IACF;IAEA,IAAIoX,UAAU,KAAK,IAAI,CAAC09B,kBAAkB,EAAE;MAC1C,MAAM2uB,iBAAiB,GAAG,IAAI,CAACJ,WAAW,CAAC,IAAI,CAACvuB,kBAAkB,GAAG,CAAC,CAAC;MAEvE2uB,iBAAiB,CAACt+D,GAAG,CAACxE,SAAS,CAAC+K,MAAM,CAACo3D,wBAAwB,CAAC;MAEhEpF,aAAa,CAACv4D,GAAG,CAACxE,SAAS,CAACiI,GAAG,CAACk6D,wBAAwB,CAAC;IAC3D;IACA,MAAM;MAAEj6D,KAAK;MAAEC,IAAI;MAAE7C;IAAM,CAAC,GAAG,IAAI,CAAC,CAACq9D,gBAAgB,CAAC,CAAC;IAGvD,IAAIr9D,KAAK,CAAChC,MAAM,GAAG,CAAC,EAAE;MACpB,IAAIy\u002FD,YAAY,GAAG,KAAK;MACxB,IAAItsD,UAAU,IAAIvO,KAAK,CAACR,EAAE,IAAI+O,UAAU,IAAItO,IAAI,CAACT,EAAE,EAAE;QACnDq7D,YAAY,GAAG,IAAI;MACrB,CAAC,MAAM;QACL,KAAK,MAAM;UAAEr7D,EAAE;UAAEF;QAAQ,CAAC,IAAIlC,KAAK,EAAE;UACnC,IAAIoC,EAAE,KAAK+O,UAAU,EAAE;YACrB;UACF;UACAssD,YAAY,GAAGv7D,OAAO,GAAG,GAAG;UAC5B;QACF;MACF;MACA,IAAIu7D,YAAY,EAAE;QAChBjkE,cAAc,CAACi+D,aAAa,CAACv4D,GAAG,EAAE;UAAEpE,GAAG,EAAE8hE;QAAwB,CAAC,CAAC;MACrE;IACF;IAEA,IAAI,CAAC\u002FtB,kBAAkB,GAAG19B,UAAU;EACtC;EAEA,IAAIN,aAAaA,CAAA,EAAG;IAClB,OAAO,IAAI,CAACi+B,cAAc;EAC5B;EAEA,IAAIj+B,aAAaA,CAACD,QAAQ,EAAE;IAC1B,IAAI,CAAC3M,eAAe,CAAC2M,QAAQ,CAAC,EAAE;MAC9B,MAAM,IAAIwB,KAAK,CAAC,oCAAoC,CAAC;IACvD;IACA,IAAI,CAAC,IAAI,CAAClC,WAAW,EAAE;MACrB;IACF;IACA,IAAI,IAAI,CAAC4+B,cAAc,KAAKl+B,QAAQ,EAAE;MACpC;IACF;IACA,IAAI,CAACk+B,cAAc,GAAGl+B,QAAQ;IAE9B,MAAM8sD,UAAU,GAAG;MAAE9sD;IAAS,CAAC;IAC\u002FB,KAAK,MAAM+sD,SAAS,IAAI,IAAI,CAACP,WAAW,EAAE;MACxCO,SAAS,CAAC5Q,MAAM,CAAC2Q,UAAU,CAAC;IAC9B;EACF;EAEAE,OAAOA,CAAA,EAAG;IACR,KAAK,MAAMD,SAAS,IAAI,IAAI,CAACP,WAAW,EAAE;MACxC,IAAIO,SAAS,CAACvK,cAAc,KAAK77D,eAAe,CAACI,QAAQ,EAAE;QACzDgmE,SAAS,CAACzlD,KAAK,CAAC,CAAC;MACnB;IACF;IACAqhD,gBAAgB,CAACI,aAAa,CAAC,CAAC;EAClC;EAEA,CAACsD,SAASY,CAAA,EAAG;IACX,IAAI,CAACT,WAAW,GAAG,EAAE;IACrB,IAAI,CAACvuB,kBAAkB,GAAG,CAAC;IAC3B,IAAI,CAACivB,WAAW,GAAG,IAAI;IACvB,IAAI,CAAChvB,cAAc,GAAG,CAAC;IAGvB,IAAI,CAACjpC,SAAS,CAAC6f,WAAW,GAAG,EAAE;EACjC;EAKArV,WAAWA,CAACH,WAAW,EAAE;IACvB,IAAI,IAAI,CAACA,WAAW,EAAE;MACpB,IAAI,CAAC,CAACyqD,eAAe,CAAC,CAAC;MACvB,IAAI,CAAC,CAACsC,SAAS,CAAC,CAAC;IACnB;IAEA,IAAI,CAAC\u002FsD,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACA,WAAW,EAAE;MAChB;IACF;IACA,MAAM6tD,gBAAgB,GAAG7tD,WAAW,CAACg\u002FB,OAAO,CAAC,CAAC,CAAC;IAC\u002FC,MAAM36B,4BAA4B,GAAGrE,WAAW,CAACs2C,wBAAwB,CAAC;MACxEC,MAAM,EAAE;IACV,CAAC,CAAC;IAEFsX,gBAAgB,CACbjmD,IAAI,CAACkmD,YAAY,IAAI;MACpB,MAAMxtD,UAAU,GAAGN,WAAW,CAACO,QAAQ;MACvC,MAAMi8C,QAAQ,GAAGsR,YAAY,CAACvP,WAAW,CAAC;QAAEtB,KAAK,EAAE;MAAE,CAAC,CAAC;MAEvD,KAAK,IAAI8Q,OAAO,GAAG,CAAC,EAAEA,OAAO,IAAIztD,UAAU,EAAE,EAAEytD,OAAO,EAAE;QACtD,MAAMN,SAAS,GAAG,IAAI\u002FD,gBAAgB,CAAC;UACrC\u002FzD,SAAS,EAAE,IAAI,CAACA,SAAS;UACzBwI,QAAQ,EAAE,IAAI,CAACA,QAAQ;UACvBjM,EAAE,EAAE67D,OAAO;UACXpE,eAAe,EAAEnN,QAAQ,CAAC9kC,KAAK,CAAC,CAAC;UACjCrT,4BAA4B;UAC5ByjC,WAAW,EAAE,IAAI,CAACA,WAAW;UAC7B8hB,cAAc,EAAE,IAAI,CAACA,cAAc;UACnCjuD,eAAe,EAAE,IAAI,CAACA,eAAe;UACrCtC,YAAY,EAAE,IAAI,CAACA,YAAY;UAC\u002FBwwD,UAAU,EAAE,IAAI,CAACA,UAAU;UAC3B9sD,SAAS,EAAE,IAAI,CAACA;QAClB,CAAC,CAAC;QACF,IAAI,CAACmwD,WAAW,CAACj7D,IAAI,CAACw7D,SAAS,CAAC;MAClC;MAIA,IAAI,CAACP,WAAW,CAAC,CAAC,CAAC,EAAE3C,UAAU,CAACuD,YAAY,CAAC;MAG7C,MAAMvG,aAAa,GAAG,IAAI,CAAC2F,WAAW,CAAC,IAAI,CAACvuB,kBAAkB,GAAG,CAAC,CAAC;MACnE4oB,aAAa,CAACv4D,GAAG,CAACxE,SAAS,CAACiI,GAAG,CAACk6D,wBAAwB,CAAC;IAC3D,CAAC,CAAC,CACDzqC,KAAK,CAACwV,MAAM,IAAI;MACf9tC,OAAO,CAACC,KAAK,CAAC,uCAAuC,EAAE6tC,MAAM,CAAC;IAChE,CAAC,CAAC;EACN;EAEA,CAAC+yB,eAAeuD,CAAA,EAAG;IACjB,KAAK,MAAMP,SAAS,IAAI,IAAI,CAACP,WAAW,EAAE;MACxCO,SAAS,CAAChD,eAAe,CAAC,CAAC;IAC7B;EACF;EAKAwD,aAAaA,CAACC,MAAM,EAAE;IACpB,IAAI,CAAC,IAAI,CAACluD,WAAW,EAAE;MACrB;IACF;IACA,IAAI,CAACkuD,MAAM,EAAE;MACX,IAAI,CAACN,WAAW,GAAG,IAAI;IACzB,CAAC,MAAM,IACL,EAAEzsD,KAAK,CAACC,OAAO,CAAC8sD,MAAM,CAAC,IAAI,IAAI,CAACluD,WAAW,CAACO,QAAQ,KAAK2tD,MAAM,CAACpgE,MAAM,CAAC,EACvE;MACA,IAAI,CAAC8\u002FD,WAAW,GAAG,IAAI;MACvBhkE,OAAO,CAACC,KAAK,CAAC,wDAAwD,CAAC;IACzE,CAAC,MAAM;MACL,IAAI,CAAC+jE,WAAW,GAAGM,MAAM;IAC3B;IAEA,KAAK,IAAIj+D,CAAC,GAAG,CAAC,EAAEsW,EAAE,GAAG,IAAI,CAAC2mD,WAAW,CAACp\u002FD,MAAM,EAAEmC,CAAC,GAAGsW,EAAE,EAAEtW,CAAC,EAAE,EAAE;MACzD,IAAI,CAACi9D,WAAW,CAACj9D,CAAC,CAAC,CAACw8D,YAAY,CAAC,IAAI,CAACmB,WAAW,GAAG39D,CAAC,CAAC,IAAI,IAAI,CAAC;IACjE;EACF;EAMA,MAAM,CAACk+D,mBAAmBC,CAACC,SAAS,EAAE;IACpC,IAAIA,SAAS,CAACtvB,OAAO,EAAE;MACrB,OAAOsvB,SAAS,CAACtvB,OAAO;IAC1B;IACA,IAAI;MACF,MAAMA,OAAO,GAAG,MAAM,IAAI,CAAC\u002F+B,WAAW,CAACg\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\u002FD,IAAI,CAAC\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\u002FD,IAAI,CAAC,CAACw\u002FD,GAAG,EAAEC,GAAG,EAAEH,GAAG,EAAEC,GAAG,CAAC,CAAC;MAClC;MACA,OAAOF,KAAK;IACd;IAEA,SAASK,oBAAoBA,CAACC,MAAM,EAAEC,MAAM,EAAE;MAC5C,MAAMC,aAAa,GAAG,EAAE;MACxB,MAAMC,WAAW,GAAGZ,eAAe,CAACS,MAAM,CAAC;MAC3C,MAAMI,WAAW,GAAGb,eAAe,CAACU,MAAM,CAAC;MAC3C,KAAK,MAAM\u002FgC,KAAK,IAAIihC,WAAW,EAAE;QAC\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\u002FjE,KAAK,CAAC,EAAE,CAAC\u002FB,MAAM,CAAC,CAAC;EAEvE,MAAMmkC,KAAK,GAAG,IAAI4hC,KAAK,CAAC,CAAC;EACzB5hC,KAAK,CAACE,QAAQ,CACZ,GAAGkhC,YAAY,CAACI,WAAW,CAAC7W,QAAQ,CAAC+W,KAAK,CAACG,MAAM,CAAC,EAAEH,KAAK,CAACjhC,MAAM,CAClE,CAAC;EACDT,KAAK,CAACG,MAAM,CAAC,GAAGihC,YAAY,CAACI,WAAW,CAAC7W,QAAQ,CAACrV,GAAG,CAACusB,MAAM,CAAC,EAAEvsB,GAAG,CAAC7U,MAAM,CAAC,CAAC;EAE3E,OAAO;IACLxgC,EAAE,EAAE,iBAAiBA,EAAE,EAAE;IACzB6hE,SAAS,EAAE\u002FxD,GAAG;IACdA,GAAG;IACHuwD,cAAc,EAAEzuE,cAAc,CAAC0uE,IAAI;IACnC9xD,QAAQ,EAAE,CAAC;IACX,GAAGsyD,qBAAqB,CAAC\u002FgC,KAAK,EAAEygC,WAAW,CAAC;IAG5CsB,WAAW,EAAE;EACf,CAAC;AACH;AAEA,MAAMC,UAAU,CAAC;EACf,OAAO,CAACpkE,KAAK,GAAG,CAAC;EAEjB,OAAO,CAACqkE,KAAK;EAEb,OAAOC,SAASA,CAACngD,IAAI,EAAE;IAErB,IAAI,CAAC,CAACkgD,KAAK,KACT,6zWAA6J;IAE\u002FJ,MAAM,CAACE,cAAc,EAAE\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\u002FB,OAAO,CAACk\u002FB,SAAS,CAAC;MAClC;IACF,CAAC,EAAErD,iBAAiB,CAAC;IACrBtsC,MAAM,CAAC5xB,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC;IAE1C,MAAM;MAAEzH,KAAK;MAAEC;IAAO,CAAC,GAAG6sD,QAAQ;IAElC,MAAMjoC,IAAI,GAAG,IAAI,CAAC,CAACsiD,UAAU;IAE7B,MAAM;MAAEmB;IAAW,CAAC,GAAG3yE,WAAW;IAClC,MAAMwpB,SAAS,GAAG,CAChBmpD,UAAU,EACV,CAAC,EACD,CAAC,EACDA,UAAU,EACV,CAACzjD,IAAI,CAAC5iB,IAAI,GAAGqmE,UAAU,EACvB,CAACzjD,IAAI,CAAC9iB,IAAI,GAAGumE,UAAU,CACxB;IAEDjvC,MAAM,CAACr5B,KAAK,GAAG6kB,IAAI,CAAC7kB,KAAK,GAAGsoE,UAAU;IACtCjvC,MAAM,CAACp5B,MAAM,GAAG4kB,IAAI,CAAC5kB,MAAM,GAAGqoE,UAAU;IACxC,MAAM;MAAEhjE;IAAM,CAAC,GAAG+zB,MAAM;IACxB\u002FzB,KAAK,CAACtF,KAAK,GAAG,GAAI6kB,IAAI,CAAC7kB,KAAK,GAAG,GAAG,GAAIA,KAAK,GAAG;IAC9CsF,KAAK,CAACrF,MAAM,GAAG,GAAI4kB,IAAI,CAAC5kB,MAAM,GAAG,GAAG,GAAIA,MAAM,GAAG;IACjDqF,KAAK,CAACpK,GAAG,GAAG,GAAI2pB,IAAI,CAAC9iB,IAAI,GAAG,GAAG,GAAI9B,MAAM,GAAG;IAC5CqF,KAAK,CAAClK,IAAI,GAAG,GAAIypB,IAAI,CAAC5iB,IAAI,GAAG,GAAG,GAAIjC,KAAK,GAAG;IAE5C,MAAMkpE,gBAAgB,GAAG,IAAI,CAAC7C,WAAW,CACvC,IAAI,CAACjQ,QAAQ,CAAC+S,oBAAoB,CAAC9a,GAAG,EAAElvC,SAAS,CAAC,EAClD,MAAM;MAEJ,IAAI,CAACka,MAAM,EAAExzB,MAAM,CAAC,CAAC;MACrB,IAAI,CAACwzB,MAAM,GAAG0sC,UAAU;IAC1B,CAAC,EACD,MAAM;MACJ,IAAI,CAACY,oBAAoB,CACJ,KAAK,EACL,IACrB,CAAC;IACH,CACF,CAAC;IAEDrnE,GAAG,CAACmI,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC;IAErC,IAAI,CAACi\u002FD,kBAAkB,CAAC,CAAC;IAEzB,OAAOwC,gBAAgB;EACzB;AACF;;;;AC9PqD;AAErD,MAAME,qBAAqB,GAAG;EAE5BC,QAAQ,EAAE,IAAI;EACdC,gBAAgB,EAAE,IAAI;EAEtBC,IAAI,EAAE,OAAO;EACbC,IAAI,EAAE,OAAO;EACbC,GAAG,EAAE,OAAO;EACZC,KAAK,EAAE,MAAM;EACbC,SAAS,EAAE,MAAM;EAEjBC,CAAC,EAAE,IAAI;EAEPC,CAAC,EAAE,SAAS;EACZC,KAAK,EAAE,IAAI;EACXC,MAAM,EAAE,MAAM;EAEdC,GAAG,EAAE,OAAO;EAEZC,GAAG,EAAE,IAAI;EACTC,IAAI,EAAE,IAAI;EACVC,EAAE,EAAE,IAAI;EACRC,MAAM,EAAE,IAAI;EACZC,IAAI,EAAE,MAAM;EACZC,KAAK,EAAE,MAAM;EACbC,IAAI,EAAE,MAAM;EAEZC,IAAI,EAAE,IAAI;EACVC,EAAE,EAAE,IAAI;EACRC,EAAE,EAAE,IAAI;EACRC,EAAE,EAAE,IAAI;EACRC,OAAO,EAAE,IAAI;EACbC,EAAE,EAAE,IAAI;EACRC,EAAE,EAAE,IAAI;EAERC,CAAC,EAAE,MAAM;EACTC,EAAE,EAAE,UAAU;EACdC,KAAK,EAAE,IAAI;EAEXC,KAAK,EAAE,OAAO;EACdC,EAAE,EAAE,KAAK;EACTC,EAAE,EAAE,cAAc;EAClBC,EAAE,EAAE,MAAM;EACVC,KAAK,EAAE,cAAc;EACrBC,KAAK,EAAE,IAAI;EACXC,KAAK,EAAE,IAAI;EAEXC,OAAO,EAAE,IAAI;EAEbC,MAAM,EAAE,QAAQ;EAEhBC,OAAO,EAAE,IAAI;EAEbC,QAAQ,EAAE;AACZ,CAAC;AAED,MAAMC,eAAe,GAAG,UAAU;AAQlC,MAAMC,sBAAsB,CAAC;EAC3B,CAAC52D,OAAO;EAER,CAAC62D,OAAO,GAAG,IAAI;EAEf,CAACC,WAAW;EAEZ,CAACC,iBAAiB,GAAG,IAAIhvE,GAAG,CAAC,CAAC;EAE9B,CAACivE,OAAO;EAER,CAACC,wBAAwB,GAAG,IAAI;EAKhC1mE,WAAWA,CAAC4pC,OAAO,EAAE68B,OAAO,EAAE;IAC5B,IAAI,CAAC,CAACh3D,OAAO,GAAGm6B,OAAO,CAAC+8B,aAAa,CAAC,CAAC;IACvC,IAAI,CAAC,CAACF,OAAO,GAAGA,OAAO;EACzB;EAKA,MAAM\u002FhC,MAAMA,CAAA,EAAG;IACb,IAAI,IAAI,CAAC,CAAC6hC,WAAW,EAAE;MACrB,OAAO,IAAI,CAAC,CAACA,WAAW;IAC1B;IACA,MAAM;MAAE92D,OAAO;MAAEhQ,OAAO;MAAEktB;IAAO,CAAC,GAAGntB,OAAO,CAACkQ,aAAa,CAAC,CAAC;IAC5D,IAAI,CAAC,CAAC62D,WAAW,GAAG92D,OAAO;IAE3B,IAAI;MACF,IAAI,CAAC,CAAC62D,OAAO,GAAG,IAAI,CAAC,CAACM,IAAI,CAAC,MAAM,IAAI,CAAC,CAACn3D,OAAO,CAAC;IACjD,CAAC,CAAC,OAAOoZ,EAAE,EAAE;MACX8D,MAAM,CAAC9D,EAAE,CAAC;IACZ;IACA,IAAI,CAAC,CAACpZ,OAAO,GAAG,IAAI;IAEpB,IAAI,CAAC,CAAC62D,OAAO,EAAEjxE,SAAS,CAACiI,GAAG,CAAC,YAAY,CAAC;IAC1CmC,OAAO,CAAC,IAAI,CAAC,CAAC6mE,OAAO,CAAC;IAEtB,OAAO72D,OAAO;EAChB;EAEA,MAAMo3D,iBAAiBA,CAACC,YAAY,EAAE;IACpC,IAAI;MACF,MAAM,IAAI,CAACpiC,MAAM,CAAC,CAAC;MACnB,OAAO,IAAI,CAAC,CAAC8hC,iBAAiB,CAACn9D,GAAG,CAACy9D,YAAY,CAAC;IAClD,CAAC,CAAC,MAAM,CAGR;IACA,OAAO,IAAI;EACb;EAEA7lE,IAAIA,CAAA,EAAG;IACL,IAAI,IAAI,CAAC,CAACqlE,OAAO,IAAI,CAAC,IAAI,CAAC,CAACA,OAAO,CAACt0C,MAAM,EAAE;MAC1C,IAAI,CAAC,CAACs0C,OAAO,CAACt0C,MAAM,GAAG,IAAI;IAC7B;EACF;EAEAjxB,IAAIA,CAAA,EAAG;IACL,IAAI,IAAI,CAAC,CAACulE,OAAO,EAAEt0C,MAAM,EAAE;MACzB,IAAI,CAAC,CAACs0C,OAAO,CAACt0C,MAAM,GAAG,KAAK;IAC9B;EACF;EAEA,CAAC7L,aAAa4gD,CAACC,aAAa,EAAEC,WAAW,EAAE;IACzC,MAAM;MAAEC,GAAG;MAAEnqE,EAAE;MAAEiH;IAAK,CAAC,GAAGgjE,aAAa;IACvC,IAAIE,GAAG,KAAKxxE,SAAS,EAAE;MAGrB,IAAIyxE,KAAK,GAAG,KAAK;MACjB,MAAMpnD,KAAK,GAAGhoB,oBAAoB,CAACmvE,GAAG,CAAC;MACvC,KAAK,MAAME,KAAK,IAAIJ,aAAa,CAAC\u002Fe,QAAQ,EAAE;QAC1C,IAAImf,KAAK,CAAC9+D,IAAI,KAAK,YAAY,EAAE;UAC\u002FB,IAAIwU,KAAK,GAAG,IAAI,CAAC,CAAC0pD,iBAAiB,CAACn9D,GAAG,CAAC+9D,KAAK,CAACrqE,EAAE,CAAC;UACjD,IAAI,CAAC+f,KAAK,EAAE;YACVA,KAAK,GAAG,IAAItlB,GAAG,CAAC,CAAC;YACjB,IAAI,CAAC,CAACgvE,iBAAiB,CAAC5uE,GAAG,CAACwvE,KAAK,CAACrqE,EAAE,EAAE+f,KAAK,CAAC;UAC9C;UACAA,KAAK,CAACllB,GAAG,CAAC,YAAY,EAAEmoB,KAAK,CAAC;UAC9BonD,KAAK,GAAG,IAAI;QACd;MACF;MACA,IAAI,CAACA,KAAK,EAAE;QACVF,WAAW,CAACjlE,YAAY,CAAC,YAAY,EAAE+d,KAAK,CAAC;MAC\u002FC;IACF;IACA,IAAIhjB,EAAE,KAAKrH,SAAS,EAAE;MACpBuxE,WAAW,CAACjlE,YAAY,CAAC,WAAW,EAAEjF,EAAE,CAAC;IAC3C;IACA,IAAIiH,IAAI,KAAKtO,SAAS,EAAE;MACtBuxE,WAAW,CAACjlE,YAAY,CACtB,MAAM,EACNjK,oBAAoB,CAACiM,IAAI,EAA2B,IAAI,CAC1D,CAAC;IACH;EACF;EAEA,CAACqjE,mBAAmBC,CAACroC,IAAI,EAAE7qC,OAAO,EAAE;IAClC,MAAM;MAAE8yE,GAAG;MAAEK,IAAI;MAAEtf;IAAS,CAAC,GAAGhpB,IAAI;IACpC,MAAMmoC,KAAK,GAAGnf,QAAQ,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,IAAI,CAAC,CAACwe,OAAO,IAAI,CAACS,GAAG,IAAI,CAACK,IAAI,IAAIH,KAAK,EAAE9+D,IAAI,KAAK,SAAS,EAAE;MAChE,OAAO,KAAK;IACd;IAEA,MAAM;MAAEvL;IAAG,CAAC,GAAGqqE,KAAK;IACpB,IAAI,CAACrqE,EAAE,EAAE;MACP,OAAO,KAAK;IACd;IAMA3I,OAAO,CAAC4N,YAAY,CAAC,WAAW,EAAEjF,EAAE,CAAC;IACrC,MAAM4iB,GAAG,GAAGhgB,QAAQ,CAACyC,aAAa,CAAC,MAAM,CAAC;IAC1C,CAAC,IAAI,CAAC,CAACskE,wBAAwB,KAAK,IAAIlvE,GAAG,CAAC,CAAC,EAAEI,GAAG,CAACmF,EAAE,EAAE4iB,GAAG,CAAC;IAC3DA,GAAG,CAAC3d,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;IAC\u002FB2d,GAAG,CAAC3d,YAAY,CAAC,YAAY,EAAEjK,oBAAoB,CAACmvE,GAAG,CAAC,CAAC;IAEzD,MAAM;MAAEM,UAAU;MAAEthB,KAAK;MAAEE;IAAM,CAAC,GAAG,IAAI,CAAC,CAACqgB,OAAO;IAClD,MAAMgB,IAAI,GAAG,kCAAkC;IAC\u002FC,MAAM;MAAE5nE;IAAM,CAAC,GAAG8f,GAAG;IACrB9f,KAAK,CAACtF,KAAK,GAAG,GAAGktE,IAAI,GAAGF,IAAI,CAAC,CAAC,CAAC,GAAGA,IAAI,CAAC,CAAC,CAAC,KAAK;IAC9C1nE,KAAK,CAACrF,MAAM,GAAG,GAAGitE,IAAI,GAAGF,IAAI,CAAC,CAAC,CAAC,GAAGA,IAAI,CAAC,CAAC,CAAC,KAAK;IAC\u002FC1nE,KAAK,CAAClK,IAAI,GAAG,GAAG8xE,IAAI,GAAGF,IAAI,CAAC,CAAC,CAAC,GAAGrhB,KAAK,KAAK;IAC3CrmD,KAAK,CAACpK,GAAG,GAAG,GAAGgyE,IAAI,GAAGD,UAAU,GAAGD,IAAI,CAAC,CAAC,CAAC,GAAGnhB,KAAK,KAAK;IAEvD,OAAO,IAAI;EACb;EAEAshB,sBAAsBA,CAAA,EAAG;IACvB,IAAI,CAAC,IAAI,CAAC,CAAChB,wBAAwB,EAAE;MACnC;IACF;IACA,KAAK,MAAM,CAAC3pE,EAAE,EAAE4iB,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC+mD,wBAAwB,EAAE;MACtD\u002FmE,QAAQ,CAACurD,cAAc,CAACnuD,EAAE,CAAC,EAAE+2B,MAAM,CAACnU,GAAG,CAAC;IAC1C;IACA,IAAI,CAAC,CAAC+mD,wBAAwB,CAAC3\u002FC,KAAK,CAAC,CAAC;IACtC,IAAI,CAAC,CAAC2\u002FC,wBAAwB,GAAG,IAAI;EACvC;EAEA,CAACE,IAAIe,CAAC1oC,IAAI,EAAE;IACV,IAAI,CAACA,IAAI,EAAE;MACT,OAAO,IAAI;IACb;IAEA,MAAM7qC,OAAO,GAAGuL,QAAQ,CAACyC,aAAa,CAAC,MAAM,CAAC;IAC9C,IAAI,MAAM,IAAI68B,IAAI,EAAE;MAClB,MAAM;QAAE2oC;MAAK,CAAC,GAAG3oC,IAAI;MACrB,MAAMjxB,KAAK,GAAG45D,IAAI,CAAC55D,KAAK,CAACo4D,eAAe,CAAC;MACzC,IAAIp4D,KAAK,EAAE;QACT5Z,OAAO,CAAC4N,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC;QACvC5N,OAAO,CAAC4N,YAAY,CAAC,YAAY,EAAEgM,KAAK,CAAC,CAAC,CAAC,CAAC;MAC9C,CAAC,MAAM,IAAI21D,qBAAqB,CAACiE,IAAI,CAAC,EAAE;QACtCxzE,OAAO,CAAC4N,YAAY,CAAC,MAAM,EAAE2hE,qBAAqB,CAACiE,IAAI,CAAC,CAAC;MAC3D;MACA,IAAIA,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,CAACP,mBAAmB,CAACpoC,IAAI,EAAE7qC,OAAO,CAAC,EAAE;QACjE,OAAOA,OAAO;MAChB;IACF;IAEA,IAAI,CAAC,CAAC+xB,aAAa,CAAC8Y,IAAI,EAAE7qC,OAAO,CAAC;IAElC,IAAI6qC,IAAI,CAACgpB,QAAQ,EAAE;MACjB,IAAIhpB,IAAI,CAACgpB,QAAQ,CAACtvD,MAAM,KAAK,CAAC,IAAI,IAAI,IAAIsmC,IAAI,CAACgpB,QAAQ,CAAC,CAAC,CAAC,EAAE;QAG1D,IAAI,CAAC,CAAC9hC,aAAa,CAAC8Y,IAAI,CAACgpB,QAAQ,CAAC,CAAC,CAAC,EAAE7zD,OAAO,CAAC;MAChD,CAAC,MAAM;QACL,KAAK,MAAMyzE,GAAG,IAAI5oC,IAAI,CAACgpB,QAAQ,EAAE;UAC\u002FB7zD,OAAO,CAAC0\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\u002FB,QAAQ,CAAC+iB,cAAc,CAAC\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\u002FD;QACAV,SAAS,CAAC\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\u002FgC,SAAS;IACzD,IAAI,CAAC2\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\u002FD,MAAM,CAAC+xB,eAAe,EAAE;YAC9B\u002FxB,MAAM,GAAGA,MAAM,CAAClN,UAAU;UAC5B;UACAkN,MAAM,GAAGA,MAAM,CAAC+xB,eAAe;QACjC,CAAC,QAAQ,CAAC\u002FxB,MAAM,CAACqT,UAAU,CAACroB,MAAM;MACpC;MAEA,MAAMy0E,eAAe,GAAGz\u002FD,MAAM,CAACowB,aAAa,EAAEa,OAAO,CAAC,YAAY,CAAC;MACnE,MAAMguC,MAAM,GAAG,IAAI,CAAC,CAACxB,UAAU,CAAC\u002FhE,GAAG,CAAC+jE,eAAe,CAAC;MACpD,IAAIR,MAAM,EAAE;QACVA,MAAM,CAAC\u002FsE,KAAK,CAACtF,KAAK,GAAG6yE,eAAe,CAACvtE,KAAK,CAACtF,KAAK;QAChDqyE,MAAM,CAAC\u002FsE,KAAK,CAACrF,MAAM,GAAG4yE,eAAe,CAACvtE,KAAK,CAACrF,MAAM;QAClDmT,MAAM,CAACowB,aAAa,CAACsvC,YAAY,CAC\u002FBT,MAAM,EACNE,WAAW,GAAGn\u002FD,MAAM,GAAGA,MAAM,CAACgyB,WAChC,CAAC;MACH;MAEA6sC,SAAS,GAAG1vC,KAAK,CAACwwC,UAAU,CAAC,CAAC;IAChC,CAAC,EACD;MAAEp2E;IAAO,CACX,CAAC;EACH;AACF;;;;AC9SmB;AAQI;AAC6D;AACb;AACzB;AACD;AACa;AACC;AACf;AACkB;AACJ;AACc;AACL;AACX;AACG;AACF;AAiDzD,MAAMq2E,wBAAwB,GAExB,IAYC;AAEP,MAAMC,YAAY,GAAG,IAAIh2E,GAAG,CAAC,CAC3B,CAAC,eAAe,EAAE,CAAC,CAAC,EACpB,CAAC,WAAW,EAAE,CAAC,CAAC,EAChB,CAAC,iBAAiB,EAAE,CAAC,CAAC,EACtB,CAAC,uBAAuB,EAAE,CAAC,CAAC,EAC5B,CAAC,UAAU,EAAE,CAAC,CAAC,CAChB,CAAC;AAKF,MAAMi2E,WAAW,SAAS9N,eAAe,CAAC;EACxC,CAAC76D,cAAc,GAAGpW,cAAc,CAACg\u002FE,YAAY;EAE7C,CAACrK,aAAa,GAAG,IAAI;EAErB,CAAC79D,iBAAiB,GAAG,IAAI;EAEzB,CAACmoE,oBAAoB,GAAG,KAAK;EAE7B,CAAC99C,SAAS,GAAG,KAAK;EAElB,CAAC+9C,eAAe,GAAG,IAAI;EAEvB,CAACC,sBAAsB,GAAG,KAAK;EAE\u002FB,CAACC,gBAAgB,GAAG,IAAI;EAExB,CAACC,gBAAgB,GAAG,IAAI;EAExB,CAACC,WAAW,GAAG,CAAC;EAEhB,CAACC,WAAW,GAAG,CAAC;EAEhB,CAAC\u002FmE,aAAa,GAAGhU,aAAa,CAACE,MAAM;EAErC,CAAC4G,QAAQ,GAAG,CAAC;EAEb,CAACk0E,kBAAkB,GAAG;IACpBC,aAAa,EAAE,IAAI;IACnBC,sBAAsB,EAAE,IAAI;IAC5BC,kBAAkB,EAAE;EACtB,CAAC;EAED,CAACC,MAAM,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;EAKlCtuE,WAAWA,CAACyJ,OAAO,EAAE;IACnB,KAAK,CAACA,OAAO,CAAC;IAEd,MAAMjJ,SAAS,GAAGiJ,OAAO,CAACjJ,SAAS;IACnC,MAAMg0D,eAAe,GAAG\u002FqD,OAAO,CAAC+qD,eAAe;IAE\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\u002FB5\u002FD,SAAS,EAAEX,KAAK,CAACQ,WAAW,CAC1B,iBAAiB,EACjB,IAAI,CAACq0D,UAAU,CAAC0L,UAClB,CAAC;MACH;MAEA,MAAM;QAAElxD;MAA6B,CAAC,GAAGzF,OAAO;MAChD,IAAIyF,4BAA4B,EAAE;QAGhCA,4BAA4B,CAACuD,IAAI,CAACxD,qBAAqB,IAAI;UACzD,IACEC,4BAA4B,KAAK,IAAI,CAACw6C,6BAA6B,EACnE;YACA;UACF;UACA,IAAI,CAAC,CAACwkB,kBAAkB,CAACE,sBAAsB,GAC7Cn\u002FD,qBAAqB,CAAC2\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\u002FW,eAAe,EAAE3\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\u002FD,qBAAqB,CAAC2\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\u002FW,eAAe,CAAC3\u002FD,GAAG,CAAC,EACnD;MACA,IAAI,CAAC2\u002FD,eAAe,CAACvqC,MAAM,CAAC,CAAC;MAC7B,IAAI,CAACuqC,eAAe,GAAG,IAAI;MAC3B,IAAI,CAACmB,oBAAoB,GAAG,IAAI;IAClC;IACA,IAAI,IAAI,CAAChB,eAAe,IAAI,CAAC,IAAI,CAACh7B,SAAS,EAAE;MAC3C,IAAI,CAACg7B,eAAe,GAAG,IAAI;IAC7B;IACA,IACE,IAAI,CAACE,qBAAqB,KACzB,CAAC2W,yBAAyB,IAAI,CAAC,IAAI,CAAC3W,qBAAqB,CAAChgE,GAAG,CAAC,EAC\u002FD;MACA,IAAI,IAAI,CAAC4\u002FD,SAAS,EAAE;QAClB,IAAI,CAACA,SAAS,CAACxqC,MAAM,CAAC,CAAC;QACvB,IAAI,CAACwqC,SAAS,GAAG,IAAI;MACvB;MACA,IAAI,CAACI,qBAAqB,CAAC5qC,MAAM,CAAC,CAAC;MACnC,IAAI,CAAC4qC,qBAAqB,GAAG,IAAI;IACnC;IACA,IAAI,IAAI,CAAC6U,QAAQ,KAAK,CAAC+B,YAAY,IAAI,CAAC,IAAI,CAAC\u002FB,QAAQ,CAAC70E,GAAG,CAAC,EAAE;MAC1D,IAAI,CAAC60E,QAAQ,CAACz\u002FC,MAAM,CAAC,CAAC;MACtB,IAAI,CAACy\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\u002FE,YAAY;QACjE\u002F6B,WAAW;QACX1N,eAAe;QACfl\u002FB,eAAe;QACfs0D,mBAAmB;QACnBC,mBAAmB;QACnBC,mBAAmB,EAAE,IAAI,CAACI,oBAAoB;QAC9Cf,oBAAoB,EAAE,IAAI,CAACgB,qBAAqB;QAChDJ,yBAAyB;QACzBd,QAAQ,EAAE2Y,kBAAkB,IAAI;UAC9B,IAAI,CAAC,CAACxD,QAAQ,CAACwD,kBAAkB,EAAE,iBAAiB,CAAC;QACvD;MACF,CAAC,CAAC;IACJ;IAEA,MAAM;MAAE93E,KAAK;MAAEC;IAAO,CAAC,GAAG6sD,QAAQ;IAClC,IAAI,CAAC,CAACymB,gBAAgB,GAAGzmB,QAAQ;IAEjC,MAAM;MAAEzzB,MAAM;MAAE0sC,UAAU;MAAE1X;IAAI,CAAC,GAAG,IAAI,CAACoX,aAAa,CAACuD,SAAS,IAAI;MAElEF,aAAa,CAACh\u002FB,OAAO,CAACk\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\u002F\u002FD,OAAO,CAAC+\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\u002FB\u002FmB,OAAO,EAAE2uB,OAAO,CAAC,CAAC;MACpB;IACF,CAAC,CAAC;IAEF,IAEE,CAAC9uD,OAAO,CAAC0e,IAAI,EACb;MAEA,IAAI,CAACA,IAAI,CAACQ,SAAS,CAAC,IAAI,CAACnoB,SAAS,CAAC;IACrC;EACF;EAEA,IAAI2K,UAAUA,CAAA,EAAG;IACf,OAAO,IAAI,CAACgqE,MAAM,CAACx8E,MAAM;EAC3B;EAEAi4D,WAAWA,CAACl2D,KAAK,EAAE;IACjB,OAAO,IAAI,CAACy6E,MAAM,CAACz6E,KAAK,CAAC;EAC3B;EAEA06E,kBAAkBA,CAAA,EAAG;IACnB,OAAO,IAAIx5E,GAAG,CAAC,IAAI,CAAC,CAAC+3E,MAAM,CAAC;EAC9B;EAKA,IAAI1vB,cAAcA,CAAA,EAAG;IAGnB,OAAO,IAAI,CAACkxB,MAAM,CAACrrB,KAAK,CAAC6G,QAAQ,IAAIA,QAAQ,EAAE\u002FmB,OAAO,CAAC;EACzD;EAKA,IAAIwwB,WAAWA,CAAA,EAAG;IAChB,OAAO,IAAI,CAAC,CAACt1D,cAAc,KAAKpW,cAAc,CAACg\u002FE,YAAY;EAC7D;EAKA,IAAI3nE,eAAeA,CAAA,EAAG;IACpB,OAAO,CAAC,CAAC,IAAI,CAAC6uE,iBAAiB;EACjC;EAKA,IAAItpE,iBAAiBA,CAAA,EAAG;IACtB,OAAO,IAAI,CAACk+B,kBAAkB;EAChC;EAKA,IAAIl+B,iBAAiBA,CAACpL,GAAG,EAAE;IACzB,IAAI,CAACrB,MAAM,CAACC,SAAS,CAACoB,GAAG,CAAC,EAAE;MAC1B,MAAM,IAAI6M,KAAK,CAAC,sBAAsB,CAAC;IACzC;IACA,IAAI,CAAC,IAAI,CAAClC,WAAW,EAAE;MACrB;IACF;IAEA,IAAI,CAAC,IAAI,CAACwqE,qBAAqB,CAACn1E,GAAG,EAA+B,IAAI,CAAC,EAAE;MACvEzL,OAAO,CAACC,KAAK,CAAC,uBAAuBwL,GAAG,wBAAwB,CAAC;IACnE;EACF;EAMAm1E,qBAAqBA,CAACn1E,GAAG,EAAEo1E,oBAAoB,GAAG,KAAK,EAAE;IACvD,IAAI,IAAI,CAAC9rC,kBAAkB,KAAKtpC,GAAG,EAAE;MACnC,IAAIo1E,oBAAoB,EAAE;QACxB,IAAI,CAAC,CAACA,oBAAoB,CAAC,CAAC;MAC9B;MACA,OAAO,IAAI;IACb;IAEA,IAAI,EAAE,CAAC,GAAGp1E,GAAG,IAAIA,GAAG,IAAI,IAAI,CAACiL,UAAU,CAAC,EAAE;MACxC,OAAO,KAAK;IACd;IACA,MAAMitC,QAAQ,GAAG,IAAI,CAAC5O,kBAAkB;IACxC,IAAI,CAACA,kBAAkB,GAAGtpC,GAAG;IAE7B,IAAI,CAAC8I,QAAQ,CAACiB,QAAQ,CAAC,cAAc,EAAE;MACrCC,MAAM,EAAE,IAAI;MACZ4B,UAAU,EAAE5L,GAAG;MACfy0D,SAAS,EAAE,IAAI,CAAC8D,WAAW,GAAGv4D,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI;MAC9Ck4C;IACF,CAAC,CAAC;IAEF,IAAIk9B,oBAAoB,EAAE;MACxB,IAAI,CAAC,CAACA,oBAAoB,CAAC,CAAC;IAC9B;IACA,OAAO,IAAI;EACb;EAMA,IAAIC,gBAAgBA,CAAA,EAAG;IACrB,OAAO,IAAI,CAAC9c,WAAW,GAAG,IAAI,CAACjvB,kBAAkB,GAAG,CAAC,CAAC,IAAI,IAAI;EAChE;EAKA,IAAI+rC,gBAAgBA,CAACr1E,GAAG,EAAE;IACxB,IAAI,CAAC,IAAI,CAAC2K,WAAW,EAAE;MACrB;IACF;IACA,IAAIQ,IAAI,GAAGnL,GAAG,GAAG,CAAC;IAClB,IAAI,IAAI,CAACu4D,WAAW,EAAE;MACpB,MAAM39D,CAAC,GAAG,IAAI,CAAC29D,WAAW,CAAC0Y,OAAO,CAACjxE,GAAG,CAAC;MACvC,IAAIpF,CAAC,IAAI,CAAC,EAAE;QACVuQ,IAAI,GAAGvQ,CAAC,GAAG,CAAC;MACd;IACF;IAEA,IAAI,CAAC,IAAI,CAACu6E,qBAAqB,CAAChqE,IAAI,EAA+B,IAAI,CAAC,EAAE;MACxE5W,OAAO,CAACC,KAAK,CAAC,sBAAsBwL,GAAG,wBAAwB,CAAC;IAClE;EACF;EAKA,IAAIs1E,YAAYA,CAAA,EAAG;IACjB,OAAO,IAAI,CAACC,aAAa,KAAK3jF,aAAa,GACvC,IAAI,CAAC2jF,aAAa,GAClB\u002FjF,aAAa;EACnB;EAKA,IAAI8jF,YAAYA,CAACt1E,GAAG,EAAE;IACpB,IAAIC,KAAK,CAACD,GAAG,CAAC,EAAE;MACd,MAAM,IAAI6M,KAAK,CAAC,wBAAwB,CAAC;IAC3C;IACA,IAAI,CAAC,IAAI,CAAClC,WAAW,EAAE;MACrB;IACF;IACA,IAAI,CAAC,CAAC6qE,QAAQ,CAACx1E,GAAG,EAAE;MAAEy1E,QAAQ,EAAE;IAAM,CAAC,CAAC;EAC1C;EAKA,IAAI3xB,iBAAiBA,CAAA,EAAG;IACtB,OAAO,IAAI,CAAC4xB,kBAAkB;EAChC;EAKA,IAAI5xB,iBAAiBA,CAAC9jD,GAAG,EAAE;IACzB,IAAI,CAAC,IAAI,CAAC2K,WAAW,EAAE;MACrB;IACF;IACA,IAAI,CAAC,CAAC6qE,QAAQ,CAACx1E,GAAG,EAAE;MAAEy1E,QAAQ,EAAE;IAAM,CAAC,CAAC;EAC1C;EAKA,IAAInqE,aAAaA,CAAA,EAAG;IAClB,OAAO,IAAI,CAACi+B,cAAc;EAC5B;EAKA,IAAIj+B,aAAaA,CAACD,QAAQ,EAAE;IAC1B,IAAI,CAAC3M,eAAe,CAAC2M,QAAQ,CAAC,EAAE;MAC9B,MAAM,IAAIwB,KAAK,CAAC,+BAA+B,CAAC;IAClD;IACA,IAAI,CAAC,IAAI,CAAClC,WAAW,EAAE;MACrB;IACF;IAEAU,QAAQ,IAAI,GAAG;IACf,IAAIA,QAAQ,GAAG,CAAC,EAAE;MAChBA,QAAQ,IAAI,GAAG;IACjB;IACA,IAAI,IAAI,CAACk+B,cAAc,KAAKl+B,QAAQ,EAAE;MACpC;IACF;IACA,IAAI,CAACk+B,cAAc,GAAGl+B,QAAQ;IAE9B,MAAMO,UAAU,GAAG,IAAI,CAAC09B,kBAAkB;IAE1C,IAAI,CAACqsC,OAAO,CAAC,IAAI,EAAE;MAAEtqE;IAAS,CAAC,CAAC;IAIhC,IAAI,IAAI,CAACqqE,kBAAkB,EAAE;MAC3B,IAAI,CAAC,CAACF,QAAQ,CAAC,IAAI,CAACE,kBAAkB,EAAE;QAAED,QAAQ,EAAE;MAAK,CAAC,CAAC;IAC7D;IAEA,IAAI,CAAC3sE,QAAQ,CAACiB,QAAQ,CAAC,kBAAkB,EAAE;MACzCC,MAAM,EAAE,IAAI;MACZsB,aAAa,EAAED,QAAQ;MACvBO;IACF,CAAC,CAAC;IAEF,IAAI,IAAI,CAACipE,qBAAqB,EAAE;MAC9B,IAAI,CAACrtB,MAAM,CAAC,CAAC;IACf;EACF;EAEA,IAAIgR,gBAAgBA,CAAA,EAAG;IACrB,OAAO,IAAI,CAAC7tD,WAAW,GAAG,IAAI,CAAC4oC,oBAAoB,CAAChkC,OAAO,GAAG,IAAI;EACpE;EAEA,IAAIqmE,eAAeA,CAAA,EAAG;IACpB,OAAO,IAAI,CAACjrE,WAAW,GAAG,IAAI,CAACkrE,0BAA0B,CAACtmE,OAAO,GAAG,IAAI;EAC1E;EAEA,IAAI0gD,YAAYA,CAAA,EAAG;IACjB,OAAO,IAAI,CAACtlD,WAAW,GAAG,IAAI,CAACmrE,gBAAgB,CAACvmE,OAAO,GAAG,IAAI;EAChE;EAEA,IAAIwmE,gBAAgBA,CAAA,EAAG;IACrB,MAAMC,IAAI,GAAG,IAAI;IACjB,OAAOtlF,MAAM,CAAC,IAAI,EAAE,kBAAkB,EAAE;MACtC,IAAI4pE,yBAAyBA,CAAA,EAAG;QAC9B,OAAO0b,IAAI,CAAC,CAAC1b,yBAAyB;MACxC,CAAC;MACD,IAAItT,iBAAiBA,CAAA,EAAG;QACtB,OAAOgvB,IAAI,CAACrrE,WAAW,EAAEq8C,iBAAiB;MAC5C,CAAC;MACD,IAAIjiB,eAAeA,CAAA,EAAG;QACpB,OAAOixC,IAAI,CAACjxC,eAAe;MAC7B,CAAC;MACD,IAAIl\u002FB,eAAeA,CAAA,EAAG;QACpB,OAAO,CAAC,CAACmwE,IAAI,CAACtB,iBAAiB;MACjC,CAAC;MACD,IAAIta,mBAAmBA,CAAA,EAAG;QACxB,OAAO4b,IAAI,CAACrrE,WAAW,EAAEgkD,eAAe,CAAC,CAAC;MAC5C,CAAC;MACD,IAAI2a,cAAcA,CAAA,EAAG;QACnB,OAAO0M,IAAI,CAAC1M,cAAc;MAC5B,CAAC;MACD,IAAInP,mBAAmBA,CAAA,EAAG;QACxB,OAAO6b,IAAI,CAACrrE,WAAW,EAAEiwD,YAAY,CAAC,CAAC;MACzC,CAAC;MACD,IAAInoB,WAAWA,CAAA,EAAG;QAChB,OAAOujC,IAAI,CAACvjC,WAAW;MACzB;IACF,CAAC,CAAC;EACJ;EAMA,CAACwjC,qBAAqBC,CAACC,WAAW,EAAE;IAClC,MAAM9+E,MAAM,GAAG;MACbsN,oBAAoB,EAAE,IAAI,CAAC,CAACA,oBAAoB;MAChDC,cAAc,EAAE,IAAI,CAAC,CAACA,cAAc;MACpCoC,aAAa,EAAE,IAAI,CAAC,CAACA;IACvB,CAAC;IACD,IAAI,CAACmvE,WAAW,EAAE;MAChB,OAAO9+E,MAAM;IACf;IAEA,IACE,CAAC8+E,WAAW,CAACl3E,QAAQ,CAAC5O,cAAc,CAAC+lF,IAAI,CAAC,IAC1C,IAAI,CAAC,CAACpvE,aAAa,KAAKhU,aAAa,CAACE,MAAM,EAC5C;MACAmE,MAAM,CAAC2P,aAAa,GAAGhU,aAAa,CAACG,kBAAkB;IACzD;IAEA,IAAI,CAACgjF,WAAW,CAACl3E,QAAQ,CAAC5O,cAAc,CAACgmF,eAAe,CAAC,EAAE;MACzDh\u002FE,MAAM,CAACsN,oBAAoB,GAAGtW,oBAAoB,CAAC4E,OAAO;IAC5D;IAEA,IACE,CAACkjF,WAAW,CAACl3E,QAAQ,CAAC5O,cAAc,CAACimF,kBAAkB,CAAC,IACxD,CAACH,WAAW,CAACl3E,QAAQ,CAAC5O,cAAc,CAACkmF,sBAAsB,CAAC,IAC5D,IAAI,CAAC,CAAC3xE,cAAc,KAAKpW,cAAc,CAACg\u002FE,YAAY,EACpD;MACAn2E,MAAM,CAACuN,cAAc,GAAGpW,cAAc,CAAC0E,MAAM;IAC\u002FC;IAEA,OAAOmE,MAAM;EACf;EAEA,MAAM,CAACm\u002FE,2BAA2BC,CAACz\u002FE,MAAM,EAAE;IAWzC,IACEyI,QAAQ,CAACi3E,eAAe,KAAK,QAAQ,IACrC,CAAC,IAAI,CAACp2E,SAAS,CAAChM,YAAY,IAC5B,IAAI,CAACmgF,gBAAgB,CAAC,CAAC,CAACh6E,KAAK,CAAChC,MAAM,KAAK,CAAC,EAC1C;MACA;IACF;IAIA,MAAMk+E,gBAAgB,GAAGr3E,OAAO,CAACkQ,aAAa,CAAC,CAAC;MAC9CC,EAAE,GAAG,IAAIC,eAAe,CAAC,CAAC;IAC5BjQ,QAAQ,CAAC3I,gBAAgB,CACvB,kBAAkB,EAClB,MAAM;MACJ,IAAI2I,QAAQ,CAACi3E,eAAe,KAAK,QAAQ,EAAE;QACzCC,gBAAgB,CAACp3E,OAAO,CAAC,CAAC;MAC5B;IACF,CAAC,EACD;MAAEvI,MAAM,EAAE8Z,WAAW,CAAC8lE,GAAG,CAAC,CAAC5\u002FE,MAAM,EAAEyY,EAAE,CAACzY,MAAM,CAAC;IAAE,CACjD,CAAC;IAED,MAAMsI,OAAO,CAACyxD,IAAI,CAAC,CACjB,IAAI,CAAC8kB,0BAA0B,CAACtmE,OAAO,EACvConE,gBAAgB,CAACpnE,OAAO,CACzB,CAAC;IACFE,EAAE,CAACG,KAAK,CAAC,CAAC;EACZ;EAEA,MAAMinE,UAAUA,CAAA,EAAG;IACjB,MAAMrN,KAAK,GAAG,EAAE;IAChB,MAAMiK,MAAM,GAAG,EAAE;IACjB,KACE,IAAI\u002Fa,OAAO,GAAG,CAAC,EAAEztD,UAAU,GAAG,IAAI,CAACN,WAAW,CAACO,QAAQ,EACvDwtD,OAAO,IAAIztD,UAAU,EACrB,EAAEytD,OAAO,EACT;MACA,IAAI,IAAI,CAAC,CAACyb,sBAAsB,EAAE;QAChC,OAAO,IAAI;MACb;MACAV,MAAM,CAACh7E,MAAM,GAAG,CAAC;MACjB,MAAM0S,IAAI,GAAG,MAAM,IAAI,CAACR,WAAW,CAACg\u002FB,OAAO,CAAC+uB,OAAO,CAAC;MAGpD,MAAM;QAAEtgE;MAAM,CAAC,GAAG,MAAM+S,IAAI,CAACwsC,cAAc,CAAC,CAAC;MAC7C,KAAK,MAAMnS,IAAI,IAAIptC,KAAK,EAAE;QACxB,IAAIotC,IAAI,CAAC1tC,GAAG,EAAE;UACZ27E,MAAM,CAAC72E,IAAI,CAAC4oC,IAAI,CAAC1tC,GAAG,CAAC;QACvB;QACA,IAAI0tC,IAAI,CAACsS,MAAM,EAAE;UACf27B,MAAM,CAAC72E,IAAI,CAAC,IAAI,CAAC;QACnB;MACF;MACA4sE,KAAK,CAAC5sE,IAAI,CAAC\u002FE,oBAAoB,CAAC47E,MAAM,CAACr7D,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACnD;IAEA,OAAOoxD,KAAK,CAACpxD,IAAI,CAAC,IAAI,CAAC;EACzB;EAEA,CAAC0+D,YAAYC,CAAC\u002FvE,aAAa,EAAEgmB,KAAK,EAAE;IAClC,MAAMyP,SAAS,GAAGh9B,QAAQ,CAACw\u002FB,YAAY,CAAC,CAAC;IACzC,MAAM;MAAEvC,SAAS;MAAEs6C;IAAW,CAAC,GAAGv6C,SAAS;IAC3C,IACEu6C,UAAU,IACVt6C,SAAS,IACTD,SAAS,CAACw6C,YAAY,CAAC,IAAI,CAAC,CAAC\u002FC,iBAAiB,CAAC,EAC\u002FC;MASA,IACE,IAAI,CAAC,CAACD,oBAAoB,IAC1BjtE,aAAa,KAAKhU,aAAa,CAACG,kBAAkB,EAClD;QACAvC,SAAS,CAACo8B,KAAK,CAAC;QAChB;MACF;MACA,IAAI,CAAC,CAACinD,oBAAoB,GAAG,IAAI;MAMjC,MAAM;QAAE9+E;MAAU,CAAC,GAAG,IAAI,CAACkL,MAAM;MACjClL,SAAS,CAACiI,GAAG,CAAC,SAAS,CAAC;MAExB,MAAMqS,EAAE,GAAG,IAAIC,eAAe,CAAC,CAAC;MAChCvZ,MAAM,CAACW,gBAAgB,CACrB,SAAS,EACTogF,EAAE,IAAK,IAAI,CAAC,CAAC\u002FC,sBAAsB,GAAG+C,EAAE,CAAC3\u002FE,GAAG,KAAK,QAAS,EAC1D;QAAEP,MAAM,EAAEyY,EAAE,CAACzY;MAAO,CACtB,CAAC;MAED,IAAI,CAAC6\u002FE,UAAU,CAAC,CAAC,CACdtkE,IAAI,CAAC,MAAMoM,IAAI,IAAI;QAClB,IAAIA,IAAI,KAAK,IAAI,EAAE;UACjB,MAAMnc,SAAS,CAAC20E,SAAS,CAACC,SAAS,CAACz4D,IAAI,CAAC;QAC3C;MACF,CAAC,CAAC,CACDkO,KAAK,CAACwV,MAAM,IAAI;QACf9tC,OAAO,CAAC6U,IAAI,CACV,kDAAkDi5B,MAAM,CAACtrB,OAAO,EAClE,CAAC;MACH,CAAC,CAAC,CACDi3C,OAAO,CAAC,MAAM;QACb,IAAI,CAAC,CAACimB,oBAAoB,GAAG,KAAK;QAClC,IAAI,CAAC,CAACE,sBAAsB,GAAG,KAAK;QACpC1kE,EAAE,CAACG,KAAK,CAAC,CAAC;QACVza,SAAS,CAAC+K,MAAM,CAAC,SAAS,CAAC;MAC7B,CAAC,CAAC;MAEJtP,SAAS,CAACo8B,KAAK,CAAC;IAClB;EACF;EAKAliB,WAAWA,CAACH,WAAW,EAAE;IACvB,IAAI,IAAI,CAACA,WAAW,EAAE;MACpB,IAAI,CAAC7B,QAAQ,CAACiB,QAAQ,CAAC,cAAc,EAAE;QAAEC,MAAM,EAAE;MAAK,CAAC,CAAC;MAExD,IAAI,CAACqtE,gBAAgB,CAAC,CAAC;MACvB,IAAI,CAACtC,UAAU,CAAC,CAAC;MAEjB,IAAI,CAACzL,cAAc,EAAEx+D,WAAW,CAAC,IAAI,CAAC;MACtC,IAAI,CAAC4pE,iBAAiB,EAAE5pE,WAAW,CAAC,IAAI,CAAC;MAEzC,IAAI,CAAC,CAACwvD,yBAAyB,EAAE1xC,OAAO,CAAC,CAAC;MAC1C,IAAI,CAAC,CAAC0xC,yBAAyB,GAAG,IAAI;IACxC;IAEA,IAAI,CAAC3vD,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACA,WAAW,EAAE;MAChB;IACF;IACA,MAAMM,UAAU,GAAGN,WAAW,CAACO,QAAQ;IACvC,MAAMstD,gBAAgB,GAAG7tD,WAAW,CAACg\u002FB,OAAO,CAAC,CAAC,CAAC;IAE\u002FC,MAAM36B,4BAA4B,GAAGrE,WAAW,CAACs2C,wBAAwB,CAAC;MACxEC,MAAM,EAAE;IACV,CAAC,CAAC;IACF,MAAMo2B,kBAAkB,GAAG,IAAI,CAAC,CAAC3xE,iBAAiB,GAC9CgF,WAAW,CAAC4sE,cAAc,CAAC,CAAC,GAC5Bj4E,OAAO,CAACC,OAAO,CAAC,CAAC;IAErB,MAAM;MAAEuJ,QAAQ;MAAE0rD,UAAU;MAAEn0D;IAAO,CAAC,GAAG,IAAI;IAE7C,IAAI,CAAC,CAAC86C,oBAAoB,GAAG,IAAIzrC,eAAe,CAAC,CAAC;IAClD,MAAM;MAAE1Y;IAAO,CAAC,GAAG,IAAI,CAAC,CAACmkD,oBAAoB;IAI7C,IAAIlwC,UAAU,GAAG0nE,eAAe,CAACC,sBAAsB,EAAE;MACvDr+E,OAAO,CAAC6U,IAAI,CACV,mFACF,CAAC;MACD,MAAMtK,IAAI,GAAI,IAAI,CAAC04E,WAAW,GAAGpkF,UAAU,CAACI,IAAK;MACjDsV,QAAQ,CAACiB,QAAQ,CAAC,mBAAmB,EAAE;QAAEC,MAAM,EAAE,IAAI;QAAElL;MAAK,CAAC,CAAC;IAChE;IAEA,IAAI,CAACg3E,gBAAgB,CAACvmE,OAAO,CAACgD,IAAI,CAChC,MAAM;MACJzJ,QAAQ,CAACiB,QAAQ,CAAC,aAAa,EAAE;QAAEC,MAAM,EAAE,IAAI;QAAEiB;MAAW,CAAC,CAAC;IAChE,CAAC,EACD,MAAM,CAEN,CACF,CAAC;IAED,MAAMwsE,YAAY,GAAGxhF,GAAG,IAAI;MAC1B,MAAMw6D,QAAQ,GAAG,IAAI,CAACwkB,MAAM,CAACh\u002FE,GAAG,CAAC2V,UAAU,GAAG,CAAC,CAAC;MAChD,IAAI,CAAC6kD,QAAQ,EAAE;QACb;MACF;MAGA,IAAI,CAAC,CAACgjB,MAAM,CAAC72E,IAAI,CAAC6zD,QAAQ,CAAC;IAC7B,CAAC;IACD3nD,QAAQ,CAACuH,GAAG,CAAC,YAAY,EAAEonE,YAAY,EAAE;MAAEzgF;IAAO,CAAC,CAAC;IAEpD,MAAM0gF,WAAW,GAAGzhF,GAAG,IAAI;MACzB,IAAIA,GAAG,CAACgrE,YAAY,IAAIhrE,GAAG,CAACirE,YAAY,EAAE;QACxC;MACF;MACA,IAAI,CAAC2U,0BAA0B,CAACt2E,OAAO,CAAC;QAAE4hE,SAAS,EAAElrE,GAAG,CAACkrE;MAAU,CAAC,CAAC;MAErEr4D,QAAQ,CAAC0H,IAAI,CAAC,cAAc,EAAEknE,WAAW,CAAC;IAC5C,CAAC;IACD5uE,QAAQ,CAACuH,GAAG,CAAC,cAAc,EAAEqnE,WAAW,EAAE;MAAE1gF;IAAO,CAAC,CAAC;IAIrDsI,OAAO,CAACynB,GAAG,CAAC,CAACyxC,gBAAgB,EAAE8e,kBAAkB,CAAC,CAAC,CAChD\u002FkE,IAAI,CAAC,CAAC,CAACkmD,YAAY,EAAE0d,WAAW,CAAC,KAAK;MACrC,IAAIxrE,WAAW,KAAK,IAAI,CAACA,WAAW,EAAE;QACpC;MACF;MACA,IAAI,CAAC4oC,oBAAoB,CAACh0C,OAAO,CAACk5D,YAAY,CAAC;MAC\u002FC,IAAI,CAACjP,6BAA6B,GAAGx6C,4BAA4B;MAEjE,MAAM;QAAErK,oBAAoB;QAAEC,cAAc;QAAEoC;MAAc,CAAC,GAC3D,IAAI,CAAC,CAACivE,qBAAqB,CAACE,WAAW,CAAC;MAE1C,IAAInvE,aAAa,KAAKhU,aAAa,CAACC,OAAO,EAAE;QAC3C,MAAMiB,OAAO,GAAI,IAAI,CAAC,CAACggF,iBAAiB,GACtCz0E,QAAQ,CAACyC,aAAa,CAAC,KAAK,CAAE;QAChChO,OAAO,CAAC2I,EAAE,GAAG,mBAAmB;QAChCwD,MAAM,CAAC+oE,MAAM,CAACl1E,OAAO,CAAC;MACxB;MAEA,IAAIyQ,oBAAoB,KAAKtW,oBAAoB,CAAC4E,OAAO,EAAE;QACzD,MAAM6L,IAAI,GAAG6F,oBAAoB;QAEjC,IAAIgG,WAAW,CAACq\u002FC,SAAS,EAAE;UACzBz1D,OAAO,CAAC6U,IAAI,CAAC,0CAA0C,CAAC;QAC1D,CAAC,MAAM,IAAI2pE,2BAA2B,CAACj0E,IAAI,CAAC,EAAE;UAC5C,IAAI,CAAC,CAACw7D,yBAAyB,GAAG,IAAIhsE,yBAAyB,CAC7D,IAAI,CAACgS,SAAS,EACdD,MAAM,EACN,IAAI,CAAC,CAACqzE,cAAc,EACpB,IAAI,CAAC,CAACa,gBAAgB,EACtBzrE,QAAQ,EACR6B,WAAW,EACX6pD,UAAU,EACV,IAAI,CAAC,CAACmf,+BAA+B,EACrC,IAAI,CAAC,CAACluE,6BAA6B,EACnC,IAAI,CAAC,CAACM,qBAAqB,EAC3B,IAAI,CAAC,CAACL,+BAA+B,EACrC,IAAI,CAAC,CAACorB,SAAS,EACf,IAAI,CAAC,CAAC+iD,aAAa,EACnB,IAAI,CAAC,CAACtvE,mBACR,CAAC;UACDuE,QAAQ,CAACiB,QAAQ,CAAC,2BAA2B,EAAE;YAC7CC,MAAM,EAAE,IAAI;YACZmmB,SAAS,EAAE,IAAI,CAAC,CAACmqC;UACnB,CAAC,CAAC;UACF,IAAIx7D,IAAI,KAAKzQ,oBAAoB,CAACsE,IAAI,EAAE;YACtC,IAAI,CAAC,CAACglF,kBAAkB,CAAC74E,IAAI,CAAC;YAC9B,IAAI,CAAC,CAACw7D,yBAAyB,CAACsd,UAAU,CAAC94E,IAAI,CAAC;UAClD;QACF,CAAC,MAAM;UACLvK,OAAO,CAACC,KAAK,CAAC,kCAAkCsK,IAAI,EAAE,CAAC;QACzD;MACF;MAEA,MAAM+4E,aAAa,GACjB,IAAI,CAACL,WAAW,KAAKpkF,UAAU,CAACI,IAAI,GAAG,IAAI,GAAG6M,MAAM;MACtD,MAAMunD,KAAK,GAAG,IAAI,CAAC0tB,YAAY;MAC\u002FB,MAAMnuB,QAAQ,GAAGsR,YAAY,CAACvP,WAAW,CAAC;QACxCtB,KAAK,EAAEA,KAAK,GAAGt3D,aAAa,CAACu3D;MAC\u002FB,CAAC,CAAC;MAGFxnD,MAAM,CAACV,KAAK,CAACQ,WAAW,CAAC,gBAAgB,EAAEgnD,QAAQ,CAACS,KAAK,CAAC;MAE1D,IAAI4M,UAAU,EAAE0L,UAAU,EAAE;QAC1B7\u002FD,MAAM,CAACV,KAAK,CAACQ,WAAW,CAAC,iBAAiB,EAAEq0D,UAAU,CAAC0L,UAAU,CAAC;MACpE;MACA,IACE1L,UAAU,EAAE2L,UAAU,KAAK,YAAY,IACvC3L,UAAU,EAAE0L,UAAU,KAAK,QAAQ,EACnC;QACA7\u002FD,MAAM,CAACV,KAAK,CAACQ,WAAW,CACtB,wBAAwB,EACxBwK,WAAW,CAACskE,aAAa,CAACC,qBAAqB,CAC7C,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,WACF,CACF,CAAC;QACD7uE,MAAM,CAACV,KAAK,CAACQ,WAAW,CACtB,iCAAiC,EACjCwK,WAAW,CAACskE,aAAa,CAACC,qBAAqB,CAC7C,oBAAoB,EACpB,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,YACF,CACF,CAAC;MACH;MAEA,KAAK,IAAIxW,OAAO,GAAG,CAAC,EAAEA,OAAO,IAAIztD,UAAU,EAAE,EAAEytD,OAAO,EAAE;QACtD,MAAMjI,QAAQ,GAAG,IAAI8c,WAAW,CAAC;UAC\u002FBjtE,SAAS,EAAEu3E,aAAa;UACxB\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\u002FE,CAAC,GAAG,IAAI,CAACs\u002FE,SAAS,CAAC1iF,IAAI;UACvBqH,CAAC,GAAG,IAAI,CAACq7E,SAAS,CAAC5iF,GAAG;QACxB,CAAC,MAAM,IAAI,OAAOuH,CAAC,KAAK,QAAQ,IAAIA,CAAC,GAAG,CAAC,EAAE;UAGzCA,CAAC,GAAGwqE,UAAU;QAChB;QACA;MACF,KAAK,MAAM;MACX,KAAK,OAAO;QACVzuE,CAAC,GAAGwT,SAAS,CAAC,CAAC,CAAC;QAChBhS,KAAK,GAAGi4E,SAAS;QACjBh4E,MAAM,GAAGgtE,UAAU;QACnB1f,KAAK,GAAG,aAAa;QACrB;MACF,KAAK,MAAM;QACT\u002FuD,CAAC,GAAGwT,SAAS,CAAC,CAAC,CAAC;QAChBvP,CAAC,GAAGuP,SAAS,CAAC,CAAC,CAAC;QAChBhS,KAAK,GAAGgS,SAAS,CAAC,CAAC,CAAC,GAAGxT,CAAC;QACxByB,MAAM,GAAG+R,SAAS,CAAC,CAAC,CAAC,GAAGvP,CAAC;QACzB,IAAIk9E,QAAQ,GAAGloF,iBAAiB;UAC9BmoF,QAAQ,GAAGloF,gBAAgB;QAE7B,IAEE,IAAI,CAAC6iF,iBAAiB,EACtB;UACAoF,QAAQ,GAAGC,QAAQ,GAAG,CAAC;QACzB;QACAK,UAAU,GACR,CAAC,IAAI,CAACh6E,SAAS,CAACrL,WAAW,GAAG+kF,QAAQ,IACtC3\u002FE,KAAK,GACL\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\u002FD;EAEA0\u002FE,gBAAgBA,CAAA,EAAG;IACjB,MAAMh6E,KAAK,GACP,IAAI,CAAC+8E,WAAW,KAAKpkF,UAAU,CAACI,IAAI,GAChC,IAAI,CAAC,CAAC6gF,mBAAmB,CAACkE,KAAK,GAC\u002FB,IAAI,CAACtD,MAAM;MACjBj6E,UAAU,GAAG,IAAI,CAACw8E,WAAW,KAAKpkF,UAAU,CAACE,UAAU;MACvD2H,GAAG,GAAGD,UAAU,IAAI,IAAI,CAAC2gF,eAAe;IAE1C,OAAO9gF,kBAAkB,CAAC;MACxBC,QAAQ,EAAE,IAAI,CAACwF,SAAS;MACxB7F,KAAK;MACLM,gBAAgB,EAAE,IAAI;MACtBC,UAAU;MACVC;IACF,CAAC,CAAC;EACJ;EAEAo9D,OAAOA,CAAA,EAAG;IACR,KAAK,MAAM5H,QAAQ,IAAI,IAAI,CAACwkB,MAAM,EAAE;MAClC,IAAIxkB,QAAQ,CAAC5C,cAAc,KAAK77D,eAAe,CAACI,QAAQ,EAAE;QACxDq+D,QAAQ,CAAC99C,KAAK,CAAC,CAAC;MAClB;IACF;EACF;EAKA0kE,gBAAgBA,CAAA,EAAG;IACjB,KAAK,MAAM5mB,QAAQ,IAAI,IAAI,CAACwkB,MAAM,EAAE;MAClCxkB,QAAQ,CAAC2E,eAAe,CAAC,CAAC;IAC5B;EACF;EAMA,MAAM,CAAC0D,mBAAmBC,CAACtI,QAAQ,EAAE;IACnC,IAAIA,QAAQ,CAAC\u002FmB,OAAO,EAAE;MACpB,OAAO+mB,QAAQ,CAAC\u002FmB,OAAO;IACzB;IACA,IAAI;MACF,MAAMA,OAAO,GAAG,MAAM,IAAI,CAAC\u002F+B,WAAW,CAACg\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\u002FE,UAAU,EAAE;cACrB;YACF;YACA,IAAI1\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\u002FC,sBAAsBiB,CAAC3hC,OAAO,EAAE;IAC\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\u002Fe,IAAI,CAAC,IAAI,CAAC,CAAC;IAC\u002FD6vE,SAAS,CAAC\u002FoF,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAACsG,GAAG,CAAC4S,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD+vE,WAAW,CAACjpF,gBAAgB,CAC1B,OAAO,EACP,MAAM;MACJ,IAAI,CAAC,CAAC6a,eAAe,CAAC;QACpBvJ,IAAI,EAAE,WAAW;QACjBqG,MAAM,EAAE,uBAAuB;QAC\u002FBgC,IAAI,EAAE;UACJrI,IAAI,EAAE,IAAI,CAAC,CAACi5E;QACd;MACF,CAAC,CAAC;MACF,IAAI,CAAC,CAACa,OAAO,CAAC,IAAI,CAAC;IACrB,CAAC,EACD;MAAEx7B,OAAO,EAAE;IAAK,CAClB,CAAC;IACD,IAAI,CAAC,CAAC9mC,WAAW,CAAC9oB,gBAAgB,CAChC,OAAO,EACP,MAAM;MACJ,IAAI,CAAC,CAACkpF,gBAAgB,CAACjqD,QAAQ,GAAG,IAAI,CAAC,CAACnW,WAAW,CAACpoB,KAAK,KAAK,EAAE;IAClE,CAAC,EACD;MAAEkvD,OAAO,EAAE;IAAK,CAClB,CAAC;IACD,IAAI,CAAC,CAACs5B,gBAAgB,CAAClpF,gBAAgB,CACrC,OAAO,EACP,MAAM;MACJ,IAAI,CAAC,CAAC8oB,WAAW,CAACpoB,KAAK,GAAG,EAAE;MAC5B,IAAI,CAAC,CAACwoF,gBAAgB,CAACjqD,QAAQ,GAAG,IAAI;IACxC,CAAC,EACD;MAAE2wB,OAAO,EAAE;IAAK,CAClB,CAAC;IACDp2B,gBAAgB,CAACx5B,gBAAgB,CAC\u002FB,OAAO,EACP,MAAM;MACJ0pF,QAAQ,CAAC1uD,MAAM,GAAG,IAAI;IACxB,CAAC,EACD;MAAE40B,OAAO,EAAE;IAAK,CAClB,CAAC;IAED,IAAI,CAAC,CAACy7B,cAAc,CAACP,UAAU,EAAEC,UAAU,EAAEC,WAAW,EAAEH,MAAM,CAAC;IACjEhB,WAAW,CAACyB,MAAM,GAAGvxF,uBAAuB,CAACunB,IAAI,CAAC,GAAG,CAAC;IAEtDtP,QAAQ,CAACuH,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAACgyE,iBAAiB,CAACryE,IAAI,CAAC,IAAI,CAAC,CAAC;IAE3EkgB,cAAc,CAACgB,QAAQ,CAAC9B,MAAM,CAAC;EACjC;EAEA,CAAC+yD,cAAcG,CAACV,UAAU,EAAEC,UAAU,EAAEC,WAAW,EAAEH,MAAM,EAAE;IAC3D,MAAMp6C,OAAO,GAAI,IAAI,CAAC,CAAC05C,UAAU,GAAG,IAAI3pF,GAAG,CAAC,CAC1C,CAAC,MAAM,EAAEsqF,UAAU,CAAC,EACpB,CAAC,MAAM,EAAEC,UAAU,CAAC,EACpB,CAAC,OAAO,EAAEC,WAAW,CAAC,CACvB,CAAE;IACH,MAAMS,WAAW,GAAGtgF,CAAC,IAAI;MACvB,KAAK,MAAM,CAAC+G,IAAI,EAAEpH,MAAM,CAAC,IAAI2lC,OAAO,EAAE;QACpC,IAAI3lC,MAAM,KAAKK,CAAC,CAAC6K,MAAM,EAAE;UACvBlL,MAAM,CAACE,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC;UAC1CF,MAAM,CAACE,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC;UAClC6\u002FE,MAAM,CAAC7\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\u002FE,MAAM,EAAE+sF,YAAY,CAAC\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\u002FC;IACF;IAEA,IAAI,CAAC,CAACg\u002FE,gBAAgB,CAAC\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\u002F\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\u002F0F,kBAAkB,CAAC02F,iBAAiB,CAAC;QAC\u002FDP,QAAQ,EAAEM,SAAS;QACnBzB,WAAW;QACX\u002FB,SAAS;QACTvpF,KAAK;QACLC;MACF,CAAC,CAAC;MACFwzB,IAAI,GAAG,MAAM,IAAI,CAAC,CAAC2zD,gBAAgB,CAACj4E,MAAM,CAAC;QACzCoW,WAAW;QACX8lE;MACF,CAAC,CAAC;MACF,IAAI53D,IAAI,EAAE;QACR,IAAI,CAAC,CAAC03D,gBAAgB,CACpB;UACE3B,MAAM,EAAEuD,SAAS,CAACxlE,GAAG,CAACkiE,MAAM,KAAK;YAAEA;UAAO,CAAC,CAAC,CAAC;UAC7C6B,WAAW;UACX\u002FB,SAAS;UACTvpF,KAAK;UACLC;QACF,CAAC,EACDwzB,IAAI,EACJlO,WACF,CAAC;MACH,CAAC,MAAM;QACLrrB,OAAO,CAAC6U,IAAI,CAAC,kDAAkD,CAAC;MAClE;IACF;IAEA,MAAM8oB,OAAO,GAAG,IAAI,CAAC,CAAC4tD,aAAa,CAAC32E,GAAG,CAACf,IAAI,CAAC;IAC7C,IAAI,CAAC,CAACuJ,eAAe,CAAC;MACpBvJ,IAAI,EAAE,WAAW;MACjBqG,MAAM,EAAE,yBAAyB;MACjCgC,IAAI,EAAE;QACJrI,IAAI;QACJk\u002FE,KAAK,EAAE,CAAC,CAACx5D,IAAI;QACbw4D,UAAU,EAAE,MAAM,IAAI,CAAC,CAAC7E,gBAAgB,CAACriF,IAAI,CAAC,CAAC;QAC\u002FCmoF,kBAAkB,EAAE3nE,WAAW,KAAKsS,OAAO,CAAC5O;MAC9C;IACF,CAAC,CAAC;IAEF,IAAI,CAAC,CAAC2L,aAAa,CAACu4D,YAAY,CAC9B\u002F2E,IAAI,EACJkvE,sBAAsB,EACtB,IAAI,CAAC,CAAC\u002F\u002FD,WAAW,CAACpoB,KAAK,EACvBs2B,IACF,CAAC;IAED,IAAI,CAAC,CAACoG,MAAM,CAAC,CAAC;EAChB;EAEAtL,OAAOA,CAAA,EAAG;IACR,IAAI,CAAC,CAACuH,SAAS,GAAG,IAAI;IACtB,IAAI,CAAC,CAAC+D,MAAM,CAAC,CAAC;EAChB;AACF;AAEA,MAAM+tD,qBAAqB,CAAC;EAC1B,CAAChzD,aAAa;EAEd,CAACw4D,mBAAmB;EAEpB,CAAC7nE,WAAW;EAEZ,CAACwP,MAAM;EAEP,CAACc,cAAc;EAEf,CAACw3D,YAAY;EAEb,CAACv3D,SAAS;EAEVrwB,WAAWA,CACT;IAAEsvB,MAAM;IAAExP,WAAW;IAAEsP,YAAY;IAAEy4D,YAAY;IAAEC;EAAkB,CAAC,EACtE13D,cAAc,EACd;IACA,MAAM23D,gBAAgB,GAAI,IAAI,CAAC,CAACjoE,WAAW,GACzCA,WAAW,CAACglB,iBAAkB;IAChC,IAAI,CAAC,CAAC8iD,YAAY,GAAGE,iBAAiB;IACtC,IAAI,CAAC,CAACx4D,MAAM,GAAGA,MAAM;IACrB,IAAI,CAAC,CAACc,cAAc,GAAGA,cAAc;IAErCd,MAAM,CAACt4B,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAACy5B,KAAK,CAACvgB,IAAI,CAAC,IAAI,CAAC,CAAC;IACxDof,MAAM,CAACt4B,gBAAgB,CAAC,aAAa,EAAEmL,CAAC,IAAI;MAC1C,IAAIA,CAAC,CAAC6K,MAAM,KAAK,IAAI,CAAC,CAAC8S,WAAW,EAAE;QAClC3d,CAAC,CAACuuB,cAAc,CAAC,CAAC;MACpB;IACF,CAAC,CAAC;IACFtB,YAAY,CAACp4B,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAACi4B,MAAM,CAAC\u002Fe,IAAI,CAAC,IAAI,CAAC,CAAC;IAC\u002FD23E,YAAY,CAAC7wF,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC0wD,MAAM,CAACx3C,IAAI,CAAC,IAAI,CAAC,CAAC;IAE\u002FD,MAAMgwE,gBAAgB,GAAGpgE,WAAW,CAACoiE,gBAAgB;IACrDhC,gBAAgB,CAAClpF,gBAAgB,CAAC,OAAO,EAAE,MAAM;MAC\u002FC+wF,gBAAgB,CAACrwF,KAAK,GAAG,EAAE;MAC3BwoF,gBAAgB,CAACjqD,QAAQ,GAAG,IAAI;MAChC4xD,YAAY,CAAC5xD,QAAQ,GAAG,IAAI,CAAC,CAAC0xD,mBAAmB,KAAK,EAAE;IAC1D,CAAC,CAAC;IACFI,gBAAgB,CAAC\u002FwF,gBAAgB,CAC\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\u002FE,oBAAoB;MACrCp4E,SAAS,EAAE,4BAA4B;MACvCiuE,YAAY,EAAE;QACZ,IAAIt\u002FE,IAAIA,CAAA,EAAG;UACT,MAAM;YAAE3J;UAAU,CAAC,GAAGoU,OAAO,CAACg\u002FE,oBAAoB;UAClD,OAAOpzF,SAAS,CAACC,QAAQ,CAAC,SAAS,CAAC,GAChC\u002FG,oBAAoB,CAACsE,IAAI,GACzBtE,oBAAoB,CAACm6F,QAAQ;QACnC;MACF;IACF,CAAC,EACD;MACEt0F,OAAO,EAAEqV,OAAO,CAACk\u002FE,qBAAqB;MACtCt4E,SAAS,EAAE,4BAA4B;MACvCiuE,YAAY,EAAE;QACZ,IAAIt\u002FE,IAAIA,CAAA,EAAG;UACT,MAAM;YAAE3J;UAAU,CAAC,GAAGoU,OAAO,CAACk\u002FE,qBAAqB;UACnD,OAAOtzF,SAAS,CAACC,QAAQ,CAAC,SAAS,CAAC,GAChC\u002FG,oBAAoB,CAACsE,IAAI,GACzBtE,oBAAoB,CAACq6F,SAAS;QACpC;MACF;IACF,CAAC,EACD;MACEx0F,OAAO,EAAEqV,OAAO,CAACo\u002FE,eAAe;MAChCx4E,SAAS,EAAE,4BAA4B;MACvCiuE,YAAY,EAAE;QACZ,IAAIt\u002FE,IAAIA,CAAA,EAAG;UACT,MAAM;YAAE3J;UAAU,CAAC,GAAGoU,OAAO,CAACo\u002FE,eAAe;UAC7C,OAAOxzF,SAAS,CAACC,QAAQ,CAAC,SAAS,CAAC,GAChC\u002FG,oBAAoB,CAACsE,IAAI,GACzBtE,oBAAoB,CAACu6F,GAAG;QAC9B;MACF;IACF,CAAC,EACD;MACE10F,OAAO,EAAEqV,OAAO,CAACs\u002FE,iBAAiB;MAClC14E,SAAS,EAAE,4BAA4B;MACvCiuE,YAAY,EAAE;QACZ,IAAIt\u002FE,IAAIA,CAAA,EAAG;UACT,MAAM;YAAE3J;UAAU,CAAC,GAAGoU,OAAO,CAACs\u002FE,iBAAiB;UAC\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\u002FE,qBAAqB,CAAClrD,aAAa,CAAC\u002FL,MAAM,GAAG,KAAK;QACpD;QACA,IAAI,CAAC66D,sBAAsB,GAAG,IAAIrzD,sBAAsB,CACtDqyD,SAAS,CAACgB,sBAAsB,EAChC7jF,QACF,CAAC;MACH,CAAC,MAAM;QACL,KAAK,MAAMjM,EAAE,IAAI,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,EAAE;UAC7D4C,QAAQ,CAACurD,cAAc,CAACnuD,EAAE,CAAC,EAAE1H,SAAS,CAACiI,GAAG,CAAC,QAAQ,CAAC;QACtD;MACF;IACF;IAEA,IAAI0zB,SAAS,IAAI66D,SAAS,CAACe,gBAAgB,EAAE7N,0BAA0B,EAAE;MACvE,IAAI,CAAC+N,oBAAoB,GAAG,IAAI13D,oBAAoB,CAClDy2D,SAAS,CAAC4D,qBAAqB,EAC\u002FBr\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\u002FT,KAAK,EAAED,WAAW,EAAE\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\u002FD,KAAK,CAAC;IAC\u002FB,CAAC;IAED,OAAOy\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\u002FC,SAAS,CAACo5C,iBAAiB,EAAE;UAC\u002FB;QACF;QACA,IAAI,CAACxG,eAAe,GAAGA,eAAe;QAGtC5yC,SAAS,CAACk5C,iBAAiB,GAAGl5C,SAAS,CAACk5C,iBAAiB;QAEzD,IAAI,CAAC6O,cAAc,CAAChlD,IAAI,CAAC;MAC3B,CAAC,CAAC,CACDkf,KAAK,CAAC,MAAM;QAGX,IAAI,CAAC8lC,cAAc,CAAC,CAAC;MACvB,CAAC,CAAC,CACDpgD,IAAI,CAAC,YAAY;QAKhB3H,SAAS,CAAC48C,MAAM,CAAC,CAAC;MACpB,CAAC,CAAC;IACN,CAAC,CAAC;IAEFyI,YAAY,CAAC19C,IAAI,CACf,MAAM;MACJ,IAAI,CAACo\u002FE,yBAAyB,CAAC,CAAC;MAEhC,IAAI,CAACyC,oBAAoB,CAACzpF,WAAW,EAAE4oF,iBAAiB,CAAC;IAC3D,CAAC,EACDlxD,MAAM,IAAI;MACR,IAAI,CAACkwD,cAAc,CAAC,qBAAqB,EAAE;QAAEx7E,OAAO,EAAEsrB,MAAM,CAACtrB;MAAQ,CAAC,CAAC;IACzE,CACF,CAAC;IAED6+D,eAAe,CAACrjE,IAAI,CAAC9B,IAAI,IAAI;MAC3B,IAAI,CAACY,gBAAgB,CAACM,eAAe,CAAC;QACpCvJ,IAAI,EAAE,UAAU;QAChB+4D,SAAS,EAAE1wD,IAAI,CAAC0wD;MAClB,CAAC,CAAC;MAEF,IAAI,IAAI,CAACgrB,gBAAgB,EAAE;QACzBxhF,WAAW,CAAC0pF,UAAU,CAAC,CAAC,CAAC9hF,IAAI,CAAC6vC,OAAO,IAAI;UACvC,IAAIz3C,WAAW,KAAK,IAAI,CAACA,WAAW,EAAE;YACpC;UACF;UACA,IAAI,CAACwhF,gBAAgB,CAAC3nD,MAAM,CAAC;YAAE4d,OAAO;YAAEz3C;UAAY,CAAC,CAAC;QACxD,CAAC,CAAC;MACJ;MACA,IAAI,IAAI,CAACyhF,mBAAmB,EAAE;QAC5BzhF,WAAW,CAAC2pF,cAAc,CAAC,CAAC,CAAC\u002FhF,IAAI,CAAC+yB,WAAW,IAAI;UAC\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\u002FC,SAAS,EACtB;MACA,IAAIr\u002FC,WAAW,CAAC+2C,aAAa,CAAC\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\u002FB,iBAAiB,CAACz\u002FB,QAAQ,GAAG,CAAC,CAAC,IAAI,CAACw\u002FB,YAAY;IACrD,IAAI,CAACC,iBAAiB,CAACx\u002FB,sBAAsB,GAC3C,IAAI,CAAC4\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\u002F8D,aAAa,CAACplC,SAAS,IAC\u002FC,IAAI,CAACoiG,eAAe,KAAKh9D,aAAa,CAACrlC,UAAU,EACjD;QACA;MACF;MAEAqlC,aAAa,CAAC9pB,mBAAmB,CAAC,QAAQ,EAAEumD,MAAM,CAAC;MACnD,IAAI,CAACu2B,YAAY,GAAG,IAAI;MACxBhzD,aAAa,CAACjkC,gBAAgB,CAAC,WAAW,EAAEkhG,SAAS,EAAE;QAAEhhG;MAAO,CAAC,CAAC;MAClE+jC,aAAa,CAACjkC,gBAAgB,CAAC,MAAM,EAAEkhG,SAAS,EAAE;QAAEhhG;MAAO,CAAC,CAAC;IAC\u002FD,CAAC;IACD+jC,aAAa,CAACjkC,gBAAgB,CAAC,QAAQ,EAAE0gE,MAAM,EAAE;MAC\u002FC9Q,OAAO,EAAE,IAAI;MACb1vD;IACF,CAAC,CAAC;EACJ,CAAC;EAEDgmD,YAAYA,CAAA,EAAG;IACb,IAAI,CAAC8vC,wBAAwB,EAAEl9E,KAAK,CAAC,CAAC;IACtC,IAAI,CAACk9E,wBAAwB,GAAG,IAAI;EACtC,CAAC;EAEDmL,kBAAkBA,CAAA,EAAG;IACnB,IAAI,CAAClL,sBAAsB,EAAEn9E,KAAK,CAAC,CAAC;IACpC,IAAI,CAACm9E,sBAAsB,GAAG,IAAI;IAClC,IAAI,CAACQ,aAAa,GAAG,IAAI;EAC3B,CAAC;EAKD,MAAM2K,YAAYA,CAAA,EAAG;IACnB,IAAI,CAACl7C,YAAY,CAAC,CAAC;IACnB,IAAI,CAACi7C,kBAAkB,CAAC,CAAC;IAEzB,IAAI,CAACjL,sBAAsB,EAAEp9E,KAAK,CAAC,CAAC;IACpC,IAAI,CAACo9E,sBAAsB,GAAG,IAAI;IAElC,IAAI,CAACqC,OAAO,EAAE9+D,KAAK,CAAC,CAAC;IAErB,MAAMjxB,OAAO,CAACynB,GAAG,CAAC,CAAC,IAAI,CAACkB,IAAI,EAAEW,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC2H,KAAK,CAAC,CAAC,CAAC,CAAC;EACzD,CAAC;EAED0gE,gBAAgBA,CAACD,KAAK,EAAEmH,IAAI,EAAE;IAE5B,IAAK,IAAI,CAACA,IAAI,CAAC,GAAG,CAAC,IAAInH,KAAK,GAAG,CAAC,IAAM,IAAI,CAACmH,IAAI,CAAC,GAAG,CAAC,IAAInH,KAAK,GAAG,CAAE,EAAE;MAClE,IAAI,CAACmH,IAAI,CAAC,GAAG,CAAC;IAChB;IACA,IAAI,CAACA,IAAI,CAAC,IAAInH,KAAK;IACnB,MAAMoH,UAAU,GAAGt\u002FF,IAAI,CAACu\u002FF,KAAK,CAAC,IAAI,CAACF,IAAI,CAAC,CAAC;IACzC,IAAI,CAACA,IAAI,CAAC,IAAIC,UAAU;IACxB,OAAOA,UAAU;EACnB,CAAC;EAEDtH,iBAAiBA,CAACnX,aAAa,EAAE2e,MAAM,EAAEH,IAAI,EAAE;IAC7C,IAAIG,MAAM,KAAK,CAAC,EAAE;MAChB,OAAO,CAAC;IACV;IAEA,IAAK,IAAI,CAACH,IAAI,CAAC,GAAG,CAAC,IAAIG,MAAM,GAAG,CAAC,IAAM,IAAI,CAACH,IAAI,CAAC,GAAG,CAAC,IAAIG,MAAM,GAAG,CAAE,EAAE;MACpE,IAAI,CAACH,IAAI,CAAC,GAAG,CAAC;IAChB;IAEA,MAAMI,SAAS,GACbz\u002FF,IAAI,CAACC,KAAK,CAAC4gF,aAAa,GAAG2e,MAAM,GAAG,IAAI,CAACH,IAAI,CAAC,GAAG,GAAG,CAAC,IACpD,GAAG,GAAGxe,aAAa,CAAC;IACvB,IAAI,CAACwe,IAAI,CAAC,GAAGG,MAAM,GAAGC,SAAS;IAE\u002FB,OAAOA,SAAS;EAClB,CAAC;EAOD5G,yBAAyBA,CAAA,EAAG;IAC1BlyF,QAAQ,CAAC+4F,kBAAkB,GAAG,KAAK,CAAC;IAGpC,IAAI,CAAC7G,yBAAyB,GAAG,MAAM,CAAC,CAAC;EAC3C,CAAC;EAMD,IAAI8G,cAAcA,CAAA,EAAG;IACnB,OAAO,IAAI,CAAClM,mBAAmB,CAACn+B,KAAK;EACvC;AACF,CAAC;AAEDrgC,OAAO,CAACy9D,oBAAoB,CAAC;AAEwC;EACnE5\u002FB,sBAAsB,CAACC,WAAW,CAAC2\u002FB,oBAAoB,CAAC;AAC1D;AAEiE;EAC\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\u002FB,IAAIo+E,WAAW,GAAG1jF,IAAI,CAAC+\u002FF,GAAG,CAAC,CAAC5iG,GAAG,CAAC8H,MAAM,GAAG,GAAG,CAAC;EAE7C,MAAM+6F,YAAY,GAEhB,KAC0B;EAC5B,MAAMC,aAAa,GACjB9iG,GAAG,CAACm1D,OAAO,IACX,CAAC,IAAI,CAACyiC,cAAc,IACpBzvF,SAAS,KAAKG,UAAU,CAACC,eAAe,IACxCvI,GAAG,CAAC6H,MAAM,KAAK,CAAC,KACfhF,IAAI,CAAC4E,GAAG,CAAC8+E,WAAW,GAAG,CAAC,CAAC,GAAG,IAAI,IAAIsc,YAAY,CAAC,IAClD7iG,GAAG,CAAC+iG,MAAM,KAAK,CAAC;EAClB,MAAMvf,MAAM,GAAG,CAACxjF,GAAG,CAAC6wC,OAAO,EAAE7wC,GAAG,CAAC+wC,OAAO,CAAC;EAEzC,IACE+xD,aAAa,IACZ9iG,GAAG,CAACm1D,OAAO,IAAI\u002FmD,6BAA8B,IAC7CpO,GAAG,CAACo1D,OAAO,IAAI\u002FmD,6BAA8B,EAC9C;IAEArO,GAAG,CAACu6B,cAAc,CAAC,CAAC;IAEpB,IACE,IAAI,CAACu9D,YAAY,IACjBtuF,QAAQ,CAACi3E,eAAe,KAAK,QAAQ,IACrC,IAAI,CAACxmD,cAAc,CAAC6R,MAAM,EAC1B;MACA;IACF;IAEA,IAAIg3D,aAAa,IAAIx0F,mBAAmB,EAAE;MACxCi4E,WAAW,GAAG,IAAI,CAACsU,iBAAiB,CAClClmF,SAAS,CAAC0qE,YAAY,EACtBkH,WAAW,EACX,oBACF,CAAC;MACD,IAAI,CAACgU,UAAU,CAAC,IAAI,EAAEhU,WAAW,EAAE\u002FC,MAAM,CAAC;IAC5C,CAAC,MAAM;MACL,MAAM77E,KAAK,GAAGD,4BAA4B,CAAC1H,GAAG,CAAC;MAE\u002FC,IAAI+6F,KAAK,GAAG,CAAC;MACb,IACE5yF,SAAS,KAAKG,UAAU,CAACE,cAAc,IACvCL,SAAS,KAAKG,UAAU,CAAC06F,cAAc,EACvC;QAQAjI,KAAK,GACHl4F,IAAI,CAAC4E,GAAG,CAACE,KAAK,CAAC,IAAI,CAAC,GAChB9E,IAAI,CAACogG,IAAI,CAACt7F,KAAK,CAAC,GAChB,IAAI,CAACqzF,gBAAgB,CAACrzF,KAAK,EAAE,mBAAmB,CAAC;MACzD,CAAC,MAAM;QAEL,MAAMmzF,qBAAqB,GAAG,EAAE;QAChCC,KAAK,GAAG,IAAI,CAACC,gBAAgB,CAC3BrzF,KAAK,GAAGmzF,qBAAqB,EAC7B,mBACF,CAAC;MACH;MAEA,IAAI,CAACP,UAAU,CAACQ,KAAK,EAAE,IAAI,EAAEvX,MAAM,CAAC;IACtC;EACF;AACF;AAEA,SAAS0f,qBAAqBA,CAAC;EAAErsF;AAAO,CAAC,EAAE;EACzC,IAAI,CAAC,IAAI,CAAC4\u002FE,gBAAgB,EAAE3rD,MAAM,EAAE;IAClC;EACF;EACA,MAAM;IAAE2+C,OAAO;IAAEgN;EAAiB,CAAC,GAAG,IAAI,CAACf,SAAS;EACpD,IACE,IAAI,CAAC\u002FgF,SAAS,CAAC8wE,eAAe,CAAC5uE,MAAM,CAAC,IACrC4yE,OAAO,EAAEp\u002FE,SAAS,CAAClL,QAAQ,CAAC0X,MAAM,CAAC,IAClC,CAAC4\u002FE,gBAAgB,EAAEhN,OAAO,CAACtqF,QAAQ,CAAC0X,MAAM,CAAC,IAI3C,CAAC4\u002FE,gBAAgB,EAAE\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\u002FB,iBAAiB,EAAE\u002FqF,QAAQ,CAACurD,cAAc,CAAC,mBAAmB,CAAC;MAC\u002FD9S,QAAQ,EAAEz4C,QAAQ,CAACurD,cAAc,CAAC,UAAU,CAAC;MAC7CjvC,IAAI,EAAEtc,QAAQ,CAACurD,cAAc,CAAC,MAAM,CAAC;MACrCq9B,MAAM,EAAE5oF,QAAQ,CAACurD,cAAc,CAAC,cAAc,CAAC;MAC\u002FCs9B,OAAO,EAAE7oF,QAAQ,CAACurD,cAAc,CAAC,eAAe,CAAC;MACjDL,KAAK,EAAElrD,QAAQ,CAACurD,cAAc,CAAC,aAAa,CAAC;MAC7Cu9B,oBAAoB,EAAE9oF,QAAQ,CAACurD,cAAc,CAAC,sBAAsB,CAAC;MACrEg\u002FB,2BAA2B,EAAEvqF,QAAQ,CAACurD,cAAc,CAClD,6BACF,CAAC;MACDy9B,qBAAqB,EAAEhpF,QAAQ,CAACurD,cAAc,CAAC,uBAAuB,CAAC;MACvEi\u002FB,4BAA4B,EAAExqF,QAAQ,CAACurD,cAAc,CACnD,8BACF,CAAC;MACDw+B,0BAA0B,EAAE\u002FpF,QAAQ,CAACurD,cAAc,CACjD,4BACF,CAAC;MACD29B,eAAe,EAAElpF,QAAQ,CAACurD,cAAc,CAAC,iBAAiB,CAAC;MAC3Dk\u002FB,sBAAsB,EAAEzqF,QAAQ,CAACurD,cAAc,CAAC,wBAAwB,CAAC;MACzE69B,iBAAiB,EAAEppF,QAAQ,CAACurD,cAAc,CAAC,mBAAmB,CAAC;MAC\u002FDm\u002FB,wBAAwB,EAAE1qF,QAAQ,CAACurD,cAAc,CAC\u002FC,0BACF,CAAC;MACD+9B,qBAAqB,EAAEtpF,QAAQ,CAACurD,cAAc,CAAC,uBAAuB,CAAC;MACvEo\u002FB,4BAA4B,EAAE3qF,QAAQ,CAACurD,cAAc,CACnD,8BACF,CAAC;MACDt1B,QAAQ,EAAEj2B,QAAQ,CAACurD,cAAc,CAAC,gBAAgB;IACpD,CAAC;IACD0hC,gBAAgB,EAAE;MAChBhN,OAAO,EAAEjgF,QAAQ,CAACurD,cAAc,CAAC,kBAAkB,CAAC;MACpDrR,YAAY,EAAEl6C,QAAQ,CAACurD,cAAc,CAAC,8BAA8B,CAAC;MACrE2yB,sBAAsB,EAAEl+E,QAAQ,CAACurD,cAAc,CAAC,kBAAkB,CAAC;MACnE+zB,cAAc,EAERt\u002FE,QAAQ,CAACurD,cAAc,CAAC,mBAAmB,CACvC;MACV4yB,WAAW,EAAEn+E,QAAQ,CAACurD,cAAc,CAAC,gBAAgB,CAAC;MACtD6yB,cAAc,EAAEp+E,QAAQ,CAACurD,cAAc,CAAC,mBAAmB,CAAC;MAC5D8yB,kBAAkB,EAAEr+E,QAAQ,CAACurD,cAAc,CAAC,cAAc,CAAC;MAC3D+yB,eAAe,EAAEt+E,QAAQ,CAACurD,cAAc,CAAC,WAAW,CAAC;MACrDgzB,cAAc,EAAEv+E,QAAQ,CAACurD,cAAc,CAAC,UAAU,CAAC;MACnDizB,kBAAkB,EAAEx+E,QAAQ,CAACurD,cAAc,CAAC,cAAc,CAAC;MAC3DkzB,mBAAmB,EAAEz+E,QAAQ,CAACurD,cAAc,CAAC,eAAe,CAAC;MAC7DmzB,sBAAsB,EAAE1+E,QAAQ,CAACurD,cAAc,CAAC,kBAAkB,CAAC;MACnEqzB,oBAAoB,EAAE5+E,QAAQ,CAACurD,cAAc,CAAC,gBAAgB,CAAC;MAC\u002FDszB,gBAAgB,EAAE7+E,QAAQ,CAACurD,cAAc,CAAC,YAAY,CAAC;MACvDuzB,oBAAoB,EAAE9+E,QAAQ,CAACurD,cAAc,CAAC,gBAAgB,CAAC;MAC\u002FDwzB,sBAAsB,EAAE\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\u002FD\u002FhB,MAAM,EAAE;QACNW,QAAQ,EAAEnqC,QAAQ,CAACurD,cAAc,CAAC,eAAe,CAAC;QAClDnhB,QAAQ,EAAEpqC,QAAQ,CAACurD,cAAc,CAAC,eAAe,CAAC;QAClD\u002F9C,KAAK,EAAExN,QAAQ,CAACurD,cAAc,CAAC,YAAY,CAAC;QAC5CvgB,MAAM,EAAEhrC,QAAQ,CAACurD,cAAc,CAAC,aAAa,CAAC;QAC9CrgB,OAAO,EAAElrC,QAAQ,CAACurD,cAAc,CAAC,cAAc,CAAC;QAChDngB,QAAQ,EAAEprC,QAAQ,CAACurD,cAAc,CAAC,eAAe,CAAC;QAClDlhB,YAAY,EAAErqC,QAAQ,CAACurD,cAAc,CAAC,mBAAmB,CAAC;QAC1DjhB,gBAAgB,EAAEtqC,QAAQ,CAACurD,cAAc,CAAC,uBAAuB,CAAC;QAClEjgB,OAAO,EAAEtrC,QAAQ,CAACurD,cAAc,CAAC,cAAc,CAAC;QAChD\u002Ff,QAAQ,EAAExrC,QAAQ,CAACurD,cAAc,CAAC,eAAe,CAAC;QAClD75D,OAAO,EAAEsO,QAAQ,CAACurD,cAAc,CAAC,cAAc,CAAC;QAChD5f,SAAS,EAAE3rC,QAAQ,CAACurD,cAAc,CAAC,gBAAgB,CAAC;QACpDhhB,QAAQ,EAAEvqC,QAAQ,CAACurD,cAAc,CAAC,eAAe,CAAC;QAClD3f,UAAU,EAAE5rC,QAAQ,CAACurD,cAAc,CAAC,iBAAiB;MACvD;IACF,CAAC;IACDikC,aAAa,EAAE;MACb7\u002FD,MAAM,EAAE3vB,QAAQ,CAACurD,cAAc,CAAC,eAAe,CAAC;MAChDx0B,iBAAiB,EAAE\u002F2B,QAAQ,CAACurD,cAAc,CAAC,mBAAmB,CAAC;MAC\u002FDv0B,gBAAgB,EAAEh3B,QAAQ,CAACurD,cAAc,CAAC,kBAAkB,CAAC;MAC7DtrC,QAAQ,EAAEjgB,QAAQ,CAACurD,cAAc,CAAC,qBAAqB,CAAC;MACxD97B,YAAY,EAAEzvB,QAAQ,CAACurD,cAAc,CAAC,eAAe,CAAC;MACtD36B,UAAU,EAAE5wB,QAAQ,CAACurD,cAAc,CAAC,aAAa;IACnD,CAAC;IACDgkC,gBAAgB,EAAE;MAChB5\u002FD,MAAM,EAAE3vB,QAAQ,CAACurD,cAAc,CAAC,kBAAkB,CAAC;MACnD\u002F9C,KAAK,EAAExN,QAAQ,CAACurD,cAAc,CAAC,iBAAiB,CAAC;MACjD77B,oBAAoB,EAAE1vB,QAAQ,CAACurD,cAAc,CAC3C,gCACF,CAAC;MACDtrC,QAAQ,EAAEjgB,QAAQ,CAACurD,cAAc,CAAC,+BAA+B,CAAC;MAClE37B,UAAU,EAAE5vB,QAAQ,CAACurD,cAAc,CAAC,sBAAsB,CAAC;MAC3Dh7B,SAAS,EAAEvwB,QAAQ,CAACurD,cAAc,CAAC,qBAAqB,CAAC;MACzDp7B,YAAY,EAAEnwB,QAAQ,CAACurD,cAAc,CAAC,wBAAwB,CAAC;MAC\u002FDmvC,mBAAmB,EAAE16F,QAAQ,CAACurD,cAAc,CAC1C,+BACF,CAAC;MACDh8B,yBAAyB,EAAEvvB,QAAQ,CAACurD,cAAc,CAChD,qCACF,CAAC;MACD17B,aAAa,EAAE7vB,QAAQ,CAACurD,cAAc,CAAC,yBAAyB,CAAC;MACjEz7B,wBAAwB,EAAE9vB,QAAQ,CAACurD,cAAc,CAC\u002FC,oCACF,CAAC;MACDx2D,KAAK,EAAEiL,QAAQ,CAACurD,cAAc,CAAC,iBAAiB,CAAC;MACjD16B,gBAAgB,EAAE7wB,QAAQ,CAACurD,cAAc,CAAC,uBAAuB,CAAC;MAClE97B,YAAY,EAAEzvB,QAAQ,CAACurD,cAAc,CAAC,kBAAkB,CAAC;MACzD\u002F6B,YAAY,EAAExwB,QAAQ,CAACurD,cAAc,CAAC,kBAAkB,CAAC;MACzD36B,UAAU,EAAE5wB,QAAQ,CAACurD,cAAc,CAAC,gBAAgB;IACtD,CAAC;IACDukC,qBAAqB,EAAE;MACrBngE,MAAM,EAAE3vB,QAAQ,CAACurD,cAAc,CAAC,uBAAuB,CAAC;MACxD51B,iBAAiB,EAAE31B,QAAQ,CAACurD,cAAc,CAAC,mBAAmB,CAAC;MAC\u002FD71B,eAAe,EAAE11B,QAAQ,CAACurD,cAAc,CAAC,iBAAiB,CAAC;MAC3Dh7B,SAAS,EAAEvwB,QAAQ,CAACurD,cAAc,CAAC,0BAA0B,CAAC;MAC9Dx1B,iBAAiB,EAAE\u002F1B,QAAQ,CAACurD,cAAc,CAAC,mBAAmB,CAAC;MAC\u002FD31B,mBAAmB,EAAE51B,QAAQ,CAACurD,cAAc,CAAC,qBAAqB,CAAC;MACnE11B,uBAAuB,EAAE71B,QAAQ,CAACurD,cAAc,CAC9C,yBACF,CAAC;MACDovC,0BAA0B,EAAE36F,QAAQ,CAACurD,cAAc,CACjD,4BACF,CAAC;MACDz1B,WAAW,EAAE91B,QAAQ,CAACurD,cAAc,CAAC,4BAA4B;IACnE,CAAC;IACDkkC,kBAAkB,EAAE;MAClB9\u002FD,MAAM,EAAE3vB,QAAQ,CAACurD,cAAc,CAAC,oBAAoB,CAAC;MACrD22B,MAAM,EAAEliF,QAAQ,CAACurD,cAAc,CAAC,6BAA6B,CAAC;MAC9D42B,UAAU,EAAEniF,QAAQ,CAACurD,cAAc,CAAC,wBAAwB,CAAC;MAC7Do2B,SAAS,EAAE3hF,QAAQ,CAACurD,cAAc,CAAC,uBAAuB,CAAC;MAC3D62B,UAAU,EAAEpiF,QAAQ,CAACurD,cAAc,CAAC,wBAAwB,CAAC;MAC7Ds1B,OAAO,EAAE7gF,QAAQ,CAACurD,cAAc,CAAC,kBAAkB,CAAC;MACpDk1B,eAAe,EAAEzgF,QAAQ,CAACurD,cAAc,CAAC,6BAA6B,CAAC;MACvEu1B,aAAa,EAAE9gF,QAAQ,CAACurD,cAAc,CAAC,2BAA2B,CAAC;MACnE82B,WAAW,EAAEriF,QAAQ,CAACurD,cAAc,CAAC,yBAAyB,CAAC;MAC\u002FD81B,QAAQ,EAAErhF,QAAQ,CAACurD,cAAc,CAAC,mBAAmB,CAAC;MACtD61B,gBAAgB,EAAEphF,QAAQ,CAACurD,cAAc,CAAC,8BAA8B,CAAC;MACzE21B,WAAW,EAAElhF,QAAQ,CAACurD,cAAc,CAAC,wBAAwB,CAAC;MAC9D41B,eAAe,EAAEnhF,QAAQ,CAACurD,cAAc,CAAC,yBAAyB,CAAC;MACnEprC,WAAW,EAAEngB,QAAQ,CAACurD,cAAc,CAAC,yBAAyB,CAAC;MAC\u002FD+0B,WAAW,EAAEtgF,QAAQ,CAACurD,cAAc,CAAC,sBAAsB,CAAC;MAC5Dg2B,aAAa,EAAEvhF,QAAQ,CAACurD,cAAc,CAAC,2BAA2B,CAAC;MACnE+1B,YAAY,EAAEthF,QAAQ,CAACurD,cAAc,CAAC,0BAA0B,CAAC;MACjEw1B,QAAQ,EAAE\u002FgF,QAAQ,CAACurD,cAAc,CAAC,mBAAmB,CAAC;MACtD16B,gBAAgB,EAAE7wB,QAAQ,CAACurD,cAAc,CAAC,8BAA8B,CAAC;MACzE97B,YAAY,EAAEzvB,QAAQ,CAACurD,cAAc,CAAC,0BAA0B,CAAC;MACjE60B,SAAS,EAAEpgF,QAAQ,CAACurD,cAAc,CAAC,uBAAuB;IAC5D,CAAC;IACDmkC,mBAAmB,EAAE;MACnB\u002F\u002FD,MAAM,EAAE3vB,QAAQ,CAACurD,cAAc,CAAC,gCAAgC,CAAC;MACjEprC,WAAW,EAAEngB,QAAQ,CAACurD,cAAc,CAAC,0BAA0B,CAAC;MAChE48B,iBAAiB,EAAEnoF,QAAQ,CAACurD,cAAc,CAAC,mBAAmB,CAAC;MAC\u002FD97B,YAAY,EAAEzvB,QAAQ,CAACurD,cAAc,CAAC,2BAA2B,CAAC;MAClE28B,YAAY,EAAEloF,QAAQ,CAACurD,cAAc,CAAC,2BAA2B;IACnE,CAAC;IACD2hC,sBAAsB,EAAE;MACtBlzD,sBAAsB,EAAEh6B,QAAQ,CAACurD,cAAc,CAAC,wBAAwB,CAAC;MACzEtxB,mBAAmB,EAAEj6B,QAAQ,CAACurD,cAAc,CAAC,qBAAqB,CAAC;MACnErxB,cAAc,EAAEl6B,QAAQ,CAACurD,cAAc,CAAC,gBAAgB,CAAC;MACzDpxB,kBAAkB,EAAEn6B,QAAQ,CAACurD,cAAc,CAAC,oBAAoB,CAAC;MACjEnxB,gBAAgB,EAAEp6B,QAAQ,CAACurD,cAAc,CAAC,kBAAkB,CAAC;MAC7DlxB,mBAAmB,EAAEr6B,QAAQ,CAACurD,cAAc,CAAC,qBAAqB,CAAC;MACnE\u002FwB,2BAA2B,EAAEx6B,QAAQ,CAACurD,cAAc,CAClD,6BACF,CAAC;MACDjxB,4BAA4B,EAAEt6B,QAAQ,CAACurD,cAAc,CACnD,8BACF,CAAC;MACDhxB,sBAAsB,EAAEv6B,QAAQ,CAACurD,cAAc,CAAC,wBAAwB;IAC1E,CAAC;IACDtD,cAAc,EAAEjoD,QAAQ,CAACurD,cAAc,CAAC,gBAAgB,CAAC;IACzD6oB,aAAa,EAAE;MACbvzE,SAAS,EAAEb,QAAQ,CAACurD,cAAc,CAAC,eAAe,CAAC;MACnDj0C,OAAO,EAAEtX,QAAQ,CAACurD,cAAc,CAAC,sBAAsB,CAAC;MACxD\u002FpB,UAAU,EAAExhC,QAAQ,CAACurD,cAAc,CAAC,yBAAyB,CAAC;MAC9Dz1B,WAAW,EAAE91B,QAAQ,CAACurD,cAAc,CAAC,0BAA0B;IACjE;EACF,CAAC;AACH;AAEA,SAASqvC,aAAaA,CAAA,EAAG;EACvB,MAAMrK,MAAM,GAAGkK,sBAAsB,CAAC,CAAC;EAMrC,MAAMltE,KAAK,GAAG,IAAI69B,WAAW,CAAC,iBAAiB,EAAE;IAC\u002FCC,OAAO,EAAE,IAAI;IACbC,UAAU,EAAE,IAAI;IAChBz4B,MAAM,EAAE;MACNtoB,MAAM,EAAE7T;IACV;EACF,CAAC,CAAC;EACF,IAAI;IAIF9B,MAAM,CAACoL,QAAQ,CAACwtB,aAAa,CAACD,KAAK,CAAC;EACtC,CAAC,CAAC,OAAOrE,EAAE,EAAE;IAGXp0B,OAAO,CAACC,KAAK,CAAC,kBAAkB,EAAEm0B,EAAE,CAAC;IACrClpB,QAAQ,CAACwtB,aAAa,CAACD,KAAK,CAAC;EAC\u002FB;EAEFw+D,oBAAoB,CAACuE,GAAG,CAACC,MAAM,CAAC;AAClC;AAIAvwF,QAAQ,CAAC+4F,kBAAkB,GAAG,IAAI,CAAC;AAEnC,IACE\u002F4F,QAAQ,CAAC66F,UAAU,KAAK,aAAa,IACrC76F,QAAQ,CAAC66F,UAAU,KAAK,UAAU,EAClC;EACAD,aAAa,CAAC,CAAC;AACjB,CAAC,MAAM;EACL56F,QAAQ,CAAC3I,gBAAgB,CAAC,kBAAkB,EAAEujG,aAAa,EAAE,IAAI,CAAC;AACpE\",\"sources\":[\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-object.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-iterator.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fmake-built-in.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffunction-name.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fhtml.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fhidden-keys.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fiterate-simple.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffunction-bind-native.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-string.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fan-instance.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fmath-trunc.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-symbol.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-iterator-method.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-keys.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.every.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Finternal-state.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-integer-or-infinity.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fstructured-clone-proper-transfer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-is-prototype-of.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.union.v2.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.map.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-iterator-direct.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-keys-internal.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdefine-built-in-accessor.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-string-tag-support.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fclassof-raw.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fcorrect-prototype-getter.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.url.can-parse.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-create.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.is-superset-of.v2.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.filter.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fcreate-iter-result-object.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fiterate.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-primitive.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-get-prototype-of.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-forced.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fvalidate-arguments-length.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fenvironment-user-agent.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-buffer-is-detached.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fuid.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-difference.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.some.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-symmetric-difference.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Finspect-source.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-get-own-property-symbols.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdescriptors.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-set-record.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-is-subset-of.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.is-disjoint-from.v2.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdocument-create-element.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array.push.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-null-or-undefined.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-union.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-array-iterator-method.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fenvironment.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fordinary-to-primitive.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-array.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-helpers.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-is-disjoint-from.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdetach-transferable.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fsymbol-constructor-detection.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-set-length.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fiterator-helper-without-closing-on-early-error.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fglobal-this.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.url-search-params.delete.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.promise.with-resolvers.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fcreate-property.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-callable.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-define-property.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-method-accept-set-like.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.symmetric-difference.v2.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fown-keys.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-buffer-not-detached.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-size.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-indexed-object.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-absolute-index.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-buffer-transfer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fshared.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.url.parse.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.is-subset-of.v2.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fie8-dom-define.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-method.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fnew-promise-capability.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffunction-bind-context.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fshared-key.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fenvironment-is-node.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Flength-of-array-like.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fiterators.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdefine-built-ins.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fcall-with-safe-iteration-closing.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fis-pure.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fexport.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array-buffer.detached.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fcreate-non-enumerable-property.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffunction-uncurry-this-accessor.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-define-properties.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ftry-to-string.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdoes-not-exceed-safe-integer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdefine-built-in.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fclassof.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-property-key.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fcreate-property-descriptor.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fuse-symbol-as-uid.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Findexed-object.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fa-set.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-get-own-property-descriptor.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-buffer-byte-length.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Furl-constructor-detection.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffunction-uncurry-this-clause.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.url-search-params.has.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.for-each.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fshared-store.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.difference.v2.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fiterators-core.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-index.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fcopy-constructor-properties.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Frequire-object-coercible.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-built-in.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-buffer-basic-detection.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array-buffer.transfer-to-fixed-length.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.set.intersection.v2.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-length.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.array-buffer.transfer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fes.iterator.constructor.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fwell-known-symbol.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fparse-json-string.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fesnext.json.parse.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-iterate.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-get-own-property-names.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-is-superset-of.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fan-object.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fweak-map-basic-detection.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fv8-prototype-define-bug.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Fmodules\u002Fweb.url-search-params.size.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fenum-bug-keys.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-intersection.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fobject-property-is-enumerable.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fto-object.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffails.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fset-clone.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fhas-own-property.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fa-callable.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fget-built-in-node-module.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fdefine-global-property.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fiterator-create-proxy.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffunction-uncurry-this.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fenvironment-v8-version.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Fiterator-close.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Ffunction-call.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcore-js\u002Finternals\u002Farray-includes.js\",\"webpack:\u002F\u002Fpdf.js\u002Fwebpack\u002Fbootstrap\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdfjs.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fui_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fapp_options.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_link_service.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fevent_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fexternal_services.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpreferences.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Ftypes.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Fresolver.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Fscope.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Fbuiltins.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Fmemoizer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Fbundle.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Fresource.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002F@fluent\u002Fbundle\u002Fesm\u002Findex.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002F@fluent\u002Fdom\u002Fesm\u002Foverlay.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcached-iterable\u002Fsrc\u002Fcached_iterable.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcached-iterable\u002Fsrc\u002Fcached_sync_iterable.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcached-iterable\u002Fsrc\u002Fcached_async_iterable.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002Fcached-iterable\u002Fsrc\u002Findex.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002F@fluent\u002Fdom\u002Fesm\u002Flocalization.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002F@fluent\u002Fdom\u002Fesm\u002Fdom_localization.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fnode_modules\u002F@fluent\u002Fdom\u002Fesm\u002Findex.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fl10n.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fgenericl10n.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fgeneric_scripting.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fgeneric_signature_storage.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fgenericcom.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fnew_alt_text_manager.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Falt_text_manager.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fannotation_editor_params.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fcaret_browsing.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fdownload_manager.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Feditor_undo_bar.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Foverlay_manager.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpassword_prompt.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fbase_tree_viewer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_attachment_viewer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fgrab_to_pan.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_cursor_tools.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_document_properties.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_find_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_find_controller.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_find_bar.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_history.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_layer_viewer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_outline_viewer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_presentation_mode.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fxfa_layer_builder.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fprint_utils.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_print_service.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_rendering_queue.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_scripting_manager.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_sidebar.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_thumbnail_view.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_thumbnail_viewer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fannotation_editor_layer_builder.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fannotation_layer_builder.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fautolinker.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fbase_pdf_page_view.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fdraw_layer_builder.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_page_detail_view.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fstruct_tree_layer_builder.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Ftext_accessibility.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Ftext_highlighter.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Ftext_layer_builder.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_page_view.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fpdf_viewer.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fsecondary_toolbar.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fsignature_manager.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Ftoolbar.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fview_history.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fapp.js\",\"webpack:\u002F\u002Fpdf.js\u002F.\u002Fweb\u002Fviewer.js\"],\"sourcesContent\":[\"'use strict';\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\n\\nmodule.exports = function (it) {\\n  return typeof it == 'object' ? it !== null : isCallable(it);\\n};\\n\",\"'use strict';\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar tryToString = require('..\u002Finternals\u002Ftry-to-string');\\nvar getIteratorMethod = require('..\u002Finternals\u002Fget-iterator-method');\\n\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (argument, usingIterator) {\\n  var iteratorMethod = arguments.length \u003C 2 ? getIteratorMethod(argument) : usingIterator;\\n  if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\\n  throw new $TypeError(tryToString(argument) + ' is not iterable');\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar CONFIGURABLE_FUNCTION_NAME = require('..\u002Finternals\u002Ffunction-name').CONFIGURABLE;\\nvar inspectSource = require('..\u002Finternals\u002Finspect-source');\\nvar InternalStateModule = require('..\u002Finternals\u002Finternal-state');\\n\\nvar enforceInternalState = InternalStateModule.enforce;\\nvar getInternalState = InternalStateModule.get;\\nvar $String = String;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\\nvar defineProperty = Object.defineProperty;\\nvar stringSlice = uncurryThis(''.slice);\\nvar replace = uncurryThis(''.replace);\\nvar join = uncurryThis([].join);\\n\\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\\n  return defineProperty(function () { \u002F* empty *\u002F }, 'length', { value: 8 }).length !== 8;\\n});\\n\\nvar TEMPLATE = String(String).split('String');\\n\\nvar makeBuiltIn = module.exports = function (value, name, options) {\\n  if (stringSlice($String(name), 0, 7) === 'Symbol(') {\\n    name = '[' + replace($String(name), \u002F^Symbol\\\\(([^)]*)\\\\).*$\u002F, '$1') + ']';\\n  }\\n  if (options && options.getter) name = 'get ' + name;\\n  if (options && options.setter) name = 'set ' + name;\\n  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\\n    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\\n    else value.name = name;\\n  }\\n  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\\n    defineProperty(value, 'length', { value: options.arity });\\n  }\\n  try {\\n    if (options && hasOwn(options, 'constructor') && options.constructor) {\\n      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\\n    \u002F\u002F in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\\n    } else if (value.prototype) value.prototype = undefined;\\n  } catch (error) { \u002F* empty *\u002F }\\n  var state = enforceInternalState(value);\\n  if (!hasOwn(state, 'source')) {\\n    state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\\n  } return value;\\n};\\n\\n\u002F\u002F add fake Function#toString for correct work wrapped methods \u002F constructors with methods like LoDash isNative\\n\u002F\u002F eslint-disable-next-line no-extend-native -- required\\nFunction.prototype.toString = makeBuiltIn(function toString() {\\n  return isCallable(this) && getInternalState(this).source || inspectSource(this);\\n}, 'toString');\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\n\\nvar FunctionPrototype = Function.prototype;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\\n\\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\\n\u002F\u002F additional protection from minified \u002F mangled \u002F dropped function names\\nvar PROPER = EXISTS && (function something() { \u002F* empty *\u002F }).name === 'something';\\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\\n\\nmodule.exports = {\\n  EXISTS: EXISTS,\\n  PROPER: PROPER,\\n  CONFIGURABLE: CONFIGURABLE\\n};\\n\",\"'use strict';\\nvar getBuiltIn = require('..\u002Finternals\u002Fget-built-in');\\n\\nmodule.exports = getBuiltIn('document', 'documentElement');\\n\",\"'use strict';\\nmodule.exports = {};\\n\",\"'use strict';\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\n\\nmodule.exports = function (record, fn, ITERATOR_INSTEAD_OF_RECORD) {\\n  var iterator = ITERATOR_INSTEAD_OF_RECORD ? record : record.iterator;\\n  var next = record.next;\\n  var step, result;\\n  while (!(step = call(next, iterator)).done) {\\n    result = fn(step.value);\\n    if (result !== undefined) return result;\\n  }\\n};\\n\",\"'use strict';\\nvar fails = require('..\u002Finternals\u002Ffails');\\n\\nmodule.exports = !fails(function () {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind -- safe\\n  var test = (function () { \u002F* empty *\u002F }).bind();\\n  \u002F\u002F eslint-disable-next-line no-prototype-builtins -- safe\\n  return typeof test != 'function' || test.hasOwnProperty('prototype');\\n});\\n\",\"'use strict';\\nvar classof = require('..\u002Finternals\u002Fclassof');\\n\\nvar $String = String;\\n\\nmodule.exports = function (argument) {\\n  if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\\n  return $String(argument);\\n};\\n\",\"'use strict';\\nvar isPrototypeOf = require('..\u002Finternals\u002Fobject-is-prototype-of');\\n\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (it, Prototype) {\\n  if (isPrototypeOf(Prototype, it)) return it;\\n  throw new $TypeError('Incorrect invocation');\\n};\\n\",\"'use strict';\\nvar ceil = Math.ceil;\\nvar floor = Math.floor;\\n\\n\u002F\u002F `Math.trunc` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-math.trunc\\n\u002F\u002F eslint-disable-next-line es\u002Fno-math-trunc -- safe\\nmodule.exports = Math.trunc || function trunc(x) {\\n  var n = +x;\\n  return (n > 0 ? floor : ceil)(n);\\n};\\n\",\"'use strict';\\nvar getBuiltIn = require('..\u002Finternals\u002Fget-built-in');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar isPrototypeOf = require('..\u002Finternals\u002Fobject-is-prototype-of');\\nvar USE_SYMBOL_AS_UID = require('..\u002Finternals\u002Fuse-symbol-as-uid');\\n\\nvar $Object = Object;\\n\\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\\n  return typeof it == 'symbol';\\n} : function (it) {\\n  var $Symbol = getBuiltIn('Symbol');\\n  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\\n};\\n\",\"'use strict';\\nvar classof = require('..\u002Finternals\u002Fclassof');\\nvar getMethod = require('..\u002Finternals\u002Fget-method');\\nvar isNullOrUndefined = require('..\u002Finternals\u002Fis-null-or-undefined');\\nvar Iterators = require('..\u002Finternals\u002Fiterators');\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\n\\nmodule.exports = function (it) {\\n  if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\\n    || getMethod(it, '@@iterator')\\n    || Iterators[classof(it)];\\n};\\n\",\"'use strict';\\nvar internalObjectKeys = require('..\u002Finternals\u002Fobject-keys-internal');\\nvar enumBugKeys = require('..\u002Finternals\u002Fenum-bug-keys');\\n\\n\u002F\u002F `Object.keys` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.keys\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-keys -- safe\\nmodule.exports = Object.keys || function keys(O) {\\n  return internalObjectKeys(O, enumBugKeys);\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar iterate = require('..\u002Finternals\u002Fiterate');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar getIteratorDirect = require('..\u002Finternals\u002Fget-iterator-direct');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\nvar iteratorHelperWithoutClosingOnEarlyError = require('..\u002Finternals\u002Fiterator-helper-without-closing-on-early-error');\\n\\nvar everyWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('every', TypeError);\\n\\n\u002F\u002F `Iterator.prototype.every` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.every\\n$({ target: 'Iterator', proto: true, real: true, forced: everyWithoutClosingOnEarlyError }, {\\n  every: function every(predicate) {\\n    anObject(this);\\n    try {\\n      aCallable(predicate);\\n    } catch (error) {\\n      iteratorClose(this, 'throw', error);\\n    }\\n\\n    if (everyWithoutClosingOnEarlyError) return call(everyWithoutClosingOnEarlyError, this, predicate);\\n\\n    var record = getIteratorDirect(this);\\n    var counter = 0;\\n    return !iterate(record, function (value, stop) {\\n      if (!predicate(value, counter++)) return stop();\\n    }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\\n  }\\n});\\n\",\"'use strict';\\nvar NATIVE_WEAK_MAP = require('..\u002Finternals\u002Fweak-map-basic-detection');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\nvar createNonEnumerableProperty = require('..\u002Finternals\u002Fcreate-non-enumerable-property');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar shared = require('..\u002Finternals\u002Fshared-store');\\nvar sharedKey = require('..\u002Finternals\u002Fshared-key');\\nvar hiddenKeys = require('..\u002Finternals\u002Fhidden-keys');\\n\\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\\nvar TypeError = globalThis.TypeError;\\nvar WeakMap = globalThis.WeakMap;\\nvar set, get, has;\\n\\nvar enforce = function (it) {\\n  return has(it) ? get(it) : set(it, {});\\n};\\n\\nvar getterFor = function (TYPE) {\\n  return function (it) {\\n    var state;\\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\\n      throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\\n    } return state;\\n  };\\n};\\n\\nif (NATIVE_WEAK_MAP || shared.state) {\\n  var store = shared.state || (shared.state = new WeakMap());\\n  \u002F* eslint-disable no-self-assign -- prototype methods protection *\u002F\\n  store.get = store.get;\\n  store.has = store.has;\\n  store.set = store.set;\\n  \u002F* eslint-enable no-self-assign -- prototype methods protection *\u002F\\n  set = function (it, metadata) {\\n    if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\\n    metadata.facade = it;\\n    store.set(it, metadata);\\n    return metadata;\\n  };\\n  get = function (it) {\\n    return store.get(it) || {};\\n  };\\n  has = function (it) {\\n    return store.has(it);\\n  };\\n} else {\\n  var STATE = sharedKey('state');\\n  hiddenKeys[STATE] = true;\\n  set = function (it, metadata) {\\n    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\\n    metadata.facade = it;\\n    createNonEnumerableProperty(it, STATE, metadata);\\n    return metadata;\\n  };\\n  get = function (it) {\\n    return hasOwn(it, STATE) ? it[STATE] : {};\\n  };\\n  has = function (it) {\\n    return hasOwn(it, STATE);\\n  };\\n}\\n\\nmodule.exports = {\\n  set: set,\\n  get: get,\\n  has: has,\\n  enforce: enforce,\\n  getterFor: getterFor\\n};\\n\",\"'use strict';\\nvar trunc = require('..\u002Finternals\u002Fmath-trunc');\\n\\n\u002F\u002F `ToIntegerOrInfinity` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-tointegerorinfinity\\nmodule.exports = function (argument) {\\n  var number = +argument;\\n  \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\\n  return number !== number || number === 0 ? 0 : trunc(number);\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar V8 = require('..\u002Finternals\u002Fenvironment-v8-version');\\nvar ENVIRONMENT = require('..\u002Finternals\u002Fenvironment');\\n\\nvar structuredClone = globalThis.structuredClone;\\n\\nmodule.exports = !!structuredClone && !fails(function () {\\n  \u002F\u002F prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation\\n  \u002F\u002F https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F679\\n  if ((ENVIRONMENT === 'DENO' && V8 > 92) || (ENVIRONMENT === 'NODE' && V8 > 94) || (ENVIRONMENT === 'BROWSER' && V8 > 97)) return false;\\n  var buffer = new ArrayBuffer(8);\\n  var clone = structuredClone(buffer, { transfer: [buffer] });\\n  return buffer.byteLength !== 0 || clone.byteLength !== 8;\\n});\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\n\\nmodule.exports = uncurryThis({}.isPrototypeOf);\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar union = require('..\u002Finternals\u002Fset-union');\\nvar setMethodAcceptSetLike = require('..\u002Finternals\u002Fset-method-accept-set-like');\\n\\n\u002F\u002F `Set.prototype.union` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.union\\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('union') }, {\\n  union: union\\n});\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar getIteratorDirect = require('..\u002Finternals\u002Fget-iterator-direct');\\nvar createIteratorProxy = require('..\u002Finternals\u002Fiterator-create-proxy');\\nvar callWithSafeIterationClosing = require('..\u002Finternals\u002Fcall-with-safe-iteration-closing');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\nvar iteratorHelperWithoutClosingOnEarlyError = require('..\u002Finternals\u002Fiterator-helper-without-closing-on-early-error');\\nvar IS_PURE = require('..\u002Finternals\u002Fis-pure');\\n\\nvar mapWithoutClosingOnEarlyError = !IS_PURE && iteratorHelperWithoutClosingOnEarlyError('map', TypeError);\\n\\nvar IteratorProxy = createIteratorProxy(function () {\\n  var iterator = this.iterator;\\n  var result = anObject(call(this.next, iterator));\\n  var done = this.done = !!result.done;\\n  if (!done) return callWithSafeIterationClosing(iterator, this.mapper, [result.value, this.counter++], true);\\n});\\n\\n\u002F\u002F `Iterator.prototype.map` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.map\\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE || mapWithoutClosingOnEarlyError }, {\\n  map: function map(mapper) {\\n    anObject(this);\\n    try {\\n      aCallable(mapper);\\n    } catch (error) {\\n      iteratorClose(this, 'throw', error);\\n    }\\n\\n    if (mapWithoutClosingOnEarlyError) return call(mapWithoutClosingOnEarlyError, this, mapper);\\n\\n    return new IteratorProxy(getIteratorDirect(this), {\\n      mapper: mapper\\n    });\\n  }\\n});\\n\",\"'use strict';\\n\u002F\u002F `GetIteratorDirect(obj)` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-iterator-helpers\u002F#sec-getiteratordirect\\nmodule.exports = function (obj) {\\n  return {\\n    iterator: obj,\\n    next: obj.next,\\n    done: false\\n  };\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar toIndexedObject = require('..\u002Finternals\u002Fto-indexed-object');\\nvar indexOf = require('..\u002Finternals\u002Farray-includes').indexOf;\\nvar hiddenKeys = require('..\u002Finternals\u002Fhidden-keys');\\n\\nvar push = uncurryThis([].push);\\n\\nmodule.exports = function (object, names) {\\n  var O = toIndexedObject(object);\\n  var i = 0;\\n  var result = [];\\n  var key;\\n  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\\n  \u002F\u002F Don't enum bug & hidden keys\\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\\n    ~indexOf(result, key) || push(result, key);\\n  }\\n  return result;\\n};\\n\",\"'use strict';\\nvar makeBuiltIn = require('..\u002Finternals\u002Fmake-built-in');\\nvar defineProperty = require('..\u002Finternals\u002Fobject-define-property');\\n\\nmodule.exports = function (target, name, descriptor) {\\n  if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\\n  if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\\n  return defineProperty.f(target, name, descriptor);\\n};\\n\",\"'use strict';\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\n\\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\\nvar test = {};\\n\\ntest[TO_STRING_TAG] = 'z';\\n\\nmodule.exports = String(test) === '[object z]';\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\n\\nvar toString = uncurryThis({}.toString);\\nvar stringSlice = uncurryThis(''.slice);\\n\\nmodule.exports = function (it) {\\n  return stringSlice(toString(it), 8, -1);\\n};\\n\",\"'use strict';\\nvar fails = require('..\u002Finternals\u002Ffails');\\n\\nmodule.exports = !fails(function () {\\n  function F() { \u002F* empty *\u002F }\\n  F.prototype.constructor = null;\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-object-getprototypeof -- required for testing\\n  return Object.getPrototypeOf(new F()) !== F.prototype;\\n});\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar getBuiltIn = require('..\u002Finternals\u002Fget-built-in');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar validateArgumentsLength = require('..\u002Finternals\u002Fvalidate-arguments-length');\\nvar toString = require('..\u002Finternals\u002Fto-string');\\nvar USE_NATIVE_URL = require('..\u002Finternals\u002Furl-constructor-detection');\\n\\nvar URL = getBuiltIn('URL');\\n\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Fnodejs\u002Fnode\u002Fissues\u002F47505\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Fdenoland\u002Fdeno\u002Fissues\u002F18893\\nvar THROWS_WITHOUT_ARGUMENTS = USE_NATIVE_URL && fails(function () {\\n  URL.canParse();\\n});\\n\\n\u002F\u002F Bun ~ 1.0.30 bug\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Foven-sh\u002Fbun\u002Fissues\u002F9250\\nvar WRONG_ARITY = fails(function () {\\n  return URL.canParse.length !== 1;\\n});\\n\\n\u002F\u002F `URL.canParse` method\\n\u002F\u002F https:\u002F\u002Furl.spec.whatwg.org\u002F#dom-url-canparse\\n$({ target: 'URL', stat: true, forced: !THROWS_WITHOUT_ARGUMENTS || WRONG_ARITY }, {\\n  canParse: function canParse(url) {\\n    var length = validateArgumentsLength(arguments.length, 1);\\n    var urlString = toString(url);\\n    var base = length \u003C 2 || arguments[1] === undefined ? undefined : toString(arguments[1]);\\n    try {\\n      return !!new URL(urlString, base);\\n    } catch (error) {\\n      return false;\\n    }\\n  }\\n});\\n\",\"'use strict';\\n\u002F* global ActiveXObject -- old IE, WSH *\u002F\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar definePropertiesModule = require('..\u002Finternals\u002Fobject-define-properties');\\nvar enumBugKeys = require('..\u002Finternals\u002Fenum-bug-keys');\\nvar hiddenKeys = require('..\u002Finternals\u002Fhidden-keys');\\nvar html = require('..\u002Finternals\u002Fhtml');\\nvar documentCreateElement = require('..\u002Finternals\u002Fdocument-create-element');\\nvar sharedKey = require('..\u002Finternals\u002Fshared-key');\\n\\nvar GT = '>';\\nvar LT = '\u003C';\\nvar PROTOTYPE = 'prototype';\\nvar SCRIPT = 'script';\\nvar IE_PROTO = sharedKey('IE_PROTO');\\n\\nvar EmptyConstructor = function () { \u002F* empty *\u002F };\\n\\nvar scriptTag = function (content) {\\n  return LT + SCRIPT + GT + content + LT + '\u002F' + SCRIPT + GT;\\n};\\n\\n\u002F\u002F Create object with fake `null` prototype: use ActiveX Object with cleared prototype\\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\\n  activeXDocument.write(scriptTag(''));\\n  activeXDocument.close();\\n  var temp = activeXDocument.parentWindow.Object;\\n  \u002F\u002F eslint-disable-next-line no-useless-assignment -- avoid memory leak\\n  activeXDocument = null;\\n  return temp;\\n};\\n\\n\u002F\u002F Create object with fake `null` prototype: use iframe Object with cleared prototype\\nvar NullProtoObjectViaIFrame = function () {\\n  \u002F\u002F Thrash, waste and sodomy: IE GC bug\\n  var iframe = documentCreateElement('iframe');\\n  var JS = 'java' + SCRIPT + ':';\\n  var iframeDocument;\\n  iframe.style.display = 'none';\\n  html.appendChild(iframe);\\n  \u002F\u002F https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F475\\n  iframe.src = String(JS);\\n  iframeDocument = iframe.contentWindow.document;\\n  iframeDocument.open();\\n  iframeDocument.write(scriptTag('document.F=Object'));\\n  iframeDocument.close();\\n  return iframeDocument.F;\\n};\\n\\n\u002F\u002F Check for document.domain and active x support\\n\u002F\u002F No need to use active x approach when document.domain is not set\\n\u002F\u002F see https:\u002F\u002Fgithub.com\u002Fes-shims\u002Fes5-shim\u002Fissues\u002F150\\n\u002F\u002F variation of https:\u002F\u002Fgithub.com\u002Fkitcambridge\u002Fes5-shim\u002Fcommit\u002F4f738ac066346\\n\u002F\u002F avoid IE GC bug\\nvar activeXDocument;\\nvar NullProtoObject = function () {\\n  try {\\n    activeXDocument = new ActiveXObject('htmlfile');\\n  } catch (error) { \u002F* ignore *\u002F }\\n  NullProtoObject = typeof document != 'undefined'\\n    ? document.domain && activeXDocument\\n      ? NullProtoObjectViaActiveX(activeXDocument) \u002F\u002F old IE\\n      : NullProtoObjectViaIFrame()\\n    : NullProtoObjectViaActiveX(activeXDocument); \u002F\u002F WSH\\n  var length = enumBugKeys.length;\\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\\n  return NullProtoObject();\\n};\\n\\nhiddenKeys[IE_PROTO] = true;\\n\\n\u002F\u002F `Object.create` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.create\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-create -- safe\\nmodule.exports = Object.create || function create(O, Properties) {\\n  var result;\\n  if (O !== null) {\\n    EmptyConstructor[PROTOTYPE] = anObject(O);\\n    result = new EmptyConstructor();\\n    EmptyConstructor[PROTOTYPE] = null;\\n    \u002F\u002F add \\\"__proto__\\\" for Object.getPrototypeOf polyfill\\n    result[IE_PROTO] = O;\\n  } else result = NullProtoObject();\\n  return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar isSupersetOf = require('..\u002Finternals\u002Fset-is-superset-of');\\nvar setMethodAcceptSetLike = require('..\u002Finternals\u002Fset-method-accept-set-like');\\n\\nvar INCORRECT = !setMethodAcceptSetLike('isSupersetOf', function (result) {\\n  return !result;\\n});\\n\\n\u002F\u002F `Set.prototype.isSupersetOf` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.issupersetof\\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\\n  isSupersetOf: isSupersetOf\\n});\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar getIteratorDirect = require('..\u002Finternals\u002Fget-iterator-direct');\\nvar createIteratorProxy = require('..\u002Finternals\u002Fiterator-create-proxy');\\nvar callWithSafeIterationClosing = require('..\u002Finternals\u002Fcall-with-safe-iteration-closing');\\nvar IS_PURE = require('..\u002Finternals\u002Fis-pure');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\nvar iteratorHelperWithoutClosingOnEarlyError = require('..\u002Finternals\u002Fiterator-helper-without-closing-on-early-error');\\n\\nvar filterWithoutClosingOnEarlyError = !IS_PURE && iteratorHelperWithoutClosingOnEarlyError('filter', TypeError);\\n\\nvar IteratorProxy = createIteratorProxy(function () {\\n  var iterator = this.iterator;\\n  var predicate = this.predicate;\\n  var next = this.next;\\n  var result, done, value;\\n  while (true) {\\n    result = anObject(call(next, iterator));\\n    done = this.done = !!result.done;\\n    if (done) return;\\n    value = result.value;\\n    if (callWithSafeIterationClosing(iterator, predicate, [value, this.counter++], true)) return value;\\n  }\\n});\\n\\n\u002F\u002F `Iterator.prototype.filter` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.filter\\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE || filterWithoutClosingOnEarlyError }, {\\n  filter: function filter(predicate) {\\n    anObject(this);\\n    try {\\n      aCallable(predicate);\\n    } catch (error) {\\n      iteratorClose(this, 'throw', error);\\n    }\\n\\n    if (filterWithoutClosingOnEarlyError) return call(filterWithoutClosingOnEarlyError, this, predicate);\\n\\n    return new IteratorProxy(getIteratorDirect(this), {\\n      predicate: predicate\\n    });\\n  }\\n});\\n\",\"'use strict';\\n\u002F\u002F `CreateIterResultObject` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-createiterresultobject\\nmodule.exports = function (value, done) {\\n  return { value: value, done: done };\\n};\\n\",\"'use strict';\\nvar bind = require('..\u002Finternals\u002Ffunction-bind-context');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar tryToString = require('..\u002Finternals\u002Ftry-to-string');\\nvar isArrayIteratorMethod = require('..\u002Finternals\u002Fis-array-iterator-method');\\nvar lengthOfArrayLike = require('..\u002Finternals\u002Flength-of-array-like');\\nvar isPrototypeOf = require('..\u002Finternals\u002Fobject-is-prototype-of');\\nvar getIterator = require('..\u002Finternals\u002Fget-iterator');\\nvar getIteratorMethod = require('..\u002Finternals\u002Fget-iterator-method');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\n\\nvar $TypeError = TypeError;\\n\\nvar Result = function (stopped, result) {\\n  this.stopped = stopped;\\n  this.result = result;\\n};\\n\\nvar ResultPrototype = Result.prototype;\\n\\nmodule.exports = function (iterable, unboundFunction, options) {\\n  var that = options && options.that;\\n  var AS_ENTRIES = !!(options && options.AS_ENTRIES);\\n  var IS_RECORD = !!(options && options.IS_RECORD);\\n  var IS_ITERATOR = !!(options && options.IS_ITERATOR);\\n  var INTERRUPTED = !!(options && options.INTERRUPTED);\\n  var fn = bind(unboundFunction, that);\\n  var iterator, iterFn, index, length, result, next, step;\\n\\n  var stop = function (condition) {\\n    if (iterator) iteratorClose(iterator, 'normal', condition);\\n    return new Result(true, condition);\\n  };\\n\\n  var callFn = function (value) {\\n    if (AS_ENTRIES) {\\n      anObject(value);\\n      return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\\n    } return INTERRUPTED ? fn(value, stop) : fn(value);\\n  };\\n\\n  if (IS_RECORD) {\\n    iterator = iterable.iterator;\\n  } else if (IS_ITERATOR) {\\n    iterator = iterable;\\n  } else {\\n    iterFn = getIteratorMethod(iterable);\\n    if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');\\n    \u002F\u002F optimisation for array iterators\\n    if (isArrayIteratorMethod(iterFn)) {\\n      for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\\n        result = callFn(iterable[index]);\\n        if (result && isPrototypeOf(ResultPrototype, result)) return result;\\n      } return new Result(false);\\n    }\\n    iterator = getIterator(iterable, iterFn);\\n  }\\n\\n  next = IS_RECORD ? iterable.next : iterator.next;\\n  while (!(step = call(next, iterator)).done) {\\n    try {\\n      result = callFn(step.value);\\n    } catch (error) {\\n      iteratorClose(iterator, 'throw', error);\\n    }\\n    if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\\n  } return new Result(false);\\n};\\n\",\"'use strict';\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\nvar isSymbol = require('..\u002Finternals\u002Fis-symbol');\\nvar getMethod = require('..\u002Finternals\u002Fget-method');\\nvar ordinaryToPrimitive = require('..\u002Finternals\u002Fordinary-to-primitive');\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\n\\nvar $TypeError = TypeError;\\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\\n\\n\u002F\u002F `ToPrimitive` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-toprimitive\\nmodule.exports = function (input, pref) {\\n  if (!isObject(input) || isSymbol(input)) return input;\\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\\n  var result;\\n  if (exoticToPrim) {\\n    if (pref === undefined) pref = 'default';\\n    result = call(exoticToPrim, input, pref);\\n    if (!isObject(result) || isSymbol(result)) return result;\\n    throw new $TypeError(\\\"Can't convert object to primitive value\\\");\\n  }\\n  if (pref === undefined) pref = 'number';\\n  return ordinaryToPrimitive(input, pref);\\n};\\n\",\"'use strict';\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar toObject = require('..\u002Finternals\u002Fto-object');\\nvar sharedKey = require('..\u002Finternals\u002Fshared-key');\\nvar CORRECT_PROTOTYPE_GETTER = require('..\u002Finternals\u002Fcorrect-prototype-getter');\\n\\nvar IE_PROTO = sharedKey('IE_PROTO');\\nvar $Object = Object;\\nvar ObjectPrototype = $Object.prototype;\\n\\n\u002F\u002F `Object.getPrototypeOf` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.getprototypeof\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getprototypeof -- safe\\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\\n  var object = toObject(O);\\n  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\\n  var constructor = object.constructor;\\n  if (isCallable(constructor) && object instanceof constructor) {\\n    return constructor.prototype;\\n  } return object instanceof $Object ? ObjectPrototype : null;\\n};\\n\",\"'use strict';\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\n\\nvar replacement = \u002F#|\\\\.prototype\\\\.\u002F;\\n\\nvar isForced = function (feature, detection) {\\n  var value = data[normalize(feature)];\\n  return value === POLYFILL ? true\\n    : value === NATIVE ? false\\n    : isCallable(detection) ? fails(detection)\\n    : !!detection;\\n};\\n\\nvar normalize = isForced.normalize = function (string) {\\n  return String(string).replace(replacement, '.').toLowerCase();\\n};\\n\\nvar data = isForced.data = {};\\nvar NATIVE = isForced.NATIVE = 'N';\\nvar POLYFILL = isForced.POLYFILL = 'P';\\n\\nmodule.exports = isForced;\\n\",\"'use strict';\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (passed, required) {\\n  if (passed \u003C required) throw new $TypeError('Not enough arguments');\\n  return passed;\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\n\\nvar navigator = globalThis.navigator;\\nvar userAgent = navigator && navigator.userAgent;\\n\\nmodule.exports = userAgent ? String(userAgent) : '';\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar NATIVE_ARRAY_BUFFER = require('..\u002Finternals\u002Farray-buffer-basic-detection');\\nvar arrayBufferByteLength = require('..\u002Finternals\u002Farray-buffer-byte-length');\\n\\nvar DataView = globalThis.DataView;\\n\\nmodule.exports = function (O) {\\n  if (!NATIVE_ARRAY_BUFFER || arrayBufferByteLength(O) !== 0) return false;\\n  try {\\n    \u002F\u002F eslint-disable-next-line no-new -- thrower\\n    new DataView(O);\\n    return false;\\n  } catch (error) {\\n    return true;\\n  }\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\n\\nvar id = 0;\\nvar postfix = Math.random();\\nvar toString = uncurryThis(1.0.toString);\\n\\nmodule.exports = function (key) {\\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\\n};\\n\",\"'use strict';\\nvar aSet = require('..\u002Finternals\u002Fa-set');\\nvar SetHelpers = require('..\u002Finternals\u002Fset-helpers');\\nvar clone = require('..\u002Finternals\u002Fset-clone');\\nvar size = require('..\u002Finternals\u002Fset-size');\\nvar getSetRecord = require('..\u002Finternals\u002Fget-set-record');\\nvar iterateSet = require('..\u002Finternals\u002Fset-iterate');\\nvar iterateSimple = require('..\u002Finternals\u002Fiterate-simple');\\n\\nvar has = SetHelpers.has;\\nvar remove = SetHelpers.remove;\\n\\n\u002F\u002F `Set.prototype.difference` method\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\\nmodule.exports = function difference(other) {\\n  var O = aSet(this);\\n  var otherRec = getSetRecord(other);\\n  var result = clone(O);\\n  if (size(O) \u003C= otherRec.size) iterateSet(O, function (e) {\\n    if (otherRec.includes(e)) remove(result, e);\\n  });\\n  else iterateSimple(otherRec.getIterator(), function (e) {\\n    if (has(O, e)) remove(result, e);\\n  });\\n  return result;\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar iterate = require('..\u002Finternals\u002Fiterate');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar getIteratorDirect = require('..\u002Finternals\u002Fget-iterator-direct');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\nvar iteratorHelperWithoutClosingOnEarlyError = require('..\u002Finternals\u002Fiterator-helper-without-closing-on-early-error');\\n\\nvar someWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('some', TypeError);\\n\\n\u002F\u002F `Iterator.prototype.some` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.some\\n$({ target: 'Iterator', proto: true, real: true, forced: someWithoutClosingOnEarlyError }, {\\n  some: function some(predicate) {\\n    anObject(this);\\n    try {\\n      aCallable(predicate);\\n    } catch (error) {\\n      iteratorClose(this, 'throw', error);\\n    }\\n\\n    if (someWithoutClosingOnEarlyError) return call(someWithoutClosingOnEarlyError, this, predicate);\\n\\n    var record = getIteratorDirect(this);\\n    var counter = 0;\\n    return iterate(record, function (value, stop) {\\n      if (predicate(value, counter++)) return stop();\\n    }, { IS_RECORD: true, INTERRUPTED: true }).stopped;\\n  }\\n});\\n\",\"'use strict';\\nvar aSet = require('..\u002Finternals\u002Fa-set');\\nvar SetHelpers = require('..\u002Finternals\u002Fset-helpers');\\nvar clone = require('..\u002Finternals\u002Fset-clone');\\nvar getSetRecord = require('..\u002Finternals\u002Fget-set-record');\\nvar iterateSimple = require('..\u002Finternals\u002Fiterate-simple');\\n\\nvar add = SetHelpers.add;\\nvar has = SetHelpers.has;\\nvar remove = SetHelpers.remove;\\n\\n\u002F\u002F `Set.prototype.symmetricDifference` method\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\\nmodule.exports = function symmetricDifference(other) {\\n  var O = aSet(this);\\n  var keysIter = getSetRecord(other).getIterator();\\n  var result = clone(O);\\n  iterateSimple(keysIter, function (e) {\\n    if (has(O, e)) remove(result, e);\\n    else add(result, e);\\n  });\\n  return result;\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar store = require('..\u002Finternals\u002Fshared-store');\\n\\nvar functionToString = uncurryThis(Function.toString);\\n\\n\u002F\u002F this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\\nif (!isCallable(store.inspectSource)) {\\n  store.inspectSource = function (it) {\\n    return functionToString(it);\\n  };\\n}\\n\\nmodule.exports = store.inspectSource;\\n\",\"'use strict';\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertysymbols -- safe\\nexports.f = Object.getOwnPropertySymbols;\\n\",\"'use strict';\\nvar fails = require('..\u002Finternals\u002Ffails');\\n\\n\u002F\u002F Detect IE8's incomplete defineProperty implementation\\nmodule.exports = !fails(function () {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- required for testing\\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\\n});\\n\",\"'use strict';\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar toIntegerOrInfinity = require('..\u002Finternals\u002Fto-integer-or-infinity');\\nvar getIteratorDirect = require('..\u002Finternals\u002Fget-iterator-direct');\\n\\nvar INVALID_SIZE = 'Invalid size';\\nvar $RangeError = RangeError;\\nvar $TypeError = TypeError;\\nvar max = Math.max;\\n\\nvar SetRecord = function (set, intSize) {\\n  this.set = set;\\n  this.size = max(intSize, 0);\\n  this.has = aCallable(set.has);\\n  this.keys = aCallable(set.keys);\\n};\\n\\nSetRecord.prototype = {\\n  getIterator: function () {\\n    return getIteratorDirect(anObject(call(this.keys, this.set)));\\n  },\\n  includes: function (it) {\\n    return call(this.has, this.set, it);\\n  }\\n};\\n\\n\u002F\u002F `GetSetRecord` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-set-methods\u002F#sec-getsetrecord\\nmodule.exports = function (obj) {\\n  anObject(obj);\\n  var numSize = +obj.size;\\n  \u002F\u002F NOTE: If size is undefined, then numSize will be NaN\\n  \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\\n  if (numSize !== numSize) throw new $TypeError(INVALID_SIZE);\\n  var intSize = toIntegerOrInfinity(numSize);\\n  if (intSize \u003C 0) throw new $RangeError(INVALID_SIZE);\\n  return new SetRecord(obj, intSize);\\n};\\n\",\"'use strict';\\nvar aSet = require('..\u002Finternals\u002Fa-set');\\nvar size = require('..\u002Finternals\u002Fset-size');\\nvar iterate = require('..\u002Finternals\u002Fset-iterate');\\nvar getSetRecord = require('..\u002Finternals\u002Fget-set-record');\\n\\n\u002F\u002F `Set.prototype.isSubsetOf` method\\n\u002F\u002F https:\u002F\u002Ftc39.github.io\u002Fproposal-set-methods\u002F#Set.prototype.isSubsetOf\\nmodule.exports = function isSubsetOf(other) {\\n  var O = aSet(this);\\n  var otherRec = getSetRecord(other);\\n  if (size(O) > otherRec.size) return false;\\n  return iterate(O, function (e) {\\n    if (!otherRec.includes(e)) return false;\\n  }, true) !== false;\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar isDisjointFrom = require('..\u002Finternals\u002Fset-is-disjoint-from');\\nvar setMethodAcceptSetLike = require('..\u002Finternals\u002Fset-method-accept-set-like');\\n\\nvar INCORRECT = !setMethodAcceptSetLike('isDisjointFrom', function (result) {\\n  return !result;\\n});\\n\\n\u002F\u002F `Set.prototype.isDisjointFrom` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.isdisjointfrom\\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\\n  isDisjointFrom: isDisjointFrom\\n});\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\n\\nvar document = globalThis.document;\\n\u002F\u002F typeof document.createElement is 'object' in old IE\\nvar EXISTS = isObject(document) && isObject(document.createElement);\\n\\nmodule.exports = function (it) {\\n  return EXISTS ? document.createElement(it) : {};\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar toObject = require('..\u002Finternals\u002Fto-object');\\nvar lengthOfArrayLike = require('..\u002Finternals\u002Flength-of-array-like');\\nvar setArrayLength = require('..\u002Finternals\u002Farray-set-length');\\nvar doesNotExceedSafeInteger = require('..\u002Finternals\u002Fdoes-not-exceed-safe-integer');\\nvar fails = require('..\u002Finternals\u002Ffails');\\n\\nvar INCORRECT_TO_LENGTH = fails(function () {\\n  return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\\n});\\n\\n\u002F\u002F V8 \u003C= 121 and Safari \u003C= 15.4; FF \u003C 23 throws InternalError\\n\u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=12681\\nvar properErrorOnNonWritableLength = function () {\\n  try {\\n    \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\\n    Object.defineProperty([], 'length', { writable: false }).push();\\n  } catch (error) {\\n    return error instanceof TypeError;\\n  }\\n};\\n\\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\\n\\n\u002F\u002F `Array.prototype.push` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-array.prototype.push\\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\\n  \u002F\u002F eslint-disable-next-line no-unused-vars -- required for `.length`\\n  push: function push(item) {\\n    var O = toObject(this);\\n    var len = lengthOfArrayLike(O);\\n    var argCount = arguments.length;\\n    doesNotExceedSafeInteger(len + argCount);\\n    for (var i = 0; i \u003C argCount; i++) {\\n      O[len] = arguments[i];\\n      len++;\\n    }\\n    setArrayLength(O, len);\\n    return len;\\n  }\\n});\\n\",\"'use strict';\\n\u002F\u002F we can't use just `it == null` since of `document.all` special case\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-IsHTMLDDA-internal-slot-aec\\nmodule.exports = function (it) {\\n  return it === null || it === undefined;\\n};\\n\",\"'use strict';\\nvar aSet = require('..\u002Finternals\u002Fa-set');\\nvar add = require('..\u002Finternals\u002Fset-helpers').add;\\nvar clone = require('..\u002Finternals\u002Fset-clone');\\nvar getSetRecord = require('..\u002Finternals\u002Fget-set-record');\\nvar iterateSimple = require('..\u002Finternals\u002Fiterate-simple');\\n\\n\u002F\u002F `Set.prototype.union` method\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\\nmodule.exports = function union(other) {\\n  var O = aSet(this);\\n  var keysIter = getSetRecord(other).getIterator();\\n  var result = clone(O);\\n  iterateSimple(keysIter, function (it) {\\n    add(result, it);\\n  });\\n  return result;\\n};\\n\",\"'use strict';\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\nvar Iterators = require('..\u002Finternals\u002Fiterators');\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\nvar ArrayPrototype = Array.prototype;\\n\\n\u002F\u002F check on default Array iterator\\nmodule.exports = function (it) {\\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\\n};\\n\",\"'use strict';\\n\u002F* global Bun, Deno -- detection *\u002F\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar userAgent = require('..\u002Finternals\u002Fenvironment-user-agent');\\nvar classof = require('..\u002Finternals\u002Fclassof-raw');\\n\\nvar userAgentStartsWith = function (string) {\\n  return userAgent.slice(0, string.length) === string;\\n};\\n\\nmodule.exports = (function () {\\n  if (userAgentStartsWith('Bun\u002F')) return 'BUN';\\n  if (userAgentStartsWith('Cloudflare-Workers')) return 'CLOUDFLARE';\\n  if (userAgentStartsWith('Deno\u002F')) return 'DENO';\\n  if (userAgentStartsWith('Node.js\u002F')) return 'NODE';\\n  if (globalThis.Bun && typeof Bun.version == 'string') return 'BUN';\\n  if (globalThis.Deno && typeof Deno.version == 'object') return 'DENO';\\n  if (classof(globalThis.process) === 'process') return 'NODE';\\n  if (globalThis.window && globalThis.document) return 'BROWSER';\\n  return 'REST';\\n})();\\n\",\"'use strict';\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\n\\nvar $TypeError = TypeError;\\n\\n\u002F\u002F `OrdinaryToPrimitive` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-ordinarytoprimitive\\nmodule.exports = function (input, pref) {\\n  var fn, val;\\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\\n  throw new $TypeError(\\\"Can't convert object to primitive value\\\");\\n};\\n\",\"'use strict';\\nvar classof = require('..\u002Finternals\u002Fclassof-raw');\\n\\n\u002F\u002F `IsArray` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-isarray\\n\u002F\u002F eslint-disable-next-line es\u002Fno-array-isarray -- safe\\nmodule.exports = Array.isArray || function isArray(argument) {\\n  return classof(argument) === 'Array';\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\n\\n\u002F\u002F eslint-disable-next-line es\u002Fno-set -- safe\\nvar SetPrototype = Set.prototype;\\n\\nmodule.exports = {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-set -- safe\\n  Set: Set,\\n  add: uncurryThis(SetPrototype.add),\\n  has: uncurryThis(SetPrototype.has),\\n  remove: uncurryThis(SetPrototype['delete']),\\n  proto: SetPrototype\\n};\\n\",\"'use strict';\\nvar aSet = require('..\u002Finternals\u002Fa-set');\\nvar has = require('..\u002Finternals\u002Fset-helpers').has;\\nvar size = require('..\u002Finternals\u002Fset-size');\\nvar getSetRecord = require('..\u002Finternals\u002Fget-set-record');\\nvar iterateSet = require('..\u002Finternals\u002Fset-iterate');\\nvar iterateSimple = require('..\u002Finternals\u002Fiterate-simple');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\n\\n\u002F\u002F `Set.prototype.isDisjointFrom` method\\n\u002F\u002F https:\u002F\u002Ftc39.github.io\u002Fproposal-set-methods\u002F#Set.prototype.isDisjointFrom\\nmodule.exports = function isDisjointFrom(other) {\\n  var O = aSet(this);\\n  var otherRec = getSetRecord(other);\\n  if (size(O) \u003C= otherRec.size) return iterateSet(O, function (e) {\\n    if (otherRec.includes(e)) return false;\\n  }, true) !== false;\\n  var iterator = otherRec.getIterator();\\n  return iterateSimple(iterator, function (e) {\\n    if (has(O, e)) return iteratorClose(iterator, 'normal', false);\\n  }) !== false;\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar getBuiltInNodeModule = require('..\u002Finternals\u002Fget-built-in-node-module');\\nvar PROPER_STRUCTURED_CLONE_TRANSFER = require('..\u002Finternals\u002Fstructured-clone-proper-transfer');\\n\\nvar structuredClone = globalThis.structuredClone;\\nvar $ArrayBuffer = globalThis.ArrayBuffer;\\nvar $MessageChannel = globalThis.MessageChannel;\\nvar detach = false;\\nvar WorkerThreads, channel, buffer, $detach;\\n\\nif (PROPER_STRUCTURED_CLONE_TRANSFER) {\\n  detach = function (transferable) {\\n    structuredClone(transferable, { transfer: [transferable] });\\n  };\\n} else if ($ArrayBuffer) try {\\n  if (!$MessageChannel) {\\n    WorkerThreads = getBuiltInNodeModule('worker_threads');\\n    if (WorkerThreads) $MessageChannel = WorkerThreads.MessageChannel;\\n  }\\n\\n  if ($MessageChannel) {\\n    channel = new $MessageChannel();\\n    buffer = new $ArrayBuffer(2);\\n\\n    $detach = function (transferable) {\\n      channel.port1.postMessage(null, [transferable]);\\n    };\\n\\n    if (buffer.byteLength === 2) {\\n      $detach(buffer);\\n      if (buffer.byteLength === 0) detach = $detach;\\n    }\\n  }\\n} catch (error) { \u002F* empty *\u002F }\\n\\nmodule.exports = detach;\\n\",\"'use strict';\\n\u002F* eslint-disable es\u002Fno-symbol -- required for testing *\u002F\\nvar V8_VERSION = require('..\u002Finternals\u002Fenvironment-v8-version');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\n\\nvar $String = globalThis.String;\\n\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertysymbols -- required for testing\\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\\n  var symbol = Symbol('symbol detection');\\n  \u002F\u002F Chrome 38 Symbol has incorrect toString conversion\\n  \u002F\u002F `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\\n  \u002F\u002F nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\\n  \u002F\u002F of course, fail.\\n  return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\\n    \u002F\u002F Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\\n    !Symbol.sham && V8_VERSION && V8_VERSION \u003C 41;\\n});\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar isArray = require('..\u002Finternals\u002Fis-array');\\n\\nvar $TypeError = TypeError;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\n\\n\u002F\u002F Safari \u003C 13 does not throw an error in this case\\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\\n  \u002F\u002F makes no sense without proper strict mode support\\n  if (this !== undefined) return true;\\n  try {\\n    \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\\n    Object.defineProperty([], 'length', { writable: false }).length = 1;\\n  } catch (error) {\\n    return error instanceof TypeError;\\n  }\\n}();\\n\\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\\n  if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\\n    throw new $TypeError('Cannot set read only .length');\\n  } return O.length = length;\\n} : function (O, length) {\\n  return O.length = length;\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\n\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fecma262\u002Fpull\u002F3467\\nmodule.exports = function (METHOD_NAME, ExpectedError) {\\n  var Iterator = globalThis.Iterator;\\n  var IteratorPrototype = Iterator && Iterator.prototype;\\n  var method = IteratorPrototype && IteratorPrototype[METHOD_NAME];\\n\\n  var CLOSED = false;\\n\\n  if (method) try {\\n    method.call({\\n      next: function () { return { done: true }; },\\n      'return': function () { CLOSED = true; }\\n    }, -1);\\n  } catch (error) {\\n    \u002F\u002F https:\u002F\u002Fbugs.webkit.org\u002Fshow_bug.cgi?id=291195\\n    if (!(error instanceof ExpectedError)) CLOSED = false;\\n  }\\n\\n  if (!CLOSED) return method;\\n};\\n\",\"'use strict';\\nvar check = function (it) {\\n  return it && it.Math === Math && it;\\n};\\n\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F86#issuecomment-115759028\\nmodule.exports =\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-global-this -- safe\\n  check(typeof globalThis == 'object' && globalThis) ||\\n  check(typeof window == 'object' && window) ||\\n  \u002F\u002F eslint-disable-next-line no-restricted-globals -- safe\\n  check(typeof self == 'object' && self) ||\\n  check(typeof global == 'object' && global) ||\\n  check(typeof this == 'object' && this) ||\\n  \u002F\u002F eslint-disable-next-line no-new-func -- fallback\\n  (function () { return this; })() || Function('return this')();\\n\",\"'use strict';\\nvar defineBuiltIn = require('..\u002Finternals\u002Fdefine-built-in');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar toString = require('..\u002Finternals\u002Fto-string');\\nvar validateArgumentsLength = require('..\u002Finternals\u002Fvalidate-arguments-length');\\n\\nvar $URLSearchParams = URLSearchParams;\\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\\nvar append = uncurryThis(URLSearchParamsPrototype.append);\\nvar $delete = uncurryThis(URLSearchParamsPrototype['delete']);\\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\\nvar push = uncurryThis([].push);\\nvar params = new $URLSearchParams('a=1&a=2&b=3');\\n\\nparams['delete']('a', 1);\\n\u002F\u002F `undefined` case is a Chromium 117 bug\\n\u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=14222\\nparams['delete']('b', undefined);\\n\\nif (params + '' !== 'a=2') {\\n  defineBuiltIn(URLSearchParamsPrototype, 'delete', function (name \u002F* , value *\u002F) {\\n    var length = arguments.length;\\n    var $value = length \u003C 2 ? undefined : arguments[1];\\n    if (length && $value === undefined) return $delete(this, name);\\n    var entries = [];\\n    forEach(this, function (v, k) { \u002F\u002F also validates `this`\\n      push(entries, { key: k, value: v });\\n    });\\n    validateArgumentsLength(length, 1);\\n    var key = toString(name);\\n    var value = toString($value);\\n    var index = 0;\\n    var dindex = 0;\\n    var found = false;\\n    var entriesLength = entries.length;\\n    var entry;\\n    while (index \u003C entriesLength) {\\n      entry = entries[index++];\\n      if (found || entry.key === key) {\\n        found = true;\\n        $delete(this, entry.key);\\n      } else dindex++;\\n    }\\n    while (dindex \u003C entriesLength) {\\n      entry = entries[dindex++];\\n      if (!(entry.key === key && entry.value === value)) append(this, entry.key, entry.value);\\n    }\\n  }, { enumerable: true, unsafe: true });\\n}\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar newPromiseCapabilityModule = require('..\u002Finternals\u002Fnew-promise-capability');\\n\\n\u002F\u002F `Promise.withResolvers` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-promise.withResolvers\\n$({ target: 'Promise', stat: true }, {\\n  withResolvers: function withResolvers() {\\n    var promiseCapability = newPromiseCapabilityModule.f(this);\\n    return {\\n      promise: promiseCapability.promise,\\n      resolve: promiseCapability.resolve,\\n      reject: promiseCapability.reject\\n    };\\n  }\\n});\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar definePropertyModule = require('..\u002Finternals\u002Fobject-define-property');\\nvar createPropertyDescriptor = require('..\u002Finternals\u002Fcreate-property-descriptor');\\n\\nmodule.exports = function (object, key, value) {\\n  if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));\\n  else object[key] = value;\\n};\\n\",\"'use strict';\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-IsHTMLDDA-internal-slot\\nvar documentAll = typeof document == 'object' && document.all;\\n\\n\u002F\u002F `IsCallable` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iscallable\\n\u002F\u002F eslint-disable-next-line unicorn\u002Fno-typeof-undefined -- required for testing\\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\\n  return typeof argument == 'function' || argument === documentAll;\\n} : function (argument) {\\n  return typeof argument == 'function';\\n};\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar IE8_DOM_DEFINE = require('..\u002Finternals\u002Fie8-dom-define');\\nvar V8_PROTOTYPE_DEFINE_BUG = require('..\u002Finternals\u002Fv8-prototype-define-bug');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar toPropertyKey = require('..\u002Finternals\u002Fto-property-key');\\n\\nvar $TypeError = TypeError;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\\nvar $defineProperty = Object.defineProperty;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\nvar ENUMERABLE = 'enumerable';\\nvar CONFIGURABLE = 'configurable';\\nvar WRITABLE = 'writable';\\n\\n\u002F\u002F `Object.defineProperty` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.defineproperty\\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\\n  anObject(O);\\n  P = toPropertyKey(P);\\n  anObject(Attributes);\\n  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\\n    var current = $getOwnPropertyDescriptor(O, P);\\n    if (current && current[WRITABLE]) {\\n      O[P] = Attributes.value;\\n      Attributes = {\\n        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\\n        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\\n        writable: false\\n      };\\n    }\\n  } return $defineProperty(O, P, Attributes);\\n} : $defineProperty : function defineProperty(O, P, Attributes) {\\n  anObject(O);\\n  P = toPropertyKey(P);\\n  anObject(Attributes);\\n  if (IE8_DOM_DEFINE) try {\\n    return $defineProperty(O, P, Attributes);\\n  } catch (error) { \u002F* empty *\u002F }\\n  if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\\n  if ('value' in Attributes) O[P] = Attributes.value;\\n  return O;\\n};\\n\",\"'use strict';\\nvar getBuiltIn = require('..\u002Finternals\u002Fget-built-in');\\n\\nvar createSetLike = function (size) {\\n  return {\\n    size: size,\\n    has: function () {\\n      return false;\\n    },\\n    keys: function () {\\n      return {\\n        next: function () {\\n          return { done: true };\\n        }\\n      };\\n    }\\n  };\\n};\\n\\nvar createSetLikeWithInfinitySize = function (size) {\\n  return {\\n    size: size,\\n    has: function () {\\n      return true;\\n    },\\n    keys: function () {\\n      throw new Error('e');\\n    }\\n  };\\n};\\n\\nmodule.exports = function (name, callback) {\\n  var Set = getBuiltIn('Set');\\n  try {\\n    new Set()[name](createSetLike(0));\\n    try {\\n      \u002F\u002F late spec change, early WebKit ~ Safari 17 implementation does not pass it\\n      \u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\u002Fpull\u002F88\\n      \u002F\u002F also covered engines with\\n      \u002F\u002F https:\u002F\u002Fbugs.webkit.org\u002Fshow_bug.cgi?id=272679\\n      new Set()[name](createSetLike(-1));\\n      return false;\\n    } catch (error2) {\\n      if (!callback) return true;\\n      \u002F\u002F early V8 implementation bug\\n      \u002F\u002F https:\u002F\u002Fissues.chromium.org\u002Fissues\u002F351332634\\n      try {\\n        new Set()[name](createSetLikeWithInfinitySize(-Infinity));\\n        return false;\\n      } catch (error) {\\n        var set = new Set();\\n        set.add(1);\\n        set.add(2);\\n        return callback(set[name](createSetLikeWithInfinitySize(Infinity)));\\n      }\\n    }\\n  } catch (error) {\\n    return false;\\n  }\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar symmetricDifference = require('..\u002Finternals\u002Fset-symmetric-difference');\\nvar setMethodAcceptSetLike = require('..\u002Finternals\u002Fset-method-accept-set-like');\\n\\n\u002F\u002F `Set.prototype.symmetricDifference` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.symmetricdifference\\n$({ target: 'Set', proto: true, real: true, forced: !setMethodAcceptSetLike('symmetricDifference') }, {\\n  symmetricDifference: symmetricDifference\\n});\\n\",\"'use strict';\\nvar getBuiltIn = require('..\u002Finternals\u002Fget-built-in');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar getOwnPropertyNamesModule = require('..\u002Finternals\u002Fobject-get-own-property-names');\\nvar getOwnPropertySymbolsModule = require('..\u002Finternals\u002Fobject-get-own-property-symbols');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\n\\nvar concat = uncurryThis([].concat);\\n\\n\u002F\u002F all object keys, includes non-enumerable and symbols\\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\\n  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\\n};\\n\",\"'use strict';\\nvar isDetached = require('..\u002Finternals\u002Farray-buffer-is-detached');\\n\\nvar $TypeError = TypeError;\\n\\nmodule.exports = function (it) {\\n  if (isDetached(it)) throw new $TypeError('ArrayBuffer is detached');\\n  return it;\\n};\\n\",\"'use strict';\\nvar uncurryThisAccessor = require('..\u002Finternals\u002Ffunction-uncurry-this-accessor');\\nvar SetHelpers = require('..\u002Finternals\u002Fset-helpers');\\n\\nmodule.exports = uncurryThisAccessor(SetHelpers.proto, 'size', 'get') || function (set) {\\n  return set.size;\\n};\\n\",\"'use strict';\\n\u002F\u002F toObject with fallback for non-array-like ES3 strings\\nvar IndexedObject = require('..\u002Finternals\u002Findexed-object');\\nvar requireObjectCoercible = require('..\u002Finternals\u002Frequire-object-coercible');\\n\\nmodule.exports = function (it) {\\n  return IndexedObject(requireObjectCoercible(it));\\n};\\n\",\"'use strict';\\nvar toIntegerOrInfinity = require('..\u002Finternals\u002Fto-integer-or-infinity');\\n\\nvar max = Math.max;\\nvar min = Math.min;\\n\\n\u002F\u002F Helper for a popular repeating case of the spec:\\n\u002F\u002F Let integer be ? ToInteger(index).\\n\u002F\u002F If integer \u003C 0, let result be max((length + integer), 0); else let result be min(integer, length).\\nmodule.exports = function (index, length) {\\n  var integer = toIntegerOrInfinity(index);\\n  return integer \u003C 0 ? max(integer + length, 0) : min(integer, length);\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar uncurryThisAccessor = require('..\u002Finternals\u002Ffunction-uncurry-this-accessor');\\nvar toIndex = require('..\u002Finternals\u002Fto-index');\\nvar notDetached = require('..\u002Finternals\u002Farray-buffer-not-detached');\\nvar arrayBufferByteLength = require('..\u002Finternals\u002Farray-buffer-byte-length');\\nvar detachTransferable = require('..\u002Finternals\u002Fdetach-transferable');\\nvar PROPER_STRUCTURED_CLONE_TRANSFER = require('..\u002Finternals\u002Fstructured-clone-proper-transfer');\\n\\nvar structuredClone = globalThis.structuredClone;\\nvar ArrayBuffer = globalThis.ArrayBuffer;\\nvar DataView = globalThis.DataView;\\nvar min = Math.min;\\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\\nvar DataViewPrototype = DataView.prototype;\\nvar slice = uncurryThis(ArrayBufferPrototype.slice);\\nvar isResizable = uncurryThisAccessor(ArrayBufferPrototype, 'resizable', 'get');\\nvar maxByteLength = uncurryThisAccessor(ArrayBufferPrototype, 'maxByteLength', 'get');\\nvar getInt8 = uncurryThis(DataViewPrototype.getInt8);\\nvar setInt8 = uncurryThis(DataViewPrototype.setInt8);\\n\\nmodule.exports = (PROPER_STRUCTURED_CLONE_TRANSFER || detachTransferable) && function (arrayBuffer, newLength, preserveResizability) {\\n  var byteLength = arrayBufferByteLength(arrayBuffer);\\n  var newByteLength = newLength === undefined ? byteLength : toIndex(newLength);\\n  var fixedLength = !isResizable || !isResizable(arrayBuffer);\\n  var newBuffer;\\n  notDetached(arrayBuffer);\\n  if (PROPER_STRUCTURED_CLONE_TRANSFER) {\\n    arrayBuffer = structuredClone(arrayBuffer, { transfer: [arrayBuffer] });\\n    if (byteLength === newByteLength && (preserveResizability || fixedLength)) return arrayBuffer;\\n  }\\n  if (byteLength >= newByteLength && (!preserveResizability || fixedLength)) {\\n    newBuffer = slice(arrayBuffer, 0, newByteLength);\\n  } else {\\n    var options = preserveResizability && !fixedLength && maxByteLength ? { maxByteLength: maxByteLength(arrayBuffer) } : undefined;\\n    newBuffer = new ArrayBuffer(newByteLength, options);\\n    var a = new DataView(arrayBuffer);\\n    var b = new DataView(newBuffer);\\n    var copyLength = min(newByteLength, byteLength);\\n    for (var i = 0; i \u003C copyLength; i++) setInt8(b, i, getInt8(a, i));\\n  }\\n  if (!PROPER_STRUCTURED_CLONE_TRANSFER) detachTransferable(arrayBuffer);\\n  return newBuffer;\\n};\\n\",\"'use strict';\\nvar store = require('..\u002Finternals\u002Fshared-store');\\n\\nmodule.exports = function (key, value) {\\n  return store[key] || (store[key] = value || {});\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar getBuiltIn = require('..\u002Finternals\u002Fget-built-in');\\nvar validateArgumentsLength = require('..\u002Finternals\u002Fvalidate-arguments-length');\\nvar toString = require('..\u002Finternals\u002Fto-string');\\nvar USE_NATIVE_URL = require('..\u002Finternals\u002Furl-constructor-detection');\\n\\nvar URL = getBuiltIn('URL');\\n\\n\u002F\u002F `URL.parse` method\\n\u002F\u002F https:\u002F\u002Furl.spec.whatwg.org\u002F#dom-url-canparse\\n$({ target: 'URL', stat: true, forced: !USE_NATIVE_URL }, {\\n  parse: function parse(url) {\\n    var length = validateArgumentsLength(arguments.length, 1);\\n    var urlString = toString(url);\\n    var base = length \u003C 2 || arguments[1] === undefined ? undefined : toString(arguments[1]);\\n    try {\\n      return new URL(urlString, base);\\n    } catch (error) {\\n      return null;\\n    }\\n  }\\n});\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar isSubsetOf = require('..\u002Finternals\u002Fset-is-subset-of');\\nvar setMethodAcceptSetLike = require('..\u002Finternals\u002Fset-method-accept-set-like');\\n\\nvar INCORRECT = !setMethodAcceptSetLike('isSubsetOf', function (result) {\\n  return result;\\n});\\n\\n\u002F\u002F `Set.prototype.isSubsetOf` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.issubsetof\\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\\n  isSubsetOf: isSubsetOf\\n});\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar createElement = require('..\u002Finternals\u002Fdocument-create-element');\\n\\n\u002F\u002F Thanks to IE8 for its funny defineProperty\\nmodule.exports = !DESCRIPTORS && !fails(function () {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- required for testing\\n  return Object.defineProperty(createElement('div'), 'a', {\\n    get: function () { return 7; }\\n  }).a !== 7;\\n});\\n\",\"'use strict';\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar isNullOrUndefined = require('..\u002Finternals\u002Fis-null-or-undefined');\\n\\n\u002F\u002F `GetMethod` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-getmethod\\nmodule.exports = function (V, P) {\\n  var func = V[P];\\n  return isNullOrUndefined(func) ? undefined : aCallable(func);\\n};\\n\",\"'use strict';\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\n\\nvar $TypeError = TypeError;\\n\\nvar PromiseCapability = function (C) {\\n  var resolve, reject;\\n  this.promise = new C(function ($$resolve, $$reject) {\\n    if (resolve !== undefined || reject !== undefined) throw new $TypeError('Bad Promise constructor');\\n    resolve = $$resolve;\\n    reject = $$reject;\\n  });\\n  this.resolve = aCallable(resolve);\\n  this.reject = aCallable(reject);\\n};\\n\\n\u002F\u002F `NewPromiseCapability` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-newpromisecapability\\nmodule.exports.f = function (C) {\\n  return new PromiseCapability(C);\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this-clause');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar NATIVE_BIND = require('..\u002Finternals\u002Ffunction-bind-native');\\n\\nvar bind = uncurryThis(uncurryThis.bind);\\n\\n\u002F\u002F optional \u002F simple context binding\\nmodule.exports = function (fn, that) {\\n  aCallable(fn);\\n  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (\u002F* ...args *\u002F) {\\n    return fn.apply(that, arguments);\\n  };\\n};\\n\",\"'use strict';\\nvar shared = require('..\u002Finternals\u002Fshared');\\nvar uid = require('..\u002Finternals\u002Fuid');\\n\\nvar keys = shared('keys');\\n\\nmodule.exports = function (key) {\\n  return keys[key] || (keys[key] = uid(key));\\n};\\n\",\"'use strict';\\nvar ENVIRONMENT = require('..\u002Finternals\u002Fenvironment');\\n\\nmodule.exports = ENVIRONMENT === 'NODE';\\n\",\"'use strict';\\nvar toLength = require('..\u002Finternals\u002Fto-length');\\n\\n\u002F\u002F `LengthOfArrayLike` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-lengthofarraylike\\nmodule.exports = function (obj) {\\n  return toLength(obj.length);\\n};\\n\",\"'use strict';\\nmodule.exports = {};\\n\",\"'use strict';\\nvar defineBuiltIn = require('..\u002Finternals\u002Fdefine-built-in');\\n\\nmodule.exports = function (target, src, options) {\\n  for (var key in src) defineBuiltIn(target, key, src[key], options);\\n  return target;\\n};\\n\",\"'use strict';\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\n\\n\u002F\u002F call something on iterator step with safe closing on error\\nmodule.exports = function (iterator, fn, value, ENTRIES) {\\n  try {\\n    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\\n  } catch (error) {\\n    iteratorClose(iterator, 'throw', error);\\n  }\\n};\\n\",\"'use strict';\\nmodule.exports = false;\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar getOwnPropertyDescriptor = require('..\u002Finternals\u002Fobject-get-own-property-descriptor').f;\\nvar createNonEnumerableProperty = require('..\u002Finternals\u002Fcreate-non-enumerable-property');\\nvar defineBuiltIn = require('..\u002Finternals\u002Fdefine-built-in');\\nvar defineGlobalProperty = require('..\u002Finternals\u002Fdefine-global-property');\\nvar copyConstructorProperties = require('..\u002Finternals\u002Fcopy-constructor-properties');\\nvar isForced = require('..\u002Finternals\u002Fis-forced');\\n\\n\u002F*\\n  options.target         - name of the target object\\n  options.global         - target is the global object\\n  options.stat           - export as static methods of target\\n  options.proto          - export as prototype methods of target\\n  options.real           - real prototype method for the `pure` version\\n  options.forced         - export even if the native feature is available\\n  options.bind           - bind methods to the target, required for the `pure` version\\n  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version\\n  options.unsafe         - use the simple assignment of property instead of delete + defineProperty\\n  options.sham           - add a flag to not completely full polyfills\\n  options.enumerable     - export as enumerable property\\n  options.dontCallGetSet - prevent calling a getter on target\\n  options.name           - the .name of the function if it does not match the key\\n*\u002F\\nmodule.exports = function (options, source) {\\n  var TARGET = options.target;\\n  var GLOBAL = options.global;\\n  var STATIC = options.stat;\\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\\n  if (GLOBAL) {\\n    target = globalThis;\\n  } else if (STATIC) {\\n    target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\\n  } else {\\n    target = globalThis[TARGET] && globalThis[TARGET].prototype;\\n  }\\n  if (target) for (key in source) {\\n    sourceProperty = source[key];\\n    if (options.dontCallGetSet) {\\n      descriptor = getOwnPropertyDescriptor(target, key);\\n      targetProperty = descriptor && descriptor.value;\\n    } else targetProperty = target[key];\\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\\n    \u002F\u002F contained in target\\n    if (!FORCED && targetProperty !== undefined) {\\n      if (typeof sourceProperty == typeof targetProperty) continue;\\n      copyConstructorProperties(sourceProperty, targetProperty);\\n    }\\n    \u002F\u002F add a flag to not completely full polyfills\\n    if (options.sham || (targetProperty && targetProperty.sham)) {\\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\\n    }\\n    defineBuiltIn(target, key, sourceProperty, options);\\n  }\\n};\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar defineBuiltInAccessor = require('..\u002Finternals\u002Fdefine-built-in-accessor');\\nvar isDetached = require('..\u002Finternals\u002Farray-buffer-is-detached');\\n\\nvar ArrayBufferPrototype = ArrayBuffer.prototype;\\n\\n\u002F\u002F `ArrayBuffer.prototype.detached` getter\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-get-arraybuffer.prototype.detached\\nif (DESCRIPTORS && !('detached' in ArrayBufferPrototype)) {\\n  defineBuiltInAccessor(ArrayBufferPrototype, 'detached', {\\n    configurable: true,\\n    get: function detached() {\\n      return isDetached(this);\\n    }\\n  });\\n}\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar definePropertyModule = require('..\u002Finternals\u002Fobject-define-property');\\nvar createPropertyDescriptor = require('..\u002Finternals\u002Fcreate-property-descriptor');\\n\\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\\n} : function (object, key, value) {\\n  object[key] = value;\\n  return object;\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\n\\nmodule.exports = function (object, key, method) {\\n  try {\\n    \u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\n    return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\\n  } catch (error) { \u002F* empty *\u002F }\\n};\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar V8_PROTOTYPE_DEFINE_BUG = require('..\u002Finternals\u002Fv8-prototype-define-bug');\\nvar definePropertyModule = require('..\u002Finternals\u002Fobject-define-property');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar toIndexedObject = require('..\u002Finternals\u002Fto-indexed-object');\\nvar objectKeys = require('..\u002Finternals\u002Fobject-keys');\\n\\n\u002F\u002F `Object.defineProperties` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.defineproperties\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperties -- safe\\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\\n  anObject(O);\\n  var props = toIndexedObject(Properties);\\n  var keys = objectKeys(Properties);\\n  var length = keys.length;\\n  var index = 0;\\n  var key;\\n  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\\n  return O;\\n};\\n\",\"'use strict';\\nvar $String = String;\\n\\nmodule.exports = function (argument) {\\n  try {\\n    return $String(argument);\\n  } catch (error) {\\n    return 'Object';\\n  }\\n};\\n\",\"'use strict';\\nvar $TypeError = TypeError;\\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; \u002F\u002F 2 ** 53 - 1 == 9007199254740991\\n\\nmodule.exports = function (it) {\\n  if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\\n  return it;\\n};\\n\",\"'use strict';\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar definePropertyModule = require('..\u002Finternals\u002Fobject-define-property');\\nvar makeBuiltIn = require('..\u002Finternals\u002Fmake-built-in');\\nvar defineGlobalProperty = require('..\u002Finternals\u002Fdefine-global-property');\\n\\nmodule.exports = function (O, key, value, options) {\\n  if (!options) options = {};\\n  var simple = options.enumerable;\\n  var name = options.name !== undefined ? options.name : key;\\n  if (isCallable(value)) makeBuiltIn(value, name, options);\\n  if (options.global) {\\n    if (simple) O[key] = value;\\n    else defineGlobalProperty(key, value);\\n  } else {\\n    try {\\n      if (!options.unsafe) delete O[key];\\n      else if (O[key]) simple = true;\\n    } catch (error) { \u002F* empty *\u002F }\\n    if (simple) O[key] = value;\\n    else definePropertyModule.f(O, key, {\\n      value: value,\\n      enumerable: false,\\n      configurable: !options.nonConfigurable,\\n      writable: !options.nonWritable\\n    });\\n  } return O;\\n};\\n\",\"'use strict';\\nvar TO_STRING_TAG_SUPPORT = require('..\u002Finternals\u002Fto-string-tag-support');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar classofRaw = require('..\u002Finternals\u002Fclassof-raw');\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\n\\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\\nvar $Object = Object;\\n\\n\u002F\u002F ES3 wrong here\\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\\n\\n\u002F\u002F fallback for IE11 Script Access Denied error\\nvar tryGet = function (it, key) {\\n  try {\\n    return it[key];\\n  } catch (error) { \u002F* empty *\u002F }\\n};\\n\\n\u002F\u002F getting tag from ES6+ `Object.prototype.toString`\\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\\n  var O, tag, result;\\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\\n    \u002F\u002F @@toStringTag case\\n    : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\\n    \u002F\u002F builtinTag case\\n    : CORRECT_ARGUMENTS ? classofRaw(O)\\n    \u002F\u002F ES3 arguments fallback\\n    : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\\n};\\n\",\"'use strict';\\nvar toPrimitive = require('..\u002Finternals\u002Fto-primitive');\\nvar isSymbol = require('..\u002Finternals\u002Fis-symbol');\\n\\n\u002F\u002F `ToPropertyKey` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-topropertykey\\nmodule.exports = function (argument) {\\n  var key = toPrimitive(argument, 'string');\\n  return isSymbol(key) ? key : key + '';\\n};\\n\",\"'use strict';\\nmodule.exports = function (bitmap, value) {\\n  return {\\n    enumerable: !(bitmap & 1),\\n    configurable: !(bitmap & 2),\\n    writable: !(bitmap & 4),\\n    value: value\\n  };\\n};\\n\",\"'use strict';\\n\u002F* eslint-disable es\u002Fno-symbol -- required for testing *\u002F\\nvar NATIVE_SYMBOL = require('..\u002Finternals\u002Fsymbol-constructor-detection');\\n\\nmodule.exports = NATIVE_SYMBOL &&\\n  !Symbol.sham &&\\n  typeof Symbol.iterator == 'symbol';\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar classof = require('..\u002Finternals\u002Fclassof-raw');\\n\\nvar $Object = Object;\\nvar split = uncurryThis(''.split);\\n\\n\u002F\u002F fallback for non-array-like ES3 and non-enumerable old V8 strings\\nmodule.exports = fails(function () {\\n  \u002F\u002F throws an error in rhino, see https:\u002F\u002Fgithub.com\u002Fmozilla\u002Frhino\u002Fissues\u002F346\\n  \u002F\u002F eslint-disable-next-line no-prototype-builtins -- safe\\n  return !$Object('z').propertyIsEnumerable(0);\\n}) ? function (it) {\\n  return classof(it) === 'String' ? split(it, '') : $Object(it);\\n} : $Object;\\n\",\"'use strict';\\nvar has = require('..\u002Finternals\u002Fset-helpers').has;\\n\\n\u002F\u002F Perform ? RequireInternalSlot(M, [[SetData]])\\nmodule.exports = function (it) {\\n  has(it);\\n  return it;\\n};\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar propertyIsEnumerableModule = require('..\u002Finternals\u002Fobject-property-is-enumerable');\\nvar createPropertyDescriptor = require('..\u002Finternals\u002Fcreate-property-descriptor');\\nvar toIndexedObject = require('..\u002Finternals\u002Fto-indexed-object');\\nvar toPropertyKey = require('..\u002Finternals\u002Fto-property-key');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar IE8_DOM_DEFINE = require('..\u002Finternals\u002Fie8-dom-define');\\n\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\n\\n\u002F\u002F `Object.getOwnPropertyDescriptor` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.getownpropertydescriptor\\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\\n  O = toIndexedObject(O);\\n  P = toPropertyKey(P);\\n  if (IE8_DOM_DEFINE) try {\\n    return $getOwnPropertyDescriptor(O, P);\\n  } catch (error) { \u002F* empty *\u002F }\\n  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar uncurryThisAccessor = require('..\u002Finternals\u002Ffunction-uncurry-this-accessor');\\nvar classof = require('..\u002Finternals\u002Fclassof-raw');\\n\\nvar ArrayBuffer = globalThis.ArrayBuffer;\\nvar TypeError = globalThis.TypeError;\\n\\n\u002F\u002F Includes\\n\u002F\u002F - Perform ? RequireInternalSlot(O, [[ArrayBufferData]]).\\n\u002F\u002F - If IsSharedArrayBuffer(O) is true, throw a TypeError exception.\\nmodule.exports = ArrayBuffer && uncurryThisAccessor(ArrayBuffer.prototype, 'byteLength', 'get') || function (O) {\\n  if (classof(O) !== 'ArrayBuffer') throw new TypeError('ArrayBuffer expected');\\n  return O.byteLength;\\n};\\n\",\"'use strict';\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar IS_PURE = require('..\u002Finternals\u002Fis-pure');\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\n\\nmodule.exports = !fails(function () {\\n  \u002F\u002F eslint-disable-next-line unicorn\u002Frelative-url-style -- required for testing\\n  var url = new URL('b?a=1&b=2&c=3', 'https:\u002F\u002Fa');\\n  var params = url.searchParams;\\n  var params2 = new URLSearchParams('a=1&a=2&b=3');\\n  var result = '';\\n  url.pathname = 'c%20d';\\n  params.forEach(function (value, key) {\\n    params['delete']('b');\\n    result += key + value;\\n  });\\n  params2['delete']('a', 2);\\n  \u002F\u002F `undefined` case is a Chromium 117 bug\\n  \u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=14222\\n  params2['delete']('b', undefined);\\n  return (IS_PURE && (!url.toJSON || !params2.has('a', 1) || params2.has('a', 2) || !params2.has('a', undefined) || params2.has('b')))\\n    || (!params.size && (IS_PURE || !DESCRIPTORS))\\n    || !params.sort\\n    || url.href !== 'https:\u002F\u002Fa\u002Fc%20d?a=1&c=3'\\n    || params.get('c') !== '3'\\n    || String(new URLSearchParams('?a=1')) !== 'a=1'\\n    || !params[ITERATOR]\\n    \u002F\u002F throws in Edge\\n    || new URL('https:\u002F\u002Fa@b').username !== 'a'\\n    || new URLSearchParams(new URLSearchParams('a=b')).get('a') !== 'b'\\n    \u002F\u002F not punycoded in Edge\\n    || new URL('https:\u002F\u002Fтест').host !== 'xn--e1aybc'\\n    \u002F\u002F not escaped in Chrome 62-\\n    || new URL('https:\u002F\u002Fa#б').hash !== '#%D0%B1'\\n    \u002F\u002F fails in Chrome 66-\\n    || result !== 'a1c3'\\n    \u002F\u002F throws in Safari\\n    || new URL('https:\u002F\u002Fx', undefined).host !== 'x';\\n});\\n\",\"'use strict';\\nvar classofRaw = require('..\u002Finternals\u002Fclassof-raw');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\n\\nmodule.exports = function (fn) {\\n  \u002F\u002F Nashorn bug:\\n  \u002F\u002F   https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F1128\\n  \u002F\u002F   https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fissues\u002F1130\\n  if (classofRaw(fn) === 'Function') return uncurryThis(fn);\\n};\\n\",\"'use strict';\\nvar defineBuiltIn = require('..\u002Finternals\u002Fdefine-built-in');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar toString = require('..\u002Finternals\u002Fto-string');\\nvar validateArgumentsLength = require('..\u002Finternals\u002Fvalidate-arguments-length');\\n\\nvar $URLSearchParams = URLSearchParams;\\nvar URLSearchParamsPrototype = $URLSearchParams.prototype;\\nvar getAll = uncurryThis(URLSearchParamsPrototype.getAll);\\nvar $has = uncurryThis(URLSearchParamsPrototype.has);\\nvar params = new $URLSearchParams('a=1');\\n\\n\u002F\u002F `undefined` case is a Chromium 117 bug\\n\u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=14222\\nif (params.has('a', 2) || !params.has('a', undefined)) {\\n  defineBuiltIn(URLSearchParamsPrototype, 'has', function has(name \u002F* , value *\u002F) {\\n    var length = arguments.length;\\n    var $value = length \u003C 2 ? undefined : arguments[1];\\n    if (length && $value === undefined) return $has(this, name);\\n    var values = getAll(this, name); \u002F\u002F also validates `this`\\n    validateArgumentsLength(length, 1);\\n    var value = toString($value);\\n    var index = 0;\\n    while (index \u003C values.length) {\\n      if (values[index++] === value) return true;\\n    } return false;\\n  }, { enumerable: true, unsafe: true });\\n}\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar iterate = require('..\u002Finternals\u002Fiterate');\\nvar aCallable = require('..\u002Finternals\u002Fa-callable');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar getIteratorDirect = require('..\u002Finternals\u002Fget-iterator-direct');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\nvar iteratorHelperWithoutClosingOnEarlyError = require('..\u002Finternals\u002Fiterator-helper-without-closing-on-early-error');\\n\\nvar forEachWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('forEach', TypeError);\\n\\n\u002F\u002F `Iterator.prototype.forEach` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator.prototype.foreach\\n$({ target: 'Iterator', proto: true, real: true, forced: forEachWithoutClosingOnEarlyError }, {\\n  forEach: function forEach(fn) {\\n    anObject(this);\\n    try {\\n      aCallable(fn);\\n    } catch (error) {\\n      iteratorClose(this, 'throw', error);\\n    }\\n\\n    if (forEachWithoutClosingOnEarlyError) return call(forEachWithoutClosingOnEarlyError, this, fn);\\n\\n    var record = getIteratorDirect(this);\\n    var counter = 0;\\n    iterate(record, function (value) {\\n      fn(value, counter++);\\n    }, { IS_RECORD: true });\\n  }\\n});\\n\",\"'use strict';\\nvar IS_PURE = require('..\u002Finternals\u002Fis-pure');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar defineGlobalProperty = require('..\u002Finternals\u002Fdefine-global-property');\\n\\nvar SHARED = '__core-js_shared__';\\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\\n\\n(store.versions || (store.versions = [])).push({\\n  version: '3.42.0',\\n  mode: IS_PURE ? 'pure' : 'global',\\n  copyright: '© 2014-2025 Denis Pushkarev (zloirock.ru)',\\n  license: 'https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js\u002Fblob\u002Fv3.42.0\u002FLICENSE',\\n  source: 'https:\u002F\u002Fgithub.com\u002Fzloirock\u002Fcore-js'\\n});\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar difference = require('..\u002Finternals\u002Fset-difference');\\nvar setMethodAcceptSetLike = require('..\u002Finternals\u002Fset-method-accept-set-like');\\n\\nvar INCORRECT = !setMethodAcceptSetLike('difference', function (result) {\\n  return result.size === 0;\\n});\\n\\n\u002F\u002F `Set.prototype.difference` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.difference\\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\\n  difference: difference\\n});\\n\",\"'use strict';\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\nvar create = require('..\u002Finternals\u002Fobject-create');\\nvar getPrototypeOf = require('..\u002Finternals\u002Fobject-get-prototype-of');\\nvar defineBuiltIn = require('..\u002Finternals\u002Fdefine-built-in');\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\nvar IS_PURE = require('..\u002Finternals\u002Fis-pure');\\n\\nvar ITERATOR = wellKnownSymbol('iterator');\\nvar BUGGY_SAFARI_ITERATORS = false;\\n\\n\u002F\u002F `%IteratorPrototype%` object\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-%iteratorprototype%-object\\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\\n\\n\u002F* eslint-disable es\u002Fno-array-prototype-keys -- safe *\u002F\\nif ([].keys) {\\n  arrayIterator = [].keys();\\n  \u002F\u002F Safari 8 has buggy iterators w\u002Fo `next`\\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\\n  else {\\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\\n  }\\n}\\n\\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\\n  var test = {};\\n  \u002F\u002F FF44- legacy iterators case\\n  return IteratorPrototype[ITERATOR].call(test) !== test;\\n});\\n\\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\\n\\n\u002F\u002F `%IteratorPrototype%[@@iterator]()` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-%iteratorprototype%-@@iterator\\nif (!isCallable(IteratorPrototype[ITERATOR])) {\\n  defineBuiltIn(IteratorPrototype, ITERATOR, function () {\\n    return this;\\n  });\\n}\\n\\nmodule.exports = {\\n  IteratorPrototype: IteratorPrototype,\\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\\n};\\n\",\"'use strict';\\nvar toIntegerOrInfinity = require('..\u002Finternals\u002Fto-integer-or-infinity');\\nvar toLength = require('..\u002Finternals\u002Fto-length');\\n\\nvar $RangeError = RangeError;\\n\\n\u002F\u002F `ToIndex` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-toindex\\nmodule.exports = function (it) {\\n  if (it === undefined) return 0;\\n  var number = toIntegerOrInfinity(it);\\n  var length = toLength(number);\\n  if (number !== length) throw new $RangeError('Wrong length or index');\\n  return length;\\n};\\n\",\"'use strict';\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar ownKeys = require('..\u002Finternals\u002Fown-keys');\\nvar getOwnPropertyDescriptorModule = require('..\u002Finternals\u002Fobject-get-own-property-descriptor');\\nvar definePropertyModule = require('..\u002Finternals\u002Fobject-define-property');\\n\\nmodule.exports = function (target, source, exceptions) {\\n  var keys = ownKeys(source);\\n  var defineProperty = definePropertyModule.f;\\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\\n  for (var i = 0; i \u003C keys.length; i++) {\\n    var key = keys[i];\\n    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\\n    }\\n  }\\n};\\n\",\"'use strict';\\nvar isNullOrUndefined = require('..\u002Finternals\u002Fis-null-or-undefined');\\n\\nvar $TypeError = TypeError;\\n\\n\u002F\u002F `RequireObjectCoercible` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-requireobjectcoercible\\nmodule.exports = function (it) {\\n  if (isNullOrUndefined(it)) throw new $TypeError(\\\"Can't call method on \\\" + it);\\n  return it;\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\n\\nvar aFunction = function (argument) {\\n  return isCallable(argument) ? argument : undefined;\\n};\\n\\nmodule.exports = function (namespace, method) {\\n  return arguments.length \u003C 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\\n};\\n\",\"'use strict';\\n\u002F\u002F eslint-disable-next-line es\u002Fno-typed-arrays -- safe\\nmodule.exports = typeof ArrayBuffer != 'undefined' && typeof DataView != 'undefined';\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar $transfer = require('..\u002Finternals\u002Farray-buffer-transfer');\\n\\n\u002F\u002F `ArrayBuffer.prototype.transferToFixedLength` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-arraybuffer-transfer\u002F#sec-arraybuffer.prototype.transfertofixedlength\\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\\n  transferToFixedLength: function transferToFixedLength() {\\n    return $transfer(this, arguments.length ? arguments[0] : undefined, false);\\n  }\\n});\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar intersection = require('..\u002Finternals\u002Fset-intersection');\\nvar setMethodAcceptSetLike = require('..\u002Finternals\u002Fset-method-accept-set-like');\\n\\nvar INCORRECT = !setMethodAcceptSetLike('intersection', function (result) {\\n  return result.size === 2 && result.has(1) && result.has(2);\\n}) || fails(function () {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-array-from, es\u002Fno-set, es\u002Fno-set-prototype-intersection -- testing\\n  return String(Array.from(new Set([1, 2, 3]).intersection(new Set([3, 2])))) !== '3,2';\\n});\\n\\n\u002F\u002F `Set.prototype.intersection` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-set.prototype.intersection\\n$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {\\n  intersection: intersection\\n});\\n\",\"'use strict';\\nvar toIntegerOrInfinity = require('..\u002Finternals\u002Fto-integer-or-infinity');\\n\\nvar min = Math.min;\\n\\n\u002F\u002F `ToLength` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-tolength\\nmodule.exports = function (argument) {\\n  var len = toIntegerOrInfinity(argument);\\n  return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; \u002F\u002F 2 ** 53 - 1 == 9007199254740991\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar $transfer = require('..\u002Finternals\u002Farray-buffer-transfer');\\n\\n\u002F\u002F `ArrayBuffer.prototype.transfer` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fproposal-arraybuffer-transfer\u002F#sec-arraybuffer.prototype.transfer\\nif ($transfer) $({ target: 'ArrayBuffer', proto: true }, {\\n  transfer: function transfer() {\\n    return $transfer(this, arguments.length ? arguments[0] : undefined, true);\\n  }\\n});\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar anInstance = require('..\u002Finternals\u002Fan-instance');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar getPrototypeOf = require('..\u002Finternals\u002Fobject-get-prototype-of');\\nvar defineBuiltInAccessor = require('..\u002Finternals\u002Fdefine-built-in-accessor');\\nvar createProperty = require('..\u002Finternals\u002Fcreate-property');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\nvar IteratorPrototype = require('..\u002Finternals\u002Fiterators-core').IteratorPrototype;\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar IS_PURE = require('..\u002Finternals\u002Fis-pure');\\n\\nvar CONSTRUCTOR = 'constructor';\\nvar ITERATOR = 'Iterator';\\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\\n\\nvar $TypeError = TypeError;\\nvar NativeIterator = globalThis[ITERATOR];\\n\\n\u002F\u002F FF56- have non-standard global helper `Iterator`\\nvar FORCED = IS_PURE\\n  || !isCallable(NativeIterator)\\n  || NativeIterator.prototype !== IteratorPrototype\\n  \u002F\u002F FF44- non-standard `Iterator` passes previous tests\\n  || !fails(function () { NativeIterator({}); });\\n\\nvar IteratorConstructor = function Iterator() {\\n  anInstance(this, IteratorPrototype);\\n  if (getPrototypeOf(this) === IteratorPrototype) throw new $TypeError('Abstract class Iterator not directly constructable');\\n};\\n\\nvar defineIteratorPrototypeAccessor = function (key, value) {\\n  if (DESCRIPTORS) {\\n    defineBuiltInAccessor(IteratorPrototype, key, {\\n      configurable: true,\\n      get: function () {\\n        return value;\\n      },\\n      set: function (replacement) {\\n        anObject(this);\\n        if (this === IteratorPrototype) throw new $TypeError(\\\"You can't redefine this property\\\");\\n        if (hasOwn(this, key)) this[key] = replacement;\\n        else createProperty(this, key, replacement);\\n      }\\n    });\\n  } else IteratorPrototype[key] = value;\\n};\\n\\nif (!hasOwn(IteratorPrototype, TO_STRING_TAG)) defineIteratorPrototypeAccessor(TO_STRING_TAG, ITERATOR);\\n\\nif (FORCED || !hasOwn(IteratorPrototype, CONSTRUCTOR) || IteratorPrototype[CONSTRUCTOR] === Object) {\\n  defineIteratorPrototypeAccessor(CONSTRUCTOR, IteratorConstructor);\\n}\\n\\nIteratorConstructor.prototype = IteratorPrototype;\\n\\n\u002F\u002F `Iterator` constructor\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-iterator\\n$({ global: true, constructor: true, forced: FORCED }, {\\n  Iterator: IteratorConstructor\\n});\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar shared = require('..\u002Finternals\u002Fshared');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar uid = require('..\u002Finternals\u002Fuid');\\nvar NATIVE_SYMBOL = require('..\u002Finternals\u002Fsymbol-constructor-detection');\\nvar USE_SYMBOL_AS_UID = require('..\u002Finternals\u002Fuse-symbol-as-uid');\\n\\nvar Symbol = globalThis.Symbol;\\nvar WellKnownSymbolsStore = shared('wks');\\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\\n\\nmodule.exports = function (name) {\\n  if (!hasOwn(WellKnownSymbolsStore, name)) {\\n    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\\n      ? Symbol[name]\\n      : createWellKnownSymbol('Symbol.' + name);\\n  } return WellKnownSymbolsStore[name];\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\n\\nvar $SyntaxError = SyntaxError;\\nvar $parseInt = parseInt;\\nvar fromCharCode = String.fromCharCode;\\nvar at = uncurryThis(''.charAt);\\nvar slice = uncurryThis(''.slice);\\nvar exec = uncurryThis(\u002F.\u002F.exec);\\n\\nvar codePoints = {\\n  '\\\\\\\\\\\"': '\\\"',\\n  '\\\\\\\\\\\\\\\\': '\\\\\\\\',\\n  '\\\\\\\\\u002F': '\u002F',\\n  '\\\\\\\\b': '\\\\b',\\n  '\\\\\\\\f': '\\\\f',\\n  '\\\\\\\\n': '\\\\n',\\n  '\\\\\\\\r': '\\\\r',\\n  '\\\\\\\\t': '\\\\t'\\n};\\n\\nvar IS_4_HEX_DIGITS = \u002F^[\\\\da-f]{4}$\u002Fi;\\n\u002F\u002F eslint-disable-next-line regexp\u002Fno-control-character -- safe\\nvar IS_C0_CONTROL_CODE = \u002F^[\\\\u0000-\\\\u001F]$\u002F;\\n\\nmodule.exports = function (source, i) {\\n  var unterminated = true;\\n  var value = '';\\n  while (i \u003C source.length) {\\n    var chr = at(source, i);\\n    if (chr === '\\\\\\\\') {\\n      var twoChars = slice(source, i, i + 2);\\n      if (hasOwn(codePoints, twoChars)) {\\n        value += codePoints[twoChars];\\n        i += 2;\\n      } else if (twoChars === '\\\\\\\\u') {\\n        i += 2;\\n        var fourHexDigits = slice(source, i, i + 4);\\n        if (!exec(IS_4_HEX_DIGITS, fourHexDigits)) throw new $SyntaxError('Bad Unicode escape at: ' + i);\\n        value += fromCharCode($parseInt(fourHexDigits, 16));\\n        i += 4;\\n      } else throw new $SyntaxError('Unknown escape sequence: \\\"' + twoChars + '\\\"');\\n    } else if (chr === '\\\"') {\\n      unterminated = false;\\n      i++;\\n      break;\\n    } else {\\n      if (exec(IS_C0_CONTROL_CODE, chr)) throw new $SyntaxError('Bad control character in string literal at: ' + i);\\n      value += chr;\\n      i++;\\n    }\\n  }\\n  if (unterminated) throw new $SyntaxError('Unterminated string at: ' + i);\\n  return { value: value, end: i };\\n};\\n\",\"'use strict';\\nvar $ = require('..\u002Finternals\u002Fexport');\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar getBuiltIn = require('..\u002Finternals\u002Fget-built-in');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\nvar isArray = require('..\u002Finternals\u002Fis-array');\\nvar hasOwn = require('..\u002Finternals\u002Fhas-own-property');\\nvar toString = require('..\u002Finternals\u002Fto-string');\\nvar lengthOfArrayLike = require('..\u002Finternals\u002Flength-of-array-like');\\nvar createProperty = require('..\u002Finternals\u002Fcreate-property');\\nvar fails = require('..\u002Finternals\u002Ffails');\\nvar parseJSONString = require('..\u002Finternals\u002Fparse-json-string');\\nvar NATIVE_SYMBOL = require('..\u002Finternals\u002Fsymbol-constructor-detection');\\n\\nvar JSON = globalThis.JSON;\\nvar Number = globalThis.Number;\\nvar SyntaxError = globalThis.SyntaxError;\\nvar nativeParse = JSON && JSON.parse;\\nvar enumerableOwnProperties = getBuiltIn('Object', 'keys');\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\nvar at = uncurryThis(''.charAt);\\nvar slice = uncurryThis(''.slice);\\nvar exec = uncurryThis(\u002F.\u002F.exec);\\nvar push = uncurryThis([].push);\\n\\nvar IS_DIGIT = \u002F^\\\\d$\u002F;\\nvar IS_NON_ZERO_DIGIT = \u002F^[1-9]$\u002F;\\nvar IS_NUMBER_START = \u002F^[\\\\d-]$\u002F;\\nvar IS_WHITESPACE = \u002F^[\\\\t\\\\n\\\\r ]$\u002F;\\n\\nvar PRIMITIVE = 0;\\nvar OBJECT = 1;\\n\\nvar $parse = function (source, reviver) {\\n  source = toString(source);\\n  var context = new Context(source, 0, '');\\n  var root = context.parse();\\n  var value = root.value;\\n  var endIndex = context.skip(IS_WHITESPACE, root.end);\\n  if (endIndex \u003C source.length) {\\n    throw new SyntaxError('Unexpected extra character: \\\"' + at(source, endIndex) + '\\\" after the parsed data at: ' + endIndex);\\n  }\\n  return isCallable(reviver) ? internalize({ '': value }, '', reviver, root) : value;\\n};\\n\\nvar internalize = function (holder, name, reviver, node) {\\n  var val = holder[name];\\n  var unmodified = node && val === node.value;\\n  var context = unmodified && typeof node.source == 'string' ? { source: node.source } : {};\\n  var elementRecordsLen, keys, len, i, P;\\n  if (isObject(val)) {\\n    var nodeIsArray = isArray(val);\\n    var nodes = unmodified ? node.nodes : nodeIsArray ? [] : {};\\n    if (nodeIsArray) {\\n      elementRecordsLen = nodes.length;\\n      len = lengthOfArrayLike(val);\\n      for (i = 0; i \u003C len; i++) {\\n        internalizeProperty(val, i, internalize(val, '' + i, reviver, i \u003C elementRecordsLen ? nodes[i] : undefined));\\n      }\\n    } else {\\n      keys = enumerableOwnProperties(val);\\n      len = lengthOfArrayLike(keys);\\n      for (i = 0; i \u003C len; i++) {\\n        P = keys[i];\\n        internalizeProperty(val, P, internalize(val, P, reviver, hasOwn(nodes, P) ? nodes[P] : undefined));\\n      }\\n    }\\n  }\\n  return call(reviver, holder, name, val, context);\\n};\\n\\nvar internalizeProperty = function (object, key, value) {\\n  if (DESCRIPTORS) {\\n    var descriptor = getOwnPropertyDescriptor(object, key);\\n    if (descriptor && !descriptor.configurable) return;\\n  }\\n  if (value === undefined) delete object[key];\\n  else createProperty(object, key, value);\\n};\\n\\nvar Node = function (value, end, source, nodes) {\\n  this.value = value;\\n  this.end = end;\\n  this.source = source;\\n  this.nodes = nodes;\\n};\\n\\nvar Context = function (source, index) {\\n  this.source = source;\\n  this.index = index;\\n};\\n\\n\u002F\u002F https:\u002F\u002Fwww.json.org\u002Fjson-en.html\\nContext.prototype = {\\n  fork: function (nextIndex) {\\n    return new Context(this.source, nextIndex);\\n  },\\n  parse: function () {\\n    var source = this.source;\\n    var i = this.skip(IS_WHITESPACE, this.index);\\n    var fork = this.fork(i);\\n    var chr = at(source, i);\\n    if (exec(IS_NUMBER_START, chr)) return fork.number();\\n    switch (chr) {\\n      case '{':\\n        return fork.object();\\n      case '[':\\n        return fork.array();\\n      case '\\\"':\\n        return fork.string();\\n      case 't':\\n        return fork.keyword(true);\\n      case 'f':\\n        return fork.keyword(false);\\n      case 'n':\\n        return fork.keyword(null);\\n    } throw new SyntaxError('Unexpected character: \\\"' + chr + '\\\" at: ' + i);\\n  },\\n  node: function (type, value, start, end, nodes) {\\n    return new Node(value, end, type ? null : slice(this.source, start, end), nodes);\\n  },\\n  object: function () {\\n    var source = this.source;\\n    var i = this.index + 1;\\n    var expectKeypair = false;\\n    var object = {};\\n    var nodes = {};\\n    while (i \u003C source.length) {\\n      i = this.until(['\\\"', '}'], i);\\n      if (at(source, i) === '}' && !expectKeypair) {\\n        i++;\\n        break;\\n      }\\n      \u002F\u002F Parsing the key\\n      var result = this.fork(i).string();\\n      var key = result.value;\\n      i = result.end;\\n      i = this.until([':'], i) + 1;\\n      \u002F\u002F Parsing value\\n      i = this.skip(IS_WHITESPACE, i);\\n      result = this.fork(i).parse();\\n      createProperty(nodes, key, result);\\n      createProperty(object, key, result.value);\\n      i = this.until([',', '}'], result.end);\\n      var chr = at(source, i);\\n      if (chr === ',') {\\n        expectKeypair = true;\\n        i++;\\n      } else if (chr === '}') {\\n        i++;\\n        break;\\n      }\\n    }\\n    return this.node(OBJECT, object, this.index, i, nodes);\\n  },\\n  array: function () {\\n    var source = this.source;\\n    var i = this.index + 1;\\n    var expectElement = false;\\n    var array = [];\\n    var nodes = [];\\n    while (i \u003C source.length) {\\n      i = this.skip(IS_WHITESPACE, i);\\n      if (at(source, i) === ']' && !expectElement) {\\n        i++;\\n        break;\\n      }\\n      var result = this.fork(i).parse();\\n      push(nodes, result);\\n      push(array, result.value);\\n      i = this.until([',', ']'], result.end);\\n      if (at(source, i) === ',') {\\n        expectElement = true;\\n        i++;\\n      } else if (at(source, i) === ']') {\\n        i++;\\n        break;\\n      }\\n    }\\n    return this.node(OBJECT, array, this.index, i, nodes);\\n  },\\n  string: function () {\\n    var index = this.index;\\n    var parsed = parseJSONString(this.source, this.index + 1);\\n    return this.node(PRIMITIVE, parsed.value, index, parsed.end);\\n  },\\n  number: function () {\\n    var source = this.source;\\n    var startIndex = this.index;\\n    var i = startIndex;\\n    if (at(source, i) === '-') i++;\\n    if (at(source, i) === '0') i++;\\n    else if (exec(IS_NON_ZERO_DIGIT, at(source, i))) i = this.skip(IS_DIGIT, i + 1);\\n    else throw new SyntaxError('Failed to parse number at: ' + i);\\n    if (at(source, i) === '.') i = this.skip(IS_DIGIT, i + 1);\\n    if (at(source, i) === 'e' || at(source, i) === 'E') {\\n      i++;\\n      if (at(source, i) === '+' || at(source, i) === '-') i++;\\n      var exponentStartIndex = i;\\n      i = this.skip(IS_DIGIT, i);\\n      if (exponentStartIndex === i) throw new SyntaxError(\\\"Failed to parse number's exponent value at: \\\" + i);\\n    }\\n    return this.node(PRIMITIVE, Number(slice(source, startIndex, i)), startIndex, i);\\n  },\\n  keyword: function (value) {\\n    var keyword = '' + value;\\n    var index = this.index;\\n    var endIndex = index + keyword.length;\\n    if (slice(this.source, index, endIndex) !== keyword) throw new SyntaxError('Failed to parse value at: ' + index);\\n    return this.node(PRIMITIVE, value, index, endIndex);\\n  },\\n  skip: function (regex, i) {\\n    var source = this.source;\\n    for (; i \u003C source.length; i++) if (!exec(regex, at(source, i))) break;\\n    return i;\\n  },\\n  until: function (array, i) {\\n    i = this.skip(IS_WHITESPACE, i);\\n    var chr = at(this.source, i);\\n    for (var j = 0; j \u003C array.length; j++) if (array[j] === chr) return i;\\n    throw new SyntaxError('Unexpected character: \\\"' + chr + '\\\" at: ' + i);\\n  }\\n};\\n\\nvar NO_SOURCE_SUPPORT = fails(function () {\\n  var unsafeInt = '9007199254740993';\\n  var source;\\n  nativeParse(unsafeInt, function (key, value, context) {\\n    source = context.source;\\n  });\\n  return source !== unsafeInt;\\n});\\n\\nvar PROPER_BASE_PARSE = NATIVE_SYMBOL && !fails(function () {\\n  \u002F\u002F Safari 9 bug\\n  return 1 \u002F nativeParse('-0 \\\\t') !== -Infinity;\\n});\\n\\n\u002F\u002F `JSON.parse` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-json.parse\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-json-parse-with-source\\n$({ target: 'JSON', stat: true, forced: NO_SOURCE_SUPPORT }, {\\n  parse: function parse(text, reviver) {\\n    return PROPER_BASE_PARSE && !isCallable(reviver) ? nativeParse(text) : $parse(text, reviver);\\n  }\\n});\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar iterateSimple = require('..\u002Finternals\u002Fiterate-simple');\\nvar SetHelpers = require('..\u002Finternals\u002Fset-helpers');\\n\\nvar Set = SetHelpers.Set;\\nvar SetPrototype = SetHelpers.proto;\\nvar forEach = uncurryThis(SetPrototype.forEach);\\nvar keys = uncurryThis(SetPrototype.keys);\\nvar next = keys(new Set()).next;\\n\\nmodule.exports = function (set, fn, interruptible) {\\n  return interruptible ? iterateSimple({ iterator: keys(set), next: next }, fn) : forEach(set, fn);\\n};\\n\",\"'use strict';\\nvar internalObjectKeys = require('..\u002Finternals\u002Fobject-keys-internal');\\nvar enumBugKeys = require('..\u002Finternals\u002Fenum-bug-keys');\\n\\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\\n\\n\u002F\u002F `Object.getOwnPropertyNames` method\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.getownpropertynames\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertynames -- safe\\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\\n  return internalObjectKeys(O, hiddenKeys);\\n};\\n\",\"'use strict';\\nvar aSet = require('..\u002Finternals\u002Fa-set');\\nvar has = require('..\u002Finternals\u002Fset-helpers').has;\\nvar size = require('..\u002Finternals\u002Fset-size');\\nvar getSetRecord = require('..\u002Finternals\u002Fget-set-record');\\nvar iterateSimple = require('..\u002Finternals\u002Fiterate-simple');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\n\\n\u002F\u002F `Set.prototype.isSupersetOf` method\\n\u002F\u002F https:\u002F\u002Ftc39.github.io\u002Fproposal-set-methods\u002F#Set.prototype.isSupersetOf\\nmodule.exports = function isSupersetOf(other) {\\n  var O = aSet(this);\\n  var otherRec = getSetRecord(other);\\n  if (size(O) \u003C otherRec.size) return false;\\n  var iterator = otherRec.getIterator();\\n  return iterateSimple(iterator, function (e) {\\n    if (!has(O, e)) return iteratorClose(iterator, 'normal', false);\\n  }) !== false;\\n};\\n\",\"'use strict';\\nvar isObject = require('..\u002Finternals\u002Fis-object');\\n\\nvar $String = String;\\nvar $TypeError = TypeError;\\n\\n\u002F\u002F `Assert: Type(argument) is Object`\\nmodule.exports = function (argument) {\\n  if (isObject(argument)) return argument;\\n  throw new $TypeError($String(argument) + ' is not an object');\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\n\\nvar WeakMap = globalThis.WeakMap;\\n\\nmodule.exports = isCallable(WeakMap) && \u002Fnative code\u002F.test(String(WeakMap));\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar fails = require('..\u002Finternals\u002Ffails');\\n\\n\u002F\u002F V8 ~ Chrome 36-\\n\u002F\u002F https:\u002F\u002Fbugs.chromium.org\u002Fp\u002Fv8\u002Fissues\u002Fdetail?id=3334\\nmodule.exports = DESCRIPTORS && fails(function () {\\n  \u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- required for testing\\n  return Object.defineProperty(function () { \u002F* empty *\u002F }, 'prototype', {\\n    value: 42,\\n    writable: false\\n  }).prototype !== 42;\\n});\\n\",\"'use strict';\\nvar DESCRIPTORS = require('..\u002Finternals\u002Fdescriptors');\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar defineBuiltInAccessor = require('..\u002Finternals\u002Fdefine-built-in-accessor');\\n\\nvar URLSearchParamsPrototype = URLSearchParams.prototype;\\nvar forEach = uncurryThis(URLSearchParamsPrototype.forEach);\\n\\n\u002F\u002F `URLSearchParams.prototype.size` getter\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Fwhatwg\u002Furl\u002Fpull\u002F734\\nif (DESCRIPTORS && !('size' in URLSearchParamsPrototype)) {\\n  defineBuiltInAccessor(URLSearchParamsPrototype, 'size', {\\n    get: function size() {\\n      var count = 0;\\n      forEach(this, function () { count++; });\\n      return count;\\n    },\\n    configurable: true,\\n    enumerable: true\\n  });\\n}\\n\",\"'use strict';\\n\u002F\u002F IE8- don't enum bug keys\\nmodule.exports = [\\n  'constructor',\\n  'hasOwnProperty',\\n  'isPrototypeOf',\\n  'propertyIsEnumerable',\\n  'toLocaleString',\\n  'toString',\\n  'valueOf'\\n];\\n\",\"'use strict';\\nvar aSet = require('..\u002Finternals\u002Fa-set');\\nvar SetHelpers = require('..\u002Finternals\u002Fset-helpers');\\nvar size = require('..\u002Finternals\u002Fset-size');\\nvar getSetRecord = require('..\u002Finternals\u002Fget-set-record');\\nvar iterateSet = require('..\u002Finternals\u002Fset-iterate');\\nvar iterateSimple = require('..\u002Finternals\u002Fiterate-simple');\\n\\nvar Set = SetHelpers.Set;\\nvar add = SetHelpers.add;\\nvar has = SetHelpers.has;\\n\\n\u002F\u002F `Set.prototype.intersection` method\\n\u002F\u002F https:\u002F\u002Fgithub.com\u002Ftc39\u002Fproposal-set-methods\\nmodule.exports = function intersection(other) {\\n  var O = aSet(this);\\n  var otherRec = getSetRecord(other);\\n  var result = new Set();\\n\\n  if (size(O) > otherRec.size) {\\n    iterateSimple(otherRec.getIterator(), function (e) {\\n      if (has(O, e)) add(result, e);\\n    });\\n  } else {\\n    iterateSet(O, function (e) {\\n      if (otherRec.includes(e)) add(result, e);\\n    });\\n  }\\n\\n  return result;\\n};\\n\",\"'use strict';\\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-getownpropertydescriptor -- safe\\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\\n\\n\u002F\u002F Nashorn ~ JDK8 bug\\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\\n\\n\u002F\u002F `Object.prototype.propertyIsEnumerable` method implementation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-object.prototype.propertyisenumerable\\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\\n  var descriptor = getOwnPropertyDescriptor(this, V);\\n  return !!descriptor && descriptor.enumerable;\\n} : $propertyIsEnumerable;\\n\",\"'use strict';\\nvar requireObjectCoercible = require('..\u002Finternals\u002Frequire-object-coercible');\\n\\nvar $Object = Object;\\n\\n\u002F\u002F `ToObject` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-toobject\\nmodule.exports = function (argument) {\\n  return $Object(requireObjectCoercible(argument));\\n};\\n\",\"'use strict';\\nmodule.exports = function (exec) {\\n  try {\\n    return !!exec();\\n  } catch (error) {\\n    return true;\\n  }\\n};\\n\",\"'use strict';\\nvar SetHelpers = require('..\u002Finternals\u002Fset-helpers');\\nvar iterate = require('..\u002Finternals\u002Fset-iterate');\\n\\nvar Set = SetHelpers.Set;\\nvar add = SetHelpers.add;\\n\\nmodule.exports = function (set) {\\n  var result = new Set();\\n  iterate(set, function (it) {\\n    add(result, it);\\n  });\\n  return result;\\n};\\n\",\"'use strict';\\nvar uncurryThis = require('..\u002Finternals\u002Ffunction-uncurry-this');\\nvar toObject = require('..\u002Finternals\u002Fto-object');\\n\\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\\n\\n\u002F\u002F `HasOwnProperty` abstract operation\\n\u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-hasownproperty\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-hasown -- safe\\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\\n  return hasOwnProperty(toObject(it), key);\\n};\\n\",\"'use strict';\\nvar isCallable = require('..\u002Finternals\u002Fis-callable');\\nvar tryToString = require('..\u002Finternals\u002Ftry-to-string');\\n\\nvar $TypeError = TypeError;\\n\\n\u002F\u002F `Assert: IsCallable(argument) is true`\\nmodule.exports = function (argument) {\\n  if (isCallable(argument)) return argument;\\n  throw new $TypeError(tryToString(argument) + ' is not a function');\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar IS_NODE = require('..\u002Finternals\u002Fenvironment-is-node');\\n\\nmodule.exports = function (name) {\\n  if (IS_NODE) {\\n    try {\\n      return globalThis.process.getBuiltinModule(name);\\n    } catch (error) { \u002F* empty *\u002F }\\n    try {\\n      \u002F\u002F eslint-disable-next-line no-new-func -- safe\\n      return Function('return require(\\\"' + name + '\\\")')();\\n    } catch (error) { \u002F* empty *\u002F }\\n  }\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\n\\n\u002F\u002F eslint-disable-next-line es\u002Fno-object-defineproperty -- safe\\nvar defineProperty = Object.defineProperty;\\n\\nmodule.exports = function (key, value) {\\n  try {\\n    defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\\n  } catch (error) {\\n    globalThis[key] = value;\\n  } return value;\\n};\\n\",\"'use strict';\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar create = require('..\u002Finternals\u002Fobject-create');\\nvar createNonEnumerableProperty = require('..\u002Finternals\u002Fcreate-non-enumerable-property');\\nvar defineBuiltIns = require('..\u002Finternals\u002Fdefine-built-ins');\\nvar wellKnownSymbol = require('..\u002Finternals\u002Fwell-known-symbol');\\nvar InternalStateModule = require('..\u002Finternals\u002Finternal-state');\\nvar getMethod = require('..\u002Finternals\u002Fget-method');\\nvar IteratorPrototype = require('..\u002Finternals\u002Fiterators-core').IteratorPrototype;\\nvar createIterResultObject = require('..\u002Finternals\u002Fcreate-iter-result-object');\\nvar iteratorClose = require('..\u002Finternals\u002Fiterator-close');\\n\\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\\nvar ITERATOR_HELPER = 'IteratorHelper';\\nvar WRAP_FOR_VALID_ITERATOR = 'WrapForValidIterator';\\nvar setInternalState = InternalStateModule.set;\\n\\nvar createIteratorProxyPrototype = function (IS_ITERATOR) {\\n  var getInternalState = InternalStateModule.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER);\\n\\n  return defineBuiltIns(create(IteratorPrototype), {\\n    next: function next() {\\n      var state = getInternalState(this);\\n      \u002F\u002F for simplification:\\n      \u002F\u002F   for `%WrapForValidIteratorPrototype%.next` or with `state.returnHandlerResult` our `nextHandler` returns `IterResultObject`\\n      \u002F\u002F   for `%IteratorHelperPrototype%.next` - just a value\\n      if (IS_ITERATOR) return state.nextHandler();\\n      if (state.done) return createIterResultObject(undefined, true);\\n      try {\\n        var result = state.nextHandler();\\n        return state.returnHandlerResult ? result : createIterResultObject(result, state.done);\\n      } catch (error) {\\n        state.done = true;\\n        throw error;\\n      }\\n    },\\n    'return': function () {\\n      var state = getInternalState(this);\\n      var iterator = state.iterator;\\n      state.done = true;\\n      if (IS_ITERATOR) {\\n        var returnMethod = getMethod(iterator, 'return');\\n        return returnMethod ? call(returnMethod, iterator) : createIterResultObject(undefined, true);\\n      }\\n      if (state.inner) try {\\n        iteratorClose(state.inner.iterator, 'normal');\\n      } catch (error) {\\n        return iteratorClose(iterator, 'throw', error);\\n      }\\n      if (iterator) iteratorClose(iterator, 'normal');\\n      return createIterResultObject(undefined, true);\\n    }\\n  });\\n};\\n\\nvar WrapForValidIteratorPrototype = createIteratorProxyPrototype(true);\\nvar IteratorHelperPrototype = createIteratorProxyPrototype(false);\\n\\ncreateNonEnumerableProperty(IteratorHelperPrototype, TO_STRING_TAG, 'Iterator Helper');\\n\\nmodule.exports = function (nextHandler, IS_ITERATOR, RETURN_HANDLER_RESULT) {\\n  var IteratorProxy = function Iterator(record, state) {\\n    if (state) {\\n      state.iterator = record.iterator;\\n      state.next = record.next;\\n    } else state = record;\\n    state.type = IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER;\\n    state.returnHandlerResult = !!RETURN_HANDLER_RESULT;\\n    state.nextHandler = nextHandler;\\n    state.counter = 0;\\n    state.done = false;\\n    setInternalState(this, state);\\n  };\\n\\n  IteratorProxy.prototype = IS_ITERATOR ? WrapForValidIteratorPrototype : IteratorHelperPrototype;\\n\\n  return IteratorProxy;\\n};\\n\",\"'use strict';\\nvar NATIVE_BIND = require('..\u002Finternals\u002Ffunction-bind-native');\\n\\nvar FunctionPrototype = Function.prototype;\\nvar call = FunctionPrototype.call;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind -- safe\\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\\n\\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\\n  return function () {\\n    return call.apply(fn, arguments);\\n  };\\n};\\n\",\"'use strict';\\nvar globalThis = require('..\u002Finternals\u002Fglobal-this');\\nvar userAgent = require('..\u002Finternals\u002Fenvironment-user-agent');\\n\\nvar process = globalThis.process;\\nvar Deno = globalThis.Deno;\\nvar versions = process && process.versions || Deno && Deno.version;\\nvar v8 = versions && versions.v8;\\nvar match, version;\\n\\nif (v8) {\\n  match = v8.split('.');\\n  \u002F\u002F in old Chrome, versions of V8 isn't V8 = Chrome \u002F 10\\n  \u002F\u002F but their correct versions are not interesting for us\\n  version = match[0] > 0 && match[0] \u003C 4 ? 1 : +(match[0] + match[1]);\\n}\\n\\n\u002F\u002F BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\\n\u002F\u002F so check `userAgent` even if `.v8` exists, but 0\\nif (!version && userAgent) {\\n  match = userAgent.match(\u002FEdge\\\\\u002F(\\\\d+)\u002F);\\n  if (!match || match[1] >= 74) {\\n    match = userAgent.match(\u002FChrome\\\\\u002F(\\\\d+)\u002F);\\n    if (match) version = +match[1];\\n  }\\n}\\n\\nmodule.exports = version;\\n\",\"'use strict';\\nvar call = require('..\u002Finternals\u002Ffunction-call');\\nvar anObject = require('..\u002Finternals\u002Fan-object');\\nvar getMethod = require('..\u002Finternals\u002Fget-method');\\n\\nmodule.exports = function (iterator, kind, value) {\\n  var innerResult, innerError;\\n  anObject(iterator);\\n  try {\\n    innerResult = getMethod(iterator, 'return');\\n    if (!innerResult) {\\n      if (kind === 'throw') throw value;\\n      return value;\\n    }\\n    innerResult = call(innerResult, iterator);\\n  } catch (error) {\\n    innerError = true;\\n    innerResult = error;\\n  }\\n  if (kind === 'throw') throw value;\\n  if (innerError) throw innerResult;\\n  anObject(innerResult);\\n  return value;\\n};\\n\",\"'use strict';\\nvar NATIVE_BIND = require('..\u002Finternals\u002Ffunction-bind-native');\\n\\nvar call = Function.prototype.call;\\n\u002F\u002F eslint-disable-next-line es\u002Fno-function-prototype-bind -- safe\\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\\n  return call.apply(call, arguments);\\n};\\n\",\"'use strict';\\nvar toIndexedObject = require('..\u002Finternals\u002Fto-indexed-object');\\nvar toAbsoluteIndex = require('..\u002Finternals\u002Fto-absolute-index');\\nvar lengthOfArrayLike = require('..\u002Finternals\u002Flength-of-array-like');\\n\\n\u002F\u002F `Array.prototype.{ indexOf, includes }` methods implementation\\nvar createMethod = function (IS_INCLUDES) {\\n  return function ($this, el, fromIndex) {\\n    var O = toIndexedObject($this);\\n    var length = lengthOfArrayLike(O);\\n    if (length === 0) return !IS_INCLUDES && -1;\\n    var index = toAbsoluteIndex(fromIndex, length);\\n    var value;\\n    \u002F\u002F Array#includes uses SameValueZero equality algorithm\\n    \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\\n    if (IS_INCLUDES && el !== el) while (length > index) {\\n      value = O[index++];\\n      \u002F\u002F eslint-disable-next-line no-self-compare -- NaN check\\n      if (value !== value) return true;\\n    \u002F\u002F Array#indexOf ignores holes, Array#includes - not\\n    } else for (;length > index; index++) {\\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\\n    } return !IS_INCLUDES && -1;\\n  };\\n};\\n\\nmodule.exports = {\\n  \u002F\u002F `Array.prototype.includes` method\\n  \u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-array.prototype.includes\\n  includes: createMethod(true),\\n  \u002F\u002F `Array.prototype.indexOf` method\\n  \u002F\u002F https:\u002F\u002Ftc39.es\u002Fecma262\u002F#sec-array.prototype.indexof\\n  indexOf: createMethod(false)\\n};\\n\",\"\u002F\u002F The module cache\\nvar __webpack_module_cache__ = {};\\n\\n\u002F\u002F The require function\\nfunction __webpack_require__(moduleId) {\\n\\t\u002F\u002F Check if module is in cache\\n\\tvar cachedModule = __webpack_module_cache__[moduleId];\\n\\tif (cachedModule !== undefined) {\\n\\t\\treturn cachedModule.exports;\\n\\t}\\n\\t\u002F\u002F Create a new module (and put it into the cache)\\n\\tvar module = __webpack_module_cache__[moduleId] = {\\n\\t\\t\u002F\u002F no module.id needed\\n\\t\\t\u002F\u002F no module.loaded needed\\n\\t\\texports: {}\\n\\t};\\n\\n\\t\u002F\u002F Execute the module function\\n\\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\\n\\n\\t\u002F\u002F Return the exports of the module\\n\\treturn module.exports;\\n}\\n\\n\",\"\u002F* Copyright 2016 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nconst {\\n  AbortException,\\n  AnnotationEditorLayer,\\n  AnnotationEditorParamsType,\\n  AnnotationEditorType,\\n  AnnotationEditorUIManager,\\n  AnnotationLayer,\\n  AnnotationMode,\\n  AnnotationType,\\n  build,\\n  ColorPicker,\\n  createValidAbsoluteUrl,\\n  DOMSVGFactory,\\n  DrawLayer,\\n  FeatureTest,\\n  fetchData,\\n  getDocument,\\n  getFilenameFromUrl,\\n  getPdfFilenameFromUrl,\\n  getUuid,\\n  getXfaPageViewport,\\n  GlobalWorkerOptions,\\n  ImageKind,\\n  InvalidPDFException,\\n  isDataScheme,\\n  isPdfFile,\\n  isValidExplicitDest,\\n  MathClamp,\\n  noContextMenu,\\n  normalizeUnicode,\\n  OPS,\\n  OutputScale,\\n  PasswordResponses,\\n  PDFDataRangeTransport,\\n  PDFDateString,\\n  PDFWorker,\\n  PermissionFlag,\\n  PixelsPerInch,\\n  RenderingCancelledException,\\n  ResponseException,\\n  setLayerDimensions,\\n  shadow,\\n  SignatureExtractor,\\n  stopEvent,\\n  SupportedImageMimeTypes,\\n  TextLayer,\\n  TouchManager,\\n  updateUrlHash,\\n  Util,\\n  VerbosityLevel,\\n  version,\\n  XfaLayer,\\n} = globalThis.pdfjsLib;\\n\\nexport {\\n  AbortException,\\n  AnnotationEditorLayer,\\n  AnnotationEditorParamsType,\\n  AnnotationEditorType,\\n  AnnotationEditorUIManager,\\n  AnnotationLayer,\\n  AnnotationMode,\\n  AnnotationType,\\n  build,\\n  ColorPicker,\\n  createValidAbsoluteUrl,\\n  DOMSVGFactory,\\n  DrawLayer,\\n  FeatureTest,\\n  fetchData,\\n  getDocument,\\n  getFilenameFromUrl,\\n  getPdfFilenameFromUrl,\\n  getUuid,\\n  getXfaPageViewport,\\n  GlobalWorkerOptions,\\n  ImageKind,\\n  InvalidPDFException,\\n  isDataScheme,\\n  isPdfFile,\\n  isValidExplicitDest,\\n  MathClamp,\\n  noContextMenu,\\n  normalizeUnicode,\\n  OPS,\\n  OutputScale,\\n  PasswordResponses,\\n  PDFDataRangeTransport,\\n  PDFDateString,\\n  PDFWorker,\\n  PermissionFlag,\\n  PixelsPerInch,\\n  RenderingCancelledException,\\n  ResponseException,\\n  setLayerDimensions,\\n  shadow,\\n  SignatureExtractor,\\n  stopEvent,\\n  SupportedImageMimeTypes,\\n  TextLayer,\\n  TouchManager,\\n  updateUrlHash,\\n  Util,\\n  VerbosityLevel,\\n  version,\\n  XfaLayer,\\n};\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { MathClamp } from \\\"pdfjs-lib\\\";\\n\\nconst DEFAULT_SCALE_VALUE = \\\"auto\\\";\\nconst DEFAULT_SCALE = 1.0;\\nconst DEFAULT_SCALE_DELTA = 1.1;\\nconst MIN_SCALE = 0.1;\\nconst MAX_SCALE = 10.0;\\nconst UNKNOWN_SCALE = 0;\\nconst MAX_AUTO_SCALE = 1.25;\\nconst SCROLLBAR_PADDING = 40;\\nconst VERTICAL_PADDING = 5;\\n\\nconst RenderingStates = {\\n  INITIAL: 0,\\n  RUNNING: 1,\\n  PAUSED: 2,\\n  FINISHED: 3,\\n};\\n\\nconst PresentationModeState = {\\n  UNKNOWN: 0,\\n  NORMAL: 1,\\n  CHANGING: 2,\\n  FULLSCREEN: 3,\\n};\\n\\nconst SidebarView = {\\n  UNKNOWN: -1,\\n  NONE: 0,\\n  THUMBS: 1, \u002F\u002F Default value.\\n  OUTLINE: 2,\\n  ATTACHMENTS: 3,\\n  LAYERS: 4,\\n};\\n\\nconst TextLayerMode = {\\n  DISABLE: 0,\\n  ENABLE: 1,\\n  ENABLE_PERMISSIONS: 2,\\n};\\n\\nconst ScrollMode = {\\n  UNKNOWN: -1,\\n  VERTICAL: 0, \u002F\u002F Default value.\\n  HORIZONTAL: 1,\\n  WRAPPED: 2,\\n  PAGE: 3,\\n};\\n\\nconst SpreadMode = {\\n  UNKNOWN: -1,\\n  NONE: 0, \u002F\u002F Default value.\\n  ODD: 1,\\n  EVEN: 2,\\n};\\n\\nconst CursorTool = {\\n  SELECT: 0, \u002F\u002F The default value.\\n  HAND: 1,\\n  ZOOM: 2,\\n};\\n\\n\u002F\u002F Used by `PDFViewerApplication`, and by the API unit-tests.\\nconst AutoPrintRegExp = \u002F\\\\bprint\\\\s*\\\\(\u002F;\\n\\n\u002F**\\n * Scrolls specified element into view of its parent.\\n * @param {HTMLElement} element - The element to be visible.\\n * @param {Object} [spot] - An object with optional top and left properties,\\n *   specifying the offset from the top left edge.\\n * @param {number} [spot.left]\\n * @param {number} [spot.top]\\n * @param {boolean} [scrollMatches] - When scrolling search results into view,\\n *   ignore elements that either: Contains marked content identifiers,\\n *   or have the CSS-rule `overflow: hidden;` set. The default value is `false`.\\n *\u002F\\nfunction scrollIntoView(element, spot, scrollMatches = false) {\\n  \u002F\u002F Assuming offsetParent is available (it's not available when viewer is in\\n  \u002F\u002F hidden iframe or object). We have to scroll: if the offsetParent is not set\\n  \u002F\u002F producing the error. See also animationStarted.\\n  let parent = element.offsetParent;\\n  if (!parent) {\\n    console.error(\\\"offsetParent is not set -- cannot scroll\\\");\\n    return;\\n  }\\n  let offsetY = element.offsetTop + element.clientTop;\\n  let offsetX = element.offsetLeft + element.clientLeft;\\n  while (\\n    (parent.clientHeight === parent.scrollHeight &&\\n      parent.clientWidth === parent.scrollWidth) ||\\n    (scrollMatches &&\\n      (parent.classList.contains(\\\"markedContent\\\") ||\\n        getComputedStyle(parent).overflow === \\\"hidden\\\"))\\n  ) {\\n    offsetY += parent.offsetTop;\\n    offsetX += parent.offsetLeft;\\n\\n    parent = parent.offsetParent;\\n    if (!parent) {\\n      return; \u002F\u002F no need to scroll\\n    }\\n  }\\n  if (spot) {\\n    if (spot.top !== undefined) {\\n      offsetY += spot.top;\\n    }\\n    if (spot.left !== undefined) {\\n      offsetX += spot.left;\\n      parent.scrollLeft = offsetX;\\n    }\\n  }\\n  parent.scrollTop = offsetY;\\n}\\n\\n\u002F**\\n * Helper function to start monitoring the scroll event and converting them into\\n * PDF.js friendly one: with scroll debounce and scroll direction.\\n *\u002F\\nfunction watchScroll(viewAreaElement, callback, abortSignal = undefined) {\\n  const debounceScroll = function (evt) {\\n    if (rAF) {\\n      return;\\n    }\\n    \u002F\u002F schedule an invocation of scroll for next animation frame.\\n    rAF = window.requestAnimationFrame(function viewAreaElementScrolled() {\\n      rAF = null;\\n\\n      const currentX = viewAreaElement.scrollLeft;\\n      const lastX = state.lastX;\\n      if (currentX !== lastX) {\\n        state.right = currentX > lastX;\\n      }\\n      state.lastX = currentX;\\n      const currentY = viewAreaElement.scrollTop;\\n      const lastY = state.lastY;\\n      if (currentY !== lastY) {\\n        state.down = currentY > lastY;\\n      }\\n      state.lastY = currentY;\\n      callback(state);\\n    });\\n  };\\n\\n  const state = {\\n    right: true,\\n    down: true,\\n    lastX: viewAreaElement.scrollLeft,\\n    lastY: viewAreaElement.scrollTop,\\n    _eventHandler: debounceScroll,\\n  };\\n\\n  let rAF = null;\\n  viewAreaElement.addEventListener(\\\"scroll\\\", debounceScroll, {\\n    useCapture: true,\\n    signal: abortSignal,\\n  });\\n  abortSignal?.addEventListener(\\n    \\\"abort\\\",\\n    () => window.cancelAnimationFrame(rAF),\\n    { once: true }\\n  );\\n  return state;\\n}\\n\\n\u002F**\\n * Helper function to parse query string (e.g. ?param1=value&param2=...).\\n * @param {string} query\\n * @returns {Map}\\n *\u002F\\nfunction parseQueryString(query) {\\n  const params = new Map();\\n  for (const [key, value] of new URLSearchParams(query)) {\\n    params.set(key.toLowerCase(), value);\\n  }\\n  return params;\\n}\\n\\nconst InvisibleCharsRegExp = \u002F[\\\\x00-\\\\x1F]\u002Fg;\\n\\n\u002F**\\n * @param {string} str\\n * @param {boolean} [replaceInvisible]\\n *\u002F\\nfunction removeNullCharacters(str, replaceInvisible = false) {\\n  if (!InvisibleCharsRegExp.test(str)) {\\n    return str;\\n  }\\n  if (replaceInvisible) {\\n    return str.replaceAll(InvisibleCharsRegExp, m => (m === \\\"\\\\x00\\\" ? \\\"\\\" : \\\" \\\"));\\n  }\\n  return str.replaceAll(\\\"\\\\x00\\\", \\\"\\\");\\n}\\n\\n\u002F**\\n * Use binary search to find the index of the first item in a given array which\\n * passes a given condition. The items are expected to be sorted in the sense\\n * that if the condition is true for one item in the array, then it is also true\\n * for all following items.\\n *\\n * @returns {number} Index of the first array element to pass the test,\\n *                   or |items.length| if no such element exists.\\n *\u002F\\nfunction binarySearchFirstItem(items, condition, start = 0) {\\n  let minIndex = start;\\n  let maxIndex = items.length - 1;\\n\\n  if (maxIndex \u003C 0 || !condition(items[maxIndex])) {\\n    return items.length;\\n  }\\n  if (condition(items[minIndex])) {\\n    return minIndex;\\n  }\\n\\n  while (minIndex \u003C maxIndex) {\\n    const currentIndex = (minIndex + maxIndex) >> 1;\\n    const currentItem = items[currentIndex];\\n    if (condition(currentItem)) {\\n      maxIndex = currentIndex;\\n    } else {\\n      minIndex = currentIndex + 1;\\n    }\\n  }\\n  return minIndex; \u002F* === maxIndex *\u002F\\n}\\n\\n\u002F**\\n *  Approximates float number as a fraction using Farey sequence (max order\\n *  of 8).\\n *  @param {number} x - Positive float number.\\n *  @returns {Array} Estimated fraction: the first array item is a numerator,\\n *                   the second one is a denominator.\\n *                   They are both natural numbers.\\n *\u002F\\nfunction approximateFraction(x) {\\n  \u002F\u002F Fast paths for int numbers or their inversions.\\n  if (Math.floor(x) === x) {\\n    return [x, 1];\\n  }\\n  const xinv = 1 \u002F x;\\n  const limit = 8;\\n  if (xinv > limit) {\\n    return [1, limit];\\n  } else if (Math.floor(xinv) === xinv) {\\n    return [1, xinv];\\n  }\\n\\n  const x_ = x > 1 ? xinv : x;\\n  \u002F\u002F a\u002Fb and c\u002Fd are neighbours in Farey sequence.\\n  let a = 0,\\n    b = 1,\\n    c = 1,\\n    d = 1;\\n  \u002F\u002F Limiting search to order 8.\\n  while (true) {\\n    \u002F\u002F Generating next term in sequence (order of q).\\n    const p = a + c,\\n      q = b + d;\\n    if (q > limit) {\\n      break;\\n    }\\n    if (x_ \u003C= p \u002F q) {\\n      c = p;\\n      d = q;\\n    } else {\\n      a = p;\\n      b = q;\\n    }\\n  }\\n  let result;\\n  \u002F\u002F Select closest of the neighbours to x.\\n  if (x_ - a \u002F b \u003C c \u002F d - x_) {\\n    result = x_ === x ? [a, b] : [b, a];\\n  } else {\\n    result = x_ === x ? [c, d] : [d, c];\\n  }\\n  return result;\\n}\\n\\n\u002F**\\n * @param {number} x - A positive number to round to a multiple of `div`.\\n * @param {number} div - A natural number.\\n *\u002F\\nfunction floorToDivide(x, div) {\\n  return x - (x % div);\\n}\\n\\n\u002F**\\n * @typedef {Object} GetPageSizeInchesParameters\\n * @property {number[]} view\\n * @property {number} userUnit\\n * @property {number} rotate\\n *\u002F\\n\\n\u002F**\\n * @typedef {Object} PageSize\\n * @property {number} width - In inches.\\n * @property {number} height - In inches.\\n *\u002F\\n\\n\u002F**\\n * Gets the size of the specified page, converted from PDF units to inches.\\n * @param {GetPageSizeInchesParameters} params\\n * @returns {PageSize}\\n *\u002F\\nfunction getPageSizeInches({ view, userUnit, rotate }) {\\n  const [x1, y1, x2, y2] = view;\\n  \u002F\u002F We need to take the page rotation into account as well.\\n  const changeOrientation = rotate % 180 !== 0;\\n\\n  const width = ((x2 - x1) \u002F 72) * userUnit;\\n  const height = ((y2 - y1) \u002F 72) * userUnit;\\n\\n  return {\\n    width: changeOrientation ? height : width,\\n    height: changeOrientation ? width : height,\\n  };\\n}\\n\\n\u002F**\\n * Helper function for getVisibleElements.\\n *\\n * @param {number} index - initial guess at the first visible element\\n * @param {Array} views - array of pages, into which `index` is an index\\n * @param {number} top - the top of the scroll pane\\n * @returns {number} less than or equal to `index` that is definitely at or\\n *   before the first visible element in `views`, but not by too much. (Usually,\\n *   this will be the first element in the first partially visible row in\\n *   `views`, although sometimes it goes back one row further.)\\n *\u002F\\nfunction backtrackBeforeAllVisibleElements(index, views, top) {\\n  \u002F\u002F binarySearchFirstItem's assumption is that the input is ordered, with only\\n  \u002F\u002F one index where the conditions flips from false to true: [false ...,\\n  \u002F\u002F true...]. With vertical scrolling and spreads, it is possible to have\\n  \u002F\u002F [false ..., true, false, true ...]. With wrapped scrolling we can have a\\n  \u002F\u002F similar sequence, with many more mixed true and false in the middle.\\n  \u002F\u002F\\n  \u002F\u002F So there is no guarantee that the binary search yields the index of the\\n  \u002F\u002F first visible element. It could have been any of the other visible elements\\n  \u002F\u002F that were preceded by a hidden element.\\n\\n  \u002F\u002F Of course, if either this element or the previous (hidden) element is also\\n  \u002F\u002F the first element, there's nothing to worry about.\\n  if (index \u003C 2) {\\n    return index;\\n  }\\n\\n  \u002F\u002F That aside, the possible cases are represented below.\\n  \u002F\u002F\\n  \u002F\u002F     ****  = fully hidden\\n  \u002F\u002F     A*B*  = mix of partially visible and\u002For hidden pages\\n  \u002F\u002F     CDEF  = fully visible\\n  \u002F\u002F\\n  \u002F\u002F (1) Binary search could have returned A, in which case we can stop.\\n  \u002F\u002F (2) Binary search could also have returned B, in which case we need to\\n  \u002F\u002F check the whole row.\\n  \u002F\u002F (3) Binary search could also have returned C, in which case we need to\\n  \u002F\u002F check the whole previous row.\\n  \u002F\u002F\\n  \u002F\u002F There's one other possibility:\\n  \u002F\u002F\\n  \u002F\u002F     ****  = fully hidden\\n  \u002F\u002F     ABCD  = mix of fully and\u002For partially visible pages\\n  \u002F\u002F\\n  \u002F\u002F (4) Binary search could only have returned A.\\n\\n  \u002F\u002F Initially assume that we need to find the beginning of the current row\\n  \u002F\u002F (case 1, 2, or 4), which means finding a page that is above the current\\n  \u002F\u002F page's top. If the found page is partially visible, we're definitely not in\\n  \u002F\u002F case 3, and this assumption is correct.\\n  let elt = views[index].div;\\n  let pageTop = elt.offsetTop + elt.clientTop;\\n\\n  if (pageTop >= top) {\\n    \u002F\u002F The found page is fully visible, so we're actually either in case 3 or 4,\\n    \u002F\u002F and unfortunately we can't tell the difference between them without\\n    \u002F\u002F scanning the entire previous row, so we just conservatively assume that\\n    \u002F\u002F we do need to backtrack to that row. In both cases, the previous page is\\n    \u002F\u002F in the previous row, so use its top instead.\\n    elt = views[index - 1].div;\\n    pageTop = elt.offsetTop + elt.clientTop;\\n  }\\n\\n  \u002F\u002F Now we backtrack to the first page that still has its bottom below\\n  \u002F\u002F `pageTop`, which is the top of a page in the first visible row (unless\\n  \u002F\u002F we're in case 4, in which case it's the row before that).\\n  \u002F\u002F `index` is found by binary search, so the page at `index - 1` is\\n  \u002F\u002F invisible and we can start looking for potentially visible pages from\\n  \u002F\u002F `index - 2`. (However, if this loop terminates on its first iteration,\\n  \u002F\u002F which is the case when pages are stacked vertically, `index` should remain\\n  \u002F\u002F unchanged, so we use a distinct loop variable.)\\n  for (let i = index - 2; i >= 0; --i) {\\n    elt = views[i].div;\\n    if (elt.offsetTop + elt.clientTop + elt.clientHeight \u003C= pageTop) {\\n      \u002F\u002F We have reached the previous row, so stop now.\\n      \u002F\u002F This loop is expected to terminate relatively quickly because the\\n      \u002F\u002F number of pages per row is expected to be small.\\n      break;\\n    }\\n    index = i;\\n  }\\n  return index;\\n}\\n\\n\u002F**\\n * @typedef {Object} GetVisibleElementsParameters\\n * @property {HTMLElement} scrollEl - A container that can possibly scroll.\\n * @property {Array} views - Objects with a `div` property that contains an\\n *   HTMLElement, which should all be descendants of `scrollEl` satisfying the\\n *   relevant layout assumptions.\\n * @property {boolean} sortByVisibility - If `true`, the returned elements are\\n *   sorted in descending order of the percent of their padding box that is\\n *   visible. The default value is `false`.\\n * @property {boolean} horizontal - If `true`, the elements are assumed to be\\n *   laid out horizontally instead of vertically. The default value is `false`.\\n * @property {boolean} rtl - If `true`, the `scrollEl` container is assumed to\\n *   be in right-to-left mode. The default value is `false`.\\n *\u002F\\n\\n\u002F**\\n * Generic helper to find out what elements are visible within a scroll pane.\\n *\\n * Well, pretty generic. There are some assumptions placed on the elements\\n * referenced by `views`:\\n *   - If `horizontal`, no left of any earlier element is to the right of the\\n *     left of any later element.\\n *   - Otherwise, `views` can be split into contiguous rows where, within a row,\\n *     no top of any element is below the bottom of any other element, and\\n *     between rows, no bottom of any element in an earlier row is below the\\n *     top of any element in a later row.\\n *\\n * (Here, top, left, etc. all refer to the padding edge of the element in\\n * question. For pages, that ends up being equivalent to the bounding box of the\\n * rendering canvas. Earlier and later refer to index in `views`, not page\\n * layout.)\\n *\\n * @param {GetVisibleElementsParameters} params\\n * @returns {Object} `{ first, last, views: [{ id, x, y, view, percent }] }`\\n *\u002F\\nfunction getVisibleElements({\\n  scrollEl,\\n  views,\\n  sortByVisibility = false,\\n  horizontal = false,\\n  rtl = false,\\n}) {\\n  const top = scrollEl.scrollTop,\\n    bottom = top + scrollEl.clientHeight;\\n  const left = scrollEl.scrollLeft,\\n    right = left + scrollEl.clientWidth;\\n\\n  \u002F\u002F Throughout this \\\"generic\\\" function, comments will assume we're working with\\n  \u002F\u002F PDF document pages, which is the most important and complex case. In this\\n  \u002F\u002F case, the visible elements we're actually interested is the page canvas,\\n  \u002F\u002F which is contained in a wrapper which adds no padding\u002Fborder\u002Fmargin, which\\n  \u002F\u002F is itself contained in `view.div` which adds no padding (but does add a\\n  \u002F\u002F border). So, as specified in this function's doc comment, this function\\n  \u002F\u002F does all of its work on the padding edge of the provided views, starting at\\n  \u002F\u002F offsetLeft\u002FTop (which includes margin) and adding clientLeft\u002FTop (which is\\n  \u002F\u002F the border). Adding clientWidth\u002FHeight gets us the bottom-right corner of\\n  \u002F\u002F the padding edge.\\n  function isElementBottomAfterViewTop(view) {\\n    const element = view.div;\\n    const elementBottom =\\n      element.offsetTop + element.clientTop + element.clientHeight;\\n    return elementBottom > top;\\n  }\\n  function isElementNextAfterViewHorizontally(view) {\\n    const element = view.div;\\n    const elementLeft = element.offsetLeft + element.clientLeft;\\n    const elementRight = elementLeft + element.clientWidth;\\n    return rtl ? elementLeft \u003C right : elementRight > left;\\n  }\\n\\n  const visible = [],\\n    ids = new Set(),\\n    numViews = views.length;\\n  let firstVisibleElementInd = binarySearchFirstItem(\\n    views,\\n    horizontal\\n      ? isElementNextAfterViewHorizontally\\n      : isElementBottomAfterViewTop\\n  );\\n\\n  \u002F\u002F Please note the return value of the `binarySearchFirstItem` function when\\n  \u002F\u002F no valid element is found (hence the `firstVisibleElementInd` check below).\\n  if (\\n    firstVisibleElementInd > 0 &&\\n    firstVisibleElementInd \u003C numViews &&\\n    !horizontal\\n  ) {\\n    \u002F\u002F In wrapped scrolling (or vertical scrolling with spreads), with some page\\n    \u002F\u002F sizes, isElementBottomAfterViewTop doesn't satisfy the binary search\\n    \u002F\u002F condition: there can be pages with bottoms above the view top between\\n    \u002F\u002F pages with bottoms below. This function detects and corrects that error;\\n    \u002F\u002F see it for more comments.\\n    firstVisibleElementInd = backtrackBeforeAllVisibleElements(\\n      firstVisibleElementInd,\\n      views,\\n      top\\n    );\\n  }\\n\\n  \u002F\u002F lastEdge acts as a cutoff for us to stop looping, because we know all\\n  \u002F\u002F subsequent pages will be hidden.\\n  \u002F\u002F\\n  \u002F\u002F When using wrapped scrolling or vertical scrolling with spreads, we can't\\n  \u002F\u002F simply stop the first time we reach a page below the bottom of the view;\\n  \u002F\u002F the tops of subsequent pages on the same row could still be visible. In\\n  \u002F\u002F horizontal scrolling, we don't have that issue, so we can stop as soon as\\n  \u002F\u002F we pass `right`, without needing the code below that handles the -1 case.\\n  let lastEdge = horizontal ? right : -1;\\n\\n  for (let i = firstVisibleElementInd; i \u003C numViews; i++) {\\n    const view = views[i],\\n      element = view.div;\\n    const currentWidth = element.offsetLeft + element.clientLeft;\\n    const currentHeight = element.offsetTop + element.clientTop;\\n    const viewWidth = element.clientWidth,\\n      viewHeight = element.clientHeight;\\n    const viewRight = currentWidth + viewWidth;\\n    const viewBottom = currentHeight + viewHeight;\\n\\n    if (lastEdge === -1) {\\n      \u002F\u002F As commented above, this is only needed in non-horizontal cases.\\n      \u002F\u002F Setting lastEdge to the bottom of the first page that is partially\\n      \u002F\u002F visible ensures that the next page fully below lastEdge is on the\\n      \u002F\u002F next row, which has to be fully hidden along with all subsequent rows.\\n      if (viewBottom >= bottom) {\\n        lastEdge = viewBottom;\\n      }\\n    } else if ((horizontal ? currentWidth : currentHeight) > lastEdge) {\\n      break;\\n    }\\n\\n    if (\\n      viewBottom \u003C= top ||\\n      currentHeight >= bottom ||\\n      viewRight \u003C= left ||\\n      currentWidth >= right\\n    ) {\\n      continue;\\n    }\\n\\n    const minY = Math.max(0, top - currentHeight);\\n    const minX = Math.max(0, left - currentWidth);\\n\\n    const hiddenHeight = minY + Math.max(0, viewBottom - bottom);\\n    const hiddenWidth = minX + Math.max(0, viewRight - right);\\n\\n    const fractionHeight = (viewHeight - hiddenHeight) \u002F viewHeight,\\n      fractionWidth = (viewWidth - hiddenWidth) \u002F viewWidth;\\n    const percent = (fractionHeight * fractionWidth * 100) | 0;\\n\\n    visible.push({\\n      id: view.id,\\n      x: currentWidth,\\n      y: currentHeight,\\n      visibleArea:\\n        \u002F\u002F We only specify which part of the page is visible when it's not\\n        \u002F\u002F the full page, as there is no point in handling a partial page\\n        \u002F\u002F rendering otherwise.\\n        percent === 100\\n          ? null\\n          : {\\n              minX,\\n              minY,\\n              maxX: Math.min(viewRight, right) - currentWidth,\\n              maxY: Math.min(viewBottom, bottom) - currentHeight,\\n            },\\n      view,\\n      percent,\\n      widthPercent: (fractionWidth * 100) | 0,\\n    });\\n    ids.add(view.id);\\n  }\\n\\n  const first = visible[0],\\n    last = visible.at(-1);\\n\\n  if (sortByVisibility) {\\n    visible.sort(function (a, b) {\\n      const pc = a.percent - b.percent;\\n      if (Math.abs(pc) > 0.001) {\\n        return -pc;\\n      }\\n      return a.id - b.id; \u002F\u002F ensure stability\\n    });\\n  }\\n  return { first, last, views: visible, ids };\\n}\\n\\nfunction normalizeWheelEventDirection(evt) {\\n  let delta = Math.hypot(evt.deltaX, evt.deltaY);\\n  const angle = Math.atan2(evt.deltaY, evt.deltaX);\\n  if (-0.25 * Math.PI \u003C angle && angle \u003C 0.75 * Math.PI) {\\n    \u002F\u002F All that is left-up oriented has to change the sign.\\n    delta = -delta;\\n  }\\n  return delta;\\n}\\n\\nfunction normalizeWheelEventDelta(evt) {\\n  const deltaMode = evt.deltaMode; \u002F\u002F Avoid being affected by bug 1392460.\\n  let delta = normalizeWheelEventDirection(evt);\\n\\n  const MOUSE_PIXELS_PER_LINE = 30;\\n  const MOUSE_LINES_PER_PAGE = 30;\\n\\n  \u002F\u002F Converts delta to per-page units\\n  if (deltaMode === WheelEvent.DOM_DELTA_PIXEL) {\\n    delta \u002F= MOUSE_PIXELS_PER_LINE * MOUSE_LINES_PER_PAGE;\\n  } else if (deltaMode === WheelEvent.DOM_DELTA_LINE) {\\n    delta \u002F= MOUSE_LINES_PER_PAGE;\\n  }\\n  return delta;\\n}\\n\\nfunction isValidRotation(angle) {\\n  return Number.isInteger(angle) && angle % 90 === 0;\\n}\\n\\nfunction isValidScrollMode(mode) {\\n  return (\\n    Number.isInteger(mode) &&\\n    Object.values(ScrollMode).includes(mode) &&\\n    mode !== ScrollMode.UNKNOWN\\n  );\\n}\\n\\nfunction isValidSpreadMode(mode) {\\n  return (\\n    Number.isInteger(mode) &&\\n    Object.values(SpreadMode).includes(mode) &&\\n    mode !== SpreadMode.UNKNOWN\\n  );\\n}\\n\\nfunction isPortraitOrientation(size) {\\n  return size.width \u003C= size.height;\\n}\\n\\n\u002F**\\n * Promise that is resolved when DOM window becomes visible.\\n *\u002F\\nconst animationStarted = new Promise(function (resolve) {\\n  if (\\n    typeof PDFJSDev !== \\\"undefined\\\" &&\\n    PDFJSDev.test(\\\"LIB\\\") &&\\n    typeof window === \\\"undefined\\\"\\n  ) {\\n    \u002F\u002F Prevent \\\"ReferenceError: window is not defined\\\" errors when running the\\n    \u002F\u002F unit-tests in Node.js environments.\\n    setTimeout(resolve, 20);\\n    return;\\n  }\\n  window.requestAnimationFrame(resolve);\\n});\\n\\nconst docStyle =\\n  typeof PDFJSDev !== \\\"undefined\\\" &&\\n  PDFJSDev.test(\\\"LIB\\\") &&\\n  typeof document === \\\"undefined\\\"\\n    ? null\\n    : document.documentElement.style;\\n\\nclass ProgressBar {\\n  #classList = null;\\n\\n  #disableAutoFetchTimeout = null;\\n\\n  #percent = 0;\\n\\n  #style = null;\\n\\n  #visible = true;\\n\\n  constructor(bar) {\\n    this.#classList = bar.classList;\\n    this.#style = bar.style;\\n  }\\n\\n  get percent() {\\n    return this.#percent;\\n  }\\n\\n  set percent(val) {\\n    this.#percent = MathClamp(val, 0, 100);\\n\\n    if (isNaN(val)) {\\n      this.#classList.add(\\\"indeterminate\\\");\\n      return;\\n    }\\n    this.#classList.remove(\\\"indeterminate\\\");\\n\\n    this.#style.setProperty(\\\"--progressBar-percent\\\", `${this.#percent}%`);\\n  }\\n\\n  setWidth(viewer) {\\n    if (!viewer) {\\n      return;\\n    }\\n    const container = viewer.parentNode;\\n    const scrollbarWidth = container.offsetWidth - viewer.offsetWidth;\\n    if (scrollbarWidth > 0) {\\n      this.#style.setProperty(\\n        \\\"--progressBar-end-offset\\\",\\n        `${scrollbarWidth}px`\\n      );\\n    }\\n  }\\n\\n  setDisableAutoFetch(delay = \u002F* ms = *\u002F 5000) {\\n    if (this.#percent === 100 || isNaN(this.#percent)) {\\n      return;\\n    }\\n    if (this.#disableAutoFetchTimeout) {\\n      clearTimeout(this.#disableAutoFetchTimeout);\\n    }\\n    this.show();\\n\\n    this.#disableAutoFetchTimeout = setTimeout(() => {\\n      this.#disableAutoFetchTimeout = null;\\n      this.hide();\\n    }, delay);\\n  }\\n\\n  hide() {\\n    if (!this.#visible) {\\n      return;\\n    }\\n    this.#visible = false;\\n    this.#classList.add(\\\"hidden\\\");\\n  }\\n\\n  show() {\\n    if (this.#visible) {\\n      return;\\n    }\\n    this.#visible = true;\\n    this.#classList.remove(\\\"hidden\\\");\\n  }\\n}\\n\\n\u002F**\\n * Get the active or focused element in current DOM.\\n *\\n * Recursively search for the truly active or focused element in case there are\\n * shadow DOMs.\\n *\\n * @returns {Element} the truly active or focused element.\\n *\u002F\\nfunction getActiveOrFocusedElement() {\\n  let curRoot = document;\\n  let curActiveOrFocused =\\n    curRoot.activeElement || curRoot.querySelector(\\\":focus\\\");\\n\\n  while (curActiveOrFocused?.shadowRoot) {\\n    curRoot = curActiveOrFocused.shadowRoot;\\n    curActiveOrFocused =\\n      curRoot.activeElement || curRoot.querySelector(\\\":focus\\\");\\n  }\\n\\n  return curActiveOrFocused;\\n}\\n\\n\u002F**\\n * Converts API PageLayout values to the format used by `BaseViewer`.\\n * @param {string} layout - The API PageLayout value.\\n * @returns {Object}\\n *\u002F\\nfunction apiPageLayoutToViewerModes(layout) {\\n  let scrollMode = ScrollMode.VERTICAL,\\n    spreadMode = SpreadMode.NONE;\\n\\n  switch (layout) {\\n    case \\\"SinglePage\\\":\\n      scrollMode = ScrollMode.PAGE;\\n      break;\\n    case \\\"OneColumn\\\":\\n      break;\\n    case \\\"TwoPageLeft\\\":\\n      scrollMode = ScrollMode.PAGE;\\n    \u002F* falls through *\u002F\\n    case \\\"TwoColumnLeft\\\":\\n      spreadMode = SpreadMode.ODD;\\n      break;\\n    case \\\"TwoPageRight\\\":\\n      scrollMode = ScrollMode.PAGE;\\n    \u002F* falls through *\u002F\\n    case \\\"TwoColumnRight\\\":\\n      spreadMode = SpreadMode.EVEN;\\n      break;\\n  }\\n  return { scrollMode, spreadMode };\\n}\\n\\n\u002F**\\n * Converts API PageMode values to the format used by `PDFSidebar`.\\n * NOTE: There's also a \\\"FullScreen\\\" parameter which is not possible to support,\\n *       since the Fullscreen API used in browsers requires that entering\\n *       fullscreen mode only occurs as a result of a user-initiated event.\\n * @param {string} mode - The API PageMode value.\\n * @returns {number} A value from {SidebarView}.\\n *\u002F\\nfunction apiPageModeToSidebarView(mode) {\\n  switch (mode) {\\n    case \\\"UseNone\\\":\\n      return SidebarView.NONE;\\n    case \\\"UseThumbs\\\":\\n      return SidebarView.THUMBS;\\n    case \\\"UseOutlines\\\":\\n      return SidebarView.OUTLINE;\\n    case \\\"UseAttachments\\\":\\n      return SidebarView.ATTACHMENTS;\\n    case \\\"UseOC\\\":\\n      return SidebarView.LAYERS;\\n  }\\n  return SidebarView.NONE; \u002F\u002F Default value.\\n}\\n\\nfunction toggleCheckedBtn(button, toggle, view = null) {\\n  button.classList.toggle(\\\"toggled\\\", toggle);\\n  button.setAttribute(\\\"aria-checked\\\", toggle);\\n\\n  view?.classList.toggle(\\\"hidden\\\", !toggle);\\n}\\n\\nfunction toggleExpandedBtn(button, toggle, view = null) {\\n  button.classList.toggle(\\\"toggled\\\", toggle);\\n  button.setAttribute(\\\"aria-expanded\\\", toggle);\\n\\n  view?.classList.toggle(\\\"hidden\\\", !toggle);\\n}\\n\\n\u002F\u002F In Firefox, the css calc function uses f32 precision but the Chrome or Safari\\n\u002F\u002F are using f64 one. So in order to have the same rendering in all browsers, we\\n\u002F\u002F need to use the right precision in order to have correct dimensions.\\nconst calcRound =\\n  typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")\\n    ? Math.fround\\n    : (function () {\\n        if (\\n          typeof PDFJSDev !== \\\"undefined\\\" &&\\n          PDFJSDev.test(\\\"LIB\\\") &&\\n          typeof document === \\\"undefined\\\"\\n        ) {\\n          return x => x;\\n        }\\n        const e = document.createElement(\\\"div\\\");\\n        e.style.width = \\\"round(down, calc(1.6666666666666665 * 792px), 1px)\\\";\\n        return e.style.width === \\\"calc(1320px)\\\" ? Math.fround : x => x;\\n      })();\\n\\nexport {\\n  animationStarted,\\n  apiPageLayoutToViewerModes,\\n  apiPageModeToSidebarView,\\n  approximateFraction,\\n  AutoPrintRegExp,\\n  backtrackBeforeAllVisibleElements, \u002F\u002F only exported for testing\\n  binarySearchFirstItem,\\n  calcRound,\\n  CursorTool,\\n  DEFAULT_SCALE,\\n  DEFAULT_SCALE_DELTA,\\n  DEFAULT_SCALE_VALUE,\\n  docStyle,\\n  floorToDivide,\\n  getActiveOrFocusedElement,\\n  getPageSizeInches,\\n  getVisibleElements,\\n  isPortraitOrientation,\\n  isValidRotation,\\n  isValidScrollMode,\\n  isValidSpreadMode,\\n  MAX_AUTO_SCALE,\\n  MAX_SCALE,\\n  MIN_SCALE,\\n  normalizeWheelEventDelta,\\n  normalizeWheelEventDirection,\\n  parseQueryString,\\n  PresentationModeState,\\n  ProgressBar,\\n  removeNullCharacters,\\n  RenderingStates,\\n  SCROLLBAR_PADDING,\\n  scrollIntoView,\\n  ScrollMode,\\n  SidebarView,\\n  SpreadMode,\\n  TextLayerMode,\\n  toggleCheckedBtn,\\n  toggleExpandedBtn,\\n  UNKNOWN_SCALE,\\n  VERTICAL_PADDING,\\n  watchScroll,\\n};\\n\",\"\u002F* Copyright 2018 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nif (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n  \u002F\u002F eslint-disable-next-line no-var\\n  var compatParams = new Map();\\n  if (\\n    typeof PDFJSDev !== \\\"undefined\\\" &&\\n    PDFJSDev.test(\\\"LIB\\\") &&\\n    !globalThis.navigator?.language\\n  ) {\\n    globalThis.navigator = {\\n      language: \\\"en-US\\\",\\n      maxTouchPoints: 1,\\n      platform: \\\"\\\",\\n      userAgent: \\\"\\\",\\n    };\\n  }\\n  const { maxTouchPoints, platform, userAgent } = navigator;\\n\\n  const isAndroid = \u002FAndroid\u002F.test(userAgent);\\n  const isIOS =\\n    \u002F\\\\b(iPad|iPhone|iPod)(?=;)\u002F.test(userAgent) ||\\n    (platform === \\\"MacIntel\\\" && maxTouchPoints > 1);\\n\\n  \u002F\u002F Limit canvas size to 5 mega-pixels on mobile.\\n  \u002F\u002F Support: Android, iOS\\n  (function () {\\n    if (isIOS || isAndroid) {\\n      compatParams.set(\\\"maxCanvasPixels\\\", 5242880);\\n    }\\n  })();\\n\\n  \u002F\u002F Don't use system fonts on Android (issue 18210).\\n  \u002F\u002F Support: Android\\n  (function () {\\n    if (isAndroid) {\\n      compatParams.set(\\\"useSystemFonts\\\", false);\\n    }\\n  })();\\n}\\n\\nconst OptionKind = {\\n  BROWSER: 0x01,\\n  VIEWER: 0x02,\\n  API: 0x04,\\n  WORKER: 0x08,\\n  EVENT_DISPATCH: 0x10,\\n  PREFERENCE: 0x80,\\n};\\n\\n\u002F\u002F Should only be used with options that allow multiple types.\\nconst Type = {\\n  BOOLEAN: 0x01,\\n  NUMBER: 0x02,\\n  OBJECT: 0x04,\\n  STRING: 0x08,\\n  UNDEFINED: 0x10,\\n};\\n\\n\u002F**\\n * NOTE: These options are used to generate the `default_preferences.json` file,\\n *       see `OptionKind.PREFERENCE`, hence the values below must use only\\n *       primitive types and cannot rely on any imported types.\\n *\u002F\\nconst defaultOptions = {\\n  allowedGlobalEvents: {\\n    \u002F** @type {Object} *\u002F\\n    value: null,\\n    kind: OptionKind.BROWSER,\\n  },\\n  canvasMaxAreaInBytes: {\\n    \u002F** @type {number} *\u002F\\n    value: -1,\\n    kind: OptionKind.BROWSER + OptionKind.API,\\n  },\\n  isInAutomation: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.BROWSER,\\n  },\\n  localeProperties: {\\n    \u002F** @type {Object} *\u002F\\n    value:\\n      typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")\\n        ? { lang: navigator.language || \\\"en-US\\\" }\\n        : null,\\n    kind: OptionKind.BROWSER,\\n  },\\n  maxCanvasDim: {\\n    \u002F** @type {number} *\u002F\\n    value: 32767,\\n    kind: OptionKind.BROWSER + OptionKind.VIEWER,\\n  },\\n  nimbusDataStr: {\\n    \u002F** @type {string} *\u002F\\n    value: \\\"\\\",\\n    kind: OptionKind.BROWSER,\\n  },\\n  supportsCaretBrowsingMode: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.BROWSER,\\n  },\\n  supportsDocumentFonts: {\\n    \u002F** @type {boolean} *\u002F\\n    value: true,\\n    kind: OptionKind.BROWSER,\\n  },\\n  supportsIntegratedFind: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.BROWSER,\\n  },\\n  supportsMouseWheelZoomCtrlKey: {\\n    \u002F** @type {boolean} *\u002F\\n    value: true,\\n    kind: OptionKind.BROWSER,\\n  },\\n  supportsMouseWheelZoomMetaKey: {\\n    \u002F** @type {boolean} *\u002F\\n    value: true,\\n    kind: OptionKind.BROWSER,\\n  },\\n  supportsPinchToZoom: {\\n    \u002F** @type {boolean} *\u002F\\n    value: true,\\n    kind: OptionKind.BROWSER,\\n  },\\n  supportsPrinting: {\\n    \u002F** @type {boolean} *\u002F\\n    value: true,\\n    kind: OptionKind.BROWSER,\\n  },\\n  toolbarDensity: {\\n    \u002F** @type {number} *\u002F\\n    value: 0, \u002F\u002F 0 = \\\"normal\\\", 1 = \\\"compact\\\", 2 = \\\"touch\\\"\\n    kind: OptionKind.BROWSER + OptionKind.EVENT_DISPATCH,\\n  },\\n\\n  altTextLearnMoreUrl: {\\n    \u002F** @type {string} *\u002F\\n    value:\\n      typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")\\n        ? \\\"https:\u002F\u002Fsupport.mozilla.org\u002F1\u002Ffirefox\u002F%VERSION%\u002F%OS%\u002F%LOCALE%\u002Fpdf-alt-text\\\"\\n        : \\\"\\\",\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  annotationEditorMode: {\\n    \u002F** @type {number} *\u002F\\n    value: 0,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  annotationMode: {\\n    \u002F** @type {number} *\u002F\\n    value: 2,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  capCanvasAreaFactor: {\\n    \u002F** @type {number} *\u002F\\n    value: 200,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  cursorToolOnLoad: {\\n    \u002F** @type {number} *\u002F\\n    value: 0,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  debuggerSrc: {\\n    \u002F** @type {string} *\u002F\\n    value: \\\".\u002Fdebugger.js\\\",\\n    kind: OptionKind.VIEWER,\\n  },\\n  defaultZoomDelay: {\\n    \u002F** @type {number} *\u002F\\n    value: 400,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  defaultZoomValue: {\\n    \u002F** @type {string} *\u002F\\n    value: \\\"\\\",\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  disableHistory: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.VIEWER,\\n  },\\n  disablePageLabels: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  enableAltText: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  enableAltTextModelDownload: {\\n    \u002F** @type {boolean} *\u002F\\n    value: true,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE + OptionKind.EVENT_DISPATCH,\\n  },\\n  enableAutoLinking: {\\n    \u002F** @type {boolean} *\u002F\\n    value: true,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  enableDetailCanvas: {\\n    \u002F** @type {boolean} *\u002F\\n    value: true,\\n    kind: OptionKind.VIEWER,\\n  },\\n  enableGuessAltText: {\\n    \u002F** @type {boolean} *\u002F\\n    value: true,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE + OptionKind.EVENT_DISPATCH,\\n  },\\n  enableHighlightFloatingButton: {\\n    \u002F\u002F We'll probably want to make some experiments before enabling this\\n    \u002F\u002F in Firefox release, but it has to be temporary.\\n    \u002F\u002F TODO: remove it when unnecessary.\\n    \u002F** @type {boolean} *\u002F\\n    value: typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\"),\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  enableNewAltTextWhenAddingImage: {\\n    \u002F** @type {boolean} *\u002F\\n    value: true,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  enablePermissions: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  enablePrintAutoRotate: {\\n    \u002F** @type {boolean} *\u002F\\n    value: true,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  enableScripting: {\\n    \u002F** @type {boolean} *\u002F\\n    value: typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"CHROME\\\"),\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  enableSignatureEditor: {\\n    \u002F** @type {boolean} *\u002F\\n    value: typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\"),\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  enableUpdatedAddImage: {\\n    \u002F\u002F We'll probably want to make some experiments before enabling this\\n    \u002F\u002F in Firefox release, but it has to be temporary.\\n    \u002F\u002F TODO: remove it when unnecessary.\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  externalLinkRel: {\\n    \u002F** @type {string} *\u002F\\n    value: \\\"noopener noreferrer nofollow\\\",\\n    kind: OptionKind.VIEWER,\\n  },\\n  externalLinkTarget: {\\n    \u002F** @type {number} *\u002F\\n    value: 0,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  highlightEditorColors: {\\n    \u002F** @type {string} *\u002F\\n    value: \\\"yellow=#FFFF98,green=#53FFBC,blue=#80EBFF,pink=#FFCBE6,red=#FF4F5F\\\",\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  historyUpdateUrl: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  ignoreDestinationZoom: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  imageResourcesPath: {\\n    \u002F** @type {string} *\u002F\\n    value:\\n      typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")\\n        ? \\\"resource:\u002F\u002Fpdf.js\u002Fweb\u002Fimages\u002F\\\"\\n        : \\\".\u002Fimages\u002F\\\",\\n    kind: OptionKind.VIEWER,\\n  },\\n  maxCanvasPixels: {\\n    \u002F** @type {number} *\u002F\\n    value: 2 ** 25,\\n    kind: OptionKind.VIEWER,\\n  },\\n  minDurationToUpdateCanvas: {\\n    \u002F** @type {number} *\u002F\\n    value: 500, \u002F\u002F ms\\n    kind: OptionKind.VIEWER,\\n  },\\n  forcePageColors: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  pageColorsBackground: {\\n    \u002F** @type {string} *\u002F\\n    value: \\\"Canvas\\\",\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  pageColorsForeground: {\\n    \u002F** @type {string} *\u002F\\n    value: \\\"CanvasText\\\",\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  pdfBugEnabled: {\\n    \u002F** @type {boolean} *\u002F\\n    value: typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\"),\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  printResolution: {\\n    \u002F** @type {number} *\u002F\\n    value: 150,\\n    kind: OptionKind.VIEWER,\\n  },\\n  sidebarViewOnLoad: {\\n    \u002F** @type {number} *\u002F\\n    value: -1,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  scrollModeOnLoad: {\\n    \u002F** @type {number} *\u002F\\n    value: -1,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  spreadModeOnLoad: {\\n    \u002F** @type {number} *\u002F\\n    value: -1,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  textLayerMode: {\\n    \u002F** @type {number} *\u002F\\n    value: 1,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  viewerCssTheme: {\\n    \u002F** @type {number} *\u002F\\n    value: typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"CHROME\\\") ? 2 : 0,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  viewOnLoad: {\\n    \u002F** @type {boolean} *\u002F\\n    value: 0,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n\\n  cMapPacked: {\\n    \u002F** @type {boolean} *\u002F\\n    value: true,\\n    kind: OptionKind.API,\\n  },\\n  cMapUrl: {\\n    \u002F** @type {string} *\u002F\\n    value:\\n      \u002F\u002F eslint-disable-next-line no-nested-ternary\\n      typeof PDFJSDev === \\\"undefined\\\"\\n        ? \\\"..\u002Fexternal\u002Fbcmaps\u002F\\\"\\n        : PDFJSDev.test(\\\"MOZCENTRAL\\\")\\n          ? \\\"resource:\u002F\u002Fpdf.js\u002Fweb\u002Fcmaps\u002F\\\"\\n          : \\\"..\u002Fweb\u002Fcmaps\u002F\\\",\\n    kind: OptionKind.API,\\n  },\\n  disableAutoFetch: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.API + OptionKind.PREFERENCE,\\n  },\\n  disableFontFace: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.API + OptionKind.PREFERENCE,\\n  },\\n  disableRange: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.API + OptionKind.PREFERENCE,\\n  },\\n  disableStream: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.API + OptionKind.PREFERENCE,\\n  },\\n  docBaseUrl: {\\n    \u002F** @type {string} *\u002F\\n    value:\\n      typeof PDFJSDev === \\\"undefined\\\"\\n        ? \u002F\u002F NOTE: We cannot use the `updateUrlHash` function here, because of\\n          \u002F\u002F the default preferences generation (see `gulpfile.js`).\\n          \u002F\u002F However, the following line is *only* used in development mode.\\n          document.URL.split(\\\"#\\\", 1)[0]\\n        : \\\"\\\",\\n    kind: OptionKind.API,\\n  },\\n  enableHWA: {\\n    \u002F** @type {boolean} *\u002F\\n    value: typeof PDFJSDev !== \\\"undefined\\\" && !PDFJSDev.test(\\\"MOZCENTRAL\\\"),\\n    kind: OptionKind.API + OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  },\\n  enableXfa: {\\n    \u002F** @type {boolean} *\u002F\\n    value: true,\\n    kind: OptionKind.API + OptionKind.PREFERENCE,\\n  },\\n  fontExtraProperties: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.API,\\n  },\\n  iccUrl: {\\n    \u002F** @type {string} *\u002F\\n    value:\\n      \u002F\u002F eslint-disable-next-line no-nested-ternary\\n      typeof PDFJSDev === \\\"undefined\\\"\\n        ? \\\"..\u002Fexternal\u002Ficcs\u002F\\\"\\n        : PDFJSDev.test(\\\"MOZCENTRAL\\\")\\n          ? \\\"resource:\u002F\u002Fpdf.js\u002Fweb\u002Ficcs\u002F\\\"\\n          : \\\"..\u002Fweb\u002Ficcs\u002F\\\",\\n    kind: OptionKind.API,\\n  },\\n  isEvalSupported: {\\n    \u002F** @type {boolean} *\u002F\\n    value: true,\\n    kind: OptionKind.API,\\n  },\\n  isOffscreenCanvasSupported: {\\n    \u002F** @type {boolean} *\u002F\\n    value: true,\\n    kind: OptionKind.API,\\n  },\\n  maxImageSize: {\\n    \u002F** @type {number} *\u002F\\n    value: -1,\\n    kind: OptionKind.API,\\n  },\\n  pdfBug: {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.API,\\n  },\\n  standardFontDataUrl: {\\n    \u002F** @type {string} *\u002F\\n    value:\\n      \u002F\u002F eslint-disable-next-line no-nested-ternary\\n      typeof PDFJSDev === \\\"undefined\\\"\\n        ? \\\"..\u002Fexternal\u002Fstandard_fonts\u002F\\\"\\n        : PDFJSDev.test(\\\"MOZCENTRAL\\\")\\n          ? \\\"resource:\u002F\u002Fpdf.js\u002Fweb\u002Fstandard_fonts\u002F\\\"\\n          : \\\"..\u002Fweb\u002Fstandard_fonts\u002F\\\",\\n    kind: OptionKind.API,\\n  },\\n  useSystemFonts: {\\n    \u002F\u002F On Android, there is almost no chance to have the font we want so we\\n    \u002F\u002F don't use the system fonts in this case (bug 1882613).\\n    \u002F** @type {boolean|undefined} *\u002F\\n    value: (\\n      typeof PDFJSDev === \\\"undefined\\\"\\n        ? window.isGECKOVIEW\\n        : PDFJSDev.test(\\\"GECKOVIEW\\\")\\n    )\\n      ? false\\n      : undefined,\\n    kind: OptionKind.API,\\n    type: Type.BOOLEAN + Type.UNDEFINED,\\n  },\\n  verbosity: {\\n    \u002F** @type {number} *\u002F\\n    value: 1,\\n    kind: OptionKind.API,\\n  },\\n  wasmUrl: {\\n    \u002F** @type {string} *\u002F\\n    value:\\n      typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")\\n        ? \\\"resource:\u002F\u002Fpdf.js\u002Fweb\u002Fwasm\u002F\\\"\\n        : \\\"..\u002Fweb\u002Fwasm\u002F\\\",\\n    kind: OptionKind.API,\\n  },\\n\\n  workerPort: {\\n    \u002F** @type {Object} *\u002F\\n    value:\\n      typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")\\n        ? globalThis.pdfjsPreloadedWorker || null\\n        : null,\\n    kind: OptionKind.WORKER,\\n  },\\n  workerSrc: {\\n    \u002F** @type {string} *\u002F\\n    value:\\n      \u002F\u002F eslint-disable-next-line no-nested-ternary\\n      typeof PDFJSDev === \\\"undefined\\\"\\n        ? \\\"..\u002Fsrc\u002Fpdf.worker.js\\\"\\n        : PDFJSDev.test(\\\"MOZCENTRAL\\\")\\n          ? \\\"resource:\u002F\u002Fpdf.js\u002Fbuild\u002Fpdf.worker.js\\\"\\n          : \\\"..\u002Fbuild\u002Fpdf.worker.js\\\",\\n    kind: OptionKind.WORKER,\\n  },\\n};\\nif (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n  defaultOptions.defaultUrl = {\\n    \u002F** @type {string} *\u002F\\n    value:\\n      typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"CHROME\\\")\\n        ? \\\"\\\"\\n        : \\\"compressed.tracemonkey-pldi-09.pdf\\\",\\n    kind: OptionKind.VIEWER,\\n  };\\n  defaultOptions.sandboxBundleSrc = {\\n    \u002F** @type {string} *\u002F\\n    value:\\n      typeof PDFJSDev === \\\"undefined\\\"\\n        ? \\\"..\u002Fbuild\u002Fdev-sandbox\u002Fpdf.sandbox.js\\\"\\n        : \\\"..\u002Fbuild\u002Fpdf.sandbox.js\\\",\\n    kind: OptionKind.VIEWER,\\n  };\\n  defaultOptions.enableFakeMLManager = {\\n    \u002F** @type {boolean} *\u002F\\n    value: true,\\n    kind: OptionKind.VIEWER,\\n  };\\n}\\nif (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n  defaultOptions.disablePreferences = {\\n    \u002F** @type {boolean} *\u002F\\n    value: typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING\\\"),\\n    kind: OptionKind.VIEWER,\\n  };\\n} else if (PDFJSDev.test(\\\"CHROME\\\")) {\\n  defaultOptions.disableTelemetry = {\\n    \u002F** @type {boolean} *\u002F\\n    value: false,\\n    kind: OptionKind.VIEWER + OptionKind.PREFERENCE,\\n  };\\n}\\n\\nif (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING || LIB\\\")) {\\n  \u002F\u002F Ensure that the `defaultOptions` are correctly specified.\\n  for (const name in defaultOptions) {\\n    const { value, kind, type } = defaultOptions[name];\\n\\n    if (kind & OptionKind.PREFERENCE) {\\n      if (kind === OptionKind.PREFERENCE) {\\n        throw new Error(`Cannot use only \\\"PREFERENCE\\\" kind: ${name}`);\\n      }\\n      if (kind & OptionKind.BROWSER) {\\n        throw new Error(`Cannot mix \\\"PREFERENCE\\\" and \\\"BROWSER\\\" kind: ${name}`);\\n      }\\n      if (type !== undefined) {\\n        throw new Error(\\n          `Cannot have \\\\`type\\\\`-field for \\\"PREFERENCE\\\" kind: ${name}`\\n        );\\n      }\\n      if (typeof compatParams === \\\"object\\\" && compatParams.has(name)) {\\n        throw new Error(\\n          `Should not have compatibility-value for \\\"PREFERENCE\\\" kind: ${name}`\\n        );\\n      }\\n      \u002F\u002F Only \\\"simple\\\" preference-values are allowed.\\n      if (\\n        typeof value !== \\\"boolean\\\" &&\\n        typeof value !== \\\"string\\\" &&\\n        !Number.isInteger(value)\\n      ) {\\n        throw new Error(`Invalid value for \\\"PREFERENCE\\\" kind: ${name}`);\\n      }\\n    } else if (kind & OptionKind.BROWSER) {\\n      if (type !== undefined) {\\n        throw new Error(\\n          `Cannot have \\\\`type\\\\`-field for \\\"BROWSER\\\" kind: ${name}`\\n        );\\n      }\\n      if (typeof compatParams === \\\"object\\\" && compatParams.has(name)) {\\n        throw new Error(\\n          `Should not have compatibility-value for \\\"BROWSER\\\" kind: ${name}`\\n        );\\n      }\\n      if (value === undefined) {\\n        throw new Error(`Invalid value for \\\"BROWSER\\\" kind: ${name}`);\\n      }\\n    }\\n  }\\n}\\n\\nclass AppOptions {\\n  static eventBus;\\n\\n  static #opts = new Map();\\n\\n  static {\\n    \u002F\u002F Initialize all the user-options.\\n    for (const name in defaultOptions) {\\n      this.#opts.set(name, defaultOptions[name].value);\\n    }\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      \u002F\u002F Apply any compatibility-values to the user-options.\\n      for (const [name, value] of compatParams) {\\n        this.#opts.set(name, value);\\n      }\\n      this._hasInvokedSet = false;\\n\\n      this._checkDisablePreferences = () => {\\n        if (this.get(\\\"disablePreferences\\\")) {\\n          \u002F\u002F Give custom implementations of the default viewer a simpler way to\\n          \u002F\u002F opt-out of having the `Preferences` override existing `AppOptions`.\\n          return true;\\n        }\\n        if (this._hasInvokedSet) {\\n          console.warn(\\n            \\\"The Preferences may override manually set AppOptions; \\\" +\\n              'please use the \\\"disablePreferences\\\"-option to prevent that.'\\n          );\\n        }\\n        return false;\\n      };\\n    }\\n  }\\n\\n  constructor() {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      throw new Error(\\\"Cannot initialize AppOptions.\\\");\\n    }\\n  }\\n\\n  static get(name) {\\n    return this.#opts.get(name);\\n  }\\n\\n  static getAll(kind = null, defaultOnly = false) {\\n    const options = Object.create(null);\\n    for (const name in defaultOptions) {\\n      const defaultOpt = defaultOptions[name];\\n\\n      if (kind && !(kind & defaultOpt.kind)) {\\n        continue;\\n      }\\n      options[name] = !defaultOnly ? this.#opts.get(name) : defaultOpt.value;\\n    }\\n    return options;\\n  }\\n\\n  static set(name, value) {\\n    this.setAll({ [name]: value });\\n  }\\n\\n  static setAll(options, prefs = false) {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      this._hasInvokedSet ||= true;\\n    }\\n    let events;\\n\\n    for (const name in options) {\\n      const defaultOpt = defaultOptions[name],\\n        userOpt = options[name];\\n\\n      if (\\n        !defaultOpt ||\\n        !(\\n          typeof userOpt === typeof defaultOpt.value ||\\n          Type[(typeof userOpt).toUpperCase()] & defaultOpt.type\\n        )\\n      ) {\\n        continue;\\n      }\\n      const { kind } = defaultOpt;\\n\\n      if (\\n        prefs &&\\n        !(kind & OptionKind.BROWSER || kind & OptionKind.PREFERENCE)\\n      ) {\\n        continue;\\n      }\\n      if (this.eventBus && kind & OptionKind.EVENT_DISPATCH) {\\n        (events ||= new Map()).set(name, userOpt);\\n      }\\n      this.#opts.set(name, userOpt);\\n    }\\n\\n    if (events) {\\n      for (const [name, value] of events) {\\n        this.eventBus.dispatch(name.toLowerCase(), { source: this, value });\\n      }\\n    }\\n  }\\n}\\n\\nexport { AppOptions, OptionKind };\\n\",\"\u002F* Copyright 2015 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fevent_utils\\\").EventBus} EventBus *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IPDFLinkService} IPDFLinkService *\u002F\\n\\nimport { isValidExplicitDest } from \\\"pdfjs-lib\\\";\\nimport { parseQueryString } from \\\".\u002Fui_utils.js\\\";\\n\\nconst DEFAULT_LINK_REL = \\\"noopener noreferrer nofollow\\\";\\n\\nconst LinkTarget = {\\n  NONE: 0, \u002F\u002F Default value.\\n  SELF: 1,\\n  BLANK: 2,\\n  PARENT: 3,\\n  TOP: 4,\\n};\\n\\n\u002F**\\n * @typedef {Object} PDFLinkServiceOptions\\n * @property {EventBus} eventBus - The application event bus.\\n * @property {number} [externalLinkTarget] - Specifies the `target` attribute\\n *   for external links. Must use one of the values from {LinkTarget}.\\n *   Defaults to using no target.\\n * @property {string} [externalLinkRel] - Specifies the `rel` attribute for\\n *   external links. Defaults to stripping the referrer.\\n * @property {boolean} [ignoreDestinationZoom] - Ignores the zoom argument,\\n *   thus preserving the current zoom level in the viewer, when navigating\\n *   to internal destinations. The default value is `false`.\\n *\u002F\\n\\n\u002F**\\n * Performs navigation functions inside PDF, such as opening specified page,\\n * or destination.\\n * @implements {IPDFLinkService}\\n *\u002F\\nclass PDFLinkService {\\n  externalLinkEnabled = true;\\n\\n  \u002F**\\n   * @param {PDFLinkServiceOptions} options\\n   *\u002F\\n  constructor({\\n    eventBus,\\n    externalLinkTarget = null,\\n    externalLinkRel = null,\\n    ignoreDestinationZoom = false,\\n  } = {}) {\\n    this.eventBus = eventBus;\\n    this.externalLinkTarget = externalLinkTarget;\\n    this.externalLinkRel = externalLinkRel;\\n    this._ignoreDestinationZoom = ignoreDestinationZoom;\\n\\n    this.baseUrl = null;\\n    this.pdfDocument = null;\\n    this.pdfViewer = null;\\n    this.pdfHistory = null;\\n  }\\n\\n  setDocument(pdfDocument, baseUrl = null) {\\n    this.baseUrl = baseUrl;\\n    this.pdfDocument = pdfDocument;\\n  }\\n\\n  setViewer(pdfViewer) {\\n    this.pdfViewer = pdfViewer;\\n  }\\n\\n  setHistory(pdfHistory) {\\n    this.pdfHistory = pdfHistory;\\n  }\\n\\n  \u002F**\\n   * @type {number}\\n   *\u002F\\n  get pagesCount() {\\n    return this.pdfDocument ? this.pdfDocument.numPages : 0;\\n  }\\n\\n  \u002F**\\n   * @type {number}\\n   *\u002F\\n  get page() {\\n    return this.pdfDocument ? this.pdfViewer.currentPageNumber : 1;\\n  }\\n\\n  \u002F**\\n   * @param {number} value\\n   *\u002F\\n  set page(value) {\\n    if (this.pdfDocument) {\\n      this.pdfViewer.currentPageNumber = value;\\n    }\\n  }\\n\\n  \u002F**\\n   * @type {number}\\n   *\u002F\\n  get rotation() {\\n    return this.pdfDocument ? this.pdfViewer.pagesRotation : 0;\\n  }\\n\\n  \u002F**\\n   * @param {number} value\\n   *\u002F\\n  set rotation(value) {\\n    if (this.pdfDocument) {\\n      this.pdfViewer.pagesRotation = value;\\n    }\\n  }\\n\\n  \u002F**\\n   * @type {boolean}\\n   *\u002F\\n  get isInPresentationMode() {\\n    return this.pdfDocument ? this.pdfViewer.isInPresentationMode : false;\\n  }\\n\\n  \u002F**\\n   * This method will, when available, also update the browser history.\\n   *\\n   * @param {string|Array} dest - The named, or explicit, PDF destination.\\n   *\u002F\\n  async goToDestination(dest) {\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    let namedDest, explicitDest, pageNumber;\\n    if (typeof dest === \\\"string\\\") {\\n      namedDest = dest;\\n      explicitDest = await this.pdfDocument.getDestination(dest);\\n    } else {\\n      namedDest = null;\\n      explicitDest = await dest;\\n    }\\n    if (!Array.isArray(explicitDest)) {\\n      console.error(\\n        `goToDestination: \\\"${explicitDest}\\\" is not a valid destination array, for dest=\\\"${dest}\\\".`\\n      );\\n      return;\\n    }\\n    \u002F\u002F Dest array looks like that: \u003Cpage-ref> \u003C\u002FXYZ|\u002FFitXXX> \u003Cargs..>\\n    const [destRef] = explicitDest;\\n\\n    if (destRef && typeof destRef === \\\"object\\\") {\\n      pageNumber = this.pdfDocument.cachedPageNumber(destRef);\\n\\n      if (!pageNumber) {\\n        \u002F\u002F Fetch the page reference if it's not yet available. This could\\n        \u002F\u002F only occur during loading, before all pages have been resolved.\\n        try {\\n          pageNumber = (await this.pdfDocument.getPageIndex(destRef)) + 1;\\n        } catch {\\n          console.error(\\n            `goToDestination: \\\"${destRef}\\\" is not a valid page reference, for dest=\\\"${dest}\\\".`\\n          );\\n          return;\\n        }\\n      }\\n    } else if (Number.isInteger(destRef)) {\\n      pageNumber = destRef + 1;\\n    }\\n    if (!pageNumber || pageNumber \u003C 1 || pageNumber > this.pagesCount) {\\n      console.error(\\n        `goToDestination: \\\"${pageNumber}\\\" is not a valid page number, for dest=\\\"${dest}\\\".`\\n      );\\n      return;\\n    }\\n\\n    if (this.pdfHistory) {\\n      \u002F\u002F Update the browser history before scrolling the new destination into\\n      \u002F\u002F view, to be able to accurately capture the current document position.\\n      this.pdfHistory.pushCurrentPosition();\\n      this.pdfHistory.push({ namedDest, explicitDest, pageNumber });\\n    }\\n\\n    this.pdfViewer.scrollPageIntoView({\\n      pageNumber,\\n      destArray: explicitDest,\\n      ignoreDestinationZoom: this._ignoreDestinationZoom,\\n    });\\n  }\\n\\n  \u002F**\\n   * This method will, when available, also update the browser history.\\n   *\\n   * @param {number|string} val - The page number, or page label.\\n   *\u002F\\n  goToPage(val) {\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    const pageNumber =\\n      (typeof val === \\\"string\\\" && this.pdfViewer.pageLabelToPageNumber(val)) ||\\n      val | 0;\\n    if (\\n      !(\\n        Number.isInteger(pageNumber) &&\\n        pageNumber > 0 &&\\n        pageNumber \u003C= this.pagesCount\\n      )\\n    ) {\\n      console.error(`PDFLinkService.goToPage: \\\"${val}\\\" is not a valid page.`);\\n      return;\\n    }\\n\\n    if (this.pdfHistory) {\\n      \u002F\u002F Update the browser history before scrolling the new page into view,\\n      \u002F\u002F to be able to accurately capture the current document position.\\n      this.pdfHistory.pushCurrentPosition();\\n      this.pdfHistory.pushPage(pageNumber);\\n    }\\n\\n    this.pdfViewer.scrollPageIntoView({ pageNumber });\\n  }\\n\\n  \u002F**\\n   * Adds various attributes (href, title, target, rel) to hyperlinks.\\n   * @param {HTMLAnchorElement} link\\n   * @param {string} url\\n   * @param {boolean} [newWindow]\\n   *\u002F\\n  addLinkAttributes(link, url, newWindow = false) {\\n    if (!url || typeof url !== \\\"string\\\") {\\n      throw new Error('A valid \\\"url\\\" parameter must provided.');\\n    }\\n    const target = newWindow ? LinkTarget.BLANK : this.externalLinkTarget,\\n      rel = this.externalLinkRel;\\n\\n    if (this.externalLinkEnabled) {\\n      link.href = link.title = url;\\n    } else {\\n      link.href = \\\"\\\";\\n      link.title = `Disabled: ${url}`;\\n      link.onclick = () => false;\\n    }\\n\\n    let targetStr = \\\"\\\"; \u002F\u002F LinkTarget.NONE\\n    switch (target) {\\n      case LinkTarget.NONE:\\n        break;\\n      case LinkTarget.SELF:\\n        targetStr = \\\"_self\\\";\\n        break;\\n      case LinkTarget.BLANK:\\n        targetStr = \\\"_blank\\\";\\n        break;\\n      case LinkTarget.PARENT:\\n        targetStr = \\\"_parent\\\";\\n        break;\\n      case LinkTarget.TOP:\\n        targetStr = \\\"_top\\\";\\n        break;\\n    }\\n    link.target = targetStr;\\n\\n    link.rel = typeof rel === \\\"string\\\" ? rel : DEFAULT_LINK_REL;\\n  }\\n\\n  \u002F**\\n   * @param {string|Array} dest - The PDF destination object.\\n   * @returns {string} The hyperlink to the PDF object.\\n   *\u002F\\n  getDestinationHash(dest) {\\n    if (typeof dest === \\\"string\\\") {\\n      if (dest.length > 0) {\\n        return this.getAnchorUrl(\\\"#\\\" + escape(dest));\\n      }\\n    } else if (Array.isArray(dest)) {\\n      const str = JSON.stringify(dest);\\n      if (str.length > 0) {\\n        return this.getAnchorUrl(\\\"#\\\" + escape(str));\\n      }\\n    }\\n    return this.getAnchorUrl(\\\"\\\");\\n  }\\n\\n  \u002F**\\n   * Prefix the full url on anchor links to make sure that links are resolved\\n   * relative to the current URL instead of the one defined in \u003Cbase href>.\\n   * @param {string} anchor - The anchor hash, including the #.\\n   * @returns {string} The hyperlink to the PDF object.\\n   *\u002F\\n  getAnchorUrl(anchor) {\\n    return this.baseUrl ? this.baseUrl + anchor : anchor;\\n  }\\n\\n  \u002F**\\n   * @param {string} hash\\n   *\u002F\\n  setHash(hash) {\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    let pageNumber, dest;\\n    if (hash.includes(\\\"=\\\")) {\\n      const params = parseQueryString(hash);\\n      if (params.has(\\\"search\\\")) {\\n        const query = params.get(\\\"search\\\").replaceAll('\\\"', \\\"\\\"),\\n          phrase = params.get(\\\"phrase\\\") === \\\"true\\\";\\n\\n        this.eventBus.dispatch(\\\"findfromurlhash\\\", {\\n          source: this,\\n          query: phrase ? query : query.match(\u002F\\\\S+\u002Fg),\\n        });\\n      }\\n      \u002F\u002F borrowing syntax from \\\"Parameters for Opening PDF Files\\\"\\n      if (params.has(\\\"page\\\")) {\\n        pageNumber = params.get(\\\"page\\\") | 0 || 1;\\n      }\\n      if (params.has(\\\"zoom\\\")) {\\n        \u002F\u002F Build the destination array.\\n        const zoomArgs = params.get(\\\"zoom\\\").split(\\\",\\\"); \u002F\u002F scale,left,top\\n        const zoomArg = zoomArgs[0];\\n        const zoomArgNumber = parseFloat(zoomArg);\\n\\n        if (!zoomArg.includes(\\\"Fit\\\")) {\\n          \u002F\u002F If the zoomArg is a number, it has to get divided by 100. If it's\\n          \u002F\u002F a string, it should stay as it is.\\n          dest = [\\n            null,\\n            { name: \\\"XYZ\\\" },\\n            zoomArgs.length > 1 ? zoomArgs[1] | 0 : null,\\n            zoomArgs.length > 2 ? zoomArgs[2] | 0 : null,\\n            zoomArgNumber ? zoomArgNumber \u002F 100 : zoomArg,\\n          ];\\n        } else if (zoomArg === \\\"Fit\\\" || zoomArg === \\\"FitB\\\") {\\n          dest = [null, { name: zoomArg }];\\n        } else if (\\n          zoomArg === \\\"FitH\\\" ||\\n          zoomArg === \\\"FitBH\\\" ||\\n          zoomArg === \\\"FitV\\\" ||\\n          zoomArg === \\\"FitBV\\\"\\n        ) {\\n          dest = [\\n            null,\\n            { name: zoomArg },\\n            zoomArgs.length > 1 ? zoomArgs[1] | 0 : null,\\n          ];\\n        } else if (zoomArg === \\\"FitR\\\") {\\n          if (zoomArgs.length !== 5) {\\n            console.error(\\n              'PDFLinkService.setHash: Not enough parameters for \\\"FitR\\\".'\\n            );\\n          } else {\\n            dest = [\\n              null,\\n              { name: zoomArg },\\n              zoomArgs[1] | 0,\\n              zoomArgs[2] | 0,\\n              zoomArgs[3] | 0,\\n              zoomArgs[4] | 0,\\n            ];\\n          }\\n        } else {\\n          console.error(\\n            `PDFLinkService.setHash: \\\"${zoomArg}\\\" is not a valid zoom value.`\\n          );\\n        }\\n      }\\n      if (dest) {\\n        this.pdfViewer.scrollPageIntoView({\\n          pageNumber: pageNumber || this.page,\\n          destArray: dest,\\n          allowNegativeOffset: true,\\n        });\\n      } else if (pageNumber) {\\n        this.page = pageNumber; \u002F\u002F simple page\\n      }\\n      if (params.has(\\\"pagemode\\\")) {\\n        this.eventBus.dispatch(\\\"pagemode\\\", {\\n          source: this,\\n          mode: params.get(\\\"pagemode\\\"),\\n        });\\n      }\\n      \u002F\u002F Ensure that this parameter is *always* handled last, in order to\\n      \u002F\u002F guarantee that it won't be overridden (e.g. by the \\\"page\\\" parameter).\\n      if (params.has(\\\"nameddest\\\")) {\\n        this.goToDestination(params.get(\\\"nameddest\\\"));\\n      }\\n\\n      if (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n        return;\\n      }\\n      \u002F\u002F Support opening of PDF attachments in the Firefox PDF Viewer,\\n      \u002F\u002F which uses a couple of non-standard hash parameters; refer to\\n      \u002F\u002F `DownloadManager.openOrDownloadData` in the firefoxcom.js file.\\n      if (!params.has(\\\"filename\\\") || !params.has(\\\"filedest\\\")) {\\n        return;\\n      }\\n      hash = params.get(\\\"filedest\\\");\\n    }\\n\\n    \u002F\u002F Named (or explicit) destination.\\n    dest = unescape(hash);\\n    try {\\n      dest = JSON.parse(dest);\\n\\n      if (!Array.isArray(dest)) {\\n        \u002F\u002F Avoid incorrectly rejecting a valid named destination, such as\\n        \u002F\u002F e.g. \\\"4.3\\\" or \\\"true\\\", because `JSON.parse` converted its type.\\n        dest = dest.toString();\\n      }\\n    } catch {}\\n\\n    if (typeof dest === \\\"string\\\" || isValidExplicitDest(dest)) {\\n      this.goToDestination(dest);\\n      return;\\n    }\\n    console.error(\\n      `PDFLinkService.setHash: \\\"${unescape(hash)}\\\" is not a valid destination.`\\n    );\\n  }\\n\\n  \u002F**\\n   * @param {string} action\\n   *\u002F\\n  executeNamedAction(action) {\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    \u002F\u002F See PDF reference, table 8.45 - Named action\\n    switch (action) {\\n      case \\\"GoBack\\\":\\n        this.pdfHistory?.back();\\n        break;\\n\\n      case \\\"GoForward\\\":\\n        this.pdfHistory?.forward();\\n        break;\\n\\n      case \\\"NextPage\\\":\\n        this.pdfViewer.nextPage();\\n        break;\\n\\n      case \\\"PrevPage\\\":\\n        this.pdfViewer.previousPage();\\n        break;\\n\\n      case \\\"LastPage\\\":\\n        this.page = this.pagesCount;\\n        break;\\n\\n      case \\\"FirstPage\\\":\\n        this.page = 1;\\n        break;\\n\\n      default:\\n        break; \u002F\u002F No action according to spec\\n    }\\n\\n    this.eventBus.dispatch(\\\"namedaction\\\", {\\n      source: this,\\n      action,\\n    });\\n  }\\n\\n  \u002F**\\n   * @param {Object} action\\n   *\u002F\\n  async executeSetOCGState(action) {\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    const pdfDocument = this.pdfDocument,\\n      optionalContentConfig = await this.pdfViewer.optionalContentConfigPromise;\\n\\n    if (pdfDocument !== this.pdfDocument) {\\n      return; \u002F\u002F The document was closed while the optional content resolved.\\n    }\\n    optionalContentConfig.setOCGState(action);\\n\\n    this.pdfViewer.optionalContentConfigPromise = Promise.resolve(\\n      optionalContentConfig\\n    );\\n  }\\n}\\n\\n\u002F**\\n * @implements {IPDFLinkService}\\n *\u002F\\nclass SimpleLinkService extends PDFLinkService {\\n  setDocument(pdfDocument, baseUrl = null) {}\\n}\\n\\nexport { LinkTarget, PDFLinkService, SimpleLinkService };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nconst WaitOnType = {\\n  EVENT: \\\"event\\\",\\n  TIMEOUT: \\\"timeout\\\",\\n};\\n\\n\u002F**\\n * @typedef {Object} WaitOnEventOrTimeoutParameters\\n * @property {Object} target - The event target, can for example be:\\n *   `window`, `document`, a DOM element, or an {EventBus} instance.\\n * @property {string} name - The name of the event.\\n * @property {number} delay - The delay, in milliseconds, after which the\\n *   timeout occurs (if the event wasn't already dispatched).\\n *\u002F\\n\\n\u002F**\\n * Allows waiting for an event or a timeout, whichever occurs first.\\n * Can be used to ensure that an action always occurs, even when an event\\n * arrives late or not at all.\\n *\\n * @param {WaitOnEventOrTimeoutParameters}\\n * @returns {Promise} A promise that is resolved with a {WaitOnType} value.\\n *\u002F\\nasync function waitOnEventOrTimeout({ target, name, delay = 0 }) {\\n  if (\\n    typeof target !== \\\"object\\\" ||\\n    !(name && typeof name === \\\"string\\\") ||\\n    !(Number.isInteger(delay) && delay >= 0)\\n  ) {\\n    throw new Error(\\\"waitOnEventOrTimeout - invalid parameters.\\\");\\n  }\\n  const { promise, resolve } = Promise.withResolvers();\\n  const ac = new AbortController();\\n\\n  function handler(type) {\\n    ac.abort(); \u002F\u002F Remove event listener.\\n    clearTimeout(timeout);\\n\\n    resolve(type);\\n  }\\n\\n  const evtMethod = target instanceof EventBus ? \\\"_on\\\" : \\\"addEventListener\\\";\\n  target[evtMethod](name, handler.bind(null, WaitOnType.EVENT), {\\n    signal: ac.signal,\\n  });\\n\\n  const timeout = setTimeout(handler.bind(null, WaitOnType.TIMEOUT), delay);\\n\\n  return promise;\\n}\\n\\n\u002F**\\n * Simple event bus for an application. Listeners are attached using the `on`\\n * and `off` methods. To raise an event, the `dispatch` method shall be used.\\n *\u002F\\nclass EventBus {\\n  #listeners = Object.create(null);\\n\\n  \u002F**\\n   * @param {string} eventName\\n   * @param {function} listener\\n   * @param {Object} [options]\\n   *\u002F\\n  on(eventName, listener, options = null) {\\n    this._on(eventName, listener, {\\n      external: true,\\n      once: options?.once,\\n      signal: options?.signal,\\n    });\\n  }\\n\\n  \u002F**\\n   * @param {string} eventName\\n   * @param {function} listener\\n   * @param {Object} [options]\\n   *\u002F\\n  off(eventName, listener, options = null) {\\n    this._off(eventName, listener);\\n  }\\n\\n  \u002F**\\n   * @param {string} eventName\\n   * @param {Object} data\\n   *\u002F\\n  dispatch(eventName, data) {\\n    const eventListeners = this.#listeners[eventName];\\n    if (!eventListeners || eventListeners.length === 0) {\\n      return;\\n    }\\n    let externalListeners;\\n    \u002F\u002F Making copy of the listeners array in case if it will be modified\\n    \u002F\u002F during dispatch.\\n    for (const { listener, external, once } of eventListeners.slice(0)) {\\n      if (once) {\\n        this._off(eventName, listener);\\n      }\\n      if (external) {\\n        (externalListeners ||= []).push(listener);\\n        continue;\\n      }\\n      listener(data);\\n    }\\n    \u002F\u002F Dispatch any \\\"external\\\" listeners *after* the internal ones, to give the\\n    \u002F\u002F viewer components time to handle events and update their state first.\\n    if (externalListeners) {\\n      for (const listener of externalListeners) {\\n        listener(data);\\n      }\\n      externalListeners = null;\\n    }\\n  }\\n\\n  \u002F**\\n   * @ignore\\n   *\u002F\\n  _on(eventName, listener, options = null) {\\n    let rmAbort = null;\\n    if (options?.signal instanceof AbortSignal) {\\n      const { signal } = options;\\n      if (signal.aborted) {\\n        console.error(\\\"Cannot use an `aborted` signal.\\\");\\n        return;\\n      }\\n      const onAbort = () => this._off(eventName, listener);\\n      rmAbort = () => signal.removeEventListener(\\\"abort\\\", onAbort);\\n\\n      signal.addEventListener(\\\"abort\\\", onAbort);\\n    }\\n\\n    const eventListeners = (this.#listeners[eventName] ||= []);\\n    eventListeners.push({\\n      listener,\\n      external: options?.external === true,\\n      once: options?.once === true,\\n      rmAbort,\\n    });\\n  }\\n\\n  \u002F**\\n   * @ignore\\n   *\u002F\\n  _off(eventName, listener, options = null) {\\n    const eventListeners = this.#listeners[eventName];\\n    if (!eventListeners) {\\n      return;\\n    }\\n    for (let i = 0, ii = eventListeners.length; i \u003C ii; i++) {\\n      const evt = eventListeners[i];\\n      if (evt.listener === listener) {\\n        evt.rmAbort?.(); \u002F\u002F Ensure that the `AbortSignal` listener is removed.\\n        eventListeners.splice(i, 1);\\n        return;\\n      }\\n    }\\n  }\\n}\\n\\n\u002F**\\n * NOTE: Only used in the Firefox build-in pdf viewer.\\n *\u002F\\nclass FirefoxEventBus extends EventBus {\\n  #externalServices;\\n\\n  #globalEventNames;\\n\\n  #isInAutomation;\\n\\n  constructor(globalEventNames, externalServices, isInAutomation) {\\n    super();\\n    this.#globalEventNames = globalEventNames;\\n    this.#externalServices = externalServices;\\n    this.#isInAutomation = isInAutomation;\\n  }\\n\\n  dispatch(eventName, data) {\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && !PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      throw new Error(\\\"Not implemented: FirefoxEventBus.dispatch\\\");\\n    }\\n    super.dispatch(eventName, data);\\n\\n    if (this.#isInAutomation) {\\n      const detail = Object.create(null);\\n      if (data) {\\n        for (const key in data) {\\n          const value = data[key];\\n          if (key === \\\"source\\\") {\\n            if (value === window || value === document) {\\n              return; \u002F\u002F No need to re-dispatch (already) global events.\\n            }\\n            continue; \u002F\u002F Ignore the `source` property.\\n          }\\n          detail[key] = value;\\n        }\\n      }\\n      const event = new CustomEvent(eventName, {\\n        bubbles: true,\\n        cancelable: true,\\n        detail,\\n      });\\n      document.dispatchEvent(event);\\n    }\\n\\n    if (this.#globalEventNames?.has(eventName)) {\\n      this.#externalServices.dispatchGlobalEvent({\\n        eventName,\\n        detail: data,\\n      });\\n    }\\n  }\\n}\\n\\nexport { EventBus, FirefoxEventBus, waitOnEventOrTimeout, WaitOnType };\\n\",\"\u002F* Copyright 2024 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Finterfaces.js\\\").IL10n} IL10n *\u002F\\n\\nclass BaseExternalServices {\\n  constructor() {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      this.constructor === BaseExternalServices\\n    ) {\\n      throw new Error(\\\"Cannot initialize BaseExternalServices.\\\");\\n    }\\n  }\\n\\n  updateFindControlState(data) {}\\n\\n  updateFindMatchesCount(data) {}\\n\\n  initPassiveLoading() {}\\n\\n  reportTelemetry(data) {}\\n\\n  \u002F**\\n   * @returns {Promise\u003CIL10n>}\\n   *\u002F\\n  async createL10n() {\\n    throw new Error(\\\"Not implemented: createL10n\\\");\\n  }\\n\\n  createScripting() {\\n    throw new Error(\\\"Not implemented: createScripting\\\");\\n  }\\n\\n  createSignatureStorage() {\\n    throw new Error(\\\"Not implemented: createSignatureStorage\\\");\\n  }\\n\\n  updateEditorStates(data) {\\n    throw new Error(\\\"Not implemented: updateEditorStates\\\");\\n  }\\n\\n  dispatchGlobalEvent(_event) {}\\n}\\n\\nexport { BaseExternalServices };\\n\",\"\u002F* Copyright 2013 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { AppOptions, OptionKind } from \\\".\u002Fapp_options.js\\\";\\n\\n\u002F**\\n * BasePreferences - Abstract base class for storing persistent settings.\\n *   Used for settings that should be applied to all opened documents,\\n *   or every time the viewer is loaded.\\n *\u002F\\nclass BasePreferences {\\n  #defaults = Object.freeze(\\n    typeof PDFJSDev === \\\"undefined\\\"\\n      ? AppOptions.getAll(OptionKind.PREFERENCE, \u002F* defaultOnly = *\u002F true)\\n      : PDFJSDev.eval(\\\"DEFAULT_PREFERENCES\\\")\\n  );\\n\\n  #initializedPromise = null;\\n\\n  constructor() {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      this.constructor === BasePreferences\\n    ) {\\n      throw new Error(\\\"Cannot initialize BasePreferences.\\\");\\n    }\\n\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"CHROME\\\")) {\\n      Object.defineProperty(this, \\\"defaults\\\", {\\n        get() {\\n          return this.#defaults;\\n        },\\n      });\\n    }\\n\\n    this.#initializedPromise = this._readFromStorage(this.#defaults).then(\\n      ({ browserPrefs, prefs }) => {\\n        if (\\n          (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) &&\\n          AppOptions._checkDisablePreferences()\\n        ) {\\n          return;\\n        }\\n        AppOptions.setAll({ ...browserPrefs, ...prefs }, \u002F* prefs = *\u002F true);\\n      }\\n    );\\n\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      window.addEventListener(\\n        \\\"updatedPreference\\\",\\n        async ({ detail: { name, value } }) => {\\n          await this.#initializedPromise;\\n          AppOptions.setAll({ [name]: value }, \u002F* prefs = *\u002F true);\\n        }\\n      );\\n    }\\n  }\\n\\n  \u002F**\\n   * Stub function for writing preferences to storage.\\n   * @param {Object} prefObj The preferences that should be written to storage.\\n   * @returns {Promise} A promise that is resolved when the preference values\\n   *                    have been written.\\n   *\u002F\\n  async _writeToStorage(prefObj) {\\n    throw new Error(\\\"Not implemented: _writeToStorage\\\");\\n  }\\n\\n  \u002F**\\n   * Stub function for reading preferences from storage.\\n   * @param {Object} prefObj The preferences that should be read from storage.\\n   * @returns {Promise} A promise that is resolved with an {Object} containing\\n   *                    the preferences that have been read.\\n   *\u002F\\n  async _readFromStorage(prefObj) {\\n    throw new Error(\\\"Not implemented: _readFromStorage\\\");\\n  }\\n\\n  \u002F**\\n   * Reset the preferences to their default values and update storage.\\n   * @returns {Promise} A promise that is resolved when the preference values\\n   *                    have been reset.\\n   *\u002F\\n  async reset() {\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      throw new Error(\\\"Please use `about:config` to change preferences.\\\");\\n    }\\n    await this.#initializedPromise;\\n    AppOptions.setAll(this.#defaults, \u002F* prefs = *\u002F true);\\n\\n    await this._writeToStorage(this.#defaults);\\n  }\\n\\n  \u002F**\\n   * Set the value of a preference.\\n   * @param {string} name The name of the preference that should be changed.\\n   * @param {boolean|number|string} value The new value of the preference.\\n   * @returns {Promise} A promise that is resolved when the value has been set,\\n   *                    provided that the preference exists and the types match.\\n   *\u002F\\n  async set(name, value) {\\n    await this.#initializedPromise;\\n    AppOptions.setAll({ [name]: value }, \u002F* prefs = *\u002F true);\\n\\n    await this._writeToStorage(\\n      typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")\\n        ? { [name]: AppOptions.get(name) }\\n        : AppOptions.getAll(OptionKind.PREFERENCE)\\n    );\\n  }\\n\\n  \u002F**\\n   * Get the value of a preference.\\n   * @param {string} name The name of the preference whose value is requested.\\n   * @returns {Promise} A promise resolved with a {boolean|number|string}\\n   *                    containing the value of the preference.\\n   *\u002F\\n  async get(name) {\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      throw new Error(\\\"Not implemented: get\\\");\\n    }\\n    await this.#initializedPromise;\\n    return AppOptions.get(name);\\n  }\\n\\n  get initializedPromise() {\\n    return this.#initializedPromise;\\n  }\\n}\\n\\nexport { BasePreferences };\\n\",\"\u002F**\\n * The `FluentType` class is the base of Fluent's type system.\\n *\\n * Fluent types wrap JavaScript values and store additional configuration for\\n * them, which can then be used in the `toString` method together with a proper\\n * `Intl` formatter.\\n *\u002F\\nexport class FluentType {\\n    \u002F**\\n     * Create a `FluentType` instance.\\n     *\\n     * @param value The JavaScript value to wrap.\\n     *\u002F\\n    constructor(value) {\\n        this.value = value;\\n    }\\n    \u002F**\\n     * Unwrap the raw value stored by this `FluentType`.\\n     *\u002F\\n    valueOf() {\\n        return this.value;\\n    }\\n}\\n\u002F**\\n * A {@link FluentType} representing no correct value.\\n *\u002F\\nexport class FluentNone extends FluentType {\\n    \u002F**\\n     * Create an instance of `FluentNone` with an optional fallback value.\\n     * @param value The fallback value of this `FluentNone`.\\n     *\u002F\\n    constructor(value = \\\"???\\\") {\\n        super(value);\\n    }\\n    \u002F**\\n     * Format this `FluentNone` to the fallback string.\\n     *\u002F\\n    toString(scope) {\\n        return `{${this.value}}`;\\n    }\\n}\\n\u002F**\\n * A {@link FluentType} representing a number.\\n *\\n * A `FluentNumber` instance stores the number value of the number it\\n * represents. It may also store an option bag of options which will be passed\\n * to `Intl.NumerFormat` when the `FluentNumber` is formatted to a string.\\n *\u002F\\nexport class FluentNumber extends FluentType {\\n    \u002F**\\n     * Create an instance of `FluentNumber` with options to the\\n     * `Intl.NumberFormat` constructor.\\n     *\\n     * @param value The number value of this `FluentNumber`.\\n     * @param opts Options which will be passed to `Intl.NumberFormat`.\\n     *\u002F\\n    constructor(value, opts = {}) {\\n        super(value);\\n        this.opts = opts;\\n    }\\n    \u002F**\\n     * Format this `FluentNumber` to a string.\\n     *\u002F\\n    toString(scope) {\\n        if (scope) {\\n            try {\\n                const nf = scope.memoizeIntlObject(Intl.NumberFormat, this.opts);\\n                return nf.format(this.value);\\n            }\\n            catch (err) {\\n                scope.reportError(err);\\n            }\\n        }\\n        return this.value.toString(10);\\n    }\\n}\\n\u002F**\\n * A {@link FluentType} representing a date and time.\\n *\\n * A `FluentDateTime` instance stores a Date object, Temporal object, or a number\\n * as a numerical timestamp in milliseconds. It may also store an\\n * option bag of options which will be passed to `Intl.DateTimeFormat` when the\\n * `FluentDateTime` is formatted to a string.\\n *\u002F\\nexport class FluentDateTime extends FluentType {\\n    static supportsValue(value) {\\n        if (typeof value === \\\"number\\\")\\n            return true;\\n        if (value instanceof Date)\\n            return true;\\n        if (value instanceof FluentType)\\n            return FluentDateTime.supportsValue(value.valueOf());\\n        \u002F\u002F Temporary workaround to support environments without Temporal\\n        if (\\\"Temporal\\\" in globalThis) {\\n            \u002F\u002F for TypeScript, which doesn't know about Temporal yet\\n            const _Temporal = globalThis.Temporal;\\n            if (value instanceof _Temporal.Instant ||\\n                value instanceof _Temporal.PlainDateTime ||\\n                value instanceof _Temporal.PlainDate ||\\n                value instanceof _Temporal.PlainMonthDay ||\\n                value instanceof _Temporal.PlainTime ||\\n                value instanceof _Temporal.PlainYearMonth) {\\n                return true;\\n            }\\n        }\\n        return false;\\n    }\\n    \u002F**\\n     * Create an instance of `FluentDateTime` with options to the\\n     * `Intl.DateTimeFormat` constructor.\\n     *\\n     * @param value The number value of this `FluentDateTime`, in milliseconds.\\n     * @param opts Options which will be passed to `Intl.DateTimeFormat`.\\n     *\u002F\\n    constructor(value, opts = {}) {\\n        \u002F\u002F unwrap any FluentType value, but only retain the opts from FluentDateTime\\n        if (value instanceof FluentDateTime) {\\n            opts = { ...value.opts, ...opts };\\n            value = value.value;\\n        }\\n        else if (value instanceof FluentType) {\\n            value = value.valueOf();\\n        }\\n        \u002F\u002F Intl.DateTimeFormat defaults to gregorian calendar, but Temporal defaults to iso8601\\n        if (typeof value === \\\"object\\\" &&\\n            \\\"calendarId\\\" in value &&\\n            opts.calendar === undefined) {\\n            opts = { ...opts, calendar: value.calendarId };\\n        }\\n        super(value);\\n        this.opts = opts;\\n    }\\n    [Symbol.toPrimitive](hint) {\\n        return hint === \\\"string\\\" ? this.toString() : this.toNumber();\\n    }\\n    \u002F**\\n     * Convert this `FluentDateTime` to a number.\\n     * Note that this isn't always possible due to the nature of Temporal objects.\\n     * In such cases, a TypeError will be thrown.\\n     *\u002F\\n    toNumber() {\\n        const value = this.value;\\n        if (typeof value === \\\"number\\\")\\n            return value;\\n        if (value instanceof Date)\\n            return value.getTime();\\n        if (\\\"epochMilliseconds\\\" in value) {\\n            return value.epochMilliseconds;\\n        }\\n        if (\\\"toZonedDateTime\\\" in value) {\\n            return value.toZonedDateTime(\\\"UTC\\\").epochMilliseconds;\\n        }\\n        throw new TypeError(\\\"Unwrapping a non-number value as a number\\\");\\n    }\\n    \u002F**\\n     * Format this `FluentDateTime` to a string.\\n     *\u002F\\n    toString(scope) {\\n        if (scope) {\\n            try {\\n                const dtf = scope.memoizeIntlObject(Intl.DateTimeFormat, this.opts);\\n                return dtf.format(this.value);\\n            }\\n            catch (err) {\\n                scope.reportError(err);\\n            }\\n        }\\n        if (typeof this.value === \\\"number\\\" || this.value instanceof Date) {\\n            return new Date(this.value).toISOString();\\n        }\\n        return this.value.toString();\\n    }\\n}\\n\",\"\u002F**\\n * The role of the Fluent resolver is to format a `Pattern` to an instance of\\n * `FluentValue`. For performance reasons, primitive strings are considered\\n * such instances, too.\\n *\\n * Translations can contain references to other messages or variables,\\n * conditional logic in form of select expressions, traits which describe their\\n * grammatical features, and can use Fluent builtins which make use of the\\n * `Intl` formatters to format numbers and dates into the bundle's languages.\\n * See the documentation of the Fluent syntax for more information.\\n *\\n * In case of errors the resolver will try to salvage as much of the\\n * translation as possible. In rare situations where the resolver didn't know\\n * how to recover from an error it will return an instance of `FluentNone`.\\n *\\n * All expressions resolve to an instance of `FluentValue`. The caller should\\n * use the `toString` method to convert the instance to a native value.\\n *\\n * Functions in this file pass around an instance of the `Scope` class, which\\n * stores the data required for successful resolution and error recovery.\\n *\u002F\\nimport { FluentType, FluentNone, FluentNumber, FluentDateTime, } from \\\".\u002Ftypes.js\\\";\\n\u002F**\\n * The maximum number of placeables which can be expanded in a single call to\\n * `formatPattern`. The limit protects against the Billion Laughs and Quadratic\\n * Blowup attacks. See https:\u002F\u002Fmsdn.microsoft.com\u002Fen-us\u002Fmagazine\u002Fee335713.aspx.\\n *\u002F\\nconst MAX_PLACEABLES = 100;\\n\u002F** Unicode bidi isolation characters. *\u002F\\nconst FSI = \\\"\\\\u2068\\\";\\nconst PDI = \\\"\\\\u2069\\\";\\n\u002F** Helper: match a variant key to the given selector. *\u002F\\nfunction match(scope, selector, key) {\\n    if (key === selector) {\\n        \u002F\u002F Both are strings.\\n        return true;\\n    }\\n    \u002F\u002F XXX Consider comparing options too, e.g. minimumFractionDigits.\\n    if (key instanceof FluentNumber &&\\n        selector instanceof FluentNumber &&\\n        key.value === selector.value) {\\n        return true;\\n    }\\n    if (selector instanceof FluentNumber && typeof key === \\\"string\\\") {\\n        let category = scope\\n            .memoizeIntlObject(Intl.PluralRules, selector.opts)\\n            .select(selector.value);\\n        if (key === category) {\\n            return true;\\n        }\\n    }\\n    return false;\\n}\\n\u002F** Helper: resolve the default variant from a list of variants. *\u002F\\nfunction getDefault(scope, variants, star) {\\n    if (variants[star]) {\\n        return resolvePattern(scope, variants[star].value);\\n    }\\n    scope.reportError(new RangeError(\\\"No default\\\"));\\n    return new FluentNone();\\n}\\n\u002F** Helper: resolve arguments to a call expression. *\u002F\\nfunction getArguments(scope, args) {\\n    const positional = [];\\n    const named = Object.create(null);\\n    for (const arg of args) {\\n        if (arg.type === \\\"narg\\\") {\\n            named[arg.name] = resolveExpression(scope, arg.value);\\n        }\\n        else {\\n            positional.push(resolveExpression(scope, arg));\\n        }\\n    }\\n    return { positional, named };\\n}\\n\u002F** Resolve an expression to a Fluent type. *\u002F\\nfunction resolveExpression(scope, expr) {\\n    switch (expr.type) {\\n        case \\\"str\\\":\\n            return expr.value;\\n        case \\\"num\\\":\\n            return new FluentNumber(expr.value, {\\n                minimumFractionDigits: expr.precision,\\n            });\\n        case \\\"var\\\":\\n            return resolveVariableReference(scope, expr);\\n        case \\\"mesg\\\":\\n            return resolveMessageReference(scope, expr);\\n        case \\\"term\\\":\\n            return resolveTermReference(scope, expr);\\n        case \\\"func\\\":\\n            return resolveFunctionReference(scope, expr);\\n        case \\\"select\\\":\\n            return resolveSelectExpression(scope, expr);\\n        default:\\n            return new FluentNone();\\n    }\\n}\\n\u002F** Resolve a reference to a variable. *\u002F\\nfunction resolveVariableReference(scope, { name }) {\\n    let arg;\\n    if (scope.params) {\\n        \u002F\u002F We're inside a TermReference. It's OK to reference undefined parameters.\\n        if (Object.prototype.hasOwnProperty.call(scope.params, name)) {\\n            arg = scope.params[name];\\n        }\\n        else {\\n            return new FluentNone(`$${name}`);\\n        }\\n    }\\n    else if (scope.args &&\\n        Object.prototype.hasOwnProperty.call(scope.args, name)) {\\n        \u002F\u002F We're in the top-level Pattern or inside a MessageReference. Missing\\n        \u002F\u002F variables references produce ReferenceErrors.\\n        arg = scope.args[name];\\n    }\\n    else {\\n        scope.reportError(new ReferenceError(`Unknown variable: $${name}`));\\n        return new FluentNone(`$${name}`);\\n    }\\n    \u002F\u002F Return early if the argument already is an instance of FluentType.\\n    if (arg instanceof FluentType) {\\n        return arg;\\n    }\\n    \u002F\u002F Convert the argument to a Fluent type.\\n    switch (typeof arg) {\\n        case \\\"string\\\":\\n            return arg;\\n        case \\\"number\\\":\\n            return new FluentNumber(arg);\\n        case \\\"object\\\":\\n            if (FluentDateTime.supportsValue(arg)) {\\n                return new FluentDateTime(arg);\\n            }\\n        \u002F\u002F eslint-disable-next-line no-fallthrough\\n        default:\\n            scope.reportError(new TypeError(`Variable type not supported: $${name}, ${typeof arg}`));\\n            return new FluentNone(`$${name}`);\\n    }\\n}\\n\u002F** Resolve a reference to another message. *\u002F\\nfunction resolveMessageReference(scope, { name, attr }) {\\n    const message = scope.bundle._messages.get(name);\\n    if (!message) {\\n        scope.reportError(new ReferenceError(`Unknown message: ${name}`));\\n        return new FluentNone(name);\\n    }\\n    if (attr) {\\n        const attribute = message.attributes[attr];\\n        if (attribute) {\\n            return resolvePattern(scope, attribute);\\n        }\\n        scope.reportError(new ReferenceError(`Unknown attribute: ${attr}`));\\n        return new FluentNone(`${name}.${attr}`);\\n    }\\n    if (message.value) {\\n        return resolvePattern(scope, message.value);\\n    }\\n    scope.reportError(new ReferenceError(`No value: ${name}`));\\n    return new FluentNone(name);\\n}\\n\u002F** Resolve a call to a Term with key-value arguments. *\u002F\\nfunction resolveTermReference(scope, { name, attr, args }) {\\n    const id = `-${name}`;\\n    const term = scope.bundle._terms.get(id);\\n    if (!term) {\\n        scope.reportError(new ReferenceError(`Unknown term: ${id}`));\\n        return new FluentNone(id);\\n    }\\n    if (attr) {\\n        const attribute = term.attributes[attr];\\n        if (attribute) {\\n            \u002F\u002F Every TermReference has its own variables.\\n            scope.params = getArguments(scope, args).named;\\n            const resolved = resolvePattern(scope, attribute);\\n            scope.params = null;\\n            return resolved;\\n        }\\n        scope.reportError(new ReferenceError(`Unknown attribute: ${attr}`));\\n        return new FluentNone(`${id}.${attr}`);\\n    }\\n    scope.params = getArguments(scope, args).named;\\n    const resolved = resolvePattern(scope, term.value);\\n    scope.params = null;\\n    return resolved;\\n}\\n\u002F** Resolve a call to a Function with positional and key-value arguments. *\u002F\\nfunction resolveFunctionReference(scope, { name, args }) {\\n    \u002F\u002F Some functions are built-in. Others may be provided by the runtime via\\n    \u002F\u002F the `FluentBundle` constructor.\\n    let func = scope.bundle._functions[name];\\n    if (!func) {\\n        scope.reportError(new ReferenceError(`Unknown function: ${name}()`));\\n        return new FluentNone(`${name}()`);\\n    }\\n    if (typeof func !== \\\"function\\\") {\\n        scope.reportError(new TypeError(`Function ${name}() is not callable`));\\n        return new FluentNone(`${name}()`);\\n    }\\n    try {\\n        let resolved = getArguments(scope, args);\\n        return func(resolved.positional, resolved.named);\\n    }\\n    catch (err) {\\n        scope.reportError(err);\\n        return new FluentNone(`${name}()`);\\n    }\\n}\\n\u002F** Resolve a select expression to the member object. *\u002F\\nfunction resolveSelectExpression(scope, { selector, variants, star }) {\\n    let sel = resolveExpression(scope, selector);\\n    if (sel instanceof FluentNone) {\\n        return getDefault(scope, variants, star);\\n    }\\n    \u002F\u002F Match the selector against keys of each variant, in order.\\n    for (const variant of variants) {\\n        const key = resolveExpression(scope, variant.key);\\n        if (match(scope, sel, key)) {\\n            return resolvePattern(scope, variant.value);\\n        }\\n    }\\n    return getDefault(scope, variants, star);\\n}\\n\u002F** Resolve a pattern (a complex string with placeables). *\u002F\\nexport function resolveComplexPattern(scope, ptn) {\\n    if (scope.dirty.has(ptn)) {\\n        scope.reportError(new RangeError(\\\"Cyclic reference\\\"));\\n        return new FluentNone();\\n    }\\n    \u002F\u002F Tag the pattern as dirty for the purpose of the current resolution.\\n    scope.dirty.add(ptn);\\n    const result = [];\\n    \u002F\u002F Wrap interpolations with Directional Isolate Formatting characters\\n    \u002F\u002F only when the pattern has more than one element.\\n    const useIsolating = scope.bundle._useIsolating && ptn.length > 1;\\n    for (const elem of ptn) {\\n        if (typeof elem === \\\"string\\\") {\\n            result.push(scope.bundle._transform(elem));\\n            continue;\\n        }\\n        scope.placeables++;\\n        if (scope.placeables > MAX_PLACEABLES) {\\n            scope.dirty.delete(ptn);\\n            \u002F\u002F This is a fatal error which causes the resolver to instantly bail out\\n            \u002F\u002F on this pattern. The length check protects against excessive memory\\n            \u002F\u002F usage, and throwing protects against eating up the CPU when long\\n            \u002F\u002F placeables are deeply nested.\\n            throw new RangeError(`Too many placeables expanded: ${scope.placeables}, ` +\\n                `max allowed is ${MAX_PLACEABLES}`);\\n        }\\n        if (useIsolating) {\\n            result.push(FSI);\\n        }\\n        result.push(resolveExpression(scope, elem).toString(scope));\\n        if (useIsolating) {\\n            result.push(PDI);\\n        }\\n    }\\n    scope.dirty.delete(ptn);\\n    return result.join(\\\"\\\");\\n}\\n\u002F**\\n * Resolve a simple or a complex Pattern to a FluentString\\n * (which is really the string primitive).\\n *\u002F\\nfunction resolvePattern(scope, value) {\\n    \u002F\u002F Resolve a simple pattern.\\n    if (typeof value === \\\"string\\\") {\\n        return scope.bundle._transform(value);\\n    }\\n    return resolveComplexPattern(scope, value);\\n}\\n\",\"export class Scope {\\n    constructor(bundle, errors, args) {\\n        \u002F**\\n         * The Set of patterns already encountered during this resolution.\\n         * Used to detect and prevent cyclic resolutions.\\n         * @ignore\\n         *\u002F\\n        this.dirty = new WeakSet();\\n        \u002F** A dict of parameters passed to a TermReference. *\u002F\\n        this.params = null;\\n        \u002F**\\n         * The running count of placeables resolved so far.\\n         * Used to detect the Billion Laughs and Quadratic Blowup attacks.\\n         * @ignore\\n         *\u002F\\n        this.placeables = 0;\\n        this.bundle = bundle;\\n        this.errors = errors;\\n        this.args = args;\\n    }\\n    reportError(error) {\\n        if (!this.errors || !(error instanceof Error)) {\\n            throw error;\\n        }\\n        this.errors.push(error);\\n    }\\n    memoizeIntlObject(ctor, opts) {\\n        let cache = this.bundle._intls.get(ctor);\\n        if (!cache) {\\n            cache = {};\\n            this.bundle._intls.set(ctor, cache);\\n        }\\n        let id = JSON.stringify(opts);\\n        if (!cache[id]) {\\n            \u002F\u002F @ts-expect-error This is fine.\\n            \u002F\u002F eslint-disable-next-line @typescript-eslint\u002Fno-unsafe-assignment\\n            cache[id] = new ctor(this.bundle.locales, opts);\\n        }\\n        return cache[id];\\n    }\\n}\\n\",\"\u002F**\\n * @overview\\n *\\n * The FTL resolver ships with a number of functions built-in.\\n *\\n * Each function take two arguments:\\n *   - args - an array of positional args\\n *   - opts - an object of key-value args\\n *\\n * Arguments to functions are guaranteed to already be instances of\\n * `FluentValue`.  Functions must return `FluentValues` as well.\\n *\u002F\\nimport { FluentNone, FluentNumber, FluentDateTime, } from \\\".\u002Ftypes.js\\\";\\nfunction values(opts, allowed) {\\n    const unwrapped = Object.create(null);\\n    for (const [name, opt] of Object.entries(opts)) {\\n        if (allowed.includes(name)) {\\n            unwrapped[name] = opt.valueOf();\\n        }\\n    }\\n    return unwrapped;\\n}\\nconst NUMBER_ALLOWED = [\\n    \\\"unitDisplay\\\",\\n    \\\"currencyDisplay\\\",\\n    \\\"useGrouping\\\",\\n    \\\"minimumIntegerDigits\\\",\\n    \\\"minimumFractionDigits\\\",\\n    \\\"maximumFractionDigits\\\",\\n    \\\"minimumSignificantDigits\\\",\\n    \\\"maximumSignificantDigits\\\",\\n];\\n\u002F**\\n * The implementation of the `NUMBER()` builtin available to translations.\\n *\\n * Translations may call the `NUMBER()` builtin in order to specify formatting\\n * options of a number. For example:\\n *\\n *     pi = The value of π is {NUMBER($pi, maximumFractionDigits: 2)}.\\n *\\n * The implementation expects an array of {@link FluentValue | FluentValues} representing the\\n * positional arguments, and an object of named {@link FluentValue | FluentValues} representing the\\n * named parameters.\\n *\\n * The following options are recognized:\\n *\\n *     unitDisplay\\n *     currencyDisplay\\n *     useGrouping\\n *     minimumIntegerDigits\\n *     minimumFractionDigits\\n *     maximumFractionDigits\\n *     minimumSignificantDigits\\n *     maximumSignificantDigits\\n *\\n * Other options are ignored.\\n *\\n * @param args The positional arguments passed to this `NUMBER()`.\\n * @param opts The named argments passed to this `NUMBER()`.\\n *\u002F\\nexport function NUMBER(args, opts) {\\n    let arg = args[0];\\n    if (arg instanceof FluentNone) {\\n        return new FluentNone(`NUMBER(${arg.valueOf()})`);\\n    }\\n    if (arg instanceof FluentNumber) {\\n        return new FluentNumber(arg.valueOf(), {\\n            ...arg.opts,\\n            ...values(opts, NUMBER_ALLOWED),\\n        });\\n    }\\n    if (arg instanceof FluentDateTime) {\\n        return new FluentNumber(arg.toNumber(), {\\n            ...values(opts, NUMBER_ALLOWED),\\n        });\\n    }\\n    throw new TypeError(\\\"Invalid argument to NUMBER\\\");\\n}\\nconst DATETIME_ALLOWED = [\\n    \\\"dateStyle\\\",\\n    \\\"timeStyle\\\",\\n    \\\"fractionalSecondDigits\\\",\\n    \\\"dayPeriod\\\",\\n    \\\"hour12\\\",\\n    \\\"weekday\\\",\\n    \\\"era\\\",\\n    \\\"year\\\",\\n    \\\"month\\\",\\n    \\\"day\\\",\\n    \\\"hour\\\",\\n    \\\"minute\\\",\\n    \\\"second\\\",\\n    \\\"timeZoneName\\\",\\n];\\n\u002F**\\n * The implementation of the `DATETIME()` builtin available to translations.\\n *\\n * Translations may call the `DATETIME()` builtin in order to specify\\n * formatting options of a number. For example:\\n *\\n *     now = It's {DATETIME($today, month: \\\"long\\\")}.\\n *\\n * The implementation expects an array of {@link FluentValue | FluentValues} representing the\\n * positional arguments, and an object of named {@link FluentValue | FluentValues} representing the\\n * named parameters.\\n *\\n * The following options are recognized:\\n *\\n *     dateStyle\\n *     timeStyle\\n *     fractionalSecondDigits\\n *     dayPeriod\\n *     hour12\\n *     weekday\\n *     era\\n *     year\\n *     month\\n *     day\\n *     hour\\n *     minute\\n *     second\\n *     timeZoneName\\n *\\n * Other options are ignored.\\n *\\n * @param args The positional arguments passed to this `DATETIME()`.\\n * @param opts The named argments passed to this `DATETIME()`.\\n *\u002F\\nexport function DATETIME(args, opts) {\\n    let arg = args[0];\\n    if (arg instanceof FluentNone) {\\n        return new FluentNone(`DATETIME(${arg.valueOf()})`);\\n    }\\n    if (arg instanceof FluentDateTime || arg instanceof FluentNumber) {\\n        return new FluentDateTime(arg, values(opts, DATETIME_ALLOWED));\\n    }\\n    throw new TypeError(\\\"Invalid argument to DATETIME\\\");\\n}\\n\",\"const cache = new Map();\\nexport function getMemoizerForLocale(locales) {\\n    const stringLocale = Array.isArray(locales) ? locales.join(\\\" \\\") : locales;\\n    let memoizer = cache.get(stringLocale);\\n    if (memoizer === undefined) {\\n        memoizer = new Map();\\n        cache.set(stringLocale, memoizer);\\n    }\\n    return memoizer;\\n}\\n\",\"import { resolveComplexPattern } from \\\".\u002Fresolver.js\\\";\\nimport { Scope } from \\\".\u002Fscope.js\\\";\\nimport { FluentNone } from \\\".\u002Ftypes.js\\\";\\nimport { NUMBER, DATETIME } from \\\".\u002Fbuiltins.js\\\";\\nimport { getMemoizerForLocale } from \\\".\u002Fmemoizer.js\\\";\\n\u002F**\\n * Message bundles are single-language stores of translation resources. They are\\n * responsible for formatting message values and attributes to strings.\\n *\u002F\\nexport class FluentBundle {\\n    \u002F**\\n     * Create an instance of `FluentBundle`.\\n     *\\n     * @example\\n     * ```js\\n     * let bundle = new FluentBundle([\\\"en-US\\\", \\\"en\\\"]);\\n     *\\n     * let bundle = new FluentBundle(locales, {useIsolating: false});\\n     *\\n     * let bundle = new FluentBundle(locales, {\\n     *   useIsolating: true,\\n     *   functions: {\\n     *     NODE_ENV: () => process.env.NODE_ENV\\n     *   }\\n     * });\\n     * ```\\n     *\\n     * @param locales - Used to instantiate `Intl` formatters used by translations.\\n     * @param options - Optional configuration for the bundle.\\n     *\u002F\\n    constructor(locales, { functions, useIsolating = true, transform = (v) => v, } = {}) {\\n        \u002F** @ignore *\u002F\\n        this._terms = new Map();\\n        \u002F** @ignore *\u002F\\n        this._messages = new Map();\\n        this.locales = Array.isArray(locales) ? locales : [locales];\\n        this._functions = {\\n            NUMBER,\\n            DATETIME,\\n            ...functions,\\n        };\\n        this._useIsolating = useIsolating;\\n        this._transform = transform;\\n        this._intls = getMemoizerForLocale(locales);\\n    }\\n    \u002F**\\n     * Check if a message is present in the bundle.\\n     *\\n     * @param id - The identifier of the message to check.\\n     *\u002F\\n    hasMessage(id) {\\n        return this._messages.has(id);\\n    }\\n    \u002F**\\n     * Return a raw unformatted message object from the bundle.\\n     *\\n     * Raw messages are `{value, attributes}` shapes containing translation units\\n     * called `Patterns`. `Patterns` are implementation-specific; they should be\\n     * treated as black boxes and formatted with `FluentBundle.formatPattern`.\\n     *\\n     * @param id - The identifier of the message to check.\\n     *\u002F\\n    getMessage(id) {\\n        return this._messages.get(id);\\n    }\\n    \u002F**\\n     * Add a translation resource to the bundle.\\n     *\\n     * @example\\n     * ```js\\n     * let res = new FluentResource(\\\"foo = Foo\\\");\\n     * bundle.addResource(res);\\n     * bundle.getMessage(\\\"foo\\\");\\n     * \u002F\u002F → {value: .., attributes: {..}}\\n     * ```\\n     *\\n     * @param res\\n     * @param options\\n     *\u002F\\n    addResource(res, { allowOverrides = false, } = {}) {\\n        const errors = [];\\n        for (let i = 0; i \u003C res.body.length; i++) {\\n            let entry = res.body[i];\\n            if (entry.id.startsWith(\\\"-\\\")) {\\n                \u002F\u002F Identifiers starting with a dash (-) define terms. Terms are private\\n                \u002F\u002F and cannot be retrieved from FluentBundle.\\n                if (allowOverrides === false && this._terms.has(entry.id)) {\\n                    errors.push(new Error(`Attempt to override an existing term: \\\"${entry.id}\\\"`));\\n                    continue;\\n                }\\n                this._terms.set(entry.id, entry);\\n            }\\n            else {\\n                if (allowOverrides === false && this._messages.has(entry.id)) {\\n                    errors.push(new Error(`Attempt to override an existing message: \\\"${entry.id}\\\"`));\\n                    continue;\\n                }\\n                this._messages.set(entry.id, entry);\\n            }\\n        }\\n        return errors;\\n    }\\n    \u002F**\\n     * Format a `Pattern` to a string.\\n     *\\n     * Format a raw `Pattern` into a string. `args` will be used to resolve\\n     * references to variables passed as arguments to the translation.\\n     *\\n     * In case of errors `formatPattern` will try to salvage as much of the\\n     * translation as possible and will still return a string. For performance\\n     * reasons, the encountered errors are not returned but instead are appended\\n     * to the `errors` array passed as the third argument.\\n     *\\n     * If `errors` is omitted, the first encountered error will be thrown.\\n     *\\n     * @example\\n     * ```js\\n     * let errors = [];\\n     * bundle.addResource(\\n     *     new FluentResource(\\\"hello = Hello, {$name}!\\\"));\\n     *\\n     * let hello = bundle.getMessage(\\\"hello\\\");\\n     * if (hello.value) {\\n     *     bundle.formatPattern(hello.value, {name: \\\"Jane\\\"}, errors);\\n     *     \u002F\u002F Returns \\\"Hello, Jane!\\\" and `errors` is empty.\\n     *\\n     *     bundle.formatPattern(hello.value, undefined, errors);\\n     *     \u002F\u002F Returns \\\"Hello, {$name}!\\\" and `errors` is now:\\n     *     \u002F\u002F [\u003CReferenceError: Unknown variable: name>]\\n     * }\\n     * ```\\n     *\u002F\\n    formatPattern(pattern, args = null, errors = null) {\\n        \u002F\u002F Resolve a simple pattern without creating a scope. No error handling is\\n        \u002F\u002F required; by definition simple patterns don't have placeables.\\n        if (typeof pattern === \\\"string\\\") {\\n            return this._transform(pattern);\\n        }\\n        \u002F\u002F Resolve a complex pattern.\\n        let scope = new Scope(this, errors, args);\\n        try {\\n            let value = resolveComplexPattern(scope, pattern);\\n            return value.toString(scope);\\n        }\\n        catch (err) {\\n            if (scope.errors && err instanceof Error) {\\n                scope.errors.push(err);\\n                return new FluentNone().toString(scope);\\n            }\\n            throw err;\\n        }\\n    }\\n}\\n\",\"\u002F\u002F This regex is used to iterate through the beginnings of messages and terms.\\n\u002F\u002F With the \u002Fm flag, the ^ matches at the beginning of every line.\\nconst RE_MESSAGE_START = \u002F^(-?[a-zA-Z][\\\\w-]*) *= *\u002Fgm;\\n\u002F\u002F Both Attributes and Variants are parsed in while loops. These regexes are\\n\u002F\u002F used to break out of them.\\nconst RE_ATTRIBUTE_START = \u002F\\\\.([a-zA-Z][\\\\w-]*) *= *\u002Fy;\\nconst RE_VARIANT_START = \u002F\\\\*?\\\\[\u002Fy;\\nconst RE_NUMBER_LITERAL = \u002F(-?[0-9]+(?:\\\\.([0-9]+))?)\u002Fy;\\nconst RE_IDENTIFIER = \u002F([a-zA-Z][\\\\w-]*)\u002Fy;\\nconst RE_REFERENCE = \u002F([$-])?([a-zA-Z][\\\\w-]*)(?:\\\\.([a-zA-Z][\\\\w-]*))?\u002Fy;\\nconst RE_FUNCTION_NAME = \u002F^[A-Z][A-Z0-9_-]*$\u002F;\\n\u002F\u002F A \\\"run\\\" is a sequence of text or string literal characters which don't\\n\u002F\u002F require any special handling. For TextElements such special characters are: {\\n\u002F\u002F (starts a placeable), and line breaks which require additional logic to check\\n\u002F\u002F if the next line is indented. For StringLiterals they are: \\\\ (starts an\\n\u002F\u002F escape sequence), \\\" (ends the literal), and line breaks which are not allowed\\n\u002F\u002F in StringLiterals. Note that string runs may be empty; text runs may not.\\nconst RE_TEXT_RUN = \u002F([^{}\\\\n\\\\r]+)\u002Fy;\\nconst RE_STRING_RUN = \u002F([^\\\\\\\\\\\"\\\\n\\\\r]*)\u002Fy;\\n\u002F\u002F Escape sequences.\\nconst RE_STRING_ESCAPE = \u002F\\\\\\\\([\\\\\\\\\\\"])\u002Fy;\\nconst RE_UNICODE_ESCAPE = \u002F\\\\\\\\u([a-fA-F0-9]{4})|\\\\\\\\U([a-fA-F0-9]{6})\u002Fy;\\n\u002F\u002F Used for trimming TextElements and indents.\\nconst RE_LEADING_NEWLINES = \u002F^\\\\n+\u002F;\\nconst RE_TRAILING_SPACES = \u002F +$\u002F;\\n\u002F\u002F Used in makeIndent to strip spaces from blank lines and normalize CRLF to LF.\\nconst RE_BLANK_LINES = \u002F *\\\\r?\\\\n\u002Fg;\\n\u002F\u002F Used in makeIndent to measure the indentation.\\nconst RE_INDENT = \u002F( *)$\u002F;\\n\u002F\u002F Common tokens.\\nconst TOKEN_BRACE_OPEN = \u002F{\\\\s*\u002Fy;\\nconst TOKEN_BRACE_CLOSE = \u002F\\\\s*}\u002Fy;\\nconst TOKEN_BRACKET_OPEN = \u002F\\\\[\\\\s*\u002Fy;\\nconst TOKEN_BRACKET_CLOSE = \u002F\\\\s*] *\u002Fy;\\nconst TOKEN_PAREN_OPEN = \u002F\\\\s*\\\\(\\\\s*\u002Fy;\\nconst TOKEN_ARROW = \u002F\\\\s*->\\\\s*\u002Fy;\\nconst TOKEN_COLON = \u002F\\\\s*:\\\\s*\u002Fy;\\n\u002F\u002F Note the optional comma. As a deviation from the Fluent EBNF, the parser\\n\u002F\u002F doesn't enforce commas between call arguments.\\nconst TOKEN_COMMA = \u002F\\\\s*,?\\\\s*\u002Fy;\\nconst TOKEN_BLANK = \u002F\\\\s+\u002Fy;\\n\u002F**\\n * Fluent Resource is a structure storing parsed localization entries.\\n *\u002F\\nexport class FluentResource {\\n    constructor(source) {\\n        this.body = [];\\n        RE_MESSAGE_START.lastIndex = 0;\\n        let cursor = 0;\\n        \u002F\u002F Iterate over the beginnings of messages and terms to efficiently skip\\n        \u002F\u002F comments and recover from errors.\\n        while (true) {\\n            let next = RE_MESSAGE_START.exec(source);\\n            if (next === null) {\\n                break;\\n            }\\n            cursor = RE_MESSAGE_START.lastIndex;\\n            try {\\n                this.body.push(parseMessage(next[1]));\\n            }\\n            catch (err) {\\n                if (err instanceof SyntaxError) {\\n                    \u002F\u002F Don't report any Fluent syntax errors. Skip directly to the\\n                    \u002F\u002F beginning of the next message or term.\\n                    continue;\\n                }\\n                throw err;\\n            }\\n        }\\n        \u002F\u002F The parser implementation is inlined below for performance reasons,\\n        \u002F\u002F as well as for convenience of accessing `source` and `cursor`.\\n        \u002F\u002F The parser focuses on minimizing the number of false negatives at the\\n        \u002F\u002F expense of increasing the risk of false positives. In other words, it\\n        \u002F\u002F aims at parsing valid Fluent messages with a success rate of 100%, but it\\n        \u002F\u002F may also parse a few invalid messages which the reference parser would\\n        \u002F\u002F reject. The parser doesn't perform any validation and may produce entries\\n        \u002F\u002F which wouldn't make sense in the real world. For best results users are\\n        \u002F\u002F advised to validate translations with the fluent-syntax parser\\n        \u002F\u002F pre-runtime.\\n        \u002F\u002F The parser makes an extensive use of sticky regexes which can be anchored\\n        \u002F\u002F to any offset of the source string without slicing it. Errors are thrown\\n        \u002F\u002F to bail out of parsing of ill-formed messages.\\n        function test(re) {\\n            re.lastIndex = cursor;\\n            return re.test(source);\\n        }\\n        \u002F\u002F Advance the cursor by the char if it matches. May be used as a predicate\\n        \u002F\u002F (was the match found?) or, if errorClass is passed, as an assertion.\\n        function consumeChar(char, errorClass) {\\n            if (source[cursor] === char) {\\n                cursor++;\\n                return true;\\n            }\\n            if (errorClass) {\\n                throw new errorClass(`Expected ${char}`);\\n            }\\n            return false;\\n        }\\n        \u002F\u002F Advance the cursor by the token if it matches. May be used as a predicate\\n        \u002F\u002F (was the match found?) or, if errorClass is passed, as an assertion.\\n        function consumeToken(re, errorClass) {\\n            if (test(re)) {\\n                cursor = re.lastIndex;\\n                return true;\\n            }\\n            if (errorClass) {\\n                throw new errorClass(`Expected ${re.toString()}`);\\n            }\\n            return false;\\n        }\\n        \u002F\u002F Execute a regex, advance the cursor, and return all capture groups.\\n        function match(re) {\\n            re.lastIndex = cursor;\\n            let result = re.exec(source);\\n            if (result === null) {\\n                throw new SyntaxError(`Expected ${re.toString()}`);\\n            }\\n            cursor = re.lastIndex;\\n            return result;\\n        }\\n        \u002F\u002F Execute a regex, advance the cursor, and return the capture group.\\n        function match1(re) {\\n            return match(re)[1];\\n        }\\n        function parseMessage(id) {\\n            let value = parsePattern();\\n            let attributes = parseAttributes();\\n            if (value === null && Object.keys(attributes).length === 0) {\\n                throw new SyntaxError(\\\"Expected message value or attributes\\\");\\n            }\\n            return { id, value, attributes };\\n        }\\n        function parseAttributes() {\\n            let attrs = Object.create(null);\\n            while (test(RE_ATTRIBUTE_START)) {\\n                let name = match1(RE_ATTRIBUTE_START);\\n                let value = parsePattern();\\n                if (value === null) {\\n                    throw new SyntaxError(\\\"Expected attribute value\\\");\\n                }\\n                attrs[name] = value;\\n            }\\n            return attrs;\\n        }\\n        function parsePattern() {\\n            let first;\\n            \u002F\u002F First try to parse any simple text on the same line as the id.\\n            if (test(RE_TEXT_RUN)) {\\n                first = match1(RE_TEXT_RUN);\\n            }\\n            \u002F\u002F If there's a placeable on the first line, parse a complex pattern.\\n            if (source[cursor] === \\\"{\\\" || source[cursor] === \\\"}\\\") {\\n                \u002F\u002F Re-use the text parsed above, if possible.\\n                return parsePatternElements(first ? [first] : [], Infinity);\\n            }\\n            \u002F\u002F RE_TEXT_VALUE stops at newlines. Only continue parsing the pattern if\\n            \u002F\u002F what comes after the newline is indented.\\n            let indent = parseIndent();\\n            if (indent) {\\n                if (first) {\\n                    \u002F\u002F If there's text on the first line, the blank block is part of the\\n                    \u002F\u002F translation content in its entirety.\\n                    return parsePatternElements([first, indent], indent.length);\\n                }\\n                \u002F\u002F Otherwise, we're dealing with a block pattern, i.e. a pattern which\\n                \u002F\u002F starts on a new line. Discrad the leading newlines but keep the\\n                \u002F\u002F inline indent; it will be used by the dedentation logic.\\n                indent.value = trim(indent.value, RE_LEADING_NEWLINES);\\n                return parsePatternElements([indent], indent.length);\\n            }\\n            if (first) {\\n                \u002F\u002F It was just a simple inline text after all.\\n                return trim(first, RE_TRAILING_SPACES);\\n            }\\n            return null;\\n        }\\n        \u002F\u002F Parse a complex pattern as an array of elements.\\n        function parsePatternElements(elements = [], commonIndent) {\\n            while (true) {\\n                if (test(RE_TEXT_RUN)) {\\n                    elements.push(match1(RE_TEXT_RUN));\\n                    continue;\\n                }\\n                if (source[cursor] === \\\"{\\\") {\\n                    elements.push(parsePlaceable());\\n                    continue;\\n                }\\n                if (source[cursor] === \\\"}\\\") {\\n                    throw new SyntaxError(\\\"Unbalanced closing brace\\\");\\n                }\\n                let indent = parseIndent();\\n                if (indent) {\\n                    elements.push(indent);\\n                    commonIndent = Math.min(commonIndent, indent.length);\\n                    continue;\\n                }\\n                break;\\n            }\\n            let lastIndex = elements.length - 1;\\n            let lastElement = elements[lastIndex];\\n            \u002F\u002F Trim the trailing spaces in the last element if it's a TextElement.\\n            if (typeof lastElement === \\\"string\\\") {\\n                elements[lastIndex] = trim(lastElement, RE_TRAILING_SPACES);\\n            }\\n            let baked = [];\\n            for (let element of elements) {\\n                if (element instanceof Indent) {\\n                    \u002F\u002F Dedent indented lines by the maximum common indent.\\n                    element = element.value.slice(0, element.value.length - commonIndent);\\n                }\\n                if (element) {\\n                    baked.push(element);\\n                }\\n            }\\n            return baked;\\n        }\\n        function parsePlaceable() {\\n            consumeToken(TOKEN_BRACE_OPEN, SyntaxError);\\n            let selector = parseInlineExpression();\\n            if (consumeToken(TOKEN_BRACE_CLOSE)) {\\n                return selector;\\n            }\\n            if (consumeToken(TOKEN_ARROW)) {\\n                let variants = parseVariants();\\n                consumeToken(TOKEN_BRACE_CLOSE, SyntaxError);\\n                return {\\n                    type: \\\"select\\\",\\n                    selector,\\n                    ...variants,\\n                };\\n            }\\n            throw new SyntaxError(\\\"Unclosed placeable\\\");\\n        }\\n        function parseInlineExpression() {\\n            if (source[cursor] === \\\"{\\\") {\\n                \u002F\u002F It's a nested placeable.\\n                return parsePlaceable();\\n            }\\n            if (test(RE_REFERENCE)) {\\n                let [, sigil, name, attr = null] = match(RE_REFERENCE);\\n                if (sigil === \\\"$\\\") {\\n                    return { type: \\\"var\\\", name };\\n                }\\n                if (consumeToken(TOKEN_PAREN_OPEN)) {\\n                    let args = parseArguments();\\n                    if (sigil === \\\"-\\\") {\\n                        \u002F\u002F A parameterized term: -term(...).\\n                        return { type: \\\"term\\\", name, attr, args };\\n                    }\\n                    if (RE_FUNCTION_NAME.test(name)) {\\n                        return { type: \\\"func\\\", name, args };\\n                    }\\n                    throw new SyntaxError(\\\"Function names must be all upper-case\\\");\\n                }\\n                if (sigil === \\\"-\\\") {\\n                    \u002F\u002F A non-parameterized term: -term.\\n                    return {\\n                        type: \\\"term\\\",\\n                        name,\\n                        attr,\\n                        args: [],\\n                    };\\n                }\\n                return { type: \\\"mesg\\\", name, attr };\\n            }\\n            return parseLiteral();\\n        }\\n        function parseArguments() {\\n            let args = [];\\n            while (true) {\\n                switch (source[cursor]) {\\n                    case \\\")\\\": \u002F\u002F End of the argument list.\\n                        cursor++;\\n                        return args;\\n                    case undefined: \u002F\u002F EOF\\n                        throw new SyntaxError(\\\"Unclosed argument list\\\");\\n                }\\n                args.push(parseArgument());\\n                \u002F\u002F Commas between arguments are treated as whitespace.\\n                consumeToken(TOKEN_COMMA);\\n            }\\n        }\\n        function parseArgument() {\\n            let expr = parseInlineExpression();\\n            if (expr.type !== \\\"mesg\\\") {\\n                return expr;\\n            }\\n            if (consumeToken(TOKEN_COLON)) {\\n                \u002F\u002F The reference is the beginning of a named argument.\\n                return {\\n                    type: \\\"narg\\\",\\n                    name: expr.name,\\n                    value: parseLiteral(),\\n                };\\n            }\\n            \u002F\u002F It's a regular message reference.\\n            return expr;\\n        }\\n        function parseVariants() {\\n            let variants = [];\\n            let count = 0;\\n            let star;\\n            while (test(RE_VARIANT_START)) {\\n                if (consumeChar(\\\"*\\\")) {\\n                    star = count;\\n                }\\n                let key = parseVariantKey();\\n                let value = parsePattern();\\n                if (value === null) {\\n                    throw new SyntaxError(\\\"Expected variant value\\\");\\n                }\\n                variants[count++] = { key, value };\\n            }\\n            if (count === 0) {\\n                return null;\\n            }\\n            if (star === undefined) {\\n                throw new SyntaxError(\\\"Expected default variant\\\");\\n            }\\n            return { variants, star };\\n        }\\n        function parseVariantKey() {\\n            consumeToken(TOKEN_BRACKET_OPEN, SyntaxError);\\n            let key;\\n            if (test(RE_NUMBER_LITERAL)) {\\n                key = parseNumberLiteral();\\n            }\\n            else {\\n                key = {\\n                    type: \\\"str\\\",\\n                    value: match1(RE_IDENTIFIER),\\n                };\\n            }\\n            consumeToken(TOKEN_BRACKET_CLOSE, SyntaxError);\\n            return key;\\n        }\\n        function parseLiteral() {\\n            if (test(RE_NUMBER_LITERAL)) {\\n                return parseNumberLiteral();\\n            }\\n            if (source[cursor] === '\\\"') {\\n                return parseStringLiteral();\\n            }\\n            throw new SyntaxError(\\\"Invalid expression\\\");\\n        }\\n        function parseNumberLiteral() {\\n            let [, value, fraction = \\\"\\\"] = match(RE_NUMBER_LITERAL);\\n            let precision = fraction.length;\\n            return {\\n                type: \\\"num\\\",\\n                value: parseFloat(value),\\n                precision,\\n            };\\n        }\\n        function parseStringLiteral() {\\n            consumeChar('\\\"', SyntaxError);\\n            let value = \\\"\\\";\\n            while (true) {\\n                value += match1(RE_STRING_RUN);\\n                if (source[cursor] === \\\"\\\\\\\\\\\") {\\n                    value += parseEscapeSequence();\\n                    continue;\\n                }\\n                if (consumeChar('\\\"')) {\\n                    return { type: \\\"str\\\", value };\\n                }\\n                \u002F\u002F We've reached an EOL of EOF.\\n                throw new SyntaxError(\\\"Unclosed string literal\\\");\\n            }\\n        }\\n        \u002F\u002F Unescape known escape sequences.\\n        function parseEscapeSequence() {\\n            if (test(RE_STRING_ESCAPE)) {\\n                return match1(RE_STRING_ESCAPE);\\n            }\\n            if (test(RE_UNICODE_ESCAPE)) {\\n                let [, codepoint4, codepoint6] = match(RE_UNICODE_ESCAPE);\\n                let codepoint = parseInt(codepoint4 || codepoint6, 16);\\n                return codepoint \u003C= 0xd7ff || 0xe000 \u003C= codepoint\\n                    ? \u002F\u002F It's a Unicode scalar value.\\n                        String.fromCodePoint(codepoint)\\n                    : \u002F\u002F Lonely surrogates can cause trouble when the parsing result is\\n                        \u002F\u002F saved using UTF-8. Use U+FFFD REPLACEMENT CHARACTER instead.\\n                        \\\"�\\\";\\n            }\\n            throw new SyntaxError(\\\"Unknown escape sequence\\\");\\n        }\\n        \u002F\u002F Parse blank space. Return it if it looks like indent before a pattern\\n        \u002F\u002F line. Skip it othwerwise.\\n        function parseIndent() {\\n            let start = cursor;\\n            consumeToken(TOKEN_BLANK);\\n            \u002F\u002F Check the first non-blank character after the indent.\\n            switch (source[cursor]) {\\n                case \\\".\\\":\\n                case \\\"[\\\":\\n                case \\\"*\\\":\\n                case \\\"}\\\":\\n                case undefined: \u002F\u002F EOF\\n                    \u002F\u002F A special character. End the Pattern.\\n                    return false;\\n                case \\\"{\\\":\\n                    \u002F\u002F Placeables don't require indentation (in EBNF: block-placeable).\\n                    \u002F\u002F Continue the Pattern.\\n                    return makeIndent(source.slice(start, cursor));\\n            }\\n            \u002F\u002F If the first character on the line is not one of the special characters\\n            \u002F\u002F listed above, it's a regular text character. Check if there's at least\\n            \u002F\u002F one space of indent before it.\\n            if (source[cursor - 1] === \\\" \\\") {\\n                \u002F\u002F It's an indented text character (in EBNF: indented-char). Continue\\n                \u002F\u002F the Pattern.\\n                return makeIndent(source.slice(start, cursor));\\n            }\\n            \u002F\u002F A not-indented text character is likely the identifier of the next\\n            \u002F\u002F message. End the Pattern.\\n            return false;\\n        }\\n        \u002F\u002F Trim blanks in text according to the given regex.\\n        function trim(text, re) {\\n            return text.replace(re, \\\"\\\");\\n        }\\n        \u002F\u002F Normalize a blank block and extract the indent details.\\n        function makeIndent(blank) {\\n            let value = blank.replace(RE_BLANK_LINES, \\\"\\\\n\\\");\\n            let length = RE_INDENT.exec(blank)[1].length;\\n            return new Indent(value, length);\\n        }\\n    }\\n}\\nclass Indent {\\n    constructor(value, length) {\\n        this.value = value;\\n        this.length = length;\\n    }\\n}\\n\",\"\u002F**\\n * A JavaScript implementation of Project Fluent, a localization\\n * framework designed to unleash the expressive power of the natural language.\\n *\\n * @module\\n *\u002F\\nexport { FluentBundle } from \\\".\u002Fbundle.js\\\";\\nexport { FluentResource } from \\\".\u002Fresource.js\\\";\\nexport { FluentType, FluentNone, FluentNumber, FluentDateTime, } from \\\".\u002Ftypes.js\\\";\\n\",\"\u002F* eslint no-console: [\\\"error\\\", {allow: [\\\"warn\\\"]}] *\u002F\\n\u002F* global console *\u002F\\n\u002F\u002F Match the opening angle bracket (\u003C) in HTML tags, and HTML entities like\\n\u002F\u002F &amp;, &#0038;, &#x0026;.\\nconst reOverlay = \u002F\u003C|&#?\\\\w+;\u002F;\\n\u002F**\\n * Elements allowed in translations even if they are not present in the source\\n * HTML. They are text-level elements as defined by the HTML5 spec:\\n * https:\u002F\u002Fwww.w3.org\u002FTR\u002Fhtml5\u002Ftext-level-semantics.html with the exception of:\\n *\\n *   - a - because we don't allow href on it anyways,\\n *   - ruby, rt, rp - because we don't allow nested elements to be inserted.\\n *\u002F\\nconst TEXT_LEVEL_ELEMENTS = {\\n    \\\"http:\u002F\u002Fwww.w3.org\u002F1999\u002Fxhtml\\\": [\\n        \\\"em\\\",\\n        \\\"strong\\\",\\n        \\\"small\\\",\\n        \\\"s\\\",\\n        \\\"cite\\\",\\n        \\\"q\\\",\\n        \\\"dfn\\\",\\n        \\\"abbr\\\",\\n        \\\"data\\\",\\n        \\\"time\\\",\\n        \\\"code\\\",\\n        \\\"var\\\",\\n        \\\"samp\\\",\\n        \\\"kbd\\\",\\n        \\\"sub\\\",\\n        \\\"sup\\\",\\n        \\\"i\\\",\\n        \\\"b\\\",\\n        \\\"u\\\",\\n        \\\"mark\\\",\\n        \\\"bdi\\\",\\n        \\\"bdo\\\",\\n        \\\"span\\\",\\n        \\\"br\\\",\\n        \\\"wbr\\\",\\n    ],\\n};\\nconst LOCALIZABLE_ATTRIBUTES = {\\n    \\\"http:\u002F\u002Fwww.w3.org\u002F1999\u002Fxhtml\\\": {\\n        global: [\\\"title\\\", \\\"aria-description\\\", \\\"aria-label\\\", \\\"aria-valuetext\\\"],\\n        a: [\\\"download\\\"],\\n        area: [\\\"download\\\", \\\"alt\\\"],\\n        \u002F\u002F value is special-cased in isAttrNameLocalizable\\n        input: [\\\"alt\\\", \\\"placeholder\\\"],\\n        menuitem: [\\\"label\\\"],\\n        menu: [\\\"label\\\"],\\n        optgroup: [\\\"label\\\"],\\n        option: [\\\"label\\\"],\\n        track: [\\\"label\\\"],\\n        img: [\\\"alt\\\"],\\n        textarea: [\\\"placeholder\\\"],\\n        th: [\\\"abbr\\\"],\\n    },\\n    \\\"http:\u002F\u002Fwww.mozilla.org\u002Fkeymaster\u002Fgatekeeper\u002Fthere.is.only.xul\\\": {\\n        global: [\\n            \\\"accesskey\\\",\\n            \\\"aria-label\\\",\\n            \\\"aria-valuetext\\\",\\n            \\\"label\\\",\\n            \\\"title\\\",\\n            \\\"tooltiptext\\\",\\n        ],\\n        description: [\\\"value\\\"],\\n        key: [\\\"key\\\", \\\"keycode\\\"],\\n        label: [\\\"value\\\"],\\n        textbox: [\\\"placeholder\\\", \\\"value\\\"],\\n    },\\n};\\n\u002F**\\n * Translate an element.\\n *\\n * Translate the element's text content and attributes. Some HTML markup is\\n * allowed in the translation. The element's children with the data-l10n-name\\n * attribute will be treated as arguments to the translation. If the\\n * translation defines the same children, their attributes and text contents\\n * will be used for translating the matching source child.\\n *\\n * @param   {Element} element\\n * @param   {Object} translation\\n * @private\\n *\u002F\\nexport default function translateElement(element, translation) {\\n    const { value } = translation;\\n    if (typeof value === \\\"string\\\") {\\n        if (element.localName === \\\"title\\\" &&\\n            element.namespaceURI === \\\"http:\u002F\u002Fwww.w3.org\u002F1999\u002Fxhtml\\\") {\\n            \u002F\u002F A special case for the HTML title element whose content must be text.\\n            element.textContent = value;\\n        }\\n        else if (!reOverlay.test(value)) {\\n            \u002F\u002F If the translation doesn't contain any markup skip the overlay logic.\\n            element.textContent = value;\\n        }\\n        else {\\n            \u002F\u002F Else parse the translation's HTML using an inert template element,\\n            \u002F\u002F sanitize it and replace the element's content.\\n            const templateElement = element.ownerDocument.createElementNS(\\\"http:\u002F\u002Fwww.w3.org\u002F1999\u002Fxhtml\\\", \\\"template\\\");\\n            templateElement.innerHTML = value;\\n            overlayChildNodes(templateElement.content, element);\\n        }\\n    }\\n    \u002F\u002F Even if the translation doesn't define any localizable attributes, run\\n    \u002F\u002F overlayAttributes to remove any localizable attributes set by previous\\n    \u002F\u002F translations.\\n    overlayAttributes(translation, element);\\n}\\n\u002F**\\n * Replace child nodes of an element with child nodes of another element.\\n *\\n * The contents of the target element will be cleared and fully replaced with\\n * sanitized contents of the source element.\\n *\\n * @param {DocumentFragment} fromFragment - The source of children to overlay.\\n * @param {Element} toElement - The target of the overlay.\\n * @private\\n *\u002F\\nfunction overlayChildNodes(fromFragment, toElement) {\\n    for (const childNode of fromFragment.childNodes) {\\n        if (childNode.nodeType === childNode.TEXT_NODE) {\\n            \u002F\u002F Keep the translated text node.\\n            continue;\\n        }\\n        if (childNode.hasAttribute(\\\"data-l10n-name\\\")) {\\n            const sanitized = getNodeForNamedElement(toElement, childNode);\\n            fromFragment.replaceChild(sanitized, childNode);\\n            continue;\\n        }\\n        if (isElementAllowed(childNode)) {\\n            const sanitized = createSanitizedElement(childNode);\\n            fromFragment.replaceChild(sanitized, childNode);\\n            continue;\\n        }\\n        console.warn(`An element of forbidden type \\\"${childNode.localName}\\\" was found in ` +\\n            \\\"the translation. Only safe text-level elements and elements with \\\" +\\n            \\\"data-l10n-name are allowed.\\\");\\n        \u002F\u002F If all else fails, replace the element with its text content.\\n        fromFragment.replaceChild(createTextNodeFromTextContent(childNode), childNode);\\n    }\\n    toElement.textContent = \\\"\\\";\\n    toElement.appendChild(fromFragment);\\n}\\nfunction hasAttribute(attributes, name) {\\n    if (!attributes) {\\n        return false;\\n    }\\n    for (let attr of attributes) {\\n        if (attr.name === name) {\\n            return true;\\n        }\\n    }\\n    return false;\\n}\\n\u002F**\\n * Transplant localizable attributes of an element to another element.\\n *\\n * Any localizable attributes already set on the target element will be\\n * cleared.\\n *\\n * @param   {Element|Object} fromElement - The source of child nodes to overlay.\\n * @param   {Element} toElement - The target of the overlay.\\n * @private\\n *\u002F\\nfunction overlayAttributes(fromElement, toElement) {\\n    const explicitlyAllowed = toElement.hasAttribute(\\\"data-l10n-attrs\\\")\\n        ? toElement\\n            .getAttribute(\\\"data-l10n-attrs\\\")\\n            .split(\\\",\\\")\\n            .map(i => i.trim())\\n        : null;\\n    \u002F\u002F Remove existing localizable attributes if they\\n    \u002F\u002F will not be used in the new translation.\\n    for (const attr of Array.from(toElement.attributes)) {\\n        if (isAttrNameLocalizable(attr.name, toElement, explicitlyAllowed) &&\\n            !hasAttribute(fromElement.attributes, attr.name)) {\\n            toElement.removeAttribute(attr.name);\\n        }\\n    }\\n    \u002F\u002F fromElement might be a {value, attributes} object as returned by\\n    \u002F\u002F Localization.messageFromBundle. In which case attributes may be null to\\n    \u002F\u002F save GC cycles.\\n    if (!fromElement.attributes) {\\n        return;\\n    }\\n    \u002F\u002F Set localizable attributes.\\n    for (const attr of Array.from(fromElement.attributes)) {\\n        if (isAttrNameLocalizable(attr.name, toElement, explicitlyAllowed) &&\\n            toElement.getAttribute(attr.name) !== attr.value) {\\n            toElement.setAttribute(attr.name, attr.value);\\n        }\\n    }\\n}\\n\u002F**\\n * Sanitize a child element created by the translation.\\n *\\n * Try to find a corresponding child in sourceElement and use it as the base\\n * for the sanitization. This will preserve functional attribtues defined on\\n * the child element in the source HTML.\\n *\\n * @param   {Element} sourceElement - The source for data-l10n-name lookups.\\n * @param   {Element} translatedChild - The translated child to be sanitized.\\n * @returns {Element}\\n * @private\\n *\u002F\\nfunction getNodeForNamedElement(sourceElement, translatedChild) {\\n    const childName = translatedChild.getAttribute(\\\"data-l10n-name\\\");\\n    const sourceChild = sourceElement.querySelector(`[data-l10n-name=\\\"${childName}\\\"]`);\\n    if (!sourceChild) {\\n        console.warn(`An element named \\\"${childName}\\\" wasn't found in the source.`);\\n        return createTextNodeFromTextContent(translatedChild);\\n    }\\n    if (sourceChild.localName !== translatedChild.localName) {\\n        console.warn(`An element named \\\"${childName}\\\" was found in the translation ` +\\n            `but its type ${translatedChild.localName} didn't match the ` +\\n            `element found in the source (${sourceChild.localName}).`);\\n        return createTextNodeFromTextContent(translatedChild);\\n    }\\n    \u002F\u002F Remove it from sourceElement so that the translation cannot use\\n    \u002F\u002F the same reference name again.\\n    sourceElement.removeChild(sourceChild);\\n    \u002F\u002F We can't currently guarantee that a translation won't remove\\n    \u002F\u002F sourceChild from the element completely, which could break the app if\\n    \u002F\u002F it relies on an event handler attached to the sourceChild. Let's make\\n    \u002F\u002F this limitation explicit for now by breaking the identitiy of the\\n    \u002F\u002F sourceChild by cloning it. This will destroy all event handlers\\n    \u002F\u002F attached to sourceChild via addEventListener and via on\u003Cname>\\n    \u002F\u002F properties.\\n    const clone = sourceChild.cloneNode(false);\\n    return shallowPopulateUsing(translatedChild, clone);\\n}\\n\u002F**\\n * Sanitize an allowed element.\\n *\\n * Text-level elements allowed in translations may only use safe attributes\\n * and will have any nested markup stripped to text content.\\n *\\n * @param   {Element} element - The element to be sanitized.\\n * @returns {Element}\\n * @private\\n *\u002F\\nfunction createSanitizedElement(element) {\\n    \u002F\u002F Start with an empty element of the same type to remove nested children\\n    \u002F\u002F and non-localizable attributes defined by the translation.\\n    const clone = element.ownerDocument.createElement(element.localName);\\n    return shallowPopulateUsing(element, clone);\\n}\\n\u002F**\\n * Convert an element to a text node.\\n *\\n * @param   {Element} element - The element to be sanitized.\\n * @returns {Node}\\n * @private\\n *\u002F\\nfunction createTextNodeFromTextContent(element) {\\n    return element.ownerDocument.createTextNode(element.textContent);\\n}\\n\u002F**\\n * Check if element is allowed in the translation.\\n *\\n * This method is used by the sanitizer when the translation markup contains\\n * an element which is not present in the source code.\\n *\\n * @param   {Element} element\\n * @returns {boolean}\\n * @private\\n *\u002F\\nfunction isElementAllowed(element) {\\n    const allowed = TEXT_LEVEL_ELEMENTS[element.namespaceURI];\\n    return allowed && allowed.includes(element.localName);\\n}\\n\u002F**\\n * Check if attribute is allowed for the given element.\\n *\\n * This method is used by the sanitizer when the translation markup contains\\n * DOM attributes, or when the translation has traits which map to DOM\\n * attributes.\\n *\\n * `explicitlyAllowed` can be passed as a list of attributes explicitly\\n * allowed on this element.\\n *\\n * @param   {string}         name\\n * @param   {Element}        element\\n * @param   {Array}          explicitlyAllowed\\n * @returns {boolean}\\n * @private\\n *\u002F\\nfunction isAttrNameLocalizable(name, element, explicitlyAllowed = null) {\\n    if (explicitlyAllowed && explicitlyAllowed.includes(name)) {\\n        return true;\\n    }\\n    const allowed = LOCALIZABLE_ATTRIBUTES[element.namespaceURI];\\n    if (!allowed) {\\n        return false;\\n    }\\n    const attrName = name.toLowerCase();\\n    const elemName = element.localName;\\n    \u002F\u002F Is it a globally safe attribute?\\n    if (allowed.global.includes(attrName)) {\\n        return true;\\n    }\\n    \u002F\u002F Are there no allowed attributes for this element?\\n    if (!allowed[elemName]) {\\n        return false;\\n    }\\n    \u002F\u002F Is it allowed on this element?\\n    if (allowed[elemName].includes(attrName)) {\\n        return true;\\n    }\\n    \u002F\u002F Special case for value on HTML inputs with type button, reset, submit\\n    if (element.namespaceURI === \\\"http:\u002F\u002Fwww.w3.org\u002F1999\u002Fxhtml\\\" &&\\n        elemName === \\\"input\\\" &&\\n        attrName === \\\"value\\\") {\\n        const type = element.type.toLowerCase();\\n        if (type === \\\"submit\\\" || type === \\\"button\\\" || type === \\\"reset\\\") {\\n            return true;\\n        }\\n    }\\n    return false;\\n}\\n\u002F**\\n * Helper to set textContent and localizable attributes on an element.\\n *\\n * @param   {Element} fromElement\\n * @param   {Element} toElement\\n * @returns {Element}\\n * @private\\n *\u002F\\nfunction shallowPopulateUsing(fromElement, toElement) {\\n    toElement.textContent = fromElement.textContent;\\n    overlayAttributes(fromElement, toElement);\\n    return toElement;\\n}\\n\",\"\u002F*\\n * Base CachedIterable class.\\n *\u002F\\nexport default class CachedIterable extends Array {\\n    \u002F**\\n     * Create a `CachedIterable` instance from an iterable or, if another\\n     * instance of `CachedIterable` is passed, return it without any\\n     * modifications.\\n     *\\n     * @param {Iterable} iterable\\n     * @returns {CachedIterable}\\n     *\u002F\\n    static from(iterable) {\\n        if (iterable instanceof this) {\\n            return iterable;\\n        }\\n\\n        return new this(iterable);\\n    }\\n}\\n\",\"import CachedIterable from \\\".\u002Fcached_iterable.js\\\";\\n\\n\u002F*\\n * CachedSyncIterable caches the elements yielded by an iterable.\\n *\\n * It can be used to iterate over an iterable many times without depleting the\\n * iterable.\\n *\u002F\\nexport default class CachedSyncIterable extends CachedIterable {\\n    \u002F**\\n     * Create an `CachedSyncIterable` instance.\\n     *\\n     * @param {Iterable} iterable\\n     * @returns {CachedSyncIterable}\\n     *\u002F\\n    constructor(iterable) {\\n        super();\\n\\n        if (Symbol.iterator in Object(iterable)) {\\n            this.iterator = iterable[Symbol.iterator]();\\n        } else {\\n            throw new TypeError(\\\"Argument must implement the iteration protocol.\\\");\\n        }\\n    }\\n\\n    [Symbol.iterator]() {\\n        const cached = this;\\n        let cur = 0;\\n\\n        return {\\n            next() {\\n                if (cached.length \u003C= cur) {\\n                    cached.push(cached.iterator.next());\\n                }\\n                return cached[cur++];\\n            }\\n        };\\n    }\\n\\n    \u002F**\\n     * This method allows user to consume the next element from the iterator\\n     * into the cache.\\n     *\\n     * @param {number} count - number of elements to consume\\n     *\u002F\\n    touchNext(count = 1) {\\n        let idx = 0;\\n        while (idx++ \u003C count) {\\n            const last = this[this.length - 1];\\n            if (last && last.done) {\\n                break;\\n            }\\n            this.push(this.iterator.next());\\n        }\\n        \u002F\u002F Return the last cached {value, done} object to allow the calling\\n        \u002F\u002F code to decide if it needs to call touchNext again.\\n        return this[this.length - 1];\\n    }\\n}\\n\",\"import CachedIterable from \\\".\u002Fcached_iterable.js\\\";\\n\\n\u002F*\\n * CachedAsyncIterable caches the elements yielded by an async iterable.\\n *\\n * It can be used to iterate over an iterable many times without depleting the\\n * iterable.\\n *\u002F\\nexport default class CachedAsyncIterable extends CachedIterable {\\n    \u002F**\\n     * Create an `CachedAsyncIterable` instance.\\n     *\\n     * @param {Iterable} iterable\\n     * @returns {CachedAsyncIterable}\\n     *\u002F\\n    constructor(iterable) {\\n        super();\\n\\n        if (Symbol.asyncIterator in Object(iterable)) {\\n            this.iterator = iterable[Symbol.asyncIterator]();\\n        } else if (Symbol.iterator in Object(iterable)) {\\n            this.iterator = iterable[Symbol.iterator]();\\n        } else {\\n            throw new TypeError(\\\"Argument must implement the iteration protocol.\\\");\\n        }\\n    }\\n\\n    \u002F**\\n     * Asynchronous iterator caching the yielded elements.\\n     *\\n     * Elements yielded by the original iterable will be cached and available\\n     * synchronously. Returns an async generator object implementing the\\n     * iterator protocol over the elements of the original (async or sync)\\n     * iterable.\\n     *\u002F\\n    [Symbol.asyncIterator]() {\\n        const cached = this;\\n        let cur = 0;\\n\\n        return {\\n            async next() {\\n                if (cached.length \u003C= cur) {\\n                    cached.push(cached.iterator.next());\\n                }\\n                return cached[cur++];\\n            }\\n        };\\n    }\\n\\n    \u002F**\\n     * This method allows user to consume the next element from the iterator\\n     * into the cache.\\n     *\\n     * @param {number} count - number of elements to consume\\n     *\u002F\\n    async touchNext(count = 1) {\\n        let idx = 0;\\n        while (idx++ \u003C count) {\\n            const last = this[this.length - 1];\\n            if (last && (await last).done) {\\n                break;\\n            }\\n            this.push(this.iterator.next());\\n        }\\n        \u002F\u002F Return the last cached {value, done} object to allow the calling\\n        \u002F\u002F code to decide if it needs to call touchNext again.\\n        return this[this.length - 1];\\n    }\\n}\\n\",\"export {default as CachedSyncIterable} from \\\".\u002Fcached_sync_iterable.js\\\";\\nexport {default as CachedAsyncIterable} from \\\".\u002Fcached_async_iterable.js\\\";\\n\",\"\u002F* eslint no-console: [\\\"error\\\", { allow: [\\\"warn\\\", \\\"error\\\"] }] *\u002F\\n\u002F* global console *\u002F\\nimport { CachedAsyncIterable } from \\\"cached-iterable\\\";\\n\u002F**\\n * The `Localization` class is a central high-level API for vanilla\\n * JavaScript use of Fluent.\\n * It combines language negotiation, FluentBundle and I\u002FO to\\n * provide a scriptable API to format translations.\\n *\u002F\\nexport default class Localization {\\n    \u002F**\\n     * @param {Array\u003CString>} resourceIds     - List of resource IDs\\n     * @param {Function}      generateBundles - Function that returns a\\n     *                                          generator over FluentBundles\\n     *\\n     * @returns {Localization}\\n     *\u002F\\n    constructor(resourceIds = [], generateBundles) {\\n        this.resourceIds = resourceIds;\\n        this.generateBundles = generateBundles;\\n        this.onChange(true);\\n    }\\n    addResourceIds(resourceIds, eager = false) {\\n        this.resourceIds.push(...resourceIds);\\n        this.onChange(eager);\\n        return this.resourceIds.length;\\n    }\\n    removeResourceIds(resourceIds) {\\n        this.resourceIds = this.resourceIds.filter(r => !resourceIds.includes(r));\\n        this.onChange();\\n        return this.resourceIds.length;\\n    }\\n    \u002F**\\n     * Format translations and handle fallback if needed.\\n     *\\n     * Format translations for `keys` from `FluentBundle` instances on this\\n     * DOMLocalization. In case of errors, fetch the next context in the\\n     * fallback chain.\\n     *\\n     * @param   {Array\u003CObject>}         keys    - Translation keys to format.\\n     * @param   {Function}              method  - Formatting function.\\n     * @returns {Promise\u003CArray\u003Cstring|Object>>}\\n     * @private\\n     *\u002F\\n    async formatWithFallback(keys, method) {\\n        const translations = [];\\n        let hasAtLeastOneBundle = false;\\n        for await (const bundle of this.bundles) {\\n            hasAtLeastOneBundle = true;\\n            const missingIds = keysFromBundle(method, bundle, keys, translations);\\n            if (missingIds.size === 0) {\\n                break;\\n            }\\n            if (typeof console !== \\\"undefined\\\") {\\n                const locale = bundle.locales[0];\\n                const ids = Array.from(missingIds).join(\\\", \\\");\\n                console.warn(`[fluent] Missing translations in ${locale}: ${ids}`);\\n            }\\n        }\\n        if (!hasAtLeastOneBundle && typeof console !== \\\"undefined\\\") {\\n            console.warn(`[fluent] Request for keys failed because no resource bundles got generated.\\n  keys: ${JSON.stringify(keys)}.\\n  resourceIds: ${JSON.stringify(this.resourceIds)}.`);\\n        }\\n        return translations;\\n    }\\n    \u002F**\\n     * Format translations into `{value, attributes}` objects.\\n     *\\n     * The fallback logic is the same as in `formatValues`\\n     * but it returns `{value, attributes}` objects\\n     * which are suitable for the translation of DOM elements.\\n     *\\n     * Returns a Promise resolving to an array of the translation strings.\\n     *\\n     * @example\\n     * ```js\\n     * docL10n.formatMessages([\\n     *   {id: 'hello', args: { who: 'Mary' }},\\n     *   {id: 'welcome'}\\n     * ]).then(console.log);\\n     *\\n     * \u002F\u002F [\\n     * \u002F\u002F   { value: 'Hello, Mary!', attributes: null },\\n     * \u002F\u002F   {\\n     * \u002F\u002F     value: 'Welcome!',\\n     * \u002F\u002F     attributes: [ { name: \\\"title\\\", value: 'Hello' } ]\\n     * \u002F\u002F   }\\n     * \u002F\u002F ]\\n     * ```\\n     *\\n     * @param   {Array\u003CObject>} keys\\n     * @returns {Promise\u003CArray\u003C{value: string, attributes: Object}>>}\\n     * @private\\n     *\u002F\\n    formatMessages(keys) {\\n        return this.formatWithFallback(keys, messageFromBundle);\\n    }\\n    \u002F**\\n     * Retrieve translations corresponding to the passed keys.\\n     *\\n     * A generalized version of `DOMLocalization.formatValue`. Keys must\\n     * be `{id, args}` objects.\\n     *\\n     * Returns a Promise resolving to an array of the translation strings.\\n     *\\n     * @example\\n     * ```js\\n     * docL10n.formatValues([\\n     *   {id: 'hello', args: { who: 'Mary' }},\\n     *   {id: 'hello', args: { who: 'John' }},\\n     *   {id: 'welcome'}\\n     * ]).then(console.log);\\n     *\\n     * \u002F\u002F ['Hello, Mary!', 'Hello, John!', 'Welcome!']\\n     * ```\\n     *\\n     * @param   {Array\u003CObject>} keys\\n     * @returns {Promise\u003CArray\u003Cstring>>}\\n     *\u002F\\n    formatValues(keys) {\\n        return this.formatWithFallback(keys, valueFromBundle);\\n    }\\n    \u002F**\\n     * Retrieve the translation corresponding to the `id` identifier.\\n     *\\n     * If passed, `args` is a simple hash object with a list of variables that\\n     * will be interpolated in the value of the translation.\\n     *\\n     * Returns a Promise resolving to the translation string.\\n     *\\n     * Use this sparingly for one-off messages which don't need to be\\n     * retranslated when the user changes their language preferences, e.g. in\\n     * notifications.\\n     *\\n     * @example\\n     * ```js\\n     * docL10n.formatValue(\\n     *   'hello', { who: 'world' }\\n     * ).then(console.log);\\n     *\\n     * \u002F\u002F 'Hello, world!'\\n     * ```\\n     *\\n     * @param   {string}  id     - Identifier of the translation to format\\n     * @param   {Object}  [args] - Optional external arguments\\n     * @returns {Promise\u003Cstring>}\\n     *\u002F\\n    async formatValue(id, args) {\\n        const [val] = await this.formatValues([{ id, args }]);\\n        return val;\\n    }\\n    handleEvent() {\\n        this.onChange();\\n    }\\n    \u002F**\\n     * This method should be called when there's a reason to believe\\n     * that language negotiation or available resources changed.\\n     *\u002F\\n    onChange(eager = false) {\\n        this.bundles = CachedAsyncIterable.from(this.generateBundles(this.resourceIds));\\n        if (eager) {\\n            this.bundles.touchNext(2);\\n        }\\n    }\\n}\\n\u002F**\\n * Format the value of a message into a string or `null`.\\n *\\n * This function is passed as a method to `keysFromBundle` and resolve\\n * a value of a single L10n Entity using provided `FluentBundle`.\\n *\\n * If the message doesn't have a value, return `null`.\\n *\\n * @param   {FluentBundle} bundle\\n * @param   {Array\u003CError>} errors\\n * @param   {Object} message\\n * @param   {Object} args\\n * @returns {string|null}\\n * @private\\n *\u002F\\nfunction valueFromBundle(bundle, errors, message, args) {\\n    if (message.value) {\\n        return bundle.formatPattern(message.value, args, errors);\\n    }\\n    return null;\\n}\\n\u002F**\\n * Format all public values of a message into a {value, attributes} object.\\n *\\n * This function is passed as a method to `keysFromBundle` and resolve\\n * a single L10n Entity using provided `FluentBundle`.\\n *\\n * The function will return an object with a value and attributes of the\\n * entity.\\n *\\n * @param   {FluentBundle} bundle\\n * @param   {Array\u003CError>} errors\\n * @param   {Object} message\\n * @param   {Object} args\\n * @returns {Object}\\n * @private\\n *\u002F\\nfunction messageFromBundle(bundle, errors, message, args) {\\n    const formatted = {\\n        value: null,\\n        attributes: null,\\n    };\\n    if (message.value) {\\n        formatted.value = bundle.formatPattern(message.value, args, errors);\\n    }\\n    let attrNames = Object.keys(message.attributes);\\n    if (attrNames.length > 0) {\\n        formatted.attributes = new Array(attrNames.length);\\n        for (let [i, name] of attrNames.entries()) {\\n            let value = bundle.formatPattern(message.attributes[name], args, errors);\\n            formatted.attributes[i] = { name, value };\\n        }\\n    }\\n    return formatted;\\n}\\n\u002F**\\n * This function is an inner function for `Localization.formatWithFallback`.\\n *\\n * It takes a `FluentBundle`, list of l10n-ids and a method to be used for\\n * key resolution (either `valueFromBundle` or `messageFromBundle`) and\\n * optionally a value returned from `keysFromBundle` executed against\\n * another `FluentBundle`.\\n *\\n * The idea here is that if the previous `FluentBundle` did not resolve\\n * all keys, we're calling this function with the next context to resolve\\n * the remaining ones.\\n *\\n * In the function, we loop over `keys` and check if we have the `prev`\\n * passed and if it has an error entry for the position we're in.\\n *\\n * If it doesn't, it means that we have a good translation for this key and\\n * we return it. If it does, we'll try to resolve the key using the passed\\n * `FluentBundle`.\\n *\\n * In the end, we fill the translations array, and return the Set with\\n * missing ids.\\n *\\n * See `Localization.formatWithFallback` for more info on how this is used.\\n *\\n * @param {Function}       method\\n * @param {FluentBundle} bundle\\n * @param {Array\u003Cstring>}  keys\\n * @param {{Array\u003C{value: string, attributes: Object}>}} translations\\n *\\n * @returns {Set\u003Cstring>}\\n * @private\\n *\u002F\\nfunction keysFromBundle(method, bundle, keys, translations) {\\n    const messageErrors = [];\\n    const missingIds = new Set();\\n    keys.forEach(({ id, args }, i) => {\\n        if (translations[i] !== undefined) {\\n            return;\\n        }\\n        let message = bundle.getMessage(id);\\n        if (message) {\\n            messageErrors.length = 0;\\n            translations[i] = method(bundle, messageErrors, message, args);\\n            if (messageErrors.length > 0 && typeof console !== \\\"undefined\\\") {\\n                const locale = bundle.locales[0];\\n                const errors = messageErrors.join(\\\", \\\");\\n                console.warn(`[fluent][resolver] errors in ${locale}\u002F${id}: ${errors}.`);\\n            }\\n        }\\n        else {\\n            missingIds.add(id);\\n        }\\n    });\\n    return missingIds;\\n}\\n\",\"import translateElement from \\\".\u002Foverlay.js\\\";\\nimport Localization from \\\".\u002Flocalization.js\\\";\\nconst L10NID_ATTR_NAME = \\\"data-l10n-id\\\";\\nconst L10NARGS_ATTR_NAME = \\\"data-l10n-args\\\";\\nconst L10N_ELEMENT_QUERY = `[${L10NID_ATTR_NAME}]`;\\n\u002F**\\n * The `DOMLocalization` class is responsible for fetching resources and\\n * formatting translations.\\n *\\n * It implements the fallback strategy in case of errors encountered during the\\n * formatting of translations and methods for observing DOM\\n * trees with a `MutationObserver`.\\n *\u002F\\nexport default class DOMLocalization extends Localization {\\n    \u002F**\\n     * @param {Array\u003CString>}    resourceIds     - List of resource IDs\\n     * @param {Function}         generateBundles - Function that returns a\\n     *                                             generator over FluentBundles\\n     * @returns {DOMLocalization}\\n     *\u002F\\n    constructor(resourceIds, generateBundles) {\\n        super(resourceIds, generateBundles);\\n        \u002F\u002F A Set of DOM trees observed by the `MutationObserver`.\\n        this.roots = new Set();\\n        \u002F\u002F requestAnimationFrame handler.\\n        this.pendingrAF = null;\\n        \u002F\u002F list of elements pending for translation.\\n        this.pendingElements = new Set();\\n        this.windowElement = null;\\n        this.mutationObserver = null;\\n        this.observerConfig = {\\n            attributes: true,\\n            characterData: false,\\n            childList: true,\\n            subtree: true,\\n            attributeFilter: [L10NID_ATTR_NAME, L10NARGS_ATTR_NAME],\\n        };\\n    }\\n    onChange(eager = false) {\\n        super.onChange(eager);\\n        if (this.roots) {\\n            this.translateRoots();\\n        }\\n    }\\n    \u002F**\\n     * Set the `data-l10n-id` and `data-l10n-args` attributes on DOM elements.\\n     * FluentDOM makes use of mutation observers to detect changes\\n     * to `data-l10n-*` attributes and translate elements asynchronously.\\n     * `setAttributes` is a convenience method which allows to translate\\n     * DOM elements declaratively.\\n     *\\n     * You should always prefer to use `data-l10n-id` on elements (statically in\\n     * HTML or dynamically via `setAttributes`) over manually retrieving\\n     * translations with `format`.  The use of attributes ensures that the\\n     * elements can be retranslated when the user changes their language\\n     * preferences.\\n     *\\n     * ```javascript\\n     * localization.setAttributes(\\n     *   document.querySelector('#welcome'), 'hello', { who: 'world' }\\n     * );\\n     * ```\\n     *\\n     * This will set the following attributes on the `#welcome` element.\\n     * The MutationObserver will pick up this change and will localize the element\\n     * asynchronously.\\n     *\\n     * ```html\\n     * \u003Cp id='welcome'\\n     *   data-l10n-id='hello'\\n     *   data-l10n-args='{\\\"who\\\": \\\"world\\\"}'>\\n     * \u003C\u002Fp>\\n     * ```\\n     *\\n     * @param {Element}                element - Element to set attributes on\\n     * @param {string}                 id      - l10n-id string\\n     * @param {Object\u003Cstring, string>} args    - KVP list of l10n arguments\\n     * @returns {Element}\\n     *\u002F\\n    setAttributes(element, id, args) {\\n        element.setAttribute(L10NID_ATTR_NAME, id);\\n        if (args) {\\n            element.setAttribute(L10NARGS_ATTR_NAME, JSON.stringify(args));\\n        }\\n        else {\\n            element.removeAttribute(L10NARGS_ATTR_NAME);\\n        }\\n        return element;\\n    }\\n    \u002F**\\n     * Get the `data-l10n-*` attributes from DOM elements.\\n     *\\n     * ```javascript\\n     * localization.getAttributes(\\n     *   document.querySelector('#welcome')\\n     * );\\n     * \u002F\u002F -> { id: 'hello', args: { who: 'world' } }\\n     * ```\\n     *\\n     * @param   {Element}  element - HTML element\\n     * @returns {{id: string, args: Object}}\\n     *\u002F\\n    getAttributes(element) {\\n        return {\\n            id: element.getAttribute(L10NID_ATTR_NAME),\\n            args: JSON.parse(element.getAttribute(L10NARGS_ATTR_NAME) || null),\\n        };\\n    }\\n    \u002F**\\n     * Add `newRoot` to the list of roots managed by this `DOMLocalization`.\\n     *\\n     * Additionally, if this `DOMLocalization` has an observer, start observing\\n     * `newRoot` in order to translate mutations in it.\\n     *\\n     * @param {Element}      newRoot - Root to observe.\\n     *\u002F\\n    connectRoot(newRoot) {\\n        for (const root of this.roots) {\\n            if (root === newRoot ||\\n                root.contains(newRoot) ||\\n                newRoot.contains(root)) {\\n                throw new Error(\\\"Cannot add a root that overlaps with existing root.\\\");\\n            }\\n        }\\n        if (this.windowElement) {\\n            if (this.windowElement !== newRoot.ownerDocument.defaultView) {\\n                throw new Error(`Cannot connect a root:\\n          DOMLocalization already has a root from a different window.`);\\n            }\\n        }\\n        else {\\n            this.windowElement = newRoot.ownerDocument.defaultView;\\n            this.mutationObserver = new this.windowElement.MutationObserver(mutations => this.translateMutations(mutations));\\n        }\\n        this.roots.add(newRoot);\\n        this.mutationObserver.observe(newRoot, this.observerConfig);\\n    }\\n    \u002F**\\n     * Remove `root` from the list of roots managed by this `DOMLocalization`.\\n     *\\n     * Additionally, if this `DOMLocalization` has an observer, stop observing\\n     * `root`.\\n     *\\n     * Returns `true` if the root was the last one managed by this\\n     * `DOMLocalization`.\\n     *\\n     * @param   {Element} root - Root to disconnect.\\n     * @returns {boolean}\\n     *\u002F\\n    disconnectRoot(root) {\\n        this.roots.delete(root);\\n        \u002F\u002F Pause the mutation observer to stop observing `root`.\\n        this.pauseObserving();\\n        if (this.roots.size === 0) {\\n            this.mutationObserver = null;\\n            if (this.windowElement && this.pendingrAF) {\\n                this.windowElement.cancelAnimationFrame(this.pendingrAF);\\n            }\\n            this.windowElement = null;\\n            this.pendingrAF = null;\\n            this.pendingElements.clear();\\n            return true;\\n        }\\n        \u002F\u002F Resume observing all other roots.\\n        this.resumeObserving();\\n        return false;\\n    }\\n    \u002F**\\n     * Translate all roots associated with this `DOMLocalization`.\\n     *\\n     * @returns {Promise}\\n     *\u002F\\n    translateRoots() {\\n        const roots = Array.from(this.roots);\\n        return Promise.all(roots.map(root => this.translateFragment(root)));\\n    }\\n    \u002F**\\n     * Pauses the `MutationObserver`.\\n     *\u002F\\n    pauseObserving() {\\n        if (!this.mutationObserver) {\\n            return;\\n        }\\n        this.translateMutations(this.mutationObserver.takeRecords());\\n        this.mutationObserver.disconnect();\\n    }\\n    \u002F**\\n     * Resumes the `MutationObserver`.\\n     *\u002F\\n    resumeObserving() {\\n        if (!this.mutationObserver) {\\n            return;\\n        }\\n        for (const root of this.roots) {\\n            this.mutationObserver.observe(root, this.observerConfig);\\n        }\\n    }\\n    \u002F**\\n     * Translate mutations detected by the `MutationObserver`.\\n     *\\n     * @private\\n     *\u002F\\n    translateMutations(mutations) {\\n        for (const mutation of mutations) {\\n            switch (mutation.type) {\\n                case \\\"attributes\\\":\\n                    if (mutation.target.hasAttribute(\\\"data-l10n-id\\\")) {\\n                        this.pendingElements.add(mutation.target);\\n                    }\\n                    break;\\n                case \\\"childList\\\":\\n                    for (const addedNode of mutation.addedNodes) {\\n                        if (addedNode.nodeType === addedNode.ELEMENT_NODE) {\\n                            if (addedNode.childElementCount) {\\n                                for (const element of this.getTranslatables(addedNode)) {\\n                                    this.pendingElements.add(element);\\n                                }\\n                            }\\n                            else if (addedNode.hasAttribute(L10NID_ATTR_NAME)) {\\n                                this.pendingElements.add(addedNode);\\n                            }\\n                        }\\n                    }\\n                    break;\\n            }\\n        }\\n        \u002F\u002F This fragment allows us to coalesce all pending translations\\n        \u002F\u002F into a single requestAnimationFrame.\\n        if (this.pendingElements.size > 0) {\\n            if (this.pendingrAF === null) {\\n                this.pendingrAF = this.windowElement.requestAnimationFrame(() => {\\n                    this.translateElements(Array.from(this.pendingElements));\\n                    this.pendingElements.clear();\\n                    this.pendingrAF = null;\\n                });\\n            }\\n        }\\n    }\\n    \u002F**\\n     * Translate a DOM element or fragment asynchronously using this\\n     * `DOMLocalization` object.\\n     *\\n     * Manually trigger the translation (or re-translation) of a DOM fragment.\\n     * Use the `data-l10n-id` and `data-l10n-args` attributes to mark up the DOM\\n     * with information about which translations to use.\\n     *\\n     * Returns a `Promise` that gets resolved once the translation is complete.\\n     *\\n     * @param   {DOMFragment} frag - Element or DocumentFragment to be translated\\n     * @returns {Promise}\\n     *\u002F\\n    translateFragment(frag) {\\n        return this.translateElements(this.getTranslatables(frag));\\n    }\\n    \u002F**\\n     * Translate a list of DOM elements asynchronously using this\\n     * `DOMLocalization` object.\\n     *\\n     * Manually trigger the translation (or re-translation) of a list of elements.\\n     * Use the `data-l10n-id` and `data-l10n-args` attributes to mark up the DOM\\n     * with information about which translations to use.\\n     *\\n     * Returns a `Promise` that gets resolved once the translation is complete.\\n     *\\n     * @param   {Array\u003CElement>} elements - List of elements to be translated\\n     * @returns {Promise}\\n     *\u002F\\n    async translateElements(elements) {\\n        if (!elements.length) {\\n            return undefined;\\n        }\\n        const keys = elements.map(this.getKeysForElement);\\n        const translations = await this.formatMessages(keys);\\n        return this.applyTranslations(elements, translations);\\n    }\\n    \u002F**\\n     * Applies translations onto elements.\\n     *\\n     * @param {Array\u003CElement>} elements\\n     * @param {Array\u003CObject>}  translations\\n     * @private\\n     *\u002F\\n    applyTranslations(elements, translations) {\\n        this.pauseObserving();\\n        for (let i = 0; i \u003C elements.length; i++) {\\n            if (translations[i] !== undefined) {\\n                translateElement(elements[i], translations[i]);\\n            }\\n        }\\n        this.resumeObserving();\\n    }\\n    \u002F**\\n     * Collects all translatable child elements of the element.\\n     *\\n     * @param {Element} element\\n     * @returns {Array\u003CElement>}\\n     * @private\\n     *\u002F\\n    getTranslatables(element) {\\n        const nodes = Array.from(element.querySelectorAll(L10N_ELEMENT_QUERY));\\n        if (typeof element.hasAttribute === \\\"function\\\" &&\\n            element.hasAttribute(L10NID_ATTR_NAME)) {\\n            nodes.push(element);\\n        }\\n        return nodes;\\n    }\\n    \u002F**\\n     * Get the `data-l10n-*` attributes from DOM elements as a two-element\\n     * array.\\n     *\\n     * @param {Element} element\\n     * @returns {Object}\\n     * @private\\n     *\u002F\\n    getKeysForElement(element) {\\n        return {\\n            id: element.getAttribute(L10NID_ATTR_NAME),\\n            args: JSON.parse(element.getAttribute(L10NARGS_ATTR_NAME) || null),\\n        };\\n    }\\n}\\n\",\"export { default as DOMLocalization } from \\\".\u002Fdom_localization.js\\\";\\nexport { default as Localization } from \\\".\u002Flocalization.js\\\";\\n\",\"\u002F* Copyright 2023 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IL10n} IL10n *\u002F\\n\\n\u002F**\\n * NOTE: The L10n-implementations should use lowercase language-codes\\n *       internally.\\n * @implements {IL10n}\\n *\u002F\\nclass L10n {\\n  #dir;\\n\\n  #elements;\\n\\n  #lang;\\n\\n  #l10n;\\n\\n  constructor({ lang, isRTL }, l10n = null) {\\n    this.#lang = L10n.#fixupLangCode(lang);\\n    this.#l10n = l10n;\\n    this.#dir = (isRTL ?? L10n.#isRTL(this.#lang)) ? \\\"rtl\\\" : \\\"ltr\\\";\\n  }\\n\\n  _setL10n(l10n) {\\n    this.#l10n = l10n;\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING\\\")) {\\n      document.l10n = l10n;\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  getLanguage() {\\n    return this.#lang;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  getDirection() {\\n    return this.#dir;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  async get(ids, args = null, fallback) {\\n    if (Array.isArray(ids)) {\\n      ids = ids.map(id => ({ id }));\\n      const messages = await this.#l10n.formatMessages(ids);\\n      return messages.map(message => message.value);\\n    }\\n\\n    const messages = await this.#l10n.formatMessages([\\n      {\\n        id: ids,\\n        args,\\n      },\\n    ]);\\n    return messages[0]?.value || fallback;\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  async translate(element) {\\n    (this.#elements ||= new Set()).add(element);\\n    try {\\n      this.#l10n.connectRoot(element);\\n      await this.#l10n.translateRoots();\\n    } catch {\\n      \u002F\u002F Element is under an existing root, so there is no need to add it again.\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  async translateOnce(element) {\\n    try {\\n      await this.#l10n.translateElements([element]);\\n    } catch (ex) {\\n      console.error(\\\"translateOnce:\\\", ex);\\n    }\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  async destroy() {\\n    if (this.#elements) {\\n      for (const element of this.#elements) {\\n        this.#l10n.disconnectRoot(element);\\n      }\\n      this.#elements.clear();\\n      this.#elements = null;\\n    }\\n    this.#l10n.pauseObserving();\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  pause() {\\n    this.#l10n.pauseObserving();\\n  }\\n\\n  \u002F** @inheritdoc *\u002F\\n  resume() {\\n    this.#l10n.resumeObserving();\\n  }\\n\\n  static #fixupLangCode(langCode) {\\n    \u002F\u002F Use only lowercase language-codes internally, and fallback to English.\\n    langCode = langCode?.toLowerCase() || \\\"en-us\\\";\\n\\n    \u002F\u002F Try to support \\\"incompletely\\\" specified language codes (see issue 13689).\\n    const PARTIAL_LANG_CODES = {\\n      en: \\\"en-us\\\",\\n      es: \\\"es-es\\\",\\n      fy: \\\"fy-nl\\\",\\n      ga: \\\"ga-ie\\\",\\n      gu: \\\"gu-in\\\",\\n      hi: \\\"hi-in\\\",\\n      hy: \\\"hy-am\\\",\\n      nb: \\\"nb-no\\\",\\n      ne: \\\"ne-np\\\",\\n      nn: \\\"nn-no\\\",\\n      pa: \\\"pa-in\\\",\\n      pt: \\\"pt-pt\\\",\\n      sv: \\\"sv-se\\\",\\n      zh: \\\"zh-cn\\\",\\n    };\\n    return PARTIAL_LANG_CODES[langCode] || langCode;\\n  }\\n\\n  static #isRTL(lang) {\\n    const shortCode = lang.split(\\\"-\\\", 1)[0];\\n    return [\\\"ar\\\", \\\"he\\\", \\\"fa\\\", \\\"ps\\\", \\\"ur\\\"].includes(shortCode);\\n  }\\n}\\n\\nconst GenericL10n = null;\\n\\nexport { GenericL10n, L10n };\\n\",\"\u002F* Copyright 2017 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IL10n} IL10n *\u002F\\n\\nimport { FeatureTest, fetchData } from \\\"pdfjs-lib\\\";\\nimport { FluentBundle, FluentResource } from \\\"fluent-bundle\\\";\\nimport { DOMLocalization } from \\\"fluent-dom\\\";\\nimport { L10n } from \\\".\u002Fl10n.js\\\";\\n\\nfunction PLATFORM() {\\n  const { isAndroid, isLinux, isMac, isWindows } = FeatureTest.platform;\\n  if (isLinux) {\\n    return \\\"linux\\\";\\n  }\\n  if (isWindows) {\\n    return \\\"windows\\\";\\n  }\\n  if (isMac) {\\n    return \\\"macos\\\";\\n  }\\n  if (isAndroid) {\\n    return \\\"android\\\";\\n  }\\n  return \\\"other\\\";\\n}\\n\\nfunction createBundle(lang, text) {\\n  const resource = new FluentResource(text);\\n  const bundle = new FluentBundle(lang, {\\n    functions: { PLATFORM },\\n  });\\n  const errors = bundle.addResource(resource);\\n  if (errors.length) {\\n    console.error(\\\"L10n errors\\\", errors);\\n  }\\n  return bundle;\\n}\\n\\n\u002F**\\n * @implements {IL10n}\\n *\u002F\\nclass GenericL10n extends L10n {\\n  constructor(lang) {\\n    super({ lang });\\n\\n    const generateBundles = !lang\\n      ? GenericL10n.#generateBundlesFallback.bind(\\n          GenericL10n,\\n          this.getLanguage()\\n        )\\n      : GenericL10n.#generateBundles.bind(\\n          GenericL10n,\\n          \\\"en-us\\\",\\n          this.getLanguage()\\n        );\\n    this._setL10n(new DOMLocalization([], generateBundles));\\n  }\\n\\n  \u002F**\\n   * Generate the bundles for Fluent.\\n   * @param {String} defaultLang - The fallback language to use for\\n   *   translations.\\n   * @param {String} baseLang - The base language to use for translations.\\n   *\u002F\\n  static async *#generateBundles(defaultLang, baseLang) {\\n    const { baseURL, paths } = await this.#getPaths();\\n\\n    const langs = [baseLang];\\n    if (defaultLang !== baseLang) {\\n      \u002F\u002F Also fallback to the short-format of the base language\\n      \u002F\u002F (see issue 17269).\\n      const shortLang = baseLang.split(\\\"-\\\", 1)[0];\\n\\n      if (shortLang !== baseLang) {\\n        langs.push(shortLang);\\n      }\\n      langs.push(defaultLang);\\n    }\\n    \u002F\u002F Trigger fetching of bundles in parallel, to reduce overall load time.\\n    const bundles = langs.map(lang => [\\n      lang,\\n      this.#createBundle(lang, baseURL, paths),\\n    ]);\\n\\n    for (const [lang, bundlePromise] of bundles) {\\n      const bundle = await bundlePromise;\\n      if (bundle) {\\n        yield bundle;\\n      } else if (lang === \\\"en-us\\\") {\\n        yield this.#createBundleFallback(lang);\\n      }\\n    }\\n  }\\n\\n  static async #createBundle(lang, baseURL, paths) {\\n    const path = paths[lang];\\n    if (!path) {\\n      return null;\\n    }\\n    const url = new URL(path, baseURL);\\n    const text = await fetchData(url, \u002F* type = *\u002F \\\"text\\\");\\n\\n    return createBundle(lang, text);\\n  }\\n\\n  static async #getPaths() {\\n    try {\\n      const { href } = document.querySelector(`link[type=\\\"application\u002Fl10n\\\"]`);\\n      const paths = await fetchData(href, \u002F* type = *\u002F \\\"json\\\");\\n\\n      return {\\n        baseURL: href.substring(0, href.lastIndexOf(\\\"\u002F\\\") + 1) || \\\".\u002F\\\",\\n        paths,\\n      };\\n    } catch {}\\n    return { baseURL: \\\".\u002F\\\", paths: Object.create(null) };\\n  }\\n\\n  static async *#generateBundlesFallback(lang) {\\n    yield this.#createBundleFallback(lang);\\n  }\\n\\n  static async #createBundleFallback(lang) {\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING\\\")) {\\n      throw new Error(\\\"Not implemented: #createBundleFallback\\\");\\n    }\\n    const text =\\n      typeof PDFJSDev === \\\"undefined\\\"\\n        ? await fetchData(\\n            new URL(\\\"..\u002Fl10n\u002Fen-US\u002Fviewer.ftl\\\", window.location.href),\\n            \u002F* type = *\u002F \\\"text\\\"\\n          )\\n        : PDFJSDev.eval(\\\"DEFAULT_FTL\\\");\\n\\n    return createBundle(lang, text);\\n  }\\n}\\n\\nexport { GenericL10n };\\n\",\"\u002F* Copyright 2020 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { getPdfFilenameFromUrl } from \\\"pdfjs-lib\\\";\\n\\nasync function docProperties(pdfDocument) {\\n  const url = \\\"\\\",\\n    baseUrl = \\\"\\\";\\n  const { info, metadata, contentDispositionFilename, contentLength } =\\n    await pdfDocument.getMetadata();\\n\\n  return {\\n    ...info,\\n    baseURL: baseUrl,\\n    filesize: contentLength || (await pdfDocument.getDownloadInfo()).length,\\n    filename: contentDispositionFilename || getPdfFilenameFromUrl(url),\\n    metadata: metadata?.getRaw(),\\n    authors: metadata?.get(\\\"dc:creator\\\"),\\n    numPages: pdfDocument.numPages,\\n    URL: url,\\n  };\\n}\\n\\nclass GenericScripting {\\n  constructor(sandboxBundleSrc) {\\n    this._ready = new Promise((resolve, reject) => {\\n      const sandbox =\\n        typeof PDFJSDev === \\\"undefined\\\"\\n          ? import(sandboxBundleSrc) \u002F\u002F eslint-disable-line no-unsanitized\u002Fmethod\\n          : __raw_import__(sandboxBundleSrc);\\n      sandbox\\n        .then(pdfjsSandbox => {\\n          resolve(pdfjsSandbox.QuickJSSandbox());\\n        })\\n        .catch(reject);\\n    });\\n  }\\n\\n  async createSandbox(data) {\\n    const sandbox = await this._ready;\\n    sandbox.create(data);\\n  }\\n\\n  async dispatchEventInSandbox(event) {\\n    const sandbox = await this._ready;\\n    setTimeout(() => sandbox.dispatchEvent(event), 0);\\n  }\\n\\n  async destroySandbox() {\\n    const sandbox = await this._ready;\\n    sandbox.nukeSandbox();\\n  }\\n}\\n\\nexport { docProperties, GenericScripting };\\n\",\"\u002F* Copyright 2025 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { getUuid } from \\\"pdfjs-lib\\\";\\n\\nconst KEY_STORAGE = \\\"pdfjs.signature\\\";\\n\\nclass SignatureStorage {\\n  \u002F\u002F TODO: Encrypt the data in using a password and add a UI for entering it.\\n  \u002F\u002F We could use the Web Crypto API for this (see https:\u002F\u002Fbradyjoslin.com\u002Fblog\u002Fencryption-webcrypto\u002F\\n  \u002F\u002F for an example).\\n\\n  #eventBus;\\n\\n  #signatures = null;\\n\\n  #signal = null;\\n\\n  constructor(eventBus, signal) {\\n    this.#eventBus = eventBus;\\n    this.#signal = signal;\\n  }\\n\\n  #save() {\\n    localStorage.setItem(\\n      KEY_STORAGE,\\n      JSON.stringify(Object.fromEntries(this.#signatures))\\n    );\\n  }\\n\\n  async getAll() {\\n    if (this.#signal) {\\n      window.addEventListener(\\n        \\\"storage\\\",\\n        ({ key }) => {\\n          if (key === KEY_STORAGE) {\\n            this.#signatures = null;\\n            this.#eventBus?.dispatch(\\\"storedsignatureschanged\\\", {\\n              source: this,\\n            });\\n          }\\n        },\\n        { signal: this.#signal }\\n      );\\n      this.#signal = null;\\n    }\\n    if (!this.#signatures) {\\n      this.#signatures = new Map();\\n      const data = localStorage.getItem(KEY_STORAGE);\\n      if (data) {\\n        for (const [key, value] of Object.entries(JSON.parse(data))) {\\n          this.#signatures.set(key, value);\\n        }\\n      }\\n    }\\n    return this.#signatures;\\n  }\\n\\n  async isFull() {\\n    \u002F\u002F Only allow 5 signatures to be saved.\\n    return (await this.size()) === 5;\\n  }\\n\\n  async size() {\\n    return (await this.getAll()).size;\\n  }\\n\\n  async create(data) {\\n    if (await this.isFull()) {\\n      return null;\\n    }\\n    const uuid = getUuid();\\n    this.#signatures.set(uuid, data);\\n    this.#save();\\n\\n    return uuid;\\n  }\\n\\n  async delete(uuid) {\\n    const signatures = await this.getAll();\\n    if (!signatures.has(uuid)) {\\n      return false;\\n    }\\n    signatures.delete(uuid);\\n    this.#save();\\n\\n    return true;\\n  }\\n}\\n\\nexport { SignatureStorage };\\n\",\"\u002F* Copyright 2017 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { AppOptions } from \\\".\u002Fapp_options.js\\\";\\nimport { BaseExternalServices } from \\\".\u002Fexternal_services.js\\\";\\nimport { BasePreferences } from \\\".\u002Fpreferences.js\\\";\\nimport { GenericL10n } from \\\".\u002Fgenericl10n.js\\\";\\nimport { GenericScripting } from \\\".\u002Fgeneric_scripting.js\\\";\\nimport { SignatureStorage } from \\\".\u002Fgeneric_signature_storage.js\\\";\\n\\nif (typeof PDFJSDev !== \\\"undefined\\\" && !PDFJSDev.test(\\\"GENERIC\\\")) {\\n  throw new Error(\\n    'Module \\\"pdfjs-web\u002Fgenericcom\\\" shall not be used outside GENERIC build.'\\n  );\\n}\\n\\nfunction initCom(app) {}\\n\\nclass Preferences extends BasePreferences {\\n  async _writeToStorage(prefObj) {\\n    localStorage.setItem(\\\"pdfjs.preferences\\\", JSON.stringify(prefObj));\\n  }\\n\\n  async _readFromStorage(prefObj) {\\n    return { prefs: JSON.parse(localStorage.getItem(\\\"pdfjs.preferences\\\")) };\\n  }\\n}\\n\\nclass ExternalServices extends BaseExternalServices {\\n  async createL10n() {\\n    return new GenericL10n(AppOptions.get(\\\"localeProperties\\\")?.lang);\\n  }\\n\\n  createScripting() {\\n    return new GenericScripting(AppOptions.get(\\\"sandboxBundleSrc\\\"));\\n  }\\n\\n  createSignatureStorage(eventBus, signal) {\\n    return new SignatureStorage(eventBus, signal);\\n  }\\n}\\n\\nclass MLManager {\\n  static {\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      this.getFakeMLManager = options => new FakeMLManager(options);\\n    }\\n  }\\n\\n  async isEnabledFor(_name) {\\n    return false;\\n  }\\n\\n  async deleteModel(_service) {\\n    return null;\\n  }\\n\\n  isReady(_name) {\\n    return false;\\n  }\\n\\n  guess(_data) {}\\n\\n  toggleService(_name, _enabled) {}\\n}\\n\\nif (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n  \u002F\u002F eslint-disable-next-line no-var\\n  var FakeMLManager = class {\\n    eventBus = null;\\n\\n    hasProgress = false;\\n\\n    constructor({ enableGuessAltText, enableAltTextModelDownload }) {\\n      this.enableGuessAltText = enableGuessAltText;\\n      this.enableAltTextModelDownload = enableAltTextModelDownload;\\n    }\\n\\n    setEventBus(eventBus, abortSignal) {\\n      this.eventBus = eventBus;\\n    }\\n\\n    async isEnabledFor(_name) {\\n      return this.enableGuessAltText;\\n    }\\n\\n    async deleteModel(_name) {\\n      this.enableAltTextModelDownload = false;\\n      return null;\\n    }\\n\\n    async loadModel(_name) {}\\n\\n    async downloadModel(_name) {\\n      \u002F\u002F Simulate downloading the model but with progress.\\n      \u002F\u002F The progress can be seen in the new alt-text dialog.\\n      this.hasProgress = true;\\n\\n      const { promise, resolve } = Promise.withResolvers();\\n      const total = 1e8;\\n      const end = 1.5 * total;\\n      const increment = 5e6;\\n      let loaded = 0;\\n      const id = setInterval(() => {\\n        loaded += increment;\\n        if (loaded \u003C= end) {\\n          this.eventBus.dispatch(\\\"loadaiengineprogress\\\", {\\n            source: this,\\n            detail: {\\n              total,\\n              totalLoaded: loaded,\\n              finished: loaded + increment >= end,\\n            },\\n          });\\n          return;\\n        }\\n        clearInterval(id);\\n        this.hasProgress = false;\\n        this.enableAltTextModelDownload = true;\\n        resolve(true);\\n      }, 900);\\n      return promise;\\n    }\\n\\n    isReady(_name) {\\n      return this.enableAltTextModelDownload;\\n    }\\n\\n    guess({ request: { data } }) {\\n      return new Promise(resolve => {\\n        setTimeout(() => {\\n          resolve(data ? { output: \\\"Fake alt text.\\\" } : { error: true });\\n        }, 3000);\\n      });\\n    }\\n\\n    toggleService(_name, enabled) {\\n      this.enableGuessAltText = enabled;\\n    }\\n  };\\n}\\n\\nexport { ExternalServices, initCom, MLManager, Preferences };\\n\",\"\u002F* Copyright 2024 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { noContextMenu } from \\\"pdfjs-lib\\\";\\n\\nclass NewAltTextManager {\\n  #boundCancel = this.#cancel.bind(this);\\n\\n  #createAutomaticallyButton;\\n\\n  #currentEditor = null;\\n\\n  #cancelButton;\\n\\n  #descriptionContainer;\\n\\n  #dialog;\\n\\n  #disclaimer;\\n\\n  #downloadModel;\\n\\n  #downloadModelDescription;\\n\\n  #eventBus;\\n\\n  #firstTime = false;\\n\\n  #guessedAltText;\\n\\n  #hasAI = null;\\n\\n  #isEditing = null;\\n\\n  #imagePreview;\\n\\n  #imageData;\\n\\n  #isAILoading = false;\\n\\n  #wasAILoading = false;\\n\\n  #learnMore;\\n\\n  #notNowButton;\\n\\n  #overlayManager;\\n\\n  #textarea;\\n\\n  #title;\\n\\n  #uiManager;\\n\\n  #previousAltText = null;\\n\\n  constructor(\\n    {\\n      descriptionContainer,\\n      dialog,\\n      imagePreview,\\n      cancelButton,\\n      disclaimer,\\n      notNowButton,\\n      saveButton,\\n      textarea,\\n      learnMore,\\n      errorCloseButton,\\n      createAutomaticallyButton,\\n      downloadModel,\\n      downloadModelDescription,\\n      title,\\n    },\\n    overlayManager,\\n    eventBus\\n  ) {\\n    this.#cancelButton = cancelButton;\\n    this.#createAutomaticallyButton = createAutomaticallyButton;\\n    this.#descriptionContainer = descriptionContainer;\\n    this.#dialog = dialog;\\n    this.#disclaimer = disclaimer;\\n    this.#notNowButton = notNowButton;\\n    this.#imagePreview = imagePreview;\\n    this.#textarea = textarea;\\n    this.#learnMore = learnMore;\\n    this.#title = title;\\n    this.#downloadModel = downloadModel;\\n    this.#downloadModelDescription = downloadModelDescription;\\n    this.#overlayManager = overlayManager;\\n    this.#eventBus = eventBus;\\n\\n    dialog.addEventListener(\\\"close\\\", this.#close.bind(this));\\n    dialog.addEventListener(\\\"contextmenu\\\", event => {\\n      if (event.target !== this.#textarea) {\\n        event.preventDefault();\\n      }\\n    });\\n    cancelButton.addEventListener(\\\"click\\\", this.#boundCancel);\\n    notNowButton.addEventListener(\\\"click\\\", this.#boundCancel);\\n    saveButton.addEventListener(\\\"click\\\", this.#save.bind(this));\\n    errorCloseButton.addEventListener(\\\"click\\\", () => {\\n      this.#toggleError(false);\\n    });\\n    createAutomaticallyButton.addEventListener(\\\"click\\\", async () => {\\n      const checked =\\n        createAutomaticallyButton.getAttribute(\\\"aria-pressed\\\") !== \\\"true\\\";\\n      this.#currentEditor._reportTelemetry({\\n        action: \\\"pdfjs.image.alt_text.ai_generation_check\\\",\\n        data: { status: checked },\\n      });\\n\\n      if (this.#uiManager) {\\n        this.#uiManager.setPreference(\\\"enableGuessAltText\\\", checked);\\n        await this.#uiManager.mlManager.toggleService(\\\"altText\\\", checked);\\n      }\\n      this.#toggleGuessAltText(checked, \u002F* isInitial = *\u002F false);\\n    });\\n    textarea.addEventListener(\\\"focus\\\", () => {\\n      this.#wasAILoading = this.#isAILoading;\\n      this.#toggleLoading(false);\\n      this.#toggleTitleAndDisclaimer();\\n    });\\n    textarea.addEventListener(\\\"blur\\\", () => {\\n      if (!textarea.value) {\\n        this.#toggleLoading(this.#wasAILoading);\\n      }\\n      this.#toggleTitleAndDisclaimer();\\n    });\\n    textarea.addEventListener(\\\"input\\\", () => {\\n      this.#toggleTitleAndDisclaimer();\\n    });\\n\\n    eventBus._on(\\\"enableguessalttext\\\", ({ value }) => {\\n      this.#toggleGuessAltText(value, \u002F* isInitial = *\u002F false);\\n    });\\n\\n    this.#overlayManager.register(dialog);\\n\\n    this.#learnMore.addEventListener(\\\"click\\\", () => {\\n      this.#currentEditor._reportTelemetry({\\n        action: \\\"pdfjs.image.alt_text.info\\\",\\n        data: { topic: \\\"alt_text\\\" },\\n      });\\n    });\\n  }\\n\\n  #toggleLoading(value) {\\n    if (!this.#uiManager || this.#isAILoading === value) {\\n      return;\\n    }\\n    this.#isAILoading = value;\\n    this.#descriptionContainer.classList.toggle(\\\"loading\\\", value);\\n  }\\n\\n  #toggleError(value) {\\n    if (!this.#uiManager) {\\n      return;\\n    }\\n    this.#dialog.classList.toggle(\\\"error\\\", value);\\n  }\\n\\n  async #toggleGuessAltText(value, isInitial = false) {\\n    if (!this.#uiManager) {\\n      return;\\n    }\\n    this.#dialog.classList.toggle(\\\"aiDisabled\\\", !value);\\n    this.#createAutomaticallyButton.setAttribute(\\\"aria-pressed\\\", value);\\n\\n    if (value) {\\n      const { altTextLearnMoreUrl } = this.#uiManager.mlManager;\\n      if (altTextLearnMoreUrl) {\\n        this.#learnMore.href = altTextLearnMoreUrl;\\n      }\\n      this.#mlGuessAltText(isInitial);\\n    } else {\\n      this.#toggleLoading(false);\\n      this.#isAILoading = false;\\n      this.#toggleTitleAndDisclaimer();\\n    }\\n  }\\n\\n  #toggleNotNow() {\\n    this.#notNowButton.classList.toggle(\\\"hidden\\\", !this.#firstTime);\\n    this.#cancelButton.classList.toggle(\\\"hidden\\\", this.#firstTime);\\n  }\\n\\n  #toggleAI(value) {\\n    if (!this.#uiManager || this.#hasAI === value) {\\n      return;\\n    }\\n    this.#hasAI = value;\\n    this.#dialog.classList.toggle(\\\"noAi\\\", !value);\\n    this.#toggleTitleAndDisclaimer();\\n  }\\n\\n  #toggleTitleAndDisclaimer() {\\n    \u002F\u002F Disclaimer is visible when the AI is loading or the user didn't change\\n    \u002F\u002F the guessed alt text.\\n    const visible =\\n      this.#isAILoading ||\\n      (this.#guessedAltText && this.#guessedAltText === this.#textarea.value);\\n    this.#disclaimer.hidden = !visible;\\n\\n    \u002F\u002F The title changes depending if the text area is empty or not.\\n    const isEditing = this.#isAILoading || !!this.#textarea.value;\\n    if (this.#isEditing === isEditing) {\\n      return;\\n    }\\n    this.#isEditing = isEditing;\\n    this.#title.setAttribute(\\n      \\\"data-l10n-id\\\",\\n      isEditing\\n        ? \\\"pdfjs-editor-new-alt-text-dialog-edit-label\\\"\\n        : \\\"pdfjs-editor-new-alt-text-dialog-add-label\\\"\\n    );\\n  }\\n\\n  async #mlGuessAltText(isInitial) {\\n    if (this.#isAILoading) {\\n      \u002F\u002F We're still loading the previous guess.\\n      return;\\n    }\\n\\n    if (this.#textarea.value) {\\n      \u002F\u002F The user has already set an alt text.\\n      return;\\n    }\\n\\n    if (isInitial && this.#previousAltText !== null) {\\n      \u002F\u002F The user has already set an alt text (empty or not).\\n      return;\\n    }\\n\\n    this.#guessedAltText = this.#currentEditor.guessedAltText;\\n    if (this.#previousAltText === null && this.#guessedAltText) {\\n      \u002F\u002F We have a guessed alt text and the user didn't change it.\\n      this.#addAltText(this.#guessedAltText);\\n      return;\\n    }\\n\\n    this.#toggleLoading(true);\\n    this.#toggleTitleAndDisclaimer();\\n\\n    let hasError = false;\\n    try {\\n      \u002F\u002F When calling #mlGuessAltText we don't wait for it, so we must take care\\n      \u002F\u002F that the alt text dialog can have been closed before the response is.\\n\\n      const altText = await this.#currentEditor.mlGuessAltText(\\n        this.#imageData,\\n        \u002F* updateAltTextData = *\u002F false\\n      );\\n      if (altText) {\\n        this.#guessedAltText = altText;\\n        this.#wasAILoading = this.#isAILoading;\\n        if (this.#isAILoading) {\\n          this.#addAltText(altText);\\n        }\\n      }\\n    } catch (e) {\\n      console.error(e);\\n      hasError = true;\\n    }\\n\\n    this.#toggleLoading(false);\\n    this.#toggleTitleAndDisclaimer();\\n\\n    if (hasError && this.#uiManager) {\\n      this.#toggleError(true);\\n    }\\n  }\\n\\n  #addAltText(altText) {\\n    if (!this.#uiManager || this.#textarea.value) {\\n      return;\\n    }\\n    this.#textarea.value = altText;\\n    this.#toggleTitleAndDisclaimer();\\n  }\\n\\n  #setProgress() {\\n    \u002F\u002F Show the download model progress.\\n    this.#downloadModel.classList.toggle(\\\"hidden\\\", false);\\n\\n    const callback = async ({ detail: { finished, total, totalLoaded } }) => {\\n      const ONE_MEGA_BYTES = 1e6;\\n      \u002F\u002F totalLoaded can be greater than total if the download is compressed.\\n      \u002F\u002F So we cheat to avoid any confusion.\\n      totalLoaded = Math.min(0.99 * total, totalLoaded);\\n\\n      \u002F\u002F Update the progress.\\n      const totalSize = (this.#downloadModelDescription.ariaValueMax =\\n        Math.round(total \u002F ONE_MEGA_BYTES));\\n      const downloadedSize = (this.#downloadModelDescription.ariaValueNow =\\n        Math.round(totalLoaded \u002F ONE_MEGA_BYTES));\\n      this.#downloadModelDescription.setAttribute(\\n        \\\"data-l10n-args\\\",\\n        JSON.stringify({ totalSize, downloadedSize })\\n      );\\n      if (!finished) {\\n        return;\\n      }\\n\\n      \u002F\u002F We're done, remove the listener and hide the download model progress.\\n      this.#eventBus._off(\\\"loadaiengineprogress\\\", callback);\\n      this.#downloadModel.classList.toggle(\\\"hidden\\\", true);\\n\\n      this.#toggleAI(true);\\n      if (!this.#uiManager) {\\n        return;\\n      }\\n      const { mlManager } = this.#uiManager;\\n\\n      \u002F\u002F The model has been downloaded, we can now enable the AI service.\\n      mlManager.toggleService(\\\"altText\\\", true);\\n      this.#toggleGuessAltText(\\n        await mlManager.isEnabledFor(\\\"altText\\\"),\\n        \u002F* isInitial = *\u002F true\\n      );\\n    };\\n    this.#eventBus._on(\\\"loadaiengineprogress\\\", callback);\\n  }\\n\\n  async editAltText(uiManager, editor, firstTime) {\\n    if (this.#currentEditor || !editor) {\\n      return;\\n    }\\n\\n    if (firstTime && editor.hasAltTextData()) {\\n      editor.altTextFinish();\\n      return;\\n    }\\n\\n    this.#firstTime = firstTime;\\n    let { mlManager } = uiManager;\\n    let hasAI = !!mlManager;\\n    this.#toggleTitleAndDisclaimer();\\n\\n    if (mlManager && !mlManager.isReady(\\\"altText\\\")) {\\n      hasAI = false;\\n      if (mlManager.hasProgress) {\\n        this.#setProgress();\\n      } else {\\n        mlManager = null;\\n      }\\n    } else {\\n      this.#downloadModel.classList.toggle(\\\"hidden\\\", true);\\n    }\\n\\n    const isAltTextEnabledPromise = mlManager?.isEnabledFor(\\\"altText\\\");\\n\\n    this.#currentEditor = editor;\\n    this.#uiManager = uiManager;\\n    this.#uiManager.removeEditListeners();\\n\\n    ({ altText: this.#previousAltText } = editor.altTextData);\\n    this.#textarea.value = this.#previousAltText ?? \\\"\\\";\\n\\n    \u002F\u002F TODO: get this value from Firefox\\n    \u002F\u002F   (https:\u002F\u002Fbugzilla.mozilla.org\u002Fshow_bug.cgi?id=1908184)\\n    const AI_MAX_IMAGE_DIMENSION = 224;\\n    const MAX_PREVIEW_DIMENSION = 180;\\n\\n    \u002F\u002F The max dimension of the preview in the dialog is 180px, so we keep 224px\\n    \u002F\u002F and rescale it thanks to css.\\n\\n    let canvas, width, height;\\n    if (mlManager) {\\n      ({\\n        canvas,\\n        width,\\n        height,\\n        imageData: this.#imageData,\\n      } = editor.copyCanvas(\\n        AI_MAX_IMAGE_DIMENSION,\\n        MAX_PREVIEW_DIMENSION,\\n        \u002F* createImageData = *\u002F true\\n      ));\\n      if (hasAI) {\\n        this.#toggleGuessAltText(\\n          await isAltTextEnabledPromise,\\n          \u002F* isInitial = *\u002F true\\n        );\\n      }\\n    } else {\\n      ({ canvas, width, height } = editor.copyCanvas(\\n        AI_MAX_IMAGE_DIMENSION,\\n        MAX_PREVIEW_DIMENSION,\\n        \u002F* createImageData = *\u002F false\\n      ));\\n    }\\n\\n    canvas.setAttribute(\\\"role\\\", \\\"presentation\\\");\\n    const { style } = canvas;\\n    style.width = `${width}px`;\\n    style.height = `${height}px`;\\n    this.#imagePreview.append(canvas);\\n\\n    this.#toggleNotNow();\\n    this.#toggleAI(hasAI);\\n    this.#toggleError(false);\\n\\n    try {\\n      await this.#overlayManager.open(this.#dialog);\\n    } catch (ex) {\\n      this.#close();\\n      throw ex;\\n    }\\n  }\\n\\n  #cancel() {\\n    this.#currentEditor.altTextData = {\\n      cancel: true,\\n    };\\n    const altText = this.#textarea.value.trim();\\n    this.#currentEditor._reportTelemetry({\\n      action: \\\"pdfjs.image.alt_text.dismiss\\\",\\n      data: {\\n        alt_text_type: altText ? \\\"present\\\" : \\\"empty\\\",\\n        flow: this.#firstTime ? \\\"image_add\\\" : \\\"alt_text_edit\\\",\\n      },\\n    });\\n    this.#currentEditor._reportTelemetry({\\n      action: \\\"pdfjs.image.image_added\\\",\\n      data: { alt_text_modal: true, alt_text_type: \\\"skipped\\\" },\\n    });\\n    this.#finish();\\n  }\\n\\n  #finish() {\\n    this.#overlayManager.closeIfActive(this.#dialog);\\n  }\\n\\n  #close() {\\n    const canvas = this.#imagePreview.firstChild;\\n    canvas.remove();\\n    canvas.width = canvas.height = 0;\\n    this.#imageData = null;\\n\\n    this.#toggleLoading(false);\\n\\n    this.#uiManager?.addEditListeners();\\n    this.#currentEditor.altTextFinish();\\n    this.#uiManager?.setSelected(this.#currentEditor);\\n    this.#currentEditor = null;\\n    this.#uiManager = null;\\n  }\\n\\n  #extractWords(text) {\\n    return new Set(\\n      text\\n        .toLowerCase()\\n        .split(\u002F[^\\\\p{L}\\\\p{N}]+\u002Fgu)\\n        .filter(x => !!x)\\n    );\\n  }\\n\\n  #save() {\\n    const altText = this.#textarea.value.trim();\\n    this.#currentEditor.altTextData = {\\n      altText,\\n      decorative: false,\\n    };\\n    this.#currentEditor.altTextData.guessedAltText = this.#guessedAltText;\\n\\n    if (this.#guessedAltText && this.#guessedAltText !== altText) {\\n      const guessedWords = this.#extractWords(this.#guessedAltText);\\n      const words = this.#extractWords(altText);\\n      this.#currentEditor._reportTelemetry({\\n        action: \\\"pdfjs.image.alt_text.user_edit\\\",\\n        data: {\\n          total_words: guessedWords.size,\\n          words_removed: guessedWords.difference(words).size,\\n          words_added: words.difference(guessedWords).size,\\n        },\\n      });\\n    }\\n    this.#currentEditor._reportTelemetry({\\n      action: \\\"pdfjs.image.image_added\\\",\\n      data: {\\n        alt_text_modal: true,\\n        alt_text_type: altText ? \\\"present\\\" : \\\"empty\\\",\\n      },\\n    });\\n\\n    this.#currentEditor._reportTelemetry({\\n      action: \\\"pdfjs.image.alt_text.save\\\",\\n      data: {\\n        alt_text_type: altText ? \\\"present\\\" : \\\"empty\\\",\\n        flow: this.#firstTime ? \\\"image_add\\\" : \\\"alt_text_edit\\\",\\n      },\\n    });\\n\\n    this.#finish();\\n  }\\n\\n  destroy() {\\n    this.#uiManager = null; \u002F\u002F Avoid re-adding the edit listeners.\\n    this.#finish();\\n  }\\n}\\n\\nclass ImageAltTextSettings {\\n  #aiModelSettings;\\n\\n  #createModelButton;\\n\\n  #downloadModelButton;\\n\\n  #dialog;\\n\\n  #eventBus;\\n\\n  #mlManager;\\n\\n  #overlayManager;\\n\\n  #showAltTextDialogButton;\\n\\n  constructor(\\n    {\\n      dialog,\\n      createModelButton,\\n      aiModelSettings,\\n      learnMore,\\n      closeButton,\\n      deleteModelButton,\\n      downloadModelButton,\\n      showAltTextDialogButton,\\n    },\\n    overlayManager,\\n    eventBus,\\n    mlManager\\n  ) {\\n    this.#dialog = dialog;\\n    this.#aiModelSettings = aiModelSettings;\\n    this.#createModelButton = createModelButton;\\n    this.#downloadModelButton = downloadModelButton;\\n    this.#showAltTextDialogButton = showAltTextDialogButton;\\n    this.#overlayManager = overlayManager;\\n    this.#eventBus = eventBus;\\n    this.#mlManager = mlManager;\\n\\n    const { altTextLearnMoreUrl } = mlManager;\\n    if (altTextLearnMoreUrl) {\\n      learnMore.href = altTextLearnMoreUrl;\\n    }\\n\\n    dialog.addEventListener(\\\"contextmenu\\\", noContextMenu);\\n\\n    createModelButton.addEventListener(\\\"click\\\", async e => {\\n      const checked = this.#togglePref(\\\"enableGuessAltText\\\", e);\\n      await mlManager.toggleService(\\\"altText\\\", checked);\\n      this.#reportTelemetry({\\n        type: \\\"stamp\\\",\\n        action: \\\"pdfjs.image.alt_text.settings_ai_generation_check\\\",\\n        data: { status: checked },\\n      });\\n    });\\n\\n    showAltTextDialogButton.addEventListener(\\\"click\\\", e => {\\n      const checked = this.#togglePref(\\\"enableNewAltTextWhenAddingImage\\\", e);\\n      this.#reportTelemetry({\\n        type: \\\"stamp\\\",\\n        action: \\\"pdfjs.image.alt_text.settings_edit_alt_text_check\\\",\\n        data: { status: checked },\\n      });\\n    });\\n\\n    deleteModelButton.addEventListener(\\\"click\\\", this.#delete.bind(this, true));\\n    downloadModelButton.addEventListener(\\n      \\\"click\\\",\\n      this.#download.bind(this, true)\\n    );\\n\\n    closeButton.addEventListener(\\\"click\\\", this.#finish.bind(this));\\n\\n    learnMore.addEventListener(\\\"click\\\", () => {\\n      this.#reportTelemetry({\\n        type: \\\"stamp\\\",\\n        action: \\\"pdfjs.image.alt_text.info\\\",\\n        data: { topic: \\\"ai_generation\\\" },\\n      });\\n    });\\n\\n    eventBus._on(\\\"enablealttextmodeldownload\\\", ({ value }) => {\\n      if (value) {\\n        this.#download(false);\\n      } else {\\n        this.#delete(false);\\n      }\\n    });\\n\\n    this.#overlayManager.register(dialog);\\n  }\\n\\n  #reportTelemetry(data) {\\n    this.#eventBus.dispatch(\\\"reporttelemetry\\\", {\\n      source: this,\\n      details: {\\n        type: \\\"editing\\\",\\n        data,\\n      },\\n    });\\n  }\\n\\n  async #download(isFromUI = false) {\\n    if (isFromUI) {\\n      this.#downloadModelButton.disabled = true;\\n      const span = this.#downloadModelButton.firstChild;\\n      span.setAttribute(\\n        \\\"data-l10n-id\\\",\\n        \\\"pdfjs-editor-alt-text-settings-downloading-model-button\\\"\\n      );\\n\\n      await this.#mlManager.downloadModel(\\\"altText\\\");\\n\\n      span.setAttribute(\\n        \\\"data-l10n-id\\\",\\n        \\\"pdfjs-editor-alt-text-settings-download-model-button\\\"\\n      );\\n\\n      this.#createModelButton.disabled = false;\\n      this.#setPref(\\\"enableGuessAltText\\\", true);\\n      this.#mlManager.toggleService(\\\"altText\\\", true);\\n      this.#setPref(\\\"enableAltTextModelDownload\\\", true);\\n      this.#downloadModelButton.disabled = false;\\n    }\\n\\n    this.#aiModelSettings.classList.toggle(\\\"download\\\", false);\\n    this.#createModelButton.setAttribute(\\\"aria-pressed\\\", true);\\n  }\\n\\n  async #delete(isFromUI = false) {\\n    if (isFromUI) {\\n      await this.#mlManager.deleteModel(\\\"altText\\\");\\n      this.#setPref(\\\"enableGuessAltText\\\", false);\\n      this.#setPref(\\\"enableAltTextModelDownload\\\", false);\\n    }\\n\\n    this.#aiModelSettings.classList.toggle(\\\"download\\\", true);\\n    this.#createModelButton.disabled = true;\\n    this.#createModelButton.setAttribute(\\\"aria-pressed\\\", false);\\n  }\\n\\n  async open({ enableGuessAltText, enableNewAltTextWhenAddingImage }) {\\n    const { enableAltTextModelDownload } = this.#mlManager;\\n    this.#createModelButton.disabled = !enableAltTextModelDownload;\\n    this.#createModelButton.setAttribute(\\n      \\\"aria-pressed\\\",\\n      enableAltTextModelDownload && enableGuessAltText\\n    );\\n    this.#showAltTextDialogButton.setAttribute(\\n      \\\"aria-pressed\\\",\\n      enableNewAltTextWhenAddingImage\\n    );\\n    this.#aiModelSettings.classList.toggle(\\n      \\\"download\\\",\\n      !enableAltTextModelDownload\\n    );\\n\\n    await this.#overlayManager.open(this.#dialog);\\n    this.#reportTelemetry({\\n      type: \\\"stamp\\\",\\n      action: \\\"pdfjs.image.alt_text.settings_displayed\\\",\\n    });\\n  }\\n\\n  #togglePref(name, { target }) {\\n    const checked = target.getAttribute(\\\"aria-pressed\\\") !== \\\"true\\\";\\n    this.#setPref(name, checked);\\n    target.setAttribute(\\\"aria-pressed\\\", checked);\\n    return checked;\\n  }\\n\\n  #setPref(name, value) {\\n    this.#eventBus.dispatch(\\\"setpreference\\\", {\\n      source: this,\\n      name,\\n      value,\\n    });\\n  }\\n\\n  #finish() {\\n    this.#overlayManager.closeIfActive(this.#dialog);\\n  }\\n}\\n\\nexport { ImageAltTextSettings, NewAltTextManager };\\n\",\"\u002F* Copyright 2023 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { DOMSVGFactory } from \\\"pdfjs-lib\\\";\\n\\nclass AltTextManager {\\n  #clickAC = null;\\n\\n  #currentEditor = null;\\n\\n  #cancelButton;\\n\\n  #dialog;\\n\\n  #eventBus;\\n\\n  #hasUsedPointer = false;\\n\\n  #optionDescription;\\n\\n  #optionDecorative;\\n\\n  #overlayManager;\\n\\n  #saveButton;\\n\\n  #textarea;\\n\\n  #uiManager;\\n\\n  #previousAltText = null;\\n\\n  #resizeAC = null;\\n\\n  #svgElement = null;\\n\\n  #rectElement = null;\\n\\n  #container;\\n\\n  #telemetryData = null;\\n\\n  constructor(\\n    {\\n      dialog,\\n      optionDescription,\\n      optionDecorative,\\n      textarea,\\n      cancelButton,\\n      saveButton,\\n    },\\n    container,\\n    overlayManager,\\n    eventBus\\n  ) {\\n    this.#dialog = dialog;\\n    this.#optionDescription = optionDescription;\\n    this.#optionDecorative = optionDecorative;\\n    this.#textarea = textarea;\\n    this.#cancelButton = cancelButton;\\n    this.#saveButton = saveButton;\\n    this.#overlayManager = overlayManager;\\n    this.#eventBus = eventBus;\\n    this.#container = container;\\n\\n    const onUpdateUIState = this.#updateUIState.bind(this);\\n\\n    dialog.addEventListener(\\\"close\\\", this.#close.bind(this));\\n    dialog.addEventListener(\\\"contextmenu\\\", event => {\\n      if (event.target !== this.#textarea) {\\n        event.preventDefault();\\n      }\\n    });\\n    cancelButton.addEventListener(\\\"click\\\", this.#finish.bind(this));\\n    saveButton.addEventListener(\\\"click\\\", this.#save.bind(this));\\n    optionDescription.addEventListener(\\\"change\\\", onUpdateUIState);\\n    optionDecorative.addEventListener(\\\"change\\\", onUpdateUIState);\\n\\n    this.#overlayManager.register(dialog);\\n  }\\n\\n  #createSVGElement() {\\n    if (this.#svgElement) {\\n      return;\\n    }\\n\\n    \u002F\u002F We create a mask to add to the dialog backdrop: the idea is to have a\\n    \u002F\u002F darken background everywhere except on the editor to clearly see the\\n    \u002F\u002F picture to describe.\\n\\n    const svgFactory = new DOMSVGFactory();\\n    const svg = (this.#svgElement = svgFactory.createElement(\\\"svg\\\"));\\n    svg.setAttribute(\\\"width\\\", \\\"0\\\");\\n    svg.setAttribute(\\\"height\\\", \\\"0\\\");\\n    const defs = svgFactory.createElement(\\\"defs\\\");\\n    svg.append(defs);\\n    const mask = svgFactory.createElement(\\\"mask\\\");\\n    defs.append(mask);\\n    mask.setAttribute(\\\"id\\\", \\\"alttext-manager-mask\\\");\\n    mask.setAttribute(\\\"maskContentUnits\\\", \\\"objectBoundingBox\\\");\\n    let rect = svgFactory.createElement(\\\"rect\\\");\\n    mask.append(rect);\\n    rect.setAttribute(\\\"fill\\\", \\\"white\\\");\\n    rect.setAttribute(\\\"width\\\", \\\"1\\\");\\n    rect.setAttribute(\\\"height\\\", \\\"1\\\");\\n    rect.setAttribute(\\\"x\\\", \\\"0\\\");\\n    rect.setAttribute(\\\"y\\\", \\\"0\\\");\\n\\n    rect = this.#rectElement = svgFactory.createElement(\\\"rect\\\");\\n    mask.append(rect);\\n    rect.setAttribute(\\\"fill\\\", \\\"black\\\");\\n    this.#dialog.append(svg);\\n  }\\n\\n  async editAltText(uiManager, editor) {\\n    if (this.#currentEditor || !editor) {\\n      return;\\n    }\\n    this.#createSVGElement();\\n\\n    this.#hasUsedPointer = false;\\n\\n    this.#clickAC = new AbortController();\\n    const clickOpts = { signal: this.#clickAC.signal },\\n      onClick = this.#onClick.bind(this);\\n    for (const element of [\\n      this.#optionDescription,\\n      this.#optionDecorative,\\n      this.#textarea,\\n      this.#saveButton,\\n      this.#cancelButton,\\n    ]) {\\n      element.addEventListener(\\\"click\\\", onClick, clickOpts);\\n    }\\n\\n    const { altText, decorative } = editor.altTextData;\\n    if (decorative === true) {\\n      this.#optionDecorative.checked = true;\\n      this.#optionDescription.checked = false;\\n    } else {\\n      this.#optionDecorative.checked = false;\\n      this.#optionDescription.checked = true;\\n    }\\n    this.#previousAltText = this.#textarea.value = altText?.trim() || \\\"\\\";\\n    this.#updateUIState();\\n\\n    this.#currentEditor = editor;\\n    this.#uiManager = uiManager;\\n    this.#uiManager.removeEditListeners();\\n\\n    this.#resizeAC = new AbortController();\\n    this.#eventBus._on(\\\"resize\\\", this.#setPosition.bind(this), {\\n      signal: this.#resizeAC.signal,\\n    });\\n\\n    try {\\n      await this.#overlayManager.open(this.#dialog);\\n      this.#setPosition();\\n    } catch (ex) {\\n      this.#close();\\n      throw ex;\\n    }\\n  }\\n\\n  #setPosition() {\\n    if (!this.#currentEditor) {\\n      return;\\n    }\\n    const dialog = this.#dialog;\\n    const { style } = dialog;\\n    const {\\n      x: containerX,\\n      y: containerY,\\n      width: containerW,\\n      height: containerH,\\n    } = this.#container.getBoundingClientRect();\\n    const { innerWidth: windowW, innerHeight: windowH } = window;\\n    const { width: dialogW, height: dialogH } = dialog.getBoundingClientRect();\\n    const { x, y, width, height } = this.#currentEditor.getClientDimensions();\\n    const MARGIN = 10;\\n    const isLTR = this.#uiManager.direction === \\\"ltr\\\";\\n\\n    const xs = Math.max(x, containerX);\\n    const xe = Math.min(x + width, containerX + containerW);\\n    const ys = Math.max(y, containerY);\\n    const ye = Math.min(y + height, containerY + containerH);\\n    this.#rectElement.setAttribute(\\\"width\\\", `${(xe - xs) \u002F windowW}`);\\n    this.#rectElement.setAttribute(\\\"height\\\", `${(ye - ys) \u002F windowH}`);\\n    this.#rectElement.setAttribute(\\\"x\\\", `${xs \u002F windowW}`);\\n    this.#rectElement.setAttribute(\\\"y\\\", `${ys \u002F windowH}`);\\n\\n    let left = null;\\n    let top = Math.max(y, 0);\\n    top += Math.min(windowH - (top + dialogH), 0);\\n\\n    if (isLTR) {\\n      \u002F\u002F Prefer to position the dialog \\\"after\\\" (so on the right) the editor.\\n      if (x + width + MARGIN + dialogW \u003C windowW) {\\n        left = x + width + MARGIN;\\n      } else if (x > dialogW + MARGIN) {\\n        left = x - dialogW - MARGIN;\\n      }\\n    } else if (x > dialogW + MARGIN) {\\n      left = x - dialogW - MARGIN;\\n    } else if (x + width + MARGIN + dialogW \u003C windowW) {\\n      left = x + width + MARGIN;\\n    }\\n\\n    if (left === null) {\\n      top = null;\\n      left = Math.max(x, 0);\\n      left += Math.min(windowW - (left + dialogW), 0);\\n      if (y > dialogH + MARGIN) {\\n        top = y - dialogH - MARGIN;\\n      } else if (y + height + MARGIN + dialogH \u003C windowH) {\\n        top = y + height + MARGIN;\\n      }\\n    }\\n\\n    if (top !== null) {\\n      dialog.classList.add(\\\"positioned\\\");\\n      if (isLTR) {\\n        style.left = `${left}px`;\\n      } else {\\n        style.right = `${windowW - left - dialogW}px`;\\n      }\\n      style.top = `${top}px`;\\n    } else {\\n      dialog.classList.remove(\\\"positioned\\\");\\n      style.left = \\\"\\\";\\n      style.top = \\\"\\\";\\n    }\\n  }\\n\\n  #finish() {\\n    this.#overlayManager.closeIfActive(this.#dialog);\\n  }\\n\\n  #close() {\\n    this.#currentEditor._reportTelemetry(\\n      this.#telemetryData || {\\n        action: \\\"alt_text_cancel\\\",\\n        alt_text_keyboard: !this.#hasUsedPointer,\\n      }\\n    );\\n    this.#telemetryData = null;\\n\\n    this.#removeOnClickListeners();\\n    this.#uiManager?.addEditListeners();\\n    this.#resizeAC?.abort();\\n    this.#resizeAC = null;\\n    this.#currentEditor.altTextFinish();\\n    this.#currentEditor = null;\\n    this.#uiManager = null;\\n  }\\n\\n  #updateUIState() {\\n    this.#textarea.disabled = this.#optionDecorative.checked;\\n  }\\n\\n  #save() {\\n    const altText = this.#textarea.value.trim();\\n    const decorative = this.#optionDecorative.checked;\\n    this.#currentEditor.altTextData = {\\n      altText,\\n      decorative,\\n    };\\n    this.#telemetryData = {\\n      action: \\\"alt_text_save\\\",\\n      alt_text_description: !!altText,\\n      alt_text_edit:\\n        !!this.#previousAltText && this.#previousAltText !== altText,\\n      alt_text_decorative: decorative,\\n      alt_text_keyboard: !this.#hasUsedPointer,\\n    };\\n    this.#finish();\\n  }\\n\\n  #onClick(evt) {\\n    if (evt.detail === 0) {\\n      return; \u002F\u002F The keyboard was used.\\n    }\\n    this.#hasUsedPointer = true;\\n    this.#removeOnClickListeners();\\n  }\\n\\n  #removeOnClickListeners() {\\n    this.#clickAC?.abort();\\n    this.#clickAC = null;\\n  }\\n\\n  destroy() {\\n    this.#uiManager = null; \u002F\u002F Avoid re-adding the edit listeners.\\n    this.#finish();\\n    this.#svgElement?.remove();\\n    this.#svgElement = this.#rectElement = null;\\n  }\\n}\\n\\nexport { AltTextManager };\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fevent_utils.js\\\").EventBus} EventBus *\u002F\\n\\nimport { AnnotationEditorParamsType } from \\\"pdfjs-lib\\\";\\n\\n\u002F**\\n * @typedef {Object} AnnotationEditorParamsOptions\\n * @property {HTMLInputElement} editorFreeTextFontSize\\n * @property {HTMLInputElement} editorFreeTextColor\\n * @property {HTMLInputElement} editorInkColor\\n * @property {HTMLInputElement} editorInkThickness\\n * @property {HTMLInputElement} editorInkOpacity\\n * @property {HTMLButtonElement} editorStampAddImage\\n * @property {HTMLInputElement} editorFreeHighlightThickness\\n * @property {HTMLButtonElement} editorHighlightShowAll\\n * @property {HTMLButtonElement} editorSignatureAddSignature\\n *\u002F\\n\\nclass AnnotationEditorParams {\\n  \u002F**\\n   * @param {AnnotationEditorParamsOptions} options\\n   * @param {EventBus} eventBus\\n   *\u002F\\n  constructor(options, eventBus) {\\n    this.eventBus = eventBus;\\n    this.#bindListeners(options);\\n  }\\n\\n  \u002F**\\n   * @param {AnnotationEditorParamsOptions} options\\n   *\u002F\\n  #bindListeners({\\n    editorFreeTextFontSize,\\n    editorFreeTextColor,\\n    editorInkColor,\\n    editorInkThickness,\\n    editorInkOpacity,\\n    editorStampAddImage,\\n    editorFreeHighlightThickness,\\n    editorHighlightShowAll,\\n    editorSignatureAddSignature,\\n  }) {\\n    const { eventBus } = this;\\n\\n    const dispatchEvent = (typeStr, value) => {\\n      eventBus.dispatch(\\\"switchannotationeditorparams\\\", {\\n        source: this,\\n        type: AnnotationEditorParamsType[typeStr],\\n        value,\\n      });\\n    };\\n    editorFreeTextFontSize.addEventListener(\\\"input\\\", function () {\\n      dispatchEvent(\\\"FREETEXT_SIZE\\\", this.valueAsNumber);\\n    });\\n    editorFreeTextColor.addEventListener(\\\"input\\\", function () {\\n      dispatchEvent(\\\"FREETEXT_COLOR\\\", this.value);\\n    });\\n    editorInkColor.addEventListener(\\\"input\\\", function () {\\n      dispatchEvent(\\\"INK_COLOR\\\", this.value);\\n    });\\n    editorInkThickness.addEventListener(\\\"input\\\", function () {\\n      dispatchEvent(\\\"INK_THICKNESS\\\", this.valueAsNumber);\\n    });\\n    editorInkOpacity.addEventListener(\\\"input\\\", function () {\\n      dispatchEvent(\\\"INK_OPACITY\\\", this.valueAsNumber);\\n    });\\n    editorStampAddImage.addEventListener(\\\"click\\\", () => {\\n      eventBus.dispatch(\\\"reporttelemetry\\\", {\\n        source: this,\\n        details: {\\n          type: \\\"editing\\\",\\n          data: { action: \\\"pdfjs.image.add_image_click\\\" },\\n        },\\n      });\\n      dispatchEvent(\\\"CREATE\\\");\\n    });\\n    editorFreeHighlightThickness.addEventListener(\\\"input\\\", function () {\\n      dispatchEvent(\\\"HIGHLIGHT_THICKNESS\\\", this.valueAsNumber);\\n    });\\n    editorHighlightShowAll.addEventListener(\\\"click\\\", function () {\\n      const checked = this.getAttribute(\\\"aria-pressed\\\") === \\\"true\\\";\\n      this.setAttribute(\\\"aria-pressed\\\", !checked);\\n      dispatchEvent(\\\"HIGHLIGHT_SHOW_ALL\\\", !checked);\\n    });\\n    editorSignatureAddSignature.addEventListener(\\\"click\\\", () => {\\n      dispatchEvent(\\\"CREATE\\\");\\n    });\\n\\n    eventBus._on(\\\"annotationeditorparamschanged\\\", evt => {\\n      for (const [type, value] of evt.details) {\\n        switch (type) {\\n          case AnnotationEditorParamsType.FREETEXT_SIZE:\\n            editorFreeTextFontSize.value = value;\\n            break;\\n          case AnnotationEditorParamsType.FREETEXT_COLOR:\\n            editorFreeTextColor.value = value;\\n            break;\\n          case AnnotationEditorParamsType.INK_COLOR:\\n            editorInkColor.value = value;\\n            break;\\n          case AnnotationEditorParamsType.INK_THICKNESS:\\n            editorInkThickness.value = value;\\n            break;\\n          case AnnotationEditorParamsType.INK_OPACITY:\\n            editorInkOpacity.value = value;\\n            break;\\n          case AnnotationEditorParamsType.HIGHLIGHT_DEFAULT_COLOR:\\n            eventBus.dispatch(\\\"mainhighlightcolorpickerupdatecolor\\\", {\\n              source: this,\\n              value,\\n            });\\n            break;\\n          case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\\n            editorFreeHighlightThickness.value = value;\\n            break;\\n          case AnnotationEditorParamsType.HIGHLIGHT_FREE:\\n            editorFreeHighlightThickness.disabled = !value;\\n            break;\\n          case AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL:\\n            editorHighlightShowAll.setAttribute(\\\"aria-pressed\\\", value);\\n            break;\\n        }\\n      }\\n    });\\n  }\\n}\\n\\nexport { AnnotationEditorParams };\\n\",\"\u002F* Copyright 2024 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F Used to compare floats: there is no exact equality due to rounding errors.\\nconst PRECISION = 1e-1;\\n\\nclass CaretBrowsingMode {\\n  #mainContainer;\\n\\n  #toolBarHeight = 0;\\n\\n  #viewerContainer;\\n\\n  constructor(abortSignal, mainContainer, viewerContainer, toolbarContainer) {\\n    this.#mainContainer = mainContainer;\\n    this.#viewerContainer = viewerContainer;\\n\\n    if (!toolbarContainer) {\\n      return;\\n    }\\n    this.#toolBarHeight = toolbarContainer.getBoundingClientRect().height;\\n\\n    const toolbarObserver = new ResizeObserver(entries => {\\n      for (const entry of entries) {\\n        if (entry.target === toolbarContainer) {\\n          this.#toolBarHeight = Math.floor(entry.borderBoxSize[0].blockSize);\\n          break;\\n        }\\n      }\\n    });\\n    toolbarObserver.observe(toolbarContainer);\\n\\n    abortSignal.addEventListener(\\\"abort\\\", () => toolbarObserver.disconnect(), {\\n      once: true,\\n    });\\n  }\\n\\n  \u002F**\\n   * Return true if the two rectangles are on the same line.\\n   * @param {DOMRect} rect1\\n   * @param {DOMRect} rect2\\n   * @returns {boolean}\\n   *\u002F\\n  #isOnSameLine(rect1, rect2) {\\n    const top1 = rect1.y;\\n    const bot1 = rect1.bottom;\\n    const mid1 = rect1.y + rect1.height \u002F 2;\\n\\n    const top2 = rect2.y;\\n    const bot2 = rect2.bottom;\\n    const mid2 = rect2.y + rect2.height \u002F 2;\\n\\n    return (top1 \u003C= mid2 && mid2 \u003C= bot1) || (top2 \u003C= mid1 && mid1 \u003C= bot2);\\n  }\\n\\n  \u002F**\\n   * Return `true` if the rectangle is:\\n   *  - under the caret when `isUp === false`.\\n   *  - over the caret when `isUp === true`.\\n   * @param {DOMRect} rect\\n   * @param {number} x\\n   * @param {number} y\\n   * @param {boolean} isUp\\n   * @returns {boolean}\\n   *\u002F\\n  #isUnderOver(rect, x, y, isUp) {\\n    const midY = rect.y + rect.height \u002F 2;\\n    return (\\n      (isUp ? y >= midY : y \u003C= midY) &&\\n      rect.x - PRECISION \u003C= x &&\\n      x \u003C= rect.right + PRECISION\\n    );\\n  }\\n\\n  \u002F**\\n   * Check if the rectangle is visible.\\n   * @param {DOMRect} rect\\n   * @returns {boolean}\\n   *\u002F\\n  #isVisible(rect) {\\n    return (\\n      rect.top >= this.#toolBarHeight &&\\n      rect.left >= 0 &&\\n      rect.bottom \u003C=\\n        (window.innerHeight || document.documentElement.clientHeight) &&\\n      rect.right \u003C= (window.innerWidth || document.documentElement.clientWidth)\\n    );\\n  }\\n\\n  \u002F**\\n   * Get the position of the caret.\\n   * @param {Selection} selection\\n   * @param {boolean} isUp\\n   * @returns {Array\u003Cnumber>}\\n   *\u002F\\n  #getCaretPosition(selection, isUp) {\\n    const { focusNode, focusOffset } = selection;\\n    const range = document.createRange();\\n    range.setStart(focusNode, focusOffset);\\n    range.setEnd(focusNode, focusOffset);\\n    const rect = range.getBoundingClientRect();\\n\\n    return [rect.x, isUp ? rect.top : rect.bottom];\\n  }\\n\\n  static #caretPositionFromPoint(x, y) {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) &&\\n      !document.caretPositionFromPoint\\n    ) {\\n      const { startContainer: offsetNode, startOffset: offset } =\\n        document.caretRangeFromPoint(x, y);\\n      return { offsetNode, offset };\\n    }\\n    return document.caretPositionFromPoint(x, y);\\n  }\\n\\n  #setCaretPositionHelper(selection, caretX, select, element, rect) {\\n    rect ||= element.getBoundingClientRect();\\n    if (caretX \u003C= rect.x + PRECISION) {\\n      if (select) {\\n        selection.extend(element.firstChild, 0);\\n      } else {\\n        selection.setPosition(element.firstChild, 0);\\n      }\\n      return;\\n    }\\n    if (rect.right - PRECISION \u003C= caretX) {\\n      const { lastChild } = element;\\n      if (select) {\\n        selection.extend(lastChild, lastChild.length);\\n      } else {\\n        selection.setPosition(lastChild, lastChild.length);\\n      }\\n      return;\\n    }\\n\\n    const midY = rect.y + rect.height \u002F 2;\\n    let caretPosition = CaretBrowsingMode.#caretPositionFromPoint(caretX, midY);\\n    let parentElement = caretPosition.offsetNode?.parentElement;\\n    if (parentElement && parentElement !== element) {\\n      \u002F\u002F There is an element on top of the one in the text layer, so we\\n      \u002F\u002F need to hide all the elements (except the one in the text layer)\\n      \u002F\u002F at this position in order to get the correct caret position.\\n      const elementsAtPoint = document.elementsFromPoint(caretX, midY);\\n      const savedVisibilities = [];\\n      for (const el of elementsAtPoint) {\\n        if (el === element) {\\n          break;\\n        }\\n        const { style } = el;\\n        savedVisibilities.push([el, style.visibility]);\\n        style.visibility = \\\"hidden\\\";\\n      }\\n      caretPosition = CaretBrowsingMode.#caretPositionFromPoint(caretX, midY);\\n      parentElement = caretPosition.offsetNode?.parentElement;\\n      for (const [el, visibility] of savedVisibilities) {\\n        el.style.visibility = visibility;\\n      }\\n    }\\n    if (parentElement !== element) {\\n      \u002F\u002F The element targeted by caretPositionFromPoint isn't in the text\\n      \u002F\u002F layer.\\n      if (select) {\\n        selection.extend(element.firstChild, 0);\\n      } else {\\n        selection.setPosition(element.firstChild, 0);\\n      }\\n      return;\\n    }\\n    if (select) {\\n      selection.extend(caretPosition.offsetNode, caretPosition.offset);\\n    } else {\\n      selection.setPosition(caretPosition.offsetNode, caretPosition.offset);\\n    }\\n  }\\n\\n  \u002F**\\n   * Set the caret position or extend the selection (it depends on the select\\n   * parameter).\\n   * @param {boolean} select\\n   * @param {Selection} selection\\n   * @param {Element} newLineElement\\n   * @param {DOMRect} newLineElementRect\\n   * @param {number} caretX\\n   *\u002F\\n  #setCaretPosition(\\n    select,\\n    selection,\\n    newLineElement,\\n    newLineElementRect,\\n    caretX\\n  ) {\\n    if (this.#isVisible(newLineElementRect)) {\\n      this.#setCaretPositionHelper(\\n        selection,\\n        caretX,\\n        select,\\n        newLineElement,\\n        newLineElementRect\\n      );\\n      return;\\n    }\\n    this.#mainContainer.addEventListener(\\n      \\\"scrollend\\\",\\n      this.#setCaretPositionHelper.bind(\\n        this,\\n        selection,\\n        caretX,\\n        select,\\n        newLineElement,\\n        null\\n      ),\\n      { once: true }\\n    );\\n    newLineElement.scrollIntoView();\\n  }\\n\\n  \u002F**\\n   * Get the node on the next page.\\n   * @param {Element} textLayer\\n   * @param {boolean} isUp\\n   * @returns {Node}\\n   *\u002F\\n  #getNodeOnNextPage(textLayer, isUp) {\\n    while (true) {\\n      const page = textLayer.closest(\\\".page\\\");\\n      const pageNumber = parseInt(page.getAttribute(\\\"data-page-number\\\"));\\n      const nextPage = isUp ? pageNumber - 1 : pageNumber + 1;\\n      textLayer = this.#viewerContainer.querySelector(\\n        `.page[data-page-number=\\\"${nextPage}\\\"] .textLayer`\\n      );\\n      if (!textLayer) {\\n        return null;\\n      }\\n      const walker = document.createTreeWalker(textLayer, NodeFilter.SHOW_TEXT);\\n      const node = isUp ? walker.lastChild() : walker.firstChild();\\n      if (node) {\\n        return node;\\n      }\\n    }\\n  }\\n\\n  \u002F**\\n   * Move the caret in the given direction.\\n   * @param {boolean} isUp\\n   * @param {boolean} select\\n   *\u002F\\n  moveCaret(isUp, select) {\\n    const selection = document.getSelection();\\n    if (selection.rangeCount === 0) {\\n      return;\\n    }\\n    const { focusNode } = selection;\\n    const focusElement =\\n      focusNode.nodeType !== Node.ELEMENT_NODE\\n        ? focusNode.parentElement\\n        : focusNode;\\n    const root = focusElement.closest(\\\".textLayer\\\");\\n    if (!root) {\\n      return;\\n    }\\n    const walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT);\\n    walker.currentNode = focusNode;\\n\\n    \u002F\u002F Move to the next element which is not on the same line as the focus\\n    \u002F\u002F element.\\n    const focusRect = focusElement.getBoundingClientRect();\\n    let newLineElement = null;\\n    const nodeIterator = (\\n      isUp ? walker.previousSibling : walker.nextSibling\\n    ).bind(walker);\\n    while (nodeIterator()) {\\n      const element = walker.currentNode.parentElement;\\n      if (!this.#isOnSameLine(focusRect, element.getBoundingClientRect())) {\\n        newLineElement = element;\\n        break;\\n      }\\n    }\\n\\n    if (!newLineElement) {\\n      \u002F\u002F Need to find the next line on the next page.\\n      const node = this.#getNodeOnNextPage(root, isUp);\\n      if (!node) {\\n        return;\\n      }\\n      if (select) {\\n        const lastNode =\\n          (isUp ? walker.firstChild() : walker.lastChild()) || focusNode;\\n        selection.extend(lastNode, isUp ? 0 : lastNode.length);\\n        const range = document.createRange();\\n        range.setStart(node, isUp ? node.length : 0);\\n        range.setEnd(node, isUp ? node.length : 0);\\n        selection.addRange(range);\\n        return;\\n      }\\n      const [caretX] = this.#getCaretPosition(selection, isUp);\\n      const { parentElement } = node;\\n      this.#setCaretPosition(\\n        select,\\n        selection,\\n        parentElement,\\n        parentElement.getBoundingClientRect(),\\n        caretX\\n      );\\n      return;\\n    }\\n\\n    \u002F\u002F We've a candidate for the next line now we want to find the first element\\n    \u002F\u002F which is under\u002Fover the caret.\\n    const [caretX, caretY] = this.#getCaretPosition(selection, isUp);\\n    const newLineElementRect = newLineElement.getBoundingClientRect();\\n\\n    \u002F\u002F Maybe the element on the new line is a valid candidate.\\n    if (this.#isUnderOver(newLineElementRect, caretX, caretY, isUp)) {\\n      this.#setCaretPosition(\\n        select,\\n        selection,\\n        newLineElement,\\n        newLineElementRect,\\n        caretX\\n      );\\n      return;\\n    }\\n\\n    while (nodeIterator()) {\\n      \u002F\u002F Search an element on the same line as newLineElement\\n      \u002F\u002F which could be under\u002Fover the caret.\\n      const element = walker.currentNode.parentElement;\\n      const elementRect = element.getBoundingClientRect();\\n      if (!this.#isOnSameLine(newLineElementRect, elementRect)) {\\n        break;\\n      }\\n      if (this.#isUnderOver(elementRect, caretX, caretY, isUp)) {\\n        \u002F\u002F We found the element.\\n        this.#setCaretPosition(select, selection, element, elementRect, caretX);\\n        return;\\n      }\\n    }\\n\\n    \u002F\u002F No element has been found so just put the caret on the element on the new\\n    \u002F\u002F line.\\n    this.#setCaretPosition(\\n      select,\\n      selection,\\n      newLineElement,\\n      newLineElementRect,\\n      caretX\\n    );\\n  }\\n}\\n\\nexport { CaretBrowsingMode };\\n\",\"\u002F* Copyright 2013 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IDownloadManager} IDownloadManager *\u002F\\n\\nimport { createValidAbsoluteUrl, isPdfFile } from \\\"pdfjs-lib\\\";\\n\\nif (typeof PDFJSDev !== \\\"undefined\\\" && !PDFJSDev.test(\\\"CHROME || GENERIC\\\")) {\\n  throw new Error(\\n    'Module \\\"pdfjs-web\u002Fdownload_manager\\\" shall not be used ' +\\n      \\\"outside CHROME and GENERIC builds.\\\"\\n  );\\n}\\n\\nfunction download(blobUrl, filename) {\\n  const a = document.createElement(\\\"a\\\");\\n  if (!a.click) {\\n    throw new Error('DownloadManager: \\\"a.click()\\\" is not supported.');\\n  }\\n  a.href = blobUrl;\\n  a.target = \\\"_parent\\\";\\n  \u002F\u002F Use a.download if available. This increases the likelihood that\\n  \u002F\u002F the file is downloaded instead of opened by another PDF plugin.\\n  if (\\\"download\\\" in a) {\\n    a.download = filename;\\n  }\\n  \u002F\u002F \u003Ca> must be in the document for recent Firefox versions,\\n  \u002F\u002F otherwise .click() is ignored.\\n  (document.body || document.documentElement).append(a);\\n  a.click();\\n  a.remove();\\n}\\n\\n\u002F**\\n * @implements {IDownloadManager}\\n *\u002F\\nclass DownloadManager {\\n  #openBlobUrls = new WeakMap();\\n\\n  downloadData(data, filename, contentType) {\\n    const blobUrl = URL.createObjectURL(\\n      new Blob([data], { type: contentType })\\n    );\\n    download(blobUrl, filename);\\n  }\\n\\n  \u002F**\\n   * @returns {boolean} Indicating if the data was opened.\\n   *\u002F\\n  openOrDownloadData(data, filename, dest = null) {\\n    const isPdfData = isPdfFile(filename);\\n    const contentType = isPdfData ? \\\"application\u002Fpdf\\\" : \\\"\\\";\\n\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"COMPONENTS\\\")) &&\\n      isPdfData\\n    ) {\\n      let blobUrl = this.#openBlobUrls.get(data);\\n      if (!blobUrl) {\\n        blobUrl = URL.createObjectURL(new Blob([data], { type: contentType }));\\n        this.#openBlobUrls.set(data, blobUrl);\\n      }\\n      let viewerUrl;\\n      if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n        \u002F\u002F The current URL is the viewer, let's use it and append the file.\\n        viewerUrl = \\\"?file=\\\" + encodeURIComponent(blobUrl + \\\"#\\\" + filename);\\n      } else if (PDFJSDev.test(\\\"CHROME\\\")) {\\n        \u002F\u002F In the Chrome extension, the URL is rewritten using the history API\\n        \u002F\u002F in viewer.js, so an absolute URL must be generated.\\n        viewerUrl =\\n          \u002F\u002F eslint-disable-next-line no-undef\\n          chrome.runtime.getURL(\\\"\u002Fcontent\u002Fweb\u002Fviewer.html\\\") +\\n          \\\"?file=\\\" +\\n          encodeURIComponent(blobUrl + \\\"#\\\" + filename);\\n      }\\n      if (dest) {\\n        viewerUrl += `#${escape(dest)}`;\\n      }\\n\\n      try {\\n        window.open(viewerUrl);\\n        return true;\\n      } catch (ex) {\\n        console.error(\\\"openOrDownloadData:\\\", ex);\\n        \u002F\u002F Release the `blobUrl`, since opening it failed, and fallback to\\n        \u002F\u002F downloading the PDF file.\\n        URL.revokeObjectURL(blobUrl);\\n        this.#openBlobUrls.delete(data);\\n      }\\n    }\\n\\n    this.downloadData(data, filename, contentType);\\n    return false;\\n  }\\n\\n  download(data, url, filename) {\\n    let blobUrl;\\n    if (data) {\\n      blobUrl = URL.createObjectURL(\\n        new Blob([data], { type: \\\"application\u002Fpdf\\\" })\\n      );\\n    } else {\\n      if (!createValidAbsoluteUrl(url, \\\"http:\u002F\u002Fexample.com\\\")) {\\n        console.error(`download - not a valid URL: ${url}`);\\n        return;\\n      }\\n      blobUrl = url + \\\"#pdfjs.action=download\\\";\\n    }\\n    download(blobUrl, filename);\\n  }\\n}\\n\\nexport { DownloadManager };\\n\",\"\u002F* Copyright 2024 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { noContextMenu } from \\\"pdfjs-lib\\\";\\n\\nclass EditorUndoBar {\\n  #closeButton = null;\\n\\n  #container;\\n\\n  #eventBus = null;\\n\\n  #focusTimeout = null;\\n\\n  #initController = null;\\n\\n  isOpen = false;\\n\\n  #message;\\n\\n  #showController = null;\\n\\n  #undoButton;\\n\\n  static #l10nMessages = Object.freeze({\\n    highlight: \\\"pdfjs-editor-undo-bar-message-highlight\\\",\\n    freetext: \\\"pdfjs-editor-undo-bar-message-freetext\\\",\\n    stamp: \\\"pdfjs-editor-undo-bar-message-stamp\\\",\\n    ink: \\\"pdfjs-editor-undo-bar-message-ink\\\",\\n    signature: \\\"pdfjs-editor-undo-bar-message-signature\\\",\\n    _multiple: \\\"pdfjs-editor-undo-bar-message-multiple\\\",\\n  });\\n\\n  constructor({ container, message, undoButton, closeButton }, eventBus) {\\n    this.#container = container;\\n    this.#message = message;\\n    this.#undoButton = undoButton;\\n    this.#closeButton = closeButton;\\n    this.#eventBus = eventBus;\\n  }\\n\\n  destroy() {\\n    this.#initController?.abort();\\n    this.#initController = null;\\n\\n    this.hide();\\n  }\\n\\n  show(undoAction, messageData) {\\n    if (!this.#initController) {\\n      this.#initController = new AbortController();\\n      const opts = { signal: this.#initController.signal };\\n      const boundHide = this.hide.bind(this);\\n\\n      this.#container.addEventListener(\\\"contextmenu\\\", noContextMenu, opts);\\n      this.#closeButton.addEventListener(\\\"click\\\", boundHide, opts);\\n      this.#eventBus._on(\\\"beforeprint\\\", boundHide, opts);\\n      this.#eventBus._on(\\\"download\\\", boundHide, opts);\\n    }\\n\\n    this.hide();\\n\\n    if (typeof messageData === \\\"string\\\") {\\n      this.#message.setAttribute(\\n        \\\"data-l10n-id\\\",\\n        EditorUndoBar.#l10nMessages[messageData]\\n      );\\n    } else {\\n      this.#message.setAttribute(\\n        \\\"data-l10n-id\\\",\\n        EditorUndoBar.#l10nMessages._multiple\\n      );\\n      this.#message.setAttribute(\\n        \\\"data-l10n-args\\\",\\n        JSON.stringify({ count: messageData })\\n      );\\n    }\\n    this.isOpen = true;\\n    this.#container.hidden = false;\\n\\n    this.#showController = new AbortController();\\n\\n    this.#undoButton.addEventListener(\\n      \\\"click\\\",\\n      () => {\\n        undoAction();\\n        this.hide();\\n      },\\n      { signal: this.#showController.signal }\\n    );\\n\\n    \u002F\u002F Without the setTimeout, VoiceOver will read out the document title\\n    \u002F\u002F instead of the popup label.\\n    this.#focusTimeout = setTimeout(() => {\\n      this.#container.focus();\\n      this.#focusTimeout = null;\\n    }, 100);\\n  }\\n\\n  hide() {\\n    if (!this.isOpen) {\\n      return;\\n    }\\n    this.isOpen = false;\\n    this.#container.hidden = true;\\n\\n    this.#showController?.abort();\\n    this.#showController = null;\\n\\n    if (this.#focusTimeout) {\\n      clearTimeout(this.#focusTimeout);\\n      this.#focusTimeout = null;\\n    }\\n  }\\n}\\n\\nexport { EditorUndoBar };\\n\",\"\u002F* Copyright 2014 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nclass OverlayManager {\\n  #overlays = new WeakMap();\\n\\n  #active = null;\\n\\n  get active() {\\n    return this.#active;\\n  }\\n\\n  \u002F**\\n   * @param {HTMLDialogElement} dialog - The overlay's DOM element.\\n   * @param {boolean} [canForceClose] - Indicates if opening the overlay closes\\n   *                  an active overlay. The default is `false`.\\n   * @returns {Promise} A promise that is resolved when the overlay has been\\n   *                    registered.\\n   *\u002F\\n  async register(dialog, canForceClose = false) {\\n    if (typeof dialog !== \\\"object\\\") {\\n      throw new Error(\\\"Not enough parameters.\\\");\\n    } else if (this.#overlays.has(dialog)) {\\n      throw new Error(\\\"The overlay is already registered.\\\");\\n    }\\n    this.#overlays.set(dialog, { canForceClose });\\n\\n    dialog.addEventListener(\\\"cancel\\\", ({ target }) => {\\n      if (this.#active === target) {\\n        this.#active = null;\\n      }\\n    });\\n  }\\n\\n  \u002F**\\n   * @param {HTMLDialogElement} dialog - The overlay's DOM element.\\n   * @returns {Promise} A promise that is resolved when the overlay has been\\n   *                    opened.\\n   *\u002F\\n  async open(dialog) {\\n    if (!this.#overlays.has(dialog)) {\\n      throw new Error(\\\"The overlay does not exist.\\\");\\n    } else if (this.#active) {\\n      if (this.#active === dialog) {\\n        throw new Error(\\\"The overlay is already active.\\\");\\n      } else if (this.#overlays.get(dialog).canForceClose) {\\n        await this.close();\\n      } else {\\n        throw new Error(\\\"Another overlay is currently active.\\\");\\n      }\\n    }\\n    this.#active = dialog;\\n    dialog.showModal();\\n  }\\n\\n  \u002F**\\n   * @param {HTMLDialogElement} dialog - The overlay's DOM element.\\n   * @returns {Promise} A promise that is resolved when the overlay has been\\n   *                    closed.\\n   *\u002F\\n  async close(dialog = this.#active) {\\n    if (!this.#overlays.has(dialog)) {\\n      throw new Error(\\\"The overlay does not exist.\\\");\\n    } else if (!this.#active) {\\n      throw new Error(\\\"The overlay is currently not active.\\\");\\n    } else if (this.#active !== dialog) {\\n      throw new Error(\\\"Another overlay is currently active.\\\");\\n    }\\n    dialog.close();\\n    this.#active = null;\\n  }\\n\\n  \u002F**\\n   * @param {HTMLDialogElement} dialog - The overlay's DOM element.\\n   * @returns {Promise} A promise that is resolved when the overlay has been\\n   *                    closed.\\n   *\u002F\\n  async closeIfActive(dialog) {\\n    if (this.#active === dialog) {\\n      await this.close(dialog);\\n    }\\n  }\\n}\\n\\nexport { OverlayManager };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Foverlay_manager.js\\\").OverlayManager} OverlayManager *\u002F\\n\\nimport { PasswordResponses } from \\\"pdfjs-lib\\\";\\n\\n\u002F**\\n * @typedef {Object} PasswordPromptOptions\\n * @property {HTMLDialogElement} dialog - The overlay's DOM element.\\n * @property {HTMLParagraphElement} label - Label containing instructions for\\n *                                          entering the password.\\n * @property {HTMLInputElement} input - Input field for entering the password.\\n * @property {HTMLButtonElement} submitButton - Button for submitting the\\n *                                              password.\\n * @property {HTMLButtonElement} cancelButton - Button for cancelling password\\n *                                              entry.\\n *\u002F\\n\\nclass PasswordPrompt {\\n  #activeCapability = null;\\n\\n  #updateCallback = null;\\n\\n  #reason = null;\\n\\n  \u002F**\\n   * @param {PasswordPromptOptions} options\\n   * @param {OverlayManager} overlayManager - Manager for the viewer overlays.\\n   * @param {boolean} [isViewerEmbedded] - If the viewer is embedded, in e.g.\\n   *   an \u003Ciframe> or an \u003Cobject>. The default value is `false`.\\n   *\u002F\\n  constructor(options, overlayManager, isViewerEmbedded = false) {\\n    this.dialog = options.dialog;\\n    this.label = options.label;\\n    this.input = options.input;\\n    this.submitButton = options.submitButton;\\n    this.cancelButton = options.cancelButton;\\n    this.overlayManager = overlayManager;\\n    this._isViewerEmbedded = isViewerEmbedded;\\n\\n    \u002F\u002F Attach the event listeners.\\n    this.submitButton.addEventListener(\\\"click\\\", this.#verify.bind(this));\\n    this.cancelButton.addEventListener(\\\"click\\\", this.close.bind(this));\\n    this.input.addEventListener(\\\"keydown\\\", e => {\\n      if (e.keyCode === \u002F* Enter = *\u002F 13) {\\n        this.#verify();\\n      }\\n    });\\n\\n    this.overlayManager.register(this.dialog, \u002F* canForceClose = *\u002F true);\\n\\n    this.dialog.addEventListener(\\\"close\\\", this.#cancel.bind(this));\\n  }\\n\\n  async open() {\\n    await this.#activeCapability?.promise;\\n    this.#activeCapability = Promise.withResolvers();\\n\\n    try {\\n      await this.overlayManager.open(this.dialog);\\n    } catch (ex) {\\n      this.#activeCapability.resolve();\\n      throw ex;\\n    }\\n\\n    const passwordIncorrect =\\n      this.#reason === PasswordResponses.INCORRECT_PASSWORD;\\n\\n    if (!this._isViewerEmbedded || passwordIncorrect) {\\n      this.input.focus();\\n    }\\n    this.label.setAttribute(\\n      \\\"data-l10n-id\\\",\\n      passwordIncorrect ? \\\"pdfjs-password-invalid\\\" : \\\"pdfjs-password-label\\\"\\n    );\\n  }\\n\\n  async close() {\\n    this.overlayManager.closeIfActive(this.dialog);\\n  }\\n\\n  #verify() {\\n    const password = this.input.value;\\n    if (password?.length > 0) {\\n      this.#invokeCallback(password);\\n    }\\n  }\\n\\n  #cancel() {\\n    this.#invokeCallback(new Error(\\\"PasswordPrompt cancelled.\\\"));\\n    this.#activeCapability.resolve();\\n  }\\n\\n  #invokeCallback(password) {\\n    if (!this.#updateCallback) {\\n      return; \u002F\u002F Ensure that the callback is only invoked once.\\n    }\\n    this.close();\\n    this.input.value = \\\"\\\";\\n\\n    this.#updateCallback(password);\\n    this.#updateCallback = null;\\n  }\\n\\n  async setUpdateCallback(updateCallback, reason) {\\n    if (this.#activeCapability) {\\n      await this.#activeCapability.promise;\\n    }\\n    this.#updateCallback = updateCallback;\\n    this.#reason = reason;\\n  }\\n}\\n\\nexport { PasswordPrompt };\\n\",\"\u002F* Copyright 2020 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { removeNullCharacters } from \\\".\u002Fui_utils.js\\\";\\n\\nconst TREEITEM_OFFSET_TOP = -100; \u002F\u002F px\\nconst TREEITEM_SELECTED_CLASS = \\\"selected\\\";\\n\\nclass BaseTreeViewer {\\n  constructor(options) {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) &&\\n      this.constructor === BaseTreeViewer\\n    ) {\\n      throw new Error(\\\"Cannot initialize BaseTreeViewer.\\\");\\n    }\\n    this.container = options.container;\\n    this.eventBus = options.eventBus;\\n    this._l10n = options.l10n;\\n\\n    this.reset();\\n  }\\n\\n  reset() {\\n    this._pdfDocument = null;\\n    this._lastToggleIsShow = true;\\n    this._currentTreeItem = null;\\n\\n    \u002F\u002F Remove the tree from the DOM.\\n    this.container.textContent = \\\"\\\";\\n    \u002F\u002F Ensure that the left (right in RTL locales) margin is always reset,\\n    \u002F\u002F to prevent incorrect tree alignment if a new document is opened.\\n    this.container.classList.remove(\\\"treeWithDeepNesting\\\");\\n  }\\n\\n  \u002F**\\n   * @protected\\n   *\u002F\\n  _dispatchEvent(count) {\\n    throw new Error(\\\"Not implemented: _dispatchEvent\\\");\\n  }\\n\\n  \u002F**\\n   * @protected\\n   *\u002F\\n  _bindLink(element, params) {\\n    throw new Error(\\\"Not implemented: _bindLink\\\");\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _normalizeTextContent(str) {\\n    \u002F\u002F Chars in range [0x01-0x1F] will be replaced with a white space\\n    \u002F\u002F and 0x00 by \\\"\\\".\\n    return (\\n      removeNullCharacters(str, \u002F* replaceInvisible *\u002F true) ||\\n      \u002F* en dash = *\u002F \\\"\\\\u2013\\\"\\n    );\\n  }\\n\\n  \u002F**\\n   * Prepend a button before a tree item which allows the user to collapse or\\n   * expand all tree items at that level; see `_toggleTreeItem`.\\n   * @param {HTMLDivElement} div\\n   * @param {boolean|object} [hidden]\\n   * @protected\\n   *\u002F\\n  _addToggleButton(div, hidden = false) {\\n    const toggler = document.createElement(\\\"div\\\");\\n    toggler.className = \\\"treeItemToggler\\\";\\n    if (hidden) {\\n      toggler.classList.add(\\\"treeItemsHidden\\\");\\n    }\\n    toggler.onclick = evt => {\\n      evt.stopPropagation();\\n      toggler.classList.toggle(\\\"treeItemsHidden\\\");\\n\\n      if (evt.shiftKey) {\\n        const shouldShowAll = !toggler.classList.contains(\\\"treeItemsHidden\\\");\\n        this._toggleTreeItem(div, shouldShowAll);\\n      }\\n    };\\n    div.prepend(toggler);\\n  }\\n\\n  \u002F**\\n   * Collapse or expand the subtree of a tree item.\\n   *\\n   * @param {Element} root - the root of the item (sub)tree.\\n   * @param {boolean} show - whether to show the item (sub)tree. If false,\\n   *   the item subtree rooted at `root` will be collapsed.\\n   * @private\\n   *\u002F\\n  _toggleTreeItem(root, show = false) {\\n    \u002F\u002F Pause translation when collapsing\u002Fexpanding the subtree.\\n    this._l10n.pause();\\n\\n    this._lastToggleIsShow = show;\\n    for (const toggler of root.querySelectorAll(\\\".treeItemToggler\\\")) {\\n      toggler.classList.toggle(\\\"treeItemsHidden\\\", !show);\\n    }\\n    this._l10n.resume();\\n  }\\n\\n  \u002F**\\n   * Collapse or expand all subtrees of the `container`.\\n   * @private\\n   *\u002F\\n  _toggleAllTreeItems() {\\n    this._toggleTreeItem(this.container, !this._lastToggleIsShow);\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _finishRendering(fragment, count, hasAnyNesting = false) {\\n    if (hasAnyNesting) {\\n      this.container.classList.add(\\\"treeWithDeepNesting\\\");\\n\\n      this._lastToggleIsShow = !fragment.querySelector(\\\".treeItemsHidden\\\");\\n    }\\n    \u002F\u002F Pause translation when inserting the tree into the DOM.\\n    this._l10n.pause();\\n    this.container.append(fragment);\\n    this._l10n.resume();\\n\\n    this._dispatchEvent(count);\\n  }\\n\\n  render(params) {\\n    throw new Error(\\\"Not implemented: render\\\");\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _updateCurrentTreeItem(treeItem = null) {\\n    if (this._currentTreeItem) {\\n      \u002F\u002F Ensure that the current treeItem-selection is always removed.\\n      this._currentTreeItem.classList.remove(TREEITEM_SELECTED_CLASS);\\n      this._currentTreeItem = null;\\n    }\\n    if (treeItem) {\\n      treeItem.classList.add(TREEITEM_SELECTED_CLASS);\\n      this._currentTreeItem = treeItem;\\n    }\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _scrollToCurrentTreeItem(treeItem) {\\n    if (!treeItem) {\\n      return;\\n    }\\n    \u002F\u002F Pause translation when expanding the treeItem.\\n    this._l10n.pause();\\n    \u002F\u002F Ensure that the treeItem is *fully* expanded, such that it will first of\\n    \u002F\u002F all be visible and secondly that scrolling it into view works correctly.\\n    let currentNode = treeItem.parentNode;\\n    while (currentNode && currentNode !== this.container) {\\n      if (currentNode.classList.contains(\\\"treeItem\\\")) {\\n        const toggler = currentNode.firstElementChild;\\n        toggler?.classList.remove(\\\"treeItemsHidden\\\");\\n      }\\n      currentNode = currentNode.parentNode;\\n    }\\n    this._l10n.resume();\\n\\n    this._updateCurrentTreeItem(treeItem);\\n\\n    this.container.scrollTo(\\n      treeItem.offsetLeft,\\n      treeItem.offsetTop + TREEITEM_OFFSET_TOP\\n    );\\n  }\\n}\\n\\nexport { BaseTreeViewer };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fevent_utils.js\\\").EventBus} EventBus *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fdownload_manager.js\\\").DownloadManager} DownloadManager *\u002F\\n\\nimport { BaseTreeViewer } from \\\".\u002Fbase_tree_viewer.js\\\";\\nimport { waitOnEventOrTimeout } from \\\".\u002Fevent_utils.js\\\";\\n\\n\u002F**\\n * @typedef {Object} PDFAttachmentViewerOptions\\n * @property {HTMLDivElement} container - The viewer element.\\n * @property {EventBus} eventBus - The application event bus.\\n * @property {DownloadManager} downloadManager - The download manager.\\n *\u002F\\n\\n\u002F**\\n * @typedef {Object} PDFAttachmentViewerRenderParameters\\n * @property {Object|null} attachments - A lookup table of attachment objects.\\n * @property {boolean} [keepRenderedCapability]\\n *\u002F\\n\\nclass PDFAttachmentViewer extends BaseTreeViewer {\\n  \u002F**\\n   * @param {PDFAttachmentViewerOptions} options\\n   *\u002F\\n  constructor(options) {\\n    super(options);\\n    this.downloadManager = options.downloadManager;\\n\\n    this.eventBus._on(\\n      \\\"fileattachmentannotation\\\",\\n      this.#appendAttachment.bind(this)\\n    );\\n  }\\n\\n  reset(keepRenderedCapability = false) {\\n    super.reset();\\n    this._attachments = null;\\n\\n    if (!keepRenderedCapability) {\\n      \u002F\u002F The only situation in which the `_renderedCapability` should *not* be\\n      \u002F\u002F replaced is when appending FileAttachment annotations.\\n      this._renderedCapability = Promise.withResolvers();\\n    }\\n    this._pendingDispatchEvent = false;\\n  }\\n\\n  \u002F**\\n   * @protected\\n   *\u002F\\n  async _dispatchEvent(attachmentsCount) {\\n    this._renderedCapability.resolve();\\n\\n    if (attachmentsCount === 0 && !this._pendingDispatchEvent) {\\n      \u002F\u002F Delay the event when no \\\"regular\\\" attachments exist, to allow time for\\n      \u002F\u002F parsing of any FileAttachment annotations that may be present on the\\n      \u002F\u002F *initially* rendered page; this reduces the likelihood of temporarily\\n      \u002F\u002F disabling the attachmentsView when the `PDFSidebar` handles the event.\\n      this._pendingDispatchEvent = true;\\n\\n      await waitOnEventOrTimeout({\\n        target: this.eventBus,\\n        name: \\\"annotationlayerrendered\\\",\\n        delay: 1000,\\n      });\\n\\n      if (!this._pendingDispatchEvent) {\\n        return; \u002F\u002F There was already another `_dispatchEvent`-call`.\\n      }\\n    }\\n    this._pendingDispatchEvent = false;\\n\\n    this.eventBus.dispatch(\\\"attachmentsloaded\\\", {\\n      source: this,\\n      attachmentsCount,\\n    });\\n  }\\n\\n  \u002F**\\n   * @protected\\n   *\u002F\\n  _bindLink(element, { content, description, filename }) {\\n    if (description) {\\n      element.title = description;\\n    }\\n    element.onclick = () => {\\n      this.downloadManager.openOrDownloadData(content, filename);\\n      return false;\\n    };\\n  }\\n\\n  \u002F**\\n   * @param {PDFAttachmentViewerRenderParameters} params\\n   *\u002F\\n  render({ attachments, keepRenderedCapability = false }) {\\n    if (this._attachments) {\\n      this.reset(keepRenderedCapability);\\n    }\\n    this._attachments = attachments || null;\\n\\n    if (!attachments) {\\n      this._dispatchEvent(\u002F* attachmentsCount = *\u002F 0);\\n      return;\\n    }\\n\\n    const fragment = document.createDocumentFragment();\\n    let attachmentsCount = 0;\\n    for (const name in attachments) {\\n      const item = attachments[name];\\n\\n      const div = document.createElement(\\\"div\\\");\\n      div.className = \\\"treeItem\\\";\\n\\n      const element = document.createElement(\\\"a\\\");\\n      this._bindLink(element, item);\\n      element.textContent = this._normalizeTextContent(item.filename);\\n\\n      div.append(element);\\n\\n      fragment.append(div);\\n      attachmentsCount++;\\n    }\\n\\n    this._finishRendering(fragment, attachmentsCount);\\n  }\\n\\n  \u002F**\\n   * Used to append FileAttachment annotations to the sidebar.\\n   *\u002F\\n  #appendAttachment(item) {\\n    const renderedPromise = this._renderedCapability.promise;\\n\\n    renderedPromise.then(() => {\\n      if (renderedPromise !== this._renderedCapability.promise) {\\n        return; \u002F\u002F The FileAttachment annotation belongs to a previous document.\\n      }\\n      const attachments = this._attachments || Object.create(null);\\n\\n      for (const name in attachments) {\\n        if (item.filename === name) {\\n          return; \u002F\u002F Ignore the new attachment if it already exists.\\n        }\\n      }\\n      attachments[item.filename] = item;\\n\\n      this.render({\\n        attachments,\\n        keepRenderedCapability: true,\\n      });\\n    });\\n  }\\n}\\n\\nexport { PDFAttachmentViewer };\\n\",\"\u002F* Copyright 2013 Rob Wu \u003Crob@robwu.nl>\\n * https:\u002F\u002Fgithub.com\u002FRob--W\u002Fgrab-to-pan.js\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { stopEvent } from \\\"pdfjs-lib\\\";\\n\\n\u002F\u002F Class name of element which can be grabbed.\\nconst CSS_CLASS_GRAB = \\\"grab-to-pan-grab\\\";\\n\\n\u002F**\\n * @typedef {Object} GrabToPanOptions\\n * @property {HTMLElement} element\\n *\u002F\\n\\nclass GrabToPan {\\n  #activateAC = null;\\n\\n  #mouseDownAC = null;\\n\\n  #scrollAC = null;\\n\\n  \u002F**\\n   * Construct a GrabToPan instance for a given HTML element.\\n   * @param {GrabToPanOptions} options\\n   *\u002F\\n  constructor({ element }) {\\n    this.element = element;\\n    this.document = element.ownerDocument;\\n\\n    \u002F\u002F This overlay will be inserted in the document when the mouse moves during\\n    \u002F\u002F a grab operation, to ensure that the cursor has the desired appearance.\\n    const overlay = (this.overlay = document.createElement(\\\"div\\\"));\\n    overlay.className = \\\"grab-to-pan-grabbing\\\";\\n  }\\n\\n  \u002F**\\n   * Bind a mousedown event to the element to enable grab-detection.\\n   *\u002F\\n  activate() {\\n    if (!this.#activateAC) {\\n      this.#activateAC = new AbortController();\\n\\n      this.element.addEventListener(\\\"mousedown\\\", this.#onMouseDown.bind(this), {\\n        capture: true,\\n        signal: this.#activateAC.signal,\\n      });\\n      this.element.classList.add(CSS_CLASS_GRAB);\\n    }\\n  }\\n\\n  \u002F**\\n   * Removes all events. Any pending pan session is immediately stopped.\\n   *\u002F\\n  deactivate() {\\n    if (this.#activateAC) {\\n      this.#activateAC.abort();\\n      this.#activateAC = null;\\n\\n      this.#endPan();\\n      this.element.classList.remove(CSS_CLASS_GRAB);\\n    }\\n  }\\n\\n  toggle() {\\n    if (this.#activateAC) {\\n      this.deactivate();\\n    } else {\\n      this.activate();\\n    }\\n  }\\n\\n  \u002F**\\n   * Whether to not pan if the target element is clicked.\\n   * Override this method to change the default behaviour.\\n   *\\n   * @param {Element} node - The target of the event.\\n   * @returns {boolean} Whether to not react to the click event.\\n   *\u002F\\n  ignoreTarget(node) {\\n    \u002F\u002F Check whether the clicked element is, a child of, an input element\u002Flink.\\n    return node.matches(\\n      \\\"a[href], a[href] *, input, textarea, button, button *, select, option\\\"\\n    );\\n  }\\n\\n  #onMouseDown(event) {\\n    if (event.button !== 0 || this.ignoreTarget(event.target)) {\\n      return;\\n    }\\n    if (event.originalTarget) {\\n      try {\\n        \u002F\u002F eslint-disable-next-line no-unused-expressions\\n        event.originalTarget.tagName;\\n      } catch {\\n        \u002F\u002F Mozilla-specific: element is a scrollbar (XUL element)\\n        return;\\n      }\\n    }\\n\\n    this.scrollLeftStart = this.element.scrollLeft;\\n    this.scrollTopStart = this.element.scrollTop;\\n    this.clientXStart = event.clientX;\\n    this.clientYStart = event.clientY;\\n\\n    this.#mouseDownAC = new AbortController();\\n    const boundEndPan = this.#endPan.bind(this),\\n      mouseOpts = { capture: true, signal: this.#mouseDownAC.signal };\\n\\n    this.document.addEventListener(\\n      \\\"mousemove\\\",\\n      this.#onMouseMove.bind(this),\\n      mouseOpts\\n    );\\n    this.document.addEventListener(\\\"mouseup\\\", boundEndPan, mouseOpts);\\n    \u002F\u002F When a scroll event occurs before a mousemove, assume that the user\\n    \u002F\u002F dragged a scrollbar (necessary for Opera Presto, Safari and IE)\\n    \u002F\u002F (not needed for Chrome\u002FFirefox)\\n    this.#scrollAC = new AbortController();\\n\\n    this.element.addEventListener(\\\"scroll\\\", boundEndPan, {\\n      capture: true,\\n      signal: this.#scrollAC.signal,\\n    });\\n    stopEvent(event);\\n\\n    const focusedElement = document.activeElement;\\n    if (focusedElement && !focusedElement.contains(event.target)) {\\n      focusedElement.blur();\\n    }\\n  }\\n\\n  #onMouseMove(event) {\\n    this.#scrollAC?.abort();\\n    this.#scrollAC = null;\\n\\n    if (!(event.buttons & 1)) {\\n      \u002F\u002F The left mouse button is released.\\n      this.#endPan();\\n      return;\\n    }\\n    const xDiff = event.clientX - this.clientXStart;\\n    const yDiff = event.clientY - this.clientYStart;\\n    this.element.scrollTo({\\n      top: this.scrollTopStart - yDiff,\\n      left: this.scrollLeftStart - xDiff,\\n      behavior: \\\"instant\\\",\\n    });\\n\\n    if (!this.overlay.parentNode) {\\n      document.body.append(this.overlay);\\n    }\\n  }\\n\\n  #endPan() {\\n    this.#mouseDownAC?.abort();\\n    this.#mouseDownAC = null;\\n    this.#scrollAC?.abort();\\n    this.#scrollAC = null;\\n    \u002F\u002F Note: ChildNode.remove doesn't throw if the parentNode is undefined.\\n    this.overlay.remove();\\n  }\\n}\\n\\nexport { GrabToPan };\\n\",\"\u002F* Copyright 2017 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fevent_utils.js\\\").EventBus} EventBus *\u002F\\n\\nimport { AnnotationEditorType, shadow } from \\\"pdfjs-lib\\\";\\nimport { CursorTool, PresentationModeState } from \\\".\u002Fui_utils.js\\\";\\nimport { GrabToPan } from \\\".\u002Fgrab_to_pan.js\\\";\\n\\n\u002F**\\n * @typedef {Object} PDFCursorToolsOptions\\n * @property {HTMLDivElement} container - The document container.\\n * @property {EventBus} eventBus - The application event bus.\\n * @property {number} [cursorToolOnLoad] - The cursor tool that will be enabled\\n *   on load; the constants from {CursorTool} should be used. The default value\\n *   is `CursorTool.SELECT`.\\n *\u002F\\n\\nclass PDFCursorTools {\\n  #active = CursorTool.SELECT;\\n\\n  #prevActive = null;\\n\\n  \u002F**\\n   * @param {PDFCursorToolsOptions} options\\n   *\u002F\\n  constructor({ container, eventBus, cursorToolOnLoad = CursorTool.SELECT }) {\\n    this.container = container;\\n    this.eventBus = eventBus;\\n\\n    this.#addEventListeners();\\n\\n    \u002F\u002F Defer the initial `switchTool` call, to give other viewer components\\n    \u002F\u002F time to initialize *and* register 'cursortoolchanged' event listeners.\\n    Promise.resolve().then(() => {\\n      this.switchTool(cursorToolOnLoad);\\n    });\\n  }\\n\\n  \u002F**\\n   * @type {number} One of the values in {CursorTool}.\\n   *\u002F\\n  get activeTool() {\\n    return this.#active;\\n  }\\n\\n  \u002F**\\n   * @param {number} tool - The cursor mode that should be switched to,\\n   *                        must be one of the values in {CursorTool}.\\n   *\u002F\\n  switchTool(tool) {\\n    if (this.#prevActive !== null) {\\n      \u002F\u002F Cursor tools cannot be used in PresentationMode\u002FAnnotationEditor.\\n      return;\\n    }\\n    this.#switchTool(tool);\\n  }\\n\\n  #switchTool(tool, disabled = false) {\\n    if (tool === this.#active) {\\n      if (this.#prevActive !== null) {\\n        \u002F\u002F Ensure that the `disabled`-attribute of the buttons will be updated.\\n        this.eventBus.dispatch(\\\"cursortoolchanged\\\", {\\n          source: this,\\n          tool,\\n          disabled,\\n        });\\n      }\\n      return; \u002F\u002F The requested tool is already active.\\n    }\\n\\n    const disableActiveTool = () => {\\n      switch (this.#active) {\\n        case CursorTool.SELECT:\\n          break;\\n        case CursorTool.HAND:\\n          this._handTool.deactivate();\\n          break;\\n        case CursorTool.ZOOM:\\n        \u002F* falls through *\u002F\\n      }\\n    };\\n\\n    \u002F\u002F Enable the new cursor tool.\\n    switch (tool) {\\n      case CursorTool.SELECT:\\n        disableActiveTool();\\n        break;\\n      case CursorTool.HAND:\\n        disableActiveTool();\\n        this._handTool.activate();\\n        break;\\n      case CursorTool.ZOOM:\\n      \u002F* falls through *\u002F\\n      default:\\n        console.error(`switchTool: \\\"${tool}\\\" is an unsupported value.`);\\n        return;\\n    }\\n    \u002F\u002F Update the active tool *after* it has been validated above,\\n    \u002F\u002F in order to prevent setting it to an invalid state.\\n    this.#active = tool;\\n\\n    this.eventBus.dispatch(\\\"cursortoolchanged\\\", {\\n      source: this,\\n      tool,\\n      disabled,\\n    });\\n  }\\n\\n  #addEventListeners() {\\n    this.eventBus._on(\\\"switchcursortool\\\", evt => {\\n      if (!evt.reset) {\\n        this.switchTool(evt.tool);\\n      } else if (this.#prevActive !== null) {\\n        annotationEditorMode = AnnotationEditorType.NONE;\\n        presentationModeState = PresentationModeState.NORMAL;\\n\\n        enableActive();\\n      }\\n    });\\n\\n    let annotationEditorMode = AnnotationEditorType.NONE,\\n      presentationModeState = PresentationModeState.NORMAL;\\n\\n    const disableActive = () => {\\n      this.#prevActive ??= this.#active; \u002F\u002F Keep track of the first one.\\n      this.#switchTool(CursorTool.SELECT, \u002F* disabled = *\u002F true);\\n    };\\n    const enableActive = () => {\\n      if (\\n        this.#prevActive !== null &&\\n        annotationEditorMode === AnnotationEditorType.NONE &&\\n        presentationModeState === PresentationModeState.NORMAL\\n      ) {\\n        this.#switchTool(this.#prevActive);\\n        this.#prevActive = null;\\n      }\\n    };\\n\\n    this.eventBus._on(\\\"annotationeditormodechanged\\\", ({ mode }) => {\\n      annotationEditorMode = mode;\\n\\n      if (mode === AnnotationEditorType.NONE) {\\n        enableActive();\\n      } else {\\n        disableActive();\\n      }\\n    });\\n\\n    this.eventBus._on(\\\"presentationmodechanged\\\", ({ state }) => {\\n      presentationModeState = state;\\n\\n      if (state === PresentationModeState.NORMAL) {\\n        enableActive();\\n      } else if (state === PresentationModeState.FULLSCREEN) {\\n        disableActive();\\n      }\\n    });\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  get _handTool() {\\n    return shadow(\\n      this,\\n      \\\"_handTool\\\",\\n      new GrabToPan({\\n        element: this.container,\\n      })\\n    );\\n  }\\n}\\n\\nexport { PDFCursorTools };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fevent_utils.js\\\").EventBus} EventBus *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces.js\\\").IL10n} IL10n *\u002F\\n\u002F** @typedef {import(\\\".\u002Foverlay_manager.js\\\").OverlayManager} OverlayManager *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fapi.js\\\").PDFDocumentProxy} PDFDocumentProxy *\u002F\\n\\nimport { getPageSizeInches, isPortraitOrientation } from \\\".\u002Fui_utils.js\\\";\\nimport { PDFDateString } from \\\"pdfjs-lib\\\";\\n\\n\u002F\u002F See https:\u002F\u002Fen.wikibooks.org\u002Fwiki\u002FLentis\u002FConversion_to_the_Metric_Standard_in_the_United_States\\nconst NON_METRIC_LOCALES = [\\\"en-us\\\", \\\"en-lr\\\", \\\"my\\\"];\\n\\n\u002F\u002F Should use the format: `width x height`, in portrait orientation. The names,\\n\u002F\u002F which are l10n-ids, should be lowercase.\\n\u002F\u002F See https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPaper_size\\nconst US_PAGE_NAMES = {\\n  \\\"8.5x11\\\": \\\"pdfjs-document-properties-page-size-name-letter\\\",\\n  \\\"8.5x14\\\": \\\"pdfjs-document-properties-page-size-name-legal\\\",\\n};\\nconst METRIC_PAGE_NAMES = {\\n  \\\"297x420\\\": \\\"pdfjs-document-properties-page-size-name-a-three\\\",\\n  \\\"210x297\\\": \\\"pdfjs-document-properties-page-size-name-a-four\\\",\\n};\\n\\nfunction getPageName(size, isPortrait, pageNames) {\\n  const width = isPortrait ? size.width : size.height;\\n  const height = isPortrait ? size.height : size.width;\\n\\n  return pageNames[`${width}x${height}`];\\n}\\n\\n\u002F**\\n * @typedef {Object} PDFDocumentPropertiesOptions\\n * @property {HTMLDialogElement} dialog - The overlay's DOM element.\\n * @property {Object} fields - Names and elements of the overlay's fields.\\n * @property {HTMLButtonElement} closeButton - Button for closing the overlay.\\n *\u002F\\n\\nclass PDFDocumentProperties {\\n  #fieldData = null;\\n\\n  \u002F**\\n   * @param {PDFDocumentPropertiesOptions} options\\n   * @param {OverlayManager} overlayManager - Manager for the viewer overlays.\\n   * @param {EventBus} eventBus - The application event bus.\\n   * @param {IL10n} l10n - Localization service.\\n   * @param {function} fileNameLookup - The function that is used to lookup\\n   *   the document fileName.\\n   *\u002F\\n  constructor(\\n    { dialog, fields, closeButton },\\n    overlayManager,\\n    eventBus,\\n    l10n,\\n    fileNameLookup,\\n    titleLookup\\n  ) {\\n    this.dialog = dialog;\\n    this.fields = fields;\\n    this.overlayManager = overlayManager;\\n    this.l10n = l10n;\\n    this._fileNameLookup = fileNameLookup;\\n    this._titleLookup = titleLookup;\\n\\n    this.#reset();\\n    \u002F\u002F Bind the event listener for the Close button.\\n    closeButton.addEventListener(\\\"click\\\", this.close.bind(this));\\n\\n    this.overlayManager.register(this.dialog);\\n\\n    eventBus._on(\\\"pagechanging\\\", evt => {\\n      this._currentPageNumber = evt.pageNumber;\\n    });\\n    eventBus._on(\\\"rotationchanging\\\", evt => {\\n      this._pagesRotation = evt.pagesRotation;\\n    });\\n  }\\n\\n  \u002F**\\n   * Open the document properties overlay.\\n   *\u002F\\n  async open() {\\n    await Promise.all([\\n      this.overlayManager.open(this.dialog),\\n      this._dataAvailableCapability.promise,\\n    ]);\\n    const currentPageNumber = this._currentPageNumber;\\n    const pagesRotation = this._pagesRotation;\\n\\n    \u002F\u002F If the document properties were previously fetched (for this PDF file),\\n    \u002F\u002F just update the dialog immediately to avoid redundant lookups.\\n    if (\\n      this.#fieldData &&\\n      currentPageNumber === this.#fieldData._currentPageNumber &&\\n      pagesRotation === this.#fieldData._pagesRotation\\n    ) {\\n      this.#updateUI();\\n      return;\\n    }\\n\\n    \u002F\u002F Get the document properties.\\n    const [\\n      { info, metadata, \u002F* contentDispositionFilename, *\u002F contentLength },\\n      pdfPage,\\n    ] = await Promise.all([\\n      this.pdfDocument.getMetadata(),\\n      this.pdfDocument.getPage(currentPageNumber),\\n    ]);\\n\\n    const [\\n      fileName,\\n      fileSize,\\n      title,\\n      creationDate,\\n      modificationDate,\\n      pageSize,\\n      isLinearized,\\n    ] = await Promise.all([\\n      this._fileNameLookup(),\\n      this.#parseFileSize(contentLength),\\n      this._titleLookup(),\\n      this.#parseDate(metadata?.get(\\\"xmp:createdate\\\"), info.CreationDate),\\n      this.#parseDate(metadata?.get(\\\"xmp:modifydate\\\"), info.ModDate),\\n      this.#parsePageSize(getPageSizeInches(pdfPage), pagesRotation),\\n      this.#parseLinearization(info.IsLinearized),\\n    ]);\\n\\n    this.#fieldData = Object.freeze({\\n      fileName,\\n      fileSize,\\n      title,\\n      author: metadata?.get(\\\"dc:creator\\\")?.join(\\\"\\\\n\\\") || info.Author,\\n      subject: metadata?.get(\\\"dc:subject\\\")?.join(\\\"\\\\n\\\") || info.Subject,\\n      keywords: metadata?.get(\\\"pdf:keywords\\\") || info.Keywords,\\n      creationDate,\\n      modificationDate,\\n      creator: metadata?.get(\\\"xmp:creatortool\\\") || info.Creator,\\n      producer: metadata?.get(\\\"pdf:producer\\\") || info.Producer,\\n      version: info.PDFFormatVersion,\\n      pageCount: this.pdfDocument.numPages,\\n      pageSize,\\n      linearized: isLinearized,\\n      _currentPageNumber: currentPageNumber,\\n      _pagesRotation: pagesRotation,\\n    });\\n    this.#updateUI();\\n\\n    \u002F\u002F Get the correct fileSize, since it may not have been available\\n    \u002F\u002F or could potentially be wrong.\\n    const { length } = await this.pdfDocument.getDownloadInfo();\\n    if (contentLength === length) {\\n      return; \u002F\u002F The fileSize has already been correctly set.\\n    }\\n    const data = Object.assign(Object.create(null), this.#fieldData);\\n    data.fileSize = await this.#parseFileSize(length);\\n\\n    this.#fieldData = Object.freeze(data);\\n    this.#updateUI();\\n  }\\n\\n  \u002F**\\n   * Close the document properties overlay.\\n   *\u002F\\n  async close() {\\n    this.overlayManager.close(this.dialog);\\n  }\\n\\n  \u002F**\\n   * Set a reference to the PDF document in order to populate the dialog fields\\n   * with the document properties. Note that the dialog will contain no\\n   * information if this method is not called.\\n   *\\n   * @param {PDFDocumentProxy} pdfDocument - A reference to the PDF document.\\n   *\u002F\\n  setDocument(pdfDocument) {\\n    if (this.pdfDocument) {\\n      this.#reset();\\n      this.#updateUI();\\n    }\\n    if (!pdfDocument) {\\n      return;\\n    }\\n    this.pdfDocument = pdfDocument;\\n\\n    this._dataAvailableCapability.resolve();\\n  }\\n\\n  #reset() {\\n    this.pdfDocument = null;\\n\\n    this.#fieldData = null;\\n    this._dataAvailableCapability = Promise.withResolvers();\\n    this._currentPageNumber = 1;\\n    this._pagesRotation = 0;\\n  }\\n\\n  \u002F**\\n   * Always updates all of the dialog fields, to prevent inconsistent UI state.\\n   * NOTE: If the contents of a particular field is neither a non-empty string,\\n   *       nor a number, it will fall back to \\\"-\\\".\\n   *\u002F\\n  #updateUI() {\\n    if (this.#fieldData && this.overlayManager.active !== this.dialog) {\\n      \u002F\u002F Don't bother updating the dialog if it's already been closed,\\n      \u002F\u002F unless it's being reset (i.e. `this.#fieldData === null`),\\n      \u002F\u002F since it will be updated the next time `this.open` is called.\\n      return;\\n    }\\n    for (const id in this.fields) {\\n      const content = this.#fieldData?.[id];\\n      this.fields[id].textContent = content || content === 0 ? content : \\\"-\\\";\\n    }\\n  }\\n\\n  async #parseFileSize(b = 0) {\\n    const kb = b \u002F 1024,\\n      mb = kb \u002F 1024;\\n    return kb\\n      ? this.l10n.get(\\n          mb >= 1\\n            ? \\\"pdfjs-document-properties-size-mb\\\"\\n            : \\\"pdfjs-document-properties-size-kb\\\",\\n          { mb, kb, b }\\n        )\\n      : undefined;\\n  }\\n\\n  async #parsePageSize(pageSizeInches, pagesRotation) {\\n    if (!pageSizeInches) {\\n      return undefined;\\n    }\\n    \u002F\u002F Take the viewer rotation into account as well; compare with Adobe Reader.\\n    if (pagesRotation % 180 !== 0) {\\n      pageSizeInches = {\\n        width: pageSizeInches.height,\\n        height: pageSizeInches.width,\\n      };\\n    }\\n    const isPortrait = isPortraitOrientation(pageSizeInches),\\n      nonMetric = NON_METRIC_LOCALES.includes(this.l10n.getLanguage());\\n\\n    let sizeInches = {\\n      width: Math.round(pageSizeInches.width * 100) \u002F 100,\\n      height: Math.round(pageSizeInches.height * 100) \u002F 100,\\n    };\\n    \u002F\u002F 1in == 25.4mm; no need to round to 2 decimals for millimeters.\\n    let sizeMillimeters = {\\n      width: Math.round(pageSizeInches.width * 25.4 * 10) \u002F 10,\\n      height: Math.round(pageSizeInches.height * 25.4 * 10) \u002F 10,\\n    };\\n\\n    let nameId =\\n      getPageName(sizeInches, isPortrait, US_PAGE_NAMES) ||\\n      getPageName(sizeMillimeters, isPortrait, METRIC_PAGE_NAMES);\\n\\n    if (\\n      !nameId &&\\n      !(\\n        Number.isInteger(sizeMillimeters.width) &&\\n        Number.isInteger(sizeMillimeters.height)\\n      )\\n    ) {\\n      \u002F\u002F Attempt to improve the page name detection by falling back to fuzzy\\n      \u002F\u002F matching of the metric dimensions, to account for e.g. rounding errors\\n      \u002F\u002F and\u002For PDF files that define the page sizes in an imprecise manner.\\n      const exactMillimeters = {\\n        width: pageSizeInches.width * 25.4,\\n        height: pageSizeInches.height * 25.4,\\n      };\\n      const intMillimeters = {\\n        width: Math.round(sizeMillimeters.width),\\n        height: Math.round(sizeMillimeters.height),\\n      };\\n\\n      \u002F\u002F Try to avoid false positives, by only considering \\\"small\\\" differences.\\n      if (\\n        Math.abs(exactMillimeters.width - intMillimeters.width) \u003C 0.1 &&\\n        Math.abs(exactMillimeters.height - intMillimeters.height) \u003C 0.1\\n      ) {\\n        nameId = getPageName(intMillimeters, isPortrait, METRIC_PAGE_NAMES);\\n        if (nameId) {\\n          \u002F\u002F Update *both* sizes, computed above, to ensure that the displayed\\n          \u002F\u002F dimensions always correspond to the detected page name.\\n          sizeInches = {\\n            width: Math.round((intMillimeters.width \u002F 25.4) * 100) \u002F 100,\\n            height: Math.round((intMillimeters.height \u002F 25.4) * 100) \u002F 100,\\n          };\\n          sizeMillimeters = intMillimeters;\\n        }\\n      }\\n    }\\n\\n    const [{ width, height }, unit, name, orientation] = await Promise.all([\\n      nonMetric ? sizeInches : sizeMillimeters,\\n      this.l10n.get(\\n        nonMetric\\n          ? \\\"pdfjs-document-properties-page-size-unit-inches\\\"\\n          : \\\"pdfjs-document-properties-page-size-unit-millimeters\\\"\\n      ),\\n      nameId && this.l10n.get(nameId),\\n      this.l10n.get(\\n        isPortrait\\n          ? \\\"pdfjs-document-properties-page-size-orientation-portrait\\\"\\n          : \\\"pdfjs-document-properties-page-size-orientation-landscape\\\"\\n      ),\\n    ]);\\n\\n    return this.l10n.get(\\n      name\\n        ? \\\"pdfjs-document-properties-page-size-dimension-name-string\\\"\\n        : \\\"pdfjs-document-properties-page-size-dimension-string\\\",\\n      { width, height, unit, name, orientation }\\n    );\\n  }\\n\\n  async #parseDate(metadataDate, infoDate) {\\n    const dateObj =\\n      Date.parse(metadataDate) || PDFDateString.toDateObject(infoDate);\\n    return dateObj\\n      ? this.l10n.get(\\\"pdfjs-document-properties-date-time-string\\\", {\\n          dateObj: dateObj.valueOf(),\\n        })\\n      : undefined;\\n  }\\n\\n  #parseLinearization(isLinearized) {\\n    return this.l10n.get(\\n      isLinearized\\n        ? \\\"pdfjs-document-properties-linearized-yes\\\"\\n        : \\\"pdfjs-document-properties-linearized-no\\\"\\n    );\\n  }\\n}\\n\\nexport { PDFDocumentProperties };\\n\",\"\u002F* Copyright 2018 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nconst CharacterType = {\\n  SPACE: 0,\\n  ALPHA_LETTER: 1,\\n  PUNCT: 2,\\n  HAN_LETTER: 3,\\n  KATAKANA_LETTER: 4,\\n  HIRAGANA_LETTER: 5,\\n  HALFWIDTH_KATAKANA_LETTER: 6,\\n  THAI_LETTER: 7,\\n};\\n\\nfunction isAlphabeticalScript(charCode) {\\n  return charCode \u003C 0x2e80;\\n}\\n\\nfunction isAscii(charCode) {\\n  return (charCode & 0xff80) === 0;\\n}\\n\\nfunction isAsciiAlpha(charCode) {\\n  return (\\n    (charCode >= \u002F* a = *\u002F 0x61 && charCode \u003C= \u002F* z = *\u002F 0x7a) ||\\n    (charCode >= \u002F* A = *\u002F 0x41 && charCode \u003C= \u002F* Z = *\u002F 0x5a)\\n  );\\n}\\n\\nfunction isAsciiDigit(charCode) {\\n  return charCode >= \u002F* 0 = *\u002F 0x30 && charCode \u003C= \u002F* 9 = *\u002F 0x39;\\n}\\n\\nfunction isAsciiSpace(charCode) {\\n  return (\\n    charCode === \u002F* SPACE = *\u002F 0x20 ||\\n    charCode === \u002F* TAB = *\u002F 0x09 ||\\n    charCode === \u002F* CR = *\u002F 0x0d ||\\n    charCode === \u002F* LF = *\u002F 0x0a\\n  );\\n}\\n\\nfunction isHan(charCode) {\\n  return (\\n    (charCode >= 0x3400 && charCode \u003C= 0x9fff) ||\\n    (charCode >= 0xf900 && charCode \u003C= 0xfaff)\\n  );\\n}\\n\\nfunction isKatakana(charCode) {\\n  return charCode >= 0x30a0 && charCode \u003C= 0x30ff;\\n}\\n\\nfunction isHiragana(charCode) {\\n  return charCode >= 0x3040 && charCode \u003C= 0x309f;\\n}\\n\\nfunction isHalfwidthKatakana(charCode) {\\n  return charCode >= 0xff60 && charCode \u003C= 0xff9f;\\n}\\n\\nfunction isThai(charCode) {\\n  return (charCode & 0xff80) === 0x0e00;\\n}\\n\\n\u002F**\\n * This function is based on the word-break detection implemented in:\\n * https:\u002F\u002Fhg.mozilla.org\u002Fmozilla-central\u002Ffile\u002Ftip\u002Fintl\u002Flwbrk\u002FWordBreaker.cpp\\n *\u002F\\nfunction getCharacterType(charCode) {\\n  if (isAlphabeticalScript(charCode)) {\\n    if (isAscii(charCode)) {\\n      if (isAsciiSpace(charCode)) {\\n        return CharacterType.SPACE;\\n      } else if (\\n        isAsciiAlpha(charCode) ||\\n        isAsciiDigit(charCode) ||\\n        charCode === \u002F* UNDERSCORE = *\u002F 0x5f\\n      ) {\\n        return CharacterType.ALPHA_LETTER;\\n      }\\n      return CharacterType.PUNCT;\\n    } else if (isThai(charCode)) {\\n      return CharacterType.THAI_LETTER;\\n    } else if (charCode === \u002F* NBSP = *\u002F 0xa0) {\\n      return CharacterType.SPACE;\\n    }\\n    return CharacterType.ALPHA_LETTER;\\n  }\\n\\n  if (isHan(charCode)) {\\n    return CharacterType.HAN_LETTER;\\n  } else if (isKatakana(charCode)) {\\n    return CharacterType.KATAKANA_LETTER;\\n  } else if (isHiragana(charCode)) {\\n    return CharacterType.HIRAGANA_LETTER;\\n  } else if (isHalfwidthKatakana(charCode)) {\\n    return CharacterType.HALFWIDTH_KATAKANA_LETTER;\\n  }\\n  return CharacterType.ALPHA_LETTER;\\n}\\n\\nlet NormalizeWithNFKC;\\nfunction getNormalizeWithNFKC() {\\n  \u002F* eslint-disable no-irregular-whitespace *\u002F\\n  NormalizeWithNFKC ||= ` ¨ª¯²-µ¸-º¼-¾Ĳ-ĳĿ-ŀŉſǄ-ǌǱ-ǳʰ-ʸ˘-˝ˠ-ˤʹͺ;΄-΅·ϐ-ϖϰ-ϲϴ-ϵϹևٵ-ٸक़-य़ড়-ঢ়য়ਲ਼ਸ਼ਖ਼-ਜ਼ਫ਼ଡ଼-ଢ଼ำຳໜ-ໝ༌གྷཌྷདྷབྷཛྷཀྵჼᴬ-ᴮᴰ-ᴺᴼ-ᵍᵏ-ᵪᵸᶛ-ᶿẚ-ẛάέήίόύώΆ᾽-῁ΈΉ῍-῏ΐΊ῝-῟ΰΎ῭-`ΌΏ´-῾ - ‑‗․-… ″-‴‶-‷‼‾⁇-⁉⁗ ⁰-ⁱ⁴-₎ₐ-ₜ₨℀-℃℅-ℇ℉-ℓℕ-№ℙ-ℝ℠-™ℤΩℨK-ℭℯ-ℱℳ-ℹ℻-⅀ⅅ-ⅉ⅐-ⅿ↉∬-∭∯-∰〈-〉①-⓪⨌⩴-⩶⫝̸ⱼ-ⱽⵯ⺟⻳⼀-⿕　〶〸-〺゛-゜ゟヿㄱ-ㆎ㆒-㆟㈀-㈞㈠-㉇㉐-㉾㊀-㏿ꚜ-ꚝꝰꟲ-ꟴꟸ-ꟹꭜ-ꭟꭩ豈-嗀塚晴凞-羽蘒諸逸-都飯-舘並-龎ﬀ-ﬆﬓ-ﬗיִײַ-זּטּ-לּמּנּ-סּףּ-פּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-﷼︐-︙︰-﹄﹇-﹒﹔-﹦﹨-﹫ﹰ-ﹲﹴﹶ-ﻼ！-ﾾￂ-ￇￊ-ￏￒ-ￗￚ-ￜ￠-￦`;\\n\\n  if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n    const ranges = [];\\n    const range = [];\\n    const diacriticsRegex = \u002F^\\\\p{M}$\u002Fu;\\n    \u002F\u002F Some chars must be replaced by their NFKC counterpart during a search.\\n    for (let i = 0; i \u003C 65536; i++) {\\n      const c = String.fromCharCode(i);\\n      if (c.normalize(\\\"NFKC\\\") !== c && !diacriticsRegex.test(c)) {\\n        if (range.length !== 2) {\\n          range[0] = range[1] = i;\\n          continue;\\n        }\\n        if (range[1] + 1 !== i) {\\n          if (range[0] === range[1]) {\\n            ranges.push(String.fromCharCode(range[0]));\\n          } else {\\n            ranges.push(\\n              `${String.fromCharCode(range[0])}-${String.fromCharCode(\\n                range[1]\\n              )}`\\n            );\\n          }\\n          range[0] = range[1] = i;\\n        } else {\\n          range[1] = i;\\n        }\\n      }\\n    }\\n    if (ranges.join(\\\"\\\") !== NormalizeWithNFKC) {\\n      throw new Error(\\n        \\\"getNormalizeWithNFKC - update the `NormalizeWithNFKC` string.\\\"\\n      );\\n    }\\n  }\\n  return NormalizeWithNFKC;\\n}\\n\\nexport { CharacterType, getCharacterType, getNormalizeWithNFKC };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fapi\\\").PDFDocumentProxy} PDFDocumentProxy *\u002F\\n\u002F** @typedef {import(\\\".\u002Fevent_utils\\\").EventBus} EventBus *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IPDFLinkService} IPDFLinkService *\u002F\\n\\nimport { binarySearchFirstItem, scrollIntoView } from \\\".\u002Fui_utils.js\\\";\\nimport { getCharacterType, getNormalizeWithNFKC } from \\\".\u002Fpdf_find_utils.js\\\";\\n\\nconst FindState = {\\n  FOUND: 0,\\n  NOT_FOUND: 1,\\n  WRAPPED: 2,\\n  PENDING: 3,\\n};\\n\\nconst FIND_TIMEOUT = 250; \u002F\u002F ms\\nconst MATCH_SCROLL_OFFSET_TOP = -50; \u002F\u002F px\\nconst MATCH_SCROLL_OFFSET_LEFT = -400; \u002F\u002F px\\n\\nconst CHARACTERS_TO_NORMALIZE = {\\n  \\\"\\\\u2010\\\": \\\"-\\\", \u002F\u002F Hyphen\\n  \\\"\\\\u2018\\\": \\\"'\\\", \u002F\u002F Left single quotation mark\\n  \\\"\\\\u2019\\\": \\\"'\\\", \u002F\u002F Right single quotation mark\\n  \\\"\\\\u201A\\\": \\\"'\\\", \u002F\u002F Single low-9 quotation mark\\n  \\\"\\\\u201B\\\": \\\"'\\\", \u002F\u002F Single high-reversed-9 quotation mark\\n  \\\"\\\\u201C\\\": '\\\"', \u002F\u002F Left double quotation mark\\n  \\\"\\\\u201D\\\": '\\\"', \u002F\u002F Right double quotation mark\\n  \\\"\\\\u201E\\\": '\\\"', \u002F\u002F Double low-9 quotation mark\\n  \\\"\\\\u201F\\\": '\\\"', \u002F\u002F Double high-reversed-9 quotation mark\\n  \\\"\\\\u00BC\\\": \\\"1\u002F4\\\", \u002F\u002F Vulgar fraction one quarter\\n  \\\"\\\\u00BD\\\": \\\"1\u002F2\\\", \u002F\u002F Vulgar fraction one half\\n  \\\"\\\\u00BE\\\": \\\"3\u002F4\\\", \u002F\u002F Vulgar fraction three quarters\\n};\\n\\n\u002F\u002F These diacritics aren't considered as combining diacritics\\n\u002F\u002F when searching in a document:\\n\u002F\u002F   https:\u002F\u002Fsearchfox.org\u002Fmozilla-central\u002Fsource\u002Fintl\u002Funicharutil\u002Futil\u002Fis_combining_diacritic.py.\\n\u002F\u002F The combining class definitions can be found:\\n\u002F\u002F   https:\u002F\u002Fwww.unicode.org\u002Freports\u002Ftr44\u002F#Canonical_Combining_Class_Values\\n\u002F\u002F Category 0 corresponds to [^\\\\p{Mn}].\\nconst DIACRITICS_EXCEPTION = new Set([\\n  \u002F\u002F UNICODE_COMBINING_CLASS_KANA_VOICING\\n  \u002F\u002F https:\u002F\u002Fwww.compart.com\u002Ffr\u002Funicode\u002Fcombining\u002F8\\n  0x3099, 0x309a,\\n  \u002F\u002F UNICODE_COMBINING_CLASS_VIRAMA (under 0xFFFF)\\n  \u002F\u002F https:\u002F\u002Fwww.compart.com\u002Ffr\u002Funicode\u002Fcombining\u002F9\\n  0x094d, 0x09cd, 0x0a4d, 0x0acd, 0x0b4d, 0x0bcd, 0x0c4d, 0x0ccd, 0x0d3b,\\n  0x0d3c, 0x0d4d, 0x0dca, 0x0e3a, 0x0eba, 0x0f84, 0x1039, 0x103a, 0x1714,\\n  0x1734, 0x17d2, 0x1a60, 0x1b44, 0x1baa, 0x1bab, 0x1bf2, 0x1bf3, 0x2d7f,\\n  0xa806, 0xa82c, 0xa8c4, 0xa953, 0xa9c0, 0xaaf6, 0xabed,\\n  \u002F\u002F 91\\n  \u002F\u002F https:\u002F\u002Fwww.compart.com\u002Ffr\u002Funicode\u002Fcombining\u002F91\\n  0x0c56,\\n  \u002F\u002F 129\\n  \u002F\u002F https:\u002F\u002Fwww.compart.com\u002Ffr\u002Funicode\u002Fcombining\u002F129\\n  0x0f71,\\n  \u002F\u002F 130\\n  \u002F\u002F https:\u002F\u002Fwww.compart.com\u002Ffr\u002Funicode\u002Fcombining\u002F130\\n  0x0f72, 0x0f7a, 0x0f7b, 0x0f7c, 0x0f7d, 0x0f80,\\n  \u002F\u002F 132\\n  \u002F\u002F https:\u002F\u002Fwww.compart.com\u002Ffr\u002Funicode\u002Fcombining\u002F132\\n  0x0f74,\\n]);\\nlet DIACRITICS_EXCEPTION_STR; \u002F\u002F Lazily initialized, see below.\\n\\nconst DIACRITICS_REG_EXP = \u002F\\\\p{M}+\u002Fgu;\\nconst SPECIAL_CHARS_REG_EXP =\\n  \u002F([.*+?^${}()|[\\\\]\\\\\\\\])|(\\\\p{P})|(\\\\s+)|(\\\\p{M})|(\\\\p{L})\u002Fgu;\\nconst NOT_DIACRITIC_FROM_END_REG_EXP = \u002F([^\\\\p{M}])\\\\p{M}*$\u002Fu;\\nconst NOT_DIACRITIC_FROM_START_REG_EXP = \u002F^\\\\p{M}*([^\\\\p{M}])\u002Fu;\\n\\n\u002F\u002F The range [AC00-D7AF] corresponds to the Hangul syllables.\\n\u002F\u002F The few other chars are some CJK Compatibility Ideographs.\\nconst SYLLABLES_REG_EXP = \u002F[\\\\uAC00-\\\\uD7AF\\\\uFA6C\\\\uFACF-\\\\uFAD1\\\\uFAD5-\\\\uFAD7]+\u002Fg;\\nconst SYLLABLES_LENGTHS = new Map();\\n\u002F\u002F When decomposed (in using NFD) the above syllables will start\\n\u002F\u002F with one of the chars in this regexp.\\nconst FIRST_CHAR_SYLLABLES_REG_EXP =\\n  \\\"[\\\\\\\\u1100-\\\\\\\\u1112\\\\\\\\ud7a4-\\\\\\\\ud7af\\\\\\\\ud84a\\\\\\\\ud84c\\\\\\\\ud850\\\\\\\\ud854\\\\\\\\ud857\\\\\\\\ud85f]\\\";\\n\\nconst NFKC_CHARS_TO_NORMALIZE = new Map();\\n\\nlet noSyllablesRegExp = null;\\nlet withSyllablesRegExp = null;\\n\\nfunction normalize(text) {\\n  \u002F\u002F The diacritics in the text or in the query can be composed or not.\\n  \u002F\u002F So we use a decomposed text using NFD (and the same for the query)\\n  \u002F\u002F in order to be sure that diacritics are in the same order.\\n\\n  \u002F\u002F Collect syllables length and positions.\\n  const syllablePositions = [];\\n  let m;\\n  while ((m = SYLLABLES_REG_EXP.exec(text)) !== null) {\\n    let { index } = m;\\n    for (const char of m[0]) {\\n      let len = SYLLABLES_LENGTHS.get(char);\\n      if (!len) {\\n        len = char.normalize(\\\"NFD\\\").length;\\n        SYLLABLES_LENGTHS.set(char, len);\\n      }\\n      syllablePositions.push([len, index++]);\\n    }\\n  }\\n\\n  const hasSyllables = syllablePositions.length > 0;\\n\\n  let normalizationRegex;\\n  if (!hasSyllables && noSyllablesRegExp) {\\n    normalizationRegex = noSyllablesRegExp;\\n  } else if (hasSyllables && withSyllablesRegExp) {\\n    normalizationRegex = withSyllablesRegExp;\\n  } else {\\n    \u002F\u002F Compile the regular expression for text normalization once.\\n    const replace = Object.keys(CHARACTERS_TO_NORMALIZE).join(\\\"\\\");\\n    const toNormalizeWithNFKC = getNormalizeWithNFKC();\\n\\n    \u002F\u002F 3040-309F: Hiragana\\n    \u002F\u002F 30A0-30FF: Katakana\\n    const CJK = \\\"(?:\\\\\\\\p{Ideographic}|[\\\\u3040-\\\\u30FF])\\\";\\n    const HKDiacritics = \\\"(?:\\\\u3099|\\\\u309A)\\\";\\n    const BrokenWord = `\\\\\\\\p{Ll}-\\\\\\\\n(?=\\\\\\\\p{Ll})|\\\\\\\\p{Lu}-\\\\\\\\n(?=\\\\\\\\p{L})`;\\n\\n    const regexps = [\\n      \u002F* p1 *\u002F `[${replace}]`,\\n      \u002F* p2 *\u002F `[${toNormalizeWithNFKC}]`,\\n      \u002F* p3 *\u002F `${HKDiacritics}\\\\\\\\n`,\\n      \u002F* p4 *\u002F \\\"\\\\\\\\p{M}+(?:-\\\\\\\\n)?\\\",\\n      \u002F* p5 *\u002F `${BrokenWord}`,\\n      \u002F* p6 *\u002F \\\"\\\\\\\\S-\\\\\\\\n\\\",\\n      \u002F* p7 *\u002F `${CJK}\\\\\\\\n`,\\n      \u002F* p8 *\u002F \\\"\\\\\\\\n\\\",\\n      \u002F* p9 *\u002F hasSyllables\\n        ? FIRST_CHAR_SYLLABLES_REG_EXP\\n        : \u002F\u002F Most of the syllables belong to Hangul so there are no need\\n          \u002F\u002F to search for them in a non-Hangul document.\\n          \u002F\u002F We use the \\\\0 in order to have the same number of groups.\\n          \\\"\\\\\\\\u0000\\\",\\n    ];\\n    normalizationRegex = new RegExp(\\n      regexps.map(r => `(${r})`).join(\\\"|\\\"),\\n      \\\"gum\\\"\\n    );\\n\\n    if (hasSyllables) {\\n      withSyllablesRegExp = normalizationRegex;\\n    } else {\\n      noSyllablesRegExp = normalizationRegex;\\n    }\\n  }\\n\\n  \u002F\u002F The goal of this function is to normalize the string and\\n  \u002F\u002F be able to get from an index in the new string the\\n  \u002F\u002F corresponding index in the old string.\\n  \u002F\u002F For example if we have: abCd12ef456gh where C is replaced by ccc\\n  \u002F\u002F and numbers replaced by nothing (it's the case for diacritics), then\\n  \u002F\u002F we'll obtain the normalized string: abcccdefgh.\\n  \u002F\u002F So here the reverse map is: [0,1,2,2,2,3,6,7,11,12].\\n\\n  \u002F\u002F The goal is to obtain the array: [[0, 0], [3, -1], [4, -2],\\n  \u002F\u002F [6, 0], [8, 3]].\\n  \u002F\u002F which can be used like this:\\n  \u002F\u002F  - let say that i is the index in new string and j the index\\n  \u002F\u002F    the old string.\\n  \u002F\u002F  - if i is in [0; 3[ then j = i + 0\\n  \u002F\u002F  - if i is in [3; 4[ then j = i - 1\\n  \u002F\u002F  - if i is in [4; 6[ then j = i - 2\\n  \u002F\u002F  ...\\n  \u002F\u002F Thanks to a binary search it's easy to know where is i and what's the\\n  \u002F\u002F shift.\\n  \u002F\u002F Let say that the last entry in the array is [x, s] and we have a\\n  \u002F\u002F substitution at index y (old string) which will replace o chars by n chars.\\n  \u002F\u002F Firstly, if o === n, then no need to add a new entry: the shift is\\n  \u002F\u002F the same.\\n  \u002F\u002F Secondly, if o \u003C n, then we push the n - o elements:\\n  \u002F\u002F [y - (s - 1), s - 1], [y - (s - 2), s - 2], ...\\n  \u002F\u002F Thirdly, if o > n, then we push the element: [y - (s - n), o + s - n]\\n\\n  \u002F\u002F Collect diacritics length and positions.\\n  const rawDiacriticsPositions = [];\\n  while ((m = DIACRITICS_REG_EXP.exec(text)) !== null) {\\n    rawDiacriticsPositions.push([m[0].length, m.index]);\\n  }\\n\\n  let normalized = text.normalize(\\\"NFD\\\");\\n  const positions = [0, 0];\\n  let rawDiacriticsIndex = 0;\\n  let syllableIndex = 0;\\n  let shift = 0;\\n  let shiftOrigin = 0;\\n  let eol = 0;\\n  let hasDiacritics = false;\\n\\n  normalized = normalized.replace(\\n    normalizationRegex,\\n    (match, p1, p2, p3, p4, p5, p6, p7, p8, p9, i) => {\\n      i -= shiftOrigin;\\n      if (p1) {\\n        \u002F\u002F Maybe fractions or quotations mark...\\n        const replacement = CHARACTERS_TO_NORMALIZE[p1];\\n        const jj = replacement.length;\\n        for (let j = 1; j \u003C jj; j++) {\\n          positions.push(i - shift + j, shift - j);\\n        }\\n        shift -= jj - 1;\\n        return replacement;\\n      }\\n\\n      if (p2) {\\n        \u002F\u002F Use the NFKC representation to normalize the char.\\n        let replacement = NFKC_CHARS_TO_NORMALIZE.get(p2);\\n        if (!replacement) {\\n          replacement = p2.normalize(\\\"NFKC\\\");\\n          NFKC_CHARS_TO_NORMALIZE.set(p2, replacement);\\n        }\\n        const jj = replacement.length;\\n        for (let j = 1; j \u003C jj; j++) {\\n          positions.push(i - shift + j, shift - j);\\n        }\\n        shift -= jj - 1;\\n        return replacement;\\n      }\\n\\n      if (p3) {\\n        \u002F\u002F We've a Katakana-Hiragana diacritic followed by a \\\\n so don't replace\\n        \u002F\u002F the \\\\n by a whitespace.\\n        hasDiacritics = true;\\n\\n        \u002F\u002F Diacritic.\\n        if (i + eol === rawDiacriticsPositions[rawDiacriticsIndex]?.[1]) {\\n          ++rawDiacriticsIndex;\\n        } else {\\n          \u002F\u002F i is the position of the first diacritic\\n          \u002F\u002F so (i - 1) is the position for the letter before.\\n          positions.push(i - 1 - shift + 1, shift - 1);\\n          shift -= 1;\\n          shiftOrigin += 1;\\n        }\\n\\n        \u002F\u002F End-of-line.\\n        positions.push(i - shift + 1, shift);\\n        shiftOrigin += 1;\\n        eol += 1;\\n\\n        return p3.charAt(0);\\n      }\\n\\n      if (p4) {\\n        const hasTrailingDashEOL = p4.endsWith(\\\"\\\\n\\\");\\n        const len = hasTrailingDashEOL ? p4.length - 2 : p4.length;\\n\\n        \u002F\u002F Diacritics.\\n        hasDiacritics = true;\\n        let jj = len;\\n        if (i + eol === rawDiacriticsPositions[rawDiacriticsIndex]?.[1]) {\\n          jj -= rawDiacriticsPositions[rawDiacriticsIndex][0];\\n          ++rawDiacriticsIndex;\\n        }\\n\\n        for (let j = 1; j \u003C= jj; j++) {\\n          \u002F\u002F i is the position of the first diacritic\\n          \u002F\u002F so (i - 1) is the position for the letter before.\\n          positions.push(i - 1 - shift + j, shift - j);\\n        }\\n        shift -= jj;\\n        shiftOrigin += jj;\\n\\n        if (hasTrailingDashEOL) {\\n          \u002F\u002F Diacritics are followed by a -\\\\n.\\n          \u002F\u002F See comments in `if (p6)` block.\\n          i += len - 1;\\n          positions.push(i - shift + 1, 1 + shift);\\n          shift += 1;\\n          shiftOrigin += 1;\\n          eol += 1;\\n          return p4.slice(0, len);\\n        }\\n\\n        return p4;\\n      }\\n\\n      if (p5) {\\n        \u002F\u002F In \\\"X-\\\\ny\\\", \\\"-\\\\n\\\" is removed because an hyphen at the end of a line\\n        \u002F\u002F between two letters is likely here to mark a break in a word.\\n        \u002F\u002F If X is encoded with UTF-32 then it can have a length greater than 1.\\n        \u002F\u002F The \\\\n isn't in the original text so here y = i, n = X.len - 2 and\\n        \u002F\u002F o = X.len - 1.\\n        const len = p5.length - 2;\\n        positions.push(i - shift + len, 1 + shift);\\n        shift += 1;\\n        shiftOrigin += 1;\\n        eol += 1;\\n        return p5.slice(0, -2);\\n      }\\n\\n      if (p6) {\\n        \u002F\u002F A - following a non-space character that is not detected as the\\n        \u002F\u002F hyphen breaking a word in two lines needs to be preserved. It could\\n        \u002F\u002F be, for example, in a compound word or in a date.\\n        \u002F\u002F Only remove the newline.\\n        shiftOrigin += 1;\\n        eol += 1;\\n        return p6.slice(0, -1);\\n      }\\n\\n      if (p7) {\\n        \u002F\u002F An ideographic at the end of a line doesn't imply adding an extra\\n        \u002F\u002F white space.\\n        \u002F\u002F A CJK can be encoded in UTF-32, hence their length isn't always 1.\\n        const len = p7.length - 1;\\n        positions.push(i - shift + len, shift);\\n        shiftOrigin += 1;\\n        eol += 1;\\n        return p7.slice(0, -1);\\n      }\\n\\n      if (p8) {\\n        \u002F\u002F eol is replaced by space: \\\"foo\\\\nbar\\\" is likely equivalent to\\n        \u002F\u002F \\\"foo bar\\\".\\n        positions.push(i - shift + 1, shift - 1);\\n        shift -= 1;\\n        shiftOrigin += 1;\\n        eol += 1;\\n        return \\\" \\\";\\n      }\\n\\n      \u002F\u002F p9\\n      if (i + eol === syllablePositions[syllableIndex]?.[1]) {\\n        \u002F\u002F A syllable (1 char) is replaced with several chars (n) so\\n        \u002F\u002F newCharsLen = n - 1.\\n        const newCharLen = syllablePositions[syllableIndex][0] - 1;\\n        ++syllableIndex;\\n        for (let j = 1; j \u003C= newCharLen; j++) {\\n          positions.push(i - (shift - j), shift - j);\\n        }\\n        shift -= newCharLen;\\n        shiftOrigin += newCharLen;\\n      }\\n      return p9;\\n    }\\n  );\\n\\n  positions.push(normalized.length, shift);\\n  const starts = new Uint32Array(positions.length >> 1);\\n  const shifts = new Int32Array(positions.length >> 1);\\n  for (let i = 0, ii = positions.length; i \u003C ii; i += 2) {\\n    starts[i >> 1] = positions[i];\\n    shifts[i >> 1] = positions[i + 1];\\n  }\\n\\n  return [normalized, [starts, shifts], hasDiacritics];\\n}\\n\\n\u002F\u002F Determine the original, non-normalized, match index such that highlighting of\\n\u002F\u002F search results is correct in the `textLayer` for strings containing e.g. \\\"½\\\"\\n\u002F\u002F characters; essentially \\\"inverting\\\" the result of the `normalize` function.\\nfunction getOriginalIndex(diffs, pos, len) {\\n  if (!diffs) {\\n    return [pos, len];\\n  }\\n\\n  const [starts, shifts] = diffs;\\n  \u002F\u002F First char in the new string.\\n  const start = pos;\\n  \u002F\u002F Last char in the new string.\\n  const end = pos + len - 1;\\n  let i = binarySearchFirstItem(starts, x => x >= start);\\n  if (starts[i] > start) {\\n    --i;\\n  }\\n\\n  let j = binarySearchFirstItem(starts, x => x >= end, i);\\n  if (starts[j] > end) {\\n    --j;\\n  }\\n\\n  \u002F\u002F First char in the old string.\\n  const oldStart = start + shifts[i];\\n\\n  \u002F\u002F Last char in the old string.\\n  const oldEnd = end + shifts[j];\\n  const oldLen = oldEnd + 1 - oldStart;\\n\\n  return [oldStart, oldLen];\\n}\\n\\n\u002F**\\n * @typedef {Object} PDFFindControllerOptions\\n * @property {IPDFLinkService} linkService - The navigation\u002Flinking service.\\n * @property {EventBus} eventBus - The application event bus.\\n * @property {boolean} [updateMatchesCountOnProgress] - True if the matches\\n *   count must be updated on progress or only when the last page is reached.\\n *   The default value is `true`.\\n *\u002F\\n\\n\u002F**\\n * Provides search functionality to find a given string in a PDF document.\\n *\u002F\\nclass PDFFindController {\\n  #state = null;\\n\\n  #updateMatchesCountOnProgress = true;\\n\\n  #visitedPagesCount = 0;\\n\\n  \u002F**\\n   * @param {PDFFindControllerOptions} options\\n   *\u002F\\n  constructor({ linkService, eventBus, updateMatchesCountOnProgress = true }) {\\n    this._linkService = linkService;\\n    this._eventBus = eventBus;\\n    this.#updateMatchesCountOnProgress = updateMatchesCountOnProgress;\\n\\n    \u002F**\\n     * Callback used to check if a `pageNumber` is currently visible.\\n     * @type {function}\\n     *\u002F\\n    this.onIsPageVisible = null;\\n\\n    this.#reset();\\n    eventBus._on(\\\"find\\\", this.#onFind.bind(this));\\n    eventBus._on(\\\"findbarclose\\\", this.#onFindBarClose.bind(this));\\n  }\\n\\n  get highlightMatches() {\\n    return this._highlightMatches;\\n  }\\n\\n  get pageMatches() {\\n    return this._pageMatches;\\n  }\\n\\n  get pageMatchesLength() {\\n    return this._pageMatchesLength;\\n  }\\n\\n  get selected() {\\n    return this._selected;\\n  }\\n\\n  get state() {\\n    return this.#state;\\n  }\\n\\n  \u002F**\\n   * Set a reference to the PDF document in order to search it.\\n   * Note that searching is not possible if this method is not called.\\n   *\\n   * @param {PDFDocumentProxy} pdfDocument - The PDF document to search.\\n   *\u002F\\n  setDocument(pdfDocument) {\\n    if (this._pdfDocument) {\\n      this.#reset();\\n    }\\n    if (!pdfDocument) {\\n      return;\\n    }\\n    this._pdfDocument = pdfDocument;\\n    this._firstPageCapability.resolve();\\n  }\\n\\n  #onFind(state) {\\n    if (!state) {\\n      return;\\n    }\\n    const pdfDocument = this._pdfDocument;\\n    const { type } = state;\\n\\n    if (this.#state === null || this.#shouldDirtyMatch(state)) {\\n      this._dirtyMatch = true;\\n    }\\n    this.#state = state;\\n    if (type !== \\\"highlightallchange\\\") {\\n      this.#updateUIState(FindState.PENDING);\\n    }\\n\\n    this._firstPageCapability.promise.then(() => {\\n      \u002F\u002F If the document was closed before searching began, or if the search\\n      \u002F\u002F operation was relevant for a previously opened document, do nothing.\\n      if (\\n        !this._pdfDocument ||\\n        (pdfDocument && this._pdfDocument !== pdfDocument)\\n      ) {\\n        return;\\n      }\\n      this.#extractText();\\n\\n      const findbarClosed = !this._highlightMatches;\\n      const pendingTimeout = !!this._findTimeout;\\n\\n      if (this._findTimeout) {\\n        clearTimeout(this._findTimeout);\\n        this._findTimeout = null;\\n      }\\n      if (!type) {\\n        \u002F\u002F Trigger the find action with a small delay to avoid starting the\\n        \u002F\u002F search when the user is still typing (saving resources).\\n        this._findTimeout = setTimeout(() => {\\n          this.#nextMatch();\\n          this._findTimeout = null;\\n        }, FIND_TIMEOUT);\\n      } else if (this._dirtyMatch) {\\n        \u002F\u002F Immediately trigger searching for non-'find' operations, when the\\n        \u002F\u002F current state needs to be reset and matches re-calculated.\\n        this.#nextMatch();\\n      } else if (type === \\\"again\\\") {\\n        this.#nextMatch();\\n\\n        \u002F\u002F When the findbar was previously closed, and `highlightAll` is set,\\n        \u002F\u002F ensure that the matches on all active pages are highlighted again.\\n        if (findbarClosed && this.#state.highlightAll) {\\n          this.#updateAllPages();\\n        }\\n      } else if (type === \\\"highlightallchange\\\") {\\n        \u002F\u002F If there was a pending search operation, synchronously trigger a new\\n        \u002F\u002F search *first* to ensure that the correct matches are highlighted.\\n        if (pendingTimeout) {\\n          this.#nextMatch();\\n        } else {\\n          this._highlightMatches = true;\\n        }\\n        this.#updateAllPages(); \u002F\u002F Update the highlighting on all active pages.\\n      } else {\\n        this.#nextMatch();\\n      }\\n    });\\n  }\\n\\n  \u002F**\\n   * @typedef {Object} PDFFindControllerScrollMatchIntoViewParams\\n   * @property {HTMLElement} element\\n   * @property {number} selectedLeft\\n   * @property {number} pageIndex\\n   * @property {number} matchIndex\\n   *\u002F\\n\\n  \u002F**\\n   * Scroll the current match into view.\\n   * @param {PDFFindControllerScrollMatchIntoViewParams}\\n   *\u002F\\n  scrollMatchIntoView({\\n    element = null,\\n    selectedLeft = 0,\\n    pageIndex = -1,\\n    matchIndex = -1,\\n  }) {\\n    if (!this._scrollMatches || !element) {\\n      return;\\n    } else if (matchIndex === -1 || matchIndex !== this._selected.matchIdx) {\\n      return;\\n    } else if (pageIndex === -1 || pageIndex !== this._selected.pageIdx) {\\n      return;\\n    }\\n    this._scrollMatches = false; \u002F\u002F Ensure that scrolling only happens once.\\n\\n    const spot = {\\n      top: MATCH_SCROLL_OFFSET_TOP,\\n      left: selectedLeft + MATCH_SCROLL_OFFSET_LEFT,\\n    };\\n    scrollIntoView(element, spot, \u002F* scrollMatches = *\u002F true);\\n  }\\n\\n  #reset() {\\n    this._highlightMatches = false;\\n    this._scrollMatches = false;\\n    this._pdfDocument = null;\\n    this._pageMatches = [];\\n    this._pageMatchesLength = [];\\n    this.#visitedPagesCount = 0;\\n    this.#state = null;\\n    \u002F\u002F Currently selected match.\\n    this._selected = {\\n      pageIdx: -1,\\n      matchIdx: -1,\\n    };\\n    \u002F\u002F Where the find algorithm currently is in the document.\\n    this._offset = {\\n      pageIdx: null,\\n      matchIdx: null,\\n      wrapped: false,\\n    };\\n    this._extractTextPromises = [];\\n    this._pageContents = []; \u002F\u002F Stores the normalized text for each page.\\n    this._pageDiffs = [];\\n    this._hasDiacritics = [];\\n    this._matchesCountTotal = 0;\\n    this._pagesToSearch = null;\\n    this._pendingFindMatches = new Set();\\n    this._resumePageIdx = null;\\n    this._dirtyMatch = false;\\n    clearTimeout(this._findTimeout);\\n    this._findTimeout = null;\\n\\n    this._firstPageCapability = Promise.withResolvers();\\n  }\\n\\n  \u002F**\\n   * @type {string|Array} The (current) normalized search query.\\n   *\u002F\\n  get #query() {\\n    const { query } = this.#state;\\n    if (typeof query === \\\"string\\\") {\\n      if (query !== this._rawQuery) {\\n        this._rawQuery = query;\\n        [this._normalizedQuery] = normalize(query);\\n      }\\n      return this._normalizedQuery;\\n    }\\n    \u002F\u002F We don't bother caching the normalized search query in the Array-case,\\n    \u002F\u002F since this code-path is *essentially* unused in the default viewer.\\n    return (query || []).filter(q => !!q).map(q => normalize(q)[0]);\\n  }\\n\\n  #shouldDirtyMatch(state) {\\n    \u002F\u002F When the search query changes, regardless of the actual search command\\n    \u002F\u002F used, always re-calculate matches to avoid errors (fixes bug 1030622).\\n    const newQuery = state.query,\\n      prevQuery = this.#state.query;\\n    const newType = typeof newQuery,\\n      prevType = typeof prevQuery;\\n\\n    if (newType !== prevType) {\\n      return true;\\n    }\\n    if (newType === \\\"string\\\") {\\n      if (newQuery !== prevQuery) {\\n        return true;\\n      }\\n    } else if (\\n      \u002F* isArray && *\u002F JSON.stringify(newQuery) !== JSON.stringify(prevQuery)\\n    ) {\\n      return true;\\n    }\\n\\n    switch (state.type) {\\n      case \\\"again\\\":\\n        const pageNumber = this._selected.pageIdx + 1;\\n        const linkService = this._linkService;\\n        \u002F\u002F Only treat a 'findagain' event as a new search operation when it's\\n        \u002F\u002F *absolutely* certain that the currently selected match is no longer\\n        \u002F\u002F visible, e.g. as a result of the user scrolling in the document.\\n        \u002F\u002F\\n        \u002F\u002F NOTE: If only a simple `this._linkService.page` check was used here,\\n        \u002F\u002F there's a risk that consecutive 'findagain' operations could \\\"skip\\\"\\n        \u002F\u002F over matches at the top\u002Fbottom of pages thus making them completely\\n        \u002F\u002F inaccessible when there's multiple pages visible in the viewer.\\n        return (\\n          pageNumber >= 1 &&\\n          pageNumber \u003C= linkService.pagesCount &&\\n          pageNumber !== linkService.page &&\\n          !(this.onIsPageVisible?.(pageNumber) ?? true)\\n        );\\n      case \\\"highlightallchange\\\":\\n        return false;\\n    }\\n    return true;\\n  }\\n\\n  \u002F**\\n   * Determine if the search query constitutes a \\\"whole word\\\", by comparing the\\n   * first\u002Flast character type with the preceding\u002Ffollowing character type.\\n   *\u002F\\n  #isEntireWord(content, startIdx, length) {\\n    let match = content\\n      .slice(0, startIdx)\\n      .match(NOT_DIACRITIC_FROM_END_REG_EXP);\\n    if (match) {\\n      const first = content.charCodeAt(startIdx);\\n      const limit = match[1].charCodeAt(0);\\n      if (getCharacterType(first) === getCharacterType(limit)) {\\n        return false;\\n      }\\n    }\\n\\n    match = content\\n      .slice(startIdx + length)\\n      .match(NOT_DIACRITIC_FROM_START_REG_EXP);\\n    if (match) {\\n      const last = content.charCodeAt(startIdx + length - 1);\\n      const limit = match[1].charCodeAt(0);\\n      if (getCharacterType(last) === getCharacterType(limit)) {\\n        return false;\\n      }\\n    }\\n\\n    return true;\\n  }\\n\\n  #convertToRegExpString(query, hasDiacritics) {\\n    const { matchDiacritics } = this.#state;\\n    let isUnicode = false;\\n    query = query.replaceAll(\\n      SPECIAL_CHARS_REG_EXP,\\n      (\\n        match,\\n        p1 \u002F* to escape *\u002F,\\n        p2 \u002F* punctuation *\u002F,\\n        p3 \u002F* whitespaces *\u002F,\\n        p4 \u002F* diacritics *\u002F,\\n        p5 \u002F* letters *\u002F\\n      ) => {\\n        \u002F\u002F We don't need to use a \\\\s for whitespaces since all the different\\n        \u002F\u002F kind of whitespaces are replaced by a single \\\" \\\".\\n\\n        if (p1) {\\n          \u002F\u002F Escape characters like *+?... to not interfer with regexp syntax.\\n          return `[ ]*\\\\\\\\${p1}[ ]*`;\\n        }\\n        if (p2) {\\n          \u002F\u002F Allow whitespaces around punctuation signs.\\n          return `[ ]*${p2}[ ]*`;\\n        }\\n        if (p3) {\\n          \u002F\u002F Replace spaces by \\\\s+ to be sure to match any spaces.\\n          return \\\"[ ]+\\\";\\n        }\\n        if (matchDiacritics) {\\n          return p4 || p5;\\n        }\\n\\n        if (p4) {\\n          \u002F\u002F Diacritics are removed with few exceptions.\\n          return DIACRITICS_EXCEPTION.has(p4.charCodeAt(0)) ? p4 : \\\"\\\";\\n        }\\n\\n        \u002F\u002F A letter has been matched and it can be followed by any diacritics\\n        \u002F\u002F in normalized text.\\n        if (hasDiacritics) {\\n          isUnicode = true;\\n          return `${p5}\\\\\\\\p{M}*`;\\n        }\\n        return p5;\\n      }\\n    );\\n\\n    const trailingSpaces = \\\"[ ]*\\\";\\n    if (query.endsWith(trailingSpaces)) {\\n      \u002F\u002F The [ ]* has been added in order to help to match \\\"foo . bar\\\" but\\n      \u002F\u002F it doesn't make sense to match some whitespaces after the dot\\n      \u002F\u002F when it's the last character.\\n      query = query.slice(0, query.length - trailingSpaces.length);\\n    }\\n\\n    if (matchDiacritics) {\\n      \u002F\u002F aX must not match aXY.\\n      if (hasDiacritics) {\\n        DIACRITICS_EXCEPTION_STR ||= String.fromCharCode(\\n          ...DIACRITICS_EXCEPTION\\n        );\\n\\n        isUnicode = true;\\n        query = `${query}(?=[${DIACRITICS_EXCEPTION_STR}]|[^\\\\\\\\p{M}]|$)`;\\n      }\\n    }\\n\\n    return [isUnicode, query];\\n  }\\n\\n  #calculateMatch(pageIndex) {\\n    if (!this.#state) {\\n      return;\\n    }\\n    const query = this.#query;\\n    if (query.length === 0) {\\n      return; \u002F\u002F Do nothing: the matches should be wiped out already.\\n    }\\n    const pageContent = this._pageContents[pageIndex];\\n    const matcherResult = this.match(query, pageContent, pageIndex);\\n\\n    const matches = (this._pageMatches[pageIndex] = []);\\n    const matchesLength = (this._pageMatchesLength[pageIndex] = []);\\n    const diffs = this._pageDiffs[pageIndex];\\n\\n    matcherResult?.forEach(({ index, length }) => {\\n      const [matchPos, matchLen] = getOriginalIndex(diffs, index, length);\\n      if (matchLen) {\\n        matches.push(matchPos);\\n        matchesLength.push(matchLen);\\n      }\\n    });\\n\\n    \u002F\u002F When `highlightAll` is set, ensure that the matches on previously\\n    \u002F\u002F rendered (and still active) pages are correctly highlighted.\\n    if (this.#state.highlightAll) {\\n      this.#updatePage(pageIndex);\\n    }\\n    if (this._resumePageIdx === pageIndex) {\\n      this._resumePageIdx = null;\\n      this.#nextPageMatch();\\n    }\\n\\n    \u002F\u002F Update the match count.\\n    const pageMatchesCount = matches.length;\\n    this._matchesCountTotal += pageMatchesCount;\\n    if (this.#updateMatchesCountOnProgress) {\\n      if (pageMatchesCount > 0) {\\n        this.#updateUIResultsCount();\\n      }\\n    } else if (++this.#visitedPagesCount === this._linkService.pagesCount) {\\n      \u002F\u002F For example, in GeckoView we want to have only the final update because\\n      \u002F\u002F the Java side provides only one object to update the counts.\\n      this.#updateUIResultsCount();\\n    }\\n  }\\n\\n  \u002F**\\n   * @typedef {Object} FindMatch\\n   * @property {number} index - The start of the matched text in the page's\\n   *   string contents.\\n   * @property {number} length - The length of the matched text.\\n   *\u002F\\n\\n  \u002F**\\n   * @param {string | string[]} query - The search query.\\n   * @param {string} pageContent - The text content of the page to search in.\\n   * @param {number} pageIndex - The index of the page that is being processed.\\n   * @returns {FindMatch[] | undefined} An array of matches in the provided\\n   *   page.\\n   *\u002F\\n  match(query, pageContent, pageIndex) {\\n    const hasDiacritics = this._hasDiacritics[pageIndex];\\n\\n    let isUnicode = false;\\n    if (typeof query === \\\"string\\\") {\\n      [isUnicode, query] = this.#convertToRegExpString(query, hasDiacritics);\\n    } else {\\n      \u002F\u002F Words are sorted in reverse order to be sure that \\\"foobar\\\" is matched\\n      \u002F\u002F before \\\"foo\\\" in case the query is \\\"foobar foo\\\".\\n      query = query\\n        .sort()\\n        .reverse()\\n        .map(q => {\\n          const [isUnicodePart, queryPart] = this.#convertToRegExpString(\\n            q,\\n            hasDiacritics\\n          );\\n          isUnicode ||= isUnicodePart;\\n          return `(${queryPart})`;\\n        })\\n        .join(\\\"|\\\");\\n    }\\n    if (!query) {\\n      \u002F\u002F The query can be empty because some chars like diacritics could have\\n      \u002F\u002F been stripped out.\\n      return undefined;\\n    }\\n\\n    const { caseSensitive, entireWord } = this.#state;\\n    const flags = `g${isUnicode ? \\\"u\\\" : \\\"\\\"}${caseSensitive ? \\\"\\\" : \\\"i\\\"}`;\\n    query = new RegExp(query, flags);\\n\\n    const matches = [];\\n    let match;\\n    while ((match = query.exec(pageContent)) !== null) {\\n      if (\\n        entireWord &&\\n        !this.#isEntireWord(pageContent, match.index, match[0].length)\\n      ) {\\n        continue;\\n      }\\n      matches.push({ index: match.index, length: match[0].length });\\n    }\\n    return matches;\\n  }\\n\\n  #extractText() {\\n    \u002F\u002F Perform text extraction once if this method is called multiple times.\\n    if (this._extractTextPromises.length > 0) {\\n      return;\\n    }\\n\\n    let deferred = Promise.resolve();\\n    const textOptions = { disableNormalization: true };\\n    const pdfDoc = this._pdfDocument;\\n    for (let i = 0, ii = this._linkService.pagesCount; i \u003C ii; i++) {\\n      const { promise, resolve } = Promise.withResolvers();\\n      this._extractTextPromises[i] = promise;\\n\\n      deferred = deferred.then(async () => {\\n        if (pdfDoc !== this._pdfDocument) {\\n          resolve();\\n          return;\\n        }\\n        await pdfDoc\\n          .getPage(i + 1)\\n          .then(pdfPage => pdfPage.getTextContent(textOptions))\\n          .then(\\n            textContent => {\\n              const strBuf = [];\\n\\n              for (const textItem of textContent.items) {\\n                strBuf.push(textItem.str);\\n                if (textItem.hasEOL) {\\n                  strBuf.push(\\\"\\\\n\\\");\\n                }\\n              }\\n\\n              \u002F\u002F Store the normalized page content (text items) as one string.\\n              [\\n                this._pageContents[i],\\n                this._pageDiffs[i],\\n                this._hasDiacritics[i],\\n              ] = normalize(strBuf.join(\\\"\\\"));\\n              resolve();\\n            },\\n            reason => {\\n              console.error(\\n                `Unable to get text content for page ${i + 1}`,\\n                reason\\n              );\\n              \u002F\u002F Page error -- assuming no text content.\\n              this._pageContents[i] = \\\"\\\";\\n              this._pageDiffs[i] = null;\\n              this._hasDiacritics[i] = false;\\n              resolve();\\n            }\\n          );\\n      });\\n    }\\n  }\\n\\n  #updatePage(index) {\\n    if (this._scrollMatches && this._selected.pageIdx === index) {\\n      \u002F\u002F If the page is selected, scroll the page into view, which triggers\\n      \u002F\u002F rendering the page, which adds the text layer. Once the text layer\\n      \u002F\u002F is built, it will attempt to scroll the selected match into view.\\n      this._linkService.page = index + 1;\\n    }\\n\\n    this._eventBus.dispatch(\\\"updatetextlayermatches\\\", {\\n      source: this,\\n      pageIndex: index,\\n    });\\n  }\\n\\n  #updateAllPages() {\\n    this._eventBus.dispatch(\\\"updatetextlayermatches\\\", {\\n      source: this,\\n      pageIndex: -1,\\n    });\\n  }\\n\\n  #nextMatch() {\\n    const previous = this.#state.findPrevious;\\n    const currentPageIndex = this._linkService.page - 1;\\n    const numPages = this._linkService.pagesCount;\\n\\n    this._highlightMatches = true;\\n\\n    if (this._dirtyMatch) {\\n      \u002F\u002F Need to recalculate the matches, reset everything.\\n      this._dirtyMatch = false;\\n      this._selected.pageIdx = this._selected.matchIdx = -1;\\n      this._offset.pageIdx = currentPageIndex;\\n      this._offset.matchIdx = null;\\n      this._offset.wrapped = false;\\n      this._resumePageIdx = null;\\n      this._pageMatches.length = 0;\\n      this._pageMatchesLength.length = 0;\\n      this.#visitedPagesCount = 0;\\n      this._matchesCountTotal = 0;\\n\\n      this.#updateAllPages(); \u002F\u002F Wipe out any previously highlighted matches.\\n\\n      for (let i = 0; i \u003C numPages; i++) {\\n        \u002F\u002F Start finding the matches as soon as the text is extracted.\\n        if (this._pendingFindMatches.has(i)) {\\n          continue;\\n        }\\n        this._pendingFindMatches.add(i);\\n        this._extractTextPromises[i].then(() => {\\n          this._pendingFindMatches.delete(i);\\n          this.#calculateMatch(i);\\n        });\\n      }\\n    }\\n\\n    \u002F\u002F If there's no query there's no point in searching.\\n    const query = this.#query;\\n    if (query.length === 0) {\\n      this.#updateUIState(FindState.FOUND);\\n      return;\\n    }\\n    \u002F\u002F If we're waiting on a page, we return since we can't do anything else.\\n    if (this._resumePageIdx) {\\n      return;\\n    }\\n\\n    const offset = this._offset;\\n    \u002F\u002F Keep track of how many pages we should maximally iterate through.\\n    this._pagesToSearch = numPages;\\n    \u002F\u002F If there's already a `matchIdx` that means we are iterating through a\\n    \u002F\u002F page's matches.\\n    if (offset.matchIdx !== null) {\\n      const numPageMatches = this._pageMatches[offset.pageIdx].length;\\n      if (\\n        (!previous && offset.matchIdx + 1 \u003C numPageMatches) ||\\n        (previous && offset.matchIdx > 0)\\n      ) {\\n        \u002F\u002F The simple case; we just have advance the matchIdx to select\\n        \u002F\u002F the next match on the page.\\n        offset.matchIdx = previous ? offset.matchIdx - 1 : offset.matchIdx + 1;\\n        this.#updateMatch(\u002F* found = *\u002F true);\\n        return;\\n      }\\n      \u002F\u002F We went beyond the current page's matches, so we advance to\\n      \u002F\u002F the next page.\\n      this.#advanceOffsetPage(previous);\\n    }\\n    \u002F\u002F Start searching through the page.\\n    this.#nextPageMatch();\\n  }\\n\\n  #matchesReady(matches) {\\n    const offset = this._offset;\\n    const numMatches = matches.length;\\n    const previous = this.#state.findPrevious;\\n\\n    if (numMatches) {\\n      \u002F\u002F There were matches for the page, so initialize `matchIdx`.\\n      offset.matchIdx = previous ? numMatches - 1 : 0;\\n      this.#updateMatch(\u002F* found = *\u002F true);\\n      return true;\\n    }\\n    \u002F\u002F No matches, so attempt to search the next page.\\n    this.#advanceOffsetPage(previous);\\n    if (offset.wrapped) {\\n      offset.matchIdx = null;\\n      if (this._pagesToSearch \u003C 0) {\\n        \u002F\u002F No point in wrapping again, there were no matches.\\n        this.#updateMatch(\u002F* found = *\u002F false);\\n        \u002F\u002F While matches were not found, searching for a page\\n        \u002F\u002F with matches should nevertheless halt.\\n        return true;\\n      }\\n    }\\n    \u002F\u002F Matches were not found (and searching is not done).\\n    return false;\\n  }\\n\\n  #nextPageMatch() {\\n    if (this._resumePageIdx !== null) {\\n      console.error(\\\"There can only be one pending page.\\\");\\n    }\\n\\n    let matches = null;\\n    do {\\n      const pageIdx = this._offset.pageIdx;\\n      matches = this._pageMatches[pageIdx];\\n      if (!matches) {\\n        \u002F\u002F The matches don't exist yet for processing by `_matchesReady`,\\n        \u002F\u002F so set a resume point for when they do exist.\\n        this._resumePageIdx = pageIdx;\\n        break;\\n      }\\n    } while (!this.#matchesReady(matches));\\n  }\\n\\n  #advanceOffsetPage(previous) {\\n    const offset = this._offset;\\n    const numPages = this._linkService.pagesCount;\\n    offset.pageIdx = previous ? offset.pageIdx - 1 : offset.pageIdx + 1;\\n    offset.matchIdx = null;\\n\\n    this._pagesToSearch--;\\n\\n    if (offset.pageIdx >= numPages || offset.pageIdx \u003C 0) {\\n      offset.pageIdx = previous ? numPages - 1 : 0;\\n      offset.wrapped = true;\\n    }\\n  }\\n\\n  #updateMatch(found = false) {\\n    let state = FindState.NOT_FOUND;\\n    const wrapped = this._offset.wrapped;\\n    this._offset.wrapped = false;\\n\\n    if (found) {\\n      const previousPage = this._selected.pageIdx;\\n      this._selected.pageIdx = this._offset.pageIdx;\\n      this._selected.matchIdx = this._offset.matchIdx;\\n      state = wrapped ? FindState.WRAPPED : FindState.FOUND;\\n\\n      \u002F\u002F Update the currently selected page to wipe out any selected matches.\\n      if (previousPage !== -1 && previousPage !== this._selected.pageIdx) {\\n        this.#updatePage(previousPage);\\n      }\\n    }\\n\\n    this.#updateUIState(state, this.#state.findPrevious);\\n    if (this._selected.pageIdx !== -1) {\\n      \u002F\u002F Ensure that the match will be scrolled into view.\\n      this._scrollMatches = true;\\n\\n      this.#updatePage(this._selected.pageIdx);\\n    }\\n  }\\n\\n  #onFindBarClose(evt) {\\n    const pdfDocument = this._pdfDocument;\\n    \u002F\u002F Since searching is asynchronous, ensure that the removal of highlighted\\n    \u002F\u002F matches (from the UI) is async too such that the 'updatetextlayermatches'\\n    \u002F\u002F events will always be dispatched in the expected order.\\n    this._firstPageCapability.promise.then(() => {\\n      \u002F\u002F Only update the UI if the document is open, and is the current one.\\n      if (\\n        !this._pdfDocument ||\\n        (pdfDocument && this._pdfDocument !== pdfDocument)\\n      ) {\\n        return;\\n      }\\n      \u002F\u002F Ensure that a pending, not yet started, search operation is aborted.\\n      if (this._findTimeout) {\\n        clearTimeout(this._findTimeout);\\n        this._findTimeout = null;\\n      }\\n      \u002F\u002F Abort any long running searches, to avoid a match being scrolled into\\n      \u002F\u002F view *after* the findbar has been closed. In this case `this._offset`\\n      \u002F\u002F will most likely differ from `this._selected`, hence we also ensure\\n      \u002F\u002F that any new search operation will always start with a clean slate.\\n      if (this._resumePageIdx) {\\n        this._resumePageIdx = null;\\n        this._dirtyMatch = true;\\n      }\\n      \u002F\u002F Avoid the UI being in a pending state when the findbar is re-opened.\\n      this.#updateUIState(FindState.FOUND);\\n\\n      this._highlightMatches = false;\\n      this.#updateAllPages(); \u002F\u002F Wipe out any previously highlighted matches.\\n    });\\n  }\\n\\n  #requestMatchesCount() {\\n    const { pageIdx, matchIdx } = this._selected;\\n    let current = 0,\\n      total = this._matchesCountTotal;\\n    if (matchIdx !== -1) {\\n      for (let i = 0; i \u003C pageIdx; i++) {\\n        current += this._pageMatches[i]?.length || 0;\\n      }\\n      current += matchIdx + 1;\\n    }\\n    \u002F\u002F When searching starts, this method may be called before the `pageMatches`\\n    \u002F\u002F have been counted (in `#calculateMatch`). Ensure that the UI won't show\\n    \u002F\u002F temporarily broken state when the active find result doesn't make sense.\\n    if (current \u003C 1 || current > total) {\\n      current = total = 0;\\n    }\\n    return { current, total };\\n  }\\n\\n  #updateUIResultsCount() {\\n    this._eventBus.dispatch(\\\"updatefindmatchescount\\\", {\\n      source: this,\\n      matchesCount: this.#requestMatchesCount(),\\n    });\\n  }\\n\\n  #updateUIState(state, previous = false) {\\n    if (\\n      !this.#updateMatchesCountOnProgress &&\\n      (this.#visitedPagesCount !== this._linkService.pagesCount ||\\n        state === FindState.PENDING)\\n    ) {\\n      \u002F\u002F When this.#updateMatchesCountOnProgress is false we only send an update\\n      \u002F\u002F when everything is ready.\\n      return;\\n    }\\n\\n    this._eventBus.dispatch(\\\"updatefindcontrolstate\\\", {\\n      source: this,\\n      state,\\n      previous,\\n      entireWord: this.#state?.entireWord ?? null,\\n      matchesCount: this.#requestMatchesCount(),\\n      rawQuery: this.#state?.query ?? null,\\n    });\\n  }\\n}\\n\\nexport { FindState, getOriginalIndex, normalize, PDFFindController };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { FindState } from \\\".\u002Fpdf_find_controller.js\\\";\\nimport { toggleExpandedBtn } from \\\".\u002Fui_utils.js\\\";\\n\\nconst MATCHES_COUNT_LIMIT = 1000;\\n\\n\u002F**\\n * Creates a \\\"search bar\\\" given a set of DOM elements that act as controls\\n * for searching or for setting search preferences in the UI. This object\\n * also sets up the appropriate events for the controls. Actual searching\\n * is done by PDFFindController.\\n *\u002F\\nclass PDFFindBar {\\n  #mainContainer;\\n\\n  #resizeObserver = new ResizeObserver(this.#resizeObserverCallback.bind(this));\\n\\n  constructor(options, mainContainer, eventBus) {\\n    this.opened = false;\\n\\n    this.bar = options.bar;\\n    this.toggleButton = options.toggleButton;\\n    this.findField = options.findField;\\n    this.highlightAll = options.highlightAllCheckbox;\\n    this.caseSensitive = options.caseSensitiveCheckbox;\\n    this.matchDiacritics = options.matchDiacriticsCheckbox;\\n    this.entireWord = options.entireWordCheckbox;\\n    this.findMsg = options.findMsg;\\n    this.findResultsCount = options.findResultsCount;\\n    this.findPreviousButton = options.findPreviousButton;\\n    this.findNextButton = options.findNextButton;\\n    this.eventBus = eventBus;\\n    this.#mainContainer = mainContainer;\\n\\n    const checkedInputs = new Map([\\n      [this.highlightAll, \\\"highlightallchange\\\"],\\n      [this.caseSensitive, \\\"casesensitivitychange\\\"],\\n      [this.entireWord, \\\"entirewordchange\\\"],\\n      [this.matchDiacritics, \\\"diacriticmatchingchange\\\"],\\n    ]);\\n\\n    \u002F\u002F Add event listeners to the DOM elements.\\n    this.toggleButton.addEventListener(\\\"click\\\", () => {\\n      this.toggle();\\n    });\\n\\n    this.findField.addEventListener(\\\"input\\\", () => {\\n      this.dispatchEvent(\\\"\\\");\\n    });\\n\\n    this.bar.addEventListener(\\\"keydown\\\", ({ keyCode, shiftKey, target }) => {\\n      switch (keyCode) {\\n        case 13: \u002F\u002F Enter\\n          if (target === this.findField) {\\n            this.dispatchEvent(\\\"again\\\", shiftKey);\\n          } else if (checkedInputs.has(target)) {\\n            target.checked = !target.checked;\\n            this.dispatchEvent(\u002F* evtName = *\u002F checkedInputs.get(target));\\n          }\\n          break;\\n        case 27: \u002F\u002F Escape\\n          this.close();\\n          break;\\n      }\\n    });\\n\\n    this.findPreviousButton.addEventListener(\\\"click\\\", () => {\\n      this.dispatchEvent(\\\"again\\\", true);\\n    });\\n    this.findNextButton.addEventListener(\\\"click\\\", () => {\\n      this.dispatchEvent(\\\"again\\\", false);\\n    });\\n\\n    for (const [elem, evtName] of checkedInputs) {\\n      elem.addEventListener(\\\"click\\\", () => {\\n        this.dispatchEvent(evtName);\\n      });\\n    }\\n  }\\n\\n  reset() {\\n    this.updateUIState();\\n  }\\n\\n  dispatchEvent(type, findPrev = false) {\\n    this.eventBus.dispatch(\\\"find\\\", {\\n      source: this,\\n      type,\\n      query: this.findField.value,\\n      caseSensitive: this.caseSensitive.checked,\\n      entireWord: this.entireWord.checked,\\n      highlightAll: this.highlightAll.checked,\\n      findPrevious: findPrev,\\n      matchDiacritics: this.matchDiacritics.checked,\\n    });\\n  }\\n\\n  updateUIState(state, previous, matchesCount) {\\n    const { findField, findMsg } = this;\\n    let findMsgId = \\\"\\\",\\n      status = \\\"\\\";\\n\\n    switch (state) {\\n      case FindState.FOUND:\\n        break;\\n      case FindState.PENDING:\\n        status = \\\"pending\\\";\\n        break;\\n      case FindState.NOT_FOUND:\\n        findMsgId = \\\"pdfjs-find-not-found\\\";\\n        status = \\\"notFound\\\";\\n        break;\\n      case FindState.WRAPPED:\\n        findMsgId = previous\\n          ? \\\"pdfjs-find-reached-top\\\"\\n          : \\\"pdfjs-find-reached-bottom\\\";\\n        break;\\n    }\\n    findField.setAttribute(\\\"data-status\\\", status);\\n    findField.setAttribute(\\\"aria-invalid\\\", state === FindState.NOT_FOUND);\\n\\n    findMsg.setAttribute(\\\"data-status\\\", status);\\n    if (findMsgId) {\\n      findMsg.setAttribute(\\\"data-l10n-id\\\", findMsgId);\\n    } else {\\n      findMsg.removeAttribute(\\\"data-l10n-id\\\");\\n      findMsg.textContent = \\\"\\\";\\n    }\\n\\n    this.updateResultsCount(matchesCount);\\n  }\\n\\n  updateResultsCount({ current = 0, total = 0 } = {}) {\\n    const { findResultsCount } = this;\\n\\n    if (total > 0) {\\n      const limit = MATCHES_COUNT_LIMIT;\\n\\n      findResultsCount.setAttribute(\\n        \\\"data-l10n-id\\\",\\n        total > limit\\n          ? \\\"pdfjs-find-match-count-limit\\\"\\n          : \\\"pdfjs-find-match-count\\\"\\n      );\\n      findResultsCount.setAttribute(\\n        \\\"data-l10n-args\\\",\\n        JSON.stringify({ limit, current, total })\\n      );\\n    } else {\\n      findResultsCount.removeAttribute(\\\"data-l10n-id\\\");\\n      findResultsCount.textContent = \\\"\\\";\\n    }\\n  }\\n\\n  open() {\\n    if (!this.opened) {\\n      \u002F\u002F Potentially update the findbar layout, row vs column, when:\\n      \u002F\u002F  - The width of the viewer itself changes.\\n      \u002F\u002F  - The width of the findbar changes, by toggling the visibility\\n      \u002F\u002F    (or localization) of find count\u002Fstatus messages.\\n      this.#resizeObserver.observe(this.#mainContainer);\\n      this.#resizeObserver.observe(this.bar);\\n\\n      this.opened = true;\\n      toggleExpandedBtn(this.toggleButton, true, this.bar);\\n    }\\n    this.findField.select();\\n    this.findField.focus();\\n  }\\n\\n  close() {\\n    if (!this.opened) {\\n      return;\\n    }\\n    this.#resizeObserver.disconnect();\\n\\n    this.opened = false;\\n    toggleExpandedBtn(this.toggleButton, false, this.bar);\\n\\n    this.eventBus.dispatch(\\\"findbarclose\\\", { source: this });\\n  }\\n\\n  toggle() {\\n    if (this.opened) {\\n      this.close();\\n    } else {\\n      this.open();\\n    }\\n  }\\n\\n  #resizeObserverCallback() {\\n    const { bar } = this;\\n    \u002F\u002F The find bar has an absolute position and thus the browser extends\\n    \u002F\u002F its width to the maximum possible width once the find bar does not fit\\n    \u002F\u002F entirely within the window anymore (and its elements are automatically\\n    \u002F\u002F wrapped). Here we detect and fix that.\\n    bar.classList.remove(\\\"wrapContainers\\\");\\n\\n    const findbarHeight = bar.clientHeight;\\n    const inputContainerHeight = bar.firstElementChild.clientHeight;\\n\\n    if (findbarHeight > inputContainerHeight) {\\n      \u002F\u002F The findbar is taller than the input container, which means that\\n      \u002F\u002F the browser wrapped some of the elements. For a consistent look,\\n      \u002F\u002F wrap all of them to adjust the width of the find bar.\\n      bar.classList.add(\\\"wrapContainers\\\");\\n    }\\n  }\\n}\\n\\nexport { PDFFindBar };\\n\",\"\u002F* Copyright 2017 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fevent_utils\\\").EventBus} EventBus *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IPDFLinkService} IPDFLinkService *\u002F\\n\\nimport { isValidRotation, parseQueryString } from \\\".\u002Fui_utils.js\\\";\\nimport { updateUrlHash } from \\\"pdfjs-lib\\\";\\nimport { waitOnEventOrTimeout } from \\\".\u002Fevent_utils.js\\\";\\n\\n\u002F\u002F Heuristic value used when force-resetting `this._blockHashChange`.\\nconst HASH_CHANGE_TIMEOUT = 1000; \u002F\u002F milliseconds\\n\u002F\u002F Heuristic value used when adding the current position to the browser history.\\nconst POSITION_UPDATED_THRESHOLD = 50;\\n\u002F\u002F Heuristic value used when adding a temporary position to the browser history.\\nconst UPDATE_VIEWAREA_TIMEOUT = 1000; \u002F\u002F milliseconds\\n\\n\u002F**\\n * @typedef {Object} PDFHistoryOptions\\n * @property {IPDFLinkService} linkService - The navigation\u002Flinking service.\\n * @property {EventBus} eventBus - The application event bus.\\n *\u002F\\n\\n\u002F**\\n * @typedef {Object} InitializeParameters\\n * @property {string} fingerprint - The PDF document's unique fingerprint.\\n * @property {boolean} [resetHistory] - Reset the browsing history.\\n * @property {boolean} [updateUrl] - Attempt to update the document URL, with\\n *   the current hash, when pushing\u002Freplacing browser history entries.\\n *\u002F\\n\\n\u002F**\\n * @typedef {Object} PushParameters\\n * @property {string} [namedDest] - The named destination. If absent, a\\n *   stringified version of `explicitDest` is used.\\n * @property {Array} explicitDest - The explicit destination array.\\n * @property {number} pageNumber - The page to which the destination points.\\n *\u002F\\n\\nfunction getCurrentHash() {\\n  return document.location.hash;\\n}\\n\\nclass PDFHistory {\\n  #eventAbortController = null;\\n\\n  \u002F**\\n   * @param {PDFHistoryOptions} options\\n   *\u002F\\n  constructor({ linkService, eventBus }) {\\n    this.linkService = linkService;\\n    this.eventBus = eventBus;\\n\\n    this._initialized = false;\\n    this._fingerprint = \\\"\\\";\\n    this.reset();\\n\\n    \u002F\u002F Ensure that we don't miss a \\\"pagesinit\\\" event,\\n    \u002F\u002F by registering the listener immediately.\\n    this.eventBus._on(\\\"pagesinit\\\", () => {\\n      this._isPagesLoaded = false;\\n\\n      this.eventBus._on(\\n        \\\"pagesloaded\\\",\\n        evt => {\\n          this._isPagesLoaded = !!evt.pagesCount;\\n        },\\n        { once: true }\\n      );\\n    });\\n  }\\n\\n  \u002F**\\n   * Initialize the history for the PDF document, using either the current\\n   * browser history entry or the document hash, whichever is present.\\n   * @param {InitializeParameters} params\\n   *\u002F\\n  initialize({ fingerprint, resetHistory = false, updateUrl = false }) {\\n    if (!fingerprint || typeof fingerprint !== \\\"string\\\") {\\n      console.error(\\n        'PDFHistory.initialize: The \\\"fingerprint\\\" must be a non-empty string.'\\n      );\\n      return;\\n    }\\n    \u002F\u002F Ensure that any old state is always reset upon initialization.\\n    if (this._initialized) {\\n      this.reset();\\n    }\\n    const reInitialized =\\n      this._fingerprint !== \\\"\\\" && this._fingerprint !== fingerprint;\\n    this._fingerprint = fingerprint;\\n    this._updateUrl = updateUrl === true;\\n\\n    this._initialized = true;\\n    this.#bindEvents();\\n    const state = window.history.state;\\n\\n    this._popStateInProgress = false;\\n    this._blockHashChange = 0;\\n    this._currentHash = getCurrentHash();\\n    this._numPositionUpdates = 0;\\n\\n    this._uid = this._maxUid = 0;\\n    this._destination = null;\\n    this._position = null;\\n\\n    if (!this.#isValidState(state, \u002F* checkReload = *\u002F true) || resetHistory) {\\n      const { hash, page, rotation } = this.#parseCurrentHash(\\n        \u002F* checkNameddest = *\u002F true\\n      );\\n\\n      if (!hash || reInitialized || resetHistory) {\\n        \u002F\u002F Ensure that the browser history is reset on PDF document load.\\n        this.#pushOrReplaceState(null, \u002F* forceReplace = *\u002F true);\\n        return;\\n      }\\n      \u002F\u002F Ensure that the browser history is initialized correctly when\\n      \u002F\u002F the document hash is present on PDF document load.\\n      this.#pushOrReplaceState(\\n        { hash, page, rotation },\\n        \u002F* forceReplace = *\u002F true\\n      );\\n      return;\\n    }\\n\\n    \u002F\u002F The browser history contains a valid entry, ensure that the history is\\n    \u002F\u002F initialized correctly on PDF document load.\\n    const destination = state.destination;\\n    this.#updateInternalState(\\n      destination,\\n      state.uid,\\n      \u002F* removeTemporary = *\u002F true\\n    );\\n\\n    if (destination.rotation !== undefined) {\\n      this._initialRotation = destination.rotation;\\n    }\\n    if (destination.dest) {\\n      this._initialBookmark = JSON.stringify(destination.dest);\\n\\n      \u002F\u002F If the history is updated, e.g. through the user changing the hash,\\n      \u002F\u002F before the initial destination has become visible, then we do *not*\\n      \u002F\u002F want to potentially add `this._position` to the browser history.\\n      this._destination.page = null;\\n    } else if (destination.hash) {\\n      this._initialBookmark = destination.hash;\\n    } else if (destination.page) {\\n      \u002F\u002F Fallback case; shouldn't be necessary, but better safe than sorry.\\n      this._initialBookmark = `page=${destination.page}`;\\n    }\\n  }\\n\\n  \u002F**\\n   * Reset the current `PDFHistory` instance, and consequently prevent any\\n   * further updates and\u002For navigation of the browser history.\\n   *\u002F\\n  reset() {\\n    if (this._initialized) {\\n      this.#pageHide(); \u002F\u002F Simulate a 'pagehide' event when resetting.\\n\\n      this._initialized = false;\\n      this.#unbindEvents();\\n    }\\n    if (this._updateViewareaTimeout) {\\n      clearTimeout(this._updateViewareaTimeout);\\n      this._updateViewareaTimeout = null;\\n    }\\n    this._initialBookmark = null;\\n    this._initialRotation = null;\\n  }\\n\\n  \u002F**\\n   * Push an internal destination to the browser history.\\n   * @param {PushParameters}\\n   *\u002F\\n  push({ namedDest = null, explicitDest, pageNumber }) {\\n    if (!this._initialized) {\\n      return;\\n    }\\n    if (namedDest && typeof namedDest !== \\\"string\\\") {\\n      console.error(\\n        \\\"PDFHistory.push: \\\" +\\n          `\\\"${namedDest}\\\" is not a valid namedDest parameter.`\\n      );\\n      return;\\n    } else if (!Array.isArray(explicitDest)) {\\n      console.error(\\n        \\\"PDFHistory.push: \\\" +\\n          `\\\"${explicitDest}\\\" is not a valid explicitDest parameter.`\\n      );\\n      return;\\n    } else if (!this.#isValidPage(pageNumber)) {\\n      \u002F\u002F Allow an unset `pageNumber` if and only if the history is still empty;\\n      \u002F\u002F please refer to the `this._destination.page = null;` comment above.\\n      if (pageNumber !== null || this._destination) {\\n        console.error(\\n          \\\"PDFHistory.push: \\\" +\\n            `\\\"${pageNumber}\\\" is not a valid pageNumber parameter.`\\n        );\\n        return;\\n      }\\n    }\\n\\n    const hash = namedDest || JSON.stringify(explicitDest);\\n    if (!hash) {\\n      \u002F\u002F The hash *should* never be undefined, but if that were to occur,\\n      \u002F\u002F avoid any possible issues by not updating the browser history.\\n      return;\\n    }\\n\\n    let forceReplace = false;\\n    if (\\n      this._destination &&\\n      (isDestHashesEqual(this._destination.hash, hash) ||\\n        isDestArraysEqual(this._destination.dest, explicitDest))\\n    ) {\\n      \u002F\u002F When the new destination is identical to `this._destination`, and\\n      \u002F\u002F its `page` is undefined, replace the current browser history entry.\\n      \u002F\u002F NOTE: This can only occur if `this._destination` was set either:\\n      \u002F\u002F  - through the document hash being specified on load.\\n      \u002F\u002F  - through the user changing the hash of the document.\\n      if (this._destination.page) {\\n        return;\\n      }\\n      forceReplace = true;\\n    }\\n    if (this._popStateInProgress && !forceReplace) {\\n      return;\\n    }\\n\\n    this.#pushOrReplaceState(\\n      {\\n        dest: explicitDest,\\n        hash,\\n        page: pageNumber,\\n        rotation: this.linkService.rotation,\\n      },\\n      forceReplace\\n    );\\n\\n    if (!this._popStateInProgress) {\\n      \u002F\u002F Prevent the browser history from updating while the new destination is\\n      \u002F\u002F being scrolled into view, to avoid potentially inconsistent state.\\n      this._popStateInProgress = true;\\n      \u002F\u002F We defer the resetting of `this._popStateInProgress`, to account for\\n      \u002F\u002F e.g. zooming occurring when the new destination is being navigated to.\\n      Promise.resolve().then(() => {\\n        this._popStateInProgress = false;\\n      });\\n    }\\n  }\\n\\n  \u002F**\\n   * Push a page to the browser history; generally the `push` method should be\\n   * used instead.\\n   * @param {number} pageNumber\\n   *\u002F\\n  pushPage(pageNumber) {\\n    if (!this._initialized) {\\n      return;\\n    }\\n    if (!this.#isValidPage(pageNumber)) {\\n      console.error(\\n        `PDFHistory.pushPage: \\\"${pageNumber}\\\" is not a valid page number.`\\n      );\\n      return;\\n    }\\n\\n    if (this._destination?.page === pageNumber) {\\n      \u002F\u002F When the new page is identical to the one in `this._destination`, we\\n      \u002F\u002F don't want to add a potential duplicate entry in the browser history.\\n      return;\\n    }\\n    if (this._popStateInProgress) {\\n      return;\\n    }\\n\\n    this.#pushOrReplaceState({\\n      \u002F\u002F Simulate an internal destination, for `this.#tryPushCurrentPosition`:\\n      dest: null,\\n      hash: `page=${pageNumber}`,\\n      page: pageNumber,\\n      rotation: this.linkService.rotation,\\n    });\\n\\n    if (!this._popStateInProgress) {\\n      \u002F\u002F Prevent the browser history from updating while the new page is\\n      \u002F\u002F being scrolled into view, to avoid potentially inconsistent state.\\n      this._popStateInProgress = true;\\n      \u002F\u002F We defer the resetting of `this._popStateInProgress`, to account for\\n      \u002F\u002F e.g. zooming occurring when the new page is being navigated to.\\n      Promise.resolve().then(() => {\\n        this._popStateInProgress = false;\\n      });\\n    }\\n  }\\n\\n  \u002F**\\n   * Push the current position to the browser history.\\n   *\u002F\\n  pushCurrentPosition() {\\n    if (!this._initialized || this._popStateInProgress) {\\n      return;\\n    }\\n    this.#tryPushCurrentPosition();\\n  }\\n\\n  \u002F**\\n   * Go back one step in the browser history.\\n   * NOTE: Avoids navigating away from the document, useful for \\\"named actions\\\".\\n   *\u002F\\n  back() {\\n    if (!this._initialized || this._popStateInProgress) {\\n      return;\\n    }\\n    const state = window.history.state;\\n    if (this.#isValidState(state) && state.uid > 0) {\\n      window.history.back();\\n    }\\n  }\\n\\n  \u002F**\\n   * Go forward one step in the browser history.\\n   * NOTE: Avoids navigating away from the document, useful for \\\"named actions\\\".\\n   *\u002F\\n  forward() {\\n    if (!this._initialized || this._popStateInProgress) {\\n      return;\\n    }\\n    const state = window.history.state;\\n    if (this.#isValidState(state) && state.uid \u003C this._maxUid) {\\n      window.history.forward();\\n    }\\n  }\\n\\n  \u002F**\\n   * @type {boolean} Indicating if the user is currently moving through the\\n   *   browser history, useful e.g. for skipping the next 'hashchange' event.\\n   *\u002F\\n  get popStateInProgress() {\\n    return (\\n      this._initialized &&\\n      (this._popStateInProgress || this._blockHashChange > 0)\\n    );\\n  }\\n\\n  get initialBookmark() {\\n    return this._initialized ? this._initialBookmark : null;\\n  }\\n\\n  get initialRotation() {\\n    return this._initialized ? this._initialRotation : null;\\n  }\\n\\n  #pushOrReplaceState(destination, forceReplace = false) {\\n    const shouldReplace = forceReplace || !this._destination;\\n    const newState = {\\n      fingerprint: this._fingerprint,\\n      uid: shouldReplace ? this._uid : this._uid + 1,\\n      destination,\\n    };\\n\\n    if (\\n      typeof PDFJSDev !== \\\"undefined\\\" &&\\n      PDFJSDev.test(\\\"CHROME\\\") &&\\n      window.history.state?.chromecomState\\n    ) {\\n      \u002F\u002F history.state.chromecomState is managed by chromecom.js.\\n      newState.chromecomState = window.history.state.chromecomState;\\n    }\\n    this.#updateInternalState(destination, newState.uid);\\n\\n    let newUrl;\\n    if (this._updateUrl && destination?.hash) {\\n      const { href, protocol } = document.location;\\n      if (protocol !== \\\"file:\\\") {\\n        newUrl = updateUrlHash(href, destination.hash);\\n      }\\n    }\\n    if (shouldReplace) {\\n      window.history.replaceState(newState, \\\"\\\", newUrl);\\n    } else {\\n      window.history.pushState(newState, \\\"\\\", newUrl);\\n    }\\n  }\\n\\n  #tryPushCurrentPosition(temporary = false) {\\n    if (!this._position) {\\n      return;\\n    }\\n    let position = this._position;\\n    if (temporary) {\\n      position = Object.assign(Object.create(null), this._position);\\n      position.temporary = true;\\n    }\\n\\n    if (!this._destination) {\\n      this.#pushOrReplaceState(position);\\n      return;\\n    }\\n    if (this._destination.temporary) {\\n      \u002F\u002F Always replace a previous *temporary* position.\\n      this.#pushOrReplaceState(position, \u002F* forceReplace = *\u002F true);\\n      return;\\n    }\\n    if (this._destination.hash === position.hash) {\\n      return; \u002F\u002F The current document position has not changed.\\n    }\\n    if (\\n      !this._destination.page &&\\n      (POSITION_UPDATED_THRESHOLD \u003C= 0 ||\\n        this._numPositionUpdates \u003C= POSITION_UPDATED_THRESHOLD)\\n    ) {\\n      \u002F\u002F `this._destination` was set through the user changing the hash of\\n      \u002F\u002F the document. Do not add `this._position` to the browser history,\\n      \u002F\u002F to avoid \\\"flooding\\\" it with lots of (nearly) identical entries,\\n      \u002F\u002F since we cannot ensure that the document position has changed.\\n      return;\\n    }\\n\\n    let forceReplace = false;\\n    if (\\n      this._destination.page >= position.first &&\\n      this._destination.page \u003C= position.page\\n    ) {\\n      \u002F\u002F When the `page` of `this._destination` is still visible, do not\\n      \u002F\u002F update the browsing history when `this._destination` either:\\n      \u002F\u002F  - contains an internal destination, since in this case we\\n      \u002F\u002F    cannot ensure that the document position has actually changed.\\n      \u002F\u002F  - was set through the user changing the hash of the document.\\n      if (this._destination.dest !== undefined || !this._destination.first) {\\n        return;\\n      }\\n      \u002F\u002F To avoid \\\"flooding\\\" the browser history, replace the current entry.\\n      forceReplace = true;\\n    }\\n    this.#pushOrReplaceState(position, forceReplace);\\n  }\\n\\n  #isValidPage(val) {\\n    return (\\n      Number.isInteger(val) && val > 0 && val \u003C= this.linkService.pagesCount\\n    );\\n  }\\n\\n  #isValidState(state, checkReload = false) {\\n    if (!state) {\\n      return false;\\n    }\\n    if (state.fingerprint !== this._fingerprint) {\\n      if (checkReload) {\\n        \u002F\u002F Potentially accept the history entry, even if the fingerprints don't\\n        \u002F\u002F match, when the viewer was reloaded (see issue 6847).\\n        if (\\n          typeof state.fingerprint !== \\\"string\\\" ||\\n          state.fingerprint.length !== this._fingerprint.length\\n        ) {\\n          return false;\\n        }\\n        const [perfEntry] = performance.getEntriesByType(\\\"navigation\\\");\\n        if (perfEntry?.type !== \\\"reload\\\") {\\n          return false;\\n        }\\n      } else {\\n        \u002F\u002F This should only occur in viewers with support for opening more than\\n        \u002F\u002F one PDF document, e.g. the GENERIC viewer.\\n        return false;\\n      }\\n    }\\n    if (!Number.isInteger(state.uid) || state.uid \u003C 0) {\\n      return false;\\n    }\\n    if (state.destination === null || typeof state.destination !== \\\"object\\\") {\\n      return false;\\n    }\\n    return true;\\n  }\\n\\n  #updateInternalState(destination, uid, removeTemporary = false) {\\n    if (this._updateViewareaTimeout) {\\n      \u002F\u002F When updating `this._destination`, make sure that we always wait for\\n      \u002F\u002F the next 'updateviewarea' event before (potentially) attempting to\\n      \u002F\u002F push the current position to the browser history.\\n      clearTimeout(this._updateViewareaTimeout);\\n      this._updateViewareaTimeout = null;\\n    }\\n    if (removeTemporary && destination?.temporary) {\\n      \u002F\u002F When the `destination` comes from the browser history,\\n      \u002F\u002F we no longer treat it as a *temporary* position.\\n      delete destination.temporary;\\n    }\\n    this._destination = destination;\\n    this._uid = uid;\\n    this._maxUid = Math.max(this._maxUid, uid);\\n    \u002F\u002F This should always be reset when `this._destination` is updated.\\n    this._numPositionUpdates = 0;\\n  }\\n\\n  #parseCurrentHash(checkNameddest = false) {\\n    const hash = unescape(getCurrentHash()).substring(1);\\n    const params = parseQueryString(hash);\\n\\n    const nameddest = params.get(\\\"nameddest\\\") || \\\"\\\";\\n    let page = params.get(\\\"page\\\") | 0;\\n\\n    if (!this.#isValidPage(page) || (checkNameddest && nameddest.length > 0)) {\\n      page = null;\\n    }\\n    return { hash, page, rotation: this.linkService.rotation };\\n  }\\n\\n  #updateViewarea({ location }) {\\n    if (this._updateViewareaTimeout) {\\n      clearTimeout(this._updateViewareaTimeout);\\n      this._updateViewareaTimeout = null;\\n    }\\n\\n    this._position = {\\n      hash: location.pdfOpenParams.substring(1),\\n      page: this.linkService.page,\\n      first: location.pageNumber,\\n      rotation: location.rotation,\\n    };\\n\\n    if (this._popStateInProgress) {\\n      return;\\n    }\\n\\n    if (\\n      POSITION_UPDATED_THRESHOLD > 0 &&\\n      this._isPagesLoaded &&\\n      this._destination &&\\n      !this._destination.page\\n    ) {\\n      \u002F\u002F If the current destination was set through the user changing the hash\\n      \u002F\u002F of the document, we will usually not try to push the current position\\n      \u002F\u002F to the browser history; see `this.#tryPushCurrentPosition()`.\\n      \u002F\u002F\\n      \u002F\u002F To prevent `this.#tryPushCurrentPosition()` from effectively being\\n      \u002F\u002F reduced to a no-op in this case, we will assume that the position\\n      \u002F\u002F *did* in fact change if the 'updateviewarea' event was dispatched\\n      \u002F\u002F more than `POSITION_UPDATED_THRESHOLD` times.\\n      this._numPositionUpdates++;\\n    }\\n\\n    if (UPDATE_VIEWAREA_TIMEOUT > 0) {\\n      \u002F\u002F When closing the browser, a 'pagehide' event will be dispatched which\\n      \u002F\u002F *should* allow us to push the current position to the browser history.\\n      \u002F\u002F In practice, it seems that the event is arriving too late in order for\\n      \u002F\u002F the session history to be successfully updated.\\n      \u002F\u002F (For additional details, please refer to the discussion in\\n      \u002F\u002F  https:\u002F\u002Fbugzilla.mozilla.org\u002Fshow_bug.cgi?id=1153393.)\\n      \u002F\u002F\\n      \u002F\u002F To workaround this we attempt to *temporarily* add the current position\\n      \u002F\u002F to the browser history only when the viewer is *idle*,\\n      \u002F\u002F i.e. when scrolling and\u002For zooming does not occur.\\n      \u002F\u002F\\n      \u002F\u002F PLEASE NOTE: It's absolutely imperative that the browser history is\\n      \u002F\u002F *not* updated too often, since that would render the viewer more or\\n      \u002F\u002F less unusable. Hence the use of a timeout to delay the update until\\n      \u002F\u002F the viewer has been idle for `UPDATE_VIEWAREA_TIMEOUT` milliseconds.\\n      this._updateViewareaTimeout = setTimeout(() => {\\n        if (!this._popStateInProgress) {\\n          this.#tryPushCurrentPosition(\u002F* temporary = *\u002F true);\\n        }\\n        this._updateViewareaTimeout = null;\\n      }, UPDATE_VIEWAREA_TIMEOUT);\\n    }\\n  }\\n\\n  #popState({ state }) {\\n    const newHash = getCurrentHash(),\\n      hashChanged = this._currentHash !== newHash;\\n    this._currentHash = newHash;\\n\\n    if (\\n      (typeof PDFJSDev !== \\\"undefined\\\" &&\\n        PDFJSDev.test(\\\"CHROME\\\") &&\\n        state?.chromecomState &&\\n        !this.#isValidState(state)) ||\\n      !state\\n    ) {\\n      \u002F\u002F This case corresponds to the user changing the hash of the document.\\n      this._uid++;\\n\\n      const { hash, page, rotation } = this.#parseCurrentHash();\\n      this.#pushOrReplaceState(\\n        { hash, page, rotation },\\n        \u002F* forceReplace = *\u002F true\\n      );\\n      return;\\n    }\\n    if (!this.#isValidState(state)) {\\n      \u002F\u002F This should only occur in viewers with support for opening more than\\n      \u002F\u002F one PDF document, e.g. the GENERIC viewer.\\n      return;\\n    }\\n\\n    \u002F\u002F Prevent the browser history from updating until the new destination,\\n    \u002F\u002F as stored in the browser history, has been scrolled into view.\\n    this._popStateInProgress = true;\\n\\n    if (hashChanged) {\\n      \u002F\u002F When the hash changed, implying that the 'popstate' event will be\\n      \u002F\u002F followed by a 'hashchange' event, then we do *not* want to update the\\n      \u002F\u002F browser history when handling the 'hashchange' event (in web\u002Fapp.js)\\n      \u002F\u002F since that would *overwrite* the new destination navigated to below.\\n      \u002F\u002F\\n      \u002F\u002F To avoid accidentally disabling all future user-initiated hash changes,\\n      \u002F\u002F if there's e.g. another 'hashchange' listener that stops the event\\n      \u002F\u002F propagation, we make sure to always force-reset `this._blockHashChange`\\n      \u002F\u002F after `HASH_CHANGE_TIMEOUT` milliseconds have passed.\\n      this._blockHashChange++;\\n      waitOnEventOrTimeout({\\n        target: window,\\n        name: \\\"hashchange\\\",\\n        delay: HASH_CHANGE_TIMEOUT,\\n      }).then(() => {\\n        this._blockHashChange--;\\n      });\\n    }\\n\\n    \u002F\u002F Navigate to the new destination.\\n    const destination = state.destination;\\n    this.#updateInternalState(\\n      destination,\\n      state.uid,\\n      \u002F* removeTemporary = *\u002F true\\n    );\\n\\n    if (isValidRotation(destination.rotation)) {\\n      this.linkService.rotation = destination.rotation;\\n    }\\n    if (destination.dest) {\\n      this.linkService.goToDestination(destination.dest);\\n    } else if (destination.hash) {\\n      this.linkService.setHash(destination.hash);\\n    } else if (destination.page) {\\n      \u002F\u002F Fallback case; shouldn't be necessary, but better safe than sorry.\\n      this.linkService.page = destination.page;\\n    }\\n\\n    \u002F\u002F Since `PDFLinkService.goToDestination` is asynchronous, we thus defer the\\n    \u002F\u002F resetting of `this._popStateInProgress` slightly.\\n    Promise.resolve().then(() => {\\n      this._popStateInProgress = false;\\n    });\\n  }\\n\\n  #pageHide() {\\n    \u002F\u002F Attempt to push the `this._position` into the browser history when\\n    \u002F\u002F navigating away from the document. This is *only* done if the history\\n    \u002F\u002F is empty\u002Ftemporary, since otherwise an existing browser history entry\\n    \u002F\u002F will end up being overwritten (given that new entries cannot be pushed\\n    \u002F\u002F into the browser history when the 'unload' event has already fired).\\n    if (!this._destination || this._destination.temporary) {\\n      this.#tryPushCurrentPosition();\\n    }\\n  }\\n\\n  #bindEvents() {\\n    if (this.#eventAbortController) {\\n      return; \u002F\u002F The event listeners were already added.\\n    }\\n    this.#eventAbortController = new AbortController();\\n    const { signal } = this.#eventAbortController;\\n\\n    this.eventBus._on(\\\"updateviewarea\\\", this.#updateViewarea.bind(this), {\\n      signal,\\n    });\\n    window.addEventListener(\\\"popstate\\\", this.#popState.bind(this), { signal });\\n    window.addEventListener(\\\"pagehide\\\", this.#pageHide.bind(this), { signal });\\n  }\\n\\n  #unbindEvents() {\\n    this.#eventAbortController?.abort();\\n    this.#eventAbortController = null;\\n  }\\n}\\n\\nfunction isDestHashesEqual(destHash, pushHash) {\\n  if (typeof destHash !== \\\"string\\\" || typeof pushHash !== \\\"string\\\") {\\n    return false;\\n  }\\n  if (destHash === pushHash) {\\n    return true;\\n  }\\n  const nameddest = parseQueryString(destHash).get(\\\"nameddest\\\");\\n  if (nameddest === pushHash) {\\n    return true;\\n  }\\n  return false;\\n}\\n\\nfunction isDestArraysEqual(firstDest, secondDest) {\\n  function isEntryEqual(first, second) {\\n    if (typeof first !== typeof second) {\\n      return false;\\n    }\\n    if (Array.isArray(first) || Array.isArray(second)) {\\n      return false;\\n    }\\n    if (first !== null && typeof first === \\\"object\\\" && second !== null) {\\n      if (Object.keys(first).length !== Object.keys(second).length) {\\n        return false;\\n      }\\n      for (const key in first) {\\n        if (!isEntryEqual(first[key], second[key])) {\\n          return false;\\n        }\\n      }\\n      return true;\\n    }\\n    return first === second || (Number.isNaN(first) && Number.isNaN(second));\\n  }\\n\\n  if (!(Array.isArray(firstDest) && Array.isArray(secondDest))) {\\n    return false;\\n  }\\n  if (firstDest.length !== secondDest.length) {\\n    return false;\\n  }\\n  for (let i = 0, ii = firstDest.length; i \u003C ii; i++) {\\n    if (!isEntryEqual(firstDest[i], secondDest[i])) {\\n      return false;\\n    }\\n  }\\n  return true;\\n}\\n\\nexport { isDestArraysEqual, isDestHashesEqual, PDFHistory };\\n\",\"\u002F* Copyright 2020 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fevent_utils.js\\\").EventBus} EventBus *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Foptional_content_config.js\\\").OptionalContentConfig} OptionalContentConfig *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fapi.js\\\").PDFDocumentProxy} PDFDocumentProxy *\u002F\\n\\nimport { BaseTreeViewer } from \\\".\u002Fbase_tree_viewer.js\\\";\\n\\n\u002F**\\n * @typedef {Object} PDFLayerViewerOptions\\n * @property {HTMLDivElement} container - The viewer element.\\n * @property {EventBus} eventBus - The application event bus.\\n *\u002F\\n\\n\u002F**\\n * @typedef {Object} PDFLayerViewerRenderParameters\\n * @property {OptionalContentConfig|null} optionalContentConfig - An\\n *   {OptionalContentConfig} instance.\\n * @property {PDFDocumentProxy} pdfDocument - A {PDFDocument} instance.\\n *\u002F\\n\\nclass PDFLayerViewer extends BaseTreeViewer {\\n  constructor(options) {\\n    super(options);\\n\\n    this.eventBus._on(\\\"optionalcontentconfigchanged\\\", evt => {\\n      this.#updateLayers(evt.promise);\\n    });\\n    this.eventBus._on(\\\"resetlayers\\\", () => {\\n      this.#updateLayers();\\n    });\\n    this.eventBus._on(\\\"togglelayerstree\\\", this._toggleAllTreeItems.bind(this));\\n  }\\n\\n  reset() {\\n    super.reset();\\n    this._optionalContentConfig = null;\\n\\n    this._optionalContentVisibility?.clear();\\n    this._optionalContentVisibility = null;\\n  }\\n\\n  \u002F**\\n   * @protected\\n   *\u002F\\n  _dispatchEvent(layersCount) {\\n    this.eventBus.dispatch(\\\"layersloaded\\\", {\\n      source: this,\\n      layersCount,\\n    });\\n  }\\n\\n  \u002F**\\n   * @protected\\n   *\u002F\\n  _bindLink(element, { groupId, input }) {\\n    const setVisibility = () => {\\n      const visible = input.checked;\\n      this._optionalContentConfig.setVisibility(groupId, visible);\\n\\n      const cached = this._optionalContentVisibility.get(groupId);\\n      if (cached) {\\n        cached.visible = visible;\\n      }\\n\\n      this.eventBus.dispatch(\\\"optionalcontentconfig\\\", {\\n        source: this,\\n        promise: Promise.resolve(this._optionalContentConfig),\\n      });\\n    };\\n\\n    element.onclick = evt => {\\n      if (evt.target === input) {\\n        setVisibility();\\n        return true;\\n      } else if (evt.target !== element) {\\n        return true; \u002F\u002F The target is the \\\"label\\\", which is handled above.\\n      }\\n      input.checked = !input.checked;\\n      setVisibility();\\n      return false;\\n    };\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _setNestedName(element, { name = null }) {\\n    if (typeof name === \\\"string\\\") {\\n      element.textContent = this._normalizeTextContent(name);\\n      return;\\n    }\\n    element.setAttribute(\\\"data-l10n-id\\\", \\\"pdfjs-additional-layers\\\");\\n    element.style.fontStyle = \\\"italic\\\";\\n    \u002F\u002F Trigger translation manually, since translation is paused when\\n    \u002F\u002F the final layer-tree is appended to the DOM.\\n    this._l10n.translateOnce(element);\\n  }\\n\\n  \u002F**\\n   * @protected\\n   *\u002F\\n  _addToggleButton(div, { name = null }) {\\n    super._addToggleButton(div, \u002F* hidden = *\u002F name === null);\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _toggleAllTreeItems() {\\n    if (!this._optionalContentConfig) {\\n      return;\\n    }\\n    super._toggleAllTreeItems();\\n  }\\n\\n  \u002F**\\n   * @param {PDFLayerViewerRenderParameters} params\\n   *\u002F\\n  render({ optionalContentConfig, pdfDocument }) {\\n    if (this._optionalContentConfig) {\\n      this.reset();\\n    }\\n    this._optionalContentConfig = optionalContentConfig || null;\\n    this._pdfDocument = pdfDocument || null;\\n\\n    const groups = optionalContentConfig?.getOrder();\\n    if (!groups) {\\n      this._dispatchEvent(\u002F* layersCount = *\u002F 0);\\n      return;\\n    }\\n    this._optionalContentVisibility = new Map();\\n\\n    const fragment = document.createDocumentFragment(),\\n      queue = [{ parent: fragment, groups }];\\n    let layersCount = 0,\\n      hasAnyNesting = false;\\n    while (queue.length > 0) {\\n      const levelData = queue.shift();\\n      for (const groupId of levelData.groups) {\\n        const div = document.createElement(\\\"div\\\");\\n        div.className = \\\"treeItem\\\";\\n\\n        const element = document.createElement(\\\"a\\\");\\n        div.append(element);\\n\\n        if (typeof groupId === \\\"object\\\") {\\n          hasAnyNesting = true;\\n          this._addToggleButton(div, groupId);\\n          this._setNestedName(element, groupId);\\n\\n          const itemsDiv = document.createElement(\\\"div\\\");\\n          itemsDiv.className = \\\"treeItems\\\";\\n          div.append(itemsDiv);\\n\\n          queue.push({ parent: itemsDiv, groups: groupId.order });\\n        } else {\\n          const group = optionalContentConfig.getGroup(groupId);\\n\\n          const input = document.createElement(\\\"input\\\");\\n          this._bindLink(element, { groupId, input });\\n          input.type = \\\"checkbox\\\";\\n          input.checked = group.visible;\\n\\n          this._optionalContentVisibility.set(groupId, {\\n            input,\\n            visible: input.checked,\\n          });\\n\\n          const label = document.createElement(\\\"label\\\");\\n          label.textContent = this._normalizeTextContent(group.name);\\n\\n          label.append(input);\\n          element.append(label);\\n          layersCount++;\\n        }\\n\\n        levelData.parent.append(div);\\n      }\\n    }\\n\\n    this._finishRendering(fragment, layersCount, hasAnyNesting);\\n  }\\n\\n  async #updateLayers(promise = null) {\\n    if (!this._optionalContentConfig) {\\n      return;\\n    }\\n    const pdfDocument = this._pdfDocument;\\n    const optionalContentConfig = await (promise ||\\n      pdfDocument.getOptionalContentConfig({ intent: \\\"display\\\" }));\\n\\n    if (pdfDocument !== this._pdfDocument) {\\n      return; \u002F\u002F The document was closed while the optional content resolved.\\n    }\\n    if (promise) {\\n      \u002F\u002F Ensure that the UI displays the correct state (e.g. with RBGroups).\\n      for (const [groupId, cached] of this._optionalContentVisibility) {\\n        const group = optionalContentConfig.getGroup(groupId);\\n\\n        if (group && cached.visible !== group.visible) {\\n          cached.input.checked = cached.visible = !cached.visible;\\n        }\\n      }\\n      return;\\n    }\\n    this.eventBus.dispatch(\\\"optionalcontentconfig\\\", {\\n      source: this,\\n      promise: Promise.resolve(optionalContentConfig),\\n    });\\n\\n    \u002F\u002F Reset the sidebarView to the new state.\\n    this.render({\\n      optionalContentConfig,\\n      pdfDocument: this._pdfDocument,\\n    });\\n  }\\n}\\n\\nexport { PDFLayerViewer };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fevent_utils.js\\\").EventBus} EventBus *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fdownload_manager.js\\\").DownloadManager} DownloadManager *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces.js\\\").IPDFLinkService} IPDFLinkService *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fapi.js\\\").PDFDocumentProxy} PDFDocumentProxy *\u002F\\n\\nimport { BaseTreeViewer } from \\\".\u002Fbase_tree_viewer.js\\\";\\nimport { SidebarView } from \\\".\u002Fui_utils.js\\\";\\n\\n\u002F**\\n * @typedef {Object} PDFOutlineViewerOptions\\n * @property {HTMLDivElement} container - The viewer element.\\n * @property {EventBus} eventBus - The application event bus.\\n * @property {IPDFLinkService} linkService - The navigation\u002Flinking service.\\n * @property {DownloadManager} downloadManager - The download manager.\\n *\u002F\\n\\n\u002F**\\n * @typedef {Object} PDFOutlineViewerRenderParameters\\n * @property {Array|null} outline - An array of outline objects.\\n * @property {PDFDocumentProxy} pdfDocument - A {PDFDocument} instance.\\n *\u002F\\n\\nclass PDFOutlineViewer extends BaseTreeViewer {\\n  \u002F**\\n   * @param {PDFOutlineViewerOptions} options\\n   *\u002F\\n  constructor(options) {\\n    super(options);\\n    this.linkService = options.linkService;\\n    this.downloadManager = options.downloadManager;\\n\\n    this.eventBus._on(\\\"toggleoutlinetree\\\", this._toggleAllTreeItems.bind(this));\\n    this.eventBus._on(\\n      \\\"currentoutlineitem\\\",\\n      this._currentOutlineItem.bind(this)\\n    );\\n\\n    this.eventBus._on(\\\"pagechanging\\\", evt => {\\n      this._currentPageNumber = evt.pageNumber;\\n    });\\n    this.eventBus._on(\\\"pagesloaded\\\", evt => {\\n      this._isPagesLoaded = !!evt.pagesCount;\\n\\n      \u002F\u002F If the capability is still pending, see the `_dispatchEvent`-method,\\n      \u002F\u002F we know that the `currentOutlineItem`-button can be enabled here.\\n      this._currentOutlineItemCapability?.resolve(\\n        \u002F* enabled = *\u002F this._isPagesLoaded\\n      );\\n    });\\n    this.eventBus._on(\\\"sidebarviewchanged\\\", evt => {\\n      this._sidebarView = evt.view;\\n    });\\n  }\\n\\n  reset() {\\n    super.reset();\\n    this._outline = null;\\n\\n    this._pageNumberToDestHashCapability = null;\\n    this._currentPageNumber = 1;\\n    this._isPagesLoaded = null;\\n\\n    this._currentOutlineItemCapability?.resolve(\u002F* enabled = *\u002F false);\\n    this._currentOutlineItemCapability = null;\\n  }\\n\\n  \u002F**\\n   * @protected\\n   *\u002F\\n  _dispatchEvent(outlineCount) {\\n    this._currentOutlineItemCapability = Promise.withResolvers();\\n    if (\\n      outlineCount === 0 ||\\n      this._pdfDocument?.loadingParams.disableAutoFetch\\n    ) {\\n      this._currentOutlineItemCapability.resolve(\u002F* enabled = *\u002F false);\\n    } else if (this._isPagesLoaded !== null) {\\n      this._currentOutlineItemCapability.resolve(\\n        \u002F* enabled = *\u002F this._isPagesLoaded\\n      );\\n    }\\n\\n    this.eventBus.dispatch(\\\"outlineloaded\\\", {\\n      source: this,\\n      outlineCount,\\n      currentOutlineItemPromise: this._currentOutlineItemCapability.promise,\\n    });\\n  }\\n\\n  \u002F**\\n   * @protected\\n   *\u002F\\n  _bindLink(\\n    element,\\n    { url, newWindow, action, attachment, dest, setOCGState }\\n  ) {\\n    const { linkService } = this;\\n\\n    if (url) {\\n      linkService.addLinkAttributes(element, url, newWindow);\\n      return;\\n    }\\n    if (action) {\\n      element.href = linkService.getAnchorUrl(\\\"\\\");\\n      element.onclick = () => {\\n        linkService.executeNamedAction(action);\\n        return false;\\n      };\\n      return;\\n    }\\n    if (attachment) {\\n      element.href = linkService.getAnchorUrl(\\\"\\\");\\n      element.onclick = () => {\\n        this.downloadManager.openOrDownloadData(\\n          attachment.content,\\n          attachment.filename\\n        );\\n        return false;\\n      };\\n      return;\\n    }\\n    if (setOCGState) {\\n      element.href = linkService.getAnchorUrl(\\\"\\\");\\n      element.onclick = () => {\\n        linkService.executeSetOCGState(setOCGState);\\n        return false;\\n      };\\n      return;\\n    }\\n\\n    element.href = linkService.getDestinationHash(dest);\\n    element.onclick = evt => {\\n      this._updateCurrentTreeItem(evt.target.parentNode);\\n\\n      if (dest) {\\n        linkService.goToDestination(dest);\\n      }\\n      return false;\\n    };\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _setStyles(element, { bold, italic }) {\\n    if (bold) {\\n      element.style.fontWeight = \\\"bold\\\";\\n    }\\n    if (italic) {\\n      element.style.fontStyle = \\\"italic\\\";\\n    }\\n  }\\n\\n  \u002F**\\n   * @protected\\n   *\u002F\\n  _addToggleButton(div, { count, items }) {\\n    let hidden = false;\\n    if (count \u003C 0) {\\n      let totalCount = items.length;\\n      if (totalCount > 0) {\\n        const queue = [...items];\\n        while (queue.length > 0) {\\n          const { count: nestedCount, items: nestedItems } = queue.shift();\\n          if (nestedCount > 0 && nestedItems.length > 0) {\\n            totalCount += nestedItems.length;\\n            queue.push(...nestedItems);\\n          }\\n        }\\n      }\\n      if (Math.abs(count) === totalCount) {\\n        hidden = true;\\n      }\\n    }\\n    super._addToggleButton(div, hidden);\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _toggleAllTreeItems() {\\n    if (!this._outline) {\\n      return;\\n    }\\n    super._toggleAllTreeItems();\\n  }\\n\\n  \u002F**\\n   * @param {PDFOutlineViewerRenderParameters} params\\n   *\u002F\\n  render({ outline, pdfDocument }) {\\n    if (this._outline) {\\n      this.reset();\\n    }\\n    this._outline = outline || null;\\n    this._pdfDocument = pdfDocument || null;\\n\\n    if (!outline) {\\n      this._dispatchEvent(\u002F* outlineCount = *\u002F 0);\\n      return;\\n    }\\n\\n    const fragment = document.createDocumentFragment();\\n    const queue = [{ parent: fragment, items: outline }];\\n    let outlineCount = 0,\\n      hasAnyNesting = false;\\n    while (queue.length > 0) {\\n      const levelData = queue.shift();\\n      for (const item of levelData.items) {\\n        const div = document.createElement(\\\"div\\\");\\n        div.className = \\\"treeItem\\\";\\n\\n        const element = document.createElement(\\\"a\\\");\\n        this._bindLink(element, item);\\n        this._setStyles(element, item);\\n        element.textContent = this._normalizeTextContent(item.title);\\n\\n        div.append(element);\\n\\n        if (item.items.length > 0) {\\n          hasAnyNesting = true;\\n          this._addToggleButton(div, item);\\n\\n          const itemsDiv = document.createElement(\\\"div\\\");\\n          itemsDiv.className = \\\"treeItems\\\";\\n          div.append(itemsDiv);\\n\\n          queue.push({ parent: itemsDiv, items: item.items });\\n        }\\n\\n        levelData.parent.append(div);\\n        outlineCount++;\\n      }\\n    }\\n\\n    this._finishRendering(fragment, outlineCount, hasAnyNesting);\\n  }\\n\\n  \u002F**\\n   * Find\u002Fhighlight the current outline item, corresponding to the active page.\\n   * @private\\n   *\u002F\\n  async _currentOutlineItem() {\\n    if (!this._isPagesLoaded) {\\n      throw new Error(\\\"_currentOutlineItem: All pages have not been loaded.\\\");\\n    }\\n    if (!this._outline || !this._pdfDocument) {\\n      return;\\n    }\\n\\n    const pageNumberToDestHash = await this._getPageNumberToDestHash(\\n      this._pdfDocument\\n    );\\n    if (!pageNumberToDestHash) {\\n      return;\\n    }\\n    this._updateCurrentTreeItem(\u002F* treeItem = *\u002F null);\\n\\n    if (this._sidebarView !== SidebarView.OUTLINE) {\\n      return; \u002F\u002F The outline view is no longer visible, hence do nothing.\\n    }\\n    \u002F\u002F When there is no destination on the current page, always check the\\n    \u002F\u002F previous ones in (reverse) order.\\n    for (let i = this._currentPageNumber; i > 0; i--) {\\n      const destHash = pageNumberToDestHash.get(i);\\n      if (!destHash) {\\n        continue;\\n      }\\n      const linkElement = this.container.querySelector(`a[href=\\\"${destHash}\\\"]`);\\n      if (!linkElement) {\\n        continue;\\n      }\\n      this._scrollToCurrentTreeItem(linkElement.parentNode);\\n      break;\\n    }\\n  }\\n\\n  \u002F**\\n   * To (significantly) simplify the overall implementation, we will only\\n   * consider *one* destination per page when finding\u002Fhighlighting the current\\n   * outline item (similar to e.g. Adobe Reader); more specifically, we choose\\n   * the *first* outline item at the *lowest* level of the outline tree.\\n   * @private\\n   *\u002F\\n  async _getPageNumberToDestHash(pdfDocument) {\\n    if (this._pageNumberToDestHashCapability) {\\n      return this._pageNumberToDestHashCapability.promise;\\n    }\\n    this._pageNumberToDestHashCapability = Promise.withResolvers();\\n\\n    const pageNumberToDestHash = new Map(),\\n      pageNumberNesting = new Map();\\n    const queue = [{ nesting: 0, items: this._outline }];\\n    while (queue.length > 0) {\\n      const levelData = queue.shift(),\\n        currentNesting = levelData.nesting;\\n      for (const { dest, items } of levelData.items) {\\n        let explicitDest, pageNumber;\\n        if (typeof dest === \\\"string\\\") {\\n          explicitDest = await pdfDocument.getDestination(dest);\\n\\n          if (pdfDocument !== this._pdfDocument) {\\n            return null; \u002F\u002F The document was closed while the data resolved.\\n          }\\n        } else {\\n          explicitDest = dest;\\n        }\\n        if (Array.isArray(explicitDest)) {\\n          const [destRef] = explicitDest;\\n\\n          if (destRef && typeof destRef === \\\"object\\\") {\\n            \u002F\u002F The page reference must be available, since the current method\\n            \u002F\u002F won't be invoked until all pages have been loaded.\\n            pageNumber = pdfDocument.cachedPageNumber(destRef);\\n          } else if (Number.isInteger(destRef)) {\\n            pageNumber = destRef + 1;\\n          }\\n\\n          if (\\n            Number.isInteger(pageNumber) &&\\n            (!pageNumberToDestHash.has(pageNumber) ||\\n              currentNesting > pageNumberNesting.get(pageNumber))\\n          ) {\\n            const destHash = this.linkService.getDestinationHash(dest);\\n            pageNumberToDestHash.set(pageNumber, destHash);\\n            pageNumberNesting.set(pageNumber, currentNesting);\\n          }\\n        }\\n\\n        if (items.length > 0) {\\n          queue.push({ nesting: currentNesting + 1, items });\\n        }\\n      }\\n    }\\n\\n    this._pageNumberToDestHashCapability.resolve(\\n      pageNumberToDestHash.size > 0 ? pageNumberToDestHash : null\\n    );\\n    return this._pageNumberToDestHashCapability.promise;\\n  }\\n}\\n\\nexport { PDFOutlineViewer };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fevent_utils.js\\\").EventBus} EventBus *\u002F\\n\u002F** @typedef {import(\\\".\u002Fpdf_viewer.js\\\").PDFViewer} PDFViewer *\u002F\\n\\nimport {\\n  normalizeWheelEventDelta,\\n  PresentationModeState,\\n  ScrollMode,\\n  SpreadMode,\\n} from \\\".\u002Fui_utils.js\\\";\\nimport { AnnotationEditorType } from \\\"pdfjs-lib\\\";\\n\\nconst DELAY_BEFORE_HIDING_CONTROLS = 3000; \u002F\u002F in ms\\nconst ACTIVE_SELECTOR = \\\"pdfPresentationMode\\\";\\nconst CONTROLS_SELECTOR = \\\"pdfPresentationModeControls\\\";\\nconst MOUSE_SCROLL_COOLDOWN_TIME = 50; \u002F\u002F in ms\\nconst PAGE_SWITCH_THRESHOLD = 0.1;\\n\\n\u002F\u002F Number of CSS pixels for a movement to count as a swipe.\\nconst SWIPE_MIN_DISTANCE_THRESHOLD = 50;\\n\\n\u002F\u002F Swipe angle deviation from the x or y axis before it is not\\n\u002F\u002F considered a swipe in that direction any more.\\nconst SWIPE_ANGLE_THRESHOLD = Math.PI \u002F 6;\\n\\n\u002F**\\n * @typedef {Object} PDFPresentationModeOptions\\n * @property {HTMLDivElement} container - The container for the viewer element.\\n * @property {PDFViewer} pdfViewer - The document viewer.\\n * @property {EventBus} eventBus - The application event bus.\\n *\u002F\\n\\nclass PDFPresentationMode {\\n  #state = PresentationModeState.UNKNOWN;\\n\\n  #args = null;\\n\\n  #fullscreenChangeAbortController = null;\\n\\n  #windowAbortController = null;\\n\\n  \u002F**\\n   * @param {PDFPresentationModeOptions} options\\n   *\u002F\\n  constructor({ container, pdfViewer, eventBus }) {\\n    this.container = container;\\n    this.pdfViewer = pdfViewer;\\n    this.eventBus = eventBus;\\n\\n    this.contextMenuOpen = false;\\n    this.mouseScrollTimeStamp = 0;\\n    this.mouseScrollDelta = 0;\\n    this.touchSwipeState = null;\\n  }\\n\\n  \u002F**\\n   * Request the browser to enter fullscreen mode.\\n   * @returns {Promise\u003Cboolean>} Indicating if the request was successful.\\n   *\u002F\\n  async request() {\\n    const { container, pdfViewer } = this;\\n\\n    if (this.active || !pdfViewer.pagesCount || !container.requestFullscreen) {\\n      return false;\\n    }\\n    this.#addFullscreenChangeListeners();\\n    this.#notifyStateChange(PresentationModeState.CHANGING);\\n\\n    const promise = container.requestFullscreen();\\n\\n    this.#args = {\\n      pageNumber: pdfViewer.currentPageNumber,\\n      scaleValue: pdfViewer.currentScaleValue,\\n      scrollMode: pdfViewer.scrollMode,\\n      spreadMode: null,\\n      annotationEditorMode: null,\\n    };\\n\\n    if (\\n      pdfViewer.spreadMode !== SpreadMode.NONE &&\\n      !(pdfViewer.pageViewsReady && pdfViewer.hasEqualPageSizes)\\n    ) {\\n      console.warn(\\n        \\\"Ignoring Spread modes when entering PresentationMode, \\\" +\\n          \\\"since the document may contain varying page sizes.\\\"\\n      );\\n      this.#args.spreadMode = pdfViewer.spreadMode;\\n    }\\n    if (pdfViewer.annotationEditorMode !== AnnotationEditorType.DISABLE) {\\n      this.#args.annotationEditorMode = pdfViewer.annotationEditorMode;\\n    }\\n\\n    try {\\n      await promise;\\n      pdfViewer.focus(); \u002F\u002F Fixes bug 1787456.\\n      return true;\\n    } catch {\\n      this.#removeFullscreenChangeListeners();\\n      this.#notifyStateChange(PresentationModeState.NORMAL);\\n    }\\n    return false;\\n  }\\n\\n  get active() {\\n    return (\\n      this.#state === PresentationModeState.CHANGING ||\\n      this.#state === PresentationModeState.FULLSCREEN\\n    );\\n  }\\n\\n  #mouseWheel(evt) {\\n    if (!this.active) {\\n      return;\\n    }\\n    evt.preventDefault();\\n\\n    const delta = normalizeWheelEventDelta(evt);\\n    const currentTime = Date.now();\\n    const storedTime = this.mouseScrollTimeStamp;\\n\\n    \u002F\u002F If we've already switched page, avoid accidentally switching again.\\n    if (\\n      currentTime > storedTime &&\\n      currentTime - storedTime \u003C MOUSE_SCROLL_COOLDOWN_TIME\\n    ) {\\n      return;\\n    }\\n    \u002F\u002F If the scroll direction changed, reset the accumulated scroll delta.\\n    if (\\n      (this.mouseScrollDelta > 0 && delta \u003C 0) ||\\n      (this.mouseScrollDelta \u003C 0 && delta > 0)\\n    ) {\\n      this.#resetMouseScrollState();\\n    }\\n    this.mouseScrollDelta += delta;\\n\\n    if (Math.abs(this.mouseScrollDelta) >= PAGE_SWITCH_THRESHOLD) {\\n      const totalDelta = this.mouseScrollDelta;\\n      this.#resetMouseScrollState();\\n      const success =\\n        totalDelta > 0\\n          ? this.pdfViewer.previousPage()\\n          : this.pdfViewer.nextPage();\\n      if (success) {\\n        this.mouseScrollTimeStamp = currentTime;\\n      }\\n    }\\n  }\\n\\n  #notifyStateChange(state) {\\n    this.#state = state;\\n\\n    this.eventBus.dispatch(\\\"presentationmodechanged\\\", { source: this, state });\\n  }\\n\\n  #enter() {\\n    this.#notifyStateChange(PresentationModeState.FULLSCREEN);\\n    this.container.classList.add(ACTIVE_SELECTOR);\\n\\n    \u002F\u002F Ensure that the correct page is scrolled into view when entering\\n    \u002F\u002F Presentation Mode, by waiting until fullscreen mode in enabled.\\n    setTimeout(() => {\\n      this.pdfViewer.scrollMode = ScrollMode.PAGE;\\n      if (this.#args.spreadMode !== null) {\\n        this.pdfViewer.spreadMode = SpreadMode.NONE;\\n      }\\n      this.pdfViewer.currentPageNumber = this.#args.pageNumber;\\n      this.pdfViewer.currentScaleValue = \\\"page-fit\\\";\\n\\n      if (this.#args.annotationEditorMode !== null) {\\n        this.pdfViewer.annotationEditorMode = {\\n          mode: AnnotationEditorType.NONE,\\n        };\\n      }\\n    }, 0);\\n\\n    this.#addWindowListeners();\\n    this.#showControls();\\n    this.contextMenuOpen = false;\\n\\n    \u002F\u002F Text selection is disabled in Presentation Mode, thus it's not possible\\n    \u002F\u002F for the user to deselect text that is selected (e.g. with \\\"Select all\\\")\\n    \u002F\u002F when entering Presentation Mode, hence we remove any active selection.\\n    document.getSelection().empty();\\n  }\\n\\n  #exit() {\\n    const pageNumber = this.pdfViewer.currentPageNumber;\\n    this.container.classList.remove(ACTIVE_SELECTOR);\\n\\n    \u002F\u002F Ensure that the correct page is scrolled into view when exiting\\n    \u002F\u002F Presentation Mode, by waiting until fullscreen mode is disabled.\\n    setTimeout(() => {\\n      this.#removeFullscreenChangeListeners();\\n      this.#notifyStateChange(PresentationModeState.NORMAL);\\n\\n      this.pdfViewer.scrollMode = this.#args.scrollMode;\\n      if (this.#args.spreadMode !== null) {\\n        this.pdfViewer.spreadMode = this.#args.spreadMode;\\n      }\\n      this.pdfViewer.currentScaleValue = this.#args.scaleValue;\\n      this.pdfViewer.currentPageNumber = pageNumber;\\n\\n      if (this.#args.annotationEditorMode !== null) {\\n        this.pdfViewer.annotationEditorMode = {\\n          mode: this.#args.annotationEditorMode,\\n        };\\n      }\\n      this.#args = null;\\n    }, 0);\\n\\n    this.#removeWindowListeners();\\n    this.#hideControls();\\n    this.#resetMouseScrollState();\\n    this.contextMenuOpen = false;\\n  }\\n\\n  #mouseDown(evt) {\\n    if (this.contextMenuOpen) {\\n      this.contextMenuOpen = false;\\n      evt.preventDefault();\\n      return;\\n    }\\n    if (evt.button !== 0) {\\n      return;\\n    }\\n    \u002F\u002F Enable clicking of links in presentation mode. Note: only links\\n    \u002F\u002F pointing to destinations in the current PDF document work.\\n    if (\\n      evt.target.href &&\\n      evt.target.parentNode?.hasAttribute(\\\"data-internal-link\\\")\\n    ) {\\n      return;\\n    }\\n    \u002F\u002F Unless an internal link was clicked, advance one page.\\n    evt.preventDefault();\\n\\n    if (evt.shiftKey) {\\n      this.pdfViewer.previousPage();\\n    } else {\\n      this.pdfViewer.nextPage();\\n    }\\n  }\\n\\n  #contextMenu() {\\n    this.contextMenuOpen = true;\\n  }\\n\\n  #showControls() {\\n    if (this.controlsTimeout) {\\n      clearTimeout(this.controlsTimeout);\\n    } else {\\n      this.container.classList.add(CONTROLS_SELECTOR);\\n    }\\n    this.controlsTimeout = setTimeout(() => {\\n      this.container.classList.remove(CONTROLS_SELECTOR);\\n      delete this.controlsTimeout;\\n    }, DELAY_BEFORE_HIDING_CONTROLS);\\n  }\\n\\n  #hideControls() {\\n    if (!this.controlsTimeout) {\\n      return;\\n    }\\n    clearTimeout(this.controlsTimeout);\\n    this.container.classList.remove(CONTROLS_SELECTOR);\\n    delete this.controlsTimeout;\\n  }\\n\\n  \u002F**\\n   * Resets the properties used for tracking mouse scrolling events.\\n   *\u002F\\n  #resetMouseScrollState() {\\n    this.mouseScrollTimeStamp = 0;\\n    this.mouseScrollDelta = 0;\\n  }\\n\\n  #touchSwipe(evt) {\\n    if (!this.active) {\\n      return;\\n    }\\n    if (evt.touches.length > 1) {\\n      \u002F\u002F Multiple touch points detected; cancel the swipe.\\n      this.touchSwipeState = null;\\n      return;\\n    }\\n\\n    switch (evt.type) {\\n      case \\\"touchstart\\\":\\n        this.touchSwipeState = {\\n          startX: evt.touches[0].pageX,\\n          startY: evt.touches[0].pageY,\\n          endX: evt.touches[0].pageX,\\n          endY: evt.touches[0].pageY,\\n        };\\n        break;\\n      case \\\"touchmove\\\":\\n        if (this.touchSwipeState === null) {\\n          return;\\n        }\\n        this.touchSwipeState.endX = evt.touches[0].pageX;\\n        this.touchSwipeState.endY = evt.touches[0].pageY;\\n        \u002F\u002F Avoid the swipe from triggering browser gestures (Chrome in\\n        \u002F\u002F particular has some sort of swipe gesture in fullscreen mode).\\n        evt.preventDefault();\\n        break;\\n      case \\\"touchend\\\":\\n        if (this.touchSwipeState === null) {\\n          return;\\n        }\\n        let delta = 0;\\n        const dx = this.touchSwipeState.endX - this.touchSwipeState.startX;\\n        const dy = this.touchSwipeState.endY - this.touchSwipeState.startY;\\n        const absAngle = Math.abs(Math.atan2(dy, dx));\\n        if (\\n          Math.abs(dx) > SWIPE_MIN_DISTANCE_THRESHOLD &&\\n          (absAngle \u003C= SWIPE_ANGLE_THRESHOLD ||\\n            absAngle >= Math.PI - SWIPE_ANGLE_THRESHOLD)\\n        ) {\\n          \u002F\u002F Horizontal swipe.\\n          delta = dx;\\n        } else if (\\n          Math.abs(dy) > SWIPE_MIN_DISTANCE_THRESHOLD &&\\n          Math.abs(absAngle - Math.PI \u002F 2) \u003C= SWIPE_ANGLE_THRESHOLD\\n        ) {\\n          \u002F\u002F Vertical swipe.\\n          delta = dy;\\n        }\\n        if (delta > 0) {\\n          this.pdfViewer.previousPage();\\n        } else if (delta \u003C 0) {\\n          this.pdfViewer.nextPage();\\n        }\\n        break;\\n    }\\n  }\\n\\n  #addWindowListeners() {\\n    if (this.#windowAbortController) {\\n      return;\\n    }\\n    this.#windowAbortController = new AbortController();\\n    const { signal } = this.#windowAbortController;\\n\\n    const touchSwipeBind = this.#touchSwipe.bind(this);\\n\\n    window.addEventListener(\\\"mousemove\\\", this.#showControls.bind(this), {\\n      signal,\\n    });\\n    window.addEventListener(\\\"mousedown\\\", this.#mouseDown.bind(this), {\\n      signal,\\n    });\\n    window.addEventListener(\\\"wheel\\\", this.#mouseWheel.bind(this), {\\n      passive: false,\\n      signal,\\n    });\\n    window.addEventListener(\\\"keydown\\\", this.#resetMouseScrollState.bind(this), {\\n      signal,\\n    });\\n    window.addEventListener(\\\"contextmenu\\\", this.#contextMenu.bind(this), {\\n      signal,\\n    });\\n    window.addEventListener(\\\"touchstart\\\", touchSwipeBind, { signal });\\n    window.addEventListener(\\\"touchmove\\\", touchSwipeBind, { signal });\\n    window.addEventListener(\\\"touchend\\\", touchSwipeBind, { signal });\\n  }\\n\\n  #removeWindowListeners() {\\n    this.#windowAbortController?.abort();\\n    this.#windowAbortController = null;\\n  }\\n\\n  #addFullscreenChangeListeners() {\\n    if (this.#fullscreenChangeAbortController) {\\n      return;\\n    }\\n    this.#fullscreenChangeAbortController = new AbortController();\\n\\n    window.addEventListener(\\n      \\\"fullscreenchange\\\",\\n      () => {\\n        if (\u002F* isFullscreen = *\u002F document.fullscreenElement) {\\n          this.#enter();\\n        } else {\\n          this.#exit();\\n        }\\n      },\\n      { signal: this.#fullscreenChangeAbortController.signal }\\n    );\\n  }\\n\\n  #removeFullscreenChangeListeners() {\\n    this.#fullscreenChangeAbortController?.abort();\\n    this.#fullscreenChangeAbortController = null;\\n  }\\n}\\n\\nexport { PDFPresentationMode };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fapi\\\").PDFPageProxy} PDFPageProxy *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fannotation_storage\\\").AnnotationStorage} AnnotationStorage *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fdisplay_utils\\\").PageViewport} PageViewport *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IPDFLinkService} IPDFLinkService *\u002F\\n\\nimport { XfaLayer } from \\\"pdfjs-lib\\\";\\n\\n\u002F**\\n * @typedef {Object} XfaLayerBuilderOptions\\n * @property {PDFPageProxy} pdfPage\\n * @property {AnnotationStorage} [annotationStorage]\\n * @property {IPDFLinkService} linkService\\n * @property {Object} [xfaHtml]\\n *\u002F\\n\\n\u002F**\\n * @typedef {Object} XfaLayerBuilderRenderOptions\\n * @property {PageViewport} viewport\\n * @property {string} [intent] - The default value is \\\"display\\\".\\n *\u002F\\n\\nclass XfaLayerBuilder {\\n  \u002F**\\n   * @param {XfaLayerBuilderOptions} options\\n   *\u002F\\n  constructor({\\n    pdfPage,\\n    annotationStorage = null,\\n    linkService,\\n    xfaHtml = null,\\n  }) {\\n    this.pdfPage = pdfPage;\\n    this.annotationStorage = annotationStorage;\\n    this.linkService = linkService;\\n    this.xfaHtml = xfaHtml;\\n\\n    this.div = null;\\n    this._cancelled = false;\\n  }\\n\\n  \u002F**\\n   * @param {XfaLayerBuilderRenderOptions} viewport\\n   * @returns {Promise\u003CObject | void>} A promise that is resolved when rendering\\n   *   of the XFA layer is complete. The first rendering will return an object\\n   *   with a `textDivs` property that can be used with the TextHighlighter.\\n   *\u002F\\n  async render({ viewport, intent = \\\"display\\\" }) {\\n    if (intent === \\\"print\\\") {\\n      const parameters = {\\n        viewport: viewport.clone({ dontFlip: true }),\\n        div: this.div,\\n        xfaHtml: this.xfaHtml,\\n        annotationStorage: this.annotationStorage,\\n        linkService: this.linkService,\\n        intent,\\n      };\\n\\n      \u002F\u002F Create an xfa layer div and render the form\\n      this.div = document.createElement(\\\"div\\\");\\n      parameters.div = this.div;\\n\\n      return XfaLayer.render(parameters);\\n    }\\n\\n    \u002F\u002F intent === \\\"display\\\"\\n    const xfaHtml = await this.pdfPage.getXfa();\\n    if (this._cancelled || !xfaHtml) {\\n      return { textDivs: [] };\\n    }\\n\\n    const parameters = {\\n      viewport: viewport.clone({ dontFlip: true }),\\n      div: this.div,\\n      xfaHtml,\\n      annotationStorage: this.annotationStorage,\\n      linkService: this.linkService,\\n      intent,\\n    };\\n\\n    if (this.div) {\\n      return XfaLayer.update(parameters);\\n    }\\n    \u002F\u002F Create an xfa layer div and render the form\\n    this.div = document.createElement(\\\"div\\\");\\n    parameters.div = this.div;\\n\\n    return XfaLayer.render(parameters);\\n  }\\n\\n  cancel() {\\n    this._cancelled = true;\\n  }\\n\\n  hide() {\\n    if (!this.div) {\\n      return;\\n    }\\n    this.div.hidden = true;\\n  }\\n}\\n\\nexport { XfaLayerBuilder };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { getXfaPageViewport, PixelsPerInch } from \\\"pdfjs-lib\\\";\\nimport { SimpleLinkService } from \\\".\u002Fpdf_link_service.js\\\";\\nimport { XfaLayerBuilder } from \\\".\u002Fxfa_layer_builder.js\\\";\\n\\nfunction getXfaHtmlForPrinting(printContainer, pdfDocument) {\\n  const xfaHtml = pdfDocument.allXfaHtml;\\n  const linkService = new SimpleLinkService();\\n  const scale = Math.round(PixelsPerInch.PDF_TO_CSS_UNITS * 100) \u002F 100;\\n\\n  for (const xfaPage of xfaHtml.children) {\\n    const page = document.createElement(\\\"div\\\");\\n    page.className = \\\"xfaPrintedPage\\\";\\n    printContainer.append(page);\\n\\n    const builder = new XfaLayerBuilder({\\n      pdfPage: null,\\n      annotationStorage: pdfDocument.annotationStorage,\\n      linkService,\\n      xfaHtml: xfaPage,\\n    });\\n    const viewport = getXfaPageViewport(xfaPage, { scale });\\n\\n    builder.render({ viewport, intent: \\\"print\\\" });\\n    page.append(builder.div);\\n  }\\n}\\n\\nexport { getXfaHtmlForPrinting };\\n\",\"\u002F* Copyright 2016 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Finterfaces.js\\\").IPDFPrintServiceFactory} IPDFPrintServiceFactory *\u002F\\n\\nimport {\\n  AnnotationMode,\\n  PixelsPerInch,\\n  RenderingCancelledException,\\n  shadow,\\n} from \\\"pdfjs-lib\\\";\\nimport { getXfaHtmlForPrinting } from \\\".\u002Fprint_utils.js\\\";\\n\\nlet activeService = null;\\nlet dialog = null;\\nlet overlayManager = null;\\nlet viewerApp = { initialized: false };\\n\\n\u002F\u002F Renders the page to the canvas of the given print service, and returns\\n\u002F\u002F the suggested dimensions of the output page.\\nfunction renderPage(\\n  activeServiceOnEntry,\\n  pdfDocument,\\n  pageNumber,\\n  size,\\n  printResolution,\\n  optionalContentConfigPromise,\\n  printAnnotationStoragePromise\\n) {\\n  const scratchCanvas = activeService.scratchCanvas;\\n\\n  \u002F\u002F The size of the canvas in pixels for printing.\\n  const PRINT_UNITS = printResolution \u002F PixelsPerInch.PDF;\\n  scratchCanvas.width = Math.floor(size.width * PRINT_UNITS);\\n  scratchCanvas.height = Math.floor(size.height * PRINT_UNITS);\\n\\n  const ctx = scratchCanvas.getContext(\\\"2d\\\");\\n  ctx.save();\\n  ctx.fillStyle = \\\"rgb(255, 255, 255)\\\";\\n  ctx.fillRect(0, 0, scratchCanvas.width, scratchCanvas.height);\\n  ctx.restore();\\n\\n  return Promise.all([\\n    pdfDocument.getPage(pageNumber),\\n    printAnnotationStoragePromise,\\n  ]).then(function ([pdfPage, printAnnotationStorage]) {\\n    const renderContext = {\\n      canvasContext: ctx,\\n      transform: [PRINT_UNITS, 0, 0, PRINT_UNITS, 0, 0],\\n      viewport: pdfPage.getViewport({ scale: 1, rotation: size.rotation }),\\n      intent: \\\"print\\\",\\n      annotationMode: AnnotationMode.ENABLE_STORAGE,\\n      optionalContentConfigPromise,\\n      printAnnotationStorage,\\n    };\\n    const renderTask = pdfPage.render(renderContext);\\n\\n    return renderTask.promise.catch(reason => {\\n      if (!(reason instanceof RenderingCancelledException)) {\\n        console.error(reason);\\n      }\\n      throw reason;\\n    });\\n  });\\n}\\n\\nclass PDFPrintService {\\n  constructor({\\n    pdfDocument,\\n    pagesOverview,\\n    printContainer,\\n    printResolution,\\n    printAnnotationStoragePromise = null,\\n  }) {\\n    this.pdfDocument = pdfDocument;\\n    this.pagesOverview = pagesOverview;\\n    this.printContainer = printContainer;\\n    this._printResolution = printResolution || 150;\\n    this._optionalContentConfigPromise = pdfDocument.getOptionalContentConfig({\\n      intent: \\\"print\\\",\\n    });\\n    this._printAnnotationStoragePromise =\\n      printAnnotationStoragePromise || Promise.resolve();\\n    this.currentPage = -1;\\n    \u002F\u002F The temporary canvas where renderPage paints one page at a time.\\n    this.scratchCanvas = document.createElement(\\\"canvas\\\");\\n  }\\n\\n  layout() {\\n    this.throwIfInactive();\\n\\n    const body = document.querySelector(\\\"body\\\");\\n    body.setAttribute(\\\"data-pdfjsprinting\\\", true);\\n\\n    const { width, height } = this.pagesOverview[0];\\n    const hasEqualPageSizes = this.pagesOverview.every(\\n      size => size.width === width && size.height === height\\n    );\\n    if (!hasEqualPageSizes) {\\n      console.warn(\\n        \\\"Not all pages have the same size. The printed result may be incorrect!\\\"\\n      );\\n    }\\n\\n    \u002F\u002F Insert a @page + size rule to make sure that the page size is correctly\\n    \u002F\u002F set. Note that we assume that all pages have the same size, because\\n    \u002F\u002F variable-size pages are not supported yet (e.g. in Chrome & Firefox).\\n    \u002F\u002F TODO(robwu): Use named pages when size calculation bugs get resolved\\n    \u002F\u002F (e.g. https:\u002F\u002Fcrbug.com\u002F355116) AND when support for named pages is\\n    \u002F\u002F added (http:\u002F\u002Fwww.w3.org\u002FTR\u002Fcss3-page\u002F#using-named-pages).\\n    \u002F\u002F In browsers where @page + size is not supported, the next stylesheet\\n    \u002F\u002F will be ignored and the user has to select the correct paper size in\\n    \u002F\u002F the UI if wanted.\\n    this.pageStyleSheet = document.createElement(\\\"style\\\");\\n    this.pageStyleSheet.textContent = `@page { size: ${width}pt ${height}pt;}`;\\n    body.append(this.pageStyleSheet);\\n  }\\n\\n  destroy() {\\n    if (activeService !== this) {\\n      \u002F\u002F |activeService| cannot be replaced without calling destroy() first,\\n      \u002F\u002F so if it differs then an external consumer has a stale reference to us.\\n      return;\\n    }\\n    this.printContainer.textContent = \\\"\\\";\\n\\n    const body = document.querySelector(\\\"body\\\");\\n    body.removeAttribute(\\\"data-pdfjsprinting\\\");\\n\\n    if (this.pageStyleSheet) {\\n      this.pageStyleSheet.remove();\\n      this.pageStyleSheet = null;\\n    }\\n    this.scratchCanvas.width = this.scratchCanvas.height = 0;\\n    this.scratchCanvas = null;\\n    activeService = null;\\n    ensureOverlay().then(function () {\\n      overlayManager.closeIfActive(dialog);\\n    });\\n  }\\n\\n  renderPages() {\\n    if (this.pdfDocument.isPureXfa) {\\n      getXfaHtmlForPrinting(this.printContainer, this.pdfDocument);\\n      return Promise.resolve();\\n    }\\n\\n    const pageCount = this.pagesOverview.length;\\n    const renderNextPage = (resolve, reject) => {\\n      this.throwIfInactive();\\n      if (++this.currentPage >= pageCount) {\\n        renderProgress(pageCount, pageCount);\\n        resolve();\\n        return;\\n      }\\n      const index = this.currentPage;\\n      renderProgress(index, pageCount);\\n      renderPage(\\n        this,\\n        this.pdfDocument,\\n        \u002F* pageNumber = *\u002F index + 1,\\n        this.pagesOverview[index],\\n        this._printResolution,\\n        this._optionalContentConfigPromise,\\n        this._printAnnotationStoragePromise\\n      )\\n        .then(this.useRenderedPage.bind(this))\\n        .then(function () {\\n          renderNextPage(resolve, reject);\\n        }, reject);\\n    };\\n    return new Promise(renderNextPage);\\n  }\\n\\n  useRenderedPage() {\\n    this.throwIfInactive();\\n    const img = document.createElement(\\\"img\\\");\\n    this.scratchCanvas.toBlob(blob => {\\n      img.src = URL.createObjectURL(blob);\\n    });\\n\\n    const wrapper = document.createElement(\\\"div\\\");\\n    wrapper.className = \\\"printedPage\\\";\\n    wrapper.append(img);\\n    this.printContainer.append(wrapper);\\n\\n    const { promise, resolve, reject } = Promise.withResolvers();\\n    img.onload = resolve;\\n    img.onerror = reject;\\n\\n    promise\\n      .catch(() => {\\n        \u002F\u002F Avoid \\\"Uncaught promise\\\" messages in the console.\\n      })\\n      .then(() => {\\n        URL.revokeObjectURL(img.src);\\n      });\\n    return promise;\\n  }\\n\\n  performPrint() {\\n    this.throwIfInactive();\\n    return new Promise(resolve => {\\n      \u002F\u002F Push window.print in the macrotask queue to avoid being affected by\\n      \u002F\u002F the deprecation of running print() code in a microtask, see\\n      \u002F\u002F https:\u002F\u002Fgithub.com\u002Fmozilla\u002Fpdf.js\u002Fissues\u002F7547.\\n      setTimeout(() => {\\n        if (!this.active) {\\n          resolve();\\n          return;\\n        }\\n        print.call(window);\\n        \u002F\u002F Delay promise resolution in case print() was not synchronous.\\n        setTimeout(resolve, 20); \u002F\u002F Tidy-up.\\n      }, 0);\\n    });\\n  }\\n\\n  get active() {\\n    return this === activeService;\\n  }\\n\\n  throwIfInactive() {\\n    if (!this.active) {\\n      throw new Error(\\\"This print request was cancelled or completed.\\\");\\n    }\\n  }\\n}\\n\\nconst print = window.print;\\nwindow.print = function () {\\n  if (activeService) {\\n    console.warn(\\\"Ignored window.print() because of a pending print job.\\\");\\n    return;\\n  }\\n  ensureOverlay().then(function () {\\n    if (activeService) {\\n      overlayManager.open(dialog);\\n    }\\n  });\\n\\n  try {\\n    dispatchEvent(\\\"beforeprint\\\");\\n  } finally {\\n    if (!activeService) {\\n      console.error(\\\"Expected print service to be initialized.\\\");\\n      ensureOverlay().then(function () {\\n        overlayManager.closeIfActive(dialog);\\n      });\\n    } else {\\n      const activeServiceOnEntry = activeService;\\n      activeService\\n        .renderPages()\\n        .then(() => activeServiceOnEntry.performPrint())\\n        .catch(() => {\\n          \u002F\u002F Ignore any error messages.\\n        })\\n        .then(() => {\\n          \u002F\u002F aborts acts on the \\\"active\\\" print request, so we need to check\\n          \u002F\u002F whether the print request (activeServiceOnEntry) is still active.\\n          \u002F\u002F Without the check, an unrelated print request (created after\\n          \u002F\u002F aborting this print request while the pages were being generated)\\n          \u002F\u002F would be aborted.\\n          if (activeServiceOnEntry.active) {\\n            abort();\\n          }\\n        });\\n    }\\n  }\\n};\\n\\nfunction dispatchEvent(eventType) {\\n  const event = new CustomEvent(eventType, {\\n    bubbles: false,\\n    cancelable: false,\\n    detail: \\\"custom\\\",\\n  });\\n  window.dispatchEvent(event);\\n}\\n\\nfunction abort() {\\n  if (activeService) {\\n    activeService.destroy();\\n    dispatchEvent(\\\"afterprint\\\");\\n  }\\n}\\n\\nfunction renderProgress(index, total) {\\n  if (typeof PDFJSDev === \\\"undefined\\\" && window.isGECKOVIEW) {\\n    return;\\n  }\\n  dialog ||= document.getElementById(\\\"printServiceDialog\\\");\\n  const progress = Math.round((100 * index) \u002F total);\\n  const progressBar = dialog.querySelector(\\\"progress\\\");\\n  const progressPerc = dialog.querySelector(\\\".relative-progress\\\");\\n  progressBar.value = progress;\\n  progressPerc.setAttribute(\\\"data-l10n-args\\\", JSON.stringify({ progress }));\\n}\\n\\nwindow.addEventListener(\\n  \\\"keydown\\\",\\n  function (event) {\\n    \u002F\u002F Intercept Cmd\u002FCtrl + P in all browsers.\\n    \u002F\u002F Also intercept Cmd\u002FCtrl + Shift + P in Chrome and Opera\\n    if (\\n      event.keyCode === \u002F* P= *\u002F 80 &&\\n      (event.ctrlKey || event.metaKey) &&\\n      !event.altKey &&\\n      (!event.shiftKey || window.chrome || window.opera)\\n    ) {\\n      window.print();\\n\\n      event.preventDefault();\\n      event.stopImmediatePropagation();\\n    }\\n  },\\n  true\\n);\\n\\nif (\\\"onbeforeprint\\\" in window) {\\n  \u002F\u002F Do not propagate before\u002Fafterprint events when they are not triggered\\n  \u002F\u002F from within this polyfill. (FF \u002F Chrome 63+).\\n  const stopPropagationIfNeeded = function (event) {\\n    if (event.detail !== \\\"custom\\\") {\\n      event.stopImmediatePropagation();\\n    }\\n  };\\n  window.addEventListener(\\\"beforeprint\\\", stopPropagationIfNeeded);\\n  window.addEventListener(\\\"afterprint\\\", stopPropagationIfNeeded);\\n}\\n\\nlet overlayPromise;\\nfunction ensureOverlay() {\\n  if (typeof PDFJSDev === \\\"undefined\\\" && window.isGECKOVIEW) {\\n    return Promise.reject(\\n      new Error(\\\"ensureOverlay not implemented in GECKOVIEW development mode.\\\")\\n    );\\n  }\\n  if (!overlayPromise) {\\n    overlayManager = viewerApp.overlayManager;\\n    if (!overlayManager) {\\n      throw new Error(\\\"The overlay manager has not yet been initialized.\\\");\\n    }\\n    dialog ||= document.getElementById(\\\"printServiceDialog\\\");\\n\\n    overlayPromise = overlayManager.register(\\n      dialog,\\n      \u002F* canForceClose = *\u002F true\\n    );\\n\\n    document.getElementById(\\\"printCancel\\\").onclick = abort;\\n    dialog.addEventListener(\\\"close\\\", abort);\\n  }\\n  return overlayPromise;\\n}\\n\\n\u002F**\\n * @implements {IPDFPrintServiceFactory}\\n *\u002F\\nclass PDFPrintServiceFactory {\\n  static initGlobals(app) {\\n    viewerApp = app;\\n  }\\n\\n  static get supportsPrinting() {\\n    return shadow(this, \\\"supportsPrinting\\\", true);\\n  }\\n\\n  static createPrintService(params) {\\n    if (activeService) {\\n      throw new Error(\\\"The print service is created and active.\\\");\\n    }\\n    return (activeService = new PDFPrintService(params));\\n  }\\n}\\n\\nexport { PDFPrintServiceFactory };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IRenderableView} IRenderableView *\u002F\\n\u002F** @typedef {import(\\\".\u002Fpdf_viewer\\\").PDFViewer} PDFViewer *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fpdf_thumbnail_viewer\\\").PDFThumbnailViewer} PDFThumbnailViewer *\u002F\\n\\nimport { RenderingCancelledException } from \\\"pdfjs-lib\\\";\\nimport { RenderingStates } from \\\".\u002Fui_utils.js\\\";\\n\\nconst CLEANUP_TIMEOUT = 30000;\\n\\n\u002F**\\n * Controls rendering of the views for pages and thumbnails.\\n *\u002F\\nclass PDFRenderingQueue {\\n  constructor() {\\n    this.pdfViewer = null;\\n    this.pdfThumbnailViewer = null;\\n    this.onIdle = null;\\n    this.highestPriorityPage = null;\\n    \u002F** @type {number} *\u002F\\n    this.idleTimeout = null;\\n    this.printing = false;\\n    this.isThumbnailViewEnabled = false;\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      Object.defineProperty(this, \\\"hasViewer\\\", {\\n        value: () => !!this.pdfViewer,\\n      });\\n    }\\n  }\\n\\n  \u002F**\\n   * @param {PDFViewer} pdfViewer\\n   *\u002F\\n  setViewer(pdfViewer) {\\n    this.pdfViewer = pdfViewer;\\n  }\\n\\n  \u002F**\\n   * @param {PDFThumbnailViewer} pdfThumbnailViewer\\n   *\u002F\\n  setThumbnailViewer(pdfThumbnailViewer) {\\n    this.pdfThumbnailViewer = pdfThumbnailViewer;\\n  }\\n\\n  \u002F**\\n   * @param {IRenderableView} view\\n   * @returns {boolean}\\n   *\u002F\\n  isHighestPriority(view) {\\n    return this.highestPriorityPage === view.renderingId;\\n  }\\n\\n  \u002F**\\n   * @param {Object} currentlyVisiblePages\\n   *\u002F\\n  renderHighestPriority(currentlyVisiblePages) {\\n    if (this.idleTimeout) {\\n      clearTimeout(this.idleTimeout);\\n      this.idleTimeout = null;\\n    }\\n\\n    \u002F\u002F Pages have a higher priority than thumbnails, so check them first.\\n    if (this.pdfViewer.forceRendering(currentlyVisiblePages)) {\\n      return;\\n    }\\n    \u002F\u002F No pages needed rendering, so check thumbnails.\\n    if (\\n      this.isThumbnailViewEnabled &&\\n      this.pdfThumbnailViewer?.forceRendering()\\n    ) {\\n      return;\\n    }\\n\\n    if (this.printing) {\\n      \u002F\u002F If printing is currently ongoing do not reschedule cleanup.\\n      return;\\n    }\\n\\n    if (this.onIdle) {\\n      this.idleTimeout = setTimeout(this.onIdle.bind(this), CLEANUP_TIMEOUT);\\n    }\\n  }\\n\\n  \u002F**\\n   * @param {Object} visible\\n   * @param {Array} views\\n   * @param {boolean} scrolledDown\\n   * @param {boolean} [preRenderExtra]\\n   * @param {boolean} [ignoreDetailViews]\\n   *\u002F\\n  getHighestPriority(\\n    visible,\\n    views,\\n    scrolledDown,\\n    preRenderExtra = false,\\n    ignoreDetailViews = false\\n  ) {\\n    \u002F**\\n     * The state has changed. Figure out which page has the highest priority to\\n     * render next (if any).\\n     *\\n     * Priority:\\n     * 1. visible pages\\n     * 2. zoomed-in partial views of visible pages, unless `ignoreDetailViews`\\n     * 3. if last scrolled down, the page after the visible pages, or\\n     *    if last scrolled up, the page before the visible pages\\n     *\u002F\\n    const visibleViews = visible.views,\\n      numVisible = visibleViews.length;\\n\\n    if (numVisible === 0) {\\n      return null;\\n    }\\n    for (let i = 0; i \u003C numVisible; i++) {\\n      const view = visibleViews[i].view;\\n      if (!this.isViewFinished(view)) {\\n        return view;\\n      }\\n    }\\n\\n    if (!ignoreDetailViews) {\\n      for (let i = 0; i \u003C numVisible; i++) {\\n        const { detailView } = visibleViews[i].view;\\n        if (detailView && !this.isViewFinished(detailView)) {\\n          return detailView;\\n        }\\n      }\\n    }\\n\\n    const firstId = visible.first.id,\\n      lastId = visible.last.id;\\n\\n    \u002F\u002F All the visible views have rendered; try to handle any \\\"holes\\\" in the\\n    \u002F\u002F page layout (can happen e.g. with spreadModes at higher zoom levels).\\n    if (lastId - firstId + 1 > numVisible) {\\n      const visibleIds = visible.ids;\\n      for (let i = 1, ii = lastId - firstId; i \u003C ii; i++) {\\n        const holeId = scrolledDown ? firstId + i : lastId - i;\\n        if (visibleIds.has(holeId)) {\\n          continue;\\n        }\\n        const holeView = views[holeId - 1];\\n        if (!this.isViewFinished(holeView)) {\\n          return holeView;\\n        }\\n      }\\n    }\\n\\n    \u002F\u002F All the visible views have rendered; try to render next\u002Fprevious page.\\n    \u002F\u002F (IDs start at 1, so no need to add 1 when `scrolledDown === true`.)\\n    let preRenderIndex = scrolledDown ? lastId : firstId - 2;\\n    let preRenderView = views[preRenderIndex];\\n\\n    if (preRenderView && !this.isViewFinished(preRenderView)) {\\n      return preRenderView;\\n    }\\n    if (preRenderExtra) {\\n      preRenderIndex += scrolledDown ? 1 : -1;\\n      preRenderView = views[preRenderIndex];\\n\\n      if (preRenderView && !this.isViewFinished(preRenderView)) {\\n        return preRenderView;\\n      }\\n    }\\n    \u002F\u002F Everything that needs to be rendered has been.\\n    return null;\\n  }\\n\\n  \u002F**\\n   * @param {IRenderableView} view\\n   * @returns {boolean}\\n   *\u002F\\n  isViewFinished(view) {\\n    return view.renderingState === RenderingStates.FINISHED;\\n  }\\n\\n  \u002F**\\n   * Render a page or thumbnail view. This calls the appropriate function\\n   * based on the views state. If the view is already rendered it will return\\n   * `false`.\\n   *\\n   * @param {IRenderableView} view\\n   *\u002F\\n  renderView(view) {\\n    switch (view.renderingState) {\\n      case RenderingStates.FINISHED:\\n        return false;\\n      case RenderingStates.PAUSED:\\n        this.highestPriorityPage = view.renderingId;\\n        view.resume();\\n        break;\\n      case RenderingStates.RUNNING:\\n        this.highestPriorityPage = view.renderingId;\\n        break;\\n      case RenderingStates.INITIAL:\\n        this.highestPriorityPage = view.renderingId;\\n        view\\n          .draw()\\n          .finally(() => {\\n            this.renderHighestPriority();\\n          })\\n          .catch(reason => {\\n            if (reason instanceof RenderingCancelledException) {\\n              return;\\n            }\\n            console.error(\\\"renderView:\\\", reason);\\n          });\\n        break;\\n    }\\n    return true;\\n  }\\n}\\n\\nexport { PDFRenderingQueue };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fevent_utils\\\").EventBus} EventBus *\u002F\\n\\nimport { apiPageLayoutToViewerModes, RenderingStates } from \\\".\u002Fui_utils.js\\\";\\nimport { shadow } from \\\"pdfjs-lib\\\";\\n\\n\u002F**\\n * @typedef {Object} PDFScriptingManagerOptions\\n * @property {EventBus} eventBus - The application event bus.\\n * @property {string} [sandboxBundleSrc] - The path and filename of the\\n *   scripting bundle.\\n * @property {Object} [externalServices] - The factory that is used when\\n *   initializing scripting; must contain a `createScripting` method.\\n *   PLEASE NOTE: Primarily intended for the default viewer use-case.\\n * @property {function} [docProperties] - The function that is used to lookup\\n *   the necessary document properties.\\n *\u002F\\n\\nclass PDFScriptingManager {\\n  #closeCapability = null;\\n\\n  #destroyCapability = null;\\n\\n  #docProperties = null;\\n\\n  #eventAbortController = null;\\n\\n  #eventBus = null;\\n\\n  #externalServices = null;\\n\\n  #pdfDocument = null;\\n\\n  #pdfViewer = null;\\n\\n  #ready = false;\\n\\n  #scripting = null;\\n\\n  #willPrintCapability = null;\\n\\n  \u002F**\\n   * @param {PDFScriptingManagerOptions} options\\n   *\u002F\\n  constructor({ eventBus, externalServices = null, docProperties = null }) {\\n    this.#eventBus = eventBus;\\n    this.#externalServices = externalServices;\\n    this.#docProperties = docProperties;\\n\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING\\\")) {\\n      Object.defineProperty(this, \\\"sandboxTrip\\\", {\\n        value: () =>\\n          setTimeout(\\n            () =>\\n              this.#scripting?.dispatchEventInSandbox({\\n                name: \\\"sandboxtripbegin\\\",\\n              }),\\n            0\\n          ),\\n      });\\n    }\\n  }\\n\\n  setViewer(pdfViewer) {\\n    this.#pdfViewer = pdfViewer;\\n  }\\n\\n  async setDocument(pdfDocument) {\\n    if (this.#pdfDocument) {\\n      await this.#destroyScripting();\\n    }\\n    this.#pdfDocument = pdfDocument;\\n\\n    if (!pdfDocument) {\\n      return;\\n    }\\n    const [objects, calculationOrder, docActions] = await Promise.all([\\n      pdfDocument.getFieldObjects(),\\n      pdfDocument.getCalculationOrderIds(),\\n      pdfDocument.getJSActions(),\\n    ]);\\n\\n    if (!objects && !docActions) {\\n      \u002F\u002F No FieldObjects or JavaScript actions were found in the document.\\n      await this.#destroyScripting();\\n      return;\\n    }\\n    if (pdfDocument !== this.#pdfDocument) {\\n      return; \u002F\u002F The document was closed while the data resolved.\\n    }\\n    try {\\n      this.#scripting = this.#initScripting();\\n    } catch (error) {\\n      console.error(\\\"setDocument:\\\", error);\\n\\n      await this.#destroyScripting();\\n      return;\\n    }\\n    const eventBus = this.#eventBus;\\n\\n    this.#eventAbortController = new AbortController();\\n    const { signal } = this.#eventAbortController;\\n\\n    eventBus._on(\\n      \\\"updatefromsandbox\\\",\\n      event => {\\n        if (event?.source === window) {\\n          this.#updateFromSandbox(event.detail);\\n        }\\n      },\\n      { signal }\\n    );\\n    eventBus._on(\\n      \\\"dispatcheventinsandbox\\\",\\n      event => {\\n        this.#scripting?.dispatchEventInSandbox(event.detail);\\n      },\\n      { signal }\\n    );\\n\\n    eventBus._on(\\n      \\\"pagechanging\\\",\\n      ({ pageNumber, previous }) => {\\n        if (pageNumber === previous) {\\n          return; \u002F\u002F The current page didn't change.\\n        }\\n        this.#dispatchPageClose(previous);\\n        this.#dispatchPageOpen(pageNumber);\\n      },\\n      { signal }\\n    );\\n    eventBus._on(\\n      \\\"pagerendered\\\",\\n      ({ pageNumber }) => {\\n        if (!this._pageOpenPending.has(pageNumber)) {\\n          return; \u002F\u002F No pending \\\"PageOpen\\\" event for the newly rendered page.\\n        }\\n        if (pageNumber !== this.#pdfViewer.currentPageNumber) {\\n          return; \u002F\u002F The newly rendered page is no longer the current one.\\n        }\\n        this.#dispatchPageOpen(pageNumber);\\n      },\\n      { signal }\\n    );\\n    eventBus._on(\\n      \\\"pagesdestroy\\\",\\n      async () => {\\n        await this.#dispatchPageClose(this.#pdfViewer.currentPageNumber);\\n\\n        await this.#scripting?.dispatchEventInSandbox({\\n          id: \\\"doc\\\",\\n          name: \\\"WillClose\\\",\\n        });\\n\\n        this.#closeCapability?.resolve();\\n      },\\n      { signal }\\n    );\\n\\n    try {\\n      const docProperties = await this.#docProperties(pdfDocument);\\n      if (pdfDocument !== this.#pdfDocument) {\\n        return; \u002F\u002F The document was closed while the properties resolved.\\n      }\\n\\n      await this.#scripting.createSandbox({\\n        objects,\\n        calculationOrder,\\n        appInfo: {\\n          platform: navigator.platform,\\n          language: navigator.language,\\n        },\\n        docInfo: {\\n          ...docProperties,\\n          actions: docActions,\\n        },\\n      });\\n\\n      eventBus.dispatch(\\\"sandboxcreated\\\", { source: this });\\n    } catch (error) {\\n      console.error(\\\"setDocument:\\\", error);\\n\\n      await this.#destroyScripting();\\n      return;\\n    }\\n\\n    await this.#scripting?.dispatchEventInSandbox({\\n      id: \\\"doc\\\",\\n      name: \\\"Open\\\",\\n    });\\n    await this.#dispatchPageOpen(\\n      this.#pdfViewer.currentPageNumber,\\n      \u002F* initialize = *\u002F true\\n    );\\n\\n    \u002F\u002F Defer this slightly, to ensure that scripting is *fully* initialized.\\n    Promise.resolve().then(() => {\\n      if (pdfDocument === this.#pdfDocument) {\\n        this.#ready = true;\\n      }\\n    });\\n  }\\n\\n  async dispatchWillSave() {\\n    return this.#scripting?.dispatchEventInSandbox({\\n      id: \\\"doc\\\",\\n      name: \\\"WillSave\\\",\\n    });\\n  }\\n\\n  async dispatchDidSave() {\\n    return this.#scripting?.dispatchEventInSandbox({\\n      id: \\\"doc\\\",\\n      name: \\\"DidSave\\\",\\n    });\\n  }\\n\\n  async dispatchWillPrint() {\\n    if (!this.#scripting) {\\n      return;\\n    }\\n    await this.#willPrintCapability?.promise;\\n    this.#willPrintCapability = Promise.withResolvers();\\n    try {\\n      await this.#scripting.dispatchEventInSandbox({\\n        id: \\\"doc\\\",\\n        name: \\\"WillPrint\\\",\\n      });\\n    } catch (ex) {\\n      this.#willPrintCapability.resolve();\\n      this.#willPrintCapability = null;\\n      throw ex;\\n    }\\n\\n    await this.#willPrintCapability.promise;\\n  }\\n\\n  async dispatchDidPrint() {\\n    return this.#scripting?.dispatchEventInSandbox({\\n      id: \\\"doc\\\",\\n      name: \\\"DidPrint\\\",\\n    });\\n  }\\n\\n  get destroyPromise() {\\n    return this.#destroyCapability?.promise || null;\\n  }\\n\\n  get ready() {\\n    return this.#ready;\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  get _pageOpenPending() {\\n    return shadow(this, \\\"_pageOpenPending\\\", new Set());\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  get _visitedPages() {\\n    return shadow(this, \\\"_visitedPages\\\", new Map());\\n  }\\n\\n  async #updateFromSandbox(detail) {\\n    const pdfViewer = this.#pdfViewer;\\n    \u002F\u002F Ignore some events, see below, that don't make sense in PresentationMode.\\n    const isInPresentationMode =\\n      pdfViewer.isInPresentationMode || pdfViewer.isChangingPresentationMode;\\n\\n    const { id, siblings, command, value } = detail;\\n    if (!id) {\\n      if (\\n        typeof PDFJSDev !== \\\"undefined\\\" &&\\n        PDFJSDev.test(\\\"TESTING\\\") &&\\n        command === \\\"sandboxTripEnd\\\"\\n      ) {\\n        window.setTimeout(() => {\\n          window.dispatchEvent(new CustomEvent(\\\"sandboxtripend\\\"));\\n        }, 0);\\n        return;\\n      }\\n\\n      switch (command) {\\n        case \\\"clear\\\":\\n          console.clear();\\n          break;\\n        case \\\"error\\\":\\n          console.error(value);\\n          break;\\n        case \\\"layout\\\":\\n          if (!isInPresentationMode) {\\n            const modes = apiPageLayoutToViewerModes(value);\\n            pdfViewer.spreadMode = modes.spreadMode;\\n          }\\n          break;\\n        case \\\"page-num\\\":\\n          pdfViewer.currentPageNumber = value + 1;\\n          break;\\n        case \\\"print\\\":\\n          await pdfViewer.pagesPromise;\\n          this.#eventBus.dispatch(\\\"print\\\", { source: this });\\n          break;\\n        case \\\"println\\\":\\n          console.log(value);\\n          break;\\n        case \\\"zoom\\\":\\n          if (!isInPresentationMode) {\\n            pdfViewer.currentScaleValue = value;\\n          }\\n          break;\\n        case \\\"SaveAs\\\":\\n          this.#eventBus.dispatch(\\\"download\\\", { source: this });\\n          break;\\n        case \\\"FirstPage\\\":\\n          pdfViewer.currentPageNumber = 1;\\n          break;\\n        case \\\"LastPage\\\":\\n          pdfViewer.currentPageNumber = pdfViewer.pagesCount;\\n          break;\\n        case \\\"NextPage\\\":\\n          pdfViewer.nextPage();\\n          break;\\n        case \\\"PrevPage\\\":\\n          pdfViewer.previousPage();\\n          break;\\n        case \\\"ZoomViewIn\\\":\\n          if (!isInPresentationMode) {\\n            pdfViewer.increaseScale();\\n          }\\n          break;\\n        case \\\"ZoomViewOut\\\":\\n          if (!isInPresentationMode) {\\n            pdfViewer.decreaseScale();\\n          }\\n          break;\\n        case \\\"WillPrintFinished\\\":\\n          this.#willPrintCapability?.resolve();\\n          this.#willPrintCapability = null;\\n          break;\\n      }\\n      return;\\n    }\\n\\n    if (isInPresentationMode && detail.focus) {\\n      return;\\n    }\\n    delete detail.id;\\n    delete detail.siblings;\\n\\n    const ids = siblings ? [id, ...siblings] : [id];\\n    for (const elementId of ids) {\\n      const element = document.querySelector(\\n        `[data-element-id=\\\"${elementId}\\\"]`\\n      );\\n      if (element) {\\n        element.dispatchEvent(new CustomEvent(\\\"updatefromsandbox\\\", { detail }));\\n      } else {\\n        \u002F\u002F The element hasn't been rendered yet, use the AnnotationStorage.\\n        this.#pdfDocument?.annotationStorage.setValue(elementId, detail);\\n      }\\n    }\\n  }\\n\\n  async #dispatchPageOpen(pageNumber, initialize = false) {\\n    const pdfDocument = this.#pdfDocument,\\n      visitedPages = this._visitedPages;\\n\\n    if (initialize) {\\n      this.#closeCapability = Promise.withResolvers();\\n    }\\n    if (!this.#closeCapability) {\\n      return; \u002F\u002F Scripting isn't fully initialized yet.\\n    }\\n    const pageView = this.#pdfViewer.getPageView(\u002F* index = *\u002F pageNumber - 1);\\n\\n    if (pageView?.renderingState !== RenderingStates.FINISHED) {\\n      this._pageOpenPending.add(pageNumber);\\n      return; \u002F\u002F Wait for the page to finish rendering.\\n    }\\n    this._pageOpenPending.delete(pageNumber);\\n\\n    const actionsPromise = (async () => {\\n      \u002F\u002F Avoid sending, and thus serializing, the `actions` data more than once.\\n      const actions = await (!visitedPages.has(pageNumber)\\n        ? pageView.pdfPage?.getJSActions()\\n        : null);\\n      if (pdfDocument !== this.#pdfDocument) {\\n        return; \u002F\u002F The document was closed while the actions resolved.\\n      }\\n\\n      await this.#scripting?.dispatchEventInSandbox({\\n        id: \\\"page\\\",\\n        name: \\\"PageOpen\\\",\\n        pageNumber,\\n        actions,\\n      });\\n    })();\\n    visitedPages.set(pageNumber, actionsPromise);\\n  }\\n\\n  async #dispatchPageClose(pageNumber) {\\n    const pdfDocument = this.#pdfDocument,\\n      visitedPages = this._visitedPages;\\n\\n    if (!this.#closeCapability) {\\n      return; \u002F\u002F Scripting isn't fully initialized yet.\\n    }\\n    if (this._pageOpenPending.has(pageNumber)) {\\n      return; \u002F\u002F The page is still rendering; no \\\"PageOpen\\\" event dispatched.\\n    }\\n    const actionsPromise = visitedPages.get(pageNumber);\\n    if (!actionsPromise) {\\n      return; \u002F\u002F The \\\"PageClose\\\" event must be preceded by a \\\"PageOpen\\\" event.\\n    }\\n    visitedPages.set(pageNumber, null);\\n\\n    \u002F\u002F Ensure that the \\\"PageOpen\\\" event is dispatched first.\\n    await actionsPromise;\\n    if (pdfDocument !== this.#pdfDocument) {\\n      return; \u002F\u002F The document was closed while the actions resolved.\\n    }\\n\\n    await this.#scripting?.dispatchEventInSandbox({\\n      id: \\\"page\\\",\\n      name: \\\"PageClose\\\",\\n      pageNumber,\\n    });\\n  }\\n\\n  #initScripting() {\\n    this.#destroyCapability = Promise.withResolvers();\\n\\n    if (this.#scripting) {\\n      throw new Error(\\\"#initScripting: Scripting already exists.\\\");\\n    }\\n    return this.#externalServices.createScripting();\\n  }\\n\\n  async #destroyScripting() {\\n    if (!this.#scripting) {\\n      this.#pdfDocument = null;\\n\\n      this.#destroyCapability?.resolve();\\n      return;\\n    }\\n    if (this.#closeCapability) {\\n      await Promise.race([\\n        this.#closeCapability.promise,\\n        new Promise(resolve => {\\n          \u002F\u002F Avoid the scripting\u002Fsandbox-destruction hanging indefinitely.\\n          setTimeout(resolve, 1000);\\n        }),\\n      ]).catch(() => {\\n        \u002F\u002F Ignore any errors, to ensure that the sandbox is always destroyed.\\n      });\\n      this.#closeCapability = null;\\n    }\\n    this.#pdfDocument = null;\\n\\n    try {\\n      await this.#scripting.destroySandbox();\\n    } catch {}\\n\\n    this.#willPrintCapability?.reject(new Error(\\\"Scripting destroyed.\\\"));\\n    this.#willPrintCapability = null;\\n\\n    this.#eventAbortController?.abort();\\n    this.#eventAbortController = null;\\n\\n    this._pageOpenPending.clear();\\n    this._visitedPages.clear();\\n\\n    this.#scripting = null;\\n    this.#ready = false;\\n\\n    this.#destroyCapability?.resolve();\\n  }\\n}\\n\\nexport { PDFScriptingManager };\\n\",\"\u002F* Copyright 2016 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fevent_utils.js\\\").EventBus} EventBus *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces.js\\\").IL10n} IL10n *\u002F\\n\\nimport {\\n  docStyle,\\n  PresentationModeState,\\n  SidebarView,\\n  toggleCheckedBtn,\\n  toggleExpandedBtn,\\n} from \\\".\u002Fui_utils.js\\\";\\n\\nconst SIDEBAR_WIDTH_VAR = \\\"--sidebar-width\\\";\\nconst SIDEBAR_MIN_WIDTH = 200; \u002F\u002F pixels\\nconst SIDEBAR_RESIZING_CLASS = \\\"sidebarResizing\\\";\\nconst UI_NOTIFICATION_CLASS = \\\"pdfSidebarNotification\\\";\\n\\n\u002F**\\n * @typedef {Object} PDFSidebarOptions\\n * @property {PDFSidebarElements} elements - The DOM elements.\\n * @property {EventBus} eventBus - The application event bus.\\n * @property {IL10n} l10n - The localization service.\\n *\u002F\\n\\n\u002F**\\n * @typedef {Object} PDFSidebarElements\\n * @property {HTMLDivElement} outerContainer - The outer container\\n *   (encasing both the viewer and sidebar elements).\\n * @property {HTMLDivElement} sidebarContainer - The sidebar container\\n *   (in which the views are placed).\\n * @property {HTMLButtonElement} toggleButton - The button used for\\n *   opening\u002Fclosing the sidebar.\\n * @property {HTMLDivElement} resizer - The DOM element that can be dragged in\\n *   order to adjust the width of the sidebar.\\n * @property {HTMLButtonElement} thumbnailButton - The button used to show\\n *   the thumbnail view.\\n * @property {HTMLButtonElement} outlineButton - The button used to show\\n *   the outline view.\\n * @property {HTMLButtonElement} attachmentsButton - The button used to show\\n *   the attachments view.\\n * @property {HTMLButtonElement} layersButton - The button used to show\\n *   the layers view.\\n * @property {HTMLDivElement} thumbnailView - The container in which\\n *   the thumbnails are placed.\\n * @property {HTMLDivElement} outlineView - The container in which\\n *   the outline is placed.\\n * @property {HTMLDivElement} attachmentsView - The container in which\\n *   the attachments are placed.\\n * @property {HTMLDivElement} layersView - The container in which\\n *   the layers are placed.\\n * @property {HTMLButtonElement} currentOutlineItemButton - The button used to\\n *   find the current outline item.\\n *\u002F\\n\\nclass PDFSidebar {\\n  #isRTL = false;\\n\\n  #mouseAC = null;\\n\\n  #outerContainerWidth = null;\\n\\n  #width = null;\\n\\n  \u002F**\\n   * @param {PDFSidebarOptions} options\\n   *\u002F\\n  constructor({ elements, eventBus, l10n }) {\\n    this.isOpen = false;\\n    this.active = SidebarView.THUMBS;\\n    this.isInitialViewSet = false;\\n    this.isInitialEventDispatched = false;\\n\\n    \u002F**\\n     * Callback used when the sidebar has been opened\u002Fclosed, to ensure that\\n     * the viewers (PDFViewer\u002FPDFThumbnailViewer) are updated correctly.\\n     *\u002F\\n    this.onToggled = null;\\n    this.onUpdateThumbnails = null;\\n\\n    this.outerContainer = elements.outerContainer;\\n    this.sidebarContainer = elements.sidebarContainer;\\n    this.toggleButton = elements.toggleButton;\\n    this.resizer = elements.resizer;\\n\\n    this.thumbnailButton = elements.thumbnailButton;\\n    this.outlineButton = elements.outlineButton;\\n    this.attachmentsButton = elements.attachmentsButton;\\n    this.layersButton = elements.layersButton;\\n\\n    this.thumbnailView = elements.thumbnailView;\\n    this.outlineView = elements.outlineView;\\n    this.attachmentsView = elements.attachmentsView;\\n    this.layersView = elements.layersView;\\n\\n    this._currentOutlineItemButton = elements.currentOutlineItemButton;\\n\\n    this.eventBus = eventBus;\\n\\n    this.#isRTL = l10n.getDirection() === \\\"rtl\\\";\\n    this.#addEventListeners();\\n  }\\n\\n  reset() {\\n    this.isInitialViewSet = false;\\n    this.isInitialEventDispatched = false;\\n\\n    this.#hideUINotification(\u002F* reset = *\u002F true);\\n    this.switchView(SidebarView.THUMBS);\\n\\n    this.outlineButton.disabled = false;\\n    this.attachmentsButton.disabled = false;\\n    this.layersButton.disabled = false;\\n    this._currentOutlineItemButton.disabled = true;\\n  }\\n\\n  \u002F**\\n   * @type {number} One of the values in {SidebarView}.\\n   *\u002F\\n  get visibleView() {\\n    return this.isOpen ? this.active : SidebarView.NONE;\\n  }\\n\\n  \u002F**\\n   * @param {number} view - The sidebar view that should become visible,\\n   *                        must be one of the values in {SidebarView}.\\n   *\u002F\\n  setInitialView(view = SidebarView.NONE) {\\n    if (this.isInitialViewSet) {\\n      return;\\n    }\\n    this.isInitialViewSet = true;\\n\\n    \u002F\u002F If the user has already manually opened the sidebar, immediately closing\\n    \u002F\u002F it would be bad UX; also ignore the \\\"unknown\\\" sidebar view value.\\n    if (view === SidebarView.NONE || view === SidebarView.UNKNOWN) {\\n      this.#dispatchEvent();\\n      return;\\n    }\\n    this.switchView(view, \u002F* forceOpen = *\u002F true);\\n\\n    \u002F\u002F Prevent dispatching two back-to-back \\\"sidebarviewchanged\\\" events,\\n    \u002F\u002F since `this.switchView` dispatched the event if the view changed.\\n    if (!this.isInitialEventDispatched) {\\n      this.#dispatchEvent();\\n    }\\n  }\\n\\n  \u002F**\\n   * @param {number} view - The sidebar view that should be switched to,\\n   *                        must be one of the values in {SidebarView}.\\n   * @param {boolean} [forceOpen] - Ensure that the sidebar is open.\\n   *                                The default value is `false`.\\n   *\u002F\\n  switchView(view, forceOpen = false) {\\n    const isViewChanged = view !== this.active;\\n    let forceRendering = false;\\n\\n    switch (view) {\\n      case SidebarView.NONE:\\n        if (this.isOpen) {\\n          this.close();\\n        }\\n        return; \u002F\u002F Closing will trigger rendering and dispatch the event.\\n      case SidebarView.THUMBS:\\n        if (this.isOpen && isViewChanged) {\\n          forceRendering = true;\\n        }\\n        break;\\n      case SidebarView.OUTLINE:\\n        if (this.outlineButton.disabled) {\\n          return;\\n        }\\n        break;\\n      case SidebarView.ATTACHMENTS:\\n        if (this.attachmentsButton.disabled) {\\n          return;\\n        }\\n        break;\\n      case SidebarView.LAYERS:\\n        if (this.layersButton.disabled) {\\n          return;\\n        }\\n        break;\\n      default:\\n        console.error(`PDFSidebar.switchView: \\\"${view}\\\" is not a valid view.`);\\n        return;\\n    }\\n    \u002F\u002F Update the active view *after* it has been validated above,\\n    \u002F\u002F in order to prevent setting it to an invalid state.\\n    this.active = view;\\n\\n    \u002F\u002F Update the CSS classes (and aria attributes), for all buttons and views.\\n    toggleCheckedBtn(\\n      this.thumbnailButton,\\n      view === SidebarView.THUMBS,\\n      this.thumbnailView\\n    );\\n    toggleCheckedBtn(\\n      this.outlineButton,\\n      view === SidebarView.OUTLINE,\\n      this.outlineView\\n    );\\n    toggleCheckedBtn(\\n      this.attachmentsButton,\\n      view === SidebarView.ATTACHMENTS,\\n      this.attachmentsView\\n    );\\n    toggleCheckedBtn(\\n      this.layersButton,\\n      view === SidebarView.LAYERS,\\n      this.layersView\\n    );\\n\\n    if (forceOpen && !this.isOpen) {\\n      this.open();\\n      return; \u002F\u002F Opening will trigger rendering and dispatch the event.\\n    }\\n    if (forceRendering) {\\n      this.onUpdateThumbnails();\\n      this.onToggled();\\n    }\\n    if (isViewChanged) {\\n      this.#dispatchEvent();\\n    }\\n  }\\n\\n  open() {\\n    if (this.isOpen) {\\n      return;\\n    }\\n    this.isOpen = true;\\n    toggleExpandedBtn(this.toggleButton, true);\\n\\n    this.outerContainer.classList.add(\\\"sidebarMoving\\\", \\\"sidebarOpen\\\");\\n\\n    if (this.active === SidebarView.THUMBS) {\\n      this.onUpdateThumbnails();\\n    }\\n    this.onToggled();\\n    this.#dispatchEvent();\\n\\n    this.#hideUINotification();\\n  }\\n\\n  close(evt = null) {\\n    if (!this.isOpen) {\\n      return;\\n    }\\n    this.isOpen = false;\\n    toggleExpandedBtn(this.toggleButton, false);\\n\\n    this.outerContainer.classList.add(\\\"sidebarMoving\\\");\\n    this.outerContainer.classList.remove(\\\"sidebarOpen\\\");\\n\\n    this.onToggled();\\n    this.#dispatchEvent();\\n\\n    if (evt?.detail > 0) {\\n      \u002F\u002F Remove focus from the toggleButton if it's clicked (see issue 17361).\\n      this.toggleButton.blur();\\n    }\\n  }\\n\\n  toggle(evt = null) {\\n    if (this.isOpen) {\\n      this.close(evt);\\n    } else {\\n      this.open();\\n    }\\n  }\\n\\n  #dispatchEvent() {\\n    if (this.isInitialViewSet) {\\n      this.isInitialEventDispatched ||= true;\\n    }\\n\\n    this.eventBus.dispatch(\\\"sidebarviewchanged\\\", {\\n      source: this,\\n      view: this.visibleView,\\n    });\\n  }\\n\\n  #showUINotification() {\\n    this.toggleButton.setAttribute(\\n      \\\"data-l10n-id\\\",\\n      \\\"pdfjs-toggle-sidebar-notification-button\\\"\\n    );\\n\\n    if (!this.isOpen) {\\n      \u002F\u002F Only show the notification on the `toggleButton` if the sidebar is\\n      \u002F\u002F currently closed, to avoid unnecessarily bothering the user.\\n      this.toggleButton.classList.add(UI_NOTIFICATION_CLASS);\\n    }\\n  }\\n\\n  #hideUINotification(reset = false) {\\n    if (this.isOpen || reset) {\\n      \u002F\u002F Only hide the notification on the `toggleButton` if the sidebar is\\n      \u002F\u002F currently open, or when the current PDF document is being closed.\\n      this.toggleButton.classList.remove(UI_NOTIFICATION_CLASS);\\n    }\\n\\n    if (reset) {\\n      this.toggleButton.setAttribute(\\n        \\\"data-l10n-id\\\",\\n        \\\"pdfjs-toggle-sidebar-button\\\"\\n      );\\n    }\\n  }\\n\\n  #addEventListeners() {\\n    const { eventBus, outerContainer } = this;\\n\\n    this.sidebarContainer.addEventListener(\\\"transitionend\\\", evt => {\\n      if (evt.target === this.sidebarContainer) {\\n        outerContainer.classList.remove(\\\"sidebarMoving\\\");\\n        \u002F\u002F Ensure that rendering is triggered after opening\u002Fclosing the sidebar.\\n        eventBus.dispatch(\\\"resize\\\", { source: this });\\n      }\\n    });\\n\\n    this.toggleButton.addEventListener(\\\"click\\\", evt => {\\n      this.toggle(evt);\\n    });\\n\\n    \u002F\u002F Buttons for switching views.\\n    this.thumbnailButton.addEventListener(\\\"click\\\", () => {\\n      this.switchView(SidebarView.THUMBS);\\n    });\\n\\n    this.outlineButton.addEventListener(\\\"click\\\", () => {\\n      this.switchView(SidebarView.OUTLINE);\\n    });\\n    this.outlineButton.addEventListener(\\\"dblclick\\\", () => {\\n      eventBus.dispatch(\\\"toggleoutlinetree\\\", { source: this });\\n    });\\n\\n    this.attachmentsButton.addEventListener(\\\"click\\\", () => {\\n      this.switchView(SidebarView.ATTACHMENTS);\\n    });\\n\\n    this.layersButton.addEventListener(\\\"click\\\", () => {\\n      this.switchView(SidebarView.LAYERS);\\n    });\\n    this.layersButton.addEventListener(\\\"dblclick\\\", () => {\\n      eventBus.dispatch(\\\"resetlayers\\\", { source: this });\\n    });\\n\\n    \u002F\u002F Buttons for view-specific options.\\n    this._currentOutlineItemButton.addEventListener(\\\"click\\\", () => {\\n      eventBus.dispatch(\\\"currentoutlineitem\\\", { source: this });\\n    });\\n\\n    \u002F\u002F Disable\u002Fenable views.\\n    const onTreeLoaded = (count, button, view) => {\\n      button.disabled = !count;\\n\\n      if (count) {\\n        this.#showUINotification();\\n      } else if (this.active === view) {\\n        \u002F\u002F If the `view` was opened by the user during document load,\\n        \u002F\u002F switch away from it if it turns out to be empty.\\n        this.switchView(SidebarView.THUMBS);\\n      }\\n    };\\n\\n    eventBus._on(\\\"outlineloaded\\\", evt => {\\n      onTreeLoaded(evt.outlineCount, this.outlineButton, SidebarView.OUTLINE);\\n\\n      evt.currentOutlineItemPromise.then(enabled => {\\n        if (!this.isInitialViewSet) {\\n          return;\\n        }\\n        this._currentOutlineItemButton.disabled = !enabled;\\n      });\\n    });\\n\\n    eventBus._on(\\\"attachmentsloaded\\\", evt => {\\n      onTreeLoaded(\\n        evt.attachmentsCount,\\n        this.attachmentsButton,\\n        SidebarView.ATTACHMENTS\\n      );\\n    });\\n\\n    eventBus._on(\\\"layersloaded\\\", evt => {\\n      onTreeLoaded(evt.layersCount, this.layersButton, SidebarView.LAYERS);\\n    });\\n\\n    \u002F\u002F Update the thumbnailViewer, if visible, when exiting presentation mode.\\n    eventBus._on(\\\"presentationmodechanged\\\", evt => {\\n      if (\\n        evt.state === PresentationModeState.NORMAL &&\\n        this.visibleView === SidebarView.THUMBS\\n      ) {\\n        this.onUpdateThumbnails();\\n      }\\n    });\\n\\n    \u002F\u002F Handle resizing of the sidebar.\\n    this.resizer.addEventListener(\\\"mousedown\\\", evt => {\\n      if (evt.button !== 0) {\\n        return;\\n      }\\n      \u002F\u002F Disable the `transition-duration` rules when sidebar resizing begins,\\n      \u002F\u002F in order to improve responsiveness and to avoid visual glitches.\\n      outerContainer.classList.add(SIDEBAR_RESIZING_CLASS);\\n\\n      this.#mouseAC = new AbortController();\\n      const opts = { signal: this.#mouseAC.signal };\\n\\n      window.addEventListener(\\\"mousemove\\\", this.#mouseMove.bind(this), opts);\\n      window.addEventListener(\\\"mouseup\\\", this.#mouseUp.bind(this), opts);\\n      window.addEventListener(\\\"blur\\\", this.#mouseUp.bind(this), opts);\\n    });\\n\\n    eventBus._on(\\\"resize\\\", evt => {\\n      \u002F\u002F When the *entire* viewer is resized, such that it becomes narrower,\\n      \u002F\u002F ensure that the sidebar doesn't end up being too wide.\\n      if (evt.source !== window) {\\n        return;\\n      }\\n      \u002F\u002F Always reset the cached width when the viewer is resized.\\n      this.#outerContainerWidth = null;\\n\\n      if (!this.#width) {\\n        \u002F\u002F The sidebar hasn't been resized, hence no need to adjust its width.\\n        return;\\n      }\\n      \u002F\u002F NOTE: If the sidebar is closed, we don't need to worry about\\n      \u002F\u002F       visual glitches nor ensure that rendering is triggered.\\n      if (!this.isOpen) {\\n        this.#updateWidth(this.#width);\\n        return;\\n      }\\n      outerContainer.classList.add(SIDEBAR_RESIZING_CLASS);\\n      const updated = this.#updateWidth(this.#width);\\n\\n      Promise.resolve().then(() => {\\n        outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS);\\n        \u002F\u002F Trigger rendering if the sidebar width changed, to avoid\\n        \u002F\u002F depending on the order in which 'resize' events are handled.\\n        if (updated) {\\n          eventBus.dispatch(\\\"resize\\\", { source: this });\\n        }\\n      });\\n    });\\n  }\\n\\n  \u002F**\\n   * @type {number}\\n   *\u002F\\n  get outerContainerWidth() {\\n    return (this.#outerContainerWidth ||= this.outerContainer.clientWidth);\\n  }\\n\\n  \u002F**\\n   * returns {boolean} Indicating if the sidebar width was updated.\\n   *\u002F\\n  #updateWidth(width = 0) {\\n    \u002F\u002F Prevent the sidebar from becoming too narrow, or from occupying more\\n    \u002F\u002F than half of the available viewer width.\\n    const maxWidth = Math.floor(this.outerContainerWidth \u002F 2);\\n    if (width > maxWidth) {\\n      width = maxWidth;\\n    }\\n    if (width \u003C SIDEBAR_MIN_WIDTH) {\\n      width = SIDEBAR_MIN_WIDTH;\\n    }\\n    \u002F\u002F Only update the UI when the sidebar width did in fact change.\\n    if (width === this.#width) {\\n      return false;\\n    }\\n    this.#width = width;\\n\\n    docStyle.setProperty(SIDEBAR_WIDTH_VAR, `${width}px`);\\n    return true;\\n  }\\n\\n  #mouseMove(evt) {\\n    let width = evt.clientX;\\n    \u002F\u002F For sidebar resizing to work correctly in RTL mode, invert the width.\\n    if (this.#isRTL) {\\n      width = this.outerContainerWidth - width;\\n    }\\n    this.#updateWidth(width);\\n  }\\n\\n  #mouseUp(evt) {\\n    \u002F\u002F Re-enable the `transition-duration` rules when sidebar resizing ends...\\n    this.outerContainer.classList.remove(SIDEBAR_RESIZING_CLASS);\\n    \u002F\u002F ... and ensure that rendering will always be triggered.\\n    this.eventBus.dispatch(\\\"resize\\\", { source: this });\\n\\n    this.#mouseAC?.abort();\\n    this.#mouseAC = null;\\n  }\\n}\\n\\nexport { PDFSidebar };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Foptional_content_config\\\").OptionalContentConfig} OptionalContentConfig *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fdisplay_utils\\\").PageViewport} PageViewport *\u002F\\n\u002F** @typedef {import(\\\".\u002Fevent_utils\\\").EventBus} EventBus *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IPDFLinkService} IPDFLinkService *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IRenderableView} IRenderableView *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fpdf_rendering_queue\\\").PDFRenderingQueue} PDFRenderingQueue *\u002F\\n\\nimport { OutputScale, RenderingCancelledException } from \\\"pdfjs-lib\\\";\\nimport { AppOptions } from \\\".\u002Fapp_options.js\\\";\\nimport { RenderingStates } from \\\".\u002Fui_utils.js\\\";\\n\\nconst DRAW_UPSCALE_FACTOR = 2; \u002F\u002F See comment in `PDFThumbnailView.draw` below.\\nconst MAX_NUM_SCALING_STEPS = 3;\\nconst THUMBNAIL_WIDTH = 98; \u002F\u002F px\\n\\nfunction zeroCanvas(c) {\\n  \u002F\u002F Zeroing the width and height causes Firefox to release graphics\\n  \u002F\u002F resources immediately, which can greatly reduce memory consumption.\\n  c.width = 0;\\n  c.height = 0;\\n}\\n\\n\u002F**\\n * @typedef {Object} PDFThumbnailViewOptions\\n * @property {HTMLDivElement} container - The viewer element.\\n * @property {EventBus} eventBus - The application event bus.\\n * @property {number} id - The thumbnail's unique ID (normally its number).\\n * @property {PageViewport} defaultViewport - The page viewport.\\n * @property {Promise\u003COptionalContentConfig>} [optionalContentConfigPromise] -\\n *   A promise that is resolved with an {@link OptionalContentConfig} instance.\\n *   The default value is `null`.\\n * @property {IPDFLinkService} linkService - The navigation\u002Flinking service.\\n * @property {PDFRenderingQueue} renderingQueue - The rendering queue object.\\n * @property {number} [maxCanvasPixels] - The maximum supported canvas size in\\n *   total pixels, i.e. width * height. Use `-1` for no limit, or `0` for\\n *   CSS-only zooming. The default value is 4096 * 8192 (32 mega-pixels).\\n * @property {number} [maxCanvasDim] - The maximum supported canvas dimension,\\n *   in either width or height. Use `-1` for no limit.\\n *   The default value is 32767.\\n * @property {Object} [pageColors] - Overwrites background and foreground colors\\n *   with user defined ones in order to improve readability in high contrast\\n *   mode.\\n * @property {boolean} [enableHWA] - Enables hardware acceleration for\\n *   rendering. The default value is `false`.\\n *\u002F\\n\\nclass TempImageFactory {\\n  static #tempCanvas = null;\\n\\n  static getCanvas(width, height) {\\n    const tempCanvas = (this.#tempCanvas ||= document.createElement(\\\"canvas\\\"));\\n    tempCanvas.width = width;\\n    tempCanvas.height = height;\\n\\n    \u002F\u002F Since this is a temporary canvas, we need to fill it with a white\\n    \u002F\u002F background ourselves. `#getPageDrawContext` uses CSS rules for this.\\n    const ctx = tempCanvas.getContext(\\\"2d\\\", { alpha: false });\\n    ctx.save();\\n    ctx.fillStyle = \\\"rgb(255, 255, 255)\\\";\\n    ctx.fillRect(0, 0, width, height);\\n    ctx.restore();\\n    return [tempCanvas, tempCanvas.getContext(\\\"2d\\\")];\\n  }\\n\\n  static destroyCanvas() {\\n    if (this.#tempCanvas) {\\n      zeroCanvas(this.#tempCanvas);\\n    }\\n    this.#tempCanvas = null;\\n  }\\n}\\n\\n\u002F**\\n * @implements {IRenderableView}\\n *\u002F\\nclass PDFThumbnailView {\\n  \u002F**\\n   * @param {PDFThumbnailViewOptions} options\\n   *\u002F\\n  constructor({\\n    container,\\n    eventBus,\\n    id,\\n    defaultViewport,\\n    optionalContentConfigPromise,\\n    linkService,\\n    renderingQueue,\\n    maxCanvasPixels,\\n    maxCanvasDim,\\n    pageColors,\\n    enableHWA,\\n  }) {\\n    this.id = id;\\n    this.renderingId = \\\"thumbnail\\\" + id;\\n    this.pageLabel = null;\\n\\n    this.pdfPage = null;\\n    this.rotation = 0;\\n    this.viewport = defaultViewport;\\n    this.pdfPageRotate = defaultViewport.rotation;\\n    this._optionalContentConfigPromise = optionalContentConfigPromise || null;\\n    this.maxCanvasPixels = maxCanvasPixels ?? AppOptions.get(\\\"maxCanvasPixels\\\");\\n    this.maxCanvasDim = maxCanvasDim || AppOptions.get(\\\"maxCanvasDim\\\");\\n    this.pageColors = pageColors || null;\\n    this.enableHWA = enableHWA || false;\\n\\n    this.eventBus = eventBus;\\n    this.linkService = linkService;\\n    this.renderingQueue = renderingQueue;\\n\\n    this.renderTask = null;\\n    this.renderingState = RenderingStates.INITIAL;\\n    this.resume = null;\\n\\n    const anchor = document.createElement(\\\"a\\\");\\n    anchor.href = linkService.getAnchorUrl(\\\"#page=\\\" + id);\\n    anchor.setAttribute(\\\"data-l10n-id\\\", \\\"pdfjs-thumb-page-title\\\");\\n    anchor.setAttribute(\\\"data-l10n-args\\\", this.#pageL10nArgs);\\n    anchor.onclick = function () {\\n      linkService.goToPage(id);\\n      return false;\\n    };\\n    this.anchor = anchor;\\n\\n    const div = document.createElement(\\\"div\\\");\\n    div.className = \\\"thumbnail\\\";\\n    div.setAttribute(\\\"data-page-number\\\", this.id);\\n    this.div = div;\\n    this.#updateDims();\\n\\n    const img = document.createElement(\\\"div\\\");\\n    img.className = \\\"thumbnailImage\\\";\\n    this._placeholderImg = img;\\n\\n    div.append(img);\\n    anchor.append(div);\\n    container.append(anchor);\\n  }\\n\\n  #updateDims() {\\n    const { width, height } = this.viewport;\\n    const ratio = width \u002F height;\\n\\n    this.canvasWidth = THUMBNAIL_WIDTH;\\n    this.canvasHeight = (this.canvasWidth \u002F ratio) | 0;\\n    this.scale = this.canvasWidth \u002F width;\\n\\n    const { style } = this.div;\\n    style.setProperty(\\\"--thumbnail-width\\\", `${this.canvasWidth}px`);\\n    style.setProperty(\\\"--thumbnail-height\\\", `${this.canvasHeight}px`);\\n  }\\n\\n  setPdfPage(pdfPage) {\\n    this.pdfPage = pdfPage;\\n    this.pdfPageRotate = pdfPage.rotate;\\n    const totalRotation = (this.rotation + this.pdfPageRotate) % 360;\\n    this.viewport = pdfPage.getViewport({ scale: 1, rotation: totalRotation });\\n    this.reset();\\n  }\\n\\n  reset() {\\n    this.cancelRendering();\\n    this.renderingState = RenderingStates.INITIAL;\\n\\n    this.div.removeAttribute(\\\"data-loaded\\\");\\n    this.image?.replaceWith(this._placeholderImg);\\n    this.#updateDims();\\n\\n    if (this.image) {\\n      this.image.removeAttribute(\\\"src\\\");\\n      delete this.image;\\n    }\\n  }\\n\\n  update({ rotation = null }) {\\n    if (typeof rotation === \\\"number\\\") {\\n      this.rotation = rotation; \u002F\u002F The rotation may be zero.\\n    }\\n    const totalRotation = (this.rotation + this.pdfPageRotate) % 360;\\n    this.viewport = this.viewport.clone({\\n      scale: 1,\\n      rotation: totalRotation,\\n    });\\n    this.reset();\\n  }\\n\\n  \u002F**\\n   * PLEASE NOTE: Most likely you want to use the `this.reset()` method,\\n   *              rather than calling this one directly.\\n   *\u002F\\n  cancelRendering() {\\n    if (this.renderTask) {\\n      this.renderTask.cancel();\\n      this.renderTask = null;\\n    }\\n    this.resume = null;\\n  }\\n\\n  #getPageDrawContext(upscaleFactor = 1, enableHWA = this.enableHWA) {\\n    \u002F\u002F Keep the no-thumbnail outline visible, i.e. `data-loaded === false`,\\n    \u002F\u002F until rendering\u002Fimage conversion is complete, to avoid display issues.\\n    const canvas = document.createElement(\\\"canvas\\\");\\n    const ctx = canvas.getContext(\\\"2d\\\", {\\n      alpha: false,\\n      willReadFrequently: !enableHWA,\\n    });\\n    const outputScale = new OutputScale();\\n    const width = upscaleFactor * this.canvasWidth,\\n      height = upscaleFactor * this.canvasHeight;\\n\\n    outputScale.limitCanvas(\\n      width,\\n      height,\\n      this.maxCanvasPixels,\\n      this.maxCanvasDim\\n    );\\n    canvas.width = (width * outputScale.sx) | 0;\\n    canvas.height = (height * outputScale.sy) | 0;\\n\\n    const transform = outputScale.scaled\\n      ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0]\\n      : null;\\n\\n    return { ctx, canvas, transform };\\n  }\\n\\n  #convertCanvasToImage(canvas) {\\n    if (this.renderingState !== RenderingStates.FINISHED) {\\n      throw new Error(\\\"#convertCanvasToImage: Rendering has not finished.\\\");\\n    }\\n    const reducedCanvas = this.#reduceImage(canvas);\\n\\n    const image = document.createElement(\\\"img\\\");\\n    image.className = \\\"thumbnailImage\\\";\\n    image.setAttribute(\\\"data-l10n-id\\\", \\\"pdfjs-thumb-page-canvas\\\");\\n    image.setAttribute(\\\"data-l10n-args\\\", this.#pageL10nArgs);\\n    image.src = reducedCanvas.toDataURL();\\n    this.image = image;\\n\\n    this.div.setAttribute(\\\"data-loaded\\\", true);\\n    this._placeholderImg.replaceWith(image);\\n\\n    zeroCanvas(reducedCanvas);\\n  }\\n\\n  async draw() {\\n    if (this.renderingState !== RenderingStates.INITIAL) {\\n      console.error(\\\"Must be in new state before drawing\\\");\\n      return;\\n    }\\n    const { pageColors, pdfPage } = this;\\n\\n    if (!pdfPage) {\\n      this.renderingState = RenderingStates.FINISHED;\\n      throw new Error(\\\"pdfPage is not loaded\\\");\\n    }\\n\\n    this.renderingState = RenderingStates.RUNNING;\\n\\n    \u002F\u002F Render the thumbnail at a larger size and downsize the canvas (similar\\n    \u002F\u002F to `setImage`), to improve consistency between thumbnails created by\\n    \u002F\u002F the `draw` and `setImage` methods (fixes issue 8233).\\n    \u002F\u002F NOTE: To primarily avoid increasing memory usage too much, but also to\\n    \u002F\u002F   reduce downsizing overhead, we purposely limit the up-scaling factor.\\n    const { ctx, canvas, transform } =\\n      this.#getPageDrawContext(DRAW_UPSCALE_FACTOR);\\n    const drawViewport = this.viewport.clone({\\n      scale: DRAW_UPSCALE_FACTOR * this.scale,\\n    });\\n    const renderContinueCallback = cont => {\\n      if (!this.renderingQueue.isHighestPriority(this)) {\\n        this.renderingState = RenderingStates.PAUSED;\\n        this.resume = () => {\\n          this.renderingState = RenderingStates.RUNNING;\\n          cont();\\n        };\\n        return;\\n      }\\n      cont();\\n    };\\n\\n    const renderContext = {\\n      canvasContext: ctx,\\n      transform,\\n      viewport: drawViewport,\\n      optionalContentConfigPromise: this._optionalContentConfigPromise,\\n      pageColors,\\n    };\\n    const renderTask = (this.renderTask = pdfPage.render(renderContext));\\n    renderTask.onContinue = renderContinueCallback;\\n\\n    let error = null;\\n    try {\\n      await renderTask.promise;\\n    } catch (e) {\\n      if (e instanceof RenderingCancelledException) {\\n        zeroCanvas(canvas);\\n        return;\\n      }\\n      error = e;\\n    } finally {\\n      \u002F\u002F The renderTask may have been replaced by a new one, so only remove\\n      \u002F\u002F the reference to the renderTask if it matches the one that is\\n      \u002F\u002F triggering this callback.\\n      if (renderTask === this.renderTask) {\\n        this.renderTask = null;\\n      }\\n    }\\n    this.renderingState = RenderingStates.FINISHED;\\n\\n    this.#convertCanvasToImage(canvas);\\n    zeroCanvas(canvas);\\n\\n    this.eventBus.dispatch(\\\"thumbnailrendered\\\", {\\n      source: this,\\n      pageNumber: this.id,\\n      pdfPage,\\n    });\\n\\n    if (error) {\\n      throw error;\\n    }\\n  }\\n\\n  setImage(pageView) {\\n    if (this.renderingState !== RenderingStates.INITIAL) {\\n      return;\\n    }\\n    const { thumbnailCanvas: canvas, pdfPage, scale } = pageView;\\n    if (!canvas) {\\n      return;\\n    }\\n    if (!this.pdfPage) {\\n      this.setPdfPage(pdfPage);\\n    }\\n    if (scale \u003C this.scale) {\\n      \u002F\u002F Avoid upscaling the image, since that makes the thumbnail look blurry.\\n      return;\\n    }\\n    this.renderingState = RenderingStates.FINISHED;\\n    this.#convertCanvasToImage(canvas);\\n  }\\n\\n  #getReducedImageDims(canvas) {\\n    const width = canvas.width \u003C\u003C MAX_NUM_SCALING_STEPS,\\n      height = canvas.height \u003C\u003C MAX_NUM_SCALING_STEPS;\\n\\n    const outputScale = new OutputScale();\\n    \u002F\u002F Here we're not actually \\\"rendering\\\" to the canvas and the `OutputScale`\\n    \u002F\u002F is thus only used to limit the canvas size, hence the identity scale.\\n    outputScale.sx = outputScale.sy = 1;\\n\\n    outputScale.limitCanvas(\\n      width,\\n      height,\\n      this.maxCanvasPixels,\\n      this.maxCanvasDim\\n    );\\n    return [(width * outputScale.sx) | 0, (height * outputScale.sy) | 0];\\n  }\\n\\n  #reduceImage(img) {\\n    const { ctx, canvas } = this.#getPageDrawContext(1, true);\\n\\n    if (img.width \u003C= 2 * canvas.width) {\\n      ctx.drawImage(\\n        img,\\n        0,\\n        0,\\n        img.width,\\n        img.height,\\n        0,\\n        0,\\n        canvas.width,\\n        canvas.height\\n      );\\n      return canvas;\\n    }\\n    \u002F\u002F drawImage does an awful job of rescaling the image, doing it gradually.\\n    let [reducedWidth, reducedHeight] = this.#getReducedImageDims(canvas);\\n    const [reducedImage, reducedImageCtx] = TempImageFactory.getCanvas(\\n      reducedWidth,\\n      reducedHeight\\n    );\\n\\n    while (reducedWidth > img.width || reducedHeight > img.height) {\\n      reducedWidth >>= 1;\\n      reducedHeight >>= 1;\\n    }\\n    reducedImageCtx.drawImage(\\n      img,\\n      0,\\n      0,\\n      img.width,\\n      img.height,\\n      0,\\n      0,\\n      reducedWidth,\\n      reducedHeight\\n    );\\n    while (reducedWidth > 2 * canvas.width) {\\n      reducedImageCtx.drawImage(\\n        reducedImage,\\n        0,\\n        0,\\n        reducedWidth,\\n        reducedHeight,\\n        0,\\n        0,\\n        reducedWidth >> 1,\\n        reducedHeight >> 1\\n      );\\n      reducedWidth >>= 1;\\n      reducedHeight >>= 1;\\n    }\\n    ctx.drawImage(\\n      reducedImage,\\n      0,\\n      0,\\n      reducedWidth,\\n      reducedHeight,\\n      0,\\n      0,\\n      canvas.width,\\n      canvas.height\\n    );\\n    return canvas;\\n  }\\n\\n  get #pageL10nArgs() {\\n    return JSON.stringify({ page: this.pageLabel ?? this.id });\\n  }\\n\\n  \u002F**\\n   * @param {string|null} label\\n   *\u002F\\n  setPageLabel(label) {\\n    this.pageLabel = typeof label === \\\"string\\\" ? label : null;\\n\\n    this.anchor.setAttribute(\\\"data-l10n-args\\\", this.#pageL10nArgs);\\n\\n    if (this.renderingState !== RenderingStates.FINISHED) {\\n      return;\\n    }\\n    this.image?.setAttribute(\\\"data-l10n-args\\\", this.#pageL10nArgs);\\n  }\\n}\\n\\nexport { PDFThumbnailView, TempImageFactory };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fapi\\\").PDFDocumentProxy} PDFDocumentProxy *\u002F\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fapi\\\").PDFPageProxy} PDFPageProxy *\u002F\\n\u002F** @typedef {import(\\\".\u002Fevent_utils\\\").EventBus} EventBus *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IPDFLinkService} IPDFLinkService *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fpdf_rendering_queue\\\").PDFRenderingQueue} PDFRenderingQueue *\u002F\\n\\nimport {\\n  getVisibleElements,\\n  isValidRotation,\\n  RenderingStates,\\n  scrollIntoView,\\n  watchScroll,\\n} from \\\".\u002Fui_utils.js\\\";\\nimport { PDFThumbnailView, TempImageFactory } from \\\".\u002Fpdf_thumbnail_view.js\\\";\\n\\nconst THUMBNAIL_SCROLL_MARGIN = -19;\\nconst THUMBNAIL_SELECTED_CLASS = \\\"selected\\\";\\n\\n\u002F**\\n * @typedef {Object} PDFThumbnailViewerOptions\\n * @property {HTMLDivElement} container - The container for the thumbnail\\n *   elements.\\n * @property {EventBus} eventBus - The application event bus.\\n * @property {IPDFLinkService} linkService - The navigation\u002Flinking service.\\n * @property {PDFRenderingQueue} renderingQueue - The rendering queue object.\\n * @property {number} [maxCanvasPixels] - The maximum supported canvas size in\\n *   total pixels, i.e. width * height. Use `-1` for no limit, or `0` for\\n *   CSS-only zooming. The default value is 4096 * 8192 (32 mega-pixels).\\n * @property {number} [maxCanvasDim] - The maximum supported canvas dimension,\\n *   in either width or height. Use `-1` for no limit.\\n *   The default value is 32767.\\n * @property {Object} [pageColors] - Overwrites background and foreground colors\\n *   with user defined ones in order to improve readability in high contrast\\n *   mode.\\n * @property {AbortSignal} [abortSignal] - The AbortSignal for the window\\n *   events.\\n * @property {boolean} [enableHWA] - Enables hardware acceleration for\\n *   rendering. The default value is `false`.\\n *\u002F\\n\\n\u002F**\\n * Viewer control to display thumbnails for pages in a PDF document.\\n *\u002F\\nclass PDFThumbnailViewer {\\n  \u002F**\\n   * @param {PDFThumbnailViewerOptions} options\\n   *\u002F\\n  constructor({\\n    container,\\n    eventBus,\\n    linkService,\\n    renderingQueue,\\n    maxCanvasPixels,\\n    maxCanvasDim,\\n    pageColors,\\n    abortSignal,\\n    enableHWA,\\n  }) {\\n    this.container = container;\\n    this.eventBus = eventBus;\\n    this.linkService = linkService;\\n    this.renderingQueue = renderingQueue;\\n    this.maxCanvasPixels = maxCanvasPixels;\\n    this.maxCanvasDim = maxCanvasDim;\\n    this.pageColors = pageColors || null;\\n    this.enableHWA = enableHWA || false;\\n\\n    this.scroll = watchScroll(\\n      this.container,\\n      this.#scrollUpdated.bind(this),\\n      abortSignal\\n    );\\n    this.#resetView();\\n  }\\n\\n  #scrollUpdated() {\\n    this.renderingQueue.renderHighestPriority();\\n  }\\n\\n  getThumbnail(index) {\\n    return this._thumbnails[index];\\n  }\\n\\n  #getVisibleThumbs() {\\n    return getVisibleElements({\\n      scrollEl: this.container,\\n      views: this._thumbnails,\\n    });\\n  }\\n\\n  scrollThumbnailIntoView(pageNumber) {\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    const thumbnailView = this._thumbnails[pageNumber - 1];\\n\\n    if (!thumbnailView) {\\n      console.error('scrollThumbnailIntoView: Invalid \\\"pageNumber\\\" parameter.');\\n      return;\\n    }\\n\\n    if (pageNumber !== this._currentPageNumber) {\\n      const prevThumbnailView = this._thumbnails[this._currentPageNumber - 1];\\n      \u002F\u002F Remove the highlight from the previous thumbnail...\\n      prevThumbnailView.div.classList.remove(THUMBNAIL_SELECTED_CLASS);\\n      \u002F\u002F ... and add the highlight to the new thumbnail.\\n      thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS);\\n    }\\n    const { first, last, views } = this.#getVisibleThumbs();\\n\\n    \u002F\u002F If the thumbnail isn't currently visible, scroll it into view.\\n    if (views.length > 0) {\\n      let shouldScroll = false;\\n      if (pageNumber \u003C= first.id || pageNumber >= last.id) {\\n        shouldScroll = true;\\n      } else {\\n        for (const { id, percent } of views) {\\n          if (id !== pageNumber) {\\n            continue;\\n          }\\n          shouldScroll = percent \u003C 100;\\n          break;\\n        }\\n      }\\n      if (shouldScroll) {\\n        scrollIntoView(thumbnailView.div, { top: THUMBNAIL_SCROLL_MARGIN });\\n      }\\n    }\\n\\n    this._currentPageNumber = pageNumber;\\n  }\\n\\n  get pagesRotation() {\\n    return this._pagesRotation;\\n  }\\n\\n  set pagesRotation(rotation) {\\n    if (!isValidRotation(rotation)) {\\n      throw new Error(\\\"Invalid thumbnails rotation angle.\\\");\\n    }\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    if (this._pagesRotation === rotation) {\\n      return; \u002F\u002F The rotation didn't change.\\n    }\\n    this._pagesRotation = rotation;\\n\\n    const updateArgs = { rotation };\\n    for (const thumbnail of this._thumbnails) {\\n      thumbnail.update(updateArgs);\\n    }\\n  }\\n\\n  cleanup() {\\n    for (const thumbnail of this._thumbnails) {\\n      if (thumbnail.renderingState !== RenderingStates.FINISHED) {\\n        thumbnail.reset();\\n      }\\n    }\\n    TempImageFactory.destroyCanvas();\\n  }\\n\\n  #resetView() {\\n    this._thumbnails = [];\\n    this._currentPageNumber = 1;\\n    this._pageLabels = null;\\n    this._pagesRotation = 0;\\n\\n    \u002F\u002F Remove the thumbnails from the DOM.\\n    this.container.textContent = \\\"\\\";\\n  }\\n\\n  \u002F**\\n   * @param {PDFDocumentProxy} pdfDocument\\n   *\u002F\\n  setDocument(pdfDocument) {\\n    if (this.pdfDocument) {\\n      this.#cancelRendering();\\n      this.#resetView();\\n    }\\n\\n    this.pdfDocument = pdfDocument;\\n    if (!pdfDocument) {\\n      return;\\n    }\\n    const firstPagePromise = pdfDocument.getPage(1);\\n    const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig({\\n      intent: \\\"display\\\",\\n    });\\n\\n    firstPagePromise\\n      .then(firstPdfPage => {\\n        const pagesCount = pdfDocument.numPages;\\n        const viewport = firstPdfPage.getViewport({ scale: 1 });\\n\\n        for (let pageNum = 1; pageNum \u003C= pagesCount; ++pageNum) {\\n          const thumbnail = new PDFThumbnailView({\\n            container: this.container,\\n            eventBus: this.eventBus,\\n            id: pageNum,\\n            defaultViewport: viewport.clone(),\\n            optionalContentConfigPromise,\\n            linkService: this.linkService,\\n            renderingQueue: this.renderingQueue,\\n            maxCanvasPixels: this.maxCanvasPixels,\\n            maxCanvasDim: this.maxCanvasDim,\\n            pageColors: this.pageColors,\\n            enableHWA: this.enableHWA,\\n          });\\n          this._thumbnails.push(thumbnail);\\n        }\\n        \u002F\u002F Set the first `pdfPage` immediately, since it's already loaded,\\n        \u002F\u002F rather than having to repeat the `PDFDocumentProxy.getPage` call in\\n        \u002F\u002F the `this.#ensurePdfPageLoaded` method before rendering can start.\\n        this._thumbnails[0]?.setPdfPage(firstPdfPage);\\n\\n        \u002F\u002F Ensure that the current thumbnail is always highlighted on load.\\n        const thumbnailView = this._thumbnails[this._currentPageNumber - 1];\\n        thumbnailView.div.classList.add(THUMBNAIL_SELECTED_CLASS);\\n      })\\n      .catch(reason => {\\n        console.error(\\\"Unable to initialize thumbnail viewer\\\", reason);\\n      });\\n  }\\n\\n  #cancelRendering() {\\n    for (const thumbnail of this._thumbnails) {\\n      thumbnail.cancelRendering();\\n    }\\n  }\\n\\n  \u002F**\\n   * @param {Array|null} labels\\n   *\u002F\\n  setPageLabels(labels) {\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    if (!labels) {\\n      this._pageLabels = null;\\n    } else if (\\n      !(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)\\n    ) {\\n      this._pageLabels = null;\\n      console.error(\\\"PDFThumbnailViewer_setPageLabels: Invalid page labels.\\\");\\n    } else {\\n      this._pageLabels = labels;\\n    }\\n    \u002F\u002F Update all the `PDFThumbnailView` instances.\\n    for (let i = 0, ii = this._thumbnails.length; i \u003C ii; i++) {\\n      this._thumbnails[i].setPageLabel(this._pageLabels?.[i] ?? null);\\n    }\\n  }\\n\\n  \u002F**\\n   * @param {PDFThumbnailView} thumbView\\n   * @returns {Promise\u003CPDFPageProxy | null>}\\n   *\u002F\\n  async #ensurePdfPageLoaded(thumbView) {\\n    if (thumbView.pdfPage) {\\n      return thumbView.pdfPage;\\n    }\\n    try {\\n      const pdfPage = await this.pdfDocument.getPage(thumbView.id);\\n      if (!thumbView.pdfPage) {\\n        thumbView.setPdfPage(pdfPage);\\n      }\\n      return pdfPage;\\n    } catch (reason) {\\n      console.error(\\\"Unable to get page for thumb view\\\", reason);\\n      return null; \u002F\u002F Page error -- there is nothing that can be done.\\n    }\\n  }\\n\\n  #getScrollAhead(visible) {\\n    if (visible.first?.id === 1) {\\n      return true;\\n    } else if (visible.last?.id === this._thumbnails.length) {\\n      return false;\\n    }\\n    return this.scroll.down;\\n  }\\n\\n  forceRendering() {\\n    const visibleThumbs = this.#getVisibleThumbs();\\n    const scrollAhead = this.#getScrollAhead(visibleThumbs);\\n    const thumbView = this.renderingQueue.getHighestPriority(\\n      visibleThumbs,\\n      this._thumbnails,\\n      scrollAhead,\\n      \u002F* preRenderExtra *\u002F false,\\n      \u002F* ignoreDetailViews *\u002F true\\n    );\\n    if (thumbView) {\\n      this.#ensurePdfPageLoaded(thumbView).then(() => {\\n        this.renderingQueue.renderView(thumbView);\\n      });\\n      return true;\\n    }\\n    return false;\\n  }\\n}\\n\\nexport { PDFThumbnailViewer };\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fapi\\\").PDFPageProxy} PDFPageProxy *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fdisplay_utils\\\").PageViewport} PageViewport *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Feditor\u002Ftools.js\\\").AnnotationEditorUIManager} AnnotationEditorUIManager *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Ftext_accessibility.js\\\").TextAccessibilityManager} TextAccessibilityManager *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IL10n} IL10n *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fannotation_layer.js\\\").AnnotationLayer} AnnotationLayer *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fstruct_tree_layer_builder.js\\\").StructTreeLayerBuilder} StructTreeLayerBuilder *\u002F\\n\\nimport { AnnotationEditorLayer } from \\\"pdfjs-lib\\\";\\nimport { GenericL10n } from \\\"web-null_l10n\\\";\\n\\n\u002F**\\n * @typedef {Object} AnnotationEditorLayerBuilderOptions\\n * @property {AnnotationEditorUIManager} [uiManager]\\n * @property {PDFPageProxy} pdfPage\\n * @property {IL10n} [l10n]\\n * @property {StructTreeLayerBuilder} [structTreeLayer]\\n * @property {TextAccessibilityManager} [accessibilityManager]\\n * @property {AnnotationLayer} [annotationLayer]\\n * @property {TextLayer} [textLayer]\\n * @property {DrawLayer} [drawLayer]\\n * @property {function} [onAppend]\\n *\u002F\\n\\n\u002F**\\n * @typedef {Object} AnnotationEditorLayerBuilderRenderOptions\\n * @property {PageViewport} viewport\\n * @property {string} [intent] - The default value is \\\"display\\\".\\n *\u002F\\n\\nclass AnnotationEditorLayerBuilder {\\n  #annotationLayer = null;\\n\\n  #drawLayer = null;\\n\\n  #onAppend = null;\\n\\n  #structTreeLayer = null;\\n\\n  #textLayer = null;\\n\\n  #uiManager;\\n\\n  \u002F**\\n   * @param {AnnotationEditorLayerBuilderOptions} options\\n   *\u002F\\n  constructor(options) {\\n    this.pdfPage = options.pdfPage;\\n    this.accessibilityManager = options.accessibilityManager;\\n    this.l10n = options.l10n;\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      this.l10n ||= new GenericL10n();\\n    }\\n    this.annotationEditorLayer = null;\\n    this.div = null;\\n    this._cancelled = false;\\n    this.#uiManager = options.uiManager;\\n    this.#annotationLayer = options.annotationLayer || null;\\n    this.#textLayer = options.textLayer || null;\\n    this.#drawLayer = options.drawLayer || null;\\n    this.#onAppend = options.onAppend || null;\\n    this.#structTreeLayer = options.structTreeLayer || null;\\n  }\\n\\n  \u002F**\\n   * @param {AnnotationEditorLayerBuilderRenderOptions} options\\n   * @returns {Promise\u003Cvoid>}\\n   *\u002F\\n  async render({ viewport, intent = \\\"display\\\" }) {\\n    if (intent !== \\\"display\\\") {\\n      return;\\n    }\\n\\n    if (this._cancelled) {\\n      return;\\n    }\\n\\n    const clonedViewport = viewport.clone({ dontFlip: true });\\n    if (this.div) {\\n      this.annotationEditorLayer.update({ viewport: clonedViewport });\\n      this.show();\\n      return;\\n    }\\n\\n    \u002F\u002F Create an AnnotationEditor layer div\\n    const div = (this.div = document.createElement(\\\"div\\\"));\\n    div.className = \\\"annotationEditorLayer\\\";\\n    div.hidden = true;\\n    div.dir = this.#uiManager.direction;\\n    this.#onAppend?.(div);\\n\\n    this.annotationEditorLayer = new AnnotationEditorLayer({\\n      uiManager: this.#uiManager,\\n      div,\\n      structTreeLayer: this.#structTreeLayer,\\n      accessibilityManager: this.accessibilityManager,\\n      pageIndex: this.pdfPage.pageNumber - 1,\\n      l10n: this.l10n,\\n      viewport: clonedViewport,\\n      annotationLayer: this.#annotationLayer,\\n      textLayer: this.#textLayer,\\n      drawLayer: this.#drawLayer,\\n    });\\n\\n    const parameters = {\\n      viewport: clonedViewport,\\n      div,\\n      annotations: null,\\n      intent,\\n    };\\n\\n    this.annotationEditorLayer.render(parameters);\\n    this.show();\\n  }\\n\\n  cancel() {\\n    this._cancelled = true;\\n\\n    if (!this.div) {\\n      return;\\n    }\\n    this.annotationEditorLayer.destroy();\\n  }\\n\\n  hide() {\\n    if (!this.div) {\\n      return;\\n    }\\n    this.annotationEditorLayer.pause(\u002F* on *\u002F true);\\n    this.div.hidden = true;\\n  }\\n\\n  show() {\\n    if (!this.div || this.annotationEditorLayer.isInvisible) {\\n      return;\\n    }\\n    this.div.hidden = false;\\n    this.annotationEditorLayer.pause(\u002F* on *\u002F false);\\n  }\\n}\\n\\nexport { AnnotationEditorLayerBuilder };\\n\",\"\u002F* Copyright 2014 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fapi\\\").PDFPageProxy} PDFPageProxy *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fdisplay_utils\\\").PageViewport} PageViewport *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fannotation_storage\\\").AnnotationStorage} AnnotationStorage *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IDownloadManager} IDownloadManager *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IPDFLinkService} IPDFLinkService *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fstruct_tree_layer_builder.js\\\").StructTreeLayerBuilder} StructTreeLayerBuilder *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Ftext_accessibility.js\\\").TextAccessibilityManager} TextAccessibilityManager *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Feditor\u002Ftools.js\\\").AnnotationEditorUIManager} AnnotationEditorUIManager *\u002F\\n\\nimport {\\n  AnnotationLayer,\\n  AnnotationType,\\n  setLayerDimensions,\\n  Util,\\n} from \\\"pdfjs-lib\\\";\\nimport { PresentationModeState } from \\\".\u002Fui_utils.js\\\";\\n\\n\u002F**\\n * @typedef {Object} AnnotationLayerBuilderOptions\\n * @property {PDFPageProxy} pdfPage\\n * @property {AnnotationStorage} [annotationStorage]\\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\\n *   for annotation icons. Include trailing slash.\\n * @property {boolean} renderForms\\n * @property {IPDFLinkService} linkService\\n * @property {IDownloadManager} [downloadManager]\\n * @property {boolean} [enableScripting]\\n * @property {Promise\u003Cboolean>} [hasJSActionsPromise]\\n * @property {Promise\u003CObject\u003Cstring, Array\u003CObject>> | null>}\\n *   [fieldObjectsPromise]\\n * @property {Map\u003Cstring, HTMLCanvasElement>} [annotationCanvasMap]\\n * @property {TextAccessibilityManager} [accessibilityManager]\\n * @property {AnnotationEditorUIManager} [annotationEditorUIManager]\\n * @property {function} [onAppend]\\n *\u002F\\n\\n\u002F**\\n * @typedef {Object} AnnotationLayerBuilderRenderOptions\\n * @property {PageViewport} viewport\\n * @property {string} [intent] - The default value is \\\"display\\\".\\n * @property {StructTreeLayerBuilder} [structTreeLayer]\\n *\u002F\\n\\n\u002F**\\n * @typedef {Object} InjectLinkAnnotationsOptions\\n * @property {Array\u003CObject>} inferredLinks\\n * @property {PageViewport} viewport\\n * @property {StructTreeLayerBuilder} [structTreeLayer]\\n *\u002F\\n\\nclass AnnotationLayerBuilder {\\n  #annotations = null;\\n\\n  #externalHide = false;\\n\\n  #onAppend = null;\\n\\n  #eventAbortController = null;\\n\\n  #linksInjected = false;\\n\\n  \u002F**\\n   * @param {AnnotationLayerBuilderOptions} options\\n   *\u002F\\n  constructor({\\n    pdfPage,\\n    linkService,\\n    downloadManager,\\n    annotationStorage = null,\\n    imageResourcesPath = \\\"\\\",\\n    renderForms = true,\\n    enableScripting = false,\\n    hasJSActionsPromise = null,\\n    fieldObjectsPromise = null,\\n    annotationCanvasMap = null,\\n    accessibilityManager = null,\\n    annotationEditorUIManager = null,\\n    onAppend = null,\\n  }) {\\n    this.pdfPage = pdfPage;\\n    this.linkService = linkService;\\n    this.downloadManager = downloadManager;\\n    this.imageResourcesPath = imageResourcesPath;\\n    this.renderForms = renderForms;\\n    this.annotationStorage = annotationStorage;\\n    this.enableScripting = enableScripting;\\n    this._hasJSActionsPromise = hasJSActionsPromise || Promise.resolve(false);\\n    this._fieldObjectsPromise = fieldObjectsPromise || Promise.resolve(null);\\n    this._annotationCanvasMap = annotationCanvasMap;\\n    this._accessibilityManager = accessibilityManager;\\n    this._annotationEditorUIManager = annotationEditorUIManager;\\n    this.#onAppend = onAppend;\\n\\n    this.annotationLayer = null;\\n    this.div = null;\\n    this._cancelled = false;\\n    this._eventBus = linkService.eventBus;\\n  }\\n\\n  \u002F**\\n   * @param {AnnotationLayerBuilderRenderOptions} options\\n   * @returns {Promise\u003Cvoid>} A promise that is resolved when rendering of the\\n   *   annotations is complete.\\n   *\u002F\\n  async render({ viewport, intent = \\\"display\\\", structTreeLayer = null }) {\\n    if (this.div) {\\n      if (this._cancelled || !this.annotationLayer) {\\n        return;\\n      }\\n      \u002F\u002F If an annotationLayer already exists, refresh its children's\\n      \u002F\u002F transformation matrices.\\n      this.annotationLayer.update({\\n        viewport: viewport.clone({ dontFlip: true }),\\n      });\\n      return;\\n    }\\n\\n    const [annotations, hasJSActions, fieldObjects] = await Promise.all([\\n      this.pdfPage.getAnnotations({ intent }),\\n      this._hasJSActionsPromise,\\n      this._fieldObjectsPromise,\\n    ]);\\n    if (this._cancelled) {\\n      return;\\n    }\\n\\n    \u002F\u002F Create an annotation layer div and render the annotations\\n    \u002F\u002F if there is at least one annotation.\\n    const div = (this.div = document.createElement(\\\"div\\\"));\\n    div.className = \\\"annotationLayer\\\";\\n    this.#onAppend?.(div);\\n\\n    if (annotations.length === 0) {\\n      this.#annotations = annotations;\\n\\n      this.hide(\u002F* internal = *\u002F true);\\n      return;\\n    }\\n\\n    this.#initAnnotationLayer(viewport, structTreeLayer);\\n\\n    await this.annotationLayer.render({\\n      annotations,\\n      imageResourcesPath: this.imageResourcesPath,\\n      renderForms: this.renderForms,\\n      linkService: this.linkService,\\n      downloadManager: this.downloadManager,\\n      annotationStorage: this.annotationStorage,\\n      enableScripting: this.enableScripting,\\n      hasJSActions,\\n      fieldObjects,\\n    });\\n\\n    this.#annotations = annotations;\\n\\n    \u002F\u002F Ensure that interactive form elements in the annotationLayer are\\n    \u002F\u002F disabled while PresentationMode is active (see issue 12232).\\n    if (this.linkService.isInPresentationMode) {\\n      this.#updatePresentationModeState(PresentationModeState.FULLSCREEN);\\n    }\\n    if (!this.#eventAbortController) {\\n      this.#eventAbortController = new AbortController();\\n\\n      this._eventBus?._on(\\n        \\\"presentationmodechanged\\\",\\n        evt => {\\n          this.#updatePresentationModeState(evt.state);\\n        },\\n        { signal: this.#eventAbortController.signal }\\n      );\\n    }\\n  }\\n\\n  #initAnnotationLayer(viewport, structTreeLayer) {\\n    this.annotationLayer = new AnnotationLayer({\\n      div: this.div,\\n      accessibilityManager: this._accessibilityManager,\\n      annotationCanvasMap: this._annotationCanvasMap,\\n      annotationEditorUIManager: this._annotationEditorUIManager,\\n      page: this.pdfPage,\\n      viewport: viewport.clone({ dontFlip: true }),\\n      structTreeLayer,\\n    });\\n  }\\n\\n  cancel() {\\n    this._cancelled = true;\\n\\n    this.#eventAbortController?.abort();\\n    this.#eventAbortController = null;\\n  }\\n\\n  hide(internal = false) {\\n    this.#externalHide = !internal;\\n    if (!this.div) {\\n      return;\\n    }\\n    this.div.hidden = true;\\n  }\\n\\n  hasEditableAnnotations() {\\n    return !!this.annotationLayer?.hasEditableAnnotations();\\n  }\\n\\n  \u002F**\\n   * @param {InjectLinkAnnotationsOptions} options\\n   * @returns {Promise\u003Cvoid>} A promise that is resolved when the inferred links\\n   *   are added to the annotation layer.\\n   *\u002F\\n  async injectLinkAnnotations({\\n    inferredLinks,\\n    viewport,\\n    structTreeLayer = null,\\n  }) {\\n    if (this.#annotations === null) {\\n      throw new Error(\\n        \\\"`render` method must be called before `injectLinkAnnotations`.\\\"\\n      );\\n    }\\n    if (this._cancelled || this.#linksInjected) {\\n      return;\\n    }\\n    this.#linksInjected = true;\\n\\n    const newLinks = this.#annotations.length\\n      ? this.#checkInferredLinks(inferredLinks)\\n      : inferredLinks;\\n\\n    if (!newLinks.length) {\\n      return;\\n    }\\n\\n    if (!this.annotationLayer) {\\n      this.#initAnnotationLayer(viewport, structTreeLayer);\\n      setLayerDimensions(this.div, viewport);\\n    }\\n\\n    await this.annotationLayer.addLinkAnnotations(newLinks, this.linkService);\\n    \u002F\u002F Don't show the annotation layer if it was explicitly hidden previously.\\n    if (!this.#externalHide) {\\n      this.div.hidden = false;\\n    }\\n  }\\n\\n  #updatePresentationModeState(state) {\\n    if (!this.div) {\\n      return;\\n    }\\n    let disableFormElements = false;\\n\\n    switch (state) {\\n      case PresentationModeState.FULLSCREEN:\\n        disableFormElements = true;\\n        break;\\n      case PresentationModeState.NORMAL:\\n        break;\\n      default:\\n        return;\\n    }\\n    for (const section of this.div.childNodes) {\\n      if (section.hasAttribute(\\\"data-internal-link\\\")) {\\n        continue;\\n      }\\n      section.inert = disableFormElements;\\n    }\\n  }\\n\\n  #checkInferredLinks(inferredLinks) {\\n    function annotationRects(annot) {\\n      if (!annot.quadPoints) {\\n        return [annot.rect];\\n      }\\n      const rects = [];\\n      for (let i = 2, ii = annot.quadPoints.length; i \u003C ii; i += 8) {\\n        const trX = annot.quadPoints[i];\\n        const trY = annot.quadPoints[i + 1];\\n        const blX = annot.quadPoints[i + 2];\\n        const blY = annot.quadPoints[i + 3];\\n        rects.push([blX, blY, trX, trY]);\\n      }\\n      return rects;\\n    }\\n\\n    function intersectAnnotations(annot1, annot2) {\\n      const intersections = [];\\n      const annot1Rects = annotationRects(annot1);\\n      const annot2Rects = annotationRects(annot2);\\n      for (const rect1 of annot1Rects) {\\n        for (const rect2 of annot2Rects) {\\n          const intersection = Util.intersect(rect1, rect2);\\n          if (intersection) {\\n            intersections.push(intersection);\\n          }\\n        }\\n      }\\n      return intersections;\\n    }\\n\\n    function areaRects(rects) {\\n      let totalArea = 0;\\n      for (const rect of rects) {\\n        totalArea += Math.abs((rect[2] - rect[0]) * (rect[3] - rect[1]));\\n      }\\n      return totalArea;\\n    }\\n\\n    return inferredLinks.filter(link => {\\n      let linkAreaRects;\\n\\n      for (const annotation of this.#annotations) {\\n        if (\\n          annotation.annotationType !== AnnotationType.LINK ||\\n          !annotation.url\\n        ) {\\n          continue;\\n        }\\n        \u002F\u002F TODO: Add a test case to verify that we can find the intersection\\n        \u002F\u002F       between two annotations with quadPoints properly.\\n        const intersections = intersectAnnotations(annotation, link);\\n\\n        if (intersections.length === 0) {\\n          continue;\\n        }\\n        linkAreaRects ??= areaRects(annotationRects(link));\\n\\n        if (\\n          areaRects(intersections) \u002F linkAreaRects >\\n          0.5 \u002F* If the overlap is more than 50%. *\u002F\\n        ) {\\n          return false;\\n        }\\n      }\\n      return true;\\n    });\\n  }\\n}\\n\\nexport { AnnotationLayerBuilder };\\n\",\"\u002F* Copyright 2025 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { AnnotationType, createValidAbsoluteUrl, Util } from \\\"pdfjs-lib\\\";\\nimport { getOriginalIndex, normalize } from \\\".\u002Fpdf_find_controller.js\\\";\\n\\nfunction DOMRectToPDF({ width, height, left, top }, pdfPageView) {\\n  if (width === 0 || height === 0) {\\n    return null;\\n  }\\n\\n  const pageBox = pdfPageView.textLayer.div.getBoundingClientRect();\\n  const bottomLeft = pdfPageView.getPagePoint(\\n    left - pageBox.left,\\n    top - pageBox.top\\n  );\\n  const topRight = pdfPageView.getPagePoint(\\n    left - pageBox.left + width,\\n    top - pageBox.top + height\\n  );\\n\\n  return Util.normalizeRect([\\n    bottomLeft[0],\\n    bottomLeft[1],\\n    topRight[0],\\n    topRight[1],\\n  ]);\\n}\\n\\nfunction calculateLinkPosition(range, pdfPageView) {\\n  const rangeRects = range.getClientRects();\\n  if (rangeRects.length === 1) {\\n    return { rect: DOMRectToPDF(rangeRects[0], pdfPageView) };\\n  }\\n\\n  const rect = [Infinity, Infinity, -Infinity, -Infinity];\\n  const quadPoints = [];\\n  let i = 0;\\n  for (const domRect of rangeRects) {\\n    const normalized = DOMRectToPDF(domRect, pdfPageView);\\n    if (normalized === null) {\\n      continue;\\n    }\\n\\n    quadPoints[i] = quadPoints[i + 4] = normalized[0];\\n    quadPoints[i + 1] = quadPoints[i + 3] = normalized[3];\\n    quadPoints[i + 2] = quadPoints[i + 6] = normalized[2];\\n    quadPoints[i + 5] = quadPoints[i + 7] = normalized[1];\\n\\n    Util.rectBoundingBox(...normalized, rect);\\n    i += 8;\\n  }\\n  return { quadPoints, rect };\\n}\\n\\n\u002F**\\n * Given a DOM node `container` and an index into its text contents `offset`,\\n * returns a pair consisting of text node that the `offset` actually points\\n * to, together with the offset relative to that text node.\\n * When the offset points at the boundary between two node, the result will\\n * point to the first text node in depth-first traversal order.\\n *\\n * For example, given this DOM:\\n * \u003Cp>abc\u003Cspan>def\u003C\u002Fspan>ghi\u003C\u002Fp>\\n *\\n * textPosition(p, 0) -> [#text \\\"abc\\\", 0] (before `a`)\\n * textPosition(p, 2) -> [#text \\\"abc\\\", 2] (between `b` and `c`)\\n * textPosition(p, 3) -> [#text \\\"abc\\\", 3] (after `c`)\\n * textPosition(p, 5) -> [#text \\\"def\\\", 2] (between `e` and `f`)\\n * textPosition(p, 6) -> [#text \\\"def\\\", 3] (after `f`)\\n *\u002F\\nfunction textPosition(container, offset) {\\n  let currentContainer = container;\\n  do {\\n    if (currentContainer.nodeType === Node.TEXT_NODE) {\\n      const currentLength = currentContainer.textContent.length;\\n      if (offset \u003C= currentLength) {\\n        return [currentContainer, offset];\\n      }\\n      offset -= currentLength;\\n    } else if (currentContainer.firstChild) {\\n      currentContainer = currentContainer.firstChild;\\n      continue;\\n    }\\n\\n    while (!currentContainer.nextSibling && currentContainer !== container) {\\n      currentContainer = currentContainer.parentNode;\\n    }\\n    if (currentContainer !== container) {\\n      currentContainer = currentContainer.nextSibling;\\n    }\\n  } while (currentContainer !== container);\\n  throw new Error(\\\"Offset is bigger than container's contents length.\\\");\\n}\\n\\nfunction createLinkAnnotation({ url, index, length }, pdfPageView, id) {\\n  const highlighter = pdfPageView._textHighlighter;\\n  const [{ begin, end }] = highlighter._convertMatches([index], [length]);\\n\\n  const range = new Range();\\n  range.setStart(\\n    ...textPosition(highlighter.textDivs[begin.divIdx], begin.offset)\\n  );\\n  range.setEnd(...textPosition(highlighter.textDivs[end.divIdx], end.offset));\\n\\n  return {\\n    id: `inferred_link_${id}`,\\n    unsafeUrl: url,\\n    url,\\n    annotationType: AnnotationType.LINK,\\n    rotation: 0,\\n    ...calculateLinkPosition(range, pdfPageView),\\n    \u002F\u002F Populated in the annotationLayer to avoid unnecessary object creation,\\n    \u002F\u002F since most inferred links overlap existing LinkAnnotations:\\n    borderStyle: null,\\n  };\\n}\\n\\nclass Autolinker {\\n  static #index = 0;\\n\\n  static #regex;\\n\\n  static findLinks(text) {\\n    \u002F\u002F Regex can be tested and verified at https:\u002F\u002Fregex101.com\u002Fr\u002FrXoLiT\u002F2.\\n    this.#regex ??=\\n      \u002F\\\\b(?:https?:\\\\\u002F\\\\\u002F|mailto:|www\\\\.)(?:[\\\\S--[\\\\p{P}\u003C>]]|\\\\\u002F|[\\\\S--[\\\\[\\\\]]]+[\\\\S--[\\\\p{P}\u003C>]])+|\\\\b[\\\\S--[@\\\\p{Ps}\\\\p{Pe}\u003C>]]+@([\\\\S--[\\\\p{P}\u003C>]]+(?:\\\\.[\\\\S--[\\\\p{P}\u003C>]]+)+)\u002Fgmv;\\n\\n    const [normalizedText, diffs] = normalize(text);\\n    const matches = normalizedText.matchAll(this.#regex);\\n    const links = [];\\n    for (const match of matches) {\\n      const [url, emailDomain] = match;\\n      let raw;\\n      if (\\n        url.startsWith(\\\"www.\\\") ||\\n        url.startsWith(\\\"http:\u002F\u002F\\\") ||\\n        url.startsWith(\\\"https:\u002F\u002F\\\")\\n      ) {\\n        raw = url;\\n      } else if (URL.canParse(`http:\u002F\u002F${emailDomain}`)) {\\n        raw = url.startsWith(\\\"mailto:\\\") ? url : `mailto:${url}`;\\n      } else {\\n        continue;\\n      }\\n      const absoluteURL = createValidAbsoluteUrl(raw, null, {\\n        addDefaultProtocol: true,\\n      });\\n      if (absoluteURL) {\\n        const [index, length] = getOriginalIndex(\\n          diffs,\\n          match.index,\\n          url.length\\n        );\\n        links.push({ url: absoluteURL.href, index, length });\\n      }\\n    }\\n    return links;\\n  }\\n\\n  static processLinks(pdfPageView) {\\n    return this.findLinks(\\n      pdfPageView._textHighlighter.textContentItemsStr.join(\\\"\\\\n\\\")\\n    ).map(link => createLinkAnnotation(link, pdfPageView, this.#index++));\\n  }\\n}\\n\\nexport { Autolinker };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { RenderingCancelledException } from \\\"pdfjs-lib\\\";\\nimport { RenderingStates } from \\\".\u002Fui_utils.js\\\";\\n\\nclass BasePDFPageView {\\n  #enableHWA = false;\\n\\n  #loadingId = null;\\n\\n  #minDurationToUpdateCanvas = 0;\\n\\n  #renderError = null;\\n\\n  #renderingState = RenderingStates.INITIAL;\\n\\n  #showCanvas = null;\\n\\n  #startTime = 0;\\n\\n  #tempCanvas = null;\\n\\n  canvas = null;\\n\\n  \u002F** @type {null | HTMLDivElement} *\u002F\\n  div = null;\\n\\n  eventBus = null;\\n\\n  id = null;\\n\\n  pageColors = null;\\n\\n  renderingQueue = null;\\n\\n  renderTask = null;\\n\\n  resume = null;\\n\\n  constructor(options) {\\n    this.#enableHWA =\\n      #enableHWA in options ? options.#enableHWA : options.enableHWA || false;\\n    this.eventBus = options.eventBus;\\n    this.id = options.id;\\n    this.pageColors = options.pageColors || null;\\n    this.renderingQueue = options.renderingQueue;\\n    this.#minDurationToUpdateCanvas = options.minDurationToUpdateCanvas ?? 500;\\n  }\\n\\n  get renderingState() {\\n    return this.#renderingState;\\n  }\\n\\n  set renderingState(state) {\\n    if (state === this.#renderingState) {\\n      return;\\n    }\\n    this.#renderingState = state;\\n\\n    if (this.#loadingId) {\\n      clearTimeout(this.#loadingId);\\n      this.#loadingId = null;\\n    }\\n\\n    switch (state) {\\n      case RenderingStates.PAUSED:\\n        this.div.classList.remove(\\\"loading\\\");\\n        \u002F\u002F Display the canvas as it has been drawn.\\n        this.#startTime = 0;\\n        this.#showCanvas?.(false);\\n        break;\\n      case RenderingStates.RUNNING:\\n        this.div.classList.add(\\\"loadingIcon\\\");\\n        this.#loadingId = setTimeout(() => {\\n          \u002F\u002F Adding the loading class is slightly postponed in order to not have\\n          \u002F\u002F it with loadingIcon.\\n          \u002F\u002F If we don't do that the visibility of the background is changed but\\n          \u002F\u002F the transition isn't triggered.\\n          this.div.classList.add(\\\"loading\\\");\\n          this.#loadingId = null;\\n        }, 0);\\n        this.#startTime = Date.now();\\n        break;\\n      case RenderingStates.INITIAL:\\n      case RenderingStates.FINISHED:\\n        this.div.classList.remove(\\\"loadingIcon\\\", \\\"loading\\\");\\n        this.#startTime = 0;\\n        break;\\n    }\\n  }\\n\\n  _createCanvas(onShow, hideUntilComplete = false) {\\n    const { pageColors } = this;\\n    const hasHCM = !!(pageColors?.background && pageColors?.foreground);\\n    const prevCanvas = this.canvas;\\n\\n    \u002F\u002F In HCM, a final filter is applied on the canvas which means that\\n    \u002F\u002F before it's applied we've normal colors. Consequently, to avoid to\\n    \u002F\u002F have a final flash we just display it once all the drawing is done.\\n    const updateOnFirstShow = !prevCanvas && !hasHCM && !hideUntilComplete;\\n\\n    let canvas = (this.canvas = document.createElement(\\\"canvas\\\"));\\n\\n    this.#showCanvas = isLastShow => {\\n      if (updateOnFirstShow) {\\n        let tempCanvas = this.#tempCanvas;\\n        if (!isLastShow && this.#minDurationToUpdateCanvas > 0) {\\n          \u002F\u002F We draw on the canvas at 60fps (in using `requestAnimationFrame`),\\n          \u002F\u002F so if the canvas is large, updating it at 60fps can be a way too\\n          \u002F\u002F much and can cause some serious performance issues.\\n          \u002F\u002F To avoid that we only update the canvas every\\n          \u002F\u002F `this.#minDurationToUpdateCanvas` ms.\\n\\n          if (Date.now() - this.#startTime \u003C this.#minDurationToUpdateCanvas) {\\n            return;\\n          }\\n          if (!tempCanvas) {\\n            tempCanvas = this.#tempCanvas = canvas;\\n            canvas = this.canvas = canvas.cloneNode(false);\\n            onShow(canvas);\\n          }\\n        }\\n\\n        if (tempCanvas) {\\n          const ctx = canvas.getContext(\\\"2d\\\", {\\n            alpha: false,\\n          });\\n          ctx.drawImage(tempCanvas, 0, 0);\\n          if (isLastShow) {\\n            this.#resetTempCanvas();\\n          } else {\\n            this.#startTime = Date.now();\\n          }\\n          return;\\n        }\\n\\n        \u002F\u002F Don't add the canvas until the first draw callback, or until\\n        \u002F\u002F drawing is complete when `!this.renderingQueue`, to prevent black\\n        \u002F\u002F flickering.\\n        onShow(canvas);\\n        this.#showCanvas = null;\\n        return;\\n      }\\n      if (!isLastShow) {\\n        return;\\n      }\\n\\n      if (prevCanvas) {\\n        prevCanvas.replaceWith(canvas);\\n        prevCanvas.width = prevCanvas.height = 0;\\n      } else {\\n        onShow(canvas);\\n      }\\n    };\\n\\n    const ctx = canvas.getContext(\\\"2d\\\", {\\n      alpha: false,\\n      willReadFrequently: !this.#enableHWA,\\n    });\\n\\n    return { canvas, prevCanvas, ctx };\\n  }\\n\\n  #renderContinueCallback = cont => {\\n    this.#showCanvas?.(false);\\n    if (this.renderingQueue && !this.renderingQueue.isHighestPriority(this)) {\\n      this.renderingState = RenderingStates.PAUSED;\\n      this.resume = () => {\\n        this.renderingState = RenderingStates.RUNNING;\\n        cont();\\n      };\\n      return;\\n    }\\n    cont();\\n  };\\n\\n  _resetCanvas() {\\n    const { canvas } = this;\\n    if (!canvas) {\\n      return;\\n    }\\n    canvas.remove();\\n    canvas.width = canvas.height = 0;\\n    this.canvas = null;\\n    this.#resetTempCanvas();\\n  }\\n\\n  #resetTempCanvas() {\\n    if (this.#tempCanvas) {\\n      this.#tempCanvas.width = this.#tempCanvas.height = 0;\\n      this.#tempCanvas = null;\\n    }\\n  }\\n\\n  async _drawCanvas(options, onCancel, onFinish) {\\n    const renderTask = (this.renderTask = this.pdfPage.render(options));\\n    renderTask.onContinue = this.#renderContinueCallback;\\n    renderTask.onError = error => {\\n      if (error instanceof RenderingCancelledException) {\\n        onCancel();\\n        this.#renderError = null;\\n      }\\n    };\\n\\n    let error = null;\\n    try {\\n      await renderTask.promise;\\n      this.#showCanvas?.(true);\\n    } catch (e) {\\n      \u002F\u002F When zooming with a `drawingDelay` set, avoid temporarily showing\\n      \u002F\u002F a black canvas if rendering was cancelled before the `onContinue`-\\n      \u002F\u002F callback had been invoked at least once.\\n      if (e instanceof RenderingCancelledException) {\\n        return;\\n      }\\n      error = e;\\n\\n      this.#showCanvas?.(true);\\n    } finally {\\n      this.#renderError = error;\\n\\n      \u002F\u002F The renderTask may have been replaced by a new one, so only remove\\n      \u002F\u002F the reference to the renderTask if it matches the one that is\\n      \u002F\u002F triggering this callback.\\n      if (renderTask === this.renderTask) {\\n        this.renderTask = null;\\n      }\\n    }\\n    this.renderingState = RenderingStates.FINISHED;\\n\\n    onFinish(renderTask);\\n\\n    if (error) {\\n      throw error;\\n    }\\n  }\\n\\n  cancelRendering({ cancelExtraDelay = 0 } = {}) {\\n    if (this.renderTask) {\\n      this.renderTask.cancel(cancelExtraDelay);\\n      this.renderTask = null;\\n    }\\n    this.resume = null;\\n  }\\n\\n  dispatchPageRender() {\\n    this.eventBus.dispatch(\\\"pagerender\\\", {\\n      source: this,\\n      pageNumber: this.id,\\n    });\\n  }\\n\\n  dispatchPageRendered(cssTransform, isDetailView) {\\n    this.eventBus.dispatch(\\\"pagerendered\\\", {\\n      source: this,\\n      pageNumber: this.id,\\n      cssTransform,\\n      isDetailView,\\n      timestamp: performance.now(),\\n      error: this.#renderError,\\n    });\\n  }\\n}\\n\\nexport { BasePDFPageView };\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { DrawLayer } from \\\"pdfjs-lib\\\";\\n\\n\u002F**\\n * @typedef {Object} DrawLayerBuilderOptions\\n * @property {number} pageIndex\\n *\u002F\\n\\n\u002F**\\n * @typedef {Object} DrawLayerBuilderRenderOptions\\n * @property {string} [intent] - The default value is \\\"display\\\".\\n *\u002F\\n\\nclass DrawLayerBuilder {\\n  #drawLayer = null;\\n\\n  \u002F**\\n   * @param {DrawLayerBuilderOptions} options\\n   *\u002F\\n  constructor(options) {\\n    this.pageIndex = options.pageIndex;\\n  }\\n\\n  \u002F**\\n   * @param {DrawLayerBuilderRenderOptions} options\\n   * @returns {Promise\u003Cvoid>}\\n   *\u002F\\n  async render({ intent = \\\"display\\\" }) {\\n    if (intent !== \\\"display\\\" || this.#drawLayer || this._cancelled) {\\n      return;\\n    }\\n    this.#drawLayer = new DrawLayer({\\n      pageIndex: this.pageIndex,\\n    });\\n  }\\n\\n  cancel() {\\n    this._cancelled = true;\\n\\n    if (!this.#drawLayer) {\\n      return;\\n    }\\n    this.#drawLayer.destroy();\\n    this.#drawLayer = null;\\n  }\\n\\n  setParent(parent) {\\n    this.#drawLayer?.setParent(parent);\\n  }\\n\\n  getDrawLayer() {\\n    return this.#drawLayer;\\n  }\\n}\\n\\nexport { DrawLayerBuilder };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { BasePDFPageView } from \\\".\u002Fbase_pdf_page_view.js\\\";\\nimport { OutputScale } from \\\"pdfjs-lib\\\";\\nimport { RenderingStates } from \\\".\u002Fui_utils.js\\\";\\n\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IRenderableView} IRenderableView *\u002F\\n\\n\u002F**\\n * @implements {IRenderableView}\\n *\u002F\\nclass PDFPageDetailView extends BasePDFPageView {\\n  #detailArea = null;\\n\\n  \u002F**\\n   * @type {boolean} True when the last rendering attempt of the view was\\n   *                 cancelled due to a `.reset()` call. This will happen when\\n   *                 the visible area changes so much during the rendering that\\n   *                 we need to cancel the rendering and start over.\\n   *\u002F\\n  renderingCancelled = false;\\n\\n  constructor({ pageView }) {\\n    super(pageView);\\n\\n    this.pageView = pageView;\\n    this.renderingId = \\\"detail\\\" + this.id;\\n\\n    this.div = pageView.div;\\n  }\\n\\n  setPdfPage(pdfPage) {\\n    this.pageView.setPdfPage(pdfPage);\\n  }\\n\\n  get pdfPage() {\\n    return this.pageView.pdfPage;\\n  }\\n\\n  get renderingState() {\\n    return super.renderingState;\\n  }\\n\\n  set renderingState(value) {\\n    this.renderingCancelled = false;\\n    super.renderingState = value;\\n  }\\n\\n  reset({ keepCanvas = false } = {}) {\\n    const renderingCancelled =\\n      this.renderingCancelled ||\\n      this.renderingState === RenderingStates.RUNNING ||\\n      this.renderingState === RenderingStates.PAUSED;\\n    this.cancelRendering();\\n    this.renderingState = RenderingStates.INITIAL;\\n    this.renderingCancelled = renderingCancelled;\\n\\n    if (!keepCanvas) {\\n      this._resetCanvas();\\n    }\\n  }\\n\\n  #shouldRenderDifferentArea(visibleArea) {\\n    if (!this.#detailArea) {\\n      return true;\\n    }\\n\\n    const minDetailX = this.#detailArea.minX;\\n    const minDetailY = this.#detailArea.minY;\\n    const maxDetailX = this.#detailArea.width + minDetailX;\\n    const maxDetailY = this.#detailArea.height + minDetailY;\\n\\n    if (\\n      visibleArea.minX \u003C minDetailX ||\\n      visibleArea.minY \u003C minDetailY ||\\n      visibleArea.maxX > maxDetailX ||\\n      visibleArea.maxY > maxDetailY\\n    ) {\\n      return true;\\n    }\\n\\n    const {\\n      width: maxWidth,\\n      height: maxHeight,\\n      scale,\\n    } = this.pageView.viewport;\\n\\n    if (this.#detailArea.scale !== scale) {\\n      return true;\\n    }\\n\\n    const paddingLeftSize = visibleArea.minX - minDetailX;\\n    const paddingRightSize = maxDetailX - visibleArea.maxX;\\n    const paddingTopSize = visibleArea.minY - minDetailY;\\n    const paddingBottomSize = maxDetailY - visibleArea.maxY;\\n\\n    \u002F\u002F If the user is moving in any direction such that the remaining area\\n    \u002F\u002F rendered outside of the screen is less than MOVEMENT_THRESHOLD of the\\n    \u002F\u002F padding we render on each side, trigger a re-render. This is so that if\\n    \u002F\u002F the user then keeps scrolling in that direction, we have a chance of\\n    \u002F\u002F finishing rendering the new detail before they get past the rendered\\n    \u002F\u002F area.\\n\\n    const MOVEMENT_THRESHOLD = 0.5;\\n    const ratio = (1 + MOVEMENT_THRESHOLD) \u002F MOVEMENT_THRESHOLD;\\n\\n    if (\\n      (minDetailX > 0 && paddingRightSize \u002F paddingLeftSize > ratio) ||\\n      (maxDetailX \u003C maxWidth && paddingLeftSize \u002F paddingRightSize > ratio) ||\\n      (minDetailY > 0 && paddingBottomSize \u002F paddingTopSize > ratio) ||\\n      (maxDetailY \u003C maxHeight && paddingTopSize \u002F paddingBottomSize > ratio)\\n    ) {\\n      return true;\\n    }\\n\\n    return false;\\n  }\\n\\n  update({ visibleArea = null, underlyingViewUpdated = false } = {}) {\\n    if (underlyingViewUpdated) {\\n      this.cancelRendering();\\n      this.renderingState = RenderingStates.INITIAL;\\n      return;\\n    }\\n\\n    if (!this.#shouldRenderDifferentArea(visibleArea)) {\\n      return;\\n    }\\n\\n    const { viewport, maxCanvasPixels, capCanvasAreaFactor } = this.pageView;\\n\\n    const visibleWidth = visibleArea.maxX - visibleArea.minX;\\n    const visibleHeight = visibleArea.maxY - visibleArea.minY;\\n\\n    \u002F\u002F \\\"overflowScale\\\" represents which percentage of the width and of the\\n    \u002F\u002F height the detail area extends outside of the visible area. We want to\\n    \u002F\u002F draw a larger area so that we don't have to constantly re-draw while\\n    \u002F\u002F scrolling. The detail area's dimensions thus become\\n    \u002F\u002F visibleLength * (2 * overflowScale + 1).\\n    \u002F\u002F We default to adding a whole height\u002Flength of detail area on each side,\\n    \u002F\u002F but we can reduce it to make sure that we stay within the maxCanvasPixels\\n    \u002F\u002F limit.\\n    const visiblePixels =\\n      visibleWidth * visibleHeight * OutputScale.pixelRatio ** 2;\\n    const maxDetailToVisibleLinearRatio = Math.sqrt(\\n      OutputScale.capPixels(maxCanvasPixels, capCanvasAreaFactor) \u002F\\n        visiblePixels\\n    );\\n    const maxOverflowScale = (maxDetailToVisibleLinearRatio - 1) \u002F 2;\\n    let overflowScale = Math.min(1, maxOverflowScale);\\n    if (overflowScale \u003C 0) {\\n      overflowScale = 0;\\n      \u002F\u002F In this case, we render a detail view that is exactly as big as the\\n      \u002F\u002F visible area, but we ignore the .maxCanvasPixels limit.\\n      \u002F\u002F TODO: We should probably instead give up and not render the detail view\\n      \u002F\u002F in this case. It's quite rare to hit it though, because usually\\n      \u002F\u002F .maxCanvasPixels will at least have enough pixels to cover the visible\\n      \u002F\u002F screen.\\n    }\\n\\n    const overflowWidth = visibleWidth * overflowScale;\\n    const overflowHeight = visibleHeight * overflowScale;\\n\\n    const minX = Math.max(0, visibleArea.minX - overflowWidth);\\n    const maxX = Math.min(viewport.width, visibleArea.maxX + overflowWidth);\\n    const minY = Math.max(0, visibleArea.minY - overflowHeight);\\n    const maxY = Math.min(viewport.height, visibleArea.maxY + overflowHeight);\\n    const width = maxX - minX;\\n    const height = maxY - minY;\\n\\n    this.#detailArea = { minX, minY, width, height, scale: viewport.scale };\\n\\n    this.reset({ keepCanvas: true });\\n  }\\n\\n  async draw() {\\n    \u002F\u002F The PDFPageView might have already dropped this PDFPageDetailView. In\\n    \u002F\u002F that case, simply do nothing.\\n    if (this.pageView.detailView !== this) {\\n      return undefined;\\n    }\\n\\n    \u002F\u002F If there is already the lower resolution canvas behind,\\n    \u002F\u002F we don't show the new one until when it's fully ready.\\n    const hideUntilComplete =\\n      this.pageView.renderingState === RenderingStates.FINISHED ||\\n      this.renderingState === RenderingStates.FINISHED;\\n\\n    if (this.renderingState !== RenderingStates.INITIAL) {\\n      console.error(\\\"Must be in new state before drawing\\\");\\n      this.reset(); \u002F\u002F Ensure that we reset all state to prevent issues.\\n    }\\n    const { div, pdfPage, viewport } = this.pageView;\\n\\n    if (!pdfPage) {\\n      this.renderingState = RenderingStates.FINISHED;\\n      throw new Error(\\\"pdfPage is not loaded\\\");\\n    }\\n\\n    this.renderingState = RenderingStates.RUNNING;\\n\\n    const canvasWrapper = this.pageView._ensureCanvasWrapper();\\n\\n    const { canvas, prevCanvas, ctx } = this._createCanvas(newCanvas => {\\n      \u002F\u002F If there is already the background canvas, inject this new canvas\\n      \u002F\u002F after it. We cannot simply use .append because all canvases must\\n      \u002F\u002F be before the SVG elements used for drawings.\\n      if (canvasWrapper.firstElementChild?.tagName === \\\"CANVAS\\\") {\\n        canvasWrapper.firstElementChild.after(newCanvas);\\n      } else {\\n        canvasWrapper.prepend(newCanvas);\\n      }\\n    }, hideUntilComplete);\\n    canvas.setAttribute(\\\"aria-hidden\\\", \\\"true\\\");\\n\\n    const { width, height } = viewport;\\n\\n    const area = this.#detailArea;\\n\\n    const { pixelRatio } = OutputScale;\\n    const transform = [\\n      pixelRatio,\\n      0,\\n      0,\\n      pixelRatio,\\n      -area.minX * pixelRatio,\\n      -area.minY * pixelRatio,\\n    ];\\n\\n    canvas.width = area.width * pixelRatio;\\n    canvas.height = area.height * pixelRatio;\\n    const { style } = canvas;\\n    style.width = `${(area.width * 100) \u002F width}%`;\\n    style.height = `${(area.height * 100) \u002F height}%`;\\n    style.top = `${(area.minY * 100) \u002F height}%`;\\n    style.left = `${(area.minX * 100) \u002F width}%`;\\n\\n    const renderingPromise = this._drawCanvas(\\n      this.pageView._getRenderingContext(ctx, transform),\\n      () => {\\n        \u002F\u002F If the rendering is cancelled, keep the old canvas visible.\\n        this.canvas?.remove();\\n        this.canvas = prevCanvas;\\n      },\\n      () => {\\n        this.dispatchPageRendered(\\n          \u002F* cssTransform *\u002F false,\\n          \u002F* isDetailView *\u002F true\\n        );\\n      }\\n    );\\n\\n    div.setAttribute(\\\"data-loaded\\\", true);\\n\\n    this.dispatchPageRender();\\n\\n    return renderingPromise;\\n  }\\n}\\n\\nexport { PDFPageDetailView };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fapi\\\").PDFPageProxy} PDFPageProxy *\u002F\\n\\nimport { removeNullCharacters } from \\\".\u002Fui_utils.js\\\";\\n\\nconst PDF_ROLE_TO_HTML_ROLE = {\\n  \u002F\u002F Document level structure types\\n  Document: null, \u002F\u002F There's a \\\"document\\\" role, but it doesn't make sense here.\\n  DocumentFragment: null,\\n  \u002F\u002F Grouping level structure types\\n  Part: \\\"group\\\",\\n  Sect: \\\"group\\\", \u002F\u002F XXX: There's a \\\"section\\\" role, but it's abstract.\\n  Div: \\\"group\\\",\\n  Aside: \\\"note\\\",\\n  NonStruct: \\\"none\\\",\\n  \u002F\u002F Block level structure types\\n  P: null,\\n  \u002F\u002F H\u003Cn>,\\n  H: \\\"heading\\\",\\n  Title: null,\\n  FENote: \\\"note\\\",\\n  \u002F\u002F Sub-block level structure type\\n  Sub: \\\"group\\\",\\n  \u002F\u002F General inline level structure types\\n  Lbl: null,\\n  Span: null,\\n  Em: null,\\n  Strong: null,\\n  Link: \\\"link\\\",\\n  Annot: \\\"note\\\",\\n  Form: \\\"form\\\",\\n  \u002F\u002F Ruby and Warichu structure types\\n  Ruby: null,\\n  RB: null,\\n  RT: null,\\n  RP: null,\\n  Warichu: null,\\n  WT: null,\\n  WP: null,\\n  \u002F\u002F List standard structure types\\n  L: \\\"list\\\",\\n  LI: \\\"listitem\\\",\\n  LBody: null,\\n  \u002F\u002F Table standard structure types\\n  Table: \\\"table\\\",\\n  TR: \\\"row\\\",\\n  TH: \\\"columnheader\\\",\\n  TD: \\\"cell\\\",\\n  THead: \\\"columnheader\\\",\\n  TBody: null,\\n  TFoot: null,\\n  \u002F\u002F Standard structure type Caption\\n  Caption: null,\\n  \u002F\u002F Standard structure type Figure\\n  Figure: \\\"figure\\\",\\n  \u002F\u002F Standard structure type Formula\\n  Formula: null,\\n  \u002F\u002F standard structure type Artifact\\n  Artifact: null,\\n};\\n\\nconst HEADING_PATTERN = \u002F^H(\\\\d+)$\u002F;\\n\\n\u002F**\\n * @typedef {Object} StructTreeLayerBuilderOptions\\n * @property {PDFPageProxy} pdfPage\\n * @property {Object} rawDims\\n *\u002F\\n\\nclass StructTreeLayerBuilder {\\n  #promise;\\n\\n  #treeDom = null;\\n\\n  #treePromise;\\n\\n  #elementAttributes = new Map();\\n\\n  #rawDims;\\n\\n  #elementsToAddToTextLayer = null;\\n\\n  \u002F**\\n   * @param {StructTreeLayerBuilderOptions} options\\n   *\u002F\\n  constructor(pdfPage, rawDims) {\\n    this.#promise = pdfPage.getStructTree();\\n    this.#rawDims = rawDims;\\n  }\\n\\n  \u002F**\\n   * @returns {Promise\u003Cvoid>}\\n   *\u002F\\n  async render() {\\n    if (this.#treePromise) {\\n      return this.#treePromise;\\n    }\\n    const { promise, resolve, reject } = Promise.withResolvers();\\n    this.#treePromise = promise;\\n\\n    try {\\n      this.#treeDom = this.#walk(await this.#promise);\\n    } catch (ex) {\\n      reject(ex);\\n    }\\n    this.#promise = null;\\n\\n    this.#treeDom?.classList.add(\\\"structTree\\\");\\n    resolve(this.#treeDom);\\n\\n    return promise;\\n  }\\n\\n  async getAriaAttributes(annotationId) {\\n    try {\\n      await this.render();\\n      return this.#elementAttributes.get(annotationId);\\n    } catch {\\n      \u002F\u002F If the structTree cannot be fetched, parsed, and\u002For rendered,\\n      \u002F\u002F ensure that e.g. the AnnotationLayer won't break completely.\\n    }\\n    return null;\\n  }\\n\\n  hide() {\\n    if (this.#treeDom && !this.#treeDom.hidden) {\\n      this.#treeDom.hidden = true;\\n    }\\n  }\\n\\n  show() {\\n    if (this.#treeDom?.hidden) {\\n      this.#treeDom.hidden = false;\\n    }\\n  }\\n\\n  #setAttributes(structElement, htmlElement) {\\n    const { alt, id, lang } = structElement;\\n    if (alt !== undefined) {\\n      \u002F\u002F Don't add the label in the struct tree layer but on the annotation\\n      \u002F\u002F in the annotation layer.\\n      let added = false;\\n      const label = removeNullCharacters(alt);\\n      for (const child of structElement.children) {\\n        if (child.type === \\\"annotation\\\") {\\n          let attrs = this.#elementAttributes.get(child.id);\\n          if (!attrs) {\\n            attrs = new Map();\\n            this.#elementAttributes.set(child.id, attrs);\\n          }\\n          attrs.set(\\\"aria-label\\\", label);\\n          added = true;\\n        }\\n      }\\n      if (!added) {\\n        htmlElement.setAttribute(\\\"aria-label\\\", label);\\n      }\\n    }\\n    if (id !== undefined) {\\n      htmlElement.setAttribute(\\\"aria-owns\\\", id);\\n    }\\n    if (lang !== undefined) {\\n      htmlElement.setAttribute(\\n        \\\"lang\\\",\\n        removeNullCharacters(lang, \u002F* replaceInvisible = *\u002F true)\\n      );\\n    }\\n  }\\n\\n  #addImageInTextLayer(node, element) {\\n    const { alt, bbox, children } = node;\\n    const child = children?.[0];\\n    if (!this.#rawDims || !alt || !bbox || child?.type !== \\\"content\\\") {\\n      return false;\\n    }\\n\\n    const { id } = child;\\n    if (!id) {\\n      return false;\\n    }\\n\\n    \u002F\u002F We cannot add the created element to the text layer immediately, as the\\n    \u002F\u002F text layer might not be ready yet. Instead, we store the element and add\\n    \u002F\u002F it later in `addElementsToTextLayer`.\\n\\n    element.setAttribute(\\\"aria-owns\\\", id);\\n    const img = document.createElement(\\\"span\\\");\\n    (this.#elementsToAddToTextLayer ||= new Map()).set(id, img);\\n    img.setAttribute(\\\"role\\\", \\\"img\\\");\\n    img.setAttribute(\\\"aria-label\\\", removeNullCharacters(alt));\\n\\n    const { pageHeight, pageX, pageY } = this.#rawDims;\\n    const calc = \\\"calc(var(--total-scale-factor) *\\\";\\n    const { style } = img;\\n    style.width = `${calc}${bbox[2] - bbox[0]}px)`;\\n    style.height = `${calc}${bbox[3] - bbox[1]}px)`;\\n    style.left = `${calc}${bbox[0] - pageX}px)`;\\n    style.top = `${calc}${pageHeight - bbox[3] + pageY}px)`;\\n\\n    return true;\\n  }\\n\\n  addElementsToTextLayer() {\\n    if (!this.#elementsToAddToTextLayer) {\\n      return;\\n    }\\n    for (const [id, img] of this.#elementsToAddToTextLayer) {\\n      document.getElementById(id)?.append(img);\\n    }\\n    this.#elementsToAddToTextLayer.clear();\\n    this.#elementsToAddToTextLayer = null;\\n  }\\n\\n  #walk(node) {\\n    if (!node) {\\n      return null;\\n    }\\n\\n    const element = document.createElement(\\\"span\\\");\\n    if (\\\"role\\\" in node) {\\n      const { role } = node;\\n      const match = role.match(HEADING_PATTERN);\\n      if (match) {\\n        element.setAttribute(\\\"role\\\", \\\"heading\\\");\\n        element.setAttribute(\\\"aria-level\\\", match[1]);\\n      } else if (PDF_ROLE_TO_HTML_ROLE[role]) {\\n        element.setAttribute(\\\"role\\\", PDF_ROLE_TO_HTML_ROLE[role]);\\n      }\\n      if (role === \\\"Figure\\\" && this.#addImageInTextLayer(node, element)) {\\n        return element;\\n      }\\n    }\\n\\n    this.#setAttributes(node, element);\\n\\n    if (node.children) {\\n      if (node.children.length === 1 && \\\"id\\\" in node.children[0]) {\\n        \u002F\u002F Often there is only one content node so just set the values on the\\n        \u002F\u002F parent node to avoid creating an extra span.\\n        this.#setAttributes(node.children[0], element);\\n      } else {\\n        for (const kid of node.children) {\\n          element.append(this.#walk(kid));\\n        }\\n      }\\n    }\\n    return element;\\n  }\\n}\\n\\nexport { StructTreeLayerBuilder };\\n\",\"\u002F* Copyright 2022 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { binarySearchFirstItem } from \\\".\u002Fui_utils.js\\\";\\n\\n\u002F**\\n * This class aims to provide some methods:\\n *  - to reorder elements in the DOM with respect to the visual order;\\n *  - to create a link, using aria-owns, between spans in the textLayer and\\n *    annotations in the annotationLayer. The goal is to help to know\\n *    where the annotations are in the text flow.\\n *\u002F\\nclass TextAccessibilityManager {\\n  #enabled = false;\\n\\n  #textChildren = null;\\n\\n  #textNodes = new Map();\\n\\n  #waitingElements = new Map();\\n\\n  setTextMapping(textDivs) {\\n    this.#textChildren = textDivs;\\n  }\\n\\n  \u002F**\\n   * Compare the positions of two elements, it must correspond to\\n   * the visual ordering.\\n   *\\n   * @param {HTMLElement} e1\\n   * @param {HTMLElement} e2\\n   * @returns {number}\\n   *\u002F\\n  static #compareElementPositions(e1, e2) {\\n    const rect1 = e1.getBoundingClientRect();\\n    const rect2 = e2.getBoundingClientRect();\\n\\n    if (rect1.width === 0 && rect1.height === 0) {\\n      return +1;\\n    }\\n\\n    if (rect2.width === 0 && rect2.height === 0) {\\n      return -1;\\n    }\\n\\n    const top1 = rect1.y;\\n    const bot1 = rect1.y + rect1.height;\\n    const mid1 = rect1.y + rect1.height \u002F 2;\\n\\n    const top2 = rect2.y;\\n    const bot2 = rect2.y + rect2.height;\\n    const mid2 = rect2.y + rect2.height \u002F 2;\\n\\n    if (mid1 \u003C= top2 && mid2 >= bot1) {\\n      return -1;\\n    }\\n\\n    if (mid2 \u003C= top1 && mid1 >= bot2) {\\n      return +1;\\n    }\\n\\n    const centerX1 = rect1.x + rect1.width \u002F 2;\\n    const centerX2 = rect2.x + rect2.width \u002F 2;\\n\\n    return centerX1 - centerX2;\\n  }\\n\\n  \u002F**\\n   * Function called when the text layer has finished rendering.\\n   *\u002F\\n  enable() {\\n    if (this.#enabled) {\\n      throw new Error(\\\"TextAccessibilityManager is already enabled.\\\");\\n    }\\n    if (!this.#textChildren) {\\n      throw new Error(\\\"Text divs and strings have not been set.\\\");\\n    }\\n\\n    this.#enabled = true;\\n    this.#textChildren = this.#textChildren.slice();\\n    this.#textChildren.sort(TextAccessibilityManager.#compareElementPositions);\\n\\n    if (this.#textNodes.size > 0) {\\n      \u002F\u002F Some links have been made before this manager has been disabled, hence\\n      \u002F\u002F we restore them.\\n      const textChildren = this.#textChildren;\\n      for (const [id, nodeIndex] of this.#textNodes) {\\n        const element = document.getElementById(id);\\n        if (!element) {\\n          \u002F\u002F If the page was *fully* reset the element no longer exists, and it\\n          \u002F\u002F will be re-inserted later (i.e. when the annotationLayer renders).\\n          this.#textNodes.delete(id);\\n          continue;\\n        }\\n        this.#addIdToAriaOwns(id, textChildren[nodeIndex]);\\n      }\\n    }\\n\\n    for (const [element, isRemovable] of this.#waitingElements) {\\n      this.addPointerInTextLayer(element, isRemovable);\\n    }\\n    this.#waitingElements.clear();\\n  }\\n\\n  disable() {\\n    if (!this.#enabled) {\\n      return;\\n    }\\n\\n    \u002F\u002F Don't clear this.#textNodes which is used to rebuild the aria-owns\\n    \u002F\u002F in case it's re-enabled at some point.\\n\\n    this.#waitingElements.clear();\\n    this.#textChildren = null;\\n    this.#enabled = false;\\n  }\\n\\n  \u002F**\\n   * Remove an aria-owns id from a node in the text layer.\\n   * @param {HTMLElement} element\\n   *\u002F\\n  removePointerInTextLayer(element) {\\n    if (!this.#enabled) {\\n      this.#waitingElements.delete(element);\\n      return;\\n    }\\n\\n    const children = this.#textChildren;\\n    if (!children || children.length === 0) {\\n      return;\\n    }\\n\\n    const { id } = element;\\n    const nodeIndex = this.#textNodes.get(id);\\n    if (nodeIndex === undefined) {\\n      return;\\n    }\\n\\n    const node = children[nodeIndex];\\n\\n    this.#textNodes.delete(id);\\n    let owns = node.getAttribute(\\\"aria-owns\\\");\\n    if (owns?.includes(id)) {\\n      owns = owns\\n        .split(\\\" \\\")\\n        .filter(x => x !== id)\\n        .join(\\\" \\\");\\n      if (owns) {\\n        node.setAttribute(\\\"aria-owns\\\", owns);\\n      } else {\\n        node.removeAttribute(\\\"aria-owns\\\");\\n        node.setAttribute(\\\"role\\\", \\\"presentation\\\");\\n      }\\n    }\\n  }\\n\\n  #addIdToAriaOwns(id, node) {\\n    const owns = node.getAttribute(\\\"aria-owns\\\");\\n    if (!owns?.includes(id)) {\\n      node.setAttribute(\\\"aria-owns\\\", owns ? `${owns} ${id}` : id);\\n    }\\n    node.removeAttribute(\\\"role\\\");\\n  }\\n\\n  \u002F**\\n   * Find the text node which is the nearest and add an aria-owns attribute\\n   * in order to correctly position this editor in the text flow.\\n   * @param {HTMLElement} element\\n   * @param {boolean} isRemovable\\n   * @returns {string|null} The id in the struct tree if any.\\n   *\u002F\\n  addPointerInTextLayer(element, isRemovable) {\\n    const { id } = element;\\n    if (!id) {\\n      return null;\\n    }\\n\\n    if (!this.#enabled) {\\n      \u002F\u002F The text layer needs to be there, so we postpone the association.\\n      this.#waitingElements.set(element, isRemovable);\\n      return null;\\n    }\\n\\n    if (isRemovable) {\\n      this.removePointerInTextLayer(element);\\n    }\\n\\n    const children = this.#textChildren;\\n    if (!children || children.length === 0) {\\n      return null;\\n    }\\n\\n    const index = binarySearchFirstItem(\\n      children,\\n      node =>\\n        TextAccessibilityManager.#compareElementPositions(element, node) \u003C 0\\n    );\\n\\n    const nodeIndex = Math.max(0, index - 1);\\n    const child = children[nodeIndex];\\n    this.#addIdToAriaOwns(id, child);\\n    this.#textNodes.set(id, nodeIndex);\\n\\n    const parent = child.parentNode;\\n    return parent?.classList.contains(\\\"markedContent\\\") ? parent.id : null;\\n  }\\n\\n  \u002F**\\n   * Move a div in the DOM in order to respect the visual order.\\n   * @param {HTMLDivElement} element\\n   * @returns {string|null} The id in the struct tree if any.\\n   *\u002F\\n  moveElementInDOM(container, element, contentElement, isRemovable) {\\n    const id = this.addPointerInTextLayer(contentElement, isRemovable);\\n\\n    if (!container.hasChildNodes()) {\\n      container.append(element);\\n      return id;\\n    }\\n\\n    const children = Array.from(container.childNodes).filter(\\n      node => node !== element\\n    );\\n\\n    if (children.length === 0) {\\n      return id;\\n    }\\n\\n    const elementToCompare = contentElement || element;\\n    const index = binarySearchFirstItem(\\n      children,\\n      node =>\\n        TextAccessibilityManager.#compareElementPositions(\\n          elementToCompare,\\n          node\\n        ) \u003C 0\\n    );\\n\\n    if (index === 0) {\\n      children[0].before(element);\\n    } else {\\n      children[index - 1].after(element);\\n    }\\n\\n    return id;\\n  }\\n}\\n\\nexport { TextAccessibilityManager };\\n\",\"\u002F* Copyright 2021 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fevent_utils\\\").EventBus} EventBus *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fpdf_find_controller\\\").PDFFindController} PDFFindController *\u002F\\n\\n\u002F**\\n * @typedef {Object} TextHighlighterOptions\\n * @property {PDFFindController} findController\\n * @property {EventBus} eventBus - The application event bus.\\n * @property {number} pageIndex - The page index.\\n *\u002F\\n\\n\u002F**\\n * TextHighlighter handles highlighting matches from the FindController in\\n * either the text layer or XFA layer depending on the type of document.\\n *\u002F\\nclass TextHighlighter {\\n  #eventAbortController = null;\\n\\n  \u002F**\\n   * @param {TextHighlighterOptions} options\\n   *\u002F\\n  constructor({ findController, eventBus, pageIndex }) {\\n    this.findController = findController;\\n    this.matches = [];\\n    this.eventBus = eventBus;\\n    this.pageIdx = pageIndex;\\n    this.textDivs = null;\\n    this.textContentItemsStr = null;\\n    this.enabled = false;\\n  }\\n\\n  \u002F**\\n   * Store two arrays that will map DOM nodes to text they should contain.\\n   * The arrays should be of equal length and the array element at each index\\n   * should correspond to the other. e.g.\\n   * `items[0] = \\\"\u003Cspan>Item 0\u003C\u002Fspan>\\\" and texts[0] = \\\"Item 0\\\";\\n   *\\n   * @param {Array\u003CNode>} divs\\n   * @param {Array\u003Cstring>} texts\\n   *\u002F\\n  setTextMapping(divs, texts) {\\n    this.textDivs = divs;\\n    this.textContentItemsStr = texts;\\n  }\\n\\n  \u002F**\\n   * Start listening for events to update the highlighter and check if there are\\n   * any current matches that need be highlighted.\\n   *\u002F\\n  enable() {\\n    if (!this.textDivs || !this.textContentItemsStr) {\\n      throw new Error(\\\"Text divs and strings have not been set.\\\");\\n    }\\n    if (this.enabled) {\\n      throw new Error(\\\"TextHighlighter is already enabled.\\\");\\n    }\\n    this.enabled = true;\\n\\n    if (!this.#eventAbortController) {\\n      this.#eventAbortController = new AbortController();\\n\\n      this.eventBus._on(\\n        \\\"updatetextlayermatches\\\",\\n        evt => {\\n          if (evt.pageIndex === this.pageIdx || evt.pageIndex === -1) {\\n            this._updateMatches();\\n          }\\n        },\\n        { signal: this.#eventAbortController.signal }\\n      );\\n    }\\n    this._updateMatches();\\n  }\\n\\n  disable() {\\n    if (!this.enabled) {\\n      return;\\n    }\\n    this.enabled = false;\\n\\n    this.#eventAbortController?.abort();\\n    this.#eventAbortController = null;\\n\\n    this._updateMatches(\u002F* reset = *\u002F true);\\n  }\\n\\n  _convertMatches(matches, matchesLength) {\\n    \u002F\u002F Early exit if there is nothing to convert.\\n    if (!matches) {\\n      return [];\\n    }\\n    const { textContentItemsStr } = this;\\n\\n    let i = 0,\\n      iIndex = 0;\\n    const end = textContentItemsStr.length - 1;\\n    const result = [];\\n\\n    for (let m = 0, mm = matches.length; m \u003C mm; m++) {\\n      \u002F\u002F Calculate the start position.\\n      let matchIdx = matches[m];\\n\\n      \u002F\u002F Loop over the divIdxs.\\n      while (i !== end && matchIdx >= iIndex + textContentItemsStr[i].length) {\\n        iIndex += textContentItemsStr[i].length;\\n        i++;\\n      }\\n\\n      if (i === textContentItemsStr.length) {\\n        console.error(\\\"Could not find a matching mapping\\\");\\n      }\\n\\n      const match = {\\n        begin: {\\n          divIdx: i,\\n          offset: matchIdx - iIndex,\\n        },\\n      };\\n\\n      \u002F\u002F Calculate the end position.\\n      matchIdx += matchesLength[m];\\n\\n      \u002F\u002F Somewhat the same array as above, but use > instead of >= to get\\n      \u002F\u002F the end position right.\\n      while (i !== end && matchIdx > iIndex + textContentItemsStr[i].length) {\\n        iIndex += textContentItemsStr[i].length;\\n        i++;\\n      }\\n\\n      match.end = {\\n        divIdx: i,\\n        offset: matchIdx - iIndex,\\n      };\\n      result.push(match);\\n    }\\n    return result;\\n  }\\n\\n  _renderMatches(matches) {\\n    \u002F\u002F Early exit if there is nothing to render.\\n    if (matches.length === 0) {\\n      return;\\n    }\\n    const { findController, pageIdx } = this;\\n    const { textContentItemsStr, textDivs } = this;\\n\\n    const isSelectedPage = pageIdx === findController.selected.pageIdx;\\n    const selectedMatchIdx = findController.selected.matchIdx;\\n    const highlightAll = findController.state.highlightAll;\\n    let prevEnd = null;\\n    const infinity = {\\n      divIdx: -1,\\n      offset: undefined,\\n    };\\n\\n    function beginText(begin, className) {\\n      const divIdx = begin.divIdx;\\n      textDivs[divIdx].textContent = \\\"\\\";\\n      return appendTextToDiv(divIdx, 0, begin.offset, className);\\n    }\\n\\n    function appendTextToDiv(divIdx, fromOffset, toOffset, className) {\\n      let div = textDivs[divIdx];\\n      if (div.nodeType === Node.TEXT_NODE) {\\n        const span = document.createElement(\\\"span\\\");\\n        div.before(span);\\n        span.append(div);\\n        textDivs[divIdx] = span;\\n        div = span;\\n      }\\n      const content = textContentItemsStr[divIdx].substring(\\n        fromOffset,\\n        toOffset\\n      );\\n      const node = document.createTextNode(content);\\n      if (className) {\\n        const span = document.createElement(\\\"span\\\");\\n        span.className = `${className} appended`;\\n        span.append(node);\\n        div.append(span);\\n\\n        if (className.includes(\\\"selected\\\")) {\\n          const { left } = span.getClientRects()[0];\\n          const parentLeft = div.getBoundingClientRect().left;\\n          return left - parentLeft;\\n        }\\n        return 0;\\n      }\\n\\n      div.append(node);\\n      return 0;\\n    }\\n\\n    let i0 = selectedMatchIdx,\\n      i1 = i0 + 1;\\n    if (highlightAll) {\\n      i0 = 0;\\n      i1 = matches.length;\\n    } else if (!isSelectedPage) {\\n      \u002F\u002F Not highlighting all and this isn't the selected page, so do nothing.\\n      return;\\n    }\\n\\n    let lastDivIdx = -1;\\n    let lastOffset = -1;\\n    for (let i = i0; i \u003C i1; i++) {\\n      const match = matches[i];\\n      const begin = match.begin;\\n      if (begin.divIdx === lastDivIdx && begin.offset === lastOffset) {\\n        \u002F\u002F It's possible to be in this situation if we searched for a 'f' and we\\n        \u002F\u002F have a ligature 'ff' in the text. The 'ff' has to be highlighted two\\n        \u002F\u002F times.\\n        continue;\\n      }\\n      lastDivIdx = begin.divIdx;\\n      lastOffset = begin.offset;\\n\\n      const end = match.end;\\n      const isSelected = isSelectedPage && i === selectedMatchIdx;\\n      const highlightSuffix = isSelected ? \\\" selected\\\" : \\\"\\\";\\n      let selectedLeft = 0;\\n\\n      \u002F\u002F Match inside new div.\\n      if (!prevEnd || begin.divIdx !== prevEnd.divIdx) {\\n        \u002F\u002F If there was a previous div, then add the text at the end.\\n        if (prevEnd !== null) {\\n          appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);\\n        }\\n        \u002F\u002F Clear the divs and set the content until the starting point.\\n        beginText(begin);\\n      } else {\\n        appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset);\\n      }\\n\\n      if (begin.divIdx === end.divIdx) {\\n        selectedLeft = appendTextToDiv(\\n          begin.divIdx,\\n          begin.offset,\\n          end.offset,\\n          \\\"highlight\\\" + highlightSuffix\\n        );\\n      } else {\\n        selectedLeft = appendTextToDiv(\\n          begin.divIdx,\\n          begin.offset,\\n          infinity.offset,\\n          \\\"highlight begin\\\" + highlightSuffix\\n        );\\n        for (let n0 = begin.divIdx + 1, n1 = end.divIdx; n0 \u003C n1; n0++) {\\n          textDivs[n0].className = \\\"highlight middle\\\" + highlightSuffix;\\n        }\\n        beginText(end, \\\"highlight end\\\" + highlightSuffix);\\n      }\\n      prevEnd = end;\\n\\n      if (isSelected) {\\n        \u002F\u002F Attempt to scroll the selected match into view.\\n        findController.scrollMatchIntoView({\\n          element: textDivs[begin.divIdx],\\n          selectedLeft,\\n          pageIndex: pageIdx,\\n          matchIndex: selectedMatchIdx,\\n        });\\n      }\\n    }\\n\\n    if (prevEnd) {\\n      appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);\\n    }\\n  }\\n\\n  _updateMatches(reset = false) {\\n    if (!this.enabled && !reset) {\\n      return;\\n    }\\n    const { findController, matches, pageIdx } = this;\\n    const { textContentItemsStr, textDivs } = this;\\n    let clearedUntilDivIdx = -1;\\n\\n    \u002F\u002F Clear all current matches.\\n    for (const match of matches) {\\n      const begin = Math.max(clearedUntilDivIdx, match.begin.divIdx);\\n      for (let n = begin, end = match.end.divIdx; n \u003C= end; n++) {\\n        const div = textDivs[n];\\n        div.textContent = textContentItemsStr[n];\\n        div.className = \\\"\\\";\\n      }\\n      clearedUntilDivIdx = match.end.divIdx + 1;\\n    }\\n\\n    if (!findController?.highlightMatches || reset) {\\n      return;\\n    }\\n    \u002F\u002F Convert the matches on the `findController` into the match format\\n    \u002F\u002F used for the textLayer.\\n    const pageMatches = findController.pageMatches[pageIdx] || null;\\n    const pageMatchesLength = findController.pageMatchesLength[pageIdx] || null;\\n\\n    this.matches = this._convertMatches(pageMatches, pageMatchesLength);\\n    this._renderMatches(this.matches);\\n  }\\n}\\n\\nexport { TextHighlighter };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fapi\\\").PDFPageProxy} PDFPageProxy *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fdisplay_utils\\\").PageViewport} PageViewport *\u002F\\n\u002F** @typedef {import(\\\".\u002Ftext_highlighter\\\").TextHighlighter} TextHighlighter *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Ftext_accessibility.js\\\").TextAccessibilityManager} TextAccessibilityManager *\u002F\\n\\nimport { normalizeUnicode, stopEvent, TextLayer } from \\\"pdfjs-lib\\\";\\nimport { removeNullCharacters } from \\\".\u002Fui_utils.js\\\";\\n\\n\u002F**\\n * @typedef {Object} TextLayerBuilderOptions\\n * @property {PDFPageProxy} pdfPage\\n * @property {TextHighlighter} [highlighter] - Optional object that will handle\\n *   highlighting text from the find controller.\\n * @property {TextAccessibilityManager} [accessibilityManager]\\n * @property {boolean} [enablePermissions]\\n * @property {function} [onAppend]\\n *\u002F\\n\\n\u002F**\\n * @typedef {Object} TextLayerBuilderRenderOptions\\n * @property {PageViewport} viewport\\n * @property {Object} [textContentParams]\\n *\u002F\\n\\n\u002F**\\n * The text layer builder provides text selection functionality for the PDF.\\n * It does this by creating overlay divs over the PDF's text. These divs\\n * contain text that matches the PDF text they are overlaying.\\n *\u002F\\nclass TextLayerBuilder {\\n  #enablePermissions = false;\\n\\n  #onAppend = null;\\n\\n  #renderingDone = false;\\n\\n  #textLayer = null;\\n\\n  static #textLayers = new Map();\\n\\n  static #selectionChangeAbortController = null;\\n\\n  \u002F**\\n   * @param {TextLayerBuilderOptions} options\\n   *\u002F\\n  constructor({\\n    pdfPage,\\n    highlighter = null,\\n    accessibilityManager = null,\\n    enablePermissions = false,\\n    onAppend = null,\\n  }) {\\n    this.pdfPage = pdfPage;\\n    this.highlighter = highlighter;\\n    this.accessibilityManager = accessibilityManager;\\n    this.#enablePermissions = enablePermissions === true;\\n    this.#onAppend = onAppend;\\n\\n    this.div = document.createElement(\\\"div\\\");\\n    this.div.tabIndex = 0;\\n    this.div.className = \\\"textLayer\\\";\\n  }\\n\\n  \u002F**\\n   * Renders the text layer.\\n   * @param {TextLayerBuilderRenderOptions} options\\n   * @returns {Promise\u003Cvoid>}\\n   *\u002F\\n  async render({ viewport, textContentParams = null }) {\\n    if (this.#renderingDone && this.#textLayer) {\\n      this.#textLayer.update({\\n        viewport,\\n        onBefore: this.hide.bind(this),\\n      });\\n      this.show();\\n      return;\\n    }\\n\\n    this.cancel();\\n    this.#textLayer = new TextLayer({\\n      textContentSource: this.pdfPage.streamTextContent(\\n        textContentParams || {\\n          includeMarkedContent: true,\\n          disableNormalization: true,\\n        }\\n      ),\\n      container: this.div,\\n      viewport,\\n    });\\n\\n    const { textDivs, textContentItemsStr } = this.#textLayer;\\n    this.highlighter?.setTextMapping(textDivs, textContentItemsStr);\\n    this.accessibilityManager?.setTextMapping(textDivs);\\n\\n    await this.#textLayer.render();\\n    this.#renderingDone = true;\\n\\n    const endOfContent = document.createElement(\\\"div\\\");\\n    endOfContent.className = \\\"endOfContent\\\";\\n    this.div.append(endOfContent);\\n\\n    this.#bindMouse(endOfContent);\\n    \u002F\u002F Ensure that the textLayer is appended to the DOM *before* handling\\n    \u002F\u002F e.g. a pending search operation.\\n    this.#onAppend?.(this.div);\\n    this.highlighter?.enable();\\n    this.accessibilityManager?.enable();\\n  }\\n\\n  hide() {\\n    if (!this.div.hidden && this.#renderingDone) {\\n      \u002F\u002F We turn off the highlighter in order to avoid to scroll into view an\\n      \u002F\u002F element of the text layer which could be hidden.\\n      this.highlighter?.disable();\\n      this.div.hidden = true;\\n    }\\n  }\\n\\n  show() {\\n    if (this.div.hidden && this.#renderingDone) {\\n      this.div.hidden = false;\\n      this.highlighter?.enable();\\n    }\\n  }\\n\\n  \u002F**\\n   * Cancel rendering of the text layer.\\n   *\u002F\\n  cancel() {\\n    this.#textLayer?.cancel();\\n    this.#textLayer = null;\\n\\n    this.highlighter?.disable();\\n    this.accessibilityManager?.disable();\\n    TextLayerBuilder.#removeGlobalSelectionListener(this.div);\\n  }\\n\\n  \u002F**\\n   * Improves text selection by adding an additional div where the mouse was\\n   * clicked. This reduces flickering of the content if the mouse is slowly\\n   * dragged up or down.\\n   *\u002F\\n  #bindMouse(end) {\\n    const { div } = this;\\n\\n    div.addEventListener(\\\"mousedown\\\", () => {\\n      div.classList.add(\\\"selecting\\\");\\n    });\\n\\n    div.addEventListener(\\\"copy\\\", event => {\\n      if (!this.#enablePermissions) {\\n        const selection = document.getSelection();\\n        event.clipboardData.setData(\\n          \\\"text\u002Fplain\\\",\\n          removeNullCharacters(normalizeUnicode(selection.toString()))\\n        );\\n      }\\n      stopEvent(event);\\n    });\\n\\n    TextLayerBuilder.#textLayers.set(div, end);\\n    TextLayerBuilder.#enableGlobalSelectionListener();\\n  }\\n\\n  static #removeGlobalSelectionListener(textLayerDiv) {\\n    this.#textLayers.delete(textLayerDiv);\\n\\n    if (this.#textLayers.size === 0) {\\n      this.#selectionChangeAbortController?.abort();\\n      this.#selectionChangeAbortController = null;\\n    }\\n  }\\n\\n  static #enableGlobalSelectionListener() {\\n    if (this.#selectionChangeAbortController) {\\n      \u002F\u002F document-level event listeners already installed\\n      return;\\n    }\\n    this.#selectionChangeAbortController = new AbortController();\\n    const { signal } = this.#selectionChangeAbortController;\\n\\n    const reset = (end, textLayer) => {\\n      if (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n        textLayer.append(end);\\n        end.style.width = \\\"\\\";\\n        end.style.height = \\\"\\\";\\n      }\\n      textLayer.classList.remove(\\\"selecting\\\");\\n    };\\n\\n    let isPointerDown = false;\\n    document.addEventListener(\\n      \\\"pointerdown\\\",\\n      () => {\\n        isPointerDown = true;\\n      },\\n      { signal }\\n    );\\n    document.addEventListener(\\n      \\\"pointerup\\\",\\n      () => {\\n        isPointerDown = false;\\n        this.#textLayers.forEach(reset);\\n      },\\n      { signal }\\n    );\\n    window.addEventListener(\\n      \\\"blur\\\",\\n      () => {\\n        isPointerDown = false;\\n        this.#textLayers.forEach(reset);\\n      },\\n      { signal }\\n    );\\n    document.addEventListener(\\n      \\\"keyup\\\",\\n      () => {\\n        if (!isPointerDown) {\\n          this.#textLayers.forEach(reset);\\n        }\\n      },\\n      { signal }\\n    );\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      \u002F\u002F eslint-disable-next-line no-var\\n      var isFirefox, prevRange;\\n    }\\n\\n    document.addEventListener(\\n      \\\"selectionchange\\\",\\n      () => {\\n        const selection = document.getSelection();\\n        if (selection.rangeCount === 0) {\\n          this.#textLayers.forEach(reset);\\n          return;\\n        }\\n\\n        \u002F\u002F Even though the spec says that .rangeCount should be 0 or 1, Firefox\\n        \u002F\u002F creates multiple ranges when selecting across multiple pages.\\n        \u002F\u002F Make sure to collect all the .textLayer elements where the selection\\n        \u002F\u002F is happening.\\n        const activeTextLayers = new Set();\\n        for (let i = 0; i \u003C selection.rangeCount; i++) {\\n          const range = selection.getRangeAt(i);\\n          for (const textLayerDiv of this.#textLayers.keys()) {\\n            if (\\n              !activeTextLayers.has(textLayerDiv) &&\\n              range.intersectsNode(textLayerDiv)\\n            ) {\\n              activeTextLayers.add(textLayerDiv);\\n            }\\n          }\\n        }\\n\\n        for (const [textLayerDiv, endDiv] of this.#textLayers) {\\n          if (activeTextLayers.has(textLayerDiv)) {\\n            textLayerDiv.classList.add(\\\"selecting\\\");\\n          } else {\\n            reset(endDiv, textLayerDiv);\\n          }\\n        }\\n\\n        if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n          return;\\n        }\\n        if (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"CHROME\\\")) {\\n          isFirefox ??=\\n            getComputedStyle(\\n              this.#textLayers.values().next().value\\n            ).getPropertyValue(\\\"-moz-user-select\\\") === \\\"none\\\";\\n\\n          if (isFirefox) {\\n            return;\\n          }\\n        }\\n        \u002F\u002F In non-Firefox browsers, when hovering over an empty space (thus,\\n        \u002F\u002F on .endOfContent), the selection will expand to cover all the\\n        \u002F\u002F text between the current selection and .endOfContent. By moving\\n        \u002F\u002F .endOfContent to right after (or before, depending on which side\\n        \u002F\u002F of the selection the user is moving), we limit the selection jump\\n        \u002F\u002F to at most cover the enteirety of the \u003Cspan> where the selection\\n        \u002F\u002F is being modified.\\n        const range = selection.getRangeAt(0);\\n        const modifyStart =\\n          prevRange &&\\n          (range.compareBoundaryPoints(Range.END_TO_END, prevRange) === 0 ||\\n            range.compareBoundaryPoints(Range.START_TO_END, prevRange) === 0);\\n        let anchor = modifyStart ? range.startContainer : range.endContainer;\\n        if (anchor.nodeType === Node.TEXT_NODE) {\\n          anchor = anchor.parentNode;\\n        }\\n        if (!modifyStart && range.endOffset === 0) {\\n          do {\\n            while (!anchor.previousSibling) {\\n              anchor = anchor.parentNode;\\n            }\\n            anchor = anchor.previousSibling;\\n          } while (!anchor.childNodes.length);\\n        }\\n\\n        const parentTextLayer = anchor.parentElement?.closest(\\\".textLayer\\\");\\n        const endDiv = this.#textLayers.get(parentTextLayer);\\n        if (endDiv) {\\n          endDiv.style.width = parentTextLayer.style.width;\\n          endDiv.style.height = parentTextLayer.style.height;\\n          anchor.parentElement.insertBefore(\\n            endDiv,\\n            modifyStart ? anchor : anchor.nextSibling\\n          );\\n        }\\n\\n        prevRange = range.cloneRange();\\n      },\\n      { signal }\\n    );\\n  }\\n}\\n\\nexport { TextLayerBuilder };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fdisplay_utils\\\").PageViewport} PageViewport *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Foptional_content_config\\\").OptionalContentConfig} OptionalContentConfig *\u002F\\n\u002F** @typedef {import(\\\".\u002Fevent_utils\\\").EventBus} EventBus *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IL10n} IL10n *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IRenderableView} IRenderableView *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fpdf_rendering_queue\\\").PDFRenderingQueue} PDFRenderingQueue *\u002F\\n\\nimport {\\n  AbortException,\\n  AnnotationMode,\\n  OutputScale,\\n  PixelsPerInch,\\n  setLayerDimensions,\\n  shadow,\\n} from \\\"pdfjs-lib\\\";\\nimport {\\n  approximateFraction,\\n  calcRound,\\n  DEFAULT_SCALE,\\n  floorToDivide,\\n  RenderingStates,\\n  TextLayerMode,\\n} from \\\".\u002Fui_utils.js\\\";\\nimport { AnnotationEditorLayerBuilder } from \\\".\u002Fannotation_editor_layer_builder.js\\\";\\nimport { AnnotationLayerBuilder } from \\\".\u002Fannotation_layer_builder.js\\\";\\nimport { AppOptions } from \\\".\u002Fapp_options.js\\\";\\nimport { Autolinker } from \\\".\u002Fautolinker.js\\\";\\nimport { BasePDFPageView } from \\\".\u002Fbase_pdf_page_view.js\\\";\\nimport { DrawLayerBuilder } from \\\".\u002Fdraw_layer_builder.js\\\";\\nimport { GenericL10n } from \\\"web-null_l10n\\\";\\nimport { PDFPageDetailView } from \\\".\u002Fpdf_page_detail_view.js\\\";\\nimport { SimpleLinkService } from \\\".\u002Fpdf_link_service.js\\\";\\nimport { StructTreeLayerBuilder } from \\\".\u002Fstruct_tree_layer_builder.js\\\";\\nimport { TextAccessibilityManager } from \\\".\u002Ftext_accessibility.js\\\";\\nimport { TextHighlighter } from \\\".\u002Ftext_highlighter.js\\\";\\nimport { TextLayerBuilder } from \\\".\u002Ftext_layer_builder.js\\\";\\nimport { XfaLayerBuilder } from \\\".\u002Fxfa_layer_builder.js\\\";\\n\\n\u002F**\\n * @typedef {Object} PDFPageViewOptions\\n * @property {HTMLDivElement} [container] - The viewer element.\\n * @property {EventBus} eventBus - The application event bus.\\n * @property {number} id - The page unique ID (normally its number).\\n * @property {number} [scale] - The page scale display.\\n * @property {PageViewport} defaultViewport - The page viewport.\\n * @property {Promise\u003COptionalContentConfig>} [optionalContentConfigPromise] -\\n *   A promise that is resolved with an {@link OptionalContentConfig} instance.\\n *   The default value is `null`.\\n * @property {PDFRenderingQueue} [renderingQueue] - The rendering queue object.\\n * @property {number} [textLayerMode] - Controls if the text layer used for\\n *   selection and searching is created. The constants from {TextLayerMode}\\n *   should be used. The default value is `TextLayerMode.ENABLE`.\\n * @property {number} [annotationMode] - Controls if the annotation layer is\\n *   created, and if interactive form elements or `AnnotationStorage`-data are\\n *   being rendered. The constants from {@link AnnotationMode} should be used;\\n *   see also {@link RenderParameters} and {@link GetOperatorListParameters}.\\n *   The default value is `AnnotationMode.ENABLE_FORMS`.\\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\\n *   for annotation icons. Include trailing slash.\\n * @property {number} [maxCanvasPixels] - The maximum supported canvas size in\\n *   total pixels, i.e. width * height. Use `-1` for no limit, or `0` for\\n *   CSS-only zooming. The default value is 4096 * 8192 (32 mega-pixels).\\n * @property {number} [maxCanvasDim] - The maximum supported canvas dimension,\\n *   in either width or height. Use `-1` for no limit.\\n *   The default value is 32767.\\n * @property {number} [capCanvasAreaFactor] - Cap the canvas area to the\\n *   viewport increased by the value in percent. Use `-1` for no limit.\\n *   The default value is 200%.\\n * @property {boolean} [enableDetailCanvas] - When enabled, if the rendered\\n *   pages would need a canvas that is larger than `maxCanvasPixels` or\\n *   `maxCanvasDim`, it will draw a second canvas on top of the CSS-zoomed one,\\n *   that only renders the part of the page that is close to the viewport.\\n *   The default value is `true`.\\n * @property {Object} [pageColors] - Overwrites background and foreground colors\\n *   with user defined ones in order to improve readability in high contrast\\n *   mode.\\n * @property {IL10n} [l10n] - Localization service.\\n * @property {Object} [layerProperties] - The object that is used to lookup\\n *   the necessary layer-properties.\\n * @property {boolean} [enableHWA] - Enables hardware acceleration for\\n *   rendering. The default value is `false`.\\n * @property {boolean} [enableAutoLinking] - Enable creation of hyperlinks from\\n *   text that look like URLs. The default value is `true`.\\n *\u002F\\n\\nconst DEFAULT_LAYER_PROPERTIES =\\n  typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"COMPONENTS\\\")\\n    ? null\\n    : {\\n        annotationEditorUIManager: null,\\n        annotationStorage: null,\\n        downloadManager: null,\\n        enableScripting: false,\\n        fieldObjectsPromise: null,\\n        findController: null,\\n        hasJSActionsPromise: null,\\n        get linkService() {\\n          return new SimpleLinkService();\\n        },\\n      };\\n\\nconst LAYERS_ORDER = new Map([\\n  [\\\"canvasWrapper\\\", 0],\\n  [\\\"textLayer\\\", 1],\\n  [\\\"annotationLayer\\\", 2],\\n  [\\\"annotationEditorLayer\\\", 3],\\n  [\\\"xfaLayer\\\", 3],\\n]);\\n\\n\u002F**\\n * @implements {IRenderableView}\\n *\u002F\\nclass PDFPageView extends BasePDFPageView {\\n  #annotationMode = AnnotationMode.ENABLE_FORMS;\\n\\n  #canvasWrapper = null;\\n\\n  #enableAutoLinking = true;\\n\\n  #hasRestrictedScaling = false;\\n\\n  #isEditing = false;\\n\\n  #layerProperties = null;\\n\\n  #needsRestrictedScaling = false;\\n\\n  #originalViewport = null;\\n\\n  #previousRotation = null;\\n\\n  #scaleRoundX = 1;\\n\\n  #scaleRoundY = 1;\\n\\n  #textLayerMode = TextLayerMode.ENABLE;\\n\\n  #userUnit = 1;\\n\\n  #useThumbnailCanvas = {\\n    directDrawing: true,\\n    initialOptionalContent: true,\\n    regularAnnotations: true,\\n  };\\n\\n  #layers = [null, null, null, null];\\n\\n  \u002F**\\n   * @param {PDFPageViewOptions} options\\n   *\u002F\\n  constructor(options) {\\n    super(options);\\n\\n    const container = options.container;\\n    const defaultViewport = options.defaultViewport;\\n\\n    this.renderingId = \\\"page\\\" + this.id;\\n    this.#layerProperties = options.layerProperties || DEFAULT_LAYER_PROPERTIES;\\n\\n    this.pdfPage = null;\\n    this.pageLabel = null;\\n    this.rotation = 0;\\n    this.scale = options.scale || DEFAULT_SCALE;\\n    this.viewport = defaultViewport;\\n    this.pdfPageRotate = defaultViewport.rotation;\\n    this._optionalContentConfigPromise =\\n      options.optionalContentConfigPromise || null;\\n    this.#textLayerMode = options.textLayerMode ?? TextLayerMode.ENABLE;\\n    this.#annotationMode =\\n      options.annotationMode ?? AnnotationMode.ENABLE_FORMS;\\n    this.imageResourcesPath = options.imageResourcesPath || \\\"\\\";\\n    this.enableDetailCanvas = options.enableDetailCanvas ?? true;\\n    this.maxCanvasPixels =\\n      options.maxCanvasPixels ?? AppOptions.get(\\\"maxCanvasPixels\\\");\\n    this.maxCanvasDim = options.maxCanvasDim || AppOptions.get(\\\"maxCanvasDim\\\");\\n    this.capCanvasAreaFactor =\\n      options.capCanvasAreaFactor ?? AppOptions.get(\\\"capCanvasAreaFactor\\\");\\n    this.#enableAutoLinking = options.enableAutoLinking !== false;\\n\\n    this.l10n = options.l10n;\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      this.l10n ||= new GenericL10n();\\n    }\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      this._isStandalone = !this.renderingQueue?.hasViewer();\\n      this._container = container;\\n    }\\n\\n    this._annotationCanvasMap = null;\\n\\n    this.annotationLayer = null;\\n    this.annotationEditorLayer = null;\\n    this.textLayer = null;\\n    this.xfaLayer = null;\\n    this.structTreeLayer = null;\\n    this.drawLayer = null;\\n\\n    this.detailView = null;\\n\\n    const div = document.createElement(\\\"div\\\");\\n    div.className = \\\"page\\\";\\n    div.setAttribute(\\\"data-page-number\\\", this.id);\\n    div.setAttribute(\\\"role\\\", \\\"region\\\");\\n    div.setAttribute(\\\"data-l10n-id\\\", \\\"pdfjs-page-landmark\\\");\\n    div.setAttribute(\\\"data-l10n-args\\\", JSON.stringify({ page: this.id }));\\n    this.div = div;\\n\\n    this.#setDimensions();\\n    container?.append(div);\\n\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) &&\\n      this._isStandalone\\n    ) {\\n      \u002F\u002F Ensure that the various layers always get the correct initial size,\\n      \u002F\u002F see issue 15795.\\n      container?.style.setProperty(\\n        \\\"--scale-factor\\\",\\n        this.scale * PixelsPerInch.PDF_TO_CSS_UNITS\\n      );\\n\\n      if (this.pageColors?.background) {\\n        container?.style.setProperty(\\n          \\\"--page-bg-color\\\",\\n          this.pageColors.background\\n        );\\n      }\\n\\n      const { optionalContentConfigPromise } = options;\\n      if (optionalContentConfigPromise) {\\n        \u002F\u002F Ensure that the thumbnails always display the *initial* document\\n        \u002F\u002F state, for documents with optional content.\\n        optionalContentConfigPromise.then(optionalContentConfig => {\\n          if (\\n            optionalContentConfigPromise !== this._optionalContentConfigPromise\\n          ) {\\n            return;\\n          }\\n          this.#useThumbnailCanvas.initialOptionalContent =\\n            optionalContentConfig.hasInitialVisibility;\\n        });\\n      }\\n\\n      \u002F\u002F Ensure that Fluent is connected in e.g. the COMPONENTS build.\\n      if (!options.l10n) {\\n        this.l10n.translate(this.div);\\n      }\\n    }\\n  }\\n\\n  #addLayer(div, name) {\\n    const pos = LAYERS_ORDER.get(name);\\n    const oldDiv = this.#layers[pos];\\n    this.#layers[pos] = div;\\n    if (oldDiv) {\\n      oldDiv.replaceWith(div);\\n      return;\\n    }\\n    for (let i = pos - 1; i >= 0; i--) {\\n      const layer = this.#layers[i];\\n      if (layer) {\\n        layer.after(div);\\n        return;\\n      }\\n    }\\n    this.div.prepend(div);\\n  }\\n\\n  #setDimensions() {\\n    const { div, viewport } = this;\\n\\n    if (viewport.userUnit !== this.#userUnit) {\\n      if (viewport.userUnit !== 1) {\\n        div.style.setProperty(\\\"--user-unit\\\", viewport.userUnit);\\n      } else {\\n        div.style.removeProperty(\\\"--user-unit\\\");\\n      }\\n      this.#userUnit = viewport.userUnit;\\n    }\\n    if (this.pdfPage) {\\n      if (this.#previousRotation === viewport.rotation) {\\n        return;\\n      }\\n      this.#previousRotation = viewport.rotation;\\n    }\\n\\n    setLayerDimensions(\\n      div,\\n      viewport,\\n      \u002F* mustFlip = *\u002F true,\\n      \u002F* mustRotate = *\u002F false\\n    );\\n  }\\n\\n  setPdfPage(pdfPage) {\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) &&\\n      this._isStandalone &&\\n      (this.pageColors?.foreground === \\\"CanvasText\\\" ||\\n        this.pageColors?.background === \\\"Canvas\\\")\\n    ) {\\n      this._container?.style.setProperty(\\n        \\\"--hcm-highlight-filter\\\",\\n        pdfPage.filterFactory.addHighlightHCMFilter(\\n          \\\"highlight\\\",\\n          \\\"CanvasText\\\",\\n          \\\"Canvas\\\",\\n          \\\"HighlightText\\\",\\n          \\\"Highlight\\\"\\n        )\\n      );\\n      this._container?.style.setProperty(\\n        \\\"--hcm-highlight-selected-filter\\\",\\n        pdfPage.filterFactory.addHighlightHCMFilter(\\n          \\\"highlight_selected\\\",\\n          \\\"CanvasText\\\",\\n          \\\"Canvas\\\",\\n          \\\"HighlightText\\\",\\n          \\\"Highlight\\\"\\n        )\\n      );\\n    }\\n    this.pdfPage = pdfPage;\\n    this.pdfPageRotate = pdfPage.rotate;\\n\\n    const totalRotation = (this.rotation + this.pdfPageRotate) % 360;\\n    this.viewport = pdfPage.getViewport({\\n      scale: this.scale * PixelsPerInch.PDF_TO_CSS_UNITS,\\n      rotation: totalRotation,\\n    });\\n    this.#setDimensions();\\n    this.reset();\\n  }\\n\\n  destroy() {\\n    this.reset();\\n    this.pdfPage?.cleanup();\\n  }\\n\\n  hasEditableAnnotations() {\\n    return !!this.annotationLayer?.hasEditableAnnotations();\\n  }\\n\\n  get _textHighlighter() {\\n    return shadow(\\n      this,\\n      \\\"_textHighlighter\\\",\\n      new TextHighlighter({\\n        pageIndex: this.id - 1,\\n        eventBus: this.eventBus,\\n        findController: this.#layerProperties.findController,\\n      })\\n    );\\n  }\\n\\n  #dispatchLayerRendered(name, error) {\\n    this.eventBus.dispatch(name, {\\n      source: this,\\n      pageNumber: this.id,\\n      error,\\n    });\\n  }\\n\\n  async #renderAnnotationLayer() {\\n    let error = null;\\n    try {\\n      await this.annotationLayer.render({\\n        viewport: this.viewport,\\n        intent: \\\"display\\\",\\n        structTreeLayer: this.structTreeLayer,\\n      });\\n    } catch (ex) {\\n      console.error(\\\"#renderAnnotationLayer:\\\", ex);\\n      error = ex;\\n    } finally {\\n      this.#dispatchLayerRendered(\\\"annotationlayerrendered\\\", error);\\n    }\\n  }\\n\\n  async #renderAnnotationEditorLayer() {\\n    let error = null;\\n    try {\\n      await this.annotationEditorLayer.render({\\n        viewport: this.viewport,\\n        intent: \\\"display\\\",\\n      });\\n    } catch (ex) {\\n      console.error(\\\"#renderAnnotationEditorLayer:\\\", ex);\\n      error = ex;\\n    } finally {\\n      this.#dispatchLayerRendered(\\\"annotationeditorlayerrendered\\\", error);\\n    }\\n  }\\n\\n  async #renderDrawLayer() {\\n    try {\\n      await this.drawLayer.render({\\n        intent: \\\"display\\\",\\n      });\\n    } catch (ex) {\\n      console.error(\\\"#renderDrawLayer:\\\", ex);\\n    }\\n  }\\n\\n  async #renderXfaLayer() {\\n    let error = null;\\n    try {\\n      const result = await this.xfaLayer.render({\\n        viewport: this.viewport,\\n        intent: \\\"display\\\",\\n      });\\n      if (result?.textDivs && this._textHighlighter) {\\n        \u002F\u002F Given that the following method fetches the text asynchronously we\\n        \u002F\u002F can invoke it *before* appending the xfaLayer to the DOM (below),\\n        \u002F\u002F since a pending search-highlight\u002Fscroll operation thus won't run\\n        \u002F\u002F until after the xfaLayer is available in the viewer.\\n        this.#buildXfaTextContentItems(result.textDivs);\\n      }\\n    } catch (ex) {\\n      console.error(\\\"#renderXfaLayer:\\\", ex);\\n      error = ex;\\n    } finally {\\n      if (this.xfaLayer?.div) {\\n        \u002F\u002F Pause translation when inserting the xfaLayer in the DOM.\\n        this.l10n.pause();\\n        this.#addLayer(this.xfaLayer.div, \\\"xfaLayer\\\");\\n        this.l10n.resume();\\n      }\\n      this.#dispatchLayerRendered(\\\"xfalayerrendered\\\", error);\\n    }\\n  }\\n\\n  async #renderTextLayer() {\\n    if (!this.textLayer) {\\n      return;\\n    }\\n    let error = null;\\n    try {\\n      await this.textLayer.render({\\n        viewport: this.viewport,\\n      });\\n    } catch (ex) {\\n      if (ex instanceof AbortException) {\\n        return;\\n      }\\n      console.error(\\\"#renderTextLayer:\\\", ex);\\n      error = ex;\\n    }\\n    this.#dispatchLayerRendered(\\\"textlayerrendered\\\", error);\\n\\n    this.#renderStructTreeLayer();\\n  }\\n\\n  \u002F**\\n   * The structure tree is currently only supported when the text layer is\\n   * enabled and a canvas is used for rendering.\\n   *\\n   * The structure tree must be generated after the text layer for the\\n   * aria-owns to work.\\n   *\u002F\\n  async #renderStructTreeLayer() {\\n    if (!this.textLayer) {\\n      return;\\n    }\\n\\n    const treeDom = await this.structTreeLayer?.render();\\n    if (treeDom) {\\n      this.l10n.pause();\\n      this.structTreeLayer?.addElementsToTextLayer();\\n      if (this.canvas && treeDom.parentNode !== this.canvas) {\\n        \u002F\u002F Pause translation when inserting the structTree in the DOM.\\n        this.canvas.append(treeDom);\\n      }\\n      this.l10n.resume();\\n    }\\n    this.structTreeLayer?.show();\\n  }\\n\\n  async #buildXfaTextContentItems(textDivs) {\\n    const text = await this.pdfPage.getTextContent();\\n    const items = [];\\n    for (const item of text.items) {\\n      items.push(item.str);\\n    }\\n    this._textHighlighter.setTextMapping(textDivs, items);\\n    this._textHighlighter.enable();\\n  }\\n\\n  async #injectLinkAnnotations(textLayerPromise) {\\n    let error = null;\\n    try {\\n      await textLayerPromise;\\n\\n      if (!this.annotationLayer) {\\n        return; \u002F\u002F Rendering was cancelled while the textLayerPromise resolved.\\n      }\\n      await this.annotationLayer.injectLinkAnnotations({\\n        inferredLinks: Autolinker.processLinks(this),\\n        viewport: this.viewport,\\n        structTreeLayer: this.structTreeLayer,\\n      });\\n    } catch (ex) {\\n      console.error(\\\"#injectLinkAnnotations:\\\", ex);\\n      error = ex;\\n    }\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      this.#dispatchLayerRendered(\\\"linkannotationsadded\\\", error);\\n    }\\n  }\\n\\n  _resetCanvas() {\\n    super._resetCanvas();\\n    this.#originalViewport = null;\\n  }\\n\\n  reset({\\n    keepAnnotationLayer = false,\\n    keepAnnotationEditorLayer = false,\\n    keepXfaLayer = false,\\n    keepTextLayer = false,\\n    keepCanvasWrapper = false,\\n    preserveDetailViewState = false,\\n  } = {}) {\\n    this.cancelRendering({\\n      keepAnnotationLayer,\\n      keepAnnotationEditorLayer,\\n      keepXfaLayer,\\n      keepTextLayer,\\n    });\\n    this.renderingState = RenderingStates.INITIAL;\\n\\n    const div = this.div;\\n\\n    const childNodes = div.childNodes,\\n      annotationLayerNode =\\n        (keepAnnotationLayer && this.annotationLayer?.div) || null,\\n      annotationEditorLayerNode =\\n        (keepAnnotationEditorLayer && this.annotationEditorLayer?.div) || null,\\n      xfaLayerNode = (keepXfaLayer && this.xfaLayer?.div) || null,\\n      textLayerNode = (keepTextLayer && this.textLayer?.div) || null,\\n      canvasWrapperNode = (keepCanvasWrapper && this.#canvasWrapper) || null;\\n    for (let i = childNodes.length - 1; i >= 0; i--) {\\n      const node = childNodes[i];\\n      switch (node) {\\n        case annotationLayerNode:\\n        case annotationEditorLayerNode:\\n        case xfaLayerNode:\\n        case textLayerNode:\\n        case canvasWrapperNode:\\n          continue;\\n      }\\n      node.remove();\\n      const layerIndex = this.#layers.indexOf(node);\\n      if (layerIndex >= 0) {\\n        this.#layers[layerIndex] = null;\\n      }\\n    }\\n    div.removeAttribute(\\\"data-loaded\\\");\\n\\n    if (annotationLayerNode) {\\n      \u002F\u002F Hide the annotation layer until all elements are resized\\n      \u002F\u002F so they are not displayed on the already resized page.\\n      this.annotationLayer.hide();\\n    }\\n    if (annotationEditorLayerNode) {\\n      this.annotationEditorLayer.hide();\\n    }\\n    if (xfaLayerNode) {\\n      \u002F\u002F Hide the XFA layer until all elements are resized\\n      \u002F\u002F so they are not displayed on the already resized page.\\n      this.xfaLayer.hide();\\n    }\\n    if (textLayerNode) {\\n      this.textLayer.hide();\\n    }\\n    this.structTreeLayer?.hide();\\n\\n    if (!keepCanvasWrapper && this.#canvasWrapper) {\\n      this.#canvasWrapper = null;\\n      this._resetCanvas();\\n    }\\n\\n    if (!preserveDetailViewState) {\\n      this.detailView?.reset({ keepCanvas: keepCanvasWrapper });\\n\\n      \u002F\u002F If we are keeping the canvas around we must also keep the `detailView`\\n      \u002F\u002F object, so that next time we need a detail view we'll update the\\n      \u002F\u002F existing canvas rather than creating a new one.\\n      if (!keepCanvasWrapper) {\\n        this.detailView = null;\\n      }\\n    }\\n  }\\n\\n  toggleEditingMode(isEditing) {\\n    \u002F\u002F The page can be invisible, consequently there's no annotation layer and\\n    \u002F\u002F we can't know if there are editable annotations.\\n    \u002F\u002F So to avoid any issue when the page is rendered the #isEditing flag must\\n    \u002F\u002F be set.\\n    this.#isEditing = isEditing;\\n    if (!this.hasEditableAnnotations()) {\\n      return;\\n    }\\n    this.reset({\\n      keepAnnotationLayer: true,\\n      keepAnnotationEditorLayer: true,\\n      keepXfaLayer: true,\\n      keepTextLayer: true,\\n      keepCanvasWrapper: true,\\n    });\\n  }\\n\\n  updateVisibleArea(visibleArea) {\\n    if (this.enableDetailCanvas) {\\n      if (\\n        this.#needsRestrictedScaling &&\\n        this.maxCanvasPixels > 0 &&\\n        visibleArea\\n      ) {\\n        this.detailView ??= new PDFPageDetailView({ pageView: this });\\n        this.detailView.update({ visibleArea });\\n      } else if (this.detailView) {\\n        this.detailView.reset();\\n        this.detailView = null;\\n      }\\n    }\\n  }\\n\\n  \u002F**\\n   * @typedef {Object} PDFPageViewUpdateParameters\\n   * @property {number} [scale] The new scale, if specified.\\n   * @property {number} [rotation] The new rotation, if specified.\\n   * @property {Promise\u003COptionalContentConfig>} [optionalContentConfigPromise]\\n   *   A promise that is resolved with an {@link OptionalContentConfig}\\n   *   instance. The default value is `null`.\\n   * @property {number} [drawingDelay]\\n   *\u002F\\n\\n  \u002F**\\n   * Update e.g. the scale and\u002For rotation of the page.\\n   * @param {PDFPageViewUpdateParameters} params\\n   *\u002F\\n  update({\\n    scale = 0,\\n    rotation = null,\\n    optionalContentConfigPromise = null,\\n    drawingDelay = -1,\\n  }) {\\n    this.scale = scale || this.scale;\\n    if (typeof rotation === \\\"number\\\") {\\n      this.rotation = rotation; \u002F\u002F The rotation may be zero.\\n    }\\n    if (optionalContentConfigPromise instanceof Promise) {\\n      this._optionalContentConfigPromise = optionalContentConfigPromise;\\n\\n      \u002F\u002F Ensure that the thumbnails always display the *initial* document state,\\n      \u002F\u002F for documents with optional content.\\n      optionalContentConfigPromise.then(optionalContentConfig => {\\n        if (\\n          optionalContentConfigPromise !== this._optionalContentConfigPromise\\n        ) {\\n          return;\\n        }\\n        this.#useThumbnailCanvas.initialOptionalContent =\\n          optionalContentConfig.hasInitialVisibility;\\n      });\\n    }\\n    this.#useThumbnailCanvas.directDrawing = true;\\n\\n    const totalRotation = (this.rotation + this.pdfPageRotate) % 360;\\n    this.viewport = this.viewport.clone({\\n      scale: this.scale * PixelsPerInch.PDF_TO_CSS_UNITS,\\n      rotation: totalRotation,\\n    });\\n    this.#setDimensions();\\n\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) &&\\n      this._isStandalone\\n    ) {\\n      this._container?.style.setProperty(\\\"--scale-factor\\\", this.viewport.scale);\\n    }\\n\\n    this.#computeScale();\\n\\n    if (this.canvas) {\\n      const onlyCssZoom =\\n        this.#hasRestrictedScaling && this.#needsRestrictedScaling;\\n      const postponeDrawing = drawingDelay >= 0 && drawingDelay \u003C 1000;\\n\\n      if (postponeDrawing || onlyCssZoom) {\\n        if (\\n          postponeDrawing &&\\n          !onlyCssZoom &&\\n          this.renderingState !== RenderingStates.FINISHED\\n        ) {\\n          this.cancelRendering({\\n            keepAnnotationLayer: true,\\n            keepAnnotationEditorLayer: true,\\n            keepXfaLayer: true,\\n            keepTextLayer: true,\\n            cancelExtraDelay: drawingDelay,\\n          });\\n          \u002F\u002F It isn't really finished, but once we have finished\\n          \u002F\u002F to postpone, we'll call this.reset(...) which will set\\n          \u002F\u002F the rendering state to INITIAL, hence the next call to\\n          \u002F\u002F PDFViewer.update() will trigger a redraw (if it's mandatory).\\n          this.renderingState = RenderingStates.FINISHED;\\n          \u002F\u002F Ensure that the thumbnails won't become partially (or fully) blank,\\n          \u002F\u002F if the sidebar is opened before the actual rendering is done.\\n          this.#useThumbnailCanvas.directDrawing = false;\\n        }\\n\\n        this.cssTransform({\\n          redrawAnnotationLayer: true,\\n          redrawAnnotationEditorLayer: true,\\n          redrawXfaLayer: true,\\n          redrawTextLayer: !postponeDrawing,\\n          hideTextLayer: postponeDrawing,\\n        });\\n\\n        \u002F\u002F The \\\"pagerendered\\\"-event will be dispatched once the actual\\n        \u002F\u002F rendering is done, hence don't dispatch it here as well.\\n        if (!postponeDrawing) {\\n          this.detailView?.update({ underlyingViewUpdated: true });\\n\\n          this.dispatchPageRendered(\\n            \u002F* cssTransform *\u002F true,\\n            \u002F* isDetailView *\u002F false\\n          );\\n        }\\n        return;\\n      }\\n    }\\n    this.cssTransform({});\\n    this.reset({\\n      keepAnnotationLayer: true,\\n      keepAnnotationEditorLayer: true,\\n      keepXfaLayer: true,\\n      keepTextLayer: true,\\n      keepCanvasWrapper: true,\\n      \u002F\u002F It will be reset by the .update call below\\n      preserveDetailViewState: true,\\n    });\\n\\n    this.detailView?.update({ underlyingViewUpdated: true });\\n  }\\n\\n  #computeScale() {\\n    const { width, height } = this.viewport;\\n    const outputScale = (this.outputScale = new OutputScale());\\n\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) &&\\n      this.maxCanvasPixels === 0\\n    ) {\\n      const invScale = 1 \u002F this.scale;\\n      \u002F\u002F Use a scale that makes the canvas have the originally intended size\\n      \u002F\u002F of the page.\\n      outputScale.sx *= invScale;\\n      outputScale.sy *= invScale;\\n      this.#needsRestrictedScaling = true;\\n    } else {\\n      this.#needsRestrictedScaling = outputScale.limitCanvas(\\n        width,\\n        height,\\n        this.maxCanvasPixels,\\n        this.maxCanvasDim,\\n        this.capCanvasAreaFactor\\n      );\\n    }\\n  }\\n\\n  \u002F**\\n   * PLEASE NOTE: Most likely you want to use the `this.reset()` method,\\n   *              rather than calling this one directly.\\n   *\u002F\\n  cancelRendering({\\n    keepAnnotationLayer = false,\\n    keepAnnotationEditorLayer = false,\\n    keepXfaLayer = false,\\n    keepTextLayer = false,\\n    cancelExtraDelay = 0,\\n  } = {}) {\\n    super.cancelRendering({ cancelExtraDelay });\\n\\n    if (this.textLayer && (!keepTextLayer || !this.textLayer.div)) {\\n      this.textLayer.cancel();\\n      this.textLayer = null;\\n    }\\n    if (\\n      this.annotationLayer &&\\n      (!keepAnnotationLayer || !this.annotationLayer.div)\\n    ) {\\n      this.annotationLayer.cancel();\\n      this.annotationLayer = null;\\n      this._annotationCanvasMap = null;\\n    }\\n    if (this.structTreeLayer && !this.textLayer) {\\n      this.structTreeLayer = null;\\n    }\\n    if (\\n      this.annotationEditorLayer &&\\n      (!keepAnnotationEditorLayer || !this.annotationEditorLayer.div)\\n    ) {\\n      if (this.drawLayer) {\\n        this.drawLayer.cancel();\\n        this.drawLayer = null;\\n      }\\n      this.annotationEditorLayer.cancel();\\n      this.annotationEditorLayer = null;\\n    }\\n    if (this.xfaLayer && (!keepXfaLayer || !this.xfaLayer.div)) {\\n      this.xfaLayer.cancel();\\n      this.xfaLayer = null;\\n      this._textHighlighter?.disable();\\n    }\\n  }\\n\\n  cssTransform({\\n    redrawAnnotationLayer = false,\\n    redrawAnnotationEditorLayer = false,\\n    redrawXfaLayer = false,\\n    redrawTextLayer = false,\\n    hideTextLayer = false,\\n  }) {\\n    const { canvas } = this;\\n    if (!canvas) {\\n      return;\\n    }\\n\\n    const originalViewport = this.#originalViewport;\\n    if (this.viewport !== originalViewport) {\\n      \u002F\u002F The canvas may have been originally rotated; rotate relative to that.\\n      const relativeRotation =\\n        (360 + this.viewport.rotation - originalViewport.rotation) % 360;\\n      if (relativeRotation === 90 || relativeRotation === 270) {\\n        const { width, height } = this.viewport;\\n        \u002F\u002F Scale x and y because of the rotation.\\n        const scaleX = height \u002F width;\\n        const scaleY = width \u002F height;\\n        canvas.style.transform = `rotate(${relativeRotation}deg) scale(${scaleX},${scaleY})`;\\n      } else {\\n        canvas.style.transform =\\n          relativeRotation === 0 ? \\\"\\\" : `rotate(${relativeRotation}deg)`;\\n      }\\n    }\\n\\n    if (redrawAnnotationLayer && this.annotationLayer) {\\n      this.#renderAnnotationLayer();\\n    }\\n    if (redrawAnnotationEditorLayer && this.annotationEditorLayer) {\\n      if (this.drawLayer) {\\n        this.#renderDrawLayer();\\n      }\\n      this.#renderAnnotationEditorLayer();\\n    }\\n    if (redrawXfaLayer && this.xfaLayer) {\\n      this.#renderXfaLayer();\\n    }\\n\\n    if (this.textLayer) {\\n      if (hideTextLayer) {\\n        this.textLayer.hide();\\n        this.structTreeLayer?.hide();\\n      } else if (redrawTextLayer) {\\n        this.#renderTextLayer();\\n      }\\n    }\\n  }\\n\\n  get width() {\\n    return this.viewport.width;\\n  }\\n\\n  get height() {\\n    return this.viewport.height;\\n  }\\n\\n  getPagePoint(x, y) {\\n    return this.viewport.convertToPdfPoint(x, y);\\n  }\\n\\n  \u002F\u002F Wrap the canvas so that if it has a CSS transform for high DPI the\\n  \u002F\u002F overflow will be hidden in Firefox.\\n  _ensureCanvasWrapper() {\\n    let canvasWrapper = this.#canvasWrapper;\\n    if (!canvasWrapper) {\\n      canvasWrapper = this.#canvasWrapper = document.createElement(\\\"div\\\");\\n      canvasWrapper.classList.add(\\\"canvasWrapper\\\");\\n      this.#addLayer(canvasWrapper, \\\"canvasWrapper\\\");\\n    }\\n    return canvasWrapper;\\n  }\\n\\n  _getRenderingContext(canvasContext, transform) {\\n    return {\\n      canvasContext,\\n      transform,\\n      viewport: this.viewport,\\n      annotationMode: this.#annotationMode,\\n      optionalContentConfigPromise: this._optionalContentConfigPromise,\\n      annotationCanvasMap: this._annotationCanvasMap,\\n      pageColors: this.pageColors,\\n      isEditing: this.#isEditing,\\n    };\\n  }\\n\\n  async draw() {\\n    if (this.renderingState !== RenderingStates.INITIAL) {\\n      console.error(\\\"Must be in new state before drawing\\\");\\n      this.reset(); \u002F\u002F Ensure that we reset all state to prevent issues.\\n    }\\n    const { div, l10n, pdfPage, viewport } = this;\\n\\n    if (!pdfPage) {\\n      this.renderingState = RenderingStates.FINISHED;\\n      throw new Error(\\\"pdfPage is not loaded\\\");\\n    }\\n\\n    this.renderingState = RenderingStates.RUNNING;\\n\\n    const canvasWrapper = this._ensureCanvasWrapper();\\n\\n    if (\\n      !this.textLayer &&\\n      this.#textLayerMode !== TextLayerMode.DISABLE &&\\n      !pdfPage.isPureXfa\\n    ) {\\n      this._accessibilityManager ||= new TextAccessibilityManager();\\n\\n      this.textLayer = new TextLayerBuilder({\\n        pdfPage,\\n        highlighter: this._textHighlighter,\\n        accessibilityManager: this._accessibilityManager,\\n        enablePermissions:\\n          this.#textLayerMode === TextLayerMode.ENABLE_PERMISSIONS,\\n        onAppend: textLayerDiv => {\\n          \u002F\u002F Pause translation when inserting the textLayer in the DOM.\\n          this.l10n.pause();\\n          this.#addLayer(textLayerDiv, \\\"textLayer\\\");\\n          this.l10n.resume();\\n        },\\n      });\\n    }\\n\\n    if (\\n      !this.annotationLayer &&\\n      this.#annotationMode !== AnnotationMode.DISABLE\\n    ) {\\n      const {\\n        annotationStorage,\\n        annotationEditorUIManager,\\n        downloadManager,\\n        enableScripting,\\n        fieldObjectsPromise,\\n        hasJSActionsPromise,\\n        linkService,\\n      } = this.#layerProperties;\\n\\n      this._annotationCanvasMap ||= new Map();\\n      this.annotationLayer = new AnnotationLayerBuilder({\\n        pdfPage,\\n        annotationStorage,\\n        imageResourcesPath: this.imageResourcesPath,\\n        renderForms: this.#annotationMode === AnnotationMode.ENABLE_FORMS,\\n        linkService,\\n        downloadManager,\\n        enableScripting,\\n        hasJSActionsPromise,\\n        fieldObjectsPromise,\\n        annotationCanvasMap: this._annotationCanvasMap,\\n        accessibilityManager: this._accessibilityManager,\\n        annotationEditorUIManager,\\n        onAppend: annotationLayerDiv => {\\n          this.#addLayer(annotationLayerDiv, \\\"annotationLayer\\\");\\n        },\\n      });\\n    }\\n\\n    const { width, height } = viewport;\\n    this.#originalViewport = viewport;\\n\\n    const { canvas, prevCanvas, ctx } = this._createCanvas(newCanvas => {\\n      \u002F\u002F Always inject the canvas as the first element in the wrapper.\\n      canvasWrapper.prepend(newCanvas);\\n    });\\n    canvas.setAttribute(\\\"role\\\", \\\"presentation\\\");\\n\\n    if (!this.outputScale) {\\n      this.#computeScale();\\n    }\\n    const { outputScale } = this;\\n    this.#hasRestrictedScaling = this.#needsRestrictedScaling;\\n\\n    const sfx = approximateFraction(outputScale.sx);\\n    const sfy = approximateFraction(outputScale.sy);\\n\\n    const canvasWidth = (canvas.width = floorToDivide(\\n      calcRound(width * outputScale.sx),\\n      sfx[0]\\n    ));\\n    const canvasHeight = (canvas.height = floorToDivide(\\n      calcRound(height * outputScale.sy),\\n      sfy[0]\\n    ));\\n    const pageWidth = floorToDivide(calcRound(width), sfx[1]);\\n    const pageHeight = floorToDivide(calcRound(height), sfy[1]);\\n    outputScale.sx = canvasWidth \u002F pageWidth;\\n    outputScale.sy = canvasHeight \u002F pageHeight;\\n\\n    if (this.#scaleRoundX !== sfx[1]) {\\n      div.style.setProperty(\\\"--scale-round-x\\\", `${sfx[1]}px`);\\n      this.#scaleRoundX = sfx[1];\\n    }\\n    if (this.#scaleRoundY !== sfy[1]) {\\n      div.style.setProperty(\\\"--scale-round-y\\\", `${sfy[1]}px`);\\n      this.#scaleRoundY = sfy[1];\\n    }\\n\\n    \u002F\u002F Rendering area\\n    const transform = outputScale.scaled\\n      ? [outputScale.sx, 0, 0, outputScale.sy, 0, 0]\\n      : null;\\n    const resultPromise = this._drawCanvas(\\n      this._getRenderingContext(ctx, transform),\\n      () => {\\n        prevCanvas?.remove();\\n        this._resetCanvas();\\n      },\\n      renderTask => {\\n        \u002F\u002F Ensure that the thumbnails won't become partially (or fully) blank,\\n        \u002F\u002F for documents that contain interactive form elements.\\n        this.#useThumbnailCanvas.regularAnnotations =\\n          !renderTask.separateAnnots;\\n\\n        this.dispatchPageRendered(\\n          \u002F* cssTransform *\u002F false,\\n          \u002F* isDetailView *\u002F false\\n        );\\n      }\\n    ).then(async () => {\\n      this.structTreeLayer ||= new StructTreeLayerBuilder(\\n        pdfPage,\\n        viewport.rawDims\\n      );\\n\\n      const textLayerPromise = this.#renderTextLayer();\\n\\n      if (this.annotationLayer) {\\n        await this.#renderAnnotationLayer();\\n\\n        if (this.#enableAutoLinking && this.annotationLayer && this.textLayer) {\\n          await this.#injectLinkAnnotations(textLayerPromise);\\n        }\\n      }\\n\\n      const { annotationEditorUIManager } = this.#layerProperties;\\n\\n      if (!annotationEditorUIManager) {\\n        return;\\n      }\\n      this.drawLayer ||= new DrawLayerBuilder({\\n        pageIndex: this.id,\\n      });\\n      await this.#renderDrawLayer();\\n      this.drawLayer.setParent(canvasWrapper);\\n\\n      this.annotationEditorLayer ||= new AnnotationEditorLayerBuilder({\\n        uiManager: annotationEditorUIManager,\\n        pdfPage,\\n        l10n,\\n        structTreeLayer: this.structTreeLayer,\\n        accessibilityManager: this._accessibilityManager,\\n        annotationLayer: this.annotationLayer?.annotationLayer,\\n        textLayer: this.textLayer,\\n        drawLayer: this.drawLayer.getDrawLayer(),\\n        onAppend: annotationEditorLayerDiv => {\\n          this.#addLayer(annotationEditorLayerDiv, \\\"annotationEditorLayer\\\");\\n        },\\n      });\\n      this.#renderAnnotationEditorLayer();\\n    });\\n\\n    if (pdfPage.isPureXfa) {\\n      if (!this.xfaLayer) {\\n        const { annotationStorage, linkService } = this.#layerProperties;\\n\\n        this.xfaLayer = new XfaLayerBuilder({\\n          pdfPage,\\n          annotationStorage,\\n          linkService,\\n        });\\n      }\\n      this.#renderXfaLayer();\\n    }\\n\\n    div.setAttribute(\\\"data-loaded\\\", true);\\n\\n    this.dispatchPageRender();\\n\\n    return resultPromise;\\n  }\\n\\n  \u002F**\\n   * @param {string|null} label\\n   *\u002F\\n  setPageLabel(label) {\\n    this.pageLabel = typeof label === \\\"string\\\" ? label : null;\\n\\n    this.div.setAttribute(\\n      \\\"data-l10n-args\\\",\\n      JSON.stringify({ page: this.pageLabel ?? this.id })\\n    );\\n\\n    if (this.pageLabel !== null) {\\n      this.div.setAttribute(\\\"data-page-label\\\", this.pageLabel);\\n    } else {\\n      this.div.removeAttribute(\\\"data-page-label\\\");\\n    }\\n  }\\n\\n  \u002F**\\n   * For use by the `PDFThumbnailView.setImage`-method.\\n   * @ignore\\n   *\u002F\\n  get thumbnailCanvas() {\\n    const { directDrawing, initialOptionalContent, regularAnnotations } =\\n      this.#useThumbnailCanvas;\\n    return directDrawing && initialOptionalContent && regularAnnotations\\n      ? this.canvas\\n      : null;\\n  }\\n}\\n\\nexport { PDFPageView };\\n\",\"\u002F* Copyright 2014 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fapi\\\").PDFDocumentProxy} PDFDocumentProxy *\u002F\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fapi\\\").PDFPageProxy} PDFPageProxy *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fdisplay_utils\\\").PageViewport} PageViewport *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Foptional_content_config\\\").OptionalContentConfig} OptionalContentConfig *\u002F\\n\u002F** @typedef {import(\\\".\u002Fevent_utils\\\").EventBus} EventBus *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IDownloadManager} IDownloadManager *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IL10n} IL10n *\u002F\\n\u002F** @typedef {import(\\\".\u002Finterfaces\\\").IPDFLinkService} IPDFLinkService *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fpdf_find_controller\\\").PDFFindController} PDFFindController *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\".\u002Fpdf_scripting_manager\\\").PDFScriptingManager} PDFScriptingManager *\u002F\\n\\nimport {\\n  AnnotationEditorType,\\n  AnnotationEditorUIManager,\\n  AnnotationMode,\\n  MathClamp,\\n  PermissionFlag,\\n  PixelsPerInch,\\n  shadow,\\n  stopEvent,\\n  version,\\n} from \\\"pdfjs-lib\\\";\\nimport {\\n  DEFAULT_SCALE,\\n  DEFAULT_SCALE_DELTA,\\n  DEFAULT_SCALE_VALUE,\\n  docStyle,\\n  getVisibleElements,\\n  isPortraitOrientation,\\n  isValidRotation,\\n  isValidScrollMode,\\n  isValidSpreadMode,\\n  MAX_AUTO_SCALE,\\n  MAX_SCALE,\\n  MIN_SCALE,\\n  PresentationModeState,\\n  removeNullCharacters,\\n  RenderingStates,\\n  SCROLLBAR_PADDING,\\n  scrollIntoView,\\n  ScrollMode,\\n  SpreadMode,\\n  TextLayerMode,\\n  UNKNOWN_SCALE,\\n  VERTICAL_PADDING,\\n  watchScroll,\\n} from \\\".\u002Fui_utils.js\\\";\\nimport { GenericL10n } from \\\"web-null_l10n\\\";\\nimport { PDFPageView } from \\\".\u002Fpdf_page_view.js\\\";\\nimport { PDFRenderingQueue } from \\\".\u002Fpdf_rendering_queue.js\\\";\\nimport { SimpleLinkService } from \\\".\u002Fpdf_link_service.js\\\";\\n\\nconst DEFAULT_CACHE_SIZE = 10;\\n\\nconst PagesCountLimit = {\\n  FORCE_SCROLL_MODE_PAGE: 10000,\\n  FORCE_LAZY_PAGE_INIT: 5000,\\n  PAUSE_EAGER_PAGE_INIT: 250,\\n};\\n\\nfunction isValidAnnotationEditorMode(mode) {\\n  return (\\n    Object.values(AnnotationEditorType).includes(mode) &&\\n    mode !== AnnotationEditorType.DISABLE\\n  );\\n}\\n\\n\u002F**\\n * @typedef {Object} PDFViewerOptions\\n * @property {HTMLDivElement} container - The container for the viewer element.\\n * @property {HTMLDivElement} [viewer] - The viewer element.\\n * @property {EventBus} eventBus - The application event bus.\\n * @property {IPDFLinkService} [linkService] - The navigation\u002Flinking service.\\n * @property {IDownloadManager} [downloadManager] - The download manager\\n *   component.\\n * @property {PDFFindController} [findController] - The find controller\\n *   component.\\n * @property {PDFScriptingManager} [scriptingManager] - The scripting manager\\n *   component.\\n * @property {PDFRenderingQueue} [renderingQueue] - The rendering queue object.\\n * @property {boolean} [removePageBorders] - Removes the border shadow around\\n *   the pages. The default value is `false`.\\n * @property {number} [textLayerMode] - Controls if the text layer used for\\n *   selection and searching is created. The constants from {TextLayerMode}\\n *   should be used. The default value is `TextLayerMode.ENABLE`.\\n * @property {number} [annotationMode] - Controls if the annotation layer is\\n *   created, and if interactive form elements or `AnnotationStorage`-data are\\n *   being rendered. The constants from {@link AnnotationMode} should be used;\\n *   see also {@link RenderParameters} and {@link GetOperatorListParameters}.\\n *   The default value is `AnnotationMode.ENABLE_FORMS`.\\n * @property {number} [annotationEditorMode] - Enables the creation and editing\\n *   of new Annotations. The constants from {@link AnnotationEditorType} should\\n *   be used. The default value is `AnnotationEditorType.NONE`.\\n * @property {string} [annotationEditorHighlightColors] - A comma separated list\\n *   of colors to propose to highlight some text in the pdf.\\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\\n *   mainly for annotation icons. Include trailing slash.\\n * @property {boolean} [enablePrintAutoRotate] - Enables automatic rotation of\\n *   landscape pages upon printing. The default is `false`.\\n * @property {number} [maxCanvasPixels] - The maximum supported canvas size in\\n *   total pixels, i.e. width * height. Use `-1` for no limit, or `0` for\\n *   CSS-only zooming. The default value is 4096 * 8192 (32 mega-pixels).\\n * @property {number} [maxCanvasDim] - The maximum supported canvas dimension,\\n *   in either width or height. Use `-1` for no limit.\\n *   The default value is 32767.\\n * @property {number} [capCanvasAreaFactor] - Cap the canvas area to the\\n *   viewport increased by the value in percent. Use `-1` for no limit.\\n *   The default value is 200%.\\n * @property {boolean} [enableDetailCanvas] - When enabled, if the rendered\\n *   pages would need a canvas that is larger than `maxCanvasPixels` or\\n *   `maxCanvasDim`, it will draw a second canvas on top of the CSS-zoomed one,\\n *   that only renders the part of the page that is close to the viewport.\\n *   The default value is `true`.\\n * @property {IL10n} [l10n] - Localization service.\\n * @property {boolean} [enablePermissions] - Enables PDF document permissions,\\n *   when they exist. The default value is `false`.\\n * @property {Object} [pageColors] - Overwrites background and foreground colors\\n *   with user defined ones in order to improve readability in high contrast\\n *   mode.\\n * @property {boolean} [enableHWA] - Enables hardware acceleration for\\n *   rendering. The default value is `false`.\\n * @property {boolean} [supportsPinchToZoom] - Enable zooming on pinch gesture.\\n *   The default value is `true`.\\n * @property {boolean} [enableAutoLinking] - Enable creation of hyperlinks from\\n *   text that look like URLs. The default value is `true`.\\n * @property {number} [minDurationToUpdateCanvas] - Minimum duration to wait\\n *   before updating the canvas. The default value is `500`.\\n *\u002F\\n\\nclass PDFPageViewBuffer {\\n  \u002F\u002F Here we rely on the fact that `Set`s preserve the insertion order.\\n  #buf = new Set();\\n\\n  #size = 0;\\n\\n  constructor(size) {\\n    this.#size = size;\\n  }\\n\\n  push(view) {\\n    const buf = this.#buf;\\n    if (buf.has(view)) {\\n      buf.delete(view); \u002F\u002F Move the view to the \\\"end\\\" of the buffer.\\n    }\\n    buf.add(view);\\n\\n    if (buf.size > this.#size) {\\n      this.#destroyFirstView();\\n    }\\n  }\\n\\n  \u002F**\\n   * After calling resize, the size of the buffer will be `newSize`.\\n   * The optional parameter `idsToKeep` is, if present, a Set of page-ids to\\n   * push to the back of the buffer, delaying their destruction. The size of\\n   * `idsToKeep` has no impact on the final size of the buffer; if `idsToKeep`\\n   * is larger than `newSize`, some of those pages will be destroyed anyway.\\n   *\u002F\\n  resize(newSize, idsToKeep = null) {\\n    this.#size = newSize;\\n\\n    const buf = this.#buf;\\n    if (idsToKeep) {\\n      const ii = buf.size;\\n      let i = 1;\\n      for (const view of buf) {\\n        if (idsToKeep.has(view.id)) {\\n          buf.delete(view); \u002F\u002F Move the view to the \\\"end\\\" of the buffer.\\n          buf.add(view);\\n        }\\n        if (++i > ii) {\\n          break;\\n        }\\n      }\\n    }\\n\\n    while (buf.size > this.#size) {\\n      this.#destroyFirstView();\\n    }\\n  }\\n\\n  has(view) {\\n    return this.#buf.has(view);\\n  }\\n\\n  [Symbol.iterator]() {\\n    return this.#buf.keys();\\n  }\\n\\n  #destroyFirstView() {\\n    const firstView = this.#buf.keys().next().value;\\n\\n    firstView?.destroy();\\n    this.#buf.delete(firstView);\\n  }\\n}\\n\\n\u002F**\\n * Simple viewer control to display PDF content\u002Fpages.\\n *\u002F\\nclass PDFViewer {\\n  #buffer = null;\\n\\n  #altTextManager = null;\\n\\n  #annotationEditorHighlightColors = null;\\n\\n  #annotationEditorMode = AnnotationEditorType.NONE;\\n\\n  #annotationEditorUIManager = null;\\n\\n  #annotationMode = AnnotationMode.ENABLE_FORMS;\\n\\n  #containerTopLeft = null;\\n\\n  #editorUndoBar = null;\\n\\n  #enableHWA = false;\\n\\n  #enableHighlightFloatingButton = false;\\n\\n  #enablePermissions = false;\\n\\n  #enableUpdatedAddImage = false;\\n\\n  #enableNewAltTextWhenAddingImage = false;\\n\\n  #enableAutoLinking = true;\\n\\n  #eventAbortController = null;\\n\\n  #minDurationToUpdateCanvas = 0;\\n\\n  #mlManager = null;\\n\\n  #scrollTimeoutId = null;\\n\\n  #switchAnnotationEditorModeAC = null;\\n\\n  #switchAnnotationEditorModeTimeoutId = null;\\n\\n  #getAllTextInProgress = false;\\n\\n  #hiddenCopyElement = null;\\n\\n  #interruptCopyCondition = false;\\n\\n  #previousContainerHeight = 0;\\n\\n  #resizeObserver = new ResizeObserver(this.#resizeObserverCallback.bind(this));\\n\\n  #scrollModePageState = null;\\n\\n  #scaleTimeoutId = null;\\n\\n  #signatureManager = null;\\n\\n  #supportsPinchToZoom = true;\\n\\n  #textLayerMode = TextLayerMode.ENABLE;\\n\\n  \u002F**\\n   * @param {PDFViewerOptions} options\\n   *\u002F\\n  constructor(options) {\\n    const viewerVersion =\\n      typeof PDFJSDev !== \\\"undefined\\\" ? PDFJSDev.eval(\\\"BUNDLE_VERSION\\\") : null;\\n    if (version !== viewerVersion) {\\n      throw new Error(\\n        `The API version \\\"${version}\\\" does not match the Viewer version \\\"${viewerVersion}\\\".`\\n      );\\n    }\\n    this.container = options.container;\\n    this.viewer = options.viewer || options.container.firstElementChild;\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      if (this.container?.tagName !== \\\"DIV\\\" || this.viewer?.tagName !== \\\"DIV\\\") {\\n        throw new Error(\\\"Invalid `container` and\u002For `viewer` option.\\\");\\n      }\\n\\n      if (\\n        this.container.offsetParent &&\\n        getComputedStyle(this.container).position !== \\\"absolute\\\"\\n      ) {\\n        throw new Error(\\\"The `container` must be absolutely positioned.\\\");\\n      }\\n    }\\n    this.#resizeObserver.observe(this.container);\\n\\n    this.eventBus = options.eventBus;\\n    this.linkService = options.linkService || new SimpleLinkService();\\n    this.downloadManager = options.downloadManager || null;\\n    this.findController = options.findController || null;\\n    this.#altTextManager = options.altTextManager || null;\\n    this.#signatureManager = options.signatureManager || null;\\n    this.#editorUndoBar = options.editorUndoBar || null;\\n\\n    if (this.findController) {\\n      this.findController.onIsPageVisible = pageNumber =>\\n        this._getVisiblePages().ids.has(pageNumber);\\n    }\\n    this._scriptingManager = options.scriptingManager || null;\\n    this.#textLayerMode = options.textLayerMode ?? TextLayerMode.ENABLE;\\n    this.#annotationMode =\\n      options.annotationMode ?? AnnotationMode.ENABLE_FORMS;\\n    this.#annotationEditorMode =\\n      options.annotationEditorMode ?? AnnotationEditorType.NONE;\\n    this.#annotationEditorHighlightColors =\\n      options.annotationEditorHighlightColors || null;\\n    this.#enableHighlightFloatingButton =\\n      options.enableHighlightFloatingButton === true;\\n    this.#enableUpdatedAddImage = options.enableUpdatedAddImage === true;\\n    this.#enableNewAltTextWhenAddingImage =\\n      options.enableNewAltTextWhenAddingImage === true;\\n    this.imageResourcesPath = options.imageResourcesPath || \\\"\\\";\\n    this.enablePrintAutoRotate = options.enablePrintAutoRotate || false;\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      this.removePageBorders = options.removePageBorders || false;\\n    }\\n    this.maxCanvasPixels = options.maxCanvasPixels;\\n    this.maxCanvasDim = options.maxCanvasDim;\\n    this.capCanvasAreaFactor = options.capCanvasAreaFactor;\\n    this.enableDetailCanvas = options.enableDetailCanvas ?? true;\\n    this.l10n = options.l10n;\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      this.l10n ||= new GenericL10n();\\n    }\\n    this.#enablePermissions = options.enablePermissions || false;\\n    this.pageColors = options.pageColors || null;\\n    this.#mlManager = options.mlManager || null;\\n    this.#enableHWA = options.enableHWA || false;\\n    this.#supportsPinchToZoom = options.supportsPinchToZoom !== false;\\n    this.#enableAutoLinking = options.enableAutoLinking !== false;\\n    this.#minDurationToUpdateCanvas = options.minDurationToUpdateCanvas ?? 500;\\n\\n    this.defaultRenderingQueue = !options.renderingQueue;\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) &&\\n      this.defaultRenderingQueue\\n    ) {\\n      \u002F\u002F Custom rendering queue is not specified, using default one\\n      this.renderingQueue = new PDFRenderingQueue();\\n      this.renderingQueue.setViewer(this);\\n    } else {\\n      this.renderingQueue = options.renderingQueue;\\n    }\\n\\n    const { abortSignal } = options;\\n    abortSignal?.addEventListener(\\n      \\\"abort\\\",\\n      () => {\\n        this.#resizeObserver.disconnect();\\n        this.#resizeObserver = null;\\n      },\\n      { once: true }\\n    );\\n\\n    this.scroll = watchScroll(\\n      this.container,\\n      this._scrollUpdate.bind(this),\\n      abortSignal\\n    );\\n    this.presentationModeState = PresentationModeState.UNKNOWN;\\n    this._resetView();\\n\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) &&\\n      this.removePageBorders\\n    ) {\\n      this.viewer.classList.add(\\\"removePageBorders\\\");\\n    }\\n\\n    this.#updateContainerHeightCss();\\n\\n    \u002F\u002F Trigger API-cleanup, once thumbnail rendering has finished,\\n    \u002F\u002F if the relevant pageView is *not* cached in the buffer.\\n    this.eventBus._on(\\\"thumbnailrendered\\\", ({ pageNumber, pdfPage }) => {\\n      const pageView = this._pages[pageNumber - 1];\\n      if (!this.#buffer.has(pageView)) {\\n        pdfPage?.cleanup();\\n      }\\n    });\\n\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) &&\\n      !options.l10n\\n    ) {\\n      \u002F\u002F Ensure that Fluent is connected in e.g. the COMPONENTS build.\\n      this.l10n.translate(this.container);\\n    }\\n  }\\n\\n  get pagesCount() {\\n    return this._pages.length;\\n  }\\n\\n  getPageView(index) {\\n    return this._pages[index];\\n  }\\n\\n  getCachedPageViews() {\\n    return new Set(this.#buffer);\\n  }\\n\\n  \u002F**\\n   * @type {boolean} - True if all {PDFPageView} objects are initialized.\\n   *\u002F\\n  get pageViewsReady() {\\n    \u002F\u002F Prevent printing errors when 'disableAutoFetch' is set, by ensuring\\n    \u002F\u002F that *all* pages have in fact been completely loaded.\\n    return this._pages.every(pageView => pageView?.pdfPage);\\n  }\\n\\n  \u002F**\\n   * @type {boolean}\\n   *\u002F\\n  get renderForms() {\\n    return this.#annotationMode === AnnotationMode.ENABLE_FORMS;\\n  }\\n\\n  \u002F**\\n   * @type {boolean}\\n   *\u002F\\n  get enableScripting() {\\n    return !!this._scriptingManager;\\n  }\\n\\n  \u002F**\\n   * @type {number}\\n   *\u002F\\n  get currentPageNumber() {\\n    return this._currentPageNumber;\\n  }\\n\\n  \u002F**\\n   * @param {number} val - The page number.\\n   *\u002F\\n  set currentPageNumber(val) {\\n    if (!Number.isInteger(val)) {\\n      throw new Error(\\\"Invalid page number.\\\");\\n    }\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    \u002F\u002F The intent can be to just reset a scroll position and\u002For scale.\\n    if (!this._setCurrentPageNumber(val, \u002F* resetCurrentPageView = *\u002F true)) {\\n      console.error(`currentPageNumber: \\\"${val}\\\" is not a valid page.`);\\n    }\\n  }\\n\\n  \u002F**\\n   * @returns {boolean} Whether the pageNumber is valid (within bounds).\\n   * @private\\n   *\u002F\\n  _setCurrentPageNumber(val, resetCurrentPageView = false) {\\n    if (this._currentPageNumber === val) {\\n      if (resetCurrentPageView) {\\n        this.#resetCurrentPageView();\\n      }\\n      return true;\\n    }\\n\\n    if (!(0 \u003C val && val \u003C= this.pagesCount)) {\\n      return false;\\n    }\\n    const previous = this._currentPageNumber;\\n    this._currentPageNumber = val;\\n\\n    this.eventBus.dispatch(\\\"pagechanging\\\", {\\n      source: this,\\n      pageNumber: val,\\n      pageLabel: this._pageLabels?.[val - 1] ?? null,\\n      previous,\\n    });\\n\\n    if (resetCurrentPageView) {\\n      this.#resetCurrentPageView();\\n    }\\n    return true;\\n  }\\n\\n  \u002F**\\n   * @type {string|null} Returns the current page label, or `null` if no page\\n   *   labels exist.\\n   *\u002F\\n  get currentPageLabel() {\\n    return this._pageLabels?.[this._currentPageNumber - 1] ?? null;\\n  }\\n\\n  \u002F**\\n   * @param {string} val - The page label.\\n   *\u002F\\n  set currentPageLabel(val) {\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    let page = val | 0; \u002F\u002F Fallback page number.\\n    if (this._pageLabels) {\\n      const i = this._pageLabels.indexOf(val);\\n      if (i >= 0) {\\n        page = i + 1;\\n      }\\n    }\\n    \u002F\u002F The intent can be to just reset a scroll position and\u002For scale.\\n    if (!this._setCurrentPageNumber(page, \u002F* resetCurrentPageView = *\u002F true)) {\\n      console.error(`currentPageLabel: \\\"${val}\\\" is not a valid page.`);\\n    }\\n  }\\n\\n  \u002F**\\n   * @type {number}\\n   *\u002F\\n  get currentScale() {\\n    return this._currentScale !== UNKNOWN_SCALE\\n      ? this._currentScale\\n      : DEFAULT_SCALE;\\n  }\\n\\n  \u002F**\\n   * @param {number} val - Scale of the pages in percents.\\n   *\u002F\\n  set currentScale(val) {\\n    if (isNaN(val)) {\\n      throw new Error(\\\"Invalid numeric scale.\\\");\\n    }\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    this.#setScale(val, { noScroll: false });\\n  }\\n\\n  \u002F**\\n   * @type {string}\\n   *\u002F\\n  get currentScaleValue() {\\n    return this._currentScaleValue;\\n  }\\n\\n  \u002F**\\n   * @param val - The scale of the pages (in percent or predefined value).\\n   *\u002F\\n  set currentScaleValue(val) {\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    this.#setScale(val, { noScroll: false });\\n  }\\n\\n  \u002F**\\n   * @type {number}\\n   *\u002F\\n  get pagesRotation() {\\n    return this._pagesRotation;\\n  }\\n\\n  \u002F**\\n   * @param {number} rotation - The rotation of the pages (0, 90, 180, 270).\\n   *\u002F\\n  set pagesRotation(rotation) {\\n    if (!isValidRotation(rotation)) {\\n      throw new Error(\\\"Invalid pages rotation angle.\\\");\\n    }\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    \u002F\u002F Normalize the rotation, by clamping it to the [0, 360) range.\\n    rotation %= 360;\\n    if (rotation \u003C 0) {\\n      rotation += 360;\\n    }\\n    if (this._pagesRotation === rotation) {\\n      return; \u002F\u002F The rotation didn't change.\\n    }\\n    this._pagesRotation = rotation;\\n\\n    const pageNumber = this._currentPageNumber;\\n\\n    this.refresh(true, { rotation });\\n\\n    \u002F\u002F Prevent errors in case the rotation changes *before* the scale has been\\n    \u002F\u002F set to a non-default value.\\n    if (this._currentScaleValue) {\\n      this.#setScale(this._currentScaleValue, { noScroll: true });\\n    }\\n\\n    this.eventBus.dispatch(\\\"rotationchanging\\\", {\\n      source: this,\\n      pagesRotation: rotation,\\n      pageNumber,\\n    });\\n\\n    if (this.defaultRenderingQueue) {\\n      this.update();\\n    }\\n  }\\n\\n  get firstPagePromise() {\\n    return this.pdfDocument ? this._firstPageCapability.promise : null;\\n  }\\n\\n  get onePageRendered() {\\n    return this.pdfDocument ? this._onePageRenderedCapability.promise : null;\\n  }\\n\\n  get pagesPromise() {\\n    return this.pdfDocument ? this._pagesCapability.promise : null;\\n  }\\n\\n  get _layerProperties() {\\n    const self = this;\\n    return shadow(this, \\\"_layerProperties\\\", {\\n      get annotationEditorUIManager() {\\n        return self.#annotationEditorUIManager;\\n      },\\n      get annotationStorage() {\\n        return self.pdfDocument?.annotationStorage;\\n      },\\n      get downloadManager() {\\n        return self.downloadManager;\\n      },\\n      get enableScripting() {\\n        return !!self._scriptingManager;\\n      },\\n      get fieldObjectsPromise() {\\n        return self.pdfDocument?.getFieldObjects();\\n      },\\n      get findController() {\\n        return self.findController;\\n      },\\n      get hasJSActionsPromise() {\\n        return self.pdfDocument?.hasJSActions();\\n      },\\n      get linkService() {\\n        return self.linkService;\\n      },\\n    });\\n  }\\n\\n  \u002F**\\n   * Currently only *some* permissions are supported.\\n   * @returns {Object}\\n   *\u002F\\n  #initializePermissions(permissions) {\\n    const params = {\\n      annotationEditorMode: this.#annotationEditorMode,\\n      annotationMode: this.#annotationMode,\\n      textLayerMode: this.#textLayerMode,\\n    };\\n    if (!permissions) {\\n      return params;\\n    }\\n\\n    if (\\n      !permissions.includes(PermissionFlag.COPY) &&\\n      this.#textLayerMode === TextLayerMode.ENABLE\\n    ) {\\n      params.textLayerMode = TextLayerMode.ENABLE_PERMISSIONS;\\n    }\\n\\n    if (!permissions.includes(PermissionFlag.MODIFY_CONTENTS)) {\\n      params.annotationEditorMode = AnnotationEditorType.DISABLE;\\n    }\\n\\n    if (\\n      !permissions.includes(PermissionFlag.MODIFY_ANNOTATIONS) &&\\n      !permissions.includes(PermissionFlag.FILL_INTERACTIVE_FORMS) &&\\n      this.#annotationMode === AnnotationMode.ENABLE_FORMS\\n    ) {\\n      params.annotationMode = AnnotationMode.ENABLE;\\n    }\\n\\n    return params;\\n  }\\n\\n  async #onePageRenderedOrForceFetch(signal) {\\n    \u002F\u002F Unless the viewer *and* its pages are visible, rendering won't start and\\n    \u002F\u002F `this._onePageRenderedCapability` thus won't be resolved.\\n    \u002F\u002F To ensure that automatic printing, on document load, still works even in\\n    \u002F\u002F those cases we force-allow fetching of all pages when:\\n    \u002F\u002F  - The current window\u002Ftab is inactive, which will prevent rendering since\\n    \u002F\u002F    `requestAnimationFrame` is being used; fixes bug 1746213.\\n    \u002F\u002F  - The viewer is hidden in the DOM, e.g. in a `display: none` \u003Ciframe>\\n    \u002F\u002F    element; fixes bug 1618621.\\n    \u002F\u002F  - The viewer is visible, but none of the pages are (e.g. if the\\n    \u002F\u002F    viewer is very small); fixes bug 1618955.\\n    if (\\n      document.visibilityState === \\\"hidden\\\" ||\\n      !this.container.offsetParent ||\\n      this._getVisiblePages().views.length === 0\\n    ) {\\n      return;\\n    }\\n\\n    \u002F\u002F Handle the window\u002Ftab becoming inactive *after* rendering has started;\\n    \u002F\u002F fixes (another part of) bug 1746213.\\n    const hiddenCapability = Promise.withResolvers(),\\n      ac = new AbortController();\\n    document.addEventListener(\\n      \\\"visibilitychange\\\",\\n      () => {\\n        if (document.visibilityState === \\\"hidden\\\") {\\n          hiddenCapability.resolve();\\n        }\\n      },\\n      { signal: AbortSignal.any([signal, ac.signal]) }\\n    );\\n\\n    await Promise.race([\\n      this._onePageRenderedCapability.promise,\\n      hiddenCapability.promise,\\n    ]);\\n    ac.abort(); \u002F\u002F Remove the \\\"visibilitychange\\\" listener immediately.\\n  }\\n\\n  async getAllText() {\\n    const texts = [];\\n    const buffer = [];\\n    for (\\n      let pageNum = 1, pagesCount = this.pdfDocument.numPages;\\n      pageNum \u003C= pagesCount;\\n      ++pageNum\\n    ) {\\n      if (this.#interruptCopyCondition) {\\n        return null;\\n      }\\n      buffer.length = 0;\\n      const page = await this.pdfDocument.getPage(pageNum);\\n      \u002F\u002F By default getTextContent pass disableNormalization equals to false\\n      \u002F\u002F which is fine because we want a normalized string.\\n      const { items } = await page.getTextContent();\\n      for (const item of items) {\\n        if (item.str) {\\n          buffer.push(item.str);\\n        }\\n        if (item.hasEOL) {\\n          buffer.push(\\\"\\\\n\\\");\\n        }\\n      }\\n      texts.push(removeNullCharacters(buffer.join(\\\"\\\")));\\n    }\\n\\n    return texts.join(\\\"\\\\n\\\");\\n  }\\n\\n  #copyCallback(textLayerMode, event) {\\n    const selection = document.getSelection();\\n    const { focusNode, anchorNode } = selection;\\n    if (\\n      anchorNode &&\\n      focusNode &&\\n      selection.containsNode(this.#hiddenCopyElement)\\n    ) {\\n      \u002F\u002F About the condition above:\\n      \u002F\u002F  - having non-null anchorNode and focusNode are here to guaranty that\\n      \u002F\u002F    we have at least a kind of selection.\\n      \u002F\u002F  - this.#hiddenCopyElement is an invisible element which is impossible\\n      \u002F\u002F    to select manually (its display is none) but ctrl+A will select all\\n      \u002F\u002F    including this element so having it in the selection means that all\\n      \u002F\u002F    has been selected.\\n\\n      if (\\n        this.#getAllTextInProgress ||\\n        textLayerMode === TextLayerMode.ENABLE_PERMISSIONS\\n      ) {\\n        stopEvent(event);\\n        return;\\n      }\\n      this.#getAllTextInProgress = true;\\n\\n      \u002F\u002F TODO: if all the pages are rendered we don't need to wait for\\n      \u002F\u002F getAllText and we could just get text from the Selection object.\\n\\n      \u002F\u002F Select all the document.\\n      const { classList } = this.viewer;\\n      classList.add(\\\"copyAll\\\");\\n\\n      const ac = new AbortController();\\n      window.addEventListener(\\n        \\\"keydown\\\",\\n        ev => (this.#interruptCopyCondition = ev.key === \\\"Escape\\\"),\\n        { signal: ac.signal }\\n      );\\n\\n      this.getAllText()\\n        .then(async text => {\\n          if (text !== null) {\\n            await navigator.clipboard.writeText(text);\\n          }\\n        })\\n        .catch(reason => {\\n          console.warn(\\n            `Something goes wrong when extracting the text: ${reason.message}`\\n          );\\n        })\\n        .finally(() => {\\n          this.#getAllTextInProgress = false;\\n          this.#interruptCopyCondition = false;\\n          ac.abort();\\n          classList.remove(\\\"copyAll\\\");\\n        });\\n\\n      stopEvent(event);\\n    }\\n  }\\n\\n  \u002F**\\n   * @param {PDFDocumentProxy} pdfDocument\\n   *\u002F\\n  setDocument(pdfDocument) {\\n    if (this.pdfDocument) {\\n      this.eventBus.dispatch(\\\"pagesdestroy\\\", { source: this });\\n\\n      this._cancelRendering();\\n      this._resetView();\\n\\n      this.findController?.setDocument(null);\\n      this._scriptingManager?.setDocument(null);\\n\\n      this.#annotationEditorUIManager?.destroy();\\n      this.#annotationEditorUIManager = null;\\n    }\\n\\n    this.pdfDocument = pdfDocument;\\n    if (!pdfDocument) {\\n      return;\\n    }\\n    const pagesCount = pdfDocument.numPages;\\n    const firstPagePromise = pdfDocument.getPage(1);\\n    \u002F\u002F Rendering (potentially) depends on this, hence fetching it immediately.\\n    const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig({\\n      intent: \\\"display\\\",\\n    });\\n    const permissionsPromise = this.#enablePermissions\\n      ? pdfDocument.getPermissions()\\n      : Promise.resolve();\\n\\n    const { eventBus, pageColors, viewer } = this;\\n\\n    this.#eventAbortController = new AbortController();\\n    const { signal } = this.#eventAbortController;\\n\\n    \u002F\u002F Given that browsers don't handle huge amounts of DOM-elements very well,\\n    \u002F\u002F enforce usage of PAGE-scrolling when loading *very* long\u002Flarge documents.\\n    if (pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE) {\\n      console.warn(\\n        \\\"Forcing PAGE-scrolling for performance reasons, given the length of the document.\\\"\\n      );\\n      const mode = (this._scrollMode = ScrollMode.PAGE);\\n      eventBus.dispatch(\\\"scrollmodechanged\\\", { source: this, mode });\\n    }\\n\\n    this._pagesCapability.promise.then(\\n      () => {\\n        eventBus.dispatch(\\\"pagesloaded\\\", { source: this, pagesCount });\\n      },\\n      () => {\\n        \u002F* Prevent \\\"Uncaught (in promise)\\\"-messages in the console. *\u002F\\n      }\\n    );\\n\\n    const onBeforeDraw = evt => {\\n      const pageView = this._pages[evt.pageNumber - 1];\\n      if (!pageView) {\\n        return;\\n      }\\n      \u002F\u002F Add the page to the buffer at the start of drawing. That way it can be\\n      \u002F\u002F evicted from the buffer and destroyed even if we pause its rendering.\\n      this.#buffer.push(pageView);\\n    };\\n    eventBus._on(\\\"pagerender\\\", onBeforeDraw, { signal });\\n\\n    const onAfterDraw = evt => {\\n      if (evt.cssTransform || evt.isDetailView) {\\n        return;\\n      }\\n      this._onePageRenderedCapability.resolve({ timestamp: evt.timestamp });\\n\\n      eventBus._off(\\\"pagerendered\\\", onAfterDraw); \u002F\u002F Remove immediately.\\n    };\\n    eventBus._on(\\\"pagerendered\\\", onAfterDraw, { signal });\\n\\n    \u002F\u002F Fetch a single page so we can get a viewport that will be the default\\n    \u002F\u002F viewport for all pages\\n    Promise.all([firstPagePromise, permissionsPromise])\\n      .then(([firstPdfPage, permissions]) => {\\n        if (pdfDocument !== this.pdfDocument) {\\n          return; \u002F\u002F The document was closed while the first page resolved.\\n        }\\n        this._firstPageCapability.resolve(firstPdfPage);\\n        this._optionalContentConfigPromise = optionalContentConfigPromise;\\n\\n        const { annotationEditorMode, annotationMode, textLayerMode } =\\n          this.#initializePermissions(permissions);\\n\\n        if (textLayerMode !== TextLayerMode.DISABLE) {\\n          const element = (this.#hiddenCopyElement =\\n            document.createElement(\\\"div\\\"));\\n          element.id = \\\"hiddenCopyElement\\\";\\n          viewer.before(element);\\n        }\\n\\n        if (annotationEditorMode !== AnnotationEditorType.DISABLE) {\\n          const mode = annotationEditorMode;\\n\\n          if (pdfDocument.isPureXfa) {\\n            console.warn(\\\"Warning: XFA-editing is not implemented.\\\");\\n          } else if (isValidAnnotationEditorMode(mode)) {\\n            this.#annotationEditorUIManager = new AnnotationEditorUIManager(\\n              this.container,\\n              viewer,\\n              this.#altTextManager,\\n              this.#signatureManager,\\n              eventBus,\\n              pdfDocument,\\n              pageColors,\\n              this.#annotationEditorHighlightColors,\\n              this.#enableHighlightFloatingButton,\\n              this.#enableUpdatedAddImage,\\n              this.#enableNewAltTextWhenAddingImage,\\n              this.#mlManager,\\n              this.#editorUndoBar,\\n              this.#supportsPinchToZoom\\n            );\\n            eventBus.dispatch(\\\"annotationeditoruimanager\\\", {\\n              source: this,\\n              uiManager: this.#annotationEditorUIManager,\\n            });\\n            if (mode !== AnnotationEditorType.NONE) {\\n              this.#preloadEditingData(mode);\\n              this.#annotationEditorUIManager.updateMode(mode);\\n            }\\n          } else {\\n            console.error(`Invalid AnnotationEditor mode: ${mode}`);\\n          }\\n        }\\n\\n        const viewerElement =\\n          this._scrollMode === ScrollMode.PAGE ? null : viewer;\\n        const scale = this.currentScale;\\n        const viewport = firstPdfPage.getViewport({\\n          scale: scale * PixelsPerInch.PDF_TO_CSS_UNITS,\\n        });\\n        \u002F\u002F Ensure that the various layers always get the correct initial size,\\n        \u002F\u002F see issue 15795.\\n        viewer.style.setProperty(\\\"--scale-factor\\\", viewport.scale);\\n\\n        if (pageColors?.background) {\\n          viewer.style.setProperty(\\\"--page-bg-color\\\", pageColors.background);\\n        }\\n        if (\\n          pageColors?.foreground === \\\"CanvasText\\\" ||\\n          pageColors?.background === \\\"Canvas\\\"\\n        ) {\\n          viewer.style.setProperty(\\n            \\\"--hcm-highlight-filter\\\",\\n            pdfDocument.filterFactory.addHighlightHCMFilter(\\n              \\\"highlight\\\",\\n              \\\"CanvasText\\\",\\n              \\\"Canvas\\\",\\n              \\\"HighlightText\\\",\\n              \\\"Highlight\\\"\\n            )\\n          );\\n          viewer.style.setProperty(\\n            \\\"--hcm-highlight-selected-filter\\\",\\n            pdfDocument.filterFactory.addHighlightHCMFilter(\\n              \\\"highlight_selected\\\",\\n              \\\"CanvasText\\\",\\n              \\\"Canvas\\\",\\n              \\\"HighlightText\\\",\\n              \\\"ButtonText\\\"\\n            )\\n          );\\n        }\\n\\n        for (let pageNum = 1; pageNum \u003C= pagesCount; ++pageNum) {\\n          const pageView = new PDFPageView({\\n            container: viewerElement,\\n            eventBus,\\n            id: pageNum,\\n            scale,\\n            defaultViewport: viewport.clone(),\\n            optionalContentConfigPromise,\\n            renderingQueue: this.renderingQueue,\\n            textLayerMode,\\n            annotationMode,\\n            imageResourcesPath: this.imageResourcesPath,\\n            maxCanvasPixels: this.maxCanvasPixels,\\n            maxCanvasDim: this.maxCanvasDim,\\n            capCanvasAreaFactor: this.capCanvasAreaFactor,\\n            enableDetailCanvas: this.enableDetailCanvas,\\n            pageColors,\\n            l10n: this.l10n,\\n            layerProperties: this._layerProperties,\\n            enableHWA: this.#enableHWA,\\n            enableAutoLinking: this.#enableAutoLinking,\\n            minDurationToUpdateCanvas: this.#minDurationToUpdateCanvas,\\n          });\\n          this._pages.push(pageView);\\n        }\\n        \u002F\u002F Set the first `pdfPage` immediately, since it's already loaded,\\n        \u002F\u002F rather than having to repeat the `PDFDocumentProxy.getPage` call in\\n        \u002F\u002F the `this.#ensurePdfPageLoaded` method before rendering can start.\\n        this._pages[0]?.setPdfPage(firstPdfPage);\\n\\n        if (this._scrollMode === ScrollMode.PAGE) {\\n          \u002F\u002F Ensure that the current page becomes visible on document load.\\n          this.#ensurePageViewVisible();\\n        } else if (this._spreadMode !== SpreadMode.NONE) {\\n          this._updateSpreadMode();\\n        }\\n\\n        \u002F\u002F Fetch all the pages since the viewport is needed before printing\\n        \u002F\u002F starts to create the correct size canvas. Wait until one page is\\n        \u002F\u002F rendered so we don't tie up too many resources early on.\\n        this.#onePageRenderedOrForceFetch(signal).then(async () => {\\n          if (pdfDocument !== this.pdfDocument) {\\n            return; \u002F\u002F The document was closed while the first page rendered.\\n          }\\n          this.findController?.setDocument(pdfDocument); \u002F\u002F Enable searching.\\n          this._scriptingManager?.setDocument(pdfDocument); \u002F\u002F Enable scripting.\\n\\n          if (this.#hiddenCopyElement) {\\n            document.addEventListener(\\n              \\\"copy\\\",\\n              this.#copyCallback.bind(this, textLayerMode),\\n              { signal }\\n            );\\n          }\\n\\n          if (this.#annotationEditorUIManager) {\\n            \u002F\u002F Ensure that the Editor buttons, in the toolbar, are updated.\\n            eventBus.dispatch(\\\"annotationeditormodechanged\\\", {\\n              source: this,\\n              mode: this.#annotationEditorMode,\\n            });\\n          }\\n\\n          \u002F\u002F In addition to 'disableAutoFetch' being set, also attempt to reduce\\n          \u002F\u002F resource usage when loading *very* long\u002Flarge documents.\\n          if (\\n            pdfDocument.loadingParams.disableAutoFetch ||\\n            pagesCount > PagesCountLimit.FORCE_LAZY_PAGE_INIT\\n          ) {\\n            \u002F\u002F XXX: Printing is semi-broken with auto fetch disabled.\\n            this._pagesCapability.resolve();\\n            return;\\n          }\\n          let getPagesLeft = pagesCount - 1; \u002F\u002F The first page was already loaded.\\n\\n          if (getPagesLeft \u003C= 0) {\\n            this._pagesCapability.resolve();\\n            return;\\n          }\\n          for (let pageNum = 2; pageNum \u003C= pagesCount; ++pageNum) {\\n            const promise = pdfDocument.getPage(pageNum).then(\\n              pdfPage => {\\n                const pageView = this._pages[pageNum - 1];\\n                if (!pageView.pdfPage) {\\n                  pageView.setPdfPage(pdfPage);\\n                }\\n                if (--getPagesLeft === 0) {\\n                  this._pagesCapability.resolve();\\n                }\\n              },\\n              reason => {\\n                console.error(\\n                  `Unable to get page ${pageNum} to initialize viewer`,\\n                  reason\\n                );\\n                if (--getPagesLeft === 0) {\\n                  this._pagesCapability.resolve();\\n                }\\n              }\\n            );\\n\\n            if (pageNum % PagesCountLimit.PAUSE_EAGER_PAGE_INIT === 0) {\\n              await promise;\\n            }\\n          }\\n        });\\n\\n        eventBus.dispatch(\\\"pagesinit\\\", { source: this });\\n\\n        pdfDocument.getMetadata().then(({ info }) => {\\n          if (pdfDocument !== this.pdfDocument) {\\n            return; \u002F\u002F The document was closed while the metadata resolved.\\n          }\\n          if (info.Language) {\\n            viewer.lang = info.Language;\\n          }\\n        });\\n\\n        if (this.defaultRenderingQueue) {\\n          this.update();\\n        }\\n      })\\n      .catch(reason => {\\n        console.error(\\\"Unable to initialize viewer\\\", reason);\\n\\n        this._pagesCapability.reject(reason);\\n      });\\n  }\\n\\n  \u002F**\\n   * @param {Array|null} labels\\n   *\u002F\\n  setPageLabels(labels) {\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    if (!labels) {\\n      this._pageLabels = null;\\n    } else if (\\n      !(Array.isArray(labels) && this.pdfDocument.numPages === labels.length)\\n    ) {\\n      this._pageLabels = null;\\n      console.error(`setPageLabels: Invalid page labels.`);\\n    } else {\\n      this._pageLabels = labels;\\n    }\\n    \u002F\u002F Update all the `PDFPageView` instances.\\n    for (let i = 0, ii = this._pages.length; i \u003C ii; i++) {\\n      this._pages[i].setPageLabel(this._pageLabels?.[i] ?? null);\\n    }\\n  }\\n\\n  _resetView() {\\n    this._pages = [];\\n    this._currentPageNumber = 1;\\n    this._currentScale = UNKNOWN_SCALE;\\n    this._currentScaleValue = null;\\n    this._pageLabels = null;\\n    this.#buffer = new PDFPageViewBuffer(DEFAULT_CACHE_SIZE);\\n    this._location = null;\\n    this._pagesRotation = 0;\\n    this._optionalContentConfigPromise = null;\\n    this._firstPageCapability = Promise.withResolvers();\\n    this._onePageRenderedCapability = Promise.withResolvers();\\n    this._pagesCapability = Promise.withResolvers();\\n    this._scrollMode = ScrollMode.VERTICAL;\\n    this._previousScrollMode = ScrollMode.UNKNOWN;\\n    this._spreadMode = SpreadMode.NONE;\\n\\n    this.#scrollModePageState = {\\n      previousPageNumber: 1,\\n      scrollDown: true,\\n      pages: [],\\n    };\\n\\n    this.#eventAbortController?.abort();\\n    this.#eventAbortController = null;\\n\\n    \u002F\u002F Remove the pages from the DOM...\\n    this.viewer.textContent = \\\"\\\";\\n    \u002F\u002F ... and reset the Scroll mode CSS class(es) afterwards.\\n    this._updateScrollMode();\\n\\n    this.viewer.removeAttribute(\\\"lang\\\");\\n\\n    this.#hiddenCopyElement?.remove();\\n    this.#hiddenCopyElement = null;\\n\\n    this.#cleanupTimeouts();\\n    this.#cleanupSwitchAnnotationEditorMode();\\n  }\\n\\n  #ensurePageViewVisible() {\\n    if (this._scrollMode !== ScrollMode.PAGE) {\\n      throw new Error(\\\"#ensurePageViewVisible: Invalid scrollMode value.\\\");\\n    }\\n    const pageNumber = this._currentPageNumber,\\n      state = this.#scrollModePageState,\\n      viewer = this.viewer;\\n\\n    \u002F\u002F Temporarily remove all the pages from the DOM...\\n    viewer.textContent = \\\"\\\";\\n    \u002F\u002F ... and clear out the active ones.\\n    state.pages.length = 0;\\n\\n    if (this._spreadMode === SpreadMode.NONE && !this.isInPresentationMode) {\\n      \u002F\u002F Finally, append the new page to the viewer.\\n      const pageView = this._pages[pageNumber - 1];\\n      viewer.append(pageView.div);\\n\\n      state.pages.push(pageView);\\n    } else {\\n      const pageIndexSet = new Set(),\\n        parity = this._spreadMode - 1;\\n\\n      \u002F\u002F Determine the pageIndices in the new spread.\\n      if (parity === -1) {\\n        \u002F\u002F PresentationMode is active, with `SpreadMode.NONE` set.\\n        pageIndexSet.add(pageNumber - 1);\\n      } else if (pageNumber % 2 !== parity) {\\n        \u002F\u002F Left-hand side page.\\n        pageIndexSet.add(pageNumber - 1);\\n        pageIndexSet.add(pageNumber);\\n      } else {\\n        \u002F\u002F Right-hand side page.\\n        pageIndexSet.add(pageNumber - 2);\\n        pageIndexSet.add(pageNumber - 1);\\n      }\\n\\n      \u002F\u002F Finally, append the new pages to the viewer and apply the spreadMode.\\n      const spread = document.createElement(\\\"div\\\");\\n      spread.className = \\\"spread\\\";\\n\\n      if (this.isInPresentationMode) {\\n        const dummyPage = document.createElement(\\\"div\\\");\\n        dummyPage.className = \\\"dummyPage\\\";\\n        spread.append(dummyPage);\\n      }\\n\\n      for (const i of pageIndexSet) {\\n        const pageView = this._pages[i];\\n        if (!pageView) {\\n          continue;\\n        }\\n        spread.append(pageView.div);\\n\\n        state.pages.push(pageView);\\n      }\\n      viewer.append(spread);\\n    }\\n\\n    state.scrollDown = pageNumber >= state.previousPageNumber;\\n    state.previousPageNumber = pageNumber;\\n  }\\n\\n  _scrollUpdate() {\\n    if (this.pagesCount === 0) {\\n      return;\\n    }\\n\\n    if (this.#scrollTimeoutId) {\\n      clearTimeout(this.#scrollTimeoutId);\\n    }\\n    this.#scrollTimeoutId = setTimeout(() => {\\n      this.#scrollTimeoutId = null;\\n      this.update();\\n    }, 100);\\n\\n    this.update();\\n  }\\n\\n  #scrollIntoView(pageView, pageSpot = null) {\\n    const { div, id } = pageView;\\n\\n    \u002F\u002F Ensure that `this._currentPageNumber` is correct, when `#scrollIntoView`\\n    \u002F\u002F is called directly (and not from `#resetCurrentPageView`).\\n    if (this._currentPageNumber !== id) {\\n      this._setCurrentPageNumber(id);\\n    }\\n    if (this._scrollMode === ScrollMode.PAGE) {\\n      this.#ensurePageViewVisible();\\n      \u002F\u002F Ensure that rendering always occurs, to avoid showing a blank page,\\n      \u002F\u002F even if the current position doesn't change when the page is scrolled.\\n      this.update();\\n    }\\n\\n    if (!pageSpot && !this.isInPresentationMode) {\\n      const left = div.offsetLeft + div.clientLeft,\\n        right = left + div.clientWidth;\\n      const { scrollLeft, clientWidth } = this.container;\\n      if (\\n        this._scrollMode === ScrollMode.HORIZONTAL ||\\n        left \u003C scrollLeft ||\\n        right > scrollLeft + clientWidth\\n      ) {\\n        pageSpot = { left: 0, top: 0 };\\n      }\\n    }\\n    scrollIntoView(div, pageSpot);\\n\\n    \u002F\u002F Ensure that the correct *initial* document position is set, when any\\n    \u002F\u002F OpenParameters are used, for documents with non-default Scroll\u002FSpread\\n    \u002F\u002F modes (fixes issue 15695). This is necessary since the scroll-handler\\n    \u002F\u002F invokes the `update`-method asynchronously, and `this._location` could\\n    \u002F\u002F thus be wrong when the initial zooming occurs in the default viewer.\\n    if (!this._currentScaleValue && this._location) {\\n      this._location = null;\\n    }\\n  }\\n\\n  \u002F**\\n   * Prevent unnecessary re-rendering of all pages when the scale changes\\n   * only because of limited numerical precision.\\n   *\u002F\\n  #isSameScale(newScale) {\\n    return (\\n      newScale === this._currentScale ||\\n      Math.abs(newScale - this._currentScale) \u003C 1e-15\\n    );\\n  }\\n\\n  #setScaleUpdatePages(\\n    newScale,\\n    newValue,\\n    { noScroll = false, preset = false, drawingDelay = -1, origin = null }\\n  ) {\\n    this._currentScaleValue = newValue.toString();\\n\\n    if (this.#isSameScale(newScale)) {\\n      if (preset) {\\n        this.eventBus.dispatch(\\\"scalechanging\\\", {\\n          source: this,\\n          scale: newScale,\\n          presetValue: newValue,\\n        });\\n      }\\n      return;\\n    }\\n\\n    this.viewer.style.setProperty(\\n      \\\"--scale-factor\\\",\\n      newScale * PixelsPerInch.PDF_TO_CSS_UNITS\\n    );\\n\\n    const postponeDrawing = drawingDelay >= 0 && drawingDelay \u003C 1000;\\n    this.refresh(true, {\\n      scale: newScale,\\n      drawingDelay: postponeDrawing ? drawingDelay : -1,\\n    });\\n\\n    if (postponeDrawing) {\\n      this.#scaleTimeoutId = setTimeout(() => {\\n        this.#scaleTimeoutId = null;\\n        this.refresh();\\n      }, drawingDelay);\\n    }\\n\\n    const previousScale = this._currentScale;\\n    this._currentScale = newScale;\\n\\n    if (!noScroll) {\\n      let page = this._currentPageNumber,\\n        dest;\\n      if (\\n        this._location &&\\n        !(this.isInPresentationMode || this.isChangingPresentationMode)\\n      ) {\\n        page = this._location.pageNumber;\\n        dest = [\\n          null,\\n          { name: \\\"XYZ\\\" },\\n          this._location.left,\\n          this._location.top,\\n          null,\\n        ];\\n      }\\n      this.scrollPageIntoView({\\n        pageNumber: page,\\n        destArray: dest,\\n        allowNegativeOffset: true,\\n      });\\n      if (Array.isArray(origin)) {\\n        \u002F\u002F If the origin of the scaling transform is specified, preserve its\\n        \u002F\u002F location on screen. If not specified, scaling will fix the top-left\\n        \u002F\u002F corner of the visible PDF area.\\n        const scaleDiff = newScale \u002F previousScale - 1;\\n        const [top, left] = this.containerTopLeft;\\n        this.container.scrollLeft += (origin[0] - left) * scaleDiff;\\n        this.container.scrollTop += (origin[1] - top) * scaleDiff;\\n      }\\n    }\\n\\n    this.eventBus.dispatch(\\\"scalechanging\\\", {\\n      source: this,\\n      scale: newScale,\\n      presetValue: preset ? newValue : undefined,\\n    });\\n\\n    if (this.defaultRenderingQueue) {\\n      this.update();\\n    }\\n  }\\n\\n  get #pageWidthScaleFactor() {\\n    if (\\n      this._spreadMode !== SpreadMode.NONE &&\\n      this._scrollMode !== ScrollMode.HORIZONTAL\\n    ) {\\n      return 2;\\n    }\\n    return 1;\\n  }\\n\\n  #setScale(value, options) {\\n    let scale = parseFloat(value);\\n\\n    if (scale > 0) {\\n      options.preset = false;\\n      this.#setScaleUpdatePages(scale, value, options);\\n    } else {\\n      const currentPage = this._pages[this._currentPageNumber - 1];\\n      if (!currentPage) {\\n        return;\\n      }\\n      let hPadding = SCROLLBAR_PADDING,\\n        vPadding = VERTICAL_PADDING;\\n\\n      if (this.isInPresentationMode) {\\n        \u002F\u002F Pages have a 2px (transparent) border in PresentationMode, see\\n        \u002F\u002F the `web\u002Fpdf_viewer.css` file.\\n        hPadding = vPadding = 4; \u002F\u002F 2 * 2px\\n        if (this._spreadMode !== SpreadMode.NONE) {\\n          \u002F\u002F Account for two pages being visible in PresentationMode, thus\\n          \u002F\u002F \\\"doubling\\\" the total border width.\\n          hPadding *= 2;\\n        }\\n      } else if (\\n        (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) &&\\n        this.removePageBorders\\n      ) {\\n        hPadding = vPadding = 0;\\n      } else if (this._scrollMode === ScrollMode.HORIZONTAL) {\\n        [hPadding, vPadding] = [vPadding, hPadding]; \u002F\u002F Swap the padding values.\\n      }\\n      const pageWidthScale =\\n        (((this.container.clientWidth - hPadding) \u002F currentPage.width) *\\n          currentPage.scale) \u002F\\n        this.#pageWidthScaleFactor;\\n      const pageHeightScale =\\n        ((this.container.clientHeight - vPadding) \u002F currentPage.height) *\\n        currentPage.scale;\\n      switch (value) {\\n        case \\\"page-actual\\\":\\n          scale = 1;\\n          break;\\n        case \\\"page-width\\\":\\n          scale = pageWidthScale;\\n          break;\\n        case \\\"page-height\\\":\\n          scale = pageHeightScale;\\n          break;\\n        case \\\"page-fit\\\":\\n          scale = Math.min(pageWidthScale, pageHeightScale);\\n          break;\\n        case \\\"auto\\\":\\n          \u002F\u002F For pages in landscape mode, fit the page height to the viewer\\n          \u002F\u002F *unless* the page would thus become too wide to fit horizontally.\\n          const horizontalScale = isPortraitOrientation(currentPage)\\n            ? pageWidthScale\\n            : Math.min(pageHeightScale, pageWidthScale);\\n          scale = Math.min(MAX_AUTO_SCALE, horizontalScale);\\n          break;\\n        default:\\n          console.error(`#setScale: \\\"${value}\\\" is an unknown zoom value.`);\\n          return;\\n      }\\n      options.preset = true;\\n      this.#setScaleUpdatePages(scale, value, options);\\n    }\\n  }\\n\\n  \u002F**\\n   * Refreshes page view: scrolls to the current page and updates the scale.\\n   *\u002F\\n  #resetCurrentPageView() {\\n    const pageView = this._pages[this._currentPageNumber - 1];\\n\\n    if (this.isInPresentationMode) {\\n      \u002F\u002F Fixes the case when PDF has different page sizes.\\n      this.#setScale(this._currentScaleValue, { noScroll: true });\\n    }\\n    this.#scrollIntoView(pageView);\\n  }\\n\\n  \u002F**\\n   * @param {string} label - The page label.\\n   * @returns {number|null} The page number corresponding to the page label,\\n   *   or `null` when no page labels exist and\u002For the input is invalid.\\n   *\u002F\\n  pageLabelToPageNumber(label) {\\n    if (!this._pageLabels) {\\n      return null;\\n    }\\n    const i = this._pageLabels.indexOf(label);\\n    if (i \u003C 0) {\\n      return null;\\n    }\\n    return i + 1;\\n  }\\n\\n  \u002F**\\n   * @typedef {Object} ScrollPageIntoViewParameters\\n   * @property {number} pageNumber - The page number.\\n   * @property {Array} [destArray] - The original PDF destination array, in the\\n   *   format: \u003Cpage-ref> \u003C\u002FXYZ|\u002FFitXXX> \u003Cargs..>\\n   * @property {boolean} [allowNegativeOffset] - Allow negative page offsets.\\n   *   The default value is `false`.\\n   * @property {boolean} [ignoreDestinationZoom] - Ignore the zoom argument in\\n   *   the destination array. The default value is `false`.\\n   *\u002F\\n\\n  \u002F**\\n   * Scrolls page into view.\\n   * @param {ScrollPageIntoViewParameters} params\\n   *\u002F\\n  scrollPageIntoView({\\n    pageNumber,\\n    destArray = null,\\n    allowNegativeOffset = false,\\n    ignoreDestinationZoom = false,\\n  }) {\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    const pageView =\\n      Number.isInteger(pageNumber) && this._pages[pageNumber - 1];\\n    if (!pageView) {\\n      console.error(\\n        `scrollPageIntoView: \\\"${pageNumber}\\\" is not a valid pageNumber parameter.`\\n      );\\n      return;\\n    }\\n\\n    if (this.isInPresentationMode || !destArray) {\\n      this._setCurrentPageNumber(pageNumber, \u002F* resetCurrentPageView = *\u002F true);\\n      return;\\n    }\\n    let x = 0,\\n      y = 0;\\n    let width = 0,\\n      height = 0,\\n      widthScale,\\n      heightScale;\\n    const changeOrientation = pageView.rotation % 180 !== 0;\\n    const pageWidth =\\n      (changeOrientation ? pageView.height : pageView.width) \u002F\\n      pageView.scale \u002F\\n      PixelsPerInch.PDF_TO_CSS_UNITS;\\n    const pageHeight =\\n      (changeOrientation ? pageView.width : pageView.height) \u002F\\n      pageView.scale \u002F\\n      PixelsPerInch.PDF_TO_CSS_UNITS;\\n    let scale = 0;\\n    switch (destArray[1].name) {\\n      case \\\"XYZ\\\":\\n        x = destArray[2];\\n        y = destArray[3];\\n        scale = destArray[4];\\n        \u002F\u002F If x and\u002For y coordinates are not supplied, default to\\n        \u002F\u002F _top_ left of the page (not the obvious bottom left,\\n        \u002F\u002F since aligning the bottom of the intended page with the\\n        \u002F\u002F top of the window is rarely helpful).\\n        x = x !== null ? x : 0;\\n        y = y !== null ? y : pageHeight;\\n        break;\\n      case \\\"Fit\\\":\\n      case \\\"FitB\\\":\\n        scale = \\\"page-fit\\\";\\n        break;\\n      case \\\"FitH\\\":\\n      case \\\"FitBH\\\":\\n        y = destArray[2];\\n        scale = \\\"page-width\\\";\\n        \u002F\u002F According to the PDF spec, section 12.3.2.2, a `null` value in the\\n        \u002F\u002F parameter should maintain the position relative to the new page.\\n        if (y === null && this._location) {\\n          x = this._location.left;\\n          y = this._location.top;\\n        } else if (typeof y !== \\\"number\\\" || y \u003C 0) {\\n          \u002F\u002F The \\\"top\\\" value isn't optional, according to the spec, however some\\n          \u002F\u002F bad PDF generators will pretend that it is (fixes bug 1663390).\\n          y = pageHeight;\\n        }\\n        break;\\n      case \\\"FitV\\\":\\n      case \\\"FitBV\\\":\\n        x = destArray[2];\\n        width = pageWidth;\\n        height = pageHeight;\\n        scale = \\\"page-height\\\";\\n        break;\\n      case \\\"FitR\\\":\\n        x = destArray[2];\\n        y = destArray[3];\\n        width = destArray[4] - x;\\n        height = destArray[5] - y;\\n        let hPadding = SCROLLBAR_PADDING,\\n          vPadding = VERTICAL_PADDING;\\n\\n        if (\\n          (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) &&\\n          this.removePageBorders\\n        ) {\\n          hPadding = vPadding = 0;\\n        }\\n        widthScale =\\n          (this.container.clientWidth - hPadding) \u002F\\n          width \u002F\\n          PixelsPerInch.PDF_TO_CSS_UNITS;\\n        heightScale =\\n          (this.container.clientHeight - vPadding) \u002F\\n          height \u002F\\n          PixelsPerInch.PDF_TO_CSS_UNITS;\\n        scale = Math.min(Math.abs(widthScale), Math.abs(heightScale));\\n        break;\\n      default:\\n        console.error(\\n          `scrollPageIntoView: \\\"${destArray[1].name}\\\" is not a valid destination type.`\\n        );\\n        return;\\n    }\\n\\n    if (!ignoreDestinationZoom) {\\n      if (scale && scale !== this._currentScale) {\\n        this.currentScaleValue = scale;\\n      } else if (this._currentScale === UNKNOWN_SCALE) {\\n        this.currentScaleValue = DEFAULT_SCALE_VALUE;\\n      }\\n    }\\n\\n    if (scale === \\\"page-fit\\\" && !destArray[4]) {\\n      this.#scrollIntoView(pageView);\\n      return;\\n    }\\n\\n    const boundingRect = [\\n      pageView.viewport.convertToViewportPoint(x, y),\\n      pageView.viewport.convertToViewportPoint(x + width, y + height),\\n    ];\\n    let left = Math.min(boundingRect[0][0], boundingRect[1][0]);\\n    let top = Math.min(boundingRect[0][1], boundingRect[1][1]);\\n\\n    if (!allowNegativeOffset) {\\n      \u002F\u002F Some bad PDF generators will create destinations with e.g. top values\\n      \u002F\u002F that exceeds the page height. Ensure that offsets are not negative,\\n      \u002F\u002F to prevent a previous page from becoming visible (fixes bug 874482).\\n      left = Math.max(left, 0);\\n      top = Math.max(top, 0);\\n    }\\n    this.#scrollIntoView(pageView, \u002F* pageSpot = *\u002F { left, top });\\n  }\\n\\n  _updateLocation(firstPage) {\\n    const currentScale = this._currentScale;\\n    const currentScaleValue = this._currentScaleValue;\\n    const normalizedScaleValue =\\n      parseFloat(currentScaleValue) === currentScale\\n        ? Math.round(currentScale * 10000) \u002F 100\\n        : currentScaleValue;\\n\\n    const pageNumber = firstPage.id;\\n    const currentPageView = this._pages[pageNumber - 1];\\n    const container = this.container;\\n    const topLeft = currentPageView.getPagePoint(\\n      container.scrollLeft - firstPage.x,\\n      container.scrollTop - firstPage.y\\n    );\\n    const intLeft = Math.round(topLeft[0]);\\n    const intTop = Math.round(topLeft[1]);\\n\\n    let pdfOpenParams = `#page=${pageNumber}`;\\n    if (!this.isInPresentationMode) {\\n      pdfOpenParams += `&zoom=${normalizedScaleValue},${intLeft},${intTop}`;\\n    }\\n\\n    this._location = {\\n      pageNumber,\\n      scale: normalizedScaleValue,\\n      top: intTop,\\n      left: intLeft,\\n      rotation: this._pagesRotation,\\n      pdfOpenParams,\\n    };\\n  }\\n\\n  update() {\\n    const visible = this._getVisiblePages();\\n    const visiblePages = visible.views,\\n      numVisiblePages = visiblePages.length;\\n\\n    if (numVisiblePages === 0) {\\n      return;\\n    }\\n    const newCacheSize = Math.max(DEFAULT_CACHE_SIZE, 2 * numVisiblePages + 1);\\n    this.#buffer.resize(newCacheSize, visible.ids);\\n\\n    for (const { view, visibleArea } of visiblePages) {\\n      view.updateVisibleArea(visibleArea);\\n    }\\n    for (const view of this.#buffer) {\\n      if (!visible.ids.has(view.id)) {\\n        view.updateVisibleArea(null);\\n      }\\n    }\\n\\n    this.renderingQueue.renderHighestPriority(visible);\\n\\n    const isSimpleLayout =\\n      this._spreadMode === SpreadMode.NONE &&\\n      (this._scrollMode === ScrollMode.PAGE ||\\n        this._scrollMode === ScrollMode.VERTICAL);\\n    const currentId = this._currentPageNumber;\\n    let stillFullyVisible = false;\\n\\n    for (const page of visiblePages) {\\n      if (page.percent \u003C 100) {\\n        break;\\n      }\\n      if (page.id === currentId && isSimpleLayout) {\\n        stillFullyVisible = true;\\n        break;\\n      }\\n    }\\n    this._setCurrentPageNumber(\\n      stillFullyVisible ? currentId : visiblePages[0].id\\n    );\\n\\n    this._updateLocation(visible.first);\\n    this.eventBus.dispatch(\\\"updateviewarea\\\", {\\n      source: this,\\n      location: this._location,\\n    });\\n  }\\n\\n  #switchToEditAnnotationMode() {\\n    const visible = this._getVisiblePages();\\n    const pagesToRefresh = [];\\n    const { ids, views } = visible;\\n    for (const page of views) {\\n      const { view } = page;\\n      if (!view.hasEditableAnnotations()) {\\n        ids.delete(view.id);\\n        continue;\\n      }\\n      pagesToRefresh.push(page);\\n    }\\n\\n    if (pagesToRefresh.length === 0) {\\n      return null;\\n    }\\n    this.renderingQueue.renderHighestPriority({\\n      first: pagesToRefresh[0],\\n      last: pagesToRefresh.at(-1),\\n      views: pagesToRefresh,\\n      ids,\\n    });\\n\\n    return ids;\\n  }\\n\\n  containsElement(element) {\\n    return this.container.contains(element);\\n  }\\n\\n  focus() {\\n    this.container.focus();\\n  }\\n\\n  get _isContainerRtl() {\\n    return getComputedStyle(this.container).direction === \\\"rtl\\\";\\n  }\\n\\n  get isInPresentationMode() {\\n    return this.presentationModeState === PresentationModeState.FULLSCREEN;\\n  }\\n\\n  get isChangingPresentationMode() {\\n    return this.presentationModeState === PresentationModeState.CHANGING;\\n  }\\n\\n  get isHorizontalScrollbarEnabled() {\\n    return this.isInPresentationMode\\n      ? false\\n      : this.container.scrollWidth > this.container.clientWidth;\\n  }\\n\\n  get isVerticalScrollbarEnabled() {\\n    return this.isInPresentationMode\\n      ? false\\n      : this.container.scrollHeight > this.container.clientHeight;\\n  }\\n\\n  _getVisiblePages() {\\n    const views =\\n        this._scrollMode === ScrollMode.PAGE\\n          ? this.#scrollModePageState.pages\\n          : this._pages,\\n      horizontal = this._scrollMode === ScrollMode.HORIZONTAL,\\n      rtl = horizontal && this._isContainerRtl;\\n\\n    return getVisibleElements({\\n      scrollEl: this.container,\\n      views,\\n      sortByVisibility: true,\\n      horizontal,\\n      rtl,\\n    });\\n  }\\n\\n  cleanup() {\\n    for (const pageView of this._pages) {\\n      if (pageView.renderingState !== RenderingStates.FINISHED) {\\n        pageView.reset();\\n      }\\n    }\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _cancelRendering() {\\n    for (const pageView of this._pages) {\\n      pageView.cancelRendering();\\n    }\\n  }\\n\\n  \u002F**\\n   * @param {PDFPageView} pageView\\n   * @returns {Promise\u003CPDFPageProxy | null>}\\n   *\u002F\\n  async #ensurePdfPageLoaded(pageView) {\\n    if (pageView.pdfPage) {\\n      return pageView.pdfPage;\\n    }\\n    try {\\n      const pdfPage = await this.pdfDocument.getPage(pageView.id);\\n      if (!pageView.pdfPage) {\\n        pageView.setPdfPage(pdfPage);\\n      }\\n      return pdfPage;\\n    } catch (reason) {\\n      console.error(\\\"Unable to get page for page view\\\", reason);\\n      return null; \u002F\u002F Page error -- there is nothing that can be done.\\n    }\\n  }\\n\\n  #getScrollAhead(visible) {\\n    if (visible.first?.id === 1) {\\n      return true;\\n    } else if (visible.last?.id === this.pagesCount) {\\n      return false;\\n    }\\n    switch (this._scrollMode) {\\n      case ScrollMode.PAGE:\\n        return this.#scrollModePageState.scrollDown;\\n      case ScrollMode.HORIZONTAL:\\n        return this.scroll.right;\\n    }\\n    return this.scroll.down;\\n  }\\n\\n  forceRendering(currentlyVisiblePages) {\\n    const visiblePages = currentlyVisiblePages || this._getVisiblePages();\\n    const scrollAhead = this.#getScrollAhead(visiblePages);\\n    const preRenderExtra =\\n      this._spreadMode !== SpreadMode.NONE &&\\n      this._scrollMode !== ScrollMode.HORIZONTAL;\\n\\n    const ignoreDetailViews =\\n      \u002F\u002F If we are zooming, do not re-render the detail views. Re-renders on\\n      \u002F\u002F zoom happen with a delay, and once the rendering happens it will also\\n      \u002F\u002F trigger rendering of the detail views.\\n      this.#scaleTimeoutId !== null ||\\n      \u002F\u002F If we are scrolling and the rendering of a detail view was just\\n      \u002F\u002F cancelled, it's because the user is scrolling too quickly and so\\n      \u002F\u002F we constantly need to re-render a different area.\\n      \u002F\u002F Don't attempt to re-render it: this will be done once the user\\n      \u002F\u002F stops scrolling.\\n      (this.#scrollTimeoutId !== null &&\\n        visiblePages.views.some(page => page.detailView?.renderingCancelled));\\n\\n    const pageView = this.renderingQueue.getHighestPriority(\\n      visiblePages,\\n      this._pages,\\n      scrollAhead,\\n      preRenderExtra,\\n      ignoreDetailViews\\n    );\\n\\n    if (pageView) {\\n      this.#ensurePdfPageLoaded(pageView).then(() => {\\n        this.renderingQueue.renderView(pageView);\\n      });\\n      return true;\\n    }\\n    return false;\\n  }\\n\\n  \u002F**\\n   * @type {boolean} Whether all pages of the PDF document have identical\\n   *   widths and heights.\\n   *\u002F\\n  get hasEqualPageSizes() {\\n    const firstPageView = this._pages[0];\\n    for (let i = 1, ii = this._pages.length; i \u003C ii; ++i) {\\n      const pageView = this._pages[i];\\n      if (\\n        pageView.width !== firstPageView.width ||\\n        pageView.height !== firstPageView.height\\n      ) {\\n        return false;\\n      }\\n    }\\n    return true;\\n  }\\n\\n  \u002F**\\n   * Returns sizes of the pages.\\n   * @returns {Array} Array of objects with width\u002Fheight\u002Frotation fields.\\n   *\u002F\\n  getPagesOverview() {\\n    let initialOrientation;\\n    return this._pages.map(pageView => {\\n      const viewport = pageView.pdfPage.getViewport({ scale: 1 });\\n      const orientation = isPortraitOrientation(viewport);\\n      if (initialOrientation === undefined) {\\n        initialOrientation = orientation;\\n      } else if (\\n        this.enablePrintAutoRotate &&\\n        orientation !== initialOrientation\\n      ) {\\n        \u002F\u002F Rotate to fit the initial orientation.\\n        return {\\n          width: viewport.height,\\n          height: viewport.width,\\n          rotation: (viewport.rotation - 90) % 360,\\n        };\\n      }\\n      return {\\n        width: viewport.width,\\n        height: viewport.height,\\n        rotation: viewport.rotation,\\n      };\\n    });\\n  }\\n\\n  \u002F**\\n   * @type {Promise\u003COptionalContentConfig | null>}\\n   *\u002F\\n  get optionalContentConfigPromise() {\\n    if (!this.pdfDocument) {\\n      return Promise.resolve(null);\\n    }\\n    if (!this._optionalContentConfigPromise) {\\n      console.error(\\\"optionalContentConfigPromise: Not initialized yet.\\\");\\n      \u002F\u002F Prevent issues if the getter is accessed *before* the `onePageRendered`\\n      \u002F\u002F promise has resolved; won't (normally) happen in the default viewer.\\n      return this.pdfDocument.getOptionalContentConfig({ intent: \\\"display\\\" });\\n    }\\n    return this._optionalContentConfigPromise;\\n  }\\n\\n  \u002F**\\n   * @param {Promise\u003COptionalContentConfig>} promise - A promise that is\\n   *   resolved with an {@link OptionalContentConfig} instance.\\n   *\u002F\\n  set optionalContentConfigPromise(promise) {\\n    if (!(promise instanceof Promise)) {\\n      throw new Error(`Invalid optionalContentConfigPromise: ${promise}`);\\n    }\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    if (!this._optionalContentConfigPromise) {\\n      \u002F\u002F Ignore the setter *before* the `onePageRendered` promise has resolved,\\n      \u002F\u002F since it'll be overwritten anyway; won't happen in the default viewer.\\n      return;\\n    }\\n    this._optionalContentConfigPromise = promise;\\n\\n    this.refresh(false, { optionalContentConfigPromise: promise });\\n\\n    this.eventBus.dispatch(\\\"optionalcontentconfigchanged\\\", {\\n      source: this,\\n      promise,\\n    });\\n  }\\n\\n  \u002F**\\n   * @type {number} One of the values in {ScrollMode}.\\n   *\u002F\\n  get scrollMode() {\\n    return this._scrollMode;\\n  }\\n\\n  \u002F**\\n   * @param {number} mode - The direction in which the document pages should be\\n   *   laid out within the scrolling container.\\n   *   The constants from {ScrollMode} should be used.\\n   *\u002F\\n  set scrollMode(mode) {\\n    if (\\n      typeof PDFJSDev === \\\"undefined\\\"\\n        ? window.isGECKOVIEW\\n        : PDFJSDev.test(\\\"GECKOVIEW\\\")\\n    ) {\\n      \u002F\u002F NOTE: Always ignore the pageLayout in GeckoView since there's\\n      \u002F\u002F no UI available to change Scroll\u002FSpread modes for the user.\\n      return;\\n    }\\n    if (this._scrollMode === mode) {\\n      return; \u002F\u002F The Scroll mode didn't change.\\n    }\\n    if (!isValidScrollMode(mode)) {\\n      throw new Error(`Invalid scroll mode: ${mode}`);\\n    }\\n    if (this.pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE) {\\n      return; \u002F\u002F Disabled for performance reasons.\\n    }\\n    this._previousScrollMode = this._scrollMode;\\n\\n    this._scrollMode = mode;\\n    this.eventBus.dispatch(\\\"scrollmodechanged\\\", { source: this, mode });\\n\\n    this._updateScrollMode(\u002F* pageNumber = *\u002F this._currentPageNumber);\\n  }\\n\\n  _updateScrollMode(pageNumber = null) {\\n    const scrollMode = this._scrollMode,\\n      viewer = this.viewer;\\n\\n    viewer.classList.toggle(\\n      \\\"scrollHorizontal\\\",\\n      scrollMode === ScrollMode.HORIZONTAL\\n    );\\n    viewer.classList.toggle(\\\"scrollWrapped\\\", scrollMode === ScrollMode.WRAPPED);\\n\\n    if (!this.pdfDocument || !pageNumber) {\\n      return;\\n    }\\n\\n    if (scrollMode === ScrollMode.PAGE) {\\n      this.#ensurePageViewVisible();\\n    } else if (this._previousScrollMode === ScrollMode.PAGE) {\\n      \u002F\u002F Ensure that the current spreadMode is still applied correctly when\\n      \u002F\u002F the *previous* scrollMode was `ScrollMode.PAGE`.\\n      this._updateSpreadMode();\\n    }\\n    \u002F\u002F Non-numeric scale values can be sensitive to the scroll orientation.\\n    \u002F\u002F Call this before re-scrolling to the current page, to ensure that any\\n    \u002F\u002F changes in scale don't move the current page.\\n    if (this._currentScaleValue && isNaN(this._currentScaleValue)) {\\n      this.#setScale(this._currentScaleValue, { noScroll: true });\\n    }\\n    this._setCurrentPageNumber(pageNumber, \u002F* resetCurrentPageView = *\u002F true);\\n    this.update();\\n  }\\n\\n  \u002F**\\n   * @type {number} One of the values in {SpreadMode}.\\n   *\u002F\\n  get spreadMode() {\\n    return this._spreadMode;\\n  }\\n\\n  \u002F**\\n   * @param {number} mode - Group the pages in spreads, starting with odd- or\\n   *   even-number pages (unless `SpreadMode.NONE` is used).\\n   *   The constants from {SpreadMode} should be used.\\n   *\u002F\\n  set spreadMode(mode) {\\n    if (\\n      typeof PDFJSDev === \\\"undefined\\\"\\n        ? window.isGECKOVIEW\\n        : PDFJSDev.test(\\\"GECKOVIEW\\\")\\n    ) {\\n      \u002F\u002F NOTE: Always ignore the pageLayout in GeckoView since there's\\n      \u002F\u002F no UI available to change Scroll\u002FSpread modes for the user.\\n      return;\\n    }\\n    if (this._spreadMode === mode) {\\n      return; \u002F\u002F The Spread mode didn't change.\\n    }\\n    if (!isValidSpreadMode(mode)) {\\n      throw new Error(`Invalid spread mode: ${mode}`);\\n    }\\n    this._spreadMode = mode;\\n    this.eventBus.dispatch(\\\"spreadmodechanged\\\", { source: this, mode });\\n\\n    this._updateSpreadMode(\u002F* pageNumber = *\u002F this._currentPageNumber);\\n  }\\n\\n  _updateSpreadMode(pageNumber = null) {\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    const viewer = this.viewer,\\n      pages = this._pages;\\n\\n    if (this._scrollMode === ScrollMode.PAGE) {\\n      this.#ensurePageViewVisible();\\n    } else {\\n      \u002F\u002F Temporarily remove all the pages from the DOM.\\n      viewer.textContent = \\\"\\\";\\n\\n      if (this._spreadMode === SpreadMode.NONE) {\\n        for (const pageView of this._pages) {\\n          viewer.append(pageView.div);\\n        }\\n      } else {\\n        const parity = this._spreadMode - 1;\\n        let spread = null;\\n        for (let i = 0, ii = pages.length; i \u003C ii; ++i) {\\n          if (spread === null) {\\n            spread = document.createElement(\\\"div\\\");\\n            spread.className = \\\"spread\\\";\\n            viewer.append(spread);\\n          } else if (i % 2 === parity) {\\n            spread = spread.cloneNode(false);\\n            viewer.append(spread);\\n          }\\n          spread.append(pages[i].div);\\n        }\\n      }\\n    }\\n\\n    if (!pageNumber) {\\n      return;\\n    }\\n    \u002F\u002F Non-numeric scale values can be sensitive to the scroll orientation.\\n    \u002F\u002F Call this before re-scrolling to the current page, to ensure that any\\n    \u002F\u002F changes in scale don't move the current page.\\n    if (this._currentScaleValue && isNaN(this._currentScaleValue)) {\\n      this.#setScale(this._currentScaleValue, { noScroll: true });\\n    }\\n    this._setCurrentPageNumber(pageNumber, \u002F* resetCurrentPageView = *\u002F true);\\n    this.update();\\n  }\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _getPageAdvance(currentPageNumber, previous = false) {\\n    switch (this._scrollMode) {\\n      case ScrollMode.WRAPPED: {\\n        const { views } = this._getVisiblePages(),\\n          pageLayout = new Map();\\n\\n        \u002F\u002F Determine the current (visible) page layout.\\n        for (const { id, y, percent, widthPercent } of views) {\\n          if (percent === 0 || widthPercent \u003C 100) {\\n            continue;\\n          }\\n          let yArray = pageLayout.get(y);\\n          if (!yArray) {\\n            pageLayout.set(y, (yArray ||= []));\\n          }\\n          yArray.push(id);\\n        }\\n        \u002F\u002F Find the row of the current page.\\n        for (const yArray of pageLayout.values()) {\\n          const currentIndex = yArray.indexOf(currentPageNumber);\\n          if (currentIndex === -1) {\\n            continue;\\n          }\\n          const numPages = yArray.length;\\n          if (numPages === 1) {\\n            break;\\n          }\\n          \u002F\u002F Handle documents with varying page sizes.\\n          if (previous) {\\n            for (let i = currentIndex - 1, ii = 0; i >= ii; i--) {\\n              const currentId = yArray[i],\\n                expectedId = yArray[i + 1] - 1;\\n              if (currentId \u003C expectedId) {\\n                return currentPageNumber - expectedId;\\n              }\\n            }\\n          } else {\\n            for (let i = currentIndex + 1, ii = numPages; i \u003C ii; i++) {\\n              const currentId = yArray[i],\\n                expectedId = yArray[i - 1] + 1;\\n              if (currentId > expectedId) {\\n                return expectedId - currentPageNumber;\\n              }\\n            }\\n          }\\n          \u002F\u002F The current row is \\\"complete\\\", advance to the previous\u002Fnext one.\\n          if (previous) {\\n            const firstId = yArray[0];\\n            if (firstId \u003C currentPageNumber) {\\n              return currentPageNumber - firstId + 1;\\n            }\\n          } else {\\n            const lastId = yArray[numPages - 1];\\n            if (lastId > currentPageNumber) {\\n              return lastId - currentPageNumber + 1;\\n            }\\n          }\\n          break;\\n        }\\n        break;\\n      }\\n      case ScrollMode.HORIZONTAL: {\\n        break;\\n      }\\n      case ScrollMode.PAGE:\\n      case ScrollMode.VERTICAL: {\\n        if (this._spreadMode === SpreadMode.NONE) {\\n          break; \u002F\u002F Normal vertical scrolling.\\n        }\\n        const parity = this._spreadMode - 1;\\n\\n        if (previous && currentPageNumber % 2 !== parity) {\\n          break; \u002F\u002F Left-hand side page.\\n        } else if (!previous && currentPageNumber % 2 === parity) {\\n          break; \u002F\u002F Right-hand side page.\\n        }\\n        const { views } = this._getVisiblePages(),\\n          expectedId = previous ? currentPageNumber - 1 : currentPageNumber + 1;\\n\\n        for (const { id, percent, widthPercent } of views) {\\n          if (id !== expectedId) {\\n            continue;\\n          }\\n          if (percent > 0 && widthPercent === 100) {\\n            return 2;\\n          }\\n          break;\\n        }\\n        break;\\n      }\\n    }\\n    return 1;\\n  }\\n\\n  \u002F**\\n   * Go to the next page, taking scroll\u002Fspread-modes into account.\\n   * @returns {boolean} Whether navigation occurred.\\n   *\u002F\\n  nextPage() {\\n    const currentPageNumber = this._currentPageNumber,\\n      pagesCount = this.pagesCount;\\n\\n    if (currentPageNumber >= pagesCount) {\\n      return false;\\n    }\\n    const advance =\\n      this._getPageAdvance(currentPageNumber, \u002F* previous = *\u002F false) || 1;\\n\\n    this.currentPageNumber = Math.min(currentPageNumber + advance, pagesCount);\\n    return true;\\n  }\\n\\n  \u002F**\\n   * Go to the previous page, taking scroll\u002Fspread-modes into account.\\n   * @returns {boolean} Whether navigation occurred.\\n   *\u002F\\n  previousPage() {\\n    const currentPageNumber = this._currentPageNumber;\\n\\n    if (currentPageNumber \u003C= 1) {\\n      return false;\\n    }\\n    const advance =\\n      this._getPageAdvance(currentPageNumber, \u002F* previous = *\u002F true) || 1;\\n\\n    this.currentPageNumber = Math.max(currentPageNumber - advance, 1);\\n    return true;\\n  }\\n\\n  \u002F**\\n   * @typedef {Object} ChangeScaleOptions\\n   * @property {number} [drawingDelay]\\n   * @property {number} [scaleFactor]\\n   * @property {number} [steps]\\n   * @property {Array} [origin] x and y coordinates of the scale\\n   *                            transformation origin.\\n   *\u002F\\n\\n  \u002F**\\n   * Changes the current zoom level by the specified amount.\\n   * @param {ChangeScaleOptions} [options]\\n   *\u002F\\n  updateScale({ drawingDelay, scaleFactor = null, steps = null, origin }) {\\n    if (steps === null && scaleFactor === null) {\\n      throw new Error(\\n        \\\"Invalid updateScale options: either `steps` or `scaleFactor` must be provided.\\\"\\n      );\\n    }\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    let newScale = this._currentScale;\\n    if (scaleFactor > 0 && scaleFactor !== 1) {\\n      newScale = Math.round(newScale * scaleFactor * 100) \u002F 100;\\n    } else if (steps) {\\n      const delta = steps > 0 ? DEFAULT_SCALE_DELTA : 1 \u002F DEFAULT_SCALE_DELTA;\\n      const round = steps > 0 ? Math.ceil : Math.floor;\\n      steps = Math.abs(steps);\\n      do {\\n        newScale = round((newScale * delta).toFixed(2) * 10) \u002F 10;\\n      } while (--steps > 0);\\n    }\\n    newScale = MathClamp(newScale, MIN_SCALE, MAX_SCALE);\\n    this.#setScale(newScale, { noScroll: false, drawingDelay, origin });\\n  }\\n\\n  \u002F**\\n   * Increase the current zoom level one, or more, times.\\n   * @param {ChangeScaleOptions} [options]\\n   *\u002F\\n  increaseScale(options = {}) {\\n    this.updateScale({ ...options, steps: options.steps ?? 1 });\\n  }\\n\\n  \u002F**\\n   * Decrease the current zoom level one, or more, times.\\n   * @param {ChangeScaleOptions} [options]\\n   *\u002F\\n  decreaseScale(options = {}) {\\n    this.updateScale({ ...options, steps: -(options.steps ?? 1) });\\n  }\\n\\n  #updateContainerHeightCss(height = this.container.clientHeight) {\\n    if (height !== this.#previousContainerHeight) {\\n      this.#previousContainerHeight = height;\\n      docStyle.setProperty(\\\"--viewer-container-height\\\", `${height}px`);\\n    }\\n  }\\n\\n  #resizeObserverCallback(entries) {\\n    for (const entry of entries) {\\n      if (entry.target === this.container) {\\n        this.#updateContainerHeightCss(\\n          Math.floor(entry.borderBoxSize[0].blockSize)\\n        );\\n        this.#containerTopLeft = null;\\n        break;\\n      }\\n    }\\n  }\\n\\n  get containerTopLeft() {\\n    return (this.#containerTopLeft ||= [\\n      this.container.offsetTop,\\n      this.container.offsetLeft,\\n    ]);\\n  }\\n\\n  #cleanupTimeouts() {\\n    if (this.#scaleTimeoutId !== null) {\\n      clearTimeout(this.#scaleTimeoutId);\\n      this.#scaleTimeoutId = null;\\n    }\\n    if (this.#scrollTimeoutId !== null) {\\n      clearTimeout(this.#scrollTimeoutId);\\n      this.#scrollTimeoutId = null;\\n    }\\n  }\\n\\n  #cleanupSwitchAnnotationEditorMode() {\\n    this.#switchAnnotationEditorModeAC?.abort();\\n    this.#switchAnnotationEditorModeAC = null;\\n\\n    if (this.#switchAnnotationEditorModeTimeoutId !== null) {\\n      clearTimeout(this.#switchAnnotationEditorModeTimeoutId);\\n      this.#switchAnnotationEditorModeTimeoutId = null;\\n    }\\n  }\\n\\n  #preloadEditingData(mode) {\\n    switch (mode) {\\n      case AnnotationEditorType.STAMP:\\n        this.#mlManager?.loadModel(\\\"altText\\\");\\n        break;\\n      case AnnotationEditorType.SIGNATURE:\\n        \u002F\u002F Start to load the signature data.\\n        this.#signatureManager?.loadSignatures();\\n        break;\\n    }\\n  }\\n\\n  get annotationEditorMode() {\\n    return this.#annotationEditorUIManager\\n      ? this.#annotationEditorMode\\n      : AnnotationEditorType.DISABLE;\\n  }\\n\\n  \u002F**\\n   * @typedef {Object} AnnotationEditorModeOptions\\n   * @property {number} mode - The editor mode (none, FreeText, ink, ...).\\n   * @property {string|null} [editId] - ID of the existing annotation to edit.\\n   * @property {boolean} [isFromKeyboard] - True if the mode change is due to a\\n   *   keyboard action.\\n   *\u002F\\n\\n  \u002F**\\n   * @param {AnnotationEditorModeOptions} options\\n   *\u002F\\n  set annotationEditorMode({ mode, editId = null, isFromKeyboard = false }) {\\n    if (!this.#annotationEditorUIManager) {\\n      throw new Error(`The AnnotationEditor is not enabled.`);\\n    }\\n    if (this.#annotationEditorMode === mode) {\\n      return; \u002F\u002F The AnnotationEditor mode didn't change.\\n    }\\n    if (!isValidAnnotationEditorMode(mode)) {\\n      throw new Error(`Invalid AnnotationEditor mode: ${mode}`);\\n    }\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    this.#preloadEditingData(mode);\\n\\n    const { eventBus, pdfDocument } = this;\\n    const updater = async () => {\\n      this.#cleanupSwitchAnnotationEditorMode();\\n      this.#annotationEditorMode = mode;\\n      await this.#annotationEditorUIManager.updateMode(\\n        mode,\\n        editId,\\n        isFromKeyboard\\n      );\\n      if (\\n        mode !== this.#annotationEditorMode ||\\n        pdfDocument !== this.pdfDocument\\n      ) {\\n        \u002F\u002F Since `updateMode` is async, the active mode could have changed.\\n        return;\\n      }\\n      eventBus.dispatch(\\\"annotationeditormodechanged\\\", {\\n        source: this,\\n        mode,\\n      });\\n    };\\n\\n    if (\\n      mode === AnnotationEditorType.NONE ||\\n      this.#annotationEditorMode === AnnotationEditorType.NONE\\n    ) {\\n      const isEditing = mode !== AnnotationEditorType.NONE;\\n      if (!isEditing) {\\n        this.pdfDocument.annotationStorage.resetModifiedIds();\\n      }\\n      for (const pageView of this._pages) {\\n        pageView.toggleEditingMode(isEditing);\\n      }\\n      \u002F\u002F We must call #switchToEditAnnotationMode unconditionally to ensure that\\n      \u002F\u002F page is rendered if it's useful or not.\\n      const idsToRefresh = this.#switchToEditAnnotationMode();\\n      if (isEditing && idsToRefresh) {\\n        \u002F\u002F We're editing so we must switch to editing mode when the rendering is\\n        \u002F\u002F done.\\n        this.#cleanupSwitchAnnotationEditorMode();\\n        this.#switchAnnotationEditorModeAC = new AbortController();\\n        const signal = AbortSignal.any([\\n          this.#eventAbortController.signal,\\n          this.#switchAnnotationEditorModeAC.signal,\\n        ]);\\n\\n        eventBus._on(\\n          \\\"pagerendered\\\",\\n          ({ pageNumber }) => {\\n            idsToRefresh.delete(pageNumber);\\n            if (idsToRefresh.size === 0) {\\n              this.#switchAnnotationEditorModeTimeoutId = setTimeout(\\n                updater,\\n                0\\n              );\\n            }\\n          },\\n          { signal }\\n        );\\n        return;\\n      }\\n    }\\n    updater();\\n  }\\n\\n  refresh(noUpdate = false, updateArgs = Object.create(null)) {\\n    if (!this.pdfDocument) {\\n      return;\\n    }\\n    for (const pageView of this._pages) {\\n      pageView.update(updateArgs);\\n    }\\n    this.#cleanupTimeouts();\\n\\n    if (!noUpdate) {\\n      this.update();\\n    }\\n  }\\n}\\n\\nexport { PagesCountLimit, PDFPageViewBuffer, PDFViewer };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fevent_utils.js\\\").EventBus} EventBus *\u002F\\n\\nimport {\\n  CursorTool,\\n  ScrollMode,\\n  SpreadMode,\\n  toggleCheckedBtn,\\n  toggleExpandedBtn,\\n} from \\\".\u002Fui_utils.js\\\";\\nimport { PagesCountLimit } from \\\".\u002Fpdf_viewer.js\\\";\\n\\n\u002F**\\n * @typedef {Object} SecondaryToolbarOptions\\n * @property {HTMLDivElement} toolbar - Container for the secondary toolbar.\\n * @property {HTMLButtonElement} toggleButton - Button to toggle the visibility\\n *   of the secondary toolbar.\\n * @property {HTMLButtonElement} presentationModeButton - Button for entering\\n *   presentation mode.\\n * @property {HTMLButtonElement} openFileButton - Button to open a file.\\n * @property {HTMLButtonElement} printButton - Button to print the document.\\n * @property {HTMLButtonElement} downloadButton - Button to download the\\n *   document.\\n * @property {HTMLAnchorElement} viewBookmarkButton - Button to obtain a\\n *   bookmark link to the current location in the document.\\n * @property {HTMLButtonElement} firstPageButton - Button to go to the first\\n *   page in the document.\\n * @property {HTMLButtonElement} lastPageButton - Button to go to the last page\\n *   in the document.\\n * @property {HTMLButtonElement} pageRotateCwButton - Button to rotate the pages\\n *   clockwise.\\n * @property {HTMLButtonElement} pageRotateCcwButton - Button to rotate the\\n *   pages counterclockwise.\\n * @property {HTMLButtonElement} cursorSelectToolButton - Button to enable the\\n *   select tool.\\n * @property {HTMLButtonElement} cursorHandToolButton - Button to enable the\\n *   hand tool.\\n * @property {HTMLButtonElement} imageAltTextSettingsButton - Button for opening\\n *   the image alt-text settings dialog.\\n * @property {HTMLButtonElement} documentPropertiesButton - Button for opening\\n *   the document properties dialog.\\n *\u002F\\n\\nclass SecondaryToolbar {\\n  #opts;\\n\\n  \u002F**\\n   * @param {SecondaryToolbarOptions} options\\n   * @param {EventBus} eventBus\\n   *\u002F\\n  constructor(options, eventBus) {\\n    this.#opts = options;\\n    const buttons = [\\n      {\\n        element: options.presentationModeButton,\\n        eventName: \\\"presentationmode\\\",\\n        close: true,\\n      },\\n      { element: options.printButton, eventName: \\\"print\\\", close: true },\\n      { element: options.downloadButton, eventName: \\\"download\\\", close: true },\\n      { element: options.viewBookmarkButton, eventName: null, close: true },\\n      { element: options.firstPageButton, eventName: \\\"firstpage\\\", close: true },\\n      { element: options.lastPageButton, eventName: \\\"lastpage\\\", close: true },\\n      {\\n        element: options.pageRotateCwButton,\\n        eventName: \\\"rotatecw\\\",\\n        close: false,\\n      },\\n      {\\n        element: options.pageRotateCcwButton,\\n        eventName: \\\"rotateccw\\\",\\n        close: false,\\n      },\\n      {\\n        element: options.cursorSelectToolButton,\\n        eventName: \\\"switchcursortool\\\",\\n        eventDetails: { tool: CursorTool.SELECT },\\n        close: true,\\n      },\\n      {\\n        element: options.cursorHandToolButton,\\n        eventName: \\\"switchcursortool\\\",\\n        eventDetails: { tool: CursorTool.HAND },\\n        close: true,\\n      },\\n      {\\n        element: options.scrollPageButton,\\n        eventName: \\\"switchscrollmode\\\",\\n        eventDetails: { mode: ScrollMode.PAGE },\\n        close: true,\\n      },\\n      {\\n        element: options.scrollVerticalButton,\\n        eventName: \\\"switchscrollmode\\\",\\n        eventDetails: { mode: ScrollMode.VERTICAL },\\n        close: true,\\n      },\\n      {\\n        element: options.scrollHorizontalButton,\\n        eventName: \\\"switchscrollmode\\\",\\n        eventDetails: { mode: ScrollMode.HORIZONTAL },\\n        close: true,\\n      },\\n      {\\n        element: options.scrollWrappedButton,\\n        eventName: \\\"switchscrollmode\\\",\\n        eventDetails: { mode: ScrollMode.WRAPPED },\\n        close: true,\\n      },\\n      {\\n        element: options.spreadNoneButton,\\n        eventName: \\\"switchspreadmode\\\",\\n        eventDetails: { mode: SpreadMode.NONE },\\n        close: true,\\n      },\\n      {\\n        element: options.spreadOddButton,\\n        eventName: \\\"switchspreadmode\\\",\\n        eventDetails: { mode: SpreadMode.ODD },\\n        close: true,\\n      },\\n      {\\n        element: options.spreadEvenButton,\\n        eventName: \\\"switchspreadmode\\\",\\n        eventDetails: { mode: SpreadMode.EVEN },\\n        close: true,\\n      },\\n      {\\n        element: options.imageAltTextSettingsButton,\\n        eventName: \\\"imagealttextsettings\\\",\\n        close: true,\\n      },\\n      {\\n        element: options.documentPropertiesButton,\\n        eventName: \\\"documentproperties\\\",\\n        close: true,\\n      },\\n    ];\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      buttons.push({\\n        element: options.openFileButton,\\n        eventName: \\\"openfile\\\",\\n        close: true,\\n      });\\n    }\\n\\n    this.eventBus = eventBus;\\n    this.opened = false;\\n\\n    \u002F\u002F Bind the event listeners for click, cursor tool, and scroll\u002Fspread mode\\n    \u002F\u002F actions.\\n    this.#bindListeners(buttons);\\n\\n    this.reset();\\n  }\\n\\n  \u002F**\\n   * @type {boolean}\\n   *\u002F\\n  get isOpen() {\\n    return this.opened;\\n  }\\n\\n  setPageNumber(pageNumber) {\\n    this.pageNumber = pageNumber;\\n    this.#updateUIState();\\n  }\\n\\n  setPagesCount(pagesCount) {\\n    this.pagesCount = pagesCount;\\n    this.#updateUIState();\\n  }\\n\\n  reset() {\\n    this.pageNumber = 0;\\n    this.pagesCount = 0;\\n    this.#updateUIState();\\n\\n    \u002F\u002F Reset the Scroll\u002FSpread buttons too, since they're document specific.\\n    this.eventBus.dispatch(\\\"switchcursortool\\\", { source: this, reset: true });\\n    this.#scrollModeChanged({ mode: ScrollMode.VERTICAL });\\n    this.#spreadModeChanged({ mode: SpreadMode.NONE });\\n  }\\n\\n  #updateUIState() {\\n    const {\\n      firstPageButton,\\n      lastPageButton,\\n      pageRotateCwButton,\\n      pageRotateCcwButton,\\n    } = this.#opts;\\n\\n    firstPageButton.disabled = this.pageNumber \u003C= 1;\\n    lastPageButton.disabled = this.pageNumber >= this.pagesCount;\\n    pageRotateCwButton.disabled = this.pagesCount === 0;\\n    pageRotateCcwButton.disabled = this.pagesCount === 0;\\n  }\\n\\n  #bindListeners(buttons) {\\n    const { eventBus } = this;\\n    const { toggleButton } = this.#opts;\\n    \u002F\u002F Button to toggle the visibility of the secondary toolbar.\\n    toggleButton.addEventListener(\\\"click\\\", this.toggle.bind(this));\\n\\n    \u002F\u002F All items within the secondary toolbar.\\n    for (const { element, eventName, close, eventDetails } of buttons) {\\n      element.addEventListener(\\\"click\\\", evt => {\\n        if (eventName !== null) {\\n          eventBus.dispatch(eventName, { source: this, ...eventDetails });\\n        }\\n        if (close) {\\n          this.close();\\n        }\\n        eventBus.dispatch(\\\"reporttelemetry\\\", {\\n          source: this,\\n          details: {\\n            type: \\\"buttons\\\",\\n            data: { id: element.id },\\n          },\\n        });\\n      });\\n    }\\n\\n    eventBus._on(\\\"cursortoolchanged\\\", this.#cursorToolChanged.bind(this));\\n    eventBus._on(\\\"scrollmodechanged\\\", this.#scrollModeChanged.bind(this));\\n    eventBus._on(\\\"spreadmodechanged\\\", this.#spreadModeChanged.bind(this));\\n  }\\n\\n  #cursorToolChanged({ tool, disabled }) {\\n    const { cursorSelectToolButton, cursorHandToolButton } = this.#opts;\\n\\n    toggleCheckedBtn(cursorSelectToolButton, tool === CursorTool.SELECT);\\n    toggleCheckedBtn(cursorHandToolButton, tool === CursorTool.HAND);\\n\\n    cursorSelectToolButton.disabled = disabled;\\n    cursorHandToolButton.disabled = disabled;\\n  }\\n\\n  #scrollModeChanged({ mode }) {\\n    const {\\n      scrollPageButton,\\n      scrollVerticalButton,\\n      scrollHorizontalButton,\\n      scrollWrappedButton,\\n      spreadNoneButton,\\n      spreadOddButton,\\n      spreadEvenButton,\\n    } = this.#opts;\\n\\n    toggleCheckedBtn(scrollPageButton, mode === ScrollMode.PAGE);\\n    toggleCheckedBtn(scrollVerticalButton, mode === ScrollMode.VERTICAL);\\n    toggleCheckedBtn(scrollHorizontalButton, mode === ScrollMode.HORIZONTAL);\\n    toggleCheckedBtn(scrollWrappedButton, mode === ScrollMode.WRAPPED);\\n\\n    \u002F\u002F Permanently *disable* the Scroll buttons when PAGE-scrolling is being\\n    \u002F\u002F enforced for *very* long\u002Flarge documents; please see the `BaseViewer`.\\n    const forceScrollModePage =\\n      this.pagesCount > PagesCountLimit.FORCE_SCROLL_MODE_PAGE;\\n    scrollPageButton.disabled = forceScrollModePage;\\n    scrollVerticalButton.disabled = forceScrollModePage;\\n    scrollHorizontalButton.disabled = forceScrollModePage;\\n    scrollWrappedButton.disabled = forceScrollModePage;\\n\\n    \u002F\u002F Temporarily *disable* the Spread buttons when horizontal scrolling is\\n    \u002F\u002F enabled, since the non-default Spread modes doesn't affect the layout.\\n    const isHorizontal = mode === ScrollMode.HORIZONTAL;\\n    spreadNoneButton.disabled = isHorizontal;\\n    spreadOddButton.disabled = isHorizontal;\\n    spreadEvenButton.disabled = isHorizontal;\\n  }\\n\\n  #spreadModeChanged({ mode }) {\\n    const { spreadNoneButton, spreadOddButton, spreadEvenButton } = this.#opts;\\n\\n    toggleCheckedBtn(spreadNoneButton, mode === SpreadMode.NONE);\\n    toggleCheckedBtn(spreadOddButton, mode === SpreadMode.ODD);\\n    toggleCheckedBtn(spreadEvenButton, mode === SpreadMode.EVEN);\\n  }\\n\\n  open() {\\n    if (this.opened) {\\n      return;\\n    }\\n    this.opened = true;\\n\\n    const { toggleButton, toolbar } = this.#opts;\\n    toggleExpandedBtn(toggleButton, true, toolbar);\\n  }\\n\\n  close() {\\n    if (!this.opened) {\\n      return;\\n    }\\n    this.opened = false;\\n\\n    const { toggleButton, toolbar } = this.#opts;\\n    toggleExpandedBtn(toggleButton, false, toolbar);\\n  }\\n\\n  toggle() {\\n    if (this.opened) {\\n      this.close();\\n    } else {\\n      this.open();\\n    }\\n  }\\n}\\n\\nexport { SecondaryToolbar };\\n\",\"\u002F* Copyright 2025 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport {\\n  AnnotationEditorParamsType,\\n  DOMSVGFactory,\\n  noContextMenu,\\n  SignatureExtractor,\\n  stopEvent,\\n  SupportedImageMimeTypes,\\n} from \\\"pdfjs-lib\\\";\\n\\n\u002F\u002F Default height of the added signature in page coordinates.\\nconst DEFAULT_HEIGHT_IN_PAGE = 40;\\n\\nclass SignatureManager {\\n  #addButton;\\n\\n  #tabsToAltText = null;\\n\\n  #clearButton;\\n\\n  #clearDescription;\\n\\n  #currentEditor;\\n\\n  #description;\\n\\n  #dialog;\\n\\n  #drawCurves = null;\\n\\n  #drawPlaceholder;\\n\\n  #drawPath = null;\\n\\n  #drawPathString = \\\"\\\";\\n\\n  #drawPoints = null;\\n\\n  #drawSVG;\\n\\n  #drawThickness;\\n\\n  #errorBar;\\n\\n  #extractedSignatureData = null;\\n\\n  #imagePath = null;\\n\\n  #imagePicker;\\n\\n  #imagePickerLink;\\n\\n  #imagePlaceholder;\\n\\n  #imageSVG;\\n\\n  #saveCheckbox;\\n\\n  #saveContainer;\\n\\n  #tabButtons;\\n\\n  #addSignatureToolbarButton;\\n\\n  #loadSignaturesPromise = null;\\n\\n  #typeInput;\\n\\n  #currentTab = null;\\n\\n  #currentTabAC = null;\\n\\n  #hasDescriptionChanged = false;\\n\\n  #eventBus;\\n\\n  #l10n;\\n\\n  #overlayManager;\\n\\n  #editDescriptionDialog;\\n\\n  #signatureStorage;\\n\\n  #uiManager = null;\\n\\n  static #l10nDescription = null;\\n\\n  constructor(\\n    {\\n      dialog,\\n      panels,\\n      typeButton,\\n      typeInput,\\n      drawButton,\\n      drawPlaceholder,\\n      drawSVG,\\n      drawThickness,\\n      imageButton,\\n      imageSVG,\\n      imagePlaceholder,\\n      imagePicker,\\n      imagePickerLink,\\n      description,\\n      clearButton,\\n      cancelButton,\\n      addButton,\\n      errorCloseButton,\\n      errorBar,\\n      saveCheckbox,\\n      saveContainer,\\n    },\\n    editSignatureElements,\\n    addSignatureToolbarButton,\\n    overlayManager,\\n    l10n,\\n    signatureStorage,\\n    eventBus\\n  ) {\\n    this.#addButton = addButton;\\n    this.#clearButton = clearButton;\\n    this.#clearDescription = description.lastElementChild;\\n    this.#description = description.firstElementChild;\\n    this.#dialog = dialog;\\n    this.#drawSVG = drawSVG;\\n    this.#drawPlaceholder = drawPlaceholder;\\n    this.#drawThickness = drawThickness;\\n    this.#errorBar = errorBar;\\n    this.#imageSVG = imageSVG;\\n    this.#imagePlaceholder = imagePlaceholder;\\n    this.#imagePicker = imagePicker;\\n    this.#imagePickerLink = imagePickerLink;\\n    this.#overlayManager = overlayManager;\\n    this.#saveCheckbox = saveCheckbox;\\n    this.#saveContainer = saveContainer;\\n    this.#addSignatureToolbarButton = addSignatureToolbarButton;\\n    this.#typeInput = typeInput;\\n    this.#l10n = l10n;\\n    this.#signatureStorage = signatureStorage;\\n    this.#eventBus = eventBus;\\n    this.#editDescriptionDialog = new EditDescriptionDialog(\\n      editSignatureElements,\\n      overlayManager\\n    );\\n\\n    SignatureManager.#l10nDescription ||= Object.freeze({\\n      signature: \\\"pdfjs-editor-add-signature-description-default-when-drawing\\\",\\n    });\\n\\n    dialog.addEventListener(\\\"close\\\", this.#close.bind(this));\\n    dialog.addEventListener(\\\"contextmenu\\\", e => {\\n      const { target } = e;\\n      if (target !== this.#typeInput && target !== this.#description) {\\n        e.preventDefault();\\n      }\\n    });\\n    dialog.addEventListener(\\\"drop\\\", e => {\\n      stopEvent(e);\\n    });\\n    cancelButton.addEventListener(\\\"click\\\", this.#cancel.bind(this));\\n    addButton.addEventListener(\\\"click\\\", this.#add.bind(this));\\n    clearButton.addEventListener(\\n      \\\"click\\\",\\n      () => {\\n        this.#reportTelemetry({\\n          type: \\\"signature\\\",\\n          action: \\\"pdfjs.signature.clear\\\",\\n          data: {\\n            type: this.#currentTab,\\n          },\\n        });\\n        this.#initTab(null);\\n      },\\n      { passive: true }\\n    );\\n    this.#description.addEventListener(\\n      \\\"input\\\",\\n      () => {\\n        this.#clearDescription.disabled = this.#description.value === \\\"\\\";\\n      },\\n      { passive: true }\\n    );\\n    this.#clearDescription.addEventListener(\\n      \\\"click\\\",\\n      () => {\\n        this.#description.value = \\\"\\\";\\n        this.#clearDescription.disabled = true;\\n      },\\n      { passive: true }\\n    );\\n    errorCloseButton.addEventListener(\\n      \\\"click\\\",\\n      () => {\\n        errorBar.hidden = true;\\n      },\\n      { passive: true }\\n    );\\n\\n    this.#initTabButtons(typeButton, drawButton, imageButton, panels);\\n    imagePicker.accept = SupportedImageMimeTypes.join(\\\",\\\");\\n\\n    eventBus._on(\\\"storedsignatureschanged\\\", this.#signaturesChanged.bind(this));\\n\\n    overlayManager.register(dialog);\\n  }\\n\\n  #initTabButtons(typeButton, drawButton, imageButton, panels) {\\n    const buttons = (this.#tabButtons = new Map([\\n      [\\\"type\\\", typeButton],\\n      [\\\"draw\\\", drawButton],\\n      [\\\"image\\\", imageButton],\\n    ]));\\n    const tabCallback = e => {\\n      for (const [name, button] of buttons) {\\n        if (button === e.target) {\\n          button.setAttribute(\\\"aria-selected\\\", true);\\n          button.setAttribute(\\\"tabindex\\\", 0);\\n          panels.setAttribute(\\\"data-selected\\\", name);\\n          this.#initTab(name);\\n        } else {\\n          button.setAttribute(\\\"aria-selected\\\", false);\\n          \u002F\u002F Only the active tab is focusable: the others can be\\n          \u002F\u002F reached by keyboard navigation (left\u002Fright arrows).\\n          button.setAttribute(\\\"tabindex\\\", -1);\\n        }\\n      }\\n    };\\n\\n    const buttonsArray = Array.from(buttons.values());\\n    for (let i = 0, ii = buttonsArray.length; i \u003C ii; i++) {\\n      const button = buttonsArray[i];\\n      button.addEventListener(\\\"click\\\", tabCallback, { passive: true });\\n      button.addEventListener(\\n        \\\"keydown\\\",\\n        ({ key }) => {\\n          if (key !== \\\"ArrowLeft\\\" && key !== \\\"ArrowRight\\\") {\\n            return;\\n          }\\n          buttonsArray[i + (key === \\\"ArrowLeft\\\" ? -1 : 1)]?.focus();\\n        },\\n        { passive: true }\\n      );\\n    }\\n  }\\n\\n  #resetCommon() {\\n    this.#hasDescriptionChanged = false;\\n    this.#description.value = \\\"\\\";\\n    if (this.#currentTab) {\\n      this.#tabsToAltText.get(this.#currentTab).value = \\\"\\\";\\n    }\\n  }\\n\\n  #resetTab(name) {\\n    switch (name) {\\n      case \\\"type\\\":\\n        this.#typeInput.value = \\\"\\\";\\n        break;\\n      case \\\"draw\\\":\\n        this.#drawCurves = null;\\n        this.#drawPoints = null;\\n        this.#drawPathString = \\\"\\\";\\n        this.#drawPath?.remove();\\n        this.#drawPath = null;\\n        this.#drawPlaceholder.hidden = false;\\n        this.#drawThickness.value = 1;\\n        break;\\n      case \\\"image\\\":\\n        this.#imagePlaceholder.hidden = false;\\n        this.#imagePath?.remove();\\n        this.#imagePath = null;\\n        break;\\n    }\\n  }\\n\\n  #initTab(name) {\\n    if (name && this.#currentTab === name) {\\n      return;\\n    }\\n    if (this.#currentTab) {\\n      this.#tabsToAltText.get(this.#currentTab).value = this.#description.value;\\n    }\\n    if (name) {\\n      this.#currentTab = name;\\n    }\\n\\n    this.#errorBar.hidden = true;\\n    const reset = !name;\\n    if (reset) {\\n      this.#resetCommon();\\n    } else {\\n      this.#description.value = this.#tabsToAltText.get(this.#currentTab).value;\\n    }\\n    this.#clearDescription.disabled = this.#description.value === \\\"\\\";\\n    this.#currentTabAC?.abort();\\n    this.#currentTabAC = new AbortController();\\n    switch (this.#currentTab) {\\n      case \\\"type\\\":\\n        this.#initTypeTab(reset);\\n        break;\\n      case \\\"draw\\\":\\n        this.#initDrawTab(reset);\\n        break;\\n      case \\\"image\\\":\\n        this.#initImageTab(reset);\\n        break;\\n    }\\n  }\\n\\n  #disableButtons(value) {\\n    this.#saveCheckbox.disabled =\\n      this.#clearButton.disabled =\\n      this.#addButton.disabled =\\n      this.#description.disabled =\\n        !value;\\n  }\\n\\n  #initTypeTab(reset) {\\n    if (reset) {\\n      this.#resetTab(\\\"type\\\");\\n    }\\n\\n    this.#disableButtons(this.#typeInput.value);\\n\\n    const { signal } = this.#currentTabAC;\\n    const options = { passive: true, signal };\\n    this.#typeInput.addEventListener(\\n      \\\"input\\\",\\n      () => {\\n        const { value } = this.#typeInput;\\n        if (!this.#hasDescriptionChanged) {\\n          this.#tabsToAltText.get(\\\"type\\\").default = this.#description.value =\\n            value;\\n          this.#clearDescription.disabled = value === \\\"\\\";\\n        }\\n        this.#disableButtons(value);\\n      },\\n      options\\n    );\\n    this.#description.addEventListener(\\n      \\\"input\\\",\\n      () => {\\n        this.#hasDescriptionChanged =\\n          this.#typeInput.value !== this.#description.value;\\n      },\\n      options\\n    );\\n  }\\n\\n  #initDrawTab(reset) {\\n    if (reset) {\\n      this.#resetTab(\\\"draw\\\");\\n    }\\n\\n    this.#disableButtons(this.#drawPath);\\n\\n    const { signal } = this.#currentTabAC;\\n    const options = { signal };\\n    let currentPointerId = NaN;\\n    const drawCallback = e => {\\n      const { pointerId } = e;\\n      if (!isNaN(currentPointerId) && currentPointerId !== pointerId) {\\n        return;\\n      }\\n      currentPointerId = pointerId;\\n      e.preventDefault();\\n      this.#drawSVG.setPointerCapture(pointerId);\\n\\n      const { width: drawWidth, height: drawHeight } =\\n        this.#drawSVG.getBoundingClientRect();\\n      let { offsetX, offsetY } = e;\\n      offsetX = Math.round(offsetX);\\n      offsetY = Math.round(offsetY);\\n      if (e.target === this.#drawPlaceholder) {\\n        this.#drawPlaceholder.hidden = true;\\n      }\\n      if (!this.#drawCurves) {\\n        this.#drawCurves = {\\n          width: drawWidth,\\n          height: drawHeight,\\n          thickness: parseInt(this.#drawThickness.value),\\n          curves: [],\\n        };\\n        this.#disableButtons(true);\\n\\n        const svgFactory = new DOMSVGFactory();\\n        const path = (this.#drawPath = svgFactory.createElement(\\\"path\\\"));\\n        path.setAttribute(\\\"stroke-width\\\", this.#drawThickness.value);\\n        this.#drawSVG.append(path);\\n        this.#drawSVG.addEventListener(\\\"pointerdown\\\", drawCallback, options);\\n        this.#drawPlaceholder.removeEventListener(\\\"pointerdown\\\", drawCallback);\\n        if (this.#description.value === \\\"\\\") {\\n          this.#l10n\\n            .get(SignatureManager.#l10nDescription.signature)\\n            .then(description => {\\n              this.#tabsToAltText.get(\\\"draw\\\").default = description;\\n              this.#description.value ||= description;\\n              this.#clearDescription.disabled = this.#description.value === \\\"\\\";\\n            });\\n        }\\n      }\\n\\n      this.#drawPoints = [offsetX, offsetY];\\n      this.#drawCurves.curves.push({ points: this.#drawPoints });\\n      this.#drawPathString += `M ${offsetX} ${offsetY}`;\\n      this.#drawPath.setAttribute(\\\"d\\\", this.#drawPathString);\\n\\n      const finishDrawAC = new AbortController();\\n      const listenerDrawOptions = {\\n        signal: AbortSignal.any([signal, finishDrawAC.signal]),\\n      };\\n      this.#drawSVG.addEventListener(\\n        \\\"contextmenu\\\",\\n        noContextMenu,\\n        listenerDrawOptions\\n      );\\n      this.#drawSVG.addEventListener(\\n        \\\"pointermove\\\",\\n        evt => {\\n          evt.preventDefault();\\n          let { offsetX: x, offsetY: y } = evt;\\n          x = Math.round(x);\\n          y = Math.round(y);\\n          const drawPoints = this.#drawPoints;\\n          if (\\n            x \u003C 0 ||\\n            y \u003C 0 ||\\n            x > drawWidth ||\\n            y > drawHeight ||\\n            (x === drawPoints.at(-2) && y === drawPoints.at(-1))\\n          ) {\\n            return;\\n          }\\n          if (drawPoints.length >= 4) {\\n            const [x1, y1, x2, y2] = drawPoints.slice(-4);\\n            this.#drawPathString += `C${(x1 + 5 * x2) \u002F 6} ${(y1 + 5 * y2) \u002F 6} ${(5 * x2 + x) \u002F 6} ${(5 * y2 + y) \u002F 6} ${(x2 + x) \u002F 2} ${(y2 + y) \u002F 2}`;\\n          } else {\\n            this.#drawPathString += `L${x} ${y}`;\\n          }\\n          drawPoints.push(x, y);\\n          this.#drawPath.setAttribute(\\\"d\\\", this.#drawPathString);\\n        },\\n        listenerDrawOptions\\n      );\\n      this.#drawSVG.addEventListener(\\n        \\\"pointerup\\\",\\n        evt => {\\n          const { pointerId: pId } = evt;\\n          if (!isNaN(currentPointerId) && currentPointerId !== pId) {\\n            return;\\n          }\\n          currentPointerId = NaN;\\n          evt.preventDefault();\\n          this.#drawSVG.releasePointerCapture(pId);\\n          finishDrawAC.abort();\\n          if (this.#drawPoints.length === 2) {\\n            this.#drawPathString += `L${this.#drawPoints[0]} ${this.#drawPoints[1]}`;\\n            this.#drawPath.setAttribute(\\\"d\\\", this.#drawPathString);\\n          }\\n        },\\n        listenerDrawOptions\\n      );\\n    };\\n    if (this.#drawCurves) {\\n      this.#drawSVG.addEventListener(\\\"pointerdown\\\", drawCallback, options);\\n    } else {\\n      this.#drawPlaceholder.addEventListener(\\n        \\\"pointerdown\\\",\\n        drawCallback,\\n        options\\n      );\\n    }\\n    this.#drawThickness.addEventListener(\\n      \\\"input\\\",\\n      () => {\\n        const { value: thickness } = this.#drawThickness;\\n        this.#drawThickness.setAttribute(\\n          \\\"data-l10n-args\\\",\\n          JSON.stringify({ thickness })\\n        );\\n        if (!this.#drawCurves) {\\n          return;\\n        }\\n        this.#drawPath.setAttribute(\\\"stroke-width\\\", thickness);\\n        this.#drawCurves.thickness = thickness;\\n      },\\n      options\\n    );\\n  }\\n\\n  #initImageTab(reset) {\\n    if (reset) {\\n      this.#resetTab(\\\"image\\\");\\n    }\\n\\n    this.#disableButtons(this.#imagePath);\\n\\n    const { signal } = this.#currentTabAC;\\n    const options = { signal };\\n    const passiveOptions = { passive: true, signal };\\n    this.#imagePickerLink.addEventListener(\\n      \\\"keydown\\\",\\n      e => {\\n        const { key } = e;\\n        if (key === \\\"Enter\\\" || key === \\\" \\\") {\\n          stopEvent(e);\\n          this.#imagePicker.click();\\n        }\\n      },\\n      options\\n    );\\n    this.#imagePicker.addEventListener(\\n      \\\"click\\\",\\n      () => {\\n        this.#dialog.classList.toggle(\\\"waiting\\\", true);\\n      },\\n      passiveOptions\\n    );\\n    this.#imagePicker.addEventListener(\\n      \\\"change\\\",\\n      async () => {\\n        const file = this.#imagePicker.files?.[0];\\n        if (!file || !SupportedImageMimeTypes.includes(file.type)) {\\n          this.#errorBar.hidden = false;\\n          this.#dialog.classList.toggle(\\\"waiting\\\", false);\\n          return;\\n        }\\n        await this.#extractSignature(file);\\n      },\\n      passiveOptions\\n    );\\n    this.#imagePicker.addEventListener(\\n      \\\"cancel\\\",\\n      () => {\\n        this.#dialog.classList.toggle(\\\"waiting\\\", false);\\n      },\\n      passiveOptions\\n    );\\n    this.#imagePlaceholder.addEventListener(\\n      \\\"dragover\\\",\\n      e => {\\n        const { dataTransfer } = e;\\n        for (const { type } of dataTransfer.items) {\\n          if (!SupportedImageMimeTypes.includes(type)) {\\n            continue;\\n          }\\n          dataTransfer.dropEffect =\\n            dataTransfer.effectAllowed === \\\"copy\\\" ? \\\"copy\\\" : \\\"move\\\";\\n          stopEvent(e);\\n          return;\\n        }\\n        dataTransfer.dropEffect = \\\"none\\\";\\n      },\\n      options\\n    );\\n    this.#imagePlaceholder.addEventListener(\\n      \\\"drop\\\",\\n      e => {\\n        const {\\n          dataTransfer: { files },\\n        } = e;\\n        if (!files?.length) {\\n          return;\\n        }\\n        for (const file of files) {\\n          if (SupportedImageMimeTypes.includes(file.type)) {\\n            this.#extractSignature(file);\\n            break;\\n          }\\n        }\\n        stopEvent(e);\\n        this.#dialog.classList.toggle(\\\"waiting\\\", true);\\n      },\\n      options\\n    );\\n  }\\n\\n  async #extractSignature(file) {\\n    let data;\\n    try {\\n      data = await this.#uiManager.imageManager.getFromFile(file);\\n    } catch (e) {\\n      console.error(\\\"SignatureManager.#extractSignature.\\\", e);\\n    }\\n    if (!data) {\\n      this.#errorBar.hidden = false;\\n      this.#dialog.classList.toggle(\\\"waiting\\\", false);\\n      return;\\n    }\\n\\n    const { outline } = (this.#extractedSignatureData =\\n      this.#currentEditor.getFromImage(data.bitmap));\\n\\n    if (!outline) {\\n      this.#dialog.classList.toggle(\\\"waiting\\\", false);\\n      return;\\n    }\\n\\n    this.#imagePlaceholder.hidden = true;\\n    this.#disableButtons(true);\\n\\n    const svgFactory = new DOMSVGFactory();\\n    const path = (this.#imagePath = svgFactory.createElement(\\\"path\\\"));\\n    this.#imageSVG.setAttribute(\\\"viewBox\\\", outline.viewBox);\\n    this.#imageSVG.setAttribute(\\\"preserveAspectRatio\\\", \\\"xMidYMid meet\\\");\\n    this.#imageSVG.append(path);\\n    path.setAttribute(\\\"d\\\", outline.toSVGPath());\\n    this.#tabsToAltText.get(\\\"image\\\").default = file.name;\\n    if (this.#description.value === \\\"\\\") {\\n      this.#description.value = file.name || \\\"\\\";\\n      this.#clearDescription.disabled = this.#description.value === \\\"\\\";\\n    }\\n\\n    this.#dialog.classList.toggle(\\\"waiting\\\", false);\\n  }\\n\\n  #getOutlineForType() {\\n    return this.#currentEditor.getFromText(\\n      this.#typeInput.value,\\n      window.getComputedStyle(this.#typeInput)\\n    );\\n  }\\n\\n  #getOutlineForDraw() {\\n    const { width, height } = this.#drawSVG.getBoundingClientRect();\\n    return this.#currentEditor.getDrawnSignature(\\n      this.#drawCurves,\\n      width,\\n      height\\n    );\\n  }\\n\\n  #reportTelemetry(data) {\\n    this.#eventBus.dispatch(\\\"reporttelemetry\\\", {\\n      source: this,\\n      details: {\\n        type: \\\"editing\\\",\\n        data,\\n      },\\n    });\\n  }\\n\\n  #addToolbarButton(signatureData, uuid, description) {\\n    const { curves, areContours, thickness, width, height } = signatureData;\\n    const maxDim = Math.max(width, height);\\n    const outlineData = SignatureExtractor.processDrawnLines({\\n      lines: {\\n        curves,\\n        thickness,\\n        width,\\n        height,\\n      },\\n      pageWidth: maxDim,\\n      pageHeight: maxDim,\\n      rotation: 0,\\n      innerMargin: 0,\\n      mustSmooth: false,\\n      areContours,\\n    });\\n    if (!outlineData) {\\n      return;\\n    }\\n\\n    const { outline } = outlineData;\\n    const svgFactory = new DOMSVGFactory();\\n\\n    const div = document.createElement(\\\"div\\\");\\n    const button = document.createElement(\\\"button\\\");\\n\\n    button.addEventListener(\\\"click\\\", () => {\\n      this.#eventBus.dispatch(\\\"switchannotationeditorparams\\\", {\\n        source: this,\\n        type: AnnotationEditorParamsType.CREATE,\\n        value: {\\n          signatureData: {\\n            lines: {\\n              curves,\\n              thickness,\\n              width,\\n              height,\\n            },\\n            mustSmooth: false,\\n            areContours,\\n            description,\\n            uuid,\\n            heightInPage: DEFAULT_HEIGHT_IN_PAGE,\\n          },\\n        },\\n      });\\n    });\\n    div.append(button);\\n    div.classList.add(\\\"toolbarAddSignatureButtonContainer\\\");\\n\\n    const svg = svgFactory.create(1, 1, true);\\n    button.append(svg);\\n\\n    const span = document.createElement(\\\"span\\\");\\n    span.ariaHidden = true;\\n    button.append(span);\\n\\n    button.classList.add(\\\"toolbarAddSignatureButton\\\");\\n    button.type = \\\"button\\\";\\n    span.textContent = description;\\n    button.setAttribute(\\n      \\\"data-l10n-id\\\",\\n      \\\"pdfjs-editor-add-saved-signature-button\\\"\\n    );\\n    button.setAttribute(\\\"data-l10n-args\\\", JSON.stringify({ description }));\\n    button.tabIndex = 0;\\n\\n    const path = svgFactory.createElement(\\\"path\\\");\\n    svg.append(path);\\n    svg.setAttribute(\\\"viewBox\\\", outline.viewBox);\\n    svg.setAttribute(\\\"preserveAspectRatio\\\", \\\"xMidYMid meet\\\");\\n    if (areContours) {\\n      path.classList.add(\\\"contours\\\");\\n    }\\n    path.setAttribute(\\\"d\\\", outline.toSVGPath());\\n\\n    const deleteButton = document.createElement(\\\"button\\\");\\n    div.append(deleteButton);\\n    deleteButton.classList.add(\\\"toolbarButton\\\", \\\"deleteButton\\\");\\n    deleteButton.setAttribute(\\n      \\\"data-l10n-id\\\",\\n      \\\"pdfjs-editor-delete-signature-button1\\\"\\n    );\\n    deleteButton.type = \\\"button\\\";\\n    deleteButton.tabIndex = 0;\\n    deleteButton.addEventListener(\\\"click\\\", async () => {\\n      if (await this.#signatureStorage.delete(uuid)) {\\n        div.remove();\\n        this.#reportTelemetry({\\n          type: \\\"signature\\\",\\n          action: \\\"pdfjs.signature.delete_saved\\\",\\n          data: {\\n            savedCount: await this.#signatureStorage.size(),\\n          },\\n        });\\n      }\\n    });\\n    const deleteSpan = document.createElement(\\\"span\\\");\\n    deleteButton.append(deleteSpan);\\n    deleteSpan.setAttribute(\\n      \\\"data-l10n-id\\\",\\n      \\\"pdfjs-editor-delete-signature-button-label1\\\"\\n    );\\n\\n    this.#addSignatureToolbarButton.before(div);\\n  }\\n\\n  async #signaturesChanged() {\\n    const parent = this.#addSignatureToolbarButton.parentElement;\\n    while (parent.firstElementChild !== this.#addSignatureToolbarButton) {\\n      parent.firstElementChild.remove();\\n    }\\n    this.#loadSignaturesPromise = null;\\n    await this.loadSignatures(\u002F* reload = *\u002F true);\\n  }\\n\\n  getSignature(params) {\\n    return this.open(params);\\n  }\\n\\n  async loadSignatures(reload = false) {\\n    if (\\n      !this.#addSignatureToolbarButton ||\\n      (!reload && this.#addSignatureToolbarButton.previousElementSibling) ||\\n      !this.#signatureStorage\\n    ) {\\n      return;\\n    }\\n\\n    if (!this.#loadSignaturesPromise) {\\n      \u002F\u002F The first call of loadSignatures() starts loading the signatures.\\n      \u002F\u002F The second one will wait until the signatures are loaded in the DOM.\\n      this.#loadSignaturesPromise = this.#signatureStorage\\n        .getAll()\\n        .then(async signatures => [\\n          signatures,\\n          await Promise.all(\\n            Array.from(signatures.values(), ({ signatureData }) =>\\n              SignatureExtractor.decompressSignature(signatureData)\\n            )\\n          ),\\n        ]);\\n      if (!reload) {\\n        return;\\n      }\\n    }\\n    const [signatures, signaturesData] = await this.#loadSignaturesPromise;\\n    this.#loadSignaturesPromise = null;\\n\\n    let i = 0;\\n    for (const [uuid, { description }] of signatures) {\\n      const data = signaturesData[i++];\\n      if (!data) {\\n        continue;\\n      }\\n      data.curves = data.outlines.map(points => ({ points }));\\n      delete data.outlines;\\n      this.#addToolbarButton(data, uuid, description);\\n    }\\n  }\\n\\n  async renderEditButton(editor) {\\n    const button = document.createElement(\\\"button\\\");\\n    button.classList.add(\\\"altText\\\", \\\"editDescription\\\");\\n    button.tabIndex = 0;\\n    button.title = editor.description;\\n    const span = document.createElement(\\\"span\\\");\\n    button.append(span);\\n    span.setAttribute(\\n      \\\"data-l10n-id\\\",\\n      \\\"pdfjs-editor-add-signature-edit-button-label\\\"\\n    );\\n    button.addEventListener(\\n      \\\"click\\\",\\n      () => {\\n        this.#editDescriptionDialog.open(editor);\\n      },\\n      { passive: true }\\n    );\\n    return button;\\n  }\\n\\n  async open({ uiManager, editor }) {\\n    this.#tabsToAltText ||= new Map(\\n      this.#tabButtons.keys().map(name => [name, { value: \\\"\\\", default: \\\"\\\" }])\\n    );\\n    this.#uiManager = uiManager;\\n    this.#currentEditor = editor;\\n    this.#uiManager.removeEditListeners();\\n\\n    const isStorageFull = await this.#signatureStorage.isFull();\\n    this.#saveContainer.classList.toggle(\\\"fullStorage\\\", isStorageFull);\\n    this.#saveCheckbox.checked = !isStorageFull;\\n\\n    await this.#overlayManager.open(this.#dialog);\\n\\n    const tabType = this.#tabButtons.get(\\\"type\\\");\\n    tabType.focus();\\n    tabType.click();\\n  }\\n\\n  #cancel() {\\n    this.#finish();\\n  }\\n\\n  #finish() {\\n    this.#overlayManager.closeIfActive(this.#dialog);\\n  }\\n\\n  #close() {\\n    if (this.#currentEditor._drawId === null) {\\n      this.#currentEditor.remove();\\n    }\\n    this.#uiManager?.addEditListeners();\\n    this.#currentTabAC?.abort();\\n    this.#currentTabAC = null;\\n    this.#uiManager = null;\\n    this.#currentEditor = null;\\n\\n    this.#resetCommon();\\n    for (const [name] of this.#tabButtons) {\\n      this.#resetTab(name);\\n    }\\n    this.#disableButtons(false);\\n    this.#currentTab = null;\\n    this.#tabsToAltText = null;\\n  }\\n\\n  async #add() {\\n    let data;\\n    const type = this.#currentTab;\\n    switch (type) {\\n      case \\\"type\\\":\\n        data = this.#getOutlineForType();\\n        break;\\n      case \\\"draw\\\":\\n        data = this.#getOutlineForDraw();\\n        break;\\n      case \\\"image\\\":\\n        data = this.#extractedSignatureData;\\n        break;\\n    }\\n    let uuid = null;\\n    const description = this.#description.value;\\n    if (this.#saveCheckbox.checked) {\\n      const { newCurves, areContours, thickness, width, height } = data;\\n      const signatureData = await SignatureExtractor.compressSignature({\\n        outlines: newCurves,\\n        areContours,\\n        thickness,\\n        width,\\n        height,\\n      });\\n      uuid = await this.#signatureStorage.create({\\n        description,\\n        signatureData,\\n      });\\n      if (uuid) {\\n        this.#addToolbarButton(\\n          {\\n            curves: newCurves.map(points => ({ points })),\\n            areContours,\\n            thickness,\\n            width,\\n            height,\\n          },\\n          uuid,\\n          description\\n        );\\n      } else {\\n        console.warn(\\\"SignatureManager.add: cannot save the signature.\\\");\\n      }\\n    }\\n\\n    const altText = this.#tabsToAltText.get(type);\\n    this.#reportTelemetry({\\n      type: \\\"signature\\\",\\n      action: \\\"pdfjs.signature.created\\\",\\n      data: {\\n        type,\\n        saved: !!uuid,\\n        savedCount: await this.#signatureStorage.size(),\\n        descriptionChanged: description !== altText.default,\\n      },\\n    });\\n\\n    this.#currentEditor.addSignature(\\n      data,\\n      DEFAULT_HEIGHT_IN_PAGE,\\n      this.#description.value,\\n      uuid\\n    );\\n\\n    this.#finish();\\n  }\\n\\n  destroy() {\\n    this.#uiManager = null;\\n    this.#finish();\\n  }\\n}\\n\\nclass EditDescriptionDialog {\\n  #currentEditor;\\n\\n  #previousDescription;\\n\\n  #description;\\n\\n  #dialog;\\n\\n  #overlayManager;\\n\\n  #signatureSVG;\\n\\n  #uiManager;\\n\\n  constructor(\\n    { dialog, description, cancelButton, updateButton, editSignatureView },\\n    overlayManager\\n  ) {\\n    const descriptionInput = (this.#description =\\n      description.firstElementChild);\\n    this.#signatureSVG = editSignatureView;\\n    this.#dialog = dialog;\\n    this.#overlayManager = overlayManager;\\n\\n    dialog.addEventListener(\\\"close\\\", this.#close.bind(this));\\n    dialog.addEventListener(\\\"contextmenu\\\", e => {\\n      if (e.target !== this.#description) {\\n        e.preventDefault();\\n      }\\n    });\\n    cancelButton.addEventListener(\\\"click\\\", this.#cancel.bind(this));\\n    updateButton.addEventListener(\\\"click\\\", this.#update.bind(this));\\n\\n    const clearDescription = description.lastElementChild;\\n    clearDescription.addEventListener(\\\"click\\\", () => {\\n      descriptionInput.value = \\\"\\\";\\n      clearDescription.disabled = true;\\n      updateButton.disabled = this.#previousDescription === \\\"\\\";\\n    });\\n    descriptionInput.addEventListener(\\n      \\\"input\\\",\\n      () => {\\n        const { value } = descriptionInput;\\n        clearDescription.disabled = value === \\\"\\\";\\n        updateButton.disabled = value === this.#previousDescription;\\n        editSignatureView.setAttribute(\\\"aria-label\\\", value);\\n      },\\n      { passive: true }\\n    );\\n\\n    overlayManager.register(dialog);\\n  }\\n\\n  async open(editor) {\\n    this.#uiManager = editor._uiManager;\\n    this.#currentEditor = editor;\\n    this.#previousDescription = this.#description.value = editor.description;\\n    this.#description.dispatchEvent(new Event(\\\"input\\\"));\\n    this.#uiManager.removeEditListeners();\\n    const { areContours, outline } = editor.getSignaturePreview();\\n    const svgFactory = new DOMSVGFactory();\\n    const path = svgFactory.createElement(\\\"path\\\");\\n    this.#signatureSVG.append(path);\\n    this.#signatureSVG.setAttribute(\\\"viewBox\\\", outline.viewBox);\\n    path.setAttribute(\\\"d\\\", outline.toSVGPath());\\n    if (areContours) {\\n      path.classList.add(\\\"contours\\\");\\n    }\\n\\n    await this.#overlayManager.open(this.#dialog);\\n  }\\n\\n  async #update() {\\n    \u002F\u002F The description has been changed because the button isn't disabled.\\n    this.#currentEditor._reportTelemetry({\\n      action: \\\"pdfjs.signature.edit_description\\\",\\n      data: {\\n        hasBeenChanged: true,\\n      },\\n    });\\n    this.#currentEditor.description = this.#description.value;\\n    this.#finish();\\n  }\\n\\n  #cancel() {\\n    this.#currentEditor._reportTelemetry({\\n      action: \\\"pdfjs.signature.edit_description\\\",\\n      data: {\\n        hasBeenChanged: false,\\n      },\\n    });\\n    this.#finish();\\n  }\\n\\n  #finish() {\\n    this.#overlayManager.closeIfActive(this.#dialog);\\n  }\\n\\n  #close() {\\n    this.#uiManager?.addEditListeners();\\n    this.#uiManager = null;\\n    this.#currentEditor = null;\\n    this.#signatureSVG.firstElementChild.remove();\\n  }\\n}\\n\\nexport { SignatureManager };\\n\",\"\u002F* Copyright 2016 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Fevent_utils.js\\\").EventBus} EventBus *\u002F\\n\\nimport { AnnotationEditorType, ColorPicker, noContextMenu } from \\\"pdfjs-lib\\\";\\nimport {\\n  DEFAULT_SCALE,\\n  DEFAULT_SCALE_VALUE,\\n  MAX_SCALE,\\n  MIN_SCALE,\\n  toggleExpandedBtn,\\n} from \\\".\u002Fui_utils.js\\\";\\n\\n\u002F**\\n * @typedef {Object} ToolbarOptions\\n * @property {HTMLDivElement} container - Container for the secondary toolbar.\\n * @property {HTMLSpanElement} numPages - Label that contains number of pages.\\n * @property {HTMLInputElement} pageNumber - Control for display and user input\\n *   of the current page number.\\n * @property {HTMLSelectElement} scaleSelect - Scale selection control.\\n *   Its width is adjusted, when necessary, on UI localization.\\n * @property {HTMLOptionElement} customScaleOption - The item used to display\\n *   a non-predefined scale.\\n * @property {HTMLButtonElement} previous - Button to go to the previous page.\\n * @property {HTMLButtonElement} next - Button to go to the next page.\\n * @property {HTMLButtonElement} zoomIn - Button to zoom in the pages.\\n * @property {HTMLButtonElement} zoomOut - Button to zoom out the pages.\\n * @property {HTMLButtonElement} editorFreeTextButton - Button to switch to\\n *   FreeText editing.\\n * @property {HTMLButtonElement} download - Button to download the document.\\n *\u002F\\n\\nclass Toolbar {\\n  #colorPicker = null;\\n\\n  #opts;\\n\\n  \u002F**\\n   * @param {ToolbarOptions} options\\n   * @param {EventBus} eventBus\\n   * @param {number} toolbarDensity - The toolbar density value.\\n   *   The possible values are:\\n   *    - 0 (default) - The regular toolbar size.\\n   *    - 1 (compact) - The small toolbar size.\\n   *    - 2 (touch) - The large toolbar size.\\n   *\u002F\\n  constructor(options, eventBus, toolbarDensity = 0) {\\n    this.#opts = options;\\n    this.eventBus = eventBus;\\n    const buttons = [\\n      { element: options.previous, eventName: \\\"previouspage\\\" },\\n      { element: options.next, eventName: \\\"nextpage\\\" },\\n      { element: options.zoomIn, eventName: \\\"zoomin\\\" },\\n      { element: options.zoomOut, eventName: \\\"zoomout\\\" },\\n      { element: options.print, eventName: \\\"print\\\" },\\n      { element: options.download, eventName: \\\"download\\\" },\\n      {\\n        element: options.editorFreeTextButton,\\n        eventName: \\\"switchannotationeditormode\\\",\\n        eventDetails: {\\n          get mode() {\\n            const { classList } = options.editorFreeTextButton;\\n            return classList.contains(\\\"toggled\\\")\\n              ? AnnotationEditorType.NONE\\n              : AnnotationEditorType.FREETEXT;\\n          },\\n        },\\n      },\\n      {\\n        element: options.editorHighlightButton,\\n        eventName: \\\"switchannotationeditormode\\\",\\n        eventDetails: {\\n          get mode() {\\n            const { classList } = options.editorHighlightButton;\\n            return classList.contains(\\\"toggled\\\")\\n              ? AnnotationEditorType.NONE\\n              : AnnotationEditorType.HIGHLIGHT;\\n          },\\n        },\\n      },\\n      {\\n        element: options.editorInkButton,\\n        eventName: \\\"switchannotationeditormode\\\",\\n        eventDetails: {\\n          get mode() {\\n            const { classList } = options.editorInkButton;\\n            return classList.contains(\\\"toggled\\\")\\n              ? AnnotationEditorType.NONE\\n              : AnnotationEditorType.INK;\\n          },\\n        },\\n      },\\n      {\\n        element: options.editorStampButton,\\n        eventName: \\\"switchannotationeditormode\\\",\\n        eventDetails: {\\n          get mode() {\\n            const { classList } = options.editorStampButton;\\n            return classList.contains(\\\"toggled\\\")\\n              ? AnnotationEditorType.NONE\\n              : AnnotationEditorType.STAMP;\\n          },\\n        },\\n        telemetry: {\\n          type: \\\"editing\\\",\\n          data: { action: \\\"pdfjs.image.icon_click\\\" },\\n        },\\n      },\\n      {\\n        element: options.editorSignatureButton,\\n        eventName: \\\"switchannotationeditormode\\\",\\n        eventDetails: {\\n          get mode() {\\n            const { classList } = options.editorSignatureButton;\\n            return classList.contains(\\\"toggled\\\")\\n              ? AnnotationEditorType.NONE\\n              : AnnotationEditorType.SIGNATURE;\\n          },\\n        },\\n      },\\n    ];\\n\\n    \u002F\u002F Bind the event listeners for click and various other actions.\\n    this.#bindListeners(buttons);\\n\\n    this.#updateToolbarDensity({ value: toolbarDensity });\\n    this.reset();\\n  }\\n\\n  #updateToolbarDensity({ value }) {\\n    let name = \\\"normal\\\";\\n    switch (value) {\\n      case 1:\\n        name = \\\"compact\\\";\\n        break;\\n      case 2:\\n        name = \\\"touch\\\";\\n        break;\\n    }\\n    document.documentElement.setAttribute(\\\"data-toolbar-density\\\", name);\\n  }\\n\\n  setPageNumber(pageNumber, pageLabel) {\\n    this.pageNumber = pageNumber;\\n    this.pageLabel = pageLabel;\\n    this.#updateUIState(false);\\n  }\\n\\n  setPagesCount(pagesCount, hasPageLabels) {\\n    this.pagesCount = pagesCount;\\n    this.hasPageLabels = hasPageLabels;\\n    this.#updateUIState(true);\\n  }\\n\\n  setPageScale(pageScaleValue, pageScale) {\\n    this.pageScaleValue = (pageScaleValue || pageScale).toString();\\n    this.pageScale = pageScale;\\n    this.#updateUIState(false);\\n  }\\n\\n  reset() {\\n    this.#colorPicker = null;\\n    this.pageNumber = 0;\\n    this.pageLabel = null;\\n    this.hasPageLabels = false;\\n    this.pagesCount = 0;\\n    this.pageScaleValue = DEFAULT_SCALE_VALUE;\\n    this.pageScale = DEFAULT_SCALE;\\n    this.#updateUIState(true);\\n    this.updateLoadingIndicatorState();\\n\\n    \u002F\u002F Reset the Editor buttons too, since they're document specific.\\n    this.#editorModeChanged({ mode: AnnotationEditorType.DISABLE });\\n  }\\n\\n  #bindListeners(buttons) {\\n    const { eventBus } = this;\\n    const {\\n      editorHighlightColorPicker,\\n      editorHighlightButton,\\n      pageNumber,\\n      scaleSelect,\\n    } = this.#opts;\\n    const self = this;\\n\\n    \u002F\u002F The buttons within the toolbar.\\n    for (const { element, eventName, eventDetails, telemetry } of buttons) {\\n      element.addEventListener(\\\"click\\\", evt => {\\n        if (eventName !== null) {\\n          eventBus.dispatch(eventName, {\\n            source: this,\\n            ...eventDetails,\\n            \u002F\u002F evt.detail is the number of clicks.\\n            isFromKeyboard: evt.detail === 0,\\n          });\\n        }\\n        if (telemetry) {\\n          eventBus.dispatch(\\\"reporttelemetry\\\", {\\n            source: this,\\n            details: telemetry,\\n          });\\n        }\\n      });\\n    }\\n    \u002F\u002F The non-button elements within the toolbar.\\n    pageNumber.addEventListener(\\\"click\\\", function () {\\n      this.select();\\n    });\\n    pageNumber.addEventListener(\\\"change\\\", function () {\\n      eventBus.dispatch(\\\"pagenumberchanged\\\", {\\n        source: self,\\n        value: this.value,\\n      });\\n    });\\n\\n    scaleSelect.addEventListener(\\\"change\\\", function () {\\n      if (this.value === \\\"custom\\\") {\\n        return;\\n      }\\n      eventBus.dispatch(\\\"scalechanged\\\", {\\n        source: self,\\n        value: this.value,\\n      });\\n    });\\n    \u002F\u002F Here we depend on browsers dispatching the \\\"click\\\" event *after* the\\n    \u002F\u002F \\\"change\\\" event, when the \u003Cselect>-element changes.\\n    scaleSelect.addEventListener(\\\"click\\\", function ({ target }) {\\n      \u002F\u002F Remove focus when an \u003Coption>-element was *clicked*, to improve the UX\\n      \u002F\u002F for mouse users (fixes bug 1300525 and issue 4923).\\n      if (\\n        this.value === self.pageScaleValue &&\\n        target.tagName.toUpperCase() === \\\"OPTION\\\"\\n      ) {\\n        this.blur();\\n      }\\n    });\\n    \u002F\u002F Suppress context menus for some controls.\\n    scaleSelect.oncontextmenu = noContextMenu;\\n\\n    eventBus._on(\\n      \\\"annotationeditormodechanged\\\",\\n      this.#editorModeChanged.bind(this)\\n    );\\n    eventBus._on(\\\"showannotationeditorui\\\", ({ mode }) => {\\n      switch (mode) {\\n        case AnnotationEditorType.HIGHLIGHT:\\n          editorHighlightButton.click();\\n          break;\\n      }\\n    });\\n    eventBus._on(\\\"toolbardensity\\\", this.#updateToolbarDensity.bind(this));\\n\\n    if (editorHighlightColorPicker) {\\n      eventBus._on(\\\"annotationeditoruimanager\\\", ({ uiManager }) => {\\n        const cp = (this.#colorPicker = new ColorPicker({ uiManager }));\\n        uiManager.setMainHighlightColorPicker(cp);\\n        editorHighlightColorPicker.append(cp.renderMainDropdown());\\n      });\\n\\n      eventBus._on(\\\"mainhighlightcolorpickerupdatecolor\\\", ({ value }) => {\\n        this.#colorPicker?.updateColor(value);\\n      });\\n    }\\n  }\\n\\n  #editorModeChanged({ mode }) {\\n    const {\\n      editorFreeTextButton,\\n      editorFreeTextParamsToolbar,\\n      editorHighlightButton,\\n      editorHighlightParamsToolbar,\\n      editorInkButton,\\n      editorInkParamsToolbar,\\n      editorStampButton,\\n      editorStampParamsToolbar,\\n      editorSignatureButton,\\n      editorSignatureParamsToolbar,\\n    } = this.#opts;\\n\\n    toggleExpandedBtn(\\n      editorFreeTextButton,\\n      mode === AnnotationEditorType.FREETEXT,\\n      editorFreeTextParamsToolbar\\n    );\\n    toggleExpandedBtn(\\n      editorHighlightButton,\\n      mode === AnnotationEditorType.HIGHLIGHT,\\n      editorHighlightParamsToolbar\\n    );\\n    toggleExpandedBtn(\\n      editorInkButton,\\n      mode === AnnotationEditorType.INK,\\n      editorInkParamsToolbar\\n    );\\n    toggleExpandedBtn(\\n      editorStampButton,\\n      mode === AnnotationEditorType.STAMP,\\n      editorStampParamsToolbar\\n    );\\n    toggleExpandedBtn(\\n      editorSignatureButton,\\n      mode === AnnotationEditorType.SIGNATURE,\\n      editorSignatureParamsToolbar\\n    );\\n\\n    const isDisable = mode === AnnotationEditorType.DISABLE;\\n    editorFreeTextButton.disabled = isDisable;\\n    editorHighlightButton.disabled = isDisable;\\n    editorInkButton.disabled = isDisable;\\n    editorStampButton.disabled = isDisable;\\n    editorSignatureButton.disabled = isDisable;\\n  }\\n\\n  #updateUIState(resetNumPages = false) {\\n    const { pageNumber, pagesCount, pageScaleValue, pageScale } = this;\\n    const opts = this.#opts;\\n\\n    if (resetNumPages) {\\n      if (this.hasPageLabels) {\\n        opts.pageNumber.type = \\\"text\\\";\\n\\n        opts.numPages.setAttribute(\\\"data-l10n-id\\\", \\\"pdfjs-page-of-pages\\\");\\n      } else {\\n        opts.pageNumber.type = \\\"number\\\";\\n\\n        opts.numPages.setAttribute(\\\"data-l10n-id\\\", \\\"pdfjs-of-pages\\\");\\n        opts.numPages.setAttribute(\\n          \\\"data-l10n-args\\\",\\n          JSON.stringify({ pagesCount })\\n        );\\n      }\\n      opts.pageNumber.max = pagesCount;\\n    }\\n\\n    if (this.hasPageLabels) {\\n      opts.pageNumber.value = this.pageLabel;\\n\\n      opts.numPages.setAttribute(\\n        \\\"data-l10n-args\\\",\\n        JSON.stringify({ pageNumber, pagesCount })\\n      );\\n    } else {\\n      opts.pageNumber.value = pageNumber;\\n    }\\n\\n    opts.previous.disabled = pageNumber \u003C= 1;\\n    opts.next.disabled = pageNumber >= pagesCount;\\n\\n    opts.zoomOut.disabled = pageScale \u003C= MIN_SCALE;\\n    opts.zoomIn.disabled = pageScale >= MAX_SCALE;\\n\\n    let predefinedValueFound = false;\\n    for (const option of opts.scaleSelect.options) {\\n      if (option.value !== pageScaleValue) {\\n        option.selected = false;\\n        continue;\\n      }\\n      option.selected = true;\\n      predefinedValueFound = true;\\n    }\\n    if (!predefinedValueFound) {\\n      opts.customScaleOption.selected = true;\\n      opts.customScaleOption.setAttribute(\\n        \\\"data-l10n-args\\\",\\n        JSON.stringify({\\n          scale: Math.round(pageScale * 10000) \u002F 100,\\n        })\\n      );\\n    }\\n  }\\n\\n  updateLoadingIndicatorState(loading = false) {\\n    const { pageNumber } = this.#opts;\\n    pageNumber.classList.toggle(\\\"loading\\\", loading);\\n  }\\n}\\n\\nexport { Toolbar };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nconst DEFAULT_VIEW_HISTORY_CACHE_SIZE = 20;\\n\\n\u002F**\\n * View History - This is a utility for saving various view parameters for\\n *                recently opened files.\\n *\\n * The way that the view parameters are stored depends on how PDF.js is built,\\n * for 'gulp \u003Cflag>' the following cases exist:\\n *  - MOZCENTRAL        - uses sessionStorage.\\n *  - GENERIC or CHROME - uses localStorage, if it is available.\\n *\u002F\\nclass ViewHistory {\\n  constructor(fingerprint, cacheSize = DEFAULT_VIEW_HISTORY_CACHE_SIZE) {\\n    this.fingerprint = fingerprint;\\n    this.cacheSize = cacheSize;\\n\\n    this._initializedPromise = this._readFromStorage().then(databaseStr => {\\n      const database = JSON.parse(databaseStr || \\\"{}\\\");\\n      let index = -1;\\n      if (!Array.isArray(database.files)) {\\n        database.files = [];\\n      } else {\\n        while (database.files.length >= this.cacheSize) {\\n          database.files.shift();\\n        }\\n\\n        for (let i = 0, ii = database.files.length; i \u003C ii; i++) {\\n          const branch = database.files[i];\\n          if (branch.fingerprint === this.fingerprint) {\\n            index = i;\\n            break;\\n          }\\n        }\\n      }\\n      if (index === -1) {\\n        index = database.files.push({ fingerprint: this.fingerprint }) - 1;\\n      }\\n      this.file = database.files[index];\\n      this.database = database;\\n    });\\n  }\\n\\n  async _writeToStorage() {\\n    const databaseStr = JSON.stringify(this.database);\\n\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      sessionStorage.setItem(\\\"pdfjs.history\\\", databaseStr);\\n      return;\\n    }\\n    localStorage.setItem(\\\"pdfjs.history\\\", databaseStr);\\n  }\\n\\n  async _readFromStorage() {\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      return sessionStorage.getItem(\\\"pdfjs.history\\\");\\n    }\\n    return localStorage.getItem(\\\"pdfjs.history\\\");\\n  }\\n\\n  async set(name, val) {\\n    await this._initializedPromise;\\n    this.file[name] = val;\\n    return this._writeToStorage();\\n  }\\n\\n  async setMultiple(properties) {\\n    await this._initializedPromise;\\n    for (const name in properties) {\\n      this.file[name] = properties[name];\\n    }\\n    return this._writeToStorage();\\n  }\\n\\n  async get(name, defaultValue) {\\n    await this._initializedPromise;\\n    const val = this.file[name];\\n    return val !== undefined ? val : defaultValue;\\n  }\\n\\n  async getMultiple(properties) {\\n    await this._initializedPromise;\\n    const values = Object.create(null);\\n\\n    for (const name in properties) {\\n      const val = this.file[name];\\n      values[name] = val !== undefined ? val : properties[name];\\n    }\\n    return values;\\n  }\\n}\\n\\nexport { ViewHistory };\\n\",\"\u002F* Copyright 2012 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\n\u002F** @typedef {import(\\\".\u002Finterfaces.js\\\").IL10n} IL10n *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fapi.js\\\").PDFDocumentProxy} PDFDocumentProxy *\u002F\\n\u002F\u002F eslint-disable-next-line max-len\\n\u002F** @typedef {import(\\\"..\u002Fsrc\u002Fdisplay\u002Fapi.js\\\").PDFDocumentLoadingTask} PDFDocumentLoadingTask *\u002F\\n\\nimport {\\n  animationStarted,\\n  apiPageLayoutToViewerModes,\\n  apiPageModeToSidebarView,\\n  AutoPrintRegExp,\\n  CursorTool,\\n  DEFAULT_SCALE_VALUE,\\n  docStyle,\\n  getActiveOrFocusedElement,\\n  isValidRotation,\\n  isValidScrollMode,\\n  isValidSpreadMode,\\n  normalizeWheelEventDirection,\\n  parseQueryString,\\n  ProgressBar,\\n  RenderingStates,\\n  ScrollMode,\\n  SidebarView,\\n  SpreadMode,\\n  TextLayerMode,\\n} from \\\".\u002Fui_utils.js\\\";\\nimport {\\n  AnnotationEditorType,\\n  build,\\n  FeatureTest,\\n  getDocument,\\n  getFilenameFromUrl,\\n  getPdfFilenameFromUrl,\\n  GlobalWorkerOptions,\\n  InvalidPDFException,\\n  isDataScheme,\\n  isPdfFile,\\n  OutputScale,\\n  PDFWorker,\\n  ResponseException,\\n  shadow,\\n  stopEvent,\\n  TouchManager,\\n  updateUrlHash,\\n  version,\\n} from \\\"pdfjs-lib\\\";\\nimport { AppOptions, OptionKind } from \\\".\u002Fapp_options.js\\\";\\nimport { EventBus, FirefoxEventBus } from \\\".\u002Fevent_utils.js\\\";\\nimport { ExternalServices, initCom, MLManager } from \\\"web-external_services\\\";\\nimport {\\n  ImageAltTextSettings,\\n  NewAltTextManager,\\n} from \\\"web-new_alt_text_manager\\\";\\nimport { LinkTarget, PDFLinkService } from \\\".\u002Fpdf_link_service.js\\\";\\nimport { AltTextManager } from \\\"web-alt_text_manager\\\";\\nimport { AnnotationEditorParams } from \\\"web-annotation_editor_params\\\";\\nimport { CaretBrowsingMode } from \\\".\u002Fcaret_browsing.js\\\";\\nimport { DownloadManager } from \\\"web-download_manager\\\";\\nimport { EditorUndoBar } from \\\".\u002Feditor_undo_bar.js\\\";\\nimport { OverlayManager } from \\\".\u002Foverlay_manager.js\\\";\\nimport { PasswordPrompt } from \\\".\u002Fpassword_prompt.js\\\";\\nimport { PDFAttachmentViewer } from \\\"web-pdf_attachment_viewer\\\";\\nimport { PDFCursorTools } from \\\"web-pdf_cursor_tools\\\";\\nimport { PDFDocumentProperties } from \\\"web-pdf_document_properties\\\";\\nimport { PDFFindBar } from \\\"web-pdf_find_bar\\\";\\nimport { PDFFindController } from \\\".\u002Fpdf_find_controller.js\\\";\\nimport { PDFHistory } from \\\".\u002Fpdf_history.js\\\";\\nimport { PDFLayerViewer } from \\\"web-pdf_layer_viewer\\\";\\nimport { PDFOutlineViewer } from \\\"web-pdf_outline_viewer\\\";\\nimport { PDFPresentationMode } from \\\"web-pdf_presentation_mode\\\";\\nimport { PDFPrintServiceFactory } from \\\"web-print_service\\\";\\nimport { PDFRenderingQueue } from \\\".\u002Fpdf_rendering_queue.js\\\";\\nimport { PDFScriptingManager } from \\\".\u002Fpdf_scripting_manager.js\\\";\\nimport { PDFSidebar } from \\\"web-pdf_sidebar\\\";\\nimport { PDFThumbnailViewer } from \\\"web-pdf_thumbnail_viewer\\\";\\nimport { PDFViewer } from \\\".\u002Fpdf_viewer.js\\\";\\nimport { Preferences } from \\\"web-preferences\\\";\\nimport { SecondaryToolbar } from \\\"web-secondary_toolbar\\\";\\nimport { SignatureManager } from \\\"web-signature_manager\\\";\\nimport { Toolbar } from \\\"web-toolbar\\\";\\nimport { ViewHistory } from \\\".\u002Fview_history.js\\\";\\n\\nconst FORCE_PAGES_LOADED_TIMEOUT = 10000; \u002F\u002F ms\\n\\nconst ViewOnLoad = {\\n  UNKNOWN: -1,\\n  PREVIOUS: 0, \u002F\u002F Default value.\\n  INITIAL: 1,\\n};\\n\\nconst PDFViewerApplication = {\\n  initialBookmark: document.location.hash.substring(1),\\n  _initializedCapability: {\\n    ...Promise.withResolvers(),\\n    settled: false,\\n  },\\n  appConfig: null,\\n  \u002F** @type {PDFDocumentProxy} *\u002F\\n  pdfDocument: null,\\n  \u002F** @type {PDFDocumentLoadingTask} *\u002F\\n  pdfLoadingTask: null,\\n  printService: null,\\n  \u002F** @type {PDFViewer} *\u002F\\n  pdfViewer: null,\\n  \u002F** @type {PDFThumbnailViewer} *\u002F\\n  pdfThumbnailViewer: null,\\n  \u002F** @type {PDFRenderingQueue} *\u002F\\n  pdfRenderingQueue: null,\\n  \u002F** @type {PDFPresentationMode} *\u002F\\n  pdfPresentationMode: null,\\n  \u002F** @type {PDFDocumentProperties} *\u002F\\n  pdfDocumentProperties: null,\\n  \u002F** @type {PDFLinkService} *\u002F\\n  pdfLinkService: null,\\n  \u002F** @type {PDFHistory} *\u002F\\n  pdfHistory: null,\\n  \u002F** @type {PDFSidebar} *\u002F\\n  pdfSidebar: null,\\n  \u002F** @type {PDFOutlineViewer} *\u002F\\n  pdfOutlineViewer: null,\\n  \u002F** @type {PDFAttachmentViewer} *\u002F\\n  pdfAttachmentViewer: null,\\n  \u002F** @type {PDFLayerViewer} *\u002F\\n  pdfLayerViewer: null,\\n  \u002F** @type {PDFCursorTools} *\u002F\\n  pdfCursorTools: null,\\n  \u002F** @type {PDFScriptingManager} *\u002F\\n  pdfScriptingManager: null,\\n  \u002F** @type {ViewHistory} *\u002F\\n  store: null,\\n  \u002F** @type {DownloadManager} *\u002F\\n  downloadManager: null,\\n  \u002F** @type {OverlayManager} *\u002F\\n  overlayManager: null,\\n  \u002F** @type {Preferences} *\u002F\\n  preferences: new Preferences(),\\n  \u002F** @type {Toolbar} *\u002F\\n  toolbar: null,\\n  \u002F** @type {SecondaryToolbar} *\u002F\\n  secondaryToolbar: null,\\n  \u002F** @type {EventBus} *\u002F\\n  eventBus: null,\\n  \u002F** @type {IL10n} *\u002F\\n  l10n: null,\\n  \u002F** @type {AnnotationEditorParams} *\u002F\\n  annotationEditorParams: null,\\n  \u002F** @type {ImageAltTextSettings} *\u002F\\n  imageAltTextSettings: null,\\n  isInitialViewSet: false,\\n  isViewerEmbedded: window.parent !== window,\\n  url: \\\"\\\",\\n  baseUrl: \\\"\\\",\\n  mlManager: null,\\n  _downloadUrl: \\\"\\\",\\n  _eventBusAbortController: null,\\n  _windowAbortController: null,\\n  _globalAbortController: new AbortController(),\\n  documentInfo: null,\\n  metadata: null,\\n  _contentDispositionFilename: null,\\n  _contentLength: null,\\n  _saveInProgress: false,\\n  _wheelUnusedTicks: 0,\\n  _wheelUnusedFactor: 1,\\n  _touchManager: null,\\n  _touchUnusedTicks: 0,\\n  _touchUnusedFactor: 1,\\n  _PDFBug: null,\\n  _hasAnnotationEditors: false,\\n  _title: document.title,\\n  _printAnnotationStoragePromise: null,\\n  _isCtrlKeyDown: false,\\n  _caretBrowsing: null,\\n  _isScrolling: false,\\n  editorUndoBar: null,\\n\\n  \u002F\u002F Called once when the document is loaded.\\n  async initialize(appConfig) {\\n    this.appConfig = appConfig;\\n\\n    \u002F\u002F Ensure that `Preferences`, and indirectly `AppOptions`, have initialized\\n    \u002F\u002F before creating e.g. the various viewer components.\\n    try {\\n      await this.preferences.initializedPromise;\\n    } catch (ex) {\\n      console.error(\\\"initialize:\\\", ex);\\n    }\\n    if (AppOptions.get(\\\"pdfBugEnabled\\\")) {\\n      await this._parseHashParams();\\n    }\\n\\n    let mode;\\n    switch (AppOptions.get(\\\"viewerCssTheme\\\")) {\\n      case 1:\\n        mode = \\\"light\\\";\\n        break;\\n      case 2:\\n        mode = \\\"dark\\\";\\n        break;\\n    }\\n    if (mode) {\\n      docStyle.setProperty(\\\"color-scheme\\\", mode);\\n    }\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"TESTING\\\")) {\\n      if (AppOptions.get(\\\"enableFakeMLManager\\\")) {\\n        this.mlManager =\\n          MLManager.getFakeMLManager?.({\\n            enableGuessAltText: AppOptions.get(\\\"enableGuessAltText\\\"),\\n            enableAltTextModelDownload: AppOptions.get(\\n              \\\"enableAltTextModelDownload\\\"\\n            ),\\n          }) || null;\\n      }\\n    } else if (PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      if (AppOptions.get(\\\"enableAltText\\\")) {\\n        \u002F\u002F We want to load the image-to-text AI engine as soon as possible.\\n        this.mlManager = new MLManager({\\n          enableGuessAltText: AppOptions.get(\\\"enableGuessAltText\\\"),\\n          enableAltTextModelDownload: AppOptions.get(\\n            \\\"enableAltTextModelDownload\\\"\\n          ),\\n          altTextLearnMoreUrl: AppOptions.get(\\\"altTextLearnMoreUrl\\\"),\\n        });\\n      }\\n    }\\n\\n    \u002F\u002F Ensure that the `L10n`-instance has been initialized before creating\\n    \u002F\u002F e.g. the various viewer components.\\n    this.l10n = await this.externalServices.createL10n();\\n    document.getElementsByTagName(\\\"html\\\")[0].dir = this.l10n.getDirection();\\n    \u002F\u002F Connect Fluent, when necessary, and translate what we already have.\\n    if (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      this.l10n.translate(appConfig.appContainer || document.documentElement);\\n    }\\n\\n    if (\\n      this.isViewerEmbedded &&\\n      AppOptions.get(\\\"externalLinkTarget\\\") === LinkTarget.NONE\\n    ) {\\n      \u002F\u002F Prevent external links from \\\"replacing\\\" the viewer,\\n      \u002F\u002F when it's embedded in e.g. an \u003Ciframe> or an \u003Cobject>.\\n      AppOptions.set(\\\"externalLinkTarget\\\", LinkTarget.TOP);\\n    }\\n    await this._initializeViewerComponents();\\n\\n    \u002F\u002F Bind the various event handlers *after* the viewer has been\\n    \u002F\u002F initialized, to prevent errors if an event arrives too soon.\\n    this.bindEvents();\\n    this.bindWindowEvents();\\n\\n    this._initializedCapability.settled = true;\\n    this._initializedCapability.resolve();\\n  },\\n\\n  \u002F**\\n   * Potentially parse special debugging flags in the hash section of the URL.\\n   * @private\\n   *\u002F\\n  async _parseHashParams() {\\n    const hash = document.location.hash.substring(1);\\n    if (!hash) {\\n      return;\\n    }\\n    const { mainContainer, viewerContainer } = this.appConfig,\\n      params = parseQueryString(hash);\\n\\n    const loadPDFBug = async () => {\\n      if (this._PDFBug) {\\n        return;\\n      }\\n      const { PDFBug } =\\n        typeof PDFJSDev === \\\"undefined\\\"\\n          ? await import(AppOptions.get(\\\"debuggerSrc\\\")) \u002F\u002F eslint-disable-line no-unsanitized\u002Fmethod\\n          : await __raw_import__(AppOptions.get(\\\"debuggerSrc\\\"));\\n\\n      this._PDFBug = PDFBug;\\n    };\\n\\n    \u002F\u002F Parameters that need to be handled manually.\\n    if (params.get(\\\"disableworker\\\") === \\\"true\\\") {\\n      try {\\n        GlobalWorkerOptions.workerSrc ||= AppOptions.get(\\\"workerSrc\\\");\\n\\n        typeof PDFJSDev === \\\"undefined\\\" \u002F\u002F eslint-disable-line no-unused-expressions\\n          ? await import(\\\"pdfjs\u002Fpdf.worker.js\\\")\\n          : await __raw_import__(PDFWorker.workerSrc);\\n\\n        \u002F\u002F Ensure that the \\\"fake\\\" worker won't be ignored.\\n        AppOptions.set(\\\"workerPort\\\", null);\\n      } catch (ex) {\\n        console.error(\\\"_parseHashParams:\\\", ex);\\n      }\\n    }\\n    if (params.has(\\\"textlayer\\\")) {\\n      switch (params.get(\\\"textlayer\\\")) {\\n        case \\\"off\\\":\\n          AppOptions.set(\\\"textLayerMode\\\", TextLayerMode.DISABLE);\\n          break;\\n        case \\\"visible\\\":\\n        case \\\"shadow\\\":\\n        case \\\"hover\\\":\\n          viewerContainer.classList.add(`textLayer-${params.get(\\\"textlayer\\\")}`);\\n          try {\\n            await loadPDFBug();\\n            this._PDFBug.loadCSS();\\n          } catch (ex) {\\n            console.error(\\\"_parseHashParams:\\\", ex);\\n          }\\n          break;\\n      }\\n    }\\n    if (params.has(\\\"pdfbug\\\")) {\\n      const enabled = params.get(\\\"pdfbug\\\").split(\\\",\\\");\\n      try {\\n        await loadPDFBug();\\n        this._PDFBug.init(mainContainer, enabled);\\n      } catch (ex) {\\n        console.error(\\\"_parseHashParams:\\\", ex);\\n      }\\n\\n      const debugOpts = { pdfBug: true, fontExtraProperties: true };\\n      if (globalThis.StepperManager?.enabled) {\\n        debugOpts.minDurationToUpdateCanvas = 0;\\n      }\\n      AppOptions.setAll(debugOpts);\\n    }\\n    \u002F\u002F It is not possible to change locale for the (various) extension builds.\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) &&\\n      params.has(\\\"locale\\\")\\n    ) {\\n      AppOptions.set(\\\"localeProperties\\\", { lang: params.get(\\\"locale\\\") });\\n    }\\n\\n    \u002F\u002F Parameters that can be handled automatically.\\n    const opts = {\\n      disableAutoFetch: x => x === \\\"true\\\",\\n      disableFontFace: x => x === \\\"true\\\",\\n      disableHistory: x => x === \\\"true\\\",\\n      disableRange: x => x === \\\"true\\\",\\n      disableStream: x => x === \\\"true\\\",\\n      verbosity: x => x | 0,\\n    };\\n\\n    \u002F\u002F Set some specific preferences for tests.\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"TESTING\\\")) {\\n      Object.assign(opts, {\\n        capCanvasAreaFactor: x => parseInt(x),\\n        docBaseUrl: x => x,\\n        enableAltText: x => x === \\\"true\\\",\\n        enableAutoLinking: x => x === \\\"true\\\",\\n        enableFakeMLManager: x => x === \\\"true\\\",\\n        enableGuessAltText: x => x === \\\"true\\\",\\n        enableUpdatedAddImage: x => x === \\\"true\\\",\\n        highlightEditorColors: x => x,\\n        maxCanvasPixels: x => parseInt(x),\\n        spreadModeOnLoad: x => parseInt(x),\\n        supportsCaretBrowsingMode: x => x === \\\"true\\\",\\n        viewerCssTheme: x => parseInt(x),\\n      });\\n    }\\n\\n    for (const name in opts) {\\n      const check = opts[name],\\n        key = name.toLowerCase();\\n\\n      if (params.has(key)) {\\n        AppOptions.set(name, check(params.get(key)));\\n      }\\n    }\\n  },\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  async _initializeViewerComponents() {\\n    const { appConfig, externalServices, l10n, mlManager } = this;\\n    const abortSignal = this._globalAbortController.signal;\\n\\n    const eventBus =\\n      typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")\\n        ? new FirefoxEventBus(\\n            AppOptions.get(\\\"allowedGlobalEvents\\\"),\\n            externalServices,\\n            AppOptions.get(\\\"isInAutomation\\\")\\n          )\\n        : new EventBus();\\n    this.eventBus = AppOptions.eventBus = eventBus;\\n    mlManager?.setEventBus(eventBus, abortSignal);\\n\\n    const overlayManager = (this.overlayManager = new OverlayManager());\\n\\n    const renderingQueue = (this.pdfRenderingQueue = new PDFRenderingQueue());\\n    renderingQueue.onIdle = this._cleanup.bind(this);\\n\\n    const linkService = (this.pdfLinkService = new PDFLinkService({\\n      eventBus,\\n      externalLinkTarget: AppOptions.get(\\\"externalLinkTarget\\\"),\\n      externalLinkRel: AppOptions.get(\\\"externalLinkRel\\\"),\\n      ignoreDestinationZoom: AppOptions.get(\\\"ignoreDestinationZoom\\\"),\\n    }));\\n\\n    const downloadManager = (this.downloadManager = new DownloadManager());\\n\\n    const findController = (this.findController = new PDFFindController({\\n      linkService,\\n      eventBus,\\n      updateMatchesCountOnProgress:\\n        typeof PDFJSDev === \\\"undefined\\\"\\n          ? !window.isGECKOVIEW\\n          : !PDFJSDev.test(\\\"GECKOVIEW\\\"),\\n    }));\\n\\n    const pdfScriptingManager = (this.pdfScriptingManager =\\n      new PDFScriptingManager({\\n        eventBus,\\n        externalServices,\\n        docProperties: this._scriptingDocProperties.bind(this),\\n      }));\\n\\n    const container = appConfig.mainContainer,\\n      viewer = appConfig.viewerContainer;\\n    const annotationEditorMode = AppOptions.get(\\\"annotationEditorMode\\\");\\n    const pageColors =\\n      AppOptions.get(\\\"forcePageColors\\\") ||\\n      window.matchMedia(\\\"(forced-colors: active)\\\").matches\\n        ? {\\n            background: AppOptions.get(\\\"pageColorsBackground\\\"),\\n            foreground: AppOptions.get(\\\"pageColorsForeground\\\"),\\n          }\\n        : null;\\n\\n    let altTextManager;\\n    if (AppOptions.get(\\\"enableUpdatedAddImage\\\")) {\\n      altTextManager = appConfig.newAltTextDialog\\n        ? new NewAltTextManager(\\n            appConfig.newAltTextDialog,\\n            overlayManager,\\n            eventBus\\n          )\\n        : null;\\n    } else {\\n      altTextManager = appConfig.altTextDialog\\n        ? new AltTextManager(\\n            appConfig.altTextDialog,\\n            container,\\n            overlayManager,\\n            eventBus\\n          )\\n        : null;\\n    }\\n\\n    if (appConfig.editorUndoBar) {\\n      this.editorUndoBar = new EditorUndoBar(appConfig.editorUndoBar, eventBus);\\n    }\\n\\n    const signatureManager =\\n      AppOptions.get(\\\"enableSignatureEditor\\\") && appConfig.addSignatureDialog\\n        ? new SignatureManager(\\n            appConfig.addSignatureDialog,\\n            appConfig.editSignatureDialog,\\n            appConfig.annotationEditorParams?.editorSignatureAddSignature ||\\n              null,\\n            overlayManager,\\n            l10n,\\n            externalServices.createSignatureStorage(eventBus, abortSignal),\\n            eventBus\\n          )\\n        : null;\\n\\n    const enableHWA = AppOptions.get(\\\"enableHWA\\\"),\\n      maxCanvasPixels = AppOptions.get(\\\"maxCanvasPixels\\\"),\\n      maxCanvasDim = AppOptions.get(\\\"maxCanvasDim\\\"),\\n      capCanvasAreaFactor = AppOptions.get(\\\"capCanvasAreaFactor\\\");\\n    const pdfViewer = (this.pdfViewer = new PDFViewer({\\n      container,\\n      viewer,\\n      eventBus,\\n      renderingQueue,\\n      linkService,\\n      downloadManager,\\n      altTextManager,\\n      signatureManager,\\n      editorUndoBar: this.editorUndoBar,\\n      findController,\\n      scriptingManager:\\n        AppOptions.get(\\\"enableScripting\\\") && pdfScriptingManager,\\n      l10n,\\n      textLayerMode: AppOptions.get(\\\"textLayerMode\\\"),\\n      annotationMode: AppOptions.get(\\\"annotationMode\\\"),\\n      annotationEditorMode,\\n      annotationEditorHighlightColors: AppOptions.get(\\\"highlightEditorColors\\\"),\\n      enableHighlightFloatingButton: AppOptions.get(\\n        \\\"enableHighlightFloatingButton\\\"\\n      ),\\n      enableUpdatedAddImage: AppOptions.get(\\\"enableUpdatedAddImage\\\"),\\n      enableNewAltTextWhenAddingImage: AppOptions.get(\\n        \\\"enableNewAltTextWhenAddingImage\\\"\\n      ),\\n      imageResourcesPath: AppOptions.get(\\\"imageResourcesPath\\\"),\\n      enablePrintAutoRotate: AppOptions.get(\\\"enablePrintAutoRotate\\\"),\\n      maxCanvasPixels,\\n      maxCanvasDim,\\n      capCanvasAreaFactor,\\n      enableDetailCanvas: AppOptions.get(\\\"enableDetailCanvas\\\"),\\n      enablePermissions: AppOptions.get(\\\"enablePermissions\\\"),\\n      pageColors,\\n      mlManager,\\n      abortSignal,\\n      enableHWA,\\n      supportsPinchToZoom: this.supportsPinchToZoom,\\n      enableAutoLinking: AppOptions.get(\\\"enableAutoLinking\\\"),\\n      minDurationToUpdateCanvas: AppOptions.get(\\\"minDurationToUpdateCanvas\\\"),\\n    }));\\n\\n    renderingQueue.setViewer(pdfViewer);\\n    linkService.setViewer(pdfViewer);\\n    pdfScriptingManager.setViewer(pdfViewer);\\n\\n    if (appConfig.sidebar?.thumbnailView) {\\n      this.pdfThumbnailViewer = new PDFThumbnailViewer({\\n        container: appConfig.sidebar.thumbnailView,\\n        eventBus,\\n        renderingQueue,\\n        linkService,\\n        maxCanvasPixels,\\n        maxCanvasDim,\\n        pageColors,\\n        abortSignal,\\n        enableHWA,\\n      });\\n      renderingQueue.setThumbnailViewer(this.pdfThumbnailViewer);\\n    }\\n\\n    \u002F\u002F The browsing history is only enabled when the viewer is standalone,\\n    \u002F\u002F i.e. not when it is embedded in a web page.\\n    if (!this.isViewerEmbedded && !AppOptions.get(\\\"disableHistory\\\")) {\\n      this.pdfHistory = new PDFHistory({\\n        linkService,\\n        eventBus,\\n      });\\n      linkService.setHistory(this.pdfHistory);\\n    }\\n\\n    if (!this.supportsIntegratedFind && appConfig.findBar) {\\n      this.findBar = new PDFFindBar(\\n        appConfig.findBar,\\n        appConfig.principalContainer,\\n        eventBus\\n      );\\n    }\\n\\n    if (appConfig.annotationEditorParams) {\\n      if (annotationEditorMode !== AnnotationEditorType.DISABLE) {\\n        const editorSignatureButton = appConfig.toolbar?.editorSignatureButton;\\n        if (editorSignatureButton && AppOptions.get(\\\"enableSignatureEditor\\\")) {\\n          editorSignatureButton.parentElement.hidden = false;\\n        }\\n        this.annotationEditorParams = new AnnotationEditorParams(\\n          appConfig.annotationEditorParams,\\n          eventBus\\n        );\\n      } else {\\n        for (const id of [\\\"editorModeButtons\\\", \\\"editorModeSeparator\\\"]) {\\n          document.getElementById(id)?.classList.add(\\\"hidden\\\");\\n        }\\n      }\\n    }\\n\\n    if (mlManager && appConfig.secondaryToolbar?.imageAltTextSettingsButton) {\\n      this.imageAltTextSettings = new ImageAltTextSettings(\\n        appConfig.altTextSettingsDialog,\\n        overlayManager,\\n        eventBus,\\n        mlManager\\n      );\\n    }\\n\\n    if (appConfig.documentProperties) {\\n      this.pdfDocumentProperties = new PDFDocumentProperties(\\n        appConfig.documentProperties,\\n        overlayManager,\\n        eventBus,\\n        l10n,\\n        \u002F* fileNameLookup = *\u002F () => this._docFilename,\\n        \u002F* titleLookup = *\u002F () => this._docTitle\\n      );\\n    }\\n\\n    \u002F\u002F NOTE: The cursor-tools are unlikely to be helpful\u002Fuseful in GeckoView,\\n    \u002F\u002F in particular the `HandTool` which basically simulates touch scrolling.\\n    if (appConfig.secondaryToolbar?.cursorHandToolButton) {\\n      this.pdfCursorTools = new PDFCursorTools({\\n        container,\\n        eventBus,\\n        cursorToolOnLoad: AppOptions.get(\\\"cursorToolOnLoad\\\"),\\n      });\\n    }\\n\\n    if (appConfig.toolbar) {\\n      if (\\n        typeof PDFJSDev === \\\"undefined\\\"\\n          ? window.isGECKOVIEW\\n          : PDFJSDev.test(\\\"GECKOVIEW\\\")\\n      ) {\\n        const nimbusData = JSON.parse(\\n          AppOptions.get(\\\"nimbusDataStr\\\") || \\\"null\\\"\\n        );\\n        this.toolbar = new Toolbar(appConfig.toolbar, eventBus, nimbusData);\\n      } else {\\n        this.toolbar = new Toolbar(\\n          appConfig.toolbar,\\n          eventBus,\\n          AppOptions.get(\\\"toolbarDensity\\\")\\n        );\\n      }\\n    }\\n\\n    if (appConfig.secondaryToolbar) {\\n      if (AppOptions.get(\\\"enableAltText\\\")) {\\n        appConfig.secondaryToolbar.imageAltTextSettingsButton?.classList.remove(\\n          \\\"hidden\\\"\\n        );\\n        appConfig.secondaryToolbar.imageAltTextSettingsSeparator?.classList.remove(\\n          \\\"hidden\\\"\\n        );\\n      }\\n\\n      this.secondaryToolbar = new SecondaryToolbar(\\n        appConfig.secondaryToolbar,\\n        eventBus\\n      );\\n    }\\n\\n    if (\\n      this.supportsFullscreen &&\\n      appConfig.secondaryToolbar?.presentationModeButton\\n    ) {\\n      this.pdfPresentationMode = new PDFPresentationMode({\\n        container,\\n        pdfViewer,\\n        eventBus,\\n      });\\n    }\\n\\n    if (appConfig.passwordOverlay) {\\n      this.passwordPrompt = new PasswordPrompt(\\n        appConfig.passwordOverlay,\\n        overlayManager,\\n        this.isViewerEmbedded\\n      );\\n    }\\n\\n    if (appConfig.sidebar?.outlineView) {\\n      this.pdfOutlineViewer = new PDFOutlineViewer({\\n        container: appConfig.sidebar.outlineView,\\n        eventBus,\\n        l10n,\\n        linkService,\\n        downloadManager,\\n      });\\n    }\\n\\n    if (appConfig.sidebar?.attachmentsView) {\\n      this.pdfAttachmentViewer = new PDFAttachmentViewer({\\n        container: appConfig.sidebar.attachmentsView,\\n        eventBus,\\n        l10n,\\n        downloadManager,\\n      });\\n    }\\n\\n    if (appConfig.sidebar?.layersView) {\\n      this.pdfLayerViewer = new PDFLayerViewer({\\n        container: appConfig.sidebar.layersView,\\n        eventBus,\\n        l10n,\\n      });\\n    }\\n\\n    if (appConfig.sidebar) {\\n      this.pdfSidebar = new PDFSidebar({\\n        elements: appConfig.sidebar,\\n        eventBus,\\n        l10n,\\n      });\\n      this.pdfSidebar.onToggled = this.forceRendering.bind(this);\\n      this.pdfSidebar.onUpdateThumbnails = () => {\\n        \u002F\u002F Use the rendered pages to set the corresponding thumbnail images.\\n        for (const pageView of pdfViewer.getCachedPageViews()) {\\n          if (pageView.renderingState === RenderingStates.FINISHED) {\\n            this.pdfThumbnailViewer\\n              .getThumbnail(pageView.id - 1)\\n              ?.setImage(pageView);\\n          }\\n        }\\n        this.pdfThumbnailViewer.scrollThumbnailIntoView(\\n          pdfViewer.currentPageNumber\\n        );\\n      };\\n    }\\n  },\\n\\n  async run(config) {\\n    await this.initialize(config);\\n\\n    const { appConfig, eventBus } = this;\\n    let file;\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      const queryString = document.location.search.substring(1);\\n      const params = parseQueryString(queryString);\\n      file = params.get(\\\"file\\\") ?? AppOptions.get(\\\"defaultUrl\\\");\\n      validateFileURL(file);\\n    } else if (PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      file = window.location.href;\\n    } else if (PDFJSDev.test(\\\"CHROME\\\")) {\\n      file = AppOptions.get(\\\"defaultUrl\\\");\\n    }\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      const fileInput = (this._openFileInput = document.createElement(\\\"input\\\"));\\n      fileInput.id = \\\"fileInput\\\";\\n      fileInput.hidden = true;\\n      fileInput.type = \\\"file\\\";\\n      fileInput.value = null;\\n      document.body.append(fileInput);\\n\\n      fileInput.addEventListener(\\\"change\\\", function (evt) {\\n        const { files } = evt.target;\\n        if (!files || files.length === 0) {\\n          return;\\n        }\\n        eventBus.dispatch(\\\"fileinputchange\\\", {\\n          source: this,\\n          fileInput: evt.target,\\n        });\\n      });\\n\\n      \u002F\u002F Enable dragging-and-dropping a new PDF file onto the viewerContainer.\\n      appConfig.mainContainer.addEventListener(\\\"dragover\\\", function (evt) {\\n        for (const item of evt.dataTransfer.items) {\\n          if (item.type === \\\"application\u002Fpdf\\\") {\\n            evt.dataTransfer.dropEffect =\\n              evt.dataTransfer.effectAllowed === \\\"copy\\\" ? \\\"copy\\\" : \\\"move\\\";\\n            stopEvent(evt);\\n            return;\\n          }\\n        }\\n      });\\n      appConfig.mainContainer.addEventListener(\\\"drop\\\", function (evt) {\\n        if (evt.dataTransfer.files?.[0].type !== \\\"application\u002Fpdf\\\") {\\n          return;\\n        }\\n        stopEvent(evt);\\n        eventBus.dispatch(\\\"fileinputchange\\\", {\\n          source: this,\\n          fileInput: evt.dataTransfer,\\n        });\\n      });\\n    }\\n\\n    if (!AppOptions.get(\\\"supportsDocumentFonts\\\")) {\\n      AppOptions.set(\\\"disableFontFace\\\", true);\\n      this.l10n.get(\\\"pdfjs-web-fonts-disabled\\\").then(msg => {\\n        console.warn(msg);\\n      });\\n    }\\n\\n    if (!this.supportsPrinting) {\\n      appConfig.toolbar?.print?.classList.add(\\\"hidden\\\");\\n      appConfig.secondaryToolbar?.printButton.classList.add(\\\"hidden\\\");\\n    }\\n\\n    if (!this.supportsFullscreen) {\\n      appConfig.secondaryToolbar?.presentationModeButton.classList.add(\\n        \\\"hidden\\\"\\n      );\\n    }\\n\\n    if (this.supportsIntegratedFind) {\\n      appConfig.findBar?.toggleButton?.classList.add(\\\"hidden\\\");\\n    }\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      if (file) {\\n        this.open({ url: file });\\n      } else {\\n        this._hideViewBookmark();\\n      }\\n    } else if (PDFJSDev.test(\\\"MOZCENTRAL || CHROME\\\")) {\\n      this.setTitleUsingUrl(file, \u002F* downloadUrl = *\u002F file);\\n\\n      this.externalServices.initPassiveLoading();\\n    } else {\\n      throw new Error(\\\"Not implemented: run\\\");\\n    }\\n  },\\n\\n  get externalServices() {\\n    return shadow(this, \\\"externalServices\\\", new ExternalServices());\\n  },\\n\\n  get initialized() {\\n    return this._initializedCapability.settled;\\n  },\\n\\n  get initializedPromise() {\\n    return this._initializedCapability.promise;\\n  },\\n\\n  updateZoom(steps, scaleFactor, origin) {\\n    if (this.pdfViewer.isInPresentationMode) {\\n      return;\\n    }\\n    this.pdfViewer.updateScale({\\n      drawingDelay: AppOptions.get(\\\"defaultZoomDelay\\\"),\\n      steps,\\n      scaleFactor,\\n      origin,\\n    });\\n  },\\n\\n  zoomIn() {\\n    this.updateZoom(1);\\n  },\\n\\n  zoomOut() {\\n    this.updateZoom(-1);\\n  },\\n\\n  zoomReset() {\\n    if (this.pdfViewer.isInPresentationMode) {\\n      return;\\n    }\\n    this.pdfViewer.currentScaleValue = DEFAULT_SCALE_VALUE;\\n  },\\n\\n  touchPinchCallback(origin, prevDistance, distance) {\\n    if (this.supportsPinchToZoom) {\\n      const newScaleFactor = this._accumulateFactor(\\n        this.pdfViewer.currentScale,\\n        distance \u002F prevDistance,\\n        \\\"_touchUnusedFactor\\\"\\n      );\\n      this.updateZoom(null, newScaleFactor, origin);\\n    } else {\\n      const PIXELS_PER_LINE_SCALE = 30;\\n      const ticks = this._accumulateTicks(\\n        (distance - prevDistance) \u002F PIXELS_PER_LINE_SCALE,\\n        \\\"_touchUnusedTicks\\\"\\n      );\\n      this.updateZoom(ticks, null, origin);\\n    }\\n  },\\n\\n  touchPinchEndCallback() {\\n    this._touchUnusedTicks = 0;\\n    this._touchUnusedFactor = 1;\\n  },\\n\\n  get pagesCount() {\\n    return this.pdfDocument ? this.pdfDocument.numPages : 0;\\n  },\\n\\n  get page() {\\n    return this.pdfViewer.currentPageNumber;\\n  },\\n\\n  set page(val) {\\n    this.pdfViewer.currentPageNumber = val;\\n  },\\n\\n  get supportsPrinting() {\\n    return shadow(\\n      this,\\n      \\\"supportsPrinting\\\",\\n      AppOptions.get(\\\"supportsPrinting\\\") &&\\n        PDFPrintServiceFactory.supportsPrinting\\n    );\\n  },\\n\\n  get supportsFullscreen() {\\n    return shadow(this, \\\"supportsFullscreen\\\", document.fullscreenEnabled);\\n  },\\n\\n  get supportsPinchToZoom() {\\n    return shadow(\\n      this,\\n      \\\"supportsPinchToZoom\\\",\\n      AppOptions.get(\\\"supportsPinchToZoom\\\")\\n    );\\n  },\\n\\n  get supportsIntegratedFind() {\\n    return shadow(\\n      this,\\n      \\\"supportsIntegratedFind\\\",\\n      AppOptions.get(\\\"supportsIntegratedFind\\\")\\n    );\\n  },\\n\\n  get loadingBar() {\\n    const barElement = document.getElementById(\\\"loadingBar\\\");\\n    const bar = barElement ? new ProgressBar(barElement) : null;\\n    return shadow(this, \\\"loadingBar\\\", bar);\\n  },\\n\\n  get supportsMouseWheelZoomCtrlKey() {\\n    return shadow(\\n      this,\\n      \\\"supportsMouseWheelZoomCtrlKey\\\",\\n      AppOptions.get(\\\"supportsMouseWheelZoomCtrlKey\\\")\\n    );\\n  },\\n\\n  get supportsMouseWheelZoomMetaKey() {\\n    return shadow(\\n      this,\\n      \\\"supportsMouseWheelZoomMetaKey\\\",\\n      AppOptions.get(\\\"supportsMouseWheelZoomMetaKey\\\")\\n    );\\n  },\\n\\n  get supportsCaretBrowsingMode() {\\n    return AppOptions.get(\\\"supportsCaretBrowsingMode\\\");\\n  },\\n\\n  moveCaret(isUp, select) {\\n    this._caretBrowsing ||= new CaretBrowsingMode(\\n      this._globalAbortController.signal,\\n      this.appConfig.mainContainer,\\n      this.appConfig.viewerContainer,\\n      this.appConfig.toolbar?.container\\n    );\\n    this._caretBrowsing.moveCaret(isUp, select);\\n  },\\n\\n  setTitleUsingUrl(url = \\\"\\\", downloadUrl = null) {\\n    this.url = url;\\n    this.baseUrl =\\n      typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")\\n        ? updateUrlHash(url, \\\"\\\", \u002F* allowRel = *\u002F true)\\n        : updateUrlHash(url, \\\"\\\");\\n    if (downloadUrl) {\\n      this._downloadUrl =\\n        \u002F\u002F eslint-disable-next-line no-nested-ternary\\n        downloadUrl === url\\n          ? this.baseUrl\\n          : typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")\\n            ? updateUrlHash(downloadUrl, \\\"\\\", \u002F* allowRel = *\u002F true)\\n            : updateUrlHash(downloadUrl, \\\"\\\");\\n    }\\n    if (isDataScheme(url)) {\\n      this._hideViewBookmark();\\n    } else if (\\n      typeof PDFJSDev !== \\\"undefined\\\" &&\\n      PDFJSDev.test(\\\"MOZCENTRAL || CHROME\\\")\\n    ) {\\n      AppOptions.set(\\\"docBaseUrl\\\", this.baseUrl);\\n    }\\n\\n    let title = getPdfFilenameFromUrl(url, \\\"\\\");\\n    if (!title) {\\n      try {\\n        title = decodeURIComponent(getFilenameFromUrl(url));\\n      } catch {\\n        \u002F\u002F decodeURIComponent may throw URIError.\\n      }\\n    }\\n    this.setTitle(title || url); \u002F\u002F Always fallback to the raw URL.\\n  },\\n\\n  setTitle(title = this._title) {\\n    this._title = title;\\n\\n    if (this.isViewerEmbedded) {\\n      \u002F\u002F Embedded PDF viewers should not be changing their parent page's title.\\n      return;\\n    }\\n    const editorIndicator =\\n      this._hasAnnotationEditors && !this.pdfRenderingQueue.printing;\\n    document.title = `${editorIndicator ? \\\"* \\\" : \\\"\\\"}${title}`;\\n  },\\n\\n  get _docFilename() {\\n    \u002F\u002F Use `this.url` instead of `this.baseUrl` to perform filename detection\\n    \u002F\u002F based on the reference fragment as ultimate fallback if needed.\\n    return this._contentDispositionFilename || getPdfFilenameFromUrl(this.url);\\n  },\\n\\n  get _docTitle() {\\n    const { documentInfo, metadata } = this;\\n\\n    const title = metadata?.get(\\\"dc:title\\\");\\n    if (title) {\\n      \u002F\u002F Ghostscript can produce invalid 'dc:title' Metadata entries:\\n      \u002F\u002F  - The title may be \\\"Untitled\\\" (fixes bug 1031612).\\n      \u002F\u002F  - The title may contain incorrectly encoded characters, which thus\\n      \u002F\u002F    looks broken, hence we ignore the Metadata entry when it contains\\n      \u002F\u002F    characters from the Specials Unicode block (fixes bug 1605526).\\n      if (title !== \\\"Untitled\\\" && !\u002F[\\\\uFFF0-\\\\uFFFF]\u002Fg.test(title)) {\\n        return title;\\n      }\\n    }\\n    return documentInfo.Title;\\n  },\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _hideViewBookmark() {\\n    const { secondaryToolbar } = this.appConfig;\\n    \u002F\u002F URL does not reflect proper document location - hiding some buttons.\\n    secondaryToolbar?.viewBookmarkButton.classList.add(\\\"hidden\\\");\\n\\n    \u002F\u002F Avoid displaying multiple consecutive separators in the secondaryToolbar.\\n    if (secondaryToolbar?.presentationModeButton.classList.contains(\\\"hidden\\\")) {\\n      document.getElementById(\\\"viewBookmarkSeparator\\\")?.classList.add(\\\"hidden\\\");\\n    }\\n  },\\n\\n  \u002F**\\n   * Closes opened PDF document.\\n   * @returns {Promise} - Returns the promise, which is resolved when all\\n   *                      destruction is completed.\\n   *\u002F\\n  async close() {\\n    this._unblockDocumentLoadEvent();\\n    this._hideViewBookmark();\\n\\n    if (!this.pdfLoadingTask) {\\n      return;\\n    }\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" ||\\n        PDFJSDev.test(\\\"GENERIC && !TESTING\\\")) &&\\n      this.pdfDocument?.annotationStorage.size > 0 &&\\n      this._annotationStorageModified\\n    ) {\\n      try {\\n        \u002F\u002F Trigger saving, to prevent data loss in forms; see issue 12257.\\n        await this.save();\\n      } catch {\\n        \u002F\u002F Ignoring errors, to ensure that document closing won't break.\\n      }\\n    }\\n    const promises = [];\\n\\n    promises.push(this.pdfLoadingTask.destroy());\\n    this.pdfLoadingTask = null;\\n\\n    if (this.pdfDocument) {\\n      this.pdfDocument = null;\\n\\n      this.pdfThumbnailViewer?.setDocument(null);\\n      this.pdfViewer.setDocument(null);\\n      this.pdfLinkService.setDocument(null);\\n      this.pdfDocumentProperties?.setDocument(null);\\n    }\\n    this.pdfLinkService.externalLinkEnabled = true;\\n    this.store = null;\\n    this.isInitialViewSet = false;\\n    this.url = \\\"\\\";\\n    this.baseUrl = \\\"\\\";\\n    this._downloadUrl = \\\"\\\";\\n    this.documentInfo = null;\\n    this.metadata = null;\\n    this._contentDispositionFilename = null;\\n    this._contentLength = null;\\n    this._saveInProgress = false;\\n    this._hasAnnotationEditors = false;\\n\\n    promises.push(\\n      this.pdfScriptingManager.destroyPromise,\\n      this.passwordPrompt.close()\\n    );\\n\\n    this.setTitle();\\n    this.pdfSidebar?.reset();\\n    this.pdfOutlineViewer?.reset();\\n    this.pdfAttachmentViewer?.reset();\\n    this.pdfLayerViewer?.reset();\\n\\n    this.pdfHistory?.reset();\\n    this.findBar?.reset();\\n    this.toolbar?.reset();\\n    this.secondaryToolbar?.reset();\\n    this._PDFBug?.cleanup();\\n\\n    await Promise.all(promises);\\n  },\\n\\n  \u002F**\\n   * Opens a new PDF document.\\n   * @param {Object} args - Accepts any\u002Fall of the properties from\\n   *   {@link DocumentInitParameters}, and also a `originalUrl` string.\\n   * @returns {Promise} - Promise that is resolved when the document is opened.\\n   *\u002F\\n  async open(args) {\\n    if (this.pdfLoadingTask) {\\n      \u002F\u002F We need to destroy already opened document.\\n      await this.close();\\n    }\\n    \u002F\u002F Set the necessary global worker parameters, using the available options.\\n    const workerParams = AppOptions.getAll(OptionKind.WORKER);\\n    Object.assign(GlobalWorkerOptions, workerParams);\\n\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      if (args.data && isPdfFile(args.filename)) {\\n        this._contentDispositionFilename = args.filename;\\n      }\\n    } else if (args.url) {\\n      \u002F\u002F The Firefox built-in viewer always calls `setTitleUsingUrl`, before\\n      \u002F\u002F `initPassiveLoading`, and it never provides an `originalUrl` here.\\n      this.setTitleUsingUrl(\\n        args.originalUrl || args.url,\\n        \u002F* downloadUrl = *\u002F args.url\\n      );\\n    }\\n\\n    \u002F\u002F Set the necessary API parameters, using all the available options.\\n    const apiParams = AppOptions.getAll(OptionKind.API);\\n    const loadingTask = getDocument({\\n      ...apiParams,\\n      ...args,\\n    });\\n    this.pdfLoadingTask = loadingTask;\\n\\n    loadingTask.onPassword = (updateCallback, reason) => {\\n      if (this.isViewerEmbedded) {\\n        \u002F\u002F The load event can't be triggered until the password is entered, so\\n        \u002F\u002F if the viewer is in an iframe and its visibility depends on the\\n        \u002F\u002F onload callback then the viewer never shows (bug 1801341).\\n        this._unblockDocumentLoadEvent();\\n      }\\n\\n      this.pdfLinkService.externalLinkEnabled = false;\\n      this.passwordPrompt.setUpdateCallback(updateCallback, reason);\\n      this.passwordPrompt.open();\\n    };\\n\\n    loadingTask.onProgress = ({ loaded, total }) => {\\n      this.progress(loaded \u002F total);\\n    };\\n\\n    return loadingTask.promise.then(\\n      pdfDocument => {\\n        this.load(pdfDocument);\\n      },\\n      reason => {\\n        if (loadingTask !== this.pdfLoadingTask) {\\n          return undefined; \u002F\u002F Ignore errors for previously opened PDF files.\\n        }\\n\\n        let key = \\\"pdfjs-loading-error\\\";\\n        if (reason instanceof InvalidPDFException) {\\n          key = \\\"pdfjs-invalid-file-error\\\";\\n        } else if (reason instanceof ResponseException) {\\n          key = reason.missing\\n            ? \\\"pdfjs-missing-file-error\\\"\\n            : \\\"pdfjs-unexpected-response-error\\\";\\n        }\\n        return this._documentError(key, { message: reason.message }).then(\\n          () => {\\n            throw reason;\\n          }\\n        );\\n      }\\n    );\\n  },\\n\\n  async download() {\\n    let data;\\n    try {\\n      data = await (this.pdfDocument\\n        ? this.pdfDocument.getData()\\n        : this.pdfLoadingTask.getData());\\n    } catch {\\n      \u002F\u002F When the PDF document isn't ready, simply download using the URL.\\n    }\\n    this.downloadManager.download(data, this._downloadUrl, this._docFilename);\\n  },\\n\\n  async save() {\\n    if (this._saveInProgress) {\\n      return;\\n    }\\n    this._saveInProgress = true;\\n    await this.pdfScriptingManager.dispatchWillSave();\\n\\n    try {\\n      const data = await this.pdfDocument.saveDocument();\\n      this.downloadManager.download(data, this._downloadUrl, this._docFilename);\\n    } catch (reason) {\\n      \u002F\u002F When the PDF document isn't ready, fallback to a \\\"regular\\\" download.\\n      console.error(`Error when saving the document:`, reason);\\n      await this.download();\\n    } finally {\\n      await this.pdfScriptingManager.dispatchDidSave();\\n      this._saveInProgress = false;\\n    }\\n\\n    if (this._hasAnnotationEditors) {\\n      this.externalServices.reportTelemetry({\\n        type: \\\"editing\\\",\\n        data: {\\n          type: \\\"save\\\",\\n          stats: this.pdfDocument?.annotationStorage.editorStats,\\n        },\\n      });\\n    }\\n  },\\n\\n  async downloadOrSave() {\\n    \u002F\u002F In the Firefox case, this method MUST always trigger a download.\\n    \u002F\u002F When the user is closing a modified and unsaved document, we display a\\n    \u002F\u002F prompt asking for saving or not. In case they save, we must wait for\\n    \u002F\u002F saving to complete before closing the tab.\\n    \u002F\u002F So in case this function does not trigger a download, we must trigger a\\n    \u002F\u002F a message and change PdfjsChild.sys.js to take it into account.\\n    const { classList } = this.appConfig.appContainer;\\n    classList.add(\\\"wait\\\");\\n    await (this.pdfDocument?.annotationStorage.size > 0\\n      ? this.save()\\n      : this.download());\\n    classList.remove(\\\"wait\\\");\\n  },\\n\\n  \u002F**\\n   * Report the error; used for errors affecting loading and\u002For parsing of\\n   * the entire PDF document.\\n   *\u002F\\n  async _documentError(key, moreInfo = null) {\\n    this._unblockDocumentLoadEvent();\\n\\n    const message = await this._otherError(\\n      key || \\\"pdfjs-loading-error\\\",\\n      moreInfo\\n    );\\n\\n    this.eventBus.dispatch(\\\"documenterror\\\", {\\n      source: this,\\n      message,\\n      reason: moreInfo?.message ?? null,\\n    });\\n  },\\n\\n  \u002F**\\n   * Report the error; used for errors affecting e.g. only a single page.\\n   * @param {string} key - The localization key for the error.\\n   * @param {Object} [moreInfo] - Further information about the error that is\\n   *                              more technical. Should have a 'message' and\\n   *                              optionally a 'stack' property.\\n   * @returns {string} A (localized) error message that is human readable.\\n   *\u002F\\n  async _otherError(key, moreInfo = null) {\\n    const message = await this.l10n.get(key);\\n\\n    const moreInfoText = [`PDF.js v${version || \\\"?\\\"} (build: ${build || \\\"?\\\"})`];\\n    if (moreInfo) {\\n      moreInfoText.push(`Message: ${moreInfo.message}`);\\n\\n      if (moreInfo.stack) {\\n        moreInfoText.push(`Stack: ${moreInfo.stack}`);\\n      } else {\\n        if (moreInfo.filename) {\\n          moreInfoText.push(`File: ${moreInfo.filename}`);\\n        }\\n        if (moreInfo.lineNumber) {\\n          moreInfoText.push(`Line: ${moreInfo.lineNumber}`);\\n        }\\n      }\\n    }\\n\\n    console.error(`${message}\\\\n\\\\n${moreInfoText.join(\\\"\\\\n\\\")}`);\\n    return message;\\n  },\\n\\n  progress(level) {\\n    const percent = Math.round(level * 100);\\n    \u002F\u002F When we transition from full request to range requests, it's possible\\n    \u002F\u002F that we discard some of the loaded data. This can cause the loading\\n    \u002F\u002F bar to move backwards. So prevent this by only updating the bar if it\\n    \u002F\u002F increases.\\n    if (!this.loadingBar || percent \u003C= this.loadingBar.percent) {\\n      return;\\n    }\\n    this.loadingBar.percent = percent;\\n\\n    \u002F\u002F When disableAutoFetch is enabled, it's not uncommon for the entire file\\n    \u002F\u002F to never be fetched (depends on e.g. the file structure). In this case\\n    \u002F\u002F the loading bar will not be completely filled, nor will it be hidden.\\n    \u002F\u002F To prevent displaying a partially filled loading bar permanently, we\\n    \u002F\u002F hide it when no data has been loaded during a certain amount of time.\\n    if (\\n      this.pdfDocument?.loadingParams.disableAutoFetch ??\\n      AppOptions.get(\\\"disableAutoFetch\\\")\\n    ) {\\n      this.loadingBar.setDisableAutoFetch();\\n    }\\n  },\\n\\n  load(pdfDocument) {\\n    this.pdfDocument = pdfDocument;\\n\\n    pdfDocument.getDownloadInfo().then(({ length }) => {\\n      this._contentLength = length; \u002F\u002F Ensure that the correct length is used.\\n      this.loadingBar?.hide();\\n\\n      firstPagePromise.then(() => {\\n        this.eventBus.dispatch(\\\"documentloaded\\\", { source: this });\\n      });\\n    });\\n\\n    \u002F\u002F Since the `setInitialView` call below depends on this being resolved,\\n    \u002F\u002F fetch it early to avoid delaying initial rendering of the PDF document.\\n    const pageLayoutPromise = pdfDocument.getPageLayout().catch(() => {\\n      \u002F* Avoid breaking initial rendering; ignoring errors. *\u002F\\n    });\\n    const pageModePromise = pdfDocument.getPageMode().catch(() => {\\n      \u002F* Avoid breaking initial rendering; ignoring errors. *\u002F\\n    });\\n    const openActionPromise = pdfDocument.getOpenAction().catch(() => {\\n      \u002F* Avoid breaking initial rendering; ignoring errors. *\u002F\\n    });\\n\\n    this.toolbar?.setPagesCount(pdfDocument.numPages, false);\\n    this.secondaryToolbar?.setPagesCount(pdfDocument.numPages);\\n\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"CHROME\\\")) {\\n      const baseUrl = updateUrlHash(location, \\\"\\\");\\n      \u002F\u002F Ignore \\\"data:\\\"-URLs for performance reasons, even though it may cause\\n      \u002F\u002F internal links to not work perfectly in all cases (see bug 1803050).\\n      this.pdfLinkService.setDocument(\\n        pdfDocument,\\n        isDataScheme(baseUrl) ? null : baseUrl\\n      );\\n    } else {\\n      this.pdfLinkService.setDocument(pdfDocument);\\n    }\\n    this.pdfDocumentProperties?.setDocument(pdfDocument);\\n\\n    const pdfViewer = this.pdfViewer;\\n    pdfViewer.setDocument(pdfDocument);\\n    const { firstPagePromise, onePageRendered, pagesPromise } = pdfViewer;\\n\\n    this.pdfThumbnailViewer?.setDocument(pdfDocument);\\n\\n    const storedPromise = (this.store = new ViewHistory(\\n      pdfDocument.fingerprints[0]\\n    ))\\n      .getMultiple({\\n        page: null,\\n        zoom: DEFAULT_SCALE_VALUE,\\n        scrollLeft: \\\"0\\\",\\n        scrollTop: \\\"0\\\",\\n        rotation: null,\\n        sidebarView: SidebarView.UNKNOWN,\\n        scrollMode: ScrollMode.UNKNOWN,\\n        spreadMode: SpreadMode.UNKNOWN,\\n      })\\n      .catch(() => {\\n        \u002F* Unable to read from storage; ignoring errors. *\u002F\\n      });\\n\\n    firstPagePromise.then(pdfPage => {\\n      this.loadingBar?.setWidth(this.appConfig.viewerContainer);\\n      this._initializeAnnotationStorageCallbacks(pdfDocument);\\n\\n      Promise.all([\\n        animationStarted,\\n        storedPromise,\\n        pageLayoutPromise,\\n        pageModePromise,\\n        openActionPromise,\\n      ])\\n        .then(async ([timeStamp, stored, pageLayout, pageMode, openAction]) => {\\n          const viewOnLoad = AppOptions.get(\\\"viewOnLoad\\\");\\n\\n          this._initializePdfHistory({\\n            fingerprint: pdfDocument.fingerprints[0],\\n            viewOnLoad,\\n            initialDest: openAction?.dest,\\n          });\\n          const initialBookmark = this.initialBookmark;\\n\\n          \u002F\u002F Initialize the default values, from user preferences.\\n          const zoom = AppOptions.get(\\\"defaultZoomValue\\\");\\n          let hash = zoom ? `zoom=${zoom}` : null;\\n\\n          let rotation = null;\\n          let sidebarView = AppOptions.get(\\\"sidebarViewOnLoad\\\");\\n          let scrollMode = AppOptions.get(\\\"scrollModeOnLoad\\\");\\n          let spreadMode = AppOptions.get(\\\"spreadModeOnLoad\\\");\\n\\n          if (stored?.page && viewOnLoad !== ViewOnLoad.INITIAL) {\\n            hash =\\n              `page=${stored.page}&zoom=${zoom || stored.zoom},` +\\n              `${stored.scrollLeft},${stored.scrollTop}`;\\n\\n            rotation = parseInt(stored.rotation, 10);\\n            \u002F\u002F Always let user preference take precedence over the view history.\\n            if (sidebarView === SidebarView.UNKNOWN) {\\n              sidebarView = stored.sidebarView | 0;\\n            }\\n            if (scrollMode === ScrollMode.UNKNOWN) {\\n              scrollMode = stored.scrollMode | 0;\\n            }\\n            if (spreadMode === SpreadMode.UNKNOWN) {\\n              spreadMode = stored.spreadMode | 0;\\n            }\\n          }\\n          \u002F\u002F Always let the user preference\u002Fview history take precedence.\\n          if (pageMode && sidebarView === SidebarView.UNKNOWN) {\\n            sidebarView = apiPageModeToSidebarView(pageMode);\\n          }\\n          if (\\n            pageLayout &&\\n            scrollMode === ScrollMode.UNKNOWN &&\\n            spreadMode === SpreadMode.UNKNOWN\\n          ) {\\n            const modes = apiPageLayoutToViewerModes(pageLayout);\\n            \u002F\u002F TODO: Try to improve page-switching when using the mouse-wheel\\n            \u002F\u002F and\u002For arrow-keys before allowing the document to control this.\\n            \u002F\u002F scrollMode = modes.scrollMode;\\n            spreadMode = modes.spreadMode;\\n          }\\n\\n          this.setInitialView(hash, {\\n            rotation,\\n            sidebarView,\\n            scrollMode,\\n            spreadMode,\\n          });\\n          this.eventBus.dispatch(\\\"documentinit\\\", { source: this });\\n          \u002F\u002F Make all navigation keys work on document load,\\n          \u002F\u002F unless the viewer is embedded in a web page.\\n          if (!this.isViewerEmbedded) {\\n            pdfViewer.focus();\\n          }\\n\\n          \u002F\u002F For documents with different page sizes, once all pages are\\n          \u002F\u002F resolved, ensure that the correct location becomes visible on load.\\n          \u002F\u002F (To reduce the risk, in very large and\u002For slow loading documents,\\n          \u002F\u002F  that the location changes *after* the user has started interacting\\n          \u002F\u002F  with the viewer, wait for either `pagesPromise` or a timeout.)\\n          await Promise.race([\\n            pagesPromise,\\n            new Promise(resolve => {\\n              setTimeout(resolve, FORCE_PAGES_LOADED_TIMEOUT);\\n            }),\\n          ]);\\n          if (!initialBookmark && !hash) {\\n            return;\\n          }\\n          if (pdfViewer.hasEqualPageSizes) {\\n            return;\\n          }\\n          this.initialBookmark = initialBookmark;\\n\\n          \u002F\u002F eslint-disable-next-line no-self-assign\\n          pdfViewer.currentScaleValue = pdfViewer.currentScaleValue;\\n          \u002F\u002F Re-apply the initial document location.\\n          this.setInitialView(hash);\\n        })\\n        .catch(() => {\\n          \u002F\u002F Ensure that the document is always completely initialized,\\n          \u002F\u002F even if there are any errors thrown above.\\n          this.setInitialView();\\n        })\\n        .then(function () {\\n          \u002F\u002F At this point, rendering of the initial page(s) should always have\\n          \u002F\u002F started (and may even have completed).\\n          \u002F\u002F To prevent any future issues, e.g. the document being completely\\n          \u002F\u002F blank on load, always trigger rendering here.\\n          pdfViewer.update();\\n        });\\n    });\\n\\n    pagesPromise.then(\\n      () => {\\n        this._unblockDocumentLoadEvent();\\n\\n        this._initializeAutoPrint(pdfDocument, openActionPromise);\\n      },\\n      reason => {\\n        this._documentError(\\\"pdfjs-loading-error\\\", { message: reason.message });\\n      }\\n    );\\n\\n    onePageRendered.then(data => {\\n      this.externalServices.reportTelemetry({\\n        type: \\\"pageInfo\\\",\\n        timestamp: data.timestamp,\\n      });\\n\\n      if (this.pdfOutlineViewer) {\\n        pdfDocument.getOutline().then(outline => {\\n          if (pdfDocument !== this.pdfDocument) {\\n            return; \u002F\u002F The document was closed while the outline resolved.\\n          }\\n          this.pdfOutlineViewer.render({ outline, pdfDocument });\\n        });\\n      }\\n      if (this.pdfAttachmentViewer) {\\n        pdfDocument.getAttachments().then(attachments => {\\n          if (pdfDocument !== this.pdfDocument) {\\n            return; \u002F\u002F The document was closed while the attachments resolved.\\n          }\\n          this.pdfAttachmentViewer.render({ attachments });\\n        });\\n      }\\n      if (this.pdfLayerViewer) {\\n        \u002F\u002F Ensure that the layers accurately reflects the current state in the\\n        \u002F\u002F viewer itself, rather than the default state provided by the API.\\n        pdfViewer.optionalContentConfigPromise.then(optionalContentConfig => {\\n          if (pdfDocument !== this.pdfDocument) {\\n            return; \u002F\u002F The document was closed while the layers resolved.\\n          }\\n          this.pdfLayerViewer.render({ optionalContentConfig, pdfDocument });\\n        });\\n      }\\n    });\\n\\n    this._initializePageLabels(pdfDocument);\\n    this._initializeMetadata(pdfDocument);\\n  },\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  async _scriptingDocProperties(pdfDocument) {\\n    if (!this.documentInfo) {\\n      \u002F\u002F It should be *extremely* rare for metadata to not have been resolved\\n      \u002F\u002F when this code runs, but ensure that we handle that case here.\\n      await new Promise(resolve => {\\n        this.eventBus._on(\\\"metadataloaded\\\", resolve, { once: true });\\n      });\\n      if (pdfDocument !== this.pdfDocument) {\\n        return null; \u002F\u002F The document was closed while the metadata resolved.\\n      }\\n    }\\n    if (!this._contentLength) {\\n      \u002F\u002F Always waiting for the entire PDF document to be loaded will, most\\n      \u002F\u002F likely, delay sandbox-creation too much in the general case for all\\n      \u002F\u002F PDF documents which are not provided as binary data to the API.\\n      \u002F\u002F Hence we'll simply have to trust that the `contentLength` (as provided\\n      \u002F\u002F by the server), when it exists, is accurate enough here.\\n      await new Promise(resolve => {\\n        this.eventBus._on(\\\"documentloaded\\\", resolve, { once: true });\\n      });\\n      if (pdfDocument !== this.pdfDocument) {\\n        return null; \u002F\u002F The document was closed while the downloadInfo resolved.\\n      }\\n    }\\n\\n    return {\\n      ...this.documentInfo,\\n      baseURL: this.baseUrl,\\n      filesize: this._contentLength,\\n      filename: this._docFilename,\\n      metadata: this.metadata?.getRaw(),\\n      authors: this.metadata?.get(\\\"dc:creator\\\"),\\n      numPages: this.pagesCount,\\n      URL: this.url,\\n    };\\n  },\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  async _initializeAutoPrint(pdfDocument, openActionPromise) {\\n    const [openAction, jsActions] = await Promise.all([\\n      openActionPromise,\\n      this.pdfViewer.enableScripting ? null : pdfDocument.getJSActions(),\\n    ]);\\n\\n    if (pdfDocument !== this.pdfDocument) {\\n      return; \u002F\u002F The document was closed while the auto print data resolved.\\n    }\\n    let triggerAutoPrint = openAction?.action === \\\"Print\\\";\\n\\n    if (jsActions) {\\n      console.warn(\\\"Warning: JavaScript support is not enabled\\\");\\n\\n      \u002F\u002F Hack to support auto printing.\\n      for (const name in jsActions) {\\n        if (triggerAutoPrint) {\\n          break;\\n        }\\n        switch (name) {\\n          case \\\"WillClose\\\":\\n          case \\\"WillSave\\\":\\n          case \\\"DidSave\\\":\\n          case \\\"WillPrint\\\":\\n          case \\\"DidPrint\\\":\\n            continue;\\n        }\\n        triggerAutoPrint = jsActions[name].some(js => AutoPrintRegExp.test(js));\\n      }\\n    }\\n\\n    if (triggerAutoPrint) {\\n      this.triggerPrinting();\\n    }\\n  },\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  async _initializeMetadata(pdfDocument) {\\n    const { info, metadata, contentDispositionFilename, contentLength } =\\n      await pdfDocument.getMetadata();\\n\\n    if (pdfDocument !== this.pdfDocument) {\\n      return; \u002F\u002F The document was closed while the metadata resolved.\\n    }\\n    this.documentInfo = info;\\n    this.metadata = metadata;\\n    this._contentDispositionFilename ??= contentDispositionFilename;\\n    this._contentLength ??= contentLength; \u002F\u002F See `getDownloadInfo`-call above.\\n\\n    \u002F\u002F Provides some basic debug information\\n    console.log(\\n      `PDF ${pdfDocument.fingerprints[0]} [${info.PDFFormatVersion} ` +\\n        `${(metadata?.get(\\\"pdf:producer\\\") || info.Producer || \\\"-\\\").trim()} \u002F ` +\\n        `${(metadata?.get(\\\"xmp:creatortool\\\") || info.Creator || \\\"-\\\").trim()}` +\\n        `] (PDF.js: ${version || \\\"?\\\"} [${build || \\\"?\\\"}])`\\n    );\\n    const pdfTitle = this._docTitle;\\n\\n    if (pdfTitle) {\\n      this.setTitle(\\n        `${pdfTitle} - ${this._contentDispositionFilename || this._title}`\\n      );\\n    } else if (this._contentDispositionFilename) {\\n      this.setTitle(this._contentDispositionFilename);\\n    }\\n\\n    if (\\n      info.IsXFAPresent &&\\n      !info.IsAcroFormPresent &&\\n      !pdfDocument.isPureXfa\\n    ) {\\n      if (pdfDocument.loadingParams.enableXfa) {\\n        console.warn(\\\"Warning: XFA Foreground documents are not supported\\\");\\n      } else {\\n        console.warn(\\\"Warning: XFA support is not enabled\\\");\\n      }\\n    } else if (\\n      (info.IsAcroFormPresent || info.IsXFAPresent) &&\\n      !this.pdfViewer.renderForms\\n    ) {\\n      console.warn(\\\"Warning: Interactive form support is not enabled\\\");\\n    }\\n\\n    if (info.IsSignaturesPresent) {\\n      console.warn(\\\"Warning: Digital signatures validation is not supported\\\");\\n    }\\n\\n    this.eventBus.dispatch(\\\"metadataloaded\\\", { source: this });\\n  },\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  async _initializePageLabels(pdfDocument) {\\n    if (\\n      typeof PDFJSDev === \\\"undefined\\\"\\n        ? window.isGECKOVIEW\\n        : PDFJSDev.test(\\\"GECKOVIEW\\\")\\n    ) {\\n      return;\\n    }\\n    const labels = await pdfDocument.getPageLabels();\\n\\n    if (pdfDocument !== this.pdfDocument) {\\n      return; \u002F\u002F The document was closed while the page labels resolved.\\n    }\\n    if (!labels || AppOptions.get(\\\"disablePageLabels\\\")) {\\n      return;\\n    }\\n    const numLabels = labels.length;\\n    \u002F\u002F Ignore page labels that correspond to standard page numbering,\\n    \u002F\u002F or page labels that are all empty.\\n    let standardLabels = 0,\\n      emptyLabels = 0;\\n    for (let i = 0; i \u003C numLabels; i++) {\\n      const label = labels[i];\\n      if (label === (i + 1).toString()) {\\n        standardLabels++;\\n      } else if (label === \\\"\\\") {\\n        emptyLabels++;\\n      } else {\\n        break;\\n      }\\n    }\\n    if (standardLabels >= numLabels || emptyLabels >= numLabels) {\\n      return;\\n    }\\n    const { pdfViewer, pdfThumbnailViewer, toolbar } = this;\\n\\n    pdfViewer.setPageLabels(labels);\\n    pdfThumbnailViewer?.setPageLabels(labels);\\n\\n    \u002F\u002F Changing toolbar page display to use labels and we need to set\\n    \u002F\u002F the label of the current page.\\n    toolbar?.setPagesCount(numLabels, true);\\n    toolbar?.setPageNumber(\\n      pdfViewer.currentPageNumber,\\n      pdfViewer.currentPageLabel\\n    );\\n  },\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _initializePdfHistory({ fingerprint, viewOnLoad, initialDest = null }) {\\n    if (!this.pdfHistory) {\\n      return;\\n    }\\n    this.pdfHistory.initialize({\\n      fingerprint,\\n      resetHistory: viewOnLoad === ViewOnLoad.INITIAL,\\n      updateUrl: AppOptions.get(\\\"historyUpdateUrl\\\"),\\n    });\\n\\n    if (this.pdfHistory.initialBookmark) {\\n      this.initialBookmark = this.pdfHistory.initialBookmark;\\n\\n      this.initialRotation = this.pdfHistory.initialRotation;\\n    }\\n\\n    \u002F\u002F Always let the browser history\u002Fdocument hash take precedence.\\n    if (\\n      initialDest &&\\n      !this.initialBookmark &&\\n      viewOnLoad === ViewOnLoad.UNKNOWN\\n    ) {\\n      this.initialBookmark = JSON.stringify(initialDest);\\n      \u002F\u002F TODO: Re-factor the `PDFHistory` initialization to remove this hack\\n      \u002F\u002F that's currently necessary to prevent weird initial history state.\\n      this.pdfHistory.push({ explicitDest: initialDest, pageNumber: null });\\n    }\\n  },\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _initializeAnnotationStorageCallbacks(pdfDocument) {\\n    if (pdfDocument !== this.pdfDocument) {\\n      return;\\n    }\\n    const { annotationStorage } = pdfDocument;\\n\\n    annotationStorage.onSetModified = () => {\\n      window.addEventListener(\\\"beforeunload\\\", beforeUnload);\\n\\n      if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n        this._annotationStorageModified = true;\\n      }\\n    };\\n    annotationStorage.onResetModified = () => {\\n      window.removeEventListener(\\\"beforeunload\\\", beforeUnload);\\n\\n      if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n        delete this._annotationStorageModified;\\n      }\\n    };\\n    annotationStorage.onAnnotationEditor = typeStr => {\\n      this._hasAnnotationEditors = !!typeStr;\\n      this.setTitle();\\n    };\\n  },\\n\\n  setInitialView(\\n    storedHash,\\n    { rotation, sidebarView, scrollMode, spreadMode } = {}\\n  ) {\\n    const setRotation = angle => {\\n      if (isValidRotation(angle)) {\\n        this.pdfViewer.pagesRotation = angle;\\n      }\\n    };\\n    const setViewerModes = (scroll, spread) => {\\n      if (isValidScrollMode(scroll)) {\\n        this.pdfViewer.scrollMode = scroll;\\n      }\\n      if (isValidSpreadMode(spread)) {\\n        this.pdfViewer.spreadMode = spread;\\n      }\\n    };\\n    this.isInitialViewSet = true;\\n    this.pdfSidebar?.setInitialView(sidebarView);\\n\\n    setViewerModes(scrollMode, spreadMode);\\n\\n    if (this.initialBookmark) {\\n      setRotation(this.initialRotation);\\n      delete this.initialRotation;\\n\\n      this.pdfLinkService.setHash(this.initialBookmark);\\n      this.initialBookmark = null;\\n    } else if (storedHash) {\\n      setRotation(rotation);\\n\\n      this.pdfLinkService.setHash(storedHash);\\n    }\\n\\n    \u002F\u002F Ensure that the correct page number is displayed in the UI,\\n    \u002F\u002F even if the active page didn't change during document load.\\n    this.toolbar?.setPageNumber(\\n      this.pdfViewer.currentPageNumber,\\n      this.pdfViewer.currentPageLabel\\n    );\\n    this.secondaryToolbar?.setPageNumber(this.pdfViewer.currentPageNumber);\\n\\n    if (!this.pdfViewer.currentScaleValue) {\\n      \u002F\u002F Scale was not initialized: invalid bookmark or scale was not specified.\\n      \u002F\u002F Setting the default one.\\n      this.pdfViewer.currentScaleValue = DEFAULT_SCALE_VALUE;\\n    }\\n  },\\n\\n  \u002F**\\n   * @private\\n   *\u002F\\n  _cleanup() {\\n    if (!this.pdfDocument) {\\n      return; \u002F\u002F run cleanup when document is loaded\\n    }\\n    this.pdfViewer.cleanup();\\n    this.pdfThumbnailViewer?.cleanup();\\n\\n    this.pdfDocument.cleanup(\\n      \u002F* keepLoadedFonts = *\u002F AppOptions.get(\\\"fontExtraProperties\\\")\\n    );\\n  },\\n\\n  forceRendering() {\\n    this.pdfRenderingQueue.printing = !!this.printService;\\n    this.pdfRenderingQueue.isThumbnailViewEnabled =\\n      this.pdfSidebar?.visibleView === SidebarView.THUMBS;\\n    this.pdfRenderingQueue.renderHighestPriority();\\n  },\\n\\n  beforePrint() {\\n    this._printAnnotationStoragePromise = this.pdfScriptingManager\\n      .dispatchWillPrint()\\n      .catch(() => {\\n        \u002F* Avoid breaking printing; ignoring errors. *\u002F\\n      })\\n      .then(() => this.pdfDocument?.annotationStorage.print);\\n\\n    if (this.printService) {\\n      \u002F\u002F There is no way to suppress beforePrint\u002FafterPrint events,\\n      \u002F\u002F but PDFPrintService may generate double events -- this will ignore\\n      \u002F\u002F the second event that will be coming from native window.print().\\n      return;\\n    }\\n\\n    if (!this.supportsPrinting) {\\n      this._otherError(\\\"pdfjs-printing-not-supported\\\");\\n      return;\\n    }\\n\\n    \u002F\u002F The beforePrint is a sync method and we need to know layout before\\n    \u002F\u002F returning from this method. Ensure that we can get sizes of the pages.\\n    if (!this.pdfViewer.pageViewsReady) {\\n      this.l10n.get(\\\"pdfjs-printing-not-ready\\\").then(msg => {\\n        \u002F\u002F eslint-disable-next-line no-alert\\n        window.alert(msg);\\n      });\\n      return;\\n    }\\n\\n    this.printService = PDFPrintServiceFactory.createPrintService({\\n      pdfDocument: this.pdfDocument,\\n      pagesOverview: this.pdfViewer.getPagesOverview(),\\n      printContainer: this.appConfig.printContainer,\\n      printResolution: AppOptions.get(\\\"printResolution\\\"),\\n      printAnnotationStoragePromise: this._printAnnotationStoragePromise,\\n    });\\n    this.forceRendering();\\n    \u002F\u002F Disable the editor-indicator during printing (fixes bug 1790552).\\n    this.setTitle();\\n\\n    this.printService.layout();\\n\\n    if (this._hasAnnotationEditors) {\\n      this.externalServices.reportTelemetry({\\n        type: \\\"editing\\\",\\n        data: {\\n          type: \\\"print\\\",\\n          stats: this.pdfDocument?.annotationStorage.editorStats,\\n        },\\n      });\\n    }\\n  },\\n\\n  afterPrint() {\\n    if (this._printAnnotationStoragePromise) {\\n      this._printAnnotationStoragePromise.then(() => {\\n        this.pdfScriptingManager.dispatchDidPrint();\\n      });\\n      this._printAnnotationStoragePromise = null;\\n    }\\n\\n    if (this.printService) {\\n      this.printService.destroy();\\n      this.printService = null;\\n\\n      this.pdfDocument?.annotationStorage.resetModified();\\n    }\\n    this.forceRendering();\\n    \u002F\u002F Re-enable the editor-indicator after printing (fixes bug 1790552).\\n    this.setTitle();\\n  },\\n\\n  rotatePages(delta) {\\n    this.pdfViewer.pagesRotation += delta;\\n    \u002F\u002F Note that the thumbnail viewer is updated, and rendering is triggered,\\n    \u002F\u002F in the 'rotationchanging' event handler.\\n  },\\n\\n  requestPresentationMode() {\\n    this.pdfPresentationMode?.request();\\n  },\\n\\n  triggerPrinting() {\\n    if (this.supportsPrinting) {\\n      window.print();\\n    }\\n  },\\n\\n  bindEvents() {\\n    if (this._eventBusAbortController) {\\n      return;\\n    }\\n    const ac = (this._eventBusAbortController = new AbortController());\\n    const opts = { signal: ac.signal };\\n\\n    const {\\n      eventBus,\\n      externalServices,\\n      pdfDocumentProperties,\\n      pdfViewer,\\n      preferences,\\n    } = this;\\n\\n    eventBus._on(\\\"resize\\\", onResize.bind(this), opts);\\n    eventBus._on(\\\"hashchange\\\", onHashchange.bind(this), opts);\\n    eventBus._on(\\\"beforeprint\\\", this.beforePrint.bind(this), opts);\\n    eventBus._on(\\\"afterprint\\\", this.afterPrint.bind(this), opts);\\n    eventBus._on(\\\"pagerender\\\", onPageRender.bind(this), opts);\\n    eventBus._on(\\\"pagerendered\\\", onPageRendered.bind(this), opts);\\n    eventBus._on(\\\"updateviewarea\\\", onUpdateViewarea.bind(this), opts);\\n    eventBus._on(\\\"pagechanging\\\", onPageChanging.bind(this), opts);\\n    eventBus._on(\\\"scalechanging\\\", onScaleChanging.bind(this), opts);\\n    eventBus._on(\\\"rotationchanging\\\", onRotationChanging.bind(this), opts);\\n    eventBus._on(\\\"sidebarviewchanged\\\", onSidebarViewChanged.bind(this), opts);\\n    eventBus._on(\\\"pagemode\\\", onPageMode.bind(this), opts);\\n    eventBus._on(\\\"namedaction\\\", onNamedAction.bind(this), opts);\\n    eventBus._on(\\n      \\\"presentationmodechanged\\\",\\n      evt => (pdfViewer.presentationModeState = evt.state),\\n      opts\\n    );\\n    eventBus._on(\\n      \\\"presentationmode\\\",\\n      this.requestPresentationMode.bind(this),\\n      opts\\n    );\\n    eventBus._on(\\n      \\\"switchannotationeditormode\\\",\\n      evt => (pdfViewer.annotationEditorMode = evt),\\n      opts\\n    );\\n    eventBus._on(\\\"print\\\", this.triggerPrinting.bind(this), opts);\\n    eventBus._on(\\\"download\\\", this.downloadOrSave.bind(this), opts);\\n    eventBus._on(\\\"firstpage\\\", () => (this.page = 1), opts);\\n    eventBus._on(\\\"lastpage\\\", () => (this.page = this.pagesCount), opts);\\n    eventBus._on(\\\"nextpage\\\", () => pdfViewer.nextPage(), opts);\\n    eventBus._on(\\\"previouspage\\\", () => pdfViewer.previousPage(), opts);\\n    eventBus._on(\\\"zoomin\\\", this.zoomIn.bind(this), opts);\\n    eventBus._on(\\\"zoomout\\\", this.zoomOut.bind(this), opts);\\n    eventBus._on(\\\"zoomreset\\\", this.zoomReset.bind(this), opts);\\n    eventBus._on(\\\"pagenumberchanged\\\", onPageNumberChanged.bind(this), opts);\\n    eventBus._on(\\n      \\\"scalechanged\\\",\\n      evt => (pdfViewer.currentScaleValue = evt.value),\\n      opts\\n    );\\n    eventBus._on(\\\"rotatecw\\\", this.rotatePages.bind(this, 90), opts);\\n    eventBus._on(\\\"rotateccw\\\", this.rotatePages.bind(this, -90), opts);\\n    eventBus._on(\\n      \\\"optionalcontentconfig\\\",\\n      evt => (pdfViewer.optionalContentConfigPromise = evt.promise),\\n      opts\\n    );\\n    eventBus._on(\\n      \\\"switchscrollmode\\\",\\n      evt => (pdfViewer.scrollMode = evt.mode),\\n      opts\\n    );\\n    eventBus._on(\\n      \\\"scrollmodechanged\\\",\\n      onViewerModesChanged.bind(this, \\\"scrollMode\\\"),\\n      opts\\n    );\\n    eventBus._on(\\n      \\\"switchspreadmode\\\",\\n      evt => (pdfViewer.spreadMode = evt.mode),\\n      opts\\n    );\\n    eventBus._on(\\n      \\\"spreadmodechanged\\\",\\n      onViewerModesChanged.bind(this, \\\"spreadMode\\\"),\\n      opts\\n    );\\n    eventBus._on(\\n      \\\"imagealttextsettings\\\",\\n      onImageAltTextSettings.bind(this),\\n      opts\\n    );\\n    eventBus._on(\\n      \\\"documentproperties\\\",\\n      () => pdfDocumentProperties?.open(),\\n      opts\\n    );\\n    eventBus._on(\\\"findfromurlhash\\\", onFindFromUrlHash.bind(this), opts);\\n    eventBus._on(\\n      \\\"updatefindmatchescount\\\",\\n      onUpdateFindMatchesCount.bind(this),\\n      opts\\n    );\\n    eventBus._on(\\n      \\\"updatefindcontrolstate\\\",\\n      onUpdateFindControlState.bind(this),\\n      opts\\n    );\\n\\n    if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n      eventBus._on(\\\"fileinputchange\\\", onFileInputChange.bind(this), opts);\\n      eventBus._on(\\\"openfile\\\", onOpenFile.bind(this), opts);\\n    }\\n    if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      eventBus._on(\\n        \\\"annotationeditorstateschanged\\\",\\n        evt => externalServices.updateEditorStates(evt),\\n        opts\\n      );\\n      eventBus._on(\\n        \\\"reporttelemetry\\\",\\n        evt => externalServices.reportTelemetry(evt.details),\\n        opts\\n      );\\n    }\\n    if (\\n      typeof PDFJSDev === \\\"undefined\\\" ||\\n      PDFJSDev.test(\\\"TESTING || MOZCENTRAL\\\")\\n    ) {\\n      eventBus._on(\\n        \\\"setpreference\\\",\\n        evt => preferences.set(evt.name, evt.value),\\n        opts\\n      );\\n    }\\n  },\\n\\n  bindWindowEvents() {\\n    if (this._windowAbortController) {\\n      return;\\n    }\\n    this._windowAbortController = new AbortController();\\n\\n    const {\\n      eventBus,\\n      appConfig: { mainContainer },\\n      pdfViewer,\\n      _windowAbortController: { signal },\\n    } = this;\\n\\n    this._touchManager = new TouchManager({\\n      container: window,\\n      isPinchingDisabled: () => pdfViewer.isInPresentationMode,\\n      isPinchingStopped: () => this.overlayManager?.active,\\n      onPinching: this.touchPinchCallback.bind(this),\\n      onPinchEnd: this.touchPinchEndCallback.bind(this),\\n      signal,\\n    });\\n\\n    function addWindowResolutionChange(evt = null) {\\n      if (evt) {\\n        pdfViewer.refresh();\\n      }\\n      const mediaQueryList = window.matchMedia(\\n        `(resolution: ${OutputScale.pixelRatio}dppx)`\\n      );\\n      mediaQueryList.addEventListener(\\\"change\\\", addWindowResolutionChange, {\\n        once: true,\\n        signal,\\n      });\\n    }\\n    addWindowResolutionChange();\\n\\n    window.addEventListener(\\\"wheel\\\", onWheel.bind(this), {\\n      passive: false,\\n      signal,\\n    });\\n    window.addEventListener(\\\"click\\\", onClick.bind(this), { signal });\\n    window.addEventListener(\\\"keydown\\\", onKeyDown.bind(this), { signal });\\n    window.addEventListener(\\\"keyup\\\", onKeyUp.bind(this), { signal });\\n    window.addEventListener(\\n      \\\"resize\\\",\\n      () => eventBus.dispatch(\\\"resize\\\", { source: window }),\\n      { signal }\\n    );\\n    window.addEventListener(\\n      \\\"hashchange\\\",\\n      () => {\\n        eventBus.dispatch(\\\"hashchange\\\", {\\n          source: window,\\n          hash: document.location.hash.substring(1),\\n        });\\n      },\\n      { signal }\\n    );\\n    window.addEventListener(\\n      \\\"beforeprint\\\",\\n      () => eventBus.dispatch(\\\"beforeprint\\\", { source: window }),\\n      { signal }\\n    );\\n    window.addEventListener(\\n      \\\"afterprint\\\",\\n      () => eventBus.dispatch(\\\"afterprint\\\", { source: window }),\\n      { signal }\\n    );\\n    window.addEventListener(\\n      \\\"updatefromsandbox\\\",\\n      evt => {\\n        eventBus.dispatch(\\\"updatefromsandbox\\\", {\\n          source: window,\\n          detail: evt.detail,\\n        });\\n      },\\n      { signal }\\n    );\\n\\n    if (\\n      (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) &&\\n      !(\\\"onscrollend\\\" in document.documentElement)\\n    ) {\\n      return;\\n    }\\n    if (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n      \u002F\u002F Using the values lastScrollTop and lastScrollLeft is a workaround to\\n      \u002F\u002F https:\u002F\u002Fbugzilla.mozilla.org\u002Fshow_bug.cgi?id=1881974.\\n      \u002F\u002F TODO: remove them once the bug is fixed.\\n      ({ scrollTop: this._lastScrollTop, scrollLeft: this._lastScrollLeft } =\\n        mainContainer);\\n    }\\n\\n    const scrollend = () => {\\n      if (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n        ({ scrollTop: this._lastScrollTop, scrollLeft: this._lastScrollLeft } =\\n          mainContainer);\\n      }\\n\\n      this._isScrolling = false;\\n      mainContainer.addEventListener(\\\"scroll\\\", scroll, {\\n        passive: true,\\n        signal,\\n      });\\n      mainContainer.removeEventListener(\\\"scrollend\\\", scrollend);\\n      mainContainer.removeEventListener(\\\"blur\\\", scrollend);\\n    };\\n    const scroll = () => {\\n      if (this._isCtrlKeyDown) {\\n        return;\\n      }\\n      if (\\n        (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) &&\\n        this._lastScrollTop === mainContainer.scrollTop &&\\n        this._lastScrollLeft === mainContainer.scrollLeft\\n      ) {\\n        return;\\n      }\\n\\n      mainContainer.removeEventListener(\\\"scroll\\\", scroll);\\n      this._isScrolling = true;\\n      mainContainer.addEventListener(\\\"scrollend\\\", scrollend, { signal });\\n      mainContainer.addEventListener(\\\"blur\\\", scrollend, { signal });\\n    };\\n    mainContainer.addEventListener(\\\"scroll\\\", scroll, {\\n      passive: true,\\n      signal,\\n    });\\n  },\\n\\n  unbindEvents() {\\n    this._eventBusAbortController?.abort();\\n    this._eventBusAbortController = null;\\n  },\\n\\n  unbindWindowEvents() {\\n    this._windowAbortController?.abort();\\n    this._windowAbortController = null;\\n    this._touchManager = null;\\n  },\\n\\n  \u002F**\\n   * @ignore\\n   *\u002F\\n  async testingClose() {\\n    this.unbindEvents();\\n    this.unbindWindowEvents();\\n\\n    this._globalAbortController?.abort();\\n    this._globalAbortController = null;\\n\\n    this.findBar?.close();\\n\\n    await Promise.all([this.l10n?.destroy(), this.close()]);\\n  },\\n\\n  _accumulateTicks(ticks, prop) {\\n    \u002F\u002F If the direction changed, reset the accumulated ticks.\\n    if ((this[prop] > 0 && ticks \u003C 0) || (this[prop] \u003C 0 && ticks > 0)) {\\n      this[prop] = 0;\\n    }\\n    this[prop] += ticks;\\n    const wholeTicks = Math.trunc(this[prop]);\\n    this[prop] -= wholeTicks;\\n    return wholeTicks;\\n  },\\n\\n  _accumulateFactor(previousScale, factor, prop) {\\n    if (factor === 1) {\\n      return 1;\\n    }\\n    \u002F\u002F If the direction changed, reset the accumulated factor.\\n    if ((this[prop] > 1 && factor \u003C 1) || (this[prop] \u003C 1 && factor > 1)) {\\n      this[prop] = 1;\\n    }\\n\\n    const newFactor =\\n      Math.floor(previousScale * factor * this[prop] * 100) \u002F\\n      (100 * previousScale);\\n    this[prop] = factor \u002F newFactor;\\n\\n    return newFactor;\\n  },\\n\\n  \u002F**\\n   * Should be called *after* all pages have loaded, or if an error occurred,\\n   * to unblock the \\\"load\\\" event; see https:\u002F\u002Fbugzilla.mozilla.org\u002Fshow_bug.cgi?id=1618553\\n   * @private\\n   *\u002F\\n  _unblockDocumentLoadEvent() {\\n    document.blockUnblockOnload?.(false);\\n\\n    \u002F\u002F Ensure that this method is only ever run once.\\n    this._unblockDocumentLoadEvent = () => {};\\n  },\\n\\n  \u002F**\\n   * Used together with the integration-tests, to enable awaiting full\\n   * initialization of the scripting\u002Fsandbox.\\n   *\u002F\\n  get scriptingReady() {\\n    return this.pdfScriptingManager.ready;\\n  },\\n};\\n\\ninitCom(PDFViewerApplication);\\n\\nif (typeof PDFJSDev === \\\"undefined\\\" || !PDFJSDev.test(\\\"MOZCENTRAL\\\")) {\\n  PDFPrintServiceFactory.initGlobals(PDFViewerApplication);\\n}\\n\\nif (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n  const HOSTED_VIEWER_ORIGINS = new Set([\\n    \\\"null\\\",\\n    \\\"http:\u002F\u002Fmozilla.github.io\\\",\\n    \\\"https:\u002F\u002Fmozilla.github.io\\\",\\n  ]);\\n  \u002F\u002F eslint-disable-next-line no-var\\n  var validateFileURL = function (file) {\\n    if (!file) {\\n      return;\\n    }\\n    const viewerOrigin = URL.parse(window.location)?.origin || \\\"null\\\";\\n    if (HOSTED_VIEWER_ORIGINS.has(viewerOrigin)) {\\n      \u002F\u002F Hosted or local viewer, allow for any file locations\\n      return;\\n    }\\n    const fileOrigin = URL.parse(file, window.location)?.origin;\\n    if (fileOrigin === viewerOrigin) {\\n      return;\\n    }\\n    const ex = new Error(\\\"file origin does not match viewer's\\\");\\n\\n    PDFViewerApplication._documentError(\\\"pdfjs-loading-error\\\", {\\n      message: ex.message,\\n    });\\n    \u002F\u002F Removing of the following line will not guarantee that the viewer will\\n    \u002F\u002F start accepting URLs from foreign origin -- CORS headers on the remote\\n    \u002F\u002F server must be properly configured.\\n    throw ex;\\n  };\\n\\n  \u002F\u002F eslint-disable-next-line no-var\\n  var onFileInputChange = function (evt) {\\n    if (this.pdfViewer?.isInPresentationMode) {\\n      return; \u002F\u002F Opening a new PDF file isn't supported in Presentation Mode.\\n    }\\n    const file = evt.fileInput.files[0];\\n\\n    this.open({\\n      url: URL.createObjectURL(file),\\n      originalUrl: file.name,\\n    });\\n  };\\n\\n  \u002F\u002F eslint-disable-next-line no-var\\n  var onOpenFile = function (evt) {\\n    this._openFileInput?.click();\\n  };\\n}\\n\\nfunction onPageRender({ pageNumber }) {\\n  \u002F\u002F If the page is (the most) visible when it starts rendering,\\n  \u002F\u002F ensure that the page number input loading indicator is displayed.\\n  if (pageNumber === this.page) {\\n    this.toolbar?.updateLoadingIndicatorState(true);\\n  }\\n}\\n\\nfunction onPageRendered({ pageNumber, isDetailView, error }) {\\n  \u002F\u002F If the page is still visible when it has finished rendering,\\n  \u002F\u002F ensure that the page number input loading indicator is hidden.\\n  if (pageNumber === this.page) {\\n    this.toolbar?.updateLoadingIndicatorState(false);\\n  }\\n\\n  \u002F\u002F Use the rendered page to set the corresponding thumbnail image.\\n  if (!isDetailView && this.pdfSidebar?.visibleView === SidebarView.THUMBS) {\\n    const pageView = this.pdfViewer.getPageView(\u002F* index = *\u002F pageNumber - 1);\\n    const thumbnailView = this.pdfThumbnailViewer?.getThumbnail(\\n      \u002F* index = *\u002F pageNumber - 1\\n    );\\n    if (pageView) {\\n      thumbnailView?.setImage(pageView);\\n    }\\n  }\\n\\n  if (error) {\\n    this._otherError(\\\"pdfjs-rendering-error\\\", error);\\n  }\\n}\\n\\nfunction onPageMode({ mode }) {\\n  \u002F\u002F Handle the 'pagemode' hash parameter, see also `PDFLinkService_setHash`.\\n  let view;\\n  switch (mode) {\\n    case \\\"thumbs\\\":\\n      view = SidebarView.THUMBS;\\n      break;\\n    case \\\"bookmarks\\\":\\n    case \\\"outline\\\": \u002F\u002F non-standard\\n      view = SidebarView.OUTLINE;\\n      break;\\n    case \\\"attachments\\\": \u002F\u002F non-standard\\n      view = SidebarView.ATTACHMENTS;\\n      break;\\n    case \\\"layers\\\": \u002F\u002F non-standard\\n      view = SidebarView.LAYERS;\\n      break;\\n    case \\\"none\\\":\\n      view = SidebarView.NONE;\\n      break;\\n    default:\\n      console.error('Invalid \\\"pagemode\\\" hash parameter: ' + mode);\\n      return;\\n  }\\n  this.pdfSidebar?.switchView(view, \u002F* forceOpen = *\u002F true);\\n}\\n\\nfunction onNamedAction(evt) {\\n  \u002F\u002F Processing a couple of named actions that might be useful, see also\\n  \u002F\u002F `PDFLinkService.executeNamedAction`.\\n  switch (evt.action) {\\n    case \\\"GoToPage\\\":\\n      this.appConfig.toolbar?.pageNumber.select();\\n      break;\\n\\n    case \\\"Find\\\":\\n      if (!this.supportsIntegratedFind) {\\n        this.findBar?.toggle();\\n      }\\n      break;\\n\\n    case \\\"Print\\\":\\n      this.triggerPrinting();\\n      break;\\n\\n    case \\\"SaveAs\\\":\\n      this.downloadOrSave();\\n      break;\\n  }\\n}\\n\\nfunction onSidebarViewChanged({ view }) {\\n  this.pdfRenderingQueue.isThumbnailViewEnabled = view === SidebarView.THUMBS;\\n\\n  if (this.isInitialViewSet) {\\n    \u002F\u002F Only update the storage when the document has been loaded *and* rendered.\\n    this.store?.set(\\\"sidebarView\\\", view).catch(() => {\\n      \u002F\u002F Unable to write to storage.\\n    });\\n  }\\n}\\n\\nfunction onUpdateViewarea({ location }) {\\n  if (this.isInitialViewSet) {\\n    \u002F\u002F Only update the storage when the document has been loaded *and* rendered.\\n    this.store\\n      ?.setMultiple({\\n        page: location.pageNumber,\\n        zoom: location.scale,\\n        scrollLeft: location.left,\\n        scrollTop: location.top,\\n        rotation: location.rotation,\\n      })\\n      .catch(() => {\\n        \u002F\u002F Unable to write to storage.\\n      });\\n  }\\n  if (this.appConfig.secondaryToolbar) {\\n    this.appConfig.secondaryToolbar.viewBookmarkButton.href =\\n      this.pdfLinkService.getAnchorUrl(location.pdfOpenParams);\\n  }\\n}\\n\\nfunction onViewerModesChanged(name, evt) {\\n  if (this.isInitialViewSet && !this.pdfViewer.isInPresentationMode) {\\n    \u002F\u002F Only update the storage when the document has been loaded *and* rendered.\\n    this.store?.set(name, evt.mode).catch(() => {\\n      \u002F\u002F Unable to write to storage.\\n    });\\n  }\\n}\\n\\nfunction onResize() {\\n  const { pdfDocument, pdfViewer, pdfRenderingQueue } = this;\\n\\n  if (pdfRenderingQueue.printing && window.matchMedia(\\\"print\\\").matches) {\\n    \u002F\u002F Work-around issue 15324 by ignoring \\\"resize\\\" events during printing.\\n    return;\\n  }\\n\\n  if (!pdfDocument) {\\n    return;\\n  }\\n  const currentScaleValue = pdfViewer.currentScaleValue;\\n  if (\\n    currentScaleValue === \\\"auto\\\" ||\\n    currentScaleValue === \\\"page-fit\\\" ||\\n    currentScaleValue === \\\"page-width\\\"\\n  ) {\\n    \u002F\u002F Note: the scale is constant for 'page-actual'.\\n    pdfViewer.currentScaleValue = currentScaleValue;\\n  }\\n  pdfViewer.update();\\n}\\n\\nfunction onHashchange(evt) {\\n  const hash = evt.hash;\\n  if (!hash) {\\n    return;\\n  }\\n  if (!this.isInitialViewSet) {\\n    this.initialBookmark = hash;\\n  } else if (!this.pdfHistory?.popStateInProgress) {\\n    this.pdfLinkService.setHash(hash);\\n  }\\n}\\n\\nfunction onPageNumberChanged(evt) {\\n  const { pdfViewer } = this;\\n  \u002F\u002F Note that for `\u003Cinput type=\\\"number\\\">` HTML elements, an empty string will\\n  \u002F\u002F be returned for non-number inputs; hence we simply do nothing in that case.\\n  if (evt.value !== \\\"\\\") {\\n    this.pdfLinkService.goToPage(evt.value);\\n  }\\n\\n  \u002F\u002F Ensure that the page number input displays the correct value, even if the\\n  \u002F\u002F value entered by the user was invalid (e.g. a floating point number).\\n  if (\\n    evt.value !== pdfViewer.currentPageNumber.toString() &&\\n    evt.value !== pdfViewer.currentPageLabel\\n  ) {\\n    this.toolbar?.setPageNumber(\\n      pdfViewer.currentPageNumber,\\n      pdfViewer.currentPageLabel\\n    );\\n  }\\n}\\n\\nfunction onImageAltTextSettings() {\\n  this.imageAltTextSettings?.open({\\n    enableGuessAltText: AppOptions.get(\\\"enableGuessAltText\\\"),\\n    enableNewAltTextWhenAddingImage: AppOptions.get(\\n      \\\"enableNewAltTextWhenAddingImage\\\"\\n    ),\\n  });\\n}\\n\\nfunction onFindFromUrlHash(evt) {\\n  this.eventBus.dispatch(\\\"find\\\", {\\n    source: evt.source,\\n    type: \\\"\\\",\\n    query: evt.query,\\n    caseSensitive: false,\\n    entireWord: false,\\n    highlightAll: true,\\n    findPrevious: false,\\n    matchDiacritics: true,\\n  });\\n}\\n\\nfunction onUpdateFindMatchesCount({ matchesCount }) {\\n  if (this.supportsIntegratedFind) {\\n    this.externalServices.updateFindMatchesCount(matchesCount);\\n  } else {\\n    this.findBar?.updateResultsCount(matchesCount);\\n  }\\n}\\n\\nfunction onUpdateFindControlState({\\n  state,\\n  previous,\\n  entireWord,\\n  matchesCount,\\n  rawQuery,\\n}) {\\n  if (this.supportsIntegratedFind) {\\n    this.externalServices.updateFindControlState({\\n      result: state,\\n      findPrevious: previous,\\n      entireWord,\\n      matchesCount,\\n      rawQuery,\\n    });\\n  } else {\\n    this.findBar?.updateUIState(state, previous, matchesCount);\\n  }\\n}\\n\\nfunction onScaleChanging(evt) {\\n  this.toolbar?.setPageScale(evt.presetValue, evt.scale);\\n\\n  this.pdfViewer.update();\\n}\\n\\nfunction onRotationChanging(evt) {\\n  if (this.pdfThumbnailViewer) {\\n    this.pdfThumbnailViewer.pagesRotation = evt.pagesRotation;\\n  }\\n\\n  this.forceRendering();\\n  \u002F\u002F Ensure that the active page doesn't change during rotation.\\n  this.pdfViewer.currentPageNumber = evt.pageNumber;\\n}\\n\\nfunction onPageChanging({ pageNumber, pageLabel }) {\\n  this.toolbar?.setPageNumber(pageNumber, pageLabel);\\n  this.secondaryToolbar?.setPageNumber(pageNumber);\\n\\n  if (this.pdfSidebar?.visibleView === SidebarView.THUMBS) {\\n    this.pdfThumbnailViewer?.scrollThumbnailIntoView(pageNumber);\\n  }\\n\\n  \u002F\u002F Show\u002Fhide the loading indicator in the page number input element.\\n  const currentPage = this.pdfViewer.getPageView(\u002F* index = *\u002F pageNumber - 1);\\n  this.toolbar?.updateLoadingIndicatorState(\\n    currentPage?.renderingState === RenderingStates.RUNNING\\n  );\\n}\\n\\nfunction onWheel(evt) {\\n  const {\\n    pdfViewer,\\n    supportsMouseWheelZoomCtrlKey,\\n    supportsMouseWheelZoomMetaKey,\\n    supportsPinchToZoom,\\n  } = this;\\n\\n  if (pdfViewer.isInPresentationMode) {\\n    return;\\n  }\\n\\n  \u002F\u002F Pinch-to-zoom on a trackpad maps to a wheel event with ctrlKey set to true\\n  \u002F\u002F https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FAPI\u002FWheelEvent#browser_compatibility\\n  \u002F\u002F Hence if ctrlKey is true but ctrl key hasn't been pressed then we can\\n  \u002F\u002F infer that we have a pinch-to-zoom.\\n  \u002F\u002F But the ctrlKey could have been pressed outside of the browser window,\\n  \u002F\u002F hence we try to do some magic to guess if the scaleFactor is likely coming\\n  \u002F\u002F from a pinch-to-zoom or not.\\n\\n  \u002F\u002F It is important that we query deltaMode before delta{X,Y}, so that\\n  \u002F\u002F Firefox doesn't switch to DOM_DELTA_PIXEL mode for compat with other\\n  \u002F\u002F browsers, see https:\u002F\u002Fbugzilla.mozilla.org\u002Fshow_bug.cgi?id=1392460.\\n  const deltaMode = evt.deltaMode;\\n\\n  \u002F\u002F The following formula is a bit strange but it comes from:\\n  \u002F\u002F https:\u002F\u002Fsearchfox.org\u002Fmozilla-central\u002Frev\u002Fd62c4c4d5547064487006a1506287da394b64724\u002Fwidget\u002FInputData.cpp#618-626\\n  let scaleFactor = Math.exp(-evt.deltaY \u002F 100);\\n\\n  const isBuiltInMac =\\n    typeof PDFJSDev !== \\\"undefined\\\" &&\\n    PDFJSDev.test(\\\"MOZCENTRAL\\\") &&\\n    FeatureTest.platform.isMac;\\n  const isPinchToZoom =\\n    evt.ctrlKey &&\\n    !this._isCtrlKeyDown &&\\n    deltaMode === WheelEvent.DOM_DELTA_PIXEL &&\\n    evt.deltaX === 0 &&\\n    (Math.abs(scaleFactor - 1) \u003C 0.05 || isBuiltInMac) &&\\n    evt.deltaZ === 0;\\n  const origin = [evt.clientX, evt.clientY];\\n\\n  if (\\n    isPinchToZoom ||\\n    (evt.ctrlKey && supportsMouseWheelZoomCtrlKey) ||\\n    (evt.metaKey && supportsMouseWheelZoomMetaKey)\\n  ) {\\n    \u002F\u002F Only zoom the pages, not the entire viewer.\\n    evt.preventDefault();\\n    \u002F\u002F NOTE: this check must be placed *after* preventDefault.\\n    if (\\n      this._isScrolling ||\\n      document.visibilityState === \\\"hidden\\\" ||\\n      this.overlayManager.active\\n    ) {\\n      return;\\n    }\\n\\n    if (isPinchToZoom && supportsPinchToZoom) {\\n      scaleFactor = this._accumulateFactor(\\n        pdfViewer.currentScale,\\n        scaleFactor,\\n        \\\"_wheelUnusedFactor\\\"\\n      );\\n      this.updateZoom(null, scaleFactor, origin);\\n    } else {\\n      const delta = normalizeWheelEventDirection(evt);\\n\\n      let ticks = 0;\\n      if (\\n        deltaMode === WheelEvent.DOM_DELTA_LINE ||\\n        deltaMode === WheelEvent.DOM_DELTA_PAGE\\n      ) {\\n        \u002F\u002F For line-based devices, use one tick per event, because different\\n        \u002F\u002F OSs have different defaults for the number lines. But we generally\\n        \u002F\u002F want one \\\"clicky\\\" roll of the wheel (which produces one event) to\\n        \u002F\u002F adjust the zoom by one step.\\n        \u002F\u002F\\n        \u002F\u002F If we're getting fractional lines (I can't think of a scenario\\n        \u002F\u002F this might actually happen), be safe and use the accumulator.\\n        ticks =\\n          Math.abs(delta) >= 1\\n            ? Math.sign(delta)\\n            : this._accumulateTicks(delta, \\\"_wheelUnusedTicks\\\");\\n      } else {\\n        \u002F\u002F pixel-based devices\\n        const PIXELS_PER_LINE_SCALE = 30;\\n        ticks = this._accumulateTicks(\\n          delta \u002F PIXELS_PER_LINE_SCALE,\\n          \\\"_wheelUnusedTicks\\\"\\n        );\\n      }\\n\\n      this.updateZoom(ticks, null, origin);\\n    }\\n  }\\n}\\n\\nfunction closeSecondaryToolbar({ target }) {\\n  if (!this.secondaryToolbar?.isOpen) {\\n    return;\\n  }\\n  const { toolbar, secondaryToolbar } = this.appConfig;\\n  if (\\n    this.pdfViewer.containsElement(target) ||\\n    (toolbar?.container.contains(target) &&\\n      !secondaryToolbar?.toolbar.contains(target) &&\\n      \u002F\u002F TODO: change the `contains` for an equality check when the bug:\\n      \u002F\u002F  https:\u002F\u002Fbugzilla.mozilla.org\u002Fshow_bug.cgi?id=1921984\\n      \u002F\u002F is fixed.\\n      !secondaryToolbar?.toggleButton.contains(target))\\n  ) {\\n    this.secondaryToolbar.close();\\n  }\\n}\\n\\nfunction closeEditorUndoBar(evt) {\\n  if (!this.editorUndoBar?.isOpen) {\\n    return;\\n  }\\n  if (this.appConfig.secondaryToolbar?.toolbar.contains(evt.target)) {\\n    this.editorUndoBar.hide();\\n  }\\n}\\n\\nfunction onClick(evt) {\\n  closeSecondaryToolbar.call(this, evt);\\n  closeEditorUndoBar.call(this, evt);\\n}\\n\\nfunction onKeyUp(evt) {\\n  \u002F\u002F evt.ctrlKey is false hence we use evt.key.\\n  if (evt.key === \\\"Control\\\") {\\n    this._isCtrlKeyDown = false;\\n  }\\n}\\n\\nfunction onKeyDown(evt) {\\n  this._isCtrlKeyDown = evt.key === \\\"Control\\\";\\n\\n  if (\\n    this.editorUndoBar?.isOpen &&\\n    evt.keyCode !== 9 &&\\n    evt.keyCode !== 16 &&\\n    !(\\n      (evt.keyCode === 13 || evt.keyCode === 32) &&\\n      getActiveOrFocusedElement() === this.appConfig.editorUndoBar.undoButton\\n    )\\n  ) {\\n    \u002F\u002F Hide undo bar on keypress except for Shift, Tab, Shift+Tab.\\n    \u002F\u002F Also avoid hiding if the undo button is triggered.\\n    this.editorUndoBar.hide();\\n  }\\n\\n  if (this.overlayManager.active) {\\n    return;\\n  }\\n  const { eventBus, pdfViewer } = this;\\n  const isViewerInPresentationMode = pdfViewer.isInPresentationMode;\\n\\n  let handled = false,\\n    ensureViewerFocused = false;\\n  const cmd =\\n    (evt.ctrlKey ? 1 : 0) |\\n    (evt.altKey ? 2 : 0) |\\n    (evt.shiftKey ? 4 : 0) |\\n    (evt.metaKey ? 8 : 0);\\n\\n  \u002F\u002F First, handle the key bindings that are independent whether an input\\n  \u002F\u002F control is selected or not.\\n  if (cmd === 1 || cmd === 8 || cmd === 5 || cmd === 12) {\\n    \u002F\u002F either CTRL or META key with optional SHIFT.\\n    switch (evt.keyCode) {\\n      case 70: \u002F\u002F f\\n        if (!this.supportsIntegratedFind && !evt.shiftKey) {\\n          this.findBar?.open();\\n          handled = true;\\n        }\\n        break;\\n      case 71: \u002F\u002F g\\n        if (!this.supportsIntegratedFind) {\\n          const { state } = this.findController;\\n          if (state) {\\n            const newState = {\\n              source: window,\\n              type: \\\"again\\\",\\n              findPrevious: cmd === 5 || cmd === 12,\\n            };\\n            eventBus.dispatch(\\\"find\\\", { ...state, ...newState });\\n          }\\n          handled = true;\\n        }\\n        break;\\n      case 61: \u002F\u002F FF\u002FMac '='\\n      case 107: \u002F\u002F FF '+' and '='\\n      case 187: \u002F\u002F Chrome '+'\\n      case 171: \u002F\u002F FF with German keyboard\\n        this.zoomIn();\\n        handled = true;\\n        break;\\n      case 173: \u002F\u002F FF\u002FMac '-'\\n      case 109: \u002F\u002F FF '-'\\n      case 189: \u002F\u002F Chrome '-'\\n        this.zoomOut();\\n        handled = true;\\n        break;\\n      case 48: \u002F\u002F '0'\\n      case 96: \u002F\u002F '0' on Numpad of Swedish keyboard\\n        if (!isViewerInPresentationMode) {\\n          \u002F\u002F keeping it unhandled (to restore page zoom to 100%)\\n          setTimeout(() => {\\n            \u002F\u002F ... and resetting the scale after browser adjusts its scale\\n            this.zoomReset();\\n          });\\n          handled = false;\\n        }\\n        break;\\n\\n      case 38: \u002F\u002F up arrow\\n        if (isViewerInPresentationMode || this.page > 1) {\\n          this.page = 1;\\n          handled = true;\\n          ensureViewerFocused = true;\\n        }\\n        break;\\n      case 40: \u002F\u002F down arrow\\n        if (isViewerInPresentationMode || this.page \u003C this.pagesCount) {\\n          this.page = this.pagesCount;\\n          handled = true;\\n          ensureViewerFocused = true;\\n        }\\n        break;\\n    }\\n  }\\n\\n  if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC || CHROME\\\")) {\\n    \u002F\u002F CTRL or META without shift\\n    if (cmd === 1 || cmd === 8) {\\n      switch (evt.keyCode) {\\n        case 83: \u002F\u002F s\\n          eventBus.dispatch(\\\"download\\\", { source: window });\\n          handled = true;\\n          break;\\n\\n        case 79: \u002F\u002F o\\n          if (typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")) {\\n            eventBus.dispatch(\\\"openfile\\\", { source: window });\\n            handled = true;\\n          }\\n          break;\\n      }\\n    }\\n  }\\n\\n  \u002F\u002F CTRL+ALT or Option+Command\\n  if (cmd === 3 || cmd === 10) {\\n    switch (evt.keyCode) {\\n      case 80: \u002F\u002F p\\n        this.requestPresentationMode();\\n        handled = true;\\n        this.externalServices.reportTelemetry({\\n          type: \\\"buttons\\\",\\n          data: { id: \\\"presentationModeKeyboard\\\" },\\n        });\\n        break;\\n      case 71: \u002F\u002F g\\n        \u002F\u002F focuses input#pageNumber field\\n        if (this.appConfig.toolbar) {\\n          this.appConfig.toolbar.pageNumber.select();\\n          handled = true;\\n        }\\n        break;\\n    }\\n  }\\n\\n  if (handled) {\\n    if (ensureViewerFocused && !isViewerInPresentationMode) {\\n      pdfViewer.focus();\\n    }\\n    evt.preventDefault();\\n    return;\\n  }\\n\\n  \u002F\u002F Some shortcuts should not get handled if a control\u002Finput element\\n  \u002F\u002F is selected.\\n  const curElement = getActiveOrFocusedElement();\\n  const curElementTagName = curElement?.tagName.toUpperCase();\\n  if (\\n    curElementTagName === \\\"INPUT\\\" ||\\n    curElementTagName === \\\"TEXTAREA\\\" ||\\n    curElementTagName === \\\"SELECT\\\" ||\\n    (curElementTagName === \\\"BUTTON\\\" &&\\n      (evt.keyCode === \u002F* Enter = *\u002F 13 || evt.keyCode === \u002F* Space = *\u002F 32)) ||\\n    curElement?.isContentEditable\\n  ) {\\n    \u002F\u002F Make sure that the secondary toolbar is closed when Escape is pressed.\\n    if (evt.keyCode !== \u002F* Esc = *\u002F 27) {\\n      return;\\n    }\\n  }\\n\\n  \u002F\u002F No control key pressed at all.\\n  if (cmd === 0) {\\n    let turnPage = 0,\\n      turnOnlyIfPageFit = false;\\n    switch (evt.keyCode) {\\n      case 38: \u002F\u002F up arrow\\n        if (this.supportsCaretBrowsingMode) {\\n          this.moveCaret(\u002F* isUp = *\u002F true, \u002F* select = *\u002F false);\\n          handled = true;\\n          break;\\n        }\\n      \u002F* falls through *\u002F\\n      case 33: \u002F\u002F pg up\\n        \u002F\u002F vertical scrolling using arrow\u002Fpg keys\\n        if (pdfViewer.isVerticalScrollbarEnabled) {\\n          turnOnlyIfPageFit = true;\\n        }\\n        turnPage = -1;\\n        break;\\n      case 8: \u002F\u002F backspace\\n        if (!isViewerInPresentationMode) {\\n          turnOnlyIfPageFit = true;\\n        }\\n        turnPage = -1;\\n        break;\\n      case 37: \u002F\u002F left arrow\\n        if (this.supportsCaretBrowsingMode) {\\n          return;\\n        }\\n        \u002F\u002F horizontal scrolling using arrow keys\\n        if (pdfViewer.isHorizontalScrollbarEnabled) {\\n          turnOnlyIfPageFit = true;\\n        }\\n      \u002F* falls through *\u002F\\n      case 75: \u002F\u002F 'k'\\n      case 80: \u002F\u002F 'p'\\n        turnPage = -1;\\n        break;\\n      case 27: \u002F\u002F esc key\\n        if (this.secondaryToolbar?.isOpen) {\\n          this.secondaryToolbar.close();\\n          handled = true;\\n        }\\n        if (!this.supportsIntegratedFind && this.findBar?.opened) {\\n          this.findBar.close();\\n          handled = true;\\n        }\\n        break;\\n      case 40: \u002F\u002F down arrow\\n        if (this.supportsCaretBrowsingMode) {\\n          this.moveCaret(\u002F* isUp = *\u002F false, \u002F* select = *\u002F false);\\n          handled = true;\\n          break;\\n        }\\n      \u002F* falls through *\u002F\\n      case 34: \u002F\u002F pg down\\n        \u002F\u002F vertical scrolling using arrow\u002Fpg keys\\n        if (pdfViewer.isVerticalScrollbarEnabled) {\\n          turnOnlyIfPageFit = true;\\n        }\\n        turnPage = 1;\\n        break;\\n      case 13: \u002F\u002F enter key\\n      case 32: \u002F\u002F spacebar\\n        if (!isViewerInPresentationMode) {\\n          turnOnlyIfPageFit = true;\\n        }\\n        turnPage = 1;\\n        break;\\n      case 39: \u002F\u002F right arrow\\n        if (this.supportsCaretBrowsingMode) {\\n          return;\\n        }\\n        \u002F\u002F horizontal scrolling using arrow keys\\n        if (pdfViewer.isHorizontalScrollbarEnabled) {\\n          turnOnlyIfPageFit = true;\\n        }\\n      \u002F* falls through *\u002F\\n      case 74: \u002F\u002F 'j'\\n      case 78: \u002F\u002F 'n'\\n        turnPage = 1;\\n        break;\\n\\n      case 36: \u002F\u002F home\\n        if (isViewerInPresentationMode || this.page > 1) {\\n          this.page = 1;\\n          handled = true;\\n          ensureViewerFocused = true;\\n        }\\n        break;\\n      case 35: \u002F\u002F end\\n        if (isViewerInPresentationMode || this.page \u003C this.pagesCount) {\\n          this.page = this.pagesCount;\\n          handled = true;\\n          ensureViewerFocused = true;\\n        }\\n        break;\\n\\n      case 83: \u002F\u002F 's'\\n        this.pdfCursorTools?.switchTool(CursorTool.SELECT);\\n        break;\\n      case 72: \u002F\u002F 'h'\\n        this.pdfCursorTools?.switchTool(CursorTool.HAND);\\n        break;\\n\\n      case 82: \u002F\u002F 'r'\\n        this.rotatePages(90);\\n        break;\\n\\n      case 115: \u002F\u002F F4\\n        this.pdfSidebar?.toggle();\\n        break;\\n    }\\n\\n    if (\\n      turnPage !== 0 &&\\n      (!turnOnlyIfPageFit || pdfViewer.currentScaleValue === \\\"page-fit\\\")\\n    ) {\\n      if (turnPage > 0) {\\n        pdfViewer.nextPage();\\n      } else {\\n        pdfViewer.previousPage();\\n      }\\n      handled = true;\\n    }\\n  }\\n\\n  \u002F\u002F shift-key\\n  if (cmd === 4) {\\n    switch (evt.keyCode) {\\n      case 13: \u002F\u002F enter key\\n      case 32: \u002F\u002F spacebar\\n        if (\\n          !isViewerInPresentationMode &&\\n          pdfViewer.currentScaleValue !== \\\"page-fit\\\"\\n        ) {\\n          break;\\n        }\\n        pdfViewer.previousPage();\\n\\n        handled = true;\\n        break;\\n\\n      case 38: \u002F\u002F up arrow\\n        this.moveCaret(\u002F* isUp = *\u002F true, \u002F* select = *\u002F true);\\n        handled = true;\\n        break;\\n      case 40: \u002F\u002F down arrow\\n        this.moveCaret(\u002F* isUp = *\u002F false, \u002F* select = *\u002F true);\\n        handled = true;\\n        break;\\n      case 82: \u002F\u002F 'r'\\n        this.rotatePages(-90);\\n        break;\\n    }\\n  }\\n\\n  if (!handled && !isViewerInPresentationMode) {\\n    \u002F\u002F 33=Page Up  34=Page Down  35=End    36=Home\\n    \u002F\u002F 37=Left     38=Up         39=Right  40=Down\\n    \u002F\u002F 32=Spacebar\\n    if (\\n      (evt.keyCode >= 33 && evt.keyCode \u003C= 40) ||\\n      (evt.keyCode === 32 && curElementTagName !== \\\"BUTTON\\\")\\n    ) {\\n      ensureViewerFocused = true;\\n    }\\n  }\\n\\n  if (ensureViewerFocused && !pdfViewer.containsElement(curElement)) {\\n    \u002F\u002F The page container is not focused, but a page navigation key has been\\n    \u002F\u002F pressed. Change the focus to the viewer container to make sure that\\n    \u002F\u002F navigation by keyboard works as expected.\\n    pdfViewer.focus();\\n  }\\n\\n  if (handled) {\\n    evt.preventDefault();\\n  }\\n}\\n\\nfunction beforeUnload(evt) {\\n  evt.preventDefault();\\n  evt.returnValue = \\\"\\\";\\n  return false;\\n}\\n\\nexport { PDFViewerApplication };\\n\",\"\u002F* Copyright 2016 Mozilla Foundation\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n *     http:\u002F\u002Fwww.apache.org\u002Flicenses\u002FLICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n *\u002F\\n\\nimport { RenderingStates, ScrollMode, SpreadMode } from \\\".\u002Fui_utils.js\\\";\\nimport { AppOptions } from \\\".\u002Fapp_options.js\\\";\\nimport { LinkTarget } from \\\".\u002Fpdf_link_service.js\\\";\\nimport { PDFViewerApplication } from \\\".\u002Fapp.js\\\";\\n\\nconst AppConstants =\\n  typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")\\n    ? { LinkTarget, RenderingStates, ScrollMode, SpreadMode }\\n    : null;\\n\\nwindow.PDFViewerApplication = PDFViewerApplication;\\nwindow.PDFViewerApplicationConstants = AppConstants;\\nwindow.PDFViewerApplicationOptions = AppOptions;\\n\\nfunction getViewerConfiguration() {\\n  return {\\n    appContainer: document.body,\\n    principalContainer: document.getElementById(\\\"mainContainer\\\"),\\n    mainContainer: document.getElementById(\\\"viewerContainer\\\"),\\n    viewerContainer: document.getElementById(\\\"viewer\\\"),\\n    toolbar: {\\n      container: document.getElementById(\\\"toolbarContainer\\\"),\\n      numPages: document.getElementById(\\\"numPages\\\"),\\n      pageNumber: document.getElementById(\\\"pageNumber\\\"),\\n      scaleSelect: document.getElementById(\\\"scaleSelect\\\"),\\n      customScaleOption: document.getElementById(\\\"customScaleOption\\\"),\\n      previous: document.getElementById(\\\"previous\\\"),\\n      next: document.getElementById(\\\"next\\\"),\\n      zoomIn: document.getElementById(\\\"zoomInButton\\\"),\\n      zoomOut: document.getElementById(\\\"zoomOutButton\\\"),\\n      print: document.getElementById(\\\"printButton\\\"),\\n      editorFreeTextButton: document.getElementById(\\\"editorFreeTextButton\\\"),\\n      editorFreeTextParamsToolbar: document.getElementById(\\n        \\\"editorFreeTextParamsToolbar\\\"\\n      ),\\n      editorHighlightButton: document.getElementById(\\\"editorHighlightButton\\\"),\\n      editorHighlightParamsToolbar: document.getElementById(\\n        \\\"editorHighlightParamsToolbar\\\"\\n      ),\\n      editorHighlightColorPicker: document.getElementById(\\n        \\\"editorHighlightColorPicker\\\"\\n      ),\\n      editorInkButton: document.getElementById(\\\"editorInkButton\\\"),\\n      editorInkParamsToolbar: document.getElementById(\\\"editorInkParamsToolbar\\\"),\\n      editorStampButton: document.getElementById(\\\"editorStampButton\\\"),\\n      editorStampParamsToolbar: document.getElementById(\\n        \\\"editorStampParamsToolbar\\\"\\n      ),\\n      editorSignatureButton: document.getElementById(\\\"editorSignatureButton\\\"),\\n      editorSignatureParamsToolbar: document.getElementById(\\n        \\\"editorSignatureParamsToolbar\\\"\\n      ),\\n      download: document.getElementById(\\\"downloadButton\\\"),\\n    },\\n    secondaryToolbar: {\\n      toolbar: document.getElementById(\\\"secondaryToolbar\\\"),\\n      toggleButton: document.getElementById(\\\"secondaryToolbarToggleButton\\\"),\\n      presentationModeButton: document.getElementById(\\\"presentationMode\\\"),\\n      openFileButton:\\n        typeof PDFJSDev === \\\"undefined\\\" || PDFJSDev.test(\\\"GENERIC\\\")\\n          ? document.getElementById(\\\"secondaryOpenFile\\\")\\n          : null,\\n      printButton: document.getElementById(\\\"secondaryPrint\\\"),\\n      downloadButton: document.getElementById(\\\"secondaryDownload\\\"),\\n      viewBookmarkButton: document.getElementById(\\\"viewBookmark\\\"),\\n      firstPageButton: document.getElementById(\\\"firstPage\\\"),\\n      lastPageButton: document.getElementById(\\\"lastPage\\\"),\\n      pageRotateCwButton: document.getElementById(\\\"pageRotateCw\\\"),\\n      pageRotateCcwButton: document.getElementById(\\\"pageRotateCcw\\\"),\\n      cursorSelectToolButton: document.getElementById(\\\"cursorSelectTool\\\"),\\n      cursorHandToolButton: document.getElementById(\\\"cursorHandTool\\\"),\\n      scrollPageButton: document.getElementById(\\\"scrollPage\\\"),\\n      scrollVerticalButton: document.getElementById(\\\"scrollVertical\\\"),\\n      scrollHorizontalButton: document.getElementById(\\\"scrollHorizontal\\\"),\\n      scrollWrappedButton: document.getElementById(\\\"scrollWrapped\\\"),\\n      spreadNoneButton: document.getElementById(\\\"spreadNone\\\"),\\n      spreadOddButton: document.getElementById(\\\"spreadOdd\\\"),\\n      spreadEvenButton: document.getElementById(\\\"spreadEven\\\"),\\n      imageAltTextSettingsButton: document.getElementById(\\n        \\\"imageAltTextSettings\\\"\\n      ),\\n      imageAltTextSettingsSeparator: document.getElementById(\\n        \\\"imageAltTextSettingsSeparator\\\"\\n      ),\\n      documentPropertiesButton: document.getElementById(\\\"documentProperties\\\"),\\n    },\\n    sidebar: {\\n      \u002F\u002F Divs (and sidebar button)\\n      outerContainer: document.getElementById(\\\"outerContainer\\\"),\\n      sidebarContainer: document.getElementById(\\\"sidebarContainer\\\"),\\n      toggleButton: document.getElementById(\\\"sidebarToggleButton\\\"),\\n      resizer: document.getElementById(\\\"sidebarResizer\\\"),\\n      \u002F\u002F Buttons\\n      thumbnailButton: document.getElementById(\\\"viewThumbnail\\\"),\\n      outlineButton: document.getElementById(\\\"viewOutline\\\"),\\n      attachmentsButton: document.getElementById(\\\"viewAttachments\\\"),\\n      layersButton: document.getElementById(\\\"viewLayers\\\"),\\n      \u002F\u002F Views\\n      thumbnailView: document.getElementById(\\\"thumbnailView\\\"),\\n      outlineView: document.getElementById(\\\"outlineView\\\"),\\n      attachmentsView: document.getElementById(\\\"attachmentsView\\\"),\\n      layersView: document.getElementById(\\\"layersView\\\"),\\n      \u002F\u002F View-specific options\\n      currentOutlineItemButton: document.getElementById(\\\"currentOutlineItem\\\"),\\n    },\\n    findBar: {\\n      bar: document.getElementById(\\\"findbar\\\"),\\n      toggleButton: document.getElementById(\\\"viewFindButton\\\"),\\n      findField: document.getElementById(\\\"findInput\\\"),\\n      highlightAllCheckbox: document.getElementById(\\\"findHighlightAll\\\"),\\n      caseSensitiveCheckbox: document.getElementById(\\\"findMatchCase\\\"),\\n      matchDiacriticsCheckbox: document.getElementById(\\\"findMatchDiacritics\\\"),\\n      entireWordCheckbox: document.getElementById(\\\"findEntireWord\\\"),\\n      findMsg: document.getElementById(\\\"findMsg\\\"),\\n      findResultsCount: document.getElementById(\\\"findResultsCount\\\"),\\n      findPreviousButton: document.getElementById(\\\"findPreviousButton\\\"),\\n      findNextButton: document.getElementById(\\\"findNextButton\\\"),\\n    },\\n    passwordOverlay: {\\n      dialog: document.getElementById(\\\"passwordDialog\\\"),\\n      label: document.getElementById(\\\"passwordText\\\"),\\n      input: document.getElementById(\\\"password\\\"),\\n      submitButton: document.getElementById(\\\"passwordSubmit\\\"),\\n      cancelButton: document.getElementById(\\\"passwordCancel\\\"),\\n    },\\n    documentProperties: {\\n      dialog: document.getElementById(\\\"documentPropertiesDialog\\\"),\\n      closeButton: document.getElementById(\\\"documentPropertiesClose\\\"),\\n      fields: {\\n        fileName: document.getElementById(\\\"fileNameField\\\"),\\n        fileSize: document.getElementById(\\\"fileSizeField\\\"),\\n        title: document.getElementById(\\\"titleField\\\"),\\n        author: document.getElementById(\\\"authorField\\\"),\\n        subject: document.getElementById(\\\"subjectField\\\"),\\n        keywords: document.getElementById(\\\"keywordsField\\\"),\\n        creationDate: document.getElementById(\\\"creationDateField\\\"),\\n        modificationDate: document.getElementById(\\\"modificationDateField\\\"),\\n        creator: document.getElementById(\\\"creatorField\\\"),\\n        producer: document.getElementById(\\\"producerField\\\"),\\n        version: document.getElementById(\\\"versionField\\\"),\\n        pageCount: document.getElementById(\\\"pageCountField\\\"),\\n        pageSize: document.getElementById(\\\"pageSizeField\\\"),\\n        linearized: document.getElementById(\\\"linearizedField\\\"),\\n      },\\n    },\\n    altTextDialog: {\\n      dialog: document.getElementById(\\\"altTextDialog\\\"),\\n      optionDescription: document.getElementById(\\\"descriptionButton\\\"),\\n      optionDecorative: document.getElementById(\\\"decorativeButton\\\"),\\n      textarea: document.getElementById(\\\"descriptionTextarea\\\"),\\n      cancelButton: document.getElementById(\\\"altTextCancel\\\"),\\n      saveButton: document.getElementById(\\\"altTextSave\\\"),\\n    },\\n    newAltTextDialog: {\\n      dialog: document.getElementById(\\\"newAltTextDialog\\\"),\\n      title: document.getElementById(\\\"newAltTextTitle\\\"),\\n      descriptionContainer: document.getElementById(\\n        \\\"newAltTextDescriptionContainer\\\"\\n      ),\\n      textarea: document.getElementById(\\\"newAltTextDescriptionTextarea\\\"),\\n      disclaimer: document.getElementById(\\\"newAltTextDisclaimer\\\"),\\n      learnMore: document.getElementById(\\\"newAltTextLearnMore\\\"),\\n      imagePreview: document.getElementById(\\\"newAltTextImagePreview\\\"),\\n      createAutomatically: document.getElementById(\\n        \\\"newAltTextCreateAutomatically\\\"\\n      ),\\n      createAutomaticallyButton: document.getElementById(\\n        \\\"newAltTextCreateAutomaticallyButton\\\"\\n      ),\\n      downloadModel: document.getElementById(\\\"newAltTextDownloadModel\\\"),\\n      downloadModelDescription: document.getElementById(\\n        \\\"newAltTextDownloadModelDescription\\\"\\n      ),\\n      error: document.getElementById(\\\"newAltTextError\\\"),\\n      errorCloseButton: document.getElementById(\\\"newAltTextCloseButton\\\"),\\n      cancelButton: document.getElementById(\\\"newAltTextCancel\\\"),\\n      notNowButton: document.getElementById(\\\"newAltTextNotNow\\\"),\\n      saveButton: document.getElementById(\\\"newAltTextSave\\\"),\\n    },\\n    altTextSettingsDialog: {\\n      dialog: document.getElementById(\\\"altTextSettingsDialog\\\"),\\n      createModelButton: document.getElementById(\\\"createModelButton\\\"),\\n      aiModelSettings: document.getElementById(\\\"aiModelSettings\\\"),\\n      learnMore: document.getElementById(\\\"altTextSettingsLearnMore\\\"),\\n      deleteModelButton: document.getElementById(\\\"deleteModelButton\\\"),\\n      downloadModelButton: document.getElementById(\\\"downloadModelButton\\\"),\\n      showAltTextDialogButton: document.getElementById(\\n        \\\"showAltTextDialogButton\\\"\\n      ),\\n      altTextSettingsCloseButton: document.getElementById(\\n        \\\"altTextSettingsCloseButton\\\"\\n      ),\\n      closeButton: document.getElementById(\\\"altTextSettingsCloseButton\\\"),\\n    },\\n    addSignatureDialog: {\\n      dialog: document.getElementById(\\\"addSignatureDialog\\\"),\\n      panels: document.getElementById(\\\"addSignatureActionContainer\\\"),\\n      typeButton: document.getElementById(\\\"addSignatureTypeButton\\\"),\\n      typeInput: document.getElementById(\\\"addSignatureTypeInput\\\"),\\n      drawButton: document.getElementById(\\\"addSignatureDrawButton\\\"),\\n      drawSVG: document.getElementById(\\\"addSignatureDraw\\\"),\\n      drawPlaceholder: document.getElementById(\\\"addSignatureDrawPlaceholder\\\"),\\n      drawThickness: document.getElementById(\\\"addSignatureDrawThickness\\\"),\\n      imageButton: document.getElementById(\\\"addSignatureImageButton\\\"),\\n      imageSVG: document.getElementById(\\\"addSignatureImage\\\"),\\n      imagePlaceholder: document.getElementById(\\\"addSignatureImagePlaceholder\\\"),\\n      imagePicker: document.getElementById(\\\"addSignatureFilePicker\\\"),\\n      imagePickerLink: document.getElementById(\\\"addSignatureImageBrowse\\\"),\\n      description: document.getElementById(\\\"addSignatureDescription\\\"),\\n      clearButton: document.getElementById(\\\"clearSignatureButton\\\"),\\n      saveContainer: document.getElementById(\\\"addSignatureSaveContainer\\\"),\\n      saveCheckbox: document.getElementById(\\\"addSignatureSaveCheckbox\\\"),\\n      errorBar: document.getElementById(\\\"addSignatureError\\\"),\\n      errorCloseButton: document.getElementById(\\\"addSignatureErrorCloseButton\\\"),\\n      cancelButton: document.getElementById(\\\"addSignatureCancelButton\\\"),\\n      addButton: document.getElementById(\\\"addSignatureAddButton\\\"),\\n    },\\n    editSignatureDialog: {\\n      dialog: document.getElementById(\\\"editSignatureDescriptionDialog\\\"),\\n      description: document.getElementById(\\\"editSignatureDescription\\\"),\\n      editSignatureView: document.getElementById(\\\"editSignatureView\\\"),\\n      cancelButton: document.getElementById(\\\"editSignatureCancelButton\\\"),\\n      updateButton: document.getElementById(\\\"editSignatureUpdateButton\\\"),\\n    },\\n    annotationEditorParams: {\\n      editorFreeTextFontSize: document.getElementById(\\\"editorFreeTextFontSize\\\"),\\n      editorFreeTextColor: document.getElementById(\\\"editorFreeTextColor\\\"),\\n      editorInkColor: document.getElementById(\\\"editorInkColor\\\"),\\n      editorInkThickness: document.getElementById(\\\"editorInkThickness\\\"),\\n      editorInkOpacity: document.getElementById(\\\"editorInkOpacity\\\"),\\n      editorStampAddImage: document.getElementById(\\\"editorStampAddImage\\\"),\\n      editorSignatureAddSignature: document.getElementById(\\n        \\\"editorSignatureAddSignature\\\"\\n      ),\\n      editorFreeHighlightThickness: document.getElementById(\\n        \\\"editorFreeHighlightThickness\\\"\\n      ),\\n      editorHighlightShowAll: document.getElementById(\\\"editorHighlightShowAll\\\"),\\n    },\\n    printContainer: document.getElementById(\\\"printContainer\\\"),\\n    editorUndoBar: {\\n      container: document.getElementById(\\\"editorUndoBar\\\"),\\n      message: document.getElementById(\\\"editorUndoBarMessage\\\"),\\n      undoButton: document.getElementById(\\\"editorUndoBarUndoButton\\\"),\\n      closeButton: document.getElementById(\\\"editorUndoBarCloseButton\\\"),\\n    },\\n  };\\n}\\n\\nfunction webViewerLoad() {\\n  const config = getViewerConfiguration();\\n\\n  if (typeof PDFJSDev !== \\\"undefined\\\" && PDFJSDev.test(\\\"GENERIC\\\")) {\\n    \u002F\u002F Give custom implementations of the default viewer a simpler way to\\n    \u002F\u002F set various `AppOptions`, by dispatching an event once all viewer\\n    \u002F\u002F files are loaded but *before* the viewer initialization has run.\\n    const event = new CustomEvent(\\\"webviewerloaded\\\", {\\n      bubbles: true,\\n      cancelable: true,\\n      detail: {\\n        source: window,\\n      },\\n    });\\n    try {\\n      \u002F\u002F Attempt to dispatch the event at the embedding `document`,\\n      \u002F\u002F in order to support cases where the viewer is embedded in\\n      \u002F\u002F a *dynamically* created \u003Ciframe> element.\\n      parent.document.dispatchEvent(event);\\n    } catch (ex) {\\n      \u002F\u002F The viewer could be in e.g. a cross-origin \u003Ciframe> element,\\n      \u002F\u002F fallback to dispatching the event at the current `document`.\\n      console.error(\\\"webviewerloaded:\\\", ex);\\n      document.dispatchEvent(event);\\n    }\\n  }\\n  PDFViewerApplication.run(config);\\n}\\n\\n\u002F\u002F Block the \\\"load\\\" event until all pages are loaded, to ensure that printing\\n\u002F\u002F works in Firefox; see https:\u002F\u002Fbugzilla.mozilla.org\u002Fshow_bug.cgi?id=1618553\\ndocument.blockUnblockOnload?.(true);\\n\\nif (\\n  document.readyState === \\\"interactive\\\" ||\\n  document.readyState === \\\"complete\\\"\\n) {\\n  webViewerLoad();\\n} else {\\n  document.addEventListener(\\\"DOMContentLoaded\\\", webViewerLoad, true);\\n}\\n\\nexport {\\n  PDFViewerApplication,\\n  AppConstants as PDFViewerApplicationConstants,\\n  AppOptions as PDFViewerApplicationOptions,\\n};\\n\"],\"names\":[\"AbortException\",\"AnnotationEditorLayer\",\"AnnotationEditorParamsType\",\"AnnotationEditorType\",\"AnnotationEditorUIManager\",\"AnnotationLayer\",\"AnnotationMode\",\"AnnotationType\",\"build\",\"ColorPicker\",\"createValidAbsoluteUrl\",\"DOMSVGFactory\",\"DrawLayer\",\"FeatureTest\",\"fetchData\",\"getDocument\",\"getFilenameFromUrl\",\"getPdfFilenameFromUrl\",\"getUuid\",\"getXfaPageViewport\",\"GlobalWorkerOptions\",\"ImageKind\",\"InvalidPDFException\",\"isDataScheme\",\"isPdfFile\",\"isValidExplicitDest\",\"MathClamp\",\"noContextMenu\",\"normalizeUnicode\",\"OPS\",\"OutputScale\",\"PasswordResponses\",\"PDFDataRangeTransport\",\"PDFDateString\",\"PDFWorker\",\"PermissionFlag\",\"PixelsPerInch\",\"RenderingCancelledException\",\"ResponseException\",\"setLayerDimensions\",\"shadow\",\"SignatureExtractor\",\"stopEvent\",\"SupportedImageMimeTypes\",\"TextLayer\",\"TouchManager\",\"updateUrlHash\",\"Util\",\"VerbosityLevel\",\"version\",\"XfaLayer\",\"globalThis\",\"pdfjsLib\",\"DEFAULT_SCALE_VALUE\",\"DEFAULT_SCALE\",\"DEFAULT_SCALE_DELTA\",\"MIN_SCALE\",\"MAX_SCALE\",\"UNKNOWN_SCALE\",\"MAX_AUTO_SCALE\",\"SCROLLBAR_PADDING\",\"VERTICAL_PADDING\",\"RenderingStates\",\"INITIAL\",\"RUNNING\",\"PAUSED\",\"FINISHED\",\"PresentationModeState\",\"UNKNOWN\",\"NORMAL\",\"CHANGING\",\"FULLSCREEN\",\"SidebarView\",\"NONE\",\"THUMBS\",\"OUTLINE\",\"ATTACHMENTS\",\"LAYERS\",\"TextLayerMode\",\"DISABLE\",\"ENABLE\",\"ENABLE_PERMISSIONS\",\"ScrollMode\",\"VERTICAL\",\"HORIZONTAL\",\"WRAPPED\",\"PAGE\",\"SpreadMode\",\"ODD\",\"EVEN\",\"CursorTool\",\"SELECT\",\"HAND\",\"ZOOM\",\"AutoPrintRegExp\",\"scrollIntoView\",\"element\",\"spot\",\"scrollMatches\",\"parent\",\"offsetParent\",\"console\",\"error\",\"offsetY\",\"offsetTop\",\"clientTop\",\"offsetX\",\"offsetLeft\",\"clientLeft\",\"clientHeight\",\"scrollHeight\",\"clientWidth\",\"scrollWidth\",\"classList\",\"contains\",\"getComputedStyle\",\"overflow\",\"top\",\"undefined\",\"left\",\"scrollLeft\",\"scrollTop\",\"watchScroll\",\"viewAreaElement\",\"callback\",\"abortSignal\",\"debounceScroll\",\"evt\",\"rAF\",\"window\",\"requestAnimationFrame\",\"viewAreaElementScrolled\",\"currentX\",\"lastX\",\"state\",\"right\",\"currentY\",\"lastY\",\"down\",\"_eventHandler\",\"addEventListener\",\"useCapture\",\"signal\",\"cancelAnimationFrame\",\"once\",\"parseQueryString\",\"query\",\"params\",\"Map\",\"key\",\"value\",\"URLSearchParams\",\"set\",\"toLowerCase\",\"InvisibleCharsRegExp\",\"removeNullCharacters\",\"str\",\"replaceInvisible\",\"test\",\"replaceAll\",\"m\",\"binarySearchFirstItem\",\"items\",\"condition\",\"start\",\"minIndex\",\"maxIndex\",\"length\",\"currentIndex\",\"currentItem\",\"approximateFraction\",\"x\",\"Math\",\"floor\",\"xinv\",\"limit\",\"x_\",\"a\",\"b\",\"c\",\"d\",\"p\",\"q\",\"result\",\"floorToDivide\",\"div\",\"getPageSizeInches\",\"view\",\"userUnit\",\"rotate\",\"x1\",\"y1\",\"x2\",\"y2\",\"changeOrientation\",\"width\",\"height\",\"backtrackBeforeAllVisibleElements\",\"index\",\"views\",\"elt\",\"pageTop\",\"i\",\"getVisibleElements\",\"scrollEl\",\"sortByVisibility\",\"horizontal\",\"rtl\",\"bottom\",\"isElementBottomAfterViewTop\",\"elementBottom\",\"isElementNextAfterViewHorizontally\",\"elementLeft\",\"elementRight\",\"visible\",\"ids\",\"Set\",\"numViews\",\"firstVisibleElementInd\",\"lastEdge\",\"currentWidth\",\"currentHeight\",\"viewWidth\",\"viewHeight\",\"viewRight\",\"viewBottom\",\"minY\",\"max\",\"minX\",\"hiddenHeight\",\"hiddenWidth\",\"fractionHeight\",\"fractionWidth\",\"percent\",\"push\",\"id\",\"y\",\"visibleArea\",\"maxX\",\"min\",\"maxY\",\"widthPercent\",\"add\",\"first\",\"last\",\"at\",\"sort\",\"pc\",\"abs\",\"normalizeWheelEventDirection\",\"delta\",\"hypot\",\"deltaX\",\"deltaY\",\"angle\",\"atan2\",\"PI\",\"normalizeWheelEventDelta\",\"deltaMode\",\"MOUSE_PIXELS_PER_LINE\",\"MOUSE_LINES_PER_PAGE\",\"WheelEvent\",\"DOM_DELTA_PIXEL\",\"DOM_DELTA_LINE\",\"isValidRotation\",\"Number\",\"isInteger\",\"isValidScrollMode\",\"mode\",\"Object\",\"values\",\"includes\",\"isValidSpreadMode\",\"isPortraitOrientation\",\"size\",\"animationStarted\",\"Promise\",\"resolve\",\"docStyle\",\"document\",\"documentElement\",\"style\",\"ProgressBar\",\"disableAutoFetchTimeout\",\"constructor\",\"bar\",\"val\",\"isNaN\",\"remove\",\"setProperty\",\"setWidth\",\"viewer\",\"container\",\"parentNode\",\"scrollbarWidth\",\"offsetWidth\",\"setDisableAutoFetch\",\"delay\",\"clearTimeout\",\"show\",\"setTimeout\",\"hide\",\"getActiveOrFocusedElement\",\"curRoot\",\"curActiveOrFocused\",\"activeElement\",\"querySelector\",\"shadowRoot\",\"apiPageLayoutToViewerModes\",\"layout\",\"scrollMode\",\"spreadMode\",\"apiPageModeToSidebarView\",\"toggleCheckedBtn\",\"button\",\"toggle\",\"setAttribute\",\"toggleExpandedBtn\",\"calcRound\",\"e\",\"createElement\",\"fround\",\"compatParams\",\"maxTouchPoints\",\"platform\",\"userAgent\",\"navigator\",\"isAndroid\",\"isIOS\",\"OptionKind\",\"BROWSER\",\"VIEWER\",\"API\",\"WORKER\",\"EVENT_DISPATCH\",\"PREFERENCE\",\"Type\",\"BOOLEAN\",\"NUMBER\",\"OBJECT\",\"STRING\",\"UNDEFINED\",\"defaultOptions\",\"allowedGlobalEvents\",\"kind\",\"canvasMaxAreaInBytes\",\"isInAutomation\",\"localeProperties\",\"lang\",\"language\",\"maxCanvasDim\",\"nimbusDataStr\",\"supportsCaretBrowsingMode\",\"supportsDocumentFonts\",\"supportsIntegratedFind\",\"supportsMouseWheelZoomCtrlKey\",\"supportsMouseWheelZoomMetaKey\",\"supportsPinchToZoom\",\"supportsPrinting\",\"toolbarDensity\",\"altTextLearnMoreUrl\",\"annotationEditorMode\",\"annotationMode\",\"capCanvasAreaFactor\",\"cursorToolOnLoad\",\"debuggerSrc\",\"defaultZoomDelay\",\"defaultZoomValue\",\"disableHistory\",\"disablePageLabels\",\"enableAltText\",\"enableAltTextModelDownload\",\"enableAutoLinking\",\"enableDetailCanvas\",\"enableGuessAltText\",\"enableHighlightFloatingButton\",\"enableNewAltTextWhenAddingImage\",\"enablePermissions\",\"enablePrintAutoRotate\",\"enableScripting\",\"enableSignatureEditor\",\"enableUpdatedAddImage\",\"externalLinkRel\",\"externalLinkTarget\",\"highlightEditorColors\",\"historyUpdateUrl\",\"ignoreDestinationZoom\",\"imageResourcesPath\",\"maxCanvasPixels\",\"minDurationToUpdateCanvas\",\"forcePageColors\",\"pageColorsBackground\",\"pageColorsForeground\",\"pdfBugEnabled\",\"printResolution\",\"sidebarViewOnLoad\",\"scrollModeOnLoad\",\"spreadModeOnLoad\",\"textLayerMode\",\"viewerCssTheme\",\"viewOnLoad\",\"cMapPacked\",\"cMapUrl\",\"disableAutoFetch\",\"disableFontFace\",\"disableRange\",\"disableStream\",\"docBaseUrl\",\"enableHWA\",\"enableXfa\",\"fontExtraProperties\",\"iccUrl\",\"isEvalSupported\",\"isOffscreenCanvasSupported\",\"maxImageSize\",\"pdfBug\",\"standardFontDataUrl\",\"useSystemFonts\",\"type\",\"verbosity\",\"wasmUrl\",\"workerPort\",\"workerSrc\",\"defaultUrl\",\"sandboxBundleSrc\",\"enableFakeMLManager\",\"disablePreferences\",\"AppOptions\",\"eventBus\",\"opts\",\"name\",\"_hasInvokedSet\",\"_checkDisablePreferences\",\"get\",\"warn\",\"getAll\",\"defaultOnly\",\"options\",\"create\",\"defaultOpt\",\"setAll\",\"prefs\",\"events\",\"userOpt\",\"toUpperCase\",\"dispatch\",\"source\",\"DEFAULT_LINK_REL\",\"LinkTarget\",\"SELF\",\"BLANK\",\"PARENT\",\"TOP\",\"PDFLinkService\",\"externalLinkEnabled\",\"_ignoreDestinationZoom\",\"baseUrl\",\"pdfDocument\",\"pdfViewer\",\"pdfHistory\",\"setDocument\",\"setViewer\",\"setHistory\",\"pagesCount\",\"numPages\",\"page\",\"currentPageNumber\",\"rotation\",\"pagesRotation\",\"isInPresentationMode\",\"goToDestination\",\"dest\",\"namedDest\",\"explicitDest\",\"pageNumber\",\"getDestination\",\"Array\",\"isArray\",\"destRef\",\"cachedPageNumber\",\"getPageIndex\",\"pushCurrentPosition\",\"scrollPageIntoView\",\"destArray\",\"goToPage\",\"pageLabelToPageNumber\",\"pushPage\",\"addLinkAttributes\",\"link\",\"url\",\"newWindow\",\"Error\",\"target\",\"rel\",\"href\",\"title\",\"onclick\",\"targetStr\",\"getDestinationHash\",\"getAnchorUrl\",\"escape\",\"JSON\",\"stringify\",\"anchor\",\"setHash\",\"hash\",\"has\",\"phrase\",\"match\",\"zoomArgs\",\"split\",\"zoomArg\",\"zoomArgNumber\",\"parseFloat\",\"allowNegativeOffset\",\"unescape\",\"parse\",\"toString\",\"executeNamedAction\",\"action\",\"back\",\"forward\",\"nextPage\",\"previousPage\",\"executeSetOCGState\",\"optionalContentConfig\",\"optionalContentConfigPromise\",\"setOCGState\",\"SimpleLinkService\",\"WaitOnType\",\"EVENT\",\"TIMEOUT\",\"waitOnEventOrTimeout\",\"promise\",\"withResolvers\",\"ac\",\"AbortController\",\"handler\",\"abort\",\"timeout\",\"evtMethod\",\"EventBus\",\"bind\",\"listeners\",\"on\",\"eventName\",\"listener\",\"_on\",\"external\",\"off\",\"_off\",\"data\",\"eventListeners\",\"externalListeners\",\"slice\",\"rmAbort\",\"AbortSignal\",\"aborted\",\"onAbort\",\"removeEventListener\",\"ii\",\"splice\",\"FirefoxEventBus\",\"externalServices\",\"globalEventNames\",\"BaseExternalServices\",\"updateFindControlState\",\"updateFindMatchesCount\",\"initPassiveLoading\",\"reportTelemetry\",\"createL10n\",\"createScripting\",\"createSignatureStorage\",\"updateEditorStates\",\"dispatchGlobalEvent\",\"_event\",\"BasePreferences\",\"defaults\",\"freeze\",\"initializedPromise\",\"_readFromStorage\",\"then\",\"browserPrefs\",\"_writeToStorage\",\"prefObj\",\"reset\",\"FluentType\",\"valueOf\",\"FluentNone\",\"scope\",\"FluentNumber\",\"nf\",\"memoizeIntlObject\",\"Intl\",\"NumberFormat\",\"format\",\"err\",\"reportError\",\"FluentDateTime\",\"supportsValue\",\"Date\",\"_Temporal\",\"Temporal\",\"Instant\",\"PlainDateTime\",\"PlainDate\",\"PlainMonthDay\",\"PlainTime\",\"PlainYearMonth\",\"calendar\",\"calendarId\",\"Symbol\",\"toPrimitive\",\"hint\",\"toNumber\",\"getTime\",\"epochMilliseconds\",\"toZonedDateTime\",\"TypeError\",\"dtf\",\"DateTimeFormat\",\"toISOString\",\"MAX_PLACEABLES\",\"FSI\",\"PDI\",\"selector\",\"category\",\"PluralRules\",\"select\",\"getDefault\",\"variants\",\"star\",\"resolvePattern\",\"RangeError\",\"getArguments\",\"args\",\"positional\",\"named\",\"arg\",\"resolveExpression\",\"expr\",\"minimumFractionDigits\",\"precision\",\"resolveVariableReference\",\"resolveMessageReference\",\"resolveTermReference\",\"resolveFunctionReference\",\"resolveSelectExpression\",\"prototype\",\"hasOwnProperty\",\"call\",\"ReferenceError\",\"attr\",\"message\",\"bundle\",\"_messages\",\"attribute\",\"attributes\",\"term\",\"_terms\",\"resolved\",\"func\",\"_functions\",\"sel\",\"variant\",\"resolveComplexPattern\",\"ptn\",\"dirty\",\"useIsolating\",\"_useIsolating\",\"elem\",\"_transform\",\"placeables\",\"delete\",\"join\",\"Scope\",\"errors\",\"WeakSet\",\"ctor\",\"cache\",\"_intls\",\"locales\",\"allowed\",\"unwrapped\",\"opt\",\"entries\",\"NUMBER_ALLOWED\",\"DATETIME_ALLOWED\",\"DATETIME\",\"getMemoizerForLocale\",\"stringLocale\",\"memoizer\",\"FluentBundle\",\"functions\",\"transform\",\"v\",\"hasMessage\",\"getMessage\",\"addResource\",\"res\",\"allowOverrides\",\"body\",\"entry\",\"startsWith\",\"formatPattern\",\"pattern\",\"RE_MESSAGE_START\",\"RE_ATTRIBUTE_START\",\"RE_VARIANT_START\",\"RE_NUMBER_LITERAL\",\"RE_IDENTIFIER\",\"RE_REFERENCE\",\"RE_FUNCTION_NAME\",\"RE_TEXT_RUN\",\"RE_STRING_RUN\",\"RE_STRING_ESCAPE\",\"RE_UNICODE_ESCAPE\",\"RE_LEADING_NEWLINES\",\"RE_TRAILING_SPACES\",\"RE_BLANK_LINES\",\"RE_INDENT\",\"TOKEN_BRACE_OPEN\",\"TOKEN_BRACE_CLOSE\",\"TOKEN_BRACKET_OPEN\",\"TOKEN_BRACKET_CLOSE\",\"TOKEN_PAREN_OPEN\",\"TOKEN_ARROW\",\"TOKEN_COLON\",\"TOKEN_COMMA\",\"TOKEN_BLANK\",\"FluentResource\",\"lastIndex\",\"cursor\",\"next\",\"exec\",\"parseMessage\",\"SyntaxError\",\"re\",\"consumeChar\",\"char\",\"errorClass\",\"consumeToken\",\"match1\",\"parsePattern\",\"parseAttributes\",\"keys\",\"attrs\",\"parsePatternElements\",\"Infinity\",\"indent\",\"parseIndent\",\"trim\",\"elements\",\"commonIndent\",\"parsePlaceable\",\"lastElement\",\"baked\",\"Indent\",\"parseInlineExpression\",\"parseVariants\",\"sigil\",\"parseArguments\",\"parseLiteral\",\"parseArgument\",\"count\",\"parseVariantKey\",\"parseNumberLiteral\",\"parseStringLiteral\",\"fraction\",\"parseEscapeSequence\",\"codepoint4\",\"codepoint6\",\"codepoint\",\"parseInt\",\"String\",\"fromCodePoint\",\"makeIndent\",\"text\",\"replace\",\"blank\",\"reOverlay\",\"TEXT_LEVEL_ELEMENTS\",\"LOCALIZABLE_ATTRIBUTES\",\"global\",\"area\",\"input\",\"menuitem\",\"menu\",\"optgroup\",\"option\",\"track\",\"img\",\"textarea\",\"th\",\"description\",\"label\",\"textbox\",\"translateElement\",\"translation\",\"localName\",\"namespaceURI\",\"textContent\",\"templateElement\",\"ownerDocument\",\"createElementNS\",\"innerHTML\",\"overlayChildNodes\",\"content\",\"overlayAttributes\",\"fromFragment\",\"toElement\",\"childNode\",\"childNodes\",\"nodeType\",\"TEXT_NODE\",\"hasAttribute\",\"sanitized\",\"getNodeForNamedElement\",\"replaceChild\",\"isElementAllowed\",\"createSanitizedElement\",\"createTextNodeFromTextContent\",\"appendChild\",\"fromElement\",\"explicitlyAllowed\",\"getAttribute\",\"map\",\"from\",\"isAttrNameLocalizable\",\"removeAttribute\",\"sourceElement\",\"translatedChild\",\"childName\",\"sourceChild\",\"removeChild\",\"clone\",\"cloneNode\",\"shallowPopulateUsing\",\"createTextNode\",\"attrName\",\"elemName\",\"CachedIterable\",\"iterable\",\"CachedSyncIterable\",\"iterator\",\"cached\",\"cur\",\"touchNext\",\"idx\",\"done\",\"CachedAsyncIterable\",\"asyncIterator\",\"default\",\"Localization\",\"resourceIds\",\"generateBundles\",\"onChange\",\"addResourceIds\",\"eager\",\"removeResourceIds\",\"filter\",\"r\",\"formatWithFallback\",\"method\",\"translations\",\"hasAtLeastOneBundle\",\"bundles\",\"missingIds\",\"keysFromBundle\",\"locale\",\"formatMessages\",\"messageFromBundle\",\"formatValues\",\"valueFromBundle\",\"formatValue\",\"handleEvent\",\"formatted\",\"attrNames\",\"messageErrors\",\"forEach\",\"L10NID_ATTR_NAME\",\"L10NARGS_ATTR_NAME\",\"L10N_ELEMENT_QUERY\",\"DOMLocalization\",\"roots\",\"pendingrAF\",\"pendingElements\",\"windowElement\",\"mutationObserver\",\"observerConfig\",\"characterData\",\"childList\",\"subtree\",\"attributeFilter\",\"translateRoots\",\"setAttributes\",\"getAttributes\",\"connectRoot\",\"newRoot\",\"root\",\"defaultView\",\"MutationObserver\",\"mutations\",\"translateMutations\",\"observe\",\"disconnectRoot\",\"pauseObserving\",\"clear\",\"resumeObserving\",\"all\",\"translateFragment\",\"takeRecords\",\"disconnect\",\"mutation\",\"addedNode\",\"addedNodes\",\"ELEMENT_NODE\",\"childElementCount\",\"getTranslatables\",\"translateElements\",\"frag\",\"getKeysForElement\",\"applyTranslations\",\"nodes\",\"querySelectorAll\",\"L10n\",\"dir\",\"l10n\",\"isRTL\",\"fixupLangCode\",\"_setL10n\",\"getLanguage\",\"getDirection\",\"fallback\",\"messages\",\"translate\",\"translateOnce\",\"ex\",\"destroy\",\"pause\",\"resume\",\"#fixupLangCode\",\"langCode\",\"PARTIAL_LANG_CODES\",\"en\",\"es\",\"fy\",\"ga\",\"gu\",\"hi\",\"hy\",\"nb\",\"ne\",\"nn\",\"pa\",\"pt\",\"sv\",\"zh\",\"#isRTL\",\"shortCode\",\"GenericL10n\",\"PLATFORM\",\"isLinux\",\"isMac\",\"isWindows\",\"createBundle\",\"resource\",\"generateBundlesFallback\",\"#generateBundles\",\"defaultLang\",\"baseLang\",\"baseURL\",\"paths\",\"getPaths\",\"langs\",\"shortLang\",\"bundlePromise\",\"createBundleFallback\",\"#createBundle\",\"path\",\"URL\",\"#getPaths\",\"substring\",\"lastIndexOf\",\"#generateBundlesFallback\",\"#createBundleFallback\",\"docProperties\",\"info\",\"metadata\",\"contentDispositionFilename\",\"contentLength\",\"getMetadata\",\"filesize\",\"getDownloadInfo\",\"filename\",\"getRaw\",\"authors\",\"GenericScripting\",\"_ready\",\"reject\",\"sandbox\",\"pdfjsSandbox\",\"QuickJSSandbox\",\"catch\",\"createSandbox\",\"dispatchEventInSandbox\",\"event\",\"dispatchEvent\",\"destroySandbox\",\"nukeSandbox\",\"KEY_STORAGE\",\"SignatureStorage\",\"signatures\",\"save\",\"#save\",\"localStorage\",\"setItem\",\"fromEntries\",\"getItem\",\"isFull\",\"uuid\",\"initCom\",\"app\",\"Preferences\",\"ExternalServices\",\"MLManager\",\"isEnabledFor\",\"_name\",\"deleteModel\",\"_service\",\"isReady\",\"guess\",\"_data\",\"toggleService\",\"_enabled\",\"NewAltTextManager\",\"boundCancel\",\"cancel\",\"createAutomaticallyButton\",\"currentEditor\",\"cancelButton\",\"descriptionContainer\",\"dialog\",\"disclaimer\",\"downloadModel\",\"downloadModelDescription\",\"firstTime\",\"guessedAltText\",\"hasAI\",\"isEditing\",\"imagePreview\",\"imageData\",\"isAILoading\",\"wasAILoading\",\"learnMore\",\"notNowButton\",\"overlayManager\",\"uiManager\",\"previousAltText\",\"saveButton\",\"errorCloseButton\",\"close\",\"preventDefault\",\"toggleError\",\"checked\",\"_reportTelemetry\",\"status\",\"setPreference\",\"mlManager\",\"toggleGuessAltText\",\"toggleLoading\",\"toggleTitleAndDisclaimer\",\"register\",\"topic\",\"#toggleLoading\",\"#toggleError\",\"#toggleGuessAltText\",\"isInitial\",\"mlGuessAltText\",\"toggleNotNow\",\"#toggleNotNow\",\"toggleAI\",\"#toggleAI\",\"#toggleTitleAndDisclaimer\",\"hidden\",\"#mlGuessAltText\",\"addAltText\",\"hasError\",\"altText\",\"#addAltText\",\"setProgress\",\"#setProgress\",\"detail\",\"finished\",\"total\",\"totalLoaded\",\"ONE_MEGA_BYTES\",\"totalSize\",\"ariaValueMax\",\"round\",\"downloadedSize\",\"ariaValueNow\",\"editAltText\",\"editor\",\"hasAltTextData\",\"altTextFinish\",\"hasProgress\",\"isAltTextEnabledPromise\",\"removeEditListeners\",\"altTextData\",\"AI_MAX_IMAGE_DIMENSION\",\"MAX_PREVIEW_DIMENSION\",\"canvas\",\"copyCanvas\",\"append\",\"open\",\"#cancel\",\"alt_text_type\",\"flow\",\"alt_text_modal\",\"finish\",\"#finish\",\"closeIfActive\",\"#close\",\"firstChild\",\"addEditListeners\",\"setSelected\",\"extractWords\",\"#extractWords\",\"decorative\",\"guessedWords\",\"words\",\"total_words\",\"words_removed\",\"difference\",\"words_added\",\"ImageAltTextSettings\",\"aiModelSettings\",\"createModelButton\",\"downloadModelButton\",\"showAltTextDialogButton\",\"closeButton\",\"deleteModelButton\",\"togglePref\",\"download\",\"#reportTelemetry\",\"details\",\"#download\",\"isFromUI\",\"disabled\",\"span\",\"setPref\",\"#delete\",\"#togglePref\",\"#setPref\",\"AltTextManager\",\"clickAC\",\"hasUsedPointer\",\"optionDescription\",\"optionDecorative\",\"resizeAC\",\"svgElement\",\"rectElement\",\"telemetryData\",\"onUpdateUIState\",\"updateUIState\",\"createSVGElement\",\"#createSVGElement\",\"svgFactory\",\"svg\",\"defs\",\"mask\",\"rect\",\"clickOpts\",\"onClick\",\"setPosition\",\"#setPosition\",\"containerX\",\"containerY\",\"containerW\",\"containerH\",\"getBoundingClientRect\",\"innerWidth\",\"windowW\",\"innerHeight\",\"windowH\",\"dialogW\",\"dialogH\",\"getClientDimensions\",\"MARGIN\",\"isLTR\",\"direction\",\"xs\",\"xe\",\"ys\",\"ye\",\"alt_text_keyboard\",\"removeOnClickListeners\",\"#updateUIState\",\"alt_text_description\",\"alt_text_edit\",\"alt_text_decorative\",\"#onClick\",\"#removeOnClickListeners\",\"AnnotationEditorParams\",\"bindListeners\",\"#bindListeners\",\"editorFreeTextFontSize\",\"editorFreeTextColor\",\"editorInkColor\",\"editorInkThickness\",\"editorInkOpacity\",\"editorStampAddImage\",\"editorFreeHighlightThickness\",\"editorHighlightShowAll\",\"editorSignatureAddSignature\",\"typeStr\",\"valueAsNumber\",\"FREETEXT_SIZE\",\"FREETEXT_COLOR\",\"INK_COLOR\",\"INK_THICKNESS\",\"INK_OPACITY\",\"HIGHLIGHT_DEFAULT_COLOR\",\"HIGHLIGHT_THICKNESS\",\"HIGHLIGHT_FREE\",\"HIGHLIGHT_SHOW_ALL\",\"PRECISION\",\"CaretBrowsingMode\",\"mainContainer\",\"toolBarHeight\",\"viewerContainer\",\"toolbarContainer\",\"toolbarObserver\",\"ResizeObserver\",\"borderBoxSize\",\"blockSize\",\"isOnSameLine\",\"#isOnSameLine\",\"rect1\",\"rect2\",\"top1\",\"bot1\",\"mid1\",\"top2\",\"bot2\",\"mid2\",\"isUnderOver\",\"#isUnderOver\",\"isUp\",\"midY\",\"isVisible\",\"#isVisible\",\"getCaretPosition\",\"#getCaretPosition\",\"selection\",\"focusNode\",\"focusOffset\",\"range\",\"createRange\",\"setStart\",\"setEnd\",\"caretPositionFromPoint\",\"#caretPositionFromPoint\",\"startContainer\",\"offsetNode\",\"startOffset\",\"offset\",\"caretRangeFromPoint\",\"setCaretPositionHelper\",\"#setCaretPositionHelper\",\"caretX\",\"extend\",\"lastChild\",\"caretPosition\",\"parentElement\",\"elementsAtPoint\",\"elementsFromPoint\",\"savedVisibilities\",\"el\",\"visibility\",\"setCaretPosition\",\"#setCaretPosition\",\"newLineElement\",\"newLineElementRect\",\"getNodeOnNextPage\",\"#getNodeOnNextPage\",\"textLayer\",\"closest\",\"walker\",\"createTreeWalker\",\"NodeFilter\",\"SHOW_TEXT\",\"node\",\"moveCaret\",\"getSelection\",\"rangeCount\",\"focusElement\",\"Node\",\"currentNode\",\"focusRect\",\"nodeIterator\",\"previousSibling\",\"nextSibling\",\"lastNode\",\"addRange\",\"caretY\",\"elementRect\",\"blobUrl\",\"click\",\"DownloadManager\",\"openBlobUrls\",\"WeakMap\",\"downloadData\",\"contentType\",\"createObjectURL\",\"Blob\",\"openOrDownloadData\",\"isPdfData\",\"viewerUrl\",\"encodeURIComponent\",\"revokeObjectURL\",\"EditorUndoBar\",\"focusTimeout\",\"initController\",\"isOpen\",\"showController\",\"undoButton\",\"l10nMessages\",\"highlight\",\"freetext\",\"stamp\",\"ink\",\"signature\",\"_multiple\",\"undoAction\",\"messageData\",\"boundHide\",\"focus\",\"OverlayManager\",\"overlays\",\"active\",\"canForceClose\",\"showModal\",\"PasswordPrompt\",\"activeCapability\",\"updateCallback\",\"reason\",\"isViewerEmbedded\",\"submitButton\",\"_isViewerEmbedded\",\"verify\",\"keyCode\",\"passwordIncorrect\",\"INCORRECT_PASSWORD\",\"#verify\",\"password\",\"invokeCallback\",\"#invokeCallback\",\"setUpdateCallback\",\"TREEITEM_OFFSET_TOP\",\"TREEITEM_SELECTED_CLASS\",\"BaseTreeViewer\",\"_l10n\",\"_pdfDocument\",\"_lastToggleIsShow\",\"_currentTreeItem\",\"_dispatchEvent\",\"_bindLink\",\"_normalizeTextContent\",\"_addToggleButton\",\"toggler\",\"className\",\"stopPropagation\",\"shiftKey\",\"shouldShowAll\",\"_toggleTreeItem\",\"prepend\",\"_toggleAllTreeItems\",\"_finishRendering\",\"fragment\",\"hasAnyNesting\",\"render\",\"_updateCurrentTreeItem\",\"treeItem\",\"_scrollToCurrentTreeItem\",\"firstElementChild\",\"scrollTo\",\"PDFAttachmentViewer\",\"downloadManager\",\"appendAttachment\",\"keepRenderedCapability\",\"_attachments\",\"_renderedCapability\",\"_pendingDispatchEvent\",\"attachmentsCount\",\"attachments\",\"createDocumentFragment\",\"item\",\"#appendAttachment\",\"renderedPromise\",\"CSS_CLASS_GRAB\",\"GrabToPan\",\"activateAC\",\"mouseDownAC\",\"scrollAC\",\"overlay\",\"activate\",\"onMouseDown\",\"capture\",\"deactivate\",\"endPan\",\"ignoreTarget\",\"matches\",\"#onMouseDown\",\"originalTarget\",\"tagName\",\"scrollLeftStart\",\"scrollTopStart\",\"clientXStart\",\"clientX\",\"clientYStart\",\"clientY\",\"boundEndPan\",\"mouseOpts\",\"onMouseMove\",\"focusedElement\",\"blur\",\"#onMouseMove\",\"buttons\",\"xDiff\",\"yDiff\",\"behavior\",\"#endPan\",\"PDFCursorTools\",\"prevActive\",\"addEventListeners\",\"switchTool\",\"activeTool\",\"tool\",\"#switchTool\",\"disableActiveTool\",\"_handTool\",\"#addEventListeners\",\"presentationModeState\",\"enableActive\",\"disableActive\",\"NON_METRIC_LOCALES\",\"US_PAGE_NAMES\",\"METRIC_PAGE_NAMES\",\"getPageName\",\"isPortrait\",\"pageNames\",\"PDFDocumentProperties\",\"fieldData\",\"fields\",\"fileNameLookup\",\"titleLookup\",\"_fileNameLookup\",\"_titleLookup\",\"_currentPageNumber\",\"_pagesRotation\",\"_dataAvailableCapability\",\"updateUI\",\"pdfPage\",\"getPage\",\"fileName\",\"fileSize\",\"creationDate\",\"modificationDate\",\"pageSize\",\"isLinearized\",\"parseFileSize\",\"parseDate\",\"CreationDate\",\"ModDate\",\"parsePageSize\",\"parseLinearization\",\"IsLinearized\",\"author\",\"Author\",\"subject\",\"Subject\",\"keywords\",\"Keywords\",\"creator\",\"Creator\",\"producer\",\"Producer\",\"PDFFormatVersion\",\"pageCount\",\"linearized\",\"assign\",\"#reset\",\"#updateUI\",\"#parseFileSize\",\"kb\",\"mb\",\"#parsePageSize\",\"pageSizeInches\",\"nonMetric\",\"sizeInches\",\"sizeMillimeters\",\"nameId\",\"exactMillimeters\",\"intMillimeters\",\"unit\",\"orientation\",\"#parseDate\",\"metadataDate\",\"infoDate\",\"dateObj\",\"toDateObject\",\"#parseLinearization\",\"CharacterType\",\"SPACE\",\"ALPHA_LETTER\",\"PUNCT\",\"HAN_LETTER\",\"KATAKANA_LETTER\",\"HIRAGANA_LETTER\",\"HALFWIDTH_KATAKANA_LETTER\",\"THAI_LETTER\",\"isAlphabeticalScript\",\"charCode\",\"isAscii\",\"isAsciiAlpha\",\"isAsciiDigit\",\"isAsciiSpace\",\"isHan\",\"isKatakana\",\"isHiragana\",\"isHalfwidthKatakana\",\"isThai\",\"getCharacterType\",\"NormalizeWithNFKC\",\"getNormalizeWithNFKC\",\"FindState\",\"FOUND\",\"NOT_FOUND\",\"PENDING\",\"FIND_TIMEOUT\",\"MATCH_SCROLL_OFFSET_TOP\",\"MATCH_SCROLL_OFFSET_LEFT\",\"CHARACTERS_TO_NORMALIZE\",\"DIACRITICS_EXCEPTION\",\"DIACRITICS_EXCEPTION_STR\",\"DIACRITICS_REG_EXP\",\"SPECIAL_CHARS_REG_EXP\",\"NOT_DIACRITIC_FROM_END_REG_EXP\",\"NOT_DIACRITIC_FROM_START_REG_EXP\",\"SYLLABLES_REG_EXP\",\"SYLLABLES_LENGTHS\",\"FIRST_CHAR_SYLLABLES_REG_EXP\",\"NFKC_CHARS_TO_NORMALIZE\",\"noSyllablesRegExp\",\"withSyllablesRegExp\",\"normalize\",\"syllablePositions\",\"len\",\"hasSyllables\",\"normalizationRegex\",\"toNormalizeWithNFKC\",\"CJK\",\"HKDiacritics\",\"BrokenWord\",\"regexps\",\"RegExp\",\"rawDiacriticsPositions\",\"normalized\",\"positions\",\"rawDiacriticsIndex\",\"syllableIndex\",\"shift\",\"shiftOrigin\",\"eol\",\"hasDiacritics\",\"p1\",\"p2\",\"p3\",\"p4\",\"p5\",\"p6\",\"p7\",\"p8\",\"p9\",\"replacement\",\"jj\",\"j\",\"charAt\",\"hasTrailingDashEOL\",\"endsWith\",\"newCharLen\",\"starts\",\"Uint32Array\",\"shifts\",\"Int32Array\",\"getOriginalIndex\",\"diffs\",\"pos\",\"end\",\"oldStart\",\"oldEnd\",\"oldLen\",\"PDFFindController\",\"updateMatchesCountOnProgress\",\"visitedPagesCount\",\"linkService\",\"_linkService\",\"_eventBus\",\"onIsPageVisible\",\"onFind\",\"onFindBarClose\",\"highlightMatches\",\"_highlightMatches\",\"pageMatches\",\"_pageMatches\",\"pageMatchesLength\",\"_pageMatchesLength\",\"selected\",\"_selected\",\"_firstPageCapability\",\"#onFind\",\"shouldDirtyMatch\",\"_dirtyMatch\",\"extractText\",\"findbarClosed\",\"pendingTimeout\",\"_findTimeout\",\"nextMatch\",\"highlightAll\",\"updateAllPages\",\"scrollMatchIntoView\",\"selectedLeft\",\"pageIndex\",\"matchIndex\",\"_scrollMatches\",\"matchIdx\",\"pageIdx\",\"_offset\",\"wrapped\",\"_extractTextPromises\",\"_pageContents\",\"_pageDiffs\",\"_hasDiacritics\",\"_matchesCountTotal\",\"_pagesToSearch\",\"_pendingFindMatches\",\"_resumePageIdx\",\"#query\",\"_rawQuery\",\"_normalizedQuery\",\"#shouldDirtyMatch\",\"newQuery\",\"prevQuery\",\"newType\",\"prevType\",\"isEntireWord\",\"#isEntireWord\",\"startIdx\",\"charCodeAt\",\"convertToRegExpString\",\"#convertToRegExpString\",\"matchDiacritics\",\"isUnicode\",\"trailingSpaces\",\"fromCharCode\",\"calculateMatch\",\"#calculateMatch\",\"pageContent\",\"matcherResult\",\"matchesLength\",\"matchPos\",\"matchLen\",\"updatePage\",\"nextPageMatch\",\"pageMatchesCount\",\"updateUIResultsCount\",\"reverse\",\"isUnicodePart\",\"queryPart\",\"caseSensitive\",\"entireWord\",\"flags\",\"#extractText\",\"deferred\",\"textOptions\",\"disableNormalization\",\"pdfDoc\",\"getTextContent\",\"strBuf\",\"textItem\",\"hasEOL\",\"#updatePage\",\"#updateAllPages\",\"#nextMatch\",\"previous\",\"findPrevious\",\"currentPageIndex\",\"numPageMatches\",\"updateMatch\",\"advanceOffsetPage\",\"matchesReady\",\"#matchesReady\",\"numMatches\",\"#nextPageMatch\",\"#advanceOffsetPage\",\"#updateMatch\",\"found\",\"#onFindBarClose\",\"requestMatchesCount\",\"#requestMatchesCount\",\"current\",\"#updateUIResultsCount\",\"matchesCount\",\"rawQuery\",\"MATCHES_COUNT_LIMIT\",\"PDFFindBar\",\"resizeObserver\",\"resizeObserverCallback\",\"opened\",\"toggleButton\",\"findField\",\"highlightAllCheckbox\",\"caseSensitiveCheckbox\",\"matchDiacriticsCheckbox\",\"entireWordCheckbox\",\"findMsg\",\"findResultsCount\",\"findPreviousButton\",\"findNextButton\",\"checkedInputs\",\"evtName\",\"findPrev\",\"findMsgId\",\"updateResultsCount\",\"#resizeObserverCallback\",\"findbarHeight\",\"inputContainerHeight\",\"HASH_CHANGE_TIMEOUT\",\"POSITION_UPDATED_THRESHOLD\",\"UPDATE_VIEWAREA_TIMEOUT\",\"getCurrentHash\",\"location\",\"PDFHistory\",\"eventAbortController\",\"_initialized\",\"_fingerprint\",\"_isPagesLoaded\",\"initialize\",\"fingerprint\",\"resetHistory\",\"updateUrl\",\"reInitialized\",\"_updateUrl\",\"bindEvents\",\"history\",\"_popStateInProgress\",\"_blockHashChange\",\"_currentHash\",\"_numPositionUpdates\",\"_uid\",\"_maxUid\",\"_destination\",\"_position\",\"isValidState\",\"parseCurrentHash\",\"pushOrReplaceState\",\"destination\",\"updateInternalState\",\"uid\",\"_initialRotation\",\"_initialBookmark\",\"pageHide\",\"unbindEvents\",\"_updateViewareaTimeout\",\"isValidPage\",\"forceReplace\",\"isDestHashesEqual\",\"isDestArraysEqual\",\"tryPushCurrentPosition\",\"popStateInProgress\",\"initialBookmark\",\"initialRotation\",\"#pushOrReplaceState\",\"shouldReplace\",\"newState\",\"newUrl\",\"protocol\",\"replaceState\",\"pushState\",\"#tryPushCurrentPosition\",\"temporary\",\"position\",\"#isValidPage\",\"#isValidState\",\"checkReload\",\"perfEntry\",\"performance\",\"getEntriesByType\",\"#updateInternalState\",\"removeTemporary\",\"#parseCurrentHash\",\"checkNameddest\",\"nameddest\",\"updateViewarea\",\"#updateViewarea\",\"pdfOpenParams\",\"popState\",\"#popState\",\"newHash\",\"hashChanged\",\"#pageHide\",\"#bindEvents\",\"#unbindEvents\",\"destHash\",\"pushHash\",\"firstDest\",\"secondDest\",\"isEntryEqual\",\"second\",\"PDFLayerViewer\",\"updateLayers\",\"_optionalContentConfig\",\"_optionalContentVisibility\",\"layersCount\",\"groupId\",\"setVisibility\",\"_setNestedName\",\"fontStyle\",\"groups\",\"getOrder\",\"queue\",\"levelData\",\"itemsDiv\",\"order\",\"group\",\"getGroup\",\"#updateLayers\",\"getOptionalContentConfig\",\"intent\",\"PDFOutlineViewer\",\"_currentOutlineItem\",\"_currentOutlineItemCapability\",\"_sidebarView\",\"_outline\",\"_pageNumberToDestHashCapability\",\"outlineCount\",\"loadingParams\",\"currentOutlineItemPromise\",\"attachment\",\"_setStyles\",\"bold\",\"italic\",\"fontWeight\",\"totalCount\",\"nestedCount\",\"nestedItems\",\"outline\",\"pageNumberToDestHash\",\"_getPageNumberToDestHash\",\"linkElement\",\"pageNumberNesting\",\"nesting\",\"currentNesting\",\"DELAY_BEFORE_HIDING_CONTROLS\",\"ACTIVE_SELECTOR\",\"CONTROLS_SELECTOR\",\"MOUSE_SCROLL_COOLDOWN_TIME\",\"PAGE_SWITCH_THRESHOLD\",\"SWIPE_MIN_DISTANCE_THRESHOLD\",\"SWIPE_ANGLE_THRESHOLD\",\"PDFPresentationMode\",\"fullscreenChangeAbortController\",\"windowAbortController\",\"contextMenuOpen\",\"mouseScrollTimeStamp\",\"mouseScrollDelta\",\"touchSwipeState\",\"request\",\"requestFullscreen\",\"addFullscreenChangeListeners\",\"notifyStateChange\",\"scaleValue\",\"currentScaleValue\",\"pageViewsReady\",\"hasEqualPageSizes\",\"removeFullscreenChangeListeners\",\"mouseWheel\",\"#mouseWheel\",\"currentTime\",\"now\",\"storedTime\",\"resetMouseScrollState\",\"totalDelta\",\"success\",\"#notifyStateChange\",\"enter\",\"#enter\",\"addWindowListeners\",\"showControls\",\"empty\",\"exit\",\"#exit\",\"removeWindowListeners\",\"hideControls\",\"mouseDown\",\"#mouseDown\",\"contextMenu\",\"#contextMenu\",\"#showControls\",\"controlsTimeout\",\"#hideControls\",\"#resetMouseScrollState\",\"touchSwipe\",\"#touchSwipe\",\"touches\",\"startX\",\"pageX\",\"startY\",\"pageY\",\"endX\",\"endY\",\"dx\",\"dy\",\"absAngle\",\"#addWindowListeners\",\"touchSwipeBind\",\"passive\",\"#removeWindowListeners\",\"#addFullscreenChangeListeners\",\"fullscreenElement\",\"#removeFullscreenChangeListeners\",\"XfaLayerBuilder\",\"annotationStorage\",\"xfaHtml\",\"_cancelled\",\"viewport\",\"parameters\",\"dontFlip\",\"getXfa\",\"textDivs\",\"update\",\"getXfaHtmlForPrinting\",\"printContainer\",\"allXfaHtml\",\"scale\",\"PDF_TO_CSS_UNITS\",\"xfaPage\",\"children\",\"builder\",\"activeService\",\"viewerApp\",\"initialized\",\"renderPage\",\"activeServiceOnEntry\",\"printAnnotationStoragePromise\",\"scratchCanvas\",\"PRINT_UNITS\",\"PDF\",\"ctx\",\"getContext\",\"fillStyle\",\"fillRect\",\"restore\",\"printAnnotationStorage\",\"renderContext\",\"canvasContext\",\"getViewport\",\"ENABLE_STORAGE\",\"renderTask\",\"PDFPrintService\",\"pagesOverview\",\"_printResolution\",\"_optionalContentConfigPromise\",\"_printAnnotationStoragePromise\",\"currentPage\",\"throwIfInactive\",\"every\",\"pageStyleSheet\",\"ensureOverlay\",\"renderPages\",\"isPureXfa\",\"renderNextPage\",\"renderProgress\",\"useRenderedPage\",\"toBlob\",\"blob\",\"src\",\"wrapper\",\"onload\",\"onerror\",\"performPrint\",\"print\",\"eventType\",\"CustomEvent\",\"bubbles\",\"cancelable\",\"getElementById\",\"progress\",\"progressBar\",\"progressPerc\",\"ctrlKey\",\"metaKey\",\"altKey\",\"chrome\",\"opera\",\"stopImmediatePropagation\",\"stopPropagationIfNeeded\",\"overlayPromise\",\"PDFPrintServiceFactory\",\"initGlobals\",\"createPrintService\",\"CLEANUP_TIMEOUT\",\"PDFRenderingQueue\",\"pdfThumbnailViewer\",\"onIdle\",\"highestPriorityPage\",\"idleTimeout\",\"printing\",\"isThumbnailViewEnabled\",\"defineProperty\",\"setThumbnailViewer\",\"isHighestPriority\",\"renderingId\",\"renderHighestPriority\",\"currentlyVisiblePages\",\"forceRendering\",\"getHighestPriority\",\"scrolledDown\",\"preRenderExtra\",\"ignoreDetailViews\",\"visibleViews\",\"numVisible\",\"isViewFinished\",\"detailView\",\"firstId\",\"lastId\",\"visibleIds\",\"holeId\",\"holeView\",\"preRenderIndex\",\"preRenderView\",\"renderingState\",\"renderView\",\"draw\",\"finally\",\"PDFScriptingManager\",\"closeCapability\",\"destroyCapability\",\"ready\",\"scripting\",\"willPrintCapability\",\"destroyScripting\",\"objects\",\"calculationOrder\",\"docActions\",\"getFieldObjects\",\"getCalculationOrderIds\",\"getJSActions\",\"initScripting\",\"updateFromSandbox\",\"dispatchPageClose\",\"dispatchPageOpen\",\"_pageOpenPending\",\"appInfo\",\"docInfo\",\"actions\",\"dispatchWillSave\",\"dispatchDidSave\",\"dispatchWillPrint\",\"dispatchDidPrint\",\"destroyPromise\",\"_visitedPages\",\"#updateFromSandbox\",\"isChangingPresentationMode\",\"siblings\",\"command\",\"modes\",\"pagesPromise\",\"log\",\"increaseScale\",\"decreaseScale\",\"elementId\",\"setValue\",\"#dispatchPageOpen\",\"visitedPages\",\"pageView\",\"getPageView\",\"actionsPromise\",\"#dispatchPageClose\",\"#initScripting\",\"#destroyScripting\",\"race\",\"SIDEBAR_WIDTH_VAR\",\"SIDEBAR_MIN_WIDTH\",\"SIDEBAR_RESIZING_CLASS\",\"UI_NOTIFICATION_CLASS\",\"PDFSidebar\",\"mouseAC\",\"outerContainerWidth\",\"isInitialViewSet\",\"isInitialEventDispatched\",\"onToggled\",\"onUpdateThumbnails\",\"outerContainer\",\"sidebarContainer\",\"resizer\",\"thumbnailButton\",\"outlineButton\",\"attachmentsButton\",\"layersButton\",\"thumbnailView\",\"outlineView\",\"attachmentsView\",\"layersView\",\"_currentOutlineItemButton\",\"currentOutlineItemButton\",\"hideUINotification\",\"switchView\",\"visibleView\",\"setInitialView\",\"forceOpen\",\"isViewChanged\",\"#dispatchEvent\",\"showUINotification\",\"#showUINotification\",\"#hideUINotification\",\"onTreeLoaded\",\"enabled\",\"mouseMove\",\"mouseUp\",\"updateWidth\",\"updated\",\"#updateWidth\",\"maxWidth\",\"#mouseMove\",\"#mouseUp\",\"DRAW_UPSCALE_FACTOR\",\"MAX_NUM_SCALING_STEPS\",\"THUMBNAIL_WIDTH\",\"zeroCanvas\",\"TempImageFactory\",\"tempCanvas\",\"getCanvas\",\"alpha\",\"destroyCanvas\",\"PDFThumbnailView\",\"defaultViewport\",\"renderingQueue\",\"pageColors\",\"pageLabel\",\"pdfPageRotate\",\"pageL10nArgs\",\"updateDims\",\"_placeholderImg\",\"#updateDims\",\"ratio\",\"canvasWidth\",\"canvasHeight\",\"setPdfPage\",\"totalRotation\",\"cancelRendering\",\"image\",\"replaceWith\",\"getPageDrawContext\",\"#getPageDrawContext\",\"upscaleFactor\",\"willReadFrequently\",\"outputScale\",\"limitCanvas\",\"sx\",\"sy\",\"scaled\",\"convertCanvasToImage\",\"#convertCanvasToImage\",\"reducedCanvas\",\"reduceImage\",\"toDataURL\",\"drawViewport\",\"renderContinueCallback\",\"cont\",\"onContinue\",\"setImage\",\"thumbnailCanvas\",\"getReducedImageDims\",\"#getReducedImageDims\",\"#reduceImage\",\"drawImage\",\"reducedWidth\",\"reducedHeight\",\"reducedImage\",\"reducedImageCtx\",\"#pageL10nArgs\",\"setPageLabel\",\"THUMBNAIL_SCROLL_MARGIN\",\"THUMBNAIL_SELECTED_CLASS\",\"PDFThumbnailViewer\",\"scroll\",\"scrollUpdated\",\"resetView\",\"#scrollUpdated\",\"getThumbnail\",\"_thumbnails\",\"getVisibleThumbs\",\"#getVisibleThumbs\",\"scrollThumbnailIntoView\",\"prevThumbnailView\",\"shouldScroll\",\"updateArgs\",\"thumbnail\",\"cleanup\",\"#resetView\",\"_pageLabels\",\"firstPagePromise\",\"firstPdfPage\",\"pageNum\",\"#cancelRendering\",\"setPageLabels\",\"labels\",\"ensurePdfPageLoaded\",\"#ensurePdfPageLoaded\",\"thumbView\",\"getScrollAhead\",\"#getScrollAhead\",\"visibleThumbs\",\"scrollAhead\",\"AnnotationEditorLayerBuilder\",\"annotationLayer\",\"drawLayer\",\"onAppend\",\"structTreeLayer\",\"accessibilityManager\",\"annotationEditorLayer\",\"clonedViewport\",\"annotations\",\"isInvisible\",\"AnnotationLayerBuilder\",\"externalHide\",\"linksInjected\",\"renderForms\",\"hasJSActionsPromise\",\"fieldObjectsPromise\",\"annotationCanvasMap\",\"annotationEditorUIManager\",\"_hasJSActionsPromise\",\"_fieldObjectsPromise\",\"_annotationCanvasMap\",\"_accessibilityManager\",\"_annotationEditorUIManager\",\"hasJSActions\",\"fieldObjects\",\"getAnnotations\",\"initAnnotationLayer\",\"updatePresentationModeState\",\"#initAnnotationLayer\",\"internal\",\"hasEditableAnnotations\",\"injectLinkAnnotations\",\"inferredLinks\",\"newLinks\",\"checkInferredLinks\",\"addLinkAnnotations\",\"#updatePresentationModeState\",\"disableFormElements\",\"section\",\"inert\",\"#checkInferredLinks\",\"annotationRects\",\"annot\",\"quadPoints\",\"rects\",\"trX\",\"trY\",\"blX\",\"blY\",\"intersectAnnotations\",\"annot1\",\"annot2\",\"intersections\",\"annot1Rects\",\"annot2Rects\",\"intersection\",\"intersect\",\"areaRects\",\"totalArea\",\"linkAreaRects\",\"annotation\",\"annotationType\",\"LINK\",\"DOMRectToPDF\",\"pdfPageView\",\"pageBox\",\"bottomLeft\",\"getPagePoint\",\"topRight\",\"normalizeRect\",\"calculateLinkPosition\",\"rangeRects\",\"getClientRects\",\"domRect\",\"rectBoundingBox\",\"textPosition\",\"currentContainer\",\"currentLength\",\"createLinkAnnotation\",\"highlighter\",\"_textHighlighter\",\"begin\",\"_convertMatches\",\"Range\",\"divIdx\",\"unsafeUrl\",\"borderStyle\",\"Autolinker\",\"regex\",\"findLinks\",\"normalizedText\",\"matchAll\",\"links\",\"emailDomain\",\"raw\",\"canParse\",\"absoluteURL\",\"addDefaultProtocol\",\"processLinks\",\"textContentItemsStr\",\"BasePDFPageView\",\"loadingId\",\"renderError\",\"showCanvas\",\"startTime\",\"_createCanvas\",\"onShow\",\"hideUntilComplete\",\"hasHCM\",\"background\",\"foreground\",\"prevCanvas\",\"updateOnFirstShow\",\"isLastShow\",\"resetTempCanvas\",\"_resetCanvas\",\"#resetTempCanvas\",\"_drawCanvas\",\"onCancel\",\"onFinish\",\"onError\",\"cancelExtraDelay\",\"dispatchPageRender\",\"dispatchPageRendered\",\"cssTransform\",\"isDetailView\",\"timestamp\",\"DrawLayerBuilder\",\"setParent\",\"getDrawLayer\",\"PDFPageDetailView\",\"detailArea\",\"renderingCancelled\",\"keepCanvas\",\"shouldRenderDifferentArea\",\"#shouldRenderDifferentArea\",\"minDetailX\",\"minDetailY\",\"maxDetailX\",\"maxDetailY\",\"maxHeight\",\"paddingLeftSize\",\"paddingRightSize\",\"paddingTopSize\",\"paddingBottomSize\",\"MOVEMENT_THRESHOLD\",\"underlyingViewUpdated\",\"visibleWidth\",\"visibleHeight\",\"visiblePixels\",\"pixelRatio\",\"maxDetailToVisibleLinearRatio\",\"sqrt\",\"capPixels\",\"maxOverflowScale\",\"overflowScale\",\"overflowWidth\",\"overflowHeight\",\"canvasWrapper\",\"_ensureCanvasWrapper\",\"newCanvas\",\"after\",\"renderingPromise\",\"_getRenderingContext\",\"PDF_ROLE_TO_HTML_ROLE\",\"Document\",\"DocumentFragment\",\"Part\",\"Sect\",\"Div\",\"Aside\",\"NonStruct\",\"P\",\"H\",\"Title\",\"FENote\",\"Sub\",\"Lbl\",\"Span\",\"Em\",\"Strong\",\"Link\",\"Annot\",\"Form\",\"Ruby\",\"RB\",\"RT\",\"RP\",\"Warichu\",\"WT\",\"WP\",\"L\",\"LI\",\"LBody\",\"Table\",\"TR\",\"TH\",\"TD\",\"THead\",\"TBody\",\"TFoot\",\"Caption\",\"Figure\",\"Formula\",\"Artifact\",\"HEADING_PATTERN\",\"StructTreeLayerBuilder\",\"treeDom\",\"treePromise\",\"elementAttributes\",\"rawDims\",\"elementsToAddToTextLayer\",\"getStructTree\",\"walk\",\"getAriaAttributes\",\"annotationId\",\"#setAttributes\",\"structElement\",\"htmlElement\",\"alt\",\"added\",\"child\",\"addImageInTextLayer\",\"#addImageInTextLayer\",\"bbox\",\"pageHeight\",\"calc\",\"addElementsToTextLayer\",\"#walk\",\"role\",\"kid\",\"TextAccessibilityManager\",\"textChildren\",\"textNodes\",\"waitingElements\",\"setTextMapping\",\"compareElementPositions\",\"#compareElementPositions\",\"e1\",\"e2\",\"centerX1\",\"centerX2\",\"enable\",\"nodeIndex\",\"addIdToAriaOwns\",\"isRemovable\",\"addPointerInTextLayer\",\"disable\",\"removePointerInTextLayer\",\"owns\",\"#addIdToAriaOwns\",\"moveElementInDOM\",\"contentElement\",\"hasChildNodes\",\"elementToCompare\",\"before\",\"TextHighlighter\",\"findController\",\"divs\",\"texts\",\"_updateMatches\",\"iIndex\",\"mm\",\"_renderMatches\",\"isSelectedPage\",\"selectedMatchIdx\",\"prevEnd\",\"infinity\",\"beginText\",\"appendTextToDiv\",\"fromOffset\",\"toOffset\",\"parentLeft\",\"i0\",\"i1\",\"lastDivIdx\",\"lastOffset\",\"isSelected\",\"highlightSuffix\",\"n0\",\"n1\",\"clearedUntilDivIdx\",\"n\",\"TextLayerBuilder\",\"renderingDone\",\"textLayers\",\"selectionChangeAbortController\",\"tabIndex\",\"textContentParams\",\"onBefore\",\"textContentSource\",\"streamTextContent\",\"includeMarkedContent\",\"endOfContent\",\"bindMouse\",\"removeGlobalSelectionListener\",\"#bindMouse\",\"clipboardData\",\"setData\",\"enableGlobalSelectionListener\",\"#removeGlobalSelectionListener\",\"textLayerDiv\",\"#enableGlobalSelectionListener\",\"isPointerDown\",\"isFirefox\",\"prevRange\",\"activeTextLayers\",\"getRangeAt\",\"intersectsNode\",\"endDiv\",\"getPropertyValue\",\"modifyStart\",\"compareBoundaryPoints\",\"END_TO_END\",\"START_TO_END\",\"endContainer\",\"endOffset\",\"parentTextLayer\",\"insertBefore\",\"cloneRange\",\"DEFAULT_LAYER_PROPERTIES\",\"LAYERS_ORDER\",\"PDFPageView\",\"ENABLE_FORMS\",\"hasRestrictedScaling\",\"layerProperties\",\"needsRestrictedScaling\",\"originalViewport\",\"previousRotation\",\"scaleRoundX\",\"scaleRoundY\",\"useThumbnailCanvas\",\"directDrawing\",\"initialOptionalContent\",\"regularAnnotations\",\"layers\",\"_isStandalone\",\"hasViewer\",\"_container\",\"xfaLayer\",\"setDimensions\",\"hasInitialVisibility\",\"addLayer\",\"#addLayer\",\"oldDiv\",\"layer\",\"#setDimensions\",\"removeProperty\",\"filterFactory\",\"addHighlightHCMFilter\",\"dispatchLayerRendered\",\"#dispatchLayerRendered\",\"renderAnnotationLayer\",\"#renderAnnotationLayer\",\"renderAnnotationEditorLayer\",\"#renderAnnotationEditorLayer\",\"renderDrawLayer\",\"#renderDrawLayer\",\"renderXfaLayer\",\"#renderXfaLayer\",\"buildXfaTextContentItems\",\"renderTextLayer\",\"#renderTextLayer\",\"renderStructTreeLayer\",\"#renderStructTreeLayer\",\"#buildXfaTextContentItems\",\"#injectLinkAnnotations\",\"textLayerPromise\",\"keepAnnotationLayer\",\"keepAnnotationEditorLayer\",\"keepXfaLayer\",\"keepTextLayer\",\"keepCanvasWrapper\",\"preserveDetailViewState\",\"annotationLayerNode\",\"annotationEditorLayerNode\",\"xfaLayerNode\",\"textLayerNode\",\"canvasWrapperNode\",\"layerIndex\",\"indexOf\",\"toggleEditingMode\",\"updateVisibleArea\",\"drawingDelay\",\"computeScale\",\"onlyCssZoom\",\"postponeDrawing\",\"redrawAnnotationLayer\",\"redrawAnnotationEditorLayer\",\"redrawXfaLayer\",\"redrawTextLayer\",\"hideTextLayer\",\"#computeScale\",\"invScale\",\"relativeRotation\",\"scaleX\",\"scaleY\",\"convertToPdfPoint\",\"annotationLayerDiv\",\"sfx\",\"sfy\",\"pageWidth\",\"resultPromise\",\"separateAnnots\",\"annotationEditorLayerDiv\",\"DEFAULT_CACHE_SIZE\",\"PagesCountLimit\",\"FORCE_SCROLL_MODE_PAGE\",\"FORCE_LAZY_PAGE_INIT\",\"PAUSE_EAGER_PAGE_INIT\",\"isValidAnnotationEditorMode\",\"PDFPageViewBuffer\",\"buf\",\"destroyFirstView\",\"resize\",\"newSize\",\"idsToKeep\",\"#destroyFirstView\",\"firstView\",\"PDFViewer\",\"buffer\",\"altTextManager\",\"annotationEditorHighlightColors\",\"containerTopLeft\",\"editorUndoBar\",\"scrollTimeoutId\",\"switchAnnotationEditorModeAC\",\"switchAnnotationEditorModeTimeoutId\",\"getAllTextInProgress\",\"hiddenCopyElement\",\"interruptCopyCondition\",\"previousContainerHeight\",\"scrollModePageState\",\"scaleTimeoutId\",\"signatureManager\",\"viewerVersion\",\"_getVisiblePages\",\"_scriptingManager\",\"scriptingManager\",\"removePageBorders\",\"defaultRenderingQueue\",\"_scrollUpdate\",\"_resetView\",\"updateContainerHeightCss\",\"_pages\",\"getCachedPageViews\",\"_setCurrentPageNumber\",\"resetCurrentPageView\",\"currentPageLabel\",\"currentScale\",\"_currentScale\",\"setScale\",\"noScroll\",\"_currentScaleValue\",\"refresh\",\"onePageRendered\",\"_onePageRenderedCapability\",\"_pagesCapability\",\"_layerProperties\",\"self\",\"initializePermissions\",\"#initializePermissions\",\"permissions\",\"COPY\",\"MODIFY_CONTENTS\",\"MODIFY_ANNOTATIONS\",\"FILL_INTERACTIVE_FORMS\",\"onePageRenderedOrForceFetch\",\"#onePageRenderedOrForceFetch\",\"visibilityState\",\"hiddenCapability\",\"any\",\"getAllText\",\"copyCallback\",\"#copyCallback\",\"anchorNode\",\"containsNode\",\"ev\",\"clipboard\",\"writeText\",\"_cancelRendering\",\"permissionsPromise\",\"getPermissions\",\"_scrollMode\",\"onBeforeDraw\",\"onAfterDraw\",\"preloadEditingData\",\"updateMode\",\"viewerElement\",\"ensurePageViewVisible\",\"_spreadMode\",\"_updateSpreadMode\",\"getPagesLeft\",\"Language\",\"_location\",\"_previousScrollMode\",\"previousPageNumber\",\"scrollDown\",\"pages\",\"_updateScrollMode\",\"cleanupTimeouts\",\"cleanupSwitchAnnotationEditorMode\",\"#ensurePageViewVisible\",\"pageIndexSet\",\"parity\",\"spread\",\"dummyPage\",\"#scrollIntoView\",\"pageSpot\",\"isSameScale\",\"#isSameScale\",\"newScale\",\"setScaleUpdatePages\",\"#setScaleUpdatePages\",\"newValue\",\"preset\",\"origin\",\"presetValue\",\"previousScale\",\"scaleDiff\",\"pageWidthScaleFactor\",\"#pageWidthScaleFactor\",\"#setScale\",\"hPadding\",\"vPadding\",\"pageWidthScale\",\"pageHeightScale\",\"horizontalScale\",\"#resetCurrentPageView\",\"widthScale\",\"heightScale\",\"boundingRect\",\"convertToViewportPoint\",\"_updateLocation\",\"firstPage\",\"normalizedScaleValue\",\"currentPageView\",\"topLeft\",\"intLeft\",\"intTop\",\"visiblePages\",\"numVisiblePages\",\"newCacheSize\",\"isSimpleLayout\",\"currentId\",\"stillFullyVisible\",\"switchToEditAnnotationMode\",\"#switchToEditAnnotationMode\",\"pagesToRefresh\",\"containsElement\",\"_isContainerRtl\",\"isHorizontalScrollbarEnabled\",\"isVerticalScrollbarEnabled\",\"some\",\"firstPageView\",\"getPagesOverview\",\"initialOrientation\",\"_getPageAdvance\",\"pageLayout\",\"yArray\",\"expectedId\",\"advance\",\"updateScale\",\"scaleFactor\",\"steps\",\"ceil\",\"toFixed\",\"#updateContainerHeightCss\",\"#cleanupTimeouts\",\"#cleanupSwitchAnnotationEditorMode\",\"#preloadEditingData\",\"STAMP\",\"loadModel\",\"SIGNATURE\",\"loadSignatures\",\"editId\",\"isFromKeyboard\",\"updater\",\"resetModifiedIds\",\"idsToRefresh\",\"noUpdate\",\"SecondaryToolbar\",\"presentationModeButton\",\"printButton\",\"downloadButton\",\"viewBookmarkButton\",\"firstPageButton\",\"lastPageButton\",\"pageRotateCwButton\",\"pageRotateCcwButton\",\"cursorSelectToolButton\",\"eventDetails\",\"cursorHandToolButton\",\"scrollPageButton\",\"scrollVerticalButton\",\"scrollHorizontalButton\",\"scrollWrappedButton\",\"spreadNoneButton\",\"spreadOddButton\",\"spreadEvenButton\",\"imageAltTextSettingsButton\",\"documentPropertiesButton\",\"openFileButton\",\"setPageNumber\",\"setPagesCount\",\"scrollModeChanged\",\"spreadModeChanged\",\"cursorToolChanged\",\"#cursorToolChanged\",\"#scrollModeChanged\",\"forceScrollModePage\",\"isHorizontal\",\"#spreadModeChanged\",\"toolbar\",\"DEFAULT_HEIGHT_IN_PAGE\",\"SignatureManager\",\"addButton\",\"tabsToAltText\",\"clearButton\",\"clearDescription\",\"drawCurves\",\"drawPlaceholder\",\"drawPath\",\"drawPathString\",\"drawPoints\",\"drawSVG\",\"drawThickness\",\"errorBar\",\"extractedSignatureData\",\"imagePath\",\"imagePicker\",\"imagePickerLink\",\"imagePlaceholder\",\"imageSVG\",\"saveCheckbox\",\"saveContainer\",\"tabButtons\",\"addSignatureToolbarButton\",\"loadSignaturesPromise\",\"typeInput\",\"currentTab\",\"currentTabAC\",\"hasDescriptionChanged\",\"editDescriptionDialog\",\"signatureStorage\",\"l10nDescription\",\"panels\",\"typeButton\",\"drawButton\",\"imageButton\",\"editSignatureElements\",\"lastElementChild\",\"EditDescriptionDialog\",\"initTab\",\"initTabButtons\",\"accept\",\"signaturesChanged\",\"#initTabButtons\",\"tabCallback\",\"buttonsArray\",\"resetCommon\",\"#resetCommon\",\"resetTab\",\"#resetTab\",\"#initTab\",\"initTypeTab\",\"initDrawTab\",\"initImageTab\",\"disableButtons\",\"#disableButtons\",\"#initTypeTab\",\"#initDrawTab\",\"currentPointerId\",\"NaN\",\"drawCallback\",\"pointerId\",\"setPointerCapture\",\"drawWidth\",\"drawHeight\",\"thickness\",\"curves\",\"points\",\"finishDrawAC\",\"listenerDrawOptions\",\"pId\",\"releasePointerCapture\",\"#initImageTab\",\"passiveOptions\",\"file\",\"files\",\"extractSignature\",\"dataTransfer\",\"dropEffect\",\"effectAllowed\",\"#extractSignature\",\"imageManager\",\"getFromFile\",\"getFromImage\",\"bitmap\",\"viewBox\",\"toSVGPath\",\"getOutlineForType\",\"#getOutlineForType\",\"getFromText\",\"getOutlineForDraw\",\"#getOutlineForDraw\",\"getDrawnSignature\",\"addToolbarButton\",\"#addToolbarButton\",\"signatureData\",\"areContours\",\"maxDim\",\"outlineData\",\"processDrawnLines\",\"lines\",\"innerMargin\",\"mustSmooth\",\"CREATE\",\"heightInPage\",\"ariaHidden\",\"deleteButton\",\"savedCount\",\"deleteSpan\",\"#signaturesChanged\",\"getSignature\",\"reload\",\"previousElementSibling\",\"decompressSignature\",\"signaturesData\",\"outlines\",\"renderEditButton\",\"isStorageFull\",\"tabType\",\"_drawId\",\"#add\",\"newCurves\",\"compressSignature\",\"saved\",\"descriptionChanged\",\"addSignature\",\"previousDescription\",\"signatureSVG\",\"updateButton\",\"editSignatureView\",\"descriptionInput\",\"_uiManager\",\"Event\",\"getSignaturePreview\",\"#update\",\"hasBeenChanged\",\"Toolbar\",\"colorPicker\",\"zoomIn\",\"zoomOut\",\"editorFreeTextButton\",\"FREETEXT\",\"editorHighlightButton\",\"HIGHLIGHT\",\"editorInkButton\",\"INK\",\"editorStampButton\",\"telemetry\",\"editorSignatureButton\",\"updateToolbarDensity\",\"#updateToolbarDensity\",\"hasPageLabels\",\"setPageScale\",\"pageScaleValue\",\"pageScale\",\"updateLoadingIndicatorState\",\"editorModeChanged\",\"editorHighlightColorPicker\",\"scaleSelect\",\"oncontextmenu\",\"cp\",\"setMainHighlightColorPicker\",\"renderMainDropdown\",\"updateColor\",\"#editorModeChanged\",\"editorFreeTextParamsToolbar\",\"editorHighlightParamsToolbar\",\"editorInkParamsToolbar\",\"editorStampParamsToolbar\",\"editorSignatureParamsToolbar\",\"isDisable\",\"resetNumPages\",\"predefinedValueFound\",\"customScaleOption\",\"loading\",\"DEFAULT_VIEW_HISTORY_CACHE_SIZE\",\"ViewHistory\",\"cacheSize\",\"_initializedPromise\",\"databaseStr\",\"database\",\"branch\",\"setMultiple\",\"properties\",\"defaultValue\",\"getMultiple\",\"FORCE_PAGES_LOADED_TIMEOUT\",\"ViewOnLoad\",\"PREVIOUS\",\"PDFViewerApplication\",\"_initializedCapability\",\"settled\",\"appConfig\",\"pdfLoadingTask\",\"printService\",\"pdfRenderingQueue\",\"pdfPresentationMode\",\"pdfDocumentProperties\",\"pdfLinkService\",\"pdfSidebar\",\"pdfOutlineViewer\",\"pdfAttachmentViewer\",\"pdfLayerViewer\",\"pdfCursorTools\",\"pdfScriptingManager\",\"store\",\"preferences\",\"secondaryToolbar\",\"annotationEditorParams\",\"imageAltTextSettings\",\"_downloadUrl\",\"_eventBusAbortController\",\"_windowAbortController\",\"_globalAbortController\",\"documentInfo\",\"_contentDispositionFilename\",\"_contentLength\",\"_saveInProgress\",\"_wheelUnusedTicks\",\"_wheelUnusedFactor\",\"_touchManager\",\"_touchUnusedTicks\",\"_touchUnusedFactor\",\"_PDFBug\",\"_hasAnnotationEditors\",\"_title\",\"_isCtrlKeyDown\",\"_caretBrowsing\",\"_isScrolling\",\"_parseHashParams\",\"getElementsByTagName\",\"appContainer\",\"_initializeViewerComponents\",\"bindWindowEvents\",\"loadPDFBug\",\"PDFBug\",\"loadCSS\",\"init\",\"debugOpts\",\"StepperManager\",\"check\",\"setEventBus\",\"_cleanup\",\"_scriptingDocProperties\",\"matchMedia\",\"newAltTextDialog\",\"altTextDialog\",\"addSignatureDialog\",\"editSignatureDialog\",\"sidebar\",\"findBar\",\"principalContainer\",\"altTextSettingsDialog\",\"documentProperties\",\"_docFilename\",\"_docTitle\",\"imageAltTextSettingsSeparator\",\"supportsFullscreen\",\"passwordOverlay\",\"passwordPrompt\",\"run\",\"config\",\"queryString\",\"search\",\"validateFileURL\",\"fileInput\",\"_openFileInput\",\"msg\",\"_hideViewBookmark\",\"updateZoom\",\"zoomReset\",\"touchPinchCallback\",\"prevDistance\",\"distance\",\"newScaleFactor\",\"_accumulateFactor\",\"PIXELS_PER_LINE_SCALE\",\"ticks\",\"_accumulateTicks\",\"touchPinchEndCallback\",\"fullscreenEnabled\",\"loadingBar\",\"barElement\",\"setTitleUsingUrl\",\"downloadUrl\",\"decodeURIComponent\",\"setTitle\",\"editorIndicator\",\"_unblockDocumentLoadEvent\",\"_annotationStorageModified\",\"promises\",\"workerParams\",\"originalUrl\",\"apiParams\",\"loadingTask\",\"onPassword\",\"onProgress\",\"loaded\",\"load\",\"missing\",\"_documentError\",\"getData\",\"saveDocument\",\"stats\",\"editorStats\",\"downloadOrSave\",\"moreInfo\",\"_otherError\",\"moreInfoText\",\"stack\",\"lineNumber\",\"level\",\"pageLayoutPromise\",\"getPageLayout\",\"pageModePromise\",\"getPageMode\",\"openActionPromise\",\"getOpenAction\",\"storedPromise\",\"fingerprints\",\"zoom\",\"sidebarView\",\"_initializeAnnotationStorageCallbacks\",\"timeStamp\",\"stored\",\"pageMode\",\"openAction\",\"_initializePdfHistory\",\"initialDest\",\"_initializeAutoPrint\",\"getOutline\",\"getAttachments\",\"_initializePageLabels\",\"_initializeMetadata\",\"jsActions\",\"triggerAutoPrint\",\"js\",\"triggerPrinting\",\"pdfTitle\",\"IsXFAPresent\",\"IsAcroFormPresent\",\"IsSignaturesPresent\",\"getPageLabels\",\"numLabels\",\"standardLabels\",\"emptyLabels\",\"onSetModified\",\"beforeUnload\",\"onResetModified\",\"onAnnotationEditor\",\"storedHash\",\"setRotation\",\"setViewerModes\",\"beforePrint\",\"alert\",\"afterPrint\",\"resetModified\",\"rotatePages\",\"requestPresentationMode\",\"onResize\",\"onHashchange\",\"onPageRender\",\"onPageRendered\",\"onUpdateViewarea\",\"onPageChanging\",\"onScaleChanging\",\"onRotationChanging\",\"onSidebarViewChanged\",\"onPageMode\",\"onNamedAction\",\"onPageNumberChanged\",\"onViewerModesChanged\",\"onImageAltTextSettings\",\"onFindFromUrlHash\",\"onUpdateFindMatchesCount\",\"onUpdateFindControlState\",\"onFileInputChange\",\"onOpenFile\",\"isPinchingDisabled\",\"isPinchingStopped\",\"onPinching\",\"onPinchEnd\",\"addWindowResolutionChange\",\"mediaQueryList\",\"onWheel\",\"onKeyDown\",\"onKeyUp\",\"_lastScrollTop\",\"_lastScrollLeft\",\"scrollend\",\"unbindWindowEvents\",\"testingClose\",\"prop\",\"wholeTicks\",\"trunc\",\"factor\",\"newFactor\",\"blockUnblockOnload\",\"scriptingReady\",\"HOSTED_VIEWER_ORIGINS\",\"viewerOrigin\",\"fileOrigin\",\"exp\",\"isBuiltInMac\",\"isPinchToZoom\",\"deltaZ\",\"DOM_DELTA_PAGE\",\"sign\",\"closeSecondaryToolbar\",\"closeEditorUndoBar\",\"isViewerInPresentationMode\",\"handled\",\"ensureViewerFocused\",\"cmd\",\"curElement\",\"curElementTagName\",\"isContentEditable\",\"turnPage\",\"turnOnlyIfPageFit\",\"returnValue\",\"AppConstants\",\"PDFViewerApplicationConstants\",\"PDFViewerApplicationOptions\",\"getViewerConfiguration\",\"createAutomatically\",\"altTextSettingsCloseButton\",\"webViewerLoad\",\"readyState\"],\"sourceRoot\":\"\"}\n\\ No newline at end of file\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fassets\u002Fpdf.js\u002Fweb: wasm\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fcontroller\u002Fe2pdf-debug.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fcontroller\u002Fe2pdf-debug.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fcontroller\u002Fe2pdf-debug.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fcontroller\u002Fe2pdf-debug.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -1,12 +1,11 @@\n \u003C?php\n \n \u002F**\n- * E2Pdf Debug Controller\n- * @copyright  Copyright 2017 https:\u002F\u002Fe2pdf.com\n- * @license    GPLv3\n- * @version    1\n- * @link       https:\u002F\u002Fe2pdf.com\n- * @since      0.00.01\n+ * File: \u002Fcontroller\u002Fe2pdf-debug.php\n+ *\n+ * @package  E2Pdf\n+ * @license  GPLv3\n+ * @link     https:\u002F\u002Fe2pdf.com\n  *\u002F\n if (!defined('ABSPATH')) {\n     die('Access denied.');\n@@ -14,16 +13,15 @@\n \n class Controller_E2pdf_Debug extends Helper_E2pdf_View {\n \n-    \u002F**\n-     * @url admin.php?page=e2pdf-debug\n-     *\u002F\n+    \u002F\u002F url: admin.php?page=e2pdf-debug\n     public function index_action() {\n         if ($this->post->get('_wpnonce')) {\n             if (wp_verify_nonce($this->post->get('_wpnonce'), 'e2pdf_debug')) {\n                 if ($this->post->get('e2pdf_updated')) {\n                     update_option('e2pdf_version', '1.00.00');\n+                    \u002F* translators: %s: Action *\u002F\n                     $this->add_notification('update', sprintf(__('Success: %s', 'e2pdf'), __('Reinitialize Activation Hooks', 'e2pdf')));\n-                    $this->redirect($this->helper->get_url(array('page' => 'e2pdf-debug')));\n+                    $this->redirect($this->helper->get_url(['page' => 'e2pdf-debug']));\n                 }\n             } else {\n                 wp_die($this->message('wp_verify_nonce_error'));\n@@ -33,14 +31,12 @@\n         if (ini_get('disable_functions')) {\n             $disabled_functions = explode(',', ini_get('disable_functions'));\n         } else {\n-            $disabled_functions = array();\n+            $disabled_functions = [];\n         }\n         $this->view('disabled_functions', $disabled_functions);\n     }\n \n-    \u002F**\n-     * @url admin.php?page=e2pdf-debug&action=db\n-     *\u002F\n+    \u002F\u002F url: admin.php?page=e2pdf-debug&action=db\n     public function db_action() {\n         global $wpdb;\n         if ($this->post->get('_wpnonce')) {\n@@ -48,22 +44,25 @@\n                 if ($this->post->get('e2pdf_db_repair')) {\n                     $db_prefix = $wpdb->prefix;\n                     $this->helper->load('db')->db_repair($db_prefix);\n+                    \u002F* translators: %s: Action *\u002F\n                     $this->add_notification('update', sprintf(__('Success: %s', 'e2pdf'), __('Repair DB', 'e2pdf')));\n                 } elseif ($this->post->get('e2pdf_db_repair_collate')) {\n                     $db_prefix = $wpdb->prefix;\n                     $this->helper->load('db')->db_repair_collate($db_prefix);\n+                    \u002F* translators: %s: Action *\u002F\n                     $this->add_notification('update', sprintf(__('Success: %s', 'e2pdf'), __('Repair DB Collate', 'e2pdf')));\n                 } elseif ($this->post->get('e2pdf_db')) {\n                     $db_prefix = $wpdb->prefix;\n                     $this->helper->load('db')->db_init($db_prefix);\n+                    \u002F* translators: %s: Action *\u002F\n                     $this->add_notification('update', sprintf(__('Success: %s', 'e2pdf'), __('Reinitialize DB Hooks', 'e2pdf')));\n                 }\n                 $this->redirect(\n                         $this->helper->get_url(\n-                                array(\n+                                [\n                                     'page' => 'e2pdf-debug',\n                                     'action' => 'db',\n-                                )\n+                                ]\n                         )\n                 );\n             } else {\n@@ -74,85 +73,78 @@\n         $this->view('db_check_collate', $this->helper->load('db')->db_check_collate($wpdb->prefix));\n     }\n \n-    \u002F**\n-     * @url admin.php?page=e2pdf-debug&action=phpinfo\n-     *\u002F\n+    \u002F\u002F url: admin.php?page=e2pdf-debug&action=phpinfo\n     public function phpinfo_action() {\n         $this->view('phpinfo', $this->get_php_info());\n     }\n \n-    \u002F**\n-     * @url admin.php?page=e2pdf-debug&action=requests\n-     *\u002F\n+    \u002F\u002F url: admin.php?page=e2pdf-debug&action=requests\n     public function connections_action() {\n-        $connections = array(\n-            'self_connection' => array(),\n-            'api_connection_upload' => array(),\n-            'api_connection_download' => array(),\n-        );\n+        $connections = [\n+            'self_connection' => [],\n+            'api_connection_upload' => [],\n+            'api_connection_download' => [],\n+        ];\n \n         $url = plugins_url('img\u002Floader.svg?v=' . time(), $this->helper->get('plugin_file_path'));\n         $image = $this->helper->load('image')->get_by_url($url);\n         if ($image !== '\u003C?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\u003Csvg xmlns:svg=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" xmlns:xlink=\"http:\u002F\u002Fwww.w3.org\u002F1999\u002Fxlink\" version=\"1.0\" width=\"20px\" height=\"20px\" viewBox=\"0 0 128 128\" xml:space=\"preserve\">\u003Cg>\u003Cpath d=\"M63.9.45A63.46 63.46 0 1 1 .47 63.9 63.46 63.46 0 0 1 63.9.46zM41.8 19.38a22.27 22.27 0 1 1-22.3 22.27 22.27 22.27 0 0 1 22.27-22.27z\" fill=\"#808080\" fill-rule=\"evenodd\"\u002F>\u003CanimateTransform attributeName=\"transform\" type=\"rotate\" from=\"0 64 64\" to=\"360 64 64\" dur=\"960ms\" repeatCount=\"indefinite\">\u003C\u002FanimateTransform>\u003C\u002Fg>\u003C\u002Fsvg>') {\n-            $connections['self_connection'] = array(\n+            $connections['self_connection'] = [\n                 'error' => '',\n-            );\n+            ];\n         }\n \n         $file = 10000000;\n-        $times = array();\n+        $times = [];\n         $times[] = microtime(true);\n         $model_e2pdf_api = new Model_E2pdf_Api();\n         $model_e2pdf_api->set(\n-                array(\n+                [\n                     'action' => 'common\u002Fconnection',\n-                    'data' => array(\n-                        'upload' => str_repeat(\" \", $file),\n-                    ),\n-                )\n+                    'data' => [\n+                        'upload' => str_repeat(' ', $file),\n+                    ],\n+                ]\n         );\n         $request = $model_e2pdf_api->request();\n         $times[] = microtime(true);\n         if (isset($request['error'])) {\n-            $connections['api_connection_upload'] = array(\n+            $connections['api_connection_upload'] = [\n                 'error' => $request['error'],\n                 'result' => '',\n-            );\n+            ];\n         } else {\n-            $connections['api_connection_upload'] = array(\n-                'result' => $this->helper->load('convert')->from_bytes($file \u002F ($times[1] - $times[0])) . '\u002Fs (' . $this->helper->load('convert')->from_bytes($file) . ' in ' . number_format(($times[1] - $times[0]), 2) . 's)'\n-            );\n+            $connections['api_connection_upload'] = [\n+                'result' => $this->helper->load('convert')->from_bytes($file \u002F ($times[1] - $times[0])) . '\u002Fs (' . $this->helper->load('convert')->from_bytes($file) . ' in ' . number_format(($times[1] - $times[0]), 2) . 's)',\n+            ];\n         }\n \n         $times[] = microtime(true);\n         $model_e2pdf_api = new Model_E2pdf_Api();\n         $model_e2pdf_api->set(\n-                array(\n+                [\n                     'action' => 'common\u002Fconnection',\n-                    'data' => array(\n+                    'data' => [\n                         'download' => true,\n-                    ),\n-                )\n+                    ],\n+                ]\n         );\n         $request = $model_e2pdf_api->request();\n         $times[] = microtime(true);\n         if (isset($request['error'])) {\n-            $connections['api_connection_download'] = array(\n+            $connections['api_connection_download'] = [\n                 'error' => $request['error'],\n                 'result' => '',\n-            );\n+            ];\n         } else {\n-            $connections['api_connection_download'] = array(\n-                'result' => $this->helper->load('convert')->from_bytes($file \u002F ($times[3] - $times[2])) . '\u002Fs (' . $this->helper->load('convert')->from_bytes($file) . ' in ' . number_format(($times[3] - $times[2]), 2) . 's)'\n-            );\n+            $connections['api_connection_download'] = [\n+                'result' => $this->helper->load('convert')->from_bytes($file \u002F ($times[3] - $times[2])) . '\u002Fs (' . $this->helper->load('convert')->from_bytes($file) . ' in ' . number_format(($times[3] - $times[2]), 2) . 's)',\n+            ];\n         }\n         $this->view('connections', $connections);\n     }\n \n-    \u002F**\n-     * Get phpinfo\n-     * @return string - PHP Info\n-     *\u002F\n+    \u002F\u002F php info\n     public function get_php_info() {\n         ob_start();\n         phpinfo();\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fcontroller\u002Fe2pdf-integrations.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fcontroller\u002Fe2pdf-integrations.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fcontroller\u002Fe2pdf-integrations.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fcontroller\u002Fe2pdf-integrations.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -1,12 +1,11 @@\n \u003C?php\n \n \u002F**\n- * E2pdf Integrations Controller\n- * @copyright  Copyright 2017 https:\u002F\u002Fe2pdf.com\n- * @license    GPLv3\n- * @version    1\n- * @link       https:\u002F\u002Fe2pdf.com\n- * @since      0.00.01\n+ * File: \u002Fcontroller\u002Fe2pdf-integrations.php\n+ *\n+ * @package  E2Pdf\n+ * @license  GPLv3\n+ * @link     https:\u002F\u002Fe2pdf.com\n  *\u002F\n if (!defined('ABSPATH')) {\n     die('Access denied.');\n@@ -14,24 +13,21 @@\n \n class Controller_E2pdf_Integrations extends Helper_E2pdf_View {\n \n-    \u002F**\n-     * @url admin.php?page=e2pdf-integrations\n-     *\u002F\n+    \u002F\u002F url: admin.php?page=e2pdf-integrations\n     public function index_action() {\n         if ($this->post->get('_wpnonce')) {\n             if (wp_verify_nonce($this->post->get('_wpnonce'), 'e2pdf_integrations')) {\n+                \u002F* translators: %s: Action *\u002F\n                 $this->add_notification('update', sprintf(__('Success: %s', 'e2pdf'), __('Settings Saved', 'e2pdf')));\n             } else {\n                 wp_die($this->message('wp_verify_nonce_error'));\n             }\n         }\n-        $this->view('options', Model_E2pdf_Options::get_options(false, array('zapier_group')));\n+        $this->view('options', Model_E2pdf_Options::get_options(false, ['zapier_group']));\n         $this->view('groups', $this->get_groups());\n     }\n \n-    \u002F**\n-     * @url admin.php?page=e2pdf-integrations&action=adobesign\n-     *\u002F\n+    \u002F\u002F url: admin.php?page=e2pdf-integrations&action=adobesign\n     public function adobesign_action() {\n         if ($this->post->get('_wpnonce')) {\n             if (wp_verify_nonce($this->post->get('_wpnonce'), 'e2pdf_integrations')) {\n@@ -45,15 +41,14 @@\n                     $this->add_notification('update', __('Not Authorized', 'e2pdf'));\n                     $this->redirect(\n                             $this->helper->get_url(\n-                                    array(\n+                                    [\n                                         'page' => 'e2pdf-integrations',\n                                         'action' => 'adobesign',\n-                                    )\n+                                    ]\n                             )\n                     );\n                 } else {\n-                    $model_e2pdf_adobesign = new Model_E2pdf_AdobeSign();\n-                    $request = $model_e2pdf_adobesign->get_code();\n+                    $request = (new Model_E2pdf_AdobeSign())->get_code();\n                     if (isset($request['redirect'])) {\n                         $this->redirect($request['redirect']);\n                     }\n@@ -64,8 +59,7 @@\n         } elseif ($this->get->get('code') && $this->get->get('_wpnonce') && get_option('e2pdf_adobesign_client_id', '') && get_option('e2pdf_adobesign_client_secret', '')) {\n             if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf_adobe')) {\n                 update_option('e2pdf_adobesign_code', sanitize_text_field(wp_unslash($this->get->get('code'))));\n-                $model_e2pdf_adobesign = new Model_E2pdf_AdobeSign();\n-                $request = $model_e2pdf_adobesign->get_token();\n+                $request = (new Model_E2pdf_AdobeSign())->get_token();\n                 if (isset($request['error'])) {\n                     $this->add_notification('error', $request['error']);\n                 } else {\n@@ -73,34 +67,68 @@\n                 }\n                 $this->redirect(\n                         $this->helper->get_url(\n-                                array(\n+                                [\n                                     'page' => 'e2pdf-integrations',\n                                     'action' => 'adobesign',\n-                                )\n+                                ]\n                         )\n                 );\n             } else {\n                 wp_die($this->message('wp_verify_nonce_error'));\n             }\n         } else {\n-            $model_e2pdf_adobesign = new Model_E2pdf_AdobeSign();\n+            new Model_E2pdf_AdobeSign();\n         }\n \n-        $this->view('options', Model_E2pdf_Options::get_options(false, array('adobesign_group')));\n+        $this->view('options', Model_E2pdf_Options::get_options(false, ['adobesign_group']));\n+        $this->view('groups', $this->get_groups());\n+    }\n+\n+    \u002F\u002F url: admin.php?page=e2pdf-integrations&action=gdrive\n+    public function gdrive_action() {\n+        if ($this->post->get('_wpnonce')) {\n+            if (wp_verify_nonce($this->post->get('_wpnonce'), 'e2pdf_integrations')) {\n+                if (\n+                        get_option('e2pdf_gdrive_client_id', '') !== $this->post->get('e2pdf_gdrive_client_id') ||\n+                        get_option('e2pdf_gdrive_client_secret', '') !== $this->post->get('e2pdf_gdrive_client_secret')\n+                ) {\n+                    Model_E2pdf_Options::update_options('gdrive_group', $this->post->get());\n+                    if (!get_option('e2pdf_gdrive_client_id', '') || !get_option('e2pdf_gdrive_client_secret', '')) {\n+                        $this->add_notification('update', __('Not Authorized', 'e2pdf'));\n+                        $this->redirect(\n+                                $this->helper->get_url(\n+                                        [\n+                                            'page' => 'e2pdf-integrations',\n+                                            'action' => 'gdrive',\n+                                        ]\n+                                )\n+                        );\n+                    } else {\n+                        $request = (new Model_E2pdf_Gdrive())->get_code();\n+                        if (isset($request['redirect'])) {\n+                            $this->redirect($request['redirect']);\n+                        }\n+                    }\n+                }\n+            } else {\n+                wp_die($this->message('wp_verify_nonce_error'));\n+            }\n+        } else {\n+            new Model_E2pdf_Gdrive();\n+        }\n+        $this->view('options', Model_E2pdf_Options::get_options(false, ['gdrive_group']));\n         $this->view('groups', $this->get_groups());\n     }\n \n-    \u002F**\n-     * Get options list\n-     * @return array() - Options list\n-     *\u002F\n+    \u002F\u002F get integration option groups\n     public function get_groups() {\n         $groups = Model_E2pdf_Options::get_options(\n                 false,\n-                array(\n+                [\n                     'zapier_group',\n                     'adobesign_group',\n-                ),\n+                    'gdrive_group',\n+                ],\n                 false\n         );\n \ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fcontroller\u002Fe2pdf-license.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fcontroller\u002Fe2pdf-license.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fcontroller\u002Fe2pdf-license.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fcontroller\u002Fe2pdf-license.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -1,12 +1,11 @@\n \u003C?php\n \n \u002F**\n- * E2Pdf License Controller\n- * @copyright  Copyright 2017 https:\u002F\u002Fe2pdf.com\n- * @license    GPLv3\n- * @version    1\n- * @link       https:\u002F\u002Fe2pdf.com\n- * @since      0.00.01\n+ * File: \u002Fcontroller\u002Fe2pdf-license.php\n+ *\n+ * @package  E2Pdf\n+ * @license  GPLv3\n+ * @link     https:\u002F\u002Fe2pdf.com\n  *\u002F\n if (!defined('ABSPATH')) {\n     die('Access denied.');\n@@ -49,26 +48,27 @@\n             $data = $this->post->get('data');\n             $model_e2pdf_api = new Model_E2pdf_Api();\n             $model_e2pdf_api->set(\n-                    array(\n+                    [\n                         'action' => 'license\u002Fupdate',\n-                        'data' => array(\n+                        'data' => [\n                             'license_key' => isset($data['license_key']) ? trim($data['license_key']) : '',\n-                        ),\n-                    )\n+                        ],\n+                    ]\n             );\n             $request = $model_e2pdf_api->request();\n             if (isset($request['error'])) {\n                 $this->add_notification('error', $request['error']);\n             } else {\n+                \u002F* translators: %s: Action *\u002F\n                 $this->add_notification('update', sprintf(__('Success: %s', 'e2pdf'), __('License Key Updated', 'e2pdf')));\n             }\n-            $response = array(\n+            $response = [\n                 'redirect' => $this->helper->get_url(\n-                        array(\n+                        [\n                             'page' => 'e2pdf-license',\n-                        )\n+                        ]\n                 ),\n-            );\n+            ];\n         } else {\n             $response['error'] = $this->message('wp_verify_nonce_error');\n         }\n@@ -85,10 +85,10 @@\n         if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf_license')) {\n             $model_e2pdf_api = new Model_E2pdf_Api();\n             $model_e2pdf_api->set(\n-                    array(\n+                    [\n                         'action' => 'license\u002Factivation',\n-                        'data' => array(),\n-                    )\n+                        'data' => [],\n+                    ]\n             );\n             $request = $model_e2pdf_api->request();\n             if (isset($request['error'])) {\n@@ -102,29 +102,31 @@\n                 }\n                 $model_e2pdf_api = new Model_E2pdf_Api();\n                 $model_e2pdf_api->set(\n-                        array(\n+                        [\n                             'action' => 'license\u002Frequest',\n-                            'data' => array(),\n-                        )\n+                            'data' => [],\n+                        ]\n                 );\n                 $request = $model_e2pdf_api->request();\n                 if (isset($request['success'])) {\n+                    \u002F* translators: %s: Action *\u002F\n                     $this->add_notification('update', sprintf(__('Success: %s', 'e2pdf'), __('License Key Restored', 'e2pdf')));\n                 } else {\n-                    $this->add_notification('error', sprintf(__('Failed to Restore License Key. Contact Support at \u003Ca target=\"_blank\" href=\"%s\">%s\u003C\u002Fa>', 'e2pdf'), 'https:\u002F\u002Fe2pdf.com\u002Fsupport\u002Fcontact', 'https:\u002F\u002Fe2pdf.com\u002Fsupport\u002Fcontact'));\n+                    \u002F* translators: %1$s: Url, %2$s: Url   *\u002F\n+                    $this->add_notification('error', sprintf(__('Failed to Restore License Key. Contact Support at \u003Ca target=\"_blank\" href=\"%1$s\">%2$s\u003C\u002Fa>', 'e2pdf'), 'https:\u002F\u002Fe2pdf.com\u002Fsupport\u002Fcontact', 'https:\u002F\u002Fe2pdf.com\u002Fsupport\u002Fcontact'));\n                 }\n                 if (file_exists($file)) {\n                     unlink($file);\n                 }\n                 delete_transient('e2pdf_activation_key');\n             }\n-            $response = array(\n+            $response = [\n                 'redirect' => $this->helper->get_url(\n-                        array(\n+                        [\n                             'page' => 'e2pdf-license',\n-                        )\n+                        ]\n                 ),\n-            );\n+            ];\n         } else {\n             $response['error'] = $this->message('wp_verify_nonce_error');\n         }\n@@ -135,23 +137,24 @@\n         if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf_license')) {\n             $model_e2pdf_api = new Model_E2pdf_Api();\n             $model_e2pdf_api->set(\n-                    array(\n+                    [\n                         'action' => 'template\u002Fdeactivateall',\n-                    )\n+                    ]\n             );\n             $request = $model_e2pdf_api->request();\n             if (isset($request['error'])) {\n                 $this->add_notification('error', $request['error']);\n             } else {\n+                \u002F* translators: %s: Action *\u002F\n                 $this->add_notification('update', sprintf(__('Success: %s', 'e2pdf'), __('Deactivated', 'e2pdf')));\n             }\n-            $response = array(\n+            $response = [\n                 'redirect' => $this->helper->get_url(\n-                        array(\n+                        [\n                             'page' => 'e2pdf-license',\n-                        )\n+                        ]\n                 ),\n-            );\n+            ];\n         } else {\n             $response['error'] = $this->message('wp_verify_nonce_error');\n         }\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fcontroller\u002Fe2pdf.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fcontroller\u002Fe2pdf.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fcontroller\u002Fe2pdf.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fcontroller\u002Fe2pdf.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -98,6 +98,13 @@\n      * @url admin.php?page=e2pdf&action=export\n      *\u002F\n     public function export_action() {\n+\n+        $wpml = $this->helper->load('translator')->isWPML();\n+        if ($wpml) {\n+            $lang = apply_filters('wpml_current_language', null);\n+            do_action('wpml_switch_language', $lang);\n+        }\n+\n         if ($this->get->get('template_id')) {\n             $url = array(\n                 'page' => 'e2pdf',\n@@ -125,7 +132,7 @@\n \n         $atts = array(\n             'user_id' => 0,\n-            'inline' => $disposition == 'inline' ? 'true' : 'false',\n+            'inline' => $disposition == 'inline' ? '1' : '0',\n         );\n \n         $args = array();\n@@ -201,14 +208,14 @@\n                 if ($template->extension()->verify()) {\n \n                     if (array_key_exists('inline', $atts)) {\n-                        $inline = $atts['inline'] == 'true' ? '1' : '0';\n+                        $inline = $atts['inline'];\n                         if ($template->get('inline') !== $inline) {\n                             $entry->set_data('inline', $inline);\n                         }\n                     }\n \n                     if (array_key_exists('flatten', $atts)) {\n-                        $flatten = strval((int) $atts['flatten']);\n+                        $flatten = $atts['flatten'];\n                         if ($template->get('flatten') !== $flatten) {\n                             $entry->set_data('flatten', $flatten);\n                             $template->set('flatten', $flatten);\n@@ -329,9 +336,7 @@\n                         $this->render('blocks', 'notifications');\n                         $this->index_action();\n                     } else {\n-                        $filename = $template->get_name();\n-                        $file = $request['file'];\n-                        $this->download_response($template->get('format'), $file, $filename, $disposition, false, true);\n+                        $this->download_response($template->get('format'), $request['file'], $template->get_name(), $disposition, false, true);\n                         exit;\n                     }\n                 } else {\n@@ -500,6 +505,13 @@\n      *\u002F\n     public function ajax_templates() {\n         if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf')) {\n+\n+            $wpml = $this->helper->load('translator')->isWPML();\n+            if ($wpml) {\n+                $lang = apply_filters('wpml_current_language', null);\n+                do_action('wpml_switch_language', $lang);\n+            }\n+\n             $content = array(\n                 'id' => 0,\n                 'datasets' => array(),\n@@ -511,10 +523,22 @@\n             if ($template->load($template_id)) {\n                 $content['id'] = $template_id;\n                 if ($template->get('item') == '-2') {\n-                    $content['datasets']['dataset'] = $this->get_datasets($template_id, $template->get('item1'), $template->get('dataset_title1'));\n-                    $content['datasets']['dataset2'] = $this->get_datasets($template_id, $template->get('item2'), $template->get('dataset_title2'));\n+                    $content['datasets']['dataset'] = $this->get_datasets(\n+                            $template_id,\n+                            $template->get('item1'),\n+                            $this->helper->load('translator')->pre_translate($template->get('dataset_title1'), $template_id, 'dataset_title1', 'template')\n+                    );\n+                    $content['datasets']['dataset2'] = $this->get_datasets(\n+                            $template_id,\n+                            $template->get('item2'),\n+                            $this->helper->load('translator')->pre_translate($template->get('dataset_title2'), $template_id, 'dataset_title2', 'template')\n+                    );\n                 } else {\n-                    $content['datasets']['dataset'] = $this->get_datasets($template_id);\n+                    $content['datasets']['dataset'] = $this->get_datasets(\n+                            $template_id,\n+                            false,\n+                            $this->helper->load('translator')->pre_translate($template->get('dataset_title'), $template_id, 'dataset_title', 'template')\n+                    );\n                 }\n                 $actions = $template->extension()->get_template_actions($template_id);\n                 if (isset($actions->delete) && $actions->delete) {\n@@ -533,8 +557,8 @@\n             }\n \n             $content['options'] = array(\n-                'name' => $template->get('name'),\n-                'savename' => $template->get('savename'),\n+                'name' => $this->helper->load('translator')->pre_translate($template->get('name'), $template_id, 'name', 'template'),\n+                'savename' => $this->helper->load('translator')->pre_translate($template->get('savename'), $template_id, 'savename', 'template'),\n                 'password' => $template->get('password'),\n                 'user_id' => get_current_user_id(),\n                 'flatten' => $template->get('flatten'),\n@@ -724,6 +748,13 @@\n                     $model_e2pdf_bulk = new Model_E2pdf_Bulk();\n                     $model_e2pdf_bulk->set('template_id', $template->get('ID'));\n                     if (isset($data['options'])) {\n+                        $wpml = $this->helper->load('translator')->isWPML();\n+                        if ($wpml) {\n+                            $lang = apply_filters('wpml_current_language', null);\n+                            if ($lang) {\n+                                $data['options']['lang'] = $lang;\n+                            }\n+                        }\n                         $data['options']['args'] = isset($data['options[args]']) ? $data['options[args]'] : array();\n                         $model_e2pdf_bulk->set('options', $data['options']);\n                     }\n@@ -857,6 +888,8 @@\n                                             }\n                                         }\n                                     }\n+                                } elseif ($key == 'lang') {\n+                                    do_action('wpml_switch_language', $value);\n                                 } else {\n                                     $atts[$key] = $value;\n                                 }\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fcontroller\u002Fe2pdf-settings.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fcontroller\u002Fe2pdf-settings.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fcontroller\u002Fe2pdf-settings.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fcontroller\u002Fe2pdf-settings.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -368,6 +368,7 @@\n                 array(\n                     'static_group',\n                     'adobesign_group',\n+                    'gdrive_group',\n                     'zapier_group',\n                 ),\n                 true\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fcontroller\u002Fe2pdf-templates.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fcontroller\u002Fe2pdf-templates.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fcontroller\u002Fe2pdf-templates.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fcontroller\u002Fe2pdf-templates.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -183,9 +183,7 @@\n                     $this->add_notification('error', $request['error']);\n                     $this->render('blocks', 'notifications');\n                 } else {\n-                    $filename = $template->get_name();\n-                    $file = $request['file'];\n-                    $this->download_response($template->get('format'), $file, $filename, 'inline');\n+                    $this->download_response($template->get('format'), $request['file'], $template->get_name(), 'inline');\n                     exit;\n                 }\n             } else {\n@@ -338,9 +336,7 @@\n                         $this->add_notification('error', $request['error']);\n                         $this->render('blocks', 'notifications');\n                     } else {\n-                        $filename = 'template';\n-                        $file = $request['file'];\n-                        $this->download_response('php', $file, $filename);\n+                        $this->download_response('php', $request['file'], 'template');\n                         exit;\n                     }\n                 } else {\n@@ -349,9 +345,7 @@\n                         $this->add_notification('error', $request['error']);\n                         $this->render('blocks', 'notifications');\n                     } else {\n-                        $filename = $template->get_name();\n-                        $file = $request['file'];\n-                        $this->download_response($template->get('format'), $file, $filename, 'inline', false, true);\n+                        $this->download_response($template->get('format'), $request['file'], $template->get_name(), 'inline', false, true);\n                         exit;\n                     }\n                 }\n@@ -508,339 +502,357 @@\n      *\u002F\n     public function import_action() {\n         if ($this->post->get('_wpnonce')) {\n-            if (wp_verify_nonce($this->post->get('_wpnonce'), 'e2pdf_templates')) {\n-                $errors = array();\n-                $import = $this->files->get('template');\n-                $name = $import['name'];\n-                $tmp = $import['tmp_name'];\n-                $ext = strtolower(pathinfo($name, PATHINFO_EXTENSION));\n-                if (!$tmp) {\n-                    $this->add_notification('error', __('Choose Template file to upload', 'e2pdf'));\n-                } elseif ($import['error']) {\n-                    $this->add_notification('error', $import['error']);\n-                } elseif (!in_array($ext, array('xml'))) {\n-                    $this->add_notification('error', sprintf(__('Only %s files allowed', 'e2pdf'), '.xml'));\n-                } elseif ($import['type'] != 'text\u002Fxml') {\n-                    $this->add_notification('error', __('Invalid Type', 'e2pdf'));\n+\n+            if (!wp_verify_nonce($this->post->get('_wpnonce'), 'e2pdf_templates')) {\n+                wp_die($this->message('wp_verify_nonce_error'));\n+            }\n+\n+            $errors = array();\n+            $import = $this->files->get('template');\n+            $name = $import['name'];\n+            $tmp = $import['tmp_name'];\n+            $ext = strtolower(pathinfo($name, PATHINFO_EXTENSION));\n+            if (!$tmp) {\n+                $this->add_notification('error', __('Choose Template file to upload', 'e2pdf'));\n+            } elseif ($import['error']) {\n+                $this->add_notification('error', $import['error']);\n+            } elseif (!in_array($ext, array('xml'))) {\n+                $this->add_notification('error', sprintf(__('Only %s files allowed', 'e2pdf'), '.xml'));\n+            } elseif ($import['type'] != 'text\u002Fxml') {\n+                $this->add_notification('error', __('Invalid Type', 'e2pdf'));\n+            } else {\n+                $options = $this->post->get('options');\n+                $xml = simplexml_load_file($import['tmp_name'], 'SimpleXMLElement', LIBXML_PARSEHUGE);\n+                if (!isset($xml->template->pages)) {\n+                    $this->add_notification('error', __('The file is not a valid E2Pdf Template', 'e2pdf'));\n                 } else {\n-                    $options = $this->post->get('options');\n-                    $xml = simplexml_load_file($import['tmp_name'], 'SimpleXMLElement', LIBXML_PARSEHUGE);\n-                    if (!isset($xml->template->pages)) {\n-                        $this->add_notification('error', __('The file is not a valid E2Pdf Template', 'e2pdf'));\n-                    } else {\n-                        $pages = $this->helper->load('convert')->unserialize(base64_decode((string) $xml->template->pages));\n-                        if (is_array($pages)) {\n-                            foreach ($pages as $page_key => $page) {\n-                                if (isset($page['elements']) && !empty($page['elements'])) {\n-                                    foreach ($page['elements'] as $element_key => $element) {\n-                                        if ($element['type'] === 'e2pdf-image' && isset($element['base64']) && $element['base64']) {\n-                                            if ($options['images']) {\n-                                                $image = base64_decode($element['base64']);\n-                                                $file_name = basename($element['value']);\n-                                                $upload_file = wp_upload_bits($file_name, null, $image);\n-                                                if (!$upload_file['error']) {\n-                                                    $wp_filetype = wp_check_filetype($file_name, null);\n-                                                    $attachment = array(\n-                                                        'post_mime_type' => $wp_filetype['type'],\n-                                                        'post_parent' => 0,\n-                                                        'post_title' => preg_replace('\u002F\\.[^.]+$\u002F', '', $file_name),\n-                                                        'post_content' => '',\n-                                                        'post_status' => 'inherit',\n-                                                    );\n-                                                    $attachment_id = wp_insert_attachment($attachment, $upload_file['file'], 0);\n-                                                    if (!is_wp_error($attachment_id)) {\n-                                                        require_once ABSPATH . 'wp-admin\u002Fincludes\u002Fimage.php';\n-                                                        $attachment_data = wp_generate_attachment_metadata($attachment_id, $upload_file['file']);\n-                                                        wp_update_attachment_metadata($attachment_id, $attachment_data);\n-                                                        $pages[$page_key]['elements'][$element_key]['value'] = $upload_file['url'];\n-                                                    }\n+                    $pages = $this->helper->load('convert')->unserialize(base64_decode((string) $xml->template->pages));\n+                    if (is_array($pages)) {\n+                        foreach ($pages as $page_key => $page) {\n+                            if (isset($page['elements']) && !empty($page['elements'])) {\n+                                foreach ($page['elements'] as $element_key => $element) {\n+                                    if ($element['type'] === 'e2pdf-image' && isset($element['base64']) && $element['base64']) {\n+                                        if ($options['images']) {\n+                                            $image = base64_decode($element['base64']);\n+                                            $file_name = basename($element['value']);\n+                                            $upload_file = wp_upload_bits($file_name, null, $image);\n+                                            if (!$upload_file['error']) {\n+                                                $wp_filetype = wp_check_filetype($file_name, null);\n+                                                $attachment = array(\n+                                                    'post_mime_type' => $wp_filetype['type'],\n+                                                    'post_parent' => 0,\n+                                                    'post_title' => preg_replace('\u002F\\.[^.]+$\u002F', '', $file_name),\n+                                                    'post_content' => '',\n+                                                    'post_status' => 'inherit',\n+                                                );\n+                                                $attachment_id = wp_insert_attachment($attachment, $upload_file['file'], 0);\n+                                                if (!is_wp_error($attachment_id)) {\n+                                                    require_once ABSPATH . 'wp-admin\u002Fincludes\u002Fimage.php';\n+                                                    $attachment_data = wp_generate_attachment_metadata($attachment_id, $upload_file['file']);\n+                                                    wp_update_attachment_metadata($attachment_id, $attachment_data);\n+                                                    $pages[$page_key]['elements'][$element_key]['value'] = $upload_file['url'];\n                                                 }\n                                             }\n-                                            unset($pages[$page_key]['elements'][$element_key]['base64']);\n                                         }\n+                                        unset($pages[$page_key]['elements'][$element_key]['base64']);\n                                     }\n                                 }\n                             }\n                         }\n+                    }\n \n-                        $template = new Model_E2pdf_Template();\n-                        if ($options['overwrite']) {\n-                            $template->load((string) $xml->template->ID);\n-                        }\n-                        $template->set('title', (string) $xml->template->title);\n-                        $template->set('flatten', (string) $xml->template->flatten);\n-                        if (isset($xml->template->tab_order)) {\n-                            $template->set('tab_order', (string) $xml->template->tab_order);\n-                        }\n-                        $template->set('compression', (string) $xml->template->compression);\n-                        if (isset($xml->template->optimization)) {\n-                            $template->set('optimization', (string) $xml->template->optimization);\n-                        }\n-                        $template->set('appearance', (string) $xml->template->appearance);\n-                        $template->set('width', (string) $xml->template->width);\n-                        $template->set('height', (string) $xml->template->height);\n-                        $template->set('extension', (string) $xml->template->extension);\n-                        if (isset($xml->template->item)) {\n-                            $template->set('item', (string) $xml->template->item);\n-                        }\n-                        if (isset($xml->template->item1)) {\n-                            $template->set('item1', (string) $xml->template->item1);\n-                        }\n-                        if (isset($xml->template->item2)) {\n-                            $template->set('item2', (string) $xml->template->item2);\n-                        }\n-\n-                        $fpro2pdf_backup = false;\n-                        if ($xml->source) {\n-                            if ((string) $xml->source == 'fpro2pdf') {\n-                                $fpro2pdf_backup = true;\n+                    $template = new Model_E2pdf_Template();\n+                    if ($options['overwrite']) {\n+                        if ($options['overwrite'] == '1' && $options['template_id']) {\n+                            $template->load((int) $options['template_id']);\n+                        } elseif ($options['overwrite'] == '2' && $options['custom_template_id']) {\n+                            if (!$template->load((int) $options['custom_template_id'])) {\n+                                $template->set('TMP_ID', (int) $options['custom_template_id']);\n+                            }\n+                        } elseif ($options['overwrite'] == '3') {\n+                            if (!$template->load((int) $xml->template->ID)) {\n+                                $template->set('TMP_ID', (int) $xml->template->ID);\n                             }\n                         }\n+                    }\n+                    $template->set('title', (string) $xml->template->title);\n+                    $template->set('flatten', (string) $xml->template->flatten);\n+                    if (isset($xml->template->tab_order)) {\n+                        $template->set('tab_order', (string) $xml->template->tab_order);\n+                    }\n+                    $template->set('compression', (string) $xml->template->compression);\n+                    if (isset($xml->template->optimization)) {\n+                        $template->set('optimization', (string) $xml->template->optimization);\n+                    }\n+                    $template->set('appearance', (string) $xml->template->appearance);\n+                    $template->set('width', (string) $xml->template->width);\n+                    $template->set('height', (string) $xml->template->height);\n+                    $template->set('extension', (string) $xml->template->extension);\n+                    if (isset($xml->template->item)) {\n+                        $template->set('item', (string) $xml->template->item);\n+                    }\n+                    if (isset($xml->template->item1)) {\n+                        $template->set('item1', (string) $xml->template->item1);\n+                    }\n+                    if (isset($xml->template->item2)) {\n+                        $template->set('item2', (string) $xml->template->item2);\n+                    }\n \n-                        $extension = new Model_E2pdf_Extension();\n-                        $extension->load($template->get('extension'));\n-                        if ($options['item'] && $xml->item && !$fpro2pdf_backup) {\n-                            $extension->set('item', $template->get('item'));\n-                            if ($template->get('item') == '-2') {\n-                                $extension->set('item1', $template->get('item1'));\n-                                $extension->set('item2', $template->get('item2'));\n-                            }\n+                    $fpro2pdf_backup = false;\n+                    if ($xml->source) {\n+                        if ((string) $xml->source == 'fpro2pdf') {\n+                            $fpro2pdf_backup = true;\n+                        }\n+                    }\n+\n+                    $extension = new Model_E2pdf_Extension();\n+                    $extension->load($template->get('extension'));\n+                    if ($options['item'] && $xml->item && !$fpro2pdf_backup) {\n+                        $extension->set('item', $template->get('item'));\n+                        if ($template->get('item') == '-2') {\n+                            $extension->set('item1', $template->get('item1'));\n+                            $extension->set('item2', $template->get('item2'));\n+                        }\n \n-                            $updated_items = $extension->import($xml->item, $options);\n-                            if ($updated_items) {\n-                                if (isset($updated_items['errors'])) {\n-                                    $errors = array_merge($errors, $updated_items['errors']);\n+                        $updated_items = $extension->import($xml->item, $options);\n+                        if ($updated_items) {\n+                            if (isset($updated_items['errors'])) {\n+                                $errors = array_merge($errors, $updated_items['errors']);\n+                            } else {\n+                                if ($template->get('item') == '-2') {\n+                                    if ($template->get('item1') && isset($updated_items[$template->get('item1')])) {\n+                                        $item1 = $updated_items[$template->get('item1')];\n+                                        $template->set('item1', $item1);\n+                                        $extension->set('item1', $item1);\n+                                    } else {\n+                                        $template->set('item1', '');\n+                                        $extension->set('item1', '');\n+                                    }\n+                                    if ($template->get('item2') && isset($updated_items[$template->get('item2')])) {\n+                                        $item2 = $updated_items[$template->get('item2')];\n+                                        $template->set('item2', $item2);\n+                                        $extension->set('item2', $item2);\n+                                    } else {\n+                                        $template->set('item2', '');\n+                                        $extension->set('item2', '');\n+                                    }\n                                 } else {\n-                                    if ($template->get('item') == '-2') {\n-                                        if ($template->get('item1') && isset($updated_items[$template->get('item1')])) {\n-                                            $item1 = $updated_items[$template->get('item1')];\n-                                            $template->set('item1', $item1);\n-                                            $extension->set('item1', $item1);\n-                                        } else {\n-                                            $template->set('item1', '');\n-                                            $extension->set('item1', '');\n-                                        }\n-                                        if ($template->get('item2') && isset($updated_items[$template->get('item2')])) {\n-                                            $item2 = $updated_items[$template->get('item2')];\n-                                            $template->set('item2', $item2);\n-                                            $extension->set('item2', $item2);\n-                                        } else {\n-                                            $template->set('item2', '');\n-                                            $extension->set('item2', '');\n-                                        }\n+                                    if (isset($updated_items[$template->get('item')])) {\n+                                        $item = $updated_items[$template->get('item')];\n+                                        $template->set('item', $item);\n+                                        $extension->set('item', $item);\n                                     } else {\n-                                        if (isset($updated_items[$template->get('item')])) {\n-                                            $item = $updated_items[$template->get('item')];\n-                                            $template->set('item', $item);\n-                                            $extension->set('item', $item);\n-                                        } else {\n-                                            $template->set('item', '');\n-                                            $extension->set('item', '');\n-                                        }\n+                                        $template->set('item', '');\n+                                        $extension->set('item', '');\n                                     }\n                                 }\n                             }\n                         }\n+                    }\n \n-                        $template->set('format', (string) $xml->template->format);\n-                        if (isset($xml->template->resample)) {\n-                            $template->set('resample', (string) $xml->template->resample);\n-                        }\n-                        $template->set(\n-                                'dataset_title',\n-                                apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->dataset_title, $options, $xml, $template, $extension)\n-                        );\n-                        if (isset($xml->template->dataset_title1)) {\n-                            $template->set(\n-                                    'dataset_title1',\n-                                    apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->dataset_title1, $options, $xml, $template, $extension)\n-                            );\n-                        }\n-                        if (isset($xml->template->dataset_title2)) {\n-                            $template->set(\n-                                    'dataset_title2',\n-                                    apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->dataset_title2, $options, $xml, $template, $extension)\n-                            );\n-                        }\n-                        $template->set(\n-                                'button_title',\n-                                apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->button_title, $options, $xml, $template, $extension)\n-                        );\n-                        if (isset($xml->template->dpdf)) {\n-                            $template->set(\n-                                    'dpdf',\n-                                    apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->dpdf, $options, $xml, $template, $extension)\n-                            );\n-                        }\n-                        if (isset($xml->template->attachments)) {\n-                            $template->set(\n-                                    'attachments',\n-                                    apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->attachments, $options, $xml, $template, $extension)\n-                            );\n-                        }\n-                        $template->set('inline', (string) $xml->template->inline);\n-                        $template->set('auto', (string) $xml->template->auto);\n-                        if (isset($xml->template->rtl)) {\n-                            $template->set('rtl', (string) $xml->template->rtl);\n-                        }\n-                        if (isset($xml->template->font_processor)) {\n-                            $template->set('font_processor', (string) $xml->template->font_processor);\n-                        }\n-                        $template->set(\n-                                'name',\n-                                apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->name, $options, $xml, $template, $extension)\n-                        );\n-                        if (isset($xml->template->savename)) {\n-                            $template->set(\n-                                    'savename',\n-                                    apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->savename, $options, $xml, $template, $extension)\n-                            );\n-                        }\n-                        $template->set(\n-                                'password',\n-                                apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->password, $options, $xml, $template, $extension)\n-                        );\n-                        if (isset($xml->template->owner_password)) {\n-                            $template->set(\n-                                    'owner_password',\n-                                    apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->owner_password, $options, $xml, $template, $extension)\n-                            );\n-                        }\n-                        if (isset($xml->template->permissions)) {\n-                            $template->set('permissions', $this->helper->load('convert')->unserialize(base64_decode((string) $xml->template->permissions)));\n-                        } else {\n-                            $template->set('permissions', array('printing'));\n-                        }\n-                        if (isset($xml->template->hooks)) {\n-                            $template->set(\n-                                    'hooks',\n-                                    (string) $xml->template->hooks\n-                            );\n-                        }\n-\n+                    $template->set('format', (string) $xml->template->format);\n+                    if (isset($xml->template->resample)) {\n+                        $template->set('resample', (string) $xml->template->resample);\n+                    }\n+                    $template->set(\n+                            'dataset_title',\n+                            apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->dataset_title, $options, $xml, $template, $extension)\n+                    );\n+                    if (isset($xml->template->dataset_title1)) {\n                         $template->set(\n-                                'meta_title',\n-                                apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->meta_title, $options, $xml, $template, $extension)\n+                                'dataset_title1',\n+                                apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->dataset_title1, $options, $xml, $template, $extension)\n                         );\n+                    }\n+                    if (isset($xml->template->dataset_title2)) {\n                         $template->set(\n-                                'meta_subject',\n-                                apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->meta_subject, $options, $xml, $template, $extension)\n+                                'dataset_title2',\n+                                apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->dataset_title2, $options, $xml, $template, $extension)\n                         );\n+                    }\n+                    $template->set(\n+                            'button_title',\n+                            apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->button_title, $options, $xml, $template, $extension)\n+                    );\n+                    if (isset($xml->template->dpdf)) {\n                         $template->set(\n-                                'meta_author',\n-                                apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->meta_author, $options, $xml, $template, $extension)\n+                                'dpdf',\n+                                apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->dpdf, $options, $xml, $template, $extension)\n                         );\n+                    }\n+                    if (isset($xml->template->attachments)) {\n                         $template->set(\n-                                'meta_keywords',\n-                                apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->meta_keywords, $options, $xml, $template, $extension)\n+                                'attachments',\n+                                apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->attachments, $options, $xml, $template, $extension)\n                         );\n-                        if (isset($xml->template->lang_code)) {\n-                            $template->set('lang_code', (string) $xml->template->lang_code);\n-                        }\n-                        $template->set('font', (string) $xml->template->font);\n-                        $template->set('font_size', (string) $xml->template->font_size);\n-                        $template->set('font_color', (string) $xml->template->font_color);\n-                        $template->set('line_height', (string) $xml->template->line_height);\n-                        if (isset($xml->template->text_align)) {\n-                            $template->set('text_align', (string) $xml->template->text_align);\n-                        }\n-                        $template->set('fonts', $this->helper->load('convert')->unserialize(base64_decode((string) $xml->template->fonts)));\n+                    }\n+                    $template->set('inline', (string) $xml->template->inline);\n+                    $template->set('auto', (string) $xml->template->auto);\n+                    if (isset($xml->template->rtl)) {\n+                        $template->set('rtl', (string) $xml->template->rtl);\n+                    }\n+                    if (isset($xml->template->font_processor)) {\n+                        $template->set('font_processor', (string) $xml->template->font_processor);\n+                    }\n+                    $template->set(\n+                            'name',\n+                            apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->name, $options, $xml, $template, $extension)\n+                    );\n+                    if (isset($xml->template->savename)) {\n                         $template->set(\n-                                'properties',\n-                                apply_filters('e2pdf_controller_templates_import_properties', $this->helper->load('convert')->unserialize(base64_decode((string) $xml->template->properties)), $options, $xml, $template, $extension)\n+                                'savename',\n+                                apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->savename, $options, $xml, $template, $extension)\n                         );\n+                    }\n+                    $template->set(\n+                            'password',\n+                            apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->password, $options, $xml, $template, $extension)\n+                    );\n+                    if (isset($xml->template->owner_password)) {\n                         $template->set(\n-                                'actions',\n-                                apply_filters('e2pdf_controller_templates_import_actions', $this->helper->load('convert')->unserialize(base64_decode((string) $xml->template->actions)), $options, $xml, $template, $extension)\n+                                'owner_password',\n+                                apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->owner_password, $options, $xml, $template, $extension)\n                         );\n+                    }\n+                    if (isset($xml->template->permissions)) {\n+                        $template->set('permissions', $this->helper->load('convert')->unserialize(base64_decode((string) $xml->template->permissions)));\n+                    } else {\n+                        $template->set('permissions', array('printing'));\n+                    }\n+                    if (isset($xml->template->hooks)) {\n                         $template->set(\n-                                'pages',\n-                                apply_filters('e2pdf_controller_templates_import_pages', $pages, $options, $xml, $template, $extension)\n+                                'hooks',\n+                                (string) $xml->template->hooks\n                         );\n+                    }\n \n-                        if ($options['fonts'] && $xml->fonts) {\n-                            $model_e2pdf_font = new Model_E2pdf_Font();\n-                            $fonts = $model_e2pdf_font->get_fonts();\n-\n-                            if ($xml->fonts) {\n-                                foreach ($xml->fonts->children() as $key => $font) {\n-                                    $title = (string) $font->title;\n-                                    $name = (string) $font->name;\n-                                    $value = (string) $font->value;\n+                    $template->set(\n+                            'meta_title',\n+                            apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->meta_title, $options, $xml, $template, $extension)\n+                    );\n+                    $template->set(\n+                            'meta_subject',\n+                            apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->meta_subject, $options, $xml, $template, $extension)\n+                    );\n+                    $template->set(\n+                            'meta_author',\n+                            apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->meta_author, $options, $xml, $template, $extension)\n+                    );\n+                    $template->set(\n+                            'meta_keywords',\n+                            apply_filters('e2pdf_controller_templates_import_replace_shortcodes', (string) $xml->template->meta_keywords, $options, $xml, $template, $extension)\n+                    );\n+                    if (isset($xml->template->lang_code)) {\n+                        $template->set('lang_code', (string) $xml->template->lang_code);\n+                    }\n+                    $template->set('font', (string) $xml->template->font);\n+                    $template->set('font_size', (string) $xml->template->font_size);\n+                    $template->set('font_color', (string) $xml->template->font_color);\n+                    $template->set('line_height', (string) $xml->template->line_height);\n+                    if (isset($xml->template->text_align)) {\n+                        $template->set('text_align', (string) $xml->template->text_align);\n+                    }\n+                    $template->set('fonts', $this->helper->load('convert')->unserialize(base64_decode((string) $xml->template->fonts)));\n+                    $template->set(\n+                            'properties',\n+                            apply_filters('e2pdf_controller_templates_import_properties', $this->helper->load('convert')->unserialize(base64_decode((string) $xml->template->properties)), $options, $xml, $template, $extension)\n+                    );\n+                    $template->set(\n+                            'actions',\n+                            apply_filters('e2pdf_controller_templates_import_actions', $this->helper->load('convert')->unserialize(base64_decode((string) $xml->template->actions)), $options, $xml, $template, $extension)\n+                    );\n+                    $template->set(\n+                            'pages',\n+                            apply_filters('e2pdf_controller_templates_import_pages', $pages, $options, $xml, $template, $extension)\n+                    );\n \n-                                    if ($title == 'Noto Sans' && $name == 'NotoSans-Regular.ttf') {\n-                                        $title = 'Noto Sans Regular';\n-                                    }\n+                    if ($options['fonts'] && $xml->fonts) {\n+                        $model_e2pdf_font = new Model_E2pdf_Font();\n+                        $fonts = $model_e2pdf_font->get_fonts();\n \n-                                    $exist = array_search($title, $fonts);\n-                                    if (!$exist) {\n-                                        if (!file_exists($this->helper->get('fonts_dir') . $name)) {\n-                                            $f_name = $name;\n-                                        } else {\n-                                            $i = 0;\n-                                            do {\n-                                                $f_name = $i . '_' . $name;\n-                                                $i++;\n-                                            } while (file_exists($this->helper->get('fonts_dir') . $f_name));\n-                                        }\n-                                        $font_ext = strtolower(pathinfo($f_name, PATHINFO_EXTENSION));\n-                                        if (in_array($font_ext, $model_e2pdf_font->get_allowed_extensions())) {\n-                                            file_put_contents($this->helper->get('fonts_dir') . $f_name, base64_decode($value));\n-                                        }\n+                        if ($xml->fonts) {\n+                            foreach ($xml->fonts->children() as $key => $font) {\n+                                $title = (string) $font->title;\n+                                $name = (string) $font->name;\n+                                $value = (string) $font->value;\n+\n+                                if ($title == 'Noto Sans' && $name == 'NotoSans-Regular.ttf') {\n+                                    $title = 'Noto Sans Regular';\n+                                }\n+\n+                                $exist = array_search($title, $fonts);\n+                                if (!$exist) {\n+                                    if (!file_exists($this->helper->get('fonts_dir') . $name)) {\n+                                        $f_name = $name;\n+                                    } else {\n+                                        $i = 0;\n+                                        do {\n+                                            $f_name = $i . '_' . $name;\n+                                            $i++;\n+                                        } while (file_exists($this->helper->get('fonts_dir') . $f_name));\n+                                    }\n+                                    $font_ext = strtolower(pathinfo($f_name, PATHINFO_EXTENSION));\n+                                    if (in_array($font_ext, $model_e2pdf_font->get_allowed_extensions())) {\n+                                        file_put_contents($this->helper->get('fonts_dir') . $f_name, base64_decode($value), LOCK_EX);\n                                     }\n                                 }\n                             }\n                         }\n+                    }\n \n-                        if ($xml->pdf && $xml->pdf->source) {\n+                    if ($xml->pdf && $xml->pdf->source) {\n \n-                            $pdf_name = md5(time());\n-                            $pdf_dir = $this->helper->get('pdf_dir') . $pdf_name . '\u002F';\n-                            $pdf_images_dir = $pdf_dir . 'images\u002F';\n-\n-                            $this->helper->create_dir($pdf_dir);\n-                            $this->helper->create_dir($pdf_images_dir);\n-\n-                            $pdf_source = (string) $xml->pdf->source;\n-                            file_put_contents($pdf_dir . $pdf_name . '.pdf', base64_decode($pdf_source));\n-\n-                            if ($xml->pdf->images) {\n-                                foreach ($xml->pdf->images->children() as $key => $image) {\n-                                    $page_id = (string) $image->page_id;\n-                                    $image_source = (string) $image->source;\n-                                    file_put_contents($pdf_dir . 'images\u002F' . $page_id . '.png', base64_decode($image_source));\n-                                }\n+                        $pdf_name = md5(time());\n+                        $pdf_dir = $this->helper->get('pdf_dir') . $pdf_name . '\u002F';\n+                        $pdf_images_dir = $pdf_dir . 'images\u002F';\n+\n+                        $this->helper->create_dir($pdf_dir);\n+                        $this->helper->create_dir($pdf_images_dir);\n+\n+                        $pdf_source = (string) $xml->pdf->source;\n+                        file_put_contents($pdf_dir . $pdf_name . '.pdf', base64_decode($pdf_source), LOCK_EX);\n+\n+                        if ($xml->pdf->images) {\n+                            foreach ($xml->pdf->images->children() as $key => $image) {\n+                                $page_id = (string) $image->page_id;\n+                                $image_source = (string) $image->source;\n+                                file_put_contents($pdf_dir . 'images\u002F' . $page_id . '.png', base64_decode($image_source), LOCK_EX);\n                             }\n-                            $template->set('pdf', $pdf_name);\n                         }\n+                        $template->set('pdf', $pdf_name);\n+                    }\n \n-                        if (empty($errors)) {\n-                            $template->save(true);\n-                            if ($options['item']) {\n-                                $extension->after_import((string) $xml->template->ID, $template->get('ID'));\n-                            }\n-                            $template->activate();\n-                            if ($template->get('ID')) {\n-                                $this->add_notification('update', sprintf(\n-                                                __('Imported: %1$d: \u003Ca target=\"_blank\" href=\"%2$s\">View\u003C\u002Fa> | \u003Ca target=\"_blank\" href=\"%3$s\">Edit\u003C\u002Fa>', 'e2pdf'),\n-                                                '1',\n-                                                $this->helper->get_url(array('page' => 'e2pdf-templates', 'action' => 'view', 'id' => $template->get('ID'))),\n-                                                $this->helper->get_url(array('page' => 'e2pdf-templates', 'action' => 'edit', 'id' => $template->get('ID')))\n-                                        )\n-                                );\n-                            } else {\n-                                $this->add_notification('error', __('Something went wrong!', 'e2pdf'));\n-                            }\n+                    if (empty($errors)) {\n+                        $template->save(true);\n+                        if ($options['item']) {\n+                            $extension->after_import((string) $xml->template->ID, $template->get('ID'));\n+                        }\n+                        $template->activate();\n+                        if ($template->get('ID')) {\n+                            $this->add_notification(\n+                                    'update', sprintf(\n+                                            __('Imported: %1$d: \u003Ca target=\"_blank\" href=\"%2$s\">View\u003C\u002Fa> | \u003Ca target=\"_blank\" href=\"%3$s\">Edit\u003C\u002Fa>', 'e2pdf'),\n+                                            '1',\n+                                            $this->helper->get_url(\n+                                                    [\n+                                                        'page' => 'e2pdf-templates',\n+                                                        'action' => 'view',\n+                                                        'id' => $template->get('ID')\n+                                                    ]\n+                                            ),\n+                                            $this->helper->get_url(array('page' => 'e2pdf-templates', 'action' => 'edit', 'id' => $template->get('ID')))\n+                                    )\n+                            );\n                         } else {\n-                            foreach ($errors as $key => $error) {\n-                                $this->add_notification('error', $error);\n-                            }\n+                            $this->add_notification('error', __('Something went wrong!', 'e2pdf'));\n+                        }\n+                    } else {\n+                        foreach ($errors as $key => $error) {\n+                            $this->add_notification('error', $error);\n                         }\n                     }\n-                    unlink($import['tmp_name']);\n                 }\n-            } else {\n-                wp_die($this->message('wp_verify_nonce_error'));\n+                unlink($import['tmp_name']);\n             }\n         }\n \n@@ -850,18 +862,68 @@\n             $this->view('import_disabled', true);\n         }\n \n+        global $wpdb;\n+\n+        $order_condition = array(\n+            'orderby' => 'ID',\n+            'order' => 'desc',\n+        );\n+        $orderby = $this->helper->load('db')->prepare_orderby($order_condition);\n+        $tpls = $wpdb->get_results($wpdb->prepare('SELECT `ID`, `title` FROM `' . (new Model_E2pdf_Template())->get_table() . '`' . $orderby . ''));\n+        $templates = [\n+            '' => __('--- Select ---', 'e2pdf')\n+        ];\n+        if (!empty($tpls)) {\n+            foreach ($tpls as $tpl) {\n+                $templates[$tpl->ID] = $tpl->ID . ' | ' . $tpl->title;\n+            }\n+        }\n+\n         $options = array(\n-            'common' => array(\n-                'name' => __('Template Options', 'e2pdf'),\n-                'options' => array(\n-                    array(\n+            'overwrite' => [\n+                'name' => __('Overwrite Options', 'e2pdf'),\n+                'options' => [\n+                    [\n                         'name' => __('Overwrite Template by ID', 'e2pdf'),\n                         'key' => 'options[overwrite]',\n-                        'value' => '0',\n-                        'default_value' => '0',\n-                        'type' => 'checkbox',\n-                        'placeholder' => '',\n-                    ),\n+                        'value' => '',\n+                        'default_value' => '',\n+                        'type' => 'select',\n+                        'options' => [\n+                            '' => __('Create New E2Pdf Template ID', 'e2pdf'),\n+                            '1' => __('Existing Template ID', 'e2pdf'),\n+                            '2' => __('Custom Template ID', 'e2pdf'),\n+                            '3' => __('Backup Template ID', 'e2pdf'),\n+                        ]\n+                    ],\n+                    [\n+                        'name' => __('Template ID', 'e2pdf'),\n+                        'key' => 'options[template_id]',\n+                        'value' => '',\n+                        'default_value' => '',\n+                        'type' => 'select',\n+                        'options' => $templates,\n+                        'li' => array(\n+                            'class' => 'e2pdf-import-overwrite-option e2pdf-hide',\n+                        ),\n+                    ],\n+                    [\n+                        'name' => __('Template ID', 'e2pdf'),\n+                        'key' => 'options[custom_template_id]',\n+                        'value' => '',\n+                        'default_value' => '',\n+                        'type' => 'text',\n+                        'class' => 'e2pdf-numbers',\n+                        'placeholder' => __('Template ID', 'e2pdf'),\n+                        'li' => array(\n+                            'class' => 'e2pdf-import-overwrite-option e2pdf-hide',\n+                        ),\n+                    ],\n+                ],\n+            ],\n+            'template' => array(\n+                'name' => __('Template Options', 'e2pdf'),\n+                'options' => array(\n                     array(\n                         'name' => __('Import Images', 'e2pdf'),\n                         'key' => 'options[images]',\n@@ -914,7 +976,7 @@\n                     $template = new Model_E2pdf_Template();\n                     if ($template->load($this->post->get('id'))) {\n                         if ($template->get('title') != '') {\n-                            $filename = $template->get('title') . '.' . date('Y-m-d.H-i-s') . '.e2pdf';\n+                            $filename = $template->get('ID') . ' - ' . $template->get('title') . '.' . date('Y-m-d.H-i-s') . '.e2pdf';\n                         } else {\n                             $filename = date('Y-m-d.H-i-s') . '.e2pdf';\n                         }\n@@ -924,7 +986,15 @@\n                                 if (isset($page['elements']) && !empty($page['elements'])) {\n                                     foreach ($page['elements'] as $element_key => $element) {\n                                         if ($element['type'] === 'e2pdf-image') {\n-                                            $pages[$page_key]['elements'][$element_key]['base64'] = $this->helper->load('image')->get_image($element['value']);\n+                                            $file = false;\n+                                            if ($this->helper->load('pdf')->get_extension($element['value'])) {\n+                                                $file = $this->helper->load('pdf')->get_pdf($element['value']);\n+                                            } else {\n+                                                $file = $this->helper->load('image')->get_image($element['value']);\n+                                            }\n+                                            if ($file) {\n+                                                $pages[$page_key]['elements'][$element_key]['base64'] = $file;\n+                                            }\n                                         }\n                                     }\n                                 }\n@@ -1049,9 +1119,7 @@\n                                 )\n                         );\n \n-                        \u002F*\n-                         * Include PDF\n-                         *\u002F\n+                        \u002F\u002F include pdf\n                         if ($template->get('pdf')) {\n                             $pdf_xml = $xml->addChild('pdf');\n                             $pdf_xml->addChildCData('source', base64_encode(file_get_contents($this->helper->get('pdf_dir') . $template->get('pdf') . '\u002F' . $template->get('pdf') . '.pdf')));\n@@ -1063,9 +1131,7 @@\n                             }\n                         }\n \n-                        \u002F*\n-                         * Include Fonts\n-                         *\u002F\n+                        \u002F\u002F include fonts\n                         if ($options['fonts']) {\n                             $fonts_xml = $xml->addChild('fonts');\n                             if ($template->get('fonts')) {\n@@ -1079,18 +1145,14 @@\n                             }\n                         }\n \n-                        \u002F*\n-                         * Include Item\n-                         *\u002F\n+                        \u002F\u002F include item\n                         if ($options['item']) {\n                             if ($template->extension()->method('backup')) {\n                                 $item = $xml->addChild('item');\n                                 $template->extension()->backup($item);\n                             }\n                         }\n-\n-                        $file = $this->helper->load('xml')->get_xml();\n-                        $this->download_response('xml', $file, $filename);\n+                        $this->download_response('xml', $this->helper->load('xml')->get_xml(), $filename);\n                         exit;\n                     } else {\n                         $this->add_notification('error', __('Something went wrong!', 'e2pdf'));\n@@ -1155,6 +1217,7 @@\n         }\n     }\n \n+    \u002F\u002F screen action\n     public function screen_action() {\n         $option = $this->post->get('wp_screen_options');\n         if (is_array($option) && isset($option['option']) && isset($option['value']) && $option['value']) {\n@@ -1168,12 +1231,7 @@\n         $this->redirect($location);\n     }\n \n-    \u002F**\n-     * Save template via ajax\n-     * action: wp_ajax_e2pdf_save_form\n-     * function: e2pdf_save_form\n-     * @return json\n-     *\u002F\n+    \u002F\u002F ajax save form\n     public function ajax_save_form() {\n         global $wpdb;\n         if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf_templates')) {\n@@ -1255,12 +1313,7 @@\n         $this->json_response($response);\n     }\n \n-    \u002F**\n-     * Get extensions via ajax\n-     * action: wp_ajax_e2pdf_extension\n-     * function: e2pdf_extension\n-     * @return json\n-     *\u002F\n+    \u002F\u002F ajax extension\n     public function ajax_extension() {\n         if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf_templates')) {\n             $data = $this->post->get('data');\n@@ -1297,12 +1350,7 @@\n         $this->json_response($response);\n     }\n \n-    \u002F**\n-     * Get extensions via ajax\n-     * action: wp_ajax_e2pdf_extension\n-     * function: e2pdf_extension\n-     * @return json\n-     *\u002F\n+    \u002F\u002F ajax visual mapper\n     public function ajax_visual_mapper() {\n         if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf_templates')) {\n             $data = $this->post->get('data');\n@@ -1336,476 +1384,485 @@\n         $this->json_response($response);\n     }\n \n-    \u002F**\n-     * Upload Template via Ajax\n-     * action: wp_ajax_e2pdf_upload\n-     * function: e2pdf_upload\n-     * @return json\n-     *\u002F\n+    \u002F\u002F ajax upload\n     public function ajax_upload() {\n \n-        if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf_templates')) {\n-            $data = $this->post->get();\n-            $post_extension = $data['extension'];\n-            $item = isset($data['item']) ? $data['item'] : '';\n-            $template_id = isset($data['template_id']) && $data['template_id'] ? $data['template_id'] : false;\n+        if (!wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf_templates')) {\n+            $this->json_response(\n+                    [\n+                        'error' => $this->message('wp_verify_nonce_error'),\n+                    ]\n+            );\n+        }\n \n-            $font = isset($data['font']) ? $data['font'] : false;\n-            $font_size = isset($data['font_size']) ? $data['font_size'] : false;\n-            $line_height = isset($data['line_height']) ? $data['line_height'] : false;\n-            $title = isset($data['title']) ? $data['title'] : __('(no title)', 'e2pdf');\n-            $rtl = isset($data['rtl']) && $data['rtl'] ? '1' : '0';\n-            $text_align = isset($data['text_align']) ? $data['text_align'] : 'left';\n-            $pdf = $this->files->get('pdf');\n-            $name = strtolower($pdf['name']);\n-            $ext = strtolower(pathinfo($name, PATHINFO_EXTENSION));\n+        $data = $this->post->get();\n+        $post_extension = $data['extension'];\n+        $item = isset($data['item']) ? $data['item'] : '';\n+        $template_id = isset($data['template_id']) && $data['template_id'] ? $data['template_id'] : false;\n+        $font = isset($data['font']) ? $data['font'] : false;\n+        $font_size = isset($data['font_size']) ? $data['font_size'] : false;\n+        $line_height = isset($data['line_height']) ? $data['line_height'] : false;\n+        $title = isset($data['title']) ? $data['title'] : __('(no title)', 'e2pdf');\n+        $rtl = isset($data['rtl']) && $data['rtl'] ? '1' : '0';\n+        $text_align = isset($data['text_align']) ? $data['text_align'] : 'left';\n+        $pdf = $this->files->get('pdf');\n+        $name = strtolower($pdf['name']);\n+        $ext = strtolower(pathinfo($name, PATHINFO_EXTENSION));\n+\n+        if (!empty($pdf['error'])) {\n+            $this->json_response(\n+                    [\n+                        'error' => $pdf['error'],\n+                    ]\n+            );\n+        } elseif (!in_array($ext, array('pdf'))) {\n+            $this->json_response(\n+                    [\n+                        'error' => sprintf(__('Only %s files allowed', 'e2pdf'), '.pdf'),\n+                    ]\n+            );\n+        } elseif ($pdf['type'] != 'application\u002Fpdf') {\n+            $this->json_response(\n+                    [\n+                        'error' => __('Invalid Type', 'e2pdf'),\n+                    ]\n+            );\n+        }\n \n-            if ($pdf['error']) {\n-                $error = $pdf['error'];\n-            } elseif (!in_array($ext, array('pdf'))) {\n-                $error = sprintf(__('Only %s files allowed', 'e2pdf'), '.pdf');\n-            } elseif ($pdf['type'] != 'application\u002Fpdf') {\n-                $error = __('Invalid Type', 'e2pdf');\n-            } else {\n-                $error = false;\n-            }\n+        wp_raise_memory_limit('admin');\n+        if (get_option('e2pdf_api_protocol', '0') == '1') {\n+            $upload = class_exists('CURLFile') ? new CURLFile(realpath($pdf['tmp_name'])) : '@' . realpath($pdf['tmp_name']);\n+        } else {\n+            $upload = base64_encode(file_get_contents($pdf['tmp_name']));\n+        }\n \n-            if ($error) {\n-                $response = array(\n-                    'error' => $error,\n-                );\n-            } else {\n-                wp_raise_memory_limit('admin');\n-                $model_e2pdf_api = new Model_E2pdf_Api();\n-                $model_e2pdf_api->set(\n-                        array(\n-                            'action' => 'template\u002Fupload',\n-                            'data' => array(\n-                                'title' => $name,\n-                                'pdf' => base64_encode(file_get_contents($pdf['tmp_name'])),\n-                            ),\n-                        )\n-                );\n-                $request = $model_e2pdf_api->request();\n+        $model_e2pdf_api = new Model_E2pdf_Api();\n+        $model_e2pdf_api->set(\n+                array(\n+                    'action' => 'template\u002Fupload2',\n+                    'data' => array(\n+                        'title' => $name,\n+                        'pdf' => $upload,\n+                    ),\n+                )\n+        );\n+        $request = $model_e2pdf_api->request();\n+\n+        if (isset($request['error'])) {\n+            $this->json_response(\n+                    [\n+                        'error' => $request['error'],\n+                    ]\n+            );\n+        }\n \n-                if (!isset($request['error'])) {\n+        $extension = new Model_E2pdf_Extension();\n+        if ($post_extension) {\n+            $extension->load($post_extension);\n+            if ($item && $item != '-1') {\n+                $extension->set('item', $item);\n+            }\n+        }\n \n-                    $extension = new Model_E2pdf_Extension();\n-                    if ($post_extension) {\n-                        $extension->load($post_extension);\n-                        if ($item && $item != '-1') {\n-                            $extension->set('item', $item);\n+        $pdf_name = md5(time());\n+        $pdf_dir = $this->helper->get('pdf_dir') . $pdf_name . '\u002F';\n+        $pdf_images_dir = $pdf_dir . 'images\u002F';\n+        $this->helper->create_dir($pdf_dir);\n+        $this->helper->create_dir($pdf_images_dir);\n+        move_uploaded_file($pdf['tmp_name'], $pdf_dir . $pdf_name . '.pdf');\n+\n+        try {\n+            $xml_template = [];\n+            $pages = [];\n+            if (class_exists('XMLReader')) {\n+                $reader = new XMLReader();\n+                if (!$reader->XML($request['file'])) {\n+                    throw new Exception(__('Failed to parse PDF', 'e2pdf'));\n+                }\n+                while ($reader->read()) {\n+                    if ($reader->nodeType == XMLReader::ELEMENT) {\n+                        switch ($reader->name) {\n+                            case 'template':\n+                                $template_node = new SimpleXMLElement($reader->readOuterXML(), LIBXML_PARSEHUGE);\n+                                $xml_template = [\n+                                    'width' => (string) $template_node->width,\n+                                    'height' => (string) $template_node->height,\n+                                    'format' => (string) $template_node->format,\n+                                    'compression' => (string) $template_node->compression,\n+                                    'appearance' => (string) $template_node->appearance,\n+                                    'meta_title' => (string) $template_node->meta_title,\n+                                    'meta_subject' => (string) $template_node->meta_subject,\n+                                    'meta_author' => (string) $template_node->meta_author,\n+                                    'meta_keywords' => (string) $template_node->meta_keywords,\n+                                    'lang_code' => (string) $template_node->lang_code,\n+                                    'font' => (string) $template_node->font,\n+                                    'font_size' => (string) $template_node->font_size,\n+                                    'font_color' => (string) $template_node->font_color,\n+                                ];\n+                                break;\n+                            case 'page':\n+                                $page_node = new SimpleXMLElement($reader->readOuterXML(), LIBXML_PARSEHUGE);\n+                                $this->helper->load('xml')->parse_xml_page($page_node, $pages, $pdf_images_dir, $extension);\n+                                break;\n+                            case 'fonts':\n+                                $fonts_node = new SimpleXMLElement($reader->readOuterXML(), LIBXML_PARSEHUGE);\n+                                foreach ($fonts_node->children() as $font) {\n+                                    $this->helper->load('xml')->parse_xml_font($font);\n+                                }\n+                                break;\n+                            default:\n+                                break;\n                         }\n                     }\n+                }\n \n-                    $pdf_name = md5(time());\n-                    $pdf_dir = $this->helper->get('pdf_dir') . $pdf_name . '\u002F';\n-                    $pdf_images_dir = $pdf_dir . 'images\u002F';\n+                $reader->close();\n+                unset($reader);\n+            } elseif (is_callable('simplexml_load_string')) {\n+                $xml = simplexml_load_string($request['file'], 'SimpleXMLElement', LIBXML_PARSEHUGE);\n+                if (isset($xml->pages)) {\n+                    foreach ($xml->pages->page as $page_node) {\n+                        $this->helper->load('xml')->parse_xml_page($page_node, $pages, $pdf_images_dir, $extension);\n+                    }\n+                }\n+                if (isset($xml->template)) {\n+                    $xml_template = [\n+                        'width' => (string) $xml->template->width,\n+                        'height' => (string) $xml->template->height,\n+                        'format' => (string) $xml->template->format,\n+                        'compression' => (string) $xml->template->compression,\n+                        'appearance' => (string) $xml->template->appearance,\n+                        'meta_title' => (string) $xml->template->meta_title,\n+                        'meta_subject' => (string) $xml->template->meta_subject,\n+                        'meta_author' => (string) $xml->template->meta_author,\n+                        'meta_keywords' => (string) $xml->template->meta_keywords,\n+                        'lang_code' => (string) $xml->template->lang_code,\n+                        'font' => (string) $xml->template->font,\n+                        'font_size' => (string) $xml->template->font_size,\n+                        'font_color' => (string) $xml->template->font_color,\n+                    ];\n+                }\n+                if (isset($xml->fonts) && $xml->fonts) {\n+                    foreach ($xml->fonts->children() as $key => $font) {\n+                        $this->helper->load('xml')->parse_xml_font($font);\n+                    }\n+                }\n+            }\n \n-                    $this->helper->create_dir($pdf_dir);\n-                    $this->helper->create_dir($pdf_images_dir);\n+            if (empty($pages) || !is_array($pages)) {\n+                throw new Exception(__('Failed to parse PDF pages', 'e2pdf'));\n+            }\n \n-                    move_uploaded_file($pdf['tmp_name'], $pdf_dir . $pdf_name . '.pdf');\n+            $this->helper->load('sort')->stable_uasort($pages, 'sort_by_pageid');\n \n-                    $xml = simplexml_load_string(base64_decode($request['file']), 'SimpleXMLElement', LIBXML_PARSEHUGE);\n-                    $pages = $this->helper->load('convert')->unserialize(base64_decode((string) $xml->template->pages));\n+            $template = new Model_E2pdf_Template();\n+            if ($template_id) {\n+                $template->load($template_id);\n+                $template->set('title', $title);\n+                $template->set('pages', $pages);\n+                $template->set('pdf', $pdf_name);\n+                $template->set('width', $xml_template['width']);\n+                $template->set('height', $xml_template['height']);\n+                $template->set('extension', $post_extension);\n+                $template->set('item', $item);\n+                $template->set('rtl', $rtl);\n+                $template->set('font', $font ? $font : $xml_template['font']);\n+                $template->set('font_size', $font_size ? $font_size : $xml_template['font_size']);\n+                $template->set('line_height', $line_height ? $line_height : $xml_template['font_size']);\n+                $template->set('text_align', $text_align);\n+            } else {\n+                $template->set('title', $title);\n+                $template->set('flatten', '1');\n+                $template->set('format', $xml_template['format']);\n+                $template->set('compression', $xml_template['compression']);\n+                $template->set('appearance', $xml_template['appearance']);\n+                $template->set('width', $xml_template['width']);\n+                $template->set('height', $xml_template['height']);\n+                $template->set('extension', $post_extension);\n+                $template->set('item', $item);\n+                $template->set('dataset_title', '');\n+                $template->set('button_title', '');\n+                $template->set('dpdf', '');\n+                $template->set('attachments', '');\n+                $template->set('inline', '');\n+                $template->set('auto', '');\n+                $template->set('rtl', $rtl);\n+                $template->set('name', '[e2pdf-dataset]');\n+                $template->set('savename', '[e2pdf-dataset]');\n+                $template->set('password', '');\n+                $template->set('meta_title', $xml_template['meta_title']);\n+                $template->set('meta_subject', $xml_template['meta_subject']);\n+                $template->set('meta_author', $xml_template['meta_author']);\n+                $template->set('meta_keywords', $xml_template['meta_keywords']);\n+                $template->set('lang_code', $xml_template['lang_code']);\n+                $template->set('font', $font ? $font : $xml_template['font']);\n+                $template->set('font_size', $font_size ? $font_size : $xml_template['font_size']);\n+                $template->set('line_height', $line_height ? $line_height : $xml_template['font_size']);\n+                $template->set('text_align', $text_align);\n+                $template->set('font_color', $xml_template['font_color']);\n+                $template->set('pages', $pages);\n+                $template->set('pdf', $pdf_name);\n+            }\n+            $template->save(true);\n \n-                    if (is_array($pages)) {\n-                        foreach ($pages as $page_key => $page) {\n+            if ($item == '-1' && $extension->method('auto_form')) {\n+                $template = $extension->auto_form($template, $data);\n+                $template->save(true);\n+            }\n \n-                            $pages[$page_key]['page_id'] = $page_key;\n+            if (!$template_id) {\n+                $template->activate();\n+            }\n \n-                            if (isset($page['properties']['background'])) {\n-                                file_put_contents($pdf_images_dir . $page_key . '.png', base64_decode($page['properties']['background']));\n-                                do_action('e2pdf_pdf_upload_background_save_after');\n-                                unset($pages[$page_key]['properties']['background']);\n-                            }\n+            $this->json_response(\n+                    [\n+                        'redirect' => $this->helper->get_url(\n+                                [\n+                                    'page' => 'e2pdf-templates',\n+                                    'action' => 'edit',\n+                                    'id' => $template->get('ID'),\n+                                ]\n+                        ),\n+                    ]\n+            );\n+        } catch (Exception $ex) {\n+            if (file_exists($pdf_dir)) {\n+                $this->helper->delete_dir($pdf_dir);\n+            }\n+            $this->json_response(\n+                    [\n+                        'error' => $ex->getMessage(),\n+                    ]\n+            );\n+        }\n+    }\n \n-                            if (isset($page['elements']) && !empty($page['elements'])) {\n-                                foreach ($page['elements'] as $element_key => $element) {\n-                                    if ($element['type'] === 'e2pdf-image' && isset($element['base64']) && $element['base64']) {\n-                                        $image = base64_decode($element['base64']);\n-                                        $file_name = basename($element['value']);\n-                                        if (!$file_name) {\n-                                            $ext = $this->helper->load('image')->get_extension($image);\n-                                            if ($ext) {\n-                                                $file_name = md5(mktime()) . '.' . $ext;\n-                                            }\n-                                        }\n-                                        if ($file_name) {\n-                                            $upload_file = wp_upload_bits($file_name, null, $image);\n-                                            if (!$upload_file['error']) {\n-                                                $wp_filetype = wp_check_filetype($file_name, null);\n-                                                $attachment = array(\n-                                                    'post_mime_type' => $wp_filetype['type'],\n-                                                    'post_parent' => 0,\n-                                                    'post_title' => preg_replace('\u002F\\.[^.]+$\u002F', '', $file_name),\n-                                                    'post_content' => '',\n-                                                    'post_status' => 'inherit',\n-                                                );\n-                                                $attachment_id = wp_insert_attachment($attachment, $upload_file['file'], 0);\n-                                                if (!is_wp_error($attachment_id)) {\n-                                                    require_once ABSPATH . 'wp-admin\u002Fincludes\u002Fimage.php';\n-                                                    $attachment_data = wp_generate_attachment_metadata($attachment_id, $upload_file['file']);\n-                                                    wp_update_attachment_metadata($attachment_id, $attachment_data);\n-                                                    $pages[$page_key]['elements'][$element_key]['value'] = $upload_file['url'];\n-                                                }\n-                                            }\n+    \u002F\u002F ajax reupload\n+    public function ajax_reupload() {\n \n-                                            unset($pages[$page_key]['elements'][$element_key]['base64']);\n-                                        } else {\n-                                            unset($pages[$page_key]['elements'][$element_key]);\n-                                        }\n-                                    } elseif (isset($element['name']) && $element['name']) {\n-                                        $el_value = $extension->auto_map($element['name']);\n-                                        if ($el_value !== false) {\n-                                            $pages[$page_key]['elements'][$element_key]['value'] = $el_value;\n-                                        }\n-                                    }\n-                                }\n-                            }\n-                        }\n+        if (!wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf_templates')) {\n+            $this->json_response(\n+                    [\n+                        'error' => $this->message('wp_verify_nonce_error'),\n+                    ]\n+            );\n+        }\n \n-                        $this->helper->load('sort')->stable_uasort($pages, 'sort_by_pageid');\n+        $data = $this->post->get();\n+        $new = isset($data['new']) ? $data['new'] : array();\n+        $flush = isset($data['flush']) ? $data['flush'] : array();\n+        $positions = isset($data['positions']) ? $data['positions'] : array();\n+        $template_id = isset($data['template_id']) && $data['template_id'] ? $data['template_id'] : false;\n+        if (!$template_id) {\n+            return false;\n+        }\n \n-                        $template = new Model_E2pdf_Template();\n+        $pdf = $this->files->get('pdf');\n+        $name = strtolower($pdf['name']);\n+        $ext = strtolower(pathinfo($name, PATHINFO_EXTENSION));\n+\n+        if (!empty($pdf['error'])) {\n+            $this->json_response(\n+                    [\n+                        'error' => $pdf['error'],\n+                    ]\n+            );\n+        } elseif (!in_array($ext, array('pdf'))) {\n+            $this->json_response(\n+                    [\n+                        'error' => sprintf(__('Only %s files allowed', 'e2pdf'), '.pdf'),\n+                    ]\n+            );\n+        } elseif ($pdf['type'] != 'application\u002Fpdf') {\n+            $this->json_response(\n+                    [\n+                        'error' => __('Invalid Type', 'e2pdf'),\n+                    ]\n+            );\n+        }\n \n-                        if ($template_id) {\n-                            $template->load($template_id);\n-                            $template->set('title', $title);\n-                            $template->set('pages', $pages);\n-                            $template->set('pdf', $pdf_name);\n-                            $template->set('width', (string) $xml->template->width);\n-                            $template->set('height', (string) $xml->template->height);\n-                            $template->set('extension', $post_extension);\n-                            $template->set('item', $item);\n-                            $template->set('rtl', $rtl);\n-                            $template->set('font', $font ? $font : (string) $xml->template->font);\n-                            $template->set('font_size', $font_size ? $font_size : (string) $xml->template->font_size);\n-                            $template->set('line_height', $line_height ? $line_height : (string) $xml->template->font_size);\n-                            $template->set('text_align', $text_align);\n-                        } else {\n-                            $template->set('title', $title);\n-                            $template->set('flatten', '1');\n-                            $template->set('format', (string) $xml->template->format);\n-                            $template->set('compression', (string) $xml->template->compression);\n-                            $template->set('appearance', (string) $xml->template->appearance);\n-                            $template->set('width', (string) $xml->template->width);\n-                            $template->set('height', (string) $xml->template->height);\n-                            $template->set('extension', $post_extension);\n-                            $template->set('item', $item);\n-                            $template->set('dataset_title', '');\n-                            $template->set('button_title', '');\n-                            $template->set('dpdf', '');\n-                            $template->set('attachments', '');\n-                            $template->set('inline', '');\n-                            $template->set('auto', '');\n-                            $template->set('rtl', $rtl);\n-                            $template->set('name', '[e2pdf-dataset]');\n-                            $template->set('savename', '[e2pdf-dataset]');\n-                            $template->set('password', '');\n-                            $template->set('meta_title', (string) $xml->template->meta_title);\n-                            $template->set('meta_subject', (string) $xml->template->meta_subject);\n-                            $template->set('meta_author', (string) $xml->template->meta_author);\n-                            $template->set('meta_keywords', (string) $xml->template->meta_keywords);\n-                            $template->set('lang_code', (string) $xml->template->lang_code);\n-                            $template->set('font', $font ? $font : (string) $xml->template->font);\n-                            $template->set('font_size', $font_size ? $font_size : (string) $xml->template->font_size);\n-                            $template->set('line_height', $line_height ? $line_height : (string) $xml->template->font_size);\n-                            $template->set('text_align', $text_align);\n-                            $template->set('font_color', (string) $xml->template->font_color);\n-                            $template->set('pages', $pages);\n-                            $template->set('pdf', $pdf_name);\n-                        }\n+        wp_raise_memory_limit('admin');\n+        if (get_option('e2pdf_api_protocol', '0') == '1') {\n+            $upload = class_exists('CURLFile') ? new CURLFile(realpath($pdf['tmp_name'])) : '@' . realpath($pdf['tmp_name']);\n+        } else {\n+            $upload = base64_encode(file_get_contents($pdf['tmp_name']));\n+        }\n \n-                        if ($xml->fonts) {\n+        $model_e2pdf_api = new Model_E2pdf_Api();\n+        $model_e2pdf_api->set(\n+                array(\n+                    'action' => 'template\u002Fupload2',\n+                    'data' => array(\n+                        'title' => $name,\n+                        'pdf' => $upload,\n+                    ),\n+                )\n+        );\n+        $request = $model_e2pdf_api->request();\n \n-                            $model_e2pdf_font = new Model_E2pdf_Font();\n-                            $fonts = $model_e2pdf_font->get_fonts();\n+        if (isset($request['error'])) {\n+            $this->json_response(\n+                    [\n+                        'error' => $request['error'],\n+                    ]\n+            );\n+        }\n \n-                            foreach ($xml->fonts->children() as $key => $font) {\n-                                $font_title = (string) $font->title;\n-                                $name = (string) $font->name;\n-                                $value = (string) $font->value;\n-                                $exist = array_search($font_title, $fonts);\n-                                if (!$exist) {\n-                                    if (!file_exists($this->helper->get('fonts_dir') . $name)) {\n-                                        $f_name = $name;\n-                                    } else {\n-                                        $i = 0;\n-                                        do {\n-                                            $f_name = $i . '_' . $name;\n-                                            $i++;\n-                                        } while (file_exists($this->helper->get('fonts_dir') . $f_name));\n-                                    }\n-                                    $font_ext = strtolower(pathinfo($f_name, PATHINFO_EXTENSION));\n-                                    if (in_array($font_ext, $model_e2pdf_font->get_allowed_extensions())) {\n-                                        file_put_contents($this->helper->get('fonts_dir') . $f_name, base64_decode($value));\n-                                    }\n-                                }\n-                            }\n-                        }\n-                        $template->save(true);\n+        $template = new Model_E2pdf_Template();\n+        if (!$template->load($template_id)) {\n+            $this->json_response(\n+                    [\n+                        'error' => __('Failed to load E2Pdf Template', 'e2pdf'),\n+                    ]\n+            );\n+        }\n \n-                        if ($item == '-1' && $extension->method('auto_form')) {\n-                            $template = $extension->auto_form($template, $data);\n-                            $template->save(true);\n+        $extension = new Model_E2pdf_Extension();\n+        if ($template->get('extension') && $template->get('item')) {\n+            $extension->load($template->get('extension'));\n+            $extension->set('item', $template->get('item'));\n+        }\n+\n+        $pdf_name = md5(time());\n+        $pdf_dir = $this->helper->get('pdf_dir') . $pdf_name . '\u002F';\n+        $pdf_images_dir = $pdf_dir . 'images\u002F';\n+        $this->helper->create_dir($pdf_dir);\n+        $this->helper->create_dir($pdf_images_dir);\n+        move_uploaded_file($pdf['tmp_name'], $pdf_dir . $pdf_name . '.pdf');\n+\n+        try {\n+            $pages = [];\n+            $pos_pages = [];\n+            if (class_exists('XMLReader')) {\n+                $reader = new XMLReader();\n+                if (!$reader->XML($request['file'])) {\n+                    throw new Exception(__('Failed to parse PDF', 'e2pdf'));\n+                }\n+                while ($reader->read()) {\n+                    if ($reader->nodeType == XMLReader::ELEMENT) {\n+                        if ($reader->name == 'page') {\n+                            $page_node = new SimpleXMLElement($reader->readOuterXML(), LIBXML_PARSEHUGE);\n+                            $pos_pages[] = (string) $page_node['number'];\n                         }\n-\n-                        if (!$template_id) {\n-                            $template->activate();\n+                    }\n+                }\n+                $reader->close();\n+                unset($reader);\n+                foreach ($positions as $pos_key => $pos_page) {\n+                    if (!in_array($pos_key, $flush)) {\n+                        if ($pos_page == '0') {\n+                            $flush[] = $pos_key;\n+                        } elseif (!in_array($pos_page, $pos_pages, false)) {\n+                            throw new Exception(sprintf(__('Invalid position of %s page', 'e2pdf'), $pos_key));\n                         }\n-\n-                        $response = array(\n-                            'redirect' => $this->helper->get_url(\n-                                    array(\n-                                        'page' => 'e2pdf-templates',\n-                                        'action' => 'edit',\n-                                        'id' => $template->get('ID'),\n-                                    )\n-                            ),\n-                        );\n-                    } else {\n-                        $this->helper->delete_dir($pdf_dir);\n-                        $response = array(\n-                            'error' => __('Something went wrong!', 'e2pdf'),\n-                        );\n                     }\n-                } else {\n-                    $response = array(\n-                        'error' => $request['error'],\n-                    );\n                 }\n-            }\n-        } else {\n-            $response['error'] = $this->message('wp_verify_nonce_error');\n-        }\n-        $this->json_response($response);\n-    }\n-\n-    \u002F**\n-     * Upload Template via Ajax\n-     * action: wp_ajax_e2pdf_upload\n-     * function: e2pdf_upload\n-     * @return json\n-     *\u002F\n-    public function ajax_reupload() {\n-\n-        $error = false;\n-        if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf_templates')) {\n-            $data = $this->post->get();\n-            $new = isset($data['new']) ? $data['new'] : array();\n-            $flush = isset($data['flush']) ? $data['flush'] : array();\n-            $positions = isset($data['positions']) ? $data['positions'] : array();\n-            $template_id = isset($data['template_id']) && $data['template_id'] ? $data['template_id'] : false;\n-            if (!$template_id) {\n-                return false;\n-            }\n-            $pdf = $this->files->get('pdf');\n-            $name = strtolower($pdf['name']);\n-            $ext = strtolower(pathinfo($name, PATHINFO_EXTENSION));\n-\n-            if ($pdf['error']) {\n-                $error = $pdf['error'];\n-            } elseif (!in_array($ext, array('pdf'))) {\n-                $error = sprintf(__('Only %s files allowed', 'e2pdf'), '.pdf');\n-            } elseif ($pdf['type'] != 'application\u002Fpdf') {\n-                $error = __('Invalid Type', 'e2pdf');\n-            }\n-\n-            if ($error) {\n-                $response = array(\n-                    'error' => $error,\n-                );\n-            } else {\n-                wp_raise_memory_limit('admin');\n-                $model_e2pdf_api = new Model_E2pdf_Api();\n-                $model_e2pdf_api->set(\n-                        array(\n-                            'action' => 'template\u002Fupload',\n-                            'data' => array(\n-                                'title' => $name,\n-                                'pdf' => base64_encode(file_get_contents($pdf['tmp_name'])),\n-                            ),\n-                        )\n-                );\n-                $request = $model_e2pdf_api->request();\n-\n-                if (!isset($request['error'])) {\n-                    $template = new Model_E2pdf_Template();\n-                    if ($template->load($template_id)) {\n-                        $extension = new Model_E2pdf_Extension();\n-                        if ($template->get('extension') && $template->get('item')) {\n-                            $extension->load($template->get('extension'));\n-                            $extension->set('item', $template->get('item'));\n+                $reader = new XMLReader();\n+                $reader->XML($request['file']);\n+                while ($reader->read()) {\n+                    if ($reader->nodeType == XMLReader::ELEMENT) {\n+                        switch ($reader->name) {\n+                            case 'page':\n+                                $page_node = new SimpleXMLElement($reader->readOuterXML(), LIBXML_PARSEHUGE);\n+                                $this->helper->load('xml')->parse_xml_page($page_node, $pages, $pdf_images_dir, $extension);\n+                                break;\n+                            default:\n+                                break;\n                         }\n-\n-                        $xml = simplexml_load_string(base64_decode($request['file']), 'SimpleXMLElement', LIBXML_PARSEHUGE);\n-                        $pages = $this->helper->load('convert')->unserialize(base64_decode((string) $xml->template->pages));\n-\n-                        if (is_array($pages)) {\n-                            foreach ($pages as $page_key => $page) {\n-                                $pages[$page_key]['page_id'] = $page_key;\n-                            }\n+                    }\n+                }\n+                $reader->close();\n+                unset($reader);\n+            } elseif (is_callable('simplexml_load_string')) {\n+                $xml = simplexml_load_string($request['file'], 'SimpleXMLElement', LIBXML_PARSEHUGE);\n+                if (isset($xml->pages)) {\n+                    foreach ($xml->pages->page as $page_node) {\n+                        $pos_pages[] = (string) $page_node['number'];\n+                    }\n+                }\n+                foreach ($positions as $pos_key => $pos_page) {\n+                    if (!in_array($pos_key, $flush)) {\n+                        if ($pos_page == '0') {\n+                            $flush[] = $pos_key;\n+                        } elseif (!in_array($pos_page, $pos_pages, false)) {\n+                            throw new Exception(sprintf(__('Invalid position of %s page', 'e2pdf'), $pos_key));\n                         }\n+                    }\n+                }\n+                if (isset($xml->pages)) {\n+                    foreach ($xml->pages->page as $page_node) {\n+                        $this->helper->load('xml')->parse_xml_page($page_node, $pages, $pdf_images_dir, $extension);\n+                    }\n+                }\n+            }\n \n-                        $this->helper->load('sort')->stable_uasort($pages, 'sort_by_pageid');\n+            if (empty($pages) || !is_array($pages)) {\n+                throw new Exception(__('Failed to parse PDF pages', 'e2pdf'));\n+            }\n \n-                        $model_e2pdf_element = new Model_E2pdf_Element();\n-                        $last_element_id = $model_e2pdf_element->get_last_element_id($template_id);\n+            $this->helper->load('sort')->stable_uasort($pages, 'sort_by_pageid');\n \n-                        $original_pages = $template->get('pages');\n+            $model_e2pdf_element = new Model_E2pdf_Element();\n+            $last_element_id = $model_e2pdf_element->get_last_element_id($template_id);\n+            $original_pages = $template->get('pages');\n \n-                        foreach ($positions as $pos_key => $pos_page) {\n-                            if (!in_array($pos_key, $flush)) {\n-                                if ($pos_page == '0') {\n-                                    $flush[] = $pos_key;\n-                                } elseif (!isset($pages[$pos_page])) {\n-                                    $error = sprintf(__('Invalid position of %s page', 'e2pdf'), $pos_key);\n-                                } elseif ($pages[$pos_page]['properties']['width'] \u003C $original_pages[$pos_key]['properties']['width']) {\n-                                    $error = sprintf(__('The width of PDF page %1$s can\\'t be less than the width of Template page %2$s', 'e2pdf'), $pos_page, $pos_key);\n-                                } elseif ($pages[$pos_page]['properties']['height'] \u003C $original_pages[$pos_key]['properties']['height']) {\n-                                    $error = sprintf(__('The height of PDF page %1$s can\\'t be less than the height of Template page %2$s', 'e2pdf'), $pos_page, $pos_key);\n-                                }\n+            foreach ($pages as $page_key => $page) {\n+                if (isset($page['elements']) && !empty($page['elements'])) {\n+                    foreach ($page['elements'] as $element_key => $element) {\n+                        $last_element_id++;\n+                        $pages[$page_key]['elements'][$element_key]['element_id'] = $last_element_id;\n+                    }\n+                }\n+                foreach ($positions as $pos_key => $pos_page) {\n+                    if ($pos_page == $page_key) {\n+                        if (in_array($pos_key, $new)) {\n+                            if (isset($original_pages[$pos_key]['elements']) && !in_array($pos_key, $flush)) {\n+                                $elements = $original_pages[$pos_key]['elements'];\n+                                $pages[$page_key]['elements'] = array_merge($pages[$page_key]['elements'], $elements);\n                             }\n-                        }\n-\n-                        if (!$error) {\n-\n-                            $pdf_name = md5(time());\n-                            $pdf_dir = $this->helper->get('pdf_dir') . $pdf_name . '\u002F';\n-                            $pdf_images_dir = $pdf_dir . 'images\u002F';\n-\n-                            $this->helper->create_dir($pdf_dir);\n-                            $this->helper->create_dir($pdf_images_dir);\n-\n-                            move_uploaded_file($pdf['tmp_name'], $pdf_dir . $pdf_name . '.pdf');\n-\n-                            if (is_array($pages) && !empty($pages)) {\n-                                foreach ($pages as $page_key => $page) {\n-\n-                                    if (isset($page['properties']['background'])) {\n-                                        file_put_contents($pdf_images_dir . $page_key . '.png', base64_decode($page['properties']['background']));\n-                                        do_action('e2pdf_pdf_upload_background_save_after');\n-                                        unset($pages[$page_key]['properties']['background']);\n-                                    }\n-\n-                                    if (isset($page['elements']) && !empty($page['elements'])) {\n-                                        foreach ($page['elements'] as $element_key => $element) {\n-\n-                                            $last_element_id++;\n-                                            $pages[$page_key]['elements'][$element_key]['element_id'] = $last_element_id;\n-\n-                                            if ($element['type'] === 'e2pdf-image' && isset($element['base64']) && $element['base64']) {\n-\n-                                                $image = base64_decode($element['base64']);\n-                                                $file_name = basename($element['value']);\n-\n-                                                if (!$file_name) {\n-                                                    $ext = $this->helper->load('image')->get_extension($image);\n-                                                    if ($ext) {\n-                                                        $file_name = md5(mktime()) . '.' . $ext;\n-                                                    }\n-                                                }\n-\n-                                                if ($file_name) {\n-                                                    $upload_file = wp_upload_bits($file_name, null, $image);\n-                                                    if (!$upload_file['error']) {\n-                                                        $wp_filetype = wp_check_filetype($file_name, null);\n-                                                        $attachment = array(\n-                                                            'post_mime_type' => $wp_filetype['type'],\n-                                                            'post_parent' => 0,\n-                                                            'post_title' => preg_replace('\u002F\\.[^.]+$\u002F', '', $file_name),\n-                                                            'post_content' => '',\n-                                                            'post_status' => 'inherit',\n-                                                        );\n-                                                        $attachment_id = wp_insert_attachment($attachment, $upload_file['file'], 0);\n-                                                        if (!is_wp_error($attachment_id)) {\n-                                                            require_once ABSPATH . 'wp-admin\u002Fincludes\u002Fimage.php';\n-                                                            $attachment_data = wp_generate_attachment_metadata($attachment_id, $upload_file['file']);\n-                                                            wp_update_attachment_metadata($attachment_id, $attachment_data);\n-                                                            $pages[$page_key]['elements'][$element_key]['value'] = $upload_file['url'];\n-                                                        }\n-                                                    }\n-                                                    unset($pages[$page_key]['elements'][$element_key]['base64']);\n-                                                } else {\n-                                                    unset($pages[$page_key]['elements'][$element_key]);\n-                                                }\n-                                            } elseif (isset($element['name']) && $element['name']) {\n-                                                $el_value = $extension->auto_map($element['name']);\n-                                                if ($el_value !== false) {\n-                                                    $pages[$page_key]['elements'][$element_key]['value'] = $el_value;\n-                                                }\n-                                            }\n-                                        }\n-                                    }\n-\n-                                    foreach ($positions as $pos_key => $pos_page) {\n-                                        if ($pos_page == $page_key) {\n-                                            if (in_array($pos_key, $new)) {\n-                                                if (isset($original_pages[$pos_key]['elements']) && !in_array($pos_key, $flush)) {\n-                                                    $elements = $original_pages[$pos_key]['elements'];\n-                                                    $pages[$page_key]['elements'] = array_merge($pages[$page_key]['elements'], $elements);\n-                                                }\n-                                            } else {\n-                                                if (isset($original_pages[$pos_key]['elements']) && !in_array($pos_key, $flush)) {\n-                                                    $elements = $original_pages[$pos_key]['elements'];\n-                                                    $pages[$page_key]['elements'] = $elements;\n-                                                } else {\n-                                                    $pages[$page_key]['elements'] = array();\n-                                                }\n-                                            }\n-                                            if (isset($original_pages[$pos_key]['actions'])) {\n-                                                $pages[$page_key]['actions'] = $original_pages[$pos_key]['actions'];\n-                                            }\n-                                        }\n-                                    }\n-                                }\n-\n-                                $template->set('pdf', $pdf_name);\n-                                $template->set('pages', $pages);\n-                                $template->save(true);\n-\n-                                $response = array(\n-                                    'redirect' => $this->helper->get_url(\n-                                            array(\n-                                                'page' => 'e2pdf-templates',\n-                                                'action' => 'edit',\n-                                                'id' => $template->get('ID'),\n-                                            )\n-                                    ),\n-                                );\n+                        } else {\n+                            if (isset($original_pages[$pos_key]['elements']) && !in_array($pos_key, $flush)) {\n+                                $elements = $original_pages[$pos_key]['elements'];\n+                                $pages[$page_key]['elements'] = $elements;\n                             } else {\n-                                $this->helper->delete_dir($pdf_dir);\n-                                $response = array(\n-                                    'error' => __('Something went wrong!', 'e2pdf'),\n-                                );\n+                                $pages[$page_key]['elements'] = array();\n                             }\n-                        } else {\n-                            $response = array(\n-                                'error' => $error,\n-                            );\n+                        }\n+                        if (isset($original_pages[$pos_key]['actions'])) {\n+                            $pages[$page_key]['actions'] = $original_pages[$pos_key]['actions'];\n                         }\n                     }\n-                } else {\n-                    $response = array(\n-                        'error' => $request['error'],\n-                    );\n                 }\n             }\n-        } else {\n-            $response['error'] = $this->message('wp_verify_nonce_error');\n-        }\n \n-        $this->json_response($response);\n+            $template->set('pdf', $pdf_name);\n+            $template->set('pages', $pages);\n+            $template->save(true);\n+\n+            $this->json_response(\n+                    [\n+                        'redirect' => $this->helper->get_url(\n+                                array(\n+                                    'page' => 'e2pdf-templates',\n+                                    'action' => 'edit',\n+                                    'id' => $template->get('ID'),\n+                                )\n+                        ),\n+                    ]\n+            );\n+        } catch (Exception $ex) {\n+            if (file_exists($pdf_dir)) {\n+                $this->helper->delete_dir($pdf_dir);\n+            }\n+            $this->json_response(\n+                    [\n+                        'error' => $ex->getMessage(),\n+                    ]\n+            );\n+        }\n     }\n \n-    \u002F**\n-     * Auto Generation of Template\n-     * action: wp_ajax_e2pdf_auto\n-     * function: e2pdf_auto\n-     * @return json\n-     *\u002F\n+    \u002F\u002F ajax auto\n     public function ajax_auto() {\n         if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf_templates')) {\n             $data = $this->post->get('data');\n@@ -1844,6 +1901,7 @@\n         $this->json_response($response);\n     }\n \n+    \u002F\u002F ajax activate template\n     public function ajax_activate_template() {\n         if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf_templates')) {\n             $data = $this->post->get('data');\n@@ -1867,6 +1925,7 @@\n         $this->json_response($response);\n     }\n \n+    \u002F\u002F ajax deactivaate template\n     public function ajax_deactivate_template() {\n         if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf_templates')) {\n             $data = $this->post->get('data');\n@@ -1890,12 +1949,7 @@\n         $this->json_response($response);\n     }\n \n-    \u002F**\n-     * Confirm Email via ajax\n-     * action: wp_ajax_e2pdf_email\n-     * function: e2pdf_email\n-     * @return json\n-     *\u002F\n+    \u002F\u002F ajax email\n     public function ajax_email() {\n         if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf_templates')) {\n             $data = $this->post->get('data');\n@@ -1941,10 +1995,7 @@\n         $this->json_response($response);\n     }\n \n-    \u002F**\n-     * Move template to trash\n-     * @param int $id - ID of template\n-     *\u002F\n+    \u002F\u002F trash template\n     public function trash_template($id = false) {\n         $id = (int) $id;\n         $template = new Model_E2pdf_Template();\n@@ -1957,10 +2008,7 @@\n         return false;\n     }\n \n-    \u002F**\n-     * Delete template\n-     * @param int $id - ID of template\n-     *\u002F\n+    \u002F\u002F delete template\n     public function delete_template($id = false) {\n         $id = (int) $id;\n         $template = new Model_E2pdf_Template();\n@@ -1972,10 +2020,7 @@\n         return false;\n     }\n \n-    \u002F**\n-     * Restore template\n-     * @param int $id - ID of template\n-     *\u002F\n+    \u002F\u002F restore template\n     public function restore_template($id = false) {\n         $id = (int) $id;\n         $template = new Model_E2pdf_Template();\n@@ -1987,10 +2032,7 @@\n         return false;\n     }\n \n-    \u002F**\n-     * Duplicate template\n-     * @param int $id - ID of template\n-     *\u002F\n+    \u002F\u002F duplicate template\n     public function duplicate_template($id = false) {\n \n         $id = (int) $id;\n@@ -2011,7 +2053,7 @@\n                 $this->helper->create_dir($pdf_images_dir);\n \n                 if (file_exists($this->helper->get('pdf_dir') . $template->get('pdf') . '\u002F' . $template->get('pdf') . '.pdf')) {\n-                    $images = glob($this->helper->get('pdf_dir') . $template->get('pdf') . \"\u002Fimages\u002F*\");\n+                    $images = glob($this->helper->get('pdf_dir') . $template->get('pdf') . '\u002Fimages\u002F*');\n                     foreach ($images as $image) {\n                         copy($image, $pdf_images_dir . pathinfo($image, PATHINFO_BASENAME));\n                     }\n@@ -2025,10 +2067,7 @@\n         return false;\n     }\n \n-    \u002F**\n-     * Activate template\n-     * @param int $id - ID of template\n-     *\u002F\n+    \u002F\u002F activate template\n     public function activate_template($id = false) {\n         $id = (int) $id;\n         $template = new Model_E2pdf_Template();\n@@ -2041,10 +2080,7 @@\n         }\n     }\n \n-    \u002F**\n-     * Deactivate template\n-     * @param int $id - ID of template\n-     *\u002F\n+    \u002F\u002F deactivate template\n     public function deactivate_template($id = false) {\n         $id = (int) $id;\n         $template = new Model_E2pdf_Template();\n@@ -2057,12 +2093,7 @@\n         }\n     }\n \n-    \u002F**\n-     * Get templates list\n-     * @param array() $filters - Array of filter\u002Forder conditions\n-     * @param bool $count - Return number of templates\n-     * @return mixed - IF $count - int ELSE array()\n-     *\u002F\n+    \u002F\u002F get templates list\n     public function get_templates_list($filters = array(), $count = false) {\n         global $wpdb;\n \n@@ -2132,6 +2163,7 @@\n         $where = $this->helper->load('db')->prepare_where($condition);\n         $orderby = $this->helper->load('db')->prepare_orderby($order_condition);\n         $limit = $this->helper->load('db')->prepare_limit($limit_condition);\n+        \u002F\u002F phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare\n         $tpls = $wpdb->get_results($wpdb->prepare('SELECT `ID` FROM `' . $model_e2pdf_template->get_table() . '`' . $where['sql'] . $orderby . $limit . '', $where['filter']));\n \n         if ($count) {\n@@ -2154,10 +2186,7 @@\n         return $templates;\n     }\n \n-    \u002F**\n-     * Get paper sizes list\n-     * @return array() - Sizes list\n-     *\u002F\n+    \u002F\u002F get sizes list\n     public function get_sizes_list($size = false, $attr = false) {\n \n         $sizes = array(\n@@ -2205,12 +2234,8 @@\n         }\n     }\n \n-    \u002F**\n-     * Get fonts list\n-     * @return array() - Fonts list\n-     *\u002F\n+    \u002F\u002F get fonts\n     public function get_fonts($with_path = false) {\n-\n         $model_e2pdf_font = new Model_E2pdf_Font();\n         $fonts = $model_e2pdf_font->get_fonts();\n \n@@ -2229,12 +2254,8 @@\n         return $fonts;\n     }\n \n-    \u002F**\n-     * Get font sizes list\n-     * @return array() - Font sizes list\n-     *\u002F\n+    \u002F\u002F get font sizes\n     public function get_font_sizes() {\n-\n         $max_font_size = apply_filters('e2pdf_controller_templates_max_font_size', 512);\n         $sizes = array();\n         for ($i = 1; $i \u003C= $max_font_size; $i++) {\n@@ -2243,10 +2264,7 @@\n         return $sizes;\n     }\n \n-    \u002F**\n-     * Get line heights list\n-     * @return array() - Line heights list\n-     *\u002F\n+    \u002F\u002F get line heights\n     public function get_line_heights() {\n \n         $max_line_height = apply_filters('e2pdf_controller_templates_max_line_height', 512);\n@@ -2257,6 +2275,7 @@\n         return $line_heights;\n     }\n \n+    \u002F\u002F get lang codes\n     public function get_lang_codes() {\n         return array(\n             '' => '',\n@@ -2547,11 +2566,8 @@\n         );\n     }\n \n-    \u002F**\n-     * Load metaboxes on template edit\u002Fcreate action\n-     *\u002F\n+    \u002F\u002F load metaboxes\n     public function load_metaboxes() {\n-\n         add_meta_box(\n                 'e2pdf_templates_save', __('Preset', 'e2pdf'), array($this, 'render_metabox'), null, 'side', 'default', array('tpl' => 'e2pdf_templates_save')\n         );\n@@ -2563,11 +2579,8 @@\n         );\n     }\n \n-    \u002F**\n-     * Load javascript on template edit\u002Fcreate action\n-     *\u002F\n+    \u002F\u002F load scripts\n     public function load_scripts() {\n-\n         wp_enqueue_script('postbox');\n         wp_enqueue_script('jquery-ui-droppable');\n         wp_enqueue_script('jquery-ui-resizable');\n@@ -2578,9 +2591,7 @@\n         wp_enqueue_media();\n     }\n \n-    \u002F**\n-     * Load styles on template edit\u002Fcreate action\n-     *\u002F\n+    \u002F\u002F load styles\n     public function load_styles($ext = false) {\n         $version = get_option('e2pdf_debug', '0') === '1' ? strtotime('now') : $this->helper->get('version');\n         wp_enqueue_style('css\u002Fe2pdf.jquery-ui', plugins_url('css\u002Fjquery-ui.css', $this->helper->get('plugin_file_path')), false, $version, false);\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fcontroller\u002Ffrontend\u002Fe2pdf-download.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fcontroller\u002Ffrontend\u002Fe2pdf-download.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fcontroller\u002Ffrontend\u002Fe2pdf-download.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fcontroller\u002Ffrontend\u002Fe2pdf-download.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -1,12 +1,11 @@\n \u003C?php\n \n \u002F**\n- * E2Pdf Frontend Download Controller\n- * @copyright  Copyright 2017 https:\u002F\u002Fe2pdf.com\n- * @license    GPLv3\n- * @version    1\n- * @link       https:\u002F\u002Fe2pdf.com\n- * @since      0.00.01\n+ * File: \u002Fcontroller\u002Ffrontend\u002Fe2pdf-download.php\n+ *\n+ * @package  E2Pdf\n+ * @license  GPLv3\n+ * @link     https:\u002F\u002Fe2pdf.com\n  *\u002F\n if (!defined('ABSPATH')) {\n     die('Access denied.');\n@@ -14,10 +13,7 @@\n \n class Controller_Frontend_E2pdf_Download extends Helper_E2pdf_View {\n \n-    \u002F**\n-     * Frontend download action\n-     * @url page=e2pdf-download&uid=$uid\n-     *\u002F\n+    \u002F\u002F url: page=e2pdf-download&uid=$uid\n     public function index_action() {\n         global $wp_query;\n \n@@ -32,10 +28,23 @@\n \n         $entry = new Model_E2pdf_Entry();\n         if ($uid && $entry->load_by_uid($uid)) {\n+\n             $template = new Model_E2pdf_Template();\n-            if ($entry->get_data('pdf') || $entry->get_data('attachment_id')) {\n-                $pdf = $entry->get_data('pdf') ? $entry->get_data('pdf') : get_attached_file($entry->get_data('attachment_id'));\n-                if (file_exists($pdf) && $this->helper->load('filter')->is_downloadable($pdf)) {\n+            if ($entry->get_data('file_id') || $entry->get_data('pdf') || $entry->get_data('attachment_id')) {\n+                $downloadable = false;\n+                if ($entry->get_data('file_id')) {\n+                    $stream = (new Model_E2pdf_Gdrive())->download($entry->get_data('file_id'));\n+                    $pdf = is_array($stream) && isset($stream['name']) ? $stream['name'] : '';\n+                    if ($pdf) {\n+                        $downloadable = true;\n+                    }\n+                } else {\n+                    $pdf = $entry->get_data('pdf') ? $entry->get_data('pdf') : get_attached_file($entry->get_data('attachment_id'));\n+                    $downloadable = file_exists($pdf) && $this->helper->load('filter')->is_downloadable($pdf);\n+                }\n+\n+                $downloadable = apply_filters('e2pdf_pdf_downloadable', $downloadable, $uid, $entry->get('entry'));\n+                if ($downloadable) {\n                     $disposition = 'attachment';\n                     if ($entry->get_data('inline')) {\n                         $disposition = 'inline';\n@@ -47,50 +56,69 @@\n                         $download_name = basename($pdf, '.' . $ext);\n                     }\n                     $download_name = apply_filters('e2pdf_controller_frontend_e2pdf_download_name', $download_name, $entry->get('uid'), $entry->get('entry'));\n+                    \u002F\u002F phpcs:ignore WordPress.Security.NonceVerification.Recommended\n                     if ($disposition == 'inline' && !isset($_GET['v'])) {\n                         if (get_option('e2pdf_download_inline_chrome_ios_fix', '0') == '1' && $this->helper->load('server')->isIOS() && $this->helper->load('server')->isChrome()) {\n-                            $url_data = array(\n+                            $url_data = [\n                                 'page' => 'e2pdf-download',\n                                 'uid' => $uid,\n                                 'download_name' => rawurlencode($download_name . '.' . (strtolower($ext) == 'jpg' ? 'jpg' : 'pdf')),\n                                 'v' => $this->helper->get('version'),\n-                            );\n+                            ];\n                             $url = $this->helper->get_frontend_pdf_url(\n                                     $url_data, false,\n-                                    array(\n+                                    [\n                                         'e2pdf_model_shortcode_site_url',\n                                         'e2pdf_model_shortcode_e2pdf_redirect_site_url',\n-                                    )\n+                                    ]\n                             );\n+                            \u002F\u002F phpcs:ignore WordPress.Security.SafeRedirect.wp_redirect_wp_redirect\n                             wp_redirect($url);\n                             exit;\n                         } elseif (get_option('e2pdf_download_inline_fallback_viewer', '0') == '1' && !$this->helper->load('server')->isViewerSupported() && strtolower($ext) == 'pdf') {\n-                            $url_data = array(\n+                            $url_data = [\n                                 'page' => 'e2pdf-download',\n                                 'uid' => $uid,\n                                 'v' => $this->helper->get('version'),\n-                            );\n+                            ];\n                             $url = $this->helper->get_frontend_pdf_url(\n                                     $url_data, false,\n-                                    array(\n+                                    [\n                                         'e2pdf_model_shortcode_site_url',\n                                         'e2pdf_model_shortcode_e2pdf_redirect_site_url',\n-                                    )\n+                                    ]\n                             );\n+                            \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode\n                             $file = urlencode($url);\n-                            $classes = array(\n+                            $classes = [\n                                 'e2pdf-hide-print',\n                                 'e2pdf-hide-editor',\n-                                'e2pdf-hide-secondary-toolbar'\n+                                'e2pdf-hide-secondary-toolbar',\n+                            ];\n+                            $viewer_url = add_query_arg(\n+                                    [\n+                                        'class' => implode(';', $classes),\n+                                        'file' => $file,\n+                                    ],\n+                                    plugins_url('assets\u002Fpdf.js\u002Fweb\u002Fviewer.html', $this->helper->get('plugin_file_path'))\n                             );\n-                            $viewer_url = add_query_arg(array('class' => implode(';', $classes), 'file' => $file), plugins_url('assets\u002Fpdf.js\u002Fweb\u002Fviewer.html', $this->helper->get('plugin_file_path')));\n+                            \u002F\u002F phpcs:ignore WordPress.Security.SafeRedirect.wp_redirect_wp_redirect\n                             wp_redirect($viewer_url);\n                             exit;\n                         }\n                     }\n-                    $file = base64_encode(file_get_contents($pdf));\n+\n+                    if ($entry->get_data('file_id')) {\n+                        $file = $stream['file'];\n+                    } else {\n+                        \u002F\u002F phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents\n+                        $file = file_get_contents($pdf);\n+                    }\n                     $this->download_response(strtolower($ext), $file, $download_name, $disposition);\n-                    do_action('e2pdf_controller_frontend_e2pdf_download_success', $uid, $entry->get('entry'), $file);\n+                    if (has_action('e2pdf_controller_frontend_e2pdf_download_success')) {\n+                        \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode\n+                        do_action('e2pdf_controller_frontend_e2pdf_download_success', $uid, $entry->get('entry'), base64_encode($file));\n+                    }\n                     exit;\n                 }\n             } elseif ($entry->get_data('template_id') && ($entry->get_data('dataset') || $entry->get_data('dataset2')) && $template->load($entry->get_data('template_id'))) {\n@@ -125,7 +153,8 @@\n                     $template->extension()->set('args', $entry->get_data('args'));\n                 }\n \n-                if ($template->extension()->verify()) {\n+                $downloadable = apply_filters('e2pdf_pdf_downloadable', true, $uid, $entry->get('entry'));\n+                if ($downloadable && $template->extension()->verify()) {\n                     if ($template->get('actions')) {\n                         $model_e2pdf_action = new Model_E2pdf_Action();\n                         $model_e2pdf_action->load($template->extension());\n@@ -133,20 +162,20 @@\n                         foreach ($actions as $action) {\n                             if (isset($action['action'])) {\n                                 switch (true) {\n-                                    case $action['action'] == 'restrict_access_by_url' && isset($action['success']):\n-                                    case $action['action'] == 'access_by_url' && !isset($action['success']):\n+                                    case $action['action'] == 'disable_access_by_url' && isset($action['success']):\n+                                    case $action['action'] == 'enable_access_by_url' && !isset($action['success']):\n                                         $error_message = '';\n                                         if (!empty($action['error_message'])) {\n                                             $error_message = $template->extension()->render($action['error_message']);\n                                         }\n                                         $error_message = $error_message ? $error_message : __('Access Denied!', 'e2pdf');\n                                         if (isset($_SERVER['HTTP_X_E2PDF_REQUEST'])) {\n-                                            $response = array(\n-                                                'error' => $error_message\n-                                            );\n+                                            $response = [\n+                                                'error' => $error_message,\n+                                            ];\n                                             $this->json_response_ajax($response, 403);\n                                         } else {\n-                                            wp_die($error_message, '', array('exit' => true));\n+                                            wp_die($error_message, '', ['exit' => true]);\n                                         }\n                                         break;\n                                     case $action['action'] == 'redirect_access_by_url' && isset($action['success']):\n@@ -157,12 +186,13 @@\n                                         if ($redirect_url) {\n                                             $redirect_url = apply_filters('e2pdf_download_redirect_access_by_url', esc_url_raw($redirect_url), $entry);\n                                             if (isset($_SERVER['HTTP_X_E2PDF_REQUEST'])) {\n-                                                $response = array(\n+                                                $response = [\n                                                     'redirect_url' => $redirect_url,\n                                                     'redirect_error_message' => !empty($action['redirect_error_message']) ? str_replace('%s', $redirect_url, $action['redirect_error_message']) : 'Access denied. Please, click \u003Ca href=\"' . $redirect_url . '\" target=\"_blank\">here\u003C\u002Fa> for more details...',\n-                                                );\n+                                                ];\n                                                 $this->json_response_ajax($response, 303);\n                                             } else {\n+                                                \u002F\u002F phpcs:ignore WordPress.Security.SafeRedirect.wp_redirect_wp_redirect\n                                                 wp_redirect($redirect_url);\n                                                 exit;\n                                             }\n@@ -228,7 +258,23 @@\n                     if ($entry->get_data('name') !== false) {\n                         $template->set('name', $entry->get_data('name'));\n                     } else {\n-                        $template->set('name', $template->extension()->render($template->get('name')));\n+                        $template->set(\n+                                'name',\n+                                $template->extension()->render(\n+                                        $this->helper->load('translator')->pre_translate($template->get('name'), $template->get('ID'), 'name', 'template')\n+                                )\n+                        );\n+                    }\n+                    if (!$template->get('name')) {\n+                        $template->set(\n+                                'name',\n+                                $template->extension()->render(\n+                                        $this->helper->load('translator')->pre_translate($template->get('title'), $template->get('ID'), 'title', 'template')\n+                                )\n+                        );\n+                    }\n+                    if (!$template->get('name')) {\n+                        $template->set(__('(no title)', 'e2pdf'));\n                     }\n \n                     $disposition = 'attachment';\n@@ -241,57 +287,57 @@\n                     }\n \n                     \u002F* Bug-fix with on the Chrome + iOS PDF inline download *\u002F\n+                    \u002F\u002F phpcs:ignore WordPress.Security.NonceVerification.Recommended\n                     if ($disposition == 'inline' && !isset($_GET['v'])) {\n                         if (get_option('e2pdf_download_inline_chrome_ios_fix', '0') == '1' && $this->helper->load('server')->isIOS() && $this->helper->load('server')->isChrome()) {\n-                            if ($template->get('name')) {\n-                                $download_name = $template->get('name');\n-                            } else {\n-                                $download_name = $template->extension()->render($template->get_name());\n-                            }\n-                            $download_name = apply_filters('e2pdf_controller_frontend_e2pdf_download_name', $download_name, $entry->get('uid'), $entry->get('entry'));\n-                            $url_data = array(\n+                            $download_name = apply_filters('e2pdf_controller_frontend_e2pdf_download_name', $template->get('name'), $entry->get('uid'), $entry->get('entry'));\n+                            $url_data = [\n                                 'page' => 'e2pdf-download',\n                                 'uid' => $uid,\n                                 'download_name' => rawurlencode($download_name . '.' . ($template->get('format') == 'jpg' ? 'jpg' : 'pdf')),\n                                 'v' => $this->helper->get('version'),\n-                            );\n+                            ];\n                             $url = $this->helper->get_frontend_pdf_url(\n                                     $url_data, false,\n-                                    array(\n+                                    [\n                                         'e2pdf_model_shortcode_site_url',\n                                         'e2pdf_model_shortcode_e2pdf_redirect_site_url',\n-                                    )\n+                                    ]\n                             );\n+                            \u002F\u002F phpcs:ignore WordPress.Security.SafeRedirect.wp_redirect_wp_redirect\n                             wp_redirect($url);\n                             exit;\n                         } elseif (get_option('e2pdf_download_inline_fallback_viewer', '0') == '1' && !$this->helper->load('server')->isViewerSupported() && $template->get('format') == 'pdf') {\n-                            if ($template->get('name')) {\n-                                $download_name = $template->get('name');\n-                            } else {\n-                                $download_name = $template->extension()->render($template->get_name());\n-                            }\n-                            $download_name = apply_filters('e2pdf_controller_frontend_e2pdf_download_name', $download_name, $entry->get('uid'), $entry->get('entry'));\n-                            $url_data = array(\n+                            $download_name = apply_filters('e2pdf_controller_frontend_e2pdf_download_name', $template->get('name'), $entry->get('uid'), $entry->get('entry'));\n+                            $url_data = [\n                                 'page' => 'e2pdf-download',\n                                 'uid' => $uid,\n                                 'v' => $this->helper->get('version'),\n-                            );\n+                            ];\n                             $url = $this->helper->get_frontend_pdf_url(\n                                     $url_data, false,\n-                                    array(\n+                                    [\n                                         'e2pdf_model_shortcode_site_url',\n                                         'e2pdf_model_shortcode_e2pdf_redirect_site_url',\n-                                    )\n+                                    ]\n                             );\n+                            \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode\n                             $file = urlencode($url);\n \n-                            $classes = array(\n+                            $classes = [\n                                 'e2pdf-hide-print',\n                                 'e2pdf-hide-editor',\n-                                'e2pdf-hide-secondary-toolbar'\n-                            );\n+                                'e2pdf-hide-secondary-toolbar',\n+                            ];\n \n-                            $viewer_url = add_query_arg(array('class' => implode(';', $classes), 'file' => $file), plugins_url('assets\u002Fpdf.js\u002Fweb\u002Fviewer.html', $this->helper->get('plugin_file_path')));\n+                            $viewer_url = add_query_arg(\n+                                    [\n+                                        'class' => implode(';', $classes),\n+                                        'file' => $file,\n+                                    ],\n+                                    plugins_url('assets\u002Fpdf.js\u002Fweb\u002Fviewer.html', $this->helper->get('plugin_file_path'))\n+                            );\n+                            \u002F\u002F phpcs:ignore WordPress.Security.SafeRedirect.wp_redirect_wp_redirect\n                             wp_redirect($viewer_url);\n                             exit;\n                         }\n@@ -307,17 +353,12 @@\n                     } else {\n                         $entry->set('pdf_num', $entry->get('pdf_num') + 1);\n                         $entry->save();\n-\n-                        if ($template->get('name')) {\n-                            $download_name = $template->get('name');\n-                        } else {\n-                            $download_name = $template->extension()->render($template->get_name());\n+                        $download_name = apply_filters('e2pdf_controller_frontend_e2pdf_download_name', $template->get('name'), $entry->get('uid'), $entry->get('entry'));\n+                        $this->download_response($template->get('format'), $request['file'], $download_name, $disposition);\n+                        if (has_action('e2pdf_controller_frontend_e2pdf_download_success')) {\n+                            \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode\n+                            do_action('e2pdf_controller_frontend_e2pdf_download_success', $uid, $entry->get('entry'), base64_encode($request['file']));\n                         }\n-                        $download_name = apply_filters('e2pdf_controller_frontend_e2pdf_download_name', $download_name, $entry->get('uid'), $entry->get('entry'));\n-\n-                        $file = $request['file'];\n-                        $this->download_response($template->get('format'), $file, $download_name, $disposition);\n-                        do_action('e2pdf_controller_frontend_e2pdf_download_success', $uid, $entry->get('entry'), $file);\n                         exit;\n                     }\n                 }\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fcontroller\u002Ffrontend\u002Fe2pdf-rpc-v1.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fcontroller\u002Ffrontend\u002Fe2pdf-rpc-v1.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fcontroller\u002Ffrontend\u002Fe2pdf-rpc-v1.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fcontroller\u002Ffrontend\u002Fe2pdf-rpc-v1.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -1,12 +1,11 @@\n \u003C?php\n \n \u002F**\n- * E2Pdf Frontend Download Controller\n- * @copyright  Copyright 2017 https:\u002F\u002Fe2pdf.com\n- * @license    GPLv3\n- * @version    1\n- * @link       https:\u002F\u002Fe2pdf.com\n- * @since      0.00.01\n+ * File: \u002Fcontroller\u002Ffrontend\u002Fe2pdf-rpc-v1.php\n+ *\n+ * @package  E2Pdf\n+ * @license  GPLv3\n+ * @link     https:\u002F\u002Fe2pdf.com\n  *\u002F\n if (!defined('ABSPATH')) {\n     die('Access denied.');\n@@ -14,6 +13,7 @@\n \n class Controller_Frontend_E2pdf_Rpc_V1 extends Helper_E2pdf_View {\n \n+    \u002F\u002F zapier rpc service\n     public function zapier($rpc) {\n         if (is_a($rpc, 'Model_E2pdf_Rpc')) {\n             switch ($rpc->get('action')) {\n@@ -30,25 +30,54 @@\n         }\n     }\n \n+    \u002F\u002F adobe rpc service\n     public function adobe($rpc) {\n         if (is_a($rpc, 'Model_E2pdf_Rpc')) {\n             switch ($rpc->get('action')) {\n                 case 'auth':\n                     if ($rpc->get_arg('api_key') == get_option('e2pdf_adobe_api_key')) {\n                         if ($rpc->get_arg('code')) {\n-                            $this->redirect($this->helper->get_url(\n-                                            array(\n+                            $this->redirect(\n+                                    $this->helper->get_url(\n+                                            [\n                                                 'page' => 'e2pdf-integrations',\n                                                 'action' => 'adobesign',\n                                                 'code' => $rpc->get_arg('code'),\n                                                 '_wpnonce' => wp_create_nonce('e2pdf_adobe'),\n-                                            )\n+                                            ]\n                                     )\n                             );\n                         }\n                     }\n                     break;\n                 default:\n+                    break;\n+            }\n+        }\n+    }\n+\n+    \u002F\u002F gdrive rpc service\n+    public function gdrive($rpc) {\n+        if (is_a($rpc, 'Model_E2pdf_Rpc')) {\n+            switch ($rpc->get('action')) {\n+                case 'auth':\n+                    if ($rpc->get_arg('api_key') == get_option('e2pdf_gdrive_api_key')) {\n+                        if ($rpc->get_arg('code')) {\n+                            (new Model_E2pdf_Gdrive())->get_token($rpc->get_arg('code'));\n+                            $this->redirect(\n+                                    $this->helper->get_url(\n+                                            [\n+                                                'page' => 'e2pdf-integrations',\n+                                                'action' => 'gdrive',\n+                                            ]\n+                                    )\n+                            );\n+                        }\n+                    } else {\n+                        wp_send_json_error(null, 401);\n+                    }\n+                    break;\n+                default:\n                     break;\n             }\n         }\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fextension\u002Fe2pdf-caldera.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fextension\u002Fe2pdf-caldera.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fextension\u002Fe2pdf-caldera.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fextension\u002Fe2pdf-caldera.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -1353,6 +1353,7 @@\n         }\n         $shortcode_tags = array(\n             'e2pdf-view',\n+            'e2pdf-download',\n         );\n         preg_match_all('@\\[([^\u003C>&\u002F\\[\\]\\x00-\\x20=]++)@', $out, $matches);\n         $tagnames = array_intersect($shortcode_tags, $matches[1]);\n@@ -1379,6 +1380,7 @@\n             }\n             $shortcode_tags = array(\n                 'e2pdf-view',\n+                'e2pdf-download',\n             );\n             preg_match_all('@\\[([^\u003C>&\u002F\\[\\]\\x00-\\x20=]++)@', $out['html'], $matches);\n             $tagnames = array_intersect($shortcode_tags, $matches[1]);\n@@ -1425,7 +1427,10 @@\n                         if (!isset($atts['apply'])) {\n                             $shortcode[3] .= ' apply=\"true\"';\n                         }\n-                        if ($shortcode[2] === 'e2pdf-view') {\n+                        if (!isset($atts['iframe_download'])) {\n+                            $shortcode[3] .= ' iframe_download=\"true\"';\n+                        }\n+                        if ($shortcode[2] === 'e2pdf-view' || $shortcode[2] === 'e2pdf-download') {\n                             $new_shortcode = $shortcode[2] . $shortcode[3];\n                             $message = str_replace($shortcode_value, '[' . $new_shortcode . ']', $message);\n                         } else {\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fextension\u002Fe2pdf-elementor.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fextension\u002Fe2pdf-elementor.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fextension\u002Fe2pdf-elementor.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fextension\u002Fe2pdf-elementor.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -53,18 +53,55 @@\n                 break;\n             case 'dataset':\n                 $this->set('cached_entry', false);\n-                $this->set('cached_meta', array());\n+                $this->set('cached_meta', []);\n+                $this->set('cached_data', []);\n                 if ($this->get('cached_form') && $this->get('dataset') && class_exists('ElementorPro\\Modules\\Forms\\Submissions\\Database\\Query') && class_exists('ElementorPro\\Modules\\Forms\\Classes\\Form_Record')) {\n                     $this->set('cached_meta', ElementorPro\\Modules\\Forms\\Submissions\\Database\\Query::get_instance()->get_submission($this->get('dataset')));\n-                    $post_data = array();\n+                    $labels = [];\n+                    if (!empty($this->get('cached_meta')['data']['form']['fields'])) {\n+                        foreach ($this->get('cached_meta')['data']['form']['fields'] as $field) {\n+                            if (isset($field['id']) && !empty($field['options']) && is_array($field['options'])) {\n+                                $labels[$field['id']] = [];\n+                                foreach ($field['options'] as $option) {\n+                                    $parts = explode('|', $option);\n+                                    $label = reset($parts);\n+                                    $value = end($parts);\n+                                    if ($value) {\n+                                        $labels[$field['id']][$value] = $label;\n+                                    }\n+                                }\n+                            }\n+                        }\n+                    }\n+                    $cached_data = [];\n                     if (!empty($this->get('cached_meta')['data']['values'])) {\n                         foreach ($this->get('cached_meta')['data']['values'] as $data) {\n                             if (isset($data['key'])) {\n-                                $post_data[$data['key']] = isset($data['value']) ? $data['value'] : '';\n+                                $value = isset($data['value']) ? $data['value'] : '';\n+                                $cached_data[$data['key']] = $value;\n+                                \u002F\u002F process labels\n+                                if ($value && is_string($value) && isset($labels[$data['key']])) {\n+                                    if (isset($labels[$data['key']][$value])) {\n+                                        $cached_data[$data['key'] . ':label'] = $labels[$data['key']][$value];\n+                                    } elseif (false !== strpos($value, ', ')) {\n+                                        $sub_labels = [];\n+                                        $values = explode(', ', $value);\n+                                        foreach ($values as $sub_value) {\n+                                            if (isset($labels[$data['key']][$sub_value])) {\n+                                                $sub_labels[] = $labels[$data['key']][$sub_value];\n+                                            } else {\n+                                                $sub_labels[] = $sub_value;\n+                                            }\n+                                        }\n+                                        $cached_data[$data['key'] . ':label'] = implode(', ', $sub_labels);\n+                                    }\n+                                }\n                             }\n                         }\n                     }\n-                    $this->set('cached_entry', new ElementorPro\\Modules\\Forms\\Classes\\Form_Record($post_data, $this->get('cached_form')));\n+\n+                    $this->set('cached_data', $cached_data);\n+                    $this->set('cached_entry', new ElementorPro\\Modules\\Forms\\Classes\\Form_Record($this->get('cached_data'), $this->get('cached_form')));\n                 }\n                 break;\n             default:\n@@ -371,6 +408,7 @@\n             }\n \n             $value = $this->get('cached_entry')->replace_setting_shortcodes($value);\n+            $value = $this->replace_label_shortcodes($value);\n             $value = $this->helper->load('field')->render(\n                     apply_filters('e2pdf_extension_render_shortcodes_pre_value', $value, $element_id, $this->get('template_id'), $this->get('item'), $this->get('dataset'), false, false),\n                     $this,\n@@ -609,6 +647,17 @@\n                                 ),\n                             )\n                     );\n+\n+                    $options = [];\n+                    if (isset($field['field_options'])) {\n+                        $options = array_map(\n+                                function ($item) {\n+                                    $parts = explode('|', $item);\n+                                    return end($parts);\n+                                }, preg_split(\"\u002F\\\\r\\\\n|\\\\r|\\\\n\u002F\", $field['field_options'])\n+                        );\n+                    }\n+\n                     $elements[] = $this->auto_field(\n                             $field,\n                             array(\n@@ -618,7 +667,7 @@\n                                     'width' => '100%',\n                                     'height' => 'auto',\n                                     'multiline' => isset($field['is_multiple']) && $field['is_multiple'] ? '1' : '0',\n-                                    'options' => isset($field['field_options']) ? $field['field_options'] : '',\n+                                    'options' => implode(\"\\n\", $options),\n                                     'value' => '[field id=\"' . $id . '\"]',\n                                     'height' => 'auto',\n                                 ),\n@@ -644,6 +693,8 @@\n \n                     if (isset($field['field_options'])) {\n                         foreach (preg_split('\u002F(\\r\\n|\\n|\\r)\u002F', $field['field_options']) as $checkbox) {\n+                            $options = explode('|', $checkbox);\n+                            $option = end($options);\n                             $elements[] = $this->auto_field(\n                                     $field,\n                                     array(\n@@ -653,10 +704,13 @@\n                                             'width' => 'auto',\n                                             'height' => 'auto',\n                                             'value' => '[field id=\"' . $id . '\"]',\n-                                            'option' => $checkbox,\n+                                            'option' => $option ? $option : '',\n                                         ),\n                                     )\n                             );\n+\n+                            $lables = explode('|', $checkbox);\n+                            $label = reset($lables);\n                             $elements[] = $this->auto_field(\n                                     $field,\n                                     array(\n@@ -666,7 +720,7 @@\n                                             'left' => '5',\n                                             'width' => '100%',\n                                             'height' => 'auto',\n-                                            'value' => $checkbox,\n+                                            'value' => $label ? $label : '',\n                                         ),\n                                     )\n                             );\n@@ -691,6 +745,8 @@\n                     );\n                     if (isset($field['field_options'])) {\n                         foreach (preg_split('\u002F(\\r\\n|\\n|\\r)\u002F', $field['field_options']) as $radio) {\n+                            $options = explode('|', $radio);\n+                            $option = end($options);\n                             $elements[] = $this->auto_field(\n                                     $field,\n                                     array(\n@@ -700,11 +756,14 @@\n                                             'width' => 'auto',\n                                             'height' => 'auto',\n                                             'value' => '[field id=\"' . $id . '\"]',\n-                                            'option' => $radio,\n+                                            'option' => $option ? $option : '',\n                                             'group' => '[field id=\"' . $id . '\"]',\n                                         ),\n                                     )\n                             );\n+\n+                            $lables = explode('|', $radio);\n+                            $label = reset($lables);\n                             $elements[] = $this->auto_field(\n                                     $field,\n                                     array(\n@@ -714,7 +773,7 @@\n                                             'left' => '5',\n                                             'width' => '100%',\n                                             'height' => 'auto',\n-                                            'value' => $radio,\n+                                            'value' => $label,\n                                         ),\n                                     )\n                             );\n@@ -1122,4 +1181,17 @@\n         }\n         return serialize($items); \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize\n     }\n+\n+    \u002F\u002F replace label shortcodes\n+    public function replace_label_shortcodes($setting, $urlencode = false) {\n+        return preg_replace_callback(\n+                '\u002F(\\[field[^]]*id=\"((\\w+):label)\"[^]]*\\])\u002F', function ($matches) use ($urlencode) {\n+                    $value = '';\n+                    if (isset($this->get('cached_data')[$matches[2]])) {\n+                        $value = sanitize_text_field($this->get('cached_data')[$matches[2]]);\n+                    }\n+                    return $value;\n+                }, $setting\n+        );\n+    }\n }\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fextension\u002Fe2pdf-everest.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fextension\u002Fe2pdf-everest.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fextension\u002Fe2pdf-everest.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fextension\u002Fe2pdf-everest.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -1204,25 +1204,34 @@\n             $hooks = $this->helper->load('hooks')->get('everest', 'hook_everest_row_actions', $entry->form_id);\n             if (!empty($hooks)) {\n                 foreach ($hooks as $hook) {\n-                    $action = apply_filters(\n-                            'e2pdf_hook_action_button',\n-                            array(\n-                                'html' => '\u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" href=\"%s\">%s\u003C\u002Fa>',\n-                                'url' => $this->helper->get_url(\n-                                        array(\n-                                            'page' => 'e2pdf',\n-                                            'action' => 'export',\n-                                            'id' => $hook,\n-                                            'dataset' => $entry->entry_id,\n-                                        ), 'admin.php?'\n-                                ),\n-                                'title' => 'PDF #' . $hook,\n-                            ), 'hook_everest_row_actions', $hook, $entry->entry_id\n-                    );\n-                    if (!empty($action)) {\n-                        $actions['e2pdf_' . $hook] = sprintf(\n-                                $action['html'], $action['url'], $action['title']\n+                    if ($this->helper->load('hooks')->process_hook(\n+                                    $hook,\n+                                    [\n+                                        'dataset' => $entry->entry_id,\n+                                    ],\n+                                    'hook_everest_row_actions'\n+                            )\n+                    ) {\n+                        $action = apply_filters(\n+                                'e2pdf_hook_action_button',\n+                                array(\n+                                    'html' => '\u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" href=\"%s\">%s\u003C\u002Fa>',\n+                                    'url' => $this->helper->get_url(\n+                                            array(\n+                                                'page' => 'e2pdf',\n+                                                'action' => 'export',\n+                                                'id' => $hook,\n+                                                'dataset' => $entry->entry_id,\n+                                            ), 'admin.php?'\n+                                    ),\n+                                    'title' => 'PDF #' . $hook,\n+                                ), 'hook_everest_row_actions', $hook, $entry->entry_id\n                         );\n+                        if (!empty($action)) {\n+                            $actions['e2pdf_' . $hook] = sprintf(\n+                                    $action['html'], $action['url'], $action['title']\n+                            );\n+                        }\n                     }\n                 }\n             }\n@@ -1236,25 +1245,34 @@\n             $hooks = $this->helper->load('hooks')->get('everest', 'hook_everest_entry_view', $entry->form_id);\n             if (!empty($hooks)) {\n                 foreach ($hooks as $hook) {\n-                    $action = apply_filters(\n-                            'e2pdf_hook_action_button',\n-                            array(\n-                                'html' => '\u003Cp>\u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" title=\"%2$s\" href=\"%1$s\">\u003Cspan class=\"dashicons dashicons-pdf\">\u003C\u002Fspan> %2$s\u003C\u002Fa>\u003C\u002Fp>',\n-                                'url' => $this->helper->get_url(\n-                                        array(\n-                                            'page' => 'e2pdf',\n-                                            'action' => 'export',\n-                                            'id' => $hook,\n-                                            'dataset' => $entry->entry_id,\n-                                        ), 'admin.php?'\n-                                ),\n-                                'title' => 'PDF #' . $hook,\n-                            ), 'hook_everest_entry_view', $hook, $entry->entry_id\n-                    );\n-                    if (!empty($action)) {\n-                        echo sprintf(\n-                                $action['html'], $action['url'], $action['title']\n+                    if ($this->helper->load('hooks')->process_hook(\n+                                    $hook,\n+                                    [\n+                                        'dataset' => $entry->entry_id,\n+                                    ],\n+                                    'hook_everest_entry_view'\n+                            )\n+                    ) {\n+                        $action = apply_filters(\n+                                'e2pdf_hook_action_button',\n+                                array(\n+                                    'html' => '\u003Cp>\u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" title=\"%2$s\" href=\"%1$s\">\u003Cspan class=\"dashicons dashicons-pdf\">\u003C\u002Fspan> %2$s\u003C\u002Fa>\u003C\u002Fp>',\n+                                    'url' => $this->helper->get_url(\n+                                            array(\n+                                                'page' => 'e2pdf',\n+                                                'action' => 'export',\n+                                                'id' => $hook,\n+                                                'dataset' => $entry->entry_id,\n+                                            ), 'admin.php?'\n+                                    ),\n+                                    'title' => 'PDF #' . $hook,\n+                                ), 'hook_everest_entry_view', $hook, $entry->entry_id\n                         );\n+                        if (!empty($action)) {\n+                            echo sprintf(\n+                                    $action['html'], $action['url'], $action['title']\n+                            );\n+                        }\n                     }\n                 }\n             }\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fextension\u002Fe2pdf-fluent.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fextension\u002Fe2pdf-fluent.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fextension\u002Fe2pdf-fluent.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fextension\u002Fe2pdf-fluent.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -307,8 +307,61 @@\n         add_filter('fluentform\u002Ffilter_email_attachments', array($this, 'filter_email_attachments'), 10, 4);\n         add_filter('fluentform\u002Fintegration_data_trello', array($this, 'filter_integration_data_trello'), 10, 3);\n         add_filter('fluentform\u002Finsert_response_data', array($this, 'filter_fluentform_insert_response_data'), 99, 3);\n+        add_filter('fluentform\u002Fredirect_url_value', array($this, 'filter_fluentform_redirect_url_value'), 10, 3);\n+        add_filter('fluentform\u002Fform_submission_confirmation', array($this, 'filter_fluentform_form_submission_confirmation'));\n+        add_filter('fluentform\u002Fsubmission_confirmation', array($this, 'filter_fluentform_submission_confirmation'));\n     }\n \n+    \u002F\u002F form submission confirmation filter\n+    public function filter_fluentform_form_submission_confirmation($confirmation) {\n+        $this->set('iframe_download', true);\n+        return $confirmation;\n+    }\n+\n+    \u002F\u002F submission confirmation filter\n+    public function filter_fluentform_submission_confirmation($returnData) {\n+        $this->set('iframe_download', false);\n+        return $returnData;\n+    }\n+\n+    \u002F\u002F redirect url value filter\n+    public function filter_fluentform_redirect_url_value($redirectUrl, $dataset, $form) {\n+        $confirmation = !empty($form->settings['confirmation']) ? $form->settings['confirmation'] : array();\n+        if (\n+                !empty($confirmation['customUrl']) &&\n+                (false !== strpos($confirmation['customUrl'], '[e2pdf-download') || false !== strpos($confirmation['customUrl'], '[e2pdf-view')) &&\n+                !empty($confirmation['redirectTo']) &&\n+                $confirmation['redirectTo'] == 'customUrl'\n+        ) {\n+            $shortcode_tags = array(\n+                'e2pdf-download',\n+                'e2pdf-view',\n+            );\n+            preg_match_all('@\\[([^\u003C>&\u002F\\[\\]\\x00-\\x20=]++)@', $confirmation['customUrl'], $matches);\n+            $tagnames = array_intersect($shortcode_tags, $matches[1]);\n+            if (!empty($tagnames)) {\n+                preg_match_all('\u002F' . $this->helper->load('shortcode')->get_shortcode_regex($tagnames) . '\u002F', $confirmation['customUrl'], $shortcodes);\n+                foreach ($shortcodes[0] as $key => $shortcode_value) {\n+                    $shortcode = $this->helper->load('shortcode')->get_shortcode($shortcodes, $key);\n+                    $atts = shortcode_parse_atts($shortcode[3]);\n+                    if (!isset($atts['dataset']) && isset($atts['id'])) {\n+                        $atts['dataset'] = $dataset;\n+                        $shortcode[3] .= ' dataset=\"' . $dataset . '\"';\n+                    }\n+                    if (!isset($atts['apply'])) {\n+                        $shortcode[3] .= ' apply=\"true\"';\n+                    }\n+                    if (!isset($atts['filter'])) {\n+                        $shortcode[3] .= ' filter=\"true\"';\n+                    }\n+                    $redirectUrl = do_shortcode_tag($shortcode);\n+                }\n+            }\n+        }\n+        return $redirectUrl;\n+    }\n+\n+    \u002F\u002F insert response data filter\n     public function filter_fluentform_insert_response_data($formData, $formId, $inputConfigs) {\n         if (!empty($formData) && is_array($formData)) {\n             $jsonData = json_encode($formData, JSON_UNESCAPED_UNICODE); \u002F\u002F phpcs:ignore WordPress.WP.AlternativeFunctions.json_encode_json_encode\n@@ -384,8 +437,14 @@\n                         }\n                         $message = str_replace($shortcode_value, '', $message);\n                     } else {\n-                        \u002F\u002F Iframe onload attribute bug\n-                        if ($shortcode[2] === 'e2pdf-view') {\n+\n+                        if (!isset($atts['iframe_download']) && $this->get('iframe_download')) {\n+                            $shortcode[3] .= ' iframe_download=\"true\"';\n+                            $atts['iframe_download'] = 'true';\n+                        }\n+\n+                        \u002F\u002F iframe onload attribute bug\n+                        if ($shortcode[2] === 'e2pdf-view' || ($shortcode[2] === 'e2pdf-download' && (isset($atts['iframe_download']) && $atts['iframe_download'] == 'true'))) {\n                             $message = str_replace($shortcode_value, '[' . $shortcode[2] . $shortcode[3] . ']', $message);\n                         } else {\n                             $message = str_replace($shortcode_value, do_shortcode_tag($shortcode), $message);\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fextension\u002Fe2pdf-formidable.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fextension\u002Fe2pdf-formidable.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fextension\u002Fe2pdf-formidable.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fextension\u002Fe2pdf-formidable.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -285,6 +285,7 @@\n         add_action('check_ajax_referer', array($this, 'action_check_ajax_referer'), 10, 2);\n         add_action('frm_after_create_entry', array($this, 'action_frm_default_value'), 0, 2);\n         add_action('frm_after_update_entry', array($this, 'action_frm_default_value'), 0, 2);\n+        add_action('frm_success_action', array($this, 'action_frm_success_action'));\n \n         \u002F* Hooks *\u002F\n         add_action('frm_show_entry_sidebar', array($this, 'hook_formidable_entry_view'));\n@@ -308,6 +309,7 @@\n         add_filter('frm_image_html_array', array($this, 'filter_frm_image_html_array'), 10, 2);\n         add_filter('frm_notification_attachment', array($this, 'filter_frm_notification_attachment'), 30, 3);\n         add_filter('e2pdf_model_options_get_options_options', array($this, 'filter_e2pdf_model_options_get_options_options'));\n+        add_filter('frm_main_feedback', array($this, 'filter_frm_main_feedback'));\n \n         \u002F* Replace shortcodes on Backup *\u002F\n         add_filter('e2pdf_controller_templates_backup_options', array($this, 'filter_e2pdf_controller_templates_backup_options'), 10, 3);\n@@ -325,6 +327,15 @@\n         add_filter('frm_row_actions', array($this, 'hook_formidable_row_actions'), 10, 2);\n     }\n \n+    public function action_frm_success_action() {\n+        $this->set('iframe_download', true);\n+    }\n+\n+    public function filter_frm_main_feedback($message) {\n+        $this->set('iframe_download', false);\n+        return $message;\n+    }\n+\n     \u002F**\n      * Render shortcodes which available in this extension\n      * @param string $value - Content\n@@ -769,6 +780,9 @@\n                     if (!isset($atts['filter'])) {\n                         $shortcode[3] .= ' filter=\"true\"';\n                     }\n+                    if (!isset($atts['iframe_download']) && $this->get('iframe_download')) {\n+                        $shortcode[3] .= ' iframe_download=\"true\"';\n+                    }\n                     $content = str_replace($shortcode_value, do_shortcode_tag($shortcode), $content);\n                 }\n             }\n@@ -804,6 +818,9 @@\n                     if (!isset($atts['filter'])) {\n                         $shortcode[3] .= ' filter=\"true\"';\n                     }\n+                    if (!isset($atts['iframe_download'])) {\n+                        $shortcode[3] .= ' iframe_download=\"true\"';\n+                    }\n                     $content = str_replace($shortcode_value, do_shortcode_tag($shortcode), $content);\n                 }\n             }\n@@ -1742,7 +1759,7 @@\n     public function action_frm_default_value($entry_id, $form_id) {\n         global $wpdb;\n         if ($form_id) {\n-            $fields = $wpdb->get_results($wpdb->prepare('SELECT * FROM `' . $wpdb->prefix . 'frm_fields' . '` WHERE form_id = %d AND (default_value LIKE %s OR default_value LIKE %s)', $form_id, '%[e2pdf-download%', '%[e2pdf-save%'));\n+            $fields = $wpdb->get_results($wpdb->prepare('SELECT * FROM `' . $wpdb->prefix . 'frm_fields` WHERE form_id = %d AND (default_value LIKE %s OR default_value LIKE %s)', $form_id, '%[e2pdf-download%', '%[e2pdf-save%'));\n             if (!empty($fields)) {\n                 foreach ($fields as $key => $field) {\n                     $meta = FrmEntryMeta::get_entry_meta_by_field($entry_id, $field->id);\n@@ -3057,7 +3074,7 @@\n             if (isset($xml->formidable) && $xml->formidable) {\n \n                 $tmp = tempnam($this->helper->get('tmp_dir'), 'e2pdf');\n-                file_put_contents($tmp, base64_decode((string) $xml->formidable));\n+                file_put_contents($tmp, base64_decode((string) $xml->formidable), LOCK_EX);\n \n                 if ($new_form) {\n                     add_filter('frm_match_xml_form', array($this, 'filter_frm_match_xml_form'), 10, 2);\n@@ -4129,24 +4146,34 @@\n                 echo '\u003Ch3>' . apply_filters('e2pdf_hook_section_title', __('E2Pdf Actions', 'e2pdf'), 'hook_formidable_entry_view') . '\u003C\u002Fh3>';\n                 echo '\u003Cdiv class=\"inside\">';\n                 foreach ($hooks as $hook) {\n-                    $action = apply_filters('e2pdf_hook_action_button',\n-                            array(\n-                                'html' => '\u003Cdiv class=\"misc-pub-section\">\u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" title=\"%2$s\" href=\"%1$s\">\u003Cspan class=\"dashicons dashicons-pdf\">\u003C\u002Fspan> %2$s\u003C\u002Fa>\u003C\u002Fdiv>',\n-                                'url' => $this->helper->get_url(\n-                                        array(\n-                                            'page' => 'e2pdf',\n-                                            'action' => 'export',\n-                                            'id' => $hook,\n-                                            'dataset' => $entry->id,\n-                                        ), 'admin.php?'\n-                                ),\n-                                'title' => 'PDF #' . $hook\n-                            ), 'hook_formidable_entry_view', $hook, $entry->id\n-                    );\n-                    if (!empty($action)) {\n-                        echo sprintf(\n-                                $action['html'], $action['url'], $action['title']\n-                        );\n+                    if ($this->helper->load('hooks')->process_hook(\n+                                    $hook,\n+                                    [\n+                                        'dataset' => $entry->id,\n+                                    ],\n+                                    'hook_formidable_entry_view'\n+                            )\n+                    ) {\n+                        $action = apply_filters(\n+                                'e2pdf_hook_action_button',\n+                                array(\n+                                    'html' => '\u003Cdiv class=\"misc-pub-section\">\u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" title=\"%2$s\" href=\"%1$s\">\u003Cspan class=\"dashicons dashicons-pdf\">\u003C\u002Fspan> %2$s\u003C\u002Fa>\u003C\u002Fdiv>',\n+                                    'url' => $this->helper->get_url(\n+                                            array(\n+                                                'page' => 'e2pdf',\n+                                                'action' => 'export',\n+                                                'id' => $hook,\n+                                                'dataset' => $entry->id,\n+                                            ), 'admin.php?'\n+                                    ),\n+                                    'title' => 'PDF #' . $hook,\n+                                ), 'hook_formidable_entry_view', $hook, $entry->id\n+                        );\n+                        if (!empty($action)) {\n+                            echo sprintf(\n+                                    $action['html'], $action['url'], $action['title']\n+                            );\n+                        }\n                     }\n                 }\n                 echo '\u003C\u002Fdiv>';\n@@ -4161,9 +4188,57 @@\n                 echo '\u003Ch3>' . apply_filters('e2pdf_hook_section_title', __('E2Pdf Actions', 'e2pdf'), 'hook_formidable_entry_view') . '\u003C\u002Fh3>';\n                 echo '\u003Cdiv class=\"inside\">';\n                 foreach ($hooks as $hook) {\n-                    $action = apply_filters('e2pdf_hook_action_button',\n+                    if ($this->helper->load('hooks')->process_hook(\n+                                    $hook,\n+                                    [\n+                                        'dataset' => $entry->id,\n+                                    ],\n+                                    'hook_formidable_entry_edit'\n+                            )\n+                    ) {\n+                        $action = apply_filters(\n+                                'e2pdf_hook_action_button',\n+                                array(\n+                                    'html' => '\u003Cdiv class=\"misc-pub-section\">\u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" title=\"%2$s\" href=\"%1$s\">\u003Cspan class=\"dashicons dashicons-pdf\">\u003C\u002Fspan> %2$s\u003C\u002Fa>\u003C\u002Fdiv>',\n+                                    'url' => $this->helper->get_url(\n+                                            array(\n+                                                'page' => 'e2pdf',\n+                                                'action' => 'export',\n+                                                'id' => $hook,\n+                                                'dataset' => $entry->id,\n+                                            ), 'admin.php?'\n+                                    ),\n+                                    'title' => 'PDF #' . $hook,\n+                                ), 'hook_formidable_entry_edit', $hook, $entry->id\n+                        );\n+                        if (!empty($action)) {\n+                            echo sprintf(\n+                                    $action['html'], $action['url'], $action['title']\n+                            );\n+                        }\n+                    }\n+                }\n+                echo '\u003C\u002Fdiv>';\n+            }\n+        }\n+    }\n+\n+    public function hook_formidable_row_actions($actions, $entry) {\n+        if (!empty($entry->form_id) && !empty($entry->id)) {\n+            $hooks = $this->helper->load('hooks')->get('formidable', 'hook_formidable_row_actions', $entry->form_id);\n+            foreach ($hooks as $hook) {\n+                if ($this->helper->load('hooks')->process_hook(\n+                                $hook,\n+                                [\n+                                    'dataset' => $entry->id,\n+                                ],\n+                                'hook_formidable_row_actions'\n+                        )\n+                ) {\n+                    $action = apply_filters(\n+                            'e2pdf_hook_action_button',\n                             array(\n-                                'html' => '\u003Cdiv class=\"misc-pub-section\">\u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" title=\"%2$s\" href=\"%1$s\">\u003Cspan class=\"dashicons dashicons-pdf\">\u003C\u002Fspan> %2$s\u003C\u002Fa>\u003C\u002Fdiv>',\n+                                'html' => '\u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" href=\"%s\">%s\u003C\u002Fa>',\n                                 'url' => $this->helper->get_url(\n                                         array(\n                                             'page' => 'e2pdf',\n@@ -4172,43 +4247,15 @@\n                                             'dataset' => $entry->id,\n                                         ), 'admin.php?'\n                                 ),\n-                                'title' => 'PDF #' . $hook\n-                            ), 'hook_formidable_entry_edit', $hook, $entry->id\n+                                'title' => 'PDF #' . $hook,\n+                            ), 'hook_formidable_row_actions', $hook, $entry->id\n                     );\n                     if (!empty($action)) {\n-                        echo sprintf(\n+                        $actions['e2pdf_' . $hook] = sprintf(\n                                 $action['html'], $action['url'], $action['title']\n                         );\n                     }\n                 }\n-                echo '\u003C\u002Fdiv>';\n-            }\n-        }\n-    }\n-\n-    public function hook_formidable_row_actions($actions, $entry) {\n-        if (!empty($entry->form_id) && !empty($entry->id)) {\n-            $hooks = $this->helper->load('hooks')->get('formidable', 'hook_formidable_row_actions', $entry->form_id);\n-            foreach ($hooks as $hook) {\n-                $action = apply_filters('e2pdf_hook_action_button',\n-                        array(\n-                            'html' => '\u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" href=\"%s\">%s\u003C\u002Fa>',\n-                            'url' => $this->helper->get_url(\n-                                    array(\n-                                        'page' => 'e2pdf',\n-                                        'action' => 'export',\n-                                        'id' => $hook,\n-                                        'dataset' => $entry->id,\n-                                    ), 'admin.php?'\n-                            ),\n-                            'title' => 'PDF #' . $hook\n-                        ), 'hook_formidable_row_actions', $hook, $entry->id\n-                );\n-                if (!empty($action)) {\n-                    $actions['e2pdf_' . $hook] = sprintf(\n-                            $action['html'], $action['url'], $action['title']\n-                    );\n-                }\n             }\n         }\n         return $actions;\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fextension\u002Fe2pdf-forminator.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fextension\u002Fe2pdf-forminator.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fextension\u002Fe2pdf-forminator.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fextension\u002Fe2pdf-forminator.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -835,6 +835,7 @@\n             } elseif (!$html) {\n                 return '\u003Cdiv class=\"e2pdf-vm-error\">' . __('The form could not be parsed due the incorrect HTML', 'e2pdf') . '\u003C\u002Fdiv>';\n             } else {\n+                \n                 $use_labels = true;\n                 if ((defined('FORMINATOR_VERSION') && version_compare(FORMINATOR_VERSION, '1.14.10', '\u003C')) || (!empty($custom_form->settings['print_value']) && filter_var($custom_form->settings['print_value'], FILTER_VALIDATE_BOOLEAN))) {\n                     $use_labels = false;\n@@ -3380,13 +3381,13 @@\n     \u002F\u002F submit response filter\n     public function filter_forminator_custom_form_submit_response($response) {\n         if (isset($response['message']) && false !== strpos($response['message'], '[') && isset($response['success']) && $response['success']) {\n-            $response['message'] = $this->filter_content($response['message']);\n+            $response['message'] = $this->filter_content($response['message'], 'message');\n         }\n         return $response;\n     }\n \n     \u002F\u002F content filter\n-    public function filter_content($content) {\n+    public function filter_content($content, $type = '') {\n \n         if (false !== strpos($content, '[')) {\n             $shortcode_tags = array(\n@@ -3429,6 +3430,9 @@\n                         if (!isset($atts['filter'])) {\n                             $shortcode[3] .= ' filter=\"true\"';\n                         }\n+                        if (!isset($atts['iframe_download']) && $type == 'message') {\n+                            $shortcode[3] .= ' iframe_download=\"true\"';\n+                        }\n                         $content = str_replace($shortcode_value, do_shortcode_tag($shortcode), $content);\n                         remove_filter('e2pdf_model_shortcode_extension_options', array($this, 'filter_e2pdf_model_shortcode_extension_options'), 30);\n                     }\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fextension\u002Fe2pdf-gravity.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fextension\u002Fe2pdf-gravity.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fextension\u002Fe2pdf-gravity.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fextension\u002Fe2pdf-gravity.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -2578,24 +2578,34 @@\n     public function hook_gravity_entry_view_callback($post, $metabox) {\n         if (!empty($metabox['args']['entry']['id'])) {\n             foreach ($metabox['args']['hooks'] as $hook) {\n-                $action = apply_filters('e2pdf_hook_action_button',\n-                        array(\n-                            'html' => '\u003Cdiv class=\"misc-pub-section\">\u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" title=\"%2$s\" href=\"%1$s\">\u003Cspan class=\"dashicons dashicons-pdf\">\u003C\u002Fspan> %2$s\u003C\u002Fa>\u003C\u002Fdiv>',\n-                            'url' => $this->helper->get_url(\n-                                    array(\n-                                        'page' => 'e2pdf',\n-                                        'action' => 'export',\n-                                        'id' => $hook,\n-                                        'dataset' => $metabox['args']['entry']['id'],\n-                                    ), 'admin.php?'\n-                            ),\n-                            'title' => 'PDF #' . $hook\n-                        ), 'hook_gravity_entry_view', $hook, $metabox['args']['entry']['id']\n-                );\n-                if (!empty($action)) {\n-                    echo sprintf(\n-                            $action['html'], $action['url'], $action['title']\n+                if ($this->helper->load('hooks')->process_hook(\n+                                $hook,\n+                                [\n+                                    'dataset' => $metabox['args']['entry']['id'],\n+                                ],\n+                                'hook_gravity_entry_view'\n+                        )\n+                ) {\n+                    $action = apply_filters(\n+                            'e2pdf_hook_action_button',\n+                            array(\n+                                'html' => '\u003Cdiv class=\"misc-pub-section\">\u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" title=\"%2$s\" href=\"%1$s\">\u003Cspan class=\"dashicons dashicons-pdf\">\u003C\u002Fspan> %2$s\u003C\u002Fa>\u003C\u002Fdiv>',\n+                                'url' => $this->helper->get_url(\n+                                        array(\n+                                            'page' => 'e2pdf',\n+                                            'action' => 'export',\n+                                            'id' => $hook,\n+                                            'dataset' => $metabox['args']['entry']['id'],\n+                                        ), 'admin.php?'\n+                                ),\n+                                'title' => 'PDF #' . $hook,\n+                            ), 'hook_gravity_entry_view', $hook, $metabox['args']['entry']['id']\n                     );\n+                    if (!empty($action)) {\n+                        echo sprintf(\n+                                $action['html'], $action['url'], $action['title']\n+                        );\n+                    }\n                 }\n             }\n         }\n@@ -2606,24 +2616,34 @@\n         if (!empty($entry['form_id']) && !empty($entry['id'])) {\n             $hooks = $this->helper->load('hooks')->get('gravity', 'hook_gravity_row_actions', $entry['form_id']);\n             foreach ($hooks as $hook) {\n-                $action = apply_filters('e2pdf_hook_action_button',\n-                        array(\n-                            'html' => '\u003Cspan> | \u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" href=\"%s\">%s\u003C\u002Fa>\u003C\u002Fspan>',\n-                            'url' => $this->helper->get_url(\n-                                    array(\n-                                        'page' => 'e2pdf',\n-                                        'action' => 'export',\n-                                        'id' => $hook,\n-                                        'dataset' => $entry['id'],\n-                                    ), 'admin.php?'\n-                            ),\n-                            'title' => 'PDF #' . $hook\n-                        ), 'hook_gravity_row_actions', $hook, $entry['id']\n-                );\n-                if (!empty($action)) {\n-                    echo sprintf(\n-                            $action['html'], $action['url'], $action['title']\n+                if ($this->helper->load('hooks')->process_hook(\n+                                $hook,\n+                                [\n+                                    'dataset' => $entry['id'],\n+                                ],\n+                                'hook_gravity_row_actions'\n+                        )\n+                ) {\n+                    $action = apply_filters(\n+                            'e2pdf_hook_action_button',\n+                            array(\n+                                'html' => '\u003Cspan> | \u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" href=\"%s\">%s\u003C\u002Fa>\u003C\u002Fspan>',\n+                                'url' => $this->helper->get_url(\n+                                        array(\n+                                            'page' => 'e2pdf',\n+                                            'action' => 'export',\n+                                            'id' => $hook,\n+                                            'dataset' => $entry['id'],\n+                                        ), 'admin.php?'\n+                                ),\n+                                'title' => 'PDF #' . $hook,\n+                            ), 'hook_gravity_row_actions', $hook, $entry['id']\n                     );\n+                    if (!empty($action)) {\n+                        echo sprintf(\n+                                $action['html'], $action['url'], $action['title']\n+                        );\n+                    }\n                 }\n             }\n         }\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fextension\u002Fe2pdf-jetformbuilder.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fextension\u002Fe2pdf-jetformbuilder.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fextension\u002Fe2pdf-jetformbuilder.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fextension\u002Fe2pdf-jetformbuilder.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -386,6 +386,9 @@\n                                     if (!isset($atts['iframe_download'])) {\n                                         $shortcode[3] .= ' iframe_download=\"true\"';\n                                     }\n+                                    if (!isset($atts['iframe_loader'])) {\n+                                        $shortcode[3] .= ' iframe_loader=\"true\"';\n+                                    }\n                                     $success_message = str_replace($shortcode_value, '[' . $shortcode[2] . $shortcode[3] . ']', $success_message);\n                                 }\n                             }\n@@ -1337,21 +1340,31 @@\n \n             public function get_value(array $record = array()) {\n                 $record_id = (int) $record['id'];\n-                $action = apply_filters(\n-                        'e2pdf_hook_action_button',\n-                        array(\n-                            'html' => '\u003Cp style=\"padding: 6px 12px 6.5px 42px\">\u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" href=\"%s\">\u003Cspan class=\"dashicons dashicons-pdf\">\u003C\u002Fspan> %s\u003C\u002Fa>\u003C\u002Fp>',\n-                            'url' => Helper_E2pdf_Helper::instance()->get_url(\n-                                    array(\n-                                        'page' => 'e2pdf',\n-                                        'action' => 'export',\n-                                        'id' => $this->hook,\n-                                        'dataset' => $record_id,\n-                                    ), 'admin.php?'\n-                            ),\n-                            'title' => 'PDF #' . $this->hook,\n-                        ), 'hook_jetformbuilder_entry_view', $this->hook, $record_id\n-                );\n+                $action = array();\n+                if (Helper_E2pdf_Helper::instance()->load('hooks')->process_hook(\n+                                $this->hook,\n+                                [\n+                                    'dataset' => $record_id,\n+                                ],\n+                                'hook_jetformbuilder_entry_view'\n+                        )\n+                ) {\n+                    $action = apply_filters(\n+                            'e2pdf_hook_action_button',\n+                            array(\n+                                'html' => '\u003Cp style=\"padding: 6px 12px 6.5px 42px\">\u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" href=\"%s\">\u003Cspan class=\"dashicons dashicons-pdf\">\u003C\u002Fspan> %s\u003C\u002Fa>\u003C\u002Fp>',\n+                                'url' => Helper_E2pdf_Helper::instance()->get_url(\n+                                        array(\n+                                            'page' => 'e2pdf',\n+                                            'action' => 'export',\n+                                            'id' => $this->hook,\n+                                            'dataset' => $record_id,\n+                                        ), 'admin.php?'\n+                                ),\n+                                'title' => 'PDF #' . $this->hook,\n+                            ), 'hook_jetformbuilder_entry_view', $this->hook, $record_id\n+                    );\n+                }\n                 if (!empty($action)) {\n                     return array(\n                         'text' => $action['title'],\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fextension: e2pdf-metform.php\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fextension\u002Fe2pdf-ninja.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fextension\u002Fe2pdf-ninja.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fextension\u002Fe2pdf-ninja.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fextension\u002Fe2pdf-ninja.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -1,12 +1,11 @@\n \u003C?php\n \n \u002F**\n- * E2Pdf Fluent Forms Extension\n- * @copyright  Copyright 2017 https:\u002F\u002Fe2pdf.com\n- * @license    GPL v2\n- * @version    1\n- * @link       https:\u002F\u002Fe2pdf.com\n- * @since      1.07.04\n+ * File: \u002Fextension\u002Fe2pdf-ninja.php\n+ *\n+ * @package  E2Pdf\n+ * @license  GPLv3\n+ * @link     https:\u002F\u002Fe2pdf.com\n  *\u002F\n if (!defined('ABSPATH')) {\n     die('Access denied.');\n@@ -20,11 +19,7 @@\n         'title' => 'Ninja Forms',\n     );\n \n-    \u002F**\n-     * Get info about extension\n-     * @param string $key - Key to get assigned extension info value\n-     * @return array|string - Extension Key and Title or Assigned extension info value\n-     *\u002F\n+    \u002F\u002F info\n     public function info($key = false) {\n         if ($key && isset($this->info[$key])) {\n             return $this->info[$key];\n@@ -35,10 +30,7 @@\n         }\n     }\n \n-    \u002F**\n-     * Check if needed plugin active\n-     * @return bool - Activated\u002FNot Activated plugin\n-     *\u002F\n+    \u002F\u002F active\n     public function active() {\n         if (defined('E2PDF_NINJA_EXTENSION') || $this->helper->load('extension')->is_plugin_active('ninja-forms\u002Fninja-forms.php')) {\n             return true;\n@@ -46,12 +38,7 @@\n         return false;\n     }\n \n-    \u002F**\n-     * Set option\n-     * @param string $key - Key of option\n-     * @param string $value - Value of option\n-     * @return bool - Status of setting option\n-     *\u002F\n+    \u002F\u002F set\n     public function set($key, $value) {\n         if (!isset($this->options)) {\n             $this->options = new stdClass();\n@@ -111,7 +98,7 @@\n                                             $list_fields_types = array('listcheckbox', 'listmultiselect', 'listradio', 'listselect');\n                                             $field['value_label'] = $field['value'];\n                                             foreach ($form_field->get_setting('fields') as $sub_field) {\n-                                                if (in_array($sub_field['type'], $list_fields_types)) {\n+                                                if (in_array($sub_field['type'], $list_fields_types, false)) {\n                                                     foreach ($field['value_label'] as $sub_value_key => $sub_value) {\n                                                         if (0 === strpos($sub_value['id'], $sub_field['id'] . '_')) {\n                                                             $sub_field['value'] = $sub_value['value'];\n@@ -164,7 +151,8 @@\n                                                                 function ($v) {\n                                                                     return $v['value'];\n                                                                 }, $options\n-                                                        )\n+                                                        ),\n+                                                        false\n                                                 );\n \n                                                 $label = isset($options[$key]['label']) ? $options[$key]['label'] : '';\n@@ -233,11 +221,7 @@\n         return true;\n     }\n \n-    \u002F**\n-     * Get option by key\n-     * @param string $key - Key to get assigned option value\n-     * @return mixed\n-     *\u002F\n+    \u002F\u002F get\n     public function get($key) {\n         if (isset($this->options->$key)) {\n             $value = $this->options->$key;\n@@ -254,10 +238,7 @@\n         return $value;\n     }\n \n-    \u002F**\n-     * Get items to work with\n-     * @return array() - List of available items\n-     *\u002F\n+    \u002F\u002F items\n     public function items() {\n         $items = array();\n         if (function_exists('Ninja_Forms')) {\n@@ -271,11 +252,7 @@\n         return $items;\n     }\n \n-    \u002F**\n-     * Get item\n-     * @param int $item_id - Item ID\n-     * @return object - Item\n-     *\u002F\n+    \u002F\u002F item\n     public function item($item_id = false) {\n         $item_id = (int) $item_id;\n         if (!$item_id && $this->get('item')) {\n@@ -303,12 +280,7 @@\n         return $item;\n     }\n \n-    \u002F**\n-     * Get entries for export\n-     * @param int $item_id - Form ID\n-     * @param string $name - Entries names\n-     * @return array() - Entries list\n-     *\u002F\n+    \u002F\u002F datasets\n     public function datasets($item_id = false, $name = false) {\n         $item_id = (int) $item_id;\n         $datasets = array();\n@@ -332,11 +304,7 @@\n         return $datasets;\n     }\n \n-    \u002F**\n-     * Get Dataset Actions\n-     * @param int $dataset_id - Dataset ID\n-     * @return object\n-     *\u002F\n+    \u002F\u002F get dataset actions\n     public function get_dataset_actions($dataset_id = false) {\n         $dataset_id = (int) $dataset_id;\n         if (!$dataset_id) {\n@@ -354,11 +322,7 @@\n         return $actions;\n     }\n \n-    \u002F**\n-     * Get Template Actions\n-     * @param int $template - Template ID\n-     * @return object\n-     *\u002F\n+    \u002F\u002F get template actions\n     public function get_template_actions($template = false) {\n         $template = (int) $template;\n         if (!$template) {\n@@ -369,13 +333,7 @@\n         return $actions;\n     }\n \n-    \u002F**\n-     * Render value according to content\n-     * @param string $value - Content\n-     * @param string $type - Type of rendering value\n-     * @param array $field - Field details\n-     * @return string - Fully rendered value\n-     *\u002F\n+    \u002F\u002F render\n     public function render($value, $field = array(), $convert_shortcodes = true, $raw = false) {\n         $value = $this->render_shortcodes($value, $field);\n         if (!$raw) {\n@@ -386,33 +344,31 @@\n         return $value;\n     }\n \n-    \u002F**\n-     * Load actions for this extension\n-     *\u002F\n+    \u002F\u002F load actions\n     public function load_actions() { \u002F\u002F phpcs:ignore Squiz.WhiteSpace.SuperfluousWhitespace.EndLine\n     }\n \n-    \u002F**\n-     * Load filters for this extension\n-     *\u002F\n+    \u002F\u002F load filters\n     public function load_filters() {\n         add_filter('ninja_forms_run_action_settings', array($this, 'filter_ninja_forms_run_action_settings'), 10, 4);\n         add_filter('ninja_forms_post_run_action_type_save', array($this, 'filter_ninja_forms_post_run_action_type_save'));\n         add_filter('ninja_forms_post_run_action_type_email', array($this, 'filter_ninja_forms_post_run_action_type_email'));\n         add_filter('ninja_forms_action_email_attachments', array($this, 'filter_ninja_forms_action_email_attachments'), 10, 3);\n         add_filter('ninja_forms_action_email_message', array($this, 'filter_ninja_forms_action_email_message'), 10, 3);\n-        \u002F* 1.25.14 - Trigger Email Action Fix *\u002F\n+        \u002F\u002F 1.25.14 trigger email action fix\n         add_filter('rest_dispatch_request', array($this, 'filter_rest_dispatch_request'), 10, 3);\n     }\n \n+    \u002F\u002F run action settings filter\n     public function filter_ninja_forms_run_action_settings($settings, $form_id, $action_id, $form_data) {\n         $type = isset($settings['type']) ? $settings['type'] : false;\n         if ($type == 'successmessage' && isset($settings['success_msg'])) {\n-            $settings['success_msg'] = $this->filter_content($settings['success_msg'], $this->get('dataset'));\n+            $settings['success_msg'] = $this->filter_content($settings['success_msg'], $this->get('dataset'), false, 'message');\n         }\n         return $settings;\n     }\n \n+    \u002F\u002F post run action type save filter\n     public function filter_ninja_forms_post_run_action_type_save($data) {\n         $dataset_id = isset($data['actions']['save']['sub_id']) ? $data['actions']['save']['sub_id'] : false;\n         if ($dataset_id) {\n@@ -421,6 +377,7 @@\n         return $data;\n     }\n \n+    \u002F\u002F post run action type email filter\n     public function filter_ninja_forms_post_run_action_type_email($data) {\n         $files = $this->helper->get('ninja_attachments');\n         if (is_array($files) && !empty($files)) {\n@@ -432,6 +389,7 @@\n         return $data;\n     }\n \n+    \u002F\u002F email attachments filter\n     public function filter_ninja_forms_action_email_attachments($attachments, $data, $action_settings) {\n         $message = isset($action_settings['email_message']) ? $action_settings['email_message'] : '';\n         if (false !== strpos($message, '[')) {\n@@ -491,15 +449,17 @@\n         return $attachments;\n     }\n \n+    \u002F\u002F email message filter\n     public function filter_ninja_forms_action_email_message($message, $data, $action_settings) {\n         $dataset_id = isset($data['actions']['save']['sub_id']) ? $data['actions']['save']['sub_id'] : false;\n         if (!$dataset_id) {\n             $dataset_id = isset($action_settings['sub_id']) ? $action_settings['sub_id'] : false;\n         }\n-        $message = $this->filter_content($message, $dataset_id);\n+        $message = $this->filter_content($message, $dataset_id, true);\n         return $message;\n     }\n \n+    \u002F\u002F rest dispatch request filter\n     public function filter_rest_dispatch_request($result, $request, $route) {\n         if ($route && false !== strpos($route, '\u002Fninja-forms-submissions\u002Femail-action')) {\n             $data = json_decode($request->get_body());\n@@ -511,7 +471,8 @@\n         return $result;\n     }\n \n-    public function filter_content($message, $dataset_id) {\n+    \u002F\u002F filter content\n+    public function filter_content($message, $dataset_id, $filter, $type = '') {\n         if (false !== strpos($message, '[')) {\n             $shortcode_tags = array(\n                 'e2pdf-download',\n@@ -539,9 +500,12 @@\n                     if (!isset($atts['apply'])) {\n                         $shortcode[3] .= ' apply=\"true\"';\n                     }\n-                    if (!isset($atts['filter'])) {\n+                    if (!isset($atts['filter']) && $filter) {\n                         $shortcode[3] .= ' filter=\"true\"';\n                     }\n+                    if (!isset($atts['iframe_download']) && $type == 'message') {\n+                        $shortcode[3] .= ' iframe_download=\"true\"';\n+                    }\n                     if ($this->helper->load('shortcode')->is_attachment($shortcode, $atts)) { \u002F\u002F phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedIf\n                         $message = str_replace($shortcode_value, '', $message);\n                     } else {\n@@ -553,13 +517,7 @@\n         return $message;\n     }\n \n-    \u002F**\n-     * Render shortcodes which available in this extension\n-     * @param string $value - Content\n-     * @param string $type - Type of rendering value\n-     * @param array $field - Field details\n-     * @return string - Value with rendered shortcodes\n-     *\u002F\n+    \u002F\u002F render shortcodes\n     public function render_shortcodes($value, $field = array()) {\n         $element_id = isset($field['element_id']) ? $field['element_id'] : false;\n         if ($this->verify()) {\n@@ -581,23 +539,14 @@\n         );\n     }\n \n-    \u002F**\n-     * Strip unused shortcodes\n-     * @param string $value - Content\n-     * @return string - Value with removed unused shortcodes\n-     *\u002F\n+    \u002F\u002F strip shortcodes\n     public function strip_shortcodes($value) {\n         $value = preg_replace('~(?:\\[\u002F?)[^\u002F\\]]+\u002F?\\]~s', '', $value);\n         $value = preg_replace('~a\\:\\d+\\:{[^}]*}(*SKIP)(*FAIL)|{[^}]*}~', '', $value);\n         return $value;\n     }\n \n-    \u002F**\n-     * Convert \"shortcodes\" inside value string\n-     * @param string $value - Value string\n-     * @param bool $to - Convert From\u002FTo\n-     * @return string - Converted value\n-     *\u002F\n+    \u002F\u002F convert shortcodes\n     public function convert_shortcodes($value, $to = false, $html = false) {\n         if ($value) {\n             if ($to) {\n@@ -616,10 +565,7 @@\n         return $value;\n     }\n \n-    \u002F**\n-     * Auto Generate of Template for this extension\n-     * @return array - List of elements\n-     *\u002F\n+    \u002F\u002F auto\n     public function auto() {\n         $elements = array();\n         if ($this->get('cached_form')) {\n@@ -662,13 +608,11 @@\n                                     ),\n                                 )\n                         );\n-\n                         foreach ($field['fields'] as $sub_field) {\n                             list($field_id, $sub_field_id) = explode('.', $sub_field['id']);\n                             $sub_field['key'] = $field['key'] . ':0_' . $sub_field_id;\n                             $elements = $this->auto_fields($elements, $sub_field);\n                         }\n-\n                         $elements[] = $this->auto_field(\n                                 $field,\n                                 array(\n@@ -705,6 +649,7 @@\n         return $response;\n     }\n \n+    \u002F\u002F auto fields\n     public function auto_fields($elements, $field) {\n         $width = '100';\n         switch ($field['type']) {\n@@ -1041,6 +986,7 @@\n         return $elements;\n     }\n \n+    \u002F\u002F auto field\n     public function auto_field($field = false, $element = array()) {\n         if (!$field) {\n             return false;\n@@ -1048,10 +994,7 @@\n         return $element;\n     }\n \n-    \u002F**\n-     * Verify if item and dataset exists\n-     * @return bool - item and dataset exists\n-     *\u002F\n+    \u002F\u002F verify\n     public function verify() {\n         if ($this->get('cached_form') && $this->get('cached_entry')) {\n             return true;\n@@ -1059,10 +1002,7 @@\n         return false;\n     }\n \n-    \u002F**\n-     * Init Visual Mapper data\n-     * @return bool|string - HTML data source for Visual Mapper\n-     *\u002F\n+    \u002F\u002F visual mapper\n     public function visual_mapper() {\n         $html = '';\n         if ($this->get('item')) {\n@@ -1114,16 +1054,11 @@\n         return false;\n     }\n \n-    \u002F**\n-     * Load additional shortcodes for this extension\n-     *\u002F\n+    \u002F\u002F load shortcodes\n     public function load_shortcodes() { \u002F\u002F phpcs:ignore Squiz.WhiteSpace.SuperfluousWhitespace.EndLine\n     }\n \n-    \u002F**\n-     * Get styles for generating Map Field function\n-     * @return array - List of css files to load\n-     *\u002F\n+    \u002F\u002F styles\n     public function styles($item_id = false) {\n         $styles = array();\n         $styles[] = plugins_url('css\u002Fextension\u002Fninja.css?v=' . time(), $this->helper->get('plugin_file_path'));\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fextension\u002Fe2pdf-woocommerce.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fextension\u002Fe2pdf-woocommerce.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fextension\u002Fe2pdf-woocommerce.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fextension\u002Fe2pdf-woocommerce.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -100,10 +100,14 @@\n             'product',\n             'product_variation',\n             'shop_order',\n+            'shop_subscription',\n             'cart',\n         );\n         foreach ($forms as $form) {\n-            $items[] = $this->item($form);\n+            $item = $this->item($form);\n+            if (!empty($item->id)) {\n+                $items[] = $this->item($form);\n+            }\n         }\n         return $items;\n     }\n@@ -263,53 +267,9 @@\n         );\n \n         foreach ($email_actions as $email_action) {\n-            add_action($email_action . '_notification', array($this, 'action_after_email'), 99, 2);\n-        }\n-        add_action('woocommerce_after_resend_order_email', array($this, 'action_after_email'), 99, 2);\n-\n-        if (get_option('e2pdf_wc_cart_template_id', '0')) {\n-            add_action('woocommerce_proceed_to_checkout', array($this, 'action_e2pdf_wc_cart_template_id'), (int) get_option('e2pdf_wc_cart_template_id_priority', '10'));\n-        }\n-\n-        if (get_option('e2pdf_wc_checkout_template_id', '0') && get_option('e2pdf_wc_checkout_template_id_hook', 'woocommerce_review_order_before_submit') &&\n-                in_array(\n-                        get_option('e2pdf_wc_checkout_template_id_hook', 'woocommerce_review_order_before_submit'),\n-                        array(\n-                            'woocommerce_review_order_before_submit',\n-                            'woocommerce_review_order_after_submit',\n-                        )\n-                )) {\n-            add_action(get_option('e2pdf_wc_checkout_template_id_hook', 'woocommerce_review_order_before_submit'), array($this, 'action_e2pdf_wc_checkout_template_id'), (int) get_option('e2pdf_wc_checkout_template_id_priority', '10'));\n-        }\n-\n-        if (get_option('e2pdf_wc_order_details_template_id', '0') && get_option('e2pdf_wc_order_details_template_id_hook', 'woocommerce_order_details_before_order_table') &&\n-                in_array(\n-                        get_option('e2pdf_wc_order_details_template_id_hook', 'woocommerce_order_details_before_order_table'),\n-                        array(\n-                            'woocommerce_order_details_before_order_table',\n-                            'woocommerce_order_details_before_order_table_items',\n-                            'woocommerce_order_details_after_order_table_items',\n-                            'woocommerce_order_details_after_order_table',\n-                            'woocommerce_after_order_details',\n-                        )\n-                )) {\n-            add_action(get_option('e2pdf_wc_order_details_template_id_hook', 'woocommerce_order_details_before_order_table'), array($this, 'action_e2pdf_wc_order_details_template_id'), (int) get_option('e2pdf_wc_order_details_template_id_priority', '10'));\n-        }\n-\n-        if (get_option('e2pdf_wc_admin_order_actions_template_id', '0') && get_option('e2pdf_wc_admin_order_actions_template_id_hook', 'woocommerce_admin_order_actions_end') &&\n-                in_array(\n-                        get_option('e2pdf_wc_admin_order_actions_template_id_hook', 'woocommerce_admin_order_actions_end'),\n-                        array(\n-                            'woocommerce_admin_order_actions_start',\n-                            'woocommerce_admin_order_actions_end',\n-                        )\n-                )) {\n-            add_action(get_option('e2pdf_wc_admin_order_actions_template_id_hook', 'woocommerce_admin_order_actions_end'), array($this, 'action_e2pdf_wc_admin_order_actions_template_id'), (int) get_option('e2pdf_wc_admin_order_actions_template_id_priority', '10'));\n-        }\n-\n-        if (get_option('e2pdf_wc_admin_order_details_template_id', '0')) {\n-            add_action('add_meta_boxes', array($this, 'action_add_meta_boxes'));\n+            add_action($email_action . '_notification', array($this, 'action_after_email'), 99);\n         }\n+        add_action('woocommerce_after_resend_order_email', array($this, 'action_after_email'), 99);\n \n         \u002F* Compatibility fix with Enforcing Rules enabled *\u002F\n         add_action('woocommerce_settings_products', array($this, 'action_enforcing_rules_enabled_check'), -10);\n@@ -325,10 +285,45 @@\n         \u002F* Temporary solution for File Downloads in WC Admin Order page *\u002F\n         add_action('add_meta_boxes_woocommerce_page_wc-orders', array($this, 'action_add_meta_boxes_woocommerce_page_wc_orders'));\n         add_action('add_meta_boxes_shop_order', array($this, 'action_add_meta_boxes_woocommerce_page_wc_orders'));\n+        add_action('add_meta_boxes_shop_subscription', array($this, 'action_add_meta_boxes_woocommerce_page_wc_orders'));\n \n-        \u002F* Hooks *\u002F\n+        \u002F* Order Hooks *\u002F\n         add_action('add_meta_boxes', array($this, 'hook_woocommerce_order_edit'));\n         add_action('woocommerce_admin_order_actions_end', array($this, 'hook_woocommerce_order_row_actions'));\n+        add_action('woocommerce_order_details_before_order_table', array($this, 'hook_woocommerce_order_details'));\n+        add_action('woocommerce_order_details_before_order_table_items', array($this, 'hook_woocommerce_order_details'));\n+        add_action('woocommerce_order_details_after_order_table_items', array($this, 'hook_woocommerce_order_details'));\n+        add_action('woocommerce_order_details_after_order_table', array($this, 'hook_woocommerce_order_details'));\n+        add_action('woocommerce_after_order_details', array($this, 'hook_woocommerce_order_details'));\n+        add_action('woocommerce_proceed_to_checkout', array($this, 'hook_woocommerce_proceed_to_checkout'));\n+        add_action('woocommerce_review_order_before_submit', array($this, 'hook_woocommerce_review_order'));\n+        add_action('woocommerce_review_order_after_submit', array($this, 'hook_woocommerce_review_order'));\n+\n+        \u002F* Subscription Hooks *\u002F\n+        add_action('add_meta_boxes', array($this, 'hook_woocommerce_subscription_edit'));\n+        add_action('woocommerce_subscription_before_actions', array($this, 'hook_woocommerce_subscription_details'));\n+        add_action('woocommerce_subscription_after_actions', array($this, 'hook_woocommerce_subscription_details'));\n+        add_action('wcs_subscription_details_table_before_dates', array($this, 'hook_woocommerce_subscription_details'));\n+        add_action('wcs_subscription_details_table_before_payment_method', array($this, 'hook_woocommerce_subscription_details'));\n+        add_action('wcs_subscription_details_table_after_dates', array($this, 'hook_woocommerce_subscription_details'));\n+\n+        \u002F\u002Fphpcs:disable\n+        if (get_option('e2pdf_wc_cart_template_id', '0')) {\n+            add_action('woocommerce_proceed_to_checkout', array($this, 'action_e2pdf_wc_cart_template_id'), (int) get_option('e2pdf_wc_cart_template_id_priority', '10'));\n+        }\n+        if (get_option('e2pdf_wc_checkout_template_id', '0') && get_option('e2pdf_wc_checkout_template_id_hook', 'woocommerce_review_order_before_submit') && in_array(get_option('e2pdf_wc_checkout_template_id_hook', 'woocommerce_review_order_before_submit'), array('woocommerce_review_order_before_submit', 'woocommerce_review_order_after_submit'))) {\n+            add_action(get_option('e2pdf_wc_checkout_template_id_hook', 'woocommerce_review_order_before_submit'), array($this, 'action_e2pdf_wc_checkout_template_id'), (int) get_option('e2pdf_wc_checkout_template_id_priority', '10'));\n+        }\n+        if (get_option('e2pdf_wc_order_details_template_id', '0') && get_option('e2pdf_wc_order_details_template_id_hook', 'woocommerce_order_details_before_order_table') && in_array(get_option('e2pdf_wc_order_details_template_id_hook', 'woocommerce_order_details_before_order_table'), array('woocommerce_order_details_before_order_table', 'woocommerce_order_details_before_order_table_items', 'woocommerce_order_details_after_order_table_items', 'woocommerce_order_details_after_order_table', 'woocommerce_after_order_details'))) {\n+            add_action(get_option('e2pdf_wc_order_details_template_id_hook', 'woocommerce_order_details_before_order_table'), array($this, 'action_e2pdf_wc_order_details_template_id'), (int) get_option('e2pdf_wc_order_details_template_id_priority', '10'));\n+        }\n+        if (get_option('e2pdf_wc_admin_order_actions_template_id', '0') && get_option('e2pdf_wc_admin_order_actions_template_id_hook', 'woocommerce_admin_order_actions_end') && in_array(get_option('e2pdf_wc_admin_order_actions_template_id_hook', 'woocommerce_admin_order_actions_end'), array('woocommerce_admin_order_actions_start', 'woocommerce_admin_order_actions_end'))) {\n+            add_action(get_option('e2pdf_wc_admin_order_actions_template_id_hook', 'woocommerce_admin_order_actions_end'), array($this, 'action_e2pdf_wc_admin_order_actions_template_id'), (int) get_option('e2pdf_wc_admin_order_actions_template_id_priority', '10'));\n+        }\n+        if (get_option('e2pdf_wc_admin_order_details_template_id', '0')) {\n+            add_action('add_meta_boxes', array($this, 'action_add_meta_boxes'));\n+        }\n+        \u002F\u002Fphpcs:enable\n     }\n \n     public function load_filters() {\n@@ -339,14 +334,9 @@\n         add_filter('woocommerce_mail_content', array($this, 'filter_woocommerce_mail_content'), 99);\n         add_filter('woocommerce_display_product_attributes', array($this, 'filter_woocommerce_display_product_attributes'), 10, 2);\n         add_filter('e2pdf_model_shortcode_wc_product_get_attribute_value', array($this, 'filter_e2pdf_model_shortcode_wc_product_get_attribute_value'), 10, 2);\n-        add_filter('e2pdf_model_options_get_options_options', array($this, 'filter_e2pdf_model_options_get_options_options'));\n         add_filter('woocommerce_customer_available_downloads', array($this, 'filter_download_urls'));\n         add_filter('woocommerce_order_get_downloadable_items', array($this, 'filter_download_urls'));\n \n-        if (get_option('e2pdf_wc_my_orders_actions_template_id', '0')) {\n-            add_filter('woocommerce_my_account_my_orders_actions', array($this, 'filter_woocommerce_my_account_my_orders_actions'), (int) get_option('e2pdf_wc_checkout_template_id_priority', '10'), 2);\n-        }\n-\n         \u002F* Flatsome theme global tab content *\u002F\n         add_filter('theme_mod_tab_content', array($this, 'filter_content_custom'));\n \n@@ -365,14 +355,24 @@\n          *\u002F\n         add_filter('cs_element_pre_render', array($this, 'filter_cs_element_pre_render'));\n \n-        \u002F* Hooks *\u002F\n+        \u002F* Order Hooks *\u002F\n         add_filter('manage_edit-shop_order_columns', array($this, 'hook_woocommerce_order_row_column'));\n+        add_filter('woocommerce_my_account_my_orders_actions', array($this, 'hook_woocommerce_my_account_my_orders_actions'), 10, 2);\n+\n+        \u002F* Subscription Hooks *\u002F\n+        add_filter('manage_edit-shop_subscription_columns', array($this, 'hook_woocommerce_subscription_row_column'), 11);\n+        add_filter('wcs_view_subscription_actions', array($this, 'hook_wcs_view_subscription_actions'), 11, 2);\n+\n+        \u002F\u002Fphpcs:disable\n+        if (get_option('e2pdf_wc_my_orders_actions_template_id', '0')) {\n+            add_filter('woocommerce_my_account_my_orders_actions', array($this, 'filter_woocommerce_my_account_my_orders_actions'), (int) get_option('e2pdf_wc_checkout_template_id_priority', '10'), 2);\n+        }\n+        add_filter('e2pdf_model_options_get_options_options', array($this, 'filter_e2pdf_model_options_get_options_options'));\n+        \u002F\u002Fphpcs:enable\n     }\n \n-    \u002F**\n-     * Delete attachments that were sent by email\n-     *\u002F\n-    public function action_after_email($order_id, $order = false) {\n+    \u002F\u002F action after email\n+    public function action_after_email() {\n         $files = $this->helper->get('woocommerce_attachments');\n         if (is_array($files) && !empty($files)) {\n             foreach ($files as $key => $file) {\n@@ -382,76 +382,6 @@\n         }\n     }\n \n-    public function action_e2pdf_wc_cart_template_id() {\n-        if (!is_cart() || WC()->cart->is_empty()) {\n-            return;\n-        }\n-        echo apply_filters(\n-                'e2pdf_wc_action_e2pdf_wc_cart_template_id',\n-                do_shortcode('[e2pdf-download id=\"' . get_option('e2pdf_wc_cart_template_id', '0') . '\" dataset=\"' . wc_get_page_id('cart') . '\" class=\"button e2pdf-wc-download-button e2pdf-wc-download-cart-button\"]')\n-        );\n-    }\n-\n-    public function action_e2pdf_wc_checkout_template_id() {\n-        if (!is_checkout() || WC()->cart->is_empty()) {\n-            return;\n-        }\n-        echo apply_filters(\n-                'e2pdf_wc_action_e2pdf_wc_checkout_template_id',\n-                do_shortcode('[e2pdf-download id=\"' . get_option('e2pdf_wc_checkout_template_id', '0') . '\" dataset=\"' . wc_get_page_id('cart') . '\" class=\"button e2pdf-wc-download-button e2pdf-wc-download-checkout-button\"]')\n-        );\n-    }\n-\n-    public function action_e2pdf_wc_order_details_template_id($order) {\n-        $statuses = get_option('e2pdf_wc_order_details_template_id_status', array('any'));\n-        if (is_array($statuses) && (in_array($order->get_status(), $statuses) || in_array('wc-' . $order->get_status(), $statuses) || in_array('any', $statuses))) {\n-            echo apply_filters(\n-                    'e2pdf_wc_action_e2pdf_wc_order_details_template_id',\n-                    do_shortcode('[e2pdf-download id=\"' . get_option('e2pdf_wc_order_details_template_id', '0') . '\" dataset=\"' . $order->get_id() . '\" class=\"button e2pdf-wc-download-button e2pdf-wc-download-order-details-button\"]'),\n-                    $order\n-            );\n-        }\n-    }\n-\n-    public function action_e2pdf_wc_admin_order_actions_template_id($order) {\n-        $statuses = get_option('e2pdf_wc_admin_order_actions_template_id_status', array('any'));\n-        if (is_array($statuses) && (in_array($order->get_status(), $statuses) || in_array('wc-' . $order->get_status(), $statuses) || in_array('any', $statuses))) {\n-            echo apply_filters(\n-                    'e2pdf_wc_action_e2pdf_wc_admin_order_actions_template_id',\n-                    do_shortcode('[e2pdf-download id=\"' . get_option('e2pdf_wc_admin_order_actions_template_id', '0') . '\" dataset=\"' . $order->get_id() . '\" user_id=\"' . $order->get_user_id() . '\" class=\"button e2pdf-wc-download-button e2pdf-wc-download-order-details-button\"]'),\n-                    $order\n-            );\n-        }\n-    }\n-\n-    public function action_e2pdf_wc_admin_order_details_template_id() {\n-        global $post;\n-        if (function_exists('wc_get_order') && isset($post->ID)) {\n-            $order = wc_get_order($post->ID);\n-            if ($order) {\n-                $statuses = get_option('e2pdf_wc_admin_order_details_template_id_status', array('any'));\n-                if (is_array($statuses) && (in_array($order->get_status(), $statuses) || in_array('wc-' . $order->get_status(), $statuses) || in_array('any', $statuses))) {\n-                    echo apply_filters(\n-                            'e2pdf_wc_action_e2pdf_wc_admin_order_details_template_id',\n-                            do_shortcode('[e2pdf-download id=\"' . get_option('e2pdf_wc_admin_order_details_template_id', '0') . '\" dataset=\"' . $order->get_id() . '\" user_id=\"' . $order->get_user_id() . '\" class=\"button e2pdf-wc-download-button e2pdf-wc-download-order-details-button\"]'),\n-                            $order\n-                    );\n-                }\n-            }\n-        }\n-    }\n-\n-    public function action_add_meta_boxes() {\n-        add_meta_box(\n-                'woocommerce-order-my-custom',\n-                'E2Pdf',\n-                array($this, 'action_e2pdf_wc_admin_order_details_template_id'),\n-                'shop_order',\n-                'side',\n-                'high'\n-        );\n-    }\n-\n     public function action_enforcing_rules_enabled_check() {\n         if (get_option('wc_downloads_approved_directories_mode') === 'enabled') {\n             if (class_exists('Automattic\\WooCommerce\\Internal\\ProductDownloads\\ApprovedDirectories\\Register')) {\n@@ -496,7 +426,7 @@\n \n     public function action_add_meta_boxes_woocommerce_page_wc_orders($post) {\n         if (class_exists('Automattic\\WooCommerce\\Utilities\\OrderUtil') && method_exists('Automattic\\WooCommerce\\Utilities\\OrderUtil', 'is_order_edit_screen') && class_exists('WC_Data_Store')) {\n-            if (Automattic\\WooCommerce\\Utilities\\OrderUtil::is_order_edit_screen()) {\n+            if (Automattic\\WooCommerce\\Utilities\\OrderUtil::is_order_edit_screen() || Automattic\\WooCommerce\\Utilities\\OrderUtil::is_order_edit_screen('shop_subscription')) {\n                 if ($post instanceof WC_Order) {\n                     $order_id = $post->get_id();\n                 } else {\n@@ -676,12 +606,12 @@\n                                             if (isset($atts['products']) && $atts['products']) {\n                                                 $attachment = false;\n                                                 $products = explode(',', $atts['products']);\n-                                                if (in_array($item, $products)) {\n+                                                if (in_array($item, $products, false)) {\n                                                     $attachment = true;\n                                                 } else {\n                                                     $product = wc_get_product($item);\n                                                     if ($product && method_exists($product, 'get_parent_id')) {\n-                                                        if (in_array($product->get_parent_id(), $products)) {\n+                                                        if (in_array($product->get_parent_id(), $products, false)) {\n                                                             $attachment = true;\n                                                         }\n                                                     }\n@@ -715,7 +645,7 @@\n                                                 $item_shortcode[3] .= ' filter=\"true\"';\n                                             }\n                                             $item_shortcode[3] .= ' dataset=\"' . $linked_entry_id . '\"';\n-                                            if (($item_shortcode[2] === 'e2pdf-save' && isset($atts['attachment']) && $atts['attachment'] == 'true') || $item_shortcode[2] === 'e2pdf-attachment') {\n+                                            if ($this->helper->load('shortcode')->is_attachment($item_shortcode, $atts)) {\n                                                 $file = do_shortcode_tag($item_shortcode);\n                                                 if ($file) {\n                                                     $tmp = false;\n@@ -764,12 +694,12 @@\n                                             if (isset($atts['products']) && $atts['products']) {\n                                                 $attachment = false;\n                                                 $products = explode(',', $atts['products']);\n-                                                if (in_array($item, $products)) {\n+                                                if (in_array($item, $products, false)) {\n                                                     $attachment = true;\n                                                 } else {\n                                                     $product = wc_get_product($item);\n                                                     if ($product && method_exists($product, 'get_parent_id')) {\n-                                                        if (in_array($product->get_parent_id(), $products)) {\n+                                                        if (in_array($product->get_parent_id(), $products, false)) {\n                                                             $attachment = true;\n                                                         }\n                                                     }\n@@ -803,7 +733,7 @@\n                                                 $item_shortcode[3] .= ' filter=\"true\"';\n                                             }\n                                             $item_shortcode[3] .= ' dataset=\"' . $_formidable_form_data . '\"';\n-                                            if (($item_shortcode[2] === 'e2pdf-save' && isset($atts['attachment']) && $atts['attachment'] == 'true') || $item_shortcode[2] === 'e2pdf-attachment') {\n+                                            if ($this->helper->load('shortcode')->is_attachment($item_shortcode, $atts)) {\n                                                 $file = do_shortcode_tag($item_shortcode);\n                                                 if ($file) {\n                                                     $tmp = false;\n@@ -827,7 +757,7 @@\n                                     }\n                                 }\n                             }\n-                        } elseif ($wc_email_id == 'ywgc-email-send-gift-card' && $template->get('extension') === 'wordpress') {\n+                        } elseif ($wc_email_id == 'ywgc-email-send-gift-card' && $template->get('extension') === 'wordpress') {  \u002F\u002F phpcs:ignore WordPress.WP.CapitalPDangit.Misspelled\n                             if ($template->get('item') == 'gift_card') {\n                                 if (isset($atts['dataset'])) {\n                                     foreach ($items_product as $item_id => $item) {\n@@ -860,7 +790,7 @@\n                                                     $item_shortcode[3] .= ' filter=\"true\"';\n                                                 }\n                                                 $item_shortcode[3] .= ' dataset=\"' . $ywgc_gift_post_id . '\"';\n-                                                if (($item_shortcode[2] === 'e2pdf-save' && isset($atts['attachment']) && $atts['attachment'] == 'true') || $item_shortcode[2] === 'e2pdf-attachment') {\n+                                                if ($this->helper->load('shortcode')->is_attachment($item_shortcode, $atts)) {\n                                                     $file = do_shortcode_tag($item_shortcode);\n                                                     if ($file) {\n                                                         $tmp = false;\n@@ -909,7 +839,7 @@\n                                             if (isset($atts['products']) && $atts['products']) {\n                                                 $attachment = false;\n                                                 $products = explode(',', $atts['products']);\n-                                                if (in_array($item, $products)) {\n+                                                if (in_array($item, $products, false)) {\n                                                     $attachment = true;\n                                                 }\n                                             }\n@@ -941,7 +871,7 @@\n                                                 $item_shortcode[3] .= ' filter=\"true\"';\n                                             }\n                                             $item_shortcode[3] .= ' dataset=\"' . $ywgc_gift_post_id . '\"';\n-                                            if (($item_shortcode[2] === 'e2pdf-save' && isset($atts['attachment']) && $atts['attachment'] == 'true') || $item_shortcode[2] === 'e2pdf-attachment') {\n+                                            if ($this->helper->load('shortcode')->is_attachment($item_shortcode, $atts)) {\n                                                 $file = do_shortcode_tag($item_shortcode);\n                                                 if ($file) {\n                                                     $tmp = false;\n@@ -1004,7 +934,7 @@\n                                                     $item_shortcode[3] .= ' wc_product_item_id=\"' . $item_id . '\"';\n                                                 }\n \n-                                                if (($item_shortcode[2] === 'e2pdf-save' && isset($atts['attachment']) && $atts['attachment'] == 'true') || $item_shortcode[2] === 'e2pdf-attachment') {\n+                                                if ($this->helper->load('shortcode')->is_attachment($item_shortcode, $atts)) {\n                                                     $file = do_shortcode_tag($item_shortcode);\n                                                     if ($file) {\n                                                         $tmp = false;\n@@ -1053,7 +983,7 @@\n                                             if (isset($atts['products']) && $atts['products']) {\n                                                 $attachment = false;\n                                                 $products = explode(',', $atts['products']);\n-                                                if (in_array($item, $products)) {\n+                                                if (in_array($item, $products, false)) {\n                                                     $attachment = true;\n                                                 }\n                                             }\n@@ -1091,7 +1021,7 @@\n                                                 $item_shortcode[3] .= ' wc_product_item_id=\"' . $item_id . '\"';\n                                             }\n                                             $item_shortcode[3] .= ' dataset=\"' . $item . '\"';\n-                                            if (($item_shortcode[2] === 'e2pdf-save' && isset($atts['attachment']) && $atts['attachment'] == 'true') || $item_shortcode[2] === 'e2pdf-attachment') {\n+                                            if ($this->helper->load('shortcode')->is_attachment($item_shortcode, $atts)) {\n                                                 $file = do_shortcode_tag($item_shortcode);\n                                                 if ($file) {\n                                                     $tmp = false;\n@@ -1148,7 +1078,7 @@\n                                                 if (!isset($atts['wc_product_item_id'])) {\n                                                     $item_shortcode[3] .= ' wc_product_item_id=\"' . $item_id . '\"';\n                                                 }\n-                                                if (($item_shortcode[2] === 'e2pdf-save' && isset($atts['attachment']) && $atts['attachment'] == 'true') || $item_shortcode[2] === 'e2pdf-attachment') {\n+                                                if ($this->helper->load('shortcode')->is_attachment($item_shortcode, $atts)) {\n                                                     $file = do_shortcode_tag($item_shortcode);\n                                                     if ($file) {\n                                                         $tmp = false;\n@@ -1193,12 +1123,12 @@\n                                             if (isset($atts['products']) && $atts['products']) {\n                                                 $attachment = false;\n                                                 $products = explode(',', $atts['products']);\n-                                                if (in_array($item, $products)) {\n+                                                if (in_array($item, $products, false)) {\n                                                     $attachment = true;\n                                                 } else {\n                                                     $product = wc_get_product($item);\n                                                     if ($product && method_exists($product, 'get_parent_id')) {\n-                                                        if (in_array($product->get_parent_id(), $products)) {\n+                                                        if (in_array($product->get_parent_id(), $products, false)) {\n                                                             $attachment = true;\n                                                         }\n                                                     }\n@@ -1238,7 +1168,7 @@\n                                                 $item_shortcode[3] .= ' wc_product_item_id=\"' . $item_id . '\"';\n                                             }\n                                             $item_shortcode[3] .= ' dataset=\"' . $item . '\"';\n-                                            if (($item_shortcode[2] === 'e2pdf-save' && isset($atts['attachment']) && $atts['attachment'] == 'true') || $item_shortcode[2] === 'e2pdf-attachment') {\n+                                            if ($this->helper->load('shortcode')->is_attachment($item_shortcode, $atts)) {\n                                                 $file = do_shortcode_tag($item_shortcode);\n                                                 if ($file) {\n                                                     $tmp = false;\n@@ -1261,6 +1191,107 @@\n                                         }\n                                     }\n                                 }\n+                            } elseif ($template->get('item') == 'shop_subscription' && function_exists('wcs_get_subscriptions_for_order')) {\n+                                $subscriptions = wcs_get_subscriptions_for_order($order->get_id());\n+                                foreach ($subscriptions as $subscription) {\n+                                    if (!isset($atts['dataset'])) {\n+                                        $attachment = true;\n+                                        if ($attachment) {\n+                                            if (!empty($attributes)) {\n+                                                $attachment = false;\n+                                                foreach ($items_product as $item_id => $item) {\n+                                                    $product = wc_get_product($item);\n+                                                    if ($product) {\n+                                                        foreach ($attributes as $attribute_key => $attribute) {\n+                                                            if ($product->get_attribute($attribute_key) != $attribute) {\n+                                                                $attachment = true;\n+                                                                break;\n+                                                            }\n+                                                        }\n+                                                    }\n+                                                }\n+                                                if (!$attachment) {\n+                                                    foreach ($items_variation as $item_id => $item) {\n+                                                        $product = wc_get_product($item);\n+                                                        if ($product) {\n+                                                            foreach ($attributes as $attribute_key => $attribute) {\n+                                                                if ($product->get_attribute($attribute_key) == $attribute) {\n+                                                                    $attachment = true;\n+                                                                    break;\n+                                                                }\n+                                                            }\n+                                                        }\n+                                                    }\n+                                                }\n+                                            }\n+                                        }\n+                                        if ($attachment) {\n+                                            if (isset($atts['products']) && $atts['products']) {\n+                                                $attachment = false;\n+                                                $products = explode(',', $atts['products']);\n+                                                foreach ($products as $product_id) {\n+                                                    if (in_array($product_id, $items, false) || in_array($product_id, $items_variation, false)) {\n+                                                        $attachment = true;\n+                                                        break;\n+                                                    }\n+                                                }\n+                                            }\n+                                        }\n+                                        if ($attachment) {\n+                                            if (isset($atts['categories']) && $atts['categories']) {\n+                                                $attachment = false;\n+                                                $categories = explode(',', $atts['categories']);\n+                                                foreach ($items as $item) {\n+                                                    if (has_term($categories, 'product_cat', $item)) {\n+                                                        $attachment = true;\n+                                                        break;\n+                                                    }\n+                                                }\n+                                            }\n+                                        }\n+                                        if ($attachment) {\n+                                            if (isset($atts['tags']) && $atts['tags']) {\n+                                                $attachment = false;\n+                                                $tags = explode(',', $atts['tags']);\n+                                                foreach ($items as $item) {\n+                                                    if (has_term($tags, 'product_tag', $item)) {\n+                                                        $attachment = true;\n+                                                        break;\n+                                                    }\n+                                                }\n+                                            }\n+                                        }\n+                                        if ($attachment) {\n+                                            if (!isset($atts['apply'])) {\n+                                                $shortcode[3] .= ' apply=\"true\"';\n+                                            }\n+                                            if (!isset($atts['filter'])) {\n+                                                $shortcode[3] .= ' filter=\"true\"';\n+                                            }\n+                                            $shortcode[3] .= ' dataset=\"' . $subscription->get_id() . '\"';\n+                                            if ($this->helper->load('shortcode')->is_attachment($shortcode, $atts)) {\n+                                                $file = do_shortcode_tag($shortcode);\n+                                                if ($file) {\n+                                                    $tmp = false;\n+                                                    if (substr($file, 0, 4) === 'tmp:') {\n+                                                        $file = substr($file, 4);\n+                                                        $tmp = true;\n+                                                    }\n+                                                    if ($shortcode[2] === 'e2pdf-save' || isset($atts['pdf'])) {\n+                                                        if ($tmp) {\n+                                                            $this->helper->add('woocommerce_attachments', $file);\n+                                                        }\n+                                                    } else {\n+                                                        $this->helper->add('woocommerce_attachments', $file);\n+                                                    }\n+                                                    $attachments[] = $file;\n+                                                }\n+                                            } elseif ($shortcode[2] === 'e2pdf-zapier' || $shortcode[2] === 'e2pdf-save') {\n+                                                do_shortcode_tag($shortcode);\n+                                            }\n+                                        }\n+                                    }\n+                                }\n                             } elseif ($template->get('item') == 'shop_order') {\n                                 if (!isset($atts['dataset'])) {\n                                     $attachment = true;\n@@ -1298,7 +1329,7 @@\n                                             $attachment = false;\n                                             $products = explode(',', $atts['products']);\n                                             foreach ($products as $product_id) {\n-                                                if (in_array($product_id, $items) || in_array($product_id, $items_variation)) {\n+                                                if (in_array($product_id, $items, false) || in_array($product_id, $items_variation, false)) {\n                                                     $attachment = true;\n                                                     break;\n                                                 }\n@@ -1485,6 +1516,7 @@\n                     } else {\n                         $item_ids = array();\n                     }\n+                    \u002F\u002F phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare\n                     $item_id = $wpdb->get_var($wpdb->prepare('SELECT `items`.`order_item_id` FROM `' . $wpdb->prefix . 'woocommerce_order_items` `items` INNER JOIN `' . $wpdb->prefix . \"woocommerce_order_itemmeta` `itemmeta` ON `itemmeta`.`order_item_id` = `items`.`order_item_id` AND (`itemmeta`.`meta_key` = '_product_id' OR `itemmeta`.`meta_key` = '_variation_id' ) AND `itemmeta`.`meta_value` = %d WHERE `items`.`order_id` = %d and `items`.`order_item_type` = 'line_item' and `items`.`order_item_id` NOT IN ( '\" . implode(\"','\", $item_ids) . \"' ) ORDER BY `items`.`order_item_id` ASC\", $download['product_id'], $download['order_id']));\n                     if ($item_id) {\n                         $downloads[$key]['download_url'] = add_query_arg(\n@@ -1571,6 +1603,7 @@\n                                     }\n                                     break;\n                                 case 'shop_order':\n+                                case 'shop_subscription':\n                                     if (!isset($atts['wc_order_id']) && isset($this->get('cached_post')->ID) && $this->get('cached_post')->ID) {\n                                         $shortcode[3] .= ' wc_order_id=' . $this->get('cached_post')->ID . '';\n                                     }\n@@ -1599,6 +1632,7 @@\n                                     }\n                                     break;\n                                 case 'shop_order':\n+                                case 'shop_subscription':\n                                     if (!isset($atts['id']) && isset($this->get('cached_post')->ID) && $this->get('cached_post')->ID) {\n                                         $shortcode[3] .= ' id=' . $this->get('cached_post')->ID . '';\n                                     }\n@@ -1913,7 +1947,7 @@\n                     . '\u003C\u002Ftable>' . \"\\r\\n\",\n                 ),\n             );\n-        } elseif ($this->get('item') == 'shop_order') {\n+        } elseif ($this->get('item') == 'shop_order' || $this->get('item') == 'shop_subscription') {\n             $elements[] = array(\n                 'type' => 'e2pdf-html',\n                 'block' => true,\n@@ -2371,8 +2405,19 @@\n                                 }\n                             }\n                         } elseif ($template->get('extension') === 'woocommerce') {\n-                            if (!isset($atts['dataset']) && $template->get('item') == 'shop_order' && function_exists('wc_get_order') && isset($_GET['order'])) {\n+                            if (!isset($atts['dataset']) && ($template->get('item') == 'shop_order' || $template->get('item') == 'shop_subscription') && function_exists('wc_get_order') && isset($_GET['order'])) {\n                                 $order_id = wc_get_order_id_by_order_key(wc_clean(wp_unslash($_GET['order'])));\n+\n+                                if (function_exists('wcs_get_subscription') && $template->get('item') == 'shop_order' && get_post_type($order_id) == 'shop_subscription') {\n+                                    $subscription = wcs_get_subscription($order_id);\n+                                    if ($subscription) {\n+                                        $subscription_order = $subscription->get_parent();\n+                                        if ($subscription_order) {\n+                                            $order_id = $subscription_order->get_id();\n+                                        }\n+                                    }\n+                                }\n+\n                                 if ($order_id) {\n                                     $atts['dataset'] = $order_id;\n                                     $shortcode[3] .= ' dataset=\"' . $order_id . '\"';\n@@ -2421,256 +2466,6 @@\n         return $content;\n     }\n \n-    \u002F**\n-     * Add options for WooCommerce extension\n-     * @param array $options - List of options\n-     * @return array - Updated options list\n-     *\u002F\n-    public function filter_e2pdf_model_options_get_options_options($options = array()) {\n-        global $wpdb;\n-\n-        $model_e2pdf_template = new Model_E2pdf_Template();\n-\n-        $order_templates = array(\n-            '0' => __('--- Select ---', 'e2pdf'),\n-        );\n-        $templates = $wpdb->get_results($wpdb->prepare('SELECT * FROM `' . $model_e2pdf_template->get_table() . '` WHERE extension = %s AND item = %s AND activated = %s ORDER BY ID ASC', 'woocommerce', 'shop_order', '1'), ARRAY_A);\n-        if (!empty($templates)) {\n-            foreach ($templates as $template) {\n-                $order_templates[$template['ID']] = $template['title'];\n-            }\n-        }\n-\n-        $cart_templates = array(\n-            '0' => __('--- Select ---', 'e2pdf'),\n-        );\n-        $templates = $wpdb->get_results($wpdb->prepare('SELECT * FROM `' . $model_e2pdf_template->get_table() . '` WHERE extension = %s AND item = %s AND activated = %s ORDER BY ID ASC', 'woocommerce', 'cart', '1'), ARRAY_A);\n-\n-        if (!empty($templates)) {\n-            foreach ($templates as $template) {\n-                $cart_templates[$template['ID']] = $template['title'];\n-            }\n-        }\n-\n-        $options['woocommerce_group'] = array(\n-            'name' => 'WooCommerce',\n-            'action' => 'extension',\n-            'group' => 'woocommerce_group',\n-            'options' => array(\n-                array(\n-                    'header' => __('User Order List', 'e2pdf'),\n-                    'name' => __('Template', 'e2pdf'),\n-                    'key' => 'e2pdf_wc_my_orders_actions_template_id',\n-                    'value' => get_option('e2pdf_wc_my_orders_actions_template_id', '0'),\n-                    'default_value' => '0',\n-                    'type' => 'select',\n-                    'options' => $order_templates,\n-                ),\n-                array(\n-                    'name' => __('Order Status', 'e2pdf'),\n-                    'key' => 'e2pdf_wc_my_orders_actions_template_id_status',\n-                    'type' => 'checkbox_list',\n-                    'options' => $this->get_status_options('e2pdf_wc_my_orders_actions_template_id'),\n-                ),\n-                array(\n-                    'name' => __('Priority', 'e2pdf'),\n-                    'key' => 'e2pdf_wc_my_orders_actions_template_id_priority',\n-                    'value' => get_option('e2pdf_wc_my_orders_actions_template_id_priority', '10'),\n-                    'default_value' => '10',\n-                    'type' => 'text',\n-                    'class' => 'e2pdf-numbers',\n-                    'placeholder' => '0',\n-                ),\n-                array(\n-                    'header' => __('User Order Details', 'e2pdf'),\n-                    'name' => __('Template', 'e2pdf'),\n-                    'key' => 'e2pdf_wc_order_details_template_id',\n-                    'value' => get_option('e2pdf_wc_order_details_template_id', '0'),\n-                    'default_value' => '0',\n-                    'type' => 'select',\n-                    'options' => $order_templates,\n-                ),\n-                array(\n-                    'name' => __('Order Status', 'e2pdf'),\n-                    'key' => 'e2pdf_wc_order_details_template_id_status',\n-                    'type' => 'checkbox_list',\n-                    'options' => $this->get_status_options('e2pdf_wc_order_details_template_id'),\n-                ),\n-                array(\n-                    'name' => __('Hook', 'e2pdf'),\n-                    'key' => 'e2pdf_wc_order_details_template_id_hook',\n-                    'value' => get_option('e2pdf_wc_order_details_template_id_hook', 'woocommerce_order_details_before_order_table'),\n-                    'default_value' => 'woocommerce_order_details_before_order_table',\n-                    'type' => 'select',\n-                    'options' => array(\n-                        'woocommerce_order_details_before_order_table' => 'woocommerce_order_details_before_order_table',\n-                        'woocommerce_order_details_before_order_table_items' => 'woocommerce_order_details_before_order_table_items',\n-                        'woocommerce_order_details_after_order_table_items' => 'woocommerce_order_details_after_order_table_items',\n-                        'woocommerce_order_details_after_order_table' => 'woocommerce_order_details_after_order_table',\n-                        'woocommerce_after_order_details' => 'woocommerce_after_order_details',\n-                    ),\n-                ),\n-                array(\n-                    'name' => __('Priority', 'e2pdf'),\n-                    'key' => 'e2pdf_wc_order_details_template_id_priority',\n-                    'value' => get_option('e2pdf_wc_order_details_template_id_priority', '10'),\n-                    'default_value' => '10',\n-                    'type' => 'text',\n-                    'class' => 'e2pdf-numbers',\n-                    'placeholder' => '0',\n-                ),\n-                array(\n-                    'header' => __('User Cart', 'e2pdf'),\n-                    'name' => __('Template', 'e2pdf'),\n-                    'key' => 'e2pdf_wc_cart_template_id',\n-                    'value' => get_option('e2pdf_wc_cart_template_id', '0'),\n-                    'default_value' => '0',\n-                    'type' => 'select',\n-                    'options' => $cart_templates,\n-                ),\n-                array(\n-                    'name' => __('Priority', 'e2pdf'),\n-                    'key' => 'e2pdf_wc_cart_template_id_priority',\n-                    'value' => get_option('e2pdf_wc_cart_template_id_priority', '10'),\n-                    'default_value' => '10',\n-                    'type' => 'text',\n-                    'class' => 'e2pdf-numbers',\n-                    'placeholder' => '0',\n-                ),\n-                array(\n-                    'header' => __('User Checkout', 'e2pdf'),\n-                    'name' => __('Template', 'e2pdf'),\n-                    'key' => 'e2pdf_wc_checkout_template_id',\n-                    'value' => get_option('e2pdf_wc_checkout_template_id', '0'),\n-                    'default_value' => '0',\n-                    'type' => 'select',\n-                    'options' => $cart_templates,\n-                ),\n-                array(\n-                    'name' => __('Hook', 'e2pdf'),\n-                    'key' => 'e2pdf_wc_checkout_template_id_hook',\n-                    'value' => get_option('e2pdf_wc_checkout_template_id_hook', 'woocommerce_review_order_before_submit'),\n-                    'default_value' => 'woocommerce_review_order_before_submit',\n-                    'type' => 'select',\n-                    'options' => array(\n-                        'woocommerce_review_order_before_submit' => 'woocommerce_review_order_before_submit',\n-                        'woocommerce_review_order_after_submit' => 'woocommerce_review_order_after_submit',\n-                    ),\n-                ),\n-                array(\n-                    'name' => __('Priority', 'e2pdf'),\n-                    'key' => 'e2pdf_wc_checkout_template_id_priority',\n-                    'value' => get_option('e2pdf_wc_checkout_template_id_priority', '10'),\n-                    'default_value' => '10',\n-                    'type' => 'text',\n-                    'class' => 'e2pdf-numbers',\n-                    'placeholder' => '0',\n-                ),\n-            ),\n-        );\n-\n-        \u002F* Deprecate and move to Hooks *\u002F\n-        \u002F\u002Fif (get_option('e2pdf_wc_admin_order_actions_template_id', '0')) {\n-        $options['woocommerce_group']['options'][] = array(\n-            'header' => __('Admin Order List', 'e2pdf'),\n-            'name' => __('Template', 'e2pdf'),\n-            'key' => 'e2pdf_wc_admin_order_actions_template_id',\n-            'value' => get_option('e2pdf_wc_admin_order_actions_template_id', '0'),\n-            'default_value' => '0',\n-            'type' => 'select',\n-            'options' => $order_templates,\n-        );\n-        $options['woocommerce_group']['options'][] = array(\n-            'name' => __('Hook', 'e2pdf'),\n-            'key' => 'e2pdf_wc_admin_order_actions_template_id_hook',\n-            'value' => get_option('e2pdf_wc_admin_order_actions_template_id_hook', 'woocommerce_admin_order_actions_end'),\n-            'default_value' => 'woocommerce_admin_order_actions_end',\n-            'type' => 'select',\n-            'options' => array(\n-                'woocommerce_admin_order_actions_start' => 'woocommerce_admin_order_actions_start',\n-                'woocommerce_admin_order_actions_end' => 'woocommerce_admin_order_actions_end',\n-            ),\n-        );\n-        $options['woocommerce_group']['options'][] = array(\n-            'name' => __('Order Status', 'e2pdf'),\n-            'key' => 'e2pdf_wc_admin_order_actions_template_id_status',\n-            'type' => 'checkbox_list',\n-            'options' => $this->get_status_options('e2pdf_wc_admin_order_actions_template_id'),\n-        );\n-        $options['woocommerce_group']['options'][] = array(\n-            'name' => __('Priority', 'e2pdf'),\n-            'key' => 'e2pdf_wc_admin_order_actions_template_id_priority',\n-            'value' => get_option('e2pdf_wc_admin_order_actions_template_id_priority', '10'),\n-            'default_value' => '10',\n-            'type' => 'text',\n-            'class' => 'e2pdf-numbers',\n-            'placeholder' => '0',\n-        );\n-        \u002F\u002F}\n-        \u002F\u002Fif (get_option('e2pdf_wc_admin_order_details_template_id', '0')) {\n-        $options['woocommerce_group']['options'][] = array(\n-            'header' => __('Admin Order Details', 'e2pdf'),\n-            'name' => __('Template', 'e2pdf'),\n-            'key' => 'e2pdf_wc_admin_order_details_template_id',\n-            'value' => get_option('e2pdf_wc_admin_order_details_template_id', '0'),\n-            'default_value' => '0',\n-            'type' => 'select',\n-            'options' => $order_templates,\n-        );\n-        $options['woocommerce_group']['options'][] = array(\n-            'name' => __('Order Status', 'e2pdf'),\n-            'key' => 'e2pdf_wc_admin_order_details_template_id_status',\n-            'type' => 'checkbox_list',\n-            'options' => $this->get_status_options('e2pdf_wc_admin_order_details_template_id'),\n-        );\n-        \u002F\u002F }\n-\n-        return $options;\n-    }\n-\n-    public function get_status_options($key) {\n-        $statuses = get_option($key . '_status', array('any'));\n-        $order_statuses = array();\n-        if (function_exists('wc_get_order_statuses')) {\n-            $order_statuses = wc_get_order_statuses();\n-        }\n-        $status_options = array();\n-        foreach ($order_statuses as $order_status_key => $order_status) {\n-            $status_options[] = array(\n-                'name' => $order_status,\n-                'key' => $key . '_status[]',\n-                'value' => is_array($statuses) && in_array($order_status_key, $statuses) ? $order_status_key : '',\n-                'checkbox_value' => $order_status_key,\n-                'placeholder' => $order_status,\n-                'type' => 'checkbox',\n-                'default_value' => '',\n-            );\n-        }\n-\n-        $status_options[] = array(\n-            'name' => 'Any',\n-            'key' => $key . '_status[]',\n-            'value' => is_array($statuses) && in_array('any', $statuses) ? 'any' : '',\n-            'checkbox_value' => 'any',\n-            'placeholder' => __('Any', 'e2pdf'),\n-            'type' => 'checkbox',\n-            'default_value' => '',\n-        );\n-\n-        return $status_options;\n-    }\n-\n-    public function filter_woocommerce_my_account_my_orders_actions($actions, $order) {\n-        $statuses = get_option('e2pdf_wc_my_orders_actions_template_id_status', array('any'));\n-        if (is_array($statuses) && (in_array($order->get_status(), $statuses) || in_array('wc-' . $order->get_status(), $statuses) || in_array('any', $statuses))) {\n-            $actions['e2pdf_invoice'] = array(\n-                'url' => do_shortcode('[e2pdf-download id=\"' . get_option('e2pdf_wc_my_orders_actions_template_id', '0') . '\" dataset=\"' . $order->get_id() . '\" output=\"url\"]'),\n-                'name' => apply_filters('e2pdf_wc_my_account_my_orders_actions_invoice_title', do_shortcode('[e2pdf-download id=\"' . get_option('e2pdf_wc_my_orders_actions_template_id', '0') . '\" dataset=\"' . $order->get_id() . '\" output=\"button_title\"]')),\n-            );\n-        }\n-        return apply_filters('e2pdf_wc_filter_woocommerce_my_account_my_orders_actions', $actions, $order);\n-    }\n-\n     public function filter_woocommerce_product_downloads_approved_directory_validation_for_shortcodes($enabled) {\n         if (get_option('wc_downloads_approved_directories_mode') === 'enabled') {\n             return false;\n@@ -2848,8 +2643,8 @@\n             $vc .= '\u003C\u002Fdiv>';\n         }\n \n-        if ($this->get('item') == 'shop_order') {\n-            $vc .= $this->get_vm_order();\n+        if ($this->get('item') == 'shop_order' || $this->get('item') == 'shop_subscription') {\n+            $vc .= $this->get_vm_order($this->get('item'));\n             $vc .= '\u003Ch3 class=\"e2pdf-plr5\">Order Common\u003C\u002Fh3>';\n             $vc .= '\u003Cdiv class=\"e2pdf-grid\">';\n             $vc .= '\u003Cdiv class=\"e2pdf-ib e2pdf-w50 e2pdf-vm-item\">' . $this->get_vm_element('ID', 'e2pdf-wc-order key=\"id\"') . '\u003C\u002Fdiv>';\n@@ -2908,6 +2703,8 @@\n                 $groups = acf_get_field_groups(array('post_type' => 'product'));\n             } elseif ($this->get('item') == 'shop_order') {\n                 $groups = acf_get_field_groups(array('post_type' => 'shop_order'));\n+            } elseif ($this->get('item') == 'shop_subscription') {\n+                $groups = acf_get_field_groups(array('post_type' => 'shop_subscription'));\n             } else {\n                 $groups = array();\n             }\n@@ -2916,7 +2713,7 @@\n                 foreach ($groups as $group_key => $group) {\n                     $post_id = '';\n                     if (!empty($user_groups)) {\n-                        if (in_array($group['key'], $user_groups)) {\n+                        if (in_array($group['key'], $user_groups, false)) {\n                             if ($this->get('item') == '-3') {\n                                 $post_id = ' post_id=\"user_[e2pdf-dataset]\"';\n                             } else {\n@@ -2979,7 +2776,7 @@\n                         $meta_keys[] = $meta['meta_key'];\n                     }\n                 } else {\n-                    $field_key = array_search($meta['order_item_type'], array_column($meta_keys, 'meta_key'));\n+                    $field_key = array_search($meta['order_item_type'], array_column($meta_keys, 'meta_key'), false);\n                     if ($field_key === false) {\n                         $meta_keys[] = array(\n                             'meta_key' => $meta['order_item_type'],\n@@ -3007,6 +2804,7 @@\n                 'order' => 'desc',\n             );\n             $orderby = $this->helper->load('db')->prepare_orderby($order_condition);\n+            \u002F\u002F phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare\n             $meta_keys = $wpdb->get_col($wpdb->prepare('SELECT DISTINCT `taxonomy` FROM `' . $wpdb->term_taxonomy . '` `t` ' . $orderby . '', ''));\n         }\n \n@@ -3022,12 +2820,13 @@\n \n         $meta_keys = array();\n         if ($item || $post_id) {\n-            if ($item == 'shop_order' && get_option('woocommerce_custom_orders_table_enabled') === 'yes' && get_option('woocommerce_custom_orders_table_data_sync_enabled') !== 'yes') {\n+            if (($item == 'shop_order' || $item == 'shop_subscription') && get_option('woocommerce_custom_orders_table_enabled') === 'yes' && get_option('woocommerce_custom_orders_table_data_sync_enabled') !== 'yes') {\n                 $order_condition = array(\n                     'orderby' => 'meta_key',\n                     'order' => 'desc',\n                 );\n                 $orderby = $this->helper->load('db')->prepare_orderby($order_condition);\n+                \u002F\u002F phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare\n                 $meta_keys = $wpdb->get_col($wpdb->prepare('SELECT DISTINCT `meta_key` FROM `' . $wpdb->prefix . 'wc_orders_meta` `pm` ' . $orderby . ''));\n                 if (class_exists('WC_Order_Data_Store_CPT')) {\n                     $internal_meta_keys = (new WC_Order_Data_Store_CPT())->get_internal_meta_keys();\n@@ -3059,6 +2858,7 @@\n                 );\n                 $where = $this->helper->load('db')->prepare_where($condition);\n                 $orderby = $this->helper->load('db')->prepare_orderby($order_condition);\n+                \u002F\u002F phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare\n                 $meta_keys = $wpdb->get_col($wpdb->prepare('SELECT DISTINCT `meta_key` FROM `' . $wpdb->postmeta . '` `pm` LEFT JOIN `' . $wpdb->posts . '` `p` ON (`p`.`ID` = `pm`.`post_ID`) ' . $where['sql'] . $orderby . '', $where['filter']));\n             }\n         }\n@@ -3093,7 +2893,7 @@\n \n         $where = $this->helper->load('db')->prepare_where($condition);\n         $orderby = $this->helper->load('db')->prepare_orderby($order_condition);\n-\n+        \u002F\u002F phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare\n         $custom_meta_keys = $wpdb->get_col($wpdb->prepare('SELECT DISTINCT `meta_value` FROM `' . $wpdb->postmeta . '` `pm`' . $where['sql'] . $orderby . '', $where['filter']));\n         foreach ($custom_meta_keys as $custom_meta_key) {\n             $custom_metas = $this->helper->load('convert')->unserialize($custom_meta_key);\n@@ -3101,7 +2901,7 @@\n                 foreach ($custom_metas as $custom_metas_key => $custom_metas_value) {\n                     if (isset($custom_metas_value['is_taxonomy']) && $custom_metas_value['is_taxonomy']) { \u002F\u002F phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedIf\n                     } else {\n-                        $in_array = array_search($custom_metas_key, array_column($meta_keys, 'id'));\n+                        $in_array = array_search($custom_metas_key, array_column($meta_keys, 'id'), false);\n                         if ($in_array === false && isset($custom_metas_value['name'])) {\n                             $meta_keys[] = array(\n                                 'id' => $custom_metas_key,\n@@ -3127,7 +2927,7 @@\n     private function get_vm_product() {\n \n         $index = '';\n-        if ($this->get('item') == 'shop_order' || $this->get('item') == 'cart') {\n+        if ($this->get('item') == 'shop_order' || $this->get('item') == 'shop_subscription' || $this->get('item') == 'cart') {\n             $index = ' index=\"0\"';\n         }\n \n@@ -3177,7 +2977,7 @@\n         $vc .= '\u003Cdiv class=\"e2pdf-ib e2pdf-w50 e2pdf-vm-item\">' . $this->get_vm_element('Category IDs', 'e2pdf-wc-product key=\"get_category_ids\"' . $index) . '\u003C\u002Fdiv>';\n         $vc .= '\u003Cdiv class=\"e2pdf-ib e2pdf-w50 e2pdf-vm-item\">' . $this->get_vm_element('Tag IDs', 'e2pdf-wc-product key=\"get_tag_ids\"' . $index) . '\u003C\u002Fdiv>';\n         $vc .= '\u003Cdiv class=\"e2pdf-ib e2pdf-w50 e2pdf-vm-item\">' . $this->get_vm_element('Virtual', 'e2pdf-wc-product key=\"get_virtual\"' . $index) . '\u003C\u002Fdiv>';\n-        $vc .= '\u003Cdiv class=\"e2pdf-ib e2pdf-w50 e2pdf-vm-item\">' . $this->get_vm_element('Gallery Image Ids', 'e2pdf-wc-product key=\"get_gallery_image_ids\"' . $index) . '\u003C\u002Fdiv>';\n+        $vc .= '\u003Cdiv class=\"e2pdf-ib e2pdf-w50 e2pdf-vm-item\">' . $this->get_vm_element('Gallery Image IDs', 'e2pdf-wc-product key=\"get_gallery_image_ids\"' . $index) . '\u003C\u002Fdiv>';\n         $vc .= '\u003Cdiv class=\"e2pdf-ib e2pdf-w50 e2pdf-vm-item\">' . $this->get_vm_element('Shipping Class ID', 'e2pdf-wc-product key=\"get_shipping_class_id\"' . $index) . '\u003C\u002Fdiv>';\n         $vc .= '\u003Cdiv class=\"e2pdf-ib e2pdf-w50 e2pdf-vm-item\">' . $this->get_vm_element('Downloads', 'e2pdf-wc-product key=\"get_downloads\"' . $index) . '\u003C\u002Fdiv>';\n         $vc .= '\u003Cdiv class=\"e2pdf-ib e2pdf-w50 e2pdf-vm-item\">' . $this->get_vm_element('Download Expiry', 'e2pdf-wc-product key=\"get_download_expiry\"' . $index) . '\u003C\u002Fdiv>';\n@@ -3266,7 +3066,7 @@\n \n         if (!empty($meta_keys2)) {\n             foreach ($meta_keys2 as $meta_key) {\n-                if (!in_array($meta_key, $meta_keys)) {\n+                if (!in_array($meta_key, $meta_keys, false)) {\n                     $meta_keys[] = $meta_key;\n                 }\n             }\n@@ -3300,7 +3100,7 @@\n \n     private function get_vm_product_order() {\n         $index = '';\n-        if ($this->get('item') == 'shop_order' || $this->get('item') == 'cart') {\n+        if ($this->get('item') == 'shop_order' || $this->get('item') == 'shop_subscription' || $this->get('item') == 'cart') {\n             $index = ' index=\"0\"';\n         }\n \n@@ -3350,7 +3150,7 @@\n     private function get_vm_product_order_item_meta() {\n \n         $index = '';\n-        if ($this->get('item') == 'shop_order' || $this->get('item') == 'cart') {\n+        if ($this->get('item') == 'shop_order' || $this->get('item') == 'shop_subscription' || $this->get('item') == 'cart') {\n             $index = ' index=\"0\"';\n         }\n \n@@ -3370,7 +3170,7 @@\n         return $vc;\n     }\n \n-    private function get_vm_order() {\n+    private function get_vm_order($post_type = 'shop_order') {\n \n         $vc = '';\n         $vc .= '\u003Ch3 class=\"e2pdf-plr5\">Order\u003C\u002Fh3>';\n@@ -3446,6 +3246,9 @@\n         $vc .= '\u003Cdiv class=\"e2pdf-ib e2pdf-w50 e2pdf-vm-item\">' . $this->get_vm_element('View Order URL', 'e2pdf-wc-order key=\"get_view_order_url\"') . '\u003C\u002Fdiv>';\n         $vc .= '\u003Cdiv class=\"e2pdf-ib e2pdf-w50 e2pdf-vm-item\">' . $this->get_vm_element('Edit Order URL', 'e2pdf-wc-order key=\"get_edit_order_url\"') . '\u003C\u002Fdiv>';\n         $vc .= '\u003Cdiv class=\"e2pdf-ib e2pdf-w50 e2pdf-vm-item\">' . $this->get_vm_element('Status', 'e2pdf-wc-order key=\"get_status\"') . '\u003C\u002Fdiv>';\n+        $vc .= '\u003Cdiv class=\"e2pdf-ib e2pdf-w50 e2pdf-vm-item\">' . $this->get_vm_element('Items IDs', 'e2pdf-wc-order key=\"get_items_ids\"') . '\u003C\u002Fdiv>';\n+        $vc .= '\u003Cdiv class=\"e2pdf-ib e2pdf-w50 e2pdf-vm-item\">' . $this->get_vm_element('Items Category', 'e2pdf-wc-order key=\"get_items_category\"') . '\u003C\u002Fdiv>';\n+        $vc .= '\u003Cdiv class=\"e2pdf-ib e2pdf-w50 e2pdf-vm-item\">' . $this->get_vm_element('Items Category IDs', 'e2pdf-wc-order key=\"get_items_category_ids\"') . '\u003C\u002Fdiv>';\n         $vc .= '\u003Cdiv class=\"e2pdf-ib e2pdf-w50 e2pdf-vm-item\">' . $this->get_vm_element('Cart', 'e2pdf-wc-order key=\"cart\"') . '\u003C\u002Fdiv>';\n         $vc .= '\u003C\u002Fdiv>';\n \n@@ -3456,7 +3259,7 @@\n \n         $vc .= '\u003C\u002Fdiv>';\n \n-        $meta_keys = $this->get_post_meta_keys('shop_order');\n+        $meta_keys = $this->get_post_meta_keys($post_type);\n         if (!empty($meta_keys)) {\n             $vc .= '\u003Ch3 class=\"e2pdf-plr5\">Order Meta Keys\u003C\u002Fh3>';\n             $vc .= '\u003Cdiv class=\"e2pdf-grid\">';\n@@ -3568,11 +3371,335 @@\n                 'order' => 'desc',\n             );\n             $orderby = $this->helper->load('db')->prepare_orderby($order_condition);\n+            \u002F\u002F phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare\n             $meta_keys = $wpdb->get_col($wpdb->prepare('SELECT DISTINCT `meta_key` FROM `' . $wpdb->usermeta . '` ' . $orderby . ''));\n         }\n         return $meta_keys;\n     }\n \n+    public function action_e2pdf_wc_cart_template_id() {\n+        if (!is_cart() || WC()->cart->is_empty()) {\n+            return;\n+        }\n+        echo apply_filters(\n+                'e2pdf_wc_action_e2pdf_wc_cart_template_id',\n+                do_shortcode('[e2pdf-download id=\"' . get_option('e2pdf_wc_cart_template_id', '0') . '\" dataset=\"' . wc_get_page_id('cart') . '\" class=\"button e2pdf-wc-download-button e2pdf-wc-download-cart-button\"]')\n+        );\n+    }\n+\n+    public function action_e2pdf_wc_checkout_template_id() {\n+        if (!is_checkout() || WC()->cart->is_empty()) {\n+            return;\n+        }\n+        echo apply_filters(\n+                'e2pdf_wc_action_e2pdf_wc_checkout_template_id',\n+                do_shortcode('[e2pdf-download id=\"' . get_option('e2pdf_wc_checkout_template_id', '0') . '\" dataset=\"' . wc_get_page_id('cart') . '\" class=\"button e2pdf-wc-download-button e2pdf-wc-download-checkout-button\"]')\n+        );\n+    }\n+\n+    public function action_e2pdf_wc_order_details_template_id($order) {\n+        $statuses = get_option('e2pdf_wc_order_details_template_id_status', array('any'));\n+        if (is_array($statuses) && (in_array($order->get_status(), $statuses, false) || in_array('wc-' . $order->get_status(), $statuses, false) || in_array('any', $statuses, false))) {\n+            echo apply_filters(\n+                    'e2pdf_wc_action_e2pdf_wc_order_details_template_id',\n+                    do_shortcode('[e2pdf-download id=\"' . get_option('e2pdf_wc_order_details_template_id', '0') . '\" dataset=\"' . $order->get_id() . '\" class=\"button e2pdf-wc-download-button e2pdf-wc-download-order-details-button\"]'),\n+                    $order\n+            );\n+        }\n+    }\n+\n+    public function action_e2pdf_wc_admin_order_actions_template_id($order) {\n+        $statuses = get_option('e2pdf_wc_admin_order_actions_template_id_status', array('any'));\n+        if (is_array($statuses) && (in_array($order->get_status(), $statuses, false) || in_array('wc-' . $order->get_status(), $statuses, false) || in_array('any', $statuses, false))) {\n+            echo apply_filters(\n+                    'e2pdf_wc_action_e2pdf_wc_admin_order_actions_template_id',\n+                    do_shortcode('[e2pdf-download id=\"' . get_option('e2pdf_wc_admin_order_actions_template_id', '0') . '\" dataset=\"' . $order->get_id() . '\" user_id=\"' . $order->get_user_id() . '\" class=\"button e2pdf-wc-download-button e2pdf-wc-download-order-details-button\"]'),\n+                    $order\n+            );\n+        }\n+    }\n+\n+    public function action_add_meta_boxes() {\n+        add_meta_box(\n+                'woocommerce-order-my-custom',\n+                'E2Pdf',\n+                array($this, 'action_e2pdf_wc_admin_order_details_template_id'),\n+                'shop_order',\n+                'side',\n+                'high'\n+        );\n+    }\n+\n+    public function action_e2pdf_wc_admin_order_details_template_id() {\n+        global $post;\n+        if (function_exists('wc_get_order') && isset($post->ID)) {\n+            $order = wc_get_order($post->ID);\n+            if ($order) {\n+                $statuses = get_option('e2pdf_wc_admin_order_details_template_id_status', array('any'));\n+                if (is_array($statuses) && (in_array($order->get_status(), $statuses, false) || in_array('wc-' . $order->get_status(), $statuses, false) || in_array('any', $statuses, false))) {\n+                    echo apply_filters(\n+                            'e2pdf_wc_action_e2pdf_wc_admin_order_details_template_id',\n+                            do_shortcode('[e2pdf-download id=\"' . get_option('e2pdf_wc_admin_order_details_template_id', '0') . '\" dataset=\"' . $order->get_id() . '\" user_id=\"' . $order->get_user_id() . '\" class=\"button e2pdf-wc-download-button e2pdf-wc-download-order-details-button\"]'),\n+                            $order\n+                    );\n+                }\n+            }\n+        }\n+    }\n+\n+    public function filter_woocommerce_my_account_my_orders_actions($actions, $order) {\n+        $statuses = get_option('e2pdf_wc_my_orders_actions_template_id_status', array('any'));\n+        if (is_array($statuses) && (in_array($order->get_status(), $statuses, false) || in_array('wc-' . $order->get_status(), $statuses, false) || in_array('any', $statuses, false))) {\n+            $url = do_shortcode('[e2pdf-download id=\"' . get_option('e2pdf_wc_my_orders_actions_template_id', '0') . '\" dataset=\"' . $order->get_id() . '\" user_id=\"' . $order->get_user_id() . '\" output=\"url\"]');\n+            if ($url) {\n+                $actions['e2pdf_invoice'] = array(\n+                    'url' => $url,\n+                    'name' => apply_filters('e2pdf_wc_my_account_my_orders_actions_invoice_title', do_shortcode('[e2pdf-download id=\"' . get_option('e2pdf_wc_my_orders_actions_template_id', '0') . '\" dataset=\"' . $order->get_id() . '\" user_id=\"' . $order->get_user_id() . '\" output=\"button_title\"]')),\n+                );\n+            }\n+            $actions = apply_filters('e2pdf_wc_action_e2pdf_wc_my_orders_actions_template_id', $actions, $order);\n+        }\n+        return apply_filters('e2pdf_wc_filter_woocommerce_my_account_my_orders_actions', $actions, $order);\n+    }\n+\n+    \u002F**\n+     * Add options for WooCommerce extension\n+     * @param array $options - List of options\n+     * @return array - Updated options list\n+     *\u002F\n+    public function filter_e2pdf_model_options_get_options_options($options = array()) {\n+        global $wpdb;\n+\n+        $model_e2pdf_template = new Model_E2pdf_Template();\n+\n+        $order_templates = array(\n+            '0' => __('--- Select ---', 'e2pdf'),\n+        );\n+        \u002F\u002F phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare\n+        $templates = $wpdb->get_results($wpdb->prepare('SELECT * FROM `' . $model_e2pdf_template->get_table() . '` WHERE extension = %s AND item = %s AND activated = %s ORDER BY ID ASC', 'woocommerce', 'shop_order', '1'), ARRAY_A);\n+        if (!empty($templates)) {\n+            foreach ($templates as $template) {\n+                $order_templates[$template['ID']] = $template['title'];\n+            }\n+        }\n+\n+        $cart_templates = array(\n+            '0' => __('--- Select ---', 'e2pdf'),\n+        );\n+        \u002F\u002F phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare\n+        $templates = $wpdb->get_results($wpdb->prepare('SELECT * FROM `' . $model_e2pdf_template->get_table() . '` WHERE extension = %s AND item = %s AND activated = %s ORDER BY ID ASC', 'woocommerce', 'cart', '1'), ARRAY_A);\n+\n+        if (!empty($templates)) {\n+            foreach ($templates as $template) {\n+                $cart_templates[$template['ID']] = $template['title'];\n+            }\n+        }\n+\n+        $options['woocommerce_group'] = array(\n+            'name' => 'WooCommerce',\n+            'action' => 'extension',\n+            'group' => 'woocommerce_group',\n+            'options' => array(\n+                array(\n+                    'header' => __('User Order List', 'e2pdf'),\n+                    'name' => __('Template', 'e2pdf'),\n+                    'key' => 'e2pdf_wc_my_orders_actions_template_id',\n+                    'value' => get_option('e2pdf_wc_my_orders_actions_template_id', '0'),\n+                    'default_value' => '0',\n+                    'type' => 'select',\n+                    'options' => $order_templates,\n+                ),\n+                array(\n+                    'name' => __('Order Status', 'e2pdf'),\n+                    'key' => 'e2pdf_wc_my_orders_actions_template_id_status',\n+                    'type' => 'checkbox_list',\n+                    'options' => $this->get_status_options('e2pdf_wc_my_orders_actions_template_id'),\n+                ),\n+                array(\n+                    'name' => __('Priority', 'e2pdf'),\n+                    'key' => 'e2pdf_wc_my_orders_actions_template_id_priority',\n+                    'value' => get_option('e2pdf_wc_my_orders_actions_template_id_priority', '10'),\n+                    'default_value' => '10',\n+                    'type' => 'text',\n+                    'class' => 'e2pdf-numbers',\n+                    'placeholder' => '0',\n+                ),\n+                array(\n+                    'header' => __('User Order Details', 'e2pdf'),\n+                    'name' => __('Template', 'e2pdf'),\n+                    'key' => 'e2pdf_wc_order_details_template_id',\n+                    'value' => get_option('e2pdf_wc_order_details_template_id', '0'),\n+                    'default_value' => '0',\n+                    'type' => 'select',\n+                    'options' => $order_templates,\n+                ),\n+                array(\n+                    'name' => __('Order Status', 'e2pdf'),\n+                    'key' => 'e2pdf_wc_order_details_template_id_status',\n+                    'type' => 'checkbox_list',\n+                    'options' => $this->get_status_options('e2pdf_wc_order_details_template_id'),\n+                ),\n+                array(\n+                    'name' => __('Hook', 'e2pdf'),\n+                    'key' => 'e2pdf_wc_order_details_template_id_hook',\n+                    'value' => get_option('e2pdf_wc_order_details_template_id_hook', 'woocommerce_order_details_before_order_table'),\n+                    'default_value' => 'woocommerce_order_details_before_order_table',\n+                    'type' => 'select',\n+                    'options' => array(\n+                        'woocommerce_order_details_before_order_table' => 'woocommerce_order_details_before_order_table',\n+                        'woocommerce_order_details_before_order_table_items' => 'woocommerce_order_details_before_order_table_items',\n+                        'woocommerce_order_details_after_order_table_items' => 'woocommerce_order_details_after_order_table_items',\n+                        'woocommerce_order_details_after_order_table' => 'woocommerce_order_details_after_order_table',\n+                        'woocommerce_after_order_details' => 'woocommerce_after_order_details',\n+                    ),\n+                ),\n+                array(\n+                    'name' => __('Priority', 'e2pdf'),\n+                    'key' => 'e2pdf_wc_order_details_template_id_priority',\n+                    'value' => get_option('e2pdf_wc_order_details_template_id_priority', '10'),\n+                    'default_value' => '10',\n+                    'type' => 'text',\n+                    'class' => 'e2pdf-numbers',\n+                    'placeholder' => '0',\n+                ),\n+                array(\n+                    'header' => __('User Cart', 'e2pdf'),\n+                    'name' => __('Template', 'e2pdf'),\n+                    'key' => 'e2pdf_wc_cart_template_id',\n+                    'value' => get_option('e2pdf_wc_cart_template_id', '0'),\n+                    'default_value' => '0',\n+                    'type' => 'select',\n+                    'options' => $cart_templates,\n+                ),\n+                array(\n+                    'name' => __('Priority', 'e2pdf'),\n+                    'key' => 'e2pdf_wc_cart_template_id_priority',\n+                    'value' => get_option('e2pdf_wc_cart_template_id_priority', '10'),\n+                    'default_value' => '10',\n+                    'type' => 'text',\n+                    'class' => 'e2pdf-numbers',\n+                    'placeholder' => '0',\n+                ),\n+                array(\n+                    'header' => __('User Checkout', 'e2pdf'),\n+                    'name' => __('Template', 'e2pdf'),\n+                    'key' => 'e2pdf_wc_checkout_template_id',\n+                    'value' => get_option('e2pdf_wc_checkout_template_id', '0'),\n+                    'default_value' => '0',\n+                    'type' => 'select',\n+                    'options' => $cart_templates,\n+                ),\n+                array(\n+                    'name' => __('Hook', 'e2pdf'),\n+                    'key' => 'e2pdf_wc_checkout_template_id_hook',\n+                    'value' => get_option('e2pdf_wc_checkout_template_id_hook', 'woocommerce_review_order_before_submit'),\n+                    'default_value' => 'woocommerce_review_order_before_submit',\n+                    'type' => 'select',\n+                    'options' => array(\n+                        'woocommerce_review_order_before_submit' => 'woocommerce_review_order_before_submit',\n+                        'woocommerce_review_order_after_submit' => 'woocommerce_review_order_after_submit',\n+                    ),\n+                ),\n+                array(\n+                    'name' => __('Priority', 'e2pdf'),\n+                    'key' => 'e2pdf_wc_checkout_template_id_priority',\n+                    'value' => get_option('e2pdf_wc_checkout_template_id_priority', '10'),\n+                    'default_value' => '10',\n+                    'type' => 'text',\n+                    'class' => 'e2pdf-numbers',\n+                    'placeholder' => '0',\n+                ),\n+            ),\n+        );\n+\n+        \u002F* Deprecate and move to Hooks *\u002F\n+        $options['woocommerce_group']['options'][] = array(\n+            'header' => __('Admin Order List', 'e2pdf'),\n+            'name' => __('Template', 'e2pdf'),\n+            'key' => 'e2pdf_wc_admin_order_actions_template_id',\n+            'value' => get_option('e2pdf_wc_admin_order_actions_template_id', '0'),\n+            'default_value' => '0',\n+            'type' => 'select',\n+            'options' => $order_templates,\n+        );\n+        $options['woocommerce_group']['options'][] = array(\n+            'name' => __('Hook', 'e2pdf'),\n+            'key' => 'e2pdf_wc_admin_order_actions_template_id_hook',\n+            'value' => get_option('e2pdf_wc_admin_order_actions_template_id_hook', 'woocommerce_admin_order_actions_end'),\n+            'default_value' => 'woocommerce_admin_order_actions_end',\n+            'type' => 'select',\n+            'options' => array(\n+                'woocommerce_admin_order_actions_start' => 'woocommerce_admin_order_actions_start',\n+                'woocommerce_admin_order_actions_end' => 'woocommerce_admin_order_actions_end',\n+            ),\n+        );\n+        $options['woocommerce_group']['options'][] = array(\n+            'name' => __('Order Status', 'e2pdf'),\n+            'key' => 'e2pdf_wc_admin_order_actions_template_id_status',\n+            'type' => 'checkbox_list',\n+            'options' => $this->get_status_options('e2pdf_wc_admin_order_actions_template_id'),\n+        );\n+        $options['woocommerce_group']['options'][] = array(\n+            'name' => __('Priority', 'e2pdf'),\n+            'key' => 'e2pdf_wc_admin_order_actions_template_id_priority',\n+            'value' => get_option('e2pdf_wc_admin_order_actions_template_id_priority', '10'),\n+            'default_value' => '10',\n+            'type' => 'text',\n+            'class' => 'e2pdf-numbers',\n+            'placeholder' => '0',\n+        );\n+\n+        $options['woocommerce_group']['options'][] = array(\n+            'header' => __('Admin Order Details', 'e2pdf'),\n+            'name' => __('Template', 'e2pdf'),\n+            'key' => 'e2pdf_wc_admin_order_details_template_id',\n+            'value' => get_option('e2pdf_wc_admin_order_details_template_id', '0'),\n+            'default_value' => '0',\n+            'type' => 'select',\n+            'options' => $order_templates,\n+        );\n+        $options['woocommerce_group']['options'][] = array(\n+            'name' => __('Order Status', 'e2pdf'),\n+            'key' => 'e2pdf_wc_admin_order_details_template_id_status',\n+            'type' => 'checkbox_list',\n+            'options' => $this->get_status_options('e2pdf_wc_admin_order_details_template_id'),\n+        );\n+\n+        return $options;\n+    }\n+\n+    public function get_status_options($key) {\n+        $statuses = get_option($key . '_status', array('any'));\n+        $order_statuses = array();\n+        if (function_exists('wc_get_order_statuses')) {\n+            $order_statuses = wc_get_order_statuses();\n+        }\n+        $status_options = array();\n+        foreach ($order_statuses as $order_status_key => $order_status) {\n+            $status_options[] = array(\n+                'name' => $order_status,\n+                'key' => $key . '_status[]',\n+                'value' => is_array($statuses) && in_array($order_status_key, $statuses, false) ? $order_status_key : '',\n+                'checkbox_value' => $order_status_key,\n+                'placeholder' => $order_status,\n+                'type' => 'checkbox',\n+                'default_value' => '',\n+            );\n+        }\n+\n+        $status_options[] = array(\n+            'name' => 'Any',\n+            'key' => $key . '_status[]',\n+            'value' => is_array($statuses) && in_array('any', $statuses, false) ? 'any' : '',\n+            'checkbox_value' => 'any',\n+            'placeholder' => __('Any', 'e2pdf'),\n+            'type' => 'checkbox',\n+            'default_value' => '',\n+        );\n+\n+        return $status_options;\n+    }\n+\n     public function hook_woocommerce_order_edit() {\n         $hooks = $this->helper->load('hooks')->get('woocommerce', 'hook_woocommerce_order_edit', 'shop_order');\n         if (!empty($hooks)) {\n@@ -3590,45 +3717,77 @@\n \n     public function hook_woocommerce_order_edit_callback($post, $metabox) {\n         foreach ($metabox['args']['hooks'] as $hook) {\n-            $action = apply_filters('e2pdf_hook_action_button',\n-                    array(\n-                        'html' => '\u003Cp>\u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" title=\"%2$s\" href=\"%1$s\">\u003Cspan class=\"dashicons dashicons-pdf\">\u003C\u002Fspan> %2$s\u003C\u002Fa>\u003C\u002Fp>',\n-                        'url' => $this->helper->get_url(\n-                                array(\n-                                    'page' => 'e2pdf',\n-                                    'action' => 'export',\n-                                    'id' => $hook,\n-                                    'dataset' => $post->ID,\n-                                ), 'admin.php?'\n-                        ),\n-                        'title' => 'PDF #' . $hook\n-                    ), 'hook_woocommerce_order_edit', $hook, $post->ID\n-            );\n-            if (!empty($action)) {\n-                echo sprintf(\n-                        $action['html'], $action['url'], $action['title']\n+            if ($this->helper->load('hooks')->process_hook(\n+                            $hook,\n+                            [\n+                                'dataset' => $post->ID,\n+                            ],\n+                            'hook_woocommerce_order_edit'\n+                    )\n+            ) {\n+                $action = apply_filters(\n+                        'e2pdf_hook_action_button',\n+                        array(\n+                            'html' => '\u003Cp>\u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" title=\"%2$s\" href=\"%1$s\">\u003Cspan class=\"dashicons dashicons-pdf\">\u003C\u002Fspan> %2$s\u003C\u002Fa>\u003C\u002Fp>',\n+                            'url' => $this->helper->get_url(\n+                                    array(\n+                                        'page' => 'e2pdf',\n+                                        'action' => 'export',\n+                                        'id' => $hook,\n+                                        'dataset' => $post->ID,\n+                                    ), 'admin.php?'\n+                            ),\n+                            'title' => 'PDF #' . $hook,\n+                        ), 'hook_woocommerce_order_edit', $hook, $post->ID\n                 );\n+                if (!empty($action)) {\n+                    echo sprintf(\n+                            $action['html'], $action['url'], $action['title']\n+                    );\n+                }\n             }\n         }\n     }\n \n-    public function hook_woocommerce_order_row_actions($order) {\n-        if (!empty($order->id)) {\n-            $hooks = $this->helper->load('hooks')->get('woocommerce', 'hook_woocommerce_order_row_actions', 'shop_order');\n-            foreach ($hooks as $hook) {\n-                $action = apply_filters('e2pdf_hook_action_button',\n+    public function hook_woocommerce_subscription_edit() {\n+        $hooks = $this->helper->load('hooks')->get('woocommerce', 'hook_woocommerce_subscription_edit', 'shop_subscription');\n+        if (!empty($hooks)) {\n+            add_meta_box(\n+                    'e2pdf',\n+                    apply_filters('e2pdf_hook_section_title', __('E2Pdf Actions', 'e2pdf'), 'hook_woocommerce_subscription_edit'),\n+                    array($this, 'hook_woocommerce_subscription_edit_callback'),\n+                    'shop_subscription',\n+                    'side',\n+                    'default',\n+                    array('hooks' => $hooks)\n+            );\n+        }\n+    }\n+\n+    public function hook_woocommerce_subscription_edit_callback($post, $metabox) {\n+        foreach ($metabox['args']['hooks'] as $hook) {\n+            if ($this->helper->load('hooks')->process_hook(\n+                            $hook,\n+                            [\n+                                'dataset' => $post->ID,\n+                            ],\n+                            'hook_woocommerce_subscription_edit'\n+                    )\n+            ) {\n+                $action = apply_filters(\n+                        'e2pdf_hook_action_button',\n                         array(\n-                            'html' => '\u003Ca class=\"button e2pdf-download-hook e2pdf-download-hook-icon-button\" target=\"_blank\" title=\"%2$s\" href=\"%1$s\">%2$s\u003C\u002Fa> ',\n+                            'html' => '\u003Cp>\u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" title=\"%2$s\" href=\"%1$s\">\u003Cspan class=\"dashicons dashicons-pdf\">\u003C\u002Fspan> %2$s\u003C\u002Fa>\u003C\u002Fp>',\n                             'url' => $this->helper->get_url(\n                                     array(\n                                         'page' => 'e2pdf',\n                                         'action' => 'export',\n                                         'id' => $hook,\n-                                        'dataset' => $order->id,\n+                                        'dataset' => $post->ID,\n                                     ), 'admin.php?'\n                             ),\n-                            'title' => 'PDF #' . $hook\n-                        ), 'hook_woocommerce_order_row_actions', $hook, $order->id\n+                            'title' => 'PDF #' . $hook,\n+                        ), 'hook_woocommerce_subscription_edit', $hook, $post->ID\n                 );\n                 if (!empty($action)) {\n                     echo sprintf(\n@@ -3639,6 +3798,43 @@\n         }\n     }\n \n+    public function hook_woocommerce_order_row_actions($order) {\n+        if (!empty($order->id)) {\n+            $hooks = $this->helper->load('hooks')->get('woocommerce', 'hook_woocommerce_order_row_actions', 'shop_order');\n+            foreach ($hooks as $hook) {\n+                if ($this->helper->load('hooks')->process_hook(\n+                                $hook,\n+                                [\n+                                    'dataset' => $order->id,\n+                                ],\n+                                'hook_woocommerce_order_row_actions'\n+                        )\n+                ) {\n+                    $action = apply_filters(\n+                            'e2pdf_hook_action_button',\n+                            array(\n+                                'html' => '\u003Ca class=\"button e2pdf-download-hook e2pdf-download-hook-icon-button\" target=\"_blank\" title=\"%2$s\" href=\"%1$s\">%2$s\u003C\u002Fa> ',\n+                                'url' => $this->helper->get_url(\n+                                        array(\n+                                            'page' => 'e2pdf',\n+                                            'action' => 'export',\n+                                            'id' => $hook,\n+                                            'dataset' => $order->id,\n+                                        ), 'admin.php?'\n+                                ),\n+                                'title' => 'PDF #' . $hook,\n+                            ), 'hook_woocommerce_order_row_actions', $hook, $order->id\n+                    );\n+                    if (!empty($action)) {\n+                        echo sprintf(\n+                                $action['html'], $action['url'], $action['title']\n+                        );\n+                    }\n+                }\n+            }\n+        }\n+    }\n+\n     public function hook_woocommerce_order_row_column($columns) {\n         $hooks = $this->helper->load('hooks')->get('woocommerce', 'hook_woocommerce_order_row_column', 'shop_order');\n         if (!empty($hooks)) {\n@@ -3652,26 +3848,202 @@\n         if ($column == 'e2pdf_hook_woocommerce_order_row_column') {\n             $hooks = $this->helper->load('hooks')->get('woocommerce', 'hook_woocommerce_order_row_column', 'shop_order');\n             foreach ($hooks as $hook) {\n-                $action = apply_filters('e2pdf_hook_action_button',\n-                        array(\n-                            'html' => '\u003Ca class=\"button e2pdf-download-hook e2pdf-download-hook-icon-button\" target=\"_blank\" title=\"%2$s\" href=\"%1$s\">%2$s\u003C\u002Fa> ',\n-                            'url' => $this->helper->get_url(\n-                                    array(\n-                                        'page' => 'e2pdf',\n-                                        'action' => 'export',\n-                                        'id' => $hook,\n-                                        'dataset' => $post_id,\n-                                    ), 'admin.php?'\n-                            ),\n-                            'title' => 'PDF #' . $hook\n-                        ), 'hook_woocommerce_order_row_column', $hook, $post_id\n-                );\n-                if (!empty($action)) {\n-                    echo sprintf(\n-                            $action['html'], $action['url'], $action['title']\n+                if ($this->helper->load('hooks')->process_hook(\n+                                $hook,\n+                                [\n+                                    'dataset' => $post_id,\n+                                ],\n+                                'hook_woocommerce_order_row_column'\n+                        )\n+                ) {\n+                    $action = apply_filters(\n+                            'e2pdf_hook_action_button',\n+                            array(\n+                                'html' => '\u003Ca class=\"button e2pdf-download-hook e2pdf-download-hook-icon-button\" target=\"_blank\" title=\"%2$s\" href=\"%1$s\">%2$s\u003C\u002Fa> ',\n+                                'url' => $this->helper->get_url(\n+                                        array(\n+                                            'page' => 'e2pdf',\n+                                            'action' => 'export',\n+                                            'id' => $hook,\n+                                            'dataset' => $post_id,\n+                                        ), 'admin.php?'\n+                                ),\n+                                'title' => 'PDF #' . $hook,\n+                            ), 'hook_woocommerce_order_row_column', $hook, $post_id\n+                    );\n+                    if (!empty($action)) {\n+                        echo sprintf(\n+                                $action['html'], $action['url'], $action['title']\n+                        );\n+                    }\n+                }\n+            }\n+        }\n+    }\n+\n+    public function hook_woocommerce_subscription_row_column($columns) {\n+        $hooks = $this->helper->load('hooks')->get('woocommerce', 'hook_woocommerce_subscription_row_column', 'shop_subscription');\n+        if (!empty($hooks)) {\n+            $columns['e2pdf_hook_woocommerce_subscription_row_column'] = apply_filters('e2pdf_hook_section_title', __('E2Pdf Actions', 'e2pdf'), 'hook_woocommerce_subscription_row_column');\n+            add_action('manage_shop_subscription_posts_custom_column', array($this, 'hook_woocommerce_subscription_row_column_callback'), 10, 2);\n+        }\n+        return $columns;\n+    }\n+\n+    public function hook_woocommerce_subscription_row_column_callback($column, $post_id) {\n+        if ($column == 'e2pdf_hook_woocommerce_subscription_row_column') {\n+            $hooks = $this->helper->load('hooks')->get('woocommerce', 'hook_woocommerce_subscription_row_column', 'shop_subscription');\n+            foreach ($hooks as $hook) {\n+                if ($this->helper->load('hooks')->process_hook(\n+                                $hook,\n+                                [\n+                                    'dataset' => $post_id,\n+                                ],\n+                                'hook_woocommerce_subscription_row_column'\n+                        )\n+                ) {\n+                    $action = apply_filters(\n+                            'e2pdf_hook_action_button',\n+                            array(\n+                                'html' => '\u003Ca class=\"button e2pdf-download-hook e2pdf-download-hook-icon-button\" target=\"_blank\" title=\"%2$s\" href=\"%1$s\">%2$s\u003C\u002Fa> ',\n+                                'url' => $this->helper->get_url(\n+                                        array(\n+                                            'page' => 'e2pdf',\n+                                            'action' => 'export',\n+                                            'id' => $hook,\n+                                            'dataset' => $post_id,\n+                                        ), 'admin.php?'\n+                                ),\n+                                'title' => 'PDF #' . $hook,\n+                            ), 'hook_woocommerce_subscription_row_column', $hook, $post_id\n                     );\n+                    if (!empty($action)) {\n+                        echo sprintf(\n+                                $action['html'], $action['url'], $action['title']\n+                        );\n+                    }\n                 }\n             }\n         }\n     }\n+\n+    public function hook_woocommerce_my_account_my_orders_actions($actions, $order) {\n+        $hooks = $this->helper->load('hooks')->get('woocommerce', 'hook_woocommerce_my_account_my_orders_actions', 'shop_order');\n+        foreach ($hooks as $hook) {\n+            if ($this->helper->load('hooks')->process_hook(\n+                            $hook,\n+                            [\n+                                'dataset' => $order->get_id(),\n+                            ],\n+                            'hook_woocommerce_my_account_my_orders_actions'\n+                    )\n+            ) {\n+                $actions['e2pdf_' . $hook] = array(\n+                    'url' => do_shortcode('[e2pdf-download id=\"' . $hook . '\" dataset=\"' . $order->get_id() . '\" noactions=\"true\" output=\"url\"]'),\n+                    'name' => apply_filters('e2pdf_wc_my_account_my_orders_actions_invoice_title', do_shortcode('[e2pdf-download id=\"' . $hook . '\" dataset=\"' . $order->get_id() . '\" noactions=\"true\" output=\"button_title\"]')),\n+                );\n+            }\n+        }\n+        return apply_filters('e2pdf_wc_filter_woocommerce_my_account_my_orders_actions', $actions, $order);\n+    }\n+\n+    public function hook_wcs_view_subscription_actions($actions, $order) {\n+        $hooks = $this->helper->load('hooks')->get('woocommerce', 'hook_wcs_view_subscription_actions', 'shop_subscription');\n+        foreach ($hooks as $hook) {\n+            if ($this->helper->load('hooks')->process_hook(\n+                            $hook,\n+                            [\n+                                'dataset' => $order->get_id(),\n+                            ],\n+                            'hook_wcs_view_subscription_actions'\n+                    )\n+            ) {\n+                $actions['e2pdf_' . $hook] = array(\n+                    'url' => do_shortcode('[e2pdf-download id=\"' . $hook . '\" dataset=\"' . $order->get_id() . '\" noactions=\"true\" output=\"url\"]'),\n+                    'name' => apply_filters('e2pdf_wc_wcs_view_subscription_actions_actions_title', do_shortcode('[e2pdf-download id=\"' . $hook . '\" dataset=\"' . $order->get_id() . '\" noactions=\"true\" output=\"button_title\"]')),\n+                );\n+            }\n+        }\n+        return apply_filters('e2pdf_wc_filter_wcs_view_subscription_actions', $actions, $order);\n+    }\n+\n+    public function hook_woocommerce_order_details($order) {\n+        $hooks = $this->helper->load('hooks')->get('woocommerce', 'hook_' . current_action(), 'shop_order');\n+        foreach ($hooks as $hook) {\n+            if ($this->helper->load('hooks')->process_hook(\n+                            $hook,\n+                            [\n+                                'dataset' => $order->get_id(),\n+                            ],\n+                            'hook_' . current_action()\n+                    )\n+            ) {\n+                echo do_shortcode('[e2pdf-download id=\"' . $hook . '\" dataset=\"' . $order->get_id() . '\" noactions=\"true\" class=\"button e2pdf-wc-download-button e2pdf-wc-download-order-details-button\"]');\n+            }\n+        }\n+    }\n+\n+    public function hook_woocommerce_subscription_details($order) {\n+        $hooks = $this->helper->load('hooks')->get('woocommerce', 'hook_' . current_action(), 'shop_subscription');\n+\n+        if (!empty($hooks)) {\n+            echo '\u003Ctr>\u003Ctd>' . apply_filters('e2pdf_hook_section_title', __('E2Pdf Actions', 'e2pdf'), 'hook_' . current_action()) . '\u003C\u002Ftd>\u003Ctd>';\n+        }\n+\n+        foreach ($hooks as $hook) {\n+            if ($this->helper->load('hooks')->process_hook(\n+                            $hook,\n+                            [\n+                                'dataset' => $order->get_id(),\n+                            ],\n+                            'hook_' . current_action()\n+                    )\n+            ) {\n+                echo do_shortcode('[e2pdf-download id=\"' . $hook . '\" dataset=\"' . $order->get_id() . '\" noactions=\"true\" class=\"button e2pdf-wc-download-button e2pdf-wc-download-subscription-details-button\"]');\n+            }\n+        }\n+\n+        if (!empty($hooks)) {\n+            echo '\u003C\u002Ftd>\u003C\u002Ftr>';\n+        }\n+    }\n+\n+    public function hook_woocommerce_proceed_to_checkout() {\n+        if (!is_cart() || WC()->cart->is_empty()) {\n+            return;\n+        }\n+        $hooks = $this->helper->load('hooks')->get('woocommerce', 'hook_woocommerce_proceed_to_checkout', 'cart');\n+        foreach ($hooks as $hook) {\n+            if ($this->helper->load('hooks')->process_hook(\n+                            $hook,\n+                            [\n+                                'dataset' => wc_get_page_id('cart'),\n+                            ],\n+                            'hook_woocommerce_proceed_to_checkout'\n+                    )\n+            ) {\n+                echo do_shortcode('[e2pdf-download id=\"' . $hook . '\" dataset=\"' . wc_get_page_id('cart') . '\" noactions=\"true\" class=\"button e2pdf-wc-download-button e2pdf-wc-download-cart-button\"]');\n+            }\n+        }\n+    }\n+\n+    public function hook_woocommerce_review_order() {\n+        if (!is_checkout() || WC()->cart->is_empty()) {\n+            return;\n+        }\n+        $hooks = $this->helper->load('hooks')->get('woocommerce', 'hook_' . current_action(), 'cart');\n+        foreach ($hooks as $hook) {\n+            if (\n+                    $this->helper->load('hooks')->process_hook(\n+                            $hook,\n+                            [\n+                                'dataset' => wc_get_page_id('cart'),\n+                            ],\n+                            'hook_' . current_action()\n+                    )\n+            ) {\n+                echo do_shortcode('[e2pdf-download id=\"' . $hook . '\" dataset=\"' . wc_get_page_id('cart') . '\" noactions=\"true\" class=\"button e2pdf-wc-download-button e2pdf-wc-download-checkout-button\"]');\n+            }\n+        }\n+    }\n }\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fextension\u002Fe2pdf-wordpress.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fextension\u002Fe2pdf-wordpress.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fextension\u002Fe2pdf-wordpress.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fextension\u002Fe2pdf-wordpress.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -49,6 +49,13 @@\n                     if ($this->get('item') == '-3') {\n                         $this->set('cached_post', get_user_by('id', $this->get('dataset')));\n                     } else {\n+                        $pll = $this->helper->load('translator')->isPolylang();\n+                        if ($pll) {\n+                            $lang = pll_get_post_language($this->get('dataset'));\n+                            if ($lang) {\n+                                PLL()->curlang = PLL()->model->get_language($lang);\n+                            }\n+                        }\n                         $this->set('cached_post', get_post($this->get('dataset')));\n                     }\n                 }\n@@ -119,13 +126,27 @@\n                     }\n                 }\n             } else {\n-                $entries = get_posts(\n-                        array(\n-                            'post_type' => $item_id,\n-                            'numberposts' => -1,\n-                            'post_status' => 'any',\n-                        )\n-                );\n+                $wpml = $this->helper->load('translator')->isWPML();\n+                if ($wpml) {\n+                    $lang = apply_filters('wpml_current_language', null);\n+                    $entries = get_posts(\n+                            array(\n+                                'post_type' => $item_id,\n+                                'numberposts' => -1,\n+                                'post_status' => 'any',\n+                                'lang' => $lang,\n+                                'suppress_filters' => false,\n+                            )\n+                    );\n+                } else {\n+                    $entries = get_posts(\n+                            array(\n+                                'post_type' => $item_id,\n+                                'numberposts' => -1,\n+                                'post_status' => 'any',\n+                            )\n+                    );\n+                }\n                 if ($entries) {\n                     $this->set('item', $item_id);\n                     foreach ($entries as $key => $entry) {\n@@ -1458,24 +1479,34 @@\n             $hooks = $this->helper->load('hooks')->get('wordpress', 'hook_wordpress_page_edit', $post->post_type);\n             if (!empty($hooks)) {\n                 foreach ($hooks as $hook) {\n-                    $action = apply_filters('e2pdf_hook_action_button',\n-                            array(\n-                                'html' => '\u003Cp>\u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" title=\"%2$s\" href=\"%1$s\">\u003Cspan class=\"dashicons dashicons-pdf\">\u003C\u002Fspan> %2$s\u003C\u002Fa>\u003C\u002Fp>',\n-                                'url' => $this->helper->get_url(\n-                                        array(\n-                                            'page' => 'e2pdf',\n-                                            'action' => 'export',\n-                                            'id' => $hook,\n-                                            'dataset' => $post->ID,\n-                                        ), 'admin.php?'\n-                                ),\n-                                'title' => 'PDF #' . $hook,\n-                            ), 'hook_wordpress_page_edit', $hook, $post->ID\n-                    );\n-                    if (!empty($action)) {\n-                        echo sprintf(\n-                                $action['html'], $action['url'], $action['title']\n+                    if ($this->helper->load('hooks')->process_hook(\n+                                    $hook,\n+                                    [\n+                                        'dataset' => $post->ID,\n+                                    ],\n+                                    'hook_wordpress_page_edit'\n+                            )\n+                    ) {\n+                        $action = apply_filters(\n+                                'e2pdf_hook_action_button',\n+                                array(\n+                                    'html' => '\u003Cp>\u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" title=\"%2$s\" href=\"%1$s\">\u003Cspan class=\"dashicons dashicons-pdf\">\u003C\u002Fspan> %2$s\u003C\u002Fa>\u003C\u002Fp>',\n+                                    'url' => $this->helper->get_url(\n+                                            array(\n+                                                'page' => 'e2pdf',\n+                                                'action' => 'export',\n+                                                'id' => $hook,\n+                                                'dataset' => $post->ID,\n+                                            ), 'admin.php?'\n+                                    ),\n+                                    'title' => 'PDF #' . $hook,\n+                                ), 'hook_wordpress_page_edit', $hook, $post->ID\n                         );\n+                        if (!empty($action)) {\n+                            echo sprintf(\n+                                    $action['html'], $action['url'], $action['title']\n+                            );\n+                        }\n                     }\n                 }\n             }\n@@ -1489,24 +1520,34 @@\n                 \u002F\u002F phpcs:ignore WordPress.WP.CapitalPDangit.Misspelled\n                 $hooks = $this->helper->load('hooks')->get('wordpress', 'hook_wordpress_row_actions', '-3');\n                 foreach ($hooks as $hook) {\n-                    $action = apply_filters('e2pdf_hook_action_button',\n-                            array(\n-                                'html' => '\u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" href=\"%s\">%s\u003C\u002Fa>',\n-                                'url' => $this->helper->get_url(\n-                                        array(\n-                                            'page' => 'e2pdf',\n-                                            'action' => 'export',\n-                                            'id' => $hook,\n-                                            'dataset' => $post->ID,\n-                                        ), 'admin.php?'\n-                                ),\n-                                'title' => 'PDF #' . $hook,\n-                            ), 'hook_wordpress_row_actions', $hook, $post->ID\n-                    );\n-                    if (!empty($action)) {\n-                        $actions['e2pdf_' . $hook] = sprintf(\n-                                $action['html'], $action['url'], $action['title']\n+                    if ($this->helper->load('hooks')->process_hook(\n+                                    $hook,\n+                                    [\n+                                        'dataset' => $post->ID,\n+                                    ],\n+                                    'hook_wordpress_row_actions'\n+                            )\n+                    ) {\n+                        $action = apply_filters(\n+                                'e2pdf_hook_action_button',\n+                                array(\n+                                    'html' => '\u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" href=\"%s\">%s\u003C\u002Fa>',\n+                                    'url' => $this->helper->get_url(\n+                                            array(\n+                                                'page' => 'e2pdf',\n+                                                'action' => 'export',\n+                                                'id' => $hook,\n+                                                'dataset' => $post->ID,\n+                                            ), 'admin.php?'\n+                                    ),\n+                                    'title' => 'PDF #' . $hook,\n+                                ), 'hook_wordpress_row_actions', $hook, $post->ID\n                         );\n+                        if (!empty($action)) {\n+                            $actions['e2pdf_' . $hook] = sprintf(\n+                                    $action['html'], $action['url'], $action['title']\n+                            );\n+                        }\n                     }\n                 }\n             }\n@@ -1515,24 +1556,34 @@\n                 \u002F\u002F phpcs:ignore WordPress.WP.CapitalPDangit.Misspelled\n                 $hooks = $this->helper->load('hooks')->get('wordpress', 'hook_wordpress_row_actions', $post->post_type);\n                 foreach ($hooks as $hook) {\n-                    $action = apply_filters('e2pdf_hook_action_button',\n-                            array(\n-                                'html' => '\u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" href=\"%s\">%s\u003C\u002Fa>',\n-                                'url' => $this->helper->get_url(\n-                                        array(\n-                                            'page' => 'e2pdf',\n-                                            'action' => 'export',\n-                                            'id' => $hook,\n-                                            'dataset' => $post->ID,\n-                                        ), 'admin.php?'\n-                                ),\n-                                'title' => 'PDF #' . $hook,\n-                            ), 'hook_wordpress_row_actions', $hook, $post->ID\n-                    );\n-                    if (!empty($action)) {\n-                        $actions['e2pdf_' . $hook] = sprintf(\n-                                $action['html'], $action['url'], $action['title']\n+                    if ($this->helper->load('hooks')->process_hook(\n+                                    $hook,\n+                                    [\n+                                        'dataset' => $post->ID,\n+                                    ],\n+                                    'hook_wordpress_row_actions'\n+                            )\n+                    ) {\n+                        $action = apply_filters(\n+                                'e2pdf_hook_action_button',\n+                                array(\n+                                    'html' => '\u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" href=\"%s\">%s\u003C\u002Fa>',\n+                                    'url' => $this->helper->get_url(\n+                                            array(\n+                                                'page' => 'e2pdf',\n+                                                'action' => 'export',\n+                                                'id' => $hook,\n+                                                'dataset' => $post->ID,\n+                                            ), 'admin.php?'\n+                                    ),\n+                                    'title' => 'PDF #' . $hook,\n+                                ), 'hook_wordpress_row_actions', $hook, $post->ID\n                         );\n+                        if (!empty($action)) {\n+                            $actions['e2pdf_' . $hook] = sprintf(\n+                                    $action['html'], $action['url'], $action['title']\n+                            );\n+                        }\n                     }\n                 }\n             }\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fextension\u002Fe2pdf-wpcf7.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fextension\u002Fe2pdf-wpcf7.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fextension\u002Fe2pdf-wpcf7.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fextension\u002Fe2pdf-wpcf7.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -662,6 +662,7 @@\n                 \u002F\u002F remove by class\n                 $remove_by_class = array(\n                     'dscf7_signature_inner',\n+                    'as-signature-clear',\n                 );\n                 foreach ($remove_by_class as $key => $class) {\n                     $elements = $xpath->query(\"\u002F\u002F*[contains(@class, '{$class}')]\");\n@@ -680,6 +681,18 @@\n                     $xml->set_node_value($element, 'value', __('Signature', 'e2pdf'));\n                 }\n \n+                \u002F*\n+                 * Digital Signature Addon for Contact Form 7\n+                 * https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fdigital-signature-addon-for-contact-form-7\u002F\n+                 * The plugin is not working due to incorrect JavaScript events\n+                 *\u002F\n+                $signatures = $xpath->query(\"\u002F\u002F*[contains(@class, 'wpcf7-as_signature')]\");\n+                foreach ($signatures as $element) {\n+                    $xml->set_node_value($element, 'type', 'text');\n+                    $xml->set_node_value($element, 'value', __('Signature', 'e2pdf'));\n+                }\n+\n+\n                 $acceptances = $xpath->query(\"\u002F\u002F*[contains(@class, 'wpcf7-acceptance')]\");\n                 foreach ($acceptances as $acceptance) {\n                     $element = $xpath->query('.\u002F\u002Finput', $acceptance)->item(0);\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fextension\u002Fe2pdf-wpforms.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fextension\u002Fe2pdf-wpforms.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fextension\u002Fe2pdf-wpforms.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fextension\u002Fe2pdf-wpforms.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -1425,24 +1425,34 @@\n                 echo '\u003Cdiv class=\"inside\">';\n                 echo '\u003Cdiv class=\"wpforms-entry-actions-meta\">';\n                 foreach ($hooks as $hook) {\n-                    $action = apply_filters('e2pdf_hook_action_button',\n-                            array(\n-                                'html' => '\u003Cp style=\"padding: 6px 12px 6.5px 42px\">\u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" href=\"%s\">\u003Cspan class=\"dashicons dashicons-pdf\">\u003C\u002Fspan> %s\u003C\u002Fa>\u003C\u002Fp>',\n-                                'url' => $this->helper->get_url(\n-                                        array(\n-                                            'page' => 'e2pdf',\n-                                            'action' => 'export',\n-                                            'id' => $hook,\n-                                            'dataset' => $entry->entry_id,\n-                                        ), 'admin.php?'\n-                                ),\n-                                'title' => 'PDF #' . $hook\n-                            ), 'hook_wpforms_entry_view', $hook, $entry->entry_id\n-                    );\n-                    if (!empty($action)) {\n-                        echo sprintf(\n-                                $action['html'], $action['url'], $action['title']\n+                    if ($this->helper->load('hooks')->process_hook(\n+                                    $hook,\n+                                    [\n+                                        'dataset' => $entry->entry_id,\n+                                    ],\n+                                    'hook_wpforms_entry_view'\n+                            )\n+                    ) {\n+                        $action = apply_filters(\n+                                'e2pdf_hook_action_button',\n+                                array(\n+                                    'html' => '\u003Cp style=\"padding: 6px 12px 6.5px 42px\">\u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" href=\"%s\">\u003Cspan class=\"dashicons dashicons-pdf\">\u003C\u002Fspan> %s\u003C\u002Fa>\u003C\u002Fp>',\n+                                    'url' => $this->helper->get_url(\n+                                            array(\n+                                                'page' => 'e2pdf',\n+                                                'action' => 'export',\n+                                                'id' => $hook,\n+                                                'dataset' => $entry->entry_id,\n+                                            ), 'admin.php?'\n+                                    ),\n+                                    'title' => 'PDF #' . $hook,\n+                                ), 'hook_wpforms_entry_view', $hook, $entry->entry_id\n                         );\n+                        if (!empty($action)) {\n+                            echo sprintf(\n+                                    $action['html'], $action['url'], $action['title']\n+                            );\n+                        }\n                     }\n                 }\n                 echo '\u003C\u002Fdiv>';\n@@ -1462,24 +1472,34 @@\n                 echo '\u003Cdiv class=\"inside\">';\n                 echo '\u003Cdiv class=\"wpforms-entry-actions-meta\">';\n                 foreach ($hooks as $hook) {\n-                    $action = apply_filters('e2pdf_hook_action_button',\n-                            array(\n-                                'html' => '\u003Cp style=\"padding: 6px 12px 6.5px 42px\">\u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" href=\"%s\">\u003Cspan class=\"dashicons dashicons-pdf\">\u003C\u002Fspan> %s\u003C\u002Fa>\u003C\u002Fp>',\n-                                'url' => $this->helper->get_url(\n-                                        array(\n-                                            'page' => 'e2pdf',\n-                                            'action' => 'export',\n-                                            'id' => $hook,\n-                                            'dataset' => $entry->entry_id,\n-                                        ), 'admin.php?'\n-                                ),\n-                                'title' => 'PDF #' . $hook\n-                            ), 'hook_wpforms_entry_edit', $hook, $entry->entry_id\n-                    );\n-                    if (!empty($action)) {\n-                        echo sprintf(\n-                                $action['html'], $action['url'], $action['title']\n+                    if ($this->helper->load('hooks')->process_hook(\n+                                    $hook,\n+                                    [\n+                                        'dataset' => $entry->entry_id,\n+                                    ],\n+                                    'hook_wpforms_entry_edit'\n+                            )\n+                    ) {\n+                        $action = apply_filters(\n+                                'e2pdf_hook_action_button',\n+                                array(\n+                                    'html' => '\u003Cp style=\"padding: 6px 12px 6.5px 42px\">\u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" href=\"%s\">\u003Cspan class=\"dashicons dashicons-pdf\">\u003C\u002Fspan> %s\u003C\u002Fa>\u003C\u002Fp>',\n+                                    'url' => $this->helper->get_url(\n+                                            array(\n+                                                'page' => 'e2pdf',\n+                                                'action' => 'export',\n+                                                'id' => $hook,\n+                                                'dataset' => $entry->entry_id,\n+                                            ), 'admin.php?'\n+                                    ),\n+                                    'title' => 'PDF #' . $hook,\n+                                ), 'hook_wpforms_entry_edit', $hook, $entry->entry_id\n                         );\n+                        if (!empty($action)) {\n+                            echo sprintf(\n+                                    $action['html'], $action['url'], $action['title']\n+                            );\n+                        }\n                     }\n                 }\n                 echo '\u003C\u002Fdiv>';\n@@ -1494,24 +1514,34 @@\n         if (!empty($entry->form_id)) {\n             $hooks = $this->helper->load('hooks')->get('wpforms', 'hook_wpforms_row_actions', $entry->form_id);\n             foreach ($hooks as $hook) {\n-                $action = apply_filters('e2pdf_hook_action_button',\n-                        array(\n-                            'html' => '\u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" href=\"%s\">%s\u003C\u002Fa>',\n-                            'url' => $this->helper->get_url(\n-                                    array(\n-                                        'page' => 'e2pdf',\n-                                        'action' => 'export',\n-                                        'id' => $hook,\n-                                        'dataset' => $entry->entry_id,\n-                                    ), 'admin.php?'\n-                            ),\n-                            'title' => 'PDF #' . $hook\n-                        ), 'hook_wpforms_row_actions', $hook, $entry->entry_id\n-                );\n-                if (!empty($action)) {\n-                    $actions['e2pdf_' . $hook] = sprintf(\n-                            $action['html'], $action['url'], $action['title']\n+                if ($this->helper->load('hooks')->process_hook(\n+                                $hook,\n+                                [\n+                                    'dataset' => $entry->entry_id,\n+                                ],\n+                                'hook_wpforms_row_actions'\n+                        )\n+                ) {\n+                    $action = apply_filters(\n+                            'e2pdf_hook_action_button',\n+                            array(\n+                                'html' => '\u003Ca class=\"e2pdf-download-hook\" target=\"_blank\" href=\"%s\">%s\u003C\u002Fa>',\n+                                'url' => $this->helper->get_url(\n+                                        array(\n+                                            'page' => 'e2pdf',\n+                                            'action' => 'export',\n+                                            'id' => $hook,\n+                                            'dataset' => $entry->entry_id,\n+                                        ), 'admin.php?'\n+                                ),\n+                                'title' => 'PDF #' . $hook,\n+                            ), 'hook_wpforms_row_actions', $hook, $entry->entry_id\n                     );\n+                    if (!empty($action)) {\n+                        $actions['e2pdf_' . $hook] = sprintf(\n+                                $action['html'], $action['url'], $action['title']\n+                        );\n+                    }\n                 }\n             }\n         }\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-acfrepeater.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-acfrepeater.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-acfrepeater.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-acfrepeater.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -20,21 +20,23 @@\n     }\n \n     public function do_shortcode($atts = array(), $value = '', $for = 0) {\n-        $response = '';\n+        $result = [];\n         $field = isset($atts['field']) ? $atts['field'] : null;\n         $post_id = isset($atts['post_id']) ? $atts['post_id'] : null;\n+        $implode = isset($atts['implode']) ? $atts['implode'] : '';\n         $index = 0;\n         if (function_exists('have_rows') && have_rows($field, $post_id)) {\n+            $total = count(get_field($field, $post_id));\n             while (have_rows($field, $post_id)) {\n                 the_row();\n-                $response .= $this->apply($value, $atts, $index, $for);\n+                $result[] = $this->apply($value, $atts, $index, $for, $total);\n                 $index++;\n             }\n         }\n-        return $response;\n+        return implode($implode, $result);\n     }\n \n-    public function apply($value, $atts, $index, $for = 0) {\n+    public function apply($value, $atts, $index, $for = 0, $total = 0) {\n         if ($value) {\n \n             $field = isset($atts['field']) ? $atts['field'] : null;\n@@ -46,27 +48,10 @@\n                 '[e2pdf-acf-repeater-index' . $for_index . ']' => $index,\n                 '[e2pdf-acf-repeater-counter' . $for_index . ']' => $index + 1,\n                 '[e2pdf-acf-repeater-evenodd' . $for_index . ']' => $evenodd,\n+                '[e2pdf-acf-repeater-count' . $for_index . ']' => $total,\n             );\n             $value = str_replace(array_keys($replace), $replace, $value);\n-\n-            if (false !== strpos($value, '[e2pdf-acf-repeater-' . $for + 1)) {\n-                $sub_shortcode_tags = array(\n-                    'e2pdf-acf-repeater-' . $for + 1 . '',\n-                );\n-                preg_match_all('@\\[([^\u003C>&\u002F\\[\\]\\x00-\\x20=]++)@', $value, $sub_matches);\n-                $sub_tagnames = array_intersect($sub_shortcode_tags, $sub_matches[1]);\n-                if (!empty($sub_tagnames)) {\n-                    preg_match_all('\u002F' . $this->helper->load('shortcode')->get_shortcode_regex($sub_tagnames) . '\u002F', $value, $sub_shortcodes);\n-                    foreach ($sub_shortcodes[0] as $key => $sub_shortcode_value) {\n-                        $sub_shortcode = $this->helper->load('shortcode')->get_shortcode($sub_shortcodes, $key);\n-                        $sub_atts = shortcode_parse_atts($sub_shortcode[3]);\n-                        if (!isset($sub_atts['post_id']) && $post_id) {\n-                            $sub_atts['post_id'] = $post_id;\n-                        }\n-                        $value = str_replace($sub_shortcode_value, $this->do_shortcode(is_array($sub_atts) ? $sub_atts : array(), $sub_shortcode[5], $for + 1), $value);\n-                    }\n-                }\n-            }\n+            $value = preg_replace('\u002F\\[(e2pdf-for-index|e2pdf-for-counter|e2pdf-for-key|e2pdf-for-evenodd|e2pdf-acf-repeater-index|e2pdf-acf-repeater-counter|e2pdf-acf-repeater-evenodd)(-\\d+)?\\]\u002F', '#$1$2#', $value);\n             $shortcode_tags = array(\n                 'acf',\n             );\n@@ -99,6 +84,7 @@\n                     }\n                 }\n             }\n+            $value = preg_replace('\u002F#(e2pdf-for-index|e2pdf-for-counter|e2pdf-for-key|e2pdf-for-evenodd|e2pdf-acf-repeater-index|e2pdf-acf-repeater-counter|e2pdf-acf-repeater-evenodd)(-\\d+)?#\u002F', '[$1$2]', $value);\n         }\n         return $value;\n     }\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-attachments.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-attachments.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-attachments.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-attachments.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -178,6 +178,8 @@\n     }\n \n     public function get_extension($value = false) {\n+\n+        $value = trim($value);\n         if (!$value) {\n             return false;\n         }\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper: e2pdf-atts.php\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-cache.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-cache.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-cache.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-cache.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -2,7 +2,7 @@\n \n \u002F**\n  * File: \u002Fhelper\u002Fe2pdf-cache.php\n- * \n+ *\n  * @package  E2Pdf\n  * @license  GPLv3\n  * @link     https:\u002F\u002Fe2pdf.com\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-convert.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-convert.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-convert.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-convert.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -22,35 +22,33 @@\n     }\n \n     public function to_hex_color($hex = '') {\n-        $color = array(\n-            0x00, 0x00, 0x00\n-        );\n+        $color = [\n+            0x00, 0x00, 0x00,\n+        ];\n         $hex = ltrim($hex, '#');\n         if (strlen($hex) === 3) {\n-            $color = array(\n+            $color = [\n                 hexdec(substr($hex, 0, 1)),\n                 hexdec(substr($hex, 1, 1)),\n-                hexdec(substr($hex, 2, 1))\n-            );\n+                hexdec(substr($hex, 2, 1)),\n+            ];\n         } elseif (strlen($hex) === 6) {\n-            $color = array(\n+            $color = [\n                 hexdec(substr($hex, 0, 2)),\n                 hexdec(substr($hex, 2, 2)),\n-                hexdec(substr($hex, 4, 2))\n-            );\n+                hexdec(substr($hex, 4, 2)),\n+            ];\n         }\n         return $color;\n     }\n \n     \u002F**\n      * Convert from bytes to Human View\n-     * \n      * @param int $size - Size in Bytes\n-     * \n      * @return string - Converted size\n      *\u002F\n     public function from_bytes($size) {\n-        $unit = array('B', 'KB', 'MB', 'GB', 'TB', 'PB');\n+        $unit = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'];\n         return @round($size \u002F pow(1024, ($i = floor(log($size, 1024)))), 2) . '' . $unit[$i];\n     }\n \n@@ -66,15 +64,14 @@\n \n     public function to_file_dir($file_dir = '') {\n         if ($file_dir) {\n-            $file_dir = str_replace('.\u002F', '.', $file_dir);\n+            $file_dir = str_replace(['\\\\', '.\u002F'], ['\u002F', '.'], $file_dir);\n         }\n-\n         return $file_dir;\n     }\n \n     public function to_file_name($file_name = '') {\n         if ($file_name) {\n-            $search = array(\n+            $search = [\n                 '\u002F',\n                 '\\\\',\n                 '\"',\n@@ -86,8 +83,8 @@\n                 '&#93;',\n                 '&amp;',\n                 ';',\n-            );\n-            $replace = array(\n+            ];\n+            $replace = [\n                 '',\n                 '_',\n                 '',\n@@ -98,12 +95,10 @@\n                 '[',\n                 ']',\n                 '&',\n-                ''\n-            );\n-\n+                '',\n+            ];\n             $file_name = str_replace($search, $replace, $file_name);\n         }\n-\n         return $file_name;\n     }\n \n@@ -118,7 +113,7 @@\n             $pos1 = 0;\n             $result = $haystack;\n             while (count($needle) > 0) {\n-                $positions = array();\n+                $positions = [];\n                 foreach ($needle as $from => $to) {\n                     if (($pos2 = stripos($result, $from, $pos1)) === FALSE) {\n                         unset($needle[$from]);\n@@ -156,16 +151,16 @@\n         if (version_compare(PHP_VERSION, '7.0.0', '\u003C')) {\n             return @unserialize($value);\n         } else {\n-            return @unserialize($value, array('allowed_classes' => false));\n+            return @unserialize($value, ['allowed_classes' => false]);\n         }\n     }\n \n     public function is_content_key($content_key = false, $value = '') {\n         $response = '';\n         if ($content_key) {\n-            $shortcode_tags = array(\n-                'e2pdf-content'\n-            );\n+            $shortcode_tags = [\n+                'e2pdf-content',\n+            ];\n             preg_match_all('@\\[([^\u003C>&\u002F\\[\\]\\x00-\\x20=]++)@', $value, $matches);\n             $tagnames = array_intersect($shortcode_tags, $matches[1]);\n             if (!empty($tagnames)) {\n@@ -184,7 +179,7 @@\n \n     public function is_string_array($value) {\n         if (!is_array($value)) {\n-            $value = !empty($value) ? (array) $value : array();\n+            $value = !empty($value) ? (array) $value : [];\n         }\n         return $value;\n     }\n@@ -195,7 +190,7 @@\n                 $value = $this->unserialize($value);\n             }\n         }\n-        return is_array($value) ? $value : array();\n+        return is_array($value) ? $value : [];\n     }\n \n     public function load_html($source, $dom, $form = false) {\n@@ -218,7 +213,7 @@\n             return $source;\n         }\n         $map = [\n-            0x80, 0xFFFF, 0, 0xFFFF\n+            0x80, 0xFFFF, 0, 0xFFFF,\n         ];\n         try {\n             return mb_encode_numericentity($source, $map, 'UTF-8');\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-field.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-field.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-field.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-field.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -21,6 +21,27 @@\n \n     public function pre_shortcodes($value, $extension, $field = array()) {\n         if (false !== strpos($value, '[')) {\n+\n+            $shortcode_tags = array(\n+                'e2pdf-translate'\n+            );\n+            preg_match_all('@\\[([^\u003C>&\u002F\\[\\]\\x00-\\x20=]++)@', $value, $matches);\n+            $tagnames = array_intersect($shortcode_tags, $matches[1]);\n+            if (!empty($tagnames)) {\n+                preg_match_all('\u002F' . $this->helper->load('shortcode')->get_shortcode_regex($tagnames) . '\u002F', $value, $shortcodes);\n+                foreach ($shortcodes[0] as $key => $shortcode_value) {\n+                    $shortcode = $this->helper->load('shortcode')->get_shortcode($shortcodes, $key);\n+                    $atts = shortcode_parse_atts($shortcode[3]);\n+                    if ($shortcode[2] === 'e2pdf-translate') {\n+                        if (!isset($atts['domain'])) {\n+                            if ($this->helper->load('translator')->isTRP()) {\n+                                $value = str_replace($shortcode_value, $this->helper->load('translator')->pre_translate($shortcode[5], $extension->get('template_id')), $value);\n+                            }\n+                        }\n+                    }\n+                }\n+            }\n+\n             $replace = array(\n                 '[e2pdf-dataset]' => $extension->get('dataset') ? $extension->get('dataset') : '',\n                 '[e2pdf-userid]' => (int) $extension->get('user_id'),\n@@ -29,6 +50,9 @@\n                 '[e2pdf-url]' => '',\n                 '[e2pdf-uid]' => '',\n             );\n+            if (false !== strpos($value, '[e2pdf-lang]')) {\n+                $replace['[e2pdf-lang]'] = $this->helper->load('translator')->lang();\n+            }\n             if (false !== strpos($value, '[e2pdf-url]') || false !== strpos($value, '[pdf_url]') || false !== strpos($value, '[e2pdf-uid]')) {\n                 $pdf_url = '';\n                 if ($extension->get('entry')) {\n@@ -69,9 +93,6 @@\n \n     public function inner_shortcodes($value, $extension, $field = array()) {\n         if (false !== strpos($value, '[')) {\n-\n-            $e2pdf_acf_repeater = 0;\n-\n             $args = apply_filters('e2pdf_extension_render_shortcodes_args', $extension->get('args'), isset($field['element_id']) ? $field['element_id'] : false, $extension->get('template_id'), $extension->get('item'), $extension->get('dataset'), false, false);\n             $shortcode_tags = array(\n                 'e2pdf-arg',\n@@ -144,6 +165,7 @@\n                                         }\n                                         break;\n                                     case 'shop_order':\n+                                    case 'shop_subscription':\n                                         if (isset($atts['shortcode']) && $atts['shortcode'] == 'e2pdf-wc-customer') { \u002F\u002F phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedIf\n                                         } elseif (isset($atts['shortcode']) && $atts['shortcode'] == 'e2pdf-wc-product') {\n                                             if (!isset($atts['wc_order_id']) && isset($extension->get('cached_post')->ID) && $extension->get('cached_post')->ID) {\n@@ -181,31 +203,12 @@\n                         }\n                     }\n                 }\n-\n-                if (false !== strpos($value, '[e2pdf-for') && false !== strpos($value, '[e2pdf-acf-repeater') && false !== strpos($value, '[e2pdf-for-key')) {\n-                    $value = preg_replace('\u002F\\[(e2pdf-acf-repeater[^\\]]*?\\[e2pdf-for-key\\][^\\]]*?)\\](.*?)\\[(\\\u002Fe2pdf-acf-repeater)\\]\u002Fs', '{{$1}}$2{{$3}}', $value, -1, $e2pdf_acf_repeater);\n-                }\n-                $value = $this->e2pdf_acf_repeater($value, $extension);\n             }\n \n             $shortcode_tags = array(\n-                'e2pdf-for',\n+                'e2pdf-for', 'e2pdf-acf-repeater',\n             );\n-            preg_match_all('@\\[([^\u003C>&\u002F\\[\\]\\x00-\\x20=]++)@', $value, $matches);\n-            $tagnames = array_intersect($shortcode_tags, $matches[1]);\n-            if (!empty($tagnames)) {\n-                preg_match_all('\u002F' . $this->helper->load('shortcode')->get_shortcode_regex($tagnames) . '\u002F', $value, $shortcodes);\n-                foreach ($shortcodes[0] as $key => $shortcode_value) {\n-                    $shortcode = $this->helper->load('shortcode')->get_shortcode($shortcodes, $key);\n-                    $atts = shortcode_parse_atts($shortcode[3]);\n-                    $value = str_replace($shortcode_value, $this->helper->load('for')->do_shortcode(is_array($atts) ? $atts : array(), $shortcode[5], 0, $extension), $value);\n-                }\n-            }\n-\n-            if ($e2pdf_acf_repeater > 0) {\n-                $value = preg_replace('\u002F{{(e2pdf-acf-repeater[^\\]]*?)}}(.*?){{(\\\u002Fe2pdf-acf-repeater)}}\u002Fs', '[$1]$2[$3]', $value);\n-                $value = $this->e2pdf_acf_repeater($value, $extension);\n-            }\n+            $value = $this->helper->load('shortcode')->apply_inline_shortcodes($value, $shortcode_tags, $extension);\n \n             $shortcode_tags = array(\n                 'e2pdf-if',\n@@ -217,7 +220,7 @@\n                 foreach ($shortcodes[0] as $key => $shortcode_value) {\n                     $shortcode = $this->helper->load('shortcode')->get_shortcode($shortcodes, $key);\n                     $atts = shortcode_parse_atts($shortcode[3]);\n-                    $value = str_replace($shortcode_value, $this->helper->load('if')->do_shortcode(is_array($atts) ? $atts : array(), $shortcode[5], $extension), $value);\n+                    $value = str_replace($shortcode_value, $this->helper->load('if')->do_shortcode($atts, $shortcode[5], 0, $extension), $value);\n                 }\n             }\n \n@@ -260,6 +263,7 @@\n             );\n             if ($extension instanceof Extension_E2pdf_Formidable) {\n                 $shortcode_tags[] = 'frm-math';\n+                $shortcode_tags[] = 'e2pdf-frm-field-value';\n             }\n             if ($extension instanceof Extension_E2pdf_Gravity) {\n                 $shortcode_tags[] = 'gravityforms';\n@@ -328,7 +332,7 @@\n                     $value = $this->helper->load('translator')->translate($value, 'full');\n                     $file = false;\n                     if (!$text) {\n-                        if ($this->helper->load('pdf')->get_extension(trim($value))) {\n+                        if ($this->helper->load('pdf')->get_extension($value)) {\n                             $file = $this->helper->load('pdf')->get_pdf($value, $extension->info('key'));\n                         } else {\n                             $file = $this->helper->load('image')->get_image($value, $extension->info('key'), $field);\n@@ -402,7 +406,7 @@\n                 $value = $this->helper->load('graph')->graph($extension->strip_shortcodes($value), $field);\n                 break;\n             default:\n-                if (!($extension instanceof Extension_E2pdf_Formidable)) {\n+                if (!($extension instanceof Extension_E2pdf_Formidable) && !($extension instanceof Extension_E2pdf_Metform)) {\n                     $value = $extension->convert_shortcodes($value);\n                 }\n                 $value = $this->helper->load('properties')->apply($field, $value);\n@@ -440,38 +444,4 @@\n         }\n         return $value;\n     }\n-\n-    public function e2pdf_acf_repeater($value, $extension) {\n-        $shortcode_tags = array(\n-            'e2pdf-acf-repeater',\n-        );\n-        preg_match_all('@\\[([^\u003C>&\u002F\\[\\]\\x00-\\x20=]++)@', $value, $matches);\n-        $tagnames = array_intersect($shortcode_tags, $matches[1]);\n-        if (!empty($tagnames)) {\n-            preg_match_all('\u002F' . $this->helper->load('shortcode')->get_shortcode_regex($tagnames) . '\u002F', $value, $shortcodes);\n-            foreach ($shortcodes[0] as $key => $shortcode_value) {\n-                $shortcode = $this->helper->load('shortcode')->get_shortcode($shortcodes, $key);\n-                $atts = shortcode_parse_atts($shortcode[3]);\n-                if ($extension instanceof Extension_E2pdf_Wordpress) {\n-                    if (!isset($atts['post_id']) && isset($extension->get('cached_post')->ID) && $extension->get('cached_post')->ID) {\n-                        if ($extension->get('item') == '-3') {\n-                            $shortcode[3] .= ' post_id=user_' . $extension->get('cached_post')->ID . '';\n-                        } else {\n-                            $shortcode[3] .= ' post_id=' . $extension->get('cached_post')->ID . '';\n-                        }\n-                    }\n-                } elseif ($extension instanceof Extension_E2pdf_Woocommerce) {\n-                    if (!isset($atts['post_id']) && isset($extension->get('cached_post')->ID) && $extension->get('cached_post')->ID) {\n-                        if ($extension->get('item') == 'product_variation' && isset($extension->get('cached_post')->post_parent)) {\n-                            $shortcode[3] .= ' post_id=' . $extension->get('cached_post')->post_parent . '';\n-                        } else {\n-                            $shortcode[3] .= ' post_id=' . $extension->get('cached_post')->ID . '';\n-                        }\n-                    }\n-                }\n-                $value = str_replace($shortcode_value, do_shortcode_tag($shortcode), $value);\n-            }\n-        }\n-        return $value;\n-    }\n }\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-filter.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-filter.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-filter.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-filter.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -13,6 +13,7 @@\n \n class Helper_E2pdf_Filter {\n \n+    \u002F\u002F is stream\n     public function is_stream($file_path) {\n         if (strpos($file_path, ':\u002F\u002F') > 0) {\n             $wrappers = array(\n@@ -34,21 +35,25 @@\n         return false;\n     }\n \n+    \u002F\u002F is downloadable\n     public function is_downloadable($file_path) {\n-        if ($file_path && in_array(strtolower(pathinfo($file_path, PATHINFO_EXTENSION)), $this->is_allowed_extensions(), true)) {\n-            return true;\n+        if (!$file_path || !$this->is_downloadable_ext($file_path)) {\n+            return false;\n         }\n-        return false;\n+        return true;\n     }\n \n-    public function is_allowed_extensions() {\n-        return apply_filters('e2pdf_helper_filter_is_downloadable_allowed_extensions', array('pdf', 'jpg', 'doc', 'docx'));\n+    \u002F\u002F is downlodable ext\n+    public function is_downloadable_ext($file_path) {\n+        $ext = strtolower(pathinfo($file_path, PATHINFO_EXTENSION));\n+        $allowed = apply_filters(\n+                'e2pdf_helper_filter_is_downloadable_allowed_extensions',\n+                ['pdf', 'jpg', 'doc', 'docx']\n+        );\n+        return in_array($ext, $allowed, true);\n     }\n \n-    \u002F*\n-     * Filter Unsupported HTML Tags\n-     *\u002F\n-\n+    \u002F\u002F filter html tags\n     public function filter_html_tags($value) {\n         if ($value) {\n             $tags = array(\n@@ -61,55 +66,4 @@\n         }\n         return $value;\n     }\n-\n-    public function filter_button_title($button_title) {\n-        if (false !== strpos($button_title, '\u003C')) {\n-            $button_title = wp_kses_post(\n-                    $button_title,\n-                    apply_filters(\n-                            'e2pdf_helper_filter_button_title',\n-                            array(\n-                                'img' => array(\n-                                    'src' => true,\n-                                    'class' => true,\n-                                    'style' => true,\n-                                ),\n-                                'span' => array(\n-                                    'class' => true,\n-                                    'style' => true,\n-                                ),\n-                                'div' => array(\n-                                    'class' => true,\n-                                    'style' => true,\n-                                ),\n-                                'br' => array(\n-                                    'class' => true,\n-                                    'style' => true,\n-                                ),\n-                                'p' => array(\n-                                    'class' => true,\n-                                    'style' => true,\n-                                ),\n-                                'i' => array(\n-                                    'class' => true,\n-                                    'style' => true,\n-                                ),\n-                                'strong' => array(\n-                                    'class' => true,\n-                                    'style' => true,\n-                                ),\n-                                'b' => array(\n-                                    'class' => true,\n-                                    'style' => true,\n-                                ),\n-                                'em' => array(\n-                                    'class' => true,\n-                                    'style' => true,\n-                                ),\n-                            )\n-                    )\n-            );\n-        }\n-        return $button_title;\n-    }\n }\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-for.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-for.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-for.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-for.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -19,55 +19,46 @@\n         $this->helper = Helper_E2pdf_Helper::instance();\n     }\n \n-    public function data($condition) {\n-        $unserialized = false;\n-        if (is_serialized($condition)) {\n-            $unserialized = $this->helper->load('convert')->unserialize($condition);\n-        }\n-        return is_array($unserialized) ? $unserialized : array();\n-    }\n-\n     public function do_shortcode($atts = array(), $value = '', $for = 0, $extension = null) {\n         $result = array();\n         $implode = isset($atts['implode']) ? $atts['implode'] : '';\n         $for_index = $for ? '-' . $for : '';\n-\n         $tags = array(\n-            'e2pdf-for-data' => 'e2pdf-for-data',\n-            'e2pdf-for-do' => 'e2pdf-for-do',\n-            'e2pdf-for-else' => 'e2pdf-for-else',\n+            'e2pdf-for-data' => 'e2pdf-for-data' . $for_index,\n+            'e2pdf-for-do' => 'e2pdf-for-do' . $for_index,\n+            'e2pdf-for-else' => 'e2pdf-for-else' . $for_index,\n         );\n         \u002F* Backward compatibility *\u002F\n         if (false === strpos($value, '[e2pdf-for-data')) {\n             $tags = array(\n-                'e2pdf-for-data' => 'e2pdf-data',\n-                'e2pdf-for-do' => 'e2pdf-do',\n-                'e2pdf-for-else' => 'e2pdf-else',\n+                'e2pdf-for-data' => 'e2pdf-data' . $for_index,\n+                'e2pdf-for-do' => 'e2pdf-do' . $for_index,\n+                'e2pdf-for-else' => 'e2pdf-else' . $for_index,\n             );\n         }\n-\n         add_filter('e2pdf_for_do_shortcode_data_process', array($this, 'filter_do_shortcode_data_process'));\n         if ($extension && method_exists($extension, 'render')) {\n-            $data = $this->data($extension->render($this->helper->load('shortcode')->get_shortcode_content($tags['e2pdf-for-data'] . $for_index, $value), array(), false, true));\n+            $data = $this->helper->load('convert')->is_unserialized_array($extension->render($this->helper->load('shortcode')->get_shortcode_content($tags['e2pdf-for-data'], $value), array(), false, true));\n         } else {\n-            $data = $this->data($this->helper->load('shortcode')->get_shortcode_content($tags['e2pdf-for-data'] . $for_index, $value));\n+            $data = $this->helper->load('convert')->is_unserialized_array($this->helper->load('shortcode')->get_shortcode_content($tags['e2pdf-for-data'], $value));\n         }\n         remove_filter('e2pdf_for_do_shortcode_data_process', array($this, 'filter_do_shortcode_data_process'));\n         if (!empty($data)) {\n             $index = 0;\n+            $total = count($data);\n             foreach ($data as $data_key => $data_value) {\n-                $do = $this->helper->load('shortcode')->get_shortcode_content($tags['e2pdf-for-do'] . $for_index, $value);\n-                $result[] = $this->apply($do, $data_key, $data_value, $index, $for, $extension);\n+                $do = $this->helper->load('shortcode')->get_shortcode_content($tags['e2pdf-for-do'], $value);\n+                $result[] = $this->apply($do, $data_key, $data_value, $index, $for, $total);\n                 $index++;\n             }\n             $response = implode($implode, $result);\n         } else {\n-            $response = $this->helper->load('shortcode')->get_shortcode_content($tags['e2pdf-for-else'] . $for_index, $value);\n+            $response = $this->helper->load('shortcode')->get_shortcode_content($tags['e2pdf-for-else'], $value);\n         }\n         return $response;\n     }\n \n-    public function apply($value, $data_key, $data_value, $index, $for = 0, $extension = null) {\n+    public function apply($value, $data_key, $data_value, $index, $for = 0, $total = 0) {\n         if ($value) {\n             $for_index = $for ? '-' . $for : '';\n             $evenodd = $index % 2 == 0 ? '0' : '1';\n@@ -76,6 +67,7 @@\n                 '[e2pdf-for-counter' . $for_index . ']' => $index + 1,\n                 '[e2pdf-for-key' . $for_index . ']' => $data_key,\n                 '[e2pdf-for-evenodd' . $for_index . ']' => $evenodd,\n+                '[e2pdf-for-count' . $for_index . ']' => $total,\n             );\n             $value = str_replace(array_keys($replace), $replace, $value);\n             $shortcode_tags = array(\n@@ -136,21 +128,6 @@\n                 }\n             }\n         }\n-        if (false !== strpos($value, '[e2pdf-for-' . $for + 1)) {\n-            $sub_shortcode_tags = array(\n-                'e2pdf-for-' . $for + 1 . '',\n-            );\n-            preg_match_all('@\\[([^\u003C>&\u002F\\[\\]\\x00-\\x20=]++)@', $value, $sub_matches);\n-            $sub_tagnames = array_intersect($sub_shortcode_tags, $sub_matches[1]);\n-            if (!empty($sub_tagnames)) {\n-                preg_match_all('\u002F' . $this->helper->load('shortcode')->get_shortcode_regex($sub_tagnames) . '\u002F', $value, $sub_shortcodes);\n-                foreach ($sub_shortcodes[0] as $key => $sub_shortcode_value) {\n-                    $sub_shortcode = $this->helper->load('shortcode')->get_shortcode($sub_shortcodes, $key);\n-                    $atts = shortcode_parse_atts($sub_shortcode[3]);\n-                    $value = str_replace($sub_shortcode_value, $this->do_shortcode(is_array($atts) ? $atts : array(), $sub_shortcode[5], $for + 1, $extension), $value);\n-                }\n-            }\n-        }\n         return $value;\n     }\n \ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-get.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-get.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-get.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-get.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -1,13 +1,11 @@\n \u003C?php\n \n \u002F**\n- * E2pdf Get Helper\n- * \n- * @copyright  Copyright 2017 https:\u002F\u002Fe2pdf.com\n- * @license    GPLv3\n- * @version    1\n- * @link       https:\u002F\u002Fe2pdf.com\n- * @since      0.00.01\n+ * File: \u002Fhelper\u002Fe2pdf-get.php\n+ *\n+ * @package  E2Pdf\n+ * @license  GPLv3\n+ * @link     https:\u002F\u002Fe2pdf.com\n  *\u002F\n if (!defined('ABSPATH')) {\n     die('Access denied.');\n@@ -15,46 +13,30 @@\n \n class Helper_E2pdf_Get {\n \n-    private $get = array();\n-    private $page = null;\n+    private $get = [];\n+    private $page;\n \n-    \u002F**\n-     * On init\n-     * Assign $_GET params to $get\n-     * @param string $url - Current url  \n-     *\u002F\n+    \u002F\u002F construct\n     public function __construct($url) {\n-        $this->get = wp_parse_args($url);\n-        $this->page = reset($this->get);\n-        array_shift($this->get);\n+        \u002F\u002F phpcs:ignore WordPress.Security.NonceVerification.Recommended\n+        $args = array_merge(wp_parse_args($url), $_GET);\n+        if (isset($args['page'])) {\n+            $this->page = $args['page'];\n+            unset($args['page']);\n+        }\n+        $this->get = $args;\n     }\n \n-    \u002F**\n-     * Get value from $_GET\n-     * @param string $key - Array key\n-     * @return mixed - Return value by get key\n-     *\u002F\n+    \u002F\u002F get\n     public function get($key = false) {\n-\n         if (!$key) {\n-            if (!empty($this->get)) {\n-                return $this->get;\n-            } else {\n-                return array();\n-            }\n+            return !empty($this->get) ? $this->get : [];\n         } else {\n-            if (isset($this->get[$key])) {\n-                return $this->get[$key];\n-            } else {\n-                return null;\n-            }\n+            return isset($this->get[$key]) ? $this->get[$key] : null;\n         }\n     }\n \n-    \u002F**\n-     * Get current page\n-     * @return string - Current page\n-     *\u002F\n+    \u002F\u002F get page\n     public function get_page() {\n         return $this->page;\n     }\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-helper.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-helper.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-helper.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-helper.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -1,12 +1,11 @@\n \u003C?php\n \n \u002F**\n- * E2Pdf Helper\n- * @copyright  Copyright 2017 https:\u002F\u002Fe2pdf.com\n- * @license    GPLv3\n- * @version    1\n- * @link       https:\u002F\u002Fe2pdf.com\n- * @since      0.00.01\n+ * File: \u002Fhelper\u002Fe2pdf-helper.php\n+ *\n+ * @package  E2Pdf\n+ * @license  GPLv3\n+ * @link     https:\u002F\u002Fe2pdf.com\n  *\u002F\n if (!defined('ABSPATH')) {\n     die('Access denied.');\n@@ -27,11 +26,34 @@\n         return self::$instance;\n     }\n \n-    \u002F**\n-     * Set option by Key\n-     * @param string $key - Key of option\n-     * @param mixed $value - Value of option\n-     *\u002F\n+    public function __construct() {\n+        $this->set('upload_dir', $this->get_wp_upload_dir('basedir') . '\u002Fe2pdf\u002F');\n+        $this->set('tmp_dir', $this->get('upload_dir') . 'tmp\u002F');\n+        $this->set('cache_dir', $this->get('upload_dir') . 'tmp\u002Fcache\u002F');\n+        $this->set('pdf_dir', $this->get('upload_dir') . 'pdf\u002F');\n+        $this->set('fonts_dir', $this->get('upload_dir') . 'fonts\u002F');\n+        $this->set('tpl_dir', $this->get('upload_dir') . 'tpl\u002F');\n+        $this->set('viewer_dir', $this->get('upload_dir') . 'viewer\u002F');\n+        $this->set('bulk_dir', $this->get('upload_dir') . 'bulks\u002F');\n+        $this->set('wpcf7_dir', $this->get('upload_dir') . 'wpcf7\u002F');\n+        if (defined('E2PDF_ROOT_FILE')) {\n+            $info = get_file_data(E2PDF_ROOT_FILE, ['version' => 'Version'], false);\n+            $this->set('version', $info['version']);\n+            $this->set('plugin_dir', plugin_dir_path(E2PDF_ROOT_FILE));\n+            $this->set('plugin_file_path', E2PDF_ROOT_FILE);\n+            $this->set('plugin', plugin_basename(E2PDF_ROOT_FILE));\n+            $this->set('slug', dirname(plugin_basename(E2PDF_ROOT_FILE)));\n+        }\n+        $this->set('cache', get_option('e2pdf_cache', '1'));\n+        $parse_args = wp_parse_args(home_url(add_query_arg(null, null)));\n+        $this->set('page', reset($parse_args));\n+        if (get_option('e2pdf_memory_time', '0')) {\n+            $this->set('memory_debug', memory_get_usage());\n+            $this->set('time_debug', microtime(true));\n+        }\n+    }\n+\n+    \u002F\u002F set\n     public function set($key, $value) {\n         if (!$this->helper) {\n             $this->helper = new stdClass();\n@@ -39,11 +61,7 @@\n         $this->helper->$key = $value;\n     }\n \n-    \u002F**\n-     * Add value to option by Key\n-     * @param string $key - Key of option\n-     *  @param mixed $value - Value of option\n-     *\u002F\n+    \u002F\u002F add\n     public function add($key, $value) {\n         if (!$this->helper) {\n             $this->helper = new stdClass();\n@@ -54,26 +72,19 @@\n                 array_push($this->helper->$key, $value);\n             }\n         } else {\n-            $this->helper->$key = array();\n+            $this->helper->$key = [];\n             array_push($this->helper->$key, $value);\n         }\n     }\n \n-    \u002F**\n-     * Unset option\n-     * @param string $key - Key of option\n-     *\u002F\n+    \u002F\u002F deset\n     public function deset($key) {\n         if (isset($this->helper->$key)) {\n             unset($this->helper->$key);\n         }\n     }\n \n-    \u002F**\n-     * Set option\n-     * @param string $key - Key of option\n-     * @return mixed - Get value of option by Key\n-     *\u002F\n+    \u002F\u002F get\n     public function get($key) {\n         if (isset($this->helper->$key)) {\n             return $this->helper->$key;\n@@ -82,52 +93,23 @@\n         }\n     }\n \n-    \u002F**\n-     * Get url path\n-     * @param string $url - Url path\n-     * @return string - Url path\n-     *\u002F\n+    \u002F\u002F get url path\n     public function get_url_path($url) {\n         return plugins_url($url, $this->get('plugin_file_path'));\n     }\n \n-    \u002F**\n-     * Get url\n-     * @param array $data - Array list of url params\n-     * @param string $prefix -  Prefix of url\n-     * @return string Url\n-     *\u002F\n-    public function get_url($data = array(), $prefix = 'admin.php?') {\n+    \u002F\u002F get url\n+    public function get_url($data = [], $prefix = 'admin.php?') {\n         $url = $prefix . http_build_query($data);\n         return admin_url($url);\n     }\n \n-    \u002F**\n-     * Get Ip address\n-     * @return mixed - IP address or FALSE\n-     *\u002F\n-    public function get_ip() {\n-        if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {\n-            $ip = $_SERVER['HTTP_CF_CONNECTING_IP'];\n-        } elseif (isset($_SERVER['REMOTE_ADDR'])) {\n-            $ip = $_SERVER['REMOTE_ADDR'];\n-        } else {\n-            $ip = false;\n-        }\n-        return $ip;\n-    }\n-\n-    \u002F**\n-     * Remove dir and its content\n-     * @param string $dir - Path of directory to remove\n-     *\u002F\n+    \u002F\u002F delete dir\n     public function delete_dir($dir) {\n         if (!is_dir($dir)) {\n             return;\n         }\n-        if (substr($dir, strlen($dir) - 1, 1) != '\u002F') {\n-            $dir .= '\u002F';\n-        }\n+        $dir = trailingslashit($dir);\n         $files = glob($dir . '*', GLOB_MARK);\n         foreach ($files as $file) {\n             if (is_dir($file)) {\n@@ -142,6 +124,7 @@\n         rmdir($dir);\n     }\n \n+    \u002F\u002F create dir\n     public function create_dir($dir = false, $recursive = false, $create_index = true, $create_htaccess = false) {\n         if ($dir && !file_exists($dir)) {\n             if (mkdir($dir, self::CHMOD_DIR, $recursive)) {\n@@ -162,15 +145,21 @@\n         return is_dir($dir);\n     }\n \n+    \u002F\u002F create file\n     public function create_file($file = false, $content = '') {\n-        if ($file && !file_exists($file)) {\n-            if (file_put_contents($file, $content)) {\n-                chmod($file, self::CHMOD_FILE);\n+        $dir = dirname($file);\n+        if (is_dir($dir) && is_writable($dir)) {\n+            if ($file && !file_exists($file)) {\n+                \u002F\u002F phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_read_file_put_contents\n+                if (file_put_contents($file, $content, LOCK_EX)) {\n+                    chmod($file, self::CHMOD_FILE);\n+                }\n             }\n         }\n         return is_file($file);\n     }\n \n+    \u002F\u002F get wp upload dir\n     public function get_wp_upload_dir($key = 'basedir') {\n \n         $wp_upload_dir = wp_upload_dir();\n@@ -218,8 +207,8 @@\n \n             $basedir = $dir;\n             $baseurl = $url;\n-\n             $subdir = '';\n+\n             if (get_option('uploads_use_yearmonth_folders')) {\n                 $time = current_time('mysql');\n                 $y = substr($time, 0, 4);\n@@ -234,14 +223,14 @@\n                 $this->create_dir($basedir, true, false, false);\n             }\n \n-            $wp_upload_dir = array(\n+            $wp_upload_dir = [\n                 'path' => $dir,\n                 'url' => $url,\n                 'subdir' => $subdir,\n                 'basedir' => $basedir,\n                 'baseurl' => $baseurl,\n                 'error' => false,\n-            );\n+            ];\n         }\n \n         if ($key && isset($wp_upload_dir[$key])) {\n@@ -251,6 +240,7 @@\n         }\n     }\n \n+    \u002F\u002F get upload url\n     public function get_upload_url($path = false) {\n         if ($path) {\n             return $this->get_wp_upload_dir('baseurl') . '\u002F' . basename(untrailingslashit($this->get('upload_dir'))) . '\u002F' . $path;\n@@ -259,10 +249,7 @@\n         }\n     }\n \n-    \u002F**\n-     * Check if array is multidimensional\n-     * @return boolean\n-     *\u002F\n+    \u002F\u002F is multidimensional array\n     public function is_multidimensional($a) {\n         if (is_array($a)) {\n             foreach ($a as $v) {\n@@ -274,40 +261,34 @@\n         return false;\n     }\n \n-    \u002F**\n-     * Get Capabilities\n-     * @return array()\n-     *\u002F\n+    \u002F\u002F get caps\n     public function get_caps() {\n-        $caps = array(\n-            'e2pdf' => array(\n+        $caps = [\n+            'e2pdf' => [\n                 'name' => __('Create PDF', 'e2pdf'),\n                 'cap' => 'e2pdf',\n-            ),\n-            'e2pdf_templates' => array(\n+            ],\n+            'e2pdf_templates' => [\n                 'name' => __('Templates', 'e2pdf'),\n                 'cap' => 'e2pdf_templates',\n-            ),\n-            'e2pdf_settings' => array(\n+            ],\n+            'e2pdf_settings' => [\n                 'name' => __('Settings', 'e2pdf'),\n                 'cap' => 'e2pdf_settings',\n-            ),\n-            'e2pdf_license' => array(\n+            ],\n+            'e2pdf_license' => [\n                 'name' => __('License', 'e2pdf'),\n                 'cap' => 'e2pdf_license',\n-            ),\n-            'e2pdf_debug' => array(\n+            ],\n+            'e2pdf_debug' => [\n                 'name' => __('Debug', 'e2pdf'),\n                 'cap' => 'e2pdf_debug',\n-            ),\n-        );\n+            ],\n+        ];\n         return $caps;\n     }\n \n-    \u002F**\n-     * Load sub-helper\n-     * @return object\n-     *\u002F\n+    \u002F\u002F load\n     public function load($helper) {\n         $model = null;\n         $class = 'Helper_E2pdf_' . ucfirst($helper);\n@@ -320,19 +301,19 @@\n         return $model;\n     }\n \n-    \u002F**\n-     * Get Frontend Site URL\n-     * @return string\n-     *\u002F\n+    \u002F\u002F get frontend site url\n     public function get_frontend_site_url() {\n+        if (function_exists('pll_home_url')) {\n+            return pll_home_url();\n+        }\n+        if (function_exists('icl_t') && !defined('POLYLANG_VERSION')) {\n+            return home_url('\u002F');\n+        }\n         return get_option('e2pdf_url_format', 'siteurl') === 'home' ? home_url('\u002F') : site_url('\u002F');\n     }\n \n-    \u002F**\n-     * Get Frontend PDF URL\n-     * @return string\n-     *\u002F\n-    public function get_frontend_pdf_url($url_data = array(), $site_url = false, $filters = array()) {\n+    \u002F\u002F get frontend pdf url\n+    public function get_frontend_pdf_url($url_data = [], $site_url = false, $filters = []) {\n \n         if ($site_url === false) {\n             $site_url = $this->get_frontend_site_url();\n@@ -386,7 +367,8 @@\n         return $this->load('translator')->translate_url($url);\n     }\n \n-    public function get_frontend_local_pdf_url($pdf, $site_url = false, $filters = array()) {\n+    \u002F\u002F get frontend local pdf url\n+    public function get_frontend_local_pdf_url($pdf, $site_url = false, $filters = []) {\n         if ($site_url === false) {\n             $site_url = $this->get_frontend_site_url();\n         }\n@@ -401,10 +383,7 @@\n         return $site_url . str_replace(ABSPATH, '', $pdf);\n     }\n \n-    \u002F**\n-     * Get Domain\n-     * @return string - Domain\n-     *\u002F\n+    \u002F\u002F get site url\n     public function get_site_url() {\n         $site_url = false;\n         if (class_exists('SitePress')) {\n@@ -414,17 +393,25 @@\n                 $site_url = $wpdb->get_var($wpdb->prepare('SELECT option_value FROM `' . $wpdb->options . '` WHERE option_name = %s LIMIT 1', 'siteurl'));\n             }\n         }\n+        if (function_exists('pll_home_url')) {\n+            $settings = get_option('polylang');\n+            if (isset($settings['force_lang']) && ($settings['force_lang'] == '2' || $settings['force_lang'] == '3')) {\n+                global $wpdb;\n+                $site_url = $wpdb->get_var($wpdb->prepare('SELECT option_value FROM `' . $wpdb->options . '` WHERE option_name = %s LIMIT 1', 'siteurl'));\n+            }\n+        }\n         if (!$site_url) {\n             $site_url = site_url();\n         }\n         return $site_url;\n     }\n \n+    \u002F\u002F phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodDoubleUnderscore\n     public function __return_true() {\n         return true;\n     }\n \n-    \u002F\u002F return false\n+    \u002F\u002F phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodDoubleUnderscore\n     public function __return_false() {\n         return false;\n     }\n@@ -433,9 +420,49 @@\n     public function set_time_limit($timeout = 0) {\n         $timeout = (int) $timeout;\n         if (function_exists('set_time_limit') && is_callable('set_time_limit')) {\n+            \u002F\u002F phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged\n             @set_time_limit($timeout);\n         } elseif (function_exists('ini_set') && is_callable('ini_set')) {\n+            \u002F\u002F phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged, WordPress.PHP.IniSet.max_execution_time_Blacklisted\n             @ini_set('max_execution_time', $timeout);\n         }\n     }\n+\n+    \u002F\u002F shortcodes\n+    public function shortcodes() {\n+        return [\n+            'e2pdf-download',\n+            'e2pdf-view',\n+            'e2pdf-save',\n+            'e2pdf-zapier',\n+            'e2pdf-adobesign',\n+            'e2pdf-attachment',\n+            'e2pdf-vc-download',\n+            'e2pdf-vc-download-item',\n+            'e2pdf-vc-view',\n+            'e2pdf-vc-view-item',\n+            'e2pdf-format-number',\n+            'e2pdf-format-date',\n+            'e2pdf-format-output',\n+            'e2pdf-frm-field-value',\n+            'e2pdf-translate',\n+            'e2pdf-math',\n+            'e2pdf-content',\n+            'e2pdf-exclude',\n+            'e2pdf-filter',\n+            'e2pdf-page-number',\n+            'e2pdf-page-total',\n+            'e2pdf-user',\n+            'e2pdf-wp',\n+            'e2pdf-wp-term',\n+            'e2pdf-wp-posts',\n+            'e2pdf-wp-users',\n+            'e2pdf-wc-product',\n+            'e2pdf-wc-order',\n+            'e2pdf-wc-cart',\n+            'e2pdf-wc-customer',\n+            'e2pdf-foreach',\n+            'e2pdf-acf-repeater',\n+        ];\n+    }\n }\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-hooks.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-hooks.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-hooks.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-hooks.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -1,13 +1,11 @@\n \u003C?php\n \n \u002F**\n- * E2Pdf Hooks\n- * \n- * @copyright  Copyright 2017 https:\u002F\u002Fe2pdf.com\n- * @license    GPLv3\n- * @version    1\n- * @link       https:\u002F\u002Fe2pdf.com\n- * @since      0.00.01\n+ * File: \u002Fhelper\u002Fe2pdf-hooks.php\n+ *\n+ * @package  E2Pdf\n+ * @license  GPLv3\n+ * @link     https:\u002F\u002Fe2pdf.com\n  *\u002F\n if (!defined('ABSPATH')) {\n     die('Access denied.');\n@@ -15,21 +13,80 @@\n \n class Helper_E2pdf_Hooks {\n \n+    private $helper;\n+\n+    \u002F\u002F construct\n+    public function __construct() {\n+        $this->helper = Helper_E2pdf_Helper::instance();\n+    }\n+\n+    \u002F\u002F get\n     public function get($extension = '', $hook = '', $item = '') {\n         global $wpdb;\n-        $model_e2pdf_template = new Model_E2pdf_Template();\n-        $hooks = $wpdb->get_col($wpdb->prepare('SELECT `ID` FROM `' . $model_e2pdf_template->get_table() . '` WHERE trash = %s AND activated = %s AND extension = %s AND item = %s AND FIND_IN_SET(%s, hooks)', '0', '1', $extension, $item, $hook));\n+        \u002F\u002F phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared\n+        $hooks = $wpdb->get_col($wpdb->prepare('SELECT `ID` FROM `' . (new Model_E2pdf_Template())->get_table() . '` WHERE trash = %s AND activated = %s AND extension = %s AND item = %s AND FIND_IN_SET(%s, hooks)', '0', '1', $extension, $item, $hook));\n         return $hooks;\n     }\n \n+    \u002F\u002F get items\n     public function get_items($extension = '', $hook = '') {\n         global $wpdb;\n-        $model_e2pdf_template = new Model_E2pdf_Template();\n         if ($hook == 'hook_wordpress_metabox') {\n-            $hooks = $wpdb->get_col($wpdb->prepare('SELECT DISTINCT `item` FROM `' . $model_e2pdf_template->get_table() . '` WHERE trash = %s AND activated = %s AND extension = %s AND item != %s AND item != %s AND FIND_IN_SET(%s, hooks)', '0', '1', $extension, '', '-3', $hook));\n+            \u002F\u002F phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared\n+            $hooks = $wpdb->get_col($wpdb->prepare('SELECT DISTINCT `item` FROM `' . (new Model_E2pdf_Template())->get_table() . '` WHERE trash = %s AND activated = %s AND extension = %s AND item != %s AND item != %s AND FIND_IN_SET(%s, hooks)', '0', '1', $extension, '', '-3', $hook));\n         } else {\n-            $hooks = $wpdb->get_col($wpdb->prepare('SELECT DISTINCT `item` FROM `' . $model_e2pdf_template->get_table() . '` WHERE trash = %s AND activated = %s AND extension = %s AND item != %s AND FIND_IN_SET(%s, hooks)', '0', '1', $extension, '', $hook));\n+            \u002F\u002F phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared\n+            $hooks = $wpdb->get_col($wpdb->prepare('SELECT DISTINCT `item` FROM `' . (new Model_E2pdf_Template())->get_table() . '` WHERE trash = %s AND activated = %s AND extension = %s AND item != %s AND FIND_IN_SET(%s, hooks)', '0', '1', $extension, '', $hook));\n         }\n         return $hooks;\n     }\n+\n+    \u002F\u002F proces hook\n+    public function process_hook($template_id = 0, $atts = [], $hook = '') {\n+        global $wpdb;\n+\n+        if ($wpdb->get_var($wpdb->prepare('SELECT 1 FROM `' . $wpdb->prefix . 'e2pdf_templates` WHERE ID = %d AND (actions LIKE %s OR actions LIKE %s) LIMIT 1', $template_id, '%' . $hook . '%', '%hooks%'))) {\n+\n+            $dataset = isset($atts['dataset']) ? $atts['dataset'] : false;\n+            $dataset2 = isset($atts['dataset2']) ? $atts['dataset2'] : false;\n+            $wc_order_id = isset($atts['wc_order_id']) ? $atts['wc_order_id'] : false;\n+            $wc_product_item_id = isset($atts['wc_product_item_id']) ? $atts['wc_product_item_id'] : false;\n+\n+            $template = new Model_E2pdf_Template();\n+            if (!$template->load($template_id, false)) {\n+                return true;\n+            }\n+\n+            $template->extension()->patch('template_id', $template_id);\n+            $template->extension()->patch('dataset', $dataset);\n+            $template->extension()->patch('dataset2', $dataset2);\n+            $template->extension()->patch('wc_order_id', $wc_order_id);\n+            $template->extension()->patch('wc_product_item_id', $wc_product_item_id);\n+            if (!($template->get('extension') === 'wordpress' && $template->get('item') === '-3')) {\n+                $template->extension()->patch('user_id', get_current_user_id());\n+            }\n+            $template->extension()->patch('storing_engine', $template->extension()->get_storing_engine());\n+\n+            if ($template->get('actions')) {\n+                $model_e2pdf_action = new Model_E2pdf_Action();\n+                $model_e2pdf_action->load($template->extension());\n+                if (!is_array($template->get('actions'))) {\n+                    $template->set('actions', $this->helper->load('convert')->unserialize($template->get('actions')));\n+                }\n+                $actions = $model_e2pdf_action->process_global_actions($template->get('actions'));\n+                foreach ($actions as $action) {\n+                    if (isset($action['action']) && $action['action'] == 'disable_hooks' && isset($action['success'])) {\n+                        return false;\n+                    } elseif (isset($action['action']) && $action['action'] == 'enable_hooks' && !isset($action['success'])) {\n+                        return false;\n+                    } elseif (isset($action['action']) && $action['action'] == 'disable_' . $hook && isset($action['success'])) {\n+                        return false;\n+                    } elseif (isset($action['action']) && $action['action'] == 'enable_' . $hook && !isset($action['success'])) {\n+                        return false;\n+                    }\n+                }\n+            }\n+        }\n+        return true;\n+    }\n }\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-if.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-if.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-if.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-if.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -37,7 +37,9 @@\n     public function get_comparators() {\n         return array(\n             '[==]',\n+            '[===]',\n             '[!=]',\n+            '[!==]',\n             '[>]',\n             '[>=]',\n             '[\u003C]',\n@@ -60,18 +62,19 @@\n         return array_merge($this->get_delimiters(), $this->get_brackets(), $this->get_comparators());\n     }\n \n-    public function do_shortcode($atts = array(), $value = '', $extension = null) {\n+    public function do_shortcode($atts = array(), $value = '', $if = 0, $extension = null) {\n+        $if_index = $if ? '-' . $if : '';\n         $tags = array(\n-            'e2pdf-if-condition' => 'e2pdf-if-condition',\n-            'e2pdf-if-do' => 'e2pdf-if-do',\n-            'e2pdf-if-else' => 'e2pdf-if-else'\n+            'e2pdf-if-condition' => 'e2pdf-if-condition' . $if_index,\n+            'e2pdf-if-do' => 'e2pdf-if-do' . $if_index,\n+            'e2pdf-if-else' => 'e2pdf-if-else' . $if_index,\n         );\n         \u002F* Backward compatibility *\u002F\n         if (false === strpos($value, '[e2pdf-if-condition')) {\n             $tags = array(\n-                'e2pdf-if-condition' => 'e2pdf-condition',\n-                'e2pdf-if-do' => 'e2pdf-do',\n-                'e2pdf-if-else' => 'e2pdf-else'\n+                'e2pdf-if-condition' => 'e2pdf-condition' . $if_index,\n+                'e2pdf-if-do' => 'e2pdf-do' . $if_index,\n+                'e2pdf-if-else' => 'e2pdf-else' . $if_index,\n             );\n         }\n         $comparators = $this->get_shortcodes();\n@@ -90,6 +93,20 @@\n         } else {\n             $response = $this->helper->load('shortcode')->get_shortcode_content($tags['e2pdf-if-else'], $value);\n         }\n+        if ($response && false !== strpos($response, '[e2pdf-if-' . $if + 1)) {\n+            $shortcode_tags = array(\n+                'e2pdf-if-' . $if + 1,\n+            );\n+            preg_match_all('@\\[([^\u003C>&\u002F\\[\\]\\x00-\\x20=]++)@', $response, $matches);\n+            $tagnames = array_intersect($shortcode_tags, $matches[1]);\n+            if (!empty($tagnames)) {\n+                preg_match_all('\u002F' . $this->helper->load('shortcode')->get_shortcode_regex($tagnames) . '\u002F', $response, $shortcodes);\n+                foreach ($shortcodes[0] as $key => $shortcode_value) {\n+                    $shortcode = $this->helper->load('shortcode')->get_shortcode($shortcodes, $key);\n+                    $response = str_replace($shortcode_value, $this->do_shortcode(shortcode_parse_atts($shortcode[3]), $shortcode[5], $if + 1, $extension), $response);\n+                }\n+            }\n+        }\n         return $response;\n     }\n \n@@ -136,9 +153,15 @@\n                     case '[==]':\n                         $result = $if == $value ? true : false;\n                         break;\n+                    case '[===]':\n+                        $result = $if === $value ? true : false;\n+                        break;\n                     case '[!=]':\n                         $result = $if != $value ? true : false;\n                         break;\n+                    case '[!==]':\n+                        $result = $if !== $value ? true : false;\n+                        break;\n                     case '[>]':\n                         $result = $if > $value ? true : false;\n                         break;\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-image.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-image.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-image.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-image.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -222,6 +222,7 @@\n \n     public function get_extension($value = false) {\n \n+        $value = trim($value);\n         if (!$value) {\n             return false;\n         }\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-math.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-math.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-math.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-math.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -30,8 +30,8 @@\n         try {\n             $this->stack = $this->parse($string);\n             return $this->run();\n-        } catch (Exception $e) {\n-            return $e->getMessage();\n+        } catch (Exception $ex) {\n+            return $ex->getMessage();\n         }\n     }\n \ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-pdf.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-pdf.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-pdf.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-pdf.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -120,6 +120,8 @@\n     }\n \n     public function get_extension($value = false) {\n+\n+        $value = trim($value);\n         if (!$value) {\n             return false;\n         }\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper: e2pdf-rtl.php\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-server.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-server.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-server.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-server.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -37,6 +37,14 @@\n         return false;\n     }\n \n+    public function isSafari() {\n+        $userAgent = $this->get('HTTP_USER_AGENT');\n+        if (stripos($userAgent, 'AppleWebKit') !== false && stripos($userAgent, 'Safari') !== false && stripos($userAgent, 'CriOS') === false) {\n+            return true;\n+        }\n+        return false;\n+    }\n+\n     public function isChrome() {\n         $userAgent = $this->get('HTTP_USER_AGENT');\n         if (stripos($userAgent, 'CriOS') !== false || stripos($userAgent, 'Chrome') !== false) {\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-shortcode.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-shortcode.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-shortcode.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-shortcode.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -1,13 +1,11 @@\n \u003C?php\n \n \u002F**\n- * E2pdf Shortcode Helper\n- * \n- * @copyright  Copyright 2017 https:\u002F\u002Fe2pdf.com\n- * @license    GPLv3\n- * @version    1\n- * @link       https:\u002F\u002Fe2pdf.com\n- * @since      1.07.02\n+ * File: \u002Fhelper\u002Fe2pdf-shortcode.php\n+ *\n+ * @package  E2Pdf\n+ * @license  GPLv3\n+ * @link     https:\u002F\u002Fe2pdf.com\n  *\u002F\n if (!defined('ABSPATH')) {\n     die('Access denied.');\n@@ -15,6 +13,12 @@\n \n class Helper_E2pdf_Shortcode {\n \n+    private $helper;\n+\n+    public function __construct() {\n+        $this->helper = Helper_E2pdf_Helper::instance();\n+    }\n+\n     public function get_shortcode_regex($tagnames = null) {\n         if (version_compare(get_bloginfo('version'), '4.4.0', '\u003C')) {\n             global $shortcode_tags;\n@@ -24,8 +28,7 @@\n             }\n             $tagregexp = join('|', array_map('preg_quote', $tagnames));\n \n-            return\n-                    '\\\\['\n+            return '\\\\['\n                     . '(\\\\[?)'\n                     . \"($tagregexp)\"\n                     . '(?![\\\\w-])'\n@@ -83,7 +86,10 @@\n     }\n \n     public function apply_path_attribute($value, $path = false, $delimiter = '.') {\n-        if ((is_array($value) || is_object($value)) && $path !== false) {\n+        if ($path !== false) {\n+            if (!is_array($value) && !is_object($value)) {\n+                $value = $this->helper->load('convert')->is_unserialized_array($value);\n+            }\n             $keys = explode($delimiter, $path);\n             $obj = &$value;\n             $found = true;\n@@ -128,8 +134,154 @@\n         }\n     }\n \n+    public function apply_convert_attribute($convert, $post_meta, $implode = ',') {\n+        $type = false;\n+        switch (true) {\n+            case 0 === strpos($convert, 'term_id_to_'):\n+                $type = 'term';\n+                $convert = str_replace('term_id_to_', '', $convert);\n+                break;\n+            case 0 === strpos($convert, 'user_id_to_'):\n+                $type = 'user';\n+                $convert = str_replace('user_id_to_', '', $convert);\n+                break;\n+            case 0 === strpos($convert, 'post_id_to_'):\n+                $type = 'post';\n+                $convert = str_replace('post_id_to_', '', $convert);\n+                break;\n+        }\n+        if ($type && $post_meta) {\n+            $implode = $implode === false ? ',' : $implode;\n+            if (!is_array($post_meta)) {\n+                if (strpos($post_meta, ',') !== false) {\n+                    $post_meta = explode(',', $post_meta);\n+                }\n+            }\n+            if (is_array($post_meta)) {\n+                $sub_metas = array();\n+                foreach ($post_meta as $post_meta_part) {\n+                    if (!is_array($post_meta_part)) {\n+                        switch ($type) {\n+                            case 'term':\n+                                $sub_meta = get_term($post_meta_part);\n+                                break;\n+                            case 'user':\n+                                $sub_meta = get_userdata($post_meta_part);\n+                                break;\n+                            case 'post':\n+                                $sub_meta = get_post($post_meta_part);\n+                                break;\n+                        }\n+                        if ($sub_meta && !is_wp_error($sub_meta)) {\n+                            if ($convert == $type) {\n+                                $sub_metas[] = $sub_meta;\n+                            } else {\n+                                if (isset($sub_meta->$convert)) {\n+                                    $sub_metas[] = $sub_meta->$convert;\n+                                }\n+                            }\n+                        }\n+                    }\n+                }\n+                $post_meta = $sub_metas;\n+            } else {\n+                switch ($type) {\n+                    case 'term':\n+                        $sub_meta = get_term($post_meta);\n+                        break;\n+                    case 'user':\n+                        $sub_meta = get_userdata($post_meta);\n+                        break;\n+                    case 'post':\n+                        $sub_meta = get_post($post_meta);\n+                        break;\n+                }\n+                if ($sub_meta && !is_wp_error($sub_meta)) {\n+                    if ($convert == $type) {\n+                        $post_meta = $sub_meta;\n+                    } else {\n+                        if (isset($sub_meta->$convert)) {\n+                            $post_meta = $sub_meta->$convert;\n+                        }\n+                    }\n+                } else {\n+                    $post_meta = '';\n+                }\n+            }\n+        }\n+        return $post_meta;\n+    }\n+\n+    public function apply_inline_shortcodes($value, $shortcode_tags, $extension) {\n+        preg_match_all('@\\[([^\u003C>&\u002F\\[\\]\\x00-\\x20=]++)@', $value, $matches);\n+        $tagnames = array_intersect($shortcode_tags, $matches[1]);\n+        if (!empty($tagnames)) {\n+            preg_match_all('\u002F' . $this->helper->load('shortcode')->get_shortcode_regex($tagnames) . '\u002F', $value, $shortcodes);\n+            foreach ($shortcodes[0] as $key => $shortcode_value) {\n+                $shortcode = $this->helper->load('shortcode')->get_shortcode($shortcodes, $key);\n+                $atts = shortcode_parse_atts($shortcode[3]);\n+                switch (true) {\n+                    case (0 === strpos($shortcode[2], 'e2pdf-for')):\n+                        $for_index = (0 === strpos($shortcode[2], 'e2pdf-for-')) ? str_replace('e2pdf-for-', '', $shortcode[2]) : 0;\n+                        $sub_value = $this->helper->load('for')->do_shortcode($atts, $shortcode[5], $for_index, $extension);\n+\n+                        $sub_shortcode_tags = array_values(array_diff($shortcode_tags, [$shortcode[2]]));\n+                        $sub_shortcode_tags[] = 'e2pdf-for-' . $for_index + 1;\n+                        foreach ($sub_shortcode_tags as $sub_shortcode_key => $sub_shortcode_tag) {\n+                            if (false === strpos($sub_value, '[' . $sub_shortcode_tag)) {\n+                                unset($sub_shortcode_tags[$sub_shortcode_key]);\n+                            }\n+                        }\n+                        if (!empty($sub_shortcode_tags)) {\n+                            $sub_value = $this->apply_inline_shortcodes($sub_value, $sub_shortcode_tags, $extension);\n+                        }\n+                        $value = str_replace($shortcode_value, $sub_value, $value);\n+                        break;\n+                    case (0 === strpos($shortcode[2], 'e2pdf-acf-repeater')):\n+                        if ($extension instanceof Extension_E2pdf_Wordpress) {\n+                            if (!isset($atts['post_id']) && isset($extension->get('cached_post')->ID) && $extension->get('cached_post')->ID) {\n+                                if ($extension->get('item') == '-3') {\n+                                    $atts['post_id'] = 'user_' . $extension->get('cached_post')->ID;\n+                                } else {\n+                                    $atts['post_id'] = $extension->get('cached_post')->ID;\n+                                }\n+                            }\n+                        } elseif ($extension instanceof Extension_E2pdf_Woocommerce) {\n+                            if (!isset($atts['post_id']) && isset($extension->get('cached_post')->ID) && $extension->get('cached_post')->ID) {\n+                                if ($extension->get('item') == 'product_variation' && isset($extension->get('cached_post')->post_parent)) {\n+                                    $atts['post_id'] = $extension->get('cached_post')->post_parent;\n+                                } else {\n+                                    $atts['post_id'] = $extension->get('cached_post')->ID;\n+                                }\n+                            }\n+                        }\n+\n+                        $acf_repeater_index = (0 === strpos($shortcode[2], 'e2pdf-acf-repeater-')) ? str_replace('e2pdf-acf-repeater-', '', $shortcode[2]) : 0;\n+                        $sub_value = $this->helper->load('acfrepeater')->do_shortcode($atts, $shortcode[5], $acf_repeater_index);\n+\n+                        $sub_shortcode_tags = array_values(array_diff($shortcode_tags, [$shortcode[2]]));\n+                        $sub_shortcode_tags[] = 'e2pdf-acf-repeater-' . $acf_repeater_index + 1;\n+                        foreach ($sub_shortcode_tags as $sub_shortcode_key => $sub_shortcode_tag) {\n+                            if (false === strpos($sub_value, '[' . $sub_shortcode_tag)) {\n+                                unset($sub_shortcode_tags[$sub_shortcode_key]);\n+                            }\n+                        }\n+                        if (!empty($sub_shortcode_tags)) {\n+                            $sub_value = $this->apply_inline_shortcodes($sub_value, $sub_shortcode_tags, $extension);\n+                        }\n+                        $value = str_replace($shortcode_value, $sub_value, $value);\n+                        break;\n+                }\n+            }\n+        }\n+        return $value;\n+    }\n+\n     public function is_attachment($shortcode, $atts) {\n-        if (($shortcode[2] === 'e2pdf-save' && isset($atts['attachment']) && $atts['attachment'] == 'true') || $shortcode[2] === 'e2pdf-attachment') {\n+        $true = [\n+            'true', '1',\n+        ];\n+        if (($shortcode[2] === 'e2pdf-save' && isset($atts['attachment']) && in_array(strtolower((string) $atts['attachment']), $true, true)) || $shortcode[2] === 'e2pdf-attachment') {\n             return true;\n         }\n         return false;\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-translator.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-translator.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-translator.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-translator.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -1,13 +1,11 @@\n \u003C?php\n \n \u002F**\n- * E2pdf Zip Helper\n+ * File: \u002Fhelper\u002Fe2pdf-translator.php\n  * \n- * @copyright  Copyright 2017 https:\u002F\u002Fe2pdf.com\n- * @license    GPLv3\n- * @version    1\n- * @link       https:\u002F\u002Fe2pdf.com\n- * @since      0.00.01\n+ * @package  E2Pdf\n+ * @license  GPLv3\n+ * @link     https:\u002F\u002Fe2pdf.com\n  *\u002F\n if (!defined('ABSPATH')) {\n     die('Access denied.');\n@@ -15,40 +13,85 @@\n \n class Helper_E2pdf_Translator {\n \n-    private $translator = null;\n+    private $translator;\n+    private $translation;\n \n     public function __construct() {\n \n-        \u002F**\n-         * Translate Multilingual sites – TranslatePress\n-         * https:\u002F\u002Fwordpress.org\u002Fplugins\u002Ftranslatepress-multilingual\u002F\n-         *\u002F\n-        if (class_exists('TRP_Translate_Press') && get_option('e2pdf_pdf_translation', '2') !== '0') {\n-            $this->translator = TRP_Translate_Press::get_trp_instance();\n-        }\n+        $this->translation = get_option('e2pdf_pdf_translation', '2');\n \n-        \u002F**\n-         * Weglot Translate – Translate your WordPress website and go multilingual\n-         * https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fweglot\u002F\n-         *\u002F\n-        if (class_exists('WeglotWP\\Services\\Translate_Service_Weglot') && get_option('e2pdf_pdf_translation', '2') !== '0' && function_exists('weglot_get_current_language') && function_exists('weglot_get_original_language')) {\n-            if (weglot_get_current_language() != weglot_get_original_language()) {\n-                $this->translator = new WeglotWP\\Services\\Translate_Service_Weglot();\n+        if ($this->translation !== '0') {\n+            \u002F**\n+             * Translate Multilingual sites – TranslatePress\n+             * https:\u002F\u002Fwordpress.org\u002Fplugins\u002Ftranslatepress-multilingual\u002F\n+             *\u002F\n+            if (class_exists('E2pdf_TRP_Translator')) {\n+                $this->translator = new E2pdf_TRP_Translator($this->translation);\n+            }\n+\n+            \u002F**\n+             * Weglot Translate – Translate your WordPress website and go multilingual\n+             * https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fweglot\u002F\n+             *\u002F\n+            if (class_exists('E2pdf_Weglot_Translator')) {\n+                $this->translator = new E2pdf_Weglot_Translator($this->translation);\n             }\n+\n+            \u002F**\n+             * The WordPress Multilingual Plugin\n+             * https:\u002F\u002Fwpml.org\u002F\n+             *\u002F\n+            if (class_exists('E2pdf_WPML_Translator')) {\n+                $this->translator = new E2pdf_WPML_Translator($this->translation);\n+            }\n+\n+            \u002F**\n+             * Polylang\n+             * https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fpolylang\u002F\n+             *\u002F\n+            if (class_exists('E2pdf_Polylang_Translator')) {\n+                $this->translator = new E2pdf_Polylang_Translator($this->translation);\n+            }\n+        }\n+    }\n+\n+    public function translator() {\n+        return $this->translator;\n+    }\n+\n+    public function isWPML() {\n+        return ($this->translator && is_a($this->translator, 'E2pdf_WPML_Translator')) ? true : false;\n+    }\n+\n+    public function isTRP() {\n+        return ($this->translator && is_a($this->translator, 'E2pdf_TRP_Translator')) ? true : false;\n+    }\n+\n+    public function isPolylang() {\n+        return ($this->translator && is_a($this->translator, 'E2pdf_Polylang_Translator')) ? true : false;\n+    }\n+\n+    public function pre_translate($string = '', $template_id = 0, $element_id = '', $type = '') {\n+        if ($string && $this->translator && method_exists($this->translator, 'pre_translate')) {\n+            $string = $this->translator->pre_translate($string, $template_id, $element_id, $type);\n         }\n+        return $string;\n     }\n \n-    public function translate($content = '', $type = 'default') {\n-        if ($this->translator && $content) {\n+    public function translate($string = '', $type = 'default', $post_id = 0) {\n+        if ($string && $this->translator && method_exists($this->translator, 'translate')) {\n             $translation = false;\n             switch ($type) {\n                 case 'full':\n-                    if (get_option('e2pdf_pdf_translation', '2') === '2') {\n+                    if ($this->translation === '2') {\n                         $translation = true;\n                     }\n                     break;\n                 case 'partial':\n-                    if (get_option('e2pdf_pdf_translation', '2') === '1') {\n+                    if (\n+                            $this->translation === '1' ||\n+                            (is_a($this->translator, 'E2pdf_Polylang_Translator') && $this->translation === '2')\n+                    ) {\n                         $translation = true;\n                     }\n                     break;\n@@ -56,98 +99,684 @@\n                     $translation = true;\n                     break;\n             }\n-\n             if ($translation) {\n                 \u002F**\n+                 * Translate Multilingual sites – TranslatePress\n+                 * https:\u002F\u002Fwordpress.org\u002Fplugins\u002Ftranslatepress-multilingual\u002F\n+                 *\u002F\n+                if (is_a($this->translator, 'E2pdf_TRP_Translator')) {\n+                    return $this->translator->translate($string);\n+                }\n+\n+\n+                \u002F**\n                  * Weglot Translate – Translate your WordPress website and go multilingual\n                  * https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fweglot\u002F\n                  *\u002F\n-                if (is_a($this->translator, 'WeglotWP\\Services\\Translate_Service_Weglot')) {\n-                    if (weglot_get_current_language() != weglot_get_original_language()) {\n-                        $content = str_replace(array('e2pdf-page-number', 'e2pdf-page-total'), array('e-2-p-d-f-p-a-g-e-n-u-m-b-e-r', 'e-2-p-d-f-p-a-g-e-t-o-t-a-l'), $content);\n-                        $content = $this->translator->weglot_treat_page($content);\n-                        $content = str_replace(array('e-2-p-d-f-p-a-g-e-n-u-m-b-e-r', 'e-2-p-d-f-p-a-g-e-t-o-t-a-l'), array('e2pdf-page-number', 'e2pdf-page-total'), $content);\n-                    }\n+                if (is_a($this->translator, 'E2pdf_Weglot_Translator')) {\n+                    return $this->translator->translate($string);\n                 }\n \n                 \u002F**\n-                 * Translate Multilingual sites – TranslatePress\n-                 * https:\u002F\u002Fwordpress.org\u002Fplugins\u002Ftranslatepress-multilingual\u002F\n+                 * Multilingual CMS (WPML)\n+                 * https:\u002F\u002Fwpml.org\u002F\n                  *\u002F\n-                if (is_a($this->translator, 'TRP_Translate_Press')) {\n-                    add_filter('trp_get_existing_translations', array($this, 'filter_trp_get_existing_translations'), 99, 5);\n-                    $content = $this->translator->get_component('translation_render')->translate_page($content);\n-                    remove_filter('trp_get_existing_translations', array($this, 'filter_trp_get_existing_translations'), 99);\n+                if (is_a($this->translator, 'E2pdf_WPML_Translator')) {\n+                    return $string;\n+                }\n+\n+                \u002F**\n+                 * Polylang\n+                 * https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fpolylang\u002F\n+                 *\u002F\n+                if (is_a($this->translator, 'E2pdf_Polylang_Translator')) {\n+                    return $this->translator->translate($string, $post_id);\n                 }\n             }\n         }\n-        return $content;\n+\n+        return $string;\n     }\n \n-    public function filter_trp_get_existing_translations($dictionary, $prepared_query, $strings_array, $language_code, $block_type) {\n-        global $wpdb;\n-        if (!is_array($strings_array) || count($strings_array) == 0) {\n-            return $dictionary;\n+    public function lang($post_id = 0) {\n+        if (!$this->translator) {\n+            return '';\n+        }\n+        if (method_exists($this->translator, 'lang')) {\n+            $lang = $this->translator->lang($post_id = 0);\n+        }\n+        return !empty($lang) ? $lang : '';\n+    }\n+\n+    public function translate_url($url = '') {\n+        if ($url && $this->translator && method_exists($this->translator, 'flush')) {\n+            $url = $this->translator->translate_url($url);\n+        }\n+        return $url;\n+    }\n+\n+    public function flush($template_id = 0) {\n+        if ($this->translator && method_exists($this->translator, 'flush')) {\n+            $this->translator->flush($template_id);\n+        }\n+    }\n+\n+    public function update_translation($string = '', $template_id = 0, $element_id = '', $type = '') {\n+        if ($this->translator && method_exists($this->translator, 'update_translation')) {\n+            $this->translator->update_translation($string, $template_id, $element_id, $type);\n+        }\n+    }\n+}\n+\n+if (class_exists('WeglotWP\\Services\\Translate_Service_Weglot') && function_exists('weglot_get_current_language') && function_exists('weglot_get_original_language')) {\n+\n+    class E2pdf_Weglot_Translator {\n+\n+        private $helper;\n+        private $translation;\n+        private $weglot;\n+\n+        public function __construct($translation) {\n+            $this->helper = Helper_E2pdf_Helper::instance();\n+            $this->translation = $translation;\n+            if (weglot_get_current_language() != weglot_get_original_language()) {\n+                $this->weglot = new WeglotWP\\Services\\Translate_Service_Weglot();\n+            }\n+        }\n+\n+        public function translate($string) {\n+            if ($this->weglot) {\n+                $string = str_replace(array('e2pdf-page-number', 'e2pdf-page-total'), array('e-2-p-d-f-p-a-g-e-n-u-m-b-e-r', 'e-2-p-d-f-p-a-g-e-t-o-t-a-l'), $string);\n+                $string = $this->weglot->weglot_treat_page($string);\n+                $string = str_replace(array('e-2-p-d-f-p-a-g-e-n-u-m-b-e-r', 'e-2-p-d-f-p-a-g-e-t-o-t-a-l'), array('e2pdf-page-number', 'e2pdf-page-total'), $string);\n+            }\n+            return $string;\n+        }\n+\n+        public function translate_url($url = '') {\n+            if (weglot_get_current_language() != weglot_get_original_language()) {\n+                $request_url_service = weglot_get_request_url_service();\n+                $replaced_url = $request_url_service->create_url_object($url)->getForLanguage($request_url_service->get_current_language());\n+                if ($replaced_url) {\n+                    $url = $replaced_url;\n+                }\n+            }\n+            return $url;\n         }\n-        if ($block_type == null) {\n-            $and_block_type = \"\";\n-        } else {\n-            $and_block_type = \" AND block_type = \" . $block_type;\n-        }\n-        $placeholders = array();\n-        $values = array();\n-        foreach ($strings_array as $string) {\n-            $wptexturized_string = wptexturize($string);\n-            if ($string !== $wptexturized_string) {\n-                $placeholders[] = '%s';\n-                $values[] = wptexturize($string);\n-            }\n-        }\n-        if (!empty($values)) {\n-            $query = \"SELECT original,translated, status FROM `\" . sanitize_text_field($this->translator->get_component('query')->get_table_name($language_code)) . \"` WHERE status != \" . $this->translator->get_component('query')->get_constant_not_translated() . $and_block_type . \" AND translated \u003C>'' AND original IN \";\n-            $query .= \"( \" . implode(\", \", $placeholders) . \" )\";\n-            $prepared_query = $wpdb->prepare($query, $values);\n-            $additional_dictionary = $wpdb->get_results($prepared_query, OBJECT_K);\n-            if (!empty($additional_dictionary) && is_array($additional_dictionary)) {\n-                foreach ($additional_dictionary as $dictionary_key => $dictionary_object) {\n-                    if (false != strpos($dictionary_key, '&#82')) {\n-                        $replace = array(\n-                            '&#8220;' => '\"',\n-                            '&#8221;' => '\"',\n-                            '&#8217;' => \"'\",\n-                            '&#8242;' => \"'\",\n-                            '&#8243;' => '\"',\n-                            '&#8216;' => \"'\",\n-                            '&#8211;' => '-',\n-                            '&#8212;' => '-',\n+\n+        public function lang($post_id = 0) {\n+            return weglot_get_current_language();\n+        }\n+    }\n+\n+}\n+\n+\n+if (class_exists('TRP_Translate_Press')) {\n+\n+    class E2pdf_TRP_Translator {\n+\n+        private $helper;\n+        private $translation;\n+        private $keys = [];\n+        private $lang;\n+        private $default_lang;\n+        private $translatepress;\n+\n+        public function __construct($translation) {\n+            global $TRP_LANGUAGE;\n+\n+            $this->helper = Helper_E2pdf_Helper::instance();\n+            $this->translation = $translation;\n+            $this->lang = $TRP_LANGUAGE;\n+            $this->translatepress = TRP_Translate_Press::get_trp_instance();\n+\n+            $settings = get_option('trp_settings', false);\n+            $this->default_lang = isset($settings['default-language']) ? $settings['default-language'] : null;\n+        }\n+\n+        public function update_translation($string = '', $template_id = 0, $element_id = '', $type = '') {\n+\n+            if (!$string) {\n+                return;\n+            }\n+\n+            global $wpdb;\n+            $domain = 'E2Pdf Template ' . $template_id;\n+\n+            switch ($this->translation) {\n+                case '1':\n+                    if ($type === 'template') {\n+                        $exists = $wpdb->get_row(\n+                                $wpdb->prepare(\n+                                        'SELECT id, original FROM `' . $wpdb->prefix . 'trp_gettext_original_strings` WHERE domain = %s AND original = %s',\n+                                        $domain,\n+                                        $string\n+                                )\n                         );\n-                        $untexturized_dictionary_key = str_replace(array_keys($replace), $replace, $dictionary_key);\n-                        if ($untexturized_dictionary_key !== $dictionary_key && !isset($dictionary[$untexturized_dictionary_key]) && isset($dictionary_object->original)) {\n-                            $new_dicitionary_object = $dictionary_object;\n-                            $new_dicitionary_object->original = $untexturized_dictionary_key;\n-                            $dictionary[$untexturized_dictionary_key] = $new_dicitionary_object;\n+                        if (!$exists) {\n+                            $wpdb->insert(\n+                                    $wpdb->prefix . 'trp_gettext_original_strings',\n+                                    array(\n+                                        'original' => $string,\n+                                        'domain' => $domain,\n+                                        'context' => '',\n+                                        'original_plural' => ''\n+                                    )\n+                            );\n+                        }\n+                        $this->keys[] = $string;\n+                    } elseif (false !== strpos($string, '[')) {\n+                        $shortcode_tags = array(\n+                            'e2pdf-translate',\n+                        );\n+                        preg_match_all('@\\[([^\u003C>&\u002F\\[\\]\\x00-\\x20=]++)@', $string, $matches);\n+                        $tagnames = array_intersect($shortcode_tags, $matches[1]);\n+                        if (!empty($tagnames)) {\n+                            preg_match_all('\u002F' . $this->helper->load('shortcode')->get_shortcode_regex($tagnames) . '\u002F', $string, $shortcodes);\n+                            foreach ($shortcodes[0] as $key => $shortcode_value) {\n+                                $shortcode = $this->helper->load('shortcode')->get_shortcode($shortcodes, $key);\n+                                $atts = shortcode_parse_atts($shortcode[3]);\n+                                if (!isset($atts['context']) && $shortcode[5]) {\n+                                    $substring = $shortcode[5];\n+                                    $exists = $wpdb->get_row(\n+                                            $wpdb->prepare(\n+                                                    'SELECT id, original FROM `' . $wpdb->prefix . 'trp_gettext_original_strings` WHERE domain = %s AND original = %s',\n+                                                    $domain,\n+                                                    $substring\n+                                            )\n+                                    );\n+                                    if (!$exists) {\n+                                        $wpdb->insert(\n+                                                $wpdb->prefix . 'trp_gettext_original_strings',\n+                                                array(\n+                                                    'original' => $substring,\n+                                                    'domain' => $domain,\n+                                                    'context' => '',\n+                                                    'original_plural' => ''\n+                                                )\n+                                        );\n+                                    }\n+                                    $this->keys[] = $substring;\n+                                }\n+                            }\n+                        }\n+                    }\n+                    break;\n+                case '2':\n+                    $exists = $wpdb->get_row(\n+                            $wpdb->prepare(\n+                                    'SELECT id, original FROM `' . $wpdb->prefix . 'trp_gettext_original_strings` WHERE domain = %s AND original = %s',\n+                                    $domain,\n+                                    $string\n+                            )\n+                    );\n+                    if (!$exists) {\n+                        $wpdb->insert(\n+                                $wpdb->prefix . 'trp_gettext_original_strings',\n+                                array(\n+                                    'original' => $string,\n+                                    'domain' => $domain,\n+                                    'context' => '',\n+                                    'original_plural' => ''\n+                                )\n+                        );\n+                    }\n+                    $this->keys[] = $string;\n+                    break;\n+                default:\n+                    break;\n+            }\n+        }\n+\n+        public function get_strings($domain = '') {\n+            global $wpdb;\n+            if (!$domain) {\n+                return [];\n+            }\n+            return $wpdb->get_results(\n+                            $wpdb->prepare(\n+                                    'SELECT id, original FROM `' . $wpdb->prefix . 'trp_gettext_original_strings` WHERE domain = %s',\n+                                    $domain\n+                            )\n+                    );\n+        }\n+\n+        public function pre_translate($string = '', $template_id = 0, $element_id = '', $type = '') {\n+            global $wpdb;\n+            $domain = 'E2Pdf Template ' . $template_id;\n+            if (!$this->lang || $this->lang == $this->default_lang) {\n+                return $string;\n+            }\n+            $translated = $wpdb->get_var($wpdb->prepare(\n+                            'SELECT translated FROM `' . $wpdb->prefix . 'trp_gettext_' . $this->lang . '` WHERE original = %s AND domain = %s AND (status = 2 OR status = 1) LIMIT 1',\n+                            $string,\n+                            $domain\n+                    )\n+            );\n+            return $translated ? $translated : $string;\n+        }\n+\n+        public function flush($template_id) {\n+            global $wpdb;\n+            $domain = 'E2Pdf Template ' . $template_id;\n+\n+            $strings = $this->get_strings($domain);\n+\n+            if (!empty($strings) && is_array($strings)) {\n+                foreach ($strings as $name) {\n+                    if (!in_array($name->original, $this->keys, false)) {\n+                        foreach ($this->languages() as $lang) {\n+                            $wpdb->delete(\n+                                    $wpdb->prefix . 'trp_gettext_' . strtolower($lang),\n+                                    array('original_id' => $name->id)\n+                            );\n+                        }\n+                        $wpdb->delete(\n+                                $wpdb->prefix . 'trp_gettext_original_strings',\n+                                array('id' => $name->id)\n+                        );\n+                    }\n+                }\n+            }\n+            $this->keys = [];\n+        }\n+\n+        public function translate($string = '', $template_id = 0, $element_id = '', $type = '') {\n+            add_filter('trp_get_existing_translations', array($this, 'filter_trp_get_existing_translations'), 99, 5);\n+            if (method_exists($this->translatepress, 'get_component')) {\n+                $translation_render = $this->translatepress->get_component('translation_render');\n+                if (is_object($translation_render) && method_exists($translation_render, 'translate_page')) {\n+                    $string = $translation_render->translate_page($string);\n+                }\n+            }\n+            remove_filter('trp_get_existing_translations', array($this, 'filter_trp_get_existing_translations'), 99);\n+            return $string;\n+        }\n+\n+        public function translate_url($url = '') {\n+            if (method_exists($this->translatepress, 'get_component')) {\n+                $url_converter = $this->translatepress->get_component('url_converter');\n+                if (is_object($url_converter) && method_exists($url_converter, 'get_url_for_language')) {\n+                    $url = $url_converter->get_url_for_language($this->lang(), $url, '');\n+                }\n+            }\n+            return $url;\n+        }\n+\n+        public function lang($post_id = 0) {\n+            return $this->lang;\n+        }\n+\n+        public function languages() {\n+            $languages = [];\n+            if (method_exists($this->translatepress, 'get_component')) {\n+                $settings_component = $this->translatepress->get_component('settings');\n+                if (is_object($settings_component) && method_exists($settings_component, 'get_settings')) {\n+                    $settings = $settings_component->get_settings();\n+                    if (isset($settings['publish-languages']) && is_array($settings['publish-languages'])) {\n+                        $languages = $settings['publish-languages'];\n+                    }\n+                }\n+            }\n+            return $languages;\n+        }\n+\n+        public function filter_trp_get_existing_translations($dictionary, $prepared_query, $strings_array, $language_code, $block_type) {\n+            global $wpdb;\n+            if (!is_array($strings_array) || count($strings_array) == 0) {\n+                return $dictionary;\n+            }\n+            if ($block_type == null) {\n+                $and_block_type = '';\n+            } else {\n+                $and_block_type = ' AND block_type = ' . $block_type;\n+            }\n+            $placeholders = array();\n+            $values = array();\n+            foreach ($strings_array as $string) {\n+                $wptexturized_string = wptexturize($string);\n+                if ($string !== $wptexturized_string) {\n+                    $placeholders[] = '%s';\n+                    $values[] = wptexturize($string);\n+                }\n+            }\n+            if (!empty($values)) {\n+                if (method_exists($this->translatepress, 'get_component')) {\n+                    $translation_query = $this->translatepress->get_component('query');\n+                    if (is_object($translation_query) && method_exists($translation_query, 'get_table_name')) {\n+                        $query = 'SELECT original,translated, status FROM `' . sanitize_text_field($this->translatepress->get_component('query')->get_table_name($language_code)) . '` WHERE status != ' . $this->translatepress->get_component('query')->get_constant_not_translated() . $and_block_type . \" AND translated \u003C>'' AND original IN \";\n+                        $query .= '( ' . implode(', ', $placeholders) . ' )';\n+                        \u002F\u002F phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared\n+                        $additional_dictionary = $wpdb->get_results($wpdb->prepare($query, $values), OBJECT_K);\n+                        if (!empty($additional_dictionary) && is_array($additional_dictionary)) {\n+                            foreach ($additional_dictionary as $dictionary_key => $dictionary_object) {\n+                                if (false != strpos($dictionary_key, '&#82')) {\n+                                    $replace = array(\n+                                        '&#8220;' => '\"',\n+                                        '&#8221;' => '\"',\n+                                        '&#8217;' => \"'\",\n+                                        '&#8242;' => \"'\",\n+                                        '&#8243;' => '\"',\n+                                        '&#8216;' => \"'\",\n+                                        '&#8211;' => '-',\n+                                        '&#8212;' => '-',\n+                                    );\n+                                    $untexturized_dictionary_key = str_replace(array_keys($replace), $replace, $dictionary_key);\n+                                    if ($untexturized_dictionary_key !== $dictionary_key && !isset($dictionary[$untexturized_dictionary_key]) && isset($dictionary_object->original)) {\n+                                        $new_dicitionary_object = $dictionary_object;\n+                                        $new_dicitionary_object->original = $untexturized_dictionary_key;\n+                                        $dictionary[$untexturized_dictionary_key] = $new_dicitionary_object;\n+                                    }\n+                                }\n+                            }\n                         }\n                     }\n                 }\n             }\n+            return $dictionary;\n         }\n-        return $dictionary;\n     }\n \n-    public function translate_url($url = false) {\n-        if ($this->translator && $url) {\n-            if (is_a($this->translator, 'WeglotWP\\Services\\Translate_Service_Weglot')) {\n-                if (weglot_get_current_language() != weglot_get_original_language()) {\n-                    $request_url_service = weglot_get_request_url_service();\n-                    $replaced_url = $request_url_service->create_url_object($url)->getForLanguage($request_url_service->get_current_language());\n-                    if ($replaced_url) {\n-                        $url = $replaced_url;\n+}\n+\n+if (function_exists('icl_register_string') && function_exists('icl_t') && !defined('POLYLANG_VERSION') && !class_exists('E2pdf_WPML_Translator')) {\n+\n+    \u002F\u002F phpcs:ignore Generic.Files.OneObjectStructurePerFile.MultipleFound\n+    class E2pdf_WPML_Translator {\n+\n+        private $helper;\n+        private $translation;\n+        private $keys = [];\n+\n+        public function __construct($translation) {\n+            $this->helper = Helper_E2pdf_Helper::instance();\n+            $this->translation = $translation;\n+        }\n+\n+        public function update_translation($string = '', $template_id = 0, $element_id = '', $type = '') {\n+            if ($string) {\n+                switch ($this->translation) {\n+                    case '1':\n+                        if ($type === 'template') {\n+                            $context = 'E2Pdf Template ' . $template_id;\n+                            do_action('wpml_register_single_string', $context, $string, $string, false, apply_filters('wpml_default_language', null));\n+                            $this->keys[] = $string;\n+                        } elseif (false !== strpos($string, '[')) {\n+                            $shortcode_tags = array(\n+                                'e2pdf-translate',\n+                            );\n+                            preg_match_all('@\\[([^\u003C>&\u002F\\[\\]\\x00-\\x20=]++)@', $string, $matches);\n+                            $tagnames = array_intersect($shortcode_tags, $matches[1]);\n+                            if (!empty($tagnames)) {\n+                                preg_match_all('\u002F' . $this->helper->load('shortcode')->get_shortcode_regex($tagnames) . '\u002F', $string, $shortcodes);\n+                                foreach ($shortcodes[0] as $key => $shortcode_value) {\n+                                    $shortcode = $this->helper->load('shortcode')->get_shortcode($shortcodes, $key);\n+                                    $atts = shortcode_parse_atts($shortcode[3]);\n+                                    if (!isset($atts['context']) && $shortcode[5]) {\n+                                        $context = 'E2Pdf Template ' . $template_id;\n+                                        $substring = $shortcode[5];\n+                                        do_action('wpml_register_single_string', $context, $substring, $substring, false, apply_filters('wpml_default_language', null));\n+                                        $this->keys[] = $substring;\n+                                    }\n+                                }\n+                            }\n+                        }\n+                        break;\n+                    case '2':\n+                        $context = 'E2Pdf Template ' . $template_id;\n+                        $name = 'e2pdf_template_' . $template_id . '_' . $element_id . '_' . $type;\n+                        do_action('wpml_register_single_string', $context, $name, $string, false, apply_filters('wpml_default_language', null));\n+                        $this->keys[] = $name;\n+                        break;\n+                    default:\n+                        break;\n+                }\n+            }\n+        }\n+\n+        public function flush($template_id = 0) {\n+            $context = 'E2Pdf Template ' . $template_id;\n+            $strings = $this->get_strings($context);\n+            if (!empty($strings) && is_array($strings)) {\n+                foreach ($strings as $name) {\n+                    if (!in_array($name, $this->keys, false) && function_exists('icl_unregister_string')) {\n+                        icl_unregister_string($context, $name);\n                     }\n                 }\n-            } else if (is_a($this->translator, 'TRP_Translate_Press')) {\n-                $url = $this->translator->get_component('url_converter')->get_url_for_language(null, $url, '');\n             }\n+            $this->keys = [];\n+        }\n+\n+        public function get_strings($context = '') {\n+            global $wpdb;\n+            return $wpdb->get_col(\n+                            $wpdb->prepare(\n+                                    'SELECT name FROM `' . $wpdb->prefix . 'icl_strings`  WHERE context = %s',\n+                                    $context\n+                            )\n+                    );\n+        }\n+\n+        public function pre_translate($string = '', $template_id = 0, $element_id = '', $type = '') {\n+            return $this->translate($string, $template_id, $element_id, $type);\n+        }\n+\n+        public function translate($string = '', $template_id = 0, $element_id = '', $type = '') {\n+            switch ($this->translation) {\n+                case '1':\n+                    if ($type === 'template') {\n+                        $context = 'E2Pdf Template ' . $template_id;\n+                        $string = icl_t($context, $string, $string);\n+                    } elseif (false !== strpos($string, '[')) {\n+                        $shortcode_tags = array(\n+                            'e2pdf-translate',\n+                        );\n+                        preg_match_all('@\\[([^\u003C>&\u002F\\[\\]\\x00-\\x20=]++)@', $string, $matches);\n+                        $tagnames = array_intersect($shortcode_tags, $matches[1]);\n+                        if (!empty($tagnames)) {\n+                            preg_match_all('\u002F' . $this->helper->load('shortcode')->get_shortcode_regex($tagnames) . '\u002F', $string, $shortcodes);\n+                            foreach ($shortcodes[0] as $key => $shortcode_value) {\n+                                $shortcode = $this->helper->load('shortcode')->get_shortcode($shortcodes, $key);\n+                                $atts = shortcode_parse_atts($shortcode[3]);\n+                                if (!isset($atts['context']) && $shortcode[5]) {\n+                                    $context = 'E2Pdf Template ' . $template_id;\n+                                    $substring = $shortcode[5];\n+                                    $string = str_replace($shortcode_value, icl_t($context, $substring, $substring), $string);\n+                                }\n+                            }\n+                        }\n+                    }\n+                    break;\n+                case '2':\n+                    $context = 'E2Pdf Template ' . $template_id;\n+                    $name = 'e2pdf_template_' . $template_id . '_' . $element_id . '_' . $type;\n+                    $string = icl_t($context, $name, $string);\n+                    break;\n+                default:\n+                    break;\n+            }\n+            return $string;\n+        }\n+\n+        public function translate_url($url = '') {\n+            return $url;\n+        }\n+\n+        public function lang($post_id = 0) {\n+            $lang = apply_filters('wpml_current_language', null);\n+            return empty($lang) ? '' : $lang;\n         }\n-        return $url;\n     }\n+\n+}\n+\n+if (defined('POLYLANG_VERSION') && function_exists('PLL') && version_compare(POLYLANG_VERSION, '3.7.0', '>=') && class_exists('PLL_WPML_Compat') && !class_exists('E2pdf_Polylang_Translator')) {\n+\n+    \u002F\u002F phpcs:ignore Generic.Files.OneObjectStructurePerFile.MultipleFound\n+    class E2pdf_Polylang_Translator {\n+\n+        private $helper;\n+        private $translation;\n+        private $wpml;\n+        private $keys = [];\n+\n+        public function __construct($translation) {\n+            $this->helper = Helper_E2pdf_Helper::instance();\n+            $this->translation = $translation;\n+            $field_types = ['select', 'checkbox', 'radio', 'button_group'];\n+            foreach ($field_types as $type) {\n+                add_filter('acf\u002Fformat_value\u002Ftype=' . $type, [$this, 'filter_acf_format_value'], 10, 2);\n+            }\n+            $this->wpml = PLL_WPML_Compat::instance();\n+        }\n+\n+        public function update_translation($string = '', $template_id = 0, $element_id = '', $type = '') {\n+            if ($string) {\n+                switch ($this->translation) {\n+                    case '1':\n+                        if ($type === 'template') {\n+                            $context = 'E2Pdf Template ' . $template_id;\n+                            if (method_exists($this->wpml, 'register_string')) {\n+                                $this->wpml->register_string($context, $string, $string);\n+                            }\n+                            $this->keys[] = $string;\n+                        } elseif (false !== strpos($string, '[')) {\n+                            $shortcode_tags = array(\n+                                'e2pdf-translate',\n+                            );\n+                            preg_match_all('@\\[([^\u003C>&\u002F\\[\\]\\x00-\\x20=]++)@', $string, $matches);\n+                            $tagnames = array_intersect($shortcode_tags, $matches[1]);\n+                            if (!empty($tagnames)) {\n+                                preg_match_all('\u002F' . $this->helper->load('shortcode')->get_shortcode_regex($tagnames) . '\u002F', $string, $shortcodes);\n+                                foreach ($shortcodes[0] as $key => $shortcode_value) {\n+                                    $shortcode = $this->helper->load('shortcode')->get_shortcode($shortcodes, $key);\n+                                    $atts = shortcode_parse_atts($shortcode[3]);\n+                                    if (!isset($atts['context']) && $shortcode[5]) {\n+                                        $context = 'E2Pdf Template ' . $template_id;\n+                                        $substring = $shortcode[5];\n+                                        if (method_exists($this->wpml, 'register_string')) {\n+                                            $this->wpml->register_string($context, $substring, $substring);\n+                                        }\n+                                        $this->keys[] = $substring;\n+                                    }\n+                                }\n+                            }\n+                        }\n+                        break;\n+                    case '2':\n+                        $context = 'E2Pdf Template ' . $template_id;\n+                        $name = 'e2pdf_template_' . $template_id . '_' . $element_id . '_' . $type;\n+                        if (method_exists($this->wpml, 'register_string')) {\n+                            $this->wpml->register_string($context, $name, $string);\n+                        }\n+                        $this->keys[] = $name;\n+                        break;\n+                    default:\n+                        break;\n+                }\n+            }\n+        }\n+\n+        public function flush($template_id = 0) {\n+            $context = 'E2Pdf Template ' . $template_id;\n+            $strings = $this->get_strings($context);\n+            if (!empty($strings) && is_array($strings) && method_exists($this->wpml, 'unregister_string')) {\n+                foreach ($strings as $name) {\n+                    if (!in_array($name, $this->keys, false)) {\n+                        $this->wpml->unregister_string($context, $name);\n+                    }\n+                }\n+            }\n+            $this->keys = [];\n+        }\n+\n+        public function get_strings($context = '') {\n+            $strings = array();\n+            if (method_exists($this->wpml, 'get_strings')) {\n+                $all_strings = $this->wpml->get_strings(array());\n+                foreach ($all_strings as $string) {\n+                    if ($string['context'] == $context) {\n+                        $strings[] = $string['name'];\n+                    }\n+                }\n+            }\n+            return $strings;\n+        }\n+\n+        public function filter_acf_format_value($string = '', $post_id = 0) {\n+            if (apply_filters('e2pdf_pdf_render', false)) {\n+                $string = $this->translate($string, $post_id);\n+            }\n+            return $string;\n+        }\n+\n+        public function pre_translate($string = '', $template_id = 0, $element_id = '', $type = '') {\n+            switch ($this->translation) {\n+                case '1':\n+                    if (!empty($string) && is_string($string)) {\n+                        if ($type === 'template') {\n+                            $string = $this->translate($string);\n+                        } elseif (false !== strpos($string, '[')) {\n+                            $shortcode_tags = array(\n+                                'e2pdf-translate',\n+                            );\n+                            preg_match_all('@\\[([^\u003C>&\u002F\\[\\]\\x00-\\x20=]++)@', $string, $matches);\n+                            $tagnames = array_intersect($shortcode_tags, $matches[1]);\n+                            if (!empty($tagnames)) {\n+                                preg_match_all('\u002F' . $this->helper->load('shortcode')->get_shortcode_regex($tagnames) . '\u002F', $string, $shortcodes);\n+                                foreach ($shortcodes[0] as $key => $shortcode_value) {\n+                                    $shortcode = $this->helper->load('shortcode')->get_shortcode($shortcodes, $key);\n+                                    $atts = shortcode_parse_atts($shortcode[3]);\n+                                    if (!isset($atts['context']) && $shortcode[5]) {\n+                                        $context = 'E2Pdf Template ' . $template_id;\n+                                        $substring = $shortcode[5];\n+                                        $string = str_replace($shortcode_value, $this->translate($substring), $string);\n+                                    }\n+                                }\n+                            }\n+                        }\n+                    }\n+                    break;\n+                case '2':\n+                    $context = 'E2Pdf Template ' . $template_id;\n+                    $name = 'e2pdf_template_' . $template_id . '_' . $element_id . '_' . $type;\n+                    if (empty($string) && method_exists($this->wpml, 'get_string_by_context_and_name')) {\n+                        $string = $this->wpml->get_string_by_context_and_name($context, $name);\n+                    }\n+                    $string = $this->translate($string);\n+                    break;\n+                default:\n+                    break;\n+            }\n+            return $string;\n+        }\n+\n+        public function translate($string = '', $post_id = 0) {\n+            if ($string && function_exists('pll__') && function_exists('pll_translate_string')) {\n+                $lang = $this->current_lang($post_id);\n+                return empty($lang) ? pll__($string) : pll_translate_string($string, $lang);\n+            }\n+            return $string;\n+        }\n+\n+        public function translate_url($url = '') {\n+            return $url;\n+        }\n+\n+        public function current_lang($post_id = 0) {\n+            $post_id = (int) $post_id;\n+            $lang = $post_id && function_exists('pll_get_post_language') ? pll_get_post_language($post_id) : null;\n+            if (empty($lang)) {\n+                $lang = PLL()->curlang;\n+            }\n+            return $lang;\n+        }\n+\n+        public function lang($post_id = 0) {\n+            $lang = $this->current_lang($post_id);\n+            return isset($lang->locale) ? $lang->locale : '';\n+        }\n+    }\n+\n }\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-view.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-view.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-view.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-view.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -301,7 +301,7 @@\n         switch ($format) {\n             case 'pdf':\n                 if ($content_length) {\n-                    header('Content-Length: ' . strlen(base64_decode($file)));\n+                    header('Content-Length: ' . strlen($file));\n                 }\n                 if (!$disposition) {\n                     $disposition = 'inline';\n@@ -318,7 +318,7 @@\n                 break;\n             case 'jpg':\n                 if ($content_length) {\n-                    header('Content-Length: ' . strlen(base64_decode($file)));\n+                    header('Content-Length: ' . strlen($file));\n                 }\n                 if (!$disposition) {\n                     $disposition = 'attachment';\n@@ -341,7 +341,7 @@\n                         }\n                         header('Content-Length: ' . filesize(trim($file)));\n                     } else {\n-                        header('Content-Length: ' . strlen(base64_decode($file)));\n+                        header('Content-Length: ' . strlen($file));\n                     }\n                 }\n                 if (!$disposition) {\n@@ -398,7 +398,6 @@\n                 }\n                 header('Content-Type: text\u002Fhtml');\n                 break;\n-\n             case 'php':\n                 if (!$disposition) {\n                     $disposition = 'attachment';\n@@ -421,7 +420,7 @@\n             }\n             fclose($handle);\n         } else {\n-            echo base64_decode($file);\n+            echo $file;\n         }\n     }\n \ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-xml.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-xml.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fhelper\u002Fe2pdf-xml.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fhelper\u002Fe2pdf-xml.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -2,7 +2,7 @@\n \n \u002F**\n  * File: \u002Fhelper\u002Fe2pdf-xml.php\n- * \n+ *\n  * @package  E2Pdf\n  * @license  GPLv3\n  * @link     https:\u002F\u002Fe2pdf.com\n@@ -33,7 +33,7 @@\n     \u002F\u002F get xml\n     public function get_xml() {\n         if ($this->get('xml')) {\n-            return base64_encode($this->get('xml')->asXML());\n+            return $this->get('xml')->asXML();\n         }\n         return '';\n     }\n@@ -84,4 +84,114 @@\n \n         return $element;\n     }\n+\n+    \u002F\u002F parse xml page\n+    public function parse_xml_page($page_node, &$pages, $pdf_images_dir, $extension) {\n+\n+        $page_number = (string) $page_node['number'];\n+        $pages[$page_number] = [];\n+        $pages[$page_number]['page_id'] = $page_number;\n+\n+        if (isset($page_node->properties)) {\n+            $pages[$page_number]['properties'] = [];\n+            foreach ($page_node->properties->children() as $prop_name => $prop_value) {\n+                $prop_string = (string) $prop_value;\n+                if ($prop_name === 'background' && !empty($prop_string)) {\n+                    file_put_contents($pdf_images_dir . $page_number . '.png', base64_decode($prop_string), LOCK_EX);\n+                    do_action('e2pdf_pdf_upload_background_save_after');\n+                } else {\n+                    $pages[$page_number]['properties'][$prop_name] = $prop_string;\n+                }\n+            }\n+        }\n+        if (isset($page_node->elements)) {\n+            $pages[$page_number]['elements'] = [];\n+            $element_index = 0;\n+            foreach ($page_node->elements->element as $element_node) {\n+                $pages[$page_number]['elements'][$element_index] = [];\n+                foreach ($element_node->children() as $elem_name => $elem_value) {\n+                    if ($elem_name == 'properties') {\n+                        $pages[$page_number]['elements'][$element_index]['properties'] = [];\n+                        foreach ($elem_value->children() as $inner_prop_name => $inner_prop_value) {\n+                            $pages[$page_number]['elements'][$element_index]['properties'][$inner_prop_name] = (string) $inner_prop_value;\n+                        }\n+                    } else {\n+                        $pages[$page_number]['elements'][$element_index][$elem_name] = (string) $elem_value;\n+                    }\n+                }\n+                $element = $pages[$page_number]['elements'][$element_index];\n+                if ($element['type'] === 'e2pdf-image' && isset($element['base64']) && $element['base64']) {\n+                    $image = base64_decode($element['base64']);\n+                    $file_name = basename($element['value']);\n+                    if (!$file_name) {\n+                        $ext = $this->helper->load('image')->get_extension($image);\n+                        if ($ext) {\n+                            $file_name = md5(mktime()) . '.' . $ext;\n+                        }\n+                    }\n+                    if ($file_name) {\n+                        $upload_file = wp_upload_bits($file_name, null, $image);\n+                        if (!$upload_file['error']) {\n+                            $wp_filetype = wp_check_filetype($file_name, null);\n+                            $attachment = array(\n+                                'post_mime_type' => $wp_filetype['type'],\n+                                'post_parent' => 0,\n+                                'post_title' => preg_replace('\u002F\\.[^.]+$\u002F', '', $file_name),\n+                                'post_content' => '',\n+                                'post_status' => 'inherit',\n+                            );\n+                            $attachment_id = wp_insert_attachment($attachment, $upload_file['file'], 0);\n+                            if (!is_wp_error($attachment_id)) {\n+                                require_once ABSPATH . 'wp-admin\u002Fincludes\u002Fimage.php';\n+                                $attachment_data = wp_generate_attachment_metadata($attachment_id, $upload_file['file']);\n+                                wp_update_attachment_metadata($attachment_id, $attachment_data);\n+                                $pages[$page_number]['elements'][$element_index]['value'] = $upload_file['url'];\n+                            }\n+                        }\n+                        unset($pages[$page_number]['elements'][$element_index]['base64']);\n+                    } else {\n+                        unset($pages[$page_number]['elements'][$element_index]);\n+                    }\n+                } elseif (isset($element['name']) && $element['name']) {\n+                    $el_value = $extension->auto_map($element['name']);\n+                    if ($el_value !== false) {\n+                        $pages[$page_number]['elements'][$element_index]['value'] = $el_value;\n+                    }\n+                }\n+                $element_index++;\n+            }\n+        }\n+    }\n+\n+    \u002F\u002F parse xml font\n+    public function parse_xml_font($font) {\n+\n+        $model_e2pdf_font = new Model_E2pdf_Font();\n+        $fonts = $model_e2pdf_font->get_fonts();\n+        $fonts_dir = $this->helper->get('fonts_dir');\n+\n+        $font_title = (string) $font->title;\n+        $font_name = (string) $font->name;\n+        $font_value = (string) $font->value;\n+\n+        $exist = array_search($font_title, $fonts, true);\n+        if ($exist === false) {\n+            if (!file_exists($fonts_dir . $font_name)) {\n+                $f_name = $font_name;\n+            } else {\n+                $i = 0;\n+                do {\n+                    $f_name = $i . '_' . $font_name;\n+                    $i++;\n+                } while (file_exists($fonts_dir . $f_name));\n+            }\n+            $font_ext = strtolower(pathinfo($f_name, PATHINFO_EXTENSION));\n+            if (in_array($font_ext, $model_e2pdf_font->get_allowed_extensions())) {\n+                $font_data = base64_decode($font_value);\n+                if ($font_data !== false) {\n+                    file_put_contents($fonts_dir . $f_name, $font_data, LOCK_EX);\n+                }\n+            }\n+        }\n+    }\n }\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fmodel\u002Fe2pdf-action.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fmodel\u002Fe2pdf-action.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fmodel\u002Fe2pdf-action.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fmodel\u002Fe2pdf-action.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -23,10 +23,9 @@\n         if (!$page || !$this->extension) {\n             return $page;\n         }\n-\n         if (isset($page['actions']) && !empty($page['actions'])) {\n-            foreach ($page['actions'] as $action) {\n-                $page = $this->process_action($page, $action);\n+            foreach ($page['actions'] as $action_key => $action) {\n+                $page = $this->process_action($page, $action, $action_key);\n             }\n         }\n \n@@ -35,8 +34,8 @@\n             if (!empty($page['elements'])) {\n                 foreach ($page['elements'] as $el_key => $el_value) {\n                     if (isset($el_value['actions']) && !empty($el_value['actions'])) {\n-                        foreach ($el_value['actions'] as $action) {\n-                            $el_value = $this->process_action($el_value, $action);\n+                        foreach ($el_value['actions'] as $action_key => $action) {\n+                            $el_value = $this->process_action($el_value, $action, $action_key);\n                         }\n                         $page['elements'][$el_key] = $el_value;\n                         if ((isset($el_value['hidden']) && $el_value['hidden']) || ($el_value['page_id'] != $page['page_id'])) {\n@@ -46,14 +45,35 @@\n                 }\n             }\n         }\n-\n         return $page;\n     }\n \n     public function process_global_actions($actions = array()) {\n         if (!empty($actions) && $this->extension) {\n             foreach ($actions as $action_key => $action) {\n-                $actions[$action_key] = $this->process_action($action, $action);\n+                if (isset($action['action'])) {\n+                    if ($action['action'] !== 'redirect_access_by_url') {\n+                        \u002F\u002F Backward Compatibility\n+                        if (!isset($action['property'])) {\n+                            if (false !== strpos($action['action'], 'restrict_')) {\n+                                $action['property'] = 'disable';\n+                            } else {\n+                                $action['property'] = 'enable';\n+                            }\n+                            $action['action'] = str_replace(\n+                                    [\n+                                        'restrict_process_shortcode_',\n+                                        'process_shortcode_',\n+                                        'restrict_process_',\n+                                        'process_',\n+                                        'restrict_',\n+                                    ], '', $action['action']\n+                            );\n+                        }\n+                        $action['action'] = $action['property'] . '_' . $action['action'];\n+                    }\n+                }\n+                $actions[$action_key] = $this->process_action($action, $action, $action_key);\n             }\n         }\n         return $actions;\n@@ -65,9 +85,9 @@\n             if (!empty($page['elements'])) {\n                 foreach ($page['elements'] as $el_key => $el_value) {\n                     if (isset($el_value['actions']) && !empty($el_value['actions'])) {\n-                        foreach ($el_value['actions'] as $action) {\n+                        foreach ($el_value['actions'] as $action_key => $action) {\n                             if ($action['action'] == 'change' && isset($action['property']) && $action['property'] == 'page_id') {\n-                                $el_value = $this->process_action($el_value, $action);\n+                                $el_value = $this->process_action($el_value, $action, $action_key);\n                             }\n                         }\n                         if ($el_value['page_id'] != $page['page_id']) {\n@@ -80,8 +100,7 @@\n         return $elements;\n     }\n \n-    private function process_action($element, $action) {\n-\n+    private function process_action($element, $action, $action_key) {\n         $apply = false;\n         if (isset($action['conditions']) && !empty($action['conditions'])) {\n             foreach ($action['conditions'] as $condition) {\n@@ -93,22 +112,18 @@\n                 }\n             }\n         }\n-\n         if ($apply) {\n-            $element = $this->apply_action($element, $action);\n+            $element = $this->apply_action($element, $action, $action_key);\n         } else {\n             $element = $this->apply_else_action($element, $action);\n         }\n-\n         return $element;\n     }\n \n     private function process_condition($condition) {\n-\n         $result = false;\n         $if = $this->extension->render($condition['if']);\n         $value = $this->extension->render($condition['value']);\n-\n         switch ($condition['condition']) {\n             case '=':\n                 $result = $if == $value ? true : false;\n@@ -185,11 +200,10 @@\n                 $result = is_array($unserialized) && array_key_exists($if, $unserialized) ? false : true;\n                 break;\n         }\n-\n         return $result;\n     }\n \n-    private function apply_action($element, $action) {\n+    private function apply_action($element, $action, $action_key) {\n         if ($action['action'] == 'hide') {\n             $element['hidden'] = true;\n         } elseif ($action['action'] == 'show') {\n@@ -201,16 +215,14 @@\n                 $element[$action['property']] = $change;\n             }\n         } elseif ($action['action'] == 'change' && $action['property']) {\n-\n             $number_properties = array(\n                 'width', 'height', 'left', 'top',\n             );\n-\n             $not_properties = array(\n                 'top', 'left', 'width', 'height', 'value', 'page_id',\n             );\n-\n             if ($action['property'] == 'value') {\n+                $action['change'] = $this->helper->load('translator')->pre_translate($action['change'], $element['template_id'], $element['element_id'], 'value_action_' . $action_key . '_change');\n                 if (isset($action['format']) && $action['format'] != 'replace') {\n                     if ($action['format'] == 'insert_before') {\n                         $value = isset($element[$action['property']]) ? $element[$action['property']] : '';\n@@ -223,6 +235,23 @@\n                         $replace = isset($action['change']) ? $action['change'] : '';\n                         if ($search) {\n                             $value = isset($element[$action['property']]) ? $element[$action['property']] : '';\n+                            $pre_replace = isset($action['pre_replace']) ? $action['pre_replace'] : '';\n+                            if ($pre_replace == 'render') {\n+                                $type = isset($element['type']) ? $element['type'] : '';\n+                                if (!isset($element['rendered'])) {\n+                                    if (in_array($type, array('e2pdf-html', 'e2pdf-page-number'), true)) {\n+                                        $value = $this->helper->load('filter')->filter_html_tags($this->extension->render($value, $element));\n+                                    } else {\n+                                        $value = $this->extension->render($value, $element);\n+                                    }\n+                                }\n+                                if (in_array($type, array('e2pdf-html', 'e2pdf-page-number'), true)) {\n+                                    $replace = $this->helper->load('filter')->filter_html_tags($this->extension->render($replace, $element));\n+                                } else {\n+                                    $replace = $this->extension->render($replace, $element);\n+                                }\n+                                $element['rendered'] = true;\n+                            }\n                             if ($value) {\n                                 $change = str_replace($search, $replace, $value);\n                             }\n@@ -234,17 +263,14 @@\n             } else {\n                 $change = $this->extension->render($action['change']);\n             }\n-\n             if ((substr($change, 0, 1) === '+' || substr($change, 0, 1) === '-') && in_array($action['property'], $number_properties, true)) {\n                 if (isset($element['element_id'])) {\n                     $value = isset($element[$action['property']]) ? $element[$action['property']] : 0;\n                 } else {\n                     $value = isset($element['properties'][$action['property']]) ? $element['properties'][$action['property']] : 0;\n                 }\n-\n                 $change = $value + floatval($change);\n             }\n-\n             if (in_array($action['property'], $not_properties, true) && isset($element['element_id'])) {\n                 $element[$action['property']] = $change;\n             } else {\n@@ -253,7 +279,6 @@\n         } elseif (isset($element['action'])) {\n             $element['success'] = true;\n         }\n-\n         return $element;\n     }\n \ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fmodel\u002Fe2pdf-api.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fmodel\u002Fe2pdf-api.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fmodel\u002Fe2pdf-api.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fmodel\u002Fe2pdf-api.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -29,11 +29,12 @@\n                 return [];\n             }\n \n+            $api_protocol = get_option('e2pdf_api_protocol', '0');\n             $api_processor = get_option('e2pdf_debug', '0') && get_option('e2pdf_processor', '0') ? get_option('e2pdf_processor', '0') : '0';\n             if ($api_processor == '2') {\n                 $api_version = '1.16.19';\n             } else {\n-                $api_version = '1.27.20';\n+                $api_version = '1.32.00';\n             }\n \n             $data = [\n@@ -41,6 +42,7 @@\n                 'api_license_key' => $this->get_license(),\n                 'api_processor' => apply_filters('e2pdf_api_processor', $api_processor),\n                 'api_version' => apply_filters('e2pdf_api_version', $api_version),\n+                'api_protocol' => $api_protocol,\n             ];\n             if (!$api_server) {\n                 $api_server = $this->get_api_server();\n@@ -73,14 +75,29 @@\n             if (defined('E2PDF_API_PROXYAUTH')) {\n                 curl_setopt($ch, CURLOPT_PROXYAUTH, E2PDF_API_PROXYAUTH);\n             }\n+            if (class_exists('CURLFile')) {\n+                if (defined('CURLOPT_SAFE_UPLOAD')) {\n+                    curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);\n+                }\n+            } else {\n+                if (defined('CURLOPT_SAFE_UPLOAD')) {\n+                    curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);\n+                }\n+            }\n+\n             if (!empty($this->api->data)) {\n                 $data = array_merge($data, $this->api->data);\n             }\n-            curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));\n+            if ($this->api->action === 'template\u002Fupload2') {\n+                curl_setopt($ch, CURLOPT_POSTFIELDS, $data);\n+            } else {\n+                curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));\n+            }\n \n             $json = curl_exec($ch);\n             $curl_errno = curl_errno($ch);\n             $curl_error = curl_error($ch);\n+            $curl_type = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);\n             $curl_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);\n             curl_close($ch);\n             \u002F\u002F phpcs:enable\n@@ -98,8 +115,17 @@\n                     return $this->request($key, $this->get_api_server($api_server));\n                 }\n             } else {\n-                $result = json_decode($json, true);\n-                $response = $result['response'];\n+                if ($api_protocol == '1' && strpos($curl_type, 'application\u002Foctet-stream') !== false) {\n+                    $response['file'] = $json;\n+                } else {\n+                    $result = json_decode($json, true);\n+                    $response = isset($result['response']) ? $result['response'] : null;\n+                    if (!empty($response['file'])) {\n+                        \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode\n+                        $response['file'] = base64_decode($response['file']);\n+                    }\n+                }\n+\n                 if (($this->api->action === 'common\u002Factivate' || $this->api->action === 'license\u002Fupdate' || $this->api->action === 'license\u002Frequest') && !empty($response['license_key'])) {\n                     update_option('e2pdf_license', $response['license_key']);\n                 }\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fmodel\u002Fe2pdf-extension.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fmodel\u002Fe2pdf-extension.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fmodel\u002Fe2pdf-extension.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fmodel\u002Fe2pdf-extension.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -16,7 +16,7 @@\n     private $extension;\n \n     public function load($name) {\n-        if (in_array($name, get_option('e2pdf_disabled_extensions', array()), true)) {\n+        if (in_array($name, get_option('e2pdf_disabled_extensions', []), true)) {\n             return false;\n         }\n         $class = 'Extension_E2pdf_' . ucfirst($name);\n@@ -58,6 +58,29 @@\n         return false;\n     }\n \n+    public function patch($key = false, $value = false, $entry = null) {\n+        if ($this->extension()) {\n+            switch ($key) {\n+                case 'args':\n+                    if (!empty($value)) {\n+                        $this->extension()->set($key, $value);\n+                        if ($entry) {\n+                            $entry->set_data($key, $this->extension()->get($key));\n+                        }\n+                    }\n+                    break;\n+                default:\n+                    if ($value !== false) {\n+                        $this->extension()->set($key, $value);\n+                        if ($entry) {\n+                            $entry->set_data($key, $this->extension()->get($key));\n+                        }\n+                    }\n+                    break;\n+            }\n+        }\n+    }\n+\n     public function get($attr) {\n         if ($this->extension() && method_exists($this->extension(), 'get')) {\n             return $this->extension()->get($attr);\n@@ -72,7 +95,7 @@\n         return false;\n     }\n \n-    public function import($xml, $options = array()) {\n+    public function import($xml, $options = []) {\n         if ($this->extension() && method_exists($this->extension(), 'import')) {\n             return $this->extension()->import($xml, $options);\n         }\n@@ -116,7 +139,7 @@\n     }\n \n     \u002F\u002F render\n-    public function render($value, $field = array(), $convert_shortcodes = true, $raw = false) {\n+    public function render($value, $field = [], $convert_shortcodes = true, $raw = false) {\n         if ($this->extension() && method_exists($this->extension(), 'render')) {\n             $this->pre_render();\n             $content = $this->extension()->render($value, $field, $convert_shortcodes, $raw);\n@@ -143,39 +166,41 @@\n     }\n \n     public function pre_render() {\n-        add_filter('e2pdf_pdf_render', array($this->helper, '__return_true'), 999);\n+        add_filter('e2pdf_pdf_render', [$this->helper, '__return_true'], 999);\n         if (class_exists('ACF')) {\n             if (apply_filters('e2pdf_acf_enable_shortcodes', true)) {\n-                add_filter('acf\u002Fsettings\u002Fenable_shortcode', array($this->helper, '__return_true'), 999);\n+                add_filter('acf\u002Fsettings\u002Fenable_shortcode', [$this->helper, '__return_true'], 999);\n             }\n             if (apply_filters('e2pdf_acf_allow_in_block_themes_outside_content', true)) {\n-                add_filter('acf\u002Fshortcode\u002Fallow_in_block_themes_outside_content', array($this->helper, '__return_true'), 999);\n+                add_filter('acf\u002Fshortcode\u002Fallow_in_block_themes_outside_content', [$this->helper, '__return_true'], 999);\n             }\n             if (apply_filters('e2pdf_acf_allow_in_bindings', false)) {\n-                add_filter('acf\u002Fload_field', array($this, 'filter_acf_allow_in_bindings'), 999);\n+                add_filter('acf\u002Fload_field', [$this, 'filter_acf_allow_in_bindings'], 999);\n             }\n             if (!apply_filters('e2pdf_prevent_access_to_fields_on_non_public_posts', true)) {\n-                add_filter('acf\u002Fshortcode\u002Fprevent_access_to_fields_on_non_public_posts', array($this->helper, '__return_false'), 999);\n+                add_filter('acf\u002Fshortcode\u002Fprevent_access_to_fields_on_non_public_posts', [$this->helper, '__return_false'], 999);\n             }\n         }\n+        add_filter('jet-engine\u002Flistings\u002Fdata\u002Fdefault-object', [$this, 'filter_jet_listings_data_default_object'], 999);\n     }\n \n     public function after_render() {\n+        remove_filter('jet-engine\u002Flistings\u002Fdata\u002Fdefault-object', [$this, 'filter_jet_listings_data_default_object'], 999);\n         if (class_exists('ACF')) {\n             if (apply_filters('e2pdf_acf_enable_shortcodes', true)) {\n-                remove_filter('acf\u002Fsettings\u002Fenable_shortcode', array($this->helper, '__return_true'), 999);\n+                remove_filter('acf\u002Fsettings\u002Fenable_shortcode', [$this->helper, '__return_true'], 999);\n             }\n             if (apply_filters('e2pdf_acf_allow_in_block_themes_outside_content', true)) {\n-                remove_filter('acf\u002Fshortcode\u002Fallow_in_block_themes_outside_content', array($this->helper, '__return_true'), 999);\n+                remove_filter('acf\u002Fshortcode\u002Fallow_in_block_themes_outside_content', [$this->helper, '__return_true'], 999);\n             }\n             if (apply_filters('e2pdf_acf_allow_in_bindings', false)) {\n-                remove_filter('acf\u002Fload_field', array($this, 'filter_acf_allow_in_bindings'), 999);\n+                remove_filter('acf\u002Fload_field', [$this, 'filter_acf_allow_in_bindings'], 999);\n             }\n             if (!apply_filters('e2pdf_prevent_access_to_fields_on_non_public_posts', true)) {\n-                remove_filter('acf\u002Fshortcode\u002Fprevent_access_to_fields_on_non_public_posts', array($this->helper, '__return_false'), 999);\n+                remove_filter('acf\u002Fshortcode\u002Fprevent_access_to_fields_on_non_public_posts', [$this->helper, '__return_false'], 999);\n             }\n         }\n-        remove_filter('e2pdf_pdf_render', array($this->helper, '__return_true'), 999);\n+        remove_filter('e2pdf_pdf_render', [$this->helper, '__return_true'], 999);\n     }\n \n     \u002F\u002F convert shortcodes\n@@ -212,7 +237,7 @@\n \n     \u002F\u002F extensions\n     public function extensions($load = true) {\n-        $list = array();\n+        $list = [];\n         $extentions_path = $this->helper->get('plugin_dir') . 'classes\u002Fextension\u002F*';\n         foreach (array_filter(glob($extentions_path), 'is_file') as $file) {\n             $info = pathinfo($file);\n@@ -283,7 +308,7 @@\n         return false;\n     }\n \n-    public function auto_form($template, $data = array()) {\n+    public function auto_form($template, $data = []) {\n         if ($this->extension() && method_exists($this->extension(), 'auto_form')) {\n             return $this->extension()->auto_form($template, $data);\n         }\n@@ -305,7 +330,7 @@\n                 if (!$this->extension()->get('item1') && !$this->extension()->get('item2')) {\n                     return false;\n                 }\n-                $data = array();\n+                $data = [];\n                 if ($this->extension()->get('item1')) {\n                     $this->extension()->set('item', $this->extension()->get('item1'));\n                     $data = $this->extension()->auto();\n@@ -368,4 +393,14 @@\n         }\n         return $field;\n     }\n+\n+    \u002F\u002F filter jet engine default object\n+    public function filter_jet_listings_data_default_object($default_object) {\n+        if ($this->extension instanceof Extension_E2pdf_Wordpress || $this->extension instanceof Extension_E2pdf_Woocommerce) {\n+            if ($this->get('item') != '-3' && $this->get('dataset')) {\n+                $default_object = get_post($this->get('dataset'));\n+            }\n+        }\n+        return $default_object;\n+    }\n }\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fmodel\u002Fe2pdf-font.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fmodel\u002Fe2pdf-font.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fmodel\u002Fe2pdf-font.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fmodel\u002Fe2pdf-font.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -15,6 +15,7 @@\n \n     protected $text;\n     protected $ntOffset;\n+    protected $regex = '\u002Ffont-family:\\s*[\"\\']?(.*?)[\"\\']?;\u002F';\n \n     public function get_font_info($font = false, $key = false, $font_path = false) {\n \n@@ -134,9 +135,9 @@\n     }\n \n     public function get_element_fonts($el_value, $all_fonts) {\n-        $fonts = array();\n+        $fonts = [];\n         if (($el_value['type'] == 'e2pdf-html' || $el_value['type'] == 'e2pdf-page-number') && isset($el_value['value']) && $el_value['value']) {\n-            preg_match_all('\u002Ffont-family:[\\s]+?[\"]?(.*?)[\"]?;\u002F', htmlspecialchars_decode($el_value['value']), $matches);\n+            preg_match_all($this->regex, htmlspecialchars_decode($el_value['value']), $matches);\n             if (isset($matches[1]) && !empty($matches[1])) {\n                 foreach ($matches[1] as $font_key => $font_value) {\n                     $exist = array_search($font_value, $fonts, true);\n@@ -150,7 +151,7 @@\n             }\n \n             if (isset($el_value['properties']['css']) && $el_value['properties']['css']) {\n-                preg_match_all('\u002Ffont-family:[\\s]+?[\"]?(.*?)[\"]?;\u002F', htmlspecialchars_decode($el_value['properties']['css']), $matches);\n+                preg_match_all($this->regex, htmlspecialchars_decode($el_value['properties']['css']), $matches);\n                 if (isset($matches[1]) && !empty($matches[1])) {\n                     foreach ($matches[1] as $font_key => $font_value) {\n                         $exist = array_search($font_value, $fonts, true);\n@@ -191,7 +192,7 @@\n                 }\n \n                 if (($el_value['type'] == 'e2pdf-html' || $el_value['type'] == 'e2pdf-page-number') && isset($action['property']) && $action['property'] == 'value' && isset($action['change']) && $action['change']) {\n-                    preg_match_all('\u002Ffont-family:[\\s]+?[\"]?(.*?)[\"]?;\u002F', htmlspecialchars_decode($action['change']), $matches);\n+                    preg_match_all($this->regex, htmlspecialchars_decode($action['change']), $matches);\n                     if (isset($matches[1]) && !empty($matches[1])) {\n                         foreach ($matches[1] as $font_key => $font_value) {\n                             $exist = array_search($font_value, $fonts, true);\n@@ -206,7 +207,7 @@\n                 }\n \n                 if (($el_value['type'] == 'e2pdf-html' || $el_value['type'] == 'e2pdf-page-number') && isset($action['property']) && $action['property'] == 'css' && isset($action['change']) && $action['change']) {\n-                    preg_match_all('\u002Ffont-family:[\\s]+?[\"]?(.*?)[\"]?;\u002F', htmlspecialchars_decode($action['change']), $matches);\n+                    preg_match_all($this->regex, htmlspecialchars_decode($action['change']), $matches);\n                     if (isset($matches[1]) && !empty($matches[1])) {\n                         foreach ($matches[1] as $font_key => $font_value) {\n                             $exist = array_search($font_value, $fonts, true);\n@@ -220,6 +221,24 @@\n                     }\n                 }\n             }\n+        }\n+\n+        return $fonts;\n+    }\n+\n+    public function get_css_fonts($css, $all_fonts) {\n+        $fonts = [];\n+        preg_match_all($this->regex, htmlspecialchars_decode($css), $matches);\n+        if (isset($matches[1]) && !empty($matches[1])) {\n+            foreach ($matches[1] as $font_key => $font_value) {\n+                $exist = array_search($font_value, $fonts, true);\n+                if (!$exist) {\n+                    $c_font = array_search($font_value, $all_fonts, true);\n+                    if ($c_font) {\n+                        $fonts[$c_font] = $font_value;\n+                    }\n+                }\n+            }\n         }\n \n         return $fonts;\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fmodel: e2pdf-gdrive.php\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fmodel\u002Fe2pdf-license.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fmodel\u002Fe2pdf-license.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fmodel\u002Fe2pdf-license.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fmodel\u002Fe2pdf-license.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -32,9 +32,9 @@\n     public function load_license() {\n         $model_e2pdf_api = new Model_E2pdf_Api();\n         $model_e2pdf_api->set(\n-                array(\n+                [\n                     'action' => 'license\u002Finfo',\n-                )\n+                ]\n         );\n         $license = $model_e2pdf_api->request();\n         $this->license = $license;\n@@ -49,18 +49,18 @@\n     public function load_templates() {\n         global $wpdb;\n \n-        $condition = array(\n-            'activated' => array(\n+        $condition = [\n+            'activated' => [\n                 'condition' => '=',\n                 'value' => '1',\n                 'type' => '%d',\n-            ),\n-            'uid' => array(\n+            ],\n+            'uid' => [\n                 'condition' => '=',\n                 'value' => '',\n                 'type' => '%s',\n-            ),\n-        );\n+            ],\n+        ];\n         $where = $this->helper->load('db')->prepare_where($condition);\n         $model_e2pdf_template = new Model_E2pdf_Template();\n \ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fmodel\u002Fe2pdf-loader.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fmodel\u002Fe2pdf-loader.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fmodel\u002Fe2pdf-loader.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fmodel\u002Fe2pdf-loader.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -13,14 +13,14 @@\n \n class Model_E2pdf_Loader extends Model_E2pdf_Model {\n \n-    private $e2pdf_admin_pages = array(\n+    private $e2pdf_admin_pages = [\n         'toplevel_page_e2pdf',\n         'e2pdf_page_e2pdf-templates',\n         'e2pdf_page_e2pdf-integrations',\n         'e2pdf_page_e2pdf-settings',\n         'e2pdf_page_e2pdf-license',\n         'e2pdf_page_e2pdf-debug',\n-    );\n+    ];\n \n     \u002F\u002F load\n     public function load() {\n@@ -41,56 +41,57 @@\n     \u002F\u002F load ajax\n     public function load_ajax() {\n         if (is_admin()) {\n-            add_action('wp_ajax_e2pdf_save_form', array(new Controller_E2pdf_Templates(), 'ajax_save_form'));\n-            add_action('wp_ajax_e2pdf_auto', array(new Controller_E2pdf_Templates(), 'ajax_auto'));\n-            add_action('wp_ajax_e2pdf_upload', array(new Controller_E2pdf_Templates(), 'ajax_upload'));\n-            add_action('wp_ajax_e2pdf_reupload', array(new Controller_E2pdf_Templates(), 'ajax_reupload'));\n-            add_action('wp_ajax_e2pdf_extension', array(new Controller_E2pdf_Templates(), 'ajax_extension'));\n-            add_action('wp_ajax_e2pdf_activate_template', array(new Controller_E2pdf_Templates(), 'ajax_activate_template'));\n-            add_action('wp_ajax_e2pdf_deactivate_template', array(new Controller_E2pdf_Templates(), 'ajax_deactivate_template'));\n-            add_action('wp_ajax_e2pdf_visual_mapper', array(new Controller_E2pdf_Templates(), 'ajax_visual_mapper'));\n-            add_action('wp_ajax_e2pdf_get_styles', array(new Controller_E2pdf_Templates(), 'ajax_get_styles'));\n-            add_action('wp_ajax_e2pdf_email', array(new Controller_E2pdf_Templates(), 'ajax_email'));\n-            add_action('wp_ajax_e2pdf_license_key', array(new Controller_E2pdf_License(), 'ajax_change_license_key'));\n-            add_action('wp_ajax_e2pdf_restore_license_key', array(new Controller_E2pdf_License(), 'ajax_restore_license_key'));\n-            add_action('wp_ajax_e2pdf_deactivate_all_templates', array(new Controller_E2pdf_License(), 'ajax_deactivate_all_templates'));\n-            add_action('wp_ajax_e2pdf_templates', array(new Controller_E2pdf(), 'ajax_templates'));\n-            add_action('wp_ajax_e2pdf_dataset', array(new Controller_E2pdf(), 'ajax_dataset'));\n-            add_action('wp_ajax_e2pdf_datasets_refresh', array(new Controller_E2pdf(), 'ajax_datasets_refresh'));\n-            add_action('wp_ajax_e2pdf_delete_item', array(new Controller_E2pdf(), 'ajax_delete_item'));\n-            add_action('wp_ajax_e2pdf_delete_items', array(new Controller_E2pdf(), 'ajax_delete_items'));\n-            add_action('wp_ajax_e2pdf_delete_font', array(new Controller_E2pdf_Settings(), 'ajax_delete_font'));\n-            add_action('wp_ajax_e2pdf_bulk_create', array(new Controller_E2pdf(), 'ajax_bulk_create'));\n-            add_action('wp_ajax_e2pdf_bulk_action', array(new Controller_E2pdf(), 'ajax_bulk_action'));\n-            add_action('wp_ajax_e2pdf_bulk_progress', array(new Controller_E2pdf(), 'ajax_bulk_progress'));\n+            add_action('wp_ajax_e2pdf_save_form', [new Controller_E2pdf_Templates(), 'ajax_save_form']);\n+            add_action('wp_ajax_e2pdf_auto', [new Controller_E2pdf_Templates(), 'ajax_auto']);\n+            add_action('wp_ajax_e2pdf_upload', [new Controller_E2pdf_Templates(), 'ajax_upload']);\n+            add_action('wp_ajax_e2pdf_reupload', [new Controller_E2pdf_Templates(), 'ajax_reupload']);\n+            add_action('wp_ajax_e2pdf_extension', [new Controller_E2pdf_Templates(), 'ajax_extension']);\n+            add_action('wp_ajax_e2pdf_activate_template', [new Controller_E2pdf_Templates(), 'ajax_activate_template']);\n+            add_action('wp_ajax_e2pdf_deactivate_template', [new Controller_E2pdf_Templates(), 'ajax_deactivate_template']);\n+            add_action('wp_ajax_e2pdf_visual_mapper', [new Controller_E2pdf_Templates(), 'ajax_visual_mapper']);\n+            add_action('wp_ajax_e2pdf_get_styles', [new Controller_E2pdf_Templates(), 'ajax_get_styles']);\n+            add_action('wp_ajax_e2pdf_email', [new Controller_E2pdf_Templates(), 'ajax_email']);\n+            add_action('wp_ajax_e2pdf_license_key', [new Controller_E2pdf_License(), 'ajax_change_license_key']);\n+            add_action('wp_ajax_e2pdf_restore_license_key', [new Controller_E2pdf_License(), 'ajax_restore_license_key']);\n+            add_action('wp_ajax_e2pdf_deactivate_all_templates', [new Controller_E2pdf_License(), 'ajax_deactivate_all_templates']);\n+            add_action('wp_ajax_e2pdf_templates', [new Controller_E2pdf(), 'ajax_templates']);\n+            add_action('wp_ajax_e2pdf_dataset', [new Controller_E2pdf(), 'ajax_dataset']);\n+            add_action('wp_ajax_e2pdf_datasets_refresh', [new Controller_E2pdf(), 'ajax_datasets_refresh']);\n+            add_action('wp_ajax_e2pdf_delete_item', [new Controller_E2pdf(), 'ajax_delete_item']);\n+            add_action('wp_ajax_e2pdf_delete_items', [new Controller_E2pdf(), 'ajax_delete_items']);\n+            add_action('wp_ajax_e2pdf_delete_font', [new Controller_E2pdf_Settings(), 'ajax_delete_font']);\n+            add_action('wp_ajax_e2pdf_bulk_create', [new Controller_E2pdf(), 'ajax_bulk_create']);\n+            add_action('wp_ajax_e2pdf_bulk_action', [new Controller_E2pdf(), 'ajax_bulk_action']);\n+            add_action('wp_ajax_e2pdf_bulk_progress', [new Controller_E2pdf(), 'ajax_bulk_progress']);\n         }\n     }\n \n-    \u002F\u002F load_actions\n+    \u002F\u002F load actions\n     public function load_actions() {\n         if (is_admin()) {\n-            add_action('wpmu_new_blog', array(&$this, 'action_wpmu_new_blog'), 10, 6);\n-            add_action('admin_menu', array(&$this, 'action_admin_menu'));\n-            add_action('admin_init', array(&$this, 'action_admin_init'));\n-            add_action('admin_enqueue_scripts', array(&$this, 'action_admin_enqueue_scripts'));\n-            add_action('current_screen', array(&$this, 'action_current_screen'));\n-            add_action('plugins_loaded', array(&$this, 'action_plugins_loaded'));\n-        }\n-        add_action('wp_enqueue_scripts', array(&$this, 'action_wp_enqueue_scripts'));\n-        add_action('wp', array(Helper_E2pdf_View::instance(), 'render_frontend_page'), 5);\n-        add_action('wp_loaded', array(&$this, 'action_wp_loaded'));\n-        add_action('init', array(&$this, 'action_init'), 0);\n-        add_action('e2pdf_bulk_export_cron', array(new Controller_E2pdf(), 'cron_bulk_export'));\n-        add_action('e2pdf_cache_pdfs_cron', array(&$this, 'cron_cache_pdfs'));\n-        add_action('e2pdf_cache_tmp_cron', array(&$this, 'cron_cache_tmp'));\n+            add_action('wpmu_new_blog', [&$this, 'action_wpmu_new_blog']);\n+            add_action('admin_menu', [&$this, 'action_admin_menu']);\n+            add_action('admin_init', [&$this, 'action_admin_init']);\n+            add_action('admin_enqueue_scripts', [&$this, 'action_admin_enqueue_scripts']);\n+            add_action('current_screen', [&$this, 'action_current_screen']);\n+            add_action('plugins_loaded', [&$this, 'action_plugins_loaded']);\n+        }\n+        add_action('wp_enqueue_scripts', [&$this, 'action_wp_enqueue_scripts']);\n+        add_action('wp', [Helper_E2pdf_View::instance(), 'render_frontend_page'], 5);\n+        add_action('wp_loaded', [&$this, 'action_wp_loaded']);\n+        add_action('init', [&$this, 'action_init'], 0);\n+        add_action('e2pdf_bulk_export_cron', [new Controller_E2pdf(), 'cron_bulk_export']);\n+        add_action('e2pdf_cache_pdfs_cron', [&$this, 'cron_cache_pdfs']);\n+        add_action('e2pdf_cache_tmp_cron', [&$this, 'cron_cache_tmp']);\n \n         \u002F**\n          * WPBakery Page Builder Actions\n          * https:\u002F\u002Fwpbakery.com\u002F\n          *\u002F\n-        add_action('vc_before_init', array(&$this, 'action_vc_before_init'));\n+        add_action('vc_before_init', [&$this, 'action_vc_before_init']);\n     }\n \n+    \u002F\u002F init action\n     public function action_init() {\n         if ($this->helper->get('page') == 'e2pdf-download') {\n             \u002F**\n@@ -116,7 +117,7 @@\n              * https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fultimate-member\u002F\n              *\u002F\n             if (class_exists('UM') && method_exists(UM(), 'access')) {\n-                remove_filter('the_posts', array(UM()->access(), 'filter_protected_posts'), 99);\n+                remove_filter('the_posts', [UM()->access(), 'filter_protected_posts'], 99);\n             }\n \n             \u002F**\n@@ -124,6 +125,12 @@\n              * https:\u002F\u002Fwordpress.org\u002Fplugins\u002Ffoxtool\u002F\n              *\u002F\n             remove_action('init', 'foxtool_init_minify_html', 1);\n+\n+            \u002F**\n+             * Compatibility fix with Image Optimizer, Resizer and CDN – Sirv\n+             * https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fsirv\u002F\n+             *\u002F\n+            remove_action('init', 'sirv_init', 20);\n         }\n \n         if (get_option('e2pdf_mod_rewrite', '0')) {\n@@ -156,6 +163,12 @@\n                  * https:\u002F\u002Fwordpress.org\u002Fplugins\u002Ffoxtool\u002F\n                  *\u002F\n                 remove_action('init', 'foxtool_init_minify_html', 1);\n+\n+                \u002F**\n+                 * Compatibility fix with Image Optimizer, Resizer and CDN – Sirv\n+                 * https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fsirv\u002F\n+                 *\u002F\n+                remove_action('init', 'sirv_init', 20);\n             }\n \n             $rules = [\n@@ -166,6 +179,29 @@\n             add_rewrite_rule($rules[0], $rewrite_to, 'top');\n             add_rewrite_rule($rules[1], $rewrite_to, 'top');\n \n+            \u002F**\n+             * Polylang\n+             * https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fpolylang\u002F\n+             *\u002F\n+            if (function_exists('pll_the_languages')) {\n+                $languages = pll_the_languages(['raw' => 1]);\n+                if (!empty($languages)) {\n+                    $settings = get_option('polylang');\n+                    $languages = array_keys($languages);\n+                    if (isset($settings['hide_default']) && isset($settings['default_lang']) && $settings['hide_default']) {\n+                        $languages = array_diff($languages, [$settings['default_lang']]);\n+                    }\n+                    if (!empty($languages)) {\n+                        $prefix = ((isset($settings['rewrite']) && $settings['rewrite']) ? '' : 'language\u002F') . '(' . implode('|', $languages) . ')\u002F';\n+                        $rules[] = '^' . $prefix . $rewrite_url;\n+                        $rules[] = '^' . $prefix . $wp_rewrite->index . '\u002F' . $rewrite_url;\n+                        $rewrite_to = 'index.php?e2pdf=1&uid=$matches[2]';\n+                        add_rewrite_rule($rules[2], $rewrite_to, 'top');\n+                        add_rewrite_rule($rules[3], $rewrite_to, 'top');\n+                    }\n+                }\n+            }\n+\n             $rewrite_rules = get_option('rewrite_rules');\n             foreach ($rules as $rule) {\n                 if (!isset($rewrite_rules[$rule])) {\n@@ -177,9 +213,7 @@\n     }\n \n     \u002F\u002F bulk export cron\n-    public function cronjob() {\n-        $model_e2pdf_bulk = new Model_E2pdf_Bulk();\n-        $model_e2pdf_bulk->process();\n+    public function cronjob() { \u002F\u002F phpcs:ignore Squiz.WhiteSpace.SuperfluousWhitespace.EndLine\n     }\n \n     \u002F\u002F clear pdfs cache\n@@ -194,32 +228,36 @@\n \n     \u002F\u002F load filters\n     public function load_filters() {\n+\n         if (get_option('e2pdf_dev_update', '0')) {\n-            add_filter('pre_set_site_transient_update_plugins', array(&$this, 'filter_pre_set_site_transient_update_plugins'));\n+            add_filter('pre_set_site_transient_update_plugins', [&$this, 'filter_pre_set_site_transient_update_plugins']);\n         }\n \n+        add_filter('pre_do_shortcode_tag', [&$this, 'filter_pre_do_shortcode_tag'], 10, 2);\n+\n         \u002F**\n          * SiteGround Optimizer HTML Minify compatibility fix filter\n          * https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fsg-cachepress\u002F\n          *\u002F\n-        add_filter('sgo_html_minify_exclude_urls', array(&$this, 'filter_sgo_html_minify_exclude_urls'));\n+        add_filter('sgo_html_minify_exclude_urls', [&$this, 'filter_sgo_html_minify_exclude_urls']);\n \n         if (get_option('e2pdf_mod_rewrite', '0')) {\n-            add_filter('query_vars', array(&$this, 'filter_query_vars'));\n+            add_filter('query_vars', [&$this, 'filter_query_vars']);\n         }\n \n         \u002F\u002F phpcs:ignore WordPress.WP.CronInterval.CronSchedulesInterval\n-        add_filter('cron_schedules', array(&$this, 'filter_cron_schedules'));\n+        add_filter('cron_schedules', [&$this, 'filter_cron_schedules']);\n \n         \u002F**\n          * WPBakery Page Builder Filters\n          * https:\u002F\u002Fwpbakery.com\u002F\n          *\u002F\n-        add_filter('vc_grid_item_shortcodes', array(&$this, 'filter_vc_grid_item_shortcodes'));\n-        add_filter('vc_gitem_template_attribute_e2pdf_download', array(&$this, 'filter_vc_gitem_template_attribute_e2pdf_download'), 10, 2);\n-        add_filter('vc_gitem_template_attribute_e2pdf_view', array(&$this, 'filter_vc_gitem_template_attribute_e2pdf_view'), 10, 2);\n+        add_filter('vc_grid_item_shortcodes', [&$this, 'filter_vc_grid_item_shortcodes']);\n+        add_filter('vc_gitem_template_attribute_e2pdf_download', [&$this, 'filter_vc_gitem_template_attribute_e2pdf_download'], 10, 2);\n+        add_filter('vc_gitem_template_attribute_e2pdf_view', [&$this, 'filter_vc_gitem_template_attribute_e2pdf_view'], 10, 2);\n     }\n \n+    \u002F\u002F plugins loaded action\n     public function action_plugins_loaded() {\n         if (get_option('e2pdf_version') !== $this->helper->get('version')) {\n             $this->activate();\n@@ -242,48 +280,31 @@\n \n     \u002F\u002F load shortcodes\n     public function load_shortcodes() {\n-        add_shortcode('e2pdf-download', array(new Model_E2pdf_Shortcode(), 'e2pdf_download'));\n-        add_shortcode('e2pdf-view', array(new Model_E2pdf_Shortcode(), 'e2pdf_view'));\n-        add_shortcode('e2pdf-save', array(new Model_E2pdf_Shortcode(), 'e2pdf_save'));\n-        add_shortcode('e2pdf-zapier', array(new Model_E2pdf_Shortcode(), 'e2pdf_zapier'));\n-        add_shortcode('e2pdf-adobesign', array(new Model_E2pdf_Shortcode(), 'e2pdf_adobesign'));\n-        add_shortcode('e2pdf-attachment', array(new Model_E2pdf_Shortcode(), 'e2pdf_attachment'));\n-        add_shortcode('e2pdf-vc-download', array(new Model_E2pdf_Shortcode(), 'e2pdf_vc_download'));\n-        add_shortcode('e2pdf-vc-download-item', array(new Model_E2pdf_Shortcode(), 'e2pdf_vc_download_item'));\n-        add_shortcode('e2pdf-vc-view', array(new Model_E2pdf_Shortcode(), 'e2pdf_vc_view'));\n-        add_shortcode('e2pdf-vc-view-item', array(new Model_E2pdf_Shortcode(), 'e2pdf_vc_view_item'));\n-        add_shortcode('e2pdf-format-number', array(new Model_E2pdf_Shortcode(), 'e2pdf_format_number'));\n-        add_shortcode('e2pdf-format-date', array(new Model_E2pdf_Shortcode(), 'e2pdf_format_date'));\n-        add_shortcode('e2pdf-format-output', array(new Model_E2pdf_Shortcode(), 'e2pdf_format_output'));\n-        add_shortcode('e2pdf-math', array(new Model_E2pdf_Shortcode(), 'e2pdf_math'));\n-        add_shortcode('e2pdf-content', array(new Model_E2pdf_Shortcode(), 'e2pdf_content'));\n-        add_shortcode('e2pdf-exclude', array(new Model_E2pdf_Shortcode(), 'e2pdf_exclude'));\n-        add_shortcode('e2pdf-filter', array(new Model_E2pdf_Shortcode(), 'e2pdf_filter'));\n-        add_shortcode('e2pdf-page-number', array(new Model_E2pdf_Shortcode(), 'e2pdf_page_number'));\n-        add_shortcode('e2pdf-page-total', array(new Model_E2pdf_Shortcode(), 'e2pdf_page_total'));\n-        add_shortcode('e2pdf-user', array(new Model_E2pdf_Shortcode(), 'e2pdf_user'));\n-        add_shortcode('e2pdf-wp', array(new Model_E2pdf_Shortcode(), 'e2pdf_wp'));\n-        add_shortcode('e2pdf-wp-term', array(new Model_E2pdf_Shortcode(), 'e2pdf_wp_term'));\n-        add_shortcode('e2pdf-wp-posts', array(new Model_E2pdf_Shortcode(), 'e2pdf_wp_posts'));\n-        add_shortcode('e2pdf-wp-users', array(new Model_E2pdf_Shortcode(), 'e2pdf_wp_users'));\n-        add_shortcode('e2pdf-wc-product', array(new Model_E2pdf_Shortcode(), 'e2pdf_wc_product'));\n-        add_shortcode('e2pdf-wc-order', array(new Model_E2pdf_Shortcode(), 'e2pdf_wc_order'));\n-        add_shortcode('e2pdf-wc-cart', array(new Model_E2pdf_Shortcode(), 'e2pdf_wc_cart'));\n-        add_shortcode('e2pdf-wc-customer', array(new Model_E2pdf_Shortcode(), 'e2pdf_wc_customer'));\n-        add_shortcode('e2pdf-foreach', array(new Model_E2pdf_Shortcode(), 'e2pdf_foreach'));\n-        add_shortcode('e2pdf-acf-repeater', array(new Model_E2pdf_Shortcode(), 'e2pdf_acf_repeater'));\n+        $shortcode_handler = new Model_E2pdf_Shortcode();\n+        foreach ($this->helper->shortcodes() as $shortcode) {\n+            $method = str_replace('-', '_', $shortcode);\n+            if (method_exists($shortcode_handler, $method)) {\n+                add_shortcode($shortcode, [$shortcode_handler, $method]);\n+            }\n+        }\n     }\n \n     \u002F\u002F load hooks\n     public function load_hooks() {\n-        register_activation_hook($this->helper->get('plugin_file_path'), array(&$this, 'activate'));\n-        register_deactivation_hook($this->helper->get('plugin_file_path'), array(&$this, 'deactivate'));\n-        register_uninstall_hook($this->helper->get('plugin_file_path'), array('Model_E2pdf_Loader', 'uninstall'));\n+        register_activation_hook($this->helper->get('plugin_file_path'), [&$this, 'activate']);\n+        register_deactivation_hook($this->helper->get('plugin_file_path'), [&$this, 'deactivate']);\n+        register_uninstall_hook($this->helper->get('plugin_file_path'), ['Model_E2pdf_Loader', 'uninstall']);\n         if (false !== strpos($this->helper->load('server')->get('REQUEST_URI'), '\u002Fe2pdf-rpc\u002F')) {\n-            add_action('wp_loaded', array(Helper_E2pdf_View::instance(), 'rpc'), 5);\n+            add_action('wp_loaded', [Helper_E2pdf_View::instance(), 'rpc'], 5);\n         }\n     }\n \n+    \u002F\u002F admin body class\n+    public function filter_admin_body_class($classes) {\n+        $classes .= ' e2pdf-loading';\n+        return $classes;\n+    }\n+\n     \u002F\u002F url rewrite\n     public function filter_query_vars($tags) {\n         global $wp;\n@@ -298,13 +319,14 @@\n \n     \u002F\u002F custom cronjob time\n     public function filter_cron_schedules($schedules) {\n-        $schedules['e2pdf_bulk_export_interval'] = array(\n+        $schedules['e2pdf_bulk_export_interval'] = [\n             'interval' => 3,\n             'display' => __('E2Pdf Bulk Export Interval', 'e2pdf'),\n-        );\n+        ];\n         return $schedules;\n     }\n \n+    \u002F\u002F filter sgo html minify\n     public function filter_sgo_html_minify_exclude_urls($exclude_urls) {\n         if (is_array($exclude_urls)) {\n             $exclude_urls[] = '\u002F?page=e2pdf-download&uid=*';\n@@ -327,9 +349,9 @@\n \n         $model_e2pdf_api = new Model_E2pdf_Api();\n         $model_e2pdf_api->set(\n-                array(\n+                [\n                     'action' => 'update\u002Finfo',\n-                )\n+                ]\n         );\n         $request = $model_e2pdf_api->request();\n \n@@ -364,12 +386,13 @@\n         return $transient;\n     }\n \n+    \u002F\u002F vc_gitem_template_attribute_e2pdf_download filter\n     public function filter_vc_gitem_template_attribute_e2pdf_download($value, $data) {\n \n         $post = isset($data['post']) ? $data['post'] : null;\n         $data = isset($data['data']) ? $data['data'] : '';\n \n-        $atts = array();\n+        $atts = [];\n         parse_str($data, $atts);\n         if (!empty($post->ID)) {\n             $atts['dataset'] = $post->ID;\n@@ -378,12 +401,13 @@\n         return (new Model_E2pdf_Shortcode())->e2pdf_download($atts);\n     }\n \n+    \u002F\u002F vc_gitem_template_attribute_e2pdf_view filter\n     public function filter_vc_gitem_template_attribute_e2pdf_view($value, $data) {\n \n         $post = isset($data['post']) ? $data['post'] : null;\n         $data = isset($data['data']) ? $data['data'] : '';\n \n-        $atts = array();\n+        $atts = [];\n         parse_str($data, $atts);\n         if (!empty($post->ID)) {\n             $atts['dataset'] = $post->ID;\n@@ -392,9 +416,10 @@\n         return (new Model_E2pdf_Shortcode())->e2pdf_view($atts);\n     }\n \n+    \u002F\u002F vc_grid_item_shortcodes filter\n     public function filter_vc_grid_item_shortcodes($shortcodes) {\n         if (class_exists('Vc_Grid_Item_Editor') && method_exists('Vc_Grid_Item_Editor', 'postType')) {\n-            $shortcodes['e2pdf_vc_download_item'] = array(\n+            $shortcodes['e2pdf_vc_download_item'] = [\n                 'name' => '[e2pdf-download]',\n                 'base' => 'e2pdf-vc-download-item',\n                 'icon' => 'vc_general vc_element-icon e2pdf_vc_element-icon',\n@@ -402,15 +427,30 @@\n                 'description' => esc_html__('Display E2Pdf PDF Download', 'e2pdf'),\n                 'post_type' => Vc_Grid_Item_Editor::postType(),\n                 'params' => $this->helper->load('vc')->params('e2pdf-download'),\n-            );\n+            ];\n         }\n         return $shortcodes;\n     }\n \n+    \u002F\u002F pre_do_shortcode_tag filter\n+    public function filter_pre_do_shortcode_tag($output, $tag) {\n+        if (in_array($tag, $this->helper->shortcodes(), true) && !$this->process_shortcodes()) {\n+            return '[' . $tag . '::disabled]';\n+        }\n+        return $output;\n+    }\n+\n+    \u002F\u002F process shortcodes\n+    public function process_shortcodes() {\n+        $process_shortcodes = is_preview() && !current_user_can('publish_posts') ? false : true;\n+        return apply_filters('e2pdf_process_shortcodes', $process_shortcodes);\n+    }\n+\n+    \u002F\u002F vc_before_init action\n     public function action_vc_before_init() {\n         if (function_exists('vc_map')) {\n             vc_map(\n-                    array(\n+                    [\n                         'name' => '[e2pdf-download]',\n                         'description' => esc_html__('Display E2Pdf PDF Download', 'e2pdf'),\n                         'base' => 'e2pdf-vc-download',\n@@ -418,10 +458,10 @@\n                         'icon' => 'vc_general vc_element-icon e2pdf_vc_element-icon',\n                         'category' => esc_html__('Content', 'js_composer'),\n                         'params' => $this->helper->load('vc')->params('e2pdf-download'),\n-                    )\n+                    ]\n             );\n             vc_map(\n-                    array(\n+                    [\n                         'name' => '[e2pdf-view]',\n                         'description' => esc_html__('Display E2Pdf PDF View', 'e2pdf'),\n                         'base' => 'e2pdf-vc-view',\n@@ -429,12 +469,12 @@\n                         'icon' => 'vc_general vc_element-icon e2pdf_vc_element-icon',\n                         'category' => esc_html__('Content', 'js_composer'),\n                         'params' => $this->helper->load('vc')->params('e2pdf-view'),\n-                    )\n+                    ]\n             );\n         }\n     }\n \n-    \u002F\u002F admin menu\n+    \u002F\u002F admin_menu action\n     public function action_admin_menu() {\n         ob_start();\n         $caps = $this->helper->get_caps();\n@@ -443,20 +483,20 @@\n                 $caps[$cap_key]['cap'] = 'manage_options';\n             }\n         }\n-        add_menu_page('e2pdf', 'E2Pdf', $caps['e2pdf']['cap'], 'e2pdf', array(Helper_E2pdf_View::instance(), 'render_page'), $this->get_icon(), '26');\n-        add_submenu_page('e2pdf', __('Create PDF', 'e2pdf'), __('Create PDF', 'e2pdf'), $caps['e2pdf']['cap'], 'e2pdf', array(Helper_E2pdf_View::instance(), 'render_page'));\n-        add_submenu_page('e2pdf', __('Templates', 'e2pdf'), __('Templates', 'e2pdf'), $caps['e2pdf_templates']['cap'], 'e2pdf-templates', array(Helper_E2pdf_View::instance(), 'render_page'));\n-        add_submenu_page('e2pdf', __('Integrations', 'e2pdf'), __('Integrations', 'e2pdf'), $caps['e2pdf_settings']['cap'], 'e2pdf-integrations', array(Helper_E2pdf_View::instance(), 'render_page'));\n-        add_submenu_page('e2pdf', __('Settings', 'e2pdf'), __('Settings', 'e2pdf'), $caps['e2pdf_settings']['cap'], 'e2pdf-settings', array(Helper_E2pdf_View::instance(), 'render_page'));\n-        add_submenu_page('e2pdf', __('License', 'e2pdf'), __('License', 'e2pdf'), $caps['e2pdf_license']['cap'], 'e2pdf-license', array(Helper_E2pdf_View::instance(), 'render_page'));\n+        add_menu_page('e2pdf', 'E2Pdf', $caps['e2pdf']['cap'], 'e2pdf', [Helper_E2pdf_View::instance(), 'render_page'], $this->get_icon(), '26');\n+        add_submenu_page('e2pdf', __('Create PDF', 'e2pdf'), __('Create PDF', 'e2pdf'), $caps['e2pdf']['cap'], 'e2pdf', [Helper_E2pdf_View::instance(), 'render_page']);\n+        add_submenu_page('e2pdf', __('Templates', 'e2pdf'), __('Templates', 'e2pdf'), $caps['e2pdf_templates']['cap'], 'e2pdf-templates', [Helper_E2pdf_View::instance(), 'render_page']);\n+        add_submenu_page('e2pdf', __('Integrations', 'e2pdf'), __('Integrations', 'e2pdf'), $caps['e2pdf_settings']['cap'], 'e2pdf-integrations', [Helper_E2pdf_View::instance(), 'render_page']);\n+        add_submenu_page('e2pdf', __('Settings', 'e2pdf'), __('Settings', 'e2pdf'), $caps['e2pdf_settings']['cap'], 'e2pdf-settings', [Helper_E2pdf_View::instance(), 'render_page']);\n+        add_submenu_page('e2pdf', __('License', 'e2pdf'), __('License', 'e2pdf'), $caps['e2pdf_license']['cap'], 'e2pdf-license', [Helper_E2pdf_View::instance(), 'render_page']);\n         if (get_option('e2pdf_debug', '0') === '1') {\n-            add_submenu_page('e2pdf', __('Debug', 'e2pdf'), __('Debug', 'e2pdf'), $caps['e2pdf_debug']['cap'], 'e2pdf-debug', array(Helper_E2pdf_View::instance(), 'render_page'));\n+            add_submenu_page('e2pdf', __('Debug', 'e2pdf'), __('Debug', 'e2pdf'), $caps['e2pdf_debug']['cap'], 'e2pdf-debug', [Helper_E2pdf_View::instance(), 'render_page']);\n         }\n     }\n \n     \u002F\u002F icon\n     public function get_icon() {\n-        $icon = 'data:image\u002Fsvg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0idXVpZC00NjQyOGQyMi0wMzg2LTQ1ZmItODEyZC03YzViMTg0NDhlZDciIGRhdGEtbmFtZT0i0KjQsNGAXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDU3OS45OSA1MDIuMTgiPgogIDxkZWZzPgogICAgPHN0eWxlPgogICAgICAudXVpZC1mODEwOTNkZi1lMDQ3LTQ3YmUtOGFmYS0wNTUzNjFmMWMxYWIgewogICAgICAgIGZpbGw6ICNhN2FhYWQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxwYXRoIGNsYXNzPSJ1dWlkLWY4MTA5M2RmLWUwNDctNDdiZS04YWZhLTA1NTM2MWYxYzFhYiIgZD0iTTQ5My43MiwxMTMuNzVoLTEwNS4yN3YtMjguOTdjMC00Ni44Mi0zNy45Ni04NC43OC04NC43OC04NC43OEg4NC43OEMzNy45NiwwLDAsMzcuOTYsMCw4NC43OHYyMTguODdjMCw0Ni44MiwzNy45Niw4NC43OCw4NC43OCw4NC43OGgxMDYuNzh2MjcuNDljMCw0Ny42NCwzOC42Miw4Ni4yNyw4Ni4yNyw4Ni4yN2gyMTUuODljNDcuNjQsMCw4Ni4yOC0zOC42Miw4Ni4yOC04Ni4yN3YtMjE1Ljg5YzAtNDcuNjQtMzguNjMtODYuMjgtODYuMjgtODYuMjhaTTg2LjgyLDg3LjQxaDIwOS41NHY0Mi44Nkg4Ni44MnYtNDIuODZaTTg2LjgyLDE3My4xM2gyOTAuMzd2LjA2YzEuNDYtLjA3LDIuOS0uMTksNC40LS4xOSwyMC4xLDAsMzcuNjIsMy4xLDUyLjU2LDkuMywxNC45NCw2LjIsMjYuNDQsMTQuOTksMzQuNTEsMjYuMzcsOC4wNiwxMS4zOCwxMi4xLDI0LjkyLDEyLjEsNDAuNiwwLDguNi0xLjE5LDE3LjE0LTMuNTcsMjUuNjEtMi4zOCw4LjQ4LTYuODgsMTcuNC0xMy40OSwyNi43NS02LjYxLDkuMzYtMTYuMjcsMTkuODYtMjguOTYsMzEuNDlsLTI4LjMyLDI1LjczaC02NC4xOGw1NC40OC00OS42YzkuMjMtOC4zNCwxNi4wOC0xNS42NywyMC41Ny0yMS45OSw0LjQ4LTYuMzIsNy40NS0xMi4xOSw4LjktMTcuNjMsMS40NS01LjQzLDIuMTgtMTAuNTUsMi4xOC0xNS4zNiwwLTEyLjEzLTQuMzUtMjEuNTUtMTMuMDUtMjguMjUtOC43LTYuNy0yMS40OS0xMC4wNS0zOC4zNy0xMC4wNS0uMzIsMC0uNjMuMDQtLjk1LjA0di0uMDJIODYuODJ2LTQyLjg2Wk04Ni44MiwzMDEuNzF2LTQyLjg2aDIwOS41NHY0Mi44Nkg4Ni44MlpNNDg3LjkxLDQyMC43N2gtMjA5LjU0di00Mi44NmgyMDkuNTR2NDIuODZaIi8+Cjwvc3ZnPg==';\n+        $icon = 'data:image\u002Fsvg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBpZD0idXVpZC00NjQyOGQyMi0wMzg2LTQ1ZmItODEyZC03YzViMTg0NDhlZDciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDU4MCA1MDIuNTMiPgogIDxkZWZzPgogICAgPHN0eWxlPgogICAgICAuY2xzLTEgewogICAgICAgIGZpbGw6ICNhN2FhYWQ7CiAgICAgIH0KICAgIDwvc3R5bGU+CiAgPC9kZWZzPgogIDxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTY4LjI5LDBjLTEyLjM1LDAtMjMuOTMsMy4zMS0zMy45LDkuMDctMTAuMjksNS45NS0xOC44NywxNC41NC0yNC44MiwyNC44M0MzLjgsNDMuODcuNDksNTUuNDUuNDksNjcuOHYyMzcuMzRjMCwxMi4zNSwzLjMsMjMuOTMsOS4wNywzMy45MSw1Ljk1LDEwLjI5LDE0LjU0LDE4Ljg3LDI0LjgzLDI0LjgyLDkuOTcsNS43OCwyMS41NSw5LjA3LDMzLjksOS4wN2gyNDQuMTNjLS45MS00LjMzLTEuMzgtOC44MS0xLjM4LTEzLjQsMC03LjYxLDEuMy0xNC45MywzLjcxLTIxLjczLDQuNjYtMTMuMTksMTMuNDQtMjQuNDMsMjQuNzktMzIuMTh2LTYxLjY0Yy0zLjY3LTMuODktNS45MS05LjEzLTUuOTEtMTQuODlzMi4yNC0xMSw1LjkxLTE0Ljg5VjBINjguMjlaTTkwLjMzLDc3Ljc4aDE1OS4zNmMxMC45LDAsMTkuNzUsOS43NCwxOS43NSwyMS43M3MtOC44NSwyMS43NC0xOS43NSwyMS43NEg5MC4zM2MtMTAuOTEsMC0xOS43NC05LjczLTE5Ljc0LTIxLjc0czguODMtMjEuNzMsMTkuNzQtMjEuNzNaTTI0OS42OSwyOTUuMTdIOTAuMzNjLTEwLjkxLDAtMTkuNzQtOS43My0xOS43NC0yMS43NHM4LjgzLTIxLjc0LDE5Ljc0LTIxLjc0aDE1OS4zNmMxMC45LDAsMTkuNzUsOS43NCwxOS43NSwyMS43NHMtOC44NSwyMS43NC0xOS43NSwyMS43NFpNMjQ5LjY5LDIwOC4yMUg5MC4zM2MtMTAuOTEsMC0xOS43NC05LjczLTE5Ljc0LTIxLjc0czguODMtMjEuNzQsMTkuNzQtMjEuNzRoMTU5LjM2YzEwLjksMCwxOS43NSw5Ljc0LDE5Ljc1LDIxLjc0cy04Ljg1LDIxLjc0LTE5Ljc1LDIxLjc0WiIvPgogIDxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTU3MC45MSwxNjMuNDljLTUuOTUtMTAuMjktMTQuNTMtMTguODctMjQuODMtMjQuODMtOS45Ni01Ljc2LTIxLjU0LTkuMDctMzMuODktOS4wN0gyNDAuOTR2MzUuMTRoOC43NWMxMC45LDAsMTkuNzUsOS43NCwxOS43NSwyMS43NHMtOC44NSwyMS43NC0xOS43NSwyMS43NGgtOC43NXY0My40OGg4Ljc1YzEwLjksMCwxOS43NSw5Ljc0LDE5Ljc1LDIxLjc0cy04Ljg1LDIxLjc0LTE5Ljc1LDIxLjc0aC04Ljc1djIwNy4zNmgyNzEuMjVjMTIuMzUsMCwyMy45My0zLjI5LDMzLjg5LTkuMDcsMTAuMy01Ljk1LDE4Ljg5LTE0LjUyLDI0Ljg0LTI0LjgyLDUuNzctOS45OCw5LjA3LTIxLjU2LDkuMDctMzMuOTF2LTIzNy4zNGMwLTEyLjM1LTMuMzEtMjMuOTMtOS4wOC0zMy45Wk00ODguMTYsNDI0Ljc2aC0xMTIuNzRjLTI4LjAzLS4zNS01MS44MS0xOC4zOS02MC42Ny00My40OC0uOTYtMi43LTEuNzQtNS40OS0yLjMzLTguMzQtLjkxLTQuMzMtMS4zOC04LjgxLTEuMzgtMTMuNCwwLTcuNjEsMS4zLTE0LjkzLDMuNzEtMjEuNzMsNC42Ni0xMy4xOSwxMy40NC0yNC40MywyNC43OS0zMi4xOCwxMC40Ni03LjEzLDIzLjEtMTEuMzEsMzYuNzMtMTEuMzFoNjUuMjJjMTIsMCwyMS43NC05LjczLDIxLjc0LTIxLjc0cy05Ljc0LTIxLjc0LTIxLjc0LTIxLjc0aC04Ni4xMmMtNi4yNSwwLTExLjg4LTIuNjMtMTUuODMtNi44NS0zLjY3LTMuODktNS45MS05LjEzLTUuOTEtMTQuODlzMi4yNC0xMSw1LjkxLTE0Ljg5YzMuOTYtNC4yMSw5LjU4LTYuODQsMTUuODMtNi44NGg4Ni45NmMyNi4zNy4zMiw0OC45NiwxNi4zMSw1OC45MywzOS4wOCwzLjUsOC4wMSw1LjQ1LDE2Ljg0LDUuNDUsMjYuMTMsMCwzNi4wMi0yOS4yLDY1LjIzLTY1LjIyLDY1LjIzaC02NS4yMmMtMTIuMDIsMC0yMS43NCw5LjcyLTIxLjc0LDIxLjczczkuNzIsMjEuNzQsMjEuNzQsMjEuNzRoMTExLjg5YzExLjk5LDAsMjEuNzMsOS43NCwyMS43MywyMS43NHMtOS43NCwyMS43NC0yMS43MywyMS43NFoiLz4KPC9zdmc+';\n         return $icon;\n     }\n \n@@ -465,10 +505,10 @@\n         register_setting('e2pdf-settings', 'e2pdf_debug');\n     }\n \n-    \u002F\u002F admin javascript\n+    \u002F\u002F admin_enqueue_scripts action\n     public function action_admin_enqueue_scripts($page) {\n         $version = get_option('e2pdf_debug', '0') === '1' ? strtotime('now') : $this->helper->get('version');\n-        wp_register_style('e2pdf.backend.global', plugins_url('css\u002Fe2pdf.backend.global.css', $this->helper->get('plugin_file_path')), array(), $version);\n+        wp_register_style('e2pdf.backend.global', plugins_url('css\u002Fe2pdf.backend.global.css', $this->helper->get('plugin_file_path')), [], $version);\n         wp_enqueue_style('e2pdf.backend.global');\n         if (!in_array($page, $this->e2pdf_admin_pages, false)) {\n             return;\n@@ -476,40 +516,40 @@\n \n         if ($page == 'e2pdf_page_e2pdf-templates') {\n             wp_enqueue_script(\n-                    'js\u002Fe2pdf.purify', plugins_url('js\u002Fdompurify\u002Fpurify.min.js', $this->helper->get('plugin_file_path')), array('jquery'), $version, false\n+                    'js\u002Fe2pdf.purify', plugins_url('js\u002Fdompurify\u002Fpurify.min.js', $this->helper->get('plugin_file_path')), ['jquery'], $version, false\n             );\n             wp_enqueue_script(\n-                    'js\u002Fe2pdf.backend', plugins_url('js\u002Fe2pdf.backend.js', $this->helper->get('plugin_file_path')), array('jquery', 'js\u002Fe2pdf.purify'), $version, false\n+                    'js\u002Fe2pdf.backend', plugins_url('js\u002Fe2pdf.backend.js', $this->helper->get('plugin_file_path')), ['jquery', 'js\u002Fe2pdf.purify'], $version, false\n             );\n         } else {\n             wp_enqueue_script(\n-                    'js\u002Fe2pdf.backend', plugins_url('js\u002Fe2pdf.backend.js', $this->helper->get('plugin_file_path')), array('jquery'), $version, false\n+                    'js\u002Fe2pdf.backend', plugins_url('js\u002Fe2pdf.backend.js', $this->helper->get('plugin_file_path')), ['jquery'], $version, false\n             );\n         }\n         wp_localize_script('js\u002Fe2pdf.backend', 'e2pdf_lang', $this->get_js('lang'));\n         wp_localize_script('js\u002Fe2pdf.backend', 'e2pdf_params', $this->get_js('params'));\n-        wp_register_style('e2pdf.backend', plugins_url('css\u002Fe2pdf.backend.css', $this->helper->get('plugin_file_path')), array(), $version);\n+        wp_register_style('e2pdf.backend', plugins_url('css\u002Fe2pdf.backend.css', $this->helper->get('plugin_file_path')), [], $version);\n         wp_enqueue_style('e2pdf.backend');\n     }\n \n-    \u002F\u002F frontend javascript\n+    \u002F\u002F wp_enqueue_scripts action\n     public function action_wp_enqueue_scripts() {\n         $version = get_option('e2pdf_debug', '0') === '1' ? strtotime('now') : $this->helper->get('version');\n-        wp_enqueue_style('css\u002Fe2pdf.frontend.global', plugins_url('css\u002Fe2pdf.frontend.global.css', $this->helper->get('plugin_file_path')), array(), $version, 'all');\n+        wp_enqueue_style('css\u002Fe2pdf.frontend.global', plugins_url('css\u002Fe2pdf.frontend.global.css', $this->helper->get('plugin_file_path')), [], $version, 'all');\n         wp_register_script(\n-                'js\u002Fe2pdf.frontend', plugins_url('js\u002Fe2pdf.frontend.js', $this->helper->get('plugin_file_path')), array('jquery'), $version, false\n+                'js\u002Fe2pdf.frontend', plugins_url('js\u002Fe2pdf.frontend.js', $this->helper->get('plugin_file_path')), ['jquery'], $version, false\n         );\n         wp_enqueue_script(\n                 'js\u002Fe2pdf.frontend'\n         );\n     }\n \n-    \u002F\u002F javascript variables\n+    \u002F\u002F get fontend javascript\n     public function get_js($type) {\n-        $data = array();\n+        $data = [];\n         switch ($type) {\n             case 'lang':\n-                $data = array(\n+                $data = [\n                     'Page will be removed! Continue?' => __('Page will be removed! Continue?', 'e2pdf'),\n                     'Font will be removed! Continue?' => __('Font will be removed! Continue?', 'e2pdf'),\n                     'Changes will not be saved! Continue?' => __('Changes will not be saved! Continue?', 'e2pdf'),\n@@ -653,10 +693,6 @@\n                     'CSS Style' => __('CSS Style', 'e2pdf'),\n                     'Enabling WYSIWYG can affect \"HTML\" Source' => __('Enabling WYSIWYG can affect \"HTML\" Source', 'e2pdf'),\n                     'Hidden Fields' => __('Hidden Fields', 'e2pdf'),\n-                    'Enable PDF Access By URL' => __('Enable PDF Access By URL', 'e2pdf'),\n-                    'Disable PDF Access By URL' => __('Disable PDF Access By URL', 'e2pdf'),\n-                    'Enable Shortcodes' => __('Enable Shortcodes', 'e2pdf'),\n-                    'Disable Shortcodes' => __('Disable Shortcodes', 'e2pdf'),\n                     'Error Message' => __('Error Message', 'e2pdf'),\n                     'Redirect URL' => __('Redirect URL', 'e2pdf'),\n                     'Element' => __('Element', 'e2pdf'),\n@@ -820,17 +856,20 @@\n                     'No Read-Only' => __('No Read-Only', 'e2pdf'),\n                     'No Border' => __('No Border', 'e2pdf'),\n                     'Quick Props' => __('Quick Props', 'e2pdf'),\n-                );\n+                    'The Template ID used in the backup will be overwritten. Continue?' => __('The Template ID used in the backup will be overwritten. Continue?', 'e2pdf'),\n+                    \u002F* translators: %d: Template ID *\u002F\n+                    'This will overwrite the Template ID \"%d\". Continue?' => __('This will overwrite the Template ID \"%d\". Continue?', 'e2pdf'),\n+                ];\n                 break;\n             case 'params':\n-                $nonces = array();\n+                $nonces = [];\n                 $caps = $this->helper->get_caps();\n                 foreach ($caps as $cap) {\n                     $nonces[$cap['cap']] = current_user_can('manage_options') || current_user_can($cap['cap']) ? wp_create_nonce($cap['cap']) : '';\n                 }\n                 $controller_e2pdf_templates = new Controller_E2pdf_Templates();\n                 $model_e2pdf_extension = new Model_E2pdf_Extension();\n-                $data = array(\n+                $data = [\n                     'nonce' => $nonces,\n                     'plugins_url' => plugins_url('', $this->helper->get('plugin_file_path')),\n                     'upload_url' => $this->helper->get_upload_url(),\n@@ -840,12 +879,12 @@\n                     'template_sizes' => $controller_e2pdf_templates->get_sizes_list(),\n                     'css_styles' => array_keys($this->helper->load('properties')->css_styles()),\n                     'undo_limit' => get_option('e2pdf_undo_limit', '20'),\n-                );\n+                ];\n                 break;\n             case 'frontend_params':\n-                $data = array(\n+                $data = [\n                     'pdfjs' => plugins_url('assets\u002Fpdf.js', $this->helper->get('plugin_file_path')),\n-                );\n+                ];\n                 break;\n             default:\n                 break;\n@@ -870,6 +909,7 @@\n         }\n     }\n \n+    \u002F\u002F current_screen action\n     public function action_current_screen() {\n         $current_screen = get_current_screen();\n         if (!$current_screen || !in_array($current_screen->id, $this->e2pdf_admin_pages, false)) {\n@@ -877,12 +917,17 @@\n         }\n \n         \u002F\u002F phpcs:ignore WordPress.Security.NonceVerification.Recommended\n+        if ($current_screen->id == 'toplevel_page_e2pdf' || ($current_screen->id == 'e2pdf_page_e2pdf-templates' && isset($_GET['action']) && $_GET['action'] == 'edit')) {\n+            add_filter('admin_body_class', [&$this, 'filter_admin_body_class']);\n+        }\n+\n+        \u002F\u002F phpcs:ignore WordPress.Security.NonceVerification.Recommended\n         if ($current_screen->id == 'e2pdf_page_e2pdf-templates' && !isset($_GET['action'])) {\n-            $screen_option = array(\n+            $screen_option = [\n                 'label' => __('Templates per page', 'e2pdf') . ':',\n                 'default' => get_option('e2pdf_templates_screen_per_page') ? get_option('e2pdf_templates_screen_per_page') : '20',\n                 'option' => 'e2pdf_templates_screen_per_page',\n-            );\n+            ];\n             add_screen_option('per_page', $screen_option);\n         }\n \n@@ -894,12 +939,14 @@\n         }\n     }\n \n+    \u002F\u002F wp_loaded action\n     public function action_wp_loaded() {\n         if (get_option('e2pdf_adobesign_refresh_token') && !get_transient('e2pdf_adobesign_refresh_token')) {\n             new Model_E2pdf_AdobeSign();\n         }\n     }\n \n+    \u002F\u002F activate website wrapper\n     public function activate($network = false) {\n         global $wpdb;\n \n@@ -912,14 +959,15 @@\n             } else {\n                 $this->activate_site();\n             }\n-        } catch (Exception $e) {\n+        } catch (Exception $ex) {\n             echo '\u003Cdiv style=\"line-height: 70px;\">';\n-            echo $e->getMessage();\n+            echo $ex->getMessage();\n             echo '\u003C\u002Fdiv>';\n             exit();\n         }\n     }\n \n+    \u002F\u002F deactivate website wrapper\n     public function deactivate($network = false) {\n         global $wpdb;\n         if (is_multisite() && $network) {\n@@ -931,8 +979,8 @@\n         }\n     }\n \n-    \u002F\u002F new wpmu blog\n-    public function action_wpmu_new_blog($blog_id, $user_id, $domain, $path, $site_id, $meta) {\n+    \u002F\u002F wpmu_new_blog action\n+    public function action_wpmu_new_blog($blog_id) {\n         if (is_plugin_active_for_network('e2pdf\u002Fe2pdf.php')) {\n             $this->activate_site($blog_id);\n         }\n@@ -960,7 +1008,7 @@\n             }\n         }\n \n-        $dirs = array(\n+        $dirs = [\n             $this->helper->get('upload_dir'),\n             $this->helper->get('tmp_dir'),\n             $this->helper->get('cache_dir'),\n@@ -970,7 +1018,7 @@\n             $this->helper->get('viewer_dir'),\n             $this->helper->get('bulk_dir'),\n             $this->helper->get('wpcf7_dir'),\n-        );\n+        ];\n \n         if (!is_main_site($blog_id)) {\n             array_unshift($dirs, $this->helper->get_wp_upload_dir('basedir'));\n@@ -1002,6 +1050,24 @@\n \n         $this->helper->load('db')->db_init($db_prefix);\n \n+        if (get_option('e2pdf_version') === false) {\n+            update_option('e2pdf_download_loader', '1');\n+            update_option('e2pdf_api_protocol', '1');\n+        }\n+\n+        if (class_exists('TRP_Translate_Press')) {\n+            if (get_option('e2pdf_pdf_translation') === false && get_option('e2pdf_translatepress_translation') !== false) {\n+                update_option('e2pdf_pdf_translation', get_option('e2pdf_translatepress_translation'));\n+            }\n+        }\n+\n+        if (get_option('e2pdf_pdf_translation_check') === false) {\n+            if (get_option('e2pdf_pdf_translation') === false && get_option('e2pdf_version') !== false && function_exists('icl_register_string')) {\n+                update_option('e2pdf_pdf_translation', '0');\n+            }\n+            update_option('e2pdf_pdf_translation_check', '1');\n+        }\n+\n         if (get_option('e2pdf_version') !== $this->helper->get('version')) {\n             update_option('e2pdf_version', $this->helper->get('version'));\n         }\n@@ -1012,12 +1078,6 @@\n             }\n         }\n \n-        if (class_exists('TRP_Translate_Press')) {\n-            if (get_option('e2pdf_pdf_translation') === false && get_option('e2pdf_translatepress_translation') !== false) {\n-                update_option('e2pdf_pdf_translation', get_option('e2pdf_translatepress_translation'));\n-            }\n-        }\n-\n         if (get_option('e2pdf_wc_invoice_template_id') !== false) {\n             update_option('e2pdf_wc_my_orders_actions_template_id', get_option('e2pdf_wc_invoice_template_id'));\n         }\n@@ -1046,6 +1106,12 @@\n             }\n         }\n \n+        if (get_option('e2pdf_gdrive_api_key') === false) {\n+            if (function_exists('wp_generate_password')) {\n+                update_option('e2pdf_gdrive_api_key', strtoupper(wordwrap(wp_generate_password('24', false), 4, '-', true)));\n+            }\n+        }\n+\n         if (get_option('e2pdf_adobe_api_version') === false) {\n             if (get_option('e2pdf_adobesign_client_id', '') && get_option('e2pdf_adobesign_client_secret', '')) {\n                 update_option('e2pdf_adobe_api_version', '0');\n@@ -1065,9 +1131,9 @@\n \n         $model_e2pdf_api = new Model_E2pdf_Api();\n         $model_e2pdf_api->set(\n-                array(\n+                [\n                     'action' => 'common\u002Factivate',\n-                )\n+                ]\n         );\n         $model_e2pdf_api->request();\n \n@@ -1140,9 +1206,9 @@\n \n         $model_e2pdf_api = new Model_E2pdf_Api();\n         $model_e2pdf_api->set(\n-                array(\n+                [\n                     'action' => 'common\u002Funinstall',\n-                )\n+                ]\n         );\n         $model_e2pdf_api->request();\n \n@@ -1153,6 +1219,7 @@\n         delete_option('e2pdf_adobe_api_key');\n         delete_option('e2pdf_adobe_api_version');\n         delete_option('e2pdf_cache_tmp_ttl');\n+        delete_option('e2pdf_pdf_translation_check');\n \n         \u002F\u002F phpcs:disable WordPress.DB.DirectDatabaseQuery.SchemaChange, WordPress.DB.PreparedSQL.NotPrepared\n         $wpdb->query('DROP TABLE IF EXISTS `' . $db_prefix . 'e2pdf_templates`');\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fmodel\u002Fe2pdf-options.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fmodel\u002Fe2pdf-options.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fmodel\u002Fe2pdf-options.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fmodel\u002Fe2pdf-options.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -32,6 +32,9 @@\n                     case 'caldera':\n                         $extension_title = 'Caldera Forms';\n                         break;\n+                    case 'calc':\n+                        $extension_title = 'Cost Calculator Builder';\n+                        break;\n                     case 'divi':\n                         $extension_title = 'Divi Contact Forms';\n                         break;\n@@ -169,6 +172,17 @@\n                         ),\n                     ),\n                     array(\n+                        'name' => __('API Transfer', 'e2pdf'),\n+                        'key' => 'e2pdf_api_protocol',\n+                        'value' => get_option('e2pdf_api_protocol', '0'),\n+                        'default_value' => '0',\n+                        'type' => 'select',\n+                        'options' => array(\n+                            '0' => 'Base64 Encoding',\n+                            '1' => 'Raw Encoding',\n+                        ),\n+                    ),\n+                    array(\n                         'name' => __('API Connection Timout (sec)', 'e2pdf'),\n                         'key' => 'e2pdf_connection_timeout',\n                         'value' => get_option('e2pdf_connection_timeout', '300'),\n@@ -210,7 +224,7 @@\n                         'key' => 'e2pdf_url_format',\n                         'value' => get_option('e2pdf_url_format', 'siteurl'),\n                         'default_value' => 'siteurl',\n-                        'type' => 'select',\n+                        'type' => function_exists('pll_home_url') || (function_exists('icl_t') && !defined('POLYLANG_VERSION')) ? 'hidden' : 'select',\n                         'options' => array(\n                             'siteurl' => 'WordPress Address (URL)',\n                             'home' => 'Site Address (URL)',\n@@ -348,6 +362,15 @@\n                         'placeholder' => '10',\n                     ),\n                     array(\n+                        'name' => __('Undo Limit', 'e2pdf'),\n+                        'key' => 'e2pdf_undo_limit',\n+                        'value' => get_option('e2pdf_undo_limit', '20'),\n+                        'default_value' => '20',\n+                        'type' => 'text',\n+                        'class' => 'e2pdf-numbers',\n+                        'placeholder' => '0',\n+                    ),\n+                    array(\n                         'name' => __('Revisions Limit', 'e2pdf'),\n                         'key' => 'e2pdf_revisions_limit',\n                         'value' => get_option('e2pdf_revisions_limit', '3'),\n@@ -421,6 +444,65 @@\n                     ),\n                 ),\n             ),\n+            'gdrive_group' => array(\n+                'name' => 'Google Drive',\n+                'action' => 'gdrive',\n+                'options' => array(\n+                    array(\n+                        'name' => 'Redirect URI',\n+                        'value' =>\n+                        site_url('\u002Fe2pdf-rpc\u002Fv1\u002Fgdrive\u002Fauth?api_key=' . get_option('e2pdf_gdrive_api_key')),\n+                        'default_value' => '',\n+                        'type' => 'text',\n+                        'readonly' => 'readonly',\n+                        'class' => 'e2pdf-copy-field',\n+                    ),\n+                    array(\n+                        'name' => 'Status',\n+                        'key' => 'e2pdf_gdrive_status',\n+                        'value' => get_option('e2pdf_gdrive_refresh_token') ? __('Authorized', 'e2pdf') : __('Not Authorized', 'e2pdf'),\n+                        'default_value' => '',\n+                        'type' => 'text',\n+                        'readonly' => 'readonly',\n+                    ),\n+                    array(\n+                        'name' => 'Refresh Token',\n+                        'key' => 'e2pdf_gdrive_refresh_token',\n+                        'value' => get_option('e2pdf_gdrive_refresh_token', ''),\n+                        'default_value' => '',\n+                        'type' => 'text',\n+                        'placeholder' => '',\n+                        'type' => get_option('e2pdf_debug', '0') ? 'text' : 'hidden',\n+                        'readonly' => 'readonly',\n+                    ),\n+                    array(\n+                        'name' => 'Access Token',\n+                        'key' => 'e2pdf_gdrive_access_token',\n+                        'value' => get_transient('e2pdf_gdrive_access_token') === false ? '' : get_transient('e2pdf_gdrive_access_token'),\n+                        'default_value' => '',\n+                        'type' => get_option('e2pdf_debug', '0') ? 'text' : 'hidden',\n+                        'placeholder' => '',\n+                        'readonly' => 'readonly',\n+                    ),\n+                    array(\n+                        'header' => 'Configuration',\n+                        'name' => 'Client ID',\n+                        'key' => 'e2pdf_gdrive_client_id',\n+                        'value' => get_option('e2pdf_gdrive_client_id', ''),\n+                        'default_value' => '',\n+                        'type' => 'text',\n+                        'placeholder' => '',\n+                    ),\n+                    array(\n+                        'name' => 'Client Secret',\n+                        'key' => 'e2pdf_gdrive_client_secret',\n+                        'value' => get_option('e2pdf_gdrive_client_secret', ''),\n+                        'default_value' => '',\n+                        'type' => 'password',\n+                        'placeholder' => '',\n+                    ),\n+                )\n+            ),\n             'adobesign_group' => array(\n                 'name' => 'Adobe Sign',\n                 'action' => 'adobesign',\n@@ -467,7 +549,7 @@\n                         'key' => 'e2pdf_adobesign_client_secret',\n                         'value' => get_option('e2pdf_adobesign_client_secret') === false ? '' : get_option('e2pdf_adobesign_client_secret'),\n                         'default_value' => '',\n-                        'type' => 'text',\n+                        'type' => 'password',\n                         'placeholder' => '',\n                     ),\n                     array(\n@@ -729,7 +811,13 @@\n             ),\n         );\n \n-        if (class_exists('TRP_Translate_Press') || class_exists('WeglotWP\\Services\\Translate_Service_Weglot') || $all) {\n+        if (\n+                class_exists('TRP_Translate_Press') ||\n+                class_exists('WeglotWP\\Services\\Translate_Service_Weglot') ||\n+                (function_exists('icl_register_string') && !defined('POLYLANG_VERSION')) ||\n+                defined('POLYLANG_VERSION') ||\n+                $all\n+        ) {\n             $options['translation_group'] = array(\n                 'name' => __('Translation', 'e2pdf'),\n                 'action' => 'translation',\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fmodel\u002Fe2pdf-shortcode.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fmodel\u002Fe2pdf-shortcode.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fmodel\u002Fe2pdf-shortcode.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fmodel\u002Fe2pdf-shortcode.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -13,242 +13,122 @@\n \n class Model_E2pdf_Shortcode extends Model_E2pdf_Model {\n \n-    private $entry;\n-    private $template;\n-    private $atts = [];\n-\n     \u002F\u002F e2pdf-attachment\n     public function e2pdf_attachment($atts = []) {\n \n         $response = '';\n \n         $atts = apply_filters('e2pdf_model_shortcode_e2pdf_attachment_atts', $atts);\n+        $attributes = (new Helper_E2pdf_Atts())->load($atts);\n \n-        $template_id = isset($atts['id']) ? (int) $atts['id'] : false;\n-        $dataset = isset($atts['dataset']) ? $atts['dataset'] : false;\n-        $dataset2 = isset($atts['dataset2']) ? $atts['dataset2'] : false;\n-        $pdf = isset($atts['pdf']) ? $atts['pdf'] : false;\n-        $attachment_id = isset($atts['attachment_id']) ? $atts['attachment_id'] : false;\n-        $apply = isset($atts['apply']) ? true : false;\n-        $wc_order_id = isset($atts['wc_order_id']) ? $atts['wc_order_id'] : false;\n-        $wc_product_item_id = isset($atts['wc_product_item_id']) ? $atts['wc_product_item_id'] : false;\n-\n-        $args = [];\n-        foreach ($atts as $att_key => $att_value) {\n-            if (substr($att_key, 0, 3) === 'arg') {\n-                $args[$att_key] = $att_value;\n-            }\n-        }\n-\n-        if ($pdf || $attachment_id) {\n-            if ($attachment_id) {\n-                $pdf = get_attached_file($attachment_id);\n-            }\n-            if (strpos($pdf, '\u002F') !== 0 && !preg_match('\u002F^[A-Za-z]:\u002F', $pdf)) {\n-                $pdf = ABSPATH . $pdf;\n-            }\n-            if ($apply && !$this->helper->load('filter')->is_stream($pdf) && file_exists($pdf) && $this->helper->load('filter')->is_downloadable($pdf)) {\n-                $pdf = apply_filters('e2pdf_model_e2pdf_shortcode_attachment_path', $pdf, $atts);\n-                if (isset($atts['name']) && $atts['name']) {\n-                    $name = $atts['name'];\n-                    $ext = pathinfo($pdf, PATHINFO_EXTENSION);\n-                    $tmp_dir = $this->helper->get('tmp_dir') . 'e2pdf' . md5($pdf . $name) . '\u002F';\n-                    $this->helper->create_dir($tmp_dir);\n-                    $file_name = $name . '.' . ($ext == 'jpg' ? 'jpg' : 'pdf');\n-                    $file_name = $this->helper->load('convert')->to_file_name($file_name);\n-                    $file_path = $tmp_dir . $file_name;\n-                    if (copy($pdf, $file_path)) {\n-                        $pdf = 'tmp:' . $file_path;\n-                    }\n+        if ($attributes->get('pdf') || $attributes->get('attachment_id') || $attributes->get('file_id')) {\n+            $pdf = $attributes->get('pdf');\n+            $downloadable = false;\n+            if ($attributes->get('file_id')) {\n+                $pdf = (new Model_E2pdf_Gdrive())->exists($attributes->get('file_id'));\n+                if ($pdf) {\n+                    $downloadable = $attributes->get('apply') && $pdf;\n                 }\n-                return $pdf;\n             } else {\n-                return $response;\n-            }\n-        }\n-\n-        if (!$apply || !$template_id || (!$dataset && !$dataset2)) {\n-            return $response;\n-        }\n-\n-        $template = new Model_E2pdf_Template();\n-        if ($template->load($template_id)) {\n-\n-            $entry = new Model_E2pdf_Entry();\n-\n-            $entry->set_data('template_id', $template_id);\n-            $template->extension()->set('template_id', $template_id);\n-            if ($dataset) {\n-                $entry->set_data('dataset', $dataset);\n-                $template->extension()->set('dataset', $dataset);\n-            }\n-            if ($dataset2) {\n-                $entry->set_data('dataset2', $dataset2);\n-                $template->extension()->set('dataset2', $dataset2);\n-            }\n-            if ($wc_order_id) {\n-                $entry->set_data('wc_order_id', $wc_order_id);\n-                $template->extension()->set('wc_order_id', $wc_order_id);\n-            }\n-            if ($wc_product_item_id) {\n-                $entry->set_data('wc_product_item_id', $wc_product_item_id);\n-                $template->extension()->set('wc_product_item_id', $wc_product_item_id);\n-            }\n-            if ($template->get('extension') == 'wordpress' && $template->get('item') == '-3') { \u002F\u002F phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedIf, WordPress.WP.CapitalPDangit.Misspelled\n-            } else {\n-                if (array_key_exists('user_id', $atts)) {\n-                    $user_id = (int) $atts['user_id'];\n-                    $entry->set_data('user_id', $user_id);\n-                    $template->extension()->set('user_id', $user_id);\n+                if ($attributes->get('attachment_id')) {\n+                    $pdf = get_attached_file($attributes->get('attachment_id'));\n                 } else {\n-                    $user_id = get_current_user_id();\n-                    $entry->set_data('user_id', $user_id);\n-                    $template->extension()->set('user_id', $user_id);\n+                    $pdf = $this->helper->load('convert')->to_file_dir($pdf);\n                 }\n-            }\n-            if (!empty($args)) {\n-                $entry->set_data('args', $args);\n-                $template->extension()->set('args', $args);\n-            }\n-            if ($template->extension()->get_storing_engine() !== false) {\n-                $entry->set_data('storing_engine', $template->extension()->get_storing_engine());\n-                $template->extension()->set('storing_engine', $template->extension()->get_storing_engine());\n+                if (strpos($pdf, '\u002F') !== 0 && !preg_match('\u002F^[A-Za-z]:\u002F', $pdf)) {\n+                    $pdf = ABSPATH . $pdf;\n+                }\n+                $downloadable = $attributes->get('apply') && !$this->helper->load('filter')->is_stream($pdf) && file_exists($pdf) && $this->helper->load('filter')->is_downloadable($pdf);\n             }\n \n-            $options = [];\n-            $options = apply_filters('e2pdf_model_shortcode_extension_options', $options, $template);\n-            $options = apply_filters('e2pdf_model_shortcode_e2pdf_attachment_extension_options', $options, $template);\n-            foreach ($options as $option_key => $option_value) {\n-                $template->extension()->set($option_key, $option_value);\n+            if (!$downloadable) {\n+                return $response;\n             }\n \n-            if ($template->extension()->verify() && $this->process_shortcode($template, 'e2pdf_attachment')) {\n-\n-                if (array_key_exists('inline', $atts)) {\n-                    $inline = $atts['inline'] == 'true' ? '1' : '0';\n-                    $entry->set_data('inline', $inline);\n-                }\n-                if (array_key_exists('flatten', $atts)) {\n-                    $flatten = strval((int) $atts['flatten']);\n-                    $entry->set_data('flatten', $flatten);\n-                    $template->set('flatten', $flatten);\n-                }\n-                if (array_key_exists('format', $atts)) {\n-                    $format = $atts['format'];\n-                    if ($template->set('format', $format)) {\n-                        $entry->set_data('format', $format);\n-                    }\n-                }\n-                if (array_key_exists('password', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $password = $template->extension()->render($atts['password']);\n-                    } else {\n-                        $password = $template->extension()->convert_shortcodes($atts['password'], true);\n-                    }\n-                    $entry->set_data('password', $password);\n-                    $template->set('password', $password);\n-                } else {\n-                    $template->set('password', $template->extension()->render($template->get('password')));\n-                }\n-                if (array_key_exists('dpdf', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $dpdf = $template->extension()->render($atts['dpdf']);\n-                    } else {\n-                        $dpdf = $template->extension()->convert_shortcodes($atts['dpdf'], true);\n-                    }\n-                    $entry->set_data('dpdf', $dpdf);\n-                    $template->set('dpdf', $dpdf);\n-                } else {\n-                    $template->set('dpdf', $template->extension()->render($template->get('dpdf')));\n-                }\n-                if (array_key_exists('meta_title', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $meta_title = $template->extension()->render($atts['meta_title']);\n-                    } else {\n-                        $meta_title = $template->extension()->convert_shortcodes($atts['meta_title'], true);\n-                    }\n-                    $entry->set_data('meta_title', $meta_title);\n-                    $template->set('meta_title', $meta_title);\n-                } else {\n-                    $template->set('meta_title', $template->extension()->render($template->get('meta_title')));\n-                }\n-                if (array_key_exists('meta_subject', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $meta_subject = $template->extension()->render($atts['meta_subject']);\n-                    } else {\n-                        $meta_subject = $template->extension()->convert_shortcodes($atts['meta_subject'], true);\n-                    }\n-                    $entry->set_data('meta_subject', $meta_subject);\n-                    $template->set('meta_subject', $meta_subject);\n-                } else {\n-                    $template->set('meta_subject', $template->extension()->render($template->get('meta_subject')));\n-                }\n-                if (array_key_exists('meta_author', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $meta_author = $template->extension()->render($atts['meta_author']);\n-                    } else {\n-                        $meta_author = $template->extension()->convert_shortcodes($atts['meta_author'], true);\n-                    }\n-                    $entry->set_data('meta_author', $meta_author);\n-                    $template->set('meta_author', $meta_author);\n-                } else {\n-                    $template->set('meta_author', $template->extension()->render($template->get('meta_author')));\n-                }\n-                if (array_key_exists('meta_keywords', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $meta_keywords = $template->extension()->render($atts['meta_keywords']);\n-                    } else {\n-                        $meta_keywords = $template->extension()->convert_shortcodes($atts['meta_keywords'], true);\n-                    }\n-                    $entry->set_data('meta_keywords', $meta_keywords);\n-                    $template->set('meta_keywords', $meta_keywords);\n-                } else {\n-                    $template->set('meta_keywords', $template->extension()->render($template->get('meta_keywords')));\n-                }\n-                if (array_key_exists('name', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $name = $template->extension()->render($atts['name']);\n-                    } else {\n-                        $name = $template->extension()->convert_shortcodes($atts['name'], true);\n-                    }\n-                    $entry->set_data('name', $name);\n-                    $template->set('name', $name);\n-                } else {\n-                    $template->set('name', $template->extension()->render($template->get('name')));\n+            $pdf = apply_filters('e2pdf_model_e2pdf_shortcode_attachment_path', $pdf, $atts);\n+            if (trim($attributes->get('name', ''))) {\n+                $name = $attributes->get('name');\n+                $ext = pathinfo($pdf, PATHINFO_EXTENSION);\n+                $tmp_dir = $this->helper->get('tmp_dir') . 'e2pdf' . md5($pdf . $name) . '\u002F';\n+                $this->helper->create_dir($tmp_dir);\n+                $filename = $this->helper->load('convert')->to_file_name($name . '.' . ($ext == 'jpg' ? 'jpg' : 'pdf'));\n+                $filepath = $tmp_dir . $filename;\n+                if (copy($pdf, $filepath)) {\n+                    $pdf = 'tmp:' . $filepath;\n                 }\n+            }\n+            return $pdf;\n+        }\n \n-                $template->extension()->set('entry', $entry);\n-                $template->fill();\n-                $request = $template->render();\n-\n-                if (!isset($request['error'])) {\n+        if (!$attributes->get('apply') || !$attributes->get('id') || (!$attributes->get('dataset') && !$attributes->get('dataset2'))) {\n+            return $response;\n+        }\n \n-                    $tmp_dir = $this->helper->get('tmp_dir') . 'e2pdf' . md5($entry->get('uid')) . '\u002F';\n-                    $this->helper->create_dir($tmp_dir);\n+        $template = new Model_E2pdf_Template();\n \n-                    if ($template->get('name')) {\n-                        $name = $template->get('name');\n-                    } else {\n-                        $name = $template->extension()->render($template->get_name());\n-                    }\n-                    $file_name = $name . '.' . $template->get('format');\n-                    $file_name = $this->helper->load('convert')->to_file_name($file_name);\n-                    $file_path = $tmp_dir . $file_name;\n+        if (!$template->load($attributes->get('id'))) {\n+            return $response;\n+        }\n \n-                    \u002F\u002F phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_read_file_put_contents, WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode\n-                    file_put_contents($file_path, base64_decode($request['file']));\n+        $entry = new Model_E2pdf_Entry();\n \n-                    if (file_exists($file_path)) {\n-                        if ($entry->load_by_uid()) {\n-                            $entry->set('pdf_num', $entry->get('pdf_num') + 1);\n-                            $entry->save();\n-                        }\n-                        $file_path = apply_filters('e2pdf_model_e2pdf_shortcode_attachment_path', $file_path, $atts);\n-                        return $file_path;\n+        $template->extension()->patch('template_id', $attributes->get('id'), $entry);\n+        $template->extension()->patch('dataset', $attributes->get('dataset'), $entry);\n+        $template->extension()->patch('dataset2', $attributes->get('dataset2'), $entry);\n+        $template->extension()->patch('wc_order_id', $attributes->get('wc_order_id'), $entry);\n+        $template->extension()->patch('wc_product_item_id', $attributes->get('wc_product_item_id'), $entry);\n+        \u002F\u002F phpcs:ignore WordPress.WP.CapitalPDangit.Misspelled\n+        if (!($template->get('extension') === 'wordpress' && $template->get('item') === '-3')) {\n+            $template->extension()->patch('user_id', $attributes->get('user_id'), $entry);\n+        }\n+        $template->extension()->patch('args', $attributes->get('arguments'), $entry);\n+        $template->extension()->patch('storing_engine', $template->extension()->get_storing_engine(), $entry);\n+\n+        $options = apply_filters('e2pdf_model_shortcode_extension_options', [], $template);\n+        $options = apply_filters('e2pdf_model_shortcode_e2pdf_attachment_extension_options', $options, $template);\n+        foreach ($options as $option_key => $option_value) {\n+            $template->extension()->set($option_key, $option_value);\n+        }\n+\n+        if ($template->extension()->verify() && $this->process_shortcode('e2pdf_attachment', $template, $attributes)) {\n+\n+            $template->patch('inline', $attributes->get('inline'), $entry, $attributes->get('filter'));\n+            $template->patch('flatten', $attributes->get('flatten'), $entry, $attributes->get('filter'));\n+            $template->patch('format', $attributes->get('format'), $entry, $attributes->get('filter'));\n+            $template->patch('password', $attributes->get('password'), $entry, $attributes->get('filter'));\n+            $template->patch('dpdf', $attributes->get('dpdf'), $entry, $attributes->get('filter'));\n+            $template->patch('name', $attributes->get('name'), $entry, $attributes->get('filter'));\n+            $template->patch('meta_title', $attributes->get('meta_title'), $entry, $attributes->get('filter'));\n+            $template->patch('meta_subject', $attributes->get('meta_subject'), $entry, $attributes->get('filter'));\n+            $template->patch('meta_author', $attributes->get('meta_author'), $entry, $attributes->get('filter'));\n+            $template->patch('meta_keywords', $attributes->get('meta_keywords'), $entry, $attributes->get('filter'));\n+\n+            $template->extension()->set('entry', $entry);\n+            $template->fill();\n+            $request = $template->render();\n+\n+            if (!isset($request['error'])) {\n+\n+                $tmp_dir = $this->helper->get('tmp_dir') . 'e2pdf' . md5($entry->get('uid')) . '\u002F';\n+                $this->helper->create_dir($tmp_dir);\n+\n+                $filename = $template->get('name') . '.' . $template->get('format');\n+                $filename = $this->helper->load('convert')->to_file_name($filename);\n+                $filepath = $tmp_dir . $filename;\n+\n+                \u002F\u002F phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_read_file_put_contents\n+                file_put_contents($filepath, $request['file'], LOCK_EX);\n+                if (file_exists($filepath)) {\n+                    if ($entry->load_by_uid()) {\n+                        $entry->set('pdf_num', $entry->get('pdf_num') + 1);\n+                        $entry->save();\n                     }\n+                    $filepath = apply_filters('e2pdf_model_e2pdf_shortcode_attachment_path', $filepath, $atts);\n+                    return $filepath;\n                 }\n             }\n         }\n+\n         return $response;\n     }\n \n@@ -260,38 +140,18 @@\n         }\n \n         $response = '';\n-        $atts = apply_filters(\n-                'e2pdf_model_shortcode_e2pdf_download_atts', $atts\n-        );\n-\n-        $template_id = isset($atts['id']) ? (int) $atts['id'] : false;\n-        $dataset = isset($atts['dataset']) ? $atts['dataset'] : false;\n-        $dataset2 = isset($atts['dataset2']) ? $atts['dataset2'] : false;\n-        $pdf = isset($atts['pdf']) ? $atts['pdf'] : false;\n-        $attachment_id = isset($atts['attachment_id']) ? $atts['attachment_id'] : false;\n-        $target = isset($atts['target']) ? $atts['target'] : '_blank';\n-        $site_url = isset($atts['site_url']) ? $atts['site_url'] : false;\n-        $wc_product_download = isset($atts['wc_product_download']) && $atts['wc_product_download'] == 'true' ? true : false;\n-        $wc_order_id = isset($atts['wc_order_id']) ? $atts['wc_order_id'] : false;\n-        $wc_product_item_id = isset($atts['wc_product_item_id']) ? $atts['wc_product_item_id'] : false;\n-        $local = isset($atts['local']) && $atts['local'] == 'true' ? true : false;\n-        $preload = isset($atts['preload']) && $atts['preload'] == 'true' ? true : false;\n-        $style = isset($atts['style']) && $atts['style'] ? explode(';', $atts['style']) : [];\n-        $output = isset($atts['output']) ? $atts['output'] : '';\n-        $print = isset($atts['print']) && $atts['print'] == 'true' ? true : false;\n         $iframe_download = false;\n \n-        \u002F* Backward compatiability *\u002F\n-        $esc_url_raw = isset($atts['esc_url_raw']) && $atts['esc_url_raw'] == 'true' ? true : false;\n-        if ($output == 'url' && $esc_url_raw) {\n-            $output = 'url_raw';\n-        }\n+        $atts = apply_filters('e2pdf_model_shortcode_e2pdf_download_atts', $atts);\n+        $attributes = (new Helper_E2pdf_Atts())->load($atts);\n+\n+        $target = $attributes->get('target', '_blank');\n \n         \u002F**\n          * WPBakery Page Builder Grid Item\n          * [e2pdf-download id=\"1\" dataset=\"{{ post_data:ID }}\"]\n          *\u002F\n-        if (strpos($dataset, 'post_data:ID') !== false) {\n+        if (strpos($attributes->get('dataset'), 'post_data:ID') !== false) {\n             $response .= '[e2pdf-download ';\n             foreach ($atts as $key => $value) {\n                 $response .= $key . '=\"' . str_replace('\"', '', $value) . '\" ';\n@@ -300,432 +160,158 @@\n             return $response;\n         }\n \n-        \u002F* Backward compatiability with old format since 1.13.07 *\u002F\n-        if (isset($atts['iframe-download'])) {\n-            $atts['iframe_download'] = $atts['iframe-download'];\n-        }\n-\n-        \u002F* Backward compatiability with old format since 1.09.05 *\u002F\n-        if (isset($atts['button-title'])) {\n-            $atts['button_title'] = $atts['button-title'];\n-        }\n-\n-        $args = [];\n-        foreach ($atts as $att_key => $att_value) {\n-            if (substr($att_key, 0, 3) === 'arg') {\n-                $args[$att_key] = $att_value;\n-            }\n-        }\n-\n-        if ($pdf || $attachment_id) {\n-            if ($attachment_id) {\n-                $pdf = get_attached_file($attachment_id);\n-            }\n-            if (strpos($pdf, '\u002F') !== 0 && !preg_match('\u002F^[A-Za-z]:\u002F', $pdf)) {\n-                $pdf = ABSPATH . $pdf;\n-            }\n-            if (!$this->helper->load('filter')->is_stream($pdf) && file_exists($pdf) && $this->helper->load('filter')->is_downloadable($pdf)) {\n-                $entry = new Model_E2pdf_Entry();\n-                if ($attachment_id) {\n-                    $entry->set_data('attachment_id', $attachment_id);\n-                } else {\n-                    $entry->set_data('pdf', $pdf);\n-                }\n-                if (array_key_exists('class', $atts)) {\n-                    $classes = explode(' ', $atts['class']);\n-                } else {\n-                    $classes = [];\n-                }\n-                $classes[] = 'e2pdf-download';\n-                $classes[] = 'e2pdf-format-pdf';\n-                $inline = '0';\n-                if (array_key_exists('inline', $atts)) {\n-                    $inline = $atts['inline'] == 'true' ? '1' : '0';\n-                    $entry->set_data('inline', $inline);\n-                }\n-                if ($inline) {\n-                    $classes[] = 'e2pdf-inline';\n-                }\n-                $auto = '0';\n-                if (array_key_exists('auto', $atts)) {\n-                    $auto = $atts['auto'] == 'true' ? '1' : '0';\n-                }\n-                if ($auto) {\n-                    $classes[] = 'e2pdf-auto';\n-                    if (array_key_exists('iframe_download', $atts) && $atts['iframe_download'] == 'true' && !$inline && !$print) {\n-                        $classes[] = 'e2pdf-iframe-download';\n-                        $iframe_download = true;\n-                    }\n+        if ($attributes->get('pdf') || $attributes->get('attachment_id') || $attributes->get('file_id')) {\n+            $pdf = $attributes->get('pdf');\n+            $downloadable = false;\n+            if ($attributes->get('file_id')) {\n+                $pdf = (new Model_E2pdf_Gdrive())->exists($attributes->get('file_id'));\n+                if ($pdf) {\n+                    $downloadable = true;\n                 }\n-                if (array_key_exists('name', $atts)) {\n-                    $name = $atts['name'];\n-                    $entry->set_data('name', $name);\n-                }\n-                if (array_key_exists('button_title', $atts)) {\n-                    $button_title = $atts['button_title'];\n+            } else {\n+                if ($attributes->get('attachment_id')) {\n+                    $pdf = get_attached_file($attributes->get('attachment_id'));\n                 } else {\n-                    $button_title = __('Download', 'e2pdf');\n+                    $pdf = $this->helper->load('convert')->to_file_dir($pdf);\n                 }\n-                $button_title = apply_filters('e2pdf_model_shortcode_e2pdf_download_button_title', $this->helper->load('filter')->filter_button_title($button_title), $atts);\n-\n-                if ($output == 'button_title') {\n-                    return $button_title;\n-                }\n-\n-                if ($local) {\n-                    $url = $attachment_id ? wp_get_attachment_url($entry->get_data('attachment_id')) : $this->helper->get_frontend_local_pdf_url($pdf);\n-                    switch ($output) {\n-                        case 'url':\n-                            $url = apply_filters('e2pdf_model_shortcode_e2pdf_download_output_url', $url, $atts);\n-                            $response = esc_url($url);\n-                            break;\n-                        case 'url_raw':\n-                            $url = apply_filters('e2pdf_model_shortcode_e2pdf_download_output_url', $url, $atts);\n-                            $response = esc_url_raw($url);\n-                            break;\n-                        case 'url_encode':\n-                            $url = apply_filters('e2pdf_model_shortcode_e2pdf_download_output_url', $url, $atts);\n-                            \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode\n-                            $response = urlencode(esc_url_raw($url));\n-                            break;\n-                        default:\n-                            $url = apply_filters('e2pdf_model_shortcode_e2pdf_download_pdf_url', $url, $atts);\n-                            if ($entry->get_data('name')) {\n-                                $download_name = $entry->get_data('name');\n-                            } else {\n-                                $download_name = basename($pdf, '.' . pathinfo($pdf, PATHINFO_EXTENSION));\n-                            }\n-                            $download_name = apply_filters('e2pdf_controller_frontend_e2pdf_download_name', $download_name, $entry->get('uid'), $entry->get('entry'));\n-                            $file_download = '';\n-                            if ($print && $this->helper->load('server')->isPrintingSupported()) {\n-                                $classes[] = 'e2pdf-print-pdf';\n-                                $url = add_query_arg(['v' => $this->helper->get('version')], $url);\n-                            } elseif (get_option('e2pdf_download_loader', '0') == '1' && $this->helper->load('server')->isLoaderSupported()) {\n-                                if ($inline) {\n-                                    $target = '_blank';\n-                                } else {\n-                                    $file_download = 'download=\"' . esc_attr($download_name . '.' . (pathinfo($pdf, PATHINFO_EXTENSION))) . '\"';\n-                                    $classes[] = 'e2pdf-download-loader';\n-                                }\n-                            }\n-                            $response = '\u003Ca rel=\"nofollow\" ' . $file_download . ' id=\"e2pdf-download\" class=\"' . esc_attr(implode(' ', $classes)) . '\" style=\"' . esc_attr(implode(';', $style)) . '\" target=\"' . esc_attr($target) . '\" href=\"' . esc_url($url) . '\">' . $button_title . '\u003C\u002Fa>';\n-                            if ($iframe_download) {\n-                                $url = add_query_arg(array('v' => $this->helper->get('version')), $url);\n-                                if ($preload) {\n-                                    $response .= '\u003Ciframe class=\"e2pdf-preload\" style=\"width:0;height:0;border:0;border:none;\" preload=\"' . esc_url($url) . '\">\u003C\u002Fiframe>';\n-                                } else {\n-                                    $response .= '\u003Ciframe style=\"width:0;height:0;border:0;border:none;\" src=\"' . esc_url($url) . '\">\u003C\u002Fiframe>';\n-                                }\n-                            }\n-                            break;\n-                    }\n-                } else {\n-                    if (!$entry->load_by_uid()) {\n-                        $entry->save();\n-                    }\n-                    if ($entry->get('ID')) {\n-                        $url_data = [\n-                            'page' => 'e2pdf-download',\n-                            'uid' => $entry->get('uid'),\n-                        ];\n-\n-                        $url_data = apply_filters('e2pdf_model_shortcode_url_data', $url_data, $atts);\n-                        $url_data = apply_filters('e2pdf_model_shortcode_e2pdf_download_url_data', $url_data, $atts);\n-\n-                        $url = $this->helper->get_frontend_pdf_url(\n-                                $url_data, $site_url,\n-                                [\n-                                    'e2pdf_model_shortcode_site_url',\n-                                    'e2pdf_model_shortcode_e2pdf_download_site_url',\n-                                ]\n-                        );\n-                        switch ($output) {\n-                            case 'url':\n-                                $url = apply_filters('e2pdf_model_shortcode_e2pdf_download_output_url', $url, $atts);\n-                                $response = esc_url($url);\n-                                break;\n-                            case 'url_raw':\n-                                $url = apply_filters('e2pdf_model_shortcode_e2pdf_download_output_url', $url, $atts);\n-                                $response = esc_url_raw($url);\n-                                break;\n-                            case 'url_encode':\n-                                $url = apply_filters('e2pdf_model_shortcode_e2pdf_download_output_url', $url, $atts);\n-                                \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode\n-                                $response = urlencode(esc_url_raw($url));\n-                                break;\n-                            default:\n-                                $url = apply_filters('e2pdf_model_shortcode_e2pdf_download_pdf_url', $url, $atts);\n-                                if ($entry->get_data('name')) {\n-                                    $download_name = $entry->get_data('name');\n-                                } else {\n-                                    $download_name = basename($pdf, '.' . pathinfo($pdf, PATHINFO_EXTENSION));\n-                                }\n-                                $download_name = apply_filters('e2pdf_controller_frontend_e2pdf_download_name', $download_name, $entry->get('uid'), $entry->get('entry'));\n-\n-                                $file_download = '';\n-                                if ($print && $this->helper->load('server')->isPrintingSupported()) {\n-                                    $classes[] = 'e2pdf-print-pdf';\n-                                    $url = add_query_arg(['v' => $this->helper->get('version')], $url);\n-                                } elseif (get_option('e2pdf_download_loader', '0') == '1' && $this->helper->load('server')->isLoaderSupported()) {\n-                                    if ($inline) {\n-                                        $target = '_blank';\n-                                    } else {\n-                                        $file_download = 'download=\"' . esc_attr($download_name . '.' . (pathinfo($pdf, PATHINFO_EXTENSION))) . '\"';\n-                                        $classes[] = 'e2pdf-download-loader';\n-                                    }\n-                                }\n-\n-                                $response = '\u003Ca rel=\"nofollow\"  ' . $file_download . ' id=\"e2pdf-download\" class=\"' . esc_attr(implode(' ', $classes)) . '\" style=\"' . esc_attr(implode(';', $style)) . '\" target=\"' . esc_attr($target) . '\" href=\"' . esc_url($url) . '\">' . $button_title . '\u003C\u002Fa>';\n-                                if ($iframe_download) {\n-                                    $url = add_query_arg(array('v' => $this->helper->get('version')), $url);\n-                                    if ($preload) {\n-                                        $response .= '\u003Ciframe class=\"e2pdf-preload\" style=\"width:0;height:0;border:0;border:none;\" preload=\"' . esc_url($url) . '\">\u003C\u002Fiframe>';\n-                                    } else {\n-                                        $response .= '\u003Ciframe style=\"width:0;height:0;border:0;border:none;\" src=\"' . esc_url($url) . '\">\u003C\u002Fiframe>';\n-                                    }\n-                                }\n-                                break;\n-                        }\n-                    }\n+                if (strpos($pdf, '\u002F') !== 0 && !preg_match('\u002F^[A-Za-z]:\u002F', $pdf)) {\n+                    $pdf = ABSPATH . $pdf;\n                 }\n+                $downloadable = !$this->helper->load('filter')->is_stream($pdf) && file_exists($pdf) && $this->helper->load('filter')->is_downloadable($pdf);\n             }\n-            return $response;\n-        }\n \n-        \u002F\u002F phpcs:disable WordPress.Security.NonceVerification.Recommended\n-        if (isset($_GET['e2pdf-hash']) && !$dataset) {\n-            $hash_id = sanitize_text_field(wp_unslash($_GET['e2pdf-hash']));\n-            $dataset = get_transient('e2pdf_hash_' . $hash_id);\n-            if ($dataset && apply_filters('e2pdf_hash_clear', true, 'shortcode', $atts) && has_action('shutdown', array($this, 'action_e2pdf_hash_clear')) === false) {\n-                add_action('shutdown', [$this, 'action_e2pdf_hash_clear']);\n+            if (!$downloadable) {\n+                return $response;\n             }\n-        }\n-        \u002F\u002F phpcs:enable\n-\n-        if (!$template_id || (!$dataset && !$dataset2)) {\n-            return $response;\n-        }\n-\n-        $template = new Model_E2pdf_Template();\n-        if ($template->load($template_id, false)) {\n-\n             $entry = new Model_E2pdf_Entry();\n-            $entry->set_data('template_id', $template_id);\n-            $template->extension()->set('template_id', $template_id);\n-            if ($dataset) {\n-                $entry->set_data('dataset', $dataset);\n-                $template->extension()->set('dataset', $dataset);\n-            }\n-            if ($dataset2) {\n-                $entry->set_data('dataset2', $dataset2);\n-                $template->extension()->set('dataset2', $dataset2);\n-            }\n-            if ($wc_order_id) {\n-                $entry->set_data('wc_order_id', $wc_order_id);\n-                $template->extension()->set('wc_order_id', $wc_order_id);\n-            }\n-            if ($wc_product_item_id) {\n-                $entry->set_data('wc_product_item_id', $wc_product_item_id);\n-                $template->extension()->set('wc_product_item_id', $wc_product_item_id);\n-            }\n-            if ($template->get('extension') == 'wordpress' && $template->get('item') == '-3') { \u002F\u002F phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedIf, WordPress.WP.CapitalPDangit.Misspelled\n-            } else {\n-                if (array_key_exists('user_id', $atts)) {\n-                    $user_id = (int) $atts['user_id'];\n-                    $entry->set_data('user_id', $user_id);\n-                    $template->extension()->set('user_id', $user_id);\n-                } else {\n-                    $user_id = get_current_user_id();\n-                    $entry->set_data('user_id', $user_id);\n-                    $template->extension()->set('user_id', $user_id);\n-                }\n-            }\n-            if (!empty($args)) {\n-                $entry->set_data('args', $args);\n-                $template->extension()->set('args', $args);\n-            }\n-            if ($template->extension()->get_storing_engine() !== false) {\n-                $entry->set_data('storing_engine', $template->extension()->get_storing_engine());\n-                $template->extension()->set('storing_engine', $template->extension()->get_storing_engine());\n-            }\n-            if (array_key_exists('class', $atts)) {\n-                $classes = explode(' ', $atts['class']);\n+            if ($attributes->get('attachment_id')) {\n+                $entry->set_data('attachment_id', $attributes->get('attachment_id'));\n+            } elseif ($attributes->get('file_id')) {\n+                $entry->set_data('file_id', $attributes->get('file_id'));\n             } else {\n-                $classes = [];\n+                $entry->set_data('pdf', $pdf);\n             }\n-            $classes[] = 'e2pdf-download';\n \n-            $options = [];\n-            $options = apply_filters('e2pdf_model_shortcode_extension_options', $options, $template);\n-            $options = apply_filters('e2pdf_model_shortcode_e2pdf_download_extension_options', $options, $template);\n+            $classes = array_merge($attributes->get('class'), ['e2pdf-download', 'e2pdf-format-pdf']);\n \n-            foreach ($options as $option_key => $option_value) {\n-                $template->extension()->set($option_key, $option_value);\n+            $inline = '0';\n+            if ($attributes->get('inline') !== false) {\n+                $inline = $attributes->get('inline');\n+                $entry->set_data('inline', $inline);\n+            }\n+            if ($inline) {\n+                $classes[] = 'e2pdf-inline';\n             }\n \n-            if ($template->extension()->verify() && $this->process_shortcode($template, 'e2pdf_download')) {\n-\n-                if (array_key_exists('inline', $atts)) {\n-                    $inline = $atts['inline'] == 'true' ? '1' : '0';\n-                    $entry->set_data('inline', $inline);\n-                } else {\n-                    $inline = $template->get('inline');\n-                }\n-\n-                if ($inline) {\n-                    $classes[] = 'e2pdf-inline';\n-                }\n-                if (array_key_exists('auto', $atts)) {\n-                    $auto = $atts['auto'] == 'true' ? '1' : '0';\n-                } else {\n-                    $auto = $template->get('auto');\n-                }\n-\n-                if ($auto) {\n-                    $classes[] = 'e2pdf-auto';\n-                    if (array_key_exists('iframe_download', $atts) && $atts['iframe_download'] == 'true' && !$inline && !$print) {\n-                        $classes[] = 'e2pdf-iframe-download';\n-                        $iframe_download = true;\n-                    }\n-                }\n-\n-                if (array_key_exists('flatten', $atts)) {\n-                    $flatten = strval((int) $atts['flatten']);\n-                    $entry->set_data('flatten', $flatten);\n+            $auto = $attributes->get('auto', '0');\n+            if ($auto) {\n+                $classes[] = 'e2pdf-auto';\n+                if ($attributes->get('iframe_download')) {\n+                    $classes[] = 'e2pdf-iframe-download';\n+                    $iframe_download = true;\n                 }\n+            }\n \n-                if (array_key_exists('format', $atts)) {\n-                    $format = $atts['format'];\n-                    if ($template->set('format', $format)) {\n-                        $entry->set_data('format', $format);\n-                    }\n-                }\n+            if ($attributes->get('name') !== false) {\n+                $entry->set_data('name', $attributes->get('name'));\n+            }\n \n-                $classes[] = 'e2pdf-format-' . $template->get('format');\n+            $button_title = apply_filters('e2pdf_model_shortcode_e2pdf_download_button_title', $attributes->button_title(), $atts);\n+            if ($attributes->get('output') === 'button_title') {\n+                return $button_title;\n+            }\n \n-                if (array_key_exists('button_title', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $button_title = $template->extension()->render($atts['button_title']);\n+            if ($attributes->get('local')) {\n+                if ($attributes->get('file_id')) {\n+                    if ($inline) {\n+                        $url = 'https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F' . $entry->get_data('file_id') . '\u002Fview';\n                     } else {\n-                        $button_title = $template->extension()->convert_shortcodes($atts['button_title'], true);\n+                        $url = 'https:\u002F\u002Fdrive.google.com\u002Fuc?id=' . $entry->get_data('file_id') . '&export=download';\n                     }\n-                } elseif ($template->extension()->render($template->get('button_title')) !== '') {\n-                    $button_title = $template->extension()->render($template->get('button_title'));\n                 } else {\n-                    $button_title = __('Download', 'e2pdf');\n-                }\n-                $button_title = apply_filters('e2pdf_model_shortcode_e2pdf_download_button_title', $this->helper->load('filter')->filter_button_title($button_title), $atts);\n-\n-                if ($output == 'button_title') {\n-                    return $button_title;\n-                }\n-\n-                if (array_key_exists('password', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $password = $template->extension()->render($atts['password']);\n-                    } else {\n-                        $password = $template->extension()->convert_shortcodes($atts['password'], true);\n-                    }\n-                    $entry->set_data('password', $password);\n-                }\n-\n-                if (array_key_exists('dpdf', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $dpdf = $template->extension()->render($atts['dpdf']);\n-                    } else {\n-                        $dpdf = $template->extension()->convert_shortcodes($atts['dpdf'], true);\n-                    }\n-                    $entry->set_data('dpdf', $dpdf);\n-                }\n-\n-                if (array_key_exists('meta_title', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $meta_title = $template->extension()->render($atts['meta_title']);\n-                    } else {\n-                        $meta_title = $template->extension()->convert_shortcodes($atts['meta_title'], true);\n-                    }\n-                    $entry->set_data('meta_title', $meta_title);\n-                }\n-\n-                if (array_key_exists('meta_subject', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $meta_subject = $template->extension()->render($atts['meta_subject']);\n-                    } else {\n-                        $meta_subject = $template->extension()->convert_shortcodes($atts['meta_subject'], true);\n-                    }\n-                    $entry->set_data('meta_subject', $meta_subject);\n+                    $url = $attributes->get('attachment_id') ? wp_get_attachment_url($entry->get_data('attachment_id')) : $this->helper->get_frontend_local_pdf_url($pdf);\n                 }\n+                switch ($attributes->get('output')) {\n+                    case 'url':\n+                        $url = apply_filters('e2pdf_model_shortcode_e2pdf_download_output_url', $url, $atts);\n+                        $response = esc_url($url);\n+                        break;\n+                    case 'url_raw':\n+                        $url = apply_filters('e2pdf_model_shortcode_e2pdf_download_output_url', $url, $atts);\n+                        $response = esc_url_raw($url);\n+                        break;\n+                    case 'url_encode':\n+                        $url = apply_filters('e2pdf_model_shortcode_e2pdf_download_output_url', $url, $atts);\n+                        \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode\n+                        $response = urlencode(esc_url_raw($url));\n+                        break;\n+                    default:\n+                        $url = apply_filters('e2pdf_model_shortcode_e2pdf_download_pdf_url', $url, $atts);\n+                        $file_download = '';\n+                        if ($attributes->get('print') && $this->helper->load('server')->isPrintingSupported()) {\n+                            $classes[] = 'e2pdf-print-pdf';\n+                            $url = add_query_arg(['v' => $this->helper->get('version')], $url);\n+                        } elseif (get_option('e2pdf_download_loader', '0') == '1' && $this->helper->load('server')->isLoaderSupported()) {\n+                            if ($inline) {\n+                                $target = '_blank';\n+                            } else {\n+                                $download_name = $entry->get_data('name') ? $entry->get_data('name') : basename($pdf, '.' . pathinfo($pdf, PATHINFO_EXTENSION));\n+                                $download_name = apply_filters('e2pdf_controller_frontend_e2pdf_download_name', $download_name, $entry->get('uid'), $entry->get('entry'));\n+                                $file_download = 'download=\"' . esc_attr($download_name . '.' . (pathinfo($pdf, PATHINFO_EXTENSION))) . '\"';\n+                                $classes[] = 'e2pdf-download-loader';\n+                                if ($this->helper->load('server')->isIOS() && $this->helper->load('server')->isSafari()) {\n+                                    $classes[] = 'e2pdf-ios-safari-loader';\n+                                }\n+                            }\n+                        }\n \n-                if (array_key_exists('meta_author', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $meta_author = $template->extension()->render($atts['meta_author']);\n-                    } else {\n-                        $meta_author = $template->extension()->convert_shortcodes($atts['meta_author'], true);\n-                    }\n-                    $entry->set_data('meta_author', $meta_author);\n-                }\n+                        $lid = uniqid('', true);\n+                        $response = '\u003Ca lid=\"' . esc_attr($lid) . '\" rel=\"nofollow\" ' . $file_download . ' id=\"e2pdf-download\" class=\"' . esc_attr(implode(' ', $classes)) . '\" style=\"' . esc_attr(implode(';', $attributes->get('style'))) . '\" target=\"' . esc_attr($target) . '\" href=\"' . esc_url($url) . '\">' . $button_title . '\u003C\u002Fa>';\n+                        if ($iframe_download) {\n+                            $url = add_query_arg(['v' => $this->helper->get('version')], $url);\n \n-                if (array_key_exists('meta_keywords', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $meta_keywords = $template->extension()->render($atts['meta_keywords']);\n-                    } else {\n-                        $meta_keywords = $template->extension()->convert_shortcodes($atts['meta_keywords'], true);\n-                    }\n-                    $entry->set_data('meta_keywords', $meta_keywords);\n-                }\n+                            $src = $attributes->get('preload') ? 'preload' : 'src';\n+                            $preload_class = $attributes->get('preload') ? 'e2pdf-preload' : '';\n \n-                if (array_key_exists('name', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $name = $template->extension()->render($atts['name']);\n-                    } else {\n-                        $name = $template->extension()->convert_shortcodes($atts['name'], true);\n-                    }\n-                    $entry->set_data('name', $name);\n-                    $template->set('name', $name);\n-                } else {\n-                    $template->set('name', $template->extension()->render($template->get('name')));\n+                            if ($inline || (get_option('e2pdf_download_loader', '0') == '1' && $this->helper->load('server')->isLoaderSupported())) {\n+                                $response .= '\u003Cimg class=\"' . esc_attr($preload_class) . '\" onload=\"e2pdfViewer.autoDownload(\\'' . esc_attr($lid) . '\\');\" style=\"display:none\" ' . $src . '=\"' . $attributes->get('iframe_loader') . '\">';\n+                            } else {\n+                                $response .= '\u003Ciframe class=\"' . esc_attr($preload_class) . '\" style=\"width:0;height:0;border-width:0;border:none;\" ' . $src . '=\"' . esc_url($url) . '\">\u003C\u002Fiframe>';\n+                            }\n+                        }\n+                        break;\n                 }\n-\n+            } else {\n                 if (!$entry->load_by_uid()) {\n                     $entry->save();\n                 }\n-\n                 if ($entry->get('ID')) {\n-\n-                    $url_data = array(\n+                    $url_data = [\n                         'page' => 'e2pdf-download',\n                         'uid' => $entry->get('uid'),\n-                    );\n-\n-                    if ($template->get('name')) {\n-                        $download_name = $template->get('name');\n-                    } else {\n-                        $download_name = $template->extension()->render($template->get_name());\n-                    }\n-                    $download_name = apply_filters('e2pdf_controller_frontend_e2pdf_download_name', $download_name, $entry->get('uid'), $entry->get('entry'));\n-\n-                    if ($wc_product_download) {\n-                        $url_data['#saveName'] = '\u002F' . $download_name . '.' . $template->get('format');\n-                    }\n+                    ];\n \n-                    $url_data = apply_filters('e2pdf_model_shortcode_url_data', $url_data, $atts);\n-                    $url_data = apply_filters('e2pdf_model_shortcode_e2pdf_download_url_data', $url_data, $atts);\n+                    $url_data = apply_filters(\n+                            'e2pdf_model_shortcode_e2pdf_download_url_data',\n+                            apply_filters('e2pdf_model_shortcode_url_data', $url_data, $atts),\n+                            $atts\n+                    );\n \n                     $url = $this->helper->get_frontend_pdf_url(\n-                            $url_data, $site_url,\n+                            $url_data, $attributes->get('site_url'),\n                             [\n                                 'e2pdf_model_shortcode_site_url',\n                                 'e2pdf_model_shortcode_e2pdf_download_site_url',\n                             ]\n                     );\n-                    switch ($output) {\n+                    switch ($attributes->get('output')) {\n                         case 'url':\n                             $url = apply_filters('e2pdf_model_shortcode_e2pdf_download_output_url', $url, $atts);\n                             $response = esc_url($url);\n                             break;\n                         case 'url_raw':\n-                            $url = esc_url_raw($url);\n-                            $response = apply_filters('e2pdf_model_shortcode_e2pdf_download_output_url', $url, $atts);\n+                            $url = apply_filters('e2pdf_model_shortcode_e2pdf_download_output_url', $url, $atts);\n+                            $response = esc_url_raw($url);\n                             break;\n                         case 'url_encode':\n                             $url = apply_filters('e2pdf_model_shortcode_e2pdf_download_output_url', $url, $atts);\n@@ -733,378 +319,319 @@\n                             $response = urlencode(esc_url_raw($url));\n                             break;\n                         default:\n-                            $url = apply_filters('e2pdf_model_shortcode_e2pdf_download_pdf_url', $url, $atts);\n                             $file_download = '';\n-                            if ($print && $this->helper->load('server')->isPrintingSupported()) {\n+                            $url = apply_filters('e2pdf_model_shortcode_e2pdf_download_pdf_url', $url, $atts);\n+                            if ($attributes->get('print') && $this->helper->load('server')->isPrintingSupported()) {\n                                 $classes[] = 'e2pdf-print-pdf';\n                                 $url = add_query_arg(['v' => $this->helper->get('version')], $url);\n                             } elseif (get_option('e2pdf_download_loader', '0') == '1' && $this->helper->load('server')->isLoaderSupported()) {\n                                 if ($inline) {\n                                     $target = '_blank';\n                                 } else {\n-                                    $file_download = 'download=\"' . esc_attr($download_name) . '.' . $template->get('format') . '\"';\n+                                    $download_name = $entry->get_data('name') ? $entry->get_data('name') : basename($pdf, '.' . pathinfo($pdf, PATHINFO_EXTENSION));\n+                                    $download_name = apply_filters('e2pdf_controller_frontend_e2pdf_download_name', $download_name, $entry->get('uid'), $entry->get('entry'));\n+                                    $file_download = 'download=\"' . esc_attr($download_name . '.' . (pathinfo($pdf, PATHINFO_EXTENSION))) . '\"';\n                                     $classes[] = 'e2pdf-download-loader';\n+                                    if ($this->helper->load('server')->isIOS() && $this->helper->load('server')->isSafari()) {\n+                                        $classes[] = 'e2pdf-ios-safari-loader';\n+                                    }\n                                 }\n                             }\n \n-                            $response = '\u003Ca rel=\"nofollow\" ' . $file_download . ' id=\"e2pdf-download\" class=\"' . esc_attr(implode(' ', $classes)) . '\" style=\"' . esc_attr(implode(';', $style)) . '\" target=\"' . esc_attr($target) . '\" href=\"' . esc_url($url) . '\">' . $button_title . '\u003C\u002Fa>';\n+                            $lid = uniqid('', true);\n+                            $response = '\u003Ca lid=\"' . esc_attr($lid) . '\" rel=\"nofollow\" ' . $file_download . ' id=\"e2pdf-download\" class=\"' . esc_attr(implode(' ', $classes)) . '\" style=\"' . esc_attr(implode(';', $attributes->get('style'))) . '\" target=\"' . esc_attr($target) . '\" href=\"' . esc_url($url) . '\">' . $button_title . '\u003C\u002Fa>';\n                             if ($iframe_download) {\n-                                $url = add_query_arg(array('v' => $this->helper->get('version')), $url);\n-                                if ($preload) {\n-                                    $response .= '\u003Ciframe class=\"e2pdf-preload\" style=\"width:0;height:0;border:0;border:none;\" preload=\"' . esc_url($url) . '\">\u003C\u002Fiframe>';\n+                                $url = add_query_arg(['v' => $this->helper->get('version')], $url);\n+\n+                                $src = $attributes->get('preload') ? 'preload' : 'src';\n+                                $preload_class = $attributes->get('preload') ? 'e2pdf-preload' : '';\n+\n+                                if ($inline || (get_option('e2pdf_download_loader', '0') == '1' && $this->helper->load('server')->isLoaderSupported())) {\n+                                    $response .= '\u003Cimg class=\"' . esc_attr($preload_class) . '\" onload=\"e2pdfViewer.autoDownload(\\'' . esc_attr($lid) . '\\');\" style=\"display:none\" ' . $src . '=\"' . $attributes->get('iframe_loader') . '\">';\n                                 } else {\n-                                    $response .= '\u003Ciframe style=\"width:0;height:0;border:0;border:none;\" src=\"' . esc_url($url) . '\">\u003C\u002Fiframe>';\n+                                    $response .= '\u003Ciframe class=\"' . esc_attr($preload_class) . '\" style=\"width:0;height:0;border-width:0;border:none;\" ' . $src . '=\"' . esc_url($url) . '\">\u003C\u002Fiframe>';\n                                 }\n                             }\n                             break;\n                     }\n                 }\n             }\n+            return $response;\n         }\n-        return $response;\n-    }\n-\n-    \u002F\u002F e2pdf-save\n-    public function e2pdf_save($atts = []) {\n-\n-        $response = '';\n-\n-        $atts = apply_filters('e2pdf_model_shortcode_e2pdf_save_atts', $atts);\n-        $template_id = isset($atts['id']) ? (int) $atts['id'] : false;\n-        $dataset = isset($atts['dataset']) ? $atts['dataset'] : false;\n-        $dataset2 = isset($atts['dataset2']) ? $atts['dataset2'] : false;\n-        $download = isset($atts['download']) && $atts['download'] == 'true' ? true : false;\n-        $view = isset($atts['view']) && $atts['view'] == 'true' ? true : false;\n-        $attachment = isset($atts['attachment']) && $atts['attachment'] == 'true' ? true : false;\n-        $zapier = isset($atts['zapier']) && $atts['zapier'] == 'true' ? true : false;\n-        $output = isset($atts['output']) ? $atts['output'] : '';\n-        \u002F* Backward compatiability *\u002F\n-        $esc_url_raw = isset($atts['esc_url_raw']) && $atts['esc_url_raw'] == 'true' ? true : false;\n-        if ($output == 'url' && $esc_url_raw) {\n-            $output = 'url_raw';\n-        }\n-        \u002F* Backward Compatibility *\u002F\n-        $overwrite = '1';\n-        if (isset($atts['overwrite'])) {\n-            $overwrite = $atts['overwrite'] == 'false' ? '0' : $atts['overwrite'];\n-        }\n-        $apply = isset($atts['apply']) ? true : false;\n-        $dir = isset($atts['dir']) ? $atts['dir'] : false;\n-        $create_dir = isset($atts['create_dir']) && $atts['create_dir'] == 'true' ? true : false;\n-        $create_index = isset($atts['create_index']) && $atts['create_index'] == 'false' ? false : true;\n-        $create_htaccess = isset($atts['create_htaccess']) && $atts['create_htaccess'] == 'false' ? false : true;\n-        $wc_order_id = isset($atts['wc_order_id']) ? $atts['wc_order_id'] : false;\n-        $wc_product_item_id = isset($atts['wc_product_item_id']) ? $atts['wc_product_item_id'] : false;\n-        $local = isset($atts['local']) && $atts['local'] == 'true' ? true : false;\n-        $site_url = isset($atts['site_url']) ? $atts['site_url'] : false;\n-        $media = isset($atts['media']) && $atts['media'] == 'true' ? true : false;\n \n-        $args = [];\n-        foreach ($atts as $att_key => $att_value) {\n-            if (substr($att_key, 0, 3) === 'arg') {\n-                $args[$att_key] = $att_value;\n+        \u002F\u002F phpcs:disable WordPress.Security.NonceVerification.Recommended\n+        if (isset($_GET['e2pdf-hash']) && !$attributes->get('dataset')) {\n+            $hash_id = sanitize_text_field(wp_unslash($_GET['e2pdf-hash']));\n+            $attributes->set('dataset', get_transient('e2pdf_hash_' . $hash_id));\n+            if ($attributes->get('dataset') && apply_filters('e2pdf_hash_clear', true, 'shortcode', $atts) && has_action('shutdown', [$this, 'action_e2pdf_hash_clear']) === false) {\n+                add_action('shutdown', [$this, 'action_e2pdf_hash_clear']);\n             }\n         }\n+        \u002F\u002F phpcs:enable\n \n-        if (!$apply || !$template_id || (!$dataset && !$dataset2)) {\n+        if (!$attributes->get('id') || (!$attributes->get('dataset') && !$attributes->get('dataset2'))) {\n             return $response;\n         }\n \n         $template = new Model_E2pdf_Template();\n+        if (!$template->load($attributes->get('id'), false)) {\n+            return $response;\n+        }\n \n-        if ($template->load($template_id)) {\n+        $entry = new Model_E2pdf_Entry();\n \n-            $entry = new Model_E2pdf_Entry();\n+        $template->extension()->patch('template_id', $attributes->get('id'), $entry);\n+        $template->extension()->patch('dataset', $attributes->get('dataset'), $entry);\n+        $template->extension()->patch('dataset2', $attributes->get('dataset2'), $entry);\n+        $template->extension()->patch('wc_order_id', $attributes->get('wc_order_id'), $entry);\n+        $template->extension()->patch('wc_product_item_id', $attributes->get('wc_product_item_id'), $entry);\n+        \u002F\u002F phpcs:ignore WordPress.WP.CapitalPDangit.Misspelled\n+        if (!($template->get('extension') === 'wordpress' && $template->get('item') === '-3')) {\n+            $template->extension()->patch('user_id', $attributes->get('user_id'), $entry);\n+        }\n+        $template->extension()->patch('args', $attributes->get('arguments'), $entry);\n+        $template->extension()->patch('storing_engine', $template->extension()->get_storing_engine(), $entry);\n \n-            $template->extension()->set('template_id', $template_id);\n-            if ($media) {\n-                $entry->set_data('dataset', $dataset);\n-            }\n-            if ($dataset) {\n-                $template->extension()->set('dataset', $dataset);\n-                if ($media) {\n-                    $entry->set_data('dataset', $dataset);\n-                }\n-            }\n-            if ($dataset2) {\n-                $template->extension()->set('dataset2', $dataset2);\n-                if ($media) {\n-                    $entry->set_data('dataset2', $dataset2);\n-                }\n-            }\n-            if ($wc_order_id) {\n-                $template->extension()->set('wc_order_id', $wc_order_id);\n-                if ($media) {\n-                    $entry->set_data('wc_order_id', $dataset2);\n-                }\n-            }\n-            if ($wc_product_item_id) {\n-                $template->extension()->set('wc_product_item_id', $wc_product_item_id);\n-                if ($media) {\n-                    $entry->set_data('wc_product_item_id', $dataset2);\n-                }\n+        $classes = array_merge($attributes->get('class'), ['e2pdf-download']);\n+\n+        $options = apply_filters('e2pdf_model_shortcode_extension_options', [], $template);\n+        $options = apply_filters('e2pdf_model_shortcode_e2pdf_download_extension_options', $options, $template);\n+\n+        foreach ($options as $option_key => $option_value) {\n+            $template->extension()->set($option_key, $option_value);\n+        }\n+\n+        if ($template->extension()->verify() && $this->process_shortcode('e2pdf_download', $template, $attributes)) {\n+\n+            $button_title = apply_filters('e2pdf_model_shortcode_e2pdf_download_button_title', $attributes->button_title($template), $atts);\n+            if ($attributes->get('output') === 'button_title') {\n+                return $button_title;\n             }\n-            if ($template->get('extension') == 'wordpress' && $template->get('item') == '-3') { \u002F\u002F phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedIf, WordPress.WP.CapitalPDangit.Misspelled\n-            } else {\n-                if (array_key_exists('user_id', $atts)) {\n-                    $user_id = (int) $atts['user_id'];\n-                    $template->extension()->set('user_id', $user_id);\n-                    if ($media) {\n-                        $entry->set_data('user_id', $user_id);\n-                    }\n-                } else {\n-                    $user_id = get_current_user_id();\n-                    $template->extension()->set('user_id', $user_id);\n-                    if ($media) {\n-                        $entry->set_data('user_id', $user_id);\n-                    }\n-                }\n+\n+            $template->patch('inline', $attributes->get('inline'), $entry, $attributes->get('filter'));\n+            $template->patch('flatten', $attributes->get('flatten'), $entry, $attributes->get('filter'));\n+            $template->patch('format', $attributes->get('format'), $entry, $attributes->get('filter'));\n+            $template->patch('password', $attributes->get('password'), $entry, $attributes->get('filter'));\n+            $template->patch('dpdf', $attributes->get('dpdf'), $entry, $attributes->get('filter'));\n+            $template->patch('name', $attributes->get('name'), $entry, $attributes->get('filter'));\n+            $template->patch('meta_title', $attributes->get('meta_title'), $entry, $attributes->get('filter'));\n+            $template->patch('meta_subject', $attributes->get('meta_subject'), $entry, $attributes->get('filter'));\n+            $template->patch('meta_author', $attributes->get('meta_author'), $entry, $attributes->get('filter'));\n+            $template->patch('meta_keywords', $attributes->get('meta_keywords'), $entry, $attributes->get('filter'));\n+\n+            if ($template->get('inline')) {\n+                $classes[] = 'e2pdf-inline';\n             }\n-            if (!empty($args)) {\n-                $template->extension()->set('args', $args);\n-                if ($media) {\n-                    $entry->set_data('args', $args);\n-                }\n+\n+            if ($attributes->get('auto') !== false) {\n+                $template->set('auto', $attributes->get('auto'));\n             }\n-            if ($template->extension()->get_storing_engine() !== false) {\n-                $template->extension()->set('storing_engine', $template->extension()->get_storing_engine());\n-                if ($media) {\n-                    $entry->set_data('storing_engine', $template->extension()->get_storing_engine());\n+            if ($template->get('auto')) {\n+                $classes[] = 'e2pdf-auto';\n+                if ($attributes->get('iframe_download')) {\n+                    $classes[] = 'e2pdf-iframe-download';\n+                    $iframe_download = true;\n                 }\n             }\n+            $classes[] = 'e2pdf-format-' . $template->get('format');\n \n-            $options = [];\n-            $options = apply_filters('e2pdf_model_shortcode_extension_options', $options, $template);\n-            $options = apply_filters('e2pdf_model_shortcode_e2pdf_save_extension_options', $options, $template);\n-            foreach ($options as $option_key => $option_value) {\n-                $template->extension()->set($option_key, $option_value);\n+            if (!$entry->load_by_uid()) {\n+                $entry->save();\n             }\n \n-            if ($template->extension()->verify() && $this->process_shortcode($template, 'e2pdf_save')) {\n+            if ($entry->get('ID')) {\n \n-                if (array_key_exists('inline', $atts)) {\n-                    $inline = $atts['inline'] == 'true' ? '1' : '0';\n-                    if ($inline) {\n-                        $entry->set_data('inline', $inline);\n-                        $atts['inline'] = 'true';\n-                    }\n-                } else {\n-                    $inline = $template->get('inline');\n-                    if ($inline) {\n-                        $entry->set_data('inline', $inline);\n-                        $atts['inline'] = 'true';\n-                    }\n-                }\n+                $download_name = apply_filters('e2pdf_controller_frontend_e2pdf_download_name', $template->get('name'), $entry->get('uid'), $entry->get('entry'));\n \n-                if (array_key_exists('flatten', $atts)) {\n-                    $flatten = strval((int) $atts['flatten']);\n-                    $template->set('flatten', $flatten);\n-                }\n+                $url_data = [\n+                    'page' => 'e2pdf-download',\n+                    'uid' => $entry->get('uid'),\n+                ];\n \n-                if (array_key_exists('format', $atts)) {\n-                    $format = $atts['format'];\n-                    $template->set('format', $format);\n+                if ($attributes->get('wc_product_download')) {\n+                    $url_data['#saveName'] = '\u002F' . $download_name . '.' . $template->get('format');\n                 }\n \n-                if (array_key_exists('password', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $password = $template->extension()->render($atts['password']);\n-                    } else {\n-                        $password = $template->extension()->convert_shortcodes($atts['password'], true);\n-                    }\n-                    $template->set('password', $password);\n-                } else {\n-                    $template->set('password', $template->extension()->render($template->get('password')));\n-                }\n+                $url_data = apply_filters(\n+                        'e2pdf_model_shortcode_e2pdf_download_url_data',\n+                        apply_filters('e2pdf_model_shortcode_url_data', $url_data, $atts),\n+                        $atts\n+                );\n \n-                if (array_key_exists('dpdf', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $dpdf = $template->extension()->render($atts['dpdf']);\n-                    } else {\n-                        $dpdf = $template->extension()->convert_shortcodes($atts['dpdf'], true);\n-                    }\n-                    $template->set('dpdf', $dpdf);\n-                } else {\n-                    $template->set('dpdf', $template->extension()->render($template->get('dpdf')));\n-                }\n+                $url = $this->helper->get_frontend_pdf_url(\n+                        $url_data, $attributes->get('site_url'),\n+                        [\n+                            'e2pdf_model_shortcode_site_url',\n+                            'e2pdf_model_shortcode_e2pdf_download_site_url',\n+                        ]\n+                );\n+                switch ($attributes->get('output')) {\n+                    case 'url':\n+                        $url = apply_filters('e2pdf_model_shortcode_e2pdf_download_output_url', $url, $atts);\n+                        $response = esc_url($url);\n+                        break;\n+                    case 'url_raw':\n+                        $url = esc_url_raw($url);\n+                        $response = apply_filters('e2pdf_model_shortcode_e2pdf_download_output_url', $url, $atts);\n+                        break;\n+                    case 'url_encode':\n+                        $url = apply_filters('e2pdf_model_shortcode_e2pdf_download_output_url', $url, $atts);\n+                        \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode\n+                        $response = urlencode(esc_url_raw($url));\n+                        break;\n+                    default:\n+                        $url = apply_filters('e2pdf_model_shortcode_e2pdf_download_pdf_url', $url, $atts);\n+                        $file_download = '';\n+                        if ($attributes->get('print') && $this->helper->load('server')->isPrintingSupported()) {\n+                            $classes[] = 'e2pdf-print-pdf';\n+                            $url = add_query_arg(['v' => $this->helper->get('version')], $url);\n+                        } elseif (get_option('e2pdf_download_loader', '0') == '1' && $this->helper->load('server')->isLoaderSupported()) {\n+                            if ($template->get('inline')) {\n+                                $target = '_blank';\n+                            } else {\n+                                $file_download = 'download=\"' . esc_attr($download_name) . '.' . $template->get('format') . '\"';\n+                                $classes[] = 'e2pdf-download-loader';\n+                                if ($this->helper->load('server')->isIOS() && $this->helper->load('server')->isSafari()) {\n+                                    $classes[] = 'e2pdf-ios-safari-loader';\n+                                }\n+                            }\n+                        }\n \n-                if (array_key_exists('meta_title', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $meta_title = $template->extension()->render($atts['meta_title']);\n-                    } else {\n-                        $meta_title = $template->extension()->convert_shortcodes($atts['meta_title'], true);\n-                    }\n-                    $template->set('meta_title', $meta_title);\n-                } else {\n-                    $template->set('meta_title', $template->extension()->render($template->get('meta_title')));\n-                }\n+                        $lid = uniqid('', true);\n+                        $response = '\u003Ca lid=\"' . esc_attr($lid) . '\" rel=\"nofollow\" ' . $file_download . ' id=\"e2pdf-download\" class=\"' . esc_attr(implode(' ', $classes)) . '\" style=\"' . esc_attr(implode(';', $attributes->get('style'))) . '\" target=\"' . esc_attr($target) . '\" href=\"' . esc_url($url) . '\">' . $button_title . '\u003C\u002Fa>';\n+                        if ($iframe_download) {\n+                            $url = add_query_arg(['v' => $this->helper->get('version')], $url);\n \n-                if (array_key_exists('meta_subject', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $meta_subject = $template->extension()->render($atts['meta_subject']);\n-                    } else {\n-                        $meta_subject = $template->extension()->convert_shortcodes($atts['meta_subject'], true);\n-                    }\n-                    $template->set('meta_subject', $meta_subject);\n-                } else {\n-                    $template->set('meta_subject', $template->extension()->render($template->get('meta_subject')));\n-                }\n+                            $src = $attributes->get('preload') ? 'preload' : 'src';\n+                            $preload_class = $attributes->get('preload') ? 'e2pdf-preload' : '';\n \n-                if (array_key_exists('meta_author', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $meta_author = $template->extension()->render($atts['meta_author']);\n-                    } else {\n-                        $meta_author = $template->extension()->convert_shortcodes($atts['meta_author'], true);\n-                    }\n-                    $template->set('meta_author', $meta_author);\n-                } else {\n-                    $template->set('meta_author', $template->extension()->render($template->get('meta_author')));\n+                            if ($template->get('inline') || (get_option('e2pdf_download_loader', '0') == '1' && $this->helper->load('server')->isLoaderSupported())) {\n+                                $response .= '\u003Cimg class=\"' . esc_attr($preload_class) . '\" onload=\"e2pdfViewer.autoDownload(\\'' . esc_attr($lid) . '\\');\" style=\"display:none\" ' . $src . '=\"' . $attributes->get('iframe_loader') . '\">';\n+                            } else {\n+                                $response .= '\u003Ciframe class=\"' . esc_attr($preload_class) . '\" style=\"width:0;height:0;border-width:0;border:none;\" ' . $src . '=\"' . esc_url($url) . '\">\u003C\u002Fiframe>';\n+                            }\n+                        }\n+                        break;\n                 }\n+            }\n+        }\n \n-                if (array_key_exists('meta_keywords', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $meta_keywords = $template->extension()->render($atts['meta_keywords']);\n-                    } else {\n-                        $meta_keywords = $template->extension()->convert_shortcodes($atts['meta_keywords'], true);\n-                    }\n-                    $template->set('meta_keywords', $meta_keywords);\n-                } else {\n-                    $template->set('meta_keywords', $template->extension()->render($template->get('meta_keywords')));\n-                }\n+        return $response;\n+    }\n \n-                if (array_key_exists('name', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $name = $template->extension()->render($atts['name']);\n-                    } else {\n-                        $name = $template->extension()->convert_shortcodes($atts['name'], true);\n-                    }\n-                    $template->set('name', $name);\n-                } else {\n-                    $template->set('name', $template->extension()->render($template->get('name')));\n-                }\n+    \u002F\u002F e2pdf-save\n+    public function e2pdf_save($atts = []) {\n \n-                if (array_key_exists('savename', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $savename = $template->extension()->render($atts['savename']);\n-                    } else {\n-                        $savename = $template->extension()->convert_shortcodes($atts['savename'], true);\n-                    }\n-                    $template->set('savename', $savename);\n-                } else {\n-                    $template->set('savename', $template->extension()->render($template->get('savename')));\n-                }\n+        unset($atts['pdf']);\n \n-                if (!$media) {\n-                    if ($dir) {\n-                        if (!array_key_exists('filter', $atts)) {\n-                            $dir = $template->extension()->render($dir);\n-                        } else {\n-                            $dir = $template->extension()->convert_shortcodes($dir, true);\n-                        }\n-                        $save_dir = rtrim(trim($this->helper->load('convert')->to_file_dir($dir)), '\u002F') . '\u002F';\n-                        if (strpos($save_dir, '\u002F') !== 0 && !preg_match('\u002F^[A-Za-z]:\u002F', $save_dir)) {\n-                            $save_dir = ABSPATH . $save_dir;\n-                        }\n-                        if ($create_dir) {\n-                            $this->helper->create_dir($save_dir, true, $create_index, $create_htaccess);\n-                        }\n-                    } else {\n-                        $tpl_dir = $this->helper->get('tpl_dir') . $template->get('ID') . '\u002F';\n-                        $save_dir = $tpl_dir . 'save\u002F';\n-                        $this->helper->create_dir($tpl_dir, false, true);\n-                        $this->helper->create_dir($save_dir, false, $create_index, $create_htaccess);\n-                    }\n-                    $htaccess = $save_dir . '.htaccess';\n-                    if ($create_htaccess && !file_exists($htaccess)) {\n-                        if ($local) {\n-                            $htaccess_content = 'DENY FROM ALL' . PHP_EOL;\n-                            $htaccess_content .= '\u003CFiles ~ \"\\.(jpg|pdf)$\">' . PHP_EOL;\n-                            $htaccess_content .= 'ALLOW FROM ALL' . PHP_EOL;\n-                            $htaccess_content .= '\u003C\u002FFiles>' . PHP_EOL;\n-                            $this->helper->create_file($htaccess, $htaccess_content);\n-                        } else {\n-                            $this->helper->create_file($htaccess, 'DENY FROM ALL');\n-                        }\n-                    }\n-                }\n+        $response = '';\n \n-                if ($template->get('savename')) {\n-                    $file_name = $template->get('savename');\n-                    if ($template->get('name')) {\n-                        $name = $template->get('name');\n-                    } else {\n-                        $name = $template->extension()->render($template->get_name());\n-                    }\n-                    if ($name != $file_name) {\n-                        $entry->set_data('name', $name);\n-                        $atts['name'] = $name;\n-                    }\n-                } elseif ($template->get('name')) {\n-                    $file_name = $template->get('name');\n-                    if ($attachment && isset($atts['name'])) {\n-                        unset($atts['name']);\n-                    }\n-                } else {\n-                    $file_name = $template->extension()->render($template->get_name());\n-                    if ($attachment && isset($atts['name'])) {\n-                        unset($atts['name']);\n-                    }\n-                }\n-                $file_name = $file_name . '.' . $template->get('format');\n-                $file_name = $this->helper->load('convert')->to_file_name($file_name);\n-\n-                if ($media) {\n-                    $entry->set_data('format', $template->get('format'));\n-                    $entry->set_data('media', true);\n-                    if ($entry->load_by_uid() && $entry->get_data('attachment_id')) {\n-                        $file_path = get_attached_file($entry->get_data('attachment_id'));\n-                        if ($file_path) {\n-                            if ($overwrite || !file_exists($file_path)) {\n-                                $template->extension()->set('entry', $entry);\n-                                $template->fill();\n-                                $request = $template->render();\n-                                if (isset($request['error'])) {\n-                                    return $response;\n-                                }\n-                                \u002F\u002F phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_read_file_put_contents, WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode\n-                                file_put_contents($file_path, base64_decode($request['file']));\n-                                $entry->set('pdf_num', $entry->get('pdf_num') + 1);\n-                                $entry->save();\n-                            }\n-                        } else {\n+        $atts = apply_filters('e2pdf_model_shortcode_e2pdf_save_atts', $atts);\n+        $attributes = (new Helper_E2pdf_Atts())->load($atts);\n+\n+        if (!$attributes->get('apply') || !$attributes->get('id') || (!$attributes->get('dataset') && !$attributes->get('dataset2'))) {\n+            return $response;\n+        }\n+\n+        $template = new Model_E2pdf_Template();\n+\n+        if (!$template->load($attributes->get('id'))) {\n+            return $response;\n+        }\n+\n+        $entry = new Model_E2pdf_Entry();\n+        $update = $attributes->get('media') || $attributes->get('gdrive') ? true : false;\n+\n+        $template->extension()->patch('template_id', $attributes->get('id'), $update ? $entry : null);\n+        $template->extension()->patch('dataset', $attributes->get('dataset'), $update ? $entry : null);\n+        $template->extension()->patch('dataset2', $attributes->get('dataset2'), $update ? $entry : null);\n+        $template->extension()->patch('wc_order_id', $attributes->get('wc_order_id'), $update ? $entry : null);\n+        $template->extension()->patch('wc_product_item_id', $attributes->get('wc_product_item_id'), $update ? $entry : null);\n+        $template->extension()->patch('user_id', $attributes->get('user_id'), $update ? $entry : null);\n+        $template->extension()->patch('args', $attributes->get('arguments'), $update ? $entry : null);\n+        $template->extension()->patch('storing_engine', $template->extension()->get_storing_engine(), $update ? $entry : null);\n+\n+        $options = apply_filters('e2pdf_model_shortcode_extension_options', [], $template);\n+        $options = apply_filters('e2pdf_model_shortcode_e2pdf_save_extension_options', $options, $template);\n+        foreach ($options as $option_key => $option_value) {\n+            $template->extension()->set($option_key, $option_value);\n+        }\n+\n+        if ($template->extension()->verify() && $this->process_shortcode('e2pdf_save', $template, $attributes)) {\n+\n+            $template->patch('inline', $attributes->get('inline'), $update ? $entry : null, $attributes->get('filter'));\n+            $template->patch('flatten', $attributes->get('flatten'), $update ? $entry : null, $attributes->get('filter'));\n+            $template->patch('format', $attributes->get('format'), $update ? $entry : null, $attributes->get('filter'));\n+            $template->patch('password', $attributes->get('password'), $update ? $entry : null, $attributes->get('filter'));\n+            $template->patch('dpdf', $attributes->get('dpdf'), $update ? $entry : null, $attributes->get('filter'));\n+            $template->patch('name', $attributes->get('name'), $update ? $entry : null, $attributes->get('filter'));\n+            $template->patch('savename', $attributes->get('savename'), $update ? $entry : null, $attributes->get('filter'));\n+            $template->patch('meta_title', $attributes->get('meta_title'), $update ? $entry : null, $attributes->get('filter'));\n+            $template->patch('meta_subject', $attributes->get('meta_subject'), $update ? $entry : null, $attributes->get('filter'));\n+            $template->patch('meta_author', $attributes->get('meta_author'), $update ? $entry : null, $attributes->get('filter'));\n+            $template->patch('meta_keywords', $attributes->get('meta_keywords'), $update ? $entry : null, $attributes->get('filter'));\n+\n+            if ($template->get('inline')) {\n+                $entry->set_data('inline', $template->get('inline'));\n+                $atts['inline'] = $template->get('inline');\n+            }\n+\n+            if (!$attributes->get('media') && !$attributes->get('gdrive')) {\n+                $dir = $attributes->get('dir');\n+                if ($dir) {\n+                    $dir = $attributes->get('filter') ? $template->extension()->convert_shortcodes($dir, true) : $template->extension()->render($dir);\n+                    $dir = rtrim(trim($this->helper->load('convert')->to_file_dir($dir)), '\u002F') . '\u002F';\n+                    if (strpos($dir, '\u002F') !== 0 && !preg_match('\u002F^[A-Za-z]:\u002F', $dir)) {\n+                        $dir = ABSPATH . $dir;\n+                    }\n+                    if ($attributes->get('create_dir')) {\n+                        $this->helper->create_dir($dir, true, $attributes->get('create_index', '1'), $attributes->get('create_htaccess', '1'));\n+                    }\n+                } else {\n+                    $tpl_dir = $this->helper->get('tpl_dir') . $template->get('ID') . '\u002F';\n+                    $dir = $tpl_dir . 'save\u002F';\n+                    $this->helper->create_dir($tpl_dir, false, true);\n+                    $this->helper->create_dir($dir, false, $attributes->get('create_index', '1'), $attributes->get('create_htaccess', '1'));\n+                }\n+                $htaccess = $dir . '.htaccess';\n+                if ($attributes->get('create_htaccess', '1') && !file_exists($htaccess)) {\n+                    if ($attributes->get('local')) {\n+                        $htaccess_content = 'DENY FROM ALL' . PHP_EOL;\n+                        $htaccess_content .= '\u003CFiles ~ \"\\.(jpg|pdf)$\">' . PHP_EOL;\n+                        $htaccess_content .= 'ALLOW FROM ALL' . PHP_EOL;\n+                        $htaccess_content .= '\u003C\u002FFiles>' . PHP_EOL;\n+                        $this->helper->create_file($htaccess, $htaccess_content);\n+                    } else {\n+                        $this->helper->create_file($htaccess, 'DENY FROM ALL');\n+                    }\n+                }\n+            }\n+\n+            $filename = $template->get('savename') . '.' . $template->get('format');\n+            $filename = $this->helper->load('convert')->to_file_name($filename);\n+\n+            if ($template->get('savename') !== $template->get('name')) {\n+                $entry->set_data('name', $template->get('name'));\n+                $atts['name'] = $template->get('name');\n+            }\n+\n+            if ($attributes->get('media')) {\n+                $entry->set_data('format', $template->get('format'));\n+                $entry->set_data('media', true);\n+                if ($entry->load_by_uid() && $entry->get_data('attachment_id')) {\n+                    $filepath = get_attached_file($entry->get_data('attachment_id'));\n+                    if ($filepath) {\n+                        if ($attributes->get('overwrite', '1') || !file_exists($filepath)) {\n                             $template->extension()->set('entry', $entry);\n                             $template->fill();\n                             $request = $template->render();\n                             if (isset($request['error'])) {\n                                 return $response;\n-                            } else {\n-                                $file = wp_upload_bits(\n-                                        $file_name,\n-                                        null,\n-                                        base64_decode($request['file']) \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode\n-                                );\n-                                if (is_array($file) && isset($file['file']) && file_exists($file['file'])) {\n-                                    $attachment_args = array(\n-                                        'import_id' => $entry->get_data('attachment_id'),\n-                                        'guid' => $file['url'],\n-                                        'post_mime_type' => $file['type'],\n-                                        'post_title' => preg_replace('\u002F\\.[^.]+$\u002F', '', basename($file['file'])),\n-                                        'post_excerpt' => '',\n-                                        'post_content' => '',\n-                                    );\n-                                    $attachment_id = wp_insert_attachment($attachment_args, $file['file']);\n-                                    if (!is_wp_error($attachment_id) && $attachment_id) {\n-                                        require_once ABSPATH . 'wp-admin\u002Fincludes\u002Fimage.php';\n-                                        $attachment_metadata = wp_generate_attachment_metadata($attachment_id, $file['file']);\n-                                        wp_update_attachment_metadata($attachment_id, $attachment_metadata);\n-                                        $file_path = get_attached_file($attachment_id);\n-                                    } else {\n-                                        return $response;\n-                                    }\n-                                } else {\n-                                    return $response;\n-                                }\n                             }\n+                            \u002F\u002F phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_read_file_put_contents\n+                            file_put_contents($filepath, $request['file'], LOCK_EX);\n+                            $entry->set('pdf_num', $entry->get('pdf_num') + 1);\n+                            $entry->save();\n                         }\n                     } else {\n                         $template->extension()->set('entry', $entry);\n@@ -1113,14 +640,14 @@\n                         if (isset($request['error'])) {\n                             return $response;\n                         } else {\n-                            $entry->save();\n                             $file = wp_upload_bits(\n-                                    $file_name,\n+                                    $filename,\n                                     null,\n-                                    base64_decode($request['file']) \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode\n+                                    $request['file']\n                             );\n                             if (is_array($file) && isset($file['file']) && file_exists($file['file'])) {\n                                 $attachment_args = [\n+                                    'import_id' => $entry->get_data('attachment_id'),\n                                     'guid' => $file['url'],\n                                     'post_mime_type' => $file['type'],\n                                     'post_title' => preg_replace('\u002F\\.[^.]+$\u002F', '', basename($file['file'])),\n@@ -1132,7 +659,8 @@\n                                     require_once ABSPATH . 'wp-admin\u002Fincludes\u002Fimage.php';\n                                     $attachment_metadata = wp_generate_attachment_metadata($attachment_id, $file['file']);\n                                     wp_update_attachment_metadata($attachment_id, $attachment_metadata);\n-                                    $file_path = get_attached_file($attachment_id);\n+                                    $filepath = get_attached_file($attachment_id);\n+                                    $entry->set('pdf_num', $entry->get('pdf_num') + 1);\n                                     $entry->set_data('attachment_id', $attachment_id);\n                                     $entry->save();\n                                 } else {\n@@ -1143,34 +671,104 @@\n                             }\n                         }\n                     }\n-                    if (!$this->helper->load('filter')->is_stream($file_path) && file_exists($file_path) && $entry->get_data('attachment_id')) {\n-                        $atts['attachment_id'] = $entry->get_data('attachment_id');\n-                        if ($download) {\n-                            if (array_key_exists('button_title', $atts)) {\n-                                if (!array_key_exists('filter', $atts)) {\n-                                    $button_title = $template->extension()->render($atts['button_title']);\n-                                } else {\n-                                    $button_title = $template->extension()->convert_shortcodes($atts['button_title'], true);\n-                                }\n-                            } elseif ($template->extension()->render($template->get('button_title')) !== '') {\n-                                $button_title = $template->extension()->render($template->get('button_title'));\n+                } else {\n+                    $template->extension()->set('entry', $entry);\n+                    $template->fill();\n+                    $request = $template->render();\n+                    if (isset($request['error'])) {\n+                        return $response;\n+                    } else {\n+                        $file = wp_upload_bits(\n+                                $filename,\n+                                null,\n+                                $request['file']\n+                        );\n+                        if (is_array($file) && isset($file['file']) && file_exists($file['file'])) {\n+                            $attachment_args = [\n+                                'guid' => $file['url'],\n+                                'post_mime_type' => $file['type'],\n+                                'post_title' => preg_replace('\u002F\\.[^.]+$\u002F', '', basename($file['file'])),\n+                                'post_excerpt' => '',\n+                                'post_content' => '',\n+                            ];\n+                            $attachment_id = wp_insert_attachment($attachment_args, $file['file']);\n+                            if (!is_wp_error($attachment_id) && $attachment_id) {\n+                                require_once ABSPATH . 'wp-admin\u002Fincludes\u002Fimage.php';\n+                                $attachment_metadata = wp_generate_attachment_metadata($attachment_id, $file['file']);\n+                                wp_update_attachment_metadata($attachment_id, $attachment_metadata);\n+                                $filepath = get_attached_file($attachment_id);\n+                                $entry->save();\n+                                $entry->set_data('attachment_id', $attachment_id);\n+                                $entry->save();\n                             } else {\n-                                $button_title = __('Download', 'e2pdf');\n+                                return $response;\n+                            }\n+                        } else {\n+                            return $response;\n+                        }\n+                    }\n+                }\n+                if (!$this->helper->load('filter')->is_stream($filepath) && file_exists($filepath) && $entry->get_data('attachment_id')) {\n+                    $atts['attachment_id'] = $entry->get_data('attachment_id');\n+                    if ($attributes->get('download')) {\n+                        $atts['button_title'] = $attributes->button_title($template);\n+                        $response = $this->e2pdf_download($atts);\n+                    } elseif ($attributes->get('view')) {\n+                        $response = $this->e2pdf_view($atts);\n+                    } elseif ($attributes->get('attachment')) {\n+                        $response = $this->e2pdf_attachment($atts);\n+                    } elseif ($attributes->get('zapier')) {\n+                        $response = $this->e2pdf_zapier($atts);\n+                    } elseif ($attributes->get('output') === 'path') {\n+                        $response = apply_filters('e2pdf_model_shortcode_e2pdf_save_output_path', $filepath, $atts);\n+                    } else {\n+                        if ($attributes->get('local')) {\n+                            $url = wp_get_attachment_url($entry->get_data('attachment_id'));\n+                            switch ($attributes->get('output')) {\n+                                case 'attachment_id':\n+                                    $attachment_id = apply_filters('e2pdf_model_shortcode_e2pdf_save_output_attachment_id', $entry->get_data('attachment_id'), $atts);\n+                                    $response = $attachment_id;\n+                                    break;\n+                                case 'url':\n+                                    $url = apply_filters('e2pdf_model_shortcode_e2pdf_save_output_url', $url, $atts);\n+                                    $response = esc_url($url);\n+                                    break;\n+                                case 'url_raw':\n+                                    $url = apply_filters('e2pdf_model_shortcode_e2pdf_save_output_url', $url, $atts);\n+                                    $response = esc_url_raw($url);\n+                                    break;\n+                                case 'url_encode':\n+                                    $url = apply_filters('e2pdf_model_shortcode_e2pdf_save_output_url', $url, $atts);\n+                                    \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode\n+                                    $response = urlencode(esc_url_raw($url));\n+                                    break;\n+                                default:\n+                                    $response = '';\n+                                    break;\n                             }\n-                            $atts['button_title'] = $button_title;\n-                            $response = $this->e2pdf_download($atts);\n-                        } elseif ($view) {\n-                            $response = $this->e2pdf_view($atts);\n-                        } elseif ($attachment) {\n-                            $response = $this->e2pdf_attachment($atts);\n-                        } elseif ($zapier) {\n-                            $response = $this->e2pdf_zapier($atts);\n-                        } elseif ($output == 'path') {\n-                            $response = apply_filters('e2pdf_model_shortcode_e2pdf_save_output_path', $file_path, $atts);\n                         } else {\n-                            if ($local) {\n-                                $url = wp_get_attachment_url($entry->get_data('attachment_id'));\n-                                switch ($output) {\n+                            if (!$entry->load_by_uid()) {\n+                                $entry->save();\n+                            }\n+                            if ($entry->get('ID')) {\n+                                $url_data = [\n+                                    'page' => 'e2pdf-download',\n+                                    'uid' => $entry->get('uid'),\n+                                ];\n+                                $url_data = apply_filters('e2pdf_model_shortcode_url_data', $url_data, $atts);\n+                                $url_data = apply_filters('e2pdf_model_shortcode_e2pdf_save_url_data', $url_data, $atts);\n+                                $url = $this->helper->get_frontend_pdf_url(\n+                                        $url_data, $attributes->get('site_url'),\n+                                        [\n+                                            'e2pdf_model_shortcode_site_url',\n+                                            'e2pdf_model_shortcode_e2pdf_save_site_url',\n+                                        ]\n+                                );\n+                                switch ($attributes->get('output')) {\n+                                    case 'attachment_id':\n+                                        $attachment_id = apply_filters('e2pdf_model_shortcode_e2pdf_save_output_attachment_id', $entry->get_data('attachment_id'), $atts);\n+                                        $response = $attachment_id;\n+                                        break;\n                                     case 'url':\n                                         $url = apply_filters('e2pdf_model_shortcode_e2pdf_save_output_url', $url, $atts);\n                                         $response = esc_url($url);\n@@ -1188,25 +786,215 @@\n                                         $response = '';\n                                         break;\n                                 }\n+                            }\n+                        }\n+                    }\n+                }\n+            } elseif ($attributes->get('gdrive')) {\n+                $dir = $attributes->get('dir');\n+                if ($dir) {\n+                    $dir = $attributes->get('filter') ? $template->extension()->convert_shortcodes($dir, true) : $template->extension()->render($dir);\n+                    $dir = (new Model_E2pdf_Gdrive())->create_dir($dir);\n+                } else {\n+                    $dir = 'root';\n+                }\n+                if ($dir !== 'root') {\n+                    $entry->set_data('dir', $dir);\n+                }\n+\n+                $entry->set_data('format', $template->get('format'));\n+                $entry->set_data('gdrive', true);\n+\n+                if ($entry->load_by_uid() && $entry->get_data('file_id')) {\n+                    $file_id = $entry->get_data('file_id');\n+                    if ((new Model_E2pdf_Gdrive())->exists($file_id)) {\n+                        if ($attributes->get('overwrite', '1')) {\n+                            $template->extension()->set('entry', $entry);\n+                            $template->fill();\n+                            $request = $template->render();\n+                            if (isset($request['error'])) {\n+                                return $response;\n+                            }\n+                            $file_id = (new Model_E2pdf_Gdrive())->reupload($request['file'], $file_id);\n+                            if ($file_id) {\n+                                $entry->set('pdf_num', $entry->get('pdf_num') + 1);\n+                                $entry->save();\n+                            }\n+                        }\n+                    } else {\n+                        $template->extension()->set('entry', $entry);\n+                        $template->fill();\n+                        $request = $template->render();\n+                        if (isset($request['error'])) {\n+                            return $response;\n+                        } else {\n+                            $file_id = (new Model_E2pdf_Gdrive())->upload($request['file'], $filename, $dir);\n+                            if ($file_id) {\n+                                $entry->set('pdf_num', $entry->get('pdf_num') + 1);\n+                                $entry->set_data('file_id', $file_id);\n+                                $entry->save();\n                             } else {\n-                                if (!$entry->load_by_uid()) {\n-                                    $entry->save();\n+                                return $response;\n+                            }\n+                        }\n+                    }\n+                } else {\n+                    $template->extension()->set('entry', $entry);\n+                    $template->fill();\n+                    $request = $template->render();\n+                    if (isset($request['error'])) {\n+                        return $response;\n+                    } else {\n+                        $file_id = (new Model_E2pdf_Gdrive())->upload($request['file'], $filename, $dir);\n+                        if ($file_id) {\n+                            $entry->save();\n+                            $entry->set_data('file_id', $file_id);\n+                            $entry->save();\n+                        } else {\n+                            return $response;\n+                        }\n+                    }\n+                }\n+                if ($entry->get_data('file_id')) {\n+                    $atts['file_id'] = $entry->get_data('file_id');\n+                    if ($attributes->get('download')) {\n+                        $atts['button_title'] = $attributes->button_title($template);\n+                        $response = $this->e2pdf_download($atts);\n+                    } elseif ($attributes->get('view')) {\n+                        $response = $this->e2pdf_view($atts);\n+                    } elseif ($attributes->get('attachment')) {\n+                        $response = $this->e2pdf_attachment($atts);\n+                    } elseif ($attributes->get('zapier')) {\n+                        $response = $this->e2pdf_zapier($atts);\n+                    } elseif ($attributes->get('output') === 'path') {\n+                        $response = apply_filters('e2pdf_model_shortcode_e2pdf_save_output_path', $filepath, $atts);\n+                    } else {\n+                        if ($attributes->get('local')) {\n+                            if ($template->get('inline')) {\n+                                $url = 'https:\u002F\u002Fdrive.google.com\u002Ffile\u002Fd\u002F' . $entry->get_data('file_id') . '\u002Fview';\n+                            } else {\n+                                $url = 'https:\u002F\u002Fdrive.google.com\u002Fuc?id=' . $entry->get_data('file_id') . '&export=download';\n+                            }\n+                            switch ($attributes->get('output')) {\n+                                case 'file_id':\n+                                    $file_id = apply_filters('e2pdf_model_shortcode_e2pdf_save_output_file_id', $entry->get_data('file_id'), $atts);\n+                                    $response = $file_id;\n+                                    break;\n+                                case 'url':\n+                                    $url = apply_filters('e2pdf_model_shortcode_e2pdf_save_output_url', $url, $atts);\n+                                    $response = esc_url($url);\n+                                    break;\n+                                case 'url_raw':\n+                                    $url = apply_filters('e2pdf_model_shortcode_e2pdf_save_output_url', $url, $atts);\n+                                    $response = esc_url_raw($url);\n+                                    break;\n+                                case 'url_encode':\n+                                    $url = apply_filters('e2pdf_model_shortcode_e2pdf_save_output_url', $url, $atts);\n+                                    \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode\n+                                    $response = urlencode(esc_url_raw($url));\n+                                    break;\n+                                default:\n+                                    $response = '';\n+                                    break;\n+                            }\n+                        } else {\n+                            if (!$entry->load_by_uid()) {\n+                                $entry->save();\n+                            }\n+                            if ($entry->get('ID')) {\n+                                $url_data = [\n+                                    'page' => 'e2pdf-download',\n+                                    'uid' => $entry->get('uid'),\n+                                ];\n+                                $url_data = apply_filters('e2pdf_model_shortcode_url_data', $url_data, $atts);\n+                                $url_data = apply_filters('e2pdf_model_shortcode_e2pdf_save_url_data', $url_data, $atts);\n+                                $url = $this->helper->get_frontend_pdf_url(\n+                                        $url_data, $attributes->get('site_url'),\n+                                        [\n+                                            'e2pdf_model_shortcode_site_url',\n+                                            'e2pdf_model_shortcode_e2pdf_save_site_url',\n+                                        ]\n+                                );\n+                                switch ($attributes->get('output')) {\n+                                    case 'file_id':\n+                                        $file_id = apply_filters('e2pdf_model_shortcode_e2pdf_save_output_file_id', $entry->get_data('file_id'), $atts);\n+                                        $response = $file_id;\n+                                        break;\n+                                    case 'url':\n+                                        $url = apply_filters('e2pdf_model_shortcode_e2pdf_save_output_url', $url, $atts);\n+                                        $response = esc_url($url);\n+                                        break;\n+                                    case 'url_raw':\n+                                        $url = apply_filters('e2pdf_model_shortcode_e2pdf_save_output_url', $url, $atts);\n+                                        $response = esc_url_raw($url);\n+                                        break;\n+                                    case 'url_encode':\n+                                        $url = apply_filters('e2pdf_model_shortcode_e2pdf_save_output_url', $url, $atts);\n+                                        \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode\n+                                        $response = urlencode(esc_url_raw($url));\n+                                        break;\n+                                    default:\n+                                        $response = '';\n+                                        break;\n                                 }\n-                                if ($entry->get('ID')) {\n-                                    $url_data = [\n-                                        'page' => 'e2pdf-download',\n-                                        'uid' => $entry->get('uid'),\n-                                    ];\n-                                    $url_data = apply_filters('e2pdf_model_shortcode_url_data', $url_data, $atts);\n-                                    $url_data = apply_filters('e2pdf_model_shortcode_e2pdf_save_url_data', $url_data, $atts);\n-                                    $url = $this->helper->get_frontend_pdf_url(\n-                                            $url_data, $site_url,\n-                                            [\n-                                                'e2pdf_model_shortcode_site_url',\n-                                                'e2pdf_model_shortcode_e2pdf_save_site_url',\n-                                            ]\n-                                    );\n-                                    switch ($output) {\n+                            }\n+                        }\n+                    }\n+                }\n+            } else {\n+                $filepath = apply_filters('e2pdf_model_e2pdf_shortcode_pre_save_path', $dir . $filename, $atts);\n+                $entry->set_data('pdf', $filepath);\n+                if ($attributes->get('local')) {\n+                    $entry->set_data('e2pdf-url', $this->helper->get_frontend_local_pdf_url($filepath));\n+                }\n+                if ($attributes->get('overwrite', '1') || !file_exists($filepath)) {\n+                    $template->extension()->set('entry', $entry);\n+                    $template->fill();\n+                    $request = $template->render();\n+                }\n+                if (isset($request['error']) && ($attributes->get('overwrite', '1') || !file_exists($filepath))) {\n+                    return false;\n+                } else {\n+                    if (is_dir($dir) && is_writable($dir)) {\n+                        if ($attributes->get('overwrite', '1') || !file_exists($filepath)) {\n+                            if ($attributes->get('overwrite', '1') === '2' && file_exists($filepath)) {\n+                                $path = pathinfo($filepath);\n+                                $current_name = $path['filename'];\n+                                $i = 1;\n+                                while (file_exists($path['dirname'] . '\u002F' . $current_name . '.' . $path['extension'])) {\n+                                    $current_name = $path['filename'] . '(' . $i . ')';\n+                                    $filepath = $path['dirname'] . '\u002F' . $current_name . '.' . $path['extension'];\n+                                    $i++;\n+                                }\n+                                \u002F\u002F phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_read_file_put_contents\n+                                file_put_contents($filepath, $request['file'], LOCK_EX);\n+                            } else {\n+                                \u002F\u002F phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_read_file_put_contents\n+                                file_put_contents($filepath, $request['file'], LOCK_EX);\n+                            }\n+                            if ($entry->load_by_uid()) {\n+                                $entry->set('pdf_num', $entry->get('pdf_num') + 1);\n+                                $entry->save();\n+                            }\n+                        }\n+                        if (!$this->helper->load('filter')->is_stream($filepath) && file_exists($filepath)) {\n+                            $filepath = apply_filters('e2pdf_model_e2pdf_shortcode_save_path', $filepath, $atts);\n+                            $atts['pdf'] = $filepath;\n+                            if ($attributes->get('download')) {\n+                                $atts['button_title'] = $attributes->button_title($template);\n+                                $response = $this->e2pdf_download($atts);\n+                            } elseif ($attributes->get('view')) {\n+                                $response = $this->e2pdf_view($atts);\n+                            } elseif ($attributes->get('attachment')) {\n+                                $response = $this->e2pdf_attachment($atts);\n+                            } elseif ($attributes->get('zapier')) {\n+                                $response = $this->e2pdf_zapier($atts);\n+                            } elseif ($attributes->get('output') === 'path') {\n+                                $response = apply_filters('e2pdf_model_shortcode_e2pdf_save_output_path', $filepath, $atts);\n+                            } else {\n+                                if ($attributes->get('local')) {\n+                                    $url = $this->helper->get_frontend_local_pdf_url($filepath);\n+                                    switch ($attributes->get('output')) {\n                                         case 'url':\n                                             $url = apply_filters('e2pdf_model_shortcode_e2pdf_save_output_url', $url, $atts);\n                                             $response = esc_url($url);\n@@ -1224,75 +1012,25 @@\n                                             $response = '';\n                                             break;\n                                     }\n-                                }\n-                            }\n-                        }\n-                    }\n-                } else {\n-                    $file_path = apply_filters('e2pdf_model_e2pdf_shortcode_pre_save_path', $save_dir . $file_name, $atts);\n-                    $entry->set_data('pdf', $file_path);\n-                    if ($local) {\n-                        $entry->set_data('e2pdf-url', $this->helper->get_frontend_local_pdf_url($file_path));\n-                    }\n-                    if ($overwrite || !file_exists($file_path)) {\n-                        $template->extension()->set('entry', $entry);\n-                        $template->fill();\n-                        $request = $template->render();\n-                    }\n-                    if (isset($request['error']) && ($overwrite || !file_exists($file_path))) {\n-                        return false;\n-                    } else {\n-                        if (is_dir($save_dir) && is_writable($save_dir)) {\n-                            if ($overwrite || !file_exists($file_path)) {\n-                                if ($overwrite == '2' && file_exists($file_path)) {\n-                                    $path = pathinfo($file_path);\n-                                    $current_name = $path['filename'];\n-                                    $i = 1;\n-                                    while (file_exists($path['dirname'] . '\u002F' . $current_name . '.' . $path['extension'])) {\n-                                        $current_name = $path['filename'] . '(' . $i . ')';\n-                                        $file_path = $path['dirname'] . '\u002F' . $current_name . '.' . $path['extension'];\n-                                        $i++;\n-                                    }\n-                                    \u002F\u002F phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_read_file_put_contents, WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode\n-                                    file_put_contents($file_path, base64_decode($request['file']));\n                                 } else {\n-                                    \u002F\u002F phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_read_file_put_contents, WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode\n-                                    file_put_contents($file_path, base64_decode($request['file']));\n-                                }\n-                                if ($entry->load_by_uid()) {\n-                                    $entry->set('pdf_num', $entry->get('pdf_num') + 1);\n-                                    $entry->save();\n-                                }\n-                            }\n-                            if (!$this->helper->load('filter')->is_stream($file_path) && file_exists($file_path)) {\n-                                $file_path = apply_filters('e2pdf_model_e2pdf_shortcode_save_path', $file_path, $atts);\n-                                $atts['pdf'] = $file_path;\n-                                if ($download) {\n-                                    if (array_key_exists('button_title', $atts)) {\n-                                        if (!array_key_exists('filter', $atts)) {\n-                                            $button_title = $template->extension()->render($atts['button_title']);\n-                                        } else {\n-                                            $button_title = $template->extension()->convert_shortcodes($atts['button_title'], true);\n-                                        }\n-                                    } elseif ($template->extension()->render($template->get('button_title')) !== '') {\n-                                        $button_title = $template->extension()->render($template->get('button_title'));\n-                                    } else {\n-                                        $button_title = __('Download', 'e2pdf');\n+                                    if (!$entry->load_by_uid()) {\n+                                        $entry->save();\n                                     }\n-                                    $atts['button_title'] = $button_title;\n-                                    $response = $this->e2pdf_download($atts);\n-                                } elseif ($view) {\n-                                    $response = $this->e2pdf_view($atts);\n-                                } elseif ($attachment) {\n-                                    $response = $this->e2pdf_attachment($atts);\n-                                } elseif ($zapier) {\n-                                    $response = $this->e2pdf_zapier($atts);\n-                                } elseif ($output == 'path') {\n-                                    $response = apply_filters('e2pdf_model_shortcode_e2pdf_save_output_path', $file_path, $atts);\n-                                } else {\n-                                    if ($local) {\n-                                        $url = $this->helper->get_frontend_local_pdf_url($file_path);\n-                                        switch ($output) {\n+                                    if ($entry->get('ID')) {\n+                                        $url_data = [\n+                                            'page' => 'e2pdf-download',\n+                                            'uid' => $entry->get('uid'),\n+                                        ];\n+                                        $url_data = apply_filters('e2pdf_model_shortcode_url_data', $url_data, $atts);\n+                                        $url_data = apply_filters('e2pdf_model_shortcode_e2pdf_save_url_data', $url_data, $atts);\n+                                        $url = $this->helper->get_frontend_pdf_url(\n+                                                $url_data, $attributes->get('site_url'),\n+                                                [\n+                                                    'e2pdf_model_shortcode_site_url',\n+                                                    'e2pdf_model_shortcode_e2pdf_save_site_url',\n+                                                ]\n+                                        );\n+                                        switch ($attributes->get('output')) {\n                                             case 'url':\n                                                 $url = apply_filters('e2pdf_model_shortcode_e2pdf_save_output_url', $url, $atts);\n                                                 $response = esc_url($url);\n@@ -1310,43 +1048,6 @@\n                                                 $response = '';\n                                                 break;\n                                         }\n-                                    } else {\n-                                        if (!$entry->load_by_uid()) {\n-                                            $entry->save();\n-                                        }\n-                                        if ($entry->get('ID')) {\n-                                            $url_data = [\n-                                                'page' => 'e2pdf-download',\n-                                                'uid' => $entry->get('uid'),\n-                                            ];\n-                                            $url_data = apply_filters('e2pdf_model_shortcode_url_data', $url_data, $atts);\n-                                            $url_data = apply_filters('e2pdf_model_shortcode_e2pdf_save_url_data', $url_data, $atts);\n-                                            $url = $this->helper->get_frontend_pdf_url(\n-                                                    $url_data, $site_url,\n-                                                    [\n-                                                        'e2pdf_model_shortcode_site_url',\n-                                                        'e2pdf_model_shortcode_e2pdf_save_site_url',\n-                                                    ]\n-                                            );\n-                                            switch ($output) {\n-                                                case 'url':\n-                                                    $url = apply_filters('e2pdf_model_shortcode_e2pdf_save_output_url', $url, $atts);\n-                                                    $response = esc_url($url);\n-                                                    break;\n-                                                case 'url_raw':\n-                                                    $url = apply_filters('e2pdf_model_shortcode_e2pdf_save_output_url', $url, $atts);\n-                                                    $response = esc_url_raw($url);\n-                                                    break;\n-                                                case 'url_encode':\n-                                                    $url = apply_filters('e2pdf_model_shortcode_e2pdf_save_output_url', $url, $atts);\n-                                                    \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode\n-                                                    $response = urlencode(esc_url_raw($url));\n-                                                    break;\n-                                                default:\n-                                                    $response = '';\n-                                                    break;\n-                                            }\n-                                        }\n                                     }\n                                 }\n                             }\n@@ -1355,6 +1056,7 @@\n                 }\n             }\n         }\n+\n         return $response;\n     }\n \n@@ -1364,316 +1066,87 @@\n         $response = '';\n \n         $atts = apply_filters('e2pdf_model_shortcode_e2pdf_zapier_atts', $atts);\n+        $attributes = (new Helper_E2pdf_Atts())->load($atts);\n \n-        $template_id = isset($atts['id']) ? (int) $atts['id'] : false;\n-        $dataset = isset($atts['dataset']) ? $atts['dataset'] : false;\n-        $dataset2 = isset($atts['dataset2']) ? $atts['dataset2'] : false;\n-        $wc_order_id = isset($atts['wc_order_id']) ? $atts['wc_order_id'] : false;\n-        $wc_product_item_id = isset($atts['wc_product_item_id']) ? $atts['wc_product_item_id'] : false;\n-        $pdf = isset($atts['pdf']) ? $atts['pdf'] : false;\n-        $attachment_id = isset($atts['attachment_id']) ? $atts['attachment_id'] : false;\n-        $site_url = isset($atts['site_url']) ? $atts['site_url'] : false;\n-        $webhook = isset($atts['webhook']) && $atts['webhook'] ? $atts['webhook'] : false;\n-        $local = isset($atts['local']) && $atts['local'] == 'true' ? true : false;\n-\n-        if (!$webhook) {\n+        if (!$attributes->get('webhook')) {\n             return $response;\n         }\n \n-        $args = [];\n-        foreach ($atts as $att_key => $att_value) {\n-            if (substr($att_key, 0, 3) === 'arg') {\n-                $args[$att_key] = $att_value;\n-            }\n-        }\n-\n-        if ($pdf || $attachment_id) {\n-            if ($attachment_id) {\n-                $pdf = get_attached_file($attachment_id);\n-            }\n-            if (strpos($pdf, '\u002F') !== 0 && !preg_match('\u002F^[A-Za-z]:\u002F', $pdf)) {\n-                $pdf = ABSPATH . $pdf;\n-            }\n-            if (!$this->helper->load('filter')->is_stream($pdf) && file_exists($pdf) && $this->helper->load('filter')->is_downloadable($pdf)) {\n-                $entry = new Model_E2pdf_Entry();\n-                if ($attachment_id) {\n-                    $entry->set_data('attachment_id', $attachment_id);\n-                } else {\n-                    $entry->set_data('pdf', $pdf);\n+        if ($attributes->get('pdf') || $attributes->get('attachment_id') || $attributes->get('file_id')) {\n+            $pdf = $attributes->get('pdf');\n+            $downloadable = false;\n+            if ($attributes->get('file_id')) {\n+                $pdf = (new Model_E2pdf_Gdrive())->exists($attributes->get('file_id'));\n+                if ($pdf) {\n+                    $downloadable = true;\n                 }\n-\n-                if (array_key_exists('class', $atts)) {\n-                    $classes = explode(' ', $atts['class']);\n-                } else {\n-                    $classes = [];\n-                }\n-                $classes[] = 'e2pdf-download';\n-                $inline = '0';\n-\n-                if (array_key_exists('inline', $atts)) {\n-                    $inline = $atts['inline'] == 'true' ? '1' : '0';\n-                    $entry->set_data('inline', $inline);\n-                }\n-\n-                if (array_key_exists('name', $atts)) {\n-                    $name = $atts['name'];\n-                    $entry->set_data('name', $name);\n-                } else {\n-                    $name = '';\n-                }\n-                $content_type = 'application\u002Fjson';\n-                $blog_charset = get_option('blog_charset');\n-                if (!empty($blog_charset)) {\n-                    $content_type .= '; charset=' . get_option('blog_charset');\n-                }\n-                if ($local) {\n-                    $url = $attachment_id ? wp_get_attachment_url($entry->get_data('attachment_id')) : $this->helper->get_frontend_local_pdf_url($pdf);\n-                    $url = apply_filters('e2pdf_model_shortcode_e2pdf_zapier_pdf_url', $url, $atts);\n-                    $ext = pathinfo($pdf, PATHINFO_EXTENSION);\n-                    $name = basename($pdf, '.' . $ext);\n+            } else {\n+                if ($attributes->get('attachment_id')) {\n+                    $pdf = get_attached_file($attributes->get('attachment_id'));\n                 } else {\n-                    if (!$entry->load_by_uid()) {\n-                        $entry->save();\n-                    }\n-\n-                    if ($entry->get('ID')) {\n-\n-                        $url_data = [\n-                            'page' => 'e2pdf-download',\n-                            'uid' => $entry->get('uid'),\n-                        ];\n-                        $url_data = apply_filters('e2pdf_model_shortcode_url_data', $url_data, $atts);\n-                        $url_data = apply_filters('e2pdf_model_shortcode_e2pdf_zapier_url_data', $url_data, $atts);\n-\n-                        $url = esc_url_raw(\n-                                $this->helper->get_frontend_pdf_url(\n-                                        $url_data, $site_url,\n-                                        [\n-                                            'e2pdf_model_shortcode_site_url',\n-                                            'e2pdf_model_shortcode_e2pdf_zapier_site_url',\n-                                        ]\n-                                )\n-                        );\n-                        $url = apply_filters('e2pdf_model_shortcode_e2pdf_zapier_pdf_url', $url, $atts);\n-                        $ext = pathinfo($pdf, PATHINFO_EXTENSION);\n-                        if (!$name) {\n-                            $name = basename($pdf, '.' . $ext);\n-                        }\n-                    }\n+                    $pdf = $this->helper->load('convert')->to_file_dir($pdf);\n                 }\n-                if ($local || $entry->get('ID')) {\n-                    $zapier = [];\n-                    if ($template_id) {\n-                        $zapier['id'] = $template_id;\n-                    }\n-                    if ($dataset) {\n-                        $zapier['dataset'] = $dataset;\n-                    }\n-                    if ($dataset2) {\n-                        $zapier['dataset2'] = $dataset2;\n-                    }\n-                    if ($wc_order_id) {\n-                        $zapier['wc_order_id'] = $wc_order_id;\n-                    }\n-                    if ($wc_product_item_id) {\n-                        $zapier['wc_product_item_id'] = $wc_product_item_id;\n-                    }\n-                    if ($entry->get('ID')) {\n-                        $zapier['uid'] = $entry->get('uid');\n-                    }\n-                    $zapier['name'] = $name;\n-                    $zapier['format'] = strtolower($ext);\n-                    $zapier['url'] = $url;\n-\n-                    $data = apply_filters(\n-                            'e2pdf_model_shortcode_e2pdf_zapier_data',\n-                            array_merge(\n-                                    $zapier, $args\n-                            ), $atts\n-                    );\n-\n-                    $zapier_args = apply_filters(\n-                            'e2pdf_model_shortcode_e2pdf_zapier_args',\n-                            [\n-                                'method' => 'POST',\n-                                'body' => json_encode($data), \u002F\u002F phpcs:ignore WordPress.WP.AlternativeFunctions.json_encode_json_encode\n-                                'headers' => [\n-                                    'Content-Type' => $content_type,\n-                                ],\n-                            ], $atts\n-                    );\n-                    $result = [];\n-                    if ($webhook !== 'local') {\n-                        $result = wp_remote_post($webhook, $zapier_args);\n-                    }\n-                    $response = apply_filters('e2pdf_model_shortcode_e2pdf_zapier_response', $response, $result, $atts, $data);\n+                if (strpos($pdf, '\u002F') !== 0 && !preg_match('\u002F^[A-Za-z]:\u002F', $pdf)) {\n+                    $pdf = ABSPATH . $pdf;\n                 }\n+                $downloadable = !$this->helper->load('filter')->is_stream($pdf) && file_exists($pdf) && $this->helper->load('filter')->is_downloadable($pdf);\n             }\n-            return $response;\n-        }\n-\n-        if (!$template_id || (!$dataset && !$dataset2)) {\n-            return $response;\n-        }\n \n-        $template = new Model_E2pdf_Template();\n-        if ($template->load($template_id, false)) {\n+            if (!$downloadable) {\n+                return $response;\n+            }\n \n             $entry = new Model_E2pdf_Entry();\n-\n-            $entry->set_data('template_id', $template_id);\n-            $template->extension()->set('template_id', $template_id);\n-            if ($dataset) {\n-                $entry->set_data('dataset', $dataset);\n-                $template->extension()->set('dataset', $dataset);\n-            }\n-            if ($dataset2) {\n-                $entry->set_data('dataset2', $dataset2);\n-                $template->extension()->set('dataset2', $dataset2);\n-            }\n-            if ($wc_order_id) {\n-                $entry->set_data('wc_order_id', $wc_order_id);\n-                $template->extension()->set('wc_order_id', $wc_order_id);\n-            }\n-            if ($wc_product_item_id) {\n-                $entry->set_data('wc_product_item_id', $wc_product_item_id);\n-                $template->extension()->set('wc_product_item_id', $wc_product_item_id);\n-            }\n-            if ($template->get('extension') == 'wordpress' && $template->get('item') == '-3') { \u002F\u002F phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedIf, WordPress.WP.CapitalPDangit.Misspelled\n-            } else {\n-                if (array_key_exists('user_id', $atts)) {\n-                    $user_id = (int) $atts['user_id'];\n-                    $entry->set_data('user_id', $user_id);\n-                    $template->extension()->set('user_id', $user_id);\n-                } else {\n-                    $user_id = get_current_user_id();\n-                    $entry->set_data('user_id', $user_id);\n-                    $template->extension()->set('user_id', $user_id);\n-                }\n-            }\n-            if (!empty($args)) {\n-                $entry->set_data('args', $args);\n-                $template->extension()->set('args', $args);\n-            }\n-            if ($template->extension()->get_storing_engine() !== false) {\n-                $entry->set_data('storing_engine', $template->extension()->get_storing_engine());\n-                $template->extension()->set('storing_engine', $template->extension()->get_storing_engine());\n-            }\n-            if (array_key_exists('class', $atts)) {\n-                $classes = explode(' ', $atts['class']);\n+            if ($attributes->get('attachment_id')) {\n+                $entry->set_data('attachment_id', $attributes->get('attachment_id'));\n+            } elseif ($attributes->get('file_id')) {\n+                $entry->set_data('file_id', $attributes->get('file_id'));\n             } else {\n-                $classes = [];\n+                $entry->set_data('pdf', $pdf);\n             }\n+\n+            $classes = $attributes->get('class');\n             $classes[] = 'e2pdf-download';\n \n-            $options = [];\n-            $options = apply_filters('e2pdf_model_shortcode_extension_options', $options, $template);\n-            $options = apply_filters('e2pdf_model_shortcode_e2pdf_zapier_extension_options', $options, $template);\n-            foreach ($options as $option_key => $option_value) {\n-                $template->extension()->set($option_key, $option_value);\n+            $inline = '0';\n+            if ($attributes->get('inline') !== false) {\n+                $inline = $attributes->get('inline');\n+                $entry->set_data('inline', $inline);\n             }\n \n-            if ($template->extension()->verify() && $this->process_shortcode($template, 'e2pdf_zapier')) {\n-\n-                if (array_key_exists('inline', $atts)) {\n-                    $inline = $atts['inline'] == 'true' ? '1' : '0';\n-                    $entry->set_data('inline', $inline);\n-                } else {\n-                    $inline = $template->get('inline');\n-                }\n-                if (array_key_exists('flatten', $atts)) {\n-                    $flatten = strval((int) $atts['flatten']);\n-                    $entry->set_data('flatten', $flatten);\n-                }\n-                if (array_key_exists('format', $atts)) {\n-                    $format = $atts['format'];\n-                    if ($template->set('format', $format)) {\n-                        $entry->set_data('format', $format);\n-                    }\n-                }\n-                if (array_key_exists('password', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $password = $template->extension()->render($atts['password']);\n-                    } else {\n-                        $password = $template->extension()->convert_shortcodes($atts['password'], true);\n-                    }\n-                    $entry->set_data('password', $password);\n-                }\n-                if (array_key_exists('dpdf', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $dpdf = $template->extension()->render($atts['dpdf']);\n-                    } else {\n-                        $dpdf = $template->extension()->convert_shortcodes($atts['dpdf'], true);\n-                    }\n-                    $entry->set_data('dpdf', $dpdf);\n-                }\n-                if (array_key_exists('meta_title', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $meta_title = $template->extension()->render($atts['meta_title']);\n-                    } else {\n-                        $meta_title = $template->extension()->convert_shortcodes($atts['meta_title'], true);\n-                    }\n-                    $entry->set_data('meta_title', $meta_title);\n-                }\n-                if (array_key_exists('meta_subject', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $meta_subject = $template->extension()->render($atts['meta_subject']);\n-                    } else {\n-                        $meta_subject = $template->extension()->convert_shortcodes($atts['meta_subject'], true);\n-                    }\n-                    $entry->set_data('meta_subject', $meta_subject);\n-                }\n-                if (array_key_exists('meta_author', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $meta_author = $template->extension()->render($atts['meta_author']);\n-                    } else {\n-                        $meta_author = $template->extension()->convert_shortcodes($atts['meta_author'], true);\n-                    }\n-                    $entry->set_data('meta_author', $meta_author);\n-                }\n-                if (array_key_exists('meta_keywords', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $meta_keywords = $template->extension()->render($atts['meta_keywords']);\n-                    } else {\n-                        $meta_keywords = $template->extension()->convert_shortcodes($atts['meta_keywords'], true);\n-                    }\n-                    $entry->set_data('meta_keywords', $meta_keywords);\n-                }\n-                if (array_key_exists('name', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $name = $template->extension()->render($atts['name']);\n-                    } else {\n-                        $name = $template->extension()->convert_shortcodes($atts['name'], true);\n-                    }\n-                    $entry->set_data('name', $name);\n-                    $template->set('name', $name);\n-                } else {\n-                    $template->set('name', $template->extension()->render($template->get('name')));\n-                }\n-\n+            if ($attributes->get('name') !== false) {\n+                $name = $attributes->get('name');\n+                $entry->set_data('name', $name);\n+            } else {\n+                $name = '';\n+            }\n+            $content_type = 'application\u002Fjson';\n+            $blog_charset = get_option('blog_charset');\n+            if (!empty($blog_charset)) {\n+                $content_type .= '; charset=' . get_option('blog_charset');\n+            }\n+            if ($attributes->get('local')) {\n+                $url = $attributes->get('attachment_id') ? wp_get_attachment_url($attributes->get('attachment_id')) : $this->helper->get_frontend_local_pdf_url($pdf);\n+                $url = apply_filters('e2pdf_model_shortcode_e2pdf_zapier_pdf_url', $url, $atts);\n+                $ext = pathinfo($pdf, PATHINFO_EXTENSION);\n+                $name = basename($pdf, '.' . $ext);\n+            } else {\n                 if (!$entry->load_by_uid()) {\n                     $entry->save();\n                 }\n \n                 if ($entry->get('ID')) {\n \n-                    $content_type = 'application\u002Fjson';\n-                    $blog_charset = get_option('blog_charset');\n-                    if (!empty($blog_charset)) {\n-                        $content_type .= '; charset=' . get_option('blog_charset');\n-                    }\n-\n                     $url_data = [\n                         'page' => 'e2pdf-download',\n                         'uid' => $entry->get('uid'),\n                     ];\n-\n                     $url_data = apply_filters('e2pdf_model_shortcode_url_data', $url_data, $atts);\n                     $url_data = apply_filters('e2pdf_model_shortcode_e2pdf_zapier_url_data', $url_data, $atts);\n \n                     $url = esc_url_raw(\n                             $this->helper->get_frontend_pdf_url(\n-                                    $url_data, $site_url,\n+                                    $url_data, $attributes->get('site_url'),\n                                     [\n                                         'e2pdf_model_shortcode_site_url',\n                                         'e2pdf_model_shortcode_e2pdf_zapier_site_url',\n@@ -1681,62 +1154,187 @@\n                             )\n                     );\n                     $url = apply_filters('e2pdf_model_shortcode_e2pdf_zapier_pdf_url', $url, $atts);\n-\n-                    $zapier = [];\n-                    if ($template_id) {\n-                        $zapier['id'] = $template_id;\n-                    }\n-                    if ($dataset) {\n-                        $zapier['dataset'] = $dataset;\n-                    }\n-                    if ($dataset2) {\n-                        $zapier['dataset2'] = $dataset2;\n-                    }\n-                    if ($wc_order_id) {\n-                        $zapier['wc_order_id'] = $wc_order_id;\n-                    }\n-                    if ($wc_product_item_id) {\n-                        $zapier['wc_product_item_id'] = $wc_product_item_id;\n+                    $ext = pathinfo($pdf, PATHINFO_EXTENSION);\n+                    if (!$name) {\n+                        $name = basename($pdf, '.' . $ext);\n                     }\n+                }\n+            }\n+            if ($attributes->get('local') || $entry->get('ID')) {\n+                $zapier = [];\n+                if ($attributes->get('id')) {\n+                    $zapier['id'] = $attributes->get('id');\n+                }\n+                if ($attributes->get('dataset')) {\n+                    $zapier['dataset'] = $attributes->get('dataset');\n+                }\n+                if ($attributes->get('dataset2')) {\n+                    $zapier['dataset2'] = $attributes->get('dataset2');\n+                }\n+                if ($attributes->get('wc_order_id')) {\n+                    $zapier['wc_order_id'] = $attributes->get('wc_order_id');\n+                }\n+                if ($attributes->get('wc_product_item_id')) {\n+                    $zapier['wc_product_item_id'] = $attributes->get('wc_product_item_id');\n+                }\n+                if ($entry->get('ID')) {\n+                    $zapier['uid'] = $entry->get('uid');\n+                }\n+                $zapier['name'] = $name;\n+                $zapier['format'] = strtolower($ext);\n+                $zapier['url'] = $url;\n+\n+                $data = apply_filters(\n+                        'e2pdf_model_shortcode_e2pdf_zapier_data',\n+                        array_merge(\n+                                $zapier, $attributes->get('arguments')\n+                        ), $atts\n+                );\n+\n+                $zapier_args = apply_filters(\n+                        'e2pdf_model_shortcode_e2pdf_zapier_args',\n+                        [\n+                            'method' => 'POST',\n+                            'body' => json_encode($data), \u002F\u002F phpcs:ignore WordPress.WP.AlternativeFunctions.json_encode_json_encode\n+                            'headers' => [\n+                                'Content-Type' => $content_type,\n+                            ],\n+                        ], $atts\n+                );\n+                $result = [];\n+                if ($attributes->get('webhook') !== 'local') {\n+                    $result = wp_remote_post($attributes->get('webhook'), $zapier_args);\n+                }\n+                $response = apply_filters('e2pdf_model_shortcode_e2pdf_zapier_response', $response, $result, $atts, $data);\n+            }\n \n-                    if ($template->get('name')) {\n-                        $name = $template->get('name');\n-                    } else {\n-                        $name = $template->extension()->render($template->get_name());\n-                    }\n+            return $response;\n+        }\n \n-                    $zapier['uid'] = $entry->get('uid');\n-                    $zapier['name'] = $name;\n-                    $zapier['format'] = $template->get('format');\n-                    $zapier['url'] = $url;\n-\n-                    $data = apply_filters(\n-                            'e2pdf_model_shortcode_e2pdf_zapier_data',\n-                            array_merge(\n-                                    $zapier, $args\n-                            ), $atts\n-                    );\n+        if (!$attributes->get('id') || (!$attributes->get('dataset') && !$attributes->get('dataset2'))) {\n+            return $response;\n+        }\n \n-                    $zapier_args = apply_filters(\n-                            'e2pdf_model_shortcode_e2pdf_zapier_args',\n-                            [\n-                                'method' => 'POST',\n-                                'body' => json_encode($data), \u002F\u002F phpcs:ignore WordPress.WP.AlternativeFunctions.json_encode_json_encode\n-                                'headers' => [\n-                                    'Content-Type' => $content_type,\n-                                ],\n-                            ], $atts\n-                    );\n+        $template = new Model_E2pdf_Template();\n+        if (!$template->load($attributes->get('id'), false)) {\n+            return $response;\n+        }\n \n-                    $result = [];\n-                    if ($webhook !== 'local') {\n-                        $result = wp_remote_post($webhook, $zapier_args);\n-                    }\n+        $entry = new Model_E2pdf_Entry();\n+\n+        $template->extension()->patch('template_id', $attributes->get('id'), $entry);\n+        $template->extension()->patch('dataset', $attributes->get('dataset'), $entry);\n+        $template->extension()->patch('dataset2', $attributes->get('dataset2'), $entry);\n+        $template->extension()->patch('wc_order_id', $attributes->get('wc_order_id'), $entry);\n+        $template->extension()->patch('wc_product_item_id', $attributes->get('wc_product_item_id'), $entry);\n+        \u002F\u002F phpcs:ignore WordPress.WP.CapitalPDangit.Misspelled\n+        if (!($template->get('extension') === 'wordpress' && $template->get('item') === '-3')) {\n+            $template->extension()->patch('user_id', $attributes->get('user_id'), $entry);\n+        }\n+        $template->extension()->patch('args', $attributes->get('arguments'), $entry);\n+        $template->extension()->patch('storing_engine', $template->extension()->get_storing_engine(), $entry);\n+\n+        $classes = $attributes->get('class');\n+        $classes[] = 'e2pdf-download';\n+\n+        $options = apply_filters('e2pdf_model_shortcode_extension_options', [], $template);\n+        $options = apply_filters('e2pdf_model_shortcode_e2pdf_zapier_extension_options', $options, $template);\n+        foreach ($options as $option_key => $option_value) {\n+            $template->extension()->set($option_key, $option_value);\n+        }\n+\n+        if ($template->extension()->verify() && $this->process_shortcode('e2pdf_zapier', $template, $attributes)) {\n+\n+            $template->patch('inline', $attributes->get('inline'), $entry, $attributes->get('filter'));\n+            $template->patch('flatten', $attributes->get('flatten'), $entry, $attributes->get('filter'));\n+            $template->patch('format', $attributes->get('format'), $entry, $attributes->get('filter'));\n+            $template->patch('password', $attributes->get('password'), $entry, $attributes->get('filter'));\n+            $template->patch('dpdf', $attributes->get('dpdf'), $entry, $attributes->get('filter'));\n+            $template->patch('name', $attributes->get('name'), $entry, $attributes->get('filter'));\n+            $template->patch('meta_title', $attributes->get('meta_title'), $entry, $attributes->get('filter'));\n+            $template->patch('meta_subject', $attributes->get('meta_subject'), $entry, $attributes->get('filter'));\n+            $template->patch('meta_author', $attributes->get('meta_author'), $entry, $attributes->get('filter'));\n+            $template->patch('meta_keywords', $attributes->get('meta_keywords'), $entry, $attributes->get('filter'));\n+\n+            if (!$entry->load_by_uid()) {\n+                $entry->save();\n+            }\n+\n+            if ($entry->get('ID')) {\n+\n+                $content_type = 'application\u002Fjson';\n+                $blog_charset = get_option('blog_charset');\n+                if (!empty($blog_charset)) {\n+                    $content_type .= '; charset=' . get_option('blog_charset');\n+                }\n \n-                    $response = apply_filters('e2pdf_model_shortcode_e2pdf_zapier_response', $response, $result, $atts, $data);\n+                $url_data = [\n+                    'page' => 'e2pdf-download',\n+                    'uid' => $entry->get('uid'),\n+                ];\n+                $url_data = apply_filters('e2pdf_model_shortcode_url_data', $url_data, $atts);\n+                $url_data = apply_filters('e2pdf_model_shortcode_e2pdf_zapier_url_data', $url_data, $atts);\n+\n+                $url = esc_url_raw(\n+                        $this->helper->get_frontend_pdf_url(\n+                                $url_data, $attributes->get('site_url'),\n+                                [\n+                                    'e2pdf_model_shortcode_site_url',\n+                                    'e2pdf_model_shortcode_e2pdf_zapier_site_url',\n+                                ]\n+                        )\n+                );\n+                $url = apply_filters('e2pdf_model_shortcode_e2pdf_zapier_pdf_url', $url, $atts);\n+\n+                $zapier = [];\n+                if ($attributes->get('id')) {\n+                    $zapier['id'] = $attributes->get('id');\n+                }\n+                if ($attributes->get('dataset')) {\n+                    $zapier['dataset'] = $attributes->get('dataset');\n+                }\n+                if ($attributes->get('dataset2')) {\n+                    $zapier['dataset2'] = $attributes->get('dataset2');\n+                }\n+                if ($attributes->get('wc_order_id')) {\n+                    $zapier['wc_order_id'] = $attributes->get('wc_order_id');\n+                }\n+                if ($attributes->get('wc_product_item_id')) {\n+                    $zapier['wc_product_item_id'] = $attributes->get('wc_product_item_id');\n+                }\n+\n+                $zapier['uid'] = $entry->get('uid');\n+                $zapier['name'] = $template->get('name');\n+                $zapier['format'] = $template->get('format');\n+                $zapier['url'] = $url;\n+\n+                $data = apply_filters(\n+                        'e2pdf_model_shortcode_e2pdf_zapier_data',\n+                        array_merge(\n+                                $zapier, $attributes->get('arguments')\n+                        ), $atts\n+                );\n+\n+                $zapier_args = apply_filters(\n+                        'e2pdf_model_shortcode_e2pdf_zapier_args',\n+                        [\n+                            'method' => 'POST',\n+                            'body' => json_encode($data), \u002F\u002F phpcs:ignore WordPress.WP.AlternativeFunctions.json_encode_json_encode\n+                            'headers' => [\n+                                'Content-Type' => $content_type,\n+                            ],\n+                        ], $atts\n+                );\n+\n+                $result = [];\n+                if ($attributes->get('webhook') !== 'local') {\n+                    $result = wp_remote_post($attributes->get('webhook'), $zapier_args);\n                 }\n+\n+                $response = apply_filters('e2pdf_model_shortcode_e2pdf_zapier_response', $response, $result, $atts, $data);\n             }\n         }\n+\n         return $response;\n     }\n \n@@ -1751,204 +1349,97 @@\n         $name = '';\n \n         $atts = apply_filters('e2pdf_model_shortcode_e2pdf_view_atts', $atts);\n-        $template_id = isset($atts['id']) ? (int) $atts['id'] : false;\n-        $dataset = isset($atts['dataset']) ? $atts['dataset'] : false;\n-        $dataset2 = isset($atts['dataset2']) ? $atts['dataset2'] : false;\n-        $width = isset($atts['width']) ? $atts['width'] : '100%';\n-        $height = isset($atts['height']) ? $atts['height'] : '500';\n-        $pdf = isset($atts['pdf']) ? $atts['pdf'] : false;\n-        $attachment_id = isset($atts['attachment_id']) ? $atts['attachment_id'] : false;\n-        $responsive = isset($atts['responsive']) && ($atts['responsive'] == 'true' || $atts['responsive'] == 'page') ? true : false;\n-        $viewer = isset($atts['viewer']) && $atts['viewer'] ? $atts['viewer'] : false;\n-        $single_page_mode = isset($atts['single_page_mode']) && $atts['single_page_mode'] == 'true' ? true : false;\n-        $hide = isset($atts['hide']) ? $atts['hide'] : false;\n-        $background = isset($atts['background']) ? $atts['background'] : false;\n-        $border = isset($atts['border']) ? $atts['border'] : false;\n-        $site_url = isset($atts['site_url']) ? $atts['site_url'] : false;\n-        $theme = isset($atts['theme']) && $atts['theme'] == 'light' ? 'light' : 'dark';\n-        $wc_order_id = isset($atts['wc_order_id']) ? $atts['wc_order_id'] : false;\n-        $wc_product_item_id = isset($atts['wc_product_item_id']) ? $atts['wc_product_item_id'] : false;\n-        $local = isset($atts['local']) && $atts['local'] == 'true' ? true : false;\n-        $preload = isset($atts['preload']) && $atts['preload'] == 'true' ? true : false;\n-        $style = isset($atts['style']) && $atts['style'] ? explode(';', $atts['style']) : [];\n-        $output = isset($atts['output']) ? $atts['output'] : '';\n-        \u002F* Backward compatiability *\u002F\n-        $esc_url_raw = isset($atts['esc_url_raw']) && $atts['esc_url_raw'] == 'true' ? true : false;\n-        if ($output == 'url' && $esc_url_raw) {\n-            $output = 'url_raw';\n-        }\n-        $args = [];\n-        foreach ($atts as $att_key => $att_value) {\n-            if (substr($att_key, 0, 3) === 'arg') {\n-                $args[$att_key] = $att_value;\n-            }\n-        }\n+        $attributes = (new Helper_E2pdf_Atts())->load($atts);\n+\n+        $style = $attributes->get('style');\n \n         $app_options = [];\n-        if (isset($atts['resolution'])) {\n-            $app_options[] = 'resolution=\"' . esc_attr($atts['resolution']) . '\"';\n+        if ($attributes->get('resolution') !== false) {\n+            $app_options[] = 'resolution=\"' . esc_attr($attributes->get('resolution')) . '\"';\n         }\n-        if (isset($atts['cursor'])) {\n-            $app_options[] = 'cursor=\"' . esc_attr($atts['cursor']) . '\"';\n+        if ($attributes->get('cursor') !== false) {\n+            $app_options[] = 'cursor=\"' . esc_attr($attributes->get('cursor')) . '\"';\n         }\n-        if (isset($atts['scroll'])) {\n-            $app_options[] = 'scroll=\"' . esc_attr($atts['scroll']) . '\"';\n+        if ($attributes->get('scroll') !== false) {\n+            $app_options[] = 'scroll=\"' . esc_attr($attributes->get('scroll')) . '\"';\n         }\n-        if (isset($atts['spread'])) {\n-            $app_options[] = 'spread=\"' . esc_attr($atts['spread']) . '\"';\n+        if ($attributes->get('spread') !== false) {\n+            $app_options[] = 'spread=\"' . esc_attr($attributes->get('spread')) . '\"';\n         }\n \n         $viewer_options = [];\n-        if (isset($atts['page'])) {\n-            $viewer_options[] = 'page=' . $atts['page'];\n+        if ($attributes->get('page') !== false) {\n+            $viewer_options[] = 'page=' . $attributes->get('page');\n         }\n \n-        if (isset($atts['zoom'])) {\n-            $viewer_options[] = 'zoom=' . $atts['zoom'];\n+        if ($attributes->get('zoom') !== false) {\n+            $viewer_options[] = 'zoom=' . $attributes->get('zoom');\n         }\n \n-        if (isset($atts['nameddest'])) {\n-            $viewer_options[] = 'nameddest=' . $atts['nameddest'];\n+        if ($attributes->get('nameddest') !== false) {\n+            $viewer_options[] = 'nameddest=' . $attributes->get('nameddest');\n         }\n \n-        if (isset($atts['pagemode'])) {\n-            $atts['sidebar'] = $atts['pagemode'];\n-        }\n-        if (isset($atts['sidebar'])) {\n-            $viewer_options[] = 'pagemode=' . $atts['sidebar'];\n+        if ($attributes->get('pagemode') !== false) {\n+            $attributes->set('sidebar', $attributes->get('pagemode'));\n         }\n \n-        if (array_key_exists('class', $atts)) {\n-            $classes = explode(' ', $atts['class']);\n-        } else {\n-            $classes = [];\n+        if ($attributes->get('sidebar') !== false) {\n+            $viewer_options[] = 'pagemode=' . $attributes->get('sidebar');\n         }\n+\n+        $classes = $attributes->get('class');\n         $classes[] = 'e2pdf-view';\n \n-        if ($preload) {\n+        if ($attributes->get('preload')) {\n             $classes[] = 'e2pdf-preload';\n         }\n \n-        if ($responsive) {\n+        if ($attributes->get('responsive')) {\n             $classes[] = 'e2pdf-responsive';\n-            if ($atts['responsive'] == 'page') {\n+            if ($attributes->get('responsive') === 'page') {\n                 $classes[] = 'e2pdf-responsive-page';\n             }\n         }\n \n-        if ($single_page_mode) {\n+        if ($attributes->get('single_page_mode')) {\n             $classes[] = 'e2pdf-single-page-mode';\n         }\n \n-        if ($theme == 'dark') {\n+        if ($attributes->get('theme', 'dark') === 'dark') {\n             $classes[] = 'e2pdf-dark-theme';\n         }\n \n-        if ($hide) {\n-            $hidden = array_map('trim', explode(',', $hide));\n-            if (in_array('toolbar', $hidden, true)) {\n-                $classes[] = 'e2pdf-hide-toolbar';\n-            }\n-            if (in_array('secondary-toolbar', $hidden, true)) {\n-                $classes[] = 'e2pdf-hide-secondary-toolbar';\n-            }\n-            if (in_array('left-toolbar', $hidden, true)) {\n-                $classes[] = 'e2pdf-hide-left-toolbar';\n-            }\n-            if (in_array('middle-toolbar', $hidden, true)) {\n-                $classes[] = 'e2pdf-hide-middle-toolbar';\n-            }\n-            if (in_array('right-toolbar', $hidden, true)) {\n-                $classes[] = 'e2pdf-hide-right-toolbar';\n-            }\n-            if (in_array('sidebar', $hidden, true)) {\n-                $classes[] = 'e2pdf-hide-sidebar';\n-            }\n-            if (in_array('search', $hidden, true)) {\n-                $classes[] = 'e2pdf-hide-search';\n-            }\n-            if (in_array('pageupdown', $hidden, true)) {\n-                $classes[] = 'e2pdf-hide-pageupdown';\n-            }\n-            if (in_array('pagenumber', $hidden, true)) {\n-                $classes[] = 'e2pdf-hide-pagenumber';\n-            }\n-            if (in_array('zoom', $hidden, true)) {\n-                $classes[] = 'e2pdf-hide-zoom';\n-            }\n-            if (in_array('scale', $hidden, true)) {\n-                $classes[] = 'e2pdf-hide-scale';\n-            }\n-            if (in_array('presentation', $hidden, true)) {\n-                $classes[] = 'e2pdf-hide-presentation';\n-            }\n-            if (in_array('openfile', $hidden, true)) {\n-                $classes[] = 'e2pdf-hide-openfile';\n-            }\n-            if (in_array('print', $hidden, true)) {\n-                $classes[] = 'e2pdf-hide-print';\n-            }\n-            if (in_array('download', $hidden, true)) {\n-                $classes[] = 'e2pdf-hide-download';\n-            }\n-            if (in_array('bookmark', $hidden, true)) {\n-                $classes[] = 'e2pdf-hide-bookmark';\n-            }\n-            if (in_array('firstlastpage', $hidden, true)) {\n-                $classes[] = 'e2pdf-hide-firstlastpage';\n-            }\n-            if (in_array('rotate', $hidden, true)) {\n-                $classes[] = 'e2pdf-hide-rotate';\n-            }\n-            if (in_array('cursor', $hidden, true)) {\n-                $classes[] = 'e2pdf-hide-cursor';\n-            }\n-            if (in_array('scroll', $hidden, true)) {\n-                $classes[] = 'e2pdf-hide-scroll';\n-            }\n-            if (in_array('spread', $hidden, true)) {\n-                $classes[] = 'e2pdf-hide-spread';\n-            }\n-            if (in_array('properties', $hidden, true)) {\n-                $classes[] = 'e2pdf-hide-properties';\n-            }\n-            if (in_array('loader', $hidden, true)) {\n-                $classes[] = 'e2pdf-hide-loader';\n-            }\n-            if (in_array('freetext', $hidden, true)) {\n-                $classes[] = 'e2pdf-hide-freetext';\n-            }\n-            if (in_array('ink', $hidden, true)) {\n-                $classes[] = 'e2pdf-hide-ink';\n-            }\n-            if (in_array('stamp', $hidden, true)) {\n-                $classes[] = 'e2pdf-hide-stamp';\n-            }\n-            if (in_array('editor', $hidden, true)) {\n-                $classes[] = 'e2pdf-hide-editor';\n+        if ($attributes->get('hide')) {\n+            $hidden = array_map('trim', explode(',', $attributes->get('hide')));\n+            foreach ($hidden as $item) {\n+                if ($item !== '') {\n+                    $classes[] = 'e2pdf-hide-' . $item;\n+                }\n             }\n         }\n \n-        if ($background !== false) {\n+        if ($attributes->get('background') !== false) {\n             $classes[] = 'e2pdf-hide-background';\n         }\n \n-        if ($border !== false) {\n-            array_unshift($style, 'border:' . $border);\n+        if ($attributes->get('border') !== false) {\n+            array_unshift($style, 'border:' . $attributes->get('border'));\n         }\n \n-        if ($background !== false) {\n-            array_unshift($style, 'background:' . $background);\n+        if ($attributes->get('background') !== false) {\n+            array_unshift($style, 'background:' . $attributes->get('background'));\n         }\n \n-        if ($pdf || $attachment_id) {\n-            if (filter_var($pdf, FILTER_VALIDATE_URL)) {\n+        if ($attributes->get('pdf') || $attributes->get('attachment_id') || $attributes->get('file_id')) {\n+            $pdf = $attributes->get('pdf');\n+            if ($pdf && filter_var($pdf, FILTER_VALIDATE_URL)) {\n                 \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode\n                 $file = urlencode($pdf);\n                 if (!empty($viewer_options)) {\n                     $file .= '#' . implode('&', $viewer_options);\n                 }\n-                switch ($output) {\n+                switch ($attributes->get('output')) {\n                     case 'url':\n                     case 'url_raw':\n                     case 'url_encode':\n@@ -1957,59 +1448,218 @@\n                                     'class' => implode(';', $classes),\n                                     'file' => $file,\n                                 ],\n-                                $viewer ? $viewer : plugins_url('assets\u002Fpdf.js\u002Fweb\u002Fviewer.html', $this->helper->get('plugin_file_path'))\n+                                $attributes->get('viewer', plugins_url('assets\u002Fpdf.js\u002Fweb\u002Fviewer.html', $this->helper->get('plugin_file_path')))\n                         );\n-                        if ($output == 'url') {\n+                        if ($attributes->get('output') === 'url') {\n                             $response = esc_url($viewer_url);\n-                        } elseif ($output == 'url_raw') {\n+                        } elseif ($attributes->get('output') === 'url_raw') {\n                             $response = esc_url_raw($viewer_url);\n-                        } elseif ($output == 'url_encode') {\n+                        } elseif ($attributes->get('output') === 'url_encode') {\n                             \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode\n                             $response = urlencode(esc_url_raw($viewer_url));\n                         }\n                         break;\n                     default:\n-                        $viewer_url = esc_url(add_query_arg(['file' => $file], $viewer ? $viewer : plugins_url('assets\u002Fpdf.js\u002Fweb\u002Fviewer.html', $this->helper->get('plugin_file_path'))));\n-                        if ($preload) {\n-                            $response = '\u003Ciframe name=\"' . md5($this->helper->get('version')) . '\" onload=\"e2pdfViewer.iframeLoad(this)\" style=\"' . esc_attr(implode(';', $style)) . '\" class=\"' . esc_attr(implode(' ', $classes)) . '\" ' . implode(' ', $app_options) . ' width=\"' . esc_attr($width) . '\" height=\"' . esc_attr($height) . '\" preload=\"' . $viewer_url . '\">\u003C\u002Fiframe>';\n+                        $viewer_url = esc_url(\n+                                add_query_arg(\n+                                        [\n+                                            'file' => $file,\n+                                        ],\n+                                        $attributes->get('viewer', plugins_url('assets\u002Fpdf.js\u002Fweb\u002Fviewer.html', $this->helper->get('plugin_file_path')))\n+                                )\n+                        );\n+\n+                        $attrs = [\n+                            'onload=\"e2pdfViewer.iframeLoad(this)\"',\n+                            'name=\"' . md5($this->helper->get('version')) . '\"',\n+                            'style=\"' . esc_attr(implode(';', $style)) . '\"',\n+                            'class=\"' . esc_attr(implode(' ', $classes)) . '\"',\n+                            implode(' ', $app_options),\n+                            'width=\"' . esc_attr($attributes->get('width', '100%')) . '\"',\n+                            'height=\"' . esc_attr($attributes->get('height', '500')) . '\"',\n+                        ];\n+\n+                        if ($attributes->get('preload')) {\n+                            $attrs[] = 'preload=\"' . $viewer_url . '\"';\n                         } else {\n-                            $response = '\u003Ciframe name=\"' . md5($this->helper->get('version')) . '\" onload=\"e2pdfViewer.iframeLoad(this)\" style=\"' . esc_attr(implode(';', $style)) . '\" class=\"' . esc_attr(implode(' ', $classes)) . '\" ' . implode(' ', $app_options) . ' width=\"' . esc_attr($width) . '\" height=\"' . esc_attr($height) . '\" src=\"' . $viewer_url . '\">\u003C\u002Fiframe>';\n+                            $attrs[] = 'src=\"' . $viewer_url . '\"';\n                         }\n+                        $response = '\u003Ciframe ' . implode(' ', $attrs) . '>\u003C\u002Fiframe>';\n                         break;\n                 }\n             } else {\n-                if ($attachment_id) {\n-                    $pdf = get_attached_file($attachment_id);\n+                $downloadable = false;\n+                if ($attributes->get('file_id')) {\n+                    $pdf = (new Model_E2pdf_Gdrive())->exists($attributes->get('file_id'));\n+                    if ($pdf) {\n+                        $downloadable = true;\n+                    }\n+                } else {\n+                    if ($attributes->get('attachment_id')) {\n+                        $pdf = get_attached_file($attributes->get('attachment_id'));\n+                    } else {\n+                        $pdf = $this->helper->load('convert')->to_file_dir($pdf);\n+                    }\n+                    if (strpos($pdf, '\u002F') !== 0 && !preg_match('\u002F^[A-Za-z]:\u002F', $pdf)) {\n+                        $pdf = ABSPATH . $pdf;\n+                    }\n+                    $downloadable = !$this->helper->load('filter')->is_stream($pdf) && file_exists($pdf) && $this->helper->load('filter')->is_downloadable($pdf);\n                 }\n-                if (strpos($pdf, '\u002F') !== 0 && !preg_match('\u002F^[A-Za-z]:\u002F', $pdf)) {\n-                    $pdf = ABSPATH . $pdf;\n+                if (!$downloadable) {\n+                    return $response;\n                 }\n-                if (!$this->helper->load('filter')->is_stream($pdf) && file_exists($pdf) && $this->helper->load('filter')->is_downloadable($pdf)) {\n-                    $entry = new Model_E2pdf_Entry();\n-                    if ($attachment_id) {\n-                        $entry->set_data('attachment_id', $attachment_id);\n-                    } else {\n-                        $entry->set_data('pdf', $pdf);\n+                $entry = new Model_E2pdf_Entry();\n+                if ($attributes->get('attachment_id')) {\n+                    $entry->set_data('attachment_id', $attributes->get('attachment_id'));\n+                } else {\n+                    $entry->set_data('pdf', $pdf);\n+                }\n+\n+                $inline = '0';\n+                if ($attributes->get('inline') !== false) {\n+                    $inline = $attributes->get('inline');\n+                    $entry->set_data('inline', $inline);\n+                }\n+\n+                if ($attributes->get('name') !== false) {\n+                    $name = $attributes->get('name');\n+                    $entry->set_data('name', $name);\n+                }\n+\n+                if ($attributes->get('local')) {\n+                    $ext = pathinfo($pdf, PATHINFO_EXTENSION);\n+                    $url = $attributes->get('attachment_id') ? wp_get_attachment_url($attributes->get('attachment_id')) : $this->helper->get_frontend_local_pdf_url($pdf);\n+                    $url = apply_filters('e2pdf_model_shortcode_e2pdf_view_pdf_url', $url, $atts);\n+                    if ($ext == 'pdf') {\n+                        $file = $url;\n+                        if (!empty($viewer_options)) {\n+                            $file .= '#' . implode('&', $viewer_options);\n+                        }\n+                        switch ($attributes->get('output')) {\n+                            case 'url':\n+                            case 'url_raw':\n+                            case 'url_encode':\n+                                $viewer_url = add_query_arg(\n+                                        [\n+                                            'class' => implode(';', $classes),\n+                                            'file' => $file,\n+                                        ],\n+                                        $attributes->get('viewer', plugins_url('assets\u002Fpdf.js\u002Fweb\u002Fviewer.html', $this->helper->get('plugin_file_path')))\n+                                );\n+                                if ($attributes->get('output') === 'url') {\n+                                    $response = esc_url($viewer_url);\n+                                } elseif ($attributes->get('output') === 'url_raw') {\n+                                    $response = esc_url_raw($viewer_url);\n+                                } elseif ($attributes->get('output') === 'url_encode') {\n+                                    \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode\n+                                    $response = urlencode(esc_url_raw($viewer_url));\n+                                }\n+                                break;\n+                            default:\n+                                $viewer_url = esc_url(\n+                                        add_query_arg(\n+                                                [\n+                                                    'file' => $file,\n+                                                ],\n+                                                $attributes->get('viewer', plugins_url('assets\u002Fpdf.js\u002Fweb\u002Fviewer.html', $this->helper->get('plugin_file_path')))\n+                                        )\n+                                );\n+                                $attrs = [\n+                                    'onload=\"e2pdfViewer.iframeLoad(this)\"',\n+                                    'name=\"' . md5($this->helper->get('version')) . '\"',\n+                                    'style=\"' . esc_attr(implode(';', $style)) . '\"',\n+                                    'class=\"' . esc_attr(implode(' ', $classes)) . '\"',\n+                                    implode(' ', $app_options),\n+                                    'width=\"' . esc_attr($attributes->get('width', '100%')) . '\"',\n+                                    'height=\"' . esc_attr($attributes->get('height', '500')) . '\"',\n+                                ];\n+\n+                                if ($attributes->get('preload')) {\n+                                    $attrs[] = 'preload=\"' . $viewer_url . '\"';\n+                                } else {\n+                                    $attrs[] = 'src=\"' . $viewer_url . '\"';\n+                                }\n+                                $response = '\u003Ciframe ' . implode(' ', $attrs) . '>\u003C\u002Fiframe>';\n+                                break;\n+                        }\n+                    } elseif ($ext == 'jpg') {\n+                        switch ($attributes->get('output')) {\n+                            case 'url':\n+                                $response = esc_url($url);\n+                                break;\n+                            case 'url_raw':\n+                                $response = esc_url_raw($url);\n+                                break;\n+                            case 'url_encode':\n+                                \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode\n+                                $response = urlencode(esc_url_raw($url));\n+                                break;\n+                            default:\n+                                $url = esc_url($url);\n+                                if ($attributes->get('preload', 'true')) {\n+                                    $classes[] = 'e2pdf-preload';\n+                                    if ($attributes->get('theme', 'dark') === 'dark') {\n+                                        $style[] = 'background: url(\\'data:image\u002Fsvg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCIgdmlld0JveD0iMCAwIDI0IDI0Ij48ZyBzdHJva2U9IndoaXRlIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI5LjUiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIzIj48YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdHJva2UtZGFzaGFycmF5IiBjYWxjTW9kZT0ic3BsaW5lIiBkdXI9IjEuNXMiIGtleVNwbGluZXM9IjAuNDIsMCwwLjU4LDE7MC40MiwwLDAuNTgsMTswLjQyLDAsMC41OCwxIiBrZXlUaW1lcz0iMDswLjQ3NTswLjk1OzEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiB2YWx1ZXM9IjAgMTUwOzQyIDE1MDs0MiAxNTA7NDIgMTUwIi8+PGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ic3Ryb2tlLWRhc2hvZmZzZXQiIGNhbGNNb2RlPSJzcGxpbmUiIGR1cj0iMS41cyIga2V5U3BsaW5lcz0iMC40MiwwLDAuNTgsMTswLjQyLDAsMC41OCwxOzAuNDIsMCwwLjU4LDEiIGtleVRpbWVzPSIwOzAuNDc1OzAuOTU7MSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIHZhbHVlcz0iMDstMTY7LTU5Oy01OSIvPjwvY2lyY2xlPjxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgZHVyPSIycyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIHR5cGU9InJvdGF0ZSIgdmFsdWVzPSIwIDEyIDEyOzM2MCAxMiAxMiIvPjwvZz48L3N2Zz4=\\') no-repeat center center';\n+                                    } else {\n+                                        $style[] = 'background: url(\\'data:image\u002Fsvg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCIgdmlld0JveD0iMCAwIDI0IDI0Ij48ZyBzdHJva2U9ImJsYWNrIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI5LjUiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIzIj48YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdHJva2UtZGFzaGFycmF5IiBjYWxjTW9kZT0ic3BsaW5lIiBkdXI9IjEuNXMiIGtleVNwbGluZXM9IjAuNDIsMCwwLjU4LDE7MC40MiwwLDAuNTgsMTswLjQyLDAsMC41OCwxIiBrZXlUaW1lcz0iMDswLjQ3NTswLjk1OzEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiB2YWx1ZXM9IjAgMTUwOzQyIDE1MDs0MiAxNTA7NDIgMTUwIi8+PGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ic3Ryb2tlLWRhc2hvZmZzZXQiIGNhbGNNb2RlPSJzcGxpbmUiIGR1cj0iMS41cyIga2V5U3BsaW5lcz0iMC40MiwwLDAuNTgsMTswLjQyLDAsMC41OCwxOzAuNDIsMCwwLjU4LDEiIGtleVRpbWVzPSIwOzAuNDc1OzAuOTU7MSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIHZhbHVlcz0iMDstMTY7LTU5Oy01OSIvPjwvY2lyY2xlPjxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgZHVyPSIycyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIHR5cGU9InJvdGF0ZSIgdmFsdWVzPSIwIDEyIDEyOzM2MCAxMiAxMiIvPjwvZz48L3N2Zz4=\\') no-repeat center center';\n+                                    }\n+                                }\n+                                $attrs = [\n+                                    'style=\"' . esc_attr(implode(';', $style)) . '\"',\n+                                    'class=\"' . esc_attr(implode(' ', $classes)) . '\"',\n+                                    'width=\"' . esc_attr($attributes->get('width', '100%')) . '\"',\n+                                ];\n+                                if ($attributes->get('preload', 'true')) {\n+                                    $attrs[] = 'onload=\"e2pdfViewer.imageLoad(this)\"';\n+                                    $attrs[] = 'preload=\"' . $url . '\"';\n+                                    $attrs[] = 'src=\"data:image\u002Fpng;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mM8VA8AAgkBQ6KtxDkAAAAASUVORK5CYII=\"';\n+                                } else {\n+                                    $attrs[] = 'src=\"' . $url . '\"';\n+                                }\n+                                $response = '\u003Cimg ' . implode(' ', $attrs) . '>';\n+                                break;\n+                        }\n                     }\n-                    $inline = '0';\n-                    if (array_key_exists('inline', $atts)) {\n-                        $inline = $atts['inline'] == 'true' ? '1' : '0';\n-                        $entry->set_data('inline', $inline);\n-                    }\n-                    if (array_key_exists('name', $atts)) {\n-                        $name = $atts['name'];\n-                        $entry->set_data('name', $name);\n+                } else {\n+                    if (!$entry->load_by_uid()) {\n+                        $entry->save();\n                     }\n-                    if ($local) {\n+\n+                    if ($entry->get('ID')) {\n                         $ext = pathinfo($pdf, PATHINFO_EXTENSION);\n-                        $url = $attachment_id ? wp_get_attachment_url($entry->get_data('attachment_id')) : $this->helper->get_frontend_local_pdf_url($pdf);\n+                        if (!$name) {\n+                            $name = basename($pdf, '.' . $ext);\n+                        }\n+\n+                        $url_data = [\n+                            'page' => 'e2pdf-download',\n+                            'uid' => $entry->get('uid'),\n+                            'v' => $this->helper->get('version'),\n+                        ];\n+                        if ($ext == 'pdf') {\n+                            $url_data['saveName'] = $name;\n+                        }\n+                        $url_data = apply_filters('e2pdf_model_shortcode_url_data', $url_data, $atts);\n+                        $url_data = apply_filters('e2pdf_model_shortcode_e2pdf_viewer_url_data', $url_data, $atts);\n+\n+                        $url = esc_url_raw(\n+                                $this->helper->get_frontend_pdf_url(\n+                                        $url_data, $attributes->get('site_url'),\n+                                        [\n+                                            'e2pdf_model_shortcode_site_url',\n+                                            'e2pdf_model_shortcode_e2pdf_view_site_url',\n+                                        ]\n+                                )\n+                        );\n                         $url = apply_filters('e2pdf_model_shortcode_e2pdf_view_pdf_url', $url, $atts);\n+\n                         if ($ext == 'pdf') {\n-                            $file = $url;\n+                            \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode\n+                            $file = urlencode($url);\n                             if (!empty($viewer_options)) {\n                                 $file .= '#' . implode('&', $viewer_options);\n                             }\n-                            switch ($output) {\n+                            switch ($attributes->get('output')) {\n                                 case 'url':\n                                 case 'url_raw':\n                                 case 'url_encode':\n@@ -2018,28 +1668,46 @@\n                                                 'class' => implode(';', $classes),\n                                                 'file' => $file,\n                                             ],\n-                                            $viewer ? $viewer : plugins_url('assets\u002Fpdf.js\u002Fweb\u002Fviewer.html', $this->helper->get('plugin_file_path'))\n+                                            $attributes->get('viewer', plugins_url('assets\u002Fpdf.js\u002Fweb\u002Fviewer.html', $this->helper->get('plugin_file_path')))\n                                     );\n-                                    if ($output == 'url') {\n+                                    if ($attributes->get('output') === 'url') {\n                                         $response = esc_url($viewer_url);\n-                                    } elseif ($output == 'url_raw') {\n+                                    } elseif ($attributes->get('output') === 'url_raw') {\n                                         $response = esc_url_raw($viewer_url);\n-                                    } elseif ($output == 'url_encode') {\n+                                    } elseif ($attributes->get('output') === 'url_encode') {\n                                         \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode\n                                         $response = urlencode(esc_url_raw($viewer_url));\n                                     }\n                                     break;\n                                 default:\n-                                    $viewer_url = esc_url(add_query_arg(['file' => $file], $viewer ? $viewer : plugins_url('assets\u002Fpdf.js\u002Fweb\u002Fviewer.html', $this->helper->get('plugin_file_path'))));\n-                                    if ($preload) {\n-                                        $response = '\u003Ciframe name=\"' . md5($this->helper->get('version')) . '\" onload=\"e2pdfViewer.iframeLoad(this)\" style=\"' . esc_attr(implode(';', $style)) . '\" class=\"' . esc_attr(implode(' ', $classes)) . '\" ' . implode(' ', $app_options) . ' width=\"' . esc_attr($width) . '\" height=\"' . esc_attr($height) . '\" preload=\"' . $viewer_url . '\">\u003C\u002Fiframe>';\n+                                    $viewer_url = esc_url(\n+                                            add_query_arg(\n+                                                    [\n+                                                        'file' => $file,\n+                                                    ],\n+                                                    $attributes->get('viewer', plugins_url('assets\u002Fpdf.js\u002Fweb\u002Fviewer.html', $this->helper->get('plugin_file_path')))\n+                                            )\n+                                    );\n+                                    $attrs = [\n+                                        'onload=\"e2pdfViewer.iframeLoad(this)\"',\n+                                        'name=\"' . md5($this->helper->get('version')) . '\"',\n+                                        'style=\"' . esc_attr(implode(';', $style)) . '\"',\n+                                        'class=\"' . esc_attr(implode(' ', $classes)) . '\"',\n+                                        implode(' ', $app_options),\n+                                        'width=\"' . esc_attr($attributes->get('width', '100%')) . '\"',\n+                                        'height=\"' . esc_attr($attributes->get('height', '500')) . '\"',\n+                                    ];\n+\n+                                    if ($attributes->get('preload')) {\n+                                        $attrs[] = 'preload=\"' . $viewer_url . '\"';\n                                     } else {\n-                                        $response = '\u003Ciframe name=\"' . md5($this->helper->get('version')) . '\" onload=\"e2pdfViewer.iframeLoad(this)\" style=\"' . esc_attr(implode(';', $style)) . '\" class=\"' . esc_attr(implode(' ', $classes)) . '\" ' . implode(' ', $app_options) . ' width=\"' . esc_attr($width) . '\" height=\"' . esc_attr($height) . '\" src=\"' . $viewer_url . '\">\u003C\u002Fiframe>';\n+                                        $attrs[] = 'src=\"' . $viewer_url . '\"';\n                                     }\n+                                    $response = '\u003Ciframe ' . implode(' ', $attrs) . '>\u003C\u002Fiframe>';\n                                     break;\n                             }\n                         } elseif ($ext == 'jpg') {\n-                            switch ($output) {\n+                            switch ($attributes->get('output')) {\n                                 case 'url':\n                                     $response = esc_url($url);\n                                     break;\n@@ -2052,123 +1720,30 @@\n                                     break;\n                                 default:\n                                     $url = esc_url($url);\n-                                    if (!isset($atts['preload'])) {\n-                                        $preload = true;\n-                                    }\n-                                    if ($preload) {\n+                                    if ($attributes->get('preload', 'true')) {\n                                         $classes[] = 'e2pdf-preload';\n-                                        if (isset($atts['theme']) && $theme == 'dark') {\n+                                        if ($attributes->get('theme', 'dark') === 'dark') {\n                                             $style[] = 'background: url(\\'data:image\u002Fsvg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCIgdmlld0JveD0iMCAwIDI0IDI0Ij48ZyBzdHJva2U9IndoaXRlIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI5LjUiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIzIj48YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdHJva2UtZGFzaGFycmF5IiBjYWxjTW9kZT0ic3BsaW5lIiBkdXI9IjEuNXMiIGtleVNwbGluZXM9IjAuNDIsMCwwLjU4LDE7MC40MiwwLDAuNTgsMTswLjQyLDAsMC41OCwxIiBrZXlUaW1lcz0iMDswLjQ3NTswLjk1OzEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiB2YWx1ZXM9IjAgMTUwOzQyIDE1MDs0MiAxNTA7NDIgMTUwIi8+PGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ic3Ryb2tlLWRhc2hvZmZzZXQiIGNhbGNNb2RlPSJzcGxpbmUiIGR1cj0iMS41cyIga2V5U3BsaW5lcz0iMC40MiwwLDAuNTgsMTswLjQyLDAsMC41OCwxOzAuNDIsMCwwLjU4LDEiIGtleVRpbWVzPSIwOzAuNDc1OzAuOTU7MSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIHZhbHVlcz0iMDstMTY7LTU5Oy01OSIvPjwvY2lyY2xlPjxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgZHVyPSIycyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIHR5cGU9InJvdGF0ZSIgdmFsdWVzPSIwIDEyIDEyOzM2MCAxMiAxMiIvPjwvZz48L3N2Zz4=\\') no-repeat center center';\n                                         } else {\n                                             $style[] = 'background: url(\\'data:image\u002Fsvg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCIgdmlld0JveD0iMCAwIDI0IDI0Ij48ZyBzdHJva2U9ImJsYWNrIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI5LjUiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIzIj48YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdHJva2UtZGFzaGFycmF5IiBjYWxjTW9kZT0ic3BsaW5lIiBkdXI9IjEuNXMiIGtleVNwbGluZXM9IjAuNDIsMCwwLjU4LDE7MC40MiwwLDAuNTgsMTswLjQyLDAsMC41OCwxIiBrZXlUaW1lcz0iMDswLjQ3NTswLjk1OzEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiB2YWx1ZXM9IjAgMTUwOzQyIDE1MDs0MiAxNTA7NDIgMTUwIi8+PGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ic3Ryb2tlLWRhc2hvZmZzZXQiIGNhbGNNb2RlPSJzcGxpbmUiIGR1cj0iMS41cyIga2V5U3BsaW5lcz0iMC40MiwwLDAuNTgsMTswLjQyLDAsMC41OCwxOzAuNDIsMCwwLjU4LDEiIGtleVRpbWVzPSIwOzAuNDc1OzAuOTU7MSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIHZhbHVlcz0iMDstMTY7LTU5Oy01OSIvPjwvY2lyY2xlPjxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgZHVyPSIycyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIHR5cGU9InJvdGF0ZSIgdmFsdWVzPSIwIDEyIDEyOzM2MCAxMiAxMiIvPjwvZz48L3N2Zz4=\\') no-repeat center center';\n                                         }\n-                                        $response = '\u003Cimg onload=\"e2pdfViewer.imageLoad(this)\" style=\"' . esc_attr(implode(';', $style)) . '\" class=\"' . esc_attr(implode(' ', $classes)) . '\" width=\"' . esc_attr($width) . '\" preload=\"' . $url . '\" src=\"data:image\u002Fpng;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mM8VA8AAgkBQ6KtxDkAAAAASUVORK5CYII=\">';\n+                                    }\n+                                    $attrs = [\n+                                        'style=\"' . esc_attr(implode(';', $style)) . '\"',\n+                                        'class=\"' . esc_attr(implode(' ', $classes)) . '\"',\n+                                        'width=\"' . esc_attr($attributes->get('width', '100%')) . '\"',\n+                                    ];\n+                                    if ($attributes->get('preload', 'true')) {\n+                                        $attrs[] = 'onload=\"e2pdfViewer.imageLoad(this)\"';\n+                                        $attrs[] = 'preload=\"' . $url . '\"';\n+                                        $attrs[] = 'src=\"data:image\u002Fpng;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mM8VA8AAgkBQ6KtxDkAAAAASUVORK5CYII=\"';\n                                     } else {\n-                                        $response = '\u003Cimg style=\"' . esc_attr(implode(';', $style)) . '\" class=\"' . esc_attr(implode(' ', $classes)) . '\" width=\"' . esc_attr($width) . '\" src=\"' . $url . '\">';\n+                                        $attrs[] = 'src=\"' . $url . '\"';\n                                     }\n+                                    $response = '\u003Cimg ' . implode(' ', $attrs) . '>';\n                                     break;\n                             }\n                         }\n-                    } else {\n-                        if (!$entry->load_by_uid()) {\n-                            $entry->save();\n-                        }\n-\n-                        if ($entry->get('ID')) {\n-                            $ext = pathinfo($pdf, PATHINFO_EXTENSION);\n-                            if (!$name) {\n-                                $name = basename($pdf, '.' . $ext);\n-                            }\n-\n-                            $url_data = [\n-                                'page' => 'e2pdf-download',\n-                                'uid' => $entry->get('uid'),\n-                                'v' => $this->helper->get('version'),\n-                            ];\n-                            if ($ext == 'pdf') {\n-                                $url_data['saveName'] = $name;\n-                            }\n-                            $url_data = apply_filters('e2pdf_model_shortcode_url_data', $url_data, $atts);\n-                            $url_data = apply_filters('e2pdf_model_shortcode_e2pdf_viewer_url_data', $url_data, $atts);\n-\n-                            $url = esc_url_raw(\n-                                    $this->helper->get_frontend_pdf_url(\n-                                            $url_data, $site_url,\n-                                            [\n-                                                'e2pdf_model_shortcode_site_url',\n-                                                'e2pdf_model_shortcode_e2pdf_view_site_url',\n-                                            ]\n-                                    )\n-                            );\n-                            $url = apply_filters('e2pdf_model_shortcode_e2pdf_view_pdf_url', $url, $atts);\n-\n-                            if ($ext == 'pdf') {\n-                                \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode\n-                                $file = urlencode($url);\n-                                if (!empty($viewer_options)) {\n-                                    $file .= '#' . implode('&', $viewer_options);\n-                                }\n-                                switch ($output) {\n-                                    case 'url':\n-                                    case 'url_raw':\n-                                    case 'url_encode':\n-                                        $viewer_url = add_query_arg(\n-                                                [\n-                                                    'class' => implode(';', $classes),\n-                                                    'file' => $file,\n-                                                ],\n-                                                $viewer ? $viewer : plugins_url('assets\u002Fpdf.js\u002Fweb\u002Fviewer.html', $this->helper->get('plugin_file_path'))\n-                                        );\n-                                        if ($output == 'url') {\n-                                            $response = esc_url($viewer_url);\n-                                        } elseif ($output == 'url_raw') {\n-                                            $response = esc_url_raw($viewer_url);\n-                                        } elseif ($output == 'url_encode') {\n-                                            \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode\n-                                            $response = urlencode(esc_url_raw($viewer_url));\n-                                        }\n-                                        break;\n-                                    default:\n-                                        $viewer_url = esc_url(add_query_arg(['file' => $file], $viewer ? $viewer : plugins_url('assets\u002Fpdf.js\u002Fweb\u002Fviewer.html', $this->helper->get('plugin_file_path'))));\n-                                        if ($preload) {\n-                                            $response = '\u003Ciframe name=\"' . md5($this->helper->get('version')) . '\" onload=\"e2pdfViewer.iframeLoad(this)\" style=\"' . esc_attr(implode(';', $style)) . '\" class=\"' . esc_attr(implode(' ', $classes)) . '\" ' . implode(' ', $app_options) . ' width=\"' . esc_attr($width) . '\" height=\"' . esc_attr($height) . '\" preload=\"' . $viewer_url . '\">\u003C\u002Fiframe>';\n-                                        } else {\n-                                            $response = '\u003Ciframe name=\"' . md5($this->helper->get('version')) . '\" onload=\"e2pdfViewer.iframeLoad(this)\" style=\"' . esc_attr(implode(';', $style)) . '\" class=\"' . esc_attr(implode(' ', $classes)) . '\" ' . implode(' ', $app_options) . ' width=\"' . esc_attr($width) . '\" height=\"' . esc_attr($height) . '\" src=\"' . $viewer_url . '\">\u003C\u002Fiframe>';\n-                                        }\n-                                        break;\n-                                }\n-                            } elseif ($ext == 'jpg') {\n-                                switch ($output) {\n-                                    case 'url':\n-                                        $response = esc_url($url);\n-                                        break;\n-                                    case 'url_raw':\n-                                        $response = esc_url_raw($url);\n-                                        break;\n-                                    case 'url_encode':\n-                                        \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode\n-                                        $response = urlencode(esc_url_raw($url));\n-                                        break;\n-                                    default:\n-                                        $url = esc_url($url);\n-                                        if (!isset($atts['preload'])) {\n-                                            $preload = true;\n-                                        }\n-                                        if ($preload) {\n-                                            $classes[] = 'e2pdf-preload';\n-                                            if (isset($atts['theme']) && $theme == 'dark') {\n-                                                $style[] = 'background: url(\\'data:image\u002Fsvg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCIgdmlld0JveD0iMCAwIDI0IDI0Ij48ZyBzdHJva2U9IndoaXRlIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI5LjUiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIzIj48YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdHJva2UtZGFzaGFycmF5IiBjYWxjTW9kZT0ic3BsaW5lIiBkdXI9IjEuNXMiIGtleVNwbGluZXM9IjAuNDIsMCwwLjU4LDE7MC40MiwwLDAuNTgsMTswLjQyLDAsMC41OCwxIiBrZXlUaW1lcz0iMDswLjQ3NTswLjk1OzEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiB2YWx1ZXM9IjAgMTUwOzQyIDE1MDs0MiAxNTA7NDIgMTUwIi8+PGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ic3Ryb2tlLWRhc2hvZmZzZXQiIGNhbGNNb2RlPSJzcGxpbmUiIGR1cj0iMS41cyIga2V5U3BsaW5lcz0iMC40MiwwLDAuNTgsMTswLjQyLDAsMC41OCwxOzAuNDIsMCwwLjU4LDEiIGtleVRpbWVzPSIwOzAuNDc1OzAuOTU7MSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIHZhbHVlcz0iMDstMTY7LTU5Oy01OSIvPjwvY2lyY2xlPjxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgZHVyPSIycyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIHR5cGU9InJvdGF0ZSIgdmFsdWVzPSIwIDEyIDEyOzM2MCAxMiAxMiIvPjwvZz48L3N2Zz4=\\') no-repeat center center';\n-                                            } else {\n-                                                $style[] = 'background: url(\\'data:image\u002Fsvg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCIgdmlld0JveD0iMCAwIDI0IDI0Ij48ZyBzdHJva2U9ImJsYWNrIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI5LjUiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIzIj48YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdHJva2UtZGFzaGFycmF5IiBjYWxjTW9kZT0ic3BsaW5lIiBkdXI9IjEuNXMiIGtleVNwbGluZXM9IjAuNDIsMCwwLjU4LDE7MC40MiwwLDAuNTgsMTswLjQyLDAsMC41OCwxIiBrZXlUaW1lcz0iMDswLjQ3NTswLjk1OzEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiB2YWx1ZXM9IjAgMTUwOzQyIDE1MDs0MiAxNTA7NDIgMTUwIi8+PGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ic3Ryb2tlLWRhc2hvZmZzZXQiIGNhbGNNb2RlPSJzcGxpbmUiIGR1cj0iMS41cyIga2V5U3BsaW5lcz0iMC40MiwwLDAuNTgsMTswLjQyLDAsMC41OCwxOzAuNDIsMCwwLjU4LDEiIGtleVRpbWVzPSIwOzAuNDc1OzAuOTU7MSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIHZhbHVlcz0iMDstMTY7LTU5Oy01OSIvPjwvY2lyY2xlPjxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgZHVyPSIycyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIHR5cGU9InJvdGF0ZSIgdmFsdWVzPSIwIDEyIDEyOzM2MCAxMiAxMiIvPjwvZz48L3N2Zz4=\\') no-repeat center center';\n-                                            }\n-                                            $response = '\u003Cimg onload=\"e2pdfViewer.imageLoad(this)\" style=\"' . esc_attr(implode(';', $style)) . '\" class=\"' . esc_attr(implode(' ', $classes)) . '\" width=\"' . esc_attr($width) . '\" preload=\"' . $url . '\" src=\"data:image\u002Fpng;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mM8VA8AAgkBQ6KtxDkAAAAASUVORK5CYII=\">';\n-                                        } else {\n-                                            $response = '\u003Cimg style=\"' . esc_attr(implode(';', $style)) . '\" class=\"' . esc_attr(implode(' ', $classes)) . '\" width=\"' . esc_attr($width) . '\" src=\"' . $url . '\">';\n-                                        }\n-                                        break;\n-                                }\n-                            }\n-                        }\n                     }\n                 }\n             }\n@@ -2176,263 +1751,194 @@\n         }\n \n         \u002F\u002F phpcs:disable WordPress.Security.NonceVerification.Recommended\n-        if (isset($_GET['e2pdf-hash']) && !$dataset) {\n+        if (isset($_GET['e2pdf-hash']) && !$attributes->get('dataset')) {\n             $hash_id = sanitize_text_field(wp_unslash($_GET['e2pdf-hash']));\n-            $dataset = get_transient('e2pdf_hash_' . $hash_id);\n-            if ($dataset && apply_filters('e2pdf_hash_clear', true, 'shortcode', $atts) && has_action('shutdown', [$this, 'action_e2pdf_hash_clear']) === false) {\n+            $attributes->set('dataset', get_transient('e2pdf_hash_' . $hash_id));\n+            if ($attributes->get('dataset') && apply_filters('e2pdf_hash_clear', true, 'shortcode', $atts) && has_action('shutdown', [$this, 'action_e2pdf_hash_clear']) === false) {\n                 add_action('shutdown', [$this, 'action_e2pdf_hash_clear']);\n             }\n         }\n         \u002F\u002F phpcs:enable\n \n-        if (!$template_id || (!$dataset && !$dataset2)) {\n+        if (!$attributes->get('id') || (!$attributes->get('dataset') && !$attributes->get('dataset2'))) {\n             return $response;\n         }\n \n         $template = new Model_E2pdf_Template();\n-        if ($template->load($template_id, false)) {\n+        if (!$template->load($attributes->get('id'), false)) {\n+            return $response;\n+        }\n \n-            $entry = new Model_E2pdf_Entry();\n+        $entry = new Model_E2pdf_Entry();\n \n-            $entry->set_data('template_id', $template_id);\n-            $template->extension()->set('template_id', $template_id);\n-            if ($dataset) {\n-                $entry->set_data('dataset', $dataset);\n-                $template->extension()->set('dataset', $dataset);\n-            }\n-            if ($dataset2) {\n-                $entry->set_data('dataset2', $dataset2);\n-                $template->extension()->set('dataset2', $dataset2);\n-            }\n-            if ($wc_order_id) {\n-                $entry->set_data('wc_order_id', $wc_order_id);\n-                $template->extension()->set('wc_order_id', $wc_order_id);\n-            }\n-            if ($wc_product_item_id) {\n-                $entry->set_data('wc_product_item_id', $wc_product_item_id);\n-                $template->extension()->set('wc_product_item_id', $wc_product_item_id);\n-            }\n-            if ($template->get('extension') == 'wordpress' && $template->get('item') == '-3') { \u002F\u002F phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedIf, WordPress.WP.CapitalPDangit.Misspelled\n-            } else {\n-                if (array_key_exists('user_id', $atts)) {\n-                    $user_id = (int) $atts['user_id'];\n-                    $entry->set_data('user_id', $user_id);\n-                    $template->extension()->set('user_id', $user_id);\n-                } else {\n-                    $user_id = get_current_user_id();\n-                    $entry->set_data('user_id', $user_id);\n-                    $template->extension()->set('user_id', $user_id);\n-                }\n-            }\n-            if (!empty($args)) {\n-                $entry->set_data('args', $args);\n-                $template->extension()->set('args', $args);\n-            }\n-            if ($template->extension()->get_storing_engine() !== false) {\n-                $entry->set_data('storing_engine', $template->extension()->get_storing_engine());\n-                $template->extension()->set('storing_engine', $template->extension()->get_storing_engine());\n-            }\n+        $template->extension()->patch('template_id', $attributes->get('id'), $entry);\n+        $template->extension()->patch('dataset', $attributes->get('dataset'), $entry);\n+        $template->extension()->patch('dataset2', $attributes->get('dataset2'), $entry);\n+        $template->extension()->patch('wc_order_id', $attributes->get('wc_order_id'), $entry);\n+        $template->extension()->patch('wc_product_item_id', $attributes->get('wc_product_item_id'), $entry);\n+        \u002F\u002F phpcs:ignore WordPress.WP.CapitalPDangit.Misspelled\n+        if (!($template->get('extension') === 'wordpress' && $template->get('item') === '-3')) {\n+            $template->extension()->patch('user_id', $attributes->get('user_id'), $entry);\n+        }\n+        $template->extension()->patch('args', $attributes->get('arguments'), $entry);\n+        $template->extension()->patch('storing_engine', $template->extension()->get_storing_engine(), $entry);\n+\n+        $options = apply_filters('e2pdf_model_shortcode_extension_options', [], $template);\n+        $options = apply_filters('e2pdf_model_shortcode_e2pdf_view_extension_options', $options, $template);\n+        foreach ($options as $option_key => $option_value) {\n+            $template->extension()->set($option_key, $option_value);\n+        }\n+\n+        if ($template->extension()->verify() && $this->process_shortcode('e2pdf_view', $template, $attributes)) {\n+\n+            $template->patch('inline', $attributes->get('inline'), $entry, $attributes->get('filter'));\n+            $template->patch('flatten', $attributes->get('flatten'), $entry, $attributes->get('filter'));\n+            $template->patch('format', $attributes->get('format'), $entry, $attributes->get('filter'));\n+            $template->patch('password', $attributes->get('password'), $entry, $attributes->get('filter'));\n+            $template->patch('dpdf', $attributes->get('dpdf'), $entry, $attributes->get('filter'));\n+            $template->patch('name', $attributes->get('name'), $entry, $attributes->get('filter'));\n+            $template->patch('meta_title', $attributes->get('meta_title'), $entry, $attributes->get('filter'));\n+            $template->patch('meta_subject', $attributes->get('meta_subject'), $entry, $attributes->get('filter'));\n+            $template->patch('meta_author', $attributes->get('meta_author'), $entry, $attributes->get('filter'));\n+            $template->patch('meta_keywords', $attributes->get('meta_keywords'), $entry, $attributes->get('filter'));\n \n-            $options = [];\n-            $options = apply_filters('e2pdf_model_shortcode_extension_options', $options, $template);\n-            $options = apply_filters('e2pdf_model_shortcode_e2pdf_view_extension_options', $options, $template);\n-            foreach ($options as $option_key => $option_value) {\n-                $template->extension()->set($option_key, $option_value);\n+            if (!$entry->load_by_uid()) {\n+                $entry->save();\n             }\n \n-            if ($template->extension()->verify() && $this->process_shortcode($template, 'e2pdf_view')) {\n+            if ($entry->get('ID')) {\n+                if ($template->get('format') == 'jpg') {\n \n-                if (array_key_exists('inline', $atts)) {\n-                    $inline = $atts['inline'] == 'true' ? '1' : '0';\n-                    $entry->set_data('inline', $inline);\n-                }\n-                if (array_key_exists('flatten', $atts)) {\n-                    $flatten = strval((int) $atts['flatten']);\n-                    $entry->set_data('flatten', $flatten);\n-                }\n-                if (array_key_exists('format', $atts)) {\n-                    $format = $atts['format'];\n-                    if ($template->set('format', $format)) {\n-                        $entry->set_data('format', $format);\n-                    }\n-                }\n-                if (array_key_exists('password', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $password = $template->extension()->render($atts['password']);\n-                    } else {\n-                        $password = $template->extension()->convert_shortcodes($atts['password'], true);\n-                    }\n-                    $entry->set_data('password', $password);\n-                }\n-                if (array_key_exists('dpdf', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $dpdf = $template->extension()->render($atts['dpdf']);\n-                    } else {\n-                        $dpdf = $template->extension()->convert_shortcodes($atts['dpdf'], true);\n-                    }\n-                    $entry->set_data('dpdf', $dpdf);\n-                }\n-                if (array_key_exists('meta_title', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $meta_title = $template->extension()->render($atts['meta_title']);\n-                    } else {\n-                        $meta_title = $template->extension()->convert_shortcodes($atts['meta_title'], true);\n-                    }\n-                    $entry->set_data('meta_title', $meta_title);\n-                }\n-                if (array_key_exists('meta_subject', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $meta_subject = $template->extension()->render($atts['meta_subject']);\n-                    } else {\n-                        $meta_subject = $template->extension()->convert_shortcodes($atts['meta_subject'], true);\n-                    }\n-                    $entry->set_data('meta_subject', $meta_subject);\n-                }\n-                if (array_key_exists('meta_author', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $meta_author = $template->extension()->render($atts['meta_author']);\n-                    } else {\n-                        $meta_author = $template->extension()->convert_shortcodes($atts['meta_author'], true);\n-                    }\n-                    $entry->set_data('meta_author', $meta_author);\n-                }\n-                if (array_key_exists('meta_keywords', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $meta_keywords = $template->extension()->render($atts['meta_keywords']);\n-                    } else {\n-                        $meta_keywords = $template->extension()->convert_shortcodes($atts['meta_keywords'], true);\n-                    }\n-                    $entry->set_data('meta_keywords', $meta_keywords);\n-                }\n-                if (array_key_exists('name', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $name = $template->extension()->render($atts['name']);\n-                    } else {\n-                        $name = $template->extension()->convert_shortcodes($atts['name'], true);\n+                    $url_data = [\n+                        'page' => 'e2pdf-download',\n+                        'uid' => $entry->get('uid'),\n+                        'v' => $this->helper->get('version'),\n+                    ];\n+                    $url_data = apply_filters('e2pdf_model_shortcode_url_data', $url_data, $atts);\n+                    $url_data = apply_filters('e2pdf_model_shortcode_e2pdf_viewer_url_data', $url_data, $atts);\n+\n+                    $url = esc_url_raw(\n+                            $this->helper->get_frontend_pdf_url(\n+                                    $url_data, $attributes->get('site_url'),\n+                                    [\n+                                        'e2pdf_model_shortcode_site_url',\n+                                        'e2pdf_model_shortcode_e2pdf_view_site_url',\n+                                    ]\n+                            )\n+                    );\n+                    $url = apply_filters('e2pdf_model_shortcode_e2pdf_view_pdf_url', $url, $atts);\n+                    switch ($attributes->get('output')) {\n+                        case 'url':\n+                            $response = esc_url($url);\n+                            break;\n+                        case 'url_raw':\n+                            $response = esc_url_raw($url);\n+                            break;\n+                        case 'url_encode':\n+                            \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode\n+                            $response = urlencode(esc_url_raw($url));\n+                            break;\n+                        default:\n+                            $url = esc_url($url);\n+                            if ($attributes->get('preload', 'true')) {\n+                                $classes[] = 'e2pdf-preload';\n+                                if ($attributes->get('theme', 'dark') === 'dark') {\n+                                    $style[] = 'background: url(\\'data:image\u002Fsvg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCIgdmlld0JveD0iMCAwIDI0IDI0Ij48ZyBzdHJva2U9IndoaXRlIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI5LjUiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIzIj48YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdHJva2UtZGFzaGFycmF5IiBjYWxjTW9kZT0ic3BsaW5lIiBkdXI9IjEuNXMiIGtleVNwbGluZXM9IjAuNDIsMCwwLjU4LDE7MC40MiwwLDAuNTgsMTswLjQyLDAsMC41OCwxIiBrZXlUaW1lcz0iMDswLjQ3NTswLjk1OzEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiB2YWx1ZXM9IjAgMTUwOzQyIDE1MDs0MiAxNTA7NDIgMTUwIi8+PGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ic3Ryb2tlLWRhc2hvZmZzZXQiIGNhbGNNb2RlPSJzcGxpbmUiIGR1cj0iMS41cyIga2V5U3BsaW5lcz0iMC40MiwwLDAuNTgsMTswLjQyLDAsMC41OCwxOzAuNDIsMCwwLjU4LDEiIGtleVRpbWVzPSIwOzAuNDc1OzAuOTU7MSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIHZhbHVlcz0iMDstMTY7LTU5Oy01OSIvPjwvY2lyY2xlPjxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgZHVyPSIycyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIHR5cGU9InJvdGF0ZSIgdmFsdWVzPSIwIDEyIDEyOzM2MCAxMiAxMiIvPjwvZz48L3N2Zz4=\\') no-repeat center center';\n+                                } else {\n+                                    $style[] = 'background: url(\\'data:image\u002Fsvg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCIgdmlld0JveD0iMCAwIDI0IDI0Ij48ZyBzdHJva2U9ImJsYWNrIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI5LjUiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIzIj48YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdHJva2UtZGFzaGFycmF5IiBjYWxjTW9kZT0ic3BsaW5lIiBkdXI9IjEuNXMiIGtleVNwbGluZXM9IjAuNDIsMCwwLjU4LDE7MC40MiwwLDAuNTgsMTswLjQyLDAsMC41OCwxIiBrZXlUaW1lcz0iMDswLjQ3NTswLjk1OzEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiB2YWx1ZXM9IjAgMTUwOzQyIDE1MDs0MiAxNTA7NDIgMTUwIi8+PGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ic3Ryb2tlLWRhc2hvZmZzZXQiIGNhbGNNb2RlPSJzcGxpbmUiIGR1cj0iMS41cyIga2V5U3BsaW5lcz0iMC40MiwwLDAuNTgsMTswLjQyLDAsMC41OCwxOzAuNDIsMCwwLjU4LDEiIGtleVRpbWVzPSIwOzAuNDc1OzAuOTU7MSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIHZhbHVlcz0iMDstMTY7LTU5Oy01OSIvPjwvY2lyY2xlPjxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgZHVyPSIycyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIHR5cGU9InJvdGF0ZSIgdmFsdWVzPSIwIDEyIDEyOzM2MCAxMiAxMiIvPjwvZz48L3N2Zz4=\\') no-repeat center center';\n+                                }\n+                            }\n+                            $attrs = [\n+                                'style=\"' . esc_attr(implode(';', $style)) . '\"',\n+                                'class=\"' . esc_attr(implode(' ', $classes)) . '\"',\n+                                'width=\"' . esc_attr($attributes->get('width', '100%')) . '\"',\n+                            ];\n+                            if ($attributes->get('preload', 'true')) {\n+                                $attrs[] = 'onload=\"e2pdfViewer.imageLoad(this)\"';\n+                                $attrs[] = 'preload=\"' . $url . '\"';\n+                                $attrs[] = 'src=\"data:image\u002Fpng;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mM8VA8AAgkBQ6KtxDkAAAAASUVORK5CYII=\"';\n+                            } else {\n+                                $attrs[] = 'src=\"' . $url . '\"';\n+                            }\n+                            $response = '\u003Cimg ' . implode(' ', $attrs) . '>';\n+                            break;\n                     }\n-                    $entry->set_data('name', $name);\n-                    $template->set('name', $name);\n                 } else {\n-                    $template->set('name', $template->extension()->render($template->get('name')));\n-                }\n-\n-                if (!$entry->load_by_uid()) {\n-                    $entry->save();\n-                }\n-\n-                if ($entry->get('ID')) {\n-                    if ($template->get('format') == 'jpg') {\n-\n-                        $url_data = [\n-                            'page' => 'e2pdf-download',\n-                            'uid' => $entry->get('uid'),\n-                            'v' => $this->helper->get('version'),\n-                        ];\n-                        $url_data = apply_filters('e2pdf_model_shortcode_url_data', $url_data, $atts);\n-                        $url_data = apply_filters('e2pdf_model_shortcode_e2pdf_viewer_url_data', $url_data, $atts);\n+                    $url_data = [\n+                        'page' => 'e2pdf-download',\n+                        'uid' => $entry->get('uid'),\n+                        'v' => $this->helper->get('version'),\n+                        'saveName' => $template->get('name') . '.pdf',\n+                    ];\n+                    $url_data = apply_filters('e2pdf_model_shortcode_url_data', $url_data, $atts);\n+                    $url_data = apply_filters('e2pdf_model_shortcode_e2pdf_viewer_url_data', $url_data, $atts);\n \n-                        $url = esc_url_raw(\n-                                $this->helper->get_frontend_pdf_url(\n-                                        $url_data, $site_url,\n-                                        [\n-                                            'e2pdf_model_shortcode_site_url',\n-                                            'e2pdf_model_shortcode_e2pdf_view_site_url',\n-                                        ]\n-                                )\n-                        );\n-                        $url = apply_filters('e2pdf_model_shortcode_e2pdf_view_pdf_url', $url, $atts);\n-                        switch ($output) {\n-                            case 'url':\n-                                $response = esc_url($url);\n-                                break;\n-                            case 'url_raw':\n-                                $response = esc_url_raw($url);\n-                                break;\n-                            case 'url_encode':\n+                    $url = esc_url_raw(\n+                            $this->helper->get_frontend_pdf_url(\n+                                    $url_data, $attributes->get('site_url'),\n+                                    [\n+                                        'e2pdf_model_shortcode_site_url',\n+                                        'e2pdf_model_shortcode_e2pdf_view_site_url',\n+                                    ]\n+                            )\n+                    );\n+                    $url = apply_filters('e2pdf_model_shortcode_e2pdf_view_pdf_url', $url, $atts);\n+                    \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode\n+                    $file = urlencode($url);\n+                    if (!empty($viewer_options)) {\n+                        $file .= '#' . implode('&', $viewer_options);\n+                    }\n+                    switch ($attributes->get('output')) {\n+                        case 'url':\n+                        case 'url_raw':\n+                        case 'url_encode':\n+                            $viewer_url = add_query_arg(\n+                                    [\n+                                        'class' => implode(';', $classes),\n+                                        'file' => $file,\n+                                    ],\n+                                    $attributes->get('viewer', plugins_url('assets\u002Fpdf.js\u002Fweb\u002Fviewer.html', $this->helper->get('plugin_file_path')))\n+                            );\n+                            if ($attributes->get('output') === 'url') {\n+                                $response = esc_url($viewer_url);\n+                            } elseif ($attributes->get('output') === 'url_raw') {\n+                                $response = esc_url_raw($viewer_url);\n+                            } elseif ($attributes->get('output') === 'url_encode') {\n                                 \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode\n-                                $response = urlencode(esc_url_raw($url));\n-                                break;\n-                            default:\n-                                $url = esc_url($url);\n-                                if (!isset($atts['preload'])) {\n-                                    $preload = true;\n-                                }\n-                                if ($preload) {\n-                                    $classes[] = 'e2pdf-preload';\n-                                    if (isset($atts['theme']) && $theme == 'dark') {\n-                                        $style[] = 'background: url(\\'data:image\u002Fsvg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCIgdmlld0JveD0iMCAwIDI0IDI0Ij48ZyBzdHJva2U9IndoaXRlIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI5LjUiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIzIj48YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdHJva2UtZGFzaGFycmF5IiBjYWxjTW9kZT0ic3BsaW5lIiBkdXI9IjEuNXMiIGtleVNwbGluZXM9IjAuNDIsMCwwLjU4LDE7MC40MiwwLDAuNTgsMTswLjQyLDAsMC41OCwxIiBrZXlUaW1lcz0iMDswLjQ3NTswLjk1OzEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiB2YWx1ZXM9IjAgMTUwOzQyIDE1MDs0MiAxNTA7NDIgMTUwIi8+PGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ic3Ryb2tlLWRhc2hvZmZzZXQiIGNhbGNNb2RlPSJzcGxpbmUiIGR1cj0iMS41cyIga2V5U3BsaW5lcz0iMC40MiwwLDAuNTgsMTswLjQyLDAsMC41OCwxOzAuNDIsMCwwLjU4LDEiIGtleVRpbWVzPSIwOzAuNDc1OzAuOTU7MSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIHZhbHVlcz0iMDstMTY7LTU5Oy01OSIvPjwvY2lyY2xlPjxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgZHVyPSIycyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIHR5cGU9InJvdGF0ZSIgdmFsdWVzPSIwIDEyIDEyOzM2MCAxMiAxMiIvPjwvZz48L3N2Zz4=\\') no-repeat center center';\n-                                    } else {\n-                                        $style[] = 'background: url(\\'data:image\u002Fsvg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCIgdmlld0JveD0iMCAwIDI0IDI0Ij48ZyBzdHJva2U9ImJsYWNrIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI5LjUiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIzIj48YW5pbWF0ZSBhdHRyaWJ1dGVOYW1lPSJzdHJva2UtZGFzaGFycmF5IiBjYWxjTW9kZT0ic3BsaW5lIiBkdXI9IjEuNXMiIGtleVNwbGluZXM9IjAuNDIsMCwwLjU4LDE7MC40MiwwLDAuNTgsMTswLjQyLDAsMC41OCwxIiBrZXlUaW1lcz0iMDswLjQ3NTswLjk1OzEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiB2YWx1ZXM9IjAgMTUwOzQyIDE1MDs0MiAxNTA7NDIgMTUwIi8+PGFuaW1hdGUgYXR0cmlidXRlTmFtZT0ic3Ryb2tlLWRhc2hvZmZzZXQiIGNhbGNNb2RlPSJzcGxpbmUiIGR1cj0iMS41cyIga2V5U3BsaW5lcz0iMC40MiwwLDAuNTgsMTswLjQyLDAsMC41OCwxOzAuNDIsMCwwLjU4LDEiIGtleVRpbWVzPSIwOzAuNDc1OzAuOTU7MSIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIHZhbHVlcz0iMDstMTY7LTU5Oy01OSIvPjwvY2lyY2xlPjxhbmltYXRlVHJhbnNmb3JtIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSIgZHVyPSIycyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIHR5cGU9InJvdGF0ZSIgdmFsdWVzPSIwIDEyIDEyOzM2MCAxMiAxMiIvPjwvZz48L3N2Zz4=\\') no-repeat center center';\n-                                    }\n-                                    $response = '\u003Cimg onload=\"e2pdfViewer.imageLoad(this)\" style=\"' . esc_attr(implode(';', $style)) . '\" class=\"' . esc_attr(implode(' ', $classes)) . '\" width=\"' . esc_attr($width) . '\" preload=\"' . $url . '\" src=\"data:image\u002Fpng;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mM8VA8AAgkBQ6KtxDkAAAAASUVORK5CYII=\">';\n-                                } else {\n-                                    $response = '\u003Cimg style=\"' . esc_attr(implode(';', $style)) . '\" class=\"' . esc_attr(implode(' ', $classes)) . '\" width=\"' . esc_attr($width) . '\" src=\"' . $url . '\">';\n-                                }\n-                                break;\n-                        }\n-                    } else {\n-                        if ($template->get('name')) {\n-                            $name = $template->get('name');\n-                        } else {\n-                            $name = $template->extension()->render($template->get_name());\n-                        }\n-                        $url_data = [\n-                            'page' => 'e2pdf-download',\n-                            'uid' => $entry->get('uid'),\n-                            'v' => $this->helper->get('version'),\n-                            'saveName' => $name . '.pdf',\n-                        ];\n-                        $url_data = apply_filters('e2pdf_model_shortcode_url_data', $url_data, $atts);\n-                        $url_data = apply_filters('e2pdf_model_shortcode_e2pdf_viewer_url_data', $url_data, $atts);\n+                                $response = urlencode(esc_url_raw($viewer_url));\n+                            }\n+                            break;\n+                        default:\n+                            $viewer_url = esc_url(\n+                                    add_query_arg(\n+                                            [\n+                                                'file' => $file,\n+                                            ],\n+                                            $attributes->get('viewer', plugins_url('assets\u002Fpdf.js\u002Fweb\u002Fviewer.html', $this->helper->get('plugin_file_path')))\n+                                    )\n+                            );\n+                            $attrs = [\n+                                'onload=\"e2pdfViewer.iframeLoad(this)\"',\n+                                'name=\"' . md5($this->helper->get('version')) . '\"',\n+                                'style=\"' . esc_attr(implode(';', $style)) . '\"',\n+                                'class=\"' . esc_attr(implode(' ', $classes)) . '\"',\n+                                implode(' ', $app_options),\n+                                'width=\"' . esc_attr($attributes->get('width', '100%')) . '\"',\n+                                'height=\"' . esc_attr($attributes->get('height', '500')) . '\"',\n+                            ];\n \n-                        $url = esc_url_raw(\n-                                $this->helper->get_frontend_pdf_url(\n-                                        $url_data, $site_url,\n-                                        [\n-                                            'e2pdf_model_shortcode_site_url',\n-                                            'e2pdf_model_shortcode_e2pdf_view_site_url',\n-                                        ]\n-                                )\n-                        );\n-                        $url = apply_filters('e2pdf_model_shortcode_e2pdf_view_pdf_url', $url, $atts);\n-                        \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode\n-                        $file = urlencode($url);\n-                        if (!empty($viewer_options)) {\n-                            $file .= '#' . implode('&', $viewer_options);\n-                        }\n-                        switch ($output) {\n-                            case 'url':\n-                            case 'url_raw':\n-                            case 'url_encode':\n-                                $viewer_url = add_query_arg(\n-                                        [\n-                                            'class' => implode(';', $classes),\n-                                            'file' => $file,\n-                                        ],\n-                                        $viewer ? $viewer : plugins_url('assets\u002Fpdf.js\u002Fweb\u002Fviewer.html', $this->helper->get('plugin_file_path'))\n-                                );\n-                                if ($output == 'url') {\n-                                    $response = esc_url($viewer_url);\n-                                } elseif ($output == 'url_raw') {\n-                                    $response = esc_url_raw($viewer_url);\n-                                } elseif ($output == 'url_encode') {\n-                                    \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode\n-                                    $response = urlencode(esc_url_raw($viewer_url));\n-                                }\n-                                break;\n-                            default:\n-                                $viewer_url = esc_url(add_query_arg(['file' => $file], $viewer ? $viewer : plugins_url('assets\u002Fpdf.js\u002Fweb\u002Fviewer.html', $this->helper->get('plugin_file_path'))));\n-                                if ($preload) {\n-                                    $response = '\u003Ciframe name=\"' . md5($this->helper->get('version')) . '\" onload=\"e2pdfViewer.iframeLoad(this)\" style=\"' . esc_attr(implode(';', $style)) . '\" class=\"' . esc_attr(implode(' ', $classes)) . '\" ' . implode(' ', $app_options) . ' width=\"' . esc_attr($width) . '\" height=\"' . esc_attr($height) . '\" preload=\"' . $viewer_url . '\">\u003C\u002Fiframe>';\n-                                } else {\n-                                    $response = '\u003Ciframe name=\"' . md5($this->helper->get('version')) . '\" onload=\"e2pdfViewer.iframeLoad(this)\" style=\"' . esc_attr(implode(';', $style)) . '\" class=\"' . esc_attr(implode(' ', $classes)) . '\" ' . implode(' ', $app_options) . ' width=\"' . esc_attr($width) . '\" height=\"' . esc_attr($height) . '\" src=\"' . $viewer_url . '\">\u003C\u002Fiframe>';\n-                                }\n-                                break;\n-                        }\n+                            if ($attributes->get('preload')) {\n+                                $attrs[] = 'preload=\"' . $viewer_url . '\"';\n+                            } else {\n+                                $attrs[] = 'src=\"' . $viewer_url . '\"';\n+                            }\n+                            $response = '\u003Ciframe ' . implode(' ', $attrs) . '>\u003C\u002Fiframe>';\n+                            break;\n                     }\n                 }\n             }\n         }\n+\n         return $response;\n     }\n \n@@ -2440,286 +1946,159 @@\n     public function e2pdf_adobesign($atts = []) {\n \n         $atts = apply_filters('e2pdf_model_shortcode_e2pdf_adobesign_atts', $atts);\n-        $template_id = isset($atts['id']) ? (int) $atts['id'] : false;\n-        $dataset = isset($atts['dataset']) ? $atts['dataset'] : false;\n-        $dataset2 = isset($atts['dataset2']) ? $atts['dataset2'] : false;\n-        $wc_order_id = isset($atts['wc_order_id']) ? $atts['wc_order_id'] : false;\n-        $wc_product_item_id = isset($atts['wc_product_item_id']) ? $atts['wc_product_item_id'] : false;\n-        $apply = isset($atts['apply']) ? true : false;\n-        $args = [];\n-        foreach ($atts as $att_key => $att_value) {\n-            if (substr($att_key, 0, 3) === 'arg') {\n-                $args[$att_key] = $att_value;\n-            }\n-        }\n+        $attributes = (new Helper_E2pdf_Atts())->load($atts);\n \n         $response = '';\n \n-        if (!$apply || !$template_id || (!$dataset && !$dataset2)) {\n+        if (!$attributes->get('apply') || !$attributes->get('id') || (!$attributes->get('dataset') && !$attributes->get('dataset2'))) {\n             return $response;\n         }\n \n         $template = new Model_E2pdf_Template();\n-        if ($template->load($template_id)) {\n-\n-            $entry = new Model_E2pdf_Entry();\n-            $entry->set_data('template_id', $template_id);\n-            $template->extension()->set('template_id', $template_id);\n-            if ($dataset) {\n-                $entry->set_data('dataset', $dataset);\n-                $template->extension()->set('dataset', $dataset);\n-            }\n-            if ($dataset2) {\n-                $entry->set_data('dataset2', $dataset2);\n-                $template->extension()->set('dataset2', $dataset2);\n-            }\n-            if ($wc_order_id) {\n-                $entry->set_data('wc_order_id', $wc_order_id);\n-                $template->extension()->set('wc_order_id', $wc_order_id);\n-            }\n-            if ($wc_product_item_id) {\n-                $entry->set_data('wc_product_item_id', $wc_product_item_id);\n-                $template->extension()->set('wc_product_item_id', $wc_product_item_id);\n-            }\n-            if ($template->get('extension') == 'wordpress' && $template->get('item') == '-3') { \u002F\u002F phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedIf, WordPress.WP.CapitalPDangit.Misspelled\n-            } else {\n-                if (array_key_exists('user_id', $atts)) {\n-                    $user_id = (int) $atts['user_id'];\n-                    $entry->set_data('user_id', $user_id);\n-                    $template->extension()->set('user_id', $user_id);\n-                } else {\n-                    $user_id = get_current_user_id();\n-                    $entry->set_data('user_id', $user_id);\n-                    $template->extension()->set('user_id', $user_id);\n-                }\n-            }\n-            if (!empty($args)) {\n-                $entry->set_data('args', $args);\n-                $template->extension()->set('args', $args);\n-            }\n-            if ($template->extension()->get_storing_engine() !== false) {\n-                $entry->set_data('storing_engine', $template->extension()->get_storing_engine());\n-                $template->extension()->set('storing_engine', $template->extension()->get_storing_engine());\n-            }\n-            $options = [];\n-            $options = apply_filters('e2pdf_model_shortcode_extension_options', $options, $template);\n-            $options = apply_filters('e2pdf_model_shortcode_e2pdf_adobesign_extension_options', $options, $template);\n-            foreach ($options as $option_key => $option_value) {\n-                $template->extension()->set($option_key, $option_value);\n-            }\n-\n-            if ($template->extension()->verify() && $this->process_shortcode($template, 'e2pdf_adobesign')) {\n-\n-                if (array_key_exists('inline', $atts)) {\n-                    $inline = $atts['inline'] == 'true' ? '1' : '0';\n-                    $entry->set_data('inline', $inline);\n-                }\n-                if (array_key_exists('flatten', $atts)) {\n-                    $flatten = strval((int) $atts['flatten']);\n-                    $entry->set_data('flatten', $flatten);\n-                    $template->set('flatten', $flatten);\n-                }\n-                if (array_key_exists('format', $atts)) {\n-                    $format = $atts['format'];\n-                    if ($template->set('format', $format)) {\n-                        $entry->set_data('format', $format);\n-                    }\n-                }\n-                if (array_key_exists('password', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $password = $template->extension()->render($atts['password']);\n-                    } else {\n-                        $password = $template->extension()->convert_shortcodes($atts['password'], true);\n-                    }\n-                    $entry->set_data('password', $password);\n-                    $template->set('password', $password);\n-                } else {\n-                    $template->set('password', $template->extension()->render($template->get('password')));\n-                }\n-                if (array_key_exists('dpdf', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $dpdf = $template->extension()->render($atts['dpdf']);\n-                    } else {\n-                        $dpdf = $template->extension()->convert_shortcodes($atts['dpdf'], true);\n-                    }\n-                    $entry->set_data('dpdf', $dpdf);\n-                    $template->set('dpdf', $dpdf);\n-                } else {\n-                    $template->set('dpdf', $template->extension()->render($template->get('dpdf')));\n-                }\n-                if (array_key_exists('meta_title', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $meta_title = $template->extension()->render($atts['meta_title']);\n-                    } else {\n-                        $meta_title = $template->extension()->convert_shortcodes($atts['meta_title'], true);\n-                    }\n-                    $entry->set_data('meta_title', $meta_title);\n-                    $template->set('meta_title', $meta_title);\n-                } else {\n-                    $template->set('meta_title', $template->extension()->render($template->get('meta_title')));\n-                }\n-                if (array_key_exists('meta_subject', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $meta_subject = $template->extension()->render($atts['meta_subject']);\n-                    } else {\n-                        $meta_subject = $template->extension()->convert_shortcodes($atts['meta_subject'], true);\n-                    }\n-                    $entry->set_data('meta_subject', $meta_subject);\n-                    $template->set('meta_subject', $meta_subject);\n-                } else {\n-                    $template->set('meta_subject', $template->extension()->render($template->get('meta_subject')));\n-                }\n-                if (array_key_exists('meta_author', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $meta_author = $template->extension()->render($atts['meta_author']);\n-                    } else {\n-                        $meta_author = $template->extension()->convert_shortcodes($atts['meta_author'], true);\n-                    }\n-                    $entry->set_data('meta_author', $meta_author);\n-                    $template->set('meta_author', $meta_author);\n-                } else {\n-                    $template->set('meta_author', $template->extension()->render($template->get('meta_author')));\n-                }\n-                if (array_key_exists('meta_keywords', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $meta_keywords = $template->extension()->render($atts['meta_keywords']);\n-                    } else {\n-                        $meta_keywords = $template->extension()->convert_shortcodes($atts['meta_keywords'], true);\n-                    }\n-                    $entry->set_data('meta_keywords', $meta_keywords);\n-                    $template->set('meta_keywords', $meta_keywords);\n-                } else {\n-                    $template->set('meta_keywords', $template->extension()->render($template->get('meta_keywords')));\n-                }\n-                if (array_key_exists('name', $atts)) {\n-                    if (!array_key_exists('filter', $atts)) {\n-                        $name = $template->extension()->render($atts['name']);\n-                    } else {\n-                        $name = $template->extension()->convert_shortcodes($atts['name'], true);\n-                    }\n-                    $entry->set_data('name', $name);\n-                    $template->set('name', $name);\n-                } else {\n-                    $template->set('name', $template->extension()->render($template->get('name')));\n-                }\n-\n-                $template->extension()->set('entry', $entry);\n-                $template->fill();\n-                $request = $template->render();\n+        if (!$template->load($attributes->get('id'))) {\n+            return $response;\n+        }\n \n-                if (!isset($request['error'])) {\n+        $entry = new Model_E2pdf_Entry();\n \n-                    $tmp_dir = $this->helper->get('tmp_dir') . 'e2pdf' . md5($entry->get('uid')) . '\u002F';\n-                    $this->helper->create_dir($tmp_dir);\n+        $template->extension()->patch('template_id', $attributes->get('id'), $entry);\n+        $template->extension()->patch('dataset', $attributes->get('dataset'), $entry);\n+        $template->extension()->patch('dataset2', $attributes->get('dataset2'), $entry);\n+        $template->extension()->patch('wc_order_id', $attributes->get('wc_order_id'), $entry);\n+        $template->extension()->patch('wc_product_item_id', $attributes->get('wc_product_item_id'), $entry);\n+        \u002F\u002F phpcs:ignore WordPress.WP.CapitalPDangit.Misspelled\n+        if (!($template->get('extension') === 'wordpress' && $template->get('item') === '-3')) {\n+            $template->extension()->patch('user_id', $attributes->get('user_id'), $entry);\n+        }\n+        $template->extension()->patch('args', $attributes->get('arguments'), $entry);\n+        $template->extension()->patch('storing_engine', $template->extension()->get_storing_engine(), $entry);\n+\n+        $options = apply_filters('e2pdf_model_shortcode_extension_options', [], $template);\n+        $options = apply_filters('e2pdf_model_shortcode_e2pdf_adobesign_extension_options', $options, $template);\n+        foreach ($options as $option_key => $option_value) {\n+            $template->extension()->set($option_key, $option_value);\n+        }\n+\n+        if ($template->extension()->verify() && $this->process_shortcode('e2pdf_adobesign', $template, $attributes)) {\n+\n+            $template->patch('inline', $attributes->get('inline'), $entry, $attributes->get('filter'));\n+            $template->patch('flatten', $attributes->get('flatten'), $entry, $attributes->get('filter'));\n+            $template->patch('format', $attributes->get('format'), $entry, $attributes->get('filter'));\n+            $template->patch('password', $attributes->get('password'), $entry, $attributes->get('filter'));\n+            $template->patch('dpdf', $attributes->get('dpdf'), $entry, $attributes->get('filter'));\n+            $template->patch('name', $attributes->get('name'), $entry, $attributes->get('filter'));\n+            $template->patch('meta_title', $attributes->get('meta_title'), $entry, $attributes->get('filter'));\n+            $template->patch('meta_subject', $attributes->get('meta_subject'), $entry, $attributes->get('filter'));\n+            $template->patch('meta_author', $attributes->get('meta_author'), $entry, $attributes->get('filter'));\n+            $template->patch('meta_keywords', $attributes->get('meta_keywords'), $entry, $attributes->get('filter'));\n+\n+            $template->extension()->set('entry', $entry);\n+            $template->fill();\n+            $request = $template->render();\n+\n+            if (!isset($request['error'])) {\n+\n+                $tmp_dir = $this->helper->get('tmp_dir') . 'e2pdf' . md5($entry->get('uid')) . '\u002F';\n+                $this->helper->create_dir($tmp_dir);\n+\n+                $filename = $template->get('name') . '.pdf';\n+                $filename = $this->helper->load('convert')->to_file_name($filename);\n+                $filepath = $tmp_dir . $filename;\n+                \u002F\u002F phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_read_file_put_contents\n+                file_put_contents($filepath, $request['file'], LOCK_EX);\n+\n+                $disable = $attributes->get('disable');\n+\n+                if (file_exists($filepath)) {\n+\n+                    $agreement_id = false;\n+                    $documents = [];\n+                    if (!in_array('post_transientDocuments', $disable, true)) {\n+                        $model_e2pdf_adobesign = new Model_E2pdf_AdobeSign();\n+                        $model_e2pdf_adobesign->set(\n+                                [\n+                                    'action' => 'api\u002Frest\u002Fv5\u002FtransientDocuments',\n+                                    'headers' => [\n+                                        'Content-Type: multipart\u002Fform-data',\n+                                    ],\n+                                    'data' => [\n+                                        'File-Name' => $filename,\n+                                        'Mime-Type' => 'application\u002Fpdf',\n+                                        'File' => class_exists('cURLFile') ? new cURLFile($filepath) : '@' . $filepath,\n+                                    ],\n+                                ]\n+                        );\n \n-                    if ($template->get('name')) {\n-                        $name = $template->get('name');\n-                    } else {\n-                        $name = $template->extension()->render($template->get_name());\n+                        $transientDocumentId = $model_e2pdf_adobesign->request('transientDocumentId');\n+                        if ($transientDocumentId) {\n+                            $documents[] = [\n+                                'transientDocumentId' => $transientDocumentId,\n+                            ];\n+                        }\n+                        $model_e2pdf_adobesign->flush();\n                     }\n-                    $file_name = $name . '.pdf';\n-                    $file_name = $this->helper->load('convert')->to_file_name($file_name);\n-                    $file_path = $tmp_dir . $file_name;\n-                    \u002F\u002F phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_read_file_put_contents, WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode\n-                    file_put_contents($file_path, base64_decode($request['file']));\n-\n-                    $disable = [];\n-                    if (array_key_exists('disable', $atts)) {\n-                        $disable = explode(',', $atts['disable']);\n-                    }\n-\n-                    if (file_exists($file_path)) {\n-\n-                        $agreement_id = false;\n-                        $documents = [];\n-                        if (!in_array('post_transientDocuments', $disable, true)) {\n-                            $model_e2pdf_adobesign = new Model_E2pdf_AdobeSign();\n-                            $model_e2pdf_adobesign->set(\n-                                    [\n-                                        'action' => 'api\u002Frest\u002Fv5\u002FtransientDocuments',\n-                                        'headers' => [\n-                                            'Content-Type: multipart\u002Fform-data',\n-                                        ],\n-                                        'data' => [\n-                                            'File-Name' => $file_name,\n-                                            'Mime-Type' => 'application\u002Fpdf',\n-                                            'File' => class_exists('cURLFile') ? new cURLFile($file_path) : '@' . $file_path,\n-                                        ],\n-                                    ]\n-                            );\n+                    \u002F\u002F phpcs:ignore WordPress.NamingConventions.ValidHookName.NotLowercase\n+                    $documents = apply_filters('e2pdf_model_shortcode_e2pdf_adobesign_fileInfos', $documents, $atts, $template, $entry, $template->extension(), $filepath);\n \n-                            $transientDocumentId = $model_e2pdf_adobesign->request('transientDocumentId');\n-                            if ($transientDocumentId) {\n-                                $documents[] = [\n-                                    'transientDocumentId' => $transientDocumentId,\n+                    if (!in_array('post_agreements', $disable, true) && !empty($documents)) {\n+                        $recipients = [];\n+                        if ($attributes->get('recipients') !== false) {\n+                            $recipients_list = explode(',', $template->extension()->render($attributes->get('recipients')));\n+                            foreach ($recipients_list as $recipient_info) {\n+                                $recipients[] = [\n+                                    'recipientSetMemberInfos' => [\n+                                        'email' => trim($recipient_info),\n+                                    ],\n+                                    'recipientSetRole' => 'SIGNER',\n                                 ];\n                             }\n-                            $model_e2pdf_adobesign->flush();\n                         }\n-                        \u002F\u002F phpcs:ignore WordPress.NamingConventions.ValidHookName.NotLowercase\n-                        $documents = apply_filters('e2pdf_model_shortcode_e2pdf_adobesign_fileInfos', $documents, $atts, $template, $entry, $template->extension(), $file_path);\n-\n-                        if (!in_array('post_agreements', $disable, true) && !empty($documents)) {\n-                            $output = false;\n-                            if (array_key_exists('output', $atts)) {\n-                                $output = $atts['output'];\n-                            }\n-                            $recipients = [];\n-                            if (array_key_exists('recipients', $atts)) {\n-                                $atts['recipients'] = $template->extension()->render($atts['recipients']);\n-                                $recipients_list = explode(',', $atts['recipients']);\n-\n-                                foreach ($recipients_list as $recipient_info) {\n-                                    $recipients[] = [\n-                                        'recipientSetMemberInfos' => [\n-                                            'email' => trim($recipient_info),\n-                                        ],\n-                                        'recipientSetRole' => 'SIGNER',\n-                                    ];\n-                                }\n-                            }\n-\n-                            $data = [\n-                                'documentCreationInfo' => [\n-                                    'signatureType' => 'ESIGN',\n-                                    'recipientSetInfos' => $recipients,\n-                                    'signatureFlow' => 'SENDER_SIGNATURE_NOT_REQUIRED',\n-                                    'fileInfos' => $documents,\n-                                    'name' => $name,\n-                                ],\n-                            ];\n \n-                            $data = apply_filters('e2pdf_model_shortcode_e2pdf_adobesign_post_agreements_data', $data, $atts, $template, $entry, $template->extension(), $file_path, $documents);\n+                        $data = [\n+                            'documentCreationInfo' => [\n+                                'signatureType' => 'ESIGN',\n+                                'recipientSetInfos' => $recipients,\n+                                'signatureFlow' => 'SENDER_SIGNATURE_NOT_REQUIRED',\n+                                'fileInfos' => $documents,\n+                                'name' => $template->get('name'),\n+                            ],\n+                        ];\n \n-                            $model_e2pdf_adobesign = new Model_E2pdf_AdobeSign();\n-                            $model_e2pdf_adobesign->set(\n-                                    [\n-                                        'action' => 'api\u002Frest\u002Fv5\u002Fagreements',\n-                                        'data' => $data,\n-                                    ]\n-                            );\n+                        $data = apply_filters('e2pdf_model_shortcode_e2pdf_adobesign_post_agreements_data', $data, $atts, $template, $entry, $template->extension(), $filepath, $documents);\n \n-                            $agreement_id = $model_e2pdf_adobesign->request('agreementId');\n-                            $model_e2pdf_adobesign->flush();\n-                        }\n+                        $model_e2pdf_adobesign = new Model_E2pdf_AdobeSign();\n+                        $model_e2pdf_adobesign->set(\n+                                [\n+                                    'action' => 'api\u002Frest\u002Fv5\u002Fagreements',\n+                                    'data' => $data,\n+                                ]\n+                        );\n \n-                        $response = apply_filters('e2pdf_model_shortcode_e2pdf_adobesign_response', $response, $atts, $template, $entry, $template->extension(), $file_path, $documents, $agreement_id);\n+                        $agreement_id = $model_e2pdf_adobesign->request('agreementId');\n+                        $model_e2pdf_adobesign->flush();\n                     }\n \n-                    $this->helper->delete_dir($tmp_dir);\n-                    return $response;\n+                    $response = apply_filters('e2pdf_model_shortcode_e2pdf_adobesign_response', $response, $atts, $template, $entry, $template->extension(), $filepath, $documents, $agreement_id);\n                 }\n+\n+                $this->helper->delete_dir($tmp_dir);\n+                return $response;\n             }\n         }\n+\n         return $response;\n     }\n \n     \u002F\u002F e2pdf-format-number\n     public function e2pdf_format_number($atts = [], $value = '') {\n \n-        \u002F\u002Fif (!apply_filters('e2pdf_shortcode_enable_e2pdf_format_number', false) && !apply_filters('e2pdf_pdf_render', false)) {\n-        \u002F\u002F    return '';\n-        \u002F\u002F}\n+        \u002F\u002F phpcs:ignore Squiz.PHP.CommentedOutCode.Found\n+        \u002F*\n+         * TODO: Prevent shortcode execution outside PDF rendering context\n+         * if (!apply_filters('e2pdf_shortcode_enable_e2pdf_format_number', false) && !apply_filters('e2pdf_pdf_render', false)) {\n+         * return '';\n+         * }\n+         *\u002F\n \n         $response = $value;\n         $atts = apply_filters('e2pdf_model_shortcode_e2pdf_format_number_atts', $atts);\n@@ -2760,9 +2139,13 @@\n     \u002F\u002F e2pdf-format-date\n     public function e2pdf_format_date($atts = [], $value = '') {\n \n-        \u002F\u002Fif (!apply_filters('e2pdf_shortcode_enable_e2pdf_format_date', false) && !apply_filters('e2pdf_pdf_render', false)) {\n-        \u002F\u002F    return '';\n-        \u002F\u002F}\n+        \u002F\u002F phpcs:ignore Squiz.PHP.CommentedOutCode.Found\n+        \u002F*\n+         * TODO: Prevent shortcode execution outside PDF rendering context\n+         * if (!apply_filters('e2pdf_shortcode_enable_e2pdf_format_date', false) && !apply_filters('e2pdf_pdf_render', false)) {\n+         * return '';\n+         * }\n+         *\u002F\n \n         $response = trim(strtolower($value));\n \n@@ -2845,9 +2228,13 @@\n     \u002F\u002F e2pdf-format-output\n     public function e2pdf_format_output($atts = [], $value = '') {\n \n-        \u002F\u002Fif (!apply_filters('e2pdf_shortcode_enable_e2pdf_format_output', false) && !apply_filters('e2pdf_pdf_render', false)) {\n-        \u002F\u002F    return '';\n-        \u002F\u002F}\n+        \u002F\u002F phpcs:ignore Squiz.PHP.CommentedOutCode.Found\n+        \u002F*\n+         * TODO: Prevent shortcode execution outside PDF rendering context\n+         * if (!apply_filters('e2pdf_shortcode_enable_e2pdf_format_output', false) && !apply_filters('e2pdf_pdf_render', false)) {\n+         * return '';\n+         * }\n+         *\u002F\n \n         $response = $value;\n         $atts = apply_filters('e2pdf_model_shortcode_e2pdf_format_output_atts', $atts);\n@@ -3133,7 +2520,6 @@\n \n         $new_value = [];\n         if ($path !== false) {\n-            $response = is_serialized($response) ? $this->helper->load('convert')->unserialize($response) : '';\n             $response = $this->helper->load('shortcode')->apply_path_attribute($response, $path);\n             if (is_array($response) || is_object($response)) {\n                 if (is_array($response) && !$this->helper->is_multidimensional($response)) {\n@@ -3437,9 +2823,13 @@\n     \u002F\u002F e2pdf-math\n     public function e2pdf_math($atts = [], $value = '') {\n \n-        \u002F\u002Fif (!apply_filters('e2pdf_shortcode_enable_e2pdf_math', false) && !apply_filters('e2pdf_pdf_render', false)) {\n-        \u002F\u002F    return '';\n-        \u002F\u002F}\n+        \u002F\u002F phpcs:ignore Squiz.PHP.CommentedOutCode.Found\n+        \u002F*\n+         * TODO: Prevent shortcode execution outside PDF rendering context\n+         * if (!apply_filters('e2pdf_shortcode_enable_e2pdf_math', false) && !apply_filters('e2pdf_pdf_render', false)) {\n+         * return '';\n+         * }\n+         *\u002F\n \n         $thousands_sep_split = isset($atts['thousands_sep_split']) ? $atts['thousands_sep_split'] : ',';\n         $dec_point_split = isset($atts['dec_point_split']) ? $atts['dec_point_split'] : '.';\n@@ -3596,48 +2986,7 @@\n             }\n \n             if ($convert) {\n-                if (0 === strpos($convert, 'term_id_to_')) {\n-                    $convert = str_replace('term_id_to_', '', $convert);\n-                    if (!is_array($user_meta)) {\n-                        if (strpos($user_meta, ',') !== false) {\n-                            $user_meta = explode(',', $user_meta);\n-                            if ($implode === false) {\n-                                $implode = ',';\n-                            }\n-                        }\n-                    }\n-                    if (is_array($user_meta)) {\n-                        $post_terms = [];\n-                        foreach ($user_meta as $user_meta_part) {\n-                            if (!is_array($user_meta_part)) {\n-                                $post_term = get_term($user_meta_part);\n-                                if ($post_term && !is_wp_error($post_term)) {\n-                                    if ($convert == 'term') {\n-                                        $post_terms[] = $post_term;\n-                                    } else {\n-                                        if (isset($post_term->$convert)) {\n-                                            $post_terms[] = $post_term->$convert;\n-                                        }\n-                                    }\n-                                }\n-                            }\n-                        }\n-                        $user_meta = $post_terms;\n-                    } else {\n-                        $post_term = get_term($user_meta);\n-                        if ($post_term && !is_wp_error($post_term)) {\n-                            if ($convert == 'term') {\n-                                $user_meta = $post_term;\n-                            } else {\n-                                if (isset($post_term->$convert)) {\n-                                    $user_meta = $post_term->$convert;\n-                                }\n-                            }\n-                        } else {\n-                            $user_meta = '';\n-                        }\n-                    }\n-                }\n+                $user_meta = $this->helper->load('shortcode')->apply_convert_attribute($convert, $user_meta, $implode);\n             }\n \n             if (apply_filters('e2pdf_raw_output', false)) {\n@@ -3678,6 +3027,46 @@\n         }\n     }\n \n+    \u002F\u002F e2pdf-frm-field-value\n+    public function e2pdf_frm_field_value($atts, $value = '') {\n+\n+        if (!apply_filters('e2pdf_shortcode_enable_e2pdf_frm_field_value', false) && !apply_filters('e2pdf_pdf_render', false)) {\n+            return '';\n+        }\n+\n+        $response = '';\n+        if (class_exists('FrmProEntriesController')) {\n+            foreach ($atts as $atts_key => $att) {\n+                if ($att === 'dynamic') {\n+                    $atts[$atts_key] = $value;\n+                }\n+            }\n+            $response = FrmProEntriesController::get_field_value_shortcode($atts);\n+        }\n+\n+        if (!apply_filters('e2pdf_pdf_fill', false)) {\n+            $response = $this->sanitize_html($response);\n+        }\n+        return apply_filters('e2pdf_model_shortcode_e2pdf_frm_field_value', $response, $atts, $value);\n+    }\n+\n+    public function e2pdf_translate($atts, $value = null) {\n+        if (!apply_filters('e2pdf_shortcode_enable_e2pdf_translate', false) && !apply_filters('e2pdf_pdf_render', false)) {\n+            return '';\n+        }\n+        $atts = shortcode_atts(\n+                [\n+                    'context' => '',\n+                    'domain' => 'default',\n+                ], $atts, 'e2pdf-translate'\n+        );\n+        if ($value) {\n+            \u002F\u002F phpcs:ignore WordPress.WP.I18n.NonSingularStringLiteralText, WordPress.WP.I18n.NonSingularStringLiteralContext, WordPress.WP.I18n.NonSingularStringLiteralDomain\n+            return _x($value, $atts['context'], $atts['domain']);\n+        }\n+        return '';\n+    }\n+\n     \u002F\u002F e2pdf-content\n     public function e2pdf_content($atts = [], $value = '') {\n \n@@ -3709,8 +3098,8 @@\n     \u002F\u002F e2pdf-exclude\n     public function e2pdf_exclude($atts = [], $value = '') {\n         $atts = apply_filters('e2pdf_model_shortcode_e2pdf_exclude_atts', $atts);\n-        $apply = isset($atts['apply']) ? true : false;\n-        return $apply ? '' : apply_filters('the_content', $value);\n+        $attributes = (new Helper_E2pdf_Atts())->load($atts);\n+        return $attributes->get('apply') ? '' : apply_filters('the_content', $value);\n     }\n \n     \u002F\u002F e2pdf-wp\n@@ -3945,48 +3334,7 @@\n                     }\n \n                     if ($convert) {\n-                        if (0 === strpos($convert, 'term_id_to_')) {\n-                            $convert = str_replace('term_id_to_', '', $convert);\n-                            if (!is_array($post_meta)) {\n-                                if (strpos($post_meta, ',') !== false) {\n-                                    $post_meta = explode(',', $post_meta);\n-                                    if ($implode === false) {\n-                                        $implode = ',';\n-                                    }\n-                                }\n-                            }\n-                            if (is_array($post_meta)) {\n-                                $post_terms = [];\n-                                foreach ($post_meta as $post_meta_part) {\n-                                    if (!is_array($post_meta_part)) {\n-                                        $post_term = get_term($post_meta_part);\n-                                        if ($post_term && !is_wp_error($post_term)) {\n-                                            if ($convert == 'term') {\n-                                                $post_terms[] = $post_term;\n-                                            } else {\n-                                                if (isset($post_term->$convert)) {\n-                                                    $post_terms[] = $post_term->$convert;\n-                                                }\n-                                            }\n-                                        }\n-                                    }\n-                                }\n-                                $post_meta = $post_terms;\n-                            } else {\n-                                $post_term = get_term($post_meta);\n-                                if ($post_term && !is_wp_error($post_term)) {\n-                                    if ($convert == 'term') {\n-                                        $post_meta = $post_term;\n-                                    } else {\n-                                        if (isset($post_term->$convert)) {\n-                                            $post_meta = $post_term->$convert;\n-                                        }\n-                                    }\n-                                } else {\n-                                    $post_meta = '';\n-                                }\n-                            }\n-                        }\n+                        $post_meta = $this->helper->load('shortcode')->apply_convert_attribute($convert, $post_meta, $implode);\n                     }\n \n                     if (apply_filters('e2pdf_raw_output', false)) {\n@@ -3996,7 +3344,7 @@\n                             if ($implode !== false) {\n                                 if (!$this->helper->is_multidimensional($post_meta)) {\n                                     foreach ($post_meta as $post_meta_key => $post_meta_value) {\n-                                        $post_meta[$post_meta_key] = $this->helper->load('translator')->translate($post_meta_value);\n+                                        $post_meta[$post_meta_key] = $this->helper->load('translator')->translate($post_meta_value, 'default', $id);\n                                     }\n                                     $response = implode($implode, $post_meta);\n                                 } else {\n@@ -4021,7 +3369,7 @@\n         if (apply_filters('e2pdf_raw_output', false)) {\n             return apply_filters('e2pdf_model_shortcode_e2pdf_wp_raw', $response, $atts, $value);\n         } else {\n-            $response = $this->helper->load('translator')->translate($response, 'partial');\n+            $response = $this->helper->load('translator')->translate($response, 'partial', $id);\n             if (!apply_filters('e2pdf_pdf_fill', false)) {\n                 $response = $this->sanitize_html($response);\n             }\n@@ -4485,7 +3833,6 @@\n         $terms = isset($atts['terms']) && $atts['terms'] == 'true' ? true : false;\n         $parent = isset($atts['parent']) && $atts['parent'] == 'true' ? true : false;\n         $wc_order_id = isset($atts['wc_order_id']) ? $atts['wc_order_id'] : false;\n-        $wc_price = isset($atts['wc_price']) && $atts['wc_price'] == 'true' ? true : false;\n         $download_index = isset($atts['download_index']) ? $atts['download_index'] : false;\n         $attribute = isset($atts['attribute']) ? $atts['attribute'] : false;\n         $order = isset($atts['order']) && $atts['order'] == 'true' ? true : false;\n@@ -4493,6 +3840,8 @@\n         $order_item_meta = isset($atts['order_item_meta']) && $atts['order_item_meta'] == 'true' ? true : false;\n         $wc_filter = isset($atts['wc_filter']) && $atts['wc_filter'] == 'true' ? true : false;\n         $convert = isset($atts['convert']) ? $atts['convert'] : false;\n+        $wc_price = isset($atts['wc_price']) && $atts['wc_price'] == 'true' ? true : false;\n+        $wc_price_raw = isset($atts['wc_price_raw']) && $atts['wc_price_raw'] == 'true' ? true : false;\n \n         if ($id == 'dynamic') {\n             $id = $value;\n@@ -5335,7 +4684,7 @@\n                     }\n                 }\n \n-                if ($wc_price) {\n+                if ($wc_price || $wc_price_raw) {\n                     if (is_array($post_meta) || is_object($post_meta)) { \u002F\u002F phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedIf\n                     } else {\n                         if (isset($atts['currency'])) {\n@@ -5350,52 +4699,14 @@\n                                 $post_meta = wc_price($post_meta);\n                             }\n                         }\n+                        if ($wc_price_raw) {\n+                            $post_meta = html_entity_decode(wp_strip_all_tags($post_meta));\n+                        }\n                     }\n                 }\n \n                 if ($convert) {\n-                    if (0 === strpos($convert, 'term_id_to_')) {\n-                        $convert = str_replace('term_id_to_', '', $convert);\n-                        if (!is_array($post_meta)) {\n-                            if (strpos($post_meta, ',') !== false) {\n-                                $post_meta = explode(',', $post_meta);\n-                                if ($implode === false) {\n-                                    $implode = ',';\n-                                }\n-                            }\n-                        }\n-                        if (is_array($post_meta)) {\n-                            $post_terms = [];\n-                            foreach ($post_meta as $post_meta_part) {\n-                                if (!is_array($post_meta_part)) {\n-                                    $post_term = get_term($post_meta_part);\n-                                    if ($post_term && !is_wp_error($post_term)) {\n-                                        if ($convert == 'term') {\n-                                            $post_terms[] = $post_term;\n-                                        } else {\n-                                            if (isset($post_term->$convert)) {\n-                                                $post_terms[] = $post_term->$convert;\n-                                            }\n-                                        }\n-                                    }\n-                                }\n-                            }\n-                            $post_meta = $post_terms;\n-                        } else {\n-                            $post_term = get_term($post_meta);\n-                            if ($post_term && !is_wp_error($post_term)) {\n-                                if ($convert == 'term') {\n-                                    $post_meta = $post_term;\n-                                } else {\n-                                    if (isset($post_term->$convert)) {\n-                                        $post_meta = $post_term->$convert;\n-                                    }\n-                                }\n-                            } else {\n-                                $post_meta = '';\n-                            }\n-                        }\n-                    }\n+                    $post_meta = $this->helper->load('shortcode')->apply_convert_attribute($convert, $post_meta, $implode);\n                 }\n \n                 if (apply_filters('e2pdf_raw_output', false)) {\n@@ -5463,14 +4774,30 @@\n         $meta = isset($atts['meta']) && $atts['meta'] == 'true' ? true : false;\n         $order_item_meta = isset($atts['order_item_meta']) && $atts['order_item_meta'] == 'true' ? true : false;\n         $terms = isset($atts['terms']) && $atts['terms'] == 'true' ? true : false;\n-        $wc_price = isset($atts['wc_price']) && $atts['wc_price'] == 'true' ? true : false;\n         $output = isset($atts['output']) ? $atts['output'] : false;\n         $checkout_field_editor = isset($atts['checkout_field_editor']) && $atts['checkout_field_editor'] == 'true' ? true : false;\n+        $parent = isset($atts['parent']) && $atts['parent'] == 'true' ? true : false;\n+        $wc_price = isset($atts['wc_price']) && $atts['wc_price'] == 'true' ? true : false;\n+        $wc_price_raw = isset($atts['wc_price_raw']) && $atts['wc_price_raw'] == 'true' ? true : false;\n \n         if ($id == 'dynamic') {\n             $id = $value;\n         }\n \n+        if ($parent) {\n+            $order_id = false;\n+            if ($id && function_exists('wcs_get_subscription') && get_post_type($id) == 'shop_subscription') {\n+                $subscription = wcs_get_subscription($id);\n+                if ($subscription) {\n+                    $subscription_order = $subscription->get_parent();\n+                    if ($subscription_order) {\n+                        $order_id = $subscription_order->get_id();\n+                    }\n+                }\n+            }\n+            $id = $order_id;\n+        }\n+\n         $data_fields = apply_filters(\n                 'e2pdf_model_shortcode_wc_order_data_fields',\n                 [\n@@ -5594,6 +4921,7 @@\n                     'get_order_item_totals',\n                     'get_tax_totals',\n                     'get_items',\n+                    'get_items_ids',\n                     'get_items_category',\n                     'get_items_category_ids',\n                 ]\n@@ -5724,7 +5052,7 @@\n                                     }\n                                 }\n \n-                                $plain_text = isset($atts['plain_text']) ? $plain_text : false;\n+                                $plain_text = isset($atts['plain_text']) ? $atts['plain_text'] : false;\n \n                                 if ($show_products) {\n                                     $content .= \"\u003Ctable split='true' border='1' bordercolor='#eeeeee' cellpadding='5' class='e2pdf-wc-cart-products'>\";\n@@ -5891,6 +5219,17 @@\n                                 }\n                             }\n                             $post_meta = $item_metas;\n+                        } elseif ($key == 'get_items_ids') {\n+                            $item_metas = [];\n+                            foreach ($order->get_items() as $item) {\n+                                if (is_callable(array($item, 'get_product_id')) && $item->get_product_id()) {\n+                                    $item_metas[] = $item->get_product_id();\n+                                }\n+                                if (is_callable(array($item, 'get_variation_id')) && $item->get_variation_id()) {\n+                                    $item_metas[] = $item->get_variation_id();\n+                                }\n+                            }\n+                            $post_meta = $item_metas;\n                         } else {\n                             if ($order && is_object($order) && method_exists($order, $key)) {\n                                 if ($key == 'get_date_created' || $key == 'get_date_modified' || $key == 'get_date_completed' || $key == 'get_date_paid') {\n@@ -5908,6 +5247,13 @@\n                                 } elseif ($key == 'get_items') {\n                                     $types = isset($atts['types']) ? explode(',', $atts['types']) : ['line_item'];\n                                     $post_meta = $order->$key($types);\n+                                } elseif ($key == 'get_subtotal_to_display') {\n+                                    $compound = isset($atts['compound']) && $atts['compound'] == 'true' ? true : false;\n+                                    $tax_display = isset($atts['tax_display']) ? $atts['tax_display'] : '';\n+                                    $post_meta = $order->$key($compound, $tax_display);\n+                                } elseif ($key == 'get_total_discount') {\n+                                    $ex_tax = isset($atts['ex_tax']) && $atts['ex_tax'] == 'false' ? false : true;\n+                                    $post_meta = $order->$key($ex_tax);\n                                 } else {\n                                     $post_meta = $order->$key();\n                                 }\n@@ -6062,7 +5408,7 @@\n                         }\n                     }\n \n-                    if ($wc_price) {\n+                    if ($wc_price || $wc_price_raw) {\n                         if (is_array($post_meta) || is_object($post_meta)) { \u002F\u002F phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedIf\n                         } else {\n                             if (isset($atts['currency'])) {\n@@ -6077,6 +5423,9 @@\n                                     $post_meta = wc_price($post_meta);\n                                 }\n                             }\n+                            if ($wc_price_raw) {\n+                                $post_meta = html_entity_decode(wp_strip_all_tags($post_meta));\n+                            }\n                         }\n                     }\n \n@@ -6234,6 +5583,7 @@\n         $terms = isset($atts['terms']) && $atts['terms'] == 'true' ? true : false;\n         $output = isset($atts['output']) ? $atts['output'] : false;\n         $wc_price = isset($atts['wc_price']) && $atts['wc_price'] == 'true' ? true : false;\n+        $wc_price_raw = isset($atts['wc_price_raw']) && $atts['wc_price_raw'] == 'true' ? true : false;\n \n         $data_fields = apply_filters(\n                 'e2pdf_model_shortcode_wc_cart_data_fields',\n@@ -6450,7 +5800,7 @@\n                                     }\n                                 }\n \n-                                $plain_text = isset($atts['plain_text']) ? $plain_text : false;\n+                                $plain_text = isset($atts['plain_text']) ? $atts['plain_text'] : false;\n                                 if ($show_products) {\n \n                                     $content .= \"\u003Ctable border='1' split='true' bordercolor='#eeeeee' cellpadding='5' class='e2pdf-wc-cart-products'>\";\n@@ -7026,7 +6376,7 @@\n                         }\n                     }\n \n-                    if ($wc_price) {\n+                    if ($wc_price || $wc_price_raw) {\n                         if (is_array($post_meta) || is_object($post_meta)) { \u002F\u002F phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedIf\n                         } else {\n                             if (isset($atts['currency'])) {\n@@ -7034,6 +6384,9 @@\n                             } else {\n                                 $post_meta = wc_price($post_meta);\n                             }\n+                            if ($wc_price_raw) {\n+                                $post_meta = html_entity_decode(wp_strip_all_tags($post_meta));\n+                            }\n                         }\n                     }\n \n@@ -7279,8 +6632,8 @@\n         return $value;\n     }\n \n-    public function process_shortcode($template, $shortcode = false) {\n-        if ($template->get('actions')) {\n+    public function process_shortcode($shortcode = false, $template = null, $attributes = null) {\n+        if (!$attributes->get('noactions') && $template->get('actions')) {\n             $model_e2pdf_action = new Model_E2pdf_Action();\n             $model_e2pdf_action->load($template->extension());\n             if (!is_array($template->get('actions'))) {\n@@ -7288,13 +6641,13 @@\n             }\n             $actions = $model_e2pdf_action->process_global_actions($template->get('actions'));\n             foreach ($actions as $action) {\n-                if (isset($action['action']) && $action['action'] == 'restrict_process_shortcodes' && isset($action['success'])) {\n+                if (isset($action['action']) && $action['action'] == 'disable_shortcodes' && isset($action['success'])) {\n                     return false;\n-                } elseif (isset($action['action']) && $action['action'] == 'process_shortcodes' && !isset($action['success'])) {\n+                } elseif (isset($action['action']) && $action['action'] == 'enable_shortcodes' && !isset($action['success'])) {\n                     return false;\n-                } elseif ($shortcode && isset($action['action']) && $action['action'] == 'restrict_process_shortcode_' . $shortcode && isset($action['success'])) {\n+                } elseif ($shortcode && isset($action['action']) && $action['action'] == 'disable_' . $shortcode && isset($action['success'])) {\n                     return false;\n-                } elseif ($shortcode && isset($action['action']) && $action['action'] == 'process_shortcode_' . $shortcode && !isset($action['success'])) {\n+                } elseif ($shortcode && isset($action['action']) && $action['action'] == 'enable_' . $shortcode && !isset($action['success'])) {\n                     return false;\n                 }\n             }\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fmodel\u002Fe2pdf-signature.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fmodel\u002Fe2pdf-signature.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fmodel\u002Fe2pdf-signature.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fmodel\u002Fe2pdf-signature.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -19,6 +19,8 @@\n \n         if ($value && trim($value) != '' && extension_loaded('gd') && function_exists('imagettftext')) {\n \n+            $value = $this->helper->load('rtl')->rtl($value);\n+\n             $box = imagettfbbox($options['fontSize'], 0, $options['font'], $value);\n \n             $min_x = min(array($box[0], $box[2], $box[4], $box[6]));\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fmodel\u002Fe2pdf-template.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fmodel\u002Fe2pdf-template.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fmodel\u002Fe2pdf-template.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fmodel\u002Fe2pdf-template.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -46,7 +46,7 @@\n             if ($revision->load($template_id, false, $revision_id)) {\n                 $template = array_replace($template, $revision->template());\n             } else {\n-                $template = array();\n+                $template = [];\n             }\n         }\n \n@@ -123,7 +123,7 @@\n     public function set($key, $value) {\n         switch ($key) {\n             case 'format':\n-                if (in_array($value, array('pdf', 'jpg'), true)) {\n+                if (in_array($value, ['pdf', 'jpg'], true)) {\n                     $this->template[$key] = $value;\n                     return true;\n                 } else {\n@@ -132,7 +132,7 @@\n                 break;\n             case 'permissions':\n                 if (!is_array($value)) {\n-                    $this->template[$key] = array('printing');\n+                    $this->template[$key] = ['printing'];\n                 } else {\n                     $this->template[$key] = $value;\n                 }\n@@ -141,7 +141,7 @@\n             case 'properties':\n             case 'actions':\n                 if (!is_array($value)) {\n-                    $this->template[$key] = array();\n+                    $this->template[$key] = [];\n                 } else {\n                     $this->template[$key] = $value;\n                 }\n@@ -167,9 +167,9 @@\n             return $value;\n         } elseif (isset($this->template[$key])) {\n             if ($key == 'revisions') {\n-                $value = array(\n+                $value = [\n                     '0' => __('Latest', 'e2pdf'),\n-                );\n+                ];\n                 if (is_array($this->template[$key])) {\n                     foreach ($this->template[$key] as $revision) {\n                         \u002F\u002F phpcs:ignore WordPress.DateTime.RestrictedFunctions.date_date\n@@ -217,18 +217,16 @@\n                     $value = 'left';\n                     break;\n                 case 'permissions':\n-                    $value = array(\n+                    $value = [\n                         'printing',\n-                    );\n+                    ];\n                     break;\n                 case 'fonts':\n                 case 'properties':\n                 case 'actions':\n-                    $value = array();\n-                    break;\n                 case 'pages':\n                 case 'revisions':\n-                    $value = array();\n+                    $value = [];\n                     break;\n                 case 'name':\n                 case 'savename':\n@@ -274,9 +272,9 @@\n             $tpl_dir = $this->helper->get('tpl_dir') . $this->get('ID') . '\u002F';\n             $this->helper->delete_dir($tpl_dir);\n \n-            $where = array(\n+            $where = [\n                 'ID' => $this->get('ID'),\n-            );\n+            ];\n             $wpdb->delete($this->get_table(), $where);\n \n             foreach ($this->get('pages') as $page) {\n@@ -290,11 +288,16 @@\n                 wp_cache_delete($this->get('ID'), 'e2pdf_pages');\n                 wp_cache_delete($this->get('ID'), 'e2pdf_revisions');\n             }\n+\n+            $translator = $this->helper->load('translator');\n+            if ($translator) {\n+                $translator->flush($this->get('ID'));\n+            }\n         }\n     }\n \n     \u002F\u002F update\n-    public function update($keys = array()) {\n+    public function update($keys = []) {\n         global $wpdb;\n         if ($this->get('ID') && !empty($keys)) {\n             $show_errors = false;\n@@ -305,9 +308,9 @@\n             foreach ($keys as $key) {\n                 $template[$key] = $this->get($key);\n             }\n-            $where = array(\n+            $where = [\n                 'ID' => $this->get('ID'),\n-            );\n+            ];\n             $success = $wpdb->update($this->get_table(), $template, $where);\n             if ($success === false) {\n                 $this->helper->load('db')->db_init($wpdb->prefix);\n@@ -355,15 +358,18 @@\n                 }\n                 $revision->flush();\n             }\n-            $where = array(\n+            $where = [\n                 'ID' => $this->get('ID'),\n-            );\n+            ];\n             $success = $wpdb->update($this->get_table(), $template, $where);\n             if ($success === false) {\n                 $this->helper->load('db')->db_init($wpdb->prefix);\n                 $wpdb->update($this->get_table(), $template, $where);\n             }\n         } else {\n+            if ($this->get('TMP_ID')) {\n+                $template['ID'] = $this->get('TMP_ID');\n+            }\n             $success = $wpdb->insert($this->get_table(), $template);\n             if ($success === false) {\n                 $this->helper->load('db')->db_init($wpdb->prefix);\n@@ -377,13 +383,25 @@\n         }\n \n         if ($this->get('ID') && $rebuild) {\n+\n+            $translator = $this->helper->load('translator');\n+            if ($translator) {\n+                $translator->update_translation($template['title'], $this->get('ID'), 'title', 'template');\n+                $translator->update_translation($template['dataset_title'], $this->get('ID'), 'dataset_title', 'template');\n+                $translator->update_translation($template['dataset_title1'], $this->get('ID'), 'dataset_title1', 'template');\n+                $translator->update_translation($template['dataset_title2'], $this->get('ID'), 'dataset_title2', 'template');\n+                $translator->update_translation($template['button_title'], $this->get('ID'), 'button_title', 'template');\n+                $translator->update_translation($template['name'], $this->get('ID'), 'name', 'template');\n+                $translator->update_translation($template['savename'], $this->get('ID'), 'savename', 'template');\n+            }\n+\n             foreach ($this->get('pages') as $page_key => $page) {\n                 $new_page = new Model_E2pdf_Page();\n                 foreach ($page as $page_set_key => $page_set_value) {\n                     $new_page->set($page_set_key, $page_set_value);\n                 }\n                 if (!isset($page['actions'])) {\n-                    $page_actions = array();\n+                    $page_actions = [];\n                 } else {\n                     $page_actions = $page['actions'];\n                 }\n@@ -396,15 +414,39 @@\n                         $new_element = new Model_E2pdf_Element();\n                         foreach ($element as $element_set_key => $element_set_value) {\n                             $new_element->set($element_set_key, $element_set_value);\n+                            if ($translator) {\n+                                if ($element_set_key == 'value') {\n+                                    $translator->update_translation($element_set_value, $this->get('ID'), $element['element_id'], $element_set_key);\n+                                }\n+                            }\n+                        }\n+\n+                        if ($translator) {\n+                            if (!empty($element['properties']['option'])) {\n+                                $translator->update_translation($element['properties']['option'], $this->get('ID'), $element['element_id'], 'option');\n+                            }\n+                            if (!empty($element['properties']['options'])) {\n+                                $translator->update_translation($element['properties']['options'], $this->get('ID'), $element['element_id'], 'options');\n+                            }\n+                            if (!empty($element['actions'])) {\n+                                foreach ($element['actions'] as $action_key => $action) {\n+                                    if ($action['action'] == 'change' && isset($action['property']) && $action['property'] == 'value' && isset($action['change'])) {\n+                                        $translator->update_translation($action['change'], $this->get('ID'), $element['element_id'], 'value_action_' . $action_key . '_change');\n+                                    }\n+                                }\n+                            }\n                         }\n-                        $new_element->set('properties', isset($element['properties']) ? $element['properties'] : array());\n-                        $new_element->set('actions', isset($element['actions']) ? $element['actions'] : array());\n+                        $new_element->set('properties', isset($element['properties']) ? $element['properties'] : []);\n+                        $new_element->set('actions', isset($element['actions']) ? $element['actions'] : []);\n                         $new_element->set('page_id', $new_page->get('page_id'));\n                         $new_element->set('template_id', $this->get('ID'));\n                         $new_element->save();\n                     }\n                 }\n             }\n+            if ($translator) {\n+                $translator->flush($this->get('ID'));\n+            }\n         }\n \n         if ($this->helper->get('cache') && $this->get('ID')) {\n@@ -418,7 +460,7 @@\n \n     \u002F\u002F pre save\n     public function load_fonts() {\n-        $fonts = array();\n+        $fonts = [];\n         $model_e2pdf_font = new Model_E2pdf_Font();\n         $all_fonts = $model_e2pdf_font->get_fonts();\n         $c_font = array_search($this->get('font'), $all_fonts, true);\n@@ -435,13 +477,21 @@\n                 }\n             }\n         }\n+\n+        if (isset($this->get('properties')['css']) && $this->get('properties')['css']) {\n+            $tmp_fonts = $model_e2pdf_font->get_css_fonts($this->get('properties')['css'], $all_fonts);\n+            if (!empty($tmp_fonts)) {\n+                $fonts = array_merge($fonts, $tmp_fonts);\n+            }\n+        }\n+\n         $this->set('fonts', $fonts);\n     }\n \n     \u002F\u002F pre save\n     public function pre_save() {\n         $this->load_fonts();\n-        $template = array(\n+        $template = [\n             'uid' => $this->get('uid'),\n             'activated' => $this->get('activated'),\n             'title' => $this->get('title'),\n@@ -492,7 +542,7 @@\n             'properties' => serialize($this->get('properties')), \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize\n             'actions' => serialize($this->get('actions')), \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize\n             'attachments' => $this->get('attachments'),\n-        );\n+        ];\n \n         if (!$this->get('ID')) {\n             $template['created_at'] = current_time('mysql', 1);\n@@ -504,18 +554,18 @@\n     \u002F\u002F fill\n     public function fill() {\n \n-        add_filter('e2pdf_pdf_fill', array($this->helper, '__return_true'), 999);\n-        do_action('e2pdf_model_template_fill_pre', $this, $this->extension());\n+        add_filter('e2pdf_pdf_fill', [$this->helper, '__return_true'], 999);\n+        do_action('e2pdf_model_template_fill_pre', $this, $this->extension);\n \n         $action = new Model_E2pdf_Action();\n-        $action->load($this->extension());\n+        $action->load($this->extension);\n         $pages = $this->get('pages');\n-        $changed_elements = array();\n+        $changed_elements = [];\n         foreach ($pages as $key => $value) {\n             $changed_elements = array_merge($changed_elements, $action->process_page_id($value));\n         }\n \n-        $changed_pages = array();\n+        $changed_pages = [];\n         if (!empty($changed_elements)) {\n             foreach ($changed_elements as $element) {\n                 $changed_pages[$element['page_id']][] = $element;\n@@ -530,37 +580,53 @@\n             $pages[$page_key] = $page = $action->process_actions($page);\n             if (isset($page['hidden']) && $page['hidden']) {\n                 $pages[$page_key]['page_id'] = '0';\n-                $pages[$page_key]['elements'] = array();\n+                $pages[$page_key]['elements'] = [];\n             } else {\n                 if (!empty($page['elements'])) {\n                     $pages[$page_key]['elements'] = $page['elements'];\n                     foreach ($page['elements'] as $element_key => $element) {\n                         if (isset($element['type'])) {\n+                            $rendered = isset($element['rendered']) ? $element['rendered'] : false;\n                             switch ($element['type']) {\n                                 case 'e2pdf-checkbox':\n                                 case 'e2pdf-radio':\n+                                    if (isset($element['properties']['option'])) {\n+                                        $element['properties']['option'] = $this->helper->load('translator')->pre_translate($element['properties']['option'], $element['template_id'], $element['element_id'], 'option');\n+                                    }\n                                     $pages[$page_key]['elements'][$element_key]['properties']['option'] = $this->extension()->render(\n                                             isset($element['properties']['option']) ? $element['properties']['option'] : ''\n                                     );\n-                                    $pages[$page_key]['elements'][$element_key]['value'] = $this->extension()->render(\n-                                            $element['value'], $element\n-                                    );\n+                                    if (!$rendered) {\n+                                        $element['value'] = $this->helper->load('translator')->pre_translate($element['value'], $element['template_id'], $element['element_id'], 'value');\n+                                        $pages[$page_key]['elements'][$element_key]['value'] = $this->extension()->render(\n+                                                $element['value'], $element\n+                                        );\n+                                    }\n                                     break;\n                                 case 'e2pdf-select':\n+                                    if (isset($element['properties']['options'])) {\n+                                        $element['properties']['options'] = $this->helper->load('translator')->pre_translate($element['properties']['options'], $element['template_id'], $element['element_id'], 'options');\n+                                    }\n                                     $pages[$page_key]['elements'][$element_key]['properties']['options'] = $this->extension()->render(\n                                             isset($element['properties']['options']) ? $element['properties']['options'] : ''\n                                     );\n-                                    $pages[$page_key]['elements'][$element_key]['value'] = $this->extension()->render(\n-                                            $element['value'], $element\n-                                    );\n+                                    if (!$rendered) {\n+                                        $element['value'] = $this->helper->load('translator')->pre_translate($element['value'], $element['template_id'], $element['element_id'], 'value');\n+                                        $pages[$page_key]['elements'][$element_key]['value'] = $this->extension()->render(\n+                                                $element['value'], $element\n+                                        );\n+                                    }\n                                     break;\n                                 case 'e2pdf-html':\n                                 case 'e2pdf-page-number':\n-                                    $pages[$page_key]['elements'][$element_key]['value'] = $this->helper->load('filter')->filter_html_tags(\n-                                            $this->extension()->render(\n-                                                    $element['value'], $element\n-                                            )\n-                                    );\n+                                    if (!$rendered) {\n+                                        $element['value'] = $this->helper->load('translator')->pre_translate($element['value'], $element['template_id'], $element['element_id'], 'value');\n+                                        $pages[$page_key]['elements'][$element_key]['value'] = $this->helper->load('filter')->filter_html_tags(\n+                                                $this->extension()->render(\n+                                                        $element['value'], $element\n+                                                )\n+                                        );\n+                                    }\n                                     break;\n                                 case 'e2pdf-image':\n                                 case 'e2pdf-signature':\n@@ -569,19 +635,22 @@\n                                         $element['properties']['quality'] = $this->get('optimization');\n                                         $pages[$page_key]['elements'][$element_key]['properties']['quality'] = $this->get('optimization');\n                                     }\n-                                    $pages[$page_key]['elements'][$element_key]['value'] = $this->extension()->render(\n-                                            $element['value'], $element\n-                                    );\n+                                    if (!$rendered) {\n+                                        $element['value'] = $this->helper->load('translator')->pre_translate($element['value'], $element['template_id'], $element['element_id'], 'value');\n+                                        $pages[$page_key]['elements'][$element_key]['value'] = $this->extension()->render(\n+                                                $element['value'], $element\n+                                        );\n+                                    }\n                                     if (!empty($element['properties']['link_url'])) {\n                                         $pages[$page_key]['elements'][$element_key]['properties']['link_url'] = $this->extension()->render(\n                                                 $element['properties']['link_url']\n                                         );\n                                         if (!empty($pages[$page_key]['elements'][$element_key]['properties']['link_url']) && !empty($element['properties']['link_type']) && $element['properties']['link_type'] == 'attachment') {\n-                                            $source = $this->helper->load('attachments')->get_file(trim($pages[$page_key]['elements'][$element_key]['properties']['link_url']), $this->extension());\n+                                            $source = $this->helper->load('attachments')->get_file(trim($pages[$page_key]['elements'][$element_key]['properties']['link_url']), $this->extension);\n                                             if ($source) {\n                                                 $pages[$page_key]['elements'][$element_key]['attachment']['value'] = $source;\n-                                                $pages[$page_key]['elements'][$element_key]['attachment']['name'] = $this->helper->load('attachments')->get_attachment_name($pages[$page_key]['elements'][$element_key]['properties']['link_url'], $this->extension(), $element['value']);\n-                                                $pages[$page_key]['elements'][$element_key]['attachment']['description'] = $this->helper->load('attachments')->get_attachment_description($pages[$page_key]['elements'][$element_key]['properties']['link_url'], $this->extension(), $element['value']);\n+                                                $pages[$page_key]['elements'][$element_key]['attachment']['name'] = $this->helper->load('attachments')->get_attachment_name($pages[$page_key]['elements'][$element_key]['properties']['link_url'], $this->extension, $element['value']);\n+                                                $pages[$page_key]['elements'][$element_key]['attachment']['description'] = $this->helper->load('attachments')->get_attachment_description($pages[$page_key]['elements'][$element_key]['properties']['link_url'], $this->extension, $element['value']);\n                                             }\n                                         }\n                                     }\n@@ -594,18 +663,21 @@\n                                             !empty($element['properties']['link_label']) ? $element['properties']['link_label'] : ''\n                                     );\n                                     if (!empty($pages[$page_key]['elements'][$element_key]['value']) && !empty($element['properties']['link_type']) && $element['properties']['link_type'] == 'attachment') {\n-                                        $source = $this->helper->load('attachments')->get_file(trim($pages[$page_key]['elements'][$element_key]['value']), $this->extension());\n+                                        $source = $this->helper->load('attachments')->get_file(trim($pages[$page_key]['elements'][$element_key]['value']), $this->extension);\n                                         if ($source) {\n                                             $pages[$page_key]['elements'][$element_key]['attachment']['value'] = $source;\n-                                            $pages[$page_key]['elements'][$element_key]['attachment']['name'] = $this->helper->load('attachments')->get_attachment_name($pages[$page_key]['elements'][$element_key]['value'], $this->extension(), $element['value']);\n-                                            $pages[$page_key]['elements'][$element_key]['attachment']['description'] = $this->helper->load('attachments')->get_attachment_description($pages[$page_key]['elements'][$element_key]['value'], $this->extension(), $element['value']);\n+                                            $pages[$page_key]['elements'][$element_key]['attachment']['name'] = $this->helper->load('attachments')->get_attachment_name($pages[$page_key]['elements'][$element_key]['value'], $this->extension, $element['value']);\n+                                            $pages[$page_key]['elements'][$element_key]['attachment']['description'] = $this->helper->load('attachments')->get_attachment_description($pages[$page_key]['elements'][$element_key]['value'], $this->extension, $element['value']);\n                                         }\n                                     }\n                                     break;\n                                 default:\n-                                    $pages[$page_key]['elements'][$element_key]['value'] = $this->extension()->render(\n-                                            $element['value'], $element\n-                                    );\n+                                    if (!$rendered) {\n+                                        $element['value'] = $this->helper->load('translator')->pre_translate($element['value'], $element['template_id'], $element['element_id'], 'value');\n+                                        $pages[$page_key]['elements'][$element_key]['value'] = $this->extension()->render(\n+                                                $element['value'], $element\n+                                        );\n+                                    }\n                                     break;\n                             }\n                         }\n@@ -615,8 +687,8 @@\n         }\n         $this->set('pages', $pages);\n \n-        do_action('e2pdf_model_template_fill_after', $this, $this->extension());\n-        remove_filter('e2pdf_pdf_fill', array($this->helper, '__return_true'), 999);\n+        do_action('e2pdf_model_template_fill_after', $this, $this->extension);\n+        remove_filter('e2pdf_pdf_fill', [$this->helper, '__return_true'], 999);\n     }\n \n     \u002F\u002F pre render\n@@ -652,36 +724,36 @@\n         $model_e2pdf_api = new Model_E2pdf_Api();\n         $model_e2pdf_font = new Model_E2pdf_Font();\n \n-        $fonts = array();\n+        $fonts = [];\n         if (get_option('e2pdf_cache_fonts', '1') && $type != 'php') {\n-            $cached_fonts = get_option('e2pdf_cached_fonts', array());\n+            $cached_fonts = get_option('e2pdf_cached_fonts', []);\n             if ($this->get('fonts')) {\n-                $uncached_fonts = array();\n+                $uncached_fonts = [];\n                 foreach ($this->get('fonts') as $key => $value) {\n                     $md5 = $model_e2pdf_font->get_font($key, true);\n                     if ($md5 && in_array($md5, $cached_fonts, true)) {\n-                        $fonts[] = array(\n+                        $fonts[] = [\n                             'name' => $value,\n                             'md5' => $md5,\n                             'cache' => true,\n-                        );\n+                        ];\n                     } else {\n                         $uncached_fonts[] = $md5;\n-                        $fonts[] = array(\n+                        $fonts[] = [\n                             'name' => $value,\n                             'value' => $model_e2pdf_font->get_font($key),\n                             'cache' => true,\n-                        );\n+                        ];\n                     }\n                 }\n                 if (!empty($uncached_fonts)) {\n                     $model_e2pdf_api->set(\n-                            array(\n+                            [\n                                 'action' => 'cache\u002Ffonts',\n-                                'data' => array(\n+                                'data' => [\n                                     'fonts' => $uncached_fonts,\n-                                ),\n-                            )\n+                                ],\n+                            ]\n                     );\n                     $request = $model_e2pdf_api->request();\n                     if (isset($request['fonts']) && is_array($request['fonts'])) {\n@@ -693,17 +765,17 @@\n         } else {\n             if ($this->get('fonts')) {\n                 foreach ($this->get('fonts') as $key => $value) {\n-                    $fonts[] = array(\n+                    $fonts[] = [\n                         'name' => $value,\n                         'value' => $model_e2pdf_font->get_font($key),\n-                    );\n+                    ];\n                 }\n             }\n         }\n \n         $pages = $this->pre_render();\n \n-        $settings = array(\n+        $settings = [\n             'uid' => $this->get('uid'),\n             'activated' => $this->get('activated'),\n             'title' => $this->get_name(),\n@@ -731,7 +803,7 @@\n             'font_processor' => apply_filters('e2pdf_font_processor', $this->get('font_processor'), $this->get('ID')),\n             'created_at' => $this->get('created_at'),\n             'updated_at' => $this->get('updated_at'),\n-        );\n+        ];\n \n         if ($this->get('dpdf')) {\n             $dpdf = $this->helper->load('pdf')->get_pdf($this->get('dpdf'));\n@@ -747,12 +819,12 @@\n             }\n         }\n \n-        $data = array(\n+        $data = [\n             'settings' => $settings,\n             'pages' => $pages,\n             'fonts' => $fonts,\n-            'attachments' => $this->helper->load('attachments')->get_attachments($this->get('attachments'), $this->extension()),\n-        );\n+            'attachments' => $this->helper->load('attachments')->get_attachments($this->get('attachments'), $this->extension),\n+        ];\n \n         if ($type == 'php') {\n             $model_e2pdf_convert = new Model_E2pdf_Convert();\n@@ -764,8 +836,7 @@\n             $file .= 'return $template;' . PHP_EOL;\n             $file .= '}';\n             if ($file) {\n-                \u002F\u002F phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode\n-                $response['file'] = base64_encode($file);\n+                $response['file'] = $file;\n             } else {\n                 $response['error'] = __('Something went wrong!', 'e2pdf');\n             }\n@@ -777,39 +848,39 @@\n         $request = $this->helper->load('cache')->get_cached_pdf($cached_pdf);\n         if (empty($request['file'])) {\n             $model_e2pdf_api->set(\n-                    array(\n+                    [\n                         'action' => 'template\u002Fbuild',\n                         'data' => $data,\n-                    )\n+                    ]\n             );\n             $request = $model_e2pdf_api->request();\n         }\n \n         if (isset($request['error']) && $request['error'] == 'cache_error') {\n-            update_option('e2pdf_cached_fonts', array());\n-            $fonts = array();\n+            update_option('e2pdf_cached_fonts', []);\n+            $fonts = [];\n             if ($this->get('fonts')) {\n                 foreach ($this->get('fonts') as $key => $value) {\n-                    $fonts[] = array(\n+                    $fonts[] = [\n                         'name' => $value,\n                         'value' => $model_e2pdf_font->get_font($key),\n-                    );\n+                    ];\n                 }\n             }\n-            $data = array(\n+            $data = [\n                 'settings' => $settings,\n                 'pages' => $pages,\n                 'fonts' => $fonts,\n-            );\n+            ];\n             \u002F\u002F phpcs:ignore WordPress.WP.AlternativeFunctions.json_encode_json_encode\n             $cached_pdf = md5(json_encode($data));\n             $request = $this->helper->load('cache')->get_cached_pdf($cached_pdf);\n             if (empty($request['file'])) {\n                 $model_e2pdf_api->set(\n-                        array(\n+                        [\n                             'action' => 'template\u002Fbuild',\n                             'data' => $data,\n-                        )\n+                        ]\n                 );\n                 $request = $model_e2pdf_api->request();\n             }\n@@ -819,12 +890,11 @@\n     }\n \n     public function get_name() {\n+        $name = __('(no title)', 'e2pdf');\n         if ($this->get('name')) {\n             $name = $this->get('name');\n         } elseif ($this->get('title')) {\n             $name = $this->get('title');\n-        } else {\n-            $name = __('(no title)', 'e2pdf');\n         }\n         return $name;\n     }\n@@ -844,40 +914,40 @@\n     public function activate() {\n         if ($this->get('ID')) {\n             if ($this->get('activated', true)) {\n-                $request = array(\n+                $request = [\n                     'template_id' => $this->get('ID'),\n                     'template_uid' => $this->get('uid'),\n-                );\n+                ];\n             } else {\n                 $model_e2pdf_api = new Model_E2pdf_Api();\n                 $model_e2pdf_api->set(\n-                        array(\n+                        [\n                             'action' => 'template\u002Factivate',\n-                            'data' => array(\n+                            'data' => [\n                                 'template_id' => $this->get('ID'),\n                                 'template_uid' => $this->get('uid'),\n                                 'template_title' => $this->get('title'),\n                                 'template_extension' => $this->get('extension'),\n-                            ),\n-                        )\n+                            ],\n+                        ]\n                 );\n                 $request = $model_e2pdf_api->request();\n                 if (!isset($request['error'])) {\n                     $this->set('activated', '1');\n                     $this->set('uid', $request['template_uid']);\n-                    $this->update(array('activated', 'uid'));\n+                    $this->update(['activated', 'uid']);\n                 } else {\n                     $this->set('activated', '0');\n-                    $this->update(array('activated'));\n+                    $this->update(['activated']);\n                 }\n                 if ($this->helper->get('cache')) {\n                     wp_cache_delete($this->get('ID'), 'e2pdf_templates');\n                 }\n             }\n         } else {\n-            $request = array(\n+            $request = [\n                 'error' => __('Something went wrong!', 'e2pdf'),\n-            );\n+            ];\n         }\n         return $request;\n     }\n@@ -885,34 +955,93 @@\n     public function deactivate() {\n         if ($this->get('ID')) {\n             if (!$this->get('activated', true)) {\n-                $request = array(\n+                $request = [\n                     'success' => __('Template Deactivated', 'e2pdf'),\n-                );\n+                ];\n             } else {\n                 $model_e2pdf_api = new Model_E2pdf_Api();\n                 $model_e2pdf_api->set(\n-                        array(\n+                        [\n                             'action' => 'template\u002Fdeactivate',\n-                            'data' => array(\n+                            'data' => [\n                                 'template_id' => $this->get('ID'),\n                                 'template_uid' => $this->get('uid'),\n-                            ),\n-                        )\n+                            ],\n+                        ]\n                 );\n                 $request = $model_e2pdf_api->request();\n                 if (!isset($request['error'])) {\n                     $this->set('activated', '0');\n-                    $this->update(array('activated'));\n+                    $this->update(['activated']);\n                 }\n                 if ($this->helper->get('cache')) {\n                     wp_cache_delete($this->get('ID'), 'e2pdf_templates');\n                 }\n             }\n         } else {\n-            $request = array(\n+            $request = [\n                 'error' => __('Something went wrong!', 'e2pdf'),\n-            );\n+            ];\n         }\n         return $request;\n     }\n+\n+    public function patch($key, $value = false, $entry = null, $filter = false) {\n+        if ($value !== false) {\n+            $this->set($key, $filter ? $this->extension()->convert_shortcodes($value, true) : $this->extension()->render($value));\n+            if ($entry) {\n+                $entry->set_data($key, $this->get($key));\n+            }\n+        } else {\n+            switch ($key) {\n+                case 'meta_title':\n+                case 'meta_subject':\n+                case 'meta_author':\n+                case 'meta_keywords':\n+                    $value = $this->extension()->render(\n+                            $this->helper->load('translator')->pre_translate(\n+                                    $this->get($key), $this->get('ID'), $key, 'template'\n+                            )\n+                    );\n+                    $this->set($key, $value);\n+                    break;\n+                case 'name':\n+                    if ($this->get('name')) {\n+                        $value = $this->extension()->render(\n+                                $this->helper->load('translator')->pre_translate(\n+                                        $this->get('name'), $this->get('ID'), 'name', 'template'\n+                                )\n+                        );\n+                    }\n+                    if (!trim($value) && $this->get('title')) {\n+                        $value = $this->extension()->render(\n+                                $this->helper->load('translator')->pre_translate(\n+                                        $this->get('title'), $this->get('ID'), 'title', 'template'\n+                                )\n+                        );\n+                    }\n+                    if (!trim($value)) {\n+                        $value = __('(no title)', 'e2pdf');\n+                    }\n+                    $this->set($key, $value);\n+                    break;\n+                case 'savename':\n+                    if ($this->get('savename')) {\n+                        $value = $this->extension()->render(\n+                                $this->helper->load('translator')->pre_translate(\n+                                        $this->get('savename'), $this->get('ID'), 'savename', 'template'\n+                                )\n+                        );\n+                    }\n+                    if (!trim($value)) {\n+                        $value = $this->get('name');\n+                    }\n+                    $this->set($key, $value);\n+                    break;\n+                default:\n+                    $this->set($key, $this->extension()->render($this->get($key)));\n+                    break;\n+            }\n+        }\n+    }\n }\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fview\u002Fblocks\u002Fwysiwyg.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fview\u002Fblocks\u002Fwysiwyg.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fview\u002Fblocks\u002Fwysiwyg.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fview\u002Fblocks\u002Fwysiwyg.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -22,67 +22,80 @@\n                 \u003Ci class=\"dashicons dashicons-welcome-add-page\">\u003C\u002Fi> \n             \u003C\u002Fa>\n         \u003C\u002Fli>\u003Cli>\n-            \u003C!-- undo -->\n-            \u003Ca title=\"\u003C?php _e('Undo', 'e2pdf'); ?>\" href=\"javascript:void(0);\"  class=\"ed_button e2pdf-apply-wysiwyg button button-small\" data-command='undo'>\n+            \u003Ca title=\"\u003C?php _e('Undo Changes', 'e2pdf'); ?>\" href=\"javascript:void(0);\"  class=\"ed_button button button-small e2pdf-undo e2pdf-inactive\">\n                 \u003Ci class=\"dashicons dashicons-undo\">\u003C\u002Fi>\n-            \u003C\u002Fa>\u003Ca title=\"\u003C?php _e('Redo', 'e2pdf'); ?>\" href=\"javascript:void(0);\"  class=\"ed_button e2pdf-apply-wysiwyg button button-small\" data-command='redo'>\n-                \u003Ci class=\"dashicons dashicons-redo\">\u003C\u002Fi>\n-            \u003C\u002Fa>\u003Ca title=\"\u003C?php _e('Clear Style', 'e2pdf'); ?>\" href=\"javascript:void(0);\"  class=\"ed_button e2pdf-apply-wysiwyg button button-small\" data-command='clear'>\n+            \u003C\u002Fa>\n+        \u003C\u002Fli>\u003Cli>\n+            \u003Ca title=\"\u003C?php _e('Clear Style', 'e2pdf'); ?>\" href=\"javascript:void(0);\"  class=\"ed_button e2pdf-apply-wysiwyg e2pdf-apply-wysiwyg-selection button button-small e2pdf-inactive\" data-command='clear'>\n                 \u003Ci class=\"dashicons dashicons-editor-removeformatting\">\u003C\u002Fi>\n             \u003C\u002Fa>\n         \u003C\u002Fli>\u003Cli>\n             \u003Cdiv class=\"e2pdf-wysiwyg-color\">\n-                \u003Ca title=\"\u003C?php _e('Color', 'e2pdf'); ?>\" href=\"javascript:void(0);\" class=\"ed_button button button-small e2pdf-apply-wysiwyg-color\">\n+                \u003Ca title=\"\u003C?php _e('Color', 'e2pdf'); ?>\" href=\"javascript:void(0);\" class=\"ed_button button button-small e2pdf-apply-wysiwyg e2pdf-apply-wysiwyg-color e2pdf-apply-wysiwyg-selection e2pdf-inactive\">\n                     \u003Ci class=\"dashicons dashicons-editor-textcolor\">\u003C\u002Fi>\n                 \u003C\u002Fa>\n                 \u003Cdiv class=\"e2pdf-colorpicker-wr\">\n-                    \u003Cinput data-command='color' type=\"text\" class=\"e2pdf-wysiwyg-font-color e2pdf-color-picker e2pdf-color-picker-load\" value=\"\">\n+                    \u003Cinput data-command='color' type=\"text\" class=\"e2pdf-apply-wysiwyg-change e2pdf-wysiwyg-font-color e2pdf-color-picker e2pdf-color-picker-load\" value=\"\">\n                 \u003C\u002Fdiv>\n-            \u003C\u002Fdiv>\u003Ca title=\"\u003C?php _e('Bold', 'e2pdf'); ?>\" href=\"javascript:void(0);\" class=\"ed_button e2pdf-apply-wysiwyg button button-small\" data-command='bold'>\n+            \u003C\u002Fdiv>\u003Ca title=\"\u003C?php _e('Bold', 'e2pdf'); ?>\" href=\"javascript:void(0);\" class=\"ed_button e2pdf-apply-wysiwyg e2pdf-apply-wysiwyg-selection button button-small e2pdf-inactive\" data-command='bold'>\n                 \u003Ci class=\"dashicons dashicons-editor-bold\">\u003C\u002Fi>\n-            \u003C\u002Fa>\u003Ca title=\"\u003C?php _e('Italic', 'e2pdf'); ?>\" href=\"javascript:void(0);\" class=\"ed_button e2pdf-apply-wysiwyg button button-small\" data-command='italic'>\n+            \u003C\u002Fa>\u003Ca title=\"\u003C?php _e('Italic', 'e2pdf'); ?>\" href=\"javascript:void(0);\" class=\"ed_button e2pdf-apply-wysiwyg  e2pdf-apply-wysiwyg-selection button button-small e2pdf-inactive\" data-command='italic'>\n                 \u003Ci class=\"dashicons dashicons-editor-italic\">\u003C\u002Fi>\n-            \u003C\u002Fa>\u003Ca title=\"\u003C?php _e('Underline', 'e2pdf'); ?>\" href=\"javascript:void(0);\" class=\"ed_button e2pdf-apply-wysiwyg button button-small\" data-command='underline'>\n+            \u003C\u002Fa>\u003Ca title=\"\u003C?php _e('Underline', 'e2pdf'); ?>\" href=\"javascript:void(0);\" class=\"ed_button e2pdf-apply-wysiwyg e2pdf-apply-wysiwyg-selection button button-small e2pdf-inactive\" data-command='underline'>\n                 \u003Ci class=\"dashicons dashicons-editor-underline\">\u003C\u002Fi>\n-            \u003C\u002Fa>\u003Ca title=\"\u003C?php _e('Strike Through', 'e2pdf'); ?>\" href=\"javascript:void(0);\" class=\"ed_button e2pdf-apply-wysiwyg button button-small\" data-command='strikeThrough'>\n+            \u003C\u002Fa>\u003Ca title=\"\u003C?php _e('Strike Through', 'e2pdf'); ?>\" href=\"javascript:void(0);\" class=\"ed_button e2pdf-apply-wysiwyg e2pdf-apply-wysiwyg-selection button button-small e2pdf-inactive\" data-command='strikeThrough'>\n                 \u003Ci class=\"dashicons dashicons-editor-strikethrough\">\u003C\u002Fi>\n             \u003C\u002Fa>\n \n-        \u003C\u002Fli>\u003Cli>\u003Ca title=\"\u003C?php _e('Align Left', 'e2pdf'); ?>\" href=\"javascript:void(0);\" class=\"ed_button e2pdf-apply-wysiwyg button button-small\" data-command='justifyLeft'>\n+        \u003C\u002Fli>\u003Cli>\u003Ca title=\"\u003C?php _e('Align Left', 'e2pdf'); ?>\" href=\"javascript:void(0);\" class=\"ed_button e2pdf-apply-wysiwyg button button-small e2pdf-inactive\" data-command='justifyLeft'>\n                 \u003Ci class=\"dashicons dashicons-editor-alignleft\">\u003C\u002Fi>\n-            \u003C\u002Fa>\u003Ca title=\"\u003C?php _e('Align Center', 'e2pdf'); ?>\" href=\"javascript:void(0);\" class=\"ed_button e2pdf-apply-wysiwyg button button-small\" data-command='justifyCenter'>\n+            \u003C\u002Fa>\u003Ca title=\"\u003C?php _e('Align Center', 'e2pdf'); ?>\" href=\"javascript:void(0);\" class=\"ed_button e2pdf-apply-wysiwyg button button-small e2pdf-inactive\" data-command='justifyCenter'>\n                 \u003Ci class=\"dashicons dashicons-editor-aligncenter\">\u003C\u002Fi>\n-            \u003C\u002Fa>\u003Ca title=\"\u003C?php _e('Align Right', 'e2pdf'); ?>\" href=\"javascript:void(0);\" class=\"ed_button e2pdf-apply-wysiwyg button button-small\" data-command='justifyRight'>\n+            \u003C\u002Fa>\u003Ca title=\"\u003C?php _e('Align Right', 'e2pdf'); ?>\" href=\"javascript:void(0);\" class=\"ed_button e2pdf-apply-wysiwyg button button-small e2pdf-inactive\" data-command='justifyRight'>\n                 \u003Ci class=\"dashicons dashicons-editor-alignright\">\u003C\u002Fi>\n             \u003C\u002Fa>\n         \u003C\u002Fli>\u003Cli>\n             \u003C!-- UL -->\n-            \u003Ca title=\"\u003C?php _e('Unordered List', 'e2pdf'); ?>\" href=\"javascript:void(0);\" class=\"ed_button e2pdf-apply-wysiwyg button button-small\" data-command='insertUnorderedList'>\n+            \u003Ca title=\"\u003C?php _e('Unordered List', 'e2pdf'); ?>\" href=\"javascript:void(0);\" class=\"ed_button e2pdf-apply-wysiwyg button button-small e2pdf-inactive\" data-command='insertUnorderedList'>\n                 \u003Ci class=\"dashicons dashicons-editor-ul\">\u003C\u002Fi>\n-            \u003C\u002Fa>\u003Ca title=\"\u003C?php _e('Ordered List', 'e2pdf'); ?>\" href=\"javascript:void(0);\" class=\"ed_button e2pdf-apply-wysiwyg button button-small\" data-command='insertOrderedList'>\n+            \u003C\u002Fa>\u003Ca title=\"\u003C?php _e('Ordered List', 'e2pdf'); ?>\" href=\"javascript:void(0);\" class=\"ed_button e2pdf-apply-wysiwyg button button-small e2pdf-inactive\" data-command='insertOrderedList'>\n                 \u003Ci class=\"dashicons dashicons-editor-ol\">\u003C\u002Fi>\n             \u003C\u002Fa>\n-        \u003C\u002Fli>\u003Cli>\u003Ca title=\"\u003C?php _e('Heading H1', 'e2pdf'); ?>\" href=\"javascript:void(0);\" class=\"ed_button e2pdf-apply-wysiwyg button button-small\" data-command='H1'>\n+        \u003C\u002Fli>\u003Cli>\u003Ca title=\"\u003C?php _e('Heading H1', 'e2pdf'); ?>\" href=\"javascript:void(0);\" class=\"ed_button e2pdf-apply-wysiwyg e2pdf-apply-wysiwyg-selection button button-small e2pdf-inactive\" data-command='H1'>\n                 \u003Ci class=\"dashicons dashicons-heading\">\u003C\u002Fi>1\n-            \u003C\u002Fa>\u003Ca title=\"\u003C?php _e('Heading H2', 'e2pdf'); ?>\" href=\"javascript:void(0);\" class=\"ed_button e2pdf-apply-wysiwyg button button-small\" data-command='H2'>\n+            \u003C\u002Fa>\u003Ca title=\"\u003C?php _e('Heading H2', 'e2pdf'); ?>\" href=\"javascript:void(0);\" class=\"ed_button e2pdf-apply-wysiwyg e2pdf-apply-wysiwyg-selection button button-small e2pdf-inactive\" data-command='H2'>\n                 \u003Ci class=\"dashicons dashicons-heading\">\u003C\u002Fi>2\n             \u003C\u002Fa>\n-        \u003C\u002Fli>\u003Cli>\u003Ca title=\"\u003C?php _e('Link', 'e2pdf'); ?>\" href=\"javascript:void(0);\" class=\"ed_button e2pdf-apply-wysiwyg button button-small\" data-command='createlink'>\n+        \u003C\u002Fli>\u003Cli>\u003Ca title=\"\u003C?php _e('Link', 'e2pdf'); ?>\" href=\"javascript:void(0);\" class=\"ed_button e2pdf-apply-wysiwyg button button-small e2pdf-inactive\" data-command='createlink'>\n                 \u003Ci class=\"dashicons dashicons-admin-links\">\u003C\u002Fi>\n-            \u003C\u002Fa>\u003Ca title=\"\u003C?php _e('Unlink', 'e2pdf'); ?>\" href=\"javascript:void(0);\" class=\"ed_button e2pdf-apply-wysiwyg button button-small\" data-command='unlink'>\n+            \u003C\u002Fa>\u003Ca title=\"\u003C?php _e('Unlink', 'e2pdf'); ?>\" href=\"javascript:void(0);\" class=\"ed_button e2pdf-apply-wysiwyg e2pdf-apply-wysiwyg-selection button button-small e2pdf-inactive\" data-command='unlink'>\n                 \u003Ci class=\"dashicons dashicons-editor-unlink\">\u003C\u002Fi>\n             \u003C\u002Fa>\n         \u003C\u002Fli>\n-        \u003Cli>\u003Ca title=\"\u003C?php _e('Table', 'e2pdf'); ?>\" href=\"javascript:void(0);\" class=\"ed_button button button-small e2pdf-wysiwyg-table\">\n+        \u003Cli>\u003Ca title=\"\u003C?php _e('Table', 'e2pdf'); ?>\" href=\"javascript:void(0);\" class=\"ed_button button button-small e2pdf-apply-wysiwyg e2pdf-wysiwyg-table e2pdf-inactive\">\n                 \u003Ci class=\"dashicons dashicons-editor-table\">\u003C\u002Fi>\n             \u003C\u002Fa>\u003Cdiv class=\"e2pdf-wysiwyg-table-grid e2pdf-hide\">\u003C\u002Fdiv>\n         \u003C\u002Fli>\n         \u003Cli>\n+            \u003Clabel>\u003C?php _e('Font', 'e2pdf'); ?>:\u003C\u002Flabel>\n+            \u003C?php\n+            $this->render('field', 'select', array(\n+                'field' => array(\n+                    'class' => 'e2pdf-apply-wysiwyg-change e2pdf-apply-wysiwyg-selection e2pdf-wysiwyg-font e2pdf-inactive',\n+                    'data-command' => 'font',\n+                    'disabled' => 'disabled',\n+                ),\n+                'value' => '',\n+                'empty' => '-',\n+                'options' => $this->controller->get_fonts(true),\n+            ));\n+            ?>\n             \u003Clabel>\u003C?php _e('Font Size', 'e2pdf'); ?>:\u003C\u002Flabel>\n             \u003C?php\n             $this->render('field', 'select', array(\n                 'field' => array(\n-                    'class' => 'e2pdf-wysiwyg-fontsize',\n+                    'class' => 'e2pdf-apply-wysiwyg-change e2pdf-apply-wysiwyg-selection e2pdf-wysiwyg-fontsize e2pdf-inactive',\n+                    'disabled' => 'disabled',\n                     'data-command' => 'font-size'\n                 ),\n                 'value' => '',\n@@ -90,16 +103,17 @@\n                 'options' => $this->controller->get_font_sizes(),\n             ));\n             ?>\n-            \u003Clabel>\u003C?php _e('Font', 'e2pdf'); ?>:\u003C\u002Flabel>\n+            \u003Clabel>\u003C?php _e('Line Height', 'e2pdf'); ?>:\u003C\u002Flabel>\n             \u003C?php\n             $this->render('field', 'select', array(\n                 'field' => array(\n-                    'class' => 'e2pdf-wysiwyg-font',\n-                    'data-command' => 'font'\n+                    'class' => 'e2pdf-apply-wysiwyg-change e2pdf-apply-wysiwyg-selection e2pdf-wysiwyg-lineheight e2pdf-inactive',\n+                    'disabled' => 'disabled',\n+                    'data-command' => 'line-height'\n                 ),\n                 'value' => '',\n                 'empty' => '-',\n-                'options' => $this->controller->get_fonts(true),\n+                'options' => $this->controller->get_line_heights(),\n             ));\n             ?>\n         \u003C\u002Fli>\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fview\u002Ffield\u002Fgroup.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fview\u002Ffield\u002Fgroup.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fview\u002Ffield\u002Fgroup.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fview\u002Ffield\u002Fgroup.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -34,6 +34,17 @@\n                             'value' => $option_value['value'],\n                             'prefield' => isset($option_value['prefield']) ? $option_value['prefield'] : '',\n                         ));\n+                    } elseif ($option_value['type'] == 'password') {\n+                        $this->render('field', 'password', array(\n+                            'field' => array(\n+                                'name' => isset($option_value['key']) ? $option_value['key'] : '',\n+                                'placeholder' => isset($option_value['placeholder']) ? $option_value['placeholder'] : '',\n+                                'class' => isset($option_value['class']) ? 'e2pdf-w100 ' . $option_value['class'] : 'e2pdf-w100',\n+                                'readonly' => isset($option_value['readonly']) ? $option_value['readonly'] : false,\n+                            ),\n+                            'value' => $option_value['value'],\n+                            'prefield' => isset($option_value['prefield']) ? $option_value['prefield'] : '',\n+                        ));\n                     } elseif ($option_value['type'] == 'textarea') {\n                         $this->render('field', 'textarea', array(\n                             'field' => array(\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fview\u002Ffield: password.php\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -254,7 +254,7 @@\n                 \u003C\u002Fdiv>\n                 \u003Cp class=\"post-attributes-label-wrapper\">\n                     \u003Clabel>\n-                        \u003C?php _e('JPG Output Resolution', 'e2pdf'); ?>:\n+                        \u003C?php _e('JPG Format Output Size', 'e2pdf'); ?>:\n                     \u003C\u002Flabel>\n                 \u003C\u002Fp>\n                 \u003Cdiv>\n@@ -266,11 +266,15 @@\n                         ),\n                         'value' => $this->view->template->get('resample'),\n                         'options' => array(\n-                            '100' => '72dpi',\n-                            '125' => '90dpi',\n-                            '150' => '108dpi',\n-                            '175' => '126dpi',\n-                            '200' => '144dpi',\n+                            '100' => '100%',\n+                            '125' => '125%',\n+                            '150' => '150%',\n+                            '175' => '175%',\n+                            '200' => '200%',\n+                            '225' => '225%',\n+                            '250' => '250%',\n+                            '275' => '275%',\n+                            '300' => '300%',\n                         ),\n                     ));\n                     ?>\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fview\u002Fpage-e2pdf-debug.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fview\u002Fpage-e2pdf-debug.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fview\u002Fpage-e2pdf-debug.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fview\u002Fpage-e2pdf-debug.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -117,18 +117,25 @@\n                     \u003C?php } ?> \n                 \u003C\u002Fli>\n                 \u003Cli>\n+                    \u003C?php if (class_exists('XMLReader')) { ?>\n+                        \u003Cspan class=\"e2pdf-color-green\">[OK]\u003C\u002Fspan>\n+                    \u003C?php } else { ?>\n+                        \u003Cspan class=\"e2pdf-color-red\">\u003C?php _e('[ERROR]', 'e2pdf'); ?>\u003C\u002Fspan>\n+                    \u003C?php } ?> XMLReader\n+                \u003C\u002Fli>\n+                \u003Cli>\n                     \u003C?php if (extension_loaded('simplexml')) { ?>\n                         \u003Cspan class=\"e2pdf-color-green\">[OK]\u003C\u002Fspan>\n                     \u003C?php } else { ?>\n                         \u003Cspan class=\"e2pdf-color-red\">\u003C?php _e('[ERROR]', 'e2pdf'); ?>\u003C\u002Fspan>\n-                    \u003C?php } ?> SIMPLEXML\n+                    \u003C?php } ?> SimpleXML\n                 \u003C\u002Fli>\n                 \u003Cli>\n                     \u003C?php if (extension_loaded('libxml')) { ?>\n                         \u003Cspan class=\"e2pdf-color-green\">[OK]\u003C\u002Fspan>\n                     \u003C?php } else { ?>\n                         \u003Cspan class=\"e2pdf-color-red\">\u003C?php _e('[ERROR]', 'e2pdf'); ?>\u003C\u002Fspan>\n-                    \u003C?php } ?> LIBXML\n+                    \u003C?php } ?> LibXML\n                 \u003C\u002Fli>\n                 \u003Cli>\n                     \u003C?php if (extension_loaded('Dom')) { ?>\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fview\u002Fpage-e2pdf-integrations.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fview\u002Fpage-e2pdf-integrations.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fview\u002Fpage-e2pdf-integrations.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fview\u002Fpage-e2pdf-integrations.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -29,13 +29,19 @@\n                         \u003C?php } ?>\n                         \u003Cinput type=\"hidden\" name=\"_wpnonce\" value=\"\u003C?php echo wp_create_nonce('e2pdf_integrations'); ?>\">\n                         \u003Cul class=\"e2pdf-options-list\">\n+                            \u003C?php if (!$this->get->get('action')) { ?>\n+                                \u003Cli>\n+                                    \u003Cdiv class=\"e2pdf-name\">Zapier App:\u003C\u002Fdiv>\u003Cdiv class=\"e2pdf-value\">\n+                                        \u003Ca target=\"_blank\" href=\"https:\u002F\u002Fzapier.com\u002Fdeveloper\u002Fpublic-invite\u002F214896\u002F76ba60a93b9a47be4156be6bb77b6ce9\u002F\">https:\u002F\u002Fzapier.com\u002Fdeveloper\u002Fpublic-invite\u002F214896\u002F76ba60a93b9a47be4156be6bb77b6ce9\u002F\u003C\u002Fa>\n+                                    \u003C\u002Fdiv>\n+                                \u003C\u002Fli>\n+                            \u003C?php } ?>\n                             \u003C?php\n                             $this->render('field', 'group', array(\n                                 'groups' => $this->view->options\n                             ));\n                             ?>\n                         \u003C\u002Ful>\n-\n                         \u003C?php if ($this->get->get('action')) { ?>\n                             \u003C?php submit_button(); ?>\n                         \u003C?php } ?>\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fview\u002Fpage-e2pdf.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fview\u002Fpage-e2pdf.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fview\u002Fpage-e2pdf.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fview\u002Fpage-e2pdf.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -9,7 +9,7 @@\n     \u003C?php $this->render('blocks', 'notifications'); ?>\n     \u003Ch3 class=\"nav-tab-wrapper wp-clearfix\">\n         \u003Ca href=\"\u003C?php echo $this->helper->get_url(array('page' => 'e2pdf')); ?>\" class=\"nav-tab \u003C?php if (!($this->get->get('action'))) { ?>nav-tab-active\u003C?php } ?>\">\u003C?php echo _e('Create PDF', 'e2pdf'); ?>\u003C\u002Fa>\n-        \u003Ca href=\"\u003C?php echo $this->helper->get_url(array('page' => 'e2pdf', 'action' => 'bulk')); ?>\" class=\"nav-tab \u003C?php if ($this->get->get('action') == 'bulk') { ?>nav-tab-active\u003C?php } ?>\">\u003C?php _e('Create PDFs in Bulk', 'e2pdf'); ?>\u003C\u002Fa>\n+        \u003Ca href=\"\u003C?php echo $this->helper->get_url(array('page' => 'e2pdf', 'action' => 'bulk')); ?>\" class=\"nav-tab \u003C?php if ($this->get->get('action') == 'bulk') { ?>nav-tab-active\u003C?php } ?>\">\u003C?php _e('Bulk Create PDFs', 'e2pdf'); ?>\u003C\u002Fa>\n     \u003C\u002Fh3>\n \n     \u003C?php if (!$this->get->get('action')) { ?>\n@@ -50,6 +50,7 @@\n                             $this->render('field', 'text', array(\n                                 'field' => array(\n                                     'class' => 'e2pdf-w100 e2pdf-select2',\n+                                    'disabled' => 'disabled',\n                                     'placeholder' => __('--- Select ---', 'e2pdf'),\n                                 ),\n                             ));\n@@ -283,6 +284,7 @@\n                             $this->render('field', 'text', array(\n                                 'field' => array(\n                                     'class' => 'e2pdf-w100 e2pdf-select2',\n+                                    'disabled' => 'disabled',\n                                     'placeholder' => __('--- Select ---', 'e2pdf'),\n                                 ),\n                             ));\n@@ -351,13 +353,13 @@\n                             \u003C\u002Fdiv>\n                             \u003Cdiv class=\"e2pdf-grid\">\n                                 \u003Cdiv class=\"e2pdf-ib e2pdf-w30 e2pdf-pr10\">\n-                                    \u003C?php _e('PDF Local Name', 'e2pdf'); ?>:\n+                                    \u003C?php _e('PDF Name', 'e2pdf'); ?>:\n                                 \u003C\u002Fdiv>\u003Cdiv class=\"e2pdf-ib e2pdf-w70 e2pdf-pl10\">\n                                     \u003C?php\n                                     $this->render('field', 'text', array(\n                                         'field' => array(\n                                             'name' => 'options[savename]',\n-                                            'placeholder' => __('PDF Local Name', 'e2pdf'),\n+                                            'placeholder' => __('PDF Name', 'e2pdf'),\n                                             'class' => 'e2pdf-w100 e2pdf-export-option'\n                                         ),\n                                         'value' => '',\n@@ -464,7 +466,7 @@\n                     \u003C\u002Fdiv>\n                 \u003C\u002Fdiv>\n                 \u003Cdiv class=\"e2pdf-center\">\n-                    \u003Cinput type=\"button\" form-id=\"e2pdf-export-form\"  action=\"e2pdf_bulk_create\" disabled=\"disabled\" class=\"e2pdf-submit-form e2pdf-export-form-submit button-primary button-large\" value=\"\u003C?php _e('Create PDFs in Bulk', 'e2pdf'); ?>\" _wpnonce=\"\u003C?php echo wp_create_nonce('e2pdf'); ?>\">\n+                    \u003Cinput type=\"button\" form-id=\"e2pdf-export-form\"  action=\"e2pdf_bulk_create\" disabled=\"disabled\" class=\"e2pdf-submit-form e2pdf-export-form-submit button-primary button-large\" value=\"\u003C?php _e('Bulk Create PDFs', 'e2pdf'); ?>\" _wpnonce=\"\u003C?php echo wp_create_nonce('e2pdf'); ?>\">\n                 \u003C\u002Fdiv>\n             \u003C\u002Fform>\n         \u003C\u002Fdiv>\n@@ -489,7 +491,7 @@\n                                 \u003C?php echo $bulk->get('template_id'); ?>\n                             \u003C?php } ?>\n                         \u003C\u002Fdiv>\u003Cdiv class=\"e2pdf-ib e2pdf-w20\">\n-                            \u003Cspan class=\"e2pdf-bulk-count\">\u003C?php echo $bulk->get('count'); ?>\u003C\u002Fspan>\u002F\u003C?php echo $bulk->get('total'); ?>\u003C\u002Fdiv>\u003Cdiv class=\"e2pdf-ib e2pdf-w10\">\n+                            \u003Cspan class=\"spinner is-active\">\u003C\u002Fspan>\u003Cspan class=\"e2pdf-bulk-count\">\u003C?php echo $bulk->get('count'); ?>\u003C\u002Fspan>\u002F\u003C?php echo $bulk->get('total'); ?>\u003C\u002Fdiv>\u003Cdiv class=\"e2pdf-ib e2pdf-w10\">\n                             \u003C?php if ($bulk->get('status') == 'completed') { ?>\n                                 \u003Ca class=\"e2pdf-link\" href=\"\u003C?php echo $this->helper->get_url(array('page' => 'e2pdf', 'action' => 'bulk', 'uid' => $bulk->get('uid'))); ?>\">\u003Ci class=\"dashicons dashicons-download\">\u003C\u002Fi>\u003C\u002Fa>\n                             \u003C?php } ?>\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fview\u002Fpage-e2pdf-settings.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fview\u002Fpage-e2pdf-settings.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fview\u002Fpage-e2pdf-settings.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fview\u002Fpage-e2pdf-settings.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -7,6 +7,11 @@\n     \u003Ch1>\u003C?php _e('Settings', 'e2pdf'); ?>\u003C\u002Fh1>\n     \u003Chr class=\"wp-header-end\">\n     \u003C?php $this->render('blocks', 'notifications'); ?>\n+    \u003C?php if ($this->get->get('group') == 'woocommerce_group') { ?>\n+        \u003Cdiv id=\"message\" class=\"e2pdf-notice notice notice-warning\">\n+            \u003Cp>\u003C?php _e(\"It's recommended to use the Integration Hooks in the E2Pdf Template settings instead\", 'e2pdf'); ?>\u003C\u002Fp>\n+        \u003C\u002Fdiv>\n+    \u003C?php } ?>\n     \u003Ch3 class=\"nav-tab-wrapper wp-clearfix\">\n         \u003C?php foreach ($this->view->groups as $group_key => $group) { ?>\n             \u003C?php if (isset($group['action']) && isset($group['group'])) { ?>\n@@ -28,8 +33,8 @@\n                         \u003Cli>\n                             \u003Cdiv class=\"e2pdf-name\">\u003C?php _e('Font', 'e2pdf'); ?>:\n                             \u003C\u002Fdiv>\u003Cdiv class=\"e2pdf-value\">\n-                                \u003Cinput name=\"font\" type=\"file\">\n-                                \u003Cdiv class=\"e2pdf-note\">\u003C?php _e('Allowed File Types', 'e2pdf'); ?>: \u003Cstrong>\u003C?php echo implode(', ', $this->view->allowed_extensions); ?>\u003C\u002Fstrong>\u003C\u002Fdiv>\n+                                \u003Cinput name=\"font\" type=\"file\" accept=\".\u003C?php echo esc_attr(implode(', .', $this->view->allowed_extensions)); ?>\">\n+                                \u003Cdiv class=\"e2pdf-note\">\u003C?php _e('Allowed File Types', 'e2pdf'); ?>: \u003Cstrong>.\u003C?php echo implode(', .', $this->view->allowed_extensions); ?>\u003C\u002Fstrong>\u003C\u002Fdiv>\n                                 \u003Cdiv class=\"e2pdf-note\">\u003C?php _e('Max Upload File Size', 'e2pdf'); ?>: \u003Cstrong>\u003C?php echo $this->view->upload_max_filesize; ?>\u003C\u002Fstrong>\u003C\u002Fdiv>\n                             \u003C\u002Fdiv>\n                         \u003C\u002Fli>\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fview\u002Fpage-e2pdf-templates.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fview\u002Fpage-e2pdf-templates.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fclasses\u002Fview\u002Fpage-e2pdf-templates.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fclasses\u002Fview\u002Fpage-e2pdf-templates.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -384,7 +384,7 @@\n                     \u003Cinput type=\"hidden\" name=\"_wpnonce\" value=\"\u003C?php echo wp_create_nonce('e2pdf_templates'); ?>\">\n                     \u003Cul class=\"e2pdf-options-list\">\n                         \u003Cli>\u003Cdiv class=\"e2pdf-name\">\u003C?php _e('Template', 'e2pdf'); ?>:\n-                            \u003C\u002Fdiv>\u003Cdiv class=\"e2pdf-value\">\u003Cinput name=\"template\" type=\"file\">\n+                            \u003C\u002Fdiv>\u003Cdiv class=\"e2pdf-value\">\u003Cinput name=\"template\" type=\"file\" accept=\".xml\">\n                                 \u003Cdiv class=\"e2pdf-note\">\u003C?php _e('Allowed File Types', 'e2pdf'); ?>: \u003Cstrong>.xml\u003C\u002Fstrong>\u003C\u002Fdiv>\n                                 \u003Cdiv class=\"e2pdf-note\">\u003C?php _e('Max Upload File Size', 'e2pdf'); ?>: \u003Cstrong>\u003C?php echo $this->view->upload_max_filesize; ?>\u003C\u002Fstrong>\u003C\u002Fdiv>\n                             \u003C\u002Fdiv>\n@@ -435,7 +435,7 @@\n                                             $this->render('field', 'select', array(\n                                                 'field' => array(\n                                                     'name' => $option_value['key'],\n-                                                    'class' => 'e2pdf-w100'\n+                                                    'class' => $option_value['key'] == 'options[overwrite]' ? 'e2pdf-import-overwrite e2pdf-w100' : 'e2pdf-w100'\n                                                 ),\n                                                 'value' => $option_value['value'],\n                                                 'options' => $option_value['options']\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fcss\u002Fe2pdf.backend.css \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fcss\u002Fe2pdf.backend.css\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fcss\u002Fe2pdf.backend.css\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fcss\u002Fe2pdf.backend.css\t2026-02-24 09:27:28.000000000 +0000\n@@ -529,6 +529,7 @@\n     -webkit-box-shadow: 0 1px 1px rgba(0,0,0,.04);\n     box-shadow: 0 1px 1px rgba(0,0,0,.04);\n     padding: 24px 24px;\n+    border-radius: 24px;\n     margin-bottom: 0;\n     -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n@@ -616,8 +617,8 @@\n .e2pdf-dialog .ui-button.ui-dialog-titlebar-close:active,\n .e2pdf-dialog .ui-button.ui-dialog-titlebar-close:focus\n {\n-    font-size: 20px;\n-    line-height: 20px;\n+    font-size: 20px !important;\n+    line-height: 20px !important;\n     background: none;\n     padding: 0;\n     border: 0;\n@@ -2297,6 +2298,10 @@\n     background: #e5e5e5;\n }\n \n+.e2pdf-select2[disabled=\"disabled\"], .e2pdf-select2.e2pdf-select2-loading {\n+    background: #eee;\n+}\n+\n .e2pdf-loading,\n .e2pdf-loading * {\n     cursor: wait !important;\n@@ -2381,6 +2386,31 @@\n     }\n }\n \n+input[type=checkbox].e2pdf-checkbox:checked::before {\n+    content: \"\";\n+    background-image: url(data:image\u002Fsvg+xml;utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.83%204.89l1.34.94-5.81%208.38H9.02L5.78%209.67l1.34-1.25%202.57%202.4z%27%20fill%3D%27%233582c4%27%2F%3E%3C%2Fsvg%3E);\n+    margin: 0;\n+    height: 100%;\n+    width: 100%;\n+    background-size: contain;\n+    background-repeat: no-repeat;\n+    background-position: center;\n+\n+}\n+\n+.e2pdf-bulk .spinner {\n+    margin: 0;\n+    margin-right: 5px;\n+    margin-top: -2px;\n+    padding: 0;\n+    float: none;\n+    display: none;\n+}\n+\n+.e2pdf-bulk[status=\"pending\"]  .spinner {\n+    display: inline-block;\n+}\n+\n @media screen and (max-width: 782px) {\n     .wp-list-table.e2pdf-templates-list tr:not(.inline-edit-row):not(.no-items) td.column-id, .wp-list-table .is-expanded td.column-id {\n         display: table-cell !important;\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fcss\u002Fe2pdf.backend.global.css \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fcss\u002Fe2pdf.backend.global.css\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fcss\u002Fe2pdf.backend.global.css\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fcss\u002Fe2pdf.backend.global.css\t2026-02-24 09:27:28.000000000 +0000\n@@ -1,4 +1,5 @@\n-.post-type-shop_order .wp-list-table .column-wc_actions a.button.e2pdf-wc-download-button:after {\n+.post-type-shop_order .wp-list-table .column-wc_actions a.button.e2pdf-wc-download-button:after,\n+.post-type-shop_subscription .wp-list-table .column-wc_actions a.button.e2pdf-wc-download-button:after {\n     content: \"\\f190\"\n }\n \ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fcss\u002Fe2pdf.frontend.global.css \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fcss\u002Fe2pdf.frontend.global.css\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fcss\u002Fe2pdf.frontend.global.css\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fcss\u002Fe2pdf.frontend.global.css\t2026-02-24 09:27:28.000000000 +0000\n@@ -2,7 +2,8 @@\n a.e2pdf-download-progress:focus,\n a.e2pdf-download-progress:link,\n a.e2pdf-download-progress:visited,\n-a.e2pdf-download-progress:hover\n+a.e2pdf-download-progress:hover,\n+#et-boc .et-l a.e2pdf-download-progress\n {\n     color: #808080;\n     text-decoration: none;\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fcss\u002Fextension\u002Fwpcf7.css \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fcss\u002Fextension\u002Fwpcf7.css\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fcss\u002Fextension\u002Fwpcf7.css\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fcss\u002Fextension\u002Fwpcf7.css\t2026-02-24 09:27:28.000000000 +0000\n@@ -5,4 +5,18 @@\n \n .wpcf7-textarea {\n     width: 100%;\n+}\n+\n+.as-signature-input {\n+    position: absolute;\n+    width: 100%;\n+    height: 100%;\n+    left: 0;\n+    top:0;\n+    text-align: center;\n+}\n+\n+.as-signature-wrapper {\n+    display: inline-block;\n+    position: relative;\n }\n\\ No newline at end of file\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fe2pdf.php \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fe2pdf.php\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fe2pdf.php\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fe2pdf.php\t2026-02-24 09:27:28.000000000 +0000\n@@ -4,14 +4,14 @@\n   Plugin Name: E2Pdf\n   Plugin URI:  https:\u002F\u002Fe2pdf.com\n   Description: Export PDF tool\n-  Version:     1.28.15\n+  Version:     1.32.00\n   Author:      E2Pdf.com\n   Author URI:  https:\u002F\u002Fe2pdf.com\u002Fcontributors\n   Text Domain: e2pdf\n   Domain Path: \u002Flanguages\n   License:     GPLv3\n \n-  E2pdf is free software: you can redistribute it and\u002For modify\n+  E2Pdf is free software: you can redistribute it and\u002For modify\n   it under the terms of the GNU General Public License as published by\n   the Free Software Foundation, either version 3 of the License, or\n   any later version.\n@@ -36,9 +36,13 @@\n     }\n }\n \n+if (!defined('E2PDF_ROOT_FILE')) {\n+    define('E2PDF_ROOT_FILE', __FILE__);\n+}\n+\n \u002F\u002F autoloader name to filename\n function e2pdf_autoloader_convert_name($class_name) {\n-    $search = array(\n+    $search = [\n         '_',\n         'Controller-Frontend-',\n         'Controller-',\n@@ -46,8 +50,8 @@\n         'Helper-',\n         'Extension-',\n         'Api-',\n-    );\n-    $replace = array(\n+    ];\n+    $replace = [\n         '-',\n         '',\n         '',\n@@ -55,13 +59,13 @@\n         '',\n         '',\n         '',\n-    );\n+    ];\n     return strtolower(\n             str_replace($search, $replace, $class_name)\n     );\n }\n \n-\u002F\u002F e2pdf autoloader\n+\u002F\u002F autoloader\n function e2pdf_autoloader($class_name) {\n     if (!preg_match('\u002F^(.*?)E2pdf(.*?)$\u002F', $class_name)) {\n         return;\n@@ -95,28 +99,5 @@\n }\n spl_autoload_register('e2pdf_autoloader');\n \n-$e2pdf_plugin_data = get_file_data(__FILE__, array('version' => 'Version'), false);\n-$helper = Helper_E2pdf_Helper::instance();\n-$helper->set('plugin_dir', plugin_dir_path(__FILE__));\n-$helper->set('upload_dir', $helper->get_wp_upload_dir('basedir') . '\u002Fe2pdf\u002F');\n-$helper->set('tmp_dir', $helper->get('upload_dir') . 'tmp\u002F');\n-$helper->set('cache_dir', $helper->get('upload_dir') . 'tmp\u002Fcache\u002F');\n-$helper->set('pdf_dir', $helper->get('upload_dir') . 'pdf\u002F');\n-$helper->set('fonts_dir', $helper->get('upload_dir') . 'fonts\u002F');\n-$helper->set('tpl_dir', $helper->get('upload_dir') . 'tpl\u002F');\n-$helper->set('viewer_dir', $helper->get('upload_dir') . 'viewer\u002F');\n-$helper->set('bulk_dir', $helper->get('upload_dir') . 'bulks\u002F');\n-$helper->set('wpcf7_dir', $helper->get('upload_dir') . 'wpcf7\u002F');\n-$helper->set('plugin_file_path', __FILE__);\n-$helper->set('version', $e2pdf_plugin_data['version']);\n-$helper->set('plugin', plugin_basename(__FILE__));\n-$helper->set('slug', dirname(plugin_basename(__FILE__)));\n-$helper->set('cache', get_option('e2pdf_cache', '1'));\n-$e2pdf_wp_parse_args = wp_parse_args(home_url(add_query_arg(null, null)));\n-$helper->set('page', reset($e2pdf_wp_parse_args));\n-if (get_option('e2pdf_memory_time', '0')) {\n-    $helper->set('memory_debug', memory_get_usage());\n-    $helper->set('time_debug', microtime(true));\n-}\n-$loader = new Model_E2pdf_Loader();\n-$loader->load();\n+\u002F\u002F load\n+(new Model_E2pdf_Loader())->load();\nOnly in \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fimg: loader.gif\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fjs\u002Fe2pdf.backend.js \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fjs\u002Fe2pdf.backend.js\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fjs\u002Fe2pdf.backend.js\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fjs\u002Fe2pdf.backend.js\t2026-02-24 09:27:28.000000000 +0000\n@@ -482,7 +482,31 @@\n                         hooks = {\n                             'hook_woocommerce_order_edit': e2pdf.lang.get('WP Admin Order Details'),\n                             'hook_woocommerce_order_row_actions': e2pdf.lang.get('WP Admin Order List Actions'),\n-                            'hook_woocommerce_order_row_column': e2pdf.lang.get('WP Admin Order List Column')\n+                            'hook_woocommerce_order_row_column': e2pdf.lang.get('WP Admin Order List Column'),\n+                            'hook_woocommerce_my_account_my_orders_actions': e2pdf.lang.get('User Order List'),\n+                            'hook_woocommerce_order_details_before_order_table': e2pdf.lang.get('User Order Details (Before Order Table)'),\n+                            'hook_woocommerce_order_details_before_order_table_items': e2pdf.lang.get('User Order Details (Before Order Table Items)'),\n+                            'hook_woocommerce_order_details_after_order_table_items': e2pdf.lang.get('User Order Details (After Order Table Items)'),\n+                            'hook_woocommerce_order_details_after_order_table': e2pdf.lang.get('User Order Details (After Order Table)'),\n+                            'hook_woocommerce_after_order_details': e2pdf.lang.get('User Order Details (After Order Details)'),\n+                        };\n+                    } else if (e2pdf.pdf.settings.get('item') == 'shop_subscription') {\n+                        hooks = {\n+                            'hook_woocommerce_subscription_edit': e2pdf.lang.get('WP Admin Subscription Details'),\n+                            'hook_woocommerce_subscription_row_column': e2pdf.lang.get('WP Admin Order List Column'),\n+                            'hook_woocommerce_subscription_before_actions': e2pdf.lang.get('User Subscription (Before Actions)'),\n+                            'hook_woocommerce_subscription_after_actions': e2pdf.lang.get('User Subscription (After Actions)'),\n+                            'hook_wcs_subscription_details_table_before_dates': e2pdf.lang.get('User Subscription (Before Dates)'),\n+                            'hook_wcs_subscription_details_table_after_dates': e2pdf.lang.get('User Subscription (After Dates)'),\n+                            'hook_wcs_subscription_details_table_before_payment_method': e2pdf.lang.get('User Subscription (Before Payment Method)'),\n+                            'hook_wcs_view_subscription_actions': e2pdf.lang.get('User Subscrition (Actions)'),\n+\n+                        };\n+                    } else if (e2pdf.pdf.settings.get('item') == 'cart') {\n+                        hooks = {\n+                            'hook_woocommerce_proceed_to_checkout': e2pdf.lang.get('User Cart'),\n+                            'hook_woocommerce_review_order_before_submit': e2pdf.lang.get('User Checkout (Before Submit)'),\n+                            'hook_woocommerce_review_order_after_submit': e2pdf.lang.get('User Checkout (After Submit)'),\n                         };\n                     }\n                     break;\n@@ -864,10 +888,10 @@\n                     el.closest('form').find('.e2pdf-submit, .e2pdf-extension, .e2pdf-items, #auto_form_label').attr('disabled', false);\n                 }\n                 el.closest('form').find('.e2pdf-upload-pdf').replaceWith(\n-                        jQuery('\u003Cinput>', {'type': 'file', 'name': 'pdf', 'class': 'e2pdf-upload-pdf e2pdf-hide'})\n+                        jQuery('\u003Cinput>', {'type': 'file', 'name': 'pdf', 'accept': '.pdf', 'class': 'e2pdf-upload-pdf e2pdf-hide'})\n                         );\n                 el.closest('form').find('.e2pdf-reupload-pdf').replaceWith(\n-                        jQuery('\u003Cinput>', {'type': 'file', 'name': 'pdf', 'class': 'e2pdf-reupload-pdf e2pdf-hide'})\n+                        jQuery('\u003Cinput>', {'type': 'file', 'name': 'pdf', 'accept': '.pdf', 'class': 'e2pdf-reupload-pdf e2pdf-hide'})\n                         );\n             }\n         }\n@@ -923,6 +947,9 @@\n                         el.width = jQuery(this).css('width');\n                         el.height = jQuery(this).css('height');\n                         switch (jQuery(this).data('data-type')) {\n+                            case 'e2pdf-rectangle':\n+                                el.value = '';\n+                                break;\n                             case 'e2pdf-html':\n                                 if (jQuery(this).find('.e2pdf-html').is('textarea')) {\n                                     el.value = jQuery(this).find('.e2pdf-html').val();\n@@ -973,26 +1000,27 @@\n     font: {\n         \u002F\u002F e2pdf.font.load\n         load: function (el) {\n+            var name, value;\n             if (el.is('select')) {\n-                var name = el.val();\n-                var value = el.find('option:selected').attr('path');\n+                name = el.val();\n+                value = el.find('option:selected').attr('path');\n             } else if (el.is('div')) {\n-                var name = el.attr('name');\n-                var value = el.attr('path');\n+                name = el.attr('name');\n+                value = el.attr('path');\n             }\n-\n-            if (jQuery(\"head\").find('style[name=\"' + name + '\"]').length === 0) {\n-                jQuery(\"head\").append(\"\u003Cstyle name='\" + name + \"' type='text\u002Fcss'>@font-face {font-family: \" + name + \"; src: url('\" + e2pdf.url.uploadUrl() + \"\u002Ffonts\u002F\" + value + \"')}\u003C\u002Fstyle>\");\n+            if (jQuery(\"head\").find('style[name=\"' + CSS.escape(name) + '\"]').length === 0) {\n+                jQuery(\"head\").append(\n+                        jQuery(\"\u003Cstyle>\")\n+                        .attr('name', name)\n+                        .attr('type', 'text\u002Fcss')\n+                        .text(`@font-face {font-family: \"${CSS.escape(name)}\"; src: url(\"${e2pdf.url.uploadUrl()}\u002Ffonts\u002F${encodeURIComponent(value)}\")}`)\n+                        );\n             }\n         },\n         \u002F\u002F e2pdf.font.apply\n         apply: function (el, font) {\n-            var font_name = font.find('option:selected').html();\n-            if (font_name) {\n-                el.css('font-family', font_name);\n-            } else {\n-                el.css('font-family', '');\n-            }\n+            let font_name = font.find('option:selected').html();\n+            el.css('font-family', font_name ? CSS.escape(font_name) : '');\n         },\n         \u002F\u002F e2pdf.font.size\n         size: function (el, size) {\n@@ -1144,11 +1172,12 @@\n             if (el.attr('disabled')) {\n                 return;\n             }\n-            jQuery('html').addClass('e2pdf-loading');\n+            if (action !== 'e2pdf_bulk_progress') {\n+                jQuery('html').addClass('e2pdf-loading');\n+            }\n             if (!value) {\n                 var value = el.val();\n             }\n-\n             var _wpnonce = el.attr('_wpnonce');\n             if (action == 'e2pdf_bulk_progress') {\n                 _wpnonce = e2pdf_params['nonce']['e2pdf'];\n@@ -1261,6 +1290,9 @@\n                         }, 0);\n                         return;\n                     }\n+                    var history = [];\n+                    history.push(element.clone(true));\n+                    e2pdf.history.set('element_change', history);\n                     e2pdf.actions.apply(element, data['actions']);\n                     delete data['actions'];\n                     e2pdf.properties.apply(element, data);\n@@ -1434,6 +1466,11 @@\n                             } else {\n                                 jQuery(this).val('');\n                             }\n+                            if (jQuery(this).attr('name') == 'options[name]') {\n+                                if (e2pdf.url.get('action') == 'bulk') {\n+                                    jQuery(this).closest('.e2pdf-grid').addClass('e2pdf-hide')\n+                                }\n+                            }\n                         });\n                         if (e2pdf.static.autoloadExport) {\n                             var datasets = [\n@@ -1989,7 +2026,7 @@\n                         )\n                         );\n                 content.find('form').append(\n-                        jQuery('\u003Cinput>', {'type': 'file', 'name': 'pdf', 'class': 'e2pdf-upload-pdf e2pdf-hide'})\n+                        jQuery('\u003Cinput>', {'type': 'file', 'accept': '.pdf', 'name': 'pdf', 'class': 'e2pdf-upload-pdf e2pdf-hide'})\n                         );\n                 if (e2pdf.pdf.settings.get('pdf')) {\n                     content.find('form').append(\n@@ -2202,7 +2239,7 @@\n                         )\n                         );\n                 content.find('form').append(\n-                        jQuery('\u003Cinput>', {'type': 'file', 'name': 'pdf', 'class': 'e2pdf-upload-pdf e2pdf-hide'})\n+                        jQuery('\u003Cinput>', {'type': 'file', 'name': 'pdf', 'accept': '.pdf', 'class': 'e2pdf-upload-pdf e2pdf-hide'})\n                         );\n                 content.find('form').append(\n                         jQuery('\u003Cinput>', {'type': 'hidden', 'name': 'pdf', 'value': ''})\n@@ -2254,7 +2291,7 @@\n                         jQuery('\u003Cspan>', {'class': 'spinner'})\n                         ));\n                 content.find('form').append(\n-                        jQuery('\u003Cinput>', {'type': 'file', 'name': 'pdf', 'class': 'e2pdf-reupload-pdf e2pdf-hide'})\n+                        jQuery('\u003Cinput>', {'type': 'file', 'name': 'pdf', 'accept': '.pdf', 'class': 'e2pdf-reupload-pdf e2pdf-hide'})\n                         );\n                 if (e2pdf.pdf.settings.get('ID')) {\n                     content.find('form').append(\n@@ -2495,6 +2532,9 @@\n                     text: e2pdf.lang.get('Select')\n                 }, multiple: false});\n             mediaUploader.on('select', function () {\n+                var history = [];\n+                history.push(el.clone(true));\n+                e2pdf.history.set('element_change', history);\n                 var attachment = mediaUploader.state().get('selection').first().toJSON();\n                 e2pdf.properties.set(el, 'value', attachment.url);\n                 e2pdf.properties.render(el);\n@@ -2799,15 +2839,50 @@\n                         'atts': []\n                     };\n                     break;\n+                case 'pre_replace':\n+                    var value = action && typeof action.pre_replace !== 'undefined' ? action.pre_replace : '';\n+                    obj = {\n+                        'name': e2pdf.lang.get('Pre-Replace'),\n+                        'key': 'actions[' + action_id + '][pre_replace]',\n+                        'type': 'select',\n+                        'value': value,\n+                        'options': [\n+                            {'': '-'},\n+                            {'render': e2pdf.lang.get('Render Value')}\n+                        ],\n+                        'atts': []\n+                    };\n+                    break;\n                 case 'action':\n                     if (el.data('data-type') == 'e2pdf-tpl') {\n                         var value = action ? action.action : 'access_by_url';\n+                        \u002F\u002F Backward Compatibility\n+                        value = value.replace('restrict_process_shortcode_', '');\n+                        value = value.replace('process_shortcode_', '');\n+                        value = value.replace('restrict_process_', '');\n+                        value = value.replace('process_', '');\n+                        value = value.replace('restrict_', '');\n                         var options = [\n-                            {'access_by_url': e2pdf.lang.get('Allow PDF Access By URL')},\n-                            {'restrict_access_by_url': e2pdf.lang.get('Restrict PDF Access By URL')},\n-                            {'process_shortcodes': e2pdf.lang.get('Process Shortcodes')},\n-                            {'restrict_process_shortcodes': e2pdf.lang.get('Restrict Process Shortcodes')}\n+                            {'access_by_url': e2pdf.lang.get('PDF Access By URL')},\n+                            {'redirect_access_by_url': e2pdf.lang.get('Redirect Access By URL')},\n+                            {'shortcodes': e2pdf.lang.get('Shortcodes: All')},\n+                            {'e2pdf_download': e2pdf.lang.get('Shortcode: e2pdf-download')},\n+                            {'e2pdf_attachment': e2pdf.lang.get('Shortcode: e2pdf-attachment')},\n+                            {'e2pdf_view': e2pdf.lang.get('Shortcode: e2pdf-view')},\n+                            {'e2pdf_save': e2pdf.lang.get('Shortcode: e2pdf-save')},\n+                            {'e2pdf_zapier': e2pdf.lang.get('Shortcode: e2pdf-zapier')},\n+                            {'e2pdf_adobesign': e2pdf.lang.get('Shortcode: e2pdf-adobesign')},\n                         ];\n+                        var hooks = e2pdf.hooks.get();\n+                        if (Object.keys(hooks).length > 0) {\n+                            options.push({'hooks': 'Hooks: All'});\n+                            for (var hook in hooks) {\n+                                options.push({[hook]: 'Hook: ' + hooks[hook]});\n+                            }\n+                        }\n+                        if (!options.some(opt => Object.keys(opt)[0] === value)) {\n+                            options.push({[value]: value});\n+                        }\n                     } else if (el.data('data-type') == 'e2pdf-page') {\n                         var value = action ? action.action : 'hide';\n                         var options = [\n@@ -2844,6 +2919,34 @@\n                         };\n                     }\n                     break;\n+                case 'redirect_error_message':\n+                    if (el.data('data-type') == 'e2pdf-tpl') {\n+                        var value = action ? action.redirect_error_message : '';\n+                        if (!value) {\n+                            value = 'Access denied. Please, click \u003Ca href=\"%s\" target=\"_blank\">here\u003C\u002Fa> for more details...';\n+                        }\n+                        obj = {\n+                            'name': e2pdf.lang.get('Error Message'),\n+                            'key': 'actions[' + action_id + '][redirect_error_message]',\n+                            'type': 'textarea',\n+                            'placeholder': 'Access denied. Please, click \u003Ca href=\"%s\" target=\"_blank\">here\u003C\u002Fa> for more details...',\n+                            'value': value,\n+                            'atts': []\n+                        };\n+                    }\n+                    break;\n+                case 'redirect_url':\n+                    if (el.data('data-type') == 'e2pdf-tpl') {\n+                        var value = action ? action.redirect_url : '';\n+                        obj = {\n+                            'name': e2pdf.lang.get('Redirect URL'),\n+                            'key': 'actions[' + action_id + '][redirect_url]',\n+                            'type': 'text',\n+                            'value': value,\n+                            'atts': []\n+                        };\n+                    }\n+                    break;\n                 case 'else':\n                     if (el.data('data-type') == 'e2pdf-page') {\n                         var options = [\n@@ -2868,40 +2971,64 @@\n                     };\n                     break;\n                 case 'property':\n-                    var value = action ? action.property : '';\n-                    if (action && action.action === 'change') {\n-                        var options = [];\n-                        var option = {\n-                            '': e2pdf.lang.get('--- Select ---')\n-                        };\n-                        options.push(option);\n-                        var groups = e2pdf.properties.getFields(el);\n-                        for (var group_key in groups) {\n-                            var group = groups[group_key];\n-                            for (var field_key in group.fields) {\n-                                var group_field = group.fields[field_key];\n-                                if (jQuery.inArray('uneditable', group_field.atts) === -1 && (jQuery.inArray('readonly', group_field.atts) === -1 || (jQuery.inArray('readonly', group_field.atts) !== -1 && jQuery.inArray('editable', group_field.atts) !== -1))) {\n-                                    var option = {};\n-\n-                                    if (group_field.key == 'g_multiline') {\n-                                        option[group_field.key] = e2pdf.lang.get('Type');\n-                                    } else if (group.classes && group.classes[field_key] && group.classes[field_key].includes(\"e2pdf-hide-label\") && group_field.key != 'html_worker') {\n-                                        option[group_field.key] = group.name;\n-                                    } else {\n-                                        option[group_field.key] = group.name + ' ' + group_field.name;\n-                                    }\n-                                    options.push(option);\n-                                }\n+                    if (el.data('data-type') == 'e2pdf-tpl') {\n+                        \u002F\u002F Backward Compatibility\n+                        if (action && !action.property && action.action) {\n+                            if (action.action.includes('restrict_')) {\n+                                var value = 'disable';\n+                            } else {\n+                                var value = 'enable';\n                             }\n+                        } else {\n+                            var value = action && action.property ? action.property : 'enable';\n                         }\n+                        var options = [\n+                            {'enable': e2pdf.lang.get('Enable')},\n+                            {'disable': e2pdf.lang.get('Disable')},\n+                        ];\n                         obj = {\n-                            'name': e2pdf.lang.get('Property'),\n+                            'name': e2pdf.lang.get('State'),\n                             'key': 'actions[' + action_id + '][property]',\n-                            'type': 'select',\n+                            'type': action && action.action === 'redirect_access_by_url' ? 'hidden' : 'select',\n                             'value': value,\n                             'options': options,\n                             'atts': []\n                         };\n+                    } else {\n+                        var value = action ? action.property : '';\n+                        if (action && action.action === 'change') {\n+                            var options = [];\n+                            var option = {\n+                                '': e2pdf.lang.get('--- Select ---')\n+                            };\n+                            options.push(option);\n+                            var groups = e2pdf.properties.getFields(el);\n+                            for (var group_key in groups) {\n+                                var group = groups[group_key];\n+                                for (var field_key in group.fields) {\n+                                    var group_field = group.fields[field_key];\n+                                    if (jQuery.inArray('uneditable', group_field.atts) === -1 && (jQuery.inArray('readonly', group_field.atts) === -1 || (jQuery.inArray('readonly', group_field.atts) !== -1 && jQuery.inArray('editable', group_field.atts) !== -1))) {\n+                                        var option = {};\n+                                        if (group_field.key == 'g_multiline') {\n+                                            option[group_field.key] = e2pdf.lang.get('Type');\n+                                        } else if (group.classes && group.classes[field_key] && group.classes[field_key].includes(\"e2pdf-hide-label\") && group_field.key != 'html_worker') {\n+                                            option[group_field.key] = group.name;\n+                                        } else {\n+                                            option[group_field.key] = group.name + ' ' + group_field.name;\n+                                        }\n+                                        options.push(option);\n+                                    }\n+                                }\n+                            }\n+                            obj = {\n+                                'name': e2pdf.lang.get('Property'),\n+                                'key': 'actions[' + action_id + '][property]',\n+                                'type': 'select',\n+                                'value': value,\n+                                'options': options,\n+                                'atts': []\n+                            };\n+                        }\n                     }\n                     break;\n                 case 'change':\n@@ -2978,8 +3105,8 @@\n                     ],\n                     'classes': [\n                         'e2pdf-w10 e2pdf-pr5 e2pdf-action-order',\n-                        'e2pdf-w35 e2pdf-pr5 e2pdf-action-action',\n-                        'e2pdf-w40 e2pdf-pl5 e2pdf-pr5 e2pdf-action-property',\n+                        el.data('data-type') == 'e2pdf-tpl' ? 'e2pdf-w50 e2pdf-pr5 e2pdf-action-action' : 'e2pdf-w35 e2pdf-pr5 e2pdf-action-action',\n+                        el.data('data-type') == 'e2pdf-tpl' ? 'e2pdf-w25 e2pdf-pl5 e2pdf-pr5 e2pdf-action-property' : 'e2pdf-w40 e2pdf-pl5 e2pdf-pr5 e2pdf-action-property',\n                         'e2pdf-w15 e2pdf-pl5'\n                     ]\n                 }\n@@ -2992,6 +3119,8 @@\n                     && action.property !== ''\n                     ) {\n                 if (action.property == 'value' && typeof action.format !== 'undefined' && action.format == 'search') {\n+                    obj.action.fields.push(e2pdf.actions.getField('pre_replace', el, action_id, action));\n+                    obj.action.classes.push('e2pdf-w100');\n                     obj.action.fields.push(e2pdf.actions.getField('search', el, action_id, action));\n                     obj.action.classes.push('e2pdf-w100');\n                 }\n@@ -3010,11 +3139,14 @@\n             }\n \n             if (el.data('data-type') == 'e2pdf-tpl') {\n-                if (action && (action.action == 'process_shortcodes' || action.action == 'restrict_process_shortcodes')) {\n-\n-                } else {\n+                if (!action || (action && (action.action == 'access_by_url' || action.action == 'restrict_access_by_url'))) {\n                     obj.action.fields.push(e2pdf.actions.getField('error_message', el, action_id, action));\n                     obj.action.classes.push('e2pdf-w100 e2pdf-action-message');\n+                } else if (action && action.action == 'redirect_access_by_url') {\n+                    obj.action.fields.push(e2pdf.actions.getField('redirect_url', el, action_id, action));\n+                    obj.action.classes.push('e2pdf-w100 e2pdf-action-redirect-url');\n+                    obj.action.fields.push(e2pdf.actions.getField('redirect_error_message', el, action_id, action));\n+                    obj.action.classes.push('e2pdf-w100 e2pdf-action-message');\n                 }\n             }\n \n@@ -3640,13 +3772,18 @@\n                     };\n                     break;\n                 case 'pdf_resample':\n+                    var value = e2pdf.helper.getString(properties[field], '-1');\n+                    if (value == '100') {\n+                        value = '150';\n+                    }\n                     obj = {\n                         'name': e2pdf.lang.get('Resolution'),\n                         'type': 'select',\n-                        'value': e2pdf.helper.getString(properties[field], '100'),\n+                        'value': value,\n                         'options':\n                                 [\n-                                    {'100': '72dpi'},\n+                                    {'-1': e2pdf.lang.get('Auto')},\n+                                    {'72': '72dpi'},\n                                     {'125': '90dpi'},\n                                     {'150': '108dpi'},\n                                     {'175': '126dpi'},\n@@ -3792,7 +3929,8 @@\n                     };\n                     if (el.data('data-type') === 'e2pdf-textarea' || el.data('data-type') === 'e2pdf-html' || el.data('data-type') === 'e2pdf-page-number') {\n                         obj.options.push(\n-                                {'justify': e2pdf.lang.get('Justify')}\n+                                {'justify': e2pdf.lang.get('Justify')},\n+                                {'justify-all': e2pdf.lang.get('Justify All')}\n                         );\n                     }\n                     break;\n@@ -5626,8 +5764,11 @@\n                             e2pdf.properties.getField('text_font_size', el),\n                             e2pdf.properties.getField('placeholder', el),\n                             e2pdf.properties.getField('esig', el),\n+                            e2pdf.properties.getField('required', el),\n                             e2pdf.properties.getField('horizontal', el),\n                             e2pdf.properties.getField('vertical', el),\n+                            e2pdf.properties.getField('rotation', el),\n+                            e2pdf.properties.getField('opacity', el),\n                             e2pdf.properties.getField('dimension', el),\n                             e2pdf.properties.getField('block_dimension', el),\n                             e2pdf.properties.getField('keep_lower_size', el),\n@@ -5639,13 +5780,16 @@\n                             'e2pdf-w60 e2pdf-pr10',\n                             'e2pdf-w40',\n                             'e2pdf-w100',\n-                            'e2pdf-w100',\n                             'e2pdf-w50',\n                             'e2pdf-w50 e2pdf-pl10',\n-                            'e2pdf-pr10',\n-                            'e2pdf-pr10',\n-                            'e2pdf-pr10',\n-                            'e2pdf-pr10'\n+                            'e2pdf-w50',\n+                            'e2pdf-w50 e2pdf-pl10',\n+                            'e2pdf-w50',\n+                            'e2pdf-w50 e2pdf-pl10',\n+                            'e2pdf-w50',\n+                            'e2pdf-w50 e2pdf-pl10',\n+                            'e2pdf-w50',\n+                            'e2pdf-w50 e2pdf-pl10'\n                         ]\n                     };\n                     obj['style'] = {\n@@ -5897,6 +6041,9 @@\n                     obj['field'] = {\n                         'name': e2pdf.lang.get('Field'),\n                         'fields': [\n+                            e2pdf.properties.getField('text_color', el),\n+                            e2pdf.properties.getField('text_font', el),\n+                            e2pdf.properties.getField('text_font_size', el),\n                             e2pdf.properties.getField('horizontal', el),\n                             e2pdf.properties.getField('vertical', el),\n                             e2pdf.properties.getField('rotation', el),\n@@ -5910,6 +6057,9 @@\n                         ],\n                         'position': 'left',\n                         'classes': [\n+                            'e2pdf-w100',\n+                            'e2pdf-w60 e2pdf-pr10',\n+                            'e2pdf-w40',\n                             'e2pdf-w50',\n                             'e2pdf-w50 e2pdf-pl10',\n                             'e2pdf-w50',\n@@ -6999,7 +7149,7 @@\n                 children.attr('multiple', e2pdf.helper.getCheckbox(properties['multiline']) == '1' ? true : false);\n             }\n \n-            if (el.data('data-type') === 'e2pdf-image') {\n+            if (el.data('data-type') === 'e2pdf-image' || el.data('data-type') === 'e2pdf-signature') {\n                 children.css('opacity', e2pdf.helper.getFloat(properties['opacity']));\n             }\n \n@@ -7051,14 +7201,15 @@\n                 children.css('color', e2pdf.helper.getString(properties['text_color']));\n             }\n \n-            if (e2pdf.helper.getString(properties['text_font'])) {\n-                var path = jQuery('.e2pdf-wysiwyg-font').find(\"[value='\" + e2pdf.helper.getString(properties['text_font']) + \"']\").attr('path');\n+            var font = e2pdf.helper.getString(properties['text_font']);\n+            if (font) {\n+                var path = jQuery('.e2pdf-wysiwyg-font').find(\"[value='\" + CSS.escape(font) + \"']\").attr('path');\n                 if (typeof path === 'undefined') {\n                     el.css('font-family', '');\n                 } else {\n-                    var tmp = jQuery('\u003Cdiv>', {'name': e2pdf.helper.getString(properties['text_font']), 'path': path});\n+                    var tmp = jQuery('\u003Cdiv>', {'name': font, 'path': path});\n                     e2pdf.font.load(tmp);\n-                    el.css('font-family', e2pdf.helper.getString(properties['text_font']));\n+                    el.css('font-family', CSS.escape(font));\n                 }\n             } else {\n                 el.css('font-family', '');\n@@ -7137,45 +7288,47 @@\n         var item2 = false;\n         var action = el.attr('data-action');\n         var data = e2pdf.form.serializeObject(el.closest('form'));\n-        var disabled_settings = [\n-            'title', 'preset', 'font', 'font_size', 'line_height'\n-        ];\n-        for (var key in data) {\n-            if (jQuery.inArray(key, disabled_settings) === -1) {\n-                if (key == 'activated') {\n-                    e2pdf.pdf.settings.change(key, data[key]);\n-                } else {\n-                    e2pdf.pdf.settings.change(key, data[key]);\n+        if (action !== 'upload') {\n+            var disabled_settings = [\n+                'title', 'preset', 'font', 'font_size', 'line_height'\n+            ];\n+            for (var key in data) {\n+                if (jQuery.inArray(key, disabled_settings) === -1) {\n+                    if (key == 'activated') {\n+                        e2pdf.pdf.settings.change(key, data[key]);\n+                    } else {\n+                        e2pdf.pdf.settings.change(key, data[key]);\n+                    }\n                 }\n-            }\n \n-            if (key === 'font') {\n-                jQuery('#e2pdf-font').val(data[key]);\n-            }\n+                if (key === 'font') {\n+                    jQuery('#e2pdf-font').val(data[key]);\n+                }\n \n-            if (key === 'font_size') {\n-                jQuery('#e2pdf-font-size').val(data[key]);\n-            }\n+                if (key === 'font_size') {\n+                    jQuery('#e2pdf-font-size').val(data[key]);\n+                }\n \n-            if (key === 'line_height') {\n-                jQuery('#e2pdf-line-height').val(data[key]);\n-            }\n+                if (key === 'line_height') {\n+                    jQuery('#e2pdf-line-height').val(data[key]);\n+                }\n \n-            if (key === 'title') {\n-                jQuery('#e2pdf-title').val(data[key]);\n-            }\n+                if (key === 'title') {\n+                    jQuery('#e2pdf-title').val(data[key]);\n+                }\n \n-            if (key === 'text_align') {\n-                jQuery('#e2pdf-text-align').val(data[key]).trigger('change');\n-            }\n+                if (key === 'text_align') {\n+                    jQuery('#e2pdf-text-align').val(data[key]).trigger('change');\n+                }\n \n-            if (key === 'rtl') {\n-                jQuery('#e2pdf-rtl').prop('checked', true).trigger('change');\n+                if (key === 'rtl') {\n+                    jQuery('#e2pdf-rtl').prop('checked', true).trigger('change');\n+                }\n             }\n-        }\n \n-        if (!data['rtl']) {\n-            jQuery('#e2pdf-rtl').prop('checked', false).trigger('change');\n+            if (!data['rtl']) {\n+                jQuery('#e2pdf-rtl').prop('checked', false).trigger('change');\n+            }\n         }\n \n         if (action === 'apply') {\n@@ -7339,84 +7492,23 @@\n     },\n     \u002F\u002F e2pdf.pages\n     pages: {\n-        \u002F\u002F e2pdf.pages.rebuildPages\n-        rebuildPages: function () {\n-            jQuery('.e2pdf-page').each(function (index) {\n-                if (!e2pdf.pdf.settings.get('pdf')) {\n-                    if (index + 1 === 1) {\n-                        jQuery(this).find('.e2pdf-up-page').attr('disabled', 'disabled');\n-                    } else {\n-                        jQuery(this).find('.e2pdf-up-page').attr('disabled', false);\n-                    }\n-\n-                    if (index + 1 === jQuery('.e2pdf-page').length) {\n-                        jQuery(this).find('.e2pdf-down-page').attr('disabled', 'disabled');\n-                    } else {\n-                        jQuery(this).find('.e2pdf-down-page').attr('disabled', false);\n-                    }\n+        \u002F\u002F e2pdf.pages.initEvents\n+        initEvents: function (page) {\n+            page.off('contextmenu');\n+            page.contextmenu(function (e) {\n+                if (jQuery(e.target).hasClass('e2pdf-page')) {\n+                    e2pdf.contextMenu(e, page);\n+                    e.preventDefault();\n                 }\n-                jQuery(this).attr('data-page_id', index + 1);\n             });\n-            e2pdf.welcomeScreen();\n-        },\n-        \u002F\u002F e2pdf.pages.createPage\n-        createPage: function (page, properties, actions, onload) {\n-            e2pdf.pages.rebuildPages();\n-            var newpage = true;\n-            if (page) {\n-                var newpage = false;\n-            }\n-            if (!properties) {\n-                var properties = {};\n-            }\n-            if (!actions) {\n-                var actions = {};\n-            }\n+            if (page.hasClass('ui-droppable')) {\n+                try {\n+                    page.droppable('destroy');\n+                    page.removeData('ui-droppable');\n+                } catch (e) {\n \n-            if (newpage) {\n-                var page_id = parseInt(jQuery('.e2pdf-page').length) + 1;\n-                var page = jQuery('\u003Cdiv>', {\n-                    'class': 'e2pdf-page ui-droppable',\n-                    'width': jQuery('.e2pdf-tpl').attr('data-width'),\n-                    'height': jQuery('.e2pdf-tpl').attr('data-height'),\n-                    'data-width': jQuery('.e2pdf-tpl').attr('data-width'),\n-                    'data-height': jQuery('.e2pdf-tpl').attr('data-height')\n-                }).attr('data-page_id', page_id).append(\n-                        jQuery('\u003Cdiv>', {'class': 'page-options-icons'}).append(\n-                        jQuery('\u003Ca>', {\n-                            'href': 'javascript:void(0);',\n-                            'class': 'page-options-icon e2pdf-up-page e2pdf-link'\n-                        }).append(\n-                        jQuery('\u003Ci>', {'class': 'dashicons dashicons-arrow-up-alt2'})\n-                        ),\n-                        jQuery('\u003Ca>', {\n-                            'href': 'javascript:void(0);',\n-                            'class': 'page-options-icon e2pdf-down-page e2pdf-link'\n-                        }).append(\n-                        jQuery('\u003Ci>', {'class': 'dashicons dashicons-arrow-down-alt2'})\n-                        ),\n-                        jQuery('\u003Ca>', {\n-                            'href': 'javascript:void(0);',\n-                            'class': 'page-options-icon e2pdf-page-options e2pdf-modal e2pdf-link',\n-                            'data-modal': 'page-options'\n-                        }).append(\n-                        jQuery('\u003Ci>', {'class': 'dashicons dashicons-admin-generic'})\n-                        ),\n-                        jQuery('\u003Ca>', {\n-                            'href': 'javascript:void(0);',\n-                            'class': 'page-options-icon e2pdf-delete-page e2pdf-link'\n-                        }).append(\n-                        jQuery('\u003Ci>', {'class': 'dashicons dashicons-no'})\n-                        )\n-                        ),\n-                        jQuery('\u003Cdiv>', {'class': 'e2pdf-guide e2pdf-guide-h'}),\n-                        jQuery('\u003Cdiv>', {'class': 'e2pdf-guide e2pdf-guide-v'})\n-                        );\n+                }\n             }\n-\n-            page.data('data-type', 'e2pdf-page');\n-            e2pdf.properties.apply(page, properties, onload);\n-            e2pdf.actions.apply(page, actions);\n             page.droppable({\n                 over: function (ev, ui) {\n                     e2pdf.static.drag.page = jQuery(this);\n@@ -7464,9 +7556,9 @@\n                         var type = jQuery(ui.draggable).attr('data-type');\n                         var page = jQuery(this).closest('.e2pdf-page');\n                         var pos = {\n-                            top: Math.max(0, (jQuery(ui.helper).offset().top - jQuery(this).offset().top) \u002F e2pdf.zoom.zoom - 1),\n-                            left: Math.max(0, (jQuery(ui.helper).offset().left - jQuery(this).offset().left) \u002F e2pdf.zoom.zoom - 1),\n-                            right: Math.min(0, ((parseFloat(jQuery(ui.helper).css('width')) + jQuery(ui.helper).offset().left - 2) - (jQuery(this).offset().left + parseFloat(jQuery(this).css('width')))) \u002F e2pdf.zoom.zoom)\n+                            top: Math.round(Math.max(0, (jQuery(ui.helper).offset().top - jQuery(this).offset().top) \u002F e2pdf.zoom.zoom - 1)),\n+                            left: Math.round(Math.max(0, (jQuery(ui.helper).offset().left - jQuery(this).offset().left) \u002F e2pdf.zoom.zoom - 1)),\n+                            right: Math.round(Math.min(0, ((parseFloat(jQuery(ui.helper).css('width')) + jQuery(ui.helper).offset().left - 2) - (jQuery(this).offset().left + parseFloat(jQuery(this).css('width')))) \u002F e2pdf.zoom.zoom))\n                         };\n                         if (pos.left \u003C 0 || pos.right > 0 || pos.top \u003C 0) {\n                             return false;\n@@ -7480,16 +7572,20 @@\n                         var el = e2pdf.element.create(type, page, properties, false, true);\n                         jQuery(this).append(el);\n                         e2pdf.properties.render(el);\n+                        var history = [];\n+                        history.push(el.clone(true));\n+                        e2pdf.history.set('element_create', history);\n                     }\n                     e2pdf.static.drag.page = null;\n                 }\n             });\n-            page.contextmenu(function (e) {\n-                if (jQuery(e.target).hasClass('e2pdf-page')) {\n-                    e2pdf.contextMenu(e, page);\n-                    e.preventDefault();\n+            if (page.hasClass('ui-selectable')) {\n+                try {\n+                    page.selectable('destroy');\n+                    page.removeData('selectable');\n+                } catch (e) {\n                 }\n-            });\n+            }\n             page.selectable(\n                     {\n                         filter: '.e2pdf-element',\n@@ -7511,8 +7607,97 @@\n                         unselected: function (event, ui) {\n                             e2pdf.element.unselect(jQuery(ui.unselected));\n                         }\n-                    });\n+                    }\n+            );\n+        },\n+        \u002F\u002F e2pdf.pages.source\n+        source: function (page_id) {\n+            var page = jQuery('\u003Cdiv>', {\n+                'class': 'e2pdf-page ui-droppable',\n+                'width': jQuery('.e2pdf-tpl').attr('data-width'),\n+                'height': jQuery('.e2pdf-tpl').attr('data-height'),\n+                'data-width': jQuery('.e2pdf-tpl').attr('data-width'),\n+                'data-height': jQuery('.e2pdf-tpl').attr('data-height')\n+            }).attr('data-page_id', page_id).append(\n+                    jQuery('\u003Cdiv>', {'class': 'page-options-icons'}).append(\n+                    jQuery('\u003Ca>', {\n+                        'href': 'javascript:void(0);',\n+                        'class': 'page-options-icon e2pdf-up-page e2pdf-link'\n+                    }).append(\n+                    jQuery('\u003Ci>', {'class': 'dashicons dashicons-arrow-up-alt2'})\n+                    ),\n+                    jQuery('\u003Ca>', {\n+                        'href': 'javascript:void(0);',\n+                        'class': 'page-options-icon e2pdf-down-page e2pdf-link'\n+                    }).append(\n+                    jQuery('\u003Ci>', {'class': 'dashicons dashicons-arrow-down-alt2'})\n+                    ),\n+                    jQuery('\u003Ca>', {\n+                        'href': 'javascript:void(0);',\n+                        'class': 'page-options-icon e2pdf-page-options e2pdf-modal e2pdf-link',\n+                        'data-modal': 'page-options'\n+                    }).append(\n+                    jQuery('\u003Ci>', {'class': 'dashicons dashicons-admin-generic'})\n+                    ),\n+                    jQuery('\u003Ca>', {\n+                        'href': 'javascript:void(0);',\n+                        'class': 'page-options-icon e2pdf-delete-page e2pdf-link'\n+                    }).append(\n+                    jQuery('\u003Ci>', {'class': 'dashicons dashicons-no'})\n+                    )\n+                    ),\n+                    jQuery('\u003Cdiv>', {'class': 'e2pdf-guide e2pdf-guide-h'}),\n+                    jQuery('\u003Cdiv>', {'class': 'e2pdf-guide e2pdf-guide-v'})\n+                    );\n+            return page;\n+        },\n+        \u002F\u002F e2pdf.pages.rebuildPages\n+        rebuildPages: function () {\n+            jQuery('.e2pdf-page').each(function (index) {\n+                if (!e2pdf.pdf.settings.get('pdf')) {\n+                    if (index + 1 === 1) {\n+                        jQuery(this).find('.e2pdf-up-page').attr('disabled', 'disabled');\n+                    } else {\n+                        jQuery(this).find('.e2pdf-up-page').attr('disabled', false);\n+                    }\n+\n+                    if (index + 1 === jQuery('.e2pdf-page').length) {\n+                        jQuery(this).find('.e2pdf-down-page').attr('disabled', 'disabled');\n+                    } else {\n+                        jQuery(this).find('.e2pdf-down-page').attr('disabled', false);\n+                    }\n+                }\n+                jQuery(this).attr('data-page_id', index + 1);\n+            });\n+            e2pdf.welcomeScreen();\n+        },\n+        \u002F\u002F e2pdf.pages.createPage\n+        createPage: function (page, properties, actions, onload) {\n+            e2pdf.pages.rebuildPages();\n+            var newpage = true;\n+            if (page) {\n+                var newpage = false;\n+            }\n+            if (!properties) {\n+                properties = {};\n+            }\n+            if (!actions) {\n+                actions = {};\n+            }\n             if (newpage) {\n+                var page_id = parseInt(jQuery('.e2pdf-page').length) + 1;\n+                var page = e2pdf.pages.source(page_id);\n+            }\n+            page.data('data-type', 'e2pdf-page');\n+            e2pdf.properties.apply(page, properties, onload);\n+            e2pdf.actions.apply(page, actions);\n+            e2pdf.pages.initEvents(page);\n+            if (newpage) {\n+                if (!onload) {\n+                    var history = [];\n+                    history.push(page.clone(true));\n+                    e2pdf.history.set('element_create', history);\n+                }\n                 jQuery('.e2pdf-tpl .e2pdf-tpl-inner').append(page);\n                 e2pdf.pages.rebuildPages();\n                 e2pdf.event.fire('after.pages.createPage.newpage');\n@@ -7615,6 +7800,24 @@\n             }\n \n             menu.find('ul.e2pdf-context-menu').append(\n+                    jQuery('\u003Cli>', {'class': 'e2pdf-inner-context-menu e2pdf-paste-menu e2pdf-hide'}).append(\n+                    jQuery('\u003Ca>', {'href': 'javascript:void(0);'}).append(jQuery('\u003Cspan>').html(e2pdf.lang.get('Quick Props')), jQuery('\u003Cspan>', {'class': 'e2pdf-inner-context-arrow'}))\n+                    ,\n+                    jQuery('\u003Cul>', {'class': 'e2pdf-sub-context-menu e2pdf-quickprops-menu'}).append(\n+                    jQuery('\u003Cli>').append(\n+                    jQuery('\u003Ca>', {'href': 'javascript:void(0);', 'class': 'e2pdf-quick-readonly', 'data-value': '1', 'type': 'style'}).html(e2pdf.lang.get('Read-Only'))\n+                    ),\n+                    jQuery('\u003Cli>').append(\n+                    jQuery('\u003Ca>', {'href': 'javascript:void(0);', 'class': 'e2pdf-quick-readonly', 'data-value': '0', 'type': 'style'}).html(e2pdf.lang.get('No Read-Only'))\n+                    ),\n+                    jQuery('\u003Cli>').append(\n+                    jQuery('\u003Ca>', {'href': 'javascript:void(0);', 'class': 'e2pdf-quick-border', 'data-value': '1', 'type': 'style'}).html(e2pdf.lang.get('Border'))\n+                    ),\n+                    jQuery('\u003Cli>').append(\n+                    jQuery('\u003Ca>', {'href': 'javascript:void(0);', 'class': 'e2pdf-quick-border', 'data-value': '0', 'type': 'style'}).html(e2pdf.lang.get('No Border'))\n+                    )\n+                    )\n+                    ),\n                     jQuery('\u003Cli>', {'class': 'e2pdf-inner-context-menu'}).append(\n                     jQuery('\u003Ca>', {'href': 'javascript:void(0);'}).append(jQuery('\u003Cspan>').html(e2pdf.lang.get('Lock \u002F Hide')), jQuery('\u003Cspan>', {'class': 'e2pdf-inner-context-arrow'}))\n                     ,\n@@ -7762,6 +7965,370 @@\n             }\n             e2pdf.properties.set(el, 'width', parseFloat(el.css('width')));\n             e2pdf.properties.set(el, 'height', parseFloat(el.css('height')));\n+            e2pdf.properties.set(el, 'page_id', el.closest('.e2pdf-page').attr('data-page_id'));\n+        },\n+        \u002F\u002F e2pdf.element.initEvents\n+        initEvents: function (element, page) {\n+            var min_width = 2;\n+            var min_height = 2;\n+            if (element.data('data-type') == 'e2pdf-rectangle') {\n+                min_height = 1;\n+                min_width = 1;\n+            }\n+            if (!page) {\n+                page = element.closest('.e2pdf-page');\n+            }\n+            element.off('contextmenu');\n+            element.contextmenu(function (e) {\n+                e2pdf.contextMenu(e, element);\n+                e.preventDefault();\n+            });\n+            if (element.hasClass('ui-draggable')) {\n+                try {\n+                    element.draggable('destroy');\n+                    element.removeData('ui-draggable');\n+                } catch (e) {\n+\n+                }\n+            }\n+            element.draggable({\n+                cancel: '.no-drag',\n+                handle: '.e2pdf-drag',\n+                containment: jQuery(page),\n+                stop: function (ev, ui) {\n+                    var page = jQuery(this).closest('.e2pdf-page');\n+                    for (var key in e2pdf.element.selected) {\n+                        var selected = e2pdf.element.selected[key];\n+                        if (selected.hasClass('e2pdf-width-auto')) {\n+                            selected.css({'width': 'auto'});\n+                        }\n+                        if (selected.hasClass('e2pdf-height-auto')) {\n+                            selected.css({'height': 'auto'});\n+                        }\n+                        e2pdf.properties.set(selected, 'top', Math.max(0, e2pdf.helper.getFloat(selected.css('top'))));\n+                        e2pdf.properties.set(selected, 'left', Math.max(0, e2pdf.helper.getFloat(selected.css('left'))));\n+                    }\n+                    jQuery('.page-options-icons').css('z-index', '');\n+                    e2pdf.event.fire('after.element.moved');\n+                    e2pdf.element.unselect();\n+                    jQuery('.e2pdf-guide-v, .e2pdf-guide-h').hide();\n+                },\n+                drag: function (ev, ui) {\n+                    var left = (ev.clientX - e2pdf.zoom.click.x + ui.originalPosition.left) \u002F e2pdf.zoom.zoom;\n+                    var top = (ev.clientY - e2pdf.zoom.click.y + ui.originalPosition.top) \u002F e2pdf.zoom.zoom;\n+                    left = Math.min(left, e2pdf.static.drag.max_left);\n+                    top = Math.min(top, e2pdf.static.drag.max_top);\n+                    ui.position = {\n+                        left: Math.max(e2pdf.static.drag.min_left, left),\n+                        top: Math.max(e2pdf.static.drag.min_top, top)\n+                    };\n+                    var diff_top = ui.position.top - e2pdf.properties.getValue(jQuery(this), 'top', 'float');\n+                    var diff_left = ui.position.left - e2pdf.properties.getValue(jQuery(this), 'left', 'float');\n+                    for (var key in e2pdf.element.selected) {\n+                        var selected = e2pdf.element.selected[key];\n+                        if (!selected.is(jQuery(this))) {\n+                            selected.finish().animate({\n+                                left: e2pdf.properties.getValue(selected, 'left', 'float') + diff_left,\n+                                top: e2pdf.properties.getValue(selected, 'top', 'float') + diff_top\n+                            }, 0);\n+                        }\n+                    }\n+                    var guides = {top: {dist: e2pdf.static.guide.distance + 1}, left: {dist: e2pdf.static.guide.distance + 1}};\n+                    var w = parseFloat(jQuery(this).css('width'));\n+                    var h = parseFloat(jQuery(this).css('height'));\n+                    var el_guides = e2pdf.guide.calc(null, ui.position, w, h);\n+                    jQuery.each(e2pdf.static.guide.guides, function (i, guide) {\n+                        jQuery.each(el_guides, function (i, elemGuide) {\n+                            if (guide.type == elemGuide.type) {\n+                                var prop = guide.type == \"h\" ? \"top\" : \"left\";\n+                                var d = Math.abs(elemGuide[prop] - guide[prop]);\n+                                if (d \u003C guides[prop].dist) {\n+                                    guides[prop].dist = d;\n+                                    guides[prop].offset = elemGuide[prop] - ui.position[prop];\n+                                    guides[prop].guide = guide;\n+                                }\n+                            }\n+                        });\n+                    });\n+                    if (guides.top.dist \u003C= e2pdf.static.guide.distance) {\n+                        jQuery(this).closest('.e2pdf-page').find(\".e2pdf-guide-h\").css(\"top\", guides.top.guide.top).show();\n+                        var snap_top = guides.top.guide.top - guides.top.offset;\n+                        if (e2pdf.static.drag.max_top >= snap_top && snap_top >= e2pdf.static.drag.min_top) {\n+                            ui.position.top = snap_top;\n+                            var guide_diff_top = ui.position.top - e2pdf.properties.getValue(jQuery(this), 'top', 'float');\n+                            for (var key in e2pdf.element.selected) {\n+                                var selected = e2pdf.element.selected[key];\n+                                if (!selected.is(jQuery(this))) {\n+                                    selected.finish().animate({\n+                                        top: e2pdf.properties.getValue(selected, 'top', 'float') + guide_diff_top\n+                                    }, 0);\n+                                }\n+                            }\n+                        }\n+                    } else {\n+                        jQuery('.e2pdf-guide-h').hide();\n+                    }\n+                    if (guides.left.dist \u003C= e2pdf.static.guide.distance) {\n+                        jQuery(this).closest('.e2pdf-page').find(\".e2pdf-guide-v\").css(\"left\", guides.left.guide.left).show();\n+                        var snap_left = guides.left.guide.left - guides.left.offset;\n+                        if (e2pdf.static.drag.max_left >= snap_left && snap_left >= e2pdf.static.drag.min_left) {\n+                            ui.position.left = snap_left;\n+                            var guide_diff_left = ui.position.left - e2pdf.properties.getValue(jQuery(this), 'left', 'float');\n+                            for (var key in e2pdf.element.selected) {\n+                                var selected = e2pdf.element.selected[key];\n+                                if (!selected.is(jQuery(this))) {\n+                                    selected.finish().animate({\n+                                        left: e2pdf.properties.getValue(selected, 'left', 'float') + guide_diff_left\n+                                    }, 0);\n+                                }\n+                            }\n+                        }\n+                    } else {\n+                        jQuery('.e2pdf-guide-v').hide();\n+                    }\n+                },\n+                start: function (ev, ui) {\n+                    e2pdf.element.select(jQuery(this));\n+                    e2pdf.static.drag.min_left = 0;\n+                    e2pdf.static.drag.max_left = jQuery(this).closest('.e2pdf-page').width();\n+                    e2pdf.static.drag.min_top = 0;\n+                    e2pdf.static.drag.max_top = jQuery(this).closest('.e2pdf-page').height();\n+\n+                    var history = [];\n+                    for (var key in e2pdf.element.selected) {\n+                        var selected = e2pdf.element.selected[key];\n+                        history.push(selected.clone(true));\n+                        if (selected.hasClass('e2pdf-width-auto')) {\n+                            selected.css({\"width\": \"auto\"});\n+                        }\n+                        if (selected.hasClass('e2pdf-height-auto')) {\n+                            selected.css({\"height\": \"auto\"});\n+                        }\n+                        var padding_top = e2pdf.helper.getFloat(selected.css('padding-top'));\n+                        var padding_left = e2pdf.helper.getFloat(selected.css('padding-left'));\n+                        var padding_right = e2pdf.helper.getFloat(selected.css('padding-right'));\n+                        var padding_bottom = e2pdf.helper.getFloat(selected.css('padding-bottom'));\n+                        var border_top = e2pdf.helper.getFloat(selected.css('border-top-width'));\n+                        var border_left = e2pdf.helper.getFloat(selected.css('border-left-width'));\n+                        var border_right = e2pdf.helper.getFloat(selected.css('border-right-width'));\n+                        var border_bottom = e2pdf.helper.getFloat(selected.css('border-bottom-width'));\n+                        e2pdf.static.drag.min_left = Math.max(e2pdf.properties.getValue(jQuery(this), 'left', 'float') - e2pdf.properties.getValue(selected, 'left', 'float'), e2pdf.static.drag.min_left);\n+                        e2pdf.static.drag.min_top = Math.max(e2pdf.properties.getValue(jQuery(this), 'top', 'float') - e2pdf.properties.getValue(selected, 'top', 'float'), e2pdf.static.drag.min_top);\n+                        e2pdf.static.drag.max_left = Math.min(selected.closest('.e2pdf-page').width() - selected.width() - padding_left - padding_right - border_left - border_right + (e2pdf.properties.getValue(jQuery(this), 'left', 'float') - e2pdf.properties.getValue(selected, 'left', 'float')), e2pdf.static.drag.max_left);\n+                        e2pdf.static.drag.max_top = Math.min(selected.closest('.e2pdf-page').height() - selected.height() - padding_top - padding_bottom - border_top - border_bottom + (e2pdf.properties.getValue(jQuery(this), 'top', 'float') - e2pdf.properties.getValue(selected, 'top', 'float')), e2pdf.static.drag.max_top);\n+                    }\n+                    e2pdf.history.set('element_change', history);\n+                    e2pdf.zoom.click.x = ev.clientX;\n+                    e2pdf.zoom.click.y = ev.clientY;\n+                    jQuery('.page-options-icons').css('z-index', -1);\n+                }\n+            });\n+            if (element.hasClass('e2pdf-resizable')) {\n+                if (element.hasClass('ui-resizable')) {\n+                    try {\n+                        element.resizable('destroy');\n+                        element.removeData('ui-resizable');\n+                    } catch (e) {\n+\n+                    }\n+                }\n+                element.resizable({\n+                    handles: 'n, e, s, w, ne, se, sw, nw',\n+                    aspectRatio: false,\n+                    minHeight: min_height,\n+                    minWidth: min_width,\n+                    start: function (ev, ui) {\n+                        var _process = function (el, resize) {\n+                            var left = e2pdf.helper.getFloat(el.css('left'));\n+                            var top = e2pdf.helper.getFloat(el.css('top'));\n+                            var page_width = e2pdf.helper.getFloat(el.closest('.e2pdf-page').css('width'));\n+                            var page_height = e2pdf.helper.getFloat(el.closest('.e2pdf-page').css('height'));\n+                            var padding_top = e2pdf.helper.getFloat(el.css('padding-top'));\n+                            var padding_left = e2pdf.helper.getFloat(el.css('padding-left'));\n+                            var padding_right = e2pdf.helper.getFloat(el.css('padding-right'));\n+                            var padding_bottom = e2pdf.helper.getFloat(el.css('padding-bottom'));\n+                            var border_top = e2pdf.helper.getFloat(el.css('border-top-width'));\n+                            var border_left = e2pdf.helper.getFloat(el.css('border-left-width'));\n+                            var border_right = e2pdf.helper.getFloat(el.css('border-right-width'));\n+                            var border_bottom = e2pdf.helper.getFloat(el.css('border-bottom-width'));\n+                            var width = e2pdf.helper.getFloat(el.css('width'));\n+                            var height = e2pdf.helper.getFloat(el.css('height'));\n+                            el.resizable(\"option\", \"maxWidth\", page_width - left);\n+                            el.resizable(\"option\", \"maxHeight\", page_height - top);\n+                            if (jQuery(ev.originalEvent.target).hasClass('ui-resizable-w') || jQuery(ev.originalEvent.target).hasClass('ui-resizable-sw')) {\n+                                el.resizable(\"option\", \"maxWidth\", left + width);\n+                            } else if (jQuery(ev.originalEvent.target).hasClass('ui-resizable-n') || jQuery(ev.originalEvent.target).hasClass('ui-resizable-ne')) {\n+                                el.resizable(\"option\", \"maxHeight\", top + height);\n+                            } else if (jQuery(ev.originalEvent.target).hasClass('ui-resizable-nw')) {\n+                                el.resizable(\"option\", \"maxWidth\", left + width);\n+                                el.resizable(\"option\", \"maxHeight\", top + height);\n+                            }\n+                            if (resize) {\n+                                ui.originalSize.width = ui.originalSize.width + padding_left + padding_right + border_left + border_right;\n+                                ui.originalSize.height = ui.originalSize.height + padding_top + padding_bottom + border_top + border_bottom;\n+                            }\n+                        };\n+                        _process(jQuery(this), true);\n+                        e2pdf.zoom.click.x = ev.clientX;\n+                        e2pdf.zoom.click.y = ev.clientY;\n+\n+                        var history = [];\n+                        history.push(jQuery(this).clone(true));\n+                        jQuery('.e2pdf-selected').not(jQuery(this)).each(function () {\n+                            var selected = jQuery(this);\n+                            history.push(selected.clone(true));\n+                            var width = e2pdf.helper.getFloat(selected.css('width'));\n+                            var height = e2pdf.helper.getFloat(selected.css('height'));\n+                            selected.data(\"ui-resizable-alsoresize\", {\n+                                width: width,\n+                                height: height,\n+                                left: e2pdf.helper.getFloat(selected.css('left')),\n+                                top: e2pdf.helper.getFloat(selected.css('top'))\n+                            });\n+                            _process(jQuery(this), false);\n+                        });\n+                        e2pdf.history.set('element_change', history);\n+                        e2pdf.static.guide.guides = jQuery.map(jQuery(this).closest('.e2pdf-page').find('.e2pdf-element').not('.e2pdf-selected'), e2pdf.guide.calc);\n+                        e2pdf.static.guide.guides = jQuery.merge(e2pdf.static.guide.guides, e2pdf.guide.calc(jQuery(this).closest('.e2pdf-page'), null, null, null, false));\n+                    },\n+                    resize: function (ev, ui) {\n+                        if (jQuery(this).data('uiResizable')._aspectRatio && ui.element.data(\"ui-resizable\") && typeof ui.element.data(\"ui-resizable\").axis != 'undefined') {\n+                            var axis = ui.element.data(\"ui-resizable\").axis;\n+                            if (axis != 'nw' && axis != 'sw') {\n+                                ui.size.width += jQuery(ui.element).outerWidth() - jQuery(ui.element).width();\n+                                ui.size.height += jQuery(ui.element).outerHeight() - jQuery(ui.element).height();\n+                            }\n+                        }\n+                        var delta = {\n+                            height: (jQuery(ui.element).outerHeight() - ui.originalSize.height) || 0,\n+                            width: (jQuery(ui.element).outerWidth() - ui.originalSize.width) || 0,\n+                            top: (ui.position.top - ui.originalPosition.top) || 0,\n+                            left: (ui.position.left - ui.originalPosition.left) || 0\n+                        };\n+                        jQuery('.e2pdf-selected').not(jQuery(this)).each(function () {\n+                            var el = jQuery(this), start = jQuery(this).data(\"ui-resizable-alsoresize\");\n+                            var style = {};\n+                            var css = [\"width\", \"height\", \"top\", \"left\"];\n+                            jQuery.each(css, function (i, prop) {\n+                                var sum = (start[prop] || 0) + (delta[prop] || 0);\n+                                if (sum) {\n+                                    if (prop == 'width') {\n+                                        if (sum >= 0 && sum \u003C= el.resizable(\"option\", \"maxWidth\")) {\n+                                            style[prop] = sum;\n+                                        }\n+                                    } else if (prop == 'height') {\n+                                        if (sum >= 0 && sum \u003C= el.resizable(\"option\", \"maxHeight\")) {\n+                                            style[prop] = sum;\n+                                        }\n+                                    } else if (prop == 'left') {\n+                                        if (sum >= 0) {\n+                                            style[prop] = sum;\n+                                        }\n+                                    } else if (prop == 'top') {\n+                                        if (sum >= 0) {\n+                                            style[prop] = sum;\n+                                        }\n+                                    }\n+                                }\n+                            });\n+                            el.css(style);\n+                        });\n+\n+                        var handle = ui.element.data(\"ui-resizable\").axis;\n+                        jQuery('.e2pdf-guide-h, .e2pdf-guide-v').hide();\n+                        var w = parseFloat(jQuery(this).css('width'));\n+                        var h = parseFloat(jQuery(this).css('height'));\n+                        if (handle.indexOf('n') !== -1 || handle.indexOf('s') !== -1) {\n+                            var hGuides = {dist: e2pdf.static.guide.distance + 1};\n+                            var hPosition = ui.position.top;\n+                            var hEdgeValue = ui.position.top;\n+                            if (handle.indexOf('s') !== -1) {\n+                                hEdgeValue = ui.position.top + h;\n+                            }\n+                            jQuery.each(e2pdf.static.guide.guides, function (i, guide) {\n+                                if (guide.type == \"h\") {\n+                                    var d = Math.abs(hEdgeValue - guide.top);\n+                                    if (d \u003C hGuides.dist) {\n+                                        hGuides.dist = d;\n+                                        hGuides.guide = guide;\n+                                        hGuides.offset = hEdgeValue - hPosition;\n+                                    }\n+                                }\n+                            });\n+                            if (hGuides.dist \u003C= e2pdf.static.guide.distance) {\n+                                jQuery(this).closest('.e2pdf-page').find('.e2pdf-guide-h').css('top', hGuides.guide.top).show();\n+                                var snap_top = hGuides.guide.top - hGuides.offset;\n+\n+                                if (handle.indexOf('n') !== -1) {\n+                                    var heightDiff = ui.position.top - snap_top;\n+                                    ui.position.top = snap_top;\n+                                    ui.size.height += heightDiff;\n+                                } else if (handle.indexOf('s') !== -1) {\n+                                    var newHeight = hGuides.guide.top - ui.position.top;\n+                                    if (newHeight >= ui.element.resizable('option', 'minHeight')) {\n+                                        ui.size.height = newHeight;\n+                                    }\n+                                }\n+                            }\n+                        }\n+                        if (handle.indexOf('w') !== -1 || handle.indexOf('e') !== -1) {\n+                            var vGuides = {dist: e2pdf.static.guide.distance + 1};\n+                            var vPosition = ui.position.left;\n+                            var vEdgeValue = ui.position.left;\n+                            if (handle.indexOf('e') !== -1) {\n+                                vEdgeValue = ui.position.left + w;\n+                            }\n+                            jQuery.each(e2pdf.static.guide.guides, function (i, guide) {\n+                                if (guide.type == \"v\") {\n+                                    var d = Math.abs(vEdgeValue - guide.left);\n+                                    if (d \u003C vGuides.dist) {\n+                                        vGuides.dist = d;\n+                                        vGuides.guide = guide;\n+                                        vGuides.offset = vEdgeValue - vPosition;\n+                                    }\n+                                }\n+                            });\n+                            if (vGuides.dist \u003C= e2pdf.static.guide.distance) {\n+                                jQuery(this).closest('.e2pdf-page').find('.e2pdf-guide-v').css('left', vGuides.guide.left).show();\n+                                var snap_left = vGuides.guide.left - vGuides.offset;\n+                                if (handle.indexOf('w') !== -1) {\n+                                    var widthDiff = ui.position.left - snap_left;\n+                                    ui.position.left = snap_left;\n+                                    ui.size.width += widthDiff;\n+                                } else if (handle.indexOf('e') !== -1) {\n+                                    var newWidth = vGuides.guide.left - ui.position.left;\n+                                    if (newWidth >= ui.element.resizable('option', 'minWidth')) {\n+                                        ui.size.width = newWidth;\n+                                    }\n+                                }\n+                            }\n+                        }\n+                    },\n+                    stop: function (event, ui) {\n+                        ui.size.width = Math.round(ui.size.width);\n+                        ui.size.height = Math.round(ui.size.height);\n+                        var _process = function (el, width, height) {\n+                            if (el.data('data-type') === 'e2pdf-signature' || el.data('data-type') === 'e2pdf-image' || el.data('data-type') === 'e2pdf-qrcode' || el.data('data-type') === 'e2pdf-graph') {\n+                                width += el.outerWidth() - el.width();\n+                                height += el.outerWidth() - el.width();\n+                            }\n+                            e2pdf.properties.set(el, 'width', width);\n+                            e2pdf.properties.set(el, 'height', height);\n+                            e2pdf.properties.set(el, 'top', Math.max(0, e2pdf.helper.getFloat(el.css('top'))));\n+                            e2pdf.properties.set(el, 'left', Math.max(0, e2pdf.helper.getFloat(el.css('left'))));\n+                            if (el.data('data-type') === 'e2pdf-signature' || el.data('data-type') === 'e2pdf-image' || el.data('data-type') === 'e2pdf-qrcode' || el.data('data-type') === 'e2pdf-graph') {\n+                                e2pdf.properties.render(el);\n+                            }\n+                        };\n+                        _process(jQuery(this), jQuery(this).width(), jQuery(this).height());\n+                        jQuery('.e2pdf-selected').not(jQuery(this)).each(function () {\n+                            _process(jQuery(this), jQuery(this).width(), jQuery(this).height());\n+                            jQuery(this).removeData(\"resizable-alsoresize\");\n+                        });\n+                        jQuery('.e2pdf-guide-v, .e2pdf-guide-h').hide();\n+                    }\n+                });\n+            }\n         },\n         \u002F\u002F e2pdf.element.create\n         create: function (type, page, properties, actions, default_properties, onload, element_id) {\n@@ -7811,7 +8378,6 @@\n                             properties['border_color'] = '#000000';\n                         }\n                     }\n-\n                     var element = jQuery('\u003Cdiv>', {'class': 'e2pdf-el-wrapper e2pdf-resizable'}).append(\n                             jQuery('\u003Ctextarea>', {'type': 'text', 'class': 'e2pdf-textarea e2pdf-inner-element'}).val(properties['value'] ? properties['value'] : ''),\n                             jQuery('\u003Ci>', {'class': 'e2pdf-drag'})\n@@ -7888,7 +8454,6 @@\n                             properties['border_color'] = '#000000';\n                         }\n                     }\n-\n                     var element = jQuery('\u003Cdiv>', {'class': 'e2pdf-el-wrapper e2pdf-resizable'}).append(\n                             jQuery('\u003Cselect>', {'class': 'e2pdf-select e2pdf-inner-element'}).append(\n                             ),\n@@ -7912,6 +8477,15 @@\n                         if (!properties.hasOwnProperty('dimension')) {\n                             properties['dimension'] = '1';\n                         }\n+                        if (!properties.hasOwnProperty('opacity')) {\n+                            properties['opacity'] = '1';\n+                        }\n+\n+                    } else {\n+                        \u002F\u002F backward compatibility\n+                        if (!properties.hasOwnProperty('opacity')) {\n+                            properties['opacity'] = '1';\n+                        }\n                     }\n                     var element = jQuery('\u003Cdiv>', {'class': 'e2pdf-el-wrapper e2pdf-loader e2pdf-resizable'}).append(\n                             jQuery('\u003Cimg>', {'class': 'e2pdf-signature e2pdf-inner-element'}),\n@@ -7965,6 +8539,9 @@\n                         if (!properties.hasOwnProperty('vertical')) {\n                             properties['vertical'] = 'bottom';\n                         }\n+                        if (!properties.hasOwnProperty('pdf_resample')) {\n+                            properties['pdf_resample'] = '-1';\n+                        }\n                     } else {\n                         \u002F\u002F backward compatibility\n                         if (!properties.hasOwnProperty('block_dimension') && properties.hasOwnProperty('scale') && (properties['scale'] == '1' || properties['scale'] == '2')) {\n@@ -7973,6 +8550,9 @@\n                         if (!properties.hasOwnProperty('opacity')) {\n                             properties['opacity'] = '1';\n                         }\n+                        if (!properties.hasOwnProperty('pdf_resample')) {\n+                            properties['pdf_resample'] = '150';\n+                        }\n                     }\n                     var element = jQuery('\u003Cdiv>', {'class': 'e2pdf-el-wrapper e2pdf-loader e2pdf-resizable', 'width': '100px', height: '100px'}).append(\n                             jQuery('\u003Cimg>', {'class': 'e2pdf-image e2pdf-inner-element'}),\n@@ -7980,8 +8560,6 @@\n                             );\n                     break;\n                 case 'e2pdf-rectangle':\n-                    min_height = 1;\n-                    min_width = 1;\n                     if (default_properties) {\n                         if (!properties.hasOwnProperty('width') || properties['width'] === 'auto') {\n                             properties['width'] = '200';\n@@ -8184,10 +8762,6 @@\n             }\n \n             if (typeof element !== 'undefined') {\n-                element.contextmenu(function (e) {\n-                    e2pdf.contextMenu(e, element);\n-                    e.preventDefault();\n-                });\n                 if (!element_id) {\n                     var last_id = 0;\n                     jQuery('.e2pdf-tpl .e2pdf-element').each(function () {\n@@ -8213,263 +8787,7 @@\n                 element.css({\"position\": \"absolute\"});\n                 e2pdf.properties.apply(element, properties, onload);\n                 e2pdf.actions.apply(element, actions);\n-                element.draggable({\n-                    cancel: '.no-drag',\n-                    handle: \".e2pdf-drag\",\n-                    containment: jQuery(page),\n-                    stop: function (ev, ui) {\n-                        var page = jQuery(this).closest('.e2pdf-page');\n-                        for (var key in e2pdf.element.selected) {\n-                            var selected = e2pdf.element.selected[key];\n-                            if (selected.hasClass('e2pdf-width-auto')) {\n-                                selected.css({'width': 'auto'});\n-                            }\n-                            if (selected.hasClass('e2pdf-height-auto')) {\n-                                selected.css({'height': 'auto'});\n-                            }\n-\n-                            e2pdf.properties.set(selected, 'top', Math.max(0, e2pdf.helper.getFloat(selected.css('top'))));\n-                            e2pdf.properties.set(selected, 'left', Math.max(0, e2pdf.helper.getFloat(selected.css('left'))));\n-                        }\n-\n-                        jQuery('.page-options-icons').css('z-index', '');\n-                        e2pdf.event.fire('after.element.moved');\n-                        e2pdf.element.unselect();\n-                        jQuery(\".e2pdf-guide-v, .e2pdf-guide-h\").hide();\n-                    },\n-                    drag: function (ev, ui) {\n-                        var left = (ev.clientX - e2pdf.zoom.click.x + ui.originalPosition.left) \u002F e2pdf.zoom.zoom;\n-                        var top = (ev.clientY - e2pdf.zoom.click.y + ui.originalPosition.top) \u002F e2pdf.zoom.zoom;\n-                        left = Math.min(left, e2pdf.static.drag.max_left);\n-                        top = Math.min(top, e2pdf.static.drag.max_top);\n-                        ui.position = {\n-                            left: Math.max(e2pdf.static.drag.min_left, left),\n-                            top: Math.max(e2pdf.static.drag.min_top, top)\n-                        };\n-                        var diff_top = ui.position.top - e2pdf.properties.getValue(jQuery(this), 'top', 'float');\n-                        var diff_left = ui.position.left - e2pdf.properties.getValue(jQuery(this), 'left', 'float');\n-                        for (var key in e2pdf.element.selected) {\n-                            var selected = e2pdf.element.selected[key];\n-                            if (!selected.is(jQuery(this))) {\n-                                selected.finish().animate({\n-                                    left: e2pdf.properties.getValue(selected, 'left', 'float') + diff_left,\n-                                    top: e2pdf.properties.getValue(selected, 'top', 'float') + diff_top\n-                                }, 0);\n-                            }\n-                        }\n-\n-                        var guides = {top: {dist: e2pdf.static.guide.distance + 1}, left: {dist: e2pdf.static.guide.distance + 1}};\n-                        var w = parseFloat(jQuery(this).css('width'));\n-                        var h = parseFloat(jQuery(this).css('height'));\n-                        var el_guides = e2pdf.guide.calc(null, ui.position, w, h);\n-                        jQuery.each(e2pdf.static.guide.guides, function (i, guide) {\n-                            jQuery.each(el_guides, function (i, elemGuide) {\n-                                if (guide.type == elemGuide.type) {\n-                                    var prop = guide.type == \"h\" ? \"top\" : \"left\";\n-                                    var d = Math.abs(elemGuide[prop] - guide[prop]);\n-                                    if (d \u003C guides[prop].dist) {\n-                                        guides[prop].dist = d;\n-                                        guides[prop].offset = elemGuide[prop] - ui.position[prop];\n-                                        guides[prop].guide = guide;\n-                                    }\n-                                }\n-                            });\n-                        });\n-                        if (guides.top.dist \u003C= e2pdf.static.guide.distance) {\n-                            jQuery(this).closest('.e2pdf-page').find(\".e2pdf-guide-h\").css(\"top\", guides.top.guide.top).show();\n-                            var snap_top = guides.top.guide.top - guides.top.offset;\n-                            if (e2pdf.static.drag.max_top >= snap_top && snap_top >= e2pdf.static.drag.min_top) {\n-                                ui.position.top = snap_top;\n-                                var guide_diff_top = ui.position.top - e2pdf.properties.getValue(jQuery(this), 'top', 'float');\n-                                for (var key in e2pdf.element.selected) {\n-                                    var selected = e2pdf.element.selected[key];\n-                                    if (!selected.is(jQuery(this))) {\n-                                        selected.finish().animate({\n-                                            top: e2pdf.properties.getValue(selected, 'top', 'float') + guide_diff_top\n-                                        }, 0);\n-                                    }\n-                                }\n-                            }\n-                        } else {\n-                            jQuery(\".e2pdf-guide-h\").hide();\n-                        }\n-\n-                        if (guides.left.dist \u003C= e2pdf.static.guide.distance) {\n-                            jQuery(this).closest('.e2pdf-page').find(\".e2pdf-guide-v\").css(\"left\", guides.left.guide.left).show();\n-                            var snap_left = guides.left.guide.left - guides.left.offset;\n-                            if (e2pdf.static.drag.max_left >= snap_left && snap_left >= e2pdf.static.drag.min_left) {\n-                                ui.position.left = snap_left;\n-                                var guide_diff_left = ui.position.left - e2pdf.properties.getValue(jQuery(this), 'left', 'float');\n-                                for (var key in e2pdf.element.selected) {\n-                                    var selected = e2pdf.element.selected[key];\n-                                    if (!selected.is(jQuery(this))) {\n-                                        selected.finish().animate({\n-                                            left: e2pdf.properties.getValue(selected, 'left', 'float') + guide_diff_left\n-                                        }, 0);\n-                                    }\n-                                }\n-                            }\n-                        } else {\n-                            jQuery(\".e2pdf-guide-v\").hide();\n-                        }\n-\n-                    },\n-                    start: function (ev, ui) {\n-                        e2pdf.element.select(jQuery(this));\n-                        e2pdf.static.drag.min_left = 0;\n-                        e2pdf.static.drag.max_left = jQuery(this).closest('.e2pdf-page').width();\n-                        e2pdf.static.drag.min_top = 0;\n-                        e2pdf.static.drag.max_top = jQuery(this).closest('.e2pdf-page').height();\n-                        for (var key in e2pdf.element.selected) {\n-                            var selected = e2pdf.element.selected[key];\n-                            if (selected.hasClass('e2pdf-width-auto')) {\n-                                selected.css({\"width\": \"auto\"});\n-                            }\n-\n-                            if (selected.hasClass('e2pdf-height-auto')) {\n-                                selected.css({\"height\": \"auto\"});\n-                            }\n-\n-                            var padding_top = e2pdf.helper.getFloat(selected.css('padding-top'));\n-                            var padding_left = e2pdf.helper.getFloat(selected.css('padding-left'));\n-                            var padding_right = e2pdf.helper.getFloat(selected.css('padding-right'));\n-                            var padding_bottom = e2pdf.helper.getFloat(selected.css('padding-bottom'));\n-                            var border_top = e2pdf.helper.getFloat(selected.css('border-top-width'));\n-                            var border_left = e2pdf.helper.getFloat(selected.css('border-left-width'));\n-                            var border_right = e2pdf.helper.getFloat(selected.css('border-right-width'));\n-                            var border_bottom = e2pdf.helper.getFloat(selected.css('border-bottom-width'));\n-                            e2pdf.static.drag.min_left = Math.max(e2pdf.properties.getValue(jQuery(this), 'left', 'float') - e2pdf.properties.getValue(selected, 'left', 'float'), e2pdf.static.drag.min_left);\n-                            e2pdf.static.drag.min_top = Math.max(e2pdf.properties.getValue(jQuery(this), 'top', 'float') - e2pdf.properties.getValue(selected, 'top', 'float'), e2pdf.static.drag.min_top);\n-                            e2pdf.static.drag.max_left = Math.min(selected.closest('.e2pdf-page').width() - selected.width() - padding_left - padding_right - border_left - border_right + (e2pdf.properties.getValue(jQuery(this), 'left', 'float') - e2pdf.properties.getValue(selected, 'left', 'float')), e2pdf.static.drag.max_left);\n-                            e2pdf.static.drag.max_top = Math.min(selected.closest('.e2pdf-page').height() - selected.height() - padding_top - padding_bottom - border_top - border_bottom + (e2pdf.properties.getValue(jQuery(this), 'top', 'float') - e2pdf.properties.getValue(selected, 'top', 'float')), e2pdf.static.drag.max_top);\n-                        }\n-\n-                        e2pdf.zoom.click.x = ev.clientX;\n-                        e2pdf.zoom.click.y = ev.clientY;\n-                        jQuery('.page-options-icons').css('z-index', -1);\n-                    }\n-                });\n-                if (element.hasClass('e2pdf-resizable')) {\n-                    element.resizable({\n-                        handles: 'n, e, s, w, ne, se, sw, nw',\n-                        aspectRatio: false,\n-                        minHeight: min_height,\n-                        minWidth: min_width,\n-                        start: function (ev, ui) {\n-                            var _process = function (el, resize) {\n-\n-                                var left = e2pdf.helper.getFloat(el.css('left'));\n-                                var top = e2pdf.helper.getFloat(el.css('top'));\n-                                var page_width = e2pdf.helper.getFloat(el.closest('.e2pdf-page').css('width'));\n-                                var page_height = e2pdf.helper.getFloat(el.closest('.e2pdf-page').css('height'));\n-                                var padding_top = e2pdf.helper.getFloat(el.css('padding-top'));\n-                                var padding_left = e2pdf.helper.getFloat(el.css('padding-left'));\n-                                var padding_right = e2pdf.helper.getFloat(el.css('padding-right'));\n-                                var padding_bottom = e2pdf.helper.getFloat(el.css('padding-bottom'));\n-                                var border_top = e2pdf.helper.getFloat(el.css('border-top-width'));\n-                                var border_left = e2pdf.helper.getFloat(el.css('border-left-width'));\n-                                var border_right = e2pdf.helper.getFloat(el.css('border-right-width'));\n-                                var border_bottom = e2pdf.helper.getFloat(el.css('border-bottom-width'));\n-                                var width = e2pdf.helper.getFloat(el.css('width'));\n-                                var height = e2pdf.helper.getFloat(el.css('height'));\n-                                el.resizable(\"option\", \"maxWidth\", page_width - left);\n-                                el.resizable(\"option\", \"maxHeight\", page_height - top);\n-                                if (jQuery(ev.originalEvent.target).hasClass('ui-resizable-w') || jQuery(ev.originalEvent.target).hasClass('ui-resizable-sw')) {\n-                                    el.resizable(\"option\", \"maxWidth\", left + width);\n-                                } else if (jQuery(ev.originalEvent.target).hasClass('ui-resizable-n') || jQuery(ev.originalEvent.target).hasClass('ui-resizable-ne')) {\n-                                    el.resizable(\"option\", \"maxHeight\", top + height);\n-                                } else if (jQuery(ev.originalEvent.target).hasClass('ui-resizable-nw')) {\n-                                    el.resizable(\"option\", \"maxWidth\", left + width);\n-                                    el.resizable(\"option\", \"maxHeight\", top + height);\n-                                }\n-\n-                                if (resize) {\n-                                    ui.originalSize.width = ui.originalSize.width + padding_left + padding_right + border_left + border_right;\n-                                    ui.originalSize.height = ui.originalSize.height + padding_top + padding_bottom + border_top + border_bottom;\n-                                }\n-                            };\n-                            _process(jQuery(this), true);\n-                            e2pdf.zoom.click.x = ev.clientX;\n-                            e2pdf.zoom.click.y = ev.clientY;\n-                            jQuery('.e2pdf-selected').not(jQuery(this)).each(function () {\n-                                var el = jQuery(this);\n-                                var width = e2pdf.helper.getFloat(el.css('width'));\n-                                var height = e2pdf.helper.getFloat(el.css('height'));\n-                                el.data(\"ui-resizable-alsoresize\", {\n-                                    width: width,\n-                                    height: height,\n-                                    left: e2pdf.helper.getFloat(el.css('left')),\n-                                    top: e2pdf.helper.getFloat(el.css('top'))\n-                                });\n-                                _process(jQuery(this), false);\n-                            });\n-                        },\n-                        resize: function (ev, ui) {\n-                            if (jQuery(this).data('uiResizable')._aspectRatio && ui.element.data(\"ui-resizable\") && typeof ui.element.data(\"ui-resizable\").axis != 'undefined') {\n-                                var axis = ui.element.data(\"ui-resizable\").axis;\n-                                if (axis != 'nw' && axis != 'sw') {\n-                                    ui.size.width += jQuery(ui.element).outerWidth() - jQuery(ui.element).width();\n-                                    ui.size.height += jQuery(ui.element).outerHeight() - jQuery(ui.element).height();\n-                                }\n-                            }\n-\n-                            var delta = {\n-                                height: (jQuery(ui.element).outerHeight() - ui.originalSize.height) || 0,\n-                                width: (jQuery(ui.element).outerWidth() - ui.originalSize.width) || 0,\n-                                top: (ui.position.top - ui.originalPosition.top) || 0,\n-                                left: (ui.position.left - ui.originalPosition.left) || 0\n-                            };\n-                            jQuery('.e2pdf-selected').not(jQuery(this)).each(function () {\n-                                var el = jQuery(this), start = jQuery(this).data(\"ui-resizable-alsoresize\");\n-                                var style = {};\n-                                var css = [\"width\", \"height\", \"top\", \"left\"];\n-                                jQuery.each(css, function (i, prop) {\n-                                    var sum = (start[prop] || 0) + (delta[prop] || 0);\n-                                    if (sum) {\n-                                        if (prop == 'width') {\n-                                            if (sum >= 0 && sum \u003C= el.resizable(\"option\", \"maxWidth\")) {\n-                                                style[prop] = sum;\n-                                            }\n-                                        } else if (prop == 'height') {\n-                                            if (sum >= 0 && sum \u003C= el.resizable(\"option\", \"maxHeight\")) {\n-                                                style[prop] = sum;\n-                                            }\n-                                        } else if (prop == 'left') {\n-                                            if (sum >= 0) {\n-                                                style[prop] = sum;\n-                                            }\n-                                        } else if (prop == 'top') {\n-                                            if (sum >= 0) {\n-                                                style[prop] = sum;\n-                                            }\n-                                        }\n-                                    }\n-                                });\n-                                el.css(style);\n-                            });\n-                        },\n-                        stop: function (event, ui) {\n-                            var _process = function (el, width, height) {\n-                                if (el.data('data-type') === 'e2pdf-signature' || el.data('data-type') === 'e2pdf-image' || el.data('data-type') === 'e2pdf-qrcode' || el.data('data-type') === 'e2pdf-graph') {\n-                                    width += el.outerWidth() - el.width();\n-                                    height += el.outerWidth() - el.width();\n-                                }\n-                                e2pdf.properties.set(el, 'width', width);\n-                                e2pdf.properties.set(el, 'height', height);\n-                                e2pdf.properties.set(el, 'top', Math.max(0, e2pdf.helper.getFloat(el.css('top'))));\n-                                e2pdf.properties.set(el, 'left', Math.max(0, e2pdf.helper.getFloat(el.css('left'))));\n-                                if (el.data('data-type') === 'e2pdf-signature' || el.data('data-type') === 'e2pdf-image' || el.data('data-type') === 'e2pdf-qrcode' || el.data('data-type') === 'e2pdf-graph') {\n-                                    e2pdf.properties.render(el);\n-                                }\n-                            };\n-                            _process(jQuery(this), jQuery(this).width(), jQuery(this).height());\n-                            jQuery('.e2pdf-selected').not(jQuery(this)).each(function () {\n-                                _process(jQuery(this), jQuery(this).width(), jQuery(this).height());\n-                                jQuery(this).removeData(\"resizable-alsoresize\");\n-                            });\n-                        }\n-                    });\n-                }\n+                e2pdf.element.initEvents(element, page);\n                 if (!onload) {\n                     e2pdf.event.fire('after.element.create');\n                 }\n@@ -8525,6 +8843,11 @@\n         },\n         \u002F\u002F e2pdf.element.focus\n         focus: function (el) {\n+            el.one('beforeinput', function (e) {\n+                var history = [];\n+                history.push(el.clone(true));\n+                e2pdf.history.set('element_change', history);\n+            });\n             var el_inner = el.find('.e2pdf-inner-element');\n             el_inner.focus();\n             el.addClass('e2pdf-focused');\n@@ -8555,6 +8878,126 @@\n             localStorage.removeItem('e2pdf_' + key);\n         }\n     },\n+    \u002F\u002F e2pdf.history\n+    history: {\n+        \u002F\u002F e2pdf.history.set\n+        set: function (action, elements, data) {\n+            if (elements && elements.length > 0) {\n+                var history = {\n+                    'action': action,\n+                    'elements': elements,\n+                    'data': data,\n+                };\n+                e2pdf.history.undoStack.push(history);\n+                if (e2pdf.history.undoStack.length > e2pdf_params['undo_limit']) {\n+                    e2pdf.history.undoStack.shift();\n+                }\n+                if (e2pdf.history.undoStack.length > 0) {\n+                    jQuery('.e2pdf-undo').removeClass('e2pdf-inactive');\n+                }\n+            }\n+        },\n+        \u002F\u002F e2pdf.history.undo\n+        undo: function () {\n+            var history = e2pdf.history.undoStack.pop();\n+            if (history) {\n+                e2pdf.element.unselect();\n+                if (history.action == 'element_change') {\n+                    for (var key in history.elements) {\n+                        var buffered = history.elements[key];\n+                        jQuery(\".e2pdf-element[data-element_id='\" + buffered.attr('data-element_id') + \"']\").first().replaceWith(buffered);\n+                        e2pdf.element.initEvents(buffered);\n+                        e2pdf.element.select(buffered);\n+                    }\n+                } else if (history.action == 'element_create') {\n+                    for (var key in history.elements) {\n+                        var buffered = history.elements[key];\n+                        if (buffered.hasClass('e2pdf-page')) {\n+                            jQuery(\".e2pdf-page[data-page_id='\" + buffered.attr('data-page_id') + \"']\").first().remove();\n+                            if (jQuery('.e2pdf-page').length == 0) {\n+                                e2pdf.history.undo();\n+                            }\n+                        } else {\n+                            jQuery(\".e2pdf-element[data-element_id='\" + buffered.attr('data-element_id') + \"']\").first().remove();\n+                        }\n+                    }\n+                } else if (history.action == 'element_delete') {\n+                    for (var key in history.elements) {\n+                        var buffered = history.elements[key];\n+                        var page = jQuery('.e2pdf-page[data-page_id=\"' + e2pdf.properties.getValue(buffered, 'page_id') + '\"]').first();\n+                        page.append(buffered);\n+                        e2pdf.element.initEvents(buffered, page);\n+                        e2pdf.element.select(buffered);\n+                    }\n+                } else if (history.action == 'page_change') {\n+                    for (var key in history.elements) {\n+                        var buffered = history.elements[key];\n+                        var page = e2pdf.pages.source(buffered.attr('data-page_id'));\n+                        page.data('data-type', 'e2pdf-page');\n+                        jQuery('.e2pdf-page[data-page_id=\"' + buffered.attr('data-page_id') + '\"]').first().replaceWith(page);\n+                        if (buffered.css('background-image')) {\n+                            page.css('background-image', buffered.css('background-image'));\n+                        }\n+                        buffered.find('.e2pdf-element').each(function () {\n+                            page.append(jQuery(this));\n+                            e2pdf.element.initEvents(jQuery(this), page);\n+                        });\n+                        e2pdf.pages.initEvents(page);\n+                        e2pdf.pages.rebuildPages();\n+                    }\n+                    if (history.data) {\n+                        jQuery('.e2pdf-up-page, .e2pdf-down-page').attr('disabled', 'disabled');\n+                        jQuery('.e2pdf-form-builder > input[name=\"pdf\"]').val(history.data);\n+                    }\n+                } else if (history.action == 'page_delete') {\n+                    for (var key in history.elements) {\n+                        var buffered = history.elements[key];\n+                        var page = e2pdf.pages.source(buffered.attr('data-page_id'));\n+                        page.data('data-type', 'e2pdf-page');\n+                        e2pdf.properties.apply(page, e2pdf.properties.get(buffered));\n+                        e2pdf.actions.apply(page, e2pdf.actions.get(buffered));\n+                        if (buffered.attr('data-page_id') == '1') {\n+                            jQuery('.e2pdf-tpl-inner').prepend(page);\n+                        } else {\n+                            page.insertAfter(jQuery('.e2pdf-tpl-inner').find('.e2pdf-page[data-page_id=\"' + (parseInt(buffered.attr('data-page_id')) - 1) + '\"]'));\n+                        }\n+                        if (buffered.css('background-image')) {\n+                            page.css('background-image', buffered.css('background-image'));\n+                        }\n+                        buffered.find('.e2pdf-element').each(function () {\n+                            page.append(jQuery(this));\n+                            e2pdf.element.initEvents(jQuery(this), page);\n+                        });\n+                        e2pdf.pages.initEvents(page);\n+                        e2pdf.pages.rebuildPages();\n+                    }\n+                    if (history.data) {\n+                        jQuery('.e2pdf-up-page, .e2pdf-down-page').attr('disabled', 'disabled');\n+                        jQuery('.e2pdf-form-builder > input[name=\"pdf\"]').val(history.data);\n+                    }\n+                } else if (history.action == 'wysiwyg') {\n+                    for (var key in history.elements) {\n+                        var buffered = history.elements[key];\n+                        buffered.focus();\n+                        document.execCommand('undo');\n+                    }\n+                }\n+                if (e2pdf.history.undoStack.length == 0) {\n+                    jQuery('.e2pdf-undo').addClass('e2pdf-inactive');\n+                }\n+            }\n+        },\n+        \u002F\u002F e2pdf.history.redo\n+        redo: function () {\n+\n+        },\n+        clear: function () {\n+            e2pdf.history.undoStack = [];\n+            jQuery('.e2pdf-undo').removeClass('e2pdf-inactive');\n+        },\n+        \u002F\u002F e2pdf.history.undoStack\n+        undoStack: []\n+    },\n     \u002F\u002F e2pdf.copy\n     copy: function (key, el) {\n         e2pdf.element.init(el);\n@@ -8727,6 +9170,7 @@\n                         }\n                     }\n \n+                    var history = [];\n                     for (var element in e2pdf.storage.get('elements')) {\n                         var buffered = e2pdf.storage.get('elements')[element];\n                         var properties = buffered.properties;\n@@ -8744,7 +9188,9 @@\n                         page.append(el);\n                         e2pdf.properties.render(el);\n                         e2pdf.element.select(el);\n+                        history.push(el.clone(true));\n                     }\n+                    e2pdf.history.set('element_create', history);\n                     e2pdf.event.fire('after.element.paste');\n                     break;\n                 case 'actions':\n@@ -8765,36 +9211,24 @@\n     wysiwyg: {\n         \u002F\u002F e2pdf.wysiwyg.apply\n         apply: function (el) {\n+            var history = [];\n+            history.push(el);\n+            e2pdf.history.set('wysiwyg', history);\n+            var html = '';\n             var command = el.attr('data-command');\n             var node = jQuery(e2pdf.wysiwyg.helper.getSelectedNode());\n-            if (command !== 'undo' && command !== 'redo' && command !== 'color') {\n-                if (node.hasClass('e2pdf-element')) {\n-                    var html_node = node;\n-                } else {\n-                    var html_node = node.closest('.e2pdf-element');\n-                }\n-                if (html_node && html_node.find('.e2pdf-html').length > 0) {\n-                    if (html_node.find('textarea.e2pdf-html').length > 0 || node.is('textarea')) {\n-                        alert(e2pdf.lang.get('The WYSIWYG editor is disabled for this HTML object'));\n-                        return;\n-                    }\n-                } else {\n-                    alert(e2pdf.lang.get('WYSIWYG can only be applied within HTML elements'));\n-                    return;\n-                }\n-            }\n             if (command === 'H1') {\n                 if (node.is(\"h1\") && document.getSelection().toString() === node.text()) {\n                     e2pdf.wysiwyg.clear('h1');\n                 } else {\n-                    var html = jQuery('\u003Ch1>').html(e2pdf.wysiwyg.helper.getSelectionHtml()).prop('outerHTML');\n+                    html = jQuery('\u003Ch1>').html(e2pdf.wysiwyg.helper.getSelectionHtml()).prop('outerHTML');\n                     document.execCommand('insertHTML', false, html);\n                 }\n             } else if (command === 'H2') {\n                 if (node.is(\"h2\") && document.getSelection().toString() === node.text()) {\n                     e2pdf.wysiwyg.clear('h2');\n                 } else {\n-                    var html = jQuery('\u003Ch2>').html(e2pdf.wysiwyg.helper.getSelectionHtml()).prop('outerHTML');\n+                    html = jQuery('\u003Ch2>').html(e2pdf.wysiwyg.helper.getSelectionHtml()).prop('outerHTML');\n                     document.execCommand('insertHTML', false, html);\n                 }\n             } else if (command === 'createlink') {\n@@ -8803,19 +9237,28 @@\n             } else if (command === 'font-size') {\n                 var font_size = el.find('option:selected').html();\n                 if (node.is(\"span\") && document.getSelection().toString() === node.text()) {\n-                    var html = node.css('font-size', font_size + \"px\").prop('outerHTML');\n+                    html = node.css('font-size', font_size + \"px\").prop('outerHTML');\n                 } else {\n-                    var html = jQuery('\u003Cspan>').html(e2pdf.wysiwyg.helper.getSelectionHtml()).css('font-size', font_size + \"px\").prop('outerHTML');\n+                    html = jQuery('\u003Cspan>').html(e2pdf.wysiwyg.helper.getSelectionHtml()).css('font-size', font_size + \"px\").prop('outerHTML');\n+                }\n+                document.execCommand('insertHTML', false, html);\n+                el.val('');\n+            } else if (command === 'line-height') {\n+                var font_size = el.find('option:selected').html();\n+                if (node.is(\"span\") && document.getSelection().toString() === node.text()) {\n+                    html = node.css('line-height', font_size + \"px\").prop('outerHTML');\n+                } else {\n+                    html = jQuery('\u003Cspan>').html(e2pdf.wysiwyg.helper.getSelectionHtml()).css('line-height', font_size + \"px\").prop('outerHTML');\n                 }\n                 document.execCommand('insertHTML', false, html);\n                 el.val('');\n             } else if (command === 'font') {\n                 e2pdf.font.load(el);\n-                var font = el.find('option:selected').html();\n+                var font = CSS.escape(el.find('option:selected').html());\n                 if (node.is(\"span\") && document.getSelection().toString() === node.text()) {\n-                    var html = node.css('font-family', font).prop('outerHTML');\n+                    html = node.css('font-family', font).prop('outerHTML');\n                 } else {\n-                    var html = jQuery('\u003Cspan>').html(e2pdf.wysiwyg.helper.getSelectionHtml()).css('font-family', font).prop('outerHTML');\n+                    html = jQuery('\u003Cspan>').html(e2pdf.wysiwyg.helper.getSelectionHtml()).css('font-family', font).prop('outerHTML');\n                 }\n                 document.execCommand('insertHTML', false, html);\n                 el.val('');\n@@ -8827,7 +9270,7 @@\n             } else if (command === 'clear') {\n                 document.execCommand(\"removeformat\", false, \"\");\n                 e2pdf.wysiwyg.clear();\n-            } else {\n+            } else if (command) {\n                 document.execCommand(command, false, null);\n             }\n             e2pdf.event.fire('after.wysiwyg.apply');\n@@ -9093,6 +9536,9 @@\n             \u002F\u002F e2pdf.visual.mapper.apply\n             apply: function (el) {\n                 if (e2pdf.visual.mapper.selected) {\n+                    var history = [];\n+                    history.push(e2pdf.visual.mapper.selected.clone(true));\n+                    e2pdf.history.set('element_change', history);\n                     var name = el.data('name');\n                     var group = el.data('name');\n                     var value = el.data('value');\n@@ -9203,6 +9649,40 @@\n         }\n     }\n });\n+\n+jQuery(document).on('change', '.e2pdf-import-overwrite', function (e) {\n+\n+    const form = jQuery(this).closest('form');\n+    const value = jQuery(this).val();\n+\n+    jQuery('.e2pdf-import-overwrite-option').addClass('e2pdf-hide');\n+    if (value == '1') {\n+        form.find('[name=\"options[template_id]\"]').closest('li').removeClass('e2pdf-hide');\n+    } else if (value == '2') {\n+        form.find('[name=\"options[custom_template_id]\"]').closest('li').removeClass('e2pdf-hide');\n+    }\n+\n+    form.off('submit.confirmOverwrite');\n+    if (value == '1' || value == '2' || value == '3') {\n+        form.on('submit.confirmOverwrite', function (e) {\n+            let message = '';\n+            if (value == '3') {\n+                message = e2pdf.lang.get('The Template ID used in the backup will be overwritten. Continue?');\n+            } else {\n+                const template_id = value == '1' ? form.find('[name=\"options[template_id]\"]').val() : form.find('[name=\"options[custom_template_id]\"]').val();\n+                if (!template_id) {\n+                    return true;\n+                }\n+                message = e2pdf.lang.get('This will overwrite the Template ID \"%d\". Continue?').replace('%d', template_id);\n+            }\n+            if (!confirm(message)) {\n+                e.preventDefault();\n+                return false;\n+            }\n+        });\n+    }\n+});\n+\n jQuery(document).on('change', '.e2pdf-export-disposition input[type=\"radio\"]', function (e) {\n     if (jQuery(this).val() == 'attachment') {\n         jQuery(this).closest('form').removeAttr('target');\n@@ -9223,6 +9703,10 @@\n     }\n });\n jQuery(document).ready(function () {\n+    jQuery('body').removeClass('e2pdf-loading');\n+    if (jQuery('.e2pdf-select2').length > 0) {\n+        jQuery('.e2pdf-select2').attr('disabled', false);\n+    }\n     jQuery(document).on('click', 'a.e2pdf-link[disabled=\"disabled\"]', function (e) {\n         e.stopPropagation();\n         e.preventDefault();\n@@ -9297,10 +9781,13 @@\n         if (!confirm(e2pdf.lang.get('Pre-uploaded PDF will be removed from E2Pdf Template! Continue?'))) {\n             return false;\n         }\n+        var history = [];\n         jQuery('.e2pdf-tpl .e2pdf-page').each(function () {\n             var el = jQuery(this);\n+            history.push(el.clone(true));\n             el.css('background', '');\n         });\n+        e2pdf.history.set('page_change', history, e2pdf.pdf.settings.get('pdf'));\n         jQuery('.e2pdf-form-builder > input[name=\"pdf\"]').val('');\n     });\n     jQuery(document).on('change', '#e2pdf-zoom', function (e) {\n@@ -9380,10 +9867,14 @@\n             e2pdf.delete('.e2pdf-context');\n             return false;\n         }\n+        var history = [];\n         for (var key in e2pdf.element.selected) {\n             var selected = e2pdf.element.selected[key];\n+            e2pdf.element.init(selected);\n+            history.push(selected.clone(true));\n             e2pdf.element.delete(selected);\n         }\n+        e2pdf.history.set('element_delete', history);\n         e2pdf.element.unselect();\n     });\n     jQuery(document).on('click', '.e2pdf-copy', function (e) {\n@@ -9401,19 +9892,60 @@\n         if (type == 'elements' || type == 'elements-in-place') {\n             e2pdf.paste(type);\n         } else {\n+            var history = [];\n             for (var key in e2pdf.element.selected) {\n                 var selected = e2pdf.element.selected[key];\n+                history.push(selected.clone(true));\n                 e2pdf.paste(type, selected);\n             }\n+            e2pdf.history.set('element_change', history);\n+        }\n+    });\n+\n+    jQuery(document).on('click', '.e2pdf-quick-readonly', function (e) {\n+        var history = [];\n+        for (var key in e2pdf.element.selected) {\n+            var selected = e2pdf.element.selected[key];\n+            if (jQuery.inArray(selected.data('data-type'), ['e2pdf-input', 'e2pdf-textarea', 'e2pdf-checkbox', 'e2pdf-radio', 'e2pdf-select']) !== -1) {\n+                history.push(selected.clone(true));\n+                e2pdf.properties.set(selected, 'readonly', jQuery(this).attr('data-value'));\n+            }\n+        }\n+        e2pdf.history.set('element_change', history);\n+    });\n+\n+    jQuery(document).on('click', '.e2pdf-quick-border', function (e) {\n+        var history = [];\n+        for (var key in e2pdf.element.selected) {\n+            var selected = e2pdf.element.selected[key];\n+            if (jQuery.inArray(selected.data('data-type'), ['e2pdf-input', 'e2pdf-textarea', 'e2pdf-checkbox', 'e2pdf-radio', 'e2pdf-select']) !== -1) {\n+                history.push(selected.clone(true));\n+                e2pdf.properties.set(selected, 'border', jQuery(this).attr('data-value'));\n+                e2pdf.properties.render(selected);\n+            } else if (jQuery.inArray(selected.data('data-type'), ['e2pdf-signature', 'e2pdf-html', 'e2pdf-image', 'e2pdf-qrcode', 'e2pdf-barcode', 'e2pdf-graph', 'e2pdf-page-number']) !== -1) {\n+                history.push(selected.clone(true));\n+                e2pdf.properties.set(selected, 'border_top', jQuery(this).attr('data-value'));\n+                e2pdf.properties.set(selected, 'border_left', jQuery(this).attr('data-value'));\n+                e2pdf.properties.set(selected, 'border_right', jQuery(this).attr('data-value'));\n+                e2pdf.properties.set(selected, 'border_bottom', jQuery(this).attr('data-value'));\n+                e2pdf.properties.render(selected);\n+            }\n         }\n+        e2pdf.history.set('element_change', history);\n     });\n+\n+\n     jQuery(document).on('click', '.e2pdf-cut', function (e) {\n         e2pdf.storage.delete('elements');\n+        var history = [];\n         for (var key in e2pdf.element.selected) {\n             var selected = e2pdf.element.selected[key];\n+            e2pdf.element.init(selected);\n+            history.push(selected.clone(true));\n             e2pdf.copy('elements', selected);\n             e2pdf.element.delete(selected);\n         }\n+        e2pdf.history.set('element_delete', history);\n     });\n     jQuery(document).on('click', '.e2pdf-inner-context-menu > a', function (e) {\n         e.preventDefault();\n@@ -9508,74 +10040,11 @@\n             e2pdf.pages.createPage();\n         }\n     });\n-    jQuery(document).on('click', '.e2pdf-wysiwyg-table', function (e) {\n-        e.preventDefault();\n-        var gridContainer = jQuery('.e2pdf-wysiwyg-table-grid');\n-        if (gridContainer.hasClass('e2pdf-hide')) {\n-            var node = jQuery(e2pdf.wysiwyg.helper.getSelectedNode());\n-            if (node.hasClass('e2pdf-element')) {\n-                var html_node = node;\n-            } else {\n-                var html_node = node.closest('.e2pdf-element');\n-            }\n-            if (html_node && html_node.find('.e2pdf-html').length > 0) {\n-                if (html_node.find('textarea.e2pdf-html').length > 0 || node.is('textarea')) {\n-                    alert(e2pdf.lang.get('The WYSIWYG editor is disabled for this HTML object'));\n-                    return;\n-                }\n-            } else {\n-                alert(e2pdf.lang.get('WYSIWYG can only be applied within HTML elements'));\n-                return;\n-            }\n-            e2pdf.static.selectionRange = e2pdf.wysiwyg.helper.saveSelection();\n-            gridContainer.removeClass('e2pdf-hide').empty();\n-            for (let i = 0; i \u003C 100; i++) {\n-                let gridItem = jQuery('\u003Cdiv>');\n-                gridItem.on('mouseover', function () {\n-                    let rowCol = calculateRowCol(i);\n-                    highlightGrid(gridContainer, rowCol.rows, rowCol.cols);\n-                });\n-                gridItem.on('mouseout', function () {\n-                    highlightGrid(gridContainer, 0, 0);\n-                });\n-                gridItem.on('click', function () {\n-                    e2pdf.wysiwyg.helper.restoreSelection(e2pdf.static.selectionRange);\n-                    let rowCol = calculateRowCol(i);\n-                    let html = '\u003Ctable>\\n';\n-                    for (let r = 0; r \u003C rowCol.rows; r++) {\n-                        html += '\u003Ctr>\\n';\n-                        for (let c = 0; c \u003C rowCol.cols; c++) {\n-                            html += '\u003Ctd class=\"r' + r + ' c' + c + '\">r' + r + ' c' + c + '\u003C\u002Ftd>\\n';\n-                        }\n-                        html += '\u003C\u002Ftr>\\n';\n-                    }\n-                    html += '\u003C\u002Ftable>\\n';\n-                    document.execCommand('insertHTML', false, html);\n-                    gridContainer.addClass('e2pdf-hide');\n-                    e2pdf.static.selectionRange = e2pdf.wysiwyg.helper.saveSelection();\n-                });\n-                gridContainer.append(gridItem);\n-            }\n-            gridContainer.append(jQuery('\u003Cspan>').text('0x0'));\n-        } else {\n-            gridContainer.addClass('e2pdf-hide');\n-        }\n-        function calculateRowCol(index) {\n-            let rows = Math.floor(index \u002F 10) + 1;\n-            let cols = (index % 10) + 1;\n-            return {rows, cols};\n-        }\n-        function highlightGrid(gridContainer, rows, cols) {\n-            gridContainer.find('div').each(function (idx) {\n-                let itemRowCol = calculateRowCol(idx);\n-                gridContainer.find('span').text(rows + 'x' + cols);\n-                if (itemRowCol.rows \u003C= rows && itemRowCol.cols \u003C= cols) {\n-                    jQuery(this).addClass('e2pdf-highlight');\n-                } else {\n-                    jQuery(this).removeClass('e2pdf-highlight');\n-                }\n-            });\n-        }\n+    jQuery(document).on('click', '.e2pdf-undo', function (e) {\n+        e2pdf.history.undo();\n+    });\n+    jQuery(document).on('click', '.e2pdf-redo', function (e) {\n+        e2pdf.history.redo();\n     });\n     jQuery(document).on('click', '.e2pdf-create-pdf', function (e) {\n         if (e2pdf.url.get('revision_id')) {\n@@ -9595,15 +10064,22 @@\n             if (!confirm(e2pdf.lang.get('All pages will be removed! Continue?'))) {\n                 return false;\n             }\n+            var history = [];\n             jQuery('.e2pdf-tpl .e2pdf-page').each(function () {\n                 var el = jQuery(this);\n+                history.push(el.closest('.e2pdf-page').clone(true));\n                 e2pdf.pages.deletePage(el);\n             });\n+            history.reverse();\n+            e2pdf.history.set('page_delete', history, e2pdf.pdf.settings.get('pdf'));\n         } else {\n             if (!confirm(e2pdf.lang.get('Page will be removed! Continue?'))) {\n                 return false;\n             }\n             var el = jQuery(jQuery(this));\n+            var history = [];\n+            history.push(el.closest('.e2pdf-page').clone(true));\n+            e2pdf.history.set('page_delete', history);\n             e2pdf.pages.deletePage(el);\n         }\n     });\n@@ -9611,10 +10087,18 @@\n         if (!confirm(e2pdf.lang.get('All pages will be removed! Continue?'))) {\n             return false;\n         }\n+        var history = [];\n         jQuery('.e2pdf-tpl .e2pdf-page').each(function () {\n             var el = jQuery(this);\n+            history.push(el.closest('.e2pdf-page').clone(true));\n             e2pdf.pages.deletePage(el);\n         });\n+        history.reverse();\n+        if (e2pdf.pdf.settings.get('pdf')) {\n+            e2pdf.history.set('page_delete', history, e2pdf.pdf.settings.get('pdf'));\n+        } else {\n+            e2pdf.history.set('page_delete', history);\n+        }\n     });\n     jQuery(document).on('click', '.e2pdf-delete-font', function (e) {\n         if (!confirm(e2pdf.lang.get('Font will be removed! Continue?'))) {\n@@ -9765,14 +10249,36 @@\n             e2pdf.visual.mapper.init(selected);\n         }\n     });\n+\n+    document.addEventListener('selectionchange', function () {\n+        if (jQuery('.e2pdf-focused').length == 1 && jQuery('.e2pdf-focused').first().data('data-type') === 'e2pdf-html' && !jQuery('.e2pdf-focused').first().find('.e2pdf-html').is('textarea')) {\n+            jQuery('.e2pdf-apply-wysiwyg').removeClass('e2pdf-inactive');\n+            jQuery('.e2pdf-apply-wysiwyg-change').attr('disabled', false);\n+            const selection = window.getSelection();\n+            if (selection && selection.toString().length == 0) {\n+                jQuery('.e2pdf-apply-wysiwyg-selection').addClass('e2pdf-inactive');\n+                jQuery('.e2pdf-apply-wysiwyg-change').attr('disabled', true);\n+            }\n+        } else {\n+            jQuery('.e2pdf-apply-wysiwyg').addClass('e2pdf-inactive');\n+            jQuery('.e2pdf-apply-wysiwyg-change').attr('disabled', true);\n+        }\n+    });\n     jQuery(document).on('click', '.e2pdf-apply-wysiwyg', function (e) {\n+        e.preventDefault();\n+        if (jQuery(this).hasClass('e2pdf-inactive')) {\n+            return;\n+        }\n         e2pdf.wysiwyg.apply(jQuery(this));\n     });\n     jQuery(document).on('click', '.e2pdf-apply-wysiwyg-color', function (e) {\n-        e2pdf.static.selectionRange = e2pdf.wysiwyg.helper.saveSelection();\n         e.preventDefault();\n         e.stopPropagation();\n         e.stopImmediatePropagation();\n+        if (jQuery(this).hasClass('e2pdf-inactive')) {\n+            return;\n+        }\n+        e2pdf.static.selectionRange = e2pdf.wysiwyg.helper.saveSelection();\n         var color_panel = jQuery(this).parent().find('.wp-picker-container');\n         if (!color_panel.hasClass('wp-picker-active')) {\n             color_panel.find('.wp-color-result').click();\n@@ -9785,13 +10291,66 @@\n             }\n         }\n     });\n-    jQuery(document).on('change', '.e2pdf-wysiwyg-font-color', function (e) {\n-        e2pdf.wysiwyg.apply(jQuery(this));\n-    });\n-    jQuery(document).on('change', '.e2pdf-wysiwyg-fontsize', function (e) {\n-        e2pdf.wysiwyg.apply(jQuery(this));\n+    jQuery(document).on('click', '.e2pdf-wysiwyg-table', function (e) {\n+        e.preventDefault();\n+        e.stopPropagation();\n+        e.stopImmediatePropagation();\n+        if (jQuery(this).hasClass('e2pdf-inactive')) {\n+            return;\n+        }\n+        var gridContainer = jQuery('.e2pdf-wysiwyg-table-grid');\n+        if (gridContainer.hasClass('e2pdf-hide')) {\n+            e2pdf.static.selectionRange = e2pdf.wysiwyg.helper.saveSelection();\n+            gridContainer.removeClass('e2pdf-hide').empty();\n+            for (let i = 0; i \u003C 100; i++) {\n+                let gridItem = jQuery('\u003Cdiv>');\n+                gridItem.on('mouseover', function () {\n+                    let rowCol = calculateRowCol(i);\n+                    highlightGrid(gridContainer, rowCol.rows, rowCol.cols);\n+                });\n+                gridItem.on('mouseout', function () {\n+                    highlightGrid(gridContainer, 0, 0);\n+                });\n+                gridItem.on('click', function () {\n+                    e2pdf.wysiwyg.helper.restoreSelection(e2pdf.static.selectionRange);\n+                    let rowCol = calculateRowCol(i);\n+                    let html = '\u003Ctable>\\n';\n+                    for (let r = 0; r \u003C rowCol.rows; r++) {\n+                        html += '\u003Ctr>\\n';\n+                        for (let c = 0; c \u003C rowCol.cols; c++) {\n+                            html += '\u003Ctd class=\"r' + r + ' c' + c + '\">r' + r + ' c' + c + '\u003C\u002Ftd>\\n';\n+                        }\n+                        html += '\u003C\u002Ftr>\\n';\n+                    }\n+                    html += '\u003C\u002Ftable>\\n';\n+                    document.execCommand('insertHTML', false, html);\n+                    gridContainer.addClass('e2pdf-hide');\n+                    e2pdf.static.selectionRange = e2pdf.wysiwyg.helper.saveSelection();\n+                });\n+                gridContainer.append(gridItem);\n+            }\n+            gridContainer.append(jQuery('\u003Cspan>').text('0x0'));\n+        } else {\n+            gridContainer.addClass('e2pdf-hide');\n+        }\n+        function calculateRowCol(index) {\n+            let rows = Math.floor(index \u002F 10) + 1;\n+            let cols = (index % 10) + 1;\n+            return {rows, cols};\n+        }\n+        function highlightGrid(gridContainer, rows, cols) {\n+            gridContainer.find('div').each(function (idx) {\n+                let itemRowCol = calculateRowCol(idx);\n+                gridContainer.find('span').text(rows + 'x' + cols);\n+                if (itemRowCol.rows \u003C= rows && itemRowCol.cols \u003C= cols) {\n+                    jQuery(this).addClass('e2pdf-highlight');\n+                } else {\n+                    jQuery(this).removeClass('e2pdf-highlight');\n+                }\n+            });\n+        }\n     });\n-    jQuery(document).on('change', '.e2pdf-wysiwyg-font', function (e) {\n+    jQuery(document).on('change', '.e2pdf-apply-wysiwyg-change', function (e) {\n         e2pdf.wysiwyg.apply(jQuery(this));\n     });\n     jQuery(document).on('change', '.e2pdf-upload-pdf', function (e) {\n@@ -10269,7 +10828,9 @@\n                     e2pdf.element.unselect();\n                 },\n                 stop: function (ev, ui) {\n-                    jQuery(\".e2pdf-guide-v, .e2pdf-guide-h\").hide();\n+                    ui.position.top = Math.round(ui.position.top);\n+                    ui.position.left = Math.round(ui.position.left);\n+                    jQuery('.e2pdf-guide-v, .e2pdf-guide-h').hide();\n                 },\n                 drag: function (ev, ui) {\n                     if (e2pdf.static.drag.page !== null) {\n@@ -10322,118 +10883,120 @@\n     }\n \n     jQuery(document).keydown(function (e) {\n-        if (\n-                jQuery('.e2pdf-focused').length == 0\n-                && jQuery(e.target).closest('.e2pdf-dialog-visual-mapper').length == 0\n-                && jQuery(e.target).closest('.e2pdf-dialog-element-properties').length == 0\n-                && Object.keys(e2pdf.element.selected).length > 0\n-                && jQuery.inArray(e.which, [37, 38, 39, 40, 46]) !== -1) {\n-            e.preventDefault();\n-            switch (e.which) {\n-                case 37:\n-                    \u002F\u002F left\n-                    var diff = 1;\n-                    for (var key in e2pdf.element.selected) {\n-                        var selected = e2pdf.element.selected[key];\n-                        if (parseFloat(selected.css('left')) > 0) {\n-                            if (parseFloat(selected.css('left')) - 1 \u003C 0) {\n-                                diff = Math.min(diff, selected.css('left'));\n+        if (jQuery.inArray(e.which, [37, 38, 39, 40, 46]) !== -1) {\n+            if (jQuery('.e2pdf-focused').length == 0\n+                    && jQuery(e.target).closest('.e2pdf-dialog-visual-mapper').length == 0\n+                    && jQuery(e.target).closest('.e2pdf-dialog-element-properties').length == 0\n+                    && Object.keys(e2pdf.element.selected).length > 0) {\n+                e.preventDefault();\n+                switch (e.which) {\n+                    case 37:\n+                        \u002F\u002F left\n+                        var diff = 1;\n+                        for (var key in e2pdf.element.selected) {\n+                            var selected = e2pdf.element.selected[key];\n+                            if (parseFloat(selected.css('left')) > 0) {\n+                                if (parseFloat(selected.css('left')) - 1 \u003C 0) {\n+                                    diff = Math.min(diff, selected.css('left'));\n+                                }\n+                            } else {\n+                                diff = Math.min(diff, 0);\n                             }\n-                        } else {\n-                            diff = Math.min(diff, 0);\n                         }\n-                    }\n \n-                    for (var key in e2pdf.element.selected) {\n-                        var selected = e2pdf.element.selected[key];\n-                        selected.finish().animate({\n-                            left: \"-=\" + diff\n-                        }, 0);\n-                        e2pdf.properties.set(selected, 'left', e2pdf.helper.getFloat(selected.css('left')));\n-                    }\n-                    break;\n-                case 38:\n-                    \u002F\u002F top\n-                    var diff = 1;\n-                    for (var key in e2pdf.element.selected) {\n-                        var selected = e2pdf.element.selected[key];\n-                        if (parseFloat(selected.css('top')) > 0) {\n-                            if (parseFloat(selected.css('top')) - 1 \u003C 0) {\n-                                diff = Math.min(diff, selected.css('top'));\n+                        for (var key in e2pdf.element.selected) {\n+                            var selected = e2pdf.element.selected[key];\n+                            selected.finish().animate({\n+                                left: \"-=\" + diff\n+                            }, 0);\n+                            e2pdf.properties.set(selected, 'left', e2pdf.helper.getFloat(selected.css('left')));\n+                        }\n+                        break;\n+                    case 38:\n+                        \u002F\u002F top\n+                        var diff = 1;\n+                        for (var key in e2pdf.element.selected) {\n+                            var selected = e2pdf.element.selected[key];\n+                            if (parseFloat(selected.css('top')) > 0) {\n+                                if (parseFloat(selected.css('top')) - 1 \u003C 0) {\n+                                    diff = Math.min(diff, selected.css('top'));\n+                                }\n+                            } else {\n+                                diff = Math.min(diff, 0);\n                             }\n-                        } else {\n-                            diff = Math.min(diff, 0);\n                         }\n-                    }\n \n-                    for (var key in e2pdf.element.selected) {\n-                        var selected = e2pdf.element.selected[key];\n-                        selected.finish().animate({\n-                            top: \"-=\" + diff\n-                        }, 0);\n-                        e2pdf.properties.set(selected, 'top', e2pdf.helper.getFloat(selected.css('top')));\n-                    }\n-                    break;\n-                case 39:\n-                    \u002F\u002F right\n-                    var diff = 1;\n-                    for (var key in e2pdf.element.selected) {\n-                        var selected = e2pdf.element.selected[key];\n-                        if (parseFloat(selected.css('right')) > 0) {\n-                            if (parseFloat(selected.css('right')) - 1 \u003C 0) {\n-                                diff = Math.min(diff, selected.css('right'));\n+                        for (var key in e2pdf.element.selected) {\n+                            var selected = e2pdf.element.selected[key];\n+                            selected.finish().animate({\n+                                top: \"-=\" + diff\n+                            }, 0);\n+                            e2pdf.properties.set(selected, 'top', e2pdf.helper.getFloat(selected.css('top')));\n+                        }\n+                        break;\n+                    case 39:\n+                        \u002F\u002F right\n+                        var diff = 1;\n+                        for (var key in e2pdf.element.selected) {\n+                            var selected = e2pdf.element.selected[key];\n+                            if (parseFloat(selected.css('right')) > 0) {\n+                                if (parseFloat(selected.css('right')) - 1 \u003C 0) {\n+                                    diff = Math.min(diff, selected.css('right'));\n+                                }\n+                            } else {\n+                                diff = Math.min(diff, 0);\n                             }\n-                        } else {\n-                            diff = Math.min(diff, 0);\n                         }\n-                    }\n \n-                    for (var key in e2pdf.element.selected) {\n-                        var selected = e2pdf.element.selected[key];\n-                        selected.finish().animate({\n-                            left: \"+=\" + diff\n-                        }, 0);\n-                        e2pdf.properties.set(selected, 'left', e2pdf.helper.getFloat(selected.css('left')));\n-                    }\n-                    break;\n-                case 40:\n-                    \u002F\u002F down\n-                    var diff = 1;\n-                    for (var key in e2pdf.element.selected) {\n-                        var selected = e2pdf.element.selected[key];\n-                        if (parseFloat(selected.css('bottom')) > 0) {\n-                            if (parseFloat(selected.css('bottom')) - 1 \u003C 0) {\n-                                diff = Math.min(diff, selected.css('bottom'));\n+                        for (var key in e2pdf.element.selected) {\n+                            var selected = e2pdf.element.selected[key];\n+                            selected.finish().animate({\n+                                left: \"+=\" + diff\n+                            }, 0);\n+                            e2pdf.properties.set(selected, 'left', e2pdf.helper.getFloat(selected.css('left')));\n+                        }\n+                        break;\n+                    case 40:\n+                        \u002F\u002F down\n+                        var diff = 1;\n+                        for (var key in e2pdf.element.selected) {\n+                            var selected = e2pdf.element.selected[key];\n+                            if (parseFloat(selected.css('bottom')) > 0) {\n+                                if (parseFloat(selected.css('bottom')) - 1 \u003C 0) {\n+                                    diff = Math.min(diff, selected.css('bottom'));\n+                                }\n+                            } else {\n+                                diff = Math.min(diff, 0);\n                             }\n-                        } else {\n-                            diff = Math.min(diff, 0);\n                         }\n-                    }\n \n-                    for (var key in e2pdf.element.selected) {\n-                        var selected = e2pdf.element.selected[key];\n-                        selected.finish().animate({\n-                            top: \"+=\" + diff\n-                        }, 0);\n-                        e2pdf.properties.set(selected, 'top', e2pdf.helper.getFloat(selected.css('top')));\n-                    }\n-                    break;\n-\n-                case 46:\n-                    \u002F\u002F delete\n-                    var message = Object.keys(e2pdf.element.selected).length > 1 ? e2pdf.lang.get('Elements will be removed! Continue?') : e2pdf.lang.get('Element will be removed! Continue?');\n-                    if (!confirm(message)) {\n-                        e2pdf.delete('.e2pdf-context');\n-                        return false;\n-                    }\n-\n-                    for (var key in e2pdf.element.selected) {\n-                        var selected = e2pdf.element.selected[key];\n-                        e2pdf.element.delete(selected);\n-                    }\n+                        for (var key in e2pdf.element.selected) {\n+                            var selected = e2pdf.element.selected[key];\n+                            selected.finish().animate({\n+                                top: \"+=\" + diff\n+                            }, 0);\n+                            e2pdf.properties.set(selected, 'top', e2pdf.helper.getFloat(selected.css('top')));\n+                        }\n+                        break;\n \n-                    e2pdf.element.unselect();\n-                    break;\n+                    case 46:\n+                        \u002F\u002F delete\n+                        var message = Object.keys(e2pdf.element.selected).length > 1 ? e2pdf.lang.get('Elements will be removed! Continue?') : e2pdf.lang.get('Element will be removed! Continue?');\n+                        if (!confirm(message)) {\n+                            e2pdf.delete('.e2pdf-context');\n+                            return false;\n+                        }\n+                        var history = [];\n+                        for (var key in e2pdf.element.selected) {\n+                            var selected = e2pdf.element.selected[key];\n+                            e2pdf.element.init(selected);\n+                            history.push(selected.clone(true));\n+                            e2pdf.element.delete(selected);\n+                        }\n+                        e2pdf.history.set('element_delete', history);\n+                        e2pdf.element.unselect();\n+                        break;\n+                }\n             }\n         }\n     });\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fjs\u002Fe2pdf.frontend.js \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fjs\u002Fe2pdf.frontend.js\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Fjs\u002Fe2pdf.frontend.js\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Fjs\u002Fe2pdf.frontend.js\t2026-02-24 09:27:28.000000000 +0000\n@@ -198,8 +198,16 @@\n                 document.getElementsByTagName('body')[0].appendChild(iframe);\n             }\n         }\n+    },\n+    autoDownload: function (lid) {\n+        jQuery(document).ready(function () {\n+            var link = jQuery('a[lid=\"' + lid + '\"]').first();\n+            if (link.length > 0 && !link.hasClass('e2pdf-auto-download-ready')) {\n+                link.addClass('e2pdf-auto-download-ready');\n+                link[0].click();\n+            }\n+        });\n     }\n-\n };\n jQuery(document).ready(function () {\n     jQuery(document).on('click', 'a.e2pdf-download-loader', function (e) {\n@@ -219,9 +227,37 @@\n                 if (resp.ok) {\n                     return resp.blob().then((blob) => {\n                         const blobURL = URL.createObjectURL(blob);\n-                        link.attr('href', blobURL).addClass('e2pdf-download-ready');\n-                        link[0].click();\n-                        link.attr('href', linkURL).removeClass('e2pdf-download-ready e2pdf-download-progress');\n+                        if (link.hasClass('e2pdf-ios-safari-loader')) {\n+                            window.addEventListener('message', function handleMessage(event) {\n+                                if (event.data === 'e2pdf-download-ready') {\n+                                    link.removeClass('e2pdf-download-progress');\n+                                    window.removeEventListener('message', handleMessage);\n+                                }\n+                            });\n+                            const iframe = document.createElement('iframe');\n+                            iframe.style.setProperty('display', 'none', 'important');\n+                            document.body.appendChild(iframe);\n+                            const doc = iframe.contentDocument || iframe.contentWindow.document;\n+                            doc.open();\n+                            doc.write(`\n+                            \u003C!DOCTYPE html>\n+                            \u003Chtml>\n+                            \u003Cbody>\n+                            \u003Ca href=\"${blobURL}\" download=\"${link.attr('download')}\">\u003C\u002Fa>\n+                            \u003Cscript>\n+                                const link = document.querySelector('a');\n+                                parent.postMessage('e2pdf-download-ready', '*');                             \n+                                link.click();    \n+                            \u003C\u002Fscript>\n+                            \u003C\u002Fbody>\n+                            \u003C\u002Fhtml>\n+                            `);\n+                            doc.close();\n+                        } else {\n+                            link.attr('href', blobURL).addClass('e2pdf-download-ready');\n+                            link[0].click();\n+                            link.attr('href', linkURL).removeClass('e2pdf-download-ready e2pdf-download-progress');\n+                        }\n                     });\n                 } else {\n                     var errorMessage = 'Something went wrong!';\n@@ -290,19 +326,15 @@\n         }\n     });\n     if (jQuery('.e2pdf-download.e2pdf-auto').not('.e2pdf-iframe-download').length > 0) {\n-        jQuery('.e2pdf-download.e2pdf-auto').not('.e2pdf-iframe-download').each(function () {\n-            if (jQuery(this).hasClass('e2pdf-print-pdf') || jQuery(this).hasClass('e2pdf-download-loader')) {\n-                jQuery(this).click();\n-            } else if (jQuery(this).hasClass('e2pdf-inline')) {\n-                window.open(jQuery(this).attr('href'), '_blank');\n-            } else {\n-                location.href = jQuery(this).attr('href');\n-            }\n+        jQuery('.e2pdf-download.e2pdf-auto').not('.e2pdf-iframe-download').each(function (i, el) {\n+            setTimeout(function () {\n+                jQuery(el).click();\n+            }, i * 500);\n         });\n     }\n     jQuery('.modal').on('show.bs.modal', function () {\n         var modal = jQuery(this);\n-        modal.find('iframe.e2pdf-preload').each(function () {\n+        modal.find('iframe.e2pdf-preload, img.e2pdf-preload').each(function () {\n             jQuery(this).removeClass('e2pdf-preload').attr('src', jQuery(this).attr('preload'));\n         });\n     });\n@@ -328,4 +360,19 @@\n             }\n         }, false);\n     }\n+    jQuery(document).on('metform\u002Fafter_submit', function (event, payload) {\n+        if (payload && payload.response) {\n+            var response = payload.response;\n+            if (response.status && response.data && response.data.message) {\n+                var message = response.data.message;\n+                if (message && (message.includes('e2pdf-view') || message.includes('e2pdf-download'))) {\n+                    if (jQuery('.mf-main-response-wrap').length > 0 && jQuery('.mf-main-response-wrap p').length > 0) {\n+                        var response = jQuery('.mf-main-response-wrap').clone();\n+                        response.find('p').html(message);\n+                        jQuery('.mf-main-response-wrap').replaceWith(response);\n+                    }\n+                }\n+            }\n+        }\n+    });\n });\n\\ No newline at end of file\nBinary files \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Flanguages\u002Fe2pdf-de_DE.mo and \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Flanguages\u002Fe2pdf-de_DE.mo differ\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Flanguages\u002Fe2pdf-de_DE.po \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Flanguages\u002Fe2pdf-de_DE.po\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Flanguages\u002Fe2pdf-de_DE.po\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Flanguages\u002Fe2pdf-de_DE.po\t2026-02-24 09:27:28.000000000 +0000\n@@ -1,8 +1,8 @@\n msgid \"\"\n msgstr \"\"\n \"Project-Id-Version: e2pdf\\n\"\n-\"POT-Creation-Date: 2025-04-22 17:10+0200\\n\"\n-\"PO-Revision-Date: 2025-04-22 17:10+0200\\n\"\n+\"POT-Creation-Date: 2025-08-29 13:16+0200\\n\"\n+\"PO-Revision-Date: 2025-08-29 13:16+0200\\n\"\n \"Last-Translator: Weblate Admin \u003Cadmin@example.com>\\n\"\n \"Language-Team: German \u003Chttps:\u002F\u002Flocalhost\u002Fprojects\u002Fe2pdf\u002Fe2pdf\u002Fde\u002F>\\n\"\n \"Language: de_DE\\n\"\n@@ -18,7 +18,7 @@\n \"X-Poedit-SearchPathExcluded-0: assets\\n\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-debug.php:25 classes\u002Fcontroller\u002Fe2pdf-debug.php:51\n-#: classes\u002Fcontroller\u002Fe2pdf-debug.php:63\n+#: classes\u002Fcontroller\u002Fe2pdf-debug.php:55 classes\u002Fcontroller\u002Fe2pdf-debug.php:59\n #: classes\u002Fcontroller\u002Fe2pdf-integrations.php:23\n #: classes\u002Fcontroller\u002Fe2pdf-license.php:63\n #: classes\u002Fcontroller\u002Fe2pdf-license.php:112\n@@ -33,7 +33,7 @@\n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:253\n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:275\n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:315\n-#: classes\u002Fcontroller\u002Fe2pdf-settings.php:341\n+#: classes\u002Fcontroller\u002Fe2pdf-settings.php:340\n #, php-format\n msgid \"Success: %s\"\n msgstr \"Erfolg: %s\"\n@@ -46,7 +46,11 @@\n msgid \"Repair DB\"\n msgstr \"DB reparieren\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf-debug.php:63 classes\u002Fview\u002Fpage-e2pdf-debug.php:204\n+#: classes\u002Fcontroller\u002Fe2pdf-debug.php:55 classes\u002Fview\u002Fpage-e2pdf-debug.php:205\n+msgid \"Repair DB Collate\"\n+msgstr \"DB-Kollektion reparieren\"\n+\n+#: classes\u002Fcontroller\u002Fe2pdf-debug.php:59 classes\u002Fview\u002Fpage-e2pdf-debug.php:217\n msgid \"Reinitialize DB Hooks\"\n msgstr \"DB-Hooks neu initialisieren\"\n \n@@ -55,16 +59,17 @@\n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:253\n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:275\n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:315\n-#: classes\u002Fcontroller\u002Fe2pdf-settings.php:341\n+#: classes\u002Fcontroller\u002Fe2pdf-settings.php:340\n msgid \"Settings Saved\"\n msgstr \"Einstellungen gespeichert\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-integrations.php:45\n-#: classes\u002Fmodel\u002Fe2pdf-options.php:460\n+#: classes\u002Fcontroller\u002Fe2pdf-integrations.php:103\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:452 classes\u002Fmodel\u002Fe2pdf-options.php:522\n msgid \"Not Authorized\"\n msgstr \"Nicht autorisiert\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf-integrations.php:72\n+#: classes\u002Fcontroller\u002Fe2pdf-integrations.php:70\n msgid \"App Authorized\"\n msgstr \"App autorisiert\"\n \n@@ -99,32 +104,32 @@\n \"können sich bei %s registrieren\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:98\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:126\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:131\n msgid \"Purge Objects Cache\"\n msgstr \"Objekt-Cache leeren\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:109\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:137\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:142\n msgid \"Purge Fonts Cache\"\n msgstr \"Schriftarten-Cache leeren\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:120\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:148\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:153\n msgid \"Purge PDFs Cache\"\n msgstr \"PDF-Cache leeren\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:131\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:160\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:165\n msgid \"Purge Full Cache\"\n msgstr \"Vollständigen Cache leeren\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:143\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:103\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:108\n msgid \"Optimize DB\"\n msgstr \"DB-Optimierung\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:154\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:114\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:119\n msgid \"Clear Recovery Mode Limit\"\n msgstr \"Wiederherstellungsmodus-Limit löschen\"\n \n@@ -166,16 +171,16 @@\n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:1571\n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:1781\n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:2039\n-#: classes\u002Fcontroller\u002Fe2pdf-templates.php:2055 classes\u002Fcontroller\u002Fe2pdf.php:708\n-#: classes\u002Fcontroller\u002Ffrontend\u002Fe2pdf-download.php:304\n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:863\n+#: classes\u002Fcontroller\u002Fe2pdf-templates.php:2055 classes\u002Fcontroller\u002Fe2pdf.php:734\n+#: classes\u002Fcontroller\u002Ffrontend\u002Fe2pdf-download.php:347\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:793\n #: classes\u002Fmodel\u002Fe2pdf-adobesign.php:127 classes\u002Fmodel\u002Fe2pdf-adobesign.php:208\n-#: classes\u002Fmodel\u002Fe2pdf-api.php:111 classes\u002Fmodel\u002Fe2pdf-template.php:768\n-#: classes\u002Fmodel\u002Fe2pdf-template.php:877 classes\u002Fmodel\u002Fe2pdf-template.php:911\n+#: classes\u002Fmodel\u002Fe2pdf-api.php:111 classes\u002Fmodel\u002Fe2pdf-template.php:832\n+#: classes\u002Fmodel\u002Fe2pdf-template.php:941 classes\u002Fmodel\u002Fe2pdf-template.php:975\n msgid \"Something went wrong!\"\n msgstr \"Etwas ist schiefgelaufen!\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf-settings.php:380\n+#: classes\u002Fcontroller\u002Fe2pdf-settings.php:379\n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:78\n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:465\n #, php-format\n@@ -227,9 +232,9 @@\n \"target=\\\"_blank\\\" href=\\\"%3$s\\\">Bearbeiten\u003C\u002Fa>\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:849\n-#: classes\u002Fcontroller\u002Fe2pdf-templates.php:1108 classes\u002Fcontroller\u002Fe2pdf.php:716\n-#: classes\u002Fmodel\u002Fe2pdf-extension.php:250 classes\u002Fmodel\u002Fe2pdf-extension.php:254\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:851\n+#: classes\u002Fcontroller\u002Fe2pdf-templates.php:1108 classes\u002Fcontroller\u002Fe2pdf.php:742\n+#: classes\u002Fmodel\u002Fe2pdf-extension.php:255 classes\u002Fmodel\u002Fe2pdf-extension.php:259\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:882\n #, php-format\n msgid \"The PHP %s extension is required\"\n msgstr \"Die PHP-Erweiterung %s ist erforderlich\"\n@@ -259,7 +264,7 @@\n msgstr \"Verbindung importieren\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:1119\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:549\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:584\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:40\n msgid \"Options\"\n msgstr \"Optionen\"\n@@ -290,14 +295,14 @@\n msgstr \"Automatisches Formular aus PDF\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:1289 classes\u002Fcontroller\u002Fe2pdf.php:45\n-#: classes\u002Fcontroller\u002Fe2pdf.php:87 classes\u002Fcontroller\u002Fe2pdf.php:445\n-#: classes\u002Fcontroller\u002Fe2pdf.php:468\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2442\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2452\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:575 classes\u002Fview\u002Fpage-e2pdf.php:53\n-#: classes\u002Fview\u002Fpage-e2pdf.php:76 classes\u002Fview\u002Fpage-e2pdf.php:85\n-#: classes\u002Fview\u002Fpage-e2pdf.php:111 classes\u002Fview\u002Fpage-e2pdf.php:118\n-#: classes\u002Fview\u002Fpage-e2pdf.php:286 classes\u002Fview\u002Fpage-e2pdf.php:322\n+#: classes\u002Fcontroller\u002Fe2pdf.php:87 classes\u002Fcontroller\u002Fe2pdf.php:452\n+#: classes\u002Fcontroller\u002Fe2pdf.php:475\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3342\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3353\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:610 classes\u002Fview\u002Fpage-e2pdf.php:54\n+#: classes\u002Fview\u002Fpage-e2pdf.php:77 classes\u002Fview\u002Fpage-e2pdf.php:86\n+#: classes\u002Fview\u002Fpage-e2pdf.php:112 classes\u002Fview\u002Fpage-e2pdf.php:119\n+#: classes\u002Fview\u002Fpage-e2pdf.php:288 classes\u002Fview\u002Fpage-e2pdf.php:324\n msgid \"--- Select ---\"\n msgstr \"--- Auswählen ---\"\n \n@@ -311,9 +316,10 @@\n msgstr \"Diese Erweiterung unterstützt den Visual Mapper nicht\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:1356\n+#: classes\u002Fcontroller\u002Ffrontend\u002Fe2pdf-download.php:274\n #: classes\u002Fextension\u002Fe2pdf-formidable.php:254\n-#: classes\u002Fmodel\u002Fe2pdf-revision.php:205 classes\u002Fmodel\u002Fe2pdf-template.php:185\n-#: classes\u002Fmodel\u002Fe2pdf-template.php:825\n+#: classes\u002Fmodel\u002Fe2pdf-revision.php:205 classes\u002Fmodel\u002Fe2pdf-template.php:186\n+#: classes\u002Fmodel\u002Fe2pdf-template.php:889 classes\u002Fmodel\u002Fe2pdf-template.php:1040\n msgid \"(no title)\"\n msgstr \"(kein Titel)\"\n \n@@ -360,7 +366,7 @@\n msgstr \"PDF-Ersteller\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:2562\n-#: classes\u002Fhelper\u002Fe2pdf-helper.php:292 classes\u002Fmodel\u002Fe2pdf-loader.php:439\n+#: classes\u002Fhelper\u002Fe2pdf-helper.php:293 classes\u002Fmodel\u002Fe2pdf-loader.php:478\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:44 classes\u002Fview\u002Fpage-e2pdf-settings.php:7\n msgid \"Settings\"\n msgstr \"Einstellungen\"\n@@ -376,88 +382,85 @@\n #: classes\u002Fcontroller\u002Fe2pdf.php:75\n #, php-format\n msgid \"\"\n-\"The Bulk PDFs creation is not available with Free License Type. Check \u003Ca \"\n-\"target='_blank' href='%s'>%s\u003C\u002Fa> for upgrade options\"\n+\"Bulk PDF generation is not available with the Free License Type. Please \"\n+\"visit \u003Ca target='_blank' href='%s'>%s\u003C\u002Fa> for upgrade options\"\n msgstr \"\"\n-\"Die Erstellung von Bulk-PDFs ist mit dem kostenlosen Lizenztyp nicht \"\n-\"verfügbar. Überprüfen Sie \u003Ca target='_blank' href='%s'>%s\u003C\u002Fa> für Upgrade-\"\n-\"Optionen\"\n+\"Die Massen-PDF-Erstellung ist mit dem kostenlosen Lizenztyp nicht verfügbar. \"\n+\"Bitte besuchen Sie \u003Ca target='_blank' href='%s'>%s\u003C\u002Fa> für Upgrade-Optionen\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:337\n+#: classes\u002Fcontroller\u002Fe2pdf.php:344\n msgid \"Incorrect Dataset\"\n msgstr \"Ungültiger Datensatz\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:341\n+#: classes\u002Fcontroller\u002Fe2pdf.php:348\n msgid \"Template can't be loaded\"\n msgstr \"Vorlage kann nicht geladen werden\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:521\n+#: classes\u002Fcontroller\u002Fe2pdf.php:546\n msgid \"Delete All Datasets\"\n msgstr \"Alle Datensätze löschen\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:531\n+#: classes\u002Fcontroller\u002Fe2pdf.php:556\n msgid \"Edit Template\"\n msgstr \"Vorlage bearbeiten\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:613\n+#: classes\u002Fcontroller\u002Fe2pdf.php:639\n msgid \"View Dataset\"\n msgstr \"Datensatz anzeigen\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:616\n+#: classes\u002Fcontroller\u002Fe2pdf.php:642\n msgid \"Delete Dataset\"\n msgstr \"Datensatz löschen\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:662\n+#: classes\u002Fcontroller\u002Fe2pdf.php:688\n msgid \"Dataset can't be removed!\"\n msgstr \"Datensatz kann nicht entfernt werden!\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:694\n+#: classes\u002Fcontroller\u002Fe2pdf.php:720\n msgid \"Datasets can't be removed!\"\n msgstr \"Datensätze können nicht entfernt werden!\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:712\n-#, php-format\n+#: classes\u002Fcontroller\u002Fe2pdf.php:738\n msgid \"\"\n-\"The Bulk PDFs generation is not available with Free License Type. Check \u003Ca \"\n-\"target='_blank' href='%s'>%s\u003C\u002Fa> for upgrade options\"\n+\"Bulk PDF generation is not available with the Free License Type. Please \"\n+\"visit https:\u002F\u002Fe2pdf.com\u002Fprice for upgrade options\"\n msgstr \"\"\n \"Die Massen-PDF-Erstellung ist mit dem kostenlosen Lizenztyp nicht verfügbar. \"\n-\"Überprüfen Sie \u003Ca target='_blank' href='%s'>%s\u003C\u002Fa> für Upgrade-Optionen\"\n+\"Bitte besuchen Sie https:\u002F\u002Fe2pdf.com\u002Fprice für Upgrade-Optionen\"\n \n-#: classes\u002Fcontroller\u002Ffrontend\u002Fe2pdf-download.php:141\n+#: classes\u002Fcontroller\u002Ffrontend\u002Fe2pdf-download.php:169\n msgid \"Access Denied!\"\n msgstr \"Zugriff verweigert!\"\n \n #: classes\u002Fextension\u002Fe2pdf-caldera.php:376\n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:3347\n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:822\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:3364\n #, php-format\n msgid \"Success. [e2pdf-download id=\\\"%s\\\"]\"\n msgstr \"Erfolg. [e2pdf-download id=\\\"%s\\\"]\"\n \n-#: classes\u002Fextension\u002Fe2pdf-caldera.php:611 classes\u002Fextension\u002Fe2pdf-divi.php:935\n-#: classes\u002Fextension\u002Fe2pdf-elementor.php:505\n-#: classes\u002Fextension\u002Fe2pdf-everest.php:268\n-#: classes\u002Fextension\u002Fe2pdf-fluent.php:1404\n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:3525\n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:894\n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1840\n-#: classes\u002Fextension\u002Fe2pdf-jetformbuilder.php:604\n+#: classes\u002Fextension\u002Fe2pdf-caldera.php:611 classes\u002Fextension\u002Fe2pdf-divi.php:937\n+#: classes\u002Fextension\u002Fe2pdf-elementor.php:458\n+#: classes\u002Fextension\u002Fe2pdf-everest.php:283\n+#: classes\u002Fextension\u002Fe2pdf-fluent.php:1486\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:3544\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:824\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1697\n+#: classes\u002Fextension\u002Fe2pdf-jetformbuilder.php:615\n #: classes\u002Fextension\u002Fe2pdf-wpcf7.php:653\n-#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1167\n+#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1267\n msgid \"The form source is empty or doesn't exist\"\n msgstr \"Die Formularquelle ist leer oder existiert nicht\"\n \n-#: classes\u002Fextension\u002Fe2pdf-caldera.php:613 classes\u002Fextension\u002Fe2pdf-divi.php:937\n-#: classes\u002Fextension\u002Fe2pdf-elementor.php:507\n-#: classes\u002Fextension\u002Fe2pdf-everest.php:270\n-#: classes\u002Fextension\u002Fe2pdf-fluent.php:1406\n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:3527\n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:896\n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1842\n-#: classes\u002Fextension\u002Fe2pdf-jetformbuilder.php:606\n+#: classes\u002Fextension\u002Fe2pdf-caldera.php:613 classes\u002Fextension\u002Fe2pdf-divi.php:939\n+#: classes\u002Fextension\u002Fe2pdf-elementor.php:460\n+#: classes\u002Fextension\u002Fe2pdf-everest.php:285\n+#: classes\u002Fextension\u002Fe2pdf-fluent.php:1488\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:3546\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:826\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1699\n+#: classes\u002Fextension\u002Fe2pdf-jetformbuilder.php:617\n #: classes\u002Fextension\u002Fe2pdf-wpcf7.php:655\n-#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1169\n+#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1269\n msgid \"The form could not be parsed due the incorrect HTML\"\n msgstr \"\"\n \"Das Formular konnte aufgrund des fehlerhaften HTML nicht analysiert werden\"\n@@ -466,99 +469,104 @@\n msgid \" (child)\"\n msgstr \" (kind)\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1107\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1124\n msgid \"Auto PDF and Visual Mapper\"\n msgstr \"Automatisches PDF und Visueller Mapper\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1113\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1130\n msgid \"Use Field Keys instead Field IDs\"\n msgstr \"Verwenden Sie Feldschlüssel anstelle von Feld-IDs\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1116\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1133\n msgid \"Filter\"\n msgstr \"Filter\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1122\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1139\n msgid \"Disable Filter\"\n msgstr \"Filter deaktivieren\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1158\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1175\n msgid \"Force shortcodes to use\"\n msgstr \"Shortcodes erzwingen zu verwenden\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1164\n-#: classes\u002Fextension\u002Fe2pdf-metform.php:1159 classes\u002Fmodel\u002Fe2pdf-loader.php:613\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1181\n+#: classes\u002Fextension\u002Fe2pdf-metform.php:1212 classes\u002Fmodel\u002Fe2pdf-loader.php:648\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:122\n msgid \"None\"\n msgstr \"Keine\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1165\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1182\n msgid \"Fields IDs\"\n msgstr \"Feld-IDs\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1166\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1183\n msgid \"Field Keys\"\n msgstr \"Feldschlüssel\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:3491\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:3510\n msgid \"Child form doesn't support Visual Mapper\"\n msgstr \"Das untergeordnete Formular unterstützt Visual Mapper nicht\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:3653\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:3672\n msgid \"File Upload\"\n msgstr \"Datei-Upload\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:4124\n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:4156\n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:2659\n-#: classes\u002Fextension\u002Fe2pdf-jetformbuilder.php:1255\n-#: classes\u002Fextension\u002Fe2pdf-metform.php:1124\n-#: classes\u002Fextension\u002Fe2pdf-metform.php:1167\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3588\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3652\n-#: classes\u002Fextension\u002Fe2pdf-wordpress.php:1331\n-#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1312\n-#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1348\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:4143\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:4185\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:2527\n+#: classes\u002Fextension\u002Fe2pdf-jetformbuilder.php:1285\n+#: classes\u002Fextension\u002Fe2pdf-metform.php:1166\n+#: classes\u002Fextension\u002Fe2pdf-metform.php:1221\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3574\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3658\n+#: classes\u002Fextension\u002Fe2pdf-wordpress.php:1466\n+#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1417\n+#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1464\n msgid \"E2Pdf Actions\"\n msgstr \"E2Pdf-Aktionen\"\n \n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:824\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:755\n+#, php-format\n+msgid \"Success. [e2pdf-download id=\\\"%d\\\"]\"\n+msgstr \"Erfolg. [e2pdf-download id=\\\"%d\\\"]\"\n+\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:757\n msgid \"Send Message\"\n msgstr \"Nachricht senden\"\n \n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:826\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:759\n msgid \"Error: Your form is not valid, please fix the errors!\"\n msgstr \"Fehler: Ihr Formular ist nicht gültig, bitte beheben Sie die Fehler!\"\n \n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:855\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:785\n msgid \"Form could not be found\"\n msgstr \"Formular konnte nicht gefunden werden\"\n \n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:1926\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:1852\n msgid \"Custom Fields\"\n msgstr \"Benutzerdefinierte Felder\"\n \n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1145 classes\u002Fmodel\u002Fe2pdf-loader.php:618\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:492\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:500\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1052 classes\u002Fmodel\u002Fe2pdf-loader.php:653\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:485\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:493\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:79\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:207\n msgid \"Title\"\n msgstr \"Titel\"\n \n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1189\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1092\n msgid \"Caption\"\n msgstr \"Überschrift\"\n \n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1233\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1132\n msgid \"Description\"\n msgstr \"Beschreibung\"\n \n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1631\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1491\n msgid \"Default Confirmation\"\n msgstr \"Standardbestätigung\"\n \n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1635\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1495\n #, php-format\n msgid \"\"\n \"Thanks for contacting us! We will get in touch with you shortly. [e2pdf-\"\n@@ -571,70 +579,70 @@\n msgid \"Cart \u002F Checkout\"\n msgstr \"Warenkorb \u002F Kasse\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2468\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3370\n msgid \"User Order List\"\n msgstr \"Benutzerbestellliste\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2469\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2493\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2531\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2549\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2583\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2620\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:11\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3371\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3395\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3433\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3451\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3484\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3520\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:10\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:386\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:477 classes\u002Fview\u002Fpage-e2pdf.php:37\n-#: classes\u002Fview\u002Fpage-e2pdf.php:270 classes\u002Fview\u002Fpage-e2pdf.php:477\n+#: classes\u002Fview\u002Fpage-e2pdf.php:271 classes\u002Fview\u002Fpage-e2pdf.php:479\n msgid \"Template\"\n msgstr \"Vorlage\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2477\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2501\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2602\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2628\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3379\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3403\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3503\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3528\n msgid \"Order Status\"\n msgstr \"Bestellstatus\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2483\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2521\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2539\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2568\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2608\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3385\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3423\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3441\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3470\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3509\n msgid \"Priority\"\n msgstr \"Priorität\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2492\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3394\n msgid \"User Order Details\"\n msgstr \"Benutzerdetails zur Bestellung\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2507\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2557\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2591\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3409\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3459\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3492\n msgid \"Hook\"\n msgstr \"Haken\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2530\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3432\n msgid \"User Cart\"\n msgstr \"Benutzerwagen\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2548\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3450\n msgid \"User Checkout\"\n msgstr \"Benutzer-Checkout\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2582\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3483\n msgid \"Admin Order List\"\n msgstr \"Admin-Bestellliste\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2619\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3519\n msgid \"Admin Order Details\"\n msgstr \"Administrator-Bestelldetails\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2662\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:603\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3561\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:638\n msgid \"Any\"\n msgstr \"Beliebig\"\n \n-#: classes\u002Fextension\u002Fe2pdf-wordpress.php:228\n+#: classes\u002Fextension\u002Fe2pdf-wordpress.php:213\n msgid \"Users\"\n msgstr \"Benutzer\"\n \n@@ -643,36 +651,36 @@\n msgid \"Signature\"\n msgstr \"Signatur\"\n \n-#: classes\u002Fextension\u002Fe2pdf-wpcf7.php:1447\n+#: classes\u002Fextension\u002Fe2pdf-wpcf7.php:1457\n msgid \"Storing Engine\"\n msgstr \"Speicher-Engine\"\n \n-#: classes\u002Fhelper\u002Fe2pdf-db.php:660 classes\u002Fhelper\u002Fe2pdf-db.php:718\n-#: classes\u002Fhelper\u002Fe2pdf-db.php:739 classes\u002Fhelper\u002Fe2pdf-db.php:751\n-#: classes\u002Fhelper\u002Fe2pdf-db.php:771\n+#: classes\u002Fhelper\u002Fe2pdf-db.php:718 classes\u002Fhelper\u002Fe2pdf-db.php:776\n+#: classes\u002Fhelper\u002Fe2pdf-db.php:797 classes\u002Fhelper\u002Fe2pdf-db.php:809\n+#: classes\u002Fhelper\u002Fe2pdf-db.php:829\n msgid \"Undefined\"\n msgstr \"Undefiniert\"\n \n-#: classes\u002Fhelper\u002Fe2pdf-helper.php:284 classes\u002Fmodel\u002Fe2pdf-loader.php:436\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:523\n+#: classes\u002Fhelper\u002Fe2pdf-helper.php:285 classes\u002Fmodel\u002Fe2pdf-loader.php:475\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:558\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:67\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:129 classes\u002Fview\u002Fpage-e2pdf.php:7\n-#: classes\u002Fview\u002Fpage-e2pdf.php:11 classes\u002Fview\u002Fpage-e2pdf.php:260\n+#: classes\u002Fview\u002Fpage-e2pdf.php:11 classes\u002Fview\u002Fpage-e2pdf.php:261\n msgid \"Create PDF\"\n msgstr \"PDF erstellen\"\n \n-#: classes\u002Fhelper\u002Fe2pdf-helper.php:288 classes\u002Fmodel\u002Fe2pdf-loader.php:437\n+#: classes\u002Fhelper\u002Fe2pdf-helper.php:289 classes\u002Fmodel\u002Fe2pdf-loader.php:476\n #: classes\u002Fview\u002Fpage-e2pdf-license.php:51\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:14\n msgid \"Templates\"\n msgstr \"Vorlagen\"\n \n-#: classes\u002Fhelper\u002Fe2pdf-helper.php:296 classes\u002Fmodel\u002Fe2pdf-loader.php:440\n+#: classes\u002Fhelper\u002Fe2pdf-helper.php:297 classes\u002Fmodel\u002Fe2pdf-loader.php:479\n #: classes\u002Fview\u002Fpage-e2pdf-license.php:7 classes\u002Fview\u002Fpage-e2pdf-license.php:11\n msgid \"License\"\n msgstr \"Lizenz\"\n \n-#: classes\u002Fhelper\u002Fe2pdf-helper.php:300 classes\u002Fmodel\u002Fe2pdf-loader.php:442\n+#: classes\u002Fhelper\u002Fe2pdf-helper.php:301 classes\u002Fmodel\u002Fe2pdf-loader.php:481\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:7 classes\u002Fview\u002Fpage-e2pdf-debug.php:11\n msgid \"Debug\"\n msgstr \"Fehlerbehebung\"\n@@ -689,48 +697,48 @@\n msgid \"Access Token is not set or Incorrect\"\n msgstr \"Zugriffstoken ist nicht festgelegt oder falsch\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:292\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:331\n msgid \"E2Pdf Bulk Export Interval\"\n msgstr \"E2Pdf Massenexport-Intervall\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:438\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:477\n #: classes\u002Fview\u002Fpage-e2pdf-integrations.php:7\n msgid \"Integrations\"\n msgstr \"Integrationen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:496\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:531\n msgid \"Page will be removed! Continue?\"\n msgstr \"Seite wird entfernt! Fortfahren?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:497\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:532\n msgid \"Font will be removed! Continue?\"\n msgstr \"Schriftart wird entfernt! Fortfahren?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:498\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:533\n msgid \"Changes will not be saved! Continue?\"\n msgstr \"Änderungen werden nicht gespeichert! Fortfahren?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:499\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:534\n msgid \"Saved Template will be overwritten! Continue?\"\n msgstr \"Gespeicherte Vorlage wird überschrieben! Fortfahren?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:500\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:535\n msgid \"All pages will be removed! Continue?\"\n msgstr \"Alle Seiten werden entfernt! Fortfahren?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:501\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:536\n msgid \"Adding new pages not available in \\\"Uploaded PDF\\\"\"\n msgstr \"Hinzufügen neuer Seiten nicht verfügbar in \\\"Hochgeladene PDF\\\"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:502\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:537\n msgid \"Dataset will be removed! Continue?\"\n msgstr \"Datensatz wird entfernt! Fortfahren?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:503\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:538\n msgid \"All datasets will be removed! Continue?\"\n msgstr \"Alle Datensätze werden entfernt! Fortfahren?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:504\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:539\n msgid \"\"\n \"WARNING: Template has changes after last save! Changes will be lost! \"\n \"Continue?\"\n@@ -738,199 +746,199 @@\n \"WARNUNG: Die Vorlage wurde seit dem letzten Speichern geändert! Änderungen \"\n \"gehen verloren! Fortfahren?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:505\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:540\n msgid \"Element will be removed! Continue?\"\n msgstr \"Element wird entfernt! Fortfahren?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:506\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:541\n msgid \"Elements will be removed! Continue?\"\n msgstr \"Elemente werden entfernt! Fortfahren?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:507\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:542\n msgid \"Action will be removed! Continue?\"\n msgstr \"Aktion wird entfernt! Fortfahren?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:508\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:543\n msgid \"Condition will be removed! Continue?\"\n msgstr \"Bedingung wird entfernt! Fortfahren?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:509\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:544\n msgid \"All Field Values will be overwritten! Continue?\"\n msgstr \"Alle Feldwerte werden überschrieben! Fortfahren?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:510\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:545\n msgid \"Website will be forced to use \\\"FREE\\\" License Key! Continue?\"\n msgstr \"\"\n \"Die Website wird gezwungen, den \\\"KOSTENLOSEN\\\" Lizenzschlüssel zu \"\n \"verwenden! Fortfahren?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:511\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:546\n msgid \"Not Available in Revision Edit Mode\"\n msgstr \"Im Überarbeitungsmodus nicht verfügbar\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:512\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:547\n msgid \"The WYSIWYG editor is disabled for this HTML object\"\n msgstr \"Der WYSIWYG-Editor ist für dieses HTML-Objekt deaktiviert\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:513\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:548\n msgid \"WYSIWYG can only be applied within HTML elements\"\n msgstr \"WYSIWYG kann nur innerhalb von HTML-Elementen angewendet werden\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:514\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:549\n msgid \"Only single-page PDFs are allowed with the \\\"FREE\\\" license type\"\n msgstr \"Mit dem Lizenztyp \\\"KOSTENLOS\\\" sind nur einseitige PDFs erlaubt\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:515\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:550\n msgid \"Last condition can't be removed\"\n msgstr \"Letzte Bedingung kann nicht entfernt werden\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:516\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:551\n msgid \"In Progress...\"\n msgstr \"In Bearbeitung...\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:517 classes\u002Fview\u002Fpage-e2pdf-templates.php:36\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:552 classes\u002Fview\u002Fpage-e2pdf-templates.php:36\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:121\n msgid \"Delete\"\n msgstr \"Löschen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:518 classes\u002Fmodel\u002Fe2pdf-loader.php:526\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:553 classes\u002Fmodel\u002Fe2pdf-loader.php:561\n msgid \"Properties\"\n msgstr \"Eigenschaften\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:519 classes\u002Fview\u002Fpage-e2pdf-license.php:30\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:554 classes\u002Fview\u002Fpage-e2pdf-license.php:30\n #: classes\u002Fview\u002Fpage-e2pdf-license.php:38\n msgid \"License Key\"\n msgstr \"Lizenzschlüssel\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:520\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:555\n msgid \"Empty PDF\"\n msgstr \"Leere PDF\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:521\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:556\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:62\n msgid \"Upload PDF\"\n msgstr \"PDF hochladen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:522\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:557\n msgid \"Auto PDF\"\n msgstr \"Auto PDF\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:524 classes\u002Fview\u002Fpage-e2pdf-templates.php:470\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:559 classes\u002Fview\u002Fpage-e2pdf-templates.php:470\n msgid \"Extension\"\n msgstr \"Erweiterung\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:525\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:560\n msgid \"Size\"\n msgstr \"Größe\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:527\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:562\n msgid \"Enter link here\"\n msgstr \"Link hier eingeben\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:528\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:563\n msgid \"Border\"\n msgstr \"Rahmen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:529\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:564\n msgid \"Background\"\n msgstr \"Hintergrund\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:530\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:110\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:565\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:109\n msgid \"Left\"\n msgstr \"Links\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:531\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:112\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:566\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:111\n msgid \"Right\"\n msgstr \"Richtig\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:532\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:567\n msgid \"Top\"\n msgstr \"Oben\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:533\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:111\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:568\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:110\n msgid \"Center\"\n msgstr \"Zentrum\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:534\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:569\n msgid \"Bottom\"\n msgstr \"Unten\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:535\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:570\n msgid \"Justify\"\n msgstr \"Blocksatz\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:536 classes\u002Fmodel\u002Fe2pdf-loader.php:657\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:571 classes\u002Fmodel\u002Fe2pdf-loader.php:688\n msgid \"Border Color\"\n msgstr \"Randfarbe\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:537\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:572\n msgid \"Border Radius\"\n msgstr \"Randradius\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:538 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:106\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:81\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:573 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:106\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:80\n msgid \"Line Height\"\n msgstr \"Zeilenhöhe\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:539\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:574\n msgid \"Width\"\n msgstr \"Breite\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:540\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:575\n msgid \"Height\"\n msgstr \"Höhe\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:541\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:576\n msgid \"Value\"\n msgstr \"Wert\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:542 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:80\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:29\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:577 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:80\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:34\n msgid \"Font\"\n msgstr \"Schriftart\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:543\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:578\n msgid \"Option\"\n msgstr \"Option\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:544\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:579\n msgid \"Group\"\n msgstr \"Gruppe\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:545 classes\u002Fview\u002Fpage-e2pdf-license.php:22\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:580 classes\u002Fview\u002Fpage-e2pdf-license.php:22\n msgid \"Type\"\n msgstr \"Typ\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:546\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:581\n msgid \"Scale\"\n msgstr \"Skalierung\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:547\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:582\n msgid \"Width&Height\"\n msgstr \"Breite&Höhe\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:548\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:583\n msgid \"Choose Image\"\n msgstr \"Bild auswählen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:550\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:585\n msgid \"PDF Upload\"\n msgstr \"PDF-Upload\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:551\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:586\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:104\n msgid \"Global Actions\"\n msgstr \"Globale Aktionen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:552\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:587\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:109\n msgid \"Global Properties\"\n msgstr \"Globale Eigenschaften\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:553\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:588\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:113\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:83\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:211\n@@ -938,1015 +946,999 @@\n msgid \"Connection\"\n msgstr \"Verbindung\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:554\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:589\n msgid \"Map Field\"\n msgstr \"Feld zuordnen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:555\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:590\n msgid \"Insert Mapped\"\n msgstr \"Zuordnung einfügen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:556\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:591\n msgid \"Resize\"\n msgstr \"Größe ändern\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:557\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:592\n msgid \"Copy\"\n msgstr \"Kopieren\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:558\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:593\n msgid \"Cut\"\n msgstr \"Ausschneiden\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:559\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:594\n msgid \"Paste\"\n msgstr \"Einfügen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:560\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:595\n msgid \"Paste in Place\"\n msgstr \"An Ort einfügen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:561 classes\u002Fview\u002Fblocks\u002Fbulk-actions.php:14\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:596 classes\u002Fview\u002Fblocks\u002Fbulk-actions.php:14\n msgid \"Apply\"\n msgstr \"Anwenden\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:562\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:597\n msgid \"Dynamic Height\"\n msgstr \"Dynamische Höhe\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:563\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:598\n msgid \"Multipage\"\n msgstr \"Mehrseitig\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:564 classes\u002Fmodel\u002Fe2pdf-loader.php:667\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:98\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:599 classes\u002Fmodel\u002Fe2pdf-loader.php:698\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:97\n msgid \"Text Align\"\n msgstr \"Textausrichtung\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:565\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:600\n msgid \"Read-Only\"\n msgstr \"Schreibgeschützt\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:566\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:601\n msgid \"Multiline\"\n msgstr \"Mehrzeilig\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:567\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:602\n msgid \"Required\"\n msgstr \"Erforderlich\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:568\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:603\n msgid \"Page Options\"\n msgstr \"Seitenoptionen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:569\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:604\n msgid \"Direction\"\n msgstr \"Richtung\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:570\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:605\n msgid \"Hide\"\n msgstr \"Ausblenden\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:571\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:606\n msgid \"Unhide\"\n msgstr \"Einblenden\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:572 classes\u002Fview\u002Fpage-e2pdf.php:170\n-#: classes\u002Fview\u002Fpage-e2pdf.php:376\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:607 classes\u002Fview\u002Fpage-e2pdf.php:171\n+#: classes\u002Fview\u002Fpage-e2pdf.php:378\n msgid \"Password\"\n msgstr \"Passwort\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:573 classes\u002Fmodel\u002Fe2pdf-loader.php:591\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:608 classes\u002Fmodel\u002Fe2pdf-loader.php:626\n msgid \"Visual Mapper\"\n msgstr \"Visueller Mapper\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:574\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:609\n msgid \"Parent\"\n msgstr \"Elternelement\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:576\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:611\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:131\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:175\n msgid \"Activated\"\n msgstr \"Aktiviert\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:577\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:612\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:133\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:177\n msgid \"Not Activated\"\n msgstr \"Nicht aktiviert\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:578\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:613\n msgid \"Page ID\"\n msgstr \"Seiten-ID\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:579\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:614\n msgid \"Page ID inside Upload PDF\"\n msgstr \"Seiten-ID in PDF hochladen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:580\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:615\n msgid \"Render Fields from Upload PDF\"\n msgstr \"Felder aus hochgeladener PDF-Datei rendern\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:581\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:616\n msgid \"Delete created E2Pdf Fields\"\n msgstr \"Erstellte E2Pdf-Felder löschen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:582\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:617\n msgid \"Keep Image Ratio\"\n msgstr \"Bildverhältnis beibehalten\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:583\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:618\n msgid \"Keep Lower Size\"\n msgstr \"Kleinere Größe\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:584\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:619\n msgid \"Lock Aspect Ratio\"\n msgstr \"Seitenverhältnis sperren\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:585\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:620\n msgid \"Fill Image\"\n msgstr \"Bild füllen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:586\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:621\n msgid \"Page\"\n msgstr \"Seite\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:587\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:622\n msgid \"Resolution\"\n msgstr \"Auflösung\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:588\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:623\n msgid \"Disable Text to Image\"\n msgstr \"Text-zu-Bild deaktivieren\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:589\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:624\n msgid \"Confirmation Code\"\n msgstr \"Bestätigungscode\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:590\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:625\n msgid \"Code\"\n msgstr \"Code\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:592\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:627\n msgid \"Auto\"\n msgstr \"Auto\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:593 classes\u002Fview\u002Fpage-e2pdf.php:479\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:628 classes\u002Fview\u002Fpage-e2pdf.php:481\n msgid \"Actions\"\n msgstr \"Aktionen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:594\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:629\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:166\n msgid \"Save\"\n msgstr \"Speichern\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:595\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:630\n msgid \"Horizontal Align\"\n msgstr \"Horizontale Ausrichtung\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:596\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:631\n msgid \"Vertical Align\"\n msgstr \"Vertikale Ausrichtung\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:597\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:632\n msgid \"Middle\"\n msgstr \"Mitte\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:598\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:633\n msgid \"Apply If\"\n msgstr \"Anwenden Wenn\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:599\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:634\n msgid \"Action\"\n msgstr \"Aktion\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:600\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:635\n msgid \"Property\"\n msgstr \"Eigenschaft\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:601\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:636\n msgid \"If\"\n msgstr \"Wenn\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:602\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:637\n msgid \"Condition\"\n msgstr \"Bedingung\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:604 classes\u002Fview\u002Fblocks\u002Fsub-filters.php:9\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:639 classes\u002Fview\u002Fblocks\u002Fsub-filters.php:9\n msgid \"All\"\n msgstr \"Alle\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:605 classes\u002Fmodel\u002Fe2pdf-loader.php:753\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:640 classes\u002Fmodel\u002Fe2pdf-loader.php:784\n msgid \"Sort\"\n msgstr \"Sortieren\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:606\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:641\n msgid \"E-Signature\"\n msgstr \"E-Signatur\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:607\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:642\n msgid \"Contact\"\n msgstr \"Kontaktieren\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:608\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:643\n msgid \"Location\"\n msgstr \"Standort\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:609\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:644\n msgid \"Reason\"\n msgstr \"Grund\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:610\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:645\n msgid \"Placeholder\"\n msgstr \"Platzhalter\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:611\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:646\n msgid \"Length\"\n msgstr \"Länge\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:612\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:647\n msgid \"Comb\"\n msgstr \"Kamm\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:614\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:649\n msgid \"Highlight\"\n msgstr \"Hervorheben\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:615\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:650\n msgid \"Invert\"\n msgstr \"Invers\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:616\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:651\n msgid \"Outline\"\n msgstr \"Gliederung\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:617\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:652\n msgid \"Push\"\n msgstr \"Drücken\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:619\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:654\n msgid \"Status\"\n msgstr \"Status\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:620\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:655\n msgid \"Add Action\"\n msgstr \"Aktion hinzufügen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:621\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:656\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:11\n-#: classes\u002Fview\u002Fpage-e2pdf-templates.php:148 classes\u002Fview\u002Fpage-e2pdf.php:135\n+#: classes\u002Fview\u002Fpage-e2pdf-templates.php:148 classes\u002Fview\u002Fpage-e2pdf.php:136\n msgid \"Shortcodes\"\n msgstr \"Shortcodes\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:622\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:657\n msgid \"Labels\"\n msgstr \"Etiketten\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:623\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:658\n msgid \"Field Values\"\n msgstr \"Feldwerte\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:624\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:659\n msgid \"Field Names\"\n msgstr \"Feldnamen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:625\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:660\n msgid \"Field Name\"\n msgstr \"Feldname\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:626\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:661\n msgid \"As Field Name\"\n msgstr \"Als Feldname\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:627\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:662\n msgid \"Confirm\"\n msgstr \"Bestätigen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:628\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:663\n msgid \"Cancel\"\n msgstr \"Abbrechen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:629\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:664\n msgid \"Hide (If Empty)\"\n msgstr \"Ausblenden (wenn leer)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:630\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:665\n msgid \"Hide Page (If Empty)\"\n msgstr \"Seite ausblenden (wenn leer)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:631\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:666\n msgid \"Replace Value\"\n msgstr \"Wert ersetzen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:632\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:667\n msgid \"Auto-Close\"\n msgstr \"Auto schließen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:633\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:668\n msgid \"New Lines to BR\"\n msgstr \"Neue Zeilen zu BR\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:634\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:669\n msgid \"Disable WYSIWYG Editor\"\n msgstr \"WYSIWYG-Editor deaktivieren\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:635\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:670\n msgid \"CSS Priority\"\n msgstr \"CSS-Priorität\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:636\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:671\n msgid \"CSS Style\"\n msgstr \"CSS-Stil\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:637\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:672\n msgid \"Enabling WYSIWYG can affect \\\"HTML\\\" Source\"\n msgstr \"Aktivieren von WYSIWYG kann den \\\"HTML\\\"-Quellcode beeinflussen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:638\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:673\n msgid \"Hidden Fields\"\n msgstr \"Verborgene Felder\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:639\n-msgid \"Enable PDF Access By URL\"\n-msgstr \"PDF-Zugriff über URL aktivieren\"\n-\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:640\n-msgid \"Disable PDF Access By URL\"\n-msgstr \"PDF-Zugriff über URL deaktivieren\"\n-\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:641\n-msgid \"Enable Shortcodes\"\n-msgstr \"Shortcodes aktivieren\"\n-\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:642\n-msgid \"Disable Shortcodes\"\n-msgstr \"Shortcodes deaktivieren\"\n-\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:643\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:674\n msgid \"Error Message\"\n msgstr \"Fehlermeldung\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:644\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:675\n msgid \"Redirect URL\"\n msgstr \"Umleitungs-URL\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:645\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:676\n msgid \"Element\"\n msgstr \"Element\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:646\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:677\n msgid \"Elements\"\n msgstr \"Elemente\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:647\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:678\n msgid \"Position Top\"\n msgstr \"Position oben\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:648\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:679\n msgid \"Position Left\"\n msgstr \"Position links\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:649\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:680\n msgid \"Padding Top\"\n msgstr \"Abstand oben\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:650\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:681\n msgid \"Padding Bottom\"\n msgstr \"Abstand unten\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:651\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:682\n msgid \"Padding Left\"\n msgstr \"Abstand links\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:652\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:683\n msgid \"Padding Right\"\n msgstr \"Abstand rechts\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:653\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:684\n msgid \"Margin Top\"\n msgstr \"Margin oben\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:654\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:685\n msgid \"Margin Bottom\"\n msgstr \"Margin unten\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:655\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:686\n msgid \"Margin Left\"\n msgstr \"Margin links\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:656\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:687\n msgid \"Margin Right\"\n msgstr \"Rand rechts\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:658\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:689\n msgid \"Border Top\"\n msgstr \"Border oben\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:659\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:690\n msgid \"Border Bottom\"\n msgstr \"Border unten\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:660\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:691\n msgid \"Border Left\"\n msgstr \"Border links\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:661\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:692\n msgid \"Border Right\"\n msgstr \"Rand rechts\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:662\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:693\n msgid \"Field\"\n msgstr \"Feld\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:663\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:9\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:694\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:8\n msgid \"Style\"\n msgstr \"Stil\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:664\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:695\n msgid \"Lock \u002F Hide\"\n msgstr \"Sperren \u002F Ausblenden\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:665\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:139\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:696\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:138\n msgid \"Font Color\"\n msgstr \"Schriftfarbe\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:666 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:93\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:697 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:93\n msgid \"Font Size\"\n msgstr \"Schriftgröße\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:668\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:699\n msgid \"Rotation\"\n msgstr \"Drehung\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:669\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:700\n msgid \"Preg Replace Pattern\"\n msgstr \"Preg Replace Muster\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:670\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:701\n msgid \"Preg Replace Replacement\"\n msgstr \"Preg Replace Ersatz\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:671\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:702\n msgid \"Preg Match All Pattern\"\n msgstr \"Preg Match All Muster\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:672\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:703\n msgid \"Preg Match All Output\"\n msgstr \"Preg Match All Ausgabe\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:673\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:704\n msgid \"Preg Filters\"\n msgstr \"Preg Filter\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:674\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:705\n msgid \"Char Spacing\"\n msgstr \"Zeichenabstand\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:675 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:34\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:706 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:34\n msgid \"Color\"\n msgstr \"Farbe\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:676\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:707\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_builder.php:43\n msgid \"QR Code\"\n msgstr \"QR-Code\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:677\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:708\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_builder.php:45\n msgid \"Barcode\"\n msgstr \"Barcode\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:678 classes\u002Fmodel\u002Fe2pdf-loader.php:704\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:238\n-#: classes\u002Fview\u002Fpage-e2pdf.php:216 classes\u002Fview\u002Fpage-e2pdf.php:423\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:709 classes\u002Fmodel\u002Fe2pdf-loader.php:735\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:237\n+#: classes\u002Fview\u002Fpage-e2pdf.php:217 classes\u002Fview\u002Fpage-e2pdf.php:425\n msgid \"Format\"\n msgstr \"Format\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:679\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:710\n msgid \"Precision\"\n msgstr \"Präzision\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:680\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:711\n msgid \"L - Smallest\"\n msgstr \"L - Kleinste\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:681\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:712\n msgid \"M - Medium\"\n msgstr \"M - Mittel\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:682\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:713\n msgid \"Q - High\"\n msgstr \"Q - Hoch\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:683\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:714\n msgid \"H - Best\"\n msgstr \"H - Beste\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:684\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:715\n msgid \"All Templates for this Website will be deactivated! Continue?\"\n msgstr \"Alle Vorlagen für diese Website werden deaktiviert! Fortfahren?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:685\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:716\n msgid \"Pre-uploaded PDF will be removed from E2Pdf Template! Continue?\"\n msgstr \"\"\n \"Vorab hochgeladene PDF wird aus der E2Pdf-Vorlage entfernt! Fortfahren?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:686\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:717\n msgid \"Quiet Zone Size\"\n msgstr \"Quiet Zone Größe\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:687\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:718\n msgid \"Hide Label\"\n msgstr \"Label verbergen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:688\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:719\n msgid \"Lock\"\n msgstr \"Sperren\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:689\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:41\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:720\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:40\n msgid \"Unlock\"\n msgstr \"Entsperren\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:690\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:721\n msgid \"Opacity\"\n msgstr \"Deckkraft\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:691\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:722\n msgid \"Auto Font Size\"\n msgstr \"Automatische Schriftgröße\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:692 classes\u002Fview\u002Fpage-e2pdf-settings.php:33\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:723 classes\u002Fview\u002Fpage-e2pdf-settings.php:38\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:389\n msgid \"Max Upload File Size\"\n msgstr \"Max. Dateigröße für Uploads\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:693\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:724\n msgid \"The bulk export task will be removed! Continue?\"\n msgstr \"Die Massenexportaufgabe wird entfernt! Fortfahren?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:694\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:725\n msgid \"The bulk export task will be stopped! Continue?\"\n msgstr \"Der Massenexportvorgang wird gestoppt! Fortfahren?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:695\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:726\n msgid \"The bulk export task will be started! Continue?\"\n msgstr \"Der Massendatenexport wird gestartet! Fortfahren?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:696 classes\u002Fview\u002Fpage-e2pdf-templates.php:25\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:727 classes\u002Fview\u002Fpage-e2pdf-templates.php:25\n msgid \"Search...\"\n msgstr \"Suche...\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:697\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:728\n msgid \"Show Element\"\n msgstr \"Element anzeigen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:698\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:729\n msgid \"Hide Element\"\n msgstr \"Element ausblenden\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:699\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:730\n msgid \"Show Page\"\n msgstr \"Seite anzeigen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:700\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:731\n msgid \"Hide Page\"\n msgstr \"Seite ausblenden\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:701\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:732\n msgid \"Change to\"\n msgstr \"Ändern zu\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:702\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:733\n msgid \"Merge\"\n msgstr \"Zusammenführen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:703\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:734\n msgid \"Change Property\"\n msgstr \"Eigenschaft ändern\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:705\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:736\n msgid \"Insert Before\"\n msgstr \"Vorher einfügen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:706\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:737\n msgid \"Insert After\"\n msgstr \"Einfügen nach\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:707\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:738\n msgid \"Full Replacement\"\n msgstr \"Vollständiger Ersatz\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:708\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:739\n msgid \"Search \u002F Replace\"\n msgstr \"Suchen \u002F Ersetzen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:709\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:740\n msgid \"Contains\"\n msgstr \"Enthält\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:710\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:741\n msgid \"Not Contains\"\n msgstr \"Enthält nicht\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:711\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:742\n msgid \"In Array\"\n msgstr \"In Array\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:712\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:743\n msgid \"Array Key Exists\"\n msgstr \"Array-Schlüssel existiert\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:713\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:744\n msgid \"Else\"\n msgstr \"Sonst\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:714\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:745\n msgid \"Append\"\n msgstr \"Anhängen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:715\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:746\n msgid \"Vertical\"\n msgstr \"Vertikal\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:716\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:747\n msgid \"Horizontal\"\n msgstr \"Horizontal\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:717\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:748\n msgid \"Palette\"\n msgstr \"Palette\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:718\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:749\n msgid \"Line \u002F Stroke Color\"\n msgstr \"Linien-\u002FStrichfarbe\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:719\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:750\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_builder.php:47\n msgid \"Graph\"\n msgstr \"Diagramm\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:720\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:751\n msgid \"Markers\"\n msgstr \"Markierungen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:721\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:752\n msgid \"Grid\"\n msgstr \"Raster\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:722\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:753\n msgid \"Axis\"\n msgstr \"Achse\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:723\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:754\n msgid \"Legend\"\n msgstr \"Legende\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:724 classes\u002Fview\u002Fpage-e2pdf-debug.php:220\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:755 classes\u002Fview\u002Fpage-e2pdf-debug.php:233\n msgid \"Structure\"\n msgstr \"Struktur\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:725\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:756\n msgid \"Space\"\n msgstr \"Abstand\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:726\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:757\n msgid \"Position\"\n msgstr \"Position\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:727\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:758\n msgid \"Vertical Label\"\n msgstr \"Vertikales Etikett\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:728\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:759\n msgid \"Horizontal Label\"\n msgstr \"Horizontales Etikett\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:729\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:760\n msgid \"Label\"\n msgstr \"Etikett\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:730\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:761\n msgid \"Axis Overlap\"\n msgstr \"Achsenüberlappung\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:731\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:762\n msgid \"Grid Spacing\"\n msgstr \"Rasterabstand\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:732\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:763\n msgid \"Grid Spacing (V)\"\n msgstr \"Rasterabstand (V)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:733\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:764\n msgid \"Grid Spacing (H)\"\n msgstr \"Rasterabstand (H)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:734\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:765\n msgid \"Grid Division (V)\"\n msgstr \"Rasterteilung (V)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:735\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:766\n msgid \"Grid Division (H)\"\n msgstr \"Rasterteilung (H)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:736\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:767\n msgid \"Axis Color\"\n msgstr \"Achsenfarbe\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:737\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:768\n msgid \"Grid Color\"\n msgstr \"Gitternetzfarbe\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:738\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:769\n msgid \"Bar Label Color\"\n msgstr \"Balkenetikettfarbe\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:739\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:770\n msgid \"Position (V)\"\n msgstr \"Position (V)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:740\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:771\n msgid \"Position (H)\"\n msgstr \"Position (H)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:741\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:772\n msgid \"Bar Labels\"\n msgstr \"Balkenbeschriftungen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:742\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:773\n msgid \"Marker\"\n msgstr \"Markierung\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:743\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:774\n msgid \"Grid Subdivision Color\"\n msgstr \"Raster-Unterteilungsfarbe\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:744\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:775\n msgid \"Sub Divisions\"\n msgstr \"Unterabteilungen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:745\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:776\n msgid \"Axis (V)\"\n msgstr \"Achse (V)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:746\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:777\n msgid \"Axis (H)\"\n msgstr \"Achse (H)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:747\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:778\n msgid \"Text\"\n msgstr \"Text\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:748\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:779\n msgid \"Enable\"\n msgstr \"Einschalten\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:749\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:780\n msgid \"Min\"\n msgstr \"Min\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:750\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:781\n msgid \"Max\"\n msgstr \"Max\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:751\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:782\n msgid \"Fill Under\"\n msgstr \"Unterfüllen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:752\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:783\n msgid \"Reverse\"\n msgstr \"Umkehren\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:754\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:785\n msgid \"Percentage\"\n msgstr \"Prozentsatz\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:755\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:786\n msgid \"Legend Text Side\"\n msgstr \"Legendentextseite\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:756\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:787\n msgid \"Columns\"\n msgstr \"Spalten\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:757\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:788\n msgid \"Padding (X)\"\n msgstr \"Polsterung (X)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:758\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:789\n msgid \"Padding (Y)\"\n msgstr \"Polsterung (Y)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:759\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:790\n msgid \"Stroke Color\"\n msgstr \"Strichfarbe\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:760\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:791\n msgid \"Stroke Width\"\n msgstr \"Strichstärke\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:761\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:792\n msgid \"Bubble Scale\"\n msgstr \"Blasenskala\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:762\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:793\n msgid \"Units\"\n msgstr \"Einheiten\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:763\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:794\n msgid \"Increment\"\n msgstr \"Erhöhen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:764\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:795\n msgid \"Stack Group\"\n msgstr \"Stapelgruppe\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:765\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:796\n msgid \"Line Dataset\"\n msgstr \"Liniendatensatz\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:766\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:797\n msgid \"Project Angle\"\n msgstr \"Projektwinkel\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:767\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:798\n msgid \"Legends\"\n msgstr \"Legenden\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:768\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:799\n msgid \"Colors\"\n msgstr \"Farben\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:769\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:800\n msgid \"Line Curve\"\n msgstr \"Linienkurve\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:770\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:801\n msgid \"Margin (H)\"\n msgstr \"Rand (H)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:771\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:802\n msgid \"Margin (V)\"\n msgstr \"Rand (V)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:772\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:803\n msgid \"Units Label\"\n msgstr \"Einheitenbezeichnung\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:773\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:804\n msgid \"Dynamic Line \u002F Stroke Color\"\n msgstr \"Dynamische Linien-\u002FStrichfarbe\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:774\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:805\n msgid \"Dynamic Marker Color\"\n msgstr \"Dynamische Markierungsfarbe\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:775\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:806\n msgid \"Inner\"\n msgstr \"Innerer\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:776\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:807\n msgid \"Outer\"\n msgstr \"Äußerer\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:777\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:808\n msgid \"Align\"\n msgstr \"Ausrichtung\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:778\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:809\n msgid \"Offset (X)\"\n msgstr \"Versatz (X)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:779\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:810\n msgid \"Offset (Y)\"\n msgstr \"Versatz (Y)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:780\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:811\n msgid \"Link URL\"\n msgstr \"Link-URL\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:781\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:812\n msgid \"Link Type\"\n msgstr \"Linktyp\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:782\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:813\n msgid \"Link Label\"\n msgstr \"Link-Beschriftung\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:783\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:814\n msgid \"Url\"\n msgstr \"URL\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:784\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:815\n msgid \"Attachment\"\n msgstr \"Anhang\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:785\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:816\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_builder.php:37\n msgid \"Image\"\n msgstr \"Bild\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:786\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:817\n msgid \"Media Library\"\n msgstr \"Medienbibliothek\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:787 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:44\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:818 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:44\n msgid \"Underline\"\n msgstr \"Unterstreichen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:788\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:819\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_builder.php:49\n msgid \"Page Number\"\n msgstr \"Seitenzahl\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:789\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:820\n msgid \"Adjust Page Number\"\n msgstr \"Seitenzahl anpassen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:790\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:821\n msgid \"Adjust Page Total\"\n msgstr \"Seitentotal anpassen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:791\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:822\n msgid \"Preload Images\"\n msgstr \"Bilder vorladen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:792\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:823\n msgid \"Hooks\"\n msgstr \"Hooks\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:793\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:824\n msgid \"Display PDF download at\"\n msgstr \"PDF-Download anzeigen bei\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:794\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:825\n msgid \"Optimization\"\n msgstr \"Optimierung\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:795\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:826\n msgid \"Inherit\"\n msgstr \"Erben\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:796\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:402\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:827\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:397\n msgid \"Not Optimized\"\n msgstr \"Nicht optimiert\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:797\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:403\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:828\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:398\n msgid \"Low Quality\"\n msgstr \"Niedrige Qualität\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:798\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:404\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:829\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:399\n msgid \"Basic Quality\"\n msgstr \"Grundqualität\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:799\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:405\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:830\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:400\n msgid \"Good Quality\"\n msgstr \"Gute Qualität\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:800\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:406\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:831\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:401\n msgid \"Best Quality\"\n msgstr \"Beste Qualität\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:801\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:407\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:832\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:402\n msgid \"Ultra Quality\"\n msgstr \"Ultra-Qualität\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:802\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:833\n msgid \"Error: Empty \\\"if\\\" and \\\"value\\\" detected in action condition\"\n msgstr \"Fehler: Leere \\\"if\\\"- und \\\"value\\\"-Felder in Aktionsbedingung erkannt\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:803\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:834\n msgid \"No Read-Only\"\n msgstr \"Kein Nur-Lesen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:804\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:835\n msgid \"No Border\"\n msgstr \"Kein Rahmen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:805\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:836\n msgid \"Quick Props\"\n msgstr \"Schnelle Requisiten\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:844\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:875\n #, php-format\n msgid \"E2Pdf requires PHP version 5.4 or later. Your PHP version is %s\"\n msgstr \"E2Pdf erfordert PHP-Version 5.4 oder höher. Ihre PHP-Version ist %s\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:865\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:900\n msgid \"Templates per page\"\n msgstr \"Vorlagen pro Seite\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:981\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:1016\n #, php-format\n msgid \"Can't create folder %s\"\n msgstr \"Kann Ordner %s nicht erstellen\"\n@@ -1985,249 +1977,248 @@\n msgid \"Restore License Key\"\n msgstr \"Lizenzschlüssel wiederherstellen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:84 classes\u002Fmodel\u002Fe2pdf-options.php:282\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:87 classes\u002Fmodel\u002Fe2pdf-options.php:285\n msgid \"Enabled\"\n msgstr \"Funktioniert\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:88 classes\u002Fmodel\u002Fe2pdf-options.php:281\n-#: classes\u002Fmodel\u002Fe2pdf-options.php:292\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:91 classes\u002Fmodel\u002Fe2pdf-options.php:284\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:295\n msgid \"Disabled\"\n msgstr \"Nicht funktioniert\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:94 classes\u002Fmodel\u002Fe2pdf-options.php:735\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:97 classes\u002Fmodel\u002Fe2pdf-options.php:797\n msgid \"Extensions\"\n msgstr \"Erweiterungen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:140 classes\u002Fview\u002Fpage-e2pdf-debug.php:37\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:143 classes\u002Fview\u002Fpage-e2pdf-debug.php:37\n msgid \"Common\"\n msgstr \"Allgemein\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:143 classes\u002Fmodel\u002Fe2pdf-options.php:148\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:146 classes\u002Fmodel\u002Fe2pdf-options.php:151\n msgid \"E2Pdf.com Account E-mail Address\"\n msgstr \"E2Pdf.com Konto-E-Mail-Adresse\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:151 classes\u002Fmodel\u002Fe2pdf-options.php:159\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:154 classes\u002Fmodel\u002Fe2pdf-options.php:162\n msgid \"API Server\"\n msgstr \"API-Server\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:172\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:175\n msgid \"API Connection Timout (sec)\"\n msgstr \"API-Verbindungszeitüberschreitung (Sek.)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:181 classes\u002Fview\u002Fpage-e2pdf-debug.php:45\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:184 classes\u002Fview\u002Fpage-e2pdf-debug.php:45\n msgid \"PDF Processor\"\n msgstr \"PDF-Prozessor\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:189\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:443\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:192\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:438\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:46\n msgid \"Font Processor\"\n msgstr \"Schriftprozessor\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:200\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:203\n msgid \"Release Candidate Builds\"\n msgstr \"Release-Kandidat-Builds\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:206\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:209\n msgid \"Update from E2Pdf.com\"\n msgstr \"Aktualisierung von E2Pdf.com\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:209\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:212\n msgid \"URL Format\"\n msgstr \"URL-Format\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:220 classes\u002Fmodel\u002Fe2pdf-options.php:226\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:223 classes\u002Fmodel\u002Fe2pdf-options.php:229\n msgid \"URL Rewrite\"\n msgstr \"URL-Umschreibung\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:239 classes\u002Fview\u002Fpage-e2pdf-settings.php:123\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:242 classes\u002Fview\u002Fpage-e2pdf-settings.php:128\n msgid \"Cache\"\n msgstr \"Cache\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:245\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:248\n msgid \"Objects Cache\"\n msgstr \"Objekt-Cache\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:254\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:257\n msgid \"Fonts Cache\"\n msgstr \"Schriftarten-Cache\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:263\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:266\n msgid \"PDFs Cache\"\n msgstr \"PDFs-Cache\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:272\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:275\n msgid \"TTL (sec)\"\n msgstr \"TTL (Sek.)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:275\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:278\n msgid \"PDF Ajax Loader\"\n msgstr \"PDF Ajax Loader\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:286\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:289\n msgid \"Fallback PDF Viewer\"\n msgstr \"Fallback-PDF-Viewer\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:303\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:306\n msgid \"\"\n \"Fix Chrome iOS Download Name (might be not compatible with certain setups)\"\n msgstr \"\"\n \"Chrome iOS Download-Name beheben (möglicherweise nicht mit bestimmten \"\n \"Konfigurationen kompatibel)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:306 classes\u002Fmodel\u002Fe2pdf-options.php:312\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:309 classes\u002Fmodel\u002Fe2pdf-options.php:315\n msgid \"New Edit Layout\"\n msgstr \"Neues Bearbeitungs-Layout\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:315 classes\u002Fmodel\u002Fe2pdf-options.php:321\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:318 classes\u002Fmodel\u002Fe2pdf-options.php:324\n msgid \"Hide Warnings\"\n msgstr \"Warnungen ausblenden\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:324\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:327\n msgid \"Local Images\"\n msgstr \"Lokale Bilder\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:330\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:333\n msgid \"Load via Remote Request\"\n msgstr \"Über Remote-Anfrage laden\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:333\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:336\n msgid \"Images Timout (sec)\"\n msgstr \"Bilder-Timeout (Sek.)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:342\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:345\n msgid \"Bulk Export Interval (sec)\"\n msgstr \"Intervall für Massenausfuhr (Sek.)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:351\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:354\n msgid \"Undo Limit\"\n msgstr \"Rückgängig-Limit\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:360\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:363\n msgid \"Revisions Limit\"\n msgstr \"Überarbeitungsgrenze\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:369\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:372\n msgid \"Debug Mode\"\n msgstr \"Debug-Modus\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:375\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:378\n msgid \"Enable Debug Mode\"\n msgstr \"Debug-Modus aktivieren\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:378 classes\u002Fmodel\u002Fe2pdf-options.php:383\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:381 classes\u002Fmodel\u002Fe2pdf-options.php:386\n #: classes\u002Fview\u002Fblocks\u002Fdebug-panel.php:10\n msgid \"Recovery Mode E-mail\"\n msgstr \"Wiederherstellungsmodus E-Mail\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:386\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:389\n msgid \"Memory\u002FTime Usage\"\n msgstr \"Speicher-\u002FZeitnutzung\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:392\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:395\n msgid \"Show Memory\u002FTime Usage\"\n msgstr \"Speicher-\u002FZeitverbrauch anzeigen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:397 classes\u002Fview\u002Fpage-e2pdf-debug.php:20\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:400 classes\u002Fview\u002Fpage-e2pdf-debug.php:20\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:190\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:100\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:105\n msgid \"Maintenance\"\n msgstr \"Wartung\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:402\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:405\n msgid \"Fonts\"\n msgstr \"Schriftarten\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:407\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:410\n msgid \"Permissions\"\n msgstr \"Berechtigungen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:460\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:452 classes\u002Fmodel\u002Fe2pdf-options.php:522\n msgid \"Authorized\"\n msgstr \"Autorisiert\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:743\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:811\n msgid \"Translation\"\n msgstr \"Übersetzung\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:747\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:815\n msgid \"PDF Translation\"\n msgstr \"PDF-Übersetzung\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:753\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:821\n msgid \"No Translation\"\n msgstr \"Keine Übersetzung\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:754\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:822\n msgid \"Partial Translation\"\n msgstr \"Teilweise Übersetzung\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:755\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:823\n msgid \"Full Translation\"\n msgstr \"Vollständige Übersetzung\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:387 classes\u002Fmodel\u002Fe2pdf-shortcode.php:643\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:1204\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:1326\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:245 classes\u002Fmodel\u002Fe2pdf-shortcode.php:6796\n+#: classes\u002Fmodel\u002Fe2pdf-template.php:1044\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:127\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:462\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:543 classes\u002Fview\u002Fpage-e2pdf.php:28\n msgid \"Download\"\n msgstr \"Herunterladen\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5891\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6561\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5029\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5755\n msgid \"Product\"\n msgstr \"Produkt\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5894\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6564\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5032\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5758\n msgid \"SKU\"\n msgstr \"SKU\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5897\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6567\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5035\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5761\n msgid \"Quantity\"\n msgstr \"Menge\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5900\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6570\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5038\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5764\n msgid \"Price\"\n msgstr \"Preis\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5903\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6573\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6649\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6885\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5041\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5767\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5833\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6069\n msgid \"Subtotal\"\n msgstr \"Zwischensumme\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6667\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6903\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5851\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6087\n msgid \"Free shipping coupon\"\n msgstr \"Gutschein für kostenlosen Versand\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6722\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6958\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5906\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6142\n msgid \"Shipping options will be updated during checkout.\"\n msgstr \"Versandoptionen werden während des Bezahlvorgangs aktualisiert.\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6800\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:7038\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5984\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6222\n #, php-format\n msgid \"estimated for %s\"\n msgstr \"Geschätzt für %s\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6811\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:7049\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5995\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6233\n msgid \"Total\"\n msgstr \"Gesamt\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-template.php:170\n+#: classes\u002Fmodel\u002Fe2pdf-template.php:171\n msgid \"Latest\"\n msgstr \"Neueste\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-template.php:887\n+#: classes\u002Fmodel\u002Fe2pdf-template.php:951\n msgid \"Template Deactivated\"\n msgstr \"Vorlage deaktiviert\"\n \n@@ -2271,8 +2262,8 @@\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:112 classes\u002Fview\u002Fpage-e2pdf-debug.php:114\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:123 classes\u002Fview\u002Fpage-e2pdf-debug.php:130\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:137 classes\u002Fview\u002Fpage-e2pdf-debug.php:144\n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:251 classes\u002Fview\u002Fpage-e2pdf-debug.php:260\n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:269\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:263 classes\u002Fview\u002Fpage-e2pdf-debug.php:272\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:281\n msgid \"[ERROR]\"\n msgstr \"[FEHLER]\"\n \n@@ -2475,192 +2466,192 @@\n msgid \"Update\"\n msgstr \"Aktualisieren\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:15\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:14\n msgid \"Meta\"\n msgstr \"Meta\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:17\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:16\n msgid \"Security\"\n msgstr \"Sicherheit\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:26\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:25\n msgid \"Enter your E-mail to unlock this features\"\n msgstr \"Geben Sie Ihre E-Mail-Adresse ein, um diese Funktionen freizuschalten\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:33\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:32\n msgid \"E-mail\"\n msgstr \"E-Mail\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:49\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:48\n msgid \"Global Font\"\n msgstr \"Globale Schriftart\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:161\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:169\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:182\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:194\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:160\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:168\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:181\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:193\n msgid \"Dataset Title\"\n msgstr \"Datensatz-Titel\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:204\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:212\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:203\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:211\n msgid \"Button Title\"\n msgstr \"Schaltflächentitel\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:221\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:229\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:220\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:228\n msgid \"Dynamic PDF Source\"\n msgstr \"Dynamische PDF-Quelle\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:258\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:257\n msgid \"JPG Output Resolution\"\n msgstr \"JPG-Ausgabeauflösung\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:285\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:284\n msgid \"Open PDF in Browser\"\n msgstr \"PDF im Browser öffnen\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:300\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:299\n msgid \"Auto PDF Download\"\n msgstr \"Automatischer PDF-Download\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:316\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:324\n-#: classes\u002Fview\u002Fpage-e2pdf.php:148 classes\u002Fview\u002Fpage-e2pdf.php:154\n-#: classes\u002Fview\u002Fpage-e2pdf.php:338 classes\u002Fview\u002Fpage-e2pdf.php:344\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:314\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:322\n+#: classes\u002Fview\u002Fpage-e2pdf.php:149 classes\u002Fview\u002Fpage-e2pdf.php:155\n+#: classes\u002Fview\u002Fpage-e2pdf.php:340 classes\u002Fview\u002Fpage-e2pdf.php:346\n msgid \"PDF Name\"\n msgstr \"PDF-Name\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:334\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:342\n-#: classes\u002Fview\u002Fpage-e2pdf.php:354 classes\u002Fview\u002Fpage-e2pdf.php:360\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:331\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:339\n+#: classes\u002Fview\u002Fpage-e2pdf.php:356 classes\u002Fview\u002Fpage-e2pdf.php:362\n msgid \"PDF Local Name\"\n msgstr \"PDF-Lokalname\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:352\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:348\n msgid \"PDF Flatten\"\n msgstr \"PDF zusammenfalten\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:364\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:360\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:42 classes\u002Fview\u002Fpage-e2pdf-debug.php:43\n-#: classes\u002Fview\u002Fpage-e2pdf.php:206 classes\u002Fview\u002Fpage-e2pdf.php:413\n+#: classes\u002Fview\u002Fpage-e2pdf.php:207 classes\u002Fview\u002Fpage-e2pdf.php:415\n msgid \"No\"\n msgstr \"Nein\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:365\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:361\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:42 classes\u002Fview\u002Fpage-e2pdf-debug.php:43\n-#: classes\u002Fview\u002Fpage-e2pdf.php:207 classes\u002Fview\u002Fpage-e2pdf.php:414\n+#: classes\u002Fview\u002Fpage-e2pdf.php:208 classes\u002Fview\u002Fpage-e2pdf.php:416\n msgid \"Yes\"\n msgstr \"Ja\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:366\n-#: classes\u002Fview\u002Fpage-e2pdf.php:208 classes\u002Fview\u002Fpage-e2pdf.php:415\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:362\n+#: classes\u002Fview\u002Fpage-e2pdf.php:209 classes\u002Fview\u002Fpage-e2pdf.php:417\n msgid \"Full\"\n msgstr \"Voll\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:378\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:373\n msgid \"Generate appearance\"\n msgstr \"Aussehen generieren\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:390\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:385\n msgid \"Images\"\n msgstr \"Bilder\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:414\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:409\n msgid \"Compression\"\n msgstr \"Komprimierung\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:426\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:421\n msgid \"Default\"\n msgstr \"Standard\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:466\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:460\n msgid \"PDF Tab Order\"\n msgstr \"PDF-Tab-Reihenfolge\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:477\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:471\n msgid \"Unspecified\"\n msgstr \"Nicht angegeben\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:478\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:472\n msgid \"Use Row Order\"\n msgstr \"Zeilenreihenfolge verwenden\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:479\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:473\n msgid \"Use Column Order\"\n msgstr \"Spaltenreihenfolge verwenden\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:480\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:474\n msgid \"Use Document Structure\"\n msgstr \"Dokumentenstruktur verwenden\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:510\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:518\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:503\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:511\n msgid \"Subject\"\n msgstr \"Betreff\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:528\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:536\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:521\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:529\n msgid \"Author\"\n msgstr \"Autor\"\n \n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:538\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:546\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:554\n msgid \"Keywords\"\n msgstr \"Schlüsselwörter\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:563\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:555\n msgid \"Lang Code\"\n msgstr \"Sprachcode\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:587\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:595\n-#: classes\u002Fview\u002Fpage-e2pdf.php:164 classes\u002Fview\u002Fpage-e2pdf.php:370\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:578\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:586\n+#: classes\u002Fview\u002Fpage-e2pdf.php:165 classes\u002Fview\u002Fpage-e2pdf.php:372\n msgid \"PDF Open Password\"\n msgstr \"PDF-Öffnungspasswort\"\n \n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:596\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:605\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:614\n msgid \"Permissions Owner Password\"\n msgstr \"Berechtigungen Eigentümerpasswort\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:623\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:614\n msgid \"Permissions (Opened with PDF Open Password)\"\n msgstr \"Berechtigungen (Geöffnet mit PDF-Öffnungskennwort)\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:632\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:623\n msgid \"Printing\"\n msgstr \"Drucken\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:641\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:632\n msgid \"Printing (Degraded)\"\n msgstr \"Drucken (Verschlechtert)\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:650\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:641\n msgid \"Editing\"\n msgstr \"Bearbeitung\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:659\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:650\n msgid \"Copying\"\n msgstr \"Kopieren\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:668\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:659\n msgid \"Commenting\"\n msgstr \"Kommentierung\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:677\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:668\n msgid \"Fill-In or Signing\"\n msgstr \"Ausfüllen oder Unterschreiben\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:686\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:677\n msgid \"Document Assembly\"\n msgstr \"Dokumentenzusammenstellung\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:695\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:686\n msgid \"Screen Reader Accessibility\"\n msgstr \"Bildschirmleser-Zugänglichkeit\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:12 classes\u002Fview\u002Fpage-e2pdf-debug.php:245\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:12 classes\u002Fview\u002Fpage-e2pdf-debug.php:257\n msgid \"Connections\"\n msgstr \"Verbindungen\"\n \n@@ -2669,13 +2660,13 @@\n msgstr \"DB\"\n \n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:25 classes\u002Fview\u002Fpage-e2pdf-debug.php:195\n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:206\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:105\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:116\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:128\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:139\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:150\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:162\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:207 classes\u002Fview\u002Fpage-e2pdf-debug.php:219\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:110\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:121\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:133\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:144\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:155\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:167\n msgid \"Are you sure want to continue?\"\n msgstr \"Möchten Sie wirklich fortfahren?\"\n \n@@ -2751,7 +2742,7 @@\n msgid \"Plugins\"\n msgstr \"Plugins\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:215\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:228\n msgid \"\"\n \"* It is strongly RECOMMENDED that you backup your DB before any of these \"\n \"actions are applied to avoid data loss\"\n@@ -2759,15 +2750,15 @@\n \"* Es wird dringend EMPFOHLEN, Ihre Datenbank zu sichern, bevor eine dieser \"\n \"Aktionen angewendet wird, um Datenverlust zu vermeiden\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:252\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:264\n msgid \"Back-connection\"\n msgstr \"Rückverbindung\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:261\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:273\n msgid \"Upload Speed\"\n msgstr \"Upload-Geschwindigkeit\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:270\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:282\n msgid \"Download Speed\"\n msgstr \"Download-Geschwindigkeit\"\n \n@@ -2791,16 +2782,24 @@\n msgid \"Expire Date\"\n msgstr \"Ablaufdatum\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:27\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:12\n+msgid \"\"\n+\"It's recommended to use the Integration Hooks in the E2Pdf Template settings \"\n+\"instead\"\n+msgstr \"\"\n+\"Es wird empfohlen, die Integrations-Hooks in den E2Pdf-Vorlageneinstellungen \"\n+\"zu verwenden\"\n+\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:32\n msgid \"Upload Font\"\n msgstr \"Schriftart hochladen\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:32\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:37\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:388\n msgid \"Allowed File Types\"\n msgstr \"Zulässige Dateitypen\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:38\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:43\n msgid \"Upload\"\n msgstr \"Hochladen\"\n \n@@ -2877,50 +2876,74 @@\n msgid \"Template Title\"\n msgstr \"Vorlagentitel\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:12 classes\u002Fview\u002Fpage-e2pdf.php:467\n-msgid \"Create PDFs in Bulk\"\n+#: classes\u002Fview\u002Fpage-e2pdf.php:12 classes\u002Fview\u002Fpage-e2pdf.php:469\n+msgid \"Bulk Create PDFs\"\n msgstr \"PDFs in großen Mengen erstellen\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:63 classes\u002Fview\u002Fpage-e2pdf.php:296\n+#: classes\u002Fview\u002Fpage-e2pdf.php:64 classes\u002Fview\u002Fpage-e2pdf.php:298\n msgid \"Dataset\"\n msgstr \"Datensatz\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:98\n+#: classes\u002Fview\u002Fpage-e2pdf.php:99\n msgid \"Dataset2\"\n msgstr \"Datensatz2\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:138\n+#: classes\u002Fview\u002Fpage-e2pdf.php:139\n msgid \"Shortcode for a Download Link with a Dynamic Dataset\"\n msgstr \"Shortcode für einen Download-Link mit einem dynamischen Datensatz\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:142\n+#: classes\u002Fview\u002Fpage-e2pdf.php:143\n msgid \"Shortcode for a Download Link with the Current Dataset\"\n msgstr \"Shortcode für einen Download-Link mit dem aktuellen Datensatz\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:180 classes\u002Fview\u002Fpage-e2pdf.php:386\n+#: classes\u002Fview\u002Fpage-e2pdf.php:181 classes\u002Fview\u002Fpage-e2pdf.php:388\n msgid \"User\"\n msgstr \"Nutzer\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:196 classes\u002Fview\u002Fpage-e2pdf.php:403\n+#: classes\u002Fview\u002Fpage-e2pdf.php:197 classes\u002Fview\u002Fpage-e2pdf.php:405\n msgid \"Flatten\"\n msgstr \"Abflachen\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:235 classes\u002Fview\u002Fpage-e2pdf.php:442\n+#: classes\u002Fview\u002Fpage-e2pdf.php:236 classes\u002Fview\u002Fpage-e2pdf.php:444\n msgid \"Arguments\"\n msgstr \"Argumente\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:306\n+#: classes\u002Fview\u002Fpage-e2pdf.php:308\n msgid \"Filter...\"\n msgstr \"Filter...\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:478\n+#: classes\u002Fview\u002Fpage-e2pdf.php:480\n msgid \"Progress\"\n msgstr \"Fortschritt\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:480\n+#: classes\u002Fview\u002Fpage-e2pdf.php:482\n msgid \"Created\"\n msgstr \"Erstellt\"\n \n+#, php-format\n+#~ msgid \"\"\n+#~ \"The Bulk PDFs creation is not available with Free License Type. Check \u003Ca \"\n+#~ \"target='_blank' href='%s'>%s\u003C\u002Fa> for upgrade options\"\n+#~ msgstr \"\"\n+#~ \"Die Erstellung von Bulk-PDFs ist mit dem kostenlosen Lizenztyp nicht \"\n+#~ \"verfügbar. Überprüfen Sie \u003Ca target='_blank' href='%s'>%s\u003C\u002Fa> für Upgrade-\"\n+#~ \"Optionen\"\n+\n+#~ msgid \"Enable PDF Access By URL\"\n+#~ msgstr \"PDF-Zugriff über URL aktivieren\"\n+\n+#~ msgid \"Disable PDF Access By URL\"\n+#~ msgstr \"PDF-Zugriff über URL deaktivieren\"\n+\n+#~ msgid \"Enable Shortcodes\"\n+#~ msgstr \"Shortcodes aktivieren\"\n+\n+#~ msgid \"Disable Shortcodes\"\n+#~ msgstr \"Shortcodes deaktivieren\"\n+\n+#~ msgid \"Create PDFs in Bulk\"\n+#~ msgstr \"PDFs in großen Mengen erstellen\"\n+\n #~ msgid \"HTML Worker\"\n #~ msgstr \"HTML Worker\"\n \nBinary files \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Flanguages\u002Fe2pdf-pl_PL.mo and \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Flanguages\u002Fe2pdf-pl_PL.mo differ\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Flanguages\u002Fe2pdf-pl_PL.po \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Flanguages\u002Fe2pdf-pl_PL.po\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Flanguages\u002Fe2pdf-pl_PL.po\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Flanguages\u002Fe2pdf-pl_PL.po\t2026-02-24 09:27:28.000000000 +0000\n@@ -1,8 +1,8 @@\n msgid \"\"\n msgstr \"\"\n \"Project-Id-Version: e2pdf\\n\"\n-\"POT-Creation-Date: 2025-04-22 17:10+0200\\n\"\n-\"PO-Revision-Date: 2025-04-22 17:10+0200\\n\"\n+\"POT-Creation-Date: 2025-08-29 13:16+0200\\n\"\n+\"PO-Revision-Date: 2025-08-29 13:16+0200\\n\"\n \"Last-Translator: Weblate Admin \u003Cadmin@example.com>\\n\"\n \"Language-Team: Polish \u003Chttps:\u002F\u002Flocalhost\u002Fprojects\u002Fe2pdf\u002Fe2pdf\u002Fpl\u002F>\\n\"\n \"Language: pl_PL\\n\"\n@@ -19,7 +19,7 @@\n \"X-Poedit-SearchPathExcluded-0: assets\\n\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-debug.php:25 classes\u002Fcontroller\u002Fe2pdf-debug.php:51\n-#: classes\u002Fcontroller\u002Fe2pdf-debug.php:63\n+#: classes\u002Fcontroller\u002Fe2pdf-debug.php:55 classes\u002Fcontroller\u002Fe2pdf-debug.php:59\n #: classes\u002Fcontroller\u002Fe2pdf-integrations.php:23\n #: classes\u002Fcontroller\u002Fe2pdf-license.php:63\n #: classes\u002Fcontroller\u002Fe2pdf-license.php:112\n@@ -34,7 +34,7 @@\n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:253\n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:275\n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:315\n-#: classes\u002Fcontroller\u002Fe2pdf-settings.php:341\n+#: classes\u002Fcontroller\u002Fe2pdf-settings.php:340\n #, php-format\n msgid \"Success: %s\"\n msgstr \"Sukces: %s\"\n@@ -47,7 +47,11 @@\n msgid \"Repair DB\"\n msgstr \"Naprawa BD\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf-debug.php:63 classes\u002Fview\u002Fpage-e2pdf-debug.php:204\n+#: classes\u002Fcontroller\u002Fe2pdf-debug.php:55 classes\u002Fview\u002Fpage-e2pdf-debug.php:205\n+msgid \"Repair DB Collate\"\n+msgstr \"Napraw kolację bazy danych\"\n+\n+#: classes\u002Fcontroller\u002Fe2pdf-debug.php:59 classes\u002Fview\u002Fpage-e2pdf-debug.php:217\n msgid \"Reinitialize DB Hooks\"\n msgstr \"Ponownie zainicjuj haki DB\"\n \n@@ -56,16 +60,17 @@\n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:253\n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:275\n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:315\n-#: classes\u002Fcontroller\u002Fe2pdf-settings.php:341\n+#: classes\u002Fcontroller\u002Fe2pdf-settings.php:340\n msgid \"Settings Saved\"\n msgstr \"Ustawienia zapisane\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-integrations.php:45\n-#: classes\u002Fmodel\u002Fe2pdf-options.php:460\n+#: classes\u002Fcontroller\u002Fe2pdf-integrations.php:103\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:452 classes\u002Fmodel\u002Fe2pdf-options.php:522\n msgid \"Not Authorized\"\n msgstr \"Brak autoryzacji\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf-integrations.php:72\n+#: classes\u002Fcontroller\u002Fe2pdf-integrations.php:70\n msgid \"App Authorized\"\n msgstr \"Aplikacja autoryzowana\"\n \n@@ -100,32 +105,32 @@\n \"się na %s\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:98\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:126\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:131\n msgid \"Purge Objects Cache\"\n msgstr \"Wyczyść pamięć podręczną obiektów\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:109\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:137\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:142\n msgid \"Purge Fonts Cache\"\n msgstr \"Wyczyść pamięć podręczną czcionek\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:120\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:148\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:153\n msgid \"Purge PDFs Cache\"\n msgstr \"Wyczyść pamięć podręczną PDF\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:131\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:160\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:165\n msgid \"Purge Full Cache\"\n msgstr \"Wyczyść cały cache\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:143\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:103\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:108\n msgid \"Optimize DB\"\n msgstr \"Optymalizuj bazę danych\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:154\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:114\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:119\n msgid \"Clear Recovery Mode Limit\"\n msgstr \"Wyczyść limit trybu odzyskiwania\"\n \n@@ -167,16 +172,16 @@\n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:1571\n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:1781\n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:2039\n-#: classes\u002Fcontroller\u002Fe2pdf-templates.php:2055 classes\u002Fcontroller\u002Fe2pdf.php:708\n-#: classes\u002Fcontroller\u002Ffrontend\u002Fe2pdf-download.php:304\n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:863\n+#: classes\u002Fcontroller\u002Fe2pdf-templates.php:2055 classes\u002Fcontroller\u002Fe2pdf.php:734\n+#: classes\u002Fcontroller\u002Ffrontend\u002Fe2pdf-download.php:347\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:793\n #: classes\u002Fmodel\u002Fe2pdf-adobesign.php:127 classes\u002Fmodel\u002Fe2pdf-adobesign.php:208\n-#: classes\u002Fmodel\u002Fe2pdf-api.php:111 classes\u002Fmodel\u002Fe2pdf-template.php:768\n-#: classes\u002Fmodel\u002Fe2pdf-template.php:877 classes\u002Fmodel\u002Fe2pdf-template.php:911\n+#: classes\u002Fmodel\u002Fe2pdf-api.php:111 classes\u002Fmodel\u002Fe2pdf-template.php:832\n+#: classes\u002Fmodel\u002Fe2pdf-template.php:941 classes\u002Fmodel\u002Fe2pdf-template.php:975\n msgid \"Something went wrong!\"\n msgstr \"Coś poszło nie tak!\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf-settings.php:380\n+#: classes\u002Fcontroller\u002Fe2pdf-settings.php:379\n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:78\n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:465\n #, php-format\n@@ -228,9 +233,9 @@\n \"target=\\\"_blank\\\" href=\\\"%3$s\\\">Edytuj\u003C\u002Fa>\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:849\n-#: classes\u002Fcontroller\u002Fe2pdf-templates.php:1108 classes\u002Fcontroller\u002Fe2pdf.php:716\n-#: classes\u002Fmodel\u002Fe2pdf-extension.php:250 classes\u002Fmodel\u002Fe2pdf-extension.php:254\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:851\n+#: classes\u002Fcontroller\u002Fe2pdf-templates.php:1108 classes\u002Fcontroller\u002Fe2pdf.php:742\n+#: classes\u002Fmodel\u002Fe2pdf-extension.php:255 classes\u002Fmodel\u002Fe2pdf-extension.php:259\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:882\n #, php-format\n msgid \"The PHP %s extension is required\"\n msgstr \"Wymagane jest rozszerzenie PHP %s\"\n@@ -260,7 +265,7 @@\n msgstr \"Importuj połączenie\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:1119\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:549\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:584\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:40\n msgid \"Options\"\n msgstr \"Opcje\"\n@@ -291,14 +296,14 @@\n msgstr \"Automatyczny formularz z PDF\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:1289 classes\u002Fcontroller\u002Fe2pdf.php:45\n-#: classes\u002Fcontroller\u002Fe2pdf.php:87 classes\u002Fcontroller\u002Fe2pdf.php:445\n-#: classes\u002Fcontroller\u002Fe2pdf.php:468\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2442\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2452\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:575 classes\u002Fview\u002Fpage-e2pdf.php:53\n-#: classes\u002Fview\u002Fpage-e2pdf.php:76 classes\u002Fview\u002Fpage-e2pdf.php:85\n-#: classes\u002Fview\u002Fpage-e2pdf.php:111 classes\u002Fview\u002Fpage-e2pdf.php:118\n-#: classes\u002Fview\u002Fpage-e2pdf.php:286 classes\u002Fview\u002Fpage-e2pdf.php:322\n+#: classes\u002Fcontroller\u002Fe2pdf.php:87 classes\u002Fcontroller\u002Fe2pdf.php:452\n+#: classes\u002Fcontroller\u002Fe2pdf.php:475\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3342\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3353\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:610 classes\u002Fview\u002Fpage-e2pdf.php:54\n+#: classes\u002Fview\u002Fpage-e2pdf.php:77 classes\u002Fview\u002Fpage-e2pdf.php:86\n+#: classes\u002Fview\u002Fpage-e2pdf.php:112 classes\u002Fview\u002Fpage-e2pdf.php:119\n+#: classes\u002Fview\u002Fpage-e2pdf.php:288 classes\u002Fview\u002Fpage-e2pdf.php:324\n msgid \"--- Select ---\"\n msgstr \"--- Wybierz ---\"\n \n@@ -311,9 +316,10 @@\n msgstr \"Przepraszamy, to rozszerzenie nie obsługuje Wizualnego Mapera\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:1356\n+#: classes\u002Fcontroller\u002Ffrontend\u002Fe2pdf-download.php:274\n #: classes\u002Fextension\u002Fe2pdf-formidable.php:254\n-#: classes\u002Fmodel\u002Fe2pdf-revision.php:205 classes\u002Fmodel\u002Fe2pdf-template.php:185\n-#: classes\u002Fmodel\u002Fe2pdf-template.php:825\n+#: classes\u002Fmodel\u002Fe2pdf-revision.php:205 classes\u002Fmodel\u002Fe2pdf-template.php:186\n+#: classes\u002Fmodel\u002Fe2pdf-template.php:889 classes\u002Fmodel\u002Fe2pdf-template.php:1040\n msgid \"(no title)\"\n msgstr \"(brak tytułu)\"\n \n@@ -360,7 +366,7 @@\n msgstr \"Kreator PDF\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:2562\n-#: classes\u002Fhelper\u002Fe2pdf-helper.php:292 classes\u002Fmodel\u002Fe2pdf-loader.php:439\n+#: classes\u002Fhelper\u002Fe2pdf-helper.php:293 classes\u002Fmodel\u002Fe2pdf-loader.php:478\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:44 classes\u002Fview\u002Fpage-e2pdf-settings.php:7\n msgid \"Settings\"\n msgstr \"Ustawienia\"\n@@ -376,89 +382,86 @@\n #: classes\u002Fcontroller\u002Fe2pdf.php:75\n #, php-format\n msgid \"\"\n-\"The Bulk PDFs creation is not available with Free License Type. Check \u003Ca \"\n-\"target='_blank' href='%s'>%s\u003C\u002Fa> for upgrade options\"\n+\"Bulk PDF generation is not available with the Free License Type. Please \"\n+\"visit \u003Ca target='_blank' href='%s'>%s\u003C\u002Fa> for upgrade options\"\n msgstr \"\"\n-\"Tworzenie zbiorczych plików PDF nie jest dostępne w przypadku bezpłatnej \"\n-\"licencji. Sprawdź \u003Ca target='_blank' href='%s'>%s\u003C\u002Fa> w celu uzyskania opcji \"\n-\"uaktualnienia\"\n+\"Generowanie wielu plików PDF nie jest dostępne w przypadku bezpłatnej \"\n+\"licencji. Odwiedź \u003Ca target='_blank' href='%s'>%s\u003C\u002Fa>, aby zapoznać się z \"\n+\"opcjami aktualizacji\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:337\n+#: classes\u002Fcontroller\u002Fe2pdf.php:344\n msgid \"Incorrect Dataset\"\n msgstr \"Niepoprawny zestaw danych\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:341\n+#: classes\u002Fcontroller\u002Fe2pdf.php:348\n msgid \"Template can't be loaded\"\n msgstr \"Nie można wczytać szablonu\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:521\n+#: classes\u002Fcontroller\u002Fe2pdf.php:546\n msgid \"Delete All Datasets\"\n msgstr \"Usuń wszystkie zestawy danych\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:531\n+#: classes\u002Fcontroller\u002Fe2pdf.php:556\n msgid \"Edit Template\"\n msgstr \"Edytuj szablon\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:613\n+#: classes\u002Fcontroller\u002Fe2pdf.php:639\n msgid \"View Dataset\"\n msgstr \"Podgląd zestawu danych\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:616\n+#: classes\u002Fcontroller\u002Fe2pdf.php:642\n msgid \"Delete Dataset\"\n msgstr \"Usuń zestaw danych\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:662\n+#: classes\u002Fcontroller\u002Fe2pdf.php:688\n msgid \"Dataset can't be removed!\"\n msgstr \"Nie można usunąć zestawu danych!\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:694\n+#: classes\u002Fcontroller\u002Fe2pdf.php:720\n msgid \"Datasets can't be removed!\"\n msgstr \"Zestawów danych nie można usunąć!\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:712\n-#, php-format\n+#: classes\u002Fcontroller\u002Fe2pdf.php:738\n msgid \"\"\n-\"The Bulk PDFs generation is not available with Free License Type. Check \u003Ca \"\n-\"target='_blank' href='%s'>%s\u003C\u002Fa> for upgrade options\"\n+\"Bulk PDF generation is not available with the Free License Type. Please \"\n+\"visit https:\u002F\u002Fe2pdf.com\u002Fprice for upgrade options\"\n msgstr \"\"\n-\"Generowanie zbiorcze plików PDF nie jest dostępne w przypadku bezpłatnej \"\n-\"licencji. Sprawdź \u003Ca target='_blank' href='%s'>%s\u003C\u002Fa> w celu uzyskania opcji \"\n-\"aktualizacji\"\n+\"Generowanie zbiorcze PDF nie jest dostępne w ramach bezpłatnej licencji. \"\n+\"Odwiedź https:\u002F\u002Fe2pdf.com\u002Fprice, aby zobaczyć opcje aktualizacji\"\n \n-#: classes\u002Fcontroller\u002Ffrontend\u002Fe2pdf-download.php:141\n+#: classes\u002Fcontroller\u002Ffrontend\u002Fe2pdf-download.php:169\n msgid \"Access Denied!\"\n msgstr \"Brak dostępu!\"\n \n #: classes\u002Fextension\u002Fe2pdf-caldera.php:376\n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:3347\n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:822\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:3364\n #, php-format\n msgid \"Success. [e2pdf-download id=\\\"%s\\\"]\"\n msgstr \"Sukces. [e2pdf-download id=\\\"%s\\\"]\"\n \n-#: classes\u002Fextension\u002Fe2pdf-caldera.php:611 classes\u002Fextension\u002Fe2pdf-divi.php:935\n-#: classes\u002Fextension\u002Fe2pdf-elementor.php:505\n-#: classes\u002Fextension\u002Fe2pdf-everest.php:268\n-#: classes\u002Fextension\u002Fe2pdf-fluent.php:1404\n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:3525\n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:894\n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1840\n-#: classes\u002Fextension\u002Fe2pdf-jetformbuilder.php:604\n+#: classes\u002Fextension\u002Fe2pdf-caldera.php:611 classes\u002Fextension\u002Fe2pdf-divi.php:937\n+#: classes\u002Fextension\u002Fe2pdf-elementor.php:458\n+#: classes\u002Fextension\u002Fe2pdf-everest.php:283\n+#: classes\u002Fextension\u002Fe2pdf-fluent.php:1486\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:3544\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:824\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1697\n+#: classes\u002Fextension\u002Fe2pdf-jetformbuilder.php:615\n #: classes\u002Fextension\u002Fe2pdf-wpcf7.php:653\n-#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1167\n+#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1267\n msgid \"The form source is empty or doesn't exist\"\n msgstr \"Źródło formularza jest puste lub nie istnieje\"\n \n-#: classes\u002Fextension\u002Fe2pdf-caldera.php:613 classes\u002Fextension\u002Fe2pdf-divi.php:937\n-#: classes\u002Fextension\u002Fe2pdf-elementor.php:507\n-#: classes\u002Fextension\u002Fe2pdf-everest.php:270\n-#: classes\u002Fextension\u002Fe2pdf-fluent.php:1406\n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:3527\n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:896\n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1842\n-#: classes\u002Fextension\u002Fe2pdf-jetformbuilder.php:606\n+#: classes\u002Fextension\u002Fe2pdf-caldera.php:613 classes\u002Fextension\u002Fe2pdf-divi.php:939\n+#: classes\u002Fextension\u002Fe2pdf-elementor.php:460\n+#: classes\u002Fextension\u002Fe2pdf-everest.php:285\n+#: classes\u002Fextension\u002Fe2pdf-fluent.php:1488\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:3546\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:826\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1699\n+#: classes\u002Fextension\u002Fe2pdf-jetformbuilder.php:617\n #: classes\u002Fextension\u002Fe2pdf-wpcf7.php:655\n-#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1169\n+#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1269\n msgid \"The form could not be parsed due the incorrect HTML\"\n msgstr \"Formularz nie mógł zostać przetworzony z powodu niepoprawnego HTML\"\n \n@@ -466,99 +469,104 @@\n msgid \" (child)\"\n msgstr \" (potomny)\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1107\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1124\n msgid \"Auto PDF and Visual Mapper\"\n msgstr \"Automatyczne PDF i Maper Wizualny\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1113\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1130\n msgid \"Use Field Keys instead Field IDs\"\n msgstr \"Użyj kluczy pól zamiast identyfikatorów pól\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1116\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1133\n msgid \"Filter\"\n msgstr \"Filtruj\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1122\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1139\n msgid \"Disable Filter\"\n msgstr \"Wyłącz filtr\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1158\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1175\n msgid \"Force shortcodes to use\"\n msgstr \"Wymuś użycie shortkodów\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1164\n-#: classes\u002Fextension\u002Fe2pdf-metform.php:1159 classes\u002Fmodel\u002Fe2pdf-loader.php:613\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1181\n+#: classes\u002Fextension\u002Fe2pdf-metform.php:1212 classes\u002Fmodel\u002Fe2pdf-loader.php:648\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:122\n msgid \"None\"\n msgstr \"Brak\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1165\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1182\n msgid \"Fields IDs\"\n msgstr \"Identyfikatory pól\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1166\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1183\n msgid \"Field Keys\"\n msgstr \"Klucze pól\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:3491\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:3510\n msgid \"Child form doesn't support Visual Mapper\"\n msgstr \"Formularz potomny nie obsługuje Wizualnego Mappera\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:3653\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:3672\n msgid \"File Upload\"\n msgstr \"Przesyłanie pliku\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:4124\n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:4156\n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:2659\n-#: classes\u002Fextension\u002Fe2pdf-jetformbuilder.php:1255\n-#: classes\u002Fextension\u002Fe2pdf-metform.php:1124\n-#: classes\u002Fextension\u002Fe2pdf-metform.php:1167\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3588\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3652\n-#: classes\u002Fextension\u002Fe2pdf-wordpress.php:1331\n-#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1312\n-#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1348\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:4143\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:4185\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:2527\n+#: classes\u002Fextension\u002Fe2pdf-jetformbuilder.php:1285\n+#: classes\u002Fextension\u002Fe2pdf-metform.php:1166\n+#: classes\u002Fextension\u002Fe2pdf-metform.php:1221\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3574\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3658\n+#: classes\u002Fextension\u002Fe2pdf-wordpress.php:1466\n+#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1417\n+#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1464\n msgid \"E2Pdf Actions\"\n msgstr \"Akcje E2Pdf\"\n \n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:824\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:755\n+#, php-format\n+msgid \"Success. [e2pdf-download id=\\\"%d\\\"]\"\n+msgstr \"Sukces. [e2pdf-download id=\\\"%d\\\"]\"\n+\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:757\n msgid \"Send Message\"\n msgstr \"Wyślij wiadomość\"\n \n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:826\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:759\n msgid \"Error: Your form is not valid, please fix the errors!\"\n msgstr \"Błąd: Twój formularz jest nieprawidłowy, popraw błędy!\"\n \n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:855\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:785\n msgid \"Form could not be found\"\n msgstr \"Nie znaleziono formularza\"\n \n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:1926\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:1852\n msgid \"Custom Fields\"\n msgstr \"Pola niestandardowe\"\n \n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1145 classes\u002Fmodel\u002Fe2pdf-loader.php:618\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:492\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:500\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1052 classes\u002Fmodel\u002Fe2pdf-loader.php:653\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:485\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:493\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:79\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:207\n msgid \"Title\"\n msgstr \"Tytuł\"\n \n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1189\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1092\n msgid \"Caption\"\n msgstr \"Napis\"\n \n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1233\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1132\n msgid \"Description\"\n msgstr \"Opis\"\n \n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1631\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1491\n msgid \"Default Confirmation\"\n msgstr \"Domyślne potwierdzenie\"\n \n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1635\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1495\n #, php-format\n msgid \"\"\n \"Thanks for contacting us! We will get in touch with you shortly. [e2pdf-\"\n@@ -571,70 +579,70 @@\n msgid \"Cart \u002F Checkout\"\n msgstr \"Koszyk \u002F Kasa\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2468\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3370\n msgid \"User Order List\"\n msgstr \"Lista zamówień użytkownika\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2469\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2493\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2531\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2549\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2583\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2620\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:11\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3371\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3395\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3433\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3451\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3484\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3520\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:10\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:386\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:477 classes\u002Fview\u002Fpage-e2pdf.php:37\n-#: classes\u002Fview\u002Fpage-e2pdf.php:270 classes\u002Fview\u002Fpage-e2pdf.php:477\n+#: classes\u002Fview\u002Fpage-e2pdf.php:271 classes\u002Fview\u002Fpage-e2pdf.php:479\n msgid \"Template\"\n msgstr \"Szablon\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2477\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2501\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2602\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2628\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3379\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3403\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3503\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3528\n msgid \"Order Status\"\n msgstr \"Status zamówienia\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2483\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2521\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2539\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2568\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2608\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3385\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3423\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3441\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3470\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3509\n msgid \"Priority\"\n msgstr \"Priotytet\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2492\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3394\n msgid \"User Order Details\"\n msgstr \"Szczegóły zamówienia użytkownika\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2507\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2557\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2591\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3409\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3459\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3492\n msgid \"Hook\"\n msgstr \"Hak\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2530\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3432\n msgid \"User Cart\"\n msgstr \"Koszyk użytkownika\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2548\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3450\n msgid \"User Checkout\"\n msgstr \"Kasa użytkownika\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2582\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3483\n msgid \"Admin Order List\"\n msgstr \"Lista zamówień administratora\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2619\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3519\n msgid \"Admin Order Details\"\n msgstr \"Szczegóły zamówienia administratora\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2662\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:603\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3561\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:638\n msgid \"Any\"\n msgstr \"Dowolny\"\n \n-#: classes\u002Fextension\u002Fe2pdf-wordpress.php:228\n+#: classes\u002Fextension\u002Fe2pdf-wordpress.php:213\n msgid \"Users\"\n msgstr \"Użytkownicy\"\n \n@@ -643,36 +651,36 @@\n msgid \"Signature\"\n msgstr \"Podpis\"\n \n-#: classes\u002Fextension\u002Fe2pdf-wpcf7.php:1447\n+#: classes\u002Fextension\u002Fe2pdf-wpcf7.php:1457\n msgid \"Storing Engine\"\n msgstr \"Silnik przechowywania\"\n \n-#: classes\u002Fhelper\u002Fe2pdf-db.php:660 classes\u002Fhelper\u002Fe2pdf-db.php:718\n-#: classes\u002Fhelper\u002Fe2pdf-db.php:739 classes\u002Fhelper\u002Fe2pdf-db.php:751\n-#: classes\u002Fhelper\u002Fe2pdf-db.php:771\n+#: classes\u002Fhelper\u002Fe2pdf-db.php:718 classes\u002Fhelper\u002Fe2pdf-db.php:776\n+#: classes\u002Fhelper\u002Fe2pdf-db.php:797 classes\u002Fhelper\u002Fe2pdf-db.php:809\n+#: classes\u002Fhelper\u002Fe2pdf-db.php:829\n msgid \"Undefined\"\n msgstr \"Niezdefiniowany\"\n \n-#: classes\u002Fhelper\u002Fe2pdf-helper.php:284 classes\u002Fmodel\u002Fe2pdf-loader.php:436\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:523\n+#: classes\u002Fhelper\u002Fe2pdf-helper.php:285 classes\u002Fmodel\u002Fe2pdf-loader.php:475\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:558\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:67\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:129 classes\u002Fview\u002Fpage-e2pdf.php:7\n-#: classes\u002Fview\u002Fpage-e2pdf.php:11 classes\u002Fview\u002Fpage-e2pdf.php:260\n+#: classes\u002Fview\u002Fpage-e2pdf.php:11 classes\u002Fview\u002Fpage-e2pdf.php:261\n msgid \"Create PDF\"\n msgstr \"Utwórz PDF\"\n \n-#: classes\u002Fhelper\u002Fe2pdf-helper.php:288 classes\u002Fmodel\u002Fe2pdf-loader.php:437\n+#: classes\u002Fhelper\u002Fe2pdf-helper.php:289 classes\u002Fmodel\u002Fe2pdf-loader.php:476\n #: classes\u002Fview\u002Fpage-e2pdf-license.php:51\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:14\n msgid \"Templates\"\n msgstr \"Szablony\"\n \n-#: classes\u002Fhelper\u002Fe2pdf-helper.php:296 classes\u002Fmodel\u002Fe2pdf-loader.php:440\n+#: classes\u002Fhelper\u002Fe2pdf-helper.php:297 classes\u002Fmodel\u002Fe2pdf-loader.php:479\n #: classes\u002Fview\u002Fpage-e2pdf-license.php:7 classes\u002Fview\u002Fpage-e2pdf-license.php:11\n msgid \"License\"\n msgstr \"Licencja\"\n \n-#: classes\u002Fhelper\u002Fe2pdf-helper.php:300 classes\u002Fmodel\u002Fe2pdf-loader.php:442\n+#: classes\u002Fhelper\u002Fe2pdf-helper.php:301 classes\u002Fmodel\u002Fe2pdf-loader.php:481\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:7 classes\u002Fview\u002Fpage-e2pdf-debug.php:11\n msgid \"Debug\"\n msgstr \"Debugowanie\"\n@@ -689,48 +697,48 @@\n msgid \"Access Token is not set or Incorrect\"\n msgstr \"Token dostępu nie jest ustawiony lub jest nieprawidłowy\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:292\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:331\n msgid \"E2Pdf Bulk Export Interval\"\n msgstr \"Interwał masowego eksportu E2Pdf\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:438\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:477\n #: classes\u002Fview\u002Fpage-e2pdf-integrations.php:7\n msgid \"Integrations\"\n msgstr \"Integracje\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:496\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:531\n msgid \"Page will be removed! Continue?\"\n msgstr \"Strona zostanie usunięta! Kontynuować?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:497\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:532\n msgid \"Font will be removed! Continue?\"\n msgstr \"Czcionka zostanie usunięta! Kontynuować?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:498\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:533\n msgid \"Changes will not be saved! Continue?\"\n msgstr \"Zmiany nie zostaną zapisane! Kontynuować?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:499\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:534\n msgid \"Saved Template will be overwritten! Continue?\"\n msgstr \"Zapisany szablon zostanie nadpisany! Kontynuować?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:500\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:535\n msgid \"All pages will be removed! Continue?\"\n msgstr \"Wszystkie strony zostaną usunięte! Kontynuować?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:501\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:536\n msgid \"Adding new pages not available in \\\"Uploaded PDF\\\"\"\n msgstr \"Dodawanie nowych stron niedostępne w \\\"Przesłany PDF\\\"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:502\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:537\n msgid \"Dataset will be removed! Continue?\"\n msgstr \"Zbiór danych zostanie usunięty! Kontynuować?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:503\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:538\n msgid \"All datasets will be removed! Continue?\"\n msgstr \"Wszystkie zestawy danych zostaną usunięte! Kontynuować?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:504\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:539\n msgid \"\"\n \"WARNING: Template has changes after last save! Changes will be lost! \"\n \"Continue?\"\n@@ -738,199 +746,199 @@\n \"OSTRZEŻENIE: Szablon został zmieniony po ostatnim zapisaniu! Zmiany zostaną \"\n \"utracone! Kontynuować?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:505\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:540\n msgid \"Element will be removed! Continue?\"\n msgstr \"Element zostanie usunięty! Kontynuować?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:506\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:541\n msgid \"Elements will be removed! Continue?\"\n msgstr \"Elementy zostaną usunięte! Kontynuować?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:507\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:542\n msgid \"Action will be removed! Continue?\"\n msgstr \"Akcja zostanie usunięta! Kontynuować?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:508\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:543\n msgid \"Condition will be removed! Continue?\"\n msgstr \"Warunek zostanie usunięty! Kontynuować?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:509\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:544\n msgid \"All Field Values will be overwritten! Continue?\"\n msgstr \"Wszystkie wartości pól zostaną nadpisane! Kontynuować?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:510\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:545\n msgid \"Website will be forced to use \\\"FREE\\\" License Key! Continue?\"\n msgstr \"\"\n \"Strona internetowa zostanie zmuszona do użycia klucza licencyjnego \\\"FREE\\\"! \"\n \"Kontynuować?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:511\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:546\n msgid \"Not Available in Revision Edit Mode\"\n msgstr \"Niedostępne w trybie edycji wersji\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:512\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:547\n msgid \"The WYSIWYG editor is disabled for this HTML object\"\n msgstr \"Edytor WYSIWYG jest wyłączony dla tego obiektu HTML\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:513\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:548\n msgid \"WYSIWYG can only be applied within HTML elements\"\n msgstr \"WYSIWYG można stosować tylko w obrębie elementów HTML\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:514\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:549\n msgid \"Only single-page PDFs are allowed with the \\\"FREE\\\" license type\"\n msgstr \"Tylko jednokartkowe pliki PDF są dozwolone z typem licencji \\\"FREE\\\"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:515\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:550\n msgid \"Last condition can't be removed\"\n msgstr \"Ostatniego warunku nie można usunąć\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:516\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:551\n msgid \"In Progress...\"\n msgstr \"﻿W trakcie...\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:517 classes\u002Fview\u002Fpage-e2pdf-templates.php:36\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:552 classes\u002Fview\u002Fpage-e2pdf-templates.php:36\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:121\n msgid \"Delete\"\n msgstr \"Usuń\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:518 classes\u002Fmodel\u002Fe2pdf-loader.php:526\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:553 classes\u002Fmodel\u002Fe2pdf-loader.php:561\n msgid \"Properties\"\n msgstr \"Właściwości\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:519 classes\u002Fview\u002Fpage-e2pdf-license.php:30\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:554 classes\u002Fview\u002Fpage-e2pdf-license.php:30\n #: classes\u002Fview\u002Fpage-e2pdf-license.php:38\n msgid \"License Key\"\n msgstr \"Klucz licencyjny\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:520\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:555\n msgid \"Empty PDF\"\n msgstr \"Pusty PDF\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:521\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:556\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:62\n msgid \"Upload PDF\"\n msgstr \"Prześlij PDF\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:522\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:557\n msgid \"Auto PDF\"\n msgstr \"Automatyczne PDF\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:524 classes\u002Fview\u002Fpage-e2pdf-templates.php:470\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:559 classes\u002Fview\u002Fpage-e2pdf-templates.php:470\n msgid \"Extension\"\n msgstr \"Rozszerzenie\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:525\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:560\n msgid \"Size\"\n msgstr \"Rozmiar\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:527\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:562\n msgid \"Enter link here\"\n msgstr \"Wprowadź tutaj link\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:528\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:563\n msgid \"Border\"\n msgstr \"Obramowanie\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:529\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:564\n msgid \"Background\"\n msgstr \"Tło\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:530\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:110\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:565\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:109\n msgid \"Left\"\n msgstr \"Lewo\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:531\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:112\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:566\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:111\n msgid \"Right\"\n msgstr \"Prawo\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:532\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:567\n msgid \"Top\"\n msgstr \"Góra\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:533\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:111\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:568\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:110\n msgid \"Center\"\n msgstr \"Środek\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:534\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:569\n msgid \"Bottom\"\n msgstr \"Dół\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:535\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:570\n msgid \"Justify\"\n msgstr \"Wyjustuj\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:536 classes\u002Fmodel\u002Fe2pdf-loader.php:657\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:571 classes\u002Fmodel\u002Fe2pdf-loader.php:688\n msgid \"Border Color\"\n msgstr \"Kolor obramowania\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:537\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:572\n msgid \"Border Radius\"\n msgstr \"Promień obramowania\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:538 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:106\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:81\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:573 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:106\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:80\n msgid \"Line Height\"\n msgstr \"Wysokość linii\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:539\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:574\n msgid \"Width\"\n msgstr \"Szerokość\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:540\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:575\n msgid \"Height\"\n msgstr \"Wysokość\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:541\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:576\n msgid \"Value\"\n msgstr \"Wartość\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:542 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:80\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:29\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:577 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:80\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:34\n msgid \"Font\"\n msgstr \"Czcionka\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:543\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:578\n msgid \"Option\"\n msgstr \"Opcja\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:544\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:579\n msgid \"Group\"\n msgstr \"Grupa\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:545 classes\u002Fview\u002Fpage-e2pdf-license.php:22\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:580 classes\u002Fview\u002Fpage-e2pdf-license.php:22\n msgid \"Type\"\n msgstr \"Typ\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:546\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:581\n msgid \"Scale\"\n msgstr \"Skala\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:547\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:582\n msgid \"Width&Height\"\n msgstr \"Szerokość i wysokość\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:548\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:583\n msgid \"Choose Image\"\n msgstr \"Wybierz obraz\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:550\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:585\n msgid \"PDF Upload\"\n msgstr \"Przesyłanie PDF\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:551\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:586\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:104\n msgid \"Global Actions\"\n msgstr \"Akcje globalne\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:552\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:587\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:109\n msgid \"Global Properties\"\n msgstr \"Właściwości globalne\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:553\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:588\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:113\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:83\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:211\n@@ -938,1015 +946,999 @@\n msgid \"Connection\"\n msgstr \"Połączenie\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:554\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:589\n msgid \"Map Field\"\n msgstr \"Mapuj pole\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:555\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:590\n msgid \"Insert Mapped\"\n msgstr \"Wstaw mapowane\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:556\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:591\n msgid \"Resize\"\n msgstr \"Zmień rozmiar\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:557\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:592\n msgid \"Copy\"\n msgstr \"Skopiuj\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:558\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:593\n msgid \"Cut\"\n msgstr \"Wytnij\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:559\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:594\n msgid \"Paste\"\n msgstr \"Wklej\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:560\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:595\n msgid \"Paste in Place\"\n msgstr \"Wklej w miejscu\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:561 classes\u002Fview\u002Fblocks\u002Fbulk-actions.php:14\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:596 classes\u002Fview\u002Fblocks\u002Fbulk-actions.php:14\n msgid \"Apply\"\n msgstr \"Zastosuj\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:562\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:597\n msgid \"Dynamic Height\"\n msgstr \"Dynamiczna wysokość\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:563\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:598\n msgid \"Multipage\"\n msgstr \"Wielostronicowy\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:564 classes\u002Fmodel\u002Fe2pdf-loader.php:667\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:98\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:599 classes\u002Fmodel\u002Fe2pdf-loader.php:698\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:97\n msgid \"Text Align\"\n msgstr \"Wyrównanie\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:565\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:600\n msgid \"Read-Only\"\n msgstr \"Tylko do odczytu\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:566\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:601\n msgid \"Multiline\"\n msgstr \"Wielowierszowy\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:567\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:602\n msgid \"Required\"\n msgstr \"Wymagane\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:568\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:603\n msgid \"Page Options\"\n msgstr \"Opcje strony\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:569\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:604\n msgid \"Direction\"\n msgstr \"Kierunek\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:570\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:605\n msgid \"Hide\"\n msgstr \"Ukryj\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:571\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:606\n msgid \"Unhide\"\n msgstr \"Odkryj\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:572 classes\u002Fview\u002Fpage-e2pdf.php:170\n-#: classes\u002Fview\u002Fpage-e2pdf.php:376\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:607 classes\u002Fview\u002Fpage-e2pdf.php:171\n+#: classes\u002Fview\u002Fpage-e2pdf.php:378\n msgid \"Password\"\n msgstr \"Hasło\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:573 classes\u002Fmodel\u002Fe2pdf-loader.php:591\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:608 classes\u002Fmodel\u002Fe2pdf-loader.php:626\n msgid \"Visual Mapper\"\n msgstr \"Wizualny Maper\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:574\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:609\n msgid \"Parent\"\n msgstr \"Nadrzędny\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:576\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:611\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:131\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:175\n msgid \"Activated\"\n msgstr \"Aktywowany\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:577\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:612\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:133\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:177\n msgid \"Not Activated\"\n msgstr \"Nieaktywowany\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:578\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:613\n msgid \"Page ID\"\n msgstr \"ID strony\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:579\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:614\n msgid \"Page ID inside Upload PDF\"\n msgstr \"ID strony wewnątrz Prześlij PDF\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:580\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:615\n msgid \"Render Fields from Upload PDF\"\n msgstr \"Renderuj pola z przesłanego PDF-a\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:581\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:616\n msgid \"Delete created E2Pdf Fields\"\n msgstr \"Usuń utworzone pola E2Pdf\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:582\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:617\n msgid \"Keep Image Ratio\"\n msgstr \"Proporcje\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:583\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:618\n msgid \"Keep Lower Size\"\n msgstr \"Mniejszy rozmiar\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:584\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:619\n msgid \"Lock Aspect Ratio\"\n msgstr \"Zablokuj proporcje\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:585\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:620\n msgid \"Fill Image\"\n msgstr \"Wypełnij\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:586\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:621\n msgid \"Page\"\n msgstr \"Strona\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:587\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:622\n msgid \"Resolution\"\n msgstr \"Rozdzielczość\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:588\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:623\n msgid \"Disable Text to Image\"\n msgstr \"Wyłącz tekst na obraz\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:589\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:624\n msgid \"Confirmation Code\"\n msgstr \"Kod potwierdzenia\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:590\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:625\n msgid \"Code\"\n msgstr \"Kod\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:592\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:627\n msgid \"Auto\"\n msgstr \"Auto\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:593 classes\u002Fview\u002Fpage-e2pdf.php:479\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:628 classes\u002Fview\u002Fpage-e2pdf.php:481\n msgid \"Actions\"\n msgstr \"Akcje\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:594\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:629\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:166\n msgid \"Save\"\n msgstr \"Zapisz\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:595\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:630\n msgid \"Horizontal Align\"\n msgstr \"Wyrównanie w poziomie\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:596\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:631\n msgid \"Vertical Align\"\n msgstr \"Wyrównanie w pionie\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:597\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:632\n msgid \"Middle\"\n msgstr \"Środek\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:598\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:633\n msgid \"Apply If\"\n msgstr \"Zastosuj, jeśli\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:599\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:634\n msgid \"Action\"\n msgstr \"Akcja\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:600\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:635\n msgid \"Property\"\n msgstr \"Właściwość\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:601\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:636\n msgid \"If\"\n msgstr \"Jeśli\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:602\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:637\n msgid \"Condition\"\n msgstr \"Warunek\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:604 classes\u002Fview\u002Fblocks\u002Fsub-filters.php:9\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:639 classes\u002Fview\u002Fblocks\u002Fsub-filters.php:9\n msgid \"All\"\n msgstr \"Wszystkie\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:605 classes\u002Fmodel\u002Fe2pdf-loader.php:753\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:640 classes\u002Fmodel\u002Fe2pdf-loader.php:784\n msgid \"Sort\"\n msgstr \"Sortuj\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:606\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:641\n msgid \"E-Signature\"\n msgstr \"Podpis elektroniczny\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:607\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:642\n msgid \"Contact\"\n msgstr \"Kontakt\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:608\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:643\n msgid \"Location\"\n msgstr \"Lokalizacja\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:609\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:644\n msgid \"Reason\"\n msgstr \"Powód\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:610\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:645\n msgid \"Placeholder\"\n msgstr \"Symbol zastępczy\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:611\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:646\n msgid \"Length\"\n msgstr \"Długość\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:612\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:647\n msgid \"Comb\"\n msgstr \"Kombinacja\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:614\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:649\n msgid \"Highlight\"\n msgstr \"Podświetl\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:615\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:650\n msgid \"Invert\"\n msgstr \"Odwróć\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:616\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:651\n msgid \"Outline\"\n msgstr \"Zarys\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:617\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:652\n msgid \"Push\"\n msgstr \"Naciśnięcie\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:619\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:654\n msgid \"Status\"\n msgstr \"Status\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:620\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:655\n msgid \"Add Action\"\n msgstr \"Dodaj akcję\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:621\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:656\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:11\n-#: classes\u002Fview\u002Fpage-e2pdf-templates.php:148 classes\u002Fview\u002Fpage-e2pdf.php:135\n+#: classes\u002Fview\u002Fpage-e2pdf-templates.php:148 classes\u002Fview\u002Fpage-e2pdf.php:136\n msgid \"Shortcodes\"\n msgstr \"Shortkody\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:622\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:657\n msgid \"Labels\"\n msgstr \"Etykiety\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:623\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:658\n msgid \"Field Values\"\n msgstr \"Wartości pól\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:624\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:659\n msgid \"Field Names\"\n msgstr \"Nazwy pól\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:625\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:660\n msgid \"Field Name\"\n msgstr \"Nazwa pola\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:626\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:661\n msgid \"As Field Name\"\n msgstr \"Jako nazwa pola\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:627\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:662\n msgid \"Confirm\"\n msgstr \"Potwierdź\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:628\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:663\n msgid \"Cancel\"\n msgstr \"Anuluj\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:629\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:664\n msgid \"Hide (If Empty)\"\n msgstr \"Ukryj (jeśli puste)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:630\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:665\n msgid \"Hide Page (If Empty)\"\n msgstr \"Ukryj stronę (jeśli puste)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:631\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:666\n msgid \"Replace Value\"\n msgstr \"Zastąp wartość\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:632\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:667\n msgid \"Auto-Close\"\n msgstr \"Automatyczne zamykanie\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:633\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:668\n msgid \"New Lines to BR\"\n msgstr \"Nowe linie na BR\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:634\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:669\n msgid \"Disable WYSIWYG Editor\"\n msgstr \"Wyłącz edytor WYSIWYG\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:635\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:670\n msgid \"CSS Priority\"\n msgstr \"Priorytet CSS\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:636\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:671\n msgid \"CSS Style\"\n msgstr \"Styl CSS\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:637\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:672\n msgid \"Enabling WYSIWYG can affect \\\"HTML\\\" Source\"\n msgstr \"Włączenie WYSIWYG może wpłynąć na źródło \\\"HTML\\\"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:638\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:673\n msgid \"Hidden Fields\"\n msgstr \"Ukryte pola\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:639\n-msgid \"Enable PDF Access By URL\"\n-msgstr \"Włącz dostęp do PDF przez URL\"\n-\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:640\n-msgid \"Disable PDF Access By URL\"\n-msgstr \"Wyłącz dostęp do PDF przez URL\"\n-\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:641\n-msgid \"Enable Shortcodes\"\n-msgstr \"Włącz shortkody\"\n-\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:642\n-msgid \"Disable Shortcodes\"\n-msgstr \"Wyłącz shortkody\"\n-\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:643\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:674\n msgid \"Error Message\"\n msgstr \"Komunikat o błędzie\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:644\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:675\n msgid \"Redirect URL\"\n msgstr \"Przekieruj URL\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:645\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:676\n msgid \"Element\"\n msgstr \"Element\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:646\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:677\n msgid \"Elements\"\n msgstr \"Elementy\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:647\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:678\n msgid \"Position Top\"\n msgstr \"Pozycja góra\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:648\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:679\n msgid \"Position Left\"\n msgstr \"Pozycja lewa\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:649\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:680\n msgid \"Padding Top\"\n msgstr \"Dopełnienie Góra\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:650\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:681\n msgid \"Padding Bottom\"\n msgstr \"Dopełnienie Dół\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:651\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:682\n msgid \"Padding Left\"\n msgstr \"Dopełnienie Lewo\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:652\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:683\n msgid \"Padding Right\"\n msgstr \"Dopełnienie Prawo\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:653\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:684\n msgid \"Margin Top\"\n msgstr \"Margines Góra\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:654\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:685\n msgid \"Margin Bottom\"\n msgstr \"Margines Dół\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:655\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:686\n msgid \"Margin Left\"\n msgstr \"Margines Lewo\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:656\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:687\n msgid \"Margin Right\"\n msgstr \"Margines Prawo\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:658\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:689\n msgid \"Border Top\"\n msgstr \"Obram. Góra\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:659\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:690\n msgid \"Border Bottom\"\n msgstr \"Obram. Dół\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:660\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:691\n msgid \"Border Left\"\n msgstr \"Obram. Lewo\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:661\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:692\n msgid \"Border Right\"\n msgstr \"Obram. Prawo\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:662\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:693\n msgid \"Field\"\n msgstr \"Pole\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:663\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:9\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:694\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:8\n msgid \"Style\"\n msgstr \"Styl\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:664\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:695\n msgid \"Lock \u002F Hide\"\n msgstr \"Blokowanie \u002F Ukrywanie\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:665\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:139\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:696\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:138\n msgid \"Font Color\"\n msgstr \"Kolor czcionki\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:666 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:93\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:697 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:93\n msgid \"Font Size\"\n msgstr \"Rozmiar czcionki\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:668\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:699\n msgid \"Rotation\"\n msgstr \"Rotacja\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:669\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:700\n msgid \"Preg Replace Pattern\"\n msgstr \"Preg Replace Wzór\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:670\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:701\n msgid \"Preg Replace Replacement\"\n msgstr \"Preg Replace Zastąpienie\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:671\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:702\n msgid \"Preg Match All Pattern\"\n msgstr \"Preg Match All Wzór\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:672\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:703\n msgid \"Preg Match All Output\"\n msgstr \"Preg Match All Wynik\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:673\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:704\n msgid \"Preg Filters\"\n msgstr \"Preg Filtry\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:674\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:705\n msgid \"Char Spacing\"\n msgstr \"Rozstaw znaków\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:675 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:34\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:706 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:34\n msgid \"Color\"\n msgstr \"Kolor\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:676\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:707\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_builder.php:43\n msgid \"QR Code\"\n msgstr \"Kod QR\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:677\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:708\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_builder.php:45\n msgid \"Barcode\"\n msgstr \"Kod kreskowy\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:678 classes\u002Fmodel\u002Fe2pdf-loader.php:704\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:238\n-#: classes\u002Fview\u002Fpage-e2pdf.php:216 classes\u002Fview\u002Fpage-e2pdf.php:423\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:709 classes\u002Fmodel\u002Fe2pdf-loader.php:735\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:237\n+#: classes\u002Fview\u002Fpage-e2pdf.php:217 classes\u002Fview\u002Fpage-e2pdf.php:425\n msgid \"Format\"\n msgstr \"Format\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:679\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:710\n msgid \"Precision\"\n msgstr \"Precyzja\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:680\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:711\n msgid \"L - Smallest\"\n msgstr \"L - Najmniejszy\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:681\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:712\n msgid \"M - Medium\"\n msgstr \"M - Średni\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:682\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:713\n msgid \"Q - High\"\n msgstr \"Q - Wysoki\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:683\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:714\n msgid \"H - Best\"\n msgstr \"H - Najlepszy\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:684\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:715\n msgid \"All Templates for this Website will be deactivated! Continue?\"\n msgstr \"Wszystkie szablony dla tej strony zostaną dezaktywowane! Kontynuować?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:685\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:716\n msgid \"Pre-uploaded PDF will be removed from E2Pdf Template! Continue?\"\n msgstr \"\"\n \"Wstępnie załadowany PDF zostanie usunięty z szablonu E2Pdf! Kontynuować?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:686\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:717\n msgid \"Quiet Zone Size\"\n msgstr \"Rozmiar Quiet Zone\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:687\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:718\n msgid \"Hide Label\"\n msgstr \"Ukryj etykietę\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:688\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:719\n msgid \"Lock\"\n msgstr \"Zablokuj\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:689\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:41\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:720\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:40\n msgid \"Unlock\"\n msgstr \"Odblokuj\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:690\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:721\n msgid \"Opacity\"\n msgstr \"Nieprzezroczystość\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:691\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:722\n msgid \"Auto Font Size\"\n msgstr \"Auto rozmiar czcionki\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:692 classes\u002Fview\u002Fpage-e2pdf-settings.php:33\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:723 classes\u002Fview\u002Fpage-e2pdf-settings.php:38\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:389\n msgid \"Max Upload File Size\"\n msgstr \"Maks. rozmiar przesyłanego pliku\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:693\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:724\n msgid \"The bulk export task will be removed! Continue?\"\n msgstr \"Zadanie eksportu zbiorczego zostanie usunięte! Kontynuować?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:694\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:725\n msgid \"The bulk export task will be stopped! Continue?\"\n msgstr \"Zadanie eksportu zbiorczego zostanie zatrzymane! Kontynuować?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:695\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:726\n msgid \"The bulk export task will be started! Continue?\"\n msgstr \"Zadanie eksportu zbiorczego zostanie rozpoczęte! Kontynuować?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:696 classes\u002Fview\u002Fpage-e2pdf-templates.php:25\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:727 classes\u002Fview\u002Fpage-e2pdf-templates.php:25\n msgid \"Search...\"\n msgstr \"Szukaj...\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:697\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:728\n msgid \"Show Element\"\n msgstr \"Pokaż element\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:698\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:729\n msgid \"Hide Element\"\n msgstr \"Ukryj element\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:699\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:730\n msgid \"Show Page\"\n msgstr \"Pokaż stronę\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:700\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:731\n msgid \"Hide Page\"\n msgstr \"Ukryj stronę\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:701\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:732\n msgid \"Change to\"\n msgstr \"Zmień na\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:702\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:733\n msgid \"Merge\"\n msgstr \"Scalaj\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:703\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:734\n msgid \"Change Property\"\n msgstr \"Zmień właściwość\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:705\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:736\n msgid \"Insert Before\"\n msgstr \"Wstaw przed\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:706\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:737\n msgid \"Insert After\"\n msgstr \"Wstaw po\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:707\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:738\n msgid \"Full Replacement\"\n msgstr \"Pełna wymiana\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:708\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:739\n msgid \"Search \u002F Replace\"\n msgstr \"Szukaj \u002F Zamień\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:709\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:740\n msgid \"Contains\"\n msgstr \"Zawiera\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:710\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:741\n msgid \"Not Contains\"\n msgstr \"Nie zawiera\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:711\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:742\n msgid \"In Array\"\n msgstr \"W Array\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:712\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:743\n msgid \"Array Key Exists\"\n msgstr \"Istnienie klucza w array\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:713\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:744\n msgid \"Else\"\n msgstr \"Inaczej\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:714\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:745\n msgid \"Append\"\n msgstr \"Dodawanie\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:715\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:746\n msgid \"Vertical\"\n msgstr \"Pionowo\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:716\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:747\n msgid \"Horizontal\"\n msgstr \"Poziomo\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:717\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:748\n msgid \"Palette\"\n msgstr \"Paleta\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:718\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:749\n msgid \"Line \u002F Stroke Color\"\n msgstr \"Kolor linii \u002F obrysu\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:719\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:750\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_builder.php:47\n msgid \"Graph\"\n msgstr \"Wykres\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:720\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:751\n msgid \"Markers\"\n msgstr \"Markery\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:721\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:752\n msgid \"Grid\"\n msgstr \"Siatka\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:722\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:753\n msgid \"Axis\"\n msgstr \"Oś\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:723\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:754\n msgid \"Legend\"\n msgstr \"Legenda\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:724 classes\u002Fview\u002Fpage-e2pdf-debug.php:220\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:755 classes\u002Fview\u002Fpage-e2pdf-debug.php:233\n msgid \"Structure\"\n msgstr \"Struktura\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:725\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:756\n msgid \"Space\"\n msgstr \"Spacja\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:726\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:757\n msgid \"Position\"\n msgstr \"Pozycja\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:727\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:758\n msgid \"Vertical Label\"\n msgstr \"Etykieta pionowa\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:728\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:759\n msgid \"Horizontal Label\"\n msgstr \"Etykieta pozioma\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:729\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:760\n msgid \"Label\"\n msgstr \"Etykieta\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:730\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:761\n msgid \"Axis Overlap\"\n msgstr \"Nakładanie osi\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:731\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:762\n msgid \"Grid Spacing\"\n msgstr \"Odstępy siatki\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:732\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:763\n msgid \"Grid Spacing (V)\"\n msgstr \"Odstępy siatki (V)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:733\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:764\n msgid \"Grid Spacing (H)\"\n msgstr \"Odstępy siatki (H)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:734\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:765\n msgid \"Grid Division (V)\"\n msgstr \"Podział siatki (V)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:735\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:766\n msgid \"Grid Division (H)\"\n msgstr \"Podział siatki (H)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:736\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:767\n msgid \"Axis Color\"\n msgstr \"Kolor osi\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:737\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:768\n msgid \"Grid Color\"\n msgstr \"Kolor siatki\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:738\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:769\n msgid \"Bar Label Color\"\n msgstr \"Kolor etykiety\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:739\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:770\n msgid \"Position (V)\"\n msgstr \"Pozycja (V)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:740\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:771\n msgid \"Position (H)\"\n msgstr \"Pozycja (H)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:741\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:772\n msgid \"Bar Labels\"\n msgstr \"Etykiety paska\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:742\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:773\n msgid \"Marker\"\n msgstr \"Znacznik\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:743\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:774\n msgid \"Grid Subdivision Color\"\n msgstr \"Kolor podziału siatki\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:744\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:775\n msgid \"Sub Divisions\"\n msgstr \"Podziały\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:745\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:776\n msgid \"Axis (V)\"\n msgstr \"Oś (V)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:746\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:777\n msgid \"Axis (H)\"\n msgstr \"Oś (H)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:747\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:778\n msgid \"Text\"\n msgstr \"Tekst\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:748\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:779\n msgid \"Enable\"\n msgstr \"Włącz\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:749\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:780\n msgid \"Min\"\n msgstr \"Min\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:750\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:781\n msgid \"Max\"\n msgstr \"Maks\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:751\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:782\n msgid \"Fill Under\"\n msgstr \"Wypełnij pod\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:752\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:783\n msgid \"Reverse\"\n msgstr \"Odwrócony\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:754\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:785\n msgid \"Percentage\"\n msgstr \"Procent\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:755\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:786\n msgid \"Legend Text Side\"\n msgstr \"Tekst legendy po stronie\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:756\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:787\n msgid \"Columns\"\n msgstr \"Kolumny\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:757\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:788\n msgid \"Padding (X)\"\n msgstr \"Padding (X)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:758\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:789\n msgid \"Padding (Y)\"\n msgstr \"Padding (Y)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:759\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:790\n msgid \"Stroke Color\"\n msgstr \"Kolor obrysu\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:760\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:791\n msgid \"Stroke Width\"\n msgstr \"Szerokość obrysu\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:761\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:792\n msgid \"Bubble Scale\"\n msgstr \"Skala bąbelkowa\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:762\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:793\n msgid \"Units\"\n msgstr \"Jednostki\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:763\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:794\n msgid \"Increment\"\n msgstr \"Zwiększanie\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:764\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:795\n msgid \"Stack Group\"\n msgstr \"Grupa stosu\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:765\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:796\n msgid \"Line Dataset\"\n msgstr \"Zbiór danych linii\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:766\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:797\n msgid \"Project Angle\"\n msgstr \"Projekt Kąt\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:767\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:798\n msgid \"Legends\"\n msgstr \"Legendy\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:768\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:799\n msgid \"Colors\"\n msgstr \"Kolory\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:769\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:800\n msgid \"Line Curve\"\n msgstr \"Krzywa linii\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:770\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:801\n msgid \"Margin (H)\"\n msgstr \"Margines (H)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:771\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:802\n msgid \"Margin (V)\"\n msgstr \"Margines (V)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:772\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:803\n msgid \"Units Label\"\n msgstr \"Etykieta jednostek\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:773\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:804\n msgid \"Dynamic Line \u002F Stroke Color\"\n msgstr \"Dynamiczny kolor linii \u002F obrysu\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:774\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:805\n msgid \"Dynamic Marker Color\"\n msgstr \"Dynamiczny kolor znacznika\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:775\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:806\n msgid \"Inner\"\n msgstr \"Wewnętrzny\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:776\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:807\n msgid \"Outer\"\n msgstr \"Zewnętrzny\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:777\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:808\n msgid \"Align\"\n msgstr \"Wyrównanie\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:778\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:809\n msgid \"Offset (X)\"\n msgstr \"Przesunięcie (X)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:779\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:810\n msgid \"Offset (Y)\"\n msgstr \"Przesunięcie (Y)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:780\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:811\n msgid \"Link URL\"\n msgstr \"Link URL\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:781\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:812\n msgid \"Link Type\"\n msgstr \"Typ linku\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:782\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:813\n msgid \"Link Label\"\n msgstr \"Etykieta linku\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:783\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:814\n msgid \"Url\"\n msgstr \"Adres URL\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:784\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:815\n msgid \"Attachment\"\n msgstr \"Załącznik\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:785\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:816\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_builder.php:37\n msgid \"Image\"\n msgstr \"Obraz\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:786\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:817\n msgid \"Media Library\"\n msgstr \"Biblioteka multimediów\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:787 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:44\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:818 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:44\n msgid \"Underline\"\n msgstr \"Podkreślenie\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:788\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:819\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_builder.php:49\n msgid \"Page Number\"\n msgstr \"Numer strony\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:789\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:820\n msgid \"Adjust Page Number\"\n msgstr \"Dostosuj numer strony\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:790\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:821\n msgid \"Adjust Page Total\"\n msgstr \"Dostosuj liczbę stron\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:791\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:822\n msgid \"Preload Images\"\n msgstr \"Załaduj obrazy\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:792\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:823\n msgid \"Hooks\"\n msgstr \"Haki\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:793\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:824\n msgid \"Display PDF download at\"\n msgstr \"Wyświetl pobieranie PDF na\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:794\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:825\n msgid \"Optimization\"\n msgstr \"Optymalizacja\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:795\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:826\n msgid \"Inherit\"\n msgstr \"Dziedziczyć\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:796\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:402\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:827\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:397\n msgid \"Not Optimized\"\n msgstr \"Nie zoptymalizowane\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:797\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:403\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:828\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:398\n msgid \"Low Quality\"\n msgstr \"Niska jakość\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:798\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:404\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:829\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:399\n msgid \"Basic Quality\"\n msgstr \"Podstawowa jakość\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:799\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:405\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:830\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:400\n msgid \"Good Quality\"\n msgstr \"Dobra jakość\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:800\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:406\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:831\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:401\n msgid \"Best Quality\"\n msgstr \"Najwyższa jakość\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:801\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:407\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:832\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:402\n msgid \"Ultra Quality\"\n msgstr \"Ultra jakość\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:802\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:833\n msgid \"Error: Empty \\\"if\\\" and \\\"value\\\" detected in action condition\"\n msgstr \"Błąd: Wykryto puste \\\"if\\\" i \\\"value\\\" w warunku akcji\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:803\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:834\n msgid \"No Read-Only\"\n msgstr \"Nie tylko do odczytu\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:804\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:835\n msgid \"No Border\"\n msgstr \"Usuń obramowanie\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:805\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:836\n msgid \"Quick Props\"\n msgstr \"Szybkie Właściwości\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:844\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:875\n #, php-format\n msgid \"E2Pdf requires PHP version 5.4 or later. Your PHP version is %s\"\n msgstr \"E2Pdf wymaga wersji PHP 5.4 lub nowszej. Twoja wersja PHP to %s\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:865\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:900\n msgid \"Templates per page\"\n msgstr \"Szablonów na stronie\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:981\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:1016\n #, php-format\n msgid \"Can't create folder %s\"\n msgstr \"Nie można utworzyć folderu %s\"\n@@ -1985,249 +1977,248 @@\n msgid \"Restore License Key\"\n msgstr \"Przywróć klucz licencyjny\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:84 classes\u002Fmodel\u002Fe2pdf-options.php:282\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:87 classes\u002Fmodel\u002Fe2pdf-options.php:285\n msgid \"Enabled\"\n msgstr \"Włączone\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:88 classes\u002Fmodel\u002Fe2pdf-options.php:281\n-#: classes\u002Fmodel\u002Fe2pdf-options.php:292\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:91 classes\u002Fmodel\u002Fe2pdf-options.php:284\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:295\n msgid \"Disabled\"\n msgstr \"Wyłączone\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:94 classes\u002Fmodel\u002Fe2pdf-options.php:735\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:97 classes\u002Fmodel\u002Fe2pdf-options.php:797\n msgid \"Extensions\"\n msgstr \"Rozszerzenia\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:140 classes\u002Fview\u002Fpage-e2pdf-debug.php:37\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:143 classes\u002Fview\u002Fpage-e2pdf-debug.php:37\n msgid \"Common\"\n msgstr \"Ogólne\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:143 classes\u002Fmodel\u002Fe2pdf-options.php:148\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:146 classes\u002Fmodel\u002Fe2pdf-options.php:151\n msgid \"E2Pdf.com Account E-mail Address\"\n msgstr \"Adres e-mail konta E2Pdf.com\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:151 classes\u002Fmodel\u002Fe2pdf-options.php:159\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:154 classes\u002Fmodel\u002Fe2pdf-options.php:162\n msgid \"API Server\"\n msgstr \"Serwer API\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:172\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:175\n msgid \"API Connection Timout (sec)\"\n msgstr \"Limit czasu połączenia API (sek)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:181 classes\u002Fview\u002Fpage-e2pdf-debug.php:45\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:184 classes\u002Fview\u002Fpage-e2pdf-debug.php:45\n msgid \"PDF Processor\"\n msgstr \"Procesor PDF\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:189\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:443\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:192\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:438\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:46\n msgid \"Font Processor\"\n msgstr \"Procesor czcionek\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:200\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:203\n msgid \"Release Candidate Builds\"\n msgstr \"Kandydat do wydania\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:206\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:209\n msgid \"Update from E2Pdf.com\"\n msgstr \"Aktualizacja z E2Pdf.com\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:209\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:212\n msgid \"URL Format\"\n msgstr \"Format URL\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:220 classes\u002Fmodel\u002Fe2pdf-options.php:226\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:223 classes\u002Fmodel\u002Fe2pdf-options.php:229\n msgid \"URL Rewrite\"\n msgstr \"Przepisywanie URL\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:239 classes\u002Fview\u002Fpage-e2pdf-settings.php:123\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:242 classes\u002Fview\u002Fpage-e2pdf-settings.php:128\n msgid \"Cache\"\n msgstr \"Pamięć podręczna\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:245\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:248\n msgid \"Objects Cache\"\n msgstr \"Pamięć podręczna obiektów\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:254\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:257\n msgid \"Fonts Cache\"\n msgstr \"Pamięć podręczna czcionek\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:263\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:266\n msgid \"PDFs Cache\"\n msgstr \"Pamięć podręczna plików PDF\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:272\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:275\n msgid \"TTL (sec)\"\n msgstr \"TTL (sek)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:275\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:278\n msgid \"PDF Ajax Loader\"\n msgstr \"PDF Ajax Loader\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:286\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:289\n msgid \"Fallback PDF Viewer\"\n msgstr \"Zapasowa przeglądarka PDF\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:303\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:306\n msgid \"\"\n \"Fix Chrome iOS Download Name (might be not compatible with certain setups)\"\n msgstr \"\"\n \"Napraw nazwę pobierania w Chrome na iOS (może być niekompatybilna z pewnymi \"\n \"konfiguracjami)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:306 classes\u002Fmodel\u002Fe2pdf-options.php:312\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:309 classes\u002Fmodel\u002Fe2pdf-options.php:315\n msgid \"New Edit Layout\"\n msgstr \"Nowy układ edycji\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:315 classes\u002Fmodel\u002Fe2pdf-options.php:321\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:318 classes\u002Fmodel\u002Fe2pdf-options.php:324\n msgid \"Hide Warnings\"\n msgstr \"Ukryj ostrzeżenia\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:324\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:327\n msgid \"Local Images\"\n msgstr \"Lokalne obrazy\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:330\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:333\n msgid \"Load via Remote Request\"\n msgstr \"Załaduj przez zdalne żądanie\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:333\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:336\n msgid \"Images Timout (sec)\"\n msgstr \"Limit czasu obrazów (sek)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:342\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:345\n msgid \"Bulk Export Interval (sec)\"\n msgstr \"Interwał eksportu zbiorczego (sek)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:351\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:354\n msgid \"Undo Limit\"\n msgstr \"Limit cofnięć\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:360\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:363\n msgid \"Revisions Limit\"\n msgstr \"Limit Rewizji\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:369\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:372\n msgid \"Debug Mode\"\n msgstr \"Tryb debugowania\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:375\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:378\n msgid \"Enable Debug Mode\"\n msgstr \"Włącz tryb debugowania\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:378 classes\u002Fmodel\u002Fe2pdf-options.php:383\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:381 classes\u002Fmodel\u002Fe2pdf-options.php:386\n #: classes\u002Fview\u002Fblocks\u002Fdebug-panel.php:10\n msgid \"Recovery Mode E-mail\"\n msgstr \"Tryb odzyskiwania e-maila\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:386\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:389\n msgid \"Memory\u002FTime Usage\"\n msgstr \"Zużycie pamięci\u002Fczasu\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:392\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:395\n msgid \"Show Memory\u002FTime Usage\"\n msgstr \"Pokaż użycie pamięci\u002Fczasu\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:397 classes\u002Fview\u002Fpage-e2pdf-debug.php:20\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:400 classes\u002Fview\u002Fpage-e2pdf-debug.php:20\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:190\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:100\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:105\n msgid \"Maintenance\"\n msgstr \"Konserwacja\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:402\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:405\n msgid \"Fonts\"\n msgstr \"Czcionki\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:407\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:410\n msgid \"Permissions\"\n msgstr \"Uprawnienia\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:460\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:452 classes\u002Fmodel\u002Fe2pdf-options.php:522\n msgid \"Authorized\"\n msgstr \"Autoryzowano\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:743\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:811\n msgid \"Translation\"\n msgstr \"Tłumaczenie\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:747\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:815\n msgid \"PDF Translation\"\n msgstr \"Tłumaczenie PDF\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:753\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:821\n msgid \"No Translation\"\n msgstr \"Brak tłumaczenia\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:754\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:822\n msgid \"Partial Translation\"\n msgstr \"Częściowe tłumaczenie\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:755\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:823\n msgid \"Full Translation\"\n msgstr \"Pełne tłumaczenie\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:387 classes\u002Fmodel\u002Fe2pdf-shortcode.php:643\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:1204\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:1326\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:245 classes\u002Fmodel\u002Fe2pdf-shortcode.php:6796\n+#: classes\u002Fmodel\u002Fe2pdf-template.php:1044\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:127\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:462\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:543 classes\u002Fview\u002Fpage-e2pdf.php:28\n msgid \"Download\"\n msgstr \"Pobierz\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5891\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6561\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5029\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5755\n msgid \"Product\"\n msgstr \"Produkt\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5894\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6564\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5032\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5758\n msgid \"SKU\"\n msgstr \"SKU\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5897\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6567\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5035\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5761\n msgid \"Quantity\"\n msgstr \"Ilość\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5900\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6570\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5038\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5764\n msgid \"Price\"\n msgstr \"Cena\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5903\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6573\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6649\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6885\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5041\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5767\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5833\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6069\n msgid \"Subtotal\"\n msgstr \"Podsuma\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6667\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6903\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5851\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6087\n msgid \"Free shipping coupon\"\n msgstr \"Kupon na darmową wysyłkę\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6722\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6958\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5906\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6142\n msgid \"Shipping options will be updated during checkout.\"\n msgstr \"Opcje wysyłki zostaną zaktualizowane podczas realizacji zamówienia.\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6800\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:7038\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5984\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6222\n #, php-format\n msgid \"estimated for %s\"\n msgstr \"szacowane dla %s\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6811\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:7049\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5995\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6233\n msgid \"Total\"\n msgstr \"Suma\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-template.php:170\n+#: classes\u002Fmodel\u002Fe2pdf-template.php:171\n msgid \"Latest\"\n msgstr \"Najnowsze\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-template.php:887\n+#: classes\u002Fmodel\u002Fe2pdf-template.php:951\n msgid \"Template Deactivated\"\n msgstr \"Szablon dezaktywowany\"\n \n@@ -2271,8 +2262,8 @@\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:112 classes\u002Fview\u002Fpage-e2pdf-debug.php:114\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:123 classes\u002Fview\u002Fpage-e2pdf-debug.php:130\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:137 classes\u002Fview\u002Fpage-e2pdf-debug.php:144\n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:251 classes\u002Fview\u002Fpage-e2pdf-debug.php:260\n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:269\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:263 classes\u002Fview\u002Fpage-e2pdf-debug.php:272\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:281\n msgid \"[ERROR]\"\n msgstr \"[BŁĄD]\"\n \n@@ -2475,192 +2466,192 @@\n msgid \"Update\"\n msgstr \"Aktualizuj\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:15\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:14\n msgid \"Meta\"\n msgstr \"Meta\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:17\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:16\n msgid \"Security\"\n msgstr \"Bezpieczeństwo\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:26\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:25\n msgid \"Enter your E-mail to unlock this features\"\n msgstr \"Wprowadź swój e-mail, aby odblokować te funkcje\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:33\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:32\n msgid \"E-mail\"\n msgstr \"E-mail\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:49\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:48\n msgid \"Global Font\"\n msgstr \"Czcionka globalna\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:161\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:169\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:182\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:194\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:160\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:168\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:181\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:193\n msgid \"Dataset Title\"\n msgstr \"Tytuł zestawu danych\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:204\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:212\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:203\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:211\n msgid \"Button Title\"\n msgstr \"Tytuł przycisku\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:221\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:229\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:220\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:228\n msgid \"Dynamic PDF Source\"\n msgstr \"Dynamiczne źródło PDF\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:258\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:257\n msgid \"JPG Output Resolution\"\n msgstr \"Rozdzielczość wyjściowa JPG\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:285\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:284\n msgid \"Open PDF in Browser\"\n msgstr \"Otwórz PDF w przeglądarce\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:300\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:299\n msgid \"Auto PDF Download\"\n msgstr \"Automatyczne pobieranie PDF\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:316\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:324\n-#: classes\u002Fview\u002Fpage-e2pdf.php:148 classes\u002Fview\u002Fpage-e2pdf.php:154\n-#: classes\u002Fview\u002Fpage-e2pdf.php:338 classes\u002Fview\u002Fpage-e2pdf.php:344\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:314\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:322\n+#: classes\u002Fview\u002Fpage-e2pdf.php:149 classes\u002Fview\u002Fpage-e2pdf.php:155\n+#: classes\u002Fview\u002Fpage-e2pdf.php:340 classes\u002Fview\u002Fpage-e2pdf.php:346\n msgid \"PDF Name\"\n msgstr \"Nazwa PDF\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:334\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:342\n-#: classes\u002Fview\u002Fpage-e2pdf.php:354 classes\u002Fview\u002Fpage-e2pdf.php:360\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:331\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:339\n+#: classes\u002Fview\u002Fpage-e2pdf.php:356 classes\u002Fview\u002Fpage-e2pdf.php:362\n msgid \"PDF Local Name\"\n msgstr \"Nazwa lokalna PDF\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:352\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:348\n msgid \"PDF Flatten\"\n msgstr \"Spłaszcz PDF\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:364\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:360\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:42 classes\u002Fview\u002Fpage-e2pdf-debug.php:43\n-#: classes\u002Fview\u002Fpage-e2pdf.php:206 classes\u002Fview\u002Fpage-e2pdf.php:413\n+#: classes\u002Fview\u002Fpage-e2pdf.php:207 classes\u002Fview\u002Fpage-e2pdf.php:415\n msgid \"No\"\n msgstr \"Nie\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:365\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:361\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:42 classes\u002Fview\u002Fpage-e2pdf-debug.php:43\n-#: classes\u002Fview\u002Fpage-e2pdf.php:207 classes\u002Fview\u002Fpage-e2pdf.php:414\n+#: classes\u002Fview\u002Fpage-e2pdf.php:208 classes\u002Fview\u002Fpage-e2pdf.php:416\n msgid \"Yes\"\n msgstr \"Tak\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:366\n-#: classes\u002Fview\u002Fpage-e2pdf.php:208 classes\u002Fview\u002Fpage-e2pdf.php:415\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:362\n+#: classes\u002Fview\u002Fpage-e2pdf.php:209 classes\u002Fview\u002Fpage-e2pdf.php:417\n msgid \"Full\"\n msgstr \"Pełny\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:378\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:373\n msgid \"Generate appearance\"\n msgstr \"Generuj wygląd\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:390\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:385\n msgid \"Images\"\n msgstr \"Obrazy\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:414\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:409\n msgid \"Compression\"\n msgstr \"Kompresja\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:426\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:421\n msgid \"Default\"\n msgstr \"Domyślnie\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:466\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:460\n msgid \"PDF Tab Order\"\n msgstr \"Kolejność zakładek PDF\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:477\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:471\n msgid \"Unspecified\"\n msgstr \"Nieokreślony\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:478\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:472\n msgid \"Use Row Order\"\n msgstr \"Użyj kolejności wierszy\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:479\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:473\n msgid \"Use Column Order\"\n msgstr \"Użyj kolejności kolumn\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:480\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:474\n msgid \"Use Document Structure\"\n msgstr \"Użyj struktury dokumentu\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:510\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:518\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:503\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:511\n msgid \"Subject\"\n msgstr \"Temat\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:528\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:536\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:521\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:529\n msgid \"Author\"\n msgstr \"Autor\"\n \n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:538\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:546\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:554\n msgid \"Keywords\"\n msgstr \"Słowa kluczowe\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:563\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:555\n msgid \"Lang Code\"\n msgstr \"Kod języka\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:587\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:595\n-#: classes\u002Fview\u002Fpage-e2pdf.php:164 classes\u002Fview\u002Fpage-e2pdf.php:370\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:578\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:586\n+#: classes\u002Fview\u002Fpage-e2pdf.php:165 classes\u002Fview\u002Fpage-e2pdf.php:372\n msgid \"PDF Open Password\"\n msgstr \"Hasło otwierania PDF\"\n \n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:596\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:605\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:614\n msgid \"Permissions Owner Password\"\n msgstr \"Hasło właściciela uprawnień\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:623\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:614\n msgid \"Permissions (Opened with PDF Open Password)\"\n msgstr \"Uprawnienia (Otwarty z hasłem otwierania PDF)\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:632\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:623\n msgid \"Printing\"\n msgstr \"Drukowanie\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:641\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:632\n msgid \"Printing (Degraded)\"\n msgstr \"Drukowanie (obniżona jakość)\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:650\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:641\n msgid \"Editing\"\n msgstr \"Edycja\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:659\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:650\n msgid \"Copying\"\n msgstr \"Kopiowanie\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:668\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:659\n msgid \"Commenting\"\n msgstr \"Komentowanie\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:677\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:668\n msgid \"Fill-In or Signing\"\n msgstr \"Wypełnij lub Podpisz\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:686\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:677\n msgid \"Document Assembly\"\n msgstr \"Składanie dokumentów\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:695\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:686\n msgid \"Screen Reader Accessibility\"\n msgstr \"Dostępność czytnika ekranu\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:12 classes\u002Fview\u002Fpage-e2pdf-debug.php:245\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:12 classes\u002Fview\u002Fpage-e2pdf-debug.php:257\n msgid \"Connections\"\n msgstr \"Połączenia\"\n \n@@ -2669,13 +2660,13 @@\n msgstr \"BD\"\n \n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:25 classes\u002Fview\u002Fpage-e2pdf-debug.php:195\n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:206\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:105\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:116\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:128\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:139\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:150\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:162\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:207 classes\u002Fview\u002Fpage-e2pdf-debug.php:219\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:110\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:121\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:133\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:144\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:155\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:167\n msgid \"Are you sure want to continue?\"\n msgstr \"Czy na pewno chcesz kontynuować?\"\n \n@@ -2751,7 +2742,7 @@\n msgid \"Plugins\"\n msgstr \"Wtyczki\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:215\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:228\n msgid \"\"\n \"* It is strongly RECOMMENDED that you backup your DB before any of these \"\n \"actions are applied to avoid data loss\"\n@@ -2759,15 +2750,15 @@\n \"* ZALECA się wykonanie kopii zapasowej bazy danych przed zastosowaniem \"\n \"któregokolwiek z tych działań, aby uniknąć utraty danych\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:252\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:264\n msgid \"Back-connection\"\n msgstr \"Połączenie zwrotne\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:261\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:273\n msgid \"Upload Speed\"\n msgstr \"Prędkość wysyłania\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:270\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:282\n msgid \"Download Speed\"\n msgstr \"Prędkość pobierania\"\n \n@@ -2791,16 +2782,22 @@\n msgid \"Expire Date\"\n msgstr \"Data wygaśnięcia\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:27\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:12\n+msgid \"\"\n+\"It's recommended to use the Integration Hooks in the E2Pdf Template settings \"\n+\"instead\"\n+msgstr \"Zaleca się użycie Haków Integracyjnych w ustawieniach Szablonu E2Pdf\"\n+\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:32\n msgid \"Upload Font\"\n msgstr \"Prześlij czcionkę\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:32\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:37\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:388\n msgid \"Allowed File Types\"\n msgstr \"Dozwolone typy plików\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:38\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:43\n msgid \"Upload\"\n msgstr \"Prześlij\"\n \n@@ -2877,50 +2874,74 @@\n msgid \"Template Title\"\n msgstr \"Tytuł szablonu\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:12 classes\u002Fview\u002Fpage-e2pdf.php:467\n-msgid \"Create PDFs in Bulk\"\n-msgstr \"Twórz pliki PDF masowo\"\n+#: classes\u002Fview\u002Fpage-e2pdf.php:12 classes\u002Fview\u002Fpage-e2pdf.php:469\n+msgid \"Bulk Create PDFs\"\n+msgstr \"Masowe Tworzenie PDF-ów\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:63 classes\u002Fview\u002Fpage-e2pdf.php:296\n+#: classes\u002Fview\u002Fpage-e2pdf.php:64 classes\u002Fview\u002Fpage-e2pdf.php:298\n msgid \"Dataset\"\n msgstr \"Zbiór danych\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:98\n+#: classes\u002Fview\u002Fpage-e2pdf.php:99\n msgid \"Dataset2\"\n msgstr \"ZbiórDanych2\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:138\n+#: classes\u002Fview\u002Fpage-e2pdf.php:139\n msgid \"Shortcode for a Download Link with a Dynamic Dataset\"\n msgstr \"Shortkod dla linku do pobrania z dynamicznym zestawem danych\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:142\n+#: classes\u002Fview\u002Fpage-e2pdf.php:143\n msgid \"Shortcode for a Download Link with the Current Dataset\"\n msgstr \"Shortkod dla linku do pobrania z bieżącym zestawem danych\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:180 classes\u002Fview\u002Fpage-e2pdf.php:386\n+#: classes\u002Fview\u002Fpage-e2pdf.php:181 classes\u002Fview\u002Fpage-e2pdf.php:388\n msgid \"User\"\n msgstr \"Użytkownik\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:196 classes\u002Fview\u002Fpage-e2pdf.php:403\n+#: classes\u002Fview\u002Fpage-e2pdf.php:197 classes\u002Fview\u002Fpage-e2pdf.php:405\n msgid \"Flatten\"\n msgstr \"Spłaszcz\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:235 classes\u002Fview\u002Fpage-e2pdf.php:442\n+#: classes\u002Fview\u002Fpage-e2pdf.php:236 classes\u002Fview\u002Fpage-e2pdf.php:444\n msgid \"Arguments\"\n msgstr \"Argumenty\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:306\n+#: classes\u002Fview\u002Fpage-e2pdf.php:308\n msgid \"Filter...\"\n msgstr \"Filtruj...\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:478\n+#: classes\u002Fview\u002Fpage-e2pdf.php:480\n msgid \"Progress\"\n msgstr \"Postęp\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:480\n+#: classes\u002Fview\u002Fpage-e2pdf.php:482\n msgid \"Created\"\n msgstr \"Utworzono\"\n \n+#, php-format\n+#~ msgid \"\"\n+#~ \"The Bulk PDFs creation is not available with Free License Type. Check \u003Ca \"\n+#~ \"target='_blank' href='%s'>%s\u003C\u002Fa> for upgrade options\"\n+#~ msgstr \"\"\n+#~ \"Tworzenie zbiorczych plików PDF nie jest dostępne w przypadku bezpłatnej \"\n+#~ \"licencji. Sprawdź \u003Ca target='_blank' href='%s'>%s\u003C\u002Fa> w celu uzyskania \"\n+#~ \"opcji uaktualnienia\"\n+\n+#~ msgid \"Enable PDF Access By URL\"\n+#~ msgstr \"Włącz dostęp do PDF przez URL\"\n+\n+#~ msgid \"Disable PDF Access By URL\"\n+#~ msgstr \"Wyłącz dostęp do PDF przez URL\"\n+\n+#~ msgid \"Enable Shortcodes\"\n+#~ msgstr \"Włącz shortkody\"\n+\n+#~ msgid \"Disable Shortcodes\"\n+#~ msgstr \"Wyłącz shortkody\"\n+\n+#~ msgid \"Create PDFs in Bulk\"\n+#~ msgstr \"Twórz pliki PDF masowo\"\n+\n #~ msgid \"HTML Worker\"\n #~ msgstr \"HTML Worker\"\n \ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Flanguages\u002Fe2pdf.pot \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Flanguages\u002Fe2pdf.pot\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Flanguages\u002Fe2pdf.pot\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Flanguages\u002Fe2pdf.pot\t2026-02-24 09:27:28.000000000 +0000\n@@ -2,7 +2,7 @@\n msgid \"\"\n msgstr \"\"\n \"Project-Id-Version: e2pdf\\n\"\n-\"POT-Creation-Date: 2025-04-22 17:10+0200\\n\"\n+\"POT-Creation-Date: 2025-08-29 13:05+0200\\n\"\n \"PO-Revision-Date: 2017-07-31 09:56+0300\\n\"\n \"Last-Translator: \\n\"\n \"Language-Team: e2pdf \u003Csupport@e2pdf.com>\\n\"\n@@ -19,7 +19,7 @@\n \"X-Poedit-SearchPathExcluded-0: assets\\n\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-debug.php:25 classes\u002Fcontroller\u002Fe2pdf-debug.php:51\n-#: classes\u002Fcontroller\u002Fe2pdf-debug.php:63\n+#: classes\u002Fcontroller\u002Fe2pdf-debug.php:55 classes\u002Fcontroller\u002Fe2pdf-debug.php:59\n #: classes\u002Fcontroller\u002Fe2pdf-integrations.php:23\n #: classes\u002Fcontroller\u002Fe2pdf-license.php:63\n #: classes\u002Fcontroller\u002Fe2pdf-license.php:112\n@@ -34,7 +34,7 @@\n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:253\n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:275\n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:315\n-#: classes\u002Fcontroller\u002Fe2pdf-settings.php:341\n+#: classes\u002Fcontroller\u002Fe2pdf-settings.php:340\n #, php-format\n msgid \"Success: %s\"\n msgstr \"\"\n@@ -47,7 +47,11 @@\n msgid \"Repair DB\"\n msgstr \"\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf-debug.php:63 classes\u002Fview\u002Fpage-e2pdf-debug.php:204\n+#: classes\u002Fcontroller\u002Fe2pdf-debug.php:55 classes\u002Fview\u002Fpage-e2pdf-debug.php:205\n+msgid \"Repair DB Collate\"\n+msgstr \"\"\n+\n+#: classes\u002Fcontroller\u002Fe2pdf-debug.php:59 classes\u002Fview\u002Fpage-e2pdf-debug.php:217\n msgid \"Reinitialize DB Hooks\"\n msgstr \"\"\n \n@@ -56,16 +60,17 @@\n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:253\n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:275\n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:315\n-#: classes\u002Fcontroller\u002Fe2pdf-settings.php:341\n+#: classes\u002Fcontroller\u002Fe2pdf-settings.php:340\n msgid \"Settings Saved\"\n msgstr \"\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-integrations.php:45\n-#: classes\u002Fmodel\u002Fe2pdf-options.php:460\n+#: classes\u002Fcontroller\u002Fe2pdf-integrations.php:103\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:452 classes\u002Fmodel\u002Fe2pdf-options.php:522\n msgid \"Not Authorized\"\n msgstr \"\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf-integrations.php:72\n+#: classes\u002Fcontroller\u002Fe2pdf-integrations.php:70\n msgid \"App Authorized\"\n msgstr \"\"\n \n@@ -92,32 +97,32 @@\n msgstr \"\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:98\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:126\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:131\n msgid \"Purge Objects Cache\"\n msgstr \"\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:109\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:137\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:142\n msgid \"Purge Fonts Cache\"\n msgstr \"\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:120\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:148\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:153\n msgid \"Purge PDFs Cache\"\n msgstr \"\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:131\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:160\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:165\n msgid \"Purge Full Cache\"\n msgstr \"\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:143\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:103\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:108\n msgid \"Optimize DB\"\n msgstr \"\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:154\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:114\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:119\n msgid \"Clear Recovery Mode Limit\"\n msgstr \"\"\n \n@@ -159,16 +164,16 @@\n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:1571\n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:1781\n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:2039\n-#: classes\u002Fcontroller\u002Fe2pdf-templates.php:2055 classes\u002Fcontroller\u002Fe2pdf.php:708\n-#: classes\u002Fcontroller\u002Ffrontend\u002Fe2pdf-download.php:304\n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:863\n+#: classes\u002Fcontroller\u002Fe2pdf-templates.php:2055 classes\u002Fcontroller\u002Fe2pdf.php:734\n+#: classes\u002Fcontroller\u002Ffrontend\u002Fe2pdf-download.php:347\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:793\n #: classes\u002Fmodel\u002Fe2pdf-adobesign.php:127 classes\u002Fmodel\u002Fe2pdf-adobesign.php:208\n-#: classes\u002Fmodel\u002Fe2pdf-api.php:111 classes\u002Fmodel\u002Fe2pdf-template.php:768\n-#: classes\u002Fmodel\u002Fe2pdf-template.php:877 classes\u002Fmodel\u002Fe2pdf-template.php:911\n+#: classes\u002Fmodel\u002Fe2pdf-api.php:111 classes\u002Fmodel\u002Fe2pdf-template.php:832\n+#: classes\u002Fmodel\u002Fe2pdf-template.php:941 classes\u002Fmodel\u002Fe2pdf-template.php:975\n msgid \"Something went wrong!\"\n msgstr \"\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf-settings.php:380\n+#: classes\u002Fcontroller\u002Fe2pdf-settings.php:379\n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:78\n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:465\n #, php-format\n@@ -216,9 +221,9 @@\n msgstr \"\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:849\n-#: classes\u002Fcontroller\u002Fe2pdf-templates.php:1108 classes\u002Fcontroller\u002Fe2pdf.php:716\n-#: classes\u002Fmodel\u002Fe2pdf-extension.php:250 classes\u002Fmodel\u002Fe2pdf-extension.php:254\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:851\n+#: classes\u002Fcontroller\u002Fe2pdf-templates.php:1108 classes\u002Fcontroller\u002Fe2pdf.php:742\n+#: classes\u002Fmodel\u002Fe2pdf-extension.php:255 classes\u002Fmodel\u002Fe2pdf-extension.php:259\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:882\n #, php-format\n msgid \"The PHP %s extension is required\"\n msgstr \"\"\n@@ -248,7 +253,7 @@\n msgstr \"\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:1119\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:549\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:584\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:40\n msgid \"Options\"\n msgstr \"\"\n@@ -279,14 +284,14 @@\n msgstr \"\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:1289 classes\u002Fcontroller\u002Fe2pdf.php:45\n-#: classes\u002Fcontroller\u002Fe2pdf.php:87 classes\u002Fcontroller\u002Fe2pdf.php:445\n-#: classes\u002Fcontroller\u002Fe2pdf.php:468\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2442\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2452\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:575 classes\u002Fview\u002Fpage-e2pdf.php:53\n-#: classes\u002Fview\u002Fpage-e2pdf.php:76 classes\u002Fview\u002Fpage-e2pdf.php:85\n-#: classes\u002Fview\u002Fpage-e2pdf.php:111 classes\u002Fview\u002Fpage-e2pdf.php:118\n-#: classes\u002Fview\u002Fpage-e2pdf.php:286 classes\u002Fview\u002Fpage-e2pdf.php:322\n+#: classes\u002Fcontroller\u002Fe2pdf.php:87 classes\u002Fcontroller\u002Fe2pdf.php:452\n+#: classes\u002Fcontroller\u002Fe2pdf.php:475\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3342\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3353\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:610 classes\u002Fview\u002Fpage-e2pdf.php:54\n+#: classes\u002Fview\u002Fpage-e2pdf.php:77 classes\u002Fview\u002Fpage-e2pdf.php:86\n+#: classes\u002Fview\u002Fpage-e2pdf.php:112 classes\u002Fview\u002Fpage-e2pdf.php:119\n+#: classes\u002Fview\u002Fpage-e2pdf.php:288 classes\u002Fview\u002Fpage-e2pdf.php:324\n msgid \"--- Select ---\"\n msgstr \"\"\n \n@@ -299,9 +304,10 @@\n msgstr \"\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:1356\n+#: classes\u002Fcontroller\u002Ffrontend\u002Fe2pdf-download.php:274\n #: classes\u002Fextension\u002Fe2pdf-formidable.php:254\n-#: classes\u002Fmodel\u002Fe2pdf-revision.php:205 classes\u002Fmodel\u002Fe2pdf-template.php:185\n-#: classes\u002Fmodel\u002Fe2pdf-template.php:825\n+#: classes\u002Fmodel\u002Fe2pdf-revision.php:205 classes\u002Fmodel\u002Fe2pdf-template.php:186\n+#: classes\u002Fmodel\u002Fe2pdf-template.php:889 classes\u002Fmodel\u002Fe2pdf-template.php:1040\n msgid \"(no title)\"\n msgstr \"\"\n \n@@ -341,7 +347,7 @@\n msgstr \"\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:2562\n-#: classes\u002Fhelper\u002Fe2pdf-helper.php:292 classes\u002Fmodel\u002Fe2pdf-loader.php:439\n+#: classes\u002Fhelper\u002Fe2pdf-helper.php:293 classes\u002Fmodel\u002Fe2pdf-loader.php:478\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:44 classes\u002Fview\u002Fpage-e2pdf-settings.php:7\n msgid \"Settings\"\n msgstr \"\"\n@@ -352,80 +358,78 @@\n \n #: classes\u002Fcontroller\u002Fe2pdf.php:75\n #, php-format\n-msgid \"The Bulk PDFs creation is not available with Free License Type. Check \u003Ca target='_blank' href='%s'>%s\u003C\u002Fa> for upgrade options\"\n+msgid \"Bulk PDF generation is not available with the Free License Type. Please visit \u003Ca target='_blank' href='%s'>%s\u003C\u002Fa> for upgrade options\"\n msgstr \"\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:337\n+#: classes\u002Fcontroller\u002Fe2pdf.php:344\n msgid \"Incorrect Dataset\"\n msgstr \"\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:341\n+#: classes\u002Fcontroller\u002Fe2pdf.php:348\n msgid \"Template can't be loaded\"\n msgstr \"\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:521\n+#: classes\u002Fcontroller\u002Fe2pdf.php:546\n msgid \"Delete All Datasets\"\n msgstr \"\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:531\n+#: classes\u002Fcontroller\u002Fe2pdf.php:556\n msgid \"Edit Template\"\n msgstr \"\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:613\n+#: classes\u002Fcontroller\u002Fe2pdf.php:639\n msgid \"View Dataset\"\n msgstr \"\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:616\n+#: classes\u002Fcontroller\u002Fe2pdf.php:642\n msgid \"Delete Dataset\"\n msgstr \"\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:662\n+#: classes\u002Fcontroller\u002Fe2pdf.php:688\n msgid \"Dataset can't be removed!\"\n msgstr \"\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:694\n+#: classes\u002Fcontroller\u002Fe2pdf.php:720\n msgid \"Datasets can't be removed!\"\n msgstr \"\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:712\n-#, php-format\n-msgid \"The Bulk PDFs generation is not available with Free License Type. Check \u003Ca target='_blank' href='%s'>%s\u003C\u002Fa> for upgrade options\"\n+#: classes\u002Fcontroller\u002Fe2pdf.php:738\n+msgid \"Bulk PDF generation is not available with the Free License Type. Please visit https:\u002F\u002Fe2pdf.com\u002Fprice for upgrade options\"\n msgstr \"\"\n \n-#: classes\u002Fcontroller\u002Ffrontend\u002Fe2pdf-download.php:141\n+#: classes\u002Fcontroller\u002Ffrontend\u002Fe2pdf-download.php:169\n msgid \"Access Denied!\"\n msgstr \"\"\n \n #: classes\u002Fextension\u002Fe2pdf-caldera.php:376\n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:3347\n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:822\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:3364\n #, php-format\n msgid \"Success. [e2pdf-download id=\\\"%s\\\"]\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-caldera.php:611 classes\u002Fextension\u002Fe2pdf-divi.php:935\n-#: classes\u002Fextension\u002Fe2pdf-elementor.php:505\n-#: classes\u002Fextension\u002Fe2pdf-everest.php:268\n-#: classes\u002Fextension\u002Fe2pdf-fluent.php:1404\n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:3525\n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:894\n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1840\n-#: classes\u002Fextension\u002Fe2pdf-jetformbuilder.php:604\n+#: classes\u002Fextension\u002Fe2pdf-caldera.php:611 classes\u002Fextension\u002Fe2pdf-divi.php:937\n+#: classes\u002Fextension\u002Fe2pdf-elementor.php:458\n+#: classes\u002Fextension\u002Fe2pdf-everest.php:283\n+#: classes\u002Fextension\u002Fe2pdf-fluent.php:1486\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:3544\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:824\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1697\n+#: classes\u002Fextension\u002Fe2pdf-jetformbuilder.php:615\n #: classes\u002Fextension\u002Fe2pdf-wpcf7.php:653\n-#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1167\n+#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1267\n msgid \"The form source is empty or doesn't exist\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-caldera.php:613 classes\u002Fextension\u002Fe2pdf-divi.php:937\n-#: classes\u002Fextension\u002Fe2pdf-elementor.php:507\n-#: classes\u002Fextension\u002Fe2pdf-everest.php:270\n-#: classes\u002Fextension\u002Fe2pdf-fluent.php:1406\n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:3527\n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:896\n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1842\n-#: classes\u002Fextension\u002Fe2pdf-jetformbuilder.php:606\n+#: classes\u002Fextension\u002Fe2pdf-caldera.php:613 classes\u002Fextension\u002Fe2pdf-divi.php:939\n+#: classes\u002Fextension\u002Fe2pdf-elementor.php:460\n+#: classes\u002Fextension\u002Fe2pdf-everest.php:285\n+#: classes\u002Fextension\u002Fe2pdf-fluent.php:1488\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:3546\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:826\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1699\n+#: classes\u002Fextension\u002Fe2pdf-jetformbuilder.php:617\n #: classes\u002Fextension\u002Fe2pdf-wpcf7.php:655\n-#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1169\n+#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1269\n msgid \"The form could not be parsed due the incorrect HTML\"\n msgstr \"\"\n \n@@ -433,99 +437,104 @@\n msgid \" (child)\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1107\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1124\n msgid \"Auto PDF and Visual Mapper\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1113\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1130\n msgid \"Use Field Keys instead Field IDs\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1116\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1133\n msgid \"Filter\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1122\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1139\n msgid \"Disable Filter\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1158\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1175\n msgid \"Force shortcodes to use\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1164\n-#: classes\u002Fextension\u002Fe2pdf-metform.php:1159 classes\u002Fmodel\u002Fe2pdf-loader.php:613\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1181\n+#: classes\u002Fextension\u002Fe2pdf-metform.php:1212 classes\u002Fmodel\u002Fe2pdf-loader.php:648\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:122\n msgid \"None\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1165\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1182\n msgid \"Fields IDs\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1166\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1183\n msgid \"Field Keys\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:3491\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:3510\n msgid \"Child form doesn't support Visual Mapper\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:3653\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:3672\n msgid \"File Upload\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:4124\n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:4156\n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:2659\n-#: classes\u002Fextension\u002Fe2pdf-jetformbuilder.php:1255\n-#: classes\u002Fextension\u002Fe2pdf-metform.php:1124\n-#: classes\u002Fextension\u002Fe2pdf-metform.php:1167\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3588\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3652\n-#: classes\u002Fextension\u002Fe2pdf-wordpress.php:1331\n-#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1312\n-#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1348\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:4143\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:4185\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:2527\n+#: classes\u002Fextension\u002Fe2pdf-jetformbuilder.php:1285\n+#: classes\u002Fextension\u002Fe2pdf-metform.php:1166\n+#: classes\u002Fextension\u002Fe2pdf-metform.php:1221\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3574\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3658\n+#: classes\u002Fextension\u002Fe2pdf-wordpress.php:1466\n+#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1417\n+#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1464\n msgid \"E2Pdf Actions\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:824\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:755\n+#, php-format\n+msgid \"Success. [e2pdf-download id=\\\"%d\\\"]\"\n+msgstr \"\"\n+\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:757\n msgid \"Send Message\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:826\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:759\n msgid \"Error: Your form is not valid, please fix the errors!\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:855\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:785\n msgid \"Form could not be found\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:1926\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:1852\n msgid \"Custom Fields\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1145 classes\u002Fmodel\u002Fe2pdf-loader.php:618\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:492\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:500\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1052 classes\u002Fmodel\u002Fe2pdf-loader.php:653\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:485\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:493\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:79\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:207\n msgid \"Title\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1189\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1092\n msgid \"Caption\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1233\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1132\n msgid \"Description\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1631\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1491\n msgid \"Default Confirmation\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1635\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1495\n #, php-format\n msgid \"Thanks for contacting us! We will get in touch with you shortly. [e2pdf-download id=\\\"%d\\\"]\"\n msgstr \"\"\n@@ -534,70 +543,70 @@\n msgid \"Cart \u002F Checkout\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2468\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3370\n msgid \"User Order List\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2469\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2493\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2531\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2549\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2583\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2620\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:11\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3371\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3395\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3433\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3451\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3484\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3520\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:10\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:386\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:477 classes\u002Fview\u002Fpage-e2pdf.php:37\n-#: classes\u002Fview\u002Fpage-e2pdf.php:270 classes\u002Fview\u002Fpage-e2pdf.php:477\n+#: classes\u002Fview\u002Fpage-e2pdf.php:271 classes\u002Fview\u002Fpage-e2pdf.php:479\n msgid \"Template\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2477\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2501\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2602\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2628\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3379\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3403\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3503\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3528\n msgid \"Order Status\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2483\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2521\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2539\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2568\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2608\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3385\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3423\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3441\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3470\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3509\n msgid \"Priority\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2492\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3394\n msgid \"User Order Details\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2507\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2557\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2591\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3409\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3459\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3492\n msgid \"Hook\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2530\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3432\n msgid \"User Cart\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2548\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3450\n msgid \"User Checkout\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2582\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3483\n msgid \"Admin Order List\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2619\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3519\n msgid \"Admin Order Details\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2662\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:603\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3561\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:638\n msgid \"Any\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-wordpress.php:228\n+#: classes\u002Fextension\u002Fe2pdf-wordpress.php:213\n msgid \"Users\"\n msgstr \"\"\n \n@@ -606,36 +615,36 @@\n msgid \"Signature\"\n msgstr \"\"\n \n-#: classes\u002Fextension\u002Fe2pdf-wpcf7.php:1447\n+#: classes\u002Fextension\u002Fe2pdf-wpcf7.php:1457\n msgid \"Storing Engine\"\n msgstr \"\"\n \n-#: classes\u002Fhelper\u002Fe2pdf-db.php:660 classes\u002Fhelper\u002Fe2pdf-db.php:718\n-#: classes\u002Fhelper\u002Fe2pdf-db.php:739 classes\u002Fhelper\u002Fe2pdf-db.php:751\n-#: classes\u002Fhelper\u002Fe2pdf-db.php:771\n+#: classes\u002Fhelper\u002Fe2pdf-db.php:718 classes\u002Fhelper\u002Fe2pdf-db.php:776\n+#: classes\u002Fhelper\u002Fe2pdf-db.php:797 classes\u002Fhelper\u002Fe2pdf-db.php:809\n+#: classes\u002Fhelper\u002Fe2pdf-db.php:829\n msgid \"Undefined\"\n msgstr \"\"\n \n-#: classes\u002Fhelper\u002Fe2pdf-helper.php:284 classes\u002Fmodel\u002Fe2pdf-loader.php:436\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:523\n+#: classes\u002Fhelper\u002Fe2pdf-helper.php:285 classes\u002Fmodel\u002Fe2pdf-loader.php:475\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:558\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:67\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:129 classes\u002Fview\u002Fpage-e2pdf.php:7\n-#: classes\u002Fview\u002Fpage-e2pdf.php:11 classes\u002Fview\u002Fpage-e2pdf.php:260\n+#: classes\u002Fview\u002Fpage-e2pdf.php:11 classes\u002Fview\u002Fpage-e2pdf.php:261\n msgid \"Create PDF\"\n msgstr \"\"\n \n-#: classes\u002Fhelper\u002Fe2pdf-helper.php:288 classes\u002Fmodel\u002Fe2pdf-loader.php:437\n+#: classes\u002Fhelper\u002Fe2pdf-helper.php:289 classes\u002Fmodel\u002Fe2pdf-loader.php:476\n #: classes\u002Fview\u002Fpage-e2pdf-license.php:51\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:14\n msgid \"Templates\"\n msgstr \"\"\n \n-#: classes\u002Fhelper\u002Fe2pdf-helper.php:296 classes\u002Fmodel\u002Fe2pdf-loader.php:440\n+#: classes\u002Fhelper\u002Fe2pdf-helper.php:297 classes\u002Fmodel\u002Fe2pdf-loader.php:479\n #: classes\u002Fview\u002Fpage-e2pdf-license.php:7 classes\u002Fview\u002Fpage-e2pdf-license.php:11\n msgid \"License\"\n msgstr \"\"\n \n-#: classes\u002Fhelper\u002Fe2pdf-helper.php:300 classes\u002Fmodel\u002Fe2pdf-loader.php:442\n+#: classes\u002Fhelper\u002Fe2pdf-helper.php:301 classes\u002Fmodel\u002Fe2pdf-loader.php:481\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:7 classes\u002Fview\u002Fpage-e2pdf-debug.php:11\n msgid \"Debug\"\n msgstr \"\"\n@@ -652,242 +661,242 @@\n msgid \"Access Token is not set or Incorrect\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:292\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:331\n msgid \"E2Pdf Bulk Export Interval\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:438\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:477\n #: classes\u002Fview\u002Fpage-e2pdf-integrations.php:7\n msgid \"Integrations\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:496\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:531\n msgid \"Page will be removed! Continue?\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:497\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:532\n msgid \"Font will be removed! Continue?\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:498\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:533\n msgid \"Changes will not be saved! Continue?\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:499\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:534\n msgid \"Saved Template will be overwritten! Continue?\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:500\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:535\n msgid \"All pages will be removed! Continue?\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:501\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:536\n msgid \"Adding new pages not available in \\\"Uploaded PDF\\\"\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:502\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:537\n msgid \"Dataset will be removed! Continue?\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:503\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:538\n msgid \"All datasets will be removed! Continue?\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:504\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:539\n msgid \"WARNING: Template has changes after last save! Changes will be lost! Continue?\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:505\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:540\n msgid \"Element will be removed! Continue?\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:506\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:541\n msgid \"Elements will be removed! Continue?\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:507\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:542\n msgid \"Action will be removed! Continue?\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:508\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:543\n msgid \"Condition will be removed! Continue?\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:509\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:544\n msgid \"All Field Values will be overwritten! Continue?\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:510\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:545\n msgid \"Website will be forced to use \\\"FREE\\\" License Key! Continue?\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:511\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:546\n msgid \"Not Available in Revision Edit Mode\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:512\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:547\n msgid \"The WYSIWYG editor is disabled for this HTML object\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:513\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:548\n msgid \"WYSIWYG can only be applied within HTML elements\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:514\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:549\n msgid \"Only single-page PDFs are allowed with the \\\"FREE\\\" license type\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:515\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:550\n msgid \"Last condition can't be removed\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:516\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:551\n msgid \"In Progress...\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:517 classes\u002Fview\u002Fpage-e2pdf-templates.php:36\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:552 classes\u002Fview\u002Fpage-e2pdf-templates.php:36\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:121\n msgid \"Delete\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:518 classes\u002Fmodel\u002Fe2pdf-loader.php:526\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:553 classes\u002Fmodel\u002Fe2pdf-loader.php:561\n msgid \"Properties\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:519 classes\u002Fview\u002Fpage-e2pdf-license.php:30\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:554 classes\u002Fview\u002Fpage-e2pdf-license.php:30\n #: classes\u002Fview\u002Fpage-e2pdf-license.php:38\n msgid \"License Key\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:520\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:555\n msgid \"Empty PDF\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:521\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:556\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:62\n msgid \"Upload PDF\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:522\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:557\n msgid \"Auto PDF\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:524 classes\u002Fview\u002Fpage-e2pdf-templates.php:470\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:559 classes\u002Fview\u002Fpage-e2pdf-templates.php:470\n msgid \"Extension\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:525\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:560\n msgid \"Size\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:527\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:562\n msgid \"Enter link here\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:528\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:563\n msgid \"Border\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:529\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:564\n msgid \"Background\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:530\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:110\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:565\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:109\n msgid \"Left\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:531\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:112\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:566\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:111\n msgid \"Right\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:532\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:567\n msgid \"Top\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:533\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:111\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:568\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:110\n msgid \"Center\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:534\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:569\n msgid \"Bottom\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:535\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:570\n msgid \"Justify\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:536 classes\u002Fmodel\u002Fe2pdf-loader.php:657\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:571 classes\u002Fmodel\u002Fe2pdf-loader.php:688\n msgid \"Border Color\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:537\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:572\n msgid \"Border Radius\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:538 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:106\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:81\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:573 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:106\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:80\n msgid \"Line Height\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:539\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:574\n msgid \"Width\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:540\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:575\n msgid \"Height\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:541\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:576\n msgid \"Value\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:542 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:80\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:29\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:577 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:80\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:34\n msgid \"Font\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:543\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:578\n msgid \"Option\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:544\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:579\n msgid \"Group\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:545 classes\u002Fview\u002Fpage-e2pdf-license.php:22\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:580 classes\u002Fview\u002Fpage-e2pdf-license.php:22\n msgid \"Type\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:546\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:581\n msgid \"Scale\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:547\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:582\n msgid \"Width&Height\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:548\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:583\n msgid \"Choose Image\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:550\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:585\n msgid \"PDF Upload\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:551\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:586\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:104\n msgid \"Global Actions\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:552\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:587\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:109\n msgid \"Global Properties\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:553\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:588\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:113\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:83\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:211\n@@ -895,1014 +904,998 @@\n msgid \"Connection\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:554\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:589\n msgid \"Map Field\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:555\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:590\n msgid \"Insert Mapped\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:556\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:591\n msgid \"Resize\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:557\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:592\n msgid \"Copy\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:558\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:593\n msgid \"Cut\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:559\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:594\n msgid \"Paste\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:560\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:595\n msgid \"Paste in Place\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:561 classes\u002Fview\u002Fblocks\u002Fbulk-actions.php:14\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:596 classes\u002Fview\u002Fblocks\u002Fbulk-actions.php:14\n msgid \"Apply\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:562\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:597\n msgid \"Dynamic Height\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:563\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:598\n msgid \"Multipage\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:564 classes\u002Fmodel\u002Fe2pdf-loader.php:667\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:98\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:599 classes\u002Fmodel\u002Fe2pdf-loader.php:698\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:97\n msgid \"Text Align\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:565\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:600\n msgid \"Read-Only\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:566\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:601\n msgid \"Multiline\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:567\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:602\n msgid \"Required\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:568\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:603\n msgid \"Page Options\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:569\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:604\n msgid \"Direction\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:570\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:605\n msgid \"Hide\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:571\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:606\n msgid \"Unhide\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:572 classes\u002Fview\u002Fpage-e2pdf.php:170\n-#: classes\u002Fview\u002Fpage-e2pdf.php:376\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:607 classes\u002Fview\u002Fpage-e2pdf.php:171\n+#: classes\u002Fview\u002Fpage-e2pdf.php:378\n msgid \"Password\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:573 classes\u002Fmodel\u002Fe2pdf-loader.php:591\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:608 classes\u002Fmodel\u002Fe2pdf-loader.php:626\n msgid \"Visual Mapper\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:574\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:609\n msgid \"Parent\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:576\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:611\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:131\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:175\n msgid \"Activated\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:577\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:612\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:133\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:177\n msgid \"Not Activated\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:578\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:613\n msgid \"Page ID\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:579\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:614\n msgid \"Page ID inside Upload PDF\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:580\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:615\n msgid \"Render Fields from Upload PDF\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:581\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:616\n msgid \"Delete created E2Pdf Fields\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:582\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:617\n msgid \"Keep Image Ratio\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:583\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:618\n msgid \"Keep Lower Size\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:584\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:619\n msgid \"Lock Aspect Ratio\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:585\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:620\n msgid \"Fill Image\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:586\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:621\n msgid \"Page\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:587\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:622\n msgid \"Resolution\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:588\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:623\n msgid \"Disable Text to Image\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:589\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:624\n msgid \"Confirmation Code\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:590\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:625\n msgid \"Code\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:592\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:627\n msgid \"Auto\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:593 classes\u002Fview\u002Fpage-e2pdf.php:479\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:628 classes\u002Fview\u002Fpage-e2pdf.php:481\n msgid \"Actions\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:594\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:629\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:166\n msgid \"Save\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:595\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:630\n msgid \"Horizontal Align\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:596\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:631\n msgid \"Vertical Align\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:597\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:632\n msgid \"Middle\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:598\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:633\n msgid \"Apply If\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:599\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:634\n msgid \"Action\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:600\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:635\n msgid \"Property\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:601\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:636\n msgid \"If\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:602\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:637\n msgid \"Condition\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:604 classes\u002Fview\u002Fblocks\u002Fsub-filters.php:9\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:639 classes\u002Fview\u002Fblocks\u002Fsub-filters.php:9\n msgid \"All\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:605 classes\u002Fmodel\u002Fe2pdf-loader.php:753\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:640 classes\u002Fmodel\u002Fe2pdf-loader.php:784\n msgid \"Sort\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:606\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:641\n msgid \"E-Signature\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:607\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:642\n msgid \"Contact\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:608\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:643\n msgid \"Location\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:609\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:644\n msgid \"Reason\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:610\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:645\n msgid \"Placeholder\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:611\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:646\n msgid \"Length\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:612\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:647\n msgid \"Comb\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:614\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:649\n msgid \"Highlight\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:615\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:650\n msgid \"Invert\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:616\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:651\n msgid \"Outline\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:617\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:652\n msgid \"Push\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:619\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:654\n msgid \"Status\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:620\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:655\n msgid \"Add Action\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:621\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:656\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:11\n-#: classes\u002Fview\u002Fpage-e2pdf-templates.php:148 classes\u002Fview\u002Fpage-e2pdf.php:135\n+#: classes\u002Fview\u002Fpage-e2pdf-templates.php:148 classes\u002Fview\u002Fpage-e2pdf.php:136\n msgid \"Shortcodes\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:622\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:657\n msgid \"Labels\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:623\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:658\n msgid \"Field Values\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:624\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:659\n msgid \"Field Names\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:625\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:660\n msgid \"Field Name\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:626\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:661\n msgid \"As Field Name\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:627\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:662\n msgid \"Confirm\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:628\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:663\n msgid \"Cancel\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:629\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:664\n msgid \"Hide (If Empty)\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:630\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:665\n msgid \"Hide Page (If Empty)\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:631\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:666\n msgid \"Replace Value\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:632\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:667\n msgid \"Auto-Close\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:633\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:668\n msgid \"New Lines to BR\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:634\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:669\n msgid \"Disable WYSIWYG Editor\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:635\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:670\n msgid \"CSS Priority\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:636\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:671\n msgid \"CSS Style\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:637\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:672\n msgid \"Enabling WYSIWYG can affect \\\"HTML\\\" Source\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:638\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:673\n msgid \"Hidden Fields\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:639\n-msgid \"Enable PDF Access By URL\"\n-msgstr \"\"\n-\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:640\n-msgid \"Disable PDF Access By URL\"\n-msgstr \"\"\n-\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:641\n-msgid \"Enable Shortcodes\"\n-msgstr \"\"\n-\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:642\n-msgid \"Disable Shortcodes\"\n-msgstr \"\"\n-\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:643\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:674\n msgid \"Error Message\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:644\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:675\n msgid \"Redirect URL\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:645\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:676\n msgid \"Element\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:646\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:677\n msgid \"Elements\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:647\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:678\n msgid \"Position Top\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:648\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:679\n msgid \"Position Left\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:649\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:680\n msgid \"Padding Top\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:650\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:681\n msgid \"Padding Bottom\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:651\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:682\n msgid \"Padding Left\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:652\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:683\n msgid \"Padding Right\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:653\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:684\n msgid \"Margin Top\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:654\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:685\n msgid \"Margin Bottom\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:655\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:686\n msgid \"Margin Left\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:656\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:687\n msgid \"Margin Right\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:658\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:689\n msgid \"Border Top\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:659\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:690\n msgid \"Border Bottom\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:660\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:691\n msgid \"Border Left\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:661\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:692\n msgid \"Border Right\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:662\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:693\n msgid \"Field\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:663\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:9\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:694\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:8\n msgid \"Style\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:664\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:695\n msgid \"Lock \u002F Hide\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:665\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:139\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:696\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:138\n msgid \"Font Color\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:666 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:93\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:697 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:93\n msgid \"Font Size\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:668\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:699\n msgid \"Rotation\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:669\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:700\n msgid \"Preg Replace Pattern\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:670\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:701\n msgid \"Preg Replace Replacement\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:671\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:702\n msgid \"Preg Match All Pattern\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:672\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:703\n msgid \"Preg Match All Output\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:673\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:704\n msgid \"Preg Filters\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:674\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:705\n msgid \"Char Spacing\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:675 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:34\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:706 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:34\n msgid \"Color\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:676\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:707\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_builder.php:43\n msgid \"QR Code\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:677\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:708\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_builder.php:45\n msgid \"Barcode\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:678 classes\u002Fmodel\u002Fe2pdf-loader.php:704\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:238\n-#: classes\u002Fview\u002Fpage-e2pdf.php:216 classes\u002Fview\u002Fpage-e2pdf.php:423\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:709 classes\u002Fmodel\u002Fe2pdf-loader.php:735\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:237\n+#: classes\u002Fview\u002Fpage-e2pdf.php:217 classes\u002Fview\u002Fpage-e2pdf.php:425\n msgid \"Format\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:679\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:710\n msgid \"Precision\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:680\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:711\n msgid \"L - Smallest\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:681\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:712\n msgid \"M - Medium\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:682\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:713\n msgid \"Q - High\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:683\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:714\n msgid \"H - Best\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:684\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:715\n msgid \"All Templates for this Website will be deactivated! Continue?\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:685\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:716\n msgid \"Pre-uploaded PDF will be removed from E2Pdf Template! Continue?\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:686\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:717\n msgid \"Quiet Zone Size\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:687\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:718\n msgid \"Hide Label\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:688\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:719\n msgid \"Lock\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:689\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:41\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:720\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:40\n msgid \"Unlock\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:690\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:721\n msgid \"Opacity\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:691\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:722\n msgid \"Auto Font Size\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:692 classes\u002Fview\u002Fpage-e2pdf-settings.php:33\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:723 classes\u002Fview\u002Fpage-e2pdf-settings.php:38\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:389\n msgid \"Max Upload File Size\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:693\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:724\n msgid \"The bulk export task will be removed! Continue?\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:694\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:725\n msgid \"The bulk export task will be stopped! Continue?\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:695\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:726\n msgid \"The bulk export task will be started! Continue?\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:696 classes\u002Fview\u002Fpage-e2pdf-templates.php:25\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:727 classes\u002Fview\u002Fpage-e2pdf-templates.php:25\n msgid \"Search...\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:697\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:728\n msgid \"Show Element\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:698\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:729\n msgid \"Hide Element\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:699\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:730\n msgid \"Show Page\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:700\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:731\n msgid \"Hide Page\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:701\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:732\n msgid \"Change to\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:702\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:733\n msgid \"Merge\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:703\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:734\n msgid \"Change Property\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:705\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:736\n msgid \"Insert Before\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:706\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:737\n msgid \"Insert After\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:707\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:738\n msgid \"Full Replacement\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:708\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:739\n msgid \"Search \u002F Replace\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:709\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:740\n msgid \"Contains\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:710\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:741\n msgid \"Not Contains\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:711\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:742\n msgid \"In Array\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:712\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:743\n msgid \"Array Key Exists\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:713\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:744\n msgid \"Else\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:714\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:745\n msgid \"Append\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:715\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:746\n msgid \"Vertical\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:716\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:747\n msgid \"Horizontal\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:717\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:748\n msgid \"Palette\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:718\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:749\n msgid \"Line \u002F Stroke Color\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:719\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:750\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_builder.php:47\n msgid \"Graph\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:720\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:751\n msgid \"Markers\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:721\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:752\n msgid \"Grid\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:722\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:753\n msgid \"Axis\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:723\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:754\n msgid \"Legend\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:724 classes\u002Fview\u002Fpage-e2pdf-debug.php:220\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:755 classes\u002Fview\u002Fpage-e2pdf-debug.php:233\n msgid \"Structure\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:725\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:756\n msgid \"Space\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:726\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:757\n msgid \"Position\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:727\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:758\n msgid \"Vertical Label\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:728\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:759\n msgid \"Horizontal Label\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:729\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:760\n msgid \"Label\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:730\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:761\n msgid \"Axis Overlap\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:731\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:762\n msgid \"Grid Spacing\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:732\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:763\n msgid \"Grid Spacing (V)\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:733\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:764\n msgid \"Grid Spacing (H)\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:734\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:765\n msgid \"Grid Division (V)\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:735\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:766\n msgid \"Grid Division (H)\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:736\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:767\n msgid \"Axis Color\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:737\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:768\n msgid \"Grid Color\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:738\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:769\n msgid \"Bar Label Color\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:739\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:770\n msgid \"Position (V)\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:740\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:771\n msgid \"Position (H)\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:741\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:772\n msgid \"Bar Labels\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:742\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:773\n msgid \"Marker\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:743\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:774\n msgid \"Grid Subdivision Color\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:744\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:775\n msgid \"Sub Divisions\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:745\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:776\n msgid \"Axis (V)\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:746\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:777\n msgid \"Axis (H)\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:747\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:778\n msgid \"Text\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:748\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:779\n msgid \"Enable\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:749\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:780\n msgid \"Min\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:750\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:781\n msgid \"Max\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:751\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:782\n msgid \"Fill Under\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:752\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:783\n msgid \"Reverse\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:754\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:785\n msgid \"Percentage\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:755\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:786\n msgid \"Legend Text Side\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:756\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:787\n msgid \"Columns\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:757\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:788\n msgid \"Padding (X)\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:758\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:789\n msgid \"Padding (Y)\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:759\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:790\n msgid \"Stroke Color\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:760\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:791\n msgid \"Stroke Width\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:761\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:792\n msgid \"Bubble Scale\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:762\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:793\n msgid \"Units\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:763\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:794\n msgid \"Increment\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:764\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:795\n msgid \"Stack Group\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:765\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:796\n msgid \"Line Dataset\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:766\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:797\n msgid \"Project Angle\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:767\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:798\n msgid \"Legends\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:768\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:799\n msgid \"Colors\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:769\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:800\n msgid \"Line Curve\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:770\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:801\n msgid \"Margin (H)\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:771\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:802\n msgid \"Margin (V)\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:772\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:803\n msgid \"Units Label\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:773\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:804\n msgid \"Dynamic Line \u002F Stroke Color\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:774\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:805\n msgid \"Dynamic Marker Color\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:775\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:806\n msgid \"Inner\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:776\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:807\n msgid \"Outer\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:777\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:808\n msgid \"Align\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:778\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:809\n msgid \"Offset (X)\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:779\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:810\n msgid \"Offset (Y)\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:780\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:811\n msgid \"Link URL\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:781\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:812\n msgid \"Link Type\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:782\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:813\n msgid \"Link Label\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:783\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:814\n msgid \"Url\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:784\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:815\n msgid \"Attachment\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:785\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:816\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_builder.php:37\n msgid \"Image\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:786\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:817\n msgid \"Media Library\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:787 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:44\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:818 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:44\n msgid \"Underline\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:788\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:819\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_builder.php:49\n msgid \"Page Number\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:789\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:820\n msgid \"Adjust Page Number\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:790\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:821\n msgid \"Adjust Page Total\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:791\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:822\n msgid \"Preload Images\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:792\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:823\n msgid \"Hooks\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:793\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:824\n msgid \"Display PDF download at\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:794\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:825\n msgid \"Optimization\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:795\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:826\n msgid \"Inherit\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:796\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:402\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:827\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:397\n msgid \"Not Optimized\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:797\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:403\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:828\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:398\n msgid \"Low Quality\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:798\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:404\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:829\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:399\n msgid \"Basic Quality\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:799\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:405\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:830\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:400\n msgid \"Good Quality\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:800\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:406\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:831\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:401\n msgid \"Best Quality\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:801\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:407\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:832\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:402\n msgid \"Ultra Quality\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:802\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:833\n msgid \"Error: Empty \\\"if\\\" and \\\"value\\\" detected in action condition\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:803\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:834\n msgid \"No Read-Only\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:804\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:835\n msgid \"No Border\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:805\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:836\n msgid \"Quick Props\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:844\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:875\n #, php-format\n msgid \"E2Pdf requires PHP version 5.4 or later. Your PHP version is %s\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:865\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:900\n msgid \"Templates per page\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:981\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:1016\n #, php-format\n msgid \"Can't create folder %s\"\n msgstr \"\"\n@@ -1941,246 +1934,245 @@\n msgid \"Restore License Key\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:84 classes\u002Fmodel\u002Fe2pdf-options.php:282\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:87 classes\u002Fmodel\u002Fe2pdf-options.php:285\n msgid \"Enabled\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:88 classes\u002Fmodel\u002Fe2pdf-options.php:281\n-#: classes\u002Fmodel\u002Fe2pdf-options.php:292\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:91 classes\u002Fmodel\u002Fe2pdf-options.php:284\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:295\n msgid \"Disabled\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:94 classes\u002Fmodel\u002Fe2pdf-options.php:735\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:97 classes\u002Fmodel\u002Fe2pdf-options.php:797\n msgid \"Extensions\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:140 classes\u002Fview\u002Fpage-e2pdf-debug.php:37\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:143 classes\u002Fview\u002Fpage-e2pdf-debug.php:37\n msgid \"Common\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:143 classes\u002Fmodel\u002Fe2pdf-options.php:148\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:146 classes\u002Fmodel\u002Fe2pdf-options.php:151\n msgid \"E2Pdf.com Account E-mail Address\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:151 classes\u002Fmodel\u002Fe2pdf-options.php:159\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:154 classes\u002Fmodel\u002Fe2pdf-options.php:162\n msgid \"API Server\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:172\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:175\n msgid \"API Connection Timout (sec)\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:181 classes\u002Fview\u002Fpage-e2pdf-debug.php:45\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:184 classes\u002Fview\u002Fpage-e2pdf-debug.php:45\n msgid \"PDF Processor\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:189\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:443\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:192\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:438\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:46\n msgid \"Font Processor\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:200\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:203\n msgid \"Release Candidate Builds\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:206\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:209\n msgid \"Update from E2Pdf.com\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:209\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:212\n msgid \"URL Format\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:220 classes\u002Fmodel\u002Fe2pdf-options.php:226\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:223 classes\u002Fmodel\u002Fe2pdf-options.php:229\n msgid \"URL Rewrite\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:239 classes\u002Fview\u002Fpage-e2pdf-settings.php:123\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:242 classes\u002Fview\u002Fpage-e2pdf-settings.php:128\n msgid \"Cache\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:245\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:248\n msgid \"Objects Cache\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:254\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:257\n msgid \"Fonts Cache\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:263\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:266\n msgid \"PDFs Cache\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:272\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:275\n msgid \"TTL (sec)\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:275\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:278\n msgid \"PDF Ajax Loader\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:286\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:289\n msgid \"Fallback PDF Viewer\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:303\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:306\n msgid \"Fix Chrome iOS Download Name (might be not compatible with certain setups)\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:306 classes\u002Fmodel\u002Fe2pdf-options.php:312\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:309 classes\u002Fmodel\u002Fe2pdf-options.php:315\n msgid \"New Edit Layout\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:315 classes\u002Fmodel\u002Fe2pdf-options.php:321\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:318 classes\u002Fmodel\u002Fe2pdf-options.php:324\n msgid \"Hide Warnings\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:324\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:327\n msgid \"Local Images\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:330\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:333\n msgid \"Load via Remote Request\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:333\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:336\n msgid \"Images Timout (sec)\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:342\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:345\n msgid \"Bulk Export Interval (sec)\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:351\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:354\n msgid \"Undo Limit\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:360\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:363\n msgid \"Revisions Limit\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:369\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:372\n msgid \"Debug Mode\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:375\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:378\n msgid \"Enable Debug Mode\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:378 classes\u002Fmodel\u002Fe2pdf-options.php:383\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:381 classes\u002Fmodel\u002Fe2pdf-options.php:386\n #: classes\u002Fview\u002Fblocks\u002Fdebug-panel.php:10\n msgid \"Recovery Mode E-mail\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:386\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:389\n msgid \"Memory\u002FTime Usage\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:392\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:395\n msgid \"Show Memory\u002FTime Usage\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:397 classes\u002Fview\u002Fpage-e2pdf-debug.php:20\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:400 classes\u002Fview\u002Fpage-e2pdf-debug.php:20\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:190\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:100\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:105\n msgid \"Maintenance\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:402\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:405\n msgid \"Fonts\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:407\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:410\n msgid \"Permissions\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:460\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:452 classes\u002Fmodel\u002Fe2pdf-options.php:522\n msgid \"Authorized\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:743\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:811\n msgid \"Translation\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:747\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:815\n msgid \"PDF Translation\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:753\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:821\n msgid \"No Translation\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:754\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:822\n msgid \"Partial Translation\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:755\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:823\n msgid \"Full Translation\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:387 classes\u002Fmodel\u002Fe2pdf-shortcode.php:643\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:1204\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:1326\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:245 classes\u002Fmodel\u002Fe2pdf-shortcode.php:6796\n+#: classes\u002Fmodel\u002Fe2pdf-template.php:1044\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:127\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:462\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:543 classes\u002Fview\u002Fpage-e2pdf.php:28\n msgid \"Download\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5891\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6561\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5029\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5755\n msgid \"Product\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5894\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6564\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5032\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5758\n msgid \"SKU\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5897\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6567\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5035\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5761\n msgid \"Quantity\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5900\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6570\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5038\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5764\n msgid \"Price\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5903\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6573\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6649\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6885\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5041\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5767\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5833\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6069\n msgid \"Subtotal\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6667\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6903\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5851\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6087\n msgid \"Free shipping coupon\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6722\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6958\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5906\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6142\n msgid \"Shipping options will be updated during checkout.\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6800\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:7038\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5984\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6222\n #, php-format\n msgid \"estimated for %s\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6811\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:7049\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5995\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6233\n msgid \"Total\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-template.php:170\n+#: classes\u002Fmodel\u002Fe2pdf-template.php:171\n msgid \"Latest\"\n msgstr \"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-template.php:887\n+#: classes\u002Fmodel\u002Fe2pdf-template.php:951\n msgid \"Template Deactivated\"\n msgstr \"\"\n \n@@ -2224,8 +2216,8 @@\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:112 classes\u002Fview\u002Fpage-e2pdf-debug.php:114\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:123 classes\u002Fview\u002Fpage-e2pdf-debug.php:130\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:137 classes\u002Fview\u002Fpage-e2pdf-debug.php:144\n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:251 classes\u002Fview\u002Fpage-e2pdf-debug.php:260\n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:269\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:263 classes\u002Fview\u002Fpage-e2pdf-debug.php:272\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:281\n msgid \"[ERROR]\"\n msgstr \"\"\n \n@@ -2428,192 +2420,192 @@\n msgid \"Update\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:15\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:14\n msgid \"Meta\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:17\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:16\n msgid \"Security\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:26\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:25\n msgid \"Enter your E-mail to unlock this features\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:33\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:32\n msgid \"E-mail\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:49\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:48\n msgid \"Global Font\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:161\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:169\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:182\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:194\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:160\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:168\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:181\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:193\n msgid \"Dataset Title\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:204\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:212\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:203\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:211\n msgid \"Button Title\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:221\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:229\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:220\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:228\n msgid \"Dynamic PDF Source\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:258\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:257\n msgid \"JPG Output Resolution\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:285\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:284\n msgid \"Open PDF in Browser\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:300\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:299\n msgid \"Auto PDF Download\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:316\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:324\n-#: classes\u002Fview\u002Fpage-e2pdf.php:148 classes\u002Fview\u002Fpage-e2pdf.php:154\n-#: classes\u002Fview\u002Fpage-e2pdf.php:338 classes\u002Fview\u002Fpage-e2pdf.php:344\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:314\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:322\n+#: classes\u002Fview\u002Fpage-e2pdf.php:149 classes\u002Fview\u002Fpage-e2pdf.php:155\n+#: classes\u002Fview\u002Fpage-e2pdf.php:340 classes\u002Fview\u002Fpage-e2pdf.php:346\n msgid \"PDF Name\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:334\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:342\n-#: classes\u002Fview\u002Fpage-e2pdf.php:354 classes\u002Fview\u002Fpage-e2pdf.php:360\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:331\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:339\n+#: classes\u002Fview\u002Fpage-e2pdf.php:356 classes\u002Fview\u002Fpage-e2pdf.php:362\n msgid \"PDF Local Name\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:352\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:348\n msgid \"PDF Flatten\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:364\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:360\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:42 classes\u002Fview\u002Fpage-e2pdf-debug.php:43\n-#: classes\u002Fview\u002Fpage-e2pdf.php:206 classes\u002Fview\u002Fpage-e2pdf.php:413\n+#: classes\u002Fview\u002Fpage-e2pdf.php:207 classes\u002Fview\u002Fpage-e2pdf.php:415\n msgid \"No\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:365\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:361\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:42 classes\u002Fview\u002Fpage-e2pdf-debug.php:43\n-#: classes\u002Fview\u002Fpage-e2pdf.php:207 classes\u002Fview\u002Fpage-e2pdf.php:414\n+#: classes\u002Fview\u002Fpage-e2pdf.php:208 classes\u002Fview\u002Fpage-e2pdf.php:416\n msgid \"Yes\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:366\n-#: classes\u002Fview\u002Fpage-e2pdf.php:208 classes\u002Fview\u002Fpage-e2pdf.php:415\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:362\n+#: classes\u002Fview\u002Fpage-e2pdf.php:209 classes\u002Fview\u002Fpage-e2pdf.php:417\n msgid \"Full\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:378\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:373\n msgid \"Generate appearance\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:390\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:385\n msgid \"Images\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:414\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:409\n msgid \"Compression\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:426\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:421\n msgid \"Default\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:466\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:460\n msgid \"PDF Tab Order\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:477\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:471\n msgid \"Unspecified\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:478\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:472\n msgid \"Use Row Order\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:479\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:473\n msgid \"Use Column Order\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:480\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:474\n msgid \"Use Document Structure\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:510\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:518\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:503\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:511\n msgid \"Subject\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:528\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:536\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:521\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:529\n msgid \"Author\"\n msgstr \"\"\n \n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:538\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:546\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:554\n msgid \"Keywords\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:563\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:555\n msgid \"Lang Code\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:587\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:595\n-#: classes\u002Fview\u002Fpage-e2pdf.php:164 classes\u002Fview\u002Fpage-e2pdf.php:370\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:578\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:586\n+#: classes\u002Fview\u002Fpage-e2pdf.php:165 classes\u002Fview\u002Fpage-e2pdf.php:372\n msgid \"PDF Open Password\"\n msgstr \"\"\n \n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:596\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:605\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:614\n msgid \"Permissions Owner Password\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:623\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:614\n msgid \"Permissions (Opened with PDF Open Password)\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:632\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:623\n msgid \"Printing\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:641\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:632\n msgid \"Printing (Degraded)\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:650\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:641\n msgid \"Editing\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:659\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:650\n msgid \"Copying\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:668\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:659\n msgid \"Commenting\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:677\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:668\n msgid \"Fill-In or Signing\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:686\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:677\n msgid \"Document Assembly\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:695\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:686\n msgid \"Screen Reader Accessibility\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:12 classes\u002Fview\u002Fpage-e2pdf-debug.php:245\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:12 classes\u002Fview\u002Fpage-e2pdf-debug.php:257\n msgid \"Connections\"\n msgstr \"\"\n \n@@ -2622,13 +2614,13 @@\n msgstr \"\"\n \n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:25 classes\u002Fview\u002Fpage-e2pdf-debug.php:195\n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:206\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:105\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:116\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:128\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:139\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:150\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:162\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:207 classes\u002Fview\u002Fpage-e2pdf-debug.php:219\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:110\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:121\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:133\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:144\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:155\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:167\n msgid \"Are you sure want to continue?\"\n msgstr \"\"\n \n@@ -2700,19 +2692,19 @@\n msgid \"Plugins\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:215\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:228\n msgid \"* It is strongly RECOMMENDED that you backup your DB before any of these actions are applied to avoid data loss\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:252\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:264\n msgid \"Back-connection\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:261\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:273\n msgid \"Upload Speed\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:270\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:282\n msgid \"Download Speed\"\n msgstr \"\"\n \n@@ -2736,16 +2728,20 @@\n msgid \"Expire Date\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:27\n-msgid \"Upload Font\"\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:12\n+msgid \"It's recommended to use the Integration Hooks in the E2Pdf Template settings instead\"\n msgstr \"\"\n \n #: classes\u002Fview\u002Fpage-e2pdf-settings.php:32\n+msgid \"Upload Font\"\n+msgstr \"\"\n+\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:37\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:388\n msgid \"Allowed File Types\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:38\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:43\n msgid \"Upload\"\n msgstr \"\"\n \n@@ -2822,46 +2818,46 @@\n msgid \"Template Title\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:12 classes\u002Fview\u002Fpage-e2pdf.php:467\n-msgid \"Create PDFs in Bulk\"\n+#: classes\u002Fview\u002Fpage-e2pdf.php:12 classes\u002Fview\u002Fpage-e2pdf.php:469\n+msgid \"Bulk Create PDFs\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:63 classes\u002Fview\u002Fpage-e2pdf.php:296\n+#: classes\u002Fview\u002Fpage-e2pdf.php:64 classes\u002Fview\u002Fpage-e2pdf.php:298\n msgid \"Dataset\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:98\n+#: classes\u002Fview\u002Fpage-e2pdf.php:99\n msgid \"Dataset2\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:138\n+#: classes\u002Fview\u002Fpage-e2pdf.php:139\n msgid \"Shortcode for a Download Link with a Dynamic Dataset\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:142\n+#: classes\u002Fview\u002Fpage-e2pdf.php:143\n msgid \"Shortcode for a Download Link with the Current Dataset\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:180 classes\u002Fview\u002Fpage-e2pdf.php:386\n+#: classes\u002Fview\u002Fpage-e2pdf.php:181 classes\u002Fview\u002Fpage-e2pdf.php:388\n msgid \"User\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:196 classes\u002Fview\u002Fpage-e2pdf.php:403\n+#: classes\u002Fview\u002Fpage-e2pdf.php:197 classes\u002Fview\u002Fpage-e2pdf.php:405\n msgid \"Flatten\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:235 classes\u002Fview\u002Fpage-e2pdf.php:442\n+#: classes\u002Fview\u002Fpage-e2pdf.php:236 classes\u002Fview\u002Fpage-e2pdf.php:444\n msgid \"Arguments\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:306\n+#: classes\u002Fview\u002Fpage-e2pdf.php:308\n msgid \"Filter...\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:478\n+#: classes\u002Fview\u002Fpage-e2pdf.php:480\n msgid \"Progress\"\n msgstr \"\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:480\n+#: classes\u002Fview\u002Fpage-e2pdf.php:482\n msgid \"Created\"\n msgstr \"\"\nBinary files \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Flanguages\u002Fe2pdf-ru_RU.mo and \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Flanguages\u002Fe2pdf-ru_RU.mo differ\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Flanguages\u002Fe2pdf-ru_RU.po \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Flanguages\u002Fe2pdf-ru_RU.po\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Flanguages\u002Fe2pdf-ru_RU.po\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Flanguages\u002Fe2pdf-ru_RU.po\t2026-02-24 09:27:28.000000000 +0000\n@@ -1,8 +1,8 @@\n msgid \"\"\n msgstr \"\"\n \"Project-Id-Version: e2pdf\\n\"\n-\"POT-Creation-Date: 2025-04-22 17:10+0200\\n\"\n-\"PO-Revision-Date: 2025-04-22 17:10+0200\\n\"\n+\"POT-Creation-Date: 2025-08-29 13:16+0200\\n\"\n+\"PO-Revision-Date: 2025-08-29 13:16+0200\\n\"\n \"Last-Translator: Weblate Admin \u003Cadmin@example.com>\\n\"\n \"Language-Team: Russian \u003Chttps:\u002F\u002Flocalhost\u002Fprojects\u002Fe2pdf\u002Fe2pdf\u002Fru\u002F>\\n\"\n \"Language: ru_RU\\n\"\n@@ -19,7 +19,7 @@\n \"X-Poedit-SearchPathExcluded-0: assets\\n\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-debug.php:25 classes\u002Fcontroller\u002Fe2pdf-debug.php:51\n-#: classes\u002Fcontroller\u002Fe2pdf-debug.php:63\n+#: classes\u002Fcontroller\u002Fe2pdf-debug.php:55 classes\u002Fcontroller\u002Fe2pdf-debug.php:59\n #: classes\u002Fcontroller\u002Fe2pdf-integrations.php:23\n #: classes\u002Fcontroller\u002Fe2pdf-license.php:63\n #: classes\u002Fcontroller\u002Fe2pdf-license.php:112\n@@ -34,7 +34,7 @@\n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:253\n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:275\n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:315\n-#: classes\u002Fcontroller\u002Fe2pdf-settings.php:341\n+#: classes\u002Fcontroller\u002Fe2pdf-settings.php:340\n #, php-format\n msgid \"Success: %s\"\n msgstr \"Успех: %s\"\n@@ -47,7 +47,11 @@\n msgid \"Repair DB\"\n msgstr \"Исправление БД\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf-debug.php:63 classes\u002Fview\u002Fpage-e2pdf-debug.php:204\n+#: classes\u002Fcontroller\u002Fe2pdf-debug.php:55 classes\u002Fview\u002Fpage-e2pdf-debug.php:205\n+msgid \"Repair DB Collate\"\n+msgstr \"Восстановить DB Collate\"\n+\n+#: classes\u002Fcontroller\u002Fe2pdf-debug.php:59 classes\u002Fview\u002Fpage-e2pdf-debug.php:217\n msgid \"Reinitialize DB Hooks\"\n msgstr \"Реинициализация хуков БД\"\n \n@@ -56,16 +60,17 @@\n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:253\n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:275\n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:315\n-#: classes\u002Fcontroller\u002Fe2pdf-settings.php:341\n+#: classes\u002Fcontroller\u002Fe2pdf-settings.php:340\n msgid \"Settings Saved\"\n msgstr \"Настройки сохранены\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-integrations.php:45\n-#: classes\u002Fmodel\u002Fe2pdf-options.php:460\n+#: classes\u002Fcontroller\u002Fe2pdf-integrations.php:103\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:452 classes\u002Fmodel\u002Fe2pdf-options.php:522\n msgid \"Not Authorized\"\n msgstr \"Не авторизировано\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf-integrations.php:72\n+#: classes\u002Fcontroller\u002Fe2pdf-integrations.php:70\n msgid \"App Authorized\"\n msgstr \"Успешно авторизировано\"\n \n@@ -100,32 +105,32 @@\n \"зарегистрироваться на %s\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:98\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:126\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:131\n msgid \"Purge Objects Cache\"\n msgstr \"Очистить кэш объектов\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:109\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:137\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:142\n msgid \"Purge Fonts Cache\"\n msgstr \"Очистить кэш шрифтов\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:120\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:148\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:153\n msgid \"Purge PDFs Cache\"\n msgstr \"Очистить PDF кэш\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:131\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:160\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:165\n msgid \"Purge Full Cache\"\n msgstr \"Очистить весь кэш\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:143\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:103\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:108\n msgid \"Optimize DB\"\n msgstr \"Оптимизировать БД\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:154\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:114\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:119\n msgid \"Clear Recovery Mode Limit\"\n msgstr \"Очистить лимит Recovery Mode\"\n \n@@ -167,16 +172,16 @@\n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:1571\n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:1781\n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:2039\n-#: classes\u002Fcontroller\u002Fe2pdf-templates.php:2055 classes\u002Fcontroller\u002Fe2pdf.php:708\n-#: classes\u002Fcontroller\u002Ffrontend\u002Fe2pdf-download.php:304\n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:863\n+#: classes\u002Fcontroller\u002Fe2pdf-templates.php:2055 classes\u002Fcontroller\u002Fe2pdf.php:734\n+#: classes\u002Fcontroller\u002Ffrontend\u002Fe2pdf-download.php:347\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:793\n #: classes\u002Fmodel\u002Fe2pdf-adobesign.php:127 classes\u002Fmodel\u002Fe2pdf-adobesign.php:208\n-#: classes\u002Fmodel\u002Fe2pdf-api.php:111 classes\u002Fmodel\u002Fe2pdf-template.php:768\n-#: classes\u002Fmodel\u002Fe2pdf-template.php:877 classes\u002Fmodel\u002Fe2pdf-template.php:911\n+#: classes\u002Fmodel\u002Fe2pdf-api.php:111 classes\u002Fmodel\u002Fe2pdf-template.php:832\n+#: classes\u002Fmodel\u002Fe2pdf-template.php:941 classes\u002Fmodel\u002Fe2pdf-template.php:975\n msgid \"Something went wrong!\"\n msgstr \"Возникла непредвиденная ошибка!\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf-settings.php:380\n+#: classes\u002Fcontroller\u002Fe2pdf-settings.php:379\n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:78\n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:465\n #, php-format\n@@ -228,9 +233,9 @@\n \"target=\\\"_blank\\\" href=\\\"%3$s\\\">Редактировать\u003C\u002Fa>\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:849\n-#: classes\u002Fcontroller\u002Fe2pdf-templates.php:1108 classes\u002Fcontroller\u002Fe2pdf.php:716\n-#: classes\u002Fmodel\u002Fe2pdf-extension.php:250 classes\u002Fmodel\u002Fe2pdf-extension.php:254\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:851\n+#: classes\u002Fcontroller\u002Fe2pdf-templates.php:1108 classes\u002Fcontroller\u002Fe2pdf.php:742\n+#: classes\u002Fmodel\u002Fe2pdf-extension.php:255 classes\u002Fmodel\u002Fe2pdf-extension.php:259\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:882\n #, php-format\n msgid \"The PHP %s extension is required\"\n msgstr \"Требуется расширения PHP %s\"\n@@ -260,7 +265,7 @@\n msgstr \"Импортировать подключение\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:1119\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:549\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:584\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:40\n msgid \"Options\"\n msgstr \"Опции\"\n@@ -291,14 +296,14 @@\n msgstr \"Авто Форма из PDF\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:1289 classes\u002Fcontroller\u002Fe2pdf.php:45\n-#: classes\u002Fcontroller\u002Fe2pdf.php:87 classes\u002Fcontroller\u002Fe2pdf.php:445\n-#: classes\u002Fcontroller\u002Fe2pdf.php:468\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2442\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2452\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:575 classes\u002Fview\u002Fpage-e2pdf.php:53\n-#: classes\u002Fview\u002Fpage-e2pdf.php:76 classes\u002Fview\u002Fpage-e2pdf.php:85\n-#: classes\u002Fview\u002Fpage-e2pdf.php:111 classes\u002Fview\u002Fpage-e2pdf.php:118\n-#: classes\u002Fview\u002Fpage-e2pdf.php:286 classes\u002Fview\u002Fpage-e2pdf.php:322\n+#: classes\u002Fcontroller\u002Fe2pdf.php:87 classes\u002Fcontroller\u002Fe2pdf.php:452\n+#: classes\u002Fcontroller\u002Fe2pdf.php:475\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3342\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3353\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:610 classes\u002Fview\u002Fpage-e2pdf.php:54\n+#: classes\u002Fview\u002Fpage-e2pdf.php:77 classes\u002Fview\u002Fpage-e2pdf.php:86\n+#: classes\u002Fview\u002Fpage-e2pdf.php:112 classes\u002Fview\u002Fpage-e2pdf.php:119\n+#: classes\u002Fview\u002Fpage-e2pdf.php:288 classes\u002Fview\u002Fpage-e2pdf.php:324\n msgid \"--- Select ---\"\n msgstr \"--- Выбрать ---\"\n \n@@ -311,9 +316,10 @@\n msgstr \"К сожалению данное расширение не поддерживает Visual Mapper\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:1356\n+#: classes\u002Fcontroller\u002Ffrontend\u002Fe2pdf-download.php:274\n #: classes\u002Fextension\u002Fe2pdf-formidable.php:254\n-#: classes\u002Fmodel\u002Fe2pdf-revision.php:205 classes\u002Fmodel\u002Fe2pdf-template.php:185\n-#: classes\u002Fmodel\u002Fe2pdf-template.php:825\n+#: classes\u002Fmodel\u002Fe2pdf-revision.php:205 classes\u002Fmodel\u002Fe2pdf-template.php:186\n+#: classes\u002Fmodel\u002Fe2pdf-template.php:889 classes\u002Fmodel\u002Fe2pdf-template.php:1040\n msgid \"(no title)\"\n msgstr \"(нет заголовка)\"\n \n@@ -358,7 +364,7 @@\n msgstr \"PDF конструктор\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:2562\n-#: classes\u002Fhelper\u002Fe2pdf-helper.php:292 classes\u002Fmodel\u002Fe2pdf-loader.php:439\n+#: classes\u002Fhelper\u002Fe2pdf-helper.php:293 classes\u002Fmodel\u002Fe2pdf-loader.php:478\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:44 classes\u002Fview\u002Fpage-e2pdf-settings.php:7\n msgid \"Settings\"\n msgstr \"Настройки\"\n@@ -374,89 +380,87 @@\n #: classes\u002Fcontroller\u002Fe2pdf.php:75\n #, php-format\n msgid \"\"\n-\"The Bulk PDFs creation is not available with Free License Type. Check \u003Ca \"\n-\"target='_blank' href='%s'>%s\u003C\u002Fa> for upgrade options\"\n+\"Bulk PDF generation is not available with the Free License Type. Please \"\n+\"visit \u003Ca target='_blank' href='%s'>%s\u003C\u002Fa> for upgrade options\"\n msgstr \"\"\n-\"Массовый экспорт недоступен в бесплатной версии. Пожалуйста посетите \u003Ca \"\n-\"target='_blank' href='%s'>%s\u003C\u002Fa> для просмотра вариантов получения полной \"\n-\"версии\"\n+\"Генерация PDF в пакетном режиме недоступна с бесплатной лицензией. \"\n+\"Пожалуйста, посетите \u003Ca target='_blank' href='%s'>%s\u003C\u002Fa> для получения \"\n+\"информации о вариантах обновления\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:337\n+#: classes\u002Fcontroller\u002Fe2pdf.php:344\n msgid \"Incorrect Dataset\"\n msgstr \"Неверная запись\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:341\n+#: classes\u002Fcontroller\u002Fe2pdf.php:348\n msgid \"Template can't be loaded\"\n msgstr \"Шаблон не может быть загружен\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:521\n+#: classes\u002Fcontroller\u002Fe2pdf.php:546\n msgid \"Delete All Datasets\"\n msgstr \"Удалить все записи\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:531\n+#: classes\u002Fcontroller\u002Fe2pdf.php:556\n msgid \"Edit Template\"\n msgstr \"Редактировать шаблон\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:613\n+#: classes\u002Fcontroller\u002Fe2pdf.php:639\n msgid \"View Dataset\"\n msgstr \"Просмотреть запись\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:616\n+#: classes\u002Fcontroller\u002Fe2pdf.php:642\n msgid \"Delete Dataset\"\n msgstr \"Удалить запись\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:662\n+#: classes\u002Fcontroller\u002Fe2pdf.php:688\n msgid \"Dataset can't be removed!\"\n msgstr \"Запись не может быть удалена!\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:694\n+#: classes\u002Fcontroller\u002Fe2pdf.php:720\n msgid \"Datasets can't be removed!\"\n msgstr \"Записи не могут быть удалены!\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:712\n-#, php-format\n+#: classes\u002Fcontroller\u002Fe2pdf.php:738\n msgid \"\"\n-\"The Bulk PDFs generation is not available with Free License Type. Check \u003Ca \"\n-\"target='_blank' href='%s'>%s\u003C\u002Fa> for upgrade options\"\n+\"Bulk PDF generation is not available with the Free License Type. Please \"\n+\"visit https:\u002F\u002Fe2pdf.com\u002Fprice for upgrade options\"\n msgstr \"\"\n-\"Массовый экспорт недоступен в бесплатной версии. Пожалуйста посетите \u003Ca \"\n-\"target='_blank' href='%s'>%s\u003C\u002Fa> для просмотра вариантов получения платной \"\n-\"версии\"\n+\"Генерация PDF в пакетном режиме недоступна с бесплатной лицензией. \"\n+\"Пожалуйста, посетите https:\u002F\u002Fe2pdf.com\u002Fprice для получения информации о \"\n+\"вариантах обновления\"\n \n-#: classes\u002Fcontroller\u002Ffrontend\u002Fe2pdf-download.php:141\n+#: classes\u002Fcontroller\u002Ffrontend\u002Fe2pdf-download.php:169\n msgid \"Access Denied!\"\n msgstr \"Доступ запрещен!\"\n \n #: classes\u002Fextension\u002Fe2pdf-caldera.php:376\n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:3347\n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:822\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:3364\n #, php-format\n msgid \"Success. [e2pdf-download id=\\\"%s\\\"]\"\n msgstr \"Успешно. [e2pdf-download id=\\\"%s\\\"]\"\n \n-#: classes\u002Fextension\u002Fe2pdf-caldera.php:611 classes\u002Fextension\u002Fe2pdf-divi.php:935\n-#: classes\u002Fextension\u002Fe2pdf-elementor.php:505\n-#: classes\u002Fextension\u002Fe2pdf-everest.php:268\n-#: classes\u002Fextension\u002Fe2pdf-fluent.php:1404\n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:3525\n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:894\n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1840\n-#: classes\u002Fextension\u002Fe2pdf-jetformbuilder.php:604\n+#: classes\u002Fextension\u002Fe2pdf-caldera.php:611 classes\u002Fextension\u002Fe2pdf-divi.php:937\n+#: classes\u002Fextension\u002Fe2pdf-elementor.php:458\n+#: classes\u002Fextension\u002Fe2pdf-everest.php:283\n+#: classes\u002Fextension\u002Fe2pdf-fluent.php:1486\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:3544\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:824\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1697\n+#: classes\u002Fextension\u002Fe2pdf-jetformbuilder.php:615\n #: classes\u002Fextension\u002Fe2pdf-wpcf7.php:653\n-#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1167\n+#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1267\n msgid \"The form source is empty or doesn't exist\"\n msgstr \"Источник формы удален или не существует\"\n \n-#: classes\u002Fextension\u002Fe2pdf-caldera.php:613 classes\u002Fextension\u002Fe2pdf-divi.php:937\n-#: classes\u002Fextension\u002Fe2pdf-elementor.php:507\n-#: classes\u002Fextension\u002Fe2pdf-everest.php:270\n-#: classes\u002Fextension\u002Fe2pdf-fluent.php:1406\n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:3527\n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:896\n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1842\n-#: classes\u002Fextension\u002Fe2pdf-jetformbuilder.php:606\n+#: classes\u002Fextension\u002Fe2pdf-caldera.php:613 classes\u002Fextension\u002Fe2pdf-divi.php:939\n+#: classes\u002Fextension\u002Fe2pdf-elementor.php:460\n+#: classes\u002Fextension\u002Fe2pdf-everest.php:285\n+#: classes\u002Fextension\u002Fe2pdf-fluent.php:1488\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:3546\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:826\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1699\n+#: classes\u002Fextension\u002Fe2pdf-jetformbuilder.php:617\n #: classes\u002Fextension\u002Fe2pdf-wpcf7.php:655\n-#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1169\n+#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1269\n msgid \"The form could not be parsed due the incorrect HTML\"\n msgstr \"Форма не может быть отображена в связи с некорректной разметкой HTML\"\n \n@@ -464,99 +468,104 @@\n msgid \" (child)\"\n msgstr \" (дочерный)\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1107\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1124\n msgid \"Auto PDF and Visual Mapper\"\n msgstr \"Авто PDF и визуальный маппер\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1113\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1130\n msgid \"Use Field Keys instead Field IDs\"\n msgstr \"Использовать ключи вместо ID полей\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1116\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1133\n msgid \"Filter\"\n msgstr \"Фильтр\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1122\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1139\n msgid \"Disable Filter\"\n msgstr \"Отключить Фильтр\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1158\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1175\n msgid \"Force shortcodes to use\"\n msgstr \"Форсировать шорткоды использовать\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1164\n-#: classes\u002Fextension\u002Fe2pdf-metform.php:1159 classes\u002Fmodel\u002Fe2pdf-loader.php:613\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1181\n+#: classes\u002Fextension\u002Fe2pdf-metform.php:1212 classes\u002Fmodel\u002Fe2pdf-loader.php:648\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:122\n msgid \"None\"\n msgstr \"Нет\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1165\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1182\n msgid \"Fields IDs\"\n msgstr \"ID полей\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1166\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1183\n msgid \"Field Keys\"\n msgstr \"Ключи полей\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:3491\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:3510\n msgid \"Child form doesn't support Visual Mapper\"\n msgstr \"Дочерная форма не поддерживает Visual Mapper\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:3653\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:3672\n msgid \"File Upload\"\n msgstr \"Загрузка файла\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:4124\n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:4156\n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:2659\n-#: classes\u002Fextension\u002Fe2pdf-jetformbuilder.php:1255\n-#: classes\u002Fextension\u002Fe2pdf-metform.php:1124\n-#: classes\u002Fextension\u002Fe2pdf-metform.php:1167\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3588\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3652\n-#: classes\u002Fextension\u002Fe2pdf-wordpress.php:1331\n-#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1312\n-#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1348\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:4143\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:4185\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:2527\n+#: classes\u002Fextension\u002Fe2pdf-jetformbuilder.php:1285\n+#: classes\u002Fextension\u002Fe2pdf-metform.php:1166\n+#: classes\u002Fextension\u002Fe2pdf-metform.php:1221\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3574\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3658\n+#: classes\u002Fextension\u002Fe2pdf-wordpress.php:1466\n+#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1417\n+#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1464\n msgid \"E2Pdf Actions\"\n msgstr \"Действия E2Pdf\"\n \n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:824\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:755\n+#, php-format\n+msgid \"Success. [e2pdf-download id=\\\"%d\\\"]\"\n+msgstr \"Успешно. [e2pdf-download id=\\\"%d\\\"]\"\n+\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:757\n msgid \"Send Message\"\n msgstr \"Отправить сообщение\"\n \n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:826\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:759\n msgid \"Error: Your form is not valid, please fix the errors!\"\n msgstr \"Ошибка: Форма содержит ошибки и требует исправления!\"\n \n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:855\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:785\n msgid \"Form could not be found\"\n msgstr \"Форма не может быть найдена\"\n \n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:1926\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:1852\n msgid \"Custom Fields\"\n msgstr \"Настраиваемые поля\"\n \n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1145 classes\u002Fmodel\u002Fe2pdf-loader.php:618\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:492\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:500\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1052 classes\u002Fmodel\u002Fe2pdf-loader.php:653\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:485\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:493\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:79\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:207\n msgid \"Title\"\n msgstr \"Заголовок\"\n \n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1189\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1092\n msgid \"Caption\"\n msgstr \"Титр\"\n \n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1233\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1132\n msgid \"Description\"\n msgstr \"Описание\"\n \n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1631\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1491\n msgid \"Default Confirmation\"\n msgstr \"По умолчанию\"\n \n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1635\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1495\n #, php-format\n msgid \"\"\n \"Thanks for contacting us! We will get in touch with you shortly. [e2pdf-\"\n@@ -569,70 +578,70 @@\n msgid \"Cart \u002F Checkout\"\n msgstr \"Корзина \u002F Оформление заказа\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2468\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3370\n msgid \"User Order List\"\n msgstr \"Список заказов пользователя\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2469\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2493\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2531\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2549\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2583\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2620\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:11\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3371\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3395\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3433\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3451\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3484\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3520\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:10\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:386\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:477 classes\u002Fview\u002Fpage-e2pdf.php:37\n-#: classes\u002Fview\u002Fpage-e2pdf.php:270 classes\u002Fview\u002Fpage-e2pdf.php:477\n+#: classes\u002Fview\u002Fpage-e2pdf.php:271 classes\u002Fview\u002Fpage-e2pdf.php:479\n msgid \"Template\"\n msgstr \"Шаблон\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2477\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2501\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2602\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2628\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3379\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3403\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3503\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3528\n msgid \"Order Status\"\n msgstr \"Статус заказа\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2483\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2521\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2539\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2568\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2608\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3385\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3423\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3441\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3470\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3509\n msgid \"Priority\"\n msgstr \"Приоритет\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2492\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3394\n msgid \"User Order Details\"\n msgstr \"Детали заказа пользователя\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2507\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2557\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2591\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3409\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3459\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3492\n msgid \"Hook\"\n msgstr \"Хук\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2530\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3432\n msgid \"User Cart\"\n msgstr \"Корзина пользователя\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2548\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3450\n msgid \"User Checkout\"\n msgstr \"Оформление заказа пользователем\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2582\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3483\n msgid \"Admin Order List\"\n msgstr \"Список заказов администратора\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2619\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3519\n msgid \"Admin Order Details\"\n msgstr \"Детали заказа администратора\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2662\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:603\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3561\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:638\n msgid \"Any\"\n msgstr \"Любое\"\n \n-#: classes\u002Fextension\u002Fe2pdf-wordpress.php:228\n+#: classes\u002Fextension\u002Fe2pdf-wordpress.php:213\n msgid \"Users\"\n msgstr \"Пользователи\"\n \n@@ -641,36 +650,36 @@\n msgid \"Signature\"\n msgstr \"Подпись\"\n \n-#: classes\u002Fextension\u002Fe2pdf-wpcf7.php:1447\n+#: classes\u002Fextension\u002Fe2pdf-wpcf7.php:1457\n msgid \"Storing Engine\"\n msgstr \"Хранение записей\"\n \n-#: classes\u002Fhelper\u002Fe2pdf-db.php:660 classes\u002Fhelper\u002Fe2pdf-db.php:718\n-#: classes\u002Fhelper\u002Fe2pdf-db.php:739 classes\u002Fhelper\u002Fe2pdf-db.php:751\n-#: classes\u002Fhelper\u002Fe2pdf-db.php:771\n+#: classes\u002Fhelper\u002Fe2pdf-db.php:718 classes\u002Fhelper\u002Fe2pdf-db.php:776\n+#: classes\u002Fhelper\u002Fe2pdf-db.php:797 classes\u002Fhelper\u002Fe2pdf-db.php:809\n+#: classes\u002Fhelper\u002Fe2pdf-db.php:829\n msgid \"Undefined\"\n msgstr \"Неопределено\"\n \n-#: classes\u002Fhelper\u002Fe2pdf-helper.php:284 classes\u002Fmodel\u002Fe2pdf-loader.php:436\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:523\n+#: classes\u002Fhelper\u002Fe2pdf-helper.php:285 classes\u002Fmodel\u002Fe2pdf-loader.php:475\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:558\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:67\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:129 classes\u002Fview\u002Fpage-e2pdf.php:7\n-#: classes\u002Fview\u002Fpage-e2pdf.php:11 classes\u002Fview\u002Fpage-e2pdf.php:260\n+#: classes\u002Fview\u002Fpage-e2pdf.php:11 classes\u002Fview\u002Fpage-e2pdf.php:261\n msgid \"Create PDF\"\n msgstr \"Создать PDF\"\n \n-#: classes\u002Fhelper\u002Fe2pdf-helper.php:288 classes\u002Fmodel\u002Fe2pdf-loader.php:437\n+#: classes\u002Fhelper\u002Fe2pdf-helper.php:289 classes\u002Fmodel\u002Fe2pdf-loader.php:476\n #: classes\u002Fview\u002Fpage-e2pdf-license.php:51\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:14\n msgid \"Templates\"\n msgstr \"Шаблоны\"\n \n-#: classes\u002Fhelper\u002Fe2pdf-helper.php:296 classes\u002Fmodel\u002Fe2pdf-loader.php:440\n+#: classes\u002Fhelper\u002Fe2pdf-helper.php:297 classes\u002Fmodel\u002Fe2pdf-loader.php:479\n #: classes\u002Fview\u002Fpage-e2pdf-license.php:7 classes\u002Fview\u002Fpage-e2pdf-license.php:11\n msgid \"License\"\n msgstr \"Лицензия\"\n \n-#: classes\u002Fhelper\u002Fe2pdf-helper.php:300 classes\u002Fmodel\u002Fe2pdf-loader.php:442\n+#: classes\u002Fhelper\u002Fe2pdf-helper.php:301 classes\u002Fmodel\u002Fe2pdf-loader.php:481\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:7 classes\u002Fview\u002Fpage-e2pdf-debug.php:11\n msgid \"Debug\"\n msgstr \"Отладка\"\n@@ -687,48 +696,48 @@\n msgid \"Access Token is not set or Incorrect\"\n msgstr \"Токен доступен не установлен или указан неверно\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:292\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:331\n msgid \"E2Pdf Bulk Export Interval\"\n msgstr \"Интервал массового экспорта E2Pdf\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:438\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:477\n #: classes\u002Fview\u002Fpage-e2pdf-integrations.php:7\n msgid \"Integrations\"\n msgstr \"Интеграции\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:496\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:531\n msgid \"Page will be removed! Continue?\"\n msgstr \"Страница будет удалена! Продолжить?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:497\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:532\n msgid \"Font will be removed! Continue?\"\n msgstr \"Шрифт будет удален! Продолжить?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:498\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:533\n msgid \"Changes will not be saved! Continue?\"\n msgstr \"Изменения не будут сохранены! Продолжить?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:499\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:534\n msgid \"Saved Template will be overwritten! Continue?\"\n msgstr \"Сохраненный шаблон будет перезаписан! Продолжить?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:500\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:535\n msgid \"All pages will be removed! Continue?\"\n msgstr \"Все страницы будут удалены! Продолжить?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:501\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:536\n msgid \"Adding new pages not available in \\\"Uploaded PDF\\\"\"\n msgstr \"Добавление новых страниц не доступно в \\\"Загруженном PDF\\\"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:502\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:537\n msgid \"Dataset will be removed! Continue?\"\n msgstr \"Запись будет удалена! Продолжить?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:503\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:538\n msgid \"All datasets will be removed! Continue?\"\n msgstr \"Все записи будут удалены! Продолжить?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:504\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:539\n msgid \"\"\n \"WARNING: Template has changes after last save! Changes will be lost! \"\n \"Continue?\"\n@@ -736,198 +745,198 @@\n \"ВНИМАНИЕ: Шаблон имеет не сохраненные изменения! Они будут утеряны! \"\n \"Продолжить?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:505\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:540\n msgid \"Element will be removed! Continue?\"\n msgstr \"Элемент будет удален! Продолжить?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:506\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:541\n msgid \"Elements will be removed! Continue?\"\n msgstr \"Элементы будут удалены! Продолжить?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:507\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:542\n msgid \"Action will be removed! Continue?\"\n msgstr \"Действие будет удалено! Продолжить?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:508\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:543\n msgid \"Condition will be removed! Continue?\"\n msgstr \"Условие будет удалено! Продолжить?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:509\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:544\n msgid \"All Field Values will be overwritten! Continue?\"\n msgstr \"Все значения полей будут перезаписаны! Продолжить?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:510\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:545\n msgid \"Website will be forced to use \\\"FREE\\\" License Key! Continue?\"\n msgstr \"\"\n \"Сайт буде переведен на использование \\\"Бесплатной\\\" лицензии! Продолжить?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:511\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:546\n msgid \"Not Available in Revision Edit Mode\"\n msgstr \"Недоступно при редактировании ревизии\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:512\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:547\n msgid \"The WYSIWYG editor is disabled for this HTML object\"\n msgstr \"WYSIWYG редактор отключен для данного HTML объекта\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:513\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:548\n msgid \"WYSIWYG can only be applied within HTML elements\"\n msgstr \"WYSIWYG может быть применен только к HTML объектам\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:514\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:549\n msgid \"Only single-page PDFs are allowed with the \\\"FREE\\\" license type\"\n msgstr \"Разрешены только одностраничные PDF-файлы с лицензией типа \\\"FREE\\\"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:515\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:550\n msgid \"Last condition can't be removed\"\n msgstr \"Последнее условие не может быть удалено\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:516\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:551\n msgid \"In Progress...\"\n msgstr \"В процессе...\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:517 classes\u002Fview\u002Fpage-e2pdf-templates.php:36\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:552 classes\u002Fview\u002Fpage-e2pdf-templates.php:36\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:121\n msgid \"Delete\"\n msgstr \"Удалить\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:518 classes\u002Fmodel\u002Fe2pdf-loader.php:526\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:553 classes\u002Fmodel\u002Fe2pdf-loader.php:561\n msgid \"Properties\"\n msgstr \"Свойства\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:519 classes\u002Fview\u002Fpage-e2pdf-license.php:30\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:554 classes\u002Fview\u002Fpage-e2pdf-license.php:30\n #: classes\u002Fview\u002Fpage-e2pdf-license.php:38\n msgid \"License Key\"\n msgstr \"Ключ лицензии\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:520\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:555\n msgid \"Empty PDF\"\n msgstr \"Пустой PDF\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:521\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:556\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:62\n msgid \"Upload PDF\"\n msgstr \"Загрузить PDF\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:522\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:557\n msgid \"Auto PDF\"\n msgstr \"Авто PDF\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:524 classes\u002Fview\u002Fpage-e2pdf-templates.php:470\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:559 classes\u002Fview\u002Fpage-e2pdf-templates.php:470\n msgid \"Extension\"\n msgstr \"Расширение\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:525\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:560\n msgid \"Size\"\n msgstr \"Размер\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:527\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:562\n msgid \"Enter link here\"\n msgstr \"Введите ссылку здесь\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:528\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:563\n msgid \"Border\"\n msgstr \"Рамка\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:529\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:564\n msgid \"Background\"\n msgstr \"Фон\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:530\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:110\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:565\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:109\n msgid \"Left\"\n msgstr \"Лево\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:531\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:112\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:566\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:111\n msgid \"Right\"\n msgstr \"Право\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:532\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:567\n msgid \"Top\"\n msgstr \"Верх\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:533\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:111\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:568\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:110\n msgid \"Center\"\n msgstr \"Центр\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:534\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:569\n msgid \"Bottom\"\n msgstr \"Низ\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:535\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:570\n msgid \"Justify\"\n msgstr \"По ширине\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:536 classes\u002Fmodel\u002Fe2pdf-loader.php:657\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:571 classes\u002Fmodel\u002Fe2pdf-loader.php:688\n msgid \"Border Color\"\n msgstr \"Цвет рамки\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:537\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:572\n msgid \"Border Radius\"\n msgstr \"Радиус рамки\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:538 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:106\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:81\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:573 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:106\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:80\n msgid \"Line Height\"\n msgstr \"Высота шрифта\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:539\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:574\n msgid \"Width\"\n msgstr \"Ширина\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:540\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:575\n msgid \"Height\"\n msgstr \"Высота\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:541\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:576\n msgid \"Value\"\n msgstr \"Значение\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:542 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:80\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:29\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:577 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:80\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:34\n msgid \"Font\"\n msgstr \"Шрифт\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:543\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:578\n msgid \"Option\"\n msgstr \"Опция\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:544\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:579\n msgid \"Group\"\n msgstr \"Группа\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:545 classes\u002Fview\u002Fpage-e2pdf-license.php:22\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:580 classes\u002Fview\u002Fpage-e2pdf-license.php:22\n msgid \"Type\"\n msgstr \"Тип\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:546\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:581\n msgid \"Scale\"\n msgstr \"Масштаб\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:547\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:582\n msgid \"Width&Height\"\n msgstr \"Ширина и Высота\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:548\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:583\n msgid \"Choose Image\"\n msgstr \"Выбрать изображение\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:550\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:585\n msgid \"PDF Upload\"\n msgstr \"Загрузка PDF\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:551\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:586\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:104\n msgid \"Global Actions\"\n msgstr \"Глобальные Действия\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:552\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:587\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:109\n msgid \"Global Properties\"\n msgstr \"Глобальные свойства\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:553\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:588\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:113\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:83\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:211\n@@ -935,1015 +944,999 @@\n msgid \"Connection\"\n msgstr \"Подключение\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:554\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:589\n msgid \"Map Field\"\n msgstr \"Разметить поле\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:555\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:590\n msgid \"Insert Mapped\"\n msgstr \"Вставить размеченное\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:556\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:591\n msgid \"Resize\"\n msgstr \"Размер\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:557\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:592\n msgid \"Copy\"\n msgstr \"Копировать\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:558\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:593\n msgid \"Cut\"\n msgstr \"Вырезать\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:559\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:594\n msgid \"Paste\"\n msgstr \"Вставить\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:560\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:595\n msgid \"Paste in Place\"\n msgstr \"Вставить по месту\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:561 classes\u002Fview\u002Fblocks\u002Fbulk-actions.php:14\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:596 classes\u002Fview\u002Fblocks\u002Fbulk-actions.php:14\n msgid \"Apply\"\n msgstr \"Применить\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:562\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:597\n msgid \"Dynamic Height\"\n msgstr \"Динамическая высота\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:563\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:598\n msgid \"Multipage\"\n msgstr \"Мультистраница\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:564 classes\u002Fmodel\u002Fe2pdf-loader.php:667\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:98\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:599 classes\u002Fmodel\u002Fe2pdf-loader.php:698\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:97\n msgid \"Text Align\"\n msgstr \"Выравнивание\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:565\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:600\n msgid \"Read-Only\"\n msgstr \"Только чтение\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:566\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:601\n msgid \"Multiline\"\n msgstr \"Мульти\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:567\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:602\n msgid \"Required\"\n msgstr \"Обязательное\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:568\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:603\n msgid \"Page Options\"\n msgstr \"Опции страницы\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:569\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:604\n msgid \"Direction\"\n msgstr \"Направление\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:570\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:605\n msgid \"Hide\"\n msgstr \"Спрятать\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:571\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:606\n msgid \"Unhide\"\n msgstr \"Показать\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:572 classes\u002Fview\u002Fpage-e2pdf.php:170\n-#: classes\u002Fview\u002Fpage-e2pdf.php:376\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:607 classes\u002Fview\u002Fpage-e2pdf.php:171\n+#: classes\u002Fview\u002Fpage-e2pdf.php:378\n msgid \"Password\"\n msgstr \"Пароль\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:573 classes\u002Fmodel\u002Fe2pdf-loader.php:591\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:608 classes\u002Fmodel\u002Fe2pdf-loader.php:626\n msgid \"Visual Mapper\"\n msgstr \"Визуальный маппер\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:574\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:609\n msgid \"Parent\"\n msgstr \"Родитель\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:576\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:611\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:131\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:175\n msgid \"Activated\"\n msgstr \"Активирован\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:577\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:612\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:133\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:177\n msgid \"Not Activated\"\n msgstr \"Не активирован\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:578\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:613\n msgid \"Page ID\"\n msgstr \"ID страницы\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:579\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:614\n msgid \"Page ID inside Upload PDF\"\n msgstr \"ID страницы в загружаемом PDF\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:580\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:615\n msgid \"Render Fields from Upload PDF\"\n msgstr \"Выгрузить поля из загружаемого PDF\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:581\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:616\n msgid \"Delete created E2Pdf Fields\"\n msgstr \"Удалить созданные поля в E2Pdf\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:582\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:617\n msgid \"Keep Image Ratio\"\n msgstr \"Пропорция\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:583\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:618\n msgid \"Keep Lower Size\"\n msgstr \"Меньший размер\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:584\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:619\n msgid \"Lock Aspect Ratio\"\n msgstr \"Блокировка пропорции\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:585\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:620\n msgid \"Fill Image\"\n msgstr \"Заполнить изорбражение\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:586\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:621\n msgid \"Page\"\n msgstr \"Страница\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:587\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:622\n msgid \"Resolution\"\n msgstr \"Разрешение\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:588\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:623\n msgid \"Disable Text to Image\"\n msgstr \"Не переводить текст в изображение\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:589\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:624\n msgid \"Confirmation Code\"\n msgstr \"Код подтверждения\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:590\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:625\n msgid \"Code\"\n msgstr \"Код\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:592\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:627\n msgid \"Auto\"\n msgstr \"Авто\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:593 classes\u002Fview\u002Fpage-e2pdf.php:479\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:628 classes\u002Fview\u002Fpage-e2pdf.php:481\n msgid \"Actions\"\n msgstr \"Действия\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:594\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:629\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:166\n msgid \"Save\"\n msgstr \"Сохранить\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:595\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:630\n msgid \"Horizontal Align\"\n msgstr \"Горизонтально\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:596\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:631\n msgid \"Vertical Align\"\n msgstr \"Вертикально\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:597\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:632\n msgid \"Middle\"\n msgstr \"Середина\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:598\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:633\n msgid \"Apply If\"\n msgstr \"Если\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:599\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:634\n msgid \"Action\"\n msgstr \"Действие\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:600\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:635\n msgid \"Property\"\n msgstr \"Свойство\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:601\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:636\n msgid \"If\"\n msgstr \"Если\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:602\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:637\n msgid \"Condition\"\n msgstr \"Условие\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:604 classes\u002Fview\u002Fblocks\u002Fsub-filters.php:9\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:639 classes\u002Fview\u002Fblocks\u002Fsub-filters.php:9\n msgid \"All\"\n msgstr \"Все\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:605 classes\u002Fmodel\u002Fe2pdf-loader.php:753\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:640 classes\u002Fmodel\u002Fe2pdf-loader.php:784\n msgid \"Sort\"\n msgstr \"Порядок\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:606\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:641\n msgid \"E-Signature\"\n msgstr \"Электронная подпись\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:607\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:642\n msgid \"Contact\"\n msgstr \"Контакт\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:608\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:643\n msgid \"Location\"\n msgstr \"Местоположение\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:609\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:644\n msgid \"Reason\"\n msgstr \"Причина\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:610\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:645\n msgid \"Placeholder\"\n msgstr \"Аннотация\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:611\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:646\n msgid \"Length\"\n msgstr \"Длина\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:612\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:647\n msgid \"Comb\"\n msgstr \"Комбинация\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:614\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:649\n msgid \"Highlight\"\n msgstr \"Выделение\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:615\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:650\n msgid \"Invert\"\n msgstr \"Инверсия\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:616\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:651\n msgid \"Outline\"\n msgstr \"Очертание\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:617\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:652\n msgid \"Push\"\n msgstr \"Нажатие\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:619\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:654\n msgid \"Status\"\n msgstr \"Статус\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:620\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:655\n msgid \"Add Action\"\n msgstr \"Добавить действие\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:621\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:656\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:11\n-#: classes\u002Fview\u002Fpage-e2pdf-templates.php:148 classes\u002Fview\u002Fpage-e2pdf.php:135\n+#: classes\u002Fview\u002Fpage-e2pdf-templates.php:148 classes\u002Fview\u002Fpage-e2pdf.php:136\n msgid \"Shortcodes\"\n msgstr \"Шорткоды\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:622\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:657\n msgid \"Labels\"\n msgstr \"Заголовки\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:623\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:658\n msgid \"Field Values\"\n msgstr \"Значения полей\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:624\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:659\n msgid \"Field Names\"\n msgstr \"Имена полей\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:625\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:660\n msgid \"Field Name\"\n msgstr \"Имя поля\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:626\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:661\n msgid \"As Field Name\"\n msgstr \"Имя поля в PDF\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:627\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:662\n msgid \"Confirm\"\n msgstr \"Подтвердить\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:628\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:663\n msgid \"Cancel\"\n msgstr \"Отменить\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:629\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:664\n msgid \"Hide (If Empty)\"\n msgstr \"Скрыть (пустое значение)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:630\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:665\n msgid \"Hide Page (If Empty)\"\n msgstr \"Скрыть страницу (пустое значение)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:631\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:666\n msgid \"Replace Value\"\n msgstr \"Замена значения\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:632\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:667\n msgid \"Auto-Close\"\n msgstr \"Автозакрытие\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:633\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:668\n msgid \"New Lines to BR\"\n msgstr \"Перевод строки как BR\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:634\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:669\n msgid \"Disable WYSIWYG Editor\"\n msgstr \"Отключить редактор WYSIWYG\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:635\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:670\n msgid \"CSS Priority\"\n msgstr \"CSS приоритет\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:636\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:671\n msgid \"CSS Style\"\n msgstr \"CSS Стиль\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:637\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:672\n msgid \"Enabling WYSIWYG can affect \\\"HTML\\\" Source\"\n msgstr \"Включение WYSIWYG может повлиять на исходный код \\\"HTML\\\"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:638\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:673\n msgid \"Hidden Fields\"\n msgstr \"Скрытые поля\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:639\n-msgid \"Enable PDF Access By URL\"\n-msgstr \"Включить доступ к PDF по URL\"\n-\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:640\n-msgid \"Disable PDF Access By URL\"\n-msgstr \"Отключить доступ к PDF по URL\"\n-\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:641\n-msgid \"Enable Shortcodes\"\n-msgstr \"Включить шорткоды\"\n-\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:642\n-msgid \"Disable Shortcodes\"\n-msgstr \"Отключить шорткоды\"\n-\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:643\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:674\n msgid \"Error Message\"\n msgstr \"Сообщение при ошибке\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:644\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:675\n msgid \"Redirect URL\"\n msgstr \"Перенаправление URL\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:645\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:676\n msgid \"Element\"\n msgstr \"Элемент\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:646\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:677\n msgid \"Elements\"\n msgstr \"Элементы\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:647\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:678\n msgid \"Position Top\"\n msgstr \"Верх\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:648\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:679\n msgid \"Position Left\"\n msgstr \"Лево\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:649\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:680\n msgid \"Padding Top\"\n msgstr \"Отступ внутренний верх\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:650\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:681\n msgid \"Padding Bottom\"\n msgstr \"Отступ внутренний низ\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:651\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:682\n msgid \"Padding Left\"\n msgstr \"Отступ внутренний лево\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:652\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:683\n msgid \"Padding Right\"\n msgstr \"Отступ внутренний право\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:653\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:684\n msgid \"Margin Top\"\n msgstr \"Отступ внешний верх\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:654\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:685\n msgid \"Margin Bottom\"\n msgstr \"Отступ внешний низ\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:655\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:686\n msgid \"Margin Left\"\n msgstr \"Отступ внешний лево\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:656\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:687\n msgid \"Margin Right\"\n msgstr \"Отступ внешний право\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:658\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:689\n msgid \"Border Top\"\n msgstr \"Верхняя рамка\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:659\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:690\n msgid \"Border Bottom\"\n msgstr \"Нижняя рамка\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:660\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:691\n msgid \"Border Left\"\n msgstr \"Левая рамка\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:661\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:692\n msgid \"Border Right\"\n msgstr \"Правая рамка\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:662\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:693\n msgid \"Field\"\n msgstr \"Поле\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:663\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:9\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:694\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:8\n msgid \"Style\"\n msgstr \"Стиль\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:664\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:695\n msgid \"Lock \u002F Hide\"\n msgstr \"Блокировка \u002F Видимость\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:665\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:139\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:696\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:138\n msgid \"Font Color\"\n msgstr \"Цвет шрифта\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:666 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:93\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:697 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:93\n msgid \"Font Size\"\n msgstr \"Размер шрифта\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:668\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:699\n msgid \"Rotation\"\n msgstr \"Поворот\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:669\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:700\n msgid \"Preg Replace Pattern\"\n msgstr \"Preg Replace Шаблон\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:670\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:701\n msgid \"Preg Replace Replacement\"\n msgstr \"Preg Replace Замена\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:671\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:702\n msgid \"Preg Match All Pattern\"\n msgstr \"Preg Match All Шаблон\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:672\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:703\n msgid \"Preg Match All Output\"\n msgstr \"Preg Match All Вывод\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:673\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:704\n msgid \"Preg Filters\"\n msgstr \"Preg Фильтры\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:674\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:705\n msgid \"Char Spacing\"\n msgstr \"Интервал\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:675 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:34\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:706 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:34\n msgid \"Color\"\n msgstr \"Цвет\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:676\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:707\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_builder.php:43\n msgid \"QR Code\"\n msgstr \"QR Код\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:677\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:708\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_builder.php:45\n msgid \"Barcode\"\n msgstr \"Штрихкод\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:678 classes\u002Fmodel\u002Fe2pdf-loader.php:704\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:238\n-#: classes\u002Fview\u002Fpage-e2pdf.php:216 classes\u002Fview\u002Fpage-e2pdf.php:423\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:709 classes\u002Fmodel\u002Fe2pdf-loader.php:735\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:237\n+#: classes\u002Fview\u002Fpage-e2pdf.php:217 classes\u002Fview\u002Fpage-e2pdf.php:425\n msgid \"Format\"\n msgstr \"Формат\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:679\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:710\n msgid \"Precision\"\n msgstr \"Точность\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:680\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:711\n msgid \"L - Smallest\"\n msgstr \"L - Низкая\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:681\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:712\n msgid \"M - Medium\"\n msgstr \"M - Средняя\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:682\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:713\n msgid \"Q - High\"\n msgstr \"Q - Высокая\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:683\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:714\n msgid \"H - Best\"\n msgstr \"H - Лучшая\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:684\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:715\n msgid \"All Templates for this Website will be deactivated! Continue?\"\n msgstr \"Все шаблоны для текущего сайта будут деактивированы! Продолжить?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:685\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:716\n msgid \"Pre-uploaded PDF will be removed from E2Pdf Template! Continue?\"\n msgstr \"Загруженный PDF будет удален! Продолжить?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:686\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:717\n msgid \"Quiet Zone Size\"\n msgstr \"Размер Quite Zone\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:687\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:718\n msgid \"Hide Label\"\n msgstr \"Спрятать Лейбл\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:688\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:719\n msgid \"Lock\"\n msgstr \"Заблокировать\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:689\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:41\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:720\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:40\n msgid \"Unlock\"\n msgstr \"Разблокировать\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:690\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:721\n msgid \"Opacity\"\n msgstr \"Прозрачность\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:691\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:722\n msgid \"Auto Font Size\"\n msgstr \"Авто размер шрифта\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:692 classes\u002Fview\u002Fpage-e2pdf-settings.php:33\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:723 classes\u002Fview\u002Fpage-e2pdf-settings.php:38\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:389\n msgid \"Max Upload File Size\"\n msgstr \"Макс. размер файла\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:693\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:724\n msgid \"The bulk export task will be removed! Continue?\"\n msgstr \"Задание на массовый экспорт будет удалено! Продолжить?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:694\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:725\n msgid \"The bulk export task will be stopped! Continue?\"\n msgstr \"Задание на массовый экспорт будет остановлено! Продолжить?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:695\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:726\n msgid \"The bulk export task will be started! Continue?\"\n msgstr \"Задание на массовый экспорт будет запущено! Продолжить?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:696 classes\u002Fview\u002Fpage-e2pdf-templates.php:25\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:727 classes\u002Fview\u002Fpage-e2pdf-templates.php:25\n msgid \"Search...\"\n msgstr \"Поиск...\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:697\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:728\n msgid \"Show Element\"\n msgstr \"Показать элемент\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:698\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:729\n msgid \"Hide Element\"\n msgstr \"Спрятать элемент\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:699\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:730\n msgid \"Show Page\"\n msgstr \"Показать страницу\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:700\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:731\n msgid \"Hide Page\"\n msgstr \"Спрятать страницу\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:701\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:732\n msgid \"Change to\"\n msgstr \"Изменить на\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:702\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:733\n msgid \"Merge\"\n msgstr \"Объединить\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:703\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:734\n msgid \"Change Property\"\n msgstr \"Изменить свойство\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:705\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:736\n msgid \"Insert Before\"\n msgstr \"Вставить перед\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:706\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:737\n msgid \"Insert After\"\n msgstr \"Вставить после\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:707\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:738\n msgid \"Full Replacement\"\n msgstr \"Полная замена\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:708\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:739\n msgid \"Search \u002F Replace\"\n msgstr \"Поиск \u002F Замена\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:709\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:740\n msgid \"Contains\"\n msgstr \"Содержит\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:710\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:741\n msgid \"Not Contains\"\n msgstr \"Не содержит\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:711\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:742\n msgid \"In Array\"\n msgstr \"В массиве\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:712\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:743\n msgid \"Array Key Exists\"\n msgstr \"Ключ в массиве\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:713\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:744\n msgid \"Else\"\n msgstr \"Тогда\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:714\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:745\n msgid \"Append\"\n msgstr \"Добавление\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:715\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:746\n msgid \"Vertical\"\n msgstr \"Вертикально\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:716\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:747\n msgid \"Horizontal\"\n msgstr \"Горизонтально\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:717\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:748\n msgid \"Palette\"\n msgstr \"Палитра\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:718\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:749\n msgid \"Line \u002F Stroke Color\"\n msgstr \"Линия \u002F Обводка\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:719\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:750\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_builder.php:47\n msgid \"Graph\"\n msgstr \"График\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:720\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:751\n msgid \"Markers\"\n msgstr \"Маркеры\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:721\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:752\n msgid \"Grid\"\n msgstr \"Сетка\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:722\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:753\n msgid \"Axis\"\n msgstr \"Ось\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:723\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:754\n msgid \"Legend\"\n msgstr \"Легенда\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:724 classes\u002Fview\u002Fpage-e2pdf-debug.php:220\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:755 classes\u002Fview\u002Fpage-e2pdf-debug.php:233\n msgid \"Structure\"\n msgstr \"Структура\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:725\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:756\n msgid \"Space\"\n msgstr \"Отступ\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:726\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:757\n msgid \"Position\"\n msgstr \"Позиция\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:727\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:758\n msgid \"Vertical Label\"\n msgstr \"Вертикальная метка\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:728\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:759\n msgid \"Horizontal Label\"\n msgstr \"Горизонтальная метка\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:729\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:760\n msgid \"Label\"\n msgstr \"Метка\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:730\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:761\n msgid \"Axis Overlap\"\n msgstr \"Axis Overlap\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:731\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:762\n msgid \"Grid Spacing\"\n msgstr \"Интервал сетки\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:732\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:763\n msgid \"Grid Spacing (V)\"\n msgstr \"Интервал сетки (V)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:733\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:764\n msgid \"Grid Spacing (H)\"\n msgstr \"Интервал сетки (H)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:734\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:765\n msgid \"Grid Division (V)\"\n msgstr \"Деления сетки (V)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:735\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:766\n msgid \"Grid Division (H)\"\n msgstr \"Деления сетки (H)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:736\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:767\n msgid \"Axis Color\"\n msgstr \"Цвет оси\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:737\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:768\n msgid \"Grid Color\"\n msgstr \"Цвет сетки\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:738\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:769\n msgid \"Bar Label Color\"\n msgstr \"Bar Label Color\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:739\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:770\n msgid \"Position (V)\"\n msgstr \"Позиция (V)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:740\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:771\n msgid \"Position (H)\"\n msgstr \"Позиция (H)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:741\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:772\n msgid \"Bar Labels\"\n msgstr \"Bar Labels\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:742\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:773\n msgid \"Marker\"\n msgstr \"Маркер\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:743\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:774\n msgid \"Grid Subdivision Color\"\n msgstr \"Цвет подразделения сетки\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:744\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:775\n msgid \"Sub Divisions\"\n msgstr \"Подразделения\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:745\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:776\n msgid \"Axis (V)\"\n msgstr \"Ось (V)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:746\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:777\n msgid \"Axis (H)\"\n msgstr \"Ось (H)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:747\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:778\n msgid \"Text\"\n msgstr \"Текст\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:748\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:779\n msgid \"Enable\"\n msgstr \"Включить\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:749\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:780\n msgid \"Min\"\n msgstr \"Мин\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:750\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:781\n msgid \"Max\"\n msgstr \"Макс\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:751\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:782\n msgid \"Fill Under\"\n msgstr \"Залить\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:752\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:783\n msgid \"Reverse\"\n msgstr \"Перевернутый\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:754\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:785\n msgid \"Percentage\"\n msgstr \"Процент\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:755\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:786\n msgid \"Legend Text Side\"\n msgstr \"Legend Text Side\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:756\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:787\n msgid \"Columns\"\n msgstr \"Столбцы\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:757\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:788\n msgid \"Padding (X)\"\n msgstr \"Отступ внутренний (X)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:758\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:789\n msgid \"Padding (Y)\"\n msgstr \"Отступ внутренний (Y)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:759\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:790\n msgid \"Stroke Color\"\n msgstr \"Обводка Цвет\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:760\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:791\n msgid \"Stroke Width\"\n msgstr \"Обводка толщина\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:761\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:792\n msgid \"Bubble Scale\"\n msgstr \"Bubble Scale\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:762\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:793\n msgid \"Units\"\n msgstr \"Юниты\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:763\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:794\n msgid \"Increment\"\n msgstr \"Увеличить\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:764\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:795\n msgid \"Stack Group\"\n msgstr \"Группа\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:765\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:796\n msgid \"Line Dataset\"\n msgstr \"Line Dataset\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:766\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:797\n msgid \"Project Angle\"\n msgstr \"Project Angle\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:767\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:798\n msgid \"Legends\"\n msgstr \"Legends\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:768\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:799\n msgid \"Colors\"\n msgstr \"Цвета\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:769\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:800\n msgid \"Line Curve\"\n msgstr \"Кривая линии\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:770\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:801\n msgid \"Margin (H)\"\n msgstr \"Отступ внешний (H)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:771\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:802\n msgid \"Margin (V)\"\n msgstr \"Отступ внешний (V)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:772\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:803\n msgid \"Units Label\"\n msgstr \"Метка единиц\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:773\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:804\n msgid \"Dynamic Line \u002F Stroke Color\"\n msgstr \"Динамический цвет Линии \u002F Обводки\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:774\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:805\n msgid \"Dynamic Marker Color\"\n msgstr \"Динамический цвет маркера\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:775\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:806\n msgid \"Inner\"\n msgstr \"Внутренний\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:776\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:807\n msgid \"Outer\"\n msgstr \"Внешний\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:777\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:808\n msgid \"Align\"\n msgstr \"Выравнивание\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:778\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:809\n msgid \"Offset (X)\"\n msgstr \"Смещение (X)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:779\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:810\n msgid \"Offset (Y)\"\n msgstr \"Смещение (Y)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:780\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:811\n msgid \"Link URL\"\n msgstr \"Ссылка\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:781\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:812\n msgid \"Link Type\"\n msgstr \"Тип ссылки\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:782\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:813\n msgid \"Link Label\"\n msgstr \"Метка ссылки\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:783\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:814\n msgid \"Url\"\n msgstr \"Url\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:784\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:815\n msgid \"Attachment\"\n msgstr \"Вложение\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:785\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:816\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_builder.php:37\n msgid \"Image\"\n msgstr \"Изображение\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:786\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:817\n msgid \"Media Library\"\n msgstr \"Медиа-библиотека\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:787 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:44\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:818 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:44\n msgid \"Underline\"\n msgstr \"Подчеркнуть\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:788\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:819\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_builder.php:49\n msgid \"Page Number\"\n msgstr \"Номер страницы\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:789\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:820\n msgid \"Adjust Page Number\"\n msgstr \"Изменить номер страницы\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:790\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:821\n msgid \"Adjust Page Total\"\n msgstr \"Изменить всего страниц\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:791\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:822\n msgid \"Preload Images\"\n msgstr \"Предзагрузка изображений\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:792\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:823\n msgid \"Hooks\"\n msgstr \"Хуки\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:793\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:824\n msgid \"Display PDF download at\"\n msgstr \"Отображение загрузки PDF на\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:794\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:825\n msgid \"Optimization\"\n msgstr \"Оптимизация\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:795\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:826\n msgid \"Inherit\"\n msgstr \"Наследовать\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:796\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:402\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:827\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:397\n msgid \"Not Optimized\"\n msgstr \"Без оптимизации\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:797\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:403\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:828\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:398\n msgid \"Low Quality\"\n msgstr \"Низкое качество\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:798\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:404\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:829\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:399\n msgid \"Basic Quality\"\n msgstr \"Базовое качество\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:799\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:405\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:830\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:400\n msgid \"Good Quality\"\n msgstr \"Хорошее качество\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:800\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:406\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:831\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:401\n msgid \"Best Quality\"\n msgstr \"Лучшее качество\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:801\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:407\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:832\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:402\n msgid \"Ultra Quality\"\n msgstr \"Ультракачество\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:802\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:833\n msgid \"Error: Empty \\\"if\\\" and \\\"value\\\" detected in action condition\"\n msgstr \"Ошибка: Обнаружены пустые \\\"if\\\" и \\\"value\\\" в условии действия\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:803\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:834\n msgid \"No Read-Only\"\n msgstr \"Не только чтение\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:804\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:835\n msgid \"No Border\"\n msgstr \"Без рамки\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:805\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:836\n msgid \"Quick Props\"\n msgstr \"Быстрые свойства\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:844\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:875\n #, php-format\n msgid \"E2Pdf requires PHP version 5.4 or later. Your PHP version is %s\"\n msgstr \"\"\n \"Требуемая версия PHP для работы E2Pdf 5.4 или новее. Установленная версия %s\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:865\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:900\n msgid \"Templates per page\"\n msgstr \"Количество шаблонов на странице\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:981\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:1016\n #, php-format\n msgid \"Can't create folder %s\"\n msgstr \"Невозможно создать папку %s\"\n@@ -1982,249 +1975,248 @@\n msgid \"Restore License Key\"\n msgstr \"Восстановить лицензионный ключ\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:84 classes\u002Fmodel\u002Fe2pdf-options.php:282\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:87 classes\u002Fmodel\u002Fe2pdf-options.php:285\n msgid \"Enabled\"\n msgstr \"Включено\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:88 classes\u002Fmodel\u002Fe2pdf-options.php:281\n-#: classes\u002Fmodel\u002Fe2pdf-options.php:292\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:91 classes\u002Fmodel\u002Fe2pdf-options.php:284\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:295\n msgid \"Disabled\"\n msgstr \"Отключено\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:94 classes\u002Fmodel\u002Fe2pdf-options.php:735\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:97 classes\u002Fmodel\u002Fe2pdf-options.php:797\n msgid \"Extensions\"\n msgstr \"Расширения\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:140 classes\u002Fview\u002Fpage-e2pdf-debug.php:37\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:143 classes\u002Fview\u002Fpage-e2pdf-debug.php:37\n msgid \"Common\"\n msgstr \"Обшие\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:143 classes\u002Fmodel\u002Fe2pdf-options.php:148\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:146 classes\u002Fmodel\u002Fe2pdf-options.php:151\n msgid \"E2Pdf.com Account E-mail Address\"\n msgstr \"E-Mail адрес E2Pdf аккаунта\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:151 classes\u002Fmodel\u002Fe2pdf-options.php:159\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:154 classes\u002Fmodel\u002Fe2pdf-options.php:162\n msgid \"API Server\"\n msgstr \"API сервер\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:172\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:175\n msgid \"API Connection Timout (sec)\"\n msgstr \"API таймаут (сек)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:181 classes\u002Fview\u002Fpage-e2pdf-debug.php:45\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:184 classes\u002Fview\u002Fpage-e2pdf-debug.php:45\n msgid \"PDF Processor\"\n msgstr \"PDF процессор\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:189\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:443\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:192\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:438\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:46\n msgid \"Font Processor\"\n msgstr \"Шрифт процессор\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:200\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:203\n msgid \"Release Candidate Builds\"\n msgstr \"Release Candidate сборки\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:206\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:209\n msgid \"Update from E2Pdf.com\"\n msgstr \"Обновлять с E2Pdf.com\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:209\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:212\n msgid \"URL Format\"\n msgstr \"Формат URL\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:220 classes\u002Fmodel\u002Fe2pdf-options.php:226\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:223 classes\u002Fmodel\u002Fe2pdf-options.php:229\n msgid \"URL Rewrite\"\n msgstr \"Перезапись URL\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:239 classes\u002Fview\u002Fpage-e2pdf-settings.php:123\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:242 classes\u002Fview\u002Fpage-e2pdf-settings.php:128\n msgid \"Cache\"\n msgstr \"Кеш\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:245\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:248\n msgid \"Objects Cache\"\n msgstr \"Кэш объектов\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:254\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:257\n msgid \"Fonts Cache\"\n msgstr \"Кэш шрифтов\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:263\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:266\n msgid \"PDFs Cache\"\n msgstr \"Кэш PDF\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:272\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:275\n msgid \"TTL (sec)\"\n msgstr \"TTL (сек)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:275\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:278\n msgid \"PDF Ajax Loader\"\n msgstr \"Загрузчик PDF Ajax\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:286\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:289\n msgid \"Fallback PDF Viewer\"\n msgstr \"Резервный просмотрщик PDF\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:303\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:306\n msgid \"\"\n \"Fix Chrome iOS Download Name (might be not compatible with certain setups)\"\n msgstr \"\"\n \"Исправить имя загрузки в Chrome для iOS (может быть несовместимо с \"\n \"некоторыми настройками)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:306 classes\u002Fmodel\u002Fe2pdf-options.php:312\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:309 classes\u002Fmodel\u002Fe2pdf-options.php:315\n msgid \"New Edit Layout\"\n msgstr \"Новый макет редактирования\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:315 classes\u002Fmodel\u002Fe2pdf-options.php:321\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:318 classes\u002Fmodel\u002Fe2pdf-options.php:324\n msgid \"Hide Warnings\"\n msgstr \"Спрятать предупреждения\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:324\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:327\n msgid \"Local Images\"\n msgstr \"Локальные изображения\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:330\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:333\n msgid \"Load via Remote Request\"\n msgstr \"Загружать при помощи удаленного запроса\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:333\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:336\n msgid \"Images Timout (sec)\"\n msgstr \"Таймаут изображений (сек)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:342\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:345\n msgid \"Bulk Export Interval (sec)\"\n msgstr \"Интервал массового экспорта (сек)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:351\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:354\n msgid \"Undo Limit\"\n msgstr \"Лимит отмен\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:360\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:363\n msgid \"Revisions Limit\"\n msgstr \"Лимит ревизий\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:369\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:372\n msgid \"Debug Mode\"\n msgstr \"Режим отладки\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:375\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:378\n msgid \"Enable Debug Mode\"\n msgstr \"Включить режим отладки\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:378 classes\u002Fmodel\u002Fe2pdf-options.php:383\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:381 classes\u002Fmodel\u002Fe2pdf-options.php:386\n #: classes\u002Fview\u002Fblocks\u002Fdebug-panel.php:10\n msgid \"Recovery Mode E-mail\"\n msgstr \"Recovery Mode E-mail\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:386\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:389\n msgid \"Memory\u002FTime Usage\"\n msgstr \"Затраченные память\u002Fвремя\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:392\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:395\n msgid \"Show Memory\u002FTime Usage\"\n msgstr \"Отображать затраченную память\u002Fвремя\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:397 classes\u002Fview\u002Fpage-e2pdf-debug.php:20\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:400 classes\u002Fview\u002Fpage-e2pdf-debug.php:20\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:190\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:100\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:105\n msgid \"Maintenance\"\n msgstr \"Обслуживание\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:402\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:405\n msgid \"Fonts\"\n msgstr \"Шрифты\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:407\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:410\n msgid \"Permissions\"\n msgstr \"Разрешения\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:460\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:452 classes\u002Fmodel\u002Fe2pdf-options.php:522\n msgid \"Authorized\"\n msgstr \"Авторизировано\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:743\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:811\n msgid \"Translation\"\n msgstr \"Перевод\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:747\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:815\n msgid \"PDF Translation\"\n msgstr \"Перевод PDF\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:753\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:821\n msgid \"No Translation\"\n msgstr \"Без перевода\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:754\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:822\n msgid \"Partial Translation\"\n msgstr \"Частичный перевод\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:755\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:823\n msgid \"Full Translation\"\n msgstr \"Полный перевод\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:387 classes\u002Fmodel\u002Fe2pdf-shortcode.php:643\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:1204\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:1326\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:245 classes\u002Fmodel\u002Fe2pdf-shortcode.php:6796\n+#: classes\u002Fmodel\u002Fe2pdf-template.php:1044\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:127\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:462\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:543 classes\u002Fview\u002Fpage-e2pdf.php:28\n msgid \"Download\"\n msgstr \"Скачать\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5891\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6561\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5029\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5755\n msgid \"Product\"\n msgstr \"Товар\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5894\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6564\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5032\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5758\n msgid \"SKU\"\n msgstr \"Код товара\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5897\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6567\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5035\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5761\n msgid \"Quantity\"\n msgstr \"Количество\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5900\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6570\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5038\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5764\n msgid \"Price\"\n msgstr \"Цена\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5903\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6573\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6649\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6885\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5041\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5767\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5833\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6069\n msgid \"Subtotal\"\n msgstr \"Subtotal\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6667\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6903\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5851\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6087\n msgid \"Free shipping coupon\"\n msgstr \"Купон бесплатной доставки\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6722\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6958\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5906\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6142\n msgid \"Shipping options will be updated during checkout.\"\n msgstr \"Опции доставки будут выбраны на странице оформления заказа.\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6800\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:7038\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5984\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6222\n #, php-format\n msgid \"estimated for %s\"\n msgstr \"для %s\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6811\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:7049\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5995\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6233\n msgid \"Total\"\n msgstr \"Total\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-template.php:170\n+#: classes\u002Fmodel\u002Fe2pdf-template.php:171\n msgid \"Latest\"\n msgstr \"Последняя\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-template.php:887\n+#: classes\u002Fmodel\u002Fe2pdf-template.php:951\n msgid \"Template Deactivated\"\n msgstr \"Шаблон деактивирован\"\n \n@@ -2268,8 +2260,8 @@\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:112 classes\u002Fview\u002Fpage-e2pdf-debug.php:114\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:123 classes\u002Fview\u002Fpage-e2pdf-debug.php:130\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:137 classes\u002Fview\u002Fpage-e2pdf-debug.php:144\n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:251 classes\u002Fview\u002Fpage-e2pdf-debug.php:260\n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:269\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:263 classes\u002Fview\u002Fpage-e2pdf-debug.php:272\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:281\n msgid \"[ERROR]\"\n msgstr \"[Ошибка]\"\n \n@@ -2472,192 +2464,192 @@\n msgid \"Update\"\n msgstr \"Сохранить\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:15\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:14\n msgid \"Meta\"\n msgstr \"Мета\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:17\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:16\n msgid \"Security\"\n msgstr \"Безопасность\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:26\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:25\n msgid \"Enter your E-mail to unlock this features\"\n msgstr \"Введите E-mail для разблокировки данных функций\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:33\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:32\n msgid \"E-mail\"\n msgstr \"E-mail\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:49\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:48\n msgid \"Global Font\"\n msgstr \"Глобальный шрифт\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:161\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:169\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:182\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:194\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:160\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:168\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:181\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:193\n msgid \"Dataset Title\"\n msgstr \"Имя записи\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:204\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:212\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:203\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:211\n msgid \"Button Title\"\n msgstr \"Имя кнопки\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:221\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:229\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:220\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:228\n msgid \"Dynamic PDF Source\"\n msgstr \"Динамический PDF исходник\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:258\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:257\n msgid \"JPG Output Resolution\"\n msgstr \"Разрешение JPG\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:285\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:284\n msgid \"Open PDF in Browser\"\n msgstr \"Открыть PDF в браузере\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:300\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:299\n msgid \"Auto PDF Download\"\n msgstr \"Автоматическая загрузка PDF\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:316\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:324\n-#: classes\u002Fview\u002Fpage-e2pdf.php:148 classes\u002Fview\u002Fpage-e2pdf.php:154\n-#: classes\u002Fview\u002Fpage-e2pdf.php:338 classes\u002Fview\u002Fpage-e2pdf.php:344\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:314\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:322\n+#: classes\u002Fview\u002Fpage-e2pdf.php:149 classes\u002Fview\u002Fpage-e2pdf.php:155\n+#: classes\u002Fview\u002Fpage-e2pdf.php:340 classes\u002Fview\u002Fpage-e2pdf.php:346\n msgid \"PDF Name\"\n msgstr \"Имя PDF\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:334\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:342\n-#: classes\u002Fview\u002Fpage-e2pdf.php:354 classes\u002Fview\u002Fpage-e2pdf.php:360\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:331\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:339\n+#: classes\u002Fview\u002Fpage-e2pdf.php:356 classes\u002Fview\u002Fpage-e2pdf.php:362\n msgid \"PDF Local Name\"\n msgstr \"Локальное имя PDF\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:352\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:348\n msgid \"PDF Flatten\"\n msgstr \"Схлопывание PDF\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:364\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:360\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:42 classes\u002Fview\u002Fpage-e2pdf-debug.php:43\n-#: classes\u002Fview\u002Fpage-e2pdf.php:206 classes\u002Fview\u002Fpage-e2pdf.php:413\n+#: classes\u002Fview\u002Fpage-e2pdf.php:207 classes\u002Fview\u002Fpage-e2pdf.php:415\n msgid \"No\"\n msgstr \"Нет\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:365\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:361\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:42 classes\u002Fview\u002Fpage-e2pdf-debug.php:43\n-#: classes\u002Fview\u002Fpage-e2pdf.php:207 classes\u002Fview\u002Fpage-e2pdf.php:414\n+#: classes\u002Fview\u002Fpage-e2pdf.php:208 classes\u002Fview\u002Fpage-e2pdf.php:416\n msgid \"Yes\"\n msgstr \"Да\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:366\n-#: classes\u002Fview\u002Fpage-e2pdf.php:208 classes\u002Fview\u002Fpage-e2pdf.php:415\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:362\n+#: classes\u002Fview\u002Fpage-e2pdf.php:209 classes\u002Fview\u002Fpage-e2pdf.php:417\n msgid \"Full\"\n msgstr \"Полностью\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:378\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:373\n msgid \"Generate appearance\"\n msgstr \"Генерировать вид\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:390\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:385\n msgid \"Images\"\n msgstr \"Изображения\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:414\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:409\n msgid \"Compression\"\n msgstr \"Сжатие\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:426\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:421\n msgid \"Default\"\n msgstr \"По умолчанию\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:466\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:460\n msgid \"PDF Tab Order\"\n msgstr \"Порядок вкладок PDF\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:477\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:471\n msgid \"Unspecified\"\n msgstr \"Не указано\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:478\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:472\n msgid \"Use Row Order\"\n msgstr \"Порядок строк\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:479\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:473\n msgid \"Use Column Order\"\n msgstr \"Порядок столбцов\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:480\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:474\n msgid \"Use Document Structure\"\n msgstr \"Структура документа\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:510\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:518\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:503\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:511\n msgid \"Subject\"\n msgstr \"Тема\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:528\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:536\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:521\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:529\n msgid \"Author\"\n msgstr \"Автор\"\n \n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:538\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:546\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:554\n msgid \"Keywords\"\n msgstr \"Ключевые слова\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:563\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:555\n msgid \"Lang Code\"\n msgstr \"Код Языка\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:587\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:595\n-#: classes\u002Fview\u002Fpage-e2pdf.php:164 classes\u002Fview\u002Fpage-e2pdf.php:370\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:578\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:586\n+#: classes\u002Fview\u002Fpage-e2pdf.php:165 classes\u002Fview\u002Fpage-e2pdf.php:372\n msgid \"PDF Open Password\"\n msgstr \"Пароль открытия PDF\"\n \n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:596\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:605\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:614\n msgid \"Permissions Owner Password\"\n msgstr \"Пароль редактирования\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:623\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:614\n msgid \"Permissions (Opened with PDF Open Password)\"\n msgstr \"Разрешения (Открытие при помощи Пароля открытия)\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:632\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:623\n msgid \"Printing\"\n msgstr \"Печать\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:641\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:632\n msgid \"Printing (Degraded)\"\n msgstr \"Печать (низкокачестенная)\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:650\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:641\n msgid \"Editing\"\n msgstr \"Редактирование\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:659\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:650\n msgid \"Copying\"\n msgstr \"Копирование\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:668\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:659\n msgid \"Commenting\"\n msgstr \"Комментирование\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:677\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:668\n msgid \"Fill-In or Signing\"\n msgstr \"Заполнение или Подписание\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:686\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:677\n msgid \"Document Assembly\"\n msgstr \"Сборка документов\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:695\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:686\n msgid \"Screen Reader Accessibility\"\n msgstr \"Доступ Screen Reader\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:12 classes\u002Fview\u002Fpage-e2pdf-debug.php:245\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:12 classes\u002Fview\u002Fpage-e2pdf-debug.php:257\n msgid \"Connections\"\n msgstr \"Соединения\"\n \n@@ -2666,13 +2658,13 @@\n msgstr \"БД\"\n \n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:25 classes\u002Fview\u002Fpage-e2pdf-debug.php:195\n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:206\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:105\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:116\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:128\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:139\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:150\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:162\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:207 classes\u002Fview\u002Fpage-e2pdf-debug.php:219\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:110\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:121\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:133\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:144\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:155\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:167\n msgid \"Are you sure want to continue?\"\n msgstr \"Вы действительно желаете продолжить?\"\n \n@@ -2748,7 +2740,7 @@\n msgid \"Plugins\"\n msgstr \"Плагины\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:215\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:228\n msgid \"\"\n \"* It is strongly RECOMMENDED that you backup your DB before any of these \"\n \"actions are applied to avoid data loss\"\n@@ -2756,15 +2748,15 @@\n \"* Рекомендуется сделать резервную копию БД перед выполнением любого действия \"\n \"для предотвращения потери данных\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:252\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:264\n msgid \"Back-connection\"\n msgstr \"Back-соединение\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:261\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:273\n msgid \"Upload Speed\"\n msgstr \"Скорость загрузки\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:270\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:282\n msgid \"Download Speed\"\n msgstr \"Скорость скачивания\"\n \n@@ -2788,16 +2780,23 @@\n msgid \"Expire Date\"\n msgstr \"Дата окончания\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:27\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:12\n+msgid \"\"\n+\"It's recommended to use the Integration Hooks in the E2Pdf Template settings \"\n+\"instead\"\n+msgstr \"\"\n+\"Рекомендуется использовать интеграционные хуки в настройках шаблона E2Pdf\"\n+\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:32\n msgid \"Upload Font\"\n msgstr \"Загрузить шрифт\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:32\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:37\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:388\n msgid \"Allowed File Types\"\n msgstr \"Разрешенные типы файлов\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:38\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:43\n msgid \"Upload\"\n msgstr \"Загрузить\"\n \n@@ -2874,50 +2873,74 @@\n msgid \"Template Title\"\n msgstr \"Название шаблона\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:12 classes\u002Fview\u002Fpage-e2pdf.php:467\n-msgid \"Create PDFs in Bulk\"\n-msgstr \"Массовая генерация PDF\"\n+#: classes\u002Fview\u002Fpage-e2pdf.php:12 classes\u002Fview\u002Fpage-e2pdf.php:469\n+msgid \"Bulk Create PDFs\"\n+msgstr \"Массовое создание PDF\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:63 classes\u002Fview\u002Fpage-e2pdf.php:296\n+#: classes\u002Fview\u002Fpage-e2pdf.php:64 classes\u002Fview\u002Fpage-e2pdf.php:298\n msgid \"Dataset\"\n msgstr \"Запись\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:98\n+#: classes\u002Fview\u002Fpage-e2pdf.php:99\n msgid \"Dataset2\"\n msgstr \"Запись2\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:138\n+#: classes\u002Fview\u002Fpage-e2pdf.php:139\n msgid \"Shortcode for a Download Link with a Dynamic Dataset\"\n msgstr \"Шорткод для загрузки динамической записи\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:142\n+#: classes\u002Fview\u002Fpage-e2pdf.php:143\n msgid \"Shortcode for a Download Link with the Current Dataset\"\n msgstr \"Шорткод для загрузки данной записи\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:180 classes\u002Fview\u002Fpage-e2pdf.php:386\n+#: classes\u002Fview\u002Fpage-e2pdf.php:181 classes\u002Fview\u002Fpage-e2pdf.php:388\n msgid \"User\"\n msgstr \"Пользователь\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:196 classes\u002Fview\u002Fpage-e2pdf.php:403\n+#: classes\u002Fview\u002Fpage-e2pdf.php:197 classes\u002Fview\u002Fpage-e2pdf.php:405\n msgid \"Flatten\"\n msgstr \"Схлопнуть\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:235 classes\u002Fview\u002Fpage-e2pdf.php:442\n+#: classes\u002Fview\u002Fpage-e2pdf.php:236 classes\u002Fview\u002Fpage-e2pdf.php:444\n msgid \"Arguments\"\n msgstr \"Аргументы\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:306\n+#: classes\u002Fview\u002Fpage-e2pdf.php:308\n msgid \"Filter...\"\n msgstr \"Фильтр...\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:478\n+#: classes\u002Fview\u002Fpage-e2pdf.php:480\n msgid \"Progress\"\n msgstr \"Прогресс\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:480\n+#: classes\u002Fview\u002Fpage-e2pdf.php:482\n msgid \"Created\"\n msgstr \"Создано\"\n \n+#, php-format\n+#~ msgid \"\"\n+#~ \"The Bulk PDFs creation is not available with Free License Type. Check \u003Ca \"\n+#~ \"target='_blank' href='%s'>%s\u003C\u002Fa> for upgrade options\"\n+#~ msgstr \"\"\n+#~ \"Массовый экспорт недоступен в бесплатной версии. Пожалуйста посетите \u003Ca \"\n+#~ \"target='_blank' href='%s'>%s\u003C\u002Fa> для просмотра вариантов получения полной \"\n+#~ \"версии\"\n+\n+#~ msgid \"Enable PDF Access By URL\"\n+#~ msgstr \"Включить доступ к PDF по URL\"\n+\n+#~ msgid \"Disable PDF Access By URL\"\n+#~ msgstr \"Отключить доступ к PDF по URL\"\n+\n+#~ msgid \"Enable Shortcodes\"\n+#~ msgstr \"Включить шорткоды\"\n+\n+#~ msgid \"Disable Shortcodes\"\n+#~ msgstr \"Отключить шорткоды\"\n+\n+#~ msgid \"Create PDFs in Bulk\"\n+#~ msgstr \"Массовая генерация PDF\"\n+\n #~ msgid \"HTML Worker\"\n #~ msgstr \"HTML Worker\"\n \nBinary files \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Flanguages\u002Fe2pdf-uk.mo and \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Flanguages\u002Fe2pdf-uk.mo differ\ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Flanguages\u002Fe2pdf-uk.po \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Flanguages\u002Fe2pdf-uk.po\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Flanguages\u002Fe2pdf-uk.po\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Flanguages\u002Fe2pdf-uk.po\t2026-02-24 09:27:28.000000000 +0000\n@@ -1,8 +1,8 @@\n msgid \"\"\n msgstr \"\"\n \"Project-Id-Version: e2pdf\\n\"\n-\"POT-Creation-Date: 2025-04-22 17:10+0200\\n\"\n-\"PO-Revision-Date: 2025-04-22 17:10+0200\\n\"\n+\"POT-Creation-Date: 2025-08-29 13:16+0200\\n\"\n+\"PO-Revision-Date: 2025-08-29 13:16+0200\\n\"\n \"Last-Translator: Weblate Admin \u003Cadmin@example.com>\\n\"\n \"Language-Team: Ukrainian \u003Chttps:\u002F\u002Flocalhost\u002Fprojects\u002Fe2pdf\u002Fe2pdf\u002Fuk\u002F>\\n\"\n \"Language: uk\\n\"\n@@ -19,7 +19,7 @@\n \"X-Poedit-SearchPathExcluded-0: assets\\n\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-debug.php:25 classes\u002Fcontroller\u002Fe2pdf-debug.php:51\n-#: classes\u002Fcontroller\u002Fe2pdf-debug.php:63\n+#: classes\u002Fcontroller\u002Fe2pdf-debug.php:55 classes\u002Fcontroller\u002Fe2pdf-debug.php:59\n #: classes\u002Fcontroller\u002Fe2pdf-integrations.php:23\n #: classes\u002Fcontroller\u002Fe2pdf-license.php:63\n #: classes\u002Fcontroller\u002Fe2pdf-license.php:112\n@@ -34,7 +34,7 @@\n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:253\n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:275\n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:315\n-#: classes\u002Fcontroller\u002Fe2pdf-settings.php:341\n+#: classes\u002Fcontroller\u002Fe2pdf-settings.php:340\n #, php-format\n msgid \"Success: %s\"\n msgstr \"Успіх: %s\"\n@@ -47,7 +47,11 @@\n msgid \"Repair DB\"\n msgstr \"Відновлення БД\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf-debug.php:63 classes\u002Fview\u002Fpage-e2pdf-debug.php:204\n+#: classes\u002Fcontroller\u002Fe2pdf-debug.php:55 classes\u002Fview\u002Fpage-e2pdf-debug.php:205\n+msgid \"Repair DB Collate\"\n+msgstr \"Відновити DB Collate\"\n+\n+#: classes\u002Fcontroller\u002Fe2pdf-debug.php:59 classes\u002Fview\u002Fpage-e2pdf-debug.php:217\n msgid \"Reinitialize DB Hooks\"\n msgstr \"Повторна ініціалізація хуків БД\"\n \n@@ -56,16 +60,17 @@\n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:253\n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:275\n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:315\n-#: classes\u002Fcontroller\u002Fe2pdf-settings.php:341\n+#: classes\u002Fcontroller\u002Fe2pdf-settings.php:340\n msgid \"Settings Saved\"\n msgstr \"Налаштування збережено\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-integrations.php:45\n-#: classes\u002Fmodel\u002Fe2pdf-options.php:460\n+#: classes\u002Fcontroller\u002Fe2pdf-integrations.php:103\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:452 classes\u002Fmodel\u002Fe2pdf-options.php:522\n msgid \"Not Authorized\"\n msgstr \"Не авторизовано\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf-integrations.php:72\n+#: classes\u002Fcontroller\u002Fe2pdf-integrations.php:70\n msgid \"App Authorized\"\n msgstr \"Додаток авторизовано\"\n \n@@ -100,32 +105,32 @@\n \"можете зареєструватися за адресою %s\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:98\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:126\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:131\n msgid \"Purge Objects Cache\"\n msgstr \"Очистити кеш об'єктів\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:109\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:137\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:142\n msgid \"Purge Fonts Cache\"\n msgstr \"Очистити кеш шрифтів\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:120\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:148\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:153\n msgid \"Purge PDFs Cache\"\n msgstr \"Очистити кеш PDF\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:131\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:160\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:165\n msgid \"Purge Full Cache\"\n msgstr \"Очистити весь кеш\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:143\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:103\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:108\n msgid \"Optimize DB\"\n msgstr \"Оптимізувати БД\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-settings.php:154\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:114\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:119\n msgid \"Clear Recovery Mode Limit\"\n msgstr \"Очистити обмеження режиму відновлення\"\n \n@@ -167,16 +172,16 @@\n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:1571\n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:1781\n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:2039\n-#: classes\u002Fcontroller\u002Fe2pdf-templates.php:2055 classes\u002Fcontroller\u002Fe2pdf.php:708\n-#: classes\u002Fcontroller\u002Ffrontend\u002Fe2pdf-download.php:304\n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:863\n+#: classes\u002Fcontroller\u002Fe2pdf-templates.php:2055 classes\u002Fcontroller\u002Fe2pdf.php:734\n+#: classes\u002Fcontroller\u002Ffrontend\u002Fe2pdf-download.php:347\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:793\n #: classes\u002Fmodel\u002Fe2pdf-adobesign.php:127 classes\u002Fmodel\u002Fe2pdf-adobesign.php:208\n-#: classes\u002Fmodel\u002Fe2pdf-api.php:111 classes\u002Fmodel\u002Fe2pdf-template.php:768\n-#: classes\u002Fmodel\u002Fe2pdf-template.php:877 classes\u002Fmodel\u002Fe2pdf-template.php:911\n+#: classes\u002Fmodel\u002Fe2pdf-api.php:111 classes\u002Fmodel\u002Fe2pdf-template.php:832\n+#: classes\u002Fmodel\u002Fe2pdf-template.php:941 classes\u002Fmodel\u002Fe2pdf-template.php:975\n msgid \"Something went wrong!\"\n msgstr \"Щось пішло не так!\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf-settings.php:380\n+#: classes\u002Fcontroller\u002Fe2pdf-settings.php:379\n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:78\n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:465\n #, php-format\n@@ -228,9 +233,9 @@\n \"target=\\\"_blank\\\" href=\\\"%3$s\\\">Редагувати\u003C\u002Fa>\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:849\n-#: classes\u002Fcontroller\u002Fe2pdf-templates.php:1108 classes\u002Fcontroller\u002Fe2pdf.php:716\n-#: classes\u002Fmodel\u002Fe2pdf-extension.php:250 classes\u002Fmodel\u002Fe2pdf-extension.php:254\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:851\n+#: classes\u002Fcontroller\u002Fe2pdf-templates.php:1108 classes\u002Fcontroller\u002Fe2pdf.php:742\n+#: classes\u002Fmodel\u002Fe2pdf-extension.php:255 classes\u002Fmodel\u002Fe2pdf-extension.php:259\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:882\n #, php-format\n msgid \"The PHP %s extension is required\"\n msgstr \"Необхідне розширення PHP %s\"\n@@ -260,7 +265,7 @@\n msgstr \"Імпортувати з'єднання\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:1119\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:549\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:584\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:40\n msgid \"Options\"\n msgstr \"Опції\"\n@@ -291,14 +296,14 @@\n msgstr \"Автоформа з PDF\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:1289 classes\u002Fcontroller\u002Fe2pdf.php:45\n-#: classes\u002Fcontroller\u002Fe2pdf.php:87 classes\u002Fcontroller\u002Fe2pdf.php:445\n-#: classes\u002Fcontroller\u002Fe2pdf.php:468\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2442\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2452\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:575 classes\u002Fview\u002Fpage-e2pdf.php:53\n-#: classes\u002Fview\u002Fpage-e2pdf.php:76 classes\u002Fview\u002Fpage-e2pdf.php:85\n-#: classes\u002Fview\u002Fpage-e2pdf.php:111 classes\u002Fview\u002Fpage-e2pdf.php:118\n-#: classes\u002Fview\u002Fpage-e2pdf.php:286 classes\u002Fview\u002Fpage-e2pdf.php:322\n+#: classes\u002Fcontroller\u002Fe2pdf.php:87 classes\u002Fcontroller\u002Fe2pdf.php:452\n+#: classes\u002Fcontroller\u002Fe2pdf.php:475\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3342\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3353\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:610 classes\u002Fview\u002Fpage-e2pdf.php:54\n+#: classes\u002Fview\u002Fpage-e2pdf.php:77 classes\u002Fview\u002Fpage-e2pdf.php:86\n+#: classes\u002Fview\u002Fpage-e2pdf.php:112 classes\u002Fview\u002Fpage-e2pdf.php:119\n+#: classes\u002Fview\u002Fpage-e2pdf.php:288 classes\u002Fview\u002Fpage-e2pdf.php:324\n msgid \"--- Select ---\"\n msgstr \"--- Вибрати ---\"\n \n@@ -311,9 +316,10 @@\n msgstr \"Вибачте, це розширення не підтримує Visual Mapper\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:1356\n+#: classes\u002Fcontroller\u002Ffrontend\u002Fe2pdf-download.php:274\n #: classes\u002Fextension\u002Fe2pdf-formidable.php:254\n-#: classes\u002Fmodel\u002Fe2pdf-revision.php:205 classes\u002Fmodel\u002Fe2pdf-template.php:185\n-#: classes\u002Fmodel\u002Fe2pdf-template.php:825\n+#: classes\u002Fmodel\u002Fe2pdf-revision.php:205 classes\u002Fmodel\u002Fe2pdf-template.php:186\n+#: classes\u002Fmodel\u002Fe2pdf-template.php:889 classes\u002Fmodel\u002Fe2pdf-template.php:1040\n msgid \"(no title)\"\n msgstr \"(без назви)\"\n \n@@ -358,7 +364,7 @@\n msgstr \"Конструктор PDF\"\n \n #: classes\u002Fcontroller\u002Fe2pdf-templates.php:2562\n-#: classes\u002Fhelper\u002Fe2pdf-helper.php:292 classes\u002Fmodel\u002Fe2pdf-loader.php:439\n+#: classes\u002Fhelper\u002Fe2pdf-helper.php:293 classes\u002Fmodel\u002Fe2pdf-loader.php:478\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:44 classes\u002Fview\u002Fpage-e2pdf-settings.php:7\n msgid \"Settings\"\n msgstr \"Налаштування\"\n@@ -373,87 +379,86 @@\n #: classes\u002Fcontroller\u002Fe2pdf.php:75\n #, php-format\n msgid \"\"\n-\"The Bulk PDFs creation is not available with Free License Type. Check \u003Ca \"\n-\"target='_blank' href='%s'>%s\u003C\u002Fa> for upgrade options\"\n+\"Bulk PDF generation is not available with the Free License Type. Please \"\n+\"visit \u003Ca target='_blank' href='%s'>%s\u003C\u002Fa> for upgrade options\"\n msgstr \"\"\n-\"Масова генерація PDF недоступна для типу ліцензії \\\"Безкоштовна\\\". Перевірте \"\n-\"\u003Ca target=\\\"_blank\\\" href=\\\"%s\\\">%s\u003C\u002Fa> для варіантів оновлення\"\n+\"Масове створення PDF недоступне з типом безкоштовної ліцензії. Будь ласка, \"\n+\"відвідайте \u003Ca target='_blank' href='%s'>%s\u003C\u002Fa> для отримання варіантів \"\n+\"оновлення\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:337\n+#: classes\u002Fcontroller\u002Fe2pdf.php:344\n msgid \"Incorrect Dataset\"\n msgstr \"Неправильний набір даних\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:341\n+#: classes\u002Fcontroller\u002Fe2pdf.php:348\n msgid \"Template can't be loaded\"\n msgstr \"Шаблон не може бути завантажений\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:521\n+#: classes\u002Fcontroller\u002Fe2pdf.php:546\n msgid \"Delete All Datasets\"\n msgstr \"Видалити всі набори даних\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:531\n+#: classes\u002Fcontroller\u002Fe2pdf.php:556\n msgid \"Edit Template\"\n msgstr \"Редагувати шаблон\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:613\n+#: classes\u002Fcontroller\u002Fe2pdf.php:639\n msgid \"View Dataset\"\n msgstr \"Переглянути набір даних\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:616\n+#: classes\u002Fcontroller\u002Fe2pdf.php:642\n msgid \"Delete Dataset\"\n msgstr \"Видалити набір даних\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:662\n+#: classes\u002Fcontroller\u002Fe2pdf.php:688\n msgid \"Dataset can't be removed!\"\n msgstr \"Не вдалося видалити набір даних!\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:694\n+#: classes\u002Fcontroller\u002Fe2pdf.php:720\n msgid \"Datasets can't be removed!\"\n msgstr \"Не вдалося видалити набори даних!\"\n \n-#: classes\u002Fcontroller\u002Fe2pdf.php:712\n-#, php-format\n+#: classes\u002Fcontroller\u002Fe2pdf.php:738\n msgid \"\"\n-\"The Bulk PDFs generation is not available with Free License Type. Check \u003Ca \"\n-\"target='_blank' href='%s'>%s\u003C\u002Fa> for upgrade options\"\n+\"Bulk PDF generation is not available with the Free License Type. Please \"\n+\"visit https:\u002F\u002Fe2pdf.com\u002Fprice for upgrade options\"\n msgstr \"\"\n \"Масова генерація PDF недоступна для типу ліцензії \\\"Безкоштовна\\\". Перевірте \"\n \"\u003Ca target='_blank' href='%s'>%s\u003C\u002Fa> для варіантів оновлення\"\n \n-#: classes\u002Fcontroller\u002Ffrontend\u002Fe2pdf-download.php:141\n+#: classes\u002Fcontroller\u002Ffrontend\u002Fe2pdf-download.php:169\n msgid \"Access Denied!\"\n msgstr \"Доступ заборонено!\"\n \n #: classes\u002Fextension\u002Fe2pdf-caldera.php:376\n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:3347\n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:822\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:3364\n #, php-format\n msgid \"Success. [e2pdf-download id=\\\"%s\\\"]\"\n msgstr \"Успішно. [e2pdf-download id=\\\"%s\\\"]\"\n \n-#: classes\u002Fextension\u002Fe2pdf-caldera.php:611 classes\u002Fextension\u002Fe2pdf-divi.php:935\n-#: classes\u002Fextension\u002Fe2pdf-elementor.php:505\n-#: classes\u002Fextension\u002Fe2pdf-everest.php:268\n-#: classes\u002Fextension\u002Fe2pdf-fluent.php:1404\n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:3525\n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:894\n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1840\n-#: classes\u002Fextension\u002Fe2pdf-jetformbuilder.php:604\n+#: classes\u002Fextension\u002Fe2pdf-caldera.php:611 classes\u002Fextension\u002Fe2pdf-divi.php:937\n+#: classes\u002Fextension\u002Fe2pdf-elementor.php:458\n+#: classes\u002Fextension\u002Fe2pdf-everest.php:283\n+#: classes\u002Fextension\u002Fe2pdf-fluent.php:1486\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:3544\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:824\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1697\n+#: classes\u002Fextension\u002Fe2pdf-jetformbuilder.php:615\n #: classes\u002Fextension\u002Fe2pdf-wpcf7.php:653\n-#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1167\n+#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1267\n msgid \"The form source is empty or doesn't exist\"\n msgstr \"Джерело форми відсутнє або порожнє\"\n \n-#: classes\u002Fextension\u002Fe2pdf-caldera.php:613 classes\u002Fextension\u002Fe2pdf-divi.php:937\n-#: classes\u002Fextension\u002Fe2pdf-elementor.php:507\n-#: classes\u002Fextension\u002Fe2pdf-everest.php:270\n-#: classes\u002Fextension\u002Fe2pdf-fluent.php:1406\n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:3527\n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:896\n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1842\n-#: classes\u002Fextension\u002Fe2pdf-jetformbuilder.php:606\n+#: classes\u002Fextension\u002Fe2pdf-caldera.php:613 classes\u002Fextension\u002Fe2pdf-divi.php:939\n+#: classes\u002Fextension\u002Fe2pdf-elementor.php:460\n+#: classes\u002Fextension\u002Fe2pdf-everest.php:285\n+#: classes\u002Fextension\u002Fe2pdf-fluent.php:1488\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:3546\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:826\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1699\n+#: classes\u002Fextension\u002Fe2pdf-jetformbuilder.php:617\n #: classes\u002Fextension\u002Fe2pdf-wpcf7.php:655\n-#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1169\n+#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1269\n msgid \"The form could not be parsed due the incorrect HTML\"\n msgstr \"Форму не вдалося розібрати через некоректний HTML\"\n \n@@ -461,99 +466,104 @@\n msgid \" (child)\"\n msgstr \" (Дочірна)\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1107\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1124\n msgid \"Auto PDF and Visual Mapper\"\n msgstr \"Авто PDF та Візуальний маппер\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1113\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1130\n msgid \"Use Field Keys instead Field IDs\"\n msgstr \"Ключі полів замість ID полів\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1116\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1133\n msgid \"Filter\"\n msgstr \"Фільтр\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1122\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1139\n msgid \"Disable Filter\"\n msgstr \"Вимкнути фільтр\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1158\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1175\n msgid \"Force shortcodes to use\"\n msgstr \"Використовувати шорткоди\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1164\n-#: classes\u002Fextension\u002Fe2pdf-metform.php:1159 classes\u002Fmodel\u002Fe2pdf-loader.php:613\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1181\n+#: classes\u002Fextension\u002Fe2pdf-metform.php:1212 classes\u002Fmodel\u002Fe2pdf-loader.php:648\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:122\n msgid \"None\"\n msgstr \"Жоден\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1165\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1182\n msgid \"Fields IDs\"\n msgstr \"ID полів\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:1166\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:1183\n msgid \"Field Keys\"\n msgstr \"Ключі полів\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:3491\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:3510\n msgid \"Child form doesn't support Visual Mapper\"\n msgstr \"Дочірня форма не підтримує візуальний маппер\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:3653\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:3672\n msgid \"File Upload\"\n msgstr \"Завантаження файлу\"\n \n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:4124\n-#: classes\u002Fextension\u002Fe2pdf-formidable.php:4156\n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:2659\n-#: classes\u002Fextension\u002Fe2pdf-jetformbuilder.php:1255\n-#: classes\u002Fextension\u002Fe2pdf-metform.php:1124\n-#: classes\u002Fextension\u002Fe2pdf-metform.php:1167\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3588\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3652\n-#: classes\u002Fextension\u002Fe2pdf-wordpress.php:1331\n-#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1312\n-#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1348\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:4143\n+#: classes\u002Fextension\u002Fe2pdf-formidable.php:4185\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:2527\n+#: classes\u002Fextension\u002Fe2pdf-jetformbuilder.php:1285\n+#: classes\u002Fextension\u002Fe2pdf-metform.php:1166\n+#: classes\u002Fextension\u002Fe2pdf-metform.php:1221\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3574\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3658\n+#: classes\u002Fextension\u002Fe2pdf-wordpress.php:1466\n+#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1417\n+#: classes\u002Fextension\u002Fe2pdf-wpforms.php:1464\n msgid \"E2Pdf Actions\"\n msgstr \"E2Pdf Дії\"\n \n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:824\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:755\n+#, php-format\n+msgid \"Success. [e2pdf-download id=\\\"%d\\\"]\"\n+msgstr \"Успішно. [e2pdf-download id=\\\"%d\\\"]\"\n+\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:757\n msgid \"Send Message\"\n msgstr \"Відправити повідомлення\"\n \n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:826\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:759\n msgid \"Error: Your form is not valid, please fix the errors!\"\n msgstr \"Помилка: Ваша форма недійсна, будь ласка, виправте помилки!\"\n \n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:855\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:785\n msgid \"Form could not be found\"\n msgstr \"Форму не знайдено\"\n \n-#: classes\u002Fextension\u002Fe2pdf-forminator.php:1926\n+#: classes\u002Fextension\u002Fe2pdf-forminator.php:1852\n msgid \"Custom Fields\"\n msgstr \"Користувацькі поля\"\n \n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1145 classes\u002Fmodel\u002Fe2pdf-loader.php:618\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:492\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:500\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1052 classes\u002Fmodel\u002Fe2pdf-loader.php:653\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:485\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:493\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:79\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:207\n msgid \"Title\"\n msgstr \"Назва\"\n \n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1189\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1092\n msgid \"Caption\"\n msgstr \"Заголовок\"\n \n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1233\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1132\n msgid \"Description\"\n msgstr \"Опис\"\n \n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1631\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1491\n msgid \"Default Confirmation\"\n msgstr \"Підтвердження за замовчуванням\"\n \n-#: classes\u002Fextension\u002Fe2pdf-gravity.php:1635\n+#: classes\u002Fextension\u002Fe2pdf-gravity.php:1495\n #, php-format\n msgid \"\"\n \"Thanks for contacting us! We will get in touch with you shortly. [e2pdf-\"\n@@ -566,70 +576,70 @@\n msgid \"Cart \u002F Checkout\"\n msgstr \"Кошик \u002F Оформлення замовлення\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2468\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3370\n msgid \"User Order List\"\n msgstr \"Список замовлень користувача\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2469\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2493\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2531\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2549\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2583\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2620\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:11\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3371\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3395\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3433\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3451\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3484\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3520\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:10\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:386\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:477 classes\u002Fview\u002Fpage-e2pdf.php:37\n-#: classes\u002Fview\u002Fpage-e2pdf.php:270 classes\u002Fview\u002Fpage-e2pdf.php:477\n+#: classes\u002Fview\u002Fpage-e2pdf.php:271 classes\u002Fview\u002Fpage-e2pdf.php:479\n msgid \"Template\"\n msgstr \"Шаблон\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2477\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2501\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2602\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2628\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3379\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3403\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3503\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3528\n msgid \"Order Status\"\n msgstr \"Статус замовлення\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2483\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2521\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2539\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2568\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2608\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3385\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3423\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3441\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3470\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3509\n msgid \"Priority\"\n msgstr \"Пріорітет\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2492\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3394\n msgid \"User Order Details\"\n msgstr \"Деталі замовлення користувача\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2507\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2557\n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2591\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3409\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3459\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3492\n msgid \"Hook\"\n msgstr \"Хук\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2530\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3432\n msgid \"User Cart\"\n msgstr \"Кошик користувача\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2548\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3450\n msgid \"User Checkout\"\n msgstr \"Оформлення замовлення користувача\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2582\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3483\n msgid \"Admin Order List\"\n msgstr \"Список замовлень адміністратора\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2619\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3519\n msgid \"Admin Order Details\"\n msgstr \"Деталі замовлення для адміністратора\"\n \n-#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:2662\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:603\n+#: classes\u002Fextension\u002Fe2pdf-woocommerce.php:3561\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:638\n msgid \"Any\"\n msgstr \"Будь-який\"\n \n-#: classes\u002Fextension\u002Fe2pdf-wordpress.php:228\n+#: classes\u002Fextension\u002Fe2pdf-wordpress.php:213\n msgid \"Users\"\n msgstr \"Користувачі\"\n \n@@ -638,36 +648,36 @@\n msgid \"Signature\"\n msgstr \"Підпис\"\n \n-#: classes\u002Fextension\u002Fe2pdf-wpcf7.php:1447\n+#: classes\u002Fextension\u002Fe2pdf-wpcf7.php:1457\n msgid \"Storing Engine\"\n msgstr \"Сховище даних\"\n \n-#: classes\u002Fhelper\u002Fe2pdf-db.php:660 classes\u002Fhelper\u002Fe2pdf-db.php:718\n-#: classes\u002Fhelper\u002Fe2pdf-db.php:739 classes\u002Fhelper\u002Fe2pdf-db.php:751\n-#: classes\u002Fhelper\u002Fe2pdf-db.php:771\n+#: classes\u002Fhelper\u002Fe2pdf-db.php:718 classes\u002Fhelper\u002Fe2pdf-db.php:776\n+#: classes\u002Fhelper\u002Fe2pdf-db.php:797 classes\u002Fhelper\u002Fe2pdf-db.php:809\n+#: classes\u002Fhelper\u002Fe2pdf-db.php:829\n msgid \"Undefined\"\n msgstr \"Не визначено\"\n \n-#: classes\u002Fhelper\u002Fe2pdf-helper.php:284 classes\u002Fmodel\u002Fe2pdf-loader.php:436\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:523\n+#: classes\u002Fhelper\u002Fe2pdf-helper.php:285 classes\u002Fmodel\u002Fe2pdf-loader.php:475\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:558\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:67\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:129 classes\u002Fview\u002Fpage-e2pdf.php:7\n-#: classes\u002Fview\u002Fpage-e2pdf.php:11 classes\u002Fview\u002Fpage-e2pdf.php:260\n+#: classes\u002Fview\u002Fpage-e2pdf.php:11 classes\u002Fview\u002Fpage-e2pdf.php:261\n msgid \"Create PDF\"\n msgstr \"Створити PDF\"\n \n-#: classes\u002Fhelper\u002Fe2pdf-helper.php:288 classes\u002Fmodel\u002Fe2pdf-loader.php:437\n+#: classes\u002Fhelper\u002Fe2pdf-helper.php:289 classes\u002Fmodel\u002Fe2pdf-loader.php:476\n #: classes\u002Fview\u002Fpage-e2pdf-license.php:51\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:14\n msgid \"Templates\"\n msgstr \"Шаблони\"\n \n-#: classes\u002Fhelper\u002Fe2pdf-helper.php:296 classes\u002Fmodel\u002Fe2pdf-loader.php:440\n+#: classes\u002Fhelper\u002Fe2pdf-helper.php:297 classes\u002Fmodel\u002Fe2pdf-loader.php:479\n #: classes\u002Fview\u002Fpage-e2pdf-license.php:7 classes\u002Fview\u002Fpage-e2pdf-license.php:11\n msgid \"License\"\n msgstr \"Ліцензія\"\n \n-#: classes\u002Fhelper\u002Fe2pdf-helper.php:300 classes\u002Fmodel\u002Fe2pdf-loader.php:442\n+#: classes\u002Fhelper\u002Fe2pdf-helper.php:301 classes\u002Fmodel\u002Fe2pdf-loader.php:481\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:7 classes\u002Fview\u002Fpage-e2pdf-debug.php:11\n msgid \"Debug\"\n msgstr \"Налагодження\"\n@@ -684,48 +694,48 @@\n msgid \"Access Token is not set or Incorrect\"\n msgstr \"Токен доступу не встановлений або неправильний\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:292\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:331\n msgid \"E2Pdf Bulk Export Interval\"\n msgstr \"Інтервал масового експорту E2Pdf\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:438\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:477\n #: classes\u002Fview\u002Fpage-e2pdf-integrations.php:7\n msgid \"Integrations\"\n msgstr \"Інтеграції\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:496\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:531\n msgid \"Page will be removed! Continue?\"\n msgstr \"Сторінка буде видалена! Продовжити?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:497\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:532\n msgid \"Font will be removed! Continue?\"\n msgstr \"Шрифт буде видалено! Продовжити?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:498\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:533\n msgid \"Changes will not be saved! Continue?\"\n msgstr \"Зміни не будуть збережені! Продовжити?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:499\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:534\n msgid \"Saved Template will be overwritten! Continue?\"\n msgstr \"Збережений шаблон буде перезаписаний! Продовжити?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:500\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:535\n msgid \"All pages will be removed! Continue?\"\n msgstr \"Усі сторінки будуть видалені! Продовжити?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:501\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:536\n msgid \"Adding new pages not available in \\\"Uploaded PDF\\\"\"\n msgstr \"Додавання нових сторінок недоступне в \\\"Завантаженому PDF\\\"\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:502\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:537\n msgid \"Dataset will be removed! Continue?\"\n msgstr \"Набір даних буде видалено! Продовжити?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:503\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:538\n msgid \"All datasets will be removed! Continue?\"\n msgstr \"Усі набори даних будуть видалені! Продовжити?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:504\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:539\n msgid \"\"\n \"WARNING: Template has changes after last save! Changes will be lost! \"\n \"Continue?\"\n@@ -733,197 +743,197 @@\n \"УВАГА: Шаблон має зміни після останнього збереження! Зміни будуть втрачені! \"\n \"Продовжити?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:505\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:540\n msgid \"Element will be removed! Continue?\"\n msgstr \"Елемент буде видалено! Продовжити?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:506\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:541\n msgid \"Elements will be removed! Continue?\"\n msgstr \"Елементи будуть видалені! Продовжити?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:507\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:542\n msgid \"Action will be removed! Continue?\"\n msgstr \"Дію буде видалено! Продовжити?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:508\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:543\n msgid \"Condition will be removed! Continue?\"\n msgstr \"Умова буде видалена! Продовжити?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:509\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:544\n msgid \"All Field Values will be overwritten! Continue?\"\n msgstr \"Усі значення полів будуть перезаписані! Продовжити?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:510\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:545\n msgid \"Website will be forced to use \\\"FREE\\\" License Key! Continue?\"\n msgstr \"Вебсайт використовуватиме ліцензійний ключ \\\"FREE\\\"! Продовжити?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:511\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:546\n msgid \"Not Available in Revision Edit Mode\"\n msgstr \"Недоступно в режимі редагування версії\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:512\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:547\n msgid \"The WYSIWYG editor is disabled for this HTML object\"\n msgstr \"Редактор WYSIWYG вимкнений для цього HTML-об'єкта\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:513\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:548\n msgid \"WYSIWYG can only be applied within HTML elements\"\n msgstr \"WYSIWYG можна застосувати лише в елементах HTML\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:514\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:549\n msgid \"Only single-page PDFs are allowed with the \\\"FREE\\\" license type\"\n msgstr \"З ліцензією \\\"FREE\\\" дозволено лише односторінкові PDF-файли\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:515\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:550\n msgid \"Last condition can't be removed\"\n msgstr \"Останню умову неможливо видалити\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:516\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:551\n msgid \"In Progress...\"\n msgstr \"В процесі...\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:517 classes\u002Fview\u002Fpage-e2pdf-templates.php:36\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:552 classes\u002Fview\u002Fpage-e2pdf-templates.php:36\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:121\n msgid \"Delete\"\n msgstr \"Видалити\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:518 classes\u002Fmodel\u002Fe2pdf-loader.php:526\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:553 classes\u002Fmodel\u002Fe2pdf-loader.php:561\n msgid \"Properties\"\n msgstr \"Властивості\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:519 classes\u002Fview\u002Fpage-e2pdf-license.php:30\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:554 classes\u002Fview\u002Fpage-e2pdf-license.php:30\n #: classes\u002Fview\u002Fpage-e2pdf-license.php:38\n msgid \"License Key\"\n msgstr \"Ліцензійний ключ\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:520\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:555\n msgid \"Empty PDF\"\n msgstr \"Порожній PDF\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:521\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:556\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:62\n msgid \"Upload PDF\"\n msgstr \"Завантажити PDF\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:522\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:557\n msgid \"Auto PDF\"\n msgstr \"Авто PDF\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:524 classes\u002Fview\u002Fpage-e2pdf-templates.php:470\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:559 classes\u002Fview\u002Fpage-e2pdf-templates.php:470\n msgid \"Extension\"\n msgstr \"Розширення\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:525\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:560\n msgid \"Size\"\n msgstr \"Розмір\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:527\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:562\n msgid \"Enter link here\"\n msgstr \"Введіть посилання тут\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:528\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:563\n msgid \"Border\"\n msgstr \"Рамка\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:529\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:564\n msgid \"Background\"\n msgstr \"Фон\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:530\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:110\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:565\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:109\n msgid \"Left\"\n msgstr \"Ліво\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:531\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:112\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:566\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:111\n msgid \"Right\"\n msgstr \"Право\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:532\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:567\n msgid \"Top\"\n msgstr \"Верх\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:533\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:111\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:568\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:110\n msgid \"Center\"\n msgstr \"Центр\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:534\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:569\n msgid \"Bottom\"\n msgstr \"Низ\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:535\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:570\n msgid \"Justify\"\n msgstr \"По краях\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:536 classes\u002Fmodel\u002Fe2pdf-loader.php:657\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:571 classes\u002Fmodel\u002Fe2pdf-loader.php:688\n msgid \"Border Color\"\n msgstr \"Колір рамки\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:537\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:572\n msgid \"Border Radius\"\n msgstr \"Радіус рамки\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:538 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:106\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:81\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:573 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:106\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:80\n msgid \"Line Height\"\n msgstr \"Висота рядка\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:539\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:574\n msgid \"Width\"\n msgstr \"Ширина\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:540\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:575\n msgid \"Height\"\n msgstr \"Висота\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:541\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:576\n msgid \"Value\"\n msgstr \"Значення\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:542 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:80\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:29\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:577 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:80\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:34\n msgid \"Font\"\n msgstr \"Шрифт\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:543\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:578\n msgid \"Option\"\n msgstr \"Опція\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:544\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:579\n msgid \"Group\"\n msgstr \"Група\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:545 classes\u002Fview\u002Fpage-e2pdf-license.php:22\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:580 classes\u002Fview\u002Fpage-e2pdf-license.php:22\n msgid \"Type\"\n msgstr \"Тип\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:546\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:581\n msgid \"Scale\"\n msgstr \"Масштаб\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:547\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:582\n msgid \"Width&Height\"\n msgstr \"Ширина та висота\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:548\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:583\n msgid \"Choose Image\"\n msgstr \"Вибрати зображення\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:550\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:585\n msgid \"PDF Upload\"\n msgstr \"Завантаження PDF\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:551\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:586\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:104\n msgid \"Global Actions\"\n msgstr \"Глобальні дії\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:552\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:587\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:109\n msgid \"Global Properties\"\n msgstr \"Глобальні властивості\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:553\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:588\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:113\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:83\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:211\n@@ -931,1014 +941,998 @@\n msgid \"Connection\"\n msgstr \"З'єднання\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:554\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:589\n msgid \"Map Field\"\n msgstr \"Розмітити поле\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:555\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:590\n msgid \"Insert Mapped\"\n msgstr \"Вставити розмічене\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:556\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:591\n msgid \"Resize\"\n msgstr \"Змінити розмір\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:557\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:592\n msgid \"Copy\"\n msgstr \"Копіювати\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:558\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:593\n msgid \"Cut\"\n msgstr \"Вирізати\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:559\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:594\n msgid \"Paste\"\n msgstr \"Вставити\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:560\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:595\n msgid \"Paste in Place\"\n msgstr \"Вставити на місце\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:561 classes\u002Fview\u002Fblocks\u002Fbulk-actions.php:14\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:596 classes\u002Fview\u002Fblocks\u002Fbulk-actions.php:14\n msgid \"Apply\"\n msgstr \"Застосувати\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:562\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:597\n msgid \"Dynamic Height\"\n msgstr \"Динамічна висота\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:563\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:598\n msgid \"Multipage\"\n msgstr \"Багатосторінковий\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:564 classes\u002Fmodel\u002Fe2pdf-loader.php:667\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:98\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:599 classes\u002Fmodel\u002Fe2pdf-loader.php:698\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:97\n msgid \"Text Align\"\n msgstr \"Вирівнювання\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:565\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:600\n msgid \"Read-Only\"\n msgstr \"Лише читання\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:566\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:601\n msgid \"Multiline\"\n msgstr \"Багаторядковий\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:567\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:602\n msgid \"Required\"\n msgstr \"Обов'язковий\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:568\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:603\n msgid \"Page Options\"\n msgstr \"Опції сторінки\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:569\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:604\n msgid \"Direction\"\n msgstr \"Орієнтація\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:570\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:605\n msgid \"Hide\"\n msgstr \"Проховати\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:571\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:606\n msgid \"Unhide\"\n msgstr \"Відобразити\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:572 classes\u002Fview\u002Fpage-e2pdf.php:170\n-#: classes\u002Fview\u002Fpage-e2pdf.php:376\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:607 classes\u002Fview\u002Fpage-e2pdf.php:171\n+#: classes\u002Fview\u002Fpage-e2pdf.php:378\n msgid \"Password\"\n msgstr \"Пароль\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:573 classes\u002Fmodel\u002Fe2pdf-loader.php:591\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:608 classes\u002Fmodel\u002Fe2pdf-loader.php:626\n msgid \"Visual Mapper\"\n msgstr \"Візуальний маппер\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:574\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:609\n msgid \"Parent\"\n msgstr \"Батьківський\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:576\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:611\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:131\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:175\n msgid \"Activated\"\n msgstr \"Активовано\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:577\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:612\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:133\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:177\n msgid \"Not Activated\"\n msgstr \"Не активовано\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:578\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:613\n msgid \"Page ID\"\n msgstr \"ID сторінки\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:579\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:614\n msgid \"Page ID inside Upload PDF\"\n msgstr \"ID сторінки всередині завантаженого PDF\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:580\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:615\n msgid \"Render Fields from Upload PDF\"\n msgstr \"Відобразити поля з завантаженого PDF\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:581\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:616\n msgid \"Delete created E2Pdf Fields\"\n msgstr \"Видалити створені поля E2Pdf\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:582\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:617\n msgid \"Keep Image Ratio\"\n msgstr \"Пропорція\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:583\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:618\n msgid \"Keep Lower Size\"\n msgstr \"Менший розмір\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:584\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:619\n msgid \"Lock Aspect Ratio\"\n msgstr \"Блок пропорції\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:585\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:620\n msgid \"Fill Image\"\n msgstr \"Заповнити\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:586\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:621\n msgid \"Page\"\n msgstr \"Сторінка\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:587\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:622\n msgid \"Resolution\"\n msgstr \"Роздільна здатність\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:588\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:623\n msgid \"Disable Text to Image\"\n msgstr \"Вимкнути перетворення тексту на зображення\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:589\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:624\n msgid \"Confirmation Code\"\n msgstr \"Код підтвердження\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:590\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:625\n msgid \"Code\"\n msgstr \"Код\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:592\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:627\n msgid \"Auto\"\n msgstr \"Авто\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:593 classes\u002Fview\u002Fpage-e2pdf.php:479\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:628 classes\u002Fview\u002Fpage-e2pdf.php:481\n msgid \"Actions\"\n msgstr \"Дії\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:594\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:629\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:166\n msgid \"Save\"\n msgstr \"Зберегти\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:595\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:630\n msgid \"Horizontal Align\"\n msgstr \"Горизонтально\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:596\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:631\n msgid \"Vertical Align\"\n msgstr \"Вертикально\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:597\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:632\n msgid \"Middle\"\n msgstr \"Середина\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:598\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:633\n msgid \"Apply If\"\n msgstr \"Дійсна, якщо\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:599\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:634\n msgid \"Action\"\n msgstr \"Дія\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:600\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:635\n msgid \"Property\"\n msgstr \"Властивість\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:601\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:636\n msgid \"If\"\n msgstr \"Якщо\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:602\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:637\n msgid \"Condition\"\n msgstr \"Умова\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:604 classes\u002Fview\u002Fblocks\u002Fsub-filters.php:9\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:639 classes\u002Fview\u002Fblocks\u002Fsub-filters.php:9\n msgid \"All\"\n msgstr \"Всі\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:605 classes\u002Fmodel\u002Fe2pdf-loader.php:753\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:640 classes\u002Fmodel\u002Fe2pdf-loader.php:784\n msgid \"Sort\"\n msgstr \"Сорт\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:606\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:641\n msgid \"E-Signature\"\n msgstr \"Електронний підпис\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:607\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:642\n msgid \"Contact\"\n msgstr \"Контакт\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:608\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:643\n msgid \"Location\"\n msgstr \"Розташування\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:609\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:644\n msgid \"Reason\"\n msgstr \"Причина\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:610\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:645\n msgid \"Placeholder\"\n msgstr \"Плейсхолдер\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:611\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:646\n msgid \"Length\"\n msgstr \"Довжина\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:612\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:647\n msgid \"Comb\"\n msgstr \"Комбінований\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:614\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:649\n msgid \"Highlight\"\n msgstr \"Виділення\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:615\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:650\n msgid \"Invert\"\n msgstr \"Інверсія\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:616\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:651\n msgid \"Outline\"\n msgstr \"Окреслення\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:617\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:652\n msgid \"Push\"\n msgstr \"Натискання\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:619\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:654\n msgid \"Status\"\n msgstr \"Статус\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:620\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:655\n msgid \"Add Action\"\n msgstr \"Додати дію\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:621\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:656\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_save.php:11\n-#: classes\u002Fview\u002Fpage-e2pdf-templates.php:148 classes\u002Fview\u002Fpage-e2pdf.php:135\n+#: classes\u002Fview\u002Fpage-e2pdf-templates.php:148 classes\u002Fview\u002Fpage-e2pdf.php:136\n msgid \"Shortcodes\"\n msgstr \"Шорткоди\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:622\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:657\n msgid \"Labels\"\n msgstr \"Мітки\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:623\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:658\n msgid \"Field Values\"\n msgstr \"Значення полів\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:624\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:659\n msgid \"Field Names\"\n msgstr \"Назви полів\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:625\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:660\n msgid \"Field Name\"\n msgstr \"Назва поля\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:626\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:661\n msgid \"As Field Name\"\n msgstr \"Як назва поля\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:627\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:662\n msgid \"Confirm\"\n msgstr \"Підтвердити\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:628\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:663\n msgid \"Cancel\"\n msgstr \"Скасувати\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:629\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:664\n msgid \"Hide (If Empty)\"\n msgstr \"Сховати (якщо пусте)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:630\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:665\n msgid \"Hide Page (If Empty)\"\n msgstr \"Сховати сторінку (якщо пусте)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:631\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:666\n msgid \"Replace Value\"\n msgstr \"Замінити значення\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:632\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:667\n msgid \"Auto-Close\"\n msgstr \"Автозакриття\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:633\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:668\n msgid \"New Lines to BR\"\n msgstr \"Нові рядки в BR\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:634\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:669\n msgid \"Disable WYSIWYG Editor\"\n msgstr \"Вимкнути WYSIWYG редактор\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:635\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:670\n msgid \"CSS Priority\"\n msgstr \"Пріоритет CSS\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:636\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:671\n msgid \"CSS Style\"\n msgstr \"CSS стиль\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:637\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:672\n msgid \"Enabling WYSIWYG can affect \\\"HTML\\\" Source\"\n msgstr \"Увімкнення WYSIWYG може вплинути на \\\"HTML\\\" джерело\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:638\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:673\n msgid \"Hidden Fields\"\n msgstr \"Приховані поля\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:639\n-msgid \"Enable PDF Access By URL\"\n-msgstr \"Увімкнути доступ до PDF за URL-адресою\"\n-\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:640\n-msgid \"Disable PDF Access By URL\"\n-msgstr \"Вимкнути доступ до PDF за URL-адресою\"\n-\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:641\n-msgid \"Enable Shortcodes\"\n-msgstr \"Увімкнути шорткоди\"\n-\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:642\n-msgid \"Disable Shortcodes\"\n-msgstr \"Вимкнути шорткоди\"\n-\n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:643\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:674\n msgid \"Error Message\"\n msgstr \"Повідомлення про помилку\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:644\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:675\n msgid \"Redirect URL\"\n msgstr \"Перенаправлення URL-адреси\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:645\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:676\n msgid \"Element\"\n msgstr \"Елемент\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:646\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:677\n msgid \"Elements\"\n msgstr \"Елементи\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:647\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:678\n msgid \"Position Top\"\n msgstr \"Позиція вгорі\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:648\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:679\n msgid \"Position Left\"\n msgstr \"Позиція зліва\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:649\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:680\n msgid \"Padding Top\"\n msgstr \"Відступ внутрішній верх\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:650\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:681\n msgid \"Padding Bottom\"\n msgstr \"Відступ внутрішній низ\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:651\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:682\n msgid \"Padding Left\"\n msgstr \"Відступ внутрішній ліво\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:652\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:683\n msgid \"Padding Right\"\n msgstr \"Відступ внутрішній право\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:653\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:684\n msgid \"Margin Top\"\n msgstr \"Відступ зовнішній верх\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:654\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:685\n msgid \"Margin Bottom\"\n msgstr \"Відступ зовнішній низ\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:655\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:686\n msgid \"Margin Left\"\n msgstr \"Відступ зовнішній ліво\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:656\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:687\n msgid \"Margin Right\"\n msgstr \"Відступ зовнішній право\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:658\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:689\n msgid \"Border Top\"\n msgstr \"Рамка зверху\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:659\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:690\n msgid \"Border Bottom\"\n msgstr \"Рамка знизу\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:660\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:691\n msgid \"Border Left\"\n msgstr \"Рамка зліва\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:661\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:692\n msgid \"Border Right\"\n msgstr \"Рамка справа\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:662\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:693\n msgid \"Field\"\n msgstr \"Поле\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:663\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:9\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:694\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:8\n msgid \"Style\"\n msgstr \"Стиль\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:664\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:695\n msgid \"Lock \u002F Hide\"\n msgstr \"Блокування \u002F Видимість\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:665\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:139\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:696\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:138\n msgid \"Font Color\"\n msgstr \"Колір шрифту\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:666 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:93\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:697 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:93\n msgid \"Font Size\"\n msgstr \"Розмір шрифту\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:668\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:699\n msgid \"Rotation\"\n msgstr \"Обертання\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:669\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:700\n msgid \"Preg Replace Pattern\"\n msgstr \"Preg Replace Шаблон\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:670\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:701\n msgid \"Preg Replace Replacement\"\n msgstr \"Preg Replace Заміна\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:671\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:702\n msgid \"Preg Match All Pattern\"\n msgstr \"Preg Match All Шаблон\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:672\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:703\n msgid \"Preg Match All Output\"\n msgstr \"Preg Match All Вивід\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:673\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:704\n msgid \"Preg Filters\"\n msgstr \"Preg Фільтри\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:674\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:705\n msgid \"Char Spacing\"\n msgstr \"Міжсимвольний інтервал\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:675 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:34\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:706 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:34\n msgid \"Color\"\n msgstr \"Колір\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:676\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:707\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_builder.php:43\n msgid \"QR Code\"\n msgstr \"QR код\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:677\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:708\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_builder.php:45\n msgid \"Barcode\"\n msgstr \"Штрихкод\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:678 classes\u002Fmodel\u002Fe2pdf-loader.php:704\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:238\n-#: classes\u002Fview\u002Fpage-e2pdf.php:216 classes\u002Fview\u002Fpage-e2pdf.php:423\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:709 classes\u002Fmodel\u002Fe2pdf-loader.php:735\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:237\n+#: classes\u002Fview\u002Fpage-e2pdf.php:217 classes\u002Fview\u002Fpage-e2pdf.php:425\n msgid \"Format\"\n msgstr \"Формат\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:679\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:710\n msgid \"Precision\"\n msgstr \"Точність\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:680\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:711\n msgid \"L - Smallest\"\n msgstr \"L - Найменша\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:681\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:712\n msgid \"M - Medium\"\n msgstr \"M - Середня\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:682\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:713\n msgid \"Q - High\"\n msgstr \"Q - Висока\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:683\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:714\n msgid \"H - Best\"\n msgstr \"H - Найкраща\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:684\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:715\n msgid \"All Templates for this Website will be deactivated! Continue?\"\n msgstr \"Усі шаблони для цього вебсайту будуть деактивовані! Продовжити?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:685\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:716\n msgid \"Pre-uploaded PDF will be removed from E2Pdf Template! Continue?\"\n msgstr \"Попередньо завантажений PDF буде видалено з шаблону E2Pdf! Продовжити?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:686\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:717\n msgid \"Quiet Zone Size\"\n msgstr \"Розмір Quite Zone\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:687\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:718\n msgid \"Hide Label\"\n msgstr \"Сховати мітку\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:688\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:719\n msgid \"Lock\"\n msgstr \"Заблокувати\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:689\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:41\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:720\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:40\n msgid \"Unlock\"\n msgstr \"Розблокувати\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:690\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:721\n msgid \"Opacity\"\n msgstr \"Непрозорість\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:691\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:722\n msgid \"Auto Font Size\"\n msgstr \"Автопідбір розміру шрифту\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:692 classes\u002Fview\u002Fpage-e2pdf-settings.php:33\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:723 classes\u002Fview\u002Fpage-e2pdf-settings.php:38\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:389\n msgid \"Max Upload File Size\"\n msgstr \"Макс. розмір файлу\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:693\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:724\n msgid \"The bulk export task will be removed! Continue?\"\n msgstr \"Завдання масового експорту буде видалено! Продовжити?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:694\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:725\n msgid \"The bulk export task will be stopped! Continue?\"\n msgstr \"Завдання масового експорту буде зупинено! Продовжити?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:695\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:726\n msgid \"The bulk export task will be started! Continue?\"\n msgstr \"Завдання масового експорту буде розпочато! Продовжити?\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:696 classes\u002Fview\u002Fpage-e2pdf-templates.php:25\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:727 classes\u002Fview\u002Fpage-e2pdf-templates.php:25\n msgid \"Search...\"\n msgstr \"Пошук...\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:697\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:728\n msgid \"Show Element\"\n msgstr \"Показати елемент\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:698\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:729\n msgid \"Hide Element\"\n msgstr \"Сховати елемент\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:699\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:730\n msgid \"Show Page\"\n msgstr \"Показати сторінку\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:700\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:731\n msgid \"Hide Page\"\n msgstr \"Сховати сторінку\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:701\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:732\n msgid \"Change to\"\n msgstr \"Змінити на\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:702\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:733\n msgid \"Merge\"\n msgstr \"Об'єднати\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:703\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:734\n msgid \"Change Property\"\n msgstr \"Змінити властивість\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:705\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:736\n msgid \"Insert Before\"\n msgstr \"Вставити перед\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:706\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:737\n msgid \"Insert After\"\n msgstr \"Вставити після\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:707\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:738\n msgid \"Full Replacement\"\n msgstr \"Повна заміна\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:708\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:739\n msgid \"Search \u002F Replace\"\n msgstr \"Пошук \u002F Заміна\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:709\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:740\n msgid \"Contains\"\n msgstr \"Містить\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:710\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:741\n msgid \"Not Contains\"\n msgstr \"Не містить\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:711\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:742\n msgid \"In Array\"\n msgstr \"В масиві\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:712\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:743\n msgid \"Array Key Exists\"\n msgstr \"Ключ масиву існує\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:713\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:744\n msgid \"Else\"\n msgstr \"Інакше\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:714\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:745\n msgid \"Append\"\n msgstr \"Додавання\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:715\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:746\n msgid \"Vertical\"\n msgstr \"Вертикально\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:716\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:747\n msgid \"Horizontal\"\n msgstr \"Горизонтально\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:717\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:748\n msgid \"Palette\"\n msgstr \"Палітра\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:718\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:749\n msgid \"Line \u002F Stroke Color\"\n msgstr \"Колір лінії \u002F обводки\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:719\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:750\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_builder.php:47\n msgid \"Graph\"\n msgstr \"Графік\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:720\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:751\n msgid \"Markers\"\n msgstr \"Маркери\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:721\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:752\n msgid \"Grid\"\n msgstr \"Сітка\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:722\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:753\n msgid \"Axis\"\n msgstr \"Вісь\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:723\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:754\n msgid \"Legend\"\n msgstr \"Легенда\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:724 classes\u002Fview\u002Fpage-e2pdf-debug.php:220\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:755 classes\u002Fview\u002Fpage-e2pdf-debug.php:233\n msgid \"Structure\"\n msgstr \"Структура\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:725\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:756\n msgid \"Space\"\n msgstr \"Відступ\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:726\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:757\n msgid \"Position\"\n msgstr \"Позиція\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:727\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:758\n msgid \"Vertical Label\"\n msgstr \"Вертикальна мітка\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:728\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:759\n msgid \"Horizontal Label\"\n msgstr \"Горизонтальна мітка\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:729\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:760\n msgid \"Label\"\n msgstr \"Мітка\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:730\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:761\n msgid \"Axis Overlap\"\n msgstr \"Перекриття вісі\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:731\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:762\n msgid \"Grid Spacing\"\n msgstr \"Інтервал сітки\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:732\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:763\n msgid \"Grid Spacing (V)\"\n msgstr \"Інтервал сітки (V)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:733\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:764\n msgid \"Grid Spacing (H)\"\n msgstr \"Інтервал сітки (H)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:734\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:765\n msgid \"Grid Division (V)\"\n msgstr \"Поділ сітки (V)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:735\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:766\n msgid \"Grid Division (H)\"\n msgstr \"Поділ сітки (H)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:736\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:767\n msgid \"Axis Color\"\n msgstr \"Колір вісі\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:737\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:768\n msgid \"Grid Color\"\n msgstr \"Колір сітки\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:738\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:769\n msgid \"Bar Label Color\"\n msgstr \"Колір мітки стовпця\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:739\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:770\n msgid \"Position (V)\"\n msgstr \"Позиція (V)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:740\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:771\n msgid \"Position (H)\"\n msgstr \"Позиція (H)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:741\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:772\n msgid \"Bar Labels\"\n msgstr \"Мітки стовпців\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:742\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:773\n msgid \"Marker\"\n msgstr \"Маркер\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:743\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:774\n msgid \"Grid Subdivision Color\"\n msgstr \"Колір підподілу сітки\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:744\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:775\n msgid \"Sub Divisions\"\n msgstr \"Підподіли\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:745\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:776\n msgid \"Axis (V)\"\n msgstr \"Вісь (V)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:746\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:777\n msgid \"Axis (H)\"\n msgstr \"Вісь (H)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:747\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:778\n msgid \"Text\"\n msgstr \"Текст\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:748\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:779\n msgid \"Enable\"\n msgstr \"Увімкнути\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:749\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:780\n msgid \"Min\"\n msgstr \"Мін\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:750\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:781\n msgid \"Max\"\n msgstr \"Макс\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:751\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:782\n msgid \"Fill Under\"\n msgstr \"Заповнити під\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:752\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:783\n msgid \"Reverse\"\n msgstr \"Зворотний\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:754\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:785\n msgid \"Percentage\"\n msgstr \"Відсоток\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:755\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:786\n msgid \"Legend Text Side\"\n msgstr \"Бічний текст легенди\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:756\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:787\n msgid \"Columns\"\n msgstr \"Стовпці\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:757\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:788\n msgid \"Padding (X)\"\n msgstr \"Відступ внутрішній (X)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:758\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:789\n msgid \"Padding (Y)\"\n msgstr \"Відступ внутрішній (Y)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:759\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:790\n msgid \"Stroke Color\"\n msgstr \"Колір обводки\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:760\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:791\n msgid \"Stroke Width\"\n msgstr \"Ширина обводки\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:761\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:792\n msgid \"Bubble Scale\"\n msgstr \"Бульбашки\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:762\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:793\n msgid \"Units\"\n msgstr \"Одиниці\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:763\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:794\n msgid \"Increment\"\n msgstr \"Збільшення\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:764\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:795\n msgid \"Stack Group\"\n msgstr \"Група стеків\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:765\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:796\n msgid \"Line Dataset\"\n msgstr \"Набір даних лінії\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:766\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:797\n msgid \"Project Angle\"\n msgstr \"Кут проекції\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:767\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:798\n msgid \"Legends\"\n msgstr \"Легенди\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:768\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:799\n msgid \"Colors\"\n msgstr \"Кольори\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:769\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:800\n msgid \"Line Curve\"\n msgstr \"Крива лінії\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:770\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:801\n msgid \"Margin (H)\"\n msgstr \"Відступ зовнішній (H)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:771\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:802\n msgid \"Margin (V)\"\n msgstr \"Відступ зовнішній (V)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:772\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:803\n msgid \"Units Label\"\n msgstr \"Мітка одиниць\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:773\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:804\n msgid \"Dynamic Line \u002F Stroke Color\"\n msgstr \"Динамічний колір лінії \u002F контурів\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:774\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:805\n msgid \"Dynamic Marker Color\"\n msgstr \"Динамічний колір маркера\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:775\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:806\n msgid \"Inner\"\n msgstr \"Внутрішній\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:776\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:807\n msgid \"Outer\"\n msgstr \"Зовнішня\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:777\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:808\n msgid \"Align\"\n msgstr \"Вирівнювання\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:778\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:809\n msgid \"Offset (X)\"\n msgstr \"Зсув (X)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:779\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:810\n msgid \"Offset (Y)\"\n msgstr \"Зсув (Y)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:780\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:811\n msgid \"Link URL\"\n msgstr \"URL посилання\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:781\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:812\n msgid \"Link Type\"\n msgstr \"Тип посилання\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:782\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:813\n msgid \"Link Label\"\n msgstr \"Мітка посилання\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:783\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:814\n msgid \"Url\"\n msgstr \"Посилання\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:784\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:815\n msgid \"Attachment\"\n msgstr \"Вкладення\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:785\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:816\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_builder.php:37\n msgid \"Image\"\n msgstr \"Зображення\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:786\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:817\n msgid \"Media Library\"\n msgstr \"Медіа-бібліотека\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:787 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:44\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:818 classes\u002Fview\u002Fblocks\u002Fwysiwyg.php:44\n msgid \"Underline\"\n msgstr \"Підкреслення\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:788\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:819\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_builder.php:49\n msgid \"Page Number\"\n msgstr \"Номер сторінки\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:789\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:820\n msgid \"Adjust Page Number\"\n msgstr \"Змінити номер сторінки\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:790\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:821\n msgid \"Adjust Page Total\"\n msgstr \"Змінити всього сторінок\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:791\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:822\n msgid \"Preload Images\"\n msgstr \"Пре-зображення\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:792\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:823\n msgid \"Hooks\"\n msgstr \"Хуки\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:793\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:824\n msgid \"Display PDF download at\"\n msgstr \"Відобразити завантаження PDF на\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:794\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:825\n msgid \"Optimization\"\n msgstr \"Оптимізація\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:795\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:826\n msgid \"Inherit\"\n msgstr \"Успадкувати\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:796\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:402\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:827\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:397\n msgid \"Not Optimized\"\n msgstr \"Не оптимізовано\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:797\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:403\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:828\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:398\n msgid \"Low Quality\"\n msgstr \"Низька якість\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:798\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:404\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:829\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:399\n msgid \"Basic Quality\"\n msgstr \"Базова якість\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:799\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:405\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:830\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:400\n msgid \"Good Quality\"\n msgstr \"Добра якість\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:800\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:406\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:831\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:401\n msgid \"Best Quality\"\n msgstr \"Найкраща якість\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:801\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:407\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:832\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:402\n msgid \"Ultra Quality\"\n msgstr \"Ультра якість\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:802\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:833\n msgid \"Error: Empty \\\"if\\\" and \\\"value\\\" detected in action condition\"\n msgstr \"Помилка: Виявлено порожні \\\"if\\\" та \\\"value\\\" в умові дії\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:803\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:834\n msgid \"No Read-Only\"\n msgstr \"Не лише читання\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:804\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:835\n msgid \"No Border\"\n msgstr \"Без рамок\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:805\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:836\n msgid \"Quick Props\"\n msgstr \"Швидкі властивості\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:844\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:875\n #, php-format\n msgid \"E2Pdf requires PHP version 5.4 or later. Your PHP version is %s\"\n msgstr \"E2Pdf вимагає версію PHP 5.4 або новішу. Ваша версія PHP: %s\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:865\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:900\n msgid \"Templates per page\"\n msgstr \"Шаблонів на сторінку\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-loader.php:981\n+#: classes\u002Fmodel\u002Fe2pdf-loader.php:1016\n #, php-format\n msgid \"Can't create folder %s\"\n msgstr \"Не вдалося створити папку %s\"\n@@ -1977,249 +1971,248 @@\n msgid \"Restore License Key\"\n msgstr \"Відновити ключ ліцензії\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:84 classes\u002Fmodel\u002Fe2pdf-options.php:282\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:87 classes\u002Fmodel\u002Fe2pdf-options.php:285\n msgid \"Enabled\"\n msgstr \"Увімкнено\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:88 classes\u002Fmodel\u002Fe2pdf-options.php:281\n-#: classes\u002Fmodel\u002Fe2pdf-options.php:292\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:91 classes\u002Fmodel\u002Fe2pdf-options.php:284\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:295\n msgid \"Disabled\"\n msgstr \"Вимкнено\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:94 classes\u002Fmodel\u002Fe2pdf-options.php:735\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:97 classes\u002Fmodel\u002Fe2pdf-options.php:797\n msgid \"Extensions\"\n msgstr \"Розширення\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:140 classes\u002Fview\u002Fpage-e2pdf-debug.php:37\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:143 classes\u002Fview\u002Fpage-e2pdf-debug.php:37\n msgid \"Common\"\n msgstr \"Загальне\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:143 classes\u002Fmodel\u002Fe2pdf-options.php:148\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:146 classes\u002Fmodel\u002Fe2pdf-options.php:151\n msgid \"E2Pdf.com Account E-mail Address\"\n msgstr \"E-mail облікового запису E2Pdf.com\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:151 classes\u002Fmodel\u002Fe2pdf-options.php:159\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:154 classes\u002Fmodel\u002Fe2pdf-options.php:162\n msgid \"API Server\"\n msgstr \"Час очікування з'єднання\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:172\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:175\n msgid \"API Connection Timout (sec)\"\n msgstr \"API час очікування з'єднання (сек)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:181 classes\u002Fview\u002Fpage-e2pdf-debug.php:45\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:184 classes\u002Fview\u002Fpage-e2pdf-debug.php:45\n msgid \"PDF Processor\"\n msgstr \"PDF процесор\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:189\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:443\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:192\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:438\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:46\n msgid \"Font Processor\"\n msgstr \"Обробка шрифтів\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:200\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:203\n msgid \"Release Candidate Builds\"\n msgstr \"Версії-кандидати\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:206\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:209\n msgid \"Update from E2Pdf.com\"\n msgstr \"Оновлення з E2Pdf.com\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:209\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:212\n msgid \"URL Format\"\n msgstr \"URL формат\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:220 classes\u002Fmodel\u002Fe2pdf-options.php:226\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:223 classes\u002Fmodel\u002Fe2pdf-options.php:229\n msgid \"URL Rewrite\"\n msgstr \"URL перезапис\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:239 classes\u002Fview\u002Fpage-e2pdf-settings.php:123\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:242 classes\u002Fview\u002Fpage-e2pdf-settings.php:128\n msgid \"Cache\"\n msgstr \"Кеш\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:245\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:248\n msgid \"Objects Cache\"\n msgstr \"Кеш об'єктів\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:254\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:257\n msgid \"Fonts Cache\"\n msgstr \"Кеш шрифтів\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:263\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:266\n msgid \"PDFs Cache\"\n msgstr \"Кеш PDF файлів\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:272\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:275\n msgid \"TTL (sec)\"\n msgstr \"TTL (сек)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:275\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:278\n msgid \"PDF Ajax Loader\"\n msgstr \"Завантажувач PDF Ajax\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:286\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:289\n msgid \"Fallback PDF Viewer\"\n msgstr \"Резервний переглядач PDF\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:303\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:306\n msgid \"\"\n \"Fix Chrome iOS Download Name (might be not compatible with certain setups)\"\n msgstr \"\"\n \"Виправити ім'я завантаження для Chrome на iOS (може бути несумісно з деякими \"\n \"налаштуваннями)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:306 classes\u002Fmodel\u002Fe2pdf-options.php:312\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:309 classes\u002Fmodel\u002Fe2pdf-options.php:315\n msgid \"New Edit Layout\"\n msgstr \"Новий макет редагування\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:315 classes\u002Fmodel\u002Fe2pdf-options.php:321\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:318 classes\u002Fmodel\u002Fe2pdf-options.php:324\n msgid \"Hide Warnings\"\n msgstr \"Сховати попередження\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:324\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:327\n msgid \"Local Images\"\n msgstr \"Локальні зображення\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:330\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:333\n msgid \"Load via Remote Request\"\n msgstr \"Завантажувати через віддалений запит\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:333\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:336\n msgid \"Images Timout (sec)\"\n msgstr \"Час очікування зображень (сек)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:342\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:345\n msgid \"Bulk Export Interval (sec)\"\n msgstr \"Інтервал масового експорту (сек)\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:351\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:354\n msgid \"Undo Limit\"\n msgstr \"Ліміт скасування\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:360\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:363\n msgid \"Revisions Limit\"\n msgstr \"Макс. ревізій\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:369\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:372\n msgid \"Debug Mode\"\n msgstr \"Режим налагодження\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:375\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:378\n msgid \"Enable Debug Mode\"\n msgstr \"Увімкнути режим налагодження\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:378 classes\u002Fmodel\u002Fe2pdf-options.php:383\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:381 classes\u002Fmodel\u002Fe2pdf-options.php:386\n #: classes\u002Fview\u002Fblocks\u002Fdebug-panel.php:10\n msgid \"Recovery Mode E-mail\"\n msgstr \"E-mail для режиму відновлення\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:386\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:389\n msgid \"Memory\u002FTime Usage\"\n msgstr \"Використання пам'яті\u002Fчасу\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:392\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:395\n msgid \"Show Memory\u002FTime Usage\"\n msgstr \"Показати використання пам'яті\u002Fчасу\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:397 classes\u002Fview\u002Fpage-e2pdf-debug.php:20\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:400 classes\u002Fview\u002Fpage-e2pdf-debug.php:20\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:190\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:100\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:105\n msgid \"Maintenance\"\n msgstr \"Обслуговування\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:402\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:405\n msgid \"Fonts\"\n msgstr \"Шрифти\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:407\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:410\n msgid \"Permissions\"\n msgstr \"Дозволи\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:460\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:452 classes\u002Fmodel\u002Fe2pdf-options.php:522\n msgid \"Authorized\"\n msgstr \"Авторизовано\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:743\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:811\n msgid \"Translation\"\n msgstr \"Переклад\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:747\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:815\n msgid \"PDF Translation\"\n msgstr \"Переклад PDF\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:753\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:821\n msgid \"No Translation\"\n msgstr \"Без перекладу\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:754\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:822\n msgid \"Partial Translation\"\n msgstr \"Частковий переклад\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-options.php:755\n+#: classes\u002Fmodel\u002Fe2pdf-options.php:823\n msgid \"Full Translation\"\n msgstr \"Повний переклад\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:387 classes\u002Fmodel\u002Fe2pdf-shortcode.php:643\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:1204\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:1326\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:245 classes\u002Fmodel\u002Fe2pdf-shortcode.php:6796\n+#: classes\u002Fmodel\u002Fe2pdf-template.php:1044\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:127\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:462\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:543 classes\u002Fview\u002Fpage-e2pdf.php:28\n msgid \"Download\"\n msgstr \"Завантажити\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5891\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6561\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5029\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5755\n msgid \"Product\"\n msgstr \"Товар\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5894\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6564\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5032\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5758\n msgid \"SKU\"\n msgstr \"Артикул\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5897\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6567\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5035\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5761\n msgid \"Quantity\"\n msgstr \"Кількість\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5900\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6570\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5038\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5764\n msgid \"Price\"\n msgstr \"Ціна\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5903\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6573\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6649\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6885\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5041\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5767\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5833\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6069\n msgid \"Subtotal\"\n msgstr \"Підсумок\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6667\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6903\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5851\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6087\n msgid \"Free shipping coupon\"\n msgstr \"Купон на безкоштовну доставку\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6722\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6958\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5906\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6142\n msgid \"Shipping options will be updated during checkout.\"\n msgstr \"Опції доставки будуть оновлені під час оформлення замовлення.\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6800\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:7038\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5984\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6222\n #, php-format\n msgid \"estimated for %s\"\n msgstr \"оцінено для %s\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6811\n-#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:7049\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:5995\n+#: classes\u002Fmodel\u002Fe2pdf-shortcode.php:6233\n msgid \"Total\"\n msgstr \"Всього\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-template.php:170\n+#: classes\u002Fmodel\u002Fe2pdf-template.php:171\n msgid \"Latest\"\n msgstr \"Остання\"\n \n-#: classes\u002Fmodel\u002Fe2pdf-template.php:887\n+#: classes\u002Fmodel\u002Fe2pdf-template.php:951\n msgid \"Template Deactivated\"\n msgstr \"Шаблон деактивовано\"\n \n@@ -2263,8 +2256,8 @@\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:112 classes\u002Fview\u002Fpage-e2pdf-debug.php:114\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:123 classes\u002Fview\u002Fpage-e2pdf-debug.php:130\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:137 classes\u002Fview\u002Fpage-e2pdf-debug.php:144\n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:251 classes\u002Fview\u002Fpage-e2pdf-debug.php:260\n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:269\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:263 classes\u002Fview\u002Fpage-e2pdf-debug.php:272\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:281\n msgid \"[ERROR]\"\n msgstr \"[Помилка]\"\n \n@@ -2467,192 +2460,192 @@\n msgid \"Update\"\n msgstr \"Зберегти\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:15\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:14\n msgid \"Meta\"\n msgstr \"Мета\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:17\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:16\n msgid \"Security\"\n msgstr \"Безпека\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:26\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:25\n msgid \"Enter your E-mail to unlock this features\"\n msgstr \"Введіть вашу електронну пошту, щоб розблокувати ці функції\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:33\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:32\n msgid \"E-mail\"\n msgstr \"Електронна пошта\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:49\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:48\n msgid \"Global Font\"\n msgstr \"Глобальний шрифт\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:161\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:169\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:182\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:194\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:160\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:168\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:181\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:193\n msgid \"Dataset Title\"\n msgstr \"Назва набору даних\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:204\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:212\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:203\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:211\n msgid \"Button Title\"\n msgstr \"Заголовок кнопки\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:221\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:229\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:220\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:228\n msgid \"Dynamic PDF Source\"\n msgstr \"Динамічне джерело PDF\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:258\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:257\n msgid \"JPG Output Resolution\"\n msgstr \"Роздільна здатність JPG\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:285\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:284\n msgid \"Open PDF in Browser\"\n msgstr \"Відкрити PDF у браузері\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:300\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:299\n msgid \"Auto PDF Download\"\n msgstr \"Автоматичне завантаження PDF\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:316\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:324\n-#: classes\u002Fview\u002Fpage-e2pdf.php:148 classes\u002Fview\u002Fpage-e2pdf.php:154\n-#: classes\u002Fview\u002Fpage-e2pdf.php:338 classes\u002Fview\u002Fpage-e2pdf.php:344\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:314\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:322\n+#: classes\u002Fview\u002Fpage-e2pdf.php:149 classes\u002Fview\u002Fpage-e2pdf.php:155\n+#: classes\u002Fview\u002Fpage-e2pdf.php:340 classes\u002Fview\u002Fpage-e2pdf.php:346\n msgid \"PDF Name\"\n msgstr \"Назва PDF\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:334\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:342\n-#: classes\u002Fview\u002Fpage-e2pdf.php:354 classes\u002Fview\u002Fpage-e2pdf.php:360\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:331\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:339\n+#: classes\u002Fview\u002Fpage-e2pdf.php:356 classes\u002Fview\u002Fpage-e2pdf.php:362\n msgid \"PDF Local Name\"\n msgstr \"Локальна назва PDF\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:352\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:348\n msgid \"PDF Flatten\"\n msgstr \"Сплощення PDF\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:364\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:360\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:42 classes\u002Fview\u002Fpage-e2pdf-debug.php:43\n-#: classes\u002Fview\u002Fpage-e2pdf.php:206 classes\u002Fview\u002Fpage-e2pdf.php:413\n+#: classes\u002Fview\u002Fpage-e2pdf.php:207 classes\u002Fview\u002Fpage-e2pdf.php:415\n msgid \"No\"\n msgstr \"Ні\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:365\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:361\n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:42 classes\u002Fview\u002Fpage-e2pdf-debug.php:43\n-#: classes\u002Fview\u002Fpage-e2pdf.php:207 classes\u002Fview\u002Fpage-e2pdf.php:414\n+#: classes\u002Fview\u002Fpage-e2pdf.php:208 classes\u002Fview\u002Fpage-e2pdf.php:416\n msgid \"Yes\"\n msgstr \"Так\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:366\n-#: classes\u002Fview\u002Fpage-e2pdf.php:208 classes\u002Fview\u002Fpage-e2pdf.php:415\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:362\n+#: classes\u002Fview\u002Fpage-e2pdf.php:209 classes\u002Fview\u002Fpage-e2pdf.php:417\n msgid \"Full\"\n msgstr \"Повне\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:378\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:373\n msgid \"Generate appearance\"\n msgstr \"Генерувати вигляд\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:390\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:385\n msgid \"Images\"\n msgstr \"Зображення\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:414\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:409\n msgid \"Compression\"\n msgstr \"Стиснення\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:426\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:421\n msgid \"Default\"\n msgstr \"За замовчуванням\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:466\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:460\n msgid \"PDF Tab Order\"\n msgstr \"Порядок вкладок PDF\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:477\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:471\n msgid \"Unspecified\"\n msgstr \"Не вказано\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:478\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:472\n msgid \"Use Row Order\"\n msgstr \"Використовувати порядок рядків\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:479\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:473\n msgid \"Use Column Order\"\n msgstr \"Використовувати порядок стовпців\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:480\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:474\n msgid \"Use Document Structure\"\n msgstr \"Використовувати структуру документа\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:510\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:518\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:503\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:511\n msgid \"Subject\"\n msgstr \"Тема\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:528\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:536\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:521\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:529\n msgid \"Author\"\n msgstr \"Автор\"\n \n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:538\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:546\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:554\n msgid \"Keywords\"\n msgstr \"Ключові слова\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:563\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:555\n msgid \"Lang Code\"\n msgstr \"Код мови\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:587\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:595\n-#: classes\u002Fview\u002Fpage-e2pdf.php:164 classes\u002Fview\u002Fpage-e2pdf.php:370\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:578\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:586\n+#: classes\u002Fview\u002Fpage-e2pdf.php:165 classes\u002Fview\u002Fpage-e2pdf.php:372\n msgid \"PDF Open Password\"\n msgstr \"Пароль для відкриття PDF\"\n \n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:596\n #: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:605\n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:614\n msgid \"Permissions Owner Password\"\n msgstr \"Пароль власника прав доступу\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:623\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:614\n msgid \"Permissions (Opened with PDF Open Password)\"\n msgstr \"Права доступу (При відкритті паролем)\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:632\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:623\n msgid \"Printing\"\n msgstr \"Друк\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:641\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:632\n msgid \"Printing (Degraded)\"\n msgstr \"Друк (Низька якість)\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:650\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:641\n msgid \"Editing\"\n msgstr \"Редагування\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:659\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:650\n msgid \"Copying\"\n msgstr \"Копіювання\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:668\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:659\n msgid \"Commenting\"\n msgstr \"Коментування\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:677\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:668\n msgid \"Fill-In or Signing\"\n msgstr \"Заповнення або підписання\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:686\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:677\n msgid \"Document Assembly\"\n msgstr \"Збірка документа\"\n \n-#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:695\n+#: classes\u002Fview\u002Fmetaboxes\u002Fe2pdf_templates_settings.php:686\n msgid \"Screen Reader Accessibility\"\n msgstr \"Доступність для екранних читалок\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:12 classes\u002Fview\u002Fpage-e2pdf-debug.php:245\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:12 classes\u002Fview\u002Fpage-e2pdf-debug.php:257\n msgid \"Connections\"\n msgstr \"З'єднання\"\n \n@@ -2661,13 +2654,13 @@\n msgstr \"БД\"\n \n #: classes\u002Fview\u002Fpage-e2pdf-debug.php:25 classes\u002Fview\u002Fpage-e2pdf-debug.php:195\n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:206\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:105\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:116\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:128\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:139\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:150\n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:162\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:207 classes\u002Fview\u002Fpage-e2pdf-debug.php:219\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:110\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:121\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:133\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:144\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:155\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:167\n msgid \"Are you sure want to continue?\"\n msgstr \"Ви впевнені, що хочете продовжити?\"\n \n@@ -2743,7 +2736,7 @@\n msgid \"Plugins\"\n msgstr \"Плагіни\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:215\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:228\n msgid \"\"\n \"* It is strongly RECOMMENDED that you backup your DB before any of these \"\n \"actions are applied to avoid data loss\"\n@@ -2751,15 +2744,15 @@\n \"* РЕКОМЕНДУЄТЬСЯ створити резервну копію БД перед виконанням будь-яких з цих \"\n \"дій, щоб уникнути втрати даних\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:252\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:264\n msgid \"Back-connection\"\n msgstr \"Зворотнє з'єднання\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:261\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:273\n msgid \"Upload Speed\"\n msgstr \"Швидкість вивантаження\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-debug.php:270\n+#: classes\u002Fview\u002Fpage-e2pdf-debug.php:282\n msgid \"Download Speed\"\n msgstr \"Швидкість завантаження\"\n \n@@ -2783,16 +2776,24 @@\n msgid \"Expire Date\"\n msgstr \"Термін дії\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:27\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:12\n+msgid \"\"\n+\"It's recommended to use the Integration Hooks in the E2Pdf Template settings \"\n+\"instead\"\n+msgstr \"\"\n+\"Рекомендується використовувати Інтеграційні Хуки в налаштуваннях шаблону \"\n+\"E2Pdf\"\n+\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:32\n msgid \"Upload Font\"\n msgstr \"Завантажити шрифт\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:32\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:37\n #: classes\u002Fview\u002Fpage-e2pdf-templates.php:388\n msgid \"Allowed File Types\"\n msgstr \"Дозволені типи файлів\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf-settings.php:38\n+#: classes\u002Fview\u002Fpage-e2pdf-settings.php:43\n msgid \"Upload\"\n msgstr \"Завантажити\"\n \n@@ -2869,50 +2870,73 @@\n msgid \"Template Title\"\n msgstr \"Назва шаблону\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:12 classes\u002Fview\u002Fpage-e2pdf.php:467\n-msgid \"Create PDFs in Bulk\"\n-msgstr \"Масова генерація PDF\"\n+#: classes\u002Fview\u002Fpage-e2pdf.php:12 classes\u002Fview\u002Fpage-e2pdf.php:469\n+msgid \"Bulk Create PDFs\"\n+msgstr \"Масове створення PDF\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:63 classes\u002Fview\u002Fpage-e2pdf.php:296\n+#: classes\u002Fview\u002Fpage-e2pdf.php:64 classes\u002Fview\u002Fpage-e2pdf.php:298\n msgid \"Dataset\"\n msgstr \"Набір даних\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:98\n+#: classes\u002Fview\u002Fpage-e2pdf.php:99\n msgid \"Dataset2\"\n msgstr \"Набір даних2\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:138\n+#: classes\u002Fview\u002Fpage-e2pdf.php:139\n msgid \"Shortcode for a Download Link with a Dynamic Dataset\"\n msgstr \"Шорткод для завантаження з динамічним набором даних\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:142\n+#: classes\u002Fview\u002Fpage-e2pdf.php:143\n msgid \"Shortcode for a Download Link with the Current Dataset\"\n msgstr \"Шорткод завантаження з поточним набором даних\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:180 classes\u002Fview\u002Fpage-e2pdf.php:386\n+#: classes\u002Fview\u002Fpage-e2pdf.php:181 classes\u002Fview\u002Fpage-e2pdf.php:388\n msgid \"User\"\n msgstr \"Користувач\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:196 classes\u002Fview\u002Fpage-e2pdf.php:403\n+#: classes\u002Fview\u002Fpage-e2pdf.php:197 classes\u002Fview\u002Fpage-e2pdf.php:405\n msgid \"Flatten\"\n msgstr \"Сплющення\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:235 classes\u002Fview\u002Fpage-e2pdf.php:442\n+#: classes\u002Fview\u002Fpage-e2pdf.php:236 classes\u002Fview\u002Fpage-e2pdf.php:444\n msgid \"Arguments\"\n msgstr \"Аргументи\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:306\n+#: classes\u002Fview\u002Fpage-e2pdf.php:308\n msgid \"Filter...\"\n msgstr \"Фільтр...\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:478\n+#: classes\u002Fview\u002Fpage-e2pdf.php:480\n msgid \"Progress\"\n msgstr \"Прогрес\"\n \n-#: classes\u002Fview\u002Fpage-e2pdf.php:480\n+#: classes\u002Fview\u002Fpage-e2pdf.php:482\n msgid \"Created\"\n msgstr \"Створено\"\n \n+#, php-format\n+#~ msgid \"\"\n+#~ \"The Bulk PDFs creation is not available with Free License Type. Check \u003Ca \"\n+#~ \"target='_blank' href='%s'>%s\u003C\u002Fa> for upgrade options\"\n+#~ msgstr \"\"\n+#~ \"Масова генерація PDF недоступна для типу ліцензії \\\"Безкоштовна\\\". \"\n+#~ \"Перевірте \u003Ca target=\\\"_blank\\\" href=\\\"%s\\\">%s\u003C\u002Fa> для варіантів оновлення\"\n+\n+#~ msgid \"Enable PDF Access By URL\"\n+#~ msgstr \"Увімкнути доступ до PDF за URL-адресою\"\n+\n+#~ msgid \"Disable PDF Access By URL\"\n+#~ msgstr \"Вимкнути доступ до PDF за URL-адресою\"\n+\n+#~ msgid \"Enable Shortcodes\"\n+#~ msgstr \"Увімкнути шорткоди\"\n+\n+#~ msgid \"Disable Shortcodes\"\n+#~ msgstr \"Вимкнути шорткоди\"\n+\n+#~ msgid \"Create PDFs in Bulk\"\n+#~ msgstr \"Масова генерація PDF\"\n+\n #~ msgid \"HTML Worker\"\n #~ msgstr \"HTML Worker\"\n \ndiff -ru \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Freadme.txt \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Freadme.txt\n--- \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.28.15\u002Freadme.txt\t2026-02-10 09:09:50.000000000 +0000\n+++ \u002Fhome\u002Fdeploy\u002Fwp-safety.org\u002Fdata\u002Fplugin-versions\u002Fe2pdf\u002F1.32.00\u002Freadme.txt\t2026-02-24 09:27:28.000000000 +0000\n@@ -5,7 +5,7 @@\n Requires at least: 4.0\n Tested up to: 6.9\n Requires PHP: 5.4\n-Stable tag: 1.28.15\n+Stable tag: 1.32.00\n License: GPLv3\n License URI: https:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-3.0.html\n \n@@ -76,6 +76,7 @@\n * [Forminator Forms](https:\u002F\u002Fe2pdf.com\u002Fdocs\u002Fextensions\u002Fforminator-forms): [Demo](https:\u002F\u002Fe2pdf.com\u002Fdemo\u002Fforminator-forms)\n * [Gravity Forms](https:\u002F\u002Fe2pdf.com\u002Fdocs\u002Fextensions\u002Fgravity-forms): [Demo](https:\u002F\u002Fe2pdf.com\u002Fdemo\u002Fgravity-forms)\n * [JetFormBuilder](https:\u002F\u002Fe2pdf.com\u002Fdocs\u002Fextensions\u002Fjetformbuilder): [Demo](https:\u002F\u002Fe2pdf.com\u002Fdemo\u002Fjetformbuilder)\n+* [MetForm](https:\u002F\u002Fe2pdf.com\u002Fdocs\u002Fextensions\u002Fmetform): [Demo](https:\u002F\u002Fe2pdf.com\u002Fdemo\u002Fmetform)\n * [Ninja Forms PDF](https:\u002F\u002Fe2pdf.com\u002Fdocs\u002Fextensions\u002Fninja-forms): [Demo](https:\u002F\u002Fe2pdf.com\u002Fdemo\u002Fninja-forms)\n * [WooCommerce Order \u002F Product](https:\u002F\u002Fe2pdf.com\u002Fdocs\u002Fextensions\u002Fwoocommerce) : [Demo](https:\u002F\u002Fe2pdf.com\u002Fdemo\u002Fwoocommerce)\n * [WordPress \u002F Post \u002F Meta \u002F ACF](https:\u002F\u002Fe2pdf.com\u002Fdocs\u002Fextensions\u002Fwordpress): [Demo](https:\u002F\u002Fe2pdf.com\u002Fdemo\u002Fwordpress)\n@@ -138,214 +139,150 @@\n \n == Changelog ==\n \n+= 1.32.00 =\n+*Release Date - February 24, 2026*\n+\n+* Add: MetForm support\n+* Add: Elementor Forms label output support\n+* Add: Fluent Forms redirect to PDF support\n+* Add: WooCommerce subscriptions support\n+* Add: WooCommerce filters\n+* Add: WooCommerce get_items_ids\n+* Add: WooCommerce additional shortcode attributes\n+* Add: WPML Translation support\n+* Add: Polylang 3.7 translation support\n+* Add: Google Drive integration\n+* Add: Raw Encoding transfer protocol\n+* Add: HTML Worker 2.0: margin and padding support for list elements\n+* Add: HTML \"char-fill\" and \"line-fill\" attributes support\n+* Add: CSS list-style-type-color support\n+* Add: CSS list-style-type-size support\n+* Add: CSS text-transform support\n+* Add: CSS global fonts load\n+* Add: Text to image RTL support\n+* Add: Signature opacity and rotation support\n+* Add: Image custom font, font size and font color support\n+* Add: Required attribute for signature field\n+* Add: SVG inline and base64 support\n+* Add: Justify All alignment\n+* Add: Quick Props\n+* Add: Zapier App\n+* Add: Actions global undo\n+* Add: Action pre-replace \n+* Add: Action global redirect \n+* Add: Option to return Attachment ID upon saving to Media\n+* Add: pdf.js redirect, error message support\n+* Add: Import options\n+* Add: Import backup pdf files support\n+* Add: [e2pdf-translate] shortcode\n+* Add: [jet_engine_data] shortcode\n+* Add: [e2pdf-if] nested shortcode\n+* Add: [e2pdf-for-count] shortcode for [e2pdf-for]\n+* Add: [e2pdf-acf-repeater-count] shortcode for [e2pdf-acf-repeater]\n+* Add: [e2pdf-frm-field-value] shortcode for Formidable Forms dynamic field\n+* Add: [e2pdf-if] strict comparators [===] [!==]\n+* Add: [e2pdf-acf-repeater] implode attribute\n+* Fix: WooCommerce User Order List hook global actions\n+* Fix: WooCommerce Empty My Orders actions\n+* Fix: JetFormBuilder link and frame class\n+* Fix: Formidable Forms 5.x backward compatibility\n+* Fix: Ninja Forms dynamic values in the Success Message\n+* Fix: Checkout Field Editor block fields fail to retrieve labels\n+* Fix: CSS fatal error by unsupported selectors\n+* Fix: Shortcodes fail to render in some cases\n+* Fix: Compatibility fix with Image Optimizer, Resizer and CDN – Sirv\n+* Fix: Nested lists render\n+* Fix: Some fonts fail to render\n+* Fix: E2Pdf URLs fail to load in some cases\n+* Fix: Incorrect HTML list style\n+* Fix: Safari iOS Auto download\n+* Fix: Safari iOS Ajax loader PDF download\n+* Fix: Safari \u003C= 17.3 pdf.js loading\n+* Fix: HTML Worker 2.0 unexpected spaces\n+* Fix: HTML Worker 2.0 \"ol\" tags render\n+* Fix: HTML Worker 2.0 incorrect table spacing when using margins on elements inside rows\n+* Fix: [e2pdf-for], [e2pdf-acf-repeater] nested shortcodes render\n+* Fix: Minor PHP notices\n+* Improvement: Gravity Forms Visual Mapper\n+* Improvement: Visual Mapper\n+* Improvement: PDF Render Engine\n+* Improvement: PDF Upload\n+* Improvement: Translator\n+* Improvement: Translation\n+* Improvement: Memory usage\n+* Improvement: TranslatePress support\n+* Improvement: Shortcodes processing\n+* Improvement: Shortcodes load optimization\n+* Improvement: HTML render\n+* Improvement: HTML Worker 3.0\n+* Improvement: HTML tables render\n+* Improvement: Auto download\n+* Improvement: Global actions\n+* Improvement: SVG render\n+* Improvement: pdf.js update\n+* Improvement: UI\u002FUX\n+* Improvement: WYSIWYG\n+* Improvement: CSS load\n+* Improvement: Backup import\n+* Improvement: \"convert\" attribute\n+* Security: [e2pdf-frm-field-value] restriction outside PDF context\n+* Security: Shortcodes usage limitations\n+* Security: Attributes filtering\n+\n = 1.28.15 =\n *Release Date - February 10, 2026*\n \n+* Add: JetFormBuilder revision form entries\n+* Add: WPForms Likert Scale support\n+* Add: Gravity Forms repeater fields support\n+* Add: Gravity Forms json value format support\n+* Add: [e2pdf-format-output] sreplace filter\n+* Add: [e2pdf-math] modulo operator\n+* Add: Checkout Field Editor (Checkout Manager) for WooCommerce support\n+* Add: get_items_category, get_items_category_ids keys for WooCommerce\n+* Add: Additional actions and filters\n+* Add: [e2pdf-acf-repeater] nested shortcodes support\n+* Add: Fluent Forms hidden field default value support\n+* Add: MemberPress custom thank you message shortcodes support\n+* Add: User Registration & Membership – Custom Registration Form, Login Form, and User Profile mail support\n * Fix: Visual Mapper does not correctly set some values\n * Fix: Bulk PDF generation fails in certain case\n-* Improvement: Parent option\n-* Improvement: Timeouts\n-\n-= 1.28.14 =\n-*Release Date - November 07, 2025*\n-\n * Fix: Gravity Forms incorrect value mapping when using separate values\n-\n-= 1.28.13 =\n-*Release Date - October 25, 2025*\n-\n * Fix: Checkbox and Select compatibility with Forminator 1.48.x\n-\n-= 1.28.12 =\n-*Release Date - October 08, 2025*\n-\n * Fix: Gravity Forms Visual Mapper\n * Fix: Clear cache upon settings change\n-\n-= 1.28.11 =\n-*Release Date - September 30, 2025*\n-\n * Fix: Docket Cache compatibility\n * Fix: Everest Forms email templates\n-\n-= 1.28.10 =\n-*Release Date - September 23, 2025*\n-\n-* Add: Checkout Field Editor (Checkout Manager) for WooCommerce support\n-* Add: get_items_category, get_items_category_ids keys for WooCommerce\n * Fix: Compatibility fix with Foxtool All-in-One: Contact chat button, Custom login, Media optimize images\n-* Security: Cross Site Scripting (XSS)\n-* Security: HTML filter\n-\n-= 1.28.09 =\n-*Release Date - September 13, 2025*\n-\n-* Add: JetFormBuilder revision form entries\n-* Add: WPForms Likert Scale support\n-* Add: Gravity Forms repeater fields support\n-* Add: Gravity Forms json value format support\n-* Add: [e2pdf-format-output] sreplace filter\n-* Add: [e2pdf-math] modulo operator\n * Fix: Gravity Forms signature and hidden fields Visual Mapper\n * Fix: Fatal error on JetFormBuilder no entries\n-* Fix: PHP 8.x deprecation notice\n-* Improvement: truncate_html, truncate_ishtml, extract_by_tag, extract_by_id, extract_by_class, remove_by_tag, remove_by_id, remove_by_class html entities\n-* Improvement: Visual Mapper\n-\n-= 1.28.08 =\n-*Release Date - September 11, 2025*\n-\n-* Fix: PHP 8.x deprecation notice\n-\n-= 1.28.07 =\n-*Release Date - July 17, 2025*\n-\n * Fix: Fatal Error upon save to Media\n-\n-= 1.28.06 =\n-*Release Date - June 30, 2025*\n-\n * Fix: Dataset titles\n-\n-= 1.28.05 =\n-*Release Date - May 13, 2025*\n-\n-* Fix: Backward compatibility with Formidable Forms 5.x\n-\n-= 1.28.04 =\n-*Release Date - May 07, 2025*\n-\n-* Add: Additional actions and filters\n-* Add: [e2pdf-acf-repeater] nested shortcodes support\n-* Add: Fluent Forms hidden field default value support\n-* Add: MemberPress custom thank you message shortcodes support\n-* Add: User Registration & Membership – Custom Registration Form, Login Form, and User Profile mail support\n * Fix: Download PDF Ajax Loader redirect, error message\n * Fix: Fluent Forms checkbox, dropdown, country, repeater fields render\n * Fix: Fluent Forms [e2pdf-view] shortcode fails to load correctly\n * Fix: Elementor Forms Repeater Fields compatibility fix\n * Fix: Incorrect DB collation\n * Fix: PHP 8.x deprecation notice\n+* Improvement: truncate_html, truncate_ishtml, extract_by_tag, extract_by_id, extract_by_class, remove_by_tag, remove_by_id, remove_by_class html entities\n+* Improvement: Parent option\n+* Improvement: Timeouts\n+* Improvement: Visual Mapper\n * Improvement: Backup import\n * Improvement: Actions can't have empty conditions\n * Improvement: Checkbox, Select and Multiline select render\n * Improvement: Everest Forms shortcodes process\n * Improvement: JetFormBuilder shortcodes process\n * Improvement: Elementor Widget shortcodes process\n+* Security: Cross Site Scripting (XSS)\n+* Security: HTML filter\n \n = 1.28.00 =\n *Release Date - April 08, 2025*\n \n-* Add: E2Pdf Template search by ID\n-* Add: Everest Forms support\n-* Add: JetFormBuilder support\n-* Add: PDF Attachments\n-* Add: Global Hooks\n-* Add: Global Properties\n-* Add: HTML Worker v3 (Beta)\n-* Add: WPForms Repeater full support\n-* Add: Fluent Forms Trello support\n-* Add: WooCommerce ACF shortcodes support\n-* Add: The rotate property for BarCode\n-* Add: Page number adjust for Page Number object\n-* Add: Grid display for PDF render in the Image object\n-* Add: Image with Link\n-* Add: Link Label\n-* Add: Dynamic Line \u002F Stroke \u002F Marker color Graph settings\n-* Add: Complex SVG Images can be optimized\n-* Add: [e2pdf-wp-posts], [e2pdf-wp-users], [e2pdf-userid], [e2pdf-usercurrentid] shortcodes\n-* Add: [e2pdf-download] \"print\" attribute\n-* Add: [e2pdf-save] \"media\" attribute\n-* Add: [e2pdf-view] \"print_resolution\" attribute\n-* Add: [e2pdf-user] \"convert\" attribute\n-* Add: [acf] \"repeater\" attribute\n-* Add: [e2pdf-for] shortcode [e2pdf-acf-repeater] sub-shortcode\n-* Add: [e2pdf-if] shortcode [in_list], [not_in_list] sub-shortcodes\n-* Add: Checkout Field Editor (Checkout Manager) for WooCommerce support\n-* Add: Not In Array, In List, Not In List, Array Key Not Exists for conditional logic\n-* Add: Preload Images for the HTML object\n-* Add: CSS render for the HTML objects\n-* Add: WYSIWYG Table\n-* Add: PDF Download Ajax Loader\n-* Add: PDF Download Inline Fallback Viewer\n-* Add: Temporary files check and cleanup\n-* Add: Translation\n-* Fix: Compatibility fix for W3 Total Cache \u002F WP Rocket + OVH\n-* Fix: PHP 8.x deprecation notice\n-* Fix: [e2pdf-format-date] error in some cases\n-* Fix: [e2pdf-if], [e2pdf-math] shortcodes inside Formidable Forms [foreach] loop\n-* Fix: [e2pdf-acf-repeater] shortcode [e2pdf-user] sub-shortcode \n-* Fix: [e2pdf-arg] shortcode\n-* Fix: Contact Form 7 _format_ shortcode\n-* Fix: Forminator Forms foreach field slug fails in some cases\n-* Fix: Forminator Forms Datetime field hours and minutes display\n-* Fix: WooCommerce Product PDFs Customer download links\n-* Fix: Minor bug-fixes to SVG render\n-* Fix: Incorrect duplicate page position with \"multipage\" option in some cases\n-* Fix: Incorrect PDF render in the Image object\n-* Fix: Incorrect render when mixed fonts used\n-* Fix: Incorrect added filters\n-* Fix: Justify fails in some cases\n-* Fix: Complex fonts fail to render in some cases\n-* Fix: [e2pdf-for] shortcode fails in some cases\n-* Fix: SQL requests fail in some cases\n-* Fix: Error during upgrade in some cases\n-* Fix: Visual Mapper fails in some cases\n-* Fix: Trigger Email Action for Ninja Forms\n-* Fix: DateTime on bulk export page\n-* Fix: Field names in Element Actions\n-* Fix: Error 404 if dataset not found\n-* Improvement: Visual Mapper\n-* Improvement: Creating PDFs in admin dashboard\n-* Improvement: Datasets load in admin dashboard\n-* Improvement: WPBakery Page Builder integration\n-* Improvement: ACF Shortcodes enabled by default in PDF\n-* Improvement: HTML elements load\n-* Improvement: PDF Standards\n-* Improvement: Full flatten\n-* Improvement: Optimization\n-* Improvement: WYSIWYG\n-* Improvement: UI\u002FUX\n-\n = 1.25.15 =\n *Release Date - January 02, 2025*\n \n-* Add: ACF shortcodes support for WooCommerce\n-* Add: [e2pdf-acf-repeater-index] shortcode\n-* Add: Visual Mapper and Auto Sliders support for Forminator Forms\n-* Add: [not_in_array], [not_isset], [array_key_not_exists] for [e2pdf-if] shortcode\n-* Add: PDFs Cache\n-* Add: Image view preload\n-* Add: [e2pdf-format-output] explode_limit\n-* Add: Support for Signature field for Elementor Forms\n-* Add: Additional Filters\n-* Add: Formidable Forms child forms support\n-* Fix: Some PDFs fail to upload\n-* Fix: WooCommerce \"parent\" attribute\n-* Fix: Ninja Forms checkbox and radio fields Visual Mapper\n-* Fix: WPForms PDF attachments with Optimize Email Sending option\n-* Fix: Contact Form 7 Fatal Error in some cases\n-* Fix: HTML margin-top \u002F margin-bottom fails in some cases\n-* Fix: Clear PDFs Cache\n-* Fix: WooCommerce Product details when the \"order\" attribute is used\n-* Fix: Ultimate Addons for Contact Form 7 Digital Signature support\n-* Fix: Elementor Forms Signature Field from dynamic.ooo\n-* Fix: Serialized values for Fluent Forms, Forminator Forms, Gravity Forms, Ninja Form, WPForms\n-* Fix: Compatibility fix for Elementor Loop Items Template\n-* Fix: GravityView backend shortcode compatibility\n-* Fix: Visual Mapper for Fluent Forms repeater field\n-* Fix: Conflict with WPForms Multilingual WPML\n-* Fix: Contact Form 7 duplicated entries\n-* Fix: WPForms checkboxes, multi-selects, and payment checkboxes in email PDF attachments\n-* Improvement: [e2pdf-acf-repeater]\n-* Improvement: [e2pdf-for], [e2pdf-if] syntax update for nested shortcodes\n-* Improvement: Coping and pasting between E2Pdf Templates\n-* Improvement: WooCommerce minor bug fixes and improvements\n-* Improvement: Cache, Bulk Export, Visual Mapper for Forminator Forms\n-* Improvement: Templates activation process\n-* Improvement: pdf.js v4.3.136\n-* Improvement: Optimization\n-\n = 1.24.00 =\n *Release Date - May 15, 2024*\n \n","To exploit this vulnerability, an attacker must first authenticate with Contributor-level permissions. The attacker then identifies a page where the plugin enqueues its scripts (such as the WordPress admin dashboard or a page using an E2Pdf shortcode) to extract the `e2pdf_admin.nonce` value from the localized JavaScript data. Using this nonce, the attacker sends a POST request to the `\u002Fwp-admin\u002Fadmin-ajax.php` endpoint with the action `e2pdf_save_settings`. The payload includes the extracted nonce and a populated `e2pdf_settings` array containing malicious configuration values (e.g., modifying the API key or debug settings), which the server processes without verifying if the user has the `manage_options` capability.","gemini-3-flash-preview","2026-04-18 06:30:36","2026-04-18 06:31:14",{"type":41,"vulnerable_version":42,"fixed_version":11,"vulnerable_browse":43,"vulnerable_zip":44,"fixed_browse":45,"fixed_zip":46,"all_tags":47},"plugin","1.28.15","https:\u002F\u002Fplugins.trac.wordpress.org\u002Fbrowser\u002Fe2pdf\u002Ftags\u002F1.28.15","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fe2pdf.1.28.15.zip","https:\u002F\u002Fplugins.trac.wordpress.org\u002Fbrowser\u002Fe2pdf\u002Ftags\u002F1.32.00","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fe2pdf.1.32.00.zip","https:\u002F\u002Fplugins.trac.wordpress.org\u002Fbrowser\u002Fe2pdf\u002Ftags"]